<?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>152723</bug_id>
          
          <creation_ts>2016-01-04 18:16:28 -0800</creation_ts>
          <short_desc>[DFG][FTL] Implement ES6 Generators in DFG / FTL</short_desc>
          <delta_ts>2016-08-25 15:57:03 -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>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>151545</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>benjamin</cc>
    
    <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>rniwa</cc>
    
    <cc>saam</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1152598</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-01-04 18:16:28 -0800</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1154345</commentid>
    <comment_count>1</comment_count>
      <attachid>268682</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-01-11 02:57:21 -0800</bug_when>
    <thetext>Created attachment 268682
Patch

WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1154352</commentid>
    <comment_count>2</comment_count>
      <attachid>268684</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-01-11 04:31:21 -0800</bug_when>
    <thetext>Created attachment 268684
Patch

WIP part2. Planning (1) transfering type speculation between save/resume and (2) FTL support</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1155431</commentid>
    <comment_count>3</comment_count>
      <attachid>268960</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-01-14 07:25:41 -0800</bug_when>
    <thetext>Created attachment 268960
Patch

WIP part3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1155482</commentid>
    <comment_count>4</comment_count>
      <attachid>268979</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-01-14 10:06:45 -0800</bug_when>
    <thetext>Created attachment 268979
Patch

WIP part4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1155737</commentid>
    <comment_count>5</comment_count>
      <attachid>269045</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-01-15 04:44:18 -0800</bug_when>
    <thetext>Created attachment 269045
Patch

WIP part5</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1155738</commentid>
    <comment_count>6</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-01-15 04:45:49 -0800</bug_when>
    <thetext>WIP, maybe still there&apos;re a lot of bugs. Still implementing...
But passed the JSC tests and benchmarks.

generator-fib                                 121.5236+-6.1317     ^     44.7489+-2.9932        ^ definitely 2.7157x faster
generator-with-several-types                  392.1553+-15.2586    ^    156.1691+-20.0224       ^ definitely 2.5111x faster</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1155759</commentid>
    <comment_count>7</comment_count>
      <attachid>269049</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-01-15 07:17:58 -0800</bug_when>
    <thetext>Created attachment 269049
Patch

WIP part6</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1155769</commentid>
    <comment_count>8</comment_count>
      <attachid>269053</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-01-15 08:11:15 -0800</bug_when>
    <thetext>Created attachment 269053
Patch

WIP part7</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1155817</commentid>
    <comment_count>9</comment_count>
      <attachid>269064</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-01-15 10:19:42 -0800</bug_when>
    <thetext>Created attachment 269064
Patch

WIP part9</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1156133</commentid>
    <comment_count>10</comment_count>
      <attachid>269155</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-01-15 23:01:55 -0800</bug_when>
    <thetext>Created attachment 269155
Patch

WIP part10</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1156139</commentid>
    <comment_count>11</comment_count>
      <attachid>269160</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-01-16 00:13:41 -0800</bug_when>
    <thetext>Created attachment 269160
Patch

WIP part11</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1156151</commentid>
    <comment_count>12</comment_count>
      <attachid>269163</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-01-16 02:11:21 -0800</bug_when>
    <thetext>Created attachment 269163
Patch

WIP part12</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1156153</commentid>
    <comment_count>13</comment_count>
      <attachid>269164</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-01-16 03:00:26 -0800</bug_when>
    <thetext>Created attachment 269164
Patch

WIP part13</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1156154</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-01-16 03:03:14 -0800</bug_when>
    <thetext>Attachment 269164 did not pass style-queue:


ERROR: Source/JavaScriptCore/parser/Parser.cpp:1791:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 1 in 51 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1156165</commentid>
    <comment_count>15</comment_count>
      <attachid>269166</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-01-16 07:00:34 -0800</bug_when>
    <thetext>Created attachment 269166
Patch

WIP part14</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1156171</commentid>
    <comment_count>16</comment_count>
      <attachid>269169</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-01-16 08:15:10 -0800</bug_when>
    <thetext>Created attachment 269169
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1156172</commentid>
    <comment_count>17</comment_count>
      <attachid>269170</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-01-16 08:16:52 -0800</bug_when>
    <thetext>Created attachment 269170
Patch

WIP part15</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1156178</commentid>
    <comment_count>18</comment_count>
      <attachid>269171</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-01-16 09:03:08 -0800</bug_when>
    <thetext>Created attachment 269171
Patch

Now, ready for review! Soon, I&apos;ll paste the benchmark results</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1156179</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-01-16 09:04:47 -0800</bug_when>
    <thetext>Attachment 269171 did not pass style-queue:


ERROR: Source/JavaScriptCore/parser/Parser.cpp:1791:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 1 in 59 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1156182</commentid>
    <comment_count>20</comment_count>
      <attachid>269171</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-01-16 09:16:05 -0800</bug_when>
    <thetext>Comment on attachment 269171
Patch

Fixing 32bit env...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1156184</commentid>
    <comment_count>21</comment_count>
      <attachid>269174</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-01-16 09:20:08 -0800</bug_when>
    <thetext>Created attachment 269174
Patch

Fix 32bit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1156185</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-01-16 09:22:59 -0800</bug_when>
    <thetext>Attachment 269174 did not pass style-queue:


ERROR: Source/JavaScriptCore/parser/Parser.cpp:1791:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 1 in 59 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1156186</commentid>
    <comment_count>23</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-01-16 09:40:29 -0800</bug_when>
    <thetext>Took benchmark results on my OSX laptop. Before taking this benchmark results, rebooted the laptop and all the apps (except for terminal) are closed.
Since the changed part has only effect on generators. So tests that does not include generators should not pose any effect.
Highlighted changes are,

   generator-create                                   1.2200+-0.5200            0.9627+-0.1419          might be 1.2673x faster
   generator-fib                                    118.8876+-0.5708     ^     43.5643+-0.3838        ^ definitely 2.7290x faster
   generator-function-create                         10.0336+-0.3390            9.7493+-1.4768          might be 1.0292x faster
   generator-sunspider-access-nsieve                  7.8635+-2.5581            5.3915+-0.1714          might be 1.4585x faster
   generator-with-several-types                     416.8899+-22.3979    ^    164.9109+-24.5890       ^ definitely 2.5280x faster



Benchmark report for SunSpider, LongSpider, V8Spider, Octane, and JSRegress on yusuke (MacBookPro8,2).

VMs tested:
&quot;Baseline&quot; at /Users/yusuke/dev/WebKit/WebKitBuild/Release/jsc
&quot;Mine&quot; at /Users/yusuke/dev/WebKit/WebKitBuild/generator-ftl/Release/jsc

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

                                                         Baseline                    Mine
SunSpider:
   3d-cube                                            6.6135+-1.5516     ?      6.7084+-1.8345        ? might be 1.0144x slower
   3d-morph                                           6.5295+-0.4569            6.4177+-0.1223          might be 1.0174x faster
   3d-raytrace                                        7.8571+-0.2463            7.7281+-0.2176          might be 1.0167x faster
   access-binary-trees                                2.6973+-0.0763     ?      3.4146+-1.0270        ? might be 1.2660x slower
   access-fannkuch                                    7.1370+-0.0781     ?      7.3554+-0.2040        ? might be 1.0306x slower
   access-nbody                                       3.4297+-0.1254            3.4250+-0.1561
   access-nsieve                                      3.7523+-0.0990            3.7340+-0.0549
   bitops-3bit-bits-in-byte                           1.8710+-0.6038     ?      1.9328+-0.4185        ? might be 1.0330x slower
   bitops-bits-in-byte                                4.0102+-0.0117            3.9764+-0.0275
   bitops-bitwise-and                                 2.7487+-0.4331            2.6878+-0.3837          might be 1.0227x faster
   bitops-nsieve-bits                                 4.1600+-1.0224     ?      4.1672+-1.3401        ?
   controlflow-recursive                              2.9055+-0.0564     ?      2.9125+-0.0220        ?
   crypto-aes                                         5.2635+-0.3347     ?      5.5054+-0.8920        ? might be 1.0460x slower
   crypto-md5                                         3.3755+-0.1466     ?      3.6356+-1.1968        ? might be 1.0770x slower
   crypto-sha1                                        3.2115+-0.2792            3.1746+-0.3205          might be 1.0116x faster
   date-format-tofte                                 11.2078+-0.1954     ?     11.2391+-0.2506        ?
   date-format-xparb                                  6.1472+-0.5117            6.0203+-0.2171          might be 1.0211x faster
   math-cordic                                        3.6597+-0.0684     ?      4.1700+-1.5648        ? might be 1.1395x slower
   math-partial-sums                                  8.8577+-4.5654            6.2812+-0.0629          might be 1.4102x faster
   math-spectral-norm                                 2.9510+-0.2375     ?      2.9642+-0.4160        ?
   regexp-dna                                         7.9128+-0.8870     ?      8.4081+-1.6684        ? might be 1.0626x slower
   string-base64                                      5.4590+-0.0866     ?      5.6124+-0.1479        ? might be 1.0281x slower
   string-fasta                                       7.5964+-0.5610            7.5217+-0.1122
   string-tagcloud                                   10.1825+-0.9876     ?     10.2383+-1.3992        ?
   string-unpack-code                                22.2491+-0.2934     ?     22.7347+-0.4375        ? might be 1.0218x slower
   string-validate-input                              5.3264+-0.0908     ?      5.4005+-0.0320        ? might be 1.0139x slower

   &lt;arithmetic&gt;                                       6.0428+-0.2031     ?      6.0525+-0.0963        ? might be 1.0016x slower

                                                         Baseline                    Mine
LongSpider:
   3d-cube                                          957.1688+-6.8514     ?    986.7496+-28.9496       ? might be 1.0309x slower
   3d-morph                                        1608.8015+-12.5054        1596.1349+-10.2871
   3d-raytrace                                      770.9914+-25.9698         752.5432+-13.5814         might be 1.0245x faster
   access-binary-trees                             1107.9697+-31.7159    ?   1118.7809+-34.0228       ?
   access-fannkuch                                  375.5338+-26.6280    ?    375.8718+-17.8031       ?
   access-nbody                                     648.8972+-6.7629     ?    650.2045+-13.1414       ?
   access-nsieve                                    521.1401+-10.4271    ?    523.7720+-2.5604        ?
   bitops-3bit-bits-in-byte                          44.8472+-0.1872     ?     45.5958+-1.5058        ? might be 1.0167x slower
   bitops-bits-in-byte                              105.4611+-3.3889          102.9490+-3.8686          might be 1.0244x faster
   bitops-nsieve-bits                               464.4395+-12.2595         462.9997+-14.4145
   controlflow-recursive                            510.9463+-6.2112     ?    512.9075+-10.3983       ?
   crypto-aes                                       748.0834+-23.2711         747.1068+-11.8295
   crypto-md5                                       628.9510+-89.6540         607.7679+-28.1315         might be 1.0349x faster
   crypto-sha1                                      778.1740+-9.6546     ?    783.4619+-13.5518       ?
   date-format-tofte                                932.3907+-9.7863     ?    934.8044+-25.4281       ?
   date-format-xparb                                884.8163+-30.5023         873.3738+-56.0092         might be 1.0131x faster
   hash-map                                         193.8607+-3.7826     ?    195.5181+-4.1690        ?
   math-cordic                                      588.2958+-4.5258     ?    592.5259+-6.1480        ?
   math-partial-sums                                634.2053+-2.2228          631.9078+-5.6767
   math-spectral-norm                               923.2599+-9.4628          920.8083+-12.9377
   string-base64                                    496.2100+-15.9992    ?    496.6341+-12.4789       ?
   string-fasta                                     442.4982+-12.7951    ?    450.5351+-11.3777       ? might be 1.0182x slower
   string-tagcloud                                  221.1089+-3.4552     ^    210.9597+-0.9724        ^ definitely 1.0481x faster

   &lt;geometric&gt;                                      509.3734+-4.6004          508.3385+-1.0855          might be 1.0020x faster

                                                         Baseline                    Mine
V8Spider:
   crypto                                            64.7166+-2.7521     ?     66.5525+-4.3877        ? might be 1.0284x slower
   deltablue                                         94.7162+-3.3725     ?     99.6348+-5.4619        ? might be 1.0519x slower
   earley-boyer                                      54.7803+-1.2778           53.8055+-0.9997          might be 1.0181x faster
   raytrace                                          42.2197+-3.4004     ?     42.5782+-3.6748        ?
   regexp                                            83.6995+-4.6223           82.0895+-4.6813          might be 1.0196x faster
   richards                                          65.7115+-0.9947     ?     68.1229+-5.7969        ? might be 1.0367x slower
   splay                                             45.2549+-1.4994           44.7742+-1.2839          might be 1.0107x faster

   &lt;geometric&gt;                                       62.0024+-1.2359     ?     62.6703+-2.8512        ? might be 1.0108x slower

                                                         Baseline                    Mine
Octane:
   encrypt                                           0.21127+-0.00257    ?     0.21723+-0.01520       ? might be 1.0282x slower
   decrypt                                           3.73184+-0.03738    ?     3.75531+-0.04645       ?
   deltablue                                x2       0.18178+-0.00619    ?     0.18183+-0.00242       ?
   earley                                            0.41114+-0.00972    ?     0.41200+-0.01168       ?
   boyer                                             5.87101+-0.03913    ?     5.89061+-0.19537       ?
   navier-stokes                            x2       5.35584+-0.05071          5.35483+-0.02692
   raytrace                                 x2       1.23921+-0.03752    ?     1.24130+-0.02253       ?
   richards                                 x2       0.11116+-0.00191    ?     0.11205+-0.00433       ?
   splay                                    x2       0.45448+-0.01414          0.44997+-0.00978         might be 1.0100x faster
   regexp                                   x2      31.99242+-0.99397    ?    32.21648+-0.58565       ?
   pdfjs                                    x2      49.93894+-0.50640         49.92550+-1.03924
   mandreel                                 x2      56.26612+-0.53369         56.07338+-0.12855
   gbemu                                    x2      40.30225+-0.23039    ?    40.34692+-0.68051       ?
   closure                                           0.75101+-0.00811    ?     0.75724+-0.00721       ?
   jquery                                            9.60841+-0.07785          9.55727+-0.08191
   box2d                                    x2      12.58502+-0.20859         12.46600+-0.24676
   zlib                                     x2     456.10891+-3.99323        434.95986+-35.05054        might be 1.0486x faster
   typescript                               x2     907.55774+-19.23192       903.26978+-9.72763

   &lt;geometric&gt;                                       6.94957+-0.04246          6.93233+-0.09327         might be 1.0025x faster

                                                         Baseline                    Mine
JSRegress:
   abc-forward-loop-equal                            49.1013+-2.2412           48.3077+-0.3020          might be 1.0164x faster
   abc-postfix-backward-loop                         49.3561+-4.2599           49.3277+-3.0291
   abc-simple-backward-loop                          47.5260+-0.1353     ?     50.0992+-4.1699        ? might be 1.0541x slower
   abc-simple-forward-loop                           48.5655+-1.8298     ?     48.9828+-2.7944        ?
   abc-skippy-loop                                   33.1953+-0.3051     ?     36.3948+-5.5464        ? might be 1.0964x slower
   abs-boolean                                        3.7972+-1.3310            3.3354+-0.1584          might be 1.1385x faster
   adapt-to-double-divide                            17.3801+-0.5764           17.3141+-0.4275
   aliased-arguments-getbyval                         1.4850+-0.2827     ?      1.7383+-0.4088        ? might be 1.1706x slower
   allocate-big-object                                3.0532+-0.2087            2.9579+-0.0309          might be 1.0322x faster
   arguments-named-and-reflective                    14.5895+-3.9691           14.1556+-3.5776          might be 1.0307x faster
   arguments-out-of-bounds                           13.7591+-0.4352     ?     14.3187+-2.2317        ? might be 1.0407x slower
   arguments-strict-mode                             13.7490+-7.4651           12.3979+-2.0978          might be 1.1090x faster
   arguments                                         10.2050+-0.4068           10.1874+-0.4304
   arity-mismatch-inlining                            1.3309+-0.4463            1.3090+-0.3275          might be 1.0167x faster
   array-access-polymorphic-structure                11.4212+-3.7682           10.5645+-0.7110          might be 1.0811x faster
   array-nonarray-polymorhpic-access                 34.0472+-0.5577     ?     34.9432+-3.6240        ? might be 1.0263x slower
   array-prototype-every                             93.6119+-0.3416     ?     95.7658+-6.9164        ? might be 1.0230x slower
   array-prototype-forEach                           92.2443+-2.9804     ?     92.8041+-4.8277        ?
   array-prototype-map                              103.8113+-1.2375          103.2403+-2.4075
   array-prototype-reduce                            88.1927+-2.2026     ?     90.0714+-3.9577        ? might be 1.0213x slower
   array-prototype-reduceRight                       87.4215+-0.7557     ?     89.4000+-2.1378        ? might be 1.0226x slower
   array-prototype-some                              96.7982+-3.5804           94.3013+-1.4306          might be 1.0265x faster
   array-splice-contiguous                           29.0698+-0.7418     ?     29.4537+-0.9389        ? might be 1.0132x slower
   array-with-double-add                              5.0870+-1.2016     ?      5.3254+-1.5299        ? might be 1.0469x slower
   array-with-double-increment                        4.4110+-1.5465            3.9359+-0.0714          might be 1.1207x faster
   array-with-double-mul-add                          5.5526+-0.1634     ?      5.7277+-0.3723        ? might be 1.0315x slower
   array-with-double-sum                              4.0548+-1.4097            3.6006+-0.0524          might be 1.1262x faster
   array-with-int32-add-sub                           8.1246+-0.0358     ?      8.2971+-0.5359        ? might be 1.0212x slower
   array-with-int32-or-double-sum                     3.7239+-0.1749     ?      3.7304+-0.1544        ?
   ArrayBuffer-DataView-alloc-large-long-lived
                                                     42.1760+-6.4560           36.6850+-1.5309          might be 1.1497x faster
   ArrayBuffer-DataView-alloc-long-lived             15.5759+-0.2513     ?     16.2318+-1.9449        ? might be 1.0421x slower
   ArrayBuffer-Int32Array-byteOffset                  4.8073+-0.0618            4.7556+-0.1009          might be 1.0109x faster
   ArrayBuffer-Int8Array-alloc-large-long-lived
                                                     36.3182+-1.4733     ?     37.1110+-0.7131        ? might be 1.0218x slower
   ArrayBuffer-Int8Array-alloc-long-lived-buffer
                                                     26.2698+-4.6767           24.6722+-0.9249          might be 1.0648x faster
   ArrayBuffer-Int8Array-alloc-long-lived            14.5778+-0.5694     ?     14.8995+-0.9044        ? might be 1.0221x slower
   ArrayBuffer-Int8Array-alloc                       12.1888+-0.1477     ?     12.3448+-0.9075        ? might be 1.0128x slower
   arrowfunction-call                                13.0016+-0.5056     ?     13.8998+-2.9600        ? might be 1.0691x slower
   asmjs_bool_bug                                     8.8573+-0.2693            8.8447+-0.3275
   assign-custom-setter-polymorphic                   3.3401+-0.0812            3.2767+-0.1518          might be 1.0193x faster
   assign-custom-setter                               4.7892+-0.1400            4.6832+-0.0945          might be 1.0227x faster
   basic-set                                          9.6296+-0.1387     ?      9.8578+-0.6783        ? might be 1.0237x slower
   big-int-mul                                        4.6929+-2.2227            4.6152+-1.3148          might be 1.0168x faster
   boolean-test                                       4.2409+-0.3126            4.1175+-0.1424          might be 1.0300x faster
   branch-fold                                        4.4616+-0.0807            4.4512+-0.1535
   branch-on-string-as-boolean                       21.0085+-0.6298           20.9976+-0.6887
   by-val-generic                                     3.2210+-0.1501            3.1756+-0.0430          might be 1.0143x faster
   call-spread-apply                                 32.3749+-0.8852           32.0688+-0.2365
   call-spread-call                                  26.5223+-0.0734     !     27.0713+-0.3330        ! definitely 1.0207x slower
   captured-assignments                               0.5914+-0.0175     ?      0.9771+-0.8423        ? might be 1.6520x slower
   cast-int-to-double                                 5.8904+-0.1583            5.8314+-0.0923          might be 1.0101x faster
   cell-argument                                      7.5052+-0.3289     ?      7.7128+-0.1666        ? might be 1.0277x slower
   cfg-simplify                                       3.5175+-0.2400            3.4062+-0.1144          might be 1.0327x faster
   chain-getter-access                               10.1584+-0.1585           10.0335+-0.1005          might be 1.0125x faster
   cmpeq-obj-to-obj-other                            13.5953+-2.2502     ?     15.6415+-1.7784        ? might be 1.1505x slower
   constant-test                                      5.6870+-0.0212     ?      5.7828+-0.2088        ? might be 1.0169x slower
   create-lots-of-functions                          12.9837+-0.1956           12.8092+-0.2989          might be 1.0136x faster
   cse-new-array-buffer                               3.2512+-0.8380            2.9987+-0.1960          might be 1.0842x faster
   cse-new-array                                      3.1998+-0.6433            3.0286+-0.2043          might be 1.0565x faster
   custom-setter-getter-as-put-get-by-id              0.8570+-0.2995     ?      0.9675+-0.2983        ? might be 1.1289x slower
   DataView-custom-properties                        46.8139+-6.8609           42.5288+-1.4140          might be 1.1008x faster
   delay-tear-off-arguments-strictmode               16.8764+-3.3210           15.9200+-0.3468          might be 1.0601x faster
   deltablue-varargs                                238.3080+-3.8775          237.0714+-6.5629
   destructuring-arguments                          200.8109+-12.1585    ?    203.8318+-4.1242        ? might be 1.0150x slower
   destructuring-parameters-overridden-by-function
                                                      0.7225+-0.2648            0.7112+-0.2608          might be 1.0159x faster
   destructuring-swap                                 5.6870+-0.1892            5.6325+-0.1018
   direct-arguments-getbyval                          1.4431+-0.1903     ?      1.4465+-0.1758        ?
   div-boolean-double                                 5.6823+-0.0310            5.6813+-0.0081
   div-boolean                                        8.3016+-0.1088            8.2961+-0.1168
   double-get-by-val-out-of-bounds                    5.5385+-0.4322     ?      5.6162+-0.6584        ? might be 1.0140x slower
   double-pollution-getbyval                          9.3855+-0.7240            9.1550+-0.1521          might be 1.0252x faster
   double-pollution-putbyoffset                       4.4276+-0.0628     ?      4.4693+-0.2163        ?
   double-real-use                                   32.1621+-2.1421     ?     33.9965+-7.1729        ? might be 1.0570x slower
   double-to-int32-typed-array-no-inline              2.7244+-0.0452     ?      2.8749+-0.2800        ? might be 1.0552x slower
   double-to-int32-typed-array                        2.7892+-0.2477            2.6004+-0.1171          might be 1.0726x faster
   double-to-uint32-typed-array-no-inline             3.1311+-0.4395            2.9237+-0.2639          might be 1.0709x faster
   double-to-uint32-typed-array                       2.6744+-0.3095            2.5881+-0.1049          might be 1.0334x faster
   elidable-new-object-dag                           52.6190+-2.9322     ?     53.7195+-5.5645        ? might be 1.0209x slower
   elidable-new-object-roflcopter                    47.2400+-4.9890           47.1855+-9.5473
   elidable-new-object-then-call                     44.2197+-1.2101           44.0276+-0.7706
   elidable-new-object-tree                          54.5570+-4.2766     ?     56.1700+-5.7376        ? might be 1.0296x slower
   empty-string-plus-int                              6.3687+-0.2020     ?      7.1954+-1.3012        ? might be 1.1298x slower
   emscripten-cube2hash                              42.7892+-1.9381     ?     44.6580+-3.1991        ? might be 1.0437x slower
   exit-length-on-plain-object                       22.1130+-3.7373     ?     22.4902+-2.6078        ? might be 1.0171x slower
   external-arguments-getbyval                        1.5681+-0.2328     ?      1.7063+-0.3875        ? might be 1.0881x slower
   external-arguments-putbyval                        2.7730+-0.0748     ?      2.7867+-0.1058        ?
   fixed-typed-array-storage-var-index                2.0399+-0.3448            1.8005+-0.4659          might be 1.1330x faster
   fixed-typed-array-storage                          1.5870+-0.4541            1.2667+-0.3060          might be 1.2528x faster
   Float32Array-matrix-mult                           5.4862+-0.1590     ?      5.5446+-0.2223        ? might be 1.0106x slower
   Float32Array-to-Float64Array-set                  58.9124+-4.1674     ?     59.5578+-3.6976        ? might be 1.0110x slower
   Float64Array-alloc-long-lived                     84.1433+-2.7943     ?     86.3827+-8.6735        ? might be 1.0266x slower
   Float64Array-to-Int16Array-set                    73.9370+-3.4517     ?     74.7150+-5.9981        ? might be 1.0105x slower
   fold-double-to-int                                17.5828+-5.4432     ?     18.3354+-4.5448        ? might be 1.0428x slower
   fold-get-by-id-to-multi-get-by-offset-rare-int
                                                     12.2805+-1.4001           11.7153+-1.0435          might be 1.0482x faster
   fold-get-by-id-to-multi-get-by-offset             11.7339+-1.9971           11.3219+-2.0379          might be 1.0364x faster
   fold-multi-get-by-offset-to-get-by-offset
                                                      8.1058+-1.8668     ?      9.5884+-1.9026        ? might be 1.1829x slower
   fold-multi-get-by-offset-to-poly-get-by-offset
                                                      9.2368+-2.7458     ?      9.9045+-1.3105        ? might be 1.0723x slower
   fold-multi-put-by-offset-to-poly-put-by-offset
                                                      9.7652+-1.1093     ?     10.9388+-0.2238        ? might be 1.1202x slower
   fold-multi-put-by-offset-to-put-by-offset
                                                     10.0662+-1.0147     ?     10.2950+-1.4252        ? might be 1.0227x slower
   fold-multi-put-by-offset-to-replace-or-transition-put-by-offset
                                                     13.1579+-0.9129           12.7476+-0.1239          might be 1.0322x faster
   fold-put-by-id-to-multi-put-by-offset             12.9548+-3.4941           12.1592+-1.1986          might be 1.0654x faster
   fold-put-by-val-with-string-to-multi-put-by-offset
                                                     13.2679+-0.7840           12.3945+-1.4552          might be 1.0705x faster
   fold-put-by-val-with-symbol-to-multi-put-by-offset
                                                     12.9568+-2.6826           11.7208+-0.6037          might be 1.1055x faster
   fold-put-structure                                 8.8802+-1.5153            8.5976+-1.1083          might be 1.0329x faster
   for-of-iterate-array-entries                      13.5336+-0.8718           13.4623+-0.2718
   for-of-iterate-array-keys                          4.5812+-0.2529     ?      4.9571+-1.4953        ? might be 1.0821x slower
   for-of-iterate-array-values                        5.4697+-1.2407            4.6628+-0.6111          might be 1.1730x faster
   fround                                            19.8503+-0.6162     ?     21.5797+-6.2190        ? might be 1.0871x slower
   ftl-library-inlining-dataview                     83.2255+-8.3910           78.0078+-0.5912          might be 1.0669x faster
   ftl-library-inlining                              23.4915+-2.3772           22.4617+-1.2016          might be 1.0458x faster
   ftl-polymorphic-bitand                           153.8563+-7.3986     ?    157.4983+-8.3470        ? might be 1.0237x slower
   ftl-polymorphic-bitor                            151.5762+-1.5081     ?    153.2360+-5.5552        ? might be 1.0110x slower
   ftl-polymorphic-bitxor                           153.8497+-6.3570          151.2029+-1.3124          might be 1.0175x faster
   ftl-polymorphic-div                              486.3962+-6.0661     ?    489.9423+-10.9462       ?
   ftl-polymorphic-lshift                           161.1298+-2.1611     ?    164.0795+-6.3978        ? might be 1.0183x slower
   ftl-polymorphic-mul                              243.6516+-9.4752     ?    244.3573+-3.9593        ?
   ftl-polymorphic-rshift                           161.2322+-4.4639     ?    162.0542+-4.4340        ?
   ftl-polymorphic-StringFromCharCode               230.0170+-4.7813     ?    230.3253+-5.2941        ?
   ftl-polymorphic-sub                              188.0580+-6.2131     ?    190.3586+-5.4628        ? might be 1.0122x slower
   ftl-polymorphic-urshift                          176.9466+-2.6766     ?    181.2885+-13.3315       ? might be 1.0245x slower
   function-call                                     13.9629+-3.3446           12.8900+-0.1625          might be 1.0832x faster
   function-dot-apply                                 2.6342+-0.0891     ?      2.7331+-0.2513        ? might be 1.0375x slower
   function-test                                      4.0369+-0.3516            3.9719+-0.3710          might be 1.0164x faster
   function-with-eval                               122.1512+-4.1273          119.7998+-5.6069          might be 1.0196x faster
   gcse-poly-get-less-obvious                        29.2258+-0.3031           28.9655+-0.7284
   gcse-poly-get                                     31.8632+-4.8787           30.4772+-1.2352          might be 1.0455x faster
   gcse                                               4.6445+-0.1558     ?      4.7795+-0.0825        ? might be 1.0291x slower
   generator-create                                   1.2200+-0.5200            0.9627+-0.1419          might be 1.2673x faster
   generator-fib                                    118.8876+-0.5708     ^     43.5643+-0.3838        ^ definitely 2.7290x faster
   generator-function-create                         10.0336+-0.3390            9.7493+-1.4768          might be 1.0292x faster
   generator-sunspider-access-nsieve                  7.8635+-2.5581            5.3915+-0.1714          might be 1.4585x faster
   generator-with-several-types                     416.8899+-22.3979    ^    164.9109+-24.5890       ^ definitely 2.5280x faster
   get-by-id-bimorphic-check-structure-elimination-simple
                                                      3.0233+-0.0632     ?      3.0429+-0.1112        ?
   get-by-id-bimorphic-check-structure-elimination
                                                      6.1466+-0.1543     ?      6.5287+-1.4919        ? might be 1.0622x slower
   get-by-id-chain-from-try-block                     4.0538+-1.6826            3.4958+-0.3218          might be 1.1596x faster
   get-by-id-check-structure-elimination              5.3030+-1.4724            5.2213+-1.0842          might be 1.0157x faster
   get-by-id-proto-or-self                           19.7063+-0.7011     ?     20.9982+-3.0637        ? might be 1.0656x slower
   get-by-id-quadmorphic-check-structure-elimination-simple
                                                      3.3561+-0.0807     ?      3.3923+-0.2922        ? might be 1.0108x slower
   get-by-id-self-or-proto                           22.1761+-3.3647           21.7881+-3.9328          might be 1.0178x faster
   get-by-val-out-of-bounds                           5.3730+-0.3829            5.2238+-0.1073          might be 1.0286x faster
   get-by-val-with-string-bimorphic-check-structure-elimination-simple
                                                      3.4805+-0.4063            3.3644+-0.1302          might be 1.0345x faster
   get-by-val-with-string-bimorphic-check-structure-elimination
                                                      7.7040+-0.0198     ?      7.8965+-0.2336        ? might be 1.0250x slower
   get-by-val-with-string-chain-from-try-block
                                                      3.5096+-0.2987     ?      3.5308+-0.2147        ?
   get-by-val-with-string-check-structure-elimination
                                                      7.3524+-0.4233     ?      7.5450+-0.5000        ? might be 1.0262x slower
   get-by-val-with-string-proto-or-self              20.3856+-0.5104     ?     21.0280+-1.2231        ? might be 1.0315x slower
   get-by-val-with-string-quadmorphic-check-structure-elimination-simple
                                                      4.0242+-0.1460            3.9997+-0.1353
   get-by-val-with-string-self-or-proto              20.6885+-0.6575     ?     20.6997+-1.0052        ?
   get-by-val-with-symbol-bimorphic-check-structure-elimination-simple
                                                      4.5553+-1.9463            3.8970+-0.0545          might be 1.1689x faster
   get-by-val-with-symbol-bimorphic-check-structure-elimination
                                                     14.8412+-0.1021     ?     14.8915+-0.2320        ?
   get-by-val-with-symbol-chain-from-try-block
                                                      3.4118+-0.0792            3.4108+-0.1040
   get-by-val-with-symbol-check-structure-elimination
                                                     14.3368+-0.5205     ?     14.7971+-1.8034        ? might be 1.0321x slower
   get-by-val-with-symbol-proto-or-self              20.4984+-0.3175     ?     22.1375+-3.5022        ? might be 1.0800x slower
   get-by-val-with-symbol-quadmorphic-check-structure-elimination-simple
                                                      5.2720+-1.2327            5.2632+-1.1514
   get-by-val-with-symbol-self-or-proto              21.4274+-2.8726           20.6177+-1.0474          might be 1.0393x faster
   get_callee_monomorphic                             3.6324+-1.0696            3.4792+-0.6792          might be 1.0440x faster
   get_callee_polymorphic                             4.0424+-0.0115     ?      4.0812+-0.1487        ?
   getter-no-activation                               5.5668+-0.0560     ?      5.6093+-0.1390        ?
   getter-prototype                                  11.3042+-0.3101           11.2451+-0.3957
   getter-richards-try-catch                       1400.2003+-46.7937        1373.3050+-77.0875         might be 1.0196x faster
   getter-richards                                  129.2112+-10.5066         127.0967+-9.7747          might be 1.0166x faster
   getter                                             6.0789+-0.5043     ?      6.4469+-0.9494        ? might be 1.0605x slower
   global-object-access-with-mutating-structure
                                                      6.8382+-0.5325            6.7331+-0.1208          might be 1.0156x faster
   global-var-const-infer-fire-from-opt               1.3065+-0.3502            1.1509+-0.4315          might be 1.1352x faster
   global-var-const-infer                             1.0833+-0.3658     ?      1.1041+-0.6674        ? might be 1.0193x slower
   hard-overflow-check-equal                         39.4966+-0.3720     ?     40.8600+-4.2979        ? might be 1.0345x slower
   hard-overflow-check                               41.2150+-3.7337           39.3070+-0.5612          might be 1.0485x faster
   HashMap-put-get-iterate-keys                      31.3185+-0.9808     ?     33.6491+-2.2766        ? might be 1.0744x slower
   HashMap-put-get-iterate                           34.3345+-0.8111     ?     35.2565+-0.7706        ? might be 1.0269x slower
   HashMap-string-put-get-iterate                    35.2589+-10.2377          32.7410+-1.0501          might be 1.0769x faster
   hoist-make-rope                                   12.5635+-0.3059     ?     13.2006+-2.0610        ? might be 1.0507x slower
   hoist-poly-check-structure-effectful-loop
                                                      5.6074+-0.0112     ?      6.0024+-1.0418        ? might be 1.0705x slower
   hoist-poly-check-structure                         3.6085+-0.0392     ?      3.6943+-0.1198        ? might be 1.0238x slower
   imul-double-only                                   8.8657+-0.6659            8.7484+-0.4374          might be 1.0134x faster
   imul-int-only                                      9.8210+-1.0109     ?     10.7449+-0.8450        ? might be 1.0941x slower
   imul-mixed                                         8.2993+-1.0834     ?      8.8353+-0.0675        ? might be 1.0646x slower
   in-four-cases                                     23.8802+-0.4564     ?     23.9651+-0.3161        ?
   in-one-case-false                                 12.6683+-0.2835     ?     12.8854+-0.6306        ? might be 1.0171x slower
   in-one-case-true                                  12.6793+-0.2091     ?     12.7999+-0.0979        ?
   in-two-cases                                      13.2969+-0.5054           13.2891+-0.2681
   indexed-properties-in-objects                      3.3384+-0.1014            3.3044+-0.1103          might be 1.0103x faster
   infer-closure-const-then-mov-no-inline             4.8616+-0.1867            4.8461+-0.1081
   infer-closure-const-then-mov                      20.4728+-0.4341           19.9628+-0.4379          might be 1.0255x faster
   infer-closure-const-then-put-to-scope-no-inline
                                                     15.4203+-4.2822           14.2124+-0.8851          might be 1.0850x faster
   infer-closure-const-then-put-to-scope             25.1667+-3.4062     ?     25.4562+-4.3928        ? might be 1.0115x slower
   infer-closure-const-then-reenter-no-inline
                                                     59.9123+-5.1407           59.4790+-4.2387
   infer-closure-const-then-reenter                  25.4523+-2.9961           24.4045+-0.1975          might be 1.0429x faster
   infer-constant-global-property                     4.5656+-1.3923            4.3297+-1.6271          might be 1.0545x faster
   infer-constant-property                            3.1010+-0.0845     ?      4.1234+-1.9238        ? might be 1.3297x slower
   infer-one-time-closure-ten-vars                   11.2654+-0.5650     ?     11.5563+-2.4049        ? might be 1.0258x slower
   infer-one-time-closure-two-vars                   10.9797+-1.2589     ?     11.2925+-1.7257        ? might be 1.0285x slower
   infer-one-time-closure                            10.4309+-0.2435     ?     10.7818+-0.8708        ? might be 1.0336x slower
   infer-one-time-deep-closure                       17.2660+-2.0435     ?     18.5529+-3.3714        ? might be 1.0745x slower
   inline-arguments-access                            4.8803+-0.0737     ?      4.9557+-0.1301        ? might be 1.0155x slower
   inline-arguments-aliased-access                    4.9228+-0.1041     ?      5.1021+-0.2475        ? might be 1.0364x slower
   inline-arguments-local-escape                      4.9770+-0.2579            4.9286+-0.1175
   inline-get-scoped-var                              5.6722+-0.6399            5.4073+-0.0605          might be 1.0490x faster
   inlined-put-by-id-transition                      12.4840+-0.0867     ?     13.1221+-1.3040        ? might be 1.0511x slower
   inlined-put-by-val-with-string-transition
                                                     55.7495+-4.3925     ?     56.8580+-7.1625        ? might be 1.0199x slower
   inlined-put-by-val-with-symbol-transition
                                                     57.4451+-3.4639     ?     60.4240+-7.8810        ? might be 1.0519x slower
   instanceof-bound                                  29.3563+-4.1417           26.1268+-0.9674          might be 1.1236x faster
   int-or-other-abs-then-get-by-val                   5.4945+-0.0392     ?      5.5238+-0.0155        ?
   int-or-other-abs-zero-then-get-by-val             20.8948+-3.0318           19.0383+-0.3799          might be 1.0975x faster
   int-or-other-add-then-get-by-val                   5.6082+-0.1499     ?      5.6234+-0.2203        ?
   int-or-other-add                                   5.8735+-0.1022     ?      5.9098+-0.0703        ?
   int-or-other-div-then-get-by-val                   4.7341+-0.0151     ?      4.7505+-0.0280        ?
   int-or-other-max-then-get-by-val                   4.7966+-0.0562     ?      4.8360+-0.1033        ?
   int-or-other-min-then-get-by-val                   4.8229+-0.0129     ?      5.0958+-0.9002        ? might be 1.0566x slower
   int-or-other-mod-then-get-by-val                   4.9800+-1.1722            4.4495+-0.0672          might be 1.1192x faster
   int-or-other-mul-then-get-by-val                   4.7797+-0.8482            4.5018+-0.0328          might be 1.0617x faster
   int-or-other-neg-then-get-by-val                   5.3150+-0.4995            5.1705+-0.3179          might be 1.0280x faster
   int-or-other-neg-zero-then-get-by-val             20.5557+-2.9933           20.2563+-3.3712          might be 1.0148x faster
   int-or-other-sub-then-get-by-val                   5.7707+-0.0654     ?      5.8898+-0.4342        ? might be 1.0206x slower
   int-or-other-sub                                   4.5635+-0.1708            4.5243+-0.0366
   int-overflow-local                                 5.4025+-0.0268            5.3890+-0.0429
   Int16Array-alloc-long-lived                       59.2762+-2.1374     ?     61.7969+-7.5823        ? might be 1.0425x slower
   Int16Array-bubble-sort-with-byteLength            30.0576+-3.9523           28.1776+-1.4801          might be 1.0667x faster
   Int16Array-bubble-sort                            25.7437+-0.5823     ?     26.2030+-1.7249        ? might be 1.0178x slower
   Int16Array-load-int-mul                            1.9960+-0.2715     ?      2.0104+-0.2961        ?
   Int16Array-to-Int32Array-set                      57.9059+-4.8963     ?     58.0270+-5.2190        ?
   Int32Array-alloc-large                            27.9907+-3.2074     ?     28.5502+-3.9664        ? might be 1.0200x slower
   Int32Array-alloc-long-lived                       69.4795+-2.9798           67.2277+-3.6195          might be 1.0335x faster
   Int32Array-alloc                                   3.9718+-0.1247            3.9485+-0.1171
   Int32Array-Int8Array-view-alloc                    7.6320+-0.3578     ?      8.3201+-2.0345        ? might be 1.0902x slower
   int52-spill                                        6.1505+-0.0742            6.0763+-0.0531          might be 1.0122x faster
   Int8Array-alloc-long-lived                        54.8463+-5.7979     ?     55.6010+-3.0465        ? might be 1.0138x slower
   Int8Array-load-with-byteLength                     4.0420+-0.2018     ?      4.1711+-0.2583        ? might be 1.0320x slower
   Int8Array-load                                     4.0695+-0.1306     ?      4.0820+-0.1899        ?
   integer-divide                                    13.0520+-0.2270     ?     13.0660+-0.1571        ?
   integer-modulo                                     2.4198+-0.1776            2.3589+-0.1200          might be 1.0258x faster
   is-boolean-fold-tricky                             4.6224+-0.4703            4.5162+-0.1985          might be 1.0235x faster
   is-boolean-fold                                    3.5134+-0.0981     ?      4.0441+-1.3284        ? might be 1.1510x slower
   is-function-fold-tricky-internal-function
                                                     14.0395+-3.9912           12.5509+-0.3597          might be 1.1186x faster
   is-function-fold-tricky                            5.0621+-0.9021            4.6710+-0.2278          might be 1.0837x faster
   is-function-fold                                   4.0177+-1.4193            3.5801+-0.1824          might be 1.1222x faster
   is-number-fold-tricky                              4.6259+-0.3435     ?      4.7585+-1.0794        ? might be 1.0287x slower
   is-number-fold                                     3.5439+-0.1687     ?      4.0706+-1.2607        ? might be 1.1486x slower
   is-object-or-null-fold-functions                   4.2009+-1.9312     ?      4.2788+-1.3202        ? might be 1.0185x slower
   is-object-or-null-fold-less-tricky                 5.3835+-1.6055            4.5892+-0.1951          might be 1.1731x faster
   is-object-or-null-fold-tricky                      6.3756+-0.0439     ?      6.3790+-0.0310        ?
   is-object-or-null-fold                             3.8753+-0.5198            3.6371+-0.3600          might be 1.0655x faster
   is-object-or-null-trickier-function                4.6408+-0.0832     ?      4.7388+-0.1280        ? might be 1.0211x slower
   is-object-or-null-trickier-internal-function
                                                     12.8523+-0.5099           12.8255+-0.5772
   is-object-or-null-tricky-function                  5.4935+-1.7374            4.5847+-0.0164          might be 1.1982x faster
   is-object-or-null-tricky-internal-function
                                                      9.6467+-0.0916            9.6308+-0.1889
   is-string-fold-tricky                              4.6235+-0.2317            4.4738+-0.1307          might be 1.0335x faster
   is-string-fold                                     3.5557+-0.1308     ?      4.0798+-1.3563        ? might be 1.1474x slower
   is-undefined-fold-tricky                           3.8113+-0.2422     ?      3.9595+-0.1552        ? might be 1.0389x slower
   is-undefined-fold                                  3.5772+-0.1657            3.4903+-0.0227          might be 1.0249x faster
   JSONP-negative-0                                   0.4306+-0.1885     ?      0.4485+-0.1878        ? might be 1.0415x slower
   large-int-captured                                 5.3687+-0.1264            5.3547+-0.0811
   large-int-neg                                     18.2671+-1.9753     ?     19.0381+-5.2330        ? might be 1.0422x slower
   large-int                                         16.2271+-2.4130     ?     17.1702+-5.2807        ? might be 1.0581x slower
   load-varargs-elimination                          23.9445+-0.9496     ?     24.7692+-3.1149        ? might be 1.0344x slower
   logical-not-weird-types                            4.3046+-1.3029            3.8275+-0.0716          might be 1.1247x faster
   logical-not                                        5.5958+-0.4278            5.4717+-0.0704          might be 1.0227x faster
   lots-of-fields                                    14.4854+-3.6707           13.0905+-0.2793          might be 1.1066x faster
   make-indexed-storage                               3.6874+-0.0916     ?      3.8279+-0.3094        ? might be 1.0381x slower
   make-rope-cse                                      5.1948+-0.1912     ?      5.2097+-0.1037        ?
   map-for-each                                       6.8508+-0.3992     ?      6.8766+-0.2120        ?
   map-for-of                                        21.6964+-6.6175     ?     21.7433+-2.8515        ?
   marsaglia-larger-ints                             44.2672+-0.2060     ?     44.4397+-1.2595        ?
   marsaglia-osr-entry                               25.2855+-0.4323     ?     25.3985+-0.3366        ?
   math-random                                       12.6255+-0.2460           12.6190+-0.5425
   math-with-out-of-bounds-array-values              26.6885+-1.5858     ?     27.6008+-2.4216        ? might be 1.0342x slower
   max-boolean                                        3.2924+-0.1755            3.2900+-0.1605
   method-on-number                                  19.8671+-0.7338           19.2610+-0.3641          might be 1.0315x faster
   min-boolean                                        3.1607+-0.1803     ?      3.1866+-0.1253        ?
   minus-boolean-double                               3.4351+-0.1088            3.4127+-0.0659
   minus-boolean                                      3.0648+-0.3516     ?      3.0779+-0.3018        ?
   misc-strict-eq                                    36.4464+-3.6843     ?     36.5499+-1.7704        ?
   mod-boolean-double                                11.8383+-0.7135           11.3062+-0.2041          might be 1.0471x faster
   mod-boolean                                        8.4670+-0.6013            8.4130+-0.2901
   mul-boolean-double                                 4.1385+-0.1629            4.1372+-0.2401
   mul-boolean                                        3.5843+-1.3110            3.2654+-0.3255          might be 1.0977x faster
   neg-boolean                                        3.5370+-0.2357            3.4912+-0.1442          might be 1.0131x faster
   negative-zero-divide                               0.6299+-0.2213            0.4707+-0.0391          might be 1.3382x faster
   negative-zero-modulo                               0.4630+-0.0221     ?      0.5510+-0.2190        ? might be 1.1902x slower
   negative-zero-negate                               0.5151+-0.1993            0.4615+-0.0204          might be 1.1161x faster
   nested-function-parsing                           56.3910+-4.8411           55.6796+-4.4433          might be 1.0128x faster
   new-array-buffer-dead                            123.5787+-6.8205     ?    128.2275+-14.7740       ? might be 1.0376x slower
   new-array-buffer-push                              7.8698+-0.2846     ?      7.9419+-0.1842        ?
   new-array-dead                                    20.9135+-0.1971     ?     21.2814+-0.5702        ? might be 1.0176x slower
   new-array-push                                     5.2808+-0.0587            5.2662+-0.1013
   no-inline-constructor                             47.2620+-3.4821           46.8984+-11.7377
   number-test                                        4.0626+-0.1032     ?      4.2947+-0.6674        ? might be 1.0572x slower
   object-closure-call                                6.8326+-0.9067            6.7755+-0.9219
   object-get-own-property-symbols-on-large-array
                                                      3.7772+-0.2403            3.7421+-0.2783
   object-test                                        3.9470+-0.2324     ?      4.3260+-1.0185        ? might be 1.0960x slower
   obvious-sink-pathology-taken                     156.4062+-1.0733     ?    157.2243+-11.9910       ?
   obvious-sink-pathology                            41.8137+-4.3082     ?     43.6365+-3.8642        ? might be 1.0436x slower
   obviously-elidable-new-object                     41.1153+-2.9941     ?     41.8242+-3.5764        ? might be 1.0172x slower
   plus-boolean-arith                                 3.0062+-0.1047     ?      3.1366+-0.3170        ? might be 1.0434x slower
   plus-boolean-double                                3.4490+-0.1866            3.4008+-0.0515          might be 1.0142x faster
   plus-boolean                                       3.3332+-0.2873            3.3016+-0.2452
   poly-chain-access-different-prototypes-simple
                                                      3.4490+-0.2964            3.4277+-0.2259
   poly-chain-access-different-prototypes             3.1915+-0.1105            3.1788+-0.1149
   poly-chain-access-simpler                          3.8633+-1.4464            3.5985+-0.5425          might be 1.0736x faster
   poly-chain-access                                  3.1420+-0.1379     ?      3.2377+-0.1503        ? might be 1.0305x slower
   poly-stricteq                                     67.6044+-9.2076     ?     68.3341+-6.4331        ? might be 1.0108x slower
   polymorphic-array-call                             2.1653+-1.0336            1.9830+-0.7526          might be 1.0919x faster
   polymorphic-get-by-id                              3.5906+-0.0993     ?      3.6713+-0.2641        ? might be 1.0225x slower
   polymorphic-put-by-id                             38.4598+-6.3643     ?     42.5972+-7.5243        ? might be 1.1076x slower
   polymorphic-put-by-val-with-string                41.4169+-6.3548     ?     42.7228+-2.8397        ? might be 1.0315x slower
   polymorphic-put-by-val-with-symbol                42.5748+-2.8176     ?     43.1814+-4.1392        ? might be 1.0142x slower
   polymorphic-structure                             14.6933+-0.3643     ?     14.8711+-0.3465        ? might be 1.0121x slower
   polyvariant-monomorphic-get-by-id                 10.1808+-0.0822     ?     10.2852+-0.2957        ? might be 1.0103x slower
   proto-getter-access                               10.1153+-0.2493     ?     10.2157+-0.1878        ?
   prototype-access-with-mutating-prototype           6.8580+-0.4128            6.7427+-0.1842          might be 1.0171x faster
   put-by-id-replace-and-transition                  10.2584+-0.1007     ?     10.3621+-0.2205        ? might be 1.0101x slower
   put-by-id-slightly-polymorphic                     3.3077+-0.1029     ?      4.0663+-1.6772        ? might be 1.2293x slower
   put-by-id                                         14.6176+-0.2376           14.5065+-0.1803
   put-by-val-direct                                  0.5563+-0.2179     ?      0.6312+-0.2873        ? might be 1.1346x slower
   put-by-val-large-index-blank-indexing-type
                                                      6.4910+-0.3632     ?      7.3265+-3.0158        ? might be 1.1287x slower
   put-by-val-machine-int                             3.2847+-0.1928     ?      3.3715+-0.1265        ? might be 1.0264x slower
   put-by-val-with-string-replace-and-transition
                                                     14.9731+-0.1793     ?     15.1129+-0.2855        ?
   put-by-val-with-string-slightly-polymorphic
                                                      4.0958+-0.1932            4.0462+-0.1823          might be 1.0123x faster
   put-by-val-with-string                            14.9073+-0.2550     ?     14.9196+-0.1959        ?
   put-by-val-with-symbol-replace-and-transition
                                                     16.3869+-0.2558           16.2980+-0.3802
   put-by-val-with-symbol-slightly-polymorphic
                                                      4.1321+-0.2640     ?      4.5080+-1.4807        ? might be 1.0910x slower
   put-by-val-with-symbol                            15.5836+-1.1736           15.5638+-1.0770
   rare-osr-exit-on-local                            15.9693+-0.3417     ?     16.0940+-0.0928        ?
   raytrace-with-empty-try-catch                      8.2103+-0.7036            8.1862+-0.7513
   raytrace-with-try-catch                           14.7606+-1.0495     ?     14.9625+-1.3479        ? might be 1.0137x slower
   register-pressure-from-osr                        21.8005+-1.1761           21.7482+-0.2685
   repeat-multi-get-by-offset                        25.5856+-2.2963     ?     26.4895+-2.8634        ? might be 1.0353x slower
   richards-empty-try-catch                          76.6583+-3.8688           75.1190+-1.6998          might be 1.0205x faster
   richards-try-catch                               294.3876+-8.4516          290.5861+-3.7070          might be 1.0131x faster
   set-for-each                                       5.8733+-0.0245     ?      5.9347+-0.2361        ? might be 1.0105x slower
   set-for-of                                        11.7655+-3.8582            9.6788+-0.3351          might be 1.2156x faster
   setter-prototype                                  10.0235+-2.4211            9.2670+-0.3951          might be 1.0816x faster
   setter                                             6.5450+-0.7979     ?      6.8843+-0.9512        ? might be 1.0518x slower
   simple-activation-demo                            28.2238+-1.3398     ?     28.4749+-0.9541        ?
   simple-getter-access                              13.5765+-0.9194     ?     13.8735+-1.8892        ? might be 1.0219x slower
   simple-poly-call-nested                            8.8252+-0.2985     ?      8.8735+-0.3049        ?
   simple-poly-call                                   1.8185+-0.4881     ?      1.9286+-0.5205        ? might be 1.0605x slower
   sin-boolean                                       21.0157+-2.7769     ?     24.6975+-6.9417        ? might be 1.1752x slower
   singleton-scope                                   67.9980+-2.4083     ?     68.1135+-5.0104        ?
   sink-function                                     13.1805+-0.2820     ?     13.5355+-0.7534        ? might be 1.0269x slower
   sink-huge-activation                              19.4793+-0.9062     ?     20.2101+-3.3526        ? might be 1.0375x slower
   sinkable-new-object-dag                           76.3535+-3.7088           76.0950+-2.0315
   sinkable-new-object-taken                         58.2634+-8.0597           57.7078+-9.1858
   sinkable-new-object                               44.9326+-7.2817           43.5840+-5.8613          might be 1.0309x faster
   slow-array-profile-convergence                     3.6478+-1.3117            3.2711+-0.0168          might be 1.1151x faster
   slow-convergence                                   3.1992+-0.1165     ?      3.2065+-0.1171        ?
   slow-ternaries                                    27.4589+-2.3749           26.0146+-0.1675          might be 1.0555x faster
   sorting-benchmark                                 21.7480+-0.1951           21.5207+-0.5505          might be 1.0106x faster
   sparse-conditional                                 1.8674+-0.3825            1.6850+-0.3798          might be 1.1083x faster
   splice-to-remove                                  17.1874+-0.2506     ?     17.2143+-0.3061        ?
   string-char-code-at                               17.7871+-0.4126           17.6122+-0.4465
   string-concat-object                               2.8518+-0.2617            2.8041+-0.0753          might be 1.0170x faster
   string-concat-pair-object                          2.7423+-0.2227     ?      2.7549+-0.0920        ?
   string-concat-pair-simple                         14.6860+-3.5890     ?     15.2195+-3.7544        ? might be 1.0363x slower
   string-concat-simple                              14.2955+-0.1220     ?     15.4174+-3.5701        ? might be 1.0785x slower
   string-cons-repeat                                10.7249+-4.8813            9.1470+-0.7113          might be 1.1725x faster
   string-cons-tower                                  8.9608+-0.3736     ?     11.1104+-3.9131        ? might be 1.2399x slower
   string-equality                                   22.5461+-1.4882     ?     22.7748+-3.0165        ? might be 1.0101x slower
   string-get-by-val-big-char                         8.6230+-0.1565     ?      8.8206+-0.4304        ? might be 1.0229x slower
   string-get-by-val-out-of-bounds-insane             4.1242+-0.2436            4.1128+-0.0678
   string-get-by-val-out-of-bounds                    5.9644+-1.4780            5.6688+-0.8075          might be 1.0521x faster
   string-get-by-val                                  4.5708+-1.6263            3.8514+-0.1876          might be 1.1868x faster
   string-hash                                        2.5662+-0.3229     ?      2.6826+-0.5545        ? might be 1.0454x slower
   string-long-ident-equality                        19.8177+-4.8299           17.8335+-0.2628          might be 1.1113x faster
   string-out-of-bounds                              14.3625+-0.1016     !     14.6243+-0.0954        ! definitely 1.0182x slower
   string-repeat-arith                               27.4365+-3.0967     ?     27.9273+-2.0482        ? might be 1.0179x slower
   string-rope-with-object                           22.8054+-0.2599           22.5442+-0.2012          might be 1.0116x faster
   string-sub                                        43.5569+-0.3216     !     45.1613+-0.3264        ! definitely 1.0368x slower
   string-test                                        4.0378+-0.4752            4.0117+-0.4210
   string-var-equality                               38.6000+-0.4995           38.3755+-0.0257
   structure-hoist-over-transitions                   3.2219+-0.7886     ?      3.3240+-1.0523        ? might be 1.0317x slower
   substring-concat-weird                            48.6868+-3.9525     ?     51.4867+-8.2790        ? might be 1.0575x slower
   substring-concat                                  54.0867+-8.9825           52.8566+-4.5002          might be 1.0233x faster
   substring                                         58.1147+-5.2678           55.8556+-0.6686          might be 1.0404x faster
   switch-char-constant                               3.2054+-0.2489     ?      3.2509+-0.4093        ? might be 1.0142x slower
   switch-char                                        7.3036+-0.9708            6.9700+-0.0155          might be 1.0479x faster
   switch-constant                                    9.7272+-0.3854            9.3713+-0.1156          might be 1.0380x faster
   switch-string-basic-big-var                       20.3176+-0.2645     ?     20.6295+-0.2749        ? might be 1.0154x slower
   switch-string-basic-big                           19.8146+-3.0740     ?     19.8842+-3.7652        ?
   switch-string-basic-var                           19.6000+-4.5017           17.1623+-0.4089          might be 1.1420x faster
   switch-string-basic                               16.5349+-2.0039           15.7368+-0.2081          might be 1.0507x faster
   switch-string-big-length-tower-var                22.7395+-4.1810           21.7247+-1.2240          might be 1.0467x faster
   switch-string-length-tower-var                    16.9782+-0.3054     ?     17.0869+-0.3637        ?
   switch-string-length-tower                        16.5837+-3.4744           15.3746+-2.1621          might be 1.0786x faster
   switch-string-short                               15.1630+-1.4054     ?     18.4283+-4.3293        ? might be 1.2153x slower
   switch                                            13.2080+-0.7392     ?     13.4925+-0.8539        ? might be 1.0215x slower
   symbol-tostringtag                                 3.7987+-0.0897     ?      3.8132+-0.1623        ?
   tear-off-arguments-simple                          3.8389+-0.0525            3.8019+-0.0708
   tear-off-arguments                                 5.3348+-0.1510            5.3005+-0.0575
   temporal-structure                                15.6133+-3.5418     ?     15.7650+-3.4936        ?
   to-int32-boolean                                  18.8528+-4.0071           17.3121+-0.3076          might be 1.0890x faster
   try-catch-get-by-val-cloned-arguments             13.2030+-3.9768           12.7891+-2.8940          might be 1.0324x faster
   try-catch-get-by-val-direct-arguments              3.0114+-0.3885     ?      3.1597+-0.8626        ? might be 1.0493x slower
   try-catch-get-by-val-scoped-arguments              5.8954+-0.4172            5.6597+-0.1562          might be 1.0417x faster
   typed-array-get-set-by-val-profiling              30.9415+-0.9704     ?     31.5344+-1.8677        ? might be 1.0192x slower
   undefined-property-access                        379.4645+-4.3045     ?    383.3814+-8.8896        ? might be 1.0103x slower
   undefined-test                                     4.1239+-0.1697     ?      4.5159+-1.0269        ? might be 1.0950x slower
   unprofiled-licm                                   14.5941+-1.4869           14.3303+-1.2450          might be 1.0184x faster
   v8-raytrace-with-empty-try-catch                  78.1481+-3.0262     ?     78.4071+-3.7318        ?
   v8-raytrace-with-try-catch                        90.7684+-3.3914           89.8038+-2.5377          might be 1.0107x faster
   varargs-call                                      17.3807+-4.2563           15.5209+-0.1578          might be 1.1198x faster
   varargs-construct-inline                          29.8410+-2.2089     ?     30.4965+-3.1872        ? might be 1.0220x slower
   varargs-construct                                 23.9575+-0.1950           23.8552+-0.0264
   varargs-inline                                    10.9659+-1.8271           10.6133+-0.4973          might be 1.0332x faster
   varargs-strict-mode                               11.6835+-0.4148     ?     12.3951+-2.2802        ? might be 1.0609x slower
   varargs                                           11.6260+-0.2843           11.4458+-0.3952          might be 1.0157x faster
   weird-inlining-const-prop                          2.7510+-0.1419     ?      2.8736+-0.5127        ? might be 1.0446x slower

   &lt;geometric&gt;                                       11.3749+-0.0582           11.3071+-0.0545          might be 1.0060x faster

                                                         Baseline                    Mine
Geomean of preferred means:
   &lt;scaled-result&gt;                                   43.2217+-0.4261     ?     43.2363+-0.3838        ? might be 1.0003x slower</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1156525</commentid>
    <comment_count>24</comment_count>
      <attachid>269174</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-01-18 19:30:22 -0800</bug_when>
    <thetext>Comment on attachment 269174
Patch

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

Most of the patch looks good to me.
I&apos;m mostly interested in why you chose *_hint opcodes + op_nop.
I don&apos;t think this is the best way to go about things and it seems
like an anti-pattern. More questions about that below:

&gt; Source/JavaScriptCore/bytecode/BytecodeList.json:139
&gt; +            { &quot;name&quot; : &quot;op_save_hint&quot;, &quot;length&quot; : 4 },
&gt; +            { &quot;name&quot; : &quot;op_resume_hint&quot;, &quot;length&quot; : 4 },

These nodes seem like anti-patterns to what we normally do with byte code (i.e these opcodes are basically
used as flags and never even make it to the point where they&apos;re executed). I can&apos;t see a good reason
why we really need them. It&apos;s nice being able to compile op_resume into a linear stream of stores,
but this can be done easily inside the baseline JIT just by consulting the liveness data.
It would seem like we wouldn&apos;t get this property in the LLInt, but I don&apos;t think that matters.

Is there a reason I&apos;m overlooking for why we really need these opcodes?
It seems like we could solve their use cases by other means.

&gt; Source/JavaScriptCore/bytecode/BytecodeList.json:141
&gt; +            { &quot;name&quot; : &quot;op_clear_generator_frame&quot;, &quot;length&quot; : 2 },

I&apos;m not against having this opcode, but it doesn&apos;t seem like its strictly necessary if you no 
longer use resume_hint + resume_from_generator_frame.
It&apos;s always emitted right after op_resume, so we could just bake it into that opcode
for LLInt/baseline implementation. And then we could  still lower it to a separate node
inside the DFG. (Again, if we don&apos;t use the resume_hint approach).

&gt; Source/JavaScriptCore/bytecode/CodeBlock.cpp:2378
&gt; +                    for (size_t i = 0; i &lt; 4; ++i)

We still should have a discussion if we want this approach of having the *_hint opcodes
and the nop opcode, but, if we do decide we want that approach, we should use OPCODE_LENGTH
here instead of &quot;4&quot; anywhere the length is hard coded.

&gt; Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:2524
&gt; +        forNode(node).makeHeapTop();

This should be bytecode top if GetGeneratorLocal could give us TDZ value.

&gt; Source/JavaScriptCore/dfg/DFGClobberize.h:1117
&gt; +        read(GeneratorLocalCount);

why is this true?

&gt; Source/JavaScriptCore/dfg/DFGClobberize.h:1123
&gt; +        read(GeneratorLocalCount);

why is this true?

&gt; Source/JavaScriptCore/parser/Parser.cpp:255
&gt; +            functionInfo.parameters = createGeneratorParameters(context, parameterCount);

shouldn&apos;t this be passing in info.parameterCount?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1156592</commentid>
    <comment_count>25</comment_count>
      <attachid>269174</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-01-19 04:35:54 -0800</bug_when>
    <thetext>Comment on attachment 269174
Patch

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

Thank you for your review!

&gt;&gt; Source/JavaScriptCore/bytecode/BytecodeList.json:139
&gt;&gt; +            { &quot;name&quot; : &quot;op_resume_hint&quot;, &quot;length&quot; : 4 },
&gt; 
&gt; These nodes seem like anti-patterns to what we normally do with byte code (i.e these opcodes are basically
&gt; used as flags and never even make it to the point where they&apos;re executed). I can&apos;t see a good reason
&gt; why we really need them. It&apos;s nice being able to compile op_resume into a linear stream of stores,
&gt; but this can be done easily inside the baseline JIT just by consulting the liveness data.
&gt; It would seem like we wouldn&apos;t get this property in the LLInt, but I don&apos;t think that matters.
&gt; 
&gt; Is there a reason I&apos;m overlooking for why we really need these opcodes?
&gt; It seems like we could solve their use cases by other means.

The reason why I took resume_hint approach is aligning the bytecode to the DFG node `set` operation.
The old `op_resume` can define multiple locals at one bytecode. Except for op_enter, all the other bytecode op usually defines zero or one local at a time.
It makes each DFG node during op_resume m_exitOK = true.

But, currently, op_resume does not cause any problems with m_exitOK = false. So just using op_resume is OK to me. I&apos;ll change this.

&gt;&gt; Source/JavaScriptCore/bytecode/BytecodeList.json:141
&gt;&gt; +            { &quot;name&quot; : &quot;op_clear_generator_frame&quot;, &quot;length&quot; : 2 },
&gt; 
&gt; I&apos;m not against having this opcode, but it doesn&apos;t seem like its strictly necessary if you no 
&gt; longer use resume_hint + resume_from_generator_frame.
&gt; It&apos;s always emitted right after op_resume, so we could just bake it into that opcode
&gt; for LLInt/baseline implementation. And then we could  still lower it to a separate node
&gt; inside the DFG. (Again, if we don&apos;t use the resume_hint approach).

Right. Since I&apos;ll change the design, I&apos;ll remove this opcode as well :)

&gt;&gt; Source/JavaScriptCore/bytecode/CodeBlock.cpp:2378
&gt;&gt; +                    for (size_t i = 0; i &lt; 4; ++i)
&gt; 
&gt; We still should have a discussion if we want this approach of having the *_hint opcodes
&gt; and the nop opcode, but, if we do decide we want that approach, we should use OPCODE_LENGTH
&gt; here instead of &quot;4&quot; anywhere the length is hard coded.

Oops! Thanks. I missed this.
I&apos;ll change the design, so this part will be removed as well :)

&gt;&gt; Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:2524
&gt;&gt; +        forNode(node).makeHeapTop();
&gt; 
&gt; This should be bytecode top if GetGeneratorLocal could give us TDZ value.

Nice! You&apos;re right. I&apos;ll fix this.

&gt;&gt; Source/JavaScriptCore/dfg/DFGClobberize.h:1117
&gt;&gt; +        read(GeneratorLocalCount);
&gt; 
&gt; why is this true?

SetGeneratorLocal should not be executed before executing ResizeGeneratorLocals.
GeneratorLocalCount means the allocated slots in the GeneratorFrame.
SetGeneratorLocal depends on this slots.

&gt;&gt; Source/JavaScriptCore/dfg/DFGClobberize.h:1123
&gt;&gt; +        read(GeneratorLocalCount);
&gt; 
&gt; why is this true?

Ditto.

&gt; Source/JavaScriptCore/dfg/DFGClobberize.h:1129
&gt; +        write(GeneratorLocalCount);

This means allocate/deallocate the slots in the generator frame. That is what ResizeGeneratorLocals does.

&gt;&gt; Source/JavaScriptCore/parser/Parser.cpp:255
&gt;&gt; +            functionInfo.parameters = createGeneratorParameters(context, parameterCount);
&gt; 
&gt; shouldn&apos;t this be passing in info.parameterCount?

Passing `info.parameterCount` seems preferable!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1156670</commentid>
    <comment_count>26</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-01-19 11:52:16 -0800</bug_when>
    <thetext>Added a little more detailed comments on IRC to saamyjoon :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1156680</commentid>
    <comment_count>27</comment_count>
      <attachid>269279</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-01-19 12:18:37 -0800</bug_when>
    <thetext>Created attachment 269279
Patch

Revised and redesigned</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1156681</commentid>
    <comment_count>28</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-01-19 12:20:20 -0800</bug_when>
    <thetext>Attachment 269279 did not pass style-queue:


ERROR: Source/JavaScriptCore/parser/Parser.cpp:1833:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 1 in 63 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1156686</commentid>
    <comment_count>29</comment_count>
      <attachid>269280</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-01-19 12:29:25 -0800</bug_when>
    <thetext>Created attachment 269280
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1156687</commentid>
    <comment_count>30</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-01-19 12:31:32 -0800</bug_when>
    <thetext>Attachment 269280 did not pass style-queue:


ERROR: Source/JavaScriptCore/parser/Parser.cpp:1833:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 1 in 63 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1157220</commentid>
    <comment_count>31</comment_count>
      <attachid>269434</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-01-20 22:53:56 -0800</bug_when>
    <thetext>Created attachment 269434
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1157221</commentid>
    <comment_count>32</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-01-20 22:56:27 -0800</bug_when>
    <thetext>Attachment 269434 did not pass style-queue:


ERROR: Source/JavaScriptCore/parser/Parser.cpp:1833:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 1 in 64 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1157864</commentid>
    <comment_count>33</comment_count>
      <attachid>269434</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-01-22 15:13:37 -0800</bug_when>
    <thetext>Comment on attachment 269434
Patch

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

&gt; Source/JavaScriptCore/ChangeLog:33
&gt; +        [entry] -+--&gt; [save block] -&gt; op_save (it is branching bytecode) ------&gt; [merge block] -&gt; ...
&gt; +                 |                                  |                                 ^
&gt; +                 |                                  +-&gt; op_ret                        |
&gt; +                 +------------------&gt; op_resume --------------------------------------+

Can you show an example bytecode sequence that creates this control flow?

&gt; Source/JavaScriptCore/ChangeLog:48
&gt; +        - NewGeneratorFrame
&gt; +
&gt; +            This just allocates GeneratorFrame.

How is this different from allocating an activation?  Why can&apos;t they share the same opcodes and classes?

How is this different from allocating a vanilla JS object?  Why can&apos;t you use that?

&gt; Source/JavaScriptCore/ChangeLog:53
&gt; +        - ResizeGeneratorLocals
&gt; +
&gt; +            This set GeneratorFrame::m_numberOfSavedCalleeLocals *N*. This node is used to (1) allocate space for locals in GeneratorFrame and (2) deallocate space in
&gt; +            GeneratorFrame by setting it as 0.

This sounds like functionality that JSObject already has.  It doesn&apos;t even need to be warned of a resize.  Why can&apos;t you just use JSObject?

&gt; Source/JavaScriptCore/ChangeLog:58
&gt; +        - GetGeneratorLocal
&gt; +
&gt; +            Get a saved local variable from a generator frame. GetGeneratorLocal and SetGeneratorLocal are linked with GeneratorLocalData. So type predication and flags
&gt; +            are correctly propagated beyond the generator frame.

How is this different from GetFromScope or GetByOffset?  Why do we need something new?

&gt; Source/JavaScriptCore/ChangeLog:62
&gt; +        - SetGeneratorLocal
&gt; +
&gt; +            Store a local variable to a generator frame.

How is this different from PutToScope or PutByOffset?

&gt; Source/JavaScriptCore/ChangeLog:66
&gt; +        1. Support transferring AbstractValue between SetGeneratorLocal and GetGeneratorLocal. https://bugs.webkit.org/show_bug.cgi?id=153183

We don&apos;t do this for PutByOffset-&gt;GetByOffset or PutToScope-&gt;GetFromScope.  That&apos;s intentional.  We don&apos;t need it because if you find yourself in a situation where the load is proved to be a constant then most you can also prove the set of stores that reach that load.  And if you can do that then you can get rid of the load.  That&apos;s a more general optimization.

&gt; Source/JavaScriptCore/ChangeLog:72
&gt; +        3. And once we exploit that GeneratorFrame is not escaped from the given FTL-ed function, we will eliminate GeneratorFrame allocation and
&gt; +        convert GeneratorLocal operations into get/set local operations.

It&apos;s a lot easier to get escape analysis if you&apos;re not inventing new types!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1157876</commentid>
    <comment_count>34</comment_count>
      <attachid>269434</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-01-22 15:24:17 -0800</bug_when>
    <thetext>Comment on attachment 269434
Patch

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

&gt; Source/JavaScriptCore/bytecode/BytecodeBasicBlock.cpp:41
&gt; +static bool isBranch(OpcodeID opcodeID, BytecodeAnalysisMode bytecodeAnalysisMode)

I really don&apos;t like adding modes like this.  It makes the code dirty, and less performant.

It&apos;s common in a compiler to write many different kinds of analyses.  Why can&apos;t this just be a separate analysis?  I think that bytecode analyses could be made a lot easier to write if we just make the existing bytecode basic block and use/def machinery a bit more user-friendly.  And maybe it&apos;s already user-friendly enough.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1157881</commentid>
    <comment_count>35</comment_count>
      <attachid>269434</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-01-22 15:33:37 -0800</bug_when>
    <thetext>Comment on attachment 269434
Patch

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

&gt; Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:2523
&gt; +        // FIXME: We should attempt to convert it to constant.
&gt; +        // https://bugs.webkit.org/show_bug.cgi?id=153183

Please remove this FIXME.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1158061</commentid>
    <comment_count>36</comment_count>
      <attachid>269434</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-01-23 12:34:24 -0800</bug_when>
    <thetext>Comment on attachment 269434
Patch

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

Thanks for your review :D

&gt;&gt; Source/JavaScriptCore/ChangeLog:33
&gt;&gt; +                 +------------------&gt; op_resume --------------------------------------+
&gt; 
&gt; Can you show an example bytecode sequence that creates this control flow?

When we use `yield`, now we create the above control flow.

function *gen() {
    yield 1;
    yield 2;
}

will creates

switch (genStatus) {
    case 0:
        // initial seq
        ...

        op_save 1, =&gt; pseudo jump to case 1&apos;s merge block
        op_ret 1

    case 1:
       op_resume 1
       // merge block
       ...
       op_save 2, =&gt; pseudo jump to case 2&apos;s merge block


    case 2:
       op_resume 2
       ...
}

&gt;&gt; Source/JavaScriptCore/ChangeLog:48
&gt;&gt; +            This just allocates GeneratorFrame.
&gt; 
&gt; How is this different from allocating an activation?  Why can&apos;t they share the same opcodes and classes?
&gt; 
&gt; How is this different from allocating a vanilla JS object?  Why can&apos;t you use that?

Good pointing. Linking generator locals can be achieved by GetGeneratorLocal and SetGeneratorLocal.
So we can use JSLexicalEnvironment instead of GeneratorFrame.

&gt;&gt; Source/JavaScriptCore/ChangeLog:53
&gt;&gt; +            GeneratorFrame by setting it as 0.
&gt; 
&gt; This sounds like functionality that JSObject already has.  It doesn&apos;t even need to be warned of a resize.  Why can&apos;t you just use JSObject?

It just avoids marking values that is not used anymore.
If holding and marking dead (not used anymore) values is OK, we can remove this op.

&gt;&gt; Source/JavaScriptCore/ChangeLog:58
&gt;&gt; +            are correctly propagated beyond the generator frame.
&gt; 
&gt; How is this different from GetFromScope or GetByOffset?  Why do we need something new?

One advantage of GetGeneratorLocal etc. approach is that we can link SetGeneratorLocal and GetGeneratorLocal with DFGGeneratorLocalData. (This is like a GetLocal / SetLocal&apos;s VariableAccessData).
It enables us to transfer predication data from SetGeneratorLocal position to GetGeneratorLocal position in DFGPredictionPropagationPhase.
And currently I didn&apos;t, but, we can also do backward propagation with this link.

What do you think of?

&gt;&gt; Source/JavaScriptCore/ChangeLog:66
&gt;&gt; +        1. Support transferring AbstractValue between SetGeneratorLocal and GetGeneratorLocal. https://bugs.webkit.org/show_bug.cgi?id=153183
&gt; 
&gt; We don&apos;t do this for PutByOffset-&gt;GetByOffset or PutToScope-&gt;GetFromScope.  That&apos;s intentional.  We don&apos;t need it because if you find yourself in a situation where the load is proved to be a constant then most you can also prove the set of stores that reach that load.  And if you can do that then you can get rid of the load.  That&apos;s a more general optimization.

Thanks! OK.

&gt;&gt; Source/JavaScriptCore/bytecode/BytecodeBasicBlock.cpp:41
&gt;&gt; +static bool isBranch(OpcodeID opcodeID, BytecodeAnalysisMode bytecodeAnalysisMode)
&gt; 
&gt; I really don&apos;t like adding modes like this.  It makes the code dirty, and less performant.
&gt; 
&gt; It&apos;s common in a compiler to write many different kinds of analyses.  Why can&apos;t this just be a separate analysis?  I think that bytecode analyses could be made a lot easier to write if we just make the existing bytecode basic block and use/def machinery a bit more user-friendly.  And maybe it&apos;s already user-friendly enough.

Make sense. Splitting bytecode analysis into 2 sounds nice idea.

&gt;&gt; Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:2523
&gt;&gt; +        // https://bugs.webkit.org/show_bug.cgi?id=153183
&gt; 
&gt; Please remove this FIXME.

Dropped. Thanks for your advice at https://bugs.webkit.org/show_bug.cgi?id=153183.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1158064</commentid>
    <comment_count>37</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-01-23 13:36:54 -0800</bug_when>
    <thetext>(In reply to comment #36)
&gt; Comment on attachment 269434 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=269434&amp;action=review
&gt; 
&gt; Thanks for your review :D
&gt; 
&gt; &gt;&gt; Source/JavaScriptCore/ChangeLog:33
&gt; &gt;&gt; +                 +------------------&gt; op_resume --------------------------------------+
&gt; &gt; 
&gt; &gt; Can you show an example bytecode sequence that creates this control flow?
&gt; 
&gt; When we use `yield`, now we create the above control flow.
&gt; 
&gt; function *gen() {
&gt;     yield 1;
&gt;     yield 2;
&gt; }
&gt; 
&gt; will creates
&gt; 
&gt; switch (genStatus) {
&gt;     case 0:
&gt;         // initial seq
&gt;         ...
&gt; 
&gt;         op_save 1, =&gt; pseudo jump to case 1&apos;s merge block
&gt;         op_ret 1
&gt; 
&gt;     case 1:
&gt;        op_resume 1
&gt;        // merge block
&gt;        ...
&gt;        op_save 2, =&gt; pseudo jump to case 2&apos;s merge block
&gt; 
&gt; 
&gt;     case 2:
&gt;        op_resume 2
&gt;        ...
&gt; }

This sort of makes sense as an intermediate representation, but it has problems.

I think it&apos;s an antipattern to have an IR opcode that changes meaning depending on mode.  The usual way that compilers handle this is having multiple opcodes.  For example, you could use op_resume and op_save before the transformation of the program into a switch statement, and then use normal scoped variable stores and loads after the transformation.

&gt; 
&gt; &gt;&gt; Source/JavaScriptCore/ChangeLog:48
&gt; &gt;&gt; +            This just allocates GeneratorFrame.
&gt; &gt; 
&gt; &gt; How is this different from allocating an activation?  Why can&apos;t they share the same opcodes and classes?
&gt; &gt; 
&gt; &gt; How is this different from allocating a vanilla JS object?  Why can&apos;t you use that?
&gt; 
&gt; Good pointing. Linking generator locals can be achieved by GetGeneratorLocal
&gt; and SetGeneratorLocal.
&gt; So we can use JSLexicalEnvironment instead of GeneratorFrame.

Why not just use existing PutClosureVar/GetClosureVar opcodes instead of adding new opcodes?

Adding new opcodes to DFG IR takes a lot of work.  It also makes the entire compiler harder to work on.  We shouldn&apos;t add new opcodes unless there is a really powerful optimization that this enables.

I don&apos;t believe that GetGeneratorLocal/SetGeneratorLocal enables any optimizations.

&gt; 
&gt; &gt;&gt; Source/JavaScriptCore/ChangeLog:53
&gt; &gt;&gt; +            GeneratorFrame by setting it as 0.
&gt; &gt; 
&gt; &gt; This sounds like functionality that JSObject already has.  It doesn&apos;t even need to be warned of a resize.  Why can&apos;t you just use JSObject?
&gt; 
&gt; It just avoids marking values that is not used anymore.
&gt; If holding and marking dead (not used anymore) values is OK, we can remove
&gt; this op.

We shouldn&apos;t add this optimization until we know that we need it.

Probably, the way we would do this is to just store undefined into known-dead variables.

&gt; 
&gt; &gt;&gt; Source/JavaScriptCore/ChangeLog:58
&gt; &gt;&gt; +            are correctly propagated beyond the generator frame.
&gt; &gt; 
&gt; &gt; How is this different from GetFromScope or GetByOffset?  Why do we need something new?
&gt; 
&gt; One advantage of GetGeneratorLocal etc. approach is that we can link
&gt; SetGeneratorLocal and GetGeneratorLocal with DFGGeneratorLocalData. (This is
&gt; like a GetLocal / SetLocal&apos;s VariableAccessData).
&gt; It enables us to transfer predication data from SetGeneratorLocal position
&gt; to GetGeneratorLocal position in DFGPredictionPropagationPhase.
&gt; And currently I didn&apos;t, but, we can also do backward propagation with this
&gt; link.
&gt; 
&gt; What do you think of?

I don&apos;t think any of that is a good idea.

First of all, I&apos;ve worked super hard for the last three years to steadily eradicate VariableAccessData from the DFG.  I&apos;m surprised that you like it or that you want to add more things like it.  It&apos;s a rotten mess.  We only keep it around because it&apos;s cheaper than SSA conversion, and it closes holes in our value profiling.  But once we convert to SSA in the FTL, we drop VariableAccessData.

Moreover, the fact that you&apos;re proposing to create this feature in such a way that you need to add new data structures to prediction propagation is troubling.  Prediction propagation is an extremely subtle algorithm.  We don&apos;t want to have to change it in big ways every time we implement a new language feature.  Instead, we want to be able to reduce new language features to existing compiler capabilities so as to minimize the number of DFG IR changes.

It&apos;s pretty clear to me that for generator properties, you should emit get_from_scope/put_to_scope bytecodes at each point of use rather than doing wholesale storing and loading at resume/save.  Fine-grained accesses would give you detailed type profiling at every load, which would obviate the need for any prediction propagation changes.  You would have no need for any VariableAccessData-like hacks.  All of the optimizations that you&apos;re imagining getting, you would get them for free.

And if you did add GeneratorLocalData, then I have no idea how you&apos;d propose to make it work in SSA.  SSA drops VariableAccessData because having objects that somehow link live ranges of variables is antithetical to how SSA works.

Some more notes:

- If GeneratorLocalData was a good idea, then it would also be a good idea for *any* kind of object allocation.  We need to apply this rule for all features to IR.  It can&apos;t be the case that each new kind of object that people invent gets its own completely novel optimization architecture in the DFG.  If you can think of an optimization to do for your new object kind, then I bet you that this same optimization is either already implemented for other kinds of objects or it&apos;s one that we should implement for all objects.

- Currently the compiler&apos;s handling of object allocations is powerful enough that all of the optimizations you want to special-case are things you would get for free if you just used some existing object model (either JSObject or activation) and fine-grained loads and stores to the variable properties at every variable use.

- Don&apos;t worry about backwards propagation.  It&apos;s not sufficiently profitable for us to worry about it too much.  And if we did need to worry about it, we would not implement an optimization that only works for one kind of object.  We&apos;d implement an optimization that worked for accesses to all objects!

&gt; 
&gt; &gt;&gt; Source/JavaScriptCore/ChangeLog:66
&gt; &gt;&gt; +        1. Support transferring AbstractValue between SetGeneratorLocal and GetGeneratorLocal. https://bugs.webkit.org/show_bug.cgi?id=153183
&gt; &gt; 
&gt; &gt; We don&apos;t do this for PutByOffset-&gt;GetByOffset or PutToScope-&gt;GetFromScope.  That&apos;s intentional.  We don&apos;t need it because if you find yourself in a situation where the load is proved to be a constant then most you can also prove the set of stores that reach that load.  And if you can do that then you can get rid of the load.  That&apos;s a more general optimization.
&gt; 
&gt; Thanks! OK.
&gt; 
&gt; &gt;&gt; Source/JavaScriptCore/bytecode/BytecodeBasicBlock.cpp:41
&gt; &gt;&gt; +static bool isBranch(OpcodeID opcodeID, BytecodeAnalysisMode bytecodeAnalysisMode)
&gt; &gt; 
&gt; &gt; I really don&apos;t like adding modes like this.  It makes the code dirty, and less performant.
&gt; &gt; 
&gt; &gt; It&apos;s common in a compiler to write many different kinds of analyses.  Why can&apos;t this just be a separate analysis?  I think that bytecode analyses could be made a lot easier to write if we just make the existing bytecode basic block and use/def machinery a bit more user-friendly.  And maybe it&apos;s already user-friendly enough.
&gt; 
&gt; Make sense. Splitting bytecode analysis into 2 sounds nice idea.
&gt; 
&gt; &gt;&gt; Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:2523
&gt; &gt;&gt; +        // https://bugs.webkit.org/show_bug.cgi?id=153183
&gt; &gt; 
&gt; &gt; Please remove this FIXME.
&gt; 
&gt; Dropped. Thanks for your advice at
&gt; https://bugs.webkit.org/show_bug.cgi?id=153183.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1158080</commentid>
    <comment_count>38</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-01-23 19:29:55 -0800</bug_when>
    <thetext>Here are some more notes that might be useful for getting the generator object model right.

Currently we have three primary object models in JSC.  By &quot;primary&quot; I mean that they will end up on the hot path of just about any idiomatic JavaScript program, and our compilers got to great lengths to make them fast.  I&apos;m only considering object models for storing named fields, where the name is supplied by the program, and those fields can hold any JS value.

1) JSObject
2) JSEnvironmentRecord (i.e. what activation uses)
3) DirectArguments

What distinguishes (1) is that it has type inference, constant inference, O(1) direct accesses provided that you lay out the structure carefully enough.  You risk having to do extra indirections to access properties if the structure doesn&apos;t make them inline.  The fact that JSObject has the possibility of this kind of pessimisation is partly why we have (2) at all.

If you know the set of properties ahead of time, you can use (2).  It has constant inference, but it does not have type inference (a program point that loads from a property in an activation will still have local inference to predict what type of values will be loaded there, but unlike JSObject, they won&apos;t also get per-property guarantees about the type).  Accesses are O(1) and always direct; you don&apos;t have to do anything special to ensure that.

Finally, we have (3) for sloppy arguments objects.  They are popular enough, and have sufficiently magical semantics, that we need a separate object model here.  (3) does not have either constant inference or type inference.

Oddly, we created an object model, (2), for the purpose of improving performance over (1).  But right now, we are in this strange situation that (1) has a performane feature, type inference, which we still have not ported to (2).  That&apos;s really unfortunate and I hope we do it soon.  Neither type inference nor constant inference have made it into DirectArguments.  It would be harder to add those features there, but not impossible.

You could argue that having JSEnvironmentRecord be separate from JSObject, rather than using JSObject&apos;s object model, is an overall architecture win because when you have a JSEnvironmentRecord* it gives you certain guarantees that JSObject cannot give you (accesses are direct, properties don&apos;t get deleted, there are no accessors, etc).  But from the standpoint of how to evolve the VM and add features, it&apos;s really unfortunate that it&apos;s a separate object model.  We have implemented constant inference twice now - once for JSEnvironmentRecords and then again for JSObjects.  It&apos;s unfortunate that we had to spend 2x the time on that feature.  We have only implemented type inference once (JSObject), but we will have to implement it a second time soon (JSEnvironmentRecord).

DirectArguments is even sadder than JSEnvironmentRecord, but it probably has to be a separate thing because of the crazy semantics.

Note that right now, both JSObject and JSEnvironmentRecord enjoy the following optimizations in DFG and FTL:
- Local CSE in tier 3 and global CSE in tier 4.
- Field-name-based alias analysis.
- Escape analysis in tier 4.
- Inline allocation in all tiers.

A generator frame, on the other hand, feels like it satisfies all of the requirements for using JSEnvironmentRecord: you know the set of things that go into it ahead of time and you want accesses to them to be as fast as possible.  I would strongly urge you to use JSEnvironmentRecord.  If you don&apos;t use it, then you&apos;ll have to implement all of those DFG and FTL optimizations a third time, and then you&apos;ll either land it without constant or type inference, or you&apos;ll have to do a ton of work to reimplement those features.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1158081</commentid>
    <comment_count>39</comment_count>
      <attachid>269434</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-01-23 19:33:34 -0800</bug_when>
    <thetext>Comment on attachment 269434
Patch

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

&gt; Source/JavaScriptCore/dfg/DFGClobbersExitState.cpp:60
&gt; +    case ResizeGeneratorLocals:
&gt; +    case SetGeneratorLocal:
&gt; +    case GetGeneratorLocal:
&gt; +        return false;
&gt; +

Really?  Are you saying that it&apos;s valid to re-execute a bytecode operation that was lowered to these nodes?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1158082</commentid>
    <comment_count>40</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-01-23 19:49:45 -0800</bug_when>
    <thetext>Now the other question is how to compile generators.  One approach is to turn save/restore into a sequence of put_to_scope and then get_from_scope operations.  You could do this as a bytecode-&gt;bytecode transform, or you could somehow make &quot;save&quot; and &quot;restore&quot; imply such a sequence.

If you used a bonafide sequence of get_from_scope instructions for restore, then each one would have value profiling.  This is all you&apos;d need to ensure that DFG prediction propagation is happy.

I think that this would be pretty good, but you run the risk that each save and each restore does more work than strictly necessary.  It&apos;s possible that the program will have more live state at save/restore points than what is needed for any particular execution of the generator.  It seems like the generator should load and save properties of the frame only when it needs them.

Another approach would be to do a bytecode analysis that splits bytecode variables into disjoint live ranges, kind of like VariableAccessData, and then checks which of those are live at save/restore.  Any live range that is live at save/restore has all of its uses turned into a load from the frame and all of its defs turned into a store into the frame.  This means that if loc42 is used for a temporary at a save point, then this temporary doesn&apos;t get completely demoted to the heap - it&apos;s most likely only demoted for the uses after the restore and the defs before the save.

I think that so long as this issue is encapsulated inside a phase that transforms the save/restore form into a form that uses put_to_scope/get_from_scope instructions, then it&apos;s fine to have the initial implementation emit a get_from_scope for every live-in-frame local at the restore point and a put_to_scope for each such local at every save.  We can always play with different strategies later!

This approach implies really beefing up the available machinery for editing bytecode - along with all of the necessary renumbering of jump targets and the like.  It&apos;s a fun algorithm to implement, and if you create a nice API for it then we&apos;ll be able to reuse it for other features that benefit from bytecode-&gt;bytecode transformation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1158246</commentid>
    <comment_count>41</comment_count>
      <attachid>269434</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-01-25 00:12:28 -0800</bug_when>
    <thetext>Comment on attachment 269434
Patch

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

Thanks!

&gt;&gt;&gt;&gt; Source/JavaScriptCore/ChangeLog:53
&gt;&gt;&gt;&gt; +            GeneratorFrame by setting it as 0.
&gt;&gt;&gt; 
&gt;&gt;&gt; This sounds like functionality that JSObject already has.  It doesn&apos;t even need to be warned of a resize.  Why can&apos;t you just use JSObject?
&gt;&gt; 
&gt;&gt; It just avoids marking values that is not used anymore.
&gt;&gt; If holding and marking dead (not used anymore) values is OK, we can remove this op.
&gt; 
&gt; We shouldn&apos;t add this optimization until we know that we need it.
&gt; 
&gt; Probably, the way we would do this is to just store undefined into known-dead variables.

OK, dropping this op.

&gt;&gt;&gt;&gt; Source/JavaScriptCore/ChangeLog:58
&gt;&gt;&gt;&gt; +            are correctly propagated beyond the generator frame.
&gt;&gt;&gt; 
&gt;&gt;&gt; How is this different from GetFromScope or GetByOffset?  Why do we need something new?
&gt;&gt; 
&gt;&gt; One advantage of GetGeneratorLocal etc. approach is that we can link SetGeneratorLocal and GetGeneratorLocal with DFGGeneratorLocalData. (This is like a GetLocal / SetLocal&apos;s VariableAccessData).
&gt;&gt; It enables us to transfer predication data from SetGeneratorLocal position to GetGeneratorLocal position in DFGPredictionPropagationPhase.
&gt;&gt; And currently I didn&apos;t, but, we can also do backward propagation with this link.
&gt;&gt; 
&gt;&gt; What do you think of?
&gt; 
&gt; I don&apos;t think any of that is a good idea.
&gt; 
&gt; First of all, I&apos;ve worked super hard for the last three years to steadily eradicate VariableAccessData from the DFG.  I&apos;m surprised that you like it or that you want to add more things like it.  It&apos;s a rotten mess.  We only keep it around because it&apos;s cheaper than SSA conversion, and it closes holes in our value profiling.  But once we convert to SSA in the FTL, we drop VariableAccessData.
&gt; 
&gt; Moreover, the fact that you&apos;re proposing to create this feature in such a way that you need to add new data structures to prediction propagation is troubling.  Prediction propagation is an extremely subtle algorithm.  We don&apos;t want to have to change it in big ways every time we implement a new language feature.  Instead, we want to be able to reduce new language features to existing compiler capabilities so as to minimize the number of DFG IR changes.
&gt; 
&gt; It&apos;s pretty clear to me that for generator properties, you should emit get_from_scope/put_to_scope bytecodes at each point of use rather than doing wholesale storing and loading at resume/save.  Fine-grained accesses would give you detailed type profiling at every load, which would obviate the need for any prediction propagation changes.  You would have no need for any VariableAccessData-like hacks.  All of the optimizations that you&apos;re imagining getting, you would get them for free.
&gt; 
&gt; And if you did add GeneratorLocalData, then I have no idea how you&apos;d propose to make it work in SSA.  SSA drops VariableAccessData because having objects that somehow link live ranges of variables is antithetical to how SSA works.
&gt; 
&gt; Some more notes:
&gt; 
&gt; - If GeneratorLocalData was a good idea, then it would also be a good idea for *any* kind of object allocation.  We need to apply this rule for all features to IR.  It can&apos;t be the case that each new kind of object that people invent gets its own completely novel optimization architecture in the DFG.  If you can think of an optimization to do for your new object kind, then I bet you that this same optimization is either already implemented for other kinds of objects or it&apos;s one that we should implement for all objects.
&gt; 
&gt; - Currently the compiler&apos;s handling of object allocations is powerful enough that all of the optimizations you want to special-case are things you would get for free if you just used some existing object model (either JSObject or activation) and fine-grained loads and stores to the variable properties at every variable use.
&gt; 
&gt; - Don&apos;t worry about backwards propagation.  It&apos;s not sufficiently profitable for us to worry about it too much.  And if we did need to worry about it, we would not implement an optimization that only works for one kind of object.  We&apos;d implement an optimization that worked for accesses to all objects!

Thanks for your clarification!
I modeled GetGeneratorLocal/SetGeneratorLocal&apos;s type prediction part after GetLocal/SetLocal. But reading your descriptions, we should use GetClosureVar/PutClosureVar instead of this.
Reading your description, using GetClosureVar/PutClosureVar covers GetGeneratorLocal&apos;s benefits (type prediction will be provided by value profiling in get_from_scope).
Your suggestion,
1. add transformation bytecode-&gt;bytecode pass to transform op_save/op_resume to seq of ops
2. use GetClosureVar/PutClosureVar
3. use JSLexicalEnvironment
looks fine to me too.

One thing I don&apos;t understand yet is &quot;And if you did add GeneratorLocalData, then I have no idea how you&apos;d propose to make it work in SSA. SSA drops VariableAccessData because having objects that somehow link live ranges of variables is antithetical to how SSA works.&quot; part.
GeneratorLocalData is now just used to transfer type prediction and node flags to linked one and it is done in DFGPredictionPropagationPhase and DFGBackwardPropagationPhase. And GetGeneratorLocal / SetGeneratorLocal does not touch/modify local variables directly. It just did the similar thing to GetClosureVar/PutClosureVar in this patch. So I think SSA is not related to that (as the same to that GetClosureVar/PutClosureVar are not related to SSA). Hmm, maybe I missed something, could you elaborate this?

Anyway, I&apos;ll change the design to follow your suggestion :)

&gt;&gt; Source/JavaScriptCore/dfg/DFGClobbersExitState.cpp:60
&gt;&gt; +
&gt; 
&gt; Really?  Are you saying that it&apos;s valid to re-execute a bytecode operation that was lowered to these nodes?

Yes, op_save and op_resume were idempotent in this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1158254</commentid>
    <comment_count>42</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-01-25 01:21:45 -0800</bug_when>
    <thetext>still writing comments, once returning home, i&apos;ll add it further :D</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1158378</commentid>
    <comment_count>43</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-01-25 10:52:17 -0800</bug_when>
    <thetext>(In reply to comment #38)
&gt; Here are some more notes that might be useful for getting the generator
&gt; object model right.
&gt; 
&gt; Currently we have three primary object models in JSC.  By &quot;primary&quot; I mean
&gt; that they will end up on the hot path of just about any idiomatic JavaScript
&gt; program, and our compilers got to great lengths to make them fast.  I&apos;m only
&gt; considering object models for storing named fields, where the name is
&gt; supplied by the program, and those fields can hold any JS value.
&gt; 
&gt; 1) JSObject
&gt; 2) JSEnvironmentRecord (i.e. what activation uses)
&gt; 3) DirectArguments
&gt; 
&gt; What distinguishes (1) is that it has type inference, constant inference,
&gt; O(1) direct accesses provided that you lay out the structure carefully
&gt; enough.  You risk having to do extra indirections to access properties if
&gt; the structure doesn&apos;t make them inline.  The fact that JSObject has the
&gt; possibility of this kind of pessimisation is partly why we have (2) at all.
&gt; 
&gt; If you know the set of properties ahead of time, you can use (2).  It has
&gt; constant inference, but it does not have type inference (a program point
&gt; that loads from a property in an activation will still have local inference
&gt; to predict what type of values will be loaded there, but unlike JSObject,
&gt; they won&apos;t also get per-property guarantees about the type).  Accesses are
&gt; O(1) and always direct; you don&apos;t have to do anything special to ensure that.
&gt; 
&gt; Finally, we have (3) for sloppy arguments objects.  They are popular enough,
&gt; and have sufficiently magical semantics, that we need a separate object
&gt; model here.  (3) does not have either constant inference or type inference.
&gt; 
&gt; Oddly, we created an object model, (2), for the purpose of improving
&gt; performance over (1).  But right now, we are in this strange situation that
&gt; (1) has a performane feature, type inference, which we still have not ported
&gt; to (2).  That&apos;s really unfortunate and I hope we do it soon.  Neither type
&gt; inference nor constant inference have made it into DirectArguments.  It
&gt; would be harder to add those features there, but not impossible.
&gt; 
&gt; You could argue that having JSEnvironmentRecord be separate from JSObject,
&gt; rather than using JSObject&apos;s object model, is an overall architecture win
&gt; because when you have a JSEnvironmentRecord* it gives you certain guarantees
&gt; that JSObject cannot give you (accesses are direct, properties don&apos;t get
&gt; deleted, there are no accessors, etc).  But from the standpoint of how to
&gt; evolve the VM and add features, it&apos;s really unfortunate that it&apos;s a separate
&gt; object model.  We have implemented constant inference twice now - once for
&gt; JSEnvironmentRecords and then again for JSObjects.  It&apos;s unfortunate that we
&gt; had to spend 2x the time on that feature.  We have only implemented type
&gt; inference once (JSObject), but we will have to implement it a second time
&gt; soon (JSEnvironmentRecord).
&gt; 
&gt; DirectArguments is even sadder than JSEnvironmentRecord, but it probably has
&gt; to be a separate thing because of the crazy semantics.
&gt; 
&gt; Note that right now, both JSObject and JSEnvironmentRecord enjoy the
&gt; following optimizations in DFG and FTL:
&gt; - Local CSE in tier 3 and global CSE in tier 4.
&gt; - Field-name-based alias analysis.
&gt; - Escape analysis in tier 4.
&gt; - Inline allocation in all tiers.
&gt; 
&gt; A generator frame, on the other hand, feels like it satisfies all of the
&gt; requirements for using JSEnvironmentRecord: you know the set of things that
&gt; go into it ahead of time and you want accesses to them to be as fast as
&gt; possible.  I would strongly urge you to use JSEnvironmentRecord.  If you
&gt; don&apos;t use it, then you&apos;ll have to implement all of those DFG and FTL
&gt; optimizations a third time, and then you&apos;ll either land it without constant
&gt; or type inference, or you&apos;ll have to do a ton of work to reimplement those
&gt; features.

Thanks for your really nice description! It&apos;s so helpful.
Your suggestion (using JSEnvironmentRecord in this case) sounds pretty reasonable.

And I think one thing we need take care is that generator also saves temporary locals.
For example, we can write,

(1+ a) + yield b

(1 + a) temporary local will be saved and resumed by generator. Assume that this temporary is `loc42`.
But since this is just a temporary local, this loc42 will be reused for non-related temporary local elsewhere.
So, ideally, we should not use this `loc42` as JSLexicalEnvironment&apos;s field identifier.

But I think we should start from the simplest version. So in the meantime, just using local location as a field name seems OK to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1158380</commentid>
    <comment_count>44</comment_count>
      <attachid>269434</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-01-25 10:54:22 -0800</bug_when>
    <thetext>Comment on attachment 269434
Patch

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

&gt;&gt;&gt;&gt; Source/JavaScriptCore/ChangeLog:48
&gt;&gt;&gt;&gt; +            This just allocates GeneratorFrame.
&gt;&gt;&gt; 
&gt;&gt;&gt; How is this different from allocating an activation?  Why can&apos;t they share the same opcodes and classes?
&gt;&gt;&gt; 
&gt;&gt;&gt; How is this different from allocating a vanilla JS object?  Why can&apos;t you use that?
&gt;&gt; 
&gt;&gt; Good pointing. Linking generator locals can be achieved by GetGeneratorLocal and SetGeneratorLocal.
&gt;&gt; So we can use JSLexicalEnvironment instead of GeneratorFrame.
&gt; 
&gt; Why not just use existing PutClosureVar/GetClosureVar opcodes instead of adding new opcodes?
&gt; 
&gt; Adding new opcodes to DFG IR takes a lot of work.  It also makes the entire compiler harder to work on.  We shouldn&apos;t add new opcodes unless there is a really powerful optimization that this enables.
&gt; 
&gt; I don&apos;t believe that GetGeneratorLocal/SetGeneratorLocal enables any optimizations.

Transformating op_save / op_resume to actual op seq looks reasonable to me. (Like, transforming them to get_from_scope / put_to_scope ops).
It will drop BytecodeAnalysis&apos;s flag, that is fragile.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1158400</commentid>
    <comment_count>45</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-01-25 11:21:39 -0800</bug_when>
    <thetext>(In reply to comment #40)
&gt; Now the other question is how to compile generators.  One approach is to
&gt; turn save/restore into a sequence of put_to_scope and then get_from_scope
&gt; operations.  You could do this as a bytecode-&gt;bytecode transform, or you
&gt; could somehow make &quot;save&quot; and &quot;restore&quot; imply such a sequence.
&gt; 
&gt; If you used a bonafide sequence of get_from_scope instructions for restore,
&gt; then each one would have value profiling.  This is all you&apos;d need to ensure
&gt; that DFG prediction propagation is happy.

It looks reasonable :)

&gt; 
&gt; I think that this would be pretty good, but you run the risk that each save
&gt; and each restore does more work than strictly necessary.  It&apos;s possible that
&gt; the program will have more live state at save/restore points than what is
&gt; needed for any particular execution of the generator.  It seems like the
&gt; generator should load and save properties of the frame only when it needs
&gt; them.

Interesting! 

&gt; 
&gt; Another approach would be to do a bytecode analysis that splits bytecode
&gt; variables into disjoint live ranges, kind of like VariableAccessData, and
&gt; then checks which of those are live at save/restore.  Any live range that is
&gt; live at save/restore has all of its uses turned into a load from the frame
&gt; and all of its defs turned into a store into the frame.  This means that if
&gt; loc42 is used for a temporary at a save point, then this temporary doesn&apos;t
&gt; get completely demoted to the heap - it&apos;s most likely only demoted for the
&gt; uses after the restore and the defs before the save.

Interesting! my understanding is as follows,

1. first, to identify meaningful locals (how can I say...), construct live ranges (should not use loc42 name to construct locals, b/c loc42 will be used elsewhere for non-related temporary local)
2. And then, if the range is live at the save point, making it heap variable; it means that converting use to get_from_scope and def to put_to_scope.

loc42 :    [def] -&gt; [save] -&gt; [use]  [def] -&gt; [use]   [save]
                 range1                   range2
            =&gt; converted to heap      =&gt; not converted
     
&gt; 
&gt; I think that so long as this issue is encapsulated inside a phase that
&gt; transforms the save/restore form into a form that uses
&gt; put_to_scope/get_from_scope instructions, then it&apos;s fine to have the initial
&gt; implementation emit a get_from_scope for every live-in-frame local at the
&gt; restore point and a put_to_scope for each such local at every save.  We can
&gt; always play with different strategies later!
&gt; 
&gt; This approach implies really beefing up the available machinery for editing
&gt; bytecode - along with all of the necessary renumbering of jump targets and
&gt; the like.  It&apos;s a fun algorithm to implement, and if you create a nice API
&gt; for it then we&apos;ll be able to reuse it for other features that benefit from
&gt; bytecode-&gt;bytecode transformation.

It sounds very nice!
OK, I&apos;ll redesign the implementation based on Filip&apos;s suggestions, thank you :D
As a first step, I&apos;ll just implement naive version, that emits get_from_scope/put_to_scope ops for all the live locals at the save/restore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171411</commentid>
    <comment_count>46</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-03-06 04:39:32 -0800</bug_when>
    <thetext>Currently, all the bytecode analysis and modification does not inject new basic blocks. And only generators require the bytecode modification.
So I think it is good first step to introduce the bytecode rewriter; that rewrites some bytecodes and adjusts the jump offsets, but it does not have the functionality to add new jumps and new BB.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1188120</commentid>
    <comment_count>47</comment_count>
      <attachid>277585</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-04-27 21:23:47 -0700</bug_when>
    <thetext>Created attachment 277585
Patch

Rebaseline and start reworking</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1190366</commentid>
    <comment_count>48</comment_count>
      <attachid>278168</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-05-05 09:36:22 -0700</bug_when>
    <thetext>Created attachment 278168
Patch

WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1194592</commentid>
    <comment_count>49</comment_count>
      <attachid>279342</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-05-18 20:14:05 -0700</bug_when>
    <thetext>Created attachment 279342
Patch

WIP: rebaseline. Need to add liveness analysis in UnlinkedCodeBlock phase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1194627</commentid>
    <comment_count>50</comment_count>
      <attachid>279342</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-05-18 21:35:05 -0700</bug_when>
    <thetext>Comment on attachment 279342
Patch

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

&gt; Source/JavaScriptCore/ChangeLog:13
&gt; +        - op_new_generator_frame
&gt; +
&gt; +            Allocate GeneratorFrame in the bytecode instead of allocating it in the op_save.

Are you still going to change this to either JSObjects or JSLexicalEnvironment?

&gt; Source/JavaScriptCore/ChangeLog:25
&gt; +        - op_save
&gt; +
&gt; +            Now BytecodeLiveness analysis and PreciseJumpTarget analysis have 2 modes; Standard and ExtractGeneratorLiveCalleeLocals.
&gt; +            Under ExtractGeneratorLiveCalleeLocals mode, op_save has jump to the merge point. This jump is just used for use-def analysis to extract
&gt; +            live callee locals at the merge point. These live callee locals should be saved and resumed to suspend and resume generators.
&gt; +            The merge point is the point that merging the 2 basic blocks, saving locals to the generator frame and resuming locals from the generator frame.
&gt; +
&gt; +        - op_resume
&gt; +
&gt; +            This retrieves local variable from the generator frame. ExtractGeneratorLiveCalleeLocals analysis will discover live locals at the merge point and record liveness
&gt; +            information to op_save and op_resume. On the basis of this information, op_resume will retrieve saved locals from the generator frame.

I still think that the cleanest way to make this work is to add a bytecode rewriter to JSC: i.e. a thing that allows us to insert or remove bytecode operations and then do a fixup over the jump targets.  This would be something like the bytecode rewriters that people wrote for Java bytecode, like BCEL (https://commons.apache.org/proper/commons-bcel/) and asm (http://asm.ow2.org), but a heck of a lot simpler since our bytecode is much less sophisticated.  Both of those frameworks do this by first making the bytecode object-oriented - one object per bytecode instruction, with a linked list connecting the objects.  I think we want to take a somewhat different approach, probably using something like the DFG::InsertionSet: build up a vector of intended insertions and deletions and then &quot;execute&quot; it at the end, which would allow us to fixup all jump destinations in one go.

If you had this, then you could have the BytecodeGenerator flag UnlinkedCodeBlocks that have op_save/resume, and for those codeblocks, we would immediately run the &quot;generatorification&quot; phase that uses liveness to lower save/resume to sequences of put_to_scope/get_from_scope operations plus the control flow.  After this phase, nobody has to know about generators anymore.

But this immediately reveals a question: is it clear that the generator function has to be a function and not multiple functions?  Why can&apos;t we have a separate function for each resume entrypoint?  This would likely be the most optimal implementation.  That would require &quot;breeding&quot; multiple UnlinkedCodeBlocks as part of generatorification.  Is this feasible according to the spec, or does the spec require the generator to behave as a single function object?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1194893</commentid>
    <comment_count>51</comment_count>
      <attachid>279342</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-05-19 13:11:18 -0700</bug_when>
    <thetext>Comment on attachment 279342
Patch

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

&gt;&gt; Source/JavaScriptCore/ChangeLog:13
&gt;&gt; +            Allocate GeneratorFrame in the bytecode instead of allocating it in the op_save.
&gt; 
&gt; Are you still going to change this to either JSObjects or JSLexicalEnvironment?

Yes! I&apos;m now going to make this JSLexicalEnvironment.
But before that, first, I&apos;m now working on implementing Bytecode rewriting system.

Sorry for my confusing change. This is still WIP, and this changelog comment is not updated yet...

&gt;&gt; Source/JavaScriptCore/ChangeLog:25
&gt;&gt; +            information to op_save and op_resume. On the basis of this information, op_resume will retrieve saved locals from the generator frame.
&gt; 
&gt; I still think that the cleanest way to make this work is to add a bytecode rewriter to JSC: i.e. a thing that allows us to insert or remove bytecode operations and then do a fixup over the jump targets.  This would be something like the bytecode rewriters that people wrote for Java bytecode, like BCEL (https://commons.apache.org/proper/commons-bcel/) and asm (http://asm.ow2.org), but a heck of a lot simpler since our bytecode is much less sophisticated.  Both of those frameworks do this by first making the bytecode object-oriented - one object per bytecode instruction, with a linked list connecting the objects.  I think we want to take a somewhat different approach, probably using something like the DFG::InsertionSet: build up a vector of intended insertions and deletions and then &quot;execute&quot; it at the end, which would allow us to fixup all jump destinations in one go.
&gt; 
&gt; If you had this, then you could have the BytecodeGenerator flag UnlinkedCodeBlocks that have op_save/resume, and for those codeblocks, we would immediately run the &quot;generatorification&quot; phase that uses liveness to lower save/resume to sequences of put_to_scope/get_from_scope operations plus the control flow.  After this phase, nobody has to know about generators anymore.
&gt; 
&gt; But this immediately reveals a question: is it clear that the generator function has to be a function and not multiple functions?  Why can&apos;t we have a separate function for each resume entrypoint?  This would likely be the most optimal implementation.  That would require &quot;breeding&quot; multiple UnlinkedCodeBlocks as part of generatorification.  Is this feasible according to the spec, or does the spec require the generator to behave as a single function object?

Bytecode rewriting seems clean approach.
First, I attempted to create bytecode rewriting as follows,
(1). Construct bytecode operation object (such as BytecodeOperation) as you described. This is similar to DFGNode: it is constructed per bytecode operation (op_get_by_id etc.).
(2). Represent bytecode BasicBlock as the Vector&lt;BytecodeOperation&gt;
(3). And modifying this, and generate the modified bytecode from this graph.

But I think it&apos;s too heavy for &quot;generator&quot; modification... Since we don&apos;t need to modify the jumps of bytecode basic blocks (if we don&apos;t want to discard op_save&apos;s pseudo jumps), insertion set is good enough. That&apos;s why I&apos;m now attempting to introduce BytecodeInsertionSet.h in this patch (not implemented yet, it&apos;s just a stub).
To do so (and to make the generator code ready when linking CodeBlock), this modification should be done when the code is UnlinkedCodeBlock. So now I&apos;m working on changing BytecodeLivenessAnalysis applicable to UnlinkedCodeBlock / CodeBlock. Now I&apos;m considering BytecodeLivenessAnalysis&lt;BytecodeGraph&lt;UnlinkedCodeBlock&gt;&gt; style.
And I&apos;m now considering about applying such change just after BytecodeGenerator::generate. Maybe, I&apos;ll insert some bytecode modification phase after that, and in this phase, if the UnlinkedCodeBlock is generator&apos;s code, we will apply this &quot;generatorification&quot;. By doing so, when linking CodeBlock, the generator code&apos;s JSLexicalEnvironment-based op_save / op_resume is ready. (this will become the sequence of op_put_to_scope* / op_get_from_scope*).

Your last question is interesting. The spec allows us to create the generator function as the group of small functions. The spec requires us to use the same Generator.prototype.next() function, but the suqsequent sequence (such as, how the generator works after Generator.prototype.next() call) is not defined. But is that so efficient compared to the exising switch based implementation? Is the case that receives benefit 

function *() {
   small processings... (should not be long processing. If the processing is long, anyway, this function fragment cannot be inlined)
   yield
   small processings...
   yield
   small processings...
   yield
}

case?

And if we do that, I think the implementation would become the following.
1. First, create this whole function and analyze it.
2. When the execution reach to the resume point (yield), we assign the function that corresponds to this resume point.
3. And when this function is called, we pass the whole function&apos;s information and create the corresponding UnlinkedCodeBlock at that time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1194899</commentid>
    <comment_count>52</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-05-19 13:18:01 -0700</bug_when>
    <thetext>(In reply to comment #51)
&gt; Comment on attachment 279342 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=279342&amp;action=review
&gt; 
&gt; &gt;&gt; Source/JavaScriptCore/ChangeLog:13
&gt; &gt;&gt; +            Allocate GeneratorFrame in the bytecode instead of allocating it in the op_save.
&gt; &gt; 
&gt; &gt; Are you still going to change this to either JSObjects or JSLexicalEnvironment?
&gt; 
&gt; Yes! I&apos;m now going to make this JSLexicalEnvironment.
&gt; But before that, first, I&apos;m now working on implementing Bytecode rewriting
&gt; system.
&gt; 
&gt; Sorry for my confusing change. This is still WIP, and this changelog comment
&gt; is not updated yet...
&gt; 
&gt; &gt;&gt; Source/JavaScriptCore/ChangeLog:25
&gt; &gt;&gt; +            information to op_save and op_resume. On the basis of this information, op_resume will retrieve saved locals from the generator frame.
&gt; &gt; 
&gt; &gt; I still think that the cleanest way to make this work is to add a bytecode rewriter to JSC: i.e. a thing that allows us to insert or remove bytecode operations and then do a fixup over the jump targets.  This would be something like the bytecode rewriters that people wrote for Java bytecode, like BCEL (https://commons.apache.org/proper/commons-bcel/) and asm (http://asm.ow2.org), but a heck of a lot simpler since our bytecode is much less sophisticated.  Both of those frameworks do this by first making the bytecode object-oriented - one object per bytecode instruction, with a linked list connecting the objects.  I think we want to take a somewhat different approach, probably using something like the DFG::InsertionSet: build up a vector of intended insertions and deletions and then &quot;execute&quot; it at the end, which would allow us to fixup all jump destinations in one go.
&gt; &gt; 
&gt; &gt; If you had this, then you could have the BytecodeGenerator flag UnlinkedCodeBlocks that have op_save/resume, and for those codeblocks, we would immediately run the &quot;generatorification&quot; phase that uses liveness to lower save/resume to sequences of put_to_scope/get_from_scope operations plus the control flow.  After this phase, nobody has to know about generators anymore.
&gt; &gt; 
&gt; &gt; But this immediately reveals a question: is it clear that the generator function has to be a function and not multiple functions?  Why can&apos;t we have a separate function for each resume entrypoint?  This would likely be the most optimal implementation.  That would require &quot;breeding&quot; multiple UnlinkedCodeBlocks as part of generatorification.  Is this feasible according to the spec, or does the spec require the generator to behave as a single function object?
&gt; 
&gt; Bytecode rewriting seems clean approach.
&gt; First, I attempted to create bytecode rewriting as follows,
&gt; (1). Construct bytecode operation object (such as BytecodeOperation) as you
&gt; described. This is similar to DFGNode: it is constructed per bytecode
&gt; operation (op_get_by_id etc.).
&gt; (2). Represent bytecode BasicBlock as the Vector&lt;BytecodeOperation&gt;
&gt; (3). And modifying this, and generate the modified bytecode from this graph.
&gt; 
&gt; But I think it&apos;s too heavy for &quot;generator&quot; modification... Since we don&apos;t
&gt; need to modify the jumps of bytecode basic blocks (if we don&apos;t want to
&gt; discard op_save&apos;s pseudo jumps), insertion set is good enough. 

I think you&apos;ll still need to adjust the jump targets.  Inserting code between a jump and the label it jumps to means that the jump&apos;s &quot;offset&quot; will have to be increased.  I think that this should be easy to do if you have an insertion set, though.

&gt; That&apos;s why
&gt; I&apos;m now attempting to introduce BytecodeInsertionSet.h in this patch (not
&gt; implemented yet, it&apos;s just a stub).
&gt; To do so (and to make the generator code ready when linking CodeBlock), this
&gt; modification should be done when the code is UnlinkedCodeBlock. So now I&apos;m
&gt; working on changing BytecodeLivenessAnalysis applicable to UnlinkedCodeBlock
&gt; / CodeBlock. Now I&apos;m considering
&gt; BytecodeLivenessAnalysis&lt;BytecodeGraph&lt;UnlinkedCodeBlock&gt;&gt; style.
&gt; And I&apos;m now considering about applying such change just after
&gt; BytecodeGenerator::generate. Maybe, I&apos;ll insert some bytecode modification
&gt; phase after that, and in this phase, if the UnlinkedCodeBlock is generator&apos;s
&gt; code, we will apply this &quot;generatorification&quot;. By doing so, when linking
&gt; CodeBlock, the generator code&apos;s JSLexicalEnvironment-based op_save /
&gt; op_resume is ready. (this will become the sequence of op_put_to_scope* /
&gt; op_get_from_scope*).
&gt; 
&gt; Your last question is interesting. The spec allows us to create the
&gt; generator function as the group of small functions. The spec requires us to
&gt; use the same Generator.prototype.next() function, but the suqsequent
&gt; sequence (such as, how the generator works after Generator.prototype.next()
&gt; call) is not defined. 

Interesting!  In that case, your current approach is optimal.  I don&apos;t think that breeding a new function for each case would not help at all.

&gt; But is that so efficient compared to the exising
&gt; switch based implementation? Is the case that receives benefit 
&gt; 
&gt; function *() {
&gt;    small processings... (should not be long processing. If the processing is
&gt; long, anyway, this function fragment cannot be inlined)
&gt;    yield
&gt;    small processings...
&gt;    yield
&gt;    small processings...
&gt;    yield
&gt; }
&gt; 
&gt; case?
&gt; 
&gt; And if we do that, I think the implementation would become the following.
&gt; 1. First, create this whole function and analyze it.
&gt; 2. When the execution reach to the resume point (yield), we assign the
&gt; function that corresponds to this resume point.
&gt; 3. And when this function is called, we pass the whole function&apos;s
&gt; information and create the corresponding UnlinkedCodeBlock at that time.

Right.  But I think that this would still lead to a virtual dispatch.  The VM isn&apos;t going to do virtual dispatch any better than a switch statement.  So, having the generator function have a switch statement is optimal.  I&apos;m assuming that this is what you do now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1194949</commentid>
    <comment_count>53</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-05-19 14:12:55 -0700</bug_when>
    <thetext>(In reply to comment #52)
&gt; (In reply to comment #51)
&gt; &gt; Comment on attachment 279342 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=279342&amp;action=review
&gt; &gt; 
&gt; &gt; &gt;&gt; Source/JavaScriptCore/ChangeLog:13
&gt; &gt; &gt;&gt; +            Allocate GeneratorFrame in the bytecode instead of allocating it in the op_save.
&gt; &gt; &gt; 
&gt; &gt; &gt; Are you still going to change this to either JSObjects or JSLexicalEnvironment?
&gt; &gt; 
&gt; &gt; Yes! I&apos;m now going to make this JSLexicalEnvironment.
&gt; &gt; But before that, first, I&apos;m now working on implementing Bytecode rewriting
&gt; &gt; system.
&gt; &gt; 
&gt; &gt; Sorry for my confusing change. This is still WIP, and this changelog comment
&gt; &gt; is not updated yet...
&gt; &gt; 
&gt; &gt; &gt;&gt; Source/JavaScriptCore/ChangeLog:25
&gt; &gt; &gt;&gt; +            information to op_save and op_resume. On the basis of this information, op_resume will retrieve saved locals from the generator frame.
&gt; &gt; &gt; 
&gt; &gt; &gt; I still think that the cleanest way to make this work is to add a bytecode rewriter to JSC: i.e. a thing that allows us to insert or remove bytecode operations and then do a fixup over the jump targets.  This would be something like the bytecode rewriters that people wrote for Java bytecode, like BCEL (https://commons.apache.org/proper/commons-bcel/) and asm (http://asm.ow2.org), but a heck of a lot simpler since our bytecode is much less sophisticated.  Both of those frameworks do this by first making the bytecode object-oriented - one object per bytecode instruction, with a linked list connecting the objects.  I think we want to take a somewhat different approach, probably using something like the DFG::InsertionSet: build up a vector of intended insertions and deletions and then &quot;execute&quot; it at the end, which would allow us to fixup all jump destinations in one go.
&gt; &gt; &gt; 
&gt; &gt; &gt; If you had this, then you could have the BytecodeGenerator flag UnlinkedCodeBlocks that have op_save/resume, and for those codeblocks, we would immediately run the &quot;generatorification&quot; phase that uses liveness to lower save/resume to sequences of put_to_scope/get_from_scope operations plus the control flow.  After this phase, nobody has to know about generators anymore.
&gt; &gt; &gt; 
&gt; &gt; &gt; But this immediately reveals a question: is it clear that the generator function has to be a function and not multiple functions?  Why can&apos;t we have a separate function for each resume entrypoint?  This would likely be the most optimal implementation.  That would require &quot;breeding&quot; multiple UnlinkedCodeBlocks as part of generatorification.  Is this feasible according to the spec, or does the spec require the generator to behave as a single function object?
&gt; &gt; 
&gt; &gt; Bytecode rewriting seems clean approach.
&gt; &gt; First, I attempted to create bytecode rewriting as follows,
&gt; &gt; (1). Construct bytecode operation object (such as BytecodeOperation) as you
&gt; &gt; described. This is similar to DFGNode: it is constructed per bytecode
&gt; &gt; operation (op_get_by_id etc.).
&gt; &gt; (2). Represent bytecode BasicBlock as the Vector&lt;BytecodeOperation&gt;
&gt; &gt; (3). And modifying this, and generate the modified bytecode from this graph.
&gt; &gt; 
&gt; &gt; But I think it&apos;s too heavy for &quot;generator&quot; modification... Since we don&apos;t
&gt; &gt; need to modify the jumps of bytecode basic blocks (if we don&apos;t want to
&gt; &gt; discard op_save&apos;s pseudo jumps), insertion set is good enough. 
&gt; 
&gt; I think you&apos;ll still need to adjust the jump targets.  Inserting code
&gt; between a jump and the label it jumps to means that the jump&apos;s &quot;offset&quot; will
&gt; have to be increased.  I think that this should be easy to do if you have an
&gt; insertion set, though.

Yeah, right, adjusting the offset when inserting the bytecodes is OK. What I thought is that we don&apos;t need to create / drop basic blocks, that makes insertion set enough.

&gt; 
&gt; &gt; That&apos;s why
&gt; &gt; I&apos;m now attempting to introduce BytecodeInsertionSet.h in this patch (not
&gt; &gt; implemented yet, it&apos;s just a stub).
&gt; &gt; To do so (and to make the generator code ready when linking CodeBlock), this
&gt; &gt; modification should be done when the code is UnlinkedCodeBlock. So now I&apos;m
&gt; &gt; working on changing BytecodeLivenessAnalysis applicable to UnlinkedCodeBlock
&gt; &gt; / CodeBlock. Now I&apos;m considering
&gt; &gt; BytecodeLivenessAnalysis&lt;BytecodeGraph&lt;UnlinkedCodeBlock&gt;&gt; style.
&gt; &gt; And I&apos;m now considering about applying such change just after
&gt; &gt; BytecodeGenerator::generate. Maybe, I&apos;ll insert some bytecode modification
&gt; &gt; phase after that, and in this phase, if the UnlinkedCodeBlock is generator&apos;s
&gt; &gt; code, we will apply this &quot;generatorification&quot;. By doing so, when linking
&gt; &gt; CodeBlock, the generator code&apos;s JSLexicalEnvironment-based op_save /
&gt; &gt; op_resume is ready. (this will become the sequence of op_put_to_scope* /
&gt; &gt; op_get_from_scope*).
&gt; &gt; 
&gt; &gt; Your last question is interesting. The spec allows us to create the
&gt; &gt; generator function as the group of small functions. The spec requires us to
&gt; &gt; use the same Generator.prototype.next() function, but the suqsequent
&gt; &gt; sequence (such as, how the generator works after Generator.prototype.next()
&gt; &gt; call) is not defined. 
&gt; 
&gt; Interesting!  In that case, your current approach is optimal.  I don&apos;t think
&gt; that breeding a new function for each case would not help at all.
&gt; 
&gt; &gt; But is that so efficient compared to the exising
&gt; &gt; switch based implementation? Is the case that receives benefit 
&gt; &gt; 
&gt; &gt; function *() {
&gt; &gt;    small processings... (should not be long processing. If the processing is
&gt; &gt; long, anyway, this function fragment cannot be inlined)
&gt; &gt;    yield
&gt; &gt;    small processings...
&gt; &gt;    yield
&gt; &gt;    small processings...
&gt; &gt;    yield
&gt; &gt; }
&gt; &gt; 
&gt; &gt; case?
&gt; &gt; 
&gt; &gt; And if we do that, I think the implementation would become the following.
&gt; &gt; 1. First, create this whole function and analyze it.
&gt; &gt; 2. When the execution reach to the resume point (yield), we assign the
&gt; &gt; function that corresponds to this resume point.
&gt; &gt; 3. And when this function is called, we pass the whole function&apos;s
&gt; &gt; information and create the corresponding UnlinkedCodeBlock at that time.
&gt; 
&gt; Right.  But I think that this would still lead to a virtual dispatch.  The
&gt; VM isn&apos;t going to do virtual dispatch any better than a switch statement. 
&gt; So, having the generator function have a switch statement is optimal.  I&apos;m
&gt; assuming that this is what you do now.

OK. Maybe, by using the group of the functions, we can remove one virtual dispatching point.

The current.
Generator.prototype.next() (This function is required to be the same in all the generators)&apos;s dispatching =&gt; each generator function =&gt; switch

Your proposal.
Generator.prototype.next()&apos;s dispatching =&gt; each function fragment.

But I think &quot;Generator.prototype.next()&apos;s dispatching =&gt; each generator function&quot; can have the chance to optimize with inlining if we can figure out that the generator object is JSConstant.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1194951</commentid>
    <comment_count>54</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-05-19 14:17:41 -0700</bug_when>
    <thetext>(In reply to comment #53)
&gt; (In reply to comment #52)
&gt; &gt; (In reply to comment #51)
&gt; &gt; &gt; Comment on attachment 279342 [details]
&gt; &gt; &gt; Patch
&gt; &gt; &gt; 
&gt; &gt; &gt; View in context:
&gt; &gt; &gt; https://bugs.webkit.org/attachment.cgi?id=279342&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt;&gt; Source/JavaScriptCore/ChangeLog:13
&gt; &gt; &gt; &gt;&gt; +            Allocate GeneratorFrame in the bytecode instead of allocating it in the op_save.
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Are you still going to change this to either JSObjects or JSLexicalEnvironment?
&gt; &gt; &gt; 
&gt; &gt; &gt; Yes! I&apos;m now going to make this JSLexicalEnvironment.
&gt; &gt; &gt; But before that, first, I&apos;m now working on implementing Bytecode rewriting
&gt; &gt; &gt; system.
&gt; &gt; &gt; 
&gt; &gt; &gt; Sorry for my confusing change. This is still WIP, and this changelog comment
&gt; &gt; &gt; is not updated yet...
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt;&gt; Source/JavaScriptCore/ChangeLog:25
&gt; &gt; &gt; &gt;&gt; +            information to op_save and op_resume. On the basis of this information, op_resume will retrieve saved locals from the generator frame.
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; I still think that the cleanest way to make this work is to add a bytecode rewriter to JSC: i.e. a thing that allows us to insert or remove bytecode operations and then do a fixup over the jump targets.  This would be something like the bytecode rewriters that people wrote for Java bytecode, like BCEL (https://commons.apache.org/proper/commons-bcel/) and asm (http://asm.ow2.org), but a heck of a lot simpler since our bytecode is much less sophisticated.  Both of those frameworks do this by first making the bytecode object-oriented - one object per bytecode instruction, with a linked list connecting the objects.  I think we want to take a somewhat different approach, probably using something like the DFG::InsertionSet: build up a vector of intended insertions and deletions and then &quot;execute&quot; it at the end, which would allow us to fixup all jump destinations in one go.
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; If you had this, then you could have the BytecodeGenerator flag UnlinkedCodeBlocks that have op_save/resume, and for those codeblocks, we would immediately run the &quot;generatorification&quot; phase that uses liveness to lower save/resume to sequences of put_to_scope/get_from_scope operations plus the control flow.  After this phase, nobody has to know about generators anymore.
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; But this immediately reveals a question: is it clear that the generator function has to be a function and not multiple functions?  Why can&apos;t we have a separate function for each resume entrypoint?  This would likely be the most optimal implementation.  That would require &quot;breeding&quot; multiple UnlinkedCodeBlocks as part of generatorification.  Is this feasible according to the spec, or does the spec require the generator to behave as a single function object?
&gt; &gt; &gt; 
&gt; &gt; &gt; Bytecode rewriting seems clean approach.
&gt; &gt; &gt; First, I attempted to create bytecode rewriting as follows,
&gt; &gt; &gt; (1). Construct bytecode operation object (such as BytecodeOperation) as you
&gt; &gt; &gt; described. This is similar to DFGNode: it is constructed per bytecode
&gt; &gt; &gt; operation (op_get_by_id etc.).
&gt; &gt; &gt; (2). Represent bytecode BasicBlock as the Vector&lt;BytecodeOperation&gt;
&gt; &gt; &gt; (3). And modifying this, and generate the modified bytecode from this graph.
&gt; &gt; &gt; 
&gt; &gt; &gt; But I think it&apos;s too heavy for &quot;generator&quot; modification... Since we don&apos;t
&gt; &gt; &gt; need to modify the jumps of bytecode basic blocks (if we don&apos;t want to
&gt; &gt; &gt; discard op_save&apos;s pseudo jumps), insertion set is good enough. 
&gt; &gt; 
&gt; &gt; I think you&apos;ll still need to adjust the jump targets.  Inserting code
&gt; &gt; between a jump and the label it jumps to means that the jump&apos;s &quot;offset&quot; will
&gt; &gt; have to be increased.  I think that this should be easy to do if you have an
&gt; &gt; insertion set, though.
&gt; 
&gt; Yeah, right, adjusting the offset when inserting the bytecodes is OK. What I
&gt; thought is that we don&apos;t need to create / drop basic blocks, that makes
&gt; insertion set enough.
&gt; 
&gt; &gt; 
&gt; &gt; &gt; That&apos;s why
&gt; &gt; &gt; I&apos;m now attempting to introduce BytecodeInsertionSet.h in this patch (not
&gt; &gt; &gt; implemented yet, it&apos;s just a stub).
&gt; &gt; &gt; To do so (and to make the generator code ready when linking CodeBlock), this
&gt; &gt; &gt; modification should be done when the code is UnlinkedCodeBlock. So now I&apos;m
&gt; &gt; &gt; working on changing BytecodeLivenessAnalysis applicable to UnlinkedCodeBlock
&gt; &gt; &gt; / CodeBlock. Now I&apos;m considering
&gt; &gt; &gt; BytecodeLivenessAnalysis&lt;BytecodeGraph&lt;UnlinkedCodeBlock&gt;&gt; style.
&gt; &gt; &gt; And I&apos;m now considering about applying such change just after
&gt; &gt; &gt; BytecodeGenerator::generate. Maybe, I&apos;ll insert some bytecode modification
&gt; &gt; &gt; phase after that, and in this phase, if the UnlinkedCodeBlock is generator&apos;s
&gt; &gt; &gt; code, we will apply this &quot;generatorification&quot;. By doing so, when linking
&gt; &gt; &gt; CodeBlock, the generator code&apos;s JSLexicalEnvironment-based op_save /
&gt; &gt; &gt; op_resume is ready. (this will become the sequence of op_put_to_scope* /
&gt; &gt; &gt; op_get_from_scope*).
&gt; &gt; &gt; 
&gt; &gt; &gt; Your last question is interesting. The spec allows us to create the
&gt; &gt; &gt; generator function as the group of small functions. The spec requires us to
&gt; &gt; &gt; use the same Generator.prototype.next() function, but the suqsequent
&gt; &gt; &gt; sequence (such as, how the generator works after Generator.prototype.next()
&gt; &gt; &gt; call) is not defined. 
&gt; &gt; 
&gt; &gt; Interesting!  In that case, your current approach is optimal.  I don&apos;t think
&gt; &gt; that breeding a new function for each case would not help at all.
&gt; &gt; 
&gt; &gt; &gt; But is that so efficient compared to the exising
&gt; &gt; &gt; switch based implementation? Is the case that receives benefit 
&gt; &gt; &gt; 
&gt; &gt; &gt; function *() {
&gt; &gt; &gt;    small processings... (should not be long processing. If the processing is
&gt; &gt; &gt; long, anyway, this function fragment cannot be inlined)
&gt; &gt; &gt;    yield
&gt; &gt; &gt;    small processings...
&gt; &gt; &gt;    yield
&gt; &gt; &gt;    small processings...
&gt; &gt; &gt;    yield
&gt; &gt; &gt; }
&gt; &gt; &gt; 
&gt; &gt; &gt; case?
&gt; &gt; &gt; 
&gt; &gt; &gt; And if we do that, I think the implementation would become the following.
&gt; &gt; &gt; 1. First, create this whole function and analyze it.
&gt; &gt; &gt; 2. When the execution reach to the resume point (yield), we assign the
&gt; &gt; &gt; function that corresponds to this resume point.
&gt; &gt; &gt; 3. And when this function is called, we pass the whole function&apos;s
&gt; &gt; &gt; information and create the corresponding UnlinkedCodeBlock at that time.
&gt; &gt; 
&gt; &gt; Right.  But I think that this would still lead to a virtual dispatch.  The
&gt; &gt; VM isn&apos;t going to do virtual dispatch any better than a switch statement. 
&gt; &gt; So, having the generator function have a switch statement is optimal.  I&apos;m
&gt; &gt; assuming that this is what you do now.
&gt; 
&gt; OK. Maybe, by using the group of the functions, we can remove one virtual
&gt; dispatching point.
&gt; 
&gt; The current.
&gt; Generator.prototype.next() (This function is required to be the same in all
&gt; the generators)&apos;s dispatching =&gt; each generator function =&gt; switch
&gt; 
&gt; Your proposal.
&gt; Generator.prototype.next()&apos;s dispatching =&gt; each function fragment.
&gt; 
&gt; But I think &quot;Generator.prototype.next()&apos;s dispatching =&gt; each generator
&gt; function&quot; can have the chance to optimize with inlining if we can figure out
&gt; that the generator object is JSConstant.

Aha!  OK, now I understand it even better.  Splitting a generator into multiple functions is definitely the way to go.  Then loading from the generator frame is just like loading your arguments, and storing back to it at the end is just like populating a returned tuple (if you return a struct in C the best the compiler can do is have the caller pass in the address of where to put the struct and the callee returns the struct by storing to this address).  This would be a better approach.  It would be cool if JSC had the fastest implementation of generators, so it&apos;s worth spending a good deal of time thinking about what the best approach would look like.

Do you think it&apos;s worth it to try to rework towards this approach now?  It might be cheaper than finishing the current implementation and then reworking it, but I&apos;ll let you make the call.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1194970</commentid>
    <comment_count>55</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2016-05-19 14:38:43 -0700</bug_when>
    <thetext>Is there a risk that dispatch to more than one target function will harm inlining? At the limit, it would be nice to inline generators, so that you could write iterators as generators without paying a high cost.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1194980</commentid>
    <comment_count>56</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-05-19 14:51:14 -0700</bug_when>
    <thetext>(In reply to comment #54)
&gt; Aha!  OK, now I understand it even better.  Splitting a generator into
&gt; multiple functions is definitely the way to go.  Then loading from the
&gt; generator frame is just like loading your arguments, and storing back to it
&gt; at the end is just like populating a returned tuple (if you return a struct
&gt; in C the best the compiler can do is have the caller pass in the address of
&gt; where to put the struct and the callee returns the struct by storing to this
&gt; address).  This would be a better approach.  It would be cool if JSC had the
&gt; fastest implementation of generators, so it&apos;s worth spending a good deal of
&gt; time thinking about what the best approach would look like.
&gt; 
&gt; Do you think it&apos;s worth it to try to rework towards this approach now?  It
&gt; might be cheaper than finishing the current implementation and then
&gt; reworking it, but I&apos;ll let you make the call.

Yes! Making JSC&apos;s generator super faster than the others is very nice thing, and I would like to choose the fastest one!
So, before doing it, I would like to share and discuss one concern about performance with you. I&apos;ll note about that.

The current implementation (simplified one)

function next(generator)
{
    // dispatching site. (CallSite)
    let result = generator.@body(generator, generator.@status);
    return result;
}

function body(generator, status)
{
    switch (status)
    {
        ...
        generator.@status = updatedStatus;
        return value;
    }
}

And fragmented version,

function next(generator)
{
    // dispatching site. (CallSite)
    let result = generator.@body(generator);
    return result;
}

function body1(generator)
{
    ...
    generator.@body = body2;
    return value;
}

function body2(generator)
{
    ...
}


My concern is about inlining. Generator can be called by for-of loops. And inlining when doing this would be super beneficial.

for (let value of generator()) {
    ...
}

This calls Generator.prototype.next() repeatedly. At that case, if we take the current version, and the generator is figured out that is JSConstant during this iterations, we can retrieve the body function from JSConstant generator and perform inlining whole the callees (I&apos;m not sure this can be done in the current ToT, but I believe that using pure get_by_id in next function can make us implementing it)

But, the fragmented function version, its dispatching causes megamorphic call site in next() function. Considering the case that there is many kind of generators, in this case, this call site has too many call variants. This is the same in the current version, but in the current version, we have the chance to determine one possible function by using the constant generator and `generator.@body` lookup (And if we get one possible function, we have the chance to inline it. DFGByteCodeParser::refineStatistically allow us to do so.) But in this fragmented function version, `generator.@body` has also many variants and I think we cannot determine the target of inlining.

This is my concern, and I would like to ask you about what you think of.
And maybe, I misunderstand many things. And please point them when you find.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1200336</commentid>
    <comment_count>57</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-06-07 22:50:53 -0700</bug_when>
    <thetext>Ping?

Because of the above reason, in the meantime, I&apos;m now planning to go with the switch based implementation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1200337</commentid>
    <comment_count>58</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-06-07 22:54:01 -0700</bug_when>
    <thetext>(In reply to comment #56)
&gt; (In reply to comment #54)
&gt; &gt; Aha!  OK, now I understand it even better.  Splitting a generator into
&gt; &gt; multiple functions is definitely the way to go.  Then loading from the
&gt; &gt; generator frame is just like loading your arguments, and storing back to it
&gt; &gt; at the end is just like populating a returned tuple (if you return a struct
&gt; &gt; in C the best the compiler can do is have the caller pass in the address of
&gt; &gt; where to put the struct and the callee returns the struct by storing to this
&gt; &gt; address).  This would be a better approach.  It would be cool if JSC had the
&gt; &gt; fastest implementation of generators, so it&apos;s worth spending a good deal of
&gt; &gt; time thinking about what the best approach would look like.
&gt; &gt; 
&gt; &gt; Do you think it&apos;s worth it to try to rework towards this approach now?  It
&gt; &gt; might be cheaper than finishing the current implementation and then
&gt; &gt; reworking it, but I&apos;ll let you make the call.
&gt; 
&gt; Yes! Making JSC&apos;s generator super faster than the others is very nice thing,
&gt; and I would like to choose the fastest one!
&gt; So, before doing it, I would like to share and discuss one concern about
&gt; performance with you. I&apos;ll note about that.
&gt; 
&gt; The current implementation (simplified one)
&gt; 
&gt; function next(generator)
&gt; {
&gt;     // dispatching site. (CallSite)
&gt;     let result = generator.@body(generator, generator.@status);
&gt;     return result;
&gt; }
&gt; 
&gt; function body(generator, status)
&gt; {
&gt;     switch (status)
&gt;     {
&gt;         ...
&gt;         generator.@status = updatedStatus;
&gt;         return value;
&gt;     }
&gt; }
&gt; 
&gt; And fragmented version,
&gt; 
&gt; function next(generator)
&gt; {
&gt;     // dispatching site. (CallSite)
&gt;     let result = generator.@body(generator);
&gt;     return result;
&gt; }
&gt; 
&gt; function body1(generator)
&gt; {
&gt;     ...
&gt;     generator.@body = body2;
&gt;     return value;
&gt; }
&gt; 
&gt; function body2(generator)
&gt; {
&gt;     ...
&gt; }
&gt; 
&gt; 
&gt; My concern is about inlining. Generator can be called by for-of loops. And
&gt; inlining when doing this would be super beneficial.
&gt; 
&gt; for (let value of generator()) {
&gt;     ...
&gt; }
&gt; 
&gt; This calls Generator.prototype.next() repeatedly. At that case, if we take
&gt; the current version, and the generator is figured out that is JSConstant
&gt; during this iterations, we can retrieve the body function from JSConstant
&gt; generator and perform inlining whole the callees (I&apos;m not sure this can be
&gt; done in the current ToT, but I believe that using pure get_by_id in next
&gt; function can make us implementing it)
&gt; 
&gt; But, the fragmented function version, its dispatching causes megamorphic
&gt; call site in next() function. Considering the case that there is many kind
&gt; of generators, in this case, this call site has too many call variants. This
&gt; is the same in the current version, but in the current version, we have the
&gt; chance to determine one possible function by using the constant generator
&gt; and `generator.@body` lookup (And if we get one possible function, we have
&gt; the chance to inline it. DFGByteCodeParser::refineStatistically allow us to
&gt; do so.) But in this fragmented function version, `generator.@body` has also
&gt; many variants and I think we cannot determine the target of inlining.
&gt; 
&gt; This is my concern, and I would like to ask you about what you think of.
&gt; And maybe, I misunderstand many things. And please point them when you find.

I don&apos;t think this is a valid concern.  I believe that virtual dispatch on a next call is going to exhibit higher performance than a switch statement because:

- If the switch statement gets large, then it won&apos;t get inlined.

- If the next() call is polymorphic, it will still be inlined so long as the total size of the inlinees is smaller than the inlining size limit.

Therefore, inlining will happen in exactly the same cases regardless.  But if it doesn&apos;t happen, then the switch approach is strictly worse: first you pay the price for a call and then you pay the price for a switch, as opposed to having the call do the switch for you.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1200338</commentid>
    <comment_count>59</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-06-07 22:55:02 -0700</bug_when>
    <thetext>(In reply to comment #57)
&gt; Ping?
&gt; 
&gt; Because of the above reason, in the meantime, I&apos;m now planning to go with
&gt; the switch based implementation.

Sorry for not responding. :-(  I sometimes need to being pinged on e-mail if I really need to comment on something.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1200381</commentid>
    <comment_count>60</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-06-08 01:16:15 -0700</bug_when>
    <thetext>(In reply to comment #58)
&gt; 
&gt; I don&apos;t think this is a valid concern.  I believe that virtual dispatch on a
&gt; next call is going to exhibit higher performance than a switch statement
&gt; because:
&gt; 
&gt; - If the switch statement gets large, then it won&apos;t get inlined.
&gt; 
&gt; - If the next() call is polymorphic, it will still be inlined so long as the
&gt; total size of the inlinees is smaller than the inlining size limit.
&gt; 
&gt; Therefore, inlining will happen in exactly the same cases regardless.  But
&gt; if it doesn&apos;t happen, then the switch approach is strictly worse: first you
&gt; pay the price for a call and then you pay the price for a switch, as opposed
&gt; to having the call do the switch for you.

Thanks.
The number of the call variants of the next() function&apos;s dispatcher becomes many in both implementations if there are many kinds of generators. But I thought that we can have a chance to retrieve one possible inlinee from this many call variants by using refineStatistically() in the switch case (in the current ToT implementation, it&apos;s not possible).

But maybe, the number of the call variants depends on the benchmark (how to use generators), and maybe, before becoming super large, callsite will be cleared by GC&apos;s weak visiting. So if this becomes a problem, we can revisit the design.

And, using switch based implementation makes the function larger, avoiding the inlining.

Currently, I&apos;m considering the following rough design.

1. First, creating UnlinkedCodeBlock for the whole generator code. suspend marker opcode is inserted. (Maybe, suspend becomes simple jump. to split basic blocks)
2. Perform liveness analysis and store liveness info into suspend marker.
3. When creating the function fragment (CodeBlock linking phase), we retrieve the BB graph from the above unlinked code block, those BBs are dominated from the target suspend BB. And create the partial function.

The above is the simplest one, I think the above one is good for the first implementation currently.
Several interesting changes can be considered,

if there&apos;s a function like,

function *gen()
{
    for (...) {
       yield;
    }
    
    super long code!
}

This will produce 2 fragmented function,

function g1() {
    if (...) {
       // suspend
       return;
    }

    super long code!
}

and

function g2() {
    // resume
    increment;
    if (...) {
       // suspend
       return;
    }

    super long code!
}

the above functions can be reduced by using the tail calls.

function g1() {
    if (...) {
       // suspend
       return;
    }
    return mergePoint();
}

function g2() {
    // resume
    increment;
    if (...) {
       // suspend
       return;
    }
    return mergePoint();
}

function mergePoint()
{
    super long code!
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1200407</commentid>
    <comment_count>61</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-06-08 03:36:44 -0700</bug_when>
    <thetext>(In reply to comment #59)
&gt; (In reply to comment #57)
&gt; &gt; Ping?
&gt; &gt; 
&gt; &gt; Because of the above reason, in the meantime, I&apos;m now planning to go with
&gt; &gt; the switch based implementation.
&gt; 
&gt; Sorry for not responding. :-(  I sometimes need to being pinged on e-mail if
&gt; I really need to comment on something.

No probelm. I&apos;ll mail when I need your comment :D</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1200439</commentid>
    <comment_count>62</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-06-08 07:12:54 -0700</bug_when>
    <thetext>(In reply to comment #60)
&gt; (In reply to comment #58)
&gt; &gt; 
&gt; &gt; I don&apos;t think this is a valid concern.  I believe that virtual dispatch on a
&gt; &gt; next call is going to exhibit higher performance than a switch statement
&gt; &gt; because:
&gt; &gt; 
&gt; &gt; - If the switch statement gets large, then it won&apos;t get inlined.
&gt; &gt; 
&gt; &gt; - If the next() call is polymorphic, it will still be inlined so long as the
&gt; &gt; total size of the inlinees is smaller than the inlining size limit.
&gt; &gt; 
&gt; &gt; Therefore, inlining will happen in exactly the same cases regardless.  But
&gt; &gt; if it doesn&apos;t happen, then the switch approach is strictly worse: first you
&gt; &gt; pay the price for a call and then you pay the price for a switch, as opposed
&gt; &gt; to having the call do the switch for you.
&gt; 
&gt; Thanks.
&gt; The number of the call variants of the next() function&apos;s dispatcher becomes
&gt; many in both implementations if there are many kinds of generators. But I
&gt; thought that we can have a chance to retrieve one possible inlinee from this
&gt; many call variants by using refineStatistically() in the switch case (in the
&gt; current ToT implementation, it&apos;s not possible).
&gt; 
&gt; But maybe, the number of the call variants depends on the benchmark (how to
&gt; use generators), and maybe, before becoming super large, callsite will be
&gt; cleared by GC&apos;s weak visiting. So if this becomes a problem, we can revisit
&gt; the design.
&gt; 
&gt; And, using switch based implementation makes the function larger, avoiding
&gt; the inlining.
&gt; 
&gt; Currently, I&apos;m considering the following rough design.
&gt; 
&gt; 1. First, creating UnlinkedCodeBlock for the whole generator code. suspend
&gt; marker opcode is inserted. (Maybe, suspend becomes simple jump. to split
&gt; basic blocks)
&gt; 2. Perform liveness analysis and store liveness info into suspend marker.
&gt; 3. When creating the function fragment (CodeBlock linking phase), we
&gt; retrieve the BB graph from the above unlinked code block, those BBs are
&gt; dominated from the target suspend BB. And create the partial function.

Note that the property you want is reachability, not dominance. 

&gt; 
&gt; The above is the simplest one, I think the above one is good for the first
&gt; implementation currently.
&gt; Several interesting changes can be considered,
&gt; 
&gt; if there&apos;s a function like,
&gt; 
&gt; function *gen()
&gt; {
&gt;     for (...) {
&gt;        yield;
&gt;     }
&gt;     
&gt;     super long code!
&gt; }
&gt; 
&gt; This will produce 2 fragmented function,
&gt; 
&gt; function g1() {
&gt;     if (...) {
&gt;        // suspend
&gt;        return;
&gt;     }
&gt; 
&gt;     super long code!
&gt; }
&gt; 
&gt; and
&gt; 
&gt; function g2() {
&gt;     // resume
&gt;     increment;
&gt;     if (...) {
&gt;        // suspend
&gt;        return;
&gt;     }
&gt; 
&gt;     super long code!
&gt; }
&gt; 
&gt; the above functions can be reduced by using the tail calls.
&gt; 
&gt; function g1() {
&gt;     if (...) {
&gt;        // suspend
&gt;        return;
&gt;     }
&gt;     return mergePoint();
&gt; }
&gt; 
&gt; function g2() {
&gt;     // resume
&gt;     increment;
&gt;     if (...) {
&gt;        // suspend
&gt;        return;
&gt;     }
&gt;     return mergePoint();
&gt; }
&gt; 
&gt; function mergePoint()
&gt; {
&gt;     super long code!
&gt; }

Intereating. duplicating super long code is definitely worth avoiding. Do you have N algorithm in mind for identifying the mergePoint?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1200447</commentid>
    <comment_count>63</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-06-08 08:05:09 -0700</bug_when>
    <thetext>(In reply to comment #62)
&gt; (In reply to comment #60)
&gt; &gt; (In reply to comment #58)
&gt; &gt; &gt; 
&gt; &gt; &gt; I don&apos;t think this is a valid concern.  I believe that virtual dispatch on a
&gt; &gt; &gt; next call is going to exhibit higher performance than a switch statement
&gt; &gt; &gt; because:
&gt; &gt; &gt; 
&gt; &gt; &gt; - If the switch statement gets large, then it won&apos;t get inlined.
&gt; &gt; &gt; 
&gt; &gt; &gt; - If the next() call is polymorphic, it will still be inlined so long as the
&gt; &gt; &gt; total size of the inlinees is smaller than the inlining size limit.
&gt; &gt; &gt; 
&gt; &gt; &gt; Therefore, inlining will happen in exactly the same cases regardless.  But
&gt; &gt; &gt; if it doesn&apos;t happen, then the switch approach is strictly worse: first you
&gt; &gt; &gt; pay the price for a call and then you pay the price for a switch, as opposed
&gt; &gt; &gt; to having the call do the switch for you.
&gt; &gt; 
&gt; &gt; Thanks.
&gt; &gt; The number of the call variants of the next() function&apos;s dispatcher becomes
&gt; &gt; many in both implementations if there are many kinds of generators. But I
&gt; &gt; thought that we can have a chance to retrieve one possible inlinee from this
&gt; &gt; many call variants by using refineStatistically() in the switch case (in the
&gt; &gt; current ToT implementation, it&apos;s not possible).
&gt; &gt; 
&gt; &gt; But maybe, the number of the call variants depends on the benchmark (how to
&gt; &gt; use generators), and maybe, before becoming super large, callsite will be
&gt; &gt; cleared by GC&apos;s weak visiting. So if this becomes a problem, we can revisit
&gt; &gt; the design.
&gt; &gt; 
&gt; &gt; And, using switch based implementation makes the function larger, avoiding
&gt; &gt; the inlining.
&gt; &gt; 
&gt; &gt; Currently, I&apos;m considering the following rough design.
&gt; &gt; 
&gt; &gt; 1. First, creating UnlinkedCodeBlock for the whole generator code. suspend
&gt; &gt; marker opcode is inserted. (Maybe, suspend becomes simple jump. to split
&gt; &gt; basic blocks)
&gt; &gt; 2. Perform liveness analysis and store liveness info into suspend marker.
&gt; &gt; 3. When creating the function fragment (CodeBlock linking phase), we
&gt; &gt; retrieve the BB graph from the above unlinked code block, those BBs are
&gt; &gt; dominated from the target suspend BB. And create the partial function.
&gt; 
&gt; Note that the property you want is reachability, not dominance. 

Oops, right.

&gt; 
&gt; &gt; 
&gt; &gt; The above is the simplest one, I think the above one is good for the first
&gt; &gt; implementation currently.
&gt; &gt; Several interesting changes can be considered,
&gt; &gt; 
&gt; &gt; if there&apos;s a function like,
&gt; &gt; 
&gt; &gt; function *gen()
&gt; &gt; {
&gt; &gt;     for (...) {
&gt; &gt;        yield;
&gt; &gt;     }
&gt; &gt;     
&gt; &gt;     super long code!
&gt; &gt; }
&gt; &gt; 
&gt; &gt; This will produce 2 fragmented function,
&gt; &gt; 
&gt; &gt; function g1() {
&gt; &gt;     if (...) {
&gt; &gt;        // suspend
&gt; &gt;        return;
&gt; &gt;     }
&gt; &gt; 
&gt; &gt;     super long code!
&gt; &gt; }
&gt; &gt; 
&gt; &gt; and
&gt; &gt; 
&gt; &gt; function g2() {
&gt; &gt;     // resume
&gt; &gt;     increment;
&gt; &gt;     if (...) {
&gt; &gt;        // suspend
&gt; &gt;        return;
&gt; &gt;     }
&gt; &gt; 
&gt; &gt;     super long code!
&gt; &gt; }
&gt; &gt; 
&gt; &gt; the above functions can be reduced by using the tail calls.
&gt; &gt; 
&gt; &gt; function g1() {
&gt; &gt;     if (...) {
&gt; &gt;        // suspend
&gt; &gt;        return;
&gt; &gt;     }
&gt; &gt;     return mergePoint();
&gt; &gt; }
&gt; &gt; 
&gt; &gt; function g2() {
&gt; &gt;     // resume
&gt; &gt;     increment;
&gt; &gt;     if (...) {
&gt; &gt;        // suspend
&gt; &gt;        return;
&gt; &gt;     }
&gt; &gt;     return mergePoint();
&gt; &gt; }
&gt; &gt; 
&gt; &gt; function mergePoint()
&gt; &gt; {
&gt; &gt;     super long code!
&gt; &gt; }
&gt; 
&gt; Intereating. duplicating super long code is definitely worth avoiding. Do
&gt; you have N algorithm in mind for identifying the mergePoint?

The super simple idea I&apos;ve come up to is the following,

1. first, we calculate the reachablility of each BB from the suspending BBs and entry BB 
2. we investigate the edges, and if the reachability of the src BB is different from the reachability of the dst BB, this edge should be represented as a tail call jump to the function. Mark the dst BB as an entry to the new function. And for this new entry BB, we additionally perform 1 and 2 repeatedly

Maybe, it takes much time tough.
https://drive.google.com/file/d/177tgP4pZgE7I68L2McYbA3GpUzjwK98z-w/view?usp=sharing
https://drive.google.com/file/d/1V1tseE3MQrEg0Cemq0WpG5bR0KO0N889dQ/view?usp=sharing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1200448</commentid>
    <comment_count>64</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-06-08 08:10:14 -0700</bug_when>
    <thetext>(In reply to comment #63)
&gt; 
&gt; Maybe, it takes much time tough.
&gt; https://drive.google.com/file/d/177tgP4pZgE7I68L2McYbA3GpUzjwK98z-w/
&gt; view?usp=sharing
&gt; https://drive.google.com/file/d/1V1tseE3MQrEg0Cemq0WpG5bR0KO0N889dQ/
&gt; view?usp=sharing

/tough/though/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1200459</commentid>
    <comment_count>65</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-06-08 09:00:21 -0700</bug_when>
    <thetext>Like this. (Currently, not considered deeply yet)

// functionEntryPoint is the entry BB of this whole function.
// resumeN is the BB where generator will resume.
generatorEntries = Set([ functionEntryPoint, resume1, resume2, resume3, ... resumeN ])
generatorizeTasks = [ functionEntryPoint, resume1, resume2, resume3, ... resumeN ]
while (!generatorizeTasks.isEmpty()) {
    entry = generatorizeTasks.take();

    reachabilityTasks = [ entry ];
    entry.markReachableFrom(entry);
    while (!reachablityTasks.isEmpty()) {
        node = reachabilityTasks.take();
        for (successor of node.successors()) {
            if (!successor.isReachableFrom(entry)) {
                successor.markReachableFrom(entry);
                reachabilityTasks.append(successor);

                if (successor.reachabilitySet != node.reachabilitySet) {
                    if (!generatorEntries.contain(successor)) {
                        // This is the new entry to the new function.
                        generatorEntries.add(successor);
                        generatorizeTasks.append(successor);
                    }
                }
            }
        }
    }
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1200465</commentid>
    <comment_count>66</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-06-08 09:23:48 -0700</bug_when>
    <thetext>(In reply to comment #65)
&gt; Like this. (Currently, not considered deeply yet)
&gt; 
&gt; // functionEntryPoint is the entry BB of this whole function.
&gt; // resumeN is the BB where generator will resume.
&gt; generatorEntries = Set([ functionEntryPoint, resume1, resume2, resume3, ...
&gt; resumeN ])
&gt; generatorizeTasks = [ functionEntryPoint, resume1, resume2, resume3, ...
&gt; resumeN ]
&gt; while (!generatorizeTasks.isEmpty()) {
&gt;     entry = generatorizeTasks.take();
&gt; 
&gt;     reachabilityTasks = [ entry ];
&gt;     entry.markReachableFrom(entry);
&gt;     while (!reachablityTasks.isEmpty()) {
&gt;         node = reachabilityTasks.take();
&gt;         for (successor of node.successors()) {
&gt;             if (!successor.isReachableFrom(entry)) {
&gt;                 successor.markReachableFrom(entry);
&gt;                 reachabilityTasks.append(successor);
&gt; 
&gt;                 if (successor.reachabilitySet != node.reachabilitySet) {
&gt;                     if (!generatorEntries.contain(successor)) {
&gt;                         // This is the new entry to the new function.
&gt;                         generatorEntries.add(successor);
&gt;                         generatorizeTasks.append(successor);
&gt;                     }
&gt;                 }
&gt;             }
&gt;         }
&gt;     }
&gt; }

I just realized that we are trying super hard to invent multiple entry points. If a JSC CodeBlock could have a vector of entry points where each entry point was a different bytecode offset, then your generator lowering could use this. Imagine if you could have SideEntryExecutable, which pointed to another FunctionExecutable and just acted as a proxy for calls into that function at a different bytecode entry point. Then you would repoint the next function at different entry point functions, which had different SideEntryExecutables that all shared the same underlying ScriptExecutable. 

This would save us from having the switch dispatch problem. It would also save us from code duplication. And there wouldn&apos;t be any tail call overhead. 

The easiest incremental first step is to use your original switch lowering, and the later replace the switch with the multiple entry points. Saam and I were talking about multiple entry points for solving other problems, so probably we will eventually have the infrastructure to do this. 

I started thinking about this once I realized what the duplication would mean for some obvious code patterns. This would have quadratic explosion:

If (a)
    Yield
If (b)
    Yield
If (c)
    Yield
...

By the way if you did want to go with the merge point approach, I think that the most precise algorithm would be iterated dominance frontiers, like for picking Phis.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1200508</commentid>
    <comment_count>67</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-06-08 11:13:10 -0700</bug_when>
    <thetext>(In reply to comment #66)
&gt; 
&gt; I just realized that we are trying super hard to invent multiple entry
&gt; points. If a JSC CodeBlock could have a vector of entry points where each
&gt; entry point was a different bytecode offset, then your generator lowering
&gt; could use this. Imagine if you could have SideEntryExecutable, which pointed
&gt; to another FunctionExecutable and just acted as a proxy for calls into that
&gt; function at a different bytecode entry point. Then you would repoint the
&gt; next function at different entry point functions, which had different
&gt; SideEntryExecutables that all shared the same underlying ScriptExecutable. 

That sounds great.

&gt; 
&gt; This would save us from having the switch dispatch problem. It would also
&gt; save us from code duplication. And there wouldn&apos;t be any tail call overhead. 

Yeah, nice. Still, one cons compared to the fragmented func ver is...
fragmented ver has the chance to make the generator code into small ones,
but I think it&apos;s ok. It is natural that a large generator code is represeted
as a large function.

&gt; The easiest incremental first step is to use your original switch lowering,
&gt; and the later replace the switch with the multiple entry points. Saam and I
&gt; were talking about multiple entry points for solving other problems, so
&gt; probably we will eventually have the infrastructure to do this. 

Make sense. So I&apos;ll go with switch based implementation first.

&gt; 
&gt; I started thinking about this once I realized what the duplication would
&gt; mean for some obvious code patterns. This would have quadratic explosion:
&gt; 
&gt; If (a)
&gt;     Yield
&gt; If (b)
&gt;     Yield
&gt; If (c)
&gt;     Yield
&gt; ...
&gt; 
&gt; By the way if you did want to go with the merge point approach, I think that
&gt; the most precise algorithm would be iterated dominance frontiers, like for
&gt; picking Phis.

Oh, right! Nodes we should treat them as entry points are `(function-entry U resume-points) U DF+(function-entry U resume-points)`,
since the newly created entry points themselves are the entries to the functions as the same to the function-entry and theresume-points.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1207522</commentid>
    <comment_count>68</comment_count>
      <attachid>282667</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-07-03 12:50:29 -0700</bug_when>
    <thetext>Created attachment 282667
Patch

WIP: Just move generatorification code to unlinked code block phase. It still uses the old op_save / op_resume impls. We will drop op_save / op_resume related code and introduce transformation that changes op_save / op_resume to scope operations. And currently, there are many duplicate code. We will clean up</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1207654</commentid>
    <comment_count>69</comment_count>
      <attachid>282707</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-07-04 04:48:24 -0700</bug_when>
    <thetext>Created attachment 282707
Patch

WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1207663</commentid>
    <comment_count>70</comment_count>
      <attachid>282713</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-07-04 06:33:14 -0700</bug_when>
    <thetext>Created attachment 282713
Patch

WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1207674</commentid>
    <comment_count>71</comment_count>
      <attachid>282719</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-07-04 07:47:59 -0700</bug_when>
    <thetext>Created attachment 282719
Patch

WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1209618</commentid>
    <comment_count>72</comment_count>
      <attachid>283310</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-07-11 05:14:50 -0700</bug_when>
    <thetext>Created attachment 283310
Patch

WIP: not refactored yet</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1209619</commentid>
    <comment_count>73</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-11 05:16:51 -0700</bug_when>
    <thetext>Attachment 283310 did not pass style-queue:


ERROR: Source/JavaScriptCore/bytecode/BytecodeGeneratorification.cpp:31:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/bytecode/BytecodeGeneratorification.cpp:176:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/BytecodeGeneratorification.cpp:183:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/BytecodeGeneratorification.cpp:201:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/BytecodeGeneratorification.cpp:205:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/BytecodeGeneratorification.cpp:342:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/bytecode/BytecodeGeneratorification.cpp:343:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/bytecode/BytecodeGeneratorification.cpp:344:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/bytecode/BytecodeGeneratorification.cpp:347:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/bytecode/BytecodeGeneratorification.cpp:354:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/bytecode/BytecodeGeneratorification.cpp:355:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/bytecode/BytecodeGeneratorification.cpp:356:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/bytecode/BytecodeGeneratorification.cpp:358:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/bytecode/BytecodeGeneratorification.cpp:359:  One space before end of line comments  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/bytecode/BytecodeGeneratorification.cpp:360:  One space before end of line comments  [whitespace/comments] [5]
Total errors found: 15 in 37 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1210127</commentid>
    <comment_count>74</comment_count>
      <attachid>283438</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-07-12 12:21:22 -0700</bug_when>
    <thetext>Created attachment 283438
Patch

WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1211344</commentid>
    <comment_count>75</comment_count>
      <attachid>283739</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-07-14 23:33:33 -0700</bug_when>
    <thetext>Created attachment 283739
Patch

WIP: OK, it works as expected! Still doing refactoring and testing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1211384</commentid>
    <comment_count>76</comment_count>
      <attachid>283753</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-07-15 04:47:46 -0700</bug_when>
    <thetext>Created attachment 283753
Patch

WIP: adding OS X changes (xcodeproj)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1211385</commentid>
    <comment_count>77</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-15 04:52:54 -0700</bug_when>
    <thetext>Attachment 283753 did not pass style-queue:


ERROR: Source/JavaScriptCore/bytecode/BytecodeBasicBlock.cpp:122:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/BytecodeLivenessAnalysis.cpp:77:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/BytecodeLivenessAnalysis.cpp:84:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/BytecodeGeneratorification.cpp:142:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/BytecodeGeneratorification.cpp:149:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/BytecodeGeneratorification.cpp:177:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/BytecodeGeneratorification.cpp:181:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/BytecodeGeneratorification.cpp:278:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 8 in 38 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1211393</commentid>
    <comment_count>78</comment_count>
      <attachid>283753</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2016-07-15 06:01:03 -0700</bug_when>
    <thetext>Comment on attachment 283753
Patch

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

New failing tests:
storage/indexeddb/modern/blob-cursor.html
js/regress/generator-sunspider-access-nsieve.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1211394</commentid>
    <comment_count>79</comment_count>
      <attachid>283754</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2016-07-15 06:01:09 -0700</bug_when>
    <thetext>Created attachment 283754
Archive of layout-test-results from ews112 for mac-yosemite

The attached test failures were seen while running run-webkit-tests on the mac-debug-ews.
Bot: ews112  Port: mac-yosemite  Platform: Mac OS X 10.10.5</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1211434</commentid>
    <comment_count>80</comment_count>
      <attachid>283765</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-07-15 09:36:51 -0700</bug_when>
    <thetext>Created attachment 283765
Patch

WIP: Update, more and more refactoring</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1211441</commentid>
    <comment_count>81</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-15 09:45:22 -0700</bug_when>
    <thetext>Attachment 283765 did not pass style-queue:


ERROR: Source/JavaScriptCore/bytecode/BytecodeBasicBlock.cpp:121:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/BytecodeLivenessAnalysis.cpp:77:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/BytecodeLivenessAnalysis.cpp:84:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/BytecodeGeneratorification.cpp:144:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/BytecodeGeneratorification.cpp:151:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/BytecodeGeneratorification.cpp:179:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/BytecodeGeneratorification.cpp:183:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/BytecodeGeneratorification.cpp:280:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 8 in 38 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1212325</commentid>
    <comment_count>82</comment_count>
      <attachid>283991</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-07-19 04:24:47 -0700</bug_when>
    <thetext>Created attachment 283991
Patch

WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1212326</commentid>
    <comment_count>83</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-19 04:27:38 -0700</bug_when>
    <thetext>Attachment 283991 did not pass style-queue:


ERROR: Source/JavaScriptCore/bytecode/BytecodeBasicBlock.cpp:115:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/BytecodeBasicBlock.cpp:120:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/BytecodeLivenessAnalysis.cpp:69:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/BytecodeLivenessAnalysis.cpp:76:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/BytecodeGeneratorification.cpp:138:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/BytecodeGeneratorification.cpp:145:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/BytecodeGeneratorification.cpp:173:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/BytecodeGeneratorification.cpp:177:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/BytecodeGeneratorification.cpp:275:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 9 in 42 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1212350</commentid>
    <comment_count>84</comment_count>
      <attachid>284001</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-07-19 06:46:11 -0700</bug_when>
    <thetext>Created attachment 284001
Patch

OK, ready for review. EWS may fail to build it since Bytecodes.h is not updated while generate-bytecode-files is updated</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1212352</commentid>
    <comment_count>85</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-19 06:49:25 -0700</bug_when>
    <thetext>Attachment 284001 did not pass style-queue:


ERROR: Source/JavaScriptCore/bytecode/BytecodeBasicBlock.cpp:115:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/BytecodeBasicBlock.cpp:120:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/BytecodeLivenessAnalysis.cpp:69:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/BytecodeLivenessAnalysis.cpp:76:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/BytecodeGeneratorification.cpp:207:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/BytecodeGeneratorification.cpp:214:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/BytecodeGeneratorification.cpp:242:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/BytecodeGeneratorification.cpp:246:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/BytecodeGeneratorification.cpp:418:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 9 in 42 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1212399</commentid>
    <comment_count>86</comment_count>
      <attachid>284001</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-07-19 09:48:42 -0700</bug_when>
    <thetext>Comment on attachment 284001
Patch

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

I have a couple of grammar fixes in the Changelog but it looks like EWS is sad. I&apos;ll take deeper look later.

&gt; Source/JavaScriptCore/ChangeLog:29
&gt; +        3. Second, we perform the liveness analysis again, but at that time, we explicitly ignore the edges between the save points and the merge points. This analysis,

but at that time =&gt; but this time.

&gt; Source/JavaScriptCore/ChangeLog:30
&gt; +           referred to as the resumed variables analysis, extracts the liveness at merge point. This liveness information only considers the reachable blocks from the

at each merge point.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1212710</commentid>
    <comment_count>87</comment_count>
      <attachid>284001</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-07-20 05:34:30 -0700</bug_when>
    <thetext>Comment on attachment 284001
Patch

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

Super thanks! EWS may fail to build it since Bytecodes.h is not updated while generate-bytecode-files is updated...

&gt;&gt; Source/JavaScriptCore/ChangeLog:29
&gt;&gt; +        3. Second, we perform the liveness analysis again, but at that time, we explicitly ignore the edges between the save points and the merge points. This analysis,
&gt; 
&gt; but at that time =&gt; but this time.

Fixed.

&gt;&gt; Source/JavaScriptCore/ChangeLog:30
&gt;&gt; +           referred to as the resumed variables analysis, extracts the liveness at merge point. This liveness information only considers the reachable blocks from the
&gt; 
&gt; at each merge point.

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1212712</commentid>
    <comment_count>88</comment_count>
      <attachid>284097</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-07-20 05:36:07 -0700</bug_when>
    <thetext>Created attachment 284097
Patch

Fixed according to the review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1212713</commentid>
    <comment_count>89</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-20 05:37:43 -0700</bug_when>
    <thetext>Attachment 284097 did not pass style-queue:


ERROR: Source/JavaScriptCore/bytecode/BytecodeBasicBlock.cpp:115:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/BytecodeBasicBlock.cpp:120:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/BytecodeLivenessAnalysis.cpp:69:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/BytecodeLivenessAnalysis.cpp:76:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/BytecodeGeneratorification.cpp:207:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/BytecodeGeneratorification.cpp:214:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/BytecodeGeneratorification.cpp:242:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/BytecodeGeneratorification.cpp:246:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/BytecodeGeneratorification.cpp:418:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 9 in 42 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1213119</commentid>
    <comment_count>90</comment_count>
      <attachid>284211</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-07-21 06:38:46 -0700</bug_when>
    <thetext>Created attachment 284211
Patch

Update Bytecodes.h dependency</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1213120</commentid>
    <comment_count>91</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-21 06:41:00 -0700</bug_when>
    <thetext>Attachment 284211 did not pass style-queue:


ERROR: Source/JavaScriptCore/bytecode/BytecodeBasicBlock.cpp:115:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/BytecodeBasicBlock.cpp:120:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/BytecodeLivenessAnalysis.cpp:69:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/BytecodeLivenessAnalysis.cpp:76:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/BytecodeGeneratorification.cpp:207:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/BytecodeGeneratorification.cpp:214:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/BytecodeGeneratorification.cpp:242:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/BytecodeGeneratorification.cpp:246:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/BytecodeGeneratorification.cpp:418:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 9 in 42 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1213121</commentid>
    <comment_count>92</comment_count>
      <attachid>284212</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-07-21 06:48:04 -0700</bug_when>
    <thetext>Created attachment 284212
Patch

Update Bytecodes.h dependency part 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1213122</commentid>
    <comment_count>93</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-07-21 06:55:57 -0700</bug_when>
    <thetext>Ah, OK. Bytecodes.h is not updated sometimes b/c generate-bytecode-files checks SHA1, but at that time, only input files are checked.
In this patch, we changed generate-bytecode-files itself. So, this is not included in SHA1 hash.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1213124</commentid>
    <comment_count>94</comment_count>
      <attachid>284213</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-07-21 07:07:10 -0700</bug_when>
    <thetext>Created attachment 284213
Patch

Update Bytecodes.h dependency</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1213125</commentid>
    <comment_count>95</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-21 07:09:44 -0700</bug_when>
    <thetext>Attachment 284213 did not pass style-queue:


ERROR: Source/JavaScriptCore/bytecode/BytecodeBasicBlock.cpp:115:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/BytecodeBasicBlock.cpp:120:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/BytecodeLivenessAnalysis.cpp:69:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/BytecodeLivenessAnalysis.cpp:76:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/BytecodeGeneratorification.cpp:207:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/BytecodeGeneratorification.cpp:214:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/BytecodeGeneratorification.cpp:242:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/BytecodeGeneratorification.cpp:246:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/BytecodeGeneratorification.cpp:418:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 9 in 42 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1213126</commentid>
    <comment_count>96</comment_count>
      <attachid>284213</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-07-21 07:10:39 -0700</bug_when>
    <thetext>Comment on attachment 284213
Patch

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

Maybe, it pass EWS. I&apos;ve just add generate-bytecode-files itself to the sha1 of the output.

&gt; Source/JavaScriptCore/bytecode/BytecodeGraph.h:27
&gt; +#define BytecodeGraph_h

I&apos;ll update this to #pragma once.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1213129</commentid>
    <comment_count>97</comment_count>
      <attachid>284215</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-07-21 07:57:10 -0700</bug_when>
    <thetext>Created attachment 284215
Patch

Windows build fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1213130</commentid>
    <comment_count>98</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-21 08:00:20 -0700</bug_when>
    <thetext>Attachment 284215 did not pass style-queue:


ERROR: Source/JavaScriptCore/bytecode/BytecodeBasicBlock.cpp:115:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/BytecodeBasicBlock.cpp:120:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/BytecodeLivenessAnalysis.cpp:69:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/BytecodeLivenessAnalysis.cpp:76:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/BytecodeGeneratorification.cpp:207:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/BytecodeGeneratorification.cpp:214:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/BytecodeGeneratorification.cpp:242:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/BytecodeGeneratorification.cpp:246:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/BytecodeGeneratorification.cpp:418:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 9 in 42 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1213134</commentid>
    <comment_count>99</comment_count>
      <attachid>284215</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-07-21 08:27:40 -0700</bug_when>
    <thetext>Comment on attachment 284215
Patch

Oh, i&apos;ll fix the patch slightly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1213178</commentid>
    <comment_count>100</comment_count>
      <attachid>284224</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-07-21 10:26:11 -0700</bug_when>
    <thetext>Created attachment 284224
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1213180</commentid>
    <comment_count>101</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-21 10:28:39 -0700</bug_when>
    <thetext>Attachment 284224 did not pass style-queue:


ERROR: Source/JavaScriptCore/bytecode/BytecodeBasicBlock.cpp:115:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/BytecodeBasicBlock.cpp:120:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/BytecodeLivenessAnalysis.cpp:69:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/BytecodeLivenessAnalysis.cpp:76:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/BytecodeGeneratorification.cpp:210:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/BytecodeGeneratorification.cpp:215:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/BytecodeGeneratorification.cpp:224:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/BytecodeGeneratorification.cpp:231:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/BytecodeGeneratorification.cpp:398:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 9 in 42 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214170</commentid>
    <comment_count>102</comment_count>
      <attachid>284482</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-07-25 07:40:15 -0700</bug_when>
    <thetext>Created attachment 284482
Patch

rebaseline</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214172</commentid>
    <comment_count>103</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-25 07:43:41 -0700</bug_when>
    <thetext>Attachment 284482 did not pass style-queue:


ERROR: Source/JavaScriptCore/bytecode/BytecodeBasicBlock.cpp:115:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/BytecodeBasicBlock.cpp:120:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/BytecodeLivenessAnalysis.cpp:69:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/BytecodeLivenessAnalysis.cpp:76:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/BytecodeGeneratorification.cpp:211:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/BytecodeGeneratorification.cpp:216:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/BytecodeGeneratorification.cpp:225:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/BytecodeGeneratorification.cpp:232:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/BytecodeGeneratorification.cpp:399:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 9 in 43 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214174</commentid>
    <comment_count>104</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-07-25 07:46:02 -0700</bug_when>
    <thetext>Ping? :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214176</commentid>
    <comment_count>105</comment_count>
      <attachid>284482</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-07-25 07:48:01 -0700</bug_when>
    <thetext>Comment on attachment 284482
Patch

I&apos;ll perform slight clean up. Soon, I&apos;ll upload the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214190</commentid>
    <comment_count>106</comment_count>
      <attachid>284487</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-07-25 08:50:55 -0700</bug_when>
    <thetext>Created attachment 284487
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214194</commentid>
    <comment_count>107</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-25 08:54:31 -0700</bug_when>
    <thetext>Attachment 284487 did not pass style-queue:


ERROR: Source/JavaScriptCore/bytecode/BytecodeBasicBlock.cpp:115:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/BytecodeBasicBlock.cpp:120:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/BytecodeGeneratorification.cpp:292:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/BytecodeLivenessAnalysisInlines.h:91:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/BytecodeLivenessAnalysisInlines.h:98:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/BytecodeLivenessAnalysisInlines.h:118:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/BytecodeLivenessAnalysisInlines.h:122:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 7 in 43 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214196</commentid>
    <comment_count>108</comment_count>
      <attachid>284488</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-07-25 08:57:05 -0700</bug_when>
    <thetext>Created attachment 284488
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214197</commentid>
    <comment_count>109</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-25 08:59:40 -0700</bug_when>
    <thetext>Attachment 284488 did not pass style-queue:


ERROR: Source/JavaScriptCore/bytecode/BytecodeBasicBlock.cpp:115:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/BytecodeBasicBlock.cpp:120:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/BytecodeGeneratorification.cpp:291:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/BytecodeLivenessAnalysisInlines.h:91:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/BytecodeLivenessAnalysisInlines.h:98:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/BytecodeLivenessAnalysisInlines.h:118:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/BytecodeLivenessAnalysisInlines.h:122:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 7 in 43 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214199</commentid>
    <comment_count>110</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-07-25 09:05:00 -0700</bug_when>
    <thetext>OK, ping? :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1216836</commentid>
    <comment_count>111</comment_count>
      <attachid>284488</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-08-03 01:01:28 -0700</bug_when>
    <thetext>Comment on attachment 284488
Patch

I started reading this. I&apos;ll continue tmrw.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1218428</commentid>
    <comment_count>112</comment_count>
      <attachid>284488</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-08-07 17:54:04 -0700</bug_when>
    <thetext>Comment on attachment 284488
Patch

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

I&apos;ll keep reviewing. I&apos;m still trying to fully understand what all the code does, but I&apos;ve reviewed some of it, so I&apos;m just posting initial comments

&gt; Source/JavaScriptCore/ChangeLog:30
&gt; +           At op_save, we should save the variables that (i) will be used after the merge point AND (ii) the newly defined variables from the previous op_resume. So, we propagate

If a variable is both def&apos;d and killed between merge points, will we not save it?

&gt; Source/JavaScriptCore/ChangeLog:40
&gt; +           the variables that is saved conservatively in (3).

Why is this needed if the variable is dead?

&gt; Source/JavaScriptCore/bytecode/BytecodeGeneratorification.cpp:212
&gt; +        // This produces the conservative results for the question, &quot;which variables should be saved and resumed?&quot;.

What causes it to be conservative?

&gt; Source/JavaScriptCore/bytecode/BytecodeGeneratorification.cpp:238
&gt; +                changed |= outDidChange;

Could this cause the fix point to end early?
Is is possible that processing the block would cause the &quot;in&quot; to change, but that we won&apos;t ever go over it again visiting that block as a successor?
Maybe we also need to see if the block&apos;s &quot;in&quot; changes?

&gt; Source/JavaScriptCore/bytecode/BytecodeGeneratorification.cpp:267
&gt; +        if (opcodeID == op_resume) {

Are there not some registers before the switch statement that jumps to the op_resume that def things of value?

&gt; Source/JavaScriptCore/bytecode/BytecodeGeneratorification.cpp:330
&gt; +        //   no-jumps &amp; no r1 defs.

No jumps?

&gt; Source/JavaScriptCore/bytecode/BytecodeGeneratorification.cpp:336
&gt; +        // We consider the basic blocks within the try range are considered as the implicit predecessors of the handlers.

By handler do you mean catch handler?

&gt; Source/JavaScriptCore/bytecode/BytecodeGeneratorification.cpp:342
&gt; +        // This is a little bit conservative: the try range may not cover all the basic block. But since the out set status at
&gt; +        // the tail of the basic block is always larger than the out set status in the middle of the basic blocks, this does not

What&apos;s the &quot;out set status&quot; here?
Is this live-out data? If so, I don&apos;t think this assertion holds. There may be more live variables in the middle of a block then at the tail, right? What would stop that from being true?

&gt; Source/JavaScriptCore/bytecode/BytecodeGeneratorification.cpp:354
&gt; +                FastBitVector predecessors;

I wonder if B3&apos;s IndexSet is a more apt data structure?

&gt; Source/JavaScriptCore/bytecode/BytecodeGeneratorification.cpp:384
&gt; +        do {

So this analysis is just computing the defs that reach any block, correct? (except if the predecessor block contained a save)

&gt; Source/JavaScriptCore/bytecode/BytecodeGeneratorification.cpp:391
&gt; +                    // Merge the out set of the incoming predecessors unless the current block starts
&gt; +                    // with the merge point and the predecessor ends with the save point.

I see that the code is doing this, the comment should state *why* it&apos;s doing this.

&gt; Source/JavaScriptCore/bytecode/BytecodeGeneratorification.cpp:393
&gt; +                    if (!(mergeBlock &amp;&amp; m_generatorification.isSaveBlock(predecessor)))
&gt; +                        newIn.merge(predecessor-&gt;out());

I have a question, lets say that mergeBlock is true.
Isn&apos;t this block only reachable through two paths? The &quot;save&quot; path and the &quot;resume&quot; path.
We don&apos;t account for the &quot;save&quot; path, and the &quot;resume&quot; path will clear all the bits. So shouldn&apos;t
newIn just be the empty set here?

&gt; Source/JavaScriptCore/bytecode/BytecodeGeneratorification.cpp:453
&gt; +            // Let&apos;s declare the uses based on the saved variables analysis information.

I see that the code is doing this. It&apos;d be good for the comment to state why, etc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1218487</commentid>
    <comment_count>113</comment_count>
      <attachid>284488</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-08-08 07:53:12 -0700</bug_when>
    <thetext>Comment on attachment 284488
Patch

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

Thanks! I&apos;ll upload the patch with the corresponding fixes.

&gt;&gt; Source/JavaScriptCore/ChangeLog:30
&gt;&gt; +           At op_save, we should save the variables that (i) will be used after the merge point AND (ii) the newly defined variables from the previous op_resume. So, we propagate
&gt; 
&gt; If a variable is both def&apos;d and killed between merge points, will we not save it?

Yes, we don&apos;t save it. This is handled by taking bit and &amp; with (2) and (3) results. (2) bit mask tell us which variable is live. And if the variable is killed, (2) does not include it.
It is safe since we already figured out that this variable won&apos;t be used since (2) tell us it is killed.

&gt;&gt; Source/JavaScriptCore/ChangeLog:40
&gt;&gt; +           the variables that is saved conservatively in (3).
&gt; 
&gt; Why is this needed if the variable is dead?

Performing (4) phase without (3) infomration extracts the exact set of resumed variables. It could not contain the variables which will be saved conservatively in (3).
So,

resume r1, r2, r3
without r4 def...
save r4

could occur. If the op_save tell us it uses r4, the resume op will def r4 for that.

&gt;&gt; Source/JavaScriptCore/bytecode/BytecodeGeneratorification.cpp:212
&gt;&gt; +        // This produces the conservative results for the question, &quot;which variables should be saved and resumed?&quot;.
&gt; 
&gt; What causes it to be conservative?

Let&apos;s consider the example,

function *gen()
{
    var target = 42;
    yield 30;  // Here, we should save &quot;target&quot;. It is OK. But at the resume point, we unnecessary resume &quot;target&quot; here.
    yield 40;  // And here, we unnecessarily save &quot;target&quot;, since it is *def*ined by the previous resume.
    yield target;  // And reference the &quot;target&quot; here.
}

ToT (without this patch) compiles it into the following bytecodes. Since ToT just uses this liveness analysis, this bytecode shows what I say this is conservative.

[   0] enter             
[   1] get_scope         loc3
[   3] mov               loc4, loc3
[   6] switch_imm        0, 145(-&gt;151), arg2
[  10] mov               loc6, Undefined(const0)
[  13] stricteq          loc7, arg4, Int32: 0(const1)
[  17] jtrue             loc7, 14(-&gt;31)
[  20] stricteq          loc7, arg4, Int32: 2(const2)
[  24] jtrue             loc7, 5(-&gt;29)
[  27] ret               arg3
[  29] throw             arg3
[  31] mov               loc5, Int32: 42(const3)
[  34] mov               loc7, Int32: 30(const4)
[  37] put_by_id         arg1, PrivateSymbol.generatorState(@id0), Int32: 1(const5), Bottom
[  46] save              arg1, -----1----(@live0), 9(-&gt;55)
[  50] ret               loc7
[  52] resume            arg1, -----1----(@live0)
[  55] stricteq          loc8, arg4, Int32: 0(const1)
[  59] jtrue             loc8, 14(-&gt;73)
[  62] stricteq          loc8, arg4, Int32: 2(const2)
[  66] jtrue             loc8, 5(-&gt;71)
[  69] ret               arg3
[  71] throw             arg3
[  73] mov               loc7, Int32: 40(const6)
[  76] put_by_id         arg1, PrivateSymbol.generatorState(@id0), Int32: 2(const2), Bottom
[  85] save              arg1, -----1----(@live1), 9(-&gt;94)
[  89] ret               loc7
[  91] resume            arg1, -----1----(@live1)
[  94] stricteq          loc8, arg4, Int32: 0(const1)
[  98] jtrue             loc8, 14(-&gt;112)
[ 101] stricteq          loc8, arg4, Int32: 2(const2)
[ 105] jtrue             loc8, 5(-&gt;110)
[ 108] ret               arg3
[ 110] throw             arg3
[ 112] mov               loc7, loc5
[ 115] put_by_id         arg1, PrivateSymbol.generatorState(@id0), Int32: 3(const7), Bottom
[ 124] save              arg1, ----------(@live2), 9(-&gt;133)
[ 128] ret               loc7
[ 130] resume            arg1, ----------(@live2)
[ 133] stricteq          loc8, arg4, Int32: 0(const1)
[ 137] jtrue             loc8, 14(-&gt;151)
[ 140] stricteq          loc8, arg4, Int32: 2(const2)
[ 144] jtrue             loc8, 5(-&gt;149)
[ 147] ret               arg3
[ 149] throw             arg3
[ 151] ret               Undefined(const0)


Focusing on the part, corresponding to `yield 40;`,

[  52] resume            arg1, -----1----(@live0)
[  55] stricteq          loc8, arg4, Int32: 0(const1)
[  59] jtrue             loc8, 14(-&gt;73)
[  62] stricteq          loc8, arg4, Int32: 2(const2)
[  66] jtrue             loc8, 5(-&gt;71)
[  69] ret               arg3
[  71] throw             arg3
[  73] mov               loc7, Int32: 40(const6)
[  76] put_by_id         arg1, PrivateSymbol.generatorState(@id0), Int32: 2(const2), Bottom
[  85] save              arg1, -----1----(@live1), 9(-&gt;94)
[  89] ret               loc7

Looking into it, we can find the fact that &quot;while op_resume resumes r5, it is not used except for op_save&quot;.
This is the problem. If the variable is used in the later generator code, this variable is repeatedly resumed and saved even if it is not used.
Saving and resuming the variables that this liveness analysis tells just works. But it unnecessarily saves and resumes variables.
That&apos;s why I said &quot;conservative&quot; here.
In BytecodeGeneratorification::run()&apos;s comment also mention about this.

NOTE: Current ToT code allows get_scope and mov before switch_imm, this patch moves switch_imm just after op_enter.

&gt;&gt; Source/JavaScriptCore/bytecode/BytecodeGeneratorification.cpp:238
&gt;&gt; +                changed |= outDidChange;
&gt; 
&gt; Could this cause the fix point to end early?
&gt; Is is possible that processing the block would cause the &quot;in&quot; to change, but that we won&apos;t ever go over it again visiting that block as a successor?
&gt; Maybe we also need to see if the block&apos;s &quot;in&quot; changes?

This is the same logic to the existing BytecodeLivenessAnalysis, but right, I think we should use the result of `computeLocalLivenessForBlock` as I do in the forward analysis in L403.
Now I think that we have the bugs in this (&amp; the current BytecodeLinvenessAnalysis).
If in() is changed, we should recalculate the graph.
So code should be 

block-&gt;out().set(newOut);
changed |= computeLocalLivenessForBlock(m_generatorification.graph(), block.get()); // return true if block-&gt;in() is changed.

&gt;&gt; Source/JavaScriptCore/bytecode/BytecodeGeneratorification.cpp:267
&gt;&gt; +        if (opcodeID == op_resume) {
&gt; 
&gt; Are there not some registers before the switch statement that jumps to the op_resume that def things of value?

We guaranteed that there are no defs that should be saved. op_switch_imm is placed just after op_enter. And the jump target is op_resume.

&gt;&gt; Source/JavaScriptCore/bytecode/BytecodeGeneratorification.cpp:330
&gt;&gt; +        //   no-jumps &amp; no r1 defs.
&gt; 
&gt; No jumps?

Ah, no-jumps is not necessary. If there are no reachable r1 defs in the op_save, op_save need not to save r1.

&gt;&gt; Source/JavaScriptCore/bytecode/BytecodeGeneratorification.cpp:336
&gt;&gt; +        // We consider the basic blocks within the try range are considered as the implicit predecessors of the handlers.
&gt; 
&gt; By handler do you mean catch handler?

Right. The catch and finally handlers.

&gt; Source/JavaScriptCore/bytecode/BytecodeGeneratorification.cpp:341
&gt; +        // This is a little bit conservative: the try range may not cover all the basic block. But since the out set status at

This &quot;conservative&quot; in the saved variables analysis is caused by the different reason from the conservativeness in the liveness analysis.

start of BB1
...
...
...
def r1  ^
def r2  |  =&gt; Jump to the handler BB2 (try-range). This range does not cover `def r4`.
def r3  v
def r4
end of BB1 (defs, r1, r2, r3, r4)

start of BB2
(Here, we use the whole BB1 as the implicit BB of BB2. So, we consider r1, r2, r3, r4 are defed in the predecessor. But however, precisely, only r1, r2, r3 are defed.
But we consider r4 as defed for simplicity of the analysis. I said this as &quot;conservative&quot; in this saved variables analysis.)

&gt;&gt; Source/JavaScriptCore/bytecode/BytecodeGeneratorification.cpp:342
&gt;&gt; +        // the tail of the basic block is always larger than the out set status in the middle of the basic blocks, this does not
&gt; 
&gt; What&apos;s the &quot;out set status&quot; here?
&gt; Is this live-out data? If so, I don&apos;t think this assertion holds. There may be more live variables in the middle of a block then at the tail, right? What would stop that from being true?

No. It&apos;s not live-out data. It&apos;s set of defs that may reach the end of BB. We don&apos;t kill defs during this analysis except for op_resume.

&gt;&gt; Source/JavaScriptCore/bytecode/BytecodeGeneratorification.cpp:354
&gt;&gt; +                FastBitVector predecessors;
&gt; 
&gt; I wonder if B3&apos;s IndexSet is a more apt data structure?

Looks nice. Moving B3IndexSet, B3IndexMap to WTF and use them here would be good. I&apos;ll do that.

&gt;&gt; Source/JavaScriptCore/bytecode/BytecodeGeneratorification.cpp:384
&gt;&gt; +        do {
&gt; 
&gt; So this analysis is just computing the defs that reach any block, correct? (except if the predecessor block contained a save)

Right. This information allows op_save to only save reached defs.

&gt;&gt; Source/JavaScriptCore/bytecode/BytecodeGeneratorification.cpp:391
&gt;&gt; +                    // with the merge point and the predecessor ends with the save point.
&gt; 
&gt; I see that the code is doing this, the comment should state *why* it&apos;s doing this.

I&apos;ve described about why we would like to drop the edge here.

&gt;&gt; Source/JavaScriptCore/bytecode/BytecodeGeneratorification.cpp:393
&gt;&gt; +                        newIn.merge(predecessor-&gt;out());
&gt; 
&gt; I have a question, lets say that mergeBlock is true.
&gt; Isn&apos;t this block only reachable through two paths? The &quot;save&quot; path and the &quot;resume&quot; path.
&gt; We don&apos;t account for the &quot;save&quot; path, and the &quot;resume&quot; path will clear all the bits. So shouldn&apos;t
&gt; newIn just be the empty set here?

Ah, right! In the merge block, first, we need to check the resume mode, so the BB starting with the merge point is only used for generator resume case and there is no incomming edge into this merge block except for resume and save edges.

&gt;&gt; Source/JavaScriptCore/bytecode/BytecodeGeneratorification.cpp:453
&gt;&gt; +            // Let&apos;s declare the uses based on the saved variables analysis information.
&gt; 
&gt; I see that the code is doing this. It&apos;d be good for the comment to state why, etc.

I&apos;ve fixed the comment :)

&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:322
&gt; +    // Before emitting any of the actual code except for op_enter, emit a generator prologue that contains jump based on a generator&apos;s state.

NOTE: Just after we emit op_enter, we emit op_switch_imm for generator labels. And it jumps to op_resume / initial basic block.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1218488</commentid>
    <comment_count>114</comment_count>
      <attachid>285565</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-08-08 07:57:14 -0700</bug_when>
    <thetext>Created attachment 285565
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1218489</commentid>
    <comment_count>115</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-08-08 07:58:55 -0700</bug_when>
    <thetext>Attachment 285565 did not pass style-queue:


ERROR: Source/JavaScriptCore/bytecode/BytecodeBasicBlock.cpp:115:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/BytecodeBasicBlock.cpp:120:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/BytecodeLivenessAnalysisInlines.h:91:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/BytecodeLivenessAnalysisInlines.h:98:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/BytecodeLivenessAnalysisInlines.h:118:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/BytecodeLivenessAnalysisInlines.h:122:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/BytecodeGeneratorification.cpp:289:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/IndexedContainerIterator.h:48:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 8 in 69 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1218495</commentid>
    <comment_count>116</comment_count>
      <attachid>285565</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-08-08 08:41:54 -0700</bug_when>
    <thetext>Comment on attachment 285565
Patch

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

&gt; Source/JavaScriptCore/ChangeLog:28
&gt; +           to be saved and resumed at each point.

NOTE: If we ignore the inefficiency of LLInt and baseline JIT, we can just use (2)&apos;s result since (2) gives conservative (just works) liveness data.
But if we would like to get the same effect in DFG to (3) &amp; (4), we need to annotate inserted get_from_scope/put_from_scope as generator variable related.
This is because,

1: GetClosureVar(&quot;g1&quot;)
2: Call()
3: PutClosureVar(&quot;g1&quot;, @1)

We cannot drop @1 and @2 without the &quot;generator-variables&quot; annotation since @2 call may change the ClosureVars if @1 and @2 is not related to generator-variables.
Currently, I took the approach that analyzes in this phase.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1218508</commentid>
    <comment_count>117</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-08-08 09:41:03 -0700</bug_when>
    <thetext>(In reply to comment #116)
&gt; Comment on attachment 285565 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=285565&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/ChangeLog:28
&gt; &gt; +           to be saved and resumed at each point.
&gt; 
&gt; NOTE: If we ignore the inefficiency of LLInt and baseline JIT, we can just
&gt; use (2)&apos;s result since (2) gives conservative (just works) liveness data.
&gt; But if we would like to get the same effect in DFG to (3) &amp; (4), we need to
&gt; annotate inserted get_from_scope/put_from_scope as generator variable
&gt; related.
&gt; This is because,
&gt; 
&gt; 1: GetClosureVar(&quot;g1&quot;)
&gt; 2: Call()
&gt; 3: PutClosureVar(&quot;g1&quot;, @1)
&gt; 
&gt; We cannot drop @1 and @2 without the &quot;generator-variables&quot; annotation since
&gt; @2 call may change the ClosureVars if @1 and @2 is not related to
&gt; generator-variables.
&gt; Currently, I took the approach that analyzes in this phase.

Does the current patch do this or is this a future feature?

In my experience it&apos;s best to implement CSE improvements after everything is already working.  Also, I don&apos;t think that annotating these as &quot;closure&quot; vars is really the right ting.  In reality, the annotation you&apos;re looking for is something like the C++ &quot;restrict&quot; annotation, which means: the thing I point to cannot be pointed to by anyone else.  Maybe we can even call it &quot;restrict&quot; since that&apos;s already a term of art.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1218513</commentid>
    <comment_count>118</comment_count>
      <attachid>285565</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-08-08 09:52:27 -0700</bug_when>
    <thetext>Comment on attachment 285565
Patch

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

&gt; Source/JavaScriptCore/ChangeLog:17
&gt; +        entry -&gt; generator switch ----&gt; op_save -&gt; merge point -&gt; ...
&gt; +                       |                               ^
&gt; +                       +--------------&gt; op_resume -----+

Is it really necessary to have separate op_save/op_resume instructions in the initial generation?  It seems like this would work just as well:

function* foo()
{
   fizz();
   yield;
   buzz();
}

becomes:

op_call fizz
op_yield
op_call buzz

Then you can find the set of live variables at any op_yield.  I think this would reduce the number of analyses you have to do.  Right now, instead of op_yield you have a complex control flow structure that is a union of the control flow before generatorification and control flow after generatorification, and so your analyses have to reason about which edges to ignore.

Then, once you&apos;ve analyzed everything, you can turn the op_yield into a ret followed by a jump target, and convert the top of the function to be a switch.

It&apos;s hard for me to review this patch without understanding why op_save/op_resume are part of the IR.  To me, they seem to just make everything more complicated.

&gt; Source/JavaScriptCore/ChangeLog:30
&gt; +           At op_save, we should save the variables that (i) will be used after the merge point AND (ii) the newly defined variables from the previous op_resume. So, we propagate

Why are the newly defined variables at the previous op_resume relevant?  Intuitively, liveness should suffice.

&gt; Source/JavaScriptCore/ChangeLog:78
&gt; +                Basic        38.61 ms Â± 1.65 ms    23.97 ms Â± 0.38 ms    3262.46 ms Â± 74.12 ms

NICE!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1218532</commentid>
    <comment_count>119</comment_count>
      <attachid>285565</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-08-08 11:15:04 -0700</bug_when>
    <thetext>Comment on attachment 285565
Patch

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

Thanks!

&gt;&gt; Source/JavaScriptCore/ChangeLog:17
&gt;&gt; +                       +--------------&gt; op_resume -----+
&gt; 
&gt; Is it really necessary to have separate op_save/op_resume instructions in the initial generation?  It seems like this would work just as well:
&gt; 
&gt; function* foo()
&gt; {
&gt;    fizz();
&gt;    yield;
&gt;    buzz();
&gt; }
&gt; 
&gt; becomes:
&gt; 
&gt; op_call fizz
&gt; op_yield
&gt; op_call buzz
&gt; 
&gt; Then you can find the set of live variables at any op_yield.  I think this would reduce the number of analyses you have to do.  Right now, instead of op_yield you have a complex control flow structure that is a union of the control flow before generatorification and control flow after generatorification, and so your analyses have to reason about which edges to ignore.
&gt; 
&gt; Then, once you&apos;ve analyzed everything, you can turn the op_yield into a ret followed by a jump target, and convert the top of the function to be a switch.
&gt; 
&gt; It&apos;s hard for me to review this patch without understanding why op_save/op_resume are part of the IR.  To me, they seem to just make everything more complicated.

Nice. It looks that this op_yield approach simplifies the code.
If we take this approach, instead of ignoring the edge, the use &amp; def declaration of op_yield will be changed in each analysis.
(And if we take the (3) approach described in the below comment. If we take the (1) or (2) approach, the code here becomes simpler, but LLInt / Baseline will get inefficient implementations)

&gt;&gt;&gt; Source/JavaScriptCore/ChangeLog:28
&gt;&gt;&gt; +           to be saved and resumed at each point.
&gt;&gt; 
&gt;&gt; NOTE: If we ignore the inefficiency of LLInt and baseline JIT, we can just use (2)&apos;s result since (2) gives conservative (just works) liveness data.
&gt;&gt; But if we would like to get the same effect in DFG to (3) &amp; (4), we need to annotate inserted get_from_scope/put_from_scope as generator variable related.
&gt;&gt; This is because,
&gt;&gt; 
&gt;&gt; 1: GetClosureVar(&quot;g1&quot;)
&gt;&gt; 2: Call()
&gt;&gt; 3: PutClosureVar(&quot;g1&quot;, @1)
&gt;&gt; 
&gt;&gt; We cannot drop @1 and @2 without the &quot;generator-variables&quot; annotation since @2 call may change the ClosureVars if @1 and @2 is not related to generator-variables.
&gt;&gt; Currently, I took the approach that analyzes in this phase.
&gt; 
&gt; Does the current patch do this or is this a future feature?
&gt; 
&gt; In my experience it&apos;s best to implement CSE improvements after everything is already working.  Also, I don&apos;t think that annotating these as &quot;closure&quot; vars is really the right ting.  In reality, the annotation you&apos;re looking for is something like the C++ &quot;restrict&quot; annotation, which means: the thing I point to cannot be pointed to by anyone else.  Maybe we can even call it &quot;restrict&quot; since that&apos;s already a term of art.

The above DFG handling is not included in this patch.
There are roughly 3 design choices (And the first one is transient one for the final design).
Currently, this patch takes the third (3) option.
But I think the first choice would be good for the first implementaiton.
Fortunately, (3) implementation still exists here. So if we implement (2) in the latter patch, we can compare the performance.

1. Use liveness data

Just use the liveness data. It&apos;s the simplest (And currrent ToT does). But it easily causes many unnecessary saves and resumes.
function *gen() {
    def r1
    def r2
    def r3
    yield 42    // r1, r2, r3 are live =&gt; saved and resumed
    yield 43    // r1, r2, r3 are live =&gt; saved and resumed
    yield 44    // r1, r2, r3 are live =&gt; saved and resumed
    ...         // if we add more yields here, you can see more unnecessary saves and resumes!
    yield 45    // r1, r2, r3 are live =&gt; saved and resumed
    use r1
    use r2
    use r3
}
In the above example, we repeatedly saves and resumes the r1, r2, r3. Except for the first save and last resume, they are completely unnecessary.

2. Use (1) in LLInt and Baseline and drop unnecessary saves and resumes in DFG and later

This is the explained method in the above comment. In that case, we annotate get_from_scope/put_to_scope *bytecode* and convert them to some DFG Nodes in DFGByteCodeParser with &quot;restrict&quot; annotation. (Maybe, the simplest way is producing GetClosureVar / PutClosureVar with &quot;restrict&quot; opinfo. At that case, maybe, we should carefully load the values from the scope when OSRExit occurs)

Pros:
    + Bytecode generation is a little bit simplified. (2 of 3 analysis are dropped)
Cons:
    + DFG need to handle &quot;restrict&quot; Nodes additionally.
    + LLInt and Baseline should work with unnecessary saves and resumes.

3. Drop unnecessary save and resume in generatorification phase (bytecode level)

This is currently used method in this patch. In addition to the liveness analysis, driving one forward analysis and one backward analysis to extract which save and resume are unnecessary.
And do not emit them in the generatorification phase.

Pros:
    + We need to do nothing in DFG phase.
    + LLInt and Baseline also receive the benefit.
Cons:
    + We need to drive 2 more analysis in the bytecode generatorification phase.

&gt;&gt; Source/JavaScriptCore/ChangeLog:30
&gt;&gt; +           At op_save, we should save the variables that (i) will be used after the merge point AND (ii) the newly defined variables from the previous op_resume. So, we propagate
&gt; 
&gt; Why are the newly defined variables at the previous op_resume relevant?  Intuitively, liveness should suffice.

In order to filter the unnecessary saves (explained in the above comment) in the liveness.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1218533</commentid>
    <comment_count>120</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-08-08 11:22:53 -0700</bug_when>
    <thetext>(In reply to comment #119)
&gt; Comment on attachment 285565 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=285565&amp;action=review
&gt; 
&gt; Thanks!
&gt; 
&gt; &gt;&gt; Source/JavaScriptCore/ChangeLog:17
&gt; &gt;&gt; +                       +--------------&gt; op_resume -----+
&gt; &gt; 
&gt; &gt; Is it really necessary to have separate op_save/op_resume instructions in the initial generation?  It seems like this would work just as well:
&gt; &gt; 
&gt; &gt; function* foo()
&gt; &gt; {
&gt; &gt;    fizz();
&gt; &gt;    yield;
&gt; &gt;    buzz();
&gt; &gt; }
&gt; &gt; 
&gt; &gt; becomes:
&gt; &gt; 
&gt; &gt; op_call fizz
&gt; &gt; op_yield
&gt; &gt; op_call buzz
&gt; &gt; 
&gt; &gt; Then you can find the set of live variables at any op_yield.  I think this would reduce the number of analyses you have to do.  Right now, instead of op_yield you have a complex control flow structure that is a union of the control flow before generatorification and control flow after generatorification, and so your analyses have to reason about which edges to ignore.
&gt; &gt; 
&gt; &gt; Then, once you&apos;ve analyzed everything, you can turn the op_yield into a ret followed by a jump target, and convert the top of the function to be a switch.
&gt; &gt; 
&gt; &gt; It&apos;s hard for me to review this patch without understanding why op_save/op_resume are part of the IR.  To me, they seem to just make everything more complicated.
&gt; 
&gt; Nice. It looks that this op_yield approach simplifies the code.
&gt; If we take this approach, instead of ignoring the edge, the use &amp; def
&gt; declaration of op_yield will be changed in each analysis.
&gt; (And if we take the (3) approach described in the below comment. If we take
&gt; the (1) or (2) approach, the code here becomes simpler, but LLInt / Baseline
&gt; will get inefficient implementations)

Actually, yield does not use or def anything, and I think it would be very confusing to have any analysis say otherwise.

My understanding is that you&apos;re really doing this:

1) Determine what is live at each yield and prepare to emit put_to_scope/get_from_scope around it.
2) Perform a CSE over the put_to_scope/get_from_scope that you would have inserted.  Usually, CSE is a backwards analysis.

&gt; 
&gt; &gt;&gt;&gt; Source/JavaScriptCore/ChangeLog:28
&gt; &gt;&gt;&gt; +           to be saved and resumed at each point.
&gt; &gt;&gt; 
&gt; &gt;&gt; NOTE: If we ignore the inefficiency of LLInt and baseline JIT, we can just use (2)&apos;s result since (2) gives conservative (just works) liveness data.
&gt; &gt;&gt; But if we would like to get the same effect in DFG to (3) &amp; (4), we need to annotate inserted get_from_scope/put_from_scope as generator variable related.
&gt; &gt;&gt; This is because,
&gt; &gt;&gt; 
&gt; &gt;&gt; 1: GetClosureVar(&quot;g1&quot;)
&gt; &gt;&gt; 2: Call()
&gt; &gt;&gt; 3: PutClosureVar(&quot;g1&quot;, @1)
&gt; &gt;&gt; 
&gt; &gt;&gt; We cannot drop @1 and @2 without the &quot;generator-variables&quot; annotation since @2 call may change the ClosureVars if @1 and @2 is not related to generator-variables.
&gt; &gt;&gt; Currently, I took the approach that analyzes in this phase.
&gt; &gt; 
&gt; &gt; Does the current patch do this or is this a future feature?
&gt; &gt; 
&gt; &gt; In my experience it&apos;s best to implement CSE improvements after everything is already working.  Also, I don&apos;t think that annotating these as &quot;closure&quot; vars is really the right ting.  In reality, the annotation you&apos;re looking for is something like the C++ &quot;restrict&quot; annotation, which means: the thing I point to cannot be pointed to by anyone else.  Maybe we can even call it &quot;restrict&quot; since that&apos;s already a term of art.
&gt; 
&gt; The above DFG handling is not included in this patch.
&gt; There are roughly 3 design choices (And the first one is transient one for
&gt; the final design).
&gt; Currently, this patch takes the third (3) option.
&gt; But I think the first choice would be good for the first implementaiton.
&gt; Fortunately, (3) implementation still exists here. So if we implement (2) in
&gt; the latter patch, we can compare the performance.
&gt; 
&gt; 1. Use liveness data
&gt; 
&gt; Just use the liveness data. It&apos;s the simplest (And currrent ToT does). But
&gt; it easily causes many unnecessary saves and resumes.
&gt; function *gen() {
&gt;     def r1
&gt;     def r2
&gt;     def r3
&gt;     yield 42    // r1, r2, r3 are live =&gt; saved and resumed
&gt;     yield 43    // r1, r2, r3 are live =&gt; saved and resumed
&gt;     yield 44    // r1, r2, r3 are live =&gt; saved and resumed
&gt;     ...         // if we add more yields here, you can see more unnecessary
&gt; saves and resumes!
&gt;     yield 45    // r1, r2, r3 are live =&gt; saved and resumed
&gt;     use r1
&gt;     use r2
&gt;     use r3
&gt; }
&gt; In the above example, we repeatedly saves and resumes the r1, r2, r3. Except
&gt; for the first save and last resume, they are completely unnecessary.
&gt; 
&gt; 2. Use (1) in LLInt and Baseline and drop unnecessary saves and resumes in
&gt; DFG and later
&gt; 
&gt; This is the explained method in the above comment. In that case, we annotate
&gt; get_from_scope/put_to_scope *bytecode* and convert them to some DFG Nodes in
&gt; DFGByteCodeParser with &quot;restrict&quot; annotation. (Maybe, the simplest way is
&gt; producing GetClosureVar / PutClosureVar with &quot;restrict&quot; opinfo. At that
&gt; case, maybe, we should carefully load the values from the scope when OSRExit
&gt; occurs)
&gt; 
&gt; Pros:
&gt;     + Bytecode generation is a little bit simplified. (2 of 3 analysis are
&gt; dropped)
&gt; Cons:
&gt;     + DFG need to handle &quot;restrict&quot; Nodes additionally.
&gt;     + LLInt and Baseline should work with unnecessary saves and resumes.
&gt; 
&gt; 3. Drop unnecessary save and resume in generatorification phase (bytecode
&gt; level)
&gt; 
&gt; This is currently used method in this patch. In addition to the liveness
&gt; analysis, driving one forward analysis and one backward analysis to extract
&gt; which save and resume are unnecessary.
&gt; And do not emit them in the generatorification phase.
&gt; 
&gt; Pros:
&gt;     + We need to do nothing in DFG phase.
&gt;     + LLInt and Baseline also receive the benefit.
&gt; Cons:
&gt;     + We need to drive 2 more analysis in the bytecode generatorification
&gt; phase.
&gt; 
&gt; &gt;&gt; Source/JavaScriptCore/ChangeLog:30
&gt; &gt;&gt; +           At op_save, we should save the variables that (i) will be used after the merge point AND (ii) the newly defined variables from the previous op_resume. So, we propagate
&gt; &gt; 
&gt; &gt; Why are the newly defined variables at the previous op_resume relevant?  Intuitively, liveness should suffice.
&gt; 
&gt; In order to filter the unnecessary saves (explained in the above comment) in
&gt; the liveness.

Gotcha.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1218679</commentid>
    <comment_count>121</comment_count>
      <attachid>285565</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-08-08 19:54:32 -0700</bug_when>
    <thetext>Comment on attachment 285565
Patch

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

&gt;&gt;&gt;&gt; Source/JavaScriptCore/ChangeLog:17
&gt;&gt;&gt;&gt; +                       +--------------&gt; op_resume -----+
&gt;&gt;&gt; 
&gt;&gt;&gt; Is it really necessary to have separate op_save/op_resume instructions in the initial generation?  It seems like this would work just as well:
&gt;&gt;&gt; 
&gt;&gt;&gt; function* foo()
&gt;&gt;&gt; {
&gt;&gt;&gt;    fizz();
&gt;&gt;&gt;    yield;
&gt;&gt;&gt;    buzz();
&gt;&gt;&gt; }
&gt;&gt;&gt; 
&gt;&gt;&gt; becomes:
&gt;&gt;&gt; 
&gt;&gt;&gt; op_call fizz
&gt;&gt;&gt; op_yield
&gt;&gt;&gt; op_call buzz
&gt;&gt;&gt; 
&gt;&gt;&gt; Then you can find the set of live variables at any op_yield.  I think this would reduce the number of analyses you have to do.  Right now, instead of op_yield you have a complex control flow structure that is a union of the control flow before generatorification and control flow after generatorification, and so your analyses have to reason about which edges to ignore.
&gt;&gt;&gt; 
&gt;&gt;&gt; Then, once you&apos;ve analyzed everything, you can turn the op_yield into a ret followed by a jump target, and convert the top of the function to be a switch.
&gt;&gt;&gt; 
&gt;&gt;&gt; It&apos;s hard for me to review this patch without understanding why op_save/op_resume are part of the IR.  To me, they seem to just make everything more complicated.
&gt;&gt; 
&gt;&gt; Nice. It looks that this op_yield approach simplifies the code.
&gt;&gt; If we take this approach, instead of ignoring the edge, the use &amp; def declaration of op_yield will be changed in each analysis.
&gt;&gt; (And if we take the (3) approach described in the below comment. If we take the (1) or (2) approach, the code here becomes simpler, but LLInt / Baseline will get inefficient implementations)
&gt; 
&gt; Actually, yield does not use or def anything, and I think it would be very confusing to have any analysis say otherwise.
&gt; 
&gt; My understanding is that you&apos;re really doing this:
&gt; 
&gt; 1) Determine what is live at each yield and prepare to emit put_to_scope/get_from_scope around it.
&gt; 2) Perform a CSE over the put_to_scope/get_from_scope that you would have inserted.  Usually, CSE is a backwards analysis.

1 is correct, but 2 is different.
I&apos;ll explain about it here. And after considering, I think the current op_save / op_restore design would be nice.
OK, let&apos;s describe why I thought.

Yup, as you said, yield does not use or def anything (in precise, yield uses ther return value (`yield v`), and def the next(...) value (`v = yield a`). but it is not so related to the current topic).
But if I took this op_yield design, we still need to change the use-def declaration of op_yield, tricky.

In this patch, we took the (3) option in the previous comment. It drives 3 analysis, &quot;liveness analysis&quot;, &quot;saved variables analysis&quot;, and &quot;resumed variables analysis&quot;.
The first &quot;liveness analysis&quot; assumes that the graph is something like the op_yield approach. But the other 2 analysis assume that the graph is the final generator graph (switch etc.).
Currently, we achieve this by dropping merge-save edge in the latter 2 analysis. This easily changes the graph from the op_yield like one to the final graph shape.
And if we use op_yield approach and if we would like to change the graph without reconstructing the whole BBs, the easiest way is changing op_yield use-def: clear all the defs at op_yield.
Comparing the above 2 approach, I think the current union-of-graphs approach is rather simple, since we achieve the result by just dropping merge-save edges.

And also, I would like to describe why we need 2 graphs.
This is because of the core concept of th unnecessary saved and resumed variables.
The core concept is, the given live variable may be used beyond the generator-next-call. If so, this variable may not be live in the current generator-next-call.
While the liveness can be calculated in the op_yield graph, the liveness in the generator-next-call-split-graph can be calculated in the final graph.

So now, this patch performing,

1. Determine what is live at each yield and prepare to emit put_to_scope/get_from_scope around it.
2. Changing the graph shape from op_yield style to the final graph style
3. Calculate saves in each generator-next-call&apos;s subgraph.
4. Calculate resumes in each generator-next-call&apos;s subgraph.

For examle,

function *gen() {
    def r1
    def r2
    def r3
    yield 42 // r1, r2, r3 are live =&gt; saved and resumed
    yield 43 // r1, r2, r3 are live =&gt; saved and resumed
    yield 44 // r1, r2, r3 are live =&gt; saved and resumed
    yield 45 // r1, r2, r3 are live =&gt; saved and resumed
    use r1
    use r2
    use r3
}

First, we calculate the liveness in gen.
And next, we change the graph to the following and extract the variables should be resumed and saved. (And this graph change is just done by dropping merge-save edge)

function *gen() {
    #BB0
    switch -&gt; BB1, BB2, BB3, BB4, BB5

    #BB1
    def r1
    def r2
    def r3
    yield_ret 42  # r1, r2, r3 should be saved (by propagating r1, r2, r3 defs)

    #BB2
    yield_def     # no!
    yield_ret 43  # no!

    #BB3
    yield_def     # no!
    yield_ret 44  # no!

    #BB4
    yield_def     # no!
    yield_ret 45  # no!

    #BB5
    yield_def     # r1, r2, r3 should be resumed
    use r1
    use r2
    use r3
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1218680</commentid>
    <comment_count>122</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-08-08 19:59:43 -0700</bug_when>
    <thetext>(In reply to comment #121)
&gt; Comment on attachment 285565 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=285565&amp;action=review
&gt; 
&gt; &gt;&gt;&gt;&gt; Source/JavaScriptCore/ChangeLog:17
&gt; &gt;&gt;&gt;&gt; +                       +--------------&gt; op_resume -----+
&gt; &gt;&gt;&gt; 
&gt; &gt;&gt;&gt; Is it really necessary to have separate op_save/op_resume instructions in the initial generation?  It seems like this would work just as well:
&gt; &gt;&gt;&gt; 
&gt; &gt;&gt;&gt; function* foo()
&gt; &gt;&gt;&gt; {
&gt; &gt;&gt;&gt;    fizz();
&gt; &gt;&gt;&gt;    yield;
&gt; &gt;&gt;&gt;    buzz();
&gt; &gt;&gt;&gt; }
&gt; &gt;&gt;&gt; 
&gt; &gt;&gt;&gt; becomes:
&gt; &gt;&gt;&gt; 
&gt; &gt;&gt;&gt; op_call fizz
&gt; &gt;&gt;&gt; op_yield
&gt; &gt;&gt;&gt; op_call buzz
&gt; &gt;&gt;&gt; 
&gt; &gt;&gt;&gt; Then you can find the set of live variables at any op_yield.  I think this would reduce the number of analyses you have to do.  Right now, instead of op_yield you have a complex control flow structure that is a union of the control flow before generatorification and control flow after generatorification, and so your analyses have to reason about which edges to ignore.
&gt; &gt;&gt;&gt; 
&gt; &gt;&gt;&gt; Then, once you&apos;ve analyzed everything, you can turn the op_yield into a ret followed by a jump target, and convert the top of the function to be a switch.
&gt; &gt;&gt;&gt; 
&gt; &gt;&gt;&gt; It&apos;s hard for me to review this patch without understanding why op_save/op_resume are part of the IR.  To me, they seem to just make everything more complicated.
&gt; &gt;&gt; 
&gt; &gt;&gt; Nice. It looks that this op_yield approach simplifies the code.
&gt; &gt;&gt; If we take this approach, instead of ignoring the edge, the use &amp; def declaration of op_yield will be changed in each analysis.
&gt; &gt;&gt; (And if we take the (3) approach described in the below comment. If we take the (1) or (2) approach, the code here becomes simpler, but LLInt / Baseline will get inefficient implementations)
&gt; &gt; 
&gt; &gt; Actually, yield does not use or def anything, and I think it would be very confusing to have any analysis say otherwise.
&gt; &gt; 
&gt; &gt; My understanding is that you&apos;re really doing this:
&gt; &gt; 
&gt; &gt; 1) Determine what is live at each yield and prepare to emit put_to_scope/get_from_scope around it.
&gt; &gt; 2) Perform a CSE over the put_to_scope/get_from_scope that you would have inserted.  Usually, CSE is a backwards analysis.
&gt; 
&gt; 1 is correct, but 2 is different.
&gt; I&apos;ll explain about it here. And after considering, I think the current
&gt; op_save / op_restore design would be nice.
&gt; OK, let&apos;s describe why I thought.
&gt; 
&gt; Yup, as you said, yield does not use or def anything (in precise, yield uses
&gt; ther return value (`yield v`), and def the next(...) value (`v = yield a`).
&gt; but it is not so related to the current topic).
&gt; But if I took this op_yield design, we still need to change the use-def
&gt; declaration of op_yield, tricky.
&gt; 
&gt; In this patch, we took the (3) option in the previous comment. It drives 3
&gt; analysis, &quot;liveness analysis&quot;, &quot;saved variables analysis&quot;, and &quot;resumed
&gt; variables analysis&quot;.
&gt; The first &quot;liveness analysis&quot; assumes that the graph is something like the
&gt; op_yield approach. But the other 2 analysis assume that the graph is the
&gt; final generator graph (switch etc.).
&gt; Currently, we achieve this by dropping merge-save edge in the latter 2
&gt; analysis. This easily changes the graph from the op_yield like one to the
&gt; final graph shape.
&gt; And if we use op_yield approach and if we would like to change the graph
&gt; without reconstructing the whole BBs, the easiest way is changing op_yield
&gt; use-def: clear all the defs at op_yield.
&gt; Comparing the above 2 approach, I think the current union-of-graphs approach
&gt; is rather simple, since we achieve the result by just dropping merge-save
&gt; edges.
&gt; 
&gt; And also, I would like to describe why we need 2 graphs.
&gt; This is because of the core concept of th unnecessary saved and resumed
&gt; variables.
&gt; The core concept is, the given live variable may be used beyond the
&gt; generator-next-call. If so, this variable may not be live in the current
&gt; generator-next-call.
&gt; While the liveness can be calculated in the op_yield graph, the liveness in
&gt; the generator-next-call-split-graph can be calculated in the final graph.
&gt; 
&gt; So now, this patch performing,
&gt; 
&gt; 1. Determine what is live at each yield and prepare to emit
&gt; put_to_scope/get_from_scope around it.
&gt; 2. Changing the graph shape from op_yield style to the final graph style
&gt; 3. Calculate saves in each generator-next-call&apos;s subgraph.
&gt; 4. Calculate resumes in each generator-next-call&apos;s subgraph.
&gt; 
&gt; For examle,
&gt; 
&gt; function *gen() {
&gt;     def r1
&gt;     def r2
&gt;     def r3
&gt;     yield 42 // r1, r2, r3 are live =&gt; saved and resumed
&gt;     yield 43 // r1, r2, r3 are live =&gt; saved and resumed
&gt;     yield 44 // r1, r2, r3 are live =&gt; saved and resumed
&gt;     yield 45 // r1, r2, r3 are live =&gt; saved and resumed
&gt;     use r1
&gt;     use r2
&gt;     use r3
&gt; }
&gt; 
&gt; First, we calculate the liveness in gen.
&gt; And next, we change the graph to the following and extract the variables
&gt; should be resumed and saved. (And this graph change is just done by dropping
&gt; merge-save edge)
&gt; 
&gt; function *gen() {
&gt;     #BB0
&gt;     switch -&gt; BB1, BB2, BB3, BB4, BB5
&gt; 
&gt;     #BB1
&gt;     def r1
&gt;     def r2
&gt;     def r3
&gt;     yield_ret 42  # r1, r2, r3 should be saved (by propagating r1, r2, r3
&gt; defs)
&gt; 
&gt;     #BB2
&gt;     yield_def     # no!
&gt;     yield_ret 43  # no!
&gt; 
&gt;     #BB3
&gt;     yield_def     # no!
&gt;     yield_ret 44  # no!
&gt; 
&gt;     #BB4
&gt;     yield_def     # no!
&gt;     yield_ret 45  # no!
&gt; 
&gt;     #BB5
&gt;     yield_def     # r1, r2, r3 should be resumed
&gt;     use r1
&gt;     use r2
&gt;     use r3
&gt; }

I see.  I think that your patch is implementing two things at once:

1) A simplification to the current generator implementation that more naturally permits the DFG to compile generators.

2) An optimization to the current generator implementation that removes some of the need to save/restore variables.

Do you know if (2) is needed?  If each op_yield emits put_to_scope/get_from_scope instructions for each live variable even when it&apos;s not needed, then what happens to performance on the various benchmarks?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1218681</commentid>
    <comment_count>123</comment_count>
      <attachid>285565</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-08-08 20:15:14 -0700</bug_when>
    <thetext>Comment on attachment 285565
Patch

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

&gt;&gt;&gt;&gt;&gt;&gt; Source/JavaScriptCore/ChangeLog:17
&gt;&gt;&gt;&gt;&gt;&gt; +                       +--------------&gt; op_resume -----+
&gt;&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt;&gt; Is it really necessary to have separate op_save/op_resume instructions in the initial generation?  It seems like this would work just as well:
&gt;&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt;&gt; function* foo()
&gt;&gt;&gt;&gt;&gt; {
&gt;&gt;&gt;&gt;&gt;    fizz();
&gt;&gt;&gt;&gt;&gt;    yield;
&gt;&gt;&gt;&gt;&gt;    buzz();
&gt;&gt;&gt;&gt;&gt; }
&gt;&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt;&gt; becomes:
&gt;&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt;&gt; op_call fizz
&gt;&gt;&gt;&gt;&gt; op_yield
&gt;&gt;&gt;&gt;&gt; op_call buzz
&gt;&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt;&gt; Then you can find the set of live variables at any op_yield.  I think this would reduce the number of analyses you have to do.  Right now, instead of op_yield you have a complex control flow structure that is a union of the control flow before generatorification and control flow after generatorification, and so your analyses have to reason about which edges to ignore.
&gt;&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt;&gt; Then, once you&apos;ve analyzed everything, you can turn the op_yield into a ret followed by a jump target, and convert the top of the function to be a switch.
&gt;&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt;&gt; It&apos;s hard for me to review this patch without understanding why op_save/op_resume are part of the IR.  To me, they seem to just make everything more complicated.
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; Nice. It looks that this op_yield approach simplifies the code.
&gt;&gt;&gt;&gt; If we take this approach, instead of ignoring the edge, the use &amp; def declaration of op_yield will be changed in each analysis.
&gt;&gt;&gt;&gt; (And if we take the (3) approach described in the below comment. If we take the (1) or (2) approach, the code here becomes simpler, but LLInt / Baseline will get inefficient implementations)
&gt;&gt;&gt; 
&gt;&gt;&gt; Actually, yield does not use or def anything, and I think it would be very confusing to have any analysis say otherwise.
&gt;&gt;&gt; 
&gt;&gt;&gt; My understanding is that you&apos;re really doing this:
&gt;&gt;&gt; 
&gt;&gt;&gt; 1) Determine what is live at each yield and prepare to emit put_to_scope/get_from_scope around it.
&gt;&gt;&gt; 2) Perform a CSE over the put_to_scope/get_from_scope that you would have inserted.  Usually, CSE is a backwards analysis.
&gt;&gt; 
&gt;&gt; 1 is correct, but 2 is different.
&gt;&gt; I&apos;ll explain about it here. And after considering, I think the current op_save / op_restore design would be nice.
&gt;&gt; OK, let&apos;s describe why I thought.
&gt;&gt; 
&gt;&gt; Yup, as you said, yield does not use or def anything (in precise, yield uses ther return value (`yield v`), and def the next(...) value (`v = yield a`). but it is not so related to the current topic).
&gt;&gt; But if I took this op_yield design, we still need to change the use-def declaration of op_yield, tricky.
&gt;&gt; 
&gt;&gt; In this patch, we took the (3) option in the previous comment. It drives 3 analysis, &quot;liveness analysis&quot;, &quot;saved variables analysis&quot;, and &quot;resumed variables analysis&quot;.
&gt;&gt; The first &quot;liveness analysis&quot; assumes that the graph is something like the op_yield approach. But the other 2 analysis assume that the graph is the final generator graph (switch etc.).
&gt;&gt; Currently, we achieve this by dropping merge-save edge in the latter 2 analysis. This easily changes the graph from the op_yield like one to the final graph shape.
&gt;&gt; And if we use op_yield approach and if we would like to change the graph without reconstructing the whole BBs, the easiest way is changing op_yield use-def: clear all the defs at op_yield.
&gt;&gt; Comparing the above 2 approach, I think the current union-of-graphs approach is rather simple, since we achieve the result by just dropping merge-save edges.
&gt;&gt; 
&gt;&gt; And also, I would like to describe why we need 2 graphs.
&gt;&gt; This is because of the core concept of th unnecessary saved and resumed variables.
&gt;&gt; The core concept is, the given live variable may be used beyond the generator-next-call. If so, this variable may not be live in the current generator-next-call.
&gt;&gt; While the liveness can be calculated in the op_yield graph, the liveness in the generator-next-call-split-graph can be calculated in the final graph.
&gt;&gt; 
&gt;&gt; So now, this patch performing,
&gt;&gt; 
&gt;&gt; 1. Determine what is live at each yield and prepare to emit put_to_scope/get_from_scope around it.
&gt;&gt; 2. Changing the graph shape from op_yield style to the final graph style
&gt;&gt; 3. Calculate saves in each generator-next-call&apos;s subgraph.
&gt;&gt; 4. Calculate resumes in each generator-next-call&apos;s subgraph.
&gt;&gt; 
&gt;&gt; For examle,
&gt;&gt; 
&gt;&gt; function *gen() {
&gt;&gt;     def r1
&gt;&gt;     def r2
&gt;&gt;     def r3
&gt;&gt;     yield 42 // r1, r2, r3 are live =&gt; saved and resumed
&gt;&gt;     yield 43 // r1, r2, r3 are live =&gt; saved and resumed
&gt;&gt;     yield 44 // r1, r2, r3 are live =&gt; saved and resumed
&gt;&gt;     yield 45 // r1, r2, r3 are live =&gt; saved and resumed
&gt;&gt;     use r1
&gt;&gt;     use r2
&gt;&gt;     use r3
&gt;&gt; }
&gt;&gt; 
&gt;&gt; First, we calculate the liveness in gen.
&gt;&gt; And next, we change the graph to the following and extract the variables should be resumed and saved. (And this graph change is just done by dropping merge-save edge)
&gt;&gt; 
&gt;&gt; function *gen() {
&gt;&gt;     #BB0
&gt;&gt;     switch -&gt; BB1, BB2, BB3, BB4, BB5
&gt;&gt; 
&gt;&gt;     #BB1
&gt;&gt;     def r1
&gt;&gt;     def r2
&gt;&gt;     def r3
&gt;&gt;     yield_ret 42  # r1, r2, r3 should be saved (by propagating r1, r2, r3 defs)
&gt;&gt; 
&gt;&gt;     #BB2
&gt;&gt;     yield_def     # no!
&gt;&gt;     yield_ret 43  # no!
&gt;&gt; 
&gt;&gt;     #BB3
&gt;&gt;     yield_def     # no!
&gt;&gt;     yield_ret 44  # no!
&gt;&gt; 
&gt;&gt;     #BB4
&gt;&gt;     yield_def     # no!
&gt;&gt;     yield_ret 45  # no!
&gt;&gt; 
&gt;&gt;     #BB5
&gt;&gt;     yield_def     # r1, r2, r3 should be resumed
&gt;&gt;     use r1
&gt;&gt;     use r2
&gt;&gt;     use r3
&gt;&gt; }
&gt; 
&gt; I see.  I think that your patch is implementing two things at once:
&gt; 
&gt; 1) A simplification to the current generator implementation that more naturally permits the DFG to compile generators.
&gt; 
&gt; 2) An optimization to the current generator implementation that removes some of the need to save/restore variables.
&gt; 
&gt; Do you know if (2) is needed?  If each op_yield emits put_to_scope/get_from_scope instructions for each live variable even when it&apos;s not needed, then what happens to performance on the various benchmarks?

I&apos;ll measure this effect, and once this is measured, I&apos;ll paste here! (Initially, I introduced this optimization because I saw so many unnecessary saves and resumes in ES6SampleBench/Basic.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1218688</commentid>
    <comment_count>124</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-08-08 20:59:40 -0700</bug_when>
    <thetext>Just some context for why I&apos;m asking for those numbers: my intuition is that most functions have a small number of long-lived locals and that most calls to yield will not be one right after the other.  Now, it&apos;s possible to occasionally see functions with a large number of long-lived locals, and it&apos;s also possible to see lots of calls to yield in a row.  But unless *both* of these things happen, your optimization may not have a large effect.

For example, if you have two calls to yield that are far apart then even with no changes to locals in between them, your optimization simply won&apos;t matter: it&apos;s likely that the execution time will be dominated by something other than those load-&gt;store combos.  I would expect that you would need lots of locals, and very little work between yields, for this to make a big difference.

But separately from that, lets assume that this optimization is profitable for common benchmarks, and consider what the simplest mechanism is for achieving the optimization.  Remember, the game with writing optimizations is *not* to write the most comprehensive version of the optimization - but one that succeeds in those cases that are likely to arise in real code.

You argue that op_yield does not permit reasoning about the control flow in the way that your analyses need.  That&apos;s only partly true.  An analysis can simulate whatever control flow it likes.  So, if you need an analysis to &quot;see&quot; the control flow as if the op_yield had already been lowered, then you can simply modify the analysis to do this.  You don&apos;t actually need to make the bytecode&apos;s control flow resemble the shape that the analysis would prefer to consume.  Your generator code will not be the only client of this bytecode.  It matters that the bytecode before generator conversion is easy to understand, and I think that op_yield is easier to understand than op_save/op_resume.

But that&apos;s not my only concern about your conversion strategy.  You appear to be using a lot of flow analyses.  You need to run three flow analyses, two of which are for your optimization.  This seems like it could adversely impact page load times when pages start to use generators in anger.  I think we should aim to not do a lot of expensive things before we even know that a function is hot.

This suggests that your benchmarks should also investigate the effect on parsing performance from your optimization.  I bet it makes parsing take longer.  To benchmark this you&apos;d probably have to create a microbenchmark that just consists of a few large generator functions that are executed exactly once.

If there is indeed a speed-up from your optimization on long-running things and a slow-down on short-running things, then we&apos;d obviously want to switch to a design that elides the unnecessary get_from_scope/put_to_scope operations in DFG and FTL but not in lower tiers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1218696</commentid>
    <comment_count>125</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-08-08 22:46:26 -0700</bug_when>
    <thetext>(In reply to comment #124)
&gt; Just some context for why I&apos;m asking for those numbers: my intuition is that
&gt; most functions have a small number of long-lived locals and that most calls
&gt; to yield will not be one right after the other.  Now, it&apos;s possible to
&gt; occasionally see functions with a large number of long-lived locals, and
&gt; it&apos;s also possible to see lots of calls to yield in a row.  But unless
&gt; *both* of these things happen, your optimization may not have a large effect.
&gt; 
&gt; For example, if you have two calls to yield that are far apart then even
&gt; with no changes to locals in between them, your optimization simply won&apos;t
&gt; matter: it&apos;s likely that the execution time will be dominated by something
&gt; other than those load-&gt;store combos.  I would expect that you would need
&gt; lots of locals, and very little work between yields, for this to make a big
&gt; difference.
&gt; 
&gt; But separately from that, lets assume that this optimization is profitable
&gt; for common benchmarks, and consider what the simplest mechanism is for
&gt; achieving the optimization.  Remember, the game with writing optimizations
&gt; is *not* to write the most comprehensive version of the optimization - but
&gt; one that succeeds in those cases that are likely to arise in real code.
&gt; 
&gt; You argue that op_yield does not permit reasoning about the control flow in
&gt; the way that your analyses need.  That&apos;s only partly true.  An analysis can
&gt; simulate whatever control flow it likes.  So, if you need an analysis to
&gt; &quot;see&quot; the control flow as if the op_yield had already been lowered, then you
&gt; can simply modify the analysis to do this.  You don&apos;t actually need to make
&gt; the bytecode&apos;s control flow resemble the shape that the analysis would
&gt; prefer to consume.  Your generator code will not be the only client of this
&gt; bytecode.  It matters that the bytecode before generator conversion is easy
&gt; to understand, and I think that op_yield is easier to understand than
&gt; op_save/op_resume.
&gt; 
&gt; But that&apos;s not my only concern about your conversion strategy.  You appear
&gt; to be using a lot of flow analyses.  You need to run three flow analyses,
&gt; two of which are for your optimization.  This seems like it could adversely
&gt; impact page load times when pages start to use generators in anger.  I think
&gt; we should aim to not do a lot of expensive things before we even know that a
&gt; function is hot.
&gt; 
&gt; This suggests that your benchmarks should also investigate the effect on
&gt; parsing performance from your optimization.  I bet it makes parsing take
&gt; longer.  To benchmark this you&apos;d probably have to create a microbenchmark
&gt; that just consists of a few large generator functions that are executed
&gt; exactly once.
&gt; 
&gt; If there is indeed a speed-up from your optimization on long-running things
&gt; and a slow-down on short-running things, then we&apos;d obviously want to switch
&gt; to a design that elides the unnecessary get_from_scope/put_to_scope
&gt; operations in DFG and FTL but not in lower tiers.

I agree to your opinion on the optimization phase.
But even if we don&apos;t use the optimization, I still op_save / op_resume approach is simple and efficient.
Let me describe why I think!

Yup, op_yield makes a little bit complicated to my analysis. And this thing becomes the problem if we use the optimization.

But rather than using op_save / op_resume, op_yield makes the bytecode modification complicated.
In the correct words, inserting switch and jump targets additionally is more complicated than just converting op_save / op_resume.

Currently, we don&apos;t take the approach that is similar to DFG Graph: it means that we change the bytecode instructions in-place and we don&apos;t create any BytecodeNode or so.
It&apos;s space/time-efficient. It does not allocate additional sequence of nodes. It does not take additional path converting bytecodes to the BytecodeNode graph and making the graph back to the bytecode. It&apos;s nice for bytecode analysis.

However, this makes inserting jumps takes more operations. For example, if you would like to insert op_switch_imm additionally at first, we need 2 phase bytecode modifications.

1. before inserting op_switch_imm, we need to adjust jumps in UnlinkedCodeBlock since inserting a bytecode changes the jump offsets.
2. insert op_switch_imm just after the op_enter.
3. adjust inserted op_switch_imm&apos;s jump targets based on it.
4. adjust UnlinkedCodeBlock *again* for the subsequent addition / removal
5. insert/remove other bytecode opcodes, (get_from_scope/put_to_scope)
4. re-calculate jump targets

OR a little bit efficient version is the following.

1. adjust UnlinkedCodeBlock *again* for the subsequent addition / removal
2. insert/remove other bytecode opcodes, (get_from_scope/put_to_scope), it includes switch_imm insertion.
3. specially adjust the inserted switch_imm jump offsets (this is special ops before calculating jump targets)
4. re-calculate jump targets.

But if we already inserted op_switch_imm, the above sequence is more simplified. (And this is just done in this patch&apos;s modification phase.)

1. adjust UnlinkedCodeBlock for the subsequent addition / removal
2. insert / remove bytecode opcodes, (get_from_scope/put_to_scope)
4. re-calculate jump targets

We don&apos;t need to pay attention to the inserted switch_imm specially.

Since dropping the merge-save edge is only required if we perform the latter optimizations, if we don&apos;t do that, the things become super easy.
We just perform liveness analysis and it does not consier anything about save-merge edge.
In that case, we don&apos;t need to pay any attension to the graph&apos;s shape.
So if we don&apos;t use the optimization pass, op_yield does not simplify things.

So even if we do not use the optimization, still I prefer op_save / op_resume approach.
In precise, the approach inserting switch in the bytecode generator makes things simple.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1218697</commentid>
    <comment_count>126</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-08-08 23:04:11 -0700</bug_when>
    <thetext>(In reply to comment #125)
&gt; (In reply to comment #124)
&gt; &gt; Just some context for why I&apos;m asking for those numbers: my intuition is that
&gt; &gt; most functions have a small number of long-lived locals and that most calls
&gt; &gt; to yield will not be one right after the other.  Now, it&apos;s possible to
&gt; &gt; occasionally see functions with a large number of long-lived locals, and
&gt; &gt; it&apos;s also possible to see lots of calls to yield in a row.  But unless
&gt; &gt; *both* of these things happen, your optimization may not have a large effect.
&gt; &gt; 
&gt; &gt; For example, if you have two calls to yield that are far apart then even
&gt; &gt; with no changes to locals in between them, your optimization simply won&apos;t
&gt; &gt; matter: it&apos;s likely that the execution time will be dominated by something
&gt; &gt; other than those load-&gt;store combos.  I would expect that you would need
&gt; &gt; lots of locals, and very little work between yields, for this to make a big
&gt; &gt; difference.
&gt; &gt; 
&gt; &gt; But separately from that, lets assume that this optimization is profitable
&gt; &gt; for common benchmarks, and consider what the simplest mechanism is for
&gt; &gt; achieving the optimization.  Remember, the game with writing optimizations
&gt; &gt; is *not* to write the most comprehensive version of the optimization - but
&gt; &gt; one that succeeds in those cases that are likely to arise in real code.
&gt; &gt; 
&gt; &gt; You argue that op_yield does not permit reasoning about the control flow in
&gt; &gt; the way that your analyses need.  That&apos;s only partly true.  An analysis can
&gt; &gt; simulate whatever control flow it likes.  So, if you need an analysis to
&gt; &gt; &quot;see&quot; the control flow as if the op_yield had already been lowered, then you
&gt; &gt; can simply modify the analysis to do this.  You don&apos;t actually need to make
&gt; &gt; the bytecode&apos;s control flow resemble the shape that the analysis would
&gt; &gt; prefer to consume.  Your generator code will not be the only client of this
&gt; &gt; bytecode.  It matters that the bytecode before generator conversion is easy
&gt; &gt; to understand, and I think that op_yield is easier to understand than
&gt; &gt; op_save/op_resume.
&gt; &gt; 
&gt; &gt; But that&apos;s not my only concern about your conversion strategy.  You appear
&gt; &gt; to be using a lot of flow analyses.  You need to run three flow analyses,
&gt; &gt; two of which are for your optimization.  This seems like it could adversely
&gt; &gt; impact page load times when pages start to use generators in anger.  I think
&gt; &gt; we should aim to not do a lot of expensive things before we even know that a
&gt; &gt; function is hot.
&gt; &gt; 
&gt; &gt; This suggests that your benchmarks should also investigate the effect on
&gt; &gt; parsing performance from your optimization.  I bet it makes parsing take
&gt; &gt; longer.  To benchmark this you&apos;d probably have to create a microbenchmark
&gt; &gt; that just consists of a few large generator functions that are executed
&gt; &gt; exactly once.
&gt; &gt; 
&gt; &gt; If there is indeed a speed-up from your optimization on long-running things
&gt; &gt; and a slow-down on short-running things, then we&apos;d obviously want to switch
&gt; &gt; to a design that elides the unnecessary get_from_scope/put_to_scope
&gt; &gt; operations in DFG and FTL but not in lower tiers.
&gt; 
&gt; I agree to your opinion on the optimization phase.
&gt; But even if we don&apos;t use the optimization, I still op_save / op_resume
&gt; approach is simple and efficient.
&gt; Let me describe why I think!
&gt; 
&gt; Yup, op_yield makes a little bit complicated to my analysis. And this thing
&gt; becomes the problem if we use the optimization.
&gt; 
&gt; But rather than using op_save / op_resume, op_yield makes the bytecode
&gt; modification complicated.
&gt; In the correct words, inserting switch and jump targets additionally is more
&gt; complicated than just converting op_save / op_resume.
&gt; 
&gt; Currently, we don&apos;t take the approach that is similar to DFG Graph: it means
&gt; that we change the bytecode instructions in-place and we don&apos;t create any
&gt; BytecodeNode or so.
&gt; It&apos;s space/time-efficient. It does not allocate additional sequence of
&gt; nodes. It does not take additional path converting bytecodes to the
&gt; BytecodeNode graph and making the graph back to the bytecode. It&apos;s nice for
&gt; bytecode analysis.
&gt; 
&gt; However, this makes inserting jumps takes more operations. For example, if
&gt; you would like to insert op_switch_imm additionally at first, we need 2
&gt; phase bytecode modifications.
&gt; 
&gt; 1. before inserting op_switch_imm, we need to adjust jumps in
&gt; UnlinkedCodeBlock since inserting a bytecode changes the jump offsets.
&gt; 2. insert op_switch_imm just after the op_enter.
&gt; 3. adjust inserted op_switch_imm&apos;s jump targets based on it.
&gt; 4. adjust UnlinkedCodeBlock *again* for the subsequent addition / removal
&gt; 5. insert/remove other bytecode opcodes, (get_from_scope/put_to_scope)
&gt; 4. re-calculate jump targets
&gt; 
&gt; OR a little bit efficient version is the following.
&gt; 
&gt; 1. adjust UnlinkedCodeBlock *again* for the subsequent addition / removal
&gt; 2. insert/remove other bytecode opcodes, (get_from_scope/put_to_scope), it
&gt; includes switch_imm insertion.
&gt; 3. specially adjust the inserted switch_imm jump offsets (this is special
&gt; ops before calculating jump targets)
&gt; 4. re-calculate jump targets.
&gt; 
&gt; But if we already inserted op_switch_imm, the above sequence is more
&gt; simplified. (And this is just done in this patch&apos;s modification phase.)
&gt; 
&gt; 1. adjust UnlinkedCodeBlock for the subsequent addition / removal
&gt; 2. insert / remove bytecode opcodes, (get_from_scope/put_to_scope)
&gt; 4. re-calculate jump targets
&gt; 
&gt; We don&apos;t need to pay attention to the inserted switch_imm specially.
&gt; 
&gt; Since dropping the merge-save edge is only required if we perform the latter
&gt; optimizations, if we don&apos;t do that, the things become super easy.
&gt; We just perform liveness analysis and it does not consier anything about
&gt; save-merge edge.
&gt; In that case, we don&apos;t need to pay any attension to the graph&apos;s shape.
&gt; So if we don&apos;t use the optimization pass, op_yield does not simplify things.
&gt; 
&gt; So even if we do not use the optimization, still I prefer op_save /
&gt; op_resume approach.
&gt; In precise, the approach inserting switch in the bytecode generator makes
&gt; things simple.

In addition, if we use op_yield approach, we additionally need to handle try range split.
This patch split the try-range at op_save-op_resume. As a result, try-range does not cover op_resume part.
This is super nice, since this removes https://bugs.webkit.org/show_bug.cgi?id=159279 hack. Catch variable&apos;s use will be enabled after resume&apos;s get_from_scope is done.

But if there is only op_yield, we need to do either

1. split try-range here!
2. BytecodeLivenessAnalysis handles op_get_from_scope with annotation specially as we do currently for op_resume (that&apos;s super bad)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1218699</commentid>
    <comment_count>127</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-08-08 23:26:42 -0700</bug_when>
    <thetext>  1 Geometric Mean Result: 166.51 ms ± 4.06 ms
  2 
  3 Benchmark   First Iteration Worst 2%    Steady State
  4 Air 70.89 ms ± 7.25 ms  34.67 ms ± 0.72 ms  3032.77 ms ± 23.28 ms   
  5 Basic   39.44 ms ± 1.94 ms  23.21 ms ± 0.55 ms  3148.57 ms ± 76.40 ms   

Do optimization

  7 Geometric Mean Result: 166.51 ms ± 4.32 ms
  8 
  9 Benchmark   First Iteration Worst 2%    Steady State
 10 Air 70.94 ms ± 7.90 ms  35.63 ms ± 1.20 ms  2999.62 ms ± 32.52 ms   
 11 Basic   39.55 ms ± 2.08 ms  22.91 ms ± 0.59 ms  3131.43 ms ± 54.98 ms

It seems slightly better. But not so large impact. For the first patch, I just perform the liveness analysis.
Due to the described reason, still updated patch uses op_save / op_resume.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1218707</commentid>
    <comment_count>128</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-08-09 00:45:12 -0700</bug_when>
    <thetext>(In reply to comment #126)

After considering I think the following design is good.

1. op_ret should be inserted by replacing op_save
2. But keep op_resume to handle try-range split easily
3. switch_imm should be inserted before the generatorification. Inserting jumps in the generatorification brings much more complicated things!

I&apos;ll prototype the design. This makes the graph a little bit simpler while we still use the op_save and op_resume.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1218708</commentid>
    <comment_count>129</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-08-09 00:55:19 -0700</bug_when>
    <thetext>(In reply to comment #128)
&gt; (In reply to comment #126)
&gt; 
&gt; After considering I think the following design is good.
&gt; 
&gt; 1. op_ret should be inserted by replacing op_save
&gt; 2. But keep op_resume to handle try-range split easily
&gt; 3. switch_imm should be inserted before the generatorification. Inserting
&gt; jumps in the generatorification brings much more complicated things!
&gt; 
&gt; I&apos;ll prototype the design. This makes the graph a little bit simpler while
&gt; we still use the op_save and op_resume.

Ah, after prototyping, I think the current one is still simpler.
If we introduce the switch_imm before the generatorification phase,
the current design works super fine. op_resume absorbs all the uses while use information is propagated to the op_save block through the pseudo branch.

If we don&apos;t introduce this op_resume block, we still need to handle these mis-propagated uses to the global generator switch.
To avoid this situation, we should not insert the switch before the generatorification. But it makes the generatorification super complicated rather than this op_save / op_resume.

Anyway, I&apos;ll update the patch. It drops the optimization phases. And as a result, the patch itself becomes super simple.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1218709</commentid>
    <comment_count>130</comment_count>
      <attachid>285633</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-08-09 01:17:17 -0700</bug_when>
    <thetext>Created attachment 285633
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1218710</commentid>
    <comment_count>131</comment_count>
      <attachid>285633</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-08-09 01:18:54 -0700</bug_when>
    <thetext>Comment on attachment 285633
Patch

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

&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:4507
&gt; +    // Restore the try contexts, which start offset is updated to the merge point.

This is super important! It drops hack introduced in https://bugs.webkit.org/show_bug.cgi?id=159279.
The important thing is that, this try-range does not include op_resume!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1218711</commentid>
    <comment_count>132</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-08-09 01:20:41 -0700</bug_when>
    <thetext>Attachment 285633 did not pass style-queue:


ERROR: Source/JavaScriptCore/bytecode/BytecodeBasicBlock.cpp:115:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/BytecodeBasicBlock.cpp:120:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/BytecodeLivenessAnalysisInlines.h:91:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/BytecodeLivenessAnalysisInlines.h:98:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/BytecodeLivenessAnalysisInlines.h:118:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/BytecodeLivenessAnalysisInlines.h:122:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WTF/wtf/IndexedContainerIterator.h:48:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 7 in 69 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1218719</commentid>
    <comment_count>133</comment_count>
      <attachid>285633</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-08-09 04:57:34 -0700</bug_when>
    <thetext>Comment on attachment 285633
Patch

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

&gt; Source/JavaScriptCore/ChangeLog:17
&gt; +                       +--------------&gt; op_resume -----+

If we keep the switch while we replace op_save and op_resume to the op_yield, we accidentally propagate the use information to the root block through the switch&apos;s edge.

entry -&gt; generator switch -&gt; op_yield -&gt;  merge point -&gt;
                           |              ^
                           +--------------+ (use is propagated through this edge)

I don&apos;t think this is good thing. In addition to the try-range&apos;s maintenance ease(This is described in the latter comment), I think op_save / op_resume seems simple.
Let&apos;s look at BytecodeGeneratorification phase, since the optimization is dropped, there is no dropping edge!

And I think inserting the switch jump during generatorification is super complicated thing.
I would like to avoid such situation. Jumps should be inserted before the generatorification. And the generatorification&apos;s modification should focus on just inserting get_from_scope/put_to_scope and dropping op_save &amp; op_resume.

&gt;&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:4507
&gt;&gt; +    // Restore the try contexts, which start offset is updated to the merge point.
&gt; 
&gt; This is super important! It drops hack introduced in https://bugs.webkit.org/show_bug.cgi?id=159279.
&gt; The important thing is that, this try-range does not include op_resume!

Putting op_resume here makes things easy that the merge point label is not the same to the generator&apos;s jump target.
So we can easily keep the following conditions through the generatorification.

1. merge point and later is covered by the split try-range
2. but switch jump target and op_resume is not covered by the try-range</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1218737</commentid>
    <comment_count>134</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-08-09 09:14:19 -0700</bug_when>
    <thetext>Perf results!

                                            Baseline                  Patched

generator-fib                          111.1883+-1.1031     ^     38.3085+-0.2268        ^ definitely 2.9024x faster
generator-sunspider-access-nsieve        6.0454+-0.0903     ^      4.9577+-0.1906        ^ definitely 1.2194x faster
generator-with-several-types           349.9097+-8.9055     ^    152.6911+-2.1553        ^ definitely 2.2916x faster

&lt;geometric&gt;                             61.7180+-0.7429     ^     30.7132+-0.4180        ^ definitely 2.0095x faster

    Baseline:
        Geometric Mean Result: 181.40 ms +- 1.96 ms

        Benchmark    First Iteration        Worst 2%               Steady State
        Air          68.18 ms +- 1.03 ms    35.07 ms +- 0.66 ms    3046.77 ms +- 51.49 ms
        Basic        39.17 ms +- 1.67 ms    28.45 ms +- 0.43 ms    4397.31 ms +- 72.35 ms

    Patched:
        Geometric Mean Result: 167.70 ms ± 1.22 ms

        Benchmark    First Iteration        Worst 2%               Steady State
        Air          67.86 ms +- 0.86 ms    36.05 ms +- 0.54 ms    3032.62 ms +- 26.96 ms
        Basic        38.85 ms +- 0.58 ms    24.66 ms +- 0.70 ms    3134.15 ms +- 54.65 ms</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1218783</commentid>
    <comment_count>135</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-08-09 11:46:07 -0700</bug_when>
    <thetext>(In reply to comment #125)
&gt; (In reply to comment #124)
&gt; &gt; Just some context for why I&apos;m asking for those numbers: my intuition is that
&gt; &gt; most functions have a small number of long-lived locals and that most calls
&gt; &gt; to yield will not be one right after the other.  Now, it&apos;s possible to
&gt; &gt; occasionally see functions with a large number of long-lived locals, and
&gt; &gt; it&apos;s also possible to see lots of calls to yield in a row.  But unless
&gt; &gt; *both* of these things happen, your optimization may not have a large effect.
&gt; &gt; 
&gt; &gt; For example, if you have two calls to yield that are far apart then even
&gt; &gt; with no changes to locals in between them, your optimization simply won&apos;t
&gt; &gt; matter: it&apos;s likely that the execution time will be dominated by something
&gt; &gt; other than those load-&gt;store combos.  I would expect that you would need
&gt; &gt; lots of locals, and very little work between yields, for this to make a big
&gt; &gt; difference.
&gt; &gt; 
&gt; &gt; But separately from that, lets assume that this optimization is profitable
&gt; &gt; for common benchmarks, and consider what the simplest mechanism is for
&gt; &gt; achieving the optimization.  Remember, the game with writing optimizations
&gt; &gt; is *not* to write the most comprehensive version of the optimization - but
&gt; &gt; one that succeeds in those cases that are likely to arise in real code.
&gt; &gt; 
&gt; &gt; You argue that op_yield does not permit reasoning about the control flow in
&gt; &gt; the way that your analyses need.  That&apos;s only partly true.  An analysis can
&gt; &gt; simulate whatever control flow it likes.  So, if you need an analysis to
&gt; &gt; &quot;see&quot; the control flow as if the op_yield had already been lowered, then you
&gt; &gt; can simply modify the analysis to do this.  You don&apos;t actually need to make
&gt; &gt; the bytecode&apos;s control flow resemble the shape that the analysis would
&gt; &gt; prefer to consume.  Your generator code will not be the only client of this
&gt; &gt; bytecode.  It matters that the bytecode before generator conversion is easy
&gt; &gt; to understand, and I think that op_yield is easier to understand than
&gt; &gt; op_save/op_resume.
&gt; &gt; 
&gt; &gt; But that&apos;s not my only concern about your conversion strategy.  You appear
&gt; &gt; to be using a lot of flow analyses.  You need to run three flow analyses,
&gt; &gt; two of which are for your optimization.  This seems like it could adversely
&gt; &gt; impact page load times when pages start to use generators in anger.  I think
&gt; &gt; we should aim to not do a lot of expensive things before we even know that a
&gt; &gt; function is hot.
&gt; &gt; 
&gt; &gt; This suggests that your benchmarks should also investigate the effect on
&gt; &gt; parsing performance from your optimization.  I bet it makes parsing take
&gt; &gt; longer.  To benchmark this you&apos;d probably have to create a microbenchmark
&gt; &gt; that just consists of a few large generator functions that are executed
&gt; &gt; exactly once.
&gt; &gt; 
&gt; &gt; If there is indeed a speed-up from your optimization on long-running things
&gt; &gt; and a slow-down on short-running things, then we&apos;d obviously want to switch
&gt; &gt; to a design that elides the unnecessary get_from_scope/put_to_scope
&gt; &gt; operations in DFG and FTL but not in lower tiers.
&gt; 
&gt; I agree to your opinion on the optimization phase.
&gt; But even if we don&apos;t use the optimization, I still op_save / op_resume
&gt; approach is simple and efficient.
&gt; Let me describe why I think!
&gt; 
&gt; Yup, op_yield makes a little bit complicated to my analysis. And this thing
&gt; becomes the problem if we use the optimization.
&gt; 
&gt; But rather than using op_save / op_resume, op_yield makes the bytecode
&gt; modification complicated.
&gt; In the correct words, inserting switch and jump targets additionally is more
&gt; complicated than just converting op_save / op_resume.
&gt; 
&gt; Currently, we don&apos;t take the approach that is similar to DFG Graph: it means
&gt; that we change the bytecode instructions in-place and we don&apos;t create any
&gt; BytecodeNode or so.
&gt; It&apos;s space/time-efficient. It does not allocate additional sequence of
&gt; nodes. It does not take additional path converting bytecodes to the
&gt; BytecodeNode graph and making the graph back to the bytecode. It&apos;s nice for
&gt; bytecode analysis.

I think you&apos;re misunderstanding what I&apos;ve been suggesting with respect to op_yield.  I&apos;m *not* suggesting creating a bytecode IR in which each instruction gets its own separately allocated node.  I want bytecode to stay the way it is: a linear sequence of instructions.

A common feature of other bytecode VMs, which JSC still lacks, is a bytecode rewriter.  A bytecode rewriter is a module that can be asked to insert instructions, remove instructions, insert branches, remove branches, etc.  The bytecode rewriter can handle rewiring jump offsets, and supports inserting branches both to existing code and to new code that was just inserted.

Some bytecode rewriters, like asm (http://asm.ow2.org), provide a rewriting facility based on first allocating an object for each bytecode instruction.  Others, like the one we had in OpenVM (no link, dead project), only require you to allocate memory for the fragments of new instructions you would insert.  So each slab of put_to_scope&apos;s would be a &quot;fragment&quot;.

I understand that writing such a rewriter is harder than what you have done.  But IR design *must not* be driven by the needs of just one optimization.  You have created a new IR, which is very different from bytecode.  Prior to your change, our bytecode is very conventional.  Control flow is explicit and unambiguous.  This is a useful property, because this is what everyone will expect from bytecode.  You have changed bytecode to have entirely new semantics that nobody would expect: a branch edge can sometimes magically disappear.

We have some experience designing IRs in WebKit.  Some IRs, like our existing bytecode, B3, and Air, follow textbook approaches and are entirely unsurprising.  Other IRs, like DFG CPS and to a lesser extent DFG SSA, are exotic.  Also, our worst bugs are in phases that try to analyze or modify DFG CPS.  Any chance we make to anything that touches DFG CPS takes much longer than changes that modify other parts of the system.  I believe this is caused by DFG CPS&apos;s exotic nature: it has a lot of sneaky features that people don&apos;t expect, and they forget to handle those features when they make changes.

Because you have introduced a new IR - a bytecode with phantom control flow - that is used only between bytecode generation and generatorification, you have created a situation where either this IR can *only* be used for pre-generatorification and cannot be used for any other purpose, or you have created a situation where any attempt to add other lowering phases before generatorification will be super error-prone because people will forget how to handle the semantics of phantom control flow (or they&apos;ll simply not even know that the IR has phantom control flow).

It&apos;s extremely important to design IRs that are not surprising and this is exactly what we&apos;ve worked hard to do in JSC ever since we realized how much of a disaster DFG CPS was.  I could be convinced that we need to use a special IR here, but so far your argument is primarily that it would make your phase easier.  I agree that it would make your phase easier, but this is not a scalable approach to designing IRs.  If we let people make bizarre changes to DFG IR, B3 IR, or Air just because it would make their phase easier, then we would end up with an unmanagable engine.

&gt; 
&gt; However, this makes inserting jumps takes more operations. For example, if
&gt; you would like to insert op_switch_imm additionally at first, we need 2
&gt; phase bytecode modifications.
&gt; 
&gt; 1. before inserting op_switch_imm, we need to adjust jumps in
&gt; UnlinkedCodeBlock since inserting a bytecode changes the jump offsets.
&gt; 2. insert op_switch_imm just after the op_enter.
&gt; 3. adjust inserted op_switch_imm&apos;s jump targets based on it.
&gt; 4. adjust UnlinkedCodeBlock *again* for the subsequent addition / removal
&gt; 5. insert/remove other bytecode opcodes, (get_from_scope/put_to_scope)
&gt; 4. re-calculate jump targets
&gt; 
&gt; OR a little bit efficient version is the following.
&gt; 
&gt; 1. adjust UnlinkedCodeBlock *again* for the subsequent addition / removal
&gt; 2. insert/remove other bytecode opcodes, (get_from_scope/put_to_scope), it
&gt; includes switch_imm insertion.
&gt; 3. specially adjust the inserted switch_imm jump offsets (this is special
&gt; ops before calculating jump targets)
&gt; 4. re-calculate jump targets.

This doesn&apos;t seem that bad.  Do you think that this is bad enough that we need a special IR?

&gt; 
&gt; But if we already inserted op_switch_imm, the above sequence is more
&gt; simplified. (And this is just done in this patch&apos;s modification phase.)
&gt; 
&gt; 1. adjust UnlinkedCodeBlock for the subsequent addition / removal
&gt; 2. insert / remove bytecode opcodes, (get_from_scope/put_to_scope)
&gt; 4. re-calculate jump targets
&gt; 
&gt; We don&apos;t need to pay attention to the inserted switch_imm specially.
&gt; 
&gt; Since dropping the merge-save edge is only required if we perform the latter
&gt; optimizations, if we don&apos;t do that, the things become super easy.
&gt; We just perform liveness analysis and it does not consier anything about
&gt; save-merge edge.
&gt; In that case, we don&apos;t need to pay any attension to the graph&apos;s shape.
&gt; So if we don&apos;t use the optimization pass, op_yield does not simplify things.
&gt; 
&gt; So even if we do not use the optimization, still I prefer op_save /
&gt; op_resume approach.
&gt; In precise, the approach inserting switch in the bytecode generator makes
&gt; things simple.

I would be convinced that op_save/op_resume is better if it makes the parse-&gt;generate-&gt;generatorify pipeline run faster than it would otherwise.  This is a very convincing argument.  Is this what you&apos;re saying, or are you saying something else?

If it&apos;s just that your phase would have less code as a result of having a quirky IR preceding that phase, then it&apos;s not a convincing argument.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1219011</commentid>
    <comment_count>136</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-08-10 05:43:51 -0700</bug_when>
    <thetext>Thank you!!

Aha! Maybe I&apos;ve just understood why you suggest.
The desgin difference between my one and your suggestion comes from the thought about this pre-generatorification IR.
My current design see the pre-generatorification bytecode as the half-baked one.
And this patch assumes the generatofication is only the user of this IR. So everything is designed for this generatorification pass.

I think your op_yield design is good. I&apos;m now exploring the way to use the consistent IR during these phases.
However, still I&apos;m not sure about the situation you assume. So, can I ask you about the IR? :)

(In reply to comment #135)
&gt; I think you&apos;re misunderstanding what I&apos;ve been suggesting with respect to
&gt; op_yield.  I&apos;m *not* suggesting creating a bytecode IR in which each
&gt; instruction gets its own separately allocated node.  I want bytecode to stay
&gt; the way it is: a linear sequence of instructions.
&gt; 
&gt; A common feature of other bytecode VMs, which JSC still lacks, is a bytecode
&gt; rewriter.  A bytecode rewriter is a module that can be asked to insert
&gt; instructions, remove instructions, insert branches, remove branches, etc. 
&gt; The bytecode rewriter can handle rewiring jump offsets, and supports
&gt; inserting branches both to existing code and to new code that was just
&gt; inserted.

It is good to implement the rewriter that can insert the jumps.

&gt; Some bytecode rewriters, like asm (http://asm.ow2.org), provide a rewriting
&gt; facility based on first allocating an object for each bytecode instruction. 
&gt; Others, like the one we had in OpenVM (no link, dead project), only require
&gt; you to allocate memory for the fragments of new instructions you would
&gt; insert.  So each slab of put_to_scope&apos;s would be a &quot;fragment&quot;.
&gt; 
&gt; I understand that writing such a rewriter is harder than what you have done.
&gt; But IR design *must not* be driven by the needs of just one optimization. 

I&apos;m not sure about this. The IR after the generatorification is the same one to the current one.
So all the other pass can enjoy the existing unsurprising IR, right?

The problematic pattern happens only when we would like to insert the pass before the generatorification.
But wait. What is the actual example of such a pass?
Why not inserting the pass after the generatorification?

The beneficial case seems only one case: inserting the op_yield.
The other pass should be inserted after the generatorification and it works without problems.
But, in that case, why don&apos;t we insert the op_yield in the BytecodeGenerator?

&gt; You have created a new IR, which is very different from bytecode.  Prior to
&gt; your change, our bytecode is very conventional.  Control flow is explicit
&gt; and unambiguous.  This is a useful property, because this is what everyone
&gt; will expect from bytecode.  You have changed bytecode to have entirely new
&gt; semantics that nobody would expect: a branch edge can sometimes magically
&gt; disappear.

If we don&apos;t insert anything before the generatorification phase, this IR can be only seen by the generatorification.
Is there any user that can see op_save / op_resume?
The currrent conventional bytecode is completely kept for the pass after the generatorification. 

&gt; We have some experience designing IRs in WebKit.  Some IRs, like our
&gt; existing bytecode, B3, and Air, follow textbook approaches and are entirely
&gt; unsurprising.  Other IRs, like DFG CPS and to a lesser extent DFG SSA, are
&gt; exotic.  Also, our worst bugs are in phases that try to analyze or modify
&gt; DFG CPS.  Any chance we make to anything that touches DFG CPS takes much
&gt; longer than changes that modify other parts of the system.  I believe this
&gt; is caused by DFG CPS&apos;s exotic nature: it has a lot of sneaky features that
&gt; people don&apos;t expect, and they forget to handle those features when they make
&gt; changes.
&gt; 
&gt; Because you have introduced a new IR - a bytecode with phantom control flow
&gt; - that is used only between bytecode generation and generatorification, you
&gt; have created a situation where either this IR can *only* be used for
&gt; pre-generatorification and cannot be used for any other purpose, or you have

This is right. It is convincing if this is the reason why we need to avoid this op_save&apos;s phantom jump.
Having the consistent IR throughout all the pass is nice.

&gt; created a situation where any attempt to add other lowering phases before
&gt; generatorification will be super error-prone because people will forget how
&gt; to handle the semantics of phantom control flow (or they&apos;ll simply not even
&gt; know that the IR has phantom control flow).

Yup, using the consistent IR is good. (And now I&apos;m exploring to change the current implementation to that.)
While it is right, but I don&apos;t think such a situation will occur even if we don&apos;t use the consistent IR.
Again, is there any case we would like to insert the pass before the generatorifiation?

My current design see the pre-generatorification bytecode as the half-baked one.
This is something like the bytecode that does not finish its generation yet.
For example, the bytecode may be meaningless for the analysis if its handlers are not inserted yet.
And that&apos;s why the generatorification is placed just after inserting the handlers: the generatorification is the part of the phase of finishing the bytecode generation.

I didn&apos;t consider the situation that performing the other analysis onto this half-baked IR.
When we perform the flow analysis, the bytecode IR should be already generatorificated.
So, there are no op_save, op_resume. All the jumps are not phantom ones and data flow is explicitly described by get_from_scope/put_to_scope.

&gt; It&apos;s extremely important to design IRs that are not surprising and this is
&gt; exactly what we&apos;ve worked hard to do in JSC ever since we realized how much
&gt; of a disaster DFG CPS was.  I could be convinced that we need to use a
&gt; special IR here, but so far your argument is primarily that it would make
&gt; your phase easier.  I agree that it would make your phase easier, but this
&gt; is not a scalable approach to designing IRs.  If we let people make bizarre
&gt; changes to DFG IR, B3 IR, or Air just because it would make their phase
&gt; easier, then we would end up with an unmanagable engine.

Right. Currently, this patch assumes that the generatorification is only the user of this half-baked IR.
So this patch is focusing on the ease of the generatorification phase since only the generatorification uses it.

&gt; &gt; However, this makes inserting jumps takes more operations. For example, if
&gt; &gt; you would like to insert op_switch_imm additionally at first, we need 2
&gt; &gt; phase bytecode modifications.
&gt; &gt; 
&gt; &gt; 1. before inserting op_switch_imm, we need to adjust jumps in
&gt; &gt; UnlinkedCodeBlock since inserting a bytecode changes the jump offsets.
&gt; &gt; 2. insert op_switch_imm just after the op_enter.
&gt; &gt; 3. adjust inserted op_switch_imm&apos;s jump targets based on it.
&gt; &gt; 4. adjust UnlinkedCodeBlock *again* for the subsequent addition / removal
&gt; &gt; 5. insert/remove other bytecode opcodes, (get_from_scope/put_to_scope)
&gt; &gt; 4. re-calculate jump targets
&gt; &gt; 
&gt; &gt; OR a little bit efficient version is the following.
&gt; &gt; 
&gt; &gt; 1. adjust UnlinkedCodeBlock *again* for the subsequent addition / removal
&gt; &gt; 2. insert/remove other bytecode opcodes, (get_from_scope/put_to_scope), it
&gt; &gt; includes switch_imm insertion.
&gt; &gt; 3. specially adjust the inserted switch_imm jump offsets (this is special
&gt; &gt; ops before calculating jump targets)
&gt; &gt; 4. re-calculate jump targets.
&gt; 
&gt; This doesn&apos;t seem that bad.  Do you think that this is bad enough that we
&gt; need a special IR?

BTW, i&apos;m currently exploring this way.

&gt; &gt; 
&gt; &gt; But if we already inserted op_switch_imm, the above sequence is more
&gt; &gt; simplified. (And this is just done in this patch&apos;s modification phase.)
&gt; &gt; 
&gt; &gt; 1. adjust UnlinkedCodeBlock for the subsequent addition / removal
&gt; &gt; 2. insert / remove bytecode opcodes, (get_from_scope/put_to_scope)
&gt; &gt; 4. re-calculate jump targets
&gt; &gt; 
&gt; &gt; We don&apos;t need to pay attention to the inserted switch_imm specially.
&gt; &gt; 
&gt; &gt; Since dropping the merge-save edge is only required if we perform the latter
&gt; &gt; optimizations, if we don&apos;t do that, the things become super easy.
&gt; &gt; We just perform liveness analysis and it does not consier anything about
&gt; &gt; save-merge edge.
&gt; &gt; In that case, we don&apos;t need to pay any attension to the graph&apos;s shape.
&gt; &gt; So if we don&apos;t use the optimization pass, op_yield does not simplify things.
&gt; &gt; 
&gt; &gt; So even if we do not use the optimization, still I prefer op_save /
&gt; &gt; op_resume approach.
&gt; &gt; In precise, the approach inserting switch in the bytecode generator makes
&gt; &gt; things simple.
&gt; 
&gt; I would be convinced that op_save/op_resume is better if it makes the
&gt; parse-&gt;generate-&gt;generatorify pipeline run faster than it would otherwise. 
&gt; This is a very convincing argument.  Is this what you&apos;re saying, or are you
&gt; saying something else?
&gt; 
&gt; If it&apos;s just that your phase would have less code as a result of having a
&gt; quirky IR preceding that phase, then it&apos;s not a convincing argument.

And this is due to the ease of the generatorification as described in the sequence of the rewriting.
This is because I saw the pre-generatorification IR is the half-baked one and I saw the generatorification is only the user.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1219012</commentid>
    <comment_count>137</comment_count>
      <attachid>285633</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-08-10 05:56:11 -0700</bug_when>
    <thetext>Comment on attachment 285633
Patch

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

&gt; Source/JavaScriptCore/bytecode/BytecodeModificationSet.h:35
&gt; +class BytecodeModificationSet {

Let&apos;s implement the more powerful utility.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1219084</commentid>
    <comment_count>138</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-08-10 12:49:25 -0700</bug_when>
    <thetext>(In reply to comment #136)
&gt; Thank you!!
&gt; 
&gt; Aha! Maybe I&apos;ve just understood why you suggest.
&gt; The desgin difference between my one and your suggestion comes from the
&gt; thought about this pre-generatorification IR.
&gt; My current design see the pre-generatorification bytecode as the half-baked
&gt; one.
&gt; And this patch assumes the generatofication is only the user of this IR. So
&gt; everything is designed for this generatorification pass.
&gt; 
&gt; I think your op_yield design is good. I&apos;m now exploring the way to use the
&gt; consistent IR during these phases.
&gt; However, still I&apos;m not sure about the situation you assume. So, can I ask
&gt; you about the IR? :)
&gt; 
&gt; (In reply to comment #135)
&gt; &gt; I think you&apos;re misunderstanding what I&apos;ve been suggesting with respect to
&gt; &gt; op_yield.  I&apos;m *not* suggesting creating a bytecode IR in which each
&gt; &gt; instruction gets its own separately allocated node.  I want bytecode to stay
&gt; &gt; the way it is: a linear sequence of instructions.
&gt; &gt; 
&gt; &gt; A common feature of other bytecode VMs, which JSC still lacks, is a bytecode
&gt; &gt; rewriter.  A bytecode rewriter is a module that can be asked to insert
&gt; &gt; instructions, remove instructions, insert branches, remove branches, etc. 
&gt; &gt; The bytecode rewriter can handle rewiring jump offsets, and supports
&gt; &gt; inserting branches both to existing code and to new code that was just
&gt; &gt; inserted.
&gt; 
&gt; It is good to implement the rewriter that can insert the jumps.
&gt; 
&gt; &gt; Some bytecode rewriters, like asm (http://asm.ow2.org), provide a rewriting
&gt; &gt; facility based on first allocating an object for each bytecode instruction. 
&gt; &gt; Others, like the one we had in OpenVM (no link, dead project), only require
&gt; &gt; you to allocate memory for the fragments of new instructions you would
&gt; &gt; insert.  So each slab of put_to_scope&apos;s would be a &quot;fragment&quot;.
&gt; &gt; 
&gt; &gt; I understand that writing such a rewriter is harder than what you have done.
&gt; &gt; But IR design *must not* be driven by the needs of just one optimization. 
&gt; 
&gt; I&apos;m not sure about this. The IR after the generatorification is the same one
&gt; to the current one.
&gt; So all the other pass can enjoy the existing unsurprising IR, right?
&gt; 
&gt; The problematic pattern happens only when we would like to insert the pass
&gt; before the generatorification.
&gt; But wait. What is the actual example of such a pass?
&gt; Why not inserting the pass after the generatorification?
&gt; 
&gt; The beneficial case seems only one case: inserting the op_yield.
&gt; The other pass should be inserted after the generatorification and it works
&gt; without problems.
&gt; But, in that case, why don&apos;t we insert the op_yield in the BytecodeGenerator?

It&apos;s true that we could simply say that generatorification must run first.

But what if TC39 adds another feature to the language that also requires a desugaring, and we also decide to implement it as a bytecode rewrite.  If generatorification must run first, then it would mean that generatorification would have to be taught to understand the pre-desugared version of the new desugaring, and the new desugaring will have to run after generatorification.

That seems like a nasty constraint, and I don&apos;t think this would scale to more than a handful of desugarings.

In DFG SSA and B3 we resolve the scalability problem of inter-phase dependencies by requiring that the input and output of any phase is valid IR that obeys the same rules.  This way, even if you don&apos;t understand what (for example) B3&apos;s LowerMacros does to ChillDiv, Switch, and other opcodes, you can still write phases that run either before LowerMacros, after LowerMacros, or both.

&gt; 
&gt; &gt; You have created a new IR, which is very different from bytecode.  Prior to
&gt; &gt; your change, our bytecode is very conventional.  Control flow is explicit
&gt; &gt; and unambiguous.  This is a useful property, because this is what everyone
&gt; &gt; will expect from bytecode.  You have changed bytecode to have entirely new
&gt; &gt; semantics that nobody would expect: a branch edge can sometimes magically
&gt; &gt; disappear.
&gt; 
&gt; If we don&apos;t insert anything before the generatorification phase, this IR can
&gt; be only seen by the generatorification.
&gt; Is there any user that can see op_save / op_resume?
&gt; The currrent conventional bytecode is completely kept for the pass after the
&gt; generatorification. 

I&apos;m just thinking that if we decided to use bytecode rewriting to handle generators then this suggests that we will also want to use bytecode rewriting for other things in the future.  If generatorification has the special status that it must be the first bytecode rewrite, then this places a constraint on any future bytecode rewrite: generatorification will now have to be taught the un-lowered pseudo-opcodes that are inputs to any future bytecode rewrite and no future bytecode rewrite will be able to take first place.

On the other hand, the op_yield approach means that when we do write a new rewriter, we have the freedom of putting it either before generatorification or after.  I like having that kind of freedom, because we&apos;ve found it to be handy in DFG and B3.  Certainly other compilers, like LLVM, strive to ensure that each phases takes valid IR as input and produces valid IR as output, and the semantics of the IR don&apos;t change.

&gt; 
&gt; &gt; We have some experience designing IRs in WebKit.  Some IRs, like our
&gt; &gt; existing bytecode, B3, and Air, follow textbook approaches and are entirely
&gt; &gt; unsurprising.  Other IRs, like DFG CPS and to a lesser extent DFG SSA, are
&gt; &gt; exotic.  Also, our worst bugs are in phases that try to analyze or modify
&gt; &gt; DFG CPS.  Any chance we make to anything that touches DFG CPS takes much
&gt; &gt; longer than changes that modify other parts of the system.  I believe this
&gt; &gt; is caused by DFG CPS&apos;s exotic nature: it has a lot of sneaky features that
&gt; &gt; people don&apos;t expect, and they forget to handle those features when they make
&gt; &gt; changes.
&gt; &gt; 
&gt; &gt; Because you have introduced a new IR - a bytecode with phantom control flow
&gt; &gt; - that is used only between bytecode generation and generatorification, you
&gt; &gt; have created a situation where either this IR can *only* be used for
&gt; &gt; pre-generatorification and cannot be used for any other purpose, or you have
&gt; 
&gt; This is right. It is convincing if this is the reason why we need to avoid
&gt; this op_save&apos;s phantom jump.
&gt; Having the consistent IR throughout all the pass is nice.
&gt; 
&gt; &gt; created a situation where any attempt to add other lowering phases before
&gt; &gt; generatorification will be super error-prone because people will forget how
&gt; &gt; to handle the semantics of phantom control flow (or they&apos;ll simply not even
&gt; &gt; know that the IR has phantom control flow).
&gt; 
&gt; Yup, using the consistent IR is good. (And now I&apos;m exploring to change the
&gt; current implementation to that.)
&gt; While it is right, but I don&apos;t think such a situation will occur even if we
&gt; don&apos;t use the consistent IR.
&gt; Again, is there any case we would like to insert the pass before the
&gt; generatorifiation?
&gt; 
&gt; My current design see the pre-generatorification bytecode as the half-baked
&gt; one.
&gt; This is something like the bytecode that does not finish its generation yet.
&gt; For example, the bytecode may be meaningless for the analysis if its
&gt; handlers are not inserted yet.
&gt; And that&apos;s why the generatorification is placed just after inserting the
&gt; handlers: the generatorification is the part of the phase of finishing the
&gt; bytecode generation.
&gt; 
&gt; I didn&apos;t consider the situation that performing the other analysis onto this
&gt; half-baked IR.
&gt; When we perform the flow analysis, the bytecode IR should be already
&gt; generatorificated.
&gt; So, there are no op_save, op_resume. All the jumps are not phantom ones and
&gt; data flow is explicitly described by get_from_scope/put_to_scope.
&gt; 
&gt; &gt; It&apos;s extremely important to design IRs that are not surprising and this is
&gt; &gt; exactly what we&apos;ve worked hard to do in JSC ever since we realized how much
&gt; &gt; of a disaster DFG CPS was.  I could be convinced that we need to use a
&gt; &gt; special IR here, but so far your argument is primarily that it would make
&gt; &gt; your phase easier.  I agree that it would make your phase easier, but this
&gt; &gt; is not a scalable approach to designing IRs.  If we let people make bizarre
&gt; &gt; changes to DFG IR, B3 IR, or Air just because it would make their phase
&gt; &gt; easier, then we would end up with an unmanagable engine.
&gt; 
&gt; Right. Currently, this patch assumes that the generatorification is only the
&gt; user of this half-baked IR.
&gt; So this patch is focusing on the ease of the generatorification phase since
&gt; only the generatorification uses it.
&gt; 
&gt; &gt; &gt; However, this makes inserting jumps takes more operations. For example, if
&gt; &gt; &gt; you would like to insert op_switch_imm additionally at first, we need 2
&gt; &gt; &gt; phase bytecode modifications.
&gt; &gt; &gt; 
&gt; &gt; &gt; 1. before inserting op_switch_imm, we need to adjust jumps in
&gt; &gt; &gt; UnlinkedCodeBlock since inserting a bytecode changes the jump offsets.
&gt; &gt; &gt; 2. insert op_switch_imm just after the op_enter.
&gt; &gt; &gt; 3. adjust inserted op_switch_imm&apos;s jump targets based on it.
&gt; &gt; &gt; 4. adjust UnlinkedCodeBlock *again* for the subsequent addition / removal
&gt; &gt; &gt; 5. insert/remove other bytecode opcodes, (get_from_scope/put_to_scope)
&gt; &gt; &gt; 4. re-calculate jump targets
&gt; &gt; &gt; 
&gt; &gt; &gt; OR a little bit efficient version is the following.
&gt; &gt; &gt; 
&gt; &gt; &gt; 1. adjust UnlinkedCodeBlock *again* for the subsequent addition / removal
&gt; &gt; &gt; 2. insert/remove other bytecode opcodes, (get_from_scope/put_to_scope), it
&gt; &gt; &gt; includes switch_imm insertion.
&gt; &gt; &gt; 3. specially adjust the inserted switch_imm jump offsets (this is special
&gt; &gt; &gt; ops before calculating jump targets)
&gt; &gt; &gt; 4. re-calculate jump targets.
&gt; &gt; 
&gt; &gt; This doesn&apos;t seem that bad.  Do you think that this is bad enough that we
&gt; &gt; need a special IR?
&gt; 
&gt; BTW, i&apos;m currently exploring this way.
&gt; 
&gt; &gt; &gt; 
&gt; &gt; &gt; But if we already inserted op_switch_imm, the above sequence is more
&gt; &gt; &gt; simplified. (And this is just done in this patch&apos;s modification phase.)
&gt; &gt; &gt; 
&gt; &gt; &gt; 1. adjust UnlinkedCodeBlock for the subsequent addition / removal
&gt; &gt; &gt; 2. insert / remove bytecode opcodes, (get_from_scope/put_to_scope)
&gt; &gt; &gt; 4. re-calculate jump targets
&gt; &gt; &gt; 
&gt; &gt; &gt; We don&apos;t need to pay attention to the inserted switch_imm specially.
&gt; &gt; &gt; 
&gt; &gt; &gt; Since dropping the merge-save edge is only required if we perform the latter
&gt; &gt; &gt; optimizations, if we don&apos;t do that, the things become super easy.
&gt; &gt; &gt; We just perform liveness analysis and it does not consier anything about
&gt; &gt; &gt; save-merge edge.
&gt; &gt; &gt; In that case, we don&apos;t need to pay any attension to the graph&apos;s shape.
&gt; &gt; &gt; So if we don&apos;t use the optimization pass, op_yield does not simplify things.
&gt; &gt; &gt; 
&gt; &gt; &gt; So even if we do not use the optimization, still I prefer op_save /
&gt; &gt; &gt; op_resume approach.
&gt; &gt; &gt; In precise, the approach inserting switch in the bytecode generator makes
&gt; &gt; &gt; things simple.
&gt; &gt; 
&gt; &gt; I would be convinced that op_save/op_resume is better if it makes the
&gt; &gt; parse-&gt;generate-&gt;generatorify pipeline run faster than it would otherwise. 
&gt; &gt; This is a very convincing argument.  Is this what you&apos;re saying, or are you
&gt; &gt; saying something else?
&gt; &gt; 
&gt; &gt; If it&apos;s just that your phase would have less code as a result of having a
&gt; &gt; quirky IR preceding that phase, then it&apos;s not a convincing argument.
&gt; 
&gt; And this is due to the ease of the generatorification as described in the
&gt; sequence of the rewriting.
&gt; This is because I saw the pre-generatorification IR is the half-baked one
&gt; and I saw the generatorification is only the user.

I&apos;ve been thinking more about the performance argument.  I can totally buy that your current approach, however half-baked from a philosophical standpoint, is actually optimal because it conserves total work.  The bytecode generator is already well-equipped to emit things like switches, which then reduces the amount of work that the generatorificator has to do.

Now that we&apos;ve explored a lot of these ideas, I&apos;ll leave it up to decide what you think is best.  I&apos;m happy to review the op_save/resume version in its current form, on the grounds that it *might* be the fastest approach.  You could even try the op_yield version after this lands, and then we will be able to do a head-to-head perf comparison.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1219583</commentid>
    <comment_count>139</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-08-12 07:59:23 -0700</bug_when>
    <thetext>Thanks!

(In reply to comment #138)
&gt; (In reply to comment #136)
&gt; &gt; Thank you!!
&gt; &gt; 
&gt; &gt; Aha! Maybe I&apos;ve just understood why you suggest.
&gt; &gt; The desgin difference between my one and your suggestion comes from the
&gt; &gt; thought about this pre-generatorification IR.
&gt; &gt; My current design see the pre-generatorification bytecode as the half-baked
&gt; &gt; one.
&gt; &gt; And this patch assumes the generatofication is only the user of this IR. So
&gt; &gt; everything is designed for this generatorification pass.
&gt; &gt; 
&gt; &gt; I think your op_yield design is good. I&apos;m now exploring the way to use the
&gt; &gt; consistent IR during these phases.
&gt; &gt; However, still I&apos;m not sure about the situation you assume. So, can I ask
&gt; &gt; you about the IR? :)
&gt; &gt; 
&gt; &gt; (In reply to comment #135)
&gt; &gt; &gt; I think you&apos;re misunderstanding what I&apos;ve been suggesting with respect to
&gt; &gt; &gt; op_yield.  I&apos;m *not* suggesting creating a bytecode IR in which each
&gt; &gt; &gt; instruction gets its own separately allocated node.  I want bytecode to stay
&gt; &gt; &gt; the way it is: a linear sequence of instructions.
&gt; &gt; &gt; 
&gt; &gt; &gt; A common feature of other bytecode VMs, which JSC still lacks, is a bytecode
&gt; &gt; &gt; rewriter.  A bytecode rewriter is a module that can be asked to insert
&gt; &gt; &gt; instructions, remove instructions, insert branches, remove branches, etc. 
&gt; &gt; &gt; The bytecode rewriter can handle rewiring jump offsets, and supports
&gt; &gt; &gt; inserting branches both to existing code and to new code that was just
&gt; &gt; &gt; inserted.
&gt; &gt; 
&gt; &gt; It is good to implement the rewriter that can insert the jumps.
&gt; &gt; 
&gt; &gt; &gt; Some bytecode rewriters, like asm (http://asm.ow2.org), provide a rewriting
&gt; &gt; &gt; facility based on first allocating an object for each bytecode instruction. 
&gt; &gt; &gt; Others, like the one we had in OpenVM (no link, dead project), only require
&gt; &gt; &gt; you to allocate memory for the fragments of new instructions you would
&gt; &gt; &gt; insert.  So each slab of put_to_scope&apos;s would be a &quot;fragment&quot;.
&gt; &gt; &gt; 
&gt; &gt; &gt; I understand that writing such a rewriter is harder than what you have done.
&gt; &gt; &gt; But IR design *must not* be driven by the needs of just one optimization. 
&gt; &gt; 
&gt; &gt; I&apos;m not sure about this. The IR after the generatorification is the same one
&gt; &gt; to the current one.
&gt; &gt; So all the other pass can enjoy the existing unsurprising IR, right?
&gt; &gt; 
&gt; &gt; The problematic pattern happens only when we would like to insert the pass
&gt; &gt; before the generatorification.
&gt; &gt; But wait. What is the actual example of such a pass?
&gt; &gt; Why not inserting the pass after the generatorification?
&gt; &gt; 
&gt; &gt; The beneficial case seems only one case: inserting the op_yield.
&gt; &gt; The other pass should be inserted after the generatorification and it works
&gt; &gt; without problems.
&gt; &gt; But, in that case, why don&apos;t we insert the op_yield in the BytecodeGenerator?
&gt; 
&gt; It&apos;s true that we could simply say that generatorification must run first.
&gt; 
&gt; But what if TC39 adds another feature to the language that also requires a
&gt; desugaring, and we also decide to implement it as a bytecode rewrite.  If
&gt; generatorification must run first, then it would mean that
&gt; generatorification would have to be taught to understand the pre-desugared
&gt; version of the new desugaring, and the new desugaring will have to run after
&gt; generatorification.
&gt; 
&gt; That seems like a nasty constraint, and I don&apos;t think this would scale to
&gt; more than a handful of desugarings.
&gt; 
&gt; In DFG SSA and B3 we resolve the scalability problem of inter-phase
&gt; dependencies by requiring that the input and output of any phase is valid IR
&gt; that obeys the same rules.  This way, even if you don&apos;t understand what (for
&gt; example) B3&apos;s LowerMacros does to ChillDiv, Switch, and other opcodes, you
&gt; can still write phases that run either before LowerMacros, after
&gt; LowerMacros, or both.

Make sense.


&gt; 
&gt; &gt; 
&gt; &gt; &gt; You have created a new IR, which is very different from bytecode.  Prior to
&gt; &gt; &gt; your change, our bytecode is very conventional.  Control flow is explicit
&gt; &gt; &gt; and unambiguous.  This is a useful property, because this is what everyone
&gt; &gt; &gt; will expect from bytecode.  You have changed bytecode to have entirely new
&gt; &gt; &gt; semantics that nobody would expect: a branch edge can sometimes magically
&gt; &gt; &gt; disappear.
&gt; &gt; 
&gt; &gt; If we don&apos;t insert anything before the generatorification phase, this IR can
&gt; &gt; be only seen by the generatorification.
&gt; &gt; Is there any user that can see op_save / op_resume?
&gt; &gt; The currrent conventional bytecode is completely kept for the pass after the
&gt; &gt; generatorification. 
&gt; 
&gt; I&apos;m just thinking that if we decided to use bytecode rewriting to handle
&gt; generators then this suggests that we will also want to use bytecode
&gt; rewriting for other things in the future.  If generatorification has the
&gt; special status that it must be the first bytecode rewrite, then this places
&gt; a constraint on any future bytecode rewrite: generatorification will now
&gt; have to be taught the un-lowered pseudo-opcodes that are inputs to any
&gt; future bytecode rewrite and no future bytecode rewrite will be able to take
&gt; first place.
&gt; 
&gt; On the other hand, the op_yield approach means that when we do write a new
&gt; rewriter, we have the freedom of putting it either before generatorification
&gt; or after.  I like having that kind of freedom, because we&apos;ve found it to be
&gt; handy in DFG and B3.  Certainly other compilers, like LLVM, strive to ensure
&gt; that each phases takes valid IR as input and produces valid IR as output,
&gt; and the semantics of the IR don&apos;t change.
&gt; 
&gt; &gt; 
&gt; &gt; &gt; We have some experience designing IRs in WebKit.  Some IRs, like our
&gt; &gt; &gt; existing bytecode, B3, and Air, follow textbook approaches and are entirely
&gt; &gt; &gt; unsurprising.  Other IRs, like DFG CPS and to a lesser extent DFG SSA, are
&gt; &gt; &gt; exotic.  Also, our worst bugs are in phases that try to analyze or modify
&gt; &gt; &gt; DFG CPS.  Any chance we make to anything that touches DFG CPS takes much
&gt; &gt; &gt; longer than changes that modify other parts of the system.  I believe this
&gt; &gt; &gt; is caused by DFG CPS&apos;s exotic nature: it has a lot of sneaky features that
&gt; &gt; &gt; people don&apos;t expect, and they forget to handle those features when they make
&gt; &gt; &gt; changes.
&gt; &gt; &gt; 
&gt; &gt; &gt; Because you have introduced a new IR - a bytecode with phantom control flow
&gt; &gt; &gt; - that is used only between bytecode generation and generatorification, you
&gt; &gt; &gt; have created a situation where either this IR can *only* be used for
&gt; &gt; &gt; pre-generatorification and cannot be used for any other purpose, or you have
&gt; &gt; 
&gt; &gt; This is right. It is convincing if this is the reason why we need to avoid
&gt; &gt; this op_save&apos;s phantom jump.
&gt; &gt; Having the consistent IR throughout all the pass is nice.
&gt; &gt; 
&gt; &gt; &gt; created a situation where any attempt to add other lowering phases before
&gt; &gt; &gt; generatorification will be super error-prone because people will forget how
&gt; &gt; &gt; to handle the semantics of phantom control flow (or they&apos;ll simply not even
&gt; &gt; &gt; know that the IR has phantom control flow).
&gt; &gt; 
&gt; &gt; Yup, using the consistent IR is good. (And now I&apos;m exploring to change the
&gt; &gt; current implementation to that.)
&gt; &gt; While it is right, but I don&apos;t think such a situation will occur even if we
&gt; &gt; don&apos;t use the consistent IR.
&gt; &gt; Again, is there any case we would like to insert the pass before the
&gt; &gt; generatorifiation?
&gt; &gt; 
&gt; &gt; My current design see the pre-generatorification bytecode as the half-baked
&gt; &gt; one.
&gt; &gt; This is something like the bytecode that does not finish its generation yet.
&gt; &gt; For example, the bytecode may be meaningless for the analysis if its
&gt; &gt; handlers are not inserted yet.
&gt; &gt; And that&apos;s why the generatorification is placed just after inserting the
&gt; &gt; handlers: the generatorification is the part of the phase of finishing the
&gt; &gt; bytecode generation.
&gt; &gt; 
&gt; &gt; I didn&apos;t consider the situation that performing the other analysis onto this
&gt; &gt; half-baked IR.
&gt; &gt; When we perform the flow analysis, the bytecode IR should be already
&gt; &gt; generatorificated.
&gt; &gt; So, there are no op_save, op_resume. All the jumps are not phantom ones and
&gt; &gt; data flow is explicitly described by get_from_scope/put_to_scope.
&gt; &gt; 
&gt; &gt; &gt; It&apos;s extremely important to design IRs that are not surprising and this is
&gt; &gt; &gt; exactly what we&apos;ve worked hard to do in JSC ever since we realized how much
&gt; &gt; &gt; of a disaster DFG CPS was.  I could be convinced that we need to use a
&gt; &gt; &gt; special IR here, but so far your argument is primarily that it would make
&gt; &gt; &gt; your phase easier.  I agree that it would make your phase easier, but this
&gt; &gt; &gt; is not a scalable approach to designing IRs.  If we let people make bizarre
&gt; &gt; &gt; changes to DFG IR, B3 IR, or Air just because it would make their phase
&gt; &gt; &gt; easier, then we would end up with an unmanagable engine.
&gt; &gt; 
&gt; &gt; Right. Currently, this patch assumes that the generatorification is only the
&gt; &gt; user of this half-baked IR.
&gt; &gt; So this patch is focusing on the ease of the generatorification phase since
&gt; &gt; only the generatorification uses it.
&gt; &gt; 
&gt; &gt; &gt; &gt; However, this makes inserting jumps takes more operations. For example, if
&gt; &gt; &gt; &gt; you would like to insert op_switch_imm additionally at first, we need 2
&gt; &gt; &gt; &gt; phase bytecode modifications.
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; 1. before inserting op_switch_imm, we need to adjust jumps in
&gt; &gt; &gt; &gt; UnlinkedCodeBlock since inserting a bytecode changes the jump offsets.
&gt; &gt; &gt; &gt; 2. insert op_switch_imm just after the op_enter.
&gt; &gt; &gt; &gt; 3. adjust inserted op_switch_imm&apos;s jump targets based on it.
&gt; &gt; &gt; &gt; 4. adjust UnlinkedCodeBlock *again* for the subsequent addition / removal
&gt; &gt; &gt; &gt; 5. insert/remove other bytecode opcodes, (get_from_scope/put_to_scope)
&gt; &gt; &gt; &gt; 4. re-calculate jump targets
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; OR a little bit efficient version is the following.
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; 1. adjust UnlinkedCodeBlock *again* for the subsequent addition / removal
&gt; &gt; &gt; &gt; 2. insert/remove other bytecode opcodes, (get_from_scope/put_to_scope), it
&gt; &gt; &gt; &gt; includes switch_imm insertion.
&gt; &gt; &gt; &gt; 3. specially adjust the inserted switch_imm jump offsets (this is special
&gt; &gt; &gt; &gt; ops before calculating jump targets)
&gt; &gt; &gt; &gt; 4. re-calculate jump targets.
&gt; &gt; &gt; 
&gt; &gt; &gt; This doesn&apos;t seem that bad.  Do you think that this is bad enough that we
&gt; &gt; &gt; need a special IR?
&gt; &gt; 
&gt; &gt; BTW, i&apos;m currently exploring this way.
&gt; &gt; 
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; But if we already inserted op_switch_imm, the above sequence is more
&gt; &gt; &gt; &gt; simplified. (And this is just done in this patch&apos;s modification phase.)
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; 1. adjust UnlinkedCodeBlock for the subsequent addition / removal
&gt; &gt; &gt; &gt; 2. insert / remove bytecode opcodes, (get_from_scope/put_to_scope)
&gt; &gt; &gt; &gt; 4. re-calculate jump targets
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; We don&apos;t need to pay attention to the inserted switch_imm specially.
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Since dropping the merge-save edge is only required if we perform the latter
&gt; &gt; &gt; &gt; optimizations, if we don&apos;t do that, the things become super easy.
&gt; &gt; &gt; &gt; We just perform liveness analysis and it does not consier anything about
&gt; &gt; &gt; &gt; save-merge edge.
&gt; &gt; &gt; &gt; In that case, we don&apos;t need to pay any attension to the graph&apos;s shape.
&gt; &gt; &gt; &gt; So if we don&apos;t use the optimization pass, op_yield does not simplify things.
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; So even if we do not use the optimization, still I prefer op_save /
&gt; &gt; &gt; &gt; op_resume approach.
&gt; &gt; &gt; &gt; In precise, the approach inserting switch in the bytecode generator makes
&gt; &gt; &gt; &gt; things simple.
&gt; &gt; &gt; 
&gt; &gt; &gt; I would be convinced that op_save/op_resume is better if it makes the
&gt; &gt; &gt; parse-&gt;generate-&gt;generatorify pipeline run faster than it would otherwise. 
&gt; &gt; &gt; This is a very convincing argument.  Is this what you&apos;re saying, or are you
&gt; &gt; &gt; saying something else?
&gt; &gt; &gt; 
&gt; &gt; &gt; If it&apos;s just that your phase would have less code as a result of having a
&gt; &gt; &gt; quirky IR preceding that phase, then it&apos;s not a convincing argument.
&gt; &gt; 
&gt; &gt; And this is due to the ease of the generatorification as described in the
&gt; &gt; sequence of the rewriting.
&gt; &gt; This is because I saw the pre-generatorification IR is the half-baked one
&gt; &gt; and I saw the generatorification is only the user.
&gt; 
&gt; I&apos;ve been thinking more about the performance argument.  I can totally buy
&gt; that your current approach, however half-baked from a philosophical
&gt; standpoint, is actually optimal because it conserves total work.  The
&gt; bytecode generator is already well-equipped to emit things like switches,
&gt; which then reduces the amount of work that the generatorificator has to do.
&gt; 
&gt; Now that we&apos;ve explored a lot of these ideas, I&apos;ll leave it up to decide
&gt; what you think is best.  I&apos;m happy to review the op_save/resume version in
&gt; its current form, on the grounds that it *might* be the fastest approach. 
&gt; You could even try the op_yield version after this lands, and then we will
&gt; be able to do a head-to-head perf comparison.

Interesting.
OK, I&apos;ll explore the way to use the one IR (using op_yield, and insert jumps in the generatorification phase) and check the performance change :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1221616</commentid>
    <comment_count>140</comment_count>
      <attachid>286526</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-08-19 22:10:53 -0700</bug_when>
    <thetext>Created attachment 286526
Patch

WIP: rebaseline</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1222335</commentid>
    <comment_count>141</comment_count>
      <attachid>286753</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-08-23 11:58:27 -0700</bug_when>
    <thetext>Created attachment 286753
Patch

WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1222386</commentid>
    <comment_count>142</comment_count>
      <attachid>286766</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-08-23 13:30:05 -0700</bug_when>
    <thetext>Created attachment 286766
Patch

WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1222572</commentid>
    <comment_count>143</comment_count>
      <attachid>286826</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-08-23 20:02:41 -0700</bug_when>
    <thetext>Created attachment 286826
Patch

WIP: OK, op_yield approach just works! We need to refactor it</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1222574</commentid>
    <comment_count>144</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-08-23 20:05:28 -0700</bug_when>
    <thetext>Attachment 286826 did not pass style-queue:


ERROR: Source/WTF/wtf/IndexedContainerIterator.h:48:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 1 in 72 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1222707</commentid>
    <comment_count>145</comment_count>
      <attachid>286863</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-08-24 10:28:11 -0700</bug_when>
    <thetext>Created attachment 286863
Patch

WIP: OK! Almost complete patch. Rewriter can insert switches and fragments. And if we extend it, we can insert any jumps! The patch includes moving good data structures from B3 to WTF. This is used in the previous patch. But now, it is not used. While it&apos;s not used, it is still beneficial since it can be used for bytecode basic blocks. So I&apos;ll split this out of this patch and create the simple patch moving the data structures out of B3. Simplifying...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1222710</commentid>
    <comment_count>146</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-08-24 10:33:16 -0700</bug_when>
    <thetext>Attachment 286863 did not pass style-queue:


ERROR: Source/WTF/wtf/IndexedContainerIterator.h:48:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 1 in 72 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1222717</commentid>
    <comment_count>147</comment_count>
      <attachid>286863</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-08-24 10:40:35 -0700</bug_when>
    <thetext>Comment on attachment 286863
Patch

Oops. Still simplifying...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1222790</commentid>
    <comment_count>148</comment_count>
      <attachid>286882</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-08-24 12:55:06 -0700</bug_when>
    <thetext>Created attachment 286882
Patch

WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1222836</commentid>
    <comment_count>149</comment_count>
      <attachid>286894</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-08-24 14:51:12 -0700</bug_when>
    <thetext>Created attachment 286894
Patch

WIP: more cleanup part 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1222860</commentid>
    <comment_count>150</comment_count>
      <attachid>286902</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-08-24 16:01:17 -0700</bug_when>
    <thetext>Created attachment 286902
Patch

WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1222864</commentid>
    <comment_count>151</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-08-24 16:11:05 -0700</bug_when>
    <thetext>Attachment 286902 did not pass style-queue:


ERROR: Source/JavaScriptCore/bytecode/BytecodeGraph.h:48:  reverse_iterator is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Total errors found: 1 in 45 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1222887</commentid>
    <comment_count>152</comment_count>
      <attachid>286902</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2016-08-24 16:53:21 -0700</bug_when>
    <thetext>Comment on attachment 286902
Patch

Attachment 286902 did not pass mac-ews (mac):
Output: http://webkit-queues.webkit.org/results/1936568

Number of test failures exceeded the failure limit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1222888</commentid>
    <comment_count>153</comment_count>
      <attachid>286911</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2016-08-24 16:53:28 -0700</bug_when>
    <thetext>Created attachment 286911
Archive of layout-test-results from ews102 for mac-yosemite

The attached test failures were seen while running run-webkit-tests on the mac-ews.
Bot: ews102  Port: mac-yosemite  Platform: Mac OS X 10.10.5</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1222890</commentid>
    <comment_count>154</comment_count>
      <attachid>286902</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2016-08-24 17:03:36 -0700</bug_when>
    <thetext>Comment on attachment 286902
Patch

Attachment 286902 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.webkit.org/results/1936614

Number of test failures exceeded the failure limit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1222891</commentid>
    <comment_count>155</comment_count>
      <attachid>286913</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2016-08-24 17:03:43 -0700</bug_when>
    <thetext>Created attachment 286913
Archive of layout-test-results from ews106 for mac-yosemite-wk2

The attached test failures were seen while running run-webkit-tests on the mac-wk2-ews.
Bot: ews106  Port: mac-yosemite-wk2  Platform: Mac OS X 10.10.5</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1222897</commentid>
    <comment_count>156</comment_count>
      <attachid>286902</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2016-08-24 17:19:45 -0700</bug_when>
    <thetext>Comment on attachment 286902
Patch

Attachment 286902 did not pass ios-sim-ews (ios-simulator-wk2):
Output: http://webkit-queues.webkit.org/results/1936622

Number of test failures exceeded the failure limit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1222899</commentid>
    <comment_count>157</comment_count>
      <attachid>286916</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2016-08-24 17:19:52 -0700</bug_when>
    <thetext>Created attachment 286916
Archive of layout-test-results from ews122 for ios-simulator-elcapitan-wk2

The attached test failures were seen while running run-webkit-tests on the ios-sim-ews.
Bot: ews122  Port: ios-simulator-elcapitan-wk2  Platform: Mac OS X 10.11.5</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1222948</commentid>
    <comment_count>158</comment_count>
      <attachid>286933</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-08-24 19:49:13 -0700</bug_when>
    <thetext>Created attachment 286933
Patch

WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1222951</commentid>
    <comment_count>159</comment_count>
      <attachid>286935</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-08-24 19:58:52 -0700</bug_when>
    <thetext>Created attachment 286935
Patch

OK! Patch is ready</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1223009</commentid>
    <comment_count>160</comment_count>
      <attachid>286935</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2016-08-25 01:18:27 -0700</bug_when>
    <thetext>Comment on attachment 286935
Patch

Attachment 286935 did not pass ios-sim-ews (ios-simulator-wk2):
Output: http://webkit-queues.webkit.org/results/1938695

New failing tests:
fast/viewport/ios/width-is-device-width-overflowing.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1223010</commentid>
    <comment_count>161</comment_count>
      <attachid>286951</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2016-08-25 01:18:35 -0700</bug_when>
    <thetext>Created attachment 286951
Archive of layout-test-results from ews121 for ios-simulator-elcapitan-wk2

The attached test failures were seen while running run-webkit-tests on the ios-sim-ews.
Bot: ews121  Port: ios-simulator-elcapitan-wk2  Platform: Mac OS X 10.11.5</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1223059</commentid>
    <comment_count>162</comment_count>
      <attachid>286935</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-08-25 08:32:33 -0700</bug_when>
    <thetext>Comment on attachment 286935
Patch

I&apos;ve just come up to my mind about further simplying. I&apos;ll do that and upload the patch with r?.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1223146</commentid>
    <comment_count>163</comment_count>
      <attachid>286991</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-08-25 11:34:43 -0700</bug_when>
    <thetext>Created attachment 286991
Patch

WIP: OK! super generic bytecode rewriter comes. you can add any jumps anytime if you want!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1223205</commentid>
    <comment_count>164</comment_count>
      <attachid>287004</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-08-25 13:44:20 -0700</bug_when>
    <thetext>Created attachment 287004
Patch

WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1223225</commentid>
    <comment_count>165</comment_count>
      <attachid>287015</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-08-25 14:18:29 -0700</bug_when>
    <thetext>Created attachment 287015
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1223232</commentid>
    <comment_count>166</comment_count>
      <attachid>287015</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-08-25 14:27:34 -0700</bug_when>
    <thetext>Comment on attachment 287015
Patch

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

&gt; Source/JavaScriptCore/bytecode/BytecodeBasicBlock.cpp:182
&gt; +void BytecodeBasicBlock::computeBytecodeBasicBlocks(CodeBlock* codeBlock, Instruction* instructionsBegin, unsigned instructionCount, Vector&lt;std::unique_ptr&lt;BytecodeBasicBlock&gt;&gt;&amp; basicBlocks)

Nit: Since the name of the class is &quot;BytecodeBasicBlock&quot;, anytime the method names have the word &quot;bytecode&quot; in them, it&apos;s a tautology.  Based on this, I would name this method computeBasicBlocks() for example.

But I might even go further.  The name of the class is BytecodeBasicBlocks, so maybe this method should be called &quot;compute&quot;?  Ditto for the other methods.

&gt; Source/JavaScriptCore/bytecode/BytecodeGeneratorification.cpp:208
&gt; +        rewriter.insertFragmentBefore(nextToEnterPoint, [&amp;](BytecodeRewriter::Fragment&amp; fragment) {
&gt; +            fragment.appendInstruction(op_switch_imm, switchTableIndex, nextToEnterPoint, state.offset());
&gt; +        });

I like this syntax!

&gt; Source/JavaScriptCore/bytecode/BytecodeRewriter.h:79
&gt; +class BytecodeRewriter {

This is great!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1223242</commentid>
    <comment_count>167</comment_count>
      <attachid>287015</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-08-25 14:49:04 -0700</bug_when>
    <thetext>Comment on attachment 287015
Patch

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

&gt;&gt; Source/JavaScriptCore/bytecode/BytecodeBasicBlock.cpp:182
&gt;&gt; +void BytecodeBasicBlock::computeBytecodeBasicBlocks(CodeBlock* codeBlock, Instruction* instructionsBegin, unsigned instructionCount, Vector&lt;std::unique_ptr&lt;BytecodeBasicBlock&gt;&gt;&amp; basicBlocks)
&gt; 
&gt; Nit: Since the name of the class is &quot;BytecodeBasicBlock&quot;, anytime the method names have the word &quot;bytecode&quot; in them, it&apos;s a tautology.  Based on this, I would name this method computeBasicBlocks() for example.
&gt; 
&gt; But I might even go further.  The name of the class is BytecodeBasicBlocks, so maybe this method should be called &quot;compute&quot;?  Ditto for the other methods.

The caller sees the &quot;BytecodeBasicBlock::compute(...)&quot;. It looks nice, I&apos;ll use &quot;compute&quot;.

And right. Many methods include the word &quot;bytecode&quot; while non-&quot;bytecode&quot; version does not exist. I&apos;ve dropped them.

&gt;&gt; Source/JavaScriptCore/bytecode/BytecodeRewriter.h:79
&gt;&gt; +class BytecodeRewriter {
&gt; 
&gt; This is great!

JSC now has the ability to rewrite bytecodes!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1223272</commentid>
    <comment_count>168</comment_count>
      <attachid>287015</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-08-25 15:13:26 -0700</bug_when>
    <thetext>Comment on attachment 287015
Patch

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

&gt; Source/JavaScriptCore/bytecode/BytecodeGeneratorification.cpp:229
&gt; +        rewriter.insertFragmentBefore(data.point, [&amp;](BytecodeRewriter::Fragment&amp; fragment) {
&gt; +            data.liveness.forEachSetBit([&amp;](size_t index) {
&gt; +                VirtualRegister operand = virtualRegisterForLocal(index);
&gt; +                Storage storage = storageForGeneratorLocal(index);
&gt; +
&gt; +                fragment.appendInstruction(
&gt; +                    op_put_to_scope,
&gt; +                    scope.offset(), // scope
&gt; +                    storage.identifierIndex, // identifier
&gt; +                    operand.offset(), // value
&gt; +                    GetPutInfo(DoNotThrowIfNotFound, LocalClosureVar, InitializationMode::NotInitialization).operand(), // info
&gt; +                    m_generatorFrameSymbolTableIndex, // symbol table constant index
&gt; +                    storage.scopeOffset.offset() // scope offset
&gt; +                );
&gt; +            });

I agree with Fil, this is a nice API.

&gt; Source/JavaScriptCore/bytecode/BytecodeGeneratorification.cpp:236
&gt; +        rewriter.insertFragmentBefore(data.point + opcodeLength(op_yield), [&amp;](BytecodeRewriter::Fragment&amp; fragment) {

What about making insertFragmentAfter do the opcodeLength() add for you (since it&apos;s not used in an other way now)? (Or maybe it&apos;s worth adding at a later point).
It also seems like it&apos;d be nice to assert that the opcode at that point in bytecode is what you expect it to be

&gt; Source/JavaScriptCore/bytecode/BytecodeGeneratorification.cpp:243
&gt; +                    op_get_from_scope,

Why is the scope loaded at this point?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1223283</commentid>
    <comment_count>169</comment_count>
      <attachid>287015</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-08-25 15:28:44 -0700</bug_when>
    <thetext>Comment on attachment 287015
Patch

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

&gt; Source/JavaScriptCore/bytecode/BytecodeGeneratorification.cpp:212
&gt; +        VirtualRegister scope = virtualRegisterForArgument(static_cast&lt;int32_t&gt;(JSGeneratorFunction::GeneratorArgument::Frame));

This is the passed scope.

&gt;&gt; Source/JavaScriptCore/bytecode/BytecodeGeneratorification.cpp:236
&gt;&gt; +        rewriter.insertFragmentBefore(data.point + opcodeLength(op_yield), [&amp;](BytecodeRewriter::Fragment&amp; fragment) {
&gt; 
&gt; What about making insertFragmentAfter do the opcodeLength() add for you (since it&apos;s not used in an other way now)? (Or maybe it&apos;s worth adding at a later point).
&gt; It also seems like it&apos;d be nice to assert that the opcode at that point in bytecode is what you expect it to be

In the generatorification, we don&apos;t use the insertFragmentAfter. But I think it is useful.
When saying before / after, it means the before and after the label (original bytecode offset).
For this place, I think insertFragmentAfter(data.point, [&amp;](BytecodeRewriter::Fragment&amp; fragment) { }) just works. I&apos;ll change to use insertFragmentAfter.

[ ] | [op_yield] | [ ] |
    A            B
----&gt;            &lt;------ try-range

A: data.point
B: data.point + opcodeLength(op_yield)

Insert bytecodes [*] before A.

[ ] [*] | [op_yield] | [ ] |
        A            B
--------&gt;            &lt;------ try-range

Insert bytecodes [*] after A.

[ ] | [*] [op_yield] | [ ] |
    A                B
----&gt;                &lt;------ try-range

Insert bytecodes [*] before B.

[ ] | [op_yield] [*] | [ ] |
    A                B
----&gt;                &lt;------ try-range

Insert bytecodes [*] after B.

[ ] | [op_yield] | [*] [ ] |
    A            B
----&gt;            &lt;------ try-range

&gt;&gt; Source/JavaScriptCore/bytecode/BytecodeGeneratorification.cpp:243
&gt;&gt; +                    op_get_from_scope,
&gt; 
&gt; Why is the scope loaded at this point?

The scope holding generator&apos;s variables is passed by the argument.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1223292</commentid>
    <comment_count>170</comment_count>
      <attachid>287035</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-08-25 15:51:01 -0700</bug_when>
    <thetext>Created attachment 287035
Patch

Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1223294</commentid>
    <comment_count>171</comment_count>
      <attachid>287036</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-08-25 15:54:01 -0700</bug_when>
    <thetext>Created attachment 287036
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1223298</commentid>
    <comment_count>172</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-08-25 15:57:03 -0700</bug_when>
    <thetext>Committed r204994: &lt;http://trac.webkit.org/changeset/204994&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>268682</attachid>
            <date>2016-01-11 02:57:21 -0800</date>
            <delta_ts>2016-01-11 04:31:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-152723-20160111195649.patch</filename>
            <type>text/plain</type>
            <size>54724</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk0ODQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
MGM4ZDkyZjU4M2JkZTljNzE2YzQ2OGY5ZWYzYmNjMWNiN2JlNjJhLi44YmNiMGQzYjAzOTViZTBi
YzRlYzU1MTczNWFiN2M2NjY4NWY5MjRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5NiBAQAorMjAxNi0wMS0xMSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBDcmVhdGUgR2VuZXJhdG9yRnJhbWUgd2l0aCB0aGUgYnl0ZWNvZGUg
b3BfbmV3X2dlbmVyYXRvcl9mcmFtZSBhbmQgbWFrZSBvcF9zYXZlIC8gb3BfcmVzdW1lIERGRy9G
VEwgY2FwYWJsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTUyNzIzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBidWlsdGlucy9HZW5lcmF0b3JQcm90b3R5cGUuanM6CisgICAgICAgIChnZW5lcmF0b3JS
ZXN1bWUpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uOgorICAgICAgICAq
IGJ5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmg6CisgICAgICAgIChKU0M6OmNvbXB1dGVVc2VzRm9y
Qnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zm
c2V0KToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpD
b2RlQmxvY2s6OmR1bXBCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluaXNo
Q3JlYXRpb24pOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcik6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3R2VuZXJhdG9yRnJhbWUpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFNhdmUpOgorICAgICAgICAoSlND
OjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlc3VtZSk6CisgICAgICAgICogYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpn
ZW5lcmF0b3JGcmFtZVJlZ2lzdGVyKToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnBy
ZXRlcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFi
c3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAgICAgICAqIGRmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OkJ5dGVD
b2RlUGFyc2VyKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9j
ayk6CisgICAgICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6Y2FwYWJpbGl0eUxldmVsKToKKyAgICAgICAgKiBkZmcvREZHQ2xvYmJlcml6ZS5oOgorICAg
ICAgICAoSlNDOjpERkc6OmNsb2JiZXJpemUpOgorICAgICAgICAqIGRmZy9ERkdDbG9iYmVyc0V4
aXRTdGF0ZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Y2xvYmJlcnNFeGl0U3RhdGUpOgorICAg
ICAgICAqIGRmZy9ERkdEb2VzR0MuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmRvZXNHQyk6Cisg
ICAgICAgICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVw
UGhhc2U6OmZpeHVwTm9kZSk6CisgICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAgKEpT
Qzo6REZHOjpOb2RlOjpoYXNHZW5lcmF0b3JGcmFtZVNpemUpOgorICAgICAgICAoSlNDOjpERkc6
Ok5vZGU6OmdlbmVyYXRvckZyYW1lU2l6ZSk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFz
R2VuZXJhdG9yRnJhbWVJbmRleCk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6Z2VuZXJhdG9y
RnJhbWVJbmRleCk6CisgICAgICAgICogZGZnL0RGR05vZGVUeXBlLmg6CisgICAgICAgICogZGZn
L0RGR09wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmg6CisgICAg
ICAgICogZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZTo6cHJvcGFnYXRlKToKKyAgICAgICAg
KiBkZmcvREZHU2FmZVRvRXhlY3V0ZS5oOgorICAgICAgICAoSlNDOjpERkc6OnNhZmVUb0V4ZWN1
dGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdHZW5lcmF0b3JGcmFtZSk6CisgICAgICAg
ICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZl
SklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxl
KToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTdG9yZUJh
cnJpZXJJbnNlcnRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1N0cnVjdHVyZVJlZ2lz
dHJhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTdHJ1Y3R1cmVSZWdpc3RyYXRp
b25QaGFzZTo6cnVuKToKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklU
Ojpwcml2YXRlQ29tcGlsZU1haW5QYXNzKToKKyAgICAgICAgKiBqaXQvSklULmg6CisgICAgICAg
ICogaml0L0pJVE9wY29kZXMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbmV3X2dl
bmVyYXRvcl9mcmFtZSk6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc206
CisgICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhl
clR5cGU+OjpwYXJzZUlubmVyKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBh
cnNlR2VuZXJhdG9yRnVuY3Rpb25Tb3VyY2VFbGVtZW50cyk6CisgICAgICAgIChKU0M6OlBhcnNl
cjxMZXhlclR5cGU+OjpjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKToKKyAgICAgICAgKiBwYXJz
ZXIvUGFyc2VyLmg6CisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAg
ICAgICAoSlNDOjpTTE9XX1BBVEhfREVDTCk6CisgICAgICAgICogcnVudGltZS9Db21tb25TbG93
UGF0aHMuaDoKKyAgICAgICAgKiBydW50aW1lL0dlbmVyYXRvckZyYW1lLmNwcDoKKyAgICAgICAg
KEpTQzo6R2VuZXJhdG9yRnJhbWU6OkdlbmVyYXRvckZyYW1lKToKKyAgICAgICAgKEpTQzo6R2Vu
ZXJhdG9yRnJhbWU6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZy
YW1lOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6c2F2ZSk6CisgICAg
ICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpyZXN1bWUpOgorICAgICAgICAoSlNDOjpHZW5lcmF0
b3JGcmFtZTo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpm
aW5pc2hDcmVhdGlvbik6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9HZW5lcmF0b3JGcmFt
ZS5oOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6bnVtYmVyT2ZTYXZlZENhbGxlZUxv
Y2Fsc09mZnNldCk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpsb2NhbEF0KTogRGVs
ZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpT
Qzo6SlNHbG9iYWxPYmplY3Q6OmluaXQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuaDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmdlbmVyYXRvckZyYW1lU3RydWN0
dXJlKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OlZNKTog
RGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisKIDIwMTYtMDEtMTAgIFNhYW0gYmFy
YXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CiAKICAgICAgICAgSW1wbGVtZW50IGEgc2FtcGxpbmcg
cHJvZmlsZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9HZW5l
cmF0b3JQcm90b3R5cGUuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvR2VuZXJh
dG9yUHJvdG90eXBlLmpzCmluZGV4IGEzYmJjMzUzNGFlMDUyZjRkNmZhMjViZGU3MDNjOTNkM2E3
OTVlMTEuLjQ5ZGRiZjljODQ2OTMzMDY1ODcxMWYxOGU3MjE0OWJjOTgyMmRhMzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9HZW5lcmF0b3JQcm90b3R5cGUuanMK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0dlbmVyYXRvclByb3RvdHlwZS5q
cwpAQCAtNTgsNyArNTgsNyBAQCBmdW5jdGlvbiBnZW5lcmF0b3JSZXN1bWUoZ2VuZXJhdG9yLCBz
ZW50VmFsdWUsIHJlc3VtZU1vZGUpCiAgICAgfSBlbHNlIHsKICAgICAgICAgdHJ5IHsKICAgICAg
ICAgICAgIGdlbmVyYXRvci5AZ2VuZXJhdG9yU3RhdGUgPSBFeGVjdXRpbmc7Ci0gICAgICAgICAg
ICB2YWx1ZSA9IGdlbmVyYXRvci5AZ2VuZXJhdG9yTmV4dC5AY2FsbChnZW5lcmF0b3IuQGdlbmVy
YXRvclRoaXMsIGdlbmVyYXRvciwgc3RhdGUsIHNlbnRWYWx1ZSwgcmVzdW1lTW9kZSk7CisgICAg
ICAgICAgICB2YWx1ZSA9IGdlbmVyYXRvci5AZ2VuZXJhdG9yTmV4dC5AY2FsbChnZW5lcmF0b3Iu
QGdlbmVyYXRvclRoaXMsIGdlbmVyYXRvciwgc3RhdGUsIHNlbnRWYWx1ZSwgcmVzdW1lTW9kZSwg
Z2VuZXJhdG9yLkBnZW5lcmF0b3JGcmFtZSk7CiAgICAgICAgICAgICBpZiAoZ2VuZXJhdG9yLkBn
ZW5lcmF0b3JTdGF0ZSA9PT0gRXhlY3V0aW5nKSB7CiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9y
LkBnZW5lcmF0b3JTdGF0ZSA9IENvbXBsZXRlZDsKICAgICAgICAgICAgICAgICBkb25lID0gdHJ1
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxp
c3QuanNvbiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNv
bgppbmRleCAwNTNiOGRjOWI4NjRmMWI4NmI0Y2VjN2FhNjAxZjdjZTJmMDNmMmU0Li4zYTNkMzE3
ZTlmNmRlZTkyNDY3ZGNlZTE4ZjVjYmE3YTA5NDdhMDJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24KKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCkBAIC0xNiw2ICsxNiw3IEBACiAg
ICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXdfYXJyYXlfd2l0aF9zaXplIiwgImxlbmd0aCIg
OiA0IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXdfYXJyYXlfYnVmZmVyIiwgImxl
bmd0aCIgOiA1IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXdfcmVnZXhwIiwgImxl
bmd0aCIgOiAzIH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXdfZ2VuZXJhdG9yX2Zy
YW1lIiwgImxlbmd0aCIgOiAzIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9tb3YiLCAi
bGVuZ3RoIiA6IDMgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX25vdCIsICJsZW5ndGgi
IDogMyB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfZXEiLCAibGVuZ3RoIiA6IDQgfSwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURl
Zi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKaW5k
ZXggODAxMTE0YzM3MmEyNzdmNmUxNzcwOWI5MGJlMjA3YzhmOTliZTgyZC4uNDg4ZDQyYjQwMjZk
Yjg4NjZjYjQ1MjE2OGNjMmE3YWM1NzNmODc4YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKQEAgLTU1LDYgKzU1LDcgQEAgdm9pZCBjb21w
dXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAogICAgIGNhc2Ugb3BfY3JlYXRlX291dF9vZl9iYW5k
X2FyZ3VtZW50czoKICAgICBjYXNlIG9wX2dldF9yZXN0X2xlbmd0aDoKICAgICBjYXNlIG9wX3dh
dGNoZG9nOgorICAgIGNhc2Ugb3BfbmV3X2dlbmVyYXRvcl9mcmFtZToKICAgICAgICAgcmV0dXJu
OwogICAgIGNhc2Ugb3BfYXNzZXJ0OgogICAgIGNhc2Ugb3BfZ2V0X3Njb3BlOgpAQCAtNDE1LDcg
KzQxNiw4IEBAIHZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNv
ZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jCiAgICAgY2FzZSBvcF9kZWxfYnlfdmFs
OgogICAgIGNhc2Ugb3BfdW5zaWduZWQ6CiAgICAgY2FzZSBvcF9nZXRfZnJvbV9hcmd1bWVudHM6
IAotICAgIGNhc2Ugb3BfZ2V0X3Jlc3RfbGVuZ3RoOiB7CisgICAgY2FzZSBvcF9nZXRfcmVzdF9s
ZW5ndGg6CisgICAgY2FzZSBvcF9uZXdfZ2VuZXJhdG9yX2ZyYW1lOiB7CiAgICAgICAgIEFTU0VS
VChvcGNvZGVMZW5ndGhzW29wY29kZUlEXSA+IDEpOwogICAgICAgICBmdW5jdG9yKGNvZGVCbG9j
aywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBpbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOwogICAg
ICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2su
Y3BwCmluZGV4IDU5MDVlOTE4M2M4ZjEyNjY0ZTJiYTNkZDI5YTVjNDY1Njc2OGRjMDMuLjE1MDY2
N2VlZmYyYTJlZGU3OGViNWI3MTZkZWU0ZGU1NjBiYWMwMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC0xNTc3LDYgKzE1NzcsMTMgQEAgdm9p
ZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZSgKICAgICAgICAgICAgIG91dC5wcmludGYoIihAbGl2
ZSUxdSkiLCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KKyAgICAgICAgY2FzZSBvcF9uZXdfZ2VuZXJhdG9yX2ZyYW1lOiB7CisgICAgICAgICAg
ICBpbnQgZHN0ID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICB1bnNpZ25lZCBnZW5l
cmF0b3JGcmFtZVNpemUgPSAoKytpdCktPnUudW5zaWduZWRWYWx1ZTsKKyAgICAgICAgICAgIHBy
aW50TG9jYXRpb25PcEFuZFJlZ2lzdGVyT3BlcmFuZChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwg
Im5ld19nZW5lcmF0b3JfZnJhbWUiLCBkc3QpOworICAgICAgICAgICAgb3V0LnByaW50ZigiICV1
IiwgZ2VuZXJhdG9yRnJhbWVTaXplKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAg
ICAgICAgIGNhc2Ugb3BfYXNzZXJ0OiB7CiAgICAgICAgICAgICBpbnQgY29uZGl0aW9uID0gKCsr
aXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgbGluZSA9ICgrK2l0KS0+dS5vcGVyYW5k
OwpAQCAtMTk4Myw2ICsxOTkwLDcgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZN
JiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICBWZWN0
b3I8c2l6ZV90PiBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXRzOwogCiAgICAgUmVmQ291bnRlZEFy
cmF5PEluc3RydWN0aW9uPiBpbnN0cnVjdGlvbnMoaW5zdHJ1Y3Rpb25Db3VudCk7CisgICAgdW5z
aWduZWQgbmV3R2VuZXJhdG9yRnJhbWVJbnN0cnVjdGlvbk9mZnNldCA9IDA7CiAKICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyAhaW5zdHJ1Y3Rpb25SZWFkZXIuYXRFbmQoKTsgKSB7CiAgICAgICAg
IGNvbnN0IFVubGlua2VkSW5zdHJ1Y3Rpb24qIHBjID0gaW5zdHJ1Y3Rpb25SZWFkZXIubmV4dCgp
OwpAQCAtMjI3OSw2ICsyMjg3LDExIEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihW
TSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQogCisgICAgICAgIGNhc2Ugb3BfbmV3X2dlbmVyYXRvcl9m
cmFtZTogeworICAgICAgICAgICAgbmV3R2VuZXJhdG9yRnJhbWVJbnN0cnVjdGlvbk9mZnNldCA9
IGk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCiAgICAgICAgIGRlZmF1bHQ6CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMjI5MiwxNiArMjMwNSwyMSBAQCB2b2lk
IENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25l
ckV4ZWN1dGFibGUsIFVubGluawogCiAgICAgLy8gUGVyZm9ybSBieXRlY29kZSBsaXZlbmVzcyBh
bmFseXNpcyB0byBkZXRlcm1pbmUgd2hpY2ggbG9jYWxzIGFyZSBsaXZlIGFuZCBzaG91bGQgYmUg
cmVzdW1lZCB3aGVuIGV4ZWN1dGluZyBvcF9yZXN1bWUuCiAgICAgaWYgKHVubGlua2VkQ29kZUJs
b2NrLT5wYXJzZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckJvZHlNb2RlKSB7
CisgICAgICAgIHVuc2lnbmVkIG1heEdlbmVyYXRvckZyYW1lU2l6ZSA9IDA7CiAgICAgICAgIGlm
IChzaXplX3QgY291bnQgPSBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXRzLnNpemUoKSkgewogICAg
ICAgICAgICAgY3JlYXRlUmFyZURhdGFJZk5lY2Vzc2FyeSgpOwogICAgICAgICAgICAgQnl0ZWNv
ZGVMaXZlbmVzc0FuYWx5c2lzIGxpdmVuZXNzKHRoaXMpOwogICAgICAgICAgICAgbV9yYXJlRGF0
YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZC5ncm93KGNvdW50KTsKICAgICAgICAgICAgIHNp
emVfdCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSAwOwogICAgICAgICAgICAgZm9yIChzaXplX3Qg
Ynl0ZWNvZGVPZmZzZXQgOiBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXRzKSB7Ci0gICAgICAgICAg
ICAgICAgbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZFtsaXZlQ2FsbGVlTG9j
YWxzSW5kZXhdID0gbGl2ZW5lc3MuZ2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29kZU9mZnNldChieXRl
Y29kZU9mZnNldCk7CisgICAgICAgICAgICAgICAgRmFzdEJpdFZlY3RvciBsaXZlbmVzc1ZlY3Rv
ciA9IGxpdmVuZXNzLmdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZz
ZXQpOworICAgICAgICAgICAgICAgIG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWll
bGRbbGl2ZUNhbGxlZUxvY2Fsc0luZGV4XSA9IGxpdmVuZXNzVmVjdG9yOworICAgICAgICAgICAg
ICAgIG1heEdlbmVyYXRvckZyYW1lU2l6ZSA9IHN0ZDo6bWF4PHVuc2lnbmVkPihtYXhHZW5lcmF0
b3JGcmFtZVNpemUsIGxpdmVuZXNzVmVjdG9yLmJpdENvdW50KCkpOwogICAgICAgICAgICAgICAg
ICsrbGl2ZUNhbGxlZUxvY2Fsc0luZGV4OwogICAgICAgICAgICAgfQogICAgICAgICB9CisgICAg
ICAgIC8vIEZpbGwgb3BfbmV3X2dlbmVyYXRvcl9mcmFtZSdzIHNpemUuCisgICAgICAgIG1faW5z
dHJ1Y3Rpb25zW25ld0dlbmVyYXRvckZyYW1lSW5zdHJ1Y3Rpb25PZmZzZXQgKyAyXS51LnVuc2ln
bmVkVmFsdWUgPSBtYXhHZW5lcmF0b3JGcmFtZVNpemU7CiAgICAgfQogCiAgICAgLy8gU2V0IG9w
dGltaXphdGlvbiB0aHJlc2hvbGRzIG9ubHkgYWZ0ZXIgbV9pbnN0cnVjdGlvbnMgaXMgaW5pdGlh
bGl6ZWQsIHNpbmNlIHRoZXNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IGQxNWUyMjQzNTI2NmZlMWFm
ZjNkNWY3OWExZGRhNzViOWJkYWYzZjMuLmM0MTNkZDhjYWU3YTQxYjBjZDFjZmRmMjAwZTMyZmM0
ZmE1Y2FjZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC01MzcsNiArNTM3LDkgQEAgUGFyc2VyRXJy
b3IgQnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKCkKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9k
ZTo6R2VuZXJhdG9yQm9keU1vZGU6IHsKICAgICAgICAgLy8gfHRoaXN8IGlzIGFscmVhZHkgZmls
bGVkIGNvcnJlY3RseSBiZWZvcmUgaGVyZS4KICAgICAgICAgZW1pdExvYWQobV9uZXdUYXJnZXRS
ZWdpc3RlciwganNVbmRlZmluZWQoKSk7CisKKyAgICAgICAgZW1pdE5ld0dlbmVyYXRvckZyYW1l
KGdlbmVyYXRvckZyYW1lUmVnaXN0ZXIoKSk7CisgICAgICAgIGVtaXRQdXRCeUlkKGdlbmVyYXRv
clJlZ2lzdGVyKCksIHByb3BlcnR5TmFtZXMoKS5nZW5lcmF0b3JGcmFtZVByaXZhdGVOYW1lLCBn
ZW5lcmF0b3JGcmFtZVJlZ2lzdGVyKCkpOwogICAgICAgICBicmVhazsKICAgICB9CiAKQEAgLTI3
NDQsNiArMjc0NywxNCBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1
bmN0aW9uKFJlZ2lzdGVySUQqIGRzdCwgRnVuY3Rpb25NZXRhZGF0YQogICAgIHJldHVybiBkc3Q7
CiB9CiAKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3R2VuZXJhdG9yRnJh
bWUoUmVnaXN0ZXJJRCogZHN0KQoreworICAgIGVtaXRPcGNvZGUob3BfbmV3X2dlbmVyYXRvcl9m
cmFtZSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGRzdC0+aW5kZXgoKSk7CisgICAgaW5z
dHJ1Y3Rpb25zKCkuYXBwZW5kKDApOworICAgIHJldHVybiBkc3Q7Cit9CisKIFJlZ2lzdGVySUQq
IEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2FsbChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQq
IGZ1bmMsIEV4cGVjdGVkRnVuY3Rpb24gZXhwZWN0ZWRGdW5jdGlvbiwgQ2FsbEFyZ3VtZW50cyYg
Y2FsbEFyZ3VtZW50cywgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQ
b3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKQogewog
ICAgIHJldHVybiBlbWl0Q2FsbChvcF9jYWxsLCBkc3QsIGZ1bmMsIGV4cGVjdGVkRnVuY3Rpb24s
IGNhbGxBcmd1bWVudHMsIGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCk7CkBAIC00MTQ1LDcg
KzQxNTYsNyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0U2F2ZShMYWJlbCogbWVyZ2VQ
b2ludCwgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZAogewogICAgIHNpemVfdCBiZWdpbiA9
IGluc3RydWN0aW9ucygpLnNpemUoKTsKICAgICBlbWl0T3Bjb2RlKG9wX3NhdmUpOwotICAgIGlu
c3RydWN0aW9ucygpLmFwcGVuZChtX2dlbmVyYXRvclJlZ2lzdGVyLT5pbmRleCgpKTsKKyAgICBp
bnN0cnVjdGlvbnMoKS5hcHBlbmQoZ2VuZXJhdG9yRnJhbWVSZWdpc3RlcigpLT5pbmRleCgpKTsK
ICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobGl2ZUNhbGxlZUxvY2Fsc0luZGV4KTsKICAgICBp
bnN0cnVjdGlvbnMoKS5hcHBlbmQobWVyZ2VQb2ludC0+YmluZChiZWdpbiwgaW5zdHJ1Y3Rpb25z
KCkuc2l6ZSgpKSk7CiB9CkBAIC00MTU0LDcgKzQxNjUsNyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0UmVzdW1lKExhYmVsKiBtZXJnZVBvaW50LCB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9j
YWxzSQogewogICAgIGVtaXRHZW5lcmF0b3JTdGF0ZUxhYmVsKCk7CiAgICAgZW1pdE9wY29kZShv
cF9yZXN1bWUpOwotICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChtX2dlbmVyYXRvclJlZ2lzdGVy
LT5pbmRleCgpKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZ2VuZXJhdG9yRnJhbWVSZWdp
c3RlcigpLT5pbmRleCgpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobGl2ZUNhbGxlZUxv
Y2Fsc0luZGV4KTsKICAgICBlbWl0TGFiZWwobWVyZ2VQb2ludCk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5k
ZXggN2QwYzIwYjZmNTE2YTE3ZTg5M2YxYmJhMDgwM2MxMzMzZmZjOGQwZC4uM2QzMzQ3ODE1YWMz
MGE4MmU2MjZlM2UwNzgwODFiZTJiM2U5YmUzZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAtNTIyLDYgKzUy
Miw3IEBACiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdEZWZhdWx0Q29uc3RydWN0b3IoUmVn
aXN0ZXJJRCogZHN0LCBDb25zdHJ1Y3RvcktpbmQsIGNvbnN0IElkZW50aWZpZXImIG5hbWUpOwog
ICAgICAgICBSZWdpc3RlcklEKiBlbWl0TmV3QXJyb3dGdW5jdGlvbkV4cHJlc3Npb24oUmVnaXN0
ZXJJRCosIEFycm93RnVuY0V4cHJOb2RlKik7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdS
ZWdFeHAoUmVnaXN0ZXJJRCogZHN0LCBSZWdFeHAqKTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1p
dE5ld0dlbmVyYXRvckZyYW1lKFJlZ2lzdGVySUQqIGRzdCk7CiAKICAgICAgICAgUmVnaXN0ZXJJ
RCogZW1pdE1vdmVMaW5rVGltZUNvbnN0YW50KFJlZ2lzdGVySUQqIGRzdCwgTGlua1RpbWVDb25z
dGFudCk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRNb3ZlRW1wdHlWYWx1ZShSZWdpc3RlcklE
KiBkc3QpOwpAQCAtNjg0LDYgKzY4NSw3IEBACiAgICAgICAgIFJlZ2lzdGVySUQqIGdlbmVyYXRv
clN0YXRlUmVnaXN0ZXIoKSB7IHJldHVybiAmbV9wYXJhbWV0ZXJzWzJdOyB9CiAgICAgICAgIFJl
Z2lzdGVySUQqIGdlbmVyYXRvclZhbHVlUmVnaXN0ZXIoKSB7IHJldHVybiAmbV9wYXJhbWV0ZXJz
WzNdOyB9CiAgICAgICAgIFJlZ2lzdGVySUQqIGdlbmVyYXRvclJlc3VtZU1vZGVSZWdpc3Rlcigp
IHsgcmV0dXJuICZtX3BhcmFtZXRlcnNbNF07IH0KKyAgICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJh
dG9yRnJhbWVSZWdpc3RlcigpIHsgcmV0dXJuICZtX3BhcmFtZXRlcnNbNV07IH0KIAogICAgICAg
ICBDb2RlVHlwZSBjb2RlVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZVR5cGU7IH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVy
SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJl
dGVySW5saW5lcy5oCmluZGV4IDllZWM2M2NlYjA3MWJjMTQ4NmEwMTJjMjg1MDFkYjYyNDI2YmRl
N2IuLmY5YzViNjhmNDg1ZGZmN2QwMzI0OTIzNzMwNzNjZjdlYmZjYTEwZmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJ
bmxpbmVzLmgKQEAgLTE2ODcsNiArMTY4NywxMCBAQAogICAgIGNhc2UgTmV3UmVnZXhwOgogICAg
ICAgICBmb3JOb2RlKG5vZGUpLnNldChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpLT5yZWdFeHBTdHJ1Y3R1cmUoKSk7CiAgICAgICAgIGJyZWFr
OworCisgICAgY2FzZSBOZXdHZW5lcmF0b3JGcmFtZToKKyAgICAgICAgZm9yTm9kZShub2RlKS5z
ZXQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KS0+Z2VuZXJhdG9yRnJhbWVTdHJ1Y3R1cmUoKSk7CisgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgCiAgICAgY2FzZSBUb1RoaXM6IHsKICAgICAgICAgQWJzdHJhY3RWYWx1ZSYgc291cmNlID0g
Zm9yTm9kZShub2RlLT5jaGlsZDEoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQnl0ZUNvZGVQYXJzZXIuY3BwCmluZGV4IGEyMmY2Y2NjYTgwZTY0ZGE1NDE4MmNhNmM2ZGFi
YTcyM2IzNWI3ODcuLjgwNmYzNDgwNjQwZTYzMzgwNDU1NGZkYzNmMjM4M2U5OWM5ZjFjYWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBA
IC0xNDQsNiArMTQ0LDcgQEAgY2xhc3MgQnl0ZUNvZGVQYXJzZXIgewogICAgICAgICAsIG1fY29u
c3RhbnROdWxsKGdyYXBoLmZyZWV6ZShqc051bGwoKSkpCiAgICAgICAgICwgbV9jb25zdGFudE5h
TihncmFwaC5mcmVlemUoanNOdW1iZXIoUE5hTikpKQogICAgICAgICAsIG1fY29uc3RhbnRPbmUo
Z3JhcGguZnJlZXplKGpzTnVtYmVyKDEpKSkKKyAgICAgICAgLCBtX2NvbnN0YW50VHJ1ZShncmFw
aC5mcmVlemUoanNCb29sZWFuKHRydWUpKSkKICAgICAgICAgLCBtX251bUFyZ3VtZW50cyhtX2Nv
ZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKQogICAgICAgICAsIG1fbnVtTG9jYWxzKG1fY29kZUJs
b2NrLT5tX251bUNhbGxlZUxvY2FscykKICAgICAgICAgLCBtX3BhcmFtZXRlclNsb3RzKDApCkBA
IC05ODIsNiArOTgzLDcgQEAgY2xhc3MgQnl0ZUNvZGVQYXJzZXIgewogICAgIEZyb3plblZhbHVl
KiBtX2NvbnN0YW50TnVsbDsKICAgICBGcm96ZW5WYWx1ZSogbV9jb25zdGFudE5hTjsKICAgICBG
cm96ZW5WYWx1ZSogbV9jb25zdGFudE9uZTsKKyAgICBGcm96ZW5WYWx1ZSogbV9jb25zdGFudFRy
dWU7CiAgICAgVmVjdG9yPE5vZGUqLCAxNj4gbV9jb25zdGFudHM7CiAKICAgICAvLyBUaGUgbnVt
YmVyIG9mIGFyZ3VtZW50cyBwYXNzZWQgdG8gdGhlIGZ1bmN0aW9uLgpAQCAtMzM0MSw2ICszMzQz
LDExIEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAg
ICAgICAgICAgICBORVhUX09QQ09ERShvcF9uZXdfcmVnZXhwKTsKICAgICAgICAgfQogCisgICAg
ICAgIGNhc2Ugb3BfbmV3X2dlbmVyYXRvcl9mcmFtZTogeworICAgICAgICAgICAgc2V0KFZpcnR1
YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSwgYWRkVG9HcmFwaChO
ZXdHZW5lcmF0b3JGcmFtZSwgT3BJbmZvKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51LnVuc2lnbmVk
VmFsdWUpKSk7CisgICAgICAgICAgICBORVhUX09QQ09ERShvcF9uZXdfZ2VuZXJhdG9yX2ZyYW1l
KTsKKyAgICAgICAgfQorCiAgICAgICAgIGNhc2Ugb3BfZ2V0X3Jlc3RfbGVuZ3RoOiB7CiAgICAg
ICAgICAgICBJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSA9IHRoaXMtPmlubGluZUNh
bGxGcmFtZSgpOwogICAgICAgICAgICAgTm9kZSogbGVuZ3RoOwpAQCAtMzM2OCw2ICszMzc1LDM1
IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAg
ICAgICAgICAgICAgYXJyYXksIGFycmF5TGVuZ3RoKTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RF
KG9wX2NvcHlfcmVzdCk7CiAgICAgICAgIH0KKworICAgICAgICBjYXNlIG9wX3NhdmU6IHsKKyAg
ICAgICAgICAgIE5vZGUqIGZyYW1lID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1
Y3Rpb25bMV0udS5vcGVyYW5kKSk7CisgICAgICAgICAgICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9j
YWxzSW5kZXggPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS51bnNpZ25lZFZhbHVlOworICAgICAg
ICAgICAgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZW5lc3MgPSBtX2lubGluZVN0YWNrVG9wLT5t
X2NvZGVCbG9jay0+bGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQobGl2ZUNhbGxlZUxvY2Fsc0luZGV4
KTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGdlbmVyYXRvckZyYW1lSW5kZXggPSAwOworICAgICAg
ICAgICAgbGl2ZW5lc3MuZm9yRWFjaFNldEJpdChbJl0oc2l6ZV90IGluZGV4KSB7CisgICAgICAg
ICAgICAgICAgTm9kZSogbG9jYWwgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKHZpcnR1YWxSZWdpc3Rl
ckZvckxvY2FsKGluZGV4KSkpOworICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoU2F2ZVRvR2Vu
ZXJhdG9yRnJhbWUsIE9wSW5mbyhnZW5lcmF0b3JGcmFtZUluZGV4KyspLCBmcmFtZSwgbG9jYWwp
OworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIHVuc2lnbmVkIHJlbGF0aXZlT2Zmc2V0
ID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKKyAgICAgICAgICAgIE5vZGUqIHRy
dWVDb25kaXRpb24gPSBhZGRUb0dyYXBoKEpTQ29uc3RhbnQsIE9wSW5mbyhtX2NvbnN0YW50VHJ1
ZSkpOworICAgICAgICAgICAgYWRkVG9HcmFwaChCcmFuY2gsIE9wSW5mbyhicmFuY2hEYXRhKG1f
Y3VycmVudEluZGV4ICsgT1BDT0RFX0xFTkdUSChvcF9zYXZlKSwgbV9jdXJyZW50SW5kZXggKyBy
ZWxhdGl2ZU9mZnNldCkpLCB0cnVlQ29uZGl0aW9uKTsKKyAgICAgICAgICAgIE5FWFRfT1BDT0RF
KG9wX3NhdmUpOworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBvcF9yZXN1bWU6IHsKKyAgICAg
ICAgICAgIE5vZGUqIGZyYW1lID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rp
b25bMV0udS5vcGVyYW5kKSk7CisgICAgICAgICAgICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxz
SW5kZXggPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS51bnNpZ25lZFZhbHVlOworICAgICAgICAg
ICAgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZW5lc3MgPSBtX2lubGluZVN0YWNrVG9wLT5tX2Nv
ZGVCbG9jay0+bGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQobGl2ZUNhbGxlZUxvY2Fsc0luZGV4KTsK
KyAgICAgICAgICAgIHVuc2lnbmVkIGdlbmVyYXRvckZyYW1lSW5kZXggPSAwOworICAgICAgICAg
ICAgbGl2ZW5lc3MuZm9yRWFjaFNldEJpdChbJl0oc2l6ZV90IGluZGV4KSB7CisgICAgICAgICAg
ICAgICAgTm9kZSogc2F2ZWRMb2NhbCA9IGFkZFRvR3JhcGgoUmVzdW1lRnJvbUdlbmVyYXRvckZy
YW1lLCBPcEluZm8oZ2VuZXJhdG9yRnJhbWVJbmRleCsrKSwgZnJhbWUpOworICAgICAgICAgICAg
ICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIodmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaW5kZXgpKSwg
c2F2ZWRMb2NhbCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9w
X3Jlc3VtZSk7CisgICAgICAgIH0KKwogICAgICAgICAgICAgCiAgICAgICAgIC8vID09PSBCaXR3
aXNlIG9wZXJhdGlvbnMgPT09CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2Fw
YWJpbGl0aWVzLmNwcAppbmRleCBkMTAwZDk3ZDVjNjBlMjVhMDYwZmZkYTQ1NjYzYjNiOTQxNDM1
ZGM2Li4yZmRhYTIwYzgwYTc4YWQzZDJmYmZhMTg0MzhkOTVmY2U0YWZmNmUwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCkBAIC0xODEsNiArMTgx
LDcgQEAgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbChPcGNvZGVJRCBvcGNvZGVJRCwg
Q29kZUJsb2NrKiBjb2RlQmxvY2ssIEluc3RydWMKICAgICBjYXNlIG9wX25ld19hcnJheToKICAg
ICBjYXNlIG9wX25ld19hcnJheV93aXRoX3NpemU6CiAgICAgY2FzZSBvcF9uZXdfYXJyYXlfYnVm
ZmVyOgorICAgIGNhc2Ugb3BfbmV3X2dlbmVyYXRvcl9mcmFtZToKICAgICBjYXNlIG9wX3N0cmNh
dDoKICAgICBjYXNlIG9wX3RvX3ByaW1pdGl2ZToKICAgICBjYXNlIG9wX3Rocm93OgpAQCAtMjI0
LDYgKzIyNSw4IEBAIENhcGFiaWxpdHlMZXZlbCBjYXBhYmlsaXR5TGV2ZWwoT3Bjb2RlSUQgb3Bj
b2RlSUQsIENvZGVCbG9jayogY29kZUJsb2NrLCBJbnN0cnVjCiAgICAgY2FzZSBvcF9jYXRjaDoK
ICAgICBjYXNlIG9wX2NvcHlfcmVzdDoKICAgICBjYXNlIG9wX2dldF9yZXN0X2xlbmd0aDoKKyAg
ICBjYXNlIG9wX3NhdmU6CisgICAgY2FzZSBvcF9yZXN1bWU6CiAgICAgICAgIHJldHVybiBDYW5D
b21waWxlQW5kSW5saW5lOwogCiAgICAgY2FzZSBvcF9wdXRfdG9fc2NvcGU6IHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKaW5kZXggNzJiMjRjNzdiNDBiNzcyNjM3
ZmZjMzE4ZjNkMTFiOTdlOGY2OTE1NS4uYTU3OGZmN2RlYjVlZTU0ZDg2ZDY1NWU5ODZiZTQwOGVm
ZDU3YWY2OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVy
aXplLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKQEAg
LTEwMzEsNiArMTAzMSw3IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5v
ZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAKICAgICBjYXNlIE5l
d09iamVjdDoKICAgICBjYXNlIE5ld1JlZ2V4cDoKKyAgICBjYXNlIE5ld0dlbmVyYXRvckZyYW1l
OgogICAgIGNhc2UgTmV3U3RyaW5nT2JqZWN0OgogICAgIGNhc2UgUGhhbnRvbU5ld09iamVjdDoK
ICAgICBjYXNlIE1hdGVyaWFsaXplTmV3T2JqZWN0OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyc0V4aXRTdGF0ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcAppbmRleCA0ZTBjNTA3Nzg5Y2Q3YjNm
ZjQ3NzUxZjkyNWU3NDgzZTYxZTJkZjViLi5mMGY0NmJiZTQ2MTNmODRkZGY4YmUxMWJhMTJjNmI0
NjUwMmIyMzM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2Ji
ZXJzRXhpdFN0YXRlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2Ji
ZXJzRXhpdFN0YXRlLmNwcApAQCAtNTcsNiArNTcsNyBAQCBib29sIGNsb2JiZXJzRXhpdFN0YXRl
KEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIEFycmF5aWZ5OgogICAgIGNhc2Ug
TmV3T2JqZWN0OgogICAgIGNhc2UgTmV3UmVnZXhwOgorICAgIGNhc2UgTmV3R2VuZXJhdG9yRnJh
bWU6CiAgICAgY2FzZSBOZXdTdHJpbmdPYmplY3Q6CiAgICAgY2FzZSBQaGFudG9tTmV3T2JqZWN0
OgogICAgIGNhc2UgTWF0ZXJpYWxpemVOZXdPYmplY3Q6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0RvZXNHQy5jcHAKaW5kZXggNzAyZGE1YmYxZTdjMGYxYzhmZTU1YzY0ODQ0NThmY2FkODFl
MmFhNS4uOTIzNzFjNTU0Y2FkNDk5MmZiMDQwZTAzODY2MmRiNDEzMGEzNjc0MSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcApAQCAtMjQ2LDYgKzI0Niw3IEBAIGJvb2wg
ZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIE5ld0FycmF5V2l0aFNp
emU6CiAgICAgY2FzZSBOZXdBcnJheUJ1ZmZlcjoKICAgICBjYXNlIE5ld1JlZ2V4cDoKKyAgICBj
YXNlIE5ld0dlbmVyYXRvckZyYW1lOgogICAgIGNhc2UgTmV3U3RyaW5nT2JqZWN0OgogICAgIGNh
c2UgTWFrZVJvcGU6CiAgICAgY2FzZSBOZXdBcnJvd0Z1bmN0aW9uOgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKaW5kZXggYTllMGIyMTU0ZjgyZTgwNmIzMjEx
MjAzYzQ1YmMwZTQ4YTg3MmQxZC4uZGUwMWEwOGJhNmJjZmMyYzkxZGMxMDc0Y2Y4NmM4NTM2ODI5
ODlmNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCkBA
IC0xNDYxLDYgKzE0NjEsNyBAQCBjbGFzcyBGaXh1cFBoYXNlIDogcHVibGljIFBoYXNlIHsKICAg
ICAgICAgY2FzZSBOZXdPYmplY3Q6CiAgICAgICAgIGNhc2UgTmV3QXJyYXlCdWZmZXI6CiAgICAg
ICAgIGNhc2UgTmV3UmVnZXhwOgorICAgICAgICBjYXNlIE5ld0dlbmVyYXRvckZyYW1lOgogICAg
ICAgICBjYXNlIEJyZWFrcG9pbnQ6CiAgICAgICAgIGNhc2UgUHJvZmlsZVdpbGxDYWxsOgogICAg
ICAgICBjYXNlIFByb2ZpbGVEaWRDYWxsOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdOb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaApp
bmRleCAxMjg3MGQ5M2QwYzQ4MmU0ZjhlNWQ0ZDJkYWYxZTZiZjFmNzFiNjJjLi41OWYzMzI5OGNh
ZTRmNDI4YmEzZGVkMzYxYTU2NmEzNjdjZjk5ZmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR05vZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R05vZGUuaApAQCAtODc4LDYgKzg3OCwzOSBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgICAgIHJldHVy
biBtX29wSW5mbzsKICAgICB9CiAKKyAgICBib29sIGhhc0dlbmVyYXRvckZyYW1lU2l6ZSgpCisg
ICAgeworICAgICAgICBzd2l0Y2ggKG9wKCkpIHsKKyAgICAgICAgY2FzZSBOZXdHZW5lcmF0b3JG
cmFtZToKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorCisgICAgdW5zaWduZWQgZ2Vu
ZXJhdG9yRnJhbWVTaXplKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChoYXNHZW5lcmF0b3JGcmFt
ZVNpemUoKSk7CisgICAgICAgIHJldHVybiBtX29wSW5mbzsKKyAgICB9CisKKyAgICBib29sIGhh
c0dlbmVyYXRvckZyYW1lSW5kZXgoKQorICAgIHsKKyAgICAgICAgc3dpdGNoIChvcCgpKSB7Cisg
ICAgICAgIGNhc2UgU2F2ZToKKyAgICAgICAgY2FzZSBSZXN1bWU6CisgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIHVuc2lnbmVkIGdlbmVyYXRvckZyYW1lSW5kZXgoKQorICAg
IHsKKyAgICAgICAgQVNTRVJUKGhhc0dlbmVyYXRvckZyYW1lSW5kZXgoKSk7CisgICAgICAgIHJl
dHVybiBtX29wSW5mbzsKKyAgICB9CisKICAgICBib29sIGhhc0FjY2Vzc29yQXR0cmlidXRlcygp
CiAgICAgewogICAgICAgICBzd2l0Y2ggKG9wKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTm9kZVR5cGUuaAppbmRleCBkZGQwYjk3Y2IyZmU2OTI2MDQ1MTAzZjhhNzEwNzAwNDgyZTlm
NmJkLi5hZGEzMDBmZGY3YTFmNjdkNzA5MjE5YzBlYTExYTE3YTQ1NTBlY2I5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCkBAIC03OSw2ICs3OSw5IEBACiAgICAgbWFj
cm8oRmx1c2gsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhQaGFudG9tTG9jYWwsIE5v
ZGVNdXN0R2VuZXJhdGUpIFwKICAgICBcCisgICAgbWFjcm8oU2F2ZVRvR2VuZXJhdG9yRnJhbWUs
IE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBtYWNybyhSZXN1bWVGcm9tR2VuZXJhdG9yRnJhbWUs
IE5vZGVSZXN1bHRKUykgXAorICAgIFwKICAgICAvKiBIaW50IHRoYXQgdGhpcyBpcyB3aGVyZSBi
eXRlY29kZSB0aGlua3MgaXMgYSBnb29kIHBsYWNlIHRvIE9TUi4gTm90ZSB0aGF0IHRoaXMgKi9c
CiAgICAgLyogd2lsbCBleGlzdCBldmVuIGluIGlubGluZWQgbG9vcHMuIFRoaXMgaGFzIG5vIGV4
ZWN1dGlvbiBzZW1hbnRpY3MgYnV0IGl0IG11c3QgKi9cCiAgICAgLyogc3Vydml2ZSBhbGwgRENF
LiBXZSB0cmVhdCB0aGlzIGFzIGJlaW5nIGEgY2FuLWV4aXQgYmVjYXVzZSB0aWVyLXVwIHRvIEZU
TCBtYXkgKi9cCkBAIC0yNjMsNiArMjY2LDcgQEAKICAgICBtYWNybyhOZXdBcnJheUJ1ZmZlciwg
Tm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oTmV3VHlwZWRBcnJheSwgTm9kZVJlc3VsdEpTIHwg
Tm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKE5ld1JlZ2V4cCwgTm9kZVJlc3VsdEpTKSBc
CisgICAgbWFjcm8oTmV3R2VuZXJhdG9yRnJhbWUsIE5vZGVSZXN1bHRKUykgXAogICAgIC8qIFJl
c3QgUGFyYW1ldGVyICovXAogICAgIG1hY3JvKEdldFJlc3RMZW5ndGgsIE5vZGVSZXN1bHRJbnQz
MikgXAogICAgIG1hY3JvKENvcHlSZXN0LCBOb2RlTXVzdEdlbmVyYXRlKSBcCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAppbmRleCBhNmQ2MGFkNTRlZWNlYzM4
NzkzZjIzOWEzYjE3MDNhMDFjYTE5MWIyLi5iZjJhNmRhMjdmNzRiMzA2ZjExMmQ4M2M2MTQ1OGQ4
ZTJmNzc4ODBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJh
dGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5j
cHAKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlICJGVExGb3JPU1JFbnRyeUpJVENvZGUuaCIK
ICNpbmNsdWRlICJGVExPU1JFbnRyeS5oIgogI2luY2x1ZGUgIkhvc3RDYWxsUmV0dXJuVmFsdWUu
aCIKKyNpbmNsdWRlICJHZW5lcmF0b3JGcmFtZS5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5o
IgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSklULmgiCkBAIC04MTcsNiAr
ODE4LDExIEBAIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3RmxvYXQ2NEFycmF5V2l0
aE9uZUFyZ3VtZW50KAogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihjb25zdHJ1
Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpTRmxvYXQ2NEFycmF5PihleGVj
LCBzdHJ1Y3R1cmUsIGVuY29kZWRWYWx1ZSwgMCwgTnVsbG9wdCkpOwogfQogCitjaGFyKiBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbk5ld0dlbmVyYXRvckZyYW1lKEV4ZWNTdGF0ZSogZXhlYywgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIGludDMyX3QgbnVtYmVyT2ZDYWxsZWVMb2NhbHMpCit7CisgICAg
cmV0dXJuIGJpdHdpc2VfY2FzdDxjaGFyKj4oR2VuZXJhdG9yRnJhbWU6OmNyZWF0ZShleGVjLT52
bSgpLCBzdHJ1Y3R1cmUsIG51bWJlck9mQ2FsbGVlTG9jYWxzKSk7Cit9CisKIEpTQ2VsbCogSklU
X09QRVJBVElPTiBvcGVyYXRpb25DcmVhdGVBY3RpdmF0aW9uRGlyZWN0KEV4ZWNTdGF0ZSogZXhl
YywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTU2NvcGUqIHNjb3BlLCBTeW1ib2xUYWJsZSogdGFi
bGUsIEVuY29kZWRKU1ZhbHVlIGluaXRpYWxWYWx1ZUVuY29kZWQpCiB7CiAgICAgSlNWYWx1ZSBp
bml0aWFsVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoaW5pdGlhbFZhbHVlRW5jb2RlZCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCmluZGV4IDVhNDgwNjVkMzg5OTY3
ZDgyZjBmZDVkNTUyMmNiYWM3MGMzNzBjYjguLmQ4NDE1MDA0MWU4YTg5OWY4ODBmNTdlNzlhYjM4
OGFjNzJjY2Q5NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3Bl
cmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5o
CkBAIC04MSw2ICs4MSw3IEBACiBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Zsb2F0
MzJBcnJheVdpdGhPbmVBcmd1bWVudChFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqLCBFbmNvZGVkSlNW
YWx1ZSkgV1RGX0lOVEVSTkFMOwogY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdGbG9h
dDY0QXJyYXlXaXRoU2l6ZShFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90KSBXVEZfSU5U
RVJOQUw7CiBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Zsb2F0NjRBcnJheVdpdGhP
bmVBcmd1bWVudChFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqLCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lO
VEVSTkFMOworY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdHZW5lcmF0b3JGcmFtZShF
eGVjU3RhdGUqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90KSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxTdHJpY3QoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRQcm9wZXJ0eSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlKSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uUHV0QnlWYWxOb25TdHJpY3QoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRQcm9wZXJ0eSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlKSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0
QnlWYWxDZWxsU3RyaWN0KEV4ZWNTdGF0ZSosIEpTQ2VsbCosIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRQcm9wZXJ0eSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSBXVEZfSU5URVJOQUw7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdh
dGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblBy
b3BhZ2F0aW9uUGhhc2UuY3BwCmluZGV4IGE2NzBjNzJjM2ZiMGJlZTYzNDk2NWNjYjc4ZjQ5Mjg1
OGEwNDRhYzIuLjI0MmQ3ZTkwZTk1NjRlMDhkZDYxOWFkZDViMGZlZjdmYTEzNDNjNmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9u
UGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblBy
b3BhZ2F0aW9uUGhhc2UuY3BwCkBAIC01MjUsNyArNTI1LDggQEAgY2xhc3MgUHJlZGljdGlvblBy
b3BhZ2F0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICB9CiAgICAgICAgICAgICAK
ICAgICAgICAgY2FzZSBOZXdSZWdleHA6Ci0gICAgICAgIGNhc2UgQ3JlYXRlQWN0aXZhdGlvbjog
eworICAgICAgICBjYXNlIENyZWF0ZUFjdGl2YXRpb246CisgICAgICAgIGNhc2UgTmV3R2VuZXJh
dG9yRnJhbWU6IHsKICAgICAgICAgICAgIGNoYW5nZWQgfD0gc2V0UHJlZGljdGlvbihTcGVjT2Jq
ZWN0T3RoZXIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKaW5kZXggMjMwZWZlZGM0ODMxNTEyYmFj
NTY4YmVlZmRiMjc2OTYxODcyMDk0Yy4uZjM0YjBhNzM2MDE5MWFhODk4MzhlNzFlM2ZiNTlmNmY2
YmIxYzE2ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9F
eGVjdXRlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRl
LmgKQEAgLTIzNyw2ICsyMzcsNyBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5
cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBOZXdBcnJheVdp
dGhTaXplOgogICAgIGNhc2UgTmV3QXJyYXlCdWZmZXI6CiAgICAgY2FzZSBOZXdSZWdleHA6Cisg
ICAgY2FzZSBOZXdHZW5lcmF0b3JGcmFtZToKICAgICBjYXNlIEJyZWFrcG9pbnQ6CiAgICAgY2Fz
ZSBQcm9maWxlV2lsbENhbGw6CiAgICAgY2FzZSBQcm9maWxlRGlkQ2FsbDoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggYmJhYmUyNmFm
OWZjYTEwMWFkOTEzNTUyMDFjMTQ3YjdlZDQ1ODY5OC4uYWZiNTdiNzA1Y2VlN2Q4NzJlNGMwZDYw
MzBmZjdlOTE1M2QyYjRlYSAxMDA3NTUKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJERkdTYW5lU3Ry
aW5nR2V0QnlWYWxTbG93UGF0aEdlbmVyYXRvci5oIgogI2luY2x1ZGUgIkRGR1Nsb3dQYXRoR2Vu
ZXJhdG9yLmgiCiAjaW5jbHVkZSAiRGlyZWN0QXJndW1lbnRzLmgiCisjaW5jbHVkZSAiR2VuZXJh
dG9yRnJhbWUuaCIKICNpbmNsdWRlICJKSVRBZGRHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJKSVRC
aXRBbmRHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJKSVRCaXRPckdlbmVyYXRvci5oIgpAQCAtNjM1
OCw2ICs2MzU5LDI5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdTdHJpbmdPYmpl
Y3QoTm9kZSogbm9kZSkKICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiB9CiAKK3Zv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdHZW5lcmF0b3JGcmFtZShOb2RlKiBub2RlKQor
eworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2ppdC5ncmFwaCgpLmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAgIFN0cnVjdHVyZSogc3RydWN0
dXJlID0gZ2xvYmFsT2JqZWN0LT5nZW5lcmF0b3JGcmFtZVN0cnVjdHVyZSgpOworCisgICAgR1BS
VGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKyAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaDEodGhpcyk7
CisgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2gyKHRoaXMpOworCisgICAgR1BSUmVnIHJlc3VsdEdQ
UiA9IHJlc3VsdC5ncHIoKTsKKyAgICBHUFJSZWcgc2NyYXRjaDFHUFIgPSBzY3JhdGNoMS5ncHIo
KTsKKyAgICBHUFJSZWcgc2NyYXRjaDJHUFIgPSBzY3JhdGNoMi5ncHIoKTsKKworICAgIEpJVENv
bXBpbGVyOjpKdW1wTGlzdCBzbG93UGF0aDsKKworICAgIGVtaXRBbGxvY2F0ZUpTT2JqZWN0V2l0
aEtub3duU2l6ZTxHZW5lcmF0b3JGcmFtZT4ocmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyKHN0cnVj
dHVyZSksIFRydXN0ZWRJbW1QdHIobnVsbHB0ciksIHNjcmF0Y2gxR1BSLCBzY3JhdGNoMkdQUiwg
c2xvd1BhdGgsIEdlbmVyYXRvckZyYW1lOjphbGxvY2F0aW9uU2l6ZUZvckxvY2Fscyhub2RlLT5n
ZW5lcmF0b3JGcmFtZVNpemUoKSkpOworICAgIG1faml0LnN0b3JlMzIoVHJ1c3RlZEltbTMyKDAp
LCBKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIEdlbmVyYXRvckZyYW1lOjpudW1iZXJP
ZlNhdmVkQ2FsbGVlTG9jYWxzT2Zmc2V0KCkpKTsKKworICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9y
KHNsb3dQYXRoQ2FsbChzbG93UGF0aCwgdGhpcywgb3BlcmF0aW9uTmV3R2VuZXJhdG9yRnJhbWUs
IHJlc3VsdEdQUiwgc3RydWN0dXJlLCBub2RlLT5nZW5lcmF0b3JGcmFtZVNpemUoKSkpOworCisg
ICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOworfQorCiB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlTmV3VHlwZWRBcnJheShOb2RlKiBub2RlKQogewogICAgIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QgPSBtX2ppdC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5oCmluZGV4IDAzMjJiYjdhYmRhNGM4MzYwNjk2MmIwZmMxYTE3ZTgyYTU1NjczZDQuLmVh
OWU3ZTJlZTU4NzRmMTg5NTJlYjAzNWViMjVjNGJjZDgxYjgyNDQgMTAwNzU1Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKQEAgLTIyNzMsNiArMjI3Myw3IEBA
IGNsYXNzIFNwZWN1bGF0aXZlSklUIHsKICAgICB2b2lkIGNvbXBpbGVQdXRCeVZhbEZvckZsb2F0
VHlwZWRBcnJheShHUFJSZWcgYmFzZSwgR1BSUmVnIHByb3BlcnR5LCBOb2RlKiwgVHlwZWRBcnJh
eVR5cGUpOwogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDbGFzc1R5cGU+IHZvaWQgY29tcGlsZU5l
d0Z1bmN0aW9uQ29tbW9uKEdQUlJlZywgU3RydWN0dXJlKiwgR1BSUmVnLCBHUFJSZWcsIEdQUlJl
ZywgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0Jiwgc2l6ZV90LCBGdW5jdGlvbkV4ZWN1dGFibGUq
LCBwdHJkaWZmX3QsIHB0cmRpZmZfdCwgcHRyZGlmZl90KTsKICAgICB2b2lkIGNvbXBpbGVOZXdG
dW5jdGlvbihOb2RlKik7CisgICAgdm9pZCBjb21waWxlTmV3R2VuZXJhdG9yRnJhbWUoTm9kZSop
OwogICAgIHZvaWQgY29tcGlsZUZvcndhcmRWYXJhcmdzKE5vZGUqKTsKICAgICB2b2lkIGNvbXBp
bGVDcmVhdGVBY3RpdmF0aW9uKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVDcmVhdGVEaXJlY3RB
cmd1bWVudHMoTm9kZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKaW5kZXggNTQ3YWEwYmM0ZDMzNmY0YjdmOGJlNGQ4M2Q1
NzNlZmI3NWIyNzM1OC4uMTI0NzJhZDFjYTcyY2M4OWRlZjNlNWE4ZjJjYWIxOGU0N2ZhODRjOCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMy
XzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
MzJfNjQuY3BwCkBAIC0zNjUwLDYgKzM2NTAsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZShOb2RlKiBub2RlKQogICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdFBheWxvYWQuZ3ByKCks
IG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9CisKKyAgICBjYXNlIE5ld0dlbmVyYXRvckZy
YW1lOiB7CisgICAgICAgIGNvbXBpbGVOZXdHZW5lcmF0b3JGcmFtZShub2RlKTsKKyAgICAgICAg
YnJlYWs7CisgICAgfQogICAgICAgICAKICAgICBjYXNlIFRvVGhpczogewogICAgICAgICBBU1NF
UlQobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IFVudHlwZWRVc2UpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKaW5kZXggYTU2YTUy
YjRkMzVkZWI2ZDNiMjg3NGQxYTE3NzgxN2Y5Y2NjNWRhZi4uYWQ5YjBkYjBlMzVlMTc0YjRmOTkz
YjQzNWMxNzEwNzhjNDE4NjNmOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCkBAIC0zNjg4LDYgKzM2ODgsMTEgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBjZWxsUmVzdWx0KHJlc3Vs
dC5ncHIoKSwgbm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KKworICAgIGNhc2UgTmV3R2Vu
ZXJhdG9yRnJhbWU6IHsKKyAgICAgICAgY29tcGlsZU5ld0dlbmVyYXRvckZyYW1lKG5vZGUpOwor
ICAgICAgICBicmVhazsKKyAgICB9CiAgICAgICAgIAogICAgIGNhc2UgVG9UaGlzOiB7CiAgICAg
ICAgIEFTU0VSVChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSk7CkBAIC00
NzIwLDYgKzQ3MjUsMjIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2Rl
KQogICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiAgICAgICAgIGJyZWFrOwog
ICAgIH0KKyAgICBjYXNlIFNhdmVUb0dlbmVyYXRvckZyYW1lOiB7CisgICAgICAgIFNwZWN1bGF0
ZUNlbGxPcGVyYW5kIGZyYW1lKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgSlNWYWx1
ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQyKCkpOworCisgICAgICAgIEdQUlJlZyBm
cmFtZUdQUiA9IHN0b3JhZ2UuZ3ByKCk7CisgICAgICAgIEdQUlJlZyB2YWx1ZUdQUiA9IHZhbHVl
LmdwcigpOworCisgICAgICAgIHNwZWN1bGF0ZShub2RlLCBub2RlLT5jaGlsZDIoKSk7CisKKyAg
ICAgICAgbV9qaXQuc3RvcmU2NCh2YWx1ZUdQUiwgSklUQ29tcGlsZXI6OkFkZHJlc3MoZnJhbWVH
UFIsIG9mZnNldFJlbGF0aXZlVG9CYXNlKHN0b3JhZ2VBY2Nlc3NEYXRhLm9mZnNldCkpKTsKKwor
ICAgICAgICBub1Jlc3VsdChub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Ug
UmVzdW1lRnJvbUdlbmVyYXRvckZyYW1lOiB7CisgICAgfQogICAgIGNhc2UgUHJvZmlsZVR5cGU6
IHsKICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwog
ICAgICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaDEodGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3Bw
CmluZGV4IDcyZjIyMDBjZWExMGI5ODEwZGJhOGM3YjE5ZmVmZjI0ZGFhNWRhZTMuLjAxYTc1NWU1
NzE3NzIxZjE5YzBiYzMxZmFkNWNlOWE0OGIwODk4YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3Bw
CkBAIC0yODEsNiArMjgxLDExIEBAIGNsYXNzIFN0b3JlQmFycmllckluc2VydGlvblBoYXNlIDog
cHVibGljIFBoYXNlIHsKICAgICAgICAgICAgICAgICBjb25zaWRlckJhcnJpZXIobV9ub2RlLT5j
aGlsZDEoKSwgbV9ub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIGNhc2UgU2F2ZVRvR2VuZXJhdG9yRnJhbWU6IHsKKyAg
ICAgICAgICAgICAgICBjb25zaWRlckJhcnJpZXIobV9ub2RlLT5jaGlsZDEoKSwgbV9ub2RlLT5j
aGlsZDIoKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgCiAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgIGJyZWFrOwpA
QCAtMjk2LDYgKzMwMSw3IEBAIGNsYXNzIFN0b3JlQmFycmllckluc2VydGlvblBoYXNlIDogcHVi
bGljIFBoYXNlIHsKICAgICAgICAgICAgIGNhc2UgTmV3QXJyYXlCdWZmZXI6CiAgICAgICAgICAg
ICBjYXNlIE5ld1R5cGVkQXJyYXk6CiAgICAgICAgICAgICBjYXNlIE5ld1JlZ2V4cDoKKyAgICAg
ICAgICAgIGNhc2UgTmV3R2VuZXJhdG9yRnJhbWU6CiAgICAgICAgICAgICBjYXNlIE1hdGVyaWFs
aXplTmV3T2JqZWN0OgogICAgICAgICAgICAgY2FzZSBNYXRlcmlhbGl6ZUNyZWF0ZUFjdGl2YXRp
b246CiAgICAgICAgICAgICBjYXNlIE5ld1N0cmluZ09iamVjdDoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2UuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFzZS5j
cHAKaW5kZXggMmMwNTU5ODQ5ODk5YmRmNmZiMTExNzU5N2UxMDU0YmZmMzU0NjY5My4uZTFhZWYw
YjJjMzkzZjU2MTk0OGNjYTVhOTU5ZjJlMDcxMDg4NDM4OCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFzZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFzZS5j
cHAKQEAgLTE0OSw2ICsxNDksOSBAQCBjbGFzcyBTdHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFzZSA6
IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICAgICAgY2FzZSBOZXdHZW5lcmF0b3JGdW5jdGlv
bjoKICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJTdHJ1Y3R1cmUobV9ncmFwaC5nbG9iYWxP
YmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+Z2VuZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1
cmUoKSk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2Ug
TmV3R2VuZXJhdG9yRnJhbWU6CisgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyU3RydWN0dXJl
KG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyktPmdlbmVyYXRv
ckZyYW1lU3RydWN0dXJlKCkpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKaW5kZXggYTNiZGZhN2NkNWQwZjU3
MjQ3ZjFiZThjNDBiMjUxMGQyOWQ4MDBmZi4uZDkyYmM4N2M3YjY5MDk0MWNjMmNjMjk4YmFmYmNm
ZmY1NzYzNjFmNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcApAQCAtMjE3LDYgKzIxNyw3
IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgREVGSU5FX09Q
KG9wX2Fzc2VydCkKICAgICAgICAgREVGSU5FX09QKG9wX3NhdmUpCiAgICAgICAgIERFRklORV9P
UChvcF9yZXN1bWUpCisgICAgICAgIERFRklORV9PUChvcF9uZXdfZ2VuZXJhdG9yX2ZyYW1lKQog
ICAgICAgICBERUZJTkVfT1Aob3BfZGVidWcpCiAgICAgICAgIERFRklORV9PUChvcF9kZWxfYnlf
aWQpCiAgICAgICAgIERFRklORV9PUChvcF9kaXYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAppbmRl
eCBkZjdiM2RjNWU4OTIwZWU0ZWY5MmJjYWNiYWVmZjFiNGMwMGQ5MzY5Li5hODhiYjY2NzRjYzg1
MGJiNjY5ZDdjYmNkMGM4YWU3YmJmMjI0MDU4IDEwMDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKQEAg
LTQ5Niw2ICs0OTYsNyBAQAogICAgICAgICB2b2lkIGVtaXRfb3BfYXNzZXJ0KEluc3RydWN0aW9u
Kik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9zYXZlKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZv
aWQgZW1pdF9vcF9yZXN1bWUoSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX25l
d19nZW5lcmF0b3JfZnJhbWUoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2Rl
YnVnKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9kZWxfYnlfaWQoSW5zdHJ1
Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2RpdihJbnN0cnVjdGlvbiopOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKaW5kZXggNzk1ZjI5ZTllMGIyYTcyODNk
NmUyZWNmYTZjY2E5ODFmYmQwYWJjYy4uNGU4OWNhMWQ4ZTRlZTAxMDNmOGZlYzhmNjE0YzFmNWVi
NjgyYjMwMiAxMDA3NTUKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVz
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCkBAIC0x
NDQxLDYgKzE0NDEsMTIgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcmVzdW1lKEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKIH0KIAordm9pZCBK
SVQ6OmVtaXRfb3BfbmV3X2dlbmVyYXRvcl9mcmFtZShJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQoreworICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVu
dEluc3RydWN0aW9uLCBzbG93X3BhdGhfbmV3X2dlbmVyYXRvcl9mcmFtZSk7CisgICAgc2xvd1Bh
dGhDYWxsLmNhbGwoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBFTkFC
TEUoSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXIuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXIuYXNtCmluZGV4IGNkNGNlOTA2M2IxOTU3NWE5NTdlM2NhM2UyMmJlNTc5MTViZGI1
OWEuLjAwYTdhZGI4OWQ1YzVlMDk1NDIxMTU2ZDRmZTRiZDY3ZTE3YjZhYTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KQEAg
LTEyNTYsNiArMTI1NiwxMiBAQCBfbGxpbnRfb3BfbmV3X3JlZ2V4cDoKICAgICBkaXNwYXRjaCgz
KQogCiAKK19sbGludF9vcF9uZXdfZ2VuZXJhdG9yX2ZyYW1lOgorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF9uZXdfZ2VuZXJhdG9yX2ZyYW1lKQorICAg
IGRpc3BhdGNoKDMpCisKKwogX2xsaW50X29wX2xlc3M6CiAgICAgdHJhY2VFeGVjdXRpb24oKQog
ICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRoX2xlc3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1BhcnNlci5jcHAKaW5kZXggZTI4MDA3ZDk0NTAwMDQ0ZTU4Nzk0NTcyMzAyYjM3NzAzZGQ1
YmQ4OC4uNTIxYThmYzQwN2I1Y2ZjNDMxNDAzMjcwZjA4NmI5YzI4YjgwMTRjYSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcApAQCAtMjUwLDkgKzI1MCwxMCBAQAogICAg
IGJvb2wgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24gPSBmYWxzZTsKICAgICBpZiAobV9s
ZXhlci0+aXNSZXBhcnNpbmdGdW5jdGlvbigpKSB7CiAgICAgICAgIFBhcnNlckZ1bmN0aW9uSW5m
bzxBU1RCdWlsZGVyPiBmdW5jdGlvbkluZm87Ci0gICAgICAgIGlmIChwYXJzZU1vZGUgPT0gU291
cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JCb2R5TW9kZSkKLSAgICAgICAgICAgIGZ1bmN0aW9uSW5m
by5wYXJhbWV0ZXJzID0gY3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhjb250ZXh0KTsKLSAgICAg
ICAgZWxzZQorICAgICAgICBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJh
dG9yQm9keU1vZGUpIHsKKyAgICAgICAgICAgIHVuc2lnbmVkIHBhcmFtZXRlckNvdW50ID0gMDsK
KyAgICAgICAgICAgIGZ1bmN0aW9uSW5mby5wYXJhbWV0ZXJzID0gY3JlYXRlR2VuZXJhdG9yUGFy
YW1ldGVycyhjb250ZXh0LCBwYXJhbWV0ZXJDb3VudCk7CisgICAgICAgIH0gZWxzZQogICAgICAg
ICAgICAgcGFyc2VGdW5jdGlvblBhcmFtZXRlcnMoY29udGV4dCwgcGFyc2VNb2RlLCBmdW5jdGlv
bkluZm8pOwogICAgICAgICBtX3BhcmFtZXRlcnMgPSBmdW5jdGlvbkluZm8ucGFyYW1ldGVyczsK
IApAQCAtNDg1LDEwICs0ODYsOSBAQAogCiAgICAgUGFyc2VyRnVuY3Rpb25JbmZvPFRyZWVCdWls
ZGVyPiBpbmZvOwogICAgIGluZm8ubmFtZSA9ICZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5udWxsSWRl
bnRpZmllcjsKLSAgICBpbmZvLnBhcmFtZXRlcnMgPSBjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJz
KGNvbnRleHQpOworICAgIGluZm8ucGFyYW1ldGVycyA9IGNyZWF0ZUdlbmVyYXRvclBhcmFtZXRl
cnMoY29udGV4dCwgaW5mby5wYXJhbWV0ZXJDb3VudCk7CiAgICAgaW5mby5zdGFydE9mZnNldCA9
IHBhcmFtZXRlcnNTdGFydDsKICAgICBpbmZvLnN0YXJ0TGluZSA9IHRva2VuTGluZSgpOwotICAg
IGluZm8ucGFyYW1ldGVyQ291bnQgPSA0OyAvLyBnZW5lcmF0b3IsIHN0YXRlLCB2YWx1ZSwgcmVz
dW1lIG1vZGUKIAogICAgIHsKICAgICAgICAgQXV0b1BvcFNjb3BlUmVmIGdlbmVyYXRvckJvZHlT
Y29wZSh0aGlzLCBwdXNoU2NvcGUoKSk7CkBAIC0xNzgxLDMyICsxNzgxLDMxIEBAIHN0YXRpYyBj
b25zdCBjaGFyKiBzdHJpbmdGb3JGdW5jdGlvbk1vZGUoU291cmNlUGFyc2VNb2RlIG1vZGUpCiB9
CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+Ci10ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1
aWxkZXI+IHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpGb3JtYWxQYXJhbWV0ZXJMaXN0IFBhcnNlcjxM
ZXhlclR5cGU+OjpjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKFRyZWVCdWlsZGVyJiBjb250ZXh0
KQordGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6Rm9y
bWFsUGFyYW1ldGVyTGlzdCBQYXJzZXI8TGV4ZXJUeXBlPjo6Y3JlYXRlR2VuZXJhdG9yUGFyYW1l
dGVycyhUcmVlQnVpbGRlciYgY29udGV4dCwgdW5zaWduZWQmIHBhcmFtZXRlckNvdW50KQogewog
ICAgIGF1dG8gcGFyYW1ldGVycyA9IGNvbnRleHQuY3JlYXRlRm9ybWFsUGFyYW1ldGVyTGlzdCgp
OwogCiAgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CiAgICAg
SlNUZXh0UG9zaXRpb24gcG9zaXRpb24gPSB0b2tlblN0YXJ0UG9zaXRpb24oKTsKIAotICAgIC8v
IEBnZW5lcmF0b3IKLSAgICBkZWNsYXJlUGFyYW1ldGVyKCZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5n
ZW5lcmF0b3JQcml2YXRlTmFtZSk7Ci0gICAgYXV0byBnZW5lcmF0b3IgPSBjb250ZXh0LmNyZWF0
ZUJpbmRpbmdMb2NhdGlvbihsb2NhdGlvbiwgbV92bS0+cHJvcGVydHlOYW1lcy0+Z2VuZXJhdG9y
UHJpdmF0ZU5hbWUsIHBvc2l0aW9uLCBwb3NpdGlvbiwgQXNzaWdubWVudENvbnRleHQ6OkRlY2xh
cmF0aW9uU3RhdGVtZW50KTsKLSAgICBjb250ZXh0LmFwcGVuZFBhcmFtZXRlcihwYXJhbWV0ZXJz
LCBnZW5lcmF0b3IsIDApOworICAgIGF1dG8gYWRkUGFyYW1ldGVyID0gWyZdKGNvbnN0IElkZW50
aWZpZXImIG5hbWUpIHsKKyAgICAgICAgZGVjbGFyZVBhcmFtZXRlcigmbmFtZSk7CisgICAgICAg
IGF1dG8gYmluZGluZyA9IGNvbnRleHQuY3JlYXRlQmluZGluZ0xvY2F0aW9uKGxvY2F0aW9uLCBu
YW1lLCBwb3NpdGlvbiwgcG9zaXRpb24sIEFzc2lnbm1lbnRDb250ZXh0OjpEZWNsYXJhdGlvblN0
YXRlbWVudCk7CisgICAgICAgIGNvbnRleHQuYXBwZW5kUGFyYW1ldGVyKHBhcmFtZXRlcnMsIGJp
bmRpbmcsIDApOworICAgIH07CiAKKyAgICAvLyBAZ2VuZXJhdG9yCisgICAgYWRkUGFyYW1ldGVy
KG1fdm0tPnByb3BlcnR5TmFtZXMtPmdlbmVyYXRvclByaXZhdGVOYW1lKTsKICAgICAvLyBAZ2Vu
ZXJhdG9yU3RhdGUKLSAgICBkZWNsYXJlUGFyYW1ldGVyKCZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5n
ZW5lcmF0b3JTdGF0ZVByaXZhdGVOYW1lKTsKLSAgICBhdXRvIGdlbmVyYXRvclN0YXRlID0gY29u
dGV4dC5jcmVhdGVCaW5kaW5nTG9jYXRpb24obG9jYXRpb24sIG1fdm0tPnByb3BlcnR5TmFtZXMt
PmdlbmVyYXRvclN0YXRlUHJpdmF0ZU5hbWUsIHBvc2l0aW9uLCBwb3NpdGlvbiwgQXNzaWdubWVu
dENvbnRleHQ6OkRlY2xhcmF0aW9uU3RhdGVtZW50KTsKLSAgICBjb250ZXh0LmFwcGVuZFBhcmFt
ZXRlcihwYXJhbWV0ZXJzLCBnZW5lcmF0b3JTdGF0ZSwgMCk7Ci0KKyAgICBhZGRQYXJhbWV0ZXIo
bV92bS0+cHJvcGVydHlOYW1lcy0+Z2VuZXJhdG9yU3RhdGVQcml2YXRlTmFtZSk7CiAgICAgLy8g
QGdlbmVyYXRvclZhbHVlCi0gICAgZGVjbGFyZVBhcmFtZXRlcigmbV92bS0+cHJvcGVydHlOYW1l
cy0+Z2VuZXJhdG9yVmFsdWVQcml2YXRlTmFtZSk7Ci0gICAgYXV0byBnZW5lcmF0b3JWYWx1ZSA9
IGNvbnRleHQuY3JlYXRlQmluZGluZ0xvY2F0aW9uKGxvY2F0aW9uLCBtX3ZtLT5wcm9wZXJ0eU5h
bWVzLT5nZW5lcmF0b3JWYWx1ZVByaXZhdGVOYW1lLCBwb3NpdGlvbiwgcG9zaXRpb24sIEFzc2ln
bm1lbnRDb250ZXh0OjpEZWNsYXJhdGlvblN0YXRlbWVudCk7Ci0gICAgY29udGV4dC5hcHBlbmRQ
YXJhbWV0ZXIocGFyYW1ldGVycywgZ2VuZXJhdG9yVmFsdWUsIDApOwotCisgICAgYWRkUGFyYW1l
dGVyKG1fdm0tPnByb3BlcnR5TmFtZXMtPmdlbmVyYXRvclZhbHVlUHJpdmF0ZU5hbWUpOwogICAg
IC8vIEBnZW5lcmF0b3JSZXN1bWVNb2RlCi0gICAgZGVjbGFyZVBhcmFtZXRlcigmbV92bS0+cHJv
cGVydHlOYW1lcy0+Z2VuZXJhdG9yUmVzdW1lTW9kZVByaXZhdGVOYW1lKTsKLSAgICBhdXRvIGdl
bmVyYXRvclJlc3VtZU1vZGUgPSBjb250ZXh0LmNyZWF0ZUJpbmRpbmdMb2NhdGlvbihsb2NhdGlv
biwgbV92bS0+cHJvcGVydHlOYW1lcy0+Z2VuZXJhdG9yUmVzdW1lTW9kZVByaXZhdGVOYW1lLCBw
b3NpdGlvbiwgcG9zaXRpb24sIEFzc2lnbm1lbnRDb250ZXh0OjpEZWNsYXJhdGlvblN0YXRlbWVu
dCk7Ci0gICAgY29udGV4dC5hcHBlbmRQYXJhbWV0ZXIocGFyYW1ldGVycywgZ2VuZXJhdG9yUmVz
dW1lTW9kZSwgMCk7CisgICAgYWRkUGFyYW1ldGVyKG1fdm0tPnByb3BlcnR5TmFtZXMtPmdlbmVy
YXRvclJlc3VtZU1vZGVQcml2YXRlTmFtZSk7CisgICAgLy8gQGdlbmVyYXRvckZyYW1lCisgICAg
YWRkUGFyYW1ldGVyKG1fdm0tPnByb3BlcnR5TmFtZXMtPmdlbmVyYXRvckZyYW1lUHJpdmF0ZU5h
bWUpOworCisgICAgcGFyYW1ldGVyQ291bnQgPSA1OwogCiAgICAgcmV0dXJuIHBhcmFtZXRlcnM7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAppbmRleCBhMTFiMzVjMTAxZmU1
Yjg0OWNiMjMzMDk2YzU2ODMxMzcwNjZjYWJmLi5lNjE0OWEzYWMzNjk0MDQ4OTNkMjM2OTY5MzE2
YjVjMzAzM2JlODUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Bh
cnNlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKQEAgLTEy
NTksNyArMTI1OSw3IEBAIGNsYXNzIFBhcnNlciB7CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVC
dWlsZGVyPiBORVZFUl9JTkxJTkUgYm9vbCBwYXJzZUZ1bmN0aW9uSW5mbyhUcmVlQnVpbGRlciYs
IEZ1bmN0aW9uUmVxdWlyZW1lbnRzLCBTb3VyY2VQYXJzZU1vZGUsIGJvb2wgbmFtZUlzSW5Db250
YWluaW5nU2NvcGUsIENvbnN0cnVjdG9yS2luZCwgU3VwZXJCaW5kaW5nLCBpbnQgZnVuY3Rpb25L
ZXl3b3JkU3RhcnQsIFBhcnNlckZ1bmN0aW9uSW5mbzxUcmVlQnVpbGRlcj4mLCBGdW5jdGlvbkRl
ZmluaXRpb25UeXBlKTsKICAgICAKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5F
VkVSX0lOTElORSBpbnQgcGFyc2VGdW5jdGlvblBhcmFtZXRlcnMoVHJlZUJ1aWxkZXImLCBTb3Vy
Y2VQYXJzZU1vZGUsIFBhcnNlckZ1bmN0aW9uSW5mbzxUcmVlQnVpbGRlcj4mKTsKLSAgICB0ZW1w
bGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElORSB0eXBlbmFtZSBUcmVlQnVpbGRl
cjo6Rm9ybWFsUGFyYW1ldGVyTGlzdCBjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKFRyZWVCdWls
ZGVyJik7CisgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBORVZFUl9JTkxJTkUgdHlw
ZW5hbWUgVHJlZUJ1aWxkZXI6OkZvcm1hbFBhcmFtZXRlckxpc3QgY3JlYXRlR2VuZXJhdG9yUGFy
YW1ldGVycyhUcmVlQnVpbGRlciYsIHVuc2lnbmVkJiBwYXJhbWV0ZXJDb3VudCk7CiAKICAgICB0
ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElORSBUcmVlQ2xhc3NFeHByZXNz
aW9uIHBhcnNlQ2xhc3MoVHJlZUJ1aWxkZXImLCBGdW5jdGlvblJlcXVpcmVtZW50cywgUGFyc2Vy
Q2xhc3NJbmZvPFRyZWVCdWlsZGVyPiYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAppbmRleCA2ZjhjNzU0OTk2ZTM2MzRkZjlmMmIx
ZmYzOWE3ZWY4MzQ4M2FjZjI0Li40YjkwNGUzYzlmYzM3OTUzM2YzN2QxODA2ZDAwZTkzMDkwYmJk
ZjhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93
UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQ
YXRocy5jcHAKQEAgLTY5NywxOCArNjk3LDcgQEAgc3RhdGljIHZvaWQgdXBkYXRlUmVzdWx0UHJv
ZmlsZUZvckJpbmFyeUFyaXRoT3AoRXhlY1N0YXRlKiwgSW5zdHJ1Y3Rpb24qLCBKU1ZhbHUKICAg
ICAvLyBPbmx5IHNhdmUgdmFyaWFibGVzIGFuZCB0ZW1wb3JhcnkgcmVnaXN0ZXJzLiBUaGUgc2Nv
cGUgcmVnaXN0ZXJzIGFyZSBpbmNsdWRlZCBpbiB0aGVtLgogICAgIC8vIEJ1dCBwYXJhbWV0ZXJz
IGFyZSBub3QgaW5jbHVkZWQuIEJlY2F1c2UgdGhlIGdlbmVyYXRvciBpbXBsZW1lbnRhdGlvbiBy
ZXBsYWNlcyB0aGUgdmFsdWVzIG9mIHBhcmFtZXRlcnMgb24gZWFjaCBnZW5lcmF0b3IubmV4dCgp
IGNhbGwuCiAgICAgQkVHSU4oKTsKLSAgICBKU1ZhbHVlIGdlbmVyYXRvciA9IE9QKDEpLmpzVmFs
dWUoKTsKLSAgICBHZW5lcmF0b3JGcmFtZSogZnJhbWUgPSBudWxscHRyOwotICAgIEpTVmFsdWUg
dmFsdWUgPSBnZW5lcmF0b3IuZ2V0KGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5nZW5lcmF0
b3JGcmFtZVByaXZhdGVOYW1lKTsKLSAgICBpZiAoIXZhbHVlLmlzTnVsbCgpKQotICAgICAgICBm
cmFtZSA9IGpzQ2FzdDxHZW5lcmF0b3JGcmFtZSo+KHZhbHVlKTsKLSAgICBlbHNlIHsKLSAgICAg
ICAgLy8gRklYTUU6IE9uY2UgSlNHZW5lcmF0b3Igc3BlY2lhbGl6ZWQgb2JqZWN0IGlzIGludHJv
ZHVjZWQsIHRoaXMgR2VuZXJhdG9yRnJhbWUgc2hvdWxkIGJlIGVtYmVkZWQgaW50byBpdCB0byBh
dm9pZCBhbGxvY2F0aW9ucy4KLSAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE1MTU0NQotICAgICAgICBmcmFtZSA9IEdlbmVyYXRvckZyYW1lOjpjcmVh
dGUoZXhlYy0+dm0oKSwgIGV4ZWMtPmNvZGVCbG9jaygpLT5udW1DYWxsZWVMb2NhbHMoKSk7Ci0g
ICAgICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGdlbmVyYXRvciwgdHJ1ZSwgUHV0UHJvcGVydHlT
bG90OjpQdXRCeUlkKTsKLSAgICAgICAgYXNPYmplY3QoZ2VuZXJhdG9yKS0+bWV0aG9kVGFibGUo
ZXhlYy0+dm0oKSktPnB1dChhc09iamVjdChnZW5lcmF0b3IpLCBleGVjLCBleGVjLT5wcm9wZXJ0
eU5hbWVzKCkuZ2VuZXJhdG9yRnJhbWVQcml2YXRlTmFtZSwgZnJhbWUsIHNsb3QpOwotICAgIH0K
KyAgICBHZW5lcmF0b3JGcmFtZSogZnJhbWUgPSBqc0Nhc3Q8R2VuZXJhdG9yRnJhbWUqPihPUCgx
KS5qc1ZhbHVlKCkpOwogICAgIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9IHBjWzJd
LnUudW5zaWduZWRWYWx1ZTsKICAgICBmcmFtZS0+c2F2ZShleGVjLCBleGVjLT5jb2RlQmxvY2so
KS0+bGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQobGl2ZUNhbGxlZUxvY2Fsc0luZGV4KSk7CiAgICAg
RU5EKCk7CkBAIC03MTcsOCArNzA2LDcgQEAgc3RhdGljIHZvaWQgdXBkYXRlUmVzdWx0UHJvZmls
ZUZvckJpbmFyeUFyaXRoT3AoRXhlY1N0YXRlKiwgSW5zdHJ1Y3Rpb24qLCBKU1ZhbHUKIFNMT1df
UEFUSF9ERUNMKHNsb3dfcGF0aF9yZXN1bWUpCiB7CiAgICAgQkVHSU4oKTsKLSAgICBKU1ZhbHVl
IGdlbmVyYXRvciA9IE9QKDEpLmpzVmFsdWUoKTsKLSAgICBHZW5lcmF0b3JGcmFtZSogZnJhbWUg
PSBqc0Nhc3Q8R2VuZXJhdG9yRnJhbWUqPihnZW5lcmF0b3IuZ2V0KGV4ZWMsIGV4ZWMtPnByb3Bl
cnR5TmFtZXMoKS5nZW5lcmF0b3JGcmFtZVByaXZhdGVOYW1lKSk7CisgICAgR2VuZXJhdG9yRnJh
bWUqIGZyYW1lID0ganNDYXN0PEdlbmVyYXRvckZyYW1lKj4oT1AoMSkuanNWYWx1ZSgpKTsKICAg
ICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSBwY1syXS51LnVuc2lnbmVkVmFsdWU7
CiAgICAgZnJhbWUtPnJlc3VtZShleGVjLCBleGVjLT5jb2RlQmxvY2soKS0+bGl2ZUNhbGxlZUxv
Y2Fsc0F0WWllbGQobGl2ZUNhbGxlZUxvY2Fsc0luZGV4KSk7CiAgICAgRU5EKCk7CkBAIC03OTcs
NCArNzg1LDEyIEBAIHN0YXRpYyB2b2lkIHVwZGF0ZVJlc3VsdFByb2ZpbGVGb3JCaW5hcnlBcml0
aE9wKEV4ZWNTdGF0ZSosIEluc3RydWN0aW9uKiwgSlNWYWx1CiAgICAgRU5EKCk7CiB9CiAKK1NM
T1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9uZXdfZ2VuZXJhdG9yX2ZyYW1lKQoreworICAgIEJFR0lO
KCk7CisgICAgdW5zaWduZWQgZ2VuZXJhdG9yRnJhbWVTaXplID0gcGNbMl0udS51bnNpZ25lZFZh
bHVlOworICAgIFJFVFVSTihHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlKGV4ZWMsIGdlbmVyYXRvckZy
YW1lU2l6ZSkpOworfQorCisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAppbmRleCBmMDBkODcwNWQ0ZTY3ZmU0
ZDQwNTliZGUxNjhlZTg4ZjU3ZGY3MmU3Li4wNjUwYzRlOGNiNzE1NTkxN2NkMWQ3YTJmNzdhN2M3
ZjcyOWExNTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21t
b25TbG93UGF0aHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25T
bG93UGF0aHMuaApAQCAtMjk2LDYgKzI5Niw3IEBAIGlubGluZSB2b2lkIGRlY29kZVJlc3VsdChT
bG93UGF0aFJldHVyblR5cGUgcmVzdWx0LCB2b2lkKiYgYSwgdm9pZComIGIpCiBTTE9XX1BBVEhf
SElEREVOX0RFQ0woc2xvd19wYXRoX3B1c2hfd2l0aF9zY29wZSk7CiBTTE9XX1BBVEhfSElEREVO
X0RFQ0woc2xvd19wYXRoX3Jlc29sdmVfc2NvcGUpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNs
b3dfcGF0aF9jb3B5X3Jlc3QpOworU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9uZXdf
Z2VuZXJhdG9yX2ZyYW1lKTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZyYW1lLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZyYW1lLmNwcAppbmRleCBlZjZlYTdhMTAw
MjU4YzNlY2UwNGRhYWI0M2JkYWE4NTFlYzhmNzE1Li4zMGI4MTRhNjM2NjcyNjgyNWMzODQ5ZmZi
MjgwNGQyZmYzODA0MTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9HZW5lcmF0b3JGcmFtZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
R2VuZXJhdG9yRnJhbWUuY3BwCkBAIC0zMCw2MCArMzAsNjAgQEAKICNpbmNsdWRlICJIZWFwSXRl
cmF0aW9uU2NvcGUuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUg
IkpTQ2VsbElubGluZXMuaCIKKyNpbmNsdWRlICJKU09iamVjdElubGluZXMuaCIKICNpbmNsdWRl
ICJTbG90VmlzaXRvcklubGluZXMuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCiAK
IG5hbWVzcGFjZSBKU0MgewogCi1jb25zdCBDbGFzc0luZm8gR2VuZXJhdG9yRnJhbWU6OnNfaW5m
byA9IHsgIkdlbmVyYXRvckZyYW1lIiwgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9U
QUJMRShHZW5lcmF0b3JGcmFtZSkgfTsKK2NvbnN0IENsYXNzSW5mbyBHZW5lcmF0b3JGcmFtZTo6
c19pbmZvID0geyAiR2VuZXJhdG9yRnJhbWUiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBDUkVB
VEVfTUVUSE9EX1RBQkxFKEdlbmVyYXRvckZyYW1lKSB9OwogCi1HZW5lcmF0b3JGcmFtZTo6R2Vu
ZXJhdG9yRnJhbWUoVk0mIHZtLCBzaXplX3QgbnVtYmVyT2ZDYWxsZWVMb2NhbHMpCi0gICAgOiBC
YXNlKHZtLCB2bS5nZW5lcmF0b3JGcmFtZVN0cnVjdHVyZS5nZXQoKSkKLSAgICAsIG1fbnVtYmVy
T2ZDYWxsZWVMb2NhbHMobnVtYmVyT2ZDYWxsZWVMb2NhbHMpCitHZW5lcmF0b3JGcmFtZTo6R2Vu
ZXJhdG9yRnJhbWUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEJhc2Uodm0s
IHN0cnVjdHVyZSkKIHsKIH0KIAotdm9pZCBHZW5lcmF0b3JGcmFtZTo6ZmluaXNoQ3JlYXRpb24o
Vk0mIHZtKQotewotICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKLSAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IG1fbnVtYmVyT2ZDYWxsZWVMb2NhbHM7ICsraSkKLSAgICAgICAgbG9jYWxB
dChpKS5jbGVhcigpOwotfQotCiBTdHJ1Y3R1cmUqIEdlbmVyYXRvckZyYW1lOjpjcmVhdGVTdHJ1
Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3Rv
dHlwZSkKIHsKLSAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwg
cHJvdG90eXBlLCBUeXBlSW5mbyhDZWxsVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwor
ICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUs
IFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKIH0KIAotR2Vu
ZXJhdG9yRnJhbWUqIEdlbmVyYXRvckZyYW1lOjpjcmVhdGUoVk0mIHZtLCBzaXplX3QgbnVtYmVy
T2ZMb2NhbHMpCitHZW5lcmF0b3JGcmFtZSogR2VuZXJhdG9yRnJhbWU6OmNyZWF0ZShWTSYgdm0s
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBzaXplX3QgbnVtYmVyT2ZDYWxsZWVMb2NhbHMpCiB7CiAg
ICAgR2VuZXJhdG9yRnJhbWUqIHJlc3VsdCA9CiAgICAgICAgIG5ldyAoCiAgICAgICAgICAgICBO
b3ROdWxsLAotICAgICAgICAgICAgYWxsb2NhdGVDZWxsPEdlbmVyYXRvckZyYW1lPih2bS5oZWFw
LCBhbGxvY2F0aW9uU2l6ZUZvckxvY2FscyhudW1iZXJPZkxvY2FscykpKQotICAgICAgICBHZW5l
cmF0b3JGcmFtZSh2bSwgbnVtYmVyT2ZMb2NhbHMpOworICAgICAgICAgICAgYWxsb2NhdGVDZWxs
PEdlbmVyYXRvckZyYW1lPih2bS5oZWFwLCBhbGxvY2F0aW9uU2l6ZUZvckxvY2FscyhudW1iZXJP
ZkNhbGxlZUxvY2FscykpKQorICAgICAgICBHZW5lcmF0b3JGcmFtZSh2bSwgc3RydWN0dXJlKTsK
ICAgICByZXN1bHQtPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQog
CitHZW5lcmF0b3JGcmFtZSogR2VuZXJhdG9yRnJhbWU6OmNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMs
IHNpemVfdCBudW1iZXJPZkNhbGxlZUxvY2FscykKK3sKKyAgICByZXR1cm4gY3JlYXRlKGV4ZWMt
PnZtKCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+Z2VuZXJhdG9yRnJhbWVTdHJ1Y3R1
cmUoKSwgbnVtYmVyT2ZDYWxsZWVMb2NhbHMpOworfQorCiB2b2lkIEdlbmVyYXRvckZyYW1lOjpz
YXZlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZUNhbGxlZUxvY2Fs
cykKIHsKICAgICAvLyBPbmx5IHNhdmUgY2FsbGVlIGxvY2Fscy4KICAgICAvLyBFdmVyeSB0aW1l
IGEgZ2VuZXJhdG9yIGlzIGNhbGxlZCAob3IgcmVzdW1lZCksIHBhcmFtZXRlcnMgc2hvdWxkIGJl
IHJlcGxhY2VkLgotICAgIEFTU0VSVChsaXZlQ2FsbGVlTG9jYWxzLm51bUJpdHMoKSA8PSBtX251
bWJlck9mQ2FsbGVlTG9jYWxzKTsKKyAgICB1bnNpZ25lZCBnZW5lcmF0b3JGcmFtZUluZGV4ID0g
MDsKICAgICBsaXZlQ2FsbGVlTG9jYWxzLmZvckVhY2hTZXRCaXQoWyZdKHNpemVfdCBpbmRleCkg
ewotICAgICAgICBsb2NhbEF0KGluZGV4KS5zZXQoZXhlYy0+dm0oKSwgdGhpcywgZXhlYy0+dW5j
aGVja2VkUih2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChpbmRleCkpLmpzVmFsdWUoKSk7CisgICAg
ICAgIGxvY2FsQXQoZ2VuZXJhdG9yRnJhbWVJbmRleCsrKS5zZXQoZXhlYy0+dm0oKSwgdGhpcywg
ZXhlYy0+dW5jaGVja2VkUih2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChpbmRleCkpLmpzVmFsdWUo
KSk7CiAgICAgfSk7CisgICAgbV9udW1iZXJPZlNhdmVkQ2FsbGVlTG9jYWxzID0gZ2VuZXJhdG9y
RnJhbWVJbmRleDsKIH0KIAogdm9pZCBHZW5lcmF0b3JGcmFtZTo6cmVzdW1lKEV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZUNhbGxlZUxvY2FscykKIHsKICAgICAvLyBP
bmx5IHJlc3VtZSBjYWxsZWUgbG9jYWxzLgogICAgIC8vIEV2ZXJ5IHRpbWUgYSBnZW5lcmF0b3Ig
aXMgY2FsbGVkIChvciByZXN1bWVkKSwgcGFyYW1ldGVycyBzaG91bGQgYmUgcmVwbGFjZWQuCisg
ICAgdW5zaWduZWQgZ2VuZXJhdG9yRnJhbWVJbmRleCA9IDA7CiAgICAgbGl2ZUNhbGxlZUxvY2Fs
cy5mb3JFYWNoU2V0Qml0KFsmXShzaXplX3QgaW5kZXgpIHsKLSAgICAgICAgZXhlYy0+dW5jaGVj
a2VkUih2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChpbmRleCkpID0gbG9jYWxBdChpbmRleCkuZ2V0
KCk7Ci0gICAgICAgIGxvY2FsQXQoaW5kZXgpLmNsZWFyKCk7CisgICAgICAgIGV4ZWMtPnVuY2hl
Y2tlZFIodmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaW5kZXgpKSA9IGxvY2FsQXQoZ2VuZXJhdG9y
RnJhbWVJbmRleCsrKS5nZXQoKTsKICAgICB9KTsKKyAgICBtX251bWJlck9mU2F2ZWRDYWxsZWVM
b2NhbHMgPSAwOwogfQogCiB2b2lkIEdlbmVyYXRvckZyYW1lOjp2aXNpdENoaWxkcmVuKEpTQ2Vs
bCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCkBAIC05MSw3ICs5MSw3IEBAIHZvaWQgR2Vu
ZXJhdG9yRnJhbWU6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlz
aXRvcikKICAgICBHZW5lcmF0b3JGcmFtZSogdGhpc09iamVjdCA9IGpzQ2FzdDxHZW5lcmF0b3JG
cmFtZSo+KGNlbGwpOwogICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRv
cik7CiAgICAgLy8gU2luY2Ugb25seSB0cnVlIGNlbGwgcG9pbnRlcnMgYXJlIHN0b3JlZCBhcyBh
IGNlbGwsIHdlIGNhbiBzYWZlbHkgbWFyayB0aGVtLgotICAgIHZpc2l0b3IuYXBwZW5kVmFsdWVz
KHRoaXNPYmplY3QtPmxvY2FscygpLCB0aGlzT2JqZWN0LT5tX251bWJlck9mQ2FsbGVlTG9jYWxz
KTsKKyAgICB2aXNpdG9yLmFwcGVuZFZhbHVlcyh0aGlzT2JqZWN0LT5sb2NhbHMoKSwgdGhpc09i
amVjdC0+bV9udW1iZXJPZlNhdmVkQ2FsbGVlTG9jYWxzKTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
SlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JG
cmFtZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJhbWUuaApp
bmRleCAzZDU0NWIxNDdkZDRhYmZiMmJiYjliNWE3MTk0ZThmNzQ4NDFjNDlhLi4wY2ExODBiN2Qy
MDY0YmEyNGE1MWRiMzVlY2ZiZmQ3MDg1MDU2MWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGcmFtZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0dlbmVyYXRvckZyYW1lLmgKQEAgLTI3LDExICsyNywxMiBAQAogI2RlZmlu
ZSBHZW5lcmF0b3JGcmFtZV9oCiAKICNpbmNsdWRlICJKU0NlbGwuaCIKKyNpbmNsdWRlICJKU09i
amVjdC5oIgogI2luY2x1ZGUgPHd0Zi9GYXN0Qml0VmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBKU0Mg
ewogCi1jbGFzcyBHZW5lcmF0b3JGcmFtZSA6IHB1YmxpYyBKU0NlbGwgeworY2xhc3MgR2VuZXJh
dG9yRnJhbWUgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAgZnJpZW5kIGNsYXNzIEpJ
VDsKICNpZiBFTkFCTEUoREZHX0pJVCkKICAgICBmcmllbmQgY2xhc3MgREZHOjpTcGVjdWxhdGl2
ZUpJVDsKQEAgLTM5LDEyICs0MCwxMiBAQCBjbGFzcyBHZW5lcmF0b3JGcmFtZSA6IHB1YmxpYyBK
U0NlbGwgewogI2VuZGlmCiAgICAgZnJpZW5kIGNsYXNzIFZNOwogcHVibGljOgotICAgIHR5cGVk
ZWYgSlNDZWxsIEJhc2U7Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdz
ID0gU3RydWN0dXJlSXNJbW1vcnRhbCB8IEJhc2U6OlN0cnVjdHVyZUZsYWdzOworICAgIHR5cGVk
ZWYgSlNOb25GaW5hbE9iamVjdCBCYXNlOwogCiAgICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKIAot
ICAgIHN0YXRpYyBHZW5lcmF0b3JGcmFtZSogY3JlYXRlKFZNJiwgc2l6ZV90IG51bWJlck9mQ2Fs
bGVlTG9jYWxzKTsKKyAgICBzdGF0aWMgR2VuZXJhdG9yRnJhbWUqIGNyZWF0ZShFeGVjU3RhdGUq
LCBzaXplX3QgbnVtYmVyT2ZDYWxsZWVMb2NhbHMpOworICAgIHN0YXRpYyBHZW5lcmF0b3JGcmFt
ZSogY3JlYXRlKFZNJiwgU3RydWN0dXJlKiwgc2l6ZV90IG51bWJlck9mQ2FsbGVlTG9jYWxzKTsK
IAogICAgIFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qIGxvY2FscygpCiAgICAgewpAQCAtNTMs
NyArNTQsNiBAQCBjbGFzcyBHZW5lcmF0b3JGcmFtZSA6IHB1YmxpYyBKU0NlbGwgewogCiAgICAg
V3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiYgbG9jYWxBdChzaXplX3QgaW5kZXgpCiAgICAgewot
ICAgICAgICBBU1NFUlQoaW5kZXggPCBtX251bWJlck9mQ2FsbGVlTG9jYWxzKTsKICAgICAgICAg
cmV0dXJuIGxvY2FscygpW2luZGV4XTsKICAgICB9CiAKQEAgLTYyLDYgKzYyLDExIEBAIGNsYXNz
IEdlbmVyYXRvckZyYW1lIDogcHVibGljIEpTQ2VsbCB7CiAgICAgICAgIHJldHVybiBXVEY6OnJv
dW5kVXBUb011bHRpcGxlT2Y8c2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPik+KHNpemVvZihH
ZW5lcmF0b3JGcmFtZSkpOwogICAgIH0KIAorICAgIHN0YXRpYyBzaXplX3QgbnVtYmVyT2ZTYXZl
ZENhbGxlZUxvY2Fsc09mZnNldCgpCisgICAgeworICAgICAgICByZXR1cm4gT0JKRUNUX09GRlNF
VE9GKEdlbmVyYXRvckZyYW1lLCBtX251bWJlck9mU2F2ZWRDYWxsZWVMb2NhbHMpOworICAgIH0K
KwogICAgIHN0YXRpYyBzaXplX3QgYWxsb2NhdGlvblNpemVGb3JMb2NhbHModW5zaWduZWQgbnVt
YmVyT2ZMb2NhbHMpCiAgICAgewogICAgICAgICByZXR1cm4gb2Zmc2V0T2ZMb2NhbHMoKSArIG51
bWJlck9mTG9jYWxzICogc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPik7CkBAIC03MywxNCAr
NzgsMTIgQEAgY2xhc3MgR2VuZXJhdG9yRnJhbWUgOiBwdWJsaWMgSlNDZWxsIHsKICAgICB2b2lk
IHJlc3VtZShFeGVjU3RhdGUqLCBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlQ2FsbGVlTG9jYWxz
KTsKIAogcHJpdmF0ZToKLSAgICBHZW5lcmF0b3JGcmFtZShWTSYsIHNpemVfdCBudW1iZXJPZkNh
bGxlZUxvY2Fscyk7CisgICAgR2VuZXJhdG9yRnJhbWUoVk0mLCBTdHJ1Y3R1cmUqKTsKIAotICAg
IHNpemVfdCBtX251bWJlck9mQ2FsbGVlTG9jYWxzOworICAgIHVpbnQzMl90IG1fbnVtYmVyT2ZT
YXZlZENhbGxlZUxvY2FscyB7IDAgfTsKIAogICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNF
eHRyYWN0b3I7CiAKLSAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7Ci0KIHByb3RlY3RlZDoK
ICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3Bw
CmluZGV4IDc2OWEzZWZiMzA0MzhkY2Q5ZGRlNDQyZGM4ODk0YTFmMDM4MmE1MDQuLjhjYjg0YWJl
NWY4NzM5YTAxOGU2MmVhNDhmNDcxNDQ0Nzk1NTFkM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTUwLDYgKzUwLDcgQEAKICNp
bmNsdWRlICJFcnJvclByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkZ1bmN0aW9uQ29uc3RydWN0b3Iu
aCIKICNpbmNsdWRlICJGdW5jdGlvblByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkdlbmVyYXRvckZy
YW1lLmgiCiAjaW5jbHVkZSAiR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5oIgogI2luY2x1
ZGUgIkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiR2VuZXJhdG9yUHJv
dG90eXBlLmgiCkBAIC0zODgsNiArMzg5LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdChW
TSYgdm0pCiAgICAgCiAgICAgRk9SX0VBQ0hfQlVJTFRJTl9ERVJJVkVEX0lURVJBVE9SX1RZUEUo
Q1JFQVRFX1BST1RPVFlQRV9GT1JfREVSSVZFRF9JVEVSQVRPUl9UWVBFKQogICAgIG1fcHJvcGVy
dHlOYW1lSXRlcmF0b3JTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBKU1Byb3BlcnR5TmFtZUl0ZXJh
dG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1faXRlcmF0b3JQcm90b3R5cGUuZ2V0KCkp
KTsKKyAgICBtX2dlbmVyYXRvckZyYW1lU3RydWN0dXJlLnNldCh2bSwgdGhpcywgR2VuZXJhdG9y
RnJhbWU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywganNOdWxsKCkpKTsKICAgICBtX2dlbmVy
YXRvclByb3RvdHlwZS5zZXQodm0sIHRoaXMsIEdlbmVyYXRvclByb3RvdHlwZTo6Y3JlYXRlKHZt
LCB0aGlzLCBHZW5lcmF0b3JQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9p
dGVyYXRvclByb3RvdHlwZS5nZXQoKSkpKTsKICAgICAKICN1bmRlZiBDUkVBVEVfUFJPVE9UWVBF
X0ZPUl9ERVJJVkVEX0lURVJBVE9SX1RZUEUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IDM4NzIyMWI5MzMzNDgwNjAyOWIyZjMwMTA0N2Rm
NTMzMWNkNGVkYzguLjE5MGM5MzMwMmQyZGM2YTcyNWI5ZDhhYTViYTk1NjQ1NDlhMzMxNjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAt
MjU0LDYgKzI1NCw3IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVk
VmFyaWFibGVPYmplY3QgewogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fY2FsbGJhY2tG
dW5jdGlvblN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2NhbGxiYWNr
T2JqZWN0U3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fcHJvcGVydHlO
YW1lSXRlcmF0b3JTdHJ1Y3R1cmU7CisgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9nZW5l
cmF0b3JGcmFtZVN0cnVjdHVyZTsKICNpZiBKU0NfT0JKQ19BUElfRU5BQkxFRAogICAgIFdyaXRl
QmFycmllcjxTdHJ1Y3R1cmU+IG1fb2JqY0NhbGxiYWNrRnVuY3Rpb25TdHJ1Y3R1cmU7CiAgICAg
V3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9vYmpjV3JhcHBlck9iamVjdFN0cnVjdHVyZTsKQEAg
LTUwMCw2ICs1MDEsNyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRl
ZFZhcmlhYmxlT2JqZWN0IHsKICAgICBTdHJ1Y3R1cmUqIGNhbGxiYWNrRnVuY3Rpb25TdHJ1Y3R1
cmUoKSBjb25zdCB7IHJldHVybiBtX2NhbGxiYWNrRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7IH0K
ICAgICBTdHJ1Y3R1cmUqIGNhbGxiYWNrT2JqZWN0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4g
bV9jYWxsYmFja09iamVjdFN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogcHJvcGVy
dHlOYW1lSXRlcmF0b3JTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3Byb3BlcnR5TmFtZUl0
ZXJhdG9yU3RydWN0dXJlLmdldCgpOyB9CisgICAgU3RydWN0dXJlKiBnZW5lcmF0b3JGcmFtZVN0
cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fZ2VuZXJhdG9yRnJhbWVTdHJ1Y3R1cmUuZ2V0KCk7
IH0KICNpZiBKU0NfT0JKQ19BUElfRU5BQkxFRAogICAgIFN0cnVjdHVyZSogb2JqY0NhbGxiYWNr
RnVuY3Rpb25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX29iamNDYWxsYmFja0Z1bmN0aW9u
U3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBvYmpjV3JhcHBlck9iamVjdFN0cnVj
dHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fb2JqY1dyYXBwZXJPYmplY3RTdHJ1Y3R1cmUuZ2V0KCk7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCBkMDQyYzIwYmYzZDI0NWEz
MTIyNTk0MGNkYmFiMzI4Y2RkNjIyMzM4Li5mYmMxODc1YzFkYjlhOGRkNjg0M2E5NGJmZmVjYjQy
YjM3ZTZiYzViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC0yNDYsNyAr
MjQ2LDYgQEAgc3RhdGljIGJvb2wgZW5hYmxlQXNzZW1ibGVyKEV4ZWN1dGFibGVBbGxvY2F0b3Im
IGV4ZWN1dGFibGVBbGxvY2F0b3IpCiAgICAgaW5mZXJyZWRUeXBlU3RydWN0dXJlLnNldCgqdGhp
cywgSW5mZXJyZWRUeXBlOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAg
ICAgaW5mZXJyZWRUeXBlVGFibGVTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBJbmZlcnJlZFR5cGVUYWJs
ZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIGZ1bmN0aW9uUmFy
ZURhdGFTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBGdW5jdGlvblJhcmVEYXRhOjpjcmVhdGVTdHJ1Y3R1
cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7Ci0gICAgZ2VuZXJhdG9yRnJhbWVTdHJ1Y3R1cmUuc2V0
KCp0aGlzLCBHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwo
KSkpOwogICAgIGV4Y2VwdGlvblN0cnVjdHVyZS5zZXQoKnRoaXMsIEV4Y2VwdGlvbjo6Y3JlYXRl
U3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIHByb21pc2VEZWZlcnJlZFN0cnVj
dHVyZS5zZXQoKnRoaXMsIEpTUHJvbWlzZURlZmVycmVkOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMs
IDAsIGpzTnVsbCgpKSk7CiAgICAgaW50ZXJuYWxQcm9taXNlRGVmZXJyZWRTdHJ1Y3R1cmUuc2V0
KCp0aGlzLCBKU0ludGVybmFsUHJvbWlzZURlZmVycmVkOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMs
IDAsIGpzTnVsbCgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAppbmRleCA1MjhlYzU5
YzRmZjlmMGM5ODQ0MGMyZGM2NGIyMjVjNjQxNTJhNmMxLi4xN2QxNDlhYjg5OWE5ZWUwM2Y1OGUz
NDllYWQ0MzQ4OGM4NWI0MzY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKQEAgLTMx
Miw3ICszMTIsNiBAQCBjbGFzcyBWTSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxWTT4g
ewogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGluZmVycmVkVHlwZVN0cnVjdHVyZTsKICAgICBTdHJv
bmc8U3RydWN0dXJlPiBpbmZlcnJlZFR5cGVUYWJsZVN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3Ry
dWN0dXJlPiBmdW5jdGlvblJhcmVEYXRhU3RydWN0dXJlOwotICAgIFN0cm9uZzxTdHJ1Y3R1cmU+
IGdlbmVyYXRvckZyYW1lU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGV4Y2VwdGlv
blN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBwcm9taXNlRGVmZXJyZWRTdHJ1Y3R1
cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gaW50ZXJuYWxQcm9taXNlRGVmZXJyZWRTdHJ1Y3R1
cmU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>268684</attachid>
            <date>2016-01-11 04:31:21 -0800</date>
            <delta_ts>2016-01-14 07:25:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-152723-20160111213049.patch</filename>
            <type>text/plain</type>
            <size>58783</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk0ODQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
MGM4ZDkyZjU4M2JkZTljNzE2YzQ2OGY5ZWYzYmNjMWNiN2JlNjJhLi4zYjVkMjJlYzQxODMyMjNm
OGJlMDZkNjE0NjFhOWZmMTQ2YmFmNjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5OSBAQAorMjAxNi0wMS0xMSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBDcmVhdGUgR2VuZXJhdG9yRnJhbWUgd2l0aCB0aGUgYnl0ZWNvZGUg
b3BfbmV3X2dlbmVyYXRvcl9mcmFtZSBhbmQgbWFrZSBvcF9zYXZlIC8gb3BfcmVzdW1lIERGRy9G
VEwgY2FwYWJsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTUyNzIzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBidWlsdGlucy9HZW5lcmF0b3JQcm90b3R5cGUuanM6CisgICAgICAgIChnZW5lcmF0b3JS
ZXN1bWUpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uOgorICAgICAgICAq
IGJ5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmg6CisgICAgICAgIChKU0M6OmNvbXB1dGVVc2VzRm9y
Qnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zm
c2V0KToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpD
b2RlQmxvY2s6OmR1bXBCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluaXNo
Q3JlYXRpb24pOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcik6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3R2VuZXJhdG9yRnJhbWUpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFNhdmUpOgorICAgICAgICAoSlND
OjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlc3VtZSk6CisgICAgICAgICogYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpn
ZW5lcmF0b3JGcmFtZVJlZ2lzdGVyKToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnBy
ZXRlcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFi
c3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAgICAgICAqIGRmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OkJ5dGVD
b2RlUGFyc2VyKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9j
ayk6CisgICAgICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6Y2FwYWJpbGl0eUxldmVsKToKKyAgICAgICAgKiBkZmcvREZHQ2xvYmJlcml6ZS5oOgorICAg
ICAgICAoSlNDOjpERkc6OmNsb2JiZXJpemUpOgorICAgICAgICAqIGRmZy9ERkdDbG9iYmVyc0V4
aXRTdGF0ZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Y2xvYmJlcnNFeGl0U3RhdGUpOgorICAg
ICAgICAqIGRmZy9ERkdEb2VzR0MuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmRvZXNHQyk6Cisg
ICAgICAgICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVw
UGhhc2U6OmZpeHVwTm9kZSk6CisgICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAgKEpT
Qzo6REZHOjpOb2RlOjpoYXNHZW5lcmF0b3JGcmFtZVNpemUpOgorICAgICAgICAoSlNDOjpERkc6
Ok5vZGU6OmdlbmVyYXRvckZyYW1lU2l6ZSk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFz
R2VuZXJhdG9yRnJhbWVJbmRleCk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6Z2VuZXJhdG9y
RnJhbWVJbmRleCk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzR2VuZXJhdG9yRnJhbWVM
b2NhbHMpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmdlbmVyYXRvckZyYW1lTG9jYWxzKToK
KyAgICAgICAgKiBkZmcvREZHTm9kZVR5cGUuaDoKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9u
cy5jcHA6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBkZmcvREZH
UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlByZWRp
Y3Rpb25Qcm9wYWdhdGlvblBoYXNlOjpwcm9wYWdhdGUpOgorICAgICAgICAqIGRmZy9ERkdTYWZl
VG9FeGVjdXRlLmg6CisgICAgICAgIChKU0M6OkRGRzo6c2FmZVRvRXhlY3V0ZSk6CisgICAgICAg
ICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZU5ld0dlbmVyYXRvckZyYW1lKToKKyAgICAgICAgKiBkZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAq
IGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlv
blBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHU3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2Uu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OlN0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlOjpydW4p
OgorICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21w
aWxlTWFpblBhc3MpOgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUT3Bj
b2Rlcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9uZXdfZ2VuZXJhdG9yX2ZyYW1l
KToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbToKKyAgICAgICAgKiBw
YXJzZXIvUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNl
SW5uZXIpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VHZW5lcmF0b3JG
dW5jdGlvblNvdXJjZUVsZW1lbnRzKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46
OmNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuaDoK
KyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OlNM
T1dfUEFUSF9ERUNMKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5oOgorICAg
ICAgICAqIHJ1bnRpbWUvR2VuZXJhdG9yRnJhbWUuY3BwOgorICAgICAgICAoSlNDOjpHZW5lcmF0
b3JGcmFtZTo6R2VuZXJhdG9yRnJhbWUpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6
Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OmNyZWF0ZSk6
CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpzYXZlKToKKyAgICAgICAgKEpTQzo6R2Vu
ZXJhdG9yRnJhbWU6OnJlc3VtZSk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjp2aXNp
dENoaWxkcmVuKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OmZpbmlzaENyZWF0aW9u
KTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0dlbmVyYXRvckZyYW1lLmg6CisgICAgICAg
IChKU0M6OkdlbmVyYXRvckZyYW1lOjpsb2NhbE9mZnNldCk6CisgICAgICAgIChKU0M6OkdlbmVy
YXRvckZyYW1lOjpudW1iZXJPZlNhdmVkQ2FsbGVlTG9jYWxzT2Zmc2V0KToKKyAgICAgICAgKEpT
Qzo6R2VuZXJhdG9yRnJhbWU6OmxvY2FsQXQpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUv
SlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6
CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDOjpKU0ds
b2JhbE9iamVjdDo6Z2VuZXJhdG9yRnJhbWVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUv
Vk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6Vk0pOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRp
bWUvVk0uaDoKKwogMjAxNi0wMS0xMCAgU2FhbSBiYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4K
IAogICAgICAgICBJbXBsZW1lbnQgYSBzYW1wbGluZyBwcm9maWxlcgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0dlbmVyYXRvclByb3RvdHlwZS5qcyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9HZW5lcmF0b3JQcm90b3R5cGUuanMKaW5kZXggYTNi
YmMzNTM0YWUwNTJmNGQ2ZmEyNWJkZTcwM2M5M2QzYTc5NWUxMS4uNDlkZGJmOWM4NDY5MzMwNjU4
NzExZjE4ZTcyMTQ5YmM5ODIyZGEzNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J1aWx0aW5zL0dlbmVyYXRvclByb3RvdHlwZS5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnVpbHRpbnMvR2VuZXJhdG9yUHJvdG90eXBlLmpzCkBAIC01OCw3ICs1OCw3IEBAIGZ1bmN0
aW9uIGdlbmVyYXRvclJlc3VtZShnZW5lcmF0b3IsIHNlbnRWYWx1ZSwgcmVzdW1lTW9kZSkKICAg
ICB9IGVsc2UgewogICAgICAgICB0cnkgewogICAgICAgICAgICAgZ2VuZXJhdG9yLkBnZW5lcmF0
b3JTdGF0ZSA9IEV4ZWN1dGluZzsKLSAgICAgICAgICAgIHZhbHVlID0gZ2VuZXJhdG9yLkBnZW5l
cmF0b3JOZXh0LkBjYWxsKGdlbmVyYXRvci5AZ2VuZXJhdG9yVGhpcywgZ2VuZXJhdG9yLCBzdGF0
ZSwgc2VudFZhbHVlLCByZXN1bWVNb2RlKTsKKyAgICAgICAgICAgIHZhbHVlID0gZ2VuZXJhdG9y
LkBnZW5lcmF0b3JOZXh0LkBjYWxsKGdlbmVyYXRvci5AZ2VuZXJhdG9yVGhpcywgZ2VuZXJhdG9y
LCBzdGF0ZSwgc2VudFZhbHVlLCByZXN1bWVNb2RlLCBnZW5lcmF0b3IuQGdlbmVyYXRvckZyYW1l
KTsKICAgICAgICAgICAgIGlmIChnZW5lcmF0b3IuQGdlbmVyYXRvclN0YXRlID09PSBFeGVjdXRp
bmcpIHsKICAgICAgICAgICAgICAgICBnZW5lcmF0b3IuQGdlbmVyYXRvclN0YXRlID0gQ29tcGxl
dGVkOwogICAgICAgICAgICAgICAgIGRvbmUgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCmluZGV4IDA1M2I4ZGM5Yjg2NGYxYjg2
YjRjZWM3YWE2MDFmN2NlMmYwM2YyZTQuLjNhM2QzMTdlOWY2ZGVlOTI0NjdkY2VlMThmNWNiYTdh
MDk0N2EwMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZUxpc3QuanNvbgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVMaXN0Lmpzb24KQEAgLTE2LDYgKzE2LDcgQEAKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9w
X25ld19hcnJheV93aXRoX3NpemUiLCAibGVuZ3RoIiA6IDQgfSwKICAgICAgICAgICAgIHsgIm5h
bWUiIDogIm9wX25ld19hcnJheV9idWZmZXIiLCAibGVuZ3RoIiA6IDUgfSwKICAgICAgICAgICAg
IHsgIm5hbWUiIDogIm9wX25ld19yZWdleHAiLCAibGVuZ3RoIiA6IDMgfSwKKyAgICAgICAgICAg
IHsgIm5hbWUiIDogIm9wX25ld19nZW5lcmF0b3JfZnJhbWUiLCAibGVuZ3RoIiA6IDMgfSwKICAg
ICAgICAgICAgIHsgIm5hbWUiIDogIm9wX21vdiIsICJsZW5ndGgiIDogMyB9LAogICAgICAgICAg
ICAgeyAibmFtZSIgOiAib3Bfbm90IiwgImxlbmd0aCIgOiAzIH0sCiAgICAgICAgICAgICB7ICJu
YW1lIiA6ICJvcF9lcSIsICJsZW5ndGgiIDogNCB9LApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaAppbmRleCA4MDExMTRjMzcyYTI3N2Y2ZTE3NzA5
YjkwYmUyMDdjOGY5OWJlODJkLi40ODhkNDJiNDAyNmRiODg2NmNiNDUyMTY4Y2MyYTdhYzU3M2Y4
NzhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVV
c2VEZWYuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VE
ZWYuaApAQCAtNTUsNiArNTUsNyBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQo
CiAgICAgY2FzZSBvcF9jcmVhdGVfb3V0X29mX2JhbmRfYXJndW1lbnRzOgogICAgIGNhc2Ugb3Bf
Z2V0X3Jlc3RfbGVuZ3RoOgogICAgIGNhc2Ugb3Bfd2F0Y2hkb2c6CisgICAgY2FzZSBvcF9uZXdf
Z2VuZXJhdG9yX2ZyYW1lOgogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBvcF9hc3NlcnQ6CiAg
ICAgY2FzZSBvcF9nZXRfc2NvcGU6CkBAIC00MTUsNyArNDE2LDggQEAgdm9pZCBjb21wdXRlRGVm
c0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29kZUJhc2ljQmxv
Y2sqIGJsb2MKICAgICBjYXNlIG9wX2RlbF9ieV92YWw6CiAgICAgY2FzZSBvcF91bnNpZ25lZDoK
ICAgICBjYXNlIG9wX2dldF9mcm9tX2FyZ3VtZW50czogCi0gICAgY2FzZSBvcF9nZXRfcmVzdF9s
ZW5ndGg6IHsKKyAgICBjYXNlIG9wX2dldF9yZXN0X2xlbmd0aDoKKyAgICBjYXNlIG9wX25ld19n
ZW5lcmF0b3JfZnJhbWU6IHsKICAgICAgICAgQVNTRVJUKG9wY29kZUxlbmd0aHNbb3Bjb2RlSURd
ID4gMSk7CiAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQs
IGluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKaW5kZXggNTkwNWU5MTgzYzhmMTI2
NjRlMmJhM2RkMjlhNWM0NjU2NzY4ZGMwMy4uMTUwNjY3ZWVmZjJhMmVkZTc4ZWI1YjcxNmRlZTRk
ZTU2MGJhYzAxNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
ay5jcHAKQEAgLTE1NzcsNiArMTU3NywxMyBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2Rl
KAogICAgICAgICAgICAgb3V0LnByaW50ZigiKEBsaXZlJTF1KSIsIGxpdmVDYWxsZWVMb2NhbHNJ
bmRleCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICBjYXNlIG9wX25l
d19nZW5lcmF0b3JfZnJhbWU6IHsKKyAgICAgICAgICAgIGludCBkc3QgPSAoKytpdCktPnUub3Bl
cmFuZDsKKyAgICAgICAgICAgIHVuc2lnbmVkIGdlbmVyYXRvckZyYW1lU2l6ZSA9ICgrK2l0KS0+
dS51bnNpZ25lZFZhbHVlOworICAgICAgICAgICAgcHJpbnRMb2NhdGlvbk9wQW5kUmVnaXN0ZXJP
cGVyYW5kKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAibmV3X2dlbmVyYXRvcl9mcmFtZSIsIGRz
dCk7CisgICAgICAgICAgICBvdXQucHJpbnRmKCIgJXUiLCBnZW5lcmF0b3JGcmFtZVNpemUpOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9hc3NlcnQ6IHsK
ICAgICAgICAgICAgIGludCBjb25kaXRpb24gPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAg
ICAgIGludCBsaW5lID0gKCsraXQpLT51Lm9wZXJhbmQ7CkBAIC0xOTgzLDYgKzE5OTAsNyBAQCB2
b2lkIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBv
d25lckV4ZWN1dGFibGUsIFVubGluawogICAgIFZlY3RvcjxzaXplX3Q+IG1lcmdlUG9pbnRCeXRl
Y29kZU9mZnNldHM7CiAKICAgICBSZWZDb3VudGVkQXJyYXk8SW5zdHJ1Y3Rpb24+IGluc3RydWN0
aW9ucyhpbnN0cnVjdGlvbkNvdW50KTsKKyAgICB1bnNpZ25lZCBuZXdHZW5lcmF0b3JGcmFtZUlu
c3RydWN0aW9uT2Zmc2V0ID0gMDsKIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7ICFpbnN0cnVj
dGlvblJlYWRlci5hdEVuZCgpOyApIHsKICAgICAgICAgY29uc3QgVW5saW5rZWRJbnN0cnVjdGlv
biogcGMgPSBpbnN0cnVjdGlvblJlYWRlci5uZXh0KCk7CkBAIC0yMjc5LDYgKzIyODcsMTEgQEAg
dm9pZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSog
b3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAK
KyAgICAgICAgY2FzZSBvcF9uZXdfZ2VuZXJhdG9yX2ZyYW1lOiB7CisgICAgICAgICAgICBuZXdH
ZW5lcmF0b3JGcmFtZUluc3RydWN0aW9uT2Zmc2V0ID0gaTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CisKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CkBAIC0yMjkyLDE2ICsyMzA1LDIxIEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlv
bihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAKICAg
ICAvLyBQZXJmb3JtIGJ5dGVjb2RlIGxpdmVuZXNzIGFuYWx5c2lzIHRvIGRldGVybWluZSB3aGlj
aCBsb2NhbHMgYXJlIGxpdmUgYW5kIHNob3VsZCBiZSByZXN1bWVkIHdoZW4gZXhlY3V0aW5nIG9w
X3Jlc3VtZS4KICAgICBpZiAodW5saW5rZWRDb2RlQmxvY2stPnBhcnNlTW9kZSgpID09IFNvdXJj
ZVBhcnNlTW9kZTo6R2VuZXJhdG9yQm9keU1vZGUpIHsKKyAgICAgICAgdW5zaWduZWQgbWF4R2Vu
ZXJhdG9yRnJhbWVTaXplID0gMDsKICAgICAgICAgaWYgKHNpemVfdCBjb3VudCA9IG1lcmdlUG9p
bnRCeXRlY29kZU9mZnNldHMuc2l6ZSgpKSB7CiAgICAgICAgICAgICBjcmVhdGVSYXJlRGF0YUlm
TmVjZXNzYXJ5KCk7CiAgICAgICAgICAgICBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMgbGl2ZW5l
c3ModGhpcyk7CiAgICAgICAgICAgICBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlp
ZWxkLmdyb3coY291bnQpOwogICAgICAgICAgICAgc2l6ZV90IGxpdmVDYWxsZWVMb2NhbHNJbmRl
eCA9IDA7CiAgICAgICAgICAgICBmb3IgKHNpemVfdCBieXRlY29kZU9mZnNldCA6IG1lcmdlUG9p
bnRCeXRlY29kZU9mZnNldHMpIHsKLSAgICAgICAgICAgICAgICBtX3JhcmVEYXRhLT5tX2xpdmVD
YWxsZWVMb2NhbHNBdFlpZWxkW2xpdmVDYWxsZWVMb2NhbHNJbmRleF0gPSBsaXZlbmVzcy5nZXRM
aXZlbmVzc0luZm9BdEJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KTsKKyAgICAgICAgICAg
ICAgICBGYXN0Qml0VmVjdG9yIGxpdmVuZXNzVmVjdG9yID0gbGl2ZW5lc3MuZ2V0TGl2ZW5lc3NJ
bmZvQXRCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCk7CisgICAgICAgICAgICAgICAgbV9y
YXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZFtsaXZlQ2FsbGVlTG9jYWxzSW5kZXhd
ID0gbGl2ZW5lc3NWZWN0b3I7CisgICAgICAgICAgICAgICAgbWF4R2VuZXJhdG9yRnJhbWVTaXpl
ID0gc3RkOjptYXg8dW5zaWduZWQ+KG1heEdlbmVyYXRvckZyYW1lU2l6ZSwgbGl2ZW5lc3NWZWN0
b3IuYml0Q291bnQoKSk7CiAgICAgICAgICAgICAgICAgKytsaXZlQ2FsbGVlTG9jYWxzSW5kZXg7
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KKyAgICAgICAgLy8gRmlsbCBvcF9uZXdfZ2VuZXJh
dG9yX2ZyYW1lJ3Mgc2l6ZS4KKyAgICAgICAgbV9pbnN0cnVjdGlvbnNbbmV3R2VuZXJhdG9yRnJh
bWVJbnN0cnVjdGlvbk9mZnNldCArIDJdLnUudW5zaWduZWRWYWx1ZSA9IG1heEdlbmVyYXRvckZy
YW1lU2l6ZTsKICAgICB9CiAKICAgICAvLyBTZXQgb3B0aW1pemF0aW9uIHRocmVzaG9sZHMgb25s
eSBhZnRlciBtX2luc3RydWN0aW9ucyBpcyBpbml0aWFsaXplZCwgc2luY2UgdGhlc2UKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5jcHAKaW5kZXggZDE1ZTIyNDM1MjY2ZmUxYWZmM2Q1Zjc5YTFkZGE3NWI5YmRhZjNmMy4u
YzQxM2RkOGNhZTdhNDFiMGNkMWNmZGYyMDBlMzJmYzRmYTVjYWNkNyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5j
cHAKQEAgLTUzNyw2ICs1MzcsOSBAQCBQYXJzZXJFcnJvciBCeXRlY29kZUdlbmVyYXRvcjo6Z2Vu
ZXJhdGUoKQogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JCb2R5TW9kZTogewog
ICAgICAgICAvLyB8dGhpc3wgaXMgYWxyZWFkeSBmaWxsZWQgY29ycmVjdGx5IGJlZm9yZSBoZXJl
LgogICAgICAgICBlbWl0TG9hZChtX25ld1RhcmdldFJlZ2lzdGVyLCBqc1VuZGVmaW5lZCgpKTsK
KworICAgICAgICBlbWl0TmV3R2VuZXJhdG9yRnJhbWUoZ2VuZXJhdG9yRnJhbWVSZWdpc3Rlcigp
KTsKKyAgICAgICAgZW1pdFB1dEJ5SWQoZ2VuZXJhdG9yUmVnaXN0ZXIoKSwgcHJvcGVydHlOYW1l
cygpLmdlbmVyYXRvckZyYW1lUHJpdmF0ZU5hbWUsIGdlbmVyYXRvckZyYW1lUmVnaXN0ZXIoKSk7
CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApAQCAtMjc0NCw2ICsyNzQ3LDE0IEBAIFJlZ2lzdGVy
SUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RnVuY3Rpb24oUmVnaXN0ZXJJRCogZHN0LCBG
dW5jdGlvbk1ldGFkYXRhCiAgICAgcmV0dXJuIGRzdDsKIH0KIAorUmVnaXN0ZXJJRCogQnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXROZXdHZW5lcmF0b3JGcmFtZShSZWdpc3RlcklEKiBkc3QpCit7Cisg
ICAgZW1pdE9wY29kZShvcF9uZXdfZ2VuZXJhdG9yX2ZyYW1lKTsKKyAgICBpbnN0cnVjdGlvbnMo
KS5hcHBlbmQoZHN0LT5pbmRleCgpKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7Cisg
ICAgcmV0dXJuIGRzdDsKK30KKwogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRD
YWxsKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogZnVuYywgRXhwZWN0ZWRGdW5jdGlvbiBl
eHBlY3RlZEZ1bmN0aW9uLCBDYWxsQXJndW1lbnRzJiBjYWxsQXJndW1lbnRzLCBjb25zdCBKU1Rl
eHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25z
dCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpCiB7CiAgICAgcmV0dXJuIGVtaXRDYWxsKG9wX2Nh
bGwsIGRzdCwgZnVuYywgZXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QsIGRp
dm90U3RhcnQsIGRpdm90RW5kKTsKQEAgLTQxNDUsNyArNDE1Niw3IEBAIHZvaWQgQnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXRTYXZlKExhYmVsKiBtZXJnZVBvaW50LCB1bnNpZ25lZCBsaXZlQ2FsbGVl
TG9jYWxzSW5kCiB7CiAgICAgc2l6ZV90IGJlZ2luID0gaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpOwog
ICAgIGVtaXRPcGNvZGUob3Bfc2F2ZSk7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fZ2Vu
ZXJhdG9yUmVnaXN0ZXItPmluZGV4KCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChnZW5l
cmF0b3JGcmFtZVJlZ2lzdGVyKCktPmluZGV4KCkpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVu
ZChsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChtZXJn
ZVBvaW50LT5iaW5kKGJlZ2luLCBpbnN0cnVjdGlvbnMoKS5zaXplKCkpKTsKIH0KQEAgLTQxNTQs
NyArNDE2NSw3IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXN1bWUoTGFiZWwqIG1l
cmdlUG9pbnQsIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJCiB7CiAgICAgZW1pdEdlbmVyYXRv
clN0YXRlTGFiZWwoKTsKICAgICBlbWl0T3Bjb2RlKG9wX3Jlc3VtZSk7Ci0gICAgaW5zdHJ1Y3Rp
b25zKCkuYXBwZW5kKG1fZ2VuZXJhdG9yUmVnaXN0ZXItPmluZGV4KCkpOworICAgIGluc3RydWN0
aW9ucygpLmFwcGVuZChnZW5lcmF0b3JGcmFtZVJlZ2lzdGVyKCktPmluZGV4KCkpOwogICAgIGlu
c3RydWN0aW9ucygpLmFwcGVuZChsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpOwogICAgIGVtaXRMYWJl
bChtZXJnZVBvaW50KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAppbmRleCA3ZDBjMjBiNmY1MTZhMTdlODkzZjFi
YmEwODAzYzEzMzNmZmM4ZDBkLi4zZDMzNDc4MTVhYzMwYTgyZTYyNmUzZTA3ODA4MWJlMmIzZTli
ZTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5oCkBAIC01MjIsNiArNTIyLDcgQEAKICAgICAgICAgUmVnaXN0ZXJJ
RCogZW1pdE5ld0RlZmF1bHRDb25zdHJ1Y3RvcihSZWdpc3RlcklEKiBkc3QsIENvbnN0cnVjdG9y
S2luZCwgY29uc3QgSWRlbnRpZmllciYgbmFtZSk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRO
ZXdBcnJvd0Z1bmN0aW9uRXhwcmVzc2lvbihSZWdpc3RlcklEKiwgQXJyb3dGdW5jRXhwck5vZGUq
KTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdE5ld1JlZ0V4cChSZWdpc3RlcklEKiBkc3QsIFJl
Z0V4cCopOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0TmV3R2VuZXJhdG9yRnJhbWUoUmVnaXN0
ZXJJRCogZHN0KTsKIAogICAgICAgICBSZWdpc3RlcklEKiBlbWl0TW92ZUxpbmtUaW1lQ29uc3Rh
bnQoUmVnaXN0ZXJJRCogZHN0LCBMaW5rVGltZUNvbnN0YW50KTsKICAgICAgICAgUmVnaXN0ZXJJ
RCogZW1pdE1vdmVFbXB0eVZhbHVlKFJlZ2lzdGVySUQqIGRzdCk7CkBAIC02ODQsNiArNjg1LDcg
QEAKICAgICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9yU3RhdGVSZWdpc3RlcigpIHsgcmV0dXJu
ICZtX3BhcmFtZXRlcnNbMl07IH0KICAgICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9yVmFsdWVS
ZWdpc3RlcigpIHsgcmV0dXJuICZtX3BhcmFtZXRlcnNbM107IH0KICAgICAgICAgUmVnaXN0ZXJJ
RCogZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKCkgeyByZXR1cm4gJm1fcGFyYW1ldGVyc1s0
XTsgfQorICAgICAgICBSZWdpc3RlcklEKiBnZW5lcmF0b3JGcmFtZVJlZ2lzdGVyKCkgeyByZXR1
cm4gJm1fcGFyYW1ldGVyc1s1XTsgfQogCiAgICAgICAgIENvZGVUeXBlIGNvZGVUeXBlKCkgY29u
c3QgeyByZXR1cm4gbV9jb2RlVHlwZTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKaW5kZXggOWVlYzYz
Y2ViMDcxYmMxNDg2YTAxMmMyODUwMWRiNjI0MjZiZGU3Yi4uYmZmYzdmY2M5MjZmOTE1OTNmMTE1
N2RhYmVjMDVjZjQzNTZhN2Y5NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaApAQCAtMTY4Nyw2ICsxNjg3
LDEwIEBACiAgICAgY2FzZSBOZXdSZWdleHA6CiAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0KG1f
Z3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyktPnJl
Z0V4cFN0cnVjdHVyZSgpKTsKICAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIE5ld0dlbmVyYXRv
ckZyYW1lOgorICAgICAgICBmb3JOb2RlKG5vZGUpLnNldChtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5nZW5lcmF0b3JGcmFtZVN0cnVjdHVy
ZSgpKTsKKyAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICBjYXNlIFRvVGhpczogewog
ICAgICAgICBBYnN0cmFjdFZhbHVlJiBzb3VyY2UgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKTsK
QEAgLTI1MTAsNiArMjUxNCwxOCBAQAogICAgICAgICBmb3JOb2RlKG5vZGUpLm1ha2VIZWFwVG9w
KCk7CiAgICAgICAgIGJyZWFrOwogCisgICAgY2FzZSBTYXZlVG9HZW5lcmF0b3JGcmFtZTogewor
ICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBjYXNlIFJlc3VtZUZyb21HZW5lcmF0b3JGcmFt
ZTogeworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBjYXNlIFB1dEdlbmVyYXRvckZyYW1l
TG9jYWxzOiB7CisgICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIGNhc2UgRm9yY2VPU1JFeGl0
OgogICAgIGNhc2UgQ2hlY2tCYWRDZWxsOgogICAgICAgICBtX3N0YXRlLnNldElzVmFsaWQoZmFs
c2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNw
cAppbmRleCBhMjJmNmNjY2E4MGU2NGRhNTQxODJjYTZjNmRhYmE3MjNiMzViNzg3Li5iNmMzY2U0
ODA3MGQ2MGRlMjlmNmE1ZjJjZGI3ZDFjMDJiOWUwYzBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtMTQ0LDYgKzE0NCw3IEBAIGNs
YXNzIEJ5dGVDb2RlUGFyc2VyIHsKICAgICAgICAgLCBtX2NvbnN0YW50TnVsbChncmFwaC5mcmVl
emUoanNOdWxsKCkpKQogICAgICAgICAsIG1fY29uc3RhbnROYU4oZ3JhcGguZnJlZXplKGpzTnVt
YmVyKFBOYU4pKSkKICAgICAgICAgLCBtX2NvbnN0YW50T25lKGdyYXBoLmZyZWV6ZShqc051bWJl
cigxKSkpCisgICAgICAgICwgbV9jb25zdGFudFRydWUoZ3JhcGguZnJlZXplKGpzQm9vbGVhbih0
cnVlKSkpCiAgICAgICAgICwgbV9udW1Bcmd1bWVudHMobV9jb2RlQmxvY2stPm51bVBhcmFtZXRl
cnMoKSkKICAgICAgICAgLCBtX251bUxvY2FscyhtX2NvZGVCbG9jay0+bV9udW1DYWxsZWVMb2Nh
bHMpCiAgICAgICAgICwgbV9wYXJhbWV0ZXJTbG90cygwKQpAQCAtOTgyLDYgKzk4Myw3IEBAIGNs
YXNzIEJ5dGVDb2RlUGFyc2VyIHsKICAgICBGcm96ZW5WYWx1ZSogbV9jb25zdGFudE51bGw7CiAg
ICAgRnJvemVuVmFsdWUqIG1fY29uc3RhbnROYU47CiAgICAgRnJvemVuVmFsdWUqIG1fY29uc3Rh
bnRPbmU7CisgICAgRnJvemVuVmFsdWUqIG1fY29uc3RhbnRUcnVlOwogICAgIFZlY3RvcjxOb2Rl
KiwgMTY+IG1fY29uc3RhbnRzOwogCiAgICAgLy8gVGhlIG51bWJlciBvZiBhcmd1bWVudHMgcGFz
c2VkIHRvIHRoZSBmdW5jdGlvbi4KQEAgLTMzNDEsNiArMzM0MywxMSBAQCBib29sIEJ5dGVDb2Rl
UGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAgICAgTkVYVF9PUENP
REUob3BfbmV3X3JlZ2V4cCk7CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIG9wX25ld19nZW5l
cmF0b3JfZnJhbWU6IHsKKyAgICAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudElu
c3RydWN0aW9uWzFdLnUub3BlcmFuZCksIGFkZFRvR3JhcGgoTmV3R2VuZXJhdG9yRnJhbWUsIE9w
SW5mbyhjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS51bnNpZ25lZFZhbHVlKSkpOworICAgICAgICAg
ICAgTkVYVF9PUENPREUob3BfbmV3X2dlbmVyYXRvcl9mcmFtZSk7CisgICAgICAgIH0KKwogICAg
ICAgICBjYXNlIG9wX2dldF9yZXN0X2xlbmd0aDogewogICAgICAgICAgICAgSW5saW5lQ2FsbEZy
YW1lKiBpbmxpbmVDYWxsRnJhbWUgPSB0aGlzLT5pbmxpbmVDYWxsRnJhbWUoKTsKICAgICAgICAg
ICAgIE5vZGUqIGxlbmd0aDsKQEAgLTMzNjgsNiArMzM3NSwzNyBAQCBib29sIEJ5dGVDb2RlUGFy
c2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAgICAgICAgIGFycmF5LCBh
cnJheUxlbmd0aCk7CiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9jb3B5X3Jlc3QpOwogICAg
ICAgICB9CisKKyAgICAgICAgY2FzZSBvcF9zYXZlOiB7CisgICAgICAgICAgICBOb2RlKiBmcmFt
ZSA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCkp
OworICAgICAgICAgICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gY3VycmVudElu
c3RydWN0aW9uWzJdLnUudW5zaWduZWRWYWx1ZTsKKyAgICAgICAgICAgIGNvbnN0IEZhc3RCaXRW
ZWN0b3ImIGxpdmVuZXNzID0gbV9pbmxpbmVTdGFja1RvcC0+bV9jb2RlQmxvY2stPmxpdmVDYWxs
ZWVMb2NhbHNBdFlpZWxkKGxpdmVDYWxsZWVMb2NhbHNJbmRleCk7CisgICAgICAgICAgICB1bnNp
Z25lZCBnZW5lcmF0b3JGcmFtZUluZGV4ID0gMDsKKyAgICAgICAgICAgIGxpdmVuZXNzLmZvckVh
Y2hTZXRCaXQoWyZdKHNpemVfdCBpbmRleCkgeworICAgICAgICAgICAgICAgIE5vZGUqIGxvY2Fs
ID0gZ2V0KFZpcnR1YWxSZWdpc3Rlcih2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChpbmRleCkpKTsK
KyAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFNhdmVUb0dlbmVyYXRvckZyYW1lLCBPcEluZm8o
Z2VuZXJhdG9yRnJhbWVJbmRleCsrKSwgZnJhbWUsIGxvY2FsKTsKKyAgICAgICAgICAgIH0pOwor
ICAgICAgICAgICAgYWRkVG9HcmFwaChQdXRHZW5lcmF0b3JGcmFtZUxvY2FscywgT3BJbmZvKGdl
bmVyYXRvckZyYW1lSW5kZXgpLCBmcmFtZSk7CisKKyAgICAgICAgICAgIHVuc2lnbmVkIHJlbGF0
aXZlT2Zmc2V0ID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKKyAgICAgICAgICAg
IE5vZGUqIHRydWVDb25kaXRpb24gPSBhZGRUb0dyYXBoKEpTQ29uc3RhbnQsIE9wSW5mbyhtX2Nv
bnN0YW50VHJ1ZSkpOworICAgICAgICAgICAgYWRkVG9HcmFwaChCcmFuY2gsIE9wSW5mbyhicmFu
Y2hEYXRhKG1fY3VycmVudEluZGV4ICsgT1BDT0RFX0xFTkdUSChvcF9zYXZlKSwgbV9jdXJyZW50
SW5kZXggKyByZWxhdGl2ZU9mZnNldCkpLCB0cnVlQ29uZGl0aW9uKTsKKyAgICAgICAgICAgIExB
U1RfT1BDT0RFKG9wX3NhdmUpOworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBvcF9yZXN1bWU6
IHsKKyAgICAgICAgICAgIE5vZGUqIGZyYW1lID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50
SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSk7CisgICAgICAgICAgICB1bnNpZ25lZCBsaXZlQ2Fs
bGVlTG9jYWxzSW5kZXggPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS51bnNpZ25lZFZhbHVlOwor
ICAgICAgICAgICAgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZW5lc3MgPSBtX2lubGluZVN0YWNr
VG9wLT5tX2NvZGVCbG9jay0+bGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQobGl2ZUNhbGxlZUxvY2Fs
c0luZGV4KTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGdlbmVyYXRvckZyYW1lSW5kZXggPSAwOwor
ICAgICAgICAgICAgbGl2ZW5lc3MuZm9yRWFjaFNldEJpdChbJl0oc2l6ZV90IGluZGV4KSB7Cisg
ICAgICAgICAgICAgICAgTm9kZSogc2F2ZWRMb2NhbCA9IGFkZFRvR3JhcGgoUmVzdW1lRnJvbUdl
bmVyYXRvckZyYW1lLCBPcEluZm8oZ2VuZXJhdG9yRnJhbWVJbmRleCsrKSwgZnJhbWUpOworICAg
ICAgICAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIodmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwo
aW5kZXgpKSwgc2F2ZWRMb2NhbCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIGFkZFRv
R3JhcGgoUHV0R2VuZXJhdG9yRnJhbWVMb2NhbHMsIE9wSW5mbygwKSwgZnJhbWUpOworICAgICAg
ICAgICAgTkVYVF9PUENPREUob3BfcmVzdW1lKTsKKyAgICAgICAgfQorCiAgICAgICAgICAgICAK
ICAgICAgICAgLy8gPT09IEJpdHdpc2Ugb3BlcmF0aW9ucyA9PT0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCmluZGV4IGQxMDBkOTdkNWM2MGUyNWEw
NjBmZmRhNDU2NjNiM2I5NDE0MzVkYzYuLjJmZGFhMjBjODBhNzhhZDNkMmZiZmExODQzOGQ5NWZj
ZTRhZmY2ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJp
bGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGll
cy5jcHAKQEAgLTE4MSw2ICsxODEsNyBAQCBDYXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVs
KE9wY29kZUlEIG9wY29kZUlELCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSW5zdHJ1YwogICAgIGNh
c2Ugb3BfbmV3X2FycmF5OgogICAgIGNhc2Ugb3BfbmV3X2FycmF5X3dpdGhfc2l6ZToKICAgICBj
YXNlIG9wX25ld19hcnJheV9idWZmZXI6CisgICAgY2FzZSBvcF9uZXdfZ2VuZXJhdG9yX2ZyYW1l
OgogICAgIGNhc2Ugb3Bfc3RyY2F0OgogICAgIGNhc2Ugb3BfdG9fcHJpbWl0aXZlOgogICAgIGNh
c2Ugb3BfdGhyb3c6CkBAIC0yMjQsNiArMjI1LDggQEAgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxp
dHlMZXZlbChPcGNvZGVJRCBvcGNvZGVJRCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEluc3RydWMK
ICAgICBjYXNlIG9wX2NhdGNoOgogICAgIGNhc2Ugb3BfY29weV9yZXN0OgogICAgIGNhc2Ugb3Bf
Z2V0X3Jlc3RfbGVuZ3RoOgorICAgIGNhc2Ugb3Bfc2F2ZToKKyAgICBjYXNlIG9wX3Jlc3VtZToK
ICAgICAgICAgcmV0dXJuIENhbkNvbXBpbGVBbmRJbmxpbmU7CiAKICAgICBjYXNlIG9wX3B1dF90
b19zY29wZTogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9i
YmVyaXplLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAppbmRl
eCA3MmIyNGM3N2I0MGI3NzI2MzdmZmMzMThmM2QxMWI5N2U4ZjY5MTU1Li4wN2YyM2YwYTM5N2Rl
MjQyMDlkM2Y0Yzk5M2U4OWY2MDU1YWEyYTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Nsb2JiZXJpemUuaApAQCAtMTAzMSw2ICsxMDMxLDcgQEAgdm9pZCBjbG9iYmVyaXplKEdy
YXBoJiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQsIGNvbnN0IFdy
aXRlRnUKIAogICAgIGNhc2UgTmV3T2JqZWN0OgogICAgIGNhc2UgTmV3UmVnZXhwOgorICAgIGNh
c2UgTmV3R2VuZXJhdG9yRnJhbWU6CiAgICAgY2FzZSBOZXdTdHJpbmdPYmplY3Q6CiAgICAgY2Fz
ZSBQaGFudG9tTmV3T2JqZWN0OgogICAgIGNhc2UgTWF0ZXJpYWxpemVOZXdPYmplY3Q6CkBAIC0x
MDk4LDYgKzEwOTksMjMgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9k
ZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQsIGNvbnN0IFdyaXRlRnUKICAgICAgICAgICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KKworICAgIGNhc2UgU2F2ZVRvR2VuZXJhdG9yRnJhbWU6IHsKKyAgICAgICAgcmVhZChXb3Js
ZCk7CisgICAgICAgIHdyaXRlKEhlYXApOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
Y2FzZSBSZXN1bWVGcm9tR2VuZXJhdG9yRnJhbWU6IHsKKyAgICAgICAgcmVhZChXb3JsZCk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBjYXNlIFB1dEdlbmVyYXRvckZyYW1lTG9jYWxz
OiB7CisgICAgICAgIHJlYWQoV29ybGQpOworICAgICAgICB3cml0ZShIZWFwKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBUaHJvd1JlZmVyZW5jZUVycm9yOgog
ICAgICAgICB3cml0ZShTaWRlU3RhdGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDbG9iYmVyc0V4aXRTdGF0ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcAppbmRleCA0ZTBjNTA3Nzg5Y2Q3YjNmZjQ3NzUx
ZjkyNWU3NDgzZTYxZTJkZjViLi5mMGY0NmJiZTQ2MTNmODRkZGY4YmUxMWJhMTJjNmI0NjUwMmIy
MzM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJzRXhp
dFN0YXRlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJzRXhp
dFN0YXRlLmNwcApAQCAtNTcsNiArNTcsNyBAQCBib29sIGNsb2JiZXJzRXhpdFN0YXRlKEdyYXBo
JiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIEFycmF5aWZ5OgogICAgIGNhc2UgTmV3T2Jq
ZWN0OgogICAgIGNhc2UgTmV3UmVnZXhwOgorICAgIGNhc2UgTmV3R2VuZXJhdG9yRnJhbWU6CiAg
ICAgY2FzZSBOZXdTdHJpbmdPYmplY3Q6CiAgICAgY2FzZSBQaGFudG9tTmV3T2JqZWN0OgogICAg
IGNhc2UgTWF0ZXJpYWxpemVOZXdPYmplY3Q6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0RvZXNHQy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rv
ZXNHQy5jcHAKaW5kZXggNzAyZGE1YmYxZTdjMGYxYzhmZTU1YzY0ODQ0NThmY2FkODFlMmFhNS4u
Y2YwMzNlYjE0MDMyZjZlMzA1NWEyYWJkZDA2NTY3YWJjZWJlNTI4MCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcApAQCAtMjI5LDYgKzIyOSw5IEBAIGJvb2wgZG9lc0dD
KEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIEdldEZyb21Bcmd1bWVudHM6CiAg
ICAgY2FzZSBQdXRUb0FyZ3VtZW50czoKICAgICBjYXNlIENvcHlSZXN0OgorICAgIGNhc2UgU2F2
ZVRvR2VuZXJhdG9yRnJhbWU6CisgICAgY2FzZSBSZXN1bWVGcm9tR2VuZXJhdG9yRnJhbWU6Cisg
ICAgY2FzZSBQdXRHZW5lcmF0b3JGcmFtZUxvY2FsczoKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CiAgICAgY2FzZSBDcmVhdGVBY3RpdmF0aW9uOgpAQCAtMjQ2LDYgKzI0OSw3IEBAIGJvb2wgZG9l
c0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIE5ld0FycmF5V2l0aFNpemU6
CiAgICAgY2FzZSBOZXdBcnJheUJ1ZmZlcjoKICAgICBjYXNlIE5ld1JlZ2V4cDoKKyAgICBjYXNl
IE5ld0dlbmVyYXRvckZyYW1lOgogICAgIGNhc2UgTmV3U3RyaW5nT2JqZWN0OgogICAgIGNhc2Ug
TWFrZVJvcGU6CiAgICAgY2FzZSBOZXdBcnJvd0Z1bmN0aW9uOgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKaW5kZXggYTllMGIyMTU0ZjgyZTgwNmIzMjExMjAz
YzQ1YmMwZTQ4YTg3MmQxZC4uNTc0OTRlYTdhYmIwMzA4ZmM4ZjJjY2Q1NDg1OTY2MzFiYmFlMTEz
ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCkBAIC0x
NDI5LDYgKzE0MjksMjEgQEAgY2xhc3MgRml4dXBQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogCisgICAgICAgIGNhc2UgU2F2ZVRvR2VuZXJhdG9y
RnJhbWU6IHsKKyAgICAgICAgICAgIGZpeEVkZ2U8S25vd25DZWxsVXNlPihub2RlLT5jaGlsZDEo
KSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2UgUmVzdW1l
RnJvbUdlbmVyYXRvckZyYW1lOiB7CisgICAgICAgICAgICBmaXhFZGdlPEtub3duQ2VsbFVzZT4o
bm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAg
ICBjYXNlIFB1dEdlbmVyYXRvckZyYW1lTG9jYWxzOiB7CisgICAgICAgICAgICBmaXhFZGdlPEtu
b3duQ2VsbFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KKwogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICAgICAgLy8gSGF2ZSB0aGVzZSBuby1vcCBj
YXNlcyBoZXJlIHRvIGVuc3VyZSB0aGF0IG5vYm9keSBmb3JnZXRzIHRvIGFkZCBoYW5kbGVycyBm
b3IgbmV3IG9wY29kZXMuCiAgICAgICAgIGNhc2UgU2V0QXJndW1lbnQ6CkBAIC0xNDYxLDYgKzE0
NzYsNyBAQCBjbGFzcyBGaXh1cFBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgY2FzZSBO
ZXdPYmplY3Q6CiAgICAgICAgIGNhc2UgTmV3QXJyYXlCdWZmZXI6CiAgICAgICAgIGNhc2UgTmV3
UmVnZXhwOgorICAgICAgICBjYXNlIE5ld0dlbmVyYXRvckZyYW1lOgogICAgICAgICBjYXNlIEJy
ZWFrcG9pbnQ6CiAgICAgICAgIGNhc2UgUHJvZmlsZVdpbGxDYWxsOgogICAgICAgICBjYXNlIFBy
b2ZpbGVEaWRDYWxsOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdO
b2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAppbmRleCAxMjg3MGQ5
M2QwYzQ4MmU0ZjhlNWQ0ZDJkYWYxZTZiZjFmNzFiNjJjLi44MTg3ZTcxNDA5YjEyODE4MDJjNGM5
NWVlYTgzNTA5OTIzMDFiOTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR05vZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaApAQCAt
ODc4LDYgKzg3OCw1NSBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgICAgIHJldHVybiBtX29wSW5mbzsK
ICAgICB9CiAKKyAgICBib29sIGhhc0dlbmVyYXRvckZyYW1lU2l6ZSgpCisgICAgeworICAgICAg
ICBzd2l0Y2ggKG9wKCkpIHsKKyAgICAgICAgY2FzZSBOZXdHZW5lcmF0b3JGcmFtZToKKyAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICB9CisgICAgfQorCisgICAgdW5zaWduZWQgZ2VuZXJhdG9yRnJhbWVT
aXplKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChoYXNHZW5lcmF0b3JGcmFtZVNpemUoKSk7Cisg
ICAgICAgIHJldHVybiBtX29wSW5mbzsKKyAgICB9CisKKyAgICBib29sIGhhc0dlbmVyYXRvckZy
YW1lSW5kZXgoKQorICAgIHsKKyAgICAgICAgc3dpdGNoIChvcCgpKSB7CisgICAgICAgIGNhc2Ug
U2F2ZVRvR2VuZXJhdG9yRnJhbWU6CisgICAgICAgIGNhc2UgUmVzdW1lRnJvbUdlbmVyYXRvckZy
YW1lOgorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB1bnNpZ25lZCBnZW5l
cmF0b3JGcmFtZUluZGV4KCkKKyAgICB7CisgICAgICAgIEFTU0VSVChoYXNHZW5lcmF0b3JGcmFt
ZUluZGV4KCkpOworICAgICAgICByZXR1cm4gbV9vcEluZm87CisgICAgfQorCisgICAgYm9vbCBo
YXNHZW5lcmF0b3JGcmFtZUxvY2FscygpCisgICAgeworICAgICAgICBzd2l0Y2ggKG9wKCkpIHsK
KyAgICAgICAgY2FzZSBQdXRHZW5lcmF0b3JGcmFtZUxvY2FsczoKKyAgICAgICAgICAgIHJldHVy
biB0cnVlOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICB9CisgICAgfQorCisgICAgdW5zaWduZWQgZ2VuZXJhdG9yRnJhbWVMb2NhbHMoKQorICAg
IHsKKyAgICAgICAgQVNTRVJUKGhhc0dlbmVyYXRvckZyYW1lTG9jYWxzKCkpOworICAgICAgICBy
ZXR1cm4gbV9vcEluZm87CisgICAgfQorCiAgICAgYm9vbCBoYXNBY2Nlc3NvckF0dHJpYnV0ZXMo
KQogICAgIHsKICAgICAgICAgc3dpdGNoIChvcCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR05vZGVUeXBlLmgKaW5kZXggZGRkMGI5N2NiMmZlNjkyNjA0NTEwM2Y4YTcxMDcwMDQ4MmU5
ZjZiZC4uYmY5OTc2ZDRhODg3NGM0NTRjN2I1NjE5MGNhOTk2MTYzNjliMDI5YyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaApAQCAtNzksNiArNzksMTAgQEAKICAgICBt
YWNybyhGbHVzaCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKFBoYW50b21Mb2NhbCwg
Tm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIFwKKyAgICBtYWNybyhTYXZlVG9HZW5lcmF0b3JGcmFt
ZSwgTm9kZU11c3RHZW5lcmF0ZSkgXAorICAgIG1hY3JvKFJlc3VtZUZyb21HZW5lcmF0b3JGcmFt
ZSwgTm9kZVJlc3VsdEpTKSBcCisgICAgbWFjcm8oUHV0R2VuZXJhdG9yRnJhbWVMb2NhbHMsIE5v
ZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBcCiAgICAgLyogSGludCB0aGF0IHRoaXMgaXMgd2hlcmUg
Ynl0ZWNvZGUgdGhpbmtzIGlzIGEgZ29vZCBwbGFjZSB0byBPU1IuIE5vdGUgdGhhdCB0aGlzICov
XAogICAgIC8qIHdpbGwgZXhpc3QgZXZlbiBpbiBpbmxpbmVkIGxvb3BzLiBUaGlzIGhhcyBubyBl
eGVjdXRpb24gc2VtYW50aWNzIGJ1dCBpdCBtdXN0ICovXAogICAgIC8qIHN1cnZpdmUgYWxsIERD
RS4gV2UgdHJlYXQgdGhpcyBhcyBiZWluZyBhIGNhbi1leGl0IGJlY2F1c2UgdGllci11cCB0byBG
VEwgbWF5ICovXApAQCAtMjYzLDYgKzI2Nyw3IEBACiAgICAgbWFjcm8oTmV3QXJyYXlCdWZmZXIs
IE5vZGVSZXN1bHRKUykgXAogICAgIG1hY3JvKE5ld1R5cGVkQXJyYXksIE5vZGVSZXN1bHRKUyB8
IE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhOZXdSZWdleHAsIE5vZGVSZXN1bHRKUykg
XAorICAgIG1hY3JvKE5ld0dlbmVyYXRvckZyYW1lLCBOb2RlUmVzdWx0SlMpIFwKICAgICAvKiBS
ZXN0IFBhcmFtZXRlciAqL1wKICAgICBtYWNybyhHZXRSZXN0TGVuZ3RoLCBOb2RlUmVzdWx0SW50
MzIpIFwKICAgICBtYWNybyhDb3B5UmVzdCwgTm9kZU11c3RHZW5lcmF0ZSkgXApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKaW5kZXggYTZkNjBhZDU0ZWVjZWMz
ODc5M2YyMzlhM2IxNzAzYTAxY2ExOTFiMi4uM2QzNWIwYjA4MzE1NzY2NTdiYTk0NTM1ZjNhMTRk
MjRkMDQ2ZTMwMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVy
YXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMu
Y3BwCkBAIC00MSw4ICs0MSw5IEBACiAjaW5jbHVkZSAiRGlyZWN0QXJndW1lbnRzLmgiCiAjaW5j
bHVkZSAiRlRMRm9yT1NSRW50cnlKSVRDb2RlLmgiCiAjaW5jbHVkZSAiRlRMT1NSRW50cnkuaCIK
LSNpbmNsdWRlICJIb3N0Q2FsbFJldHVyblZhbHVlLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yRnJh
bWUuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKKyNpbmNsdWRlICJIb3N0Q2FsbFJldHVy
blZhbHVlLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKSVQuaCIKICNp
bmNsdWRlICJKSVRFeGNlcHRpb25zLmgiCkBAIC04MTcsNiArODE4LDExIEBAIGNoYXIqIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uTmV3RmxvYXQ2NEFycmF5V2l0aE9uZUFyZ3VtZW50KAogICAgIHJl
dHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZp
ZXdXaXRoQXJndW1lbnRzPEpTRmxvYXQ2NEFycmF5PihleGVjLCBzdHJ1Y3R1cmUsIGVuY29kZWRW
YWx1ZSwgMCwgTnVsbG9wdCkpOwogfQogCitjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5l
d0dlbmVyYXRvckZyYW1lKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGlu
dDMyX3QgbnVtYmVyT2ZDYWxsZWVMb2NhbHMpCit7CisgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxj
aGFyKj4oR2VuZXJhdG9yRnJhbWU6OmNyZWF0ZShleGVjLT52bSgpLCBzdHJ1Y3R1cmUsIG51bWJl
ck9mQ2FsbGVlTG9jYWxzKSk7Cit9CisKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25D
cmVhdGVBY3RpdmF0aW9uRGlyZWN0KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIEpTU2NvcGUqIHNjb3BlLCBTeW1ib2xUYWJsZSogdGFibGUsIEVuY29kZWRKU1ZhbHVlIGlu
aXRpYWxWYWx1ZUVuY29kZWQpCiB7CiAgICAgSlNWYWx1ZSBpbml0aWFsVmFsdWUgPSBKU1ZhbHVl
OjpkZWNvZGUoaW5pdGlhbFZhbHVlRW5jb2RlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT3BlcmF0aW9ucy5oCmluZGV4IDVhNDgwNjVkMzg5OTY3ZDgyZjBmZDVkNTUyMmNiYWM3MGMz
NzBjYjguLmQ4NDE1MDA0MWU4YTg5OWY4ODBmNTdlNzlhYjM4OGFjNzJjY2Q5NGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCkBAIC04MSw2ICs4MSw3IEBACiBj
aGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Zsb2F0MzJBcnJheVdpdGhPbmVBcmd1bWVu
dChFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqLCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFMOwog
Y2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdGbG9hdDY0QXJyYXlXaXRoU2l6ZShFeGVj
U3RhdGUqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90KSBXVEZfSU5URVJOQUw7CiBjaGFyKiBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbk5ld0Zsb2F0NjRBcnJheVdpdGhPbmVBcmd1bWVudChFeGVjU3RhdGUq
LCBTdHJ1Y3R1cmUqLCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFMOworY2hhciogSklUX09Q
RVJBVElPTiBvcGVyYXRpb25OZXdHZW5lcmF0b3JGcmFtZShFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUq
LCBpbnQzMl90KSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0
QnlWYWxTdHJpY3QoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRQcm9wZXJ0eSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSBX
VEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxOb25TdHJp
Y3QoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRQcm9wZXJ0eSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSBXVEZfSU5URVJO
QUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxDZWxsU3RyaWN0KEV4ZWNT
dGF0ZSosIEpTQ2VsbCosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRQcm9wZXJ0eSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlKSBXVEZfSU5URVJOQUw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCmlu
ZGV4IGE2NzBjNzJjM2ZiMGJlZTYzNDk2NWNjYjc4ZjQ5Mjg1OGEwNDRhYzIuLjI0MmQ3ZTkwZTk1
NjRlMDhkZDYxOWFkZDViMGZlZjdmYTEzNDNjNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCkBA
IC01MjUsNyArNTI1LDggQEAgY2xhc3MgUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UgOiBwdWJs
aWMgUGhhc2UgewogICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBOZXdSZWdl
eHA6Ci0gICAgICAgIGNhc2UgQ3JlYXRlQWN0aXZhdGlvbjogeworICAgICAgICBjYXNlIENyZWF0
ZUFjdGl2YXRpb246CisgICAgICAgIGNhc2UgTmV3R2VuZXJhdG9yRnJhbWU6IHsKICAgICAgICAg
ICAgIGNoYW5nZWQgfD0gc2V0UHJlZGljdGlvbihTcGVjT2JqZWN0T3RoZXIpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU2FmZVRvRXhlY3V0ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZl
VG9FeGVjdXRlLmgKaW5kZXggMjMwZWZlZGM0ODMxNTEyYmFjNTY4YmVlZmRiMjc2OTYxODcyMDk0
Yy4uZDQ2MmY1ODk5ZDk1NjExMWQ0MTM1YWU2OGUyOTMyNGU4YzIxYWI1MyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKQEAgLTIzNyw2ICsyMzcsNyBA
QCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0YXRlLCBHcmFwaCYgZ3Jh
cGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBOZXdBcnJheVdpdGhTaXplOgogICAgIGNhc2UgTmV3
QXJyYXlCdWZmZXI6CiAgICAgY2FzZSBOZXdSZWdleHA6CisgICAgY2FzZSBOZXdHZW5lcmF0b3JG
cmFtZToKICAgICBjYXNlIEJyZWFrcG9pbnQ6CiAgICAgY2FzZSBQcm9maWxlV2lsbENhbGw6CiAg
ICAgY2FzZSBQcm9maWxlRGlkQ2FsbDoKQEAgLTMyOCw2ICszMjksOSBAQCBib29sIHNhZmVUb0V4
ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUp
CiAgICAgY2FzZSBHZXRNeUFyZ3VtZW50QnlWYWw6CiAgICAgY2FzZSBGb3J3YXJkVmFyYXJnczoK
ICAgICBjYXNlIENvcHlSZXN0OgorICAgIGNhc2UgU2F2ZVRvR2VuZXJhdG9yRnJhbWU6CisgICAg
Y2FzZSBSZXN1bWVGcm9tR2VuZXJhdG9yRnJhbWU6CisgICAgY2FzZSBQdXRHZW5lcmF0b3JGcmFt
ZUxvY2FsczoKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBjYXNlIEJvdHRvbVZhbHVlOgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAppbmRl
eCBiYmFiZTI2YWY5ZmNhMTAxYWQ5MTM1NTIwMWMxNDdiN2VkNDU4Njk4Li5hZmI1N2I3MDVjZWU3
ZDg3MmU0YzBkNjAzMGZmN2U5MTUzZDJiNGVhIDEwMDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUg
IkRGR1NhbmVTdHJpbmdHZXRCeVZhbFNsb3dQYXRoR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiREZH
U2xvd1BhdGhHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJEaXJlY3RBcmd1bWVudHMuaCIKKyNpbmNs
dWRlICJHZW5lcmF0b3JGcmFtZS5oIgogI2luY2x1ZGUgIkpJVEFkZEdlbmVyYXRvci5oIgogI2lu
Y2x1ZGUgIkpJVEJpdEFuZEdlbmVyYXRvci5oIgogI2luY2x1ZGUgIkpJVEJpdE9yR2VuZXJhdG9y
LmgiCkBAIC02MzU4LDYgKzYzNTksMjkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5l
d1N0cmluZ09iamVjdChOb2RlKiBub2RlKQogICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2Rl
KTsKIH0KIAordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld0dlbmVyYXRvckZyYW1lKE5v
ZGUqIG5vZGUpCit7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1faml0Lmdy
YXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUgPSBnbG9iYWxPYmplY3QtPmdlbmVyYXRvckZyYW1lU3RydWN0dXJlKCk7
CisKKyAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOworICAgIEdQUlRlbXBvcmFyeSBzY3Jh
dGNoMSh0aGlzKTsKKyAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaDIodGhpcyk7CisKKyAgICBHUFJS
ZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOworICAgIEdQUlJlZyBzY3JhdGNoMUdQUiA9IHNj
cmF0Y2gxLmdwcigpOworICAgIEdQUlJlZyBzY3JhdGNoMkdQUiA9IHNjcmF0Y2gyLmdwcigpOwor
CisgICAgSklUQ29tcGlsZXI6Okp1bXBMaXN0IHNsb3dQYXRoOworCisgICAgZW1pdEFsbG9jYXRl
SlNPYmplY3RXaXRoS25vd25TaXplPEdlbmVyYXRvckZyYW1lPihyZXN1bHRHUFIsIFRydXN0ZWRJ
bW1QdHIoc3RydWN0dXJlKSwgVHJ1c3RlZEltbVB0cihudWxscHRyKSwgc2NyYXRjaDFHUFIsIHNj
cmF0Y2gyR1BSLCBzbG93UGF0aCwgR2VuZXJhdG9yRnJhbWU6OmFsbG9jYXRpb25TaXplRm9yTG9j
YWxzKG5vZGUtPmdlbmVyYXRvckZyYW1lU2l6ZSgpKSk7CisgICAgbV9qaXQuc3RvcmUzMihUcnVz
dGVkSW1tMzIoMCksIEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgR2VuZXJhdG9yRnJh
bWU6Om51bWJlck9mU2F2ZWRDYWxsZWVMb2NhbHNPZmZzZXQoKSkpOworCisgICAgYWRkU2xvd1Bh
dGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dQYXRoLCB0aGlzLCBvcGVyYXRpb25OZXdHZW5l
cmF0b3JGcmFtZSwgcmVzdWx0R1BSLCBzdHJ1Y3R1cmUsIG5vZGUtPmdlbmVyYXRvckZyYW1lU2l6
ZSgpKSk7CisKKyAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7Cit9CisKIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdUeXBlZEFycmF5KE5vZGUqIG5vZGUpCiB7CiAgICAgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmgKaW5kZXggMDMyMmJiN2FiZGE0YzgzNjA2OTYyYjBmYzFhMTdlODJh
NTU2NzNkNC4uZWE5ZTdlMmVlNTg3NGYxODk1MmViMDM1ZWIyNWM0YmNkODFiODI0NCAxMDA3NTUK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaApAQCAtMjI3Myw2
ICsyMjczLDcgQEAgY2xhc3MgU3BlY3VsYXRpdmVKSVQgewogICAgIHZvaWQgY29tcGlsZVB1dEJ5
VmFsRm9yRmxvYXRUeXBlZEFycmF5KEdQUlJlZyBiYXNlLCBHUFJSZWcgcHJvcGVydHksIE5vZGUq
LCBUeXBlZEFycmF5VHlwZSk7CiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIENsYXNzVHlwZT4gdm9p
ZCBjb21waWxlTmV3RnVuY3Rpb25Db21tb24oR1BSUmVnLCBTdHJ1Y3R1cmUqLCBHUFJSZWcsIEdQ
UlJlZywgR1BSUmVnLCBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QmLCBzaXplX3QsIEZ1bmN0aW9u
RXhlY3V0YWJsZSosIHB0cmRpZmZfdCwgcHRyZGlmZl90LCBwdHJkaWZmX3QpOwogICAgIHZvaWQg
Y29tcGlsZU5ld0Z1bmN0aW9uKE5vZGUqKTsKKyAgICB2b2lkIGNvbXBpbGVOZXdHZW5lcmF0b3JG
cmFtZShOb2RlKik7CiAgICAgdm9pZCBjb21waWxlRm9yd2FyZFZhcmFyZ3MoTm9kZSopOwogICAg
IHZvaWQgY29tcGlsZUNyZWF0ZUFjdGl2YXRpb24oTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUNy
ZWF0ZURpcmVjdEFyZ3VtZW50cyhOb2RlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAppbmRleCA1NDdhYTBiYzRkMzM2ZjRi
N2Y4YmU0ZDgzZDU3M2VmYjc1YjI3MzU4Li4xMjQ3MmFkMWNhNzJjYzg5ZGVmM2U1YThmMmNhYjE4
ZTQ3ZmE4NGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklUMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQzMl82NC5jcHAKQEAgLTM2NTAsNiArMzY1MCwxMSBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0UGF5
bG9hZC5ncHIoKSwgbm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KKworICAgIGNhc2UgTmV3
R2VuZXJhdG9yRnJhbWU6IHsKKyAgICAgICAgY29tcGlsZU5ld0dlbmVyYXRvckZyYW1lKG5vZGUp
OworICAgICAgICBicmVhazsKKyAgICB9CiAgICAgICAgIAogICAgIGNhc2UgVG9UaGlzOiB7CiAg
ICAgICAgIEFTU0VSVChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApp
bmRleCBhNTZhNTJiNGQzNWRlYjZkM2IyODc0ZDFhMTc3ODE3ZjljY2M1ZGFmLi5mZGRlMTczMWFk
OWVlMTQ0Y2YzMmI3NzFhZmQ0ZjYzY2ZmNDk0OTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKICNp
bmNsdWRlICJERkdTbG93UGF0aEdlbmVyYXRvci5oIgogI2luY2x1ZGUgIkRlYnVnZ2VyLmgiCiAj
aW5jbHVkZSAiRGlyZWN0QXJndW1lbnRzLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yRnJhbWUuaCIK
ICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiSlNFbnZpcm9ubWVudFJlY29yZC5oIgpAQCAtMzY4OCw2ICszNjg5LDExIEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgY2VsbFJlc3VsdChy
ZXN1bHQuZ3ByKCksIG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9CisKKyAgICBjYXNlIE5l
d0dlbmVyYXRvckZyYW1lOiB7CisgICAgICAgIGNvbXBpbGVOZXdHZW5lcmF0b3JGcmFtZShub2Rl
KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogICAgICAgICAKICAgICBjYXNlIFRvVGhpczogewog
ICAgICAgICBBU1NFUlQobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IFVudHlwZWRVc2UpOwpA
QCAtNDcyMCw2ICs0NzI2LDM4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSog
bm9kZSkKICAgICAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogICAgICAgICBicmVh
azsKICAgICB9CisgICAgY2FzZSBTYXZlVG9HZW5lcmF0b3JGcmFtZTogeworICAgICAgICBTcGVj
dWxhdGVDZWxsT3BlcmFuZCBmcmFtZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIEpT
VmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKKworICAgICAgICBHUFJS
ZWcgZnJhbWVHUFIgPSBmcmFtZS5ncHIoKTsKKyAgICAgICAgR1BSUmVnIHZhbHVlR1BSID0gdmFs
dWUuZ3ByKCk7CisgICAgICAgIHVuc2lnbmVkIGdlbmVyYXRvckZyYW1lSW5kZXggPSBub2RlLT5n
ZW5lcmF0b3JGcmFtZUluZGV4KCk7CisKKyAgICAgICAgbV9qaXQuc3RvcmU2NCh2YWx1ZUdQUiwg
SklUQ29tcGlsZXI6OkFkZHJlc3MoZnJhbWVHUFIsIEdlbmVyYXRvckZyYW1lOjpsb2NhbE9mZnNl
dChnZW5lcmF0b3JGcmFtZUluZGV4KSkpOworCisgICAgICAgIG5vUmVzdWx0KG5vZGUpOworICAg
ICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBSZXN1bWVGcm9tR2VuZXJhdG9yRnJhbWU6IHsK
KyAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgZnJhbWUodGhpcywgbm9kZS0+Y2hpbGQxKCkp
OworICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOworCisgICAgICAgIEdQUlJlZyBm
cmFtZUdQUiA9IGZyYW1lLmdwcigpOworICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0
LmdwcigpOworICAgICAgICB1bnNpZ25lZCBnZW5lcmF0b3JGcmFtZUluZGV4ID0gbm9kZS0+Z2Vu
ZXJhdG9yRnJhbWVJbmRleCgpOworCisgICAgICAgIG1faml0LmxvYWQ2NChKSVRDb21waWxlcjo6
QWRkcmVzcyhmcmFtZUdQUiwgR2VuZXJhdG9yRnJhbWU6OmxvY2FsT2Zmc2V0KGdlbmVyYXRvckZy
YW1lSW5kZXgpKSwgcmVzdWx0R1BSKTsKKyAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRHUFIs
IG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBQdXRHZW5lcmF0b3JGcmFt
ZUxvY2FsczogeworICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBmcmFtZSh0aGlzLCBub2Rl
LT5jaGlsZDEoKSk7CisgICAgICAgIEdQUlJlZyBmcmFtZUdQUiA9IGZyYW1lLmdwcigpOworICAg
ICAgICBtX2ppdC5zdG9yZTMyKFRydXN0ZWRJbW0zMihub2RlLT5nZW5lcmF0b3JGcmFtZUxvY2Fs
cygpKSwgSklUQ29tcGlsZXI6OkFkZHJlc3MoZnJhbWVHUFIsIEdlbmVyYXRvckZyYW1lOjpudW1i
ZXJPZlNhdmVkQ2FsbGVlTG9jYWxzT2Zmc2V0KCkpKTsKKyAgICAgICAgbm9SZXN1bHQobm9kZSk7
CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICBjYXNlIFByb2ZpbGVUeXBlOiB7CiAgICAgICAg
IEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgR1BS
VGVtcG9yYXJ5IHNjcmF0Y2gxKHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcAppbmRleCA3MmYy
MjAwY2VhMTBiOTgxMGRiYThjN2IxOWZlZmYyNGRhYTVkYWUzLi4wMWE3NTVlNTcxNzcyMWYxOWMw
YmMzMWZhZDVjZTlhNDhiMDg5OGM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcApAQCAtMjgxLDYg
KzI4MSwxMSBAQCBjbGFzcyBTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZSA6IHB1YmxpYyBQaGFz
ZSB7CiAgICAgICAgICAgICAgICAgY29uc2lkZXJCYXJyaWVyKG1fbm9kZS0+Y2hpbGQxKCksIG1f
bm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQor
CisgICAgICAgICAgICBjYXNlIFNhdmVUb0dlbmVyYXRvckZyYW1lOiB7CisgICAgICAgICAgICAg
ICAgY29uc2lkZXJCYXJyaWVyKG1fbm9kZS0+Y2hpbGQxKCksIG1fbm9kZS0+Y2hpbGQyKCkpOwor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIAog
ICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTI5Niw2ICsz
MDEsNyBAQCBjbGFzcyBTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7
CiAgICAgICAgICAgICBjYXNlIE5ld0FycmF5QnVmZmVyOgogICAgICAgICAgICAgY2FzZSBOZXdU
eXBlZEFycmF5OgogICAgICAgICAgICAgY2FzZSBOZXdSZWdleHA6CisgICAgICAgICAgICBjYXNl
IE5ld0dlbmVyYXRvckZyYW1lOgogICAgICAgICAgICAgY2FzZSBNYXRlcmlhbGl6ZU5ld09iamVj
dDoKICAgICAgICAgICAgIGNhc2UgTWF0ZXJpYWxpemVDcmVhdGVBY3RpdmF0aW9uOgogICAgICAg
ICAgICAgY2FzZSBOZXdTdHJpbmdPYmplY3Q6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2UuY3BwCmluZGV4IDJj
MDU1OTg0OTg5OWJkZjZmYjExMTc1OTdlMTA1NGJmZjM1NDY2OTMuLmUxYWVmMGIyYzM5M2Y1NjE5
NDhjY2E1YTk1OWYyZTA3MTA4ODQzODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2UuY3BwCkBAIC0xNDks
NiArMTQ5LDkgQEAgY2xhc3MgU3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2UgOiBwdWJsaWMgUGhh
c2UgewogICAgICAgICAgICAgICAgIGNhc2UgTmV3R2VuZXJhdG9yRnVuY3Rpb246CiAgICAgICAg
ICAgICAgICAgICAgIHJlZ2lzdGVyU3RydWN0dXJlKG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYyktPmdlbmVyYXRvckZ1bmN0aW9uU3RydWN0dXJlKCkpOwogICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIE5ld0dlbmVyYXRv
ckZyYW1lOgorICAgICAgICAgICAgICAgICAgICByZWdpc3RlclN0cnVjdHVyZShtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5nZW5lcmF0b3JGcmFtZVN0cnVj
dHVyZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAg
IAogICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCmluZGV4IGEzYmRmYTdjZDVkMGY1NzI0N2YxYmU4YzQw
YjI1MTBkMjlkODAwZmYuLmQ5MmJjODdjN2I2OTA5NDFjYzJjYzI5OGJhZmJjZmZmNTc2MzYxZjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKQEAgLTIxNyw2ICsyMTcsNyBAQCB2b2lkIEpJ
VDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9PUChvcF9hc3NlcnQp
CiAgICAgICAgIERFRklORV9PUChvcF9zYXZlKQogICAgICAgICBERUZJTkVfT1Aob3BfcmVzdW1l
KQorICAgICAgICBERUZJTkVfT1Aob3BfbmV3X2dlbmVyYXRvcl9mcmFtZSkKICAgICAgICAgREVG
SU5FX09QKG9wX2RlYnVnKQogICAgICAgICBERUZJTkVfT1Aob3BfZGVsX2J5X2lkKQogICAgICAg
ICBERUZJTkVfT1Aob3BfZGl2KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKaW5kZXggZGY3YjNkYzVl
ODkyMGVlNGVmOTJiY2FjYmFlZmYxYjRjMDBkOTM2OS4uYTg4YmI2Njc0Y2M4NTBiYjY2OWQ3Y2Jj
ZDBjOGFlN2JiZjIyNDA1OCAxMDA3NTUKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCkBAIC00OTYsNiArNDk2
LDcgQEAKICAgICAgICAgdm9pZCBlbWl0X29wX2Fzc2VydChJbnN0cnVjdGlvbiopOwogICAgICAg
ICB2b2lkIGVtaXRfb3Bfc2F2ZShJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3Bf
cmVzdW1lKEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9uZXdfZ2VuZXJhdG9y
X2ZyYW1lKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9kZWJ1ZyhJbnN0cnVj
dGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZGVsX2J5X2lkKEluc3RydWN0aW9uKik7CiAg
ICAgICAgIHZvaWQgZW1pdF9vcF9kaXYoSW5zdHJ1Y3Rpb24qKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wY29kZXMuY3BwCmluZGV4IDc5NWYyOWU5ZTBiMmE3MjgzZDZlMmVjZmE2Y2Nh
OTgxZmJkMGFiY2MuLjRlODljYTFkOGU0ZWUwMTAzZjhmZWM4ZjYxNGMxZjVlYjY4MmIzMDIgMTAw
NzU1Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcApAQCAtMTQ0MSw2ICsxNDQx
LDEyIEBAIHZvaWQgSklUOjplbWl0X29wX3Jlc3VtZShJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CiB9CiAKK3ZvaWQgSklUOjplbWl0X29w
X25ld19nZW5lcmF0b3JfZnJhbWUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sK
KyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlv
biwgc2xvd19wYXRoX25ld19nZW5lcmF0b3JfZnJhbWUpOworICAgIHNsb3dQYXRoQ2FsbC5jYWxs
KCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVy
LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFz
bQppbmRleCBjZDRjZTkwNjNiMTk1NzVhOTU3ZTNjYTNlMjJiZTU3OTE1YmRiNTlhLi4wMGE3YWRi
ODlkNWM1ZTA5NTQyMTE1NmQ0ZmU0YmQ2N2UxN2I2YWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCkBAIC0xMjU2LDYgKzEy
NTYsMTIgQEAgX2xsaW50X29wX25ld19yZWdleHA6CiAgICAgZGlzcGF0Y2goMykKIAogCitfbGxp
bnRfb3BfbmV3X2dlbmVyYXRvcl9mcmFtZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2Fs
bFNsb3dQYXRoKF9zbG93X3BhdGhfbmV3X2dlbmVyYXRvcl9mcmFtZSkKKyAgICBkaXNwYXRjaCgz
KQorCisKIF9sbGludF9vcF9sZXNzOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBjYWxsU2xv
d1BhdGgoX3Nsb3dfcGF0aF9sZXNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9QYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIu
Y3BwCmluZGV4IGUyODAwN2Q5NDUwMDA0NGU1ODc5NDU3MjMwMmIzNzcwM2RkNWJkODguLjUyMWE4
ZmM0MDdiNWNmYzQzMTQwMzI3MGYwODZiOWMyOGI4MDE0Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL1BhcnNlci5jcHAKQEAgLTI1MCw5ICsyNTAsMTAgQEAKICAgICBib29sIGlzQXJy
b3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uID0gZmFsc2U7CiAgICAgaWYgKG1fbGV4ZXItPmlzUmVw
YXJzaW5nRnVuY3Rpb24oKSkgewogICAgICAgICBQYXJzZXJGdW5jdGlvbkluZm88QVNUQnVpbGRl
cj4gZnVuY3Rpb25JbmZvOwotICAgICAgICBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9k
ZTo6R2VuZXJhdG9yQm9keU1vZGUpCi0gICAgICAgICAgICBmdW5jdGlvbkluZm8ucGFyYW1ldGVy
cyA9IGNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMoY29udGV4dCk7Ci0gICAgICAgIGVsc2UKKyAg
ICAgICAgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckJvZHlNb2Rl
KSB7CisgICAgICAgICAgICB1bnNpZ25lZCBwYXJhbWV0ZXJDb3VudCA9IDA7CisgICAgICAgICAg
ICBmdW5jdGlvbkluZm8ucGFyYW1ldGVycyA9IGNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMoY29u
dGV4dCwgcGFyYW1ldGVyQ291bnQpOworICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIHBhcnNl
RnVuY3Rpb25QYXJhbWV0ZXJzKGNvbnRleHQsIHBhcnNlTW9kZSwgZnVuY3Rpb25JbmZvKTsKICAg
ICAgICAgbV9wYXJhbWV0ZXJzID0gZnVuY3Rpb25JbmZvLnBhcmFtZXRlcnM7CiAKQEAgLTQ4NSwx
MCArNDg2LDkgQEAKIAogICAgIFBhcnNlckZ1bmN0aW9uSW5mbzxUcmVlQnVpbGRlcj4gaW5mbzsK
ICAgICBpbmZvLm5hbWUgPSAmbV92bS0+cHJvcGVydHlOYW1lcy0+bnVsbElkZW50aWZpZXI7Ci0g
ICAgaW5mby5wYXJhbWV0ZXJzID0gY3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhjb250ZXh0KTsK
KyAgICBpbmZvLnBhcmFtZXRlcnMgPSBjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKGNvbnRleHQs
IGluZm8ucGFyYW1ldGVyQ291bnQpOwogICAgIGluZm8uc3RhcnRPZmZzZXQgPSBwYXJhbWV0ZXJz
U3RhcnQ7CiAgICAgaW5mby5zdGFydExpbmUgPSB0b2tlbkxpbmUoKTsKLSAgICBpbmZvLnBhcmFt
ZXRlckNvdW50ID0gNDsgLy8gZ2VuZXJhdG9yLCBzdGF0ZSwgdmFsdWUsIHJlc3VtZSBtb2RlCiAK
ICAgICB7CiAgICAgICAgIEF1dG9Qb3BTY29wZVJlZiBnZW5lcmF0b3JCb2R5U2NvcGUodGhpcywg
cHVzaFNjb3BlKCkpOwpAQCAtMTc4MSwzMiArMTc4MSwzMSBAQCBzdGF0aWMgY29uc3QgY2hhciog
c3RyaW5nRm9yRnVuY3Rpb25Nb2RlKFNvdXJjZVBhcnNlTW9kZSBtb2RlKQogfQogCiB0ZW1wbGF0
ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgotdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiB0eXBl
bmFtZSBUcmVlQnVpbGRlcjo6Rm9ybWFsUGFyYW1ldGVyTGlzdCBQYXJzZXI8TGV4ZXJUeXBlPjo6
Y3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhUcmVlQnVpbGRlciYgY29udGV4dCkKK3RlbXBsYXRl
IDxjbGFzcyBUcmVlQnVpbGRlcj4gdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkZvcm1hbFBhcmFtZXRl
ckxpc3QgUGFyc2VyPExleGVyVHlwZT46OmNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMoVHJlZUJ1
aWxkZXImIGNvbnRleHQsIHVuc2lnbmVkJiBwYXJhbWV0ZXJDb3VudCkKIHsKICAgICBhdXRvIHBh
cmFtZXRlcnMgPSBjb250ZXh0LmNyZWF0ZUZvcm1hbFBhcmFtZXRlckxpc3QoKTsKIAogICAgIEpT
VG9rZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOwogICAgIEpTVGV4dFBvc2l0
aW9uIHBvc2l0aW9uID0gdG9rZW5TdGFydFBvc2l0aW9uKCk7CiAKLSAgICAvLyBAZ2VuZXJhdG9y
Ci0gICAgZGVjbGFyZVBhcmFtZXRlcigmbV92bS0+cHJvcGVydHlOYW1lcy0+Z2VuZXJhdG9yUHJp
dmF0ZU5hbWUpOwotICAgIGF1dG8gZ2VuZXJhdG9yID0gY29udGV4dC5jcmVhdGVCaW5kaW5nTG9j
YXRpb24obG9jYXRpb24sIG1fdm0tPnByb3BlcnR5TmFtZXMtPmdlbmVyYXRvclByaXZhdGVOYW1l
LCBwb3NpdGlvbiwgcG9zaXRpb24sIEFzc2lnbm1lbnRDb250ZXh0OjpEZWNsYXJhdGlvblN0YXRl
bWVudCk7Ci0gICAgY29udGV4dC5hcHBlbmRQYXJhbWV0ZXIocGFyYW1ldGVycywgZ2VuZXJhdG9y
LCAwKTsKKyAgICBhdXRvIGFkZFBhcmFtZXRlciA9IFsmXShjb25zdCBJZGVudGlmaWVyJiBuYW1l
KSB7CisgICAgICAgIGRlY2xhcmVQYXJhbWV0ZXIoJm5hbWUpOworICAgICAgICBhdXRvIGJpbmRp
bmcgPSBjb250ZXh0LmNyZWF0ZUJpbmRpbmdMb2NhdGlvbihsb2NhdGlvbiwgbmFtZSwgcG9zaXRp
b24sIHBvc2l0aW9uLCBBc3NpZ25tZW50Q29udGV4dDo6RGVjbGFyYXRpb25TdGF0ZW1lbnQpOwor
ICAgICAgICBjb250ZXh0LmFwcGVuZFBhcmFtZXRlcihwYXJhbWV0ZXJzLCBiaW5kaW5nLCAwKTsK
KyAgICB9OwogCisgICAgLy8gQGdlbmVyYXRvcgorICAgIGFkZFBhcmFtZXRlcihtX3ZtLT5wcm9w
ZXJ0eU5hbWVzLT5nZW5lcmF0b3JQcml2YXRlTmFtZSk7CiAgICAgLy8gQGdlbmVyYXRvclN0YXRl
Ci0gICAgZGVjbGFyZVBhcmFtZXRlcigmbV92bS0+cHJvcGVydHlOYW1lcy0+Z2VuZXJhdG9yU3Rh
dGVQcml2YXRlTmFtZSk7Ci0gICAgYXV0byBnZW5lcmF0b3JTdGF0ZSA9IGNvbnRleHQuY3JlYXRl
QmluZGluZ0xvY2F0aW9uKGxvY2F0aW9uLCBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5nZW5lcmF0b3JT
dGF0ZVByaXZhdGVOYW1lLCBwb3NpdGlvbiwgcG9zaXRpb24sIEFzc2lnbm1lbnRDb250ZXh0OjpE
ZWNsYXJhdGlvblN0YXRlbWVudCk7Ci0gICAgY29udGV4dC5hcHBlbmRQYXJhbWV0ZXIocGFyYW1l
dGVycywgZ2VuZXJhdG9yU3RhdGUsIDApOwotCisgICAgYWRkUGFyYW1ldGVyKG1fdm0tPnByb3Bl
cnR5TmFtZXMtPmdlbmVyYXRvclN0YXRlUHJpdmF0ZU5hbWUpOwogICAgIC8vIEBnZW5lcmF0b3JW
YWx1ZQotICAgIGRlY2xhcmVQYXJhbWV0ZXIoJm1fdm0tPnByb3BlcnR5TmFtZXMtPmdlbmVyYXRv
clZhbHVlUHJpdmF0ZU5hbWUpOwotICAgIGF1dG8gZ2VuZXJhdG9yVmFsdWUgPSBjb250ZXh0LmNy
ZWF0ZUJpbmRpbmdMb2NhdGlvbihsb2NhdGlvbiwgbV92bS0+cHJvcGVydHlOYW1lcy0+Z2VuZXJh
dG9yVmFsdWVQcml2YXRlTmFtZSwgcG9zaXRpb24sIHBvc2l0aW9uLCBBc3NpZ25tZW50Q29udGV4
dDo6RGVjbGFyYXRpb25TdGF0ZW1lbnQpOwotICAgIGNvbnRleHQuYXBwZW5kUGFyYW1ldGVyKHBh
cmFtZXRlcnMsIGdlbmVyYXRvclZhbHVlLCAwKTsKLQorICAgIGFkZFBhcmFtZXRlcihtX3ZtLT5w
cm9wZXJ0eU5hbWVzLT5nZW5lcmF0b3JWYWx1ZVByaXZhdGVOYW1lKTsKICAgICAvLyBAZ2VuZXJh
dG9yUmVzdW1lTW9kZQotICAgIGRlY2xhcmVQYXJhbWV0ZXIoJm1fdm0tPnByb3BlcnR5TmFtZXMt
PmdlbmVyYXRvclJlc3VtZU1vZGVQcml2YXRlTmFtZSk7Ci0gICAgYXV0byBnZW5lcmF0b3JSZXN1
bWVNb2RlID0gY29udGV4dC5jcmVhdGVCaW5kaW5nTG9jYXRpb24obG9jYXRpb24sIG1fdm0tPnBy
b3BlcnR5TmFtZXMtPmdlbmVyYXRvclJlc3VtZU1vZGVQcml2YXRlTmFtZSwgcG9zaXRpb24sIHBv
c2l0aW9uLCBBc3NpZ25tZW50Q29udGV4dDo6RGVjbGFyYXRpb25TdGF0ZW1lbnQpOwotICAgIGNv
bnRleHQuYXBwZW5kUGFyYW1ldGVyKHBhcmFtZXRlcnMsIGdlbmVyYXRvclJlc3VtZU1vZGUsIDAp
OworICAgIGFkZFBhcmFtZXRlcihtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5nZW5lcmF0b3JSZXN1bWVN
b2RlUHJpdmF0ZU5hbWUpOworICAgIC8vIEBnZW5lcmF0b3JGcmFtZQorICAgIGFkZFBhcmFtZXRl
cihtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5nZW5lcmF0b3JGcmFtZVByaXZhdGVOYW1lKTsKKworICAg
IHBhcmFtZXRlckNvdW50ID0gNTsKIAogICAgIHJldHVybiBwYXJhbWV0ZXJzOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKaW5kZXggYTExYjM1YzEwMWZlNWI4NDljYjIzMzA5
NmM1NjgzMTM3MDY2Y2FiZi4uZTYxNDlhM2FjMzY5NDA0ODkzZDIzNjk2OTMxNmI1YzMwMzNiZTg1
MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCkBAIC0xMjU5LDcgKzEyNTks
NyBAQCBjbGFzcyBQYXJzZXIgewogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gTkVW
RVJfSU5MSU5FIGJvb2wgcGFyc2VGdW5jdGlvbkluZm8oVHJlZUJ1aWxkZXImLCBGdW5jdGlvblJl
cXVpcmVtZW50cywgU291cmNlUGFyc2VNb2RlLCBib29sIG5hbWVJc0luQ29udGFpbmluZ1Njb3Bl
LCBDb25zdHJ1Y3RvcktpbmQsIFN1cGVyQmluZGluZywgaW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0
LCBQYXJzZXJGdW5jdGlvbkluZm88VHJlZUJ1aWxkZXI+JiwgRnVuY3Rpb25EZWZpbml0aW9uVHlw
ZSk7CiAgICAgCiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBORVZFUl9JTkxJTkUg
aW50IHBhcnNlRnVuY3Rpb25QYXJhbWV0ZXJzKFRyZWVCdWlsZGVyJiwgU291cmNlUGFyc2VNb2Rl
LCBQYXJzZXJGdW5jdGlvbkluZm88VHJlZUJ1aWxkZXI+Jik7Ci0gICAgdGVtcGxhdGUgPGNsYXNz
IFRyZWVCdWlsZGVyPiBORVZFUl9JTkxJTkUgdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkZvcm1hbFBh
cmFtZXRlckxpc3QgY3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhUcmVlQnVpbGRlciYpOworICAg
IHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gTkVWRVJfSU5MSU5FIHR5cGVuYW1lIFRyZWVC
dWlsZGVyOjpGb3JtYWxQYXJhbWV0ZXJMaXN0IGNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMoVHJl
ZUJ1aWxkZXImLCB1bnNpZ25lZCYgcGFyYW1ldGVyQ291bnQpOwogCiAgICAgdGVtcGxhdGUgPGNs
YXNzIFRyZWVCdWlsZGVyPiBORVZFUl9JTkxJTkUgVHJlZUNsYXNzRXhwcmVzc2lvbiBwYXJzZUNs
YXNzKFRyZWVCdWlsZGVyJiwgRnVuY3Rpb25SZXF1aXJlbWVudHMsIFBhcnNlckNsYXNzSW5mbzxU
cmVlQnVpbGRlcj4mKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29tbW9uU2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bW1vblNsb3dQYXRocy5jcHAKaW5kZXggNmY4Yzc1NDk5NmUzNjM0ZGY5ZjJiMWZmMzlhN2VmODM0
ODNhY2YyNC4uNGI5MDRlM2M5ZmMzNzk1MzNmMzdkMTgwNmQwMGU5MzA5MGJiZGY4ZCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCkBA
IC02OTcsMTggKzY5Nyw3IEBAIHN0YXRpYyB2b2lkIHVwZGF0ZVJlc3VsdFByb2ZpbGVGb3JCaW5h
cnlBcml0aE9wKEV4ZWNTdGF0ZSosIEluc3RydWN0aW9uKiwgSlNWYWx1CiAgICAgLy8gT25seSBz
YXZlIHZhcmlhYmxlcyBhbmQgdGVtcG9yYXJ5IHJlZ2lzdGVycy4gVGhlIHNjb3BlIHJlZ2lzdGVy
cyBhcmUgaW5jbHVkZWQgaW4gdGhlbS4KICAgICAvLyBCdXQgcGFyYW1ldGVycyBhcmUgbm90IGlu
Y2x1ZGVkLiBCZWNhdXNlIHRoZSBnZW5lcmF0b3IgaW1wbGVtZW50YXRpb24gcmVwbGFjZXMgdGhl
IHZhbHVlcyBvZiBwYXJhbWV0ZXJzIG9uIGVhY2ggZ2VuZXJhdG9yLm5leHQoKSBjYWxsLgogICAg
IEJFR0lOKCk7Ci0gICAgSlNWYWx1ZSBnZW5lcmF0b3IgPSBPUCgxKS5qc1ZhbHVlKCk7Ci0gICAg
R2VuZXJhdG9yRnJhbWUqIGZyYW1lID0gbnVsbHB0cjsKLSAgICBKU1ZhbHVlIHZhbHVlID0gZ2Vu
ZXJhdG9yLmdldChleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuZ2VuZXJhdG9yRnJhbWVQcml2
YXRlTmFtZSk7Ci0gICAgaWYgKCF2YWx1ZS5pc051bGwoKSkKLSAgICAgICAgZnJhbWUgPSBqc0Nh
c3Q8R2VuZXJhdG9yRnJhbWUqPih2YWx1ZSk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIC8vIEZJWE1F
OiBPbmNlIEpTR2VuZXJhdG9yIHNwZWNpYWxpemVkIG9iamVjdCBpcyBpbnRyb2R1Y2VkLCB0aGlz
IEdlbmVyYXRvckZyYW1lIHNob3VsZCBiZSBlbWJlZGVkIGludG8gaXQgdG8gYXZvaWQgYWxsb2Nh
dGlvbnMuCi0gICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNTE1NDUKLSAgICAgICAgZnJhbWUgPSBHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlKGV4ZWMtPnZt
KCksICBleGVjLT5jb2RlQmxvY2soKS0+bnVtQ2FsbGVlTG9jYWxzKCkpOwotICAgICAgICBQdXRQ
cm9wZXJ0eVNsb3Qgc2xvdChnZW5lcmF0b3IsIHRydWUsIFB1dFByb3BlcnR5U2xvdDo6UHV0QnlJ
ZCk7Ci0gICAgICAgIGFzT2JqZWN0KGdlbmVyYXRvciktPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkp
LT5wdXQoYXNPYmplY3QoZ2VuZXJhdG9yKSwgZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLmdl
bmVyYXRvckZyYW1lUHJpdmF0ZU5hbWUsIGZyYW1lLCBzbG90KTsKLSAgICB9CisgICAgR2VuZXJh
dG9yRnJhbWUqIGZyYW1lID0ganNDYXN0PEdlbmVyYXRvckZyYW1lKj4oT1AoMSkuanNWYWx1ZSgp
KTsKICAgICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSBwY1syXS51LnVuc2lnbmVk
VmFsdWU7CiAgICAgZnJhbWUtPnNhdmUoZXhlYywgZXhlYy0+Y29kZUJsb2NrKCktPmxpdmVDYWxs
ZWVMb2NhbHNBdFlpZWxkKGxpdmVDYWxsZWVMb2NhbHNJbmRleCkpOwogICAgIEVORCgpOwpAQCAt
NzE3LDggKzcwNiw3IEBAIHN0YXRpYyB2b2lkIHVwZGF0ZVJlc3VsdFByb2ZpbGVGb3JCaW5hcnlB
cml0aE9wKEV4ZWNTdGF0ZSosIEluc3RydWN0aW9uKiwgSlNWYWx1CiBTTE9XX1BBVEhfREVDTChz
bG93X3BhdGhfcmVzdW1lKQogewogICAgIEJFR0lOKCk7Ci0gICAgSlNWYWx1ZSBnZW5lcmF0b3Ig
PSBPUCgxKS5qc1ZhbHVlKCk7Ci0gICAgR2VuZXJhdG9yRnJhbWUqIGZyYW1lID0ganNDYXN0PEdl
bmVyYXRvckZyYW1lKj4oZ2VuZXJhdG9yLmdldChleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCku
Z2VuZXJhdG9yRnJhbWVQcml2YXRlTmFtZSkpOworICAgIEdlbmVyYXRvckZyYW1lKiBmcmFtZSA9
IGpzQ2FzdDxHZW5lcmF0b3JGcmFtZSo+KE9QKDEpLmpzVmFsdWUoKSk7CiAgICAgdW5zaWduZWQg
bGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gcGNbMl0udS51bnNpZ25lZFZhbHVlOwogICAgIGZyYW1l
LT5yZXN1bWUoZXhlYywgZXhlYy0+Y29kZUJsb2NrKCktPmxpdmVDYWxsZWVMb2NhbHNBdFlpZWxk
KGxpdmVDYWxsZWVMb2NhbHNJbmRleCkpOwogICAgIEVORCgpOwpAQCAtNzk3LDQgKzc4NSwxMiBA
QCBzdGF0aWMgdm9pZCB1cGRhdGVSZXN1bHRQcm9maWxlRm9yQmluYXJ5QXJpdGhPcChFeGVjU3Rh
dGUqLCBJbnN0cnVjdGlvbiosIEpTVmFsdQogICAgIEVORCgpOwogfQogCitTTE9XX1BBVEhfREVD
TChzbG93X3BhdGhfbmV3X2dlbmVyYXRvcl9mcmFtZSkKK3sKKyAgICBCRUdJTigpOworICAgIHVu
c2lnbmVkIGdlbmVyYXRvckZyYW1lU2l6ZSA9IHBjWzJdLnUudW5zaWduZWRWYWx1ZTsKKyAgICBS
RVRVUk4oR2VuZXJhdG9yRnJhbWU6OmNyZWF0ZShleGVjLCBnZW5lcmF0b3JGcmFtZVNpemUpKTsK
K30KKworCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKaW5kZXggZjAwZDg3MDVkNGU2N2ZlNGQ0MDU5YmRlMTY4
ZWU4OGY1N2RmNzJlNy4uMDY1MGM0ZThjYjcxNTU5MTdjZDFkN2EyZjc3YTdjN2Y3MjlhMTU0MyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhz
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgK
QEAgLTI5Niw2ICsyOTYsNyBAQCBpbmxpbmUgdm9pZCBkZWNvZGVSZXN1bHQoU2xvd1BhdGhSZXR1
cm5UeXBlIHJlc3VsdCwgdm9pZComIGEsIHZvaWQqJiBiKQogU0xPV19QQVRIX0hJRERFTl9ERUNM
KHNsb3dfcGF0aF9wdXNoX3dpdGhfc2NvcGUpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3df
cGF0aF9yZXNvbHZlX3Njb3BlKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfY29w
eV9yZXN0KTsKK1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfbmV3X2dlbmVyYXRvcl9m
cmFtZSk7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGcmFtZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9HZW5lcmF0b3JGcmFtZS5jcHAKaW5kZXggZWY2ZWE3YTEwMDI1OGMzZWNlMDRk
YWFiNDNiZGFhODUxZWM4ZjcxNS4uMzBiODE0YTYzNjY3MjY4MjVjMzg0OWZmYjI4MDRkMmZmMzgw
NDExYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9y
RnJhbWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZy
YW1lLmNwcApAQCAtMzAsNjAgKzMwLDYwIEBACiAjaW5jbHVkZSAiSGVhcEl0ZXJhdGlvblNjb3Bl
LmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJKU0NlbGxJbmxp
bmVzLmgiCisjaW5jbHVkZSAiSlNPYmplY3RJbmxpbmVzLmgiCiAjaW5jbHVkZSAiU2xvdFZpc2l0
b3JJbmxpbmVzLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlSW5saW5lcy5oIgogCiBuYW1lc3BhY2Ug
SlNDIHsKIAotY29uc3QgQ2xhc3NJbmZvIEdlbmVyYXRvckZyYW1lOjpzX2luZm8gPSB7ICJHZW5l
cmF0b3JGcmFtZSIsIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoR2VuZXJh
dG9yRnJhbWUpIH07Citjb25zdCBDbGFzc0luZm8gR2VuZXJhdG9yRnJhbWU6OnNfaW5mbyA9IHsg
IkdlbmVyYXRvckZyYW1lIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9U
QUJMRShHZW5lcmF0b3JGcmFtZSkgfTsKIAotR2VuZXJhdG9yRnJhbWU6OkdlbmVyYXRvckZyYW1l
KFZNJiB2bSwgc2l6ZV90IG51bWJlck9mQ2FsbGVlTG9jYWxzKQotICAgIDogQmFzZSh2bSwgdm0u
Z2VuZXJhdG9yRnJhbWVTdHJ1Y3R1cmUuZ2V0KCkpCi0gICAgLCBtX251bWJlck9mQ2FsbGVlTG9j
YWxzKG51bWJlck9mQ2FsbGVlTG9jYWxzKQorR2VuZXJhdG9yRnJhbWU6OkdlbmVyYXRvckZyYW1l
KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUp
CiB7CiB9CiAKLXZvaWQgR2VuZXJhdG9yRnJhbWU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKLXsK
LSAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBtX251bWJlck9mQ2FsbGVlTG9jYWxzOyArK2kpCi0gICAgICAgIGxvY2FsQXQoaSkuY2xlYXIo
KTsKLX0KLQogU3RydWN0dXJlKiBHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2
bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCiB7Ci0g
ICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwg
VHlwZUluZm8oQ2VsbFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICByZXR1cm4g
U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhP
YmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiB9CiAKLUdlbmVyYXRvckZyYW1l
KiBHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlKFZNJiB2bSwgc2l6ZV90IG51bWJlck9mTG9jYWxzKQor
R2VuZXJhdG9yRnJhbWUqIEdlbmVyYXRvckZyYW1lOjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgc2l6ZV90IG51bWJlck9mQ2FsbGVlTG9jYWxzKQogewogICAgIEdlbmVyYXRv
ckZyYW1lKiByZXN1bHQgPQogICAgICAgICBuZXcgKAogICAgICAgICAgICAgTm90TnVsbCwKLSAg
ICAgICAgICAgIGFsbG9jYXRlQ2VsbDxHZW5lcmF0b3JGcmFtZT4odm0uaGVhcCwgYWxsb2NhdGlv
blNpemVGb3JMb2NhbHMobnVtYmVyT2ZMb2NhbHMpKSkKLSAgICAgICAgR2VuZXJhdG9yRnJhbWUo
dm0sIG51bWJlck9mTG9jYWxzKTsKKyAgICAgICAgICAgIGFsbG9jYXRlQ2VsbDxHZW5lcmF0b3JG
cmFtZT4odm0uaGVhcCwgYWxsb2NhdGlvblNpemVGb3JMb2NhbHMobnVtYmVyT2ZDYWxsZWVMb2Nh
bHMpKSkKKyAgICAgICAgR2VuZXJhdG9yRnJhbWUodm0sIHN0cnVjdHVyZSk7CiAgICAgcmVzdWx0
LT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorR2VuZXJhdG9y
RnJhbWUqIEdlbmVyYXRvckZyYW1lOjpjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBzaXplX3QgbnVt
YmVyT2ZDYWxsZWVMb2NhbHMpCit7CisgICAgcmV0dXJuIGNyZWF0ZShleGVjLT52bSgpLCBleGVj
LT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmdlbmVyYXRvckZyYW1lU3RydWN0dXJlKCksIG51bWJl
ck9mQ2FsbGVlTG9jYWxzKTsKK30KKwogdm9pZCBHZW5lcmF0b3JGcmFtZTo6c2F2ZShFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IEZhc3RCaXRWZWN0b3ImIGxpdmVDYWxsZWVMb2NhbHMpCiB7CiAgICAg
Ly8gT25seSBzYXZlIGNhbGxlZSBsb2NhbHMuCiAgICAgLy8gRXZlcnkgdGltZSBhIGdlbmVyYXRv
ciBpcyBjYWxsZWQgKG9yIHJlc3VtZWQpLCBwYXJhbWV0ZXJzIHNob3VsZCBiZSByZXBsYWNlZC4K
LSAgICBBU1NFUlQobGl2ZUNhbGxlZUxvY2Fscy5udW1CaXRzKCkgPD0gbV9udW1iZXJPZkNhbGxl
ZUxvY2Fscyk7CisgICAgdW5zaWduZWQgZ2VuZXJhdG9yRnJhbWVJbmRleCA9IDA7CiAgICAgbGl2
ZUNhbGxlZUxvY2Fscy5mb3JFYWNoU2V0Qml0KFsmXShzaXplX3QgaW5kZXgpIHsKLSAgICAgICAg
bG9jYWxBdChpbmRleCkuc2V0KGV4ZWMtPnZtKCksIHRoaXMsIGV4ZWMtPnVuY2hlY2tlZFIodmly
dHVhbFJlZ2lzdGVyRm9yTG9jYWwoaW5kZXgpKS5qc1ZhbHVlKCkpOworICAgICAgICBsb2NhbEF0
KGdlbmVyYXRvckZyYW1lSW5kZXgrKykuc2V0KGV4ZWMtPnZtKCksIHRoaXMsIGV4ZWMtPnVuY2hl
Y2tlZFIodmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaW5kZXgpKS5qc1ZhbHVlKCkpOwogICAgIH0p
OworICAgIG1fbnVtYmVyT2ZTYXZlZENhbGxlZUxvY2FscyA9IGdlbmVyYXRvckZyYW1lSW5kZXg7
CiB9CiAKIHZvaWQgR2VuZXJhdG9yRnJhbWU6OnJlc3VtZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IEZhc3RCaXRWZWN0b3ImIGxpdmVDYWxsZWVMb2NhbHMpCiB7CiAgICAgLy8gT25seSByZXN1bWUg
Y2FsbGVlIGxvY2Fscy4KICAgICAvLyBFdmVyeSB0aW1lIGEgZ2VuZXJhdG9yIGlzIGNhbGxlZCAo
b3IgcmVzdW1lZCksIHBhcmFtZXRlcnMgc2hvdWxkIGJlIHJlcGxhY2VkLgorICAgIHVuc2lnbmVk
IGdlbmVyYXRvckZyYW1lSW5kZXggPSAwOwogICAgIGxpdmVDYWxsZWVMb2NhbHMuZm9yRWFjaFNl
dEJpdChbJl0oc2l6ZV90IGluZGV4KSB7Ci0gICAgICAgIGV4ZWMtPnVuY2hlY2tlZFIodmlydHVh
bFJlZ2lzdGVyRm9yTG9jYWwoaW5kZXgpKSA9IGxvY2FsQXQoaW5kZXgpLmdldCgpOwotICAgICAg
ICBsb2NhbEF0KGluZGV4KS5jbGVhcigpOworICAgICAgICBleGVjLT51bmNoZWNrZWRSKHZpcnR1
YWxSZWdpc3RlckZvckxvY2FsKGluZGV4KSkgPSBsb2NhbEF0KGdlbmVyYXRvckZyYW1lSW5kZXgr
KykuZ2V0KCk7CiAgICAgfSk7CisgICAgbV9udW1iZXJPZlNhdmVkQ2FsbGVlTG9jYWxzID0gMDsK
IH0KIAogdm9pZCBHZW5lcmF0b3JGcmFtZTo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNs
b3RWaXNpdG9yJiB2aXNpdG9yKQpAQCAtOTEsNyArOTEsNyBAQCB2b2lkIEdlbmVyYXRvckZyYW1l
Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAg
R2VuZXJhdG9yRnJhbWUqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8R2VuZXJhdG9yRnJhbWUqPihjZWxs
KTsKICAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwogICAgIC8v
IFNpbmNlIG9ubHkgdHJ1ZSBjZWxsIHBvaW50ZXJzIGFyZSBzdG9yZWQgYXMgYSBjZWxsLCB3ZSBj
YW4gc2FmZWx5IG1hcmsgdGhlbS4KLSAgICB2aXNpdG9yLmFwcGVuZFZhbHVlcyh0aGlzT2JqZWN0
LT5sb2NhbHMoKSwgdGhpc09iamVjdC0+bV9udW1iZXJPZkNhbGxlZUxvY2Fscyk7CisgICAgdmlz
aXRvci5hcHBlbmRWYWx1ZXModGhpc09iamVjdC0+bG9jYWxzKCksIHRoaXNPYmplY3QtPm1fbnVt
YmVyT2ZTYXZlZENhbGxlZUxvY2Fscyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJhbWUuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZyYW1lLmgKaW5kZXggM2Q1NDVi
MTQ3ZGQ0YWJmYjJiYmI5YjVhNzE5NGU4Zjc0ODQxYzQ5YS4uMTM5MDQzZTljOGU3ZGU0ZWI0Nzg5
ODRlZmNmMjU1ZDJlYzc3ODMxNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvR2VuZXJhdG9yRnJhbWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9HZW5lcmF0b3JGcmFtZS5oCkBAIC0yNywxMSArMjcsMTIgQEAKICNkZWZpbmUgR2VuZXJhdG9y
RnJhbWVfaAogCiAjaW5jbHVkZSAiSlNDZWxsLmgiCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKICNp
bmNsdWRlIDx3dGYvRmFzdEJpdFZlY3Rvci5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIAotY2xhc3Mg
R2VuZXJhdG9yRnJhbWUgOiBwdWJsaWMgSlNDZWxsIHsKK2NsYXNzIEdlbmVyYXRvckZyYW1lIDog
cHVibGljIEpTTm9uRmluYWxPYmplY3QgewogICAgIGZyaWVuZCBjbGFzcyBKSVQ7CiAjaWYgRU5B
QkxFKERGR19KSVQpCiAgICAgZnJpZW5kIGNsYXNzIERGRzo6U3BlY3VsYXRpdmVKSVQ7CkBAIC0z
OSwxMiArNDAsMTIgQEAgY2xhc3MgR2VuZXJhdG9yRnJhbWUgOiBwdWJsaWMgSlNDZWxsIHsKICNl
bmRpZgogICAgIGZyaWVuZCBjbGFzcyBWTTsKIHB1YmxpYzoKLSAgICB0eXBlZGVmIEpTQ2VsbCBC
YXNlOwotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IFN0cnVjdHVy
ZUlzSW1tb3J0YWwgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKKyAgICB0eXBlZGVmIEpTTm9uRmlu
YWxPYmplY3QgQmFzZTsKIAogICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CiAKLSAgICBzdGF0aWMg
R2VuZXJhdG9yRnJhbWUqIGNyZWF0ZShWTSYsIHNpemVfdCBudW1iZXJPZkNhbGxlZUxvY2Fscyk7
CisgICAgc3RhdGljIEdlbmVyYXRvckZyYW1lKiBjcmVhdGUoRXhlY1N0YXRlKiwgc2l6ZV90IG51
bWJlck9mQ2FsbGVlTG9jYWxzKTsKKyAgICBzdGF0aWMgR2VuZXJhdG9yRnJhbWUqIGNyZWF0ZShW
TSYsIFN0cnVjdHVyZSosIHNpemVfdCBudW1iZXJPZkNhbGxlZUxvY2Fscyk7CiAKICAgICBXcml0
ZUJhcnJpZXJCYXNlPFVua25vd24+KiBsb2NhbHMoKQogICAgIHsKQEAgLTUzLDcgKzU0LDYgQEAg
Y2xhc3MgR2VuZXJhdG9yRnJhbWUgOiBwdWJsaWMgSlNDZWxsIHsKIAogICAgIFdyaXRlQmFycmll
ckJhc2U8VW5rbm93bj4mIGxvY2FsQXQoc2l6ZV90IGluZGV4KQogICAgIHsKLSAgICAgICAgQVNT
RVJUKGluZGV4IDwgbV9udW1iZXJPZkNhbGxlZUxvY2Fscyk7CiAgICAgICAgIHJldHVybiBsb2Nh
bHMoKVtpbmRleF07CiAgICAgfQogCkBAIC02Miw2ICs2MiwxNiBAQCBjbGFzcyBHZW5lcmF0b3JG
cmFtZSA6IHB1YmxpYyBKU0NlbGwgewogICAgICAgICByZXR1cm4gV1RGOjpyb3VuZFVwVG9NdWx0
aXBsZU9mPHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pPihzaXplb2YoR2VuZXJhdG9yRnJh
bWUpKTsKICAgICB9CiAKKyAgICBzdGF0aWMgc2l6ZV90IGxvY2FsT2Zmc2V0KHVuc2lnbmVkIGlu
ZGV4KQorICAgIHsKKyAgICAgICAgcmV0dXJuIG9mZnNldE9mTG9jYWxzKCkgKyBpbmRleCAqIHNp
emVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pOworICAgIH0KKworICAgIHN0YXRpYyBzaXplX3Qg
bnVtYmVyT2ZTYXZlZENhbGxlZUxvY2Fsc09mZnNldCgpCisgICAgeworICAgICAgICByZXR1cm4g
T0JKRUNUX09GRlNFVE9GKEdlbmVyYXRvckZyYW1lLCBtX251bWJlck9mU2F2ZWRDYWxsZWVMb2Nh
bHMpOworICAgIH0KKwogICAgIHN0YXRpYyBzaXplX3QgYWxsb2NhdGlvblNpemVGb3JMb2NhbHMo
dW5zaWduZWQgbnVtYmVyT2ZMb2NhbHMpCiAgICAgewogICAgICAgICByZXR1cm4gb2Zmc2V0T2ZM
b2NhbHMoKSArIG51bWJlck9mTG9jYWxzICogc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPik7
CkBAIC03MywxNCArODMsMTIgQEAgY2xhc3MgR2VuZXJhdG9yRnJhbWUgOiBwdWJsaWMgSlNDZWxs
IHsKICAgICB2b2lkIHJlc3VtZShFeGVjU3RhdGUqLCBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZl
Q2FsbGVlTG9jYWxzKTsKIAogcHJpdmF0ZToKLSAgICBHZW5lcmF0b3JGcmFtZShWTSYsIHNpemVf
dCBudW1iZXJPZkNhbGxlZUxvY2Fscyk7CisgICAgR2VuZXJhdG9yRnJhbWUoVk0mLCBTdHJ1Y3R1
cmUqKTsKIAotICAgIHNpemVfdCBtX251bWJlck9mQ2FsbGVlTG9jYWxzOworICAgIHVpbnQzMl90
IG1fbnVtYmVyT2ZTYXZlZENhbGxlZUxvY2FscyB7IDAgfTsKIAogICAgIGZyaWVuZCBjbGFzcyBM
TEludE9mZnNldHNFeHRyYWN0b3I7CiAKLSAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7Ci0K
IHByb3RlY3RlZDoKICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RW
aXNpdG9yJik7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3QuY3BwCmluZGV4IDc2OWEzZWZiMzA0MzhkY2Q5ZGRlNDQyZGM4ODk0YTFmMDM4MmE1
MDQuLjhjYjg0YWJlNWY4NzM5YTAxOGU2MmVhNDhmNDcxNDQ0Nzk1NTFkM2QgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTUwLDYg
KzUwLDcgQEAKICNpbmNsdWRlICJFcnJvclByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkZ1bmN0aW9u
Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJGdW5jdGlvblByb3RvdHlwZS5oIgorI2luY2x1ZGUg
IkdlbmVyYXRvckZyYW1lLmgiCiAjaW5jbHVkZSAiR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rv
ci5oIgogI2luY2x1ZGUgIkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAi
R2VuZXJhdG9yUHJvdG90eXBlLmgiCkBAIC0zODgsNiArMzg5LDcgQEAgdm9pZCBKU0dsb2JhbE9i
amVjdDo6aW5pdChWTSYgdm0pCiAgICAgCiAgICAgRk9SX0VBQ0hfQlVJTFRJTl9ERVJJVkVEX0lU
RVJBVE9SX1RZUEUoQ1JFQVRFX1BST1RPVFlQRV9GT1JfREVSSVZFRF9JVEVSQVRPUl9UWVBFKQog
ICAgIG1fcHJvcGVydHlOYW1lSXRlcmF0b3JTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBKU1Byb3Bl
cnR5TmFtZUl0ZXJhdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1faXRlcmF0b3JQcm90
b3R5cGUuZ2V0KCkpKTsKKyAgICBtX2dlbmVyYXRvckZyYW1lU3RydWN0dXJlLnNldCh2bSwgdGhp
cywgR2VuZXJhdG9yRnJhbWU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywganNOdWxsKCkpKTsK
ICAgICBtX2dlbmVyYXRvclByb3RvdHlwZS5zZXQodm0sIHRoaXMsIEdlbmVyYXRvclByb3RvdHlw
ZTo6Y3JlYXRlKHZtLCB0aGlzLCBHZW5lcmF0b3JQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2
bSwgdGhpcywgbV9pdGVyYXRvclByb3RvdHlwZS5nZXQoKSkpKTsKICAgICAKICN1bmRlZiBDUkVB
VEVfUFJPVE9UWVBFX0ZPUl9ERVJJVkVEX0lURVJBVE9SX1RZUEUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IDM4NzIyMWI5MzMzNDgwNjAy
OWIyZjMwMTA0N2RmNTMzMWNkNGVkYzguLjE5MGM5MzMwMmQyZGM2YTcyNWI5ZDhhYTViYTk1NjQ1
NDlhMzMxNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuaApAQCAtMjU0LDYgKzI1NCw3IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGlj
IEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+
IG1fY2FsbGJhY2tGdW5jdGlvblN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJl
PiBtX2NhbGxiYWNrT2JqZWN0U3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+
IG1fcHJvcGVydHlOYW1lSXRlcmF0b3JTdHJ1Y3R1cmU7CisgICAgV3JpdGVCYXJyaWVyPFN0cnVj
dHVyZT4gbV9nZW5lcmF0b3JGcmFtZVN0cnVjdHVyZTsKICNpZiBKU0NfT0JKQ19BUElfRU5BQkxF
RAogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fb2JqY0NhbGxiYWNrRnVuY3Rpb25TdHJ1
Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9vYmpjV3JhcHBlck9iamVjdFN0
cnVjdHVyZTsKQEAgLTUwMCw2ICs1MDEsNyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1Ymxp
YyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBTdHJ1Y3R1cmUqIGNhbGxiYWNrRnVu
Y3Rpb25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2NhbGxiYWNrRnVuY3Rpb25TdHJ1Y3R1
cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIGNhbGxiYWNrT2JqZWN0U3RydWN0dXJlKCkgY29u
c3QgeyByZXR1cm4gbV9jYWxsYmFja09iamVjdFN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVj
dHVyZSogcHJvcGVydHlOYW1lSXRlcmF0b3JTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3By
b3BlcnR5TmFtZUl0ZXJhdG9yU3RydWN0dXJlLmdldCgpOyB9CisgICAgU3RydWN0dXJlKiBnZW5l
cmF0b3JGcmFtZVN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fZ2VuZXJhdG9yRnJhbWVTdHJ1
Y3R1cmUuZ2V0KCk7IH0KICNpZiBKU0NfT0JKQ19BUElfRU5BQkxFRAogICAgIFN0cnVjdHVyZSog
b2JqY0NhbGxiYWNrRnVuY3Rpb25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX29iamNDYWxs
YmFja0Z1bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBvYmpjV3JhcHBl
ck9iamVjdFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fb2JqY1dyYXBwZXJPYmplY3RTdHJ1
Y3R1cmUuZ2V0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1ZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCBkMDQy
YzIwYmYzZDI0NWEzMTIyNTk0MGNkYmFiMzI4Y2RkNjIyMzM4Li5mYmMxODc1YzFkYjlhOGRkNjg0
M2E5NGJmZmVjYjQyYjM3ZTZiYzViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9WTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3Bw
CkBAIC0yNDYsNyArMjQ2LDYgQEAgc3RhdGljIGJvb2wgZW5hYmxlQXNzZW1ibGVyKEV4ZWN1dGFi
bGVBbGxvY2F0b3ImIGV4ZWN1dGFibGVBbGxvY2F0b3IpCiAgICAgaW5mZXJyZWRUeXBlU3RydWN0
dXJlLnNldCgqdGhpcywgSW5mZXJyZWRUeXBlOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpz
TnVsbCgpKSk7CiAgICAgaW5mZXJyZWRUeXBlVGFibGVTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBJbmZl
cnJlZFR5cGVUYWJsZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAg
IGZ1bmN0aW9uUmFyZURhdGFTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBGdW5jdGlvblJhcmVEYXRhOjpj
cmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7Ci0gICAgZ2VuZXJhdG9yRnJhbWVT
dHJ1Y3R1cmUuc2V0KCp0aGlzLCBHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlz
LCAwLCBqc051bGwoKSkpOwogICAgIGV4Y2VwdGlvblN0cnVjdHVyZS5zZXQoKnRoaXMsIEV4Y2Vw
dGlvbjo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIHByb21pc2VE
ZWZlcnJlZFN0cnVjdHVyZS5zZXQoKnRoaXMsIEpTUHJvbWlzZURlZmVycmVkOjpjcmVhdGVTdHJ1
Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgaW50ZXJuYWxQcm9taXNlRGVmZXJyZWRT
dHJ1Y3R1cmUuc2V0KCp0aGlzLCBKU0ludGVybmFsUHJvbWlzZURlZmVycmVkOjpjcmVhdGVTdHJ1
Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaApp
bmRleCA1MjhlYzU5YzRmZjlmMGM5ODQ0MGMyZGM2NGIyMjVjNjQxNTJhNmMxLi4xN2QxNDlhYjg5
OWE5ZWUwM2Y1OGUzNDllYWQ0MzQ4OGM4NWI0MzY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1ZNLmgKQEAgLTMxMiw3ICszMTIsNiBAQCBjbGFzcyBWTSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVm
Q291bnRlZDxWTT4gewogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGluZmVycmVkVHlwZVN0cnVjdHVy
ZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBpbmZlcnJlZFR5cGVUYWJsZVN0cnVjdHVyZTsKICAg
ICBTdHJvbmc8U3RydWN0dXJlPiBmdW5jdGlvblJhcmVEYXRhU3RydWN0dXJlOwotICAgIFN0cm9u
ZzxTdHJ1Y3R1cmU+IGdlbmVyYXRvckZyYW1lU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1
cmU+IGV4Y2VwdGlvblN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBwcm9taXNlRGVm
ZXJyZWRTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gaW50ZXJuYWxQcm9taXNlRGVm
ZXJyZWRTdHJ1Y3R1cmU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>268960</attachid>
            <date>2016-01-14 07:25:41 -0800</date>
            <delta_ts>2016-01-14 10:06:42 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-152723-20160115002510.patch</filename>
            <type>text/plain</type>
            <size>74162</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk1MDU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
ZDVkMzdhNWE2NzE2ZmQyMWY5YzRiYzhlZDg0OGZkNTlhZjU1NTgzLi44NWI3ZWExODA4YjU2MzQ0
NzdkYjUzMGIwZGJmMWVlNDBkYTNkNTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMDggQEAKKzIwMTYtMDEtMTQgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgQ3JlYXRlIEdlbmVyYXRvckZyYW1lIHdpdGggdGhlIGJ5dGVjb2Rl
IG9wX25ld19nZW5lcmF0b3JfZnJhbWUgYW5kIG1ha2Ugb3Bfc2F2ZSAvIG9wX3Jlc3VtZSBERkcv
RlRMIGNhcGFibGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1MjcyMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogYnVpbHRpbnMvR2VuZXJhdG9yUHJvdG90eXBlLmpzOgorICAgICAgICAoZ2VuZXJhdG9y
UmVzdW1lKToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbjoKKyAgICAgICAg
KiBieXRlY29kZS9CeXRlY29kZVVzZURlZi5oOgorICAgICAgICAoSlNDOjpjb21wdXRlVXNlc0Zv
ckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZURlZnNGb3JCeXRlY29kZU9m
ZnNldCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6
Q29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmlz
aENyZWF0aW9uKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3Bw
OgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0dlbmVyYXRvckZyYW1lKToK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRTYXZlKToKKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXN1bWUpOgorICAgICAgICAqIGJ5dGVjb21waWxl
ci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6
Z2VuZXJhdG9yRnJhbWVSZWdpc3Rlcik6CisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0SW50ZXJw
cmV0ZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RJbnRlcnByZXRlcjxB
YnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKToKKyAgICAgICAgKiBkZmcvREZHQnl0
ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpCeXRl
Q29kZVBhcnNlcik6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxv
Y2spOgorICAgICAgICAqIGRmZy9ERkdDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OmNhcGFiaWxpdHlMZXZlbCk6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJpemUuaDoKKyAg
ICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAgICAgICAgKiBkZmcvREZHQ2xvYmJlcnNF
eGl0U3RhdGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmNsb2JiZXJzRXhpdFN0YXRlKToKKyAg
ICAgICAgKiBkZmcvREZHRG9lc0dDLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpkb2VzR0MpOgor
ICAgICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1
cFBoYXNlOjpmaXh1cE5vZGUpOgorICAgICAgICAqIGRmZy9ERkdNYXlFeGl0LmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjptYXlFeGl0KToKKyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAg
ICAoSlNDOjpERkc6Ok5vZGU6Omhhc0dlbmVyYXRvckZyYW1lU2l6ZSk6CisgICAgICAgIChKU0M6
OkRGRzo6Tm9kZTo6Z2VuZXJhdG9yRnJhbWVTaXplKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2Rl
OjpoYXNHZW5lcmF0b3JGcmFtZUluZGV4KToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpnZW5l
cmF0b3JGcmFtZUluZGV4KToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNTYXZlZFZhcmlh
YmxlQWNjZXNzRGF0YSk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6c2F2ZWRWYXJpYWJsZUFj
Y2Vzc0RhdGEpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc0dlbmVyYXRvckZyYW1lTG9j
YWxzKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpnZW5lcmF0b3JGcmFtZUxvY2Fscyk6Cisg
ICAgICAgICogZGZnL0RGR05vZGVUeXBlLmg6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMu
Y3BwOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmg6CisgICAgICAgICogZGZnL0RGR1By
ZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpQcmVkaWN0
aW9uUHJvcGFnYXRpb25QaGFzZTo6cHJvcGFnYXRlKToKKyAgICAgICAgKiBkZmcvREZHU2FmZVRv
RXhlY3V0ZS5oOgorICAgICAgICAoSlNDOjpERkc6OnNhZmVUb0V4ZWN1dGUpOgorICAgICAgICAq
IGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVOZXdHZW5lcmF0b3JGcmFtZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1
bGF0aXZlSklULmg6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBk
ZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25Q
aGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlLmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpTdHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFzZTo6cnVuKToK
KyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGls
ZU1haW5QYXNzKToKKyAgICAgICAgKiBqaXQvSklULmg6CisgICAgICAgICogaml0L0pJVE9wY29k
ZXMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcmVzdW1lX2Zyb21fZ2VuZXJhdG9y
X2ZyYW1lKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2NsZWFyX2dlbmVyYXRvcl9mcmFt
ZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9uZXdfZ2VuZXJhdG9yX2ZyYW1lKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0X29wX25vcCk6CisgICAgICAgICogbGxpbnQvTExJbnRPZmZz
ZXRzRXh0cmFjdG9yLmNwcDoKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFz
bToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtOgorICAgICAgICAq
IHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFy
c2VJbm5lcik6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUdlbmVyYXRv
ckZ1bmN0aW9uU291cmNlRWxlbWVudHMpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBl
Pjo6Y3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyk6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5o
OgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6
U0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmg6Cisg
ICAgICAgICogcnVudGltZS9HZW5lcmF0b3JGcmFtZS5jcHA6CisgICAgICAgIChKU0M6OkdlbmVy
YXRvckZyYW1lOjpHZW5lcmF0b3JGcmFtZSk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1l
OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6Y3JlYXRl
KToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OnNhdmUpOgorICAgICAgICAoSlNDOjpH
ZW5lcmF0b3JGcmFtZTo6cmVzdW1lKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OnZp
c2l0Q2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6ZmluaXNoQ3JlYXRp
b24pOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJhdG9yRnJhbWUuaDoKKyAgICAg
ICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OmxvY2FsT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6R2Vu
ZXJhdG9yRnJhbWU6Om51bWJlck9mU2F2ZWRDYWxsZWVMb2NhbHNPZmZzZXQpOgorICAgICAgICAo
SlNDOjpHZW5lcmF0b3JGcmFtZTo6bG9jYWxBdCk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojppbml0
KToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpT
R2xvYmFsT2JqZWN0OjpnZW5lcmF0b3JGcmFtZVN0cnVjdHVyZSk6CisgICAgICAgICogcnVudGlt
ZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpWTSk6IERlbGV0ZWQuCisgICAgICAgICogcnVu
dGltZS9WTS5oOgorCiAyMDE2LTAxLTEzICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFA
aWdhbGlhLmNvbT4KIAogICAgICAgICBbQ01ha2VdIERvIG5vdCB1c2UgTExWTSBzdGF0aWMgbGli
cmFyaWVzIGZvciBGVEwgSklUCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVp
bHRpbnMvR2VuZXJhdG9yUHJvdG90eXBlLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0
aW5zL0dlbmVyYXRvclByb3RvdHlwZS5qcwppbmRleCBhM2JiYzM1MzRhZTA1MmY0ZDZmYTI1YmRl
NzAzYzkzZDNhNzk1ZTExLi40OWRkYmY5Yzg0NjkzMzA2NTg3MTFmMThlNzIxNDliYzk4MjJkYTM0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvR2VuZXJhdG9yUHJv
dG90eXBlLmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9HZW5lcmF0b3JQ
cm90b3R5cGUuanMKQEAgLTU4LDcgKzU4LDcgQEAgZnVuY3Rpb24gZ2VuZXJhdG9yUmVzdW1lKGdl
bmVyYXRvciwgc2VudFZhbHVlLCByZXN1bWVNb2RlKQogICAgIH0gZWxzZSB7CiAgICAgICAgIHRy
eSB7CiAgICAgICAgICAgICBnZW5lcmF0b3IuQGdlbmVyYXRvclN0YXRlID0gRXhlY3V0aW5nOwot
ICAgICAgICAgICAgdmFsdWUgPSBnZW5lcmF0b3IuQGdlbmVyYXRvck5leHQuQGNhbGwoZ2VuZXJh
dG9yLkBnZW5lcmF0b3JUaGlzLCBnZW5lcmF0b3IsIHN0YXRlLCBzZW50VmFsdWUsIHJlc3VtZU1v
ZGUpOworICAgICAgICAgICAgdmFsdWUgPSBnZW5lcmF0b3IuQGdlbmVyYXRvck5leHQuQGNhbGwo
Z2VuZXJhdG9yLkBnZW5lcmF0b3JUaGlzLCBnZW5lcmF0b3IsIHN0YXRlLCBzZW50VmFsdWUsIHJl
c3VtZU1vZGUsIGdlbmVyYXRvci5AZ2VuZXJhdG9yRnJhbWUpOwogICAgICAgICAgICAgaWYgKGdl
bmVyYXRvci5AZ2VuZXJhdG9yU3RhdGUgPT09IEV4ZWN1dGluZykgewogICAgICAgICAgICAgICAg
IGdlbmVyYXRvci5AZ2VuZXJhdG9yU3RhdGUgPSBDb21wbGV0ZWQ7CiAgICAgICAgICAgICAgICAg
ZG9uZSA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Qnl0ZWNvZGVMaXN0Lmpzb24gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVMaXN0Lmpzb24KaW5kZXggMDUzYjhkYzliODY0ZjFiODZiNGNlYzdhYTYwMWY3Y2UyZjAzZjJl
NC4uMDcxZTIxOTA2NWQzYTVlZDUzN2VkODAxZmMwZWU5MWYwM2RkNTdjNSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgpAQCAtMTYsNiAr
MTYsNyBAQAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfbmV3X2FycmF5X3dpdGhfc2l6ZSIs
ICJsZW5ndGgiIDogNCB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfbmV3X2FycmF5X2J1
ZmZlciIsICJsZW5ndGgiIDogNSB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfbmV3X3Jl
Z2V4cCIsICJsZW5ndGgiIDogMyB9LAorICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfbmV3X2dl
bmVyYXRvcl9mcmFtZSIsICJsZW5ndGgiIDogMyB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAi
b3BfbW92IiwgImxlbmd0aCIgOiAzIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9ub3Qi
LCAibGVuZ3RoIiA6IDMgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2VxIiwgImxlbmd0
aCIgOiA0IH0sCkBAIC0xMzQsNyArMTM1LDEwIEBACiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJv
cF9jb3B5X3Jlc3QiLCAibGVuZ3RoIjogNCB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3Bf
Z2V0X3Jlc3RfbGVuZ3RoIiwgImxlbmd0aCI6IDMgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDog
Im9wX3NhdmUiLCAibGVuZ3RoIiA6IDQgfSwKLSAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX3Jl
c3VtZSIsICJsZW5ndGgiIDogMyB9LAorICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfcmVzdW1l
IiwgImxlbmd0aCIgOiA0IH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9yZXN1bWVfZnJv
bV9nZW5lcmF0b3JfZnJhbWUiLCAibGVuZ3RoIiA6IDQgfSwKKyAgICAgICAgICAgIHsgIm5hbWUi
IDogIm9wX2NsZWFyX2dlbmVyYXRvcl9mcmFtZSIsICJsZW5ndGgiIDogMiB9LAorICAgICAgICAg
ICAgeyAibmFtZSIgOiAib3Bfbm9wIiwgImxlbmd0aCIgOiAxIH0sCiAgICAgICAgICAgICB7ICJu
YW1lIiA6ICJvcF93YXRjaGRvZyIsICJsZW5ndGgiIDogMSB9CiAgICAgICAgIF0KICAgICB9LApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVm
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaAppbmRl
eCA4MDExMTRjMzcyYTI3N2Y2ZTE3NzA5YjkwYmUyMDdjOGY5OWJlODJkLi5jZTcwNGI0NzQ2ZWQx
YzA5YThmMDM0YWMyMDc3Yzg5ZmViMWM1MzJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaApAQCAtNTUsNiArNTUsOCBAQCB2b2lkIGNvbXB1
dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoCiAgICAgY2FzZSBvcF9jcmVhdGVfb3V0X29mX2JhbmRf
YXJndW1lbnRzOgogICAgIGNhc2Ugb3BfZ2V0X3Jlc3RfbGVuZ3RoOgogICAgIGNhc2Ugb3Bfd2F0
Y2hkb2c6CisgICAgY2FzZSBvcF9uZXdfZ2VuZXJhdG9yX2ZyYW1lOgorICAgIGNhc2Ugb3Bfbm9w
OgogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBvcF9hc3NlcnQ6CiAgICAgY2FzZSBvcF9nZXRf
c2NvcGU6CkBAIC03Miw3ICs3NCw4IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNl
dCgKICAgICBjYXNlIG9wX2puZXFfbnVsbDoKICAgICBjYXNlIG9wX2RlYzoKICAgICBjYXNlIG9w
X2luYzoKLSAgICBjYXNlIG9wX3Jlc3VtZTogeworICAgIGNhc2Ugb3BfcmVzdW1lOgorICAgIGNh
c2Ugb3BfY2xlYXJfZ2VuZXJhdG9yX2ZyYW1lOiB7CiAgICAgICAgIEFTU0VSVChvcGNvZGVMZW5n
dGhzW29wY29kZUlEXSA+PSAxKTsKICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0
aW9uLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKTsKICAgICAgICAgcmV0dXJu
OwpAQCAtMTY1LDcgKzE2OCw4IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCgK
ICAgICBjYXNlIG9wX25ld19nZW5lcmF0b3JfZnVuYzoKICAgICBjYXNlIG9wX2dldF9wYXJlbnRf
c2NvcGU6CiAgICAgY2FzZSBvcF9jcmVhdGVfc2NvcGVkX2FyZ3VtZW50czoKLSAgICBjYXNlIG9w
X2dldF9mcm9tX2FyZ3VtZW50czogeworICAgIGNhc2Ugb3BfZ2V0X2Zyb21fYXJndW1lbnRzOgor
ICAgIGNhc2Ugb3BfcmVzdW1lX2Zyb21fZ2VuZXJhdG9yX2ZyYW1lOiB7CiAgICAgICAgIEFTU0VS
VChvcGNvZGVMZW5ndGhzW29wY29kZUlEXSA+PSAyKTsKICAgICAgICAgZnVuY3Rvcihjb2RlQmxv
Y2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKTsKICAg
ICAgICAgcmV0dXJuOwpAQCAtMzIzLDYgKzMyNyw4IEBAIHZvaWQgY29tcHV0ZURlZnNGb3JCeXRl
Y29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9j
CiAgICAgY2FzZSBvcF9wcm9maWxlX2NvbnRyb2xfZmxvdzoKICAgICBjYXNlIG9wX3B1dF90b19h
cmd1bWVudHM6CiAgICAgY2FzZSBvcF93YXRjaGRvZzoKKyAgICBjYXNlIG9wX2NsZWFyX2dlbmVy
YXRvcl9mcmFtZToKKyAgICBjYXNlIG9wX25vcDoKICNkZWZpbmUgTExJTlRfSEVMUEVSX09QQ09E
RVMob3Bjb2RlLCBsZW5ndGgpIGNhc2Ugb3Bjb2RlOgogICAgICAgICBGT1JfRUFDSF9MTElOVF9P
UENPREVfRVhURU5TSU9OKExMSU5UX0hFTFBFUl9PUENPREVTKTsKICN1bmRlZiBMTElOVF9IRUxQ
RVJfT1BDT0RFUwpAQCAtNDE1LDcgKzQyMSw5IEBAIHZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29k
ZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jCiAg
ICAgY2FzZSBvcF9kZWxfYnlfdmFsOgogICAgIGNhc2Ugb3BfdW5zaWduZWQ6CiAgICAgY2FzZSBv
cF9nZXRfZnJvbV9hcmd1bWVudHM6IAotICAgIGNhc2Ugb3BfZ2V0X3Jlc3RfbGVuZ3RoOiB7Cisg
ICAgY2FzZSBvcF9nZXRfcmVzdF9sZW5ndGg6CisgICAgY2FzZSBvcF9uZXdfZ2VuZXJhdG9yX2Zy
YW1lOgorICAgIGNhc2Ugb3BfcmVzdW1lX2Zyb21fZ2VuZXJhdG9yX2ZyYW1lOiB7CiAgICAgICAg
IEFTU0VSVChvcGNvZGVMZW5ndGhzW29wY29kZUlEXSA+IDEpOwogICAgICAgICBmdW5jdG9yKGNv
ZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBpbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQp
OwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suY3BwCmluZGV4IDU5MDVlOTE4M2M4ZjEyNjY0ZTJiYTNkZDI5YTVjNDY1Njc2OGRjMDMu
LmVkNGExN2UwMTM0ZWJjNTgxYzc4NGNhYTYxZDA5NGEzNzBhMjBjZGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC0xNTU3LDI0ICsxNTU3LDQ5
IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoCiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogICAgICAgICBjYXNlIG9wX3NhdmU6IHsKLSAgICAgICAgICAgIGludCBnZW5lcmF0
b3IgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIGludCBmcmFtZSA9ICgrK2l0KS0+
dS5vcGVyYW5kOwogICAgICAgICAgICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0g
KCsraXQpLT51LnVuc2lnbmVkVmFsdWU7CiAgICAgICAgICAgICBpbnQgb2Zmc2V0ID0gKCsraXQp
LT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlbmVzcyA9
IG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGRbbGl2ZUNhbGxlZUxvY2Fsc0lu
ZGV4XTsKICAgICAgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9u
LCBpdCwgInNhdmUiKTsKLSAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAiLCByZWdpc3Rlck5h
bWUoZ2VuZXJhdG9yKS5kYXRhKCkpOworICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICIsIHJl
Z2lzdGVyTmFtZShmcmFtZSkuZGF0YSgpKTsKICAgICAgICAgICAgIGxpdmVuZXNzLmR1bXAob3V0
KTsKICAgICAgICAgICAgIG91dC5wcmludGYoIihAbGl2ZSUxdSksICVkKC0+JWQpIiwgbGl2ZUNh
bGxlZUxvY2Fsc0luZGV4LCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfcmVzdW1lOiB7Ci0gICAgICAgICAg
ICBpbnQgZ2VuZXJhdG9yID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBpbnQgZnJh
bWUgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIHVuc2lnbmVkIGxpdmVDYWxsZWVM
b2NhbHNJbmRleCA9ICgrK2l0KS0+dS51bnNpZ25lZFZhbHVlOworICAgICAgICAgICAgdW5zaWdu
ZWQgbWF4TGl2ZUNhbGxlZXMgPSAoKytpdCktPnUudW5zaWduZWRWYWx1ZTsKICAgICAgICAgICAg
IGNvbnN0IEZhc3RCaXRWZWN0b3ImIGxpdmVuZXNzID0gbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVl
TG9jYWxzQXRZaWVsZFtsaXZlQ2FsbGVlTG9jYWxzSW5kZXhdOwogICAgICAgICAgICAgcHJpbnRM
b2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAicmVzdW1lIik7Ci0gICAgICAg
ICAgICBvdXQucHJpbnRmKCIlcywgIiwgcmVnaXN0ZXJOYW1lKGdlbmVyYXRvcikuZGF0YSgpKTsK
KyAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAiLCByZWdpc3Rlck5hbWUoZnJhbWUpLmRhdGEo
KSk7CiAgICAgICAgICAgICBsaXZlbmVzcy5kdW1wKG91dCk7Ci0gICAgICAgICAgICBvdXQucHJp
bnRmKCIoQGxpdmUlMXUpIiwgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4KTsKKyAgICAgICAgICAgIG91
dC5wcmludGYoIihAbGl2ZSUxdSksICV1IiwgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4LCBtYXhMaXZl
Q2FsbGVlcyk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIG9w
X3Jlc3VtZV9mcm9tX2dlbmVyYXRvcl9mcmFtZTogeworICAgICAgICAgICAgaW50IGRzdCA9ICgr
K2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgaW50IGZyYW1lID0gKCsraXQpLT51Lm9wZXJh
bmQ7CisgICAgICAgICAgICB1bnNpZ25lZCBpbmRleCA9ICgrK2l0KS0+dS51bnNpZ25lZFZhbHVl
OworICAgICAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0
LCAicmVzdW1lX2Zyb21fZ2VuZXJhdG9yX2ZyYW1lIik7CisgICAgICAgICAgICBvdXQucHJpbnRm
KCIlcywgJXMsICV1IiwgcmVnaXN0ZXJOYW1lKGRzdCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZnJh
bWUpLmRhdGEoKSwgaW5kZXgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAg
ICAgY2FzZSBvcF9jbGVhcl9nZW5lcmF0b3JfZnJhbWU6IHsKKyAgICAgICAgICAgIGludCBmcmFt
ZSA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgcHJpbnRMb2NhdGlvbk9wQW5kUmVn
aXN0ZXJPcGVyYW5kKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAiY2xlYXJfZ2VuZXJhdG9yX2Zy
YW1lIiwgZnJhbWUpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2Fz
ZSBvcF9uZXdfZ2VuZXJhdG9yX2ZyYW1lOiB7CisgICAgICAgICAgICBpbnQgZHN0ID0gKCsraXQp
LT51Lm9wZXJhbmQ7CisgICAgICAgICAgICB1bnNpZ25lZCBnZW5lcmF0b3JGcmFtZVNpemUgPSAo
KytpdCktPnUudW5zaWduZWRWYWx1ZTsKKyAgICAgICAgICAgIHByaW50TG9jYXRpb25PcEFuZFJl
Z2lzdGVyT3BlcmFuZChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgIm5ld19nZW5lcmF0b3JfZnJh
bWUiLCBkc3QpOworICAgICAgICAgICAgb3V0LnByaW50ZigiICV1IiwgZ2VuZXJhdG9yRnJhbWVT
aXplKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2Ugb3Bfbm9w
OiB7CisgICAgICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwg
aXQsICJub3AiKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ug
b3BfYXNzZXJ0OiB7CkBAIC0xOTgwLDkgKzIwMDUsMTAgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmlz
aENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxp
bmsKICAgICBIYXNoU2V0PEpTTW9kdWxlRW52aXJvbm1lbnQqPiBzdHJvbmdseVJlZmVyZW5jZWRN
b2R1bGVFbnZpcm9ubWVudHM7CiAKICAgICAvLyBCb29ra2VlcCB0aGUgbWVyZ2UgcG9pbnQgYnl0
ZWNvZGUgb2Zmc2V0cy4KLSAgICBWZWN0b3I8c2l6ZV90PiBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZz
ZXRzOworICAgIFZlY3RvcjxzdGQ6OnBhaXI8c2l6ZV90LCBzaXplX3Q+PiBtZXJnZVBvaW50Qnl0
ZWNvZGVPZmZzZXRzOwogCiAgICAgUmVmQ291bnRlZEFycmF5PEluc3RydWN0aW9uPiBpbnN0cnVj
dGlvbnMoaW5zdHJ1Y3Rpb25Db3VudCk7CisgICAgdW5zaWduZWQgbmV3R2VuZXJhdG9yRnJhbWVJ
bnN0cnVjdGlvbk9mZnNldCA9IDA7CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyAhaW5zdHJ1
Y3Rpb25SZWFkZXIuYXRFbmQoKTsgKSB7CiAgICAgICAgIGNvbnN0IFVubGlua2VkSW5zdHJ1Y3Rp
b24qIHBjID0gaW5zdHJ1Y3Rpb25SZWFkZXIubmV4dCgpOwpAQCAtMjI3NSw3ICsyMzAxLDIwIEBA
IHZvaWQgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUq
IG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAgICAgICAgICBpbnQgb2Zmc2V0ID0gcGNbM10u
dS5vcGVyYW5kOwogICAgICAgICAgICAgaWYgKGxpdmVDYWxsZWVMb2NhbHNJbmRleCA+PSBtZXJn
ZVBvaW50Qnl0ZWNvZGVPZmZzZXRzLnNpemUoKSkKICAgICAgICAgICAgICAgICBtZXJnZVBvaW50
Qnl0ZWNvZGVPZmZzZXRzLnJlc2l6ZShsaXZlQ2FsbGVlTG9jYWxzSW5kZXggKyAxKTsKLSAgICAg
ICAgICAgIG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldHNbbGl2ZUNhbGxlZUxvY2Fsc0luZGV4XSA9
IGkgKyBvZmZzZXQ7CisgICAgICAgICAgICBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXRzW2xpdmVD
YWxsZWVMb2NhbHNJbmRleF0uc2Vjb25kID0gaSArIG9mZnNldDsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBvcF9yZXN1bWU6IHsKKyAgICAgICAgICAgIHVu
c2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9IHBjWzJdLnUuaW5kZXg7CisgICAgICAgICAg
ICBpZiAobGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID49IG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldHMu
c2l6ZSgpKQorICAgICAgICAgICAgICAgIG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldHMucmVzaXpl
KGxpdmVDYWxsZWVMb2NhbHNJbmRleCArIDEpOworICAgICAgICAgICAgbWVyZ2VQb2ludEJ5dGVj
b2RlT2Zmc2V0c1tsaXZlQ2FsbGVlTG9jYWxzSW5kZXhdLmZpcnN0ID0gaTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBvcF9uZXdfZ2VuZXJhdG9yX2ZyYW1l
OiB7CisgICAgICAgICAgICBuZXdHZW5lcmF0b3JGcmFtZUluc3RydWN0aW9uT2Zmc2V0ID0gaTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKQEAgLTIyOTIsMTYgKzIzMzEsNDEgQEAg
dm9pZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSog
b3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKIAogICAgIC8vIFBlcmZvcm0gYnl0ZWNvZGUgbGl2ZW5l
c3MgYW5hbHlzaXMgdG8gZGV0ZXJtaW5lIHdoaWNoIGxvY2FscyBhcmUgbGl2ZSBhbmQgc2hvdWxk
IGJlIHJlc3VtZWQgd2hlbiBleGVjdXRpbmcgb3BfcmVzdW1lLgogICAgIGlmICh1bmxpbmtlZENv
ZGVCbG9jay0+cGFyc2VNb2RlKCkgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JCb2R5TW9k
ZSkgeworICAgICAgICB1bnNpZ25lZCBtYXhHZW5lcmF0b3JGcmFtZVNpemUgPSAwOwogICAgICAg
ICBpZiAoc2l6ZV90IGNvdW50ID0gbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0cy5zaXplKCkpIHsK
ICAgICAgICAgICAgIGNyZWF0ZVJhcmVEYXRhSWZOZWNlc3NhcnkoKTsKICAgICAgICAgICAgIEJ5
dGVjb2RlTGl2ZW5lc3NBbmFseXNpcyBsaXZlbmVzcyh0aGlzKTsKICAgICAgICAgICAgIG1fcmFy
ZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQuZ3Jvdyhjb3VudCk7CiAgICAgICAgICAg
ICBzaXplX3QgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gMDsKLSAgICAgICAgICAgIGZvciAoc2l6
ZV90IGJ5dGVjb2RlT2Zmc2V0IDogbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0cykgewotICAgICAg
ICAgICAgICAgIG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGRbbGl2ZUNhbGxl
ZUxvY2Fsc0luZGV4XSA9IGxpdmVuZXNzLmdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQo
Ynl0ZWNvZGVPZmZzZXQpOworICAgICAgICAgICAgZm9yIChzdGQ6OnBhaXI8c2l6ZV90LCBzaXpl
X3Q+IHBhaXIgOiBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXRzKSB7CisgICAgICAgICAgICAgICAg
c2l6ZV90IHJlc3VtZVBvaW50Qnl0ZWNvZGVPZmZzZXQgPSBwYWlyLmZpcnN0OworICAgICAgICAg
ICAgICAgIHNpemVfdCBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXQgPSBwYWlyLnNlY29uZDsKKyAg
ICAgICAgICAgICAgICBGYXN0Qml0VmVjdG9yIGxpdmVuZXNzVmVjdG9yID0gbGl2ZW5lc3MuZ2V0
TGl2ZW5lc3NJbmZvQXRCeXRlY29kZU9mZnNldChtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXQpOwor
ICAgICAgICAgICAgICAgIHNpemVfdCBsaXZlTG9jYWxzID0gbGl2ZW5lc3NWZWN0b3IuYml0Q291
bnQoKTsKKyAgICAgICAgICAgICAgICBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlp
ZWxkW2xpdmVDYWxsZWVMb2NhbHNJbmRleF0gPSBsaXZlbmVzc1ZlY3RvcjsKKyAgICAgICAgICAg
ICAgICBtYXhHZW5lcmF0b3JGcmFtZVNpemUgPSBzdGQ6Om1heDx1bnNpZ25lZD4obWF4R2VuZXJh
dG9yRnJhbWVTaXplLCBsaXZlTG9jYWxzKTsKICAgICAgICAgICAgICAgICArK2xpdmVDYWxsZWVM
b2NhbHNJbmRleDsKKworICAgICAgICAgICAgICAgIC8vIFBhdGNoIG9wX3Jlc3VtZSB3aXRoIGFj
dHVhbCBvcHMuCisgICAgICAgICAgICAgICAgaW50IGdlbmVyYXRvckZyYW1lSW5kZXggPSBpbnN0
cnVjdGlvbnNbcmVzdW1lUG9pbnRCeXRlY29kZU9mZnNldCArIDFdLnUub3BlcmFuZDsKKyAgICAg
ICAgICAgICAgICBpZiAoIWxpdmVMb2NhbHMpIHsKKyAgICAgICAgICAgICAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCA0OyArK2kpCisgICAgICAgICAgICAgICAgICAgICAgICBpbnN0cnVj
dGlvbnNbcmVzdW1lUG9pbnRCeXRlY29kZU9mZnNldCArIGldID0gdm0uaW50ZXJwcmV0ZXItPmdl
dE9wY29kZShvcF9ub3ApOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg
ICAgICAgIHNpemVfdCBpID0gMDsKKyAgICAgICAgICAgICAgICAgICAgbGl2ZW5lc3NWZWN0b3Iu
Zm9yRWFjaFNldEJpdChbJl0odW5zaWduZWQgbG9jYWwpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCBpbmRleCA9IGkrKzsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBv
ZmZzZXQgPSByZXN1bWVQb2ludEJ5dGVjb2RlT2Zmc2V0ICsgaW5kZXggKiA0OworICAgICAgICAg
ICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zW29mZnNldF0gPSB2bS5pbnRlcnByZXRlci0+Z2V0
T3Bjb2RlKG9wX3Jlc3VtZV9mcm9tX2dlbmVyYXRvcl9mcmFtZSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICBpbnN0cnVjdGlvbnNbb2Zmc2V0ICsgMV0udS5vcGVyYW5kID0gdmlydHVhbFJlZ2lz
dGVyRm9yTG9jYWwobG9jYWwpLm9mZnNldCgpOworICAgICAgICAgICAgICAgICAgICAgICAgaW5z
dHJ1Y3Rpb25zW29mZnNldCArIDJdLnUub3BlcmFuZCA9IGdlbmVyYXRvckZyYW1lSW5kZXg7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBpbnN0cnVjdGlvbnNbb2Zmc2V0ICsgM10udS51bnNpZ25l
ZFZhbHVlID0gaW5kZXg7CisgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQorICAgICAgICAvLyBGaWxsIG9wX25ld19nZW5l
cmF0b3JfZnJhbWUncyBzaXplLgorICAgICAgICBtX2luc3RydWN0aW9uc1tuZXdHZW5lcmF0b3JG
cmFtZUluc3RydWN0aW9uT2Zmc2V0ICsgMl0udS51bnNpZ25lZFZhbHVlID0gbWF4R2VuZXJhdG9y
RnJhbWVTaXplOwogICAgIH0KIAogICAgIC8vIFNldCBvcHRpbWl6YXRpb24gdGhyZXNob2xkcyBv
bmx5IGFmdGVyIG1faW5zdHJ1Y3Rpb25zIGlzIGluaXRpYWxpemVkLCBzaW5jZSB0aGVzZQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmNwcAppbmRleCBkMTVlMjI0MzUyNjZmZTFhZmYzZDVmNzlhMWRkYTc1YjliZGFmM2Yz
Li40Njc1MGY5ZmMyMDRiYmJjMGM4ZjkyN2UzMjBmMGIzZDA5MmU5OWVlIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmNwcApAQCAtNTM3LDYgKzUzNyw5IEBAIFBhcnNlckVycm9yIEJ5dGVjb2RlR2VuZXJhdG9yOjpn
ZW5lcmF0ZSgpCiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckJvZHlNb2RlOiB7
CiAgICAgICAgIC8vIHx0aGlzfCBpcyBhbHJlYWR5IGZpbGxlZCBjb3JyZWN0bHkgYmVmb3JlIGhl
cmUuCiAgICAgICAgIGVtaXRMb2FkKG1fbmV3VGFyZ2V0UmVnaXN0ZXIsIGpzVW5kZWZpbmVkKCkp
OworCisgICAgICAgIGVtaXROZXdHZW5lcmF0b3JGcmFtZShnZW5lcmF0b3JGcmFtZVJlZ2lzdGVy
KCkpOworICAgICAgICBlbWl0UHV0QnlJZChnZW5lcmF0b3JSZWdpc3RlcigpLCBwcm9wZXJ0eU5h
bWVzKCkuZ2VuZXJhdG9yRnJhbWVQcml2YXRlTmFtZSwgZ2VuZXJhdG9yRnJhbWVSZWdpc3Rlcigp
KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCkBAIC0yNzQ0LDYgKzI3NDcsMTQgQEAgUmVnaXN0
ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdGdW5jdGlvbihSZWdpc3RlcklEKiBkc3Qs
IEZ1bmN0aW9uTWV0YWRhdGEKICAgICByZXR1cm4gZHN0OwogfQogCitSZWdpc3RlcklEKiBCeXRl
Y29kZUdlbmVyYXRvcjo6ZW1pdE5ld0dlbmVyYXRvckZyYW1lKFJlZ2lzdGVySUQqIGRzdCkKK3sK
KyAgICBlbWl0T3Bjb2RlKG9wX25ld19nZW5lcmF0b3JfZnJhbWUpOworICAgIGluc3RydWN0aW9u
cygpLmFwcGVuZChkc3QtPmluZGV4KCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsK
KyAgICByZXR1cm4gZHN0OworfQorCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dENhbGwoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBmdW5jLCBFeHBlY3RlZEZ1bmN0aW9u
IGV4cGVjdGVkRnVuY3Rpb24sIENhbGxBcmd1bWVudHMmIGNhbGxBcmd1bWVudHMsIGNvbnN0IEpT
VGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNv
bnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCkKIHsKICAgICByZXR1cm4gZW1pdENhbGwob3Bf
Y2FsbCwgZHN0LCBmdW5jLCBleHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCwg
ZGl2b3RTdGFydCwgZGl2b3RFbmQpOwpAQCAtNDE0NSw3ICs0MTU2LDcgQEAgdm9pZCBCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdFNhdmUoTGFiZWwqIG1lcmdlUG9pbnQsIHVuc2lnbmVkIGxpdmVDYWxs
ZWVMb2NhbHNJbmQKIHsKICAgICBzaXplX3QgYmVnaW4gPSBpbnN0cnVjdGlvbnMoKS5zaXplKCk7
CiAgICAgZW1pdE9wY29kZShvcF9zYXZlKTsKLSAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobV9n
ZW5lcmF0b3JSZWdpc3Rlci0+aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGdl
bmVyYXRvckZyYW1lUmVnaXN0ZXIoKS0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKGxpdmVDYWxsZWVMb2NhbHNJbmRleCk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1l
cmdlUG9pbnQtPmJpbmQoYmVnaW4sIGluc3RydWN0aW9ucygpLnNpemUoKSkpOwogfQpAQCAtNDE1
Myw5ICs0MTY0LDMxIEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRTYXZlKExhYmVsKiBt
ZXJnZVBvaW50LCB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kCiB2b2lkIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0UmVzdW1lKExhYmVsKiBtZXJnZVBvaW50LCB1bnNpZ25lZCBsaXZlQ2FsbGVl
TG9jYWxzSW5kZXgpCiB7CiAgICAgZW1pdEdlbmVyYXRvclN0YXRlTGFiZWwoKTsKKworICAgIHJl
Y2xhaW1GcmVlUmVnaXN0ZXJzKCk7CisgICAgdW5zaWduZWQgbWF4TGl2ZUxvY2FscyA9IDA7Cisg
ICAgZm9yIChjb25zdCBSZWdpc3RlcklEJiByZWcgOiBtX2NhbGxlZUxvY2FscykgeworICAgICAg
ICBpZiAocmVnLnJlZkNvdW50KCkpCisgICAgICAgICAgICArK21heExpdmVMb2NhbHM7CisgICAg
fQorCisgICAgLy8gVGhpcyBvcF9yZXN1bWUgd2lsbCBiZSByZXBsYWNlZCB3aXRoIHRoZSBhY3R1
YWwgb3BzLgorICAgIGlmIChtYXhMaXZlTG9jYWxzKQorICAgICAgICBtYXhMaXZlTG9jYWxzIC09
IDE7CisKICAgICBlbWl0T3Bjb2RlKG9wX3Jlc3VtZSk7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKG1fZ2VuZXJhdG9yUmVnaXN0ZXItPmluZGV4KCkpOworICAgIGluc3RydWN0aW9ucygpLmFw
cGVuZChnZW5lcmF0b3JGcmFtZVJlZ2lzdGVyKCktPmluZGV4KCkpOwogICAgIGluc3RydWN0aW9u
cygpLmFwcGVuZChsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpOworICAgIGluc3RydWN0aW9ucygpLmFw
cGVuZChtYXhMaXZlTG9jYWxzKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbWF4TGl2
ZUxvY2FsczsgKytpKSB7CisgICAgICAgIC8vIE5vcCBzcGFjZS4gTGF0ZXIgd2Ugd2lsbCBmaWxs
IHRoaXMgd2l0aCB0aGUgYWN0dWFsIHJlc3VtZSBvcGVyYXRpb25zLgorICAgICAgICBlbWl0T3Bj
b2RlKG9wX25vcCk7CisgICAgICAgIGVtaXRPcGNvZGUob3Bfbm9wKTsKKyAgICAgICAgZW1pdE9w
Y29kZShvcF9ub3ApOworICAgICAgICBlbWl0T3Bjb2RlKG9wX25vcCk7CisgICAgfQorICAgIGVt
aXRPcGNvZGUob3BfY2xlYXJfZ2VuZXJhdG9yX2ZyYW1lKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5h
cHBlbmQoZ2VuZXJhdG9yRnJhbWVSZWdpc3RlcigpLT5pbmRleCgpKTsKICAgICBlbWl0TGFiZWwo
bWVyZ2VQb2ludCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAppbmRleCA3ZDBjMjBiNmY1MTZhMTdlODkzZjFi
YmEwODAzYzEzMzNmZmM4ZDBkLi4zZDMzNDc4MTVhYzMwYTgyZTYyNmUzZTA3ODA4MWJlMmIzZTli
ZTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5oCkBAIC01MjIsNiArNTIyLDcgQEAKICAgICAgICAgUmVnaXN0ZXJJ
RCogZW1pdE5ld0RlZmF1bHRDb25zdHJ1Y3RvcihSZWdpc3RlcklEKiBkc3QsIENvbnN0cnVjdG9y
S2luZCwgY29uc3QgSWRlbnRpZmllciYgbmFtZSk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRO
ZXdBcnJvd0Z1bmN0aW9uRXhwcmVzc2lvbihSZWdpc3RlcklEKiwgQXJyb3dGdW5jRXhwck5vZGUq
KTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdE5ld1JlZ0V4cChSZWdpc3RlcklEKiBkc3QsIFJl
Z0V4cCopOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0TmV3R2VuZXJhdG9yRnJhbWUoUmVnaXN0
ZXJJRCogZHN0KTsKIAogICAgICAgICBSZWdpc3RlcklEKiBlbWl0TW92ZUxpbmtUaW1lQ29uc3Rh
bnQoUmVnaXN0ZXJJRCogZHN0LCBMaW5rVGltZUNvbnN0YW50KTsKICAgICAgICAgUmVnaXN0ZXJJ
RCogZW1pdE1vdmVFbXB0eVZhbHVlKFJlZ2lzdGVySUQqIGRzdCk7CkBAIC02ODQsNiArNjg1LDcg
QEAKICAgICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9yU3RhdGVSZWdpc3RlcigpIHsgcmV0dXJu
ICZtX3BhcmFtZXRlcnNbMl07IH0KICAgICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9yVmFsdWVS
ZWdpc3RlcigpIHsgcmV0dXJuICZtX3BhcmFtZXRlcnNbM107IH0KICAgICAgICAgUmVnaXN0ZXJJ
RCogZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKCkgeyByZXR1cm4gJm1fcGFyYW1ldGVyc1s0
XTsgfQorICAgICAgICBSZWdpc3RlcklEKiBnZW5lcmF0b3JGcmFtZVJlZ2lzdGVyKCkgeyByZXR1
cm4gJm1fcGFyYW1ldGVyc1s1XTsgfQogCiAgICAgICAgIENvZGVUeXBlIGNvZGVUeXBlKCkgY29u
c3QgeyByZXR1cm4gbV9jb2RlVHlwZTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKaW5kZXggOWVlYzYz
Y2ViMDcxYmMxNDg2YTAxMmMyODUwMWRiNjI0MjZiZGU3Yi4uZmMxNTEzNzc4ZjVhYTI5MzAzY2Zh
Njk4ZTI2ZmI4ODM1OGRlODg2YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaApAQCAtMTY4Nyw2ICsxNjg3
LDEwIEBACiAgICAgY2FzZSBOZXdSZWdleHA6CiAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0KG1f
Z3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyktPnJl
Z0V4cFN0cnVjdHVyZSgpKTsKICAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIE5ld0dlbmVyYXRv
ckZyYW1lOgorICAgICAgICBmb3JOb2RlKG5vZGUpLnNldChtX2dyYXBoLCBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5nZW5lcmF0b3JGcmFtZVN0cnVjdHVy
ZSgpKTsKKyAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICBjYXNlIFRvVGhpczogewog
ICAgICAgICBBYnN0cmFjdFZhbHVlJiBzb3VyY2UgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKTsK
QEAgLTI1MTAsNiArMjUxNCwyMiBAQAogICAgICAgICBmb3JOb2RlKG5vZGUpLm1ha2VIZWFwVG9w
KCk7CiAgICAgICAgIGJyZWFrOwogCisgICAgY2FzZSBTYXZlVG9HZW5lcmF0b3JGcmFtZTogewor
ICAgICAgICBjbG9iYmVyV29ybGQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBjbG9iYmVyTGltaXQp
OworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBjYXNlIFJlc3VtZUZyb21HZW5lcmF0b3JG
cmFtZTogeworICAgICAgICBjbG9iYmVyV29ybGQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBjbG9i
YmVyTGltaXQpOworICAgICAgICBmb3JOb2RlKG5vZGUpLm1ha2VIZWFwVG9wKCk7CisgICAgICAg
IGJyZWFrOworICAgIH0KKworICAgIGNhc2UgUHV0R2VuZXJhdG9yRnJhbWVMb2NhbHM6IHsKKyAg
ICAgICAgY2xvYmJlcldvcmxkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2xvYmJlckxpbWl0KTsK
KyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBGb3JjZU9TUkV4aXQ6CiAgICAgY2Fz
ZSBDaGVja0JhZENlbGw6CiAgICAgICAgIG1fc3RhdGUuc2V0SXNWYWxpZChmYWxzZSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCmluZGV4IDM2
NDRhMmZkMTlhMGQ5YjNkZGE3YjA2OGEwMDQ5MGE1ODI2MjA4NmQuLjZkODNmNzI5N2MwYjk1YTUy
NDEzNDY4NmU3ZTFjMmZiZTZlOTM1ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC0xNDQsNiArMTQ0LDcgQEAgY2xhc3MgQnl0ZUNv
ZGVQYXJzZXIgewogICAgICAgICAsIG1fY29uc3RhbnROdWxsKGdyYXBoLmZyZWV6ZShqc051bGwo
KSkpCiAgICAgICAgICwgbV9jb25zdGFudE5hTihncmFwaC5mcmVlemUoanNOdW1iZXIoUE5hTikp
KQogICAgICAgICAsIG1fY29uc3RhbnRPbmUoZ3JhcGguZnJlZXplKGpzTnVtYmVyKDEpKSkKKyAg
ICAgICAgLCBtX2NvbnN0YW50VHJ1ZShncmFwaC5mcmVlemUoanNCb29sZWFuKHRydWUpKSkKICAg
ICAgICAgLCBtX251bUFyZ3VtZW50cyhtX2NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKQogICAg
ICAgICAsIG1fbnVtTG9jYWxzKG1fY29kZUJsb2NrLT5tX251bUNhbGxlZUxvY2FscykKICAgICAg
ICAgLCBtX3BhcmFtZXRlclNsb3RzKDApCkBAIC05ODIsNiArOTgzLDcgQEAgY2xhc3MgQnl0ZUNv
ZGVQYXJzZXIgewogICAgIEZyb3plblZhbHVlKiBtX2NvbnN0YW50TnVsbDsKICAgICBGcm96ZW5W
YWx1ZSogbV9jb25zdGFudE5hTjsKICAgICBGcm96ZW5WYWx1ZSogbV9jb25zdGFudE9uZTsKKyAg
ICBGcm96ZW5WYWx1ZSogbV9jb25zdGFudFRydWU7CiAgICAgVmVjdG9yPE5vZGUqLCAxNj4gbV9j
b25zdGFudHM7CiAKICAgICAvLyBUaGUgbnVtYmVyIG9mIGFyZ3VtZW50cyBwYXNzZWQgdG8gdGhl
IGZ1bmN0aW9uLgpAQCAtMTA1MSw2ICsxMDUzLDkgQEAgY2xhc3MgQnl0ZUNvZGVQYXJzZXIgewog
ICAgICAgICBDYWxsTGlua0luZm9NYXAgbV9jYWxsTGlua0luZm9zOwogICAgICAgICBTdHViSW5m
b01hcCBtX3N0dWJJbmZvczsKICAgICAgICAgQnlWYWxJbmZvTWFwIG1fYnlWYWxJbmZvczsKKwor
ICAgICAgICAvLyBCYXNpYyBibG9ja3MgcGVyZm9ybWluZyB5aWVsZCdzIG9wX3NhdmUgb3BlcmF0
aW9uLgorICAgICAgICBWZWN0b3I8QmFzaWNCbG9jayo+IG1feWllbGRpbmdCbG9ja3M7CiAgICAg
ICAgIAogICAgICAgICAvLyBEaWQgd2Ugc2VlIGFueSByZXR1cm5zPyBXZSBuZWVkIHRvIGhhbmRs
ZSB0aGUgKHVuY29tbW9uIGJ1dCBuZWNlc3NhcnkpCiAgICAgICAgIC8vIGNhc2Ugd2hlcmUgYSBw
cm9jZWR1cmUgdGhhdCBkb2VzIG5vdCByZXR1cm4gd2FzIGlubGluZWQuCkBAIC0zMzQxLDYgKzMz
NDYsMTEgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkK
ICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX25ld19yZWdleHApOwogICAgICAgICB9CiAKKyAg
ICAgICAgY2FzZSBvcF9uZXdfZ2VuZXJhdG9yX2ZyYW1lOiB7CisgICAgICAgICAgICBzZXQoVmly
dHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpLCBhZGRUb0dyYXBo
KE5ld0dlbmVyYXRvckZyYW1lLCBPcEluZm8oY3VycmVudEluc3RydWN0aW9uWzJdLnUudW5zaWdu
ZWRWYWx1ZSkpKTsKKyAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX25ld19nZW5lcmF0b3JfZnJh
bWUpOworICAgICAgICB9CisKICAgICAgICAgY2FzZSBvcF9nZXRfcmVzdF9sZW5ndGg6IHsKICAg
ICAgICAgICAgIElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lID0gdGhpcy0+aW5saW5l
Q2FsbEZyYW1lKCk7CiAgICAgICAgICAgICBOb2RlKiBsZW5ndGg7CkBAIC0zMzY4LDYgKzMzNzgs
NTIgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAg
ICAgICAgICAgICAgICBhcnJheSwgYXJyYXlMZW5ndGgpOwogICAgICAgICAgICAgTkVYVF9PUENP
REUob3BfY29weV9yZXN0KTsKICAgICAgICAgfQorCisgICAgICAgIGNhc2Ugb3Bfc2F2ZTogewor
ICAgICAgICAgICAgTm9kZSogZnJhbWUgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0
cnVjdGlvblsxXS51Lm9wZXJhbmQpKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGxpdmVDYWxsZWVM
b2NhbHNJbmRleCA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51LnVuc2lnbmVkVmFsdWU7CisgICAg
ICAgICAgICBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlbmVzcyA9IG1faW5saW5lU3RhY2tUb3At
Pm1fY29kZUJsb2NrLT5saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZChsaXZlQ2FsbGVlTG9jYWxzSW5k
ZXgpOworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQobGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID09
IG1faW5saW5lU3RhY2tUb3AtPm1feWllbGRpbmdCbG9ja3Muc2l6ZSgpKTsKKyAgICAgICAgICAg
IG1faW5saW5lU3RhY2tUb3AtPm1feWllbGRpbmdCbG9ja3MuYXBwZW5kKG1fY3VycmVudEJsb2Nr
KTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGdlbmVyYXRvckZyYW1lSW5kZXggPSAwOworICAgICAg
ICAgICAgbGl2ZW5lc3MuZm9yRWFjaFNldEJpdChbJl0oc2l6ZV90IGluZGV4KSB7CisgICAgICAg
ICAgICAgICAgTm9kZSogbG9jYWwgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKHZpcnR1YWxSZWdpc3Rl
ckZvckxvY2FsKGluZGV4KSkpOworICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGxvY2Fs
LT5vcCgpID09IEdldExvY2FsKTsKKyAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFNhdmVUb0dl
bmVyYXRvckZyYW1lLCBPcEluZm8oZ2VuZXJhdG9yRnJhbWVJbmRleCsrKSwgT3BJbmZvKGxvY2Fs
LT52YXJpYWJsZUFjY2Vzc0RhdGEoKSksIGZyYW1lLCBsb2NhbCk7CisgICAgICAgICAgICB9KTsK
KyAgICAgICAgICAgIGFkZFRvR3JhcGgoUHV0R2VuZXJhdG9yRnJhbWVMb2NhbHMsIE9wSW5mbyhn
ZW5lcmF0b3JGcmFtZUluZGV4KSwgZnJhbWUpOworCisgICAgICAgICAgICB1bnNpZ25lZCByZWxh
dGl2ZU9mZnNldCA9IGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQ7CisgICAgICAgICAg
ICBOb2RlKiB0cnVlQ29uZGl0aW9uID0gYWRkVG9HcmFwaChKU0NvbnN0YW50LCBPcEluZm8obV9j
b25zdGFudFRydWUpKTsKKyAgICAgICAgICAgIGFkZFRvR3JhcGgoQnJhbmNoLCBPcEluZm8oYnJh
bmNoRGF0YShtX2N1cnJlbnRJbmRleCArIE9QQ09ERV9MRU5HVEgob3Bfc2F2ZSksIG1fY3VycmVu
dEluZGV4ICsgcmVsYXRpdmVPZmZzZXQpKSwgdHJ1ZUNvbmRpdGlvbik7CisgICAgICAgICAgICBM
QVNUX09QQ09ERShvcF9zYXZlKTsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2Ugb3BfcmVzdW1l
OiB7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBjYXNlIG9wX3Jlc3VtZV9mcm9tX2dlbmVy
YXRvcl9mcmFtZTogeworICAgICAgICAgICAgTm9kZSogZnJhbWUgPSBnZXQoVmlydHVhbFJlZ2lz
dGVyKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpKTsKKyAgICAgICAgICAgIEJhc2lj
QmxvY2sqIHlpZWxkaW5nQmxvY2sgPSBtX2lubGluZVN0YWNrVG9wLT5tX3lpZWxkaW5nQmxvY2tz
Lmxhc3QoKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGdlbmVyYXRvckZyYW1lSW5kZXggPSBjdXJy
ZW50SW5zdHJ1Y3Rpb25bM10udS51bnNpZ25lZFZhbHVlOworICAgICAgICAgICAgVmlydHVhbFJl
Z2lzdGVyIGxvY2FsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7Cisg
ICAgICAgICAgICBOb2RlKiBzYXZlZCA9IHlpZWxkaW5nQmxvY2stPnZhcmlhYmxlc0F0VGFpbC5s
b2NhbChtX2lubGluZVN0YWNrVG9wLT5yZW1hcE9wZXJhbmQobG9jYWxSZWdpc3RlcikudG9Mb2Nh
bCgpKTsKKyAgICAgICAgICAgIHNldChsb2NhbFJlZ2lzdGVyLCBhZGRUb0dyYXBoKFJlc3VtZUZy
b21HZW5lcmF0b3JGcmFtZSwgT3BJbmZvKGdlbmVyYXRvckZyYW1lSW5kZXgpLCBPcEluZm8oc2F2
ZWQtPnZhcmlhYmxlQWNjZXNzRGF0YSgpKSwgZnJhbWUpKTsKKyAgICAgICAgICAgIE5FWFRfT1BD
T0RFKG9wX3Jlc3VtZV9mcm9tX2dlbmVyYXRvcl9mcmFtZSk7CisgICAgICAgIH0KKworICAgICAg
ICBjYXNlIG9wX2NsZWFyX2dlbmVyYXRvcl9mcmFtZTogeworICAgICAgICAgICAgTm9kZSogZnJh
bWUgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQp
KTsKKyAgICAgICAgICAgIGFkZFRvR3JhcGgoUHV0R2VuZXJhdG9yRnJhbWVMb2NhbHMsIE9wSW5m
bygwKSwgZnJhbWUpOworICAgICAgICAgICAgTkVYVF9PUENPREUob3BfY2xlYXJfZ2VuZXJhdG9y
X2ZyYW1lKTsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2Ugb3Bfbm9wOiB7CisgICAgICAgICAg
ICBORVhUX09QQ09ERShvcF9ub3ApOworICAgICAgICB9CisKICAgICAgICAgICAgIAogICAgICAg
ICAvLyA9PT0gQml0d2lzZSBvcGVyYXRpb25zID09PQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKaW5kZXggZDEwMGQ5N2Q1YzYwZTI1YTA2MGZmZGE0
NTY2M2IzYjk0MTQzNWRjNi4uMTk4NDFhODhmNjRhYTE1NzliNzY3ZDUyZGJkMWUxZjkyMjBhYTFj
YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcApA
QCAtMTgxLDYgKzE4MSw3IEBAIENhcGFiaWxpdHlMZXZlbCBjYXBhYmlsaXR5TGV2ZWwoT3Bjb2Rl
SUQgb3Bjb2RlSUQsIENvZGVCbG9jayogY29kZUJsb2NrLCBJbnN0cnVjCiAgICAgY2FzZSBvcF9u
ZXdfYXJyYXk6CiAgICAgY2FzZSBvcF9uZXdfYXJyYXlfd2l0aF9zaXplOgogICAgIGNhc2Ugb3Bf
bmV3X2FycmF5X2J1ZmZlcjoKKyAgICBjYXNlIG9wX25ld19nZW5lcmF0b3JfZnJhbWU6CiAgICAg
Y2FzZSBvcF9zdHJjYXQ6CiAgICAgY2FzZSBvcF90b19wcmltaXRpdmU6CiAgICAgY2FzZSBvcF90
aHJvdzoKQEAgLTIyNCw2ICsyMjUsMTEgQEAgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlMZXZl
bChPcGNvZGVJRCBvcGNvZGVJRCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEluc3RydWMKICAgICBj
YXNlIG9wX2NhdGNoOgogICAgIGNhc2Ugb3BfY29weV9yZXN0OgogICAgIGNhc2Ugb3BfZ2V0X3Jl
c3RfbGVuZ3RoOgorICAgIGNhc2Ugb3Bfc2F2ZToKKyAgICBjYXNlIG9wX3Jlc3VtZToKKyAgICBj
YXNlIG9wX3Jlc3VtZV9mcm9tX2dlbmVyYXRvcl9mcmFtZToKKyAgICBjYXNlIG9wX2NsZWFyX2dl
bmVyYXRvcl9mcmFtZToKKyAgICBjYXNlIG9wX25vcDoKICAgICAgICAgcmV0dXJuIENhbkNvbXBp
bGVBbmRJbmxpbmU7CiAKICAgICBjYXNlIG9wX3B1dF90b19zY29wZTogewpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAppbmRleCAzNDNhNmRlOWMyOTA5YjkzZTA1Mjhj
ZjAyNzg0YWFkOTRkMDFiNGQxLi44MWIyZTk0MGQ2YWI2OWFhYjZjNTQ0YzkzZGRhNDg0MTg4NzQx
ZWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaApAQCAtMTA0
NCw2ICsxMDQ0LDcgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwg
Y29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQsIGNvbnN0IFdyaXRlRnUKIAogICAgIGNhc2UgTmV3T2Jq
ZWN0OgogICAgIGNhc2UgTmV3UmVnZXhwOgorICAgIGNhc2UgTmV3R2VuZXJhdG9yRnJhbWU6CiAg
ICAgY2FzZSBOZXdTdHJpbmdPYmplY3Q6CiAgICAgY2FzZSBQaGFudG9tTmV3T2JqZWN0OgogICAg
IGNhc2UgTWF0ZXJpYWxpemVOZXdPYmplY3Q6CkBAIC0xMTExLDYgKzExMTIsMjMgQEAgdm9pZCBj
bG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJl
YWQsIGNvbnN0IFdyaXRlRnUKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KKworICAgIGNhc2UgU2F2ZVRvR2Vu
ZXJhdG9yRnJhbWU6IHsKKyAgICAgICAgcmVhZChXb3JsZCk7CisgICAgICAgIHdyaXRlKEhlYXAp
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgY2FzZSBSZXN1bWVGcm9tR2VuZXJhdG9y
RnJhbWU6IHsKKyAgICAgICAgcmVhZChXb3JsZCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBjYXNlIFB1dEdlbmVyYXRvckZyYW1lTG9jYWxzOiB7CisgICAgICAgIHJlYWQoV29ybGQp
OworICAgICAgICB3cml0ZShIZWFwKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KICAgICAgICAg
CiAgICAgY2FzZSBUaHJvd1JlZmVyZW5jZUVycm9yOgogICAgICAgICB3cml0ZShTaWRlU3RhdGUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyc0V4aXRT
dGF0ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJzRXhpdFN0YXRl
LmNwcAppbmRleCA0ZTBjNTA3Nzg5Y2Q3YjNmZjQ3NzUxZjkyNWU3NDgzZTYxZTJkZjViLi5mMjRi
MDI1OWE4MmU5NjIwZDY5MjI1ZTQyZDdjN2ZiNzUzNTU2MWM3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcApAQCAtNTMsMTAgKzUz
LDE2IEBAIGJvb2wgY2xvYmJlcnNFeGl0U3RhdGUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQog
ICAgICAgICAvLyBleGl0IHN0YXRlLgogICAgICAgICByZXR1cm4gZmFsc2U7CiAKKyAgICBjYXNl
IFB1dEdlbmVyYXRvckZyYW1lTG9jYWxzOgorICAgIGNhc2UgU2F2ZVRvR2VuZXJhdG9yRnJhbWU6
CisgICAgY2FzZSBSZXN1bWVGcm9tR2VuZXJhdG9yRnJhbWU6CisgICAgICAgIHJldHVybiBmYWxz
ZTsKKwogICAgIGNhc2UgQXJyYXlpZnlUb1N0cnVjdHVyZToKICAgICBjYXNlIEFycmF5aWZ5Ogog
ICAgIGNhc2UgTmV3T2JqZWN0OgogICAgIGNhc2UgTmV3UmVnZXhwOgorICAgIGNhc2UgTmV3R2Vu
ZXJhdG9yRnJhbWU6CiAgICAgY2FzZSBOZXdTdHJpbmdPYmplY3Q6CiAgICAgY2FzZSBQaGFudG9t
TmV3T2JqZWN0OgogICAgIGNhc2UgTWF0ZXJpYWxpemVOZXdPYmplY3Q6CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKaW5kZXggNzAyZGE1YmYxZTdjMGYxYzhmZTU1YzY0ODQ0
NThmY2FkODFlMmFhNS4uY2YwMzNlYjE0MDMyZjZlMzA1NWEyYWJkZDA2NTY3YWJjZWJlNTI4MCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcApAQCAtMjI5LDYgKzIyOSw5
IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIEdldEZy
b21Bcmd1bWVudHM6CiAgICAgY2FzZSBQdXRUb0FyZ3VtZW50czoKICAgICBjYXNlIENvcHlSZXN0
OgorICAgIGNhc2UgU2F2ZVRvR2VuZXJhdG9yRnJhbWU6CisgICAgY2FzZSBSZXN1bWVGcm9tR2Vu
ZXJhdG9yRnJhbWU6CisgICAgY2FzZSBQdXRHZW5lcmF0b3JGcmFtZUxvY2FsczoKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCiAgICAgY2FzZSBDcmVhdGVBY3RpdmF0aW9uOgpAQCAtMjQ2LDYgKzI0
OSw3IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIE5l
d0FycmF5V2l0aFNpemU6CiAgICAgY2FzZSBOZXdBcnJheUJ1ZmZlcjoKICAgICBjYXNlIE5ld1Jl
Z2V4cDoKKyAgICBjYXNlIE5ld0dlbmVyYXRvckZyYW1lOgogICAgIGNhc2UgTmV3U3RyaW5nT2Jq
ZWN0OgogICAgIGNhc2UgTWFrZVJvcGU6CiAgICAgY2FzZSBOZXdBcnJvd0Z1bmN0aW9uOgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKaW5kZXggYzlkNWFiZmI0
OTQ4MWI5MDU4OWVjNGZiYTU5NWEyY2U4ZTcwZGY2Ny4uZDE2YjYzNDU5OTM1OWI2NWM2N2QyZmFk
OTRlYjU2OTFjYjhjYjRiOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdGaXh1cFBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVw
UGhhc2UuY3BwCkBAIC0xNDMwLDYgKzE0MzAsMjEgQEAgY2xhc3MgRml4dXBQaGFzZSA6IHB1Ymxp
YyBQaGFzZSB7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCisgICAgICAgIGNhc2Ug
U2F2ZVRvR2VuZXJhdG9yRnJhbWU6IHsKKyAgICAgICAgICAgIGZpeEVkZ2U8Q2VsbFVzZT4obm9k
ZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBj
YXNlIFJlc3VtZUZyb21HZW5lcmF0b3JGcmFtZTogeworICAgICAgICAgICAgZml4RWRnZTxDZWxs
VXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisg
ICAgICAgIGNhc2UgUHV0R2VuZXJhdG9yRnJhbWVMb2NhbHM6IHsKKyAgICAgICAgICAgIGZpeEVk
Z2U8Q2VsbFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KKwogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICAgICAgLy8gSGF2ZSB0aGVzZSBuby1vcCBj
YXNlcyBoZXJlIHRvIGVuc3VyZSB0aGF0IG5vYm9keSBmb3JnZXRzIHRvIGFkZCBoYW5kbGVycyBm
b3IgbmV3IG9wY29kZXMuCiAgICAgICAgIGNhc2UgU2V0QXJndW1lbnQ6CkBAIC0xNDYyLDYgKzE0
NzcsNyBAQCBjbGFzcyBGaXh1cFBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgY2FzZSBO
ZXdPYmplY3Q6CiAgICAgICAgIGNhc2UgTmV3QXJyYXlCdWZmZXI6CiAgICAgICAgIGNhc2UgTmV3
UmVnZXhwOgorICAgICAgICBjYXNlIE5ld0dlbmVyYXRvckZyYW1lOgogICAgICAgICBjYXNlIEJy
ZWFrcG9pbnQ6CiAgICAgICAgIGNhc2UgUHJvZmlsZVdpbGxDYWxsOgogICAgICAgICBjYXNlIFBy
b2ZpbGVEaWRDYWxsOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdN
YXlFeGl0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAKaW5k
ZXggZGFhMjkzMzlkYmZiZGY4MGFhZDliNjQ2YTJjYjdhMDU4N2Q5NjIzOC4uYjczNmUxMThlM2Ni
MTNkMGM3MDViYzQ2NTYyN2I5NWI5OWMzMjU3ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR01heUV4aXQuY3BwCkBAIC0xMzAsNiArMTMwLDkgQEAgRXhpdE1vZGUgbWF5RXhpdChHcmFw
aCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBTdG9yZUJhcnJpZXI6CiAgICAgY2FzZSBQ
dXRCeU9mZnNldDoKICAgICBjYXNlIFB1dENsb3N1cmVWYXI6CisgICAgY2FzZSBQdXRHZW5lcmF0
b3JGcmFtZUxvY2FsczoKKyAgICBjYXNlIFNhdmVUb0dlbmVyYXRvckZyYW1lOgorICAgIGNhc2Ug
UmVzdW1lRnJvbUdlbmVyYXRvckZyYW1lOgogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgU3Ry
Q2F0OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAppbmRleCAxMjg3MGQ5M2QwYzQ4MmU0
ZjhlNWQ0ZDJkYWYxZTZiZjFmNzFiNjJjLi40M2EyYzlhYmU1MDAwMTE0YTkxMWU2ODg1YTA4ZTcx
OWEyOGM5MTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaApAQCAtODc4LDYgKzg3
OCw3MiBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgICAgIHJldHVybiBtX29wSW5mbzsKICAgICB9CiAK
KyAgICBib29sIGhhc0dlbmVyYXRvckZyYW1lU2l6ZSgpCisgICAgeworICAgICAgICBzd2l0Y2gg
KG9wKCkpIHsKKyAgICAgICAgY2FzZSBOZXdHZW5lcmF0b3JGcmFtZToKKyAgICAgICAgICAgIHJl
dHVybiB0cnVlOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICB9CisgICAgfQorCisgICAgdW5zaWduZWQgZ2VuZXJhdG9yRnJhbWVTaXplKCkKKyAg
ICB7CisgICAgICAgIEFTU0VSVChoYXNHZW5lcmF0b3JGcmFtZVNpemUoKSk7CisgICAgICAgIHJl
dHVybiBtX29wSW5mbzsKKyAgICB9CisKKyAgICBib29sIGhhc0dlbmVyYXRvckZyYW1lSW5kZXgo
KQorICAgIHsKKyAgICAgICAgc3dpdGNoIChvcCgpKSB7CisgICAgICAgIGNhc2UgU2F2ZVRvR2Vu
ZXJhdG9yRnJhbWU6CisgICAgICAgIGNhc2UgUmVzdW1lRnJvbUdlbmVyYXRvckZyYW1lOgorICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB1bnNpZ25lZCBnZW5lcmF0b3JGcmFt
ZUluZGV4KCkKKyAgICB7CisgICAgICAgIEFTU0VSVChoYXNHZW5lcmF0b3JGcmFtZUluZGV4KCkp
OworICAgICAgICByZXR1cm4gbV9vcEluZm87CisgICAgfQorCisgICAgYm9vbCBoYXNTYXZlZFZh
cmlhYmxlQWNjZXNzRGF0YSgpCisgICAgeworICAgICAgICBzd2l0Y2ggKG9wKCkpIHsKKyAgICAg
ICAgY2FzZSBTYXZlVG9HZW5lcmF0b3JGcmFtZToKKyAgICAgICAgY2FzZSBSZXN1bWVGcm9tR2Vu
ZXJhdG9yRnJhbWU6CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIFZhcmlh
YmxlQWNjZXNzRGF0YSogc2F2ZWRWYXJpYWJsZUFjY2Vzc0RhdGEoKQorICAgIHsKKyAgICAgICAg
QVNTRVJUKGhhc1NhdmVkVmFyaWFibGVBY2Nlc3NEYXRhKCkpOworICAgICAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDxWYXJpYWJsZUFjY2Vzc0RhdGEqPihtX29wSW5mbzIpLT5maW5kKCk7Cisg
ICAgfQorCisgICAgYm9vbCBoYXNHZW5lcmF0b3JGcmFtZUxvY2FscygpCisgICAgeworICAgICAg
ICBzd2l0Y2ggKG9wKCkpIHsKKyAgICAgICAgY2FzZSBQdXRHZW5lcmF0b3JGcmFtZUxvY2FsczoK
KyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorCisgICAgdW5zaWduZWQgZ2VuZXJhdG9y
RnJhbWVMb2NhbHMoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGhhc0dlbmVyYXRvckZyYW1lTG9j
YWxzKCkpOworICAgICAgICByZXR1cm4gbV9vcEluZm87CisgICAgfQorCiAgICAgYm9vbCBoYXNB
Y2Nlc3NvckF0dHJpYnV0ZXMoKQogICAgIHsKICAgICAgICAgc3dpdGNoIChvcCgpKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKaW5kZXggZGRkMGI5N2NiMmZlNjkyNjA0
NTEwM2Y4YTcxMDcwMDQ4MmU5ZjZiZC4uYmY5OTc2ZDRhODg3NGM0NTRjN2I1NjE5MGNhOTk2MTYz
NjliMDI5YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlw
ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaApAQCAtNzks
NiArNzksMTAgQEAKICAgICBtYWNybyhGbHVzaCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1h
Y3JvKFBoYW50b21Mb2NhbCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIFwKKyAgICBtYWNybyhT
YXZlVG9HZW5lcmF0b3JGcmFtZSwgTm9kZU11c3RHZW5lcmF0ZSkgXAorICAgIG1hY3JvKFJlc3Vt
ZUZyb21HZW5lcmF0b3JGcmFtZSwgTm9kZVJlc3VsdEpTKSBcCisgICAgbWFjcm8oUHV0R2VuZXJh
dG9yRnJhbWVMb2NhbHMsIE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBcCiAgICAgLyogSGludCB0
aGF0IHRoaXMgaXMgd2hlcmUgYnl0ZWNvZGUgdGhpbmtzIGlzIGEgZ29vZCBwbGFjZSB0byBPU1Iu
IE5vdGUgdGhhdCB0aGlzICovXAogICAgIC8qIHdpbGwgZXhpc3QgZXZlbiBpbiBpbmxpbmVkIGxv
b3BzLiBUaGlzIGhhcyBubyBleGVjdXRpb24gc2VtYW50aWNzIGJ1dCBpdCBtdXN0ICovXAogICAg
IC8qIHN1cnZpdmUgYWxsIERDRS4gV2UgdHJlYXQgdGhpcyBhcyBiZWluZyBhIGNhbi1leGl0IGJl
Y2F1c2UgdGllci11cCB0byBGVEwgbWF5ICovXApAQCAtMjYzLDYgKzI2Nyw3IEBACiAgICAgbWFj
cm8oTmV3QXJyYXlCdWZmZXIsIE5vZGVSZXN1bHRKUykgXAogICAgIG1hY3JvKE5ld1R5cGVkQXJy
YXksIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhOZXdSZWdl
eHAsIE5vZGVSZXN1bHRKUykgXAorICAgIG1hY3JvKE5ld0dlbmVyYXRvckZyYW1lLCBOb2RlUmVz
dWx0SlMpIFwKICAgICAvKiBSZXN0IFBhcmFtZXRlciAqL1wKICAgICBtYWNybyhHZXRSZXN0TGVu
Z3RoLCBOb2RlUmVzdWx0SW50MzIpIFwKICAgICBtYWNybyhDb3B5UmVzdCwgTm9kZU11c3RHZW5l
cmF0ZSkgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRp
b25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKaW5k
ZXggMmZkNWRiZGM3ZmM0Y2NhODZmYWUxMDkyMjdhYzE3NTdmZGNkZjk2Yy4uYmMzNTY2MTNkM2Y1
MjE4MDgyMzhlNTI2ODEzNWFhYjA5YmU2N2YwZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09wZXJhdGlvbnMuY3BwCkBAIC00MSw4ICs0MSw5IEBACiAjaW5jbHVkZSAiRGlyZWN0
QXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiRlRMRm9yT1NSRW50cnlKSVRDb2RlLmgiCiAjaW5jbHVk
ZSAiRlRMT1NSRW50cnkuaCIKLSNpbmNsdWRlICJIb3N0Q2FsbFJldHVyblZhbHVlLmgiCisjaW5j
bHVkZSAiR2VuZXJhdG9yRnJhbWUuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKKyNpbmNs
dWRlICJIb3N0Q2FsbFJldHVyblZhbHVlLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNp
bmNsdWRlICJKSVQuaCIKICNpbmNsdWRlICJKSVRFeGNlcHRpb25zLmgiCkBAIC04MTcsNiArODE4
LDExIEBAIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3RmxvYXQ2NEFycmF5V2l0aE9u
ZUFyZ3VtZW50KAogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RH
ZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpTRmxvYXQ2NEFycmF5PihleGVjLCBz
dHJ1Y3R1cmUsIGVuY29kZWRWYWx1ZSwgMCwgTnVsbG9wdCkpOwogfQogCitjaGFyKiBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbk5ld0dlbmVyYXRvckZyYW1lKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIGludDMyX3QgbnVtYmVyT2ZDYWxsZWVMb2NhbHMpCit7CisgICAgcmV0
dXJuIGJpdHdpc2VfY2FzdDxjaGFyKj4oR2VuZXJhdG9yRnJhbWU6OmNyZWF0ZShleGVjLT52bSgp
LCBzdHJ1Y3R1cmUsIG51bWJlck9mQ2FsbGVlTG9jYWxzKSk7Cit9CisKIEpTQ2VsbCogSklUX09Q
RVJBVElPTiBvcGVyYXRpb25DcmVhdGVBY3RpdmF0aW9uRGlyZWN0KEV4ZWNTdGF0ZSogZXhlYywg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTU2NvcGUqIHNjb3BlLCBTeW1ib2xUYWJsZSogdGFibGUs
IEVuY29kZWRKU1ZhbHVlIGluaXRpYWxWYWx1ZUVuY29kZWQpCiB7CiAgICAgSlNWYWx1ZSBpbml0
aWFsVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoaW5pdGlhbFZhbHVlRW5jb2RlZCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCmluZGV4IDQwOTYyOWZmNWQ1M2E3YmUz
ODdhNjIzNjQ1NWQ2ODE2YWMwODVlYzkuLmU0NDNiYTI4MjM3MmZiY2NlMmJhYzViMDlhMzY3YmQ1
MmM4ZTc1ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0
aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCkBA
IC04Miw2ICs4Miw3IEBACiBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Zsb2F0MzJB
cnJheVdpdGhPbmVBcmd1bWVudChFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqLCBFbmNvZGVkSlNWYWx1
ZSkgV1RGX0lOVEVSTkFMOwogY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdGbG9hdDY0
QXJyYXlXaXRoU2l6ZShFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90KSBXVEZfSU5URVJO
QUw7CiBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Zsb2F0NjRBcnJheVdpdGhPbmVB
cmd1bWVudChFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqLCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVS
TkFMOworY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdHZW5lcmF0b3JGcmFtZShFeGVj
U3RhdGUqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90KSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uUHV0QnlWYWxTdHJpY3QoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRQcm9wZXJ0eSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlKSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uUHV0QnlWYWxOb25TdHJpY3QoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJh
c2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRQcm9wZXJ0eSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFZhbHVlKSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlW
YWxDZWxsU3RyaWN0KEV4ZWNTdGF0ZSosIEpTQ2VsbCosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRQ
cm9wZXJ0eSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSBXVEZfSU5URVJOQUw7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlv
blBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3Bh
Z2F0aW9uUGhhc2UuY3BwCmluZGV4IDU3OTk4Y2ZlMTgxYThmY2Y5Y2M2NTE0MzUxYWM1ODBiODBl
N2ZiOGEuLmU2Mzg0MWFjM2I5YWY5YzdiZTIxMTg2YjQ5MzAzYWU2NWU3ZTRhMWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhh
c2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3Bh
Z2F0aW9uUGhhc2UuY3BwCkBAIC0xNjAsNiArMTYwLDIyIEBAIGNsYXNzIFByZWRpY3Rpb25Qcm9w
YWdhdGlvblBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgIGNoYW5nZWQgfD0gdmFy
aWFibGVBY2Nlc3NEYXRhLT5wcmVkaWN0KG5vZGUtPmNoaWxkMSgpLT5wcmVkaWN0aW9uKCkpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKworICAgICAgICBjYXNlIFNhdmVUb0dlbmVy
YXRvckZyYW1lOiB7CisgICAgICAgICAgICAvLyBWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxl
QWNjZXNzRGF0YSA9IG5vZGUtPnNhdmVkVmFyaWFibGVBY2Nlc3NEYXRhKCk7CisgICAgICAgICAg
ICAvLyBjaGFuZ2VkIHw9IHZhcmlhYmxlQWNjZXNzRGF0YS0+cHJlZGljdChub2RlLT5jaGlsZDEo
KS0+cHJlZGljdGlvbigpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAg
ICAgY2FzZSBSZXN1bWVGcm9tR2VuZXJhdG9yRnJhbWU6IHsKKyAgICAgICAgICAgIC8vIFZhcmlh
YmxlQWNjZXNzRGF0YSogdmFyaWFibGUgPSBub2RlLT5zYXZlZFZhcmlhYmxlQWNjZXNzRGF0YSgp
OworICAgICAgICAgICAgLy8gU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiA9IHZhcmlhYmxlLT5w
cmVkaWN0aW9uKCk7CisgICAgICAgICAgICAvLyBpZiAoIXZhcmlhYmxlLT5jb3VsZFJlcHJlc2Vu
dEludDUyKCkgJiYgKHByZWRpY3Rpb24gJiBTcGVjSW50NTIpKQorICAgICAgICAgICAgLy8gICAg
IHByZWRpY3Rpb24gPSAocHJlZGljdGlvbiB8IFNwZWNJbnQ1MkFzRG91YmxlKSAmIH5TcGVjSW50
NTI7CisgICAgICAgICAgICAvLyBpZiAocHJlZGljdGlvbikKKyAgICAgICAgICAgIC8vICAgICBj
aGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihwcmVkaWN0aW9uKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBCaXRBbmQ6CiAgICAgICAg
IGNhc2UgQml0T3I6CkBAIC01MjQsNyArNTQwLDggQEAgY2xhc3MgUHJlZGljdGlvblByb3BhZ2F0
aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAg
ICAgY2FzZSBOZXdSZWdleHA6Ci0gICAgICAgIGNhc2UgQ3JlYXRlQWN0aXZhdGlvbjogeworICAg
ICAgICBjYXNlIENyZWF0ZUFjdGl2YXRpb246CisgICAgICAgIGNhc2UgTmV3R2VuZXJhdG9yRnJh
bWU6IHsKICAgICAgICAgICAgIGNoYW5nZWQgfD0gc2V0UHJlZGljdGlvbihTcGVjT2JqZWN0T3Ro
ZXIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTcxNiw2ICs3MzMsNyBAQCBj
bGFzcyBQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAg
IGNhc2UgRXhpdE9LOgogICAgICAgICBjYXNlIExvYWRWYXJhcmdzOgogICAgICAgICBjYXNlIENv
cHlSZXN0OgorICAgICAgICBjYXNlIFB1dEdlbmVyYXRvckZyYW1lTG9jYWxzOgogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICAgICAgLy8gVGhpcyBnZXRzIGlnbm9yZWQgYmVj
YXVzZSBpdCBvbmx5IHByZXRlbmRzIHRvIHByb2R1Y2UgYSB2YWx1ZS4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKaW5kZXggMjMwZWZlZGM0ODMxNTEyYmFj
NTY4YmVlZmRiMjc2OTYxODcyMDk0Yy4uZDQ2MmY1ODk5ZDk1NjExMWQ0MTM1YWU2OGUyOTMyNGU4
YzIxYWI1MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9F
eGVjdXRlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRl
LmgKQEAgLTIzNyw2ICsyMzcsNyBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5
cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBOZXdBcnJheVdp
dGhTaXplOgogICAgIGNhc2UgTmV3QXJyYXlCdWZmZXI6CiAgICAgY2FzZSBOZXdSZWdleHA6Cisg
ICAgY2FzZSBOZXdHZW5lcmF0b3JGcmFtZToKICAgICBjYXNlIEJyZWFrcG9pbnQ6CiAgICAgY2Fz
ZSBQcm9maWxlV2lsbENhbGw6CiAgICAgY2FzZSBQcm9maWxlRGlkQ2FsbDoKQEAgLTMyOCw2ICsz
MjksOSBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0YXRlLCBHcmFw
aCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBHZXRNeUFyZ3VtZW50QnlWYWw6CiAgICAg
Y2FzZSBGb3J3YXJkVmFyYXJnczoKICAgICBjYXNlIENvcHlSZXN0OgorICAgIGNhc2UgU2F2ZVRv
R2VuZXJhdG9yRnJhbWU6CisgICAgY2FzZSBSZXN1bWVGcm9tR2VuZXJhdG9yRnJhbWU6CisgICAg
Y2FzZSBQdXRHZW5lcmF0b3JGcmFtZUxvY2FsczoKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAg
ICBjYXNlIEJvdHRvbVZhbHVlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmNwcAppbmRleCBjY2NlNzkxOTk1MTQ1ZTkxZWZkMjAwODhjOTZiN2FmODJi
NTYxNmQ2Li4yYTM2ZDhiYWI4ODcwOWM4Y2ZkMWU2MGE5ZjBhZDgyYzdiMzc2YmY4IDEwMDc1NQot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApAQCAtMzgs
NiArMzgsNyBAQAogI2luY2x1ZGUgIkRGR1NhbmVTdHJpbmdHZXRCeVZhbFNsb3dQYXRoR2VuZXJh
dG9yLmgiCiAjaW5jbHVkZSAiREZHU2xvd1BhdGhHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJEaXJl
Y3RBcmd1bWVudHMuaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JGcmFtZS5oIgogI2luY2x1ZGUgIkpJ
VEFkZEdlbmVyYXRvci5oIgogI2luY2x1ZGUgIkpJVEJpdEFuZEdlbmVyYXRvci5oIgogI2luY2x1
ZGUgIkpJVEJpdE9yR2VuZXJhdG9yLmgiCkBAIC02Mzc4LDYgKzYzNzksMjkgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZU5ld1N0cmluZ09iamVjdChOb2RlKiBub2RlKQogICAgIGNlbGxS
ZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKIH0KIAordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZU5ld0dlbmVyYXRvckZyYW1lKE5vZGUqIG5vZGUpCit7CisgICAgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCA9IG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYyk7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBnbG9iYWxPYmplY3QtPmdlbmVy
YXRvckZyYW1lU3RydWN0dXJlKCk7CisKKyAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwor
ICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoMSh0aGlzKTsKKyAgICBHUFJUZW1wb3Jhcnkgc2NyYXRj
aDIodGhpcyk7CisKKyAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOworICAgIEdQ
UlJlZyBzY3JhdGNoMUdQUiA9IHNjcmF0Y2gxLmdwcigpOworICAgIEdQUlJlZyBzY3JhdGNoMkdQ
UiA9IHNjcmF0Y2gyLmdwcigpOworCisgICAgSklUQ29tcGlsZXI6Okp1bXBMaXN0IHNsb3dQYXRo
OworCisgICAgZW1pdEFsbG9jYXRlSlNPYmplY3RXaXRoS25vd25TaXplPEdlbmVyYXRvckZyYW1l
PihyZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwgVHJ1c3RlZEltbVB0cihudWxs
cHRyKSwgc2NyYXRjaDFHUFIsIHNjcmF0Y2gyR1BSLCBzbG93UGF0aCwgR2VuZXJhdG9yRnJhbWU6
OmFsbG9jYXRpb25TaXplRm9yTG9jYWxzKG5vZGUtPmdlbmVyYXRvckZyYW1lU2l6ZSgpKSk7Cisg
ICAgbV9qaXQuc3RvcmUzMihUcnVzdGVkSW1tMzIoMCksIEpJVENvbXBpbGVyOjpBZGRyZXNzKHJl
c3VsdEdQUiwgR2VuZXJhdG9yRnJhbWU6Om51bWJlck9mU2F2ZWRDYWxsZWVMb2NhbHNPZmZzZXQo
KSkpOworCisgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dQYXRoLCB0
aGlzLCBvcGVyYXRpb25OZXdHZW5lcmF0b3JGcmFtZSwgcmVzdWx0R1BSLCBzdHJ1Y3R1cmUsIG5v
ZGUtPmdlbmVyYXRvckZyYW1lU2l6ZSgpKSk7CisKKyAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwg
bm9kZSk7Cit9CisKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdUeXBlZEFycmF5KE5v
ZGUqIG5vZGUpCiB7CiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1faml0Lmdy
YXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKaW5kZXggNTMxMmM4ZGJlZGZl
ZDE4MDA1NDM4MTEzMDc5ZWViMGIwZTk5MDhhYi4uNTczOTgxNTc4ZjI0ZjViMzAyNTlmMmFjMDI1
NTJmZDQwOGZlN2FlMCAxMDA3NTUKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuaApAQCAtMjI4MSw2ICsyMjgxLDcgQEAgY2xhc3MgU3BlY3VsYXRpdmVKSVQgewog
ICAgIHZvaWQgY29tcGlsZVB1dEJ5VmFsRm9yRmxvYXRUeXBlZEFycmF5KEdQUlJlZyBiYXNlLCBH
UFJSZWcgcHJvcGVydHksIE5vZGUqLCBUeXBlZEFycmF5VHlwZSk7CiAgICAgdGVtcGxhdGUgPHR5
cGVuYW1lIENsYXNzVHlwZT4gdm9pZCBjb21waWxlTmV3RnVuY3Rpb25Db21tb24oR1BSUmVnLCBT
dHJ1Y3R1cmUqLCBHUFJSZWcsIEdQUlJlZywgR1BSUmVnLCBNYWNyb0Fzc2VtYmxlcjo6SnVtcExp
c3QmLCBzaXplX3QsIEZ1bmN0aW9uRXhlY3V0YWJsZSosIHB0cmRpZmZfdCwgcHRyZGlmZl90LCBw
dHJkaWZmX3QpOwogICAgIHZvaWQgY29tcGlsZU5ld0Z1bmN0aW9uKE5vZGUqKTsKKyAgICB2b2lk
IGNvbXBpbGVOZXdHZW5lcmF0b3JGcmFtZShOb2RlKik7CiAgICAgdm9pZCBjb21waWxlRm9yd2Fy
ZFZhcmFyZ3MoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUNyZWF0ZUFjdGl2YXRpb24oTm9kZSop
OwogICAgIHZvaWQgY29tcGlsZUNyZWF0ZURpcmVjdEFyZ3VtZW50cyhOb2RlKik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApp
bmRleCAxMmViNTA0MTE4MGFjMmY1MDE2NGY5NTFiMDU4ZWRiNjJkMjI4MjcwLi4zMTAzYWQ1OWZm
MjA0MWE3NGQxMmVhOGI4M2FjMTc3MzNlZjdjNmU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKQEAgLTM2NTAsNiArMzY1
MCwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAg
IGNlbGxSZXN1bHQocmVzdWx0UGF5bG9hZC5ncHIoKSwgbm9kZSk7CiAgICAgICAgIGJyZWFrOwog
ICAgIH0KKworICAgIGNhc2UgTmV3R2VuZXJhdG9yRnJhbWU6IHsKKyAgICAgICAgY29tcGlsZU5l
d0dlbmVyYXRvckZyYW1lKG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CiAgICAgICAgIAog
ICAgIGNhc2UgVG9UaGlzOiB7CiAgICAgICAgIEFTU0VSVChub2RlLT5jaGlsZDEoKS51c2VLaW5k
KCkgPT0gVW50eXBlZFVzZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVDY0LmNwcAppbmRleCBlNzQ1Njk0MDRjMWI5Nzg0ODA2MTk3ZDE0NTQ1Y2Qx
ZGIyM2Q3YTVjLi5hOTU4Y2RhZmZlZWM1ZjBkYmQwMWE0OTZmMTZkM2E0NTIxZWY0MmI1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAK
QEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJERkdTbG93UGF0aEdlbmVyYXRvci5oIgogI2lu
Y2x1ZGUgIkRlYnVnZ2VyLmgiCiAjaW5jbHVkZSAiRGlyZWN0QXJndW1lbnRzLmgiCisjaW5jbHVk
ZSAiR2VuZXJhdG9yRnJhbWUuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRl
ICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNFbnZpcm9ubWVudFJlY29yZC5oIgpAQCAtMzY4
OCw2ICszNjg5LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkK
ICAgICAgICAgY2VsbFJlc3VsdChyZXN1bHQuZ3ByKCksIG5vZGUpOwogICAgICAgICBicmVhazsK
ICAgICB9CisKKyAgICBjYXNlIE5ld0dlbmVyYXRvckZyYW1lOiB7CisgICAgICAgIGNvbXBpbGVO
ZXdHZW5lcmF0b3JGcmFtZShub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogICAgICAgICAK
ICAgICBjYXNlIFRvVGhpczogewogICAgICAgICBBU1NFUlQobm9kZS0+Y2hpbGQxKCkudXNlS2lu
ZCgpID09IFVudHlwZWRVc2UpOwpAQCAtNDcyMCw2ICs0NzI2LDM4IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIs
IG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9CisgICAgY2FzZSBTYXZlVG9HZW5lcmF0b3JG
cmFtZTogeworICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBmcmFtZSh0aGlzLCBub2RlLT5j
aGlsZDEoKSk7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxk
MigpKTsKKworICAgICAgICBHUFJSZWcgZnJhbWVHUFIgPSBmcmFtZS5ncHIoKTsKKyAgICAgICAg
R1BSUmVnIHZhbHVlR1BSID0gdmFsdWUuZ3ByKCk7CisgICAgICAgIHVuc2lnbmVkIGdlbmVyYXRv
ckZyYW1lSW5kZXggPSBub2RlLT5nZW5lcmF0b3JGcmFtZUluZGV4KCk7CisKKyAgICAgICAgbV9q
aXQuc3RvcmU2NCh2YWx1ZUdQUiwgSklUQ29tcGlsZXI6OkFkZHJlc3MoZnJhbWVHUFIsIEdlbmVy
YXRvckZyYW1lOjpsb2NhbE9mZnNldChnZW5lcmF0b3JGcmFtZUluZGV4KSkpOworCisgICAgICAg
IG5vUmVzdWx0KG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBSZXN1bWVG
cm9tR2VuZXJhdG9yRnJhbWU6IHsKKyAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgZnJhbWUo
dGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMp
OworCisgICAgICAgIEdQUlJlZyBmcmFtZUdQUiA9IGZyYW1lLmdwcigpOworICAgICAgICBHUFJS
ZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOworICAgICAgICB1bnNpZ25lZCBnZW5lcmF0b3JG
cmFtZUluZGV4ID0gbm9kZS0+Z2VuZXJhdG9yRnJhbWVJbmRleCgpOworCisgICAgICAgIG1faml0
LmxvYWQ2NChKSVRDb21waWxlcjo6QWRkcmVzcyhmcmFtZUdQUiwgR2VuZXJhdG9yRnJhbWU6Omxv
Y2FsT2Zmc2V0KGdlbmVyYXRvckZyYW1lSW5kZXgpKSwgcmVzdWx0R1BSKTsKKyAgICAgICAganNW
YWx1ZVJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAg
Y2FzZSBQdXRHZW5lcmF0b3JGcmFtZUxvY2FsczogeworICAgICAgICBTcGVjdWxhdGVDZWxsT3Bl
cmFuZCBmcmFtZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIEdQUlJlZyBmcmFtZUdQ
UiA9IGZyYW1lLmdwcigpOworICAgICAgICBtX2ppdC5zdG9yZTMyKFRydXN0ZWRJbW0zMihub2Rl
LT5nZW5lcmF0b3JGcmFtZUxvY2FscygpKSwgSklUQ29tcGlsZXI6OkFkZHJlc3MoZnJhbWVHUFIs
IEdlbmVyYXRvckZyYW1lOjpudW1iZXJPZlNhdmVkQ2FsbGVlTG9jYWxzT2Zmc2V0KCkpKTsKKyAg
ICAgICAgbm9SZXN1bHQobm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICBjYXNlIFBy
b2ZpbGVUeXBlOiB7CiAgICAgICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNo
aWxkMSgpKTsKICAgICAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2gxKHRoaXMpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFz
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlv
blBoYXNlLmNwcAppbmRleCA3MmYyMjAwY2VhMTBiOTgxMGRiYThjN2IxOWZlZmYyNGRhYTVkYWUz
Li4wMWE3NTVlNTcxNzcyMWYxOWMwYmMzMWZhZDVjZTlhNDhiMDg5OGM1IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlv
blBoYXNlLmNwcApAQCAtMjgxLDYgKzI4MSwxMSBAQCBjbGFzcyBTdG9yZUJhcnJpZXJJbnNlcnRp
b25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICAgICAgY29uc2lkZXJCYXJyaWVy
KG1fbm9kZS0+Y2hpbGQxKCksIG1fbm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgfQorCisgICAgICAgICAgICBjYXNlIFNhdmVUb0dlbmVyYXRvckZy
YW1lOiB7CisgICAgICAgICAgICAgICAgY29uc2lkZXJCYXJyaWVyKG1fbm9kZS0+Y2hpbGQxKCks
IG1fbm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAg
ICBicmVhazsKQEAgLTI5Niw2ICszMDEsNyBAQCBjbGFzcyBTdG9yZUJhcnJpZXJJbnNlcnRpb25Q
aGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICBjYXNlIE5ld0FycmF5QnVmZmVyOgog
ICAgICAgICAgICAgY2FzZSBOZXdUeXBlZEFycmF5OgogICAgICAgICAgICAgY2FzZSBOZXdSZWdl
eHA6CisgICAgICAgICAgICBjYXNlIE5ld0dlbmVyYXRvckZyYW1lOgogICAgICAgICAgICAgY2Fz
ZSBNYXRlcmlhbGl6ZU5ld09iamVjdDoKICAgICAgICAgICAgIGNhc2UgTWF0ZXJpYWxpemVDcmVh
dGVBY3RpdmF0aW9uOgogICAgICAgICAgICAgY2FzZSBOZXdTdHJpbmdPYmplY3Q6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBo
YXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RydWN0dXJlUmVnaXN0cmF0
aW9uUGhhc2UuY3BwCmluZGV4IDJjMDU1OTg0OTg5OWJkZjZmYjExMTc1OTdlMTA1NGJmZjM1NDY2
OTMuLmUxYWVmMGIyYzM5M2Y1NjE5NDhjY2E1YTk1OWYyZTA3MTA4ODQzODggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2Uu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RydWN0dXJlUmVnaXN0cmF0
aW9uUGhhc2UuY3BwCkBAIC0xNDksNiArMTQ5LDkgQEAgY2xhc3MgU3RydWN0dXJlUmVnaXN0cmF0
aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgICAgIGNhc2UgTmV3R2VuZXJh
dG9yRnVuY3Rpb246CiAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyU3RydWN0dXJlKG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyktPmdlbmVyYXRvckZ1bmN0
aW9uU3RydWN0dXJlKCkpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgICBjYXNlIE5ld0dlbmVyYXRvckZyYW1lOgorICAgICAgICAgICAgICAgICAgICByZWdpc3Rl
clN0cnVjdHVyZShtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
LT5nZW5lcmF0b3JGcmFtZVN0cnVjdHVyZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCmluZGV4IGEzYmRm
YTdjZDVkMGY1NzI0N2YxYmU4YzQwYjI1MTBkMjlkODAwZmYuLjQ5ZDI5OWZmNTZkYjMzZTAyZDcy
YjAwYThlZTI5YjUzYjQ3NzBkYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKQEAgLTIx
Nyw2ICsyMTcsOSBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAg
IERFRklORV9PUChvcF9hc3NlcnQpCiAgICAgICAgIERFRklORV9PUChvcF9zYXZlKQogICAgICAg
ICBERUZJTkVfT1Aob3BfcmVzdW1lKQorICAgICAgICBERUZJTkVfT1Aob3BfbmV3X2dlbmVyYXRv
cl9mcmFtZSkKKyAgICAgICAgREVGSU5FX09QKG9wX3Jlc3VtZV9mcm9tX2dlbmVyYXRvcl9mcmFt
ZSkKKyAgICAgICAgREVGSU5FX09QKG9wX2NsZWFyX2dlbmVyYXRvcl9mcmFtZSkKICAgICAgICAg
REVGSU5FX09QKG9wX2RlYnVnKQogICAgICAgICBERUZJTkVfT1Aob3BfZGVsX2J5X2lkKQogICAg
ICAgICBERUZJTkVfT1Aob3BfZGl2KQpAQCAtMjg5LDYgKzI5Miw3IEBAIHZvaWQgSklUOjpwcml2
YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgREVGSU5FX09QKG9wX3B1dF9nZXR0ZXJfc2V0
dGVyX2J5X2lkKQogICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2dldHRlcl9ieV92YWwpCiAgICAg
ICAgIERFRklORV9PUChvcF9wdXRfc2V0dGVyX2J5X3ZhbCkKKyAgICAgICAgREVGSU5FX09QKG9w
X25vcCkKIAogICAgICAgICBERUZJTkVfT1Aob3BfcmV0KQogICAgICAgICBERUZJTkVfT1Aob3Bf
cnNoaWZ0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKaW5kZXggZGY3YjNkYzVlODkyMGVlNGVmOTJi
Y2FjYmFlZmYxYjRjMDBkOTM2OS4uODUzMjMyYmM2ZGUzODdiOWNiOGNjNzIxMTk3YTc0MWJlYTQ0
Y2ZlOCAxMDA3NTUKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCkBAIC00OTYsNiArNDk2LDkgQEAKICAgICAg
ICAgdm9pZCBlbWl0X29wX2Fzc2VydChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRf
b3Bfc2F2ZShJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfcmVzdW1lKEluc3Ry
dWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9yZXN1bWVfZnJvbV9nZW5lcmF0b3JfZnJh
bWUoSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2NsZWFyX2dlbmVyYXRvcl9m
cmFtZShJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfbmV3X2dlbmVyYXRvcl9m
cmFtZShJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZGVidWcoSW5zdHJ1Y3Rp
b24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2RlbF9ieV9pZChJbnN0cnVjdGlvbiopOwogICAg
ICAgICB2b2lkIGVtaXRfb3BfZGl2KEluc3RydWN0aW9uKik7CkBAIC01OTUsNiArNTk4LDcgQEAK
ICAgICAgICAgdm9pZCBlbWl0X29wX2VudW1lcmF0b3Jfc3RydWN0dXJlX3BuYW1lKEluc3RydWN0
aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9lbnVtZXJhdG9yX2dlbmVyaWNfcG5hbWUoSW5z
dHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX3RvX2luZGV4X3N0cmluZyhJbnN0cnVj
dGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3Bfbm9wKEluc3RydWN0aW9uKik7CiAKICAgICAg
ICAgdm9pZCBlbWl0U2xvd19vcF9hZGQoSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRy
eT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfYml0YW5kKEluc3RydWN0
aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKaW5kZXggNzM4Y2I2M2ZlZDkxYjQ5ODU1ZDVkMDMzZDQ2
MzM0NWZkZDQ3NmQ5Yi4uMjUwYmQ3MGFkZWY3M2NiODI5MTc2YTVhM2E4YTQyMTg1MzAzMmQzMSAx
MDA3NTUKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCkBAIC0zMiw2ICszMiw3
IEBACiAjaW5jbHVkZSAiQ29waWVkU3BhY2VJbmxpbmVzLmgiCiAjaW5jbHVkZSAiRGVidWdnZXIu
aCIKICNpbmNsdWRlICJFeGNlcHRpb24uaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JGcmFtZS5oIgog
I2luY2x1ZGUgIkhlYXAuaCIKICNpbmNsdWRlICJKSVRJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNB
cnJheS5oIgpAQCAtODkzLDYgKzg5NCwyMyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfdG9fc3Ry
aW5nKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZQogICAg
IHNsb3dQYXRoQ2FsbC5jYWxsKCk7CiB9CiAKK3ZvaWQgSklUOjplbWl0X29wX3Jlc3VtZV9mcm9t
X2dlbmVyYXRvcl9mcmFtZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQoreworICAg
IGludCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOworICAgIGludCBmcmFt
ZSA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7CisgICAgdW5zaWduZWQgaW5kZXgg
PSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS51bnNpZ25lZFZhbHVlOworICAgIGVtaXRHZXRWaXJ0
dWFsUmVnaXN0ZXIoZnJhbWUsIHJlZ1QxKTsKKyAgICBsb2FkNjQoQWRkcmVzcyhyZWdUMSwgR2Vu
ZXJhdG9yRnJhbWU6OmxvY2FsT2Zmc2V0KGluZGV4KSksIHJlZ1QwKTsKKyAgICBlbWl0UHV0Vmly
dHVhbFJlZ2lzdGVyKGRzdCk7Cit9CisKK3ZvaWQgSklUOjplbWl0X29wX2NsZWFyX2dlbmVyYXRv
cl9mcmFtZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIGludCBmcmFt
ZSA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CisgICAgZW1pdEdldFZpcnR1YWxS
ZWdpc3RlcihmcmFtZSwgcmVnVDEpOworICAgIHN0b3JlMzIoVHJ1c3RlZEltbTMyKDApLCBBZGRy
ZXNzKHJlZ1QxLCBHZW5lcmF0b3JGcmFtZTo6bnVtYmVyT2ZTYXZlZENhbGxlZUxvY2Fsc09mZnNl
dCgpKSk7Cit9CisKICNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KQogCiB2b2lkIEpJVDo6ZW1pdF9v
cF9sb29wX2hpbnQoSW5zdHJ1Y3Rpb24qKQpAQCAtMTQ0MSw2ICsxNDU5LDE2IEBAIHZvaWQgSklU
OjplbWl0X29wX3Jlc3VtZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIHNs
b3dQYXRoQ2FsbC5jYWxsKCk7CiB9CiAKK3ZvaWQgSklUOjplbWl0X29wX25ld19nZW5lcmF0b3Jf
ZnJhbWUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBKSVRTbG93UGF0
aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX25l
d19nZW5lcmF0b3JfZnJhbWUpOworICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7Cit9CisKK3ZvaWQg
SklUOjplbWl0X29wX25vcChJbnN0cnVjdGlvbiopCit7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpT
QwogCiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKaW5kZXggMmI0ZTYxOTg2ZDMxMmFj
OWU0Zjg3MzczY2U3YWEwYjlmZDBjZTc1YS4uYWZlMDk2ODQ4OGY0NmQxNjc1YzkxN2VjYjJiNjIw
YzAwNTYxMjI0NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
T2Zmc2V0c0V4dHJhY3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJEaXJl
Y3RBcmd1bWVudHMuaCIKICNpbmNsdWRlICJFeGNlcHRpb24uaCIKICNpbmNsdWRlICJFeGVjdXRh
YmxlLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yRnJhbWUuaCIKICNpbmNsdWRlICJIZWFwLmgiCiAj
aW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KaW5kZXgg
Y2Q0Y2U5MDYzYjE5NTc1YTk1N2UzY2EzZTIyYmU1NzkxNWJkYjU5YS4uNDczNTdiNjEyZGNlYTE1
MTk4MTViMGVkYjJlNDJhMGMxYzJiOWZiNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQpAQCAtMTY1LDYgKzE2NSw3IEBAIGNv
bnN0IFNsb3RTaXplID0gOAogCiBjb25zdCBKU0Vudmlyb25tZW50UmVjb3JkX3ZhcmlhYmxlcyA9
IChzaXplb2YgSlNFbnZpcm9ubWVudFJlY29yZCArIFNsb3RTaXplIC0gMSkgJiB+KFNsb3RTaXpl
IC0gMSkKIGNvbnN0IERpcmVjdEFyZ3VtZW50c19zdG9yYWdlID0gKHNpemVvZiBEaXJlY3RBcmd1
bWVudHMgKyBTbG90U2l6ZSAtIDEpICYgfihTbG90U2l6ZSAtIDEpCitjb25zdCBHZW5lcmF0b3JG
cmFtZV9jYWxsZWVMb2NhbHMgPSAoc2l6ZW9mIEdlbmVyYXRvckZyYW1lICsgU2xvdFNpemUgLSAx
KSAmIH4oU2xvdFNpemUgLSAxKQogCiBjb25zdCBTdGFja0FsaWdubWVudCA9IDE2CiBjb25zdCBT
dGFja0FsaWdubWVudFNsb3RzID0gMgpAQCAtMTI1Niw2ICsxMjU3LDEyIEBAIF9sbGludF9vcF9u
ZXdfcmVnZXhwOgogICAgIGRpc3BhdGNoKDMpCiAKIAorX2xsaW50X29wX25ld19nZW5lcmF0b3Jf
ZnJhbWU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRo
X25ld19nZW5lcmF0b3JfZnJhbWUpCisgICAgZGlzcGF0Y2goMykKKworCiBfbGxpbnRfb3BfbGVz
czoKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfbGVz
cykKQEAgLTE1OTgsNyArMTYwNSw3IEBAIF9sbGludF9vcF9zYXZlOgogX2xsaW50X29wX3Jlc3Vt
ZToKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfcmVz
dW1lKQotICAgIGRpc3BhdGNoKDMpCisgICAgZGlzcGF0Y2goNCkKIAogCiBfbGxpbnRfb3BfY3Jl
YXRlX2xleGljYWxfZW52aXJvbm1lbnQ6CkBAIC0xNzA4LDYgKzE3MTUsMTAgQEAgX2xsaW50X29w
X2NvcHlfcmVzdDoKICAgICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF9jb3B5X3Jlc3QpCiAgICAg
ZGlzcGF0Y2goNCkKIAorX2xsaW50X29wX25vcDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
ZGlzcGF0Y2goMSkKKwogCiAjIExhc3RseSwgbWFrZSBzdXJlIHRoYXQgd2UgY2FuIGxpbmsgZXZl
biB0aG91Z2ggd2UgZG9uJ3Qgc3VwcG9ydCBhbGwgb3Bjb2Rlcy4KICMgVGhlc2Ugb3Bjb2RlcyBz
aG91bGQgbmV2ZXIgYXJpc2Ugd2hlbiB1c2luZyBMTEludCBvciBlaXRoZXIgSklULiBXZSBhc3Nl
cnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVy
cHJldGVyNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXI2NC5hc20KaW5kZXggODUxNzNiYzgyNjIxNDZiMGUwZDFlMDE5MmI3MDYwMjhiYmQ5MDY4
My4uNDkyYzYzYzI1Y2RmYWUzMmZmOWVlYjhhNGQxOTdlNTg1NTMxOWFjMSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20K
QEAgLTIzMjEsMyArMjMyMSwxOCBAQCBfbGxpbnRfb3BfZ2V0X3Jlc3RfbGVuZ3RoOgogICAgIGxv
YWRpc0Zyb21JbnN0cnVjdGlvbigxLCB0MSkKICAgICBzdG9yZXEgdDAsIFtjZnIsIHQxLCA4XQog
ICAgIGRpc3BhdGNoKDMpCisKK19sbGludF9vcF9jbGVhcl9nZW5lcmF0b3JfZnJhbWU6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRWYXJpYWJsZSgxLCB0MCkKKyAgICBzdG9yZWkgMCwg
R2VuZXJhdG9yRnJhbWU6Om1fbnVtYmVyT2ZTYXZlZENhbGxlZUxvY2Fsc1t0MF0KKyAgICBkaXNw
YXRjaCgyKQorCitfbGxpbnRfb3BfcmVzdW1lX2Zyb21fZ2VuZXJhdG9yX2ZyYW1lOgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkVmFyaWFibGUoMiwgdDApCisgICAgbG9hZGlzRnJvbUlu
c3RydWN0aW9uKDMsIHQxKQorICAgIGxvYWRxIEdlbmVyYXRvckZyYW1lX2NhbGxlZUxvY2Fsc1t0
MCwgdDEsIDhdLCB0MAorICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigxLCB0MSkKKyAgICBzdG9y
ZXEgdDAsIFtjZnIsIHQxLCA4XQorICAgIGRpc3BhdGNoKDQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1BhcnNlci5jcHAKaW5kZXggOGQzNzA2MzQ1MTI4ZTlkZjlkYWMzMjU3ZjdjNWY0ZTVh
YjNhOWMzNC4uNjQ3MDU2OWM0NjcwNjllN2NlNjI3NzIxNzAzMWZjMjhiZDljYWZkZSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcApAQCAtMjUwLDkgKzI1MCwxMCBAQAog
ICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24gPSBmYWxzZTsKICAgICBpZiAo
bV9sZXhlci0+aXNSZXBhcnNpbmdGdW5jdGlvbigpKSB7CiAgICAgICAgIFBhcnNlckZ1bmN0aW9u
SW5mbzxBU1RCdWlsZGVyPiBmdW5jdGlvbkluZm87Ci0gICAgICAgIGlmIChwYXJzZU1vZGUgPT0g
U291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JCb2R5TW9kZSkKLSAgICAgICAgICAgIGZ1bmN0aW9u
SW5mby5wYXJhbWV0ZXJzID0gY3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhjb250ZXh0KTsKLSAg
ICAgICAgZWxzZQorICAgICAgICBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2Vu
ZXJhdG9yQm9keU1vZGUpIHsKKyAgICAgICAgICAgIHVuc2lnbmVkIHBhcmFtZXRlckNvdW50ID0g
MDsKKyAgICAgICAgICAgIGZ1bmN0aW9uSW5mby5wYXJhbWV0ZXJzID0gY3JlYXRlR2VuZXJhdG9y
UGFyYW1ldGVycyhjb250ZXh0LCBwYXJhbWV0ZXJDb3VudCk7CisgICAgICAgIH0gZWxzZQogICAg
ICAgICAgICAgcGFyc2VGdW5jdGlvblBhcmFtZXRlcnMoY29udGV4dCwgcGFyc2VNb2RlLCBmdW5j
dGlvbkluZm8pOwogICAgICAgICBtX3BhcmFtZXRlcnMgPSBmdW5jdGlvbkluZm8ucGFyYW1ldGVy
czsKIApAQCAtNDg1LDEwICs0ODYsOSBAQAogCiAgICAgUGFyc2VyRnVuY3Rpb25JbmZvPFRyZWVC
dWlsZGVyPiBpbmZvOwogICAgIGluZm8ubmFtZSA9ICZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5udWxs
SWRlbnRpZmllcjsKLSAgICBpbmZvLnBhcmFtZXRlcnMgPSBjcmVhdGVHZW5lcmF0b3JQYXJhbWV0
ZXJzKGNvbnRleHQpOworICAgIGluZm8ucGFyYW1ldGVycyA9IGNyZWF0ZUdlbmVyYXRvclBhcmFt
ZXRlcnMoY29udGV4dCwgaW5mby5wYXJhbWV0ZXJDb3VudCk7CiAgICAgaW5mby5zdGFydE9mZnNl
dCA9IHBhcmFtZXRlcnNTdGFydDsKICAgICBpbmZvLnN0YXJ0TGluZSA9IHRva2VuTGluZSgpOwot
ICAgIGluZm8ucGFyYW1ldGVyQ291bnQgPSA0OyAvLyBnZW5lcmF0b3IsIHN0YXRlLCB2YWx1ZSwg
cmVzdW1lIG1vZGUKIAogICAgIHsKICAgICAgICAgQXV0b1BvcFNjb3BlUmVmIGdlbmVyYXRvckJv
ZHlTY29wZSh0aGlzLCBwdXNoU2NvcGUoKSk7CkBAIC0xNzgxLDMyICsxNzgxLDMxIEBAIHN0YXRp
YyBjb25zdCBjaGFyKiBzdHJpbmdGb3JGdW5jdGlvbk1vZGUoU291cmNlUGFyc2VNb2RlIG1vZGUp
CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+Ci10ZW1wbGF0ZSA8Y2xhc3MgVHJl
ZUJ1aWxkZXI+IHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpGb3JtYWxQYXJhbWV0ZXJMaXN0IFBhcnNl
cjxMZXhlclR5cGU+OjpjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKFRyZWVCdWlsZGVyJiBjb250
ZXh0KQordGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6
Rm9ybWFsUGFyYW1ldGVyTGlzdCBQYXJzZXI8TGV4ZXJUeXBlPjo6Y3JlYXRlR2VuZXJhdG9yUGFy
YW1ldGVycyhUcmVlQnVpbGRlciYgY29udGV4dCwgdW5zaWduZWQmIHBhcmFtZXRlckNvdW50KQog
ewogICAgIGF1dG8gcGFyYW1ldGVycyA9IGNvbnRleHQuY3JlYXRlRm9ybWFsUGFyYW1ldGVyTGlz
dCgpOwogCiAgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CiAg
ICAgSlNUZXh0UG9zaXRpb24gcG9zaXRpb24gPSB0b2tlblN0YXJ0UG9zaXRpb24oKTsKIAotICAg
IC8vIEBnZW5lcmF0b3IKLSAgICBkZWNsYXJlUGFyYW1ldGVyKCZtX3ZtLT5wcm9wZXJ0eU5hbWVz
LT5nZW5lcmF0b3JQcml2YXRlTmFtZSk7Ci0gICAgYXV0byBnZW5lcmF0b3IgPSBjb250ZXh0LmNy
ZWF0ZUJpbmRpbmdMb2NhdGlvbihsb2NhdGlvbiwgbV92bS0+cHJvcGVydHlOYW1lcy0+Z2VuZXJh
dG9yUHJpdmF0ZU5hbWUsIHBvc2l0aW9uLCBwb3NpdGlvbiwgQXNzaWdubWVudENvbnRleHQ6OkRl
Y2xhcmF0aW9uU3RhdGVtZW50KTsKLSAgICBjb250ZXh0LmFwcGVuZFBhcmFtZXRlcihwYXJhbWV0
ZXJzLCBnZW5lcmF0b3IsIDApOworICAgIGF1dG8gYWRkUGFyYW1ldGVyID0gWyZdKGNvbnN0IElk
ZW50aWZpZXImIG5hbWUpIHsKKyAgICAgICAgZGVjbGFyZVBhcmFtZXRlcigmbmFtZSk7CisgICAg
ICAgIGF1dG8gYmluZGluZyA9IGNvbnRleHQuY3JlYXRlQmluZGluZ0xvY2F0aW9uKGxvY2F0aW9u
LCBuYW1lLCBwb3NpdGlvbiwgcG9zaXRpb24sIEFzc2lnbm1lbnRDb250ZXh0OjpEZWNsYXJhdGlv
blN0YXRlbWVudCk7CisgICAgICAgIGNvbnRleHQuYXBwZW5kUGFyYW1ldGVyKHBhcmFtZXRlcnMs
IGJpbmRpbmcsIDApOworICAgIH07CiAKKyAgICAvLyBAZ2VuZXJhdG9yCisgICAgYWRkUGFyYW1l
dGVyKG1fdm0tPnByb3BlcnR5TmFtZXMtPmdlbmVyYXRvclByaXZhdGVOYW1lKTsKICAgICAvLyBA
Z2VuZXJhdG9yU3RhdGUKLSAgICBkZWNsYXJlUGFyYW1ldGVyKCZtX3ZtLT5wcm9wZXJ0eU5hbWVz
LT5nZW5lcmF0b3JTdGF0ZVByaXZhdGVOYW1lKTsKLSAgICBhdXRvIGdlbmVyYXRvclN0YXRlID0g
Y29udGV4dC5jcmVhdGVCaW5kaW5nTG9jYXRpb24obG9jYXRpb24sIG1fdm0tPnByb3BlcnR5TmFt
ZXMtPmdlbmVyYXRvclN0YXRlUHJpdmF0ZU5hbWUsIHBvc2l0aW9uLCBwb3NpdGlvbiwgQXNzaWdu
bWVudENvbnRleHQ6OkRlY2xhcmF0aW9uU3RhdGVtZW50KTsKLSAgICBjb250ZXh0LmFwcGVuZFBh
cmFtZXRlcihwYXJhbWV0ZXJzLCBnZW5lcmF0b3JTdGF0ZSwgMCk7Ci0KKyAgICBhZGRQYXJhbWV0
ZXIobV92bS0+cHJvcGVydHlOYW1lcy0+Z2VuZXJhdG9yU3RhdGVQcml2YXRlTmFtZSk7CiAgICAg
Ly8gQGdlbmVyYXRvclZhbHVlCi0gICAgZGVjbGFyZVBhcmFtZXRlcigmbV92bS0+cHJvcGVydHlO
YW1lcy0+Z2VuZXJhdG9yVmFsdWVQcml2YXRlTmFtZSk7Ci0gICAgYXV0byBnZW5lcmF0b3JWYWx1
ZSA9IGNvbnRleHQuY3JlYXRlQmluZGluZ0xvY2F0aW9uKGxvY2F0aW9uLCBtX3ZtLT5wcm9wZXJ0
eU5hbWVzLT5nZW5lcmF0b3JWYWx1ZVByaXZhdGVOYW1lLCBwb3NpdGlvbiwgcG9zaXRpb24sIEFz
c2lnbm1lbnRDb250ZXh0OjpEZWNsYXJhdGlvblN0YXRlbWVudCk7Ci0gICAgY29udGV4dC5hcHBl
bmRQYXJhbWV0ZXIocGFyYW1ldGVycywgZ2VuZXJhdG9yVmFsdWUsIDApOwotCisgICAgYWRkUGFy
YW1ldGVyKG1fdm0tPnByb3BlcnR5TmFtZXMtPmdlbmVyYXRvclZhbHVlUHJpdmF0ZU5hbWUpOwog
ICAgIC8vIEBnZW5lcmF0b3JSZXN1bWVNb2RlCi0gICAgZGVjbGFyZVBhcmFtZXRlcigmbV92bS0+
cHJvcGVydHlOYW1lcy0+Z2VuZXJhdG9yUmVzdW1lTW9kZVByaXZhdGVOYW1lKTsKLSAgICBhdXRv
IGdlbmVyYXRvclJlc3VtZU1vZGUgPSBjb250ZXh0LmNyZWF0ZUJpbmRpbmdMb2NhdGlvbihsb2Nh
dGlvbiwgbV92bS0+cHJvcGVydHlOYW1lcy0+Z2VuZXJhdG9yUmVzdW1lTW9kZVByaXZhdGVOYW1l
LCBwb3NpdGlvbiwgcG9zaXRpb24sIEFzc2lnbm1lbnRDb250ZXh0OjpEZWNsYXJhdGlvblN0YXRl
bWVudCk7Ci0gICAgY29udGV4dC5hcHBlbmRQYXJhbWV0ZXIocGFyYW1ldGVycywgZ2VuZXJhdG9y
UmVzdW1lTW9kZSwgMCk7CisgICAgYWRkUGFyYW1ldGVyKG1fdm0tPnByb3BlcnR5TmFtZXMtPmdl
bmVyYXRvclJlc3VtZU1vZGVQcml2YXRlTmFtZSk7CisgICAgLy8gQGdlbmVyYXRvckZyYW1lCisg
ICAgYWRkUGFyYW1ldGVyKG1fdm0tPnByb3BlcnR5TmFtZXMtPmdlbmVyYXRvckZyYW1lUHJpdmF0
ZU5hbWUpOworCisgICAgcGFyYW1ldGVyQ291bnQgPSA1OwogCiAgICAgcmV0dXJuIHBhcmFtZXRl
cnM7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAppbmRleCBhMTFiMzVjMTAx
ZmU1Yjg0OWNiMjMzMDk2YzU2ODMxMzcwNjZjYWJmLi5lNjE0OWEzYWMzNjk0MDQ4OTNkMjM2OTY5
MzE2YjVjMzAzM2JlODUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1BhcnNlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKQEAg
LTEyNTksNyArMTI1OSw3IEBAIGNsYXNzIFBhcnNlciB7CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRy
ZWVCdWlsZGVyPiBORVZFUl9JTkxJTkUgYm9vbCBwYXJzZUZ1bmN0aW9uSW5mbyhUcmVlQnVpbGRl
ciYsIEZ1bmN0aW9uUmVxdWlyZW1lbnRzLCBTb3VyY2VQYXJzZU1vZGUsIGJvb2wgbmFtZUlzSW5D
b250YWluaW5nU2NvcGUsIENvbnN0cnVjdG9yS2luZCwgU3VwZXJCaW5kaW5nLCBpbnQgZnVuY3Rp
b25LZXl3b3JkU3RhcnQsIFBhcnNlckZ1bmN0aW9uSW5mbzxUcmVlQnVpbGRlcj4mLCBGdW5jdGlv
bkRlZmluaXRpb25UeXBlKTsKICAgICAKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+
IE5FVkVSX0lOTElORSBpbnQgcGFyc2VGdW5jdGlvblBhcmFtZXRlcnMoVHJlZUJ1aWxkZXImLCBT
b3VyY2VQYXJzZU1vZGUsIFBhcnNlckZ1bmN0aW9uSW5mbzxUcmVlQnVpbGRlcj4mKTsKLSAgICB0
ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElORSB0eXBlbmFtZSBUcmVlQnVp
bGRlcjo6Rm9ybWFsUGFyYW1ldGVyTGlzdCBjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKFRyZWVC
dWlsZGVyJik7CisgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBORVZFUl9JTkxJTkUg
dHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkZvcm1hbFBhcmFtZXRlckxpc3QgY3JlYXRlR2VuZXJhdG9y
UGFyYW1ldGVycyhUcmVlQnVpbGRlciYsIHVuc2lnbmVkJiBwYXJhbWV0ZXJDb3VudCk7CiAKICAg
ICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElORSBUcmVlQ2xhc3NFeHBy
ZXNzaW9uIHBhcnNlQ2xhc3MoVHJlZUJ1aWxkZXImLCBGdW5jdGlvblJlcXVpcmVtZW50cywgUGFy
c2VyQ2xhc3NJbmZvPFRyZWVCdWlsZGVyPiYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAppbmRleCA3OGI0M2M0ZDM4OWZmN2E5MDgz
MTNiNTU0MDU3MGU4ODJlMWIwMzcxLi4wYzZhNzNlNTU1NzYyMDkwNTUxMjIxNTMwZDcyYTM0Yjhm
ZDI1Y2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25T
bG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNs
b3dQYXRocy5jcHAKQEAgLTY5NywxOCArNjk3LDcgQEAgc3RhdGljIHZvaWQgdXBkYXRlUmVzdWx0
UHJvZmlsZUZvckJpbmFyeUFyaXRoT3AoRXhlY1N0YXRlKiwgSW5zdHJ1Y3Rpb24qLCBKU1ZhbHUK
ICAgICAvLyBPbmx5IHNhdmUgdmFyaWFibGVzIGFuZCB0ZW1wb3JhcnkgcmVnaXN0ZXJzLiBUaGUg
c2NvcGUgcmVnaXN0ZXJzIGFyZSBpbmNsdWRlZCBpbiB0aGVtLgogICAgIC8vIEJ1dCBwYXJhbWV0
ZXJzIGFyZSBub3QgaW5jbHVkZWQuIEJlY2F1c2UgdGhlIGdlbmVyYXRvciBpbXBsZW1lbnRhdGlv
biByZXBsYWNlcyB0aGUgdmFsdWVzIG9mIHBhcmFtZXRlcnMgb24gZWFjaCBnZW5lcmF0b3IubmV4
dCgpIGNhbGwuCiAgICAgQkVHSU4oKTsKLSAgICBKU1ZhbHVlIGdlbmVyYXRvciA9IE9QKDEpLmpz
VmFsdWUoKTsKLSAgICBHZW5lcmF0b3JGcmFtZSogZnJhbWUgPSBudWxscHRyOwotICAgIEpTVmFs
dWUgdmFsdWUgPSBnZW5lcmF0b3IuZ2V0KGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5nZW5l
cmF0b3JGcmFtZVByaXZhdGVOYW1lKTsKLSAgICBpZiAoIXZhbHVlLmlzTnVsbCgpKQotICAgICAg
ICBmcmFtZSA9IGpzQ2FzdDxHZW5lcmF0b3JGcmFtZSo+KHZhbHVlKTsKLSAgICBlbHNlIHsKLSAg
ICAgICAgLy8gRklYTUU6IE9uY2UgSlNHZW5lcmF0b3Igc3BlY2lhbGl6ZWQgb2JqZWN0IGlzIGlu
dHJvZHVjZWQsIHRoaXMgR2VuZXJhdG9yRnJhbWUgc2hvdWxkIGJlIGVtYmVkZWQgaW50byBpdCB0
byBhdm9pZCBhbGxvY2F0aW9ucy4KLSAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE1MTU0NQotICAgICAgICBmcmFtZSA9IEdlbmVyYXRvckZyYW1lOjpj
cmVhdGUoZXhlYy0+dm0oKSwgIGV4ZWMtPmNvZGVCbG9jaygpLT5udW1DYWxsZWVMb2NhbHMoKSk7
Ci0gICAgICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGdlbmVyYXRvciwgdHJ1ZSwgUHV0UHJvcGVy
dHlTbG90OjpQdXRCeUlkKTsKLSAgICAgICAgYXNPYmplY3QoZ2VuZXJhdG9yKS0+bWV0aG9kVGFi
bGUoZXhlYy0+dm0oKSktPnB1dChhc09iamVjdChnZW5lcmF0b3IpLCBleGVjLCBleGVjLT5wcm9w
ZXJ0eU5hbWVzKCkuZ2VuZXJhdG9yRnJhbWVQcml2YXRlTmFtZSwgZnJhbWUsIHNsb3QpOwotICAg
IH0KKyAgICBHZW5lcmF0b3JGcmFtZSogZnJhbWUgPSBqc0Nhc3Q8R2VuZXJhdG9yRnJhbWUqPihP
UCgxKS5qc1ZhbHVlKCkpOwogICAgIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9IHBj
WzJdLnUudW5zaWduZWRWYWx1ZTsKICAgICBmcmFtZS0+c2F2ZShleGVjLCBleGVjLT5jb2RlQmxv
Y2soKS0+bGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQobGl2ZUNhbGxlZUxvY2Fsc0luZGV4KSk7CiAg
ICAgRU5EKCk7CkBAIC03MTcsOCArNzA2LDcgQEAgc3RhdGljIHZvaWQgdXBkYXRlUmVzdWx0UHJv
ZmlsZUZvckJpbmFyeUFyaXRoT3AoRXhlY1N0YXRlKiwgSW5zdHJ1Y3Rpb24qLCBKU1ZhbHUKIFNM
T1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9yZXN1bWUpCiB7CiAgICAgQkVHSU4oKTsKLSAgICBKU1Zh
bHVlIGdlbmVyYXRvciA9IE9QKDEpLmpzVmFsdWUoKTsKLSAgICBHZW5lcmF0b3JGcmFtZSogZnJh
bWUgPSBqc0Nhc3Q8R2VuZXJhdG9yRnJhbWUqPihnZW5lcmF0b3IuZ2V0KGV4ZWMsIGV4ZWMtPnBy
b3BlcnR5TmFtZXMoKS5nZW5lcmF0b3JGcmFtZVByaXZhdGVOYW1lKSk7CisgICAgR2VuZXJhdG9y
RnJhbWUqIGZyYW1lID0ganNDYXN0PEdlbmVyYXRvckZyYW1lKj4oT1AoMSkuanNWYWx1ZSgpKTsK
ICAgICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSBwY1syXS51LnVuc2lnbmVkVmFs
dWU7CiAgICAgZnJhbWUtPnJlc3VtZShleGVjLCBleGVjLT5jb2RlQmxvY2soKS0+bGl2ZUNhbGxl
ZUxvY2Fsc0F0WWllbGQobGl2ZUNhbGxlZUxvY2Fsc0luZGV4KSk7CiAgICAgRU5EKCk7CkBAIC03
OTcsNCArNzg1LDEyIEBAIHN0YXRpYyB2b2lkIHVwZGF0ZVJlc3VsdFByb2ZpbGVGb3JCaW5hcnlB
cml0aE9wKEV4ZWNTdGF0ZSosIEluc3RydWN0aW9uKiwgSlNWYWx1CiAgICAgRU5EKCk7CiB9CiAK
K1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9uZXdfZ2VuZXJhdG9yX2ZyYW1lKQoreworICAgIEJF
R0lOKCk7CisgICAgdW5zaWduZWQgZ2VuZXJhdG9yRnJhbWVTaXplID0gcGNbMl0udS51bnNpZ25l
ZFZhbHVlOworICAgIFJFVFVSTihHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlKGV4ZWMsIGdlbmVyYXRv
ckZyYW1lU2l6ZSkpOworfQorCisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAppbmRleCBmMDBkODcwNWQ0ZTY3
ZmU0ZDQwNTliZGUxNjhlZTg4ZjU3ZGY3MmU3Li4wNjUwYzRlOGNiNzE1NTkxN2NkMWQ3YTJmNzdh
N2M3ZjcyOWExNTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21tb25TbG93UGF0aHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21t
b25TbG93UGF0aHMuaApAQCAtMjk2LDYgKzI5Niw3IEBAIGlubGluZSB2b2lkIGRlY29kZVJlc3Vs
dChTbG93UGF0aFJldHVyblR5cGUgcmVzdWx0LCB2b2lkKiYgYSwgdm9pZComIGIpCiBTTE9XX1BB
VEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3B1c2hfd2l0aF9zY29wZSk7CiBTTE9XX1BBVEhfSElE
REVOX0RFQ0woc2xvd19wYXRoX3Jlc29sdmVfc2NvcGUpOwogU0xPV19QQVRIX0hJRERFTl9ERUNM
KHNsb3dfcGF0aF9jb3B5X3Jlc3QpOworU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9u
ZXdfZ2VuZXJhdG9yX2ZyYW1lKTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZyYW1lLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZyYW1lLmNwcAppbmRleCBlZjZlYTdh
MTAwMjU4YzNlY2UwNGRhYWI0M2JkYWE4NTFlYzhmNzE1Li4zMGI4MTRhNjM2NjcyNjgyNWMzODQ5
ZmZiMjgwNGQyZmYzODA0MTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9HZW5lcmF0b3JGcmFtZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvR2VuZXJhdG9yRnJhbWUuY3BwCkBAIC0zMCw2MCArMzAsNjAgQEAKICNpbmNsdWRlICJIZWFw
SXRlcmF0aW9uU2NvcGUuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1
ZGUgIkpTQ2VsbElubGluZXMuaCIKKyNpbmNsdWRlICJKU09iamVjdElubGluZXMuaCIKICNpbmNs
dWRlICJTbG90VmlzaXRvcklubGluZXMuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgi
CiAKIG5hbWVzcGFjZSBKU0MgewogCi1jb25zdCBDbGFzc0luZm8gR2VuZXJhdG9yRnJhbWU6OnNf
aW5mbyA9IHsgIkdlbmVyYXRvckZyYW1lIiwgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhP
RF9UQUJMRShHZW5lcmF0b3JGcmFtZSkgfTsKK2NvbnN0IENsYXNzSW5mbyBHZW5lcmF0b3JGcmFt
ZTo6c19pbmZvID0geyAiR2VuZXJhdG9yRnJhbWUiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBD
UkVBVEVfTUVUSE9EX1RBQkxFKEdlbmVyYXRvckZyYW1lKSB9OwogCi1HZW5lcmF0b3JGcmFtZTo6
R2VuZXJhdG9yRnJhbWUoVk0mIHZtLCBzaXplX3QgbnVtYmVyT2ZDYWxsZWVMb2NhbHMpCi0gICAg
OiBCYXNlKHZtLCB2bS5nZW5lcmF0b3JGcmFtZVN0cnVjdHVyZS5nZXQoKSkKLSAgICAsIG1fbnVt
YmVyT2ZDYWxsZWVMb2NhbHMobnVtYmVyT2ZDYWxsZWVMb2NhbHMpCitHZW5lcmF0b3JGcmFtZTo6
R2VuZXJhdG9yRnJhbWUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEJhc2Uo
dm0sIHN0cnVjdHVyZSkKIHsKIH0KIAotdm9pZCBHZW5lcmF0b3JGcmFtZTo6ZmluaXNoQ3JlYXRp
b24oVk0mIHZtKQotewotICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKLSAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IG1fbnVtYmVyT2ZDYWxsZWVMb2NhbHM7ICsraSkKLSAgICAgICAgbG9j
YWxBdChpKS5jbGVhcigpOwotfQotCiBTdHJ1Y3R1cmUqIEdlbmVyYXRvckZyYW1lOjpjcmVhdGVT
dHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHBy
b3RvdHlwZSkKIHsKLSAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVj
dCwgcHJvdG90eXBlLCBUeXBlSW5mbyhDZWxsVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkp
OworICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5
cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKIH0KIAot
R2VuZXJhdG9yRnJhbWUqIEdlbmVyYXRvckZyYW1lOjpjcmVhdGUoVk0mIHZtLCBzaXplX3QgbnVt
YmVyT2ZMb2NhbHMpCitHZW5lcmF0b3JGcmFtZSogR2VuZXJhdG9yRnJhbWU6OmNyZWF0ZShWTSYg
dm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBzaXplX3QgbnVtYmVyT2ZDYWxsZWVMb2NhbHMpCiB7
CiAgICAgR2VuZXJhdG9yRnJhbWUqIHJlc3VsdCA9CiAgICAgICAgIG5ldyAoCiAgICAgICAgICAg
ICBOb3ROdWxsLAotICAgICAgICAgICAgYWxsb2NhdGVDZWxsPEdlbmVyYXRvckZyYW1lPih2bS5o
ZWFwLCBhbGxvY2F0aW9uU2l6ZUZvckxvY2FscyhudW1iZXJPZkxvY2FscykpKQotICAgICAgICBH
ZW5lcmF0b3JGcmFtZSh2bSwgbnVtYmVyT2ZMb2NhbHMpOworICAgICAgICAgICAgYWxsb2NhdGVD
ZWxsPEdlbmVyYXRvckZyYW1lPih2bS5oZWFwLCBhbGxvY2F0aW9uU2l6ZUZvckxvY2FscyhudW1i
ZXJPZkNhbGxlZUxvY2FscykpKQorICAgICAgICBHZW5lcmF0b3JGcmFtZSh2bSwgc3RydWN0dXJl
KTsKICAgICByZXN1bHQtPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICByZXR1cm4gcmVzdWx0Owog
fQogCitHZW5lcmF0b3JGcmFtZSogR2VuZXJhdG9yRnJhbWU6OmNyZWF0ZShFeGVjU3RhdGUqIGV4
ZWMsIHNpemVfdCBudW1iZXJPZkNhbGxlZUxvY2FscykKK3sKKyAgICByZXR1cm4gY3JlYXRlKGV4
ZWMtPnZtKCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+Z2VuZXJhdG9yRnJhbWVTdHJ1
Y3R1cmUoKSwgbnVtYmVyT2ZDYWxsZWVMb2NhbHMpOworfQorCiB2b2lkIEdlbmVyYXRvckZyYW1l
OjpzYXZlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZUNhbGxlZUxv
Y2FscykKIHsKICAgICAvLyBPbmx5IHNhdmUgY2FsbGVlIGxvY2Fscy4KICAgICAvLyBFdmVyeSB0
aW1lIGEgZ2VuZXJhdG9yIGlzIGNhbGxlZCAob3IgcmVzdW1lZCksIHBhcmFtZXRlcnMgc2hvdWxk
IGJlIHJlcGxhY2VkLgotICAgIEFTU0VSVChsaXZlQ2FsbGVlTG9jYWxzLm51bUJpdHMoKSA8PSBt
X251bWJlck9mQ2FsbGVlTG9jYWxzKTsKKyAgICB1bnNpZ25lZCBnZW5lcmF0b3JGcmFtZUluZGV4
ID0gMDsKICAgICBsaXZlQ2FsbGVlTG9jYWxzLmZvckVhY2hTZXRCaXQoWyZdKHNpemVfdCBpbmRl
eCkgewotICAgICAgICBsb2NhbEF0KGluZGV4KS5zZXQoZXhlYy0+dm0oKSwgdGhpcywgZXhlYy0+
dW5jaGVja2VkUih2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChpbmRleCkpLmpzVmFsdWUoKSk7Cisg
ICAgICAgIGxvY2FsQXQoZ2VuZXJhdG9yRnJhbWVJbmRleCsrKS5zZXQoZXhlYy0+dm0oKSwgdGhp
cywgZXhlYy0+dW5jaGVja2VkUih2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChpbmRleCkpLmpzVmFs
dWUoKSk7CiAgICAgfSk7CisgICAgbV9udW1iZXJPZlNhdmVkQ2FsbGVlTG9jYWxzID0gZ2VuZXJh
dG9yRnJhbWVJbmRleDsKIH0KIAogdm9pZCBHZW5lcmF0b3JGcmFtZTo6cmVzdW1lKEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZUNhbGxlZUxvY2FscykKIHsKICAgICAv
LyBPbmx5IHJlc3VtZSBjYWxsZWUgbG9jYWxzLgogICAgIC8vIEV2ZXJ5IHRpbWUgYSBnZW5lcmF0
b3IgaXMgY2FsbGVkIChvciByZXN1bWVkKSwgcGFyYW1ldGVycyBzaG91bGQgYmUgcmVwbGFjZWQu
CisgICAgdW5zaWduZWQgZ2VuZXJhdG9yRnJhbWVJbmRleCA9IDA7CiAgICAgbGl2ZUNhbGxlZUxv
Y2Fscy5mb3JFYWNoU2V0Qml0KFsmXShzaXplX3QgaW5kZXgpIHsKLSAgICAgICAgZXhlYy0+dW5j
aGVja2VkUih2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChpbmRleCkpID0gbG9jYWxBdChpbmRleCku
Z2V0KCk7Ci0gICAgICAgIGxvY2FsQXQoaW5kZXgpLmNsZWFyKCk7CisgICAgICAgIGV4ZWMtPnVu
Y2hlY2tlZFIodmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaW5kZXgpKSA9IGxvY2FsQXQoZ2VuZXJh
dG9yRnJhbWVJbmRleCsrKS5nZXQoKTsKICAgICB9KTsKKyAgICBtX251bWJlck9mU2F2ZWRDYWxs
ZWVMb2NhbHMgPSAwOwogfQogCiB2b2lkIEdlbmVyYXRvckZyYW1lOjp2aXNpdENoaWxkcmVuKEpT
Q2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCkBAIC05MSw3ICs5MSw3IEBAIHZvaWQg
R2VuZXJhdG9yRnJhbWU6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYg
dmlzaXRvcikKICAgICBHZW5lcmF0b3JGcmFtZSogdGhpc09iamVjdCA9IGpzQ2FzdDxHZW5lcmF0
b3JGcmFtZSo+KGNlbGwpOwogICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlz
aXRvcik7CiAgICAgLy8gU2luY2Ugb25seSB0cnVlIGNlbGwgcG9pbnRlcnMgYXJlIHN0b3JlZCBh
cyBhIGNlbGwsIHdlIGNhbiBzYWZlbHkgbWFyayB0aGVtLgotICAgIHZpc2l0b3IuYXBwZW5kVmFs
dWVzKHRoaXNPYmplY3QtPmxvY2FscygpLCB0aGlzT2JqZWN0LT5tX251bWJlck9mQ2FsbGVlTG9j
YWxzKTsKKyAgICB2aXNpdG9yLmFwcGVuZFZhbHVlcyh0aGlzT2JqZWN0LT5sb2NhbHMoKSwgdGhp
c09iamVjdC0+bV9udW1iZXJPZlNhdmVkQ2FsbGVlTG9jYWxzKTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0
b3JGcmFtZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJhbWUu
aAppbmRleCAzZDU0NWIxNDdkZDRhYmZiMmJiYjliNWE3MTk0ZThmNzQ4NDFjNDlhLi4wNDBiYzNi
Njg2NjQ0ODRhY2I1NzRkN2Q0NDQ5ZmJiMjAyODJmMjZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGcmFtZS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZyYW1lLmgKQEAgLTI3LDExICsyNywxNCBAQAogI2Rl
ZmluZSBHZW5lcmF0b3JGcmFtZV9oCiAKICNpbmNsdWRlICJKU0NlbGwuaCIKKyNpbmNsdWRlICJK
U09iamVjdC5oIgogI2luY2x1ZGUgPHd0Zi9GYXN0Qml0VmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBK
U0MgewogCi1jbGFzcyBHZW5lcmF0b3JGcmFtZSA6IHB1YmxpYyBKU0NlbGwgeworY2xhc3MgTExJ
bnRPZmZzZXRzRXh0cmFjdG9yOworCitjbGFzcyBHZW5lcmF0b3JGcmFtZSA6IHB1YmxpYyBKU05v
bkZpbmFsT2JqZWN0IHsKICAgICBmcmllbmQgY2xhc3MgSklUOwogI2lmIEVOQUJMRShERkdfSklU
KQogICAgIGZyaWVuZCBjbGFzcyBERkc6OlNwZWN1bGF0aXZlSklUOwpAQCAtMzksMTIgKzQyLDEy
IEBAIGNsYXNzIEdlbmVyYXRvckZyYW1lIDogcHVibGljIEpTQ2VsbCB7CiAjZW5kaWYKICAgICBm
cmllbmQgY2xhc3MgVk07CiBwdWJsaWM6Ci0gICAgdHlwZWRlZiBKU0NlbGwgQmFzZTsKLSAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBTdHJ1Y3R1cmVJc0ltbW9ydGFs
IHwgQmFzZTo6U3RydWN0dXJlRmxhZ3M7CisgICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJh
c2U7CiAKICAgICBERUNMQVJFX0VYUE9SVF9JTkZPOwogCi0gICAgc3RhdGljIEdlbmVyYXRvckZy
YW1lKiBjcmVhdGUoVk0mLCBzaXplX3QgbnVtYmVyT2ZDYWxsZWVMb2NhbHMpOworICAgIHN0YXRp
YyBHZW5lcmF0b3JGcmFtZSogY3JlYXRlKEV4ZWNTdGF0ZSosIHNpemVfdCBudW1iZXJPZkNhbGxl
ZUxvY2Fscyk7CisgICAgc3RhdGljIEdlbmVyYXRvckZyYW1lKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1
cmUqLCBzaXplX3QgbnVtYmVyT2ZDYWxsZWVMb2NhbHMpOwogCiAgICAgV3JpdGVCYXJyaWVyQmFz
ZTxVbmtub3duPiogbG9jYWxzKCkKICAgICB7CkBAIC01Myw3ICs1Niw2IEBAIGNsYXNzIEdlbmVy
YXRvckZyYW1lIDogcHVibGljIEpTQ2VsbCB7CiAKICAgICBXcml0ZUJhcnJpZXJCYXNlPFVua25v
d24+JiBsb2NhbEF0KHNpemVfdCBpbmRleCkKICAgICB7Ci0gICAgICAgIEFTU0VSVChpbmRleCA8
IG1fbnVtYmVyT2ZDYWxsZWVMb2NhbHMpOwogICAgICAgICByZXR1cm4gbG9jYWxzKClbaW5kZXhd
OwogICAgIH0KIApAQCAtNjIsNiArNjQsMTYgQEAgY2xhc3MgR2VuZXJhdG9yRnJhbWUgOiBwdWJs
aWMgSlNDZWxsIHsKICAgICAgICAgcmV0dXJuIFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZjxzaXpl
b2YoV3JpdGVCYXJyaWVyPFVua25vd24+KT4oc2l6ZW9mKEdlbmVyYXRvckZyYW1lKSk7CiAgICAg
fQogCisgICAgc3RhdGljIHNpemVfdCBsb2NhbE9mZnNldCh1bnNpZ25lZCBpbmRleCkKKyAgICB7
CisgICAgICAgIHJldHVybiBvZmZzZXRPZkxvY2FscygpICsgaW5kZXggKiBzaXplb2YoV3JpdGVC
YXJyaWVyPFVua25vd24+KTsKKyAgICB9CisKKyAgICBzdGF0aWMgc2l6ZV90IG51bWJlck9mU2F2
ZWRDYWxsZWVMb2NhbHNPZmZzZXQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZT
RVRPRihHZW5lcmF0b3JGcmFtZSwgbV9udW1iZXJPZlNhdmVkQ2FsbGVlTG9jYWxzKTsKKyAgICB9
CisKICAgICBzdGF0aWMgc2l6ZV90IGFsbG9jYXRpb25TaXplRm9yTG9jYWxzKHVuc2lnbmVkIG51
bWJlck9mTG9jYWxzKQogICAgIHsKICAgICAgICAgcmV0dXJuIG9mZnNldE9mTG9jYWxzKCkgKyBu
dW1iZXJPZkxvY2FscyAqIHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pOwpAQCAtNzMsMTQg
Kzg1LDEyIEBAIGNsYXNzIEdlbmVyYXRvckZyYW1lIDogcHVibGljIEpTQ2VsbCB7CiAgICAgdm9p
ZCByZXN1bWUoRXhlY1N0YXRlKiwgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZUNhbGxlZUxvY2Fs
cyk7CiAKIHByaXZhdGU6Ci0gICAgR2VuZXJhdG9yRnJhbWUoVk0mLCBzaXplX3QgbnVtYmVyT2ZD
YWxsZWVMb2NhbHMpOworICAgIEdlbmVyYXRvckZyYW1lKFZNJiwgU3RydWN0dXJlKik7CiAKLSAg
ICBzaXplX3QgbV9udW1iZXJPZkNhbGxlZUxvY2FsczsKKyAgICB1aW50MzJfdCBtX251bWJlck9m
U2F2ZWRDYWxsZWVMb2NhbHMgeyAwIH07CiAKICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRz
RXh0cmFjdG9yOwogCi0gICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOwotCiBwcm90ZWN0ZWQ6
CiAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwog
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNw
cAppbmRleCA3NjlhM2VmYjMwNDM4ZGNkOWRkZTQ0MmRjODg5NGExZjAzODJhNTA0Li44Y2I4NGFi
ZTVmODczOWEwMThlNjJlYTQ4ZjQ3MTQ0NDc5NTUxZDNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC01MCw2ICs1MCw3IEBACiAj
aW5jbHVkZSAiRXJyb3JQcm90b3R5cGUuaCIKICNpbmNsdWRlICJGdW5jdGlvbkNvbnN0cnVjdG9y
LmgiCiAjaW5jbHVkZSAiRnVuY3Rpb25Qcm90b3R5cGUuaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JG
cmFtZS5oIgogI2luY2x1ZGUgIkdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaCIKICNpbmNs
dWRlICJHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkdlbmVyYXRvclBy
b3RvdHlwZS5oIgpAQCAtMzg4LDYgKzM4OSw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmluaXQo
Vk0mIHZtKQogICAgIAogICAgIEZPUl9FQUNIX0JVSUxUSU5fREVSSVZFRF9JVEVSQVRPUl9UWVBF
KENSRUFURV9QUk9UT1RZUEVfRk9SX0RFUklWRURfSVRFUkFUT1JfVFlQRSkKICAgICBtX3Byb3Bl
cnR5TmFtZUl0ZXJhdG9yU3RydWN0dXJlLnNldCh2bSwgdGhpcywgSlNQcm9wZXJ0eU5hbWVJdGVy
YXRvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2l0ZXJhdG9yUHJvdG90eXBlLmdldCgp
KSk7CisgICAgbV9nZW5lcmF0b3JGcmFtZVN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIEdlbmVyYXRv
ckZyYW1lOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIGpzTnVsbCgpKSk7CiAgICAgbV9nZW5l
cmF0b3JQcm90b3R5cGUuc2V0KHZtLCB0aGlzLCBHZW5lcmF0b3JQcm90b3R5cGU6OmNyZWF0ZSh2
bSwgdGhpcywgR2VuZXJhdG9yUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1f
aXRlcmF0b3JQcm90b3R5cGUuZ2V0KCkpKSk7CiAgICAgCiAjdW5kZWYgQ1JFQVRFX1BST1RPVFlQ
RV9GT1JfREVSSVZFRF9JVEVSQVRPUl9UWVBFCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCBiNGZmMmZiNDEzZTBlNDQ2MjQ5MmE0OGEzZmQ1
YTRjMjRlYTBiNzQxLi43MWQzOWVjOTI4M2FkOWU1OTAxMjQ0ZjAxMzZhMTM1OGY1NDRhOTkzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAg
LTI1NSw2ICsyNTUsNyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRl
ZFZhcmlhYmxlT2JqZWN0IHsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2NhbGxiYWNr
RnVuY3Rpb25TdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9jYWxsYmFj
a09iamVjdFN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3Byb3BlcnR5
TmFtZUl0ZXJhdG9yU3RydWN0dXJlOworICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fZ2Vu
ZXJhdG9yRnJhbWVTdHJ1Y3R1cmU7CiAjaWYgSlNDX09CSkNfQVBJX0VOQUJMRUQKICAgICBXcml0
ZUJhcnJpZXI8U3RydWN0dXJlPiBtX29iamNDYWxsYmFja0Z1bmN0aW9uU3RydWN0dXJlOwogICAg
IFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fb2JqY1dyYXBwZXJPYmplY3RTdHJ1Y3R1cmU7CkBA
IC01MDEsNiArNTAyLDcgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50
ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgU3RydWN0dXJlKiBjYWxsYmFja0Z1bmN0aW9uU3RydWN0
dXJlKCkgY29uc3QgeyByZXR1cm4gbV9jYWxsYmFja0Z1bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9
CiAgICAgU3RydWN0dXJlKiBjYWxsYmFja09iamVjdFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJu
IG1fY2FsbGJhY2tPYmplY3RTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIHByb3Bl
cnR5TmFtZUl0ZXJhdG9yU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9wcm9wZXJ0eU5hbWVJ
dGVyYXRvclN0cnVjdHVyZS5nZXQoKTsgfQorICAgIFN0cnVjdHVyZSogZ2VuZXJhdG9yRnJhbWVT
dHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2dlbmVyYXRvckZyYW1lU3RydWN0dXJlLmdldCgp
OyB9CiAjaWYgSlNDX09CSkNfQVBJX0VOQUJMRUQKICAgICBTdHJ1Y3R1cmUqIG9iamNDYWxsYmFj
a0Z1bmN0aW9uU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9vYmpjQ2FsbGJhY2tGdW5jdGlv
blN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogb2JqY1dyYXBwZXJPYmplY3RTdHJ1
Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX29iamNXcmFwcGVyT2JqZWN0U3RydWN0dXJlLmdldCgp
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXggMGU0NGMzNDYwZjlmOGYw
ZGNiMzVkOTEyZDc5NWY3Zjk4ZGZiN2Y0NS4uMGVmMjVlNzI5YWE2ZTU1YzNkY2EwNjFjMjJiNjVh
YTZmN2I1YjM0ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0u
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtMjQ2LDcg
KzI0Niw2IEBAIHN0YXRpYyBib29sIGVuYWJsZUFzc2VtYmxlcihFeGVjdXRhYmxlQWxsb2NhdG9y
JiBleGVjdXRhYmxlQWxsb2NhdG9yKQogICAgIGluZmVycmVkVHlwZVN0cnVjdHVyZS5zZXQoKnRo
aXMsIEluZmVycmVkVHlwZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwog
ICAgIGluZmVycmVkVHlwZVRhYmxlU3RydWN0dXJlLnNldCgqdGhpcywgSW5mZXJyZWRUeXBlVGFi
bGU6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICBmdW5jdGlvblJh
cmVEYXRhU3RydWN0dXJlLnNldCgqdGhpcywgRnVuY3Rpb25SYXJlRGF0YTo6Y3JlYXRlU3RydWN0
dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwotICAgIGdlbmVyYXRvckZyYW1lU3RydWN0dXJlLnNl
dCgqdGhpcywgR2VuZXJhdG9yRnJhbWU6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxs
KCkpKTsKICAgICBleGNlcHRpb25TdHJ1Y3R1cmUuc2V0KCp0aGlzLCBFeGNlcHRpb246OmNyZWF0
ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICBwcm9taXNlRGVmZXJyZWRTdHJ1
Y3R1cmUuc2V0KCp0aGlzLCBKU1Byb21pc2VEZWZlcnJlZDo6Y3JlYXRlU3RydWN0dXJlKCp0aGlz
LCAwLCBqc051bGwoKSkpOwogICAgIGludGVybmFsUHJvbWlzZURlZmVycmVkU3RydWN0dXJlLnNl
dCgqdGhpcywgSlNJbnRlcm5hbFByb21pc2VEZWZlcnJlZDo6Y3JlYXRlU3RydWN0dXJlKCp0aGlz
LCAwLCBqc051bGwoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVk0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKaW5kZXggYWVlMGFj
MWYyMWI4NDUxYmM3NzY3NDQzYTBiMDVjYTA0OGI0ZjQ5Yi4uMjM2MDgzNzBhOTgzNmQ4OTc3ZTQ5
ZDcxZTY4YTgwOWI5YWM0NTM2MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVk0uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCkBAIC0z
MTIsNyArMzEyLDYgQEAgY2xhc3MgVk0gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Vk0+
IHsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBpbmZlcnJlZFR5cGVTdHJ1Y3R1cmU7CiAgICAgU3Ry
b25nPFN0cnVjdHVyZT4gaW5mZXJyZWRUeXBlVGFibGVTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0
cnVjdHVyZT4gZnVuY3Rpb25SYXJlRGF0YVN0cnVjdHVyZTsKLSAgICBTdHJvbmc8U3RydWN0dXJl
PiBnZW5lcmF0b3JGcmFtZVN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBleGNlcHRp
b25TdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gcHJvbWlzZURlZmVycmVkU3RydWN0
dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGludGVybmFsUHJvbWlzZURlZmVycmVkU3RydWN0
dXJlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>268979</attachid>
            <date>2016-01-14 10:06:45 -0800</date>
            <delta_ts>2016-01-15 04:44:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-152723-20160115030614.patch</filename>
            <type>text/plain</type>
            <size>81682</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk1MDU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
ZDVkMzdhNWE2NzE2ZmQyMWY5YzRiYzhlZDg0OGZkNTlhZjU1NTgzLi43YzZmNDAyYzJiY2M3ZGM5
NzIyOWE4N2MyNGY1MmY1YmE1NmQ5YTdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMTggQEAKKzIwMTYtMDEtMTQgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgQ3JlYXRlIEdlbmVyYXRvckZyYW1lIHdpdGggdGhlIGJ5dGVjb2Rl
IG9wX25ld19nZW5lcmF0b3JfZnJhbWUgYW5kIG1ha2Ugb3Bfc2F2ZSAvIG9wX3Jlc3VtZSBERkcv
RlRMIGNhcGFibGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1MjcyMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogYnVpbHRpbnMvR2VuZXJhdG9yUHJvdG90eXBlLmpzOgorICAgICAgICAoZ2VuZXJhdG9y
UmVzdW1lKToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbjoKKyAgICAgICAg
KiBieXRlY29kZS9CeXRlY29kZVVzZURlZi5oOgorICAgICAgICAoSlNDOjpjb21wdXRlVXNlc0Zv
ckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZURlZnNGb3JCeXRlY29kZU9m
ZnNldCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6
Q29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmlz
aENyZWF0aW9uKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3Bw
OgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0dlbmVyYXRvckZyYW1lKToK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRTYXZlKToKKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXN1bWUpOgorICAgICAgICAqIGJ5dGVjb21waWxl
ci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6
Z2VuZXJhdG9yRnJhbWVSZWdpc3Rlcik6CisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0SW50ZXJw
cmV0ZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RJbnRlcnByZXRlcjxB
YnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKToKKyAgICAgICAgKiBkZmcvREZHQnl0
ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpCeXRl
Q29kZVBhcnNlcik6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxv
Y2spOgorICAgICAgICAqIGRmZy9ERkdDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OmNhcGFiaWxpdHlMZXZlbCk6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJpemUuaDoKKyAg
ICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAgICAgICAgKiBkZmcvREZHQ2xvYmJlcnNF
eGl0U3RhdGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmNsb2JiZXJzRXhpdFN0YXRlKToKKyAg
ICAgICAgKiBkZmcvREZHRG9lc0dDLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpkb2VzR0MpOgor
ICAgICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1
cFBoYXNlOjpmaXh1cE5vZGUpOgorICAgICAgICAqIGRmZy9ERkdNYXlFeGl0LmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjptYXlFeGl0KToKKyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAg
ICAoSlNDOjpERkc6Ok5vZGU6Omhhc0dlbmVyYXRvckZyYW1lU2l6ZSk6CisgICAgICAgIChKU0M6
OkRGRzo6Tm9kZTo6Z2VuZXJhdG9yRnJhbWVTaXplKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2Rl
OjpoYXNHZW5lcmF0b3JGcmFtZUluZGV4KToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpnZW5l
cmF0b3JGcmFtZUluZGV4KToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNTYXZlZFZhcmlh
YmxlQWNjZXNzRGF0YSk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6c2F2ZWRWYXJpYWJsZUFj
Y2Vzc0RhdGEpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc0dlbmVyYXRvckZyYW1lTG9j
YWxzKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpnZW5lcmF0b3JGcmFtZUxvY2Fscyk6Cisg
ICAgICAgICogZGZnL0RGR05vZGVUeXBlLmg6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMu
Y3BwOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmg6CisgICAgICAgICogZGZnL0RGR1By
ZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpQcmVkaWN0
aW9uUHJvcGFnYXRpb25QaGFzZTo6cHJvcGFnYXRlKToKKyAgICAgICAgKiBkZmcvREZHU2FmZVRv
RXhlY3V0ZS5oOgorICAgICAgICAoSlNDOjpERkc6OnNhZmVUb0V4ZWN1dGUpOgorICAgICAgICAq
IGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVOZXdHZW5lcmF0b3JGcmFtZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1
bGF0aXZlSklULmg6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBk
ZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25Q
aGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlLmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpTdHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFzZTo6cnVuKToK
KyAgICAgICAgKiBmdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHA6CisgICAgICAgICog
ZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaDoKKyAgICAgICAgKiBmdGwvRlRMQ2FwYWJp
bGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5Db21waWxlKToKKyAgICAgICAgKiBm
dGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJE
RkdUb0xMVk06OmNvbXBpbGVOb2RlKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZH
VG9MTFZNOjpjb21waWxlUHV0R2VuZXJhdG9yRnJhbWVMb2NhbHMpOgorICAgICAgICAoSlNDOjpG
VEw6OkRGRzo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVTYXZlVG9HZW5lcmF0b3JGcmFtZSk6Cisg
ICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZVJlc3VtZUZyb21H
ZW5lcmF0b3JGcmFtZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvTExWTTo6
Y29tcGlsZUdlbmVyYXRvckZyYW1lKToKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAg
KEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKToKKyAgICAgICAgKiBqaXQvSklULmg6
CisgICAgICAgICogaml0L0pJVE9wY29kZXMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRf
b3BfcmVzdW1lX2Zyb21fZ2VuZXJhdG9yX2ZyYW1lKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
X29wX2NsZWFyX2dlbmVyYXRvcl9mcmFtZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9u
ZXdfZ2VuZXJhdG9yX2ZyYW1lKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX25vcCk6Cisg
ICAgICAgICogbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcDoKKyAgICAgICAgKiBsbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyLmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVy
cHJldGVyNjQuYXNtOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAgICAoSlND
OjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJbm5lcik6CisgICAgICAgIChKU0M6OlBhcnNlcjxM
ZXhlclR5cGU+OjpwYXJzZUdlbmVyYXRvckZ1bmN0aW9uU291cmNlRWxlbWVudHMpOgorICAgICAg
ICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6Y3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyk6Cisg
ICAgICAgICogcGFyc2VyL1BhcnNlci5oOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1Bh
dGhzLmNwcDoKKyAgICAgICAgKEpTQzo6U0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAqIHJ1bnRp
bWUvQ29tbW9uU2xvd1BhdGhzLmg6CisgICAgICAgICogcnVudGltZS9HZW5lcmF0b3JGcmFtZS5j
cHA6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpHZW5lcmF0b3JGcmFtZSk6CisgICAg
ICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlND
OjpHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6
OnNhdmUpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6cmVzdW1lKToKKyAgICAgICAg
KEpTQzo6R2VuZXJhdG9yRnJhbWU6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpHZW5l
cmF0b3JGcmFtZTo6ZmluaXNoQ3JlYXRpb24pOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUv
R2VuZXJhdG9yRnJhbWUuaDoKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OmxvY2FsT2Zm
c2V0KToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6Om51bWJlck9mU2F2ZWRDYWxsZWVM
b2NhbHNPZmZzZXQpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6bG9jYWxBdCk6IERl
bGV0ZWQuCisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChK
U0M6OkpTR2xvYmFsT2JqZWN0Ojppbml0KToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpnZW5lcmF0b3JGcmFtZVN0cnVj
dHVyZSk6CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpWTSk6
IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9WTS5oOgorCiAyMDE2LTAxLTEzICBDYXJsb3Mg
R2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbQ01ha2VdIERv
IG5vdCB1c2UgTExWTSBzdGF0aWMgbGlicmFyaWVzIGZvciBGVEwgSklUCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvR2VuZXJhdG9yUHJvdG90eXBlLmpzIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0dlbmVyYXRvclByb3RvdHlwZS5qcwppbmRleCBh
M2JiYzM1MzRhZTA1MmY0ZDZmYTI1YmRlNzAzYzkzZDNhNzk1ZTExLi40OWRkYmY5Yzg0NjkzMzA2
NTg3MTFmMThlNzIxNDliYzk4MjJkYTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnVpbHRpbnMvR2VuZXJhdG9yUHJvdG90eXBlLmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9idWlsdGlucy9HZW5lcmF0b3JQcm90b3R5cGUuanMKQEAgLTU4LDcgKzU4LDcgQEAgZnVu
Y3Rpb24gZ2VuZXJhdG9yUmVzdW1lKGdlbmVyYXRvciwgc2VudFZhbHVlLCByZXN1bWVNb2RlKQog
ICAgIH0gZWxzZSB7CiAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICBnZW5lcmF0b3IuQGdlbmVy
YXRvclN0YXRlID0gRXhlY3V0aW5nOwotICAgICAgICAgICAgdmFsdWUgPSBnZW5lcmF0b3IuQGdl
bmVyYXRvck5leHQuQGNhbGwoZ2VuZXJhdG9yLkBnZW5lcmF0b3JUaGlzLCBnZW5lcmF0b3IsIHN0
YXRlLCBzZW50VmFsdWUsIHJlc3VtZU1vZGUpOworICAgICAgICAgICAgdmFsdWUgPSBnZW5lcmF0
b3IuQGdlbmVyYXRvck5leHQuQGNhbGwoZ2VuZXJhdG9yLkBnZW5lcmF0b3JUaGlzLCBnZW5lcmF0
b3IsIHN0YXRlLCBzZW50VmFsdWUsIHJlc3VtZU1vZGUsIGdlbmVyYXRvci5AZ2VuZXJhdG9yRnJh
bWUpOwogICAgICAgICAgICAgaWYgKGdlbmVyYXRvci5AZ2VuZXJhdG9yU3RhdGUgPT09IEV4ZWN1
dGluZykgewogICAgICAgICAgICAgICAgIGdlbmVyYXRvci5AZ2VuZXJhdG9yU3RhdGUgPSBDb21w
bGV0ZWQ7CiAgICAgICAgICAgICAgICAgZG9uZSA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24gYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24KaW5kZXggMDUzYjhkYzliODY0ZjFi
ODZiNGNlYzdhYTYwMWY3Y2UyZjAzZjJlNC4uMDcxZTIxOTA2NWQzYTVlZDUzN2VkODAxZmMwZWU5
MWYwM2RkNTdjNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlTGlzdC5qc29uCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZUxpc3QuanNvbgpAQCAtMTYsNiArMTYsNyBAQAogICAgICAgICAgICAgeyAibmFtZSIgOiAi
b3BfbmV3X2FycmF5X3dpdGhfc2l6ZSIsICJsZW5ndGgiIDogNCB9LAogICAgICAgICAgICAgeyAi
bmFtZSIgOiAib3BfbmV3X2FycmF5X2J1ZmZlciIsICJsZW5ndGgiIDogNSB9LAogICAgICAgICAg
ICAgeyAibmFtZSIgOiAib3BfbmV3X3JlZ2V4cCIsICJsZW5ndGgiIDogMyB9LAorICAgICAgICAg
ICAgeyAibmFtZSIgOiAib3BfbmV3X2dlbmVyYXRvcl9mcmFtZSIsICJsZW5ndGgiIDogMyB9LAog
ICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfbW92IiwgImxlbmd0aCIgOiAzIH0sCiAgICAgICAg
ICAgICB7ICJuYW1lIiA6ICJvcF9ub3QiLCAibGVuZ3RoIiA6IDMgfSwKICAgICAgICAgICAgIHsg
Im5hbWUiIDogIm9wX2VxIiwgImxlbmd0aCIgOiA0IH0sCkBAIC0xMzQsNyArMTM1LDEwIEBACiAg
ICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9jb3B5X3Jlc3QiLCAibGVuZ3RoIjogNCB9LAogICAg
ICAgICAgICAgeyAibmFtZSIgOiAib3BfZ2V0X3Jlc3RfbGVuZ3RoIiwgImxlbmd0aCI6IDMgfSwK
ICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX3NhdmUiLCAibGVuZ3RoIiA6IDQgfSwKLSAgICAg
ICAgICAgIHsgIm5hbWUiIDogIm9wX3Jlc3VtZSIsICJsZW5ndGgiIDogMyB9LAorICAgICAgICAg
ICAgeyAibmFtZSIgOiAib3BfcmVzdW1lIiwgImxlbmd0aCIgOiA0IH0sCisgICAgICAgICAgICB7
ICJuYW1lIiA6ICJvcF9yZXN1bWVfZnJvbV9nZW5lcmF0b3JfZnJhbWUiLCAibGVuZ3RoIiA6IDQg
fSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2NsZWFyX2dlbmVyYXRvcl9mcmFtZSIsICJs
ZW5ndGgiIDogMiB9LAorICAgICAgICAgICAgeyAibmFtZSIgOiAib3Bfbm9wIiwgImxlbmd0aCIg
OiAxIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF93YXRjaGRvZyIsICJsZW5ndGgiIDog
MSB9CiAgICAgICAgIF0KICAgICB9LApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVVc2VEZWYuaAppbmRleCA4MDExMTRjMzcyYTI3N2Y2ZTE3NzA5YjkwYmUyMDdj
OGY5OWJlODJkLi5jZTcwNGI0NzQ2ZWQxYzA5YThmMDM0YWMyMDc3Yzg5ZmViMWM1MzJmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaApAQCAt
NTUsNiArNTUsOCBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoCiAgICAgY2Fz
ZSBvcF9jcmVhdGVfb3V0X29mX2JhbmRfYXJndW1lbnRzOgogICAgIGNhc2Ugb3BfZ2V0X3Jlc3Rf
bGVuZ3RoOgogICAgIGNhc2Ugb3Bfd2F0Y2hkb2c6CisgICAgY2FzZSBvcF9uZXdfZ2VuZXJhdG9y
X2ZyYW1lOgorICAgIGNhc2Ugb3Bfbm9wOgogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBvcF9h
c3NlcnQ6CiAgICAgY2FzZSBvcF9nZXRfc2NvcGU6CkBAIC03Miw3ICs3NCw4IEBAIHZvaWQgY29t
cHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCgKICAgICBjYXNlIG9wX2puZXFfbnVsbDoKICAgICBj
YXNlIG9wX2RlYzoKICAgICBjYXNlIG9wX2luYzoKLSAgICBjYXNlIG9wX3Jlc3VtZTogeworICAg
IGNhc2Ugb3BfcmVzdW1lOgorICAgIGNhc2Ugb3BfY2xlYXJfZ2VuZXJhdG9yX2ZyYW1lOiB7CiAg
ICAgICAgIEFTU0VSVChvcGNvZGVMZW5ndGhzW29wY29kZUlEXSA+PSAxKTsKICAgICAgICAgZnVu
Y3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb25bMV0udS5v
cGVyYW5kKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTY1LDcgKzE2OCw4IEBAIHZvaWQgY29tcHV0
ZVVzZXNGb3JCeXRlY29kZU9mZnNldCgKICAgICBjYXNlIG9wX25ld19nZW5lcmF0b3JfZnVuYzoK
ICAgICBjYXNlIG9wX2dldF9wYXJlbnRfc2NvcGU6CiAgICAgY2FzZSBvcF9jcmVhdGVfc2NvcGVk
X2FyZ3VtZW50czoKLSAgICBjYXNlIG9wX2dldF9mcm9tX2FyZ3VtZW50czogeworICAgIGNhc2Ug
b3BfZ2V0X2Zyb21fYXJndW1lbnRzOgorICAgIGNhc2Ugb3BfcmVzdW1lX2Zyb21fZ2VuZXJhdG9y
X2ZyYW1lOiB7CiAgICAgICAgIEFTU0VSVChvcGNvZGVMZW5ndGhzW29wY29kZUlEXSA+PSAyKTsK
ICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgaW5zdHJ1
Y3Rpb25bMl0udS5vcGVyYW5kKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMzIzLDYgKzMyNyw4IEBA
IHZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywg
Qnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jCiAgICAgY2FzZSBvcF9wcm9maWxlX2NvbnRyb2xfZmxv
dzoKICAgICBjYXNlIG9wX3B1dF90b19hcmd1bWVudHM6CiAgICAgY2FzZSBvcF93YXRjaGRvZzoK
KyAgICBjYXNlIG9wX2NsZWFyX2dlbmVyYXRvcl9mcmFtZToKKyAgICBjYXNlIG9wX25vcDoKICNk
ZWZpbmUgTExJTlRfSEVMUEVSX09QQ09ERVMob3Bjb2RlLCBsZW5ndGgpIGNhc2Ugb3Bjb2RlOgog
ICAgICAgICBGT1JfRUFDSF9MTElOVF9PUENPREVfRVhURU5TSU9OKExMSU5UX0hFTFBFUl9PUENP
REVTKTsKICN1bmRlZiBMTElOVF9IRUxQRVJfT1BDT0RFUwpAQCAtNDE1LDcgKzQyMSw5IEBAIHZv
aWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0
ZWNvZGVCYXNpY0Jsb2NrKiBibG9jCiAgICAgY2FzZSBvcF9kZWxfYnlfdmFsOgogICAgIGNhc2Ug
b3BfdW5zaWduZWQ6CiAgICAgY2FzZSBvcF9nZXRfZnJvbV9hcmd1bWVudHM6IAotICAgIGNhc2Ug
b3BfZ2V0X3Jlc3RfbGVuZ3RoOiB7CisgICAgY2FzZSBvcF9nZXRfcmVzdF9sZW5ndGg6CisgICAg
Y2FzZSBvcF9uZXdfZ2VuZXJhdG9yX2ZyYW1lOgorICAgIGNhc2Ugb3BfcmVzdW1lX2Zyb21fZ2Vu
ZXJhdG9yX2ZyYW1lOiB7CiAgICAgICAgIEFTU0VSVChvcGNvZGVMZW5ndGhzW29wY29kZUlEXSA+
IDEpOwogICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBp
bnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IDU5MDVlOTE4M2M4ZjEyNjY0
ZTJiYTNkZDI5YTVjNDY1Njc2OGRjMDMuLmVkNGExN2UwMTM0ZWJjNTgxYzc4NGNhYTYxZDA5NGEz
NzBhMjBjZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2su
Y3BwCkBAIC0xNTU3LDI0ICsxNTU3LDQ5IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUo
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX3NhdmU6IHsK
LSAgICAgICAgICAgIGludCBnZW5lcmF0b3IgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAg
ICAgIGludCBmcmFtZSA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgdW5zaWduZWQg
bGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gKCsraXQpLT51LnVuc2lnbmVkVmFsdWU7CiAgICAgICAg
ICAgICBpbnQgb2Zmc2V0ID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBjb25zdCBG
YXN0Qml0VmVjdG9yJiBsaXZlbmVzcyA9IG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0
WWllbGRbbGl2ZUNhbGxlZUxvY2Fsc0luZGV4XTsKICAgICAgICAgICAgIHByaW50TG9jYXRpb25B
bmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgInNhdmUiKTsKLSAgICAgICAgICAgIG91dC5w
cmludGYoIiVzLCAiLCByZWdpc3Rlck5hbWUoZ2VuZXJhdG9yKS5kYXRhKCkpOworICAgICAgICAg
ICAgb3V0LnByaW50ZigiJXMsICIsIHJlZ2lzdGVyTmFtZShmcmFtZSkuZGF0YSgpKTsKICAgICAg
ICAgICAgIGxpdmVuZXNzLmR1bXAob3V0KTsKICAgICAgICAgICAgIG91dC5wcmludGYoIihAbGl2
ZSUxdSksICVkKC0+JWQpIiwgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4LCBvZmZzZXQsIGxvY2F0aW9u
ICsgb2Zmc2V0KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ug
b3BfcmVzdW1lOiB7Ci0gICAgICAgICAgICBpbnQgZ2VuZXJhdG9yID0gKCsraXQpLT51Lm9wZXJh
bmQ7CisgICAgICAgICAgICBpbnQgZnJhbWUgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAg
ICAgIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9ICgrK2l0KS0+dS51bnNpZ25lZFZh
bHVlOworICAgICAgICAgICAgdW5zaWduZWQgbWF4TGl2ZUNhbGxlZXMgPSAoKytpdCktPnUudW5z
aWduZWRWYWx1ZTsKICAgICAgICAgICAgIGNvbnN0IEZhc3RCaXRWZWN0b3ImIGxpdmVuZXNzID0g
bV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZFtsaXZlQ2FsbGVlTG9jYWxzSW5k
ZXhdOwogICAgICAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24s
IGl0LCAicmVzdW1lIik7Ci0gICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgIiwgcmVnaXN0ZXJO
YW1lKGdlbmVyYXRvcikuZGF0YSgpKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAiLCBy
ZWdpc3Rlck5hbWUoZnJhbWUpLmRhdGEoKSk7CiAgICAgICAgICAgICBsaXZlbmVzcy5kdW1wKG91
dCk7Ci0gICAgICAgICAgICBvdXQucHJpbnRmKCIoQGxpdmUlMXUpIiwgbGl2ZUNhbGxlZUxvY2Fs
c0luZGV4KTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIihAbGl2ZSUxdSksICV1IiwgbGl2ZUNh
bGxlZUxvY2Fsc0luZGV4LCBtYXhMaXZlQ2FsbGVlcyk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQorICAgICAgICBjYXNlIG9wX3Jlc3VtZV9mcm9tX2dlbmVyYXRvcl9mcmFtZTogewor
ICAgICAgICAgICAgaW50IGRzdCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgaW50
IGZyYW1lID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICB1bnNpZ25lZCBpbmRleCA9
ICgrK2l0KS0+dS51bnNpZ25lZFZhbHVlOworICAgICAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9w
KG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAicmVzdW1lX2Zyb21fZ2VuZXJhdG9yX2ZyYW1lIik7
CisgICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMsICV1IiwgcmVnaXN0ZXJOYW1lKGRzdCku
ZGF0YSgpLCByZWdpc3Rlck5hbWUoZnJhbWUpLmRhdGEoKSwgaW5kZXgpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9jbGVhcl9nZW5lcmF0b3JfZnJhbWU6
IHsKKyAgICAgICAgICAgIGludCBmcmFtZSA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAg
ICAgcHJpbnRMb2NhdGlvbk9wQW5kUmVnaXN0ZXJPcGVyYW5kKG91dCwgZXhlYywgbG9jYXRpb24s
IGl0LCAiY2xlYXJfZ2VuZXJhdG9yX2ZyYW1lIiwgZnJhbWUpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9uZXdfZ2VuZXJhdG9yX2ZyYW1lOiB7CisgICAg
ICAgICAgICBpbnQgZHN0ID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICB1bnNpZ25l
ZCBnZW5lcmF0b3JGcmFtZVNpemUgPSAoKytpdCktPnUudW5zaWduZWRWYWx1ZTsKKyAgICAgICAg
ICAgIHByaW50TG9jYXRpb25PcEFuZFJlZ2lzdGVyT3BlcmFuZChvdXQsIGV4ZWMsIGxvY2F0aW9u
LCBpdCwgIm5ld19nZW5lcmF0b3JfZnJhbWUiLCBkc3QpOworICAgICAgICAgICAgb3V0LnByaW50
ZigiICV1IiwgZ2VuZXJhdG9yRnJhbWVTaXplKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CisgICAgICAgIGNhc2Ugb3Bfbm9wOiB7CisgICAgICAgICAgICBwcmludExvY2F0aW9uQW5k
T3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJub3AiKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfYXNzZXJ0OiB7CkBAIC0xOTgwLDkgKzIwMDUsMTAg
QEAgdm9pZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJs
ZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICBIYXNoU2V0PEpTTW9kdWxlRW52aXJvbm1l
bnQqPiBzdHJvbmdseVJlZmVyZW5jZWRNb2R1bGVFbnZpcm9ubWVudHM7CiAKICAgICAvLyBCb29r
a2VlcCB0aGUgbWVyZ2UgcG9pbnQgYnl0ZWNvZGUgb2Zmc2V0cy4KLSAgICBWZWN0b3I8c2l6ZV90
PiBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXRzOworICAgIFZlY3RvcjxzdGQ6OnBhaXI8c2l6ZV90
LCBzaXplX3Q+PiBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXRzOwogCiAgICAgUmVmQ291bnRlZEFy
cmF5PEluc3RydWN0aW9uPiBpbnN0cnVjdGlvbnMoaW5zdHJ1Y3Rpb25Db3VudCk7CisgICAgdW5z
aWduZWQgbmV3R2VuZXJhdG9yRnJhbWVJbnN0cnVjdGlvbk9mZnNldCA9IDA7CiAKICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyAhaW5zdHJ1Y3Rpb25SZWFkZXIuYXRFbmQoKTsgKSB7CiAgICAgICAg
IGNvbnN0IFVubGlua2VkSW5zdHJ1Y3Rpb24qIHBjID0gaW5zdHJ1Y3Rpb25SZWFkZXIubmV4dCgp
OwpAQCAtMjI3NSw3ICsyMzAxLDIwIEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihW
TSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAgICAg
ICAgICBpbnQgb2Zmc2V0ID0gcGNbM10udS5vcGVyYW5kOwogICAgICAgICAgICAgaWYgKGxpdmVD
YWxsZWVMb2NhbHNJbmRleCA+PSBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXRzLnNpemUoKSkKICAg
ICAgICAgICAgICAgICBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXRzLnJlc2l6ZShsaXZlQ2FsbGVl
TG9jYWxzSW5kZXggKyAxKTsKLSAgICAgICAgICAgIG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldHNb
bGl2ZUNhbGxlZUxvY2Fsc0luZGV4XSA9IGkgKyBvZmZzZXQ7CisgICAgICAgICAgICBtZXJnZVBv
aW50Qnl0ZWNvZGVPZmZzZXRzW2xpdmVDYWxsZWVMb2NhbHNJbmRleF0uc2Vjb25kID0gaSArIG9m
ZnNldDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBvcF9y
ZXN1bWU6IHsKKyAgICAgICAgICAgIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9IHBj
WzJdLnUuaW5kZXg7CisgICAgICAgICAgICBpZiAobGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID49IG1l
cmdlUG9pbnRCeXRlY29kZU9mZnNldHMuc2l6ZSgpKQorICAgICAgICAgICAgICAgIG1lcmdlUG9p
bnRCeXRlY29kZU9mZnNldHMucmVzaXplKGxpdmVDYWxsZWVMb2NhbHNJbmRleCArIDEpOworICAg
ICAgICAgICAgbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0c1tsaXZlQ2FsbGVlTG9jYWxzSW5kZXhd
LmZpcnN0ID0gaTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgY2Fz
ZSBvcF9uZXdfZ2VuZXJhdG9yX2ZyYW1lOiB7CisgICAgICAgICAgICBuZXdHZW5lcmF0b3JGcmFt
ZUluc3RydWN0aW9uT2Zmc2V0ID0gaTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAK
QEAgLTIyOTIsMTYgKzIzMzEsNDEgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZN
JiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKIAogICAgIC8v
IFBlcmZvcm0gYnl0ZWNvZGUgbGl2ZW5lc3MgYW5hbHlzaXMgdG8gZGV0ZXJtaW5lIHdoaWNoIGxv
Y2FscyBhcmUgbGl2ZSBhbmQgc2hvdWxkIGJlIHJlc3VtZWQgd2hlbiBleGVjdXRpbmcgb3BfcmVz
dW1lLgogICAgIGlmICh1bmxpbmtlZENvZGVCbG9jay0+cGFyc2VNb2RlKCkgPT0gU291cmNlUGFy
c2VNb2RlOjpHZW5lcmF0b3JCb2R5TW9kZSkgeworICAgICAgICB1bnNpZ25lZCBtYXhHZW5lcmF0
b3JGcmFtZVNpemUgPSAwOwogICAgICAgICBpZiAoc2l6ZV90IGNvdW50ID0gbWVyZ2VQb2ludEJ5
dGVjb2RlT2Zmc2V0cy5zaXplKCkpIHsKICAgICAgICAgICAgIGNyZWF0ZVJhcmVEYXRhSWZOZWNl
c3NhcnkoKTsKICAgICAgICAgICAgIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcyBsaXZlbmVzcyh0
aGlzKTsKICAgICAgICAgICAgIG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQu
Z3Jvdyhjb3VudCk7CiAgICAgICAgICAgICBzaXplX3QgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0g
MDsKLSAgICAgICAgICAgIGZvciAoc2l6ZV90IGJ5dGVjb2RlT2Zmc2V0IDogbWVyZ2VQb2ludEJ5
dGVjb2RlT2Zmc2V0cykgewotICAgICAgICAgICAgICAgIG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxl
ZUxvY2Fsc0F0WWllbGRbbGl2ZUNhbGxlZUxvY2Fsc0luZGV4XSA9IGxpdmVuZXNzLmdldExpdmVu
ZXNzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpOworICAgICAgICAgICAgZm9y
IChzdGQ6OnBhaXI8c2l6ZV90LCBzaXplX3Q+IHBhaXIgOiBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZz
ZXRzKSB7CisgICAgICAgICAgICAgICAgc2l6ZV90IHJlc3VtZVBvaW50Qnl0ZWNvZGVPZmZzZXQg
PSBwYWlyLmZpcnN0OworICAgICAgICAgICAgICAgIHNpemVfdCBtZXJnZVBvaW50Qnl0ZWNvZGVP
ZmZzZXQgPSBwYWlyLnNlY29uZDsKKyAgICAgICAgICAgICAgICBGYXN0Qml0VmVjdG9yIGxpdmVu
ZXNzVmVjdG9yID0gbGl2ZW5lc3MuZ2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29kZU9mZnNldChtZXJn
ZVBvaW50Qnl0ZWNvZGVPZmZzZXQpOworICAgICAgICAgICAgICAgIHNpemVfdCBsaXZlTG9jYWxz
ID0gbGl2ZW5lc3NWZWN0b3IuYml0Q291bnQoKTsKKyAgICAgICAgICAgICAgICBtX3JhcmVEYXRh
LT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkW2xpdmVDYWxsZWVMb2NhbHNJbmRleF0gPSBsaXZl
bmVzc1ZlY3RvcjsKKyAgICAgICAgICAgICAgICBtYXhHZW5lcmF0b3JGcmFtZVNpemUgPSBzdGQ6
Om1heDx1bnNpZ25lZD4obWF4R2VuZXJhdG9yRnJhbWVTaXplLCBsaXZlTG9jYWxzKTsKICAgICAg
ICAgICAgICAgICArK2xpdmVDYWxsZWVMb2NhbHNJbmRleDsKKworICAgICAgICAgICAgICAgIC8v
IFBhdGNoIG9wX3Jlc3VtZSB3aXRoIGFjdHVhbCBvcHMuCisgICAgICAgICAgICAgICAgaW50IGdl
bmVyYXRvckZyYW1lSW5kZXggPSBpbnN0cnVjdGlvbnNbcmVzdW1lUG9pbnRCeXRlY29kZU9mZnNl
dCArIDFdLnUub3BlcmFuZDsKKyAgICAgICAgICAgICAgICBpZiAoIWxpdmVMb2NhbHMpIHsKKyAg
ICAgICAgICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCA0OyArK2kpCisgICAgICAg
ICAgICAgICAgICAgICAgICBpbnN0cnVjdGlvbnNbcmVzdW1lUG9pbnRCeXRlY29kZU9mZnNldCAr
IGldID0gdm0uaW50ZXJwcmV0ZXItPmdldE9wY29kZShvcF9ub3ApOworICAgICAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpID0gMDsKKyAgICAgICAgICAg
ICAgICAgICAgbGl2ZW5lc3NWZWN0b3IuZm9yRWFjaFNldEJpdChbJl0odW5zaWduZWQgbG9jYWwp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbmRleCA9IGkrKzsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHNpemVfdCBvZmZzZXQgPSByZXN1bWVQb2ludEJ5dGVjb2RlT2Zmc2V0
ICsgaW5kZXggKiA0OworICAgICAgICAgICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zW29mZnNl
dF0gPSB2bS5pbnRlcnByZXRlci0+Z2V0T3Bjb2RlKG9wX3Jlc3VtZV9mcm9tX2dlbmVyYXRvcl9m
cmFtZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpbnN0cnVjdGlvbnNbb2Zmc2V0ICsgMV0u
dS5vcGVyYW5kID0gdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwobG9jYWwpLm9mZnNldCgpOworICAg
ICAgICAgICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zW29mZnNldCArIDJdLnUub3BlcmFuZCA9
IGdlbmVyYXRvckZyYW1lSW5kZXg7CisgICAgICAgICAgICAgICAgICAgICAgICBpbnN0cnVjdGlv
bnNbb2Zmc2V0ICsgM10udS51bnNpZ25lZFZhbHVlID0gaW5kZXg7CisgICAgICAgICAgICAgICAg
ICAgIH0pOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQorICAg
ICAgICAvLyBGaWxsIG9wX25ld19nZW5lcmF0b3JfZnJhbWUncyBzaXplLgorICAgICAgICBtX2lu
c3RydWN0aW9uc1tuZXdHZW5lcmF0b3JGcmFtZUluc3RydWN0aW9uT2Zmc2V0ICsgMl0udS51bnNp
Z25lZFZhbHVlID0gbWF4R2VuZXJhdG9yRnJhbWVTaXplOwogICAgIH0KIAogICAgIC8vIFNldCBv
cHRpbWl6YXRpb24gdGhyZXNob2xkcyBvbmx5IGFmdGVyIG1faW5zdHJ1Y3Rpb25zIGlzIGluaXRp
YWxpemVkLCBzaW5jZSB0aGVzZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCBkMTVlMjI0MzUyNjZmZTFh
ZmYzZDVmNzlhMWRkYTc1YjliZGFmM2YzLi40Njc1MGY5ZmMyMDRiYmJjMGM4ZjkyN2UzMjBmMGIz
ZDA5MmU5OWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAtNTM3LDYgKzUzNyw5IEBAIFBhcnNlckVy
cm9yIEJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZSgpCiAgICAgY2FzZSBTb3VyY2VQYXJzZU1v
ZGU6OkdlbmVyYXRvckJvZHlNb2RlOiB7CiAgICAgICAgIC8vIHx0aGlzfCBpcyBhbHJlYWR5IGZp
bGxlZCBjb3JyZWN0bHkgYmVmb3JlIGhlcmUuCiAgICAgICAgIGVtaXRMb2FkKG1fbmV3VGFyZ2V0
UmVnaXN0ZXIsIGpzVW5kZWZpbmVkKCkpOworCisgICAgICAgIGVtaXROZXdHZW5lcmF0b3JGcmFt
ZShnZW5lcmF0b3JGcmFtZVJlZ2lzdGVyKCkpOworICAgICAgICBlbWl0UHV0QnlJZChnZW5lcmF0
b3JSZWdpc3RlcigpLCBwcm9wZXJ0eU5hbWVzKCkuZ2VuZXJhdG9yRnJhbWVQcml2YXRlTmFtZSwg
Z2VuZXJhdG9yRnJhbWVSZWdpc3RlcigpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCkBAIC0y
NzQ0LDYgKzI3NDcsMTQgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdG
dW5jdGlvbihSZWdpc3RlcklEKiBkc3QsIEZ1bmN0aW9uTWV0YWRhdGEKICAgICByZXR1cm4gZHN0
OwogfQogCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0dlbmVyYXRvckZy
YW1lKFJlZ2lzdGVySUQqIGRzdCkKK3sKKyAgICBlbWl0T3Bjb2RlKG9wX25ld19nZW5lcmF0b3Jf
ZnJhbWUpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChkc3QtPmluZGV4KCkpOworICAgIGlu
c3RydWN0aW9ucygpLmFwcGVuZCgwKTsKKyAgICByZXR1cm4gZHN0OworfQorCiBSZWdpc3RlcklE
KiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENhbGwoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklE
KiBmdW5jLCBFeHBlY3RlZEZ1bmN0aW9uIGV4cGVjdGVkRnVuY3Rpb24sIENhbGxBcmd1bWVudHMm
IGNhbGxBcmd1bWVudHMsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0
UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCkKIHsK
ICAgICByZXR1cm4gZW1pdENhbGwob3BfY2FsbCwgZHN0LCBmdW5jLCBleHBlY3RlZEZ1bmN0aW9u
LCBjYWxsQXJndW1lbnRzLCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQpOwpAQCAtNDE0NSw3
ICs0MTU2LDcgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFNhdmUoTGFiZWwqIG1lcmdl
UG9pbnQsIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmQKIHsKICAgICBzaXplX3QgYmVnaW4g
PSBpbnN0cnVjdGlvbnMoKS5zaXplKCk7CiAgICAgZW1pdE9wY29kZShvcF9zYXZlKTsKLSAgICBp
bnN0cnVjdGlvbnMoKS5hcHBlbmQobV9nZW5lcmF0b3JSZWdpc3Rlci0+aW5kZXgoKSk7CisgICAg
aW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGdlbmVyYXRvckZyYW1lUmVnaXN0ZXIoKS0+aW5kZXgoKSk7
CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGxpdmVDYWxsZWVMb2NhbHNJbmRleCk7CiAgICAg
aW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1lcmdlUG9pbnQtPmJpbmQoYmVnaW4sIGluc3RydWN0aW9u
cygpLnNpemUoKSkpOwogfQpAQCAtNDE1Myw5ICs0MTY0LDMxIEBAIHZvaWQgQnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXRTYXZlKExhYmVsKiBtZXJnZVBvaW50LCB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9j
YWxzSW5kCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzdW1lKExhYmVsKiBtZXJnZVBv
aW50LCB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpCiB7CiAgICAgZW1pdEdlbmVyYXRv
clN0YXRlTGFiZWwoKTsKKworICAgIHJlY2xhaW1GcmVlUmVnaXN0ZXJzKCk7CisgICAgdW5zaWdu
ZWQgbWF4TGl2ZUxvY2FscyA9IDA7CisgICAgZm9yIChjb25zdCBSZWdpc3RlcklEJiByZWcgOiBt
X2NhbGxlZUxvY2FscykgeworICAgICAgICBpZiAocmVnLnJlZkNvdW50KCkpCisgICAgICAgICAg
ICArK21heExpdmVMb2NhbHM7CisgICAgfQorCisgICAgLy8gVGhpcyBvcF9yZXN1bWUgd2lsbCBi
ZSByZXBsYWNlZCB3aXRoIHRoZSBhY3R1YWwgb3BzLgorICAgIGlmIChtYXhMaXZlTG9jYWxzKQor
ICAgICAgICBtYXhMaXZlTG9jYWxzIC09IDE7CisKICAgICBlbWl0T3Bjb2RlKG9wX3Jlc3VtZSk7
Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fZ2VuZXJhdG9yUmVnaXN0ZXItPmluZGV4KCkp
OworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChnZW5lcmF0b3JGcmFtZVJlZ2lzdGVyKCktPmlu
ZGV4KCkpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChsaXZlQ2FsbGVlTG9jYWxzSW5kZXgp
OworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChtYXhMaXZlTG9jYWxzKTsKKyAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgbWF4TGl2ZUxvY2FsczsgKytpKSB7CisgICAgICAgIC8vIE5vcCBz
cGFjZS4gTGF0ZXIgd2Ugd2lsbCBmaWxsIHRoaXMgd2l0aCB0aGUgYWN0dWFsIHJlc3VtZSBvcGVy
YXRpb25zLgorICAgICAgICBlbWl0T3Bjb2RlKG9wX25vcCk7CisgICAgICAgIGVtaXRPcGNvZGUo
b3Bfbm9wKTsKKyAgICAgICAgZW1pdE9wY29kZShvcF9ub3ApOworICAgICAgICBlbWl0T3Bjb2Rl
KG9wX25vcCk7CisgICAgfQorICAgIGVtaXRPcGNvZGUob3BfY2xlYXJfZ2VuZXJhdG9yX2ZyYW1l
KTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZ2VuZXJhdG9yRnJhbWVSZWdpc3RlcigpLT5p
bmRleCgpKTsKICAgICBlbWl0TGFiZWwobWVyZ2VQb2ludCk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAppbmRl
eCA3ZDBjMjBiNmY1MTZhMTdlODkzZjFiYmEwODAzYzEzMzNmZmM4ZDBkLi4zZDMzNDc4MTVhYzMw
YTgyZTYyNmUzZTA3ODA4MWJlMmIzZTliZTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCkBAIC01MjIsNiArNTIy
LDcgQEAKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdE5ld0RlZmF1bHRDb25zdHJ1Y3RvcihSZWdp
c3RlcklEKiBkc3QsIENvbnN0cnVjdG9yS2luZCwgY29uc3QgSWRlbnRpZmllciYgbmFtZSk7CiAg
ICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdBcnJvd0Z1bmN0aW9uRXhwcmVzc2lvbihSZWdpc3Rl
cklEKiwgQXJyb3dGdW5jRXhwck5vZGUqKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdE5ld1Jl
Z0V4cChSZWdpc3RlcklEKiBkc3QsIFJlZ0V4cCopOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0
TmV3R2VuZXJhdG9yRnJhbWUoUmVnaXN0ZXJJRCogZHN0KTsKIAogICAgICAgICBSZWdpc3RlcklE
KiBlbWl0TW92ZUxpbmtUaW1lQ29uc3RhbnQoUmVnaXN0ZXJJRCogZHN0LCBMaW5rVGltZUNvbnN0
YW50KTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdE1vdmVFbXB0eVZhbHVlKFJlZ2lzdGVySUQq
IGRzdCk7CkBAIC02ODQsNiArNjg1LDcgQEAKICAgICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9y
U3RhdGVSZWdpc3RlcigpIHsgcmV0dXJuICZtX3BhcmFtZXRlcnNbMl07IH0KICAgICAgICAgUmVn
aXN0ZXJJRCogZ2VuZXJhdG9yVmFsdWVSZWdpc3RlcigpIHsgcmV0dXJuICZtX3BhcmFtZXRlcnNb
M107IH0KICAgICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKCkg
eyByZXR1cm4gJm1fcGFyYW1ldGVyc1s0XTsgfQorICAgICAgICBSZWdpc3RlcklEKiBnZW5lcmF0
b3JGcmFtZVJlZ2lzdGVyKCkgeyByZXR1cm4gJm1fcGFyYW1ldGVyc1s1XTsgfQogCiAgICAgICAg
IENvZGVUeXBlIGNvZGVUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlVHlwZTsgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJ
bmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0
ZXJJbmxpbmVzLmgKaW5kZXggOWVlYzYzY2ViMDcxYmMxNDg2YTAxMmMyODUwMWRiNjI0MjZiZGU3
Yi4uZmMxNTEzNzc4ZjVhYTI5MzAzY2ZhNjk4ZTI2ZmI4ODM1OGRlODg2YSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklu
bGluZXMuaApAQCAtMTY4Nyw2ICsxNjg3LDEwIEBACiAgICAgY2FzZSBOZXdSZWdleHA6CiAgICAg
ICAgIGZvck5vZGUobm9kZSkuc2V0KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYyktPnJlZ0V4cFN0cnVjdHVyZSgpKTsKICAgICAgICAgYnJlYWs7
CisKKyAgICBjYXNlIE5ld0dlbmVyYXRvckZyYW1lOgorICAgICAgICBmb3JOb2RlKG5vZGUpLnNl
dChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
LT5nZW5lcmF0b3JGcmFtZVN0cnVjdHVyZSgpKTsKKyAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICAKICAgICBjYXNlIFRvVGhpczogewogICAgICAgICBBYnN0cmFjdFZhbHVlJiBzb3VyY2UgPSBm
b3JOb2RlKG5vZGUtPmNoaWxkMSgpKTsKQEAgLTI1MTAsNiArMjUxNCwyMiBAQAogICAgICAgICBm
b3JOb2RlKG5vZGUpLm1ha2VIZWFwVG9wKCk7CiAgICAgICAgIGJyZWFrOwogCisgICAgY2FzZSBT
YXZlVG9HZW5lcmF0b3JGcmFtZTogeworICAgICAgICBjbG9iYmVyV29ybGQobm9kZS0+b3JpZ2lu
LnNlbWFudGljLCBjbG9iYmVyTGltaXQpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBj
YXNlIFJlc3VtZUZyb21HZW5lcmF0b3JGcmFtZTogeworICAgICAgICBjbG9iYmVyV29ybGQobm9k
ZS0+b3JpZ2luLnNlbWFudGljLCBjbG9iYmVyTGltaXQpOworICAgICAgICBmb3JOb2RlKG5vZGUp
Lm1ha2VIZWFwVG9wKCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGNhc2UgUHV0R2Vu
ZXJhdG9yRnJhbWVMb2NhbHM6IHsKKyAgICAgICAgY2xvYmJlcldvcmxkKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYywgY2xvYmJlckxpbWl0KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2Fz
ZSBGb3JjZU9TUkV4aXQ6CiAgICAgY2FzZSBDaGVja0JhZENlbGw6CiAgICAgICAgIG1fc3RhdGUu
c2V0SXNWYWxpZChmYWxzZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0J5dGVDb2RlUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0
ZUNvZGVQYXJzZXIuY3BwCmluZGV4IDM2NDRhMmZkMTlhMGQ5YjNkZGE3YjA2OGEwMDQ5MGE1ODI2
MjA4NmQuLjZkODNmNzI5N2MwYjk1YTUyNDEzNDY4NmU3ZTFjMmZiZTZlOTM1ZWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC0xNDQs
NiArMTQ0LDcgQEAgY2xhc3MgQnl0ZUNvZGVQYXJzZXIgewogICAgICAgICAsIG1fY29uc3RhbnRO
dWxsKGdyYXBoLmZyZWV6ZShqc051bGwoKSkpCiAgICAgICAgICwgbV9jb25zdGFudE5hTihncmFw
aC5mcmVlemUoanNOdW1iZXIoUE5hTikpKQogICAgICAgICAsIG1fY29uc3RhbnRPbmUoZ3JhcGgu
ZnJlZXplKGpzTnVtYmVyKDEpKSkKKyAgICAgICAgLCBtX2NvbnN0YW50VHJ1ZShncmFwaC5mcmVl
emUoanNCb29sZWFuKHRydWUpKSkKICAgICAgICAgLCBtX251bUFyZ3VtZW50cyhtX2NvZGVCbG9j
ay0+bnVtUGFyYW1ldGVycygpKQogICAgICAgICAsIG1fbnVtTG9jYWxzKG1fY29kZUJsb2NrLT5t
X251bUNhbGxlZUxvY2FscykKICAgICAgICAgLCBtX3BhcmFtZXRlclNsb3RzKDApCkBAIC05ODIs
NiArOTgzLDcgQEAgY2xhc3MgQnl0ZUNvZGVQYXJzZXIgewogICAgIEZyb3plblZhbHVlKiBtX2Nv
bnN0YW50TnVsbDsKICAgICBGcm96ZW5WYWx1ZSogbV9jb25zdGFudE5hTjsKICAgICBGcm96ZW5W
YWx1ZSogbV9jb25zdGFudE9uZTsKKyAgICBGcm96ZW5WYWx1ZSogbV9jb25zdGFudFRydWU7CiAg
ICAgVmVjdG9yPE5vZGUqLCAxNj4gbV9jb25zdGFudHM7CiAKICAgICAvLyBUaGUgbnVtYmVyIG9m
IGFyZ3VtZW50cyBwYXNzZWQgdG8gdGhlIGZ1bmN0aW9uLgpAQCAtMTA1MSw2ICsxMDUzLDkgQEAg
Y2xhc3MgQnl0ZUNvZGVQYXJzZXIgewogICAgICAgICBDYWxsTGlua0luZm9NYXAgbV9jYWxsTGlu
a0luZm9zOwogICAgICAgICBTdHViSW5mb01hcCBtX3N0dWJJbmZvczsKICAgICAgICAgQnlWYWxJ
bmZvTWFwIG1fYnlWYWxJbmZvczsKKworICAgICAgICAvLyBCYXNpYyBibG9ja3MgcGVyZm9ybWlu
ZyB5aWVsZCdzIG9wX3NhdmUgb3BlcmF0aW9uLgorICAgICAgICBWZWN0b3I8QmFzaWNCbG9jayo+
IG1feWllbGRpbmdCbG9ja3M7CiAgICAgICAgIAogICAgICAgICAvLyBEaWQgd2Ugc2VlIGFueSBy
ZXR1cm5zPyBXZSBuZWVkIHRvIGhhbmRsZSB0aGUgKHVuY29tbW9uIGJ1dCBuZWNlc3NhcnkpCiAg
ICAgICAgIC8vIGNhc2Ugd2hlcmUgYSBwcm9jZWR1cmUgdGhhdCBkb2VzIG5vdCByZXR1cm4gd2Fz
IGlubGluZWQuCkBAIC0zMzQxLDYgKzMzNDYsMTEgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFy
c2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX25ld19y
ZWdleHApOwogICAgICAgICB9CiAKKyAgICAgICAgY2FzZSBvcF9uZXdfZ2VuZXJhdG9yX2ZyYW1l
OiB7CisgICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsx
XS51Lm9wZXJhbmQpLCBhZGRUb0dyYXBoKE5ld0dlbmVyYXRvckZyYW1lLCBPcEluZm8oY3VycmVu
dEluc3RydWN0aW9uWzJdLnUudW5zaWduZWRWYWx1ZSkpKTsKKyAgICAgICAgICAgIE5FWFRfT1BD
T0RFKG9wX25ld19nZW5lcmF0b3JfZnJhbWUpOworICAgICAgICB9CisKICAgICAgICAgY2FzZSBv
cF9nZXRfcmVzdF9sZW5ndGg6IHsKICAgICAgICAgICAgIElubGluZUNhbGxGcmFtZSogaW5saW5l
Q2FsbEZyYW1lID0gdGhpcy0+aW5saW5lQ2FsbEZyYW1lKCk7CiAgICAgICAgICAgICBOb2RlKiBs
ZW5ndGg7CkBAIC0zMzY4LDYgKzMzNzgsNTIgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VC
bG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgICAgICBhcnJheSwgYXJyYXlMZW5ndGgp
OwogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfY29weV9yZXN0KTsKICAgICAgICAgfQorCisg
ICAgICAgIGNhc2Ugb3Bfc2F2ZTogeworICAgICAgICAgICAgTm9kZSogZnJhbWUgPSBnZXQoVmly
dHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpKTsKKyAgICAgICAg
ICAgIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9IGN1cnJlbnRJbnN0cnVjdGlvblsy
XS51LnVuc2lnbmVkVmFsdWU7CisgICAgICAgICAgICBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZl
bmVzcyA9IG1faW5saW5lU3RhY2tUb3AtPm1fY29kZUJsb2NrLT5saXZlQ2FsbGVlTG9jYWxzQXRZ
aWVsZChsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpOworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQo
bGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID09IG1faW5saW5lU3RhY2tUb3AtPm1feWllbGRpbmdCbG9j
a3Muc2l6ZSgpKTsKKyAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1feWllbGRpbmdCbG9j
a3MuYXBwZW5kKG1fY3VycmVudEJsb2NrKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGdlbmVyYXRv
ckZyYW1lSW5kZXggPSAwOworICAgICAgICAgICAgbGl2ZW5lc3MuZm9yRWFjaFNldEJpdChbJl0o
c2l6ZV90IGluZGV4KSB7CisgICAgICAgICAgICAgICAgTm9kZSogbG9jYWwgPSBnZXQoVmlydHVh
bFJlZ2lzdGVyKHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGluZGV4KSkpOworICAgICAgICAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKGxvY2FsLT5vcCgpID09IEdldExvY2FsKTsKKyAgICAgICAgICAg
ICAgICBhZGRUb0dyYXBoKFNhdmVUb0dlbmVyYXRvckZyYW1lLCBPcEluZm8oZ2VuZXJhdG9yRnJh
bWVJbmRleCsrKSwgT3BJbmZvKGxvY2FsLT52YXJpYWJsZUFjY2Vzc0RhdGEoKSksIGZyYW1lLCBs
b2NhbCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIGFkZFRvR3JhcGgoUHV0R2VuZXJh
dG9yRnJhbWVMb2NhbHMsIE9wSW5mbyhnZW5lcmF0b3JGcmFtZUluZGV4KSwgZnJhbWUpOworCisg
ICAgICAgICAgICB1bnNpZ25lZCByZWxhdGl2ZU9mZnNldCA9IGN1cnJlbnRJbnN0cnVjdGlvblsz
XS51Lm9wZXJhbmQ7CisgICAgICAgICAgICBOb2RlKiB0cnVlQ29uZGl0aW9uID0gYWRkVG9HcmFw
aChKU0NvbnN0YW50LCBPcEluZm8obV9jb25zdGFudFRydWUpKTsKKyAgICAgICAgICAgIGFkZFRv
R3JhcGgoQnJhbmNoLCBPcEluZm8oYnJhbmNoRGF0YShtX2N1cnJlbnRJbmRleCArIE9QQ09ERV9M
RU5HVEgob3Bfc2F2ZSksIG1fY3VycmVudEluZGV4ICsgcmVsYXRpdmVPZmZzZXQpKSwgdHJ1ZUNv
bmRpdGlvbik7CisgICAgICAgICAgICBMQVNUX09QQ09ERShvcF9zYXZlKTsKKyAgICAgICAgfQor
CisgICAgICAgIGNhc2Ugb3BfcmVzdW1lOiB7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBj
YXNlIG9wX3Jlc3VtZV9mcm9tX2dlbmVyYXRvcl9mcmFtZTogeworICAgICAgICAgICAgTm9kZSog
ZnJhbWUgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJh
bmQpKTsKKyAgICAgICAgICAgIEJhc2ljQmxvY2sqIHlpZWxkaW5nQmxvY2sgPSBtX2lubGluZVN0
YWNrVG9wLT5tX3lpZWxkaW5nQmxvY2tzLmxhc3QoKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGdl
bmVyYXRvckZyYW1lSW5kZXggPSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS51bnNpZ25lZFZhbHVl
OworICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIGxvY2FsUmVnaXN0ZXIoY3VycmVudEluc3Ry
dWN0aW9uWzFdLnUub3BlcmFuZCk7CisgICAgICAgICAgICBOb2RlKiBzYXZlZCA9IHlpZWxkaW5n
QmxvY2stPnZhcmlhYmxlc0F0VGFpbC5sb2NhbChtX2lubGluZVN0YWNrVG9wLT5yZW1hcE9wZXJh
bmQobG9jYWxSZWdpc3RlcikudG9Mb2NhbCgpKTsKKyAgICAgICAgICAgIHNldChsb2NhbFJlZ2lz
dGVyLCBhZGRUb0dyYXBoKFJlc3VtZUZyb21HZW5lcmF0b3JGcmFtZSwgT3BJbmZvKGdlbmVyYXRv
ckZyYW1lSW5kZXgpLCBPcEluZm8oc2F2ZWQtPnZhcmlhYmxlQWNjZXNzRGF0YSgpKSwgZnJhbWUp
KTsKKyAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX3Jlc3VtZV9mcm9tX2dlbmVyYXRvcl9mcmFt
ZSk7CisgICAgICAgIH0KKworICAgICAgICBjYXNlIG9wX2NsZWFyX2dlbmVyYXRvcl9mcmFtZTog
eworICAgICAgICAgICAgTm9kZSogZnJhbWUgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJ
bnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpKTsKKyAgICAgICAgICAgIGFkZFRvR3JhcGgoUHV0R2Vu
ZXJhdG9yRnJhbWVMb2NhbHMsIE9wSW5mbygwKSwgZnJhbWUpOworICAgICAgICAgICAgTkVYVF9P
UENPREUob3BfY2xlYXJfZ2VuZXJhdG9yX2ZyYW1lKTsKKyAgICAgICAgfQorCisgICAgICAgIGNh
c2Ugb3Bfbm9wOiB7CisgICAgICAgICAgICBORVhUX09QQ09ERShvcF9ub3ApOworICAgICAgICB9
CisKICAgICAgICAgICAgIAogICAgICAgICAvLyA9PT0gQml0d2lzZSBvcGVyYXRpb25zID09PQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKaW5kZXgg
ZDEwMGQ5N2Q1YzYwZTI1YTA2MGZmZGE0NTY2M2IzYjk0MTQzNWRjNi4uMTk4NDFhODhmNjRhYTE1
NzliNzY3ZDUyZGJkMWUxZjkyMjBhYTFjYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ2FwYWJpbGl0aWVzLmNwcApAQCAtMTgxLDYgKzE4MSw3IEBAIENhcGFiaWxpdHlMZXZl
bCBjYXBhYmlsaXR5TGV2ZWwoT3Bjb2RlSUQgb3Bjb2RlSUQsIENvZGVCbG9jayogY29kZUJsb2Nr
LCBJbnN0cnVjCiAgICAgY2FzZSBvcF9uZXdfYXJyYXk6CiAgICAgY2FzZSBvcF9uZXdfYXJyYXlf
d2l0aF9zaXplOgogICAgIGNhc2Ugb3BfbmV3X2FycmF5X2J1ZmZlcjoKKyAgICBjYXNlIG9wX25l
d19nZW5lcmF0b3JfZnJhbWU6CiAgICAgY2FzZSBvcF9zdHJjYXQ6CiAgICAgY2FzZSBvcF90b19w
cmltaXRpdmU6CiAgICAgY2FzZSBvcF90aHJvdzoKQEAgLTIyNCw2ICsyMjUsMTEgQEAgQ2FwYWJp
bGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbChPcGNvZGVJRCBvcGNvZGVJRCwgQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIEluc3RydWMKICAgICBjYXNlIG9wX2NhdGNoOgogICAgIGNhc2Ugb3BfY29weV9y
ZXN0OgogICAgIGNhc2Ugb3BfZ2V0X3Jlc3RfbGVuZ3RoOgorICAgIGNhc2Ugb3Bfc2F2ZToKKyAg
ICBjYXNlIG9wX3Jlc3VtZToKKyAgICBjYXNlIG9wX3Jlc3VtZV9mcm9tX2dlbmVyYXRvcl9mcmFt
ZToKKyAgICBjYXNlIG9wX2NsZWFyX2dlbmVyYXRvcl9mcmFtZToKKyAgICBjYXNlIG9wX25vcDoK
ICAgICAgICAgcmV0dXJuIENhbkNvbXBpbGVBbmRJbmxpbmU7CiAKICAgICBjYXNlIG9wX3B1dF90
b19zY29wZTogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9i
YmVyaXplLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAppbmRl
eCAzNDNhNmRlOWMyOTA5YjkzZTA1MjhjZjAyNzg0YWFkOTRkMDFiNGQxLi44MWIyZTk0MGQ2YWI2
OWFhYjZjNTQ0YzkzZGRhNDg0MTg4NzQxZWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Nsb2JiZXJpemUuaApAQCAtMTA0NCw2ICsxMDQ0LDcgQEAgdm9pZCBjbG9iYmVyaXplKEdy
YXBoJiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQsIGNvbnN0IFdy
aXRlRnUKIAogICAgIGNhc2UgTmV3T2JqZWN0OgogICAgIGNhc2UgTmV3UmVnZXhwOgorICAgIGNh
c2UgTmV3R2VuZXJhdG9yRnJhbWU6CiAgICAgY2FzZSBOZXdTdHJpbmdPYmplY3Q6CiAgICAgY2Fz
ZSBQaGFudG9tTmV3T2JqZWN0OgogICAgIGNhc2UgTWF0ZXJpYWxpemVOZXdPYmplY3Q6CkBAIC0x
MTExLDYgKzExMTIsMjMgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9k
ZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQsIGNvbnN0IFdyaXRlRnUKICAgICAgICAgICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KKworICAgIGNhc2UgU2F2ZVRvR2VuZXJhdG9yRnJhbWU6IHsKKyAgICAgICAgcmVhZChXb3Js
ZCk7CisgICAgICAgIHdyaXRlKEhlYXApOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
Y2FzZSBSZXN1bWVGcm9tR2VuZXJhdG9yRnJhbWU6IHsKKyAgICAgICAgcmVhZChXb3JsZCk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBjYXNlIFB1dEdlbmVyYXRvckZyYW1lTG9jYWxz
OiB7CisgICAgICAgIHJlYWQoV29ybGQpOworICAgICAgICB3cml0ZShIZWFwKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBUaHJvd1JlZmVyZW5jZUVycm9yOgog
ICAgICAgICB3cml0ZShTaWRlU3RhdGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDbG9iYmVyc0V4aXRTdGF0ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcAppbmRleCA0ZTBjNTA3Nzg5Y2Q3YjNmZjQ3NzUx
ZjkyNWU3NDgzZTYxZTJkZjViLi5mMjRiMDI1OWE4MmU5NjIwZDY5MjI1ZTQyZDdjN2ZiNzUzNTU2
MWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJzRXhp
dFN0YXRlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJzRXhp
dFN0YXRlLmNwcApAQCAtNTMsMTAgKzUzLDE2IEBAIGJvb2wgY2xvYmJlcnNFeGl0U3RhdGUoR3Jh
cGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgICAgICAvLyBleGl0IHN0YXRlLgogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKKyAgICBjYXNlIFB1dEdlbmVyYXRvckZyYW1lTG9jYWxzOgorICAgIGNh
c2UgU2F2ZVRvR2VuZXJhdG9yRnJhbWU6CisgICAgY2FzZSBSZXN1bWVGcm9tR2VuZXJhdG9yRnJh
bWU6CisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIGNhc2UgQXJyYXlpZnlUb1N0cnVjdHVy
ZToKICAgICBjYXNlIEFycmF5aWZ5OgogICAgIGNhc2UgTmV3T2JqZWN0OgogICAgIGNhc2UgTmV3
UmVnZXhwOgorICAgIGNhc2UgTmV3R2VuZXJhdG9yRnJhbWU6CiAgICAgY2FzZSBOZXdTdHJpbmdP
YmplY3Q6CiAgICAgY2FzZSBQaGFudG9tTmV3T2JqZWN0OgogICAgIGNhc2UgTWF0ZXJpYWxpemVO
ZXdPYmplY3Q6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNH
Qy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKaW5kZXggNzAy
ZGE1YmYxZTdjMGYxYzhmZTU1YzY0ODQ0NThmY2FkODFlMmFhNS4uY2YwMzNlYjE0MDMyZjZlMzA1
NWEyYWJkZDA2NTY3YWJjZWJlNTI4MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdEb2VzR0MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9l
c0dDLmNwcApAQCAtMjI5LDYgKzIyOSw5IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9k
ZSogbm9kZSkKICAgICBjYXNlIEdldEZyb21Bcmd1bWVudHM6CiAgICAgY2FzZSBQdXRUb0FyZ3Vt
ZW50czoKICAgICBjYXNlIENvcHlSZXN0OgorICAgIGNhc2UgU2F2ZVRvR2VuZXJhdG9yRnJhbWU6
CisgICAgY2FzZSBSZXN1bWVGcm9tR2VuZXJhdG9yRnJhbWU6CisgICAgY2FzZSBQdXRHZW5lcmF0
b3JGcmFtZUxvY2FsczoKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgY2FzZSBDcmVhdGVB
Y3RpdmF0aW9uOgpAQCAtMjQ2LDYgKzI0OSw3IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwg
Tm9kZSogbm9kZSkKICAgICBjYXNlIE5ld0FycmF5V2l0aFNpemU6CiAgICAgY2FzZSBOZXdBcnJh
eUJ1ZmZlcjoKICAgICBjYXNlIE5ld1JlZ2V4cDoKKyAgICBjYXNlIE5ld0dlbmVyYXRvckZyYW1l
OgogICAgIGNhc2UgTmV3U3RyaW5nT2JqZWN0OgogICAgIGNhc2UgTWFrZVJvcGU6CiAgICAgY2Fz
ZSBOZXdBcnJvd0Z1bmN0aW9uOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdGaXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQ
aGFzZS5jcHAKaW5kZXggYzlkNWFiZmI0OTQ4MWI5MDU4OWVjNGZiYTU5NWEyY2U4ZTcwZGY2Ny4u
ZDE2YjYzNDU5OTM1OWI2NWM2N2QyZmFkOTRlYjU2OTFjYjhjYjRiOSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCkBAIC0xNDMwLDYgKzE0MzAsMjEgQEAg
Y2xhc3MgRml4dXBQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogCisgICAgICAgIGNhc2UgU2F2ZVRvR2VuZXJhdG9yRnJhbWU6IHsKKyAgICAgICAg
ICAgIGZpeEVkZ2U8Q2VsbFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KKworICAgICAgICBjYXNlIFJlc3VtZUZyb21HZW5lcmF0b3JGcmFtZTogewor
ICAgICAgICAgICAgZml4RWRnZTxDZWxsVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2UgUHV0R2VuZXJhdG9yRnJhbWVMb2Nh
bHM6IHsKKyAgICAgICAgICAgIGZpeEVkZ2U8Q2VsbFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKwogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICAg
ICAgLy8gSGF2ZSB0aGVzZSBuby1vcCBjYXNlcyBoZXJlIHRvIGVuc3VyZSB0aGF0IG5vYm9keSBm
b3JnZXRzIHRvIGFkZCBoYW5kbGVycyBmb3IgbmV3IG9wY29kZXMuCiAgICAgICAgIGNhc2UgU2V0
QXJndW1lbnQ6CkBAIC0xNDYyLDYgKzE0NzcsNyBAQCBjbGFzcyBGaXh1cFBoYXNlIDogcHVibGlj
IFBoYXNlIHsKICAgICAgICAgY2FzZSBOZXdPYmplY3Q6CiAgICAgICAgIGNhc2UgTmV3QXJyYXlC
dWZmZXI6CiAgICAgICAgIGNhc2UgTmV3UmVnZXhwOgorICAgICAgICBjYXNlIE5ld0dlbmVyYXRv
ckZyYW1lOgogICAgICAgICBjYXNlIEJyZWFrcG9pbnQ6CiAgICAgICAgIGNhc2UgUHJvZmlsZVdp
bGxDYWxsOgogICAgICAgICBjYXNlIFByb2ZpbGVEaWRDYWxsOgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTWF5RXhpdC5jcHAKaW5kZXggZGFhMjkzMzlkYmZiZGY4MGFhZDliNjQ2YTJjYjdh
MDU4N2Q5NjIzOC4uYjczNmUxMThlM2NiMTNkMGM3MDViYzQ2NTYyN2I5NWI5OWMzMjU3ZCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3BwCkBAIC0xMzAsNiArMTMwLDkg
QEAgRXhpdE1vZGUgbWF5RXhpdChHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBT
dG9yZUJhcnJpZXI6CiAgICAgY2FzZSBQdXRCeU9mZnNldDoKICAgICBjYXNlIFB1dENsb3N1cmVW
YXI6CisgICAgY2FzZSBQdXRHZW5lcmF0b3JGcmFtZUxvY2FsczoKKyAgICBjYXNlIFNhdmVUb0dl
bmVyYXRvckZyYW1lOgorICAgIGNhc2UgUmVzdW1lRnJvbUdlbmVyYXRvckZyYW1lOgogICAgICAg
ICBicmVhazsKIAogICAgIGNhc2UgU3RyQ2F0OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdOb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUu
aAppbmRleCAxMjg3MGQ5M2QwYzQ4MmU0ZjhlNWQ0ZDJkYWYxZTZiZjFmNzFiNjJjLi40M2EyYzlh
YmU1MDAwMTE0YTkxMWU2ODg1YTA4ZTcxOWEyOGM5MTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR05vZGUuaApAQCAtODc4LDYgKzg3OCw3MiBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgICAgIHJl
dHVybiBtX29wSW5mbzsKICAgICB9CiAKKyAgICBib29sIGhhc0dlbmVyYXRvckZyYW1lU2l6ZSgp
CisgICAgeworICAgICAgICBzd2l0Y2ggKG9wKCkpIHsKKyAgICAgICAgY2FzZSBOZXdHZW5lcmF0
b3JGcmFtZToKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBkZWZhdWx0OgorICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorCisgICAgdW5zaWduZWQg
Z2VuZXJhdG9yRnJhbWVTaXplKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChoYXNHZW5lcmF0b3JG
cmFtZVNpemUoKSk7CisgICAgICAgIHJldHVybiBtX29wSW5mbzsKKyAgICB9CisKKyAgICBib29s
IGhhc0dlbmVyYXRvckZyYW1lSW5kZXgoKQorICAgIHsKKyAgICAgICAgc3dpdGNoIChvcCgpKSB7
CisgICAgICAgIGNhc2UgU2F2ZVRvR2VuZXJhdG9yRnJhbWU6CisgICAgICAgIGNhc2UgUmVzdW1l
RnJvbUdlbmVyYXRvckZyYW1lOgorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICB1bnNpZ25lZCBnZW5lcmF0b3JGcmFtZUluZGV4KCkKKyAgICB7CisgICAgICAgIEFTU0VSVCho
YXNHZW5lcmF0b3JGcmFtZUluZGV4KCkpOworICAgICAgICByZXR1cm4gbV9vcEluZm87CisgICAg
fQorCisgICAgYm9vbCBoYXNTYXZlZFZhcmlhYmxlQWNjZXNzRGF0YSgpCisgICAgeworICAgICAg
ICBzd2l0Y2ggKG9wKCkpIHsKKyAgICAgICAgY2FzZSBTYXZlVG9HZW5lcmF0b3JGcmFtZToKKyAg
ICAgICAgY2FzZSBSZXN1bWVGcm9tR2VuZXJhdG9yRnJhbWU6CisgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogc2F2ZWRWYXJpYWJsZUFjY2Vz
c0RhdGEoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGhhc1NhdmVkVmFyaWFibGVBY2Nlc3NEYXRh
KCkpOworICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxWYXJpYWJsZUFjY2Vzc0RhdGEq
PihtX29wSW5mbzIpLT5maW5kKCk7CisgICAgfQorCisgICAgYm9vbCBoYXNHZW5lcmF0b3JGcmFt
ZUxvY2FscygpCisgICAgeworICAgICAgICBzd2l0Y2ggKG9wKCkpIHsKKyAgICAgICAgY2FzZSBQ
dXRHZW5lcmF0b3JGcmFtZUxvY2FsczoKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQor
CisgICAgdW5zaWduZWQgZ2VuZXJhdG9yRnJhbWVMb2NhbHMoKQorICAgIHsKKyAgICAgICAgQVNT
RVJUKGhhc0dlbmVyYXRvckZyYW1lTG9jYWxzKCkpOworICAgICAgICByZXR1cm4gbV9vcEluZm87
CisgICAgfQorCiAgICAgYm9vbCBoYXNBY2Nlc3NvckF0dHJpYnV0ZXMoKQogICAgIHsKICAgICAg
ICAgc3dpdGNoIChvcCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR05vZGVUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgK
aW5kZXggZGRkMGI5N2NiMmZlNjkyNjA0NTEwM2Y4YTcxMDcwMDQ4MmU5ZjZiZC4uYmY5OTc2ZDRh
ODg3NGM0NTRjN2I1NjE5MGNhOTk2MTYzNjliMDI5YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTm9kZVR5cGUuaApAQCAtNzksNiArNzksMTAgQEAKICAgICBtYWNybyhGbHVzaCwgTm9k
ZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKFBoYW50b21Mb2NhbCwgTm9kZU11c3RHZW5lcmF0
ZSkgXAogICAgIFwKKyAgICBtYWNybyhTYXZlVG9HZW5lcmF0b3JGcmFtZSwgTm9kZU11c3RHZW5l
cmF0ZSkgXAorICAgIG1hY3JvKFJlc3VtZUZyb21HZW5lcmF0b3JGcmFtZSwgTm9kZVJlc3VsdEpT
KSBcCisgICAgbWFjcm8oUHV0R2VuZXJhdG9yRnJhbWVMb2NhbHMsIE5vZGVNdXN0R2VuZXJhdGUp
IFwKKyAgICBcCiAgICAgLyogSGludCB0aGF0IHRoaXMgaXMgd2hlcmUgYnl0ZWNvZGUgdGhpbmtz
IGlzIGEgZ29vZCBwbGFjZSB0byBPU1IuIE5vdGUgdGhhdCB0aGlzICovXAogICAgIC8qIHdpbGwg
ZXhpc3QgZXZlbiBpbiBpbmxpbmVkIGxvb3BzLiBUaGlzIGhhcyBubyBleGVjdXRpb24gc2VtYW50
aWNzIGJ1dCBpdCBtdXN0ICovXAogICAgIC8qIHN1cnZpdmUgYWxsIERDRS4gV2UgdHJlYXQgdGhp
cyBhcyBiZWluZyBhIGNhbi1leGl0IGJlY2F1c2UgdGllci11cCB0byBGVEwgbWF5ICovXApAQCAt
MjYzLDYgKzI2Nyw3IEBACiAgICAgbWFjcm8oTmV3QXJyYXlCdWZmZXIsIE5vZGVSZXN1bHRKUykg
XAogICAgIG1hY3JvKE5ld1R5cGVkQXJyYXksIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJh
dGUpIFwKICAgICBtYWNybyhOZXdSZWdleHAsIE5vZGVSZXN1bHRKUykgXAorICAgIG1hY3JvKE5l
d0dlbmVyYXRvckZyYW1lLCBOb2RlUmVzdWx0SlMpIFwKICAgICAvKiBSZXN0IFBhcmFtZXRlciAq
L1wKICAgICBtYWNybyhHZXRSZXN0TGVuZ3RoLCBOb2RlUmVzdWx0SW50MzIpIFwKICAgICBtYWNy
byhDb3B5UmVzdCwgTm9kZU11c3RHZW5lcmF0ZSkgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT3BlcmF0aW9ucy5jcHAKaW5kZXggMmZkNWRiZGM3ZmM0Y2NhODZmYWUxMDkyMjdhYzE3
NTdmZGNkZjk2Yy4uYmMzNTY2MTNkM2Y1MjE4MDgyMzhlNTI2ODEzNWFhYjA5YmU2N2YwZSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCkBAIC00MSw4ICs0
MSw5IEBACiAjaW5jbHVkZSAiRGlyZWN0QXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiRlRMRm9yT1NS
RW50cnlKSVRDb2RlLmgiCiAjaW5jbHVkZSAiRlRMT1NSRW50cnkuaCIKLSNpbmNsdWRlICJIb3N0
Q2FsbFJldHVyblZhbHVlLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yRnJhbWUuaCIKICNpbmNsdWRl
ICJHZXR0ZXJTZXR0ZXIuaCIKKyNpbmNsdWRlICJIb3N0Q2FsbFJldHVyblZhbHVlLmgiCiAjaW5j
bHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKSVQuaCIKICNpbmNsdWRlICJKSVRFeGNl
cHRpb25zLmgiCkBAIC04MTcsNiArODE4LDExIEBAIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uTmV3RmxvYXQ2NEFycmF5V2l0aE9uZUFyZ3VtZW50KAogICAgIHJldHVybiByZWludGVycHJl
dF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRz
PEpTRmxvYXQ2NEFycmF5PihleGVjLCBzdHJ1Y3R1cmUsIGVuY29kZWRWYWx1ZSwgMCwgTnVsbG9w
dCkpOwogfQogCitjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0dlbmVyYXRvckZyYW1l
KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludDMyX3QgbnVtYmVyT2ZD
YWxsZWVMb2NhbHMpCit7CisgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxjaGFyKj4oR2VuZXJhdG9y
RnJhbWU6OmNyZWF0ZShleGVjLT52bSgpLCBzdHJ1Y3R1cmUsIG51bWJlck9mQ2FsbGVlTG9jYWxz
KSk7Cit9CisKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25DcmVhdGVBY3RpdmF0aW9u
RGlyZWN0KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTU2NvcGUqIHNj
b3BlLCBTeW1ib2xUYWJsZSogdGFibGUsIEVuY29kZWRKU1ZhbHVlIGluaXRpYWxWYWx1ZUVuY29k
ZWQpCiB7CiAgICAgSlNWYWx1ZSBpbml0aWFsVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoaW5pdGlh
bFZhbHVlRW5jb2RlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5o
CmluZGV4IDQwOTYyOWZmNWQ1M2E3YmUzODdhNjIzNjQ1NWQ2ODE2YWMwODVlYzkuLmU0NDNiYTI4
MjM3MmZiY2NlMmJhYzViMDlhMzY3YmQ1MmM4ZTc1ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT3BlcmF0aW9ucy5oCkBAIC04Miw2ICs4Miw3IEBACiBjaGFyKiBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbk5ld0Zsb2F0MzJBcnJheVdpdGhPbmVBcmd1bWVudChFeGVjU3RhdGUqLCBT
dHJ1Y3R1cmUqLCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFMOwogY2hhciogSklUX09QRVJB
VElPTiBvcGVyYXRpb25OZXdGbG9hdDY0QXJyYXlXaXRoU2l6ZShFeGVjU3RhdGUqLCBTdHJ1Y3R1
cmUqLCBpbnQzMl90KSBXVEZfSU5URVJOQUw7CiBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bk5ld0Zsb2F0NjRBcnJheVdpdGhPbmVBcmd1bWVudChFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqLCBF
bmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFMOworY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRp
b25OZXdHZW5lcmF0b3JGcmFtZShFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90KSBXVEZf
SU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxTdHJpY3QoRXhl
Y1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRQcm9wZXJ0eSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSBXVEZfSU5URVJOQUw7CiB2
b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxOb25TdHJpY3QoRXhlY1N0YXRlKiwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRQcm9wZXJ0
eSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxDZWxsU3RyaWN0KEV4ZWNTdGF0ZSosIEpTQ2VsbCos
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRQcm9wZXJ0eSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlKSBXVEZfSU5URVJOQUw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCmluZGV4IDU3OTk4Y2ZlMTgx
YThmY2Y5Y2M2NTE0MzUxYWM1ODBiODBlN2ZiOGEuLmU2Mzg0MWFjM2I5YWY5YzdiZTIxMTg2YjQ5
MzAzYWU2NWU3ZTRhMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCkBAIC0xNjAsNiArMTYwLDIy
IEBAIGNsYXNzIFByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlIDogcHVibGljIFBoYXNlIHsKICAg
ICAgICAgICAgIGNoYW5nZWQgfD0gdmFyaWFibGVBY2Nlc3NEYXRhLT5wcmVkaWN0KG5vZGUtPmNo
aWxkMSgpLT5wcmVkaWN0aW9uKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKwor
ICAgICAgICBjYXNlIFNhdmVUb0dlbmVyYXRvckZyYW1lOiB7CisgICAgICAgICAgICAvLyBWYXJp
YWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxlQWNjZXNzRGF0YSA9IG5vZGUtPnNhdmVkVmFyaWFibGVB
Y2Nlc3NEYXRhKCk7CisgICAgICAgICAgICAvLyBjaGFuZ2VkIHw9IHZhcmlhYmxlQWNjZXNzRGF0
YS0+cHJlZGljdChub2RlLT5jaGlsZDEoKS0+cHJlZGljdGlvbigpKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBSZXN1bWVGcm9tR2VuZXJhdG9yRnJhbWU6
IHsKKyAgICAgICAgICAgIC8vIFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFibGUgPSBub2RlLT5z
YXZlZFZhcmlhYmxlQWNjZXNzRGF0YSgpOworICAgICAgICAgICAgLy8gU3BlY3VsYXRlZFR5cGUg
cHJlZGljdGlvbiA9IHZhcmlhYmxlLT5wcmVkaWN0aW9uKCk7CisgICAgICAgICAgICAvLyBpZiAo
IXZhcmlhYmxlLT5jb3VsZFJlcHJlc2VudEludDUyKCkgJiYgKHByZWRpY3Rpb24gJiBTcGVjSW50
NTIpKQorICAgICAgICAgICAgLy8gICAgIHByZWRpY3Rpb24gPSAocHJlZGljdGlvbiB8IFNwZWNJ
bnQ1MkFzRG91YmxlKSAmIH5TcGVjSW50NTI7CisgICAgICAgICAgICAvLyBpZiAocHJlZGljdGlv
bikKKyAgICAgICAgICAgIC8vICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihwcmVkaWN0
aW9uKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAg
ICAgY2FzZSBCaXRBbmQ6CiAgICAgICAgIGNhc2UgQml0T3I6CkBAIC01MjQsNyArNTQwLDggQEAg
Y2xhc3MgUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAg
ICB9CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBOZXdSZWdleHA6Ci0gICAgICAgIGNhc2Ug
Q3JlYXRlQWN0aXZhdGlvbjogeworICAgICAgICBjYXNlIENyZWF0ZUFjdGl2YXRpb246CisgICAg
ICAgIGNhc2UgTmV3R2VuZXJhdG9yRnJhbWU6IHsKICAgICAgICAgICAgIGNoYW5nZWQgfD0gc2V0
UHJlZGljdGlvbihTcGVjT2JqZWN0T3RoZXIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KQEAgLTcxNiw2ICs3MzMsNyBAQCBjbGFzcyBQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZSA6
IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgIGNhc2UgRXhpdE9LOgogICAgICAgICBjYXNlIExvYWRW
YXJhcmdzOgogICAgICAgICBjYXNlIENvcHlSZXN0OgorICAgICAgICBjYXNlIFB1dEdlbmVyYXRv
ckZyYW1lTG9jYWxzOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICAgICAg
Ly8gVGhpcyBnZXRzIGlnbm9yZWQgYmVjYXVzZSBpdCBvbmx5IHByZXRlbmRzIHRvIHByb2R1Y2Ug
YSB2YWx1ZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRv
RXhlY3V0ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgK
aW5kZXggMjMwZWZlZGM0ODMxNTEyYmFjNTY4YmVlZmRiMjc2OTYxODcyMDk0Yy4uZDQ2MmY1ODk5
ZDk1NjExMWQ0MTM1YWU2OGUyOTMyNGU4YzIxYWI1MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKQEAgLTIzNyw2ICsyMzcsNyBAQCBib29sIHNhZmVU
b0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgsIE5vZGUqIG5v
ZGUpCiAgICAgY2FzZSBOZXdBcnJheVdpdGhTaXplOgogICAgIGNhc2UgTmV3QXJyYXlCdWZmZXI6
CiAgICAgY2FzZSBOZXdSZWdleHA6CisgICAgY2FzZSBOZXdHZW5lcmF0b3JGcmFtZToKICAgICBj
YXNlIEJyZWFrcG9pbnQ6CiAgICAgY2FzZSBQcm9maWxlV2lsbENhbGw6CiAgICAgY2FzZSBQcm9m
aWxlRGlkQ2FsbDoKQEAgLTMyOCw2ICszMjksOSBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJh
Y3RTdGF0ZVR5cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBH
ZXRNeUFyZ3VtZW50QnlWYWw6CiAgICAgY2FzZSBGb3J3YXJkVmFyYXJnczoKICAgICBjYXNlIENv
cHlSZXN0OgorICAgIGNhc2UgU2F2ZVRvR2VuZXJhdG9yRnJhbWU6CisgICAgY2FzZSBSZXN1bWVG
cm9tR2VuZXJhdG9yRnJhbWU6CisgICAgY2FzZSBQdXRHZW5lcmF0b3JGcmFtZUxvY2FsczoKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBjYXNlIEJvdHRvbVZhbHVlOgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAppbmRleCBjY2NlNzkxOTk1
MTQ1ZTkxZWZkMjAwODhjOTZiN2FmODJiNTYxNmQ2Li4yYTM2ZDhiYWI4ODcwOWM4Y2ZkMWU2MGE5
ZjBhZDgyYzdiMzc2YmY4IDEwMDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmNwcApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIkRGR1NhbmVTdHJp
bmdHZXRCeVZhbFNsb3dQYXRoR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiREZHU2xvd1BhdGhHZW5l
cmF0b3IuaCIKICNpbmNsdWRlICJEaXJlY3RBcmd1bWVudHMuaCIKKyNpbmNsdWRlICJHZW5lcmF0
b3JGcmFtZS5oIgogI2luY2x1ZGUgIkpJVEFkZEdlbmVyYXRvci5oIgogI2luY2x1ZGUgIkpJVEJp
dEFuZEdlbmVyYXRvci5oIgogI2luY2x1ZGUgIkpJVEJpdE9yR2VuZXJhdG9yLmgiCkBAIC02Mzc4
LDYgKzYzNzksMjkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld1N0cmluZ09iamVj
dChOb2RlKiBub2RlKQogICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKIH0KIAordm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld0dlbmVyYXRvckZyYW1lKE5vZGUqIG5vZGUpCit7
CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1faml0LmdyYXBoKCkuZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUgPSBnbG9iYWxPYmplY3QtPmdlbmVyYXRvckZyYW1lU3RydWN0dXJlKCk7CisKKyAgICBHUFJU
ZW1wb3JhcnkgcmVzdWx0KHRoaXMpOworICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoMSh0aGlzKTsK
KyAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaDIodGhpcyk7CisKKyAgICBHUFJSZWcgcmVzdWx0R1BS
ID0gcmVzdWx0LmdwcigpOworICAgIEdQUlJlZyBzY3JhdGNoMUdQUiA9IHNjcmF0Y2gxLmdwcigp
OworICAgIEdQUlJlZyBzY3JhdGNoMkdQUiA9IHNjcmF0Y2gyLmdwcigpOworCisgICAgSklUQ29t
cGlsZXI6Okp1bXBMaXN0IHNsb3dQYXRoOworCisgICAgZW1pdEFsbG9jYXRlSlNPYmplY3RXaXRo
S25vd25TaXplPEdlbmVyYXRvckZyYW1lPihyZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHIoc3RydWN0
dXJlKSwgVHJ1c3RlZEltbVB0cihudWxscHRyKSwgc2NyYXRjaDFHUFIsIHNjcmF0Y2gyR1BSLCBz
bG93UGF0aCwgR2VuZXJhdG9yRnJhbWU6OmFsbG9jYXRpb25TaXplRm9yTG9jYWxzKG5vZGUtPmdl
bmVyYXRvckZyYW1lU2l6ZSgpKSk7CisgICAgbV9qaXQuc3RvcmUzMihUcnVzdGVkSW1tMzIoMCks
IEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgR2VuZXJhdG9yRnJhbWU6Om51bWJlck9m
U2F2ZWRDYWxsZWVMb2NhbHNPZmZzZXQoKSkpOworCisgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Io
c2xvd1BhdGhDYWxsKHNsb3dQYXRoLCB0aGlzLCBvcGVyYXRpb25OZXdHZW5lcmF0b3JGcmFtZSwg
cmVzdWx0R1BSLCBzdHJ1Y3R1cmUsIG5vZGUtPmdlbmVyYXRvckZyYW1lU2l6ZSgpKSk7CisKKyAg
ICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7Cit9CisKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVOZXdUeXBlZEFycmF5KE5vZGUqIG5vZGUpCiB7CiAgICAgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCA9IG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklULmgKaW5kZXggNTMxMmM4ZGJlZGZlZDE4MDA1NDM4MTEzMDc5ZWViMGIwZTk5MDhhYi4uNTcz
OTgxNTc4ZjI0ZjViMzAyNTlmMmFjMDI1NTJmZDQwOGZlN2FlMCAxMDA3NTUKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaApAQCAtMjI4MSw2ICsyMjgxLDcgQEAg
Y2xhc3MgU3BlY3VsYXRpdmVKSVQgewogICAgIHZvaWQgY29tcGlsZVB1dEJ5VmFsRm9yRmxvYXRU
eXBlZEFycmF5KEdQUlJlZyBiYXNlLCBHUFJSZWcgcHJvcGVydHksIE5vZGUqLCBUeXBlZEFycmF5
VHlwZSk7CiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIENsYXNzVHlwZT4gdm9pZCBjb21waWxlTmV3
RnVuY3Rpb25Db21tb24oR1BSUmVnLCBTdHJ1Y3R1cmUqLCBHUFJSZWcsIEdQUlJlZywgR1BSUmVn
LCBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QmLCBzaXplX3QsIEZ1bmN0aW9uRXhlY3V0YWJsZSos
IHB0cmRpZmZfdCwgcHRyZGlmZl90LCBwdHJkaWZmX3QpOwogICAgIHZvaWQgY29tcGlsZU5ld0Z1
bmN0aW9uKE5vZGUqKTsKKyAgICB2b2lkIGNvbXBpbGVOZXdHZW5lcmF0b3JGcmFtZShOb2RlKik7
CiAgICAgdm9pZCBjb21waWxlRm9yd2FyZFZhcmFyZ3MoTm9kZSopOwogICAgIHZvaWQgY29tcGls
ZUNyZWF0ZUFjdGl2YXRpb24oTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUNyZWF0ZURpcmVjdEFy
Z3VtZW50cyhOb2RlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAppbmRleCAxMmViNTA0MTE4MGFjMmY1MDE2NGY5NTFiMDU4
ZWRiNjJkMjI4MjcwLi4zMTAzYWQ1OWZmMjA0MWE3NGQxMmVhOGI4M2FjMTc3MzNlZjdjNmU5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJf
NjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQz
Ml82NC5jcHAKQEAgLTM2NTAsNiArMzY1MCwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0UGF5bG9hZC5ncHIoKSwg
bm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KKworICAgIGNhc2UgTmV3R2VuZXJhdG9yRnJh
bWU6IHsKKyAgICAgICAgY29tcGlsZU5ld0dlbmVyYXRvckZyYW1lKG5vZGUpOworICAgICAgICBi
cmVhazsKKyAgICB9CiAgICAgICAgIAogICAgIGNhc2UgVG9UaGlzOiB7CiAgICAgICAgIEFTU0VS
VChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAppbmRleCBlNzQ1Njk0
MDRjMWI5Nzg0ODA2MTk3ZDE0NTQ1Y2QxZGIyM2Q3YTVjLi5hOTU4Y2RhZmZlZWM1ZjBkYmQwMWE0
OTZmMTZkM2E0NTIxZWY0MmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJERkdT
bG93UGF0aEdlbmVyYXRvci5oIgogI2luY2x1ZGUgIkRlYnVnZ2VyLmgiCiAjaW5jbHVkZSAiRGly
ZWN0QXJndW1lbnRzLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yRnJhbWUuaCIKICNpbmNsdWRlICJH
ZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNFbnZp
cm9ubWVudFJlY29yZC5oIgpAQCAtMzY4OCw2ICszNjg5LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgY2VsbFJlc3VsdChyZXN1bHQuZ3ByKCks
IG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9CisKKyAgICBjYXNlIE5ld0dlbmVyYXRvckZy
YW1lOiB7CisgICAgICAgIGNvbXBpbGVOZXdHZW5lcmF0b3JGcmFtZShub2RlKTsKKyAgICAgICAg
YnJlYWs7CisgICAgfQogICAgICAgICAKICAgICBjYXNlIFRvVGhpczogewogICAgICAgICBBU1NF
UlQobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IFVudHlwZWRVc2UpOwpAQCAtNDcyMCw2ICs0
NzI2LDM4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAg
ICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9Cisg
ICAgY2FzZSBTYXZlVG9HZW5lcmF0b3JGcmFtZTogeworICAgICAgICBTcGVjdWxhdGVDZWxsT3Bl
cmFuZCBmcmFtZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIEpTVmFsdWVPcGVyYW5k
IHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKKworICAgICAgICBHUFJSZWcgZnJhbWVHUFIg
PSBmcmFtZS5ncHIoKTsKKyAgICAgICAgR1BSUmVnIHZhbHVlR1BSID0gdmFsdWUuZ3ByKCk7Cisg
ICAgICAgIHVuc2lnbmVkIGdlbmVyYXRvckZyYW1lSW5kZXggPSBub2RlLT5nZW5lcmF0b3JGcmFt
ZUluZGV4KCk7CisKKyAgICAgICAgbV9qaXQuc3RvcmU2NCh2YWx1ZUdQUiwgSklUQ29tcGlsZXI6
OkFkZHJlc3MoZnJhbWVHUFIsIEdlbmVyYXRvckZyYW1lOjpsb2NhbE9mZnNldChnZW5lcmF0b3JG
cmFtZUluZGV4KSkpOworCisgICAgICAgIG5vUmVzdWx0KG5vZGUpOworICAgICAgICBicmVhazsK
KyAgICB9CisgICAgY2FzZSBSZXN1bWVGcm9tR2VuZXJhdG9yRnJhbWU6IHsKKyAgICAgICAgU3Bl
Y3VsYXRlQ2VsbE9wZXJhbmQgZnJhbWUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBH
UFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOworCisgICAgICAgIEdQUlJlZyBmcmFtZUdQUiA9IGZy
YW1lLmdwcigpOworICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOworICAg
ICAgICB1bnNpZ25lZCBnZW5lcmF0b3JGcmFtZUluZGV4ID0gbm9kZS0+Z2VuZXJhdG9yRnJhbWVJ
bmRleCgpOworCisgICAgICAgIG1faml0LmxvYWQ2NChKSVRDb21waWxlcjo6QWRkcmVzcyhmcmFt
ZUdQUiwgR2VuZXJhdG9yRnJhbWU6OmxvY2FsT2Zmc2V0KGdlbmVyYXRvckZyYW1lSW5kZXgpKSwg
cmVzdWx0R1BSKTsKKyAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOworICAg
ICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBQdXRHZW5lcmF0b3JGcmFtZUxvY2Fsczogewor
ICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBmcmFtZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7
CisgICAgICAgIEdQUlJlZyBmcmFtZUdQUiA9IGZyYW1lLmdwcigpOworICAgICAgICBtX2ppdC5z
dG9yZTMyKFRydXN0ZWRJbW0zMihub2RlLT5nZW5lcmF0b3JGcmFtZUxvY2FscygpKSwgSklUQ29t
cGlsZXI6OkFkZHJlc3MoZnJhbWVHUFIsIEdlbmVyYXRvckZyYW1lOjpudW1iZXJPZlNhdmVkQ2Fs
bGVlTG9jYWxzT2Zmc2V0KCkpKTsKKyAgICAgICAgbm9SZXN1bHQobm9kZSk7CisgICAgICAgIGJy
ZWFrOworICAgIH0KICAgICBjYXNlIFByb2ZpbGVUeXBlOiB7CiAgICAgICAgIEpTVmFsdWVPcGVy
YW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgR1BSVGVtcG9yYXJ5IHNj
cmF0Y2gxKHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
dG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcAppbmRleCA3MmYyMjAwY2VhMTBiOTgx
MGRiYThjN2IxOWZlZmYyNGRhYTVkYWUzLi4wMWE3NTVlNTcxNzcyMWYxOWMwYmMzMWZhZDVjZTlh
NDhiMDg5OGM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0b3Jl
QmFycmllckluc2VydGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcApAQCAtMjgxLDYgKzI4MSwxMSBAQCBj
bGFzcyBTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAg
ICAgICAgICAgY29uc2lkZXJCYXJyaWVyKG1fbm9kZS0+Y2hpbGQxKCksIG1fbm9kZS0+Y2hpbGQy
KCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICBjYXNlIFNhdmVUb0dlbmVyYXRvckZyYW1lOiB7CisgICAgICAgICAgICAgICAgY29uc2lkZXJC
YXJyaWVyKG1fbm9kZS0+Y2hpbGQxKCksIG1fbm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg
ZGVmYXVsdDoKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTI5Niw2ICszMDEsNyBAQCBjbGFz
cyBTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAg
ICBjYXNlIE5ld0FycmF5QnVmZmVyOgogICAgICAgICAgICAgY2FzZSBOZXdUeXBlZEFycmF5Ogog
ICAgICAgICAgICAgY2FzZSBOZXdSZWdleHA6CisgICAgICAgICAgICBjYXNlIE5ld0dlbmVyYXRv
ckZyYW1lOgogICAgICAgICAgICAgY2FzZSBNYXRlcmlhbGl6ZU5ld09iamVjdDoKICAgICAgICAg
ICAgIGNhc2UgTWF0ZXJpYWxpemVDcmVhdGVBY3RpdmF0aW9uOgogICAgICAgICAgICAgY2FzZSBO
ZXdTdHJpbmdPYmplY3Q6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2UuY3BwCmluZGV4IDJjMDU1OTg0OTg5OWJk
ZjZmYjExMTc1OTdlMTA1NGJmZjM1NDY2OTMuLmUxYWVmMGIyYzM5M2Y1NjE5NDhjY2E1YTk1OWYy
ZTA3MTA4ODQzODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Ry
dWN0dXJlUmVnaXN0cmF0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2UuY3BwCkBAIC0xNDksNiArMTQ5LDkgQEAg
Y2xhc3MgU3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAg
ICAgICAgICAgIGNhc2UgTmV3R2VuZXJhdG9yRnVuY3Rpb246CiAgICAgICAgICAgICAgICAgICAg
IHJlZ2lzdGVyU3RydWN0dXJlKG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYyktPmdlbmVyYXRvckZ1bmN0aW9uU3RydWN0dXJlKCkpOwogICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIE5ld0dlbmVyYXRvckZyYW1lOgorICAg
ICAgICAgICAgICAgICAgICByZWdpc3RlclN0cnVjdHVyZShtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5nZW5lcmF0b3JGcmFtZVN0cnVjdHVyZSgpKTsKKyAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAg
ICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAK
aW5kZXggOTdjMDc4NGJiNDJiYzkxOWQwNmNmNTIzYzQxZTAyNDZhNTM1MWQ5MS4uNjlkODlkNmFk
NDI1NDkyM2JjM2ZhYjNjN2FjYTIwODk1YzU1ZTVjYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwCkBAIC0zMCw2
ICszMCw3IEBACiAKICNpbmNsdWRlICJEaXJlY3RBcmd1bWVudHMuaCIKICNpbmNsdWRlICJGVExB
YmJyZXZpYXRpb25zLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yRnJhbWUuaCIKICNpbmNsdWRlICJH
ZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJKU0Vudmlyb25tZW50UmVjb3JkLmgiCiAjaW5jbHVk
ZSAiSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCmluZGV4IDc3ZTU3OTg2OTQw
YzZhYzk2Zjg3ZjFmOTQ1YzQ2MjUxMjg4NjMwZjAuLmEzNjIxYTQxNTdlZTcyMzZlZjU2NmNmZWFm
MDQyODRiYTIxNzMyOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
QWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCkBAIC00Nyw2ICs0Nyw3IEBACiAgICAgbWFjcm8o
RGlyZWN0QXJndW1lbnRzX2xlbmd0aCwgRGlyZWN0QXJndW1lbnRzOjpvZmZzZXRPZkxlbmd0aCgp
KSBcCiAgICAgbWFjcm8oRGlyZWN0QXJndW1lbnRzX21pbkNhcGFjaXR5LCBEaXJlY3RBcmd1bWVu
dHM6Om9mZnNldE9mTWluQ2FwYWNpdHkoKSkgXAogICAgIG1hY3JvKERpcmVjdEFyZ3VtZW50c19v
dmVycmlkZXMsIERpcmVjdEFyZ3VtZW50czo6b2Zmc2V0T2ZPdmVycmlkZXMoKSkgXAorICAgIG1h
Y3JvKEdlbmVyYXRvckZyYW1lX251bWJlck9mU2F2ZWRDYWxsZWVMb2NhbHMsIEdlbmVyYXRvckZy
YW1lOjpudW1iZXJPZlNhdmVkQ2FsbGVlTG9jYWxzT2Zmc2V0KCkpIFwKICAgICBtYWNybyhHZXR0
ZXJTZXR0ZXJfZ2V0dGVyLCBHZXR0ZXJTZXR0ZXI6Om9mZnNldE9mR2V0dGVyKCkpIFwKICAgICBt
YWNybyhHZXR0ZXJTZXR0ZXJfc2V0dGVyLCBHZXR0ZXJTZXR0ZXI6Om9mZnNldE9mU2V0dGVyKCkp
IFwKICAgICBtYWNybyhKU0FycmF5QnVmZmVyVmlld19sZW5ndGgsIEpTQXJyYXlCdWZmZXJWaWV3
OjpvZmZzZXRPZkxlbmd0aCgpKSBcCkBAIC05MSw2ICs5Miw3IEBACiAKICNkZWZpbmUgRk9SX0VB
Q0hfSU5ERVhFRF9BQlNUUkFDVF9IRUFQKG1hY3JvKSBcCiAgICAgbWFjcm8oRGlyZWN0QXJndW1l
bnRzX3N0b3JhZ2UsIERpcmVjdEFyZ3VtZW50czo6c3RvcmFnZU9mZnNldCgpLCBzaXplb2YoRW5j
b2RlZEpTVmFsdWUpKSBcCisgICAgbWFjcm8oR2VuZXJhdG9yRnJhbWVfY2FsbGVlTG9jYWxzLCBH
ZW5lcmF0b3JGcmFtZTo6b2Zmc2V0T2ZMb2NhbHMoKSwgc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtu
b3duPikpIFwKICAgICBtYWNybyhKU0Vudmlyb25tZW50UmVjb3JkX3ZhcmlhYmxlcywgSlNFbnZp
cm9ubWVudFJlY29yZDo6b2Zmc2V0T2ZWYXJpYWJsZXMoKSwgc2l6ZW9mKEVuY29kZWRKU1ZhbHVl
KSkgXAogICAgIG1hY3JvKEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcl9jYWNoZWRQcm9wZXJ0eU5h
bWVzVmVjdG9yQ29udGVudHMsIDAsIHNpemVvZihXcml0ZUJhcnJpZXI8SlNTdHJpbmc+KSkgXAog
ICAgIG1hY3JvKEpTUm9wZVN0cmluZ19maWJlcnMsIEpTUm9wZVN0cmluZzo6b2Zmc2V0T2ZGaWJl
cnMoKSwgc2l6ZW9mKFdyaXRlQmFycmllcjxKU1N0cmluZz4pKSBcCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKaW5kZXggZDJhNDkwYzJhNjdlNmRiOGI5
YTVhNzk2NjRlNTY1ZTNkNmQ5NTFkYy4uODE3ODRkNTAwZTY2YTk0Y2E1ODQwMjBkNThiMWUxYWVm
NGVlODdiZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmls
aXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVz
LmNwcApAQCAtNzIsNiArNzIsNyBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUo
Tm9kZSogbm9kZSkKICAgICBjYXNlIE5ld09iamVjdDoKICAgICBjYXNlIE5ld0FycmF5OgogICAg
IGNhc2UgTmV3QXJyYXlCdWZmZXI6CisgICAgY2FzZSBOZXdHZW5lcmF0b3JGcmFtZToKICAgICBj
YXNlIEdldEJ5T2Zmc2V0OgogICAgIGNhc2UgR2V0R2V0dGVyU2V0dGVyQnlPZmZzZXQ6CiAgICAg
Y2FzZSBHZXRHZXR0ZXI6CkBAIC0yMTYsNiArMjE3LDcgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZl
bCBjYW5Db21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBQdXRTZXR0ZXJCeVZhbDoKICAgICBj
YXNlIENvcHlSZXN0OgogICAgIGNhc2UgR2V0UmVzdExlbmd0aDoKKyAgICBjYXNlIFB1dEdlbmVy
YXRvckZyYW1lTG9jYWxzOgogICAgICAgICAvLyBUaGVzZSBhcmUgT0suCiAgICAgICAgIGJyZWFr
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9M
TFZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3Bw
CmluZGV4IDM3Y2FlNWMxN2FkOWM3MWQwMThkNDFiYjZlOWE2NmM5MTc3OTY2ZjIuLmE2MzkyNGY3
YTY2YjdiOWIxYWY3NjZmYTI3ZTY0MzY1ZmM1MmM3YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCkBAIC01Myw2ICs1Myw3IEBACiAjaW5j
bHVkZSAiRlRMUGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZS5oIgogI2luY2x1ZGUgIkZUTFRodW5r
cy5oIgogI2luY2x1ZGUgIkZUTFdlaWdodGVkVGFyZ2V0LmgiCisjaW5jbHVkZSAiR2VuZXJhdG9y
RnJhbWUuaCIKICNpbmNsdWRlICJKSVRBZGRHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJKSVRCaXRB
bmRHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJKSVRCaXRPckdlbmVyYXRvci5oIgpAQCAtODM5LDYg
Kzg0MCw5IEBAIGNsYXNzIExvd2VyREZHVG9MTFZNIHsKICAgICAgICAgY2FzZSBOZXdBcnJheVdp
dGhTaXplOgogICAgICAgICAgICAgY29tcGlsZU5ld0FycmF5V2l0aFNpemUoKTsKICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIE5ld0dlbmVyYXRvckZyYW1lOgorICAgICAgICAgICAg
Y29tcGlsZUdlbmVyYXRvckZyYW1lKCk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldDoKICAgICAgICAgICAgIGNvbXBpbGVHZXRUeXBlZEFy
cmF5Qnl0ZU9mZnNldCgpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xMDcxLDYgKzEwNzUsMTUg
QEAgY2xhc3MgTG93ZXJERkdUb0xMVk0gewogICAgICAgICBjYXNlIEdldFJlc3RMZW5ndGg6CiAg
ICAgICAgICAgICBjb21waWxlR2V0UmVzdExlbmd0aCgpOwogICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgUHV0R2VuZXJhdG9yRnJhbWVMb2NhbHM6CisgICAgICAgICAgICBjb21waWxl
UHV0R2VuZXJhdG9yRnJhbWVMb2NhbHMoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIFNhdmVUb0dlbmVyYXRvckZyYW1lOgorICAgICAgICAgICAgY29tcGlsZVNhdmVUb0dlbmVy
YXRvckZyYW1lKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBSZXN1bWVGcm9t
R2VuZXJhdG9yRnJhbWU6CisgICAgICAgICAgICBjb21waWxlUmVzdW1lRnJvbUdlbmVyYXRvckZy
YW1lKCk7CisgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIFBoYW50b21Mb2NhbDoK
ICAgICAgICAgY2FzZSBMb29wSGludDoKQEAgLTM5MTYsNiArMzkyOSwyOCBAQCBjbGFzcyBMb3dl
ckRGR1RvTExWTSB7CiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5l
eHQpOwogICAgICAgICBzZXRJbnQzMihtX291dC5waGkobV9vdXQuaW50MzIsIHplcm9MZW5ndGhS
ZXN1bHQsIG5vblplcm9MZW5ndGhSZXN1bHQpKTsKICAgICB9CisKKyAgICB2b2lkIGNvbXBpbGVQ
dXRHZW5lcmF0b3JGcmFtZUxvY2FscygpCisgICAgeworICAgICAgICBMVmFsdWUgZnJhbWUgPSBs
b3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBtX291dC5zdG9yZTMyKG1fb3V0LmNv
bnN0SW50MzIobV9ub2RlLT5nZW5lcmF0b3JGcmFtZUxvY2FscygpKSwgZnJhbWUsIG1faGVhcHMu
R2VuZXJhdG9yRnJhbWVfbnVtYmVyT2ZTYXZlZENhbGxlZUxvY2Fscyk7CisgICAgfQorCisgICAg
dm9pZCBjb21waWxlU2F2ZVRvR2VuZXJhdG9yRnJhbWUoKQorICAgIHsKKyAgICAgICAgbV9vdXQu
c3RvcmU2NCgKKyAgICAgICAgICAgIGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDIoKSksCisgICAg
ICAgICAgICBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpLAorICAgICAgICAgICAgbV9oZWFwcy5H
ZW5lcmF0b3JGcmFtZV9jYWxsZWVMb2NhbHNbbV9ub2RlLT5nZW5lcmF0b3JGcmFtZUluZGV4KCld
KTsKKyAgICB9CisKKyAgICB2b2lkIGNvbXBpbGVSZXN1bWVGcm9tR2VuZXJhdG9yRnJhbWUoKQor
ICAgIHsKKyAgICAgICAgc2V0SlNWYWx1ZSgKKyAgICAgICAgICAgIG1fb3V0LmxvYWQ2NCgKKyAg
ICAgICAgICAgICAgICBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpLAorICAgICAgICAgICAgICAg
IG1faGVhcHMuR2VuZXJhdG9yRnJhbWVfY2FsbGVlTG9jYWxzW21fbm9kZS0+Z2VuZXJhdG9yRnJh
bWVJbmRleCgpXSkpOworICAgIH0KICAgICAKICAgICB2b2lkIGNvbXBpbGVOZXdPYmplY3QoKQog
ICAgIHsKQEAgLTQxNTAsNiArNDE4NSwzNSBAQCBjbGFzcyBMb3dlckRGR1RvTExWTSB7CiAgICAg
ICAgICAgICBtX291dC5jb25zdEludFB0cihzdHJ1Y3R1cmUpKTsKICAgICAgICAgc2V0SlNWYWx1
ZSh2bUNhbGwobV9vdXQuaW50NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25OZXdBcnJheVdp
dGhTaXplKSwgbV9jYWxsRnJhbWUsIHN0cnVjdHVyZVZhbHVlLCBwdWJsaWNMZW5ndGgpKTsKICAg
ICB9CisKKyAgICB2b2lkIGNvbXBpbGVHZW5lcmF0b3JGcmFtZSgpCisgICAgeworICAgICAgICBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9u
b2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGds
b2JhbE9iamVjdC0+Z2VuZXJhdG9yRnJhbWVTdHJ1Y3R1cmUoKTsKKworICAgICAgICBMQmFzaWNC
bG9jayBzbG93UGF0aCA9IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgiTmV3R2VuZXJhdG9yRnJhbWUg
c2xvdyBwYXRoIikpOworICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBGVExfTkVX
X0JMT0NLKG1fb3V0LCAoIk5ld0dlbmVyYXRvckZyYW1lIGNvbnRpbnVhdGlvbiIpKTsKKworICAg
ICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0Lmluc2VydE5ld0Jsb2Nrc0JlZm9yZShz
bG93UGF0aCk7CisgICAgICAgIExWYWx1ZSBmYXN0T2JqZWN0ID0gYWxsb2NhdGVPYmplY3Q8R2Vu
ZXJhdG9yRnJhbWU+KEdlbmVyYXRvckZyYW1lOjphbGxvY2F0aW9uU2l6ZUZvckxvY2FscyhtX25v
ZGUtPmdlbmVyYXRvckZyYW1lU2l6ZSgpKSwgc3RydWN0dXJlLCBtX291dC5pbnRQdHJaZXJvLCBz
bG93UGF0aCk7CisgICAgICAgIG1fb3V0LnN0b3JlMzIobV9vdXQuY29uc3RJbnQzMigwKSwgZmFz
dE9iamVjdCwgbV9oZWFwcy5HZW5lcmF0b3JGcmFtZV9udW1iZXJPZlNhdmVkQ2FsbGVlTG9jYWxz
KTsKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgZmFzdFJlc3VsdCA9IG1fb3V0LmFuY2hvcihmYXN0
T2JqZWN0KTsKKyAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOworCisgICAgICAgIG1f
b3V0LmFwcGVuZFRvKHNsb3dQYXRoLCBjb250aW51YXRpb24pOworICAgICAgICBWZWN0b3I8TFZh
bHVlPiBzbG93UGF0aEFyZ3VtZW50czsKKyAgICAgICAgTFZhbHVlIGNhbGxSZXN1bHQgPSBsYXp5
U2xvd1BhdGgoCisgICAgICAgICAgICBbPV0gKGNvbnN0IFZlY3RvcjxMb2NhdGlvbj4mIGxvY2F0
aW9ucykgLT4gUmVmUHRyPExhenlTbG93UGF0aDo6R2VuZXJhdG9yPiB7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIGNyZWF0ZUxhenlDYWxsR2VuZXJhdG9yKAorICAgICAgICAgICAgICAgICAgICBv
cGVyYXRpb25OZXdHZW5lcmF0b3JGcmFtZSwKKyAgICAgICAgICAgICAgICAgICAgbG9jYXRpb25z
WzBdLmRpcmVjdEdQUigpLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwg
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIobV9ub2RlLT5nZW5lcmF0b3JGcmFtZVNpemUoKSkp
OworICAgICAgICAgICAgfSk7CisgICAgICAgIFZhbHVlRnJvbUJsb2NrIHNsb3dSZXN1bHQgPSBt
X291dC5hbmNob3IoY2FsbFJlc3VsdCk7CisgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9u
KTsKKworICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKKyAg
ICAgICAgc2V0SlNWYWx1ZShtX291dC5waGkobV9vdXQuaW50UHRyLCBmYXN0UmVzdWx0LCBzbG93
UmVzdWx0KSk7CisgICAgfQogICAgIAogICAgIHZvaWQgY29tcGlsZUFsbG9jYXRlUHJvcGVydHlT
dG9yYWdlKCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKaW5kZXggYTNiZGZhN2Nk
NWQwZjU3MjQ3ZjFiZThjNDBiMjUxMGQyOWQ4MDBmZi4uNDlkMjk5ZmY1NmRiMzNlMDJkNzJiMDBh
OGVlMjliNTNiNDc3MGRhYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcApAQCAtMjE3LDYg
KzIxNyw5IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgREVG
SU5FX09QKG9wX2Fzc2VydCkKICAgICAgICAgREVGSU5FX09QKG9wX3NhdmUpCiAgICAgICAgIERF
RklORV9PUChvcF9yZXN1bWUpCisgICAgICAgIERFRklORV9PUChvcF9uZXdfZ2VuZXJhdG9yX2Zy
YW1lKQorICAgICAgICBERUZJTkVfT1Aob3BfcmVzdW1lX2Zyb21fZ2VuZXJhdG9yX2ZyYW1lKQor
ICAgICAgICBERUZJTkVfT1Aob3BfY2xlYXJfZ2VuZXJhdG9yX2ZyYW1lKQogICAgICAgICBERUZJ
TkVfT1Aob3BfZGVidWcpCiAgICAgICAgIERFRklORV9PUChvcF9kZWxfYnlfaWQpCiAgICAgICAg
IERFRklORV9PUChvcF9kaXYpCkBAIC0yODksNiArMjkyLDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVD
b21waWxlTWFpblBhc3MoKQogICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2dldHRlcl9zZXR0ZXJf
YnlfaWQpCiAgICAgICAgIERFRklORV9PUChvcF9wdXRfZ2V0dGVyX2J5X3ZhbCkKICAgICAgICAg
REVGSU5FX09QKG9wX3B1dF9zZXR0ZXJfYnlfdmFsKQorICAgICAgICBERUZJTkVfT1Aob3Bfbm9w
KQogCiAgICAgICAgIERFRklORV9PUChvcF9yZXQpCiAgICAgICAgIERFRklORV9PUChvcF9yc2hp
ZnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAppbmRleCBkZjdiM2RjNWU4OTIwZWU0ZWY5MmJjYWNi
YWVmZjFiNGMwMGQ5MzY5Li44NTMyMzJiYzZkZTM4N2I5Y2I4Y2M3MjExOTdhNzQxYmVhNDRjZmU4
IDEwMDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKQEAgLTQ5Niw2ICs0OTYsOSBAQAogICAgICAgICB2
b2lkIGVtaXRfb3BfYXNzZXJ0KEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9z
YXZlKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9yZXN1bWUoSW5zdHJ1Y3Rp
b24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX3Jlc3VtZV9mcm9tX2dlbmVyYXRvcl9mcmFtZShJ
bnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfY2xlYXJfZ2VuZXJhdG9yX2ZyYW1l
KEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9uZXdfZ2VuZXJhdG9yX2ZyYW1l
KEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9kZWJ1ZyhJbnN0cnVjdGlvbiop
OwogICAgICAgICB2b2lkIGVtaXRfb3BfZGVsX2J5X2lkKEluc3RydWN0aW9uKik7CiAgICAgICAg
IHZvaWQgZW1pdF9vcF9kaXYoSW5zdHJ1Y3Rpb24qKTsKQEAgLTU5NSw2ICs1OTgsNyBAQAogICAg
ICAgICB2b2lkIGVtaXRfb3BfZW51bWVyYXRvcl9zdHJ1Y3R1cmVfcG5hbWUoSW5zdHJ1Y3Rpb24q
KTsKICAgICAgICAgdm9pZCBlbWl0X29wX2VudW1lcmF0b3JfZ2VuZXJpY19wbmFtZShJbnN0cnVj
dGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfdG9faW5kZXhfc3RyaW5nKEluc3RydWN0aW9u
Kik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9ub3AoSW5zdHJ1Y3Rpb24qKTsKIAogICAgICAgICB2
b2lkIGVtaXRTbG93X29wX2FkZChJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6
aXRlcmF0b3ImKTsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9iaXRhbmQoSW5zdHJ1Y3Rpb24q
LCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGNvZGVzLmNwcAppbmRleCA3MzhjYjYzZmVkOTFiNDk4NTVkNWQwMzNkNDYzMzQ1
ZmRkNDc2ZDliLi4yNTBiZDcwYWRlZjczY2I4MjkxNzZhNWEzYThhNDIxODUzMDMyZDMxIDEwMDc1
NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKQEAgLTMyLDYgKzMyLDcgQEAK
ICNpbmNsdWRlICJDb3BpZWRTcGFjZUlubGluZXMuaCIKICNpbmNsdWRlICJEZWJ1Z2dlci5oIgog
I2luY2x1ZGUgIkV4Y2VwdGlvbi5oIgorI2luY2x1ZGUgIkdlbmVyYXRvckZyYW1lLmgiCiAjaW5j
bHVkZSAiSGVhcC5oIgogI2luY2x1ZGUgIkpJVElubGluZXMuaCIKICNpbmNsdWRlICJKU0FycmF5
LmgiCkBAIC04OTMsNiArODk0LDIzIEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF90b19zdHJpbmco
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlCiAgICAgc2xv
d1BhdGhDYWxsLmNhbGwoKTsKIH0KIAordm9pZCBKSVQ6OmVtaXRfb3BfcmVzdW1lX2Zyb21fZ2Vu
ZXJhdG9yX2ZyYW1lKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgaW50
IGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CisgICAgaW50IGZyYW1lID0g
Y3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKKyAgICB1bnNpZ25lZCBpbmRleCA9IGN1
cnJlbnRJbnN0cnVjdGlvblszXS51LnVuc2lnbmVkVmFsdWU7CisgICAgZW1pdEdldFZpcnR1YWxS
ZWdpc3RlcihmcmFtZSwgcmVnVDEpOworICAgIGxvYWQ2NChBZGRyZXNzKHJlZ1QxLCBHZW5lcmF0
b3JGcmFtZTo6bG9jYWxPZmZzZXQoaW5kZXgpKSwgcmVnVDApOworICAgIGVtaXRQdXRWaXJ0dWFs
UmVnaXN0ZXIoZHN0KTsKK30KKwordm9pZCBKSVQ6OmVtaXRfb3BfY2xlYXJfZ2VuZXJhdG9yX2Zy
YW1lKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgaW50IGZyYW1lID0g
Y3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lz
dGVyKGZyYW1lLCByZWdUMSk7CisgICAgc3RvcmUzMihUcnVzdGVkSW1tMzIoMCksIEFkZHJlc3Mo
cmVnVDEsIEdlbmVyYXRvckZyYW1lOjpudW1iZXJPZlNhdmVkQ2FsbGVlTG9jYWxzT2Zmc2V0KCkp
KTsKK30KKwogI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCiAKIHZvaWQgSklUOjplbWl0X29wX2xv
b3BfaGludChJbnN0cnVjdGlvbiopCkBAIC0xNDQxLDYgKzE0NTksMTYgQEAgdm9pZCBKSVQ6OmVt
aXRfb3BfcmVzdW1lKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgc2xvd1Bh
dGhDYWxsLmNhbGwoKTsKIH0KIAordm9pZCBKSVQ6OmVtaXRfb3BfbmV3X2dlbmVyYXRvcl9mcmFt
ZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIEpJVFNsb3dQYXRoQ2Fs
bCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfbmV3X2dl
bmVyYXRvcl9mcmFtZSk7CisgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKK30KKwordm9pZCBKSVQ6
OmVtaXRfb3Bfbm9wKEluc3RydWN0aW9uKikKK3sKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAK
ICNlbmRpZiAvLyBFTkFCTEUoSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcAppbmRleCAyYjRlNjE5ODZkMzEyYWM5ZTRm
ODczNzNjZTdhYTBiOWZkMGNlNzVhLi5hZmUwOTY4NDg4ZjQ2ZDE2NzVjOTE3ZWNiMmI2MjBjMDA1
NjEyMjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZz
ZXRzRXh0cmFjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRP
ZmZzZXRzRXh0cmFjdG9yLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkRpcmVjdEFy
Z3VtZW50cy5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbi5oIgogI2luY2x1ZGUgIkV4ZWN1dGFibGUu
aCIKKyNpbmNsdWRlICJHZW5lcmF0b3JGcmFtZS5oIgogI2luY2x1ZGUgIkhlYXAuaCIKICNpbmNs
dWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbSBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQppbmRleCBjZDRj
ZTkwNjNiMTk1NzVhOTU3ZTNjYTNlMjJiZTU3OTE1YmRiNTlhLi40NzM1N2I2MTJkY2VhMTUxOTgx
NWIwZWRiMmU0MmEwYzFjMmI5ZmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCkBAIC0xNjUsNiArMTY1LDcgQEAgY29uc3Qg
U2xvdFNpemUgPSA4CiAKIGNvbnN0IEpTRW52aXJvbm1lbnRSZWNvcmRfdmFyaWFibGVzID0gKHNp
emVvZiBKU0Vudmlyb25tZW50UmVjb3JkICsgU2xvdFNpemUgLSAxKSAmIH4oU2xvdFNpemUgLSAx
KQogY29uc3QgRGlyZWN0QXJndW1lbnRzX3N0b3JhZ2UgPSAoc2l6ZW9mIERpcmVjdEFyZ3VtZW50
cyArIFNsb3RTaXplIC0gMSkgJiB+KFNsb3RTaXplIC0gMSkKK2NvbnN0IEdlbmVyYXRvckZyYW1l
X2NhbGxlZUxvY2FscyA9IChzaXplb2YgR2VuZXJhdG9yRnJhbWUgKyBTbG90U2l6ZSAtIDEpICYg
fihTbG90U2l6ZSAtIDEpCiAKIGNvbnN0IFN0YWNrQWxpZ25tZW50ID0gMTYKIGNvbnN0IFN0YWNr
QWxpZ25tZW50U2xvdHMgPSAyCkBAIC0xMjU2LDYgKzEyNTcsMTIgQEAgX2xsaW50X29wX25ld19y
ZWdleHA6CiAgICAgZGlzcGF0Y2goMykKIAogCitfbGxpbnRfb3BfbmV3X2dlbmVyYXRvcl9mcmFt
ZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfbmV3
X2dlbmVyYXRvcl9mcmFtZSkKKyAgICBkaXNwYXRjaCgzKQorCisKIF9sbGludF9vcF9sZXNzOgog
ICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF9sZXNzKQpA
QCAtMTU5OCw3ICsxNjA1LDcgQEAgX2xsaW50X29wX3NhdmU6CiBfbGxpbnRfb3BfcmVzdW1lOgog
ICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF9yZXN1bWUp
Ci0gICAgZGlzcGF0Y2goMykKKyAgICBkaXNwYXRjaCg0KQogCiAKIF9sbGludF9vcF9jcmVhdGVf
bGV4aWNhbF9lbnZpcm9ubWVudDoKQEAgLTE3MDgsNiArMTcxNSwxMCBAQCBfbGxpbnRfb3BfY29w
eV9yZXN0OgogICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRoX2NvcHlfcmVzdCkKICAgICBkaXNw
YXRjaCg0KQogCitfbGxpbnRfb3Bfbm9wOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBkaXNw
YXRjaCgxKQorCiAKICMgTGFzdGx5LCBtYWtlIHN1cmUgdGhhdCB3ZSBjYW4gbGluayBldmVuIHRo
b3VnaCB3ZSBkb24ndCBzdXBwb3J0IGFsbCBvcGNvZGVzLgogIyBUaGVzZSBvcGNvZGVzIHNob3Vs
ZCBuZXZlciBhcmlzZSB3aGVuIHVzaW5nIExMSW50IG9yIGVpdGhlciBKSVQuIFdlIGFzc2VydApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXI2NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
cjY0LmFzbQppbmRleCA4NTE3M2JjODI2MjE0NmIwZTBkMWUwMTkyYjcwNjAyOGJiZDkwNjgzLi40
OTJjNjNjMjVjZGZhZTMyZmY5ZWViOGE0ZDE5N2U1ODU1MzE5YWMxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQpAQCAt
MjMyMSwzICsyMzIxLDE4IEBAIF9sbGludF9vcF9nZXRfcmVzdF9sZW5ndGg6CiAgICAgbG9hZGlz
RnJvbUluc3RydWN0aW9uKDEsIHQxKQogICAgIHN0b3JlcSB0MCwgW2NmciwgdDEsIDhdCiAgICAg
ZGlzcGF0Y2goMykKKworX2xsaW50X29wX2NsZWFyX2dlbmVyYXRvcl9mcmFtZToKKyAgICB0cmFj
ZUV4ZWN1dGlvbigpCisgICAgbG9hZFZhcmlhYmxlKDEsIHQwKQorICAgIHN0b3JlaSAwLCBHZW5l
cmF0b3JGcmFtZTo6bV9udW1iZXJPZlNhdmVkQ2FsbGVlTG9jYWxzW3QwXQorICAgIGRpc3BhdGNo
KDIpCisKK19sbGludF9vcF9yZXN1bWVfZnJvbV9nZW5lcmF0b3JfZnJhbWU6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGxvYWRWYXJpYWJsZSgyLCB0MCkKKyAgICBsb2FkaXNGcm9tSW5zdHJ1
Y3Rpb24oMywgdDEpCisgICAgbG9hZHEgR2VuZXJhdG9yRnJhbWVfY2FsbGVlTG9jYWxzW3QwLCB0
MSwgOF0sIHQwCisgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDEsIHQxKQorICAgIHN0b3JlcSB0
MCwgW2NmciwgdDEsIDhdCisgICAgZGlzcGF0Y2goNCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvUGFyc2VyLmNwcAppbmRleCA4ZDM3MDYzNDUxMjhlOWRmOWRhYzMyNTdmN2M1ZjRlNWFiM2E5
YzM0Li42NDcwNTY5YzQ2NzA2OWU3Y2U2Mjc3MjE3MDMxZmMyOGJkOWNhZmRlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCkBAIC0yNTAsOSArMjUwLDEwIEBACiAgICAg
Ym9vbCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbiA9IGZhbHNlOwogICAgIGlmIChtX2xl
eGVyLT5pc1JlcGFyc2luZ0Z1bmN0aW9uKCkpIHsKICAgICAgICAgUGFyc2VyRnVuY3Rpb25JbmZv
PEFTVEJ1aWxkZXI+IGZ1bmN0aW9uSW5mbzsKLSAgICAgICAgaWYgKHBhcnNlTW9kZSA9PSBTb3Vy
Y2VQYXJzZU1vZGU6OkdlbmVyYXRvckJvZHlNb2RlKQotICAgICAgICAgICAgZnVuY3Rpb25JbmZv
LnBhcmFtZXRlcnMgPSBjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKGNvbnRleHQpOwotICAgICAg
ICBlbHNlCisgICAgICAgIGlmIChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0
b3JCb2R5TW9kZSkgeworICAgICAgICAgICAgdW5zaWduZWQgcGFyYW1ldGVyQ291bnQgPSAwOwor
ICAgICAgICAgICAgZnVuY3Rpb25JbmZvLnBhcmFtZXRlcnMgPSBjcmVhdGVHZW5lcmF0b3JQYXJh
bWV0ZXJzKGNvbnRleHQsIHBhcmFtZXRlckNvdW50KTsKKyAgICAgICAgfSBlbHNlCiAgICAgICAg
ICAgICBwYXJzZUZ1bmN0aW9uUGFyYW1ldGVycyhjb250ZXh0LCBwYXJzZU1vZGUsIGZ1bmN0aW9u
SW5mbyk7CiAgICAgICAgIG1fcGFyYW1ldGVycyA9IGZ1bmN0aW9uSW5mby5wYXJhbWV0ZXJzOwog
CkBAIC00ODUsMTAgKzQ4Niw5IEBACiAKICAgICBQYXJzZXJGdW5jdGlvbkluZm88VHJlZUJ1aWxk
ZXI+IGluZm87CiAgICAgaW5mby5uYW1lID0gJm1fdm0tPnByb3BlcnR5TmFtZXMtPm51bGxJZGVu
dGlmaWVyOwotICAgIGluZm8ucGFyYW1ldGVycyA9IGNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMo
Y29udGV4dCk7CisgICAgaW5mby5wYXJhbWV0ZXJzID0gY3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVy
cyhjb250ZXh0LCBpbmZvLnBhcmFtZXRlckNvdW50KTsKICAgICBpbmZvLnN0YXJ0T2Zmc2V0ID0g
cGFyYW1ldGVyc1N0YXJ0OwogICAgIGluZm8uc3RhcnRMaW5lID0gdG9rZW5MaW5lKCk7Ci0gICAg
aW5mby5wYXJhbWV0ZXJDb3VudCA9IDQ7IC8vIGdlbmVyYXRvciwgc3RhdGUsIHZhbHVlLCByZXN1
bWUgbW9kZQogCiAgICAgewogICAgICAgICBBdXRvUG9wU2NvcGVSZWYgZ2VuZXJhdG9yQm9keVNj
b3BlKHRoaXMsIHB1c2hTY29wZSgpKTsKQEAgLTE3ODEsMzIgKzE3ODEsMzEgQEAgc3RhdGljIGNv
bnN0IGNoYXIqIHN0cmluZ0ZvckZ1bmN0aW9uTW9kZShTb3VyY2VQYXJzZU1vZGUgbW9kZSkKIH0K
IAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KLXRlbXBsYXRlIDxjbGFzcyBUcmVlQnVp
bGRlcj4gdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkZvcm1hbFBhcmFtZXRlckxpc3QgUGFyc2VyPExl
eGVyVHlwZT46OmNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMoVHJlZUJ1aWxkZXImIGNvbnRleHQp
Cit0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpGb3Jt
YWxQYXJhbWV0ZXJMaXN0IFBhcnNlcjxMZXhlclR5cGU+OjpjcmVhdGVHZW5lcmF0b3JQYXJhbWV0
ZXJzKFRyZWVCdWlsZGVyJiBjb250ZXh0LCB1bnNpZ25lZCYgcGFyYW1ldGVyQ291bnQpCiB7CiAg
ICAgYXV0byBwYXJhbWV0ZXJzID0gY29udGV4dC5jcmVhdGVGb3JtYWxQYXJhbWV0ZXJMaXN0KCk7
CiAKICAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKICAgICBK
U1RleHRQb3NpdGlvbiBwb3NpdGlvbiA9IHRva2VuU3RhcnRQb3NpdGlvbigpOwogCi0gICAgLy8g
QGdlbmVyYXRvcgotICAgIGRlY2xhcmVQYXJhbWV0ZXIoJm1fdm0tPnByb3BlcnR5TmFtZXMtPmdl
bmVyYXRvclByaXZhdGVOYW1lKTsKLSAgICBhdXRvIGdlbmVyYXRvciA9IGNvbnRleHQuY3JlYXRl
QmluZGluZ0xvY2F0aW9uKGxvY2F0aW9uLCBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5nZW5lcmF0b3JQ
cml2YXRlTmFtZSwgcG9zaXRpb24sIHBvc2l0aW9uLCBBc3NpZ25tZW50Q29udGV4dDo6RGVjbGFy
YXRpb25TdGF0ZW1lbnQpOwotICAgIGNvbnRleHQuYXBwZW5kUGFyYW1ldGVyKHBhcmFtZXRlcnMs
IGdlbmVyYXRvciwgMCk7CisgICAgYXV0byBhZGRQYXJhbWV0ZXIgPSBbJl0oY29uc3QgSWRlbnRp
ZmllciYgbmFtZSkgeworICAgICAgICBkZWNsYXJlUGFyYW1ldGVyKCZuYW1lKTsKKyAgICAgICAg
YXV0byBiaW5kaW5nID0gY29udGV4dC5jcmVhdGVCaW5kaW5nTG9jYXRpb24obG9jYXRpb24sIG5h
bWUsIHBvc2l0aW9uLCBwb3NpdGlvbiwgQXNzaWdubWVudENvbnRleHQ6OkRlY2xhcmF0aW9uU3Rh
dGVtZW50KTsKKyAgICAgICAgY29udGV4dC5hcHBlbmRQYXJhbWV0ZXIocGFyYW1ldGVycywgYmlu
ZGluZywgMCk7CisgICAgfTsKIAorICAgIC8vIEBnZW5lcmF0b3IKKyAgICBhZGRQYXJhbWV0ZXIo
bV92bS0+cHJvcGVydHlOYW1lcy0+Z2VuZXJhdG9yUHJpdmF0ZU5hbWUpOwogICAgIC8vIEBnZW5l
cmF0b3JTdGF0ZQotICAgIGRlY2xhcmVQYXJhbWV0ZXIoJm1fdm0tPnByb3BlcnR5TmFtZXMtPmdl
bmVyYXRvclN0YXRlUHJpdmF0ZU5hbWUpOwotICAgIGF1dG8gZ2VuZXJhdG9yU3RhdGUgPSBjb250
ZXh0LmNyZWF0ZUJpbmRpbmdMb2NhdGlvbihsb2NhdGlvbiwgbV92bS0+cHJvcGVydHlOYW1lcy0+
Z2VuZXJhdG9yU3RhdGVQcml2YXRlTmFtZSwgcG9zaXRpb24sIHBvc2l0aW9uLCBBc3NpZ25tZW50
Q29udGV4dDo6RGVjbGFyYXRpb25TdGF0ZW1lbnQpOwotICAgIGNvbnRleHQuYXBwZW5kUGFyYW1l
dGVyKHBhcmFtZXRlcnMsIGdlbmVyYXRvclN0YXRlLCAwKTsKLQorICAgIGFkZFBhcmFtZXRlciht
X3ZtLT5wcm9wZXJ0eU5hbWVzLT5nZW5lcmF0b3JTdGF0ZVByaXZhdGVOYW1lKTsKICAgICAvLyBA
Z2VuZXJhdG9yVmFsdWUKLSAgICBkZWNsYXJlUGFyYW1ldGVyKCZtX3ZtLT5wcm9wZXJ0eU5hbWVz
LT5nZW5lcmF0b3JWYWx1ZVByaXZhdGVOYW1lKTsKLSAgICBhdXRvIGdlbmVyYXRvclZhbHVlID0g
Y29udGV4dC5jcmVhdGVCaW5kaW5nTG9jYXRpb24obG9jYXRpb24sIG1fdm0tPnByb3BlcnR5TmFt
ZXMtPmdlbmVyYXRvclZhbHVlUHJpdmF0ZU5hbWUsIHBvc2l0aW9uLCBwb3NpdGlvbiwgQXNzaWdu
bWVudENvbnRleHQ6OkRlY2xhcmF0aW9uU3RhdGVtZW50KTsKLSAgICBjb250ZXh0LmFwcGVuZFBh
cmFtZXRlcihwYXJhbWV0ZXJzLCBnZW5lcmF0b3JWYWx1ZSwgMCk7Ci0KKyAgICBhZGRQYXJhbWV0
ZXIobV92bS0+cHJvcGVydHlOYW1lcy0+Z2VuZXJhdG9yVmFsdWVQcml2YXRlTmFtZSk7CiAgICAg
Ly8gQGdlbmVyYXRvclJlc3VtZU1vZGUKLSAgICBkZWNsYXJlUGFyYW1ldGVyKCZtX3ZtLT5wcm9w
ZXJ0eU5hbWVzLT5nZW5lcmF0b3JSZXN1bWVNb2RlUHJpdmF0ZU5hbWUpOwotICAgIGF1dG8gZ2Vu
ZXJhdG9yUmVzdW1lTW9kZSA9IGNvbnRleHQuY3JlYXRlQmluZGluZ0xvY2F0aW9uKGxvY2F0aW9u
LCBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5nZW5lcmF0b3JSZXN1bWVNb2RlUHJpdmF0ZU5hbWUsIHBv
c2l0aW9uLCBwb3NpdGlvbiwgQXNzaWdubWVudENvbnRleHQ6OkRlY2xhcmF0aW9uU3RhdGVtZW50
KTsKLSAgICBjb250ZXh0LmFwcGVuZFBhcmFtZXRlcihwYXJhbWV0ZXJzLCBnZW5lcmF0b3JSZXN1
bWVNb2RlLCAwKTsKKyAgICBhZGRQYXJhbWV0ZXIobV92bS0+cHJvcGVydHlOYW1lcy0+Z2VuZXJh
dG9yUmVzdW1lTW9kZVByaXZhdGVOYW1lKTsKKyAgICAvLyBAZ2VuZXJhdG9yRnJhbWUKKyAgICBh
ZGRQYXJhbWV0ZXIobV92bS0+cHJvcGVydHlOYW1lcy0+Z2VuZXJhdG9yRnJhbWVQcml2YXRlTmFt
ZSk7CisKKyAgICBwYXJhbWV0ZXJDb3VudCA9IDU7CiAKICAgICByZXR1cm4gcGFyYW1ldGVyczsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCmluZGV4IGExMWIzNWMxMDFmZTVi
ODQ5Y2IyMzMwOTZjNTY4MzEzNzA2NmNhYmYuLmU2MTQ5YTNhYzM2OTQwNDg5M2QyMzY5NjkzMTZi
NWMzMDMzYmU4NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFy
c2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaApAQCAtMTI1
OSw3ICsxMjU5LDcgQEAgY2xhc3MgUGFyc2VyIHsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1
aWxkZXI+IE5FVkVSX0lOTElORSBib29sIHBhcnNlRnVuY3Rpb25JbmZvKFRyZWVCdWlsZGVyJiwg
RnVuY3Rpb25SZXF1aXJlbWVudHMsIFNvdXJjZVBhcnNlTW9kZSwgYm9vbCBuYW1lSXNJbkNvbnRh
aW5pbmdTY29wZSwgQ29uc3RydWN0b3JLaW5kLCBTdXBlckJpbmRpbmcsIGludCBmdW5jdGlvbktl
eXdvcmRTdGFydCwgUGFyc2VyRnVuY3Rpb25JbmZvPFRyZWVCdWlsZGVyPiYsIEZ1bmN0aW9uRGVm
aW5pdGlvblR5cGUpOwogICAgIAogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gTkVW
RVJfSU5MSU5FIGludCBwYXJzZUZ1bmN0aW9uUGFyYW1ldGVycyhUcmVlQnVpbGRlciYsIFNvdXJj
ZVBhcnNlTW9kZSwgUGFyc2VyRnVuY3Rpb25JbmZvPFRyZWVCdWlsZGVyPiYpOwotICAgIHRlbXBs
YXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gTkVWRVJfSU5MSU5FIHR5cGVuYW1lIFRyZWVCdWlsZGVy
OjpGb3JtYWxQYXJhbWV0ZXJMaXN0IGNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMoVHJlZUJ1aWxk
ZXImKTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElORSB0eXBl
bmFtZSBUcmVlQnVpbGRlcjo6Rm9ybWFsUGFyYW1ldGVyTGlzdCBjcmVhdGVHZW5lcmF0b3JQYXJh
bWV0ZXJzKFRyZWVCdWlsZGVyJiwgdW5zaWduZWQmIHBhcmFtZXRlckNvdW50KTsKIAogICAgIHRl
bXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gTkVWRVJfSU5MSU5FIFRyZWVDbGFzc0V4cHJlc3Np
b24gcGFyc2VDbGFzcyhUcmVlQnVpbGRlciYsIEZ1bmN0aW9uUmVxdWlyZW1lbnRzLCBQYXJzZXJD
bGFzc0luZm88VHJlZUJ1aWxkZXI+Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCmluZGV4IDc4YjQzYzRkMzg5ZmY3YTkwODMxM2I1
NTQwNTcwZTg4MmUxYjAzNzEuLjBjNmE3M2U1NTU3NjIwOTA1NTEyMjE1MzBkNzJhMzRiOGZkMjVj
ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQ
YXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1Bh
dGhzLmNwcApAQCAtNjk3LDE4ICs2OTcsNyBAQCBzdGF0aWMgdm9pZCB1cGRhdGVSZXN1bHRQcm9m
aWxlRm9yQmluYXJ5QXJpdGhPcChFeGVjU3RhdGUqLCBJbnN0cnVjdGlvbiosIEpTVmFsdQogICAg
IC8vIE9ubHkgc2F2ZSB2YXJpYWJsZXMgYW5kIHRlbXBvcmFyeSByZWdpc3RlcnMuIFRoZSBzY29w
ZSByZWdpc3RlcnMgYXJlIGluY2x1ZGVkIGluIHRoZW0uCiAgICAgLy8gQnV0IHBhcmFtZXRlcnMg
YXJlIG5vdCBpbmNsdWRlZC4gQmVjYXVzZSB0aGUgZ2VuZXJhdG9yIGltcGxlbWVudGF0aW9uIHJl
cGxhY2VzIHRoZSB2YWx1ZXMgb2YgcGFyYW1ldGVycyBvbiBlYWNoIGdlbmVyYXRvci5uZXh0KCkg
Y2FsbC4KICAgICBCRUdJTigpOwotICAgIEpTVmFsdWUgZ2VuZXJhdG9yID0gT1AoMSkuanNWYWx1
ZSgpOwotICAgIEdlbmVyYXRvckZyYW1lKiBmcmFtZSA9IG51bGxwdHI7Ci0gICAgSlNWYWx1ZSB2
YWx1ZSA9IGdlbmVyYXRvci5nZXQoZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLmdlbmVyYXRv
ckZyYW1lUHJpdmF0ZU5hbWUpOwotICAgIGlmICghdmFsdWUuaXNOdWxsKCkpCi0gICAgICAgIGZy
YW1lID0ganNDYXN0PEdlbmVyYXRvckZyYW1lKj4odmFsdWUpOwotICAgIGVsc2UgewotICAgICAg
ICAvLyBGSVhNRTogT25jZSBKU0dlbmVyYXRvciBzcGVjaWFsaXplZCBvYmplY3QgaXMgaW50cm9k
dWNlZCwgdGhpcyBHZW5lcmF0b3JGcmFtZSBzaG91bGQgYmUgZW1iZWRlZCBpbnRvIGl0IHRvIGF2
b2lkIGFsbG9jYXRpb25zLgotICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTUxNTQ1Ci0gICAgICAgIGZyYW1lID0gR2VuZXJhdG9yRnJhbWU6OmNyZWF0
ZShleGVjLT52bSgpLCAgZXhlYy0+Y29kZUJsb2NrKCktPm51bUNhbGxlZUxvY2FscygpKTsKLSAg
ICAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoZ2VuZXJhdG9yLCB0cnVlLCBQdXRQcm9wZXJ0eVNs
b3Q6OlB1dEJ5SWQpOwotICAgICAgICBhc09iamVjdChnZW5lcmF0b3IpLT5tZXRob2RUYWJsZShl
eGVjLT52bSgpKS0+cHV0KGFzT2JqZWN0KGdlbmVyYXRvciksIGV4ZWMsIGV4ZWMtPnByb3BlcnR5
TmFtZXMoKS5nZW5lcmF0b3JGcmFtZVByaXZhdGVOYW1lLCBmcmFtZSwgc2xvdCk7Ci0gICAgfQor
ICAgIEdlbmVyYXRvckZyYW1lKiBmcmFtZSA9IGpzQ2FzdDxHZW5lcmF0b3JGcmFtZSo+KE9QKDEp
LmpzVmFsdWUoKSk7CiAgICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gcGNbMl0u
dS51bnNpZ25lZFZhbHVlOwogICAgIGZyYW1lLT5zYXZlKGV4ZWMsIGV4ZWMtPmNvZGVCbG9jaygp
LT5saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZChsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpKTsKICAgICBF
TkQoKTsKQEAgLTcxNyw4ICs3MDYsNyBAQCBzdGF0aWMgdm9pZCB1cGRhdGVSZXN1bHRQcm9maWxl
Rm9yQmluYXJ5QXJpdGhPcChFeGVjU3RhdGUqLCBJbnN0cnVjdGlvbiosIEpTVmFsdQogU0xPV19Q
QVRIX0RFQ0woc2xvd19wYXRoX3Jlc3VtZSkKIHsKICAgICBCRUdJTigpOwotICAgIEpTVmFsdWUg
Z2VuZXJhdG9yID0gT1AoMSkuanNWYWx1ZSgpOwotICAgIEdlbmVyYXRvckZyYW1lKiBmcmFtZSA9
IGpzQ2FzdDxHZW5lcmF0b3JGcmFtZSo+KGdlbmVyYXRvci5nZXQoZXhlYywgZXhlYy0+cHJvcGVy
dHlOYW1lcygpLmdlbmVyYXRvckZyYW1lUHJpdmF0ZU5hbWUpKTsKKyAgICBHZW5lcmF0b3JGcmFt
ZSogZnJhbWUgPSBqc0Nhc3Q8R2VuZXJhdG9yRnJhbWUqPihPUCgxKS5qc1ZhbHVlKCkpOwogICAg
IHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9IHBjWzJdLnUudW5zaWduZWRWYWx1ZTsK
ICAgICBmcmFtZS0+cmVzdW1lKGV4ZWMsIGV4ZWMtPmNvZGVCbG9jaygpLT5saXZlQ2FsbGVlTG9j
YWxzQXRZaWVsZChsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpKTsKICAgICBFTkQoKTsKQEAgLTc5Nyw0
ICs3ODUsMTIgQEAgc3RhdGljIHZvaWQgdXBkYXRlUmVzdWx0UHJvZmlsZUZvckJpbmFyeUFyaXRo
T3AoRXhlY1N0YXRlKiwgSW5zdHJ1Y3Rpb24qLCBKU1ZhbHUKICAgICBFTkQoKTsKIH0KIAorU0xP
V19QQVRIX0RFQ0woc2xvd19wYXRoX25ld19nZW5lcmF0b3JfZnJhbWUpCit7CisgICAgQkVHSU4o
KTsKKyAgICB1bnNpZ25lZCBnZW5lcmF0b3JGcmFtZVNpemUgPSBwY1syXS51LnVuc2lnbmVkVmFs
dWU7CisgICAgUkVUVVJOKEdlbmVyYXRvckZyYW1lOjpjcmVhdGUoZXhlYywgZ2VuZXJhdG9yRnJh
bWVTaXplKSk7Cit9CisKKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCmluZGV4IGYwMGQ4NzA1ZDRlNjdmZTRk
NDA1OWJkZTE2OGVlODhmNTdkZjcyZTcuLjA2NTBjNGU4Y2I3MTU1OTE3Y2QxZDdhMmY3N2E3Yzdm
NzI5YTE1NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1v
blNsb3dQYXRocy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNs
b3dQYXRocy5oCkBAIC0yOTYsNiArMjk2LDcgQEAgaW5saW5lIHZvaWQgZGVjb2RlUmVzdWx0KFNs
b3dQYXRoUmV0dXJuVHlwZSByZXN1bHQsIHZvaWQqJiBhLCB2b2lkKiYgYikKIFNMT1dfUEFUSF9I
SURERU5fREVDTChzbG93X3BhdGhfcHVzaF93aXRoX3Njb3BlKTsKIFNMT1dfUEFUSF9ISURERU5f
REVDTChzbG93X3BhdGhfcmVzb2x2ZV9zY29wZSk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xv
d19wYXRoX2NvcHlfcmVzdCk7CitTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX25ld19n
ZW5lcmF0b3JfZnJhbWUpOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJhbWUuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJhbWUuY3BwCmluZGV4IGVmNmVhN2ExMDAy
NThjM2VjZTA0ZGFhYjQzYmRhYTg1MWVjOGY3MTUuLjMwYjgxNGE2MzY2NzI2ODI1YzM4NDlmZmIy
ODA0ZDJmZjM4MDQxMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0dlbmVyYXRvckZyYW1lLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9H
ZW5lcmF0b3JGcmFtZS5jcHAKQEAgLTMwLDYwICszMCw2MCBAQAogI2luY2x1ZGUgIkhlYXBJdGVy
YXRpb25TY29wZS5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAi
SlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTT2JqZWN0SW5saW5lcy5oIgogI2luY2x1ZGUg
IlNsb3RWaXNpdG9ySW5saW5lcy5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKIAog
bmFtZXNwYWNlIEpTQyB7CiAKLWNvbnN0IENsYXNzSW5mbyBHZW5lcmF0b3JGcmFtZTo6c19pbmZv
ID0geyAiR2VuZXJhdG9yRnJhbWUiLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RB
QkxFKEdlbmVyYXRvckZyYW1lKSB9OworY29uc3QgQ2xhc3NJbmZvIEdlbmVyYXRvckZyYW1lOjpz
X2luZm8gPSB7ICJHZW5lcmF0b3JGcmFtZSIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIENSRUFU
RV9NRVRIT0RfVEFCTEUoR2VuZXJhdG9yRnJhbWUpIH07CiAKLUdlbmVyYXRvckZyYW1lOjpHZW5l
cmF0b3JGcmFtZShWTSYgdm0sIHNpemVfdCBudW1iZXJPZkNhbGxlZUxvY2FscykKLSAgICA6IEJh
c2Uodm0sIHZtLmdlbmVyYXRvckZyYW1lU3RydWN0dXJlLmdldCgpKQotICAgICwgbV9udW1iZXJP
ZkNhbGxlZUxvY2FscyhudW1iZXJPZkNhbGxlZUxvY2FscykKK0dlbmVyYXRvckZyYW1lOjpHZW5l
cmF0b3JGcmFtZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogQmFzZSh2bSwg
c3RydWN0dXJlKQogewogfQogCi12b2lkIEdlbmVyYXRvckZyYW1lOjpmaW5pc2hDcmVhdGlvbihW
TSYgdm0pCi17Ci0gICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwotICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgbV9udW1iZXJPZkNhbGxlZUxvY2FsczsgKytpKQotICAgICAgICBsb2NhbEF0
KGkpLmNsZWFyKCk7Ci19Ci0KIFN0cnVjdHVyZSogR2VuZXJhdG9yRnJhbWU6OmNyZWF0ZVN0cnVj
dHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90
eXBlKQogewotICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBw
cm90b3R5cGUsIFR5cGVJbmZvKENlbGxUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cisg
ICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwg
VHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwogfQogCi1HZW5l
cmF0b3JGcmFtZSogR2VuZXJhdG9yRnJhbWU6OmNyZWF0ZShWTSYgdm0sIHNpemVfdCBudW1iZXJP
ZkxvY2FscykKK0dlbmVyYXRvckZyYW1lKiBHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlKFZNJiB2bSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHNpemVfdCBudW1iZXJPZkNhbGxlZUxvY2FscykKIHsKICAg
ICBHZW5lcmF0b3JGcmFtZSogcmVzdWx0ID0KICAgICAgICAgbmV3ICgKICAgICAgICAgICAgIE5v
dE51bGwsCi0gICAgICAgICAgICBhbGxvY2F0ZUNlbGw8R2VuZXJhdG9yRnJhbWU+KHZtLmhlYXAs
IGFsbG9jYXRpb25TaXplRm9yTG9jYWxzKG51bWJlck9mTG9jYWxzKSkpCi0gICAgICAgIEdlbmVy
YXRvckZyYW1lKHZtLCBudW1iZXJPZkxvY2Fscyk7CisgICAgICAgICAgICBhbGxvY2F0ZUNlbGw8
R2VuZXJhdG9yRnJhbWU+KHZtLmhlYXAsIGFsbG9jYXRpb25TaXplRm9yTG9jYWxzKG51bWJlck9m
Q2FsbGVlTG9jYWxzKSkpCisgICAgICAgIEdlbmVyYXRvckZyYW1lKHZtLCBzdHJ1Y3R1cmUpOwog
ICAgIHJlc3VsdC0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAK
K0dlbmVyYXRvckZyYW1lKiBHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywg
c2l6ZV90IG51bWJlck9mQ2FsbGVlTG9jYWxzKQoreworICAgIHJldHVybiBjcmVhdGUoZXhlYy0+
dm0oKSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5nZW5lcmF0b3JGcmFtZVN0cnVjdHVy
ZSgpLCBudW1iZXJPZkNhbGxlZUxvY2Fscyk7Cit9CisKIHZvaWQgR2VuZXJhdG9yRnJhbWU6OnNh
dmUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlQ2FsbGVlTG9jYWxz
KQogewogICAgIC8vIE9ubHkgc2F2ZSBjYWxsZWUgbG9jYWxzLgogICAgIC8vIEV2ZXJ5IHRpbWUg
YSBnZW5lcmF0b3IgaXMgY2FsbGVkIChvciByZXN1bWVkKSwgcGFyYW1ldGVycyBzaG91bGQgYmUg
cmVwbGFjZWQuCi0gICAgQVNTRVJUKGxpdmVDYWxsZWVMb2NhbHMubnVtQml0cygpIDw9IG1fbnVt
YmVyT2ZDYWxsZWVMb2NhbHMpOworICAgIHVuc2lnbmVkIGdlbmVyYXRvckZyYW1lSW5kZXggPSAw
OwogICAgIGxpdmVDYWxsZWVMb2NhbHMuZm9yRWFjaFNldEJpdChbJl0oc2l6ZV90IGluZGV4KSB7
Ci0gICAgICAgIGxvY2FsQXQoaW5kZXgpLnNldChleGVjLT52bSgpLCB0aGlzLCBleGVjLT51bmNo
ZWNrZWRSKHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGluZGV4KSkuanNWYWx1ZSgpKTsKKyAgICAg
ICAgbG9jYWxBdChnZW5lcmF0b3JGcmFtZUluZGV4KyspLnNldChleGVjLT52bSgpLCB0aGlzLCBl
eGVjLT51bmNoZWNrZWRSKHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGluZGV4KSkuanNWYWx1ZSgp
KTsKICAgICB9KTsKKyAgICBtX251bWJlck9mU2F2ZWRDYWxsZWVMb2NhbHMgPSBnZW5lcmF0b3JG
cmFtZUluZGV4OwogfQogCiB2b2lkIEdlbmVyYXRvckZyYW1lOjpyZXN1bWUoRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlQ2FsbGVlTG9jYWxzKQogewogICAgIC8vIE9u
bHkgcmVzdW1lIGNhbGxlZSBsb2NhbHMuCiAgICAgLy8gRXZlcnkgdGltZSBhIGdlbmVyYXRvciBp
cyBjYWxsZWQgKG9yIHJlc3VtZWQpLCBwYXJhbWV0ZXJzIHNob3VsZCBiZSByZXBsYWNlZC4KKyAg
ICB1bnNpZ25lZCBnZW5lcmF0b3JGcmFtZUluZGV4ID0gMDsKICAgICBsaXZlQ2FsbGVlTG9jYWxz
LmZvckVhY2hTZXRCaXQoWyZdKHNpemVfdCBpbmRleCkgewotICAgICAgICBleGVjLT51bmNoZWNr
ZWRSKHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGluZGV4KSkgPSBsb2NhbEF0KGluZGV4KS5nZXQo
KTsKLSAgICAgICAgbG9jYWxBdChpbmRleCkuY2xlYXIoKTsKKyAgICAgICAgZXhlYy0+dW5jaGVj
a2VkUih2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChpbmRleCkpID0gbG9jYWxBdChnZW5lcmF0b3JG
cmFtZUluZGV4KyspLmdldCgpOwogICAgIH0pOworICAgIG1fbnVtYmVyT2ZTYXZlZENhbGxlZUxv
Y2FscyA9IDA7CiB9CiAKIHZvaWQgR2VuZXJhdG9yRnJhbWU6OnZpc2l0Q2hpbGRyZW4oSlNDZWxs
KiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKQEAgLTkxLDcgKzkxLDcgQEAgdm9pZCBHZW5l
cmF0b3JGcmFtZTo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNp
dG9yKQogICAgIEdlbmVyYXRvckZyYW1lKiB0aGlzT2JqZWN0ID0ganNDYXN0PEdlbmVyYXRvckZy
YW1lKj4oY2VsbCk7CiAgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9y
KTsKICAgICAvLyBTaW5jZSBvbmx5IHRydWUgY2VsbCBwb2ludGVycyBhcmUgc3RvcmVkIGFzIGEg
Y2VsbCwgd2UgY2FuIHNhZmVseSBtYXJrIHRoZW0uCi0gICAgdmlzaXRvci5hcHBlbmRWYWx1ZXMo
dGhpc09iamVjdC0+bG9jYWxzKCksIHRoaXNPYmplY3QtPm1fbnVtYmVyT2ZDYWxsZWVMb2NhbHMp
OworICAgIHZpc2l0b3IuYXBwZW5kVmFsdWVzKHRoaXNPYmplY3QtPmxvY2FscygpLCB0aGlzT2Jq
ZWN0LT5tX251bWJlck9mU2F2ZWRDYWxsZWVMb2NhbHMpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBK
U0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZy
YW1lLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGcmFtZS5oCmlu
ZGV4IDNkNTQ1YjE0N2RkNGFiZmIyYmJiOWI1YTcxOTRlOGY3NDg0MWM0OWEuLjA0MGJjM2I2ODY2
NDQ4NGFjYjU3NGQ3ZDQ0NDlmYmIyMDI4MmYyNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZyYW1lLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJhbWUuaApAQCAtMjcsMTEgKzI3LDE0IEBACiAjZGVmaW5l
IEdlbmVyYXRvckZyYW1lX2gKIAogI2luY2x1ZGUgIkpTQ2VsbC5oIgorI2luY2x1ZGUgIkpTT2Jq
ZWN0LmgiCiAjaW5jbHVkZSA8d3RmL0Zhc3RCaXRWZWN0b3IuaD4KIAogbmFtZXNwYWNlIEpTQyB7
CiAKLWNsYXNzIEdlbmVyYXRvckZyYW1lIDogcHVibGljIEpTQ2VsbCB7CitjbGFzcyBMTEludE9m
ZnNldHNFeHRyYWN0b3I7CisKK2NsYXNzIEdlbmVyYXRvckZyYW1lIDogcHVibGljIEpTTm9uRmlu
YWxPYmplY3QgewogICAgIGZyaWVuZCBjbGFzcyBKSVQ7CiAjaWYgRU5BQkxFKERGR19KSVQpCiAg
ICAgZnJpZW5kIGNsYXNzIERGRzo6U3BlY3VsYXRpdmVKSVQ7CkBAIC0zOSwxMiArNDIsMTIgQEAg
Y2xhc3MgR2VuZXJhdG9yRnJhbWUgOiBwdWJsaWMgSlNDZWxsIHsKICNlbmRpZgogICAgIGZyaWVu
ZCBjbGFzcyBWTTsKIHB1YmxpYzoKLSAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOwotICAgIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IFN0cnVjdHVyZUlzSW1tb3J0YWwgfCBC
YXNlOjpTdHJ1Y3R1cmVGbGFnczsKKyAgICB0eXBlZGVmIEpTTm9uRmluYWxPYmplY3QgQmFzZTsK
IAogICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CiAKLSAgICBzdGF0aWMgR2VuZXJhdG9yRnJhbWUq
IGNyZWF0ZShWTSYsIHNpemVfdCBudW1iZXJPZkNhbGxlZUxvY2Fscyk7CisgICAgc3RhdGljIEdl
bmVyYXRvckZyYW1lKiBjcmVhdGUoRXhlY1N0YXRlKiwgc2l6ZV90IG51bWJlck9mQ2FsbGVlTG9j
YWxzKTsKKyAgICBzdGF0aWMgR2VuZXJhdG9yRnJhbWUqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSos
IHNpemVfdCBudW1iZXJPZkNhbGxlZUxvY2Fscyk7CiAKICAgICBXcml0ZUJhcnJpZXJCYXNlPFVu
a25vd24+KiBsb2NhbHMoKQogICAgIHsKQEAgLTUzLDcgKzU2LDYgQEAgY2xhc3MgR2VuZXJhdG9y
RnJhbWUgOiBwdWJsaWMgSlNDZWxsIHsKIAogICAgIFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4m
IGxvY2FsQXQoc2l6ZV90IGluZGV4KQogICAgIHsKLSAgICAgICAgQVNTRVJUKGluZGV4IDwgbV9u
dW1iZXJPZkNhbGxlZUxvY2Fscyk7CiAgICAgICAgIHJldHVybiBsb2NhbHMoKVtpbmRleF07CiAg
ICAgfQogCkBAIC02Miw2ICs2NCwxNiBAQCBjbGFzcyBHZW5lcmF0b3JGcmFtZSA6IHB1YmxpYyBK
U0NlbGwgewogICAgICAgICByZXR1cm4gV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mPHNpemVvZihX
cml0ZUJhcnJpZXI8VW5rbm93bj4pPihzaXplb2YoR2VuZXJhdG9yRnJhbWUpKTsKICAgICB9CiAK
KyAgICBzdGF0aWMgc2l6ZV90IGxvY2FsT2Zmc2V0KHVuc2lnbmVkIGluZGV4KQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIG9mZnNldE9mTG9jYWxzKCkgKyBpbmRleCAqIHNpemVvZihXcml0ZUJhcnJp
ZXI8VW5rbm93bj4pOworICAgIH0KKworICAgIHN0YXRpYyBzaXplX3QgbnVtYmVyT2ZTYXZlZENh
bGxlZUxvY2Fsc09mZnNldCgpCisgICAgeworICAgICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9G
KEdlbmVyYXRvckZyYW1lLCBtX251bWJlck9mU2F2ZWRDYWxsZWVMb2NhbHMpOworICAgIH0KKwog
ICAgIHN0YXRpYyBzaXplX3QgYWxsb2NhdGlvblNpemVGb3JMb2NhbHModW5zaWduZWQgbnVtYmVy
T2ZMb2NhbHMpCiAgICAgewogICAgICAgICByZXR1cm4gb2Zmc2V0T2ZMb2NhbHMoKSArIG51bWJl
ck9mTG9jYWxzICogc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPik7CkBAIC03MywxNCArODUs
MTIgQEAgY2xhc3MgR2VuZXJhdG9yRnJhbWUgOiBwdWJsaWMgSlNDZWxsIHsKICAgICB2b2lkIHJl
c3VtZShFeGVjU3RhdGUqLCBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlQ2FsbGVlTG9jYWxzKTsK
IAogcHJpdmF0ZToKLSAgICBHZW5lcmF0b3JGcmFtZShWTSYsIHNpemVfdCBudW1iZXJPZkNhbGxl
ZUxvY2Fscyk7CisgICAgR2VuZXJhdG9yRnJhbWUoVk0mLCBTdHJ1Y3R1cmUqKTsKIAotICAgIHNp
emVfdCBtX251bWJlck9mQ2FsbGVlTG9jYWxzOworICAgIHVpbnQzMl90IG1fbnVtYmVyT2ZTYXZl
ZENhbGxlZUxvY2FscyB7IDAgfTsKIAogICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRy
YWN0b3I7CiAKLSAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7Ci0KIHByb3RlY3RlZDoKICAg
ICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmlu
ZGV4IDc2OWEzZWZiMzA0MzhkY2Q5ZGRlNDQyZGM4ODk0YTFmMDM4MmE1MDQuLjhjYjg0YWJlNWY4
NzM5YTAxOGU2MmVhNDhmNDcxNDQ0Nzk1NTFkM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTUwLDYgKzUwLDcgQEAKICNpbmNs
dWRlICJFcnJvclByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkZ1bmN0aW9uQ29uc3RydWN0b3IuaCIK
ICNpbmNsdWRlICJGdW5jdGlvblByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkdlbmVyYXRvckZyYW1l
LmgiCiAjaW5jbHVkZSAiR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUg
IkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiR2VuZXJhdG9yUHJvdG90
eXBlLmgiCkBAIC0zODgsNiArMzg5LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdChWTSYg
dm0pCiAgICAgCiAgICAgRk9SX0VBQ0hfQlVJTFRJTl9ERVJJVkVEX0lURVJBVE9SX1RZUEUoQ1JF
QVRFX1BST1RPVFlQRV9GT1JfREVSSVZFRF9JVEVSQVRPUl9UWVBFKQogICAgIG1fcHJvcGVydHlO
YW1lSXRlcmF0b3JTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9y
OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1faXRlcmF0b3JQcm90b3R5cGUuZ2V0KCkpKTsK
KyAgICBtX2dlbmVyYXRvckZyYW1lU3RydWN0dXJlLnNldCh2bSwgdGhpcywgR2VuZXJhdG9yRnJh
bWU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywganNOdWxsKCkpKTsKICAgICBtX2dlbmVyYXRv
clByb3RvdHlwZS5zZXQodm0sIHRoaXMsIEdlbmVyYXRvclByb3RvdHlwZTo6Y3JlYXRlKHZtLCB0
aGlzLCBHZW5lcmF0b3JQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9pdGVy
YXRvclByb3RvdHlwZS5nZXQoKSkpKTsKICAgICAKICN1bmRlZiBDUkVBVEVfUFJPVE9UWVBFX0ZP
Ul9ERVJJVkVEX0lURVJBVE9SX1RZUEUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IGI0ZmYyZmI0MTNlMGU0NDYyNDkyYTQ4YTNmZDVhNGMy
NGVhMGI3NDEuLjcxZDM5ZWM5MjgzYWQ5ZTU5MDEyNDRmMDEzNmExMzU4ZjU0NGE5OTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAtMjU1
LDYgKzI1NSw3IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFy
aWFibGVPYmplY3QgewogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fY2FsbGJhY2tGdW5j
dGlvblN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2NhbGxiYWNrT2Jq
ZWN0U3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fcHJvcGVydHlOYW1l
SXRlcmF0b3JTdHJ1Y3R1cmU7CisgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9nZW5lcmF0
b3JGcmFtZVN0cnVjdHVyZTsKICNpZiBKU0NfT0JKQ19BUElfRU5BQkxFRAogICAgIFdyaXRlQmFy
cmllcjxTdHJ1Y3R1cmU+IG1fb2JqY0NhbGxiYWNrRnVuY3Rpb25TdHJ1Y3R1cmU7CiAgICAgV3Jp
dGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9vYmpjV3JhcHBlck9iamVjdFN0cnVjdHVyZTsKQEAgLTUw
MSw2ICs1MDIsNyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZh
cmlhYmxlT2JqZWN0IHsKICAgICBTdHJ1Y3R1cmUqIGNhbGxiYWNrRnVuY3Rpb25TdHJ1Y3R1cmUo
KSBjb25zdCB7IHJldHVybiBtX2NhbGxiYWNrRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7IH0KICAg
ICBTdHJ1Y3R1cmUqIGNhbGxiYWNrT2JqZWN0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9j
YWxsYmFja09iamVjdFN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogcHJvcGVydHlO
YW1lSXRlcmF0b3JTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3Byb3BlcnR5TmFtZUl0ZXJh
dG9yU3RydWN0dXJlLmdldCgpOyB9CisgICAgU3RydWN0dXJlKiBnZW5lcmF0b3JGcmFtZVN0cnVj
dHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fZ2VuZXJhdG9yRnJhbWVTdHJ1Y3R1cmUuZ2V0KCk7IH0K
ICNpZiBKU0NfT0JKQ19BUElfRU5BQkxFRAogICAgIFN0cnVjdHVyZSogb2JqY0NhbGxiYWNrRnVu
Y3Rpb25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX29iamNDYWxsYmFja0Z1bmN0aW9uU3Ry
dWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBvYmpjV3JhcHBlck9iamVjdFN0cnVjdHVy
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fb2JqY1dyYXBwZXJPYmplY3RTdHJ1Y3R1cmUuZ2V0KCk7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCAwZTQ0YzM0NjBmOWY4ZjBkY2Iz
NWQ5MTJkNzk1ZjdmOThkZmI3ZjQ1Li4wZWYyNWU3MjlhYTZlNTVjM2RjYTA2MWMyMmI2NWFhNmY3
YjViMzRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC0yNDYsNyArMjQ2
LDYgQEAgc3RhdGljIGJvb2wgZW5hYmxlQXNzZW1ibGVyKEV4ZWN1dGFibGVBbGxvY2F0b3ImIGV4
ZWN1dGFibGVBbGxvY2F0b3IpCiAgICAgaW5mZXJyZWRUeXBlU3RydWN0dXJlLnNldCgqdGhpcywg
SW5mZXJyZWRUeXBlOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAg
aW5mZXJyZWRUeXBlVGFibGVTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBJbmZlcnJlZFR5cGVUYWJsZTo6
Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIGZ1bmN0aW9uUmFyZURh
dGFTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBGdW5jdGlvblJhcmVEYXRhOjpjcmVhdGVTdHJ1Y3R1cmUo
KnRoaXMsIDAsIGpzTnVsbCgpKSk7Ci0gICAgZ2VuZXJhdG9yRnJhbWVTdHJ1Y3R1cmUuc2V0KCp0
aGlzLCBHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkp
OwogICAgIGV4Y2VwdGlvblN0cnVjdHVyZS5zZXQoKnRoaXMsIEV4Y2VwdGlvbjo6Y3JlYXRlU3Ry
dWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIHByb21pc2VEZWZlcnJlZFN0cnVjdHVy
ZS5zZXQoKnRoaXMsIEpTUHJvbWlzZURlZmVycmVkOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAs
IGpzTnVsbCgpKSk7CiAgICAgaW50ZXJuYWxQcm9taXNlRGVmZXJyZWRTdHJ1Y3R1cmUuc2V0KCp0
aGlzLCBKU0ludGVybmFsUHJvbWlzZURlZmVycmVkOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAs
IGpzTnVsbCgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAppbmRleCBhZWUwYWMxZjIx
Yjg0NTFiYzc3Njc0NDNhMGIwNWNhMDQ4YjRmNDliLi4yMzYwODM3MGE5ODM2ZDg5NzdlNDlkNzFl
NjhhODA5YjlhYzQ1MzYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKQEAgLTMxMiw3
ICszMTIsNiBAQCBjbGFzcyBWTSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxWTT4gewog
ICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGluZmVycmVkVHlwZVN0cnVjdHVyZTsKICAgICBTdHJvbmc8
U3RydWN0dXJlPiBpbmZlcnJlZFR5cGVUYWJsZVN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0
dXJlPiBmdW5jdGlvblJhcmVEYXRhU3RydWN0dXJlOwotICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGdl
bmVyYXRvckZyYW1lU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGV4Y2VwdGlvblN0
cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBwcm9taXNlRGVmZXJyZWRTdHJ1Y3R1cmU7
CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gaW50ZXJuYWxQcm9taXNlRGVmZXJyZWRTdHJ1Y3R1cmU7
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>269045</attachid>
            <date>2016-01-15 04:44:18 -0800</date>
            <delta_ts>2016-01-15 07:17:55 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-152723-20160115214347.patch</filename>
            <type>text/plain</type>
            <size>86279</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk1MDU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
ZDVkMzdhNWE2NzE2ZmQyMWY5YzRiYzhlZDg0OGZkNTlhZjU1NTgzLi5lNTFlM2ZmN2VlOTI4ZDU2
MThmOTMyMTZjOWU1ODU5ZGIwZGRmNGIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMjEgQEAKKzIwMTYtMDEtMTUgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgQ3JlYXRlIEdlbmVyYXRvckZyYW1lIHdpdGggdGhlIGJ5dGVjb2Rl
IG9wX25ld19nZW5lcmF0b3JfZnJhbWUgYW5kIG1ha2Ugb3Bfc2F2ZSAvIG9wX3Jlc3VtZSBERkcv
RlRMIGNhcGFibGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1MjcyMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogYnVpbHRpbnMvR2VuZXJhdG9yUHJvdG90eXBlLmpzOgorICAgICAgICAoZ2VuZXJhdG9y
UmVzdW1lKToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbjoKKyAgICAgICAg
KiBieXRlY29kZS9CeXRlY29kZVVzZURlZi5oOgorICAgICAgICAoSlNDOjpjb21wdXRlVXNlc0Zv
ckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZURlZnNGb3JCeXRlY29kZU9m
ZnNldCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6
Q29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmlz
aENyZWF0aW9uKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3Bw
OgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0dlbmVyYXRvckZyYW1lKToK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRTYXZlKToKKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXN1bWUpOgorICAgICAgICAqIGJ5dGVjb21waWxl
ci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6
Z2VuZXJhdG9yRnJhbWVSZWdpc3Rlcik6CisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0SW50ZXJw
cmV0ZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RJbnRlcnByZXRlcjxB
YnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKToKKyAgICAgICAgKiBkZmcvREZHQmFj
a3dhcmRzUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6QmFja3dhcmRz
UHJvcGFnYXRpb25QaGFzZTo6cHJvcGFnYXRlKToKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQ
YXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpCeXRlQ29kZVBh
cnNlcik6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgor
ICAgICAgICAqIGRmZy9ERkdDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmNh
cGFiaWxpdHlMZXZlbCk6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJpemUuaDoKKyAgICAgICAg
KEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAgICAgICAgKiBkZmcvREZHQ2xvYmJlcnNFeGl0U3Rh
dGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmNsb2JiZXJzRXhpdFN0YXRlKToKKyAgICAgICAg
KiBkZmcvREZHRG9lc0dDLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpkb2VzR0MpOgorICAgICAg
ICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNl
OjpmaXh1cE5vZGUpOgorICAgICAgICAqIGRmZy9ERkdNYXlFeGl0LmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjptYXlFeGl0KToKKyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAgICAoSlND
OjpERkc6Ok5vZGU6Omhhc0dlbmVyYXRvckZyYW1lU2l6ZSk6CisgICAgICAgIChKU0M6OkRGRzo6
Tm9kZTo6Z2VuZXJhdG9yRnJhbWVTaXplKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNH
ZW5lcmF0b3JGcmFtZUluZGV4KToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpnZW5lcmF0b3JG
cmFtZUluZGV4KToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNTYXZlZFZhcmlhYmxlQWNj
ZXNzRGF0YSk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6c2F2ZWRWYXJpYWJsZUFjY2Vzc0Rh
dGEpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc0dlbmVyYXRvckZyYW1lTG9jYWxzKToK
KyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpnZW5lcmF0b3JGcmFtZUxvY2Fscyk6CisgICAgICAg
ICogZGZnL0RGR05vZGVUeXBlLmg6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuY3BwOgor
ICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmg6CisgICAgICAgICogZGZnL0RGR1ByZWRpY3Rp
b25Qcm9wYWdhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpQcmVkaWN0aW9uUHJv
cGFnYXRpb25QaGFzZTo6cHJvcGFnYXRlKToKKyAgICAgICAgKEpTQzo6REZHOjpQcmVkaWN0aW9u
UHJvcGFnYXRpb25QaGFzZTo6ZG9Eb3VibGVWb3RpbmcpOgorICAgICAgICAqIGRmZy9ERkdTYWZl
VG9FeGVjdXRlLmg6CisgICAgICAgIChKU0M6OkRGRzo6c2FmZVRvRXhlY3V0ZSk6CisgICAgICAg
ICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZU5ld0dlbmVyYXRvckZyYW1lKToKKyAgICAgICAgKiBkZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAq
IGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlv
blBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHU3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2Uu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OlN0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlOjpydW4p
OgorICAgICAgICAqIGZ0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcDoKKyAgICAgICAg
KiBmdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oOgorICAgICAgICAqIGZ0bC9GVExDYXBh
YmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmNhbkNvbXBpbGUpOgorICAgICAgICAq
IGZ0bC9GVExMb3dlckRGR1RvTExWTS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dl
ckRGR1RvTExWTTo6Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJE
RkdUb0xMVk06OmNvbXBpbGVQdXRHZW5lcmF0b3JGcmFtZUxvY2Fscyk6CisgICAgICAgIChKU0M6
OkZUTDo6REZHOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZVNldEdlbmVyYXRvckxvY2FsKToKKyAg
ICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlR2V0R2VuZXJhdG9y
TG9jYWwpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVO
ZXdHZW5lcmF0b3JGcmFtZSk6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6
OkpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcyk6CisgICAgICAgICogaml0L0pJVC5oOgorICAg
ICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3Jl
c3VtZV9mcm9tX2dlbmVyYXRvcl9mcmFtZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9j
bGVhcl9nZW5lcmF0b3JfZnJhbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbmV3X2dl
bmVyYXRvcl9mcmFtZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9ub3ApOgorICAgICAg
ICAqIGxsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHA6CisgICAgICAgICogbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlci5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
cjY0LmFzbToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6UGFy
c2VyPExleGVyVHlwZT46OnBhcnNlSW5uZXIpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJU
eXBlPjo6cGFyc2VHZW5lcmF0b3JGdW5jdGlvblNvdXJjZUVsZW1lbnRzKToKKyAgICAgICAgKEpT
Qzo6UGFyc2VyPExleGVyVHlwZT46OmNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMpOgorICAgICAg
ICAqIHBhcnNlci9QYXJzZXIuaDoKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5j
cHA6CisgICAgICAgIChKU0M6OlNMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKiBydW50aW1lL0Nv
bW1vblNsb3dQYXRocy5oOgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJhdG9yRnJhbWUuY3BwOgor
ICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6R2VuZXJhdG9yRnJhbWUpOgorICAgICAgICAo
SlNDOjpHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6R2Vu
ZXJhdG9yRnJhbWU6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpzYXZl
KToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OnJlc3VtZSk6CisgICAgICAgIChKU0M6
OkdlbmVyYXRvckZyYW1lOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9y
RnJhbWU6OmZpbmlzaENyZWF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0dlbmVy
YXRvckZyYW1lLmg6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpsb2NhbE9mZnNldCk6
CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpudW1iZXJPZlNhdmVkQ2FsbGVlTG9jYWxz
T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OmxvY2FsQXQpOiBEZWxldGVk
LgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpK
U0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5o
OgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6Z2VuZXJhdG9yRnJhbWVTdHJ1Y3R1cmUp
OgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6Vk0pOiBEZWxl
dGVkLgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKwogMjAxNi0wMS0xMyAgQ2FybG9zIEdhcmNp
YSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0NNYWtlXSBEbyBub3Qg
dXNlIExMVk0gc3RhdGljIGxpYnJhcmllcyBmb3IgRlRMIEpJVApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0dlbmVyYXRvclByb3RvdHlwZS5qcyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9idWlsdGlucy9HZW5lcmF0b3JQcm90b3R5cGUuanMKaW5kZXggYTNiYmMz
NTM0YWUwNTJmNGQ2ZmEyNWJkZTcwM2M5M2QzYTc5NWUxMS4uNDlkZGJmOWM4NDY5MzMwNjU4NzEx
ZjE4ZTcyMTQ5YmM5ODIyZGEzNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1
aWx0aW5zL0dlbmVyYXRvclByb3RvdHlwZS5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YnVpbHRpbnMvR2VuZXJhdG9yUHJvdG90eXBlLmpzCkBAIC01OCw3ICs1OCw3IEBAIGZ1bmN0aW9u
IGdlbmVyYXRvclJlc3VtZShnZW5lcmF0b3IsIHNlbnRWYWx1ZSwgcmVzdW1lTW9kZSkKICAgICB9
IGVsc2UgewogICAgICAgICB0cnkgewogICAgICAgICAgICAgZ2VuZXJhdG9yLkBnZW5lcmF0b3JT
dGF0ZSA9IEV4ZWN1dGluZzsKLSAgICAgICAgICAgIHZhbHVlID0gZ2VuZXJhdG9yLkBnZW5lcmF0
b3JOZXh0LkBjYWxsKGdlbmVyYXRvci5AZ2VuZXJhdG9yVGhpcywgZ2VuZXJhdG9yLCBzdGF0ZSwg
c2VudFZhbHVlLCByZXN1bWVNb2RlKTsKKyAgICAgICAgICAgIHZhbHVlID0gZ2VuZXJhdG9yLkBn
ZW5lcmF0b3JOZXh0LkBjYWxsKGdlbmVyYXRvci5AZ2VuZXJhdG9yVGhpcywgZ2VuZXJhdG9yLCBz
dGF0ZSwgc2VudFZhbHVlLCByZXN1bWVNb2RlLCBnZW5lcmF0b3IuQGdlbmVyYXRvckZyYW1lKTsK
ICAgICAgICAgICAgIGlmIChnZW5lcmF0b3IuQGdlbmVyYXRvclN0YXRlID09PSBFeGVjdXRpbmcp
IHsKICAgICAgICAgICAgICAgICBnZW5lcmF0b3IuQGdlbmVyYXRvclN0YXRlID0gQ29tcGxldGVk
OwogICAgICAgICAgICAgICAgIGRvbmUgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCmluZGV4IDA1M2I4ZGM5Yjg2NGYxYjg2YjRj
ZWM3YWE2MDFmN2NlMmYwM2YyZTQuLjA3MWUyMTkwNjVkM2E1ZWQ1MzdlZDgwMWZjMGVlOTFmMDNk
ZDU3YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZUxpc3QuanNvbgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVM
aXN0Lmpzb24KQEAgLTE2LDYgKzE2LDcgQEAKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX25l
d19hcnJheV93aXRoX3NpemUiLCAibGVuZ3RoIiA6IDQgfSwKICAgICAgICAgICAgIHsgIm5hbWUi
IDogIm9wX25ld19hcnJheV9idWZmZXIiLCAibGVuZ3RoIiA6IDUgfSwKICAgICAgICAgICAgIHsg
Im5hbWUiIDogIm9wX25ld19yZWdleHAiLCAibGVuZ3RoIiA6IDMgfSwKKyAgICAgICAgICAgIHsg
Im5hbWUiIDogIm9wX25ld19nZW5lcmF0b3JfZnJhbWUiLCAibGVuZ3RoIiA6IDMgfSwKICAgICAg
ICAgICAgIHsgIm5hbWUiIDogIm9wX21vdiIsICJsZW5ndGgiIDogMyB9LAogICAgICAgICAgICAg
eyAibmFtZSIgOiAib3Bfbm90IiwgImxlbmd0aCIgOiAzIH0sCiAgICAgICAgICAgICB7ICJuYW1l
IiA6ICJvcF9lcSIsICJsZW5ndGgiIDogNCB9LApAQCAtMTM0LDcgKzEzNSwxMCBAQAogICAgICAg
ICAgICAgeyAibmFtZSIgOiAib3BfY29weV9yZXN0IiwgImxlbmd0aCI6IDQgfSwKICAgICAgICAg
ICAgIHsgIm5hbWUiIDogIm9wX2dldF9yZXN0X2xlbmd0aCIsICJsZW5ndGgiOiAzIH0sCiAgICAg
ICAgICAgICB7ICJuYW1lIiA6ICJvcF9zYXZlIiwgImxlbmd0aCIgOiA0IH0sCi0gICAgICAgICAg
ICB7ICJuYW1lIiA6ICJvcF9yZXN1bWUiLCAibGVuZ3RoIiA6IDMgfSwKKyAgICAgICAgICAgIHsg
Im5hbWUiIDogIm9wX3Jlc3VtZSIsICJsZW5ndGgiIDogNCB9LAorICAgICAgICAgICAgeyAibmFt
ZSIgOiAib3BfcmVzdW1lX2Zyb21fZ2VuZXJhdG9yX2ZyYW1lIiwgImxlbmd0aCIgOiA0IH0sCisg
ICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9jbGVhcl9nZW5lcmF0b3JfZnJhbWUiLCAibGVuZ3Ro
IiA6IDIgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX25vcCIsICJsZW5ndGgiIDogMSB9
LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3Bfd2F0Y2hkb2ciLCAibGVuZ3RoIiA6IDEgfQog
ICAgICAgICBdCiAgICAgfSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZVVzZURlZi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlVXNlRGVmLmgKaW5kZXggODAxMTE0YzM3MmEyNzdmNmUxNzcwOWI5MGJlMjA3YzhmOTli
ZTgyZC4uY2U3MDRiNDc0NmVkMWMwOWE4ZjAzNGFjMjA3N2M4OWZlYjFjNTMyZiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKQEAgLTU1LDYg
KzU1LDggQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAogICAgIGNhc2Ugb3Bf
Y3JlYXRlX291dF9vZl9iYW5kX2FyZ3VtZW50czoKICAgICBjYXNlIG9wX2dldF9yZXN0X2xlbmd0
aDoKICAgICBjYXNlIG9wX3dhdGNoZG9nOgorICAgIGNhc2Ugb3BfbmV3X2dlbmVyYXRvcl9mcmFt
ZToKKyAgICBjYXNlIG9wX25vcDoKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2Ugb3BfYXNzZXJ0
OgogICAgIGNhc2Ugb3BfZ2V0X3Njb3BlOgpAQCAtNzIsNyArNzQsOCBAQCB2b2lkIGNvbXB1dGVV
c2VzRm9yQnl0ZWNvZGVPZmZzZXQoCiAgICAgY2FzZSBvcF9qbmVxX251bGw6CiAgICAgY2FzZSBv
cF9kZWM6CiAgICAgY2FzZSBvcF9pbmM6Ci0gICAgY2FzZSBvcF9yZXN1bWU6IHsKKyAgICBjYXNl
IG9wX3Jlc3VtZToKKyAgICBjYXNlIG9wX2NsZWFyX2dlbmVyYXRvcl9mcmFtZTogewogICAgICAg
ICBBU1NFUlQob3Bjb2RlTGVuZ3Roc1tvcGNvZGVJRF0gPj0gMSk7CiAgICAgICAgIGZ1bmN0b3Io
Y29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzFdLnUub3BlcmFu
ZCk7CiAgICAgICAgIHJldHVybjsKQEAgLTE2NSw3ICsxNjgsOCBAQCB2b2lkIGNvbXB1dGVVc2Vz
Rm9yQnl0ZWNvZGVPZmZzZXQoCiAgICAgY2FzZSBvcF9uZXdfZ2VuZXJhdG9yX2Z1bmM6CiAgICAg
Y2FzZSBvcF9nZXRfcGFyZW50X3Njb3BlOgogICAgIGNhc2Ugb3BfY3JlYXRlX3Njb3BlZF9hcmd1
bWVudHM6Ci0gICAgY2FzZSBvcF9nZXRfZnJvbV9hcmd1bWVudHM6IHsKKyAgICBjYXNlIG9wX2dl
dF9mcm9tX2FyZ3VtZW50czoKKyAgICBjYXNlIG9wX3Jlc3VtZV9mcm9tX2dlbmVyYXRvcl9mcmFt
ZTogewogICAgICAgICBBU1NFUlQob3Bjb2RlTGVuZ3Roc1tvcGNvZGVJRF0gPj0gMik7CiAgICAg
ICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9u
WzJdLnUub3BlcmFuZCk7CiAgICAgICAgIHJldHVybjsKQEAgLTMyMyw2ICszMjcsOCBAQCB2b2lk
IGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVj
b2RlQmFzaWNCbG9jayogYmxvYwogICAgIGNhc2Ugb3BfcHJvZmlsZV9jb250cm9sX2Zsb3c6CiAg
ICAgY2FzZSBvcF9wdXRfdG9fYXJndW1lbnRzOgogICAgIGNhc2Ugb3Bfd2F0Y2hkb2c6CisgICAg
Y2FzZSBvcF9jbGVhcl9nZW5lcmF0b3JfZnJhbWU6CisgICAgY2FzZSBvcF9ub3A6CiAjZGVmaW5l
IExMSU5UX0hFTFBFUl9PUENPREVTKG9wY29kZSwgbGVuZ3RoKSBjYXNlIG9wY29kZToKICAgICAg
ICAgRk9SX0VBQ0hfTExJTlRfT1BDT0RFX0VYVEVOU0lPTihMTElOVF9IRUxQRVJfT1BDT0RFUyk7
CiAjdW5kZWYgTExJTlRfSEVMUEVSX09QQ09ERVMKQEAgLTQxNSw3ICs0MjEsOSBAQCB2b2lkIGNv
bXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2Rl
QmFzaWNCbG9jayogYmxvYwogICAgIGNhc2Ugb3BfZGVsX2J5X3ZhbDoKICAgICBjYXNlIG9wX3Vu
c2lnbmVkOgogICAgIGNhc2Ugb3BfZ2V0X2Zyb21fYXJndW1lbnRzOiAKLSAgICBjYXNlIG9wX2dl
dF9yZXN0X2xlbmd0aDogeworICAgIGNhc2Ugb3BfZ2V0X3Jlc3RfbGVuZ3RoOgorICAgIGNhc2Ug
b3BfbmV3X2dlbmVyYXRvcl9mcmFtZToKKyAgICBjYXNlIG9wX3Jlc3VtZV9mcm9tX2dlbmVyYXRv
cl9mcmFtZTogewogICAgICAgICBBU1NFUlQob3Bjb2RlTGVuZ3Roc1tvcGNvZGVJRF0gPiAxKTsK
ICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgaW5zdHJ1
Y3Rpb25bMV0udS5vcGVyYW5kKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCA1OTA1ZTkxODNjOGYxMjY2NGUyYmEz
ZGQyOWE1YzQ2NTY3NjhkYzAzLi5lZDRhMTdlMDEzNGViYzU4MWM3ODRjYWE2MWQwOTRhMzcwYTIw
Y2RiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApA
QCAtMTU1NywyNCArMTU1Nyw0OSBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKAogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9zYXZlOiB7Ci0gICAg
ICAgICAgICBpbnQgZ2VuZXJhdG9yID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBp
bnQgZnJhbWUgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIHVuc2lnbmVkIGxpdmVD
YWxsZWVMb2NhbHNJbmRleCA9ICgrK2l0KS0+dS51bnNpZ25lZFZhbHVlOwogICAgICAgICAgICAg
aW50IG9mZnNldCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgY29uc3QgRmFzdEJp
dFZlY3RvciYgbGl2ZW5lc3MgPSBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxk
W2xpdmVDYWxsZWVMb2NhbHNJbmRleF07CiAgICAgICAgICAgICBwcmludExvY2F0aW9uQW5kT3Ao
b3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJzYXZlIik7Ci0gICAgICAgICAgICBvdXQucHJpbnRm
KCIlcywgIiwgcmVnaXN0ZXJOYW1lKGdlbmVyYXRvcikuZGF0YSgpKTsKKyAgICAgICAgICAgIG91
dC5wcmludGYoIiVzLCAiLCByZWdpc3Rlck5hbWUoZnJhbWUpLmRhdGEoKSk7CiAgICAgICAgICAg
ICBsaXZlbmVzcy5kdW1wKG91dCk7CiAgICAgICAgICAgICBvdXQucHJpbnRmKCIoQGxpdmUlMXUp
LCAlZCgtPiVkKSIsIGxpdmVDYWxsZWVMb2NhbHNJbmRleCwgb2Zmc2V0LCBsb2NhdGlvbiArIG9m
ZnNldCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX3Jl
c3VtZTogewotICAgICAgICAgICAgaW50IGdlbmVyYXRvciA9ICgrK2l0KS0+dS5vcGVyYW5kOwor
ICAgICAgICAgICAgaW50IGZyYW1lID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICB1
bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSAoKytpdCktPnUudW5zaWduZWRWYWx1ZTsK
KyAgICAgICAgICAgIHVuc2lnbmVkIG1heExpdmVDYWxsZWVzID0gKCsraXQpLT51LnVuc2lnbmVk
VmFsdWU7CiAgICAgICAgICAgICBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlbmVzcyA9IG1fcmFy
ZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGRbbGl2ZUNhbGxlZUxvY2Fsc0luZGV4XTsK
ICAgICAgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwg
InJlc3VtZSIpOwotICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICIsIHJlZ2lzdGVyTmFtZShn
ZW5lcmF0b3IpLmRhdGEoKSk7CisgICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgIiwgcmVnaXN0
ZXJOYW1lKGZyYW1lKS5kYXRhKCkpOwogICAgICAgICAgICAgbGl2ZW5lc3MuZHVtcChvdXQpOwot
ICAgICAgICAgICAgb3V0LnByaW50ZigiKEBsaXZlJTF1KSIsIGxpdmVDYWxsZWVMb2NhbHNJbmRl
eCk7CisgICAgICAgICAgICBvdXQucHJpbnRmKCIoQGxpdmUlMXUpLCAldSIsIGxpdmVDYWxsZWVM
b2NhbHNJbmRleCwgbWF4TGl2ZUNhbGxlZXMpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KKyAgICAgICAgY2FzZSBvcF9yZXN1bWVfZnJvbV9nZW5lcmF0b3JfZnJhbWU6IHsKKyAgICAg
ICAgICAgIGludCBkc3QgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIGludCBmcmFt
ZSA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgdW5zaWduZWQgaW5kZXggPSAoKytp
dCktPnUudW5zaWduZWRWYWx1ZTsKKyAgICAgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQs
IGV4ZWMsIGxvY2F0aW9uLCBpdCwgInJlc3VtZV9mcm9tX2dlbmVyYXRvcl9mcmFtZSIpOworICAg
ICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCAldSIsIHJlZ2lzdGVyTmFtZShkc3QpLmRhdGEo
KSwgcmVnaXN0ZXJOYW1lKGZyYW1lKS5kYXRhKCksIGluZGV4KTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisgICAgICAgIGNhc2Ugb3BfY2xlYXJfZ2VuZXJhdG9yX2ZyYW1lOiB7Cisg
ICAgICAgICAgICBpbnQgZnJhbWUgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIHBy
aW50TG9jYXRpb25PcEFuZFJlZ2lzdGVyT3BlcmFuZChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwg
ImNsZWFyX2dlbmVyYXRvcl9mcmFtZSIsIGZyYW1lKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CisgICAgICAgIGNhc2Ugb3BfbmV3X2dlbmVyYXRvcl9mcmFtZTogeworICAgICAgICAg
ICAgaW50IGRzdCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgdW5zaWduZWQgZ2Vu
ZXJhdG9yRnJhbWVTaXplID0gKCsraXQpLT51LnVuc2lnbmVkVmFsdWU7CisgICAgICAgICAgICBw
cmludExvY2F0aW9uT3BBbmRSZWdpc3Rlck9wZXJhbmQob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQs
ICJuZXdfZ2VuZXJhdG9yX2ZyYW1lIiwgZHN0KTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIiAl
dSIsIGdlbmVyYXRvckZyYW1lU2l6ZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor
ICAgICAgICBjYXNlIG9wX25vcDogeworICAgICAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91
dCwgZXhlYywgbG9jYXRpb24sIGl0LCAibm9wIik7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQogICAgICAgICBjYXNlIG9wX2Fzc2VydDogewpAQCAtMTk4MCw5ICsyMDA1LDEwIEBAIHZv
aWQgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93
bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAgSGFzaFNldDxKU01vZHVsZUVudmlyb25tZW50Kj4g
c3Ryb25nbHlSZWZlcmVuY2VkTW9kdWxlRW52aXJvbm1lbnRzOwogCiAgICAgLy8gQm9va2tlZXAg
dGhlIG1lcmdlIHBvaW50IGJ5dGVjb2RlIG9mZnNldHMuCi0gICAgVmVjdG9yPHNpemVfdD4gbWVy
Z2VQb2ludEJ5dGVjb2RlT2Zmc2V0czsKKyAgICBWZWN0b3I8c3RkOjpwYWlyPHNpemVfdCwgc2l6
ZV90Pj4gbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0czsKIAogICAgIFJlZkNvdW50ZWRBcnJheTxJ
bnN0cnVjdGlvbj4gaW5zdHJ1Y3Rpb25zKGluc3RydWN0aW9uQ291bnQpOworICAgIHVuc2lnbmVk
IG5ld0dlbmVyYXRvckZyYW1lSW5zdHJ1Y3Rpb25PZmZzZXQgPSAwOwogCiAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgIWluc3RydWN0aW9uUmVhZGVyLmF0RW5kKCk7ICkgewogICAgICAgICBjb25z
dCBVbmxpbmtlZEluc3RydWN0aW9uKiBwYyA9IGluc3RydWN0aW9uUmVhZGVyLm5leHQoKTsKQEAg
LTIyNzUsNyArMjMwMSwyMCBAQCB2b2lkIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZt
LCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGluawogICAgICAgICAgICAg
aW50IG9mZnNldCA9IHBjWzNdLnUub3BlcmFuZDsKICAgICAgICAgICAgIGlmIChsaXZlQ2FsbGVl
TG9jYWxzSW5kZXggPj0gbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0cy5zaXplKCkpCiAgICAgICAg
ICAgICAgICAgbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0cy5yZXNpemUobGl2ZUNhbGxlZUxvY2Fs
c0luZGV4ICsgMSk7Ci0gICAgICAgICAgICBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXRzW2xpdmVD
YWxsZWVMb2NhbHNJbmRleF0gPSBpICsgb2Zmc2V0OworICAgICAgICAgICAgbWVyZ2VQb2ludEJ5
dGVjb2RlT2Zmc2V0c1tsaXZlQ2FsbGVlTG9jYWxzSW5kZXhdLnNlY29uZCA9IGkgKyBvZmZzZXQ7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2Ugb3BfcmVzdW1l
OiB7CisgICAgICAgICAgICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSBwY1syXS51
LmluZGV4OworICAgICAgICAgICAgaWYgKGxpdmVDYWxsZWVMb2NhbHNJbmRleCA+PSBtZXJnZVBv
aW50Qnl0ZWNvZGVPZmZzZXRzLnNpemUoKSkKKyAgICAgICAgICAgICAgICBtZXJnZVBvaW50Qnl0
ZWNvZGVPZmZzZXRzLnJlc2l6ZShsaXZlQ2FsbGVlTG9jYWxzSW5kZXggKyAxKTsKKyAgICAgICAg
ICAgIG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldHNbbGl2ZUNhbGxlZUxvY2Fsc0luZGV4XS5maXJz
dCA9IGk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2Ugb3Bf
bmV3X2dlbmVyYXRvcl9mcmFtZTogeworICAgICAgICAgICAgbmV3R2VuZXJhdG9yRnJhbWVJbnN0
cnVjdGlvbk9mZnNldCA9IGk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCkBAIC0y
MjkyLDE2ICsyMzMxLDQxIEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0s
IFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAKICAgICAvLyBQZXJm
b3JtIGJ5dGVjb2RlIGxpdmVuZXNzIGFuYWx5c2lzIHRvIGRldGVybWluZSB3aGljaCBsb2NhbHMg
YXJlIGxpdmUgYW5kIHNob3VsZCBiZSByZXN1bWVkIHdoZW4gZXhlY3V0aW5nIG9wX3Jlc3VtZS4K
ICAgICBpZiAodW5saW5rZWRDb2RlQmxvY2stPnBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9k
ZTo6R2VuZXJhdG9yQm9keU1vZGUpIHsKKyAgICAgICAgdW5zaWduZWQgbWF4R2VuZXJhdG9yRnJh
bWVTaXplID0gMDsKICAgICAgICAgaWYgKHNpemVfdCBjb3VudCA9IG1lcmdlUG9pbnRCeXRlY29k
ZU9mZnNldHMuc2l6ZSgpKSB7CiAgICAgICAgICAgICBjcmVhdGVSYXJlRGF0YUlmTmVjZXNzYXJ5
KCk7CiAgICAgICAgICAgICBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMgbGl2ZW5lc3ModGhpcyk7
CiAgICAgICAgICAgICBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkLmdyb3co
Y291bnQpOwogICAgICAgICAgICAgc2l6ZV90IGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9IDA7Ci0g
ICAgICAgICAgICBmb3IgKHNpemVfdCBieXRlY29kZU9mZnNldCA6IG1lcmdlUG9pbnRCeXRlY29k
ZU9mZnNldHMpIHsKLSAgICAgICAgICAgICAgICBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2Nh
bHNBdFlpZWxkW2xpdmVDYWxsZWVMb2NhbHNJbmRleF0gPSBsaXZlbmVzcy5nZXRMaXZlbmVzc0lu
Zm9BdEJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KTsKKyAgICAgICAgICAgIGZvciAoc3Rk
OjpwYWlyPHNpemVfdCwgc2l6ZV90PiBwYWlyIDogbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0cykg
eworICAgICAgICAgICAgICAgIHNpemVfdCByZXN1bWVQb2ludEJ5dGVjb2RlT2Zmc2V0ID0gcGFp
ci5maXJzdDsKKyAgICAgICAgICAgICAgICBzaXplX3QgbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0
ID0gcGFpci5zZWNvbmQ7CisgICAgICAgICAgICAgICAgRmFzdEJpdFZlY3RvciBsaXZlbmVzc1Zl
Y3RvciA9IGxpdmVuZXNzLmdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQobWVyZ2VQb2lu
dEJ5dGVjb2RlT2Zmc2V0KTsKKyAgICAgICAgICAgICAgICBzaXplX3QgbGl2ZUxvY2FscyA9IGxp
dmVuZXNzVmVjdG9yLmJpdENvdW50KCk7CisgICAgICAgICAgICAgICAgbV9yYXJlRGF0YS0+bV9s
aXZlQ2FsbGVlTG9jYWxzQXRZaWVsZFtsaXZlQ2FsbGVlTG9jYWxzSW5kZXhdID0gbGl2ZW5lc3NW
ZWN0b3I7CisgICAgICAgICAgICAgICAgbWF4R2VuZXJhdG9yRnJhbWVTaXplID0gc3RkOjptYXg8
dW5zaWduZWQ+KG1heEdlbmVyYXRvckZyYW1lU2l6ZSwgbGl2ZUxvY2Fscyk7CiAgICAgICAgICAg
ICAgICAgKytsaXZlQ2FsbGVlTG9jYWxzSW5kZXg7CisKKyAgICAgICAgICAgICAgICAvLyBQYXRj
aCBvcF9yZXN1bWUgd2l0aCBhY3R1YWwgb3BzLgorICAgICAgICAgICAgICAgIGludCBnZW5lcmF0
b3JGcmFtZUluZGV4ID0gaW5zdHJ1Y3Rpb25zW3Jlc3VtZVBvaW50Qnl0ZWNvZGVPZmZzZXQgKyAx
XS51Lm9wZXJhbmQ7CisgICAgICAgICAgICAgICAgaWYgKCFsaXZlTG9jYWxzKSB7CisgICAgICAg
ICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgNDsgKytpKQorICAgICAgICAgICAg
ICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zW3Jlc3VtZVBvaW50Qnl0ZWNvZGVPZmZzZXQgKyBpXSA9
IHZtLmludGVycHJldGVyLT5nZXRPcGNvZGUob3Bfbm9wKTsKKyAgICAgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgICAgICBzaXplX3QgaSA9IDA7CisgICAgICAgICAgICAgICAg
ICAgIGxpdmVuZXNzVmVjdG9yLmZvckVhY2hTZXRCaXQoWyZdKHVuc2lnbmVkIGxvY2FsKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5kZXggPSBpKys7CisgICAgICAgICAgICAg
ICAgICAgICAgICBzaXplX3Qgb2Zmc2V0ID0gcmVzdW1lUG9pbnRCeXRlY29kZU9mZnNldCArIGlu
ZGV4ICogNDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGluc3RydWN0aW9uc1tvZmZzZXRdID0g
dm0uaW50ZXJwcmV0ZXItPmdldE9wY29kZShvcF9yZXN1bWVfZnJvbV9nZW5lcmF0b3JfZnJhbWUp
OworICAgICAgICAgICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zW29mZnNldCArIDFdLnUub3Bl
cmFuZCA9IHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGxvY2FsKS5vZmZzZXQoKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGluc3RydWN0aW9uc1tvZmZzZXQgKyAyXS51Lm9wZXJhbmQgPSBnZW5l
cmF0b3JGcmFtZUluZGV4OworICAgICAgICAgICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zW29m
ZnNldCArIDNdLnUudW5zaWduZWRWYWx1ZSA9IGluZGV4OworICAgICAgICAgICAgICAgICAgICB9
KTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KKyAgICAgICAg
Ly8gRmlsbCBvcF9uZXdfZ2VuZXJhdG9yX2ZyYW1lJ3Mgc2l6ZS4KKyAgICAgICAgbV9pbnN0cnVj
dGlvbnNbbmV3R2VuZXJhdG9yRnJhbWVJbnN0cnVjdGlvbk9mZnNldCArIDJdLnUudW5zaWduZWRW
YWx1ZSA9IG1heEdlbmVyYXRvckZyYW1lU2l6ZTsKICAgICB9CiAKICAgICAvLyBTZXQgb3B0aW1p
emF0aW9uIHRocmVzaG9sZHMgb25seSBhZnRlciBtX2luc3RydWN0aW9ucyBpcyBpbml0aWFsaXpl
ZCwgc2luY2UgdGhlc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXggZDE1ZTIyNDM1MjY2ZmUxYWZmM2Q1
Zjc5YTFkZGE3NWI5YmRhZjNmMy4uNDY3NTBmOWZjMjA0YmJiYzBjOGY5MjdlMzIwZjBiM2QwOTJl
OTllZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTUzNyw2ICs1MzcsOSBAQCBQYXJzZXJFcnJvciBC
eXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUoKQogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpH
ZW5lcmF0b3JCb2R5TW9kZTogewogICAgICAgICAvLyB8dGhpc3wgaXMgYWxyZWFkeSBmaWxsZWQg
Y29ycmVjdGx5IGJlZm9yZSBoZXJlLgogICAgICAgICBlbWl0TG9hZChtX25ld1RhcmdldFJlZ2lz
dGVyLCBqc1VuZGVmaW5lZCgpKTsKKworICAgICAgICBlbWl0TmV3R2VuZXJhdG9yRnJhbWUoZ2Vu
ZXJhdG9yRnJhbWVSZWdpc3RlcigpKTsKKyAgICAgICAgZW1pdFB1dEJ5SWQoZ2VuZXJhdG9yUmVn
aXN0ZXIoKSwgcHJvcGVydHlOYW1lcygpLmdlbmVyYXRvckZyYW1lUHJpdmF0ZU5hbWUsIGdlbmVy
YXRvckZyYW1lUmVnaXN0ZXIoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApAQCAtMjc0NCw2
ICsyNzQ3LDE0IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RnVuY3Rp
b24oUmVnaXN0ZXJJRCogZHN0LCBGdW5jdGlvbk1ldGFkYXRhCiAgICAgcmV0dXJuIGRzdDsKIH0K
IAorUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdHZW5lcmF0b3JGcmFtZShS
ZWdpc3RlcklEKiBkc3QpCit7CisgICAgZW1pdE9wY29kZShvcF9uZXdfZ2VuZXJhdG9yX2ZyYW1l
KTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZHN0LT5pbmRleCgpKTsKKyAgICBpbnN0cnVj
dGlvbnMoKS5hcHBlbmQoMCk7CisgICAgcmV0dXJuIGRzdDsKK30KKwogUmVnaXN0ZXJJRCogQnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYWxsKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogZnVu
YywgRXhwZWN0ZWRGdW5jdGlvbiBleHBlY3RlZEZ1bmN0aW9uLCBDYWxsQXJndW1lbnRzJiBjYWxs
QXJndW1lbnRzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0
aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpCiB7CiAgICAg
cmV0dXJuIGVtaXRDYWxsKG9wX2NhbGwsIGRzdCwgZnVuYywgZXhwZWN0ZWRGdW5jdGlvbiwgY2Fs
bEFyZ3VtZW50cywgZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kKTsKQEAgLTQxNDUsNyArNDE1
Niw3IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRTYXZlKExhYmVsKiBtZXJnZVBvaW50
LCB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kCiB7CiAgICAgc2l6ZV90IGJlZ2luID0gaW5z
dHJ1Y3Rpb25zKCkuc2l6ZSgpOwogICAgIGVtaXRPcGNvZGUob3Bfc2F2ZSk7Ci0gICAgaW5zdHJ1
Y3Rpb25zKCkuYXBwZW5kKG1fZ2VuZXJhdG9yUmVnaXN0ZXItPmluZGV4KCkpOworICAgIGluc3Ry
dWN0aW9ucygpLmFwcGVuZChnZW5lcmF0b3JGcmFtZVJlZ2lzdGVyKCktPmluZGV4KCkpOwogICAg
IGluc3RydWN0aW9ucygpLmFwcGVuZChsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpOwogICAgIGluc3Ry
dWN0aW9ucygpLmFwcGVuZChtZXJnZVBvaW50LT5iaW5kKGJlZ2luLCBpbnN0cnVjdGlvbnMoKS5z
aXplKCkpKTsKIH0KQEAgLTQxNTMsOSArNDE2NCwzMSBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0U2F2ZShMYWJlbCogbWVyZ2VQb2ludCwgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0lu
ZAogdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlc3VtZShMYWJlbCogbWVyZ2VQb2ludCwg
dW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4KQogewogICAgIGVtaXRHZW5lcmF0b3JTdGF0
ZUxhYmVsKCk7CisKKyAgICByZWNsYWltRnJlZVJlZ2lzdGVycygpOworICAgIHVuc2lnbmVkIG1h
eExpdmVMb2NhbHMgPSAwOworICAgIGZvciAoY29uc3QgUmVnaXN0ZXJJRCYgcmVnIDogbV9jYWxs
ZWVMb2NhbHMpIHsKKyAgICAgICAgaWYgKHJlZy5yZWZDb3VudCgpKQorICAgICAgICAgICAgKytt
YXhMaXZlTG9jYWxzOworICAgIH0KKworICAgIC8vIFRoaXMgb3BfcmVzdW1lIHdpbGwgYmUgcmVw
bGFjZWQgd2l0aCB0aGUgYWN0dWFsIG9wcy4KKyAgICBpZiAobWF4TGl2ZUxvY2FscykKKyAgICAg
ICAgbWF4TGl2ZUxvY2FscyAtPSAxOworCiAgICAgZW1pdE9wY29kZShvcF9yZXN1bWUpOwotICAg
IGluc3RydWN0aW9ucygpLmFwcGVuZChtX2dlbmVyYXRvclJlZ2lzdGVyLT5pbmRleCgpKTsKKyAg
ICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZ2VuZXJhdG9yRnJhbWVSZWdpc3RlcigpLT5pbmRleCgp
KTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobGl2ZUNhbGxlZUxvY2Fsc0luZGV4KTsKKyAg
ICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobWF4TGl2ZUxvY2Fscyk7CisgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IG1heExpdmVMb2NhbHM7ICsraSkgeworICAgICAgICAvLyBOb3Agc3BhY2Uu
IExhdGVyIHdlIHdpbGwgZmlsbCB0aGlzIHdpdGggdGhlIGFjdHVhbCByZXN1bWUgb3BlcmF0aW9u
cy4KKyAgICAgICAgZW1pdE9wY29kZShvcF9ub3ApOworICAgICAgICBlbWl0T3Bjb2RlKG9wX25v
cCk7CisgICAgICAgIGVtaXRPcGNvZGUob3Bfbm9wKTsKKyAgICAgICAgZW1pdE9wY29kZShvcF9u
b3ApOworICAgIH0KKyAgICBlbWl0T3Bjb2RlKG9wX2NsZWFyX2dlbmVyYXRvcl9mcmFtZSk7Cisg
ICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGdlbmVyYXRvckZyYW1lUmVnaXN0ZXIoKS0+aW5kZXgo
KSk7CiAgICAgZW1pdExhYmVsKG1lcmdlUG9pbnQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5kZXggN2Qw
YzIwYjZmNTE2YTE3ZTg5M2YxYmJhMDgwM2MxMzMzZmZjOGQwZC4uM2QzMzQ3ODE1YWMzMGE4MmU2
MjZlM2UwNzgwODFiZTJiM2U5YmUzZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAtNTIyLDYgKzUyMiw3IEBA
CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdEZWZhdWx0Q29uc3RydWN0b3IoUmVnaXN0ZXJJ
RCogZHN0LCBDb25zdHJ1Y3RvcktpbmQsIGNvbnN0IElkZW50aWZpZXImIG5hbWUpOwogICAgICAg
ICBSZWdpc3RlcklEKiBlbWl0TmV3QXJyb3dGdW5jdGlvbkV4cHJlc3Npb24oUmVnaXN0ZXJJRCos
IEFycm93RnVuY0V4cHJOb2RlKik7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdSZWdFeHAo
UmVnaXN0ZXJJRCogZHN0LCBSZWdFeHAqKTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdE5ld0dl
bmVyYXRvckZyYW1lKFJlZ2lzdGVySUQqIGRzdCk7CiAKICAgICAgICAgUmVnaXN0ZXJJRCogZW1p
dE1vdmVMaW5rVGltZUNvbnN0YW50KFJlZ2lzdGVySUQqIGRzdCwgTGlua1RpbWVDb25zdGFudCk7
CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRNb3ZlRW1wdHlWYWx1ZShSZWdpc3RlcklEKiBkc3Qp
OwpAQCAtNjg0LDYgKzY4NSw3IEBACiAgICAgICAgIFJlZ2lzdGVySUQqIGdlbmVyYXRvclN0YXRl
UmVnaXN0ZXIoKSB7IHJldHVybiAmbV9wYXJhbWV0ZXJzWzJdOyB9CiAgICAgICAgIFJlZ2lzdGVy
SUQqIGdlbmVyYXRvclZhbHVlUmVnaXN0ZXIoKSB7IHJldHVybiAmbV9wYXJhbWV0ZXJzWzNdOyB9
CiAgICAgICAgIFJlZ2lzdGVySUQqIGdlbmVyYXRvclJlc3VtZU1vZGVSZWdpc3RlcigpIHsgcmV0
dXJuICZtX3BhcmFtZXRlcnNbNF07IH0KKyAgICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9yRnJh
bWVSZWdpc3RlcigpIHsgcmV0dXJuICZtX3BhcmFtZXRlcnNbNV07IH0KIAogICAgICAgICBDb2Rl
VHlwZSBjb2RlVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZVR5cGU7IH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5l
cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5s
aW5lcy5oCmluZGV4IDllZWM2M2NlYjA3MWJjMTQ4NmEwMTJjMjg1MDFkYjYyNDI2YmRlN2IuLmM0
YTZkY2FjNDUyZjcwMWJiZTY3OWRiNzIyMDZmYzIzZDRlMDE3MDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVz
LmgKQEAgLTE2ODcsNiArMTY4NywxMCBAQAogICAgIGNhc2UgTmV3UmVnZXhwOgogICAgICAgICBm
b3JOb2RlKG5vZGUpLnNldChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5v
cmlnaW4uc2VtYW50aWMpLT5yZWdFeHBTdHJ1Y3R1cmUoKSk7CiAgICAgICAgIGJyZWFrOworCisg
ICAgY2FzZSBOZXdHZW5lcmF0b3JGcmFtZToKKyAgICAgICAgZm9yTm9kZShub2RlKS5zZXQobV9n
cmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+Z2Vu
ZXJhdG9yRnJhbWVTdHJ1Y3R1cmUoKSk7CisgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCiAg
ICAgY2FzZSBUb1RoaXM6IHsKICAgICAgICAgQWJzdHJhY3RWYWx1ZSYgc291cmNlID0gZm9yTm9k
ZShub2RlLT5jaGlsZDEoKSk7CkBAIC0yNTEwLDYgKzI1MTQsMjIgQEAKICAgICAgICAgZm9yTm9k
ZShub2RlKS5tYWtlSGVhcFRvcCgpOwogICAgICAgICBicmVhazsKIAorICAgIGNhc2UgU2V0R2Vu
ZXJhdG9yTG9jYWw6IHsKKyAgICAgICAgY2xvYmJlcldvcmxkKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YywgY2xvYmJlckxpbWl0KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgY2FzZSBHZXRH
ZW5lcmF0b3JMb2NhbDogeworICAgICAgICBjbG9iYmVyV29ybGQobm9kZS0+b3JpZ2luLnNlbWFu
dGljLCBjbG9iYmVyTGltaXQpOworICAgICAgICBmb3JOb2RlKG5vZGUpLm1ha2VIZWFwVG9wKCk7
CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGNhc2UgUHV0R2VuZXJhdG9yRnJhbWVMb2Nh
bHM6IHsKKyAgICAgICAgY2xvYmJlcldvcmxkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2xvYmJl
ckxpbWl0KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBGb3JjZU9TUkV4aXQ6
CiAgICAgY2FzZSBDaGVja0JhZENlbGw6CiAgICAgICAgIG1fc3RhdGUuc2V0SXNWYWxpZChmYWxz
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0JhY2t3YXJkc1By
b3BhZ2F0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYWNrd2Fy
ZHNQcm9wYWdhdGlvblBoYXNlLmNwcAppbmRleCBiZjY1MTg4NmUzYWY5NWEzNDY2MDRiZTNlNTZi
MDBmZjQxNzAwYmI3Li4yYmIzYjFmOGE5NWE2NDljODJmMDg5NzJkMTVjNjNjOGY5NjhiOWIxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0JhY2t3YXJkc1Byb3BhZ2F0
aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFja3dhcmRz
UHJvcGFnYXRpb25QaGFzZS5jcHAKQEAgLTQwMyw2ICs0MDMsMjQgQEAgY2xhc3MgQmFja3dhcmRz
UHJvcGFnYXRpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogCisgICAgICAgIGNhc2UgR2V0R2VuZXJhdG9yTG9jYWw6IHsKKyAgICAgICAgICAg
IFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFibGVBY2Nlc3NEYXRhID0gbm9kZS0+c2F2ZWRWYXJp
YWJsZUFjY2Vzc0RhdGEoKTsKKyAgICAgICAgICAgIGZsYWdzICY9IH5Ob2RlQnl0ZWNvZGVVc2Vz
QXNJbnQ7IC8vIFdlIGRvbid0IGNhcmUgYWJvdXQgY3Jvc3MtYmxvY2sgdXNlcy1hcy1pbnQuCisg
ICAgICAgICAgICBtX2NoYW5nZWQgfD0gdmFyaWFibGVBY2Nlc3NEYXRhLT5tZXJnZUZsYWdzKGZs
YWdzKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBTZXRH
ZW5lcmF0b3JMb2NhbDogeworICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJs
ZUFjY2Vzc0RhdGEgPSBub2RlLT5zYXZlZFZhcmlhYmxlQWNjZXNzRGF0YSgpOworICAgICAgICAg
ICAgaWYgKCF2YXJpYWJsZUFjY2Vzc0RhdGEtPmlzTG9hZGVkRnJvbSgpKQorICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgZmxhZ3MgPSB2YXJpYWJsZUFjY2Vzc0RhdGEtPmZsYWdz
KCk7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCghKGZsYWdzICYgfk5vZGVCeXRlY29kZUJh
Y2tQcm9wTWFzaykpOworICAgICAgICAgICAgZmxhZ3MgfD0gTm9kZUJ5dGVjb2RlVXNlc0FzTnVt
YmVyOyAvLyBBY2NvdW50IGZvciB0aGUgZmFjdCB0aGF0IGNvbnRyb2wgZmxvdyBtYXkgY2F1c2Ug
b3ZlcmZsb3dzIHRoYXQgb3VyIG1vZGVsaW5nIGNhbid0IGhhbmRsZS4KKyAgICAgICAgICAgIG5v
ZGUtPmNoaWxkMigpLT5tZXJnZUZsYWdzKGZsYWdzKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CisKICAgICAgICAgY2FzZSBJZGVudGl0eTogCiAgICAgICAgICAgICAvLyBUaGlzIHdv
dWxkIGJlIHRyaXZpYWwgdG8gaGFuZGxlIGJ1dCB3ZSBqdXN0IGFzc2VydCB0aGF0IHdlIGNhbm5v
dCBzZWUgdGhlc2UgeWV0LgogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJz
ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAK
aW5kZXggMzY0NGEyZmQxOWEwZDliM2RkYTdiMDY4YTAwNDkwYTU4MjYyMDg2ZC4uZjNhNzZjMjQ5
MDZhNjY3ZmI3OGM5ZmE2ODVmNjMyNjEyNTFhNjAxNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTE0NCw2ICsxNDQsNyBAQCBjbGFz
cyBCeXRlQ29kZVBhcnNlciB7CiAgICAgICAgICwgbV9jb25zdGFudE51bGwoZ3JhcGguZnJlZXpl
KGpzTnVsbCgpKSkKICAgICAgICAgLCBtX2NvbnN0YW50TmFOKGdyYXBoLmZyZWV6ZShqc051bWJl
cihQTmFOKSkpCiAgICAgICAgICwgbV9jb25zdGFudE9uZShncmFwaC5mcmVlemUoanNOdW1iZXIo
MSkpKQorICAgICAgICAsIG1fY29uc3RhbnRUcnVlKGdyYXBoLmZyZWV6ZShqc0Jvb2xlYW4odHJ1
ZSkpKQogICAgICAgICAsIG1fbnVtQXJndW1lbnRzKG1fY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJz
KCkpCiAgICAgICAgICwgbV9udW1Mb2NhbHMobV9jb2RlQmxvY2stPm1fbnVtQ2FsbGVlTG9jYWxz
KQogICAgICAgICAsIG1fcGFyYW1ldGVyU2xvdHMoMCkKQEAgLTk4Miw2ICs5ODMsNyBAQCBjbGFz
cyBCeXRlQ29kZVBhcnNlciB7CiAgICAgRnJvemVuVmFsdWUqIG1fY29uc3RhbnROdWxsOwogICAg
IEZyb3plblZhbHVlKiBtX2NvbnN0YW50TmFOOwogICAgIEZyb3plblZhbHVlKiBtX2NvbnN0YW50
T25lOworICAgIEZyb3plblZhbHVlKiBtX2NvbnN0YW50VHJ1ZTsKICAgICBWZWN0b3I8Tm9kZSos
IDE2PiBtX2NvbnN0YW50czsKIAogICAgIC8vIFRoZSBudW1iZXIgb2YgYXJndW1lbnRzIHBhc3Nl
ZCB0byB0aGUgZnVuY3Rpb24uCkBAIC0xMDUxLDYgKzEwNTMsOSBAQCBjbGFzcyBCeXRlQ29kZVBh
cnNlciB7CiAgICAgICAgIENhbGxMaW5rSW5mb01hcCBtX2NhbGxMaW5rSW5mb3M7CiAgICAgICAg
IFN0dWJJbmZvTWFwIG1fc3R1YkluZm9zOwogICAgICAgICBCeVZhbEluZm9NYXAgbV9ieVZhbElu
Zm9zOworCisgICAgICAgIC8vIEJhc2ljIGJsb2NrcyBwZXJmb3JtaW5nIHlpZWxkJ3Mgb3Bfc2F2
ZSBvcGVyYXRpb24uCisgICAgICAgIFZlY3RvcjxPcGVyYW5kczxWYXJpYWJsZUFjY2Vzc0RhdGEq
Pj4gbV9nZW5lcmF0b3JMb2NhbHM7CiAgICAgICAgIAogICAgICAgICAvLyBEaWQgd2Ugc2VlIGFu
eSByZXR1cm5zPyBXZSBuZWVkIHRvIGhhbmRsZSB0aGUgKHVuY29tbW9uIGJ1dCBuZWNlc3Nhcnkp
CiAgICAgICAgIC8vIGNhc2Ugd2hlcmUgYSBwcm9jZWR1cmUgdGhhdCBkb2VzIG5vdCByZXR1cm4g
d2FzIGlubGluZWQuCkBAIC0zMzQxLDYgKzMzNDYsMTEgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6
cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX25l
d19yZWdleHApOwogICAgICAgICB9CiAKKyAgICAgICAgY2FzZSBvcF9uZXdfZ2VuZXJhdG9yX2Zy
YW1lOiB7CisgICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlv
blsxXS51Lm9wZXJhbmQpLCBhZGRUb0dyYXBoKE5ld0dlbmVyYXRvckZyYW1lLCBPcEluZm8oY3Vy
cmVudEluc3RydWN0aW9uWzJdLnUudW5zaWduZWRWYWx1ZSkpKTsKKyAgICAgICAgICAgIE5FWFRf
T1BDT0RFKG9wX25ld19nZW5lcmF0b3JfZnJhbWUpOworICAgICAgICB9CisKICAgICAgICAgY2Fz
ZSBvcF9nZXRfcmVzdF9sZW5ndGg6IHsKICAgICAgICAgICAgIElubGluZUNhbGxGcmFtZSogaW5s
aW5lQ2FsbEZyYW1lID0gdGhpcy0+aW5saW5lQ2FsbEZyYW1lKCk7CiAgICAgICAgICAgICBOb2Rl
KiBsZW5ndGg7CkBAIC0zMzY4LDYgKzMzNzgsNTkgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFy
c2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgICAgICBhcnJheSwgYXJyYXlMZW5n
dGgpOwogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfY29weV9yZXN0KTsKICAgICAgICAgfQor
CisgICAgICAgIGNhc2Ugb3Bfc2F2ZTogeworICAgICAgICAgICAgTm9kZSogZnJhbWUgPSBnZXQo
VmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpKTsKKyAgICAg
ICAgICAgIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9IGN1cnJlbnRJbnN0cnVjdGlv
blsyXS51LnVuc2lnbmVkVmFsdWU7CisgICAgICAgICAgICBjb25zdCBGYXN0Qml0VmVjdG9yJiBs
aXZlbmVzcyA9IG1faW5saW5lU3RhY2tUb3AtPm1fY29kZUJsb2NrLT5saXZlQ2FsbGVlTG9jYWxz
QXRZaWVsZChsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpOworICAgICAgICAgICAgUkVMRUFTRV9BU1NF
UlQobGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID09IG1faW5saW5lU3RhY2tUb3AtPm1fZ2VuZXJhdG9y
TG9jYWxzLnNpemUoKSk7CisgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2dlbmVyYXRv
ckxvY2Fscy5hcHBlbmQoT3BlcmFuZHM8VmFyaWFibGVBY2Nlc3NEYXRhKj4obV9udW1Bcmd1bWVu
dHMsIG1fbnVtTG9jYWxzKSk7CisgICAgICAgICAgICBPcGVyYW5kczxWYXJpYWJsZUFjY2Vzc0Rh
dGEqPiYgb3BlcmFuZHMgPSBtX2lubGluZVN0YWNrVG9wLT5tX2dlbmVyYXRvckxvY2Fscy5sYXN0
KCk7CisgICAgICAgICAgICB1bnNpZ25lZCBnZW5lcmF0b3JGcmFtZUluZGV4ID0gMDsKKyAgICAg
ICAgICAgIGxpdmVuZXNzLmZvckVhY2hTZXRCaXQoWyZdKHNpemVfdCBpbmRleCkgeworICAgICAg
ICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kID0gdmlydHVhbFJlZ2lzdGVyRm9yTG9j
YWwoaW5kZXgpOworICAgICAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciByZW1hcHBlZE9wZXJh
bmQgPSBtX2lubGluZVN0YWNrVG9wLT5yZW1hcE9wZXJhbmQob3BlcmFuZCk7CisgICAgICAgICAg
ICAgICAgTm9kZSogbG9jYWwgPSBnZXQob3BlcmFuZCk7CisgICAgICAgICAgICAgICAgVmFyaWFi
bGVBY2Nlc3NEYXRhKiB2YXJpYWJsZSA9IG5ld1ZhcmlhYmxlQWNjZXNzRGF0YShyZW1hcHBlZE9w
ZXJhbmQpOworICAgICAgICAgICAgICAgIHZhcmlhYmxlLT5tZXJnZVNob3VsZE5ldmVyVW5ib3go
dHJ1ZSk7CisgICAgICAgICAgICAgICAgb3BlcmFuZHMubG9jYWwocmVtYXBwZWRPcGVyYW5kLnRv
TG9jYWwoKSkgPSB2YXJpYWJsZTsKKyAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFNldEdlbmVy
YXRvckxvY2FsLCBPcEluZm8oZ2VuZXJhdG9yRnJhbWVJbmRleCsrKSwgT3BJbmZvKHZhcmlhYmxl
KSwgZnJhbWUsIGxvY2FsKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgYWRkVG9HcmFw
aChQdXRHZW5lcmF0b3JGcmFtZUxvY2FscywgT3BJbmZvKGdlbmVyYXRvckZyYW1lSW5kZXgpLCBm
cmFtZSk7CisKKyAgICAgICAgICAgIHVuc2lnbmVkIHJlbGF0aXZlT2Zmc2V0ID0gY3VycmVudElu
c3RydWN0aW9uWzNdLnUub3BlcmFuZDsKKyAgICAgICAgICAgIE5vZGUqIHRydWVDb25kaXRpb24g
PSBhZGRUb0dyYXBoKEpTQ29uc3RhbnQsIE9wSW5mbyhtX2NvbnN0YW50VHJ1ZSkpOworICAgICAg
ICAgICAgYWRkVG9HcmFwaChCcmFuY2gsIE9wSW5mbyhicmFuY2hEYXRhKG1fY3VycmVudEluZGV4
ICsgT1BDT0RFX0xFTkdUSChvcF9zYXZlKSwgbV9jdXJyZW50SW5kZXggKyByZWxhdGl2ZU9mZnNl
dCkpLCB0cnVlQ29uZGl0aW9uKTsKKyAgICAgICAgICAgIExBU1RfT1BDT0RFKG9wX3NhdmUpOwor
ICAgICAgICB9CisKKyAgICAgICAgY2FzZSBvcF9yZXN1bWU6IHsKKyAgICAgICAgICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor
CisgICAgICAgIGNhc2Ugb3BfcmVzdW1lX2Zyb21fZ2VuZXJhdG9yX2ZyYW1lOiB7CisgICAgICAg
ICAgICBOb2RlKiBmcmFtZSA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9u
WzJdLnUub3BlcmFuZCkpOworICAgICAgICAgICAgT3BlcmFuZHM8VmFyaWFibGVBY2Nlc3NEYXRh
Kj4mIG9wZXJhbmRzID0gbV9pbmxpbmVTdGFja1RvcC0+bV9nZW5lcmF0b3JMb2NhbHMubGFzdCgp
OworICAgICAgICAgICAgdW5zaWduZWQgZ2VuZXJhdG9yRnJhbWVJbmRleCA9IGN1cnJlbnRJbnN0
cnVjdGlvblszXS51LnVuc2lnbmVkVmFsdWU7CisgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIg
b3BlcmFuZChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKTsKKyAgICAgICAgICAgIFZp
cnR1YWxSZWdpc3RlciByZW1hcHBlZE9wZXJhbmQgPSBtX2lubGluZVN0YWNrVG9wLT5yZW1hcE9w
ZXJhbmQob3BlcmFuZCk7CisgICAgICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxl
ID0gb3BlcmFuZHMubG9jYWwocmVtYXBwZWRPcGVyYW5kLnRvTG9jYWwoKSk7CisgICAgICAgICAg
ICBSRUxFQVNFX0FTU0VSVCh2YXJpYWJsZSk7CisgICAgICAgICAgICBzZXQob3BlcmFuZCwgYWRk
VG9HcmFwaChHZXRHZW5lcmF0b3JMb2NhbCwgT3BJbmZvKGdlbmVyYXRvckZyYW1lSW5kZXgpLCBP
cEluZm8odmFyaWFibGUpLCBmcmFtZSkpOworICAgICAgICAgICAgTkVYVF9PUENPREUob3BfcmVz
dW1lX2Zyb21fZ2VuZXJhdG9yX2ZyYW1lKTsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2Ugb3Bf
Y2xlYXJfZ2VuZXJhdG9yX2ZyYW1lOiB7CisgICAgICAgICAgICBOb2RlKiBmcmFtZSA9IGdldChW
aXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCkpOworICAgICAg
ICAgICAgYWRkVG9HcmFwaChQdXRHZW5lcmF0b3JGcmFtZUxvY2FscywgT3BJbmZvKDApLCBmcmFt
ZSk7CisgICAgICAgICAgICBORVhUX09QQ09ERShvcF9jbGVhcl9nZW5lcmF0b3JfZnJhbWUpOwor
ICAgICAgICB9CisKKyAgICAgICAgY2FzZSBvcF9ub3A6IHsKKyAgICAgICAgICAgIE5FWFRfT1BD
T0RFKG9wX25vcCk7CisgICAgICAgIH0KKwogICAgICAgICAgICAgCiAgICAgICAgIC8vID09PSBC
aXR3aXNlIG9wZXJhdGlvbnMgPT09CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q2FwYWJpbGl0aWVzLmNwcAppbmRleCBkMTAwZDk3ZDVjNjBlMjVhMDYwZmZkYTQ1NjYzYjNiOTQx
NDM1ZGM2Li4xOTg0MWE4OGY2NGFhMTU3OWI3NjdkNTJkYmQxZTFmOTIyMGFhMWNhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCkBAIC0xODEsNiAr
MTgxLDcgQEAgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbChPcGNvZGVJRCBvcGNvZGVJ
RCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEluc3RydWMKICAgICBjYXNlIG9wX25ld19hcnJheToK
ICAgICBjYXNlIG9wX25ld19hcnJheV93aXRoX3NpemU6CiAgICAgY2FzZSBvcF9uZXdfYXJyYXlf
YnVmZmVyOgorICAgIGNhc2Ugb3BfbmV3X2dlbmVyYXRvcl9mcmFtZToKICAgICBjYXNlIG9wX3N0
cmNhdDoKICAgICBjYXNlIG9wX3RvX3ByaW1pdGl2ZToKICAgICBjYXNlIG9wX3Rocm93OgpAQCAt
MjI0LDYgKzIyNSwxMSBAQCBDYXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVsKE9wY29kZUlE
IG9wY29kZUlELCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSW5zdHJ1YwogICAgIGNhc2Ugb3BfY2F0
Y2g6CiAgICAgY2FzZSBvcF9jb3B5X3Jlc3Q6CiAgICAgY2FzZSBvcF9nZXRfcmVzdF9sZW5ndGg6
CisgICAgY2FzZSBvcF9zYXZlOgorICAgIGNhc2Ugb3BfcmVzdW1lOgorICAgIGNhc2Ugb3BfcmVz
dW1lX2Zyb21fZ2VuZXJhdG9yX2ZyYW1lOgorICAgIGNhc2Ugb3BfY2xlYXJfZ2VuZXJhdG9yX2Zy
YW1lOgorICAgIGNhc2Ugb3Bfbm9wOgogICAgICAgICByZXR1cm4gQ2FuQ29tcGlsZUFuZElubGlu
ZTsKIAogICAgIGNhc2Ugb3BfcHV0X3RvX3Njb3BlOiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ2xvYmJlcml6ZS5oCmluZGV4IDM0M2E2ZGU5YzI5MDliOTNlMDUyOGNmMDI3ODRhYWQ5
NGQwMWI0ZDEuLjkyN2YyZmFkZDRlYmJiMDkzZGNlMmIwNDFhNTE5ZDNlNjFlNjc4NzYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCkBAIC0xMDQ0LDYgKzEwNDQs
NyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFk
RnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogCiAgICAgY2FzZSBOZXdPYmplY3Q6CiAgICAg
Y2FzZSBOZXdSZWdleHA6CisgICAgY2FzZSBOZXdHZW5lcmF0b3JGcmFtZToKICAgICBjYXNlIE5l
d1N0cmluZ09iamVjdDoKICAgICBjYXNlIFBoYW50b21OZXdPYmplY3Q6CiAgICAgY2FzZSBNYXRl
cmlhbGl6ZU5ld09iamVjdDoKQEAgLTExMTEsNiArMTExMiwyMyBAQCB2b2lkIGNsb2JiZXJpemUo
R3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3Qg
V3JpdGVGdQogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQorCisgICAgY2FzZSBTZXRHZW5lcmF0b3JMb2NhbDog
eworICAgICAgICByZWFkKFdvcmxkKTsKKyAgICAgICAgd3JpdGUoSGVhcCk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBjYXNlIEdldEdlbmVyYXRvckxvY2FsOiB7CisgICAgICAgIHJl
YWQoV29ybGQpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgY2FzZSBQdXRHZW5lcmF0
b3JGcmFtZUxvY2FsczogeworICAgICAgICByZWFkKFdvcmxkKTsKKyAgICAgICAgd3JpdGUoSGVh
cCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAgICAgICAgIAogICAgIGNhc2UgVGhyb3dSZWZl
cmVuY2VFcnJvcjoKICAgICAgICAgd3JpdGUoU2lkZVN0YXRlKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcnNFeGl0U3RhdGUuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyc0V4aXRTdGF0ZS5jcHAKaW5kZXggNGUwYzUwNzc4
OWNkN2IzZmY0Nzc1MWY5MjVlNzQ4M2U2MWUyZGY1Yi4uY2I5NDEzYmRmMDY3ZDE2MDlmYzFlODQ0
ZmQ1OGYzZWFjZWI2ZmI1MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDbG9iYmVyc0V4aXRTdGF0ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDbG9iYmVyc0V4aXRTdGF0ZS5jcHAKQEAgLTUzLDEwICs1MywxNiBAQCBib29sIGNsb2JiZXJz
RXhpdFN0YXRlKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICAgICAgLy8gZXhpdCBzdGF0
ZS4KICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisgICAgY2FzZSBQdXRHZW5lcmF0b3JGcmFtZUxv
Y2FsczoKKyAgICBjYXNlIFNldEdlbmVyYXRvckxvY2FsOgorICAgIGNhc2UgR2V0R2VuZXJhdG9y
TG9jYWw6CisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIGNhc2UgQXJyYXlpZnlUb1N0cnVj
dHVyZToKICAgICBjYXNlIEFycmF5aWZ5OgogICAgIGNhc2UgTmV3T2JqZWN0OgogICAgIGNhc2Ug
TmV3UmVnZXhwOgorICAgIGNhc2UgTmV3R2VuZXJhdG9yRnJhbWU6CiAgICAgY2FzZSBOZXdTdHJp
bmdPYmplY3Q6CiAgICAgY2FzZSBQaGFudG9tTmV3T2JqZWN0OgogICAgIGNhc2UgTWF0ZXJpYWxp
emVOZXdPYmplY3Q6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rv
ZXNHQy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKaW5kZXgg
NzAyZGE1YmYxZTdjMGYxYzhmZTU1YzY0ODQ0NThmY2FkODFlMmFhNS4uZTQxOGQ3ODc2NmVhNjRm
MzAxZGQwZDNhNGQ3NTBiNGE4MjUwNmIxMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdEb2VzR0MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
RG9lc0dDLmNwcApAQCAtMjI5LDYgKzIyOSw5IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwg
Tm9kZSogbm9kZSkKICAgICBjYXNlIEdldEZyb21Bcmd1bWVudHM6CiAgICAgY2FzZSBQdXRUb0Fy
Z3VtZW50czoKICAgICBjYXNlIENvcHlSZXN0OgorICAgIGNhc2UgU2V0R2VuZXJhdG9yTG9jYWw6
CisgICAgY2FzZSBHZXRHZW5lcmF0b3JMb2NhbDoKKyAgICBjYXNlIFB1dEdlbmVyYXRvckZyYW1l
TG9jYWxzOgogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBjYXNlIENyZWF0ZUFjdGl2YXRp
b246CkBAIC0yNDYsNiArMjQ5LDcgQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBu
b2RlKQogICAgIGNhc2UgTmV3QXJyYXlXaXRoU2l6ZToKICAgICBjYXNlIE5ld0FycmF5QnVmZmVy
OgogICAgIGNhc2UgTmV3UmVnZXhwOgorICAgIGNhc2UgTmV3R2VuZXJhdG9yRnJhbWU6CiAgICAg
Y2FzZSBOZXdTdHJpbmdPYmplY3Q6CiAgICAgY2FzZSBNYWtlUm9wZToKICAgICBjYXNlIE5ld0Fy
cm93RnVuY3Rpb246CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Zp
eHVwUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNw
cAppbmRleCBjOWQ1YWJmYjQ5NDgxYjkwNTg5ZWM0ZmJhNTk1YTJjZThlNzBkZjY3Li44NzliZTlk
ZTIxMjA4NmQ5YWRmZGY2MTI3NzJmN2YyM2Y2YjNhYjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKQEAgLTE0MzAsNiArMTQzMCwyMSBAQCBjbGFzcyBG
aXh1cFBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAKKyAgICAgICAgY2FzZSBTZXRHZW5lcmF0b3JMb2NhbDogeworICAgICAgICAgICAgZml4RWRn
ZTxDZWxsVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
fQorCisgICAgICAgIGNhc2UgR2V0R2VuZXJhdG9yTG9jYWw6IHsKKyAgICAgICAgICAgIGZpeEVk
Z2U8Q2VsbFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KKworICAgICAgICBjYXNlIFB1dEdlbmVyYXRvckZyYW1lTG9jYWxzOiB7CisgICAgICAgICAg
ICBmaXhFZGdlPENlbGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CisKICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgICAgIC8vIEhhdmUgdGhlc2Ug
bm8tb3AgY2FzZXMgaGVyZSB0byBlbnN1cmUgdGhhdCBub2JvZHkgZm9yZ2V0cyB0byBhZGQgaGFu
ZGxlcnMgZm9yIG5ldyBvcGNvZGVzLgogICAgICAgICBjYXNlIFNldEFyZ3VtZW50OgpAQCAtMTQ2
Miw2ICsxNDc3LDcgQEAgY2xhc3MgRml4dXBQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAg
IGNhc2UgTmV3T2JqZWN0OgogICAgICAgICBjYXNlIE5ld0FycmF5QnVmZmVyOgogICAgICAgICBj
YXNlIE5ld1JlZ2V4cDoKKyAgICAgICAgY2FzZSBOZXdHZW5lcmF0b3JGcmFtZToKICAgICAgICAg
Y2FzZSBCcmVha3BvaW50OgogICAgICAgICBjYXNlIFByb2ZpbGVXaWxsQ2FsbDoKICAgICAgICAg
Y2FzZSBQcm9maWxlRGlkQ2FsbDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTWF5RXhpdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQu
Y3BwCmluZGV4IGRhYTI5MzM5ZGJmYmRmODBhYWQ5YjY0NmEyY2I3YTA1ODdkOTYyMzguLmZjNTdi
ODIzMDNjNzliZDEzY2Q1ZDFjZTFiZTBhZmI3MTBjZTZjNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdNYXlFeGl0LmNwcApAQCAtMTMwLDYgKzEzMCw5IEBAIEV4aXRNb2RlIG1heUV4
aXQoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgU3RvcmVCYXJyaWVyOgogICAg
IGNhc2UgUHV0QnlPZmZzZXQ6CiAgICAgY2FzZSBQdXRDbG9zdXJlVmFyOgorICAgIGNhc2UgUHV0
R2VuZXJhdG9yRnJhbWVMb2NhbHM6CisgICAgY2FzZSBTZXRHZW5lcmF0b3JMb2NhbDoKKyAgICBj
YXNlIEdldEdlbmVyYXRvckxvY2FsOgogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgU3RyQ2F0
OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAppbmRleCAxMjg3MGQ5M2QwYzQ4MmU0Zjhl
NWQ0ZDJkYWYxZTZiZjFmNzFiNjJjLi4yN2U4YTUwZGUzNGRjMDg2MmZkZjNjYTAxNjVjYTExNDg1
OTllODcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaApAQCAtODc4LDYgKzg3OCw3
MiBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgICAgIHJldHVybiBtX29wSW5mbzsKICAgICB9CiAKKyAg
ICBib29sIGhhc0dlbmVyYXRvckZyYW1lU2l6ZSgpCisgICAgeworICAgICAgICBzd2l0Y2ggKG9w
KCkpIHsKKyAgICAgICAgY2FzZSBOZXdHZW5lcmF0b3JGcmFtZToKKyAgICAgICAgICAgIHJldHVy
biB0cnVlOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICB9CisgICAgfQorCisgICAgdW5zaWduZWQgZ2VuZXJhdG9yRnJhbWVTaXplKCkKKyAgICB7
CisgICAgICAgIEFTU0VSVChoYXNHZW5lcmF0b3JGcmFtZVNpemUoKSk7CisgICAgICAgIHJldHVy
biBtX29wSW5mbzsKKyAgICB9CisKKyAgICBib29sIGhhc0dlbmVyYXRvckZyYW1lSW5kZXgoKQor
ICAgIHsKKyAgICAgICAgc3dpdGNoIChvcCgpKSB7CisgICAgICAgIGNhc2UgU2V0R2VuZXJhdG9y
TG9jYWw6CisgICAgICAgIGNhc2UgR2V0R2VuZXJhdG9yTG9jYWw6CisgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIHVuc2lnbmVkIGdlbmVyYXRvckZyYW1lSW5kZXgoKQorICAg
IHsKKyAgICAgICAgQVNTRVJUKGhhc0dlbmVyYXRvckZyYW1lSW5kZXgoKSk7CisgICAgICAgIHJl
dHVybiBtX29wSW5mbzsKKyAgICB9CisKKyAgICBib29sIGhhc1NhdmVkVmFyaWFibGVBY2Nlc3NE
YXRhKCkKKyAgICB7CisgICAgICAgIHN3aXRjaCAob3AoKSkgeworICAgICAgICBjYXNlIFNldEdl
bmVyYXRvckxvY2FsOgorICAgICAgICBjYXNlIEdldEdlbmVyYXRvckxvY2FsOgorICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIHNhdmVkVmFy
aWFibGVBY2Nlc3NEYXRhKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChoYXNTYXZlZFZhcmlhYmxl
QWNjZXNzRGF0YSgpKTsKKyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8VmFyaWFibGVB
Y2Nlc3NEYXRhKj4obV9vcEluZm8yKS0+ZmluZCgpOworICAgIH0KKworICAgIGJvb2wgaGFzR2Vu
ZXJhdG9yRnJhbWVMb2NhbHMoKQorICAgIHsKKyAgICAgICAgc3dpdGNoIChvcCgpKSB7CisgICAg
ICAgIGNhc2UgUHV0R2VuZXJhdG9yRnJhbWVMb2NhbHM6CisgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
fQorICAgIH0KKworICAgIHVuc2lnbmVkIGdlbmVyYXRvckZyYW1lTG9jYWxzKCkKKyAgICB7Cisg
ICAgICAgIEFTU0VSVChoYXNHZW5lcmF0b3JGcmFtZUxvY2FscygpKTsKKyAgICAgICAgcmV0dXJu
IG1fb3BJbmZvOworICAgIH0KKwogICAgIGJvb2wgaGFzQWNjZXNzb3JBdHRyaWJ1dGVzKCkKICAg
ICB7CiAgICAgICAgIHN3aXRjaCAob3AoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdO
b2RlVHlwZS5oCmluZGV4IGRkZDBiOTdjYjJmZTY5MjYwNDUxMDNmOGE3MTA3MDA0ODJlOWY2YmQu
LmM5YThkNzJmODI3ZWJlYzgxYWRlZWJmMmQ2ZDg5N2FjOWU4MGQ1M2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKQEAgLTc5LDYgKzc5LDEwIEBACiAgICAgbWFjcm8o
Rmx1c2gsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhQaGFudG9tTG9jYWwsIE5vZGVN
dXN0R2VuZXJhdGUpIFwKICAgICBcCisgICAgbWFjcm8oU2V0R2VuZXJhdG9yTG9jYWwsIE5vZGVN
dXN0R2VuZXJhdGUpIFwKKyAgICBtYWNybyhHZXRHZW5lcmF0b3JMb2NhbCwgTm9kZVJlc3VsdEpT
KSBcCisgICAgbWFjcm8oUHV0R2VuZXJhdG9yRnJhbWVMb2NhbHMsIE5vZGVNdXN0R2VuZXJhdGUp
IFwKKyAgICBcCiAgICAgLyogSGludCB0aGF0IHRoaXMgaXMgd2hlcmUgYnl0ZWNvZGUgdGhpbmtz
IGlzIGEgZ29vZCBwbGFjZSB0byBPU1IuIE5vdGUgdGhhdCB0aGlzICovXAogICAgIC8qIHdpbGwg
ZXhpc3QgZXZlbiBpbiBpbmxpbmVkIGxvb3BzLiBUaGlzIGhhcyBubyBleGVjdXRpb24gc2VtYW50
aWNzIGJ1dCBpdCBtdXN0ICovXAogICAgIC8qIHN1cnZpdmUgYWxsIERDRS4gV2UgdHJlYXQgdGhp
cyBhcyBiZWluZyBhIGNhbi1leGl0IGJlY2F1c2UgdGllci11cCB0byBGVEwgbWF5ICovXApAQCAt
MjYzLDYgKzI2Nyw3IEBACiAgICAgbWFjcm8oTmV3QXJyYXlCdWZmZXIsIE5vZGVSZXN1bHRKUykg
XAogICAgIG1hY3JvKE5ld1R5cGVkQXJyYXksIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJh
dGUpIFwKICAgICBtYWNybyhOZXdSZWdleHAsIE5vZGVSZXN1bHRKUykgXAorICAgIG1hY3JvKE5l
d0dlbmVyYXRvckZyYW1lLCBOb2RlUmVzdWx0SlMpIFwKICAgICAvKiBSZXN0IFBhcmFtZXRlciAq
L1wKICAgICBtYWNybyhHZXRSZXN0TGVuZ3RoLCBOb2RlUmVzdWx0SW50MzIpIFwKICAgICBtYWNy
byhDb3B5UmVzdCwgTm9kZU11c3RHZW5lcmF0ZSkgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT3BlcmF0aW9ucy5jcHAKaW5kZXggMmZkNWRiZGM3ZmM0Y2NhODZmYWUxMDkyMjdhYzE3
NTdmZGNkZjk2Yy4uYmMzNTY2MTNkM2Y1MjE4MDgyMzhlNTI2ODEzNWFhYjA5YmU2N2YwZSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCkBAIC00MSw4ICs0
MSw5IEBACiAjaW5jbHVkZSAiRGlyZWN0QXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiRlRMRm9yT1NS
RW50cnlKSVRDb2RlLmgiCiAjaW5jbHVkZSAiRlRMT1NSRW50cnkuaCIKLSNpbmNsdWRlICJIb3N0
Q2FsbFJldHVyblZhbHVlLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yRnJhbWUuaCIKICNpbmNsdWRl
ICJHZXR0ZXJTZXR0ZXIuaCIKKyNpbmNsdWRlICJIb3N0Q2FsbFJldHVyblZhbHVlLmgiCiAjaW5j
bHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKSVQuaCIKICNpbmNsdWRlICJKSVRFeGNl
cHRpb25zLmgiCkBAIC04MTcsNiArODE4LDExIEBAIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uTmV3RmxvYXQ2NEFycmF5V2l0aE9uZUFyZ3VtZW50KAogICAgIHJldHVybiByZWludGVycHJl
dF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRz
PEpTRmxvYXQ2NEFycmF5PihleGVjLCBzdHJ1Y3R1cmUsIGVuY29kZWRWYWx1ZSwgMCwgTnVsbG9w
dCkpOwogfQogCitjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0dlbmVyYXRvckZyYW1l
KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludDMyX3QgbnVtYmVyT2ZD
YWxsZWVMb2NhbHMpCit7CisgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxjaGFyKj4oR2VuZXJhdG9y
RnJhbWU6OmNyZWF0ZShleGVjLT52bSgpLCBzdHJ1Y3R1cmUsIG51bWJlck9mQ2FsbGVlTG9jYWxz
KSk7Cit9CisKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25DcmVhdGVBY3RpdmF0aW9u
RGlyZWN0KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTU2NvcGUqIHNj
b3BlLCBTeW1ib2xUYWJsZSogdGFibGUsIEVuY29kZWRKU1ZhbHVlIGluaXRpYWxWYWx1ZUVuY29k
ZWQpCiB7CiAgICAgSlNWYWx1ZSBpbml0aWFsVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoaW5pdGlh
bFZhbHVlRW5jb2RlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5o
CmluZGV4IDQwOTYyOWZmNWQ1M2E3YmUzODdhNjIzNjQ1NWQ2ODE2YWMwODVlYzkuLmU0NDNiYTI4
MjM3MmZiY2NlMmJhYzViMDlhMzY3YmQ1MmM4ZTc1ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT3BlcmF0aW9ucy5oCkBAIC04Miw2ICs4Miw3IEBACiBjaGFyKiBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbk5ld0Zsb2F0MzJBcnJheVdpdGhPbmVBcmd1bWVudChFeGVjU3RhdGUqLCBT
dHJ1Y3R1cmUqLCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFMOwogY2hhciogSklUX09QRVJB
VElPTiBvcGVyYXRpb25OZXdGbG9hdDY0QXJyYXlXaXRoU2l6ZShFeGVjU3RhdGUqLCBTdHJ1Y3R1
cmUqLCBpbnQzMl90KSBXVEZfSU5URVJOQUw7CiBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bk5ld0Zsb2F0NjRBcnJheVdpdGhPbmVBcmd1bWVudChFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqLCBF
bmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFMOworY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRp
b25OZXdHZW5lcmF0b3JGcmFtZShFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90KSBXVEZf
SU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxTdHJpY3QoRXhl
Y1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRQcm9wZXJ0eSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSBXVEZfSU5URVJOQUw7CiB2
b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxOb25TdHJpY3QoRXhlY1N0YXRlKiwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRQcm9wZXJ0
eSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxDZWxsU3RyaWN0KEV4ZWNTdGF0ZSosIEpTQ2VsbCos
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRQcm9wZXJ0eSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlKSBXVEZfSU5URVJOQUw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCmluZGV4IDU3OTk4Y2ZlMTgx
YThmY2Y5Y2M2NTE0MzUxYWM1ODBiODBlN2ZiOGEuLjMxMTQzNGNmNDE3OThhZDAxNGVmOWFkMDJj
ZTg5NTIxODc5YWZlNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCkBAIC0xNjAsNiArMTYwLDIy
IEBAIGNsYXNzIFByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlIDogcHVibGljIFBoYXNlIHsKICAg
ICAgICAgICAgIGNoYW5nZWQgfD0gdmFyaWFibGVBY2Nlc3NEYXRhLT5wcmVkaWN0KG5vZGUtPmNo
aWxkMSgpLT5wcmVkaWN0aW9uKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKwor
ICAgICAgICBjYXNlIFNldEdlbmVyYXRvckxvY2FsOiB7CisgICAgICAgICAgICBWYXJpYWJsZUFj
Y2Vzc0RhdGEqIHZhcmlhYmxlQWNjZXNzRGF0YSA9IG5vZGUtPnNhdmVkVmFyaWFibGVBY2Nlc3NE
YXRhKCk7CisgICAgICAgICAgICBjaGFuZ2VkIHw9IHZhcmlhYmxlQWNjZXNzRGF0YS0+cHJlZGlj
dChub2RlLT5jaGlsZDIoKS0+cHJlZGljdGlvbigpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CisKKyAgICAgICAgY2FzZSBHZXRHZW5lcmF0b3JMb2NhbDogeworICAgICAgICAgICAg
VmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZSA9IG5vZGUtPnNhdmVkVmFyaWFibGVBY2Nlc3NE
YXRhKCk7CisgICAgICAgICAgICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uID0gdmFyaWFibGUt
PnByZWRpY3Rpb24oKTsKKyAgICAgICAgICAgIGlmICghdmFyaWFibGUtPmNvdWxkUmVwcmVzZW50
SW50NTIoKSAmJiAocHJlZGljdGlvbiAmIFNwZWNJbnQ1MikpCisgICAgICAgICAgICAgICAgcHJl
ZGljdGlvbiA9IChwcmVkaWN0aW9uIHwgU3BlY0ludDUyQXNEb3VibGUpICYgflNwZWNJbnQ1MjsK
KyAgICAgICAgICAgIGlmIChwcmVkaWN0aW9uKQorICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0g
bWVyZ2VQcmVkaWN0aW9uKHByZWRpY3Rpb24pOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KICAgICAgICAgICAgIAogICAgICAgICBjYXNlIEJpdEFuZDoKICAgICAgICAgY2FzZSBCaXRP
cjoKQEAgLTUyNCw3ICs1NDAsOCBAQCBjbGFzcyBQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZSA6
IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICBjYXNlIE5l
d1JlZ2V4cDoKLSAgICAgICAgY2FzZSBDcmVhdGVBY3RpdmF0aW9uOiB7CisgICAgICAgIGNhc2Ug
Q3JlYXRlQWN0aXZhdGlvbjoKKyAgICAgICAgY2FzZSBOZXdHZW5lcmF0b3JGcmFtZTogewogICAg
ICAgICAgICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9uKFNwZWNPYmplY3RPdGhlcik7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtNzE2LDYgKzczMyw3IEBAIGNsYXNzIFByZWRp
Y3Rpb25Qcm9wYWdhdGlvblBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgY2FzZSBFeGl0
T0s6CiAgICAgICAgIGNhc2UgTG9hZFZhcmFyZ3M6CiAgICAgICAgIGNhc2UgQ29weVJlc3Q6Cisg
ICAgICAgIGNhc2UgUHV0R2VuZXJhdG9yRnJhbWVMb2NhbHM6CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIAogICAgICAgICAvLyBUaGlzIGdldHMgaWdub3JlZCBiZWNhdXNlIGl0IG9u
bHkgcHJldGVuZHMgdG8gcHJvZHVjZSBhIHZhbHVlLgpAQCAtODc0LDYgKzg5MiwxNiBAQCBjbGFz
cyBQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogCisgICAgICAgIGNhc2UgU2V0R2VuZXJhdG9yTG9jYWw6IHsK
KyAgICAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24gPSBub2RlLT5jaGlsZDIoKS0+
cHJlZGljdGlvbigpOworICAgICAgICAgICAgaWYgKGlzRG91YmxlU3BlY3VsYXRpb24ocHJlZGlj
dGlvbikpCisgICAgICAgICAgICAgICAgbm9kZS0+c2F2ZWRWYXJpYWJsZUFjY2Vzc0RhdGEoKS0+
dm90ZShWb3RlRG91YmxlLCB3ZWlnaHQpOworICAgICAgICAgICAgZWxzZSBpZiAoIWlzRnVsbE51
bWJlclNwZWN1bGF0aW9uKHByZWRpY3Rpb24pIHx8IGlzSW50MzJTcGVjdWxhdGlvbihwcmVkaWN0
aW9uKSB8fCBpc01hY2hpbmVJbnRTcGVjdWxhdGlvbihwcmVkaWN0aW9uKSkKKyAgICAgICAgICAg
ICAgICBub2RlLT5zYXZlZFZhcmlhYmxlQWNjZXNzRGF0YSgpLT52b3RlKFZvdGVWYWx1ZSwgd2Vp
Z2h0KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKwogICAgICAgICBjYXNlIFB1
dEJ5VmFsRGlyZWN0OgogICAgICAgICBjYXNlIFB1dEJ5VmFsOgogICAgICAgICBjYXNlIFB1dEJ5
VmFsQWxpYXM6IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2Fm
ZVRvRXhlY3V0ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRl
LmgKaW5kZXggMjMwZWZlZGM0ODMxNTEyYmFjNTY4YmVlZmRiMjc2OTYxODcyMDk0Yy4uN2JkZWMz
YjUzZTIzMDQyOGJlYzlkYWMxMDM1ZjBhNGQwNGQ4YTYxYSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKQEAgLTIzNyw2ICsyMzcsNyBAQCBib29sIHNh
ZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgsIE5vZGUq
IG5vZGUpCiAgICAgY2FzZSBOZXdBcnJheVdpdGhTaXplOgogICAgIGNhc2UgTmV3QXJyYXlCdWZm
ZXI6CiAgICAgY2FzZSBOZXdSZWdleHA6CisgICAgY2FzZSBOZXdHZW5lcmF0b3JGcmFtZToKICAg
ICBjYXNlIEJyZWFrcG9pbnQ6CiAgICAgY2FzZSBQcm9maWxlV2lsbENhbGw6CiAgICAgY2FzZSBQ
cm9maWxlRGlkQ2FsbDoKQEAgLTMyOCw2ICszMjksOSBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJz
dHJhY3RTdGF0ZVR5cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2Fz
ZSBHZXRNeUFyZ3VtZW50QnlWYWw6CiAgICAgY2FzZSBGb3J3YXJkVmFyYXJnczoKICAgICBjYXNl
IENvcHlSZXN0OgorICAgIGNhc2UgU2V0R2VuZXJhdG9yTG9jYWw6CisgICAgY2FzZSBHZXRHZW5l
cmF0b3JMb2NhbDoKKyAgICBjYXNlIFB1dEdlbmVyYXRvckZyYW1lTG9jYWxzOgogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKIAogICAgIGNhc2UgQm90dG9tVmFsdWU6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4IGNjY2U3OTE5OTUxNDVlOTFl
ZmQyMDA4OGM5NmI3YWY4MmI1NjE2ZDYuLjJhMzZkOGJhYjg4NzA5YzhjZmQxZTYwYTlmMGFkODJj
N2IzNzZiZjggMTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuY3BwCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSAiREZHU2FuZVN0cmluZ0dldEJ5
VmFsU2xvd1BhdGhHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJERkdTbG93UGF0aEdlbmVyYXRvci5o
IgogI2luY2x1ZGUgIkRpcmVjdEFyZ3VtZW50cy5oIgorI2luY2x1ZGUgIkdlbmVyYXRvckZyYW1l
LmgiCiAjaW5jbHVkZSAiSklUQWRkR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiSklUQml0QW5kR2Vu
ZXJhdG9yLmgiCiAjaW5jbHVkZSAiSklUQml0T3JHZW5lcmF0b3IuaCIKQEAgLTYzNzgsNiArNjM3
OSwyOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3U3RyaW5nT2JqZWN0KE5vZGUq
IG5vZGUpCiAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogfQogCit2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlTmV3R2VuZXJhdG9yRnJhbWUoTm9kZSogbm9kZSkKK3sKKyAgICBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGds
b2JhbE9iamVjdC0+Z2VuZXJhdG9yRnJhbWVTdHJ1Y3R1cmUoKTsKKworICAgIEdQUlRlbXBvcmFy
eSByZXN1bHQodGhpcyk7CisgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2gxKHRoaXMpOworICAgIEdQ
UlRlbXBvcmFyeSBzY3JhdGNoMih0aGlzKTsKKworICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1
bHQuZ3ByKCk7CisgICAgR1BSUmVnIHNjcmF0Y2gxR1BSID0gc2NyYXRjaDEuZ3ByKCk7CisgICAg
R1BSUmVnIHNjcmF0Y2gyR1BSID0gc2NyYXRjaDIuZ3ByKCk7CisKKyAgICBKSVRDb21waWxlcjo6
SnVtcExpc3Qgc2xvd1BhdGg7CisKKyAgICBlbWl0QWxsb2NhdGVKU09iamVjdFdpdGhLbm93blNp
emU8R2VuZXJhdG9yRnJhbWU+KHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpLCBU
cnVzdGVkSW1tUHRyKG51bGxwdHIpLCBzY3JhdGNoMUdQUiwgc2NyYXRjaDJHUFIsIHNsb3dQYXRo
LCBHZW5lcmF0b3JGcmFtZTo6YWxsb2NhdGlvblNpemVGb3JMb2NhbHMobm9kZS0+Z2VuZXJhdG9y
RnJhbWVTaXplKCkpKTsKKyAgICBtX2ppdC5zdG9yZTMyKFRydXN0ZWRJbW0zMigwKSwgSklUQ29t
cGlsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBHZW5lcmF0b3JGcmFtZTo6bnVtYmVyT2ZTYXZlZENh
bGxlZUxvY2Fsc09mZnNldCgpKSk7CisKKyAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0
aENhbGwoc2xvd1BhdGgsIHRoaXMsIG9wZXJhdGlvbk5ld0dlbmVyYXRvckZyYW1lLCByZXN1bHRH
UFIsIHN0cnVjdHVyZSwgbm9kZS0+Z2VuZXJhdG9yRnJhbWVTaXplKCkpKTsKKworICAgIGNlbGxS
ZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKK30KKwogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZU5ld1R5cGVkQXJyYXkoTm9kZSogbm9kZSkKIHsKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0ID0gbV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaApp
bmRleCA1MzEyYzhkYmVkZmVkMTgwMDU0MzgxMTMwNzllZWIwYjBlOTkwOGFiLi41NzM5ODE1Nzhm
MjRmNWIzMDI1OWYyYWMwMjU1MmZkNDA4ZmU3YWUwIDEwMDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCkBAIC0yMjgxLDYgKzIyODEsNyBAQCBjbGFzcyBT
cGVjdWxhdGl2ZUpJVCB7CiAgICAgdm9pZCBjb21waWxlUHV0QnlWYWxGb3JGbG9hdFR5cGVkQXJy
YXkoR1BSUmVnIGJhc2UsIEdQUlJlZyBwcm9wZXJ0eSwgTm9kZSosIFR5cGVkQXJyYXlUeXBlKTsK
ICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2xhc3NUeXBlPiB2b2lkIGNvbXBpbGVOZXdGdW5jdGlv
bkNvbW1vbihHUFJSZWcsIFN0cnVjdHVyZSosIEdQUlJlZywgR1BSUmVnLCBHUFJSZWcsIE1hY3Jv
QXNzZW1ibGVyOjpKdW1wTGlzdCYsIHNpemVfdCwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgcHRyZGlm
Zl90LCBwdHJkaWZmX3QsIHB0cmRpZmZfdCk7CiAgICAgdm9pZCBjb21waWxlTmV3RnVuY3Rpb24o
Tm9kZSopOworICAgIHZvaWQgY29tcGlsZU5ld0dlbmVyYXRvckZyYW1lKE5vZGUqKTsKICAgICB2
b2lkIGNvbXBpbGVGb3J3YXJkVmFyYXJncyhOb2RlKik7CiAgICAgdm9pZCBjb21waWxlQ3JlYXRl
QWN0aXZhdGlvbihOb2RlKik7CiAgICAgdm9pZCBjb21waWxlQ3JlYXRlRGlyZWN0QXJndW1lbnRz
KE5vZGUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklUMzJfNjQuY3BwCmluZGV4IDEyZWI1MDQxMTgwYWMyZjUwMTY0Zjk1MWIwNThlZGI2MmQy
MjgyNzAuLjMxMDNhZDU5ZmYyMDQxYTc0ZDEyZWE4YjgzYWMxNzczM2VmN2M2ZTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNw
cApAQCAtMzY1MCw2ICszNjUwLDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9k
ZSogbm9kZSkKICAgICAgICAgY2VsbFJlc3VsdChyZXN1bHRQYXlsb2FkLmdwcigpLCBub2RlKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgfQorCisgICAgY2FzZSBOZXdHZW5lcmF0b3JGcmFtZTogewor
ICAgICAgICBjb21waWxlTmV3R2VuZXJhdG9yRnJhbWUobm9kZSk7CisgICAgICAgIGJyZWFrOwor
ICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBUb1RoaXM6IHsKICAgICAgICAgQVNTRVJUKG5vZGUt
PmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4IGU3NDU2OTQwNGMxYjk3
ODQ4MDYxOTdkMTQ1NDVjZDFkYjIzZDdhNWMuLjg5NDAyZjFlMzY4MjM5ODc4MDUxOTc0NmQ0YmE3
MWY0NmQxZTdmMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVDY0LmNwcApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIkRGR1Nsb3dQYXRo
R2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiRGVidWdnZXIuaCIKICNpbmNsdWRlICJEaXJlY3RBcmd1
bWVudHMuaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JGcmFtZS5oIgogI2luY2x1ZGUgIkdldHRlclNl
dHRlci5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU0Vudmlyb25tZW50
UmVjb3JkLmgiCkBAIC0zNjg4LDYgKzM2ODksMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZShOb2RlKiBub2RlKQogICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9kZSk7
CiAgICAgICAgIGJyZWFrOwogICAgIH0KKworICAgIGNhc2UgTmV3R2VuZXJhdG9yRnJhbWU6IHsK
KyAgICAgICAgY29tcGlsZU5ld0dlbmVyYXRvckZyYW1lKG5vZGUpOworICAgICAgICBicmVhazsK
KyAgICB9CiAgICAgICAgIAogICAgIGNhc2UgVG9UaGlzOiB7CiAgICAgICAgIEFTU0VSVChub2Rl
LT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSk7CkBAIC00NzIwLDYgKzQ3MjYsMzgg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBjZWxs
UmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KKyAgICBjYXNl
IFNldEdlbmVyYXRvckxvY2FsOiB7CisgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGZyYW1l
KHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhp
cywgbm9kZS0+Y2hpbGQyKCkpOworCisgICAgICAgIEdQUlJlZyBmcmFtZUdQUiA9IGZyYW1lLmdw
cigpOworICAgICAgICBHUFJSZWcgdmFsdWVHUFIgPSB2YWx1ZS5ncHIoKTsKKyAgICAgICAgdW5z
aWduZWQgZ2VuZXJhdG9yRnJhbWVJbmRleCA9IG5vZGUtPmdlbmVyYXRvckZyYW1lSW5kZXgoKTsK
KworICAgICAgICBtX2ppdC5zdG9yZTY0KHZhbHVlR1BSLCBKSVRDb21waWxlcjo6QWRkcmVzcyhm
cmFtZUdQUiwgR2VuZXJhdG9yRnJhbWU6OmxvY2FsT2Zmc2V0KGdlbmVyYXRvckZyYW1lSW5kZXgp
KSk7CisKKyAgICAgICAgbm9SZXN1bHQobm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAg
ICBjYXNlIEdldEdlbmVyYXRvckxvY2FsOiB7CisgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5k
IGZyYW1lKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3Vs
dCh0aGlzKTsKKworICAgICAgICBHUFJSZWcgZnJhbWVHUFIgPSBmcmFtZS5ncHIoKTsKKyAgICAg
ICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKyAgICAgICAgdW5zaWduZWQgZ2Vu
ZXJhdG9yRnJhbWVJbmRleCA9IG5vZGUtPmdlbmVyYXRvckZyYW1lSW5kZXgoKTsKKworICAgICAg
ICBtX2ppdC5sb2FkNjQoSklUQ29tcGlsZXI6OkFkZHJlc3MoZnJhbWVHUFIsIEdlbmVyYXRvckZy
YW1lOjpsb2NhbE9mZnNldChnZW5lcmF0b3JGcmFtZUluZGV4KSksIHJlc3VsdEdQUik7CisgICAg
ICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAg
fQorICAgIGNhc2UgUHV0R2VuZXJhdG9yRnJhbWVMb2NhbHM6IHsKKyAgICAgICAgU3BlY3VsYXRl
Q2VsbE9wZXJhbmQgZnJhbWUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBHUFJSZWcg
ZnJhbWVHUFIgPSBmcmFtZS5ncHIoKTsKKyAgICAgICAgbV9qaXQuc3RvcmUzMihUcnVzdGVkSW1t
MzIobm9kZS0+Z2VuZXJhdG9yRnJhbWVMb2NhbHMoKSksIEpJVENvbXBpbGVyOjpBZGRyZXNzKGZy
YW1lR1BSLCBHZW5lcmF0b3JGcmFtZTo6bnVtYmVyT2ZTYXZlZENhbGxlZUxvY2Fsc09mZnNldCgp
KSk7CisgICAgICAgIG5vUmVzdWx0KG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CiAgICAg
Y2FzZSBQcm9maWxlVHlwZTogewogICAgICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBu
b2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoMSh0aGlzKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0
aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJ
bnNlcnRpb25QaGFzZS5jcHAKaW5kZXggNzJmMjIwMGNlYTEwYjk4MTBkYmE4YzdiMTlmZWZmMjRk
YWE1ZGFlMy4uZDdjNzA1NjZmYzczN2Y4OTBmMTU2YjUzNDUwOWQ5YTBjMDczOGU5YiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25Q
aGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJ
bnNlcnRpb25QaGFzZS5jcHAKQEAgLTI4MSw2ICsyODEsMTEgQEAgY2xhc3MgU3RvcmVCYXJyaWVy
SW5zZXJ0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgICAgIGNvbnNpZGVy
QmFycmllcihtX25vZGUtPmNoaWxkMSgpLCBtX25vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgY2FzZSBTZXRHZW5lcmF0
b3JMb2NhbDogeworICAgICAgICAgICAgICAgIGNvbnNpZGVyQmFycmllcihtX25vZGUtPmNoaWxk
MSgpLCBtX25vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CkBAIC0yOTYsNiArMzAxLDcgQEAgY2xhc3MgU3RvcmVCYXJyaWVySW5zZXJ0
aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgY2FzZSBOZXdBcnJheUJ1ZmZl
cjoKICAgICAgICAgICAgIGNhc2UgTmV3VHlwZWRBcnJheToKICAgICAgICAgICAgIGNhc2UgTmV3
UmVnZXhwOgorICAgICAgICAgICAgY2FzZSBOZXdHZW5lcmF0b3JGcmFtZToKICAgICAgICAgICAg
IGNhc2UgTWF0ZXJpYWxpemVOZXdPYmplY3Q6CiAgICAgICAgICAgICBjYXNlIE1hdGVyaWFsaXpl
Q3JlYXRlQWN0aXZhdGlvbjoKICAgICAgICAgICAgIGNhc2UgTmV3U3RyaW5nT2JqZWN0OgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVSZWdpc3RyYXRp
b25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVjdHVyZVJlZ2lz
dHJhdGlvblBoYXNlLmNwcAppbmRleCAyYzA1NTk4NDk4OTliZGY2ZmIxMTE3NTk3ZTEwNTRiZmYz
NTQ2NjkzLi5lMWFlZjBiMmMzOTNmNTYxOTQ4Y2NhNWE5NTlmMmUwNzEwODg0Mzg4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBo
YXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVjdHVyZVJlZ2lz
dHJhdGlvblBoYXNlLmNwcApAQCAtMTQ5LDYgKzE0OSw5IEBAIGNsYXNzIFN0cnVjdHVyZVJlZ2lz
dHJhdGlvblBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgICAgICBjYXNlIE5ld0dl
bmVyYXRvckZ1bmN0aW9uOgogICAgICAgICAgICAgICAgICAgICByZWdpc3RlclN0cnVjdHVyZSht
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5nZW5lcmF0b3JG
dW5jdGlvblN0cnVjdHVyZSgpKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgICAgY2FzZSBOZXdHZW5lcmF0b3JGcmFtZToKKyAgICAgICAgICAgICAgICAgICAgcmVn
aXN0ZXJTdHJ1Y3R1cmUobV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKS0+Z2VuZXJhdG9yRnJhbWVTdHJ1Y3R1cmUoKSk7CisgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAg
ICAgICAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwCmluZGV4IDk3YzA3ODRiYjQyYmM5
MTlkMDZjZjUyM2M0MWUwMjQ2YTUzNTFkOTEuLjY5ZDg5ZDZhZDQyNTQ5MjNiYzNmYWIzYzdhY2Ey
MDg5NWM1NWU1Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJz
dHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcApAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVk
ZSAiRGlyZWN0QXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiRlRMQWJicmV2aWF0aW9ucy5oIgorI2lu
Y2x1ZGUgIkdlbmVyYXRvckZyYW1lLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5j
bHVkZSAiSlNFbnZpcm9ubWVudFJlY29yZC5oIgogI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1lRW51
bWVyYXRvci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0
cmFjdEhlYXBSZXBvc2l0b3J5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3Ry
YWN0SGVhcFJlcG9zaXRvcnkuaAppbmRleCA3N2U1Nzk4Njk0MGM2YWM5NmY4N2YxZjk0NWM0NjI1
MTI4ODYzMGYwLi5hMzYyMWE0MTU3ZWU3MjM2ZWY1NjZjZmVhZjA0Mjg0YmEyMTczMjkxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRv
cnkuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9z
aXRvcnkuaApAQCAtNDcsNiArNDcsNyBAQAogICAgIG1hY3JvKERpcmVjdEFyZ3VtZW50c19sZW5n
dGgsIERpcmVjdEFyZ3VtZW50czo6b2Zmc2V0T2ZMZW5ndGgoKSkgXAogICAgIG1hY3JvKERpcmVj
dEFyZ3VtZW50c19taW5DYXBhY2l0eSwgRGlyZWN0QXJndW1lbnRzOjpvZmZzZXRPZk1pbkNhcGFj
aXR5KCkpIFwKICAgICBtYWNybyhEaXJlY3RBcmd1bWVudHNfb3ZlcnJpZGVzLCBEaXJlY3RBcmd1
bWVudHM6Om9mZnNldE9mT3ZlcnJpZGVzKCkpIFwKKyAgICBtYWNybyhHZW5lcmF0b3JGcmFtZV9u
dW1iZXJPZlNhdmVkQ2FsbGVlTG9jYWxzLCBHZW5lcmF0b3JGcmFtZTo6bnVtYmVyT2ZTYXZlZENh
bGxlZUxvY2Fsc09mZnNldCgpKSBcCiAgICAgbWFjcm8oR2V0dGVyU2V0dGVyX2dldHRlciwgR2V0
dGVyU2V0dGVyOjpvZmZzZXRPZkdldHRlcigpKSBcCiAgICAgbWFjcm8oR2V0dGVyU2V0dGVyX3Nl
dHRlciwgR2V0dGVyU2V0dGVyOjpvZmZzZXRPZlNldHRlcigpKSBcCiAgICAgbWFjcm8oSlNBcnJh
eUJ1ZmZlclZpZXdfbGVuZ3RoLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSkg
XApAQCAtOTEsNiArOTIsNyBAQAogCiAjZGVmaW5lIEZPUl9FQUNIX0lOREVYRURfQUJTVFJBQ1Rf
SEVBUChtYWNybykgXAogICAgIG1hY3JvKERpcmVjdEFyZ3VtZW50c19zdG9yYWdlLCBEaXJlY3RB
cmd1bWVudHM6OnN0b3JhZ2VPZmZzZXQoKSwgc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSkgXAorICAg
IG1hY3JvKEdlbmVyYXRvckZyYW1lX2NhbGxlZUxvY2FscywgR2VuZXJhdG9yRnJhbWU6Om9mZnNl
dE9mTG9jYWxzKCksIHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pKSBcCiAgICAgbWFjcm8o
SlNFbnZpcm9ubWVudFJlY29yZF92YXJpYWJsZXMsIEpTRW52aXJvbm1lbnRSZWNvcmQ6Om9mZnNl
dE9mVmFyaWFibGVzKCksIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkpIFwKICAgICBtYWNybyhKU1By
b3BlcnR5TmFtZUVudW1lcmF0b3JfY2FjaGVkUHJvcGVydHlOYW1lc1ZlY3RvckNvbnRlbnRzLCAw
LCBzaXplb2YoV3JpdGVCYXJyaWVyPEpTU3RyaW5nPikpIFwKICAgICBtYWNybyhKU1JvcGVTdHJp
bmdfZmliZXJzLCBKU1JvcGVTdHJpbmc6Om9mZnNldE9mRmliZXJzKCksIHNpemVvZihXcml0ZUJh
cnJpZXI8SlNTdHJpbmc+KSkgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBh
YmlsaXRpZXMuY3BwCmluZGV4IGQyYTQ5MGMyYTY3ZTZkYjhiOWE1YTc5NjY0ZTU2NWUzZDZkOTUx
ZGMuLjE3YjRlMmRiNWY2YTFjYzAwM2Y4ODBjN2VhNGM2MDBhYjhhYzg2NzggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKQEAgLTcyLDYgKzcyLDcg
QEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2Fz
ZSBOZXdPYmplY3Q6CiAgICAgY2FzZSBOZXdBcnJheToKICAgICBjYXNlIE5ld0FycmF5QnVmZmVy
OgorICAgIGNhc2UgTmV3R2VuZXJhdG9yRnJhbWU6CiAgICAgY2FzZSBHZXRCeU9mZnNldDoKICAg
ICBjYXNlIEdldEdldHRlclNldHRlckJ5T2Zmc2V0OgogICAgIGNhc2UgR2V0R2V0dGVyOgpAQCAt
MjE2LDYgKzIxNyw5IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiBu
b2RlKQogICAgIGNhc2UgUHV0U2V0dGVyQnlWYWw6CiAgICAgY2FzZSBDb3B5UmVzdDoKICAgICBj
YXNlIEdldFJlc3RMZW5ndGg6CisgICAgY2FzZSBTZXRHZW5lcmF0b3JMb2NhbDoKKyAgICBjYXNl
IEdldEdlbmVyYXRvckxvY2FsOgorICAgIGNhc2UgUHV0R2VuZXJhdG9yRnJhbWVMb2NhbHM6CiAg
ICAgICAgIC8vIFRoZXNlIGFyZSBPSy4KICAgICAgICAgYnJlYWs7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAKaW5kZXggMzdjYWU1YzE3YWQ5
YzcxZDAxOGQ0MWJiNmU5YTY2YzkxNzc5NjZmMi4uODdjNmMzOWQyOWM5YjYyMzJkNTM5MjcwYjZm
YmM2ZmU4MGI3MGY3MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExM
b3dlckRGR1RvTExWTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dl
ckRGR1RvTExWTS5jcHAKQEAgLTUzLDYgKzUzLDcgQEAKICNpbmNsdWRlICJGVExQYXRjaHBvaW50
RXhjZXB0aW9uSGFuZGxlLmgiCiAjaW5jbHVkZSAiRlRMVGh1bmtzLmgiCiAjaW5jbHVkZSAiRlRM
V2VpZ2h0ZWRUYXJnZXQuaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JGcmFtZS5oIgogI2luY2x1ZGUg
IkpJVEFkZEdlbmVyYXRvci5oIgogI2luY2x1ZGUgIkpJVEJpdEFuZEdlbmVyYXRvci5oIgogI2lu
Y2x1ZGUgIkpJVEJpdE9yR2VuZXJhdG9yLmgiCkBAIC04MzksNiArODQwLDkgQEAgY2xhc3MgTG93
ZXJERkdUb0xMVk0gewogICAgICAgICBjYXNlIE5ld0FycmF5V2l0aFNpemU6CiAgICAgICAgICAg
ICBjb21waWxlTmV3QXJyYXlXaXRoU2l6ZSgpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgTmV3R2VuZXJhdG9yRnJhbWU6CisgICAgICAgICAgICBjb21waWxlTmV3R2VuZXJhdG9y
RnJhbWUoKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEdldFR5cGVkQXJyYXlC
eXRlT2Zmc2V0OgogICAgICAgICAgICAgY29tcGlsZUdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0KCk7
CiAgICAgICAgICAgICBicmVhazsKQEAgLTEwNzEsNiArMTA3NSwxNSBAQCBjbGFzcyBMb3dlckRG
R1RvTExWTSB7CiAgICAgICAgIGNhc2UgR2V0UmVzdExlbmd0aDoKICAgICAgICAgICAgIGNvbXBp
bGVHZXRSZXN0TGVuZ3RoKCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBQdXRH
ZW5lcmF0b3JGcmFtZUxvY2FsczoKKyAgICAgICAgICAgIGNvbXBpbGVQdXRHZW5lcmF0b3JGcmFt
ZUxvY2FscygpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU2V0R2VuZXJhdG9y
TG9jYWw6CisgICAgICAgICAgICBjb21waWxlU2V0R2VuZXJhdG9yTG9jYWwoKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIEdldEdlbmVyYXRvckxvY2FsOgorICAgICAgICAgICAg
Y29tcGlsZUdldEdlbmVyYXRvckxvY2FsKCk7CisgICAgICAgICAgICBicmVhazsKIAogICAgICAg
ICBjYXNlIFBoYW50b21Mb2NhbDoKICAgICAgICAgY2FzZSBMb29wSGludDoKQEAgLTM5MTYsNiAr
MzkyOSwyOCBAQCBjbGFzcyBMb3dlckRGR1RvTExWTSB7CiAgICAgICAgIG1fb3V0LmFwcGVuZFRv
KGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOwogICAgICAgICBzZXRJbnQzMihtX291dC5waGkobV9v
dXQuaW50MzIsIHplcm9MZW5ndGhSZXN1bHQsIG5vblplcm9MZW5ndGhSZXN1bHQpKTsKICAgICB9
CisKKyAgICB2b2lkIGNvbXBpbGVQdXRHZW5lcmF0b3JGcmFtZUxvY2FscygpCisgICAgeworICAg
ICAgICBMVmFsdWUgZnJhbWUgPSBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBt
X291dC5zdG9yZTMyKG1fb3V0LmNvbnN0SW50MzIobV9ub2RlLT5nZW5lcmF0b3JGcmFtZUxvY2Fs
cygpKSwgZnJhbWUsIG1faGVhcHMuR2VuZXJhdG9yRnJhbWVfbnVtYmVyT2ZTYXZlZENhbGxlZUxv
Y2Fscyk7CisgICAgfQorCisgICAgdm9pZCBjb21waWxlU2V0R2VuZXJhdG9yTG9jYWwoKQorICAg
IHsKKyAgICAgICAgbV9vdXQuc3RvcmU2NCgKKyAgICAgICAgICAgIGxvd0pTVmFsdWUobV9ub2Rl
LT5jaGlsZDIoKSksCisgICAgICAgICAgICBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpLAorICAg
ICAgICAgICAgbV9oZWFwcy5HZW5lcmF0b3JGcmFtZV9jYWxsZWVMb2NhbHNbbV9ub2RlLT5nZW5l
cmF0b3JGcmFtZUluZGV4KCldKTsKKyAgICB9CisKKyAgICB2b2lkIGNvbXBpbGVHZXRHZW5lcmF0
b3JMb2NhbCgpCisgICAgeworICAgICAgICBzZXRKU1ZhbHVlKAorICAgICAgICAgICAgbV9vdXQu
bG9hZDY0KAorICAgICAgICAgICAgICAgIGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSksCisgICAg
ICAgICAgICAgICAgbV9oZWFwcy5HZW5lcmF0b3JGcmFtZV9jYWxsZWVMb2NhbHNbbV9ub2RlLT5n
ZW5lcmF0b3JGcmFtZUluZGV4KCldKSk7CisgICAgfQogICAgIAogICAgIHZvaWQgY29tcGlsZU5l
d09iamVjdCgpCiAgICAgewpAQCAtNDE1MCw2ICs0MTg1LDM2IEBAIGNsYXNzIExvd2VyREZHVG9M
TFZNIHsKICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKHN0cnVjdHVyZSkpOwogICAgICAg
ICBzZXRKU1ZhbHVlKHZtQ2FsbChtX291dC5pbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlv
bk5ld0FycmF5V2l0aFNpemUpLCBtX2NhbGxGcmFtZSwgc3RydWN0dXJlVmFsdWUsIHB1YmxpY0xl
bmd0aCkpOwogICAgIH0KKworICAgIHZvaWQgY29tcGlsZU5ld0dlbmVyYXRvckZyYW1lKCkKKyAg
ICB7CisgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgIFN0cnVjdHVyZSog
c3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT5nZW5lcmF0b3JGcmFtZVN0cnVjdHVyZSgpOworCisg
ICAgICAgIExCYXNpY0Jsb2NrIHNsb3dQYXRoID0gRlRMX05FV19CTE9DSyhtX291dCwgKCJOZXdH
ZW5lcmF0b3JGcmFtZSBzbG93IHBhdGgiKSk7CisgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVh
dGlvbiA9IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgiTmV3R2VuZXJhdG9yRnJhbWUgY29udGludWF0
aW9uIikpOworCisgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuaW5zZXJ0TmV3
QmxvY2tzQmVmb3JlKHNsb3dQYXRoKTsKKyAgICAgICAgTFZhbHVlIGZhc3RPYmplY3QgPSBhbGxv
Y2F0ZU9iamVjdDxHZW5lcmF0b3JGcmFtZT4oR2VuZXJhdG9yRnJhbWU6OmFsbG9jYXRpb25TaXpl
Rm9yTG9jYWxzKG1fbm9kZS0+Z2VuZXJhdG9yRnJhbWVTaXplKCkpLCBzdHJ1Y3R1cmUsIG1fb3V0
LmludFB0clplcm8sIHNsb3dQYXRoKTsKKyAgICAgICAgbV9vdXQuc3RvcmUzMihtX291dC5jb25z
dEludDMyKDApLCBmYXN0T2JqZWN0LCBtX2hlYXBzLkdlbmVyYXRvckZyYW1lX251bWJlck9mU2F2
ZWRDYWxsZWVMb2NhbHMpOworICAgICAgICBWYWx1ZUZyb21CbG9jayBmYXN0UmVzdWx0ID0gbV9v
dXQuYW5jaG9yKGZhc3RPYmplY3QpOworICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7
CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oc2xvd1BhdGgsIGNvbnRpbnVhdGlvbik7CisgICAg
ICAgIFZlY3RvcjxMVmFsdWU+IHNsb3dQYXRoQXJndW1lbnRzOworICAgICAgICB1bnNpZ25lZCBn
ZW5lcmF0b3JGcmFtZVNpemUgPSBtX25vZGUtPmdlbmVyYXRvckZyYW1lU2l6ZSgpOworICAgICAg
ICBMVmFsdWUgY2FsbFJlc3VsdCA9IGxhenlTbG93UGF0aCgKKyAgICAgICAgICAgIFs9XSAoY29u
c3QgVmVjdG9yPExvY2F0aW9uPiYgbG9jYXRpb25zKSAtPiBSZWZQdHI8TGF6eVNsb3dQYXRoOjpH
ZW5lcmF0b3I+IHsKKyAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlTGF6eUNhbGxHZW5lcmF0
b3IoCisgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbk5ld0dlbmVyYXRvckZyYW1lLAorICAg
ICAgICAgICAgICAgICAgICBsb2NhdGlvbnNbMF0uZGlyZWN0R1BSKCksIENDYWxsSGVscGVyczo6
VHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihnZW5l
cmF0b3JGcmFtZVNpemUpKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICBWYWx1ZUZyb21CbG9j
ayBzbG93UmVzdWx0ID0gbV9vdXQuYW5jaG9yKGNhbGxSZXN1bHQpOworICAgICAgICBtX291dC5q
dW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9u
LCBsYXN0TmV4dCk7CisgICAgICAgIHNldEpTVmFsdWUobV9vdXQucGhpKG1fb3V0LmludFB0ciwg
ZmFzdFJlc3VsdCwgc2xvd1Jlc3VsdCkpOworICAgIH0KICAgICAKICAgICB2b2lkIGNvbXBpbGVB
bGxvY2F0ZVByb3BlcnR5U3RvcmFnZSgpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3Bw
CmluZGV4IGEzYmRmYTdjZDVkMGY1NzI0N2YxYmU4YzQwYjI1MTBkMjlkODAwZmYuLjQ5ZDI5OWZm
NTZkYjMzZTAyZDcyYjAwYThlZTI5YjUzYjQ3NzBkYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VC5jcHAKQEAgLTIxNyw2ICsyMTcsOSBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFz
cygpCiAgICAgICAgIERFRklORV9PUChvcF9hc3NlcnQpCiAgICAgICAgIERFRklORV9PUChvcF9z
YXZlKQogICAgICAgICBERUZJTkVfT1Aob3BfcmVzdW1lKQorICAgICAgICBERUZJTkVfT1Aob3Bf
bmV3X2dlbmVyYXRvcl9mcmFtZSkKKyAgICAgICAgREVGSU5FX09QKG9wX3Jlc3VtZV9mcm9tX2dl
bmVyYXRvcl9mcmFtZSkKKyAgICAgICAgREVGSU5FX09QKG9wX2NsZWFyX2dlbmVyYXRvcl9mcmFt
ZSkKICAgICAgICAgREVGSU5FX09QKG9wX2RlYnVnKQogICAgICAgICBERUZJTkVfT1Aob3BfZGVs
X2J5X2lkKQogICAgICAgICBERUZJTkVfT1Aob3BfZGl2KQpAQCAtMjg5LDYgKzI5Miw3IEBAIHZv
aWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgREVGSU5FX09QKG9wX3B1
dF9nZXR0ZXJfc2V0dGVyX2J5X2lkKQogICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2dldHRlcl9i
eV92YWwpCiAgICAgICAgIERFRklORV9PUChvcF9wdXRfc2V0dGVyX2J5X3ZhbCkKKyAgICAgICAg
REVGSU5FX09QKG9wX25vcCkKIAogICAgICAgICBERUZJTkVfT1Aob3BfcmV0KQogICAgICAgICBE
RUZJTkVfT1Aob3BfcnNoaWZ0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKaW5kZXggZGY3YjNkYzVl
ODkyMGVlNGVmOTJiY2FjYmFlZmYxYjRjMDBkOTM2OS4uODUzMjMyYmM2ZGUzODdiOWNiOGNjNzIx
MTk3YTc0MWJlYTQ0Y2ZlOCAxMDA3NTUKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCkBAIC00OTYsNiArNDk2
LDkgQEAKICAgICAgICAgdm9pZCBlbWl0X29wX2Fzc2VydChJbnN0cnVjdGlvbiopOwogICAgICAg
ICB2b2lkIGVtaXRfb3Bfc2F2ZShJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3Bf
cmVzdW1lKEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9yZXN1bWVfZnJvbV9n
ZW5lcmF0b3JfZnJhbWUoSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX2NsZWFy
X2dlbmVyYXRvcl9mcmFtZShJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfbmV3
X2dlbmVyYXRvcl9mcmFtZShJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZGVi
dWcoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2RlbF9ieV9pZChJbnN0cnVj
dGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZGl2KEluc3RydWN0aW9uKik7CkBAIC01OTUs
NiArNTk4LDcgQEAKICAgICAgICAgdm9pZCBlbWl0X29wX2VudW1lcmF0b3Jfc3RydWN0dXJlX3Bu
YW1lKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9lbnVtZXJhdG9yX2dlbmVy
aWNfcG5hbWUoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX3RvX2luZGV4X3N0
cmluZyhJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3Bfbm9wKEluc3RydWN0aW9u
Kik7CiAKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9hZGQoSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8
U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfYml0
YW5kKEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKaW5kZXggNzM4Y2I2M2ZlZDkxYjQ5
ODU1ZDVkMDMzZDQ2MzM0NWZkZDQ3NmQ5Yi4uMjUwYmQ3MGFkZWY3M2NiODI5MTc2YTVhM2E4YTQy
MTg1MzAzMmQzMSAxMDA3NTUKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNv
ZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCkBA
IC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiQ29waWVkU3BhY2VJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiRGVidWdnZXIuaCIKICNpbmNsdWRlICJFeGNlcHRpb24uaCIKKyNpbmNsdWRlICJHZW5lcmF0
b3JGcmFtZS5oIgogI2luY2x1ZGUgIkhlYXAuaCIKICNpbmNsdWRlICJKSVRJbmxpbmVzLmgiCiAj
aW5jbHVkZSAiSlNBcnJheS5oIgpAQCAtODkzLDYgKzg5NCwyMyBAQCB2b2lkIEpJVDo6ZW1pdFNs
b3dfb3BfdG9fc3RyaW5nKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxT
bG93Q2FzZQogICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CiB9CiAKK3ZvaWQgSklUOjplbWl0X29w
X3Jlc3VtZV9mcm9tX2dlbmVyYXRvcl9mcmFtZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQoreworICAgIGludCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwor
ICAgIGludCBmcmFtZSA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7CisgICAgdW5z
aWduZWQgaW5kZXggPSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS51bnNpZ25lZFZhbHVlOworICAg
IGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoZnJhbWUsIHJlZ1QxKTsKKyAgICBsb2FkNjQoQWRkcmVz
cyhyZWdUMSwgR2VuZXJhdG9yRnJhbWU6OmxvY2FsT2Zmc2V0KGluZGV4KSksIHJlZ1QwKTsKKyAg
ICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCk7Cit9CisKK3ZvaWQgSklUOjplbWl0X29wX2Ns
ZWFyX2dlbmVyYXRvcl9mcmFtZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQorewor
ICAgIGludCBmcmFtZSA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CisgICAgZW1p
dEdldFZpcnR1YWxSZWdpc3RlcihmcmFtZSwgcmVnVDEpOworICAgIHN0b3JlMzIoVHJ1c3RlZElt
bTMyKDApLCBBZGRyZXNzKHJlZ1QxLCBHZW5lcmF0b3JGcmFtZTo6bnVtYmVyT2ZTYXZlZENhbGxl
ZUxvY2Fsc09mZnNldCgpKSk7Cit9CisKICNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KQogCiB2b2lk
IEpJVDo6ZW1pdF9vcF9sb29wX2hpbnQoSW5zdHJ1Y3Rpb24qKQpAQCAtMTQ0MSw2ICsxNDU5LDE2
IEBAIHZvaWQgSklUOjplbWl0X29wX3Jlc3VtZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQogICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CiB9CiAKK3ZvaWQgSklUOjplbWl0X29wX25l
d19nZW5lcmF0b3JfZnJhbWUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAg
ICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwg
c2xvd19wYXRoX25ld19nZW5lcmF0b3JfZnJhbWUpOworICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7
Cit9CisKK3ZvaWQgSklUOjplbWl0X29wX25vcChJbnN0cnVjdGlvbiopCit7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKaW5kZXggMmI0
ZTYxOTg2ZDMxMmFjOWU0Zjg3MzczY2U3YWEwYjlmZDBjZTc1YS4uYWZlMDk2ODQ4OGY0NmQxNjc1
YzkxN2VjYjJiNjIwYzAwNTYxMjI0NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNp
bmNsdWRlICJEaXJlY3RBcmd1bWVudHMuaCIKICNpbmNsdWRlICJFeGNlcHRpb24uaCIKICNpbmNs
dWRlICJFeGVjdXRhYmxlLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yRnJhbWUuaCIKICNpbmNsdWRl
ICJIZWFwLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKU0FycmF5Lmgi
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlci5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
ci5hc20KaW5kZXggY2Q0Y2U5MDYzYjE5NTc1YTk1N2UzY2EzZTIyYmU1NzkxNWJkYjU5YS4uNDcz
NTdiNjEyZGNlYTE1MTk4MTViMGVkYjJlNDJhMGMxYzJiOWZiNSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQpAQCAtMTY1LDYg
KzE2NSw3IEBAIGNvbnN0IFNsb3RTaXplID0gOAogCiBjb25zdCBKU0Vudmlyb25tZW50UmVjb3Jk
X3ZhcmlhYmxlcyA9IChzaXplb2YgSlNFbnZpcm9ubWVudFJlY29yZCArIFNsb3RTaXplIC0gMSkg
JiB+KFNsb3RTaXplIC0gMSkKIGNvbnN0IERpcmVjdEFyZ3VtZW50c19zdG9yYWdlID0gKHNpemVv
ZiBEaXJlY3RBcmd1bWVudHMgKyBTbG90U2l6ZSAtIDEpICYgfihTbG90U2l6ZSAtIDEpCitjb25z
dCBHZW5lcmF0b3JGcmFtZV9jYWxsZWVMb2NhbHMgPSAoc2l6ZW9mIEdlbmVyYXRvckZyYW1lICsg
U2xvdFNpemUgLSAxKSAmIH4oU2xvdFNpemUgLSAxKQogCiBjb25zdCBTdGFja0FsaWdubWVudCA9
IDE2CiBjb25zdCBTdGFja0FsaWdubWVudFNsb3RzID0gMgpAQCAtMTI1Niw2ICsxMjU3LDEyIEBA
IF9sbGludF9vcF9uZXdfcmVnZXhwOgogICAgIGRpc3BhdGNoKDMpCiAKIAorX2xsaW50X29wX25l
d19nZW5lcmF0b3JfZnJhbWU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxTbG93UGF0
aChfc2xvd19wYXRoX25ld19nZW5lcmF0b3JfZnJhbWUpCisgICAgZGlzcGF0Y2goMykKKworCiBf
bGxpbnRfb3BfbGVzczoKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgY2FsbFNsb3dQYXRoKF9z
bG93X3BhdGhfbGVzcykKQEAgLTE1OTgsNyArMTYwNSw3IEBAIF9sbGludF9vcF9zYXZlOgogX2xs
aW50X29wX3Jlc3VtZToKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgY2FsbFNsb3dQYXRoKF9z
bG93X3BhdGhfcmVzdW1lKQotICAgIGRpc3BhdGNoKDMpCisgICAgZGlzcGF0Y2goNCkKIAogCiBf
bGxpbnRfb3BfY3JlYXRlX2xleGljYWxfZW52aXJvbm1lbnQ6CkBAIC0xNzA4LDYgKzE3MTUsMTAg
QEAgX2xsaW50X29wX2NvcHlfcmVzdDoKICAgICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF9jb3B5
X3Jlc3QpCiAgICAgZGlzcGF0Y2goNCkKIAorX2xsaW50X29wX25vcDoKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgZGlzcGF0Y2goMSkKKwogCiAjIExhc3RseSwgbWFrZSBzdXJlIHRoYXQgd2Ug
Y2FuIGxpbmsgZXZlbiB0aG91Z2ggd2UgZG9uJ3Qgc3VwcG9ydCBhbGwgb3Bjb2Rlcy4KICMgVGhl
c2Ugb3Bjb2RlcyBzaG91bGQgbmV2ZXIgYXJpc2Ugd2hlbiB1c2luZyBMTEludCBvciBlaXRoZXIg
SklULiBXZSBhc3NlcnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KaW5kZXggODUxNzNiYzgyNjIxNDZiMGUwZDFlMDE5MmI3
MDYwMjhiYmQ5MDY4My4uNDkyYzYzYzI1Y2RmYWUzMmZmOWVlYjhhNGQxOTdlNTg1NTMxOWFjMSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXI2NC5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXI2NC5hc20KQEAgLTIzMjEsMyArMjMyMSwxOCBAQCBfbGxpbnRfb3BfZ2V0X3Jlc3RfbGVu
Z3RoOgogICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigxLCB0MSkKICAgICBzdG9yZXEgdDAsIFtj
ZnIsIHQxLCA4XQogICAgIGRpc3BhdGNoKDMpCisKK19sbGludF9vcF9jbGVhcl9nZW5lcmF0b3Jf
ZnJhbWU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRWYXJpYWJsZSgxLCB0MCkKKyAg
ICBzdG9yZWkgMCwgR2VuZXJhdG9yRnJhbWU6Om1fbnVtYmVyT2ZTYXZlZENhbGxlZUxvY2Fsc1t0
MF0KKyAgICBkaXNwYXRjaCgyKQorCitfbGxpbnRfb3BfcmVzdW1lX2Zyb21fZ2VuZXJhdG9yX2Zy
YW1lOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkVmFyaWFibGUoMiwgdDApCisgICAg
bG9hZGlzRnJvbUluc3RydWN0aW9uKDMsIHQxKQorICAgIGxvYWRxIEdlbmVyYXRvckZyYW1lX2Nh
bGxlZUxvY2Fsc1t0MCwgdDEsIDhdLCB0MAorICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigxLCB0
MSkKKyAgICBzdG9yZXEgdDAsIFtjZnIsIHQxLCA4XQorICAgIGRpc3BhdGNoKDQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKaW5kZXggOGQzNzA2MzQ1MTI4ZTlkZjlkYWMz
MjU3ZjdjNWY0ZTVhYjNhOWMzNC4uMDkzYjBhODkzZDZmNDJiOTIyMGZkZDQ5NmYxMTBiNDlmMWE3
ZGI3NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcApAQCAtMjUwLDkg
KzI1MCwxMCBAQAogICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24gPSBmYWxz
ZTsKICAgICBpZiAobV9sZXhlci0+aXNSZXBhcnNpbmdGdW5jdGlvbigpKSB7CiAgICAgICAgIFBh
cnNlckZ1bmN0aW9uSW5mbzxBU1RCdWlsZGVyPiBmdW5jdGlvbkluZm87Ci0gICAgICAgIGlmIChw
YXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JCb2R5TW9kZSkKLSAgICAgICAg
ICAgIGZ1bmN0aW9uSW5mby5wYXJhbWV0ZXJzID0gY3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhj
b250ZXh0KTsKLSAgICAgICAgZWxzZQorICAgICAgICBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBh
cnNlTW9kZTo6R2VuZXJhdG9yQm9keU1vZGUpIHsKKyAgICAgICAgICAgIHVuc2lnbmVkIHBhcmFt
ZXRlckNvdW50ID0gMDsKKyAgICAgICAgICAgIGZ1bmN0aW9uSW5mby5wYXJhbWV0ZXJzID0gY3Jl
YXRlR2VuZXJhdG9yUGFyYW1ldGVycyhjb250ZXh0LCBwYXJhbWV0ZXJDb3VudCk7CisgICAgICAg
IH0gZWxzZQogICAgICAgICAgICAgcGFyc2VGdW5jdGlvblBhcmFtZXRlcnMoY29udGV4dCwgcGFy
c2VNb2RlLCBmdW5jdGlvbkluZm8pOwogICAgICAgICBtX3BhcmFtZXRlcnMgPSBmdW5jdGlvbklu
Zm8ucGFyYW1ldGVyczsKIApAQCAtMjc5LDcgKzI4MCw3IEBACiAgICAgICAgICAgICBzb3VyY2VF
bGVtZW50cyA9IHBhcnNlTW9kdWxlU291cmNlRWxlbWVudHMoY29udGV4dCwgcGFyc2VNb2RlKTsK
ICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNl
TW9kZTo6R2VuZXJhdG9yV3JhcHBlckZ1bmN0aW9uTW9kZSkKLSAgICAgICAgICAgICAgICBzb3Vy
Y2VFbGVtZW50cyA9IHBhcnNlR2VuZXJhdG9yRnVuY3Rpb25Tb3VyY2VFbGVtZW50cyhjb250ZXh0
LCBDaGVja0ZvclN0cmljdE1vZGUpOworICAgICAgICAgICAgICAgIHNvdXJjZUVsZW1lbnRzID0g
cGFyc2VHZW5lcmF0b3JGdW5jdGlvblNvdXJjZUVsZW1lbnRzKGNvbnRleHQsIGNhbGxlZU5hbWUs
IENoZWNrRm9yU3RyaWN0TW9kZSk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAg
c291cmNlRWxlbWVudHMgPSBwYXJzZVNvdXJjZUVsZW1lbnRzKGNvbnRleHQsIENoZWNrRm9yU3Ry
aWN0TW9kZSk7CiAgICAgICAgIH0KQEAgLTQ3Miw3ICs0NzMsNyBAQAogfQogCiB0ZW1wbGF0ZSA8
dHlwZW5hbWUgTGV4ZXJUeXBlPgotdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU291
cmNlRWxlbWVudHMgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlR2VuZXJhdG9yRnVuY3Rpb25Tb3Vy
Y2VFbGVtZW50cyhUcmVlQnVpbGRlciYgY29udGV4dCwgU291cmNlRWxlbWVudHNNb2RlIG1vZGUp
Cit0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTb3VyY2VFbGVtZW50cyBQYXJzZXI8
TGV4ZXJUeXBlPjo6cGFyc2VHZW5lcmF0b3JGdW5jdGlvblNvdXJjZUVsZW1lbnRzKFRyZWVCdWls
ZGVyJiBjb250ZXh0LCBjb25zdCBJZGVudGlmaWVyJiBjYWxsZWVOYW1lLCBTb3VyY2VFbGVtZW50
c01vZGUgbW9kZSkKIHsKICAgICBhdXRvIHNvdXJjZUVsZW1lbnRzID0gY29udGV4dC5jcmVhdGVT
b3VyY2VFbGVtZW50cygpOwogCkBAIC00ODQsMTEgKzQ4NSwxMCBAQAogICAgIGludCBwYXJhbWV0
ZXJzU3RhcnQgPSBtX3Rva2VuLm1fbG9jYXRpb24uc3RhcnRPZmZzZXQ7CiAKICAgICBQYXJzZXJG
dW5jdGlvbkluZm88VHJlZUJ1aWxkZXI+IGluZm87Ci0gICAgaW5mby5uYW1lID0gJm1fdm0tPnBy
b3BlcnR5TmFtZXMtPm51bGxJZGVudGlmaWVyOwotICAgIGluZm8ucGFyYW1ldGVycyA9IGNyZWF0
ZUdlbmVyYXRvclBhcmFtZXRlcnMoY29udGV4dCk7CisgICAgaW5mby5uYW1lID0gJmNhbGxlZU5h
bWU7CisgICAgaW5mby5wYXJhbWV0ZXJzID0gY3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhjb250
ZXh0LCBpbmZvLnBhcmFtZXRlckNvdW50KTsKICAgICBpbmZvLnN0YXJ0T2Zmc2V0ID0gcGFyYW1l
dGVyc1N0YXJ0OwogICAgIGluZm8uc3RhcnRMaW5lID0gdG9rZW5MaW5lKCk7Ci0gICAgaW5mby5w
YXJhbWV0ZXJDb3VudCA9IDQ7IC8vIGdlbmVyYXRvciwgc3RhdGUsIHZhbHVlLCByZXN1bWUgbW9k
ZQogCiAgICAgewogICAgICAgICBBdXRvUG9wU2NvcGVSZWYgZ2VuZXJhdG9yQm9keVNjb3BlKHRo
aXMsIHB1c2hTY29wZSgpKTsKQEAgLTE3ODEsMzIgKzE3ODEsMzEgQEAgc3RhdGljIGNvbnN0IGNo
YXIqIHN0cmluZ0ZvckZ1bmN0aW9uTW9kZShTb3VyY2VQYXJzZU1vZGUgbW9kZSkKIH0KIAogdGVt
cGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KLXRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4g
dHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkZvcm1hbFBhcmFtZXRlckxpc3QgUGFyc2VyPExleGVyVHlw
ZT46OmNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMoVHJlZUJ1aWxkZXImIGNvbnRleHQpCit0ZW1w
bGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpGb3JtYWxQYXJh
bWV0ZXJMaXN0IFBhcnNlcjxMZXhlclR5cGU+OjpjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKFRy
ZWVCdWlsZGVyJiBjb250ZXh0LCB1bnNpZ25lZCYgcGFyYW1ldGVyQ291bnQpCiB7CiAgICAgYXV0
byBwYXJhbWV0ZXJzID0gY29udGV4dC5jcmVhdGVGb3JtYWxQYXJhbWV0ZXJMaXN0KCk7CiAKICAg
ICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKICAgICBKU1RleHRQ
b3NpdGlvbiBwb3NpdGlvbiA9IHRva2VuU3RhcnRQb3NpdGlvbigpOwogCi0gICAgLy8gQGdlbmVy
YXRvcgotICAgIGRlY2xhcmVQYXJhbWV0ZXIoJm1fdm0tPnByb3BlcnR5TmFtZXMtPmdlbmVyYXRv
clByaXZhdGVOYW1lKTsKLSAgICBhdXRvIGdlbmVyYXRvciA9IGNvbnRleHQuY3JlYXRlQmluZGlu
Z0xvY2F0aW9uKGxvY2F0aW9uLCBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5nZW5lcmF0b3JQcml2YXRl
TmFtZSwgcG9zaXRpb24sIHBvc2l0aW9uLCBBc3NpZ25tZW50Q29udGV4dDo6RGVjbGFyYXRpb25T
dGF0ZW1lbnQpOwotICAgIGNvbnRleHQuYXBwZW5kUGFyYW1ldGVyKHBhcmFtZXRlcnMsIGdlbmVy
YXRvciwgMCk7CisgICAgYXV0byBhZGRQYXJhbWV0ZXIgPSBbJl0oY29uc3QgSWRlbnRpZmllciYg
bmFtZSkgeworICAgICAgICBkZWNsYXJlUGFyYW1ldGVyKCZuYW1lKTsKKyAgICAgICAgYXV0byBi
aW5kaW5nID0gY29udGV4dC5jcmVhdGVCaW5kaW5nTG9jYXRpb24obG9jYXRpb24sIG5hbWUsIHBv
c2l0aW9uLCBwb3NpdGlvbiwgQXNzaWdubWVudENvbnRleHQ6OkRlY2xhcmF0aW9uU3RhdGVtZW50
KTsKKyAgICAgICAgY29udGV4dC5hcHBlbmRQYXJhbWV0ZXIocGFyYW1ldGVycywgYmluZGluZywg
MCk7CisgICAgfTsKIAorICAgIC8vIEBnZW5lcmF0b3IKKyAgICBhZGRQYXJhbWV0ZXIobV92bS0+
cHJvcGVydHlOYW1lcy0+Z2VuZXJhdG9yUHJpdmF0ZU5hbWUpOwogICAgIC8vIEBnZW5lcmF0b3JT
dGF0ZQotICAgIGRlY2xhcmVQYXJhbWV0ZXIoJm1fdm0tPnByb3BlcnR5TmFtZXMtPmdlbmVyYXRv
clN0YXRlUHJpdmF0ZU5hbWUpOwotICAgIGF1dG8gZ2VuZXJhdG9yU3RhdGUgPSBjb250ZXh0LmNy
ZWF0ZUJpbmRpbmdMb2NhdGlvbihsb2NhdGlvbiwgbV92bS0+cHJvcGVydHlOYW1lcy0+Z2VuZXJh
dG9yU3RhdGVQcml2YXRlTmFtZSwgcG9zaXRpb24sIHBvc2l0aW9uLCBBc3NpZ25tZW50Q29udGV4
dDo6RGVjbGFyYXRpb25TdGF0ZW1lbnQpOwotICAgIGNvbnRleHQuYXBwZW5kUGFyYW1ldGVyKHBh
cmFtZXRlcnMsIGdlbmVyYXRvclN0YXRlLCAwKTsKLQorICAgIGFkZFBhcmFtZXRlcihtX3ZtLT5w
cm9wZXJ0eU5hbWVzLT5nZW5lcmF0b3JTdGF0ZVByaXZhdGVOYW1lKTsKICAgICAvLyBAZ2VuZXJh
dG9yVmFsdWUKLSAgICBkZWNsYXJlUGFyYW1ldGVyKCZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5nZW5l
cmF0b3JWYWx1ZVByaXZhdGVOYW1lKTsKLSAgICBhdXRvIGdlbmVyYXRvclZhbHVlID0gY29udGV4
dC5jcmVhdGVCaW5kaW5nTG9jYXRpb24obG9jYXRpb24sIG1fdm0tPnByb3BlcnR5TmFtZXMtPmdl
bmVyYXRvclZhbHVlUHJpdmF0ZU5hbWUsIHBvc2l0aW9uLCBwb3NpdGlvbiwgQXNzaWdubWVudENv
bnRleHQ6OkRlY2xhcmF0aW9uU3RhdGVtZW50KTsKLSAgICBjb250ZXh0LmFwcGVuZFBhcmFtZXRl
cihwYXJhbWV0ZXJzLCBnZW5lcmF0b3JWYWx1ZSwgMCk7Ci0KKyAgICBhZGRQYXJhbWV0ZXIobV92
bS0+cHJvcGVydHlOYW1lcy0+Z2VuZXJhdG9yVmFsdWVQcml2YXRlTmFtZSk7CiAgICAgLy8gQGdl
bmVyYXRvclJlc3VtZU1vZGUKLSAgICBkZWNsYXJlUGFyYW1ldGVyKCZtX3ZtLT5wcm9wZXJ0eU5h
bWVzLT5nZW5lcmF0b3JSZXN1bWVNb2RlUHJpdmF0ZU5hbWUpOwotICAgIGF1dG8gZ2VuZXJhdG9y
UmVzdW1lTW9kZSA9IGNvbnRleHQuY3JlYXRlQmluZGluZ0xvY2F0aW9uKGxvY2F0aW9uLCBtX3Zt
LT5wcm9wZXJ0eU5hbWVzLT5nZW5lcmF0b3JSZXN1bWVNb2RlUHJpdmF0ZU5hbWUsIHBvc2l0aW9u
LCBwb3NpdGlvbiwgQXNzaWdubWVudENvbnRleHQ6OkRlY2xhcmF0aW9uU3RhdGVtZW50KTsKLSAg
ICBjb250ZXh0LmFwcGVuZFBhcmFtZXRlcihwYXJhbWV0ZXJzLCBnZW5lcmF0b3JSZXN1bWVNb2Rl
LCAwKTsKKyAgICBhZGRQYXJhbWV0ZXIobV92bS0+cHJvcGVydHlOYW1lcy0+Z2VuZXJhdG9yUmVz
dW1lTW9kZVByaXZhdGVOYW1lKTsKKyAgICAvLyBAZ2VuZXJhdG9yRnJhbWUKKyAgICBhZGRQYXJh
bWV0ZXIobV92bS0+cHJvcGVydHlOYW1lcy0+Z2VuZXJhdG9yRnJhbWVQcml2YXRlTmFtZSk7CisK
KyAgICBwYXJhbWV0ZXJDb3VudCA9IDU7CiAKICAgICByZXR1cm4gcGFyYW1ldGVyczsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCmluZGV4IGExMWIzNWMxMDFmZTViODQ5Y2Iy
MzMwOTZjNTY4MzEzNzA2NmNhYmYuLjRmNjE5N2ViMmQ4MTFjOTE0NWIxZmUzYmFhM2Y0Njg4OTIx
ODQzYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaApAQCAtMTE5MSw3ICsx
MTkxLDcgQEAgY2xhc3MgUGFyc2VyIHsKICAgICB9CiAKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJl
ZUJ1aWxkZXI+IFRyZWVTb3VyY2VFbGVtZW50cyBwYXJzZVNvdXJjZUVsZW1lbnRzKFRyZWVCdWls
ZGVyJiwgU291cmNlRWxlbWVudHNNb2RlKTsKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxk
ZXI+IFRyZWVTb3VyY2VFbGVtZW50cyBwYXJzZUdlbmVyYXRvckZ1bmN0aW9uU291cmNlRWxlbWVu
dHMoVHJlZUJ1aWxkZXImLCBTb3VyY2VFbGVtZW50c01vZGUpOworICAgIHRlbXBsYXRlIDxjbGFz
cyBUcmVlQnVpbGRlcj4gVHJlZVNvdXJjZUVsZW1lbnRzIHBhcnNlR2VuZXJhdG9yRnVuY3Rpb25T
b3VyY2VFbGVtZW50cyhUcmVlQnVpbGRlciYsIGNvbnN0IElkZW50aWZpZXImIGNhbGxlZU5hbWUs
IFNvdXJjZUVsZW1lbnRzTW9kZSk7CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBU
cmVlU3RhdGVtZW50IHBhcnNlU3RhdGVtZW50TGlzdEl0ZW0oVHJlZUJ1aWxkZXImLCBjb25zdCBJ
ZGVudGlmaWVyKiYgZGlyZWN0aXZlLCB1bnNpZ25lZCogZGlyZWN0aXZlTGl0ZXJhbExlbmd0aCk7
CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IHBhcnNlU3Rh
dGVtZW50KFRyZWVCdWlsZGVyJiwgY29uc3QgSWRlbnRpZmllciomIGRpcmVjdGl2ZSwgdW5zaWdu
ZWQqIGRpcmVjdGl2ZUxpdGVyYWxMZW5ndGggPSAwKTsKICAgICBlbnVtIGNsYXNzIEV4cG9ydFR5
cGUgeyBFeHBvcnRlZCwgTm90RXhwb3J0ZWQgfTsKQEAgLTEyNTksNyArMTI1OSw3IEBAIGNsYXNz
IFBhcnNlciB7CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBORVZFUl9JTkxJTkUg
Ym9vbCBwYXJzZUZ1bmN0aW9uSW5mbyhUcmVlQnVpbGRlciYsIEZ1bmN0aW9uUmVxdWlyZW1lbnRz
LCBTb3VyY2VQYXJzZU1vZGUsIGJvb2wgbmFtZUlzSW5Db250YWluaW5nU2NvcGUsIENvbnN0cnVj
dG9yS2luZCwgU3VwZXJCaW5kaW5nLCBpbnQgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIFBhcnNlckZ1
bmN0aW9uSW5mbzxUcmVlQnVpbGRlcj4mLCBGdW5jdGlvbkRlZmluaXRpb25UeXBlKTsKICAgICAK
ICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElORSBpbnQgcGFyc2VG
dW5jdGlvblBhcmFtZXRlcnMoVHJlZUJ1aWxkZXImLCBTb3VyY2VQYXJzZU1vZGUsIFBhcnNlckZ1
bmN0aW9uSW5mbzxUcmVlQnVpbGRlcj4mKTsKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxk
ZXI+IE5FVkVSX0lOTElORSB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6Rm9ybWFsUGFyYW1ldGVyTGlz
dCBjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKFRyZWVCdWlsZGVyJik7CisgICAgdGVtcGxhdGUg
PGNsYXNzIFRyZWVCdWlsZGVyPiBORVZFUl9JTkxJTkUgdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkZv
cm1hbFBhcmFtZXRlckxpc3QgY3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhUcmVlQnVpbGRlciYs
IHVuc2lnbmVkJiBwYXJhbWV0ZXJDb3VudCk7CiAKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1
aWxkZXI+IE5FVkVSX0lOTElORSBUcmVlQ2xhc3NFeHByZXNzaW9uIHBhcnNlQ2xhc3MoVHJlZUJ1
aWxkZXImLCBGdW5jdGlvblJlcXVpcmVtZW50cywgUGFyc2VyQ2xhc3NJbmZvPFRyZWVCdWlsZGVy
PiYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25T
bG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1Bh
dGhzLmNwcAppbmRleCA3OGI0M2M0ZDM4OWZmN2E5MDgzMTNiNTU0MDU3MGU4ODJlMWIwMzcxLi4w
YzZhNzNlNTU1NzYyMDkwNTUxMjIxNTMwZDcyYTM0YjhmZDI1Y2Q0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKQEAgLTY5NywxOCAr
Njk3LDcgQEAgc3RhdGljIHZvaWQgdXBkYXRlUmVzdWx0UHJvZmlsZUZvckJpbmFyeUFyaXRoT3Ao
RXhlY1N0YXRlKiwgSW5zdHJ1Y3Rpb24qLCBKU1ZhbHUKICAgICAvLyBPbmx5IHNhdmUgdmFyaWFi
bGVzIGFuZCB0ZW1wb3JhcnkgcmVnaXN0ZXJzLiBUaGUgc2NvcGUgcmVnaXN0ZXJzIGFyZSBpbmNs
dWRlZCBpbiB0aGVtLgogICAgIC8vIEJ1dCBwYXJhbWV0ZXJzIGFyZSBub3QgaW5jbHVkZWQuIEJl
Y2F1c2UgdGhlIGdlbmVyYXRvciBpbXBsZW1lbnRhdGlvbiByZXBsYWNlcyB0aGUgdmFsdWVzIG9m
IHBhcmFtZXRlcnMgb24gZWFjaCBnZW5lcmF0b3IubmV4dCgpIGNhbGwuCiAgICAgQkVHSU4oKTsK
LSAgICBKU1ZhbHVlIGdlbmVyYXRvciA9IE9QKDEpLmpzVmFsdWUoKTsKLSAgICBHZW5lcmF0b3JG
cmFtZSogZnJhbWUgPSBudWxscHRyOwotICAgIEpTVmFsdWUgdmFsdWUgPSBnZW5lcmF0b3IuZ2V0
KGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5nZW5lcmF0b3JGcmFtZVByaXZhdGVOYW1lKTsK
LSAgICBpZiAoIXZhbHVlLmlzTnVsbCgpKQotICAgICAgICBmcmFtZSA9IGpzQ2FzdDxHZW5lcmF0
b3JGcmFtZSo+KHZhbHVlKTsKLSAgICBlbHNlIHsKLSAgICAgICAgLy8gRklYTUU6IE9uY2UgSlNH
ZW5lcmF0b3Igc3BlY2lhbGl6ZWQgb2JqZWN0IGlzIGludHJvZHVjZWQsIHRoaXMgR2VuZXJhdG9y
RnJhbWUgc2hvdWxkIGJlIGVtYmVkZWQgaW50byBpdCB0byBhdm9pZCBhbGxvY2F0aW9ucy4KLSAg
ICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTU0NQot
ICAgICAgICBmcmFtZSA9IEdlbmVyYXRvckZyYW1lOjpjcmVhdGUoZXhlYy0+dm0oKSwgIGV4ZWMt
PmNvZGVCbG9jaygpLT5udW1DYWxsZWVMb2NhbHMoKSk7Ci0gICAgICAgIFB1dFByb3BlcnR5U2xv
dCBzbG90KGdlbmVyYXRvciwgdHJ1ZSwgUHV0UHJvcGVydHlTbG90OjpQdXRCeUlkKTsKLSAgICAg
ICAgYXNPYmplY3QoZ2VuZXJhdG9yKS0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPnB1dChhc09i
amVjdChnZW5lcmF0b3IpLCBleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuZ2VuZXJhdG9yRnJh
bWVQcml2YXRlTmFtZSwgZnJhbWUsIHNsb3QpOwotICAgIH0KKyAgICBHZW5lcmF0b3JGcmFtZSog
ZnJhbWUgPSBqc0Nhc3Q8R2VuZXJhdG9yRnJhbWUqPihPUCgxKS5qc1ZhbHVlKCkpOwogICAgIHVu
c2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9IHBjWzJdLnUudW5zaWduZWRWYWx1ZTsKICAg
ICBmcmFtZS0+c2F2ZShleGVjLCBleGVjLT5jb2RlQmxvY2soKS0+bGl2ZUNhbGxlZUxvY2Fsc0F0
WWllbGQobGl2ZUNhbGxlZUxvY2Fsc0luZGV4KSk7CiAgICAgRU5EKCk7CkBAIC03MTcsOCArNzA2
LDcgQEAgc3RhdGljIHZvaWQgdXBkYXRlUmVzdWx0UHJvZmlsZUZvckJpbmFyeUFyaXRoT3AoRXhl
Y1N0YXRlKiwgSW5zdHJ1Y3Rpb24qLCBKU1ZhbHUKIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9y
ZXN1bWUpCiB7CiAgICAgQkVHSU4oKTsKLSAgICBKU1ZhbHVlIGdlbmVyYXRvciA9IE9QKDEpLmpz
VmFsdWUoKTsKLSAgICBHZW5lcmF0b3JGcmFtZSogZnJhbWUgPSBqc0Nhc3Q8R2VuZXJhdG9yRnJh
bWUqPihnZW5lcmF0b3IuZ2V0KGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5nZW5lcmF0b3JG
cmFtZVByaXZhdGVOYW1lKSk7CisgICAgR2VuZXJhdG9yRnJhbWUqIGZyYW1lID0ganNDYXN0PEdl
bmVyYXRvckZyYW1lKj4oT1AoMSkuanNWYWx1ZSgpKTsKICAgICB1bnNpZ25lZCBsaXZlQ2FsbGVl
TG9jYWxzSW5kZXggPSBwY1syXS51LnVuc2lnbmVkVmFsdWU7CiAgICAgZnJhbWUtPnJlc3VtZShl
eGVjLCBleGVjLT5jb2RlQmxvY2soKS0+bGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQobGl2ZUNhbGxl
ZUxvY2Fsc0luZGV4KSk7CiAgICAgRU5EKCk7CkBAIC03OTcsNCArNzg1LDEyIEBAIHN0YXRpYyB2
b2lkIHVwZGF0ZVJlc3VsdFByb2ZpbGVGb3JCaW5hcnlBcml0aE9wKEV4ZWNTdGF0ZSosIEluc3Ry
dWN0aW9uKiwgSlNWYWx1CiAgICAgRU5EKCk7CiB9CiAKK1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0
aF9uZXdfZ2VuZXJhdG9yX2ZyYW1lKQoreworICAgIEJFR0lOKCk7CisgICAgdW5zaWduZWQgZ2Vu
ZXJhdG9yRnJhbWVTaXplID0gcGNbMl0udS51bnNpZ25lZFZhbHVlOworICAgIFJFVFVSTihHZW5l
cmF0b3JGcmFtZTo6Y3JlYXRlKGV4ZWMsIGdlbmVyYXRvckZyYW1lU2l6ZSkpOworfQorCisKIH0g
Ly8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29tbW9uU2xvd1BhdGhzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21t
b25TbG93UGF0aHMuaAppbmRleCBmMDBkODcwNWQ0ZTY3ZmU0ZDQwNTliZGUxNjhlZTg4ZjU3ZGY3
MmU3Li4wNjUwYzRlOGNiNzE1NTkxN2NkMWQ3YTJmNzdhN2M3ZjcyOWExNTQzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaApAQCAtMjk2LDYg
KzI5Niw3IEBAIGlubGluZSB2b2lkIGRlY29kZVJlc3VsdChTbG93UGF0aFJldHVyblR5cGUgcmVz
dWx0LCB2b2lkKiYgYSwgdm9pZComIGIpCiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRo
X3B1c2hfd2l0aF9zY29wZSk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3Jlc29s
dmVfc2NvcGUpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9jb3B5X3Jlc3QpOwor
U0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9uZXdfZ2VuZXJhdG9yX2ZyYW1lKTsKIAog
fSAvLyBuYW1lc3BhY2UgSlNDCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0dlbmVyYXRvckZyYW1lLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0dlbmVyYXRvckZyYW1lLmNwcAppbmRleCBlZjZlYTdhMTAwMjU4YzNlY2UwNGRhYWI0M2JkYWE4
NTFlYzhmNzE1Li4zMGI4MTRhNjM2NjcyNjgyNWMzODQ5ZmZiMjgwNGQyZmYzODA0MTFhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGcmFtZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJhbWUuY3BwCkBA
IC0zMCw2MCArMzAsNjAgQEAKICNpbmNsdWRlICJIZWFwSXRlcmF0aW9uU2NvcGUuaCIKICNpbmNs
dWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKKyNp
bmNsdWRlICJKU09iamVjdElubGluZXMuaCIKICNpbmNsdWRlICJTbG90VmlzaXRvcklubGluZXMu
aCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCi1j
b25zdCBDbGFzc0luZm8gR2VuZXJhdG9yRnJhbWU6OnNfaW5mbyA9IHsgIkdlbmVyYXRvckZyYW1l
IiwgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShHZW5lcmF0b3JGcmFtZSkg
fTsKK2NvbnN0IENsYXNzSW5mbyBHZW5lcmF0b3JGcmFtZTo6c19pbmZvID0geyAiR2VuZXJhdG9y
RnJhbWUiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEdlbmVy
YXRvckZyYW1lKSB9OwogCi1HZW5lcmF0b3JGcmFtZTo6R2VuZXJhdG9yRnJhbWUoVk0mIHZtLCBz
aXplX3QgbnVtYmVyT2ZDYWxsZWVMb2NhbHMpCi0gICAgOiBCYXNlKHZtLCB2bS5nZW5lcmF0b3JG
cmFtZVN0cnVjdHVyZS5nZXQoKSkKLSAgICAsIG1fbnVtYmVyT2ZDYWxsZWVMb2NhbHMobnVtYmVy
T2ZDYWxsZWVMb2NhbHMpCitHZW5lcmF0b3JGcmFtZTo6R2VuZXJhdG9yRnJhbWUoVk0mIHZtLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkKIHsKIH0KIAot
dm9pZCBHZW5lcmF0b3JGcmFtZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQotewotICAgIEJhc2U6
OmZpbmlzaENyZWF0aW9uKHZtKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fbnVtYmVy
T2ZDYWxsZWVMb2NhbHM7ICsraSkKLSAgICAgICAgbG9jYWxBdChpKS5jbGVhcigpOwotfQotCiBT
dHJ1Y3R1cmUqIEdlbmVyYXRvckZyYW1lOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKIHsKLSAgICByZXR1cm4g
U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhD
ZWxsVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIHJldHVybiBTdHJ1Y3R1cmU6
OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUs
IFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKIH0KIAotR2VuZXJhdG9yRnJhbWUqIEdlbmVyYXRv
ckZyYW1lOjpjcmVhdGUoVk0mIHZtLCBzaXplX3QgbnVtYmVyT2ZMb2NhbHMpCitHZW5lcmF0b3JG
cmFtZSogR2VuZXJhdG9yRnJhbWU6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBzaXplX3QgbnVtYmVyT2ZDYWxsZWVMb2NhbHMpCiB7CiAgICAgR2VuZXJhdG9yRnJhbWUqIHJl
c3VsdCA9CiAgICAgICAgIG5ldyAoCiAgICAgICAgICAgICBOb3ROdWxsLAotICAgICAgICAgICAg
YWxsb2NhdGVDZWxsPEdlbmVyYXRvckZyYW1lPih2bS5oZWFwLCBhbGxvY2F0aW9uU2l6ZUZvckxv
Y2FscyhudW1iZXJPZkxvY2FscykpKQotICAgICAgICBHZW5lcmF0b3JGcmFtZSh2bSwgbnVtYmVy
T2ZMb2NhbHMpOworICAgICAgICAgICAgYWxsb2NhdGVDZWxsPEdlbmVyYXRvckZyYW1lPih2bS5o
ZWFwLCBhbGxvY2F0aW9uU2l6ZUZvckxvY2FscyhudW1iZXJPZkNhbGxlZUxvY2FscykpKQorICAg
ICAgICBHZW5lcmF0b3JGcmFtZSh2bSwgc3RydWN0dXJlKTsKICAgICByZXN1bHQtPmZpbmlzaENy
ZWF0aW9uKHZtKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCitHZW5lcmF0b3JGcmFtZSogR2Vu
ZXJhdG9yRnJhbWU6OmNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIHNpemVfdCBudW1iZXJPZkNhbGxl
ZUxvY2FscykKK3sKKyAgICByZXR1cm4gY3JlYXRlKGV4ZWMtPnZtKCksIGV4ZWMtPmxleGljYWxH
bG9iYWxPYmplY3QoKS0+Z2VuZXJhdG9yRnJhbWVTdHJ1Y3R1cmUoKSwgbnVtYmVyT2ZDYWxsZWVM
b2NhbHMpOworfQorCiB2b2lkIEdlbmVyYXRvckZyYW1lOjpzYXZlKEV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZUNhbGxlZUxvY2FscykKIHsKICAgICAvLyBPbmx5IHNh
dmUgY2FsbGVlIGxvY2Fscy4KICAgICAvLyBFdmVyeSB0aW1lIGEgZ2VuZXJhdG9yIGlzIGNhbGxl
ZCAob3IgcmVzdW1lZCksIHBhcmFtZXRlcnMgc2hvdWxkIGJlIHJlcGxhY2VkLgotICAgIEFTU0VS
VChsaXZlQ2FsbGVlTG9jYWxzLm51bUJpdHMoKSA8PSBtX251bWJlck9mQ2FsbGVlTG9jYWxzKTsK
KyAgICB1bnNpZ25lZCBnZW5lcmF0b3JGcmFtZUluZGV4ID0gMDsKICAgICBsaXZlQ2FsbGVlTG9j
YWxzLmZvckVhY2hTZXRCaXQoWyZdKHNpemVfdCBpbmRleCkgewotICAgICAgICBsb2NhbEF0KGlu
ZGV4KS5zZXQoZXhlYy0+dm0oKSwgdGhpcywgZXhlYy0+dW5jaGVja2VkUih2aXJ0dWFsUmVnaXN0
ZXJGb3JMb2NhbChpbmRleCkpLmpzVmFsdWUoKSk7CisgICAgICAgIGxvY2FsQXQoZ2VuZXJhdG9y
RnJhbWVJbmRleCsrKS5zZXQoZXhlYy0+dm0oKSwgdGhpcywgZXhlYy0+dW5jaGVja2VkUih2aXJ0
dWFsUmVnaXN0ZXJGb3JMb2NhbChpbmRleCkpLmpzVmFsdWUoKSk7CiAgICAgfSk7CisgICAgbV9u
dW1iZXJPZlNhdmVkQ2FsbGVlTG9jYWxzID0gZ2VuZXJhdG9yRnJhbWVJbmRleDsKIH0KIAogdm9p
ZCBHZW5lcmF0b3JGcmFtZTo6cmVzdW1lKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgRmFzdEJpdFZl
Y3RvciYgbGl2ZUNhbGxlZUxvY2FscykKIHsKICAgICAvLyBPbmx5IHJlc3VtZSBjYWxsZWUgbG9j
YWxzLgogICAgIC8vIEV2ZXJ5IHRpbWUgYSBnZW5lcmF0b3IgaXMgY2FsbGVkIChvciByZXN1bWVk
KSwgcGFyYW1ldGVycyBzaG91bGQgYmUgcmVwbGFjZWQuCisgICAgdW5zaWduZWQgZ2VuZXJhdG9y
RnJhbWVJbmRleCA9IDA7CiAgICAgbGl2ZUNhbGxlZUxvY2Fscy5mb3JFYWNoU2V0Qml0KFsmXShz
aXplX3QgaW5kZXgpIHsKLSAgICAgICAgZXhlYy0+dW5jaGVja2VkUih2aXJ0dWFsUmVnaXN0ZXJG
b3JMb2NhbChpbmRleCkpID0gbG9jYWxBdChpbmRleCkuZ2V0KCk7Ci0gICAgICAgIGxvY2FsQXQo
aW5kZXgpLmNsZWFyKCk7CisgICAgICAgIGV4ZWMtPnVuY2hlY2tlZFIodmlydHVhbFJlZ2lzdGVy
Rm9yTG9jYWwoaW5kZXgpKSA9IGxvY2FsQXQoZ2VuZXJhdG9yRnJhbWVJbmRleCsrKS5nZXQoKTsK
ICAgICB9KTsKKyAgICBtX251bWJlck9mU2F2ZWRDYWxsZWVMb2NhbHMgPSAwOwogfQogCiB2b2lk
IEdlbmVyYXRvckZyYW1lOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3Im
IHZpc2l0b3IpCkBAIC05MSw3ICs5MSw3IEBAIHZvaWQgR2VuZXJhdG9yRnJhbWU6OnZpc2l0Q2hp
bGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICBHZW5lcmF0b3JG
cmFtZSogdGhpc09iamVjdCA9IGpzQ2FzdDxHZW5lcmF0b3JGcmFtZSo+KGNlbGwpOwogICAgIEJh
c2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CiAgICAgLy8gU2luY2Ugb25s
eSB0cnVlIGNlbGwgcG9pbnRlcnMgYXJlIHN0b3JlZCBhcyBhIGNlbGwsIHdlIGNhbiBzYWZlbHkg
bWFyayB0aGVtLgotICAgIHZpc2l0b3IuYXBwZW5kVmFsdWVzKHRoaXNPYmplY3QtPmxvY2Fscygp
LCB0aGlzT2JqZWN0LT5tX251bWJlck9mQ2FsbGVlTG9jYWxzKTsKKyAgICB2aXNpdG9yLmFwcGVu
ZFZhbHVlcyh0aGlzT2JqZWN0LT5sb2NhbHMoKSwgdGhpc09iamVjdC0+bV9udW1iZXJPZlNhdmVk
Q2FsbGVlTG9jYWxzKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGcmFtZS5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJhbWUuaAppbmRleCAzZDU0NWIxNDdkZDRhYmZi
MmJiYjliNWE3MTk0ZThmNzQ4NDFjNDlhLi4wNDBiYzNiNjg2NjQ0ODRhY2I1NzRkN2Q0NDQ5ZmJi
MjAyODJmMjZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5l
cmF0b3JGcmFtZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRv
ckZyYW1lLmgKQEAgLTI3LDExICsyNywxNCBAQAogI2RlZmluZSBHZW5lcmF0b3JGcmFtZV9oCiAK
ICNpbmNsdWRlICJKU0NlbGwuaCIKKyNpbmNsdWRlICJKU09iamVjdC5oIgogI2luY2x1ZGUgPHd0
Zi9GYXN0Qml0VmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCi1jbGFzcyBHZW5lcmF0b3JG
cmFtZSA6IHB1YmxpYyBKU0NlbGwgeworY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworCitj
bGFzcyBHZW5lcmF0b3JGcmFtZSA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAgICBmcmll
bmQgY2xhc3MgSklUOwogI2lmIEVOQUJMRShERkdfSklUKQogICAgIGZyaWVuZCBjbGFzcyBERkc6
OlNwZWN1bGF0aXZlSklUOwpAQCAtMzksMTIgKzQyLDEyIEBAIGNsYXNzIEdlbmVyYXRvckZyYW1l
IDogcHVibGljIEpTQ2VsbCB7CiAjZW5kaWYKICAgICBmcmllbmQgY2xhc3MgVk07CiBwdWJsaWM6
Ci0gICAgdHlwZWRlZiBKU0NlbGwgQmFzZTsKLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3Ry
dWN0dXJlRmxhZ3MgPSBTdHJ1Y3R1cmVJc0ltbW9ydGFsIHwgQmFzZTo6U3RydWN0dXJlRmxhZ3M7
CisgICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CiAKICAgICBERUNMQVJFX0VYUE9S
VF9JTkZPOwogCi0gICAgc3RhdGljIEdlbmVyYXRvckZyYW1lKiBjcmVhdGUoVk0mLCBzaXplX3Qg
bnVtYmVyT2ZDYWxsZWVMb2NhbHMpOworICAgIHN0YXRpYyBHZW5lcmF0b3JGcmFtZSogY3JlYXRl
KEV4ZWNTdGF0ZSosIHNpemVfdCBudW1iZXJPZkNhbGxlZUxvY2Fscyk7CisgICAgc3RhdGljIEdl
bmVyYXRvckZyYW1lKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqLCBzaXplX3QgbnVtYmVyT2ZDYWxs
ZWVMb2NhbHMpOwogCiAgICAgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiogbG9jYWxzKCkKICAg
ICB7CkBAIC01Myw3ICs1Niw2IEBAIGNsYXNzIEdlbmVyYXRvckZyYW1lIDogcHVibGljIEpTQ2Vs
bCB7CiAKICAgICBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+JiBsb2NhbEF0KHNpemVfdCBpbmRl
eCkKICAgICB7Ci0gICAgICAgIEFTU0VSVChpbmRleCA8IG1fbnVtYmVyT2ZDYWxsZWVMb2NhbHMp
OwogICAgICAgICByZXR1cm4gbG9jYWxzKClbaW5kZXhdOwogICAgIH0KIApAQCAtNjIsNiArNjQs
MTYgQEAgY2xhc3MgR2VuZXJhdG9yRnJhbWUgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAgICAgcmV0
dXJuIFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZjxzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+
KT4oc2l6ZW9mKEdlbmVyYXRvckZyYW1lKSk7CiAgICAgfQogCisgICAgc3RhdGljIHNpemVfdCBs
b2NhbE9mZnNldCh1bnNpZ25lZCBpbmRleCkKKyAgICB7CisgICAgICAgIHJldHVybiBvZmZzZXRP
ZkxvY2FscygpICsgaW5kZXggKiBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KTsKKyAgICB9
CisKKyAgICBzdGF0aWMgc2l6ZV90IG51bWJlck9mU2F2ZWRDYWxsZWVMb2NhbHNPZmZzZXQoKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihHZW5lcmF0b3JGcmFtZSwgbV9u
dW1iZXJPZlNhdmVkQ2FsbGVlTG9jYWxzKTsKKyAgICB9CisKICAgICBzdGF0aWMgc2l6ZV90IGFs
bG9jYXRpb25TaXplRm9yTG9jYWxzKHVuc2lnbmVkIG51bWJlck9mTG9jYWxzKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIG9mZnNldE9mTG9jYWxzKCkgKyBudW1iZXJPZkxvY2FscyAqIHNpemVvZihX
cml0ZUJhcnJpZXI8VW5rbm93bj4pOwpAQCAtNzMsMTQgKzg1LDEyIEBAIGNsYXNzIEdlbmVyYXRv
ckZyYW1lIDogcHVibGljIEpTQ2VsbCB7CiAgICAgdm9pZCByZXN1bWUoRXhlY1N0YXRlKiwgY29u
c3QgRmFzdEJpdFZlY3RvciYgbGl2ZUNhbGxlZUxvY2Fscyk7CiAKIHByaXZhdGU6Ci0gICAgR2Vu
ZXJhdG9yRnJhbWUoVk0mLCBzaXplX3QgbnVtYmVyT2ZDYWxsZWVMb2NhbHMpOworICAgIEdlbmVy
YXRvckZyYW1lKFZNJiwgU3RydWN0dXJlKik7CiAKLSAgICBzaXplX3QgbV9udW1iZXJPZkNhbGxl
ZUxvY2FsczsKKyAgICB1aW50MzJfdCBtX251bWJlck9mU2F2ZWRDYWxsZWVMb2NhbHMgeyAwIH07
CiAKICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogCi0gICAgdm9pZCBm
aW5pc2hDcmVhdGlvbihWTSYpOwotCiBwcm90ZWN0ZWQ6CiAgICAgc3RhdGljIHZvaWQgdmlzaXRD
aGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCA3NjlhM2VmYjMwNDM4ZGNk
OWRkZTQ0MmRjODg5NGExZjAzODJhNTA0Li44Y2I4NGFiZTVmODczOWEwMThlNjJlYTQ4ZjQ3MTQ0
NDc5NTUxZDNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3QuY3BwCkBAIC01MCw2ICs1MCw3IEBACiAjaW5jbHVkZSAiRXJyb3JQcm90b3R5cGUu
aCIKICNpbmNsdWRlICJGdW5jdGlvbkNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiRnVuY3Rpb25Q
cm90b3R5cGUuaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JGcmFtZS5oIgogI2luY2x1ZGUgIkdlbmVy
YXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJHZW5lcmF0b3JGdW5jdGlvblBy
b3RvdHlwZS5oIgogI2luY2x1ZGUgIkdlbmVyYXRvclByb3RvdHlwZS5oIgpAQCAtMzg4LDYgKzM4
OSw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmluaXQoVk0mIHZtKQogICAgIAogICAgIEZPUl9F
QUNIX0JVSUxUSU5fREVSSVZFRF9JVEVSQVRPUl9UWVBFKENSRUFURV9QUk9UT1RZUEVfRk9SX0RF
UklWRURfSVRFUkFUT1JfVFlQRSkKICAgICBtX3Byb3BlcnR5TmFtZUl0ZXJhdG9yU3RydWN0dXJl
LnNldCh2bSwgdGhpcywgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6Y3JlYXRlU3RydWN0dXJlKHZt
LCB0aGlzLCBtX2l0ZXJhdG9yUHJvdG90eXBlLmdldCgpKSk7CisgICAgbV9nZW5lcmF0b3JGcmFt
ZVN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIEdlbmVyYXRvckZyYW1lOjpjcmVhdGVTdHJ1Y3R1cmUo
dm0sIHRoaXMsIGpzTnVsbCgpKSk7CiAgICAgbV9nZW5lcmF0b3JQcm90b3R5cGUuc2V0KHZtLCB0
aGlzLCBHZW5lcmF0b3JQcm90b3R5cGU6OmNyZWF0ZSh2bSwgdGhpcywgR2VuZXJhdG9yUHJvdG90
eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1faXRlcmF0b3JQcm90b3R5cGUuZ2V0KCkp
KSk7CiAgICAgCiAjdW5kZWYgQ1JFQVRFX1BST1RPVFlQRV9GT1JfREVSSVZFRF9JVEVSQVRPUl9U
WVBFCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApp
bmRleCBiNGZmMmZiNDEzZTBlNDQ2MjQ5MmE0OGEzZmQ1YTRjMjRlYTBiNzQxLi43MWQzOWVjOTI4
M2FkOWU1OTAxMjQ0ZjAxMzZhMTM1OGY1NDRhOTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTI1NSw2ICsyNTUsNyBAQCBjbGFzcyBK
U0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBX
cml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2NhbGxiYWNrRnVuY3Rpb25TdHJ1Y3R1cmU7CiAgICAg
V3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9jYWxsYmFja09iamVjdFN0cnVjdHVyZTsKICAgICBX
cml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3Byb3BlcnR5TmFtZUl0ZXJhdG9yU3RydWN0dXJlOwor
ICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fZ2VuZXJhdG9yRnJhbWVTdHJ1Y3R1cmU7CiAj
aWYgSlNDX09CSkNfQVBJX0VOQUJMRUQKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX29i
amNDYWxsYmFja0Z1bmN0aW9uU3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+
IG1fb2JqY1dyYXBwZXJPYmplY3RTdHJ1Y3R1cmU7CkBAIC01MDEsNiArNTAyLDcgQEAgY2xhc3Mg
SlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAg
U3RydWN0dXJlKiBjYWxsYmFja0Z1bmN0aW9uU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9j
YWxsYmFja0Z1bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBjYWxsYmFj
a09iamVjdFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FsbGJhY2tPYmplY3RTdHJ1Y3R1
cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIHByb3BlcnR5TmFtZUl0ZXJhdG9yU3RydWN0dXJl
KCkgY29uc3QgeyByZXR1cm4gbV9wcm9wZXJ0eU5hbWVJdGVyYXRvclN0cnVjdHVyZS5nZXQoKTsg
fQorICAgIFN0cnVjdHVyZSogZ2VuZXJhdG9yRnJhbWVTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVy
biBtX2dlbmVyYXRvckZyYW1lU3RydWN0dXJlLmdldCgpOyB9CiAjaWYgSlNDX09CSkNfQVBJX0VO
QUJMRUQKICAgICBTdHJ1Y3R1cmUqIG9iamNDYWxsYmFja0Z1bmN0aW9uU3RydWN0dXJlKCkgY29u
c3QgeyByZXR1cm4gbV9vYmpjQ2FsbGJhY2tGdW5jdGlvblN0cnVjdHVyZS5nZXQoKTsgfQogICAg
IFN0cnVjdHVyZSogb2JqY1dyYXBwZXJPYmplY3RTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBt
X29iamNXcmFwcGVyT2JqZWN0U3RydWN0dXJlLmdldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9WTS5jcHAKaW5kZXggMGU0NGMzNDYwZjlmOGYwZGNiMzVkOTEyZDc5NWY3Zjk4ZGZiN2Y0
NS4uMGVmMjVlNzI5YWE2ZTU1YzNkY2EwNjFjMjJiNjVhYTZmN2I1YjM0ZSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtMjQ2LDcgKzI0Niw2IEBAIHN0YXRpYyBib29sIGVu
YWJsZUFzc2VtYmxlcihFeGVjdXRhYmxlQWxsb2NhdG9yJiBleGVjdXRhYmxlQWxsb2NhdG9yKQog
ICAgIGluZmVycmVkVHlwZVN0cnVjdHVyZS5zZXQoKnRoaXMsIEluZmVycmVkVHlwZTo6Y3JlYXRl
U3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIGluZmVycmVkVHlwZVRhYmxlU3Ry
dWN0dXJlLnNldCgqdGhpcywgSW5mZXJyZWRUeXBlVGFibGU6OmNyZWF0ZVN0cnVjdHVyZSgqdGhp
cywgMCwganNOdWxsKCkpKTsKICAgICBmdW5jdGlvblJhcmVEYXRhU3RydWN0dXJlLnNldCgqdGhp
cywgRnVuY3Rpb25SYXJlRGF0YTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkp
OwotICAgIGdlbmVyYXRvckZyYW1lU3RydWN0dXJlLnNldCgqdGhpcywgR2VuZXJhdG9yRnJhbWU6
OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICBleGNlcHRpb25TdHJ1
Y3R1cmUuc2V0KCp0aGlzLCBFeGNlcHRpb246OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNO
dWxsKCkpKTsKICAgICBwcm9taXNlRGVmZXJyZWRTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBKU1Byb21p
c2VEZWZlcnJlZDo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIGlu
dGVybmFsUHJvbWlzZURlZmVycmVkU3RydWN0dXJlLnNldCgqdGhpcywgSlNJbnRlcm5hbFByb21p
c2VEZWZlcnJlZDo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ZNLmgKaW5kZXggYWVlMGFjMWYyMWI4NDUxYmM3NzY3NDQzYTBiMDVj
YTA0OGI0ZjQ5Yi4uMjM2MDgzNzBhOTgzNmQ4OTc3ZTQ5ZDcxZTY4YTgwOWI5YWM0NTM2MyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCkBAIC0zMTIsNyArMzEyLDYgQEAgY2xhc3MgVk0g
OiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Vk0+IHsKICAgICBTdHJvbmc8U3RydWN0dXJl
PiBpbmZlcnJlZFR5cGVTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gaW5mZXJyZWRU
eXBlVGFibGVTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gZnVuY3Rpb25SYXJlRGF0
YVN0cnVjdHVyZTsKLSAgICBTdHJvbmc8U3RydWN0dXJlPiBnZW5lcmF0b3JGcmFtZVN0cnVjdHVy
ZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBleGNlcHRpb25TdHJ1Y3R1cmU7CiAgICAgU3Ryb25n
PFN0cnVjdHVyZT4gcHJvbWlzZURlZmVycmVkU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1
cmU+IGludGVybmFsUHJvbWlzZURlZmVycmVkU3RydWN0dXJlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>269049</attachid>
            <date>2016-01-15 07:17:58 -0800</date>
            <delta_ts>2016-01-15 08:11:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-152723-20160116001727.patch</filename>
            <type>text/plain</type>
            <size>90704</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk1MDU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
ZDVkMzdhNWE2NzE2ZmQyMWY5YzRiYzhlZDg0OGZkNTlhZjU1NTgzLi4xZDFlMDJkNWU5ZDMzZmI4
NzUxYzcxYmMxMmI0MjVmZGIwZTAyNWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMjYgQEAKKzIwMTYtMDEtMTUgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgQ3JlYXRlIEdlbmVyYXRvckZyYW1lIHdpdGggdGhlIGJ5dGVjb2Rl
IG9wX25ld19nZW5lcmF0b3JfZnJhbWUgYW5kIG1ha2Ugb3Bfc2F2ZSAvIG9wX3Jlc3VtZSBERkcv
RlRMIGNhcGFibGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1MjcyMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogYnVpbHRpbnMvR2VuZXJhdG9yUHJvdG90eXBlLmpzOgorICAgICAgICAoZ2VuZXJhdG9y
UmVzdW1lKToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suY3BwOgorICAg
ICAgICAoSlNDOjppc0JyYW5jaCk6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpz
b246CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaDoKKyAgICAgICAgKEpTQzo6
Y29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OmNvbXB1dGVEZWZz
Rm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogYnl0ZWNvZGUvUHJlY2lzZUp1bXBU
YXJnZXRzLmNwcDoKKyAgICAgICAgKEpTQzo6Z2V0SnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNl
dCk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdHZW5lcmF0b3JGcmFtZSk6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0U2F2ZSk6CisgICAgICAgIChKU0M6OkJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0UmVzdW1lKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRv
ckZyYW1lUmVnaXN0ZXIpOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5s
aW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RT
dGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAgICogZGZnL0RGR0JhY2t3YXJkc1By
b3BhZ2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJhY2t3YXJkc1Byb3BhZ2F0
aW9uUGhhc2U6OnByb3BhZ2F0ZSk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6Qnl0ZUNvZGVQYXJzZXIpOgor
ICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKToKKyAgICAgICAg
KiBkZmcvREZHQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpjYXBhYmlsaXR5
TGV2ZWwpOgorICAgICAgICAqIGRmZy9ERkdDbG9iYmVyaXplLmg6CisgICAgICAgIChKU0M6OkRG
Rzo6Y2xvYmJlcml6ZSk6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyc0V4aXRTdGF0ZSk6CisgICAgICAgICogZGZnL0RG
R0RvZXNHQy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6ZG9lc0dDKToKKyAgICAgICAgKiBkZmcv
REZHRml4dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBO
b2RlKToKKyAgICAgICAgKiBkZmcvREZHTWF5RXhpdC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
bWF5RXhpdCk6CisgICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpO
b2RlOjpoYXNHZW5lcmF0b3JGcmFtZVNpemUpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omdl
bmVyYXRvckZyYW1lU2l6ZSk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzR2VuZXJhdG9y
RnJhbWVJbmRleCk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6Z2VuZXJhdG9yRnJhbWVJbmRl
eCk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzU2F2ZWRWYXJpYWJsZUFjY2Vzc0RhdGEp
OgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OnNhdmVkVmFyaWFibGVBY2Nlc3NEYXRhKToKKyAg
ICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNHZW5lcmF0b3JGcmFtZUxvY2Fscyk6CisgICAgICAg
IChKU0M6OkRGRzo6Tm9kZTo6Z2VuZXJhdG9yRnJhbWVMb2NhbHMpOgorICAgICAgICAqIGRmZy9E
RkdOb2RlVHlwZS5oOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAg
KiBkZmcvREZHT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFn
YXRpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6UHJlZGljdGlvblByb3BhZ2F0aW9u
UGhhc2U6OnByb3BhZ2F0ZSk6CisgICAgICAgIChKU0M6OkRGRzo6UHJlZGljdGlvblByb3BhZ2F0
aW9uUGhhc2U6OmRvRG91YmxlVm90aW5nKToKKyAgICAgICAgKiBkZmcvREZHU2FmZVRvRXhlY3V0
ZS5oOgorICAgICAgICAoSlNDOjpERkc6OnNhZmVUb0V4ZWN1dGUpOgorICAgICAgICAqIGRmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVOZXdHZW5lcmF0b3JGcmFtZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZl
SklULmg6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZH
U3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5j
cHA6CisgICAgICAgICogZGZnL0RGR1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpTdHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFzZTo6cnVuKToKKyAgICAg
ICAgKiBmdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHA6CisgICAgICAgICogZnRsL0ZU
TEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaDoKKyAgICAgICAgKiBmdGwvRlRMQ2FwYWJpbGl0aWVz
LmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5Db21waWxlKToKKyAgICAgICAgKiBmdGwvRlRM
TG93ZXJERkdUb0xMVk0uY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0xM
Vk06OmNvbXBpbGVOb2RlKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9MTFZN
Ojpjb21waWxlUHV0R2VuZXJhdG9yRnJhbWVMb2NhbHMpOgorICAgICAgICAoSlNDOjpGVEw6OkRG
Rzo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVTZXRHZW5lcmF0b3JMb2NhbCk6CisgICAgICAgIChK
U0M6OkZUTDo6REZHOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZUdldEdlbmVyYXRvckxvY2FsKToK
KyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlTmV3R2VuZXJh
dG9yRnJhbWUpOgorICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnBy
aXZhdGVDb21waWxlTWFpblBhc3MpOgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBq
aXQvSklUT3Bjb2Rlcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9yZXN1bWVfZnJv
bV9nZW5lcmF0b3JfZnJhbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfY2xlYXJfZ2Vu
ZXJhdG9yX2ZyYW1lKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX25ld19nZW5lcmF0b3Jf
ZnJhbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bfbm9wKToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0X29wX3Jlc3VtZSk6IERlbGV0ZWQuCisgICAgICAgICogbGxpbnQvTExJbnRPZmZz
ZXRzRXh0cmFjdG9yLmNwcDoKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFz
bToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtOgorICAgICAgICAq
IHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFy
c2VJbm5lcik6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUdlbmVyYXRv
ckZ1bmN0aW9uU291cmNlRWxlbWVudHMpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBl
Pjo6Y3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyk6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5o
OgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6
U0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmg6Cisg
ICAgICAgICogcnVudGltZS9HZW5lcmF0b3JGcmFtZS5jcHA6CisgICAgICAgIChKU0M6OkdlbmVy
YXRvckZyYW1lOjpHZW5lcmF0b3JGcmFtZSk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1l
OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6Y3JlYXRl
KToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OnNhdmUpOgorICAgICAgICAoSlNDOjpH
ZW5lcmF0b3JGcmFtZTo6cmVzdW1lKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OnZp
c2l0Q2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6ZmluaXNoQ3JlYXRp
b24pOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJhdG9yRnJhbWUuaDoKKyAgICAg
ICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OmxvY2FsT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6R2Vu
ZXJhdG9yRnJhbWU6Om51bWJlck9mU2F2ZWRDYWxsZWVMb2NhbHNPZmZzZXQpOgorICAgICAgICAo
SlNDOjpHZW5lcmF0b3JGcmFtZTo6bG9jYWxBdCk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojppbml0
KToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpT
R2xvYmFsT2JqZWN0OjpnZW5lcmF0b3JGcmFtZVN0cnVjdHVyZSk6CisgICAgICAgICogcnVudGlt
ZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpWTSk6IERlbGV0ZWQuCisgICAgICAgICogcnVu
dGltZS9WTS5oOgorCiAyMDE2LTAxLTEzICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFA
aWdhbGlhLmNvbT4KIAogICAgICAgICBbQ01ha2VdIERvIG5vdCB1c2UgTExWTSBzdGF0aWMgbGli
cmFyaWVzIGZvciBGVEwgSklUCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVp
bHRpbnMvR2VuZXJhdG9yUHJvdG90eXBlLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0
aW5zL0dlbmVyYXRvclByb3RvdHlwZS5qcwppbmRleCBhM2JiYzM1MzRhZTA1MmY0ZDZmYTI1YmRl
NzAzYzkzZDNhNzk1ZTExLi40OWRkYmY5Yzg0NjkzMzA2NTg3MTFmMThlNzIxNDliYzk4MjJkYTM0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvR2VuZXJhdG9yUHJv
dG90eXBlLmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9HZW5lcmF0b3JQ
cm90b3R5cGUuanMKQEAgLTU4LDcgKzU4LDcgQEAgZnVuY3Rpb24gZ2VuZXJhdG9yUmVzdW1lKGdl
bmVyYXRvciwgc2VudFZhbHVlLCByZXN1bWVNb2RlKQogICAgIH0gZWxzZSB7CiAgICAgICAgIHRy
eSB7CiAgICAgICAgICAgICBnZW5lcmF0b3IuQGdlbmVyYXRvclN0YXRlID0gRXhlY3V0aW5nOwot
ICAgICAgICAgICAgdmFsdWUgPSBnZW5lcmF0b3IuQGdlbmVyYXRvck5leHQuQGNhbGwoZ2VuZXJh
dG9yLkBnZW5lcmF0b3JUaGlzLCBnZW5lcmF0b3IsIHN0YXRlLCBzZW50VmFsdWUsIHJlc3VtZU1v
ZGUpOworICAgICAgICAgICAgdmFsdWUgPSBnZW5lcmF0b3IuQGdlbmVyYXRvck5leHQuQGNhbGwo
Z2VuZXJhdG9yLkBnZW5lcmF0b3JUaGlzLCBnZW5lcmF0b3IsIHN0YXRlLCBzZW50VmFsdWUsIHJl
c3VtZU1vZGUsIGdlbmVyYXRvci5AZ2VuZXJhdG9yRnJhbWUpOwogICAgICAgICAgICAgaWYgKGdl
bmVyYXRvci5AZ2VuZXJhdG9yU3RhdGUgPT09IEV4ZWN1dGluZykgewogICAgICAgICAgICAgICAg
IGdlbmVyYXRvci5AZ2VuZXJhdG9yU3RhdGUgPSBDb21wbGV0ZWQ7CiAgICAgICAgICAgICAgICAg
ZG9uZSA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Qnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZUJhc2ljQmxvY2suY3BwCmluZGV4IDdmMTdjMGVmMTBiNDMzZmFjOGY1OGNiM2I5Y2E1
ZDRkMDE1YmJhMDguLjVhYTE4ZTRjYWY3YTU3NWRkNjQ1ZDZmNmVkNzk3MjhhZjczYmQyNmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxv
Y2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2lj
QmxvY2suY3BwCkBAIC01OCw3ICs1OCw3IEBAIHN0YXRpYyBib29sIGlzQnJhbmNoKE9wY29kZUlE
IG9wY29kZUlEKQogICAgIGNhc2Ugb3Bfc3dpdGNoX2ltbToKICAgICBjYXNlIG9wX3N3aXRjaF9j
aGFyOgogICAgIGNhc2Ugb3Bfc3dpdGNoX3N0cmluZzoKLSAgICBjYXNlIG9wX3NhdmU6CisgICAg
Y2FzZSBvcF9zYXZlX2hpbnQ6CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGRlZmF1bHQ6CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZUxpc3QuanNvbiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZUxpc3QuanNvbgppbmRleCAwNTNiOGRjOWI4NjRmMWI4NmI0Y2VjN2FhNjAxZjdj
ZTJmMDNmMmU0Li4wOGFhYzEyMjU5YzY4ZGEwZTFhYmM5MDkwYmU1NGM5NTVmYjMzMDA1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24K
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCkBA
IC0xNiw2ICsxNiw3IEBACiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXdfYXJyYXlfd2l0
aF9zaXplIiwgImxlbmd0aCIgOiA0IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXdf
YXJyYXlfYnVmZmVyIiwgImxlbmd0aCIgOiA1IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJv
cF9uZXdfcmVnZXhwIiwgImxlbmd0aCIgOiAzIH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJv
cF9uZXdfZ2VuZXJhdG9yX2ZyYW1lIiwgImxlbmd0aCIgOiAzIH0sCiAgICAgICAgICAgICB7ICJu
YW1lIiA6ICJvcF9tb3YiLCAibGVuZ3RoIiA6IDMgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDog
Im9wX25vdCIsICJsZW5ndGgiIDogMyB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfZXEi
LCAibGVuZ3RoIiA6IDQgfSwKQEAgLTEzNCw3ICsxMzUsMTEgQEAKICAgICAgICAgICAgIHsgIm5h
bWUiIDogIm9wX2NvcHlfcmVzdCIsICJsZW5ndGgiOiA0IH0sCiAgICAgICAgICAgICB7ICJuYW1l
IiA6ICJvcF9nZXRfcmVzdF9sZW5ndGgiLCAibGVuZ3RoIjogMyB9LAogICAgICAgICAgICAgeyAi
bmFtZSIgOiAib3Bfc2F2ZSIsICJsZW5ndGgiIDogNCB9LAotICAgICAgICAgICAgeyAibmFtZSIg
OiAib3BfcmVzdW1lIiwgImxlbmd0aCIgOiAzIH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJv
cF9zYXZlX2hpbnQiLCAibGVuZ3RoIiA6IDQgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9w
X3Jlc3VtZV9oaW50IiwgImxlbmd0aCIgOiA0IH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJv
cF9yZXN1bWVfZnJvbV9nZW5lcmF0b3JfZnJhbWUiLCAibGVuZ3RoIiA6IDQgfSwKKyAgICAgICAg
ICAgIHsgIm5hbWUiIDogIm9wX2NsZWFyX2dlbmVyYXRvcl9mcmFtZSIsICJsZW5ndGgiIDogMiB9
LAorICAgICAgICAgICAgeyAibmFtZSIgOiAib3Bfbm9wIiwgImxlbmd0aCIgOiAxIH0sCiAgICAg
ICAgICAgICB7ICJuYW1lIiA6ICJvcF93YXRjaGRvZyIsICJsZW5ndGgiIDogMSB9CiAgICAgICAg
IF0KICAgICB9LApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlVXNlRGVmLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVV
c2VEZWYuaAppbmRleCA4MDExMTRjMzcyYTI3N2Y2ZTE3NzA5YjkwYmUyMDdjOGY5OWJlODJkLi5k
YWVmODFjMjY5YmI1NDE1NGVhNmI2ZGM4MzhhZmM2OWNlZTcyYzk1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaApAQCAtNTUsNiArNTUsOCBA
QCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoCiAgICAgY2FzZSBvcF9jcmVhdGVf
b3V0X29mX2JhbmRfYXJndW1lbnRzOgogICAgIGNhc2Ugb3BfZ2V0X3Jlc3RfbGVuZ3RoOgogICAg
IGNhc2Ugb3Bfd2F0Y2hkb2c6CisgICAgY2FzZSBvcF9uZXdfZ2VuZXJhdG9yX2ZyYW1lOgorICAg
IGNhc2Ugb3Bfbm9wOgogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBvcF9hc3NlcnQ6CiAgICAg
Y2FzZSBvcF9nZXRfc2NvcGU6CkBAIC03Miw3ICs3NCw4IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JC
eXRlY29kZU9mZnNldCgKICAgICBjYXNlIG9wX2puZXFfbnVsbDoKICAgICBjYXNlIG9wX2RlYzoK
ICAgICBjYXNlIG9wX2luYzoKLSAgICBjYXNlIG9wX3Jlc3VtZTogeworICAgIGNhc2Ugb3BfcmVz
dW1lX2hpbnQ6CisgICAgY2FzZSBvcF9jbGVhcl9nZW5lcmF0b3JfZnJhbWU6IHsKICAgICAgICAg
QVNTRVJUKG9wY29kZUxlbmd0aHNbb3Bjb2RlSURdID49IDEpOwogICAgICAgICBmdW5jdG9yKGNv
ZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBpbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQp
OwogICAgICAgICByZXR1cm47CkBAIC0xNjUsNyArMTY4LDggQEAgdm9pZCBjb21wdXRlVXNlc0Zv
ckJ5dGVjb2RlT2Zmc2V0KAogICAgIGNhc2Ugb3BfbmV3X2dlbmVyYXRvcl9mdW5jOgogICAgIGNh
c2Ugb3BfZ2V0X3BhcmVudF9zY29wZToKICAgICBjYXNlIG9wX2NyZWF0ZV9zY29wZWRfYXJndW1l
bnRzOgotICAgIGNhc2Ugb3BfZ2V0X2Zyb21fYXJndW1lbnRzOiB7CisgICAgY2FzZSBvcF9nZXRf
ZnJvbV9hcmd1bWVudHM6CisgICAgY2FzZSBvcF9yZXN1bWVfZnJvbV9nZW5lcmF0b3JfZnJhbWU6
IHsKICAgICAgICAgQVNTRVJUKG9wY29kZUxlbmd0aHNbb3Bjb2RlSURdID49IDIpOwogICAgICAg
ICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBpbnN0cnVjdGlvblsy
XS51Lm9wZXJhbmQpOwogICAgICAgICByZXR1cm47CkBAIC0yNTAsNyArMjU0LDcgQEAgdm9pZCBj
b21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAogICAgICAgICAgICAgZnVuY3Rvcihjb2RlQmxv
Y2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgbGFzdEFyZyArIGkpOwogICAgICAgICByZXR1cm47
CiAgICAgfQotICAgIGNhc2Ugb3Bfc2F2ZTogeworICAgIGNhc2Ugb3Bfc2F2ZV9oaW50OiB7CiAg
ICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0
aW9uWzFdLnUub3BlcmFuZCk7CiAgICAgICAgIHVuc2lnbmVkIG1lcmdlUG9pbnRCeXRlY29kZU9m
ZnNldCA9IGJ5dGVjb2RlT2Zmc2V0ICsgaW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kOwogICAgICAg
ICBCeXRlY29kZUJhc2ljQmxvY2sqIG1lcmdlUG9pbnRCbG9jayA9IG51bGxwdHI7CkBAIC0yNjYs
NiArMjcwLDE1IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCgKICAgICAgICAg
fSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CisgICAgY2FzZSBvcF9zYXZlOiB7CisgICAgICAg
IGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzFd
LnUub3BlcmFuZCk7CisgICAgICAgIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9IGlu
c3RydWN0aW9uWzJdLnUudW5zaWduZWRWYWx1ZTsKKyAgICAgICAgY29uc3QgRmFzdEJpdFZlY3Rv
ciYgbGl2ZW5lc3MgPSBjb2RlQmxvY2stPmxpdmVDYWxsZWVMb2NhbHNBdFlpZWxkKGxpdmVDYWxs
ZWVMb2NhbHNJbmRleCk7CisgICAgICAgIGxpdmVuZXNzLmZvckVhY2hTZXRCaXQoWyZdKHVuc2ln
bmVkIGxvY2FsKSB7CisgICAgICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24s
IG9wY29kZUlELCB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChsb2NhbCkub2Zmc2V0KCkpOworICAg
ICAgICB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KICAgICBkZWZhdWx0OgogICAgICAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBicmVhazsKQEAgLTI4OSw2ICsz
MDIsNyBAQCB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2Rl
QmxvY2ssIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvYwogICAgIGNhc2Ugb3BfdGhyb3c6CiAgICAg
Y2FzZSBvcF90aHJvd19zdGF0aWNfZXJyb3I6CiAgICAgY2FzZSBvcF9zYXZlOgorICAgIGNhc2Ug
b3Bfc2F2ZV9oaW50OgogICAgIGNhc2Ugb3BfYXNzZXJ0OgogICAgIGNhc2Ugb3BfZGVidWc6CiAg
ICAgY2FzZSBvcF9yZXQ6CkBAIC0zMjMsNiArMzM3LDggQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5
dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJs
b2MKICAgICBjYXNlIG9wX3Byb2ZpbGVfY29udHJvbF9mbG93OgogICAgIGNhc2Ugb3BfcHV0X3Rv
X2FyZ3VtZW50czoKICAgICBjYXNlIG9wX3dhdGNoZG9nOgorICAgIGNhc2Ugb3BfY2xlYXJfZ2Vu
ZXJhdG9yX2ZyYW1lOgorICAgIGNhc2Ugb3Bfbm9wOgogI2RlZmluZSBMTElOVF9IRUxQRVJfT1BD
T0RFUyhvcGNvZGUsIGxlbmd0aCkgY2FzZSBvcGNvZGU6CiAgICAgICAgIEZPUl9FQUNIX0xMSU5U
X09QQ09ERV9FWFRFTlNJT04oTExJTlRfSEVMUEVSX09QQ09ERVMpOwogI3VuZGVmIExMSU5UX0hF
TFBFUl9PUENPREVTCkBAIC00MTUsNyArNDMxLDkgQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVj
b2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2MK
ICAgICBjYXNlIG9wX2RlbF9ieV92YWw6CiAgICAgY2FzZSBvcF91bnNpZ25lZDoKICAgICBjYXNl
IG9wX2dldF9mcm9tX2FyZ3VtZW50czogCi0gICAgY2FzZSBvcF9nZXRfcmVzdF9sZW5ndGg6IHsK
KyAgICBjYXNlIG9wX2dldF9yZXN0X2xlbmd0aDoKKyAgICBjYXNlIG9wX25ld19nZW5lcmF0b3Jf
ZnJhbWU6CisgICAgY2FzZSBvcF9yZXN1bWVfZnJvbV9nZW5lcmF0b3JfZnJhbWU6IHsKICAgICAg
ICAgQVNTRVJUKG9wY29kZUxlbmd0aHNbb3Bjb2RlSURdID4gMSk7CiAgICAgICAgIGZ1bmN0b3Io
Y29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzFdLnUub3BlcmFu
ZCk7CiAgICAgICAgIHJldHVybjsKQEAgLTQzMSw3ICs0NDksNyBAQCB2b2lkIGNvbXB1dGVEZWZz
Rm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFzaWNCbG9j
ayogYmxvYwogICAgICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNv
ZGVJRCwgdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaSkub2Zmc2V0KCkpOwogICAgICAgICByZXR1
cm47CiAgICAgfQotICAgIGNhc2Ugb3BfcmVzdW1lOiB7CisgICAgY2FzZSBvcF9yZXN1bWVfaGlu
dDogewogICAgICAgICBSRUxFQVNFX0FTU0VSVChibG9jay0+c3VjY2Vzc29ycygpLnNpemUoKSA9
PSAxKTsKICAgICAgICAgYmxvY2stPnN1Y2Nlc3NvcnMoKVswXS0+aW4oKS5mb3JFYWNoU2V0Qml0
KFsmXSh1bnNpZ25lZCBsb2NhbCkgewogICAgICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGlu
c3RydWN0aW9uLCBvcGNvZGVJRCwgdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwobG9jYWwpLm9mZnNl
dCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKaW5k
ZXggNTkwNWU5MTgzYzhmMTI2NjRlMmJhM2RkMjlhNWM0NjU2NzY4ZGMwMy4uOTJkNGE5ZmRjZGY1
NWVmNzFiMWVmYjA5NTdjNjkyYjU3NjE5MTJjMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTE1NTYsMjcgKzE1NTYsNjMgQEAgdm9pZCBDb2Rl
QmxvY2s6OmR1bXBCeXRlY29kZSgKICAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAlZCIsIGRl
YnVnSG9va05hbWUoZGVidWdIb29rSUQpLCBoYXNCcmVha3BvaW50RmxhZyk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQotICAgICAgICBjYXNlIG9wX3NhdmU6IHsKLSAgICAgICAgICAg
IGludCBnZW5lcmF0b3IgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgY2FzZSBvcF9zYXZl
X2hpbnQ6IHsKKyAgICAgICAgICAgIGludCBmcmFtZSA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAg
ICAgICAgICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gKCsraXQpLT51LnVuc2ln
bmVkVmFsdWU7CiAgICAgICAgICAgICBpbnQgb2Zmc2V0ID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAg
ICAgICAgICAgICBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlbmVzcyA9IG1fcmFyZURhdGEtPm1f
bGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGRbbGl2ZUNhbGxlZUxvY2Fsc0luZGV4XTsKICAgICAgICAg
ICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgInNhdmUiKTsK
LSAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAiLCByZWdpc3Rlck5hbWUoZ2VuZXJhdG9yKS5k
YXRhKCkpOworICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICIsIHJlZ2lzdGVyTmFtZShmcmFt
ZSkuZGF0YSgpKTsKICAgICAgICAgICAgIGxpdmVuZXNzLmR1bXAob3V0KTsKICAgICAgICAgICAg
IG91dC5wcmludGYoIihAbGl2ZSUxdSksICVkKC0+JWQpIiwgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4
LCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9Ci0gICAgICAgIGNhc2Ugb3BfcmVzdW1lOiB7Ci0gICAgICAgICAgICBpbnQgZ2VuZXJhdG9y
ID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIGNhc2Ugb3Bfc2F2ZTogeworICAgICAgICAg
ICAgaW50IGZyYW1lID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICB1bnNpZ25lZCBs
aXZlQ2FsbGVlTG9jYWxzSW5kZXggPSAoKytpdCktPnUudW5zaWduZWRWYWx1ZTsKKyAgICAgICAg
ICAgICsraXQ7IC8vIGRpc2NhcmQgb2Zmc2V0LgogICAgICAgICAgICAgY29uc3QgRmFzdEJpdFZl
Y3RvciYgbGl2ZW5lc3MgPSBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkW2xp
dmVDYWxsZWVMb2NhbHNJbmRleF07Ci0gICAgICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0
LCBleGVjLCBsb2NhdGlvbiwgaXQsICJyZXN1bWUiKTsKLSAgICAgICAgICAgIG91dC5wcmludGYo
IiVzLCAiLCByZWdpc3Rlck5hbWUoZ2VuZXJhdG9yKS5kYXRhKCkpOworICAgICAgICAgICAgcHJp
bnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAic2F2ZSIpOworICAgICAg
ICAgICAgb3V0LnByaW50ZigiJXMsICIsIHJlZ2lzdGVyTmFtZShmcmFtZSkuZGF0YSgpKTsKICAg
ICAgICAgICAgIGxpdmVuZXNzLmR1bXAob3V0KTsKICAgICAgICAgICAgIG91dC5wcmludGYoIihA
bGl2ZSUxdSkiLCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9yZXN1bWVfaGludDogeworICAgICAgICAgICAgaW50
IGZyYW1lID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICB1bnNpZ25lZCBsaXZlQ2Fs
bGVlTG9jYWxzSW5kZXggPSAoKytpdCktPnUudW5zaWduZWRWYWx1ZTsKKyAgICAgICAgICAgIHVu
c2lnbmVkIG1heExpdmVDYWxsZWVzID0gKCsraXQpLT51LnVuc2lnbmVkVmFsdWU7CisgICAgICAg
ICAgICBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlbmVzcyA9IG1fcmFyZURhdGEtPm1fbGl2ZUNh
bGxlZUxvY2Fsc0F0WWllbGRbbGl2ZUNhbGxlZUxvY2Fsc0luZGV4XTsKKyAgICAgICAgICAgIHBy
aW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgInJlc3VtZSIpOworICAg
ICAgICAgICAgb3V0LnByaW50ZigiJXMsICIsIHJlZ2lzdGVyTmFtZShmcmFtZSkuZGF0YSgpKTsK
KyAgICAgICAgICAgIGxpdmVuZXNzLmR1bXAob3V0KTsKKyAgICAgICAgICAgIG91dC5wcmludGYo
IihAbGl2ZSUxdSksICV1IiwgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4LCBtYXhMaXZlQ2FsbGVlcyk7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIG9wX3Jlc3VtZV9m
cm9tX2dlbmVyYXRvcl9mcmFtZTogeworICAgICAgICAgICAgaW50IGRzdCA9ICgrK2l0KS0+dS5v
cGVyYW5kOworICAgICAgICAgICAgaW50IGZyYW1lID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAg
ICAgICAgICB1bnNpZ25lZCBpbmRleCA9ICgrK2l0KS0+dS51bnNpZ25lZFZhbHVlOworICAgICAg
ICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAicmVzdW1l
X2Zyb21fZ2VuZXJhdG9yX2ZyYW1lIik7CisgICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMs
ICV1IiwgcmVnaXN0ZXJOYW1lKGRzdCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZnJhbWUpLmRhdGEo
KSwgaW5kZXgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBv
cF9jbGVhcl9nZW5lcmF0b3JfZnJhbWU6IHsKKyAgICAgICAgICAgIGludCBmcmFtZSA9ICgrK2l0
KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgcHJpbnRMb2NhdGlvbk9wQW5kUmVnaXN0ZXJPcGVy
YW5kKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAiY2xlYXJfZ2VuZXJhdG9yX2ZyYW1lIiwgZnJh
bWUpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9uZXdf
Z2VuZXJhdG9yX2ZyYW1lOiB7CisgICAgICAgICAgICBpbnQgZHN0ID0gKCsraXQpLT51Lm9wZXJh
bmQ7CisgICAgICAgICAgICB1bnNpZ25lZCBnZW5lcmF0b3JGcmFtZVNpemUgPSAoKytpdCktPnUu
dW5zaWduZWRWYWx1ZTsKKyAgICAgICAgICAgIHByaW50TG9jYXRpb25PcEFuZFJlZ2lzdGVyT3Bl
cmFuZChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgIm5ld19nZW5lcmF0b3JfZnJhbWUiLCBkc3Qp
OworICAgICAgICAgICAgb3V0LnByaW50ZigiICV1IiwgZ2VuZXJhdG9yRnJhbWVTaXplKTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2Ugb3Bfbm9wOiB7CisgICAg
ICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJub3Ai
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfYXNzZXJ0
OiB7CiAgICAgICAgICAgICBpbnQgY29uZGl0aW9uID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAg
ICAgICAgICBpbnQgbGluZSA9ICgrK2l0KS0+dS5vcGVyYW5kOwpAQCAtMTg0Nyw2ICsxODgzLDEy
IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIENvcHlQYXJzZWRCbG9j
a1RhZywgQ29kZUJsb2NrJiBvdGhlcikKICAgICBzZXROdW1QYXJhbWV0ZXJzKHVubGlua2VkQ29k
ZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpOwogfQogCitzdHJ1Y3QgR2VuZXJhdG9yUG9pbnRzIHsK
KyAgICBzaXplX3Qgc2F2ZVBvaW50OworICAgIHNpemVfdCBtZXJnZVBvaW50OworICAgIHNpemVf
dCByZXN1bWVQb2ludDsKK307CisKIHZvaWQgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYg
dm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rZWRDb2RlQmxvY2sq
IHVubGlua2VkQ29kZUJsb2NrLAogICAgIEpTU2NvcGUqIHNjb3BlKQogewpAQCAtMTk4MCw5ICsy
MDIyLDEwIEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4
ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAgSGFzaFNldDxKU01vZHVsZUVu
dmlyb25tZW50Kj4gc3Ryb25nbHlSZWZlcmVuY2VkTW9kdWxlRW52aXJvbm1lbnRzOwogCiAgICAg
Ly8gQm9va2tlZXAgdGhlIG1lcmdlIHBvaW50IGJ5dGVjb2RlIG9mZnNldHMuCi0gICAgVmVjdG9y
PHNpemVfdD4gbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0czsKKyAgICBWZWN0b3I8R2VuZXJhdG9y
UG9pbnRzPiBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXRzOwogCiAgICAgUmVmQ291bnRlZEFycmF5
PEluc3RydWN0aW9uPiBpbnN0cnVjdGlvbnMoaW5zdHJ1Y3Rpb25Db3VudCk7CisgICAgdW5zaWdu
ZWQgbmV3R2VuZXJhdG9yRnJhbWVJbnN0cnVjdGlvbk9mZnNldCA9IDA7CiAKICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyAhaW5zdHJ1Y3Rpb25SZWFkZXIuYXRFbmQoKTsgKSB7CiAgICAgICAgIGNv
bnN0IFVubGlua2VkSW5zdHJ1Y3Rpb24qIHBjID0gaW5zdHJ1Y3Rpb25SZWFkZXIubmV4dCgpOwpA
QCAtMjI3MCwxMiArMjMxMywyNiBAQCB2b2lkIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0m
IHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGluawogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KIAotICAgICAgICBjYXNlIG9wX3NhdmU6IHsKKyAgICAgICAg
Y2FzZSBvcF9zYXZlX2hpbnQ6IHsKICAgICAgICAgICAgIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2Nh
bHNJbmRleCA9IHBjWzJdLnUuaW5kZXg7CiAgICAgICAgICAgICBpbnQgb2Zmc2V0ID0gcGNbM10u
dS5vcGVyYW5kOwogICAgICAgICAgICAgaWYgKGxpdmVDYWxsZWVMb2NhbHNJbmRleCA+PSBtZXJn
ZVBvaW50Qnl0ZWNvZGVPZmZzZXRzLnNpemUoKSkKICAgICAgICAgICAgICAgICBtZXJnZVBvaW50
Qnl0ZWNvZGVPZmZzZXRzLnJlc2l6ZShsaXZlQ2FsbGVlTG9jYWxzSW5kZXggKyAxKTsKLSAgICAg
ICAgICAgIG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldHNbbGl2ZUNhbGxlZUxvY2Fsc0luZGV4XSA9
IGkgKyBvZmZzZXQ7CisgICAgICAgICAgICBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXRzW2xpdmVD
YWxsZWVMb2NhbHNJbmRleF0uc2F2ZVBvaW50ID0gaTsKKyAgICAgICAgICAgIG1lcmdlUG9pbnRC
eXRlY29kZU9mZnNldHNbbGl2ZUNhbGxlZUxvY2Fsc0luZGV4XS5tZXJnZVBvaW50ID0gaSArIG9m
ZnNldDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBvcF9y
ZXN1bWVfaGludDogeworICAgICAgICAgICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4
ID0gcGNbMl0udS5pbmRleDsKKyAgICAgICAgICAgIGlmIChsaXZlQ2FsbGVlTG9jYWxzSW5kZXgg
Pj0gbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0cy5zaXplKCkpCisgICAgICAgICAgICAgICAgbWVy
Z2VQb2ludEJ5dGVjb2RlT2Zmc2V0cy5yZXNpemUobGl2ZUNhbGxlZUxvY2Fsc0luZGV4ICsgMSk7
CisgICAgICAgICAgICBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXRzW2xpdmVDYWxsZWVMb2NhbHNJ
bmRleF0ucmVzdW1lUG9pbnQgPSBpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKwor
ICAgICAgICBjYXNlIG9wX25ld19nZW5lcmF0b3JfZnJhbWU6IHsKKyAgICAgICAgICAgIG5ld0dl
bmVyYXRvckZyYW1lSW5zdHJ1Y3Rpb25PZmZzZXQgPSBpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KIApAQCAtMjI5MCwxOCArMjM0Nyw1NyBAQCB2b2lkIENvZGVCbG9jazo6ZmluaXNo
Q3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGlu
awogCiAgICAgbV9pbnN0cnVjdGlvbnMgPSBXVEZNb3ZlKGluc3RydWN0aW9ucyk7CiAKLSAgICAv
LyBQZXJmb3JtIGJ5dGVjb2RlIGxpdmVuZXNzIGFuYWx5c2lzIHRvIGRldGVybWluZSB3aGljaCBs
b2NhbHMgYXJlIGxpdmUgYW5kIHNob3VsZCBiZSByZXN1bWVkIHdoZW4gZXhlY3V0aW5nIG9wX3Jl
c3VtZS4KKyAgICAvLyBQZXJmb3JtIGJ5dGVjb2RlIGxpdmVuZXNzIGFuYWx5c2lzIHRvIGRldGVy
bWluZSB3aGljaCBsb2NhbHMgYXJlIGxpdmUgYW5kIHNob3VsZCBiZSByZXN1bWVkIHdoZW4gZXhl
Y3V0aW5nIG9wX3Jlc3VtZV9oaW50LgogICAgIGlmICh1bmxpbmtlZENvZGVCbG9jay0+cGFyc2VN
b2RlKCkgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JCb2R5TW9kZSkgeworICAgICAgICB1
bnNpZ25lZCBtYXhHZW5lcmF0b3JGcmFtZVNpemUgPSAwOwogICAgICAgICBpZiAoc2l6ZV90IGNv
dW50ID0gbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0cy5zaXplKCkpIHsKICAgICAgICAgICAgIGNy
ZWF0ZVJhcmVEYXRhSWZOZWNlc3NhcnkoKTsKICAgICAgICAgICAgIEJ5dGVjb2RlTGl2ZW5lc3NB
bmFseXNpcyBsaXZlbmVzcyh0aGlzKTsKICAgICAgICAgICAgIG1fcmFyZURhdGEtPm1fbGl2ZUNh
bGxlZUxvY2Fsc0F0WWllbGQuZ3Jvdyhjb3VudCk7CisKICAgICAgICAgICAgIHNpemVfdCBsaXZl
Q2FsbGVlTG9jYWxzSW5kZXggPSAwOwotICAgICAgICAgICAgZm9yIChzaXplX3QgYnl0ZWNvZGVP
ZmZzZXQgOiBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXRzKSB7Ci0gICAgICAgICAgICAgICAgbV9y
YXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZFtsaXZlQ2FsbGVlTG9jYWxzSW5kZXhd
ID0gbGl2ZW5lc3MuZ2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNl
dCk7CisKKyAgICAgICAgICAgIC8vIENhbGN1bGF0ZSBsaXZlbmVzcyBhbmQgc3RvcmUgZGF0YS4K
KyAgICAgICAgICAgIGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9IDA7CisgICAgICAgICAgICBmb3Ig
KGNvbnN0IEdlbmVyYXRvclBvaW50cyYgcG9pbnRzIDogbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0
cykgeworICAgICAgICAgICAgICAgIHNpemVfdCBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXQgPSBw
b2ludHMubWVyZ2VQb2ludDsKKyAgICAgICAgICAgICAgICBGYXN0Qml0VmVjdG9yIGxpdmVuZXNz
VmVjdG9yID0gbGl2ZW5lc3MuZ2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29kZU9mZnNldChtZXJnZVBv
aW50Qnl0ZWNvZGVPZmZzZXQpOworICAgICAgICAgICAgICAgIG1fcmFyZURhdGEtPm1fbGl2ZUNh
bGxlZUxvY2Fsc0F0WWllbGRbbGl2ZUNhbGxlZUxvY2Fsc0luZGV4XSA9IGxpdmVuZXNzVmVjdG9y
OworICAgICAgICAgICAgICAgIG1heEdlbmVyYXRvckZyYW1lU2l6ZSA9IHN0ZDo6bWF4PHVuc2ln
bmVkPihtYXhHZW5lcmF0b3JGcmFtZVNpemUsIGxpdmVuZXNzVmVjdG9yLmJpdENvdW50KCkpOwor
ICAgICAgICAgICAgICAgICsrbGl2ZUNhbGxlZUxvY2Fsc0luZGV4OworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICAvLyBSZXdyaXRlIGJ5dGVjb2RlcyBiYXNlZCBvbiBjYWxjdWxhdGVkIGxp
dmVuZXNzLgorICAgICAgICAgICAgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gMDsKKyAgICAgICAg
ICAgIGZvciAoY29uc3QgR2VuZXJhdG9yUG9pbnRzJiBwb2ludHMgOiBtZXJnZVBvaW50Qnl0ZWNv
ZGVPZmZzZXRzKSB7CisgICAgICAgICAgICAgICAgc2l6ZV90IHNhdmVQb2ludEJ5dGVjb2RlT2Zm
c2V0ID0gcG9pbnRzLnNhdmVQb2ludDsKKyAgICAgICAgICAgICAgICBzaXplX3QgcmVzdW1lUG9p
bnRCeXRlY29kZU9mZnNldCA9IHBvaW50cy5yZXN1bWVQb2ludDsKKworICAgICAgICAgICAgICAg
IGNvbnN0IEZhc3RCaXRWZWN0b3ImIGxpdmVuZXNzVmVjdG9yID0gbV9yYXJlRGF0YS0+bV9saXZl
Q2FsbGVlTG9jYWxzQXRZaWVsZFtsaXZlQ2FsbGVlTG9jYWxzSW5kZXhdOworCisgICAgICAgICAg
ICAgICAgLy8gUGF0Y2ggb3BfcmVzdW1lX2hpbnQgd2l0aCBhY3R1YWwgb3BzLgorICAgICAgICAg
ICAgICAgIGludCBnZW5lcmF0b3JGcmFtZUluZGV4ID0gbV9pbnN0cnVjdGlvbnNbcmVzdW1lUG9p
bnRCeXRlY29kZU9mZnNldCArIDFdLnUub3BlcmFuZDsKKyAgICAgICAgICAgICAgICBpZiAoIWxp
dmVuZXNzVmVjdG9yLmJpdENvdW50KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCA0OyArK2kpCisgICAgICAgICAgICAgICAgICAgICAgICBtX2luc3RydWN0
aW9uc1tyZXN1bWVQb2ludEJ5dGVjb2RlT2Zmc2V0ICsgaV0gPSB2bS5pbnRlcnByZXRlci0+Z2V0
T3Bjb2RlKG9wX25vcCk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICAgICAgc2l6ZV90IGkgPSAwOworICAgICAgICAgICAgICAgICAgICBsaXZlbmVzc1ZlY3Rvci5m
b3JFYWNoU2V0Qml0KFsmXSh1bnNpZ25lZCBsb2NhbCkgeworICAgICAgICAgICAgICAgICAgICAg
ICAgc2l6ZV90IGluZGV4ID0gaSsrOworICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG9m
ZnNldCA9IHJlc3VtZVBvaW50Qnl0ZWNvZGVPZmZzZXQgKyBpbmRleCAqIDQ7CisgICAgICAgICAg
ICAgICAgICAgICAgICBtX2luc3RydWN0aW9uc1tvZmZzZXRdID0gdm0uaW50ZXJwcmV0ZXItPmdl
dE9wY29kZShvcF9yZXN1bWVfZnJvbV9nZW5lcmF0b3JfZnJhbWUpOworICAgICAgICAgICAgICAg
ICAgICAgICAgbV9pbnN0cnVjdGlvbnNbb2Zmc2V0ICsgMV0udS5vcGVyYW5kID0gdmlydHVhbFJl
Z2lzdGVyRm9yTG9jYWwobG9jYWwpLm9mZnNldCgpOworICAgICAgICAgICAgICAgICAgICAgICAg
bV9pbnN0cnVjdGlvbnNbb2Zmc2V0ICsgMl0udS5vcGVyYW5kID0gZ2VuZXJhdG9yRnJhbWVJbmRl
eDsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1faW5zdHJ1Y3Rpb25zW29mZnNldCArIDNdLnUu
dW5zaWduZWRWYWx1ZSA9IGluZGV4OworICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBtX2luc3RydWN0aW9uc1tzYXZlUG9pbnRCeXRl
Y29kZU9mZnNldF0gPSB2bS5pbnRlcnByZXRlci0+Z2V0T3Bjb2RlKG9wX3NhdmUpOwogICAgICAg
ICAgICAgICAgICsrbGl2ZUNhbGxlZUxvY2Fsc0luZGV4OwogICAgICAgICAgICAgfQogICAgICAg
ICB9CisgICAgICAgIC8vIEZpbGwgb3BfbmV3X2dlbmVyYXRvcl9mcmFtZSdzIHNpemUuCisgICAg
ICAgIG1faW5zdHJ1Y3Rpb25zW25ld0dlbmVyYXRvckZyYW1lSW5zdHJ1Y3Rpb25PZmZzZXQgKyAy
XS51LnVuc2lnbmVkVmFsdWUgPSBtYXhHZW5lcmF0b3JGcmFtZVNpemU7CiAgICAgfQogCiAgICAg
Ly8gU2V0IG9wdGltaXphdGlvbiB0aHJlc2hvbGRzIG9ubHkgYWZ0ZXIgbV9pbnN0cnVjdGlvbnMg
aXMgaW5pdGlhbGl6ZWQsIHNpbmNlIHRoZXNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHMuY3BwCmluZGV4IGUyY2IwMDA0ODM3OTRi
YTkyZDUxMGRjZjVmYTk5NDg4NWEyM2RjM2QuLjJmMzVjZmIzOTk1NzA3NTg4YzJjNThhNDI5MzQ3
NDEzNDNiN2U1N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Q
cmVjaXNlSnVtcFRhcmdldHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9QcmVjaXNlSnVtcFRhcmdldHMuY3BwCkBAIC01NCw3ICs1NCw3IEBAIHN0YXRpYyB2b2lkIGdl
dEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEludGVy
cHJldGVyKiBpCiAgICAgY2FzZSBvcF9qbmxlc3NlcToKICAgICBjYXNlIG9wX2puZ3JlYXRlcjoK
ICAgICBjYXNlIG9wX2puZ3JlYXRlcmVxOgotICAgIGNhc2Ugb3Bfc2F2ZTogLy8gVGhlIGp1bXAg
b2Ygb3Bfc2F2ZSBpcyBwdXJlbHkgZm9yIGNhbGN1bGF0aW5nIGxpdmVuZXNzLgorICAgIGNhc2Ug
b3Bfc2F2ZV9oaW50OiAvLyBUaGUganVtcCBvZiBvcF9zYXZlX2hpbnQgaXMgcHVyZWx5IGZvciBj
YWxjdWxhdGluZyBsaXZlbmVzcy4KICAgICAgICAgb3V0LmFwcGVuZChieXRlY29kZU9mZnNldCAr
IGN1cnJlbnRbM10udS5vcGVyYW5kKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBvcF9zd2l0
Y2hfaW1tOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCBkMTVlMjI0MzUyNjZmZTFhZmYzZDVmNzlhMWRk
YTc1YjliZGFmM2YzLi4zNGI4ZjYxMTA3NGU1ZWEzNWVkMzc0YzEyNzg4M2Y1MjE5ZjFmNzc4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmNwcApAQCAtMjU3LDcgKzI1Nyw3IEBAIFBhcnNlckVycm9yIEJ5dGVjb2Rl
R2VuZXJhdG9yOjpnZW5lcmF0ZSgpCiAgICAgICAgIC8vICAgIGZ1bmN0aW9uICpnZW4oYSwgYiA9
IGhlbGxvKCkpCiAgICAgICAgIC8vICAgIHsKICAgICAgICAgLy8gICAgICAgIHJldHVybiB7Ci0g
ICAgICAgIC8vICAgICAgICAgICAgQGdlbmVyYXRvck5leHQ6IGZ1bmN0aW9uIChAZ2VuZXJhdG9y
LCBAZ2VuZXJhdG9yU3RhdGUsIEBnZW5lcmF0b3JWYWx1ZSwgQGdlbmVyYXRvclJlc3VtZU1vZGUp
CisgICAgICAgIC8vICAgICAgICAgICAgQGdlbmVyYXRvck5leHQ6IGZ1bmN0aW9uIChAZ2VuZXJh
dG9yLCBAZ2VuZXJhdG9yU3RhdGUsIEBnZW5lcmF0b3JWYWx1ZSwgQGdlbmVyYXRvclJlc3VtZU1v
ZGUsIEBnZW5lcmF0b3JGcmFtZSkKICAgICAgICAgLy8gICAgICAgICAgICB7CiAgICAgICAgIC8v
ICAgICAgICAgICAgICAgIGFyZ3VtZW50czsgIC8vIFRoaXMgYGFyZ3VtZW50c2Agc2hvdWxkIHJl
ZmVyZW5jZSB0byB0aGUgZ2VuJ3MgYXJndW1lbnRzLgogICAgICAgICAvLyAgICAgICAgICAgICAg
ICAuLi4KQEAgLTUzNyw2ICs1MzcsOSBAQCBQYXJzZXJFcnJvciBCeXRlY29kZUdlbmVyYXRvcjo6
Z2VuZXJhdGUoKQogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JCb2R5TW9kZTog
ewogICAgICAgICAvLyB8dGhpc3wgaXMgYWxyZWFkeSBmaWxsZWQgY29ycmVjdGx5IGJlZm9yZSBo
ZXJlLgogICAgICAgICBlbWl0TG9hZChtX25ld1RhcmdldFJlZ2lzdGVyLCBqc1VuZGVmaW5lZCgp
KTsKKworICAgICAgICBlbWl0TmV3R2VuZXJhdG9yRnJhbWUoZ2VuZXJhdG9yRnJhbWVSZWdpc3Rl
cigpKTsKKyAgICAgICAgZW1pdFB1dEJ5SWQoZ2VuZXJhdG9yUmVnaXN0ZXIoKSwgcHJvcGVydHlO
YW1lcygpLmdlbmVyYXRvckZyYW1lUHJpdmF0ZU5hbWUsIGdlbmVyYXRvckZyYW1lUmVnaXN0ZXIo
KSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApAQCAtMjc0NCw2ICsyNzQ3LDE0IEBAIFJlZ2lz
dGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RnVuY3Rpb24oUmVnaXN0ZXJJRCogZHN0
LCBGdW5jdGlvbk1ldGFkYXRhCiAgICAgcmV0dXJuIGRzdDsKIH0KIAorUmVnaXN0ZXJJRCogQnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdHZW5lcmF0b3JGcmFtZShSZWdpc3RlcklEKiBkc3QpCit7
CisgICAgZW1pdE9wY29kZShvcF9uZXdfZ2VuZXJhdG9yX2ZyYW1lKTsKKyAgICBpbnN0cnVjdGlv
bnMoKS5hcHBlbmQoZHN0LT5pbmRleCgpKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7
CisgICAgcmV0dXJuIGRzdDsKK30KKwogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRDYWxsKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogZnVuYywgRXhwZWN0ZWRGdW5jdGlv
biBleHBlY3RlZEZ1bmN0aW9uLCBDYWxsQXJndW1lbnRzJiBjYWxsQXJndW1lbnRzLCBjb25zdCBK
U1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBj
b25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpCiB7CiAgICAgcmV0dXJuIGVtaXRDYWxsKG9w
X2NhbGwsIGRzdCwgZnVuYywgZXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3Qs
IGRpdm90U3RhcnQsIGRpdm90RW5kKTsKQEAgLTQxNDQsOCArNDE1NSw4IEBAIHZvaWQgQnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXRZaWVsZFBvaW50KFJlZ2lzdGVySUQqIGFyZ3VtZW50KQogdm9pZCBC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdFNhdmUoTGFiZWwqIG1lcmdlUG9pbnQsIHVuc2lnbmVkIGxp
dmVDYWxsZWVMb2NhbHNJbmRleCkKIHsKICAgICBzaXplX3QgYmVnaW4gPSBpbnN0cnVjdGlvbnMo
KS5zaXplKCk7Ci0gICAgZW1pdE9wY29kZShvcF9zYXZlKTsKLSAgICBpbnN0cnVjdGlvbnMoKS5h
cHBlbmQobV9nZW5lcmF0b3JSZWdpc3Rlci0+aW5kZXgoKSk7CisgICAgZW1pdE9wY29kZShvcF9z
YXZlX2hpbnQpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChnZW5lcmF0b3JGcmFtZVJlZ2lz
dGVyKCktPmluZGV4KCkpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChsaXZlQ2FsbGVlTG9j
YWxzSW5kZXgpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChtZXJnZVBvaW50LT5iaW5kKGJl
Z2luLCBpbnN0cnVjdGlvbnMoKS5zaXplKCkpKTsKIH0KQEAgLTQxNTMsOSArNDE2NCwzMSBAQCB2
b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0U2F2ZShMYWJlbCogbWVyZ2VQb2ludCwgdW5zaWdu
ZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZAogdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlc3Vt
ZShMYWJlbCogbWVyZ2VQb2ludCwgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4KQogewog
ICAgIGVtaXRHZW5lcmF0b3JTdGF0ZUxhYmVsKCk7Ci0gICAgZW1pdE9wY29kZShvcF9yZXN1bWUp
OwotICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChtX2dlbmVyYXRvclJlZ2lzdGVyLT5pbmRleCgp
KTsKKworICAgIHJlY2xhaW1GcmVlUmVnaXN0ZXJzKCk7CisgICAgdW5zaWduZWQgbWF4TGl2ZUxv
Y2FscyA9IDA7CisgICAgZm9yIChjb25zdCBSZWdpc3RlcklEJiByZWcgOiBtX2NhbGxlZUxvY2Fs
cykgeworICAgICAgICBpZiAocmVnLnJlZkNvdW50KCkpCisgICAgICAgICAgICArK21heExpdmVM
b2NhbHM7CisgICAgfQorCisgICAgLy8gVGhpcyBvcF9yZXN1bWVfaGludCB3aWxsIGJlIHJlcGxh
Y2VkIHdpdGggdGhlIGFjdHVhbCBvcHMuCisgICAgaWYgKG1heExpdmVMb2NhbHMpCisgICAgICAg
IG1heExpdmVMb2NhbHMgLT0gMTsKKworICAgIGVtaXRPcGNvZGUob3BfcmVzdW1lX2hpbnQpOwor
ICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChnZW5lcmF0b3JGcmFtZVJlZ2lzdGVyKCktPmluZGV4
KCkpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpOwor
ICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChtYXhMaXZlTG9jYWxzKTsKKyAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgbWF4TGl2ZUxvY2FsczsgKytpKSB7CisgICAgICAgIC8vIE5vcCBzcGFj
ZS4gTGF0ZXIgd2Ugd2lsbCBmaWxsIHRoaXMgd2l0aCB0aGUgYWN0dWFsIHJlc3VtZSBvcGVyYXRp
b25zLgorICAgICAgICBlbWl0T3Bjb2RlKG9wX25vcCk7CisgICAgICAgIGVtaXRPcGNvZGUob3Bf
bm9wKTsKKyAgICAgICAgZW1pdE9wY29kZShvcF9ub3ApOworICAgICAgICBlbWl0T3Bjb2RlKG9w
X25vcCk7CisgICAgfQorICAgIGVtaXRPcGNvZGUob3BfY2xlYXJfZ2VuZXJhdG9yX2ZyYW1lKTsK
KyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZ2VuZXJhdG9yRnJhbWVSZWdpc3RlcigpLT5pbmRl
eCgpKTsKICAgICBlbWl0TGFiZWwobWVyZ2VQb2ludCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAppbmRleCA3
ZDBjMjBiNmY1MTZhMTdlODkzZjFiYmEwODAzYzEzMzNmZmM4ZDBkLi4zZDMzNDc4MTVhYzMwYTgy
ZTYyNmUzZTA3ODA4MWJlMmIzZTliZTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCkBAIC01MjIsNiArNTIyLDcg
QEAKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdE5ld0RlZmF1bHRDb25zdHJ1Y3RvcihSZWdpc3Rl
cklEKiBkc3QsIENvbnN0cnVjdG9yS2luZCwgY29uc3QgSWRlbnRpZmllciYgbmFtZSk7CiAgICAg
ICAgIFJlZ2lzdGVySUQqIGVtaXROZXdBcnJvd0Z1bmN0aW9uRXhwcmVzc2lvbihSZWdpc3RlcklE
KiwgQXJyb3dGdW5jRXhwck5vZGUqKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdE5ld1JlZ0V4
cChSZWdpc3RlcklEKiBkc3QsIFJlZ0V4cCopOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0TmV3
R2VuZXJhdG9yRnJhbWUoUmVnaXN0ZXJJRCogZHN0KTsKIAogICAgICAgICBSZWdpc3RlcklEKiBl
bWl0TW92ZUxpbmtUaW1lQ29uc3RhbnQoUmVnaXN0ZXJJRCogZHN0LCBMaW5rVGltZUNvbnN0YW50
KTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdE1vdmVFbXB0eVZhbHVlKFJlZ2lzdGVySUQqIGRz
dCk7CkBAIC02ODQsNiArNjg1LDcgQEAKICAgICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9yU3Rh
dGVSZWdpc3RlcigpIHsgcmV0dXJuICZtX3BhcmFtZXRlcnNbMl07IH0KICAgICAgICAgUmVnaXN0
ZXJJRCogZ2VuZXJhdG9yVmFsdWVSZWdpc3RlcigpIHsgcmV0dXJuICZtX3BhcmFtZXRlcnNbM107
IH0KICAgICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKCkgeyBy
ZXR1cm4gJm1fcGFyYW1ldGVyc1s0XTsgfQorICAgICAgICBSZWdpc3RlcklEKiBnZW5lcmF0b3JG
cmFtZVJlZ2lzdGVyKCkgeyByZXR1cm4gJm1fcGFyYW1ldGVyc1s1XTsgfQogCiAgICAgICAgIENv
ZGVUeXBlIGNvZGVUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlVHlwZTsgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxp
bmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJ
bmxpbmVzLmgKaW5kZXggOWVlYzYzY2ViMDcxYmMxNDg2YTAxMmMyODUwMWRiNjI0MjZiZGU3Yi4u
YzRhNmRjYWM0NTJmNzAxYmJlNjc5ZGI3MjIwNmZjMjNkNGUwMTcwMiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGlu
ZXMuaApAQCAtMTY4Nyw2ICsxNjg3LDEwIEBACiAgICAgY2FzZSBOZXdSZWdleHA6CiAgICAgICAg
IGZvck5vZGUobm9kZSkuc2V0KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYyktPnJlZ0V4cFN0cnVjdHVyZSgpKTsKICAgICAgICAgYnJlYWs7CisK
KyAgICBjYXNlIE5ld0dlbmVyYXRvckZyYW1lOgorICAgICAgICBmb3JOb2RlKG5vZGUpLnNldCht
X2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5n
ZW5lcmF0b3JGcmFtZVN0cnVjdHVyZSgpKTsKKyAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAK
ICAgICBjYXNlIFRvVGhpczogewogICAgICAgICBBYnN0cmFjdFZhbHVlJiBzb3VyY2UgPSBmb3JO
b2RlKG5vZGUtPmNoaWxkMSgpKTsKQEAgLTI1MTAsNiArMjUxNCwyMiBAQAogICAgICAgICBmb3JO
b2RlKG5vZGUpLm1ha2VIZWFwVG9wKCk7CiAgICAgICAgIGJyZWFrOwogCisgICAgY2FzZSBTZXRH
ZW5lcmF0b3JMb2NhbDogeworICAgICAgICBjbG9iYmVyV29ybGQobm9kZS0+b3JpZ2luLnNlbWFu
dGljLCBjbG9iYmVyTGltaXQpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBjYXNlIEdl
dEdlbmVyYXRvckxvY2FsOiB7CisgICAgICAgIGNsb2JiZXJXb3JsZChub2RlLT5vcmlnaW4uc2Vt
YW50aWMsIGNsb2JiZXJMaW1pdCk7CisgICAgICAgIGZvck5vZGUobm9kZSkubWFrZUhlYXBUb3Ao
KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgY2FzZSBQdXRHZW5lcmF0b3JGcmFtZUxv
Y2FsczogeworICAgICAgICBjbG9iYmVyV29ybGQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBjbG9i
YmVyTGltaXQpOworICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBjYXNlIEZvcmNlT1NSRXhp
dDoKICAgICBjYXNlIENoZWNrQmFkQ2VsbDoKICAgICAgICAgbV9zdGF0ZS5zZXRJc1ZhbGlkKGZh
bHNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFja3dhcmRz
UHJvcGFnYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0JhY2t3
YXJkc1Byb3BhZ2F0aW9uUGhhc2UuY3BwCmluZGV4IGJmNjUxODg2ZTNhZjk1YTM0NjYwNGJlM2U1
NmIwMGZmNDE3MDBiYjcuLjJiYjNiMWY4YTk1YTY0OWM4MmYwODk3MmQxNWM2M2M4Zjk2OGI5YjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFja3dhcmRzUHJvcGFn
YXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYWNrd2Fy
ZHNQcm9wYWdhdGlvblBoYXNlLmNwcApAQCAtNDAzLDYgKzQwMywyNCBAQCBjbGFzcyBCYWNrd2Fy
ZHNQcm9wYWdhdGlvblBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAKKyAgICAgICAgY2FzZSBHZXRHZW5lcmF0b3JMb2NhbDogeworICAgICAgICAg
ICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZUFjY2Vzc0RhdGEgPSBub2RlLT5zYXZlZFZh
cmlhYmxlQWNjZXNzRGF0YSgpOworICAgICAgICAgICAgZmxhZ3MgJj0gfk5vZGVCeXRlY29kZVVz
ZXNBc0ludDsgLy8gV2UgZG9uJ3QgY2FyZSBhYm91dCBjcm9zcy1ibG9jayB1c2VzLWFzLWludC4K
KyAgICAgICAgICAgIG1fY2hhbmdlZCB8PSB2YXJpYWJsZUFjY2Vzc0RhdGEtPm1lcmdlRmxhZ3Mo
ZmxhZ3MpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBjYXNlIFNl
dEdlbmVyYXRvckxvY2FsOiB7CisgICAgICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlh
YmxlQWNjZXNzRGF0YSA9IG5vZGUtPnNhdmVkVmFyaWFibGVBY2Nlc3NEYXRhKCk7CisgICAgICAg
ICAgICBpZiAoIXZhcmlhYmxlQWNjZXNzRGF0YS0+aXNMb2FkZWRGcm9tKCkpCisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICBmbGFncyA9IHZhcmlhYmxlQWNjZXNzRGF0YS0+Zmxh
Z3MoKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCEoZmxhZ3MgJiB+Tm9kZUJ5dGVjb2Rl
QmFja1Byb3BNYXNrKSk7CisgICAgICAgICAgICBmbGFncyB8PSBOb2RlQnl0ZWNvZGVVc2VzQXNO
dW1iZXI7IC8vIEFjY291bnQgZm9yIHRoZSBmYWN0IHRoYXQgY29udHJvbCBmbG93IG1heSBjYXVz
ZSBvdmVyZmxvd3MgdGhhdCBvdXIgbW9kZWxpbmcgY2FuJ3QgaGFuZGxlLgorICAgICAgICAgICAg
bm9kZS0+Y2hpbGQyKCktPm1lcmdlRmxhZ3MoZmxhZ3MpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KKwogICAgICAgICBjYXNlIElkZW50aXR5OiAKICAgICAgICAgICAgIC8vIFRoaXMg
d291bGQgYmUgdHJpdmlhbCB0byBoYW5kbGUgYnV0IHdlIGp1c3QgYXNzZXJ0IHRoYXQgd2UgY2Fu
bm90IHNlZSB0aGVzZSB5ZXQuCiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNw
cAppbmRleCAzNjQ0YTJmZDE5YTBkOWIzZGRhN2IwNjhhMDA0OTBhNTgyNjIwODZkLi45M2E3MTJh
NjZjYzY4MmZiYWRhNTAyY2M5Yjk3MWJiNjY0M2E0ZTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtMTQ0LDYgKzE0NCw3IEBAIGNs
YXNzIEJ5dGVDb2RlUGFyc2VyIHsKICAgICAgICAgLCBtX2NvbnN0YW50TnVsbChncmFwaC5mcmVl
emUoanNOdWxsKCkpKQogICAgICAgICAsIG1fY29uc3RhbnROYU4oZ3JhcGguZnJlZXplKGpzTnVt
YmVyKFBOYU4pKSkKICAgICAgICAgLCBtX2NvbnN0YW50T25lKGdyYXBoLmZyZWV6ZShqc051bWJl
cigxKSkpCisgICAgICAgICwgbV9jb25zdGFudFRydWUoZ3JhcGguZnJlZXplKGpzQm9vbGVhbih0
cnVlKSkpCiAgICAgICAgICwgbV9udW1Bcmd1bWVudHMobV9jb2RlQmxvY2stPm51bVBhcmFtZXRl
cnMoKSkKICAgICAgICAgLCBtX251bUxvY2FscyhtX2NvZGVCbG9jay0+bV9udW1DYWxsZWVMb2Nh
bHMpCiAgICAgICAgICwgbV9wYXJhbWV0ZXJTbG90cygwKQpAQCAtOTgyLDYgKzk4Myw3IEBAIGNs
YXNzIEJ5dGVDb2RlUGFyc2VyIHsKICAgICBGcm96ZW5WYWx1ZSogbV9jb25zdGFudE51bGw7CiAg
ICAgRnJvemVuVmFsdWUqIG1fY29uc3RhbnROYU47CiAgICAgRnJvemVuVmFsdWUqIG1fY29uc3Rh
bnRPbmU7CisgICAgRnJvemVuVmFsdWUqIG1fY29uc3RhbnRUcnVlOwogICAgIFZlY3RvcjxOb2Rl
KiwgMTY+IG1fY29uc3RhbnRzOwogCiAgICAgLy8gVGhlIG51bWJlciBvZiBhcmd1bWVudHMgcGFz
c2VkIHRvIHRoZSBmdW5jdGlvbi4KQEAgLTEwNTEsNiArMTA1Myw5IEBAIGNsYXNzIEJ5dGVDb2Rl
UGFyc2VyIHsKICAgICAgICAgQ2FsbExpbmtJbmZvTWFwIG1fY2FsbExpbmtJbmZvczsKICAgICAg
ICAgU3R1YkluZm9NYXAgbV9zdHViSW5mb3M7CiAgICAgICAgIEJ5VmFsSW5mb01hcCBtX2J5VmFs
SW5mb3M7CisKKyAgICAgICAgLy8gQmFzaWMgYmxvY2tzIHBlcmZvcm1pbmcgeWllbGQncyBvcF9z
YXZlIG9wZXJhdGlvbi4KKyAgICAgICAgVmVjdG9yPE9wZXJhbmRzPFZhcmlhYmxlQWNjZXNzRGF0
YSo+PiBtX2dlbmVyYXRvckxvY2FsczsKICAgICAgICAgCiAgICAgICAgIC8vIERpZCB3ZSBzZWUg
YW55IHJldHVybnM/IFdlIG5lZWQgdG8gaGFuZGxlIHRoZSAodW5jb21tb24gYnV0IG5lY2Vzc2Fy
eSkKICAgICAgICAgLy8gY2FzZSB3aGVyZSBhIHByb2NlZHVyZSB0aGF0IGRvZXMgbm90IHJldHVy
biB3YXMgaW5saW5lZC4KQEAgLTMzNDEsNiArMzM0NiwxMSBAQCBib29sIEJ5dGVDb2RlUGFyc2Vy
OjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAgICAgTkVYVF9PUENPREUob3Bf
bmV3X3JlZ2V4cCk7CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIG9wX25ld19nZW5lcmF0b3Jf
ZnJhbWU6IHsKKyAgICAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0
aW9uWzFdLnUub3BlcmFuZCksIGFkZFRvR3JhcGgoTmV3R2VuZXJhdG9yRnJhbWUsIE9wSW5mbyhj
dXJyZW50SW5zdHJ1Y3Rpb25bMl0udS51bnNpZ25lZFZhbHVlKSkpOworICAgICAgICAgICAgTkVY
VF9PUENPREUob3BfbmV3X2dlbmVyYXRvcl9mcmFtZSk7CisgICAgICAgIH0KKwogICAgICAgICBj
YXNlIG9wX2dldF9yZXN0X2xlbmd0aDogewogICAgICAgICAgICAgSW5saW5lQ2FsbEZyYW1lKiBp
bmxpbmVDYWxsRnJhbWUgPSB0aGlzLT5pbmxpbmVDYWxsRnJhbWUoKTsKICAgICAgICAgICAgIE5v
ZGUqIGxlbmd0aDsKQEAgLTMzNjgsNiArMzM3OCw1MCBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpw
YXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAgICAgICAgIGFycmF5LCBhcnJheUxl
bmd0aCk7CiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9jb3B5X3Jlc3QpOwogICAgICAgICB9
CisKKyAgICAgICAgY2FzZSBvcF9zYXZlOiB7CisgICAgICAgICAgICBOb2RlKiBmcmFtZSA9IGdl
dChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCkpOworICAg
ICAgICAgICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gY3VycmVudEluc3RydWN0
aW9uWzJdLnUudW5zaWduZWRWYWx1ZTsKKyAgICAgICAgICAgIGNvbnN0IEZhc3RCaXRWZWN0b3Im
IGxpdmVuZXNzID0gbV9pbmxpbmVTdGFja1RvcC0+bV9jb2RlQmxvY2stPmxpdmVDYWxsZWVMb2Nh
bHNBdFlpZWxkKGxpdmVDYWxsZWVMb2NhbHNJbmRleCk7CisgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVChsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPT0gbV9pbmxpbmVTdGFja1RvcC0+bV9nZW5lcmF0
b3JMb2NhbHMuc2l6ZSgpKTsKKyAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fZ2VuZXJh
dG9yTG9jYWxzLmFwcGVuZChPcGVyYW5kczxWYXJpYWJsZUFjY2Vzc0RhdGEqPihtX251bUFyZ3Vt
ZW50cywgbV9udW1Mb2NhbHMpKTsKKyAgICAgICAgICAgIE9wZXJhbmRzPFZhcmlhYmxlQWNjZXNz
RGF0YSo+JiBvcGVyYW5kcyA9IG1faW5saW5lU3RhY2tUb3AtPm1fZ2VuZXJhdG9yTG9jYWxzLmxh
c3QoKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGdlbmVyYXRvckZyYW1lSW5kZXggPSAwOworICAg
ICAgICAgICAgbGl2ZW5lc3MuZm9yRWFjaFNldEJpdChbJl0oc2l6ZV90IGluZGV4KSB7CisgICAg
ICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQgPSB2aXJ0dWFsUmVnaXN0ZXJGb3JM
b2NhbChpbmRleCk7CisgICAgICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHJlbWFwcGVkT3Bl
cmFuZCA9IG1faW5saW5lU3RhY2tUb3AtPnJlbWFwT3BlcmFuZChvcGVyYW5kKTsKKyAgICAgICAg
ICAgICAgICBOb2RlKiBsb2NhbCA9IGdldChvcGVyYW5kKTsKKyAgICAgICAgICAgICAgICBWYXJp
YWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxlID0gbmV3VmFyaWFibGVBY2Nlc3NEYXRhKHJlbWFwcGVk
T3BlcmFuZCk7CisgICAgICAgICAgICAgICAgdmFyaWFibGUtPm1lcmdlU2hvdWxkTmV2ZXJVbmJv
eCh0cnVlKTsKKyAgICAgICAgICAgICAgICBvcGVyYW5kcy5sb2NhbChyZW1hcHBlZE9wZXJhbmQu
dG9Mb2NhbCgpKSA9IHZhcmlhYmxlOworICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoU2V0R2Vu
ZXJhdG9yTG9jYWwsIE9wSW5mbyhnZW5lcmF0b3JGcmFtZUluZGV4KyspLCBPcEluZm8odmFyaWFi
bGUpLCBmcmFtZSwgbG9jYWwpOworICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBhZGRUb0dy
YXBoKFB1dEdlbmVyYXRvckZyYW1lTG9jYWxzLCBPcEluZm8oZ2VuZXJhdG9yRnJhbWVJbmRleCks
IGZyYW1lKTsKKyAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX3NhdmUpOworICAgICAgICB9CisK
KyAgICAgICAgY2FzZSBvcF9yZXN1bWVfZnJvbV9nZW5lcmF0b3JfZnJhbWU6IHsKKyAgICAgICAg
ICAgIE5vZGUqIGZyYW1lID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25b
Ml0udS5vcGVyYW5kKSk7CisgICAgICAgICAgICBPcGVyYW5kczxWYXJpYWJsZUFjY2Vzc0RhdGEq
PiYgb3BlcmFuZHMgPSBtX2lubGluZVN0YWNrVG9wLT5tX2dlbmVyYXRvckxvY2Fscy5sYXN0KCk7
CisgICAgICAgICAgICB1bnNpZ25lZCBnZW5lcmF0b3JGcmFtZUluZGV4ID0gY3VycmVudEluc3Ry
dWN0aW9uWzNdLnUudW5zaWduZWRWYWx1ZTsKKyAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBv
cGVyYW5kKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOworICAgICAgICAgICAgVmly
dHVhbFJlZ2lzdGVyIHJlbWFwcGVkT3BlcmFuZCA9IG1faW5saW5lU3RhY2tUb3AtPnJlbWFwT3Bl
cmFuZChvcGVyYW5kKTsKKyAgICAgICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFibGUg
PSBvcGVyYW5kcy5sb2NhbChyZW1hcHBlZE9wZXJhbmQudG9Mb2NhbCgpKTsKKyAgICAgICAgICAg
IFJFTEVBU0VfQVNTRVJUKHZhcmlhYmxlKTsKKyAgICAgICAgICAgIHNldChvcGVyYW5kLCBhZGRU
b0dyYXBoKEdldEdlbmVyYXRvckxvY2FsLCBPcEluZm8oZ2VuZXJhdG9yRnJhbWVJbmRleCksIE9w
SW5mbyh2YXJpYWJsZSksIGZyYW1lKSk7CisgICAgICAgICAgICBORVhUX09QQ09ERShvcF9yZXN1
bWVfZnJvbV9nZW5lcmF0b3JfZnJhbWUpOworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBvcF9j
bGVhcl9nZW5lcmF0b3JfZnJhbWU6IHsKKyAgICAgICAgICAgIE5vZGUqIGZyYW1lID0gZ2V0KFZp
cnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSk7CisgICAgICAg
ICAgICBhZGRUb0dyYXBoKFB1dEdlbmVyYXRvckZyYW1lTG9jYWxzLCBPcEluZm8oMCksIGZyYW1l
KTsKKyAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2NsZWFyX2dlbmVyYXRvcl9mcmFtZSk7Cisg
ICAgICAgIH0KKworICAgICAgICBjYXNlIG9wX25vcDogeworICAgICAgICAgICAgTkVYVF9PUENP
REUob3Bfbm9wKTsKKyAgICAgICAgfQorCiAgICAgICAgICAgICAKICAgICAgICAgLy8gPT09IEJp
dHdpc2Ugb3BlcmF0aW9ucyA9PT0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
YXBhYmlsaXRpZXMuY3BwCmluZGV4IGQxMDBkOTdkNWM2MGUyNWEwNjBmZmRhNDU2NjNiM2I5NDE0
MzVkYzYuLmE1ODJmODcyMDc2Y2ZmODk0MjgzZWJhMzFhNDk5Nzc2MzBkYzc4OTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKQEAgLTE4MSw2ICsx
ODEsNyBAQCBDYXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVsKE9wY29kZUlEIG9wY29kZUlE
LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSW5zdHJ1YwogICAgIGNhc2Ugb3BfbmV3X2FycmF5Ogog
ICAgIGNhc2Ugb3BfbmV3X2FycmF5X3dpdGhfc2l6ZToKICAgICBjYXNlIG9wX25ld19hcnJheV9i
dWZmZXI6CisgICAgY2FzZSBvcF9uZXdfZ2VuZXJhdG9yX2ZyYW1lOgogICAgIGNhc2Ugb3Bfc3Ry
Y2F0OgogICAgIGNhc2Ugb3BfdG9fcHJpbWl0aXZlOgogICAgIGNhc2Ugb3BfdGhyb3c6CkBAIC0y
MjQsNiArMjI1LDEwIEBAIENhcGFiaWxpdHlMZXZlbCBjYXBhYmlsaXR5TGV2ZWwoT3Bjb2RlSUQg
b3Bjb2RlSUQsIENvZGVCbG9jayogY29kZUJsb2NrLCBJbnN0cnVjCiAgICAgY2FzZSBvcF9jYXRj
aDoKICAgICBjYXNlIG9wX2NvcHlfcmVzdDoKICAgICBjYXNlIG9wX2dldF9yZXN0X2xlbmd0aDoK
KyAgICBjYXNlIG9wX3NhdmU6CisgICAgY2FzZSBvcF9yZXN1bWVfZnJvbV9nZW5lcmF0b3JfZnJh
bWU6CisgICAgY2FzZSBvcF9jbGVhcl9nZW5lcmF0b3JfZnJhbWU6CisgICAgY2FzZSBvcF9ub3A6
CiAgICAgICAgIHJldHVybiBDYW5Db21waWxlQW5kSW5saW5lOwogCiAgICAgY2FzZSBvcF9wdXRf
dG9fc2NvcGU6IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xv
YmJlcml6ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKaW5k
ZXggMzQzYTZkZTljMjkwOWI5M2UwNTI4Y2YwMjc4NGFhZDk0ZDAxYjRkMS4uOTI3ZjJmYWRkNGVi
YmIwOTNkY2UyYjA0MWE1MTlkM2U2MWU2Nzg3NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDbG9iYmVyaXplLmgKQEAgLTEwNDQsNiArMTA0NCw3IEBAIHZvaWQgY2xvYmJlcml6ZShH
cmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBX
cml0ZUZ1CiAKICAgICBjYXNlIE5ld09iamVjdDoKICAgICBjYXNlIE5ld1JlZ2V4cDoKKyAgICBj
YXNlIE5ld0dlbmVyYXRvckZyYW1lOgogICAgIGNhc2UgTmV3U3RyaW5nT2JqZWN0OgogICAgIGNh
c2UgUGhhbnRvbU5ld09iamVjdDoKICAgICBjYXNlIE1hdGVyaWFsaXplTmV3T2JqZWN0OgpAQCAt
MTExMSw2ICsxMTEyLDIzIEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5v
ZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAgICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CisKKyAgICBjYXNlIFNldEdlbmVyYXRvckxvY2FsOiB7CisgICAgICAgIHJlYWQoV29ybGQp
OworICAgICAgICB3cml0ZShIZWFwKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGNh
c2UgR2V0R2VuZXJhdG9yTG9jYWw6IHsKKyAgICAgICAgcmVhZChXb3JsZCk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBjYXNlIFB1dEdlbmVyYXRvckZyYW1lTG9jYWxzOiB7CisgICAg
ICAgIHJlYWQoV29ybGQpOworICAgICAgICB3cml0ZShIZWFwKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBUaHJvd1JlZmVyZW5jZUVycm9yOgogICAgICAgICB3
cml0ZShTaWRlU3RhdGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDbG9iYmVyc0V4aXRTdGF0ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Ns
b2JiZXJzRXhpdFN0YXRlLmNwcAppbmRleCA0ZTBjNTA3Nzg5Y2Q3YjNmZjQ3NzUxZjkyNWU3NDgz
ZTYxZTJkZjViLi5jYjk0MTNiZGYwNjdkMTYwOWZjMWU4NDRmZDU4ZjNlYWNlYjZmYjUyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJzRXhpdFN0YXRlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJzRXhpdFN0YXRlLmNw
cApAQCAtNTMsMTAgKzUzLDE2IEBAIGJvb2wgY2xvYmJlcnNFeGl0U3RhdGUoR3JhcGgmIGdyYXBo
LCBOb2RlKiBub2RlKQogICAgICAgICAvLyBleGl0IHN0YXRlLgogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKKyAgICBjYXNlIFB1dEdlbmVyYXRvckZyYW1lTG9jYWxzOgorICAgIGNhc2UgU2V0R2Vu
ZXJhdG9yTG9jYWw6CisgICAgY2FzZSBHZXRHZW5lcmF0b3JMb2NhbDoKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCiAgICAgY2FzZSBBcnJheWlmeVRvU3RydWN0dXJlOgogICAgIGNhc2UgQXJyYXlp
Znk6CiAgICAgY2FzZSBOZXdPYmplY3Q6CiAgICAgY2FzZSBOZXdSZWdleHA6CisgICAgY2FzZSBO
ZXdHZW5lcmF0b3JGcmFtZToKICAgICBjYXNlIE5ld1N0cmluZ09iamVjdDoKICAgICBjYXNlIFBo
YW50b21OZXdPYmplY3Q6CiAgICAgY2FzZSBNYXRlcmlhbGl6ZU5ld09iamVjdDoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAppbmRleCA3MDJkYTViZjFlN2MwZjFjOGZlNTVj
NjQ4NDQ1OGZjYWQ4MWUyYWE1Li5lNDE4ZDc4NzY2ZWE2NGYzMDFkZDBkM2E0ZDc1MGI0YTgyNTA2
YjEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCkBAIC0yMjksNiAr
MjI5LDkgQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2Ug
R2V0RnJvbUFyZ3VtZW50czoKICAgICBjYXNlIFB1dFRvQXJndW1lbnRzOgogICAgIGNhc2UgQ29w
eVJlc3Q6CisgICAgY2FzZSBTZXRHZW5lcmF0b3JMb2NhbDoKKyAgICBjYXNlIEdldEdlbmVyYXRv
ckxvY2FsOgorICAgIGNhc2UgUHV0R2VuZXJhdG9yRnJhbWVMb2NhbHM6CiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAogICAgIGNhc2UgQ3JlYXRlQWN0aXZhdGlvbjoKQEAgLTI0Niw2ICsyNDksNyBA
QCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBOZXdBcnJh
eVdpdGhTaXplOgogICAgIGNhc2UgTmV3QXJyYXlCdWZmZXI6CiAgICAgY2FzZSBOZXdSZWdleHA6
CisgICAgY2FzZSBOZXdHZW5lcmF0b3JGcmFtZToKICAgICBjYXNlIE5ld1N0cmluZ09iamVjdDoK
ICAgICBjYXNlIE1ha2VSb3BlOgogICAgIGNhc2UgTmV3QXJyb3dGdW5jdGlvbjoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCmluZGV4IGM5ZDVhYmZiNDk0ODFi
OTA1ODllYzRmYmE1OTVhMmNlOGU3MGRmNjcuLjg3OWJlOWRlMjEyMDg2ZDlhZGZkZjYxMjc3MmY3
ZjIzZjZiM2FiOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4
dXBQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNl
LmNwcApAQCAtMTQzMCw2ICsxNDMwLDIxIEBAIGNsYXNzIEZpeHVwUGhhc2UgOiBwdWJsaWMgUGhh
c2UgewogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIFNldEdl
bmVyYXRvckxvY2FsOiB7CisgICAgICAgICAgICBmaXhFZGdlPENlbGxVc2U+KG5vZGUtPmNoaWxk
MSgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBHZXRH
ZW5lcmF0b3JMb2NhbDogeworICAgICAgICAgICAgZml4RWRnZTxDZWxsVXNlPihub2RlLT5jaGls
ZDEoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2UgUHV0
R2VuZXJhdG9yRnJhbWVMb2NhbHM6IHsKKyAgICAgICAgICAgIGZpeEVkZ2U8Q2VsbFVzZT4obm9k
ZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKwogI2lmICFBU1NF
UlRfRElTQUJMRUQKICAgICAgICAgLy8gSGF2ZSB0aGVzZSBuby1vcCBjYXNlcyBoZXJlIHRvIGVu
c3VyZSB0aGF0IG5vYm9keSBmb3JnZXRzIHRvIGFkZCBoYW5kbGVycyBmb3IgbmV3IG9wY29kZXMu
CiAgICAgICAgIGNhc2UgU2V0QXJndW1lbnQ6CkBAIC0xNDYyLDYgKzE0NzcsNyBAQCBjbGFzcyBG
aXh1cFBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgY2FzZSBOZXdPYmplY3Q6CiAgICAg
ICAgIGNhc2UgTmV3QXJyYXlCdWZmZXI6CiAgICAgICAgIGNhc2UgTmV3UmVnZXhwOgorICAgICAg
ICBjYXNlIE5ld0dlbmVyYXRvckZyYW1lOgogICAgICAgICBjYXNlIEJyZWFrcG9pbnQ6CiAgICAg
ICAgIGNhc2UgUHJvZmlsZVdpbGxDYWxsOgogICAgICAgICBjYXNlIFByb2ZpbGVEaWRDYWxsOgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAKaW5kZXggZGFhMjkzMzlkYmZi
ZGY4MGFhZDliNjQ2YTJjYjdhMDU4N2Q5NjIzOC4uZmM1N2I4MjMwM2M3OWJkMTNjZDVkMWNlMWJl
MGFmYjcxMGNlNmM3NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdN
YXlFeGl0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3Bw
CkBAIC0xMzAsNiArMTMwLDkgQEAgRXhpdE1vZGUgbWF5RXhpdChHcmFwaCYgZ3JhcGgsIE5vZGUq
IG5vZGUpCiAgICAgY2FzZSBTdG9yZUJhcnJpZXI6CiAgICAgY2FzZSBQdXRCeU9mZnNldDoKICAg
ICBjYXNlIFB1dENsb3N1cmVWYXI6CisgICAgY2FzZSBQdXRHZW5lcmF0b3JGcmFtZUxvY2FsczoK
KyAgICBjYXNlIFNldEdlbmVyYXRvckxvY2FsOgorICAgIGNhc2UgR2V0R2VuZXJhdG9yTG9jYWw6
CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBTdHJDYXQ6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTm9kZS5oCmluZGV4IDEyODcwZDkzZDBjNDgyZTRmOGU1ZDRkMmRhZjFlNmJmMWY3MWI2MmMu
LjI3ZThhNTBkZTM0ZGMwODYyZmRmM2NhMDE2NWNhMTE0ODU5OWU4NzEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTm9kZS5oCkBAIC04NzgsNiArODc4LDcyIEBAIHN0cnVjdCBOb2RlIHsKICAg
ICAgICAgcmV0dXJuIG1fb3BJbmZvOwogICAgIH0KIAorICAgIGJvb2wgaGFzR2VuZXJhdG9yRnJh
bWVTaXplKCkKKyAgICB7CisgICAgICAgIHN3aXRjaCAob3AoKSkgeworICAgICAgICBjYXNlIE5l
d0dlbmVyYXRvckZyYW1lOgorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGRlZmF1
bHQ6CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB1
bnNpZ25lZCBnZW5lcmF0b3JGcmFtZVNpemUoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGhhc0dl
bmVyYXRvckZyYW1lU2l6ZSgpKTsKKyAgICAgICAgcmV0dXJuIG1fb3BJbmZvOworICAgIH0KKwor
ICAgIGJvb2wgaGFzR2VuZXJhdG9yRnJhbWVJbmRleCgpCisgICAgeworICAgICAgICBzd2l0Y2gg
KG9wKCkpIHsKKyAgICAgICAgY2FzZSBTZXRHZW5lcmF0b3JMb2NhbDoKKyAgICAgICAgY2FzZSBH
ZXRHZW5lcmF0b3JMb2NhbDoKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorCisgICAg
dW5zaWduZWQgZ2VuZXJhdG9yRnJhbWVJbmRleCgpCisgICAgeworICAgICAgICBBU1NFUlQoaGFz
R2VuZXJhdG9yRnJhbWVJbmRleCgpKTsKKyAgICAgICAgcmV0dXJuIG1fb3BJbmZvOworICAgIH0K
KworICAgIGJvb2wgaGFzU2F2ZWRWYXJpYWJsZUFjY2Vzc0RhdGEoKQorICAgIHsKKyAgICAgICAg
c3dpdGNoIChvcCgpKSB7CisgICAgICAgIGNhc2UgU2V0R2VuZXJhdG9yTG9jYWw6CisgICAgICAg
IGNhc2UgR2V0R2VuZXJhdG9yTG9jYWw6CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0K
KworICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogc2F2ZWRWYXJpYWJsZUFjY2Vzc0RhdGEoKQorICAg
IHsKKyAgICAgICAgQVNTRVJUKGhhc1NhdmVkVmFyaWFibGVBY2Nlc3NEYXRhKCkpOworICAgICAg
ICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxWYXJpYWJsZUFjY2Vzc0RhdGEqPihtX29wSW5mbzIp
LT5maW5kKCk7CisgICAgfQorCisgICAgYm9vbCBoYXNHZW5lcmF0b3JGcmFtZUxvY2FscygpCisg
ICAgeworICAgICAgICBzd2l0Y2ggKG9wKCkpIHsKKyAgICAgICAgY2FzZSBQdXRHZW5lcmF0b3JG
cmFtZUxvY2FsczoKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBkZWZhdWx0Ogor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorCisgICAgdW5zaWdu
ZWQgZ2VuZXJhdG9yRnJhbWVMb2NhbHMoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGhhc0dlbmVy
YXRvckZyYW1lTG9jYWxzKCkpOworICAgICAgICByZXR1cm4gbV9vcEluZm87CisgICAgfQorCiAg
ICAgYm9vbCBoYXNBY2Nlc3NvckF0dHJpYnV0ZXMoKQogICAgIHsKICAgICAgICAgc3dpdGNoIChv
cCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKaW5kZXggZGRkMGI5
N2NiMmZlNjkyNjA0NTEwM2Y4YTcxMDcwMDQ4MmU5ZjZiZC4uYzlhOGQ3MmY4MjdlYmVjODFhZGVl
YmYyZDZkODk3YWM5ZTgwZDUzZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdOb2RlVHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5
cGUuaApAQCAtNzksNiArNzksMTAgQEAKICAgICBtYWNybyhGbHVzaCwgTm9kZU11c3RHZW5lcmF0
ZSkgXAogICAgIG1hY3JvKFBoYW50b21Mb2NhbCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIFwK
KyAgICBtYWNybyhTZXRHZW5lcmF0b3JMb2NhbCwgTm9kZU11c3RHZW5lcmF0ZSkgXAorICAgIG1h
Y3JvKEdldEdlbmVyYXRvckxvY2FsLCBOb2RlUmVzdWx0SlMpIFwKKyAgICBtYWNybyhQdXRHZW5l
cmF0b3JGcmFtZUxvY2FscywgTm9kZU11c3RHZW5lcmF0ZSkgXAorICAgIFwKICAgICAvKiBIaW50
IHRoYXQgdGhpcyBpcyB3aGVyZSBieXRlY29kZSB0aGlua3MgaXMgYSBnb29kIHBsYWNlIHRvIE9T
Ui4gTm90ZSB0aGF0IHRoaXMgKi9cCiAgICAgLyogd2lsbCBleGlzdCBldmVuIGluIGlubGluZWQg
bG9vcHMuIFRoaXMgaGFzIG5vIGV4ZWN1dGlvbiBzZW1hbnRpY3MgYnV0IGl0IG11c3QgKi9cCiAg
ICAgLyogc3Vydml2ZSBhbGwgRENFLiBXZSB0cmVhdCB0aGlzIGFzIGJlaW5nIGEgY2FuLWV4aXQg
YmVjYXVzZSB0aWVyLXVwIHRvIEZUTCBtYXkgKi9cCkBAIC0yNjMsNiArMjY3LDcgQEAKICAgICBt
YWNybyhOZXdBcnJheUJ1ZmZlciwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oTmV3VHlwZWRB
cnJheSwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKE5ld1Jl
Z2V4cCwgTm9kZVJlc3VsdEpTKSBcCisgICAgbWFjcm8oTmV3R2VuZXJhdG9yRnJhbWUsIE5vZGVS
ZXN1bHRKUykgXAogICAgIC8qIFJlc3QgUGFyYW1ldGVyICovXAogICAgIG1hY3JvKEdldFJlc3RM
ZW5ndGgsIE5vZGVSZXN1bHRJbnQzMikgXAogICAgIG1hY3JvKENvcHlSZXN0LCBOb2RlTXVzdEdl
bmVyYXRlKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJh
dGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcApp
bmRleCAyZmQ1ZGJkYzdmYzRjY2E4NmZhZTEwOTIyN2FjMTc1N2ZkY2RmOTZjLi5iYzM1NjYxM2Qz
ZjUyMTgwODIzOGU1MjY4MTM1YWFiMDliZTY3ZjBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKQEAgLTQxLDggKzQxLDkgQEAKICNpbmNsdWRlICJEaXJl
Y3RBcmd1bWVudHMuaCIKICNpbmNsdWRlICJGVExGb3JPU1JFbnRyeUpJVENvZGUuaCIKICNpbmNs
dWRlICJGVExPU1JFbnRyeS5oIgotI2luY2x1ZGUgIkhvc3RDYWxsUmV0dXJuVmFsdWUuaCIKKyNp
bmNsdWRlICJHZW5lcmF0b3JGcmFtZS5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgorI2lu
Y2x1ZGUgIkhvc3RDYWxsUmV0dXJuVmFsdWUuaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgog
I2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUgIkpJVEV4Y2VwdGlvbnMuaCIKQEAgLTgxNyw2ICs4
MTgsMTEgQEAgY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdGbG9hdDY0QXJyYXlXaXRo
T25lQXJndW1lbnQoCiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVj
dEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHM8SlNGbG9hdDY0QXJyYXk+KGV4ZWMs
IHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBOdWxsb3B0KSk7CiB9CiAKK2NoYXIqIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uTmV3R2VuZXJhdG9yRnJhbWUoRXhlY1N0YXRlKiBleGVjLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBudW1iZXJPZkNhbGxlZUxvY2FscykKK3sKKyAgICBy
ZXR1cm4gYml0d2lzZV9jYXN0PGNoYXIqPihHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlKGV4ZWMtPnZt
KCksIHN0cnVjdHVyZSwgbnVtYmVyT2ZDYWxsZWVMb2NhbHMpKTsKK30KKwogSlNDZWxsKiBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZUFjdGl2YXRpb25EaXJlY3QoRXhlY1N0YXRlKiBleGVj
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNTY29wZSogc2NvcGUsIFN5bWJvbFRhYmxlKiB0YWJs
ZSwgRW5jb2RlZEpTVmFsdWUgaW5pdGlhbFZhbHVlRW5jb2RlZCkKIHsKICAgICBKU1ZhbHVlIGlu
aXRpYWxWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShpbml0aWFsVmFsdWVFbmNvZGVkKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKaW5kZXggNDA5NjI5ZmY1ZDUzYTdi
ZTM4N2E2MjM2NDU1ZDY4MTZhYzA4NWVjOS4uZTQ0M2JhMjgyMzcyZmJjY2UyYmFjNWIwOWEzNjdi
ZDUyYzhlNzVmMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVy
YXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgK
QEAgLTgyLDYgKzgyLDcgQEAKIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3RmxvYXQz
MkFycmF5V2l0aE9uZUFyZ3VtZW50KEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSosIEVuY29kZWRKU1Zh
bHVlKSBXVEZfSU5URVJOQUw7CiBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Zsb2F0
NjRBcnJheVdpdGhTaXplKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSosIGludDMyX3QpIFdURl9JTlRF
Uk5BTDsKIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3RmxvYXQ2NEFycmF5V2l0aE9u
ZUFyZ3VtZW50KEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSosIEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5U
RVJOQUw7CitjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0dlbmVyYXRvckZyYW1lKEV4
ZWNTdGF0ZSosIFN0cnVjdHVyZSosIGludDMyX3QpIFdURl9JTlRFUk5BTDsKIHZvaWQgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbFN0cmljdChFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFByb3BlcnR5LCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkVmFsdWUpIFdURl9JTlRFUk5BTDsKIHZvaWQgSklUX09QRVJBVElPTiBvcGVy
YXRpb25QdXRCeVZhbE5vblN0cmljdChFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
QmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFByb3BlcnR5LCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpIFdURl9JTlRFUk5BTDsKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRC
eVZhbENlbGxTdHJpY3QoRXhlY1N0YXRlKiwgSlNDZWxsKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFByb3BlcnR5LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpIFdURl9JTlRFUk5BTDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0
aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJv
cGFnYXRpb25QaGFzZS5jcHAKaW5kZXggNTc5OThjZmUxODFhOGZjZjljYzY1MTQzNTFhYzU4MGI4
MGU3ZmI4YS4uMzExNDM0Y2Y0MTc5OGFkMDE0ZWY5YWQwMmNlODk1MjE4NzlhZmU2NCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25Q
aGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJv
cGFnYXRpb25QaGFzZS5jcHAKQEAgLTE2MCw2ICsxNjAsMjIgQEAgY2xhc3MgUHJlZGljdGlvblBy
b3BhZ2F0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgY2hhbmdlZCB8PSB2
YXJpYWJsZUFjY2Vzc0RhdGEtPnByZWRpY3Qobm9kZS0+Y2hpbGQxKCktPnByZWRpY3Rpb24oKSk7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorCisgICAgICAgIGNhc2UgU2V0R2VuZXJh
dG9yTG9jYWw6IHsKKyAgICAgICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFibGVBY2Nl
c3NEYXRhID0gbm9kZS0+c2F2ZWRWYXJpYWJsZUFjY2Vzc0RhdGEoKTsKKyAgICAgICAgICAgIGNo
YW5nZWQgfD0gdmFyaWFibGVBY2Nlc3NEYXRhLT5wcmVkaWN0KG5vZGUtPmNoaWxkMigpLT5wcmVk
aWN0aW9uKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBjYXNl
IEdldEdlbmVyYXRvckxvY2FsOiB7CisgICAgICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIHZh
cmlhYmxlID0gbm9kZS0+c2F2ZWRWYXJpYWJsZUFjY2Vzc0RhdGEoKTsKKyAgICAgICAgICAgIFNw
ZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24gPSB2YXJpYWJsZS0+cHJlZGljdGlvbigpOworICAgICAg
ICAgICAgaWYgKCF2YXJpYWJsZS0+Y291bGRSZXByZXNlbnRJbnQ1MigpICYmIChwcmVkaWN0aW9u
ICYgU3BlY0ludDUyKSkKKyAgICAgICAgICAgICAgICBwcmVkaWN0aW9uID0gKHByZWRpY3Rpb24g
fCBTcGVjSW50NTJBc0RvdWJsZSkgJiB+U3BlY0ludDUyOworICAgICAgICAgICAgaWYgKHByZWRp
Y3Rpb24pCisgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24ocHJlZGlj
dGlvbik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAgICAgICAgCiAgICAg
ICAgIGNhc2UgQml0QW5kOgogICAgICAgICBjYXNlIEJpdE9yOgpAQCAtNTI0LDcgKzU0MCw4IEBA
IGNsYXNzIFByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAg
ICAgfQogICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgTmV3UmVnZXhwOgotICAgICAgICBjYXNl
IENyZWF0ZUFjdGl2YXRpb246IHsKKyAgICAgICAgY2FzZSBDcmVhdGVBY3RpdmF0aW9uOgorICAg
ICAgICBjYXNlIE5ld0dlbmVyYXRvckZyYW1lOiB7CiAgICAgICAgICAgICBjaGFuZ2VkIHw9IHNl
dFByZWRpY3Rpb24oU3BlY09iamVjdE90aGVyKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CkBAIC03MTYsNiArNzMzLDcgQEAgY2xhc3MgUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2Ug
OiBwdWJsaWMgUGhhc2UgewogICAgICAgICBjYXNlIEV4aXRPSzoKICAgICAgICAgY2FzZSBMb2Fk
VmFyYXJnczoKICAgICAgICAgY2FzZSBDb3B5UmVzdDoKKyAgICAgICAgY2FzZSBQdXRHZW5lcmF0
b3JGcmFtZUxvY2FsczoKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCiAgICAgICAg
IC8vIFRoaXMgZ2V0cyBpZ25vcmVkIGJlY2F1c2UgaXQgb25seSBwcmV0ZW5kcyB0byBwcm9kdWNl
IGEgdmFsdWUuCkBAIC04NzQsNiArODkyLDE2IEBAIGNsYXNzIFByZWRpY3Rpb25Qcm9wYWdhdGlv
blBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAK
KyAgICAgICAgY2FzZSBTZXRHZW5lcmF0b3JMb2NhbDogeworICAgICAgICAgICAgU3BlY3VsYXRl
ZFR5cGUgcHJlZGljdGlvbiA9IG5vZGUtPmNoaWxkMigpLT5wcmVkaWN0aW9uKCk7CisgICAgICAg
ICAgICBpZiAoaXNEb3VibGVTcGVjdWxhdGlvbihwcmVkaWN0aW9uKSkKKyAgICAgICAgICAgICAg
ICBub2RlLT5zYXZlZFZhcmlhYmxlQWNjZXNzRGF0YSgpLT52b3RlKFZvdGVEb3VibGUsIHdlaWdo
dCk7CisgICAgICAgICAgICBlbHNlIGlmICghaXNGdWxsTnVtYmVyU3BlY3VsYXRpb24ocHJlZGlj
dGlvbikgfHwgaXNJbnQzMlNwZWN1bGF0aW9uKHByZWRpY3Rpb24pIHx8IGlzTWFjaGluZUludFNw
ZWN1bGF0aW9uKHByZWRpY3Rpb24pKQorICAgICAgICAgICAgICAgIG5vZGUtPnNhdmVkVmFyaWFi
bGVBY2Nlc3NEYXRhKCktPnZvdGUoVm90ZVZhbHVlLCB3ZWlnaHQpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKworCiAgICAgICAgIGNhc2UgUHV0QnlWYWxEaXJlY3Q6CiAgICAgICAg
IGNhc2UgUHV0QnlWYWw6CiAgICAgICAgIGNhc2UgUHV0QnlWYWxBbGlhczogewpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAppbmRleCAyMzBlZmVkYzQ4MzE1
MTJiYWM1NjhiZWVmZGIyNzY5NjE4NzIwOTRjLi43YmRlYzNiNTNlMjMwNDI4YmVjOWRhYzEwMzVm
MGE0ZDA0ZDhhNjFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nh
ZmVUb0V4ZWN1dGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4
ZWN1dGUuaApAQCAtMjM3LDYgKzIzNyw3IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0
YXRlVHlwZSYgc3RhdGUsIEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIE5ld0Fy
cmF5V2l0aFNpemU6CiAgICAgY2FzZSBOZXdBcnJheUJ1ZmZlcjoKICAgICBjYXNlIE5ld1JlZ2V4
cDoKKyAgICBjYXNlIE5ld0dlbmVyYXRvckZyYW1lOgogICAgIGNhc2UgQnJlYWtwb2ludDoKICAg
ICBjYXNlIFByb2ZpbGVXaWxsQ2FsbDoKICAgICBjYXNlIFByb2ZpbGVEaWRDYWxsOgpAQCAtMzI4
LDYgKzMyOSw5IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3RhdGUs
IEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIEdldE15QXJndW1lbnRCeVZhbDoK
ICAgICBjYXNlIEZvcndhcmRWYXJhcmdzOgogICAgIGNhc2UgQ29weVJlc3Q6CisgICAgY2FzZSBT
ZXRHZW5lcmF0b3JMb2NhbDoKKyAgICBjYXNlIEdldEdlbmVyYXRvckxvY2FsOgorICAgIGNhc2Ug
UHV0R2VuZXJhdG9yRnJhbWVMb2NhbHM6CiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgY2Fz
ZSBCb3R0b21WYWx1ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5jcHAKaW5kZXggY2NjZTc5MTk5NTE0NWU5MWVmZDIwMDg4Yzk2YjdhZjgyYjU2MTZk
Ni4uMmEzNmQ4YmFiODg3MDljOGNmZDFlNjBhOWYwYWQ4MmM3YjM3NmJmOCAxMDA3NTUKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTM4LDYgKzM4
LDcgQEAKICNpbmNsdWRlICJERkdTYW5lU3RyaW5nR2V0QnlWYWxTbG93UGF0aEdlbmVyYXRvci5o
IgogI2luY2x1ZGUgIkRGR1Nsb3dQYXRoR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiRGlyZWN0QXJn
dW1lbnRzLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yRnJhbWUuaCIKICNpbmNsdWRlICJKSVRBZGRH
ZW5lcmF0b3IuaCIKICNpbmNsdWRlICJKSVRCaXRBbmRHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJK
SVRCaXRPckdlbmVyYXRvci5oIgpAQCAtNjM3OCw2ICs2Mzc5LDI5IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVOZXdTdHJpbmdPYmplY3QoTm9kZSogbm9kZSkKICAgICBjZWxsUmVzdWx0
KHJlc3VsdEdQUiwgbm9kZSk7CiB9CiAKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdH
ZW5lcmF0b3JGcmFtZShOb2RlKiBub2RlKQoreworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QgPSBtX2ppdC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpOworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT5nZW5lcmF0b3JG
cmFtZVN0cnVjdHVyZSgpOworCisgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKyAgICBH
UFJUZW1wb3Jhcnkgc2NyYXRjaDEodGhpcyk7CisgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2gyKHRo
aXMpOworCisgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKyAgICBHUFJSZWcg
c2NyYXRjaDFHUFIgPSBzY3JhdGNoMS5ncHIoKTsKKyAgICBHUFJSZWcgc2NyYXRjaDJHUFIgPSBz
Y3JhdGNoMi5ncHIoKTsKKworICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93UGF0aDsKKwor
ICAgIGVtaXRBbGxvY2F0ZUpTT2JqZWN0V2l0aEtub3duU2l6ZTxHZW5lcmF0b3JGcmFtZT4ocmVz
dWx0R1BSLCBUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksIFRydXN0ZWRJbW1QdHIobnVsbHB0ciks
IHNjcmF0Y2gxR1BSLCBzY3JhdGNoMkdQUiwgc2xvd1BhdGgsIEdlbmVyYXRvckZyYW1lOjphbGxv
Y2F0aW9uU2l6ZUZvckxvY2Fscyhub2RlLT5nZW5lcmF0b3JGcmFtZVNpemUoKSkpOworICAgIG1f
aml0LnN0b3JlMzIoVHJ1c3RlZEltbTMyKDApLCBKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHRH
UFIsIEdlbmVyYXRvckZyYW1lOjpudW1iZXJPZlNhdmVkQ2FsbGVlTG9jYWxzT2Zmc2V0KCkpKTsK
KworICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93UGF0aCwgdGhpcywg
b3BlcmF0aW9uTmV3R2VuZXJhdG9yRnJhbWUsIHJlc3VsdEdQUiwgc3RydWN0dXJlLCBub2RlLT5n
ZW5lcmF0b3JGcmFtZVNpemUoKSkpOworCisgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUp
OworfQorCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3VHlwZWRBcnJheShOb2RlKiBu
b2RlKQogewogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2ppdC5ncmFwaCgp
Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCmluZGV4IDUzMTJjOGRiZWRmZWQxODAw
NTQzODExMzA3OWVlYjBiMGU5OTA4YWIuLjU3Mzk4MTU3OGYyNGY1YjMwMjU5ZjJhYzAyNTUyZmQ0
MDhmZTdhZTAgMTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklULmgKQEAgLTIyODEsNiArMjI4MSw3IEBAIGNsYXNzIFNwZWN1bGF0aXZlSklUIHsKICAgICB2
b2lkIGNvbXBpbGVQdXRCeVZhbEZvckZsb2F0VHlwZWRBcnJheShHUFJSZWcgYmFzZSwgR1BSUmVn
IHByb3BlcnR5LCBOb2RlKiwgVHlwZWRBcnJheVR5cGUpOwogICAgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBDbGFzc1R5cGU+IHZvaWQgY29tcGlsZU5ld0Z1bmN0aW9uQ29tbW9uKEdQUlJlZywgU3RydWN0
dXJlKiwgR1BSUmVnLCBHUFJSZWcsIEdQUlJlZywgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0Jiwg
c2l6ZV90LCBGdW5jdGlvbkV4ZWN1dGFibGUqLCBwdHJkaWZmX3QsIHB0cmRpZmZfdCwgcHRyZGlm
Zl90KTsKICAgICB2b2lkIGNvbXBpbGVOZXdGdW5jdGlvbihOb2RlKik7CisgICAgdm9pZCBjb21w
aWxlTmV3R2VuZXJhdG9yRnJhbWUoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUZvcndhcmRWYXJh
cmdzKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVDcmVhdGVBY3RpdmF0aW9uKE5vZGUqKTsKICAg
ICB2b2lkIGNvbXBpbGVDcmVhdGVEaXJlY3RBcmd1bWVudHMoTm9kZSopOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKaW5kZXgg
MTJlYjUwNDExODBhYzJmNTAxNjRmOTUxYjA1OGVkYjYyZDIyODI3MC4uMzEwM2FkNTlmZjIwNDFh
NzRkMTJlYThiODNhYzE3NzMzZWY3YzZlOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCkBAIC0zNjUwLDYgKzM2NTAsMTEg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBjZWxs
UmVzdWx0KHJlc3VsdFBheWxvYWQuZ3ByKCksIG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9
CisKKyAgICBjYXNlIE5ld0dlbmVyYXRvckZyYW1lOiB7CisgICAgICAgIGNvbXBpbGVOZXdHZW5l
cmF0b3JGcmFtZShub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogICAgICAgICAKICAgICBj
YXNlIFRvVGhpczogewogICAgICAgICBBU1NFUlQobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09
IFVudHlwZWRVc2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVDY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQ2NC5jcHAKaW5kZXggZTc0NTY5NDA0YzFiOTc4NDgwNjE5N2QxNDU0NWNkMWRiMjNk
N2E1Yy4uODk0MDJmMWUzNjgyMzk4NzgwNTE5NzQ2ZDRiYTcxZjQ2ZDFlN2YwOCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCkBAIC0z
Niw2ICszNiw3IEBACiAjaW5jbHVkZSAiREZHU2xvd1BhdGhHZW5lcmF0b3IuaCIKICNpbmNsdWRl
ICJEZWJ1Z2dlci5oIgogI2luY2x1ZGUgIkRpcmVjdEFyZ3VtZW50cy5oIgorI2luY2x1ZGUgIkdl
bmVyYXRvckZyYW1lLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiSlND
SW5saW5lcy5oIgogI2luY2x1ZGUgIkpTRW52aXJvbm1lbnRSZWNvcmQuaCIKQEAgLTM2ODgsNiAr
MzY4OSwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAg
ICAgIGNlbGxSZXN1bHQocmVzdWx0LmdwcigpLCBub2RlKTsKICAgICAgICAgYnJlYWs7CiAgICAg
fQorCisgICAgY2FzZSBOZXdHZW5lcmF0b3JGcmFtZTogeworICAgICAgICBjb21waWxlTmV3R2Vu
ZXJhdG9yRnJhbWUobm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICAgICAgCiAgICAg
Y2FzZSBUb1RoaXM6IHsKICAgICAgICAgQVNTRVJUKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9
PSBVbnR5cGVkVXNlKTsKQEAgLTQ3MjAsNiArNDcyNiwzOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2Rl
KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQorICAgIGNhc2UgU2V0R2VuZXJhdG9yTG9jYWw6IHsK
KyAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgZnJhbWUodGhpcywgbm9kZS0+Y2hpbGQxKCkp
OworICAgICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisK
KyAgICAgICAgR1BSUmVnIGZyYW1lR1BSID0gZnJhbWUuZ3ByKCk7CisgICAgICAgIEdQUlJlZyB2
YWx1ZUdQUiA9IHZhbHVlLmdwcigpOworICAgICAgICB1bnNpZ25lZCBnZW5lcmF0b3JGcmFtZUlu
ZGV4ID0gbm9kZS0+Z2VuZXJhdG9yRnJhbWVJbmRleCgpOworCisgICAgICAgIG1faml0LnN0b3Jl
NjQodmFsdWVHUFIsIEpJVENvbXBpbGVyOjpBZGRyZXNzKGZyYW1lR1BSLCBHZW5lcmF0b3JGcmFt
ZTo6bG9jYWxPZmZzZXQoZ2VuZXJhdG9yRnJhbWVJbmRleCkpKTsKKworICAgICAgICBub1Jlc3Vs
dChub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgR2V0R2VuZXJhdG9yTG9j
YWw6IHsKKyAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgZnJhbWUodGhpcywgbm9kZS0+Y2hp
bGQxKCkpOworICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOworCisgICAgICAgIEdQ
UlJlZyBmcmFtZUdQUiA9IGZyYW1lLmdwcigpOworICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0g
cmVzdWx0LmdwcigpOworICAgICAgICB1bnNpZ25lZCBnZW5lcmF0b3JGcmFtZUluZGV4ID0gbm9k
ZS0+Z2VuZXJhdG9yRnJhbWVJbmRleCgpOworCisgICAgICAgIG1faml0LmxvYWQ2NChKSVRDb21w
aWxlcjo6QWRkcmVzcyhmcmFtZUdQUiwgR2VuZXJhdG9yRnJhbWU6OmxvY2FsT2Zmc2V0KGdlbmVy
YXRvckZyYW1lSW5kZXgpKSwgcmVzdWx0R1BSKTsKKyAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1
bHRHUFIsIG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBQdXRHZW5lcmF0
b3JGcmFtZUxvY2FsczogeworICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBmcmFtZSh0aGlz
LCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIEdQUlJlZyBmcmFtZUdQUiA9IGZyYW1lLmdwcigp
OworICAgICAgICBtX2ppdC5zdG9yZTMyKFRydXN0ZWRJbW0zMihub2RlLT5nZW5lcmF0b3JGcmFt
ZUxvY2FscygpKSwgSklUQ29tcGlsZXI6OkFkZHJlc3MoZnJhbWVHUFIsIEdlbmVyYXRvckZyYW1l
OjpudW1iZXJPZlNhdmVkQ2FsbGVlTG9jYWxzT2Zmc2V0KCkpKTsKKyAgICAgICAgbm9SZXN1bHQo
bm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICBjYXNlIFByb2ZpbGVUeXBlOiB7CiAg
ICAgICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICAg
ICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2gxKHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcAppbmRl
eCA3MmYyMjAwY2VhMTBiOTgxMGRiYThjN2IxOWZlZmYyNGRhYTVkYWUzLi5kN2M3MDU2NmZjNzM3
Zjg5MGYxNTZiNTM0NTA5ZDlhMGMwNzM4ZTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcApAQCAt
MjgxLDYgKzI4MSwxMSBAQCBjbGFzcyBTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZSA6IHB1Ymxp
YyBQaGFzZSB7CiAgICAgICAgICAgICAgICAgY29uc2lkZXJCYXJyaWVyKG1fbm9kZS0+Y2hpbGQx
KCksIG1fbm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICBjYXNlIFNldEdlbmVyYXRvckxvY2FsOiB7CisgICAgICAgICAg
ICAgICAgY29uc2lkZXJCYXJyaWVyKG1fbm9kZS0+Y2hpbGQxKCksIG1fbm9kZS0+Y2hpbGQyKCkp
OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
IAogICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTI5Niw2
ICszMDEsNyBAQCBjbGFzcyBTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZSA6IHB1YmxpYyBQaGFz
ZSB7CiAgICAgICAgICAgICBjYXNlIE5ld0FycmF5QnVmZmVyOgogICAgICAgICAgICAgY2FzZSBO
ZXdUeXBlZEFycmF5OgogICAgICAgICAgICAgY2FzZSBOZXdSZWdleHA6CisgICAgICAgICAgICBj
YXNlIE5ld0dlbmVyYXRvckZyYW1lOgogICAgICAgICAgICAgY2FzZSBNYXRlcmlhbGl6ZU5ld09i
amVjdDoKICAgICAgICAgICAgIGNhc2UgTWF0ZXJpYWxpemVDcmVhdGVBY3RpdmF0aW9uOgogICAg
ICAgICAgICAgY2FzZSBOZXdTdHJpbmdPYmplY3Q6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2UuY3BwCmluZGV4
IDJjMDU1OTg0OTg5OWJkZjZmYjExMTc1OTdlMTA1NGJmZjM1NDY2OTMuLmUxYWVmMGIyYzM5M2Y1
NjE5NDhjY2E1YTk1OWYyZTA3MTA4ODQzODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2UuY3BwCkBAIC0x
NDksNiArMTQ5LDkgQEAgY2xhc3MgU3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2UgOiBwdWJsaWMg
UGhhc2UgewogICAgICAgICAgICAgICAgIGNhc2UgTmV3R2VuZXJhdG9yRnVuY3Rpb246CiAgICAg
ICAgICAgICAgICAgICAgIHJlZ2lzdGVyU3RydWN0dXJlKG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYyktPmdlbmVyYXRvckZ1bmN0aW9uU3RydWN0dXJlKCkpOwog
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIE5ld0dlbmVy
YXRvckZyYW1lOgorICAgICAgICAgICAgICAgICAgICByZWdpc3RlclN0cnVjdHVyZShtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5nZW5lcmF0b3JGcmFtZVN0
cnVjdHVyZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAg
ICAgIAogICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBS
ZXBvc2l0b3J5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFw
UmVwb3NpdG9yeS5jcHAKaW5kZXggOTdjMDc4NGJiNDJiYzkxOWQwNmNmNTIzYzQxZTAyNDZhNTM1
MWQ5MS4uNjlkODlkNmFkNDI1NDkyM2JjM2ZhYjNjN2FjYTIwODk1YzU1ZTVjYSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRv
cnkuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJEaXJlY3RBcmd1bWVudHMuaCIK
ICNpbmNsdWRlICJGVExBYmJyZXZpYXRpb25zLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yRnJhbWUu
aCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJKU0Vudmlyb25tZW50UmVj
b3JkLmgiCiAjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmgiCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCmlu
ZGV4IDc3ZTU3OTg2OTQwYzZhYzk2Zjg3ZjFmOTQ1YzQ2MjUxMjg4NjMwZjAuLmEzNjIxYTQxNTdl
ZTcyMzZlZjU2NmNmZWFmMDQyODRiYTIxNzMyOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCkBAIC00Nyw2ICs0Nyw3
IEBACiAgICAgbWFjcm8oRGlyZWN0QXJndW1lbnRzX2xlbmd0aCwgRGlyZWN0QXJndW1lbnRzOjpv
ZmZzZXRPZkxlbmd0aCgpKSBcCiAgICAgbWFjcm8oRGlyZWN0QXJndW1lbnRzX21pbkNhcGFjaXR5
LCBEaXJlY3RBcmd1bWVudHM6Om9mZnNldE9mTWluQ2FwYWNpdHkoKSkgXAogICAgIG1hY3JvKERp
cmVjdEFyZ3VtZW50c19vdmVycmlkZXMsIERpcmVjdEFyZ3VtZW50czo6b2Zmc2V0T2ZPdmVycmlk
ZXMoKSkgXAorICAgIG1hY3JvKEdlbmVyYXRvckZyYW1lX251bWJlck9mU2F2ZWRDYWxsZWVMb2Nh
bHMsIEdlbmVyYXRvckZyYW1lOjpudW1iZXJPZlNhdmVkQ2FsbGVlTG9jYWxzT2Zmc2V0KCkpIFwK
ICAgICBtYWNybyhHZXR0ZXJTZXR0ZXJfZ2V0dGVyLCBHZXR0ZXJTZXR0ZXI6Om9mZnNldE9mR2V0
dGVyKCkpIFwKICAgICBtYWNybyhHZXR0ZXJTZXR0ZXJfc2V0dGVyLCBHZXR0ZXJTZXR0ZXI6Om9m
ZnNldE9mU2V0dGVyKCkpIFwKICAgICBtYWNybyhKU0FycmF5QnVmZmVyVmlld19sZW5ndGgsIEpT
QXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSBcCkBAIC05MSw2ICs5Miw3IEBACiAK
ICNkZWZpbmUgRk9SX0VBQ0hfSU5ERVhFRF9BQlNUUkFDVF9IRUFQKG1hY3JvKSBcCiAgICAgbWFj
cm8oRGlyZWN0QXJndW1lbnRzX3N0b3JhZ2UsIERpcmVjdEFyZ3VtZW50czo6c3RvcmFnZU9mZnNl
dCgpLCBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKSBcCisgICAgbWFjcm8oR2VuZXJhdG9yRnJhbWVf
Y2FsbGVlTG9jYWxzLCBHZW5lcmF0b3JGcmFtZTo6b2Zmc2V0T2ZMb2NhbHMoKSwgc2l6ZW9mKFdy
aXRlQmFycmllcjxVbmtub3duPikpIFwKICAgICBtYWNybyhKU0Vudmlyb25tZW50UmVjb3JkX3Zh
cmlhYmxlcywgSlNFbnZpcm9ubWVudFJlY29yZDo6b2Zmc2V0T2ZWYXJpYWJsZXMoKSwgc2l6ZW9m
KEVuY29kZWRKU1ZhbHVlKSkgXAogICAgIG1hY3JvKEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcl9j
YWNoZWRQcm9wZXJ0eU5hbWVzVmVjdG9yQ29udGVudHMsIDAsIHNpemVvZihXcml0ZUJhcnJpZXI8
SlNTdHJpbmc+KSkgXAogICAgIG1hY3JvKEpTUm9wZVN0cmluZ19maWJlcnMsIEpTUm9wZVN0cmlu
Zzo6b2Zmc2V0T2ZGaWJlcnMoKSwgc2l6ZW9mKFdyaXRlQmFycmllcjxKU1N0cmluZz4pKSBcCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKaW5kZXggZDJh
NDkwYzJhNjdlNmRiOGI5YTVhNzk2NjRlNTY1ZTNkNmQ5NTFkYy4uMTdiNGUyZGI1ZjZhMWNjMDAz
Zjg4MGM3ZWE0YzYwMGFiOGFjODY3OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMQ2FwYWJpbGl0aWVzLmNwcApAQCAtNzIsNiArNzIsNyBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxl
dmVsIGNhbkNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIE5ld09iamVjdDoKICAgICBjYXNl
IE5ld0FycmF5OgogICAgIGNhc2UgTmV3QXJyYXlCdWZmZXI6CisgICAgY2FzZSBOZXdHZW5lcmF0
b3JGcmFtZToKICAgICBjYXNlIEdldEJ5T2Zmc2V0OgogICAgIGNhc2UgR2V0R2V0dGVyU2V0dGVy
QnlPZmZzZXQ6CiAgICAgY2FzZSBHZXRHZXR0ZXI6CkBAIC0yMTYsNiArMjE3LDkgQEAgaW5saW5l
IENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBQdXRTZXR0
ZXJCeVZhbDoKICAgICBjYXNlIENvcHlSZXN0OgogICAgIGNhc2UgR2V0UmVzdExlbmd0aDoKKyAg
ICBjYXNlIFNldEdlbmVyYXRvckxvY2FsOgorICAgIGNhc2UgR2V0R2VuZXJhdG9yTG9jYWw6Cisg
ICAgY2FzZSBQdXRHZW5lcmF0b3JGcmFtZUxvY2FsczoKICAgICAgICAgLy8gVGhlc2UgYXJlIE9L
LgogICAgICAgICBicmVhazsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExMb3dlckRGR1RvTExWTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExv
d2VyREZHVG9MTFZNLmNwcAppbmRleCAzN2NhZTVjMTdhZDljNzFkMDE4ZDQxYmI2ZTlhNjZjOTE3
Nzk2NmYyLi44N2M2YzM5ZDI5YzliNjIzMmQ1MzkyNzBiNmZiYzZmZTgwYjcwZjcyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcApAQCAtNTMs
NiArNTMsNyBAQAogI2luY2x1ZGUgIkZUTFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGUuaCIKICNp
bmNsdWRlICJGVExUaHVua3MuaCIKICNpbmNsdWRlICJGVExXZWlnaHRlZFRhcmdldC5oIgorI2lu
Y2x1ZGUgIkdlbmVyYXRvckZyYW1lLmgiCiAjaW5jbHVkZSAiSklUQWRkR2VuZXJhdG9yLmgiCiAj
aW5jbHVkZSAiSklUQml0QW5kR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiSklUQml0T3JHZW5lcmF0
b3IuaCIKQEAgLTgzOSw2ICs4NDAsOSBAQCBjbGFzcyBMb3dlckRGR1RvTExWTSB7CiAgICAgICAg
IGNhc2UgTmV3QXJyYXlXaXRoU2l6ZToKICAgICAgICAgICAgIGNvbXBpbGVOZXdBcnJheVdpdGhT
aXplKCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBOZXdHZW5lcmF0b3JGcmFt
ZToKKyAgICAgICAgICAgIGNvbXBpbGVOZXdHZW5lcmF0b3JGcmFtZSgpOworICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQ6CiAgICAgICAgICAg
ICBjb21waWxlR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQoKTsKICAgICAgICAgICAgIGJyZWFrOwpA
QCAtMTA3MSw2ICsxMDc1LDE1IEBAIGNsYXNzIExvd2VyREZHVG9MTFZNIHsKICAgICAgICAgY2Fz
ZSBHZXRSZXN0TGVuZ3RoOgogICAgICAgICAgICAgY29tcGlsZUdldFJlc3RMZW5ndGgoKTsKICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFB1dEdlbmVyYXRvckZyYW1lTG9jYWxzOgor
ICAgICAgICAgICAgY29tcGlsZVB1dEdlbmVyYXRvckZyYW1lTG9jYWxzKCk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBTZXRHZW5lcmF0b3JMb2NhbDoKKyAgICAgICAgICAgIGNv
bXBpbGVTZXRHZW5lcmF0b3JMb2NhbCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgR2V0R2VuZXJhdG9yTG9jYWw6CisgICAgICAgICAgICBjb21waWxlR2V0R2VuZXJhdG9yTG9j
YWwoKTsKKyAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgUGhhbnRvbUxvY2FsOgog
ICAgICAgICBjYXNlIExvb3BIaW50OgpAQCAtMzkxNiw2ICszOTI5LDI4IEBAIGNsYXNzIExvd2Vy
REZHVG9MTFZNIHsKICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4
dCk7CiAgICAgICAgIHNldEludDMyKG1fb3V0LnBoaShtX291dC5pbnQzMiwgemVyb0xlbmd0aFJl
c3VsdCwgbm9uWmVyb0xlbmd0aFJlc3VsdCkpOwogICAgIH0KKworICAgIHZvaWQgY29tcGlsZVB1
dEdlbmVyYXRvckZyYW1lTG9jYWxzKCkKKyAgICB7CisgICAgICAgIExWYWx1ZSBmcmFtZSA9IGxv
d0NlbGwobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIG1fb3V0LnN0b3JlMzIobV9vdXQuY29u
c3RJbnQzMihtX25vZGUtPmdlbmVyYXRvckZyYW1lTG9jYWxzKCkpLCBmcmFtZSwgbV9oZWFwcy5H
ZW5lcmF0b3JGcmFtZV9udW1iZXJPZlNhdmVkQ2FsbGVlTG9jYWxzKTsKKyAgICB9CisKKyAgICB2
b2lkIGNvbXBpbGVTZXRHZW5lcmF0b3JMb2NhbCgpCisgICAgeworICAgICAgICBtX291dC5zdG9y
ZTY0KAorICAgICAgICAgICAgbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMigpKSwKKyAgICAgICAg
ICAgIGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSksCisgICAgICAgICAgICBtX2hlYXBzLkdlbmVy
YXRvckZyYW1lX2NhbGxlZUxvY2Fsc1ttX25vZGUtPmdlbmVyYXRvckZyYW1lSW5kZXgoKV0pOwor
ICAgIH0KKworICAgIHZvaWQgY29tcGlsZUdldEdlbmVyYXRvckxvY2FsKCkKKyAgICB7CisgICAg
ICAgIHNldEpTVmFsdWUoCisgICAgICAgICAgICBtX291dC5sb2FkNjQoCisgICAgICAgICAgICAg
ICAgbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKSwKKyAgICAgICAgICAgICAgICBtX2hlYXBzLkdl
bmVyYXRvckZyYW1lX2NhbGxlZUxvY2Fsc1ttX25vZGUtPmdlbmVyYXRvckZyYW1lSW5kZXgoKV0p
KTsKKyAgICB9CiAgICAgCiAgICAgdm9pZCBjb21waWxlTmV3T2JqZWN0KCkKICAgICB7CkBAIC00
MTUwLDYgKzQxODUsMzYgQEAgY2xhc3MgTG93ZXJERkdUb0xMVk0gewogICAgICAgICAgICAgbV9v
dXQuY29uc3RJbnRQdHIoc3RydWN0dXJlKSk7CiAgICAgICAgIHNldEpTVmFsdWUodm1DYWxsKG1f
b3V0LmludDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uTmV3QXJyYXlXaXRoU2l6ZSksIG1f
Y2FsbEZyYW1lLCBzdHJ1Y3R1cmVWYWx1ZSwgcHVibGljTGVuZ3RoKSk7CiAgICAgfQorCisgICAg
dm9pZCBjb21waWxlTmV3R2VuZXJhdG9yRnJhbWUoKQorICAgIHsKKyAgICAgICAgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3Jp
Z2luLnNlbWFudGljKTsKKyAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBnbG9iYWxPYmpl
Y3QtPmdlbmVyYXRvckZyYW1lU3RydWN0dXJlKCk7CisKKyAgICAgICAgTEJhc2ljQmxvY2sgc2xv
d1BhdGggPSBGVExfTkVXX0JMT0NLKG1fb3V0LCAoIk5ld0dlbmVyYXRvckZyYW1lIHNsb3cgcGF0
aCIpKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gRlRMX05FV19CTE9DSyht
X291dCwgKCJOZXdHZW5lcmF0b3JGcmFtZSBjb250aW51YXRpb24iKSk7CisKKyAgICAgICAgTEJh
c2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5pbnNlcnROZXdCbG9ja3NCZWZvcmUoc2xvd1BhdGgp
OworICAgICAgICBMVmFsdWUgZmFzdE9iamVjdCA9IGFsbG9jYXRlT2JqZWN0PEdlbmVyYXRvckZy
YW1lPihHZW5lcmF0b3JGcmFtZTo6YWxsb2NhdGlvblNpemVGb3JMb2NhbHMobV9ub2RlLT5nZW5l
cmF0b3JGcmFtZVNpemUoKSksIHN0cnVjdHVyZSwgbV9vdXQuaW50UHRyWmVybywgc2xvd1BhdGgp
OworICAgICAgICBtX291dC5zdG9yZTMyKG1fb3V0LmNvbnN0SW50MzIoMCksIGZhc3RPYmplY3Qs
IG1faGVhcHMuR2VuZXJhdG9yRnJhbWVfbnVtYmVyT2ZTYXZlZENhbGxlZUxvY2Fscyk7CisgICAg
ICAgIFZhbHVlRnJvbUJsb2NrIGZhc3RSZXN1bHQgPSBtX291dC5hbmNob3IoZmFzdE9iamVjdCk7
CisgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKworICAgICAgICBtX291dC5hcHBl
bmRUbyhzbG93UGF0aCwgY29udGludWF0aW9uKTsKKyAgICAgICAgVmVjdG9yPExWYWx1ZT4gc2xv
d1BhdGhBcmd1bWVudHM7CisgICAgICAgIHVuc2lnbmVkIGdlbmVyYXRvckZyYW1lU2l6ZSA9IG1f
bm9kZS0+Z2VuZXJhdG9yRnJhbWVTaXplKCk7CisgICAgICAgIExWYWx1ZSBjYWxsUmVzdWx0ID0g
bGF6eVNsb3dQYXRoKAorICAgICAgICAgICAgWz1dIChjb25zdCBWZWN0b3I8TG9jYXRpb24+JiBs
b2NhdGlvbnMpIC0+IFJlZlB0cjxMYXp5U2xvd1BhdGg6OkdlbmVyYXRvcj4geworICAgICAgICAg
ICAgICAgIHJldHVybiBjcmVhdGVMYXp5Q2FsbEdlbmVyYXRvcigKKyAgICAgICAgICAgICAgICAg
ICAgb3BlcmF0aW9uTmV3R2VuZXJhdG9yRnJhbWUsCisgICAgICAgICAgICAgICAgICAgIGxvY2F0
aW9uc1swXS5kaXJlY3RHUFIoKSwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHN0cnVjdHVy
ZSksIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKGdlbmVyYXRvckZyYW1lU2l6ZSkpOworICAg
ICAgICAgICAgfSk7CisgICAgICAgIFZhbHVlRnJvbUJsb2NrIHNsb3dSZXN1bHQgPSBtX291dC5h
bmNob3IoY2FsbFJlc3VsdCk7CisgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKwor
ICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKKyAgICAgICAg
c2V0SlNWYWx1ZShtX291dC5waGkobV9vdXQuaW50UHRyLCBmYXN0UmVzdWx0LCBzbG93UmVzdWx0
KSk7CisgICAgfQogICAgIAogICAgIHZvaWQgY29tcGlsZUFsbG9jYXRlUHJvcGVydHlTdG9yYWdl
KCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKaW5kZXggYTNiZGZhN2NkNWQwZjU3
MjQ3ZjFiZThjNDBiMjUxMGQyOWQ4MDBmZi4uMGI5ZmQ4ZDM0M2ZkOGNlYjI3YWFmN2EzOTQwMDcw
NDY0NzRjMjY4YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcApAQCAtMjE2LDcgKzIxNiw5
IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgREVGSU5FX09Q
KG9wX2NoZWNrX3RkeikKICAgICAgICAgREVGSU5FX09QKG9wX2Fzc2VydCkKICAgICAgICAgREVG
SU5FX09QKG9wX3NhdmUpCi0gICAgICAgIERFRklORV9PUChvcF9yZXN1bWUpCisgICAgICAgIERF
RklORV9PUChvcF9uZXdfZ2VuZXJhdG9yX2ZyYW1lKQorICAgICAgICBERUZJTkVfT1Aob3BfcmVz
dW1lX2Zyb21fZ2VuZXJhdG9yX2ZyYW1lKQorICAgICAgICBERUZJTkVfT1Aob3BfY2xlYXJfZ2Vu
ZXJhdG9yX2ZyYW1lKQogICAgICAgICBERUZJTkVfT1Aob3BfZGVidWcpCiAgICAgICAgIERFRklO
RV9PUChvcF9kZWxfYnlfaWQpCiAgICAgICAgIERFRklORV9PUChvcF9kaXYpCkBAIC0yODksNiAr
MjkxLDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBERUZJ
TkVfT1Aob3BfcHV0X2dldHRlcl9zZXR0ZXJfYnlfaWQpCiAgICAgICAgIERFRklORV9PUChvcF9w
dXRfZ2V0dGVyX2J5X3ZhbCkKICAgICAgICAgREVGSU5FX09QKG9wX3B1dF9zZXR0ZXJfYnlfdmFs
KQorICAgICAgICBERUZJTkVfT1Aob3Bfbm9wKQogCiAgICAgICAgIERFRklORV9PUChvcF9yZXQp
CiAgICAgICAgIERFRklORV9PUChvcF9yc2hpZnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAppbmRl
eCBkZjdiM2RjNWU4OTIwZWU0ZWY5MmJjYWNiYWVmZjFiNGMwMGQ5MzY5Li5lYzY4MWQwOTkwZWYw
YzJhMWIwYzQxZDU0MTJiYmNlMGMwZDM5MWRlIDEwMDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKQEAg
LTQ5NSw3ICs0OTUsOSBAQAogICAgICAgICB2b2lkIGVtaXRfb3BfY2hlY2tfdGR6KEluc3RydWN0
aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9hc3NlcnQoSW5zdHJ1Y3Rpb24qKTsKICAgICAg
ICAgdm9pZCBlbWl0X29wX3NhdmUoSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29w
X3Jlc3VtZShJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfcmVzdW1lX2Zyb21f
Z2VuZXJhdG9yX2ZyYW1lKEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9jbGVh
cl9nZW5lcmF0b3JfZnJhbWUoSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX25l
d19nZW5lcmF0b3JfZnJhbWUoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2Rl
YnVnKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9kZWxfYnlfaWQoSW5zdHJ1
Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2RpdihJbnN0cnVjdGlvbiopOwpAQCAtNTk1
LDYgKzU5Nyw3IEBACiAgICAgICAgIHZvaWQgZW1pdF9vcF9lbnVtZXJhdG9yX3N0cnVjdHVyZV9w
bmFtZShJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZW51bWVyYXRvcl9nZW5l
cmljX3BuYW1lKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF90b19pbmRleF9z
dHJpbmcoSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX25vcChJbnN0cnVjdGlv
biopOwogCiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfYWRkKEluc3RydWN0aW9uKiwgVmVjdG9y
PFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogICAgICAgICB2b2lkIGVtaXRTbG93X29wX2Jp
dGFuZChJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCmluZGV4IDczOGNiNjNmZWQ5MWI0
OTg1NWQ1ZDAzM2Q0NjMzNDVmZGQ0NzZkOWIuLjRhNmE4OGM4NGY1NzVmMTRiYWI2MDM5MzkwZjQ2
ODE5NGVmNzM3MjYgMTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bj
b2Rlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcApA
QCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkNvcGllZFNwYWNlSW5saW5lcy5oIgogI2luY2x1
ZGUgIkRlYnVnZ2VyLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uLmgiCisjaW5jbHVkZSAiR2VuZXJh
dG9yRnJhbWUuaCIKICNpbmNsdWRlICJIZWFwLmgiCiAjaW5jbHVkZSAiSklUSW5saW5lcy5oIgog
I2luY2x1ZGUgIkpTQXJyYXkuaCIKQEAgLTg5Myw2ICs4OTQsMjMgQEAgdm9pZCBKSVQ6OmVtaXRT
bG93X29wX3RvX3N0cmluZyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8
U2xvd0Nhc2UKICAgICBzbG93UGF0aENhbGwuY2FsbCgpOwogfQogCit2b2lkIEpJVDo6ZW1pdF9v
cF9yZXN1bWVfZnJvbV9nZW5lcmF0b3JfZnJhbWUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKK3sKKyAgICBpbnQgZHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsK
KyAgICBpbnQgZnJhbWUgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOworICAgIHVu
c2lnbmVkIGluZGV4ID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUudW5zaWduZWRWYWx1ZTsKKyAg
ICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGZyYW1lLCByZWdUMSk7CisgICAgbG9hZDY0KEFkZHJl
c3MocmVnVDEsIEdlbmVyYXRvckZyYW1lOjpsb2NhbE9mZnNldChpbmRleCkpLCByZWdUMCk7Cisg
ICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QpOworfQorCit2b2lkIEpJVDo6ZW1pdF9vcF9j
bGVhcl9nZW5lcmF0b3JfZnJhbWUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sK
KyAgICBpbnQgZnJhbWUgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOworICAgIGVt
aXRHZXRWaXJ0dWFsUmVnaXN0ZXIoZnJhbWUsIHJlZ1QxKTsKKyAgICBzdG9yZTMyKFRydXN0ZWRJ
bW0zMigwKSwgQWRkcmVzcyhyZWdUMSwgR2VuZXJhdG9yRnJhbWU6Om51bWJlck9mU2F2ZWRDYWxs
ZWVMb2NhbHNPZmZzZXQoKSkpOworfQorCiAjZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkKIAogdm9p
ZCBKSVQ6OmVtaXRfb3BfbG9vcF9oaW50KEluc3RydWN0aW9uKikKQEAgLTE0MzUsMTIgKzE0NTMs
MTYgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bfc2F2ZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQogICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX3Jl
c3VtZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3Bf
bmV3X2dlbmVyYXRvcl9mcmFtZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewot
ICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9u
LCBzbG93X3BhdGhfcmVzdW1lKTsKKyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRo
aXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX25ld19nZW5lcmF0b3JfZnJhbWUpOwog
ICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CiB9CiAKK3ZvaWQgSklUOjplbWl0X29wX25vcChJbnN0
cnVjdGlvbiopCit7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gRU5BQkxF
KEpJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNl
dHNFeHRyYWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0
c0V4dHJhY3Rvci5jcHAKaW5kZXggMmI0ZTYxOTg2ZDMxMmFjOWU0Zjg3MzczY2U3YWEwYjlmZDBj
ZTc1YS4uYWZlMDk2ODQ4OGY0NmQxNjc1YzkxN2VjYjJiNjIwYzAwNTYxMjI0NiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5j
cHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJEaXJlY3RBcmd1bWVudHMuaCIKICNpbmNs
dWRlICJFeGNlcHRpb24uaCIKICNpbmNsdWRlICJFeGVjdXRhYmxlLmgiCisjaW5jbHVkZSAiR2Vu
ZXJhdG9yRnJhbWUuaCIKICNpbmNsdWRlICJIZWFwLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIu
aCIKICNpbmNsdWRlICJKU0FycmF5LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KaW5kZXggY2Q0Y2U5MDYzYjE5NTc1YTk1N2Uz
Y2EzZTIyYmU1NzkxNWJkYjU5YS4uY2VhODAzMTdiMTc1YjUxNWFjYzAxYWI4Nzc5OTgyZWE2Njkx
Y2VjNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXIuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbElu
dGVycHJldGVyLmFzbQpAQCAtMTY1LDYgKzE2NSw3IEBAIGNvbnN0IFNsb3RTaXplID0gOAogCiBj
b25zdCBKU0Vudmlyb25tZW50UmVjb3JkX3ZhcmlhYmxlcyA9IChzaXplb2YgSlNFbnZpcm9ubWVu
dFJlY29yZCArIFNsb3RTaXplIC0gMSkgJiB+KFNsb3RTaXplIC0gMSkKIGNvbnN0IERpcmVjdEFy
Z3VtZW50c19zdG9yYWdlID0gKHNpemVvZiBEaXJlY3RBcmd1bWVudHMgKyBTbG90U2l6ZSAtIDEp
ICYgfihTbG90U2l6ZSAtIDEpCitjb25zdCBHZW5lcmF0b3JGcmFtZV9jYWxsZWVMb2NhbHMgPSAo
c2l6ZW9mIEdlbmVyYXRvckZyYW1lICsgU2xvdFNpemUgLSAxKSAmIH4oU2xvdFNpemUgLSAxKQog
CiBjb25zdCBTdGFja0FsaWdubWVudCA9IDE2CiBjb25zdCBTdGFja0FsaWdubWVudFNsb3RzID0g
MgpAQCAtMTI1Niw2ICsxMjU3LDEyIEBAIF9sbGludF9vcF9uZXdfcmVnZXhwOgogICAgIGRpc3Bh
dGNoKDMpCiAKIAorX2xsaW50X29wX25ld19nZW5lcmF0b3JfZnJhbWU6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRoX25ld19nZW5lcmF0b3JfZnJhbWUp
CisgICAgZGlzcGF0Y2goMykKKworCiBfbGxpbnRfb3BfbGVzczoKICAgICB0cmFjZUV4ZWN1dGlv
bigpCiAgICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfbGVzcykKQEAgLTE1OTUsMTAgKzE2MDIs
MTYgQEAgX2xsaW50X29wX3NhdmU6CiAgICAgZGlzcGF0Y2goNCkKIAogCi1fbGxpbnRfb3BfcmVz
dW1lOgorX2xsaW50X29wX3NhdmVfaGludDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2Fs
bFNsb3dQYXRoKF9zbG93X3BhdGhfc2F2ZSkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9v
cF9yZXN1bWVfaGludDoKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgY2FsbFNsb3dQYXRoKF9z
bG93X3BhdGhfcmVzdW1lKQotICAgIGRpc3BhdGNoKDMpCisgICAgZGlzcGF0Y2goNCkKIAogCiBf
bGxpbnRfb3BfY3JlYXRlX2xleGljYWxfZW52aXJvbm1lbnQ6CkBAIC0xNzA4LDYgKzE3MjEsMTAg
QEAgX2xsaW50X29wX2NvcHlfcmVzdDoKICAgICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF9jb3B5
X3Jlc3QpCiAgICAgZGlzcGF0Y2goNCkKIAorX2xsaW50X29wX25vcDoKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgZGlzcGF0Y2goMSkKKwogCiAjIExhc3RseSwgbWFrZSBzdXJlIHRoYXQgd2Ug
Y2FuIGxpbmsgZXZlbiB0aG91Z2ggd2UgZG9uJ3Qgc3VwcG9ydCBhbGwgb3Bjb2Rlcy4KICMgVGhl
c2Ugb3Bjb2RlcyBzaG91bGQgbmV2ZXIgYXJpc2Ugd2hlbiB1c2luZyBMTEludCBvciBlaXRoZXIg
SklULiBXZSBhc3NlcnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KaW5kZXggODUxNzNiYzgyNjIxNDZiMGUwZDFlMDE5MmI3
MDYwMjhiYmQ5MDY4My4uNDkyYzYzYzI1Y2RmYWUzMmZmOWVlYjhhNGQxOTdlNTg1NTMxOWFjMSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXI2NC5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXI2NC5hc20KQEAgLTIzMjEsMyArMjMyMSwxOCBAQCBfbGxpbnRfb3BfZ2V0X3Jlc3RfbGVu
Z3RoOgogICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigxLCB0MSkKICAgICBzdG9yZXEgdDAsIFtj
ZnIsIHQxLCA4XQogICAgIGRpc3BhdGNoKDMpCisKK19sbGludF9vcF9jbGVhcl9nZW5lcmF0b3Jf
ZnJhbWU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRWYXJpYWJsZSgxLCB0MCkKKyAg
ICBzdG9yZWkgMCwgR2VuZXJhdG9yRnJhbWU6Om1fbnVtYmVyT2ZTYXZlZENhbGxlZUxvY2Fsc1t0
MF0KKyAgICBkaXNwYXRjaCgyKQorCitfbGxpbnRfb3BfcmVzdW1lX2Zyb21fZ2VuZXJhdG9yX2Zy
YW1lOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkVmFyaWFibGUoMiwgdDApCisgICAg
bG9hZGlzRnJvbUluc3RydWN0aW9uKDMsIHQxKQorICAgIGxvYWRxIEdlbmVyYXRvckZyYW1lX2Nh
bGxlZUxvY2Fsc1t0MCwgdDEsIDhdLCB0MAorICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigxLCB0
MSkKKyAgICBzdG9yZXEgdDAsIFtjZnIsIHQxLCA4XQorICAgIGRpc3BhdGNoKDQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKaW5kZXggOGQzNzA2MzQ1MTI4ZTlkZjlkYWMz
MjU3ZjdjNWY0ZTVhYjNhOWMzNC4uNjQ3MDU2OWM0NjcwNjllN2NlNjI3NzIxNzAzMWZjMjhiZDlj
YWZkZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcApAQCAtMjUwLDkg
KzI1MCwxMCBAQAogICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24gPSBmYWxz
ZTsKICAgICBpZiAobV9sZXhlci0+aXNSZXBhcnNpbmdGdW5jdGlvbigpKSB7CiAgICAgICAgIFBh
cnNlckZ1bmN0aW9uSW5mbzxBU1RCdWlsZGVyPiBmdW5jdGlvbkluZm87Ci0gICAgICAgIGlmIChw
YXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JCb2R5TW9kZSkKLSAgICAgICAg
ICAgIGZ1bmN0aW9uSW5mby5wYXJhbWV0ZXJzID0gY3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhj
b250ZXh0KTsKLSAgICAgICAgZWxzZQorICAgICAgICBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBh
cnNlTW9kZTo6R2VuZXJhdG9yQm9keU1vZGUpIHsKKyAgICAgICAgICAgIHVuc2lnbmVkIHBhcmFt
ZXRlckNvdW50ID0gMDsKKyAgICAgICAgICAgIGZ1bmN0aW9uSW5mby5wYXJhbWV0ZXJzID0gY3Jl
YXRlR2VuZXJhdG9yUGFyYW1ldGVycyhjb250ZXh0LCBwYXJhbWV0ZXJDb3VudCk7CisgICAgICAg
IH0gZWxzZQogICAgICAgICAgICAgcGFyc2VGdW5jdGlvblBhcmFtZXRlcnMoY29udGV4dCwgcGFy
c2VNb2RlLCBmdW5jdGlvbkluZm8pOwogICAgICAgICBtX3BhcmFtZXRlcnMgPSBmdW5jdGlvbklu
Zm8ucGFyYW1ldGVyczsKIApAQCAtNDg1LDEwICs0ODYsOSBAQAogCiAgICAgUGFyc2VyRnVuY3Rp
b25JbmZvPFRyZWVCdWlsZGVyPiBpbmZvOwogICAgIGluZm8ubmFtZSA9ICZtX3ZtLT5wcm9wZXJ0
eU5hbWVzLT5udWxsSWRlbnRpZmllcjsKLSAgICBpbmZvLnBhcmFtZXRlcnMgPSBjcmVhdGVHZW5l
cmF0b3JQYXJhbWV0ZXJzKGNvbnRleHQpOworICAgIGluZm8ucGFyYW1ldGVycyA9IGNyZWF0ZUdl
bmVyYXRvclBhcmFtZXRlcnMoY29udGV4dCwgaW5mby5wYXJhbWV0ZXJDb3VudCk7CiAgICAgaW5m
by5zdGFydE9mZnNldCA9IHBhcmFtZXRlcnNTdGFydDsKICAgICBpbmZvLnN0YXJ0TGluZSA9IHRv
a2VuTGluZSgpOwotICAgIGluZm8ucGFyYW1ldGVyQ291bnQgPSA0OyAvLyBnZW5lcmF0b3IsIHN0
YXRlLCB2YWx1ZSwgcmVzdW1lIG1vZGUKIAogICAgIHsKICAgICAgICAgQXV0b1BvcFNjb3BlUmVm
IGdlbmVyYXRvckJvZHlTY29wZSh0aGlzLCBwdXNoU2NvcGUoKSk7CkBAIC0xNzgxLDMyICsxNzgx
LDMxIEBAIHN0YXRpYyBjb25zdCBjaGFyKiBzdHJpbmdGb3JGdW5jdGlvbk1vZGUoU291cmNlUGFy
c2VNb2RlIG1vZGUpCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+Ci10ZW1wbGF0
ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpGb3JtYWxQYXJhbWV0
ZXJMaXN0IFBhcnNlcjxMZXhlclR5cGU+OjpjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKFRyZWVC
dWlsZGVyJiBjb250ZXh0KQordGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiB0eXBlbmFtZSBU
cmVlQnVpbGRlcjo6Rm9ybWFsUGFyYW1ldGVyTGlzdCBQYXJzZXI8TGV4ZXJUeXBlPjo6Y3JlYXRl
R2VuZXJhdG9yUGFyYW1ldGVycyhUcmVlQnVpbGRlciYgY29udGV4dCwgdW5zaWduZWQmIHBhcmFt
ZXRlckNvdW50KQogewogICAgIGF1dG8gcGFyYW1ldGVycyA9IGNvbnRleHQuY3JlYXRlRm9ybWFs
UGFyYW1ldGVyTGlzdCgpOwogCiAgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uKHRva2VuTG9j
YXRpb24oKSk7CiAgICAgSlNUZXh0UG9zaXRpb24gcG9zaXRpb24gPSB0b2tlblN0YXJ0UG9zaXRp
b24oKTsKIAotICAgIC8vIEBnZW5lcmF0b3IKLSAgICBkZWNsYXJlUGFyYW1ldGVyKCZtX3ZtLT5w
cm9wZXJ0eU5hbWVzLT5nZW5lcmF0b3JQcml2YXRlTmFtZSk7Ci0gICAgYXV0byBnZW5lcmF0b3Ig
PSBjb250ZXh0LmNyZWF0ZUJpbmRpbmdMb2NhdGlvbihsb2NhdGlvbiwgbV92bS0+cHJvcGVydHlO
YW1lcy0+Z2VuZXJhdG9yUHJpdmF0ZU5hbWUsIHBvc2l0aW9uLCBwb3NpdGlvbiwgQXNzaWdubWVu
dENvbnRleHQ6OkRlY2xhcmF0aW9uU3RhdGVtZW50KTsKLSAgICBjb250ZXh0LmFwcGVuZFBhcmFt
ZXRlcihwYXJhbWV0ZXJzLCBnZW5lcmF0b3IsIDApOworICAgIGF1dG8gYWRkUGFyYW1ldGVyID0g
WyZdKGNvbnN0IElkZW50aWZpZXImIG5hbWUpIHsKKyAgICAgICAgZGVjbGFyZVBhcmFtZXRlcigm
bmFtZSk7CisgICAgICAgIGF1dG8gYmluZGluZyA9IGNvbnRleHQuY3JlYXRlQmluZGluZ0xvY2F0
aW9uKGxvY2F0aW9uLCBuYW1lLCBwb3NpdGlvbiwgcG9zaXRpb24sIEFzc2lnbm1lbnRDb250ZXh0
OjpEZWNsYXJhdGlvblN0YXRlbWVudCk7CisgICAgICAgIGNvbnRleHQuYXBwZW5kUGFyYW1ldGVy
KHBhcmFtZXRlcnMsIGJpbmRpbmcsIDApOworICAgIH07CiAKKyAgICAvLyBAZ2VuZXJhdG9yCisg
ICAgYWRkUGFyYW1ldGVyKG1fdm0tPnByb3BlcnR5TmFtZXMtPmdlbmVyYXRvclByaXZhdGVOYW1l
KTsKICAgICAvLyBAZ2VuZXJhdG9yU3RhdGUKLSAgICBkZWNsYXJlUGFyYW1ldGVyKCZtX3ZtLT5w
cm9wZXJ0eU5hbWVzLT5nZW5lcmF0b3JTdGF0ZVByaXZhdGVOYW1lKTsKLSAgICBhdXRvIGdlbmVy
YXRvclN0YXRlID0gY29udGV4dC5jcmVhdGVCaW5kaW5nTG9jYXRpb24obG9jYXRpb24sIG1fdm0t
PnByb3BlcnR5TmFtZXMtPmdlbmVyYXRvclN0YXRlUHJpdmF0ZU5hbWUsIHBvc2l0aW9uLCBwb3Np
dGlvbiwgQXNzaWdubWVudENvbnRleHQ6OkRlY2xhcmF0aW9uU3RhdGVtZW50KTsKLSAgICBjb250
ZXh0LmFwcGVuZFBhcmFtZXRlcihwYXJhbWV0ZXJzLCBnZW5lcmF0b3JTdGF0ZSwgMCk7Ci0KKyAg
ICBhZGRQYXJhbWV0ZXIobV92bS0+cHJvcGVydHlOYW1lcy0+Z2VuZXJhdG9yU3RhdGVQcml2YXRl
TmFtZSk7CiAgICAgLy8gQGdlbmVyYXRvclZhbHVlCi0gICAgZGVjbGFyZVBhcmFtZXRlcigmbV92
bS0+cHJvcGVydHlOYW1lcy0+Z2VuZXJhdG9yVmFsdWVQcml2YXRlTmFtZSk7Ci0gICAgYXV0byBn
ZW5lcmF0b3JWYWx1ZSA9IGNvbnRleHQuY3JlYXRlQmluZGluZ0xvY2F0aW9uKGxvY2F0aW9uLCBt
X3ZtLT5wcm9wZXJ0eU5hbWVzLT5nZW5lcmF0b3JWYWx1ZVByaXZhdGVOYW1lLCBwb3NpdGlvbiwg
cG9zaXRpb24sIEFzc2lnbm1lbnRDb250ZXh0OjpEZWNsYXJhdGlvblN0YXRlbWVudCk7Ci0gICAg
Y29udGV4dC5hcHBlbmRQYXJhbWV0ZXIocGFyYW1ldGVycywgZ2VuZXJhdG9yVmFsdWUsIDApOwot
CisgICAgYWRkUGFyYW1ldGVyKG1fdm0tPnByb3BlcnR5TmFtZXMtPmdlbmVyYXRvclZhbHVlUHJp
dmF0ZU5hbWUpOwogICAgIC8vIEBnZW5lcmF0b3JSZXN1bWVNb2RlCi0gICAgZGVjbGFyZVBhcmFt
ZXRlcigmbV92bS0+cHJvcGVydHlOYW1lcy0+Z2VuZXJhdG9yUmVzdW1lTW9kZVByaXZhdGVOYW1l
KTsKLSAgICBhdXRvIGdlbmVyYXRvclJlc3VtZU1vZGUgPSBjb250ZXh0LmNyZWF0ZUJpbmRpbmdM
b2NhdGlvbihsb2NhdGlvbiwgbV92bS0+cHJvcGVydHlOYW1lcy0+Z2VuZXJhdG9yUmVzdW1lTW9k
ZVByaXZhdGVOYW1lLCBwb3NpdGlvbiwgcG9zaXRpb24sIEFzc2lnbm1lbnRDb250ZXh0OjpEZWNs
YXJhdGlvblN0YXRlbWVudCk7Ci0gICAgY29udGV4dC5hcHBlbmRQYXJhbWV0ZXIocGFyYW1ldGVy
cywgZ2VuZXJhdG9yUmVzdW1lTW9kZSwgMCk7CisgICAgYWRkUGFyYW1ldGVyKG1fdm0tPnByb3Bl
cnR5TmFtZXMtPmdlbmVyYXRvclJlc3VtZU1vZGVQcml2YXRlTmFtZSk7CisgICAgLy8gQGdlbmVy
YXRvckZyYW1lCisgICAgYWRkUGFyYW1ldGVyKG1fdm0tPnByb3BlcnR5TmFtZXMtPmdlbmVyYXRv
ckZyYW1lUHJpdmF0ZU5hbWUpOworCisgICAgcGFyYW1ldGVyQ291bnQgPSA1OwogCiAgICAgcmV0
dXJuIHBhcmFtZXRlcnM7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1BhcnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAppbmRl
eCBhMTFiMzVjMTAxZmU1Yjg0OWNiMjMzMDk2YzU2ODMxMzcwNjZjYWJmLi5lNjE0OWEzYWMzNjk0
MDQ4OTNkMjM2OTY5MzE2YjVjMzAzM2JlODUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1BhcnNlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
UGFyc2VyLmgKQEAgLTEyNTksNyArMTI1OSw3IEBAIGNsYXNzIFBhcnNlciB7CiAgICAgdGVtcGxh
dGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBORVZFUl9JTkxJTkUgYm9vbCBwYXJzZUZ1bmN0aW9uSW5m
byhUcmVlQnVpbGRlciYsIEZ1bmN0aW9uUmVxdWlyZW1lbnRzLCBTb3VyY2VQYXJzZU1vZGUsIGJv
b2wgbmFtZUlzSW5Db250YWluaW5nU2NvcGUsIENvbnN0cnVjdG9yS2luZCwgU3VwZXJCaW5kaW5n
LCBpbnQgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIFBhcnNlckZ1bmN0aW9uSW5mbzxUcmVlQnVpbGRl
cj4mLCBGdW5jdGlvbkRlZmluaXRpb25UeXBlKTsKICAgICAKICAgICB0ZW1wbGF0ZSA8Y2xhc3Mg
VHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElORSBpbnQgcGFyc2VGdW5jdGlvblBhcmFtZXRlcnMoVHJl
ZUJ1aWxkZXImLCBTb3VyY2VQYXJzZU1vZGUsIFBhcnNlckZ1bmN0aW9uSW5mbzxUcmVlQnVpbGRl
cj4mKTsKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElORSB0eXBl
bmFtZSBUcmVlQnVpbGRlcjo6Rm9ybWFsUGFyYW1ldGVyTGlzdCBjcmVhdGVHZW5lcmF0b3JQYXJh
bWV0ZXJzKFRyZWVCdWlsZGVyJik7CisgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBO
RVZFUl9JTkxJTkUgdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkZvcm1hbFBhcmFtZXRlckxpc3QgY3Jl
YXRlR2VuZXJhdG9yUGFyYW1ldGVycyhUcmVlQnVpbGRlciYsIHVuc2lnbmVkJiBwYXJhbWV0ZXJD
b3VudCk7CiAKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElORSBU
cmVlQ2xhc3NFeHByZXNzaW9uIHBhcnNlQ2xhc3MoVHJlZUJ1aWxkZXImLCBGdW5jdGlvblJlcXVp
cmVtZW50cywgUGFyc2VyQ2xhc3NJbmZvPFRyZWVCdWlsZGVyPiYpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAppbmRleCA3OGI0M2M0
ZDM4OWZmN2E5MDgzMTNiNTU0MDU3MGU4ODJlMWIwMzcxLi4wYzZhNzNlNTU1NzYyMDkwNTUxMjIx
NTMwZDcyYTM0YjhmZDI1Y2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db21tb25TbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKQEAgLTY5NywxOCArNjk3LDcgQEAgc3RhdGljIHZvaWQg
dXBkYXRlUmVzdWx0UHJvZmlsZUZvckJpbmFyeUFyaXRoT3AoRXhlY1N0YXRlKiwgSW5zdHJ1Y3Rp
b24qLCBKU1ZhbHUKICAgICAvLyBPbmx5IHNhdmUgdmFyaWFibGVzIGFuZCB0ZW1wb3JhcnkgcmVn
aXN0ZXJzLiBUaGUgc2NvcGUgcmVnaXN0ZXJzIGFyZSBpbmNsdWRlZCBpbiB0aGVtLgogICAgIC8v
IEJ1dCBwYXJhbWV0ZXJzIGFyZSBub3QgaW5jbHVkZWQuIEJlY2F1c2UgdGhlIGdlbmVyYXRvciBp
bXBsZW1lbnRhdGlvbiByZXBsYWNlcyB0aGUgdmFsdWVzIG9mIHBhcmFtZXRlcnMgb24gZWFjaCBn
ZW5lcmF0b3IubmV4dCgpIGNhbGwuCiAgICAgQkVHSU4oKTsKLSAgICBKU1ZhbHVlIGdlbmVyYXRv
ciA9IE9QKDEpLmpzVmFsdWUoKTsKLSAgICBHZW5lcmF0b3JGcmFtZSogZnJhbWUgPSBudWxscHRy
OwotICAgIEpTVmFsdWUgdmFsdWUgPSBnZW5lcmF0b3IuZ2V0KGV4ZWMsIGV4ZWMtPnByb3BlcnR5
TmFtZXMoKS5nZW5lcmF0b3JGcmFtZVByaXZhdGVOYW1lKTsKLSAgICBpZiAoIXZhbHVlLmlzTnVs
bCgpKQotICAgICAgICBmcmFtZSA9IGpzQ2FzdDxHZW5lcmF0b3JGcmFtZSo+KHZhbHVlKTsKLSAg
ICBlbHNlIHsKLSAgICAgICAgLy8gRklYTUU6IE9uY2UgSlNHZW5lcmF0b3Igc3BlY2lhbGl6ZWQg
b2JqZWN0IGlzIGludHJvZHVjZWQsIHRoaXMgR2VuZXJhdG9yRnJhbWUgc2hvdWxkIGJlIGVtYmVk
ZWQgaW50byBpdCB0byBhdm9pZCBhbGxvY2F0aW9ucy4KLSAgICAgICAgLy8gaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTU0NQotICAgICAgICBmcmFtZSA9IEdlbmVy
YXRvckZyYW1lOjpjcmVhdGUoZXhlYy0+dm0oKSwgIGV4ZWMtPmNvZGVCbG9jaygpLT5udW1DYWxs
ZWVMb2NhbHMoKSk7Ci0gICAgICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGdlbmVyYXRvciwgdHJ1
ZSwgUHV0UHJvcGVydHlTbG90OjpQdXRCeUlkKTsKLSAgICAgICAgYXNPYmplY3QoZ2VuZXJhdG9y
KS0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPnB1dChhc09iamVjdChnZW5lcmF0b3IpLCBleGVj
LCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuZ2VuZXJhdG9yRnJhbWVQcml2YXRlTmFtZSwgZnJhbWUs
IHNsb3QpOwotICAgIH0KKyAgICBHZW5lcmF0b3JGcmFtZSogZnJhbWUgPSBqc0Nhc3Q8R2VuZXJh
dG9yRnJhbWUqPihPUCgxKS5qc1ZhbHVlKCkpOwogICAgIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2Nh
bHNJbmRleCA9IHBjWzJdLnUudW5zaWduZWRWYWx1ZTsKICAgICBmcmFtZS0+c2F2ZShleGVjLCBl
eGVjLT5jb2RlQmxvY2soKS0+bGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQobGl2ZUNhbGxlZUxvY2Fs
c0luZGV4KSk7CiAgICAgRU5EKCk7CkBAIC03MTcsOCArNzA2LDcgQEAgc3RhdGljIHZvaWQgdXBk
YXRlUmVzdWx0UHJvZmlsZUZvckJpbmFyeUFyaXRoT3AoRXhlY1N0YXRlKiwgSW5zdHJ1Y3Rpb24q
LCBKU1ZhbHUKIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9yZXN1bWUpCiB7CiAgICAgQkVHSU4o
KTsKLSAgICBKU1ZhbHVlIGdlbmVyYXRvciA9IE9QKDEpLmpzVmFsdWUoKTsKLSAgICBHZW5lcmF0
b3JGcmFtZSogZnJhbWUgPSBqc0Nhc3Q8R2VuZXJhdG9yRnJhbWUqPihnZW5lcmF0b3IuZ2V0KGV4
ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5nZW5lcmF0b3JGcmFtZVByaXZhdGVOYW1lKSk7Cisg
ICAgR2VuZXJhdG9yRnJhbWUqIGZyYW1lID0ganNDYXN0PEdlbmVyYXRvckZyYW1lKj4oT1AoMSku
anNWYWx1ZSgpKTsKICAgICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSBwY1syXS51
LnVuc2lnbmVkVmFsdWU7CiAgICAgZnJhbWUtPnJlc3VtZShleGVjLCBleGVjLT5jb2RlQmxvY2so
KS0+bGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQobGl2ZUNhbGxlZUxvY2Fsc0luZGV4KSk7CiAgICAg
RU5EKCk7CkBAIC03OTcsNCArNzg1LDEyIEBAIHN0YXRpYyB2b2lkIHVwZGF0ZVJlc3VsdFByb2Zp
bGVGb3JCaW5hcnlBcml0aE9wKEV4ZWNTdGF0ZSosIEluc3RydWN0aW9uKiwgSlNWYWx1CiAgICAg
RU5EKCk7CiB9CiAKK1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9uZXdfZ2VuZXJhdG9yX2ZyYW1l
KQoreworICAgIEJFR0lOKCk7CisgICAgdW5zaWduZWQgZ2VuZXJhdG9yRnJhbWVTaXplID0gcGNb
Ml0udS51bnNpZ25lZFZhbHVlOworICAgIFJFVFVSTihHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlKGV4
ZWMsIGdlbmVyYXRvckZyYW1lU2l6ZSkpOworfQorCisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAppbmRleCBm
MDBkODcwNWQ0ZTY3ZmU0ZDQwNTliZGUxNjhlZTg4ZjU3ZGY3MmU3Li4wNjUwYzRlOGNiNzE1NTkx
N2NkMWQ3YTJmNzdhN2M3ZjcyOWExNTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21tb25TbG93UGF0aHMuaApAQCAtMjk2LDYgKzI5Niw3IEBAIGlubGluZSB2b2lk
IGRlY29kZVJlc3VsdChTbG93UGF0aFJldHVyblR5cGUgcmVzdWx0LCB2b2lkKiYgYSwgdm9pZCom
IGIpCiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3B1c2hfd2l0aF9zY29wZSk7CiBT
TE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3Jlc29sdmVfc2NvcGUpOwogU0xPV19QQVRI
X0hJRERFTl9ERUNMKHNsb3dfcGF0aF9jb3B5X3Jlc3QpOworU0xPV19QQVRIX0hJRERFTl9ERUNM
KHNsb3dfcGF0aF9uZXdfZ2VuZXJhdG9yX2ZyYW1lKTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZyYW1l
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZyYW1lLmNwcApp
bmRleCBlZjZlYTdhMTAwMjU4YzNlY2UwNGRhYWI0M2JkYWE4NTFlYzhmNzE1Li4zMGI4MTRhNjM2
NjcyNjgyNWMzODQ5ZmZiMjgwNGQyZmYzODA0MTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGcmFtZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJhbWUuY3BwCkBAIC0zMCw2MCArMzAsNjAgQEAKICNp
bmNsdWRlICJIZWFwSXRlcmF0aW9uU2NvcGUuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5l
cy5oIgogI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKKyNpbmNsdWRlICJKU09iamVjdElubGlu
ZXMuaCIKICNpbmNsdWRlICJTbG90VmlzaXRvcklubGluZXMuaCIKICNpbmNsdWRlICJTdHJ1Y3R1
cmVJbmxpbmVzLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCi1jb25zdCBDbGFzc0luZm8gR2VuZXJh
dG9yRnJhbWU6OnNfaW5mbyA9IHsgIkdlbmVyYXRvckZyYW1lIiwgbnVsbHB0ciwgbnVsbHB0ciwg
Q1JFQVRFX01FVEhPRF9UQUJMRShHZW5lcmF0b3JGcmFtZSkgfTsKK2NvbnN0IENsYXNzSW5mbyBH
ZW5lcmF0b3JGcmFtZTo6c19pbmZvID0geyAiR2VuZXJhdG9yRnJhbWUiLCAmQmFzZTo6c19pbmZv
LCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEdlbmVyYXRvckZyYW1lKSB9OwogCi1HZW5l
cmF0b3JGcmFtZTo6R2VuZXJhdG9yRnJhbWUoVk0mIHZtLCBzaXplX3QgbnVtYmVyT2ZDYWxsZWVM
b2NhbHMpCi0gICAgOiBCYXNlKHZtLCB2bS5nZW5lcmF0b3JGcmFtZVN0cnVjdHVyZS5nZXQoKSkK
LSAgICAsIG1fbnVtYmVyT2ZDYWxsZWVMb2NhbHMobnVtYmVyT2ZDYWxsZWVMb2NhbHMpCitHZW5l
cmF0b3JGcmFtZTo6R2VuZXJhdG9yRnJhbWUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkK
KyAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkKIHsKIH0KIAotdm9pZCBHZW5lcmF0b3JGcmFtZTo6
ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQotewotICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsK
LSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fbnVtYmVyT2ZDYWxsZWVMb2NhbHM7ICsraSkK
LSAgICAgICAgbG9jYWxBdChpKS5jbGVhcigpOwotfQotCiBTdHJ1Y3R1cmUqIEdlbmVyYXRvckZy
YW1lOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU1ZhbHVlIHByb3RvdHlwZSkKIHsKLSAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0s
IGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhDZWxsVHlwZSwgU3RydWN0dXJlRmxh
Z3MpLCBpbmZvKCkpOworICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2Jq
ZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5m
bygpKTsKIH0KIAotR2VuZXJhdG9yRnJhbWUqIEdlbmVyYXRvckZyYW1lOjpjcmVhdGUoVk0mIHZt
LCBzaXplX3QgbnVtYmVyT2ZMb2NhbHMpCitHZW5lcmF0b3JGcmFtZSogR2VuZXJhdG9yRnJhbWU6
OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBzaXplX3QgbnVtYmVyT2ZDYWxs
ZWVMb2NhbHMpCiB7CiAgICAgR2VuZXJhdG9yRnJhbWUqIHJlc3VsdCA9CiAgICAgICAgIG5ldyAo
CiAgICAgICAgICAgICBOb3ROdWxsLAotICAgICAgICAgICAgYWxsb2NhdGVDZWxsPEdlbmVyYXRv
ckZyYW1lPih2bS5oZWFwLCBhbGxvY2F0aW9uU2l6ZUZvckxvY2FscyhudW1iZXJPZkxvY2Fscykp
KQotICAgICAgICBHZW5lcmF0b3JGcmFtZSh2bSwgbnVtYmVyT2ZMb2NhbHMpOworICAgICAgICAg
ICAgYWxsb2NhdGVDZWxsPEdlbmVyYXRvckZyYW1lPih2bS5oZWFwLCBhbGxvY2F0aW9uU2l6ZUZv
ckxvY2FscyhudW1iZXJPZkNhbGxlZUxvY2FscykpKQorICAgICAgICBHZW5lcmF0b3JGcmFtZSh2
bSwgc3RydWN0dXJlKTsKICAgICByZXN1bHQtPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICByZXR1
cm4gcmVzdWx0OwogfQogCitHZW5lcmF0b3JGcmFtZSogR2VuZXJhdG9yRnJhbWU6OmNyZWF0ZShF
eGVjU3RhdGUqIGV4ZWMsIHNpemVfdCBudW1iZXJPZkNhbGxlZUxvY2FscykKK3sKKyAgICByZXR1
cm4gY3JlYXRlKGV4ZWMtPnZtKCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+Z2VuZXJh
dG9yRnJhbWVTdHJ1Y3R1cmUoKSwgbnVtYmVyT2ZDYWxsZWVMb2NhbHMpOworfQorCiB2b2lkIEdl
bmVyYXRvckZyYW1lOjpzYXZlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgRmFzdEJpdFZlY3RvciYg
bGl2ZUNhbGxlZUxvY2FscykKIHsKICAgICAvLyBPbmx5IHNhdmUgY2FsbGVlIGxvY2Fscy4KICAg
ICAvLyBFdmVyeSB0aW1lIGEgZ2VuZXJhdG9yIGlzIGNhbGxlZCAob3IgcmVzdW1lZCksIHBhcmFt
ZXRlcnMgc2hvdWxkIGJlIHJlcGxhY2VkLgotICAgIEFTU0VSVChsaXZlQ2FsbGVlTG9jYWxzLm51
bUJpdHMoKSA8PSBtX251bWJlck9mQ2FsbGVlTG9jYWxzKTsKKyAgICB1bnNpZ25lZCBnZW5lcmF0
b3JGcmFtZUluZGV4ID0gMDsKICAgICBsaXZlQ2FsbGVlTG9jYWxzLmZvckVhY2hTZXRCaXQoWyZd
KHNpemVfdCBpbmRleCkgewotICAgICAgICBsb2NhbEF0KGluZGV4KS5zZXQoZXhlYy0+dm0oKSwg
dGhpcywgZXhlYy0+dW5jaGVja2VkUih2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChpbmRleCkpLmpz
VmFsdWUoKSk7CisgICAgICAgIGxvY2FsQXQoZ2VuZXJhdG9yRnJhbWVJbmRleCsrKS5zZXQoZXhl
Yy0+dm0oKSwgdGhpcywgZXhlYy0+dW5jaGVja2VkUih2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChp
bmRleCkpLmpzVmFsdWUoKSk7CiAgICAgfSk7CisgICAgbV9udW1iZXJPZlNhdmVkQ2FsbGVlTG9j
YWxzID0gZ2VuZXJhdG9yRnJhbWVJbmRleDsKIH0KIAogdm9pZCBHZW5lcmF0b3JGcmFtZTo6cmVz
dW1lKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZUNhbGxlZUxvY2Fs
cykKIHsKICAgICAvLyBPbmx5IHJlc3VtZSBjYWxsZWUgbG9jYWxzLgogICAgIC8vIEV2ZXJ5IHRp
bWUgYSBnZW5lcmF0b3IgaXMgY2FsbGVkIChvciByZXN1bWVkKSwgcGFyYW1ldGVycyBzaG91bGQg
YmUgcmVwbGFjZWQuCisgICAgdW5zaWduZWQgZ2VuZXJhdG9yRnJhbWVJbmRleCA9IDA7CiAgICAg
bGl2ZUNhbGxlZUxvY2Fscy5mb3JFYWNoU2V0Qml0KFsmXShzaXplX3QgaW5kZXgpIHsKLSAgICAg
ICAgZXhlYy0+dW5jaGVja2VkUih2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChpbmRleCkpID0gbG9j
YWxBdChpbmRleCkuZ2V0KCk7Ci0gICAgICAgIGxvY2FsQXQoaW5kZXgpLmNsZWFyKCk7CisgICAg
ICAgIGV4ZWMtPnVuY2hlY2tlZFIodmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaW5kZXgpKSA9IGxv
Y2FsQXQoZ2VuZXJhdG9yRnJhbWVJbmRleCsrKS5nZXQoKTsKICAgICB9KTsKKyAgICBtX251bWJl
ck9mU2F2ZWRDYWxsZWVMb2NhbHMgPSAwOwogfQogCiB2b2lkIEdlbmVyYXRvckZyYW1lOjp2aXNp
dENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCkBAIC05MSw3ICs5
MSw3IEBAIHZvaWQgR2VuZXJhdG9yRnJhbWU6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBT
bG90VmlzaXRvciYgdmlzaXRvcikKICAgICBHZW5lcmF0b3JGcmFtZSogdGhpc09iamVjdCA9IGpz
Q2FzdDxHZW5lcmF0b3JGcmFtZSo+KGNlbGwpOwogICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhp
c09iamVjdCwgdmlzaXRvcik7CiAgICAgLy8gU2luY2Ugb25seSB0cnVlIGNlbGwgcG9pbnRlcnMg
YXJlIHN0b3JlZCBhcyBhIGNlbGwsIHdlIGNhbiBzYWZlbHkgbWFyayB0aGVtLgotICAgIHZpc2l0
b3IuYXBwZW5kVmFsdWVzKHRoaXNPYmplY3QtPmxvY2FscygpLCB0aGlzT2JqZWN0LT5tX251bWJl
ck9mQ2FsbGVlTG9jYWxzKTsKKyAgICB2aXNpdG9yLmFwcGVuZFZhbHVlcyh0aGlzT2JqZWN0LT5s
b2NhbHMoKSwgdGhpc09iamVjdC0+bV9udW1iZXJPZlNhdmVkQ2FsbGVlTG9jYWxzKTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9HZW5lcmF0b3JGcmFtZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2Vu
ZXJhdG9yRnJhbWUuaAppbmRleCAzZDU0NWIxNDdkZDRhYmZiMmJiYjliNWE3MTk0ZThmNzQ4NDFj
NDlhLi4wNDBiYzNiNjg2NjQ0ODRhY2I1NzRkN2Q0NDQ5ZmJiMjAyODJmMjZiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGcmFtZS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZyYW1lLmgKQEAgLTI3LDExICsy
NywxNCBAQAogI2RlZmluZSBHZW5lcmF0b3JGcmFtZV9oCiAKICNpbmNsdWRlICJKU0NlbGwuaCIK
KyNpbmNsdWRlICJKU09iamVjdC5oIgogI2luY2x1ZGUgPHd0Zi9GYXN0Qml0VmVjdG9yLmg+CiAK
IG5hbWVzcGFjZSBKU0MgewogCi1jbGFzcyBHZW5lcmF0b3JGcmFtZSA6IHB1YmxpYyBKU0NlbGwg
eworY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworCitjbGFzcyBHZW5lcmF0b3JGcmFtZSA6
IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAgICBmcmllbmQgY2xhc3MgSklUOwogI2lmIEVO
QUJMRShERkdfSklUKQogICAgIGZyaWVuZCBjbGFzcyBERkc6OlNwZWN1bGF0aXZlSklUOwpAQCAt
MzksMTIgKzQyLDEyIEBAIGNsYXNzIEdlbmVyYXRvckZyYW1lIDogcHVibGljIEpTQ2VsbCB7CiAj
ZW5kaWYKICAgICBmcmllbmQgY2xhc3MgVk07CiBwdWJsaWM6Ci0gICAgdHlwZWRlZiBKU0NlbGwg
QmFzZTsKLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBTdHJ1Y3R1
cmVJc0ltbW9ydGFsIHwgQmFzZTo6U3RydWN0dXJlRmxhZ3M7CisgICAgdHlwZWRlZiBKU05vbkZp
bmFsT2JqZWN0IEJhc2U7CiAKICAgICBERUNMQVJFX0VYUE9SVF9JTkZPOwogCi0gICAgc3RhdGlj
IEdlbmVyYXRvckZyYW1lKiBjcmVhdGUoVk0mLCBzaXplX3QgbnVtYmVyT2ZDYWxsZWVMb2NhbHMp
OworICAgIHN0YXRpYyBHZW5lcmF0b3JGcmFtZSogY3JlYXRlKEV4ZWNTdGF0ZSosIHNpemVfdCBu
dW1iZXJPZkNhbGxlZUxvY2Fscyk7CisgICAgc3RhdGljIEdlbmVyYXRvckZyYW1lKiBjcmVhdGUo
Vk0mLCBTdHJ1Y3R1cmUqLCBzaXplX3QgbnVtYmVyT2ZDYWxsZWVMb2NhbHMpOwogCiAgICAgV3Jp
dGVCYXJyaWVyQmFzZTxVbmtub3duPiogbG9jYWxzKCkKICAgICB7CkBAIC01Myw3ICs1Niw2IEBA
IGNsYXNzIEdlbmVyYXRvckZyYW1lIDogcHVibGljIEpTQ2VsbCB7CiAKICAgICBXcml0ZUJhcnJp
ZXJCYXNlPFVua25vd24+JiBsb2NhbEF0KHNpemVfdCBpbmRleCkKICAgICB7Ci0gICAgICAgIEFT
U0VSVChpbmRleCA8IG1fbnVtYmVyT2ZDYWxsZWVMb2NhbHMpOwogICAgICAgICByZXR1cm4gbG9j
YWxzKClbaW5kZXhdOwogICAgIH0KIApAQCAtNjIsNiArNjQsMTYgQEAgY2xhc3MgR2VuZXJhdG9y
RnJhbWUgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAgICAgcmV0dXJuIFdURjo6cm91bmRVcFRvTXVs
dGlwbGVPZjxzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KT4oc2l6ZW9mKEdlbmVyYXRvckZy
YW1lKSk7CiAgICAgfQogCisgICAgc3RhdGljIHNpemVfdCBsb2NhbE9mZnNldCh1bnNpZ25lZCBp
bmRleCkKKyAgICB7CisgICAgICAgIHJldHVybiBvZmZzZXRPZkxvY2FscygpICsgaW5kZXggKiBz
aXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KTsKKyAgICB9CisKKyAgICBzdGF0aWMgc2l6ZV90
IG51bWJlck9mU2F2ZWRDYWxsZWVMb2NhbHNPZmZzZXQoKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IE9CSkVDVF9PRkZTRVRPRihHZW5lcmF0b3JGcmFtZSwgbV9udW1iZXJPZlNhdmVkQ2FsbGVlTG9j
YWxzKTsKKyAgICB9CisKICAgICBzdGF0aWMgc2l6ZV90IGFsbG9jYXRpb25TaXplRm9yTG9jYWxz
KHVuc2lnbmVkIG51bWJlck9mTG9jYWxzKQogICAgIHsKICAgICAgICAgcmV0dXJuIG9mZnNldE9m
TG9jYWxzKCkgKyBudW1iZXJPZkxvY2FscyAqIHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4p
OwpAQCAtNzMsMTQgKzg1LDEyIEBAIGNsYXNzIEdlbmVyYXRvckZyYW1lIDogcHVibGljIEpTQ2Vs
bCB7CiAgICAgdm9pZCByZXN1bWUoRXhlY1N0YXRlKiwgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2
ZUNhbGxlZUxvY2Fscyk7CiAKIHByaXZhdGU6Ci0gICAgR2VuZXJhdG9yRnJhbWUoVk0mLCBzaXpl
X3QgbnVtYmVyT2ZDYWxsZWVMb2NhbHMpOworICAgIEdlbmVyYXRvckZyYW1lKFZNJiwgU3RydWN0
dXJlKik7CiAKLSAgICBzaXplX3QgbV9udW1iZXJPZkNhbGxlZUxvY2FsczsKKyAgICB1aW50MzJf
dCBtX251bWJlck9mU2F2ZWRDYWxsZWVMb2NhbHMgeyAwIH07CiAKICAgICBmcmllbmQgY2xhc3Mg
TExJbnRPZmZzZXRzRXh0cmFjdG9yOwogCi0gICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOwot
CiBwcm90ZWN0ZWQ6CiAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90
VmlzaXRvciYpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmNwcAppbmRleCA3NjlhM2VmYjMwNDM4ZGNkOWRkZTQ0MmRjODg5NGExZjAzODJh
NTA0Li44Y2I4NGFiZTVmODczOWEwMThlNjJlYTQ4ZjQ3MTQ0NDc5NTUxZDNkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC01MCw2
ICs1MCw3IEBACiAjaW5jbHVkZSAiRXJyb3JQcm90b3R5cGUuaCIKICNpbmNsdWRlICJGdW5jdGlv
bkNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiRnVuY3Rpb25Qcm90b3R5cGUuaCIKKyNpbmNsdWRl
ICJHZW5lcmF0b3JGcmFtZS5oIgogI2luY2x1ZGUgIkdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0
b3IuaCIKICNpbmNsdWRlICJHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5oIgogI2luY2x1ZGUg
IkdlbmVyYXRvclByb3RvdHlwZS5oIgpAQCAtMzg4LDYgKzM4OSw3IEBAIHZvaWQgSlNHbG9iYWxP
YmplY3Q6OmluaXQoVk0mIHZtKQogICAgIAogICAgIEZPUl9FQUNIX0JVSUxUSU5fREVSSVZFRF9J
VEVSQVRPUl9UWVBFKENSRUFURV9QUk9UT1RZUEVfRk9SX0RFUklWRURfSVRFUkFUT1JfVFlQRSkK
ICAgICBtX3Byb3BlcnR5TmFtZUl0ZXJhdG9yU3RydWN0dXJlLnNldCh2bSwgdGhpcywgSlNQcm9w
ZXJ0eU5hbWVJdGVyYXRvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2l0ZXJhdG9yUHJv
dG90eXBlLmdldCgpKSk7CisgICAgbV9nZW5lcmF0b3JGcmFtZVN0cnVjdHVyZS5zZXQodm0sIHRo
aXMsIEdlbmVyYXRvckZyYW1lOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIGpzTnVsbCgpKSk7
CiAgICAgbV9nZW5lcmF0b3JQcm90b3R5cGUuc2V0KHZtLCB0aGlzLCBHZW5lcmF0b3JQcm90b3R5
cGU6OmNyZWF0ZSh2bSwgdGhpcywgR2VuZXJhdG9yUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUo
dm0sIHRoaXMsIG1faXRlcmF0b3JQcm90b3R5cGUuZ2V0KCkpKSk7CiAgICAgCiAjdW5kZWYgQ1JF
QVRFX1BST1RPVFlQRV9GT1JfREVSSVZFRF9JVEVSQVRPUl9UWVBFCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCBiNGZmMmZiNDEzZTBlNDQ2
MjQ5MmE0OGEzZmQ1YTRjMjRlYTBiNzQxLi43MWQzOWVjOTI4M2FkOWU1OTAxMjQ0ZjAxMzZhMTM1
OGY1NDRhOTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmgKQEAgLTI1NSw2ICsyNTUsNyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1Ymxp
YyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJl
PiBtX2NhbGxiYWNrRnVuY3Rpb25TdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVy
ZT4gbV9jYWxsYmFja09iamVjdFN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJl
PiBtX3Byb3BlcnR5TmFtZUl0ZXJhdG9yU3RydWN0dXJlOworICAgIFdyaXRlQmFycmllcjxTdHJ1
Y3R1cmU+IG1fZ2VuZXJhdG9yRnJhbWVTdHJ1Y3R1cmU7CiAjaWYgSlNDX09CSkNfQVBJX0VOQUJM
RUQKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX29iamNDYWxsYmFja0Z1bmN0aW9uU3Ry
dWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fb2JqY1dyYXBwZXJPYmplY3RT
dHJ1Y3R1cmU7CkBAIC01MDEsNiArNTAyLDcgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJs
aWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgU3RydWN0dXJlKiBjYWxsYmFja0Z1
bmN0aW9uU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9jYWxsYmFja0Z1bmN0aW9uU3RydWN0
dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBjYWxsYmFja09iamVjdFN0cnVjdHVyZSgpIGNv
bnN0IHsgcmV0dXJuIG1fY2FsbGJhY2tPYmplY3RTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1
Y3R1cmUqIHByb3BlcnR5TmFtZUl0ZXJhdG9yU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9w
cm9wZXJ0eU5hbWVJdGVyYXRvclN0cnVjdHVyZS5nZXQoKTsgfQorICAgIFN0cnVjdHVyZSogZ2Vu
ZXJhdG9yRnJhbWVTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2dlbmVyYXRvckZyYW1lU3Ry
dWN0dXJlLmdldCgpOyB9CiAjaWYgSlNDX09CSkNfQVBJX0VOQUJMRUQKICAgICBTdHJ1Y3R1cmUq
IG9iamNDYWxsYmFja0Z1bmN0aW9uU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9vYmpjQ2Fs
bGJhY2tGdW5jdGlvblN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogb2JqY1dyYXBw
ZXJPYmplY3RTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX29iamNXcmFwcGVyT2JqZWN0U3Ry
dWN0dXJlLmdldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXggMGU0
NGMzNDYwZjlmOGYwZGNiMzVkOTEyZDc5NWY3Zjk4ZGZiN2Y0NS4uMGVmMjVlNzI5YWE2ZTU1YzNk
Y2EwNjFjMjJiNjVhYTZmN2I1YjM0ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNw
cApAQCAtMjQ2LDcgKzI0Niw2IEBAIHN0YXRpYyBib29sIGVuYWJsZUFzc2VtYmxlcihFeGVjdXRh
YmxlQWxsb2NhdG9yJiBleGVjdXRhYmxlQWxsb2NhdG9yKQogICAgIGluZmVycmVkVHlwZVN0cnVj
dHVyZS5zZXQoKnRoaXMsIEluZmVycmVkVHlwZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBq
c051bGwoKSkpOwogICAgIGluZmVycmVkVHlwZVRhYmxlU3RydWN0dXJlLnNldCgqdGhpcywgSW5m
ZXJyZWRUeXBlVGFibGU6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAg
ICBmdW5jdGlvblJhcmVEYXRhU3RydWN0dXJlLnNldCgqdGhpcywgRnVuY3Rpb25SYXJlRGF0YTo6
Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwotICAgIGdlbmVyYXRvckZyYW1l
U3RydWN0dXJlLnNldCgqdGhpcywgR2VuZXJhdG9yRnJhbWU6OmNyZWF0ZVN0cnVjdHVyZSgqdGhp
cywgMCwganNOdWxsKCkpKTsKICAgICBleGNlcHRpb25TdHJ1Y3R1cmUuc2V0KCp0aGlzLCBFeGNl
cHRpb246OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICBwcm9taXNl
RGVmZXJyZWRTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBKU1Byb21pc2VEZWZlcnJlZDo6Y3JlYXRlU3Ry
dWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIGludGVybmFsUHJvbWlzZURlZmVycmVk
U3RydWN0dXJlLnNldCgqdGhpcywgSlNJbnRlcm5hbFByb21pc2VEZWZlcnJlZDo6Y3JlYXRlU3Ry
dWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVk0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgK
aW5kZXggYWVlMGFjMWYyMWI4NDUxYmM3NzY3NDQzYTBiMDVjYTA0OGI0ZjQ5Yi4uMjM2MDgzNzBh
OTgzNmQ4OTc3ZTQ5ZDcxZTY4YTgwOWI5YWM0NTM2MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVk0uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTS5oCkBAIC0zMTIsNyArMzEyLDYgQEAgY2xhc3MgVk0gOiBwdWJsaWMgVGhyZWFkU2FmZVJl
ZkNvdW50ZWQ8Vk0+IHsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBpbmZlcnJlZFR5cGVTdHJ1Y3R1
cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gaW5mZXJyZWRUeXBlVGFibGVTdHJ1Y3R1cmU7CiAg
ICAgU3Ryb25nPFN0cnVjdHVyZT4gZnVuY3Rpb25SYXJlRGF0YVN0cnVjdHVyZTsKLSAgICBTdHJv
bmc8U3RydWN0dXJlPiBnZW5lcmF0b3JGcmFtZVN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0
dXJlPiBleGNlcHRpb25TdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gcHJvbWlzZURl
ZmVycmVkU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGludGVybmFsUHJvbWlzZURl
ZmVycmVkU3RydWN0dXJlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>269053</attachid>
            <date>2016-01-15 08:11:15 -0800</date>
            <delta_ts>2016-01-15 10:19:38 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-152723-20160116011045.patch</filename>
            <type>text/plain</type>
            <size>89896</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk1MDU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
ZDVkMzdhNWE2NzE2ZmQyMWY5YzRiYzhlZDg0OGZkNTlhZjU1NTgzLi5mMWU1Y2ZiZWUxYzdhNDcy
NmVmNWJjNmM5NDRlODg0YTlmYTVmZDM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMjUgQEAKKzIwMTYtMDEtMTUgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgQ3JlYXRlIEdlbmVyYXRvckZyYW1lIHdpdGggdGhlIGJ5dGVjb2Rl
IG9wX25ld19nZW5lcmF0b3JfZnJhbWUgYW5kIG1ha2Ugb3Bfc2F2ZSAvIG9wX3Jlc3VtZSBERkcv
RlRMIGNhcGFibGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1MjcyMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogYnVpbHRpbnMvR2VuZXJhdG9yUHJvdG90eXBlLmpzOgorICAgICAgICAoZ2VuZXJhdG9y
UmVzdW1lKToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suY3BwOgorICAg
ICAgICAoSlNDOjppc0JyYW5jaCk6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpz
b246CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaDoKKyAgICAgICAgKEpTQzo6
Y29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OmNvbXB1dGVEZWZz
Rm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogYnl0ZWNvZGUvUHJlY2lzZUp1bXBU
YXJnZXRzLmNwcDoKKyAgICAgICAgKEpTQzo6Z2V0SnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNl
dCk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdHZW5lcmF0b3JGcmFtZSk6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0U2F2ZSk6CisgICAgICAgIChKU0M6OkJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0UmVzdW1lKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRv
ckZyYW1lUmVnaXN0ZXIpOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5s
aW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RT
dGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAgICogZGZnL0RGR0JhY2t3YXJkc1By
b3BhZ2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJhY2t3YXJkc1Byb3BhZ2F0
aW9uUGhhc2U6OnByb3BhZ2F0ZSk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAg
ICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Y2FwYWJp
bGl0eUxldmVsKToKKyAgICAgICAgKiBkZmcvREZHQ2xvYmJlcml6ZS5oOgorICAgICAgICAoSlND
OjpERkc6OmNsb2JiZXJpemUpOgorICAgICAgICAqIGRmZy9ERkdDbG9iYmVyc0V4aXRTdGF0ZS5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6Y2xvYmJlcnNFeGl0U3RhdGUpOgorICAgICAgICAqIGRm
Zy9ERkdEb2VzR0MuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmRvZXNHQyk6CisgICAgICAgICog
ZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZp
eHVwTm9kZSk6CisgICAgICAgICogZGZnL0RGR01heUV4aXQuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6Om1heUV4aXQpOgorICAgICAgICAqIGRmZy9ERkdOb2RlLmg6CisgICAgICAgIChKU0M6OkRG
Rzo6Tm9kZTo6aGFzR2VuZXJhdG9yRnJhbWVTaXplKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2Rl
OjpnZW5lcmF0b3JGcmFtZVNpemUpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc0dlbmVy
YXRvckZyYW1lSW5kZXgpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmdlbmVyYXRvckZyYW1l
SW5kZXgpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc1NhdmVkVmFyaWFibGVBY2Nlc3NE
YXRhKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpzYXZlZFZhcmlhYmxlQWNjZXNzRGF0YSk6
CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzR2VuZXJhdG9yRnJhbWVMb2NhbHMpOgorICAg
ICAgICAoSlNDOjpERkc6Ok5vZGU6OmdlbmVyYXRvckZyYW1lTG9jYWxzKToKKyAgICAgICAgKiBk
ZmcvREZHTm9kZVR5cGUuaDoKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6CisgICAg
ICAgICogZGZnL0RGR09wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBkZmcvREZHUHJlZGljdGlvblBy
b3BhZ2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlByZWRpY3Rpb25Qcm9wYWdh
dGlvblBoYXNlOjpwcm9wYWdhdGUpOgorICAgICAgICAoSlNDOjpERkc6OlByZWRpY3Rpb25Qcm9w
YWdhdGlvblBoYXNlOjpkb0RvdWJsZVZvdGluZyk6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4
ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAgKiBk
ZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpjb21waWxlTmV3R2VuZXJhdG9yRnJhbWUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5oOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZn
L0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhh
c2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdTdHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFzZS5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6U3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2U6OnJ1bik6Cisg
ICAgICAgICogZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwOgorICAgICAgICAqIGZ0
bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5Lmg6CisgICAgICAgICogZnRsL0ZUTENhcGFiaWxp
dGllcy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6Y2FuQ29tcGlsZSk6CisgICAgICAgICogZnRs
L0ZUTExvd2VyREZHVG9MTFZNLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZH
VG9MTFZNOjpjb21waWxlTm9kZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
TExWTTo6Y29tcGlsZVB1dEdlbmVyYXRvckZyYW1lTG9jYWxzKToKKyAgICAgICAgKEpTQzo6RlRM
OjpERkc6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlU2V0R2VuZXJhdG9yTG9jYWwpOgorICAgICAg
ICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVHZXRHZW5lcmF0b3JMb2Nh
bCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZU5ld0dl
bmVyYXRvckZyYW1lKToKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklU
Ojpwcml2YXRlQ29tcGlsZU1haW5QYXNzKToKKyAgICAgICAgKiBqaXQvSklULmg6CisgICAgICAg
ICogaml0L0pJVE9wY29kZXMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcmVzdW1l
X2Zyb21fZ2VuZXJhdG9yX2ZyYW1lKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2NsZWFy
X2dlbmVyYXRvcl9mcmFtZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9uZXdfZ2VuZXJh
dG9yX2ZyYW1lKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX25vcCk6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdF9vcF9yZXN1bWUpOiBEZWxldGVkLgorICAgICAgICAqIGxsaW50L0xMSW50
T2Zmc2V0c0V4dHJhY3Rvci5jcHA6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
ci5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbToKKyAgICAg
ICAgKiBwYXJzZXIvUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46
OnBhcnNlSW5uZXIpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VHZW5l
cmF0b3JGdW5jdGlvblNvdXJjZUVsZW1lbnRzKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVy
VHlwZT46OmNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMpOgorICAgICAgICAqIHBhcnNlci9QYXJz
ZXIuaDoKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHA6CisgICAgICAgIChK
U0M6OlNMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5o
OgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJhdG9yRnJhbWUuY3BwOgorICAgICAgICAoSlNDOjpH
ZW5lcmF0b3JGcmFtZTo6R2VuZXJhdG9yRnJhbWUpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JG
cmFtZTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OmNy
ZWF0ZSk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpzYXZlKToKKyAgICAgICAgKEpT
Qzo6R2VuZXJhdG9yRnJhbWU6OnJlc3VtZSk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1l
Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OmZpbmlzaENy
ZWF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0dlbmVyYXRvckZyYW1lLmg6Cisg
ICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpsb2NhbE9mZnNldCk6CisgICAgICAgIChKU0M6
OkdlbmVyYXRvckZyYW1lOjpudW1iZXJPZlNhdmVkQ2FsbGVlTG9jYWxzT2Zmc2V0KToKKyAgICAg
ICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OmxvY2FsQXQpOiBEZWxldGVkLgorICAgICAgICAqIHJ1
bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6
aW5pdCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlND
OjpKU0dsb2JhbE9iamVjdDo6Z2VuZXJhdG9yRnJhbWVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1
bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6Vk0pOiBEZWxldGVkLgorICAgICAgICAq
IHJ1bnRpbWUvVk0uaDoKKwogMjAxNi0wMS0xMyAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2Fy
Y2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0NNYWtlXSBEbyBub3QgdXNlIExMVk0gc3RhdGlj
IGxpYnJhcmllcyBmb3IgRlRMIEpJVApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J1aWx0aW5zL0dlbmVyYXRvclByb3RvdHlwZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
dWlsdGlucy9HZW5lcmF0b3JQcm90b3R5cGUuanMKaW5kZXggYTNiYmMzNTM0YWUwNTJmNGQ2ZmEy
NWJkZTcwM2M5M2QzYTc5NWUxMS4uNDlkZGJmOWM4NDY5MzMwNjU4NzExZjE4ZTcyMTQ5YmM5ODIy
ZGEzNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0dlbmVyYXRv
clByb3RvdHlwZS5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvR2VuZXJh
dG9yUHJvdG90eXBlLmpzCkBAIC01OCw3ICs1OCw3IEBAIGZ1bmN0aW9uIGdlbmVyYXRvclJlc3Vt
ZShnZW5lcmF0b3IsIHNlbnRWYWx1ZSwgcmVzdW1lTW9kZSkKICAgICB9IGVsc2UgewogICAgICAg
ICB0cnkgewogICAgICAgICAgICAgZ2VuZXJhdG9yLkBnZW5lcmF0b3JTdGF0ZSA9IEV4ZWN1dGlu
ZzsKLSAgICAgICAgICAgIHZhbHVlID0gZ2VuZXJhdG9yLkBnZW5lcmF0b3JOZXh0LkBjYWxsKGdl
bmVyYXRvci5AZ2VuZXJhdG9yVGhpcywgZ2VuZXJhdG9yLCBzdGF0ZSwgc2VudFZhbHVlLCByZXN1
bWVNb2RlKTsKKyAgICAgICAgICAgIHZhbHVlID0gZ2VuZXJhdG9yLkBnZW5lcmF0b3JOZXh0LkBj
YWxsKGdlbmVyYXRvci5AZ2VuZXJhdG9yVGhpcywgZ2VuZXJhdG9yLCBzdGF0ZSwgc2VudFZhbHVl
LCByZXN1bWVNb2RlLCBnZW5lcmF0b3IuQGdlbmVyYXRvckZyYW1lKTsKICAgICAgICAgICAgIGlm
IChnZW5lcmF0b3IuQGdlbmVyYXRvclN0YXRlID09PSBFeGVjdXRpbmcpIHsKICAgICAgICAgICAg
ICAgICBnZW5lcmF0b3IuQGdlbmVyYXRvclN0YXRlID0gQ29tcGxldGVkOwogICAgICAgICAgICAg
ICAgIGRvbmUgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlQmFzaWNCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcAppbmRleCA3ZjE3YzBlZjEwYjQzM2ZhYzhmNThjYjNi
OWNhNWQ0ZDAxNWJiYTA4Li41YWExOGU0Y2FmN2E1NzVkZDY0NWQ2ZjZlZDc5NzI4YWY3M2JkMjZl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVCYXNp
Y0Jsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVC
YXNpY0Jsb2NrLmNwcApAQCAtNTgsNyArNTgsNyBAQCBzdGF0aWMgYm9vbCBpc0JyYW5jaChPcGNv
ZGVJRCBvcGNvZGVJRCkKICAgICBjYXNlIG9wX3N3aXRjaF9pbW06CiAgICAgY2FzZSBvcF9zd2l0
Y2hfY2hhcjoKICAgICBjYXNlIG9wX3N3aXRjaF9zdHJpbmc6Ci0gICAgY2FzZSBvcF9zYXZlOgor
ICAgIGNhc2Ugb3Bfc2F2ZV9oaW50OgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBkZWZhdWx0
OgogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24KaW5kZXggMDUzYjhkYzliODY0ZjFiODZiNGNlYzdhYTYw
MWY3Y2UyZjAzZjJlNC4uMDhhYWMxMjI1OWM2OGRhMGUxYWJjOTA5MGJlNTRjOTU1ZmIzMzAwNSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5q
c29uCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNv
bgpAQCAtMTYsNiArMTYsNyBAQAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfbmV3X2FycmF5
X3dpdGhfc2l6ZSIsICJsZW5ndGgiIDogNCB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3Bf
bmV3X2FycmF5X2J1ZmZlciIsICJsZW5ndGgiIDogNSB9LAogICAgICAgICAgICAgeyAibmFtZSIg
OiAib3BfbmV3X3JlZ2V4cCIsICJsZW5ndGgiIDogMyB9LAorICAgICAgICAgICAgeyAibmFtZSIg
OiAib3BfbmV3X2dlbmVyYXRvcl9mcmFtZSIsICJsZW5ndGgiIDogMyB9LAogICAgICAgICAgICAg
eyAibmFtZSIgOiAib3BfbW92IiwgImxlbmd0aCIgOiAzIH0sCiAgICAgICAgICAgICB7ICJuYW1l
IiA6ICJvcF9ub3QiLCAibGVuZ3RoIiA6IDMgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9w
X2VxIiwgImxlbmd0aCIgOiA0IH0sCkBAIC0xMzQsNyArMTM1LDExIEBACiAgICAgICAgICAgICB7
ICJuYW1lIiA6ICJvcF9jb3B5X3Jlc3QiLCAibGVuZ3RoIjogNCB9LAogICAgICAgICAgICAgeyAi
bmFtZSIgOiAib3BfZ2V0X3Jlc3RfbGVuZ3RoIiwgImxlbmd0aCI6IDMgfSwKICAgICAgICAgICAg
IHsgIm5hbWUiIDogIm9wX3NhdmUiLCAibGVuZ3RoIiA6IDQgfSwKLSAgICAgICAgICAgIHsgIm5h
bWUiIDogIm9wX3Jlc3VtZSIsICJsZW5ndGgiIDogMyB9LAorICAgICAgICAgICAgeyAibmFtZSIg
OiAib3Bfc2F2ZV9oaW50IiwgImxlbmd0aCIgOiA0IH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6
ICJvcF9yZXN1bWVfaGludCIsICJsZW5ndGgiIDogNCB9LAorICAgICAgICAgICAgeyAibmFtZSIg
OiAib3BfcmVzdW1lX2Zyb21fZ2VuZXJhdG9yX2ZyYW1lIiwgImxlbmd0aCIgOiA0IH0sCisgICAg
ICAgICAgICB7ICJuYW1lIiA6ICJvcF9jbGVhcl9nZW5lcmF0b3JfZnJhbWUiLCAibGVuZ3RoIiA6
IDIgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX25vcCIsICJsZW5ndGgiIDogMSB9LAog
ICAgICAgICAgICAgeyAibmFtZSIgOiAib3Bfd2F0Y2hkb2ciLCAibGVuZ3RoIiA6IDEgfQogICAg
ICAgICBdCiAgICAgfSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZVVzZURlZi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVj
b2RlVXNlRGVmLmgKaW5kZXggODAxMTE0YzM3MmEyNzdmNmUxNzcwOWI5MGJlMjA3YzhmOTliZTgy
ZC4uZGFlZjgxYzI2OWJiNTQxNTRlYTZiNmRjODM4YWZjNjljZWU3MmM5NSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKQEAgLTU1LDYgKzU1
LDggQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAogICAgIGNhc2Ugb3BfY3Jl
YXRlX291dF9vZl9iYW5kX2FyZ3VtZW50czoKICAgICBjYXNlIG9wX2dldF9yZXN0X2xlbmd0aDoK
ICAgICBjYXNlIG9wX3dhdGNoZG9nOgorICAgIGNhc2Ugb3BfbmV3X2dlbmVyYXRvcl9mcmFtZToK
KyAgICBjYXNlIG9wX25vcDoKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2Ugb3BfYXNzZXJ0Ogog
ICAgIGNhc2Ugb3BfZ2V0X3Njb3BlOgpAQCAtNzIsNyArNzQsOCBAQCB2b2lkIGNvbXB1dGVVc2Vz
Rm9yQnl0ZWNvZGVPZmZzZXQoCiAgICAgY2FzZSBvcF9qbmVxX251bGw6CiAgICAgY2FzZSBvcF9k
ZWM6CiAgICAgY2FzZSBvcF9pbmM6Ci0gICAgY2FzZSBvcF9yZXN1bWU6IHsKKyAgICBjYXNlIG9w
X3Jlc3VtZV9oaW50OgorICAgIGNhc2Ugb3BfY2xlYXJfZ2VuZXJhdG9yX2ZyYW1lOiB7CiAgICAg
ICAgIEFTU0VSVChvcGNvZGVMZW5ndGhzW29wY29kZUlEXSA+PSAxKTsKICAgICAgICAgZnVuY3Rv
cihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb25bMV0udS5vcGVy
YW5kKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTY1LDcgKzE2OCw4IEBAIHZvaWQgY29tcHV0ZVVz
ZXNGb3JCeXRlY29kZU9mZnNldCgKICAgICBjYXNlIG9wX25ld19nZW5lcmF0b3JfZnVuYzoKICAg
ICBjYXNlIG9wX2dldF9wYXJlbnRfc2NvcGU6CiAgICAgY2FzZSBvcF9jcmVhdGVfc2NvcGVkX2Fy
Z3VtZW50czoKLSAgICBjYXNlIG9wX2dldF9mcm9tX2FyZ3VtZW50czogeworICAgIGNhc2Ugb3Bf
Z2V0X2Zyb21fYXJndW1lbnRzOgorICAgIGNhc2Ugb3BfcmVzdW1lX2Zyb21fZ2VuZXJhdG9yX2Zy
YW1lOiB7CiAgICAgICAgIEFTU0VSVChvcGNvZGVMZW5ndGhzW29wY29kZUlEXSA+PSAyKTsKICAg
ICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rp
b25bMl0udS5vcGVyYW5kKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjUwLDcgKzI1NCw3IEBAIHZv
aWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCgKICAgICAgICAgICAgIGZ1bmN0b3IoY29k
ZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGxhc3RBcmcgKyBpKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KLSAgICBjYXNlIG9wX3NhdmU6IHsKKyAgICBjYXNlIG9wX3NhdmVfaGludDog
ewogICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBpbnN0
cnVjdGlvblsxXS51Lm9wZXJhbmQpOwogICAgICAgICB1bnNpZ25lZCBtZXJnZVBvaW50Qnl0ZWNv
ZGVPZmZzZXQgPSBieXRlY29kZU9mZnNldCArIGluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKICAg
ICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBtZXJnZVBvaW50QmxvY2sgPSBudWxscHRyOwpAQCAt
MjY2LDYgKzI3MCwxNSBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoCiAgICAg
ICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQorICAgIGNhc2Ugb3Bfc2F2ZTogeworICAg
ICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBpbnN0cnVjdGlv
blsxXS51Lm9wZXJhbmQpOworICAgICAgICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXgg
PSBpbnN0cnVjdGlvblsyXS51LnVuc2lnbmVkVmFsdWU7CisgICAgICAgIGNvbnN0IEZhc3RCaXRW
ZWN0b3ImIGxpdmVuZXNzID0gY29kZUJsb2NrLT5saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZChsaXZl
Q2FsbGVlTG9jYWxzSW5kZXgpOworICAgICAgICBsaXZlbmVzcy5mb3JFYWNoU2V0Qml0KFsmXSh1
bnNpZ25lZCBsb2NhbCkgeworICAgICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0
aW9uLCBvcGNvZGVJRCwgdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwobG9jYWwpLm9mZnNldCgpKTsK
KyAgICAgICAgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAgICAgZGVmYXVsdDoKICAgICAg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgYnJlYWs7CkBAIC0yODks
NiArMzAyLDcgQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayog
Y29kZUJsb2NrLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2MKICAgICBjYXNlIG9wX3Rocm93Ogog
ICAgIGNhc2Ugb3BfdGhyb3dfc3RhdGljX2Vycm9yOgogICAgIGNhc2Ugb3Bfc2F2ZToKKyAgICBj
YXNlIG9wX3NhdmVfaGludDoKICAgICBjYXNlIG9wX2Fzc2VydDoKICAgICBjYXNlIG9wX2RlYnVn
OgogICAgIGNhc2Ugb3BfcmV0OgpAQCAtMzIzLDYgKzMzNyw4IEBAIHZvaWQgY29tcHV0ZURlZnNG
b3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Jsb2Nr
KiBibG9jCiAgICAgY2FzZSBvcF9wcm9maWxlX2NvbnRyb2xfZmxvdzoKICAgICBjYXNlIG9wX3B1
dF90b19hcmd1bWVudHM6CiAgICAgY2FzZSBvcF93YXRjaGRvZzoKKyAgICBjYXNlIG9wX2NsZWFy
X2dlbmVyYXRvcl9mcmFtZToKKyAgICBjYXNlIG9wX25vcDoKICNkZWZpbmUgTExJTlRfSEVMUEVS
X09QQ09ERVMob3Bjb2RlLCBsZW5ndGgpIGNhc2Ugb3Bjb2RlOgogICAgICAgICBGT1JfRUFDSF9M
TElOVF9PUENPREVfRVhURU5TSU9OKExMSU5UX0hFTFBFUl9PUENPREVTKTsKICN1bmRlZiBMTElO
VF9IRUxQRVJfT1BDT0RFUwpAQCAtNDE1LDcgKzQzMSw5IEBAIHZvaWQgY29tcHV0ZURlZnNGb3JC
eXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBi
bG9jCiAgICAgY2FzZSBvcF9kZWxfYnlfdmFsOgogICAgIGNhc2Ugb3BfdW5zaWduZWQ6CiAgICAg
Y2FzZSBvcF9nZXRfZnJvbV9hcmd1bWVudHM6IAotICAgIGNhc2Ugb3BfZ2V0X3Jlc3RfbGVuZ3Ro
OiB7CisgICAgY2FzZSBvcF9nZXRfcmVzdF9sZW5ndGg6CisgICAgY2FzZSBvcF9uZXdfZ2VuZXJh
dG9yX2ZyYW1lOgorICAgIGNhc2Ugb3BfcmVzdW1lX2Zyb21fZ2VuZXJhdG9yX2ZyYW1lOiB7CiAg
ICAgICAgIEFTU0VSVChvcGNvZGVMZW5ndGhzW29wY29kZUlEXSA+IDEpOwogICAgICAgICBmdW5j
dG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBpbnN0cnVjdGlvblsxXS51Lm9w
ZXJhbmQpOwogICAgICAgICByZXR1cm47CkBAIC00MzEsNyArNDQ5LDcgQEAgdm9pZCBjb21wdXRl
RGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29kZUJhc2lj
QmxvY2sqIGJsb2MKICAgICAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwg
b3Bjb2RlSUQsIHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGkpLm9mZnNldCgpKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KLSAgICBjYXNlIG9wX3Jlc3VtZTogeworICAgIGNhc2Ugb3BfcmVzdW1l
X2hpbnQ6IHsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoYmxvY2stPnN1Y2Nlc3NvcnMoKS5zaXpl
KCkgPT0gMSk7CiAgICAgICAgIGJsb2NrLT5zdWNjZXNzb3JzKClbMF0tPmluKCkuZm9yRWFjaFNl
dEJpdChbJl0odW5zaWduZWQgbG9jYWwpIHsKICAgICAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2Nr
LCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGxvY2FsKS5v
ZmZzZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3Bw
CmluZGV4IDU5MDVlOTE4M2M4ZjEyNjY0ZTJiYTNkZDI5YTVjNDY1Njc2OGRjMDMuLjkyZDRhOWZk
Y2RmNTVlZjcxYjFlZmIwOTU3YzY5MmI1NzYxOTEyYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC0xNTU2LDI3ICsxNTU2LDYzIEBAIHZvaWQg
Q29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoCiAgICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgJWQi
LCBkZWJ1Z0hvb2tOYW1lKGRlYnVnSG9va0lEKSwgaGFzQnJlYWtwb2ludEZsYWcpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgY2FzZSBvcF9zYXZlOiB7Ci0gICAgICAg
ICAgICBpbnQgZ2VuZXJhdG9yID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIGNhc2Ugb3Bf
c2F2ZV9oaW50OiB7CisgICAgICAgICAgICBpbnQgZnJhbWUgPSAoKytpdCktPnUub3BlcmFuZDsK
ICAgICAgICAgICAgIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9ICgrK2l0KS0+dS51
bnNpZ25lZFZhbHVlOwogICAgICAgICAgICAgaW50IG9mZnNldCA9ICgrK2l0KS0+dS5vcGVyYW5k
OwogICAgICAgICAgICAgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZW5lc3MgPSBtX3JhcmVEYXRh
LT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkW2xpdmVDYWxsZWVMb2NhbHNJbmRleF07CiAgICAg
ICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJzYXZl
Iik7Ci0gICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgIiwgcmVnaXN0ZXJOYW1lKGdlbmVyYXRv
cikuZGF0YSgpKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAiLCByZWdpc3Rlck5hbWUo
ZnJhbWUpLmRhdGEoKSk7CiAgICAgICAgICAgICBsaXZlbmVzcy5kdW1wKG91dCk7CiAgICAgICAg
ICAgICBvdXQucHJpbnRmKCIoQGxpdmUlMXUpLCAlZCgtPiVkKSIsIGxpdmVDYWxsZWVMb2NhbHNJ
bmRleCwgb2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNldCk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQotICAgICAgICBjYXNlIG9wX3Jlc3VtZTogewotICAgICAgICAgICAgaW50IGdlbmVy
YXRvciA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBjYXNlIG9wX3NhdmU6IHsKKyAgICAg
ICAgICAgIGludCBmcmFtZSA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgdW5zaWdu
ZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gKCsraXQpLT51LnVuc2lnbmVkVmFsdWU7CisgICAg
ICAgICAgICArK2l0OyAvLyBkaXNjYXJkIG9mZnNldC4KICAgICAgICAgICAgIGNvbnN0IEZhc3RC
aXRWZWN0b3ImIGxpdmVuZXNzID0gbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVs
ZFtsaXZlQ2FsbGVlTG9jYWxzSW5kZXhdOwotICAgICAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9w
KG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAicmVzdW1lIik7Ci0gICAgICAgICAgICBvdXQucHJp
bnRmKCIlcywgIiwgcmVnaXN0ZXJOYW1lKGdlbmVyYXRvcikuZGF0YSgpKTsKKyAgICAgICAgICAg
IHByaW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgInNhdmUiKTsKKyAg
ICAgICAgICAgIG91dC5wcmludGYoIiVzLCAiLCByZWdpc3Rlck5hbWUoZnJhbWUpLmRhdGEoKSk7
CiAgICAgICAgICAgICBsaXZlbmVzcy5kdW1wKG91dCk7CiAgICAgICAgICAgICBvdXQucHJpbnRm
KCIoQGxpdmUlMXUpIiwgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4KTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CisgICAgICAgIGNhc2Ugb3BfcmVzdW1lX2hpbnQ6IHsKKyAgICAgICAgICAg
IGludCBmcmFtZSA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgdW5zaWduZWQgbGl2
ZUNhbGxlZUxvY2Fsc0luZGV4ID0gKCsraXQpLT51LnVuc2lnbmVkVmFsdWU7CisgICAgICAgICAg
ICB1bnNpZ25lZCBtYXhMaXZlQ2FsbGVlcyA9ICgrK2l0KS0+dS51bnNpZ25lZFZhbHVlOworICAg
ICAgICAgICAgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZW5lc3MgPSBtX3JhcmVEYXRhLT5tX2xp
dmVDYWxsZWVMb2NhbHNBdFlpZWxkW2xpdmVDYWxsZWVMb2NhbHNJbmRleF07CisgICAgICAgICAg
ICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJyZXN1bWUiKTsK
KyAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAiLCByZWdpc3Rlck5hbWUoZnJhbWUpLmRhdGEo
KSk7CisgICAgICAgICAgICBsaXZlbmVzcy5kdW1wKG91dCk7CisgICAgICAgICAgICBvdXQucHJp
bnRmKCIoQGxpdmUlMXUpLCAldSIsIGxpdmVDYWxsZWVMb2NhbHNJbmRleCwgbWF4TGl2ZUNhbGxl
ZXMpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9yZXN1
bWVfZnJvbV9nZW5lcmF0b3JfZnJhbWU6IHsKKyAgICAgICAgICAgIGludCBkc3QgPSAoKytpdCkt
PnUub3BlcmFuZDsKKyAgICAgICAgICAgIGludCBmcmFtZSA9ICgrK2l0KS0+dS5vcGVyYW5kOwor
ICAgICAgICAgICAgdW5zaWduZWQgaW5kZXggPSAoKytpdCktPnUudW5zaWduZWRWYWx1ZTsKKyAg
ICAgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgInJl
c3VtZV9mcm9tX2dlbmVyYXRvcl9mcmFtZSIpOworICAgICAgICAgICAgb3V0LnByaW50ZigiJXMs
ICVzLCAldSIsIHJlZ2lzdGVyTmFtZShkc3QpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGZyYW1lKS5k
YXRhKCksIGluZGV4KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNh
c2Ugb3BfY2xlYXJfZ2VuZXJhdG9yX2ZyYW1lOiB7CisgICAgICAgICAgICBpbnQgZnJhbWUgPSAo
KytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIHByaW50TG9jYXRpb25PcEFuZFJlZ2lzdGVy
T3BlcmFuZChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgImNsZWFyX2dlbmVyYXRvcl9mcmFtZSIs
IGZyYW1lKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2Ugb3Bf
bmV3X2dlbmVyYXRvcl9mcmFtZTogeworICAgICAgICAgICAgaW50IGRzdCA9ICgrK2l0KS0+dS5v
cGVyYW5kOworICAgICAgICAgICAgdW5zaWduZWQgZ2VuZXJhdG9yRnJhbWVTaXplID0gKCsraXQp
LT51LnVuc2lnbmVkVmFsdWU7CisgICAgICAgICAgICBwcmludExvY2F0aW9uT3BBbmRSZWdpc3Rl
ck9wZXJhbmQob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJuZXdfZ2VuZXJhdG9yX2ZyYW1lIiwg
ZHN0KTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIiAldSIsIGdlbmVyYXRvckZyYW1lU2l6ZSk7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIG9wX25vcDogewor
ICAgICAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAi
bm9wIik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2Fz
c2VydDogewogICAgICAgICAgICAgaW50IGNvbmRpdGlvbiA9ICgrK2l0KS0+dS5vcGVyYW5kOwog
ICAgICAgICAgICAgaW50IGxpbmUgPSAoKytpdCktPnUub3BlcmFuZDsKQEAgLTE4NDcsNiArMTg4
MywxMiBAQCB2b2lkIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBDb3B5UGFyc2Vk
QmxvY2tUYWcsIENvZGVCbG9jayYgb3RoZXIpCiAgICAgc2V0TnVtUGFyYW1ldGVycyh1bmxpbmtl
ZENvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKTsKIH0KIAorc3RydWN0IEdlbmVyYXRvclBvaW50
cyB7CisgICAgc2l6ZV90IHNhdmVQb2ludDsKKyAgICBzaXplX3QgbWVyZ2VQb2ludDsKKyAgICBz
aXplX3QgcmVzdW1lUG9pbnQ7Cit9OworCiB2b2lkIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24o
Vk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGlua2VkQ29kZUJs
b2NrKiB1bmxpbmtlZENvZGVCbG9jaywKICAgICBKU1Njb3BlKiBzY29wZSkKIHsKQEAgLTE5ODAs
OSArMjAyMiwxMCBAQCB2b2lkIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3Jp
cHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGluawogICAgIEhhc2hTZXQ8SlNNb2R1
bGVFbnZpcm9ubWVudCo+IHN0cm9uZ2x5UmVmZXJlbmNlZE1vZHVsZUVudmlyb25tZW50czsKIAog
ICAgIC8vIEJvb2trZWVwIHRoZSBtZXJnZSBwb2ludCBieXRlY29kZSBvZmZzZXRzLgotICAgIFZl
Y3RvcjxzaXplX3Q+IG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldHM7CisgICAgVmVjdG9yPEdlbmVy
YXRvclBvaW50cz4gbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0czsKIAogICAgIFJlZkNvdW50ZWRB
cnJheTxJbnN0cnVjdGlvbj4gaW5zdHJ1Y3Rpb25zKGluc3RydWN0aW9uQ291bnQpOworICAgIHVu
c2lnbmVkIG5ld0dlbmVyYXRvckZyYW1lSW5zdHJ1Y3Rpb25PZmZzZXQgPSAwOwogCiAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgIWluc3RydWN0aW9uUmVhZGVyLmF0RW5kKCk7ICkgewogICAgICAg
ICBjb25zdCBVbmxpbmtlZEluc3RydWN0aW9uKiBwYyA9IGluc3RydWN0aW9uUmVhZGVyLm5leHQo
KTsKQEAgLTIyNzAsMTIgKzIzMTMsMjYgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9u
KFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKLSAgICAgICAgY2FzZSBvcF9zYXZlOiB7CisgICAg
ICAgIGNhc2Ugb3Bfc2F2ZV9oaW50OiB7CiAgICAgICAgICAgICB1bnNpZ25lZCBsaXZlQ2FsbGVl
TG9jYWxzSW5kZXggPSBwY1syXS51LmluZGV4OwogICAgICAgICAgICAgaW50IG9mZnNldCA9IHBj
WzNdLnUub3BlcmFuZDsKICAgICAgICAgICAgIGlmIChsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPj0g
bWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0cy5zaXplKCkpCiAgICAgICAgICAgICAgICAgbWVyZ2VQ
b2ludEJ5dGVjb2RlT2Zmc2V0cy5yZXNpemUobGl2ZUNhbGxlZUxvY2Fsc0luZGV4ICsgMSk7Ci0g
ICAgICAgICAgICBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXRzW2xpdmVDYWxsZWVMb2NhbHNJbmRl
eF0gPSBpICsgb2Zmc2V0OworICAgICAgICAgICAgbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0c1ts
aXZlQ2FsbGVlTG9jYWxzSW5kZXhdLnNhdmVQb2ludCA9IGk7CisgICAgICAgICAgICBtZXJnZVBv
aW50Qnl0ZWNvZGVPZmZzZXRzW2xpdmVDYWxsZWVMb2NhbHNJbmRleF0ubWVyZ2VQb2ludCA9IGkg
KyBvZmZzZXQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2Ug
b3BfcmVzdW1lX2hpbnQ6IHsKKyAgICAgICAgICAgIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJ
bmRleCA9IHBjWzJdLnUuaW5kZXg7CisgICAgICAgICAgICBpZiAobGl2ZUNhbGxlZUxvY2Fsc0lu
ZGV4ID49IG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldHMuc2l6ZSgpKQorICAgICAgICAgICAgICAg
IG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldHMucmVzaXplKGxpdmVDYWxsZWVMb2NhbHNJbmRleCAr
IDEpOworICAgICAgICAgICAgbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0c1tsaXZlQ2FsbGVlTG9j
YWxzSW5kZXhdLnJlc3VtZVBvaW50ID0gaTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9
CisKKyAgICAgICAgY2FzZSBvcF9uZXdfZ2VuZXJhdG9yX2ZyYW1lOiB7CisgICAgICAgICAgICBu
ZXdHZW5lcmF0b3JGcmFtZUluc3RydWN0aW9uT2Zmc2V0ID0gaTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAKQEAgLTIyOTAsMTggKzIzNDcsNTcgQEAgdm9pZCBDb2RlQmxvY2s6OmZp
bmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBV
bmxpbmsKIAogICAgIG1faW5zdHJ1Y3Rpb25zID0gV1RGTW92ZShpbnN0cnVjdGlvbnMpOwogCi0g
ICAgLy8gUGVyZm9ybSBieXRlY29kZSBsaXZlbmVzcyBhbmFseXNpcyB0byBkZXRlcm1pbmUgd2hp
Y2ggbG9jYWxzIGFyZSBsaXZlIGFuZCBzaG91bGQgYmUgcmVzdW1lZCB3aGVuIGV4ZWN1dGluZyBv
cF9yZXN1bWUuCisgICAgLy8gUGVyZm9ybSBieXRlY29kZSBsaXZlbmVzcyBhbmFseXNpcyB0byBk
ZXRlcm1pbmUgd2hpY2ggbG9jYWxzIGFyZSBsaXZlIGFuZCBzaG91bGQgYmUgcmVzdW1lZCB3aGVu
IGV4ZWN1dGluZyBvcF9yZXN1bWVfaGludC4KICAgICBpZiAodW5saW5rZWRDb2RlQmxvY2stPnBh
cnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yQm9keU1vZGUpIHsKKyAgICAg
ICAgdW5zaWduZWQgbWF4R2VuZXJhdG9yRnJhbWVTaXplID0gMDsKICAgICAgICAgaWYgKHNpemVf
dCBjb3VudCA9IG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldHMuc2l6ZSgpKSB7CiAgICAgICAgICAg
ICBjcmVhdGVSYXJlRGF0YUlmTmVjZXNzYXJ5KCk7CiAgICAgICAgICAgICBCeXRlY29kZUxpdmVu
ZXNzQW5hbHlzaXMgbGl2ZW5lc3ModGhpcyk7CiAgICAgICAgICAgICBtX3JhcmVEYXRhLT5tX2xp
dmVDYWxsZWVMb2NhbHNBdFlpZWxkLmdyb3coY291bnQpOworCiAgICAgICAgICAgICBzaXplX3Qg
bGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gMDsKLSAgICAgICAgICAgIGZvciAoc2l6ZV90IGJ5dGVj
b2RlT2Zmc2V0IDogbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0cykgewotICAgICAgICAgICAgICAg
IG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGRbbGl2ZUNhbGxlZUxvY2Fsc0lu
ZGV4XSA9IGxpdmVuZXNzLmdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVP
ZmZzZXQpOworCisgICAgICAgICAgICAvLyBDYWxjdWxhdGUgbGl2ZW5lc3MgYW5kIHN0b3JlIGRh
dGEuCisgICAgICAgICAgICBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSAwOworICAgICAgICAgICAg
Zm9yIChjb25zdCBHZW5lcmF0b3JQb2ludHMmIHBvaW50cyA6IG1lcmdlUG9pbnRCeXRlY29kZU9m
ZnNldHMpIHsKKyAgICAgICAgICAgICAgICBzaXplX3QgbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0
ID0gcG9pbnRzLm1lcmdlUG9pbnQ7CisgICAgICAgICAgICAgICAgRmFzdEJpdFZlY3RvciBsaXZl
bmVzc1ZlY3RvciA9IGxpdmVuZXNzLmdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQobWVy
Z2VQb2ludEJ5dGVjb2RlT2Zmc2V0KTsKKyAgICAgICAgICAgICAgICBtX3JhcmVEYXRhLT5tX2xp
dmVDYWxsZWVMb2NhbHNBdFlpZWxkW2xpdmVDYWxsZWVMb2NhbHNJbmRleF0gPSBsaXZlbmVzc1Zl
Y3RvcjsKKyAgICAgICAgICAgICAgICBtYXhHZW5lcmF0b3JGcmFtZVNpemUgPSBzdGQ6Om1heDx1
bnNpZ25lZD4obWF4R2VuZXJhdG9yRnJhbWVTaXplLCBsaXZlbmVzc1ZlY3Rvci5iaXRDb3VudCgp
KTsKKyAgICAgICAgICAgICAgICArK2xpdmVDYWxsZWVMb2NhbHNJbmRleDsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgLy8gUmV3cml0ZSBieXRlY29kZXMgYmFzZWQgb24gY2FsY3VsYXRl
ZCBsaXZlbmVzcy4KKyAgICAgICAgICAgIGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9IDA7CisgICAg
ICAgICAgICBmb3IgKGNvbnN0IEdlbmVyYXRvclBvaW50cyYgcG9pbnRzIDogbWVyZ2VQb2ludEJ5
dGVjb2RlT2Zmc2V0cykgeworICAgICAgICAgICAgICAgIHNpemVfdCBzYXZlUG9pbnRCeXRlY29k
ZU9mZnNldCA9IHBvaW50cy5zYXZlUG9pbnQ7CisgICAgICAgICAgICAgICAgc2l6ZV90IHJlc3Vt
ZVBvaW50Qnl0ZWNvZGVPZmZzZXQgPSBwb2ludHMucmVzdW1lUG9pbnQ7CisKKyAgICAgICAgICAg
ICAgICBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlbmVzc1ZlY3RvciA9IG1fcmFyZURhdGEtPm1f
bGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGRbbGl2ZUNhbGxlZUxvY2Fsc0luZGV4XTsKKworICAgICAg
ICAgICAgICAgIC8vIFBhdGNoIG9wX3Jlc3VtZV9oaW50IHdpdGggYWN0dWFsIG9wcy4KKyAgICAg
ICAgICAgICAgICBpbnQgZ2VuZXJhdG9yRnJhbWVJbmRleCA9IG1faW5zdHJ1Y3Rpb25zW3Jlc3Vt
ZVBvaW50Qnl0ZWNvZGVPZmZzZXQgKyAxXS51Lm9wZXJhbmQ7CisgICAgICAgICAgICAgICAgaWYg
KCFsaXZlbmVzc1ZlY3Rvci5iaXRDb3VudCgpKSB7CisgICAgICAgICAgICAgICAgICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgNDsgKytpKQorICAgICAgICAgICAgICAgICAgICAgICAgbV9pbnN0
cnVjdGlvbnNbcmVzdW1lUG9pbnRCeXRlY29kZU9mZnNldCArIGldID0gdm0uaW50ZXJwcmV0ZXIt
PmdldE9wY29kZShvcF9ub3ApOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAgICAgICAgIHNpemVfdCBpID0gMDsKKyAgICAgICAgICAgICAgICAgICAgbGl2ZW5lc3NWZWN0
b3IuZm9yRWFjaFNldEJpdChbJl0odW5zaWduZWQgbG9jYWwpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHNpemVfdCBpbmRleCA9IGkrKzsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNpemVf
dCBvZmZzZXQgPSByZXN1bWVQb2ludEJ5dGVjb2RlT2Zmc2V0ICsgaW5kZXggKiA0OworICAgICAg
ICAgICAgICAgICAgICAgICAgbV9pbnN0cnVjdGlvbnNbb2Zmc2V0XSA9IHZtLmludGVycHJldGVy
LT5nZXRPcGNvZGUob3BfcmVzdW1lX2Zyb21fZ2VuZXJhdG9yX2ZyYW1lKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIG1faW5zdHJ1Y3Rpb25zW29mZnNldCArIDFdLnUub3BlcmFuZCA9IHZpcnR1
YWxSZWdpc3RlckZvckxvY2FsKGxvY2FsKS5vZmZzZXQoKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIG1faW5zdHJ1Y3Rpb25zW29mZnNldCArIDJdLnUub3BlcmFuZCA9IGdlbmVyYXRvckZyYW1l
SW5kZXg7CisgICAgICAgICAgICAgICAgICAgICAgICBtX2luc3RydWN0aW9uc1tvZmZzZXQgKyAz
XS51LnVuc2lnbmVkVmFsdWUgPSBpbmRleDsKKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAg
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgbV9pbnN0cnVjdGlvbnNbc2F2ZVBvaW50
Qnl0ZWNvZGVPZmZzZXRdID0gdm0uaW50ZXJwcmV0ZXItPmdldE9wY29kZShvcF9zYXZlKTsKICAg
ICAgICAgICAgICAgICArK2xpdmVDYWxsZWVMb2NhbHNJbmRleDsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfQorICAgICAgICAvLyBGaWxsIG9wX25ld19nZW5lcmF0b3JfZnJhbWUncyBzaXplLgor
ICAgICAgICBtX2luc3RydWN0aW9uc1tuZXdHZW5lcmF0b3JGcmFtZUluc3RydWN0aW9uT2Zmc2V0
ICsgMl0udS51bnNpZ25lZFZhbHVlID0gbWF4R2VuZXJhdG9yRnJhbWVTaXplOwogICAgIH0KIAog
ICAgIC8vIFNldCBvcHRpbWl6YXRpb24gdGhyZXNob2xkcyBvbmx5IGFmdGVyIG1faW5zdHJ1Y3Rp
b25zIGlzIGluaXRpYWxpemVkLCBzaW5jZSB0aGVzZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmNwcAppbmRleCBlMmNiMDAwNDgz
Nzk0YmE5MmQ1MTBkY2Y1ZmE5OTQ4ODVhMjNkYzNkLi4yZjM1Y2ZiMzk5NTcwNzU4OGMyYzU4YTQy
OTM0NzQxMzQzYjdlNTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmNwcApAQCAtNTQsNyArNTQsNyBAQCBzdGF0aWMgdm9p
ZCBnZXRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBJ
bnRlcnByZXRlciogaQogICAgIGNhc2Ugb3Bfam5sZXNzZXE6CiAgICAgY2FzZSBvcF9qbmdyZWF0
ZXI6CiAgICAgY2FzZSBvcF9qbmdyZWF0ZXJlcToKLSAgICBjYXNlIG9wX3NhdmU6IC8vIFRoZSBq
dW1wIG9mIG9wX3NhdmUgaXMgcHVyZWx5IGZvciBjYWxjdWxhdGluZyBsaXZlbmVzcy4KKyAgICBj
YXNlIG9wX3NhdmVfaGludDogLy8gVGhlIGp1bXAgb2Ygb3Bfc2F2ZV9oaW50IGlzIHB1cmVseSBm
b3IgY2FsY3VsYXRpbmcgbGl2ZW5lc3MuCiAgICAgICAgIG91dC5hcHBlbmQoYnl0ZWNvZGVPZmZz
ZXQgKyBjdXJyZW50WzNdLnUub3BlcmFuZCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ugb3Bf
c3dpdGNoX2ltbToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXggZDE1ZTIyNDM1MjY2ZmUxYWZmM2Q1Zjc5
YTFkZGE3NWI5YmRhZjNmMy4uMzRiOGY2MTEwNzRlNWVhMzVlZDM3NGMxMjc4ODNmNTIxOWYxZjc3
OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTI1Nyw3ICsyNTcsNyBAQCBQYXJzZXJFcnJvciBCeXRl
Y29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUoKQogICAgICAgICAvLyAgICBmdW5jdGlvbiAqZ2VuKGEs
IGIgPSBoZWxsbygpKQogICAgICAgICAvLyAgICB7CiAgICAgICAgIC8vICAgICAgICByZXR1cm4g
ewotICAgICAgICAvLyAgICAgICAgICAgIEBnZW5lcmF0b3JOZXh0OiBmdW5jdGlvbiAoQGdlbmVy
YXRvciwgQGdlbmVyYXRvclN0YXRlLCBAZ2VuZXJhdG9yVmFsdWUsIEBnZW5lcmF0b3JSZXN1bWVN
b2RlKQorICAgICAgICAvLyAgICAgICAgICAgIEBnZW5lcmF0b3JOZXh0OiBmdW5jdGlvbiAoQGdl
bmVyYXRvciwgQGdlbmVyYXRvclN0YXRlLCBAZ2VuZXJhdG9yVmFsdWUsIEBnZW5lcmF0b3JSZXN1
bWVNb2RlLCBAZ2VuZXJhdG9yRnJhbWUpCiAgICAgICAgIC8vICAgICAgICAgICAgewogICAgICAg
ICAvLyAgICAgICAgICAgICAgICBhcmd1bWVudHM7ICAvLyBUaGlzIGBhcmd1bWVudHNgIHNob3Vs
ZCByZWZlcmVuY2UgdG8gdGhlIGdlbidzIGFyZ3VtZW50cy4KICAgICAgICAgLy8gICAgICAgICAg
ICAgICAgLi4uCkBAIC01MzcsNiArNTM3LDkgQEAgUGFyc2VyRXJyb3IgQnl0ZWNvZGVHZW5lcmF0
b3I6OmdlbmVyYXRlKCkKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yQm9keU1v
ZGU6IHsKICAgICAgICAgLy8gfHRoaXN8IGlzIGFscmVhZHkgZmlsbGVkIGNvcnJlY3RseSBiZWZv
cmUgaGVyZS4KICAgICAgICAgZW1pdExvYWQobV9uZXdUYXJnZXRSZWdpc3RlciwganNVbmRlZmlu
ZWQoKSk7CisKKyAgICAgICAgZW1pdE5ld0dlbmVyYXRvckZyYW1lKGdlbmVyYXRvckZyYW1lUmVn
aXN0ZXIoKSk7CisgICAgICAgIGVtaXRQdXRCeUlkKGdlbmVyYXRvclJlZ2lzdGVyKCksIHByb3Bl
cnR5TmFtZXMoKS5nZW5lcmF0b3JGcmFtZVByaXZhdGVOYW1lLCBnZW5lcmF0b3JGcmFtZVJlZ2lz
dGVyKCkpOwogICAgICAgICBicmVhazsKICAgICB9CiAKQEAgLTI3NDQsNiArMjc0NywxNCBAQCBS
ZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uKFJlZ2lzdGVySUQq
IGRzdCwgRnVuY3Rpb25NZXRhZGF0YQogICAgIHJldHVybiBkc3Q7CiB9CiAKK1JlZ2lzdGVySUQq
IEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3R2VuZXJhdG9yRnJhbWUoUmVnaXN0ZXJJRCogZHN0
KQoreworICAgIGVtaXRPcGNvZGUob3BfbmV3X2dlbmVyYXRvcl9mcmFtZSk7CisgICAgaW5zdHJ1
Y3Rpb25zKCkuYXBwZW5kKGRzdC0+aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5k
KDApOworICAgIHJldHVybiBkc3Q7Cit9CisKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0Q2FsbChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGZ1bmMsIEV4cGVjdGVkRnVu
Y3Rpb24gZXhwZWN0ZWRGdW5jdGlvbiwgQ2FsbEFyZ3VtZW50cyYgY2FsbEFyZ3VtZW50cywgY29u
c3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFy
dCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKQogewogICAgIHJldHVybiBlbWl0Q2Fs
bChvcF9jYWxsLCBkc3QsIGZ1bmMsIGV4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRp
dm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCk7CkBAIC00MTQ0LDggKzQxNTUsOCBAQCB2b2lkIEJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0WWllbGRQb2ludChSZWdpc3RlcklEKiBhcmd1bWVudCkKIHZv
aWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRTYXZlKExhYmVsKiBtZXJnZVBvaW50LCB1bnNpZ25l
ZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpCiB7CiAgICAgc2l6ZV90IGJlZ2luID0gaW5zdHJ1Y3Rp
b25zKCkuc2l6ZSgpOwotICAgIGVtaXRPcGNvZGUob3Bfc2F2ZSk7Ci0gICAgaW5zdHJ1Y3Rpb25z
KCkuYXBwZW5kKG1fZ2VuZXJhdG9yUmVnaXN0ZXItPmluZGV4KCkpOworICAgIGVtaXRPcGNvZGUo
b3Bfc2F2ZV9oaW50KTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZ2VuZXJhdG9yRnJhbWVS
ZWdpc3RlcigpLT5pbmRleCgpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobGl2ZUNhbGxl
ZUxvY2Fsc0luZGV4KTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobWVyZ2VQb2ludC0+Ymlu
ZChiZWdpbiwgaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKSk7CiB9CkBAIC00MTUzLDkgKzQxNjQsMzEg
QEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFNhdmUoTGFiZWwqIG1lcmdlUG9pbnQsIHVu
c2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmQKIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRS
ZXN1bWUoTGFiZWwqIG1lcmdlUG9pbnQsIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCkK
IHsKICAgICBlbWl0R2VuZXJhdG9yU3RhdGVMYWJlbCgpOwotICAgIGVtaXRPcGNvZGUob3BfcmVz
dW1lKTsKLSAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobV9nZW5lcmF0b3JSZWdpc3Rlci0+aW5k
ZXgoKSk7CisKKyAgICByZWNsYWltRnJlZVJlZ2lzdGVycygpOworICAgIHVuc2lnbmVkIG1heExp
dmVMb2NhbHMgPSAwOworICAgIGZvciAoY29uc3QgUmVnaXN0ZXJJRCYgcmVnIDogbV9jYWxsZWVM
b2NhbHMpIHsKKyAgICAgICAgaWYgKHJlZy5yZWZDb3VudCgpKQorICAgICAgICAgICAgKyttYXhM
aXZlTG9jYWxzOworICAgIH0KKworICAgIC8vIFRoaXMgb3BfcmVzdW1lX2hpbnQgd2lsbCBiZSBy
ZXBsYWNlZCB3aXRoIHRoZSBhY3R1YWwgb3BzLgorICAgIGlmIChtYXhMaXZlTG9jYWxzKQorICAg
ICAgICBtYXhMaXZlTG9jYWxzIC09IDE7CisKKyAgICBlbWl0T3Bjb2RlKG9wX3Jlc3VtZV9oaW50
KTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZ2VuZXJhdG9yRnJhbWVSZWdpc3RlcigpLT5p
bmRleCgpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobGl2ZUNhbGxlZUxvY2Fsc0luZGV4
KTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobWF4TGl2ZUxvY2Fscyk7CisgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IG1heExpdmVMb2NhbHM7ICsraSkgeworICAgICAgICAvLyBOb3Ag
c3BhY2UuIExhdGVyIHdlIHdpbGwgZmlsbCB0aGlzIHdpdGggdGhlIGFjdHVhbCByZXN1bWUgb3Bl
cmF0aW9ucy4KKyAgICAgICAgZW1pdE9wY29kZShvcF9ub3ApOworICAgICAgICBlbWl0T3Bjb2Rl
KG9wX25vcCk7CisgICAgICAgIGVtaXRPcGNvZGUob3Bfbm9wKTsKKyAgICAgICAgZW1pdE9wY29k
ZShvcF9ub3ApOworICAgIH0KKyAgICBlbWl0T3Bjb2RlKG9wX2NsZWFyX2dlbmVyYXRvcl9mcmFt
ZSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGdlbmVyYXRvckZyYW1lUmVnaXN0ZXIoKS0+
aW5kZXgoKSk7CiAgICAgZW1pdExhYmVsKG1lcmdlUG9pbnQpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5k
ZXggN2QwYzIwYjZmNTE2YTE3ZTg5M2YxYmJhMDgwM2MxMzMzZmZjOGQwZC4uM2QzMzQ3ODE1YWMz
MGE4MmU2MjZlM2UwNzgwODFiZTJiM2U5YmUzZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAtNTIyLDYgKzUy
Miw3IEBACiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdEZWZhdWx0Q29uc3RydWN0b3IoUmVn
aXN0ZXJJRCogZHN0LCBDb25zdHJ1Y3RvcktpbmQsIGNvbnN0IElkZW50aWZpZXImIG5hbWUpOwog
ICAgICAgICBSZWdpc3RlcklEKiBlbWl0TmV3QXJyb3dGdW5jdGlvbkV4cHJlc3Npb24oUmVnaXN0
ZXJJRCosIEFycm93RnVuY0V4cHJOb2RlKik7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdS
ZWdFeHAoUmVnaXN0ZXJJRCogZHN0LCBSZWdFeHAqKTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1p
dE5ld0dlbmVyYXRvckZyYW1lKFJlZ2lzdGVySUQqIGRzdCk7CiAKICAgICAgICAgUmVnaXN0ZXJJ
RCogZW1pdE1vdmVMaW5rVGltZUNvbnN0YW50KFJlZ2lzdGVySUQqIGRzdCwgTGlua1RpbWVDb25z
dGFudCk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRNb3ZlRW1wdHlWYWx1ZShSZWdpc3RlcklE
KiBkc3QpOwpAQCAtNjg0LDYgKzY4NSw3IEBACiAgICAgICAgIFJlZ2lzdGVySUQqIGdlbmVyYXRv
clN0YXRlUmVnaXN0ZXIoKSB7IHJldHVybiAmbV9wYXJhbWV0ZXJzWzJdOyB9CiAgICAgICAgIFJl
Z2lzdGVySUQqIGdlbmVyYXRvclZhbHVlUmVnaXN0ZXIoKSB7IHJldHVybiAmbV9wYXJhbWV0ZXJz
WzNdOyB9CiAgICAgICAgIFJlZ2lzdGVySUQqIGdlbmVyYXRvclJlc3VtZU1vZGVSZWdpc3Rlcigp
IHsgcmV0dXJuICZtX3BhcmFtZXRlcnNbNF07IH0KKyAgICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJh
dG9yRnJhbWVSZWdpc3RlcigpIHsgcmV0dXJuICZtX3BhcmFtZXRlcnNbNV07IH0KIAogICAgICAg
ICBDb2RlVHlwZSBjb2RlVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZVR5cGU7IH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVy
SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJl
dGVySW5saW5lcy5oCmluZGV4IDllZWM2M2NlYjA3MWJjMTQ4NmEwMTJjMjg1MDFkYjYyNDI2YmRl
N2IuLmM0YTZkY2FjNDUyZjcwMWJiZTY3OWRiNzIyMDZmYzIzZDRlMDE3MDIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJ
bmxpbmVzLmgKQEAgLTE2ODcsNiArMTY4NywxMCBAQAogICAgIGNhc2UgTmV3UmVnZXhwOgogICAg
ICAgICBmb3JOb2RlKG5vZGUpLnNldChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpLT5yZWdFeHBTdHJ1Y3R1cmUoKSk7CiAgICAgICAgIGJyZWFr
OworCisgICAgY2FzZSBOZXdHZW5lcmF0b3JGcmFtZToKKyAgICAgICAgZm9yTm9kZShub2RlKS5z
ZXQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KS0+Z2VuZXJhdG9yRnJhbWVTdHJ1Y3R1cmUoKSk7CisgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgCiAgICAgY2FzZSBUb1RoaXM6IHsKICAgICAgICAgQWJzdHJhY3RWYWx1ZSYgc291cmNlID0g
Zm9yTm9kZShub2RlLT5jaGlsZDEoKSk7CkBAIC0yNTEwLDYgKzI1MTQsMjIgQEAKICAgICAgICAg
Zm9yTm9kZShub2RlKS5tYWtlSGVhcFRvcCgpOwogICAgICAgICBicmVhazsKIAorICAgIGNhc2Ug
U2V0R2VuZXJhdG9yTG9jYWw6IHsKKyAgICAgICAgY2xvYmJlcldvcmxkKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYywgY2xvYmJlckxpbWl0KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgY2Fz
ZSBHZXRHZW5lcmF0b3JMb2NhbDogeworICAgICAgICBjbG9iYmVyV29ybGQobm9kZS0+b3JpZ2lu
LnNlbWFudGljLCBjbG9iYmVyTGltaXQpOworICAgICAgICBmb3JOb2RlKG5vZGUpLm1ha2VIZWFw
VG9wKCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGNhc2UgUHV0R2VuZXJhdG9yRnJh
bWVMb2NhbHM6IHsKKyAgICAgICAgY2xvYmJlcldvcmxkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywg
Y2xvYmJlckxpbWl0KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBGb3JjZU9T
UkV4aXQ6CiAgICAgY2FzZSBDaGVja0JhZENlbGw6CiAgICAgICAgIG1fc3RhdGUuc2V0SXNWYWxp
ZChmYWxzZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0JhY2t3
YXJkc1Byb3BhZ2F0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdC
YWNrd2FyZHNQcm9wYWdhdGlvblBoYXNlLmNwcAppbmRleCBiZjY1MTg4NmUzYWY5NWEzNDY2MDRi
ZTNlNTZiMDBmZjQxNzAwYmI3Li4yYmIzYjFmOGE5NWE2NDljODJmMDg5NzJkMTVjNjNjOGY5Njhi
OWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0JhY2t3YXJkc1By
b3BhZ2F0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFj
a3dhcmRzUHJvcGFnYXRpb25QaGFzZS5jcHAKQEAgLTQwMyw2ICs0MDMsMjQgQEAgY2xhc3MgQmFj
a3dhcmRzUHJvcGFnYXRpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQogCisgICAgICAgIGNhc2UgR2V0R2VuZXJhdG9yTG9jYWw6IHsKKyAgICAg
ICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFibGVBY2Nlc3NEYXRhID0gbm9kZS0+c2F2
ZWRWYXJpYWJsZUFjY2Vzc0RhdGEoKTsKKyAgICAgICAgICAgIGZsYWdzICY9IH5Ob2RlQnl0ZWNv
ZGVVc2VzQXNJbnQ7IC8vIFdlIGRvbid0IGNhcmUgYWJvdXQgY3Jvc3MtYmxvY2sgdXNlcy1hcy1p
bnQuCisgICAgICAgICAgICBtX2NoYW5nZWQgfD0gdmFyaWFibGVBY2Nlc3NEYXRhLT5tZXJnZUZs
YWdzKGZsYWdzKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgY2Fz
ZSBTZXRHZW5lcmF0b3JMb2NhbDogeworICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2
YXJpYWJsZUFjY2Vzc0RhdGEgPSBub2RlLT5zYXZlZFZhcmlhYmxlQWNjZXNzRGF0YSgpOworICAg
ICAgICAgICAgaWYgKCF2YXJpYWJsZUFjY2Vzc0RhdGEtPmlzTG9hZGVkRnJvbSgpKQorICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZmxhZ3MgPSB2YXJpYWJsZUFjY2Vzc0RhdGEt
PmZsYWdzKCk7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCghKGZsYWdzICYgfk5vZGVCeXRl
Y29kZUJhY2tQcm9wTWFzaykpOworICAgICAgICAgICAgZmxhZ3MgfD0gTm9kZUJ5dGVjb2RlVXNl
c0FzTnVtYmVyOyAvLyBBY2NvdW50IGZvciB0aGUgZmFjdCB0aGF0IGNvbnRyb2wgZmxvdyBtYXkg
Y2F1c2Ugb3ZlcmZsb3dzIHRoYXQgb3VyIG1vZGVsaW5nIGNhbid0IGhhbmRsZS4KKyAgICAgICAg
ICAgIG5vZGUtPmNoaWxkMigpLT5tZXJnZUZsYWdzKGZsYWdzKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisKICAgICAgICAgY2FzZSBJZGVudGl0eTogCiAgICAgICAgICAgICAvLyBU
aGlzIHdvdWxkIGJlIHRyaXZpYWwgdG8gaGFuZGxlIGJ1dCB3ZSBqdXN0IGFzc2VydCB0aGF0IHdl
IGNhbm5vdCBzZWUgdGhlc2UgeWV0LgogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNv
ZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNl
ci5jcHAKaW5kZXggMzY0NGEyZmQxOWEwZDliM2RkYTdiMDY4YTAwNDkwYTU4MjYyMDg2ZC4uMThm
YTY1NmU5ZTBlYWU3ODdlOGYwOTE0ZjVhNmY5MTEyYTUyMjdiYSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTEwNTEsNiArMTA1MSw5
IEBAIGNsYXNzIEJ5dGVDb2RlUGFyc2VyIHsKICAgICAgICAgQ2FsbExpbmtJbmZvTWFwIG1fY2Fs
bExpbmtJbmZvczsKICAgICAgICAgU3R1YkluZm9NYXAgbV9zdHViSW5mb3M7CiAgICAgICAgIEJ5
VmFsSW5mb01hcCBtX2J5VmFsSW5mb3M7CisKKyAgICAgICAgLy8gQmFzaWMgYmxvY2tzIHBlcmZv
cm1pbmcgeWllbGQncyBvcF9zYXZlIG9wZXJhdGlvbi4KKyAgICAgICAgVmVjdG9yPE9wZXJhbmRz
PFZhcmlhYmxlQWNjZXNzRGF0YSo+PiBtX2dlbmVyYXRvckxvY2FsczsKICAgICAgICAgCiAgICAg
ICAgIC8vIERpZCB3ZSBzZWUgYW55IHJldHVybnM/IFdlIG5lZWQgdG8gaGFuZGxlIHRoZSAodW5j
b21tb24gYnV0IG5lY2Vzc2FyeSkKICAgICAgICAgLy8gY2FzZSB3aGVyZSBhIHByb2NlZHVyZSB0
aGF0IGRvZXMgbm90IHJldHVybiB3YXMgaW5saW5lZC4KQEAgLTMzNDEsNiArMzM0NCwxMSBAQCBi
b29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAg
ICAgTkVYVF9PUENPREUob3BfbmV3X3JlZ2V4cCk7CiAgICAgICAgIH0KIAorICAgICAgICBjYXNl
IG9wX25ld19nZW5lcmF0b3JfZnJhbWU6IHsKKyAgICAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0
ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCksIGFkZFRvR3JhcGgoTmV3R2VuZXJh
dG9yRnJhbWUsIE9wSW5mbyhjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS51bnNpZ25lZFZhbHVlKSkp
OworICAgICAgICAgICAgTkVYVF9PUENPREUob3BfbmV3X2dlbmVyYXRvcl9mcmFtZSk7CisgICAg
ICAgIH0KKwogICAgICAgICBjYXNlIG9wX2dldF9yZXN0X2xlbmd0aDogewogICAgICAgICAgICAg
SW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUgPSB0aGlzLT5pbmxpbmVDYWxsRnJhbWUo
KTsKICAgICAgICAgICAgIE5vZGUqIGxlbmd0aDsKQEAgLTMzNjgsNiArMzM3Niw1MCBAQCBib29s
IEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAgICAg
ICAgIGFycmF5LCBhcnJheUxlbmd0aCk7CiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9jb3B5
X3Jlc3QpOwogICAgICAgICB9CisKKyAgICAgICAgY2FzZSBvcF9zYXZlOiB7CisgICAgICAgICAg
ICBOb2RlKiBmcmFtZSA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFd
LnUub3BlcmFuZCkpOworICAgICAgICAgICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4
ID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUudW5zaWduZWRWYWx1ZTsKKyAgICAgICAgICAgIGNv
bnN0IEZhc3RCaXRWZWN0b3ImIGxpdmVuZXNzID0gbV9pbmxpbmVTdGFja1RvcC0+bV9jb2RlQmxv
Y2stPmxpdmVDYWxsZWVMb2NhbHNBdFlpZWxkKGxpdmVDYWxsZWVMb2NhbHNJbmRleCk7CisgICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVChsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPT0gbV9pbmxpbmVT
dGFja1RvcC0+bV9nZW5lcmF0b3JMb2NhbHMuc2l6ZSgpKTsKKyAgICAgICAgICAgIG1faW5saW5l
U3RhY2tUb3AtPm1fZ2VuZXJhdG9yTG9jYWxzLmFwcGVuZChPcGVyYW5kczxWYXJpYWJsZUFjY2Vz
c0RhdGEqPihtX251bUFyZ3VtZW50cywgbV9udW1Mb2NhbHMpKTsKKyAgICAgICAgICAgIE9wZXJh
bmRzPFZhcmlhYmxlQWNjZXNzRGF0YSo+JiBvcGVyYW5kcyA9IG1faW5saW5lU3RhY2tUb3AtPm1f
Z2VuZXJhdG9yTG9jYWxzLmxhc3QoKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGdlbmVyYXRvckZy
YW1lSW5kZXggPSAwOworICAgICAgICAgICAgbGl2ZW5lc3MuZm9yRWFjaFNldEJpdChbJl0oc2l6
ZV90IGluZGV4KSB7CisgICAgICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQgPSB2
aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChpbmRleCk7CisgICAgICAgICAgICAgICAgVmlydHVhbFJl
Z2lzdGVyIHJlbWFwcGVkT3BlcmFuZCA9IG1faW5saW5lU3RhY2tUb3AtPnJlbWFwT3BlcmFuZChv
cGVyYW5kKTsKKyAgICAgICAgICAgICAgICBOb2RlKiBsb2NhbCA9IGdldChvcGVyYW5kKTsKKyAg
ICAgICAgICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxlID0gbmV3VmFyaWFibGVB
Y2Nlc3NEYXRhKHJlbWFwcGVkT3BlcmFuZCk7CisgICAgICAgICAgICAgICAgdmFyaWFibGUtPm1l
cmdlU2hvdWxkTmV2ZXJVbmJveCh0cnVlKTsKKyAgICAgICAgICAgICAgICBvcGVyYW5kcy5sb2Nh
bChyZW1hcHBlZE9wZXJhbmQudG9Mb2NhbCgpKSA9IHZhcmlhYmxlOworICAgICAgICAgICAgICAg
IGFkZFRvR3JhcGgoU2V0R2VuZXJhdG9yTG9jYWwsIE9wSW5mbyhnZW5lcmF0b3JGcmFtZUluZGV4
KyspLCBPcEluZm8odmFyaWFibGUpLCBmcmFtZSwgbG9jYWwpOworICAgICAgICAgICAgfSk7Cisg
ICAgICAgICAgICBhZGRUb0dyYXBoKFB1dEdlbmVyYXRvckZyYW1lTG9jYWxzLCBPcEluZm8oZ2Vu
ZXJhdG9yRnJhbWVJbmRleCksIGZyYW1lKTsKKyAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX3Nh
dmUpOworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBvcF9yZXN1bWVfZnJvbV9nZW5lcmF0b3Jf
ZnJhbWU6IHsKKyAgICAgICAgICAgIE5vZGUqIGZyYW1lID0gZ2V0KFZpcnR1YWxSZWdpc3Rlcihj
dXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSk7CisgICAgICAgICAgICBPcGVyYW5kczxW
YXJpYWJsZUFjY2Vzc0RhdGEqPiYgb3BlcmFuZHMgPSBtX2lubGluZVN0YWNrVG9wLT5tX2dlbmVy
YXRvckxvY2Fscy5sYXN0KCk7CisgICAgICAgICAgICB1bnNpZ25lZCBnZW5lcmF0b3JGcmFtZUlu
ZGV4ID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUudW5zaWduZWRWYWx1ZTsKKyAgICAgICAgICAg
IFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQp
OworICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHJlbWFwcGVkT3BlcmFuZCA9IG1faW5saW5l
U3RhY2tUb3AtPnJlbWFwT3BlcmFuZChvcGVyYW5kKTsKKyAgICAgICAgICAgIFZhcmlhYmxlQWNj
ZXNzRGF0YSogdmFyaWFibGUgPSBvcGVyYW5kcy5sb2NhbChyZW1hcHBlZE9wZXJhbmQudG9Mb2Nh
bCgpKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHZhcmlhYmxlKTsKKyAgICAgICAgICAg
IHNldChvcGVyYW5kLCBhZGRUb0dyYXBoKEdldEdlbmVyYXRvckxvY2FsLCBPcEluZm8oZ2VuZXJh
dG9yRnJhbWVJbmRleCksIE9wSW5mbyh2YXJpYWJsZSksIGZyYW1lKSk7CisgICAgICAgICAgICBO
RVhUX09QQ09ERShvcF9yZXN1bWVfZnJvbV9nZW5lcmF0b3JfZnJhbWUpOworICAgICAgICB9CisK
KyAgICAgICAgY2FzZSBvcF9jbGVhcl9nZW5lcmF0b3JfZnJhbWU6IHsKKyAgICAgICAgICAgIE5v
ZGUqIGZyYW1lID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5v
cGVyYW5kKSk7CisgICAgICAgICAgICBhZGRUb0dyYXBoKFB1dEdlbmVyYXRvckZyYW1lTG9jYWxz
LCBPcEluZm8oMCksIGZyYW1lKTsKKyAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2NsZWFyX2dl
bmVyYXRvcl9mcmFtZSk7CisgICAgICAgIH0KKworICAgICAgICBjYXNlIG9wX25vcDogeworICAg
ICAgICAgICAgTkVYVF9PUENPREUob3Bfbm9wKTsKKyAgICAgICAgfQorCiAgICAgICAgICAgICAK
ICAgICAgICAgLy8gPT09IEJpdHdpc2Ugb3BlcmF0aW9ucyA9PT0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCmluZGV4IGQxMDBkOTdkNWM2MGUyNWEw
NjBmZmRhNDU2NjNiM2I5NDE0MzVkYzYuLmE1ODJmODcyMDc2Y2ZmODk0MjgzZWJhMzFhNDk5Nzc2
MzBkYzc4OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJp
bGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGll
cy5jcHAKQEAgLTE4MSw2ICsxODEsNyBAQCBDYXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVs
KE9wY29kZUlEIG9wY29kZUlELCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSW5zdHJ1YwogICAgIGNh
c2Ugb3BfbmV3X2FycmF5OgogICAgIGNhc2Ugb3BfbmV3X2FycmF5X3dpdGhfc2l6ZToKICAgICBj
YXNlIG9wX25ld19hcnJheV9idWZmZXI6CisgICAgY2FzZSBvcF9uZXdfZ2VuZXJhdG9yX2ZyYW1l
OgogICAgIGNhc2Ugb3Bfc3RyY2F0OgogICAgIGNhc2Ugb3BfdG9fcHJpbWl0aXZlOgogICAgIGNh
c2Ugb3BfdGhyb3c6CkBAIC0yMjQsNiArMjI1LDEwIEBAIENhcGFiaWxpdHlMZXZlbCBjYXBhYmls
aXR5TGV2ZWwoT3Bjb2RlSUQgb3Bjb2RlSUQsIENvZGVCbG9jayogY29kZUJsb2NrLCBJbnN0cnVj
CiAgICAgY2FzZSBvcF9jYXRjaDoKICAgICBjYXNlIG9wX2NvcHlfcmVzdDoKICAgICBjYXNlIG9w
X2dldF9yZXN0X2xlbmd0aDoKKyAgICBjYXNlIG9wX3NhdmU6CisgICAgY2FzZSBvcF9yZXN1bWVf
ZnJvbV9nZW5lcmF0b3JfZnJhbWU6CisgICAgY2FzZSBvcF9jbGVhcl9nZW5lcmF0b3JfZnJhbWU6
CisgICAgY2FzZSBvcF9ub3A6CiAgICAgICAgIHJldHVybiBDYW5Db21waWxlQW5kSW5saW5lOwog
CiAgICAgY2FzZSBvcF9wdXRfdG9fc2NvcGU6IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDbG9iYmVyaXplLmgKaW5kZXggMzQzYTZkZTljMjkwOWI5M2UwNTI4Y2YwMjc4NGFhZDk0ZDAx
YjRkMS4uOTI3ZjJmYWRkNGViYmIwOTNkY2UyYjA0MWE1MTlkM2U2MWU2Nzg3NiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKQEAgLTEwNDQsNiArMTA0NCw3IEBA
IHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5j
dG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAKICAgICBjYXNlIE5ld09iamVjdDoKICAgICBjYXNl
IE5ld1JlZ2V4cDoKKyAgICBjYXNlIE5ld0dlbmVyYXRvckZyYW1lOgogICAgIGNhc2UgTmV3U3Ry
aW5nT2JqZWN0OgogICAgIGNhc2UgUGhhbnRvbU5ld09iamVjdDoKICAgICBjYXNlIE1hdGVyaWFs
aXplTmV3T2JqZWN0OgpAQCAtMTExMSw2ICsxMTEyLDIzIEBAIHZvaWQgY2xvYmJlcml6ZShHcmFw
aCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0
ZUZ1CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CisKKyAgICBjYXNlIFNldEdlbmVyYXRvckxvY2FsOiB7Cisg
ICAgICAgIHJlYWQoV29ybGQpOworICAgICAgICB3cml0ZShIZWFwKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIGNhc2UgR2V0R2VuZXJhdG9yTG9jYWw6IHsKKyAgICAgICAgcmVhZChX
b3JsZCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBjYXNlIFB1dEdlbmVyYXRvckZy
YW1lTG9jYWxzOiB7CisgICAgICAgIHJlYWQoV29ybGQpOworICAgICAgICB3cml0ZShIZWFwKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBUaHJvd1JlZmVyZW5j
ZUVycm9yOgogICAgICAgICB3cml0ZShTaWRlU3RhdGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyc0V4aXRTdGF0ZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcAppbmRleCA0ZTBjNTA3Nzg5Y2Q3
YjNmZjQ3NzUxZjkyNWU3NDgzZTYxZTJkZjViLi5jYjk0MTNiZGYwNjdkMTYwOWZjMWU4NDRmZDU4
ZjNlYWNlYjZmYjUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Ns
b2JiZXJzRXhpdFN0YXRlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Ns
b2JiZXJzRXhpdFN0YXRlLmNwcApAQCAtNTMsMTAgKzUzLDE2IEBAIGJvb2wgY2xvYmJlcnNFeGl0
U3RhdGUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgICAgICAvLyBleGl0IHN0YXRlLgog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKKyAgICBjYXNlIFB1dEdlbmVyYXRvckZyYW1lTG9jYWxz
OgorICAgIGNhc2UgU2V0R2VuZXJhdG9yTG9jYWw6CisgICAgY2FzZSBHZXRHZW5lcmF0b3JMb2Nh
bDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgY2FzZSBBcnJheWlmeVRvU3RydWN0dXJl
OgogICAgIGNhc2UgQXJyYXlpZnk6CiAgICAgY2FzZSBOZXdPYmplY3Q6CiAgICAgY2FzZSBOZXdS
ZWdleHA6CisgICAgY2FzZSBOZXdHZW5lcmF0b3JGcmFtZToKICAgICBjYXNlIE5ld1N0cmluZ09i
amVjdDoKICAgICBjYXNlIFBoYW50b21OZXdPYmplY3Q6CiAgICAgY2FzZSBNYXRlcmlhbGl6ZU5l
d09iamVjdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dD
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAppbmRleCA3MDJk
YTViZjFlN2MwZjFjOGZlNTVjNjQ4NDQ1OGZjYWQ4MWUyYWE1Li5lNDE4ZDc4NzY2ZWE2NGYzMDFk
ZDBkM2E0ZDc1MGI0YTgyNTA2YjEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0RvZXNHQy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2Vz
R0MuY3BwCkBAIC0yMjksNiArMjI5LDkgQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2Rl
KiBub2RlKQogICAgIGNhc2UgR2V0RnJvbUFyZ3VtZW50czoKICAgICBjYXNlIFB1dFRvQXJndW1l
bnRzOgogICAgIGNhc2UgQ29weVJlc3Q6CisgICAgY2FzZSBTZXRHZW5lcmF0b3JMb2NhbDoKKyAg
ICBjYXNlIEdldEdlbmVyYXRvckxvY2FsOgorICAgIGNhc2UgUHV0R2VuZXJhdG9yRnJhbWVMb2Nh
bHM6CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGNhc2UgQ3JlYXRlQWN0aXZhdGlvbjoK
QEAgLTI0Niw2ICsyNDksNyBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUp
CiAgICAgY2FzZSBOZXdBcnJheVdpdGhTaXplOgogICAgIGNhc2UgTmV3QXJyYXlCdWZmZXI6CiAg
ICAgY2FzZSBOZXdSZWdleHA6CisgICAgY2FzZSBOZXdHZW5lcmF0b3JGcmFtZToKICAgICBjYXNl
IE5ld1N0cmluZ09iamVjdDoKICAgICBjYXNlIE1ha2VSb3BlOgogICAgIGNhc2UgTmV3QXJyb3dG
dW5jdGlvbjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQ
aGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCmlu
ZGV4IGM5ZDVhYmZiNDk0ODFiOTA1ODllYzRmYmE1OTVhMmNlOGU3MGRmNjcuLjg3OWJlOWRlMjEy
MDg2ZDlhZGZkZjYxMjc3MmY3ZjIzZjZiM2FiOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdGaXh1cFBoYXNlLmNwcApAQCAtMTQzMCw2ICsxNDMwLDIxIEBAIGNsYXNzIEZpeHVw
UGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAor
ICAgICAgICBjYXNlIFNldEdlbmVyYXRvckxvY2FsOiB7CisgICAgICAgICAgICBmaXhFZGdlPENl
bGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisK
KyAgICAgICAgY2FzZSBHZXRHZW5lcmF0b3JMb2NhbDogeworICAgICAgICAgICAgZml4RWRnZTxD
ZWxsVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor
CisgICAgICAgIGNhc2UgUHV0R2VuZXJhdG9yRnJhbWVMb2NhbHM6IHsKKyAgICAgICAgICAgIGZp
eEVkZ2U8Q2VsbFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0KKwogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICAgICAgLy8gSGF2ZSB0aGVzZSBuby1v
cCBjYXNlcyBoZXJlIHRvIGVuc3VyZSB0aGF0IG5vYm9keSBmb3JnZXRzIHRvIGFkZCBoYW5kbGVy
cyBmb3IgbmV3IG9wY29kZXMuCiAgICAgICAgIGNhc2UgU2V0QXJndW1lbnQ6CkBAIC0xNDYyLDYg
KzE0NzcsNyBAQCBjbGFzcyBGaXh1cFBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgY2Fz
ZSBOZXdPYmplY3Q6CiAgICAgICAgIGNhc2UgTmV3QXJyYXlCdWZmZXI6CiAgICAgICAgIGNhc2Ug
TmV3UmVnZXhwOgorICAgICAgICBjYXNlIE5ld0dlbmVyYXRvckZyYW1lOgogICAgICAgICBjYXNl
IEJyZWFrcG9pbnQ6CiAgICAgICAgIGNhc2UgUHJvZmlsZVdpbGxDYWxsOgogICAgICAgICBjYXNl
IFByb2ZpbGVEaWRDYWxsOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdNYXlFeGl0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAK
aW5kZXggZGFhMjkzMzlkYmZiZGY4MGFhZDliNjQ2YTJjYjdhMDU4N2Q5NjIzOC4uZmM1N2I4MjMw
M2M3OWJkMTNjZDVkMWNlMWJlMGFmYjcxMGNlNmM3NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR01heUV4aXQuY3BwCkBAIC0xMzAsNiArMTMwLDkgQEAgRXhpdE1vZGUgbWF5RXhpdChH
cmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBTdG9yZUJhcnJpZXI6CiAgICAgY2Fz
ZSBQdXRCeU9mZnNldDoKICAgICBjYXNlIFB1dENsb3N1cmVWYXI6CisgICAgY2FzZSBQdXRHZW5l
cmF0b3JGcmFtZUxvY2FsczoKKyAgICBjYXNlIFNldEdlbmVyYXRvckxvY2FsOgorICAgIGNhc2Ug
R2V0R2VuZXJhdG9yTG9jYWw6CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBTdHJDYXQ6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCmluZGV4IDEyODcwZDkzZDBjNDgyZTRmOGU1ZDRk
MmRhZjFlNmJmMWY3MWI2MmMuLjI3ZThhNTBkZTM0ZGMwODYyZmRmM2NhMDE2NWNhMTE0ODU5OWU4
NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCkBAIC04NzgsNiArODc4LDcyIEBA
IHN0cnVjdCBOb2RlIHsKICAgICAgICAgcmV0dXJuIG1fb3BJbmZvOwogICAgIH0KIAorICAgIGJv
b2wgaGFzR2VuZXJhdG9yRnJhbWVTaXplKCkKKyAgICB7CisgICAgICAgIHN3aXRjaCAob3AoKSkg
eworICAgICAgICBjYXNlIE5ld0dlbmVyYXRvckZyYW1lOgorICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICB1bnNpZ25lZCBnZW5lcmF0b3JGcmFtZVNpemUoKQorICAgIHsKKyAg
ICAgICAgQVNTRVJUKGhhc0dlbmVyYXRvckZyYW1lU2l6ZSgpKTsKKyAgICAgICAgcmV0dXJuIG1f
b3BJbmZvOworICAgIH0KKworICAgIGJvb2wgaGFzR2VuZXJhdG9yRnJhbWVJbmRleCgpCisgICAg
eworICAgICAgICBzd2l0Y2ggKG9wKCkpIHsKKyAgICAgICAgY2FzZSBTZXRHZW5lcmF0b3JMb2Nh
bDoKKyAgICAgICAgY2FzZSBHZXRHZW5lcmF0b3JMb2NhbDoKKyAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICB9CisgICAgfQorCisgICAgdW5zaWduZWQgZ2VuZXJhdG9yRnJhbWVJbmRleCgpCisgICAgewor
ICAgICAgICBBU1NFUlQoaGFzR2VuZXJhdG9yRnJhbWVJbmRleCgpKTsKKyAgICAgICAgcmV0dXJu
IG1fb3BJbmZvOworICAgIH0KKworICAgIGJvb2wgaGFzU2F2ZWRWYXJpYWJsZUFjY2Vzc0RhdGEo
KQorICAgIHsKKyAgICAgICAgc3dpdGNoIChvcCgpKSB7CisgICAgICAgIGNhc2UgU2V0R2VuZXJh
dG9yTG9jYWw6CisgICAgICAgIGNhc2UgR2V0R2VuZXJhdG9yTG9jYWw6CisgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgfQorICAgIH0KKworICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogc2F2ZWRWYXJpYWJs
ZUFjY2Vzc0RhdGEoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGhhc1NhdmVkVmFyaWFibGVBY2Nl
c3NEYXRhKCkpOworICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxWYXJpYWJsZUFjY2Vz
c0RhdGEqPihtX29wSW5mbzIpLT5maW5kKCk7CisgICAgfQorCisgICAgYm9vbCBoYXNHZW5lcmF0
b3JGcmFtZUxvY2FscygpCisgICAgeworICAgICAgICBzd2l0Y2ggKG9wKCkpIHsKKyAgICAgICAg
Y2FzZSBQdXRHZW5lcmF0b3JGcmFtZUxvY2FsczoKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9Cisg
ICAgfQorCisgICAgdW5zaWduZWQgZ2VuZXJhdG9yRnJhbWVMb2NhbHMoKQorICAgIHsKKyAgICAg
ICAgQVNTRVJUKGhhc0dlbmVyYXRvckZyYW1lTG9jYWxzKCkpOworICAgICAgICByZXR1cm4gbV9v
cEluZm87CisgICAgfQorCiAgICAgYm9vbCBoYXNBY2Nlc3NvckF0dHJpYnV0ZXMoKQogICAgIHsK
ICAgICAgICAgc3dpdGNoIChvcCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR05vZGVUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVU
eXBlLmgKaW5kZXggZGRkMGI5N2NiMmZlNjkyNjA0NTEwM2Y4YTcxMDcwMDQ4MmU5ZjZiZC4uYzlh
OGQ3MmY4MjdlYmVjODFhZGVlYmYyZDZkODk3YWM5ZTgwZDUzZSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTm9kZVR5cGUuaApAQCAtNzksNiArNzksMTAgQEAKICAgICBtYWNybyhGbHVz
aCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKFBoYW50b21Mb2NhbCwgTm9kZU11c3RH
ZW5lcmF0ZSkgXAogICAgIFwKKyAgICBtYWNybyhTZXRHZW5lcmF0b3JMb2NhbCwgTm9kZU11c3RH
ZW5lcmF0ZSkgXAorICAgIG1hY3JvKEdldEdlbmVyYXRvckxvY2FsLCBOb2RlUmVzdWx0SlMpIFwK
KyAgICBtYWNybyhQdXRHZW5lcmF0b3JGcmFtZUxvY2FscywgTm9kZU11c3RHZW5lcmF0ZSkgXAor
ICAgIFwKICAgICAvKiBIaW50IHRoYXQgdGhpcyBpcyB3aGVyZSBieXRlY29kZSB0aGlua3MgaXMg
YSBnb29kIHBsYWNlIHRvIE9TUi4gTm90ZSB0aGF0IHRoaXMgKi9cCiAgICAgLyogd2lsbCBleGlz
dCBldmVuIGluIGlubGluZWQgbG9vcHMuIFRoaXMgaGFzIG5vIGV4ZWN1dGlvbiBzZW1hbnRpY3Mg
YnV0IGl0IG11c3QgKi9cCiAgICAgLyogc3Vydml2ZSBhbGwgRENFLiBXZSB0cmVhdCB0aGlzIGFz
IGJlaW5nIGEgY2FuLWV4aXQgYmVjYXVzZSB0aWVyLXVwIHRvIEZUTCBtYXkgKi9cCkBAIC0yNjMs
NiArMjY3LDcgQEAKICAgICBtYWNybyhOZXdBcnJheUJ1ZmZlciwgTm9kZVJlc3VsdEpTKSBcCiAg
ICAgbWFjcm8oTmV3VHlwZWRBcnJheSwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkg
XAogICAgIG1hY3JvKE5ld1JlZ2V4cCwgTm9kZVJlc3VsdEpTKSBcCisgICAgbWFjcm8oTmV3R2Vu
ZXJhdG9yRnJhbWUsIE5vZGVSZXN1bHRKUykgXAogICAgIC8qIFJlc3QgUGFyYW1ldGVyICovXAog
ICAgIG1hY3JvKEdldFJlc3RMZW5ndGgsIE5vZGVSZXN1bHRJbnQzMikgXAogICAgIG1hY3JvKENv
cHlSZXN0LCBOb2RlTXVzdEdlbmVyYXRlKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPcGVyYXRpb25zLmNwcAppbmRleCAyZmQ1ZGJkYzdmYzRjY2E4NmZhZTEwOTIyN2FjMTc1N2Zk
Y2RmOTZjLi5iYzM1NjYxM2QzZjUyMTgwODIzOGU1MjY4MTM1YWFiMDliZTY3ZjBlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKQEAgLTQxLDggKzQxLDkg
QEAKICNpbmNsdWRlICJEaXJlY3RBcmd1bWVudHMuaCIKICNpbmNsdWRlICJGVExGb3JPU1JFbnRy
eUpJVENvZGUuaCIKICNpbmNsdWRlICJGVExPU1JFbnRyeS5oIgotI2luY2x1ZGUgIkhvc3RDYWxs
UmV0dXJuVmFsdWUuaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JGcmFtZS5oIgogI2luY2x1ZGUgIkdl
dHRlclNldHRlci5oIgorI2luY2x1ZGUgIkhvc3RDYWxsUmV0dXJuVmFsdWUuaCIKICNpbmNsdWRl
ICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUgIkpJVEV4Y2VwdGlv
bnMuaCIKQEAgLTgxNyw2ICs4MTgsMTEgQEAgY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25O
ZXdGbG9hdDY0QXJyYXlXaXRoT25lQXJndW1lbnQoCiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHM8SlNG
bG9hdDY0QXJyYXk+KGV4ZWMsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBOdWxsb3B0KSk7
CiB9CiAKK2NoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3R2VuZXJhdG9yRnJhbWUoRXhl
Y1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBudW1iZXJPZkNhbGxl
ZUxvY2FscykKK3sKKyAgICByZXR1cm4gYml0d2lzZV9jYXN0PGNoYXIqPihHZW5lcmF0b3JGcmFt
ZTo6Y3JlYXRlKGV4ZWMtPnZtKCksIHN0cnVjdHVyZSwgbnVtYmVyT2ZDYWxsZWVMb2NhbHMpKTsK
K30KKwogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZUFjdGl2YXRpb25EaXJl
Y3QoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNTY29wZSogc2NvcGUs
IFN5bWJvbFRhYmxlKiB0YWJsZSwgRW5jb2RlZEpTVmFsdWUgaW5pdGlhbFZhbHVlRW5jb2RlZCkK
IHsKICAgICBKU1ZhbHVlIGluaXRpYWxWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShpbml0aWFsVmFs
dWVFbmNvZGVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3Bl
cmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKaW5k
ZXggNDA5NjI5ZmY1ZDUzYTdiZTM4N2E2MjM2NDU1ZDY4MTZhYzA4NWVjOS4uZTQ0M2JhMjgyMzcy
ZmJjY2UyYmFjNWIwOWEzNjdiZDUyYzhlNzVmMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPcGVyYXRpb25zLmgKQEAgLTgyLDYgKzgyLDcgQEAKIGNoYXIqIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uTmV3RmxvYXQzMkFycmF5V2l0aE9uZUFyZ3VtZW50KEV4ZWNTdGF0ZSosIFN0cnVj
dHVyZSosIEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7CiBjaGFyKiBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbk5ld0Zsb2F0NjRBcnJheVdpdGhTaXplKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSos
IGludDMyX3QpIFdURl9JTlRFUk5BTDsKIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3
RmxvYXQ2NEFycmF5V2l0aE9uZUFyZ3VtZW50KEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSosIEVuY29k
ZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7CitjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5l
d0dlbmVyYXRvckZyYW1lKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSosIGludDMyX3QpIFdURl9JTlRF
Uk5BTDsKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbFN0cmljdChFeGVjU3Rh
dGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFBy
b3BlcnR5LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpIFdURl9JTlRFUk5BTDsKIHZvaWQg
SklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbE5vblN0cmljdChFeGVjU3RhdGUqLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFByb3BlcnR5LCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpIFdURl9JTlRFUk5BTDsKIHZvaWQgSklUX09QRVJB
VElPTiBvcGVyYXRpb25QdXRCeVZhbENlbGxTdHJpY3QoRXhlY1N0YXRlKiwgSlNDZWxsKiwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFByb3BlcnR5LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUp
IFdURl9JTlRFUk5BTDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKaW5kZXggNTc5OThjZmUxODFhOGZj
ZjljYzY1MTQzNTFhYzU4MGI4MGU3ZmI4YS4uMzExNDM0Y2Y0MTc5OGFkMDE0ZWY5YWQwMmNlODk1
MjE4NzlhZmU2NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVk
aWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKQEAgLTE2MCw2ICsxNjAsMjIgQEAg
Y2xhc3MgUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAg
ICAgICAgY2hhbmdlZCB8PSB2YXJpYWJsZUFjY2Vzc0RhdGEtPnByZWRpY3Qobm9kZS0+Y2hpbGQx
KCktPnByZWRpY3Rpb24oKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorCisgICAg
ICAgIGNhc2UgU2V0R2VuZXJhdG9yTG9jYWw6IHsKKyAgICAgICAgICAgIFZhcmlhYmxlQWNjZXNz
RGF0YSogdmFyaWFibGVBY2Nlc3NEYXRhID0gbm9kZS0+c2F2ZWRWYXJpYWJsZUFjY2Vzc0RhdGEo
KTsKKyAgICAgICAgICAgIGNoYW5nZWQgfD0gdmFyaWFibGVBY2Nlc3NEYXRhLT5wcmVkaWN0KG5v
ZGUtPmNoaWxkMigpLT5wcmVkaWN0aW9uKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KKworICAgICAgICBjYXNlIEdldEdlbmVyYXRvckxvY2FsOiB7CisgICAgICAgICAgICBWYXJp
YWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxlID0gbm9kZS0+c2F2ZWRWYXJpYWJsZUFjY2Vzc0RhdGEo
KTsKKyAgICAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24gPSB2YXJpYWJsZS0+cHJl
ZGljdGlvbigpOworICAgICAgICAgICAgaWYgKCF2YXJpYWJsZS0+Y291bGRSZXByZXNlbnRJbnQ1
MigpICYmIChwcmVkaWN0aW9uICYgU3BlY0ludDUyKSkKKyAgICAgICAgICAgICAgICBwcmVkaWN0
aW9uID0gKHByZWRpY3Rpb24gfCBTcGVjSW50NTJBc0RvdWJsZSkgJiB+U3BlY0ludDUyOworICAg
ICAgICAgICAgaWYgKHByZWRpY3Rpb24pCisgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJn
ZVByZWRpY3Rpb24ocHJlZGljdGlvbik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQog
ICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgQml0QW5kOgogICAgICAgICBjYXNlIEJpdE9yOgpA
QCAtNTI0LDcgKzU0MCw4IEBAIGNsYXNzIFByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlIDogcHVi
bGljIFBoYXNlIHsKICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgTmV3UmVn
ZXhwOgotICAgICAgICBjYXNlIENyZWF0ZUFjdGl2YXRpb246IHsKKyAgICAgICAgY2FzZSBDcmVh
dGVBY3RpdmF0aW9uOgorICAgICAgICBjYXNlIE5ld0dlbmVyYXRvckZyYW1lOiB7CiAgICAgICAg
ICAgICBjaGFuZ2VkIHw9IHNldFByZWRpY3Rpb24oU3BlY09iamVjdE90aGVyKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CkBAIC03MTYsNiArNzMzLDcgQEAgY2xhc3MgUHJlZGljdGlv
blByb3BhZ2F0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICBjYXNlIEV4aXRPSzoK
ICAgICAgICAgY2FzZSBMb2FkVmFyYXJnczoKICAgICAgICAgY2FzZSBDb3B5UmVzdDoKKyAgICAg
ICAgY2FzZSBQdXRHZW5lcmF0b3JGcmFtZUxvY2FsczoKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgCiAgICAgICAgIC8vIFRoaXMgZ2V0cyBpZ25vcmVkIGJlY2F1c2UgaXQgb25seSBw
cmV0ZW5kcyB0byBwcm9kdWNlIGEgdmFsdWUuCkBAIC04NzQsNiArODkyLDE2IEBAIGNsYXNzIFBy
ZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CiAKKyAgICAgICAgY2FzZSBTZXRHZW5lcmF0b3JMb2NhbDogeworICAg
ICAgICAgICAgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiA9IG5vZGUtPmNoaWxkMigpLT5wcmVk
aWN0aW9uKCk7CisgICAgICAgICAgICBpZiAoaXNEb3VibGVTcGVjdWxhdGlvbihwcmVkaWN0aW9u
KSkKKyAgICAgICAgICAgICAgICBub2RlLT5zYXZlZFZhcmlhYmxlQWNjZXNzRGF0YSgpLT52b3Rl
KFZvdGVEb3VibGUsIHdlaWdodCk7CisgICAgICAgICAgICBlbHNlIGlmICghaXNGdWxsTnVtYmVy
U3BlY3VsYXRpb24ocHJlZGljdGlvbikgfHwgaXNJbnQzMlNwZWN1bGF0aW9uKHByZWRpY3Rpb24p
IHx8IGlzTWFjaGluZUludFNwZWN1bGF0aW9uKHByZWRpY3Rpb24pKQorICAgICAgICAgICAgICAg
IG5vZGUtPnNhdmVkVmFyaWFibGVBY2Nlc3NEYXRhKCktPnZvdGUoVm90ZVZhbHVlLCB3ZWlnaHQp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworCiAgICAgICAgIGNhc2UgUHV0QnlW
YWxEaXJlY3Q6CiAgICAgICAgIGNhc2UgUHV0QnlWYWw6CiAgICAgICAgIGNhc2UgUHV0QnlWYWxB
bGlhczogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9F
eGVjdXRlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaApp
bmRleCAyMzBlZmVkYzQ4MzE1MTJiYWM1NjhiZWVmZGIyNzY5NjE4NzIwOTRjLi43YmRlYzNiNTNl
MjMwNDI4YmVjOWRhYzEwMzVmMGE0ZDA0ZDhhNjFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaApAQCAtMjM3LDYgKzIzNyw3IEBAIGJvb2wgc2FmZVRv
RXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3RhdGUsIEdyYXBoJiBncmFwaCwgTm9kZSogbm9k
ZSkKICAgICBjYXNlIE5ld0FycmF5V2l0aFNpemU6CiAgICAgY2FzZSBOZXdBcnJheUJ1ZmZlcjoK
ICAgICBjYXNlIE5ld1JlZ2V4cDoKKyAgICBjYXNlIE5ld0dlbmVyYXRvckZyYW1lOgogICAgIGNh
c2UgQnJlYWtwb2ludDoKICAgICBjYXNlIFByb2ZpbGVXaWxsQ2FsbDoKICAgICBjYXNlIFByb2Zp
bGVEaWRDYWxsOgpAQCAtMzI4LDYgKzMyOSw5IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFj
dFN0YXRlVHlwZSYgc3RhdGUsIEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIEdl
dE15QXJndW1lbnRCeVZhbDoKICAgICBjYXNlIEZvcndhcmRWYXJhcmdzOgogICAgIGNhc2UgQ29w
eVJlc3Q6CisgICAgY2FzZSBTZXRHZW5lcmF0b3JMb2NhbDoKKyAgICBjYXNlIEdldEdlbmVyYXRv
ckxvY2FsOgorICAgIGNhc2UgUHV0R2VuZXJhdG9yRnJhbWVMb2NhbHM6CiAgICAgICAgIHJldHVy
biB0cnVlOwogCiAgICAgY2FzZSBCb3R0b21WYWx1ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggY2NjZTc5MTk5NTE0NWU5MWVmZDIw
MDg4Yzk2YjdhZjgyYjU2MTZkNi4uMmEzNmQ4YmFiODg3MDljOGNmZDFlNjBhOWYwYWQ4MmM3YjM3
NmJmOCAxMDA3NTUKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5jcHAKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJERkdTYW5lU3RyaW5nR2V0QnlWYWxT
bG93UGF0aEdlbmVyYXRvci5oIgogI2luY2x1ZGUgIkRGR1Nsb3dQYXRoR2VuZXJhdG9yLmgiCiAj
aW5jbHVkZSAiRGlyZWN0QXJndW1lbnRzLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yRnJhbWUuaCIK
ICNpbmNsdWRlICJKSVRBZGRHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJKSVRCaXRBbmRHZW5lcmF0
b3IuaCIKICNpbmNsdWRlICJKSVRCaXRPckdlbmVyYXRvci5oIgpAQCAtNjM3OCw2ICs2Mzc5LDI5
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdTdHJpbmdPYmplY3QoTm9kZSogbm9k
ZSkKICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiB9CiAKK3ZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVOZXdHZW5lcmF0b3JGcmFtZShOb2RlKiBub2RlKQoreworICAgIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2ppdC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gZ2xvYmFs
T2JqZWN0LT5nZW5lcmF0b3JGcmFtZVN0cnVjdHVyZSgpOworCisgICAgR1BSVGVtcG9yYXJ5IHJl
c3VsdCh0aGlzKTsKKyAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaDEodGhpcyk7CisgICAgR1BSVGVt
cG9yYXJ5IHNjcmF0Y2gyKHRoaXMpOworCisgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5n
cHIoKTsKKyAgICBHUFJSZWcgc2NyYXRjaDFHUFIgPSBzY3JhdGNoMS5ncHIoKTsKKyAgICBHUFJS
ZWcgc2NyYXRjaDJHUFIgPSBzY3JhdGNoMi5ncHIoKTsKKworICAgIEpJVENvbXBpbGVyOjpKdW1w
TGlzdCBzbG93UGF0aDsKKworICAgIGVtaXRBbGxvY2F0ZUpTT2JqZWN0V2l0aEtub3duU2l6ZTxH
ZW5lcmF0b3JGcmFtZT4ocmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksIFRydXN0
ZWRJbW1QdHIobnVsbHB0ciksIHNjcmF0Y2gxR1BSLCBzY3JhdGNoMkdQUiwgc2xvd1BhdGgsIEdl
bmVyYXRvckZyYW1lOjphbGxvY2F0aW9uU2l6ZUZvckxvY2Fscyhub2RlLT5nZW5lcmF0b3JGcmFt
ZVNpemUoKSkpOworICAgIG1faml0LnN0b3JlMzIoVHJ1c3RlZEltbTMyKDApLCBKSVRDb21waWxl
cjo6QWRkcmVzcyhyZXN1bHRHUFIsIEdlbmVyYXRvckZyYW1lOjpudW1iZXJPZlNhdmVkQ2FsbGVl
TG9jYWxzT2Zmc2V0KCkpKTsKKworICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2Fs
bChzbG93UGF0aCwgdGhpcywgb3BlcmF0aW9uTmV3R2VuZXJhdG9yRnJhbWUsIHJlc3VsdEdQUiwg
c3RydWN0dXJlLCBub2RlLT5nZW5lcmF0b3JGcmFtZVNpemUoKSkpOworCisgICAgY2VsbFJlc3Vs
dChyZXN1bHRHUFIsIG5vZGUpOworfQorCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3
VHlwZWRBcnJheShOb2RlKiBub2RlKQogewogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QgPSBtX2ppdC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCmluZGV4
IDUzMTJjOGRiZWRmZWQxODAwNTQzODExMzA3OWVlYjBiMGU5OTA4YWIuLjU3Mzk4MTU3OGYyNGY1
YjMwMjU5ZjJhYzAyNTUyZmQ0MDhmZTdhZTAgMTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKQEAgLTIyODEsNiArMjI4MSw3IEBAIGNsYXNzIFNwZWN1
bGF0aXZlSklUIHsKICAgICB2b2lkIGNvbXBpbGVQdXRCeVZhbEZvckZsb2F0VHlwZWRBcnJheShH
UFJSZWcgYmFzZSwgR1BSUmVnIHByb3BlcnR5LCBOb2RlKiwgVHlwZWRBcnJheVR5cGUpOwogICAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBDbGFzc1R5cGU+IHZvaWQgY29tcGlsZU5ld0Z1bmN0aW9uQ29t
bW9uKEdQUlJlZywgU3RydWN0dXJlKiwgR1BSUmVnLCBHUFJSZWcsIEdQUlJlZywgTWFjcm9Bc3Nl
bWJsZXI6Okp1bXBMaXN0Jiwgc2l6ZV90LCBGdW5jdGlvbkV4ZWN1dGFibGUqLCBwdHJkaWZmX3Qs
IHB0cmRpZmZfdCwgcHRyZGlmZl90KTsKICAgICB2b2lkIGNvbXBpbGVOZXdGdW5jdGlvbihOb2Rl
Kik7CisgICAgdm9pZCBjb21waWxlTmV3R2VuZXJhdG9yRnJhbWUoTm9kZSopOwogICAgIHZvaWQg
Y29tcGlsZUZvcndhcmRWYXJhcmdzKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVDcmVhdGVBY3Rp
dmF0aW9uKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVDcmVhdGVEaXJlY3RBcmd1bWVudHMoTm9k
ZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVDMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQzMl82NC5jcHAKaW5kZXggMTJlYjUwNDExODBhYzJmNTAxNjRmOTUxYjA1OGVkYjYyZDIyODI3
MC4uMzEwM2FkNTlmZjIwNDFhNzRkMTJlYThiODNhYzE3NzMzZWY3YzZlOSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCkBA
IC0zNjUwLDYgKzM2NTAsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBu
b2RlKQogICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdFBheWxvYWQuZ3ByKCksIG5vZGUpOwogICAg
ICAgICBicmVhazsKICAgICB9CisKKyAgICBjYXNlIE5ld0dlbmVyYXRvckZyYW1lOiB7CisgICAg
ICAgIGNvbXBpbGVOZXdHZW5lcmF0b3JGcmFtZShub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAg
fQogICAgICAgICAKICAgICBjYXNlIFRvVGhpczogewogICAgICAgICBBU1NFUlQobm9kZS0+Y2hp
bGQxKCkudXNlS2luZCgpID09IFVudHlwZWRVc2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKaW5kZXggZTc0NTY5NDA0YzFiOTc4NDgw
NjE5N2QxNDU0NWNkMWRiMjNkN2E1Yy4uODk0MDJmMWUzNjgyMzk4NzgwNTE5NzQ2ZDRiYTcxZjQ2
ZDFlN2YwOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVDY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklUNjQuY3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiREZHU2xvd1BhdGhHZW5l
cmF0b3IuaCIKICNpbmNsdWRlICJEZWJ1Z2dlci5oIgogI2luY2x1ZGUgIkRpcmVjdEFyZ3VtZW50
cy5oIgorI2luY2x1ZGUgIkdlbmVyYXRvckZyYW1lLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVy
LmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTRW52aXJvbm1lbnRSZWNv
cmQuaCIKQEAgLTM2ODgsNiArMzY4OSwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
KE5vZGUqIG5vZGUpCiAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0LmdwcigpLCBub2RlKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgfQorCisgICAgY2FzZSBOZXdHZW5lcmF0b3JGcmFtZTogeworICAg
ICAgICBjb21waWxlTmV3R2VuZXJhdG9yRnJhbWUobm9kZSk7CisgICAgICAgIGJyZWFrOworICAg
IH0KICAgICAgICAgCiAgICAgY2FzZSBUb1RoaXM6IHsKICAgICAgICAgQVNTRVJUKG5vZGUtPmNo
aWxkMSgpLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKTsKQEAgLTQ3MjAsNiArNDcyNiwzOCBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGNlbGxSZXN1
bHQocmVzdWx0R1BSLCBub2RlKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQorICAgIGNhc2UgU2V0
R2VuZXJhdG9yTG9jYWw6IHsKKyAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgZnJhbWUodGhp
cywgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBu
b2RlLT5jaGlsZDIoKSk7CisKKyAgICAgICAgR1BSUmVnIGZyYW1lR1BSID0gZnJhbWUuZ3ByKCk7
CisgICAgICAgIEdQUlJlZyB2YWx1ZUdQUiA9IHZhbHVlLmdwcigpOworICAgICAgICB1bnNpZ25l
ZCBnZW5lcmF0b3JGcmFtZUluZGV4ID0gbm9kZS0+Z2VuZXJhdG9yRnJhbWVJbmRleCgpOworCisg
ICAgICAgIG1faml0LnN0b3JlNjQodmFsdWVHUFIsIEpJVENvbXBpbGVyOjpBZGRyZXNzKGZyYW1l
R1BSLCBHZW5lcmF0b3JGcmFtZTo6bG9jYWxPZmZzZXQoZ2VuZXJhdG9yRnJhbWVJbmRleCkpKTsK
KworICAgICAgICBub1Jlc3VsdChub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNh
c2UgR2V0R2VuZXJhdG9yTG9jYWw6IHsKKyAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgZnJh
bWUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRo
aXMpOworCisgICAgICAgIEdQUlJlZyBmcmFtZUdQUiA9IGZyYW1lLmdwcigpOworICAgICAgICBH
UFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOworICAgICAgICB1bnNpZ25lZCBnZW5lcmF0
b3JGcmFtZUluZGV4ID0gbm9kZS0+Z2VuZXJhdG9yRnJhbWVJbmRleCgpOworCisgICAgICAgIG1f
aml0LmxvYWQ2NChKSVRDb21waWxlcjo6QWRkcmVzcyhmcmFtZUdQUiwgR2VuZXJhdG9yRnJhbWU6
OmxvY2FsT2Zmc2V0KGdlbmVyYXRvckZyYW1lSW5kZXgpKSwgcmVzdWx0R1BSKTsKKyAgICAgICAg
anNWYWx1ZVJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9Cisg
ICAgY2FzZSBQdXRHZW5lcmF0b3JGcmFtZUxvY2FsczogeworICAgICAgICBTcGVjdWxhdGVDZWxs
T3BlcmFuZCBmcmFtZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIEdQUlJlZyBmcmFt
ZUdQUiA9IGZyYW1lLmdwcigpOworICAgICAgICBtX2ppdC5zdG9yZTMyKFRydXN0ZWRJbW0zMihu
b2RlLT5nZW5lcmF0b3JGcmFtZUxvY2FscygpKSwgSklUQ29tcGlsZXI6OkFkZHJlc3MoZnJhbWVH
UFIsIEdlbmVyYXRvckZyYW1lOjpudW1iZXJPZlNhdmVkQ2FsbGVlTG9jYWxzT2Zmc2V0KCkpKTsK
KyAgICAgICAgbm9SZXN1bHQobm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICBjYXNl
IFByb2ZpbGVUeXBlOiB7CiAgICAgICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUt
PmNoaWxkMSgpKTsKICAgICAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2gxKHRoaXMpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25Q
aGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0b3JlQmFycmllckluc2Vy
dGlvblBoYXNlLmNwcAppbmRleCA3MmYyMjAwY2VhMTBiOTgxMGRiYThjN2IxOWZlZmYyNGRhYTVk
YWUzLi5kN2M3MDU2NmZjNzM3Zjg5MGYxNTZiNTM0NTA5ZDlhMGMwNzM4ZTliIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0b3JlQmFycmllckluc2Vy
dGlvblBoYXNlLmNwcApAQCAtMjgxLDYgKzI4MSwxMSBAQCBjbGFzcyBTdG9yZUJhcnJpZXJJbnNl
cnRpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICAgICAgY29uc2lkZXJCYXJy
aWVyKG1fbm9kZS0+Y2hpbGQxKCksIG1fbm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgfQorCisgICAgICAgICAgICBjYXNlIFNldEdlbmVyYXRvckxv
Y2FsOiB7CisgICAgICAgICAgICAgICAgY29uc2lkZXJCYXJyaWVyKG1fbm9kZS0+Y2hpbGQxKCks
IG1fbm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAg
ICBicmVhazsKQEAgLTI5Niw2ICszMDEsNyBAQCBjbGFzcyBTdG9yZUJhcnJpZXJJbnNlcnRpb25Q
aGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICBjYXNlIE5ld0FycmF5QnVmZmVyOgog
ICAgICAgICAgICAgY2FzZSBOZXdUeXBlZEFycmF5OgogICAgICAgICAgICAgY2FzZSBOZXdSZWdl
eHA6CisgICAgICAgICAgICBjYXNlIE5ld0dlbmVyYXRvckZyYW1lOgogICAgICAgICAgICAgY2Fz
ZSBNYXRlcmlhbGl6ZU5ld09iamVjdDoKICAgICAgICAgICAgIGNhc2UgTWF0ZXJpYWxpemVDcmVh
dGVBY3RpdmF0aW9uOgogICAgICAgICAgICAgY2FzZSBOZXdTdHJpbmdPYmplY3Q6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBo
YXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RydWN0dXJlUmVnaXN0cmF0
aW9uUGhhc2UuY3BwCmluZGV4IDJjMDU1OTg0OTg5OWJkZjZmYjExMTc1OTdlMTA1NGJmZjM1NDY2
OTMuLmUxYWVmMGIyYzM5M2Y1NjE5NDhjY2E1YTk1OWYyZTA3MTA4ODQzODggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2Uu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RydWN0dXJlUmVnaXN0cmF0
aW9uUGhhc2UuY3BwCkBAIC0xNDksNiArMTQ5LDkgQEAgY2xhc3MgU3RydWN0dXJlUmVnaXN0cmF0
aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgICAgIGNhc2UgTmV3R2VuZXJh
dG9yRnVuY3Rpb246CiAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyU3RydWN0dXJlKG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyktPmdlbmVyYXRvckZ1bmN0
aW9uU3RydWN0dXJlKCkpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgICBjYXNlIE5ld0dlbmVyYXRvckZyYW1lOgorICAgICAgICAgICAgICAgICAgICByZWdpc3Rl
clN0cnVjdHVyZShtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMp
LT5nZW5lcmF0b3JGcmFtZVN0cnVjdHVyZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAKaW5kZXggOTdjMDc4NGJiNDJiYzkxOWQw
NmNmNTIzYzQxZTAyNDZhNTM1MWQ5MS4uNjlkODlkNmFkNDI1NDkyM2JjM2ZhYjNjN2FjYTIwODk1
YzU1ZTVjYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFj
dEhlYXBSZXBvc2l0b3J5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFi
c3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJE
aXJlY3RBcmd1bWVudHMuaCIKICNpbmNsdWRlICJGVExBYmJyZXZpYXRpb25zLmgiCisjaW5jbHVk
ZSAiR2VuZXJhdG9yRnJhbWUuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRl
ICJKU0Vudmlyb25tZW50UmVjb3JkLmgiCiAjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVFbnVtZXJh
dG9yLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0
SGVhcFJlcG9zaXRvcnkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RI
ZWFwUmVwb3NpdG9yeS5oCmluZGV4IDc3ZTU3OTg2OTQwYzZhYzk2Zjg3ZjFmOTQ1YzQ2MjUxMjg4
NjMwZjAuLmEzNjIxYTQxNTdlZTcyMzZlZjU2NmNmZWFmMDQyODRiYTIxNzMyOTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9y
eS5oCkBAIC00Nyw2ICs0Nyw3IEBACiAgICAgbWFjcm8oRGlyZWN0QXJndW1lbnRzX2xlbmd0aCwg
RGlyZWN0QXJndW1lbnRzOjpvZmZzZXRPZkxlbmd0aCgpKSBcCiAgICAgbWFjcm8oRGlyZWN0QXJn
dW1lbnRzX21pbkNhcGFjaXR5LCBEaXJlY3RBcmd1bWVudHM6Om9mZnNldE9mTWluQ2FwYWNpdHko
KSkgXAogICAgIG1hY3JvKERpcmVjdEFyZ3VtZW50c19vdmVycmlkZXMsIERpcmVjdEFyZ3VtZW50
czo6b2Zmc2V0T2ZPdmVycmlkZXMoKSkgXAorICAgIG1hY3JvKEdlbmVyYXRvckZyYW1lX251bWJl
ck9mU2F2ZWRDYWxsZWVMb2NhbHMsIEdlbmVyYXRvckZyYW1lOjpudW1iZXJPZlNhdmVkQ2FsbGVl
TG9jYWxzT2Zmc2V0KCkpIFwKICAgICBtYWNybyhHZXR0ZXJTZXR0ZXJfZ2V0dGVyLCBHZXR0ZXJT
ZXR0ZXI6Om9mZnNldE9mR2V0dGVyKCkpIFwKICAgICBtYWNybyhHZXR0ZXJTZXR0ZXJfc2V0dGVy
LCBHZXR0ZXJTZXR0ZXI6Om9mZnNldE9mU2V0dGVyKCkpIFwKICAgICBtYWNybyhKU0FycmF5QnVm
ZmVyVmlld19sZW5ndGgsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSBcCkBA
IC05MSw2ICs5Miw3IEBACiAKICNkZWZpbmUgRk9SX0VBQ0hfSU5ERVhFRF9BQlNUUkFDVF9IRUFQ
KG1hY3JvKSBcCiAgICAgbWFjcm8oRGlyZWN0QXJndW1lbnRzX3N0b3JhZ2UsIERpcmVjdEFyZ3Vt
ZW50czo6c3RvcmFnZU9mZnNldCgpLCBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKSBcCisgICAgbWFj
cm8oR2VuZXJhdG9yRnJhbWVfY2FsbGVlTG9jYWxzLCBHZW5lcmF0b3JGcmFtZTo6b2Zmc2V0T2ZM
b2NhbHMoKSwgc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPikpIFwKICAgICBtYWNybyhKU0Vu
dmlyb25tZW50UmVjb3JkX3ZhcmlhYmxlcywgSlNFbnZpcm9ubWVudFJlY29yZDo6b2Zmc2V0T2ZW
YXJpYWJsZXMoKSwgc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSkgXAogICAgIG1hY3JvKEpTUHJvcGVy
dHlOYW1lRW51bWVyYXRvcl9jYWNoZWRQcm9wZXJ0eU5hbWVzVmVjdG9yQ29udGVudHMsIDAsIHNp
emVvZihXcml0ZUJhcnJpZXI8SlNTdHJpbmc+KSkgXAogICAgIG1hY3JvKEpTUm9wZVN0cmluZ19m
aWJlcnMsIEpTUm9wZVN0cmluZzo6b2Zmc2V0T2ZGaWJlcnMoKSwgc2l6ZW9mKFdyaXRlQmFycmll
cjxKU1N0cmluZz4pKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TENhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxp
dGllcy5jcHAKaW5kZXggZDJhNDkwYzJhNjdlNmRiOGI5YTVhNzk2NjRlNTY1ZTNkNmQ5NTFkYy4u
MTdiNGUyZGI1ZjZhMWNjMDAzZjg4MGM3ZWE0YzYwMGFiOGFjODY3OCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcApAQCAtNzIsNiArNzIsNyBAQCBp
bmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIE5l
d09iamVjdDoKICAgICBjYXNlIE5ld0FycmF5OgogICAgIGNhc2UgTmV3QXJyYXlCdWZmZXI6Cisg
ICAgY2FzZSBOZXdHZW5lcmF0b3JGcmFtZToKICAgICBjYXNlIEdldEJ5T2Zmc2V0OgogICAgIGNh
c2UgR2V0R2V0dGVyU2V0dGVyQnlPZmZzZXQ6CiAgICAgY2FzZSBHZXRHZXR0ZXI6CkBAIC0yMTYs
NiArMjE3LDkgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5vZGUp
CiAgICAgY2FzZSBQdXRTZXR0ZXJCeVZhbDoKICAgICBjYXNlIENvcHlSZXN0OgogICAgIGNhc2Ug
R2V0UmVzdExlbmd0aDoKKyAgICBjYXNlIFNldEdlbmVyYXRvckxvY2FsOgorICAgIGNhc2UgR2V0
R2VuZXJhdG9yTG9jYWw6CisgICAgY2FzZSBQdXRHZW5lcmF0b3JGcmFtZUxvY2FsczoKICAgICAg
ICAgLy8gVGhlc2UgYXJlIE9LLgogICAgICAgICBicmVhazsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcAppbmRleCAzN2NhZTVjMTdhZDljNzFk
MDE4ZDQxYmI2ZTlhNjZjOTE3Nzk2NmYyLi44N2M2YzM5ZDI5YzliNjIzMmQ1MzkyNzBiNmZiYzZm
ZTgwYjcwZjcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2Vy
REZHVG9MTFZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZH
VG9MTFZNLmNwcApAQCAtNTMsNiArNTMsNyBAQAogI2luY2x1ZGUgIkZUTFBhdGNocG9pbnRFeGNl
cHRpb25IYW5kbGUuaCIKICNpbmNsdWRlICJGVExUaHVua3MuaCIKICNpbmNsdWRlICJGVExXZWln
aHRlZFRhcmdldC5oIgorI2luY2x1ZGUgIkdlbmVyYXRvckZyYW1lLmgiCiAjaW5jbHVkZSAiSklU
QWRkR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiSklUQml0QW5kR2VuZXJhdG9yLmgiCiAjaW5jbHVk
ZSAiSklUQml0T3JHZW5lcmF0b3IuaCIKQEAgLTgzOSw2ICs4NDAsOSBAQCBjbGFzcyBMb3dlckRG
R1RvTExWTSB7CiAgICAgICAgIGNhc2UgTmV3QXJyYXlXaXRoU2l6ZToKICAgICAgICAgICAgIGNv
bXBpbGVOZXdBcnJheVdpdGhTaXplKCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBOZXdHZW5lcmF0b3JGcmFtZToKKyAgICAgICAgICAgIGNvbXBpbGVOZXdHZW5lcmF0b3JGcmFt
ZSgpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVP
ZmZzZXQ6CiAgICAgICAgICAgICBjb21waWxlR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQoKTsKICAg
ICAgICAgICAgIGJyZWFrOwpAQCAtMTA3MSw2ICsxMDc1LDE1IEBAIGNsYXNzIExvd2VyREZHVG9M
TFZNIHsKICAgICAgICAgY2FzZSBHZXRSZXN0TGVuZ3RoOgogICAgICAgICAgICAgY29tcGlsZUdl
dFJlc3RMZW5ndGgoKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFB1dEdlbmVy
YXRvckZyYW1lTG9jYWxzOgorICAgICAgICAgICAgY29tcGlsZVB1dEdlbmVyYXRvckZyYW1lTG9j
YWxzKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTZXRHZW5lcmF0b3JMb2Nh
bDoKKyAgICAgICAgICAgIGNvbXBpbGVTZXRHZW5lcmF0b3JMb2NhbCgpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgR2V0R2VuZXJhdG9yTG9jYWw6CisgICAgICAgICAgICBjb21w
aWxlR2V0R2VuZXJhdG9yTG9jYWwoKTsKKyAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNh
c2UgUGhhbnRvbUxvY2FsOgogICAgICAgICBjYXNlIExvb3BIaW50OgpAQCAtMzkxNiw2ICszOTI5
LDI4IEBAIGNsYXNzIExvd2VyREZHVG9MTFZNIHsKICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29u
dGludWF0aW9uLCBsYXN0TmV4dCk7CiAgICAgICAgIHNldEludDMyKG1fb3V0LnBoaShtX291dC5p
bnQzMiwgemVyb0xlbmd0aFJlc3VsdCwgbm9uWmVyb0xlbmd0aFJlc3VsdCkpOwogICAgIH0KKwor
ICAgIHZvaWQgY29tcGlsZVB1dEdlbmVyYXRvckZyYW1lTG9jYWxzKCkKKyAgICB7CisgICAgICAg
IExWYWx1ZSBmcmFtZSA9IGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIG1fb3V0
LnN0b3JlMzIobV9vdXQuY29uc3RJbnQzMihtX25vZGUtPmdlbmVyYXRvckZyYW1lTG9jYWxzKCkp
LCBmcmFtZSwgbV9oZWFwcy5HZW5lcmF0b3JGcmFtZV9udW1iZXJPZlNhdmVkQ2FsbGVlTG9jYWxz
KTsKKyAgICB9CisKKyAgICB2b2lkIGNvbXBpbGVTZXRHZW5lcmF0b3JMb2NhbCgpCisgICAgewor
ICAgICAgICBtX291dC5zdG9yZTY0KAorICAgICAgICAgICAgbG93SlNWYWx1ZShtX25vZGUtPmNo
aWxkMigpKSwKKyAgICAgICAgICAgIGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSksCisgICAgICAg
ICAgICBtX2hlYXBzLkdlbmVyYXRvckZyYW1lX2NhbGxlZUxvY2Fsc1ttX25vZGUtPmdlbmVyYXRv
ckZyYW1lSW5kZXgoKV0pOworICAgIH0KKworICAgIHZvaWQgY29tcGlsZUdldEdlbmVyYXRvckxv
Y2FsKCkKKyAgICB7CisgICAgICAgIHNldEpTVmFsdWUoCisgICAgICAgICAgICBtX291dC5sb2Fk
NjQoCisgICAgICAgICAgICAgICAgbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKSwKKyAgICAgICAg
ICAgICAgICBtX2hlYXBzLkdlbmVyYXRvckZyYW1lX2NhbGxlZUxvY2Fsc1ttX25vZGUtPmdlbmVy
YXRvckZyYW1lSW5kZXgoKV0pKTsKKyAgICB9CiAgICAgCiAgICAgdm9pZCBjb21waWxlTmV3T2Jq
ZWN0KCkKICAgICB7CkBAIC00MTUwLDYgKzQxODUsMzYgQEAgY2xhc3MgTG93ZXJERkdUb0xMVk0g
ewogICAgICAgICAgICAgbV9vdXQuY29uc3RJbnRQdHIoc3RydWN0dXJlKSk7CiAgICAgICAgIHNl
dEpTVmFsdWUodm1DYWxsKG1fb3V0LmludDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uTmV3
QXJyYXlXaXRoU2l6ZSksIG1fY2FsbEZyYW1lLCBzdHJ1Y3R1cmVWYWx1ZSwgcHVibGljTGVuZ3Ro
KSk7CiAgICAgfQorCisgICAgdm9pZCBjb21waWxlTmV3R2VuZXJhdG9yRnJhbWUoKQorICAgIHsK
KyAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUgPSBnbG9iYWxPYmplY3QtPmdlbmVyYXRvckZyYW1lU3RydWN0dXJlKCk7CisKKyAgICAg
ICAgTEJhc2ljQmxvY2sgc2xvd1BhdGggPSBGVExfTkVXX0JMT0NLKG1fb3V0LCAoIk5ld0dlbmVy
YXRvckZyYW1lIHNsb3cgcGF0aCIpKTsKKyAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9u
ID0gRlRMX05FV19CTE9DSyhtX291dCwgKCJOZXdHZW5lcmF0b3JGcmFtZSBjb250aW51YXRpb24i
KSk7CisKKyAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5pbnNlcnROZXdCbG9j
a3NCZWZvcmUoc2xvd1BhdGgpOworICAgICAgICBMVmFsdWUgZmFzdE9iamVjdCA9IGFsbG9jYXRl
T2JqZWN0PEdlbmVyYXRvckZyYW1lPihHZW5lcmF0b3JGcmFtZTo6YWxsb2NhdGlvblNpemVGb3JM
b2NhbHMobV9ub2RlLT5nZW5lcmF0b3JGcmFtZVNpemUoKSksIHN0cnVjdHVyZSwgbV9vdXQuaW50
UHRyWmVybywgc2xvd1BhdGgpOworICAgICAgICBtX291dC5zdG9yZTMyKG1fb3V0LmNvbnN0SW50
MzIoMCksIGZhc3RPYmplY3QsIG1faGVhcHMuR2VuZXJhdG9yRnJhbWVfbnVtYmVyT2ZTYXZlZENh
bGxlZUxvY2Fscyk7CisgICAgICAgIFZhbHVlRnJvbUJsb2NrIGZhc3RSZXN1bHQgPSBtX291dC5h
bmNob3IoZmFzdE9iamVjdCk7CisgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKwor
ICAgICAgICBtX291dC5hcHBlbmRUbyhzbG93UGF0aCwgY29udGludWF0aW9uKTsKKyAgICAgICAg
VmVjdG9yPExWYWx1ZT4gc2xvd1BhdGhBcmd1bWVudHM7CisgICAgICAgIHVuc2lnbmVkIGdlbmVy
YXRvckZyYW1lU2l6ZSA9IG1fbm9kZS0+Z2VuZXJhdG9yRnJhbWVTaXplKCk7CisgICAgICAgIExW
YWx1ZSBjYWxsUmVzdWx0ID0gbGF6eVNsb3dQYXRoKAorICAgICAgICAgICAgWz1dIChjb25zdCBW
ZWN0b3I8TG9jYXRpb24+JiBsb2NhdGlvbnMpIC0+IFJlZlB0cjxMYXp5U2xvd1BhdGg6OkdlbmVy
YXRvcj4geworICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVMYXp5Q2FsbEdlbmVyYXRvcigK
KyAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uTmV3R2VuZXJhdG9yRnJhbWUsCisgICAgICAg
ICAgICAgICAgICAgIGxvY2F0aW9uc1swXS5kaXJlY3RHUFIoKSwgQ0NhbGxIZWxwZXJzOjpUcnVz
dGVkSW1tUHRyKHN0cnVjdHVyZSksIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKGdlbmVyYXRv
ckZyYW1lU2l6ZSkpOworICAgICAgICAgICAgfSk7CisgICAgICAgIFZhbHVlRnJvbUJsb2NrIHNs
b3dSZXN1bHQgPSBtX291dC5hbmNob3IoY2FsbFJlc3VsdCk7CisgICAgICAgIG1fb3V0Lmp1bXAo
Y29udGludWF0aW9uKTsKKworICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxh
c3ROZXh0KTsKKyAgICAgICAgc2V0SlNWYWx1ZShtX291dC5waGkobV9vdXQuaW50UHRyLCBmYXN0
UmVzdWx0LCBzbG93UmVzdWx0KSk7CisgICAgfQogICAgIAogICAgIHZvaWQgY29tcGlsZUFsbG9j
YXRlUHJvcGVydHlTdG9yYWdlKCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKaW5k
ZXggYTNiZGZhN2NkNWQwZjU3MjQ3ZjFiZThjNDBiMjUxMGQyOWQ4MDBmZi4uMGI5ZmQ4ZDM0M2Zk
OGNlYjI3YWFmN2EzOTQwMDcwNDY0NzRjMjY4YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNw
cApAQCAtMjE2LDcgKzIxNiw5IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkK
ICAgICAgICAgREVGSU5FX09QKG9wX2NoZWNrX3RkeikKICAgICAgICAgREVGSU5FX09QKG9wX2Fz
c2VydCkKICAgICAgICAgREVGSU5FX09QKG9wX3NhdmUpCi0gICAgICAgIERFRklORV9PUChvcF9y
ZXN1bWUpCisgICAgICAgIERFRklORV9PUChvcF9uZXdfZ2VuZXJhdG9yX2ZyYW1lKQorICAgICAg
ICBERUZJTkVfT1Aob3BfcmVzdW1lX2Zyb21fZ2VuZXJhdG9yX2ZyYW1lKQorICAgICAgICBERUZJ
TkVfT1Aob3BfY2xlYXJfZ2VuZXJhdG9yX2ZyYW1lKQogICAgICAgICBERUZJTkVfT1Aob3BfZGVi
dWcpCiAgICAgICAgIERFRklORV9PUChvcF9kZWxfYnlfaWQpCiAgICAgICAgIERFRklORV9PUChv
cF9kaXYpCkBAIC0yODksNiArMjkxLDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBh
c3MoKQogICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2dldHRlcl9zZXR0ZXJfYnlfaWQpCiAgICAg
ICAgIERFRklORV9PUChvcF9wdXRfZ2V0dGVyX2J5X3ZhbCkKICAgICAgICAgREVGSU5FX09QKG9w
X3B1dF9zZXR0ZXJfYnlfdmFsKQorICAgICAgICBERUZJTkVfT1Aob3Bfbm9wKQogCiAgICAgICAg
IERFRklORV9PUChvcF9yZXQpCiAgICAgICAgIERFRklORV9PUChvcF9yc2hpZnQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVQuaAppbmRleCBkZjdiM2RjNWU4OTIwZWU0ZWY5MmJjYWNiYWVmZjFiNGMwMGQ5
MzY5Li5lYzY4MWQwOTkwZWYwYzJhMWIwYzQxZDU0MTJiYmNlMGMwZDM5MWRlIDEwMDc1NQotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklULmgKQEAgLTQ5NSw3ICs0OTUsOSBAQAogICAgICAgICB2b2lkIGVtaXRfb3Bf
Y2hlY2tfdGR6KEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9hc3NlcnQoSW5z
dHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX3NhdmUoSW5zdHJ1Y3Rpb24qKTsKLSAg
ICAgICAgdm9pZCBlbWl0X29wX3Jlc3VtZShJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVt
aXRfb3BfcmVzdW1lX2Zyb21fZ2VuZXJhdG9yX2ZyYW1lKEluc3RydWN0aW9uKik7CisgICAgICAg
IHZvaWQgZW1pdF9vcF9jbGVhcl9nZW5lcmF0b3JfZnJhbWUoSW5zdHJ1Y3Rpb24qKTsKKyAgICAg
ICAgdm9pZCBlbWl0X29wX25ld19nZW5lcmF0b3JfZnJhbWUoSW5zdHJ1Y3Rpb24qKTsKICAgICAg
ICAgdm9pZCBlbWl0X29wX2RlYnVnKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9v
cF9kZWxfYnlfaWQoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2RpdihJbnN0
cnVjdGlvbiopOwpAQCAtNTk1LDYgKzU5Nyw3IEBACiAgICAgICAgIHZvaWQgZW1pdF9vcF9lbnVt
ZXJhdG9yX3N0cnVjdHVyZV9wbmFtZShJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRf
b3BfZW51bWVyYXRvcl9nZW5lcmljX3BuYW1lKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQg
ZW1pdF9vcF90b19pbmRleF9zdHJpbmcoSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0
X29wX25vcChJbnN0cnVjdGlvbiopOwogCiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfYWRkKElu
c3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogICAgICAgICB2
b2lkIGVtaXRTbG93X29wX2JpdGFuZChJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5
Pjo6aXRlcmF0b3ImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3Bjb2Rlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCmlu
ZGV4IDczOGNiNjNmZWQ5MWI0OTg1NWQ1ZDAzM2Q0NjMzNDVmZGQ0NzZkOWIuLjRhNmE4OGM4NGY1
NzVmMTRiYWI2MDM5MzkwZjQ2ODE5NGVmNzM3MjYgMTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGNvZGVzLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkNvcGllZFNwYWNl
SW5saW5lcy5oIgogI2luY2x1ZGUgIkRlYnVnZ2VyLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uLmgi
CisjaW5jbHVkZSAiR2VuZXJhdG9yRnJhbWUuaCIKICNpbmNsdWRlICJIZWFwLmgiCiAjaW5jbHVk
ZSAiSklUSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKQEAgLTg5Myw2ICs4OTQsMjMg
QEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3RvX3N0cmluZyhJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2UKICAgICBzbG93UGF0aENhbGwuY2FsbCgpOwogfQog
Cit2b2lkIEpJVDo6ZW1pdF9vcF9yZXN1bWVfZnJvbV9nZW5lcmF0b3JfZnJhbWUoSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBpbnQgZHN0ID0gY3VycmVudEluc3RydWN0
aW9uWzFdLnUub3BlcmFuZDsKKyAgICBpbnQgZnJhbWUgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0u
dS5vcGVyYW5kOworICAgIHVuc2lnbmVkIGluZGV4ID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUu
dW5zaWduZWRWYWx1ZTsKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGZyYW1lLCByZWdUMSk7
CisgICAgbG9hZDY0KEFkZHJlc3MocmVnVDEsIEdlbmVyYXRvckZyYW1lOjpsb2NhbE9mZnNldChp
bmRleCkpLCByZWdUMCk7CisgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QpOworfQorCit2
b2lkIEpJVDo6ZW1pdF9vcF9jbGVhcl9nZW5lcmF0b3JfZnJhbWUoSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKK3sKKyAgICBpbnQgZnJhbWUgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0u
dS5vcGVyYW5kOworICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoZnJhbWUsIHJlZ1QxKTsKKyAg
ICBzdG9yZTMyKFRydXN0ZWRJbW0zMigwKSwgQWRkcmVzcyhyZWdUMSwgR2VuZXJhdG9yRnJhbWU6
Om51bWJlck9mU2F2ZWRDYWxsZWVMb2NhbHNPZmZzZXQoKSkpOworfQorCiAjZW5kaWYgLy8gVVNF
KEpTVkFMVUU2NCkKIAogdm9pZCBKSVQ6OmVtaXRfb3BfbG9vcF9oaW50KEluc3RydWN0aW9uKikK
QEAgLTE0MzUsMTIgKzE0NTMsMTYgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bfc2F2ZShJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQogICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CiB9CiAKLXZv
aWQgSklUOjplbWl0X29wX3Jlc3VtZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQor
dm9pZCBKSVQ6OmVtaXRfb3BfbmV3X2dlbmVyYXRvcl9mcmFtZShJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQogewotICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywg
Y3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfcmVzdW1lKTsKKyAgICBKSVRTbG93UGF0aENh
bGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX25ld19n
ZW5lcmF0b3JfZnJhbWUpOwogICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CiB9CiAKK3ZvaWQgSklU
OjplbWl0X29wX25vcChJbnN0cnVjdGlvbiopCit7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwog
CiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKaW5kZXggMmI0ZTYxOTg2ZDMxMmFjOWU0
Zjg3MzczY2U3YWEwYjlmZDBjZTc1YS4uYWZlMDk2ODQ4OGY0NmQxNjc1YzkxN2VjYjJiNjIwYzAw
NTYxMjI0NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zm
c2V0c0V4dHJhY3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
T2Zmc2V0c0V4dHJhY3Rvci5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJEaXJlY3RB
cmd1bWVudHMuaCIKICNpbmNsdWRlICJFeGNlcHRpb24uaCIKICNpbmNsdWRlICJFeGVjdXRhYmxl
LmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yRnJhbWUuaCIKICNpbmNsdWRlICJIZWFwLmgiCiAjaW5j
bHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KaW5kZXggY2Q0
Y2U5MDYzYjE5NTc1YTk1N2UzY2EzZTIyYmU1NzkxNWJkYjU5YS4uYjkyMGE2Y2U2NmNmYmUxMzUz
MzRkYTAxZjY5ZDU4ZGU0NjYwY2U0ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQpAQCAtMTY1LDYgKzE2NSw3IEBAIGNvbnN0
IFNsb3RTaXplID0gOAogCiBjb25zdCBKU0Vudmlyb25tZW50UmVjb3JkX3ZhcmlhYmxlcyA9IChz
aXplb2YgSlNFbnZpcm9ubWVudFJlY29yZCArIFNsb3RTaXplIC0gMSkgJiB+KFNsb3RTaXplIC0g
MSkKIGNvbnN0IERpcmVjdEFyZ3VtZW50c19zdG9yYWdlID0gKHNpemVvZiBEaXJlY3RBcmd1bWVu
dHMgKyBTbG90U2l6ZSAtIDEpICYgfihTbG90U2l6ZSAtIDEpCitjb25zdCBHZW5lcmF0b3JGcmFt
ZV9jYWxsZWVMb2NhbHMgPSAoc2l6ZW9mIEdlbmVyYXRvckZyYW1lICsgU2xvdFNpemUgLSAxKSAm
IH4oU2xvdFNpemUgLSAxKQogCiBjb25zdCBTdGFja0FsaWdubWVudCA9IDE2CiBjb25zdCBTdGFj
a0FsaWdubWVudFNsb3RzID0gMgpAQCAtMTI1Niw2ICsxMjU3LDEyIEBAIF9sbGludF9vcF9uZXdf
cmVnZXhwOgogICAgIGRpc3BhdGNoKDMpCiAKIAorX2xsaW50X29wX25ld19nZW5lcmF0b3JfZnJh
bWU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRoX25l
d19nZW5lcmF0b3JfZnJhbWUpCisgICAgZGlzcGF0Y2goMykKKworCiBfbGxpbnRfb3BfbGVzczoK
ICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfbGVzcykK
QEAgLTE1OTUsMTAgKzE2MDIsMTYgQEAgX2xsaW50X29wX3NhdmU6CiAgICAgZGlzcGF0Y2goNCkK
IAogCi1fbGxpbnRfb3BfcmVzdW1lOgorX2xsaW50X29wX3NhdmVfaGludDoKICAgICB0cmFjZUV4
ZWN1dGlvbigpCi0gICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfcmVzdW1lKQotICAgIGRpc3Bh
dGNoKDMpCisgICAgbm90U3VwcG9ydGVkKCkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9v
cF9yZXN1bWVfaGludDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbm90U3VwcG9ydGVkKCkK
KyAgICBkaXNwYXRjaCg0KQogCiAKIF9sbGludF9vcF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVu
dDoKQEAgLTE3MDgsNiArMTcyMSwxMCBAQCBfbGxpbnRfb3BfY29weV9yZXN0OgogICAgIGNhbGxT
bG93UGF0aChfc2xvd19wYXRoX2NvcHlfcmVzdCkKICAgICBkaXNwYXRjaCg0KQogCitfbGxpbnRf
b3Bfbm9wOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBkaXNwYXRjaCgxKQorCiAKICMgTGFz
dGx5LCBtYWtlIHN1cmUgdGhhdCB3ZSBjYW4gbGluayBldmVuIHRob3VnaCB3ZSBkb24ndCBzdXBw
b3J0IGFsbCBvcGNvZGVzLgogIyBUaGVzZSBvcGNvZGVzIHNob3VsZCBuZXZlciBhcmlzZSB3aGVu
IHVzaW5nIExMSW50IG9yIGVpdGhlciBKSVQuIFdlIGFzc2VydApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20gYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQppbmRleCA4NTE3
M2JjODI2MjE0NmIwZTBkMWUwMTkyYjcwNjAyOGJiZDkwNjgzLi40OTJjNjNjMjVjZGZhZTMyZmY5
ZWViOGE0ZDE5N2U1ODU1MzE5YWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQpAQCAtMjMyMSwzICsyMzIxLDE4IEBA
IF9sbGludF9vcF9nZXRfcmVzdF9sZW5ndGg6CiAgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDEs
IHQxKQogICAgIHN0b3JlcSB0MCwgW2NmciwgdDEsIDhdCiAgICAgZGlzcGF0Y2goMykKKworX2xs
aW50X29wX2NsZWFyX2dlbmVyYXRvcl9mcmFtZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
bG9hZFZhcmlhYmxlKDEsIHQwKQorICAgIHN0b3JlaSAwLCBHZW5lcmF0b3JGcmFtZTo6bV9udW1i
ZXJPZlNhdmVkQ2FsbGVlTG9jYWxzW3QwXQorICAgIGRpc3BhdGNoKDIpCisKK19sbGludF9vcF9y
ZXN1bWVfZnJvbV9nZW5lcmF0b3JfZnJhbWU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxv
YWRWYXJpYWJsZSgyLCB0MCkKKyAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMywgdDEpCisgICAg
bG9hZHEgR2VuZXJhdG9yRnJhbWVfY2FsbGVlTG9jYWxzW3QwLCB0MSwgOF0sIHQwCisgICAgbG9h
ZGlzRnJvbUluc3RydWN0aW9uKDEsIHQxKQorICAgIHN0b3JlcSB0MCwgW2NmciwgdDEsIDhdCisg
ICAgZGlzcGF0Y2goNCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
UGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAppbmRl
eCA4ZDM3MDYzNDUxMjhlOWRmOWRhYzMyNTdmN2M1ZjRlNWFiM2E5YzM0Li42NDcwNTY5YzQ2NzA2
OWU3Y2U2Mjc3MjE3MDMxZmMyOGJkOWNhZmRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1BhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9QYXJzZXIuY3BwCkBAIC0yNTAsOSArMjUwLDEwIEBACiAgICAgYm9vbCBpc0Fycm93RnVuY3Rp
b25Cb2R5RXhwcmVzc2lvbiA9IGZhbHNlOwogICAgIGlmIChtX2xleGVyLT5pc1JlcGFyc2luZ0Z1
bmN0aW9uKCkpIHsKICAgICAgICAgUGFyc2VyRnVuY3Rpb25JbmZvPEFTVEJ1aWxkZXI+IGZ1bmN0
aW9uSW5mbzsKLSAgICAgICAgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVy
YXRvckJvZHlNb2RlKQotICAgICAgICAgICAgZnVuY3Rpb25JbmZvLnBhcmFtZXRlcnMgPSBjcmVh
dGVHZW5lcmF0b3JQYXJhbWV0ZXJzKGNvbnRleHQpOwotICAgICAgICBlbHNlCisgICAgICAgIGlm
IChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JCb2R5TW9kZSkgeworICAg
ICAgICAgICAgdW5zaWduZWQgcGFyYW1ldGVyQ291bnQgPSAwOworICAgICAgICAgICAgZnVuY3Rp
b25JbmZvLnBhcmFtZXRlcnMgPSBjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKGNvbnRleHQsIHBh
cmFtZXRlckNvdW50KTsKKyAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBwYXJzZUZ1bmN0aW9u
UGFyYW1ldGVycyhjb250ZXh0LCBwYXJzZU1vZGUsIGZ1bmN0aW9uSW5mbyk7CiAgICAgICAgIG1f
cGFyYW1ldGVycyA9IGZ1bmN0aW9uSW5mby5wYXJhbWV0ZXJzOwogCkBAIC00ODUsMTAgKzQ4Niw5
IEBACiAKICAgICBQYXJzZXJGdW5jdGlvbkluZm88VHJlZUJ1aWxkZXI+IGluZm87CiAgICAgaW5m
by5uYW1lID0gJm1fdm0tPnByb3BlcnR5TmFtZXMtPm51bGxJZGVudGlmaWVyOwotICAgIGluZm8u
cGFyYW1ldGVycyA9IGNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMoY29udGV4dCk7CisgICAgaW5m
by5wYXJhbWV0ZXJzID0gY3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhjb250ZXh0LCBpbmZvLnBh
cmFtZXRlckNvdW50KTsKICAgICBpbmZvLnN0YXJ0T2Zmc2V0ID0gcGFyYW1ldGVyc1N0YXJ0Owog
ICAgIGluZm8uc3RhcnRMaW5lID0gdG9rZW5MaW5lKCk7Ci0gICAgaW5mby5wYXJhbWV0ZXJDb3Vu
dCA9IDQ7IC8vIGdlbmVyYXRvciwgc3RhdGUsIHZhbHVlLCByZXN1bWUgbW9kZQogCiAgICAgewog
ICAgICAgICBBdXRvUG9wU2NvcGVSZWYgZ2VuZXJhdG9yQm9keVNjb3BlKHRoaXMsIHB1c2hTY29w
ZSgpKTsKQEAgLTE3ODEsMzIgKzE3ODEsMzEgQEAgc3RhdGljIGNvbnN0IGNoYXIqIHN0cmluZ0Zv
ckZ1bmN0aW9uTW9kZShTb3VyY2VQYXJzZU1vZGUgbW9kZSkKIH0KIAogdGVtcGxhdGUgPHR5cGVu
YW1lIExleGVyVHlwZT4KLXRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gdHlwZW5hbWUgVHJl
ZUJ1aWxkZXI6OkZvcm1hbFBhcmFtZXRlckxpc3QgUGFyc2VyPExleGVyVHlwZT46OmNyZWF0ZUdl
bmVyYXRvclBhcmFtZXRlcnMoVHJlZUJ1aWxkZXImIGNvbnRleHQpCit0ZW1wbGF0ZSA8Y2xhc3Mg
VHJlZUJ1aWxkZXI+IHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpGb3JtYWxQYXJhbWV0ZXJMaXN0IFBh
cnNlcjxMZXhlclR5cGU+OjpjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKFRyZWVCdWlsZGVyJiBj
b250ZXh0LCB1bnNpZ25lZCYgcGFyYW1ldGVyQ291bnQpCiB7CiAgICAgYXV0byBwYXJhbWV0ZXJz
ID0gY29udGV4dC5jcmVhdGVGb3JtYWxQYXJhbWV0ZXJMaXN0KCk7CiAKICAgICBKU1Rva2VuTG9j
YXRpb24gbG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKICAgICBKU1RleHRQb3NpdGlvbiBwb3Np
dGlvbiA9IHRva2VuU3RhcnRQb3NpdGlvbigpOwogCi0gICAgLy8gQGdlbmVyYXRvcgotICAgIGRl
Y2xhcmVQYXJhbWV0ZXIoJm1fdm0tPnByb3BlcnR5TmFtZXMtPmdlbmVyYXRvclByaXZhdGVOYW1l
KTsKLSAgICBhdXRvIGdlbmVyYXRvciA9IGNvbnRleHQuY3JlYXRlQmluZGluZ0xvY2F0aW9uKGxv
Y2F0aW9uLCBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5nZW5lcmF0b3JQcml2YXRlTmFtZSwgcG9zaXRp
b24sIHBvc2l0aW9uLCBBc3NpZ25tZW50Q29udGV4dDo6RGVjbGFyYXRpb25TdGF0ZW1lbnQpOwot
ICAgIGNvbnRleHQuYXBwZW5kUGFyYW1ldGVyKHBhcmFtZXRlcnMsIGdlbmVyYXRvciwgMCk7Cisg
ICAgYXV0byBhZGRQYXJhbWV0ZXIgPSBbJl0oY29uc3QgSWRlbnRpZmllciYgbmFtZSkgeworICAg
ICAgICBkZWNsYXJlUGFyYW1ldGVyKCZuYW1lKTsKKyAgICAgICAgYXV0byBiaW5kaW5nID0gY29u
dGV4dC5jcmVhdGVCaW5kaW5nTG9jYXRpb24obG9jYXRpb24sIG5hbWUsIHBvc2l0aW9uLCBwb3Np
dGlvbiwgQXNzaWdubWVudENvbnRleHQ6OkRlY2xhcmF0aW9uU3RhdGVtZW50KTsKKyAgICAgICAg
Y29udGV4dC5hcHBlbmRQYXJhbWV0ZXIocGFyYW1ldGVycywgYmluZGluZywgMCk7CisgICAgfTsK
IAorICAgIC8vIEBnZW5lcmF0b3IKKyAgICBhZGRQYXJhbWV0ZXIobV92bS0+cHJvcGVydHlOYW1l
cy0+Z2VuZXJhdG9yUHJpdmF0ZU5hbWUpOwogICAgIC8vIEBnZW5lcmF0b3JTdGF0ZQotICAgIGRl
Y2xhcmVQYXJhbWV0ZXIoJm1fdm0tPnByb3BlcnR5TmFtZXMtPmdlbmVyYXRvclN0YXRlUHJpdmF0
ZU5hbWUpOwotICAgIGF1dG8gZ2VuZXJhdG9yU3RhdGUgPSBjb250ZXh0LmNyZWF0ZUJpbmRpbmdM
b2NhdGlvbihsb2NhdGlvbiwgbV92bS0+cHJvcGVydHlOYW1lcy0+Z2VuZXJhdG9yU3RhdGVQcml2
YXRlTmFtZSwgcG9zaXRpb24sIHBvc2l0aW9uLCBBc3NpZ25tZW50Q29udGV4dDo6RGVjbGFyYXRp
b25TdGF0ZW1lbnQpOwotICAgIGNvbnRleHQuYXBwZW5kUGFyYW1ldGVyKHBhcmFtZXRlcnMsIGdl
bmVyYXRvclN0YXRlLCAwKTsKLQorICAgIGFkZFBhcmFtZXRlcihtX3ZtLT5wcm9wZXJ0eU5hbWVz
LT5nZW5lcmF0b3JTdGF0ZVByaXZhdGVOYW1lKTsKICAgICAvLyBAZ2VuZXJhdG9yVmFsdWUKLSAg
ICBkZWNsYXJlUGFyYW1ldGVyKCZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5nZW5lcmF0b3JWYWx1ZVBy
aXZhdGVOYW1lKTsKLSAgICBhdXRvIGdlbmVyYXRvclZhbHVlID0gY29udGV4dC5jcmVhdGVCaW5k
aW5nTG9jYXRpb24obG9jYXRpb24sIG1fdm0tPnByb3BlcnR5TmFtZXMtPmdlbmVyYXRvclZhbHVl
UHJpdmF0ZU5hbWUsIHBvc2l0aW9uLCBwb3NpdGlvbiwgQXNzaWdubWVudENvbnRleHQ6OkRlY2xh
cmF0aW9uU3RhdGVtZW50KTsKLSAgICBjb250ZXh0LmFwcGVuZFBhcmFtZXRlcihwYXJhbWV0ZXJz
LCBnZW5lcmF0b3JWYWx1ZSwgMCk7Ci0KKyAgICBhZGRQYXJhbWV0ZXIobV92bS0+cHJvcGVydHlO
YW1lcy0+Z2VuZXJhdG9yVmFsdWVQcml2YXRlTmFtZSk7CiAgICAgLy8gQGdlbmVyYXRvclJlc3Vt
ZU1vZGUKLSAgICBkZWNsYXJlUGFyYW1ldGVyKCZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5nZW5lcmF0
b3JSZXN1bWVNb2RlUHJpdmF0ZU5hbWUpOwotICAgIGF1dG8gZ2VuZXJhdG9yUmVzdW1lTW9kZSA9
IGNvbnRleHQuY3JlYXRlQmluZGluZ0xvY2F0aW9uKGxvY2F0aW9uLCBtX3ZtLT5wcm9wZXJ0eU5h
bWVzLT5nZW5lcmF0b3JSZXN1bWVNb2RlUHJpdmF0ZU5hbWUsIHBvc2l0aW9uLCBwb3NpdGlvbiwg
QXNzaWdubWVudENvbnRleHQ6OkRlY2xhcmF0aW9uU3RhdGVtZW50KTsKLSAgICBjb250ZXh0LmFw
cGVuZFBhcmFtZXRlcihwYXJhbWV0ZXJzLCBnZW5lcmF0b3JSZXN1bWVNb2RlLCAwKTsKKyAgICBh
ZGRQYXJhbWV0ZXIobV92bS0+cHJvcGVydHlOYW1lcy0+Z2VuZXJhdG9yUmVzdW1lTW9kZVByaXZh
dGVOYW1lKTsKKyAgICAvLyBAZ2VuZXJhdG9yRnJhbWUKKyAgICBhZGRQYXJhbWV0ZXIobV92bS0+
cHJvcGVydHlOYW1lcy0+Z2VuZXJhdG9yRnJhbWVQcml2YXRlTmFtZSk7CisKKyAgICBwYXJhbWV0
ZXJDb3VudCA9IDU7CiAKICAgICByZXR1cm4gcGFyYW1ldGVyczsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL1BhcnNlci5oCmluZGV4IGExMWIzNWMxMDFmZTViODQ5Y2IyMzMwOTZjNTY4MzEz
NzA2NmNhYmYuLmU2MTQ5YTNhYzM2OTQwNDg5M2QyMzY5NjkzMTZiNWMzMDMzYmU4NTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaApAQCAtMTI1OSw3ICsxMjU5LDcgQEAgY2xh
c3MgUGFyc2VyIHsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElO
RSBib29sIHBhcnNlRnVuY3Rpb25JbmZvKFRyZWVCdWlsZGVyJiwgRnVuY3Rpb25SZXF1aXJlbWVu
dHMsIFNvdXJjZVBhcnNlTW9kZSwgYm9vbCBuYW1lSXNJbkNvbnRhaW5pbmdTY29wZSwgQ29uc3Ry
dWN0b3JLaW5kLCBTdXBlckJpbmRpbmcsIGludCBmdW5jdGlvbktleXdvcmRTdGFydCwgUGFyc2Vy
RnVuY3Rpb25JbmZvPFRyZWVCdWlsZGVyPiYsIEZ1bmN0aW9uRGVmaW5pdGlvblR5cGUpOwogICAg
IAogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gTkVWRVJfSU5MSU5FIGludCBwYXJz
ZUZ1bmN0aW9uUGFyYW1ldGVycyhUcmVlQnVpbGRlciYsIFNvdXJjZVBhcnNlTW9kZSwgUGFyc2Vy
RnVuY3Rpb25JbmZvPFRyZWVCdWlsZGVyPiYpOwotICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVp
bGRlcj4gTkVWRVJfSU5MSU5FIHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpGb3JtYWxQYXJhbWV0ZXJM
aXN0IGNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMoVHJlZUJ1aWxkZXImKTsKKyAgICB0ZW1wbGF0
ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElORSB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6
Rm9ybWFsUGFyYW1ldGVyTGlzdCBjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKFRyZWVCdWlsZGVy
JiwgdW5zaWduZWQmIHBhcmFtZXRlckNvdW50KTsKIAogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVl
QnVpbGRlcj4gTkVWRVJfSU5MSU5FIFRyZWVDbGFzc0V4cHJlc3Npb24gcGFyc2VDbGFzcyhUcmVl
QnVpbGRlciYsIEZ1bmN0aW9uUmVxdWlyZW1lbnRzLCBQYXJzZXJDbGFzc0luZm88VHJlZUJ1aWxk
ZXI+Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1v
blNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93
UGF0aHMuY3BwCmluZGV4IDc4YjQzYzRkMzg5ZmY3YTkwODMxM2I1NTQwNTcwZTg4MmUxYjAzNzEu
LmQzZmZiOTc2NWYzNTFjZDE1MGExZjhhZWEwNGJhNjRhNmU3ZDA1NGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcApAQCAtNjk3LDMz
ICs2OTcsMTIgQEAgc3RhdGljIHZvaWQgdXBkYXRlUmVzdWx0UHJvZmlsZUZvckJpbmFyeUFyaXRo
T3AoRXhlY1N0YXRlKiwgSW5zdHJ1Y3Rpb24qLCBKU1ZhbHUKICAgICAvLyBPbmx5IHNhdmUgdmFy
aWFibGVzIGFuZCB0ZW1wb3JhcnkgcmVnaXN0ZXJzLiBUaGUgc2NvcGUgcmVnaXN0ZXJzIGFyZSBp
bmNsdWRlZCBpbiB0aGVtLgogICAgIC8vIEJ1dCBwYXJhbWV0ZXJzIGFyZSBub3QgaW5jbHVkZWQu
IEJlY2F1c2UgdGhlIGdlbmVyYXRvciBpbXBsZW1lbnRhdGlvbiByZXBsYWNlcyB0aGUgdmFsdWVz
IG9mIHBhcmFtZXRlcnMgb24gZWFjaCBnZW5lcmF0b3IubmV4dCgpIGNhbGwuCiAgICAgQkVHSU4o
KTsKLSAgICBKU1ZhbHVlIGdlbmVyYXRvciA9IE9QKDEpLmpzVmFsdWUoKTsKLSAgICBHZW5lcmF0
b3JGcmFtZSogZnJhbWUgPSBudWxscHRyOwotICAgIEpTVmFsdWUgdmFsdWUgPSBnZW5lcmF0b3Iu
Z2V0KGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5nZW5lcmF0b3JGcmFtZVByaXZhdGVOYW1l
KTsKLSAgICBpZiAoIXZhbHVlLmlzTnVsbCgpKQotICAgICAgICBmcmFtZSA9IGpzQ2FzdDxHZW5l
cmF0b3JGcmFtZSo+KHZhbHVlKTsKLSAgICBlbHNlIHsKLSAgICAgICAgLy8gRklYTUU6IE9uY2Ug
SlNHZW5lcmF0b3Igc3BlY2lhbGl6ZWQgb2JqZWN0IGlzIGludHJvZHVjZWQsIHRoaXMgR2VuZXJh
dG9yRnJhbWUgc2hvdWxkIGJlIGVtYmVkZWQgaW50byBpdCB0byBhdm9pZCBhbGxvY2F0aW9ucy4K
LSAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTU0
NQotICAgICAgICBmcmFtZSA9IEdlbmVyYXRvckZyYW1lOjpjcmVhdGUoZXhlYy0+dm0oKSwgIGV4
ZWMtPmNvZGVCbG9jaygpLT5udW1DYWxsZWVMb2NhbHMoKSk7Ci0gICAgICAgIFB1dFByb3BlcnR5
U2xvdCBzbG90KGdlbmVyYXRvciwgdHJ1ZSwgUHV0UHJvcGVydHlTbG90OjpQdXRCeUlkKTsKLSAg
ICAgICAgYXNPYmplY3QoZ2VuZXJhdG9yKS0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPnB1dChh
c09iamVjdChnZW5lcmF0b3IpLCBleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuZ2VuZXJhdG9y
RnJhbWVQcml2YXRlTmFtZSwgZnJhbWUsIHNsb3QpOwotICAgIH0KKyAgICBHZW5lcmF0b3JGcmFt
ZSogZnJhbWUgPSBqc0Nhc3Q8R2VuZXJhdG9yRnJhbWUqPihPUCgxKS5qc1ZhbHVlKCkpOwogICAg
IHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9IHBjWzJdLnUudW5zaWduZWRWYWx1ZTsK
ICAgICBmcmFtZS0+c2F2ZShleGVjLCBleGVjLT5jb2RlQmxvY2soKS0+bGl2ZUNhbGxlZUxvY2Fs
c0F0WWllbGQobGl2ZUNhbGxlZUxvY2Fsc0luZGV4KSk7CiAgICAgRU5EKCk7CiB9CiAKLVNMT1df
UEFUSF9ERUNMKHNsb3dfcGF0aF9yZXN1bWUpCi17Ci0gICAgQkVHSU4oKTsKLSAgICBKU1ZhbHVl
IGdlbmVyYXRvciA9IE9QKDEpLmpzVmFsdWUoKTsKLSAgICBHZW5lcmF0b3JGcmFtZSogZnJhbWUg
PSBqc0Nhc3Q8R2VuZXJhdG9yRnJhbWUqPihnZW5lcmF0b3IuZ2V0KGV4ZWMsIGV4ZWMtPnByb3Bl
cnR5TmFtZXMoKS5nZW5lcmF0b3JGcmFtZVByaXZhdGVOYW1lKSk7Ci0gICAgdW5zaWduZWQgbGl2
ZUNhbGxlZUxvY2Fsc0luZGV4ID0gcGNbMl0udS51bnNpZ25lZFZhbHVlOwotICAgIGZyYW1lLT5y
ZXN1bWUoZXhlYywgZXhlYy0+Y29kZUJsb2NrKCktPmxpdmVDYWxsZWVMb2NhbHNBdFlpZWxkKGxp
dmVDYWxsZWVMb2NhbHNJbmRleCkpOwotICAgIEVORCgpOwotfQotCiBTTE9XX1BBVEhfREVDTChz
bG93X3BhdGhfY3JlYXRlX2xleGljYWxfZW52aXJvbm1lbnQpCiB7CiAgICAgQkVHSU4oKTsKQEAg
LTc5Nyw0ICs3NzYsMTIgQEAgc3RhdGljIHZvaWQgdXBkYXRlUmVzdWx0UHJvZmlsZUZvckJpbmFy
eUFyaXRoT3AoRXhlY1N0YXRlKiwgSW5zdHJ1Y3Rpb24qLCBKU1ZhbHUKICAgICBFTkQoKTsKIH0K
IAorU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX25ld19nZW5lcmF0b3JfZnJhbWUpCit7CisgICAg
QkVHSU4oKTsKKyAgICB1bnNpZ25lZCBnZW5lcmF0b3JGcmFtZVNpemUgPSBwY1syXS51LnVuc2ln
bmVkVmFsdWU7CisgICAgUkVUVVJOKEdlbmVyYXRvckZyYW1lOjpjcmVhdGUoZXhlYywgZ2VuZXJh
dG9yRnJhbWVTaXplKSk7Cit9CisKKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCmluZGV4IGYwMGQ4NzA1ZDRl
NjdmZTRkNDA1OWJkZTE2OGVlODhmNTdkZjcyZTcuLjA2NTBjNGU4Y2I3MTU1OTE3Y2QxZDdhMmY3
N2E3YzdmNzI5YTE1NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbW1vblNsb3dQYXRocy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bW1vblNsb3dQYXRocy5oCkBAIC0yOTYsNiArMjk2LDcgQEAgaW5saW5lIHZvaWQgZGVjb2RlUmVz
dWx0KFNsb3dQYXRoUmV0dXJuVHlwZSByZXN1bHQsIHZvaWQqJiBhLCB2b2lkKiYgYikKIFNMT1df
UEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcHVzaF93aXRoX3Njb3BlKTsKIFNMT1dfUEFUSF9I
SURERU5fREVDTChzbG93X3BhdGhfcmVzb2x2ZV9zY29wZSk7CiBTTE9XX1BBVEhfSElEREVOX0RF
Q0woc2xvd19wYXRoX2NvcHlfcmVzdCk7CitTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRo
X25ld19nZW5lcmF0b3JfZnJhbWUpOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJhbWUuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJhbWUuY3BwCmluZGV4IGVmNmVh
N2ExMDAyNThjM2VjZTA0ZGFhYjQzYmRhYTg1MWVjOGY3MTUuLjMwYjgxNGE2MzY2NzI2ODI1YzM4
NDlmZmIyODA0ZDJmZjM4MDQxMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0dlbmVyYXRvckZyYW1lLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9HZW5lcmF0b3JGcmFtZS5jcHAKQEAgLTMwLDYwICszMCw2MCBAQAogI2luY2x1ZGUgIkhl
YXBJdGVyYXRpb25TY29wZS5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiSlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTT2JqZWN0SW5saW5lcy5oIgogI2lu
Y2x1ZGUgIlNsb3RWaXNpdG9ySW5saW5lcy5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMu
aCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWNvbnN0IENsYXNzSW5mbyBHZW5lcmF0b3JGcmFtZTo6
c19pbmZvID0geyAiR2VuZXJhdG9yRnJhbWUiLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVU
SE9EX1RBQkxFKEdlbmVyYXRvckZyYW1lKSB9OworY29uc3QgQ2xhc3NJbmZvIEdlbmVyYXRvckZy
YW1lOjpzX2luZm8gPSB7ICJHZW5lcmF0b3JGcmFtZSIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIs
IENSRUFURV9NRVRIT0RfVEFCTEUoR2VuZXJhdG9yRnJhbWUpIH07CiAKLUdlbmVyYXRvckZyYW1l
OjpHZW5lcmF0b3JGcmFtZShWTSYgdm0sIHNpemVfdCBudW1iZXJPZkNhbGxlZUxvY2FscykKLSAg
ICA6IEJhc2Uodm0sIHZtLmdlbmVyYXRvckZyYW1lU3RydWN0dXJlLmdldCgpKQotICAgICwgbV9u
dW1iZXJPZkNhbGxlZUxvY2FscyhudW1iZXJPZkNhbGxlZUxvY2FscykKK0dlbmVyYXRvckZyYW1l
OjpHZW5lcmF0b3JGcmFtZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogQmFz
ZSh2bSwgc3RydWN0dXJlKQogewogfQogCi12b2lkIEdlbmVyYXRvckZyYW1lOjpmaW5pc2hDcmVh
dGlvbihWTSYgdm0pCi17Ci0gICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwotICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgbV9udW1iZXJPZkNhbGxlZUxvY2FsczsgKytpKQotICAgICAgICBs
b2NhbEF0KGkpLmNsZWFyKCk7Ci19Ci0KIFN0cnVjdHVyZSogR2VuZXJhdG9yRnJhbWU6OmNyZWF0
ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUg
cHJvdG90eXBlKQogewotICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2Jq
ZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKENlbGxUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8o
KSk7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3Rv
dHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwogfQog
Ci1HZW5lcmF0b3JGcmFtZSogR2VuZXJhdG9yRnJhbWU6OmNyZWF0ZShWTSYgdm0sIHNpemVfdCBu
dW1iZXJPZkxvY2FscykKK0dlbmVyYXRvckZyYW1lKiBHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlKFZN
JiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHNpemVfdCBudW1iZXJPZkNhbGxlZUxvY2FscykK
IHsKICAgICBHZW5lcmF0b3JGcmFtZSogcmVzdWx0ID0KICAgICAgICAgbmV3ICgKICAgICAgICAg
ICAgIE5vdE51bGwsCi0gICAgICAgICAgICBhbGxvY2F0ZUNlbGw8R2VuZXJhdG9yRnJhbWU+KHZt
LmhlYXAsIGFsbG9jYXRpb25TaXplRm9yTG9jYWxzKG51bWJlck9mTG9jYWxzKSkpCi0gICAgICAg
IEdlbmVyYXRvckZyYW1lKHZtLCBudW1iZXJPZkxvY2Fscyk7CisgICAgICAgICAgICBhbGxvY2F0
ZUNlbGw8R2VuZXJhdG9yRnJhbWU+KHZtLmhlYXAsIGFsbG9jYXRpb25TaXplRm9yTG9jYWxzKG51
bWJlck9mQ2FsbGVlTG9jYWxzKSkpCisgICAgICAgIEdlbmVyYXRvckZyYW1lKHZtLCBzdHJ1Y3R1
cmUpOwogICAgIHJlc3VsdC0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIHJldHVybiByZXN1bHQ7
CiB9CiAKK0dlbmVyYXRvckZyYW1lKiBHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlKEV4ZWNTdGF0ZSog
ZXhlYywgc2l6ZV90IG51bWJlck9mQ2FsbGVlTG9jYWxzKQoreworICAgIHJldHVybiBjcmVhdGUo
ZXhlYy0+dm0oKSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5nZW5lcmF0b3JGcmFtZVN0
cnVjdHVyZSgpLCBudW1iZXJPZkNhbGxlZUxvY2Fscyk7Cit9CisKIHZvaWQgR2VuZXJhdG9yRnJh
bWU6OnNhdmUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlQ2FsbGVl
TG9jYWxzKQogewogICAgIC8vIE9ubHkgc2F2ZSBjYWxsZWUgbG9jYWxzLgogICAgIC8vIEV2ZXJ5
IHRpbWUgYSBnZW5lcmF0b3IgaXMgY2FsbGVkIChvciByZXN1bWVkKSwgcGFyYW1ldGVycyBzaG91
bGQgYmUgcmVwbGFjZWQuCi0gICAgQVNTRVJUKGxpdmVDYWxsZWVMb2NhbHMubnVtQml0cygpIDw9
IG1fbnVtYmVyT2ZDYWxsZWVMb2NhbHMpOworICAgIHVuc2lnbmVkIGdlbmVyYXRvckZyYW1lSW5k
ZXggPSAwOwogICAgIGxpdmVDYWxsZWVMb2NhbHMuZm9yRWFjaFNldEJpdChbJl0oc2l6ZV90IGlu
ZGV4KSB7Ci0gICAgICAgIGxvY2FsQXQoaW5kZXgpLnNldChleGVjLT52bSgpLCB0aGlzLCBleGVj
LT51bmNoZWNrZWRSKHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGluZGV4KSkuanNWYWx1ZSgpKTsK
KyAgICAgICAgbG9jYWxBdChnZW5lcmF0b3JGcmFtZUluZGV4KyspLnNldChleGVjLT52bSgpLCB0
aGlzLCBleGVjLT51bmNoZWNrZWRSKHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGluZGV4KSkuanNW
YWx1ZSgpKTsKICAgICB9KTsKKyAgICBtX251bWJlck9mU2F2ZWRDYWxsZWVMb2NhbHMgPSBnZW5l
cmF0b3JGcmFtZUluZGV4OwogfQogCiB2b2lkIEdlbmVyYXRvckZyYW1lOjpyZXN1bWUoRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlQ2FsbGVlTG9jYWxzKQogewogICAg
IC8vIE9ubHkgcmVzdW1lIGNhbGxlZSBsb2NhbHMuCiAgICAgLy8gRXZlcnkgdGltZSBhIGdlbmVy
YXRvciBpcyBjYWxsZWQgKG9yIHJlc3VtZWQpLCBwYXJhbWV0ZXJzIHNob3VsZCBiZSByZXBsYWNl
ZC4KKyAgICB1bnNpZ25lZCBnZW5lcmF0b3JGcmFtZUluZGV4ID0gMDsKICAgICBsaXZlQ2FsbGVl
TG9jYWxzLmZvckVhY2hTZXRCaXQoWyZdKHNpemVfdCBpbmRleCkgewotICAgICAgICBleGVjLT51
bmNoZWNrZWRSKHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGluZGV4KSkgPSBsb2NhbEF0KGluZGV4
KS5nZXQoKTsKLSAgICAgICAgbG9jYWxBdChpbmRleCkuY2xlYXIoKTsKKyAgICAgICAgZXhlYy0+
dW5jaGVja2VkUih2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChpbmRleCkpID0gbG9jYWxBdChnZW5l
cmF0b3JGcmFtZUluZGV4KyspLmdldCgpOwogICAgIH0pOworICAgIG1fbnVtYmVyT2ZTYXZlZENh
bGxlZUxvY2FscyA9IDA7CiB9CiAKIHZvaWQgR2VuZXJhdG9yRnJhbWU6OnZpc2l0Q2hpbGRyZW4o
SlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKQEAgLTkxLDcgKzkxLDcgQEAgdm9p
ZCBHZW5lcmF0b3JGcmFtZTo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9y
JiB2aXNpdG9yKQogICAgIEdlbmVyYXRvckZyYW1lKiB0aGlzT2JqZWN0ID0ganNDYXN0PEdlbmVy
YXRvckZyYW1lKj4oY2VsbCk7CiAgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2
aXNpdG9yKTsKICAgICAvLyBTaW5jZSBvbmx5IHRydWUgY2VsbCBwb2ludGVycyBhcmUgc3RvcmVk
IGFzIGEgY2VsbCwgd2UgY2FuIHNhZmVseSBtYXJrIHRoZW0uCi0gICAgdmlzaXRvci5hcHBlbmRW
YWx1ZXModGhpc09iamVjdC0+bG9jYWxzKCksIHRoaXNPYmplY3QtPm1fbnVtYmVyT2ZDYWxsZWVM
b2NhbHMpOworICAgIHZpc2l0b3IuYXBwZW5kVmFsdWVzKHRoaXNPYmplY3QtPmxvY2FscygpLCB0
aGlzT2JqZWN0LT5tX251bWJlck9mU2F2ZWRDYWxsZWVMb2NhbHMpOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVy
YXRvckZyYW1lLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGcmFt
ZS5oCmluZGV4IDNkNTQ1YjE0N2RkNGFiZmIyYmJiOWI1YTcxOTRlOGY3NDg0MWM0OWEuLjA0MGJj
M2I2ODY2NDQ4NGFjYjU3NGQ3ZDQ0NDlmYmIyMDI4MmYyNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZyYW1lLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJhbWUuaApAQCAtMjcsMTEgKzI3LDE0IEBACiAj
ZGVmaW5lIEdlbmVyYXRvckZyYW1lX2gKIAogI2luY2x1ZGUgIkpTQ2VsbC5oIgorI2luY2x1ZGUg
IkpTT2JqZWN0LmgiCiAjaW5jbHVkZSA8d3RmL0Zhc3RCaXRWZWN0b3IuaD4KIAogbmFtZXNwYWNl
IEpTQyB7CiAKLWNsYXNzIEdlbmVyYXRvckZyYW1lIDogcHVibGljIEpTQ2VsbCB7CitjbGFzcyBM
TEludE9mZnNldHNFeHRyYWN0b3I7CisKK2NsYXNzIEdlbmVyYXRvckZyYW1lIDogcHVibGljIEpT
Tm9uRmluYWxPYmplY3QgewogICAgIGZyaWVuZCBjbGFzcyBKSVQ7CiAjaWYgRU5BQkxFKERGR19K
SVQpCiAgICAgZnJpZW5kIGNsYXNzIERGRzo6U3BlY3VsYXRpdmVKSVQ7CkBAIC0zOSwxMiArNDIs
MTIgQEAgY2xhc3MgR2VuZXJhdG9yRnJhbWUgOiBwdWJsaWMgSlNDZWxsIHsKICNlbmRpZgogICAg
IGZyaWVuZCBjbGFzcyBWTTsKIHB1YmxpYzoKLSAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOwotICAg
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IFN0cnVjdHVyZUlzSW1tb3J0
YWwgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKKyAgICB0eXBlZGVmIEpTTm9uRmluYWxPYmplY3Qg
QmFzZTsKIAogICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CiAKLSAgICBzdGF0aWMgR2VuZXJhdG9y
RnJhbWUqIGNyZWF0ZShWTSYsIHNpemVfdCBudW1iZXJPZkNhbGxlZUxvY2Fscyk7CisgICAgc3Rh
dGljIEdlbmVyYXRvckZyYW1lKiBjcmVhdGUoRXhlY1N0YXRlKiwgc2l6ZV90IG51bWJlck9mQ2Fs
bGVlTG9jYWxzKTsKKyAgICBzdGF0aWMgR2VuZXJhdG9yRnJhbWUqIGNyZWF0ZShWTSYsIFN0cnVj
dHVyZSosIHNpemVfdCBudW1iZXJPZkNhbGxlZUxvY2Fscyk7CiAKICAgICBXcml0ZUJhcnJpZXJC
YXNlPFVua25vd24+KiBsb2NhbHMoKQogICAgIHsKQEAgLTUzLDcgKzU2LDYgQEAgY2xhc3MgR2Vu
ZXJhdG9yRnJhbWUgOiBwdWJsaWMgSlNDZWxsIHsKIAogICAgIFdyaXRlQmFycmllckJhc2U8VW5r
bm93bj4mIGxvY2FsQXQoc2l6ZV90IGluZGV4KQogICAgIHsKLSAgICAgICAgQVNTRVJUKGluZGV4
IDwgbV9udW1iZXJPZkNhbGxlZUxvY2Fscyk7CiAgICAgICAgIHJldHVybiBsb2NhbHMoKVtpbmRl
eF07CiAgICAgfQogCkBAIC02Miw2ICs2NCwxNiBAQCBjbGFzcyBHZW5lcmF0b3JGcmFtZSA6IHB1
YmxpYyBKU0NlbGwgewogICAgICAgICByZXR1cm4gV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mPHNp
emVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pPihzaXplb2YoR2VuZXJhdG9yRnJhbWUpKTsKICAg
ICB9CiAKKyAgICBzdGF0aWMgc2l6ZV90IGxvY2FsT2Zmc2V0KHVuc2lnbmVkIGluZGV4KQorICAg
IHsKKyAgICAgICAgcmV0dXJuIG9mZnNldE9mTG9jYWxzKCkgKyBpbmRleCAqIHNpemVvZihXcml0
ZUJhcnJpZXI8VW5rbm93bj4pOworICAgIH0KKworICAgIHN0YXRpYyBzaXplX3QgbnVtYmVyT2ZT
YXZlZENhbGxlZUxvY2Fsc09mZnNldCgpCisgICAgeworICAgICAgICByZXR1cm4gT0JKRUNUX09G
RlNFVE9GKEdlbmVyYXRvckZyYW1lLCBtX251bWJlck9mU2F2ZWRDYWxsZWVMb2NhbHMpOworICAg
IH0KKwogICAgIHN0YXRpYyBzaXplX3QgYWxsb2NhdGlvblNpemVGb3JMb2NhbHModW5zaWduZWQg
bnVtYmVyT2ZMb2NhbHMpCiAgICAgewogICAgICAgICByZXR1cm4gb2Zmc2V0T2ZMb2NhbHMoKSAr
IG51bWJlck9mTG9jYWxzICogc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPik7CkBAIC03Mywx
NCArODUsMTIgQEAgY2xhc3MgR2VuZXJhdG9yRnJhbWUgOiBwdWJsaWMgSlNDZWxsIHsKICAgICB2
b2lkIHJlc3VtZShFeGVjU3RhdGUqLCBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlQ2FsbGVlTG9j
YWxzKTsKIAogcHJpdmF0ZToKLSAgICBHZW5lcmF0b3JGcmFtZShWTSYsIHNpemVfdCBudW1iZXJP
ZkNhbGxlZUxvY2Fscyk7CisgICAgR2VuZXJhdG9yRnJhbWUoVk0mLCBTdHJ1Y3R1cmUqKTsKIAot
ICAgIHNpemVfdCBtX251bWJlck9mQ2FsbGVlTG9jYWxzOworICAgIHVpbnQzMl90IG1fbnVtYmVy
T2ZTYXZlZENhbGxlZUxvY2FscyB7IDAgfTsKIAogICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNl
dHNFeHRyYWN0b3I7CiAKLSAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7Ci0KIHByb3RlY3Rl
ZDoKICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwCmluZGV4IDc2OWEzZWZiMzA0MzhkY2Q5ZGRlNDQyZGM4ODk0YTFmMDM4MmE1MDQuLjhjYjg0
YWJlNWY4NzM5YTAxOGU2MmVhNDhmNDcxNDQ0Nzk1NTFkM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTUwLDYgKzUwLDcgQEAK
ICNpbmNsdWRlICJFcnJvclByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkZ1bmN0aW9uQ29uc3RydWN0
b3IuaCIKICNpbmNsdWRlICJGdW5jdGlvblByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkdlbmVyYXRv
ckZyYW1lLmgiCiAjaW5jbHVkZSAiR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5oIgogI2lu
Y2x1ZGUgIkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiR2VuZXJhdG9y
UHJvdG90eXBlLmgiCkBAIC0zODgsNiArMzg5LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6aW5p
dChWTSYgdm0pCiAgICAgCiAgICAgRk9SX0VBQ0hfQlVJTFRJTl9ERVJJVkVEX0lURVJBVE9SX1RZ
UEUoQ1JFQVRFX1BST1RPVFlQRV9GT1JfREVSSVZFRF9JVEVSQVRPUl9UWVBFKQogICAgIG1fcHJv
cGVydHlOYW1lSXRlcmF0b3JTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBKU1Byb3BlcnR5TmFtZUl0
ZXJhdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1faXRlcmF0b3JQcm90b3R5cGUuZ2V0
KCkpKTsKKyAgICBtX2dlbmVyYXRvckZyYW1lU3RydWN0dXJlLnNldCh2bSwgdGhpcywgR2VuZXJh
dG9yRnJhbWU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywganNOdWxsKCkpKTsKICAgICBtX2dl
bmVyYXRvclByb3RvdHlwZS5zZXQodm0sIHRoaXMsIEdlbmVyYXRvclByb3RvdHlwZTo6Y3JlYXRl
KHZtLCB0aGlzLCBHZW5lcmF0b3JQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywg
bV9pdGVyYXRvclByb3RvdHlwZS5nZXQoKSkpKTsKICAgICAKICN1bmRlZiBDUkVBVEVfUFJPVE9U
WVBFX0ZPUl9ERVJJVkVEX0lURVJBVE9SX1RZUEUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IGI0ZmYyZmI0MTNlMGU0NDYyNDkyYTQ4YTNm
ZDVhNGMyNGVhMGI3NDEuLjcxZDM5ZWM5MjgzYWQ5ZTU5MDEyNDRmMDEzNmExMzU4ZjU0NGE5OTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApA
QCAtMjU1LDYgKzI1NSw3IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVu
dGVkVmFyaWFibGVPYmplY3QgewogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fY2FsbGJh
Y2tGdW5jdGlvblN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2NhbGxi
YWNrT2JqZWN0U3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fcHJvcGVy
dHlOYW1lSXRlcmF0b3JTdHJ1Y3R1cmU7CisgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9n
ZW5lcmF0b3JGcmFtZVN0cnVjdHVyZTsKICNpZiBKU0NfT0JKQ19BUElfRU5BQkxFRAogICAgIFdy
aXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fb2JqY0NhbGxiYWNrRnVuY3Rpb25TdHJ1Y3R1cmU7CiAg
ICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9vYmpjV3JhcHBlck9iamVjdFN0cnVjdHVyZTsK
QEAgLTUwMSw2ICs1MDIsNyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21l
bnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBTdHJ1Y3R1cmUqIGNhbGxiYWNrRnVuY3Rpb25TdHJ1
Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2NhbGxiYWNrRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7
IH0KICAgICBTdHJ1Y3R1cmUqIGNhbGxiYWNrT2JqZWN0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1
cm4gbV9jYWxsYmFja09iamVjdFN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogcHJv
cGVydHlOYW1lSXRlcmF0b3JTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3Byb3BlcnR5TmFt
ZUl0ZXJhdG9yU3RydWN0dXJlLmdldCgpOyB9CisgICAgU3RydWN0dXJlKiBnZW5lcmF0b3JGcmFt
ZVN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fZ2VuZXJhdG9yRnJhbWVTdHJ1Y3R1cmUuZ2V0
KCk7IH0KICNpZiBKU0NfT0JKQ19BUElfRU5BQkxFRAogICAgIFN0cnVjdHVyZSogb2JqY0NhbGxi
YWNrRnVuY3Rpb25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX29iamNDYWxsYmFja0Z1bmN0
aW9uU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBvYmpjV3JhcHBlck9iamVjdFN0
cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fb2JqY1dyYXBwZXJPYmplY3RTdHJ1Y3R1cmUuZ2V0
KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCAwZTQ0YzM0NjBmOWY4
ZjBkY2IzNWQ5MTJkNzk1ZjdmOThkZmI3ZjQ1Li4wZWYyNWU3MjlhYTZlNTVjM2RjYTA2MWMyMmI2
NWFhNmY3YjViMzRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC0yNDYs
NyArMjQ2LDYgQEAgc3RhdGljIGJvb2wgZW5hYmxlQXNzZW1ibGVyKEV4ZWN1dGFibGVBbGxvY2F0
b3ImIGV4ZWN1dGFibGVBbGxvY2F0b3IpCiAgICAgaW5mZXJyZWRUeXBlU3RydWN0dXJlLnNldCgq
dGhpcywgSW5mZXJyZWRUeXBlOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7
CiAgICAgaW5mZXJyZWRUeXBlVGFibGVTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBJbmZlcnJlZFR5cGVU
YWJsZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIGZ1bmN0aW9u
UmFyZURhdGFTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBGdW5jdGlvblJhcmVEYXRhOjpjcmVhdGVTdHJ1
Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7Ci0gICAgZ2VuZXJhdG9yRnJhbWVTdHJ1Y3R1cmUu
c2V0KCp0aGlzLCBHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051
bGwoKSkpOwogICAgIGV4Y2VwdGlvblN0cnVjdHVyZS5zZXQoKnRoaXMsIEV4Y2VwdGlvbjo6Y3Jl
YXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIHByb21pc2VEZWZlcnJlZFN0
cnVjdHVyZS5zZXQoKnRoaXMsIEpTUHJvbWlzZURlZmVycmVkOjpjcmVhdGVTdHJ1Y3R1cmUoKnRo
aXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgaW50ZXJuYWxQcm9taXNlRGVmZXJyZWRTdHJ1Y3R1cmUu
c2V0KCp0aGlzLCBKU0ludGVybmFsUHJvbWlzZURlZmVycmVkOjpjcmVhdGVTdHJ1Y3R1cmUoKnRo
aXMsIDAsIGpzTnVsbCgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAppbmRleCBhZWUw
YWMxZjIxYjg0NTFiYzc3Njc0NDNhMGIwNWNhMDQ4YjRmNDliLi4yMzYwODM3MGE5ODM2ZDg5Nzdl
NDlkNzFlNjhhODA5YjlhYzQ1MzYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKQEAg
LTMxMiw3ICszMTIsNiBAQCBjbGFzcyBWTSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxW
TT4gewogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGluZmVycmVkVHlwZVN0cnVjdHVyZTsKICAgICBT
dHJvbmc8U3RydWN0dXJlPiBpbmZlcnJlZFR5cGVUYWJsZVN0cnVjdHVyZTsKICAgICBTdHJvbmc8
U3RydWN0dXJlPiBmdW5jdGlvblJhcmVEYXRhU3RydWN0dXJlOwotICAgIFN0cm9uZzxTdHJ1Y3R1
cmU+IGdlbmVyYXRvckZyYW1lU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGV4Y2Vw
dGlvblN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBwcm9taXNlRGVmZXJyZWRTdHJ1
Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gaW50ZXJuYWxQcm9taXNlRGVmZXJyZWRTdHJ1
Y3R1cmU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>269064</attachid>
            <date>2016-01-15 10:19:42 -0800</date>
            <delta_ts>2016-01-15 23:01:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-152723-20160116031911.patch</filename>
            <type>text/plain</type>
            <size>94268</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk1MDU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
ZDVkMzdhNWE2NzE2ZmQyMWY5YzRiYzhlZDg0OGZkNTlhZjU1NTgzLi42ZDgwZDk3ZDY0Y2RhMTM2
OTg3M2Q1YWNlOWIwM2QyNjhhMTBmMWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMzIgQEAKKzIwMTYtMDEtMTUgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgQ3JlYXRlIEdlbmVyYXRvckZyYW1lIHdpdGggdGhlIGJ5dGVjb2Rl
IG9wX25ld19nZW5lcmF0b3JfZnJhbWUgYW5kIG1ha2Ugb3Bfc2F2ZSAvIG9wX3Jlc3VtZSBERkcv
RlRMIGNhcGFibGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1MjcyMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogYnVpbHRpbnMvR2VuZXJhdG9yUHJvdG90eXBlLmpzOgorICAgICAgICAoZ2VuZXJhdG9y
UmVzdW1lKToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suY3BwOgorICAg
ICAgICAoSlNDOjppc0JyYW5jaCk6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpz
b246CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaDoKKyAgICAgICAgKEpTQzo6
Y29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OmNvbXB1dGVEZWZz
Rm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogYnl0ZWNvZGUvUHJlY2lzZUp1bXBU
YXJnZXRzLmNwcDoKKyAgICAgICAgKEpTQzo6Z2V0SnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNl
dCk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdHZW5lcmF0b3JGcmFtZSk6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0U2F2ZSk6CisgICAgICAgIChKU0M6OkJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0UmVzdW1lKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRv
ckZyYW1lUmVnaXN0ZXIpOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEhlYXAuaDoKKyAgICAg
ICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6
REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVj
dHMpOgorICAgICAgICAqIGRmZy9ERkdCYWNrd2FyZHNQcm9wYWdhdGlvblBoYXNlLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpCYWNrd2FyZHNQcm9wYWdhdGlvblBoYXNlOjpwcm9wYWdhdGUpOgor
ICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
Qnl0ZUNvZGVQYXJzZXI6Om5ld0dlbmVyYXRvckxvY2FsRGF0YSk6CisgICAgICAgIChKU0M6OkRG
Rzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAqIGRmZy9ERkdDYXBhYmls
aXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmNhcGFiaWxpdHlMZXZlbCk6CisgICAgICAg
ICogZGZnL0RGR0Nsb2JiZXJpemUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToK
KyAgICAgICAgKiBkZmcvREZHQ2xvYmJlcnNFeGl0U3RhdGUuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OmNsb2JiZXJzRXhpdFN0YXRlKToKKyAgICAgICAgKiBkZmcvREZHRG9lc0dDLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpkb2VzR0MpOgorICAgICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5vZGUpOgorICAgICAgICAq
IGRmZy9ERkdHZW5lcmF0b3JMb2NhbERhdGEuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkRGRzo6
R2VuZXJhdG9yTG9jYWxEYXRhOjpwcmVkaWN0KToKKyAgICAgICAgKEpTQzo6REZHOjpHZW5lcmF0
b3JMb2NhbERhdGE6OnByZWRpY3Rpb24pOgorICAgICAgICAoSlNDOjpERkc6OkdlbmVyYXRvckxv
Y2FsRGF0YTo6ZmxhZ3MpOgorICAgICAgICAoSlNDOjpERkc6OkdlbmVyYXRvckxvY2FsRGF0YTo6
bWVyZ2VGbGFncyk6CisgICAgICAgICogZGZnL0RGR0dyYXBoLmg6CisgICAgICAgICogZGZnL0RG
R01heUV4aXQuY3BwOgorICAgICAgICAoSlNDOjpERkc6Om1heUV4aXQpOgorICAgICAgICAqIGRm
Zy9ERkdOb2RlLmg6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzR2VuZXJhdG9yRnJhbWVT
aXplKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpnZW5lcmF0b3JGcmFtZVNpemUpOgorICAg
ICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc0dlbmVyYXRvckZyYW1lSW5kZXgpOgorICAgICAgICAo
SlNDOjpERkc6Ok5vZGU6OmdlbmVyYXRvckZyYW1lSW5kZXgpOgorICAgICAgICAoSlNDOjpERkc6
Ok5vZGU6Omhhc0dlbmVyYXRvckxvY2FsRGF0YSk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6
Z2VuZXJhdG9yTG9jYWxEYXRhKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNHZW5lcmF0
b3JGcmFtZUxvY2Fscyk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6Z2VuZXJhdG9yRnJhbWVM
b2NhbHMpOgorICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAqIGRmZy9ERkdP
cGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5oOgorICAgICAgICAq
IGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2U6OnByb3BhZ2F0ZSk6CisgICAgICAgICogZGZn
L0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToK
KyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3R2VuZXJhdG9yRnJhbWUpOgorICAgICAgICAqIGRm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMy
XzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6Cisg
ICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3RvcmVCYXJyaWVy
SW5zZXJ0aW9uUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdTdHJ1Y3R1cmVSZWdpc3RyYXRp
b25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3RydWN0dXJlUmVnaXN0cmF0aW9uUGhh
c2U6OnJ1bik6CisgICAgICAgICogZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwOgor
ICAgICAgICAqIGZ0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5Lmg6CisgICAgICAgICogZnRs
L0ZUTENhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6Y2FuQ29tcGlsZSk6Cisg
ICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpE
Rkc6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlTm9kZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZH
OjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZVB1dEdlbmVyYXRvckZyYW1lTG9jYWxzKToKKyAgICAg
ICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlU2V0R2VuZXJhdG9yTG9j
YWwpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVHZXRH
ZW5lcmF0b3JMb2NhbCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvTExWTTo6
Y29tcGlsZU5ld0dlbmVyYXRvckZyYW1lKToKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAg
ICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKToKKyAgICAgICAgKiBqaXQvSklU
Lmg6CisgICAgICAgICogaml0L0pJVE9wY29kZXMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRfb3BfcmVzdW1lX2Zyb21fZ2VuZXJhdG9yX2ZyYW1lKToKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0X29wX2NsZWFyX2dlbmVyYXRvcl9mcmFtZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9v
cF9uZXdfZ2VuZXJhdG9yX2ZyYW1lKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX25vcCk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9yZXN1bWUpOiBEZWxldGVkLgorICAgICAgICAq
IGxsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHA6CisgICAgICAgICogbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlci5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0
LmFzbToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6UGFyc2Vy
PExleGVyVHlwZT46OnBhcnNlSW5uZXIpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBl
Pjo6cGFyc2VHZW5lcmF0b3JGdW5jdGlvblNvdXJjZUVsZW1lbnRzKToKKyAgICAgICAgKEpTQzo6
UGFyc2VyPExleGVyVHlwZT46OmNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMpOgorICAgICAgICAq
IHBhcnNlci9QYXJzZXIuaDoKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHA6
CisgICAgICAgIChKU0M6OlNMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1v
blNsb3dQYXRocy5oOgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJhdG9yRnJhbWUuY3BwOgorICAg
ICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6R2VuZXJhdG9yRnJhbWUpOgorICAgICAgICAoSlND
OjpHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6R2VuZXJh
dG9yRnJhbWU6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpzYXZlKToK
KyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OnJlc3VtZSk6CisgICAgICAgIChKU0M6Okdl
bmVyYXRvckZyYW1lOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJh
bWU6OmZpbmlzaENyZWF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0dlbmVyYXRv
ckZyYW1lLmg6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpsb2NhbE9mZnNldCk6Cisg
ICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpudW1iZXJPZlNhdmVkQ2FsbGVlTG9jYWxzT2Zm
c2V0KToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OmxvY2FsQXQpOiBEZWxldGVkLgor
ICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0ds
b2JhbE9iamVjdDo6aW5pdCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgor
ICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6Z2VuZXJhdG9yRnJhbWVTdHJ1Y3R1cmUpOgor
ICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6Vk0pOiBEZWxldGVk
LgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKwogMjAxNi0wMS0xMyAgQ2FybG9zIEdhcmNpYSBD
YW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0NNYWtlXSBEbyBub3QgdXNl
IExMVk0gc3RhdGljIGxpYnJhcmllcyBmb3IgRlRMIEpJVApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J1aWx0aW5zL0dlbmVyYXRvclByb3RvdHlwZS5qcyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9idWlsdGlucy9HZW5lcmF0b3JQcm90b3R5cGUuanMKaW5kZXggYTNiYmMzNTM0
YWUwNTJmNGQ2ZmEyNWJkZTcwM2M5M2QzYTc5NWUxMS4uNDlkZGJmOWM4NDY5MzMwNjU4NzExZjE4
ZTcyMTQ5YmM5ODIyZGEzNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0
aW5zL0dlbmVyYXRvclByb3RvdHlwZS5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVp
bHRpbnMvR2VuZXJhdG9yUHJvdG90eXBlLmpzCkBAIC01OCw3ICs1OCw3IEBAIGZ1bmN0aW9uIGdl
bmVyYXRvclJlc3VtZShnZW5lcmF0b3IsIHNlbnRWYWx1ZSwgcmVzdW1lTW9kZSkKICAgICB9IGVs
c2UgewogICAgICAgICB0cnkgewogICAgICAgICAgICAgZ2VuZXJhdG9yLkBnZW5lcmF0b3JTdGF0
ZSA9IEV4ZWN1dGluZzsKLSAgICAgICAgICAgIHZhbHVlID0gZ2VuZXJhdG9yLkBnZW5lcmF0b3JO
ZXh0LkBjYWxsKGdlbmVyYXRvci5AZ2VuZXJhdG9yVGhpcywgZ2VuZXJhdG9yLCBzdGF0ZSwgc2Vu
dFZhbHVlLCByZXN1bWVNb2RlKTsKKyAgICAgICAgICAgIHZhbHVlID0gZ2VuZXJhdG9yLkBnZW5l
cmF0b3JOZXh0LkBjYWxsKGdlbmVyYXRvci5AZ2VuZXJhdG9yVGhpcywgZ2VuZXJhdG9yLCBzdGF0
ZSwgc2VudFZhbHVlLCByZXN1bWVNb2RlLCBnZW5lcmF0b3IuQGdlbmVyYXRvckZyYW1lKTsKICAg
ICAgICAgICAgIGlmIChnZW5lcmF0b3IuQGdlbmVyYXRvclN0YXRlID09PSBFeGVjdXRpbmcpIHsK
ICAgICAgICAgICAgICAgICBnZW5lcmF0b3IuQGdlbmVyYXRvclN0YXRlID0gQ29tcGxldGVkOwog
ICAgICAgICAgICAgICAgIGRvbmUgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcAppbmRleCA3ZjE3YzBlZjEwYjQz
M2ZhYzhmNThjYjNiOWNhNWQ0ZDAxNWJiYTA4Li41YWExOGU0Y2FmN2E1NzVkZDY0NWQ2ZjZlZDc5
NzI4YWY3M2JkMjZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Qnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcApAQCAtNTgsNyArNTgsNyBAQCBzdGF0aWMgYm9vbCBp
c0JyYW5jaChPcGNvZGVJRCBvcGNvZGVJRCkKICAgICBjYXNlIG9wX3N3aXRjaF9pbW06CiAgICAg
Y2FzZSBvcF9zd2l0Y2hfY2hhcjoKICAgICBjYXNlIG9wX3N3aXRjaF9zdHJpbmc6Ci0gICAgY2Fz
ZSBvcF9zYXZlOgorICAgIGNhc2Ugb3Bfc2F2ZV9oaW50OgogICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24gYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24KaW5kZXggMDUzYjhkYzliODY0ZjFi
ODZiNGNlYzdhYTYwMWY3Y2UyZjAzZjJlNC4uMDhhYWMxMjI1OWM2OGRhMGUxYWJjOTA5MGJlNTRj
OTU1ZmIzMzAwNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlTGlzdC5qc29uCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZUxpc3QuanNvbgpAQCAtMTYsNiArMTYsNyBAQAogICAgICAgICAgICAgeyAibmFtZSIgOiAi
b3BfbmV3X2FycmF5X3dpdGhfc2l6ZSIsICJsZW5ndGgiIDogNCB9LAogICAgICAgICAgICAgeyAi
bmFtZSIgOiAib3BfbmV3X2FycmF5X2J1ZmZlciIsICJsZW5ndGgiIDogNSB9LAogICAgICAgICAg
ICAgeyAibmFtZSIgOiAib3BfbmV3X3JlZ2V4cCIsICJsZW5ndGgiIDogMyB9LAorICAgICAgICAg
ICAgeyAibmFtZSIgOiAib3BfbmV3X2dlbmVyYXRvcl9mcmFtZSIsICJsZW5ndGgiIDogMyB9LAog
ICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfbW92IiwgImxlbmd0aCIgOiAzIH0sCiAgICAgICAg
ICAgICB7ICJuYW1lIiA6ICJvcF9ub3QiLCAibGVuZ3RoIiA6IDMgfSwKICAgICAgICAgICAgIHsg
Im5hbWUiIDogIm9wX2VxIiwgImxlbmd0aCIgOiA0IH0sCkBAIC0xMzQsNyArMTM1LDExIEBACiAg
ICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9jb3B5X3Jlc3QiLCAibGVuZ3RoIjogNCB9LAogICAg
ICAgICAgICAgeyAibmFtZSIgOiAib3BfZ2V0X3Jlc3RfbGVuZ3RoIiwgImxlbmd0aCI6IDMgfSwK
ICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX3NhdmUiLCAibGVuZ3RoIiA6IDQgfSwKLSAgICAg
ICAgICAgIHsgIm5hbWUiIDogIm9wX3Jlc3VtZSIsICJsZW5ndGgiIDogMyB9LAorICAgICAgICAg
ICAgeyAibmFtZSIgOiAib3Bfc2F2ZV9oaW50IiwgImxlbmd0aCIgOiA0IH0sCisgICAgICAgICAg
ICB7ICJuYW1lIiA6ICJvcF9yZXN1bWVfaGludCIsICJsZW5ndGgiIDogNCB9LAorICAgICAgICAg
ICAgeyAibmFtZSIgOiAib3BfcmVzdW1lX2Zyb21fZ2VuZXJhdG9yX2ZyYW1lIiwgImxlbmd0aCIg
OiA0IH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9jbGVhcl9nZW5lcmF0b3JfZnJhbWUi
LCAibGVuZ3RoIiA6IDIgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX25vcCIsICJsZW5n
dGgiIDogMSB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3Bfd2F0Y2hkb2ciLCAibGVuZ3Ro
IiA6IDEgfQogICAgICAgICBdCiAgICAgfSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKaW5kZXggODAxMTE0YzM3MmEyNzdmNmUxNzcwOWI5MGJl
MjA3YzhmOTliZTgyZC4uZGFlZjgxYzI2OWJiNTQxNTRlYTZiNmRjODM4YWZjNjljZWU3MmM5NSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVm
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgK
QEAgLTU1LDYgKzU1LDggQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAogICAg
IGNhc2Ugb3BfY3JlYXRlX291dF9vZl9iYW5kX2FyZ3VtZW50czoKICAgICBjYXNlIG9wX2dldF9y
ZXN0X2xlbmd0aDoKICAgICBjYXNlIG9wX3dhdGNoZG9nOgorICAgIGNhc2Ugb3BfbmV3X2dlbmVy
YXRvcl9mcmFtZToKKyAgICBjYXNlIG9wX25vcDoKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2Ug
b3BfYXNzZXJ0OgogICAgIGNhc2Ugb3BfZ2V0X3Njb3BlOgpAQCAtNzIsNyArNzQsOCBAQCB2b2lk
IGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoCiAgICAgY2FzZSBvcF9qbmVxX251bGw6CiAg
ICAgY2FzZSBvcF9kZWM6CiAgICAgY2FzZSBvcF9pbmM6Ci0gICAgY2FzZSBvcF9yZXN1bWU6IHsK
KyAgICBjYXNlIG9wX3Jlc3VtZV9oaW50OgorICAgIGNhc2Ugb3BfY2xlYXJfZ2VuZXJhdG9yX2Zy
YW1lOiB7CiAgICAgICAgIEFTU0VSVChvcGNvZGVMZW5ndGhzW29wY29kZUlEXSA+PSAxKTsKICAg
ICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rp
b25bMV0udS5vcGVyYW5kKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTY1LDcgKzE2OCw4IEBAIHZv
aWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCgKICAgICBjYXNlIG9wX25ld19nZW5lcmF0
b3JfZnVuYzoKICAgICBjYXNlIG9wX2dldF9wYXJlbnRfc2NvcGU6CiAgICAgY2FzZSBvcF9jcmVh
dGVfc2NvcGVkX2FyZ3VtZW50czoKLSAgICBjYXNlIG9wX2dldF9mcm9tX2FyZ3VtZW50czogewor
ICAgIGNhc2Ugb3BfZ2V0X2Zyb21fYXJndW1lbnRzOgorICAgIGNhc2Ugb3BfcmVzdW1lX2Zyb21f
Z2VuZXJhdG9yX2ZyYW1lOiB7CiAgICAgICAgIEFTU0VSVChvcGNvZGVMZW5ndGhzW29wY29kZUlE
XSA+PSAyKTsKICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJ
RCwgaW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjUwLDcg
KzI1NCw3IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCgKICAgICAgICAgICAg
IGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGxhc3RBcmcgKyBpKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBjYXNlIG9wX3NhdmU6IHsKKyAgICBjYXNlIG9w
X3NhdmVfaGludDogewogICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9w
Y29kZUlELCBpbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOwogICAgICAgICB1bnNpZ25lZCBtZXJn
ZVBvaW50Qnl0ZWNvZGVPZmZzZXQgPSBieXRlY29kZU9mZnNldCArIGluc3RydWN0aW9uWzNdLnUu
b3BlcmFuZDsKICAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBtZXJnZVBvaW50QmxvY2sgPSBu
dWxscHRyOwpAQCAtMjY2LDYgKzI3MCwxNSBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVP
ZmZzZXQoCiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQorICAgIGNhc2Ugb3Bf
c2F2ZTogeworICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlE
LCBpbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOworICAgICAgICB1bnNpZ25lZCBsaXZlQ2FsbGVl
TG9jYWxzSW5kZXggPSBpbnN0cnVjdGlvblsyXS51LnVuc2lnbmVkVmFsdWU7CisgICAgICAgIGNv
bnN0IEZhc3RCaXRWZWN0b3ImIGxpdmVuZXNzID0gY29kZUJsb2NrLT5saXZlQ2FsbGVlTG9jYWxz
QXRZaWVsZChsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpOworICAgICAgICBsaXZlbmVzcy5mb3JFYWNo
U2V0Qml0KFsmXSh1bnNpZ25lZCBsb2NhbCkgeworICAgICAgICAgICAgZnVuY3Rvcihjb2RlQmxv
Y2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwobG9jYWwp
Lm9mZnNldCgpKTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAgICAgZGVm
YXVsdDoKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgYnJl
YWs7CkBAIC0yODksNiArMzAyLDcgQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0
KENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2MKICAgICBjYXNl
IG9wX3Rocm93OgogICAgIGNhc2Ugb3BfdGhyb3dfc3RhdGljX2Vycm9yOgogICAgIGNhc2Ugb3Bf
c2F2ZToKKyAgICBjYXNlIG9wX3NhdmVfaGludDoKICAgICBjYXNlIG9wX2Fzc2VydDoKICAgICBj
YXNlIG9wX2RlYnVnOgogICAgIGNhc2Ugb3BfcmV0OgpAQCAtMzIzLDYgKzMzNyw4IEBAIHZvaWQg
Y29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNv
ZGVCYXNpY0Jsb2NrKiBibG9jCiAgICAgY2FzZSBvcF9wcm9maWxlX2NvbnRyb2xfZmxvdzoKICAg
ICBjYXNlIG9wX3B1dF90b19hcmd1bWVudHM6CiAgICAgY2FzZSBvcF93YXRjaGRvZzoKKyAgICBj
YXNlIG9wX2NsZWFyX2dlbmVyYXRvcl9mcmFtZToKKyAgICBjYXNlIG9wX25vcDoKICNkZWZpbmUg
TExJTlRfSEVMUEVSX09QQ09ERVMob3Bjb2RlLCBsZW5ndGgpIGNhc2Ugb3Bjb2RlOgogICAgICAg
ICBGT1JfRUFDSF9MTElOVF9PUENPREVfRVhURU5TSU9OKExMSU5UX0hFTFBFUl9PUENPREVTKTsK
ICN1bmRlZiBMTElOVF9IRUxQRVJfT1BDT0RFUwpAQCAtNDE1LDcgKzQzMSw5IEBAIHZvaWQgY29t
cHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVC
YXNpY0Jsb2NrKiBibG9jCiAgICAgY2FzZSBvcF9kZWxfYnlfdmFsOgogICAgIGNhc2Ugb3BfdW5z
aWduZWQ6CiAgICAgY2FzZSBvcF9nZXRfZnJvbV9hcmd1bWVudHM6IAotICAgIGNhc2Ugb3BfZ2V0
X3Jlc3RfbGVuZ3RoOiB7CisgICAgY2FzZSBvcF9nZXRfcmVzdF9sZW5ndGg6CisgICAgY2FzZSBv
cF9uZXdfZ2VuZXJhdG9yX2ZyYW1lOgorICAgIGNhc2Ugb3BfcmVzdW1lX2Zyb21fZ2VuZXJhdG9y
X2ZyYW1lOiB7CiAgICAgICAgIEFTU0VSVChvcGNvZGVMZW5ndGhzW29wY29kZUlEXSA+IDEpOwog
ICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBpbnN0cnVj
dGlvblsxXS51Lm9wZXJhbmQpOwogICAgICAgICByZXR1cm47CkBAIC00MzEsNyArNDQ5LDcgQEAg
dm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBC
eXRlY29kZUJhc2ljQmxvY2sqIGJsb2MKICAgICAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBp
bnN0cnVjdGlvbiwgb3Bjb2RlSUQsIHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGkpLm9mZnNldCgp
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBjYXNlIG9wX3Jlc3VtZTogeworICAgIGNh
c2Ugb3BfcmVzdW1lX2hpbnQ6IHsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoYmxvY2stPnN1Y2Nl
c3NvcnMoKS5zaXplKCkgPT0gMSk7CiAgICAgICAgIGJsb2NrLT5zdWNjZXNzb3JzKClbMF0tPmlu
KCkuZm9yRWFjaFNldEJpdChbJl0odW5zaWduZWQgbG9jYWwpIHsKICAgICAgICAgICAgIGZ1bmN0
b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIHZpcnR1YWxSZWdpc3RlckZvckxv
Y2FsKGxvY2FsKS5vZmZzZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2suY3BwCmluZGV4IDU5MDVlOTE4M2M4ZjEyNjY0ZTJiYTNkZDI5YTVjNDY1Njc2OGRj
MDMuLjkyZDRhOWZkY2RmNTVlZjcxYjFlZmIwOTU3YzY5MmI1NzYxOTEyYzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC0xNTU2LDI3ICsxNTU2
LDYzIEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoCiAgICAgICAgICAgICBvdXQucHJp
bnRmKCIlcywgJWQiLCBkZWJ1Z0hvb2tOYW1lKGRlYnVnSG9va0lEKSwgaGFzQnJlYWtwb2ludEZs
YWcpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgY2FzZSBvcF9zYXZl
OiB7Ci0gICAgICAgICAgICBpbnQgZ2VuZXJhdG9yID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAg
ICAgIGNhc2Ugb3Bfc2F2ZV9oaW50OiB7CisgICAgICAgICAgICBpbnQgZnJhbWUgPSAoKytpdCkt
PnUub3BlcmFuZDsKICAgICAgICAgICAgIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9
ICgrK2l0KS0+dS51bnNpZ25lZFZhbHVlOwogICAgICAgICAgICAgaW50IG9mZnNldCA9ICgrK2l0
KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZW5lc3Mg
PSBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkW2xpdmVDYWxsZWVMb2NhbHNJ
bmRleF07CiAgICAgICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlv
biwgaXQsICJzYXZlIik7Ci0gICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgIiwgcmVnaXN0ZXJO
YW1lKGdlbmVyYXRvcikuZGF0YSgpKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAiLCBy
ZWdpc3Rlck5hbWUoZnJhbWUpLmRhdGEoKSk7CiAgICAgICAgICAgICBsaXZlbmVzcy5kdW1wKG91
dCk7CiAgICAgICAgICAgICBvdXQucHJpbnRmKCIoQGxpdmUlMXUpLCAlZCgtPiVkKSIsIGxpdmVD
YWxsZWVMb2NhbHNJbmRleCwgb2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNldCk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQotICAgICAgICBjYXNlIG9wX3Jlc3VtZTogewotICAgICAgICAg
ICAgaW50IGdlbmVyYXRvciA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBjYXNlIG9wX3Nh
dmU6IHsKKyAgICAgICAgICAgIGludCBmcmFtZSA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAg
ICAgICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gKCsraXQpLT51LnVuc2lnbmVk
VmFsdWU7CisgICAgICAgICAgICArK2l0OyAvLyBkaXNjYXJkIG9mZnNldC4KICAgICAgICAgICAg
IGNvbnN0IEZhc3RCaXRWZWN0b3ImIGxpdmVuZXNzID0gbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVl
TG9jYWxzQXRZaWVsZFtsaXZlQ2FsbGVlTG9jYWxzSW5kZXhdOwotICAgICAgICAgICAgcHJpbnRM
b2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAicmVzdW1lIik7Ci0gICAgICAg
ICAgICBvdXQucHJpbnRmKCIlcywgIiwgcmVnaXN0ZXJOYW1lKGdlbmVyYXRvcikuZGF0YSgpKTsK
KyAgICAgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwg
InNhdmUiKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAiLCByZWdpc3Rlck5hbWUoZnJh
bWUpLmRhdGEoKSk7CiAgICAgICAgICAgICBsaXZlbmVzcy5kdW1wKG91dCk7CiAgICAgICAgICAg
ICBvdXQucHJpbnRmKCIoQGxpdmUlMXUpIiwgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4KTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CisgICAgICAgIGNhc2Ugb3BfcmVzdW1lX2hpbnQ6IHsK
KyAgICAgICAgICAgIGludCBmcmFtZSA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAg
dW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gKCsraXQpLT51LnVuc2lnbmVkVmFsdWU7
CisgICAgICAgICAgICB1bnNpZ25lZCBtYXhMaXZlQ2FsbGVlcyA9ICgrK2l0KS0+dS51bnNpZ25l
ZFZhbHVlOworICAgICAgICAgICAgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZW5lc3MgPSBtX3Jh
cmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkW2xpdmVDYWxsZWVMb2NhbHNJbmRleF07
CisgICAgICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQs
ICJyZXN1bWUiKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAiLCByZWdpc3Rlck5hbWUo
ZnJhbWUpLmRhdGEoKSk7CisgICAgICAgICAgICBsaXZlbmVzcy5kdW1wKG91dCk7CisgICAgICAg
ICAgICBvdXQucHJpbnRmKCIoQGxpdmUlMXUpLCAldSIsIGxpdmVDYWxsZWVMb2NhbHNJbmRleCwg
bWF4TGl2ZUNhbGxlZXMpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAg
Y2FzZSBvcF9yZXN1bWVfZnJvbV9nZW5lcmF0b3JfZnJhbWU6IHsKKyAgICAgICAgICAgIGludCBk
c3QgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIGludCBmcmFtZSA9ICgrK2l0KS0+
dS5vcGVyYW5kOworICAgICAgICAgICAgdW5zaWduZWQgaW5kZXggPSAoKytpdCktPnUudW5zaWdu
ZWRWYWx1ZTsKKyAgICAgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0
aW9uLCBpdCwgInJlc3VtZV9mcm9tX2dlbmVyYXRvcl9mcmFtZSIpOworICAgICAgICAgICAgb3V0
LnByaW50ZigiJXMsICVzLCAldSIsIHJlZ2lzdGVyTmFtZShkc3QpLmRhdGEoKSwgcmVnaXN0ZXJO
YW1lKGZyYW1lKS5kYXRhKCksIGluZGV4KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9
CisgICAgICAgIGNhc2Ugb3BfY2xlYXJfZ2VuZXJhdG9yX2ZyYW1lOiB7CisgICAgICAgICAgICBp
bnQgZnJhbWUgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIHByaW50TG9jYXRpb25P
cEFuZFJlZ2lzdGVyT3BlcmFuZChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgImNsZWFyX2dlbmVy
YXRvcl9mcmFtZSIsIGZyYW1lKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAg
ICAgIGNhc2Ugb3BfbmV3X2dlbmVyYXRvcl9mcmFtZTogeworICAgICAgICAgICAgaW50IGRzdCA9
ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgdW5zaWduZWQgZ2VuZXJhdG9yRnJhbWVT
aXplID0gKCsraXQpLT51LnVuc2lnbmVkVmFsdWU7CisgICAgICAgICAgICBwcmludExvY2F0aW9u
T3BBbmRSZWdpc3Rlck9wZXJhbmQob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJuZXdfZ2VuZXJh
dG9yX2ZyYW1lIiwgZHN0KTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIiAldSIsIGdlbmVyYXRv
ckZyYW1lU2l6ZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNl
IG9wX25vcDogeworICAgICAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9j
YXRpb24sIGl0LCAibm9wIik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAg
ICBjYXNlIG9wX2Fzc2VydDogewogICAgICAgICAgICAgaW50IGNvbmRpdGlvbiA9ICgrK2l0KS0+
dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IGxpbmUgPSAoKytpdCktPnUub3BlcmFuZDsKQEAg
LTE4NDcsNiArMTg4MywxMiBAQCB2b2lkIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZt
LCBDb3B5UGFyc2VkQmxvY2tUYWcsIENvZGVCbG9jayYgb3RoZXIpCiAgICAgc2V0TnVtUGFyYW1l
dGVycyh1bmxpbmtlZENvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKTsKIH0KIAorc3RydWN0IEdl
bmVyYXRvclBvaW50cyB7CisgICAgc2l6ZV90IHNhdmVQb2ludDsKKyAgICBzaXplX3QgbWVyZ2VQ
b2ludDsKKyAgICBzaXplX3QgcmVzdW1lUG9pbnQ7Cit9OworCiB2b2lkIENvZGVCbG9jazo6Zmlu
aXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVu
bGlua2VkQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jaywKICAgICBKU1Njb3BlKiBzY29wZSkK
IHsKQEAgLTE5ODAsOSArMjAyMiwxMCBAQCB2b2lkIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24o
Vk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGluawogICAgIEhh
c2hTZXQ8SlNNb2R1bGVFbnZpcm9ubWVudCo+IHN0cm9uZ2x5UmVmZXJlbmNlZE1vZHVsZUVudmly
b25tZW50czsKIAogICAgIC8vIEJvb2trZWVwIHRoZSBtZXJnZSBwb2ludCBieXRlY29kZSBvZmZz
ZXRzLgotICAgIFZlY3RvcjxzaXplX3Q+IG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldHM7CisgICAg
VmVjdG9yPEdlbmVyYXRvclBvaW50cz4gbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0czsKIAogICAg
IFJlZkNvdW50ZWRBcnJheTxJbnN0cnVjdGlvbj4gaW5zdHJ1Y3Rpb25zKGluc3RydWN0aW9uQ291
bnQpOworICAgIHVuc2lnbmVkIG5ld0dlbmVyYXRvckZyYW1lSW5zdHJ1Y3Rpb25PZmZzZXQgPSAw
OwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgIWluc3RydWN0aW9uUmVhZGVyLmF0RW5kKCk7
ICkgewogICAgICAgICBjb25zdCBVbmxpbmtlZEluc3RydWN0aW9uKiBwYyA9IGluc3RydWN0aW9u
UmVhZGVyLm5leHQoKTsKQEAgLTIyNzAsMTIgKzIzMTMsMjYgQEAgdm9pZCBDb2RlQmxvY2s6OmZp
bmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBV
bmxpbmsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKLSAgICAgICAgY2FzZSBvcF9z
YXZlOiB7CisgICAgICAgIGNhc2Ugb3Bfc2F2ZV9oaW50OiB7CiAgICAgICAgICAgICB1bnNpZ25l
ZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSBwY1syXS51LmluZGV4OwogICAgICAgICAgICAgaW50
IG9mZnNldCA9IHBjWzNdLnUub3BlcmFuZDsKICAgICAgICAgICAgIGlmIChsaXZlQ2FsbGVlTG9j
YWxzSW5kZXggPj0gbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0cy5zaXplKCkpCiAgICAgICAgICAg
ICAgICAgbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0cy5yZXNpemUobGl2ZUNhbGxlZUxvY2Fsc0lu
ZGV4ICsgMSk7Ci0gICAgICAgICAgICBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXRzW2xpdmVDYWxs
ZWVMb2NhbHNJbmRleF0gPSBpICsgb2Zmc2V0OworICAgICAgICAgICAgbWVyZ2VQb2ludEJ5dGVj
b2RlT2Zmc2V0c1tsaXZlQ2FsbGVlTG9jYWxzSW5kZXhdLnNhdmVQb2ludCA9IGk7CisgICAgICAg
ICAgICBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXRzW2xpdmVDYWxsZWVMb2NhbHNJbmRleF0ubWVy
Z2VQb2ludCA9IGkgKyBvZmZzZXQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisg
ICAgICAgIGNhc2Ugb3BfcmVzdW1lX2hpbnQ6IHsKKyAgICAgICAgICAgIHVuc2lnbmVkIGxpdmVD
YWxsZWVMb2NhbHNJbmRleCA9IHBjWzJdLnUuaW5kZXg7CisgICAgICAgICAgICBpZiAobGl2ZUNh
bGxlZUxvY2Fsc0luZGV4ID49IG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldHMuc2l6ZSgpKQorICAg
ICAgICAgICAgICAgIG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldHMucmVzaXplKGxpdmVDYWxsZWVM
b2NhbHNJbmRleCArIDEpOworICAgICAgICAgICAgbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0c1ts
aXZlQ2FsbGVlTG9jYWxzSW5kZXhdLnJlc3VtZVBvaW50ID0gaTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBvcF9uZXdfZ2VuZXJhdG9yX2ZyYW1lOiB7Cisg
ICAgICAgICAgICBuZXdHZW5lcmF0b3JGcmFtZUluc3RydWN0aW9uT2Zmc2V0ID0gaTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKQEAgLTIyOTAsMTggKzIzNDcsNTcgQEAgdm9pZCBD
b2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJF
eGVjdXRhYmxlLCBVbmxpbmsKIAogICAgIG1faW5zdHJ1Y3Rpb25zID0gV1RGTW92ZShpbnN0cnVj
dGlvbnMpOwogCi0gICAgLy8gUGVyZm9ybSBieXRlY29kZSBsaXZlbmVzcyBhbmFseXNpcyB0byBk
ZXRlcm1pbmUgd2hpY2ggbG9jYWxzIGFyZSBsaXZlIGFuZCBzaG91bGQgYmUgcmVzdW1lZCB3aGVu
IGV4ZWN1dGluZyBvcF9yZXN1bWUuCisgICAgLy8gUGVyZm9ybSBieXRlY29kZSBsaXZlbmVzcyBh
bmFseXNpcyB0byBkZXRlcm1pbmUgd2hpY2ggbG9jYWxzIGFyZSBsaXZlIGFuZCBzaG91bGQgYmUg
cmVzdW1lZCB3aGVuIGV4ZWN1dGluZyBvcF9yZXN1bWVfaGludC4KICAgICBpZiAodW5saW5rZWRD
b2RlQmxvY2stPnBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yQm9keU1v
ZGUpIHsKKyAgICAgICAgdW5zaWduZWQgbWF4R2VuZXJhdG9yRnJhbWVTaXplID0gMDsKICAgICAg
ICAgaWYgKHNpemVfdCBjb3VudCA9IG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldHMuc2l6ZSgpKSB7
CiAgICAgICAgICAgICBjcmVhdGVSYXJlRGF0YUlmTmVjZXNzYXJ5KCk7CiAgICAgICAgICAgICBC
eXRlY29kZUxpdmVuZXNzQW5hbHlzaXMgbGl2ZW5lc3ModGhpcyk7CiAgICAgICAgICAgICBtX3Jh
cmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkLmdyb3coY291bnQpOworCiAgICAgICAg
ICAgICBzaXplX3QgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gMDsKLSAgICAgICAgICAgIGZvciAo
c2l6ZV90IGJ5dGVjb2RlT2Zmc2V0IDogbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0cykgewotICAg
ICAgICAgICAgICAgIG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGRbbGl2ZUNh
bGxlZUxvY2Fsc0luZGV4XSA9IGxpdmVuZXNzLmdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVPZmZz
ZXQoYnl0ZWNvZGVPZmZzZXQpOworCisgICAgICAgICAgICAvLyBDYWxjdWxhdGUgbGl2ZW5lc3Mg
YW5kIHN0b3JlIGRhdGEuCisgICAgICAgICAgICBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSAwOwor
ICAgICAgICAgICAgZm9yIChjb25zdCBHZW5lcmF0b3JQb2ludHMmIHBvaW50cyA6IG1lcmdlUG9p
bnRCeXRlY29kZU9mZnNldHMpIHsKKyAgICAgICAgICAgICAgICBzaXplX3QgbWVyZ2VQb2ludEJ5
dGVjb2RlT2Zmc2V0ID0gcG9pbnRzLm1lcmdlUG9pbnQ7CisgICAgICAgICAgICAgICAgRmFzdEJp
dFZlY3RvciBsaXZlbmVzc1ZlY3RvciA9IGxpdmVuZXNzLmdldExpdmVuZXNzSW5mb0F0Qnl0ZWNv
ZGVPZmZzZXQobWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0KTsKKyAgICAgICAgICAgICAgICBtX3Jh
cmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkW2xpdmVDYWxsZWVMb2NhbHNJbmRleF0g
PSBsaXZlbmVzc1ZlY3RvcjsKKyAgICAgICAgICAgICAgICBtYXhHZW5lcmF0b3JGcmFtZVNpemUg
PSBzdGQ6Om1heDx1bnNpZ25lZD4obWF4R2VuZXJhdG9yRnJhbWVTaXplLCBsaXZlbmVzc1ZlY3Rv
ci5iaXRDb3VudCgpKTsKKyAgICAgICAgICAgICAgICArK2xpdmVDYWxsZWVMb2NhbHNJbmRleDsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gUmV3cml0ZSBieXRlY29kZXMgYmFzZWQg
b24gY2FsY3VsYXRlZCBsaXZlbmVzcy4KKyAgICAgICAgICAgIGxpdmVDYWxsZWVMb2NhbHNJbmRl
eCA9IDA7CisgICAgICAgICAgICBmb3IgKGNvbnN0IEdlbmVyYXRvclBvaW50cyYgcG9pbnRzIDog
bWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0cykgeworICAgICAgICAgICAgICAgIHNpemVfdCBzYXZl
UG9pbnRCeXRlY29kZU9mZnNldCA9IHBvaW50cy5zYXZlUG9pbnQ7CisgICAgICAgICAgICAgICAg
c2l6ZV90IHJlc3VtZVBvaW50Qnl0ZWNvZGVPZmZzZXQgPSBwb2ludHMucmVzdW1lUG9pbnQ7CisK
KyAgICAgICAgICAgICAgICBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlbmVzc1ZlY3RvciA9IG1f
cmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGRbbGl2ZUNhbGxlZUxvY2Fsc0luZGV4
XTsKKworICAgICAgICAgICAgICAgIC8vIFBhdGNoIG9wX3Jlc3VtZV9oaW50IHdpdGggYWN0dWFs
IG9wcy4KKyAgICAgICAgICAgICAgICBpbnQgZ2VuZXJhdG9yRnJhbWVJbmRleCA9IG1faW5zdHJ1
Y3Rpb25zW3Jlc3VtZVBvaW50Qnl0ZWNvZGVPZmZzZXQgKyAxXS51Lm9wZXJhbmQ7CisgICAgICAg
ICAgICAgICAgaWYgKCFsaXZlbmVzc1ZlY3Rvci5iaXRDb3VudCgpKSB7CisgICAgICAgICAgICAg
ICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgNDsgKytpKQorICAgICAgICAgICAgICAgICAg
ICAgICAgbV9pbnN0cnVjdGlvbnNbcmVzdW1lUG9pbnRCeXRlY29kZU9mZnNldCArIGldID0gdm0u
aW50ZXJwcmV0ZXItPmdldE9wY29kZShvcF9ub3ApOworICAgICAgICAgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpID0gMDsKKyAgICAgICAgICAgICAgICAgICAg
bGl2ZW5lc3NWZWN0b3IuZm9yRWFjaFNldEJpdChbJl0odW5zaWduZWQgbG9jYWwpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbmRleCA9IGkrKzsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHNpemVfdCBvZmZzZXQgPSByZXN1bWVQb2ludEJ5dGVjb2RlT2Zmc2V0ICsgaW5kZXgg
KiA0OworICAgICAgICAgICAgICAgICAgICAgICAgbV9pbnN0cnVjdGlvbnNbb2Zmc2V0XSA9IHZt
LmludGVycHJldGVyLT5nZXRPcGNvZGUob3BfcmVzdW1lX2Zyb21fZ2VuZXJhdG9yX2ZyYW1lKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIG1faW5zdHJ1Y3Rpb25zW29mZnNldCArIDFdLnUub3Bl
cmFuZCA9IHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGxvY2FsKS5vZmZzZXQoKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIG1faW5zdHJ1Y3Rpb25zW29mZnNldCArIDJdLnUub3BlcmFuZCA9IGdl
bmVyYXRvckZyYW1lSW5kZXg7CisgICAgICAgICAgICAgICAgICAgICAgICBtX2luc3RydWN0aW9u
c1tvZmZzZXQgKyAzXS51LnVuc2lnbmVkVmFsdWUgPSBpbmRleDsKKyAgICAgICAgICAgICAgICAg
ICAgfSk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgbV9pbnN0cnVjdGlv
bnNbc2F2ZVBvaW50Qnl0ZWNvZGVPZmZzZXRdID0gdm0uaW50ZXJwcmV0ZXItPmdldE9wY29kZShv
cF9zYXZlKTsKICAgICAgICAgICAgICAgICArK2xpdmVDYWxsZWVMb2NhbHNJbmRleDsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQorICAgICAgICAvLyBGaWxsIG9wX25ld19nZW5lcmF0b3JfZnJh
bWUncyBzaXplLgorICAgICAgICBtX2luc3RydWN0aW9uc1tuZXdHZW5lcmF0b3JGcmFtZUluc3Ry
dWN0aW9uT2Zmc2V0ICsgMl0udS51bnNpZ25lZFZhbHVlID0gbWF4R2VuZXJhdG9yRnJhbWVTaXpl
OwogICAgIH0KIAogICAgIC8vIFNldCBvcHRpbWl6YXRpb24gdGhyZXNob2xkcyBvbmx5IGFmdGVy
IG1faW5zdHJ1Y3Rpb25zIGlzIGluaXRpYWxpemVkLCBzaW5jZSB0aGVzZQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmNwcAppbmRl
eCBlMmNiMDAwNDgzNzk0YmE5MmQ1MTBkY2Y1ZmE5OTQ4ODVhMjNkYzNkLi4yZjM1Y2ZiMzk5NTcw
NzU4OGMyYzU4YTQyOTM0NzQxMzQzYjdlNTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmNwcApAQCAtNTQsNyArNTQsNyBA
QCBzdGF0aWMgdm9pZCBnZXRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayog
Y29kZUJsb2NrLCBJbnRlcnByZXRlciogaQogICAgIGNhc2Ugb3Bfam5sZXNzZXE6CiAgICAgY2Fz
ZSBvcF9qbmdyZWF0ZXI6CiAgICAgY2FzZSBvcF9qbmdyZWF0ZXJlcToKLSAgICBjYXNlIG9wX3Nh
dmU6IC8vIFRoZSBqdW1wIG9mIG9wX3NhdmUgaXMgcHVyZWx5IGZvciBjYWxjdWxhdGluZyBsaXZl
bmVzcy4KKyAgICBjYXNlIG9wX3NhdmVfaGludDogLy8gVGhlIGp1bXAgb2Ygb3Bfc2F2ZV9oaW50
IGlzIHB1cmVseSBmb3IgY2FsY3VsYXRpbmcgbGl2ZW5lc3MuCiAgICAgICAgIG91dC5hcHBlbmQo
Ynl0ZWNvZGVPZmZzZXQgKyBjdXJyZW50WzNdLnUub3BlcmFuZCk7CiAgICAgICAgIGJyZWFrOwog
ICAgIGNhc2Ugb3Bfc3dpdGNoX2ltbToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXggZDE1ZTIyNDM1MjY2
ZmUxYWZmM2Q1Zjc5YTFkZGE3NWI5YmRhZjNmMy4uMzRiOGY2MTEwNzRlNWVhMzVlZDM3NGMxMjc4
ODNmNTIxOWYxZjc3OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTI1Nyw3ICsyNTcsNyBAQCBQYXJz
ZXJFcnJvciBCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUoKQogICAgICAgICAvLyAgICBmdW5j
dGlvbiAqZ2VuKGEsIGIgPSBoZWxsbygpKQogICAgICAgICAvLyAgICB7CiAgICAgICAgIC8vICAg
ICAgICByZXR1cm4gewotICAgICAgICAvLyAgICAgICAgICAgIEBnZW5lcmF0b3JOZXh0OiBmdW5j
dGlvbiAoQGdlbmVyYXRvciwgQGdlbmVyYXRvclN0YXRlLCBAZ2VuZXJhdG9yVmFsdWUsIEBnZW5l
cmF0b3JSZXN1bWVNb2RlKQorICAgICAgICAvLyAgICAgICAgICAgIEBnZW5lcmF0b3JOZXh0OiBm
dW5jdGlvbiAoQGdlbmVyYXRvciwgQGdlbmVyYXRvclN0YXRlLCBAZ2VuZXJhdG9yVmFsdWUsIEBn
ZW5lcmF0b3JSZXN1bWVNb2RlLCBAZ2VuZXJhdG9yRnJhbWUpCiAgICAgICAgIC8vICAgICAgICAg
ICAgewogICAgICAgICAvLyAgICAgICAgICAgICAgICBhcmd1bWVudHM7ICAvLyBUaGlzIGBhcmd1
bWVudHNgIHNob3VsZCByZWZlcmVuY2UgdG8gdGhlIGdlbidzIGFyZ3VtZW50cy4KICAgICAgICAg
Ly8gICAgICAgICAgICAgICAgLi4uCkBAIC01MzcsNiArNTM3LDkgQEAgUGFyc2VyRXJyb3IgQnl0
ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKCkKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2Vu
ZXJhdG9yQm9keU1vZGU6IHsKICAgICAgICAgLy8gfHRoaXN8IGlzIGFscmVhZHkgZmlsbGVkIGNv
cnJlY3RseSBiZWZvcmUgaGVyZS4KICAgICAgICAgZW1pdExvYWQobV9uZXdUYXJnZXRSZWdpc3Rl
ciwganNVbmRlZmluZWQoKSk7CisKKyAgICAgICAgZW1pdE5ld0dlbmVyYXRvckZyYW1lKGdlbmVy
YXRvckZyYW1lUmVnaXN0ZXIoKSk7CisgICAgICAgIGVtaXRQdXRCeUlkKGdlbmVyYXRvclJlZ2lz
dGVyKCksIHByb3BlcnR5TmFtZXMoKS5nZW5lcmF0b3JGcmFtZVByaXZhdGVOYW1lLCBnZW5lcmF0
b3JGcmFtZVJlZ2lzdGVyKCkpOwogICAgICAgICBicmVhazsKICAgICB9CiAKQEAgLTI3NDQsNiAr
Mjc0NywxNCBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9u
KFJlZ2lzdGVySUQqIGRzdCwgRnVuY3Rpb25NZXRhZGF0YQogICAgIHJldHVybiBkc3Q7CiB9CiAK
K1JlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3R2VuZXJhdG9yRnJhbWUoUmVn
aXN0ZXJJRCogZHN0KQoreworICAgIGVtaXRPcGNvZGUob3BfbmV3X2dlbmVyYXRvcl9mcmFtZSk7
CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGRzdC0+aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rp
b25zKCkuYXBwZW5kKDApOworICAgIHJldHVybiBkc3Q7Cit9CisKIFJlZ2lzdGVySUQqIEJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0Q2FsbChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGZ1bmMs
IEV4cGVjdGVkRnVuY3Rpb24gZXhwZWN0ZWRGdW5jdGlvbiwgQ2FsbEFyZ3VtZW50cyYgY2FsbEFy
Z3VtZW50cywgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlv
biYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKQogewogICAgIHJl
dHVybiBlbWl0Q2FsbChvcF9jYWxsLCBkc3QsIGZ1bmMsIGV4cGVjdGVkRnVuY3Rpb24sIGNhbGxB
cmd1bWVudHMsIGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCk7CkBAIC00MTQ0LDggKzQxNTUs
OCBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0WWllbGRQb2ludChSZWdpc3RlcklEKiBh
cmd1bWVudCkKIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRTYXZlKExhYmVsKiBtZXJnZVBv
aW50LCB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpCiB7CiAgICAgc2l6ZV90IGJlZ2lu
ID0gaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpOwotICAgIGVtaXRPcGNvZGUob3Bfc2F2ZSk7Ci0gICAg
aW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fZ2VuZXJhdG9yUmVnaXN0ZXItPmluZGV4KCkpOworICAg
IGVtaXRPcGNvZGUob3Bfc2F2ZV9oaW50KTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZ2Vu
ZXJhdG9yRnJhbWVSZWdpc3RlcigpLT5pbmRleCgpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBl
bmQobGl2ZUNhbGxlZUxvY2Fsc0luZGV4KTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobWVy
Z2VQb2ludC0+YmluZChiZWdpbiwgaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKSk7CiB9CkBAIC00MTUz
LDkgKzQxNjQsMzEgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFNhdmUoTGFiZWwqIG1l
cmdlUG9pbnQsIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmQKIHZvaWQgQnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXRSZXN1bWUoTGFiZWwqIG1lcmdlUG9pbnQsIHVuc2lnbmVkIGxpdmVDYWxsZWVM
b2NhbHNJbmRleCkKIHsKICAgICBlbWl0R2VuZXJhdG9yU3RhdGVMYWJlbCgpOwotICAgIGVtaXRP
cGNvZGUob3BfcmVzdW1lKTsKLSAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobV9nZW5lcmF0b3JS
ZWdpc3Rlci0+aW5kZXgoKSk7CisKKyAgICByZWNsYWltRnJlZVJlZ2lzdGVycygpOworICAgIHVu
c2lnbmVkIG1heExpdmVMb2NhbHMgPSAwOworICAgIGZvciAoY29uc3QgUmVnaXN0ZXJJRCYgcmVn
IDogbV9jYWxsZWVMb2NhbHMpIHsKKyAgICAgICAgaWYgKHJlZy5yZWZDb3VudCgpKQorICAgICAg
ICAgICAgKyttYXhMaXZlTG9jYWxzOworICAgIH0KKworICAgIC8vIFRoaXMgb3BfcmVzdW1lX2hp
bnQgd2lsbCBiZSByZXBsYWNlZCB3aXRoIHRoZSBhY3R1YWwgb3BzLgorICAgIGlmIChtYXhMaXZl
TG9jYWxzKQorICAgICAgICBtYXhMaXZlTG9jYWxzIC09IDE7CisKKyAgICBlbWl0T3Bjb2RlKG9w
X3Jlc3VtZV9oaW50KTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZ2VuZXJhdG9yRnJhbWVS
ZWdpc3RlcigpLT5pbmRleCgpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobGl2ZUNhbGxl
ZUxvY2Fsc0luZGV4KTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobWF4TGl2ZUxvY2Fscyk7
CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1heExpdmVMb2NhbHM7ICsraSkgeworICAg
ICAgICAvLyBOb3Agc3BhY2UuIExhdGVyIHdlIHdpbGwgZmlsbCB0aGlzIHdpdGggdGhlIGFjdHVh
bCByZXN1bWUgb3BlcmF0aW9ucy4KKyAgICAgICAgZW1pdE9wY29kZShvcF9ub3ApOworICAgICAg
ICBlbWl0T3Bjb2RlKG9wX25vcCk7CisgICAgICAgIGVtaXRPcGNvZGUob3Bfbm9wKTsKKyAgICAg
ICAgZW1pdE9wY29kZShvcF9ub3ApOworICAgIH0KKyAgICBlbWl0T3Bjb2RlKG9wX2NsZWFyX2dl
bmVyYXRvcl9mcmFtZSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGdlbmVyYXRvckZyYW1l
UmVnaXN0ZXIoKS0+aW5kZXgoKSk7CiAgICAgZW1pdExhYmVsKG1lcmdlUG9pbnQpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmgKaW5kZXggN2QwYzIwYjZmNTE2YTE3ZTg5M2YxYmJhMDgwM2MxMzMzZmZjOGQwZC4u
M2QzMzQ3ODE1YWMzMGE4MmU2MjZlM2UwNzgwODFiZTJiM2U5YmUzZiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApA
QCAtNTIyLDYgKzUyMiw3IEBACiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdEZWZhdWx0Q29u
c3RydWN0b3IoUmVnaXN0ZXJJRCogZHN0LCBDb25zdHJ1Y3RvcktpbmQsIGNvbnN0IElkZW50aWZp
ZXImIG5hbWUpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0TmV3QXJyb3dGdW5jdGlvbkV4cHJl
c3Npb24oUmVnaXN0ZXJJRCosIEFycm93RnVuY0V4cHJOb2RlKik7CiAgICAgICAgIFJlZ2lzdGVy
SUQqIGVtaXROZXdSZWdFeHAoUmVnaXN0ZXJJRCogZHN0LCBSZWdFeHAqKTsKKyAgICAgICAgUmVn
aXN0ZXJJRCogZW1pdE5ld0dlbmVyYXRvckZyYW1lKFJlZ2lzdGVySUQqIGRzdCk7CiAKICAgICAg
ICAgUmVnaXN0ZXJJRCogZW1pdE1vdmVMaW5rVGltZUNvbnN0YW50KFJlZ2lzdGVySUQqIGRzdCwg
TGlua1RpbWVDb25zdGFudCk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRNb3ZlRW1wdHlWYWx1
ZShSZWdpc3RlcklEKiBkc3QpOwpAQCAtNjg0LDYgKzY4NSw3IEBACiAgICAgICAgIFJlZ2lzdGVy
SUQqIGdlbmVyYXRvclN0YXRlUmVnaXN0ZXIoKSB7IHJldHVybiAmbV9wYXJhbWV0ZXJzWzJdOyB9
CiAgICAgICAgIFJlZ2lzdGVySUQqIGdlbmVyYXRvclZhbHVlUmVnaXN0ZXIoKSB7IHJldHVybiAm
bV9wYXJhbWV0ZXJzWzNdOyB9CiAgICAgICAgIFJlZ2lzdGVySUQqIGdlbmVyYXRvclJlc3VtZU1v
ZGVSZWdpc3RlcigpIHsgcmV0dXJuICZtX3BhcmFtZXRlcnNbNF07IH0KKyAgICAgICAgUmVnaXN0
ZXJJRCogZ2VuZXJhdG9yRnJhbWVSZWdpc3RlcigpIHsgcmV0dXJuICZtX3BhcmFtZXRlcnNbNV07
IH0KIAogICAgICAgICBDb2RlVHlwZSBjb2RlVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZVR5
cGU7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFj
dEhlYXAuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RIZWFwLmgKaW5k
ZXggNGRlYzhmYTAzNzc2ZTAxZTZjZDM3NDYwNjU5Y2M1NjExNjIzOGM2NS4uZGU0Y2MwNWNlNzgy
YjIwMTFjMGI2NmJkNGU0ZjZhNWVhMmUwNDg2MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBYnN0cmFjdEhlYXAuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Fic3RyYWN0SGVhcC5oCkBAIC02OCw2ICs2OCw3IEBACiAgICAgbWFjcm8oU2NvcGVQ
cm9wZXJ0aWVzKSBcCiAgICAgbWFjcm8oVHlwZWRBcnJheVByb3BlcnRpZXMpIFwKICAgICBtYWNy
byhIZWFwT2JqZWN0Q291bnQpIC8qIFVzZWQgdG8gcmVmbGVjdCB0aGUgZmFjdCB0aGF0IHNvbWUg
YWxsb2NhdGlvbnMgcmV2ZWFsIG9iamVjdCBpZGVudGl0eSAqL1wKKyAgICBtYWNybyhHZW5lcmF0
b3JGcmFtZVN0YXRlKSBcCiAgICAgbWFjcm8oUmVnRXhwU3RhdGUpIFwKICAgICBtYWNybyhNYXRo
RG90UmFuZG9tU3RhdGUpIFwKICAgICBtYWNybyhJbnRlcm5hbFN0YXRlKSBcCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVz
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxp
bmVzLmgKaW5kZXggOWVlYzYzY2ViMDcxYmMxNDg2YTAxMmMyODUwMWRiNjI0MjZiZGU3Yi4uODI1
MDgzNjhjOWE4ODA0MjMzMTBhMTM5NDE2ZGU3MTUzZTFjYzk0MCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMu
aApAQCAtMTY4Nyw2ICsxNjg3LDEwIEBACiAgICAgY2FzZSBOZXdSZWdleHA6CiAgICAgICAgIGZv
ck5vZGUobm9kZSkuc2V0KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYyktPnJlZ0V4cFN0cnVjdHVyZSgpKTsKICAgICAgICAgYnJlYWs7CisKKyAg
ICBjYXNlIE5ld0dlbmVyYXRvckZyYW1lOgorICAgICAgICBmb3JOb2RlKG5vZGUpLnNldChtX2dy
YXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5nZW5l
cmF0b3JGcmFtZVN0cnVjdHVyZSgpKTsKKyAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAg
ICBjYXNlIFRvVGhpczogewogICAgICAgICBBYnN0cmFjdFZhbHVlJiBzb3VyY2UgPSBmb3JOb2Rl
KG5vZGUtPmNoaWxkMSgpKTsKQEAgLTI1MTAsNiArMjUxNCwxNSBAQAogICAgICAgICBmb3JOb2Rl
KG5vZGUpLm1ha2VIZWFwVG9wKCk7CiAgICAgICAgIGJyZWFrOwogCisgICAgY2FzZSBTZXRHZW5l
cmF0b3JMb2NhbDoKKyAgICBjYXNlIFB1dEdlbmVyYXRvckZyYW1lTG9jYWxzOgorICAgICAgICBi
cmVhazsKKworICAgIGNhc2UgR2V0R2VuZXJhdG9yTG9jYWw6IHsKKyAgICAgICAgZm9yTm9kZShu
b2RlKS5tYWtlSGVhcFRvcCgpOworICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBjYXNlIEZv
cmNlT1NSRXhpdDoKICAgICBjYXNlIENoZWNrQmFkQ2VsbDoKICAgICAgICAgbV9zdGF0ZS5zZXRJ
c1ZhbGlkKGZhbHNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QmFja3dhcmRzUHJvcGFnYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0JhY2t3YXJkc1Byb3BhZ2F0aW9uUGhhc2UuY3BwCmluZGV4IGJmNjUxODg2ZTNhZjk1YTM0
NjYwNGJlM2U1NmIwMGZmNDE3MDBiYjcuLmZjNWM2MGVhZTA1NjUzYmMyZWVhZDNlOWNiM2ZhOTk2
MTYwMTIzNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFja3dh
cmRzUHJvcGFnYXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdCYWNrd2FyZHNQcm9wYWdhdGlvblBoYXNlLmNwcApAQCAtNDAzLDYgKzQwMywyMiBAQCBjbGFz
cyBCYWNrd2FyZHNQcm9wYWdhdGlvblBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CiAKKyAgICAgICAgY2FzZSBHZXRHZW5lcmF0b3JMb2NhbDogewor
ICAgICAgICAgICAgR2VuZXJhdG9yTG9jYWxEYXRhKiBnZW5lcmF0b3JMb2NhbERhdGEgPSBub2Rl
LT5nZW5lcmF0b3JMb2NhbERhdGEoKTsKKyAgICAgICAgICAgIGZsYWdzICY9IH5Ob2RlQnl0ZWNv
ZGVVc2VzQXNJbnQ7IC8vIFdlIGRvbid0IGNhcmUgYWJvdXQgY3Jvc3MtYmxvY2sgdXNlcy1hcy1p
bnQuCisgICAgICAgICAgICBtX2NoYW5nZWQgfD0gZ2VuZXJhdG9yTG9jYWxEYXRhLT5tZXJnZUZs
YWdzKGZsYWdzKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgY2Fz
ZSBTZXRHZW5lcmF0b3JMb2NhbDogeworICAgICAgICAgICAgR2VuZXJhdG9yTG9jYWxEYXRhKiBn
ZW5lcmF0b3JMb2NhbERhdGEgPSBub2RlLT5nZW5lcmF0b3JMb2NhbERhdGEoKTsKKyAgICAgICAg
ICAgIGZsYWdzID0gZ2VuZXJhdG9yTG9jYWxEYXRhLT5mbGFncygpOworICAgICAgICAgICAgUkVM
RUFTRV9BU1NFUlQoIShmbGFncyAmIH5Ob2RlQnl0ZWNvZGVCYWNrUHJvcE1hc2spKTsKKyAgICAg
ICAgICAgIGZsYWdzIHw9IE5vZGVCeXRlY29kZVVzZXNBc051bWJlcjsgLy8gQWNjb3VudCBmb3Ig
dGhlIGZhY3QgdGhhdCBjb250cm9sIGZsb3cgbWF5IGNhdXNlIG92ZXJmbG93cyB0aGF0IG91ciBt
b2RlbGluZyBjYW4ndCBoYW5kbGUuCisgICAgICAgICAgICBub2RlLT5jaGlsZDIoKS0+bWVyZ2VG
bGFncyhmbGFncyk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCiAgICAgICAgIGNh
c2UgSWRlbnRpdHk6IAogICAgICAgICAgICAgLy8gVGhpcyB3b3VsZCBiZSB0cml2aWFsIHRvIGhh
bmRsZSBidXQgd2UganVzdCBhc3NlcnQgdGhhdCB3ZSBjYW5ub3Qgc2VlIHRoZXNlIHlldC4KICAg
ICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCmluZGV4IDM2NDRhMmZkMTlhMGQ5
YjNkZGE3YjA2OGEwMDQ5MGE1ODI2MjA4NmQuLmNkMjBiYWZiZDY3YzNhZjcyM2E2NTJjNzYyNWIz
ZGUyZTRkN2RkMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0
ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNv
ZGVQYXJzZXIuY3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiREZHQXJyYXlNb2RlLmgi
CiAjaW5jbHVkZSAiREZHQ2FwYWJpbGl0aWVzLmgiCiAjaW5jbHVkZSAiREZHQ2xvYmJlcnNFeGl0
U3RhdGUuaCIKKyNpbmNsdWRlICJERkdHZW5lcmF0b3JMb2NhbERhdGEuaCIKICNpbmNsdWRlICJE
RkdHcmFwaC5oIgogI2luY2x1ZGUgIkRGR0pJVENvZGUuaCIKICNpbmNsdWRlICJHZXRCeUlkU3Rh
dHVzLmgiCkBAIC05NjMsNiArOTY0LDExIEBAIGNsYXNzIEJ5dGVDb2RlUGFyc2VyIHsKICAgICAg
ICAgZm9yIChBcmd1bWVudFBvc2l0aW9uKiBhcmd1bWVudCA6IG1faW5saW5lU3RhY2tUb3AtPm1f
YXJndW1lbnRQb3NpdGlvbnMpCiAgICAgICAgICAgICBhcmd1bWVudC0+bWVyZ2VTaG91bGROZXZl
clVuYm94KHRydWUpOwogICAgIH0KKworICAgIEdlbmVyYXRvckxvY2FsRGF0YSogbmV3R2VuZXJh
dG9yTG9jYWxEYXRhKCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX2dyYXBoLm1fZ2VuZXJhdG9y
TG9jYWxEYXRhLmFkZCgpOworICAgIH0KICAgICAKICAgICBWTSogbV92bTsKICAgICBDb2RlQmxv
Y2sqIG1fY29kZUJsb2NrOwpAQCAtMTA1MSw2ICsxMDU3LDkgQEAgY2xhc3MgQnl0ZUNvZGVQYXJz
ZXIgewogICAgICAgICBDYWxsTGlua0luZm9NYXAgbV9jYWxsTGlua0luZm9zOwogICAgICAgICBT
dHViSW5mb01hcCBtX3N0dWJJbmZvczsKICAgICAgICAgQnlWYWxJbmZvTWFwIG1fYnlWYWxJbmZv
czsKKworICAgICAgICAvLyBCYXNpYyBibG9ja3MgcGVyZm9ybWluZyB5aWVsZCdzIG9wX3NhdmUg
b3BlcmF0aW9uLgorICAgICAgICBWZWN0b3I8T3BlcmFuZHM8R2VuZXJhdG9yTG9jYWxEYXRhKj4+
IG1fZ2VuZXJhdG9yTG9jYWxzOwogICAgICAgICAKICAgICAgICAgLy8gRGlkIHdlIHNlZSBhbnkg
cmV0dXJucz8gV2UgbmVlZCB0byBoYW5kbGUgdGhlICh1bmNvbW1vbiBidXQgbmVjZXNzYXJ5KQog
ICAgICAgICAvLyBjYXNlIHdoZXJlIGEgcHJvY2VkdXJlIHRoYXQgZG9lcyBub3QgcmV0dXJuIHdh
cyBpbmxpbmVkLgpAQCAtMzM0MSw2ICszMzUwLDExIEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBh
cnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9uZXdf
cmVnZXhwKTsKICAgICAgICAgfQogCisgICAgICAgIGNhc2Ugb3BfbmV3X2dlbmVyYXRvcl9mcmFt
ZTogeworICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25b
MV0udS5vcGVyYW5kKSwgYWRkVG9HcmFwaChOZXdHZW5lcmF0b3JGcmFtZSwgT3BJbmZvKGN1cnJl
bnRJbnN0cnVjdGlvblsyXS51LnVuc2lnbmVkVmFsdWUpKSk7CisgICAgICAgICAgICBORVhUX09Q
Q09ERShvcF9uZXdfZ2VuZXJhdG9yX2ZyYW1lKTsKKyAgICAgICAgfQorCiAgICAgICAgIGNhc2Ug
b3BfZ2V0X3Jlc3RfbGVuZ3RoOiB7CiAgICAgICAgICAgICBJbmxpbmVDYWxsRnJhbWUqIGlubGlu
ZUNhbGxGcmFtZSA9IHRoaXMtPmlubGluZUNhbGxGcmFtZSgpOwogICAgICAgICAgICAgTm9kZSog
bGVuZ3RoOwpAQCAtMzM2OCw2ICszMzgyLDQ5IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNl
QmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgICAgICAgICAgYXJyYXksIGFycmF5TGVuZ3Ro
KTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2NvcHlfcmVzdCk7CiAgICAgICAgIH0KKwor
ICAgICAgICBjYXNlIG9wX3NhdmU6IHsKKyAgICAgICAgICAgIE5vZGUqIGZyYW1lID0gZ2V0KFZp
cnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSk7CisgICAgICAg
ICAgICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSBjdXJyZW50SW5zdHJ1Y3Rpb25b
Ml0udS51bnNpZ25lZFZhbHVlOworICAgICAgICAgICAgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2
ZW5lc3MgPSBtX2lubGluZVN0YWNrVG9wLT5tX2NvZGVCbG9jay0+bGl2ZUNhbGxlZUxvY2Fsc0F0
WWllbGQobGl2ZUNhbGxlZUxvY2Fsc0luZGV4KTsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJU
KGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9PSBtX2lubGluZVN0YWNrVG9wLT5tX2dlbmVyYXRvckxv
Y2Fscy5zaXplKCkpOworICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9nZW5lcmF0b3JM
b2NhbHMuYXBwZW5kKE9wZXJhbmRzPEdlbmVyYXRvckxvY2FsRGF0YSo+KG1fbnVtQXJndW1lbnRz
LCBtX251bUxvY2FscykpOworICAgICAgICAgICAgT3BlcmFuZHM8R2VuZXJhdG9yTG9jYWxEYXRh
Kj4mIG9wZXJhbmRzID0gbV9pbmxpbmVTdGFja1RvcC0+bV9nZW5lcmF0b3JMb2NhbHMubGFzdCgp
OworICAgICAgICAgICAgdW5zaWduZWQgZ2VuZXJhdG9yRnJhbWVJbmRleCA9IDA7CisgICAgICAg
ICAgICBsaXZlbmVzcy5mb3JFYWNoU2V0Qml0KFsmXShzaXplX3QgaW5kZXgpIHsKKyAgICAgICAg
ICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCA9IHZpcnR1YWxSZWdpc3RlckZvckxvY2Fs
KGluZGV4KTsKKyAgICAgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgcmVtYXBwZWRPcGVyYW5k
ID0gbV9pbmxpbmVTdGFja1RvcC0+cmVtYXBPcGVyYW5kKG9wZXJhbmQpOworICAgICAgICAgICAg
ICAgIE5vZGUqIGxvY2FsID0gZ2V0KG9wZXJhbmQpOworICAgICAgICAgICAgICAgIEdlbmVyYXRv
ckxvY2FsRGF0YSogZ2VuZXJhdG9yTG9jYWxEYXRhID0gbmV3R2VuZXJhdG9yTG9jYWxEYXRhKCk7
CisgICAgICAgICAgICAgICAgb3BlcmFuZHMubG9jYWwocmVtYXBwZWRPcGVyYW5kLnRvTG9jYWwo
KSkgPSBnZW5lcmF0b3JMb2NhbERhdGE7CisgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChTZXRH
ZW5lcmF0b3JMb2NhbCwgT3BJbmZvKGdlbmVyYXRvckZyYW1lSW5kZXgrKyksIE9wSW5mbyhnZW5l
cmF0b3JMb2NhbERhdGEpLCBmcmFtZSwgbG9jYWwpOworICAgICAgICAgICAgfSk7CisgICAgICAg
ICAgICBhZGRUb0dyYXBoKFB1dEdlbmVyYXRvckZyYW1lTG9jYWxzLCBPcEluZm8oZ2VuZXJhdG9y
RnJhbWVJbmRleCksIGZyYW1lKTsKKyAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX3NhdmUpOwor
ICAgICAgICB9CisKKyAgICAgICAgY2FzZSBvcF9yZXN1bWVfZnJvbV9nZW5lcmF0b3JfZnJhbWU6
IHsKKyAgICAgICAgICAgIE5vZGUqIGZyYW1lID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50
SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSk7CisgICAgICAgICAgICBPcGVyYW5kczxHZW5lcmF0
b3JMb2NhbERhdGEqPiYgb3BlcmFuZHMgPSBtX2lubGluZVN0YWNrVG9wLT5tX2dlbmVyYXRvckxv
Y2Fscy5sYXN0KCk7CisgICAgICAgICAgICB1bnNpZ25lZCBnZW5lcmF0b3JGcmFtZUluZGV4ID0g
Y3VycmVudEluc3RydWN0aW9uWzNdLnUudW5zaWduZWRWYWx1ZTsKKyAgICAgICAgICAgIFZpcnR1
YWxSZWdpc3RlciBvcGVyYW5kKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOworICAg
ICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHJlbWFwcGVkT3BlcmFuZCA9IG1faW5saW5lU3RhY2tU
b3AtPnJlbWFwT3BlcmFuZChvcGVyYW5kKTsKKyAgICAgICAgICAgIEdlbmVyYXRvckxvY2FsRGF0
YSogZ2VuZXJhdG9yTG9jYWxEYXRhID0gb3BlcmFuZHMubG9jYWwocmVtYXBwZWRPcGVyYW5kLnRv
TG9jYWwoKSk7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChnZW5lcmF0b3JMb2NhbERhdGEp
OworICAgICAgICAgICAgc2V0KG9wZXJhbmQsIGFkZFRvR3JhcGgoR2V0R2VuZXJhdG9yTG9jYWws
IE9wSW5mbyhnZW5lcmF0b3JGcmFtZUluZGV4KSwgT3BJbmZvKGdlbmVyYXRvckxvY2FsRGF0YSks
IGZyYW1lKSk7CisgICAgICAgICAgICBORVhUX09QQ09ERShvcF9yZXN1bWVfZnJvbV9nZW5lcmF0
b3JfZnJhbWUpOworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBvcF9jbGVhcl9nZW5lcmF0b3Jf
ZnJhbWU6IHsKKyAgICAgICAgICAgIE5vZGUqIGZyYW1lID0gZ2V0KFZpcnR1YWxSZWdpc3Rlcihj
dXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSk7CisgICAgICAgICAgICBhZGRUb0dyYXBo
KFB1dEdlbmVyYXRvckZyYW1lTG9jYWxzLCBPcEluZm8oMCksIGZyYW1lKTsKKyAgICAgICAgICAg
IE5FWFRfT1BDT0RFKG9wX2NsZWFyX2dlbmVyYXRvcl9mcmFtZSk7CisgICAgICAgIH0KKworICAg
ICAgICBjYXNlIG9wX25vcDogeworICAgICAgICAgICAgTkVYVF9PUENPREUob3Bfbm9wKTsKKyAg
ICAgICAgfQorCiAgICAgICAgICAgICAKICAgICAgICAgLy8gPT09IEJpdHdpc2Ugb3BlcmF0aW9u
cyA9PT0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmls
aXRpZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3Bw
CmluZGV4IGQxMDBkOTdkNWM2MGUyNWEwNjBmZmRhNDU2NjNiM2I5NDE0MzVkYzYuLmE1ODJmODcy
MDc2Y2ZmODk0MjgzZWJhMzFhNDk5Nzc2MzBkYzc4OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKQEAgLTE4MSw2ICsxODEsNyBAQCBDYXBhYmls
aXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVsKE9wY29kZUlEIG9wY29kZUlELCBDb2RlQmxvY2sqIGNv
ZGVCbG9jaywgSW5zdHJ1YwogICAgIGNhc2Ugb3BfbmV3X2FycmF5OgogICAgIGNhc2Ugb3BfbmV3
X2FycmF5X3dpdGhfc2l6ZToKICAgICBjYXNlIG9wX25ld19hcnJheV9idWZmZXI6CisgICAgY2Fz
ZSBvcF9uZXdfZ2VuZXJhdG9yX2ZyYW1lOgogICAgIGNhc2Ugb3Bfc3RyY2F0OgogICAgIGNhc2Ug
b3BfdG9fcHJpbWl0aXZlOgogICAgIGNhc2Ugb3BfdGhyb3c6CkBAIC0yMjQsNiArMjI1LDEwIEBA
IENhcGFiaWxpdHlMZXZlbCBjYXBhYmlsaXR5TGV2ZWwoT3Bjb2RlSUQgb3Bjb2RlSUQsIENvZGVC
bG9jayogY29kZUJsb2NrLCBJbnN0cnVjCiAgICAgY2FzZSBvcF9jYXRjaDoKICAgICBjYXNlIG9w
X2NvcHlfcmVzdDoKICAgICBjYXNlIG9wX2dldF9yZXN0X2xlbmd0aDoKKyAgICBjYXNlIG9wX3Nh
dmU6CisgICAgY2FzZSBvcF9yZXN1bWVfZnJvbV9nZW5lcmF0b3JfZnJhbWU6CisgICAgY2FzZSBv
cF9jbGVhcl9nZW5lcmF0b3JfZnJhbWU6CisgICAgY2FzZSBvcF9ub3A6CiAgICAgICAgIHJldHVy
biBDYW5Db21waWxlQW5kSW5saW5lOwogCiAgICAgY2FzZSBvcF9wdXRfdG9fc2NvcGU6IHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKaW5kZXggMzQzYTZkZTljMjkw
OWI5M2UwNTI4Y2YwMjc4NGFhZDk0ZDAxYjRkMS4uYmM5ZTA4Njc4YWFkODVlYzU1ZDFlOGY2N2Y0
NDBlNmRkN2Q4OTc5NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
bG9iYmVyaXplLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXpl
LmgKQEAgLTEwNDQsNiArMTA0NCw3IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5v
ZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAKICAgICBj
YXNlIE5ld09iamVjdDoKICAgICBjYXNlIE5ld1JlZ2V4cDoKKyAgICBjYXNlIE5ld0dlbmVyYXRv
ckZyYW1lOgogICAgIGNhc2UgTmV3U3RyaW5nT2JqZWN0OgogICAgIGNhc2UgUGhhbnRvbU5ld09i
amVjdDoKICAgICBjYXNlIE1hdGVyaWFsaXplTmV3T2JqZWN0OgpAQCAtMTExMSw2ICsxMTEyLDIz
IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRG
dW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CisKKyAgICBjYXNl
IFNldEdlbmVyYXRvckxvY2FsOiB7CisgICAgICAgIHJlYWQoR2VuZXJhdG9yRnJhbWVTdGF0ZSk7
CisgICAgICAgIHdyaXRlKEdlbmVyYXRvckZyYW1lU3RhdGUpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgY2FzZSBHZXRHZW5lcmF0b3JMb2NhbDogeworICAgICAgICByZWFkKEdlbmVy
YXRvckZyYW1lU3RhdGUpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgY2FzZSBQdXRH
ZW5lcmF0b3JGcmFtZUxvY2FsczogeworICAgICAgICByZWFkKEdlbmVyYXRvckZyYW1lU3RhdGUp
OworICAgICAgICB3cml0ZShHZW5lcmF0b3JGcmFtZVN0YXRlKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBUaHJvd1JlZmVyZW5jZUVycm9yOgogICAgICAgICB3
cml0ZShTaWRlU3RhdGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDbG9iYmVyc0V4aXRTdGF0ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Ns
b2JiZXJzRXhpdFN0YXRlLmNwcAppbmRleCA0ZTBjNTA3Nzg5Y2Q3YjNmZjQ3NzUxZjkyNWU3NDgz
ZTYxZTJkZjViLi5jYjk0MTNiZGYwNjdkMTYwOWZjMWU4NDRmZDU4ZjNlYWNlYjZmYjUyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJzRXhpdFN0YXRlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJzRXhpdFN0YXRlLmNw
cApAQCAtNTMsMTAgKzUzLDE2IEBAIGJvb2wgY2xvYmJlcnNFeGl0U3RhdGUoR3JhcGgmIGdyYXBo
LCBOb2RlKiBub2RlKQogICAgICAgICAvLyBleGl0IHN0YXRlLgogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKKyAgICBjYXNlIFB1dEdlbmVyYXRvckZyYW1lTG9jYWxzOgorICAgIGNhc2UgU2V0R2Vu
ZXJhdG9yTG9jYWw6CisgICAgY2FzZSBHZXRHZW5lcmF0b3JMb2NhbDoKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCiAgICAgY2FzZSBBcnJheWlmeVRvU3RydWN0dXJlOgogICAgIGNhc2UgQXJyYXlp
Znk6CiAgICAgY2FzZSBOZXdPYmplY3Q6CiAgICAgY2FzZSBOZXdSZWdleHA6CisgICAgY2FzZSBO
ZXdHZW5lcmF0b3JGcmFtZToKICAgICBjYXNlIE5ld1N0cmluZ09iamVjdDoKICAgICBjYXNlIFBo
YW50b21OZXdPYmplY3Q6CiAgICAgY2FzZSBNYXRlcmlhbGl6ZU5ld09iamVjdDoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAppbmRleCA3MDJkYTViZjFlN2MwZjFjOGZlNTVj
NjQ4NDQ1OGZjYWQ4MWUyYWE1Li5lNDE4ZDc4NzY2ZWE2NGYzMDFkZDBkM2E0ZDc1MGI0YTgyNTA2
YjEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCkBAIC0yMjksNiAr
MjI5LDkgQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2Ug
R2V0RnJvbUFyZ3VtZW50czoKICAgICBjYXNlIFB1dFRvQXJndW1lbnRzOgogICAgIGNhc2UgQ29w
eVJlc3Q6CisgICAgY2FzZSBTZXRHZW5lcmF0b3JMb2NhbDoKKyAgICBjYXNlIEdldEdlbmVyYXRv
ckxvY2FsOgorICAgIGNhc2UgUHV0R2VuZXJhdG9yRnJhbWVMb2NhbHM6CiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAogICAgIGNhc2UgQ3JlYXRlQWN0aXZhdGlvbjoKQEAgLTI0Niw2ICsyNDksNyBA
QCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBOZXdBcnJh
eVdpdGhTaXplOgogICAgIGNhc2UgTmV3QXJyYXlCdWZmZXI6CiAgICAgY2FzZSBOZXdSZWdleHA6
CisgICAgY2FzZSBOZXdHZW5lcmF0b3JGcmFtZToKICAgICBjYXNlIE5ld1N0cmluZ09iamVjdDoK
ICAgICBjYXNlIE1ha2VSb3BlOgogICAgIGNhc2UgTmV3QXJyb3dGdW5jdGlvbjoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCmluZGV4IGM5ZDVhYmZiNDk0ODFi
OTA1ODllYzRmYmE1OTVhMmNlOGU3MGRmNjcuLjg3OWJlOWRlMjEyMDg2ZDlhZGZkZjYxMjc3MmY3
ZjIzZjZiM2FiOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4
dXBQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNl
LmNwcApAQCAtMTQzMCw2ICsxNDMwLDIxIEBAIGNsYXNzIEZpeHVwUGhhc2UgOiBwdWJsaWMgUGhh
c2UgewogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIFNldEdl
bmVyYXRvckxvY2FsOiB7CisgICAgICAgICAgICBmaXhFZGdlPENlbGxVc2U+KG5vZGUtPmNoaWxk
MSgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBHZXRH
ZW5lcmF0b3JMb2NhbDogeworICAgICAgICAgICAgZml4RWRnZTxDZWxsVXNlPihub2RlLT5jaGls
ZDEoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2UgUHV0
R2VuZXJhdG9yRnJhbWVMb2NhbHM6IHsKKyAgICAgICAgICAgIGZpeEVkZ2U8Q2VsbFVzZT4obm9k
ZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKwogI2lmICFBU1NF
UlRfRElTQUJMRUQKICAgICAgICAgLy8gSGF2ZSB0aGVzZSBuby1vcCBjYXNlcyBoZXJlIHRvIGVu
c3VyZSB0aGF0IG5vYm9keSBmb3JnZXRzIHRvIGFkZCBoYW5kbGVycyBmb3IgbmV3IG9wY29kZXMu
CiAgICAgICAgIGNhc2UgU2V0QXJndW1lbnQ6CkBAIC0xNDYyLDYgKzE0NzcsNyBAQCBjbGFzcyBG
aXh1cFBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgY2FzZSBOZXdPYmplY3Q6CiAgICAg
ICAgIGNhc2UgTmV3QXJyYXlCdWZmZXI6CiAgICAgICAgIGNhc2UgTmV3UmVnZXhwOgorICAgICAg
ICBjYXNlIE5ld0dlbmVyYXRvckZyYW1lOgogICAgICAgICBjYXNlIEJyZWFrcG9pbnQ6CiAgICAg
ICAgIGNhc2UgUHJvZmlsZVdpbGxDYWxsOgogICAgICAgICBjYXNlIFByb2ZpbGVEaWRDYWxsOgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHZW5lcmF0b3JMb2NhbERh
dGEuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR2VuZXJhdG9yTG9jYWxEYXRhLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGFhMzY1YmI4ZjNkOTg3YmVhMmQ1MDU0NGRjYWU3YTNmODVjYmVlZQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR2VuZXJhdG9yTG9j
YWxEYXRhLmgKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBZdXN1
a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBERkdHZW5lcmF0b3JMb2NhbERhdGFfaAor
I2RlZmluZSBERkdHZW5lcmF0b3JMb2NhbERhdGFfaAorCisjaWYgRU5BQkxFKERGR19KSVQpCisK
KyNpbmNsdWRlICJERkdDb21tb24uaCIKKyNpbmNsdWRlICJERkdOb2RlRmxhZ3MuaCIKKyNpbmNs
dWRlICJERkdWYXJpYWJsZUFjY2Vzc0RhdGEuaCIKKyNpbmNsdWRlICJTcGVjdWxhdGVkVHlwZS5o
IgorI2luY2x1ZGUgIlZpcnR1YWxSZWdpc3Rlci5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNw
YWNlIERGRyB7CisKK3N0cnVjdCBOb2RlOworCitjbGFzcyBHZW5lcmF0b3JMb2NhbERhdGEgewor
cHVibGljOgorICAgIGJvb2wgcHJlZGljdChTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIG1lcmdlU3BlY3VsYXRpb24obV9wcmVkaWN0aW9uLCBwcmVkaWN0
aW9uKTsKKyAgICB9CisKKyAgICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uKCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBtX3ByZWRpY3Rpb247CisgICAgfQorCisgICAgTm9kZUZsYWdzIGZsYWdz
KCkgY29uc3QgeyByZXR1cm4gbV9mbGFnczsgfQorCisgICAgYm9vbCBtZXJnZUZsYWdzKE5vZGVG
bGFncyBuZXdGbGFncykKKyAgICB7CisgICAgICAgIHJldHVybiBjaGVja0FuZFNldChtX2ZsYWdz
LCBtX2ZsYWdzIHwgbmV3RmxhZ3MpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBTcGVjdWxhdGVk
VHlwZSBtX3ByZWRpY3Rpb24geyBTcGVjTm9uZSB9OworICAgIE5vZGVGbGFncyBtX2ZsYWdzIHsg
MCB9OworfTsKKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRworCisjZW5kaWYgLy8gRU5BQkxF
KERGR19KSVQpCisKKyNlbmRpZiAvLyBERkdWYXJpYWJsZUFjY2Vzc0RhdGFfaApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdHcmFwaC5oCmluZGV4IDA5YWFlOTU1ZjY2YWE3ODk0YTE0ODVlMTM5Mzdm
M2JhNTM4ODlkMWMuLjQzZmRiYjFhNzEzMDM0NmM5YmRhZjQ5ZDRlNDE2YjcyNDEzZjA2MWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKQEAgLTYwLDYgKzYwLDcgQEAKIGNsYXNz
IERvbWluYXRvcnM7CiBjbGFzcyBOYXR1cmFsTG9vcHM7CiBjbGFzcyBQcmVQb3N0TnVtYmVyaW5n
OworY2xhc3MgR2VuZXJhdG9yTG9jYWxEYXRhOwogCiAjZGVmaW5lIERGR19OT0RFX0RPX1RPX0NI
SUxEUkVOKGdyYXBoLCBub2RlLCB0aGluZ1RvRG8pIGRvIHsgICAgICAgICAgICBcCiAgICAgICAg
IE5vZGUqIF9ub2RlID0gKG5vZGUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCkBAIC04ODcsNiArODg4LDcgQEAgY2xhc3MgR3JhcGggOiBwdWJsaWMgdmlydHVh
bCBTY2FubmFibGUgewogICAgIEJhZzxDYWxsVmFyYXJnc0RhdGE+IG1fY2FsbFZhcmFyZ3NEYXRh
OwogICAgIEJhZzxMb2FkVmFyYXJnc0RhdGE+IG1fbG9hZFZhcmFyZ3NEYXRhOwogICAgIEJhZzxT
dGFja0FjY2Vzc0RhdGE+IG1fc3RhY2tBY2Nlc3NEYXRhOworICAgIEJhZzxHZW5lcmF0b3JMb2Nh
bERhdGE+IG1fZ2VuZXJhdG9yTG9jYWxEYXRhOwogICAgIFZlY3RvcjxJbmxpbmVWYXJpYWJsZURh
dGEsIDQ+IG1faW5saW5lVmFyaWFibGVEYXRhOwogICAgIEhhc2hNYXA8Q29kZUJsb2NrKiwgc3Rk
Ojp1bmlxdWVfcHRyPEZ1bGxCeXRlY29kZUxpdmVuZXNzPj4gbV9ieXRlY29kZUxpdmVuZXNzOwog
ICAgIEhhc2hNYXA8Q29kZUJsb2NrKiwgc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlS2lsbHM+PiBt
X2J5dGVjb2RlS2lsbHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R01heUV4aXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNwcApp
bmRleCBkYWEyOTMzOWRiZmJkZjgwYWFkOWI2NDZhMmNiN2EwNTg3ZDk2MjM4Li5mYzU3YjgyMzAz
Yzc5YmQxM2NkNWQxY2UxYmUwYWZiNzEwY2U2Yzc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTWF5RXhpdC5jcHAKQEAgLTEzMCw2ICsxMzAsOSBAQCBFeGl0TW9kZSBtYXlFeGl0KEdy
YXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIFN0b3JlQmFycmllcjoKICAgICBjYXNl
IFB1dEJ5T2Zmc2V0OgogICAgIGNhc2UgUHV0Q2xvc3VyZVZhcjoKKyAgICBjYXNlIFB1dEdlbmVy
YXRvckZyYW1lTG9jYWxzOgorICAgIGNhc2UgU2V0R2VuZXJhdG9yTG9jYWw6CisgICAgY2FzZSBH
ZXRHZW5lcmF0b3JMb2NhbDoKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIFN0ckNhdDoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKaW5kZXggMTI4NzBkOTNkMGM0ODJlNGY4ZTVkNGQy
ZGFmMWU2YmYxZjcxYjYyYy4uNjI3NDNhZWY3ODY2M2VlZDNkNDU4MWFhNzkzYzYxYTI4MTY5ZjEx
NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKQEAgLTM2LDYgKzM2LDcgQEAKICNp
bmNsdWRlICJERkdBcnJheU1vZGUuaCIKICNpbmNsdWRlICJERkdDb21tb24uaCIKICNpbmNsdWRl
ICJERkdFcG9jaC5oIgorI2luY2x1ZGUgIkRGR0dlbmVyYXRvckxvY2FsRGF0YS5oIgogI2luY2x1
ZGUgIkRGR0xhenlKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiREZHTXVsdGlHZXRCeU9mZnNldERhdGEu
aCIKICNpbmNsdWRlICJERkdOb2RlRmxhZ3MuaCIKQEAgLTg3OCw2ICs4NzksNzIgQEAgc3RydWN0
IE5vZGUgewogICAgICAgICByZXR1cm4gbV9vcEluZm87CiAgICAgfQogCisgICAgYm9vbCBoYXNH
ZW5lcmF0b3JGcmFtZVNpemUoKQorICAgIHsKKyAgICAgICAgc3dpdGNoIChvcCgpKSB7CisgICAg
ICAgIGNhc2UgTmV3R2VuZXJhdG9yRnJhbWU6CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAg
IH0KKworICAgIHVuc2lnbmVkIGdlbmVyYXRvckZyYW1lU2l6ZSgpCisgICAgeworICAgICAgICBB
U1NFUlQoaGFzR2VuZXJhdG9yRnJhbWVTaXplKCkpOworICAgICAgICByZXR1cm4gbV9vcEluZm87
CisgICAgfQorCisgICAgYm9vbCBoYXNHZW5lcmF0b3JGcmFtZUluZGV4KCkKKyAgICB7CisgICAg
ICAgIHN3aXRjaCAob3AoKSkgeworICAgICAgICBjYXNlIFNldEdlbmVyYXRvckxvY2FsOgorICAg
ICAgICBjYXNlIEdldEdlbmVyYXRvckxvY2FsOgorICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICB1bnNpZ25lZCBnZW5lcmF0b3JGcmFtZUluZGV4KCkKKyAgICB7CisgICAgICAg
IEFTU0VSVChoYXNHZW5lcmF0b3JGcmFtZUluZGV4KCkpOworICAgICAgICByZXR1cm4gbV9vcElu
Zm87CisgICAgfQorCisgICAgYm9vbCBoYXNHZW5lcmF0b3JMb2NhbERhdGEoKQorICAgIHsKKyAg
ICAgICAgc3dpdGNoIChvcCgpKSB7CisgICAgICAgIGNhc2UgU2V0R2VuZXJhdG9yTG9jYWw6Cisg
ICAgICAgIGNhc2UgR2V0R2VuZXJhdG9yTG9jYWw6CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIEdlbmVyYXRvckxvY2FsRGF0YSogZ2VuZXJhdG9yTG9jYWxEYXRhKCkKKyAg
ICB7CisgICAgICAgIEFTU0VSVChoYXNHZW5lcmF0b3JMb2NhbERhdGEoKSk7CisgICAgICAgIHJl
dHVybiByZWludGVycHJldF9jYXN0PEdlbmVyYXRvckxvY2FsRGF0YSo+KG1fb3BJbmZvMik7Cisg
ICAgfQorCisgICAgYm9vbCBoYXNHZW5lcmF0b3JGcmFtZUxvY2FscygpCisgICAgeworICAgICAg
ICBzd2l0Y2ggKG9wKCkpIHsKKyAgICAgICAgY2FzZSBQdXRHZW5lcmF0b3JGcmFtZUxvY2FsczoK
KyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorCisgICAgdW5zaWduZWQgZ2VuZXJhdG9y
RnJhbWVMb2NhbHMoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGhhc0dlbmVyYXRvckZyYW1lTG9j
YWxzKCkpOworICAgICAgICByZXR1cm4gbV9vcEluZm87CisgICAgfQorCiAgICAgYm9vbCBoYXNB
Y2Nlc3NvckF0dHJpYnV0ZXMoKQogICAgIHsKICAgICAgICAgc3dpdGNoIChvcCgpKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKaW5kZXggZGRkMGI5N2NiMmZlNjkyNjA0
NTEwM2Y4YTcxMDcwMDQ4MmU5ZjZiZC4uYzlhOGQ3MmY4MjdlYmVjODFhZGVlYmYyZDZkODk3YWM5
ZTgwZDUzZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlw
ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaApAQCAtNzks
NiArNzksMTAgQEAKICAgICBtYWNybyhGbHVzaCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1h
Y3JvKFBoYW50b21Mb2NhbCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIFwKKyAgICBtYWNybyhT
ZXRHZW5lcmF0b3JMb2NhbCwgTm9kZU11c3RHZW5lcmF0ZSkgXAorICAgIG1hY3JvKEdldEdlbmVy
YXRvckxvY2FsLCBOb2RlUmVzdWx0SlMpIFwKKyAgICBtYWNybyhQdXRHZW5lcmF0b3JGcmFtZUxv
Y2FscywgTm9kZU11c3RHZW5lcmF0ZSkgXAorICAgIFwKICAgICAvKiBIaW50IHRoYXQgdGhpcyBp
cyB3aGVyZSBieXRlY29kZSB0aGlua3MgaXMgYSBnb29kIHBsYWNlIHRvIE9TUi4gTm90ZSB0aGF0
IHRoaXMgKi9cCiAgICAgLyogd2lsbCBleGlzdCBldmVuIGluIGlubGluZWQgbG9vcHMuIFRoaXMg
aGFzIG5vIGV4ZWN1dGlvbiBzZW1hbnRpY3MgYnV0IGl0IG11c3QgKi9cCiAgICAgLyogc3Vydml2
ZSBhbGwgRENFLiBXZSB0cmVhdCB0aGlzIGFzIGJlaW5nIGEgY2FuLWV4aXQgYmVjYXVzZSB0aWVy
LXVwIHRvIEZUTCBtYXkgKi9cCkBAIC0yNjMsNiArMjY3LDcgQEAKICAgICBtYWNybyhOZXdBcnJh
eUJ1ZmZlciwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oTmV3VHlwZWRBcnJheSwgTm9kZVJl
c3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKE5ld1JlZ2V4cCwgTm9kZVJl
c3VsdEpTKSBcCisgICAgbWFjcm8oTmV3R2VuZXJhdG9yRnJhbWUsIE5vZGVSZXN1bHRKUykgXAog
ICAgIC8qIFJlc3QgUGFyYW1ldGVyICovXAogICAgIG1hY3JvKEdldFJlc3RMZW5ndGgsIE5vZGVS
ZXN1bHRJbnQzMikgXAogICAgIG1hY3JvKENvcHlSZXN0LCBOb2RlTXVzdEdlbmVyYXRlKSBcCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAppbmRleCAyZmQ1ZGJk
YzdmYzRjY2E4NmZhZTEwOTIyN2FjMTc1N2ZkY2RmOTZjLi5iYzM1NjYxM2QzZjUyMTgwODIzOGU1
MjY4MTM1YWFiMDliZTY3ZjBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3Bl
cmF0aW9ucy5jcHAKQEAgLTQxLDggKzQxLDkgQEAKICNpbmNsdWRlICJEaXJlY3RBcmd1bWVudHMu
aCIKICNpbmNsdWRlICJGVExGb3JPU1JFbnRyeUpJVENvZGUuaCIKICNpbmNsdWRlICJGVExPU1JF
bnRyeS5oIgotI2luY2x1ZGUgIkhvc3RDYWxsUmV0dXJuVmFsdWUuaCIKKyNpbmNsdWRlICJHZW5l
cmF0b3JGcmFtZS5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgorI2luY2x1ZGUgIkhvc3RD
YWxsUmV0dXJuVmFsdWUuaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpJ
VC5oIgogI2luY2x1ZGUgIkpJVEV4Y2VwdGlvbnMuaCIKQEAgLTgxNyw2ICs4MTgsMTEgQEAgY2hh
ciogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdGbG9hdDY0QXJyYXlXaXRoT25lQXJndW1lbnQo
CiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBl
ZEFycmF5Vmlld1dpdGhBcmd1bWVudHM8SlNGbG9hdDY0QXJyYXk+KGV4ZWMsIHN0cnVjdHVyZSwg
ZW5jb2RlZFZhbHVlLCAwLCBOdWxsb3B0KSk7CiB9CiAKK2NoYXIqIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uTmV3R2VuZXJhdG9yRnJhbWUoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgaW50MzJfdCBudW1iZXJPZkNhbGxlZUxvY2FscykKK3sKKyAgICByZXR1cm4gYml0d2lz
ZV9jYXN0PGNoYXIqPihHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlKGV4ZWMtPnZtKCksIHN0cnVjdHVy
ZSwgbnVtYmVyT2ZDYWxsZWVMb2NhbHMpKTsKK30KKwogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkNyZWF0ZUFjdGl2YXRpb25EaXJlY3QoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgSlNTY29wZSogc2NvcGUsIFN5bWJvbFRhYmxlKiB0YWJsZSwgRW5jb2RlZEpT
VmFsdWUgaW5pdGlhbFZhbHVlRW5jb2RlZCkKIHsKICAgICBKU1ZhbHVlIGluaXRpYWxWYWx1ZSA9
IEpTVmFsdWU6OmRlY29kZShpbml0aWFsVmFsdWVFbmNvZGVkKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKaW5kZXggNDA5NjI5ZmY1ZDUzYTdiZTM4N2E2MjM2NDU1
ZDY4MTZhYzA4NWVjOS4uZTQ0M2JhMjgyMzcyZmJjY2UyYmFjNWIwOWEzNjdiZDUyYzhlNzVmMyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKQEAgLTgyLDYgKzgy
LDcgQEAKIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3RmxvYXQzMkFycmF5V2l0aE9u
ZUFyZ3VtZW50KEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSosIEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5U
RVJOQUw7CiBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Zsb2F0NjRBcnJheVdpdGhT
aXplKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSosIGludDMyX3QpIFdURl9JTlRFUk5BTDsKIGNoYXIq
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3RmxvYXQ2NEFycmF5V2l0aE9uZUFyZ3VtZW50KEV4
ZWNTdGF0ZSosIFN0cnVjdHVyZSosIEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7CitjaGFy
KiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0dlbmVyYXRvckZyYW1lKEV4ZWNTdGF0ZSosIFN0
cnVjdHVyZSosIGludDMyX3QpIFdURl9JTlRFUk5BTDsKIHZvaWQgSklUX09QRVJBVElPTiBvcGVy
YXRpb25QdXRCeVZhbFN0cmljdChFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFz
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFByb3BlcnR5LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUpIFdURl9JTlRFUk5BTDsKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZh
bE5vblN0cmljdChFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFByb3BlcnR5LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpIFdU
Rl9JTlRFUk5BTDsKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbENlbGxTdHJp
Y3QoRXhlY1N0YXRlKiwgSlNDZWxsKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFByb3BlcnR5LCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpIFdURl9JTlRFUk5BTDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFz
ZS5jcHAKaW5kZXggNTc5OThjZmUxODFhOGZjZjljYzY1MTQzNTFhYzU4MGI4MGU3ZmI4YS4uYzU4
ZWExMjNlZWE3MmY3ODFhZDFiZmZiZGQ3NmI4MTEwZDJmMDFhZSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFz
ZS5jcHAKQEAgLTE2MCw2ICsxNjAsMjMgQEAgY2xhc3MgUHJlZGljdGlvblByb3BhZ2F0aW9uUGhh
c2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgY2hhbmdlZCB8PSB2YXJpYWJsZUFjY2Vz
c0RhdGEtPnByZWRpY3Qobm9kZS0+Y2hpbGQxKCktPnByZWRpY3Rpb24oKSk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQorCisgICAgICAgIGNhc2UgU2V0R2VuZXJhdG9yTG9jYWw6IHsK
KyAgICAgICAgICAgIEdlbmVyYXRvckxvY2FsRGF0YSogZ2VuZXJhdG9yTG9jYWxEYXRhID0gbm9k
ZS0+Z2VuZXJhdG9yTG9jYWxEYXRhKCk7CisgICAgICAgICAgICBjaGFuZ2VkIHw9IGdlbmVyYXRv
ckxvY2FsRGF0YS0+cHJlZGljdChub2RlLT5jaGlsZDIoKS0+cHJlZGljdGlvbigpKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBHZXRHZW5lcmF0b3JMb2Nh
bDogeworICAgICAgICAgICAgR2VuZXJhdG9yTG9jYWxEYXRhKiBnZW5lcmF0b3JMb2NhbERhdGEg
PSBub2RlLT5nZW5lcmF0b3JMb2NhbERhdGEoKTsKKyAgICAgICAgICAgIFNwZWN1bGF0ZWRUeXBl
IHByZWRpY3Rpb24gPSBnZW5lcmF0b3JMb2NhbERhdGEtPnByZWRpY3Rpb24oKTsKKyAgICAgICAg
ICAgIC8vIFdlIGFsd2F5cyBzdG9yZSB0aGUgdmFsdWUgaW4gR2VuZXJhdG9yTG9jYWwgYXMgRm9y
bWF0SlNWYWx1ZS4KKyAgICAgICAgICAgIGlmIChwcmVkaWN0aW9uICYgU3BlY0ludDUyKQorICAg
ICAgICAgICAgICAgIHByZWRpY3Rpb24gPSAocHJlZGljdGlvbiB8IFNwZWNJbnQ1MkFzRG91Ymxl
KSAmIH5TcGVjSW50NTI7CisgICAgICAgICAgICBpZiAocHJlZGljdGlvbikKKyAgICAgICAgICAg
ICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihwcmVkaWN0aW9uKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBCaXRBbmQ6CiAg
ICAgICAgIGNhc2UgQml0T3I6CkBAIC01MjQsNyArNTQxLDggQEAgY2xhc3MgUHJlZGljdGlvblBy
b3BhZ2F0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICB9CiAgICAgICAgICAgICAK
ICAgICAgICAgY2FzZSBOZXdSZWdleHA6Ci0gICAgICAgIGNhc2UgQ3JlYXRlQWN0aXZhdGlvbjog
eworICAgICAgICBjYXNlIENyZWF0ZUFjdGl2YXRpb246CisgICAgICAgIGNhc2UgTmV3R2VuZXJh
dG9yRnJhbWU6IHsKICAgICAgICAgICAgIGNoYW5nZWQgfD0gc2V0UHJlZGljdGlvbihTcGVjT2Jq
ZWN0T3RoZXIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTcxNiw2ICs3MzQs
NyBAQCBjbGFzcyBQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAg
ICAgICAgIGNhc2UgRXhpdE9LOgogICAgICAgICBjYXNlIExvYWRWYXJhcmdzOgogICAgICAgICBj
YXNlIENvcHlSZXN0OgorICAgICAgICBjYXNlIFB1dEdlbmVyYXRvckZyYW1lTG9jYWxzOgogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICAgICAgLy8gVGhpcyBnZXRzIGlnbm9y
ZWQgYmVjYXVzZSBpdCBvbmx5IHByZXRlbmRzIHRvIHByb2R1Y2UgYSB2YWx1ZS4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKaW5kZXggMjMwZWZlZGM0ODMx
NTEyYmFjNTY4YmVlZmRiMjc2OTYxODcyMDk0Yy4uN2JkZWMzYjUzZTIzMDQyOGJlYzlkYWMxMDM1
ZjBhNGQwNGQ4YTYxYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
YWZlVG9FeGVjdXRlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9F
eGVjdXRlLmgKQEAgLTIzNyw2ICsyMzcsNyBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RT
dGF0ZVR5cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBOZXdB
cnJheVdpdGhTaXplOgogICAgIGNhc2UgTmV3QXJyYXlCdWZmZXI6CiAgICAgY2FzZSBOZXdSZWdl
eHA6CisgICAgY2FzZSBOZXdHZW5lcmF0b3JGcmFtZToKICAgICBjYXNlIEJyZWFrcG9pbnQ6CiAg
ICAgY2FzZSBQcm9maWxlV2lsbENhbGw6CiAgICAgY2FzZSBQcm9maWxlRGlkQ2FsbDoKQEAgLTMy
OCw2ICszMjksOSBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0YXRl
LCBHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBHZXRNeUFyZ3VtZW50QnlWYWw6
CiAgICAgY2FzZSBGb3J3YXJkVmFyYXJnczoKICAgICBjYXNlIENvcHlSZXN0OgorICAgIGNhc2Ug
U2V0R2VuZXJhdG9yTG9jYWw6CisgICAgY2FzZSBHZXRHZW5lcmF0b3JMb2NhbDoKKyAgICBjYXNl
IFB1dEdlbmVyYXRvckZyYW1lTG9jYWxzOgogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIGNh
c2UgQm90dG9tVmFsdWU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuY3BwCmluZGV4IGNjY2U3OTE5OTUxNDVlOTFlZmQyMDA4OGM5NmI3YWY4MmI1NjE2
ZDYuLjJhMzZkOGJhYjg4NzA5YzhjZmQxZTYwYTlmMGFkODJjN2IzNzZiZjggMTAwNzU1Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC0zOCw2ICsz
OCw3IEBACiAjaW5jbHVkZSAiREZHU2FuZVN0cmluZ0dldEJ5VmFsU2xvd1BhdGhHZW5lcmF0b3Iu
aCIKICNpbmNsdWRlICJERkdTbG93UGF0aEdlbmVyYXRvci5oIgogI2luY2x1ZGUgIkRpcmVjdEFy
Z3VtZW50cy5oIgorI2luY2x1ZGUgIkdlbmVyYXRvckZyYW1lLmgiCiAjaW5jbHVkZSAiSklUQWRk
R2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiSklUQml0QW5kR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAi
SklUQml0T3JHZW5lcmF0b3IuaCIKQEAgLTYzNzgsNiArNjM3OSwyOSBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlTmV3U3RyaW5nT2JqZWN0KE5vZGUqIG5vZGUpCiAgICAgY2VsbFJlc3Vs
dChyZXN1bHRHUFIsIG5vZGUpOwogfQogCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3
R2VuZXJhdG9yRnJhbWUoTm9kZSogbm9kZSkKK3sKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0ID0gbV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKTsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdsb2JhbE9iamVjdC0+Z2VuZXJhdG9y
RnJhbWVTdHJ1Y3R1cmUoKTsKKworICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CisgICAg
R1BSVGVtcG9yYXJ5IHNjcmF0Y2gxKHRoaXMpOworICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoMih0
aGlzKTsKKworICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CisgICAgR1BSUmVn
IHNjcmF0Y2gxR1BSID0gc2NyYXRjaDEuZ3ByKCk7CisgICAgR1BSUmVnIHNjcmF0Y2gyR1BSID0g
c2NyYXRjaDIuZ3ByKCk7CisKKyAgICBKSVRDb21waWxlcjo6SnVtcExpc3Qgc2xvd1BhdGg7CisK
KyAgICBlbWl0QWxsb2NhdGVKU09iamVjdFdpdGhLbm93blNpemU8R2VuZXJhdG9yRnJhbWU+KHJl
c3VsdEdQUiwgVHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpLCBUcnVzdGVkSW1tUHRyKG51bGxwdHIp
LCBzY3JhdGNoMUdQUiwgc2NyYXRjaDJHUFIsIHNsb3dQYXRoLCBHZW5lcmF0b3JGcmFtZTo6YWxs
b2NhdGlvblNpemVGb3JMb2NhbHMobm9kZS0+Z2VuZXJhdG9yRnJhbWVTaXplKCkpKTsKKyAgICBt
X2ppdC5zdG9yZTMyKFRydXN0ZWRJbW0zMigwKSwgSklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0
R1BSLCBHZW5lcmF0b3JGcmFtZTo6bnVtYmVyT2ZTYXZlZENhbGxlZUxvY2Fsc09mZnNldCgpKSk7
CisKKyAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd1BhdGgsIHRoaXMs
IG9wZXJhdGlvbk5ld0dlbmVyYXRvckZyYW1lLCByZXN1bHRHUFIsIHN0cnVjdHVyZSwgbm9kZS0+
Z2VuZXJhdG9yRnJhbWVTaXplKCkpKTsKKworICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2Rl
KTsKK30KKwogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld1R5cGVkQXJyYXkoTm9kZSog
bm9kZSkKIHsKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9qaXQuZ3JhcGgo
KS5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAppbmRleCA1MzEyYzhkYmVkZmVkMTgw
MDU0MzgxMTMwNzllZWIwYjBlOTkwOGFiLi41NzM5ODE1NzhmMjRmNWIzMDI1OWYyYWMwMjU1MmZk
NDA4ZmU3YWUwIDEwMDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5oCkBAIC0yMjgxLDYgKzIyODEsNyBAQCBjbGFzcyBTcGVjdWxhdGl2ZUpJVCB7CiAgICAg
dm9pZCBjb21waWxlUHV0QnlWYWxGb3JGbG9hdFR5cGVkQXJyYXkoR1BSUmVnIGJhc2UsIEdQUlJl
ZyBwcm9wZXJ0eSwgTm9kZSosIFR5cGVkQXJyYXlUeXBlKTsKICAgICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgQ2xhc3NUeXBlPiB2b2lkIGNvbXBpbGVOZXdGdW5jdGlvbkNvbW1vbihHUFJSZWcsIFN0cnVj
dHVyZSosIEdQUlJlZywgR1BSUmVnLCBHUFJSZWcsIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCYs
IHNpemVfdCwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgcHRyZGlmZl90LCBwdHJkaWZmX3QsIHB0cmRp
ZmZfdCk7CiAgICAgdm9pZCBjb21waWxlTmV3RnVuY3Rpb24oTm9kZSopOworICAgIHZvaWQgY29t
cGlsZU5ld0dlbmVyYXRvckZyYW1lKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVGb3J3YXJkVmFy
YXJncyhOb2RlKik7CiAgICAgdm9pZCBjb21waWxlQ3JlYXRlQWN0aXZhdGlvbihOb2RlKik7CiAg
ICAgdm9pZCBjb21waWxlQ3JlYXRlRGlyZWN0QXJndW1lbnRzKE5vZGUqKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCmluZGV4
IDEyZWI1MDQxMTgwYWMyZjUwMTY0Zjk1MWIwNThlZGI2MmQyMjgyNzAuLjMxMDNhZDU5ZmYyMDQx
YTc0ZDEyZWE4YjgzYWMxNzczM2VmN2M2ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApAQCAtMzY1MCw2ICszNjUwLDEx
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgY2Vs
bFJlc3VsdChyZXN1bHRQYXlsb2FkLmdwcigpLCBub2RlKTsKICAgICAgICAgYnJlYWs7CiAgICAg
fQorCisgICAgY2FzZSBOZXdHZW5lcmF0b3JGcmFtZTogeworICAgICAgICBjb21waWxlTmV3R2Vu
ZXJhdG9yRnJhbWUobm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICAgICAgCiAgICAg
Y2FzZSBUb1RoaXM6IHsKICAgICAgICAgQVNTRVJUKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9
PSBVbnR5cGVkVXNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklUNjQuY3BwCmluZGV4IGU3NDU2OTQwNGMxYjk3ODQ4MDYxOTdkMTQ1NDVjZDFkYjIz
ZDdhNWMuLjg5NDAyZjFlMzY4MjM5ODc4MDUxOTc0NmQ0YmE3MWY0NmQxZTdmMDggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAt
MzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIkRGR1Nsb3dQYXRoR2VuZXJhdG9yLmgiCiAjaW5jbHVk
ZSAiRGVidWdnZXIuaCIKICNpbmNsdWRlICJEaXJlY3RBcmd1bWVudHMuaCIKKyNpbmNsdWRlICJH
ZW5lcmF0b3JGcmFtZS5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIkpT
Q0lubGluZXMuaCIKICNpbmNsdWRlICJKU0Vudmlyb25tZW50UmVjb3JkLmgiCkBAIC0zNjg4LDYg
KzM2ODksMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAg
ICAgICBjZWxsUmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAg
IH0KKworICAgIGNhc2UgTmV3R2VuZXJhdG9yRnJhbWU6IHsKKyAgICAgICAgY29tcGlsZU5ld0dl
bmVyYXRvckZyYW1lKG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CiAgICAgICAgIAogICAg
IGNhc2UgVG9UaGlzOiB7CiAgICAgICAgIEFTU0VSVChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkg
PT0gVW50eXBlZFVzZSk7CkBAIC00NzIwLDYgKzQ3MjYsMzggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9k
ZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KKyAgICBjYXNlIFNldEdlbmVyYXRvckxvY2FsOiB7
CisgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGZyYW1lKHRoaXMsIG5vZGUtPmNoaWxkMSgp
KTsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwor
CisgICAgICAgIEdQUlJlZyBmcmFtZUdQUiA9IGZyYW1lLmdwcigpOworICAgICAgICBHUFJSZWcg
dmFsdWVHUFIgPSB2YWx1ZS5ncHIoKTsKKyAgICAgICAgdW5zaWduZWQgZ2VuZXJhdG9yRnJhbWVJ
bmRleCA9IG5vZGUtPmdlbmVyYXRvckZyYW1lSW5kZXgoKTsKKworICAgICAgICBtX2ppdC5zdG9y
ZTY0KHZhbHVlR1BSLCBKSVRDb21waWxlcjo6QWRkcmVzcyhmcmFtZUdQUiwgR2VuZXJhdG9yRnJh
bWU6OmxvY2FsT2Zmc2V0KGdlbmVyYXRvckZyYW1lSW5kZXgpKSk7CisKKyAgICAgICAgbm9SZXN1
bHQobm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIEdldEdlbmVyYXRvckxv
Y2FsOiB7CisgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGZyYW1lKHRoaXMsIG5vZGUtPmNo
aWxkMSgpKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKworICAgICAgICBH
UFJSZWcgZnJhbWVHUFIgPSBmcmFtZS5ncHIoKTsKKyAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9
IHJlc3VsdC5ncHIoKTsKKyAgICAgICAgdW5zaWduZWQgZ2VuZXJhdG9yRnJhbWVJbmRleCA9IG5v
ZGUtPmdlbmVyYXRvckZyYW1lSW5kZXgoKTsKKworICAgICAgICBtX2ppdC5sb2FkNjQoSklUQ29t
cGlsZXI6OkFkZHJlc3MoZnJhbWVHUFIsIEdlbmVyYXRvckZyYW1lOjpsb2NhbE9mZnNldChnZW5l
cmF0b3JGcmFtZUluZGV4KSksIHJlc3VsdEdQUik7CisgICAgICAgIGpzVmFsdWVSZXN1bHQocmVz
dWx0R1BSLCBub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgUHV0R2VuZXJh
dG9yRnJhbWVMb2NhbHM6IHsKKyAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgZnJhbWUodGhp
cywgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBHUFJSZWcgZnJhbWVHUFIgPSBmcmFtZS5ncHIo
KTsKKyAgICAgICAgbV9qaXQuc3RvcmUzMihUcnVzdGVkSW1tMzIobm9kZS0+Z2VuZXJhdG9yRnJh
bWVMb2NhbHMoKSksIEpJVENvbXBpbGVyOjpBZGRyZXNzKGZyYW1lR1BSLCBHZW5lcmF0b3JGcmFt
ZTo6bnVtYmVyT2ZTYXZlZENhbGxlZUxvY2Fsc09mZnNldCgpKSk7CisgICAgICAgIG5vUmVzdWx0
KG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CiAgICAgY2FzZSBQcm9maWxlVHlwZTogewog
ICAgICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAg
ICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoMSh0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAKaW5k
ZXggNzJmMjIwMGNlYTEwYjk4MTBkYmE4YzdiMTlmZWZmMjRkYWE1ZGFlMy4uZDdjNzA1NjZmYzcz
N2Y4OTBmMTU2YjUzNDUwOWQ5YTBjMDczOGU5YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAKQEAg
LTI4MSw2ICsyODEsMTEgQEAgY2xhc3MgU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UgOiBwdWJs
aWMgUGhhc2UgewogICAgICAgICAgICAgICAgIGNvbnNpZGVyQmFycmllcihtX25vZGUtPmNoaWxk
MSgpLCBtX25vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgY2FzZSBTZXRHZW5lcmF0b3JMb2NhbDogeworICAgICAgICAg
ICAgICAgIGNvbnNpZGVyQmFycmllcihtX25vZGUtPmNoaWxkMSgpLCBtX25vZGUtPmNoaWxkMigp
KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICAKICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0yOTYs
NiArMzAxLDcgQEAgY2xhc3MgU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UgOiBwdWJsaWMgUGhh
c2UgewogICAgICAgICAgICAgY2FzZSBOZXdBcnJheUJ1ZmZlcjoKICAgICAgICAgICAgIGNhc2Ug
TmV3VHlwZWRBcnJheToKICAgICAgICAgICAgIGNhc2UgTmV3UmVnZXhwOgorICAgICAgICAgICAg
Y2FzZSBOZXdHZW5lcmF0b3JGcmFtZToKICAgICAgICAgICAgIGNhc2UgTWF0ZXJpYWxpemVOZXdP
YmplY3Q6CiAgICAgICAgICAgICBjYXNlIE1hdGVyaWFsaXplQ3JlYXRlQWN0aXZhdGlvbjoKICAg
ICAgICAgICAgIGNhc2UgTmV3U3RyaW5nT2JqZWN0OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlLmNwcAppbmRl
eCAyYzA1NTk4NDk4OTliZGY2ZmIxMTE3NTk3ZTEwNTRiZmYzNTQ2NjkzLi5lMWFlZjBiMmMzOTNm
NTYxOTQ4Y2NhNWE5NTlmMmUwNzEwODg0Mzg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlLmNwcApAQCAt
MTQ5LDYgKzE0OSw5IEBAIGNsYXNzIFN0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlIDogcHVibGlj
IFBoYXNlIHsKICAgICAgICAgICAgICAgICBjYXNlIE5ld0dlbmVyYXRvckZ1bmN0aW9uOgogICAg
ICAgICAgICAgICAgICAgICByZWdpc3RlclN0cnVjdHVyZShtX2dyYXBoLmdsb2JhbE9iamVjdEZv
cihub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5nZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVyZSgpKTsK
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBOZXdHZW5l
cmF0b3JGcmFtZToKKyAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJTdHJ1Y3R1cmUobV9ncmFw
aC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+Z2VuZXJhdG9yRnJhbWVT
dHJ1Y3R1cmUoKSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAg
ICAgICAKICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICBicmVh
azsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFw
UmVwb3NpdG9yeS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVh
cFJlcG9zaXRvcnkuY3BwCmluZGV4IDk3YzA3ODRiYjQyYmM5MTlkMDZjZjUyM2M0MWUwMjQ2YTUz
NTFkOTEuLjY5ZDg5ZDZhZDQyNTQ5MjNiYzNmYWIzYzdhY2EyMDg5NWM1NWU1Y2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0
b3J5LmNwcApAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiRGlyZWN0QXJndW1lbnRzLmgi
CiAjaW5jbHVkZSAiRlRMQWJicmV2aWF0aW9ucy5oIgorI2luY2x1ZGUgIkdlbmVyYXRvckZyYW1l
LmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiSlNFbnZpcm9ubWVudFJl
Y29yZC5oIgogI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1lRW51bWVyYXRvci5oIgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5Lmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaApp
bmRleCA3N2U1Nzk4Njk0MGM2YWM5NmY4N2YxZjk0NWM0NjI1MTI4ODYzMGYwLi5hMzYyMWE0MTU3
ZWU3MjM2ZWY1NjZjZmVhZjA0Mjg0YmEyMTczMjkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaApAQCAtNDcsNiArNDcs
NyBAQAogICAgIG1hY3JvKERpcmVjdEFyZ3VtZW50c19sZW5ndGgsIERpcmVjdEFyZ3VtZW50czo6
b2Zmc2V0T2ZMZW5ndGgoKSkgXAogICAgIG1hY3JvKERpcmVjdEFyZ3VtZW50c19taW5DYXBhY2l0
eSwgRGlyZWN0QXJndW1lbnRzOjpvZmZzZXRPZk1pbkNhcGFjaXR5KCkpIFwKICAgICBtYWNybyhE
aXJlY3RBcmd1bWVudHNfb3ZlcnJpZGVzLCBEaXJlY3RBcmd1bWVudHM6Om9mZnNldE9mT3ZlcnJp
ZGVzKCkpIFwKKyAgICBtYWNybyhHZW5lcmF0b3JGcmFtZV9udW1iZXJPZlNhdmVkQ2FsbGVlTG9j
YWxzLCBHZW5lcmF0b3JGcmFtZTo6bnVtYmVyT2ZTYXZlZENhbGxlZUxvY2Fsc09mZnNldCgpKSBc
CiAgICAgbWFjcm8oR2V0dGVyU2V0dGVyX2dldHRlciwgR2V0dGVyU2V0dGVyOjpvZmZzZXRPZkdl
dHRlcigpKSBcCiAgICAgbWFjcm8oR2V0dGVyU2V0dGVyX3NldHRlciwgR2V0dGVyU2V0dGVyOjpv
ZmZzZXRPZlNldHRlcigpKSBcCiAgICAgbWFjcm8oSlNBcnJheUJ1ZmZlclZpZXdfbGVuZ3RoLCBK
U0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSkgXApAQCAtOTEsNiArOTIsNyBAQAog
CiAjZGVmaW5lIEZPUl9FQUNIX0lOREVYRURfQUJTVFJBQ1RfSEVBUChtYWNybykgXAogICAgIG1h
Y3JvKERpcmVjdEFyZ3VtZW50c19zdG9yYWdlLCBEaXJlY3RBcmd1bWVudHM6OnN0b3JhZ2VPZmZz
ZXQoKSwgc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSkgXAorICAgIG1hY3JvKEdlbmVyYXRvckZyYW1l
X2NhbGxlZUxvY2FscywgR2VuZXJhdG9yRnJhbWU6Om9mZnNldE9mTG9jYWxzKCksIHNpemVvZihX
cml0ZUJhcnJpZXI8VW5rbm93bj4pKSBcCiAgICAgbWFjcm8oSlNFbnZpcm9ubWVudFJlY29yZF92
YXJpYWJsZXMsIEpTRW52aXJvbm1lbnRSZWNvcmQ6Om9mZnNldE9mVmFyaWFibGVzKCksIHNpemVv
ZihFbmNvZGVkSlNWYWx1ZSkpIFwKICAgICBtYWNybyhKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3Jf
Y2FjaGVkUHJvcGVydHlOYW1lc1ZlY3RvckNvbnRlbnRzLCAwLCBzaXplb2YoV3JpdGVCYXJyaWVy
PEpTU3RyaW5nPikpIFwKICAgICBtYWNybyhKU1JvcGVTdHJpbmdfZmliZXJzLCBKU1JvcGVTdHJp
bmc6Om9mZnNldE9mRmliZXJzKCksIHNpemVvZihXcml0ZUJhcnJpZXI8SlNTdHJpbmc+KSkgXApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCmluZGV4IGQy
YTQ5MGMyYTY3ZTZkYjhiOWE1YTc5NjY0ZTU2NWUzZDZkOTUxZGMuLjE3YjRlMmRiNWY2YTFjYzAw
M2Y4ODBjN2VhNGM2MDBhYjhhYzg2NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTENhcGFiaWxpdGllcy5jcHAKQEAgLTcyLDYgKzcyLDcgQEAgaW5saW5lIENhcGFiaWxpdHlM
ZXZlbCBjYW5Db21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBOZXdPYmplY3Q6CiAgICAgY2Fz
ZSBOZXdBcnJheToKICAgICBjYXNlIE5ld0FycmF5QnVmZmVyOgorICAgIGNhc2UgTmV3R2VuZXJh
dG9yRnJhbWU6CiAgICAgY2FzZSBHZXRCeU9mZnNldDoKICAgICBjYXNlIEdldEdldHRlclNldHRl
ckJ5T2Zmc2V0OgogICAgIGNhc2UgR2V0R2V0dGVyOgpAQCAtMjE2LDYgKzIxNyw5IEBAIGlubGlu
ZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgUHV0U2V0
dGVyQnlWYWw6CiAgICAgY2FzZSBDb3B5UmVzdDoKICAgICBjYXNlIEdldFJlc3RMZW5ndGg6Cisg
ICAgY2FzZSBTZXRHZW5lcmF0b3JMb2NhbDoKKyAgICBjYXNlIEdldEdlbmVyYXRvckxvY2FsOgor
ICAgIGNhc2UgUHV0R2VuZXJhdG9yRnJhbWVMb2NhbHM6CiAgICAgICAgIC8vIFRoZXNlIGFyZSBP
Sy4KICAgICAgICAgYnJlYWs7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExM
b3dlckRGR1RvTExWTS5jcHAKaW5kZXggMzdjYWU1YzE3YWQ5YzcxZDAxOGQ0MWJiNmU5YTY2Yzkx
Nzc5NjZmMi4uODdjNmMzOWQyOWM5YjYyMzJkNTM5MjcwYjZmYmM2ZmU4MGI3MGY3MiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAKQEAgLTUz
LDYgKzUzLDcgQEAKICNpbmNsdWRlICJGVExQYXRjaHBvaW50RXhjZXB0aW9uSGFuZGxlLmgiCiAj
aW5jbHVkZSAiRlRMVGh1bmtzLmgiCiAjaW5jbHVkZSAiRlRMV2VpZ2h0ZWRUYXJnZXQuaCIKKyNp
bmNsdWRlICJHZW5lcmF0b3JGcmFtZS5oIgogI2luY2x1ZGUgIkpJVEFkZEdlbmVyYXRvci5oIgog
I2luY2x1ZGUgIkpJVEJpdEFuZEdlbmVyYXRvci5oIgogI2luY2x1ZGUgIkpJVEJpdE9yR2VuZXJh
dG9yLmgiCkBAIC04MzksNiArODQwLDkgQEAgY2xhc3MgTG93ZXJERkdUb0xMVk0gewogICAgICAg
ICBjYXNlIE5ld0FycmF5V2l0aFNpemU6CiAgICAgICAgICAgICBjb21waWxlTmV3QXJyYXlXaXRo
U2l6ZSgpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTmV3R2VuZXJhdG9yRnJh
bWU6CisgICAgICAgICAgICBjb21waWxlTmV3R2VuZXJhdG9yRnJhbWUoKTsKKyAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0OgogICAgICAgICAg
ICAgY29tcGlsZUdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0KCk7CiAgICAgICAgICAgICBicmVhazsK
QEAgLTEwNzEsNiArMTA3NSwxNSBAQCBjbGFzcyBMb3dlckRGR1RvTExWTSB7CiAgICAgICAgIGNh
c2UgR2V0UmVzdExlbmd0aDoKICAgICAgICAgICAgIGNvbXBpbGVHZXRSZXN0TGVuZ3RoKCk7CiAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBQdXRHZW5lcmF0b3JGcmFtZUxvY2FsczoK
KyAgICAgICAgICAgIGNvbXBpbGVQdXRHZW5lcmF0b3JGcmFtZUxvY2FscygpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgU2V0R2VuZXJhdG9yTG9jYWw6CisgICAgICAgICAgICBj
b21waWxlU2V0R2VuZXJhdG9yTG9jYWwoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIEdldEdlbmVyYXRvckxvY2FsOgorICAgICAgICAgICAgY29tcGlsZUdldEdlbmVyYXRvckxv
Y2FsKCk7CisgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIFBoYW50b21Mb2NhbDoK
ICAgICAgICAgY2FzZSBMb29wSGludDoKQEAgLTM5MTYsNiArMzkyOSwyOCBAQCBjbGFzcyBMb3dl
ckRGR1RvTExWTSB7CiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5l
eHQpOwogICAgICAgICBzZXRJbnQzMihtX291dC5waGkobV9vdXQuaW50MzIsIHplcm9MZW5ndGhS
ZXN1bHQsIG5vblplcm9MZW5ndGhSZXN1bHQpKTsKICAgICB9CisKKyAgICB2b2lkIGNvbXBpbGVQ
dXRHZW5lcmF0b3JGcmFtZUxvY2FscygpCisgICAgeworICAgICAgICBMVmFsdWUgZnJhbWUgPSBs
b3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBtX291dC5zdG9yZTMyKG1fb3V0LmNv
bnN0SW50MzIobV9ub2RlLT5nZW5lcmF0b3JGcmFtZUxvY2FscygpKSwgZnJhbWUsIG1faGVhcHMu
R2VuZXJhdG9yRnJhbWVfbnVtYmVyT2ZTYXZlZENhbGxlZUxvY2Fscyk7CisgICAgfQorCisgICAg
dm9pZCBjb21waWxlU2V0R2VuZXJhdG9yTG9jYWwoKQorICAgIHsKKyAgICAgICAgbV9vdXQuc3Rv
cmU2NCgKKyAgICAgICAgICAgIGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDIoKSksCisgICAgICAg
ICAgICBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpLAorICAgICAgICAgICAgbV9oZWFwcy5HZW5l
cmF0b3JGcmFtZV9jYWxsZWVMb2NhbHNbbV9ub2RlLT5nZW5lcmF0b3JGcmFtZUluZGV4KCldKTsK
KyAgICB9CisKKyAgICB2b2lkIGNvbXBpbGVHZXRHZW5lcmF0b3JMb2NhbCgpCisgICAgeworICAg
ICAgICBzZXRKU1ZhbHVlKAorICAgICAgICAgICAgbV9vdXQubG9hZDY0KAorICAgICAgICAgICAg
ICAgIGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSksCisgICAgICAgICAgICAgICAgbV9oZWFwcy5H
ZW5lcmF0b3JGcmFtZV9jYWxsZWVMb2NhbHNbbV9ub2RlLT5nZW5lcmF0b3JGcmFtZUluZGV4KCld
KSk7CisgICAgfQogICAgIAogICAgIHZvaWQgY29tcGlsZU5ld09iamVjdCgpCiAgICAgewpAQCAt
NDE1MCw2ICs0MTg1LDM2IEBAIGNsYXNzIExvd2VyREZHVG9MTFZNIHsKICAgICAgICAgICAgIG1f
b3V0LmNvbnN0SW50UHRyKHN0cnVjdHVyZSkpOwogICAgICAgICBzZXRKU1ZhbHVlKHZtQ2FsbCht
X291dC5pbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbk5ld0FycmF5V2l0aFNpemUpLCBt
X2NhbGxGcmFtZSwgc3RydWN0dXJlVmFsdWUsIHB1YmxpY0xlbmd0aCkpOwogICAgIH0KKworICAg
IHZvaWQgY29tcGlsZU5ld0dlbmVyYXRvckZyYW1lKCkKKyAgICB7CisgICAgICAgIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9y
aWdpbi5zZW1hbnRpYyk7CisgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gZ2xvYmFsT2Jq
ZWN0LT5nZW5lcmF0b3JGcmFtZVN0cnVjdHVyZSgpOworCisgICAgICAgIExCYXNpY0Jsb2NrIHNs
b3dQYXRoID0gRlRMX05FV19CTE9DSyhtX291dCwgKCJOZXdHZW5lcmF0b3JGcmFtZSBzbG93IHBh
dGgiKSk7CisgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IEZUTF9ORVdfQkxPQ0so
bV9vdXQsICgiTmV3R2VuZXJhdG9yRnJhbWUgY29udGludWF0aW9uIikpOworCisgICAgICAgIExC
YXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuaW5zZXJ0TmV3QmxvY2tzQmVmb3JlKHNsb3dQYXRo
KTsKKyAgICAgICAgTFZhbHVlIGZhc3RPYmplY3QgPSBhbGxvY2F0ZU9iamVjdDxHZW5lcmF0b3JG
cmFtZT4oR2VuZXJhdG9yRnJhbWU6OmFsbG9jYXRpb25TaXplRm9yTG9jYWxzKG1fbm9kZS0+Z2Vu
ZXJhdG9yRnJhbWVTaXplKCkpLCBzdHJ1Y3R1cmUsIG1fb3V0LmludFB0clplcm8sIHNsb3dQYXRo
KTsKKyAgICAgICAgbV9vdXQuc3RvcmUzMihtX291dC5jb25zdEludDMyKDApLCBmYXN0T2JqZWN0
LCBtX2hlYXBzLkdlbmVyYXRvckZyYW1lX251bWJlck9mU2F2ZWRDYWxsZWVMb2NhbHMpOworICAg
ICAgICBWYWx1ZUZyb21CbG9jayBmYXN0UmVzdWx0ID0gbV9vdXQuYW5jaG9yKGZhc3RPYmplY3Qp
OworICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgbV9vdXQuYXBw
ZW5kVG8oc2xvd1BhdGgsIGNvbnRpbnVhdGlvbik7CisgICAgICAgIFZlY3RvcjxMVmFsdWU+IHNs
b3dQYXRoQXJndW1lbnRzOworICAgICAgICB1bnNpZ25lZCBnZW5lcmF0b3JGcmFtZVNpemUgPSBt
X25vZGUtPmdlbmVyYXRvckZyYW1lU2l6ZSgpOworICAgICAgICBMVmFsdWUgY2FsbFJlc3VsdCA9
IGxhenlTbG93UGF0aCgKKyAgICAgICAgICAgIFs9XSAoY29uc3QgVmVjdG9yPExvY2F0aW9uPiYg
bG9jYXRpb25zKSAtPiBSZWZQdHI8TGF6eVNsb3dQYXRoOjpHZW5lcmF0b3I+IHsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gY3JlYXRlTGF6eUNhbGxHZW5lcmF0b3IoCisgICAgICAgICAgICAgICAg
ICAgIG9wZXJhdGlvbk5ld0dlbmVyYXRvckZyYW1lLAorICAgICAgICAgICAgICAgICAgICBsb2Nh
dGlvbnNbMF0uZGlyZWN0R1BSKCksIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihzdHJ1Y3R1
cmUpLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihnZW5lcmF0b3JGcmFtZVNpemUpKTsKKyAg
ICAgICAgICAgIH0pOworICAgICAgICBWYWx1ZUZyb21CbG9jayBzbG93UmVzdWx0ID0gbV9vdXQu
YW5jaG9yKGNhbGxSZXN1bHQpOworICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisK
KyAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7CisgICAgICAg
IHNldEpTVmFsdWUobV9vdXQucGhpKG1fb3V0LmludFB0ciwgZmFzdFJlc3VsdCwgc2xvd1Jlc3Vs
dCkpOworICAgIH0KICAgICAKICAgICB2b2lkIGNvbXBpbGVBbGxvY2F0ZVByb3BlcnR5U3RvcmFn
ZSgpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCmluZGV4IGEzYmRmYTdjZDVkMGY1
NzI0N2YxYmU4YzQwYjI1MTBkMjlkODAwZmYuLjBiOWZkOGQzNDNmZDhjZWIyN2FhZjdhMzk0MDA3
MDQ2NDc0YzI2OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKQEAgLTIxNiw3ICsyMTYs
OSBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9P
UChvcF9jaGVja190ZHopCiAgICAgICAgIERFRklORV9PUChvcF9hc3NlcnQpCiAgICAgICAgIERF
RklORV9PUChvcF9zYXZlKQotICAgICAgICBERUZJTkVfT1Aob3BfcmVzdW1lKQorICAgICAgICBE
RUZJTkVfT1Aob3BfbmV3X2dlbmVyYXRvcl9mcmFtZSkKKyAgICAgICAgREVGSU5FX09QKG9wX3Jl
c3VtZV9mcm9tX2dlbmVyYXRvcl9mcmFtZSkKKyAgICAgICAgREVGSU5FX09QKG9wX2NsZWFyX2dl
bmVyYXRvcl9mcmFtZSkKICAgICAgICAgREVGSU5FX09QKG9wX2RlYnVnKQogICAgICAgICBERUZJ
TkVfT1Aob3BfZGVsX2J5X2lkKQogICAgICAgICBERUZJTkVfT1Aob3BfZGl2KQpAQCAtMjg5LDYg
KzI5MSw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgREVG
SU5FX09QKG9wX3B1dF9nZXR0ZXJfc2V0dGVyX2J5X2lkKQogICAgICAgICBERUZJTkVfT1Aob3Bf
cHV0X2dldHRlcl9ieV92YWwpCiAgICAgICAgIERFRklORV9PUChvcF9wdXRfc2V0dGVyX2J5X3Zh
bCkKKyAgICAgICAgREVGSU5FX09QKG9wX25vcCkKIAogICAgICAgICBERUZJTkVfT1Aob3BfcmV0
KQogICAgICAgICBERUZJTkVfT1Aob3BfcnNoaWZ0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKaW5k
ZXggZGY3YjNkYzVlODkyMGVlNGVmOTJiY2FjYmFlZmYxYjRjMDBkOTM2OS4uZWM2ODFkMDk5MGVm
MGMyYTFiMGM0MWQ1NDEyYmJjZTBjMGQzOTFkZSAxMDA3NTUKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCkBA
IC00OTUsNyArNDk1LDkgQEAKICAgICAgICAgdm9pZCBlbWl0X29wX2NoZWNrX3RkeihJbnN0cnVj
dGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfYXNzZXJ0KEluc3RydWN0aW9uKik7CiAgICAg
ICAgIHZvaWQgZW1pdF9vcF9zYXZlKEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9v
cF9yZXN1bWUoSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX3Jlc3VtZV9mcm9t
X2dlbmVyYXRvcl9mcmFtZShJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfY2xl
YXJfZ2VuZXJhdG9yX2ZyYW1lKEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9u
ZXdfZ2VuZXJhdG9yX2ZyYW1lKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9k
ZWJ1ZyhJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZGVsX2J5X2lkKEluc3Ry
dWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9kaXYoSW5zdHJ1Y3Rpb24qKTsKQEAgLTU5
NSw2ICs1OTcsNyBAQAogICAgICAgICB2b2lkIGVtaXRfb3BfZW51bWVyYXRvcl9zdHJ1Y3R1cmVf
cG5hbWUoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2VudW1lcmF0b3JfZ2Vu
ZXJpY19wbmFtZShJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfdG9faW5kZXhf
c3RyaW5nKEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9ub3AoSW5zdHJ1Y3Rp
b24qKTsKIAogICAgICAgICB2b2lkIGVtaXRTbG93X29wX2FkZChJbnN0cnVjdGlvbiosIFZlY3Rv
cjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9i
aXRhbmQoSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAppbmRleCA3MzhjYjYzZmVkOTFi
NDk4NTVkNWQwMzNkNDYzMzQ1ZmRkNDc2ZDliLi40YTZhODhjODRmNTc1ZjE0YmFiNjAzOTM5MGY0
NjgxOTRlZjczNzI2IDEwMDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
Y29kZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAK
QEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJDb3BpZWRTcGFjZUlubGluZXMuaCIKICNpbmNs
dWRlICJEZWJ1Z2dlci5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbi5oIgorI2luY2x1ZGUgIkdlbmVy
YXRvckZyYW1lLmgiCiAjaW5jbHVkZSAiSGVhcC5oIgogI2luY2x1ZGUgIkpJVElubGluZXMuaCIK
ICNpbmNsdWRlICJKU0FycmF5LmgiCkBAIC04OTMsNiArODk0LDIzIEBAIHZvaWQgSklUOjplbWl0
U2xvd19vcF90b19zdHJpbmcoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9y
PFNsb3dDYXNlCiAgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKIH0KIAordm9pZCBKSVQ6OmVtaXRf
b3BfcmVzdW1lX2Zyb21fZ2VuZXJhdG9yX2ZyYW1lKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCit7CisgICAgaW50IGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7
CisgICAgaW50IGZyYW1lID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKKyAgICB1
bnNpZ25lZCBpbmRleCA9IGN1cnJlbnRJbnN0cnVjdGlvblszXS51LnVuc2lnbmVkVmFsdWU7Cisg
ICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihmcmFtZSwgcmVnVDEpOworICAgIGxvYWQ2NChBZGRy
ZXNzKHJlZ1QxLCBHZW5lcmF0b3JGcmFtZTo6bG9jYWxPZmZzZXQoaW5kZXgpKSwgcmVnVDApOwor
ICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0KTsKK30KKwordm9pZCBKSVQ6OmVtaXRfb3Bf
Y2xlYXJfZ2VuZXJhdG9yX2ZyYW1lKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7
CisgICAgaW50IGZyYW1lID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKKyAgICBl
bWl0R2V0VmlydHVhbFJlZ2lzdGVyKGZyYW1lLCByZWdUMSk7CisgICAgc3RvcmUzMihUcnVzdGVk
SW1tMzIoMCksIEFkZHJlc3MocmVnVDEsIEdlbmVyYXRvckZyYW1lOjpudW1iZXJPZlNhdmVkQ2Fs
bGVlTG9jYWxzT2Zmc2V0KCkpKTsKK30KKwogI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCiAKIHZv
aWQgSklUOjplbWl0X29wX2xvb3BfaGludChJbnN0cnVjdGlvbiopCkBAIC0xNDM1LDEyICsxNDUz
LDE2IEBAIHZvaWQgSklUOjplbWl0X29wX3NhdmUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKICAgICBzbG93UGF0aENhbGwuY2FsbCgpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9y
ZXN1bWUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29w
X25ld19nZW5lcmF0b3JfZnJhbWUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsK
LSAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlv
biwgc2xvd19wYXRoX3Jlc3VtZSk7CisgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0
aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9uZXdfZ2VuZXJhdG9yX2ZyYW1lKTsK
ICAgICBzbG93UGF0aENhbGwuY2FsbCgpOwogfQogCit2b2lkIEpJVDo6ZW1pdF9vcF9ub3AoSW5z
dHJ1Y3Rpb24qKQoreworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEVOQUJM
RShKSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZz
ZXRzRXh0cmFjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNl
dHNFeHRyYWN0b3IuY3BwCmluZGV4IDJiNGU2MTk4NmQzMTJhYzllNGY4NzM3M2NlN2FhMGI5ZmQw
Y2U3NWEuLmFmZTA5Njg0ODhmNDZkMTY3NWM5MTdlY2IyYjYyMGMwMDU2MTIyNDYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3Iu
Y3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiRGlyZWN0QXJndW1lbnRzLmgiCiAjaW5j
bHVkZSAiRXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAiRXhlY3V0YWJsZS5oIgorI2luY2x1ZGUgIkdl
bmVyYXRvckZyYW1lLmgiCiAjaW5jbHVkZSAiSGVhcC5oIgogI2luY2x1ZGUgIkludGVycHJldGVy
LmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCmluZGV4IGNkNGNlOTA2M2IxOTU3NWE5NTdl
M2NhM2UyMmJlNTc5MTViZGI1OWEuLmI5MjBhNmNlNjZjZmJlMTM1MzM0ZGEwMWY2OWQ1OGRlNDY2
MGNlNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbElu
dGVycHJldGVyLmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlci5hc20KQEAgLTE2NSw2ICsxNjUsNyBAQCBjb25zdCBTbG90U2l6ZSA9IDgKIAog
Y29uc3QgSlNFbnZpcm9ubWVudFJlY29yZF92YXJpYWJsZXMgPSAoc2l6ZW9mIEpTRW52aXJvbm1l
bnRSZWNvcmQgKyBTbG90U2l6ZSAtIDEpICYgfihTbG90U2l6ZSAtIDEpCiBjb25zdCBEaXJlY3RB
cmd1bWVudHNfc3RvcmFnZSA9IChzaXplb2YgRGlyZWN0QXJndW1lbnRzICsgU2xvdFNpemUgLSAx
KSAmIH4oU2xvdFNpemUgLSAxKQorY29uc3QgR2VuZXJhdG9yRnJhbWVfY2FsbGVlTG9jYWxzID0g
KHNpemVvZiBHZW5lcmF0b3JGcmFtZSArIFNsb3RTaXplIC0gMSkgJiB+KFNsb3RTaXplIC0gMSkK
IAogY29uc3QgU3RhY2tBbGlnbm1lbnQgPSAxNgogY29uc3QgU3RhY2tBbGlnbm1lbnRTbG90cyA9
IDIKQEAgLTEyNTYsNiArMTI1NywxMiBAQCBfbGxpbnRfb3BfbmV3X3JlZ2V4cDoKICAgICBkaXNw
YXRjaCgzKQogCiAKK19sbGludF9vcF9uZXdfZ2VuZXJhdG9yX2ZyYW1lOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF9uZXdfZ2VuZXJhdG9yX2ZyYW1l
KQorICAgIGRpc3BhdGNoKDMpCisKKwogX2xsaW50X29wX2xlc3M6CiAgICAgdHJhY2VFeGVjdXRp
b24oKQogICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRoX2xlc3MpCkBAIC0xNTk1LDEwICsxNjAy
LDE2IEBAIF9sbGludF9vcF9zYXZlOgogICAgIGRpc3BhdGNoKDQpCiAKIAotX2xsaW50X29wX3Jl
c3VtZToKK19sbGludF9vcF9zYXZlX2hpbnQ6CiAgICAgdHJhY2VFeGVjdXRpb24oKQotICAgIGNh
bGxTbG93UGF0aChfc2xvd19wYXRoX3Jlc3VtZSkKLSAgICBkaXNwYXRjaCgzKQorICAgIG5vdFN1
cHBvcnRlZCgpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfcmVzdW1lX2hpbnQ6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIG5vdFN1cHBvcnRlZCgpCisgICAgZGlzcGF0Y2goNCkK
IAogCiBfbGxpbnRfb3BfY3JlYXRlX2xleGljYWxfZW52aXJvbm1lbnQ6CkBAIC0xNzA4LDYgKzE3
MjEsMTAgQEAgX2xsaW50X29wX2NvcHlfcmVzdDoKICAgICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0
aF9jb3B5X3Jlc3QpCiAgICAgZGlzcGF0Y2goNCkKIAorX2xsaW50X29wX25vcDoKKyAgICB0cmFj
ZUV4ZWN1dGlvbigpCisgICAgZGlzcGF0Y2goMSkKKwogCiAjIExhc3RseSwgbWFrZSBzdXJlIHRo
YXQgd2UgY2FuIGxpbmsgZXZlbiB0aG91Z2ggd2UgZG9uJ3Qgc3VwcG9ydCBhbGwgb3Bjb2Rlcy4K
ICMgVGhlc2Ugb3Bjb2RlcyBzaG91bGQgbmV2ZXIgYXJpc2Ugd2hlbiB1c2luZyBMTEludCBvciBl
aXRoZXIgSklULiBXZSBhc3NlcnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KaW5kZXggODUxNzNiYzgyNjIxNDZiMGUwZDFl
MDE5MmI3MDYwMjhiYmQ5MDY4My4uNDkyYzYzYzI1Y2RmYWUzMmZmOWVlYjhhNGQxOTdlNTg1NTMx
OWFjMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXI2NC5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXI2NC5hc20KQEAgLTIzMjEsMyArMjMyMSwxOCBAQCBfbGxpbnRfb3BfZ2V0X3Jl
c3RfbGVuZ3RoOgogICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigxLCB0MSkKICAgICBzdG9yZXEg
dDAsIFtjZnIsIHQxLCA4XQogICAgIGRpc3BhdGNoKDMpCisKK19sbGludF9vcF9jbGVhcl9nZW5l
cmF0b3JfZnJhbWU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRWYXJpYWJsZSgxLCB0
MCkKKyAgICBzdG9yZWkgMCwgR2VuZXJhdG9yRnJhbWU6Om1fbnVtYmVyT2ZTYXZlZENhbGxlZUxv
Y2Fsc1t0MF0KKyAgICBkaXNwYXRjaCgyKQorCitfbGxpbnRfb3BfcmVzdW1lX2Zyb21fZ2VuZXJh
dG9yX2ZyYW1lOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkVmFyaWFibGUoMiwgdDAp
CisgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDMsIHQxKQorICAgIGxvYWRxIEdlbmVyYXRvckZy
YW1lX2NhbGxlZUxvY2Fsc1t0MCwgdDEsIDhdLCB0MAorICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlv
bigxLCB0MSkKKyAgICBzdG9yZXEgdDAsIFtjZnIsIHQxLCA4XQorICAgIGRpc3BhdGNoKDQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKaW5kZXggOGQzNzA2MzQ1MTI4ZTlk
ZjlkYWMzMjU3ZjdjNWY0ZTVhYjNhOWMzNC4uZTg2MDUzYjQ4MmE4ZDM2YjMzNWMwOGJhN2QzNjc1
NmQzYjc5NmFkOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJz
ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcApAQCAt
MjUwLDkgKzI1MCwxMCBAQAogICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24g
PSBmYWxzZTsKICAgICBpZiAobV9sZXhlci0+aXNSZXBhcnNpbmdGdW5jdGlvbigpKSB7CiAgICAg
ICAgIFBhcnNlckZ1bmN0aW9uSW5mbzxBU1RCdWlsZGVyPiBmdW5jdGlvbkluZm87Ci0gICAgICAg
IGlmIChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JCb2R5TW9kZSkKLSAg
ICAgICAgICAgIGZ1bmN0aW9uSW5mby5wYXJhbWV0ZXJzID0gY3JlYXRlR2VuZXJhdG9yUGFyYW1l
dGVycyhjb250ZXh0KTsKLSAgICAgICAgZWxzZQorICAgICAgICBpZiAocGFyc2VNb2RlID09IFNv
dXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yQm9keU1vZGUpIHsKKyAgICAgICAgICAgIHVuc2lnbmVk
IHBhcmFtZXRlckNvdW50ID0gMDsKKyAgICAgICAgICAgIGZ1bmN0aW9uSW5mby5wYXJhbWV0ZXJz
ID0gY3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhjb250ZXh0LCBwYXJhbWV0ZXJDb3VudCk7Cisg
ICAgICAgIH0gZWxzZQogICAgICAgICAgICAgcGFyc2VGdW5jdGlvblBhcmFtZXRlcnMoY29udGV4
dCwgcGFyc2VNb2RlLCBmdW5jdGlvbkluZm8pOwogICAgICAgICBtX3BhcmFtZXRlcnMgPSBmdW5j
dGlvbkluZm8ucGFyYW1ldGVyczsKIApAQCAtNDg1LDEwICs0ODYsOSBAQAogCiAgICAgUGFyc2Vy
RnVuY3Rpb25JbmZvPFRyZWVCdWlsZGVyPiBpbmZvOwogICAgIGluZm8ubmFtZSA9ICZtX3ZtLT5w
cm9wZXJ0eU5hbWVzLT5udWxsSWRlbnRpZmllcjsKLSAgICBpbmZvLnBhcmFtZXRlcnMgPSBjcmVh
dGVHZW5lcmF0b3JQYXJhbWV0ZXJzKGNvbnRleHQpOworICAgIGluZm8ucGFyYW1ldGVycyA9IGNy
ZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMoY29udGV4dCwgaW5mby5wYXJhbWV0ZXJDb3VudCk7CiAg
ICAgaW5mby5zdGFydE9mZnNldCA9IHBhcmFtZXRlcnNTdGFydDsKICAgICBpbmZvLnN0YXJ0TGlu
ZSA9IHRva2VuTGluZSgpOwotICAgIGluZm8ucGFyYW1ldGVyQ291bnQgPSA0OyAvLyBnZW5lcmF0
b3IsIHN0YXRlLCB2YWx1ZSwgcmVzdW1lIG1vZGUKIAogICAgIHsKICAgICAgICAgQXV0b1BvcFNj
b3BlUmVmIGdlbmVyYXRvckJvZHlTY29wZSh0aGlzLCBwdXNoU2NvcGUoKSk7CkBAIC0xNzgxLDMy
ICsxNzgxLDMwIEBAIHN0YXRpYyBjb25zdCBjaGFyKiBzdHJpbmdGb3JGdW5jdGlvbk1vZGUoU291
cmNlUGFyc2VNb2RlIG1vZGUpCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+Ci10
ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpGb3JtYWxQ
YXJhbWV0ZXJMaXN0IFBhcnNlcjxMZXhlclR5cGU+OjpjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJz
KFRyZWVCdWlsZGVyJiBjb250ZXh0KQordGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiB0eXBl
bmFtZSBUcmVlQnVpbGRlcjo6Rm9ybWFsUGFyYW1ldGVyTGlzdCBQYXJzZXI8TGV4ZXJUeXBlPjo6
Y3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhUcmVlQnVpbGRlciYgY29udGV4dCwgdW5zaWduZWQm
IHBhcmFtZXRlckNvdW50KQogewogICAgIGF1dG8gcGFyYW1ldGVycyA9IGNvbnRleHQuY3JlYXRl
Rm9ybWFsUGFyYW1ldGVyTGlzdCgpOwogCiAgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uKHRv
a2VuTG9jYXRpb24oKSk7CiAgICAgSlNUZXh0UG9zaXRpb24gcG9zaXRpb24gPSB0b2tlblN0YXJ0
UG9zaXRpb24oKTsKIAotICAgIC8vIEBnZW5lcmF0b3IKLSAgICBkZWNsYXJlUGFyYW1ldGVyKCZt
X3ZtLT5wcm9wZXJ0eU5hbWVzLT5nZW5lcmF0b3JQcml2YXRlTmFtZSk7Ci0gICAgYXV0byBnZW5l
cmF0b3IgPSBjb250ZXh0LmNyZWF0ZUJpbmRpbmdMb2NhdGlvbihsb2NhdGlvbiwgbV92bS0+cHJv
cGVydHlOYW1lcy0+Z2VuZXJhdG9yUHJpdmF0ZU5hbWUsIHBvc2l0aW9uLCBwb3NpdGlvbiwgQXNz
aWdubWVudENvbnRleHQ6OkRlY2xhcmF0aW9uU3RhdGVtZW50KTsKLSAgICBjb250ZXh0LmFwcGVu
ZFBhcmFtZXRlcihwYXJhbWV0ZXJzLCBnZW5lcmF0b3IsIDApOworICAgIGF1dG8gYWRkUGFyYW1l
dGVyID0gWyZdKGNvbnN0IElkZW50aWZpZXImIG5hbWUpIHsKKyAgICAgICAgZGVjbGFyZVBhcmFt
ZXRlcigmbmFtZSk7CisgICAgICAgIGF1dG8gYmluZGluZyA9IGNvbnRleHQuY3JlYXRlQmluZGlu
Z0xvY2F0aW9uKGxvY2F0aW9uLCBuYW1lLCBwb3NpdGlvbiwgcG9zaXRpb24sIEFzc2lnbm1lbnRD
b250ZXh0OjpEZWNsYXJhdGlvblN0YXRlbWVudCk7CisgICAgICAgIGNvbnRleHQuYXBwZW5kUGFy
YW1ldGVyKHBhcmFtZXRlcnMsIGJpbmRpbmcsIDApOworICAgICAgICArK3BhcmFtZXRlckNvdW50
OworICAgIH07CiAKKyAgICAvLyBAZ2VuZXJhdG9yCisgICAgYWRkUGFyYW1ldGVyKG1fdm0tPnBy
b3BlcnR5TmFtZXMtPmdlbmVyYXRvclByaXZhdGVOYW1lKTsKICAgICAvLyBAZ2VuZXJhdG9yU3Rh
dGUKLSAgICBkZWNsYXJlUGFyYW1ldGVyKCZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5nZW5lcmF0b3JT
dGF0ZVByaXZhdGVOYW1lKTsKLSAgICBhdXRvIGdlbmVyYXRvclN0YXRlID0gY29udGV4dC5jcmVh
dGVCaW5kaW5nTG9jYXRpb24obG9jYXRpb24sIG1fdm0tPnByb3BlcnR5TmFtZXMtPmdlbmVyYXRv
clN0YXRlUHJpdmF0ZU5hbWUsIHBvc2l0aW9uLCBwb3NpdGlvbiwgQXNzaWdubWVudENvbnRleHQ6
OkRlY2xhcmF0aW9uU3RhdGVtZW50KTsKLSAgICBjb250ZXh0LmFwcGVuZFBhcmFtZXRlcihwYXJh
bWV0ZXJzLCBnZW5lcmF0b3JTdGF0ZSwgMCk7Ci0KKyAgICBhZGRQYXJhbWV0ZXIobV92bS0+cHJv
cGVydHlOYW1lcy0+Z2VuZXJhdG9yU3RhdGVQcml2YXRlTmFtZSk7CiAgICAgLy8gQGdlbmVyYXRv
clZhbHVlCi0gICAgZGVjbGFyZVBhcmFtZXRlcigmbV92bS0+cHJvcGVydHlOYW1lcy0+Z2VuZXJh
dG9yVmFsdWVQcml2YXRlTmFtZSk7Ci0gICAgYXV0byBnZW5lcmF0b3JWYWx1ZSA9IGNvbnRleHQu
Y3JlYXRlQmluZGluZ0xvY2F0aW9uKGxvY2F0aW9uLCBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5nZW5l
cmF0b3JWYWx1ZVByaXZhdGVOYW1lLCBwb3NpdGlvbiwgcG9zaXRpb24sIEFzc2lnbm1lbnRDb250
ZXh0OjpEZWNsYXJhdGlvblN0YXRlbWVudCk7Ci0gICAgY29udGV4dC5hcHBlbmRQYXJhbWV0ZXIo
cGFyYW1ldGVycywgZ2VuZXJhdG9yVmFsdWUsIDApOwotCisgICAgYWRkUGFyYW1ldGVyKG1fdm0t
PnByb3BlcnR5TmFtZXMtPmdlbmVyYXRvclZhbHVlUHJpdmF0ZU5hbWUpOwogICAgIC8vIEBnZW5l
cmF0b3JSZXN1bWVNb2RlCi0gICAgZGVjbGFyZVBhcmFtZXRlcigmbV92bS0+cHJvcGVydHlOYW1l
cy0+Z2VuZXJhdG9yUmVzdW1lTW9kZVByaXZhdGVOYW1lKTsKLSAgICBhdXRvIGdlbmVyYXRvclJl
c3VtZU1vZGUgPSBjb250ZXh0LmNyZWF0ZUJpbmRpbmdMb2NhdGlvbihsb2NhdGlvbiwgbV92bS0+
cHJvcGVydHlOYW1lcy0+Z2VuZXJhdG9yUmVzdW1lTW9kZVByaXZhdGVOYW1lLCBwb3NpdGlvbiwg
cG9zaXRpb24sIEFzc2lnbm1lbnRDb250ZXh0OjpEZWNsYXJhdGlvblN0YXRlbWVudCk7Ci0gICAg
Y29udGV4dC5hcHBlbmRQYXJhbWV0ZXIocGFyYW1ldGVycywgZ2VuZXJhdG9yUmVzdW1lTW9kZSwg
MCk7CisgICAgYWRkUGFyYW1ldGVyKG1fdm0tPnByb3BlcnR5TmFtZXMtPmdlbmVyYXRvclJlc3Vt
ZU1vZGVQcml2YXRlTmFtZSk7CisgICAgLy8gQGdlbmVyYXRvckZyYW1lCisgICAgYWRkUGFyYW1l
dGVyKG1fdm0tPnByb3BlcnR5TmFtZXMtPmdlbmVyYXRvckZyYW1lUHJpdmF0ZU5hbWUpOwogCiAg
ICAgcmV0dXJuIHBhcmFtZXRlcnM7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL1BhcnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIu
aAppbmRleCBhMTFiMzVjMTAxZmU1Yjg0OWNiMjMzMDk2YzU2ODMxMzcwNjZjYWJmLi5lNjE0OWEz
YWMzNjk0MDQ4OTNkMjM2OTY5MzE2YjVjMzAzM2JlODUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvUGFyc2VyLmgKQEAgLTEyNTksNyArMTI1OSw3IEBAIGNsYXNzIFBhcnNlciB7CiAgICAg
dGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBORVZFUl9JTkxJTkUgYm9vbCBwYXJzZUZ1bmN0
aW9uSW5mbyhUcmVlQnVpbGRlciYsIEZ1bmN0aW9uUmVxdWlyZW1lbnRzLCBTb3VyY2VQYXJzZU1v
ZGUsIGJvb2wgbmFtZUlzSW5Db250YWluaW5nU2NvcGUsIENvbnN0cnVjdG9yS2luZCwgU3VwZXJC
aW5kaW5nLCBpbnQgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIFBhcnNlckZ1bmN0aW9uSW5mbzxUcmVl
QnVpbGRlcj4mLCBGdW5jdGlvbkRlZmluaXRpb25UeXBlKTsKICAgICAKICAgICB0ZW1wbGF0ZSA8
Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElORSBpbnQgcGFyc2VGdW5jdGlvblBhcmFtZXRl
cnMoVHJlZUJ1aWxkZXImLCBTb3VyY2VQYXJzZU1vZGUsIFBhcnNlckZ1bmN0aW9uSW5mbzxUcmVl
QnVpbGRlcj4mKTsKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElO
RSB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6Rm9ybWFsUGFyYW1ldGVyTGlzdCBjcmVhdGVHZW5lcmF0
b3JQYXJhbWV0ZXJzKFRyZWVCdWlsZGVyJik7CisgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWls
ZGVyPiBORVZFUl9JTkxJTkUgdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkZvcm1hbFBhcmFtZXRlckxp
c3QgY3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhUcmVlQnVpbGRlciYsIHVuc2lnbmVkJiBwYXJh
bWV0ZXJDb3VudCk7CiAKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lO
TElORSBUcmVlQ2xhc3NFeHByZXNzaW9uIHBhcnNlQ2xhc3MoVHJlZUJ1aWxkZXImLCBGdW5jdGlv
blJlcXVpcmVtZW50cywgUGFyc2VyQ2xhc3NJbmZvPFRyZWVCdWlsZGVyPiYpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAppbmRleCA3
OGI0M2M0ZDM4OWZmN2E5MDgzMTNiNTU0MDU3MGU4ODJlMWIwMzcxLi5kM2ZmYjk3NjVmMzUxY2Qx
NTBhMWY4YWVhMDRiYTY0YTZlN2QwNTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKQEAgLTY5NywzMyArNjk3LDEyIEBAIHN0YXRp
YyB2b2lkIHVwZGF0ZVJlc3VsdFByb2ZpbGVGb3JCaW5hcnlBcml0aE9wKEV4ZWNTdGF0ZSosIElu
c3RydWN0aW9uKiwgSlNWYWx1CiAgICAgLy8gT25seSBzYXZlIHZhcmlhYmxlcyBhbmQgdGVtcG9y
YXJ5IHJlZ2lzdGVycy4gVGhlIHNjb3BlIHJlZ2lzdGVycyBhcmUgaW5jbHVkZWQgaW4gdGhlbS4K
ICAgICAvLyBCdXQgcGFyYW1ldGVycyBhcmUgbm90IGluY2x1ZGVkLiBCZWNhdXNlIHRoZSBnZW5l
cmF0b3IgaW1wbGVtZW50YXRpb24gcmVwbGFjZXMgdGhlIHZhbHVlcyBvZiBwYXJhbWV0ZXJzIG9u
IGVhY2ggZ2VuZXJhdG9yLm5leHQoKSBjYWxsLgogICAgIEJFR0lOKCk7Ci0gICAgSlNWYWx1ZSBn
ZW5lcmF0b3IgPSBPUCgxKS5qc1ZhbHVlKCk7Ci0gICAgR2VuZXJhdG9yRnJhbWUqIGZyYW1lID0g
bnVsbHB0cjsKLSAgICBKU1ZhbHVlIHZhbHVlID0gZ2VuZXJhdG9yLmdldChleGVjLCBleGVjLT5w
cm9wZXJ0eU5hbWVzKCkuZ2VuZXJhdG9yRnJhbWVQcml2YXRlTmFtZSk7Ci0gICAgaWYgKCF2YWx1
ZS5pc051bGwoKSkKLSAgICAgICAgZnJhbWUgPSBqc0Nhc3Q8R2VuZXJhdG9yRnJhbWUqPih2YWx1
ZSk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIC8vIEZJWE1FOiBPbmNlIEpTR2VuZXJhdG9yIHNwZWNp
YWxpemVkIG9iamVjdCBpcyBpbnRyb2R1Y2VkLCB0aGlzIEdlbmVyYXRvckZyYW1lIHNob3VsZCBi
ZSBlbWJlZGVkIGludG8gaXQgdG8gYXZvaWQgYWxsb2NhdGlvbnMuCi0gICAgICAgIC8vIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE1NDUKLSAgICAgICAgZnJhbWUg
PSBHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlKGV4ZWMtPnZtKCksICBleGVjLT5jb2RlQmxvY2soKS0+
bnVtQ2FsbGVlTG9jYWxzKCkpOwotICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChnZW5lcmF0
b3IsIHRydWUsIFB1dFByb3BlcnR5U2xvdDo6UHV0QnlJZCk7Ci0gICAgICAgIGFzT2JqZWN0KGdl
bmVyYXRvciktPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5wdXQoYXNPYmplY3QoZ2VuZXJhdG9y
KSwgZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLmdlbmVyYXRvckZyYW1lUHJpdmF0ZU5hbWUs
IGZyYW1lLCBzbG90KTsKLSAgICB9CisgICAgR2VuZXJhdG9yRnJhbWUqIGZyYW1lID0ganNDYXN0
PEdlbmVyYXRvckZyYW1lKj4oT1AoMSkuanNWYWx1ZSgpKTsKICAgICB1bnNpZ25lZCBsaXZlQ2Fs
bGVlTG9jYWxzSW5kZXggPSBwY1syXS51LnVuc2lnbmVkVmFsdWU7CiAgICAgZnJhbWUtPnNhdmUo
ZXhlYywgZXhlYy0+Y29kZUJsb2NrKCktPmxpdmVDYWxsZWVMb2NhbHNBdFlpZWxkKGxpdmVDYWxs
ZWVMb2NhbHNJbmRleCkpOwogICAgIEVORCgpOwogfQogCi1TTE9XX1BBVEhfREVDTChzbG93X3Bh
dGhfcmVzdW1lKQotewotICAgIEJFR0lOKCk7Ci0gICAgSlNWYWx1ZSBnZW5lcmF0b3IgPSBPUCgx
KS5qc1ZhbHVlKCk7Ci0gICAgR2VuZXJhdG9yRnJhbWUqIGZyYW1lID0ganNDYXN0PEdlbmVyYXRv
ckZyYW1lKj4oZ2VuZXJhdG9yLmdldChleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuZ2VuZXJh
dG9yRnJhbWVQcml2YXRlTmFtZSkpOwotICAgIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRl
eCA9IHBjWzJdLnUudW5zaWduZWRWYWx1ZTsKLSAgICBmcmFtZS0+cmVzdW1lKGV4ZWMsIGV4ZWMt
PmNvZGVCbG9jaygpLT5saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZChsaXZlQ2FsbGVlTG9jYWxzSW5k
ZXgpKTsKLSAgICBFTkQoKTsKLX0KLQogU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2NyZWF0ZV9s
ZXhpY2FsX2Vudmlyb25tZW50KQogewogICAgIEJFR0lOKCk7CkBAIC03OTcsNCArNzc2LDEyIEBA
IHN0YXRpYyB2b2lkIHVwZGF0ZVJlc3VsdFByb2ZpbGVGb3JCaW5hcnlBcml0aE9wKEV4ZWNTdGF0
ZSosIEluc3RydWN0aW9uKiwgSlNWYWx1CiAgICAgRU5EKCk7CiB9CiAKK1NMT1dfUEFUSF9ERUNM
KHNsb3dfcGF0aF9uZXdfZ2VuZXJhdG9yX2ZyYW1lKQoreworICAgIEJFR0lOKCk7CisgICAgdW5z
aWduZWQgZ2VuZXJhdG9yRnJhbWVTaXplID0gcGNbMl0udS51bnNpZ25lZFZhbHVlOworICAgIFJF
VFVSTihHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlKGV4ZWMsIGdlbmVyYXRvckZyYW1lU2l6ZSkpOwor
fQorCisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db21tb25TbG93UGF0aHMuaAppbmRleCBmMDBkODcwNWQ0ZTY3ZmU0ZDQwNTliZGUxNjhl
ZTg4ZjU3ZGY3MmU3Li4wNjUwYzRlOGNiNzE1NTkxN2NkMWQ3YTJmNzdhN2M3ZjcyOWExNTQzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaApA
QCAtMjk2LDYgKzI5Niw3IEBAIGlubGluZSB2b2lkIGRlY29kZVJlc3VsdChTbG93UGF0aFJldHVy
blR5cGUgcmVzdWx0LCB2b2lkKiYgYSwgdm9pZComIGIpCiBTTE9XX1BBVEhfSElEREVOX0RFQ0wo
c2xvd19wYXRoX3B1c2hfd2l0aF9zY29wZSk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19w
YXRoX3Jlc29sdmVfc2NvcGUpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9jb3B5
X3Jlc3QpOworU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9uZXdfZ2VuZXJhdG9yX2Zy
YW1lKTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZyYW1lLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0dlbmVyYXRvckZyYW1lLmNwcAppbmRleCBlZjZlYTdhMTAwMjU4YzNlY2UwNGRh
YWI0M2JkYWE4NTFlYzhmNzE1Li4zMGI4MTRhNjM2NjcyNjgyNWMzODQ5ZmZiMjgwNGQyZmYzODA0
MTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JG
cmFtZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJh
bWUuY3BwCkBAIC0zMCw2MCArMzAsNjAgQEAKICNpbmNsdWRlICJIZWFwSXRlcmF0aW9uU2NvcGUu
aCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ2VsbElubGlu
ZXMuaCIKKyNpbmNsdWRlICJKU09iamVjdElubGluZXMuaCIKICNpbmNsdWRlICJTbG90VmlzaXRv
cklubGluZXMuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCiAKIG5hbWVzcGFjZSBK
U0MgewogCi1jb25zdCBDbGFzc0luZm8gR2VuZXJhdG9yRnJhbWU6OnNfaW5mbyA9IHsgIkdlbmVy
YXRvckZyYW1lIiwgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShHZW5lcmF0
b3JGcmFtZSkgfTsKK2NvbnN0IENsYXNzSW5mbyBHZW5lcmF0b3JGcmFtZTo6c19pbmZvID0geyAi
R2VuZXJhdG9yRnJhbWUiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RB
QkxFKEdlbmVyYXRvckZyYW1lKSB9OwogCi1HZW5lcmF0b3JGcmFtZTo6R2VuZXJhdG9yRnJhbWUo
Vk0mIHZtLCBzaXplX3QgbnVtYmVyT2ZDYWxsZWVMb2NhbHMpCi0gICAgOiBCYXNlKHZtLCB2bS5n
ZW5lcmF0b3JGcmFtZVN0cnVjdHVyZS5nZXQoKSkKLSAgICAsIG1fbnVtYmVyT2ZDYWxsZWVMb2Nh
bHMobnVtYmVyT2ZDYWxsZWVMb2NhbHMpCitHZW5lcmF0b3JGcmFtZTo6R2VuZXJhdG9yRnJhbWUo
Vk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkK
IHsKIH0KIAotdm9pZCBHZW5lcmF0b3JGcmFtZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQotewot
ICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IG1fbnVtYmVyT2ZDYWxsZWVMb2NhbHM7ICsraSkKLSAgICAgICAgbG9jYWxBdChpKS5jbGVhcigp
OwotfQotCiBTdHJ1Y3R1cmUqIEdlbmVyYXRvckZyYW1lOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZt
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKIHsKLSAg
ICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBU
eXBlSW5mbyhDZWxsVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIHJldHVybiBT
dHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9i
amVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKIH0KIAotR2VuZXJhdG9yRnJhbWUq
IEdlbmVyYXRvckZyYW1lOjpjcmVhdGUoVk0mIHZtLCBzaXplX3QgbnVtYmVyT2ZMb2NhbHMpCitH
ZW5lcmF0b3JGcmFtZSogR2VuZXJhdG9yRnJhbWU6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBzaXplX3QgbnVtYmVyT2ZDYWxsZWVMb2NhbHMpCiB7CiAgICAgR2VuZXJhdG9y
RnJhbWUqIHJlc3VsdCA9CiAgICAgICAgIG5ldyAoCiAgICAgICAgICAgICBOb3ROdWxsLAotICAg
ICAgICAgICAgYWxsb2NhdGVDZWxsPEdlbmVyYXRvckZyYW1lPih2bS5oZWFwLCBhbGxvY2F0aW9u
U2l6ZUZvckxvY2FscyhudW1iZXJPZkxvY2FscykpKQotICAgICAgICBHZW5lcmF0b3JGcmFtZSh2
bSwgbnVtYmVyT2ZMb2NhbHMpOworICAgICAgICAgICAgYWxsb2NhdGVDZWxsPEdlbmVyYXRvckZy
YW1lPih2bS5oZWFwLCBhbGxvY2F0aW9uU2l6ZUZvckxvY2FscyhudW1iZXJPZkNhbGxlZUxvY2Fs
cykpKQorICAgICAgICBHZW5lcmF0b3JGcmFtZSh2bSwgc3RydWN0dXJlKTsKICAgICByZXN1bHQt
PmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCitHZW5lcmF0b3JG
cmFtZSogR2VuZXJhdG9yRnJhbWU6OmNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIHNpemVfdCBudW1i
ZXJPZkNhbGxlZUxvY2FscykKK3sKKyAgICByZXR1cm4gY3JlYXRlKGV4ZWMtPnZtKCksIGV4ZWMt
PmxleGljYWxHbG9iYWxPYmplY3QoKS0+Z2VuZXJhdG9yRnJhbWVTdHJ1Y3R1cmUoKSwgbnVtYmVy
T2ZDYWxsZWVMb2NhbHMpOworfQorCiB2b2lkIEdlbmVyYXRvckZyYW1lOjpzYXZlKEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZUNhbGxlZUxvY2FscykKIHsKICAgICAv
LyBPbmx5IHNhdmUgY2FsbGVlIGxvY2Fscy4KICAgICAvLyBFdmVyeSB0aW1lIGEgZ2VuZXJhdG9y
IGlzIGNhbGxlZCAob3IgcmVzdW1lZCksIHBhcmFtZXRlcnMgc2hvdWxkIGJlIHJlcGxhY2VkLgot
ICAgIEFTU0VSVChsaXZlQ2FsbGVlTG9jYWxzLm51bUJpdHMoKSA8PSBtX251bWJlck9mQ2FsbGVl
TG9jYWxzKTsKKyAgICB1bnNpZ25lZCBnZW5lcmF0b3JGcmFtZUluZGV4ID0gMDsKICAgICBsaXZl
Q2FsbGVlTG9jYWxzLmZvckVhY2hTZXRCaXQoWyZdKHNpemVfdCBpbmRleCkgewotICAgICAgICBs
b2NhbEF0KGluZGV4KS5zZXQoZXhlYy0+dm0oKSwgdGhpcywgZXhlYy0+dW5jaGVja2VkUih2aXJ0
dWFsUmVnaXN0ZXJGb3JMb2NhbChpbmRleCkpLmpzVmFsdWUoKSk7CisgICAgICAgIGxvY2FsQXQo
Z2VuZXJhdG9yRnJhbWVJbmRleCsrKS5zZXQoZXhlYy0+dm0oKSwgdGhpcywgZXhlYy0+dW5jaGVj
a2VkUih2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChpbmRleCkpLmpzVmFsdWUoKSk7CiAgICAgfSk7
CisgICAgbV9udW1iZXJPZlNhdmVkQ2FsbGVlTG9jYWxzID0gZ2VuZXJhdG9yRnJhbWVJbmRleDsK
IH0KIAogdm9pZCBHZW5lcmF0b3JGcmFtZTo6cmVzdW1lKEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
RmFzdEJpdFZlY3RvciYgbGl2ZUNhbGxlZUxvY2FscykKIHsKICAgICAvLyBPbmx5IHJlc3VtZSBj
YWxsZWUgbG9jYWxzLgogICAgIC8vIEV2ZXJ5IHRpbWUgYSBnZW5lcmF0b3IgaXMgY2FsbGVkIChv
ciByZXN1bWVkKSwgcGFyYW1ldGVycyBzaG91bGQgYmUgcmVwbGFjZWQuCisgICAgdW5zaWduZWQg
Z2VuZXJhdG9yRnJhbWVJbmRleCA9IDA7CiAgICAgbGl2ZUNhbGxlZUxvY2Fscy5mb3JFYWNoU2V0
Qml0KFsmXShzaXplX3QgaW5kZXgpIHsKLSAgICAgICAgZXhlYy0+dW5jaGVja2VkUih2aXJ0dWFs
UmVnaXN0ZXJGb3JMb2NhbChpbmRleCkpID0gbG9jYWxBdChpbmRleCkuZ2V0KCk7Ci0gICAgICAg
IGxvY2FsQXQoaW5kZXgpLmNsZWFyKCk7CisgICAgICAgIGV4ZWMtPnVuY2hlY2tlZFIodmlydHVh
bFJlZ2lzdGVyRm9yTG9jYWwoaW5kZXgpKSA9IGxvY2FsQXQoZ2VuZXJhdG9yRnJhbWVJbmRleCsr
KS5nZXQoKTsKICAgICB9KTsKKyAgICBtX251bWJlck9mU2F2ZWRDYWxsZWVMb2NhbHMgPSAwOwog
fQogCiB2b2lkIEdlbmVyYXRvckZyYW1lOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xv
dFZpc2l0b3ImIHZpc2l0b3IpCkBAIC05MSw3ICs5MSw3IEBAIHZvaWQgR2VuZXJhdG9yRnJhbWU6
OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICBH
ZW5lcmF0b3JGcmFtZSogdGhpc09iamVjdCA9IGpzQ2FzdDxHZW5lcmF0b3JGcmFtZSo+KGNlbGwp
OwogICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CiAgICAgLy8g
U2luY2Ugb25seSB0cnVlIGNlbGwgcG9pbnRlcnMgYXJlIHN0b3JlZCBhcyBhIGNlbGwsIHdlIGNh
biBzYWZlbHkgbWFyayB0aGVtLgotICAgIHZpc2l0b3IuYXBwZW5kVmFsdWVzKHRoaXNPYmplY3Qt
PmxvY2FscygpLCB0aGlzT2JqZWN0LT5tX251bWJlck9mQ2FsbGVlTG9jYWxzKTsKKyAgICB2aXNp
dG9yLmFwcGVuZFZhbHVlcyh0aGlzT2JqZWN0LT5sb2NhbHMoKSwgdGhpc09iamVjdC0+bV9udW1i
ZXJPZlNhdmVkQ2FsbGVlTG9jYWxzKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGcmFtZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJhbWUuaAppbmRleCAzZDU0NWIx
NDdkZDRhYmZiMmJiYjliNWE3MTk0ZThmNzQ4NDFjNDlhLi4wNDBiYzNiNjg2NjQ0ODRhY2I1NzRk
N2Q0NDQ5ZmJiMjAyODJmMjZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9HZW5lcmF0b3JGcmFtZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0dlbmVyYXRvckZyYW1lLmgKQEAgLTI3LDExICsyNywxNCBAQAogI2RlZmluZSBHZW5lcmF0b3JG
cmFtZV9oCiAKICNpbmNsdWRlICJKU0NlbGwuaCIKKyNpbmNsdWRlICJKU09iamVjdC5oIgogI2lu
Y2x1ZGUgPHd0Zi9GYXN0Qml0VmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCi1jbGFzcyBH
ZW5lcmF0b3JGcmFtZSA6IHB1YmxpYyBKU0NlbGwgeworY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFj
dG9yOworCitjbGFzcyBHZW5lcmF0b3JGcmFtZSA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsK
ICAgICBmcmllbmQgY2xhc3MgSklUOwogI2lmIEVOQUJMRShERkdfSklUKQogICAgIGZyaWVuZCBj
bGFzcyBERkc6OlNwZWN1bGF0aXZlSklUOwpAQCAtMzksMTIgKzQyLDEyIEBAIGNsYXNzIEdlbmVy
YXRvckZyYW1lIDogcHVibGljIEpTQ2VsbCB7CiAjZW5kaWYKICAgICBmcmllbmQgY2xhc3MgVk07
CiBwdWJsaWM6Ci0gICAgdHlwZWRlZiBKU0NlbGwgQmFzZTsKLSAgICBzdGF0aWMgY29uc3QgdW5z
aWduZWQgU3RydWN0dXJlRmxhZ3MgPSBTdHJ1Y3R1cmVJc0ltbW9ydGFsIHwgQmFzZTo6U3RydWN0
dXJlRmxhZ3M7CisgICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CiAKICAgICBERUNM
QVJFX0VYUE9SVF9JTkZPOwogCi0gICAgc3RhdGljIEdlbmVyYXRvckZyYW1lKiBjcmVhdGUoVk0m
LCBzaXplX3QgbnVtYmVyT2ZDYWxsZWVMb2NhbHMpOworICAgIHN0YXRpYyBHZW5lcmF0b3JGcmFt
ZSogY3JlYXRlKEV4ZWNTdGF0ZSosIHNpemVfdCBudW1iZXJPZkNhbGxlZUxvY2Fscyk7CisgICAg
c3RhdGljIEdlbmVyYXRvckZyYW1lKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqLCBzaXplX3QgbnVt
YmVyT2ZDYWxsZWVMb2NhbHMpOwogCiAgICAgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiogbG9j
YWxzKCkKICAgICB7CkBAIC01Myw3ICs1Niw2IEBAIGNsYXNzIEdlbmVyYXRvckZyYW1lIDogcHVi
bGljIEpTQ2VsbCB7CiAKICAgICBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+JiBsb2NhbEF0KHNp
emVfdCBpbmRleCkKICAgICB7Ci0gICAgICAgIEFTU0VSVChpbmRleCA8IG1fbnVtYmVyT2ZDYWxs
ZWVMb2NhbHMpOwogICAgICAgICByZXR1cm4gbG9jYWxzKClbaW5kZXhdOwogICAgIH0KIApAQCAt
NjIsNiArNjQsMTYgQEAgY2xhc3MgR2VuZXJhdG9yRnJhbWUgOiBwdWJsaWMgSlNDZWxsIHsKICAg
ICAgICAgcmV0dXJuIFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZjxzaXplb2YoV3JpdGVCYXJyaWVy
PFVua25vd24+KT4oc2l6ZW9mKEdlbmVyYXRvckZyYW1lKSk7CiAgICAgfQogCisgICAgc3RhdGlj
IHNpemVfdCBsb2NhbE9mZnNldCh1bnNpZ25lZCBpbmRleCkKKyAgICB7CisgICAgICAgIHJldHVy
biBvZmZzZXRPZkxvY2FscygpICsgaW5kZXggKiBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+
KTsKKyAgICB9CisKKyAgICBzdGF0aWMgc2l6ZV90IG51bWJlck9mU2F2ZWRDYWxsZWVMb2NhbHNP
ZmZzZXQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihHZW5lcmF0b3JG
cmFtZSwgbV9udW1iZXJPZlNhdmVkQ2FsbGVlTG9jYWxzKTsKKyAgICB9CisKICAgICBzdGF0aWMg
c2l6ZV90IGFsbG9jYXRpb25TaXplRm9yTG9jYWxzKHVuc2lnbmVkIG51bWJlck9mTG9jYWxzKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIG9mZnNldE9mTG9jYWxzKCkgKyBudW1iZXJPZkxvY2FscyAq
IHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pOwpAQCAtNzMsMTQgKzg1LDEyIEBAIGNsYXNz
IEdlbmVyYXRvckZyYW1lIDogcHVibGljIEpTQ2VsbCB7CiAgICAgdm9pZCByZXN1bWUoRXhlY1N0
YXRlKiwgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZUNhbGxlZUxvY2Fscyk7CiAKIHByaXZhdGU6
Ci0gICAgR2VuZXJhdG9yRnJhbWUoVk0mLCBzaXplX3QgbnVtYmVyT2ZDYWxsZWVMb2NhbHMpOwor
ICAgIEdlbmVyYXRvckZyYW1lKFZNJiwgU3RydWN0dXJlKik7CiAKLSAgICBzaXplX3QgbV9udW1i
ZXJPZkNhbGxlZUxvY2FsczsKKyAgICB1aW50MzJfdCBtX251bWJlck9mU2F2ZWRDYWxsZWVMb2Nh
bHMgeyAwIH07CiAKICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogCi0g
ICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOwotCiBwcm90ZWN0ZWQ6CiAgICAgc3RhdGljIHZv
aWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCA3NjlhM2Vm
YjMwNDM4ZGNkOWRkZTQ0MmRjODg5NGExZjAzODJhNTA0Li44Y2I4NGFiZTVmODczOWEwMThlNjJl
YTQ4ZjQ3MTQ0NDc5NTUxZDNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC01MCw2ICs1MCw3IEBACiAjaW5jbHVkZSAiRXJyb3JQ
cm90b3R5cGUuaCIKICNpbmNsdWRlICJGdW5jdGlvbkNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAi
RnVuY3Rpb25Qcm90b3R5cGUuaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JGcmFtZS5oIgogI2luY2x1
ZGUgIkdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJHZW5lcmF0b3JG
dW5jdGlvblByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkdlbmVyYXRvclByb3RvdHlwZS5oIgpAQCAt
Mzg4LDYgKzM4OSw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmluaXQoVk0mIHZtKQogICAgIAog
ICAgIEZPUl9FQUNIX0JVSUxUSU5fREVSSVZFRF9JVEVSQVRPUl9UWVBFKENSRUFURV9QUk9UT1RZ
UEVfRk9SX0RFUklWRURfSVRFUkFUT1JfVFlQRSkKICAgICBtX3Byb3BlcnR5TmFtZUl0ZXJhdG9y
U3RydWN0dXJlLnNldCh2bSwgdGhpcywgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6Y3JlYXRlU3Ry
dWN0dXJlKHZtLCB0aGlzLCBtX2l0ZXJhdG9yUHJvdG90eXBlLmdldCgpKSk7CisgICAgbV9nZW5l
cmF0b3JGcmFtZVN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIEdlbmVyYXRvckZyYW1lOjpjcmVhdGVT
dHJ1Y3R1cmUodm0sIHRoaXMsIGpzTnVsbCgpKSk7CiAgICAgbV9nZW5lcmF0b3JQcm90b3R5cGUu
c2V0KHZtLCB0aGlzLCBHZW5lcmF0b3JQcm90b3R5cGU6OmNyZWF0ZSh2bSwgdGhpcywgR2VuZXJh
dG9yUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1faXRlcmF0b3JQcm90b3R5
cGUuZ2V0KCkpKSk7CiAgICAgCiAjdW5kZWYgQ1JFQVRFX1BST1RPVFlQRV9GT1JfREVSSVZFRF9J
VEVSQVRPUl9UWVBFCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuaAppbmRleCBiNGZmMmZiNDEzZTBlNDQ2MjQ5MmE0OGEzZmQ1YTRjMjRlYTBiNzQxLi43
MWQzOWVjOTI4M2FkOWU1OTAxMjQ0ZjAxMzZhMTM1OGY1NDRhOTkzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTI1NSw2ICsyNTUsNyBA
QCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0
IHsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2NhbGxiYWNrRnVuY3Rpb25TdHJ1Y3R1
cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9jYWxsYmFja09iamVjdFN0cnVjdHVy
ZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3Byb3BlcnR5TmFtZUl0ZXJhdG9yU3Ry
dWN0dXJlOworICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fZ2VuZXJhdG9yRnJhbWVTdHJ1
Y3R1cmU7CiAjaWYgSlNDX09CSkNfQVBJX0VOQUJMRUQKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0
dXJlPiBtX29iamNDYWxsYmFja0Z1bmN0aW9uU3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxT
dHJ1Y3R1cmU+IG1fb2JqY1dyYXBwZXJPYmplY3RTdHJ1Y3R1cmU7CkBAIC01MDEsNiArNTAyLDcg
QEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVj
dCB7CiAgICAgU3RydWN0dXJlKiBjYWxsYmFja0Z1bmN0aW9uU3RydWN0dXJlKCkgY29uc3QgeyBy
ZXR1cm4gbV9jYWxsYmFja0Z1bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJl
KiBjYWxsYmFja09iamVjdFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FsbGJhY2tPYmpl
Y3RTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIHByb3BlcnR5TmFtZUl0ZXJhdG9y
U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9wcm9wZXJ0eU5hbWVJdGVyYXRvclN0cnVjdHVy
ZS5nZXQoKTsgfQorICAgIFN0cnVjdHVyZSogZ2VuZXJhdG9yRnJhbWVTdHJ1Y3R1cmUoKSBjb25z
dCB7IHJldHVybiBtX2dlbmVyYXRvckZyYW1lU3RydWN0dXJlLmdldCgpOyB9CiAjaWYgSlNDX09C
SkNfQVBJX0VOQUJMRUQKICAgICBTdHJ1Y3R1cmUqIG9iamNDYWxsYmFja0Z1bmN0aW9uU3RydWN0
dXJlKCkgY29uc3QgeyByZXR1cm4gbV9vYmpjQ2FsbGJhY2tGdW5jdGlvblN0cnVjdHVyZS5nZXQo
KTsgfQogICAgIFN0cnVjdHVyZSogb2JqY1dyYXBwZXJPYmplY3RTdHJ1Y3R1cmUoKSBjb25zdCB7
IHJldHVybiBtX29iamNXcmFwcGVyT2JqZWN0U3RydWN0dXJlLmdldCgpOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXggMGU0NGMzNDYwZjlmOGYwZGNiMzVkOTEyZDc5NWY3
Zjk4ZGZiN2Y0NS4uMGVmMjVlNzI5YWE2ZTU1YzNkY2EwNjFjMjJiNjVhYTZmN2I1YjM0ZSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtMjQ2LDcgKzI0Niw2IEBAIHN0YXRp
YyBib29sIGVuYWJsZUFzc2VtYmxlcihFeGVjdXRhYmxlQWxsb2NhdG9yJiBleGVjdXRhYmxlQWxs
b2NhdG9yKQogICAgIGluZmVycmVkVHlwZVN0cnVjdHVyZS5zZXQoKnRoaXMsIEluZmVycmVkVHlw
ZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIGluZmVycmVkVHlw
ZVRhYmxlU3RydWN0dXJlLnNldCgqdGhpcywgSW5mZXJyZWRUeXBlVGFibGU6OmNyZWF0ZVN0cnVj
dHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICBmdW5jdGlvblJhcmVEYXRhU3RydWN0dXJl
LnNldCgqdGhpcywgRnVuY3Rpb25SYXJlRGF0YTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBq
c051bGwoKSkpOwotICAgIGdlbmVyYXRvckZyYW1lU3RydWN0dXJlLnNldCgqdGhpcywgR2VuZXJh
dG9yRnJhbWU6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICBleGNl
cHRpb25TdHJ1Y3R1cmUuc2V0KCp0aGlzLCBFeGNlcHRpb246OmNyZWF0ZVN0cnVjdHVyZSgqdGhp
cywgMCwganNOdWxsKCkpKTsKICAgICBwcm9taXNlRGVmZXJyZWRTdHJ1Y3R1cmUuc2V0KCp0aGlz
LCBKU1Byb21pc2VEZWZlcnJlZDo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkp
OwogICAgIGludGVybmFsUHJvbWlzZURlZmVycmVkU3RydWN0dXJlLnNldCgqdGhpcywgSlNJbnRl
cm5hbFByb21pc2VEZWZlcnJlZDo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKaW5kZXggYWVlMGFjMWYyMWI4NDUxYmM3NzY3
NDQzYTBiMDVjYTA0OGI0ZjQ5Yi4uMjM2MDgzNzBhOTgzNmQ4OTc3ZTQ5ZDcxZTY4YTgwOWI5YWM0
NTM2MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCkBAIC0zMTIsNyArMzEyLDYgQEAg
Y2xhc3MgVk0gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Vk0+IHsKICAgICBTdHJvbmc8
U3RydWN0dXJlPiBpbmZlcnJlZFR5cGVTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4g
aW5mZXJyZWRUeXBlVGFibGVTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gZnVuY3Rp
b25SYXJlRGF0YVN0cnVjdHVyZTsKLSAgICBTdHJvbmc8U3RydWN0dXJlPiBnZW5lcmF0b3JGcmFt
ZVN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBleGNlcHRpb25TdHJ1Y3R1cmU7CiAg
ICAgU3Ryb25nPFN0cnVjdHVyZT4gcHJvbWlzZURlZmVycmVkU3RydWN0dXJlOwogICAgIFN0cm9u
ZzxTdHJ1Y3R1cmU+IGludGVybmFsUHJvbWlzZURlZmVycmVkU3RydWN0dXJlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>269155</attachid>
            <date>2016-01-15 23:01:55 -0800</date>
            <delta_ts>2016-01-16 00:13:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-152723-20160116160124.patch</filename>
            <type>text/plain</type>
            <size>95339</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk1MDU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
ZDVkMzdhNWE2NzE2ZmQyMWY5YzRiYzhlZDg0OGZkNTlhZjU1NTgzLi44MWFhMDgyZGQ1ZGM4NDZl
YWM1YmRiOWIxNGE5M2Q3OGMzNzFjOGUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMzMgQEAKKzIwMTYtMDEtMTUgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgQ3JlYXRlIEdlbmVyYXRvckZyYW1lIHdpdGggdGhlIGJ5dGVjb2Rl
IG9wX25ld19nZW5lcmF0b3JfZnJhbWUgYW5kIG1ha2Ugb3Bfc2F2ZSAvIG9wX3Jlc3VtZSBERkcv
RlRMIGNhcGFibGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1MjcyMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogYnVpbHRpbnMvR2VuZXJhdG9yUHJvdG90eXBlLmpzOgorICAgICAgICAoZ2VuZXJhdG9y
UmVzdW1lKToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suY3BwOgorICAg
ICAgICAoSlNDOjppc0JyYW5jaCk6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpz
b246CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaDoKKyAgICAgICAgKEpTQzo6
Y29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OmNvbXB1dGVEZWZz
Rm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogYnl0ZWNvZGUvUHJlY2lzZUp1bXBU
YXJnZXRzLmNwcDoKKyAgICAgICAgKEpTQzo6Z2V0SnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNl
dCk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdHZW5lcmF0b3JGcmFtZSk6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0U2F2ZSk6CisgICAgICAgIChKU0M6OkJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0UmVzdW1lKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRv
ckZyYW1lUmVnaXN0ZXIpOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEhlYXAuaDoKKyAgICAg
ICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6
REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVj
dHMpOgorICAgICAgICAqIGRmZy9ERkdCYWNrd2FyZHNQcm9wYWdhdGlvblBoYXNlLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpCYWNrd2FyZHNQcm9wYWdhdGlvblBoYXNlOjpwcm9wYWdhdGUpOgor
ICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
Qnl0ZUNvZGVQYXJzZXI6Om5ld0dlbmVyYXRvckxvY2FsRGF0YSk6CisgICAgICAgIChKU0M6OkRG
Rzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAqIGRmZy9ERkdDYXBhYmls
aXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmNhcGFiaWxpdHlMZXZlbCk6CisgICAgICAg
ICogZGZnL0RGR0Nsb2JiZXJpemUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToK
KyAgICAgICAgKiBkZmcvREZHQ2xvYmJlcnNFeGl0U3RhdGUuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OmNsb2JiZXJzRXhpdFN0YXRlKToKKyAgICAgICAgKiBkZmcvREZHRG9lc0dDLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpkb2VzR0MpOgorICAgICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5vZGUpOgorICAgICAgICAq
IGRmZy9ERkdHZW5lcmF0b3JMb2NhbERhdGEuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkRGRzo6
R2VuZXJhdG9yTG9jYWxEYXRhOjpwcmVkaWN0KToKKyAgICAgICAgKEpTQzo6REZHOjpHZW5lcmF0
b3JMb2NhbERhdGE6OnByZWRpY3Rpb24pOgorICAgICAgICAoSlNDOjpERkc6OkdlbmVyYXRvckxv
Y2FsRGF0YTo6ZmxhZ3MpOgorICAgICAgICAoSlNDOjpERkc6OkdlbmVyYXRvckxvY2FsRGF0YTo6
bWVyZ2VGbGFncyk6CisgICAgICAgICogZGZnL0RGR0dyYXBoLmg6CisgICAgICAgICogZGZnL0RG
R01heUV4aXQuY3BwOgorICAgICAgICAoSlNDOjpERkc6Om1heUV4aXQpOgorICAgICAgICAqIGRm
Zy9ERkdOb2RlLmg6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzR2VuZXJhdG9yRnJhbWVT
aXplKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpnZW5lcmF0b3JGcmFtZVNpemUpOgorICAg
ICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc0dlbmVyYXRvckZyYW1lSW5kZXgpOgorICAgICAgICAo
SlNDOjpERkc6Ok5vZGU6OmdlbmVyYXRvckZyYW1lSW5kZXgpOgorICAgICAgICAoSlNDOjpERkc6
Ok5vZGU6Omhhc0dlbmVyYXRvckxvY2FsRGF0YSk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6
Z2VuZXJhdG9yTG9jYWxEYXRhKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNHZW5lcmF0
b3JGcmFtZUxvY2Fscyk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6Z2VuZXJhdG9yRnJhbWVM
b2NhbHMpOgorICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAqIGRmZy9ERkdP
cGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5oOgorICAgICAgICAq
IGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2U6OnByb3BhZ2F0ZSk6CisgICAgICAgICogZGZn
L0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToK
KyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3R2VuZXJhdG9yRnJhbWUpOgorICAgICAgICAqIGRm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMy
XzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6Cisg
ICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3RvcmVCYXJyaWVy
SW5zZXJ0aW9uUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdTdHJ1Y3R1cmVSZWdpc3RyYXRp
b25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3RydWN0dXJlUmVnaXN0cmF0aW9uUGhh
c2U6OnJ1bik6CisgICAgICAgICogZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwOgor
ICAgICAgICAqIGZ0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5Lmg6CisgICAgICAgICogZnRs
L0ZUTENhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6Y2FuQ29tcGlsZSk6Cisg
ICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpE
Rkc6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlTm9kZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZH
OjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZVB1dEdlbmVyYXRvckZyYW1lTG9jYWxzKToKKyAgICAg
ICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlU2V0R2VuZXJhdG9yTG9j
YWwpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVHZXRH
ZW5lcmF0b3JMb2NhbCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvTExWTTo6
Y29tcGlsZU5ld0dlbmVyYXRvckZyYW1lKToKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAg
ICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKToKKyAgICAgICAgKiBqaXQvSklU
Lmg6CisgICAgICAgICogaml0L0pJVE9wY29kZXMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRfb3BfcmVzdW1lX2Zyb21fZ2VuZXJhdG9yX2ZyYW1lKToKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0X29wX2NsZWFyX2dlbmVyYXRvcl9mcmFtZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9v
cF9uZXdfZ2VuZXJhdG9yX2ZyYW1lKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX25vcCk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9yZXN1bWUpOiBEZWxldGVkLgorICAgICAgICAq
IGxsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHA6CisgICAgICAgICogbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlci5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0
LmFzbToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6UGFyc2Vy
PExleGVyVHlwZT46OnBhcnNlSW5uZXIpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBl
Pjo6cGFyc2VHZW5lcmF0b3JGdW5jdGlvblNvdXJjZUVsZW1lbnRzKToKKyAgICAgICAgKEpTQzo6
UGFyc2VyPExleGVyVHlwZT46OmNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMpOgorICAgICAgICAq
IHBhcnNlci9QYXJzZXIuaDoKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHA6
CisgICAgICAgIChKU0M6OlNMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1v
blNsb3dQYXRocy5oOgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJhdG9yRnJhbWUuY3BwOgorICAg
ICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6R2VuZXJhdG9yRnJhbWUpOgorICAgICAgICAoSlND
OjpHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6R2VuZXJh
dG9yRnJhbWU6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpzYXZlKToK
KyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OnJlc3VtZSk6CisgICAgICAgIChKU0M6Okdl
bmVyYXRvckZyYW1lOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJh
bWU6OmZpbmlzaENyZWF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0dlbmVyYXRv
ckZyYW1lLmg6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpsb2NhbE9mZnNldCk6Cisg
ICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpudW1iZXJPZkNhbGxlZUxvY2Fsc09mZnNldCk6
CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpudW1iZXJPZlNhdmVkQ2FsbGVlTG9jYWxz
T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OmxvY2FsQXQpOiBEZWxldGVk
LgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpK
U0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5o
OgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6Z2VuZXJhdG9yRnJhbWVTdHJ1Y3R1cmUp
OgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6Vk0pOiBEZWxl
dGVkLgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKwogMjAxNi0wMS0xMyAgQ2FybG9zIEdhcmNp
YSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0NNYWtlXSBEbyBub3Qg
dXNlIExMVk0gc3RhdGljIGxpYnJhcmllcyBmb3IgRlRMIEpJVApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0dlbmVyYXRvclByb3RvdHlwZS5qcyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9idWlsdGlucy9HZW5lcmF0b3JQcm90b3R5cGUuanMKaW5kZXggYTNiYmMz
NTM0YWUwNTJmNGQ2ZmEyNWJkZTcwM2M5M2QzYTc5NWUxMS4uNDlkZGJmOWM4NDY5MzMwNjU4NzEx
ZjE4ZTcyMTQ5YmM5ODIyZGEzNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1
aWx0aW5zL0dlbmVyYXRvclByb3RvdHlwZS5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YnVpbHRpbnMvR2VuZXJhdG9yUHJvdG90eXBlLmpzCkBAIC01OCw3ICs1OCw3IEBAIGZ1bmN0aW9u
IGdlbmVyYXRvclJlc3VtZShnZW5lcmF0b3IsIHNlbnRWYWx1ZSwgcmVzdW1lTW9kZSkKICAgICB9
IGVsc2UgewogICAgICAgICB0cnkgewogICAgICAgICAgICAgZ2VuZXJhdG9yLkBnZW5lcmF0b3JT
dGF0ZSA9IEV4ZWN1dGluZzsKLSAgICAgICAgICAgIHZhbHVlID0gZ2VuZXJhdG9yLkBnZW5lcmF0
b3JOZXh0LkBjYWxsKGdlbmVyYXRvci5AZ2VuZXJhdG9yVGhpcywgZ2VuZXJhdG9yLCBzdGF0ZSwg
c2VudFZhbHVlLCByZXN1bWVNb2RlKTsKKyAgICAgICAgICAgIHZhbHVlID0gZ2VuZXJhdG9yLkBn
ZW5lcmF0b3JOZXh0LkBjYWxsKGdlbmVyYXRvci5AZ2VuZXJhdG9yVGhpcywgZ2VuZXJhdG9yLCBz
dGF0ZSwgc2VudFZhbHVlLCByZXN1bWVNb2RlLCBnZW5lcmF0b3IuQGdlbmVyYXRvckZyYW1lKTsK
ICAgICAgICAgICAgIGlmIChnZW5lcmF0b3IuQGdlbmVyYXRvclN0YXRlID09PSBFeGVjdXRpbmcp
IHsKICAgICAgICAgICAgICAgICBnZW5lcmF0b3IuQGdlbmVyYXRvclN0YXRlID0gQ29tcGxldGVk
OwogICAgICAgICAgICAgICAgIGRvbmUgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcAppbmRleCA3ZjE3YzBlZjEw
YjQzM2ZhYzhmNThjYjNiOWNhNWQ0ZDAxNWJiYTA4Li41YWExOGU0Y2FmN2E1NzVkZDY0NWQ2ZjZl
ZDc5NzI4YWY3M2JkMjZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcApAQCAtNTgsNyArNTgsNyBAQCBzdGF0aWMgYm9v
bCBpc0JyYW5jaChPcGNvZGVJRCBvcGNvZGVJRCkKICAgICBjYXNlIG9wX3N3aXRjaF9pbW06CiAg
ICAgY2FzZSBvcF9zd2l0Y2hfY2hhcjoKICAgICBjYXNlIG9wX3N3aXRjaF9zdHJpbmc6Ci0gICAg
Y2FzZSBvcF9zYXZlOgorICAgIGNhc2Ugb3Bfc2F2ZV9oaW50OgogICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24gYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24KaW5kZXggMDUzYjhkYzliODY0
ZjFiODZiNGNlYzdhYTYwMWY3Y2UyZjAzZjJlNC4uMDhhYWMxMjI1OWM2OGRhMGUxYWJjOTA5MGJl
NTRjOTU1ZmIzMzAwNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlTGlzdC5qc29uCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZUxpc3QuanNvbgpAQCAtMTYsNiArMTYsNyBAQAogICAgICAgICAgICAgeyAibmFtZSIg
OiAib3BfbmV3X2FycmF5X3dpdGhfc2l6ZSIsICJsZW5ndGgiIDogNCB9LAogICAgICAgICAgICAg
eyAibmFtZSIgOiAib3BfbmV3X2FycmF5X2J1ZmZlciIsICJsZW5ndGgiIDogNSB9LAogICAgICAg
ICAgICAgeyAibmFtZSIgOiAib3BfbmV3X3JlZ2V4cCIsICJsZW5ndGgiIDogMyB9LAorICAgICAg
ICAgICAgeyAibmFtZSIgOiAib3BfbmV3X2dlbmVyYXRvcl9mcmFtZSIsICJsZW5ndGgiIDogMyB9
LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfbW92IiwgImxlbmd0aCIgOiAzIH0sCiAgICAg
ICAgICAgICB7ICJuYW1lIiA6ICJvcF9ub3QiLCAibGVuZ3RoIiA6IDMgfSwKICAgICAgICAgICAg
IHsgIm5hbWUiIDogIm9wX2VxIiwgImxlbmd0aCIgOiA0IH0sCkBAIC0xMzQsNyArMTM1LDExIEBA
CiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9jb3B5X3Jlc3QiLCAibGVuZ3RoIjogNCB9LAog
ICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfZ2V0X3Jlc3RfbGVuZ3RoIiwgImxlbmd0aCI6IDMg
fSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX3NhdmUiLCAibGVuZ3RoIiA6IDQgfSwKLSAg
ICAgICAgICAgIHsgIm5hbWUiIDogIm9wX3Jlc3VtZSIsICJsZW5ndGgiIDogMyB9LAorICAgICAg
ICAgICAgeyAibmFtZSIgOiAib3Bfc2F2ZV9oaW50IiwgImxlbmd0aCIgOiA0IH0sCisgICAgICAg
ICAgICB7ICJuYW1lIiA6ICJvcF9yZXN1bWVfaGludCIsICJsZW5ndGgiIDogNCB9LAorICAgICAg
ICAgICAgeyAibmFtZSIgOiAib3BfcmVzdW1lX2Zyb21fZ2VuZXJhdG9yX2ZyYW1lIiwgImxlbmd0
aCIgOiA0IH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9jbGVhcl9nZW5lcmF0b3JfZnJh
bWUiLCAibGVuZ3RoIiA6IDIgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX25vcCIsICJs
ZW5ndGgiIDogMSB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3Bfd2F0Y2hkb2ciLCAibGVu
Z3RoIiA6IDEgfQogICAgICAgICBdCiAgICAgfSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKaW5kZXggODAxMTE0YzM3MmEyNzdmNmUxNzcwOWI5
MGJlMjA3YzhmOTliZTgyZC4uZGFlZjgxYzI2OWJiNTQxNTRlYTZiNmRjODM4YWZjNjljZWU3MmM5
NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNl
RGVmLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVm
LmgKQEAgLTU1LDYgKzU1LDggQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAog
ICAgIGNhc2Ugb3BfY3JlYXRlX291dF9vZl9iYW5kX2FyZ3VtZW50czoKICAgICBjYXNlIG9wX2dl
dF9yZXN0X2xlbmd0aDoKICAgICBjYXNlIG9wX3dhdGNoZG9nOgorICAgIGNhc2Ugb3BfbmV3X2dl
bmVyYXRvcl9mcmFtZToKKyAgICBjYXNlIG9wX25vcDoKICAgICAgICAgcmV0dXJuOwogICAgIGNh
c2Ugb3BfYXNzZXJ0OgogICAgIGNhc2Ugb3BfZ2V0X3Njb3BlOgpAQCAtNzIsNyArNzQsOCBAQCB2
b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoCiAgICAgY2FzZSBvcF9qbmVxX251bGw6
CiAgICAgY2FzZSBvcF9kZWM6CiAgICAgY2FzZSBvcF9pbmM6Ci0gICAgY2FzZSBvcF9yZXN1bWU6
IHsKKyAgICBjYXNlIG9wX3Jlc3VtZV9oaW50OgorICAgIGNhc2Ugb3BfY2xlYXJfZ2VuZXJhdG9y
X2ZyYW1lOiB7CiAgICAgICAgIEFTU0VSVChvcGNvZGVMZW5ndGhzW29wY29kZUlEXSA+PSAxKTsK
ICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgaW5zdHJ1
Y3Rpb25bMV0udS5vcGVyYW5kKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTY1LDcgKzE2OCw4IEBA
IHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCgKICAgICBjYXNlIG9wX25ld19nZW5l
cmF0b3JfZnVuYzoKICAgICBjYXNlIG9wX2dldF9wYXJlbnRfc2NvcGU6CiAgICAgY2FzZSBvcF9j
cmVhdGVfc2NvcGVkX2FyZ3VtZW50czoKLSAgICBjYXNlIG9wX2dldF9mcm9tX2FyZ3VtZW50czog
eworICAgIGNhc2Ugb3BfZ2V0X2Zyb21fYXJndW1lbnRzOgorICAgIGNhc2Ugb3BfcmVzdW1lX2Zy
b21fZ2VuZXJhdG9yX2ZyYW1lOiB7CiAgICAgICAgIEFTU0VSVChvcGNvZGVMZW5ndGhzW29wY29k
ZUlEXSA+PSAyKTsKICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNv
ZGVJRCwgaW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjUw
LDcgKzI1NCw3IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCgKICAgICAgICAg
ICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGxhc3RBcmcgKyBp
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBjYXNlIG9wX3NhdmU6IHsKKyAgICBjYXNl
IG9wX3NhdmVfaGludDogewogICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24s
IG9wY29kZUlELCBpbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOwogICAgICAgICB1bnNpZ25lZCBt
ZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXQgPSBieXRlY29kZU9mZnNldCArIGluc3RydWN0aW9uWzNd
LnUub3BlcmFuZDsKICAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBtZXJnZVBvaW50QmxvY2sg
PSBudWxscHRyOwpAQCAtMjY2LDYgKzI3MCwxNSBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNv
ZGVPZmZzZXQoCiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQorICAgIGNhc2Ug
b3Bfc2F2ZTogeworICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29k
ZUlELCBpbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOworICAgICAgICB1bnNpZ25lZCBsaXZlQ2Fs
bGVlTG9jYWxzSW5kZXggPSBpbnN0cnVjdGlvblsyXS51LnVuc2lnbmVkVmFsdWU7CisgICAgICAg
IGNvbnN0IEZhc3RCaXRWZWN0b3ImIGxpdmVuZXNzID0gY29kZUJsb2NrLT5saXZlQ2FsbGVlTG9j
YWxzQXRZaWVsZChsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpOworICAgICAgICBsaXZlbmVzcy5mb3JF
YWNoU2V0Qml0KFsmXSh1bnNpZ25lZCBsb2NhbCkgeworICAgICAgICAgICAgZnVuY3Rvcihjb2Rl
QmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwobG9j
YWwpLm9mZnNldCgpKTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAgICAg
ZGVmYXVsdDoKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAg
YnJlYWs7CkBAIC0yODksNiArMzAyLDcgQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zm
c2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2MKICAgICBj
YXNlIG9wX3Rocm93OgogICAgIGNhc2Ugb3BfdGhyb3dfc3RhdGljX2Vycm9yOgogICAgIGNhc2Ug
b3Bfc2F2ZToKKyAgICBjYXNlIG9wX3NhdmVfaGludDoKICAgICBjYXNlIG9wX2Fzc2VydDoKICAg
ICBjYXNlIG9wX2RlYnVnOgogICAgIGNhc2Ugb3BfcmV0OgpAQCAtMzIzLDYgKzMzNyw4IEBAIHZv
aWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0
ZWNvZGVCYXNpY0Jsb2NrKiBibG9jCiAgICAgY2FzZSBvcF9wcm9maWxlX2NvbnRyb2xfZmxvdzoK
ICAgICBjYXNlIG9wX3B1dF90b19hcmd1bWVudHM6CiAgICAgY2FzZSBvcF93YXRjaGRvZzoKKyAg
ICBjYXNlIG9wX2NsZWFyX2dlbmVyYXRvcl9mcmFtZToKKyAgICBjYXNlIG9wX25vcDoKICNkZWZp
bmUgTExJTlRfSEVMUEVSX09QQ09ERVMob3Bjb2RlLCBsZW5ndGgpIGNhc2Ugb3Bjb2RlOgogICAg
ICAgICBGT1JfRUFDSF9MTElOVF9PUENPREVfRVhURU5TSU9OKExMSU5UX0hFTFBFUl9PUENPREVT
KTsKICN1bmRlZiBMTElOVF9IRUxQRVJfT1BDT0RFUwpAQCAtNDE1LDcgKzQzMSw5IEBAIHZvaWQg
Y29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNv
ZGVCYXNpY0Jsb2NrKiBibG9jCiAgICAgY2FzZSBvcF9kZWxfYnlfdmFsOgogICAgIGNhc2Ugb3Bf
dW5zaWduZWQ6CiAgICAgY2FzZSBvcF9nZXRfZnJvbV9hcmd1bWVudHM6IAotICAgIGNhc2Ugb3Bf
Z2V0X3Jlc3RfbGVuZ3RoOiB7CisgICAgY2FzZSBvcF9nZXRfcmVzdF9sZW5ndGg6CisgICAgY2Fz
ZSBvcF9uZXdfZ2VuZXJhdG9yX2ZyYW1lOgorICAgIGNhc2Ugb3BfcmVzdW1lX2Zyb21fZ2VuZXJh
dG9yX2ZyYW1lOiB7CiAgICAgICAgIEFTU0VSVChvcGNvZGVMZW5ndGhzW29wY29kZUlEXSA+IDEp
OwogICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBpbnN0
cnVjdGlvblsxXS51Lm9wZXJhbmQpOwogICAgICAgICByZXR1cm47CkBAIC00MzEsNyArNDQ5LDcg
QEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2Nr
LCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2MKICAgICAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2Nr
LCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGkpLm9mZnNl
dCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBjYXNlIG9wX3Jlc3VtZTogeworICAg
IGNhc2Ugb3BfcmVzdW1lX2hpbnQ6IHsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoYmxvY2stPnN1
Y2Nlc3NvcnMoKS5zaXplKCkgPT0gMSk7CiAgICAgICAgIGJsb2NrLT5zdWNjZXNzb3JzKClbMF0t
PmluKCkuZm9yRWFjaFNldEJpdChbJl0odW5zaWduZWQgbG9jYWwpIHsKICAgICAgICAgICAgIGZ1
bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIHZpcnR1YWxSZWdpc3RlckZv
ckxvY2FsKGxvY2FsKS5vZmZzZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2suY3BwCmluZGV4IDU5MDVlOTE4M2M4ZjEyNjY0ZTJiYTNkZDI5YTVjNDY1Njc2
OGRjMDMuLjkyZDRhOWZkY2RmNTVlZjcxYjFlZmIwOTU3YzY5MmI1NzYxOTEyYzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC0xNTU2LDI3ICsx
NTU2LDYzIEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoCiAgICAgICAgICAgICBvdXQu
cHJpbnRmKCIlcywgJWQiLCBkZWJ1Z0hvb2tOYW1lKGRlYnVnSG9va0lEKSwgaGFzQnJlYWtwb2lu
dEZsYWcpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgY2FzZSBvcF9z
YXZlOiB7Ci0gICAgICAgICAgICBpbnQgZ2VuZXJhdG9yID0gKCsraXQpLT51Lm9wZXJhbmQ7Cisg
ICAgICAgIGNhc2Ugb3Bfc2F2ZV9oaW50OiB7CisgICAgICAgICAgICBpbnQgZnJhbWUgPSAoKytp
dCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRl
eCA9ICgrK2l0KS0+dS51bnNpZ25lZFZhbHVlOwogICAgICAgICAgICAgaW50IG9mZnNldCA9ICgr
K2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZW5l
c3MgPSBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkW2xpdmVDYWxsZWVMb2Nh
bHNJbmRleF07CiAgICAgICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2Nh
dGlvbiwgaXQsICJzYXZlIik7Ci0gICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgIiwgcmVnaXN0
ZXJOYW1lKGdlbmVyYXRvcikuZGF0YSgpKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAi
LCByZWdpc3Rlck5hbWUoZnJhbWUpLmRhdGEoKSk7CiAgICAgICAgICAgICBsaXZlbmVzcy5kdW1w
KG91dCk7CiAgICAgICAgICAgICBvdXQucHJpbnRmKCIoQGxpdmUlMXUpLCAlZCgtPiVkKSIsIGxp
dmVDYWxsZWVMb2NhbHNJbmRleCwgb2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNldCk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBjYXNlIG9wX3Jlc3VtZTogewotICAgICAg
ICAgICAgaW50IGdlbmVyYXRvciA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBjYXNlIG9w
X3NhdmU6IHsKKyAgICAgICAgICAgIGludCBmcmFtZSA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAg
ICAgICAgICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gKCsraXQpLT51LnVuc2ln
bmVkVmFsdWU7CisgICAgICAgICAgICArK2l0OyAvLyBkaXNjYXJkIG9mZnNldC4KICAgICAgICAg
ICAgIGNvbnN0IEZhc3RCaXRWZWN0b3ImIGxpdmVuZXNzID0gbV9yYXJlRGF0YS0+bV9saXZlQ2Fs
bGVlTG9jYWxzQXRZaWVsZFtsaXZlQ2FsbGVlTG9jYWxzSW5kZXhdOwotICAgICAgICAgICAgcHJp
bnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAicmVzdW1lIik7Ci0gICAg
ICAgICAgICBvdXQucHJpbnRmKCIlcywgIiwgcmVnaXN0ZXJOYW1lKGdlbmVyYXRvcikuZGF0YSgp
KTsKKyAgICAgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBp
dCwgInNhdmUiKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAiLCByZWdpc3Rlck5hbWUo
ZnJhbWUpLmRhdGEoKSk7CiAgICAgICAgICAgICBsaXZlbmVzcy5kdW1wKG91dCk7CiAgICAgICAg
ICAgICBvdXQucHJpbnRmKCIoQGxpdmUlMXUpIiwgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4KTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisgICAgICAgIGNhc2Ugb3BfcmVzdW1lX2hpbnQ6
IHsKKyAgICAgICAgICAgIGludCBmcmFtZSA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAg
ICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gKCsraXQpLT51LnVuc2lnbmVkVmFs
dWU7CisgICAgICAgICAgICB1bnNpZ25lZCBtYXhMaXZlQ2FsbGVlcyA9ICgrK2l0KS0+dS51bnNp
Z25lZFZhbHVlOworICAgICAgICAgICAgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZW5lc3MgPSBt
X3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkW2xpdmVDYWxsZWVMb2NhbHNJbmRl
eF07CisgICAgICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwg
aXQsICJyZXN1bWUiKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAiLCByZWdpc3Rlck5h
bWUoZnJhbWUpLmRhdGEoKSk7CisgICAgICAgICAgICBsaXZlbmVzcy5kdW1wKG91dCk7CisgICAg
ICAgICAgICBvdXQucHJpbnRmKCIoQGxpdmUlMXUpLCAldSIsIGxpdmVDYWxsZWVMb2NhbHNJbmRl
eCwgbWF4TGl2ZUNhbGxlZXMpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAg
ICAgY2FzZSBvcF9yZXN1bWVfZnJvbV9nZW5lcmF0b3JfZnJhbWU6IHsKKyAgICAgICAgICAgIGlu
dCBkc3QgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIGludCBmcmFtZSA9ICgrK2l0
KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgdW5zaWduZWQgaW5kZXggPSAoKytpdCktPnUudW5z
aWduZWRWYWx1ZTsKKyAgICAgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxv
Y2F0aW9uLCBpdCwgInJlc3VtZV9mcm9tX2dlbmVyYXRvcl9mcmFtZSIpOworICAgICAgICAgICAg
b3V0LnByaW50ZigiJXMsICVzLCAldSIsIHJlZ2lzdGVyTmFtZShkc3QpLmRhdGEoKSwgcmVnaXN0
ZXJOYW1lKGZyYW1lKS5kYXRhKCksIGluZGV4KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CisgICAgICAgIGNhc2Ugb3BfY2xlYXJfZ2VuZXJhdG9yX2ZyYW1lOiB7CisgICAgICAgICAg
ICBpbnQgZnJhbWUgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIHByaW50TG9jYXRp
b25PcEFuZFJlZ2lzdGVyT3BlcmFuZChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgImNsZWFyX2dl
bmVyYXRvcl9mcmFtZSIsIGZyYW1lKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9Cisg
ICAgICAgIGNhc2Ugb3BfbmV3X2dlbmVyYXRvcl9mcmFtZTogeworICAgICAgICAgICAgaW50IGRz
dCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgdW5zaWduZWQgZ2VuZXJhdG9yRnJh
bWVTaXplID0gKCsraXQpLT51LnVuc2lnbmVkVmFsdWU7CisgICAgICAgICAgICBwcmludExvY2F0
aW9uT3BBbmRSZWdpc3Rlck9wZXJhbmQob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJuZXdfZ2Vu
ZXJhdG9yX2ZyYW1lIiwgZHN0KTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIiAldSIsIGdlbmVy
YXRvckZyYW1lU2l6ZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBj
YXNlIG9wX25vcDogeworICAgICAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywg
bG9jYXRpb24sIGl0LCAibm9wIik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAg
ICAgICBjYXNlIG9wX2Fzc2VydDogewogICAgICAgICAgICAgaW50IGNvbmRpdGlvbiA9ICgrK2l0
KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IGxpbmUgPSAoKytpdCktPnUub3BlcmFuZDsK
QEAgLTE4NDcsNiArMTg4MywxMiBAQCB2b2lkIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0m
IHZtLCBDb3B5UGFyc2VkQmxvY2tUYWcsIENvZGVCbG9jayYgb3RoZXIpCiAgICAgc2V0TnVtUGFy
YW1ldGVycyh1bmxpbmtlZENvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKTsKIH0KIAorc3RydWN0
IEdlbmVyYXRvclBvaW50cyB7CisgICAgc2l6ZV90IHNhdmVQb2ludDsKKyAgICBzaXplX3QgbWVy
Z2VQb2ludDsKKyAgICBzaXplX3QgcmVzdW1lUG9pbnQ7Cit9OworCiB2b2lkIENvZGVCbG9jazo6
ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUs
IFVubGlua2VkQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jaywKICAgICBKU1Njb3BlKiBzY29w
ZSkKIHsKQEAgLTE5ODAsOSArMjAyMiwxMCBAQCB2b2lkIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRp
b24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGluawogICAg
IEhhc2hTZXQ8SlNNb2R1bGVFbnZpcm9ubWVudCo+IHN0cm9uZ2x5UmVmZXJlbmNlZE1vZHVsZUVu
dmlyb25tZW50czsKIAogICAgIC8vIEJvb2trZWVwIHRoZSBtZXJnZSBwb2ludCBieXRlY29kZSBv
ZmZzZXRzLgotICAgIFZlY3RvcjxzaXplX3Q+IG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldHM7Cisg
ICAgVmVjdG9yPEdlbmVyYXRvclBvaW50cz4gbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0czsKIAog
ICAgIFJlZkNvdW50ZWRBcnJheTxJbnN0cnVjdGlvbj4gaW5zdHJ1Y3Rpb25zKGluc3RydWN0aW9u
Q291bnQpOworICAgIHVuc2lnbmVkIG5ld0dlbmVyYXRvckZyYW1lSW5zdHJ1Y3Rpb25PZmZzZXQg
PSAwOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgIWluc3RydWN0aW9uUmVhZGVyLmF0RW5k
KCk7ICkgewogICAgICAgICBjb25zdCBVbmxpbmtlZEluc3RydWN0aW9uKiBwYyA9IGluc3RydWN0
aW9uUmVhZGVyLm5leHQoKTsKQEAgLTIyNzAsMTIgKzIzMTMsMjYgQEAgdm9pZCBDb2RlQmxvY2s6
OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxl
LCBVbmxpbmsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKLSAgICAgICAgY2FzZSBv
cF9zYXZlOiB7CisgICAgICAgIGNhc2Ugb3Bfc2F2ZV9oaW50OiB7CiAgICAgICAgICAgICB1bnNp
Z25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSBwY1syXS51LmluZGV4OwogICAgICAgICAgICAg
aW50IG9mZnNldCA9IHBjWzNdLnUub3BlcmFuZDsKICAgICAgICAgICAgIGlmIChsaXZlQ2FsbGVl
TG9jYWxzSW5kZXggPj0gbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0cy5zaXplKCkpCiAgICAgICAg
ICAgICAgICAgbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0cy5yZXNpemUobGl2ZUNhbGxlZUxvY2Fs
c0luZGV4ICsgMSk7Ci0gICAgICAgICAgICBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXRzW2xpdmVD
YWxsZWVMb2NhbHNJbmRleF0gPSBpICsgb2Zmc2V0OworICAgICAgICAgICAgbWVyZ2VQb2ludEJ5
dGVjb2RlT2Zmc2V0c1tsaXZlQ2FsbGVlTG9jYWxzSW5kZXhdLnNhdmVQb2ludCA9IGk7CisgICAg
ICAgICAgICBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXRzW2xpdmVDYWxsZWVMb2NhbHNJbmRleF0u
bWVyZ2VQb2ludCA9IGkgKyBvZmZzZXQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor
CisgICAgICAgIGNhc2Ugb3BfcmVzdW1lX2hpbnQ6IHsKKyAgICAgICAgICAgIHVuc2lnbmVkIGxp
dmVDYWxsZWVMb2NhbHNJbmRleCA9IHBjWzJdLnUuaW5kZXg7CisgICAgICAgICAgICBpZiAobGl2
ZUNhbGxlZUxvY2Fsc0luZGV4ID49IG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldHMuc2l6ZSgpKQor
ICAgICAgICAgICAgICAgIG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldHMucmVzaXplKGxpdmVDYWxs
ZWVMb2NhbHNJbmRleCArIDEpOworICAgICAgICAgICAgbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0
c1tsaXZlQ2FsbGVlTG9jYWxzSW5kZXhdLnJlc3VtZVBvaW50ID0gaTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBvcF9uZXdfZ2VuZXJhdG9yX2ZyYW1lOiB7
CisgICAgICAgICAgICBuZXdHZW5lcmF0b3JGcmFtZUluc3RydWN0aW9uT2Zmc2V0ID0gaTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKQEAgLTIyOTAsMTggKzIzNDcsNTcgQEAgdm9p
ZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3du
ZXJFeGVjdXRhYmxlLCBVbmxpbmsKIAogICAgIG1faW5zdHJ1Y3Rpb25zID0gV1RGTW92ZShpbnN0
cnVjdGlvbnMpOwogCi0gICAgLy8gUGVyZm9ybSBieXRlY29kZSBsaXZlbmVzcyBhbmFseXNpcyB0
byBkZXRlcm1pbmUgd2hpY2ggbG9jYWxzIGFyZSBsaXZlIGFuZCBzaG91bGQgYmUgcmVzdW1lZCB3
aGVuIGV4ZWN1dGluZyBvcF9yZXN1bWUuCisgICAgLy8gUGVyZm9ybSBieXRlY29kZSBsaXZlbmVz
cyBhbmFseXNpcyB0byBkZXRlcm1pbmUgd2hpY2ggbG9jYWxzIGFyZSBsaXZlIGFuZCBzaG91bGQg
YmUgcmVzdW1lZCB3aGVuIGV4ZWN1dGluZyBvcF9yZXN1bWVfaGludC4KICAgICBpZiAodW5saW5r
ZWRDb2RlQmxvY2stPnBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yQm9k
eU1vZGUpIHsKKyAgICAgICAgdW5zaWduZWQgbWF4R2VuZXJhdG9yRnJhbWVTaXplID0gMDsKICAg
ICAgICAgaWYgKHNpemVfdCBjb3VudCA9IG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldHMuc2l6ZSgp
KSB7CiAgICAgICAgICAgICBjcmVhdGVSYXJlRGF0YUlmTmVjZXNzYXJ5KCk7CiAgICAgICAgICAg
ICBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMgbGl2ZW5lc3ModGhpcyk7CiAgICAgICAgICAgICBt
X3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkLmdyb3coY291bnQpOworCiAgICAg
ICAgICAgICBzaXplX3QgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gMDsKLSAgICAgICAgICAgIGZv
ciAoc2l6ZV90IGJ5dGVjb2RlT2Zmc2V0IDogbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0cykgewot
ICAgICAgICAgICAgICAgIG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGRbbGl2
ZUNhbGxlZUxvY2Fsc0luZGV4XSA9IGxpdmVuZXNzLmdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVP
ZmZzZXQoYnl0ZWNvZGVPZmZzZXQpOworCisgICAgICAgICAgICAvLyBDYWxjdWxhdGUgbGl2ZW5l
c3MgYW5kIHN0b3JlIGRhdGEuCisgICAgICAgICAgICBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSAw
OworICAgICAgICAgICAgZm9yIChjb25zdCBHZW5lcmF0b3JQb2ludHMmIHBvaW50cyA6IG1lcmdl
UG9pbnRCeXRlY29kZU9mZnNldHMpIHsKKyAgICAgICAgICAgICAgICBzaXplX3QgbWVyZ2VQb2lu
dEJ5dGVjb2RlT2Zmc2V0ID0gcG9pbnRzLm1lcmdlUG9pbnQ7CisgICAgICAgICAgICAgICAgRmFz
dEJpdFZlY3RvciBsaXZlbmVzc1ZlY3RvciA9IGxpdmVuZXNzLmdldExpdmVuZXNzSW5mb0F0Qnl0
ZWNvZGVPZmZzZXQobWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0KTsKKyAgICAgICAgICAgICAgICBt
X3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkW2xpdmVDYWxsZWVMb2NhbHNJbmRl
eF0gPSBsaXZlbmVzc1ZlY3RvcjsKKyAgICAgICAgICAgICAgICBtYXhHZW5lcmF0b3JGcmFtZVNp
emUgPSBzdGQ6Om1heDx1bnNpZ25lZD4obWF4R2VuZXJhdG9yRnJhbWVTaXplLCBsaXZlbmVzc1Zl
Y3Rvci5iaXRDb3VudCgpKTsKKyAgICAgICAgICAgICAgICArK2xpdmVDYWxsZWVMb2NhbHNJbmRl
eDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gUmV3cml0ZSBieXRlY29kZXMgYmFz
ZWQgb24gY2FsY3VsYXRlZCBsaXZlbmVzcy4KKyAgICAgICAgICAgIGxpdmVDYWxsZWVMb2NhbHNJ
bmRleCA9IDA7CisgICAgICAgICAgICBmb3IgKGNvbnN0IEdlbmVyYXRvclBvaW50cyYgcG9pbnRz
IDogbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0cykgeworICAgICAgICAgICAgICAgIHNpemVfdCBz
YXZlUG9pbnRCeXRlY29kZU9mZnNldCA9IHBvaW50cy5zYXZlUG9pbnQ7CisgICAgICAgICAgICAg
ICAgc2l6ZV90IHJlc3VtZVBvaW50Qnl0ZWNvZGVPZmZzZXQgPSBwb2ludHMucmVzdW1lUG9pbnQ7
CisKKyAgICAgICAgICAgICAgICBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlbmVzc1ZlY3RvciA9
IG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGRbbGl2ZUNhbGxlZUxvY2Fsc0lu
ZGV4XTsKKworICAgICAgICAgICAgICAgIC8vIFBhdGNoIG9wX3Jlc3VtZV9oaW50IHdpdGggYWN0
dWFsIG9wcy4KKyAgICAgICAgICAgICAgICBpbnQgZ2VuZXJhdG9yRnJhbWVJbmRleCA9IG1faW5z
dHJ1Y3Rpb25zW3Jlc3VtZVBvaW50Qnl0ZWNvZGVPZmZzZXQgKyAxXS51Lm9wZXJhbmQ7CisgICAg
ICAgICAgICAgICAgaWYgKCFsaXZlbmVzc1ZlY3Rvci5iaXRDb3VudCgpKSB7CisgICAgICAgICAg
ICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgNDsgKytpKQorICAgICAgICAgICAgICAg
ICAgICAgICAgbV9pbnN0cnVjdGlvbnNbcmVzdW1lUG9pbnRCeXRlY29kZU9mZnNldCArIGldID0g
dm0uaW50ZXJwcmV0ZXItPmdldE9wY29kZShvcF9ub3ApOworICAgICAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpID0gMDsKKyAgICAgICAgICAgICAgICAg
ICAgbGl2ZW5lc3NWZWN0b3IuZm9yRWFjaFNldEJpdChbJl0odW5zaWduZWQgbG9jYWwpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbmRleCA9IGkrKzsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHNpemVfdCBvZmZzZXQgPSByZXN1bWVQb2ludEJ5dGVjb2RlT2Zmc2V0ICsgaW5k
ZXggKiA0OworICAgICAgICAgICAgICAgICAgICAgICAgbV9pbnN0cnVjdGlvbnNbb2Zmc2V0XSA9
IHZtLmludGVycHJldGVyLT5nZXRPcGNvZGUob3BfcmVzdW1lX2Zyb21fZ2VuZXJhdG9yX2ZyYW1l
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1faW5zdHJ1Y3Rpb25zW29mZnNldCArIDFdLnUu
b3BlcmFuZCA9IHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGxvY2FsKS5vZmZzZXQoKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIG1faW5zdHJ1Y3Rpb25zW29mZnNldCArIDJdLnUub3BlcmFuZCA9
IGdlbmVyYXRvckZyYW1lSW5kZXg7CisgICAgICAgICAgICAgICAgICAgICAgICBtX2luc3RydWN0
aW9uc1tvZmZzZXQgKyAzXS51LnVuc2lnbmVkVmFsdWUgPSBpbmRleDsKKyAgICAgICAgICAgICAg
ICAgICAgfSk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgbV9pbnN0cnVj
dGlvbnNbc2F2ZVBvaW50Qnl0ZWNvZGVPZmZzZXRdID0gdm0uaW50ZXJwcmV0ZXItPmdldE9wY29k
ZShvcF9zYXZlKTsKICAgICAgICAgICAgICAgICArK2xpdmVDYWxsZWVMb2NhbHNJbmRleDsKICAg
ICAgICAgICAgIH0KICAgICAgICAgfQorICAgICAgICAvLyBGaWxsIG9wX25ld19nZW5lcmF0b3Jf
ZnJhbWUncyBzaXplLgorICAgICAgICBtX2luc3RydWN0aW9uc1tuZXdHZW5lcmF0b3JGcmFtZUlu
c3RydWN0aW9uT2Zmc2V0ICsgMl0udS51bnNpZ25lZFZhbHVlID0gbWF4R2VuZXJhdG9yRnJhbWVT
aXplOwogICAgIH0KIAogICAgIC8vIFNldCBvcHRpbWl6YXRpb24gdGhyZXNob2xkcyBvbmx5IGFm
dGVyIG1faW5zdHJ1Y3Rpb25zIGlzIGluaXRpYWxpemVkLCBzaW5jZSB0aGVzZQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmNwcApp
bmRleCBlMmNiMDAwNDgzNzk0YmE5MmQ1MTBkY2Y1ZmE5OTQ4ODVhMjNkYzNkLi4yZjM1Y2ZiMzk5
NTcwNzU4OGMyYzU4YTQyOTM0NzQxMzQzYjdlNTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmNwcApAQCAtNTQsNyArNTQs
NyBAQCBzdGF0aWMgdm9pZCBnZXRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9j
ayogY29kZUJsb2NrLCBJbnRlcnByZXRlciogaQogICAgIGNhc2Ugb3Bfam5sZXNzZXE6CiAgICAg
Y2FzZSBvcF9qbmdyZWF0ZXI6CiAgICAgY2FzZSBvcF9qbmdyZWF0ZXJlcToKLSAgICBjYXNlIG9w
X3NhdmU6IC8vIFRoZSBqdW1wIG9mIG9wX3NhdmUgaXMgcHVyZWx5IGZvciBjYWxjdWxhdGluZyBs
aXZlbmVzcy4KKyAgICBjYXNlIG9wX3NhdmVfaGludDogLy8gVGhlIGp1bXAgb2Ygb3Bfc2F2ZV9o
aW50IGlzIHB1cmVseSBmb3IgY2FsY3VsYXRpbmcgbGl2ZW5lc3MuCiAgICAgICAgIG91dC5hcHBl
bmQoYnl0ZWNvZGVPZmZzZXQgKyBjdXJyZW50WzNdLnUub3BlcmFuZCk7CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2Ugb3Bfc3dpdGNoX2ltbToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXggZDE1ZTIyNDM1
MjY2ZmUxYWZmM2Q1Zjc5YTFkZGE3NWI5YmRhZjNmMy4uMzRiOGY2MTEwNzRlNWVhMzVlZDM3NGMx
Mjc4ODNmNTIxOWYxZjc3OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTI1Nyw3ICsyNTcsNyBAQCBQ
YXJzZXJFcnJvciBCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUoKQogICAgICAgICAvLyAgICBm
dW5jdGlvbiAqZ2VuKGEsIGIgPSBoZWxsbygpKQogICAgICAgICAvLyAgICB7CiAgICAgICAgIC8v
ICAgICAgICByZXR1cm4gewotICAgICAgICAvLyAgICAgICAgICAgIEBnZW5lcmF0b3JOZXh0OiBm
dW5jdGlvbiAoQGdlbmVyYXRvciwgQGdlbmVyYXRvclN0YXRlLCBAZ2VuZXJhdG9yVmFsdWUsIEBn
ZW5lcmF0b3JSZXN1bWVNb2RlKQorICAgICAgICAvLyAgICAgICAgICAgIEBnZW5lcmF0b3JOZXh0
OiBmdW5jdGlvbiAoQGdlbmVyYXRvciwgQGdlbmVyYXRvclN0YXRlLCBAZ2VuZXJhdG9yVmFsdWUs
IEBnZW5lcmF0b3JSZXN1bWVNb2RlLCBAZ2VuZXJhdG9yRnJhbWUpCiAgICAgICAgIC8vICAgICAg
ICAgICAgewogICAgICAgICAvLyAgICAgICAgICAgICAgICBhcmd1bWVudHM7ICAvLyBUaGlzIGBh
cmd1bWVudHNgIHNob3VsZCByZWZlcmVuY2UgdG8gdGhlIGdlbidzIGFyZ3VtZW50cy4KICAgICAg
ICAgLy8gICAgICAgICAgICAgICAgLi4uCkBAIC01MzcsNiArNTM3LDkgQEAgUGFyc2VyRXJyb3Ig
Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKCkKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6
R2VuZXJhdG9yQm9keU1vZGU6IHsKICAgICAgICAgLy8gfHRoaXN8IGlzIGFscmVhZHkgZmlsbGVk
IGNvcnJlY3RseSBiZWZvcmUgaGVyZS4KICAgICAgICAgZW1pdExvYWQobV9uZXdUYXJnZXRSZWdp
c3RlciwganNVbmRlZmluZWQoKSk7CisKKyAgICAgICAgZW1pdE5ld0dlbmVyYXRvckZyYW1lKGdl
bmVyYXRvckZyYW1lUmVnaXN0ZXIoKSk7CisgICAgICAgIGVtaXRQdXRCeUlkKGdlbmVyYXRvclJl
Z2lzdGVyKCksIHByb3BlcnR5TmFtZXMoKS5nZW5lcmF0b3JGcmFtZVByaXZhdGVOYW1lLCBnZW5l
cmF0b3JGcmFtZVJlZ2lzdGVyKCkpOwogICAgICAgICBicmVhazsKICAgICB9CiAKQEAgLTI3NDQs
NiArMjc0NywxNCBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0
aW9uKFJlZ2lzdGVySUQqIGRzdCwgRnVuY3Rpb25NZXRhZGF0YQogICAgIHJldHVybiBkc3Q7CiB9
CiAKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3R2VuZXJhdG9yRnJhbWUo
UmVnaXN0ZXJJRCogZHN0KQoreworICAgIGVtaXRPcGNvZGUob3BfbmV3X2dlbmVyYXRvcl9mcmFt
ZSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGRzdC0+aW5kZXgoKSk7CisgICAgaW5zdHJ1
Y3Rpb25zKCkuYXBwZW5kKDApOworICAgIHJldHVybiBkc3Q7Cit9CisKIFJlZ2lzdGVySUQqIEJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2FsbChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGZ1
bmMsIEV4cGVjdGVkRnVuY3Rpb24gZXhwZWN0ZWRGdW5jdGlvbiwgQ2FsbEFyZ3VtZW50cyYgY2Fs
bEFyZ3VtZW50cywgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3Np
dGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKQogewogICAg
IHJldHVybiBlbWl0Q2FsbChvcF9jYWxsLCBkc3QsIGZ1bmMsIGV4cGVjdGVkRnVuY3Rpb24sIGNh
bGxBcmd1bWVudHMsIGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCk7CkBAIC00MTQ0LDggKzQx
NTUsOCBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0WWllbGRQb2ludChSZWdpc3RlcklE
KiBhcmd1bWVudCkKIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRTYXZlKExhYmVsKiBtZXJn
ZVBvaW50LCB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpCiB7CiAgICAgc2l6ZV90IGJl
Z2luID0gaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpOwotICAgIGVtaXRPcGNvZGUob3Bfc2F2ZSk7Ci0g
ICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fZ2VuZXJhdG9yUmVnaXN0ZXItPmluZGV4KCkpOwor
ICAgIGVtaXRPcGNvZGUob3Bfc2F2ZV9oaW50KTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQo
Z2VuZXJhdG9yRnJhbWVSZWdpc3RlcigpLT5pbmRleCgpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5h
cHBlbmQobGl2ZUNhbGxlZUxvY2Fsc0luZGV4KTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQo
bWVyZ2VQb2ludC0+YmluZChiZWdpbiwgaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKSk7CiB9CkBAIC00
MTUzLDkgKzQxNjQsMzEgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFNhdmUoTGFiZWwq
IG1lcmdlUG9pbnQsIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmQKIHZvaWQgQnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXRSZXN1bWUoTGFiZWwqIG1lcmdlUG9pbnQsIHVuc2lnbmVkIGxpdmVDYWxs
ZWVMb2NhbHNJbmRleCkKIHsKICAgICBlbWl0R2VuZXJhdG9yU3RhdGVMYWJlbCgpOwotICAgIGVt
aXRPcGNvZGUob3BfcmVzdW1lKTsKLSAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobV9nZW5lcmF0
b3JSZWdpc3Rlci0+aW5kZXgoKSk7CisKKyAgICByZWNsYWltRnJlZVJlZ2lzdGVycygpOworICAg
IHVuc2lnbmVkIG1heExpdmVMb2NhbHMgPSAwOworICAgIGZvciAoY29uc3QgUmVnaXN0ZXJJRCYg
cmVnIDogbV9jYWxsZWVMb2NhbHMpIHsKKyAgICAgICAgaWYgKHJlZy5yZWZDb3VudCgpKQorICAg
ICAgICAgICAgKyttYXhMaXZlTG9jYWxzOworICAgIH0KKworICAgIC8vIFRoaXMgb3BfcmVzdW1l
X2hpbnQgd2lsbCBiZSByZXBsYWNlZCB3aXRoIHRoZSBhY3R1YWwgb3BzLgorICAgIGlmIChtYXhM
aXZlTG9jYWxzKQorICAgICAgICBtYXhMaXZlTG9jYWxzIC09IDE7CisKKyAgICBlbWl0T3Bjb2Rl
KG9wX3Jlc3VtZV9oaW50KTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZ2VuZXJhdG9yRnJh
bWVSZWdpc3RlcigpLT5pbmRleCgpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobGl2ZUNh
bGxlZUxvY2Fsc0luZGV4KTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobWF4TGl2ZUxvY2Fs
cyk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1heExpdmVMb2NhbHM7ICsraSkgewor
ICAgICAgICAvLyBOb3Agc3BhY2UuIExhdGVyIHdlIHdpbGwgZmlsbCB0aGlzIHdpdGggdGhlIGFj
dHVhbCByZXN1bWUgb3BlcmF0aW9ucy4KKyAgICAgICAgZW1pdE9wY29kZShvcF9ub3ApOworICAg
ICAgICBlbWl0T3Bjb2RlKG9wX25vcCk7CisgICAgICAgIGVtaXRPcGNvZGUob3Bfbm9wKTsKKyAg
ICAgICAgZW1pdE9wY29kZShvcF9ub3ApOworICAgIH0KKyAgICBlbWl0T3Bjb2RlKG9wX2NsZWFy
X2dlbmVyYXRvcl9mcmFtZSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGdlbmVyYXRvckZy
YW1lUmVnaXN0ZXIoKS0+aW5kZXgoKSk7CiAgICAgZW1pdExhYmVsKG1lcmdlUG9pbnQpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmgKaW5kZXggN2QwYzIwYjZmNTE2YTE3ZTg5M2YxYmJhMDgwM2MxMzMzZmZjOGQw
ZC4uM2QzMzQ3ODE1YWMzMGE4MmU2MjZlM2UwNzgwODFiZTJiM2U5YmUzZiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3Iu
aApAQCAtNTIyLDYgKzUyMiw3IEBACiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdEZWZhdWx0
Q29uc3RydWN0b3IoUmVnaXN0ZXJJRCogZHN0LCBDb25zdHJ1Y3RvcktpbmQsIGNvbnN0IElkZW50
aWZpZXImIG5hbWUpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0TmV3QXJyb3dGdW5jdGlvbkV4
cHJlc3Npb24oUmVnaXN0ZXJJRCosIEFycm93RnVuY0V4cHJOb2RlKik7CiAgICAgICAgIFJlZ2lz
dGVySUQqIGVtaXROZXdSZWdFeHAoUmVnaXN0ZXJJRCogZHN0LCBSZWdFeHAqKTsKKyAgICAgICAg
UmVnaXN0ZXJJRCogZW1pdE5ld0dlbmVyYXRvckZyYW1lKFJlZ2lzdGVySUQqIGRzdCk7CiAKICAg
ICAgICAgUmVnaXN0ZXJJRCogZW1pdE1vdmVMaW5rVGltZUNvbnN0YW50KFJlZ2lzdGVySUQqIGRz
dCwgTGlua1RpbWVDb25zdGFudCk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRNb3ZlRW1wdHlW
YWx1ZShSZWdpc3RlcklEKiBkc3QpOwpAQCAtNjg0LDYgKzY4NSw3IEBACiAgICAgICAgIFJlZ2lz
dGVySUQqIGdlbmVyYXRvclN0YXRlUmVnaXN0ZXIoKSB7IHJldHVybiAmbV9wYXJhbWV0ZXJzWzJd
OyB9CiAgICAgICAgIFJlZ2lzdGVySUQqIGdlbmVyYXRvclZhbHVlUmVnaXN0ZXIoKSB7IHJldHVy
biAmbV9wYXJhbWV0ZXJzWzNdOyB9CiAgICAgICAgIFJlZ2lzdGVySUQqIGdlbmVyYXRvclJlc3Vt
ZU1vZGVSZWdpc3RlcigpIHsgcmV0dXJuICZtX3BhcmFtZXRlcnNbNF07IH0KKyAgICAgICAgUmVn
aXN0ZXJJRCogZ2VuZXJhdG9yRnJhbWVSZWdpc3RlcigpIHsgcmV0dXJuICZtX3BhcmFtZXRlcnNb
NV07IH0KIAogICAgICAgICBDb2RlVHlwZSBjb2RlVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29k
ZVR5cGU7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0
cmFjdEhlYXAuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RIZWFwLmgK
aW5kZXggNGRlYzhmYTAzNzc2ZTAxZTZjZDM3NDYwNjU5Y2M1NjExNjIzOGM2NS4uZGU0Y2MwNWNl
NzgyYjIwMTFjMGI2NmJkNGU0ZjZhNWVhMmUwNDg2MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEhlYXAuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Fic3RyYWN0SGVhcC5oCkBAIC02OCw2ICs2OCw3IEBACiAgICAgbWFjcm8oU2Nv
cGVQcm9wZXJ0aWVzKSBcCiAgICAgbWFjcm8oVHlwZWRBcnJheVByb3BlcnRpZXMpIFwKICAgICBt
YWNybyhIZWFwT2JqZWN0Q291bnQpIC8qIFVzZWQgdG8gcmVmbGVjdCB0aGUgZmFjdCB0aGF0IHNv
bWUgYWxsb2NhdGlvbnMgcmV2ZWFsIG9iamVjdCBpZGVudGl0eSAqL1wKKyAgICBtYWNybyhHZW5l
cmF0b3JGcmFtZVN0YXRlKSBcCiAgICAgbWFjcm8oUmVnRXhwU3RhdGUpIFwKICAgICBtYWNybyhN
YXRoRG90UmFuZG9tU3RhdGUpIFwKICAgICBtYWNybyhJbnRlcm5hbFN0YXRlKSBcCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxp
bmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJ
bmxpbmVzLmgKaW5kZXggOWVlYzYzY2ViMDcxYmMxNDg2YTAxMmMyODUwMWRiNjI0MjZiZGU3Yi4u
ODI1MDgzNjhjOWE4ODA0MjMzMTBhMTM5NDE2ZGU3MTUzZTFjYzk0MCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGlu
ZXMuaApAQCAtMTY4Nyw2ICsxNjg3LDEwIEBACiAgICAgY2FzZSBOZXdSZWdleHA6CiAgICAgICAg
IGZvck5vZGUobm9kZSkuc2V0KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYyktPnJlZ0V4cFN0cnVjdHVyZSgpKTsKICAgICAgICAgYnJlYWs7CisK
KyAgICBjYXNlIE5ld0dlbmVyYXRvckZyYW1lOgorICAgICAgICBmb3JOb2RlKG5vZGUpLnNldCht
X2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5n
ZW5lcmF0b3JGcmFtZVN0cnVjdHVyZSgpKTsKKyAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAK
ICAgICBjYXNlIFRvVGhpczogewogICAgICAgICBBYnN0cmFjdFZhbHVlJiBzb3VyY2UgPSBmb3JO
b2RlKG5vZGUtPmNoaWxkMSgpKTsKQEAgLTI1MTAsNiArMjUxNCwxNSBAQAogICAgICAgICBmb3JO
b2RlKG5vZGUpLm1ha2VIZWFwVG9wKCk7CiAgICAgICAgIGJyZWFrOwogCisgICAgY2FzZSBTZXRH
ZW5lcmF0b3JMb2NhbDoKKyAgICBjYXNlIFB1dEdlbmVyYXRvckZyYW1lTG9jYWxzOgorICAgICAg
ICBicmVhazsKKworICAgIGNhc2UgR2V0R2VuZXJhdG9yTG9jYWw6IHsKKyAgICAgICAgZm9yTm9k
ZShub2RlKS5tYWtlSGVhcFRvcCgpOworICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBjYXNl
IEZvcmNlT1NSRXhpdDoKICAgICBjYXNlIENoZWNrQmFkQ2VsbDoKICAgICAgICAgbV9zdGF0ZS5z
ZXRJc1ZhbGlkKGZhbHNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQmFja3dhcmRzUHJvcGFnYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0JhY2t3YXJkc1Byb3BhZ2F0aW9uUGhhc2UuY3BwCmluZGV4IGJmNjUxODg2ZTNhZjk1
YTM0NjYwNGJlM2U1NmIwMGZmNDE3MDBiYjcuLmZjNWM2MGVhZTA1NjUzYmMyZWVhZDNlOWNiM2Zh
OTk2MTYwMTIzNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFj
a3dhcmRzUHJvcGFnYXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdCYWNrd2FyZHNQcm9wYWdhdGlvblBoYXNlLmNwcApAQCAtNDAzLDYgKzQwMywyMiBAQCBj
bGFzcyBCYWNrd2FyZHNQcm9wYWdhdGlvblBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CiAKKyAgICAgICAgY2FzZSBHZXRHZW5lcmF0b3JMb2NhbDog
eworICAgICAgICAgICAgR2VuZXJhdG9yTG9jYWxEYXRhKiBnZW5lcmF0b3JMb2NhbERhdGEgPSBu
b2RlLT5nZW5lcmF0b3JMb2NhbERhdGEoKTsKKyAgICAgICAgICAgIGZsYWdzICY9IH5Ob2RlQnl0
ZWNvZGVVc2VzQXNJbnQ7IC8vIFdlIGRvbid0IGNhcmUgYWJvdXQgY3Jvc3MtYmxvY2sgdXNlcy1h
cy1pbnQuCisgICAgICAgICAgICBtX2NoYW5nZWQgfD0gZ2VuZXJhdG9yTG9jYWxEYXRhLT5tZXJn
ZUZsYWdzKGZsYWdzKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAg
Y2FzZSBTZXRHZW5lcmF0b3JMb2NhbDogeworICAgICAgICAgICAgR2VuZXJhdG9yTG9jYWxEYXRh
KiBnZW5lcmF0b3JMb2NhbERhdGEgPSBub2RlLT5nZW5lcmF0b3JMb2NhbERhdGEoKTsKKyAgICAg
ICAgICAgIGZsYWdzID0gZ2VuZXJhdG9yTG9jYWxEYXRhLT5mbGFncygpOworICAgICAgICAgICAg
UkVMRUFTRV9BU1NFUlQoIShmbGFncyAmIH5Ob2RlQnl0ZWNvZGVCYWNrUHJvcE1hc2spKTsKKyAg
ICAgICAgICAgIGZsYWdzIHw9IE5vZGVCeXRlY29kZVVzZXNBc051bWJlcjsgLy8gQWNjb3VudCBm
b3IgdGhlIGZhY3QgdGhhdCBjb250cm9sIGZsb3cgbWF5IGNhdXNlIG92ZXJmbG93cyB0aGF0IG91
ciBtb2RlbGluZyBjYW4ndCBoYW5kbGUuCisgICAgICAgICAgICBub2RlLT5jaGlsZDIoKS0+bWVy
Z2VGbGFncyhmbGFncyk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCiAgICAgICAg
IGNhc2UgSWRlbnRpdHk6IAogICAgICAgICAgICAgLy8gVGhpcyB3b3VsZCBiZSB0cml2aWFsIHRv
IGhhbmRsZSBidXQgd2UganVzdCBhc3NlcnQgdGhhdCB3ZSBjYW5ub3Qgc2VlIHRoZXNlIHlldC4K
ICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCmluZGV4IDM2NDRhMmZkMTlh
MGQ5YjNkZGE3YjA2OGEwMDQ5MGE1ODI2MjA4NmQuLjYwMzU2MTIyZjU4OWVkMDMyZDlmY2MxYmZk
YWZhMjc4NzAxZDc1ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Qnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0
ZUNvZGVQYXJzZXIuY3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiREZHQXJyYXlNb2Rl
LmgiCiAjaW5jbHVkZSAiREZHQ2FwYWJpbGl0aWVzLmgiCiAjaW5jbHVkZSAiREZHQ2xvYmJlcnNF
eGl0U3RhdGUuaCIKKyNpbmNsdWRlICJERkdHZW5lcmF0b3JMb2NhbERhdGEuaCIKICNpbmNsdWRl
ICJERkdHcmFwaC5oIgogI2luY2x1ZGUgIkRGR0pJVENvZGUuaCIKICNpbmNsdWRlICJHZXRCeUlk
U3RhdHVzLmgiCkBAIC05NjMsNiArOTY0LDExIEBAIGNsYXNzIEJ5dGVDb2RlUGFyc2VyIHsKICAg
ICAgICAgZm9yIChBcmd1bWVudFBvc2l0aW9uKiBhcmd1bWVudCA6IG1faW5saW5lU3RhY2tUb3At
Pm1fYXJndW1lbnRQb3NpdGlvbnMpCiAgICAgICAgICAgICBhcmd1bWVudC0+bWVyZ2VTaG91bGRO
ZXZlclVuYm94KHRydWUpOwogICAgIH0KKworICAgIEdlbmVyYXRvckxvY2FsRGF0YSogbmV3R2Vu
ZXJhdG9yTG9jYWxEYXRhKCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX2dyYXBoLm1fZ2VuZXJh
dG9yTG9jYWxEYXRhLmFkZCgpOworICAgIH0KICAgICAKICAgICBWTSogbV92bTsKICAgICBDb2Rl
QmxvY2sqIG1fY29kZUJsb2NrOwpAQCAtMTA1MSw2ICsxMDU3LDkgQEAgY2xhc3MgQnl0ZUNvZGVQ
YXJzZXIgewogICAgICAgICBDYWxsTGlua0luZm9NYXAgbV9jYWxsTGlua0luZm9zOwogICAgICAg
ICBTdHViSW5mb01hcCBtX3N0dWJJbmZvczsKICAgICAgICAgQnlWYWxJbmZvTWFwIG1fYnlWYWxJ
bmZvczsKKworICAgICAgICAvLyBCYXNpYyBibG9ja3MgcGVyZm9ybWluZyB5aWVsZCdzIG9wX3Nh
dmUgb3BlcmF0aW9uLgorICAgICAgICBWZWN0b3I8T3BlcmFuZHM8R2VuZXJhdG9yTG9jYWxEYXRh
Kj4+IG1fZ2VuZXJhdG9yTG9jYWxzOwogICAgICAgICAKICAgICAgICAgLy8gRGlkIHdlIHNlZSBh
bnkgcmV0dXJucz8gV2UgbmVlZCB0byBoYW5kbGUgdGhlICh1bmNvbW1vbiBidXQgbmVjZXNzYXJ5
KQogICAgICAgICAvLyBjYXNlIHdoZXJlIGEgcHJvY2VkdXJlIHRoYXQgZG9lcyBub3QgcmV0dXJu
IHdhcyBpbmxpbmVkLgpAQCAtMzM0MSw2ICszMzUwLDExIEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6
OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9u
ZXdfcmVnZXhwKTsKICAgICAgICAgfQogCisgICAgICAgIGNhc2Ugb3BfbmV3X2dlbmVyYXRvcl9m
cmFtZTogeworICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rp
b25bMV0udS5vcGVyYW5kKSwgYWRkVG9HcmFwaChOZXdHZW5lcmF0b3JGcmFtZSwgT3BJbmZvKGN1
cnJlbnRJbnN0cnVjdGlvblsyXS51LnVuc2lnbmVkVmFsdWUpKSk7CisgICAgICAgICAgICBORVhU
X09QQ09ERShvcF9uZXdfZ2VuZXJhdG9yX2ZyYW1lKTsKKyAgICAgICAgfQorCiAgICAgICAgIGNh
c2Ugb3BfZ2V0X3Jlc3RfbGVuZ3RoOiB7CiAgICAgICAgICAgICBJbmxpbmVDYWxsRnJhbWUqIGlu
bGluZUNhbGxGcmFtZSA9IHRoaXMtPmlubGluZUNhbGxGcmFtZSgpOwogICAgICAgICAgICAgTm9k
ZSogbGVuZ3RoOwpAQCAtMzM2OCw2ICszMzgyLDUxIEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBh
cnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgICAgICAgICAgYXJyYXksIGFycmF5TGVu
Z3RoKTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2NvcHlfcmVzdCk7CiAgICAgICAgIH0K
KworICAgICAgICBjYXNlIG9wX3NhdmU6IHsKKyAgICAgICAgICAgIE5vZGUqIGZyYW1lID0gZ2V0
KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSk7CisgICAg
ICAgICAgICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSBjdXJyZW50SW5zdHJ1Y3Rp
b25bMl0udS51bnNpZ25lZFZhbHVlOworICAgICAgICAgICAgY29uc3QgRmFzdEJpdFZlY3RvciYg
bGl2ZW5lc3MgPSBtX2lubGluZVN0YWNrVG9wLT5tX2NvZGVCbG9jay0+bGl2ZUNhbGxlZUxvY2Fs
c0F0WWllbGQobGl2ZUNhbGxlZUxvY2Fsc0luZGV4KTsKKworICAgICAgICAgICAgUkVMRUFTRV9B
U1NFUlQobGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID09IG1faW5saW5lU3RhY2tUb3AtPm1fZ2VuZXJh
dG9yTG9jYWxzLnNpemUoKSk7CisgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2dlbmVy
YXRvckxvY2Fscy5hcHBlbmQoT3BlcmFuZHM8R2VuZXJhdG9yTG9jYWxEYXRhKj4obV9udW1Bcmd1
bWVudHMsIG1fbnVtTG9jYWxzKSk7CisgICAgICAgICAgICBPcGVyYW5kczxHZW5lcmF0b3JMb2Nh
bERhdGEqPiYgb3BlcmFuZHMgPSBtX2lubGluZVN0YWNrVG9wLT5tX2dlbmVyYXRvckxvY2Fscy5s
YXN0KCk7CisKKyAgICAgICAgICAgIGFkZFRvR3JhcGgoUHV0R2VuZXJhdG9yRnJhbWVMb2NhbHMs
IE9wSW5mbyhsaXZlbmVzcy5iaXRDb3VudCgpKSwgZnJhbWUpOworICAgICAgICAgICAgdW5zaWdu
ZWQgZ2VuZXJhdG9yRnJhbWVJbmRleCA9IDA7CisgICAgICAgICAgICBsaXZlbmVzcy5mb3JFYWNo
U2V0Qml0KFsmXShzaXplX3QgaW5kZXgpIHsKKyAgICAgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0
ZXIgb3BlcmFuZCA9IHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGluZGV4KTsKKyAgICAgICAgICAg
ICAgICBWaXJ0dWFsUmVnaXN0ZXIgcmVtYXBwZWRPcGVyYW5kID0gbV9pbmxpbmVTdGFja1RvcC0+
cmVtYXBPcGVyYW5kKG9wZXJhbmQpOworICAgICAgICAgICAgICAgIE5vZGUqIGxvY2FsID0gZ2V0
KG9wZXJhbmQpOworICAgICAgICAgICAgICAgIEdlbmVyYXRvckxvY2FsRGF0YSogZ2VuZXJhdG9y
TG9jYWxEYXRhID0gbmV3R2VuZXJhdG9yTG9jYWxEYXRhKCk7CisgICAgICAgICAgICAgICAgb3Bl
cmFuZHMubG9jYWwocmVtYXBwZWRPcGVyYW5kLnRvTG9jYWwoKSkgPSBnZW5lcmF0b3JMb2NhbERh
dGE7CisgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChTZXRHZW5lcmF0b3JMb2NhbCwgT3BJbmZv
KGdlbmVyYXRvckZyYW1lSW5kZXgrKyksIE9wSW5mbyhnZW5lcmF0b3JMb2NhbERhdGEpLCBmcmFt
ZSwgbG9jYWwpOworICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBORVhUX09QQ09ERShvcF9z
YXZlKTsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2Ugb3BfcmVzdW1lX2Zyb21fZ2VuZXJhdG9y
X2ZyYW1lOiB7CisgICAgICAgICAgICBOb2RlKiBmcmFtZSA9IGdldChWaXJ0dWFsUmVnaXN0ZXIo
Y3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCkpOworICAgICAgICAgICAgT3BlcmFuZHM8
R2VuZXJhdG9yTG9jYWxEYXRhKj4mIG9wZXJhbmRzID0gbV9pbmxpbmVTdGFja1RvcC0+bV9nZW5l
cmF0b3JMb2NhbHMubGFzdCgpOworICAgICAgICAgICAgdW5zaWduZWQgZ2VuZXJhdG9yRnJhbWVJ
bmRleCA9IGN1cnJlbnRJbnN0cnVjdGlvblszXS51LnVuc2lnbmVkVmFsdWU7CisgICAgICAgICAg
ICBWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5k
KTsKKyAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciByZW1hcHBlZE9wZXJhbmQgPSBtX2lubGlu
ZVN0YWNrVG9wLT5yZW1hcE9wZXJhbmQob3BlcmFuZCk7CisgICAgICAgICAgICBHZW5lcmF0b3JM
b2NhbERhdGEqIGdlbmVyYXRvckxvY2FsRGF0YSA9IG9wZXJhbmRzLmxvY2FsKHJlbWFwcGVkT3Bl
cmFuZC50b0xvY2FsKCkpOworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoZ2VuZXJhdG9yTG9j
YWxEYXRhKTsKKyAgICAgICAgICAgIHNldChvcGVyYW5kLCBhZGRUb0dyYXBoKEdldEdlbmVyYXRv
ckxvY2FsLCBPcEluZm8oZ2VuZXJhdG9yRnJhbWVJbmRleCksIE9wSW5mbyhnZW5lcmF0b3JMb2Nh
bERhdGEpLCBmcmFtZSkpOworICAgICAgICAgICAgTkVYVF9PUENPREUob3BfcmVzdW1lX2Zyb21f
Z2VuZXJhdG9yX2ZyYW1lKTsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2Ugb3BfY2xlYXJfZ2Vu
ZXJhdG9yX2ZyYW1lOiB7CisgICAgICAgICAgICBOb2RlKiBmcmFtZSA9IGdldChWaXJ0dWFsUmVn
aXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCkpOworICAgICAgICAgICAgYWRk
VG9HcmFwaChQdXRHZW5lcmF0b3JGcmFtZUxvY2FscywgT3BJbmZvKDApLCBmcmFtZSk7CisgICAg
ICAgICAgICBORVhUX09QQ09ERShvcF9jbGVhcl9nZW5lcmF0b3JfZnJhbWUpOworICAgICAgICB9
CisKKyAgICAgICAgY2FzZSBvcF9ub3A6IHsKKyAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX25v
cCk7CisgICAgICAgIH0KKwogICAgICAgICAgICAgCiAgICAgICAgIC8vID09PSBCaXR3aXNlIG9w
ZXJhdGlvbnMgPT09CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0
aWVzLmNwcAppbmRleCBkMTAwZDk3ZDVjNjBlMjVhMDYwZmZkYTQ1NjYzYjNiOTQxNDM1ZGM2Li5h
NTgyZjg3MjA3NmNmZjg5NDI4M2ViYTMxYTQ5OTc3NjMwZGM3ODkwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCkBAIC0xODEsNiArMTgxLDcgQEAg
Q2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbChPcGNvZGVJRCBvcGNvZGVJRCwgQ29kZUJs
b2NrKiBjb2RlQmxvY2ssIEluc3RydWMKICAgICBjYXNlIG9wX25ld19hcnJheToKICAgICBjYXNl
IG9wX25ld19hcnJheV93aXRoX3NpemU6CiAgICAgY2FzZSBvcF9uZXdfYXJyYXlfYnVmZmVyOgor
ICAgIGNhc2Ugb3BfbmV3X2dlbmVyYXRvcl9mcmFtZToKICAgICBjYXNlIG9wX3N0cmNhdDoKICAg
ICBjYXNlIG9wX3RvX3ByaW1pdGl2ZToKICAgICBjYXNlIG9wX3Rocm93OgpAQCAtMjI0LDYgKzIy
NSwxMCBAQCBDYXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVsKE9wY29kZUlEIG9wY29kZUlE
LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSW5zdHJ1YwogICAgIGNhc2Ugb3BfY2F0Y2g6CiAgICAg
Y2FzZSBvcF9jb3B5X3Jlc3Q6CiAgICAgY2FzZSBvcF9nZXRfcmVzdF9sZW5ndGg6CisgICAgY2Fz
ZSBvcF9zYXZlOgorICAgIGNhc2Ugb3BfcmVzdW1lX2Zyb21fZ2VuZXJhdG9yX2ZyYW1lOgorICAg
IGNhc2Ugb3BfY2xlYXJfZ2VuZXJhdG9yX2ZyYW1lOgorICAgIGNhc2Ugb3Bfbm9wOgogICAgICAg
ICByZXR1cm4gQ2FuQ29tcGlsZUFuZElubGluZTsKIAogICAgIGNhc2Ugb3BfcHV0X3RvX3Njb3Bl
OiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCmluZGV4IDM0M2E2
ZGU5YzI5MDliOTNlMDUyOGNmMDI3ODRhYWQ5NGQwMWI0ZDEuLmJjOWUwODY3OGFhZDg1ZWM1NWQx
ZThmNjdmNDQwZTZkZDdkODk3OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ2xvYmJlcml6ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xv
YmJlcml6ZS5oCkBAIC0xMDQ0LDYgKzEwNDQsNyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdy
YXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQog
CiAgICAgY2FzZSBOZXdPYmplY3Q6CiAgICAgY2FzZSBOZXdSZWdleHA6CisgICAgY2FzZSBOZXdH
ZW5lcmF0b3JGcmFtZToKICAgICBjYXNlIE5ld1N0cmluZ09iamVjdDoKICAgICBjYXNlIFBoYW50
b21OZXdPYmplY3Q6CiAgICAgY2FzZSBNYXRlcmlhbGl6ZU5ld09iamVjdDoKQEAgLTExMTEsNiAr
MTExMiwyMyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBjb25z
dCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgICAgICAgICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQorCisg
ICAgY2FzZSBTZXRHZW5lcmF0b3JMb2NhbDogeworICAgICAgICByZWFkKEdlbmVyYXRvckZyYW1l
U3RhdGUpOworICAgICAgICB3cml0ZShHZW5lcmF0b3JGcmFtZVN0YXRlKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIGNhc2UgR2V0R2VuZXJhdG9yTG9jYWw6IHsKKyAgICAgICAgcmVh
ZChHZW5lcmF0b3JGcmFtZVN0YXRlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGNh
c2UgUHV0R2VuZXJhdG9yRnJhbWVMb2NhbHM6IHsKKyAgICAgICAgcmVhZChHZW5lcmF0b3JGcmFt
ZVN0YXRlKTsKKyAgICAgICAgd3JpdGUoR2VuZXJhdG9yRnJhbWVTdGF0ZSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CiAgICAgICAgIAogICAgIGNhc2UgVGhyb3dSZWZlcmVuY2VFcnJvcjoKICAg
ICAgICAgd3JpdGUoU2lkZVN0YXRlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ2xvYmJlcnNFeGl0U3RhdGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDbG9iYmVyc0V4aXRTdGF0ZS5jcHAKaW5kZXggNGUwYzUwNzc4OWNkN2IzZmY0Nzc1MWY5
MjVlNzQ4M2U2MWUyZGY1Yi4uY2I5NDEzYmRmMDY3ZDE2MDlmYzFlODQ0ZmQ1OGYzZWFjZWI2ZmI1
MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyc0V4aXRT
dGF0ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyc0V4aXRT
dGF0ZS5jcHAKQEAgLTUzLDEwICs1MywxNiBAQCBib29sIGNsb2JiZXJzRXhpdFN0YXRlKEdyYXBo
JiBncmFwaCwgTm9kZSogbm9kZSkKICAgICAgICAgLy8gZXhpdCBzdGF0ZS4KICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCisgICAgY2FzZSBQdXRHZW5lcmF0b3JGcmFtZUxvY2FsczoKKyAgICBjYXNl
IFNldEdlbmVyYXRvckxvY2FsOgorICAgIGNhc2UgR2V0R2VuZXJhdG9yTG9jYWw6CisgICAgICAg
IHJldHVybiBmYWxzZTsKKwogICAgIGNhc2UgQXJyYXlpZnlUb1N0cnVjdHVyZToKICAgICBjYXNl
IEFycmF5aWZ5OgogICAgIGNhc2UgTmV3T2JqZWN0OgogICAgIGNhc2UgTmV3UmVnZXhwOgorICAg
IGNhc2UgTmV3R2VuZXJhdG9yRnJhbWU6CiAgICAgY2FzZSBOZXdTdHJpbmdPYmplY3Q6CiAgICAg
Y2FzZSBQaGFudG9tTmV3T2JqZWN0OgogICAgIGNhc2UgTWF0ZXJpYWxpemVOZXdPYmplY3Q6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKaW5kZXggNzAyZGE1YmYxZTdjMGYx
YzhmZTU1YzY0ODQ0NThmY2FkODFlMmFhNS4uZTQxOGQ3ODc2NmVhNjRmMzAxZGQwZDNhNGQ3NTBi
NGE4MjUwNmIxMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2Vz
R0MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcApAQCAt
MjI5LDYgKzIyOSw5IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAg
ICBjYXNlIEdldEZyb21Bcmd1bWVudHM6CiAgICAgY2FzZSBQdXRUb0FyZ3VtZW50czoKICAgICBj
YXNlIENvcHlSZXN0OgorICAgIGNhc2UgU2V0R2VuZXJhdG9yTG9jYWw6CisgICAgY2FzZSBHZXRH
ZW5lcmF0b3JMb2NhbDoKKyAgICBjYXNlIFB1dEdlbmVyYXRvckZyYW1lTG9jYWxzOgogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKICAgICBjYXNlIENyZWF0ZUFjdGl2YXRpb246CkBAIC0yNDYsNiAr
MjQ5LDcgQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2Ug
TmV3QXJyYXlXaXRoU2l6ZToKICAgICBjYXNlIE5ld0FycmF5QnVmZmVyOgogICAgIGNhc2UgTmV3
UmVnZXhwOgorICAgIGNhc2UgTmV3R2VuZXJhdG9yRnJhbWU6CiAgICAgY2FzZSBOZXdTdHJpbmdP
YmplY3Q6CiAgICAgY2FzZSBNYWtlUm9wZToKICAgICBjYXNlIE5ld0Fycm93RnVuY3Rpb246CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAppbmRleCBjOWQ1YWJm
YjQ5NDgxYjkwNTg5ZWM0ZmJhNTk1YTJjZThlNzBkZjY3Li44NzliZTlkZTIxMjA4NmQ5YWRmZGY2
MTI3NzJmN2YyM2Y2YjNhYjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0ZpeHVwUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4
dXBQaGFzZS5jcHAKQEAgLTE0MzAsNiArMTQzMCwyMSBAQCBjbGFzcyBGaXh1cFBoYXNlIDogcHVi
bGljIFBoYXNlIHsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKKyAgICAgICAgY2Fz
ZSBTZXRHZW5lcmF0b3JMb2NhbDogeworICAgICAgICAgICAgZml4RWRnZTxDZWxsVXNlPihub2Rl
LT5jaGlsZDEoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGNh
c2UgR2V0R2VuZXJhdG9yTG9jYWw6IHsKKyAgICAgICAgICAgIGZpeEVkZ2U8Q2VsbFVzZT4obm9k
ZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBj
YXNlIFB1dEdlbmVyYXRvckZyYW1lTG9jYWxzOiB7CisgICAgICAgICAgICBmaXhFZGdlPENlbGxV
c2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKICNp
ZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgICAgIC8vIEhhdmUgdGhlc2Ugbm8tb3AgY2FzZXMgaGVy
ZSB0byBlbnN1cmUgdGhhdCBub2JvZHkgZm9yZ2V0cyB0byBhZGQgaGFuZGxlcnMgZm9yIG5ldyBv
cGNvZGVzLgogICAgICAgICBjYXNlIFNldEFyZ3VtZW50OgpAQCAtMTQ2Miw2ICsxNDc3LDcgQEAg
Y2xhc3MgRml4dXBQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgIGNhc2UgTmV3T2JqZWN0
OgogICAgICAgICBjYXNlIE5ld0FycmF5QnVmZmVyOgogICAgICAgICBjYXNlIE5ld1JlZ2V4cDoK
KyAgICAgICAgY2FzZSBOZXdHZW5lcmF0b3JGcmFtZToKICAgICAgICAgY2FzZSBCcmVha3BvaW50
OgogICAgICAgICBjYXNlIFByb2ZpbGVXaWxsQ2FsbDoKICAgICAgICAgY2FzZSBQcm9maWxlRGlk
Q2FsbDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR2VuZXJhdG9y
TG9jYWxEYXRhLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dlbmVyYXRvckxvY2Fs
RGF0YS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjRhYTM2NWJiOGYzZDk4N2JlYTJkNTA1NDRkY2FlN2EzZjg1Y2Jl
ZWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dlbmVy
YXRvckxvY2FsRGF0YS5oCkBAIC0wLDAgKzEsNjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTYgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgREZHR2VuZXJhdG9yTG9jYWxE
YXRhX2gKKyNkZWZpbmUgREZHR2VuZXJhdG9yTG9jYWxEYXRhX2gKKworI2lmIEVOQUJMRShERkdf
SklUKQorCisjaW5jbHVkZSAiREZHQ29tbW9uLmgiCisjaW5jbHVkZSAiREZHTm9kZUZsYWdzLmgi
CisjaW5jbHVkZSAiREZHVmFyaWFibGVBY2Nlc3NEYXRhLmgiCisjaW5jbHVkZSAiU3BlY3VsYXRl
ZFR5cGUuaCIKKyNpbmNsdWRlICJWaXJ0dWFsUmVnaXN0ZXIuaCIKKworbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBERkcgeworCitzdHJ1Y3QgTm9kZTsKKworY2xhc3MgR2VuZXJhdG9yTG9jYWxE
YXRhIHsKK3B1YmxpYzoKKyAgICBib29sIHByZWRpY3QoU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlv
bikKKyAgICB7CisgICAgICAgIHJldHVybiBtZXJnZVNwZWN1bGF0aW9uKG1fcHJlZGljdGlvbiwg
cHJlZGljdGlvbik7CisgICAgfQorCisgICAgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbigpCisg
ICAgeworICAgICAgICByZXR1cm4gbV9wcmVkaWN0aW9uOworICAgIH0KKworICAgIE5vZGVGbGFn
cyBmbGFncygpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3M7IH0KKworICAgIGJvb2wgbWVyZ2VGbGFn
cyhOb2RlRmxhZ3MgbmV3RmxhZ3MpCisgICAgeworICAgICAgICByZXR1cm4gY2hlY2tBbmRTZXQo
bV9mbGFncywgbV9mbGFncyB8IG5ld0ZsYWdzKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgU3Bl
Y3VsYXRlZFR5cGUgbV9wcmVkaWN0aW9uIHsgU3BlY05vbmUgfTsKKyAgICBOb2RlRmxhZ3MgbV9m
bGFncyB7IDAgfTsKK307CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKKworI2VuZGlmIC8v
IEVOQUJMRShERkdfSklUKQorCisjZW5kaWYgLy8gREZHVmFyaWFibGVBY2Nlc3NEYXRhX2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAppbmRleCAwOWFhZTk1NWY2NmFhNzg5NGExNDg1
ZTEzOTM3ZjNiYTUzODg5ZDFjLi40M2ZkYmIxYTcxMzAzNDZjOWJkYWY0OWQ0ZTQxNmI3MjQxM2Yw
NjFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCkBAIC02MCw2ICs2MCw3IEBA
CiBjbGFzcyBEb21pbmF0b3JzOwogY2xhc3MgTmF0dXJhbExvb3BzOwogY2xhc3MgUHJlUG9zdE51
bWJlcmluZzsKK2NsYXNzIEdlbmVyYXRvckxvY2FsRGF0YTsKIAogI2RlZmluZSBERkdfTk9ERV9E
T19UT19DSElMRFJFTihncmFwaCwgbm9kZSwgdGhpbmdUb0RvKSBkbyB7ICAgICAgICAgICAgXAog
ICAgICAgICBOb2RlKiBfbm9kZSA9IChub2RlKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXApAQCAtODg3LDYgKzg4OCw3IEBAIGNsYXNzIEdyYXBoIDogcHVibGlj
IHZpcnR1YWwgU2Nhbm5hYmxlIHsKICAgICBCYWc8Q2FsbFZhcmFyZ3NEYXRhPiBtX2NhbGxWYXJh
cmdzRGF0YTsKICAgICBCYWc8TG9hZFZhcmFyZ3NEYXRhPiBtX2xvYWRWYXJhcmdzRGF0YTsKICAg
ICBCYWc8U3RhY2tBY2Nlc3NEYXRhPiBtX3N0YWNrQWNjZXNzRGF0YTsKKyAgICBCYWc8R2VuZXJh
dG9yTG9jYWxEYXRhPiBtX2dlbmVyYXRvckxvY2FsRGF0YTsKICAgICBWZWN0b3I8SW5saW5lVmFy
aWFibGVEYXRhLCA0PiBtX2lubGluZVZhcmlhYmxlRGF0YTsKICAgICBIYXNoTWFwPENvZGVCbG9j
ayosIHN0ZDo6dW5pcXVlX3B0cjxGdWxsQnl0ZWNvZGVMaXZlbmVzcz4+IG1fYnl0ZWNvZGVMaXZl
bmVzczsKICAgICBIYXNoTWFwPENvZGVCbG9jayosIHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUtp
bGxzPj4gbV9ieXRlY29kZUtpbGxzOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdNYXlFeGl0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhp
dC5jcHAKaW5kZXggZGFhMjkzMzlkYmZiZGY4MGFhZDliNjQ2YTJjYjdhMDU4N2Q5NjIzOC4uZmM1
N2I4MjMwM2M3OWJkMTNjZDVkMWNlMWJlMGFmYjcxMGNlNmM3NSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR01heUV4aXQuY3BwCkBAIC0xMzAsNiArMTMwLDkgQEAgRXhpdE1vZGUgbWF5
RXhpdChHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBTdG9yZUJhcnJpZXI6CiAg
ICAgY2FzZSBQdXRCeU9mZnNldDoKICAgICBjYXNlIFB1dENsb3N1cmVWYXI6CisgICAgY2FzZSBQ
dXRHZW5lcmF0b3JGcmFtZUxvY2FsczoKKyAgICBjYXNlIFNldEdlbmVyYXRvckxvY2FsOgorICAg
IGNhc2UgR2V0R2VuZXJhdG9yTG9jYWw6CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBTdHJD
YXQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCmluZGV4IDEyODcwZDkzZDBjNDgyZTRm
OGU1ZDRkMmRhZjFlNmJmMWY3MWI2MmMuLjYyNzQzYWVmNzg2NjNlZWQzZDQ1ODFhYTc5M2M2MWEy
ODE2OWYxMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCkBAIC0zNiw2ICszNiw3
IEBACiAjaW5jbHVkZSAiREZHQXJyYXlNb2RlLmgiCiAjaW5jbHVkZSAiREZHQ29tbW9uLmgiCiAj
aW5jbHVkZSAiREZHRXBvY2guaCIKKyNpbmNsdWRlICJERkdHZW5lcmF0b3JMb2NhbERhdGEuaCIK
ICNpbmNsdWRlICJERkdMYXp5SlNWYWx1ZS5oIgogI2luY2x1ZGUgIkRGR011bHRpR2V0QnlPZmZz
ZXREYXRhLmgiCiAjaW5jbHVkZSAiREZHTm9kZUZsYWdzLmgiCkBAIC04NzgsNiArODc5LDcyIEBA
IHN0cnVjdCBOb2RlIHsKICAgICAgICAgcmV0dXJuIG1fb3BJbmZvOwogICAgIH0KIAorICAgIGJv
b2wgaGFzR2VuZXJhdG9yRnJhbWVTaXplKCkKKyAgICB7CisgICAgICAgIHN3aXRjaCAob3AoKSkg
eworICAgICAgICBjYXNlIE5ld0dlbmVyYXRvckZyYW1lOgorICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICB1bnNpZ25lZCBnZW5lcmF0b3JGcmFtZVNpemUoKQorICAgIHsKKyAg
ICAgICAgQVNTRVJUKGhhc0dlbmVyYXRvckZyYW1lU2l6ZSgpKTsKKyAgICAgICAgcmV0dXJuIG1f
b3BJbmZvOworICAgIH0KKworICAgIGJvb2wgaGFzR2VuZXJhdG9yRnJhbWVJbmRleCgpCisgICAg
eworICAgICAgICBzd2l0Y2ggKG9wKCkpIHsKKyAgICAgICAgY2FzZSBTZXRHZW5lcmF0b3JMb2Nh
bDoKKyAgICAgICAgY2FzZSBHZXRHZW5lcmF0b3JMb2NhbDoKKyAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICB9CisgICAgfQorCisgICAgdW5zaWduZWQgZ2VuZXJhdG9yRnJhbWVJbmRleCgpCisgICAgewor
ICAgICAgICBBU1NFUlQoaGFzR2VuZXJhdG9yRnJhbWVJbmRleCgpKTsKKyAgICAgICAgcmV0dXJu
IG1fb3BJbmZvOworICAgIH0KKworICAgIGJvb2wgaGFzR2VuZXJhdG9yTG9jYWxEYXRhKCkKKyAg
ICB7CisgICAgICAgIHN3aXRjaCAob3AoKSkgeworICAgICAgICBjYXNlIFNldEdlbmVyYXRvckxv
Y2FsOgorICAgICAgICBjYXNlIEdldEdlbmVyYXRvckxvY2FsOgorICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICBHZW5lcmF0b3JMb2NhbERhdGEqIGdlbmVyYXRvckxvY2FsRGF0
YSgpCisgICAgeworICAgICAgICBBU1NFUlQoaGFzR2VuZXJhdG9yTG9jYWxEYXRhKCkpOworICAg
ICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxHZW5lcmF0b3JMb2NhbERhdGEqPihtX29wSW5m
bzIpOworICAgIH0KKworICAgIGJvb2wgaGFzR2VuZXJhdG9yRnJhbWVMb2NhbHMoKQorICAgIHsK
KyAgICAgICAgc3dpdGNoIChvcCgpKSB7CisgICAgICAgIGNhc2UgUHV0R2VuZXJhdG9yRnJhbWVM
b2NhbHM6CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHVuc2lnbmVkIGdl
bmVyYXRvckZyYW1lTG9jYWxzKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChoYXNHZW5lcmF0b3JG
cmFtZUxvY2FscygpKTsKKyAgICAgICAgcmV0dXJuIG1fb3BJbmZvOworICAgIH0KKwogICAgIGJv
b2wgaGFzQWNjZXNzb3JBdHRyaWJ1dGVzKCkKICAgICB7CiAgICAgICAgIHN3aXRjaCAob3AoKSkg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCmluZGV4IGRkZDBiOTdjYjJm
ZTY5MjYwNDUxMDNmOGE3MTA3MDA0ODJlOWY2YmQuLmM5YThkNzJmODI3ZWJlYzgxYWRlZWJmMmQ2
ZDg5N2FjOWU4MGQ1M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Tm9kZVR5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgK
QEAgLTc5LDYgKzc5LDEwIEBACiAgICAgbWFjcm8oRmx1c2gsIE5vZGVNdXN0R2VuZXJhdGUpIFwK
ICAgICBtYWNybyhQaGFudG9tTG9jYWwsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBcCisgICAg
bWFjcm8oU2V0R2VuZXJhdG9yTG9jYWwsIE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBtYWNybyhH
ZXRHZW5lcmF0b3JMb2NhbCwgTm9kZVJlc3VsdEpTKSBcCisgICAgbWFjcm8oUHV0R2VuZXJhdG9y
RnJhbWVMb2NhbHMsIE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBcCiAgICAgLyogSGludCB0aGF0
IHRoaXMgaXMgd2hlcmUgYnl0ZWNvZGUgdGhpbmtzIGlzIGEgZ29vZCBwbGFjZSB0byBPU1IuIE5v
dGUgdGhhdCB0aGlzICovXAogICAgIC8qIHdpbGwgZXhpc3QgZXZlbiBpbiBpbmxpbmVkIGxvb3Bz
LiBUaGlzIGhhcyBubyBleGVjdXRpb24gc2VtYW50aWNzIGJ1dCBpdCBtdXN0ICovXAogICAgIC8q
IHN1cnZpdmUgYWxsIERDRS4gV2UgdHJlYXQgdGhpcyBhcyBiZWluZyBhIGNhbi1leGl0IGJlY2F1
c2UgdGllci11cCB0byBGVEwgbWF5ICovXApAQCAtMjYzLDYgKzI2Nyw3IEBACiAgICAgbWFjcm8o
TmV3QXJyYXlCdWZmZXIsIE5vZGVSZXN1bHRKUykgXAogICAgIG1hY3JvKE5ld1R5cGVkQXJyYXks
IE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhOZXdSZWdleHAs
IE5vZGVSZXN1bHRKUykgXAorICAgIG1hY3JvKE5ld0dlbmVyYXRvckZyYW1lLCBOb2RlUmVzdWx0
SlMpIFwKICAgICAvKiBSZXN0IFBhcmFtZXRlciAqL1wKICAgICBtYWNybyhHZXRSZXN0TGVuZ3Ro
LCBOb2RlUmVzdWx0SW50MzIpIFwKICAgICBtYWNybyhDb3B5UmVzdCwgTm9kZU11c3RHZW5lcmF0
ZSkgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25z
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKaW5kZXgg
MmZkNWRiZGM3ZmM0Y2NhODZmYWUxMDkyMjdhYzE3NTdmZGNkZjk2Yy4uYmMzNTY2MTNkM2Y1MjE4
MDgyMzhlNTI2ODEzNWFhYjA5YmU2N2YwZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09wZXJhdGlvbnMuY3BwCkBAIC00MSw4ICs0MSw5IEBACiAjaW5jbHVkZSAiRGlyZWN0QXJn
dW1lbnRzLmgiCiAjaW5jbHVkZSAiRlRMRm9yT1NSRW50cnlKSVRDb2RlLmgiCiAjaW5jbHVkZSAi
RlRMT1NSRW50cnkuaCIKLSNpbmNsdWRlICJIb3N0Q2FsbFJldHVyblZhbHVlLmgiCisjaW5jbHVk
ZSAiR2VuZXJhdG9yRnJhbWUuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKKyNpbmNsdWRl
ICJIb3N0Q2FsbFJldHVyblZhbHVlLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNs
dWRlICJKSVQuaCIKICNpbmNsdWRlICJKSVRFeGNlcHRpb25zLmgiCkBAIC04MTcsNiArODE4LDEx
IEBAIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3RmxvYXQ2NEFycmF5V2l0aE9uZUFy
Z3VtZW50KAogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5l
cmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpTRmxvYXQ2NEFycmF5PihleGVjLCBzdHJ1
Y3R1cmUsIGVuY29kZWRWYWx1ZSwgMCwgTnVsbG9wdCkpOwogfQogCitjaGFyKiBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbk5ld0dlbmVyYXRvckZyYW1lKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIGludDMyX3QgbnVtYmVyT2ZDYWxsZWVMb2NhbHMpCit7CisgICAgcmV0dXJu
IGJpdHdpc2VfY2FzdDxjaGFyKj4oR2VuZXJhdG9yRnJhbWU6OmNyZWF0ZShleGVjLT52bSgpLCBz
dHJ1Y3R1cmUsIG51bWJlck9mQ2FsbGVlTG9jYWxzKSk7Cit9CisKIEpTQ2VsbCogSklUX09QRVJB
VElPTiBvcGVyYXRpb25DcmVhdGVBY3RpdmF0aW9uRGlyZWN0KEV4ZWNTdGF0ZSogZXhlYywgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIEpTU2NvcGUqIHNjb3BlLCBTeW1ib2xUYWJsZSogdGFibGUsIEVu
Y29kZWRKU1ZhbHVlIGluaXRpYWxWYWx1ZUVuY29kZWQpCiB7CiAgICAgSlNWYWx1ZSBpbml0aWFs
VmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoaW5pdGlhbFZhbHVlRW5jb2RlZCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCmluZGV4IDQwOTYyOWZmNWQ1M2E3YmUzODdh
NjIzNjQ1NWQ2ODE2YWMwODVlYzkuLmU0NDNiYTI4MjM3MmZiY2NlMmJhYzViMDlhMzY3YmQ1MmM4
ZTc1ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9u
cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCkBAIC04
Miw2ICs4Miw3IEBACiBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Zsb2F0MzJBcnJh
eVdpdGhPbmVBcmd1bWVudChFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqLCBFbmNvZGVkSlNWYWx1ZSkg
V1RGX0lOVEVSTkFMOwogY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdGbG9hdDY0QXJy
YXlXaXRoU2l6ZShFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90KSBXVEZfSU5URVJOQUw7
CiBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Zsb2F0NjRBcnJheVdpdGhPbmVBcmd1
bWVudChFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqLCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFM
OworY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdHZW5lcmF0b3JGcmFtZShFeGVjU3Rh
dGUqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90KSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uUHV0QnlWYWxTdHJpY3QoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRQcm9wZXJ0eSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlKSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
UHV0QnlWYWxOb25TdHJpY3QoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2Us
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRQcm9wZXJ0eSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlKSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxD
ZWxsU3RyaWN0KEV4ZWNTdGF0ZSosIEpTQ2VsbCosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRQcm9w
ZXJ0eSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSBXVEZfSU5URVJOQUw7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBo
YXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0
aW9uUGhhc2UuY3BwCmluZGV4IDU3OTk4Y2ZlMTgxYThmY2Y5Y2M2NTE0MzUxYWM1ODBiODBlN2Zi
OGEuLmM1OGVhMTIzZWVhNzJmNzgxYWQxYmZmYmRkNzZiODExMGQyZjAxYWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2Uu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0
aW9uUGhhc2UuY3BwCkBAIC0xNjAsNiArMTYwLDIzIEBAIGNsYXNzIFByZWRpY3Rpb25Qcm9wYWdh
dGlvblBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgIGNoYW5nZWQgfD0gdmFyaWFi
bGVBY2Nlc3NEYXRhLT5wcmVkaWN0KG5vZGUtPmNoaWxkMSgpLT5wcmVkaWN0aW9uKCkpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKworICAgICAgICBjYXNlIFNldEdlbmVyYXRvckxv
Y2FsOiB7CisgICAgICAgICAgICBHZW5lcmF0b3JMb2NhbERhdGEqIGdlbmVyYXRvckxvY2FsRGF0
YSA9IG5vZGUtPmdlbmVyYXRvckxvY2FsRGF0YSgpOworICAgICAgICAgICAgY2hhbmdlZCB8PSBn
ZW5lcmF0b3JMb2NhbERhdGEtPnByZWRpY3Qobm9kZS0+Y2hpbGQyKCktPnByZWRpY3Rpb24oKSk7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2UgR2V0R2VuZXJh
dG9yTG9jYWw6IHsKKyAgICAgICAgICAgIEdlbmVyYXRvckxvY2FsRGF0YSogZ2VuZXJhdG9yTG9j
YWxEYXRhID0gbm9kZS0+Z2VuZXJhdG9yTG9jYWxEYXRhKCk7CisgICAgICAgICAgICBTcGVjdWxh
dGVkVHlwZSBwcmVkaWN0aW9uID0gZ2VuZXJhdG9yTG9jYWxEYXRhLT5wcmVkaWN0aW9uKCk7Cisg
ICAgICAgICAgICAvLyBXZSBhbHdheXMgc3RvcmUgdGhlIHZhbHVlIGluIEdlbmVyYXRvckxvY2Fs
IGFzIEZvcm1hdEpTVmFsdWUuCisgICAgICAgICAgICBpZiAocHJlZGljdGlvbiAmIFNwZWNJbnQ1
MikKKyAgICAgICAgICAgICAgICBwcmVkaWN0aW9uID0gKHByZWRpY3Rpb24gfCBTcGVjSW50NTJB
c0RvdWJsZSkgJiB+U3BlY0ludDUyOworICAgICAgICAgICAgaWYgKHByZWRpY3Rpb24pCisgICAg
ICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24ocHJlZGljdGlvbik7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgQml0
QW5kOgogICAgICAgICBjYXNlIEJpdE9yOgpAQCAtNTI0LDcgKzU0MSw4IEBAIGNsYXNzIFByZWRp
Y3Rpb25Qcm9wYWdhdGlvblBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgfQogICAgICAg
ICAgICAgCiAgICAgICAgIGNhc2UgTmV3UmVnZXhwOgotICAgICAgICBjYXNlIENyZWF0ZUFjdGl2
YXRpb246IHsKKyAgICAgICAgY2FzZSBDcmVhdGVBY3RpdmF0aW9uOgorICAgICAgICBjYXNlIE5l
d0dlbmVyYXRvckZyYW1lOiB7CiAgICAgICAgICAgICBjaGFuZ2VkIHw9IHNldFByZWRpY3Rpb24o
U3BlY09iamVjdE90aGVyKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC03MTYs
NiArNzM0LDcgQEAgY2xhc3MgUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UgOiBwdWJsaWMgUGhh
c2UgewogICAgICAgICBjYXNlIEV4aXRPSzoKICAgICAgICAgY2FzZSBMb2FkVmFyYXJnczoKICAg
ICAgICAgY2FzZSBDb3B5UmVzdDoKKyAgICAgICAgY2FzZSBQdXRHZW5lcmF0b3JGcmFtZUxvY2Fs
czoKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCiAgICAgICAgIC8vIFRoaXMgZ2V0
cyBpZ25vcmVkIGJlY2F1c2UgaXQgb25seSBwcmV0ZW5kcyB0byBwcm9kdWNlIGEgdmFsdWUuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCmluZGV4IDIzMGVm
ZWRjNDgzMTUxMmJhYzU2OGJlZWZkYjI3Njk2MTg3MjA5NGMuLjdiZGVjM2I1M2UyMzA0MjhiZWM5
ZGFjMTAzNWYwYTRkMDRkOGE2MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU2FmZVRvRXhlY3V0ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U2FmZVRvRXhlY3V0ZS5oCkBAIC0yMzcsNiArMjM3LDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFi
c3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNh
c2UgTmV3QXJyYXlXaXRoU2l6ZToKICAgICBjYXNlIE5ld0FycmF5QnVmZmVyOgogICAgIGNhc2Ug
TmV3UmVnZXhwOgorICAgIGNhc2UgTmV3R2VuZXJhdG9yRnJhbWU6CiAgICAgY2FzZSBCcmVha3Bv
aW50OgogICAgIGNhc2UgUHJvZmlsZVdpbGxDYWxsOgogICAgIGNhc2UgUHJvZmlsZURpZENhbGw6
CkBAIC0zMjgsNiArMzI5LDkgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBl
JiBzdGF0ZSwgR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgR2V0TXlBcmd1bWVu
dEJ5VmFsOgogICAgIGNhc2UgRm9yd2FyZFZhcmFyZ3M6CiAgICAgY2FzZSBDb3B5UmVzdDoKKyAg
ICBjYXNlIFNldEdlbmVyYXRvckxvY2FsOgorICAgIGNhc2UgR2V0R2VuZXJhdG9yTG9jYWw6Cisg
ICAgY2FzZSBQdXRHZW5lcmF0b3JGcmFtZUxvY2FsczoKICAgICAgICAgcmV0dXJuIHRydWU7CiAK
ICAgICBjYXNlIEJvdHRvbVZhbHVlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmNwcAppbmRleCBjY2NlNzkxOTk1MTQ1ZTkxZWZkMjAwODhjOTZiN2Fm
ODJiNTYxNmQ2Li4zYzYzM2ViZTI1MWI3NWI3OGZmOGY5MGU2YWE0MmY4NDg0M2RiYTIwIDEwMDc1
NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApAQCAt
MzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIkRGR1NhbmVTdHJpbmdHZXRCeVZhbFNsb3dQYXRoR2Vu
ZXJhdG9yLmgiCiAjaW5jbHVkZSAiREZHU2xvd1BhdGhHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJE
aXJlY3RBcmd1bWVudHMuaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JGcmFtZS5oIgogI2luY2x1ZGUg
IkpJVEFkZEdlbmVyYXRvci5oIgogI2luY2x1ZGUgIkpJVEJpdEFuZEdlbmVyYXRvci5oIgogI2lu
Y2x1ZGUgIkpJVEJpdE9yR2VuZXJhdG9yLmgiCkBAIC02Mzc4LDYgKzYzNzksMzAgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld1N0cmluZ09iamVjdChOb2RlKiBub2RlKQogICAgIGNl
bGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKIH0KIAordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZU5ld0dlbmVyYXRvckZyYW1lKE5vZGUqIG5vZGUpCit7CisgICAgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCA9IG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdp
bi5zZW1hbnRpYyk7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBnbG9iYWxPYmplY3QtPmdl
bmVyYXRvckZyYW1lU3RydWN0dXJlKCk7CisKKyAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMp
OworICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoMSh0aGlzKTsKKyAgICBHUFJUZW1wb3Jhcnkgc2Ny
YXRjaDIodGhpcyk7CisKKyAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOworICAg
IEdQUlJlZyBzY3JhdGNoMUdQUiA9IHNjcmF0Y2gxLmdwcigpOworICAgIEdQUlJlZyBzY3JhdGNo
MkdQUiA9IHNjcmF0Y2gyLmdwcigpOworCisgICAgSklUQ29tcGlsZXI6Okp1bXBMaXN0IHNsb3dQ
YXRoOworCisgICAgZW1pdEFsbG9jYXRlSlNPYmplY3RXaXRoS25vd25TaXplPEdlbmVyYXRvckZy
YW1lPihyZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwgVHJ1c3RlZEltbVB0cihu
dWxscHRyKSwgc2NyYXRjaDFHUFIsIHNjcmF0Y2gyR1BSLCBzbG93UGF0aCwgR2VuZXJhdG9yRnJh
bWU6OmFsbG9jYXRpb25TaXplRm9yTG9jYWxzKG5vZGUtPmdlbmVyYXRvckZyYW1lU2l6ZSgpKSk7
CisgICAgbV9qaXQuc3RvcmUzMihUcnVzdGVkSW1tMzIobm9kZS0+Z2VuZXJhdG9yRnJhbWVTaXpl
KCkpLCBKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIEdlbmVyYXRvckZyYW1lOjpudW1i
ZXJPZkNhbGxlZUxvY2Fsc09mZnNldCgpKSk7CisgICAgbV9qaXQuc3RvcmUzMihUcnVzdGVkSW1t
MzIoMCksIEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgR2VuZXJhdG9yRnJhbWU6Om51
bWJlck9mU2F2ZWRDYWxsZWVMb2NhbHNPZmZzZXQoKSkpOworCisgICAgYWRkU2xvd1BhdGhHZW5l
cmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dQYXRoLCB0aGlzLCBvcGVyYXRpb25OZXdHZW5lcmF0b3JG
cmFtZSwgcmVzdWx0R1BSLCBzdHJ1Y3R1cmUsIG5vZGUtPmdlbmVyYXRvckZyYW1lU2l6ZSgpKSk7
CisKKyAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7Cit9CisKIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVOZXdUeXBlZEFycmF5KE5vZGUqIG5vZGUpCiB7CiAgICAgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCA9IG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmgKaW5kZXggNTMxMmM4ZGJlZGZlZDE4MDA1NDM4MTEzMDc5ZWViMGIwZTk5MDhh
Yi4uNTczOTgxNTc4ZjI0ZjViMzAyNTlmMmFjMDI1NTJmZDQwOGZlN2FlMCAxMDA3NTUKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaApAQCAtMjI4MSw2ICsyMjgx
LDcgQEAgY2xhc3MgU3BlY3VsYXRpdmVKSVQgewogICAgIHZvaWQgY29tcGlsZVB1dEJ5VmFsRm9y
RmxvYXRUeXBlZEFycmF5KEdQUlJlZyBiYXNlLCBHUFJSZWcgcHJvcGVydHksIE5vZGUqLCBUeXBl
ZEFycmF5VHlwZSk7CiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIENsYXNzVHlwZT4gdm9pZCBjb21w
aWxlTmV3RnVuY3Rpb25Db21tb24oR1BSUmVnLCBTdHJ1Y3R1cmUqLCBHUFJSZWcsIEdQUlJlZywg
R1BSUmVnLCBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QmLCBzaXplX3QsIEZ1bmN0aW9uRXhlY3V0
YWJsZSosIHB0cmRpZmZfdCwgcHRyZGlmZl90LCBwdHJkaWZmX3QpOwogICAgIHZvaWQgY29tcGls
ZU5ld0Z1bmN0aW9uKE5vZGUqKTsKKyAgICB2b2lkIGNvbXBpbGVOZXdHZW5lcmF0b3JGcmFtZShO
b2RlKik7CiAgICAgdm9pZCBjb21waWxlRm9yd2FyZFZhcmFyZ3MoTm9kZSopOwogICAgIHZvaWQg
Y29tcGlsZUNyZWF0ZUFjdGl2YXRpb24oTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUNyZWF0ZURp
cmVjdEFyZ3VtZW50cyhOb2RlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAppbmRleCAxMmViNTA0MTE4MGFjMmY1MDE2NGY5
NTFiMDU4ZWRiNjJkMjI4MjcwLi4zMTAzYWQ1OWZmMjA0MWE3NGQxMmVhOGI4M2FjMTc3MzNlZjdj
NmU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklUMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQzMl82NC5jcHAKQEAgLTM2NTAsNiArMzY1MCwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0UGF5bG9hZC5n
cHIoKSwgbm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KKworICAgIGNhc2UgTmV3R2VuZXJh
dG9yRnJhbWU6IHsKKyAgICAgICAgY29tcGlsZU5ld0dlbmVyYXRvckZyYW1lKG5vZGUpOworICAg
ICAgICBicmVhazsKKyAgICB9CiAgICAgICAgIAogICAgIGNhc2UgVG9UaGlzOiB7CiAgICAgICAg
IEFTU0VSVChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAppbmRleCBl
NzQ1Njk0MDRjMWI5Nzg0ODA2MTk3ZDE0NTQ1Y2QxZGIyM2Q3YTVjLi44OTQwMmYxZTM2ODIzOTg3
ODA1MTk3NDZkNGJhNzFmNDZkMWU3ZjA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRl
ICJERkdTbG93UGF0aEdlbmVyYXRvci5oIgogI2luY2x1ZGUgIkRlYnVnZ2VyLmgiCiAjaW5jbHVk
ZSAiRGlyZWN0QXJndW1lbnRzLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yRnJhbWUuaCIKICNpbmNs
dWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAi
SlNFbnZpcm9ubWVudFJlY29yZC5oIgpAQCAtMzY4OCw2ICszNjg5LDExIEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgY2VsbFJlc3VsdChyZXN1bHQu
Z3ByKCksIG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9CisKKyAgICBjYXNlIE5ld0dlbmVy
YXRvckZyYW1lOiB7CisgICAgICAgIGNvbXBpbGVOZXdHZW5lcmF0b3JGcmFtZShub2RlKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgfQogICAgICAgICAKICAgICBjYXNlIFRvVGhpczogewogICAgICAg
ICBBU1NFUlQobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IFVudHlwZWRVc2UpOwpAQCAtNDcy
MCw2ICs0NzI2LDM4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkK
ICAgICAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogICAgICAgICBicmVhazsKICAg
ICB9CisgICAgY2FzZSBTZXRHZW5lcmF0b3JMb2NhbDogeworICAgICAgICBTcGVjdWxhdGVDZWxs
T3BlcmFuZCBmcmFtZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIEpTVmFsdWVPcGVy
YW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKKworICAgICAgICBHUFJSZWcgZnJhbWVH
UFIgPSBmcmFtZS5ncHIoKTsKKyAgICAgICAgR1BSUmVnIHZhbHVlR1BSID0gdmFsdWUuZ3ByKCk7
CisgICAgICAgIHVuc2lnbmVkIGdlbmVyYXRvckZyYW1lSW5kZXggPSBub2RlLT5nZW5lcmF0b3JG
cmFtZUluZGV4KCk7CisKKyAgICAgICAgbV9qaXQuc3RvcmU2NCh2YWx1ZUdQUiwgSklUQ29tcGls
ZXI6OkFkZHJlc3MoZnJhbWVHUFIsIEdlbmVyYXRvckZyYW1lOjpsb2NhbE9mZnNldChnZW5lcmF0
b3JGcmFtZUluZGV4KSkpOworCisgICAgICAgIG5vUmVzdWx0KG5vZGUpOworICAgICAgICBicmVh
azsKKyAgICB9CisgICAgY2FzZSBHZXRHZW5lcmF0b3JMb2NhbDogeworICAgICAgICBTcGVjdWxh
dGVDZWxsT3BlcmFuZCBmcmFtZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIEdQUlRl
bXBvcmFyeSByZXN1bHQodGhpcyk7CisKKyAgICAgICAgR1BSUmVnIGZyYW1lR1BSID0gZnJhbWUu
Z3ByKCk7CisgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CisgICAgICAg
IHVuc2lnbmVkIGdlbmVyYXRvckZyYW1lSW5kZXggPSBub2RlLT5nZW5lcmF0b3JGcmFtZUluZGV4
KCk7CisKKyAgICAgICAgbV9qaXQubG9hZDY0KEpJVENvbXBpbGVyOjpBZGRyZXNzKGZyYW1lR1BS
LCBHZW5lcmF0b3JGcmFtZTo6bG9jYWxPZmZzZXQoZ2VuZXJhdG9yRnJhbWVJbmRleCkpLCByZXN1
bHRHUFIpOworICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CisgICAgICAg
IGJyZWFrOworICAgIH0KKyAgICBjYXNlIFB1dEdlbmVyYXRvckZyYW1lTG9jYWxzOiB7CisgICAg
ICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGZyYW1lKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAg
ICAgICAgR1BSUmVnIGZyYW1lR1BSID0gZnJhbWUuZ3ByKCk7CisgICAgICAgIG1faml0LnN0b3Jl
MzIoVHJ1c3RlZEltbTMyKG5vZGUtPmdlbmVyYXRvckZyYW1lTG9jYWxzKCkpLCBKSVRDb21waWxl
cjo6QWRkcmVzcyhmcmFtZUdQUiwgR2VuZXJhdG9yRnJhbWU6Om51bWJlck9mU2F2ZWRDYWxsZWVM
b2NhbHNPZmZzZXQoKSkpOworICAgICAgICBub1Jlc3VsdChub2RlKTsKKyAgICAgICAgYnJlYWs7
CisgICAgfQogICAgIGNhc2UgUHJvZmlsZVR5cGU6IHsKICAgICAgICAgSlNWYWx1ZU9wZXJhbmQg
dmFsdWUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRj
aDEodGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0b3Jl
QmFycmllckluc2VydGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwCmluZGV4IDcyZjIyMDBjZWExMGI5ODEwZGJh
OGM3YjE5ZmVmZjI0ZGFhNWRhZTMuLmQ3YzcwNTY2ZmM3MzdmODkwZjE1NmI1MzQ1MDlkOWEwYzA3
MzhlOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVCYXJy
aWVySW5zZXJ0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwCkBAIC0yODEsNiArMjgxLDExIEBAIGNsYXNz
IFN0b3JlQmFycmllckluc2VydGlvblBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAg
ICAgICBjb25zaWRlckJhcnJpZXIobV9ub2RlLT5jaGlsZDEoKSwgbV9ub2RlLT5jaGlsZDIoKSk7
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGNh
c2UgU2V0R2VuZXJhdG9yTG9jYWw6IHsKKyAgICAgICAgICAgICAgICBjb25zaWRlckJhcnJpZXIo
bV9ub2RlLT5jaGlsZDEoKSwgbV9ub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICBkZWZhdWx0
OgogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjk2LDYgKzMwMSw3IEBAIGNsYXNzIFN0b3Jl
QmFycmllckluc2VydGlvblBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgIGNhc2Ug
TmV3QXJyYXlCdWZmZXI6CiAgICAgICAgICAgICBjYXNlIE5ld1R5cGVkQXJyYXk6CiAgICAgICAg
ICAgICBjYXNlIE5ld1JlZ2V4cDoKKyAgICAgICAgICAgIGNhc2UgTmV3R2VuZXJhdG9yRnJhbWU6
CiAgICAgICAgICAgICBjYXNlIE1hdGVyaWFsaXplTmV3T2JqZWN0OgogICAgICAgICAgICAgY2Fz
ZSBNYXRlcmlhbGl6ZUNyZWF0ZUFjdGl2YXRpb246CiAgICAgICAgICAgICBjYXNlIE5ld1N0cmlu
Z09iamVjdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RydWN0
dXJlUmVnaXN0cmF0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
dHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFzZS5jcHAKaW5kZXggMmMwNTU5ODQ5ODk5YmRmNmZiMTEx
NzU5N2UxMDU0YmZmMzU0NjY5My4uZTFhZWYwYjJjMzkzZjU2MTk0OGNjYTVhOTU5ZjJlMDcxMDg4
NDM4OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVS
ZWdpc3RyYXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
dHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFzZS5jcHAKQEAgLTE0OSw2ICsxNDksOSBAQCBjbGFzcyBT
dHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICAg
ICAgY2FzZSBOZXdHZW5lcmF0b3JGdW5jdGlvbjoKICAgICAgICAgICAgICAgICAgICAgcmVnaXN0
ZXJTdHJ1Y3R1cmUobV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KS0+Z2VuZXJhdG9yRnVuY3Rpb25TdHJ1Y3R1cmUoKSk7CiAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgIGNhc2UgTmV3R2VuZXJhdG9yRnJhbWU6CisgICAgICAgICAg
ICAgICAgICAgIHJlZ2lzdGVyU3RydWN0dXJlKG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYyktPmdlbmVyYXRvckZyYW1lU3RydWN0dXJlKCkpOworICAgICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAg
ZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcAppbmRleCA5
N2MwNzg0YmI0MmJjOTE5ZDA2Y2Y1MjNjNDFlMDI0NmE1MzUxZDkxLi42OWQ4OWQ2YWQ0MjU0OTIz
YmMzZmFiM2M3YWNhMjA4OTVjNTVlNWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAKQEAgLTMwLDYgKzMwLDcg
QEAKIAogI2luY2x1ZGUgIkRpcmVjdEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIkZUTEFiYnJldmlh
dGlvbnMuaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JGcmFtZS5oIgogI2luY2x1ZGUgIkdldHRlclNl
dHRlci5oIgogI2luY2x1ZGUgIkpTRW52aXJvbm1lbnRSZWNvcmQuaCIKICNpbmNsdWRlICJKU1By
b3BlcnR5TmFtZUVudW1lcmF0b3IuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgKaW5kZXggNzdlNTc5ODY5NDBjNmFjOTZm
ODdmMWY5NDVjNDYyNTEyODg2MzBmMC4uNDg4NjNjMGJkMzBmNjQ1NzY1MzEwOGJmNDU2OWIxMmM5
NDA4NThhYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFj
dEhlYXBSZXBvc2l0b3J5LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0
cmFjdEhlYXBSZXBvc2l0b3J5LmgKQEAgLTQ3LDYgKzQ3LDggQEAKICAgICBtYWNybyhEaXJlY3RB
cmd1bWVudHNfbGVuZ3RoLCBEaXJlY3RBcmd1bWVudHM6Om9mZnNldE9mTGVuZ3RoKCkpIFwKICAg
ICBtYWNybyhEaXJlY3RBcmd1bWVudHNfbWluQ2FwYWNpdHksIERpcmVjdEFyZ3VtZW50czo6b2Zm
c2V0T2ZNaW5DYXBhY2l0eSgpKSBcCiAgICAgbWFjcm8oRGlyZWN0QXJndW1lbnRzX292ZXJyaWRl
cywgRGlyZWN0QXJndW1lbnRzOjpvZmZzZXRPZk92ZXJyaWRlcygpKSBcCisgICAgbWFjcm8oR2Vu
ZXJhdG9yRnJhbWVfbnVtYmVyT2ZDYWxsZWVMb2NhbHMsIEdlbmVyYXRvckZyYW1lOjpudW1iZXJP
ZkNhbGxlZUxvY2Fsc09mZnNldCgpKSBcCisgICAgbWFjcm8oR2VuZXJhdG9yRnJhbWVfbnVtYmVy
T2ZTYXZlZENhbGxlZUxvY2FscywgR2VuZXJhdG9yRnJhbWU6Om51bWJlck9mU2F2ZWRDYWxsZWVM
b2NhbHNPZmZzZXQoKSkgXAogICAgIG1hY3JvKEdldHRlclNldHRlcl9nZXR0ZXIsIEdldHRlclNl
dHRlcjo6b2Zmc2V0T2ZHZXR0ZXIoKSkgXAogICAgIG1hY3JvKEdldHRlclNldHRlcl9zZXR0ZXIs
IEdldHRlclNldHRlcjo6b2Zmc2V0T2ZTZXR0ZXIoKSkgXAogICAgIG1hY3JvKEpTQXJyYXlCdWZm
ZXJWaWV3X2xlbmd0aCwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpIFwKQEAg
LTkxLDYgKzkzLDcgQEAKIAogI2RlZmluZSBGT1JfRUFDSF9JTkRFWEVEX0FCU1RSQUNUX0hFQVAo
bWFjcm8pIFwKICAgICBtYWNybyhEaXJlY3RBcmd1bWVudHNfc3RvcmFnZSwgRGlyZWN0QXJndW1l
bnRzOjpzdG9yYWdlT2Zmc2V0KCksIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkpIFwKKyAgICBtYWNy
byhHZW5lcmF0b3JGcmFtZV9jYWxsZWVMb2NhbHMsIEdlbmVyYXRvckZyYW1lOjpvZmZzZXRPZkxv
Y2FscygpLCBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KSkgXAogICAgIG1hY3JvKEpTRW52
aXJvbm1lbnRSZWNvcmRfdmFyaWFibGVzLCBKU0Vudmlyb25tZW50UmVjb3JkOjpvZmZzZXRPZlZh
cmlhYmxlcygpLCBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKSBcCiAgICAgbWFjcm8oSlNQcm9wZXJ0
eU5hbWVFbnVtZXJhdG9yX2NhY2hlZFByb3BlcnR5TmFtZXNWZWN0b3JDb250ZW50cywgMCwgc2l6
ZW9mKFdyaXRlQmFycmllcjxKU1N0cmluZz4pKSBcCiAgICAgbWFjcm8oSlNSb3BlU3RyaW5nX2Zp
YmVycywgSlNSb3BlU3RyaW5nOjpvZmZzZXRPZkZpYmVycygpLCBzaXplb2YoV3JpdGVCYXJyaWVy
PEpTU3RyaW5nPikpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
Q2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0
aWVzLmNwcAppbmRleCBkMmE0OTBjMmE2N2U2ZGI4YjlhNWE3OTY2NGU1NjVlM2Q2ZDk1MWRjLi4x
N2I0ZTJkYjVmNmExY2MwMDNmODgwYzdlYTRjNjAwYWI4YWM4Njc4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCkBAIC03Miw2ICs3Miw3IEBAIGlu
bGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgTmV3
T2JqZWN0OgogICAgIGNhc2UgTmV3QXJyYXk6CiAgICAgY2FzZSBOZXdBcnJheUJ1ZmZlcjoKKyAg
ICBjYXNlIE5ld0dlbmVyYXRvckZyYW1lOgogICAgIGNhc2UgR2V0QnlPZmZzZXQ6CiAgICAgY2Fz
ZSBHZXRHZXR0ZXJTZXR0ZXJCeU9mZnNldDoKICAgICBjYXNlIEdldEdldHRlcjoKQEAgLTIxNiw2
ICsyMTcsOSBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoTm9kZSogbm9kZSkK
ICAgICBjYXNlIFB1dFNldHRlckJ5VmFsOgogICAgIGNhc2UgQ29weVJlc3Q6CiAgICAgY2FzZSBH
ZXRSZXN0TGVuZ3RoOgorICAgIGNhc2UgU2V0R2VuZXJhdG9yTG9jYWw6CisgICAgY2FzZSBHZXRH
ZW5lcmF0b3JMb2NhbDoKKyAgICBjYXNlIFB1dEdlbmVyYXRvckZyYW1lTG9jYWxzOgogICAgICAg
ICAvLyBUaGVzZSBhcmUgT0suCiAgICAgICAgIGJyZWFrOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCmluZGV4IDM3Y2FlNWMxN2FkOWM3MWQw
MThkNDFiYjZlOWE2NmM5MTc3OTY2ZjIuLjUyOTk1YTMzZjZhN2ZlZWRiYzI5NzQ5NjhmM2VmOTQ0
ZjllZjhiNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJE
RkdUb0xMVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdU
b0xMVk0uY3BwCkBAIC01Myw2ICs1Myw3IEBACiAjaW5jbHVkZSAiRlRMUGF0Y2hwb2ludEV4Y2Vw
dGlvbkhhbmRsZS5oIgogI2luY2x1ZGUgIkZUTFRodW5rcy5oIgogI2luY2x1ZGUgIkZUTFdlaWdo
dGVkVGFyZ2V0LmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yRnJhbWUuaCIKICNpbmNsdWRlICJKSVRB
ZGRHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJKSVRCaXRBbmRHZW5lcmF0b3IuaCIKICNpbmNsdWRl
ICJKSVRCaXRPckdlbmVyYXRvci5oIgpAQCAtODM5LDYgKzg0MCw5IEBAIGNsYXNzIExvd2VyREZH
VG9MTFZNIHsKICAgICAgICAgY2FzZSBOZXdBcnJheVdpdGhTaXplOgogICAgICAgICAgICAgY29t
cGlsZU5ld0FycmF5V2l0aFNpemUoKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IE5ld0dlbmVyYXRvckZyYW1lOgorICAgICAgICAgICAgY29tcGlsZU5ld0dlbmVyYXRvckZyYW1l
KCk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9m
ZnNldDoKICAgICAgICAgICAgIGNvbXBpbGVHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldCgpOwogICAg
ICAgICAgICAgYnJlYWs7CkBAIC0xMDcxLDYgKzEwNzUsMTUgQEAgY2xhc3MgTG93ZXJERkdUb0xM
Vk0gewogICAgICAgICBjYXNlIEdldFJlc3RMZW5ndGg6CiAgICAgICAgICAgICBjb21waWxlR2V0
UmVzdExlbmd0aCgpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgUHV0R2VuZXJh
dG9yRnJhbWVMb2NhbHM6CisgICAgICAgICAgICBjb21waWxlUHV0R2VuZXJhdG9yRnJhbWVMb2Nh
bHMoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFNldEdlbmVyYXRvckxvY2Fs
OgorICAgICAgICAgICAgY29tcGlsZVNldEdlbmVyYXRvckxvY2FsKCk7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBHZXRHZW5lcmF0b3JMb2NhbDoKKyAgICAgICAgICAgIGNvbXBp
bGVHZXRHZW5lcmF0b3JMb2NhbCgpOworICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2Fz
ZSBQaGFudG9tTG9jYWw6CiAgICAgICAgIGNhc2UgTG9vcEhpbnQ6CkBAIC0zOTE2LDYgKzM5Mjks
MjggQEAgY2xhc3MgTG93ZXJERkdUb0xMVk0gewogICAgICAgICBtX291dC5hcHBlbmRUbyhjb250
aW51YXRpb24sIGxhc3ROZXh0KTsKICAgICAgICAgc2V0SW50MzIobV9vdXQucGhpKG1fb3V0Lmlu
dDMyLCB6ZXJvTGVuZ3RoUmVzdWx0LCBub25aZXJvTGVuZ3RoUmVzdWx0KSk7CiAgICAgfQorCisg
ICAgdm9pZCBjb21waWxlUHV0R2VuZXJhdG9yRnJhbWVMb2NhbHMoKQorICAgIHsKKyAgICAgICAg
TFZhbHVlIGZyYW1lID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgbV9vdXQu
c3RvcmUzMihtX291dC5jb25zdEludDMyKG1fbm9kZS0+Z2VuZXJhdG9yRnJhbWVMb2NhbHMoKSks
IGZyYW1lLCBtX2hlYXBzLkdlbmVyYXRvckZyYW1lX251bWJlck9mU2F2ZWRDYWxsZWVMb2NhbHMp
OworICAgIH0KKworICAgIHZvaWQgY29tcGlsZVNldEdlbmVyYXRvckxvY2FsKCkKKyAgICB7Cisg
ICAgICAgIG1fb3V0LnN0b3JlNjQoCisgICAgICAgICAgICBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hp
bGQyKCkpLAorICAgICAgICAgICAgbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKSwKKyAgICAgICAg
ICAgIG1faGVhcHMuR2VuZXJhdG9yRnJhbWVfY2FsbGVlTG9jYWxzW21fbm9kZS0+Z2VuZXJhdG9y
RnJhbWVJbmRleCgpXSk7CisgICAgfQorCisgICAgdm9pZCBjb21waWxlR2V0R2VuZXJhdG9yTG9j
YWwoKQorICAgIHsKKyAgICAgICAgc2V0SlNWYWx1ZSgKKyAgICAgICAgICAgIG1fb3V0LmxvYWQ2
NCgKKyAgICAgICAgICAgICAgICBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpLAorICAgICAgICAg
ICAgICAgIG1faGVhcHMuR2VuZXJhdG9yRnJhbWVfY2FsbGVlTG9jYWxzW21fbm9kZS0+Z2VuZXJh
dG9yRnJhbWVJbmRleCgpXSkpOworICAgIH0KICAgICAKICAgICB2b2lkIGNvbXBpbGVOZXdPYmpl
Y3QoKQogICAgIHsKQEAgLTQxNTAsNiArNDE4NSwzNyBAQCBjbGFzcyBMb3dlckRGR1RvTExWTSB7
CiAgICAgICAgICAgICBtX291dC5jb25zdEludFB0cihzdHJ1Y3R1cmUpKTsKICAgICAgICAgc2V0
SlNWYWx1ZSh2bUNhbGwobV9vdXQuaW50NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25OZXdB
cnJheVdpdGhTaXplKSwgbV9jYWxsRnJhbWUsIHN0cnVjdHVyZVZhbHVlLCBwdWJsaWNMZW5ndGgp
KTsKICAgICB9CisKKyAgICB2b2lkIGNvbXBpbGVOZXdHZW5lcmF0b3JGcmFtZSgpCisgICAgewor
ICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmpl
Y3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSA9IGdsb2JhbE9iamVjdC0+Z2VuZXJhdG9yRnJhbWVTdHJ1Y3R1cmUoKTsKKyAgICAgICAg
dW5zaWduZWQgZ2VuZXJhdG9yRnJhbWVTaXplID0gbV9ub2RlLT5nZW5lcmF0b3JGcmFtZVNpemUo
KTsKKworICAgICAgICBMQmFzaWNCbG9jayBzbG93UGF0aCA9IEZUTF9ORVdfQkxPQ0sobV9vdXQs
ICgiTmV3R2VuZXJhdG9yRnJhbWUgc2xvdyBwYXRoIikpOworICAgICAgICBMQmFzaWNCbG9jayBj
b250aW51YXRpb24gPSBGVExfTkVXX0JMT0NLKG1fb3V0LCAoIk5ld0dlbmVyYXRvckZyYW1lIGNv
bnRpbnVhdGlvbiIpKTsKKworICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0Lmlu
c2VydE5ld0Jsb2Nrc0JlZm9yZShzbG93UGF0aCk7CisgICAgICAgIExWYWx1ZSBmYXN0T2JqZWN0
ID0gYWxsb2NhdGVPYmplY3Q8R2VuZXJhdG9yRnJhbWU+KEdlbmVyYXRvckZyYW1lOjphbGxvY2F0
aW9uU2l6ZUZvckxvY2FscyhnZW5lcmF0b3JGcmFtZVNpemUpLCBzdHJ1Y3R1cmUsIG1fb3V0Lmlu
dFB0clplcm8sIHNsb3dQYXRoKTsKKyAgICAgICAgbV9vdXQuc3RvcmUzMihtX291dC5jb25zdElu
dDMyKGdlbmVyYXRvckZyYW1lU2l6ZSksIGZhc3RPYmplY3QsIG1faGVhcHMuR2VuZXJhdG9yRnJh
bWVfbnVtYmVyT2ZDYWxsZWVMb2NhbHMpOworICAgICAgICBtX291dC5zdG9yZTMyKG1fb3V0LmNv
bnN0SW50MzIoMCksIGZhc3RPYmplY3QsIG1faGVhcHMuR2VuZXJhdG9yRnJhbWVfbnVtYmVyT2ZT
YXZlZENhbGxlZUxvY2Fscyk7CisgICAgICAgIFZhbHVlRnJvbUJsb2NrIGZhc3RSZXN1bHQgPSBt
X291dC5hbmNob3IoZmFzdE9iamVjdCk7CisgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9u
KTsKKworICAgICAgICBtX291dC5hcHBlbmRUbyhzbG93UGF0aCwgY29udGludWF0aW9uKTsKKyAg
ICAgICAgVmVjdG9yPExWYWx1ZT4gc2xvd1BhdGhBcmd1bWVudHM7CisgICAgICAgIExWYWx1ZSBj
YWxsUmVzdWx0ID0gbGF6eVNsb3dQYXRoKAorICAgICAgICAgICAgWz1dIChjb25zdCBWZWN0b3I8
TG9jYXRpb24+JiBsb2NhdGlvbnMpIC0+IFJlZlB0cjxMYXp5U2xvd1BhdGg6OkdlbmVyYXRvcj4g
eworICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVMYXp5Q2FsbEdlbmVyYXRvcigKKyAgICAg
ICAgICAgICAgICAgICAgb3BlcmF0aW9uTmV3R2VuZXJhdG9yRnJhbWUsCisgICAgICAgICAgICAg
ICAgICAgIGxvY2F0aW9uc1swXS5kaXJlY3RHUFIoKSwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1t
UHRyKHN0cnVjdHVyZSksIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKGdlbmVyYXRvckZyYW1l
U2l6ZSkpOworICAgICAgICAgICAgfSk7CisgICAgICAgIFZhbHVlRnJvbUJsb2NrIHNsb3dSZXN1
bHQgPSBtX291dC5hbmNob3IoY2FsbFJlc3VsdCk7CisgICAgICAgIG1fb3V0Lmp1bXAoY29udGlu
dWF0aW9uKTsKKworICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0
KTsKKyAgICAgICAgc2V0SlNWYWx1ZShtX291dC5waGkobV9vdXQuaW50UHRyLCBmYXN0UmVzdWx0
LCBzbG93UmVzdWx0KSk7CisgICAgfQogICAgIAogICAgIHZvaWQgY29tcGlsZUFsbG9jYXRlUHJv
cGVydHlTdG9yYWdlKCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKaW5kZXggYTNi
ZGZhN2NkNWQwZjU3MjQ3ZjFiZThjNDBiMjUxMGQyOWQ4MDBmZi4uMGI5ZmQ4ZDM0M2ZkOGNlYjI3
YWFmN2EzOTQwMDcwNDY0NzRjMjY4YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcApAQCAt
MjE2LDcgKzIxNiw5IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAg
ICAgREVGSU5FX09QKG9wX2NoZWNrX3RkeikKICAgICAgICAgREVGSU5FX09QKG9wX2Fzc2VydCkK
ICAgICAgICAgREVGSU5FX09QKG9wX3NhdmUpCi0gICAgICAgIERFRklORV9PUChvcF9yZXN1bWUp
CisgICAgICAgIERFRklORV9PUChvcF9uZXdfZ2VuZXJhdG9yX2ZyYW1lKQorICAgICAgICBERUZJ
TkVfT1Aob3BfcmVzdW1lX2Zyb21fZ2VuZXJhdG9yX2ZyYW1lKQorICAgICAgICBERUZJTkVfT1Ao
b3BfY2xlYXJfZ2VuZXJhdG9yX2ZyYW1lKQogICAgICAgICBERUZJTkVfT1Aob3BfZGVidWcpCiAg
ICAgICAgIERFRklORV9PUChvcF9kZWxfYnlfaWQpCiAgICAgICAgIERFRklORV9PUChvcF9kaXYp
CkBAIC0yODksNiArMjkxLDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQog
ICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2dldHRlcl9zZXR0ZXJfYnlfaWQpCiAgICAgICAgIERF
RklORV9PUChvcF9wdXRfZ2V0dGVyX2J5X3ZhbCkKICAgICAgICAgREVGSU5FX09QKG9wX3B1dF9z
ZXR0ZXJfYnlfdmFsKQorICAgICAgICBERUZJTkVfT1Aob3Bfbm9wKQogCiAgICAgICAgIERFRklO
RV9PUChvcF9yZXQpCiAgICAgICAgIERFRklORV9PUChvcF9yc2hpZnQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVQuaAppbmRleCBkZjdiM2RjNWU4OTIwZWU0ZWY5MmJjYWNiYWVmZjFiNGMwMGQ5MzY5Li5l
YzY4MWQwOTkwZWYwYzJhMWIwYzQxZDU0MTJiYmNlMGMwZDM5MWRlIDEwMDc1NQotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklULmgKQEAgLTQ5NSw3ICs0OTUsOSBAQAogICAgICAgICB2b2lkIGVtaXRfb3BfY2hlY2tf
dGR6KEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9hc3NlcnQoSW5zdHJ1Y3Rp
b24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX3NhdmUoSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAg
dm9pZCBlbWl0X29wX3Jlc3VtZShJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3Bf
cmVzdW1lX2Zyb21fZ2VuZXJhdG9yX2ZyYW1lKEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQg
ZW1pdF9vcF9jbGVhcl9nZW5lcmF0b3JfZnJhbWUoSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9p
ZCBlbWl0X29wX25ld19nZW5lcmF0b3JfZnJhbWUoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9p
ZCBlbWl0X29wX2RlYnVnKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9kZWxf
YnlfaWQoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2RpdihJbnN0cnVjdGlv
biopOwpAQCAtNTk1LDYgKzU5Nyw3IEBACiAgICAgICAgIHZvaWQgZW1pdF9vcF9lbnVtZXJhdG9y
X3N0cnVjdHVyZV9wbmFtZShJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZW51
bWVyYXRvcl9nZW5lcmljX3BuYW1lKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9v
cF90b19pbmRleF9zdHJpbmcoSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX25v
cChJbnN0cnVjdGlvbiopOwogCiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfYWRkKEluc3RydWN0
aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogICAgICAgICB2b2lkIGVt
aXRTbG93X29wX2JpdGFuZChJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRl
cmF0b3ImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rl
cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCmluZGV4IDcz
OGNiNjNmZWQ5MWI0OTg1NWQ1ZDAzM2Q0NjMzNDVmZGQ0NzZkOWIuLjRhNmE4OGM4NGY1NzVmMTRi
YWI2MDM5MzkwZjQ2ODE5NGVmNzM3MjYgMTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3Bjb2Rlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGNvZGVzLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkNvcGllZFNwYWNlSW5saW5l
cy5oIgogI2luY2x1ZGUgIkRlYnVnZ2VyLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uLmgiCisjaW5j
bHVkZSAiR2VuZXJhdG9yRnJhbWUuaCIKICNpbmNsdWRlICJIZWFwLmgiCiAjaW5jbHVkZSAiSklU
SW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKQEAgLTg5Myw2ICs4OTQsMjMgQEAgdm9p
ZCBKSVQ6OmVtaXRTbG93X29wX3RvX3N0cmluZyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uLCBWZWN0b3I8U2xvd0Nhc2UKICAgICBzbG93UGF0aENhbGwuY2FsbCgpOwogfQogCit2b2lk
IEpJVDo6ZW1pdF9vcF9yZXN1bWVfZnJvbV9nZW5lcmF0b3JfZnJhbWUoSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBpbnQgZHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFd
LnUub3BlcmFuZDsKKyAgICBpbnQgZnJhbWUgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVy
YW5kOworICAgIHVuc2lnbmVkIGluZGV4ID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUudW5zaWdu
ZWRWYWx1ZTsKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGZyYW1lLCByZWdUMSk7CisgICAg
bG9hZDY0KEFkZHJlc3MocmVnVDEsIEdlbmVyYXRvckZyYW1lOjpsb2NhbE9mZnNldChpbmRleCkp
LCByZWdUMCk7CisgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QpOworfQorCit2b2lkIEpJ
VDo6ZW1pdF9vcF9jbGVhcl9nZW5lcmF0b3JfZnJhbWUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKK3sKKyAgICBpbnQgZnJhbWUgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVy
YW5kOworICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoZnJhbWUsIHJlZ1QxKTsKKyAgICBzdG9y
ZTMyKFRydXN0ZWRJbW0zMigwKSwgQWRkcmVzcyhyZWdUMSwgR2VuZXJhdG9yRnJhbWU6Om51bWJl
ck9mU2F2ZWRDYWxsZWVMb2NhbHNPZmZzZXQoKSkpOworfQorCiAjZW5kaWYgLy8gVVNFKEpTVkFM
VUU2NCkKIAogdm9pZCBKSVQ6OmVtaXRfb3BfbG9vcF9oaW50KEluc3RydWN0aW9uKikKQEAgLTE0
MzUsMTIgKzE0NTMsMTYgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bfc2F2ZShJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQogICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CiB9CiAKLXZvaWQgSklU
OjplbWl0X29wX3Jlc3VtZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBK
SVQ6OmVtaXRfb3BfbmV3X2dlbmVyYXRvcl9mcmFtZShJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogewotICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVu
dEluc3RydWN0aW9uLCBzbG93X3BhdGhfcmVzdW1lKTsKKyAgICBKSVRTbG93UGF0aENhbGwgc2xv
d1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX25ld19nZW5lcmF0
b3JfZnJhbWUpOwogICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CiB9CiAKK3ZvaWQgSklUOjplbWl0
X29wX25vcChJbnN0cnVjdGlvbiopCit7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5k
aWYgLy8gRU5BQkxFKEpJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKaW5kZXggMmI0ZTYxOTg2ZDMxMmFjOWU0Zjg3Mzcz
Y2U3YWEwYjlmZDBjZTc1YS4uYWZlMDk2ODQ4OGY0NmQxNjc1YzkxN2VjYjJiNjIwYzAwNTYxMjI0
NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4
dHJhY3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0
c0V4dHJhY3Rvci5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJEaXJlY3RBcmd1bWVu
dHMuaCIKICNpbmNsdWRlICJFeGNlcHRpb24uaCIKICNpbmNsdWRlICJFeGVjdXRhYmxlLmgiCisj
aW5jbHVkZSAiR2VuZXJhdG9yRnJhbWUuaCIKICNpbmNsdWRlICJIZWFwLmgiCiAjaW5jbHVkZSAi
SW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KaW5kZXggY2Q0Y2U5MDYz
YjE5NTc1YTk1N2UzY2EzZTIyYmU1NzkxNWJkYjU5YS4uYjkyMGE2Y2U2NmNmYmUxMzUzMzRkYTAx
ZjY5ZDU4ZGU0NjYwY2U0ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQpAQCAtMTY1LDYgKzE2NSw3IEBAIGNvbnN0IFNsb3RT
aXplID0gOAogCiBjb25zdCBKU0Vudmlyb25tZW50UmVjb3JkX3ZhcmlhYmxlcyA9IChzaXplb2Yg
SlNFbnZpcm9ubWVudFJlY29yZCArIFNsb3RTaXplIC0gMSkgJiB+KFNsb3RTaXplIC0gMSkKIGNv
bnN0IERpcmVjdEFyZ3VtZW50c19zdG9yYWdlID0gKHNpemVvZiBEaXJlY3RBcmd1bWVudHMgKyBT
bG90U2l6ZSAtIDEpICYgfihTbG90U2l6ZSAtIDEpCitjb25zdCBHZW5lcmF0b3JGcmFtZV9jYWxs
ZWVMb2NhbHMgPSAoc2l6ZW9mIEdlbmVyYXRvckZyYW1lICsgU2xvdFNpemUgLSAxKSAmIH4oU2xv
dFNpemUgLSAxKQogCiBjb25zdCBTdGFja0FsaWdubWVudCA9IDE2CiBjb25zdCBTdGFja0FsaWdu
bWVudFNsb3RzID0gMgpAQCAtMTI1Niw2ICsxMjU3LDEyIEBAIF9sbGludF9vcF9uZXdfcmVnZXhw
OgogICAgIGRpc3BhdGNoKDMpCiAKIAorX2xsaW50X29wX25ld19nZW5lcmF0b3JfZnJhbWU6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRoX25ld19nZW5l
cmF0b3JfZnJhbWUpCisgICAgZGlzcGF0Y2goMykKKworCiBfbGxpbnRfb3BfbGVzczoKICAgICB0
cmFjZUV4ZWN1dGlvbigpCiAgICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfbGVzcykKQEAgLTE1
OTUsMTAgKzE2MDIsMTYgQEAgX2xsaW50X29wX3NhdmU6CiAgICAgZGlzcGF0Y2goNCkKIAogCi1f
bGxpbnRfb3BfcmVzdW1lOgorX2xsaW50X29wX3NhdmVfaGludDoKICAgICB0cmFjZUV4ZWN1dGlv
bigpCi0gICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfcmVzdW1lKQotICAgIGRpc3BhdGNoKDMp
CisgICAgbm90U3VwcG9ydGVkKCkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9yZXN1
bWVfaGludDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbm90U3VwcG9ydGVkKCkKKyAgICBk
aXNwYXRjaCg0KQogCiAKIF9sbGludF9vcF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudDoKQEAg
LTE3MDgsNiArMTcyMSwxMCBAQCBfbGxpbnRfb3BfY29weV9yZXN0OgogICAgIGNhbGxTbG93UGF0
aChfc2xvd19wYXRoX2NvcHlfcmVzdCkKICAgICBkaXNwYXRjaCg0KQogCitfbGxpbnRfb3Bfbm9w
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBkaXNwYXRjaCgxKQorCiAKICMgTGFzdGx5LCBt
YWtlIHN1cmUgdGhhdCB3ZSBjYW4gbGluayBldmVuIHRob3VnaCB3ZSBkb24ndCBzdXBwb3J0IGFs
bCBvcGNvZGVzLgogIyBUaGVzZSBvcGNvZGVzIHNob3VsZCBuZXZlciBhcmlzZSB3aGVuIHVzaW5n
IExMSW50IG9yIGVpdGhlciBKSVQuIFdlIGFzc2VydApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20gYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQppbmRleCA4NTE3M2JjODI2
MjE0NmIwZTBkMWUwMTkyYjcwNjAyOGJiZDkwNjgzLi40OTJjNjNjMjVjZGZhZTMyZmY5ZWViOGE0
ZDE5N2U1ODU1MzE5YWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQpAQCAtMjMyMSwzICsyMzIxLDE4IEBAIF9sbGlu
dF9vcF9nZXRfcmVzdF9sZW5ndGg6CiAgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDEsIHQxKQog
ICAgIHN0b3JlcSB0MCwgW2NmciwgdDEsIDhdCiAgICAgZGlzcGF0Y2goMykKKworX2xsaW50X29w
X2NsZWFyX2dlbmVyYXRvcl9mcmFtZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZFZh
cmlhYmxlKDEsIHQwKQorICAgIHN0b3JlaSAwLCBHZW5lcmF0b3JGcmFtZTo6bV9udW1iZXJPZlNh
dmVkQ2FsbGVlTG9jYWxzW3QwXQorICAgIGRpc3BhdGNoKDIpCisKK19sbGludF9vcF9yZXN1bWVf
ZnJvbV9nZW5lcmF0b3JfZnJhbWU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRWYXJp
YWJsZSgyLCB0MCkKKyAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMywgdDEpCisgICAgbG9hZHEg
R2VuZXJhdG9yRnJhbWVfY2FsbGVlTG9jYWxzW3QwLCB0MSwgOF0sIHQwCisgICAgbG9hZGlzRnJv
bUluc3RydWN0aW9uKDEsIHQxKQorICAgIHN0b3JlcSB0MCwgW2NmciwgdDEsIDhdCisgICAgZGlz
cGF0Y2goNCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2Vy
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAppbmRleCA4ZDM3
MDYzNDUxMjhlOWRmOWRhYzMyNTdmN2M1ZjRlNWFiM2E5YzM0Li5lODYwNTNiNDgyYThkMzZiMzM1
YzA4YmE3ZDM2NzU2ZDNiNzk2YWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1BhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJz
ZXIuY3BwCkBAIC0yNTAsOSArMjUwLDEwIEBACiAgICAgYm9vbCBpc0Fycm93RnVuY3Rpb25Cb2R5
RXhwcmVzc2lvbiA9IGZhbHNlOwogICAgIGlmIChtX2xleGVyLT5pc1JlcGFyc2luZ0Z1bmN0aW9u
KCkpIHsKICAgICAgICAgUGFyc2VyRnVuY3Rpb25JbmZvPEFTVEJ1aWxkZXI+IGZ1bmN0aW9uSW5m
bzsKLSAgICAgICAgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckJv
ZHlNb2RlKQotICAgICAgICAgICAgZnVuY3Rpb25JbmZvLnBhcmFtZXRlcnMgPSBjcmVhdGVHZW5l
cmF0b3JQYXJhbWV0ZXJzKGNvbnRleHQpOwotICAgICAgICBlbHNlCisgICAgICAgIGlmIChwYXJz
ZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JCb2R5TW9kZSkgeworICAgICAgICAg
ICAgdW5zaWduZWQgcGFyYW1ldGVyQ291bnQgPSAwOworICAgICAgICAgICAgZnVuY3Rpb25JbmZv
LnBhcmFtZXRlcnMgPSBjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKGNvbnRleHQsIHBhcmFtZXRl
ckNvdW50KTsKKyAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBwYXJzZUZ1bmN0aW9uUGFyYW1l
dGVycyhjb250ZXh0LCBwYXJzZU1vZGUsIGZ1bmN0aW9uSW5mbyk7CiAgICAgICAgIG1fcGFyYW1l
dGVycyA9IGZ1bmN0aW9uSW5mby5wYXJhbWV0ZXJzOwogCkBAIC00ODUsMTAgKzQ4Niw5IEBACiAK
ICAgICBQYXJzZXJGdW5jdGlvbkluZm88VHJlZUJ1aWxkZXI+IGluZm87CiAgICAgaW5mby5uYW1l
ID0gJm1fdm0tPnByb3BlcnR5TmFtZXMtPm51bGxJZGVudGlmaWVyOwotICAgIGluZm8ucGFyYW1l
dGVycyA9IGNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMoY29udGV4dCk7CisgICAgaW5mby5wYXJh
bWV0ZXJzID0gY3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhjb250ZXh0LCBpbmZvLnBhcmFtZXRl
ckNvdW50KTsKICAgICBpbmZvLnN0YXJ0T2Zmc2V0ID0gcGFyYW1ldGVyc1N0YXJ0OwogICAgIGlu
Zm8uc3RhcnRMaW5lID0gdG9rZW5MaW5lKCk7Ci0gICAgaW5mby5wYXJhbWV0ZXJDb3VudCA9IDQ7
IC8vIGdlbmVyYXRvciwgc3RhdGUsIHZhbHVlLCByZXN1bWUgbW9kZQogCiAgICAgewogICAgICAg
ICBBdXRvUG9wU2NvcGVSZWYgZ2VuZXJhdG9yQm9keVNjb3BlKHRoaXMsIHB1c2hTY29wZSgpKTsK
QEAgLTE3ODEsMzIgKzE3ODEsMzAgQEAgc3RhdGljIGNvbnN0IGNoYXIqIHN0cmluZ0ZvckZ1bmN0
aW9uTW9kZShTb3VyY2VQYXJzZU1vZGUgbW9kZSkKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIExl
eGVyVHlwZT4KLXRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gdHlwZW5hbWUgVHJlZUJ1aWxk
ZXI6OkZvcm1hbFBhcmFtZXRlckxpc3QgUGFyc2VyPExleGVyVHlwZT46OmNyZWF0ZUdlbmVyYXRv
clBhcmFtZXRlcnMoVHJlZUJ1aWxkZXImIGNvbnRleHQpCit0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1
aWxkZXI+IHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpGb3JtYWxQYXJhbWV0ZXJMaXN0IFBhcnNlcjxM
ZXhlclR5cGU+OjpjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKFRyZWVCdWlsZGVyJiBjb250ZXh0
LCB1bnNpZ25lZCYgcGFyYW1ldGVyQ291bnQpCiB7CiAgICAgYXV0byBwYXJhbWV0ZXJzID0gY29u
dGV4dC5jcmVhdGVGb3JtYWxQYXJhbWV0ZXJMaXN0KCk7CiAKICAgICBKU1Rva2VuTG9jYXRpb24g
bG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKICAgICBKU1RleHRQb3NpdGlvbiBwb3NpdGlvbiA9
IHRva2VuU3RhcnRQb3NpdGlvbigpOwogCi0gICAgLy8gQGdlbmVyYXRvcgotICAgIGRlY2xhcmVQ
YXJhbWV0ZXIoJm1fdm0tPnByb3BlcnR5TmFtZXMtPmdlbmVyYXRvclByaXZhdGVOYW1lKTsKLSAg
ICBhdXRvIGdlbmVyYXRvciA9IGNvbnRleHQuY3JlYXRlQmluZGluZ0xvY2F0aW9uKGxvY2F0aW9u
LCBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5nZW5lcmF0b3JQcml2YXRlTmFtZSwgcG9zaXRpb24sIHBv
c2l0aW9uLCBBc3NpZ25tZW50Q29udGV4dDo6RGVjbGFyYXRpb25TdGF0ZW1lbnQpOwotICAgIGNv
bnRleHQuYXBwZW5kUGFyYW1ldGVyKHBhcmFtZXRlcnMsIGdlbmVyYXRvciwgMCk7CisgICAgYXV0
byBhZGRQYXJhbWV0ZXIgPSBbJl0oY29uc3QgSWRlbnRpZmllciYgbmFtZSkgeworICAgICAgICBk
ZWNsYXJlUGFyYW1ldGVyKCZuYW1lKTsKKyAgICAgICAgYXV0byBiaW5kaW5nID0gY29udGV4dC5j
cmVhdGVCaW5kaW5nTG9jYXRpb24obG9jYXRpb24sIG5hbWUsIHBvc2l0aW9uLCBwb3NpdGlvbiwg
QXNzaWdubWVudENvbnRleHQ6OkRlY2xhcmF0aW9uU3RhdGVtZW50KTsKKyAgICAgICAgY29udGV4
dC5hcHBlbmRQYXJhbWV0ZXIocGFyYW1ldGVycywgYmluZGluZywgMCk7CisgICAgICAgICsrcGFy
YW1ldGVyQ291bnQ7CisgICAgfTsKIAorICAgIC8vIEBnZW5lcmF0b3IKKyAgICBhZGRQYXJhbWV0
ZXIobV92bS0+cHJvcGVydHlOYW1lcy0+Z2VuZXJhdG9yUHJpdmF0ZU5hbWUpOwogICAgIC8vIEBn
ZW5lcmF0b3JTdGF0ZQotICAgIGRlY2xhcmVQYXJhbWV0ZXIoJm1fdm0tPnByb3BlcnR5TmFtZXMt
PmdlbmVyYXRvclN0YXRlUHJpdmF0ZU5hbWUpOwotICAgIGF1dG8gZ2VuZXJhdG9yU3RhdGUgPSBj
b250ZXh0LmNyZWF0ZUJpbmRpbmdMb2NhdGlvbihsb2NhdGlvbiwgbV92bS0+cHJvcGVydHlOYW1l
cy0+Z2VuZXJhdG9yU3RhdGVQcml2YXRlTmFtZSwgcG9zaXRpb24sIHBvc2l0aW9uLCBBc3NpZ25t
ZW50Q29udGV4dDo6RGVjbGFyYXRpb25TdGF0ZW1lbnQpOwotICAgIGNvbnRleHQuYXBwZW5kUGFy
YW1ldGVyKHBhcmFtZXRlcnMsIGdlbmVyYXRvclN0YXRlLCAwKTsKLQorICAgIGFkZFBhcmFtZXRl
cihtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5nZW5lcmF0b3JTdGF0ZVByaXZhdGVOYW1lKTsKICAgICAv
LyBAZ2VuZXJhdG9yVmFsdWUKLSAgICBkZWNsYXJlUGFyYW1ldGVyKCZtX3ZtLT5wcm9wZXJ0eU5h
bWVzLT5nZW5lcmF0b3JWYWx1ZVByaXZhdGVOYW1lKTsKLSAgICBhdXRvIGdlbmVyYXRvclZhbHVl
ID0gY29udGV4dC5jcmVhdGVCaW5kaW5nTG9jYXRpb24obG9jYXRpb24sIG1fdm0tPnByb3BlcnR5
TmFtZXMtPmdlbmVyYXRvclZhbHVlUHJpdmF0ZU5hbWUsIHBvc2l0aW9uLCBwb3NpdGlvbiwgQXNz
aWdubWVudENvbnRleHQ6OkRlY2xhcmF0aW9uU3RhdGVtZW50KTsKLSAgICBjb250ZXh0LmFwcGVu
ZFBhcmFtZXRlcihwYXJhbWV0ZXJzLCBnZW5lcmF0b3JWYWx1ZSwgMCk7Ci0KKyAgICBhZGRQYXJh
bWV0ZXIobV92bS0+cHJvcGVydHlOYW1lcy0+Z2VuZXJhdG9yVmFsdWVQcml2YXRlTmFtZSk7CiAg
ICAgLy8gQGdlbmVyYXRvclJlc3VtZU1vZGUKLSAgICBkZWNsYXJlUGFyYW1ldGVyKCZtX3ZtLT5w
cm9wZXJ0eU5hbWVzLT5nZW5lcmF0b3JSZXN1bWVNb2RlUHJpdmF0ZU5hbWUpOwotICAgIGF1dG8g
Z2VuZXJhdG9yUmVzdW1lTW9kZSA9IGNvbnRleHQuY3JlYXRlQmluZGluZ0xvY2F0aW9uKGxvY2F0
aW9uLCBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5nZW5lcmF0b3JSZXN1bWVNb2RlUHJpdmF0ZU5hbWUs
IHBvc2l0aW9uLCBwb3NpdGlvbiwgQXNzaWdubWVudENvbnRleHQ6OkRlY2xhcmF0aW9uU3RhdGVt
ZW50KTsKLSAgICBjb250ZXh0LmFwcGVuZFBhcmFtZXRlcihwYXJhbWV0ZXJzLCBnZW5lcmF0b3JS
ZXN1bWVNb2RlLCAwKTsKKyAgICBhZGRQYXJhbWV0ZXIobV92bS0+cHJvcGVydHlOYW1lcy0+Z2Vu
ZXJhdG9yUmVzdW1lTW9kZVByaXZhdGVOYW1lKTsKKyAgICAvLyBAZ2VuZXJhdG9yRnJhbWUKKyAg
ICBhZGRQYXJhbWV0ZXIobV92bS0+cHJvcGVydHlOYW1lcy0+Z2VuZXJhdG9yRnJhbWVQcml2YXRl
TmFtZSk7CiAKICAgICByZXR1cm4gcGFyYW1ldGVyczsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1BhcnNlci5oCmluZGV4IGExMWIzNWMxMDFmZTViODQ5Y2IyMzMwOTZjNTY4MzEzNzA2NmNh
YmYuLmU2MTQ5YTNhYzM2OTQwNDg5M2QyMzY5NjkzMTZiNWMzMDMzYmU4NTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaApAQCAtMTI1OSw3ICsxMjU5LDcgQEAgY2xhc3MgUGFy
c2VyIHsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElORSBib29s
IHBhcnNlRnVuY3Rpb25JbmZvKFRyZWVCdWlsZGVyJiwgRnVuY3Rpb25SZXF1aXJlbWVudHMsIFNv
dXJjZVBhcnNlTW9kZSwgYm9vbCBuYW1lSXNJbkNvbnRhaW5pbmdTY29wZSwgQ29uc3RydWN0b3JL
aW5kLCBTdXBlckJpbmRpbmcsIGludCBmdW5jdGlvbktleXdvcmRTdGFydCwgUGFyc2VyRnVuY3Rp
b25JbmZvPFRyZWVCdWlsZGVyPiYsIEZ1bmN0aW9uRGVmaW5pdGlvblR5cGUpOwogICAgIAogICAg
IHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gTkVWRVJfSU5MSU5FIGludCBwYXJzZUZ1bmN0
aW9uUGFyYW1ldGVycyhUcmVlQnVpbGRlciYsIFNvdXJjZVBhcnNlTW9kZSwgUGFyc2VyRnVuY3Rp
b25JbmZvPFRyZWVCdWlsZGVyPiYpOwotICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4g
TkVWRVJfSU5MSU5FIHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpGb3JtYWxQYXJhbWV0ZXJMaXN0IGNy
ZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMoVHJlZUJ1aWxkZXImKTsKKyAgICB0ZW1wbGF0ZSA8Y2xh
c3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElORSB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6Rm9ybWFs
UGFyYW1ldGVyTGlzdCBjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKFRyZWVCdWlsZGVyJiwgdW5z
aWduZWQmIHBhcmFtZXRlckNvdW50KTsKIAogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRl
cj4gTkVWRVJfSU5MSU5FIFRyZWVDbGFzc0V4cHJlc3Npb24gcGFyc2VDbGFzcyhUcmVlQnVpbGRl
ciYsIEZ1bmN0aW9uUmVxdWlyZW1lbnRzLCBQYXJzZXJDbGFzc0luZm88VHJlZUJ1aWxkZXI+Jik7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQ
YXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMu
Y3BwCmluZGV4IDc4YjQzYzRkMzg5ZmY3YTkwODMxM2I1NTQwNTcwZTg4MmUxYjAzNzEuLmQzZmZi
OTc2NWYzNTFjZDE1MGExZjhhZWEwNGJhNjRhNmU3ZDA1NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcApAQCAtNjk3LDMzICs2OTcs
MTIgQEAgc3RhdGljIHZvaWQgdXBkYXRlUmVzdWx0UHJvZmlsZUZvckJpbmFyeUFyaXRoT3AoRXhl
Y1N0YXRlKiwgSW5zdHJ1Y3Rpb24qLCBKU1ZhbHUKICAgICAvLyBPbmx5IHNhdmUgdmFyaWFibGVz
IGFuZCB0ZW1wb3JhcnkgcmVnaXN0ZXJzLiBUaGUgc2NvcGUgcmVnaXN0ZXJzIGFyZSBpbmNsdWRl
ZCBpbiB0aGVtLgogICAgIC8vIEJ1dCBwYXJhbWV0ZXJzIGFyZSBub3QgaW5jbHVkZWQuIEJlY2F1
c2UgdGhlIGdlbmVyYXRvciBpbXBsZW1lbnRhdGlvbiByZXBsYWNlcyB0aGUgdmFsdWVzIG9mIHBh
cmFtZXRlcnMgb24gZWFjaCBnZW5lcmF0b3IubmV4dCgpIGNhbGwuCiAgICAgQkVHSU4oKTsKLSAg
ICBKU1ZhbHVlIGdlbmVyYXRvciA9IE9QKDEpLmpzVmFsdWUoKTsKLSAgICBHZW5lcmF0b3JGcmFt
ZSogZnJhbWUgPSBudWxscHRyOwotICAgIEpTVmFsdWUgdmFsdWUgPSBnZW5lcmF0b3IuZ2V0KGV4
ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5nZW5lcmF0b3JGcmFtZVByaXZhdGVOYW1lKTsKLSAg
ICBpZiAoIXZhbHVlLmlzTnVsbCgpKQotICAgICAgICBmcmFtZSA9IGpzQ2FzdDxHZW5lcmF0b3JG
cmFtZSo+KHZhbHVlKTsKLSAgICBlbHNlIHsKLSAgICAgICAgLy8gRklYTUU6IE9uY2UgSlNHZW5l
cmF0b3Igc3BlY2lhbGl6ZWQgb2JqZWN0IGlzIGludHJvZHVjZWQsIHRoaXMgR2VuZXJhdG9yRnJh
bWUgc2hvdWxkIGJlIGVtYmVkZWQgaW50byBpdCB0byBhdm9pZCBhbGxvY2F0aW9ucy4KLSAgICAg
ICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTU0NQotICAg
ICAgICBmcmFtZSA9IEdlbmVyYXRvckZyYW1lOjpjcmVhdGUoZXhlYy0+dm0oKSwgIGV4ZWMtPmNv
ZGVCbG9jaygpLT5udW1DYWxsZWVMb2NhbHMoKSk7Ci0gICAgICAgIFB1dFByb3BlcnR5U2xvdCBz
bG90KGdlbmVyYXRvciwgdHJ1ZSwgUHV0UHJvcGVydHlTbG90OjpQdXRCeUlkKTsKLSAgICAgICAg
YXNPYmplY3QoZ2VuZXJhdG9yKS0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPnB1dChhc09iamVj
dChnZW5lcmF0b3IpLCBleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuZ2VuZXJhdG9yRnJhbWVQ
cml2YXRlTmFtZSwgZnJhbWUsIHNsb3QpOwotICAgIH0KKyAgICBHZW5lcmF0b3JGcmFtZSogZnJh
bWUgPSBqc0Nhc3Q8R2VuZXJhdG9yRnJhbWUqPihPUCgxKS5qc1ZhbHVlKCkpOwogICAgIHVuc2ln
bmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9IHBjWzJdLnUudW5zaWduZWRWYWx1ZTsKICAgICBm
cmFtZS0+c2F2ZShleGVjLCBleGVjLT5jb2RlQmxvY2soKS0+bGl2ZUNhbGxlZUxvY2Fsc0F0WWll
bGQobGl2ZUNhbGxlZUxvY2Fsc0luZGV4KSk7CiAgICAgRU5EKCk7CiB9CiAKLVNMT1dfUEFUSF9E
RUNMKHNsb3dfcGF0aF9yZXN1bWUpCi17Ci0gICAgQkVHSU4oKTsKLSAgICBKU1ZhbHVlIGdlbmVy
YXRvciA9IE9QKDEpLmpzVmFsdWUoKTsKLSAgICBHZW5lcmF0b3JGcmFtZSogZnJhbWUgPSBqc0Nh
c3Q8R2VuZXJhdG9yRnJhbWUqPihnZW5lcmF0b3IuZ2V0KGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFt
ZXMoKS5nZW5lcmF0b3JGcmFtZVByaXZhdGVOYW1lKSk7Ci0gICAgdW5zaWduZWQgbGl2ZUNhbGxl
ZUxvY2Fsc0luZGV4ID0gcGNbMl0udS51bnNpZ25lZFZhbHVlOwotICAgIGZyYW1lLT5yZXN1bWUo
ZXhlYywgZXhlYy0+Y29kZUJsb2NrKCktPmxpdmVDYWxsZWVMb2NhbHNBdFlpZWxkKGxpdmVDYWxs
ZWVMb2NhbHNJbmRleCkpOwotICAgIEVORCgpOwotfQotCiBTTE9XX1BBVEhfREVDTChzbG93X3Bh
dGhfY3JlYXRlX2xleGljYWxfZW52aXJvbm1lbnQpCiB7CiAgICAgQkVHSU4oKTsKQEAgLTc5Nyw0
ICs3NzYsMTIgQEAgc3RhdGljIHZvaWQgdXBkYXRlUmVzdWx0UHJvZmlsZUZvckJpbmFyeUFyaXRo
T3AoRXhlY1N0YXRlKiwgSW5zdHJ1Y3Rpb24qLCBKU1ZhbHUKICAgICBFTkQoKTsKIH0KIAorU0xP
V19QQVRIX0RFQ0woc2xvd19wYXRoX25ld19nZW5lcmF0b3JfZnJhbWUpCit7CisgICAgQkVHSU4o
KTsKKyAgICB1bnNpZ25lZCBnZW5lcmF0b3JGcmFtZVNpemUgPSBwY1syXS51LnVuc2lnbmVkVmFs
dWU7CisgICAgUkVUVVJOKEdlbmVyYXRvckZyYW1lOjpjcmVhdGUoZXhlYywgZ2VuZXJhdG9yRnJh
bWVTaXplKSk7Cit9CisKKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCmluZGV4IGYwMGQ4NzA1ZDRlNjdmZTRk
NDA1OWJkZTE2OGVlODhmNTdkZjcyZTcuLjA2NTBjNGU4Y2I3MTU1OTE3Y2QxZDdhMmY3N2E3Yzdm
NzI5YTE1NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1v
blNsb3dQYXRocy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNs
b3dQYXRocy5oCkBAIC0yOTYsNiArMjk2LDcgQEAgaW5saW5lIHZvaWQgZGVjb2RlUmVzdWx0KFNs
b3dQYXRoUmV0dXJuVHlwZSByZXN1bHQsIHZvaWQqJiBhLCB2b2lkKiYgYikKIFNMT1dfUEFUSF9I
SURERU5fREVDTChzbG93X3BhdGhfcHVzaF93aXRoX3Njb3BlKTsKIFNMT1dfUEFUSF9ISURERU5f
REVDTChzbG93X3BhdGhfcmVzb2x2ZV9zY29wZSk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xv
d19wYXRoX2NvcHlfcmVzdCk7CitTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX25ld19n
ZW5lcmF0b3JfZnJhbWUpOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJhbWUuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJhbWUuY3BwCmluZGV4IGVmNmVhN2ExMDAy
NThjM2VjZTA0ZGFhYjQzYmRhYTg1MWVjOGY3MTUuLmYwOTIzYTAwNWMyYjNhNmJlM2IyZGVmNzQy
YWVkMjQ5ZTRlODQ1OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0dlbmVyYXRvckZyYW1lLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9H
ZW5lcmF0b3JGcmFtZS5jcHAKQEAgLTMwLDYwICszMCw2MSBAQAogI2luY2x1ZGUgIkhlYXBJdGVy
YXRpb25TY29wZS5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAi
SlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTT2JqZWN0SW5saW5lcy5oIgogI2luY2x1ZGUg
IlNsb3RWaXNpdG9ySW5saW5lcy5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKIAog
bmFtZXNwYWNlIEpTQyB7CiAKLWNvbnN0IENsYXNzSW5mbyBHZW5lcmF0b3JGcmFtZTo6c19pbmZv
ID0geyAiR2VuZXJhdG9yRnJhbWUiLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RB
QkxFKEdlbmVyYXRvckZyYW1lKSB9OworY29uc3QgQ2xhc3NJbmZvIEdlbmVyYXRvckZyYW1lOjpz
X2luZm8gPSB7ICJHZW5lcmF0b3JGcmFtZSIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIENSRUFU
RV9NRVRIT0RfVEFCTEUoR2VuZXJhdG9yRnJhbWUpIH07CiAKLUdlbmVyYXRvckZyYW1lOjpHZW5l
cmF0b3JGcmFtZShWTSYgdm0sIHNpemVfdCBudW1iZXJPZkNhbGxlZUxvY2FscykKLSAgICA6IEJh
c2Uodm0sIHZtLmdlbmVyYXRvckZyYW1lU3RydWN0dXJlLmdldCgpKQorR2VuZXJhdG9yRnJhbWU6
OkdlbmVyYXRvckZyYW1lKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHVpbnQzMl90IG51
bWJlck9mQ2FsbGVlTG9jYWxzKQorICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQogICAgICwgbV9u
dW1iZXJPZkNhbGxlZUxvY2FscyhudW1iZXJPZkNhbGxlZUxvY2FscykKIHsKIH0KIAotdm9pZCBH
ZW5lcmF0b3JGcmFtZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQotewotICAgIEJhc2U6OmZpbmlz
aENyZWF0aW9uKHZtKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fbnVtYmVyT2ZDYWxs
ZWVMb2NhbHM7ICsraSkKLSAgICAgICAgbG9jYWxBdChpKS5jbGVhcigpOwotfQotCiBTdHJ1Y3R1
cmUqIEdlbmVyYXRvckZyYW1lOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKIHsKLSAgICByZXR1cm4gU3RydWN0
dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhDZWxsVHlw
ZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0
ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVj
dHVyZUZsYWdzKSwgaW5mbygpKTsKIH0KIAotR2VuZXJhdG9yRnJhbWUqIEdlbmVyYXRvckZyYW1l
OjpjcmVhdGUoVk0mIHZtLCBzaXplX3QgbnVtYmVyT2ZMb2NhbHMpCitHZW5lcmF0b3JGcmFtZSog
R2VuZXJhdG9yRnJhbWU6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBzaXpl
X3QgbnVtYmVyT2ZDYWxsZWVMb2NhbHMpCiB7CiAgICAgR2VuZXJhdG9yRnJhbWUqIHJlc3VsdCA9
CiAgICAgICAgIG5ldyAoCiAgICAgICAgICAgICBOb3ROdWxsLAotICAgICAgICAgICAgYWxsb2Nh
dGVDZWxsPEdlbmVyYXRvckZyYW1lPih2bS5oZWFwLCBhbGxvY2F0aW9uU2l6ZUZvckxvY2Fscyhu
dW1iZXJPZkxvY2FscykpKQotICAgICAgICBHZW5lcmF0b3JGcmFtZSh2bSwgbnVtYmVyT2ZMb2Nh
bHMpOworICAgICAgICAgICAgYWxsb2NhdGVDZWxsPEdlbmVyYXRvckZyYW1lPih2bS5oZWFwLCBh
bGxvY2F0aW9uU2l6ZUZvckxvY2FscyhudW1iZXJPZkNhbGxlZUxvY2FscykpKQorICAgICAgICBH
ZW5lcmF0b3JGcmFtZSh2bSwgc3RydWN0dXJlLCBudW1iZXJPZkNhbGxlZUxvY2Fscyk7CiAgICAg
cmVzdWx0LT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorR2Vu
ZXJhdG9yRnJhbWUqIEdlbmVyYXRvckZyYW1lOjpjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBzaXpl
X3QgbnVtYmVyT2ZDYWxsZWVMb2NhbHMpCit7CisgICAgcmV0dXJuIGNyZWF0ZShleGVjLT52bSgp
LCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmdlbmVyYXRvckZyYW1lU3RydWN0dXJlKCks
IG51bWJlck9mQ2FsbGVlTG9jYWxzKTsKK30KKwogdm9pZCBHZW5lcmF0b3JGcmFtZTo6c2F2ZShF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEZhc3RCaXRWZWN0b3ImIGxpdmVDYWxsZWVMb2NhbHMpCiB7
CiAgICAgLy8gT25seSBzYXZlIGNhbGxlZSBsb2NhbHMuCiAgICAgLy8gRXZlcnkgdGltZSBhIGdl
bmVyYXRvciBpcyBjYWxsZWQgKG9yIHJlc3VtZWQpLCBwYXJhbWV0ZXJzIHNob3VsZCBiZSByZXBs
YWNlZC4KLSAgICBBU1NFUlQobGl2ZUNhbGxlZUxvY2Fscy5udW1CaXRzKCkgPD0gbV9udW1iZXJP
ZkNhbGxlZUxvY2Fscyk7CisgICAgdW5zaWduZWQgZ2VuZXJhdG9yRnJhbWVJbmRleCA9IDA7CiAg
ICAgbGl2ZUNhbGxlZUxvY2Fscy5mb3JFYWNoU2V0Qml0KFsmXShzaXplX3QgaW5kZXgpIHsKLSAg
ICAgICAgbG9jYWxBdChpbmRleCkuc2V0KGV4ZWMtPnZtKCksIHRoaXMsIGV4ZWMtPnVuY2hlY2tl
ZFIodmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaW5kZXgpKS5qc1ZhbHVlKCkpOworICAgICAgICBs
b2NhbEF0KGdlbmVyYXRvckZyYW1lSW5kZXgrKykuc2V0KGV4ZWMtPnZtKCksIHRoaXMsIGV4ZWMt
PnVuY2hlY2tlZFIodmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaW5kZXgpKS5qc1ZhbHVlKCkpOwog
ICAgIH0pOworICAgIG1fbnVtYmVyT2ZTYXZlZENhbGxlZUxvY2FscyA9IGdlbmVyYXRvckZyYW1l
SW5kZXg7CiB9CiAKIHZvaWQgR2VuZXJhdG9yRnJhbWU6OnJlc3VtZShFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IEZhc3RCaXRWZWN0b3ImIGxpdmVDYWxsZWVMb2NhbHMpCiB7CiAgICAgLy8gT25seSBy
ZXN1bWUgY2FsbGVlIGxvY2Fscy4KICAgICAvLyBFdmVyeSB0aW1lIGEgZ2VuZXJhdG9yIGlzIGNh
bGxlZCAob3IgcmVzdW1lZCksIHBhcmFtZXRlcnMgc2hvdWxkIGJlIHJlcGxhY2VkLgorICAgIHVu
c2lnbmVkIGdlbmVyYXRvckZyYW1lSW5kZXggPSAwOwogICAgIGxpdmVDYWxsZWVMb2NhbHMuZm9y
RWFjaFNldEJpdChbJl0oc2l6ZV90IGluZGV4KSB7Ci0gICAgICAgIGV4ZWMtPnVuY2hlY2tlZFIo
dmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaW5kZXgpKSA9IGxvY2FsQXQoaW5kZXgpLmdldCgpOwot
ICAgICAgICBsb2NhbEF0KGluZGV4KS5jbGVhcigpOworICAgICAgICBleGVjLT51bmNoZWNrZWRS
KHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGluZGV4KSkgPSBsb2NhbEF0KGdlbmVyYXRvckZyYW1l
SW5kZXgrKykuZ2V0KCk7CiAgICAgfSk7CisgICAgbV9udW1iZXJPZlNhdmVkQ2FsbGVlTG9jYWxz
ID0gMDsKIH0KIAogdm9pZCBHZW5lcmF0b3JGcmFtZTo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNl
bGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQpAQCAtOTEsNyArOTIsMTIgQEAgdm9pZCBHZW5lcmF0
b3JGcmFtZTo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9y
KQogICAgIEdlbmVyYXRvckZyYW1lKiB0aGlzT2JqZWN0ID0ganNDYXN0PEdlbmVyYXRvckZyYW1l
Kj4oY2VsbCk7CiAgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsK
ICAgICAvLyBTaW5jZSBvbmx5IHRydWUgY2VsbCBwb2ludGVycyBhcmUgc3RvcmVkIGFzIGEgY2Vs
bCwgd2UgY2FuIHNhZmVseSBtYXJrIHRoZW0uCi0gICAgdmlzaXRvci5hcHBlbmRWYWx1ZXModGhp
c09iamVjdC0+bG9jYWxzKCksIHRoaXNPYmplY3QtPm1fbnVtYmVyT2ZDYWxsZWVMb2NhbHMpOwor
ICAgIHZpc2l0b3IuYXBwZW5kVmFsdWVzKHRoaXNPYmplY3QtPmxvY2FscygpLCB0aGlzT2JqZWN0
LT5tX251bWJlck9mU2F2ZWRDYWxsZWVMb2NhbHMpOworICAgIC8vIENsZWFyIG5vdCB1c2VkIGNh
bGxlZSBsb2NhbHMgd2hlbiBtYXJraW5nLgorICAgIC8vIFRoaXMgZW5zdXJlcyB0aGF0LCAiaWYg
YSBnaXZlbiBsb2NhbCBoYXMgYSB2YWx1ZSwgdGhpcyB2YWx1ZSBpcyBjb3JyZWN0bHkgbWFya2Vk
IGluIHRoZSBwcmV2aW91cyBtYXJraW5nIHBoYXNlIi4KKyAgICBzaXplX3QgcmVtYWluaW5nID0g
dGhpc09iamVjdC0+bV9udW1iZXJPZkNhbGxlZUxvY2FscyAtIHRoaXNPYmplY3QtPm1fbnVtYmVy
T2ZTYXZlZENhbGxlZUxvY2FsczsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJlbWFpbmlu
ZzsgKytpKQorICAgICAgICB0aGlzT2JqZWN0LT5sb2NhbEF0KHRoaXNPYmplY3QtPm1fbnVtYmVy
T2ZTYXZlZENhbGxlZUxvY2FscyArIGkpLmNsZWFyKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpT
QwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJh
bWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZyYW1lLmgKaW5k
ZXggM2Q1NDViMTQ3ZGQ0YWJmYjJiYmI5YjVhNzE5NGU4Zjc0ODQxYzQ5YS4uY2FiZTU4NzAwYTg4
MDVjODI2NWYwODM3MWNhYWQ3YTg4MTcyZmQ0NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJhbWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9HZW5lcmF0b3JGcmFtZS5oCkBAIC0yNywxMSArMjcsMTQgQEAKICNkZWZpbmUg
R2VuZXJhdG9yRnJhbWVfaAogCiAjaW5jbHVkZSAiSlNDZWxsLmgiCisjaW5jbHVkZSAiSlNPYmpl
Y3QuaCIKICNpbmNsdWRlIDx3dGYvRmFzdEJpdFZlY3Rvci5oPgogCiBuYW1lc3BhY2UgSlNDIHsK
IAotY2xhc3MgR2VuZXJhdG9yRnJhbWUgOiBwdWJsaWMgSlNDZWxsIHsKK2NsYXNzIExMSW50T2Zm
c2V0c0V4dHJhY3RvcjsKKworY2xhc3MgR2VuZXJhdG9yRnJhbWUgOiBwdWJsaWMgSlNOb25GaW5h
bE9iamVjdCB7CiAgICAgZnJpZW5kIGNsYXNzIEpJVDsKICNpZiBFTkFCTEUoREZHX0pJVCkKICAg
ICBmcmllbmQgY2xhc3MgREZHOjpTcGVjdWxhdGl2ZUpJVDsKQEAgLTM5LDEyICs0MiwxMiBAQCBj
bGFzcyBHZW5lcmF0b3JGcmFtZSA6IHB1YmxpYyBKU0NlbGwgewogI2VuZGlmCiAgICAgZnJpZW5k
IGNsYXNzIFZNOwogcHVibGljOgotICAgIHR5cGVkZWYgSlNDZWxsIEJhc2U7Ci0gICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gU3RydWN0dXJlSXNJbW1vcnRhbCB8IEJh
c2U6OlN0cnVjdHVyZUZsYWdzOworICAgIHR5cGVkZWYgSlNOb25GaW5hbE9iamVjdCBCYXNlOwog
CiAgICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKIAotICAgIHN0YXRpYyBHZW5lcmF0b3JGcmFtZSog
Y3JlYXRlKFZNJiwgc2l6ZV90IG51bWJlck9mQ2FsbGVlTG9jYWxzKTsKKyAgICBzdGF0aWMgR2Vu
ZXJhdG9yRnJhbWUqIGNyZWF0ZShFeGVjU3RhdGUqLCBzaXplX3QgbnVtYmVyT2ZDYWxsZWVMb2Nh
bHMpOworICAgIHN0YXRpYyBHZW5lcmF0b3JGcmFtZSogY3JlYXRlKFZNJiwgU3RydWN0dXJlKiwg
c2l6ZV90IG51bWJlck9mQ2FsbGVlTG9jYWxzKTsKIAogICAgIFdyaXRlQmFycmllckJhc2U8VW5r
bm93bj4qIGxvY2FscygpCiAgICAgewpAQCAtNTMsNyArNTYsNiBAQCBjbGFzcyBHZW5lcmF0b3JG
cmFtZSA6IHB1YmxpYyBKU0NlbGwgewogCiAgICAgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiYg
bG9jYWxBdChzaXplX3QgaW5kZXgpCiAgICAgewotICAgICAgICBBU1NFUlQoaW5kZXggPCBtX251
bWJlck9mQ2FsbGVlTG9jYWxzKTsKICAgICAgICAgcmV0dXJuIGxvY2FscygpW2luZGV4XTsKICAg
ICB9CiAKQEAgLTYyLDYgKzY0LDIxIEBAIGNsYXNzIEdlbmVyYXRvckZyYW1lIDogcHVibGljIEpT
Q2VsbCB7CiAgICAgICAgIHJldHVybiBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Y8c2l6ZW9mKFdy
aXRlQmFycmllcjxVbmtub3duPik+KHNpemVvZihHZW5lcmF0b3JGcmFtZSkpOwogICAgIH0KIAor
ICAgIHN0YXRpYyBzaXplX3QgbG9jYWxPZmZzZXQodW5zaWduZWQgaW5kZXgpCisgICAgeworICAg
ICAgICByZXR1cm4gb2Zmc2V0T2ZMb2NhbHMoKSArIGluZGV4ICogc2l6ZW9mKFdyaXRlQmFycmll
cjxVbmtub3duPik7CisgICAgfQorCisgICAgc3RhdGljIHNpemVfdCBudW1iZXJPZkNhbGxlZUxv
Y2Fsc09mZnNldCgpCisgICAgeworICAgICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEdlbmVy
YXRvckZyYW1lLCBtX251bWJlck9mQ2FsbGVlTG9jYWxzKTsKKyAgICB9CisKKyAgICBzdGF0aWMg
c2l6ZV90IG51bWJlck9mU2F2ZWRDYWxsZWVMb2NhbHNPZmZzZXQoKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIE9CSkVDVF9PRkZTRVRPRihHZW5lcmF0b3JGcmFtZSwgbV9udW1iZXJPZlNhdmVkQ2Fs
bGVlTG9jYWxzKTsKKyAgICB9CisKICAgICBzdGF0aWMgc2l6ZV90IGFsbG9jYXRpb25TaXplRm9y
TG9jYWxzKHVuc2lnbmVkIG51bWJlck9mTG9jYWxzKQogICAgIHsKICAgICAgICAgcmV0dXJuIG9m
ZnNldE9mTG9jYWxzKCkgKyBudW1iZXJPZkxvY2FscyAqIHNpemVvZihXcml0ZUJhcnJpZXI8VW5r
bm93bj4pOwpAQCAtNzMsMTQgKzkwLDEzIEBAIGNsYXNzIEdlbmVyYXRvckZyYW1lIDogcHVibGlj
IEpTQ2VsbCB7CiAgICAgdm9pZCByZXN1bWUoRXhlY1N0YXRlKiwgY29uc3QgRmFzdEJpdFZlY3Rv
ciYgbGl2ZUNhbGxlZUxvY2Fscyk7CiAKIHByaXZhdGU6Ci0gICAgR2VuZXJhdG9yRnJhbWUoVk0m
LCBzaXplX3QgbnVtYmVyT2ZDYWxsZWVMb2NhbHMpOworICAgIEdlbmVyYXRvckZyYW1lKFZNJiwg
U3RydWN0dXJlKiwgdWludDMyX3QgbnVtYmVyT2ZDYWxsZWVMb2NhbHMpOwogCi0gICAgc2l6ZV90
IG1fbnVtYmVyT2ZDYWxsZWVMb2NhbHM7CisgICAgdWludDMyX3QgbV9udW1iZXJPZkNhbGxlZUxv
Y2FsczsKKyAgICB1aW50MzJfdCBtX251bWJlck9mU2F2ZWRDYWxsZWVMb2NhbHMgeyAwIH07CiAK
ICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogCi0gICAgdm9pZCBmaW5p
c2hDcmVhdGlvbihWTSYpOwotCiBwcm90ZWN0ZWQ6CiAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGls
ZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCA3NjlhM2VmYjMwNDM4ZGNkOWRk
ZTQ0MmRjODg5NGExZjAzODJhNTA0Li44Y2I4NGFiZTVmODczOWEwMThlNjJlYTQ4ZjQ3MTQ0NDc5
NTUxZDNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuY3BwCkBAIC01MCw2ICs1MCw3IEBACiAjaW5jbHVkZSAiRXJyb3JQcm90b3R5cGUuaCIK
ICNpbmNsdWRlICJGdW5jdGlvbkNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiRnVuY3Rpb25Qcm90
b3R5cGUuaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JGcmFtZS5oIgogI2luY2x1ZGUgIkdlbmVyYXRv
ckZ1bmN0aW9uQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJHZW5lcmF0b3JGdW5jdGlvblByb3Rv
dHlwZS5oIgogI2luY2x1ZGUgIkdlbmVyYXRvclByb3RvdHlwZS5oIgpAQCAtMzg4LDYgKzM4OSw3
IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmluaXQoVk0mIHZtKQogICAgIAogICAgIEZPUl9FQUNI
X0JVSUxUSU5fREVSSVZFRF9JVEVSQVRPUl9UWVBFKENSRUFURV9QUk9UT1RZUEVfRk9SX0RFUklW
RURfSVRFUkFUT1JfVFlQRSkKICAgICBtX3Byb3BlcnR5TmFtZUl0ZXJhdG9yU3RydWN0dXJlLnNl
dCh2bSwgdGhpcywgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0
aGlzLCBtX2l0ZXJhdG9yUHJvdG90eXBlLmdldCgpKSk7CisgICAgbV9nZW5lcmF0b3JGcmFtZVN0
cnVjdHVyZS5zZXQodm0sIHRoaXMsIEdlbmVyYXRvckZyYW1lOjpjcmVhdGVTdHJ1Y3R1cmUodm0s
IHRoaXMsIGpzTnVsbCgpKSk7CiAgICAgbV9nZW5lcmF0b3JQcm90b3R5cGUuc2V0KHZtLCB0aGlz
LCBHZW5lcmF0b3JQcm90b3R5cGU6OmNyZWF0ZSh2bSwgdGhpcywgR2VuZXJhdG9yUHJvdG90eXBl
OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1faXRlcmF0b3JQcm90b3R5cGUuZ2V0KCkpKSk7
CiAgICAgCiAjdW5kZWYgQ1JFQVRFX1BST1RPVFlQRV9GT1JfREVSSVZFRF9JVEVSQVRPUl9UWVBF
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRl
eCBiNGZmMmZiNDEzZTBlNDQ2MjQ5MmE0OGEzZmQ1YTRjMjRlYTBiNzQxLi43MWQzOWVjOTI4M2Fk
OWU1OTAxMjQ0ZjAxMzZhMTM1OGY1NDRhOTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTI1NSw2ICsyNTUsNyBAQCBjbGFzcyBKU0ds
b2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBXcml0
ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2NhbGxiYWNrRnVuY3Rpb25TdHJ1Y3R1cmU7CiAgICAgV3Jp
dGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9jYWxsYmFja09iamVjdFN0cnVjdHVyZTsKICAgICBXcml0
ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3Byb3BlcnR5TmFtZUl0ZXJhdG9yU3RydWN0dXJlOworICAg
IFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fZ2VuZXJhdG9yRnJhbWVTdHJ1Y3R1cmU7CiAjaWYg
SlNDX09CSkNfQVBJX0VOQUJMRUQKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX29iamND
YWxsYmFja0Z1bmN0aW9uU3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1f
b2JqY1dyYXBwZXJPYmplY3RTdHJ1Y3R1cmU7CkBAIC01MDEsNiArNTAyLDcgQEAgY2xhc3MgSlNH
bG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgU3Ry
dWN0dXJlKiBjYWxsYmFja0Z1bmN0aW9uU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9jYWxs
YmFja0Z1bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBjYWxsYmFja09i
amVjdFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FsbGJhY2tPYmplY3RTdHJ1Y3R1cmUu
Z2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIHByb3BlcnR5TmFtZUl0ZXJhdG9yU3RydWN0dXJlKCkg
Y29uc3QgeyByZXR1cm4gbV9wcm9wZXJ0eU5hbWVJdGVyYXRvclN0cnVjdHVyZS5nZXQoKTsgfQor
ICAgIFN0cnVjdHVyZSogZ2VuZXJhdG9yRnJhbWVTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBt
X2dlbmVyYXRvckZyYW1lU3RydWN0dXJlLmdldCgpOyB9CiAjaWYgSlNDX09CSkNfQVBJX0VOQUJM
RUQKICAgICBTdHJ1Y3R1cmUqIG9iamNDYWxsYmFja0Z1bmN0aW9uU3RydWN0dXJlKCkgY29uc3Qg
eyByZXR1cm4gbV9vYmpjQ2FsbGJhY2tGdW5jdGlvblN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0
cnVjdHVyZSogb2JqY1dyYXBwZXJPYmplY3RTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX29i
amNXcmFwcGVyT2JqZWN0U3RydWN0dXJlLmdldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTS5jcHAKaW5kZXggMGU0NGMzNDYwZjlmOGYwZGNiMzVkOTEyZDc5NWY3Zjk4ZGZiN2Y0NS4u
MGVmMjVlNzI5YWE2ZTU1YzNkY2EwNjFjMjJiNjVhYTZmN2I1YjM0ZSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtMjQ2LDcgKzI0Niw2IEBAIHN0YXRpYyBib29sIGVuYWJs
ZUFzc2VtYmxlcihFeGVjdXRhYmxlQWxsb2NhdG9yJiBleGVjdXRhYmxlQWxsb2NhdG9yKQogICAg
IGluZmVycmVkVHlwZVN0cnVjdHVyZS5zZXQoKnRoaXMsIEluZmVycmVkVHlwZTo6Y3JlYXRlU3Ry
dWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIGluZmVycmVkVHlwZVRhYmxlU3RydWN0
dXJlLnNldCgqdGhpcywgSW5mZXJyZWRUeXBlVGFibGU6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywg
MCwganNOdWxsKCkpKTsKICAgICBmdW5jdGlvblJhcmVEYXRhU3RydWN0dXJlLnNldCgqdGhpcywg
RnVuY3Rpb25SYXJlRGF0YTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwot
ICAgIGdlbmVyYXRvckZyYW1lU3RydWN0dXJlLnNldCgqdGhpcywgR2VuZXJhdG9yRnJhbWU6OmNy
ZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICBleGNlcHRpb25TdHJ1Y3R1
cmUuc2V0KCp0aGlzLCBFeGNlcHRpb246OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxs
KCkpKTsKICAgICBwcm9taXNlRGVmZXJyZWRTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBKU1Byb21pc2VE
ZWZlcnJlZDo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIGludGVy
bmFsUHJvbWlzZURlZmVycmVkU3RydWN0dXJlLnNldCgqdGhpcywgSlNJbnRlcm5hbFByb21pc2VE
ZWZlcnJlZDo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNLmgKaW5kZXggYWVlMGFjMWYyMWI4NDUxYmM3NzY3NDQzYTBiMDVjYTA0
OGI0ZjQ5Yi4uMjM2MDgzNzBhOTgzNmQ4OTc3ZTQ5ZDcxZTY4YTgwOWI5YWM0NTM2MyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCkBAIC0zMTIsNyArMzEyLDYgQEAgY2xhc3MgVk0gOiBw
dWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Vk0+IHsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBp
bmZlcnJlZFR5cGVTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gaW5mZXJyZWRUeXBl
VGFibGVTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gZnVuY3Rpb25SYXJlRGF0YVN0
cnVjdHVyZTsKLSAgICBTdHJvbmc8U3RydWN0dXJlPiBnZW5lcmF0b3JGcmFtZVN0cnVjdHVyZTsK
ICAgICBTdHJvbmc8U3RydWN0dXJlPiBleGNlcHRpb25TdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0
cnVjdHVyZT4gcHJvbWlzZURlZmVycmVkU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+
IGludGVybmFsUHJvbWlzZURlZmVycmVkU3RydWN0dXJlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>269160</attachid>
            <date>2016-01-16 00:13:41 -0800</date>
            <delta_ts>2016-01-16 02:11:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-152723-20160116171310.patch</filename>
            <type>text/plain</type>
            <size>99007</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk1MDU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
ZDVkMzdhNWE2NzE2ZmQyMWY5YzRiYzhlZDg0OGZkNTlhZjU1NTgzLi4xMTViMTk1MTk2NDM3YWYw
MWE3ZWI0ZDdhOWI3NmNlZTgzODMyMzgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMDMgQEAKKzIwMTYtMDEtMTUgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgQ3JlYXRlIEdlbmVyYXRvckZyYW1lIHdpdGggdGhlIGJ5dGVjb2Rl
IG9wX25ld19nZW5lcmF0b3JfZnJhbWUgYW5kIG1ha2Ugb3Bfc2F2ZSAvIG9wX3Jlc3VtZSBERkcv
RlRMIGNhcGFibGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1MjcyMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEluIHRoaXMgcGF0Y2gsIHdlIGltcGxlbWVudCBERkcgLyBGVEwgY2FwYWJpbGUgRVM2IGdl
bmVyYXRvcnMuCisgICAgICAgIFdlIGludHJvZHVjZSB0aGUgc2V2ZXJhbCBieXRlY29kZXMgYW5k
IGNvbXBpbGUgdGhlbSBpbiBERkcgLyBGVEwuCisKKyAgICAgICAgLSBvcF9ub3AKKworICAgICAg
ICAgICAgTm9wIG9wZXJhdGlvbiBpbiB0aGUgYnl0ZWNvZGUuIFRoaXMgaXMgdXNlZCB0byByZXBy
ZXNlbnQgaG9sZXMgaW4gdGhlIGJ5dGVjb2RlIHN0cmVhbS4KKyAgICAgICAgICAgIFRoZXNlIGJ5
dGVjb2RlcyBjb3VsZCBiZSByZXBsYWNlZCAoU2ltaWxhciB0byB0aGUgTExWTSBwYXRjaHBvaW50
KS4KKworICAgICAgICAtIG9wX25ld19nZW5lcmF0b3JfZnJhbWUKKworICAgICAgICAgICAgQWxs
b2NhdGUgR2VuZXJhdG9yRnJhbWUgaW4gdGhlIGJ5dGVjb2RlIGluc3RlYWQgb2YgYWxsb2NhdGlu
ZyBpdCBpbiB0aGUgb3Bfc2F2ZS4KKworICAgICAgICAtIG9wX3NhdmVfaGludAorCisgICAgICAg
ICAgICBUaGlzIGlzIHByZXZpb3VzIG9wX3NhdmUuIFRoaXMgb3Bfc2F2ZV9oaW50IGlzIG9ubHkg
dXNlZCBmb3IgdGhlIGJ5dGVjb2RlIHVzZS1kZWYgYW5hbHlzaXMuIE9uY2UgdGhlIGFuYWx5c2lz
IGlzIGRvbmUgaW4gQ29kZUJsb2NrIGNyZWF0aW9uIHBoYXNlLAorICAgICAgICAgICAgd2Ugd2ls
bCBjb252ZXJ0IHRoaXMgYnl0ZWNvZGUgdG8gb3Bfc2F2ZS4KKyAgICAgICAgICAgIFdoaWxlIG9w
X3NhdmVfaGludCBoYXMgYSBwc2V1ZG8ganVtcCB0byB0aGUgZ2VuZXJhdG9yIGNvbnRpbnVhdGlv
biBtZXJnZSBwb2ludCwgb3Bfc2F2ZSBkb2VzIG5vdCBoYXZlIGl0LiBUaGlzIHBzZXVkbyBqdW1w
IGlzIG5lY2Vzc2FyeSBmb3IKKyAgICAgICAgICAgIHRoZSBieXRlY29kZSB1c2UtZGVmIGFuYWx5
c2lzLiBUaGlzIGJ5dGVjb2RlIHVzZS1kZWYgYW5hbHlzaXMgaXMgdXNlZCB0byBkaXNjb3ZlciBs
aXZlIHZhcmlhYmxlcyBpbiB0aGUgZ2VuZXJhdG9yIGNvbnRpbnVhdGlvbiBtZXJnZSBwb2ludC4K
KworICAgICAgICAgICAgVGhlIGdlbmVyYXRvciBjb250aW51YXRpb24gbWVyZ2UgcG9pbnQgaXMg
dGhlIHBvaW50IHRoYXQgbWVyZ2luZyB0aGUgMiBiYXNpYyBibG9ja3MsIHNhdmluZyBsb2NhbHMg
dG8gdGhlIGdlbmVyYXRvciBmcmFtZSBhbmQgcmVzbWluZyBsb2NhbHMgZnJvbQorICAgICAgICAg
ICAgdGhlIGdlbmVyYXRvciBmcmFtZS4KKworICAgICAgICAtIG9wX3NhdmUKKworICAgICAgICAg
ICAgU2ltaWxhciB0byB0aGUgcHJldmlvdXMgb3Bfc2F2ZS4gSXQgdXNlcyBsb2NhbHMgYW5kIHNh
dmVzIHRoZW0gdG8gdGhlIGdlbmVyYXRvciBmcmFtZS4gQXQgdGhhdCB0aW1lLCB3ZSB3aWxsIHNl
dCBHZW5lcmF0b3JGcmFtZTo6bV9udW1iZXJPZlNhdmVkQ2FsbGVlTG9jYWxzIGFzICpOKgorICAg
ICAgICAgICAgdG8gYWxsb2NhdGUgc3BhY2UgZm9yIHNhdmVkIGxvY2Fscy4KKworICAgICAgICAt
IG9wX3Jlc3VtZV9oaW50CisKKyAgICAgICAgICAgIFNpbWlsYXIgdG8gdGhlIG9wX3NhdmVfaGlu
dCwgdGhpcyBpcyBvbmx5IHVzZWQgZm9yIHRoZSBieXRlY29kZSB1c2UtZGVmIGFuYWx5c2lzLiBv
cF9yZXN1bWVfaGludCBsZWFkcyBzZXZlcmFsIG9wX25vcCBvcGVyYXRpb25zLgorICAgICAgICAg
ICAgQWZ0ZXIgdGhlIGFuYWx5c2lzLCB3ZSBleHBsb2l0IHRoZSBuZWVkZWQgZGVmcyBmb3IgdGhp
cyByZXN1bWUgcG9pbnQgYW5kIHJlcGxhY2UgdGhpcyBieXRlY29kZSBhbmQgb3Bfbm9wIHdpdGgg
b3BfcmVzdW1lX2Zyb21fZ2VuZXJhdG9yX2ZyYW1lIG9wZXJhdGlvbnMuCisgICAgICAgICAgICBU
aGlzIG1ha2VzIERGRyBTZXRMb2NhbCB0cmVhdG1lbnQgc2ltcGxlLiBXaGlsZSBvcF9yZXN1bWVf
aGludCBkZWZpbmVzIG11bHRpcGxlIGxvY2Fscywgb3BfcmVzdW1lX2Zyb21fZ2VuZXJhdG9yX2Zy
YW1lIG9ubHkgZGVmaW5lcyBvbmUgbG9jYWwgKGRzdCkuCisKKyAgICAgICAgLSBvcF9yZXN1bWVf
ZnJvbV9nZW5lcmF0b3JfZnJhbWUKKworICAgICAgICAgICAgVGhpcyByZXRyaWV2ZXMgbG9jYWwg
dmFyaWFibGUgZnJvbSB0aGUgZ2VuZXJhdG9yIGZyYW1lLiBvcF9yZXN1bWVfaGludCBhbmQgc3Vi
c2VxdWVudCBvcF9ub3Agd2lsbCBiZSByZXBsYWNlZCB3aXRoIHRoaXMuCisKKyAgICAgICAgLSBv
cF9jbGVhcl9nZW5lcmF0b3JfZnJhbWUKKworICAgICAgICAgICAgVGhpcyBjbGVhcnMgZ2VuZXJh
dG9yIGZyYW1lJ3MgbG9jYWxzIGJ5IHNldHRpbmcgR2VuZXJhdG9yRnJhbWU6Om1fbnVtYmVyT2ZT
YXZlZENhbGxlZUxvY2FscyBhcyAwLgorCisKKyAgICAgICAgQW5kIHdlIGludHJvZHVjZXMgc2V2
ZXJhbCBERkcgbm9kZXMuCisKKyAgICAgICAgLSBOZXdHZW5lcmF0b3JGcmFtZQorCisgICAgICAg
ICAgICBUaGlzIGp1c3QgYWxsb2NhdGVzIEdlbmVyYXRvckZyYW1lLgorCisgICAgICAgIC0gUHV0
R2VuZXJhdG9yRnJhbWVMb2NhbHMKKworICAgICAgICAgICAgVGhpcyBzZXQgR2VuZXJhdG9yRnJh
bWU6Om1fbnVtYmVyT2ZTYXZlZENhbGxlZUxvY2FscyAqTiouIFRoaXMgbm9kZSBpcyB1c2VkIHRv
ICgxKSBhbGxvY2F0ZSBzcGFjZSBmb3IgbG9jYWxzIGluIEdlbmVyYXRvckZyYW1lIGFuZCAoMikg
ZGVhbGxvY2F0ZSBzcGFjZSBpbgorICAgICAgICAgICAgR2VuZXJhdG9yRnJhbWUgYnkgc2V0dGlu
ZyBpdCBhcyAwLgorCisgICAgICAgIC0gR2V0R2VuZXJhdG9yTG9jYWwKKworICAgICAgICAgICAg
R2V0IGEgc2F2ZWQgbG9jYWwgdmFyaWFibGUgZnJvbSBhIGdlbmVyYXRvciBmcmFtZS4gR2V0R2Vu
ZXJhdG9yTG9jYWwgYW5kIFNldEdlbmVyYXRvckxvY2FsIGFyZSBsaW5rZWQgd2l0aCBHZW5lcmF0
b3JMb2NhbERhdGEuIFNvIHR5cGUgcHJlZGljYXRpb24gYW5kIGZsYWdzCisgICAgICAgICAgICBh
cmUgY29ycmVjdGx5IHByb3BhZ2F0ZWQgYmV5b25kIHRoZSBnZW5lcmF0b3IgZnJhbWUuCisKKyAg
ICAgICAgLSBTZXRHZW5lcmF0b3JMb2NhbAorCisgICAgICAgICAgICBTdG9yZSBhIGxvY2FsIHZh
cmlhYmxlIHRvIGEgZ2VuZXJhdG9yIGZyYW1lLgorCisgICAgICAgIEZ1dHVyZSBwbGFucyBhcmUg
dGhlIGZvbGxvd2luZ3MuCisKKyAgICAgICAgMS4gQ3JlYXRlIEpTR2VuZXJhdG9yIGFuZCBhbGxv
Y2F0ZSBpdCBpbiB0aGUgZ2VuZXJhdG9yIHdyYXBwZXIgZnVuY3Rpb24uIFRoaXMgc2hvdWxkIGJl
IGNvbXBpbGVkIGluIERGRyAvIEZUTCBhbmQKKyAgICAgICAgdGhpcyBvYmplY3Qgc2hvdWxkIGJl
IHRyYWNrZWQgKGJ5IGVzY2FwZSBhbmFseXNpcykgYW5kIGVsaW1pbmF0ZWQgaWYgcG9zc2libGUg
Ynkgb2JqZWN0IGFsbG9jYXRpb24gZWxpbWluYXRpb24uCisKKyAgICAgICAgMi4gQW5kIG9uY2Ug
d2UgZXhwbG9pdCB0aGF0IEdlbmVyYXRvckZyYW1lIGlzIG5vdCBlc2NhcGVkIGZyb20gdGhlIGdp
dmVuIEZUTC1lZCBmdW5jdGlvbiwgd2Ugd2lsbCBlbGltaW5hdGUgR2VuZXJhdG9yRnJhbWUgYWxs
b2NhdGlvbiBhbmQKKyAgICAgICAgY29udmVydCBHZW5lcmF0b3JMb2NhbCBvcGVyYXRpb25zIGlu
dG8gZ2V0L3NldCBsb2NhbCBvcGVyYXRpb25zLgorCisgICAgICAgICogYnVpbHRpbnMvR2VuZXJh
dG9yUHJvdG90eXBlLmpzOgorICAgICAgICAoZ2VuZXJhdG9yUmVzdW1lKToKKyAgICAgICAgKiBi
eXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suY3BwOgorICAgICAgICAoSlNDOjppc0JyYW5jaCk6
CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb246CisgICAgICAgICogYnl0ZWNv
ZGUvQnl0ZWNvZGVVc2VEZWYuaDoKKyAgICAgICAgKEpTQzo6Y29tcHV0ZVVzZXNGb3JCeXRlY29k
ZU9mZnNldCk6CisgICAgICAgIChKU0M6OmNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQpOgor
ICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9j
azo6ZHVtcEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpmaW5pc2hDcmVhdGlv
bik6CisgICAgICAgICogYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmNwcDoKKyAgICAgICAg
KEpTQzo6Z2V0SnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgICogYnl0ZWNv
bXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5l
cmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXROZXdHZW5lcmF0b3JGcmFtZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0U2F2ZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVz
dW1lKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRvckZyYW1lUmVnaXN0ZXIpOgorICAg
ICAgICAqIGRmZy9ERkdBYnN0cmFjdEhlYXAuaDoKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJ
bnRlcnByZXRlcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJl
dGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAgICAgICAqIGRmZy9E
RkdCYWNrd2FyZHNQcm9wYWdhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCYWNr
d2FyZHNQcm9wYWdhdGlvblBoYXNlOjpwcm9wYWdhdGUpOgorICAgICAgICAqIGRmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6Om5ld0dl
bmVyYXRvckxvY2FsRGF0YSk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBh
cnNlQmxvY2spOgorICAgICAgICAqIGRmZy9ERkdDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OmNhcGFiaWxpdHlMZXZlbCk6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJpemUu
aDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAgICAgICAgKiBkZmcvREZHQ2xv
YmJlcnNFeGl0U3RhdGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmNsb2JiZXJzRXhpdFN0YXRl
KToKKyAgICAgICAgKiBkZmcvREZHRG9lc0dDLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpkb2Vz
R0MpOgorICAgICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpGaXh1cFBoYXNlOjpmaXh1cE5vZGUpOgorICAgICAgICAqIGRmZy9ERkdHZW5lcmF0b3JMb2Nh
bERhdGEuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkRGRzo6R2VuZXJhdG9yTG9jYWxEYXRhOjpw
cmVkaWN0KToKKyAgICAgICAgKEpTQzo6REZHOjpHZW5lcmF0b3JMb2NhbERhdGE6OnByZWRpY3Rp
b24pOgorICAgICAgICAoSlNDOjpERkc6OkdlbmVyYXRvckxvY2FsRGF0YTo6ZmxhZ3MpOgorICAg
ICAgICAoSlNDOjpERkc6OkdlbmVyYXRvckxvY2FsRGF0YTo6bWVyZ2VGbGFncyk6CisgICAgICAg
ICogZGZnL0RGR0dyYXBoLmg6CisgICAgICAgICogZGZnL0RGR01heUV4aXQuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6Om1heUV4aXQpOgorICAgICAgICAqIGRmZy9ERkdOb2RlLmg6CisgICAgICAg
IChKU0M6OkRGRzo6Tm9kZTo6aGFzR2VuZXJhdG9yRnJhbWVTaXplKToKKyAgICAgICAgKEpTQzo6
REZHOjpOb2RlOjpnZW5lcmF0b3JGcmFtZVNpemUpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6
Omhhc0dlbmVyYXRvckZyYW1lSW5kZXgpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmdlbmVy
YXRvckZyYW1lSW5kZXgpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc0dlbmVyYXRvckxv
Y2FsRGF0YSk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6Z2VuZXJhdG9yTG9jYWxEYXRhKToK
KyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNHZW5lcmF0b3JGcmFtZUxvY2Fscyk6CisgICAg
ICAgIChKU0M6OkRGRzo6Tm9kZTo6Z2VuZXJhdG9yRnJhbWVMb2NhbHMpOgorICAgICAgICAqIGRm
Zy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAg
ICAgKiBkZmcvREZHT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJv
cGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6UHJlZGljdGlvblByb3BhZ2F0
aW9uUGhhc2U6OnByb3BhZ2F0ZSk6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoK
KyAgICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21w
aWxlTmV3R2VuZXJhdG9yRnJhbWUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5o
OgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1
bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKToKKyAgICAgICAgKiBkZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwOgor
ICAgICAgICAqIGRmZy9ERkdTdHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFzZS5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6U3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2U6OnJ1bik6CisgICAgICAgICog
ZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwOgorICAgICAgICAqIGZ0bC9GVExBYnN0
cmFjdEhlYXBSZXBvc2l0b3J5Lmg6CisgICAgICAgICogZnRsL0ZUTENhcGFiaWxpdGllcy5jcHA6
CisgICAgICAgIChKU0M6OkZUTDo6Y2FuQ29tcGlsZSk6CisgICAgICAgICogZnRsL0ZUTExvd2Vy
REZHVG9MTFZNLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9MTFZNOjpj
b21waWxlTm9kZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvTExWTTo6Y29t
cGlsZVB1dEdlbmVyYXRvckZyYW1lTG9jYWxzKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxv
d2VyREZHVG9MTFZNOjpjb21waWxlU2V0R2VuZXJhdG9yTG9jYWwpOgorICAgICAgICAoSlNDOjpG
VEw6OkRGRzo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVHZXRHZW5lcmF0b3JMb2NhbCk6CisgICAg
ICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZU5ld0dlbmVyYXRvckZy
YW1lKToKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRl
Q29tcGlsZU1haW5QYXNzKToKKyAgICAgICAgKiBqaXQvSklULmg6CisgICAgICAgICogaml0L0pJ
VE9wY29kZXMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcmVzdW1lX2Zyb21fZ2Vu
ZXJhdG9yX2ZyYW1lKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2NsZWFyX2dlbmVyYXRv
cl9mcmFtZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9uZXdfZ2VuZXJhdG9yX2ZyYW1l
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX25vcCk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdF9vcF9yZXN1bWUpOiBEZWxldGVkLgorICAgICAgICAqIGxsaW50L0xMSW50T2Zmc2V0c0V4
dHJhY3Rvci5jcHA6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc206Cisg
ICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbToKKyAgICAgICAgKiBwYXJz
ZXIvUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlSW5u
ZXIpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VHZW5lcmF0b3JGdW5j
dGlvblNvdXJjZUVsZW1lbnRzKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OmNy
ZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuaDoKKyAg
ICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OlNMT1df
UEFUSF9ERUNMKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5oOgorICAgICAg
ICAqIHJ1bnRpbWUvR2VuZXJhdG9yRnJhbWUuY3BwOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JG
cmFtZTo6R2VuZXJhdG9yRnJhbWUpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6Y3Jl
YXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OmNyZWF0ZSk6Cisg
ICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpzYXZlKToKKyAgICAgICAgKEpTQzo6R2VuZXJh
dG9yRnJhbWU6OnJlc3VtZSk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjp2aXNpdENo
aWxkcmVuKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OmZpbmlzaENyZWF0aW9uKTog
RGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0dlbmVyYXRvckZyYW1lLmg6CisgICAgICAgIChK
U0M6OkdlbmVyYXRvckZyYW1lOjpsb2NhbE9mZnNldCk6CisgICAgICAgIChKU0M6OkdlbmVyYXRv
ckZyYW1lOjpudW1iZXJPZkNhbGxlZUxvY2Fsc09mZnNldCk6CisgICAgICAgIChKU0M6OkdlbmVy
YXRvckZyYW1lOjpudW1iZXJPZlNhdmVkQ2FsbGVlTG9jYWxzT2Zmc2V0KToKKyAgICAgICAgKEpT
Qzo6R2VuZXJhdG9yRnJhbWU6OmxvY2FsQXQpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUv
SlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6
CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDOjpKU0ds
b2JhbE9iamVjdDo6Z2VuZXJhdG9yRnJhbWVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUv
Vk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6Vk0pOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRp
bWUvVk0uaDoKKwogMjAxNi0wMS0xMyAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGln
YWxpYS5jb20+CiAKICAgICAgICAgW0NNYWtlXSBEbyBub3QgdXNlIExMVk0gc3RhdGljIGxpYnJh
cmllcyBmb3IgRlRMIEpJVApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0
aW5zL0dlbmVyYXRvclByb3RvdHlwZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlu
cy9HZW5lcmF0b3JQcm90b3R5cGUuanMKaW5kZXggYTNiYmMzNTM0YWUwNTJmNGQ2ZmEyNWJkZTcw
M2M5M2QzYTc5NWUxMS4uNDlkZGJmOWM4NDY5MzMwNjU4NzExZjE4ZTcyMTQ5YmM5ODIyZGEzNCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0dlbmVyYXRvclByb3Rv
dHlwZS5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvR2VuZXJhdG9yUHJv
dG90eXBlLmpzCkBAIC01OCw3ICs1OCw3IEBAIGZ1bmN0aW9uIGdlbmVyYXRvclJlc3VtZShnZW5l
cmF0b3IsIHNlbnRWYWx1ZSwgcmVzdW1lTW9kZSkKICAgICB9IGVsc2UgewogICAgICAgICB0cnkg
ewogICAgICAgICAgICAgZ2VuZXJhdG9yLkBnZW5lcmF0b3JTdGF0ZSA9IEV4ZWN1dGluZzsKLSAg
ICAgICAgICAgIHZhbHVlID0gZ2VuZXJhdG9yLkBnZW5lcmF0b3JOZXh0LkBjYWxsKGdlbmVyYXRv
ci5AZ2VuZXJhdG9yVGhpcywgZ2VuZXJhdG9yLCBzdGF0ZSwgc2VudFZhbHVlLCByZXN1bWVNb2Rl
KTsKKyAgICAgICAgICAgIHZhbHVlID0gZ2VuZXJhdG9yLkBnZW5lcmF0b3JOZXh0LkBjYWxsKGdl
bmVyYXRvci5AZ2VuZXJhdG9yVGhpcywgZ2VuZXJhdG9yLCBzdGF0ZSwgc2VudFZhbHVlLCByZXN1
bWVNb2RlLCBnZW5lcmF0b3IuQGdlbmVyYXRvckZyYW1lKTsKICAgICAgICAgICAgIGlmIChnZW5l
cmF0b3IuQGdlbmVyYXRvclN0YXRlID09PSBFeGVjdXRpbmcpIHsKICAgICAgICAgICAgICAgICBn
ZW5lcmF0b3IuQGdlbmVyYXRvclN0YXRlID0gQ29tcGxldGVkOwogICAgICAgICAgICAgICAgIGRv
bmUgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlQmFzaWNCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVCYXNpY0Jsb2NrLmNwcAppbmRleCA3ZjE3YzBlZjEwYjQzM2ZhYzhmNThjYjNiOWNhNWQ0
ZDAxNWJiYTA4Li41YWExOGU0Y2FmN2E1NzVkZDY0NWQ2ZjZlZDc5NzI4YWY3M2JkMjZlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2Nr
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Js
b2NrLmNwcApAQCAtNTgsNyArNTgsNyBAQCBzdGF0aWMgYm9vbCBpc0JyYW5jaChPcGNvZGVJRCBv
cGNvZGVJRCkKICAgICBjYXNlIG9wX3N3aXRjaF9pbW06CiAgICAgY2FzZSBvcF9zd2l0Y2hfY2hh
cjoKICAgICBjYXNlIG9wX3N3aXRjaF9zdHJpbmc6Ci0gICAgY2FzZSBvcF9zYXZlOgorICAgIGNh
c2Ugb3Bfc2F2ZV9oaW50OgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBkZWZhdWx0OgogICAg
ICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Qnl0ZWNvZGVMaXN0Lmpzb24KaW5kZXggMDUzYjhkYzliODY0ZjFiODZiNGNlYzdhYTYwMWY3Y2Uy
ZjAzZjJlNC4uMDhhYWMxMjI1OWM2OGRhMGUxYWJjOTA5MGJlNTRjOTU1ZmIzMzAwNSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgpAQCAt
MTYsNiArMTYsNyBAQAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfbmV3X2FycmF5X3dpdGhf
c2l6ZSIsICJsZW5ndGgiIDogNCB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfbmV3X2Fy
cmF5X2J1ZmZlciIsICJsZW5ndGgiIDogNSB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3Bf
bmV3X3JlZ2V4cCIsICJsZW5ndGgiIDogMyB9LAorICAgICAgICAgICAgeyAibmFtZSIgOiAib3Bf
bmV3X2dlbmVyYXRvcl9mcmFtZSIsICJsZW5ndGgiIDogMyB9LAogICAgICAgICAgICAgeyAibmFt
ZSIgOiAib3BfbW92IiwgImxlbmd0aCIgOiAzIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJv
cF9ub3QiLCAibGVuZ3RoIiA6IDMgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2VxIiwg
Imxlbmd0aCIgOiA0IH0sCkBAIC0xMzQsNyArMTM1LDExIEBACiAgICAgICAgICAgICB7ICJuYW1l
IiA6ICJvcF9jb3B5X3Jlc3QiLCAibGVuZ3RoIjogNCB9LAogICAgICAgICAgICAgeyAibmFtZSIg
OiAib3BfZ2V0X3Jlc3RfbGVuZ3RoIiwgImxlbmd0aCI6IDMgfSwKICAgICAgICAgICAgIHsgIm5h
bWUiIDogIm9wX3NhdmUiLCAibGVuZ3RoIiA6IDQgfSwKLSAgICAgICAgICAgIHsgIm5hbWUiIDog
Im9wX3Jlc3VtZSIsICJsZW5ndGgiIDogMyB9LAorICAgICAgICAgICAgeyAibmFtZSIgOiAib3Bf
c2F2ZV9oaW50IiwgImxlbmd0aCIgOiA0IH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9y
ZXN1bWVfaGludCIsICJsZW5ndGgiIDogNCB9LAorICAgICAgICAgICAgeyAibmFtZSIgOiAib3Bf
cmVzdW1lX2Zyb21fZ2VuZXJhdG9yX2ZyYW1lIiwgImxlbmd0aCIgOiA0IH0sCisgICAgICAgICAg
ICB7ICJuYW1lIiA6ICJvcF9jbGVhcl9nZW5lcmF0b3JfZnJhbWUiLCAibGVuZ3RoIiA6IDIgfSwK
KyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX25vcCIsICJsZW5ndGgiIDogMSB9LAogICAgICAg
ICAgICAgeyAibmFtZSIgOiAib3Bfd2F0Y2hkb2ciLCAibGVuZ3RoIiA6IDEgfQogICAgICAgICBd
CiAgICAgfSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZVVzZURlZi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNl
RGVmLmgKaW5kZXggODAxMTE0YzM3MmEyNzdmNmUxNzcwOWI5MGJlMjA3YzhmOTliZTgyZC4uZGFl
ZjgxYzI2OWJiNTQxNTRlYTZiNmRjODM4YWZjNjljZWU3MmM5NSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKQEAgLTU1LDYgKzU1LDggQEAg
dm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAogICAgIGNhc2Ugb3BfY3JlYXRlX291
dF9vZl9iYW5kX2FyZ3VtZW50czoKICAgICBjYXNlIG9wX2dldF9yZXN0X2xlbmd0aDoKICAgICBj
YXNlIG9wX3dhdGNoZG9nOgorICAgIGNhc2Ugb3BfbmV3X2dlbmVyYXRvcl9mcmFtZToKKyAgICBj
YXNlIG9wX25vcDoKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2Ugb3BfYXNzZXJ0OgogICAgIGNh
c2Ugb3BfZ2V0X3Njb3BlOgpAQCAtNzIsNyArNzQsOCBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0
ZWNvZGVPZmZzZXQoCiAgICAgY2FzZSBvcF9qbmVxX251bGw6CiAgICAgY2FzZSBvcF9kZWM6CiAg
ICAgY2FzZSBvcF9pbmM6Ci0gICAgY2FzZSBvcF9yZXN1bWU6IHsKKyAgICBjYXNlIG9wX3Jlc3Vt
ZV9oaW50OgorICAgIGNhc2Ugb3BfY2xlYXJfZ2VuZXJhdG9yX2ZyYW1lOiB7CiAgICAgICAgIEFT
U0VSVChvcGNvZGVMZW5ndGhzW29wY29kZUlEXSA+PSAxKTsKICAgICAgICAgZnVuY3Rvcihjb2Rl
QmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKTsK
ICAgICAgICAgcmV0dXJuOwpAQCAtMTY1LDcgKzE2OCw4IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JC
eXRlY29kZU9mZnNldCgKICAgICBjYXNlIG9wX25ld19nZW5lcmF0b3JfZnVuYzoKICAgICBjYXNl
IG9wX2dldF9wYXJlbnRfc2NvcGU6CiAgICAgY2FzZSBvcF9jcmVhdGVfc2NvcGVkX2FyZ3VtZW50
czoKLSAgICBjYXNlIG9wX2dldF9mcm9tX2FyZ3VtZW50czogeworICAgIGNhc2Ugb3BfZ2V0X2Zy
b21fYXJndW1lbnRzOgorICAgIGNhc2Ugb3BfcmVzdW1lX2Zyb21fZ2VuZXJhdG9yX2ZyYW1lOiB7
CiAgICAgICAgIEFTU0VSVChvcGNvZGVMZW5ndGhzW29wY29kZUlEXSA+PSAyKTsKICAgICAgICAg
ZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb25bMl0u
dS5vcGVyYW5kKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjUwLDcgKzI1NCw3IEBAIHZvaWQgY29t
cHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCgKICAgICAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2Nr
LCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGxhc3RBcmcgKyBpKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KLSAgICBjYXNlIG9wX3NhdmU6IHsKKyAgICBjYXNlIG9wX3NhdmVfaGludDogewogICAg
ICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBpbnN0cnVjdGlv
blsxXS51Lm9wZXJhbmQpOwogICAgICAgICB1bnNpZ25lZCBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZz
ZXQgPSBieXRlY29kZU9mZnNldCArIGluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKICAgICAgICAg
Qnl0ZWNvZGVCYXNpY0Jsb2NrKiBtZXJnZVBvaW50QmxvY2sgPSBudWxscHRyOwpAQCAtMjY2LDYg
KzI3MCwxNSBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoCiAgICAgICAgIH0p
OwogICAgICAgICByZXR1cm47CiAgICAgfQorICAgIGNhc2Ugb3Bfc2F2ZTogeworICAgICAgICBm
dW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBpbnN0cnVjdGlvblsxXS51
Lm9wZXJhbmQpOworICAgICAgICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSBpbnN0
cnVjdGlvblsyXS51LnVuc2lnbmVkVmFsdWU7CisgICAgICAgIGNvbnN0IEZhc3RCaXRWZWN0b3Im
IGxpdmVuZXNzID0gY29kZUJsb2NrLT5saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZChsaXZlQ2FsbGVl
TG9jYWxzSW5kZXgpOworICAgICAgICBsaXZlbmVzcy5mb3JFYWNoU2V0Qml0KFsmXSh1bnNpZ25l
ZCBsb2NhbCkgeworICAgICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBv
cGNvZGVJRCwgdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwobG9jYWwpLm9mZnNldCgpKTsKKyAgICAg
ICAgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAgICAgZGVmYXVsdDoKICAgICAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgYnJlYWs7CkBAIC0yODksNiArMzAy
LDcgQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJs
b2NrLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2MKICAgICBjYXNlIG9wX3Rocm93OgogICAgIGNh
c2Ugb3BfdGhyb3dfc3RhdGljX2Vycm9yOgogICAgIGNhc2Ugb3Bfc2F2ZToKKyAgICBjYXNlIG9w
X3NhdmVfaGludDoKICAgICBjYXNlIG9wX2Fzc2VydDoKICAgICBjYXNlIG9wX2RlYnVnOgogICAg
IGNhc2Ugb3BfcmV0OgpAQCAtMzIzLDYgKzMzNyw4IEBAIHZvaWQgY29tcHV0ZURlZnNGb3JCeXRl
Y29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9j
CiAgICAgY2FzZSBvcF9wcm9maWxlX2NvbnRyb2xfZmxvdzoKICAgICBjYXNlIG9wX3B1dF90b19h
cmd1bWVudHM6CiAgICAgY2FzZSBvcF93YXRjaGRvZzoKKyAgICBjYXNlIG9wX2NsZWFyX2dlbmVy
YXRvcl9mcmFtZToKKyAgICBjYXNlIG9wX25vcDoKICNkZWZpbmUgTExJTlRfSEVMUEVSX09QQ09E
RVMob3Bjb2RlLCBsZW5ndGgpIGNhc2Ugb3Bjb2RlOgogICAgICAgICBGT1JfRUFDSF9MTElOVF9P
UENPREVfRVhURU5TSU9OKExMSU5UX0hFTFBFUl9PUENPREVTKTsKICN1bmRlZiBMTElOVF9IRUxQ
RVJfT1BDT0RFUwpAQCAtNDE1LDcgKzQzMSw5IEBAIHZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29k
ZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jCiAg
ICAgY2FzZSBvcF9kZWxfYnlfdmFsOgogICAgIGNhc2Ugb3BfdW5zaWduZWQ6CiAgICAgY2FzZSBv
cF9nZXRfZnJvbV9hcmd1bWVudHM6IAotICAgIGNhc2Ugb3BfZ2V0X3Jlc3RfbGVuZ3RoOiB7Cisg
ICAgY2FzZSBvcF9nZXRfcmVzdF9sZW5ndGg6CisgICAgY2FzZSBvcF9uZXdfZ2VuZXJhdG9yX2Zy
YW1lOgorICAgIGNhc2Ugb3BfcmVzdW1lX2Zyb21fZ2VuZXJhdG9yX2ZyYW1lOiB7CiAgICAgICAg
IEFTU0VSVChvcGNvZGVMZW5ndGhzW29wY29kZUlEXSA+IDEpOwogICAgICAgICBmdW5jdG9yKGNv
ZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBpbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQp
OwogICAgICAgICByZXR1cm47CkBAIC00MzEsNyArNDQ5LDcgQEAgdm9pZCBjb21wdXRlRGVmc0Zv
ckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29kZUJhc2ljQmxvY2sq
IGJsb2MKICAgICAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2Rl
SUQsIHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGkpLm9mZnNldCgpKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KLSAgICBjYXNlIG9wX3Jlc3VtZTogeworICAgIGNhc2Ugb3BfcmVzdW1lX2hpbnQ6
IHsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoYmxvY2stPnN1Y2Nlc3NvcnMoKS5zaXplKCkgPT0g
MSk7CiAgICAgICAgIGJsb2NrLT5zdWNjZXNzb3JzKClbMF0tPmluKCkuZm9yRWFjaFNldEJpdChb
Jl0odW5zaWduZWQgbG9jYWwpIHsKICAgICAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0
cnVjdGlvbiwgb3Bjb2RlSUQsIHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGxvY2FsKS5vZmZzZXQo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4
IDU5MDVlOTE4M2M4ZjEyNjY0ZTJiYTNkZDI5YTVjNDY1Njc2OGRjMDMuLjkyZDRhOWZkY2RmNTVl
ZjcxYjFlZmIwOTU3YzY5MmI1NzYxOTEyYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC0xNTU2LDI3ICsxNTU2LDYzIEBAIHZvaWQgQ29kZUJs
b2NrOjpkdW1wQnl0ZWNvZGUoCiAgICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgJWQiLCBkZWJ1
Z0hvb2tOYW1lKGRlYnVnSG9va0lEKSwgaGFzQnJlYWtwb2ludEZsYWcpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgY2FzZSBvcF9zYXZlOiB7Ci0gICAgICAgICAgICBp
bnQgZ2VuZXJhdG9yID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIGNhc2Ugb3Bfc2F2ZV9o
aW50OiB7CisgICAgICAgICAgICBpbnQgZnJhbWUgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAg
ICAgICAgIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9ICgrK2l0KS0+dS51bnNpZ25l
ZFZhbHVlOwogICAgICAgICAgICAgaW50IG9mZnNldCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAg
ICAgICAgICAgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZW5lc3MgPSBtX3JhcmVEYXRhLT5tX2xp
dmVDYWxsZWVMb2NhbHNBdFlpZWxkW2xpdmVDYWxsZWVMb2NhbHNJbmRleF07CiAgICAgICAgICAg
ICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJzYXZlIik7Ci0g
ICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgIiwgcmVnaXN0ZXJOYW1lKGdlbmVyYXRvcikuZGF0
YSgpKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAiLCByZWdpc3Rlck5hbWUoZnJhbWUp
LmRhdGEoKSk7CiAgICAgICAgICAgICBsaXZlbmVzcy5kdW1wKG91dCk7CiAgICAgICAgICAgICBv
dXQucHJpbnRmKCIoQGxpdmUlMXUpLCAlZCgtPiVkKSIsIGxpdmVDYWxsZWVMb2NhbHNJbmRleCwg
b2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNldCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQotICAgICAgICBjYXNlIG9wX3Jlc3VtZTogewotICAgICAgICAgICAgaW50IGdlbmVyYXRvciA9
ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICBjYXNlIG9wX3NhdmU6IHsKKyAgICAgICAgICAg
IGludCBmcmFtZSA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgdW5zaWduZWQgbGl2
ZUNhbGxlZUxvY2Fsc0luZGV4ID0gKCsraXQpLT51LnVuc2lnbmVkVmFsdWU7CisgICAgICAgICAg
ICArK2l0OyAvLyBkaXNjYXJkIG9mZnNldC4KICAgICAgICAgICAgIGNvbnN0IEZhc3RCaXRWZWN0
b3ImIGxpdmVuZXNzID0gbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZFtsaXZl
Q2FsbGVlTG9jYWxzSW5kZXhdOwotICAgICAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwg
ZXhlYywgbG9jYXRpb24sIGl0LCAicmVzdW1lIik7Ci0gICAgICAgICAgICBvdXQucHJpbnRmKCIl
cywgIiwgcmVnaXN0ZXJOYW1lKGdlbmVyYXRvcikuZGF0YSgpKTsKKyAgICAgICAgICAgIHByaW50
TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgInNhdmUiKTsKKyAgICAgICAg
ICAgIG91dC5wcmludGYoIiVzLCAiLCByZWdpc3Rlck5hbWUoZnJhbWUpLmRhdGEoKSk7CiAgICAg
ICAgICAgICBsaXZlbmVzcy5kdW1wKG91dCk7CiAgICAgICAgICAgICBvdXQucHJpbnRmKCIoQGxp
dmUlMXUpIiwgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4KTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CisgICAgICAgIGNhc2Ugb3BfcmVzdW1lX2hpbnQ6IHsKKyAgICAgICAgICAgIGludCBm
cmFtZSA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgdW5zaWduZWQgbGl2ZUNhbGxl
ZUxvY2Fsc0luZGV4ID0gKCsraXQpLT51LnVuc2lnbmVkVmFsdWU7CisgICAgICAgICAgICB1bnNp
Z25lZCBtYXhMaXZlQ2FsbGVlcyA9ICgrK2l0KS0+dS51bnNpZ25lZFZhbHVlOworICAgICAgICAg
ICAgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZW5lc3MgPSBtX3JhcmVEYXRhLT5tX2xpdmVDYWxs
ZWVMb2NhbHNBdFlpZWxkW2xpdmVDYWxsZWVMb2NhbHNJbmRleF07CisgICAgICAgICAgICBwcmlu
dExvY2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJyZXN1bWUiKTsKKyAgICAg
ICAgICAgIG91dC5wcmludGYoIiVzLCAiLCByZWdpc3Rlck5hbWUoZnJhbWUpLmRhdGEoKSk7Cisg
ICAgICAgICAgICBsaXZlbmVzcy5kdW1wKG91dCk7CisgICAgICAgICAgICBvdXQucHJpbnRmKCIo
QGxpdmUlMXUpLCAldSIsIGxpdmVDYWxsZWVMb2NhbHNJbmRleCwgbWF4TGl2ZUNhbGxlZXMpOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9yZXN1bWVfZnJv
bV9nZW5lcmF0b3JfZnJhbWU6IHsKKyAgICAgICAgICAgIGludCBkc3QgPSAoKytpdCktPnUub3Bl
cmFuZDsKKyAgICAgICAgICAgIGludCBmcmFtZSA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAg
ICAgICAgdW5zaWduZWQgaW5kZXggPSAoKytpdCktPnUudW5zaWduZWRWYWx1ZTsKKyAgICAgICAg
ICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgInJlc3VtZV9m
cm9tX2dlbmVyYXRvcl9mcmFtZSIpOworICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCAl
dSIsIHJlZ2lzdGVyTmFtZShkc3QpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGZyYW1lKS5kYXRhKCks
IGluZGV4KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2Ugb3Bf
Y2xlYXJfZ2VuZXJhdG9yX2ZyYW1lOiB7CisgICAgICAgICAgICBpbnQgZnJhbWUgPSAoKytpdCkt
PnUub3BlcmFuZDsKKyAgICAgICAgICAgIHByaW50TG9jYXRpb25PcEFuZFJlZ2lzdGVyT3BlcmFu
ZChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgImNsZWFyX2dlbmVyYXRvcl9mcmFtZSIsIGZyYW1l
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2Ugb3BfbmV3X2dl
bmVyYXRvcl9mcmFtZTogeworICAgICAgICAgICAgaW50IGRzdCA9ICgrK2l0KS0+dS5vcGVyYW5k
OworICAgICAgICAgICAgdW5zaWduZWQgZ2VuZXJhdG9yRnJhbWVTaXplID0gKCsraXQpLT51LnVu
c2lnbmVkVmFsdWU7CisgICAgICAgICAgICBwcmludExvY2F0aW9uT3BBbmRSZWdpc3Rlck9wZXJh
bmQob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJuZXdfZ2VuZXJhdG9yX2ZyYW1lIiwgZHN0KTsK
KyAgICAgICAgICAgIG91dC5wcmludGYoIiAldSIsIGdlbmVyYXRvckZyYW1lU2l6ZSk7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIG9wX25vcDogeworICAgICAg
ICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAibm9wIik7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2Fzc2VydDog
ewogICAgICAgICAgICAgaW50IGNvbmRpdGlvbiA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAg
ICAgICAgaW50IGxpbmUgPSAoKytpdCktPnUub3BlcmFuZDsKQEAgLTE4NDcsNiArMTg4MywxMiBA
QCB2b2lkIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBDb3B5UGFyc2VkQmxvY2tU
YWcsIENvZGVCbG9jayYgb3RoZXIpCiAgICAgc2V0TnVtUGFyYW1ldGVycyh1bmxpbmtlZENvZGVC
bG9jay0+bnVtUGFyYW1ldGVycygpKTsKIH0KIAorc3RydWN0IEdlbmVyYXRvclBvaW50cyB7Cisg
ICAgc2l6ZV90IHNhdmVQb2ludDsKKyAgICBzaXplX3QgbWVyZ2VQb2ludDsKKyAgICBzaXplX3Qg
cmVzdW1lUG9pbnQ7Cit9OworCiB2b2lkIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZt
LCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGlua2VkQ29kZUJsb2NrKiB1
bmxpbmtlZENvZGVCbG9jaywKICAgICBKU1Njb3BlKiBzY29wZSkKIHsKQEAgLTE5ODAsOSArMjAy
MiwxMCBAQCB2b2lkIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVj
dXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGluawogICAgIEhhc2hTZXQ8SlNNb2R1bGVFbnZp
cm9ubWVudCo+IHN0cm9uZ2x5UmVmZXJlbmNlZE1vZHVsZUVudmlyb25tZW50czsKIAogICAgIC8v
IEJvb2trZWVwIHRoZSBtZXJnZSBwb2ludCBieXRlY29kZSBvZmZzZXRzLgotICAgIFZlY3Rvcjxz
aXplX3Q+IG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldHM7CisgICAgVmVjdG9yPEdlbmVyYXRvclBv
aW50cz4gbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0czsKIAogICAgIFJlZkNvdW50ZWRBcnJheTxJ
bnN0cnVjdGlvbj4gaW5zdHJ1Y3Rpb25zKGluc3RydWN0aW9uQ291bnQpOworICAgIHVuc2lnbmVk
IG5ld0dlbmVyYXRvckZyYW1lSW5zdHJ1Y3Rpb25PZmZzZXQgPSAwOwogCiAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgIWluc3RydWN0aW9uUmVhZGVyLmF0RW5kKCk7ICkgewogICAgICAgICBjb25z
dCBVbmxpbmtlZEluc3RydWN0aW9uKiBwYyA9IGluc3RydWN0aW9uUmVhZGVyLm5leHQoKTsKQEAg
LTIyNzAsMTIgKzIzMTMsMjYgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2
bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CiAKLSAgICAgICAgY2FzZSBvcF9zYXZlOiB7CisgICAgICAgIGNh
c2Ugb3Bfc2F2ZV9oaW50OiB7CiAgICAgICAgICAgICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxz
SW5kZXggPSBwY1syXS51LmluZGV4OwogICAgICAgICAgICAgaW50IG9mZnNldCA9IHBjWzNdLnUu
b3BlcmFuZDsKICAgICAgICAgICAgIGlmIChsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPj0gbWVyZ2VQ
b2ludEJ5dGVjb2RlT2Zmc2V0cy5zaXplKCkpCiAgICAgICAgICAgICAgICAgbWVyZ2VQb2ludEJ5
dGVjb2RlT2Zmc2V0cy5yZXNpemUobGl2ZUNhbGxlZUxvY2Fsc0luZGV4ICsgMSk7Ci0gICAgICAg
ICAgICBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXRzW2xpdmVDYWxsZWVMb2NhbHNJbmRleF0gPSBp
ICsgb2Zmc2V0OworICAgICAgICAgICAgbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0c1tsaXZlQ2Fs
bGVlTG9jYWxzSW5kZXhdLnNhdmVQb2ludCA9IGk7CisgICAgICAgICAgICBtZXJnZVBvaW50Qnl0
ZWNvZGVPZmZzZXRzW2xpdmVDYWxsZWVMb2NhbHNJbmRleF0ubWVyZ2VQb2ludCA9IGkgKyBvZmZz
ZXQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2Ugb3BfcmVz
dW1lX2hpbnQ6IHsKKyAgICAgICAgICAgIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9
IHBjWzJdLnUuaW5kZXg7CisgICAgICAgICAgICBpZiAobGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID49
IG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldHMuc2l6ZSgpKQorICAgICAgICAgICAgICAgIG1lcmdl
UG9pbnRCeXRlY29kZU9mZnNldHMucmVzaXplKGxpdmVDYWxsZWVMb2NhbHNJbmRleCArIDEpOwor
ICAgICAgICAgICAgbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0c1tsaXZlQ2FsbGVlTG9jYWxzSW5k
ZXhdLnJlc3VtZVBvaW50ID0gaTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAg
ICAgICAgY2FzZSBvcF9uZXdfZ2VuZXJhdG9yX2ZyYW1lOiB7CisgICAgICAgICAgICBuZXdHZW5l
cmF0b3JGcmFtZUluc3RydWN0aW9uT2Zmc2V0ID0gaTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CiAKQEAgLTIyOTAsMTggKzIzNDcsNTcgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmlzaENy
ZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsK
IAogICAgIG1faW5zdHJ1Y3Rpb25zID0gV1RGTW92ZShpbnN0cnVjdGlvbnMpOwogCi0gICAgLy8g
UGVyZm9ybSBieXRlY29kZSBsaXZlbmVzcyBhbmFseXNpcyB0byBkZXRlcm1pbmUgd2hpY2ggbG9j
YWxzIGFyZSBsaXZlIGFuZCBzaG91bGQgYmUgcmVzdW1lZCB3aGVuIGV4ZWN1dGluZyBvcF9yZXN1
bWUuCisgICAgLy8gUGVyZm9ybSBieXRlY29kZSBsaXZlbmVzcyBhbmFseXNpcyB0byBkZXRlcm1p
bmUgd2hpY2ggbG9jYWxzIGFyZSBsaXZlIGFuZCBzaG91bGQgYmUgcmVzdW1lZCB3aGVuIGV4ZWN1
dGluZyBvcF9yZXN1bWVfaGludC4KICAgICBpZiAodW5saW5rZWRDb2RlQmxvY2stPnBhcnNlTW9k
ZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yQm9keU1vZGUpIHsKKyAgICAgICAgdW5z
aWduZWQgbWF4R2VuZXJhdG9yRnJhbWVTaXplID0gMDsKICAgICAgICAgaWYgKHNpemVfdCBjb3Vu
dCA9IG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldHMuc2l6ZSgpKSB7CiAgICAgICAgICAgICBjcmVh
dGVSYXJlRGF0YUlmTmVjZXNzYXJ5KCk7CiAgICAgICAgICAgICBCeXRlY29kZUxpdmVuZXNzQW5h
bHlzaXMgbGl2ZW5lc3ModGhpcyk7CiAgICAgICAgICAgICBtX3JhcmVEYXRhLT5tX2xpdmVDYWxs
ZWVMb2NhbHNBdFlpZWxkLmdyb3coY291bnQpOworCiAgICAgICAgICAgICBzaXplX3QgbGl2ZUNh
bGxlZUxvY2Fsc0luZGV4ID0gMDsKLSAgICAgICAgICAgIGZvciAoc2l6ZV90IGJ5dGVjb2RlT2Zm
c2V0IDogbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0cykgewotICAgICAgICAgICAgICAgIG1fcmFy
ZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGRbbGl2ZUNhbGxlZUxvY2Fsc0luZGV4XSA9
IGxpdmVuZXNzLmdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQp
OworCisgICAgICAgICAgICAvLyBDYWxjdWxhdGUgbGl2ZW5lc3MgYW5kIHN0b3JlIGRhdGEuCisg
ICAgICAgICAgICBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSAwOworICAgICAgICAgICAgZm9yIChj
b25zdCBHZW5lcmF0b3JQb2ludHMmIHBvaW50cyA6IG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldHMp
IHsKKyAgICAgICAgICAgICAgICBzaXplX3QgbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0ID0gcG9p
bnRzLm1lcmdlUG9pbnQ7CisgICAgICAgICAgICAgICAgRmFzdEJpdFZlY3RvciBsaXZlbmVzc1Zl
Y3RvciA9IGxpdmVuZXNzLmdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQobWVyZ2VQb2lu
dEJ5dGVjb2RlT2Zmc2V0KTsKKyAgICAgICAgICAgICAgICBtX3JhcmVEYXRhLT5tX2xpdmVDYWxs
ZWVMb2NhbHNBdFlpZWxkW2xpdmVDYWxsZWVMb2NhbHNJbmRleF0gPSBsaXZlbmVzc1ZlY3RvcjsK
KyAgICAgICAgICAgICAgICBtYXhHZW5lcmF0b3JGcmFtZVNpemUgPSBzdGQ6Om1heDx1bnNpZ25l
ZD4obWF4R2VuZXJhdG9yRnJhbWVTaXplLCBsaXZlbmVzc1ZlY3Rvci5iaXRDb3VudCgpKTsKKyAg
ICAgICAgICAgICAgICArK2xpdmVDYWxsZWVMb2NhbHNJbmRleDsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgLy8gUmV3cml0ZSBieXRlY29kZXMgYmFzZWQgb24gY2FsY3VsYXRlZCBsaXZl
bmVzcy4KKyAgICAgICAgICAgIGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9IDA7CisgICAgICAgICAg
ICBmb3IgKGNvbnN0IEdlbmVyYXRvclBvaW50cyYgcG9pbnRzIDogbWVyZ2VQb2ludEJ5dGVjb2Rl
T2Zmc2V0cykgeworICAgICAgICAgICAgICAgIHNpemVfdCBzYXZlUG9pbnRCeXRlY29kZU9mZnNl
dCA9IHBvaW50cy5zYXZlUG9pbnQ7CisgICAgICAgICAgICAgICAgc2l6ZV90IHJlc3VtZVBvaW50
Qnl0ZWNvZGVPZmZzZXQgPSBwb2ludHMucmVzdW1lUG9pbnQ7CisKKyAgICAgICAgICAgICAgICBj
b25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlbmVzc1ZlY3RvciA9IG1fcmFyZURhdGEtPm1fbGl2ZUNh
bGxlZUxvY2Fsc0F0WWllbGRbbGl2ZUNhbGxlZUxvY2Fsc0luZGV4XTsKKworICAgICAgICAgICAg
ICAgIC8vIFBhdGNoIG9wX3Jlc3VtZV9oaW50IHdpdGggYWN0dWFsIG9wcy4KKyAgICAgICAgICAg
ICAgICBpbnQgZ2VuZXJhdG9yRnJhbWVJbmRleCA9IG1faW5zdHJ1Y3Rpb25zW3Jlc3VtZVBvaW50
Qnl0ZWNvZGVPZmZzZXQgKyAxXS51Lm9wZXJhbmQ7CisgICAgICAgICAgICAgICAgaWYgKCFsaXZl
bmVzc1ZlY3Rvci5iaXRDb3VudCgpKSB7CisgICAgICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgNDsgKytpKQorICAgICAgICAgICAgICAgICAgICAgICAgbV9pbnN0cnVjdGlv
bnNbcmVzdW1lUG9pbnRCeXRlY29kZU9mZnNldCArIGldID0gdm0uaW50ZXJwcmV0ZXItPmdldE9w
Y29kZShvcF9ub3ApOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCBpID0gMDsKKyAgICAgICAgICAgICAgICAgICAgbGl2ZW5lc3NWZWN0b3IuZm9y
RWFjaFNldEJpdChbJl0odW5zaWduZWQgbG9jYWwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHNpemVfdCBpbmRleCA9IGkrKzsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvZmZz
ZXQgPSByZXN1bWVQb2ludEJ5dGVjb2RlT2Zmc2V0ICsgaW5kZXggKiA0OworICAgICAgICAgICAg
ICAgICAgICAgICAgbV9pbnN0cnVjdGlvbnNbb2Zmc2V0XSA9IHZtLmludGVycHJldGVyLT5nZXRP
cGNvZGUob3BfcmVzdW1lX2Zyb21fZ2VuZXJhdG9yX2ZyYW1lKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIG1faW5zdHJ1Y3Rpb25zW29mZnNldCArIDFdLnUub3BlcmFuZCA9IHZpcnR1YWxSZWdp
c3RlckZvckxvY2FsKGxvY2FsKS5vZmZzZXQoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1f
aW5zdHJ1Y3Rpb25zW29mZnNldCArIDJdLnUub3BlcmFuZCA9IGdlbmVyYXRvckZyYW1lSW5kZXg7
CisgICAgICAgICAgICAgICAgICAgICAgICBtX2luc3RydWN0aW9uc1tvZmZzZXQgKyAzXS51LnVu
c2lnbmVkVmFsdWUgPSBpbmRleDsKKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICAgICAgbV9pbnN0cnVjdGlvbnNbc2F2ZVBvaW50Qnl0ZWNv
ZGVPZmZzZXRdID0gdm0uaW50ZXJwcmV0ZXItPmdldE9wY29kZShvcF9zYXZlKTsKICAgICAgICAg
ICAgICAgICArK2xpdmVDYWxsZWVMb2NhbHNJbmRleDsKICAgICAgICAgICAgIH0KICAgICAgICAg
fQorICAgICAgICAvLyBGaWxsIG9wX25ld19nZW5lcmF0b3JfZnJhbWUncyBzaXplLgorICAgICAg
ICBtX2luc3RydWN0aW9uc1tuZXdHZW5lcmF0b3JGcmFtZUluc3RydWN0aW9uT2Zmc2V0ICsgMl0u
dS51bnNpZ25lZFZhbHVlID0gbWF4R2VuZXJhdG9yRnJhbWVTaXplOwogICAgIH0KIAogICAgIC8v
IFNldCBvcHRpbWl6YXRpb24gdGhyZXNob2xkcyBvbmx5IGFmdGVyIG1faW5zdHJ1Y3Rpb25zIGlz
IGluaXRpYWxpemVkLCBzaW5jZSB0aGVzZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmNwcAppbmRleCBlMmNiMDAwNDgzNzk0YmE5
MmQ1MTBkY2Y1ZmE5OTQ4ODVhMjNkYzNkLi4yZjM1Y2ZiMzk5NTcwNzU4OGMyYzU4YTQyOTM0NzQx
MzQzYjdlNTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJl
Y2lzZUp1bXBUYXJnZXRzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
UHJlY2lzZUp1bXBUYXJnZXRzLmNwcApAQCAtNTQsNyArNTQsNyBAQCBzdGF0aWMgdm9pZCBnZXRK
dW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBJbnRlcnBy
ZXRlciogaQogICAgIGNhc2Ugb3Bfam5sZXNzZXE6CiAgICAgY2FzZSBvcF9qbmdyZWF0ZXI6CiAg
ICAgY2FzZSBvcF9qbmdyZWF0ZXJlcToKLSAgICBjYXNlIG9wX3NhdmU6IC8vIFRoZSBqdW1wIG9m
IG9wX3NhdmUgaXMgcHVyZWx5IGZvciBjYWxjdWxhdGluZyBsaXZlbmVzcy4KKyAgICBjYXNlIG9w
X3NhdmVfaGludDogLy8gVGhlIGp1bXAgb2Ygb3Bfc2F2ZV9oaW50IGlzIHB1cmVseSBmb3IgY2Fs
Y3VsYXRpbmcgbGl2ZW5lc3MuCiAgICAgICAgIG91dC5hcHBlbmQoYnl0ZWNvZGVPZmZzZXQgKyBj
dXJyZW50WzNdLnUub3BlcmFuZCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ugb3Bfc3dpdGNo
X2ltbToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0
ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXggZDE1ZTIyNDM1MjY2ZmUxYWZmM2Q1Zjc5YTFkZGE3
NWI5YmRhZjNmMy4uMzRiOGY2MTEwNzRlNWVhMzVlZDM3NGMxMjc4ODNmNTIxOWYxZjc3OCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5jcHAKQEAgLTI1Nyw3ICsyNTcsNyBAQCBQYXJzZXJFcnJvciBCeXRlY29kZUdl
bmVyYXRvcjo6Z2VuZXJhdGUoKQogICAgICAgICAvLyAgICBmdW5jdGlvbiAqZ2VuKGEsIGIgPSBo
ZWxsbygpKQogICAgICAgICAvLyAgICB7CiAgICAgICAgIC8vICAgICAgICByZXR1cm4gewotICAg
ICAgICAvLyAgICAgICAgICAgIEBnZW5lcmF0b3JOZXh0OiBmdW5jdGlvbiAoQGdlbmVyYXRvciwg
QGdlbmVyYXRvclN0YXRlLCBAZ2VuZXJhdG9yVmFsdWUsIEBnZW5lcmF0b3JSZXN1bWVNb2RlKQor
ICAgICAgICAvLyAgICAgICAgICAgIEBnZW5lcmF0b3JOZXh0OiBmdW5jdGlvbiAoQGdlbmVyYXRv
ciwgQGdlbmVyYXRvclN0YXRlLCBAZ2VuZXJhdG9yVmFsdWUsIEBnZW5lcmF0b3JSZXN1bWVNb2Rl
LCBAZ2VuZXJhdG9yRnJhbWUpCiAgICAgICAgIC8vICAgICAgICAgICAgewogICAgICAgICAvLyAg
ICAgICAgICAgICAgICBhcmd1bWVudHM7ICAvLyBUaGlzIGBhcmd1bWVudHNgIHNob3VsZCByZWZl
cmVuY2UgdG8gdGhlIGdlbidzIGFyZ3VtZW50cy4KICAgICAgICAgLy8gICAgICAgICAgICAgICAg
Li4uCkBAIC01MzcsNiArNTM3LDkgQEAgUGFyc2VyRXJyb3IgQnl0ZWNvZGVHZW5lcmF0b3I6Omdl
bmVyYXRlKCkKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yQm9keU1vZGU6IHsK
ICAgICAgICAgLy8gfHRoaXN8IGlzIGFscmVhZHkgZmlsbGVkIGNvcnJlY3RseSBiZWZvcmUgaGVy
ZS4KICAgICAgICAgZW1pdExvYWQobV9uZXdUYXJnZXRSZWdpc3RlciwganNVbmRlZmluZWQoKSk7
CisKKyAgICAgICAgZW1pdE5ld0dlbmVyYXRvckZyYW1lKGdlbmVyYXRvckZyYW1lUmVnaXN0ZXIo
KSk7CisgICAgICAgIGVtaXRQdXRCeUlkKGdlbmVyYXRvclJlZ2lzdGVyKCksIHByb3BlcnR5TmFt
ZXMoKS5nZW5lcmF0b3JGcmFtZVByaXZhdGVOYW1lLCBnZW5lcmF0b3JGcmFtZVJlZ2lzdGVyKCkp
OwogICAgICAgICBicmVhazsKICAgICB9CiAKQEAgLTI3NDQsNiArMjc0NywxNCBAQCBSZWdpc3Rl
cklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uKFJlZ2lzdGVySUQqIGRzdCwg
RnVuY3Rpb25NZXRhZGF0YQogICAgIHJldHVybiBkc3Q7CiB9CiAKK1JlZ2lzdGVySUQqIEJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0TmV3R2VuZXJhdG9yRnJhbWUoUmVnaXN0ZXJJRCogZHN0KQorewor
ICAgIGVtaXRPcGNvZGUob3BfbmV3X2dlbmVyYXRvcl9mcmFtZSk7CisgICAgaW5zdHJ1Y3Rpb25z
KCkuYXBwZW5kKGRzdC0+aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDApOwor
ICAgIHJldHVybiBkc3Q7Cit9CisKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
Q2FsbChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGZ1bmMsIEV4cGVjdGVkRnVuY3Rpb24g
ZXhwZWN0ZWRGdW5jdGlvbiwgQ2FsbEFyZ3VtZW50cyYgY2FsbEFyZ3VtZW50cywgY29uc3QgSlNU
ZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29u
c3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKQogewogICAgIHJldHVybiBlbWl0Q2FsbChvcF9j
YWxsLCBkc3QsIGZ1bmMsIGV4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90LCBk
aXZvdFN0YXJ0LCBkaXZvdEVuZCk7CkBAIC00MTQ0LDggKzQxNTUsOCBAQCB2b2lkIEJ5dGVjb2Rl
R2VuZXJhdG9yOjplbWl0WWllbGRQb2ludChSZWdpc3RlcklEKiBhcmd1bWVudCkKIHZvaWQgQnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRTYXZlKExhYmVsKiBtZXJnZVBvaW50LCB1bnNpZ25lZCBsaXZl
Q2FsbGVlTG9jYWxzSW5kZXgpCiB7CiAgICAgc2l6ZV90IGJlZ2luID0gaW5zdHJ1Y3Rpb25zKCku
c2l6ZSgpOwotICAgIGVtaXRPcGNvZGUob3Bfc2F2ZSk7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKG1fZ2VuZXJhdG9yUmVnaXN0ZXItPmluZGV4KCkpOworICAgIGVtaXRPcGNvZGUob3Bfc2F2
ZV9oaW50KTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZ2VuZXJhdG9yRnJhbWVSZWdpc3Rl
cigpLT5pbmRleCgpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobGl2ZUNhbGxlZUxvY2Fs
c0luZGV4KTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobWVyZ2VQb2ludC0+YmluZChiZWdp
biwgaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKSk7CiB9CkBAIC00MTUzLDkgKzQxNjQsMzEgQEAgdm9p
ZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFNhdmUoTGFiZWwqIG1lcmdlUG9pbnQsIHVuc2lnbmVk
IGxpdmVDYWxsZWVMb2NhbHNJbmQKIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXN1bWUo
TGFiZWwqIG1lcmdlUG9pbnQsIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCkKIHsKICAg
ICBlbWl0R2VuZXJhdG9yU3RhdGVMYWJlbCgpOwotICAgIGVtaXRPcGNvZGUob3BfcmVzdW1lKTsK
LSAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobV9nZW5lcmF0b3JSZWdpc3Rlci0+aW5kZXgoKSk7
CisKKyAgICByZWNsYWltRnJlZVJlZ2lzdGVycygpOworICAgIHVuc2lnbmVkIG1heExpdmVMb2Nh
bHMgPSAwOworICAgIGZvciAoY29uc3QgUmVnaXN0ZXJJRCYgcmVnIDogbV9jYWxsZWVMb2NhbHMp
IHsKKyAgICAgICAgaWYgKHJlZy5yZWZDb3VudCgpKQorICAgICAgICAgICAgKyttYXhMaXZlTG9j
YWxzOworICAgIH0KKworICAgIC8vIFRoaXMgb3BfcmVzdW1lX2hpbnQgd2lsbCBiZSByZXBsYWNl
ZCB3aXRoIHRoZSBhY3R1YWwgb3BzLgorICAgIGlmIChtYXhMaXZlTG9jYWxzKQorICAgICAgICBt
YXhMaXZlTG9jYWxzIC09IDE7CisKKyAgICBlbWl0T3Bjb2RlKG9wX3Jlc3VtZV9oaW50KTsKKyAg
ICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZ2VuZXJhdG9yRnJhbWVSZWdpc3RlcigpLT5pbmRleCgp
KTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobGl2ZUNhbGxlZUxvY2Fsc0luZGV4KTsKKyAg
ICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobWF4TGl2ZUxvY2Fscyk7CisgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IG1heExpdmVMb2NhbHM7ICsraSkgeworICAgICAgICAvLyBOb3Agc3BhY2Uu
IExhdGVyIHdlIHdpbGwgZmlsbCB0aGlzIHdpdGggdGhlIGFjdHVhbCByZXN1bWUgb3BlcmF0aW9u
cy4KKyAgICAgICAgZW1pdE9wY29kZShvcF9ub3ApOworICAgICAgICBlbWl0T3Bjb2RlKG9wX25v
cCk7CisgICAgICAgIGVtaXRPcGNvZGUob3Bfbm9wKTsKKyAgICAgICAgZW1pdE9wY29kZShvcF9u
b3ApOworICAgIH0KKyAgICBlbWl0T3Bjb2RlKG9wX2NsZWFyX2dlbmVyYXRvcl9mcmFtZSk7Cisg
ICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGdlbmVyYXRvckZyYW1lUmVnaXN0ZXIoKS0+aW5kZXgo
KSk7CiAgICAgZW1pdExhYmVsKG1lcmdlUG9pbnQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5kZXggN2Qw
YzIwYjZmNTE2YTE3ZTg5M2YxYmJhMDgwM2MxMzMzZmZjOGQwZC4uM2QzMzQ3ODE1YWMzMGE4MmU2
MjZlM2UwNzgwODFiZTJiM2U5YmUzZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAtNTIyLDYgKzUyMiw3IEBA
CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdEZWZhdWx0Q29uc3RydWN0b3IoUmVnaXN0ZXJJ
RCogZHN0LCBDb25zdHJ1Y3RvcktpbmQsIGNvbnN0IElkZW50aWZpZXImIG5hbWUpOwogICAgICAg
ICBSZWdpc3RlcklEKiBlbWl0TmV3QXJyb3dGdW5jdGlvbkV4cHJlc3Npb24oUmVnaXN0ZXJJRCos
IEFycm93RnVuY0V4cHJOb2RlKik7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdSZWdFeHAo
UmVnaXN0ZXJJRCogZHN0LCBSZWdFeHAqKTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdE5ld0dl
bmVyYXRvckZyYW1lKFJlZ2lzdGVySUQqIGRzdCk7CiAKICAgICAgICAgUmVnaXN0ZXJJRCogZW1p
dE1vdmVMaW5rVGltZUNvbnN0YW50KFJlZ2lzdGVySUQqIGRzdCwgTGlua1RpbWVDb25zdGFudCk7
CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRNb3ZlRW1wdHlWYWx1ZShSZWdpc3RlcklEKiBkc3Qp
OwpAQCAtNjg0LDYgKzY4NSw3IEBACiAgICAgICAgIFJlZ2lzdGVySUQqIGdlbmVyYXRvclN0YXRl
UmVnaXN0ZXIoKSB7IHJldHVybiAmbV9wYXJhbWV0ZXJzWzJdOyB9CiAgICAgICAgIFJlZ2lzdGVy
SUQqIGdlbmVyYXRvclZhbHVlUmVnaXN0ZXIoKSB7IHJldHVybiAmbV9wYXJhbWV0ZXJzWzNdOyB9
CiAgICAgICAgIFJlZ2lzdGVySUQqIGdlbmVyYXRvclJlc3VtZU1vZGVSZWdpc3RlcigpIHsgcmV0
dXJuICZtX3BhcmFtZXRlcnNbNF07IH0KKyAgICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9yRnJh
bWVSZWdpc3RlcigpIHsgcmV0dXJuICZtX3BhcmFtZXRlcnNbNV07IH0KIAogICAgICAgICBDb2Rl
VHlwZSBjb2RlVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZVR5cGU7IH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEhlYXAuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RIZWFwLmgKaW5kZXggNGRlYzhmYTAzNzc2ZTAx
ZTZjZDM3NDYwNjU5Y2M1NjExNjIzOGM2NS4uOWM4NmY2OTJiOGQzODVkOWViMjQ2OTdkNzkyNzlk
ZjZjZGY0NWNlNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0
cmFjdEhlYXAuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SGVh
cC5oCkBAIC02OCw2ICs2OCw4IEBACiAgICAgbWFjcm8oU2NvcGVQcm9wZXJ0aWVzKSBcCiAgICAg
bWFjcm8oVHlwZWRBcnJheVByb3BlcnRpZXMpIFwKICAgICBtYWNybyhIZWFwT2JqZWN0Q291bnQp
IC8qIFVzZWQgdG8gcmVmbGVjdCB0aGUgZmFjdCB0aGF0IHNvbWUgYWxsb2NhdGlvbnMgcmV2ZWFs
IG9iamVjdCBpZGVudGl0eSAqL1wKKyAgICBtYWNybyhHZW5lcmF0b3JMb2NhbHMpIFwKKyAgICBt
YWNybyhHZW5lcmF0b3JMb2NhbENvdW50KSBcCiAgICAgbWFjcm8oUmVnRXhwU3RhdGUpIFwKICAg
ICBtYWNybyhNYXRoRG90UmFuZG9tU3RhdGUpIFwKICAgICBtYWNybyhJbnRlcm5hbFN0YXRlKSBc
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJw
cmV0ZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50
ZXJwcmV0ZXJJbmxpbmVzLmgKaW5kZXggOWVlYzYzY2ViMDcxYmMxNDg2YTAxMmMyODUwMWRiNjI0
MjZiZGU3Yi4uODI1MDgzNjhjOWE4ODA0MjMzMTBhMTM5NDE2ZGU3MTUzZTFjYzk0MCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5s
aW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnBy
ZXRlcklubGluZXMuaApAQCAtMTY4Nyw2ICsxNjg3LDEwIEBACiAgICAgY2FzZSBOZXdSZWdleHA6
CiAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0
Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyktPnJlZ0V4cFN0cnVjdHVyZSgpKTsKICAgICAgICAg
YnJlYWs7CisKKyAgICBjYXNlIE5ld0dlbmVyYXRvckZyYW1lOgorICAgICAgICBmb3JOb2RlKG5v
ZGUpLnNldChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpLT5nZW5lcmF0b3JGcmFtZVN0cnVjdHVyZSgpKTsKKyAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICAKICAgICBjYXNlIFRvVGhpczogewogICAgICAgICBBYnN0cmFjdFZhbHVlJiBzb3Vy
Y2UgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKTsKQEAgLTI1MTAsNiArMjUxNCwxNSBAQAogICAg
ICAgICBmb3JOb2RlKG5vZGUpLm1ha2VIZWFwVG9wKCk7CiAgICAgICAgIGJyZWFrOwogCisgICAg
Y2FzZSBTZXRHZW5lcmF0b3JMb2NhbDoKKyAgICBjYXNlIFB1dEdlbmVyYXRvckZyYW1lTG9jYWxz
OgorICAgICAgICBicmVhazsKKworICAgIGNhc2UgR2V0R2VuZXJhdG9yTG9jYWw6IHsKKyAgICAg
ICAgZm9yTm9kZShub2RlKS5tYWtlSGVhcFRvcCgpOworICAgICAgICBicmVhazsKKyAgICB9CisK
ICAgICBjYXNlIEZvcmNlT1NSRXhpdDoKICAgICBjYXNlIENoZWNrQmFkQ2VsbDoKICAgICAgICAg
bV9zdGF0ZS5zZXRJc1ZhbGlkKGZhbHNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQmFja3dhcmRzUHJvcGFnYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0JhY2t3YXJkc1Byb3BhZ2F0aW9uUGhhc2UuY3BwCmluZGV4IGJmNjUx
ODg2ZTNhZjk1YTM0NjYwNGJlM2U1NmIwMGZmNDE3MDBiYjcuLmZjNWM2MGVhZTA1NjUzYmMyZWVh
ZDNlOWNiM2ZhOTk2MTYwMTIzNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQmFja3dhcmRzUHJvcGFnYXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdCYWNrd2FyZHNQcm9wYWdhdGlvblBoYXNlLmNwcApAQCAtNDAzLDYgKzQw
MywyMiBAQCBjbGFzcyBCYWNrd2FyZHNQcm9wYWdhdGlvblBoYXNlIDogcHVibGljIFBoYXNlIHsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKKyAgICAgICAgY2FzZSBHZXRHZW5lcmF0
b3JMb2NhbDogeworICAgICAgICAgICAgR2VuZXJhdG9yTG9jYWxEYXRhKiBnZW5lcmF0b3JMb2Nh
bERhdGEgPSBub2RlLT5nZW5lcmF0b3JMb2NhbERhdGEoKTsKKyAgICAgICAgICAgIGZsYWdzICY9
IH5Ob2RlQnl0ZWNvZGVVc2VzQXNJbnQ7IC8vIFdlIGRvbid0IGNhcmUgYWJvdXQgY3Jvc3MtYmxv
Y2sgdXNlcy1hcy1pbnQuCisgICAgICAgICAgICBtX2NoYW5nZWQgfD0gZ2VuZXJhdG9yTG9jYWxE
YXRhLT5tZXJnZUZsYWdzKGZsYWdzKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisK
KyAgICAgICAgY2FzZSBTZXRHZW5lcmF0b3JMb2NhbDogeworICAgICAgICAgICAgR2VuZXJhdG9y
TG9jYWxEYXRhKiBnZW5lcmF0b3JMb2NhbERhdGEgPSBub2RlLT5nZW5lcmF0b3JMb2NhbERhdGEo
KTsKKyAgICAgICAgICAgIGZsYWdzID0gZ2VuZXJhdG9yTG9jYWxEYXRhLT5mbGFncygpOworICAg
ICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIShmbGFncyAmIH5Ob2RlQnl0ZWNvZGVCYWNrUHJvcE1h
c2spKTsKKyAgICAgICAgICAgIGZsYWdzIHw9IE5vZGVCeXRlY29kZVVzZXNBc051bWJlcjsgLy8g
QWNjb3VudCBmb3IgdGhlIGZhY3QgdGhhdCBjb250cm9sIGZsb3cgbWF5IGNhdXNlIG92ZXJmbG93
cyB0aGF0IG91ciBtb2RlbGluZyBjYW4ndCBoYW5kbGUuCisgICAgICAgICAgICBub2RlLT5jaGls
ZDIoKS0+bWVyZ2VGbGFncyhmbGFncyk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor
CiAgICAgICAgIGNhc2UgSWRlbnRpdHk6IAogICAgICAgICAgICAgLy8gVGhpcyB3b3VsZCBiZSB0
cml2aWFsIHRvIGhhbmRsZSBidXQgd2UganVzdCBhc3NlcnQgdGhhdCB3ZSBjYW5ub3Qgc2VlIHRo
ZXNlIHlldC4KICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCmluZGV4IDM2
NDRhMmZkMTlhMGQ5YjNkZGE3YjA2OGEwMDQ5MGE1ODI2MjA4NmQuLjYwMzU2MTIyZjU4OWVkMDMy
ZDlmY2MxYmZkYWZhMjc4NzAxZDc1ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiREZH
QXJyYXlNb2RlLmgiCiAjaW5jbHVkZSAiREZHQ2FwYWJpbGl0aWVzLmgiCiAjaW5jbHVkZSAiREZH
Q2xvYmJlcnNFeGl0U3RhdGUuaCIKKyNpbmNsdWRlICJERkdHZW5lcmF0b3JMb2NhbERhdGEuaCIK
ICNpbmNsdWRlICJERkdHcmFwaC5oIgogI2luY2x1ZGUgIkRGR0pJVENvZGUuaCIKICNpbmNsdWRl
ICJHZXRCeUlkU3RhdHVzLmgiCkBAIC05NjMsNiArOTY0LDExIEBAIGNsYXNzIEJ5dGVDb2RlUGFy
c2VyIHsKICAgICAgICAgZm9yIChBcmd1bWVudFBvc2l0aW9uKiBhcmd1bWVudCA6IG1faW5saW5l
U3RhY2tUb3AtPm1fYXJndW1lbnRQb3NpdGlvbnMpCiAgICAgICAgICAgICBhcmd1bWVudC0+bWVy
Z2VTaG91bGROZXZlclVuYm94KHRydWUpOwogICAgIH0KKworICAgIEdlbmVyYXRvckxvY2FsRGF0
YSogbmV3R2VuZXJhdG9yTG9jYWxEYXRhKCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX2dyYXBo
Lm1fZ2VuZXJhdG9yTG9jYWxEYXRhLmFkZCgpOworICAgIH0KICAgICAKICAgICBWTSogbV92bTsK
ICAgICBDb2RlQmxvY2sqIG1fY29kZUJsb2NrOwpAQCAtMTA1MSw2ICsxMDU3LDkgQEAgY2xhc3Mg
Qnl0ZUNvZGVQYXJzZXIgewogICAgICAgICBDYWxsTGlua0luZm9NYXAgbV9jYWxsTGlua0luZm9z
OwogICAgICAgICBTdHViSW5mb01hcCBtX3N0dWJJbmZvczsKICAgICAgICAgQnlWYWxJbmZvTWFw
IG1fYnlWYWxJbmZvczsKKworICAgICAgICAvLyBCYXNpYyBibG9ja3MgcGVyZm9ybWluZyB5aWVs
ZCdzIG9wX3NhdmUgb3BlcmF0aW9uLgorICAgICAgICBWZWN0b3I8T3BlcmFuZHM8R2VuZXJhdG9y
TG9jYWxEYXRhKj4+IG1fZ2VuZXJhdG9yTG9jYWxzOwogICAgICAgICAKICAgICAgICAgLy8gRGlk
IHdlIHNlZSBhbnkgcmV0dXJucz8gV2UgbmVlZCB0byBoYW5kbGUgdGhlICh1bmNvbW1vbiBidXQg
bmVjZXNzYXJ5KQogICAgICAgICAvLyBjYXNlIHdoZXJlIGEgcHJvY2VkdXJlIHRoYXQgZG9lcyBu
b3QgcmV0dXJuIHdhcyBpbmxpbmVkLgpAQCAtMzM0MSw2ICszMzUwLDExIEBAIGJvb2wgQnl0ZUNv
ZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgICAgICBORVhUX09Q
Q09ERShvcF9uZXdfcmVnZXhwKTsKICAgICAgICAgfQogCisgICAgICAgIGNhc2Ugb3BfbmV3X2dl
bmVyYXRvcl9mcmFtZTogeworICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50
SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSwgYWRkVG9HcmFwaChOZXdHZW5lcmF0b3JGcmFtZSwg
T3BJbmZvKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51LnVuc2lnbmVkVmFsdWUpKSk7CisgICAgICAg
ICAgICBORVhUX09QQ09ERShvcF9uZXdfZ2VuZXJhdG9yX2ZyYW1lKTsKKyAgICAgICAgfQorCiAg
ICAgICAgIGNhc2Ugb3BfZ2V0X3Jlc3RfbGVuZ3RoOiB7CiAgICAgICAgICAgICBJbmxpbmVDYWxs
RnJhbWUqIGlubGluZUNhbGxGcmFtZSA9IHRoaXMtPmlubGluZUNhbGxGcmFtZSgpOwogICAgICAg
ICAgICAgTm9kZSogbGVuZ3RoOwpAQCAtMzM2OCw2ICszMzgyLDUxIEBAIGJvb2wgQnl0ZUNvZGVQ
YXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgICAgICAgICAgYXJyYXks
IGFycmF5TGVuZ3RoKTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2NvcHlfcmVzdCk7CiAg
ICAgICAgIH0KKworICAgICAgICBjYXNlIG9wX3NhdmU6IHsKKyAgICAgICAgICAgIE5vZGUqIGZy
YW1lID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5k
KSk7CisgICAgICAgICAgICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSBjdXJyZW50
SW5zdHJ1Y3Rpb25bMl0udS51bnNpZ25lZFZhbHVlOworICAgICAgICAgICAgY29uc3QgRmFzdEJp
dFZlY3RvciYgbGl2ZW5lc3MgPSBtX2lubGluZVN0YWNrVG9wLT5tX2NvZGVCbG9jay0+bGl2ZUNh
bGxlZUxvY2Fsc0F0WWllbGQobGl2ZUNhbGxlZUxvY2Fsc0luZGV4KTsKKworICAgICAgICAgICAg
UkVMRUFTRV9BU1NFUlQobGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID09IG1faW5saW5lU3RhY2tUb3At
Pm1fZ2VuZXJhdG9yTG9jYWxzLnNpemUoKSk7CisgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9w
LT5tX2dlbmVyYXRvckxvY2Fscy5hcHBlbmQoT3BlcmFuZHM8R2VuZXJhdG9yTG9jYWxEYXRhKj4o
bV9udW1Bcmd1bWVudHMsIG1fbnVtTG9jYWxzKSk7CisgICAgICAgICAgICBPcGVyYW5kczxHZW5l
cmF0b3JMb2NhbERhdGEqPiYgb3BlcmFuZHMgPSBtX2lubGluZVN0YWNrVG9wLT5tX2dlbmVyYXRv
ckxvY2Fscy5sYXN0KCk7CisKKyAgICAgICAgICAgIGFkZFRvR3JhcGgoUHV0R2VuZXJhdG9yRnJh
bWVMb2NhbHMsIE9wSW5mbyhsaXZlbmVzcy5iaXRDb3VudCgpKSwgZnJhbWUpOworICAgICAgICAg
ICAgdW5zaWduZWQgZ2VuZXJhdG9yRnJhbWVJbmRleCA9IDA7CisgICAgICAgICAgICBsaXZlbmVz
cy5mb3JFYWNoU2V0Qml0KFsmXShzaXplX3QgaW5kZXgpIHsKKyAgICAgICAgICAgICAgICBWaXJ0
dWFsUmVnaXN0ZXIgb3BlcmFuZCA9IHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGluZGV4KTsKKyAg
ICAgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgcmVtYXBwZWRPcGVyYW5kID0gbV9pbmxpbmVT
dGFja1RvcC0+cmVtYXBPcGVyYW5kKG9wZXJhbmQpOworICAgICAgICAgICAgICAgIE5vZGUqIGxv
Y2FsID0gZ2V0KG9wZXJhbmQpOworICAgICAgICAgICAgICAgIEdlbmVyYXRvckxvY2FsRGF0YSog
Z2VuZXJhdG9yTG9jYWxEYXRhID0gbmV3R2VuZXJhdG9yTG9jYWxEYXRhKCk7CisgICAgICAgICAg
ICAgICAgb3BlcmFuZHMubG9jYWwocmVtYXBwZWRPcGVyYW5kLnRvTG9jYWwoKSkgPSBnZW5lcmF0
b3JMb2NhbERhdGE7CisgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChTZXRHZW5lcmF0b3JMb2Nh
bCwgT3BJbmZvKGdlbmVyYXRvckZyYW1lSW5kZXgrKyksIE9wSW5mbyhnZW5lcmF0b3JMb2NhbERh
dGEpLCBmcmFtZSwgbG9jYWwpOworICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBORVhUX09Q
Q09ERShvcF9zYXZlKTsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2Ugb3BfcmVzdW1lX2Zyb21f
Z2VuZXJhdG9yX2ZyYW1lOiB7CisgICAgICAgICAgICBOb2RlKiBmcmFtZSA9IGdldChWaXJ0dWFs
UmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCkpOworICAgICAgICAgICAg
T3BlcmFuZHM8R2VuZXJhdG9yTG9jYWxEYXRhKj4mIG9wZXJhbmRzID0gbV9pbmxpbmVTdGFja1Rv
cC0+bV9nZW5lcmF0b3JMb2NhbHMubGFzdCgpOworICAgICAgICAgICAgdW5zaWduZWQgZ2VuZXJh
dG9yRnJhbWVJbmRleCA9IGN1cnJlbnRJbnN0cnVjdGlvblszXS51LnVuc2lnbmVkVmFsdWU7Cisg
ICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0u
dS5vcGVyYW5kKTsKKyAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciByZW1hcHBlZE9wZXJhbmQg
PSBtX2lubGluZVN0YWNrVG9wLT5yZW1hcE9wZXJhbmQob3BlcmFuZCk7CisgICAgICAgICAgICBH
ZW5lcmF0b3JMb2NhbERhdGEqIGdlbmVyYXRvckxvY2FsRGF0YSA9IG9wZXJhbmRzLmxvY2FsKHJl
bWFwcGVkT3BlcmFuZC50b0xvY2FsKCkpOworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoZ2Vu
ZXJhdG9yTG9jYWxEYXRhKTsKKyAgICAgICAgICAgIHNldChvcGVyYW5kLCBhZGRUb0dyYXBoKEdl
dEdlbmVyYXRvckxvY2FsLCBPcEluZm8oZ2VuZXJhdG9yRnJhbWVJbmRleCksIE9wSW5mbyhnZW5l
cmF0b3JMb2NhbERhdGEpLCBmcmFtZSkpOworICAgICAgICAgICAgTkVYVF9PUENPREUob3BfcmVz
dW1lX2Zyb21fZ2VuZXJhdG9yX2ZyYW1lKTsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2Ugb3Bf
Y2xlYXJfZ2VuZXJhdG9yX2ZyYW1lOiB7CisgICAgICAgICAgICBOb2RlKiBmcmFtZSA9IGdldChW
aXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCkpOworICAgICAg
ICAgICAgYWRkVG9HcmFwaChQdXRHZW5lcmF0b3JGcmFtZUxvY2FscywgT3BJbmZvKDApLCBmcmFt
ZSk7CisgICAgICAgICAgICBORVhUX09QQ09ERShvcF9jbGVhcl9nZW5lcmF0b3JfZnJhbWUpOwor
ICAgICAgICB9CisKKyAgICAgICAgY2FzZSBvcF9ub3A6IHsKKyAgICAgICAgICAgIE5FWFRfT1BD
T0RFKG9wX25vcCk7CisgICAgICAgIH0KKwogICAgICAgICAgICAgCiAgICAgICAgIC8vID09PSBC
aXR3aXNlIG9wZXJhdGlvbnMgPT09CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q2FwYWJpbGl0aWVzLmNwcAppbmRleCBkMTAwZDk3ZDVjNjBlMjVhMDYwZmZkYTQ1NjYzYjNiOTQx
NDM1ZGM2Li5hNTgyZjg3MjA3NmNmZjg5NDI4M2ViYTMxYTQ5OTc3NjMwZGM3ODkwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCkBAIC0xODEsNiAr
MTgxLDcgQEAgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbChPcGNvZGVJRCBvcGNvZGVJ
RCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEluc3RydWMKICAgICBjYXNlIG9wX25ld19hcnJheToK
ICAgICBjYXNlIG9wX25ld19hcnJheV93aXRoX3NpemU6CiAgICAgY2FzZSBvcF9uZXdfYXJyYXlf
YnVmZmVyOgorICAgIGNhc2Ugb3BfbmV3X2dlbmVyYXRvcl9mcmFtZToKICAgICBjYXNlIG9wX3N0
cmNhdDoKICAgICBjYXNlIG9wX3RvX3ByaW1pdGl2ZToKICAgICBjYXNlIG9wX3Rocm93OgpAQCAt
MjI0LDYgKzIyNSwxMCBAQCBDYXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVsKE9wY29kZUlE
IG9wY29kZUlELCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSW5zdHJ1YwogICAgIGNhc2Ugb3BfY2F0
Y2g6CiAgICAgY2FzZSBvcF9jb3B5X3Jlc3Q6CiAgICAgY2FzZSBvcF9nZXRfcmVzdF9sZW5ndGg6
CisgICAgY2FzZSBvcF9zYXZlOgorICAgIGNhc2Ugb3BfcmVzdW1lX2Zyb21fZ2VuZXJhdG9yX2Zy
YW1lOgorICAgIGNhc2Ugb3BfY2xlYXJfZ2VuZXJhdG9yX2ZyYW1lOgorICAgIGNhc2Ugb3Bfbm9w
OgogICAgICAgICByZXR1cm4gQ2FuQ29tcGlsZUFuZElubGluZTsKIAogICAgIGNhc2Ugb3BfcHV0
X3RvX3Njb3BlOiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Ns
b2JiZXJpemUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCmlu
ZGV4IDM0M2E2ZGU5YzI5MDliOTNlMDUyOGNmMDI3ODRhYWQ5NGQwMWI0ZDEuLmYzZTZlYWEyOWRm
NmRkZWU4MjNmZDM1N2MxNTMwNTAyMGU5NzQ1YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ2xvYmJlcml6ZS5oCkBAIC0xMDQ0LDYgKzEwNDQsNyBAQCB2b2lkIGNsb2JiZXJpemUo
R3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3Qg
V3JpdGVGdQogCiAgICAgY2FzZSBOZXdPYmplY3Q6CiAgICAgY2FzZSBOZXdSZWdleHA6CisgICAg
Y2FzZSBOZXdHZW5lcmF0b3JGcmFtZToKICAgICBjYXNlIE5ld1N0cmluZ09iamVjdDoKICAgICBj
YXNlIFBoYW50b21OZXdPYmplY3Q6CiAgICAgY2FzZSBNYXRlcmlhbGl6ZU5ld09iamVjdDoKQEAg
LTExMTEsNiArMTExMiwyMyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBu
b2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgICAgICAgICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQorCisgICAgY2FzZSBTZXRHZW5lcmF0b3JMb2NhbDogeworICAgICAgICByZWFkKEdlbmVy
YXRvckxvY2FsQ291bnQpOworICAgICAgICB3cml0ZShHZW5lcmF0b3JMb2NhbHMpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgY2FzZSBHZXRHZW5lcmF0b3JMb2NhbDogeworICAgICAg
ICByZWFkKEdlbmVyYXRvckxvY2FsQ291bnQpOworICAgICAgICByZWFkKEdlbmVyYXRvckxvY2Fs
cyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBjYXNlIFB1dEdlbmVyYXRvckZyYW1l
TG9jYWxzOiB7CisgICAgICAgIHdyaXRlKEdlbmVyYXRvckxvY2FsQ291bnQpOworICAgICAgICBy
ZXR1cm47CisgICAgfQogICAgICAgICAKICAgICBjYXNlIFRocm93UmVmZXJlbmNlRXJyb3I6CiAg
ICAgICAgIHdyaXRlKFNpZGVTdGF0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ2xvYmJlcnNFeGl0U3RhdGUuY3BwCmluZGV4IDRlMGM1MDc3ODljZDdiM2ZmNDc3NTFm
OTI1ZTc0ODNlNjFlMmRmNWIuLmNiOTQxM2JkZjA2N2QxNjA5ZmMxZTg0NGZkNThmM2VhY2ViNmZi
NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcnNFeGl0
U3RhdGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcnNFeGl0
U3RhdGUuY3BwCkBAIC01MywxMCArNTMsMTYgQEAgYm9vbCBjbG9iYmVyc0V4aXRTdGF0ZShHcmFw
aCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgICAgIC8vIGV4aXQgc3RhdGUuCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAorICAgIGNhc2UgUHV0R2VuZXJhdG9yRnJhbWVMb2NhbHM6CisgICAgY2Fz
ZSBTZXRHZW5lcmF0b3JMb2NhbDoKKyAgICBjYXNlIEdldEdlbmVyYXRvckxvY2FsOgorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKICAgICBjYXNlIEFycmF5aWZ5VG9TdHJ1Y3R1cmU6CiAgICAgY2Fz
ZSBBcnJheWlmeToKICAgICBjYXNlIE5ld09iamVjdDoKICAgICBjYXNlIE5ld1JlZ2V4cDoKKyAg
ICBjYXNlIE5ld0dlbmVyYXRvckZyYW1lOgogICAgIGNhc2UgTmV3U3RyaW5nT2JqZWN0OgogICAg
IGNhc2UgUGhhbnRvbU5ld09iamVjdDoKICAgICBjYXNlIE1hdGVyaWFsaXplTmV3T2JqZWN0Ogpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCmluZGV4IDcwMmRhNWJmMWU3YzBm
MWM4ZmU1NWM2NDg0NDU4ZmNhZDgxZTJhYTUuLmU0MThkNzg3NjZlYTY0ZjMwMWRkMGQzYTRkNzUw
YjRhODI1MDZiMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9l
c0dDLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKQEAg
LTIyOSw2ICsyMjksOSBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAg
ICAgY2FzZSBHZXRGcm9tQXJndW1lbnRzOgogICAgIGNhc2UgUHV0VG9Bcmd1bWVudHM6CiAgICAg
Y2FzZSBDb3B5UmVzdDoKKyAgICBjYXNlIFNldEdlbmVyYXRvckxvY2FsOgorICAgIGNhc2UgR2V0
R2VuZXJhdG9yTG9jYWw6CisgICAgY2FzZSBQdXRHZW5lcmF0b3JGcmFtZUxvY2FsczoKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCiAgICAgY2FzZSBDcmVhdGVBY3RpdmF0aW9uOgpAQCAtMjQ2LDYg
KzI0OSw3IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNl
IE5ld0FycmF5V2l0aFNpemU6CiAgICAgY2FzZSBOZXdBcnJheUJ1ZmZlcjoKICAgICBjYXNlIE5l
d1JlZ2V4cDoKKyAgICBjYXNlIE5ld0dlbmVyYXRvckZyYW1lOgogICAgIGNhc2UgTmV3U3RyaW5n
T2JqZWN0OgogICAgIGNhc2UgTWFrZVJvcGU6CiAgICAgY2FzZSBOZXdBcnJvd0Z1bmN0aW9uOgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKaW5kZXggYzlkNWFi
ZmI0OTQ4MWI5MDU4OWVjNGZiYTU5NWEyY2U4ZTcwZGY2Ny4uODc5YmU5ZGUyMTIwODZkOWFkZmRm
NjEyNzcyZjdmMjNmNmIzYWI4YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdGaXh1cFBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Zp
eHVwUGhhc2UuY3BwCkBAIC0xNDMwLDYgKzE0MzAsMjEgQEAgY2xhc3MgRml4dXBQaGFzZSA6IHB1
YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCisgICAgICAgIGNh
c2UgU2V0R2VuZXJhdG9yTG9jYWw6IHsKKyAgICAgICAgICAgIGZpeEVkZ2U8Q2VsbFVzZT4obm9k
ZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBj
YXNlIEdldEdlbmVyYXRvckxvY2FsOiB7CisgICAgICAgICAgICBmaXhFZGdlPENlbGxVc2U+KG5v
ZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAg
Y2FzZSBQdXRHZW5lcmF0b3JGcmFtZUxvY2FsczogeworICAgICAgICAgICAgZml4RWRnZTxDZWxs
VXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCiAj
aWYgIUFTU0VSVF9ESVNBQkxFRAogICAgICAgICAvLyBIYXZlIHRoZXNlIG5vLW9wIGNhc2VzIGhl
cmUgdG8gZW5zdXJlIHRoYXQgbm9ib2R5IGZvcmdldHMgdG8gYWRkIGhhbmRsZXJzIGZvciBuZXcg
b3Bjb2Rlcy4KICAgICAgICAgY2FzZSBTZXRBcmd1bWVudDoKQEAgLTE0NjIsNiArMTQ3Nyw3IEBA
IGNsYXNzIEZpeHVwUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICBjYXNlIE5ld09iamVj
dDoKICAgICAgICAgY2FzZSBOZXdBcnJheUJ1ZmZlcjoKICAgICAgICAgY2FzZSBOZXdSZWdleHA6
CisgICAgICAgIGNhc2UgTmV3R2VuZXJhdG9yRnJhbWU6CiAgICAgICAgIGNhc2UgQnJlYWtwb2lu
dDoKICAgICAgICAgY2FzZSBQcm9maWxlV2lsbENhbGw6CiAgICAgICAgIGNhc2UgUHJvZmlsZURp
ZENhbGw6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dlbmVyYXRv
ckxvY2FsRGF0YS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHZW5lcmF0b3JMb2Nh
bERhdGEuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40YWEzNjViYjhmM2Q5ODdiZWEyZDUwNTQ0ZGNhZTdhM2Y4NWNi
ZWVlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHZW5l
cmF0b3JMb2NhbERhdGEuaApAQCAtMCwwICsxLDY5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE2IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIERGR0dlbmVyYXRvckxvY2Fs
RGF0YV9oCisjZGVmaW5lIERGR0dlbmVyYXRvckxvY2FsRGF0YV9oCisKKyNpZiBFTkFCTEUoREZH
X0pJVCkKKworI2luY2x1ZGUgIkRGR0NvbW1vbi5oIgorI2luY2x1ZGUgIkRGR05vZGVGbGFncy5o
IgorI2luY2x1ZGUgIkRGR1ZhcmlhYmxlQWNjZXNzRGF0YS5oIgorI2luY2x1ZGUgIlNwZWN1bGF0
ZWRUeXBlLmgiCisjaW5jbHVkZSAiVmlydHVhbFJlZ2lzdGVyLmgiCisKK25hbWVzcGFjZSBKU0Mg
eyBuYW1lc3BhY2UgREZHIHsKKworc3RydWN0IE5vZGU7CisKK2NsYXNzIEdlbmVyYXRvckxvY2Fs
RGF0YSB7CitwdWJsaWM6CisgICAgYm9vbCBwcmVkaWN0KFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rp
b24pCisgICAgeworICAgICAgICByZXR1cm4gbWVyZ2VTcGVjdWxhdGlvbihtX3ByZWRpY3Rpb24s
IHByZWRpY3Rpb24pOworICAgIH0KKworICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24oKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIG1fcHJlZGljdGlvbjsKKyAgICB9CisKKyAgICBOb2RlRmxh
Z3MgZmxhZ3MoKSBjb25zdCB7IHJldHVybiBtX2ZsYWdzOyB9CisKKyAgICBib29sIG1lcmdlRmxh
Z3MoTm9kZUZsYWdzIG5ld0ZsYWdzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGNoZWNrQW5kU2V0
KG1fZmxhZ3MsIG1fZmxhZ3MgfCBuZXdGbGFncyk7CisgICAgfQorCitwcml2YXRlOgorICAgIFNw
ZWN1bGF0ZWRUeXBlIG1fcHJlZGljdGlvbiB7IFNwZWNOb25lIH07CisgICAgTm9kZUZsYWdzIG1f
ZmxhZ3MgeyAwIH07Cit9OworCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCisKKyNlbmRpZiAv
LyBFTkFCTEUoREZHX0pJVCkKKworI2VuZGlmIC8vIERGR1ZhcmlhYmxlQWNjZXNzRGF0YV9oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKaW5kZXggMDlhYWU5NTVmNjZhYTc4OTRhMTQ4
NWUxMzkzN2YzYmE1Mzg4OWQxYy4uNDNmZGJiMWE3MTMwMzQ2YzliZGFmNDlkNGU0MTZiNzI0MTNm
MDYxZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaApAQCAtNjAsNiArNjAsNyBA
QAogY2xhc3MgRG9taW5hdG9yczsKIGNsYXNzIE5hdHVyYWxMb29wczsKIGNsYXNzIFByZVBvc3RO
dW1iZXJpbmc7CitjbGFzcyBHZW5lcmF0b3JMb2NhbERhdGE7CiAKICNkZWZpbmUgREZHX05PREVf
RE9fVE9fQ0hJTERSRU4oZ3JhcGgsIG5vZGUsIHRoaW5nVG9EbykgZG8geyAgICAgICAgICAgIFwK
ICAgICAgICAgTm9kZSogX25vZGUgPSAobm9kZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKQEAgLTg4Nyw2ICs4ODgsNyBAQCBjbGFzcyBHcmFwaCA6IHB1Ymxp
YyB2aXJ0dWFsIFNjYW5uYWJsZSB7CiAgICAgQmFnPENhbGxWYXJhcmdzRGF0YT4gbV9jYWxsVmFy
YXJnc0RhdGE7CiAgICAgQmFnPExvYWRWYXJhcmdzRGF0YT4gbV9sb2FkVmFyYXJnc0RhdGE7CiAg
ICAgQmFnPFN0YWNrQWNjZXNzRGF0YT4gbV9zdGFja0FjY2Vzc0RhdGE7CisgICAgQmFnPEdlbmVy
YXRvckxvY2FsRGF0YT4gbV9nZW5lcmF0b3JMb2NhbERhdGE7CiAgICAgVmVjdG9yPElubGluZVZh
cmlhYmxlRGF0YSwgND4gbV9pbmxpbmVWYXJpYWJsZURhdGE7CiAgICAgSGFzaE1hcDxDb2RlQmxv
Y2sqLCBzdGQ6OnVuaXF1ZV9wdHI8RnVsbEJ5dGVjb2RlTGl2ZW5lc3M+PiBtX2J5dGVjb2RlTGl2
ZW5lc3M7CiAgICAgSGFzaE1hcDxDb2RlQmxvY2sqLCBzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVL
aWxscz4+IG1fYnl0ZWNvZGVLaWxsczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTWF5RXhpdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4
aXQuY3BwCmluZGV4IGRhYTI5MzM5ZGJmYmRmODBhYWQ5YjY0NmEyY2I3YTA1ODdkOTYyMzguLmZj
NTdiODIzMDNjNzliZDEzY2Q1ZDFjZTFiZTBhZmI3MTBjZTZjNzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNwcApAQCAtMTMwLDYgKzEzMCw5IEBAIEV4aXRNb2RlIG1h
eUV4aXQoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgU3RvcmVCYXJyaWVyOgog
ICAgIGNhc2UgUHV0QnlPZmZzZXQ6CiAgICAgY2FzZSBQdXRDbG9zdXJlVmFyOgorICAgIGNhc2Ug
UHV0R2VuZXJhdG9yRnJhbWVMb2NhbHM6CisgICAgY2FzZSBTZXRHZW5lcmF0b3JMb2NhbDoKKyAg
ICBjYXNlIEdldEdlbmVyYXRvckxvY2FsOgogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgU3Ry
Q2F0OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAppbmRleCAxMjg3MGQ5M2QwYzQ4MmU0
ZjhlNWQ0ZDJkYWYxZTZiZjFmNzFiNjJjLi42Mjc0M2FlZjc4NjYzZWVkM2Q0NTgxYWE3OTNjNjFh
MjgxNjlmMTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaApAQCAtMzYsNiArMzYs
NyBAQAogI2luY2x1ZGUgIkRGR0FycmF5TW9kZS5oIgogI2luY2x1ZGUgIkRGR0NvbW1vbi5oIgog
I2luY2x1ZGUgIkRGR0Vwb2NoLmgiCisjaW5jbHVkZSAiREZHR2VuZXJhdG9yTG9jYWxEYXRhLmgi
CiAjaW5jbHVkZSAiREZHTGF6eUpTVmFsdWUuaCIKICNpbmNsdWRlICJERkdNdWx0aUdldEJ5T2Zm
c2V0RGF0YS5oIgogI2luY2x1ZGUgIkRGR05vZGVGbGFncy5oIgpAQCAtODc4LDYgKzg3OSw3MiBA
QCBzdHJ1Y3QgTm9kZSB7CiAgICAgICAgIHJldHVybiBtX29wSW5mbzsKICAgICB9CiAKKyAgICBi
b29sIGhhc0dlbmVyYXRvckZyYW1lU2l6ZSgpCisgICAgeworICAgICAgICBzd2l0Y2ggKG9wKCkp
IHsKKyAgICAgICAgY2FzZSBOZXdHZW5lcmF0b3JGcmFtZToKKyAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICB9CisgICAgfQorCisgICAgdW5zaWduZWQgZ2VuZXJhdG9yRnJhbWVTaXplKCkKKyAgICB7Cisg
ICAgICAgIEFTU0VSVChoYXNHZW5lcmF0b3JGcmFtZVNpemUoKSk7CisgICAgICAgIHJldHVybiBt
X29wSW5mbzsKKyAgICB9CisKKyAgICBib29sIGhhc0dlbmVyYXRvckZyYW1lSW5kZXgoKQorICAg
IHsKKyAgICAgICAgc3dpdGNoIChvcCgpKSB7CisgICAgICAgIGNhc2UgU2V0R2VuZXJhdG9yTG9j
YWw6CisgICAgICAgIGNhc2UgR2V0R2VuZXJhdG9yTG9jYWw6CisgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIHVuc2lnbmVkIGdlbmVyYXRvckZyYW1lSW5kZXgoKQorICAgIHsK
KyAgICAgICAgQVNTRVJUKGhhc0dlbmVyYXRvckZyYW1lSW5kZXgoKSk7CisgICAgICAgIHJldHVy
biBtX29wSW5mbzsKKyAgICB9CisKKyAgICBib29sIGhhc0dlbmVyYXRvckxvY2FsRGF0YSgpCisg
ICAgeworICAgICAgICBzd2l0Y2ggKG9wKCkpIHsKKyAgICAgICAgY2FzZSBTZXRHZW5lcmF0b3JM
b2NhbDoKKyAgICAgICAgY2FzZSBHZXRHZW5lcmF0b3JMb2NhbDoKKyAgICAgICAgICAgIHJldHVy
biB0cnVlOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICB9CisgICAgfQorCisgICAgR2VuZXJhdG9yTG9jYWxEYXRhKiBnZW5lcmF0b3JMb2NhbERh
dGEoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGhhc0dlbmVyYXRvckxvY2FsRGF0YSgpKTsKKyAg
ICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8R2VuZXJhdG9yTG9jYWxEYXRhKj4obV9vcElu
Zm8yKTsKKyAgICB9CisKKyAgICBib29sIGhhc0dlbmVyYXRvckZyYW1lTG9jYWxzKCkKKyAgICB7
CisgICAgICAgIHN3aXRjaCAob3AoKSkgeworICAgICAgICBjYXNlIFB1dEdlbmVyYXRvckZyYW1l
TG9jYWxzOgorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB1bnNpZ25lZCBn
ZW5lcmF0b3JGcmFtZUxvY2FscygpCisgICAgeworICAgICAgICBBU1NFUlQoaGFzR2VuZXJhdG9y
RnJhbWVMb2NhbHMoKSk7CisgICAgICAgIHJldHVybiBtX29wSW5mbzsKKyAgICB9CisKICAgICBi
b29sIGhhc0FjY2Vzc29yQXR0cmlidXRlcygpCiAgICAgewogICAgICAgICBzd2l0Y2ggKG9wKCkp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAppbmRleCBkZGQwYjk3Y2Iy
ZmU2OTI2MDQ1MTAzZjhhNzEwNzAwNDgyZTlmNmJkLi5jOWE4ZDcyZjgyN2ViZWM4MWFkZWViZjJk
NmQ4OTdhYzllODBkNTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R05vZGVUeXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5o
CkBAIC03OSw2ICs3OSwxMCBAQAogICAgIG1hY3JvKEZsdXNoLCBOb2RlTXVzdEdlbmVyYXRlKSBc
CiAgICAgbWFjcm8oUGhhbnRvbUxvY2FsLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgXAorICAg
IG1hY3JvKFNldEdlbmVyYXRvckxvY2FsLCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgbWFjcm8o
R2V0R2VuZXJhdG9yTG9jYWwsIE5vZGVSZXN1bHRKUykgXAorICAgIG1hY3JvKFB1dEdlbmVyYXRv
ckZyYW1lTG9jYWxzLCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgXAogICAgIC8qIEhpbnQgdGhh
dCB0aGlzIGlzIHdoZXJlIGJ5dGVjb2RlIHRoaW5rcyBpcyBhIGdvb2QgcGxhY2UgdG8gT1NSLiBO
b3RlIHRoYXQgdGhpcyAqL1wKICAgICAvKiB3aWxsIGV4aXN0IGV2ZW4gaW4gaW5saW5lZCBsb29w
cy4gVGhpcyBoYXMgbm8gZXhlY3V0aW9uIHNlbWFudGljcyBidXQgaXQgbXVzdCAqL1wKICAgICAv
KiBzdXJ2aXZlIGFsbCBEQ0UuIFdlIHRyZWF0IHRoaXMgYXMgYmVpbmcgYSBjYW4tZXhpdCBiZWNh
dXNlIHRpZXItdXAgdG8gRlRMIG1heSAqL1wKQEAgLTI2Myw2ICsyNjcsNyBAQAogICAgIG1hY3Jv
KE5ld0FycmF5QnVmZmVyLCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhOZXdUeXBlZEFycmF5
LCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oTmV3UmVnZXhw
LCBOb2RlUmVzdWx0SlMpIFwKKyAgICBtYWNybyhOZXdHZW5lcmF0b3JGcmFtZSwgTm9kZVJlc3Vs
dEpTKSBcCiAgICAgLyogUmVzdCBQYXJhbWV0ZXIgKi9cCiAgICAgbWFjcm8oR2V0UmVzdExlbmd0
aCwgTm9kZVJlc3VsdEludDMyKSBcCiAgICAgbWFjcm8oQ29weVJlc3QsIE5vZGVNdXN0R2VuZXJh
dGUpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9u
cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCmluZGV4
IDJmZDVkYmRjN2ZjNGNjYTg2ZmFlMTA5MjI3YWMxNzU3ZmRjZGY5NmMuLmJjMzU2NjEzZDNmNTIx
ODA4MjM4ZTUyNjgxMzVhYWIwOWJlNjdmMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPcGVyYXRpb25zLmNwcApAQCAtNDEsOCArNDEsOSBAQAogI2luY2x1ZGUgIkRpcmVjdEFy
Z3VtZW50cy5oIgogI2luY2x1ZGUgIkZUTEZvck9TUkVudHJ5SklUQ29kZS5oIgogI2luY2x1ZGUg
IkZUTE9TUkVudHJ5LmgiCi0jaW5jbHVkZSAiSG9zdENhbGxSZXR1cm5WYWx1ZS5oIgorI2luY2x1
ZGUgIkdlbmVyYXRvckZyYW1lLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCisjaW5jbHVk
ZSAiSG9zdENhbGxSZXR1cm5WYWx1ZS5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5j
bHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSklURXhjZXB0aW9ucy5oIgpAQCAtODE3LDYgKzgxOCwx
MSBAQCBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Zsb2F0NjRBcnJheVdpdGhPbmVB
cmd1bWVudCgKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0R2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU0Zsb2F0NjRBcnJheT4oZXhlYywgc3Ry
dWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAsIE51bGxvcHQpKTsKIH0KIAorY2hhciogSklUX09QRVJB
VElPTiBvcGVyYXRpb25OZXdHZW5lcmF0b3JGcmFtZShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVy
ZSogc3RydWN0dXJlLCBpbnQzMl90IG51bWJlck9mQ2FsbGVlTG9jYWxzKQoreworICAgIHJldHVy
biBiaXR3aXNlX2Nhc3Q8Y2hhcio+KEdlbmVyYXRvckZyYW1lOjpjcmVhdGUoZXhlYy0+dm0oKSwg
c3RydWN0dXJlLCBudW1iZXJPZkNhbGxlZUxvY2FscykpOworfQorCiBKU0NlbGwqIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uQ3JlYXRlQWN0aXZhdGlvbkRpcmVjdChFeGVjU3RhdGUqIGV4ZWMsIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBKU1Njb3BlKiBzY29wZSwgU3ltYm9sVGFibGUqIHRhYmxlLCBF
bmNvZGVkSlNWYWx1ZSBpbml0aWFsVmFsdWVFbmNvZGVkKQogewogICAgIEpTVmFsdWUgaW5pdGlh
bFZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGluaXRpYWxWYWx1ZUVuY29kZWQpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAppbmRleCA0MDk2MjlmZjVkNTNhN2JlMzg3
YTYyMzY0NTVkNjgxNmFjMDg1ZWM5Li5lNDQzYmEyODIzNzJmYmNjZTJiYWM1YjA5YTM2N2JkNTJj
OGU3NWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlv
bnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaApAQCAt
ODIsNiArODIsNyBAQAogY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdGbG9hdDMyQXJy
YXlXaXRoT25lQXJndW1lbnQoRXhlY1N0YXRlKiwgU3RydWN0dXJlKiwgRW5jb2RlZEpTVmFsdWUp
IFdURl9JTlRFUk5BTDsKIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3RmxvYXQ2NEFy
cmF5V2l0aFNpemUoRXhlY1N0YXRlKiwgU3RydWN0dXJlKiwgaW50MzJfdCkgV1RGX0lOVEVSTkFM
OwogY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdGbG9hdDY0QXJyYXlXaXRoT25lQXJn
dW1lbnQoRXhlY1N0YXRlKiwgU3RydWN0dXJlKiwgRW5jb2RlZEpTVmFsdWUpIFdURl9JTlRFUk5B
TDsKK2NoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3R2VuZXJhdG9yRnJhbWUoRXhlY1N0
YXRlKiwgU3RydWN0dXJlKiwgaW50MzJfdCkgV1RGX0lOVEVSTkFMOwogdm9pZCBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblB1dEJ5VmFsU3RyaWN0KEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkUHJvcGVydHksIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRWYWx1ZSkgV1RGX0lOVEVSTkFMOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blB1dEJ5VmFsTm9uU3RyaWN0KEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkUHJvcGVydHksIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSkgV1RGX0lOVEVSTkFMOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFs
Q2VsbFN0cmljdChFeGVjU3RhdGUqLCBKU0NlbGwqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkUHJv
cGVydHksIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkgV1RGX0lOVEVSTkFMOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25Q
aGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdh
dGlvblBoYXNlLmNwcAppbmRleCA1Nzk5OGNmZTE4MWE4ZmNmOWNjNjUxNDM1MWFjNTgwYjgwZTdm
YjhhLi5jNThlYTEyM2VlYTcyZjc4MWFkMWJmZmJkZDc2YjgxMTBkMmYwMWFlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdh
dGlvblBoYXNlLmNwcApAQCAtMTYwLDYgKzE2MCwyMyBAQCBjbGFzcyBQcmVkaWN0aW9uUHJvcGFn
YXRpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICBjaGFuZ2VkIHw9IHZhcmlh
YmxlQWNjZXNzRGF0YS0+cHJlZGljdChub2RlLT5jaGlsZDEoKS0+cHJlZGljdGlvbigpKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisKKyAgICAgICAgY2FzZSBTZXRHZW5lcmF0b3JM
b2NhbDogeworICAgICAgICAgICAgR2VuZXJhdG9yTG9jYWxEYXRhKiBnZW5lcmF0b3JMb2NhbERh
dGEgPSBub2RlLT5nZW5lcmF0b3JMb2NhbERhdGEoKTsKKyAgICAgICAgICAgIGNoYW5nZWQgfD0g
Z2VuZXJhdG9yTG9jYWxEYXRhLT5wcmVkaWN0KG5vZGUtPmNoaWxkMigpLT5wcmVkaWN0aW9uKCkp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBjYXNlIEdldEdlbmVy
YXRvckxvY2FsOiB7CisgICAgICAgICAgICBHZW5lcmF0b3JMb2NhbERhdGEqIGdlbmVyYXRvckxv
Y2FsRGF0YSA9IG5vZGUtPmdlbmVyYXRvckxvY2FsRGF0YSgpOworICAgICAgICAgICAgU3BlY3Vs
YXRlZFR5cGUgcHJlZGljdGlvbiA9IGdlbmVyYXRvckxvY2FsRGF0YS0+cHJlZGljdGlvbigpOwor
ICAgICAgICAgICAgLy8gV2UgYWx3YXlzIHN0b3JlIHRoZSB2YWx1ZSBpbiBHZW5lcmF0b3JMb2Nh
bCBhcyBGb3JtYXRKU1ZhbHVlLgorICAgICAgICAgICAgaWYgKHByZWRpY3Rpb24gJiBTcGVjSW50
NTIpCisgICAgICAgICAgICAgICAgcHJlZGljdGlvbiA9IChwcmVkaWN0aW9uIHwgU3BlY0ludDUy
QXNEb3VibGUpICYgflNwZWNJbnQ1MjsKKyAgICAgICAgICAgIGlmIChwcmVkaWN0aW9uKQorICAg
ICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKHByZWRpY3Rpb24pOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICBjYXNlIEJp
dEFuZDoKICAgICAgICAgY2FzZSBCaXRPcjoKQEAgLTUyNCw3ICs1NDEsOCBAQCBjbGFzcyBQcmVk
aWN0aW9uUHJvcGFnYXRpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgIH0KICAgICAg
ICAgICAgIAogICAgICAgICBjYXNlIE5ld1JlZ2V4cDoKLSAgICAgICAgY2FzZSBDcmVhdGVBY3Rp
dmF0aW9uOiB7CisgICAgICAgIGNhc2UgQ3JlYXRlQWN0aXZhdGlvbjoKKyAgICAgICAgY2FzZSBO
ZXdHZW5lcmF0b3JGcmFtZTogewogICAgICAgICAgICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9u
KFNwZWNPYmplY3RPdGhlcik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtNzE2
LDYgKzczNCw3IEBAIGNsYXNzIFByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlIDogcHVibGljIFBo
YXNlIHsKICAgICAgICAgY2FzZSBFeGl0T0s6CiAgICAgICAgIGNhc2UgTG9hZFZhcmFyZ3M6CiAg
ICAgICAgIGNhc2UgQ29weVJlc3Q6CisgICAgICAgIGNhc2UgUHV0R2VuZXJhdG9yRnJhbWVMb2Nh
bHM6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIAogICAgICAgICAvLyBUaGlzIGdl
dHMgaWdub3JlZCBiZWNhdXNlIGl0IG9ubHkgcHJldGVuZHMgdG8gcHJvZHVjZSBhIHZhbHVlLgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAppbmRleCAyMzBl
ZmVkYzQ4MzE1MTJiYWM1NjhiZWVmZGIyNzY5NjE4NzIwOTRjLi43YmRlYzNiNTNlMjMwNDI4YmVj
OWRhYzEwMzVmMGE0ZDA0ZDhhNjFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NhZmVUb0V4ZWN1dGUuaApAQCAtMjM3LDYgKzIzNyw3IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShB
YnN0cmFjdFN0YXRlVHlwZSYgc3RhdGUsIEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBj
YXNlIE5ld0FycmF5V2l0aFNpemU6CiAgICAgY2FzZSBOZXdBcnJheUJ1ZmZlcjoKICAgICBjYXNl
IE5ld1JlZ2V4cDoKKyAgICBjYXNlIE5ld0dlbmVyYXRvckZyYW1lOgogICAgIGNhc2UgQnJlYWtw
b2ludDoKICAgICBjYXNlIFByb2ZpbGVXaWxsQ2FsbDoKICAgICBjYXNlIFByb2ZpbGVEaWRDYWxs
OgpAQCAtMzI4LDYgKzMyOSw5IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlw
ZSYgc3RhdGUsIEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIEdldE15QXJndW1l
bnRCeVZhbDoKICAgICBjYXNlIEZvcndhcmRWYXJhcmdzOgogICAgIGNhc2UgQ29weVJlc3Q6Cisg
ICAgY2FzZSBTZXRHZW5lcmF0b3JMb2NhbDoKKyAgICBjYXNlIEdldEdlbmVyYXRvckxvY2FsOgor
ICAgIGNhc2UgUHV0R2VuZXJhdG9yRnJhbWVMb2NhbHM6CiAgICAgICAgIHJldHVybiB0cnVlOwog
CiAgICAgY2FzZSBCb3R0b21WYWx1ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggY2NjZTc5MTk5NTE0NWU5MWVmZDIwMDg4Yzk2Yjdh
ZjgyYjU2MTZkNi4uM2M2MzNlYmUyNTFiNzViNzhmZjhmOTBlNmFhNDJmODQ4NDNkYmEyMCAxMDA3
NTUKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAg
LTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJERkdTYW5lU3RyaW5nR2V0QnlWYWxTbG93UGF0aEdl
bmVyYXRvci5oIgogI2luY2x1ZGUgIkRGR1Nsb3dQYXRoR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAi
RGlyZWN0QXJndW1lbnRzLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yRnJhbWUuaCIKICNpbmNsdWRl
ICJKSVRBZGRHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJKSVRCaXRBbmRHZW5lcmF0b3IuaCIKICNp
bmNsdWRlICJKSVRCaXRPckdlbmVyYXRvci5oIgpAQCAtNjM3OCw2ICs2Mzc5LDMwIEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdTdHJpbmdPYmplY3QoTm9kZSogbm9kZSkKICAgICBj
ZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiB9CiAKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVOZXdHZW5lcmF0b3JGcmFtZShOb2RlKiBub2RlKQoreworICAgIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QgPSBtX2ppdC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpOworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT5n
ZW5lcmF0b3JGcmFtZVN0cnVjdHVyZSgpOworCisgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlz
KTsKKyAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaDEodGhpcyk7CisgICAgR1BSVGVtcG9yYXJ5IHNj
cmF0Y2gyKHRoaXMpOworCisgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKyAg
ICBHUFJSZWcgc2NyYXRjaDFHUFIgPSBzY3JhdGNoMS5ncHIoKTsKKyAgICBHUFJSZWcgc2NyYXRj
aDJHUFIgPSBzY3JhdGNoMi5ncHIoKTsKKworICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93
UGF0aDsKKworICAgIGVtaXRBbGxvY2F0ZUpTT2JqZWN0V2l0aEtub3duU2l6ZTxHZW5lcmF0b3JG
cmFtZT4ocmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksIFRydXN0ZWRJbW1QdHIo
bnVsbHB0ciksIHNjcmF0Y2gxR1BSLCBzY3JhdGNoMkdQUiwgc2xvd1BhdGgsIEdlbmVyYXRvckZy
YW1lOjphbGxvY2F0aW9uU2l6ZUZvckxvY2Fscyhub2RlLT5nZW5lcmF0b3JGcmFtZVNpemUoKSkp
OworICAgIG1faml0LnN0b3JlMzIoVHJ1c3RlZEltbTMyKG5vZGUtPmdlbmVyYXRvckZyYW1lU2l6
ZSgpKSwgSklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBHZW5lcmF0b3JGcmFtZTo6bnVt
YmVyT2ZDYWxsZWVMb2NhbHNPZmZzZXQoKSkpOworICAgIG1faml0LnN0b3JlMzIoVHJ1c3RlZElt
bTMyKDApLCBKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIEdlbmVyYXRvckZyYW1lOjpu
dW1iZXJPZlNhdmVkQ2FsbGVlTG9jYWxzT2Zmc2V0KCkpKTsKKworICAgIGFkZFNsb3dQYXRoR2Vu
ZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93UGF0aCwgdGhpcywgb3BlcmF0aW9uTmV3R2VuZXJhdG9y
RnJhbWUsIHJlc3VsdEdQUiwgc3RydWN0dXJlLCBub2RlLT5nZW5lcmF0b3JGcmFtZVNpemUoKSkp
OworCisgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOworfQorCiB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlTmV3VHlwZWRBcnJheShOb2RlKiBub2RlKQogewogICAgIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2ppdC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5oCmluZGV4IDUzMTJjOGRiZWRmZWQxODAwNTQzODExMzA3OWVlYjBiMGU5OTA4
YWIuLjU3Mzk4MTU3OGYyNGY1YjMwMjU5ZjJhYzAyNTUyZmQ0MDhmZTdhZTAgMTAwNzU1Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKQEAgLTIyODEsNiArMjI4
MSw3IEBAIGNsYXNzIFNwZWN1bGF0aXZlSklUIHsKICAgICB2b2lkIGNvbXBpbGVQdXRCeVZhbEZv
ckZsb2F0VHlwZWRBcnJheShHUFJSZWcgYmFzZSwgR1BSUmVnIHByb3BlcnR5LCBOb2RlKiwgVHlw
ZWRBcnJheVR5cGUpOwogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDbGFzc1R5cGU+IHZvaWQgY29t
cGlsZU5ld0Z1bmN0aW9uQ29tbW9uKEdQUlJlZywgU3RydWN0dXJlKiwgR1BSUmVnLCBHUFJSZWcs
IEdQUlJlZywgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0Jiwgc2l6ZV90LCBGdW5jdGlvbkV4ZWN1
dGFibGUqLCBwdHJkaWZmX3QsIHB0cmRpZmZfdCwgcHRyZGlmZl90KTsKICAgICB2b2lkIGNvbXBp
bGVOZXdGdW5jdGlvbihOb2RlKik7CisgICAgdm9pZCBjb21waWxlTmV3R2VuZXJhdG9yRnJhbWUo
Tm9kZSopOwogICAgIHZvaWQgY29tcGlsZUZvcndhcmRWYXJhcmdzKE5vZGUqKTsKICAgICB2b2lk
IGNvbXBpbGVDcmVhdGVBY3RpdmF0aW9uKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVDcmVhdGVE
aXJlY3RBcmd1bWVudHMoTm9kZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKaW5kZXggMTJlYjUwNDExODBhYzJmNTAxNjRm
OTUxYjA1OGVkYjYyZDIyODI3MC4uMzEwM2FkNTlmZjIwNDFhNzRkMTJlYThiODNhYzE3NzMzZWY3
YzZlOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVDMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklUMzJfNjQuY3BwCkBAIC0zNjUwLDYgKzM2NTAsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdFBheWxvYWQu
Z3ByKCksIG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9CisKKyAgICBjYXNlIE5ld0dlbmVy
YXRvckZyYW1lOiB7CisgICAgICAgIGNvbXBpbGVOZXdHZW5lcmF0b3JGcmFtZShub2RlKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgfQogICAgICAgICAKICAgICBjYXNlIFRvVGhpczogewogICAgICAg
ICBBU1NFUlQobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IFVudHlwZWRVc2UpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKaW5kZXgg
ZTc0NTY5NDA0YzFiOTc4NDgwNjE5N2QxNDU0NWNkMWRiMjNkN2E1Yy4uODk0MDJmMWUzNjgyMzk4
NzgwNTE5NzQ2ZDRiYTcxZjQ2ZDFlN2YwOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVk
ZSAiREZHU2xvd1BhdGhHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJEZWJ1Z2dlci5oIgogI2luY2x1
ZGUgIkRpcmVjdEFyZ3VtZW50cy5oIgorI2luY2x1ZGUgIkdlbmVyYXRvckZyYW1lLmgiCiAjaW5j
bHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUg
IkpTRW52aXJvbm1lbnRSZWNvcmQuaCIKQEAgLTM2ODgsNiArMzY4OSwxMSBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0
LmdwcigpLCBub2RlKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQorCisgICAgY2FzZSBOZXdHZW5l
cmF0b3JGcmFtZTogeworICAgICAgICBjb21waWxlTmV3R2VuZXJhdG9yRnJhbWUobm9kZSk7Cisg
ICAgICAgIGJyZWFrOworICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBUb1RoaXM6IHsKICAgICAg
ICAgQVNTRVJUKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKTsKQEAgLTQ3
MjAsNiArNDcyNiwzOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUp
CiAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgfQorICAgIGNhc2UgU2V0R2VuZXJhdG9yTG9jYWw6IHsKKyAgICAgICAgU3BlY3VsYXRlQ2Vs
bE9wZXJhbmQgZnJhbWUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBKU1ZhbHVlT3Bl
cmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisKKyAgICAgICAgR1BSUmVnIGZyYW1l
R1BSID0gZnJhbWUuZ3ByKCk7CisgICAgICAgIEdQUlJlZyB2YWx1ZUdQUiA9IHZhbHVlLmdwcigp
OworICAgICAgICB1bnNpZ25lZCBnZW5lcmF0b3JGcmFtZUluZGV4ID0gbm9kZS0+Z2VuZXJhdG9y
RnJhbWVJbmRleCgpOworCisgICAgICAgIG1faml0LnN0b3JlNjQodmFsdWVHUFIsIEpJVENvbXBp
bGVyOjpBZGRyZXNzKGZyYW1lR1BSLCBHZW5lcmF0b3JGcmFtZTo6bG9jYWxPZmZzZXQoZ2VuZXJh
dG9yRnJhbWVJbmRleCkpKTsKKworICAgICAgICBub1Jlc3VsdChub2RlKTsKKyAgICAgICAgYnJl
YWs7CisgICAgfQorICAgIGNhc2UgR2V0R2VuZXJhdG9yTG9jYWw6IHsKKyAgICAgICAgU3BlY3Vs
YXRlQ2VsbE9wZXJhbmQgZnJhbWUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBHUFJU
ZW1wb3JhcnkgcmVzdWx0KHRoaXMpOworCisgICAgICAgIEdQUlJlZyBmcmFtZUdQUiA9IGZyYW1l
LmdwcigpOworICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOworICAgICAg
ICB1bnNpZ25lZCBnZW5lcmF0b3JGcmFtZUluZGV4ID0gbm9kZS0+Z2VuZXJhdG9yRnJhbWVJbmRl
eCgpOworCisgICAgICAgIG1faml0LmxvYWQ2NChKSVRDb21waWxlcjo6QWRkcmVzcyhmcmFtZUdQ
UiwgR2VuZXJhdG9yRnJhbWU6OmxvY2FsT2Zmc2V0KGdlbmVyYXRvckZyYW1lSW5kZXgpKSwgcmVz
dWx0R1BSKTsKKyAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOworICAgICAg
ICBicmVhazsKKyAgICB9CisgICAgY2FzZSBQdXRHZW5lcmF0b3JGcmFtZUxvY2FsczogeworICAg
ICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBmcmFtZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Cisg
ICAgICAgIEdQUlJlZyBmcmFtZUdQUiA9IGZyYW1lLmdwcigpOworICAgICAgICBtX2ppdC5zdG9y
ZTMyKFRydXN0ZWRJbW0zMihub2RlLT5nZW5lcmF0b3JGcmFtZUxvY2FscygpKSwgSklUQ29tcGls
ZXI6OkFkZHJlc3MoZnJhbWVHUFIsIEdlbmVyYXRvckZyYW1lOjpudW1iZXJPZlNhdmVkQ2FsbGVl
TG9jYWxzT2Zmc2V0KCkpKTsKKyAgICAgICAgbm9SZXN1bHQobm9kZSk7CisgICAgICAgIGJyZWFr
OworICAgIH0KICAgICBjYXNlIFByb2ZpbGVUeXBlOiB7CiAgICAgICAgIEpTVmFsdWVPcGVyYW5k
IHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0
Y2gxKHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9y
ZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcAppbmRleCA3MmYyMjAwY2VhMTBiOTgxMGRi
YThjN2IxOWZlZmYyNGRhYTVkYWUzLi5kN2M3MDU2NmZjNzM3Zjg5MGYxNTZiNTM0NTA5ZDlhMGMw
NzM4ZTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0b3JlQmFy
cmllckluc2VydGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcApAQCAtMjgxLDYgKzI4MSwxMSBAQCBjbGFz
cyBTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAg
ICAgICAgY29uc2lkZXJCYXJyaWVyKG1fbm9kZS0+Y2hpbGQxKCksIG1fbm9kZS0+Y2hpbGQyKCkp
OwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQorCisgICAgICAgICAgICBj
YXNlIFNldEdlbmVyYXRvckxvY2FsOiB7CisgICAgICAgICAgICAgICAgY29uc2lkZXJCYXJyaWVy
KG1fbm9kZS0+Y2hpbGQxKCksIG1fbm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgZGVmYXVs
dDoKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTI5Niw2ICszMDEsNyBAQCBjbGFzcyBTdG9y
ZUJhcnJpZXJJbnNlcnRpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICBjYXNl
IE5ld0FycmF5QnVmZmVyOgogICAgICAgICAgICAgY2FzZSBOZXdUeXBlZEFycmF5OgogICAgICAg
ICAgICAgY2FzZSBOZXdSZWdleHA6CisgICAgICAgICAgICBjYXNlIE5ld0dlbmVyYXRvckZyYW1l
OgogICAgICAgICAgICAgY2FzZSBNYXRlcmlhbGl6ZU5ld09iamVjdDoKICAgICAgICAgICAgIGNh
c2UgTWF0ZXJpYWxpemVDcmVhdGVBY3RpdmF0aW9uOgogICAgICAgICAgICAgY2FzZSBOZXdTdHJp
bmdPYmplY3Q6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVj
dHVyZVJlZ2lzdHJhdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2UuY3BwCmluZGV4IDJjMDU1OTg0OTg5OWJkZjZmYjEx
MTc1OTdlMTA1NGJmZjM1NDY2OTMuLmUxYWVmMGIyYzM5M2Y1NjE5NDhjY2E1YTk1OWYyZTA3MTA4
ODQzODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RydWN0dXJl
UmVnaXN0cmF0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2UuY3BwCkBAIC0xNDksNiArMTQ5LDkgQEAgY2xhc3Mg
U3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAg
ICAgIGNhc2UgTmV3R2VuZXJhdG9yRnVuY3Rpb246CiAgICAgICAgICAgICAgICAgICAgIHJlZ2lz
dGVyU3RydWN0dXJlKG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YyktPmdlbmVyYXRvckZ1bmN0aW9uU3RydWN0dXJlKCkpOwogICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIE5ld0dlbmVyYXRvckZyYW1lOgorICAgICAgICAg
ICAgICAgICAgICByZWdpc3RlclN0cnVjdHVyZShtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpLT5nZW5lcmF0b3JGcmFtZVN0cnVjdHVyZSgpKTsKKyAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAg
IGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAKaW5kZXgg
OTdjMDc4NGJiNDJiYzkxOWQwNmNmNTIzYzQxZTAyNDZhNTM1MWQ5MS4uNjlkODlkNmFkNDI1NDky
M2JjM2ZhYjNjN2FjYTIwODk1YzU1ZTVjYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwCkBAIC0zMCw2ICszMCw3
IEBACiAKICNpbmNsdWRlICJEaXJlY3RBcmd1bWVudHMuaCIKICNpbmNsdWRlICJGVExBYmJyZXZp
YXRpb25zLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yRnJhbWUuaCIKICNpbmNsdWRlICJHZXR0ZXJT
ZXR0ZXIuaCIKICNpbmNsdWRlICJKU0Vudmlyb25tZW50UmVjb3JkLmgiCiAjaW5jbHVkZSAiSlNQ
cm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCmluZGV4IDc3ZTU3OTg2OTQwYzZhYzk2
Zjg3ZjFmOTQ1YzQ2MjUxMjg4NjMwZjAuLjQ4ODYzYzBiZDMwZjY0NTc2NTMxMDhiZjQ1NjliMTJj
OTQwODU4YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJh
Y3RIZWFwUmVwb3NpdG9yeS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJz
dHJhY3RIZWFwUmVwb3NpdG9yeS5oCkBAIC00Nyw2ICs0Nyw4IEBACiAgICAgbWFjcm8oRGlyZWN0
QXJndW1lbnRzX2xlbmd0aCwgRGlyZWN0QXJndW1lbnRzOjpvZmZzZXRPZkxlbmd0aCgpKSBcCiAg
ICAgbWFjcm8oRGlyZWN0QXJndW1lbnRzX21pbkNhcGFjaXR5LCBEaXJlY3RBcmd1bWVudHM6Om9m
ZnNldE9mTWluQ2FwYWNpdHkoKSkgXAogICAgIG1hY3JvKERpcmVjdEFyZ3VtZW50c19vdmVycmlk
ZXMsIERpcmVjdEFyZ3VtZW50czo6b2Zmc2V0T2ZPdmVycmlkZXMoKSkgXAorICAgIG1hY3JvKEdl
bmVyYXRvckZyYW1lX251bWJlck9mQ2FsbGVlTG9jYWxzLCBHZW5lcmF0b3JGcmFtZTo6bnVtYmVy
T2ZDYWxsZWVMb2NhbHNPZmZzZXQoKSkgXAorICAgIG1hY3JvKEdlbmVyYXRvckZyYW1lX251bWJl
ck9mU2F2ZWRDYWxsZWVMb2NhbHMsIEdlbmVyYXRvckZyYW1lOjpudW1iZXJPZlNhdmVkQ2FsbGVl
TG9jYWxzT2Zmc2V0KCkpIFwKICAgICBtYWNybyhHZXR0ZXJTZXR0ZXJfZ2V0dGVyLCBHZXR0ZXJT
ZXR0ZXI6Om9mZnNldE9mR2V0dGVyKCkpIFwKICAgICBtYWNybyhHZXR0ZXJTZXR0ZXJfc2V0dGVy
LCBHZXR0ZXJTZXR0ZXI6Om9mZnNldE9mU2V0dGVyKCkpIFwKICAgICBtYWNybyhKU0FycmF5QnVm
ZmVyVmlld19sZW5ndGgsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSBcCkBA
IC05MSw2ICs5Myw3IEBACiAKICNkZWZpbmUgRk9SX0VBQ0hfSU5ERVhFRF9BQlNUUkFDVF9IRUFQ
KG1hY3JvKSBcCiAgICAgbWFjcm8oRGlyZWN0QXJndW1lbnRzX3N0b3JhZ2UsIERpcmVjdEFyZ3Vt
ZW50czo6c3RvcmFnZU9mZnNldCgpLCBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKSBcCisgICAgbWFj
cm8oR2VuZXJhdG9yRnJhbWVfY2FsbGVlTG9jYWxzLCBHZW5lcmF0b3JGcmFtZTo6b2Zmc2V0T2ZM
b2NhbHMoKSwgc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPikpIFwKICAgICBtYWNybyhKU0Vu
dmlyb25tZW50UmVjb3JkX3ZhcmlhYmxlcywgSlNFbnZpcm9ubWVudFJlY29yZDo6b2Zmc2V0T2ZW
YXJpYWJsZXMoKSwgc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSkgXAogICAgIG1hY3JvKEpTUHJvcGVy
dHlOYW1lRW51bWVyYXRvcl9jYWNoZWRQcm9wZXJ0eU5hbWVzVmVjdG9yQ29udGVudHMsIDAsIHNp
emVvZihXcml0ZUJhcnJpZXI8SlNTdHJpbmc+KSkgXAogICAgIG1hY3JvKEpTUm9wZVN0cmluZ19m
aWJlcnMsIEpTUm9wZVN0cmluZzo6b2Zmc2V0T2ZGaWJlcnMoKSwgc2l6ZW9mKFdyaXRlQmFycmll
cjxKU1N0cmluZz4pKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TENhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxp
dGllcy5jcHAKaW5kZXggZDJhNDkwYzJhNjdlNmRiOGI5YTVhNzk2NjRlNTY1ZTNkNmQ5NTFkYy4u
MTdiNGUyZGI1ZjZhMWNjMDAzZjg4MGM3ZWE0YzYwMGFiOGFjODY3OCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcApAQCAtNzIsNiArNzIsNyBAQCBp
bmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIE5l
d09iamVjdDoKICAgICBjYXNlIE5ld0FycmF5OgogICAgIGNhc2UgTmV3QXJyYXlCdWZmZXI6Cisg
ICAgY2FzZSBOZXdHZW5lcmF0b3JGcmFtZToKICAgICBjYXNlIEdldEJ5T2Zmc2V0OgogICAgIGNh
c2UgR2V0R2V0dGVyU2V0dGVyQnlPZmZzZXQ6CiAgICAgY2FzZSBHZXRHZXR0ZXI6CkBAIC0yMTYs
NiArMjE3LDkgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5vZGUp
CiAgICAgY2FzZSBQdXRTZXR0ZXJCeVZhbDoKICAgICBjYXNlIENvcHlSZXN0OgogICAgIGNhc2Ug
R2V0UmVzdExlbmd0aDoKKyAgICBjYXNlIFNldEdlbmVyYXRvckxvY2FsOgorICAgIGNhc2UgR2V0
R2VuZXJhdG9yTG9jYWw6CisgICAgY2FzZSBQdXRHZW5lcmF0b3JGcmFtZUxvY2FsczoKICAgICAg
ICAgLy8gVGhlc2UgYXJlIE9LLgogICAgICAgICBicmVhazsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcAppbmRleCAzN2NhZTVjMTdhZDljNzFk
MDE4ZDQxYmI2ZTlhNjZjOTE3Nzk2NmYyLi41Mjk5NWEzM2Y2YTdmZWVkYmMyOTc0OTY4ZjNlZjk0
NGY5ZWY4YjczIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2Vy
REZHVG9MTFZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZH
VG9MTFZNLmNwcApAQCAtNTMsNiArNTMsNyBAQAogI2luY2x1ZGUgIkZUTFBhdGNocG9pbnRFeGNl
cHRpb25IYW5kbGUuaCIKICNpbmNsdWRlICJGVExUaHVua3MuaCIKICNpbmNsdWRlICJGVExXZWln
aHRlZFRhcmdldC5oIgorI2luY2x1ZGUgIkdlbmVyYXRvckZyYW1lLmgiCiAjaW5jbHVkZSAiSklU
QWRkR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiSklUQml0QW5kR2VuZXJhdG9yLmgiCiAjaW5jbHVk
ZSAiSklUQml0T3JHZW5lcmF0b3IuaCIKQEAgLTgzOSw2ICs4NDAsOSBAQCBjbGFzcyBMb3dlckRG
R1RvTExWTSB7CiAgICAgICAgIGNhc2UgTmV3QXJyYXlXaXRoU2l6ZToKICAgICAgICAgICAgIGNv
bXBpbGVOZXdBcnJheVdpdGhTaXplKCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBOZXdHZW5lcmF0b3JGcmFtZToKKyAgICAgICAgICAgIGNvbXBpbGVOZXdHZW5lcmF0b3JGcmFt
ZSgpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVP
ZmZzZXQ6CiAgICAgICAgICAgICBjb21waWxlR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQoKTsKICAg
ICAgICAgICAgIGJyZWFrOwpAQCAtMTA3MSw2ICsxMDc1LDE1IEBAIGNsYXNzIExvd2VyREZHVG9M
TFZNIHsKICAgICAgICAgY2FzZSBHZXRSZXN0TGVuZ3RoOgogICAgICAgICAgICAgY29tcGlsZUdl
dFJlc3RMZW5ndGgoKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFB1dEdlbmVy
YXRvckZyYW1lTG9jYWxzOgorICAgICAgICAgICAgY29tcGlsZVB1dEdlbmVyYXRvckZyYW1lTG9j
YWxzKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTZXRHZW5lcmF0b3JMb2Nh
bDoKKyAgICAgICAgICAgIGNvbXBpbGVTZXRHZW5lcmF0b3JMb2NhbCgpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgR2V0R2VuZXJhdG9yTG9jYWw6CisgICAgICAgICAgICBjb21w
aWxlR2V0R2VuZXJhdG9yTG9jYWwoKTsKKyAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNh
c2UgUGhhbnRvbUxvY2FsOgogICAgICAgICBjYXNlIExvb3BIaW50OgpAQCAtMzkxNiw2ICszOTI5
LDI4IEBAIGNsYXNzIExvd2VyREZHVG9MTFZNIHsKICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29u
dGludWF0aW9uLCBsYXN0TmV4dCk7CiAgICAgICAgIHNldEludDMyKG1fb3V0LnBoaShtX291dC5p
bnQzMiwgemVyb0xlbmd0aFJlc3VsdCwgbm9uWmVyb0xlbmd0aFJlc3VsdCkpOwogICAgIH0KKwor
ICAgIHZvaWQgY29tcGlsZVB1dEdlbmVyYXRvckZyYW1lTG9jYWxzKCkKKyAgICB7CisgICAgICAg
IExWYWx1ZSBmcmFtZSA9IGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIG1fb3V0
LnN0b3JlMzIobV9vdXQuY29uc3RJbnQzMihtX25vZGUtPmdlbmVyYXRvckZyYW1lTG9jYWxzKCkp
LCBmcmFtZSwgbV9oZWFwcy5HZW5lcmF0b3JGcmFtZV9udW1iZXJPZlNhdmVkQ2FsbGVlTG9jYWxz
KTsKKyAgICB9CisKKyAgICB2b2lkIGNvbXBpbGVTZXRHZW5lcmF0b3JMb2NhbCgpCisgICAgewor
ICAgICAgICBtX291dC5zdG9yZTY0KAorICAgICAgICAgICAgbG93SlNWYWx1ZShtX25vZGUtPmNo
aWxkMigpKSwKKyAgICAgICAgICAgIGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSksCisgICAgICAg
ICAgICBtX2hlYXBzLkdlbmVyYXRvckZyYW1lX2NhbGxlZUxvY2Fsc1ttX25vZGUtPmdlbmVyYXRv
ckZyYW1lSW5kZXgoKV0pOworICAgIH0KKworICAgIHZvaWQgY29tcGlsZUdldEdlbmVyYXRvckxv
Y2FsKCkKKyAgICB7CisgICAgICAgIHNldEpTVmFsdWUoCisgICAgICAgICAgICBtX291dC5sb2Fk
NjQoCisgICAgICAgICAgICAgICAgbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKSwKKyAgICAgICAg
ICAgICAgICBtX2hlYXBzLkdlbmVyYXRvckZyYW1lX2NhbGxlZUxvY2Fsc1ttX25vZGUtPmdlbmVy
YXRvckZyYW1lSW5kZXgoKV0pKTsKKyAgICB9CiAgICAgCiAgICAgdm9pZCBjb21waWxlTmV3T2Jq
ZWN0KCkKICAgICB7CkBAIC00MTUwLDYgKzQxODUsMzcgQEAgY2xhc3MgTG93ZXJERkdUb0xMVk0g
ewogICAgICAgICAgICAgbV9vdXQuY29uc3RJbnRQdHIoc3RydWN0dXJlKSk7CiAgICAgICAgIHNl
dEpTVmFsdWUodm1DYWxsKG1fb3V0LmludDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uTmV3
QXJyYXlXaXRoU2l6ZSksIG1fY2FsbEZyYW1lLCBzdHJ1Y3R1cmVWYWx1ZSwgcHVibGljTGVuZ3Ro
KSk7CiAgICAgfQorCisgICAgdm9pZCBjb21waWxlTmV3R2VuZXJhdG9yRnJhbWUoKQorICAgIHsK
KyAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUgPSBnbG9iYWxPYmplY3QtPmdlbmVyYXRvckZyYW1lU3RydWN0dXJlKCk7CisgICAgICAg
IHVuc2lnbmVkIGdlbmVyYXRvckZyYW1lU2l6ZSA9IG1fbm9kZS0+Z2VuZXJhdG9yRnJhbWVTaXpl
KCk7CisKKyAgICAgICAgTEJhc2ljQmxvY2sgc2xvd1BhdGggPSBGVExfTkVXX0JMT0NLKG1fb3V0
LCAoIk5ld0dlbmVyYXRvckZyYW1lIHNsb3cgcGF0aCIpKTsKKyAgICAgICAgTEJhc2ljQmxvY2sg
Y29udGludWF0aW9uID0gRlRMX05FV19CTE9DSyhtX291dCwgKCJOZXdHZW5lcmF0b3JGcmFtZSBj
b250aW51YXRpb24iKSk7CisKKyAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291dC5p
bnNlcnROZXdCbG9ja3NCZWZvcmUoc2xvd1BhdGgpOworICAgICAgICBMVmFsdWUgZmFzdE9iamVj
dCA9IGFsbG9jYXRlT2JqZWN0PEdlbmVyYXRvckZyYW1lPihHZW5lcmF0b3JGcmFtZTo6YWxsb2Nh
dGlvblNpemVGb3JMb2NhbHMoZ2VuZXJhdG9yRnJhbWVTaXplKSwgc3RydWN0dXJlLCBtX291dC5p
bnRQdHJaZXJvLCBzbG93UGF0aCk7CisgICAgICAgIG1fb3V0LnN0b3JlMzIobV9vdXQuY29uc3RJ
bnQzMihnZW5lcmF0b3JGcmFtZVNpemUpLCBmYXN0T2JqZWN0LCBtX2hlYXBzLkdlbmVyYXRvckZy
YW1lX251bWJlck9mQ2FsbGVlTG9jYWxzKTsKKyAgICAgICAgbV9vdXQuc3RvcmUzMihtX291dC5j
b25zdEludDMyKDApLCBmYXN0T2JqZWN0LCBtX2hlYXBzLkdlbmVyYXRvckZyYW1lX251bWJlck9m
U2F2ZWRDYWxsZWVMb2NhbHMpOworICAgICAgICBWYWx1ZUZyb21CbG9jayBmYXN0UmVzdWx0ID0g
bV9vdXQuYW5jaG9yKGZhc3RPYmplY3QpOworICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlv
bik7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oc2xvd1BhdGgsIGNvbnRpbnVhdGlvbik7Cisg
ICAgICAgIFZlY3RvcjxMVmFsdWU+IHNsb3dQYXRoQXJndW1lbnRzOworICAgICAgICBMVmFsdWUg
Y2FsbFJlc3VsdCA9IGxhenlTbG93UGF0aCgKKyAgICAgICAgICAgIFs9XSAoY29uc3QgVmVjdG9y
PExvY2F0aW9uPiYgbG9jYXRpb25zKSAtPiBSZWZQdHI8TGF6eVNsb3dQYXRoOjpHZW5lcmF0b3I+
IHsKKyAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlTGF6eUNhbGxHZW5lcmF0b3IoCisgICAg
ICAgICAgICAgICAgICAgIG9wZXJhdGlvbk5ld0dlbmVyYXRvckZyYW1lLAorICAgICAgICAgICAg
ICAgICAgICBsb2NhdGlvbnNbMF0uZGlyZWN0R1BSKCksIENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bVB0cihzdHJ1Y3R1cmUpLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihnZW5lcmF0b3JGcmFt
ZVNpemUpKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICBWYWx1ZUZyb21CbG9jayBzbG93UmVz
dWx0ID0gbV9vdXQuYW5jaG9yKGNhbGxSZXN1bHQpOworICAgICAgICBtX291dC5qdW1wKGNvbnRp
bnVhdGlvbik7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4
dCk7CisgICAgICAgIHNldEpTVmFsdWUobV9vdXQucGhpKG1fb3V0LmludFB0ciwgZmFzdFJlc3Vs
dCwgc2xvd1Jlc3VsdCkpOworICAgIH0KICAgICAKICAgICB2b2lkIGNvbXBpbGVBbGxvY2F0ZVBy
b3BlcnR5U3RvcmFnZSgpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCmluZGV4IGEz
YmRmYTdjZDVkMGY1NzI0N2YxYmU4YzQwYjI1MTBkMjlkODAwZmYuLjBiOWZkOGQzNDNmZDhjZWIy
N2FhZjdhMzk0MDA3MDQ2NDc0YzI2OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKQEAg
LTIxNiw3ICsyMTYsOSBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAg
ICAgIERFRklORV9PUChvcF9jaGVja190ZHopCiAgICAgICAgIERFRklORV9PUChvcF9hc3NlcnQp
CiAgICAgICAgIERFRklORV9PUChvcF9zYXZlKQotICAgICAgICBERUZJTkVfT1Aob3BfcmVzdW1l
KQorICAgICAgICBERUZJTkVfT1Aob3BfbmV3X2dlbmVyYXRvcl9mcmFtZSkKKyAgICAgICAgREVG
SU5FX09QKG9wX3Jlc3VtZV9mcm9tX2dlbmVyYXRvcl9mcmFtZSkKKyAgICAgICAgREVGSU5FX09Q
KG9wX2NsZWFyX2dlbmVyYXRvcl9mcmFtZSkKICAgICAgICAgREVGSU5FX09QKG9wX2RlYnVnKQog
ICAgICAgICBERUZJTkVfT1Aob3BfZGVsX2J5X2lkKQogICAgICAgICBERUZJTkVfT1Aob3BfZGl2
KQpAQCAtMjg5LDYgKzI5MSw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkK
ICAgICAgICAgREVGSU5FX09QKG9wX3B1dF9nZXR0ZXJfc2V0dGVyX2J5X2lkKQogICAgICAgICBE
RUZJTkVfT1Aob3BfcHV0X2dldHRlcl9ieV92YWwpCiAgICAgICAgIERFRklORV9PUChvcF9wdXRf
c2V0dGVyX2J5X3ZhbCkKKyAgICAgICAgREVGSU5FX09QKG9wX25vcCkKIAogICAgICAgICBERUZJ
TkVfT1Aob3BfcmV0KQogICAgICAgICBERUZJTkVfT1Aob3BfcnNoaWZ0KQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklULmgKaW5kZXggZGY3YjNkYzVlODkyMGVlNGVmOTJiY2FjYmFlZmYxYjRjMDBkOTM2OS4u
ZWM2ODFkMDk5MGVmMGMyYTFiMGM0MWQ1NDEyYmJjZTBjMGQzOTFkZSAxMDA3NTUKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVC5oCkBAIC00OTUsNyArNDk1LDkgQEAKICAgICAgICAgdm9pZCBlbWl0X29wX2NoZWNr
X3RkeihJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfYXNzZXJ0KEluc3RydWN0
aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9zYXZlKEluc3RydWN0aW9uKik7Ci0gICAgICAg
IHZvaWQgZW1pdF9vcF9yZXN1bWUoSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29w
X3Jlc3VtZV9mcm9tX2dlbmVyYXRvcl9mcmFtZShJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lk
IGVtaXRfb3BfY2xlYXJfZ2VuZXJhdG9yX2ZyYW1lKEluc3RydWN0aW9uKik7CisgICAgICAgIHZv
aWQgZW1pdF9vcF9uZXdfZ2VuZXJhdG9yX2ZyYW1lKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZv
aWQgZW1pdF9vcF9kZWJ1ZyhJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZGVs
X2J5X2lkKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9kaXYoSW5zdHJ1Y3Rp
b24qKTsKQEAgLTU5NSw2ICs1OTcsNyBAQAogICAgICAgICB2b2lkIGVtaXRfb3BfZW51bWVyYXRv
cl9zdHJ1Y3R1cmVfcG5hbWUoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2Vu
dW1lcmF0b3JfZ2VuZXJpY19wbmFtZShJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRf
b3BfdG9faW5kZXhfc3RyaW5nKEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9u
b3AoSW5zdHJ1Y3Rpb24qKTsKIAogICAgICAgICB2b2lkIGVtaXRTbG93X29wX2FkZChJbnN0cnVj
dGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKICAgICAgICAgdm9pZCBl
bWl0U2xvd19vcF9iaXRhbmQoSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0
ZXJhdG9yJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29k
ZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAppbmRleCA3
MzhjYjYzZmVkOTFiNDk4NTVkNWQwMzNkNDYzMzQ1ZmRkNDc2ZDliLi40YTZhODhjODRmNTc1ZjE0
YmFiNjAzOTM5MGY0NjgxOTRlZjczNzI2IDEwMDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wY29kZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3Bjb2Rlcy5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJDb3BpZWRTcGFjZUlubGlu
ZXMuaCIKICNpbmNsdWRlICJEZWJ1Z2dlci5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbi5oIgorI2lu
Y2x1ZGUgIkdlbmVyYXRvckZyYW1lLmgiCiAjaW5jbHVkZSAiSGVhcC5oIgogI2luY2x1ZGUgIkpJ
VElubGluZXMuaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCkBAIC04OTMsNiArODk0LDIzIEBAIHZv
aWQgSklUOjplbWl0U2xvd19vcF90b19zdHJpbmcoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbiwgVmVjdG9yPFNsb3dDYXNlCiAgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKIH0KIAordm9p
ZCBKSVQ6OmVtaXRfb3BfcmVzdW1lX2Zyb21fZ2VuZXJhdG9yX2ZyYW1lKEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgaW50IGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsx
XS51Lm9wZXJhbmQ7CisgICAgaW50IGZyYW1lID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3Bl
cmFuZDsKKyAgICB1bnNpZ25lZCBpbmRleCA9IGN1cnJlbnRJbnN0cnVjdGlvblszXS51LnVuc2ln
bmVkVmFsdWU7CisgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihmcmFtZSwgcmVnVDEpOworICAg
IGxvYWQ2NChBZGRyZXNzKHJlZ1QxLCBHZW5lcmF0b3JGcmFtZTo6bG9jYWxPZmZzZXQoaW5kZXgp
KSwgcmVnVDApOworICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0KTsKK30KKwordm9pZCBK
SVQ6OmVtaXRfb3BfY2xlYXJfZ2VuZXJhdG9yX2ZyYW1lKEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCit7CisgICAgaW50IGZyYW1lID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3Bl
cmFuZDsKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGZyYW1lLCByZWdUMSk7CisgICAgc3Rv
cmUzMihUcnVzdGVkSW1tMzIoMCksIEFkZHJlc3MocmVnVDEsIEdlbmVyYXRvckZyYW1lOjpudW1i
ZXJPZlNhdmVkQ2FsbGVlTG9jYWxzT2Zmc2V0KCkpKTsKK30KKwogI2VuZGlmIC8vIFVTRShKU1ZB
TFVFNjQpCiAKIHZvaWQgSklUOjplbWl0X29wX2xvb3BfaGludChJbnN0cnVjdGlvbiopCkBAIC0x
NDM1LDEyICsxNDUzLDE2IEBAIHZvaWQgSklUOjplbWl0X29wX3NhdmUoSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKICAgICBzbG93UGF0aENhbGwuY2FsbCgpOwogfQogCi12b2lkIEpJ
VDo6ZW1pdF9vcF9yZXN1bWUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQg
SklUOjplbWl0X29wX25ld19nZW5lcmF0b3JfZnJhbWUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKIHsKLSAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJl
bnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX3Jlc3VtZSk7CisgICAgSklUU2xvd1BhdGhDYWxsIHNs
b3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9uZXdfZ2VuZXJh
dG9yX2ZyYW1lKTsKICAgICBzbG93UGF0aENhbGwuY2FsbCgpOwogfQogCit2b2lkIEpJVDo6ZW1p
dF9vcF9ub3AoSW5zdHJ1Y3Rpb24qKQoreworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2Vu
ZGlmIC8vIEVOQUJMRShKSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCmluZGV4IDJiNGU2MTk4NmQzMTJhYzllNGY4NzM3
M2NlN2FhMGI5ZmQwY2U3NWEuLmFmZTA5Njg0ODhmNDZkMTY3NWM5MTdlY2IyYjYyMGMwMDU2MTIy
NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNF
eHRyYWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNl
dHNFeHRyYWN0b3IuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiRGlyZWN0QXJndW1l
bnRzLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAiRXhlY3V0YWJsZS5oIgor
I2luY2x1ZGUgIkdlbmVyYXRvckZyYW1lLmgiCiAjaW5jbHVkZSAiSGVhcC5oIgogI2luY2x1ZGUg
IkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCmluZGV4IGNkNGNlOTA2
M2IxOTU3NWE5NTdlM2NhM2UyMmJlNTc5MTViZGI1OWEuLmI5MjBhNmNlNjZjZmJlMTM1MzM0ZGEw
MWY2OWQ1OGRlNDY2MGNlNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KQEAgLTE2NSw2ICsxNjUsNyBAQCBjb25zdCBTbG90
U2l6ZSA9IDgKIAogY29uc3QgSlNFbnZpcm9ubWVudFJlY29yZF92YXJpYWJsZXMgPSAoc2l6ZW9m
IEpTRW52aXJvbm1lbnRSZWNvcmQgKyBTbG90U2l6ZSAtIDEpICYgfihTbG90U2l6ZSAtIDEpCiBj
b25zdCBEaXJlY3RBcmd1bWVudHNfc3RvcmFnZSA9IChzaXplb2YgRGlyZWN0QXJndW1lbnRzICsg
U2xvdFNpemUgLSAxKSAmIH4oU2xvdFNpemUgLSAxKQorY29uc3QgR2VuZXJhdG9yRnJhbWVfY2Fs
bGVlTG9jYWxzID0gKHNpemVvZiBHZW5lcmF0b3JGcmFtZSArIFNsb3RTaXplIC0gMSkgJiB+KFNs
b3RTaXplIC0gMSkKIAogY29uc3QgU3RhY2tBbGlnbm1lbnQgPSAxNgogY29uc3QgU3RhY2tBbGln
bm1lbnRTbG90cyA9IDIKQEAgLTEyNTYsNiArMTI1NywxMiBAQCBfbGxpbnRfb3BfbmV3X3JlZ2V4
cDoKICAgICBkaXNwYXRjaCgzKQogCiAKK19sbGludF9vcF9uZXdfZ2VuZXJhdG9yX2ZyYW1lOgor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF9uZXdfZ2Vu
ZXJhdG9yX2ZyYW1lKQorICAgIGRpc3BhdGNoKDMpCisKKwogX2xsaW50X29wX2xlc3M6CiAgICAg
dHJhY2VFeGVjdXRpb24oKQogICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRoX2xlc3MpCkBAIC0x
NTk1LDEwICsxNjAyLDE2IEBAIF9sbGludF9vcF9zYXZlOgogICAgIGRpc3BhdGNoKDQpCiAKIAot
X2xsaW50X29wX3Jlc3VtZToKK19sbGludF9vcF9zYXZlX2hpbnQ6CiAgICAgdHJhY2VFeGVjdXRp
b24oKQotICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRoX3Jlc3VtZSkKLSAgICBkaXNwYXRjaCgz
KQorICAgIG5vdFN1cHBvcnRlZCgpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfcmVz
dW1lX2hpbnQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIG5vdFN1cHBvcnRlZCgpCisgICAg
ZGlzcGF0Y2goNCkKIAogCiBfbGxpbnRfb3BfY3JlYXRlX2xleGljYWxfZW52aXJvbm1lbnQ6CkBA
IC0xNzA4LDYgKzE3MjEsMTAgQEAgX2xsaW50X29wX2NvcHlfcmVzdDoKICAgICBjYWxsU2xvd1Bh
dGgoX3Nsb3dfcGF0aF9jb3B5X3Jlc3QpCiAgICAgZGlzcGF0Y2goNCkKIAorX2xsaW50X29wX25v
cDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgZGlzcGF0Y2goMSkKKwogCiAjIExhc3RseSwg
bWFrZSBzdXJlIHRoYXQgd2UgY2FuIGxpbmsgZXZlbiB0aG91Z2ggd2UgZG9uJ3Qgc3VwcG9ydCBh
bGwgb3Bjb2Rlcy4KICMgVGhlc2Ugb3Bjb2RlcyBzaG91bGQgbmV2ZXIgYXJpc2Ugd2hlbiB1c2lu
ZyBMTEludCBvciBlaXRoZXIgSklULiBXZSBhc3NlcnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KaW5kZXggODUxNzNiYzgy
NjIxNDZiMGUwZDFlMDE5MmI3MDYwMjhiYmQ5MDY4My4uNDkyYzYzYzI1Y2RmYWUzMmZmOWVlYjhh
NGQxOTdlNTg1NTMxOWFjMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KQEAgLTIzMjEsMyArMjMyMSwxOCBAQCBfbGxp
bnRfb3BfZ2V0X3Jlc3RfbGVuZ3RoOgogICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigxLCB0MSkK
ICAgICBzdG9yZXEgdDAsIFtjZnIsIHQxLCA4XQogICAgIGRpc3BhdGNoKDMpCisKK19sbGludF9v
cF9jbGVhcl9nZW5lcmF0b3JfZnJhbWU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRW
YXJpYWJsZSgxLCB0MCkKKyAgICBzdG9yZWkgMCwgR2VuZXJhdG9yRnJhbWU6Om1fbnVtYmVyT2ZT
YXZlZENhbGxlZUxvY2Fsc1t0MF0KKyAgICBkaXNwYXRjaCgyKQorCitfbGxpbnRfb3BfcmVzdW1l
X2Zyb21fZ2VuZXJhdG9yX2ZyYW1lOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkVmFy
aWFibGUoMiwgdDApCisgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDMsIHQxKQorICAgIGxvYWRx
IEdlbmVyYXRvckZyYW1lX2NhbGxlZUxvY2Fsc1t0MCwgdDEsIDhdLCB0MAorICAgIGxvYWRpc0Zy
b21JbnN0cnVjdGlvbigxLCB0MSkKKyAgICBzdG9yZXEgdDAsIFtjZnIsIHQxLCA4XQorICAgIGRp
c3BhdGNoKDQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNl
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKaW5kZXggOGQz
NzA2MzQ1MTI4ZTlkZjlkYWMzMjU3ZjdjNWY0ZTVhYjNhOWMzNC4uZTg2MDUzYjQ4MmE4ZDM2YjMz
NWMwOGJhN2QzNjc1NmQzYjc5NmFkOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9QYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFy
c2VyLmNwcApAQCAtMjUwLDkgKzI1MCwxMCBAQAogICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQm9k
eUV4cHJlc3Npb24gPSBmYWxzZTsKICAgICBpZiAobV9sZXhlci0+aXNSZXBhcnNpbmdGdW5jdGlv
bigpKSB7CiAgICAgICAgIFBhcnNlckZ1bmN0aW9uSW5mbzxBU1RCdWlsZGVyPiBmdW5jdGlvbklu
Zm87Ci0gICAgICAgIGlmIChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JC
b2R5TW9kZSkKLSAgICAgICAgICAgIGZ1bmN0aW9uSW5mby5wYXJhbWV0ZXJzID0gY3JlYXRlR2Vu
ZXJhdG9yUGFyYW1ldGVycyhjb250ZXh0KTsKLSAgICAgICAgZWxzZQorICAgICAgICBpZiAocGFy
c2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yQm9keU1vZGUpIHsKKyAgICAgICAg
ICAgIHVuc2lnbmVkIHBhcmFtZXRlckNvdW50ID0gMDsKKyAgICAgICAgICAgIGZ1bmN0aW9uSW5m
by5wYXJhbWV0ZXJzID0gY3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhjb250ZXh0LCBwYXJhbWV0
ZXJDb3VudCk7CisgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgcGFyc2VGdW5jdGlvblBhcmFt
ZXRlcnMoY29udGV4dCwgcGFyc2VNb2RlLCBmdW5jdGlvbkluZm8pOwogICAgICAgICBtX3BhcmFt
ZXRlcnMgPSBmdW5jdGlvbkluZm8ucGFyYW1ldGVyczsKIApAQCAtNDg1LDEwICs0ODYsOSBAQAog
CiAgICAgUGFyc2VyRnVuY3Rpb25JbmZvPFRyZWVCdWlsZGVyPiBpbmZvOwogICAgIGluZm8ubmFt
ZSA9ICZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5udWxsSWRlbnRpZmllcjsKLSAgICBpbmZvLnBhcmFt
ZXRlcnMgPSBjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKGNvbnRleHQpOworICAgIGluZm8ucGFy
YW1ldGVycyA9IGNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMoY29udGV4dCwgaW5mby5wYXJhbWV0
ZXJDb3VudCk7CiAgICAgaW5mby5zdGFydE9mZnNldCA9IHBhcmFtZXRlcnNTdGFydDsKICAgICBp
bmZvLnN0YXJ0TGluZSA9IHRva2VuTGluZSgpOwotICAgIGluZm8ucGFyYW1ldGVyQ291bnQgPSA0
OyAvLyBnZW5lcmF0b3IsIHN0YXRlLCB2YWx1ZSwgcmVzdW1lIG1vZGUKIAogICAgIHsKICAgICAg
ICAgQXV0b1BvcFNjb3BlUmVmIGdlbmVyYXRvckJvZHlTY29wZSh0aGlzLCBwdXNoU2NvcGUoKSk7
CkBAIC0xNzgxLDMyICsxNzgxLDMwIEBAIHN0YXRpYyBjb25zdCBjaGFyKiBzdHJpbmdGb3JGdW5j
dGlvbk1vZGUoU291cmNlUGFyc2VNb2RlIG1vZGUpCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBM
ZXhlclR5cGU+Ci10ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IHR5cGVuYW1lIFRyZWVCdWls
ZGVyOjpGb3JtYWxQYXJhbWV0ZXJMaXN0IFBhcnNlcjxMZXhlclR5cGU+OjpjcmVhdGVHZW5lcmF0
b3JQYXJhbWV0ZXJzKFRyZWVCdWlsZGVyJiBjb250ZXh0KQordGVtcGxhdGUgPGNsYXNzIFRyZWVC
dWlsZGVyPiB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6Rm9ybWFsUGFyYW1ldGVyTGlzdCBQYXJzZXI8
TGV4ZXJUeXBlPjo6Y3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhUcmVlQnVpbGRlciYgY29udGV4
dCwgdW5zaWduZWQmIHBhcmFtZXRlckNvdW50KQogewogICAgIGF1dG8gcGFyYW1ldGVycyA9IGNv
bnRleHQuY3JlYXRlRm9ybWFsUGFyYW1ldGVyTGlzdCgpOwogCiAgICAgSlNUb2tlbkxvY2F0aW9u
IGxvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CiAgICAgSlNUZXh0UG9zaXRpb24gcG9zaXRpb24g
PSB0b2tlblN0YXJ0UG9zaXRpb24oKTsKIAotICAgIC8vIEBnZW5lcmF0b3IKLSAgICBkZWNsYXJl
UGFyYW1ldGVyKCZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5nZW5lcmF0b3JQcml2YXRlTmFtZSk7Ci0g
ICAgYXV0byBnZW5lcmF0b3IgPSBjb250ZXh0LmNyZWF0ZUJpbmRpbmdMb2NhdGlvbihsb2NhdGlv
biwgbV92bS0+cHJvcGVydHlOYW1lcy0+Z2VuZXJhdG9yUHJpdmF0ZU5hbWUsIHBvc2l0aW9uLCBw
b3NpdGlvbiwgQXNzaWdubWVudENvbnRleHQ6OkRlY2xhcmF0aW9uU3RhdGVtZW50KTsKLSAgICBj
b250ZXh0LmFwcGVuZFBhcmFtZXRlcihwYXJhbWV0ZXJzLCBnZW5lcmF0b3IsIDApOworICAgIGF1
dG8gYWRkUGFyYW1ldGVyID0gWyZdKGNvbnN0IElkZW50aWZpZXImIG5hbWUpIHsKKyAgICAgICAg
ZGVjbGFyZVBhcmFtZXRlcigmbmFtZSk7CisgICAgICAgIGF1dG8gYmluZGluZyA9IGNvbnRleHQu
Y3JlYXRlQmluZGluZ0xvY2F0aW9uKGxvY2F0aW9uLCBuYW1lLCBwb3NpdGlvbiwgcG9zaXRpb24s
IEFzc2lnbm1lbnRDb250ZXh0OjpEZWNsYXJhdGlvblN0YXRlbWVudCk7CisgICAgICAgIGNvbnRl
eHQuYXBwZW5kUGFyYW1ldGVyKHBhcmFtZXRlcnMsIGJpbmRpbmcsIDApOworICAgICAgICArK3Bh
cmFtZXRlckNvdW50OworICAgIH07CiAKKyAgICAvLyBAZ2VuZXJhdG9yCisgICAgYWRkUGFyYW1l
dGVyKG1fdm0tPnByb3BlcnR5TmFtZXMtPmdlbmVyYXRvclByaXZhdGVOYW1lKTsKICAgICAvLyBA
Z2VuZXJhdG9yU3RhdGUKLSAgICBkZWNsYXJlUGFyYW1ldGVyKCZtX3ZtLT5wcm9wZXJ0eU5hbWVz
LT5nZW5lcmF0b3JTdGF0ZVByaXZhdGVOYW1lKTsKLSAgICBhdXRvIGdlbmVyYXRvclN0YXRlID0g
Y29udGV4dC5jcmVhdGVCaW5kaW5nTG9jYXRpb24obG9jYXRpb24sIG1fdm0tPnByb3BlcnR5TmFt
ZXMtPmdlbmVyYXRvclN0YXRlUHJpdmF0ZU5hbWUsIHBvc2l0aW9uLCBwb3NpdGlvbiwgQXNzaWdu
bWVudENvbnRleHQ6OkRlY2xhcmF0aW9uU3RhdGVtZW50KTsKLSAgICBjb250ZXh0LmFwcGVuZFBh
cmFtZXRlcihwYXJhbWV0ZXJzLCBnZW5lcmF0b3JTdGF0ZSwgMCk7Ci0KKyAgICBhZGRQYXJhbWV0
ZXIobV92bS0+cHJvcGVydHlOYW1lcy0+Z2VuZXJhdG9yU3RhdGVQcml2YXRlTmFtZSk7CiAgICAg
Ly8gQGdlbmVyYXRvclZhbHVlCi0gICAgZGVjbGFyZVBhcmFtZXRlcigmbV92bS0+cHJvcGVydHlO
YW1lcy0+Z2VuZXJhdG9yVmFsdWVQcml2YXRlTmFtZSk7Ci0gICAgYXV0byBnZW5lcmF0b3JWYWx1
ZSA9IGNvbnRleHQuY3JlYXRlQmluZGluZ0xvY2F0aW9uKGxvY2F0aW9uLCBtX3ZtLT5wcm9wZXJ0
eU5hbWVzLT5nZW5lcmF0b3JWYWx1ZVByaXZhdGVOYW1lLCBwb3NpdGlvbiwgcG9zaXRpb24sIEFz
c2lnbm1lbnRDb250ZXh0OjpEZWNsYXJhdGlvblN0YXRlbWVudCk7Ci0gICAgY29udGV4dC5hcHBl
bmRQYXJhbWV0ZXIocGFyYW1ldGVycywgZ2VuZXJhdG9yVmFsdWUsIDApOwotCisgICAgYWRkUGFy
YW1ldGVyKG1fdm0tPnByb3BlcnR5TmFtZXMtPmdlbmVyYXRvclZhbHVlUHJpdmF0ZU5hbWUpOwog
ICAgIC8vIEBnZW5lcmF0b3JSZXN1bWVNb2RlCi0gICAgZGVjbGFyZVBhcmFtZXRlcigmbV92bS0+
cHJvcGVydHlOYW1lcy0+Z2VuZXJhdG9yUmVzdW1lTW9kZVByaXZhdGVOYW1lKTsKLSAgICBhdXRv
IGdlbmVyYXRvclJlc3VtZU1vZGUgPSBjb250ZXh0LmNyZWF0ZUJpbmRpbmdMb2NhdGlvbihsb2Nh
dGlvbiwgbV92bS0+cHJvcGVydHlOYW1lcy0+Z2VuZXJhdG9yUmVzdW1lTW9kZVByaXZhdGVOYW1l
LCBwb3NpdGlvbiwgcG9zaXRpb24sIEFzc2lnbm1lbnRDb250ZXh0OjpEZWNsYXJhdGlvblN0YXRl
bWVudCk7Ci0gICAgY29udGV4dC5hcHBlbmRQYXJhbWV0ZXIocGFyYW1ldGVycywgZ2VuZXJhdG9y
UmVzdW1lTW9kZSwgMCk7CisgICAgYWRkUGFyYW1ldGVyKG1fdm0tPnByb3BlcnR5TmFtZXMtPmdl
bmVyYXRvclJlc3VtZU1vZGVQcml2YXRlTmFtZSk7CisgICAgLy8gQGdlbmVyYXRvckZyYW1lCisg
ICAgYWRkUGFyYW1ldGVyKG1fdm0tPnByb3BlcnR5TmFtZXMtPmdlbmVyYXRvckZyYW1lUHJpdmF0
ZU5hbWUpOwogCiAgICAgcmV0dXJuIHBhcmFtZXRlcnM7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9QYXJzZXIuaAppbmRleCBhMTFiMzVjMTAxZmU1Yjg0OWNiMjMzMDk2YzU2ODMxMzcwNjZj
YWJmLi5lNjE0OWEzYWMzNjk0MDQ4OTNkMjM2OTY5MzE2YjVjMzAzM2JlODUxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKQEAgLTEyNTksNyArMTI1OSw3IEBAIGNsYXNzIFBh
cnNlciB7CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBORVZFUl9JTkxJTkUgYm9v
bCBwYXJzZUZ1bmN0aW9uSW5mbyhUcmVlQnVpbGRlciYsIEZ1bmN0aW9uUmVxdWlyZW1lbnRzLCBT
b3VyY2VQYXJzZU1vZGUsIGJvb2wgbmFtZUlzSW5Db250YWluaW5nU2NvcGUsIENvbnN0cnVjdG9y
S2luZCwgU3VwZXJCaW5kaW5nLCBpbnQgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIFBhcnNlckZ1bmN0
aW9uSW5mbzxUcmVlQnVpbGRlcj4mLCBGdW5jdGlvbkRlZmluaXRpb25UeXBlKTsKICAgICAKICAg
ICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElORSBpbnQgcGFyc2VGdW5j
dGlvblBhcmFtZXRlcnMoVHJlZUJ1aWxkZXImLCBTb3VyY2VQYXJzZU1vZGUsIFBhcnNlckZ1bmN0
aW9uSW5mbzxUcmVlQnVpbGRlcj4mKTsKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+
IE5FVkVSX0lOTElORSB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6Rm9ybWFsUGFyYW1ldGVyTGlzdCBj
cmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKFRyZWVCdWlsZGVyJik7CisgICAgdGVtcGxhdGUgPGNs
YXNzIFRyZWVCdWlsZGVyPiBORVZFUl9JTkxJTkUgdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkZvcm1h
bFBhcmFtZXRlckxpc3QgY3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhUcmVlQnVpbGRlciYsIHVu
c2lnbmVkJiBwYXJhbWV0ZXJDb3VudCk7CiAKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxk
ZXI+IE5FVkVSX0lOTElORSBUcmVlQ2xhc3NFeHByZXNzaW9uIHBhcnNlQ2xhc3MoVHJlZUJ1aWxk
ZXImLCBGdW5jdGlvblJlcXVpcmVtZW50cywgUGFyc2VyQ2xhc3NJbmZvPFRyZWVCdWlsZGVyPiYp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93
UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhz
LmNwcAppbmRleCA3OGI0M2M0ZDM4OWZmN2E5MDgzMTNiNTU0MDU3MGU4ODJlMWIwMzcxLi5kM2Zm
Yjk3NjVmMzUxY2QxNTBhMWY4YWVhMDRiYTY0YTZlN2QwNTRmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKQEAgLTY5NywzMyArNjk3
LDEyIEBAIHN0YXRpYyB2b2lkIHVwZGF0ZVJlc3VsdFByb2ZpbGVGb3JCaW5hcnlBcml0aE9wKEV4
ZWNTdGF0ZSosIEluc3RydWN0aW9uKiwgSlNWYWx1CiAgICAgLy8gT25seSBzYXZlIHZhcmlhYmxl
cyBhbmQgdGVtcG9yYXJ5IHJlZ2lzdGVycy4gVGhlIHNjb3BlIHJlZ2lzdGVycyBhcmUgaW5jbHVk
ZWQgaW4gdGhlbS4KICAgICAvLyBCdXQgcGFyYW1ldGVycyBhcmUgbm90IGluY2x1ZGVkLiBCZWNh
dXNlIHRoZSBnZW5lcmF0b3IgaW1wbGVtZW50YXRpb24gcmVwbGFjZXMgdGhlIHZhbHVlcyBvZiBw
YXJhbWV0ZXJzIG9uIGVhY2ggZ2VuZXJhdG9yLm5leHQoKSBjYWxsLgogICAgIEJFR0lOKCk7Ci0g
ICAgSlNWYWx1ZSBnZW5lcmF0b3IgPSBPUCgxKS5qc1ZhbHVlKCk7Ci0gICAgR2VuZXJhdG9yRnJh
bWUqIGZyYW1lID0gbnVsbHB0cjsKLSAgICBKU1ZhbHVlIHZhbHVlID0gZ2VuZXJhdG9yLmdldChl
eGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuZ2VuZXJhdG9yRnJhbWVQcml2YXRlTmFtZSk7Ci0g
ICAgaWYgKCF2YWx1ZS5pc051bGwoKSkKLSAgICAgICAgZnJhbWUgPSBqc0Nhc3Q8R2VuZXJhdG9y
RnJhbWUqPih2YWx1ZSk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIC8vIEZJWE1FOiBPbmNlIEpTR2Vu
ZXJhdG9yIHNwZWNpYWxpemVkIG9iamVjdCBpcyBpbnRyb2R1Y2VkLCB0aGlzIEdlbmVyYXRvckZy
YW1lIHNob3VsZCBiZSBlbWJlZGVkIGludG8gaXQgdG8gYXZvaWQgYWxsb2NhdGlvbnMuCi0gICAg
ICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE1NDUKLSAg
ICAgICAgZnJhbWUgPSBHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlKGV4ZWMtPnZtKCksICBleGVjLT5j
b2RlQmxvY2soKS0+bnVtQ2FsbGVlTG9jYWxzKCkpOwotICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qg
c2xvdChnZW5lcmF0b3IsIHRydWUsIFB1dFByb3BlcnR5U2xvdDo6UHV0QnlJZCk7Ci0gICAgICAg
IGFzT2JqZWN0KGdlbmVyYXRvciktPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5wdXQoYXNPYmpl
Y3QoZ2VuZXJhdG9yKSwgZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLmdlbmVyYXRvckZyYW1l
UHJpdmF0ZU5hbWUsIGZyYW1lLCBzbG90KTsKLSAgICB9CisgICAgR2VuZXJhdG9yRnJhbWUqIGZy
YW1lID0ganNDYXN0PEdlbmVyYXRvckZyYW1lKj4oT1AoMSkuanNWYWx1ZSgpKTsKICAgICB1bnNp
Z25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSBwY1syXS51LnVuc2lnbmVkVmFsdWU7CiAgICAg
ZnJhbWUtPnNhdmUoZXhlYywgZXhlYy0+Y29kZUJsb2NrKCktPmxpdmVDYWxsZWVMb2NhbHNBdFlp
ZWxkKGxpdmVDYWxsZWVMb2NhbHNJbmRleCkpOwogICAgIEVORCgpOwogfQogCi1TTE9XX1BBVEhf
REVDTChzbG93X3BhdGhfcmVzdW1lKQotewotICAgIEJFR0lOKCk7Ci0gICAgSlNWYWx1ZSBnZW5l
cmF0b3IgPSBPUCgxKS5qc1ZhbHVlKCk7Ci0gICAgR2VuZXJhdG9yRnJhbWUqIGZyYW1lID0ganND
YXN0PEdlbmVyYXRvckZyYW1lKj4oZ2VuZXJhdG9yLmdldChleGVjLCBleGVjLT5wcm9wZXJ0eU5h
bWVzKCkuZ2VuZXJhdG9yRnJhbWVQcml2YXRlTmFtZSkpOwotICAgIHVuc2lnbmVkIGxpdmVDYWxs
ZWVMb2NhbHNJbmRleCA9IHBjWzJdLnUudW5zaWduZWRWYWx1ZTsKLSAgICBmcmFtZS0+cmVzdW1l
KGV4ZWMsIGV4ZWMtPmNvZGVCbG9jaygpLT5saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZChsaXZlQ2Fs
bGVlTG9jYWxzSW5kZXgpKTsKLSAgICBFTkQoKTsKLX0KLQogU0xPV19QQVRIX0RFQ0woc2xvd19w
YXRoX2NyZWF0ZV9sZXhpY2FsX2Vudmlyb25tZW50KQogewogICAgIEJFR0lOKCk7CkBAIC03OTcs
NCArNzc2LDEyIEBAIHN0YXRpYyB2b2lkIHVwZGF0ZVJlc3VsdFByb2ZpbGVGb3JCaW5hcnlBcml0
aE9wKEV4ZWNTdGF0ZSosIEluc3RydWN0aW9uKiwgSlNWYWx1CiAgICAgRU5EKCk7CiB9CiAKK1NM
T1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9uZXdfZ2VuZXJhdG9yX2ZyYW1lKQoreworICAgIEJFR0lO
KCk7CisgICAgdW5zaWduZWQgZ2VuZXJhdG9yRnJhbWVTaXplID0gcGNbMl0udS51bnNpZ25lZFZh
bHVlOworICAgIFJFVFVSTihHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlKGV4ZWMsIGdlbmVyYXRvckZy
YW1lU2l6ZSkpOworfQorCisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAppbmRleCBmMDBkODcwNWQ0ZTY3ZmU0
ZDQwNTliZGUxNjhlZTg4ZjU3ZGY3MmU3Li4wNjUwYzRlOGNiNzE1NTkxN2NkMWQ3YTJmNzdhN2M3
ZjcyOWExNTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21t
b25TbG93UGF0aHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25T
bG93UGF0aHMuaApAQCAtMjk2LDYgKzI5Niw3IEBAIGlubGluZSB2b2lkIGRlY29kZVJlc3VsdChT
bG93UGF0aFJldHVyblR5cGUgcmVzdWx0LCB2b2lkKiYgYSwgdm9pZComIGIpCiBTTE9XX1BBVEhf
SElEREVOX0RFQ0woc2xvd19wYXRoX3B1c2hfd2l0aF9zY29wZSk7CiBTTE9XX1BBVEhfSElEREVO
X0RFQ0woc2xvd19wYXRoX3Jlc29sdmVfc2NvcGUpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNs
b3dfcGF0aF9jb3B5X3Jlc3QpOworU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9uZXdf
Z2VuZXJhdG9yX2ZyYW1lKTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZyYW1lLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZyYW1lLmNwcAppbmRleCBlZjZlYTdhMTAw
MjU4YzNlY2UwNGRhYWI0M2JkYWE4NTFlYzhmNzE1Li42ZDdiYWFiMGQ5MTVhOTJhYjBkM2M0NWJj
NzBjMDBhZDUxNTgxNDRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9HZW5lcmF0b3JGcmFtZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
R2VuZXJhdG9yRnJhbWUuY3BwCkBAIC0zMCw0OSArMzAsNTEgQEAKICNpbmNsdWRlICJIZWFwSXRl
cmF0aW9uU2NvcGUuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUg
IkpTQ2VsbElubGluZXMuaCIKKyNpbmNsdWRlICJKU09iamVjdElubGluZXMuaCIKICNpbmNsdWRl
ICJTbG90VmlzaXRvcklubGluZXMuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCiAK
IG5hbWVzcGFjZSBKU0MgewogCi1jb25zdCBDbGFzc0luZm8gR2VuZXJhdG9yRnJhbWU6OnNfaW5m
byA9IHsgIkdlbmVyYXRvckZyYW1lIiwgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9U
QUJMRShHZW5lcmF0b3JGcmFtZSkgfTsKK2NvbnN0IENsYXNzSW5mbyBHZW5lcmF0b3JGcmFtZTo6
c19pbmZvID0geyAiR2VuZXJhdG9yRnJhbWUiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBDUkVB
VEVfTUVUSE9EX1RBQkxFKEdlbmVyYXRvckZyYW1lKSB9OwogCi1HZW5lcmF0b3JGcmFtZTo6R2Vu
ZXJhdG9yRnJhbWUoVk0mIHZtLCBzaXplX3QgbnVtYmVyT2ZDYWxsZWVMb2NhbHMpCi0gICAgOiBC
YXNlKHZtLCB2bS5nZW5lcmF0b3JGcmFtZVN0cnVjdHVyZS5nZXQoKSkKK0dlbmVyYXRvckZyYW1l
OjpHZW5lcmF0b3JGcmFtZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCB1aW50MzJfdCBu
dW1iZXJPZkNhbGxlZUxvY2FscykKKyAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkKICAgICAsIG1f
bnVtYmVyT2ZDYWxsZWVMb2NhbHMobnVtYmVyT2ZDYWxsZWVMb2NhbHMpCiB7CiB9CiAKLXZvaWQg
R2VuZXJhdG9yRnJhbWU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKLXsKLSAgICBCYXNlOjpmaW5p
c2hDcmVhdGlvbih2bSk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX251bWJlck9mQ2Fs
bGVlTG9jYWxzOyArK2kpCi0gICAgICAgIGxvY2FsQXQoaSkuY2xlYXIoKTsKLX0KLQogU3RydWN0
dXJlKiBHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCiB7Ci0gICAgcmV0dXJuIFN0cnVj
dHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oQ2VsbFR5
cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVh
dGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1
Y3R1cmVGbGFncyksIGluZm8oKSk7CiB9CiAKLUdlbmVyYXRvckZyYW1lKiBHZW5lcmF0b3JGcmFt
ZTo6Y3JlYXRlKFZNJiB2bSwgc2l6ZV90IG51bWJlck9mTG9jYWxzKQorR2VuZXJhdG9yRnJhbWUq
IEdlbmVyYXRvckZyYW1lOjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgc2l6
ZV90IG51bWJlck9mQ2FsbGVlTG9jYWxzKQogewogICAgIEdlbmVyYXRvckZyYW1lKiByZXN1bHQg
PQogICAgICAgICBuZXcgKAogICAgICAgICAgICAgTm90TnVsbCwKLSAgICAgICAgICAgIGFsbG9j
YXRlQ2VsbDxHZW5lcmF0b3JGcmFtZT4odm0uaGVhcCwgYWxsb2NhdGlvblNpemVGb3JMb2NhbHMo
bnVtYmVyT2ZMb2NhbHMpKSkKLSAgICAgICAgR2VuZXJhdG9yRnJhbWUodm0sIG51bWJlck9mTG9j
YWxzKTsKKyAgICAgICAgICAgIGFsbG9jYXRlQ2VsbDxHZW5lcmF0b3JGcmFtZT4odm0uaGVhcCwg
YWxsb2NhdGlvblNpemVGb3JMb2NhbHMobnVtYmVyT2ZDYWxsZWVMb2NhbHMpKSkKKyAgICAgICAg
R2VuZXJhdG9yRnJhbWUodm0sIHN0cnVjdHVyZSwgbnVtYmVyT2ZDYWxsZWVMb2NhbHMpOwogICAg
IHJlc3VsdC0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK0dl
bmVyYXRvckZyYW1lKiBHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgc2l6
ZV90IG51bWJlck9mQ2FsbGVlTG9jYWxzKQoreworICAgIHJldHVybiBjcmVhdGUoZXhlYy0+dm0o
KSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5nZW5lcmF0b3JGcmFtZVN0cnVjdHVyZSgp
LCBudW1iZXJPZkNhbGxlZUxvY2Fscyk7Cit9CisKIHZvaWQgR2VuZXJhdG9yRnJhbWU6OnNhdmUo
RXhlY1N0YXRlKiBleGVjLCBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlQ2FsbGVlTG9jYWxzKQog
eworICAgIC8vIEFsbG9jYXRlIHRoZSBnZW5lcmF0b3IgbG9jYWwgc3BhY2UgZmlyc3QuCisgICAg
bV9udW1iZXJPZlNhdmVkQ2FsbGVlTG9jYWxzID0gbGl2ZUNhbGxlZUxvY2Fscy5iaXRDb3VudCgp
OworCiAgICAgLy8gT25seSBzYXZlIGNhbGxlZSBsb2NhbHMuCiAgICAgLy8gRXZlcnkgdGltZSBh
IGdlbmVyYXRvciBpcyBjYWxsZWQgKG9yIHJlc3VtZWQpLCBwYXJhbWV0ZXJzIHNob3VsZCBiZSBy
ZXBsYWNlZC4KLSAgICBBU1NFUlQobGl2ZUNhbGxlZUxvY2Fscy5udW1CaXRzKCkgPD0gbV9udW1i
ZXJPZkNhbGxlZUxvY2Fscyk7CisgICAgdW5zaWduZWQgZ2VuZXJhdG9yRnJhbWVJbmRleCA9IDA7
CiAgICAgbGl2ZUNhbGxlZUxvY2Fscy5mb3JFYWNoU2V0Qml0KFsmXShzaXplX3QgaW5kZXgpIHsK
LSAgICAgICAgbG9jYWxBdChpbmRleCkuc2V0KGV4ZWMtPnZtKCksIHRoaXMsIGV4ZWMtPnVuY2hl
Y2tlZFIodmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaW5kZXgpKS5qc1ZhbHVlKCkpOworICAgICAg
ICBsb2NhbEF0KGdlbmVyYXRvckZyYW1lSW5kZXgrKykuc2V0KGV4ZWMtPnZtKCksIHRoaXMsIGV4
ZWMtPnVuY2hlY2tlZFIodmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaW5kZXgpKS5qc1ZhbHVlKCkp
OwogICAgIH0pOwogfQogCkBAIC04MCwxMCArODIsMTEgQEAgdm9pZCBHZW5lcmF0b3JGcmFtZTo6
cmVzdW1lKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZUNhbGxlZUxv
Y2EKIHsKICAgICAvLyBPbmx5IHJlc3VtZSBjYWxsZWUgbG9jYWxzLgogICAgIC8vIEV2ZXJ5IHRp
bWUgYSBnZW5lcmF0b3IgaXMgY2FsbGVkIChvciByZXN1bWVkKSwgcGFyYW1ldGVycyBzaG91bGQg
YmUgcmVwbGFjZWQuCisgICAgdW5zaWduZWQgZ2VuZXJhdG9yRnJhbWVJbmRleCA9IDA7CiAgICAg
bGl2ZUNhbGxlZUxvY2Fscy5mb3JFYWNoU2V0Qml0KFsmXShzaXplX3QgaW5kZXgpIHsKLSAgICAg
ICAgZXhlYy0+dW5jaGVja2VkUih2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChpbmRleCkpID0gbG9j
YWxBdChpbmRleCkuZ2V0KCk7Ci0gICAgICAgIGxvY2FsQXQoaW5kZXgpLmNsZWFyKCk7CisgICAg
ICAgIGV4ZWMtPnVuY2hlY2tlZFIodmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaW5kZXgpKSA9IGxv
Y2FsQXQoZ2VuZXJhdG9yRnJhbWVJbmRleCsrKS5nZXQoKTsKICAgICB9KTsKKyAgICBtX251bWJl
ck9mU2F2ZWRDYWxsZWVMb2NhbHMgPSAwOwogfQogCiB2b2lkIEdlbmVyYXRvckZyYW1lOjp2aXNp
dENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCkBAIC05MSw3ICs5
NCwxMiBAQCB2b2lkIEdlbmVyYXRvckZyYW1lOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwg
U2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgR2VuZXJhdG9yRnJhbWUqIHRoaXNPYmplY3QgPSBq
c0Nhc3Q8R2VuZXJhdG9yRnJhbWUqPihjZWxsKTsKICAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRo
aXNPYmplY3QsIHZpc2l0b3IpOwogICAgIC8vIFNpbmNlIG9ubHkgdHJ1ZSBjZWxsIHBvaW50ZXJz
IGFyZSBzdG9yZWQgYXMgYSBjZWxsLCB3ZSBjYW4gc2FmZWx5IG1hcmsgdGhlbS4KLSAgICB2aXNp
dG9yLmFwcGVuZFZhbHVlcyh0aGlzT2JqZWN0LT5sb2NhbHMoKSwgdGhpc09iamVjdC0+bV9udW1i
ZXJPZkNhbGxlZUxvY2Fscyk7CisgICAgdmlzaXRvci5hcHBlbmRWYWx1ZXModGhpc09iamVjdC0+
bG9jYWxzKCksIHRoaXNPYmplY3QtPm1fbnVtYmVyT2ZTYXZlZENhbGxlZUxvY2Fscyk7CisgICAg
Ly8gQ2xlYXIgbm90IHVzZWQgY2FsbGVlIGxvY2FscyB3aGVuIG1hcmtpbmcuCisgICAgLy8gVGhp
cyBlbnN1cmVzIHRoYXQsICJpZiBhIGdpdmVuIGxvY2FsIGhhcyBhIHZhbHVlLCB0aGlzIHZhbHVl
IGlzIGNvcnJlY3RseSBtYXJrZWQgaW4gdGhlIHByZXZpb3VzIG1hcmtpbmcgcGhhc2UiLgorICAg
IHNpemVfdCByZW1haW5pbmcgPSB0aGlzT2JqZWN0LT5tX251bWJlck9mQ2FsbGVlTG9jYWxzIC0g
dGhpc09iamVjdC0+bV9udW1iZXJPZlNhdmVkQ2FsbGVlTG9jYWxzOworICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgcmVtYWluaW5nOyArK2kpCisgICAgICAgIHRoaXNPYmplY3QtPmxvY2FsQXQo
dGhpc09iamVjdC0+bV9udW1iZXJPZlNhdmVkQ2FsbGVlTG9jYWxzICsgaSkuY2xlYXIoKTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9HZW5lcmF0b3JGcmFtZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
R2VuZXJhdG9yRnJhbWUuaAppbmRleCAzZDU0NWIxNDdkZDRhYmZiMmJiYjliNWE3MTk0ZThmNzQ4
NDFjNDlhLi5jYWJlNTg3MDBhODgwNWM4MjY1ZjA4MzcxY2FhZDdhODgxNzJmZDQ2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGcmFtZS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZyYW1lLmgKQEAgLTI3LDEx
ICsyNywxNCBAQAogI2RlZmluZSBHZW5lcmF0b3JGcmFtZV9oCiAKICNpbmNsdWRlICJKU0NlbGwu
aCIKKyNpbmNsdWRlICJKU09iamVjdC5oIgogI2luY2x1ZGUgPHd0Zi9GYXN0Qml0VmVjdG9yLmg+
CiAKIG5hbWVzcGFjZSBKU0MgewogCi1jbGFzcyBHZW5lcmF0b3JGcmFtZSA6IHB1YmxpYyBKU0Nl
bGwgeworY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworCitjbGFzcyBHZW5lcmF0b3JGcmFt
ZSA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAgICBmcmllbmQgY2xhc3MgSklUOwogI2lm
IEVOQUJMRShERkdfSklUKQogICAgIGZyaWVuZCBjbGFzcyBERkc6OlNwZWN1bGF0aXZlSklUOwpA
QCAtMzksMTIgKzQyLDEyIEBAIGNsYXNzIEdlbmVyYXRvckZyYW1lIDogcHVibGljIEpTQ2VsbCB7
CiAjZW5kaWYKICAgICBmcmllbmQgY2xhc3MgVk07CiBwdWJsaWM6Ci0gICAgdHlwZWRlZiBKU0Nl
bGwgQmFzZTsKLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBTdHJ1
Y3R1cmVJc0ltbW9ydGFsIHwgQmFzZTo6U3RydWN0dXJlRmxhZ3M7CisgICAgdHlwZWRlZiBKU05v
bkZpbmFsT2JqZWN0IEJhc2U7CiAKICAgICBERUNMQVJFX0VYUE9SVF9JTkZPOwogCi0gICAgc3Rh
dGljIEdlbmVyYXRvckZyYW1lKiBjcmVhdGUoVk0mLCBzaXplX3QgbnVtYmVyT2ZDYWxsZWVMb2Nh
bHMpOworICAgIHN0YXRpYyBHZW5lcmF0b3JGcmFtZSogY3JlYXRlKEV4ZWNTdGF0ZSosIHNpemVf
dCBudW1iZXJPZkNhbGxlZUxvY2Fscyk7CisgICAgc3RhdGljIEdlbmVyYXRvckZyYW1lKiBjcmVh
dGUoVk0mLCBTdHJ1Y3R1cmUqLCBzaXplX3QgbnVtYmVyT2ZDYWxsZWVMb2NhbHMpOwogCiAgICAg
V3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiogbG9jYWxzKCkKICAgICB7CkBAIC01Myw3ICs1Niw2
IEBAIGNsYXNzIEdlbmVyYXRvckZyYW1lIDogcHVibGljIEpTQ2VsbCB7CiAKICAgICBXcml0ZUJh
cnJpZXJCYXNlPFVua25vd24+JiBsb2NhbEF0KHNpemVfdCBpbmRleCkKICAgICB7Ci0gICAgICAg
IEFTU0VSVChpbmRleCA8IG1fbnVtYmVyT2ZDYWxsZWVMb2NhbHMpOwogICAgICAgICByZXR1cm4g
bG9jYWxzKClbaW5kZXhdOwogICAgIH0KIApAQCAtNjIsNiArNjQsMjEgQEAgY2xhc3MgR2VuZXJh
dG9yRnJhbWUgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAgICAgcmV0dXJuIFdURjo6cm91bmRVcFRv
TXVsdGlwbGVPZjxzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KT4oc2l6ZW9mKEdlbmVyYXRv
ckZyYW1lKSk7CiAgICAgfQogCisgICAgc3RhdGljIHNpemVfdCBsb2NhbE9mZnNldCh1bnNpZ25l
ZCBpbmRleCkKKyAgICB7CisgICAgICAgIHJldHVybiBvZmZzZXRPZkxvY2FscygpICsgaW5kZXgg
KiBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KTsKKyAgICB9CisKKyAgICBzdGF0aWMgc2l6
ZV90IG51bWJlck9mQ2FsbGVlTG9jYWxzT2Zmc2V0KCkKKyAgICB7CisgICAgICAgIHJldHVybiBP
QkpFQ1RfT0ZGU0VUT0YoR2VuZXJhdG9yRnJhbWUsIG1fbnVtYmVyT2ZDYWxsZWVMb2NhbHMpOwor
ICAgIH0KKworICAgIHN0YXRpYyBzaXplX3QgbnVtYmVyT2ZTYXZlZENhbGxlZUxvY2Fsc09mZnNl
dCgpCisgICAgeworICAgICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEdlbmVyYXRvckZyYW1l
LCBtX251bWJlck9mU2F2ZWRDYWxsZWVMb2NhbHMpOworICAgIH0KKwogICAgIHN0YXRpYyBzaXpl
X3QgYWxsb2NhdGlvblNpemVGb3JMb2NhbHModW5zaWduZWQgbnVtYmVyT2ZMb2NhbHMpCiAgICAg
ewogICAgICAgICByZXR1cm4gb2Zmc2V0T2ZMb2NhbHMoKSArIG51bWJlck9mTG9jYWxzICogc2l6
ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPik7CkBAIC03MywxNCArOTAsMTMgQEAgY2xhc3MgR2Vu
ZXJhdG9yRnJhbWUgOiBwdWJsaWMgSlNDZWxsIHsKICAgICB2b2lkIHJlc3VtZShFeGVjU3RhdGUq
LCBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlQ2FsbGVlTG9jYWxzKTsKIAogcHJpdmF0ZToKLSAg
ICBHZW5lcmF0b3JGcmFtZShWTSYsIHNpemVfdCBudW1iZXJPZkNhbGxlZUxvY2Fscyk7CisgICAg
R2VuZXJhdG9yRnJhbWUoVk0mLCBTdHJ1Y3R1cmUqLCB1aW50MzJfdCBudW1iZXJPZkNhbGxlZUxv
Y2Fscyk7CiAKLSAgICBzaXplX3QgbV9udW1iZXJPZkNhbGxlZUxvY2FsczsKKyAgICB1aW50MzJf
dCBtX251bWJlck9mQ2FsbGVlTG9jYWxzOworICAgIHVpbnQzMl90IG1fbnVtYmVyT2ZTYXZlZENh
bGxlZUxvY2FscyB7IDAgfTsKIAogICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0
b3I7CiAKLSAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7Ci0KIHByb3RlY3RlZDoKICAgICBz
dGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4
IDc2OWEzZWZiMzA0MzhkY2Q5ZGRlNDQyZGM4ODk0YTFmMDM4MmE1MDQuLjhjYjg0YWJlNWY4NzM5
YTAxOGU2MmVhNDhmNDcxNDQ0Nzk1NTFkM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTUwLDYgKzUwLDcgQEAKICNpbmNsdWRl
ICJFcnJvclByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkZ1bmN0aW9uQ29uc3RydWN0b3IuaCIKICNp
bmNsdWRlICJGdW5jdGlvblByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkdlbmVyYXRvckZyYW1lLmgi
CiAjaW5jbHVkZSAiR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkdl
bmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiR2VuZXJhdG9yUHJvdG90eXBl
LmgiCkBAIC0zODgsNiArMzg5LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdChWTSYgdm0p
CiAgICAgCiAgICAgRk9SX0VBQ0hfQlVJTFRJTl9ERVJJVkVEX0lURVJBVE9SX1RZUEUoQ1JFQVRF
X1BST1RPVFlQRV9GT1JfREVSSVZFRF9JVEVSQVRPUl9UWVBFKQogICAgIG1fcHJvcGVydHlOYW1l
SXRlcmF0b3JTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpj
cmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1faXRlcmF0b3JQcm90b3R5cGUuZ2V0KCkpKTsKKyAg
ICBtX2dlbmVyYXRvckZyYW1lU3RydWN0dXJlLnNldCh2bSwgdGhpcywgR2VuZXJhdG9yRnJhbWU6
OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywganNOdWxsKCkpKTsKICAgICBtX2dlbmVyYXRvclBy
b3RvdHlwZS5zZXQodm0sIHRoaXMsIEdlbmVyYXRvclByb3RvdHlwZTo6Y3JlYXRlKHZtLCB0aGlz
LCBHZW5lcmF0b3JQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9pdGVyYXRv
clByb3RvdHlwZS5nZXQoKSkpKTsKICAgICAKICN1bmRlZiBDUkVBVEVfUFJPVE9UWVBFX0ZPUl9E
RVJJVkVEX0lURVJBVE9SX1RZUEUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5oCmluZGV4IGI0ZmYyZmI0MTNlMGU0NDYyNDkyYTQ4YTNmZDVhNGMyNGVh
MGI3NDEuLjcxZDM5ZWM5MjgzYWQ5ZTU5MDEyNDRmMDEzNmExMzU4ZjU0NGE5OTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAtMjU1LDYg
KzI1NSw3IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFi
bGVPYmplY3QgewogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fY2FsbGJhY2tGdW5jdGlv
blN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2NhbGxiYWNrT2JqZWN0
U3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fcHJvcGVydHlOYW1lSXRl
cmF0b3JTdHJ1Y3R1cmU7CisgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9nZW5lcmF0b3JG
cmFtZVN0cnVjdHVyZTsKICNpZiBKU0NfT0JKQ19BUElfRU5BQkxFRAogICAgIFdyaXRlQmFycmll
cjxTdHJ1Y3R1cmU+IG1fb2JqY0NhbGxiYWNrRnVuY3Rpb25TdHJ1Y3R1cmU7CiAgICAgV3JpdGVC
YXJyaWVyPFN0cnVjdHVyZT4gbV9vYmpjV3JhcHBlck9iamVjdFN0cnVjdHVyZTsKQEAgLTUwMSw2
ICs1MDIsNyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlh
YmxlT2JqZWN0IHsKICAgICBTdHJ1Y3R1cmUqIGNhbGxiYWNrRnVuY3Rpb25TdHJ1Y3R1cmUoKSBj
b25zdCB7IHJldHVybiBtX2NhbGxiYWNrRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBT
dHJ1Y3R1cmUqIGNhbGxiYWNrT2JqZWN0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9jYWxs
YmFja09iamVjdFN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogcHJvcGVydHlOYW1l
SXRlcmF0b3JTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3Byb3BlcnR5TmFtZUl0ZXJhdG9y
U3RydWN0dXJlLmdldCgpOyB9CisgICAgU3RydWN0dXJlKiBnZW5lcmF0b3JGcmFtZVN0cnVjdHVy
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZ2VuZXJhdG9yRnJhbWVTdHJ1Y3R1cmUuZ2V0KCk7IH0KICNp
ZiBKU0NfT0JKQ19BUElfRU5BQkxFRAogICAgIFN0cnVjdHVyZSogb2JqY0NhbGxiYWNrRnVuY3Rp
b25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX29iamNDYWxsYmFja0Z1bmN0aW9uU3RydWN0
dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBvYmpjV3JhcHBlck9iamVjdFN0cnVjdHVyZSgp
IGNvbnN0IHsgcmV0dXJuIG1fb2JqY1dyYXBwZXJPYmplY3RTdHJ1Y3R1cmUuZ2V0KCk7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCAwZTQ0YzM0NjBmOWY4ZjBkY2IzNWQ5
MTJkNzk1ZjdmOThkZmI3ZjQ1Li4wZWYyNWU3MjlhYTZlNTVjM2RjYTA2MWMyMmI2NWFhNmY3YjVi
MzRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC0yNDYsNyArMjQ2LDYg
QEAgc3RhdGljIGJvb2wgZW5hYmxlQXNzZW1ibGVyKEV4ZWN1dGFibGVBbGxvY2F0b3ImIGV4ZWN1
dGFibGVBbGxvY2F0b3IpCiAgICAgaW5mZXJyZWRUeXBlU3RydWN0dXJlLnNldCgqdGhpcywgSW5m
ZXJyZWRUeXBlOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgaW5m
ZXJyZWRUeXBlVGFibGVTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBJbmZlcnJlZFR5cGVUYWJsZTo6Y3Jl
YXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIGZ1bmN0aW9uUmFyZURhdGFT
dHJ1Y3R1cmUuc2V0KCp0aGlzLCBGdW5jdGlvblJhcmVEYXRhOjpjcmVhdGVTdHJ1Y3R1cmUoKnRo
aXMsIDAsIGpzTnVsbCgpKSk7Ci0gICAgZ2VuZXJhdG9yRnJhbWVTdHJ1Y3R1cmUuc2V0KCp0aGlz
LCBHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwog
ICAgIGV4Y2VwdGlvblN0cnVjdHVyZS5zZXQoKnRoaXMsIEV4Y2VwdGlvbjo6Y3JlYXRlU3RydWN0
dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIHByb21pc2VEZWZlcnJlZFN0cnVjdHVyZS5z
ZXQoKnRoaXMsIEpTUHJvbWlzZURlZmVycmVkOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpz
TnVsbCgpKSk7CiAgICAgaW50ZXJuYWxQcm9taXNlRGVmZXJyZWRTdHJ1Y3R1cmUuc2V0KCp0aGlz
LCBKU0ludGVybmFsUHJvbWlzZURlZmVycmVkOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpz
TnVsbCgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAppbmRleCBhZWUwYWMxZjIxYjg0
NTFiYzc3Njc0NDNhMGIwNWNhMDQ4YjRmNDliLi4yMzYwODM3MGE5ODM2ZDg5NzdlNDlkNzFlNjhh
ODA5YjlhYzQ1MzYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKQEAgLTMxMiw3ICsz
MTIsNiBAQCBjbGFzcyBWTSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxWTT4gewogICAg
IFN0cm9uZzxTdHJ1Y3R1cmU+IGluZmVycmVkVHlwZVN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3Ry
dWN0dXJlPiBpbmZlcnJlZFR5cGVUYWJsZVN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJl
PiBmdW5jdGlvblJhcmVEYXRhU3RydWN0dXJlOwotICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGdlbmVy
YXRvckZyYW1lU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGV4Y2VwdGlvblN0cnVj
dHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBwcm9taXNlRGVmZXJyZWRTdHJ1Y3R1cmU7CiAg
ICAgU3Ryb25nPFN0cnVjdHVyZT4gaW50ZXJuYWxQcm9taXNlRGVmZXJyZWRTdHJ1Y3R1cmU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>269163</attachid>
            <date>2016-01-16 02:11:21 -0800</date>
            <delta_ts>2016-01-16 03:00:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-152723-20160116191051.patch</filename>
            <type>text/plain</type>
            <size>99870</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk1MDU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
ZDVkMzdhNWE2NzE2ZmQyMWY5YzRiYzhlZDg0OGZkNTlhZjU1NTgzLi5iNmI4NmIzNDZjYTUwNDM0
ZWI1MTgyOGU4NDZiYmFlNTkwNDc4NWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMDMgQEAKKzIwMTYtMDEtMTYgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgQ3JlYXRlIEdlbmVyYXRvckZyYW1lIHdpdGggdGhlIGJ5dGVjb2Rl
IG9wX25ld19nZW5lcmF0b3JfZnJhbWUgYW5kIG1ha2Ugb3Bfc2F2ZSAvIG9wX3Jlc3VtZSBERkcv
RlRMIGNhcGFibGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1MjcyMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEluIHRoaXMgcGF0Y2gsIHdlIGltcGxlbWVudCBERkcgLyBGVEwgY2FwYWJpbGUgRVM2IGdl
bmVyYXRvcnMuCisgICAgICAgIFdlIGludHJvZHVjZSB0aGUgc2V2ZXJhbCBieXRlY29kZXMgYW5k
IGNvbXBpbGUgdGhlbSBpbiBERkcgLyBGVEwuCisKKyAgICAgICAgLSBvcF9ub3AKKworICAgICAg
ICAgICAgTm9wIG9wZXJhdGlvbiBpbiB0aGUgYnl0ZWNvZGUuIFRoaXMgaXMgdXNlZCB0byByZXBy
ZXNlbnQgaG9sZXMgaW4gdGhlIGJ5dGVjb2RlIHN0cmVhbS4KKyAgICAgICAgICAgIFRoZXNlIGJ5
dGVjb2RlcyBjb3VsZCBiZSByZXBsYWNlZCAoU2ltaWxhciB0byB0aGUgTExWTSBwYXRjaHBvaW50
KS4KKworICAgICAgICAtIG9wX25ld19nZW5lcmF0b3JfZnJhbWUKKworICAgICAgICAgICAgQWxs
b2NhdGUgR2VuZXJhdG9yRnJhbWUgaW4gdGhlIGJ5dGVjb2RlIGluc3RlYWQgb2YgYWxsb2NhdGlu
ZyBpdCBpbiB0aGUgb3Bfc2F2ZS4KKworICAgICAgICAtIG9wX3NhdmVfaGludAorCisgICAgICAg
ICAgICBUaGlzIGlzIHByZXZpb3VzIG9wX3NhdmUuIFRoaXMgb3Bfc2F2ZV9oaW50IGlzIG9ubHkg
dXNlZCBmb3IgdGhlIGJ5dGVjb2RlIHVzZS1kZWYgYW5hbHlzaXMuIE9uY2UgdGhlIGFuYWx5c2lz
IGlzIGRvbmUgaW4gQ29kZUJsb2NrIGNyZWF0aW9uIHBoYXNlLAorICAgICAgICAgICAgd2Ugd2ls
bCBjb252ZXJ0IHRoaXMgYnl0ZWNvZGUgdG8gb3Bfc2F2ZS4KKyAgICAgICAgICAgIFdoaWxlIG9w
X3NhdmVfaGludCBoYXMgYSBwc2V1ZG8ganVtcCB0byB0aGUgZ2VuZXJhdG9yIGNvbnRpbnVhdGlv
biBtZXJnZSBwb2ludCwgb3Bfc2F2ZSBkb2VzIG5vdCBoYXZlIGl0LiBUaGlzIHBzZXVkbyBqdW1w
IGlzIG5lY2Vzc2FyeSBmb3IKKyAgICAgICAgICAgIHRoZSBieXRlY29kZSB1c2UtZGVmIGFuYWx5
c2lzLiBUaGlzIGJ5dGVjb2RlIHVzZS1kZWYgYW5hbHlzaXMgaXMgdXNlZCB0byBkaXNjb3ZlciBs
aXZlIHZhcmlhYmxlcyBpbiB0aGUgZ2VuZXJhdG9yIGNvbnRpbnVhdGlvbiBtZXJnZSBwb2ludC4K
KworICAgICAgICAgICAgVGhlIGdlbmVyYXRvciBjb250aW51YXRpb24gbWVyZ2UgcG9pbnQgaXMg
dGhlIHBvaW50IHRoYXQgbWVyZ2luZyB0aGUgMiBiYXNpYyBibG9ja3MsIHNhdmluZyBsb2NhbHMg
dG8gdGhlIGdlbmVyYXRvciBmcmFtZSBhbmQgcmVzbWluZyBsb2NhbHMgZnJvbQorICAgICAgICAg
ICAgdGhlIGdlbmVyYXRvciBmcmFtZS4KKworICAgICAgICAtIG9wX3NhdmUKKworICAgICAgICAg
ICAgU2ltaWxhciB0byB0aGUgcHJldmlvdXMgb3Bfc2F2ZS4gSXQgdXNlcyBsb2NhbHMgYW5kIHNh
dmVzIHRoZW0gdG8gdGhlIGdlbmVyYXRvciBmcmFtZS4gQXQgdGhhdCB0aW1lLCB3ZSB3aWxsIHNl
dCBHZW5lcmF0b3JGcmFtZTo6bV9udW1iZXJPZlNhdmVkQ2FsbGVlTG9jYWxzIGFzICpOKgorICAg
ICAgICAgICAgdG8gYWxsb2NhdGUgc3BhY2UgZm9yIHNhdmVkIGxvY2Fscy4KKworICAgICAgICAt
IG9wX3Jlc3VtZV9oaW50CisKKyAgICAgICAgICAgIFNpbWlsYXIgdG8gdGhlIG9wX3NhdmVfaGlu
dCwgdGhpcyBpcyBvbmx5IHVzZWQgZm9yIHRoZSBieXRlY29kZSB1c2UtZGVmIGFuYWx5c2lzLiBv
cF9yZXN1bWVfaGludCBsZWFkcyBzZXZlcmFsIG9wX25vcCBvcGVyYXRpb25zLgorICAgICAgICAg
ICAgQWZ0ZXIgdGhlIGFuYWx5c2lzLCB3ZSBleHBsb2l0IHRoZSBuZWVkZWQgZGVmcyBmb3IgdGhp
cyByZXN1bWUgcG9pbnQgYW5kIHJlcGxhY2UgdGhpcyBieXRlY29kZSBhbmQgb3Bfbm9wIHdpdGgg
b3BfcmVzdW1lX2Zyb21fZ2VuZXJhdG9yX2ZyYW1lIG9wZXJhdGlvbnMuCisgICAgICAgICAgICBU
aGlzIG1ha2VzIERGRyBTZXRMb2NhbCB0cmVhdG1lbnQgc2ltcGxlLiBXaGlsZSBvcF9yZXN1bWVf
aGludCBkZWZpbmVzIG11bHRpcGxlIGxvY2Fscywgb3BfcmVzdW1lX2Zyb21fZ2VuZXJhdG9yX2Zy
YW1lIG9ubHkgZGVmaW5lcyBvbmUgbG9jYWwgKGRzdCkuCisKKyAgICAgICAgLSBvcF9yZXN1bWVf
ZnJvbV9nZW5lcmF0b3JfZnJhbWUKKworICAgICAgICAgICAgVGhpcyByZXRyaWV2ZXMgbG9jYWwg
dmFyaWFibGUgZnJvbSB0aGUgZ2VuZXJhdG9yIGZyYW1lLiBvcF9yZXN1bWVfaGludCBhbmQgc3Vi
c2VxdWVudCBvcF9ub3Agd2lsbCBiZSByZXBsYWNlZCB3aXRoIHRoaXMuCisKKyAgICAgICAgLSBv
cF9jbGVhcl9nZW5lcmF0b3JfZnJhbWUKKworICAgICAgICAgICAgVGhpcyBjbGVhcnMgZ2VuZXJh
dG9yIGZyYW1lJ3MgbG9jYWxzIGJ5IHNldHRpbmcgR2VuZXJhdG9yRnJhbWU6Om1fbnVtYmVyT2ZT
YXZlZENhbGxlZUxvY2FscyBhcyAwLgorCisKKyAgICAgICAgQW5kIHdlIGludHJvZHVjZXMgc2V2
ZXJhbCBERkcgbm9kZXMuCisKKyAgICAgICAgLSBOZXdHZW5lcmF0b3JGcmFtZQorCisgICAgICAg
ICAgICBUaGlzIGp1c3QgYWxsb2NhdGVzIEdlbmVyYXRvckZyYW1lLgorCisgICAgICAgIC0gUHV0
R2VuZXJhdG9yRnJhbWVMb2NhbHMKKworICAgICAgICAgICAgVGhpcyBzZXQgR2VuZXJhdG9yRnJh
bWU6Om1fbnVtYmVyT2ZTYXZlZENhbGxlZUxvY2FscyAqTiouIFRoaXMgbm9kZSBpcyB1c2VkIHRv
ICgxKSBhbGxvY2F0ZSBzcGFjZSBmb3IgbG9jYWxzIGluIEdlbmVyYXRvckZyYW1lIGFuZCAoMikg
ZGVhbGxvY2F0ZSBzcGFjZSBpbgorICAgICAgICAgICAgR2VuZXJhdG9yRnJhbWUgYnkgc2V0dGlu
ZyBpdCBhcyAwLgorCisgICAgICAgIC0gR2V0R2VuZXJhdG9yTG9jYWwKKworICAgICAgICAgICAg
R2V0IGEgc2F2ZWQgbG9jYWwgdmFyaWFibGUgZnJvbSBhIGdlbmVyYXRvciBmcmFtZS4gR2V0R2Vu
ZXJhdG9yTG9jYWwgYW5kIFNldEdlbmVyYXRvckxvY2FsIGFyZSBsaW5rZWQgd2l0aCBHZW5lcmF0
b3JMb2NhbERhdGEuIFNvIHR5cGUgcHJlZGljYXRpb24gYW5kIGZsYWdzCisgICAgICAgICAgICBh
cmUgY29ycmVjdGx5IHByb3BhZ2F0ZWQgYmV5b25kIHRoZSBnZW5lcmF0b3IgZnJhbWUuCisKKyAg
ICAgICAgLSBTZXRHZW5lcmF0b3JMb2NhbAorCisgICAgICAgICAgICBTdG9yZSBhIGxvY2FsIHZh
cmlhYmxlIHRvIGEgZ2VuZXJhdG9yIGZyYW1lLgorCisgICAgICAgIEZ1dHVyZSBwbGFucyBhcmUg
dGhlIGZvbGxvd2luZ3MuCisKKyAgICAgICAgMS4gQ3JlYXRlIEpTR2VuZXJhdG9yIGFuZCBhbGxv
Y2F0ZSBpdCBpbiB0aGUgZ2VuZXJhdG9yIHdyYXBwZXIgZnVuY3Rpb24uIFRoaXMgc2hvdWxkIGJl
IGNvbXBpbGVkIGluIERGRyAvIEZUTCBhbmQKKyAgICAgICAgdGhpcyBvYmplY3Qgc2hvdWxkIGJl
IHRyYWNrZWQgKGJ5IGVzY2FwZSBhbmFseXNpcykgYW5kIGVsaW1pbmF0ZWQgaWYgcG9zc2libGUg
Ynkgb2JqZWN0IGFsbG9jYXRpb24gZWxpbWluYXRpb24uCisKKyAgICAgICAgMi4gQW5kIG9uY2Ug
d2UgZXhwbG9pdCB0aGF0IEdlbmVyYXRvckZyYW1lIGlzIG5vdCBlc2NhcGVkIGZyb20gdGhlIGdp
dmVuIEZUTC1lZCBmdW5jdGlvbiwgd2Ugd2lsbCBlbGltaW5hdGUgR2VuZXJhdG9yRnJhbWUgYWxs
b2NhdGlvbiBhbmQKKyAgICAgICAgY29udmVydCBHZW5lcmF0b3JMb2NhbCBvcGVyYXRpb25zIGlu
dG8gZ2V0L3NldCBsb2NhbCBvcGVyYXRpb25zLgorCisgICAgICAgICogYnVpbHRpbnMvR2VuZXJh
dG9yUHJvdG90eXBlLmpzOgorICAgICAgICAoZ2VuZXJhdG9yUmVzdW1lKToKKyAgICAgICAgKiBi
eXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suY3BwOgorICAgICAgICAoSlNDOjppc0JyYW5jaCk6
CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb246CisgICAgICAgICogYnl0ZWNv
ZGUvQnl0ZWNvZGVVc2VEZWYuaDoKKyAgICAgICAgKEpTQzo6Y29tcHV0ZVVzZXNGb3JCeXRlY29k
ZU9mZnNldCk6CisgICAgICAgIChKU0M6OmNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQpOgor
ICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9j
azo6ZHVtcEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpmaW5pc2hDcmVhdGlv
bik6CisgICAgICAgICogYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmNwcDoKKyAgICAgICAg
KEpTQzo6Z2V0SnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgICogYnl0ZWNv
bXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5l
cmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXROZXdHZW5lcmF0b3JGcmFtZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0U2F2ZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVz
dW1lKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRvckZyYW1lUmVnaXN0ZXIpOgorICAg
ICAgICAqIGRmZy9ERkdBYnN0cmFjdEhlYXAuaDoKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJ
bnRlcnByZXRlcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJl
dGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAgICAgICAqIGRmZy9E
RkdCYWNrd2FyZHNQcm9wYWdhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCYWNr
d2FyZHNQcm9wYWdhdGlvblBoYXNlOjpwcm9wYWdhdGUpOgorICAgICAgICAqIGRmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6Om5ld0dl
bmVyYXRvckxvY2FsRGF0YSk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBh
cnNlQmxvY2spOgorICAgICAgICAqIGRmZy9ERkdDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OmNhcGFiaWxpdHlMZXZlbCk6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJpemUu
aDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAgICAgICAgKiBkZmcvREZHQ2xv
YmJlcnNFeGl0U3RhdGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmNsb2JiZXJzRXhpdFN0YXRl
KToKKyAgICAgICAgKiBkZmcvREZHRG9lc0dDLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpkb2Vz
R0MpOgorICAgICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpGaXh1cFBoYXNlOjpmaXh1cE5vZGUpOgorICAgICAgICAqIGRmZy9ERkdHZW5lcmF0b3JMb2Nh
bERhdGEuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkRGRzo6R2VuZXJhdG9yTG9jYWxEYXRhOjpw
cmVkaWN0KToKKyAgICAgICAgKEpTQzo6REZHOjpHZW5lcmF0b3JMb2NhbERhdGE6OnByZWRpY3Rp
b24pOgorICAgICAgICAoSlNDOjpERkc6OkdlbmVyYXRvckxvY2FsRGF0YTo6ZmxhZ3MpOgorICAg
ICAgICAoSlNDOjpERkc6OkdlbmVyYXRvckxvY2FsRGF0YTo6bWVyZ2VGbGFncyk6CisgICAgICAg
ICogZGZnL0RGR0dyYXBoLmg6CisgICAgICAgICogZGZnL0RGR01heUV4aXQuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6Om1heUV4aXQpOgorICAgICAgICAqIGRmZy9ERkdOb2RlLmg6CisgICAgICAg
IChKU0M6OkRGRzo6Tm9kZTo6aGFzR2VuZXJhdG9yTG9jYWxzU2l6ZSk6CisgICAgICAgIChKU0M6
OkRGRzo6Tm9kZTo6Z2VuZXJhdG9yTG9jYWxzU2l6ZSk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9k
ZTo6aGFzR2VuZXJhdG9yRnJhbWVJbmRleCk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6Z2Vu
ZXJhdG9yRnJhbWVJbmRleCk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzR2VuZXJhdG9y
TG9jYWxEYXRhKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpnZW5lcmF0b3JMb2NhbERhdGEp
OgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc0dlbmVyYXRvckZyYW1lTG9jYWxzKToKKyAg
ICAgICAgKEpTQzo6REZHOjpOb2RlOjpnZW5lcmF0b3JGcmFtZUxvY2Fscyk6CisgICAgICAgICog
ZGZnL0RGR05vZGVUeXBlLmg6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuY3BwOgorICAg
ICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmg6CisgICAgICAgICogZGZnL0RGR1ByZWRpY3Rpb25Q
cm9wYWdhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpQcmVkaWN0aW9uUHJvcGFn
YXRpb25QaGFzZTo6cHJvcGFnYXRlKToKKyAgICAgICAgKiBkZmcvREZHU2FmZVRvRXhlY3V0ZS5o
OgorICAgICAgICAoSlNDOjpERkc6OnNhZmVUb0V4ZWN1dGUpOgorICAgICAgICAqIGRmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVOZXdHZW5lcmF0b3JGcmFtZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklU
Lmg6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3Bl
Y3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHA6
CisgICAgICAgICogZGZnL0RGR1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlLmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpTdHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFzZTo6cnVuKToKKyAgICAgICAg
KiBmdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHA6CisgICAgICAgICogZnRsL0ZUTEFi
c3RyYWN0SGVhcFJlcG9zaXRvcnkuaDoKKyAgICAgICAgKiBmdGwvRlRMQ2FwYWJpbGl0aWVzLmNw
cDoKKyAgICAgICAgKEpTQzo6RlRMOjpjYW5Db21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMTG93
ZXJERkdUb0xMVk0uY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0xMVk06
OmNvbXBpbGVOb2RlKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9MTFZNOjpj
b21waWxlUHV0R2VuZXJhdG9yRnJhbWVMb2NhbHMpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6
TG93ZXJERkdUb0xMVk06OmNvbXBpbGVTZXRHZW5lcmF0b3JMb2NhbCk6CisgICAgICAgIChKU0M6
OkZUTDo6REZHOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZUdldEdlbmVyYXRvckxvY2FsKToKKyAg
ICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlTmV3R2VuZXJhdG9y
RnJhbWUpOgorICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZh
dGVDb21waWxlTWFpblBhc3MpOgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQv
SklUT3Bjb2Rlcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9yZXN1bWVfZnJvbV9n
ZW5lcmF0b3JfZnJhbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfY2xlYXJfZ2VuZXJh
dG9yX2ZyYW1lKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX25ld19nZW5lcmF0b3JfZnJh
bWUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bfbm9wKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX3Jlc3VtZSk6IERlbGV0ZWQuCisgICAgICAgICogbGxpbnQvTExJbnRPZmZzZXRz
RXh0cmFjdG9yLmNwcDoKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbToK
KyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtOgorICAgICAgICAqIHBh
cnNlci9QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJ
bm5lcik6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUdlbmVyYXRvckZ1
bmN0aW9uU291cmNlRWxlbWVudHMpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6
Y3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyk6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5oOgor
ICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6U0xP
V19QQVRIX0RFQ0wpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmg6CisgICAg
ICAgICogcnVudGltZS9HZW5lcmF0b3JGcmFtZS5jcHA6CisgICAgICAgIChKU0M6OkdlbmVyYXRv
ckZyYW1lOjpHZW5lcmF0b3JGcmFtZSk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpm
aW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpjcmVhdGVTdHJ1
Y3R1cmUpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlKToKKyAgICAgICAg
KEpTQzo6R2VuZXJhdG9yRnJhbWU6OnNhdmUpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFt
ZTo6cmVzdW1lKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OnZpc2l0Q2hpbGRyZW4p
OgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJhdG9yRnJhbWUuaDoKKyAgICAgICAgKEpTQzo6R2Vu
ZXJhdG9yRnJhbWU6OmxvY2FsT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6
Om51bWJlck9mQ2FsbGVlTG9jYWxzT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJh
bWU6Om51bWJlck9mU2F2ZWRDYWxsZWVMb2NhbHNPZmZzZXQpOgorICAgICAgICAoSlNDOjpHZW5l
cmF0b3JGcmFtZTo6bG9jYWxBdCk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojppbml0KToKKyAgICAg
ICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2Jq
ZWN0OjpnZW5lcmF0b3JGcmFtZVN0cnVjdHVyZSk6CisgICAgICAgICogcnVudGltZS9WTS5jcHA6
CisgICAgICAgIChKU0M6OlZNOjpWTSk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9WTS5o
OgorCiAyMDE2LTAxLTEzICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNv
bT4KIAogICAgICAgICBbQ01ha2VdIERvIG5vdCB1c2UgTExWTSBzdGF0aWMgbGlicmFyaWVzIGZv
ciBGVEwgSklUCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvR2Vu
ZXJhdG9yUHJvdG90eXBlLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0dlbmVy
YXRvclByb3RvdHlwZS5qcwppbmRleCBhM2JiYzM1MzRhZTA1MmY0ZDZmYTI1YmRlNzAzYzkzZDNh
Nzk1ZTExLi40OWRkYmY5Yzg0NjkzMzA2NTg3MTFmMThlNzIxNDliYzk4MjJkYTM0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvR2VuZXJhdG9yUHJvdG90eXBlLmpz
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9HZW5lcmF0b3JQcm90b3R5cGUu
anMKQEAgLTU4LDcgKzU4LDcgQEAgZnVuY3Rpb24gZ2VuZXJhdG9yUmVzdW1lKGdlbmVyYXRvciwg
c2VudFZhbHVlLCByZXN1bWVNb2RlKQogICAgIH0gZWxzZSB7CiAgICAgICAgIHRyeSB7CiAgICAg
ICAgICAgICBnZW5lcmF0b3IuQGdlbmVyYXRvclN0YXRlID0gRXhlY3V0aW5nOwotICAgICAgICAg
ICAgdmFsdWUgPSBnZW5lcmF0b3IuQGdlbmVyYXRvck5leHQuQGNhbGwoZ2VuZXJhdG9yLkBnZW5l
cmF0b3JUaGlzLCBnZW5lcmF0b3IsIHN0YXRlLCBzZW50VmFsdWUsIHJlc3VtZU1vZGUpOworICAg
ICAgICAgICAgdmFsdWUgPSBnZW5lcmF0b3IuQGdlbmVyYXRvck5leHQuQGNhbGwoZ2VuZXJhdG9y
LkBnZW5lcmF0b3JUaGlzLCBnZW5lcmF0b3IsIHN0YXRlLCBzZW50VmFsdWUsIHJlc3VtZU1vZGUs
IGdlbmVyYXRvci5AZ2VuZXJhdG9yRnJhbWUpOwogICAgICAgICAgICAgaWYgKGdlbmVyYXRvci5A
Z2VuZXJhdG9yU3RhdGUgPT09IEV4ZWN1dGluZykgewogICAgICAgICAgICAgICAgIGdlbmVyYXRv
ci5AZ2VuZXJhdG9yU3RhdGUgPSBDb21wbGV0ZWQ7CiAgICAgICAgICAgICAgICAgZG9uZSA9IHRy
dWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVC
YXNpY0Jsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJh
c2ljQmxvY2suY3BwCmluZGV4IDdmMTdjMGVmMTBiNDMzZmFjOGY1OGNiM2I5Y2E1ZDRkMDE1YmJh
MDguLjVhYTE4ZTRjYWY3YTU3NWRkNjQ1ZDZmNmVkNzk3MjhhZjczYmQyNmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suY3Bw
CkBAIC01OCw3ICs1OCw3IEBAIHN0YXRpYyBib29sIGlzQnJhbmNoKE9wY29kZUlEIG9wY29kZUlE
KQogICAgIGNhc2Ugb3Bfc3dpdGNoX2ltbToKICAgICBjYXNlIG9wX3N3aXRjaF9jaGFyOgogICAg
IGNhc2Ugb3Bfc3dpdGNoX3N0cmluZzoKLSAgICBjYXNlIG9wX3NhdmU6CisgICAgY2FzZSBvcF9z
YXZlX2hpbnQ6CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZUxpc3QuanNvbiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZUxpc3QuanNvbgppbmRleCAwNTNiOGRjOWI4NjRmMWI4NmI0Y2VjN2FhNjAxZjdjZTJmMDNmMmU0
Li4wOGFhYzEyMjU5YzY4ZGEwZTFhYmM5MDkwYmU1NGM5NTVmYjMzMDA1IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24KKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCkBAIC0xNiw2ICsx
Niw3IEBACiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXdfYXJyYXlfd2l0aF9zaXplIiwg
Imxlbmd0aCIgOiA0IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXdfYXJyYXlfYnVm
ZmVyIiwgImxlbmd0aCIgOiA1IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXdfcmVn
ZXhwIiwgImxlbmd0aCIgOiAzIH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXdfZ2Vu
ZXJhdG9yX2ZyYW1lIiwgImxlbmd0aCIgOiAzIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJv
cF9tb3YiLCAibGVuZ3RoIiA6IDMgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX25vdCIs
ICJsZW5ndGgiIDogMyB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfZXEiLCAibGVuZ3Ro
IiA6IDQgfSwKQEAgLTEzNCw3ICsxMzUsMTEgQEAKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9w
X2NvcHlfcmVzdCIsICJsZW5ndGgiOiA0IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9n
ZXRfcmVzdF9sZW5ndGgiLCAibGVuZ3RoIjogMyB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAi
b3Bfc2F2ZSIsICJsZW5ndGgiIDogNCB9LAotICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfcmVz
dW1lIiwgImxlbmd0aCIgOiAzIH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9zYXZlX2hp
bnQiLCAibGVuZ3RoIiA6IDQgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX3Jlc3VtZV9o
aW50IiwgImxlbmd0aCIgOiA0IH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9yZXN1bWVf
ZnJvbV9nZW5lcmF0b3JfZnJhbWUiLCAibGVuZ3RoIiA6IDQgfSwKKyAgICAgICAgICAgIHsgIm5h
bWUiIDogIm9wX2NsZWFyX2dlbmVyYXRvcl9mcmFtZSIsICJsZW5ndGgiIDogMiB9LAorICAgICAg
ICAgICAgeyAibmFtZSIgOiAib3Bfbm9wIiwgImxlbmd0aCIgOiAxIH0sCiAgICAgICAgICAgICB7
ICJuYW1lIiA6ICJvcF93YXRjaGRvZyIsICJsZW5ndGgiIDogMSB9CiAgICAgICAgIF0KICAgICB9
LApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNl
RGVmLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaApp
bmRleCA4MDExMTRjMzcyYTI3N2Y2ZTE3NzA5YjkwYmUyMDdjOGY5OWJlODJkLi5kYWVmODFjMjY5
YmI1NDE1NGVhNmI2ZGM4MzhhZmM2OWNlZTcyYzk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaApAQCAtNTUsNiArNTUsOCBAQCB2b2lkIGNv
bXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoCiAgICAgY2FzZSBvcF9jcmVhdGVfb3V0X29mX2Jh
bmRfYXJndW1lbnRzOgogICAgIGNhc2Ugb3BfZ2V0X3Jlc3RfbGVuZ3RoOgogICAgIGNhc2Ugb3Bf
d2F0Y2hkb2c6CisgICAgY2FzZSBvcF9uZXdfZ2VuZXJhdG9yX2ZyYW1lOgorICAgIGNhc2Ugb3Bf
bm9wOgogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBvcF9hc3NlcnQ6CiAgICAgY2FzZSBvcF9n
ZXRfc2NvcGU6CkBAIC03Miw3ICs3NCw4IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9m
ZnNldCgKICAgICBjYXNlIG9wX2puZXFfbnVsbDoKICAgICBjYXNlIG9wX2RlYzoKICAgICBjYXNl
IG9wX2luYzoKLSAgICBjYXNlIG9wX3Jlc3VtZTogeworICAgIGNhc2Ugb3BfcmVzdW1lX2hpbnQ6
CisgICAgY2FzZSBvcF9jbGVhcl9nZW5lcmF0b3JfZnJhbWU6IHsKICAgICAgICAgQVNTRVJUKG9w
Y29kZUxlbmd0aHNbb3Bjb2RlSURdID49IDEpOwogICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywg
aW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBpbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOwogICAgICAg
ICByZXR1cm47CkBAIC0xNjUsNyArMTY4LDggQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2Rl
T2Zmc2V0KAogICAgIGNhc2Ugb3BfbmV3X2dlbmVyYXRvcl9mdW5jOgogICAgIGNhc2Ugb3BfZ2V0
X3BhcmVudF9zY29wZToKICAgICBjYXNlIG9wX2NyZWF0ZV9zY29wZWRfYXJndW1lbnRzOgotICAg
IGNhc2Ugb3BfZ2V0X2Zyb21fYXJndW1lbnRzOiB7CisgICAgY2FzZSBvcF9nZXRfZnJvbV9hcmd1
bWVudHM6CisgICAgY2FzZSBvcF9yZXN1bWVfZnJvbV9nZW5lcmF0b3JfZnJhbWU6IHsKICAgICAg
ICAgQVNTRVJUKG9wY29kZUxlbmd0aHNbb3Bjb2RlSURdID49IDIpOwogICAgICAgICBmdW5jdG9y
KGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBpbnN0cnVjdGlvblsyXS51Lm9wZXJh
bmQpOwogICAgICAgICByZXR1cm47CkBAIC0yNTAsNyArMjU0LDcgQEAgdm9pZCBjb21wdXRlVXNl
c0ZvckJ5dGVjb2RlT2Zmc2V0KAogICAgICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3Ry
dWN0aW9uLCBvcGNvZGVJRCwgbGFzdEFyZyArIGkpOwogICAgICAgICByZXR1cm47CiAgICAgfQot
ICAgIGNhc2Ugb3Bfc2F2ZTogeworICAgIGNhc2Ugb3Bfc2F2ZV9oaW50OiB7CiAgICAgICAgIGZ1
bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzFdLnUu
b3BlcmFuZCk7CiAgICAgICAgIHVuc2lnbmVkIG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldCA9IGJ5
dGVjb2RlT2Zmc2V0ICsgaW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kOwogICAgICAgICBCeXRlY29k
ZUJhc2ljQmxvY2sqIG1lcmdlUG9pbnRCbG9jayA9IG51bGxwdHI7CkBAIC0yNjYsNiArMjcwLDE1
IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCgKICAgICAgICAgfSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CisgICAgY2FzZSBvcF9zYXZlOiB7CisgICAgICAgIGZ1bmN0b3Io
Y29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzFdLnUub3BlcmFu
ZCk7CisgICAgICAgIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9IGluc3RydWN0aW9u
WzJdLnUudW5zaWduZWRWYWx1ZTsKKyAgICAgICAgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZW5l
c3MgPSBjb2RlQmxvY2stPmxpdmVDYWxsZWVMb2NhbHNBdFlpZWxkKGxpdmVDYWxsZWVMb2NhbHNJ
bmRleCk7CisgICAgICAgIGxpdmVuZXNzLmZvckVhY2hTZXRCaXQoWyZdKHVuc2lnbmVkIGxvY2Fs
KSB7CisgICAgICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlE
LCB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChsb2NhbCkub2Zmc2V0KCkpOworICAgICAgICB9KTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KICAgICBkZWZhdWx0OgogICAgICAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBicmVhazsKQEAgLTI4OSw2ICszMDIsNyBAQCB2
b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5
dGVjb2RlQmFzaWNCbG9jayogYmxvYwogICAgIGNhc2Ugb3BfdGhyb3c6CiAgICAgY2FzZSBvcF90
aHJvd19zdGF0aWNfZXJyb3I6CiAgICAgY2FzZSBvcF9zYXZlOgorICAgIGNhc2Ugb3Bfc2F2ZV9o
aW50OgogICAgIGNhc2Ugb3BfYXNzZXJ0OgogICAgIGNhc2Ugb3BfZGVidWc6CiAgICAgY2FzZSBv
cF9yZXQ6CkBAIC0zMjMsNiArMzM3LDggQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zm
c2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2MKICAgICBj
YXNlIG9wX3Byb2ZpbGVfY29udHJvbF9mbG93OgogICAgIGNhc2Ugb3BfcHV0X3RvX2FyZ3VtZW50
czoKICAgICBjYXNlIG9wX3dhdGNoZG9nOgorICAgIGNhc2Ugb3BfY2xlYXJfZ2VuZXJhdG9yX2Zy
YW1lOgorICAgIGNhc2Ugb3Bfbm9wOgogI2RlZmluZSBMTElOVF9IRUxQRVJfT1BDT0RFUyhvcGNv
ZGUsIGxlbmd0aCkgY2FzZSBvcGNvZGU6CiAgICAgICAgIEZPUl9FQUNIX0xMSU5UX09QQ09ERV9F
WFRFTlNJT04oTExJTlRfSEVMUEVSX09QQ09ERVMpOwogI3VuZGVmIExMSU5UX0hFTFBFUl9PUENP
REVTCkBAIC00MTUsNyArNDMxLDkgQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0
KENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2MKICAgICBjYXNl
IG9wX2RlbF9ieV92YWw6CiAgICAgY2FzZSBvcF91bnNpZ25lZDoKICAgICBjYXNlIG9wX2dldF9m
cm9tX2FyZ3VtZW50czogCi0gICAgY2FzZSBvcF9nZXRfcmVzdF9sZW5ndGg6IHsKKyAgICBjYXNl
IG9wX2dldF9yZXN0X2xlbmd0aDoKKyAgICBjYXNlIG9wX25ld19nZW5lcmF0b3JfZnJhbWU6Cisg
ICAgY2FzZSBvcF9yZXN1bWVfZnJvbV9nZW5lcmF0b3JfZnJhbWU6IHsKICAgICAgICAgQVNTRVJU
KG9wY29kZUxlbmd0aHNbb3Bjb2RlSURdID4gMSk7CiAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2Nr
LCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CiAgICAg
ICAgIHJldHVybjsKQEAgLTQzMSw3ICs0NDksNyBAQCB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNv
ZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvYwog
ICAgICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgdmly
dHVhbFJlZ2lzdGVyRm9yTG9jYWwoaSkub2Zmc2V0KCkpOwogICAgICAgICByZXR1cm47CiAgICAg
fQotICAgIGNhc2Ugb3BfcmVzdW1lOiB7CisgICAgY2FzZSBvcF9yZXN1bWVfaGludDogewogICAg
ICAgICBSRUxFQVNFX0FTU0VSVChibG9jay0+c3VjY2Vzc29ycygpLnNpemUoKSA9PSAxKTsKICAg
ICAgICAgYmxvY2stPnN1Y2Nlc3NvcnMoKVswXS0+aW4oKS5mb3JFYWNoU2V0Qml0KFsmXSh1bnNp
Z25lZCBsb2NhbCkgewogICAgICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9u
LCBvcGNvZGVJRCwgdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwobG9jYWwpLm9mZnNldCgpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKaW5kZXggNTkwNWU5
MTgzYzhmMTI2NjRlMmJhM2RkMjlhNWM0NjU2NzY4ZGMwMy4uMWEwN2UyN2ZmYjBiNWU4OGQxYTRj
NGEyOWI4YTQ3YzY1ODE0MDFjNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVCbG9jay5jcHAKQEAgLTE1NTYsMjcgKzE1NTYsNjMgQEAgdm9pZCBDb2RlQmxvY2s6OmR1
bXBCeXRlY29kZSgKICAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAlZCIsIGRlYnVnSG9va05h
bWUoZGVidWdIb29rSUQpLCBoYXNCcmVha3BvaW50RmxhZyk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQotICAgICAgICBjYXNlIG9wX3NhdmU6IHsKLSAgICAgICAgICAgIGludCBnZW5l
cmF0b3IgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgY2FzZSBvcF9zYXZlX2hpbnQ6IHsK
KyAgICAgICAgICAgIGludCBmcmFtZSA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAg
dW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gKCsraXQpLT51LnVuc2lnbmVkVmFsdWU7
CiAgICAgICAgICAgICBpbnQgb2Zmc2V0ID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAg
ICBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlbmVzcyA9IG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxl
ZUxvY2Fsc0F0WWllbGRbbGl2ZUNhbGxlZUxvY2Fsc0luZGV4XTsKICAgICAgICAgICAgIHByaW50
TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgInNhdmUiKTsKLSAgICAgICAg
ICAgIG91dC5wcmludGYoIiVzLCAiLCByZWdpc3Rlck5hbWUoZ2VuZXJhdG9yKS5kYXRhKCkpOwor
ICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICIsIHJlZ2lzdGVyTmFtZShmcmFtZSkuZGF0YSgp
KTsKICAgICAgICAgICAgIGxpdmVuZXNzLmR1bXAob3V0KTsKICAgICAgICAgICAgIG91dC5wcmlu
dGYoIihAbGl2ZSUxdSksICVkKC0+JWQpIiwgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4LCBvZmZzZXQs
IGxvY2F0aW9uICsgb2Zmc2V0KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAg
ICAgIGNhc2Ugb3BfcmVzdW1lOiB7Ci0gICAgICAgICAgICBpbnQgZ2VuZXJhdG9yID0gKCsraXQp
LT51Lm9wZXJhbmQ7CisgICAgICAgIGNhc2Ugb3Bfc2F2ZTogeworICAgICAgICAgICAgaW50IGZy
YW1lID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICB1bnNpZ25lZCBsaXZlQ2FsbGVl
TG9jYWxzSW5kZXggPSAoKytpdCktPnUudW5zaWduZWRWYWx1ZTsKKyAgICAgICAgICAgICsraXQ7
IC8vIGRpc2NhcmQgb2Zmc2V0LgogICAgICAgICAgICAgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2
ZW5lc3MgPSBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkW2xpdmVDYWxsZWVM
b2NhbHNJbmRleF07Ci0gICAgICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBleGVjLCBs
b2NhdGlvbiwgaXQsICJyZXN1bWUiKTsKLSAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAiLCBy
ZWdpc3Rlck5hbWUoZ2VuZXJhdG9yKS5kYXRhKCkpOworICAgICAgICAgICAgcHJpbnRMb2NhdGlv
bkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAic2F2ZSIpOworICAgICAgICAgICAgb3V0
LnByaW50ZigiJXMsICIsIHJlZ2lzdGVyTmFtZShmcmFtZSkuZGF0YSgpKTsKICAgICAgICAgICAg
IGxpdmVuZXNzLmR1bXAob3V0KTsKICAgICAgICAgICAgIG91dC5wcmludGYoIihAbGl2ZSUxdSki
LCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
KyAgICAgICAgY2FzZSBvcF9yZXN1bWVfaGludDogeworICAgICAgICAgICAgaW50IGZyYW1lID0g
KCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxz
SW5kZXggPSAoKytpdCktPnUudW5zaWduZWRWYWx1ZTsKKyAgICAgICAgICAgIHVuc2lnbmVkIG1h
eExpdmVDYWxsZWVzID0gKCsraXQpLT51LnVuc2lnbmVkVmFsdWU7CisgICAgICAgICAgICBjb25z
dCBGYXN0Qml0VmVjdG9yJiBsaXZlbmVzcyA9IG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fs
c0F0WWllbGRbbGl2ZUNhbGxlZUxvY2Fsc0luZGV4XTsKKyAgICAgICAgICAgIHByaW50TG9jYXRp
b25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgInJlc3VtZSIpOworICAgICAgICAgICAg
b3V0LnByaW50ZigiJXMsICIsIHJlZ2lzdGVyTmFtZShmcmFtZSkuZGF0YSgpKTsKKyAgICAgICAg
ICAgIGxpdmVuZXNzLmR1bXAob3V0KTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIihAbGl2ZSUx
dSksICV1IiwgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4LCBtYXhMaXZlQ2FsbGVlcyk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIG9wX3Jlc3VtZV9mcm9tX2dlbmVy
YXRvcl9mcmFtZTogeworICAgICAgICAgICAgaW50IGRzdCA9ICgrK2l0KS0+dS5vcGVyYW5kOwor
ICAgICAgICAgICAgaW50IGZyYW1lID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICB1
bnNpZ25lZCBpbmRleCA9ICgrK2l0KS0+dS51bnNpZ25lZFZhbHVlOworICAgICAgICAgICAgcHJp
bnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAicmVzdW1lX2Zyb21fZ2Vu
ZXJhdG9yX2ZyYW1lIik7CisgICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMsICV1IiwgcmVn
aXN0ZXJOYW1lKGRzdCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZnJhbWUpLmRhdGEoKSwgaW5kZXgp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9jbGVhcl9n
ZW5lcmF0b3JfZnJhbWU6IHsKKyAgICAgICAgICAgIGludCBmcmFtZSA9ICgrK2l0KS0+dS5vcGVy
YW5kOworICAgICAgICAgICAgcHJpbnRMb2NhdGlvbk9wQW5kUmVnaXN0ZXJPcGVyYW5kKG91dCwg
ZXhlYywgbG9jYXRpb24sIGl0LCAiY2xlYXJfZ2VuZXJhdG9yX2ZyYW1lIiwgZnJhbWUpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9uZXdfZ2VuZXJhdG9y
X2ZyYW1lOiB7CisgICAgICAgICAgICBpbnQgZHN0ID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAg
ICAgICAgICB1bnNpZ25lZCBnZW5lcmF0b3JMb2NhbHNTaXplID0gKCsraXQpLT51LnVuc2lnbmVk
VmFsdWU7CisgICAgICAgICAgICBwcmludExvY2F0aW9uT3BBbmRSZWdpc3Rlck9wZXJhbmQob3V0
LCBleGVjLCBsb2NhdGlvbiwgaXQsICJuZXdfZ2VuZXJhdG9yX2ZyYW1lIiwgZHN0KTsKKyAgICAg
ICAgICAgIG91dC5wcmludGYoIiAldSIsIGdlbmVyYXRvckxvY2Fsc1NpemUpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9ub3A6IHsKKyAgICAgICAgICAg
IHByaW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgIm5vcCIpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9hc3NlcnQ6IHsKICAg
ICAgICAgICAgIGludCBjb25kaXRpb24gPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAg
IGludCBsaW5lID0gKCsraXQpLT51Lm9wZXJhbmQ7CkBAIC0xODQ3LDYgKzE4ODMsMTIgQEAgdm9p
ZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgQ29weVBhcnNlZEJsb2NrVGFnLCBD
b2RlQmxvY2smIG90aGVyKQogICAgIHNldE51bVBhcmFtZXRlcnModW5saW5rZWRDb2RlQmxvY2st
Pm51bVBhcmFtZXRlcnMoKSk7CiB9CiAKK3N0cnVjdCBHZW5lcmF0b3JQb2ludHMgeworICAgIHNp
emVfdCBzYXZlUG9pbnQ7CisgICAgc2l6ZV90IG1lcmdlUG9pbnQ7CisgICAgc2l6ZV90IHJlc3Vt
ZVBvaW50OworfTsKKwogdm9pZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2Ny
aXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmtlZENvZGVCbG9jayogdW5saW5r
ZWRDb2RlQmxvY2ssCiAgICAgSlNTY29wZSogc2NvcGUpCiB7CkBAIC0xOTgwLDkgKzIwMjIsMTAg
QEAgdm9pZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJs
ZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICBIYXNoU2V0PEpTTW9kdWxlRW52aXJvbm1l
bnQqPiBzdHJvbmdseVJlZmVyZW5jZWRNb2R1bGVFbnZpcm9ubWVudHM7CiAKICAgICAvLyBCb29r
a2VlcCB0aGUgbWVyZ2UgcG9pbnQgYnl0ZWNvZGUgb2Zmc2V0cy4KLSAgICBWZWN0b3I8c2l6ZV90
PiBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXRzOworICAgIFZlY3RvcjxHZW5lcmF0b3JQb2ludHM+
IG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldHM7CiAKICAgICBSZWZDb3VudGVkQXJyYXk8SW5zdHJ1
Y3Rpb24+IGluc3RydWN0aW9ucyhpbnN0cnVjdGlvbkNvdW50KTsKKyAgICB1bnNpZ25lZCBuZXdH
ZW5lcmF0b3JGcmFtZUluc3RydWN0aW9uT2Zmc2V0ID0gMDsKIAogICAgIGZvciAodW5zaWduZWQg
aSA9IDA7ICFpbnN0cnVjdGlvblJlYWRlci5hdEVuZCgpOyApIHsKICAgICAgICAgY29uc3QgVW5s
aW5rZWRJbnN0cnVjdGlvbiogcGMgPSBpbnN0cnVjdGlvblJlYWRlci5uZXh0KCk7CkBAIC0yMjcw
LDEyICsyMzEzLDI2IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNj
cmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQogCi0gICAgICAgIGNhc2Ugb3Bfc2F2ZTogeworICAgICAgICBjYXNlIG9w
X3NhdmVfaGludDogewogICAgICAgICAgICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4
ID0gcGNbMl0udS5pbmRleDsKICAgICAgICAgICAgIGludCBvZmZzZXQgPSBwY1szXS51Lm9wZXJh
bmQ7CiAgICAgICAgICAgICBpZiAobGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID49IG1lcmdlUG9pbnRC
eXRlY29kZU9mZnNldHMuc2l6ZSgpKQogICAgICAgICAgICAgICAgIG1lcmdlUG9pbnRCeXRlY29k
ZU9mZnNldHMucmVzaXplKGxpdmVDYWxsZWVMb2NhbHNJbmRleCArIDEpOwotICAgICAgICAgICAg
bWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0c1tsaXZlQ2FsbGVlTG9jYWxzSW5kZXhdID0gaSArIG9m
ZnNldDsKKyAgICAgICAgICAgIG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldHNbbGl2ZUNhbGxlZUxv
Y2Fsc0luZGV4XS5zYXZlUG9pbnQgPSBpOworICAgICAgICAgICAgbWVyZ2VQb2ludEJ5dGVjb2Rl
T2Zmc2V0c1tsaXZlQ2FsbGVlTG9jYWxzSW5kZXhdLm1lcmdlUG9pbnQgPSBpICsgb2Zmc2V0Owor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBjYXNlIG9wX3Jlc3VtZV9o
aW50OiB7CisgICAgICAgICAgICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSBwY1sy
XS51LmluZGV4OworICAgICAgICAgICAgaWYgKGxpdmVDYWxsZWVMb2NhbHNJbmRleCA+PSBtZXJn
ZVBvaW50Qnl0ZWNvZGVPZmZzZXRzLnNpemUoKSkKKyAgICAgICAgICAgICAgICBtZXJnZVBvaW50
Qnl0ZWNvZGVPZmZzZXRzLnJlc2l6ZShsaXZlQ2FsbGVlTG9jYWxzSW5kZXggKyAxKTsKKyAgICAg
ICAgICAgIG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldHNbbGl2ZUNhbGxlZUxvY2Fsc0luZGV4XS5y
ZXN1bWVQb2ludCA9IGk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAg
IGNhc2Ugb3BfbmV3X2dlbmVyYXRvcl9mcmFtZTogeworICAgICAgICAgICAgbmV3R2VuZXJhdG9y
RnJhbWVJbnN0cnVjdGlvbk9mZnNldCA9IGk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQogCkBAIC0yMjkwLDE4ICsyMzQ3LDU3IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlv
bihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAKICAg
ICBtX2luc3RydWN0aW9ucyA9IFdURk1vdmUoaW5zdHJ1Y3Rpb25zKTsKIAotICAgIC8vIFBlcmZv
cm0gYnl0ZWNvZGUgbGl2ZW5lc3MgYW5hbHlzaXMgdG8gZGV0ZXJtaW5lIHdoaWNoIGxvY2FscyBh
cmUgbGl2ZSBhbmQgc2hvdWxkIGJlIHJlc3VtZWQgd2hlbiBleGVjdXRpbmcgb3BfcmVzdW1lLgor
ICAgIC8vIFBlcmZvcm0gYnl0ZWNvZGUgbGl2ZW5lc3MgYW5hbHlzaXMgdG8gZGV0ZXJtaW5lIHdo
aWNoIGxvY2FscyBhcmUgbGl2ZSBhbmQgc2hvdWxkIGJlIHJlc3VtZWQgd2hlbiBleGVjdXRpbmcg
b3BfcmVzdW1lX2hpbnQuCiAgICAgaWYgKHVubGlua2VkQ29kZUJsb2NrLT5wYXJzZU1vZGUoKSA9
PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckJvZHlNb2RlKSB7CisgICAgICAgIHVuc2lnbmVk
IG1heEdlbmVyYXRvckxvY2Fsc1NpemUgPSAwOwogICAgICAgICBpZiAoc2l6ZV90IGNvdW50ID0g
bWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0cy5zaXplKCkpIHsKICAgICAgICAgICAgIGNyZWF0ZVJh
cmVEYXRhSWZOZWNlc3NhcnkoKTsKICAgICAgICAgICAgIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNp
cyBsaXZlbmVzcyh0aGlzKTsKICAgICAgICAgICAgIG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxv
Y2Fsc0F0WWllbGQuZ3Jvdyhjb3VudCk7CisKICAgICAgICAgICAgIHNpemVfdCBsaXZlQ2FsbGVl
TG9jYWxzSW5kZXggPSAwOwotICAgICAgICAgICAgZm9yIChzaXplX3QgYnl0ZWNvZGVPZmZzZXQg
OiBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXRzKSB7Ci0gICAgICAgICAgICAgICAgbV9yYXJlRGF0
YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZFtsaXZlQ2FsbGVlTG9jYWxzSW5kZXhdID0gbGl2
ZW5lc3MuZ2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCk7CisK
KyAgICAgICAgICAgIC8vIENhbGN1bGF0ZSBsaXZlbmVzcyBhbmQgc3RvcmUgZGF0YS4KKyAgICAg
ICAgICAgIGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9IDA7CisgICAgICAgICAgICBmb3IgKGNvbnN0
IEdlbmVyYXRvclBvaW50cyYgcG9pbnRzIDogbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0cykgewor
ICAgICAgICAgICAgICAgIHNpemVfdCBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXQgPSBwb2ludHMu
bWVyZ2VQb2ludDsKKyAgICAgICAgICAgICAgICBGYXN0Qml0VmVjdG9yIGxpdmVuZXNzVmVjdG9y
ID0gbGl2ZW5lc3MuZ2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29kZU9mZnNldChtZXJnZVBvaW50Qnl0
ZWNvZGVPZmZzZXQpOworICAgICAgICAgICAgICAgIG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxv
Y2Fsc0F0WWllbGRbbGl2ZUNhbGxlZUxvY2Fsc0luZGV4XSA9IGxpdmVuZXNzVmVjdG9yOworICAg
ICAgICAgICAgICAgIG1heEdlbmVyYXRvckxvY2Fsc1NpemUgPSBzdGQ6Om1heDx1bnNpZ25lZD4o
bWF4R2VuZXJhdG9yTG9jYWxzU2l6ZSwgbGl2ZW5lc3NWZWN0b3IuYml0Q291bnQoKSk7CisgICAg
ICAgICAgICAgICAgKytsaXZlQ2FsbGVlTG9jYWxzSW5kZXg7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIC8vIFJld3JpdGUgYnl0ZWNvZGVzIGJhc2VkIG9uIGNhbGN1bGF0ZWQgbGl2ZW5l
c3MuCisgICAgICAgICAgICBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSAwOworICAgICAgICAgICAg
Zm9yIChjb25zdCBHZW5lcmF0b3JQb2ludHMmIHBvaW50cyA6IG1lcmdlUG9pbnRCeXRlY29kZU9m
ZnNldHMpIHsKKyAgICAgICAgICAgICAgICBzaXplX3Qgc2F2ZVBvaW50Qnl0ZWNvZGVPZmZzZXQg
PSBwb2ludHMuc2F2ZVBvaW50OworICAgICAgICAgICAgICAgIHNpemVfdCByZXN1bWVQb2ludEJ5
dGVjb2RlT2Zmc2V0ID0gcG9pbnRzLnJlc3VtZVBvaW50OworCisgICAgICAgICAgICAgICAgY29u
c3QgRmFzdEJpdFZlY3RvciYgbGl2ZW5lc3NWZWN0b3IgPSBtX3JhcmVEYXRhLT5tX2xpdmVDYWxs
ZWVMb2NhbHNBdFlpZWxkW2xpdmVDYWxsZWVMb2NhbHNJbmRleF07CisKKyAgICAgICAgICAgICAg
ICAvLyBQYXRjaCBvcF9yZXN1bWVfaGludCB3aXRoIGFjdHVhbCBvcHMuCisgICAgICAgICAgICAg
ICAgaW50IGdlbmVyYXRvckZyYW1lSW5kZXggPSBtX2luc3RydWN0aW9uc1tyZXN1bWVQb2ludEJ5
dGVjb2RlT2Zmc2V0ICsgMV0udS5vcGVyYW5kOworICAgICAgICAgICAgICAgIGlmICghbGl2ZW5l
c3NWZWN0b3IuYml0Q291bnQoKSkgeworICAgICAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IDQ7ICsraSkKKyAgICAgICAgICAgICAgICAgICAgICAgIG1faW5zdHJ1Y3Rpb25z
W3Jlc3VtZVBvaW50Qnl0ZWNvZGVPZmZzZXQgKyBpXSA9IHZtLmludGVycHJldGVyLT5nZXRPcGNv
ZGUob3Bfbm9wKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAg
ICBzaXplX3QgaSA9IDA7CisgICAgICAgICAgICAgICAgICAgIGxpdmVuZXNzVmVjdG9yLmZvckVh
Y2hTZXRCaXQoWyZdKHVuc2lnbmVkIGxvY2FsKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBz
aXplX3QgaW5kZXggPSBpKys7CisgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb2Zmc2V0
ID0gcmVzdW1lUG9pbnRCeXRlY29kZU9mZnNldCArIGluZGV4ICogNDsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIG1faW5zdHJ1Y3Rpb25zW29mZnNldF0gPSB2bS5pbnRlcnByZXRlci0+Z2V0T3Bj
b2RlKG9wX3Jlc3VtZV9mcm9tX2dlbmVyYXRvcl9mcmFtZSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICBtX2luc3RydWN0aW9uc1tvZmZzZXQgKyAxXS51Lm9wZXJhbmQgPSB2aXJ0dWFsUmVnaXN0
ZXJGb3JMb2NhbChsb2NhbCkub2Zmc2V0KCk7CisgICAgICAgICAgICAgICAgICAgICAgICBtX2lu
c3RydWN0aW9uc1tvZmZzZXQgKyAyXS51Lm9wZXJhbmQgPSBnZW5lcmF0b3JGcmFtZUluZGV4Owor
ICAgICAgICAgICAgICAgICAgICAgICAgbV9pbnN0cnVjdGlvbnNbb2Zmc2V0ICsgM10udS51bnNp
Z25lZFZhbHVlID0gaW5kZXg7CisgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgICAgIG1faW5zdHJ1Y3Rpb25zW3NhdmVQb2ludEJ5dGVjb2Rl
T2Zmc2V0XSA9IHZtLmludGVycHJldGVyLT5nZXRPcGNvZGUob3Bfc2F2ZSk7CiAgICAgICAgICAg
ICAgICAgKytsaXZlQ2FsbGVlTG9jYWxzSW5kZXg7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
KyAgICAgICAgLy8gRmlsbCBvcF9uZXdfZ2VuZXJhdG9yX2ZyYW1lJ3Mgc2l6ZS4KKyAgICAgICAg
bV9pbnN0cnVjdGlvbnNbbmV3R2VuZXJhdG9yRnJhbWVJbnN0cnVjdGlvbk9mZnNldCArIDJdLnUu
dW5zaWduZWRWYWx1ZSA9IG1heEdlbmVyYXRvckxvY2Fsc1NpemU7CiAgICAgfQogCiAgICAgLy8g
U2V0IG9wdGltaXphdGlvbiB0aHJlc2hvbGRzIG9ubHkgYWZ0ZXIgbV9pbnN0cnVjdGlvbnMgaXMg
aW5pdGlhbGl6ZWQsIHNpbmNlIHRoZXNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHMuY3BwCmluZGV4IGUyY2IwMDA0ODM3OTRiYTky
ZDUxMGRjZjVmYTk5NDg4NWEyM2RjM2QuLjJmMzVjZmIzOTk1NzA3NTg4YzJjNThhNDI5MzQ3NDEz
NDNiN2U1N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVj
aXNlSnVtcFRhcmdldHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Q
cmVjaXNlSnVtcFRhcmdldHMuY3BwCkBAIC01NCw3ICs1NCw3IEBAIHN0YXRpYyB2b2lkIGdldEp1
bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEludGVycHJl
dGVyKiBpCiAgICAgY2FzZSBvcF9qbmxlc3NlcToKICAgICBjYXNlIG9wX2puZ3JlYXRlcjoKICAg
ICBjYXNlIG9wX2puZ3JlYXRlcmVxOgotICAgIGNhc2Ugb3Bfc2F2ZTogLy8gVGhlIGp1bXAgb2Yg
b3Bfc2F2ZSBpcyBwdXJlbHkgZm9yIGNhbGN1bGF0aW5nIGxpdmVuZXNzLgorICAgIGNhc2Ugb3Bf
c2F2ZV9oaW50OiAvLyBUaGUganVtcCBvZiBvcF9zYXZlX2hpbnQgaXMgcHVyZWx5IGZvciBjYWxj
dWxhdGluZyBsaXZlbmVzcy4KICAgICAgICAgb3V0LmFwcGVuZChieXRlY29kZU9mZnNldCArIGN1
cnJlbnRbM10udS5vcGVyYW5kKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBvcF9zd2l0Y2hf
aW1tOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCBkMTVlMjI0MzUyNjZmZTFhZmYzZDVmNzlhMWRkYTc1
YjliZGFmM2YzLi4wZGFlZWM2M2Y2YzIzNzBkNTY0ODMwMTBjMzJiNWNjY2E1MDZjNDE3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmNwcApAQCAtMjU3LDcgKzI1Nyw3IEBAIFBhcnNlckVycm9yIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjpnZW5lcmF0ZSgpCiAgICAgICAgIC8vICAgIGZ1bmN0aW9uICpnZW4oYSwgYiA9IGhl
bGxvKCkpCiAgICAgICAgIC8vICAgIHsKICAgICAgICAgLy8gICAgICAgIHJldHVybiB7Ci0gICAg
ICAgIC8vICAgICAgICAgICAgQGdlbmVyYXRvck5leHQ6IGZ1bmN0aW9uIChAZ2VuZXJhdG9yLCBA
Z2VuZXJhdG9yU3RhdGUsIEBnZW5lcmF0b3JWYWx1ZSwgQGdlbmVyYXRvclJlc3VtZU1vZGUpCisg
ICAgICAgIC8vICAgICAgICAgICAgQGdlbmVyYXRvck5leHQ6IGZ1bmN0aW9uIChAZ2VuZXJhdG9y
LCBAZ2VuZXJhdG9yU3RhdGUsIEBnZW5lcmF0b3JWYWx1ZSwgQGdlbmVyYXRvclJlc3VtZU1vZGUs
IEBnZW5lcmF0b3JGcmFtZSkKICAgICAgICAgLy8gICAgICAgICAgICB7CiAgICAgICAgIC8vICAg
ICAgICAgICAgICAgIGFyZ3VtZW50czsgIC8vIFRoaXMgYGFyZ3VtZW50c2Agc2hvdWxkIHJlZmVy
ZW5jZSB0byB0aGUgZ2VuJ3MgYXJndW1lbnRzLgogICAgICAgICAvLyAgICAgICAgICAgICAgICAu
Li4KQEAgLTUzNyw2ICs1MzcsOSBAQCBQYXJzZXJFcnJvciBCeXRlY29kZUdlbmVyYXRvcjo6Z2Vu
ZXJhdGUoKQogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JCb2R5TW9kZTogewog
ICAgICAgICAvLyB8dGhpc3wgaXMgYWxyZWFkeSBmaWxsZWQgY29ycmVjdGx5IGJlZm9yZSBoZXJl
LgogICAgICAgICBlbWl0TG9hZChtX25ld1RhcmdldFJlZ2lzdGVyLCBqc1VuZGVmaW5lZCgpKTsK
KworICAgICAgICBlbWl0TmV3R2VuZXJhdG9yRnJhbWUoZ2VuZXJhdG9yRnJhbWVSZWdpc3Rlcigp
KTsKKyAgICAgICAgZW1pdFB1dEJ5SWQoZ2VuZXJhdG9yUmVnaXN0ZXIoKSwgcHJvcGVydHlOYW1l
cygpLmdlbmVyYXRvckZyYW1lUHJpdmF0ZU5hbWUsIGdlbmVyYXRvckZyYW1lUmVnaXN0ZXIoKSk7
CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApAQCAtMjc0NCw2ICsyNzQ3LDE0IEBAIFJlZ2lzdGVy
SUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RnVuY3Rpb24oUmVnaXN0ZXJJRCogZHN0LCBG
dW5jdGlvbk1ldGFkYXRhCiAgICAgcmV0dXJuIGRzdDsKIH0KIAorUmVnaXN0ZXJJRCogQnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXROZXdHZW5lcmF0b3JGcmFtZShSZWdpc3RlcklEKiBkc3QpCit7Cisg
ICAgZW1pdE9wY29kZShvcF9uZXdfZ2VuZXJhdG9yX2ZyYW1lKTsKKyAgICBpbnN0cnVjdGlvbnMo
KS5hcHBlbmQoZHN0LT5pbmRleCgpKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7Cisg
ICAgcmV0dXJuIGRzdDsKK30KKwogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRD
YWxsKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogZnVuYywgRXhwZWN0ZWRGdW5jdGlvbiBl
eHBlY3RlZEZ1bmN0aW9uLCBDYWxsQXJndW1lbnRzJiBjYWxsQXJndW1lbnRzLCBjb25zdCBKU1Rl
eHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25z
dCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpCiB7CiAgICAgcmV0dXJuIGVtaXRDYWxsKG9wX2Nh
bGwsIGRzdCwgZnVuYywgZXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QsIGRp
dm90U3RhcnQsIGRpdm90RW5kKTsKQEAgLTQxNDQsOCArNDE1NSw4IEBAIHZvaWQgQnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXRZaWVsZFBvaW50KFJlZ2lzdGVySUQqIGFyZ3VtZW50KQogdm9pZCBCeXRl
Y29kZUdlbmVyYXRvcjo6ZW1pdFNhdmUoTGFiZWwqIG1lcmdlUG9pbnQsIHVuc2lnbmVkIGxpdmVD
YWxsZWVMb2NhbHNJbmRleCkKIHsKICAgICBzaXplX3QgYmVnaW4gPSBpbnN0cnVjdGlvbnMoKS5z
aXplKCk7Ci0gICAgZW1pdE9wY29kZShvcF9zYXZlKTsKLSAgICBpbnN0cnVjdGlvbnMoKS5hcHBl
bmQobV9nZW5lcmF0b3JSZWdpc3Rlci0+aW5kZXgoKSk7CisgICAgZW1pdE9wY29kZShvcF9zYXZl
X2hpbnQpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChnZW5lcmF0b3JGcmFtZVJlZ2lzdGVy
KCktPmluZGV4KCkpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChsaXZlQ2FsbGVlTG9jYWxz
SW5kZXgpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChtZXJnZVBvaW50LT5iaW5kKGJlZ2lu
LCBpbnN0cnVjdGlvbnMoKS5zaXplKCkpKTsKIH0KQEAgLTQxNTMsOSArNDE2NCwzMCBAQCB2b2lk
IEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0U2F2ZShMYWJlbCogbWVyZ2VQb2ludCwgdW5zaWduZWQg
bGl2ZUNhbGxlZUxvY2Fsc0luZAogdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlc3VtZShM
YWJlbCogbWVyZ2VQb2ludCwgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4KQogewogICAg
IGVtaXRHZW5lcmF0b3JTdGF0ZUxhYmVsKCk7Ci0gICAgZW1pdE9wY29kZShvcF9yZXN1bWUpOwot
ICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChtX2dlbmVyYXRvclJlZ2lzdGVyLT5pbmRleCgpKTsK
KworICAgIHJlY2xhaW1GcmVlUmVnaXN0ZXJzKCk7CisgICAgdW5zaWduZWQgbWF4TGl2ZUxvY2Fs
cyA9IDA7CisgICAgZm9yIChjb25zdCBSZWdpc3RlcklEJiByZWcgOiBtX2NhbGxlZUxvY2Fscykg
eworICAgICAgICBpZiAocmVnLnJlZkNvdW50KCkpCisgICAgICAgICAgICArK21heExpdmVMb2Nh
bHM7CisgICAgfQorCisgICAgLy8gVGhpcyBvcF9yZXN1bWVfaGludCB3aWxsIGJlIHJlcGxhY2Vk
IHdpdGggdGhlIGFjdHVhbCBvcHMuCisgICAgc3RhdGljX2Fzc2VydChPUENPREVfTEVOR1RIKG9w
X3Jlc3VtZV9oaW50KSA9PSBPUENPREVfTEVOR1RIKG9wX3Jlc3VtZV9mcm9tX2dlbmVyYXRvcl9m
cmFtZSksICJUaGUgbGVuZ3RoIG9mIG9wX3Jlc3VtZV9oaW50IHNob3VsZCBlcWF1YWwgdG8gb25l
IG9mIG9wX3Jlc3VtZV9mcm9tX2dlbmVyYXRvcl9mcmFtZS4iKTsKKyAgICBpZiAobWF4TGl2ZUxv
Y2FscykKKyAgICAgICAgbWF4TGl2ZUxvY2FscyAtPSAxOworCisgICAgZW1pdE9wY29kZShvcF9y
ZXN1bWVfaGludCk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGdlbmVyYXRvckZyYW1lUmVn
aXN0ZXIoKS0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGxpdmVDYWxsZWVM
b2NhbHNJbmRleCk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1heExpdmVMb2NhbHMpOwor
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtYXhMaXZlTG9jYWxzOyArK2kpIHsKKyAgICAg
ICAgLy8gTm9wIHNwYWNlLiBMYXRlciB3ZSB3aWxsIGZpbGwgdGhpcyB3aXRoIHRoZSBhY3R1YWwg
cmVzdW1lIG9wZXJhdGlvbnMuCisgICAgICAgIGZvciAodW5zaWduZWQgaiA9IDA7IGogPCBPUENP
REVfTEVOR1RIKG9wX3Jlc3VtZV9mcm9tX2dlbmVyYXRvcl9mcmFtZSk7ICsraikKKyAgICAgICAg
ICAgIGVtaXRPcGNvZGUob3Bfbm9wKTsKKyAgICB9CisgICAgZW1pdE9wY29kZShvcF9jbGVhcl9n
ZW5lcmF0b3JfZnJhbWUpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChnZW5lcmF0b3JGcmFt
ZVJlZ2lzdGVyKCktPmluZGV4KCkpOwogICAgIGVtaXRMYWJlbChtZXJnZVBvaW50KTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdl
bmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdl
bmVyYXRvci5oCmluZGV4IDdkMGMyMGI2ZjUxNmExN2U4OTNmMWJiYTA4MDNjMTMzM2ZmYzhkMGQu
LjNkMzM0NzgxNWFjMzBhODJlNjI2ZTNlMDc4MDgxYmUyYjNlOWJlM2YgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgK
QEAgLTUyMiw2ICs1MjIsNyBAQAogICAgICAgICBSZWdpc3RlcklEKiBlbWl0TmV3RGVmYXVsdENv
bnN0cnVjdG9yKFJlZ2lzdGVySUQqIGRzdCwgQ29uc3RydWN0b3JLaW5kLCBjb25zdCBJZGVudGlm
aWVyJiBuYW1lKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdE5ld0Fycm93RnVuY3Rpb25FeHBy
ZXNzaW9uKFJlZ2lzdGVySUQqLCBBcnJvd0Z1bmNFeHByTm9kZSopOwogICAgICAgICBSZWdpc3Rl
cklEKiBlbWl0TmV3UmVnRXhwKFJlZ2lzdGVySUQqIGRzdCwgUmVnRXhwKik7CisgICAgICAgIFJl
Z2lzdGVySUQqIGVtaXROZXdHZW5lcmF0b3JGcmFtZShSZWdpc3RlcklEKiBkc3QpOwogCiAgICAg
ICAgIFJlZ2lzdGVySUQqIGVtaXRNb3ZlTGlua1RpbWVDb25zdGFudChSZWdpc3RlcklEKiBkc3Qs
IExpbmtUaW1lQ29uc3RhbnQpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0TW92ZUVtcHR5VmFs
dWUoUmVnaXN0ZXJJRCogZHN0KTsKQEAgLTY4NCw2ICs2ODUsNyBAQAogICAgICAgICBSZWdpc3Rl
cklEKiBnZW5lcmF0b3JTdGF0ZVJlZ2lzdGVyKCkgeyByZXR1cm4gJm1fcGFyYW1ldGVyc1syXTsg
fQogICAgICAgICBSZWdpc3RlcklEKiBnZW5lcmF0b3JWYWx1ZVJlZ2lzdGVyKCkgeyByZXR1cm4g
Jm1fcGFyYW1ldGVyc1szXTsgfQogICAgICAgICBSZWdpc3RlcklEKiBnZW5lcmF0b3JSZXN1bWVN
b2RlUmVnaXN0ZXIoKSB7IHJldHVybiAmbV9wYXJhbWV0ZXJzWzRdOyB9CisgICAgICAgIFJlZ2lz
dGVySUQqIGdlbmVyYXRvckZyYW1lUmVnaXN0ZXIoKSB7IHJldHVybiAmbV9wYXJhbWV0ZXJzWzVd
OyB9CiAKICAgICAgICAgQ29kZVR5cGUgY29kZVR5cGUoKSBjb25zdCB7IHJldHVybiBtX2NvZGVU
eXBlOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJh
Y3RIZWFwLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SGVhcC5oCmlu
ZGV4IDRkZWM4ZmEwMzc3NmUwMWU2Y2QzNzQ2MDY1OWNjNTYxMTYyMzhjNjUuLjljODZmNjkyYjhk
Mzg1ZDllYjI0Njk3ZDc5Mjc5ZGY2Y2RmNDVjZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQWJzdHJhY3RIZWFwLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdBYnN0cmFjdEhlYXAuaApAQCAtNjgsNiArNjgsOCBAQAogICAgIG1hY3JvKFNjb3Bl
UHJvcGVydGllcykgXAogICAgIG1hY3JvKFR5cGVkQXJyYXlQcm9wZXJ0aWVzKSBcCiAgICAgbWFj
cm8oSGVhcE9iamVjdENvdW50KSAvKiBVc2VkIHRvIHJlZmxlY3QgdGhlIGZhY3QgdGhhdCBzb21l
IGFsbG9jYXRpb25zIHJldmVhbCBvYmplY3QgaWRlbnRpdHkgKi9cCisgICAgbWFjcm8oR2VuZXJh
dG9yTG9jYWxzKSBcCisgICAgbWFjcm8oR2VuZXJhdG9yTG9jYWxDb3VudCkgXAogICAgIG1hY3Jv
KFJlZ0V4cFN0YXRlKSBcCiAgICAgbWFjcm8oTWF0aERvdFJhbmRvbVN0YXRlKSBcCiAgICAgbWFj
cm8oSW50ZXJuYWxTdGF0ZSkgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCmluZGV4IDllZWM2M2NlYjA3MWJj
MTQ4NmEwMTJjMjg1MDFkYjYyNDI2YmRlN2IuLjgyNTA4MzY4YzlhODgwNDIzMzEwYTEzOTQxNmRl
NzE1M2UxY2M5NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJz
dHJhY3RJbnRlcnByZXRlcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKQEAgLTE2ODcsNiArMTY4NywxMCBAQAog
ICAgIGNhc2UgTmV3UmVnZXhwOgogICAgICAgICBmb3JOb2RlKG5vZGUpLnNldChtX2dyYXBoLCBt
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5yZWdFeHBTdHJ1
Y3R1cmUoKSk7CiAgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBOZXdHZW5lcmF0b3JGcmFtZToK
KyAgICAgICAgZm9yTm9kZShub2RlKS5zZXQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+Z2VuZXJhdG9yRnJhbWVTdHJ1Y3R1cmUoKSk7Cisg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCiAgICAgY2FzZSBUb1RoaXM6IHsKICAgICAgICAg
QWJzdHJhY3RWYWx1ZSYgc291cmNlID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSk7CkBAIC0yNTEw
LDYgKzI1MTQsMTUgQEAKICAgICAgICAgZm9yTm9kZShub2RlKS5tYWtlSGVhcFRvcCgpOwogICAg
ICAgICBicmVhazsKIAorICAgIGNhc2UgU2V0R2VuZXJhdG9yTG9jYWw6CisgICAgY2FzZSBQdXRH
ZW5lcmF0b3JGcmFtZUxvY2FsczoKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIEdldEdlbmVy
YXRvckxvY2FsOiB7CisgICAgICAgIGZvck5vZGUobm9kZSkubWFrZUhlYXBUb3AoKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBGb3JjZU9TUkV4aXQ6CiAgICAgY2FzZSBDaGVj
a0JhZENlbGw6CiAgICAgICAgIG1fc3RhdGUuc2V0SXNWYWxpZChmYWxzZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0JhY2t3YXJkc1Byb3BhZ2F0aW9uUGhhc2Uu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYWNrd2FyZHNQcm9wYWdhdGlvblBo
YXNlLmNwcAppbmRleCBiZjY1MTg4NmUzYWY5NWEzNDY2MDRiZTNlNTZiMDBmZjQxNzAwYmI3Li5m
YzVjNjBlYWUwNTY1M2JjMmVlYWQzZTljYjNmYTk5NjE2MDEyMzUyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0JhY2t3YXJkc1Byb3BhZ2F0aW9uUGhhc2UuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFja3dhcmRzUHJvcGFnYXRpb25QaGFz
ZS5jcHAKQEAgLTQwMyw2ICs0MDMsMjIgQEAgY2xhc3MgQmFja3dhcmRzUHJvcGFnYXRpb25QaGFz
ZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCisgICAg
ICAgIGNhc2UgR2V0R2VuZXJhdG9yTG9jYWw6IHsKKyAgICAgICAgICAgIEdlbmVyYXRvckxvY2Fs
RGF0YSogZ2VuZXJhdG9yTG9jYWxEYXRhID0gbm9kZS0+Z2VuZXJhdG9yTG9jYWxEYXRhKCk7Cisg
ICAgICAgICAgICBmbGFncyAmPSB+Tm9kZUJ5dGVjb2RlVXNlc0FzSW50OyAvLyBXZSBkb24ndCBj
YXJlIGFib3V0IGNyb3NzLWJsb2NrIHVzZXMtYXMtaW50LgorICAgICAgICAgICAgbV9jaGFuZ2Vk
IHw9IGdlbmVyYXRvckxvY2FsRGF0YS0+bWVyZ2VGbGFncyhmbGFncyk7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2UgU2V0R2VuZXJhdG9yTG9jYWw6IHsKKyAg
ICAgICAgICAgIEdlbmVyYXRvckxvY2FsRGF0YSogZ2VuZXJhdG9yTG9jYWxEYXRhID0gbm9kZS0+
Z2VuZXJhdG9yTG9jYWxEYXRhKCk7CisgICAgICAgICAgICBmbGFncyA9IGdlbmVyYXRvckxvY2Fs
RGF0YS0+ZmxhZ3MoKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCEoZmxhZ3MgJiB+Tm9k
ZUJ5dGVjb2RlQmFja1Byb3BNYXNrKSk7CisgICAgICAgICAgICBmbGFncyB8PSBOb2RlQnl0ZWNv
ZGVVc2VzQXNOdW1iZXI7IC8vIEFjY291bnQgZm9yIHRoZSBmYWN0IHRoYXQgY29udHJvbCBmbG93
IG1heSBjYXVzZSBvdmVyZmxvd3MgdGhhdCBvdXIgbW9kZWxpbmcgY2FuJ3QgaGFuZGxlLgorICAg
ICAgICAgICAgbm9kZS0+Y2hpbGQyKCktPm1lcmdlRmxhZ3MoZmxhZ3MpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KKwogICAgICAgICBjYXNlIElkZW50aXR5OiAKICAgICAgICAgICAg
IC8vIFRoaXMgd291bGQgYmUgdHJpdmlhbCB0byBoYW5kbGUgYnV0IHdlIGp1c3QgYXNzZXJ0IHRo
YXQgd2UgY2Fubm90IHNlZSB0aGVzZSB5ZXQuCiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdC
eXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2Rl
UGFyc2VyLmNwcAppbmRleCAzNjQ0YTJmZDE5YTBkOWIzZGRhN2IwNjhhMDA0OTBhNTgyNjIwODZk
Li42MDM1NjEyMmY1ODllZDAzMmQ5ZmNjMWJmZGFmYTI3ODcwMWQ3NWQ3IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtMzYsNiArMzYs
NyBAQAogI2luY2x1ZGUgIkRGR0FycmF5TW9kZS5oIgogI2luY2x1ZGUgIkRGR0NhcGFiaWxpdGll
cy5oIgogI2luY2x1ZGUgIkRGR0Nsb2JiZXJzRXhpdFN0YXRlLmgiCisjaW5jbHVkZSAiREZHR2Vu
ZXJhdG9yTG9jYWxEYXRhLmgiCiAjaW5jbHVkZSAiREZHR3JhcGguaCIKICNpbmNsdWRlICJERkdK
SVRDb2RlLmgiCiAjaW5jbHVkZSAiR2V0QnlJZFN0YXR1cy5oIgpAQCAtOTYzLDYgKzk2NCwxMSBA
QCBjbGFzcyBCeXRlQ29kZVBhcnNlciB7CiAgICAgICAgIGZvciAoQXJndW1lbnRQb3NpdGlvbiog
YXJndW1lbnQgOiBtX2lubGluZVN0YWNrVG9wLT5tX2FyZ3VtZW50UG9zaXRpb25zKQogICAgICAg
ICAgICAgYXJndW1lbnQtPm1lcmdlU2hvdWxkTmV2ZXJVbmJveCh0cnVlKTsKICAgICB9CisKKyAg
ICBHZW5lcmF0b3JMb2NhbERhdGEqIG5ld0dlbmVyYXRvckxvY2FsRGF0YSgpCisgICAgeworICAg
ICAgICByZXR1cm4gbV9ncmFwaC5tX2dlbmVyYXRvckxvY2FsRGF0YS5hZGQoKTsKKyAgICB9CiAg
ICAgCiAgICAgVk0qIG1fdm07CiAgICAgQ29kZUJsb2NrKiBtX2NvZGVCbG9jazsKQEAgLTEwNTEs
NiArMTA1Nyw5IEBAIGNsYXNzIEJ5dGVDb2RlUGFyc2VyIHsKICAgICAgICAgQ2FsbExpbmtJbmZv
TWFwIG1fY2FsbExpbmtJbmZvczsKICAgICAgICAgU3R1YkluZm9NYXAgbV9zdHViSW5mb3M7CiAg
ICAgICAgIEJ5VmFsSW5mb01hcCBtX2J5VmFsSW5mb3M7CisKKyAgICAgICAgLy8gQmFzaWMgYmxv
Y2tzIHBlcmZvcm1pbmcgeWllbGQncyBvcF9zYXZlIG9wZXJhdGlvbi4KKyAgICAgICAgVmVjdG9y
PE9wZXJhbmRzPEdlbmVyYXRvckxvY2FsRGF0YSo+PiBtX2dlbmVyYXRvckxvY2FsczsKICAgICAg
ICAgCiAgICAgICAgIC8vIERpZCB3ZSBzZWUgYW55IHJldHVybnM/IFdlIG5lZWQgdG8gaGFuZGxl
IHRoZSAodW5jb21tb24gYnV0IG5lY2Vzc2FyeSkKICAgICAgICAgLy8gY2FzZSB3aGVyZSBhIHBy
b2NlZHVyZSB0aGF0IGRvZXMgbm90IHJldHVybiB3YXMgaW5saW5lZC4KQEAgLTMzNDEsNiArMzM1
MCwxMSBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQog
ICAgICAgICAgICAgTkVYVF9PUENPREUob3BfbmV3X3JlZ2V4cCk7CiAgICAgICAgIH0KIAorICAg
ICAgICBjYXNlIG9wX25ld19nZW5lcmF0b3JfZnJhbWU6IHsKKyAgICAgICAgICAgIHNldChWaXJ0
dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCksIGFkZFRvR3JhcGgo
TmV3R2VuZXJhdG9yRnJhbWUsIE9wSW5mbyhjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS51bnNpZ25l
ZFZhbHVlKSkpOworICAgICAgICAgICAgTkVYVF9PUENPREUob3BfbmV3X2dlbmVyYXRvcl9mcmFt
ZSk7CisgICAgICAgIH0KKwogICAgICAgICBjYXNlIG9wX2dldF9yZXN0X2xlbmd0aDogewogICAg
ICAgICAgICAgSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUgPSB0aGlzLT5pbmxpbmVD
YWxsRnJhbWUoKTsKICAgICAgICAgICAgIE5vZGUqIGxlbmd0aDsKQEAgLTMzNjgsNiArMzM4Miw1
MSBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAg
ICAgICAgICAgICAgIGFycmF5LCBhcnJheUxlbmd0aCk7CiAgICAgICAgICAgICBORVhUX09QQ09E
RShvcF9jb3B5X3Jlc3QpOwogICAgICAgICB9CisKKyAgICAgICAgY2FzZSBvcF9zYXZlOiB7Cisg
ICAgICAgICAgICBOb2RlKiBmcmFtZSA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3Ry
dWN0aW9uWzFdLnUub3BlcmFuZCkpOworICAgICAgICAgICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxv
Y2Fsc0luZGV4ID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUudW5zaWduZWRWYWx1ZTsKKyAgICAg
ICAgICAgIGNvbnN0IEZhc3RCaXRWZWN0b3ImIGxpdmVuZXNzID0gbV9pbmxpbmVTdGFja1RvcC0+
bV9jb2RlQmxvY2stPmxpdmVDYWxsZWVMb2NhbHNBdFlpZWxkKGxpdmVDYWxsZWVMb2NhbHNJbmRl
eCk7CisKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9
PSBtX2lubGluZVN0YWNrVG9wLT5tX2dlbmVyYXRvckxvY2Fscy5zaXplKCkpOworICAgICAgICAg
ICAgbV9pbmxpbmVTdGFja1RvcC0+bV9nZW5lcmF0b3JMb2NhbHMuYXBwZW5kKE9wZXJhbmRzPEdl
bmVyYXRvckxvY2FsRGF0YSo+KG1fbnVtQXJndW1lbnRzLCBtX251bUxvY2FscykpOworICAgICAg
ICAgICAgT3BlcmFuZHM8R2VuZXJhdG9yTG9jYWxEYXRhKj4mIG9wZXJhbmRzID0gbV9pbmxpbmVT
dGFja1RvcC0+bV9nZW5lcmF0b3JMb2NhbHMubGFzdCgpOworCisgICAgICAgICAgICBhZGRUb0dy
YXBoKFB1dEdlbmVyYXRvckZyYW1lTG9jYWxzLCBPcEluZm8obGl2ZW5lc3MuYml0Q291bnQoKSks
IGZyYW1lKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGdlbmVyYXRvckZyYW1lSW5kZXggPSAwOwor
ICAgICAgICAgICAgbGl2ZW5lc3MuZm9yRWFjaFNldEJpdChbJl0oc2l6ZV90IGluZGV4KSB7Cisg
ICAgICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQgPSB2aXJ0dWFsUmVnaXN0ZXJG
b3JMb2NhbChpbmRleCk7CisgICAgICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHJlbWFwcGVk
T3BlcmFuZCA9IG1faW5saW5lU3RhY2tUb3AtPnJlbWFwT3BlcmFuZChvcGVyYW5kKTsKKyAgICAg
ICAgICAgICAgICBOb2RlKiBsb2NhbCA9IGdldChvcGVyYW5kKTsKKyAgICAgICAgICAgICAgICBH
ZW5lcmF0b3JMb2NhbERhdGEqIGdlbmVyYXRvckxvY2FsRGF0YSA9IG5ld0dlbmVyYXRvckxvY2Fs
RGF0YSgpOworICAgICAgICAgICAgICAgIG9wZXJhbmRzLmxvY2FsKHJlbWFwcGVkT3BlcmFuZC50
b0xvY2FsKCkpID0gZ2VuZXJhdG9yTG9jYWxEYXRhOworICAgICAgICAgICAgICAgIGFkZFRvR3Jh
cGgoU2V0R2VuZXJhdG9yTG9jYWwsIE9wSW5mbyhnZW5lcmF0b3JGcmFtZUluZGV4KyspLCBPcElu
Zm8oZ2VuZXJhdG9yTG9jYWxEYXRhKSwgZnJhbWUsIGxvY2FsKTsKKyAgICAgICAgICAgIH0pOwor
ICAgICAgICAgICAgTkVYVF9PUENPREUob3Bfc2F2ZSk7CisgICAgICAgIH0KKworICAgICAgICBj
YXNlIG9wX3Jlc3VtZV9mcm9tX2dlbmVyYXRvcl9mcmFtZTogeworICAgICAgICAgICAgTm9kZSog
ZnJhbWUgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJh
bmQpKTsKKyAgICAgICAgICAgIE9wZXJhbmRzPEdlbmVyYXRvckxvY2FsRGF0YSo+JiBvcGVyYW5k
cyA9IG1faW5saW5lU3RhY2tUb3AtPm1fZ2VuZXJhdG9yTG9jYWxzLmxhc3QoKTsKKyAgICAgICAg
ICAgIHVuc2lnbmVkIGdlbmVyYXRvckZyYW1lSW5kZXggPSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10u
dS51bnNpZ25lZFZhbHVlOworICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQoY3Vy
cmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CisgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0
ZXIgcmVtYXBwZWRPcGVyYW5kID0gbV9pbmxpbmVTdGFja1RvcC0+cmVtYXBPcGVyYW5kKG9wZXJh
bmQpOworICAgICAgICAgICAgR2VuZXJhdG9yTG9jYWxEYXRhKiBnZW5lcmF0b3JMb2NhbERhdGEg
PSBvcGVyYW5kcy5sb2NhbChyZW1hcHBlZE9wZXJhbmQudG9Mb2NhbCgpKTsKKyAgICAgICAgICAg
IFJFTEVBU0VfQVNTRVJUKGdlbmVyYXRvckxvY2FsRGF0YSk7CisgICAgICAgICAgICBzZXQob3Bl
cmFuZCwgYWRkVG9HcmFwaChHZXRHZW5lcmF0b3JMb2NhbCwgT3BJbmZvKGdlbmVyYXRvckZyYW1l
SW5kZXgpLCBPcEluZm8oZ2VuZXJhdG9yTG9jYWxEYXRhKSwgZnJhbWUpKTsKKyAgICAgICAgICAg
IE5FWFRfT1BDT0RFKG9wX3Jlc3VtZV9mcm9tX2dlbmVyYXRvcl9mcmFtZSk7CisgICAgICAgIH0K
KworICAgICAgICBjYXNlIG9wX2NsZWFyX2dlbmVyYXRvcl9mcmFtZTogeworICAgICAgICAgICAg
Tm9kZSogZnJhbWUgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51
Lm9wZXJhbmQpKTsKKyAgICAgICAgICAgIGFkZFRvR3JhcGgoUHV0R2VuZXJhdG9yRnJhbWVMb2Nh
bHMsIE9wSW5mbygwKSwgZnJhbWUpOworICAgICAgICAgICAgTkVYVF9PUENPREUob3BfY2xlYXJf
Z2VuZXJhdG9yX2ZyYW1lKTsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2Ugb3Bfbm9wOiB7Cisg
ICAgICAgICAgICBORVhUX09QQ09ERShvcF9ub3ApOworICAgICAgICB9CisKICAgICAgICAgICAg
IAogICAgICAgICAvLyA9PT0gQml0d2lzZSBvcGVyYXRpb25zID09PQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKaW5kZXggZDEwMGQ5N2Q1YzYwZTI1
YTA2MGZmZGE0NTY2M2IzYjk0MTQzNWRjNi4uYTU4MmY4NzIwNzZjZmY4OTQyODNlYmEzMWE0OTk3
NzYzMGRjNzg5MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBh
YmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0
aWVzLmNwcApAQCAtMTgxLDYgKzE4MSw3IEBAIENhcGFiaWxpdHlMZXZlbCBjYXBhYmlsaXR5TGV2
ZWwoT3Bjb2RlSUQgb3Bjb2RlSUQsIENvZGVCbG9jayogY29kZUJsb2NrLCBJbnN0cnVjCiAgICAg
Y2FzZSBvcF9uZXdfYXJyYXk6CiAgICAgY2FzZSBvcF9uZXdfYXJyYXlfd2l0aF9zaXplOgogICAg
IGNhc2Ugb3BfbmV3X2FycmF5X2J1ZmZlcjoKKyAgICBjYXNlIG9wX25ld19nZW5lcmF0b3JfZnJh
bWU6CiAgICAgY2FzZSBvcF9zdHJjYXQ6CiAgICAgY2FzZSBvcF90b19wcmltaXRpdmU6CiAgICAg
Y2FzZSBvcF90aHJvdzoKQEAgLTIyNCw2ICsyMjUsMTAgQEAgQ2FwYWJpbGl0eUxldmVsIGNhcGFi
aWxpdHlMZXZlbChPcGNvZGVJRCBvcGNvZGVJRCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEluc3Ry
dWMKICAgICBjYXNlIG9wX2NhdGNoOgogICAgIGNhc2Ugb3BfY29weV9yZXN0OgogICAgIGNhc2Ug
b3BfZ2V0X3Jlc3RfbGVuZ3RoOgorICAgIGNhc2Ugb3Bfc2F2ZToKKyAgICBjYXNlIG9wX3Jlc3Vt
ZV9mcm9tX2dlbmVyYXRvcl9mcmFtZToKKyAgICBjYXNlIG9wX2NsZWFyX2dlbmVyYXRvcl9mcmFt
ZToKKyAgICBjYXNlIG9wX25vcDoKICAgICAgICAgcmV0dXJuIENhbkNvbXBpbGVBbmRJbmxpbmU7
CiAKICAgICBjYXNlIG9wX3B1dF90b19zY29wZTogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Nsb2JiZXJpemUuaAppbmRleCAzNDNhNmRlOWMyOTA5YjkzZTA1MjhjZjAyNzg0YWFkOTRk
MDFiNGQxLi5mM2U2ZWFhMjlkZjZkZGVlODIzZmQzNTdjMTUzMDUwMjBlOTc0NWI3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaApAQCAtMTA0NCw2ICsxMDQ0LDcg
QEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1
bmN0b3ImIHJlYWQsIGNvbnN0IFdyaXRlRnUKIAogICAgIGNhc2UgTmV3T2JqZWN0OgogICAgIGNh
c2UgTmV3UmVnZXhwOgorICAgIGNhc2UgTmV3R2VuZXJhdG9yRnJhbWU6CiAgICAgY2FzZSBOZXdT
dHJpbmdPYmplY3Q6CiAgICAgY2FzZSBQaGFudG9tTmV3T2JqZWN0OgogICAgIGNhc2UgTWF0ZXJp
YWxpemVOZXdPYmplY3Q6CkBAIC0xMTExLDYgKzExMTIsMjMgQEAgdm9pZCBjbG9iYmVyaXplKEdy
YXBoJiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQsIGNvbnN0IFdy
aXRlRnUKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KKworICAgIGNhc2UgU2V0R2VuZXJhdG9yTG9jYWw6IHsK
KyAgICAgICAgcmVhZChHZW5lcmF0b3JMb2NhbENvdW50KTsKKyAgICAgICAgd3JpdGUoR2VuZXJh
dG9yTG9jYWxzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGNhc2UgR2V0R2VuZXJh
dG9yTG9jYWw6IHsKKyAgICAgICAgcmVhZChHZW5lcmF0b3JMb2NhbENvdW50KTsKKyAgICAgICAg
cmVhZChHZW5lcmF0b3JMb2NhbHMpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgY2Fz
ZSBQdXRHZW5lcmF0b3JGcmFtZUxvY2FsczogeworICAgICAgICB3cml0ZShHZW5lcmF0b3JMb2Nh
bENvdW50KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBUaHJv
d1JlZmVyZW5jZUVycm9yOgogICAgICAgICB3cml0ZShTaWRlU3RhdGUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyc0V4aXRTdGF0ZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcAppbmRleCA0ZTBj
NTA3Nzg5Y2Q3YjNmZjQ3NzUxZjkyNWU3NDgzZTYxZTJkZjViLi5jYjk0MTNiZGYwNjdkMTYwOWZj
MWU4NDRmZDU4ZjNlYWNlYjZmYjUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcApAQCAtNTMsMTAgKzUzLDE2IEBAIGJvb2wgY2xv
YmJlcnNFeGl0U3RhdGUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgICAgICAvLyBleGl0
IHN0YXRlLgogICAgICAgICByZXR1cm4gZmFsc2U7CiAKKyAgICBjYXNlIFB1dEdlbmVyYXRvckZy
YW1lTG9jYWxzOgorICAgIGNhc2UgU2V0R2VuZXJhdG9yTG9jYWw6CisgICAgY2FzZSBHZXRHZW5l
cmF0b3JMb2NhbDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgY2FzZSBBcnJheWlmeVRv
U3RydWN0dXJlOgogICAgIGNhc2UgQXJyYXlpZnk6CiAgICAgY2FzZSBOZXdPYmplY3Q6CiAgICAg
Y2FzZSBOZXdSZWdleHA6CisgICAgY2FzZSBOZXdHZW5lcmF0b3JGcmFtZToKICAgICBjYXNlIE5l
d1N0cmluZ09iamVjdDoKICAgICBjYXNlIFBoYW50b21OZXdPYmplY3Q6CiAgICAgY2FzZSBNYXRl
cmlhbGl6ZU5ld09iamVjdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHRG9lc0dDLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcApp
bmRleCA3MDJkYTViZjFlN2MwZjFjOGZlNTVjNjQ4NDQ1OGZjYWQ4MWUyYWE1Li5lNDE4ZDc4NzY2
ZWE2NGYzMDFkZDBkM2E0ZDc1MGI0YTgyNTA2YjEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdEb2VzR0MuY3BwCkBAIC0yMjksNiArMjI5LDkgQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdy
YXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgR2V0RnJvbUFyZ3VtZW50czoKICAgICBjYXNlIFB1
dFRvQXJndW1lbnRzOgogICAgIGNhc2UgQ29weVJlc3Q6CisgICAgY2FzZSBTZXRHZW5lcmF0b3JM
b2NhbDoKKyAgICBjYXNlIEdldEdlbmVyYXRvckxvY2FsOgorICAgIGNhc2UgUHV0R2VuZXJhdG9y
RnJhbWVMb2NhbHM6CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGNhc2UgQ3JlYXRlQWN0
aXZhdGlvbjoKQEAgLTI0Niw2ICsyNDksNyBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5v
ZGUqIG5vZGUpCiAgICAgY2FzZSBOZXdBcnJheVdpdGhTaXplOgogICAgIGNhc2UgTmV3QXJyYXlC
dWZmZXI6CiAgICAgY2FzZSBOZXdSZWdleHA6CisgICAgY2FzZSBOZXdHZW5lcmF0b3JGcmFtZToK
ICAgICBjYXNlIE5ld1N0cmluZ09iamVjdDoKICAgICBjYXNlIE1ha2VSb3BlOgogICAgIGNhc2Ug
TmV3QXJyb3dGdW5jdGlvbjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHRml4dXBQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhh
c2UuY3BwCmluZGV4IGM5ZDVhYmZiNDk0ODFiOTA1ODllYzRmYmE1OTVhMmNlOGU3MGRmNjcuLjg3
OWJlOWRlMjEyMDg2ZDlhZGZkZjYxMjc3MmY3ZjIzZjZiM2FiOGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcApAQCAtMTQzMCw2ICsxNDMwLDIxIEBAIGNs
YXNzIEZpeHVwUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KIAorICAgICAgICBjYXNlIFNldEdlbmVyYXRvckxvY2FsOiB7CisgICAgICAgICAgICBm
aXhFZGdlPENlbGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CisKKyAgICAgICAgY2FzZSBHZXRHZW5lcmF0b3JMb2NhbDogeworICAgICAgICAgICAg
Zml4RWRnZTxDZWxsVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQorCisgICAgICAgIGNhc2UgUHV0R2VuZXJhdG9yRnJhbWVMb2NhbHM6IHsKKyAgICAg
ICAgICAgIGZpeEVkZ2U8Q2VsbFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKwogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICAgICAgLy8gSGF2ZSB0
aGVzZSBuby1vcCBjYXNlcyBoZXJlIHRvIGVuc3VyZSB0aGF0IG5vYm9keSBmb3JnZXRzIHRvIGFk
ZCBoYW5kbGVycyBmb3IgbmV3IG9wY29kZXMuCiAgICAgICAgIGNhc2UgU2V0QXJndW1lbnQ6CkBA
IC0xNDYyLDYgKzE0NzcsNyBAQCBjbGFzcyBGaXh1cFBoYXNlIDogcHVibGljIFBoYXNlIHsKICAg
ICAgICAgY2FzZSBOZXdPYmplY3Q6CiAgICAgICAgIGNhc2UgTmV3QXJyYXlCdWZmZXI6CiAgICAg
ICAgIGNhc2UgTmV3UmVnZXhwOgorICAgICAgICBjYXNlIE5ld0dlbmVyYXRvckZyYW1lOgogICAg
ICAgICBjYXNlIEJyZWFrcG9pbnQ6CiAgICAgICAgIGNhc2UgUHJvZmlsZVdpbGxDYWxsOgogICAg
ICAgICBjYXNlIFByb2ZpbGVEaWRDYWxsOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdHZW5lcmF0b3JMb2NhbERhdGEuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHR2VuZXJhdG9yTG9jYWxEYXRhLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGFhMzY1YmI4ZjNkOTg3YmVh
MmQ1MDU0NGRjYWU3YTNmODVjYmVlZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHR2VuZXJhdG9yTG9jYWxEYXRhLmgKQEAgLTAsMCArMSw2OSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNiBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5j
b20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRl
ZiBERkdHZW5lcmF0b3JMb2NhbERhdGFfaAorI2RlZmluZSBERkdHZW5lcmF0b3JMb2NhbERhdGFf
aAorCisjaWYgRU5BQkxFKERGR19KSVQpCisKKyNpbmNsdWRlICJERkdDb21tb24uaCIKKyNpbmNs
dWRlICJERkdOb2RlRmxhZ3MuaCIKKyNpbmNsdWRlICJERkdWYXJpYWJsZUFjY2Vzc0RhdGEuaCIK
KyNpbmNsdWRlICJTcGVjdWxhdGVkVHlwZS5oIgorI2luY2x1ZGUgIlZpcnR1YWxSZWdpc3Rlci5o
IgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CisKK3N0cnVjdCBOb2RlOworCitj
bGFzcyBHZW5lcmF0b3JMb2NhbERhdGEgeworcHVibGljOgorICAgIGJvb2wgcHJlZGljdChTcGVj
dWxhdGVkVHlwZSBwcmVkaWN0aW9uKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1lcmdlU3BlY3Vs
YXRpb24obV9wcmVkaWN0aW9uLCBwcmVkaWN0aW9uKTsKKyAgICB9CisKKyAgICBTcGVjdWxhdGVk
VHlwZSBwcmVkaWN0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX3ByZWRpY3Rpb247Cisg
ICAgfQorCisgICAgTm9kZUZsYWdzIGZsYWdzKCkgY29uc3QgeyByZXR1cm4gbV9mbGFnczsgfQor
CisgICAgYm9vbCBtZXJnZUZsYWdzKE5vZGVGbGFncyBuZXdGbGFncykKKyAgICB7CisgICAgICAg
IHJldHVybiBjaGVja0FuZFNldChtX2ZsYWdzLCBtX2ZsYWdzIHwgbmV3RmxhZ3MpOworICAgIH0K
KworcHJpdmF0ZToKKyAgICBTcGVjdWxhdGVkVHlwZSBtX3ByZWRpY3Rpb24geyBTcGVjTm9uZSB9
OworICAgIE5vZGVGbGFncyBtX2ZsYWdzIHsgMCB9OworfTsKKworfSB9IC8vIG5hbWVzcGFjZSBK
U0M6OkRGRworCisjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCisKKyNlbmRpZiAvLyBERkdWYXJp
YWJsZUFjY2Vzc0RhdGFfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdHcmFwaC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCmluZGV4IDA5
YWFlOTU1ZjY2YWE3ODk0YTE0ODVlMTM5MzdmM2JhNTM4ODlkMWMuLjQzZmRiYjFhNzEzMDM0NmM5
YmRhZjQ5ZDRlNDE2YjcyNDEzZjA2MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHR3JhcGguaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBo
LmgKQEAgLTYwLDYgKzYwLDcgQEAKIGNsYXNzIERvbWluYXRvcnM7CiBjbGFzcyBOYXR1cmFsTG9v
cHM7CiBjbGFzcyBQcmVQb3N0TnVtYmVyaW5nOworY2xhc3MgR2VuZXJhdG9yTG9jYWxEYXRhOwog
CiAjZGVmaW5lIERGR19OT0RFX0RPX1RPX0NISUxEUkVOKGdyYXBoLCBub2RlLCB0aGluZ1RvRG8p
IGRvIHsgICAgICAgICAgICBcCiAgICAgICAgIE5vZGUqIF9ub2RlID0gKG5vZGUpOyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCkBAIC04ODcsNiArODg4LDcgQEAg
Y2xhc3MgR3JhcGggOiBwdWJsaWMgdmlydHVhbCBTY2FubmFibGUgewogICAgIEJhZzxDYWxsVmFy
YXJnc0RhdGE+IG1fY2FsbFZhcmFyZ3NEYXRhOwogICAgIEJhZzxMb2FkVmFyYXJnc0RhdGE+IG1f
bG9hZFZhcmFyZ3NEYXRhOwogICAgIEJhZzxTdGFja0FjY2Vzc0RhdGE+IG1fc3RhY2tBY2Nlc3NE
YXRhOworICAgIEJhZzxHZW5lcmF0b3JMb2NhbERhdGE+IG1fZ2VuZXJhdG9yTG9jYWxEYXRhOwog
ICAgIFZlY3RvcjxJbmxpbmVWYXJpYWJsZURhdGEsIDQ+IG1faW5saW5lVmFyaWFibGVEYXRhOwog
ICAgIEhhc2hNYXA8Q29kZUJsb2NrKiwgc3RkOjp1bmlxdWVfcHRyPEZ1bGxCeXRlY29kZUxpdmVu
ZXNzPj4gbV9ieXRlY29kZUxpdmVuZXNzOwogICAgIEhhc2hNYXA8Q29kZUJsb2NrKiwgc3RkOjp1
bmlxdWVfcHRyPEJ5dGVjb2RlS2lsbHM+PiBtX2J5dGVjb2RlS2lsbHM7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNwcAppbmRleCBkYWEyOTMzOWRiZmJkZjgwYWFkOWI2NDZh
MmNiN2EwNTg3ZDk2MjM4Li5mYzU3YjgyMzAzYzc5YmQxM2NkNWQxY2UxYmUwYWZiNzEwY2U2Yzc1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAKQEAgLTEzMCw2ICsx
MzAsOSBAQCBFeGl0TW9kZSBtYXlFeGl0KEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBj
YXNlIFN0b3JlQmFycmllcjoKICAgICBjYXNlIFB1dEJ5T2Zmc2V0OgogICAgIGNhc2UgUHV0Q2xv
c3VyZVZhcjoKKyAgICBjYXNlIFB1dEdlbmVyYXRvckZyYW1lTG9jYWxzOgorICAgIGNhc2UgU2V0
R2VuZXJhdG9yTG9jYWw6CisgICAgY2FzZSBHZXRHZW5lcmF0b3JMb2NhbDoKICAgICAgICAgYnJl
YWs7CiAKICAgICBjYXNlIFN0ckNhdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTm9kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKaW5k
ZXggMTI4NzBkOTNkMGM0ODJlNGY4ZTVkNGQyZGFmMWU2YmYxZjcxYjYyYy4uNjQwZGViZDhlYjQ0
Y2NhMTk4YmJjMjIzNmQyOTQ4OWZiOWNkMzU5NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdOb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdO
b2RlLmgKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJERkdBcnJheU1vZGUuaCIKICNpbmNs
dWRlICJERkdDb21tb24uaCIKICNpbmNsdWRlICJERkdFcG9jaC5oIgorI2luY2x1ZGUgIkRGR0dl
bmVyYXRvckxvY2FsRGF0YS5oIgogI2luY2x1ZGUgIkRGR0xhenlKU1ZhbHVlLmgiCiAjaW5jbHVk
ZSAiREZHTXVsdGlHZXRCeU9mZnNldERhdGEuaCIKICNpbmNsdWRlICJERkdOb2RlRmxhZ3MuaCIK
QEAgLTg3OCw2ICs4NzksNzIgQEAgc3RydWN0IE5vZGUgewogICAgICAgICByZXR1cm4gbV9vcElu
Zm87CiAgICAgfQogCisgICAgYm9vbCBoYXNHZW5lcmF0b3JMb2NhbHNTaXplKCkKKyAgICB7Cisg
ICAgICAgIHN3aXRjaCAob3AoKSkgeworICAgICAgICBjYXNlIE5ld0dlbmVyYXRvckZyYW1lOgor
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB1bnNpZ25lZCBnZW5lcmF0b3JM
b2NhbHNTaXplKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChoYXNHZW5lcmF0b3JMb2NhbHNTaXpl
KCkpOworICAgICAgICByZXR1cm4gbV9vcEluZm87CisgICAgfQorCisgICAgYm9vbCBoYXNHZW5l
cmF0b3JGcmFtZUluZGV4KCkKKyAgICB7CisgICAgICAgIHN3aXRjaCAob3AoKSkgeworICAgICAg
ICBjYXNlIFNldEdlbmVyYXRvckxvY2FsOgorICAgICAgICBjYXNlIEdldEdlbmVyYXRvckxvY2Fs
OgorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB1bnNpZ25lZCBnZW5lcmF0
b3JGcmFtZUluZGV4KCkKKyAgICB7CisgICAgICAgIEFTU0VSVChoYXNHZW5lcmF0b3JGcmFtZUlu
ZGV4KCkpOworICAgICAgICByZXR1cm4gbV9vcEluZm87CisgICAgfQorCisgICAgYm9vbCBoYXNH
ZW5lcmF0b3JMb2NhbERhdGEoKQorICAgIHsKKyAgICAgICAgc3dpdGNoIChvcCgpKSB7CisgICAg
ICAgIGNhc2UgU2V0R2VuZXJhdG9yTG9jYWw6CisgICAgICAgIGNhc2UgR2V0R2VuZXJhdG9yTG9j
YWw6CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIEdlbmVyYXRvckxvY2Fs
RGF0YSogZ2VuZXJhdG9yTG9jYWxEYXRhKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChoYXNHZW5l
cmF0b3JMb2NhbERhdGEoKSk7CisgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PEdlbmVy
YXRvckxvY2FsRGF0YSo+KG1fb3BJbmZvMik7CisgICAgfQorCisgICAgYm9vbCBoYXNHZW5lcmF0
b3JGcmFtZUxvY2FscygpCisgICAgeworICAgICAgICBzd2l0Y2ggKG9wKCkpIHsKKyAgICAgICAg
Y2FzZSBQdXRHZW5lcmF0b3JGcmFtZUxvY2FsczoKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9Cisg
ICAgfQorCisgICAgdW5zaWduZWQgZ2VuZXJhdG9yRnJhbWVMb2NhbHMoKQorICAgIHsKKyAgICAg
ICAgQVNTRVJUKGhhc0dlbmVyYXRvckZyYW1lTG9jYWxzKCkpOworICAgICAgICByZXR1cm4gbV9v
cEluZm87CisgICAgfQorCiAgICAgYm9vbCBoYXNBY2Nlc3NvckF0dHJpYnV0ZXMoKQogICAgIHsK
ICAgICAgICAgc3dpdGNoIChvcCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR05vZGVUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVU
eXBlLmgKaW5kZXggZGRkMGI5N2NiMmZlNjkyNjA0NTEwM2Y4YTcxMDcwMDQ4MmU5ZjZiZC4uYzlh
OGQ3MmY4MjdlYmVjODFhZGVlYmYyZDZkODk3YWM5ZTgwZDUzZSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTm9kZVR5cGUuaApAQCAtNzksNiArNzksMTAgQEAKICAgICBtYWNybyhGbHVz
aCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKFBoYW50b21Mb2NhbCwgTm9kZU11c3RH
ZW5lcmF0ZSkgXAogICAgIFwKKyAgICBtYWNybyhTZXRHZW5lcmF0b3JMb2NhbCwgTm9kZU11c3RH
ZW5lcmF0ZSkgXAorICAgIG1hY3JvKEdldEdlbmVyYXRvckxvY2FsLCBOb2RlUmVzdWx0SlMpIFwK
KyAgICBtYWNybyhQdXRHZW5lcmF0b3JGcmFtZUxvY2FscywgTm9kZU11c3RHZW5lcmF0ZSkgXAor
ICAgIFwKICAgICAvKiBIaW50IHRoYXQgdGhpcyBpcyB3aGVyZSBieXRlY29kZSB0aGlua3MgaXMg
YSBnb29kIHBsYWNlIHRvIE9TUi4gTm90ZSB0aGF0IHRoaXMgKi9cCiAgICAgLyogd2lsbCBleGlz
dCBldmVuIGluIGlubGluZWQgbG9vcHMuIFRoaXMgaGFzIG5vIGV4ZWN1dGlvbiBzZW1hbnRpY3Mg
YnV0IGl0IG11c3QgKi9cCiAgICAgLyogc3Vydml2ZSBhbGwgRENFLiBXZSB0cmVhdCB0aGlzIGFz
IGJlaW5nIGEgY2FuLWV4aXQgYmVjYXVzZSB0aWVyLXVwIHRvIEZUTCBtYXkgKi9cCkBAIC0yNjMs
NiArMjY3LDcgQEAKICAgICBtYWNybyhOZXdBcnJheUJ1ZmZlciwgTm9kZVJlc3VsdEpTKSBcCiAg
ICAgbWFjcm8oTmV3VHlwZWRBcnJheSwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkg
XAogICAgIG1hY3JvKE5ld1JlZ2V4cCwgTm9kZVJlc3VsdEpTKSBcCisgICAgbWFjcm8oTmV3R2Vu
ZXJhdG9yRnJhbWUsIE5vZGVSZXN1bHRKUykgXAogICAgIC8qIFJlc3QgUGFyYW1ldGVyICovXAog
ICAgIG1hY3JvKEdldFJlc3RMZW5ndGgsIE5vZGVSZXN1bHRJbnQzMikgXAogICAgIG1hY3JvKENv
cHlSZXN0LCBOb2RlTXVzdEdlbmVyYXRlKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPcGVyYXRpb25zLmNwcAppbmRleCAyZmQ1ZGJkYzdmYzRjY2E4NmZhZTEwOTIyN2FjMTc1N2Zk
Y2RmOTZjLi5iYzM1NjYxM2QzZjUyMTgwODIzOGU1MjY4MTM1YWFiMDliZTY3ZjBlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKQEAgLTQxLDggKzQxLDkg
QEAKICNpbmNsdWRlICJEaXJlY3RBcmd1bWVudHMuaCIKICNpbmNsdWRlICJGVExGb3JPU1JFbnRy
eUpJVENvZGUuaCIKICNpbmNsdWRlICJGVExPU1JFbnRyeS5oIgotI2luY2x1ZGUgIkhvc3RDYWxs
UmV0dXJuVmFsdWUuaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JGcmFtZS5oIgogI2luY2x1ZGUgIkdl
dHRlclNldHRlci5oIgorI2luY2x1ZGUgIkhvc3RDYWxsUmV0dXJuVmFsdWUuaCIKICNpbmNsdWRl
ICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUgIkpJVEV4Y2VwdGlv
bnMuaCIKQEAgLTgxNyw2ICs4MTgsMTEgQEAgY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25O
ZXdGbG9hdDY0QXJyYXlXaXRoT25lQXJndW1lbnQoCiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHM8SlNG
bG9hdDY0QXJyYXk+KGV4ZWMsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBOdWxsb3B0KSk7
CiB9CiAKK2NoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3R2VuZXJhdG9yRnJhbWUoRXhl
Y1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBudW1iZXJPZkNhbGxl
ZUxvY2FscykKK3sKKyAgICByZXR1cm4gYml0d2lzZV9jYXN0PGNoYXIqPihHZW5lcmF0b3JGcmFt
ZTo6Y3JlYXRlKGV4ZWMtPnZtKCksIHN0cnVjdHVyZSwgbnVtYmVyT2ZDYWxsZWVMb2NhbHMpKTsK
K30KKwogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZUFjdGl2YXRpb25EaXJl
Y3QoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNTY29wZSogc2NvcGUs
IFN5bWJvbFRhYmxlKiB0YWJsZSwgRW5jb2RlZEpTVmFsdWUgaW5pdGlhbFZhbHVlRW5jb2RlZCkK
IHsKICAgICBKU1ZhbHVlIGluaXRpYWxWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShpbml0aWFsVmFs
dWVFbmNvZGVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3Bl
cmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKaW5k
ZXggNDA5NjI5ZmY1ZDUzYTdiZTM4N2E2MjM2NDU1ZDY4MTZhYzA4NWVjOS4uZTQ0M2JhMjgyMzcy
ZmJjY2UyYmFjNWIwOWEzNjdiZDUyYzhlNzVmMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPcGVyYXRpb25zLmgKQEAgLTgyLDYgKzgyLDcgQEAKIGNoYXIqIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uTmV3RmxvYXQzMkFycmF5V2l0aE9uZUFyZ3VtZW50KEV4ZWNTdGF0ZSosIFN0cnVj
dHVyZSosIEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7CiBjaGFyKiBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbk5ld0Zsb2F0NjRBcnJheVdpdGhTaXplKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSos
IGludDMyX3QpIFdURl9JTlRFUk5BTDsKIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3
RmxvYXQ2NEFycmF5V2l0aE9uZUFyZ3VtZW50KEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSosIEVuY29k
ZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7CitjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5l
d0dlbmVyYXRvckZyYW1lKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSosIGludDMyX3QpIFdURl9JTlRF
Uk5BTDsKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbFN0cmljdChFeGVjU3Rh
dGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFBy
b3BlcnR5LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpIFdURl9JTlRFUk5BTDsKIHZvaWQg
SklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbE5vblN0cmljdChFeGVjU3RhdGUqLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFByb3BlcnR5LCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpIFdURl9JTlRFUk5BTDsKIHZvaWQgSklUX09QRVJB
VElPTiBvcGVyYXRpb25QdXRCeVZhbENlbGxTdHJpY3QoRXhlY1N0YXRlKiwgSlNDZWxsKiwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFByb3BlcnR5LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUp
IFdURl9JTlRFUk5BTDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKaW5kZXggNTc5OThjZmUxODFhOGZj
ZjljYzY1MTQzNTFhYzU4MGI4MGU3ZmI4YS4uMWI4ZTE5MjgwMTEwYzk1MDk4ZDMwOWRjMTc2YTgw
YTFkNzZmNjc4NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVk
aWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKQEAgLTE2MCw2ICsxNjAsMjQgQEAg
Y2xhc3MgUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAg
ICAgICAgY2hhbmdlZCB8PSB2YXJpYWJsZUFjY2Vzc0RhdGEtPnByZWRpY3Qobm9kZS0+Y2hpbGQx
KCktPnByZWRpY3Rpb24oKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorCisgICAg
ICAgIGNhc2UgU2V0R2VuZXJhdG9yTG9jYWw6IHsKKyAgICAgICAgICAgIEdlbmVyYXRvckxvY2Fs
RGF0YSogZ2VuZXJhdG9yTG9jYWxEYXRhID0gbm9kZS0+Z2VuZXJhdG9yTG9jYWxEYXRhKCk7Cisg
ICAgICAgICAgICBjaGFuZ2VkIHw9IGdlbmVyYXRvckxvY2FsRGF0YS0+cHJlZGljdChub2RlLT5j
aGlsZDIoKS0+cHJlZGljdGlvbigpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisK
KyAgICAgICAgY2FzZSBHZXRHZW5lcmF0b3JMb2NhbDogeworICAgICAgICAgICAgR2VuZXJhdG9y
TG9jYWxEYXRhKiBnZW5lcmF0b3JMb2NhbERhdGEgPSBub2RlLT5nZW5lcmF0b3JMb2NhbERhdGEo
KTsKKyAgICAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24gPSBnZW5lcmF0b3JMb2Nh
bERhdGEtPnByZWRpY3Rpb24oKTsKKyAgICAgICAgICAgIC8vIFdlIGFsd2F5cyBzdG9yZSB0aGUg
dmFsdWUgaW4gR2VuZXJhdG9yTG9jYWwgYXMgRm9ybWF0SlNWYWx1ZS4KKyAgICAgICAgICAgIC8v
IFNvIGRvdWJsZSB2YWx1ZSBpcyBiZXR0ZXIgdGhhbiBJbnQ1MiB2YWx1ZS4KKyAgICAgICAgICAg
IGlmIChwcmVkaWN0aW9uICYgU3BlY0ludDUyKQorICAgICAgICAgICAgICAgIHByZWRpY3Rpb24g
PSAocHJlZGljdGlvbiB8IFNwZWNJbnQ1MkFzRG91YmxlKSAmIH5TcGVjSW50NTI7CisgICAgICAg
ICAgICBpZiAocHJlZGljdGlvbikKKyAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJl
ZGljdGlvbihwcmVkaWN0aW9uKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAg
ICAgICAgICAKICAgICAgICAgY2FzZSBCaXRBbmQ6CiAgICAgICAgIGNhc2UgQml0T3I6CkBAIC01
MjQsNyArNTQyLDggQEAgY2xhc3MgUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UgOiBwdWJsaWMg
UGhhc2UgewogICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBOZXdSZWdleHA6
Ci0gICAgICAgIGNhc2UgQ3JlYXRlQWN0aXZhdGlvbjogeworICAgICAgICBjYXNlIENyZWF0ZUFj
dGl2YXRpb246CisgICAgICAgIGNhc2UgTmV3R2VuZXJhdG9yRnJhbWU6IHsKICAgICAgICAgICAg
IGNoYW5nZWQgfD0gc2V0UHJlZGljdGlvbihTcGVjT2JqZWN0T3RoZXIpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KQEAgLTcxNiw2ICs3MzUsNyBAQCBjbGFzcyBQcmVkaWN0aW9uUHJv
cGFnYXRpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgIGNhc2UgRXhpdE9LOgogICAg
ICAgICBjYXNlIExvYWRWYXJhcmdzOgogICAgICAgICBjYXNlIENvcHlSZXN0OgorICAgICAgICBj
YXNlIFB1dEdlbmVyYXRvckZyYW1lTG9jYWxzOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICAKICAgICAgICAgLy8gVGhpcyBnZXRzIGlnbm9yZWQgYmVjYXVzZSBpdCBvbmx5IHByZXRl
bmRzIHRvIHByb2R1Y2UgYSB2YWx1ZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
YWZlVG9FeGVjdXRlLmgKaW5kZXggMjMwZWZlZGM0ODMxNTEyYmFjNTY4YmVlZmRiMjc2OTYxODcy
MDk0Yy4uN2JkZWMzYjUzZTIzMDQyOGJlYzlkYWMxMDM1ZjBhNGQwNGQ4YTYxYSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKQEAgLTIzNyw2ICsyMzcs
NyBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0YXRlLCBHcmFwaCYg
Z3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBOZXdBcnJheVdpdGhTaXplOgogICAgIGNhc2Ug
TmV3QXJyYXlCdWZmZXI6CiAgICAgY2FzZSBOZXdSZWdleHA6CisgICAgY2FzZSBOZXdHZW5lcmF0
b3JGcmFtZToKICAgICBjYXNlIEJyZWFrcG9pbnQ6CiAgICAgY2FzZSBQcm9maWxlV2lsbENhbGw6
CiAgICAgY2FzZSBQcm9maWxlRGlkQ2FsbDoKQEAgLTMyOCw2ICszMjksOSBAQCBib29sIHNhZmVU
b0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgsIE5vZGUqIG5v
ZGUpCiAgICAgY2FzZSBHZXRNeUFyZ3VtZW50QnlWYWw6CiAgICAgY2FzZSBGb3J3YXJkVmFyYXJn
czoKICAgICBjYXNlIENvcHlSZXN0OgorICAgIGNhc2UgU2V0R2VuZXJhdG9yTG9jYWw6CisgICAg
Y2FzZSBHZXRHZW5lcmF0b3JMb2NhbDoKKyAgICBjYXNlIFB1dEdlbmVyYXRvckZyYW1lTG9jYWxz
OgogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIGNhc2UgQm90dG9tVmFsdWU6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4IGNjY2U3
OTE5OTUxNDVlOTFlZmQyMDA4OGM5NmI3YWY4MmI1NjE2ZDYuLjY1MWJjYzc5ZGNlMGUxM2U1NWMz
MzBmMjViODMxNDI0M2RlY2M4ODcgMTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSAiREZHU2Fu
ZVN0cmluZ0dldEJ5VmFsU2xvd1BhdGhHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJERkdTbG93UGF0
aEdlbmVyYXRvci5oIgogI2luY2x1ZGUgIkRpcmVjdEFyZ3VtZW50cy5oIgorI2luY2x1ZGUgIkdl
bmVyYXRvckZyYW1lLmgiCiAjaW5jbHVkZSAiSklUQWRkR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAi
SklUQml0QW5kR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiSklUQml0T3JHZW5lcmF0b3IuaCIKQEAg
LTYzNzgsNiArNjM3OSwzNCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3U3RyaW5n
T2JqZWN0KE5vZGUqIG5vZGUpCiAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogfQog
Cit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3R2VuZXJhdG9yRnJhbWUoTm9kZSogbm9k
ZSkKK3sKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9qaXQuZ3JhcGgoKS5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSA9IGdsb2JhbE9iamVjdC0+Z2VuZXJhdG9yRnJhbWVTdHJ1Y3R1cmUoKTsKKyAgICB1
bnNpZ25lZCBnZW5lcmF0b3JMb2NhbHNTaXplID0gbm9kZS0+Z2VuZXJhdG9yTG9jYWxzU2l6ZSgp
OworCisgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKyAgICBHUFJUZW1wb3Jhcnkgc2Ny
YXRjaDEodGhpcyk7CisgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2gyKHRoaXMpOworCisgICAgR1BS
UmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKyAgICBHUFJSZWcgc2NyYXRjaDFHUFIgPSBz
Y3JhdGNoMS5ncHIoKTsKKyAgICBHUFJSZWcgc2NyYXRjaDJHUFIgPSBzY3JhdGNoMi5ncHIoKTsK
KworICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93UGF0aDsKKworICAgIGVtaXRBbGxvY2F0
ZUpTT2JqZWN0V2l0aEtub3duU2l6ZTxHZW5lcmF0b3JGcmFtZT4ocmVzdWx0R1BSLCBUcnVzdGVk
SW1tUHRyKHN0cnVjdHVyZSksIFRydXN0ZWRJbW1QdHIobnVsbHB0ciksIHNjcmF0Y2gxR1BSLCBz
Y3JhdGNoMkdQUiwgc2xvd1BhdGgsIEdlbmVyYXRvckZyYW1lOjphbGxvY2F0aW9uU2l6ZUZvckxv
Y2FscyhnZW5lcmF0b3JMb2NhbHNTaXplKSk7CisgICAgbV9qaXQuc3RvcmUzMihUcnVzdGVkSW1t
MzIoZ2VuZXJhdG9yTG9jYWxzU2l6ZSksIEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwg
R2VuZXJhdG9yRnJhbWU6Om51bWJlck9mQ2FsbGVlTG9jYWxzT2Zmc2V0KCkpKTsKKyAgICBtX2pp
dC5zdG9yZTMyKFRydXN0ZWRJbW0zMigwKSwgSklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0R1BS
LCBHZW5lcmF0b3JGcmFtZTo6bnVtYmVyT2ZTYXZlZENhbGxlZUxvY2Fsc09mZnNldCgpKSk7Cisg
ICAgSlNWYWx1ZSBlbXB0eVZhbHVlOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBnZW5l
cmF0b3JMb2NhbHNTaXplOyArK2kpCisgICAgICAgIG1faml0LnN0b3JlVHJ1c3RlZFZhbHVlKGVt
cHR5VmFsdWUsIEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgR2VuZXJhdG9yRnJhbWU6
OmxvY2FsT2Zmc2V0KGkpKSk7CisKKyAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENh
bGwoc2xvd1BhdGgsIHRoaXMsIG9wZXJhdGlvbk5ld0dlbmVyYXRvckZyYW1lLCByZXN1bHRHUFIs
IHN0cnVjdHVyZSwgZ2VuZXJhdG9yTG9jYWxzU2l6ZSkpOworCisgICAgY2VsbFJlc3VsdChyZXN1
bHRHUFIsIG5vZGUpOworfQorCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3VHlwZWRB
cnJheShOb2RlKiBub2RlKQogewogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBt
X2ppdC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCmluZGV4IDUzMTJj
OGRiZWRmZWQxODAwNTQzODExMzA3OWVlYjBiMGU5OTA4YWIuLjU3Mzk4MTU3OGYyNGY1YjMwMjU5
ZjJhYzAyNTUyZmQ0MDhmZTdhZTAgMTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmgKQEAgLTIyODEsNiArMjI4MSw3IEBAIGNsYXNzIFNwZWN1bGF0aXZl
SklUIHsKICAgICB2b2lkIGNvbXBpbGVQdXRCeVZhbEZvckZsb2F0VHlwZWRBcnJheShHUFJSZWcg
YmFzZSwgR1BSUmVnIHByb3BlcnR5LCBOb2RlKiwgVHlwZWRBcnJheVR5cGUpOwogICAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBDbGFzc1R5cGU+IHZvaWQgY29tcGlsZU5ld0Z1bmN0aW9uQ29tbW9uKEdQ
UlJlZywgU3RydWN0dXJlKiwgR1BSUmVnLCBHUFJSZWcsIEdQUlJlZywgTWFjcm9Bc3NlbWJsZXI6
Okp1bXBMaXN0Jiwgc2l6ZV90LCBGdW5jdGlvbkV4ZWN1dGFibGUqLCBwdHJkaWZmX3QsIHB0cmRp
ZmZfdCwgcHRyZGlmZl90KTsKICAgICB2b2lkIGNvbXBpbGVOZXdGdW5jdGlvbihOb2RlKik7Cisg
ICAgdm9pZCBjb21waWxlTmV3R2VuZXJhdG9yRnJhbWUoTm9kZSopOwogICAgIHZvaWQgY29tcGls
ZUZvcndhcmRWYXJhcmdzKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVDcmVhdGVBY3RpdmF0aW9u
KE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVDcmVhdGVEaXJlY3RBcmd1bWVudHMoTm9kZSopOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMy
XzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82
NC5jcHAKaW5kZXggMTJlYjUwNDExODBhYzJmNTAxNjRmOTUxYjA1OGVkYjYyZDIyODI3MC4uMzEw
M2FkNTlmZjIwNDFhNzRkMTJlYThiODNhYzE3NzMzZWY3YzZlOSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCkBAIC0zNjUw
LDYgKzM2NTAsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQog
ICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdFBheWxvYWQuZ3ByKCksIG5vZGUpOwogICAgICAgICBi
cmVhazsKICAgICB9CisKKyAgICBjYXNlIE5ld0dlbmVyYXRvckZyYW1lOiB7CisgICAgICAgIGNv
bXBpbGVOZXdHZW5lcmF0b3JGcmFtZShub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogICAg
ICAgICAKICAgICBjYXNlIFRvVGhpczogewogICAgICAgICBBU1NFUlQobm9kZS0+Y2hpbGQxKCku
dXNlS2luZCgpID09IFVudHlwZWRVc2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKaW5kZXggZTc0NTY5NDA0YzFiOTc4NDgwNjE5N2Qx
NDU0NWNkMWRiMjNkN2E1Yy4uODk0MDJmMWUzNjgyMzk4NzgwNTE5NzQ2ZDRiYTcxZjQ2ZDFlN2Yw
OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
NjQuY3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiREZHU2xvd1BhdGhHZW5lcmF0b3Iu
aCIKICNpbmNsdWRlICJEZWJ1Z2dlci5oIgogI2luY2x1ZGUgIkRpcmVjdEFyZ3VtZW50cy5oIgor
I2luY2x1ZGUgIkdlbmVyYXRvckZyYW1lLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAj
aW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTRW52aXJvbm1lbnRSZWNvcmQuaCIK
QEAgLTM2ODgsNiArMzY4OSwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUq
IG5vZGUpCiAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0LmdwcigpLCBub2RlKTsKICAgICAgICAg
YnJlYWs7CiAgICAgfQorCisgICAgY2FzZSBOZXdHZW5lcmF0b3JGcmFtZTogeworICAgICAgICBj
b21waWxlTmV3R2VuZXJhdG9yRnJhbWUobm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KICAg
ICAgICAgCiAgICAgY2FzZSBUb1RoaXM6IHsKICAgICAgICAgQVNTRVJUKG5vZGUtPmNoaWxkMSgp
LnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKTsKQEAgLTQ3MjAsNiArNDcyNiwzOCBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGNlbGxSZXN1bHQocmVz
dWx0R1BSLCBub2RlKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQorICAgIGNhc2UgU2V0R2VuZXJh
dG9yTG9jYWw6IHsKKyAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgZnJhbWUodGhpcywgbm9k
ZS0+Y2hpbGQxKCkpOworICAgICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5j
aGlsZDIoKSk7CisKKyAgICAgICAgR1BSUmVnIGZyYW1lR1BSID0gZnJhbWUuZ3ByKCk7CisgICAg
ICAgIEdQUlJlZyB2YWx1ZUdQUiA9IHZhbHVlLmdwcigpOworICAgICAgICB1bnNpZ25lZCBnZW5l
cmF0b3JGcmFtZUluZGV4ID0gbm9kZS0+Z2VuZXJhdG9yRnJhbWVJbmRleCgpOworCisgICAgICAg
IG1faml0LnN0b3JlNjQodmFsdWVHUFIsIEpJVENvbXBpbGVyOjpBZGRyZXNzKGZyYW1lR1BSLCBH
ZW5lcmF0b3JGcmFtZTo6bG9jYWxPZmZzZXQoZ2VuZXJhdG9yRnJhbWVJbmRleCkpKTsKKworICAg
ICAgICBub1Jlc3VsdChub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgR2V0
R2VuZXJhdG9yTG9jYWw6IHsKKyAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgZnJhbWUodGhp
cywgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwor
CisgICAgICAgIEdQUlJlZyBmcmFtZUdQUiA9IGZyYW1lLmdwcigpOworICAgICAgICBHUFJSZWcg
cmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOworICAgICAgICB1bnNpZ25lZCBnZW5lcmF0b3JGcmFt
ZUluZGV4ID0gbm9kZS0+Z2VuZXJhdG9yRnJhbWVJbmRleCgpOworCisgICAgICAgIG1faml0Lmxv
YWQ2NChKSVRDb21waWxlcjo6QWRkcmVzcyhmcmFtZUdQUiwgR2VuZXJhdG9yRnJhbWU6OmxvY2Fs
T2Zmc2V0KGdlbmVyYXRvckZyYW1lSW5kZXgpKSwgcmVzdWx0R1BSKTsKKyAgICAgICAganNWYWx1
ZVJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2Fz
ZSBQdXRHZW5lcmF0b3JGcmFtZUxvY2FsczogeworICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFu
ZCBmcmFtZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIEdQUlJlZyBmcmFtZUdQUiA9
IGZyYW1lLmdwcigpOworICAgICAgICBtX2ppdC5zdG9yZTMyKFRydXN0ZWRJbW0zMihub2RlLT5n
ZW5lcmF0b3JGcmFtZUxvY2FscygpKSwgSklUQ29tcGlsZXI6OkFkZHJlc3MoZnJhbWVHUFIsIEdl
bmVyYXRvckZyYW1lOjpudW1iZXJPZlNhdmVkQ2FsbGVlTG9jYWxzT2Zmc2V0KCkpKTsKKyAgICAg
ICAgbm9SZXN1bHQobm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICBjYXNlIFByb2Zp
bGVUeXBlOiB7CiAgICAgICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxk
MSgpKTsKICAgICAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2gxKHRoaXMpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBo
YXNlLmNwcAppbmRleCA3MmYyMjAwY2VhMTBiOTgxMGRiYThjN2IxOWZlZmYyNGRhYTVkYWUzLi5k
N2M3MDU2NmZjNzM3Zjg5MGYxNTZiNTM0NTA5ZDlhMGMwNzM4ZTliIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBo
YXNlLmNwcApAQCAtMjgxLDYgKzI4MSwxMSBAQCBjbGFzcyBTdG9yZUJhcnJpZXJJbnNlcnRpb25Q
aGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICAgICAgY29uc2lkZXJCYXJyaWVyKG1f
bm9kZS0+Y2hpbGQxKCksIG1fbm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgfQorCisgICAgICAgICAgICBjYXNlIFNldEdlbmVyYXRvckxvY2FsOiB7
CisgICAgICAgICAgICAgICAgY29uc2lkZXJCYXJyaWVyKG1fbm9kZS0+Y2hpbGQxKCksIG1fbm9k
ZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgIAogICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICBicmVh
azsKQEAgLTI5Niw2ICszMDEsNyBAQCBjbGFzcyBTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZSA6
IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICBjYXNlIE5ld0FycmF5QnVmZmVyOgogICAgICAg
ICAgICAgY2FzZSBOZXdUeXBlZEFycmF5OgogICAgICAgICAgICAgY2FzZSBOZXdSZWdleHA6Cisg
ICAgICAgICAgICBjYXNlIE5ld0dlbmVyYXRvckZyYW1lOgogICAgICAgICAgICAgY2FzZSBNYXRl
cmlhbGl6ZU5ld09iamVjdDoKICAgICAgICAgICAgIGNhc2UgTWF0ZXJpYWxpemVDcmVhdGVBY3Rp
dmF0aW9uOgogICAgICAgICAgICAgY2FzZSBOZXdTdHJpbmdPYmplY3Q6CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RydWN0dXJlUmVnaXN0cmF0aW9uUGhh
c2UuY3BwCmluZGV4IDJjMDU1OTg0OTg5OWJkZjZmYjExMTc1OTdlMTA1NGJmZjM1NDY2OTMuLmUx
YWVmMGIyYzM5M2Y1NjE5NDhjY2E1YTk1OWYyZTA3MTA4ODQzODggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2UuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RydWN0dXJlUmVnaXN0cmF0aW9uUGhh
c2UuY3BwCkBAIC0xNDksNiArMTQ5LDkgQEAgY2xhc3MgU3RydWN0dXJlUmVnaXN0cmF0aW9uUGhh
c2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgICAgIGNhc2UgTmV3R2VuZXJhdG9yRnVu
Y3Rpb246CiAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyU3RydWN0dXJlKG1fZ3JhcGguZ2xv
YmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyktPmdlbmVyYXRvckZ1bmN0aW9uU3Ry
dWN0dXJlKCkpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBj
YXNlIE5ld0dlbmVyYXRvckZyYW1lOgorICAgICAgICAgICAgICAgICAgICByZWdpc3RlclN0cnVj
dHVyZShtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5nZW5l
cmF0b3JGcmFtZVN0cnVjdHVyZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExB
YnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
QWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAKaW5kZXggOTdjMDc4NGJiNDJiYzkxOWQwNmNmNTIz
YzQxZTAyNDZhNTM1MWQ5MS4uNjlkODlkNmFkNDI1NDkyM2JjM2ZhYjNjN2FjYTIwODk1YzU1ZTVj
YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBS
ZXBvc2l0b3J5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0
SGVhcFJlcG9zaXRvcnkuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJEaXJlY3RB
cmd1bWVudHMuaCIKICNpbmNsdWRlICJGVExBYmJyZXZpYXRpb25zLmgiCisjaW5jbHVkZSAiR2Vu
ZXJhdG9yRnJhbWUuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJKU0Vu
dmlyb25tZW50UmVjb3JkLmgiCiAjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmgi
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJl
cG9zaXRvcnkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVw
b3NpdG9yeS5oCmluZGV4IDc3ZTU3OTg2OTQwYzZhYzk2Zjg3ZjFmOTQ1YzQ2MjUxMjg4NjMwZjAu
LjQ4ODYzYzBiZDMwZjY0NTc2NTMxMDhiZjQ1NjliMTJjOTQwODU4YWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCkBA
IC00Nyw2ICs0Nyw4IEBACiAgICAgbWFjcm8oRGlyZWN0QXJndW1lbnRzX2xlbmd0aCwgRGlyZWN0
QXJndW1lbnRzOjpvZmZzZXRPZkxlbmd0aCgpKSBcCiAgICAgbWFjcm8oRGlyZWN0QXJndW1lbnRz
X21pbkNhcGFjaXR5LCBEaXJlY3RBcmd1bWVudHM6Om9mZnNldE9mTWluQ2FwYWNpdHkoKSkgXAog
ICAgIG1hY3JvKERpcmVjdEFyZ3VtZW50c19vdmVycmlkZXMsIERpcmVjdEFyZ3VtZW50czo6b2Zm
c2V0T2ZPdmVycmlkZXMoKSkgXAorICAgIG1hY3JvKEdlbmVyYXRvckZyYW1lX251bWJlck9mQ2Fs
bGVlTG9jYWxzLCBHZW5lcmF0b3JGcmFtZTo6bnVtYmVyT2ZDYWxsZWVMb2NhbHNPZmZzZXQoKSkg
XAorICAgIG1hY3JvKEdlbmVyYXRvckZyYW1lX251bWJlck9mU2F2ZWRDYWxsZWVMb2NhbHMsIEdl
bmVyYXRvckZyYW1lOjpudW1iZXJPZlNhdmVkQ2FsbGVlTG9jYWxzT2Zmc2V0KCkpIFwKICAgICBt
YWNybyhHZXR0ZXJTZXR0ZXJfZ2V0dGVyLCBHZXR0ZXJTZXR0ZXI6Om9mZnNldE9mR2V0dGVyKCkp
IFwKICAgICBtYWNybyhHZXR0ZXJTZXR0ZXJfc2V0dGVyLCBHZXR0ZXJTZXR0ZXI6Om9mZnNldE9m
U2V0dGVyKCkpIFwKICAgICBtYWNybyhKU0FycmF5QnVmZmVyVmlld19sZW5ndGgsIEpTQXJyYXlC
dWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSBcCkBAIC05MSw2ICs5Myw3IEBACiAKICNkZWZp
bmUgRk9SX0VBQ0hfSU5ERVhFRF9BQlNUUkFDVF9IRUFQKG1hY3JvKSBcCiAgICAgbWFjcm8oRGly
ZWN0QXJndW1lbnRzX3N0b3JhZ2UsIERpcmVjdEFyZ3VtZW50czo6c3RvcmFnZU9mZnNldCgpLCBz
aXplb2YoRW5jb2RlZEpTVmFsdWUpKSBcCisgICAgbWFjcm8oR2VuZXJhdG9yRnJhbWVfY2FsbGVl
TG9jYWxzLCBHZW5lcmF0b3JGcmFtZTo6b2Zmc2V0T2ZMb2NhbHMoKSwgc2l6ZW9mKFdyaXRlQmFy
cmllcjxVbmtub3duPikpIFwKICAgICBtYWNybyhKU0Vudmlyb25tZW50UmVjb3JkX3ZhcmlhYmxl
cywgSlNFbnZpcm9ubWVudFJlY29yZDo6b2Zmc2V0T2ZWYXJpYWJsZXMoKSwgc2l6ZW9mKEVuY29k
ZWRKU1ZhbHVlKSkgXAogICAgIG1hY3JvKEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcl9jYWNoZWRQ
cm9wZXJ0eU5hbWVzVmVjdG9yQ29udGVudHMsIDAsIHNpemVvZihXcml0ZUJhcnJpZXI8SlNTdHJp
bmc+KSkgXAogICAgIG1hY3JvKEpTUm9wZVN0cmluZ19maWJlcnMsIEpTUm9wZVN0cmluZzo6b2Zm
c2V0T2ZGaWJlcnMoKSwgc2l6ZW9mKFdyaXRlQmFycmllcjxKU1N0cmluZz4pKSBcCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKaW5kZXggZDJhNDkwYzJh
NjdlNmRiOGI5YTVhNzk2NjRlNTY1ZTNkNmQ5NTFkYy4uMTdiNGUyZGI1ZjZhMWNjMDAzZjg4MGM3
ZWE0YzYwMGFiOGFjODY3OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2Fw
YWJpbGl0aWVzLmNwcApAQCAtNzIsNiArNzIsNyBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNh
bkNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIE5ld09iamVjdDoKICAgICBjYXNlIE5ld0Fy
cmF5OgogICAgIGNhc2UgTmV3QXJyYXlCdWZmZXI6CisgICAgY2FzZSBOZXdHZW5lcmF0b3JGcmFt
ZToKICAgICBjYXNlIEdldEJ5T2Zmc2V0OgogICAgIGNhc2UgR2V0R2V0dGVyU2V0dGVyQnlPZmZz
ZXQ6CiAgICAgY2FzZSBHZXRHZXR0ZXI6CkBAIC0yMTYsNiArMjE3LDkgQEAgaW5saW5lIENhcGFi
aWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBQdXRTZXR0ZXJCeVZh
bDoKICAgICBjYXNlIENvcHlSZXN0OgogICAgIGNhc2UgR2V0UmVzdExlbmd0aDoKKyAgICBjYXNl
IFNldEdlbmVyYXRvckxvY2FsOgorICAgIGNhc2UgR2V0R2VuZXJhdG9yTG9jYWw6CisgICAgY2Fz
ZSBQdXRHZW5lcmF0b3JGcmFtZUxvY2FsczoKICAgICAgICAgLy8gVGhlc2UgYXJlIE9LLgogICAg
ICAgICBicmVhazsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExM
b3dlckRGR1RvTExWTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZH
VG9MTFZNLmNwcAppbmRleCAzN2NhZTVjMTdhZDljNzFkMDE4ZDQxYmI2ZTlhNjZjOTE3Nzk2NmYy
Li5kMzRmOGNmMGZjNjA4MWU5ZWJhZTQyZGQ4M2ZhOTc2ZTNiZGE3NTRjIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcApAQCAtNTMsNiArNTMs
NyBAQAogI2luY2x1ZGUgIkZUTFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGUuaCIKICNpbmNsdWRl
ICJGVExUaHVua3MuaCIKICNpbmNsdWRlICJGVExXZWlnaHRlZFRhcmdldC5oIgorI2luY2x1ZGUg
IkdlbmVyYXRvckZyYW1lLmgiCiAjaW5jbHVkZSAiSklUQWRkR2VuZXJhdG9yLmgiCiAjaW5jbHVk
ZSAiSklUQml0QW5kR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiSklUQml0T3JHZW5lcmF0b3IuaCIK
QEAgLTgzOSw2ICs4NDAsOSBAQCBjbGFzcyBMb3dlckRGR1RvTExWTSB7CiAgICAgICAgIGNhc2Ug
TmV3QXJyYXlXaXRoU2l6ZToKICAgICAgICAgICAgIGNvbXBpbGVOZXdBcnJheVdpdGhTaXplKCk7
CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBOZXdHZW5lcmF0b3JGcmFtZToKKyAg
ICAgICAgICAgIGNvbXBpbGVOZXdHZW5lcmF0b3JGcmFtZSgpOworICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQ6CiAgICAgICAgICAgICBjb21w
aWxlR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQoKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTA3
MSw2ICsxMDc1LDE1IEBAIGNsYXNzIExvd2VyREZHVG9MTFZNIHsKICAgICAgICAgY2FzZSBHZXRS
ZXN0TGVuZ3RoOgogICAgICAgICAgICAgY29tcGlsZUdldFJlc3RMZW5ndGgoKTsKICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIFB1dEdlbmVyYXRvckZyYW1lTG9jYWxzOgorICAgICAg
ICAgICAgY29tcGlsZVB1dEdlbmVyYXRvckZyYW1lTG9jYWxzKCk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBTZXRHZW5lcmF0b3JMb2NhbDoKKyAgICAgICAgICAgIGNvbXBpbGVT
ZXRHZW5lcmF0b3JMb2NhbCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR2V0
R2VuZXJhdG9yTG9jYWw6CisgICAgICAgICAgICBjb21waWxlR2V0R2VuZXJhdG9yTG9jYWwoKTsK
KyAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgUGhhbnRvbUxvY2FsOgogICAgICAg
ICBjYXNlIExvb3BIaW50OgpAQCAtMzkxNiw2ICszOTI5LDI4IEBAIGNsYXNzIExvd2VyREZHVG9M
TFZNIHsKICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7CiAg
ICAgICAgIHNldEludDMyKG1fb3V0LnBoaShtX291dC5pbnQzMiwgemVyb0xlbmd0aFJlc3VsdCwg
bm9uWmVyb0xlbmd0aFJlc3VsdCkpOwogICAgIH0KKworICAgIHZvaWQgY29tcGlsZVB1dEdlbmVy
YXRvckZyYW1lTG9jYWxzKCkKKyAgICB7CisgICAgICAgIExWYWx1ZSBmcmFtZSA9IGxvd0NlbGwo
bV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIG1fb3V0LnN0b3JlMzIobV9vdXQuY29uc3RJbnQz
MihtX25vZGUtPmdlbmVyYXRvckZyYW1lTG9jYWxzKCkpLCBmcmFtZSwgbV9oZWFwcy5HZW5lcmF0
b3JGcmFtZV9udW1iZXJPZlNhdmVkQ2FsbGVlTG9jYWxzKTsKKyAgICB9CisKKyAgICB2b2lkIGNv
bXBpbGVTZXRHZW5lcmF0b3JMb2NhbCgpCisgICAgeworICAgICAgICBtX291dC5zdG9yZTY0KAor
ICAgICAgICAgICAgbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMigpKSwKKyAgICAgICAgICAgIGxv
d0NlbGwobV9ub2RlLT5jaGlsZDEoKSksCisgICAgICAgICAgICBtX2hlYXBzLkdlbmVyYXRvckZy
YW1lX2NhbGxlZUxvY2Fsc1ttX25vZGUtPmdlbmVyYXRvckZyYW1lSW5kZXgoKV0pOworICAgIH0K
KworICAgIHZvaWQgY29tcGlsZUdldEdlbmVyYXRvckxvY2FsKCkKKyAgICB7CisgICAgICAgIHNl
dEpTVmFsdWUoCisgICAgICAgICAgICBtX291dC5sb2FkNjQoCisgICAgICAgICAgICAgICAgbG93
Q2VsbChtX25vZGUtPmNoaWxkMSgpKSwKKyAgICAgICAgICAgICAgICBtX2hlYXBzLkdlbmVyYXRv
ckZyYW1lX2NhbGxlZUxvY2Fsc1ttX25vZGUtPmdlbmVyYXRvckZyYW1lSW5kZXgoKV0pKTsKKyAg
ICB9CiAgICAgCiAgICAgdm9pZCBjb21waWxlTmV3T2JqZWN0KCkKICAgICB7CkBAIC00MTUwLDYg
KzQxODUsNDIgQEAgY2xhc3MgTG93ZXJERkdUb0xMVk0gewogICAgICAgICAgICAgbV9vdXQuY29u
c3RJbnRQdHIoc3RydWN0dXJlKSk7CiAgICAgICAgIHNldEpTVmFsdWUodm1DYWxsKG1fb3V0Lmlu
dDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uTmV3QXJyYXlXaXRoU2l6ZSksIG1fY2FsbEZy
YW1lLCBzdHJ1Y3R1cmVWYWx1ZSwgcHVibGljTGVuZ3RoKSk7CiAgICAgfQorCisgICAgdm9pZCBj
b21waWxlTmV3R2VuZXJhdG9yRnJhbWUoKQorICAgIHsKKyAgICAgICAgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNl
bWFudGljKTsKKyAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBnbG9iYWxPYmplY3QtPmdl
bmVyYXRvckZyYW1lU3RydWN0dXJlKCk7CisgICAgICAgIHVuc2lnbmVkIGdlbmVyYXRvckxvY2Fs
c1NpemUgPSBtX25vZGUtPmdlbmVyYXRvckxvY2Fsc1NpemUoKTsKKworICAgICAgICBMQmFzaWNC
bG9jayBzbG93UGF0aCA9IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgiTmV3R2VuZXJhdG9yRnJhbWUg
c2xvdyBwYXRoIikpOworICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBGVExfTkVX
X0JMT0NLKG1fb3V0LCAoIk5ld0dlbmVyYXRvckZyYW1lIGNvbnRpbnVhdGlvbiIpKTsKKworICAg
ICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0Lmluc2VydE5ld0Jsb2Nrc0JlZm9yZShz
bG93UGF0aCk7CisgICAgICAgIExWYWx1ZSBmYXN0T2JqZWN0ID0gYWxsb2NhdGVPYmplY3Q8R2Vu
ZXJhdG9yRnJhbWU+KEdlbmVyYXRvckZyYW1lOjphbGxvY2F0aW9uU2l6ZUZvckxvY2FscyhnZW5l
cmF0b3JMb2NhbHNTaXplKSwgc3RydWN0dXJlLCBtX291dC5pbnRQdHJaZXJvLCBzbG93UGF0aCk7
CisgICAgICAgIG1fb3V0LnN0b3JlMzIobV9vdXQuY29uc3RJbnQzMihnZW5lcmF0b3JMb2NhbHNT
aXplKSwgZmFzdE9iamVjdCwgbV9oZWFwcy5HZW5lcmF0b3JGcmFtZV9udW1iZXJPZkNhbGxlZUxv
Y2Fscyk7CisgICAgICAgIG1fb3V0LnN0b3JlMzIobV9vdXQuY29uc3RJbnQzMigwKSwgZmFzdE9i
amVjdCwgbV9oZWFwcy5HZW5lcmF0b3JGcmFtZV9udW1iZXJPZlNhdmVkQ2FsbGVlTG9jYWxzKTsK
KworICAgICAgICBKU1ZhbHVlIGVtcHR5VmFsdWU7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBnZW5lcmF0b3JMb2NhbHNTaXplOyArK2kpCisgICAgICAgICAgICBtX291dC5zdG9y
ZTY0KG1fb3V0LmNvbnN0SW50NjQoSlNWYWx1ZTo6ZW5jb2RlKGVtcHR5VmFsdWUpKSwgZmFzdE9i
amVjdCwgbV9oZWFwcy5HZW5lcmF0b3JGcmFtZV9jYWxsZWVMb2NhbHNbaV0pOworCisgICAgICAg
IFZhbHVlRnJvbUJsb2NrIGZhc3RSZXN1bHQgPSBtX291dC5hbmNob3IoZmFzdE9iamVjdCk7Cisg
ICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKworICAgICAgICBtX291dC5hcHBlbmRU
byhzbG93UGF0aCwgY29udGludWF0aW9uKTsKKyAgICAgICAgVmVjdG9yPExWYWx1ZT4gc2xvd1Bh
dGhBcmd1bWVudHM7CisgICAgICAgIExWYWx1ZSBjYWxsUmVzdWx0ID0gbGF6eVNsb3dQYXRoKAor
ICAgICAgICAgICAgWz1dIChjb25zdCBWZWN0b3I8TG9jYXRpb24+JiBsb2NhdGlvbnMpIC0+IFJl
ZlB0cjxMYXp5U2xvd1BhdGg6OkdlbmVyYXRvcj4geworICAgICAgICAgICAgICAgIHJldHVybiBj
cmVhdGVMYXp5Q2FsbEdlbmVyYXRvcigKKyAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uTmV3
R2VuZXJhdG9yRnJhbWUsCisgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uc1swXS5kaXJlY3RH
UFIoKSwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksIENDYWxsSGVscGVy
czo6VHJ1c3RlZEltbTMyKGdlbmVyYXRvckxvY2Fsc1NpemUpKTsKKyAgICAgICAgICAgIH0pOwor
ICAgICAgICBWYWx1ZUZyb21CbG9jayBzbG93UmVzdWx0ID0gbV9vdXQuYW5jaG9yKGNhbGxSZXN1
bHQpOworICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgbV9vdXQu
YXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7CisgICAgICAgIHNldEpTVmFsdWUobV9v
dXQucGhpKG1fb3V0LmludFB0ciwgZmFzdFJlc3VsdCwgc2xvd1Jlc3VsdCkpOworICAgIH0KICAg
ICAKICAgICB2b2lkIGNvbXBpbGVBbGxvY2F0ZVByb3BlcnR5U3RvcmFnZSgpCiAgICAgewpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVQuY3BwCmluZGV4IGEzYmRmYTdjZDVkMGY1NzI0N2YxYmU4YzQwYjI1
MTBkMjlkODAwZmYuLjBiOWZkOGQzNDNmZDhjZWIyN2FhZjdhMzk0MDA3MDQ2NDc0YzI2OGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKQEAgLTIxNiw3ICsyMTYsOSBAQCB2b2lkIEpJVDo6
cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9PUChvcF9jaGVja190ZHop
CiAgICAgICAgIERFRklORV9PUChvcF9hc3NlcnQpCiAgICAgICAgIERFRklORV9PUChvcF9zYXZl
KQotICAgICAgICBERUZJTkVfT1Aob3BfcmVzdW1lKQorICAgICAgICBERUZJTkVfT1Aob3BfbmV3
X2dlbmVyYXRvcl9mcmFtZSkKKyAgICAgICAgREVGSU5FX09QKG9wX3Jlc3VtZV9mcm9tX2dlbmVy
YXRvcl9mcmFtZSkKKyAgICAgICAgREVGSU5FX09QKG9wX2NsZWFyX2dlbmVyYXRvcl9mcmFtZSkK
ICAgICAgICAgREVGSU5FX09QKG9wX2RlYnVnKQogICAgICAgICBERUZJTkVfT1Aob3BfZGVsX2J5
X2lkKQogICAgICAgICBERUZJTkVfT1Aob3BfZGl2KQpAQCAtMjg5LDYgKzI5MSw3IEBAIHZvaWQg
SklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgREVGSU5FX09QKG9wX3B1dF9n
ZXR0ZXJfc2V0dGVyX2J5X2lkKQogICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2dldHRlcl9ieV92
YWwpCiAgICAgICAgIERFRklORV9PUChvcF9wdXRfc2V0dGVyX2J5X3ZhbCkKKyAgICAgICAgREVG
SU5FX09QKG9wX25vcCkKIAogICAgICAgICBERUZJTkVfT1Aob3BfcmV0KQogICAgICAgICBERUZJ
TkVfT1Aob3BfcnNoaWZ0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKaW5kZXggZGY3YjNkYzVlODky
MGVlNGVmOTJiY2FjYmFlZmYxYjRjMDBkOTM2OS4uZWM2ODFkMDk5MGVmMGMyYTFiMGM0MWQ1NDEy
YmJjZTBjMGQzOTFkZSAxMDA3NTUKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCkBAIC00OTUsNyArNDk1LDkg
QEAKICAgICAgICAgdm9pZCBlbWl0X29wX2NoZWNrX3RkeihJbnN0cnVjdGlvbiopOwogICAgICAg
ICB2b2lkIGVtaXRfb3BfYXNzZXJ0KEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9v
cF9zYXZlKEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9yZXN1bWUoSW5zdHJ1
Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX3Jlc3VtZV9mcm9tX2dlbmVyYXRvcl9mcmFt
ZShJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfY2xlYXJfZ2VuZXJhdG9yX2Zy
YW1lKEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9uZXdfZ2VuZXJhdG9yX2Zy
YW1lKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9kZWJ1ZyhJbnN0cnVjdGlv
biopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZGVsX2J5X2lkKEluc3RydWN0aW9uKik7CiAgICAg
ICAgIHZvaWQgZW1pdF9vcF9kaXYoSW5zdHJ1Y3Rpb24qKTsKQEAgLTU5NSw2ICs1OTcsNyBAQAog
ICAgICAgICB2b2lkIGVtaXRfb3BfZW51bWVyYXRvcl9zdHJ1Y3R1cmVfcG5hbWUoSW5zdHJ1Y3Rp
b24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2VudW1lcmF0b3JfZ2VuZXJpY19wbmFtZShJbnN0
cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfdG9faW5kZXhfc3RyaW5nKEluc3RydWN0
aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9ub3AoSW5zdHJ1Y3Rpb24qKTsKIAogICAgICAg
ICB2b2lkIGVtaXRTbG93X29wX2FkZChJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5
Pjo6aXRlcmF0b3ImKTsKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9iaXRhbmQoSW5zdHJ1Y3Rp
b24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGNvZGVzLmNwcAppbmRleCA3MzhjYjYzZmVkOTFiNDk4NTVkNWQwMzNkNDYz
MzQ1ZmRkNDc2ZDliLi40YTZhODhjODRmNTc1ZjE0YmFiNjAzOTM5MGY0NjgxOTRlZjczNzI2IDEw
MDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKQEAgLTMyLDYgKzMyLDcg
QEAKICNpbmNsdWRlICJDb3BpZWRTcGFjZUlubGluZXMuaCIKICNpbmNsdWRlICJEZWJ1Z2dlci5o
IgogI2luY2x1ZGUgIkV4Y2VwdGlvbi5oIgorI2luY2x1ZGUgIkdlbmVyYXRvckZyYW1lLmgiCiAj
aW5jbHVkZSAiSGVhcC5oIgogI2luY2x1ZGUgIkpJVElubGluZXMuaCIKICNpbmNsdWRlICJKU0Fy
cmF5LmgiCkBAIC04OTMsNiArODk0LDIzIEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF90b19zdHJp
bmcoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlCiAgICAg
c2xvd1BhdGhDYWxsLmNhbGwoKTsKIH0KIAordm9pZCBKSVQ6OmVtaXRfb3BfcmVzdW1lX2Zyb21f
Z2VuZXJhdG9yX2ZyYW1lKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAg
aW50IGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CisgICAgaW50IGZyYW1l
ID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKKyAgICB1bnNpZ25lZCBpbmRleCA9
IGN1cnJlbnRJbnN0cnVjdGlvblszXS51LnVuc2lnbmVkVmFsdWU7CisgICAgZW1pdEdldFZpcnR1
YWxSZWdpc3RlcihmcmFtZSwgcmVnVDEpOworICAgIGxvYWQ2NChBZGRyZXNzKHJlZ1QxLCBHZW5l
cmF0b3JGcmFtZTo6bG9jYWxPZmZzZXQoaW5kZXgpKSwgcmVnVDApOworICAgIGVtaXRQdXRWaXJ0
dWFsUmVnaXN0ZXIoZHN0KTsKK30KKwordm9pZCBKSVQ6OmVtaXRfb3BfY2xlYXJfZ2VuZXJhdG9y
X2ZyYW1lKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgaW50IGZyYW1l
ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKKyAgICBlbWl0R2V0VmlydHVhbFJl
Z2lzdGVyKGZyYW1lLCByZWdUMSk7CisgICAgc3RvcmUzMihUcnVzdGVkSW1tMzIoMCksIEFkZHJl
c3MocmVnVDEsIEdlbmVyYXRvckZyYW1lOjpudW1iZXJPZlNhdmVkQ2FsbGVlTG9jYWxzT2Zmc2V0
KCkpKTsKK30KKwogI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCiAKIHZvaWQgSklUOjplbWl0X29w
X2xvb3BfaGludChJbnN0cnVjdGlvbiopCkBAIC0xNDM1LDEyICsxNDUzLDE2IEBAIHZvaWQgSklU
OjplbWl0X29wX3NhdmUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBzbG93
UGF0aENhbGwuY2FsbCgpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9yZXN1bWUoSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX25ld19nZW5lcmF0b3Jf
ZnJhbWUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKLSAgICBKSVRTbG93UGF0
aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX3Jl
c3VtZSk7CisgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5z
dHJ1Y3Rpb24sIHNsb3dfcGF0aF9uZXdfZ2VuZXJhdG9yX2ZyYW1lKTsKICAgICBzbG93UGF0aENh
bGwuY2FsbCgpOwogfQogCit2b2lkIEpJVDo6ZW1pdF9vcF9ub3AoSW5zdHJ1Y3Rpb24qKQorewor
fQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEVOQUJMRShKSVQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3Bw
CmluZGV4IDJiNGU2MTk4NmQzMTJhYzllNGY4NzM3M2NlN2FhMGI5ZmQwY2U3NWEuLmFmZTA5Njg0
ODhmNDZkMTY3NWM5MTdlY2IyYjYyMGMwMDU2MTIyNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCkBAIC0zMiw2ICsz
Miw3IEBACiAjaW5jbHVkZSAiRGlyZWN0QXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9u
LmgiCiAjaW5jbHVkZSAiRXhlY3V0YWJsZS5oIgorI2luY2x1ZGUgIkdlbmVyYXRvckZyYW1lLmgi
CiAjaW5jbHVkZSAiSGVhcC5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAi
SlNBcnJheS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXIuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXIuYXNtCmluZGV4IGNkNGNlOTA2M2IxOTU3NWE5NTdlM2NhM2UyMmJlNTc5MTVi
ZGI1OWEuLmI5MjBhNmNlNjZjZmJlMTM1MzM0ZGEwMWY2OWQ1OGRlNDY2MGNlNGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20K
QEAgLTE2NSw2ICsxNjUsNyBAQCBjb25zdCBTbG90U2l6ZSA9IDgKIAogY29uc3QgSlNFbnZpcm9u
bWVudFJlY29yZF92YXJpYWJsZXMgPSAoc2l6ZW9mIEpTRW52aXJvbm1lbnRSZWNvcmQgKyBTbG90
U2l6ZSAtIDEpICYgfihTbG90U2l6ZSAtIDEpCiBjb25zdCBEaXJlY3RBcmd1bWVudHNfc3RvcmFn
ZSA9IChzaXplb2YgRGlyZWN0QXJndW1lbnRzICsgU2xvdFNpemUgLSAxKSAmIH4oU2xvdFNpemUg
LSAxKQorY29uc3QgR2VuZXJhdG9yRnJhbWVfY2FsbGVlTG9jYWxzID0gKHNpemVvZiBHZW5lcmF0
b3JGcmFtZSArIFNsb3RTaXplIC0gMSkgJiB+KFNsb3RTaXplIC0gMSkKIAogY29uc3QgU3RhY2tB
bGlnbm1lbnQgPSAxNgogY29uc3QgU3RhY2tBbGlnbm1lbnRTbG90cyA9IDIKQEAgLTEyNTYsNiAr
MTI1NywxMiBAQCBfbGxpbnRfb3BfbmV3X3JlZ2V4cDoKICAgICBkaXNwYXRjaCgzKQogCiAKK19s
bGludF9vcF9uZXdfZ2VuZXJhdG9yX2ZyYW1lOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBj
YWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF9uZXdfZ2VuZXJhdG9yX2ZyYW1lKQorICAgIGRpc3BhdGNo
KDMpCisKKwogX2xsaW50X29wX2xlc3M6CiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGNhbGxT
bG93UGF0aChfc2xvd19wYXRoX2xlc3MpCkBAIC0xNTk1LDEwICsxNjAyLDE2IEBAIF9sbGludF9v
cF9zYXZlOgogICAgIGRpc3BhdGNoKDQpCiAKIAotX2xsaW50X29wX3Jlc3VtZToKK19sbGludF9v
cF9zYXZlX2hpbnQ6CiAgICAgdHJhY2VFeGVjdXRpb24oKQotICAgIGNhbGxTbG93UGF0aChfc2xv
d19wYXRoX3Jlc3VtZSkKLSAgICBkaXNwYXRjaCgzKQorICAgIG5vdFN1cHBvcnRlZCgpCisgICAg
ZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfcmVzdW1lX2hpbnQ6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIG5vdFN1cHBvcnRlZCgpCisgICAgZGlzcGF0Y2goNCkKIAogCiBfbGxpbnRfb3Bf
Y3JlYXRlX2xleGljYWxfZW52aXJvbm1lbnQ6CkBAIC0xNzA4LDYgKzE3MjEsMTAgQEAgX2xsaW50
X29wX2NvcHlfcmVzdDoKICAgICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF9jb3B5X3Jlc3QpCiAg
ICAgZGlzcGF0Y2goNCkKIAorX2xsaW50X29wX25vcDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgZGlzcGF0Y2goMSkKKwogCiAjIExhc3RseSwgbWFrZSBzdXJlIHRoYXQgd2UgY2FuIGxpbmsg
ZXZlbiB0aG91Z2ggd2UgZG9uJ3Qgc3VwcG9ydCBhbGwgb3Bjb2Rlcy4KICMgVGhlc2Ugb3Bjb2Rl
cyBzaG91bGQgbmV2ZXIgYXJpc2Ugd2hlbiB1c2luZyBMTEludCBvciBlaXRoZXIgSklULiBXZSBh
c3NlcnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbElu
dGVycHJldGVyNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXI2NC5hc20KaW5kZXggODUxNzNiYzgyNjIxNDZiMGUwZDFlMDE5MmI3MDYwMjhiYmQ5
MDY4My4uNDkyYzYzYzI1Y2RmYWUzMmZmOWVlYjhhNGQxOTdlNTg1NTMxOWFjMSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20K
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5h
c20KQEAgLTIzMjEsMyArMjMyMSwxOCBAQCBfbGxpbnRfb3BfZ2V0X3Jlc3RfbGVuZ3RoOgogICAg
IGxvYWRpc0Zyb21JbnN0cnVjdGlvbigxLCB0MSkKICAgICBzdG9yZXEgdDAsIFtjZnIsIHQxLCA4
XQogICAgIGRpc3BhdGNoKDMpCisKK19sbGludF9vcF9jbGVhcl9nZW5lcmF0b3JfZnJhbWU6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRWYXJpYWJsZSgxLCB0MCkKKyAgICBzdG9yZWkg
MCwgR2VuZXJhdG9yRnJhbWU6Om1fbnVtYmVyT2ZTYXZlZENhbGxlZUxvY2Fsc1t0MF0KKyAgICBk
aXNwYXRjaCgyKQorCitfbGxpbnRfb3BfcmVzdW1lX2Zyb21fZ2VuZXJhdG9yX2ZyYW1lOgorICAg
IHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkVmFyaWFibGUoMiwgdDApCisgICAgbG9hZGlzRnJv
bUluc3RydWN0aW9uKDMsIHQxKQorICAgIGxvYWRxIEdlbmVyYXRvckZyYW1lX2NhbGxlZUxvY2Fs
c1t0MCwgdDEsIDhdLCB0MAorICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigxLCB0MSkKKyAgICBz
dG9yZXEgdDAsIFtjZnIsIHQxLCA4XQorICAgIGRpc3BhdGNoKDQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL1BhcnNlci5jcHAKaW5kZXggOGQzNzA2MzQ1MTI4ZTlkZjlkYWMzMjU3ZjdjNWY0
ZTVhYjNhOWMzNC4uZTg2MDUzYjQ4MmE4ZDM2YjMzNWMwOGJhN2QzNjc1NmQzYjc5NmFkOSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcApAQCAtMjUwLDkgKzI1MCwxMCBA
QAogICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24gPSBmYWxzZTsKICAgICBp
ZiAobV9sZXhlci0+aXNSZXBhcnNpbmdGdW5jdGlvbigpKSB7CiAgICAgICAgIFBhcnNlckZ1bmN0
aW9uSW5mbzxBU1RCdWlsZGVyPiBmdW5jdGlvbkluZm87Ci0gICAgICAgIGlmIChwYXJzZU1vZGUg
PT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JCb2R5TW9kZSkKLSAgICAgICAgICAgIGZ1bmN0
aW9uSW5mby5wYXJhbWV0ZXJzID0gY3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhjb250ZXh0KTsK
LSAgICAgICAgZWxzZQorICAgICAgICBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6
R2VuZXJhdG9yQm9keU1vZGUpIHsKKyAgICAgICAgICAgIHVuc2lnbmVkIHBhcmFtZXRlckNvdW50
ID0gMDsKKyAgICAgICAgICAgIGZ1bmN0aW9uSW5mby5wYXJhbWV0ZXJzID0gY3JlYXRlR2VuZXJh
dG9yUGFyYW1ldGVycyhjb250ZXh0LCBwYXJhbWV0ZXJDb3VudCk7CisgICAgICAgIH0gZWxzZQog
ICAgICAgICAgICAgcGFyc2VGdW5jdGlvblBhcmFtZXRlcnMoY29udGV4dCwgcGFyc2VNb2RlLCBm
dW5jdGlvbkluZm8pOwogICAgICAgICBtX3BhcmFtZXRlcnMgPSBmdW5jdGlvbkluZm8ucGFyYW1l
dGVyczsKIApAQCAtNDg1LDEwICs0ODYsOSBAQAogCiAgICAgUGFyc2VyRnVuY3Rpb25JbmZvPFRy
ZWVCdWlsZGVyPiBpbmZvOwogICAgIGluZm8ubmFtZSA9ICZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5u
dWxsSWRlbnRpZmllcjsKLSAgICBpbmZvLnBhcmFtZXRlcnMgPSBjcmVhdGVHZW5lcmF0b3JQYXJh
bWV0ZXJzKGNvbnRleHQpOworICAgIGluZm8ucGFyYW1ldGVycyA9IGNyZWF0ZUdlbmVyYXRvclBh
cmFtZXRlcnMoY29udGV4dCwgaW5mby5wYXJhbWV0ZXJDb3VudCk7CiAgICAgaW5mby5zdGFydE9m
ZnNldCA9IHBhcmFtZXRlcnNTdGFydDsKICAgICBpbmZvLnN0YXJ0TGluZSA9IHRva2VuTGluZSgp
OwotICAgIGluZm8ucGFyYW1ldGVyQ291bnQgPSA0OyAvLyBnZW5lcmF0b3IsIHN0YXRlLCB2YWx1
ZSwgcmVzdW1lIG1vZGUKIAogICAgIHsKICAgICAgICAgQXV0b1BvcFNjb3BlUmVmIGdlbmVyYXRv
ckJvZHlTY29wZSh0aGlzLCBwdXNoU2NvcGUoKSk7CkBAIC0xNzgxLDMyICsxNzgxLDMwIEBAIHN0
YXRpYyBjb25zdCBjaGFyKiBzdHJpbmdGb3JGdW5jdGlvbk1vZGUoU291cmNlUGFyc2VNb2RlIG1v
ZGUpCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+Ci10ZW1wbGF0ZSA8Y2xhc3Mg
VHJlZUJ1aWxkZXI+IHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpGb3JtYWxQYXJhbWV0ZXJMaXN0IFBh
cnNlcjxMZXhlclR5cGU+OjpjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKFRyZWVCdWlsZGVyJiBj
b250ZXh0KQordGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiB0eXBlbmFtZSBUcmVlQnVpbGRl
cjo6Rm9ybWFsUGFyYW1ldGVyTGlzdCBQYXJzZXI8TGV4ZXJUeXBlPjo6Y3JlYXRlR2VuZXJhdG9y
UGFyYW1ldGVycyhUcmVlQnVpbGRlciYgY29udGV4dCwgdW5zaWduZWQmIHBhcmFtZXRlckNvdW50
KQogewogICAgIGF1dG8gcGFyYW1ldGVycyA9IGNvbnRleHQuY3JlYXRlRm9ybWFsUGFyYW1ldGVy
TGlzdCgpOwogCiAgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7
CiAgICAgSlNUZXh0UG9zaXRpb24gcG9zaXRpb24gPSB0b2tlblN0YXJ0UG9zaXRpb24oKTsKIAot
ICAgIC8vIEBnZW5lcmF0b3IKLSAgICBkZWNsYXJlUGFyYW1ldGVyKCZtX3ZtLT5wcm9wZXJ0eU5h
bWVzLT5nZW5lcmF0b3JQcml2YXRlTmFtZSk7Ci0gICAgYXV0byBnZW5lcmF0b3IgPSBjb250ZXh0
LmNyZWF0ZUJpbmRpbmdMb2NhdGlvbihsb2NhdGlvbiwgbV92bS0+cHJvcGVydHlOYW1lcy0+Z2Vu
ZXJhdG9yUHJpdmF0ZU5hbWUsIHBvc2l0aW9uLCBwb3NpdGlvbiwgQXNzaWdubWVudENvbnRleHQ6
OkRlY2xhcmF0aW9uU3RhdGVtZW50KTsKLSAgICBjb250ZXh0LmFwcGVuZFBhcmFtZXRlcihwYXJh
bWV0ZXJzLCBnZW5lcmF0b3IsIDApOworICAgIGF1dG8gYWRkUGFyYW1ldGVyID0gWyZdKGNvbnN0
IElkZW50aWZpZXImIG5hbWUpIHsKKyAgICAgICAgZGVjbGFyZVBhcmFtZXRlcigmbmFtZSk7Cisg
ICAgICAgIGF1dG8gYmluZGluZyA9IGNvbnRleHQuY3JlYXRlQmluZGluZ0xvY2F0aW9uKGxvY2F0
aW9uLCBuYW1lLCBwb3NpdGlvbiwgcG9zaXRpb24sIEFzc2lnbm1lbnRDb250ZXh0OjpEZWNsYXJh
dGlvblN0YXRlbWVudCk7CisgICAgICAgIGNvbnRleHQuYXBwZW5kUGFyYW1ldGVyKHBhcmFtZXRl
cnMsIGJpbmRpbmcsIDApOworICAgICAgICArK3BhcmFtZXRlckNvdW50OworICAgIH07CiAKKyAg
ICAvLyBAZ2VuZXJhdG9yCisgICAgYWRkUGFyYW1ldGVyKG1fdm0tPnByb3BlcnR5TmFtZXMtPmdl
bmVyYXRvclByaXZhdGVOYW1lKTsKICAgICAvLyBAZ2VuZXJhdG9yU3RhdGUKLSAgICBkZWNsYXJl
UGFyYW1ldGVyKCZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5nZW5lcmF0b3JTdGF0ZVByaXZhdGVOYW1l
KTsKLSAgICBhdXRvIGdlbmVyYXRvclN0YXRlID0gY29udGV4dC5jcmVhdGVCaW5kaW5nTG9jYXRp
b24obG9jYXRpb24sIG1fdm0tPnByb3BlcnR5TmFtZXMtPmdlbmVyYXRvclN0YXRlUHJpdmF0ZU5h
bWUsIHBvc2l0aW9uLCBwb3NpdGlvbiwgQXNzaWdubWVudENvbnRleHQ6OkRlY2xhcmF0aW9uU3Rh
dGVtZW50KTsKLSAgICBjb250ZXh0LmFwcGVuZFBhcmFtZXRlcihwYXJhbWV0ZXJzLCBnZW5lcmF0
b3JTdGF0ZSwgMCk7Ci0KKyAgICBhZGRQYXJhbWV0ZXIobV92bS0+cHJvcGVydHlOYW1lcy0+Z2Vu
ZXJhdG9yU3RhdGVQcml2YXRlTmFtZSk7CiAgICAgLy8gQGdlbmVyYXRvclZhbHVlCi0gICAgZGVj
bGFyZVBhcmFtZXRlcigmbV92bS0+cHJvcGVydHlOYW1lcy0+Z2VuZXJhdG9yVmFsdWVQcml2YXRl
TmFtZSk7Ci0gICAgYXV0byBnZW5lcmF0b3JWYWx1ZSA9IGNvbnRleHQuY3JlYXRlQmluZGluZ0xv
Y2F0aW9uKGxvY2F0aW9uLCBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5nZW5lcmF0b3JWYWx1ZVByaXZh
dGVOYW1lLCBwb3NpdGlvbiwgcG9zaXRpb24sIEFzc2lnbm1lbnRDb250ZXh0OjpEZWNsYXJhdGlv
blN0YXRlbWVudCk7Ci0gICAgY29udGV4dC5hcHBlbmRQYXJhbWV0ZXIocGFyYW1ldGVycywgZ2Vu
ZXJhdG9yVmFsdWUsIDApOwotCisgICAgYWRkUGFyYW1ldGVyKG1fdm0tPnByb3BlcnR5TmFtZXMt
PmdlbmVyYXRvclZhbHVlUHJpdmF0ZU5hbWUpOwogICAgIC8vIEBnZW5lcmF0b3JSZXN1bWVNb2Rl
Ci0gICAgZGVjbGFyZVBhcmFtZXRlcigmbV92bS0+cHJvcGVydHlOYW1lcy0+Z2VuZXJhdG9yUmVz
dW1lTW9kZVByaXZhdGVOYW1lKTsKLSAgICBhdXRvIGdlbmVyYXRvclJlc3VtZU1vZGUgPSBjb250
ZXh0LmNyZWF0ZUJpbmRpbmdMb2NhdGlvbihsb2NhdGlvbiwgbV92bS0+cHJvcGVydHlOYW1lcy0+
Z2VuZXJhdG9yUmVzdW1lTW9kZVByaXZhdGVOYW1lLCBwb3NpdGlvbiwgcG9zaXRpb24sIEFzc2ln
bm1lbnRDb250ZXh0OjpEZWNsYXJhdGlvblN0YXRlbWVudCk7Ci0gICAgY29udGV4dC5hcHBlbmRQ
YXJhbWV0ZXIocGFyYW1ldGVycywgZ2VuZXJhdG9yUmVzdW1lTW9kZSwgMCk7CisgICAgYWRkUGFy
YW1ldGVyKG1fdm0tPnByb3BlcnR5TmFtZXMtPmdlbmVyYXRvclJlc3VtZU1vZGVQcml2YXRlTmFt
ZSk7CisgICAgLy8gQGdlbmVyYXRvckZyYW1lCisgICAgYWRkUGFyYW1ldGVyKG1fdm0tPnByb3Bl
cnR5TmFtZXMtPmdlbmVyYXRvckZyYW1lUHJpdmF0ZU5hbWUpOwogCiAgICAgcmV0dXJuIHBhcmFt
ZXRlcnM7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNl
ci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAppbmRleCBhMTFiMzVj
MTAxZmU1Yjg0OWNiMjMzMDk2YzU2ODMxMzcwNjZjYWJmLi5lNjE0OWEzYWMzNjk0MDQ4OTNkMjM2
OTY5MzE2YjVjMzAzM2JlODUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1BhcnNlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgK
QEAgLTEyNTksNyArMTI1OSw3IEBAIGNsYXNzIFBhcnNlciB7CiAgICAgdGVtcGxhdGUgPGNsYXNz
IFRyZWVCdWlsZGVyPiBORVZFUl9JTkxJTkUgYm9vbCBwYXJzZUZ1bmN0aW9uSW5mbyhUcmVlQnVp
bGRlciYsIEZ1bmN0aW9uUmVxdWlyZW1lbnRzLCBTb3VyY2VQYXJzZU1vZGUsIGJvb2wgbmFtZUlz
SW5Db250YWluaW5nU2NvcGUsIENvbnN0cnVjdG9yS2luZCwgU3VwZXJCaW5kaW5nLCBpbnQgZnVu
Y3Rpb25LZXl3b3JkU3RhcnQsIFBhcnNlckZ1bmN0aW9uSW5mbzxUcmVlQnVpbGRlcj4mLCBGdW5j
dGlvbkRlZmluaXRpb25UeXBlKTsKICAgICAKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxk
ZXI+IE5FVkVSX0lOTElORSBpbnQgcGFyc2VGdW5jdGlvblBhcmFtZXRlcnMoVHJlZUJ1aWxkZXIm
LCBTb3VyY2VQYXJzZU1vZGUsIFBhcnNlckZ1bmN0aW9uSW5mbzxUcmVlQnVpbGRlcj4mKTsKLSAg
ICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElORSB0eXBlbmFtZSBUcmVl
QnVpbGRlcjo6Rm9ybWFsUGFyYW1ldGVyTGlzdCBjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKFRy
ZWVCdWlsZGVyJik7CisgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBORVZFUl9JTkxJ
TkUgdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkZvcm1hbFBhcmFtZXRlckxpc3QgY3JlYXRlR2VuZXJh
dG9yUGFyYW1ldGVycyhUcmVlQnVpbGRlciYsIHVuc2lnbmVkJiBwYXJhbWV0ZXJDb3VudCk7CiAK
ICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElORSBUcmVlQ2xhc3NF
eHByZXNzaW9uIHBhcnNlQ2xhc3MoVHJlZUJ1aWxkZXImLCBGdW5jdGlvblJlcXVpcmVtZW50cywg
UGFyc2VyQ2xhc3NJbmZvPFRyZWVCdWlsZGVyPiYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAppbmRleCA3OGI0M2M0ZDM4OWZmN2E5
MDgzMTNiNTU0MDU3MGU4ODJlMWIwMzcxLi5kY2EyZDRlNjY2ZDA3M2NmMzkwZjYxZjI5N2NhNzM5
N2IzNmM1OGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21t
b25TbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1v
blNsb3dQYXRocy5jcHAKQEAgLTY5NywzMyArNjk3LDEyIEBAIHN0YXRpYyB2b2lkIHVwZGF0ZVJl
c3VsdFByb2ZpbGVGb3JCaW5hcnlBcml0aE9wKEV4ZWNTdGF0ZSosIEluc3RydWN0aW9uKiwgSlNW
YWx1CiAgICAgLy8gT25seSBzYXZlIHZhcmlhYmxlcyBhbmQgdGVtcG9yYXJ5IHJlZ2lzdGVycy4g
VGhlIHNjb3BlIHJlZ2lzdGVycyBhcmUgaW5jbHVkZWQgaW4gdGhlbS4KICAgICAvLyBCdXQgcGFy
YW1ldGVycyBhcmUgbm90IGluY2x1ZGVkLiBCZWNhdXNlIHRoZSBnZW5lcmF0b3IgaW1wbGVtZW50
YXRpb24gcmVwbGFjZXMgdGhlIHZhbHVlcyBvZiBwYXJhbWV0ZXJzIG9uIGVhY2ggZ2VuZXJhdG9y
Lm5leHQoKSBjYWxsLgogICAgIEJFR0lOKCk7Ci0gICAgSlNWYWx1ZSBnZW5lcmF0b3IgPSBPUCgx
KS5qc1ZhbHVlKCk7Ci0gICAgR2VuZXJhdG9yRnJhbWUqIGZyYW1lID0gbnVsbHB0cjsKLSAgICBK
U1ZhbHVlIHZhbHVlID0gZ2VuZXJhdG9yLmdldChleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCku
Z2VuZXJhdG9yRnJhbWVQcml2YXRlTmFtZSk7Ci0gICAgaWYgKCF2YWx1ZS5pc051bGwoKSkKLSAg
ICAgICAgZnJhbWUgPSBqc0Nhc3Q8R2VuZXJhdG9yRnJhbWUqPih2YWx1ZSk7Ci0gICAgZWxzZSB7
Ci0gICAgICAgIC8vIEZJWE1FOiBPbmNlIEpTR2VuZXJhdG9yIHNwZWNpYWxpemVkIG9iamVjdCBp
cyBpbnRyb2R1Y2VkLCB0aGlzIEdlbmVyYXRvckZyYW1lIHNob3VsZCBiZSBlbWJlZGVkIGludG8g
aXQgdG8gYXZvaWQgYWxsb2NhdGlvbnMuCi0gICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE1NDUKLSAgICAgICAgZnJhbWUgPSBHZW5lcmF0b3JGcmFt
ZTo6Y3JlYXRlKGV4ZWMtPnZtKCksICBleGVjLT5jb2RlQmxvY2soKS0+bnVtQ2FsbGVlTG9jYWxz
KCkpOwotICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChnZW5lcmF0b3IsIHRydWUsIFB1dFBy
b3BlcnR5U2xvdDo6UHV0QnlJZCk7Ci0gICAgICAgIGFzT2JqZWN0KGdlbmVyYXRvciktPm1ldGhv
ZFRhYmxlKGV4ZWMtPnZtKCkpLT5wdXQoYXNPYmplY3QoZ2VuZXJhdG9yKSwgZXhlYywgZXhlYy0+
cHJvcGVydHlOYW1lcygpLmdlbmVyYXRvckZyYW1lUHJpdmF0ZU5hbWUsIGZyYW1lLCBzbG90KTsK
LSAgICB9CisgICAgR2VuZXJhdG9yRnJhbWUqIGZyYW1lID0ganNDYXN0PEdlbmVyYXRvckZyYW1l
Kj4oT1AoMSkuanNWYWx1ZSgpKTsKICAgICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXgg
PSBwY1syXS51LnVuc2lnbmVkVmFsdWU7CiAgICAgZnJhbWUtPnNhdmUoZXhlYywgZXhlYy0+Y29k
ZUJsb2NrKCktPmxpdmVDYWxsZWVMb2NhbHNBdFlpZWxkKGxpdmVDYWxsZWVMb2NhbHNJbmRleCkp
OwogICAgIEVORCgpOwogfQogCi1TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcmVzdW1lKQotewot
ICAgIEJFR0lOKCk7Ci0gICAgSlNWYWx1ZSBnZW5lcmF0b3IgPSBPUCgxKS5qc1ZhbHVlKCk7Ci0g
ICAgR2VuZXJhdG9yRnJhbWUqIGZyYW1lID0ganNDYXN0PEdlbmVyYXRvckZyYW1lKj4oZ2VuZXJh
dG9yLmdldChleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuZ2VuZXJhdG9yRnJhbWVQcml2YXRl
TmFtZSkpOwotICAgIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9IHBjWzJdLnUudW5z
aWduZWRWYWx1ZTsKLSAgICBmcmFtZS0+cmVzdW1lKGV4ZWMsIGV4ZWMtPmNvZGVCbG9jaygpLT5s
aXZlQ2FsbGVlTG9jYWxzQXRZaWVsZChsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpKTsKLSAgICBFTkQo
KTsKLX0KLQogU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2NyZWF0ZV9sZXhpY2FsX2Vudmlyb25t
ZW50KQogewogICAgIEJFR0lOKCk7CkBAIC03OTcsNCArNzc2LDEyIEBAIHN0YXRpYyB2b2lkIHVw
ZGF0ZVJlc3VsdFByb2ZpbGVGb3JCaW5hcnlBcml0aE9wKEV4ZWNTdGF0ZSosIEluc3RydWN0aW9u
KiwgSlNWYWx1CiAgICAgRU5EKCk7CiB9CiAKK1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9uZXdf
Z2VuZXJhdG9yX2ZyYW1lKQoreworICAgIEJFR0lOKCk7CisgICAgdW5zaWduZWQgZ2VuZXJhdG9y
TG9jYWxzU2l6ZSA9IHBjWzJdLnUudW5zaWduZWRWYWx1ZTsKKyAgICBSRVRVUk4oR2VuZXJhdG9y
RnJhbWU6OmNyZWF0ZShleGVjLCBnZW5lcmF0b3JMb2NhbHNTaXplKSk7Cit9CisKKwogfSAvLyBu
YW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21tb25TbG93UGF0aHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNs
b3dQYXRocy5oCmluZGV4IGYwMGQ4NzA1ZDRlNjdmZTRkNDA1OWJkZTE2OGVlODhmNTdkZjcyZTcu
LjA2NTBjNGU4Y2I3MTU1OTE3Y2QxZDdhMmY3N2E3YzdmNzI5YTE1NDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCkBAIC0yOTYsNiArMjk2
LDcgQEAgaW5saW5lIHZvaWQgZGVjb2RlUmVzdWx0KFNsb3dQYXRoUmV0dXJuVHlwZSByZXN1bHQs
IHZvaWQqJiBhLCB2b2lkKiYgYikKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcHVz
aF93aXRoX3Njb3BlKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcmVzb2x2ZV9z
Y29wZSk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2NvcHlfcmVzdCk7CitTTE9X
X1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX25ld19nZW5lcmF0b3JfZnJhbWUpOwogCiB9IC8v
IG5hbWVzcGFjZSBKU0MKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvR2VuZXJhdG9yRnJhbWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2Vu
ZXJhdG9yRnJhbWUuY3BwCmluZGV4IGVmNmVhN2ExMDAyNThjM2VjZTA0ZGFhYjQzYmRhYTg1MWVj
OGY3MTUuLjg2OGJjNGJkMjg5OWNlODg2Yjk3MDRhMzJkZTZiNWYxOTU5M2JhNjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZyYW1lLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGcmFtZS5jcHAKQEAgLTMw
LDE1ICszMCwxNiBAQAogI2luY2x1ZGUgIkhlYXBJdGVyYXRpb25TY29wZS5oIgogI2luY2x1ZGUg
IkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgorI2luY2x1
ZGUgIkpTT2JqZWN0SW5saW5lcy5oIgogI2luY2x1ZGUgIlNsb3RWaXNpdG9ySW5saW5lcy5oIgog
I2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWNvbnN0
IENsYXNzSW5mbyBHZW5lcmF0b3JGcmFtZTo6c19pbmZvID0geyAiR2VuZXJhdG9yRnJhbWUiLCBu
dWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEdlbmVyYXRvckZyYW1lKSB9Owor
Y29uc3QgQ2xhc3NJbmZvIEdlbmVyYXRvckZyYW1lOjpzX2luZm8gPSB7ICJHZW5lcmF0b3JGcmFt
ZSIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoR2VuZXJhdG9y
RnJhbWUpIH07CiAKLUdlbmVyYXRvckZyYW1lOjpHZW5lcmF0b3JGcmFtZShWTSYgdm0sIHNpemVf
dCBudW1iZXJPZkNhbGxlZUxvY2FscykKLSAgICA6IEJhc2Uodm0sIHZtLmdlbmVyYXRvckZyYW1l
U3RydWN0dXJlLmdldCgpKQorR2VuZXJhdG9yRnJhbWU6OkdlbmVyYXRvckZyYW1lKFZNJiB2bSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHVpbnQzMl90IG51bWJlck9mQ2FsbGVlTG9jYWxzKQorICAg
IDogQmFzZSh2bSwgc3RydWN0dXJlKQogICAgICwgbV9udW1iZXJPZkNhbGxlZUxvY2FscyhudW1i
ZXJPZkNhbGxlZUxvY2FscykKIHsKIH0KQEAgLTQ2LDMzICs0Nyw0MiBAQAogdm9pZCBHZW5lcmF0
b3JGcmFtZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogewogICAgIEJhc2U6OmZpbmlzaENyZWF0
aW9uKHZtKTsKKyAgICBKU1ZhbHVlIGVtcHR5VmFsdWU7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBtX251bWJlck9mQ2FsbGVlTG9jYWxzOyArK2kpCi0gICAgICAgIGxvY2FsQXQoaSkuY2xl
YXIoKTsKKyAgICAgICAgbG9jYWxBdChpKS5zZXRTdGFydGluZ1ZhbHVlKGVtcHR5VmFsdWUpOwog
fQogCiBTdHJ1Y3R1cmUqIEdlbmVyYXRvckZyYW1lOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKIHsKLSAgICBy
ZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBl
SW5mbyhDZWxsVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIHJldHVybiBTdHJ1
Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVj
dFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKIH0KIAotR2VuZXJhdG9yRnJhbWUqIEdl
bmVyYXRvckZyYW1lOjpjcmVhdGUoVk0mIHZtLCBzaXplX3QgbnVtYmVyT2ZMb2NhbHMpCitHZW5l
cmF0b3JGcmFtZSogR2VuZXJhdG9yRnJhbWU6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBzaXplX3QgbnVtYmVyT2ZDYWxsZWVMb2NhbHMpCiB7CiAgICAgR2VuZXJhdG9yRnJh
bWUqIHJlc3VsdCA9CiAgICAgICAgIG5ldyAoCiAgICAgICAgICAgICBOb3ROdWxsLAotICAgICAg
ICAgICAgYWxsb2NhdGVDZWxsPEdlbmVyYXRvckZyYW1lPih2bS5oZWFwLCBhbGxvY2F0aW9uU2l6
ZUZvckxvY2FscyhudW1iZXJPZkxvY2FscykpKQotICAgICAgICBHZW5lcmF0b3JGcmFtZSh2bSwg
bnVtYmVyT2ZMb2NhbHMpOworICAgICAgICAgICAgYWxsb2NhdGVDZWxsPEdlbmVyYXRvckZyYW1l
Pih2bS5oZWFwLCBhbGxvY2F0aW9uU2l6ZUZvckxvY2FscyhudW1iZXJPZkNhbGxlZUxvY2Fscykp
KQorICAgICAgICBHZW5lcmF0b3JGcmFtZSh2bSwgc3RydWN0dXJlLCBudW1iZXJPZkNhbGxlZUxv
Y2Fscyk7CiAgICAgcmVzdWx0LT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KIAorR2VuZXJhdG9yRnJhbWUqIEdlbmVyYXRvckZyYW1lOjpjcmVhdGUoRXhlY1N0YXRl
KiBleGVjLCBzaXplX3QgbnVtYmVyT2ZDYWxsZWVMb2NhbHMpCit7CisgICAgcmV0dXJuIGNyZWF0
ZShleGVjLT52bSgpLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmdlbmVyYXRvckZyYW1l
U3RydWN0dXJlKCksIG51bWJlck9mQ2FsbGVlTG9jYWxzKTsKK30KKwogdm9pZCBHZW5lcmF0b3JG
cmFtZTo6c2F2ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEZhc3RCaXRWZWN0b3ImIGxpdmVDYWxs
ZWVMb2NhbHMpCiB7CisgICAgLy8gQWxsb2NhdGUgdGhlIGdlbmVyYXRvciBsb2NhbCBzcGFjZSBm
aXJzdC4KKyAgICBtX251bWJlck9mU2F2ZWRDYWxsZWVMb2NhbHMgPSBsaXZlQ2FsbGVlTG9jYWxz
LmJpdENvdW50KCk7CisKICAgICAvLyBPbmx5IHNhdmUgY2FsbGVlIGxvY2Fscy4KICAgICAvLyBF
dmVyeSB0aW1lIGEgZ2VuZXJhdG9yIGlzIGNhbGxlZCAob3IgcmVzdW1lZCksIHBhcmFtZXRlcnMg
c2hvdWxkIGJlIHJlcGxhY2VkLgotICAgIEFTU0VSVChsaXZlQ2FsbGVlTG9jYWxzLm51bUJpdHMo
KSA8PSBtX251bWJlck9mQ2FsbGVlTG9jYWxzKTsKKyAgICB1bnNpZ25lZCBnZW5lcmF0b3JGcmFt
ZUluZGV4ID0gMDsKICAgICBsaXZlQ2FsbGVlTG9jYWxzLmZvckVhY2hTZXRCaXQoWyZdKHNpemVf
dCBpbmRleCkgewotICAgICAgICBsb2NhbEF0KGluZGV4KS5zZXQoZXhlYy0+dm0oKSwgdGhpcywg
ZXhlYy0+dW5jaGVja2VkUih2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChpbmRleCkpLmpzVmFsdWUo
KSk7CisgICAgICAgIGxvY2FsQXQoZ2VuZXJhdG9yRnJhbWVJbmRleCsrKS5zZXQoZXhlYy0+dm0o
KSwgdGhpcywgZXhlYy0+dW5jaGVja2VkUih2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChpbmRleCkp
LmpzVmFsdWUoKSk7CiAgICAgfSk7CiB9CiAKQEAgLTgwLDEwICs5MCwxMSBAQCB2b2lkIEdlbmVy
YXRvckZyYW1lOjpyZXN1bWUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBGYXN0Qml0VmVjdG9yJiBs
aXZlQ2FsbGVlTG9jYQogewogICAgIC8vIE9ubHkgcmVzdW1lIGNhbGxlZSBsb2NhbHMuCiAgICAg
Ly8gRXZlcnkgdGltZSBhIGdlbmVyYXRvciBpcyBjYWxsZWQgKG9yIHJlc3VtZWQpLCBwYXJhbWV0
ZXJzIHNob3VsZCBiZSByZXBsYWNlZC4KKyAgICB1bnNpZ25lZCBnZW5lcmF0b3JGcmFtZUluZGV4
ID0gMDsKICAgICBsaXZlQ2FsbGVlTG9jYWxzLmZvckVhY2hTZXRCaXQoWyZdKHNpemVfdCBpbmRl
eCkgewotICAgICAgICBleGVjLT51bmNoZWNrZWRSKHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGlu
ZGV4KSkgPSBsb2NhbEF0KGluZGV4KS5nZXQoKTsKLSAgICAgICAgbG9jYWxBdChpbmRleCkuY2xl
YXIoKTsKKyAgICAgICAgZXhlYy0+dW5jaGVja2VkUih2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChp
bmRleCkpID0gbG9jYWxBdChnZW5lcmF0b3JGcmFtZUluZGV4KyspLmdldCgpOwogICAgIH0pOwor
ICAgIG1fbnVtYmVyT2ZTYXZlZENhbGxlZUxvY2FscyA9IDA7CiB9CiAKIHZvaWQgR2VuZXJhdG9y
RnJhbWU6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikK
QEAgLTkxLDcgKzEwMiwxMiBAQCB2b2lkIEdlbmVyYXRvckZyYW1lOjp2aXNpdENoaWxkcmVuKEpT
Q2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgR2VuZXJhdG9yRnJhbWUqIHRo
aXNPYmplY3QgPSBqc0Nhc3Q8R2VuZXJhdG9yRnJhbWUqPihjZWxsKTsKICAgICBCYXNlOjp2aXNp
dENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwogICAgIC8vIFNpbmNlIG9ubHkgdHJ1ZSBj
ZWxsIHBvaW50ZXJzIGFyZSBzdG9yZWQgYXMgYSBjZWxsLCB3ZSBjYW4gc2FmZWx5IG1hcmsgdGhl
bS4KLSAgICB2aXNpdG9yLmFwcGVuZFZhbHVlcyh0aGlzT2JqZWN0LT5sb2NhbHMoKSwgdGhpc09i
amVjdC0+bV9udW1iZXJPZkNhbGxlZUxvY2Fscyk7CisgICAgdmlzaXRvci5hcHBlbmRWYWx1ZXMo
dGhpc09iamVjdC0+bG9jYWxzKCksIHRoaXNPYmplY3QtPm1fbnVtYmVyT2ZTYXZlZENhbGxlZUxv
Y2Fscyk7CisgICAgLy8gQ2xlYXIgbm90IHVzZWQgY2FsbGVlIGxvY2FscyB3aGVuIG1hcmtpbmcu
CisgICAgLy8gVGhpcyBlbnN1cmVzIHRoYXQsICJpZiBhIGdpdmVuIGxvY2FsIGhhcyBhIHZhbHVl
LCB0aGlzIHZhbHVlIGlzIGNvcnJlY3RseSBtYXJrZWQgaW4gdGhlIHByZXZpb3VzIG1hcmtpbmcg
cGhhc2UiLgorICAgIHNpemVfdCByZW1haW5pbmcgPSB0aGlzT2JqZWN0LT5tX251bWJlck9mQ2Fs
bGVlTG9jYWxzIC0gdGhpc09iamVjdC0+bV9udW1iZXJPZlNhdmVkQ2FsbGVlTG9jYWxzOworICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcmVtYWluaW5nOyArK2kpCisgICAgICAgIHRoaXNPYmpl
Y3QtPmxvY2FsQXQodGhpc09iamVjdC0+bV9udW1iZXJPZlNhdmVkQ2FsbGVlTG9jYWxzICsgaSku
Y2xlYXIoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGcmFtZS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJhbWUuaAppbmRleCAzZDU0NWIxNDdkZDRhYmZiMmJiYjli
NWE3MTk0ZThmNzQ4NDFjNDlhLi5jZjFkYjdhMmJlZTYwZGEyOTQ2NGVjNDE3YTBjNWZiOGMxZjBh
ZThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JG
cmFtZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZyYW1l
LmgKQEAgLTI3LDExICsyNywxNCBAQAogI2RlZmluZSBHZW5lcmF0b3JGcmFtZV9oCiAKICNpbmNs
dWRlICJKU0NlbGwuaCIKKyNpbmNsdWRlICJKU09iamVjdC5oIgogI2luY2x1ZGUgPHd0Zi9GYXN0
Qml0VmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCi1jbGFzcyBHZW5lcmF0b3JGcmFtZSA6
IHB1YmxpYyBKU0NlbGwgeworY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworCitjbGFzcyBH
ZW5lcmF0b3JGcmFtZSA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAgICBmcmllbmQgY2xh
c3MgSklUOwogI2lmIEVOQUJMRShERkdfSklUKQogICAgIGZyaWVuZCBjbGFzcyBERkc6OlNwZWN1
bGF0aXZlSklUOwpAQCAtMzksMTIgKzQyLDEyIEBAIGNsYXNzIEdlbmVyYXRvckZyYW1lIDogcHVi
bGljIEpTQ2VsbCB7CiAjZW5kaWYKICAgICBmcmllbmQgY2xhc3MgVk07CiBwdWJsaWM6Ci0gICAg
dHlwZWRlZiBKU0NlbGwgQmFzZTsKLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJl
RmxhZ3MgPSBTdHJ1Y3R1cmVJc0ltbW9ydGFsIHwgQmFzZTo6U3RydWN0dXJlRmxhZ3M7CisgICAg
dHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CiAKICAgICBERUNMQVJFX0VYUE9SVF9JTkZP
OwogCi0gICAgc3RhdGljIEdlbmVyYXRvckZyYW1lKiBjcmVhdGUoVk0mLCBzaXplX3QgbnVtYmVy
T2ZDYWxsZWVMb2NhbHMpOworICAgIHN0YXRpYyBHZW5lcmF0b3JGcmFtZSogY3JlYXRlKEV4ZWNT
dGF0ZSosIHNpemVfdCBudW1iZXJPZkNhbGxlZUxvY2Fscyk7CisgICAgc3RhdGljIEdlbmVyYXRv
ckZyYW1lKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqLCBzaXplX3QgbnVtYmVyT2ZDYWxsZWVMb2Nh
bHMpOwogCiAgICAgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiogbG9jYWxzKCkKICAgICB7CkBA
IC01Myw3ICs1Niw2IEBAIGNsYXNzIEdlbmVyYXRvckZyYW1lIDogcHVibGljIEpTQ2VsbCB7CiAK
ICAgICBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+JiBsb2NhbEF0KHNpemVfdCBpbmRleCkKICAg
ICB7Ci0gICAgICAgIEFTU0VSVChpbmRleCA8IG1fbnVtYmVyT2ZDYWxsZWVMb2NhbHMpOwogICAg
ICAgICByZXR1cm4gbG9jYWxzKClbaW5kZXhdOwogICAgIH0KIApAQCAtNjIsNiArNjQsMjEgQEAg
Y2xhc3MgR2VuZXJhdG9yRnJhbWUgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAgICAgcmV0dXJuIFdU
Rjo6cm91bmRVcFRvTXVsdGlwbGVPZjxzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KT4oc2l6
ZW9mKEdlbmVyYXRvckZyYW1lKSk7CiAgICAgfQogCisgICAgc3RhdGljIHNpemVfdCBsb2NhbE9m
ZnNldCh1bnNpZ25lZCBpbmRleCkKKyAgICB7CisgICAgICAgIHJldHVybiBvZmZzZXRPZkxvY2Fs
cygpICsgaW5kZXggKiBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KTsKKyAgICB9CisKKyAg
ICBzdGF0aWMgc2l6ZV90IG51bWJlck9mQ2FsbGVlTG9jYWxzT2Zmc2V0KCkKKyAgICB7CisgICAg
ICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoR2VuZXJhdG9yRnJhbWUsIG1fbnVtYmVyT2ZDYWxs
ZWVMb2NhbHMpOworICAgIH0KKworICAgIHN0YXRpYyBzaXplX3QgbnVtYmVyT2ZTYXZlZENhbGxl
ZUxvY2Fsc09mZnNldCgpCisgICAgeworICAgICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEdl
bmVyYXRvckZyYW1lLCBtX251bWJlck9mU2F2ZWRDYWxsZWVMb2NhbHMpOworICAgIH0KKwogICAg
IHN0YXRpYyBzaXplX3QgYWxsb2NhdGlvblNpemVGb3JMb2NhbHModW5zaWduZWQgbnVtYmVyT2ZM
b2NhbHMpCiAgICAgewogICAgICAgICByZXR1cm4gb2Zmc2V0T2ZMb2NhbHMoKSArIG51bWJlck9m
TG9jYWxzICogc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPik7CkBAIC03MywxNiArOTAsMTYg
QEAgY2xhc3MgR2VuZXJhdG9yRnJhbWUgOiBwdWJsaWMgSlNDZWxsIHsKICAgICB2b2lkIHJlc3Vt
ZShFeGVjU3RhdGUqLCBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlQ2FsbGVlTG9jYWxzKTsKIAog
cHJpdmF0ZToKLSAgICBHZW5lcmF0b3JGcmFtZShWTSYsIHNpemVfdCBudW1iZXJPZkNhbGxlZUxv
Y2Fscyk7CisgICAgR2VuZXJhdG9yRnJhbWUoVk0mLCBTdHJ1Y3R1cmUqLCB1aW50MzJfdCBudW1i
ZXJPZkNhbGxlZUxvY2Fscyk7CiAKLSAgICBzaXplX3QgbV9udW1iZXJPZkNhbGxlZUxvY2FsczsK
KyAgICB1aW50MzJfdCBtX251bWJlck9mQ2FsbGVlTG9jYWxzOworICAgIHVpbnQzMl90IG1fbnVt
YmVyT2ZTYXZlZENhbGxlZUxvY2FscyB7IDAgfTsKIAogICAgIGZyaWVuZCBjbGFzcyBMTEludE9m
ZnNldHNFeHRyYWN0b3I7CiAKLSAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7Ci0KIHByb3Rl
Y3RlZDoKICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9y
Jik7CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
SlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5j
cHAKaW5kZXggNzY5YTNlZmIzMDQzOGRjZDlkZGU0NDJkYzg4OTRhMWYwMzgyYTUwNC4uOGNiODRh
YmU1Zjg3MzlhMDE4ZTYyZWE0OGY0NzE0NDQ3OTU1MWQzZCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtNTAsNiArNTAsNyBAQAog
I2luY2x1ZGUgIkVycm9yUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiRnVuY3Rpb25Db25zdHJ1Y3Rv
ci5oIgogI2luY2x1ZGUgIkZ1bmN0aW9uUHJvdG90eXBlLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9y
RnJhbWUuaCIKICNpbmNsdWRlICJHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmgiCiAjaW5j
bHVkZSAiR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaCIKICNpbmNsdWRlICJHZW5lcmF0b3JQ
cm90b3R5cGUuaCIKQEAgLTM4OCw2ICszODksNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojppbml0
KFZNJiB2bSkKICAgICAKICAgICBGT1JfRUFDSF9CVUlMVElOX0RFUklWRURfSVRFUkFUT1JfVFlQ
RShDUkVBVEVfUFJPVE9UWVBFX0ZPUl9ERVJJVkVEX0lURVJBVE9SX1RZUEUpCiAgICAgbV9wcm9w
ZXJ0eU5hbWVJdGVyYXRvclN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIEpTUHJvcGVydHlOYW1lSXRl
cmF0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9pdGVyYXRvclByb3RvdHlwZS5nZXQo
KSkpOworICAgIG1fZ2VuZXJhdG9yRnJhbWVTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBHZW5lcmF0
b3JGcmFtZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBqc051bGwoKSkpOwogICAgIG1fZ2Vu
ZXJhdG9yUHJvdG90eXBlLnNldCh2bSwgdGhpcywgR2VuZXJhdG9yUHJvdG90eXBlOjpjcmVhdGUo
dm0sIHRoaXMsIEdlbmVyYXRvclByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBt
X2l0ZXJhdG9yUHJvdG90eXBlLmdldCgpKSkpOwogICAgIAogI3VuZGVmIENSRUFURV9QUk9UT1RZ
UEVfRk9SX0RFUklWRURfSVRFUkFUT1JfVFlQRQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5kZXggYjRmZjJmYjQxM2UwZTQ0NjI0OTJhNDhhM2Zk
NWE0YzI0ZWEwYjc0MS4uNzFkMzllYzkyODNhZDllNTkwMTI0NGYwMTM2YTEzNThmNTQ0YTk5MyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBA
IC0yNTUsNiArMjU1LDcgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50
ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9jYWxsYmFj
a0Z1bmN0aW9uU3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fY2FsbGJh
Y2tPYmplY3RTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9wcm9wZXJ0
eU5hbWVJdGVyYXRvclN0cnVjdHVyZTsKKyAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2dl
bmVyYXRvckZyYW1lU3RydWN0dXJlOwogI2lmIEpTQ19PQkpDX0FQSV9FTkFCTEVECiAgICAgV3Jp
dGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9vYmpjQ2FsbGJhY2tGdW5jdGlvblN0cnVjdHVyZTsKICAg
ICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX29iamNXcmFwcGVyT2JqZWN0U3RydWN0dXJlOwpA
QCAtNTAxLDYgKzUwMiw3IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVu
dGVkVmFyaWFibGVPYmplY3QgewogICAgIFN0cnVjdHVyZSogY2FsbGJhY2tGdW5jdGlvblN0cnVj
dHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FsbGJhY2tGdW5jdGlvblN0cnVjdHVyZS5nZXQoKTsg
fQogICAgIFN0cnVjdHVyZSogY2FsbGJhY2tPYmplY3RTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVy
biBtX2NhbGxiYWNrT2JqZWN0U3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBwcm9w
ZXJ0eU5hbWVJdGVyYXRvclN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvcGVydHlOYW1l
SXRlcmF0b3JTdHJ1Y3R1cmUuZ2V0KCk7IH0KKyAgICBTdHJ1Y3R1cmUqIGdlbmVyYXRvckZyYW1l
U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9nZW5lcmF0b3JGcmFtZVN0cnVjdHVyZS5nZXQo
KTsgfQogI2lmIEpTQ19PQkpDX0FQSV9FTkFCTEVECiAgICAgU3RydWN0dXJlKiBvYmpjQ2FsbGJh
Y2tGdW5jdGlvblN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fb2JqY0NhbGxiYWNrRnVuY3Rp
b25TdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIG9iamNXcmFwcGVyT2JqZWN0U3Ry
dWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9vYmpjV3JhcHBlck9iamVjdFN0cnVjdHVyZS5nZXQo
KTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCmluZGV4IDBlNDRjMzQ2MGY5Zjhm
MGRjYjM1ZDkxMmQ3OTVmN2Y5OGRmYjdmNDUuLjBlZjI1ZTcyOWFhNmU1NWMzZGNhMDYxYzIyYjY1
YWE2ZjdiNWIzNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZN
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKQEAgLTI0Niw3
ICsyNDYsNiBAQCBzdGF0aWMgYm9vbCBlbmFibGVBc3NlbWJsZXIoRXhlY3V0YWJsZUFsbG9jYXRv
ciYgZXhlY3V0YWJsZUFsbG9jYXRvcikKICAgICBpbmZlcnJlZFR5cGVTdHJ1Y3R1cmUuc2V0KCp0
aGlzLCBJbmZlcnJlZFR5cGU6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsK
ICAgICBpbmZlcnJlZFR5cGVUYWJsZVN0cnVjdHVyZS5zZXQoKnRoaXMsIEluZmVycmVkVHlwZVRh
YmxlOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgZnVuY3Rpb25S
YXJlRGF0YVN0cnVjdHVyZS5zZXQoKnRoaXMsIEZ1bmN0aW9uUmFyZURhdGE6OmNyZWF0ZVN0cnVj
dHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKLSAgICBnZW5lcmF0b3JGcmFtZVN0cnVjdHVyZS5z
ZXQoKnRoaXMsIEdlbmVyYXRvckZyYW1lOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVs
bCgpKSk7CiAgICAgZXhjZXB0aW9uU3RydWN0dXJlLnNldCgqdGhpcywgRXhjZXB0aW9uOjpjcmVh
dGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgcHJvbWlzZURlZmVycmVkU3Ry
dWN0dXJlLnNldCgqdGhpcywgSlNQcm9taXNlRGVmZXJyZWQ6OmNyZWF0ZVN0cnVjdHVyZSgqdGhp
cywgMCwganNOdWxsKCkpKTsKICAgICBpbnRlcm5hbFByb21pc2VEZWZlcnJlZFN0cnVjdHVyZS5z
ZXQoKnRoaXMsIEpTSW50ZXJuYWxQcm9taXNlRGVmZXJyZWQ6OmNyZWF0ZVN0cnVjdHVyZSgqdGhp
cywgMCwganNOdWxsKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1ZNLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCmluZGV4IGFlZTBh
YzFmMjFiODQ1MWJjNzc2NzQ0M2EwYjA1Y2EwNDhiNGY0OWIuLjIzNjA4MzcwYTk4MzZkODk3N2U0
OWQ3MWU2OGE4MDliOWFjNDUzNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ZNLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaApAQCAt
MzEyLDcgKzMxMiw2IEBAIGNsYXNzIFZNIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFZN
PiB7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gaW5mZXJyZWRUeXBlU3RydWN0dXJlOwogICAgIFN0
cm9uZzxTdHJ1Y3R1cmU+IGluZmVycmVkVHlwZVRhYmxlU3RydWN0dXJlOwogICAgIFN0cm9uZzxT
dHJ1Y3R1cmU+IGZ1bmN0aW9uUmFyZURhdGFTdHJ1Y3R1cmU7Ci0gICAgU3Ryb25nPFN0cnVjdHVy
ZT4gZ2VuZXJhdG9yRnJhbWVTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gZXhjZXB0
aW9uU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHByb21pc2VEZWZlcnJlZFN0cnVj
dHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBpbnRlcm5hbFByb21pc2VEZWZlcnJlZFN0cnVj
dHVyZTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>269164</attachid>
            <date>2016-01-16 03:00:26 -0800</date>
            <delta_ts>2016-01-16 07:00:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-152723-20160116195955.patch</filename>
            <type>text/plain</type>
            <size>101890</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk1MDU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
ZDVkMzdhNWE2NzE2ZmQyMWY5YzRiYzhlZDg0OGZkNTlhZjU1NTgzLi5jODNjMWJkYTUwMzY3OWI2
MmE2ZTM1ODY5ZWJlNDMyMmIwNzVmZGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMjEgQEAKKzIwMTYtMDEtMTYgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgQ3JlYXRlIEdlbmVyYXRvckZyYW1lIHdpdGggdGhlIGJ5dGVjb2Rl
IG9wX25ld19nZW5lcmF0b3JfZnJhbWUgYW5kIG1ha2Ugb3Bfc2F2ZSAvIG9wX3Jlc3VtZSBERkcv
RlRMIGNhcGFibGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1MjcyMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEluIHRoaXMgcGF0Y2gsIHdlIGltcGxlbWVudCBERkcgLyBGVEwgY2FwYWJpbGUgRVM2IGdl
bmVyYXRvcnMuCisgICAgICAgIFdlIGludHJvZHVjZSB0aGUgc2V2ZXJhbCBieXRlY29kZXMgYW5k
IGNvbXBpbGUgdGhlbSBpbiBERkcgLyBGVEwuCisKKyAgICAgICAgLSBvcF9ub3AKKworICAgICAg
ICAgICAgTm9wIG9wZXJhdGlvbiBpbiB0aGUgYnl0ZWNvZGUuIFRoaXMgaXMgdXNlZCB0byByZXBy
ZXNlbnQgaG9sZXMgaW4gdGhlIGJ5dGVjb2RlIHN0cmVhbS4KKyAgICAgICAgICAgIFRoZXNlIGJ5
dGVjb2RlcyBjb3VsZCBiZSByZXBsYWNlZCAoU2ltaWxhciB0byB0aGUgTExWTSBwYXRjaHBvaW50
KS4KKworICAgICAgICAtIG9wX25ld19nZW5lcmF0b3JfZnJhbWUKKworICAgICAgICAgICAgQWxs
b2NhdGUgR2VuZXJhdG9yRnJhbWUgaW4gdGhlIGJ5dGVjb2RlIGluc3RlYWQgb2YgYWxsb2NhdGlu
ZyBpdCBpbiB0aGUgb3Bfc2F2ZS4KKworICAgICAgICAtIG9wX3NhdmVfaGludAorCisgICAgICAg
ICAgICBUaGlzIGlzIHByZXZpb3VzIG9wX3NhdmUuIFRoaXMgb3Bfc2F2ZV9oaW50IGlzIG9ubHkg
dXNlZCBmb3IgdGhlIGJ5dGVjb2RlIHVzZS1kZWYgYW5hbHlzaXMuIE9uY2UgdGhlIGFuYWx5c2lz
IGlzIGRvbmUgaW4gQ29kZUJsb2NrIGNyZWF0aW9uIHBoYXNlLAorICAgICAgICAgICAgd2Ugd2ls
bCBjb252ZXJ0IHRoaXMgYnl0ZWNvZGUgdG8gb3Bfc2F2ZS4KKyAgICAgICAgICAgIFdoaWxlIG9w
X3NhdmVfaGludCBoYXMgYSBwc2V1ZG8ganVtcCB0byB0aGUgZ2VuZXJhdG9yIGNvbnRpbnVhdGlv
biBtZXJnZSBwb2ludCwgb3Bfc2F2ZSBkb2VzIG5vdCBoYXZlIGl0LiBUaGlzIHBzZXVkbyBqdW1w
IGlzIG5lY2Vzc2FyeSBmb3IKKyAgICAgICAgICAgIHRoZSBieXRlY29kZSB1c2UtZGVmIGFuYWx5
c2lzLiBUaGlzIGJ5dGVjb2RlIHVzZS1kZWYgYW5hbHlzaXMgaXMgdXNlZCB0byBkaXNjb3ZlciBs
aXZlIHZhcmlhYmxlcyBpbiB0aGUgZ2VuZXJhdG9yIGNvbnRpbnVhdGlvbiBtZXJnZSBwb2ludC4K
KworICAgICAgICAgICAgVGhlIGdlbmVyYXRvciBjb250aW51YXRpb24gbWVyZ2UgcG9pbnQgaXMg
dGhlIHBvaW50IHRoYXQgbWVyZ2luZyB0aGUgMiBiYXNpYyBibG9ja3MsIHNhdmluZyBsb2NhbHMg
dG8gdGhlIGdlbmVyYXRvciBmcmFtZSBhbmQgcmVzbWluZyBsb2NhbHMgZnJvbQorICAgICAgICAg
ICAgdGhlIGdlbmVyYXRvciBmcmFtZS4KKworICAgICAgICAtIG9wX3NhdmUKKworICAgICAgICAg
ICAgU2ltaWxhciB0byB0aGUgcHJldmlvdXMgb3Bfc2F2ZS4gSXQgdXNlcyBsb2NhbHMgYW5kIHNh
dmVzIHRoZW0gdG8gdGhlIGdlbmVyYXRvciBmcmFtZS4gQXQgdGhhdCB0aW1lLCB3ZSB3aWxsIHNl
dCBHZW5lcmF0b3JGcmFtZTo6bV9udW1iZXJPZlNhdmVkQ2FsbGVlTG9jYWxzIGFzICpOKgorICAg
ICAgICAgICAgdG8gYWxsb2NhdGUgc3BhY2UgZm9yIHNhdmVkIGxvY2Fscy4KKworICAgICAgICAt
IG9wX3Jlc3VtZV9oaW50CisKKyAgICAgICAgICAgIFNpbWlsYXIgdG8gdGhlIG9wX3NhdmVfaGlu
dCwgdGhpcyBpcyBvbmx5IHVzZWQgZm9yIHRoZSBieXRlY29kZSB1c2UtZGVmIGFuYWx5c2lzLiBv
cF9yZXN1bWVfaGludCBsZWFkcyBzZXZlcmFsIG9wX25vcCBvcGVyYXRpb25zLgorICAgICAgICAg
ICAgQWZ0ZXIgdGhlIGFuYWx5c2lzLCB3ZSBleHBsb2l0IHRoZSBuZWVkZWQgZGVmcyBmb3IgdGhp
cyByZXN1bWUgcG9pbnQgYW5kIHJlcGxhY2UgdGhpcyBieXRlY29kZSBhbmQgb3Bfbm9wIHdpdGgg
b3BfcmVzdW1lX2Zyb21fZ2VuZXJhdG9yX2ZyYW1lIG9wZXJhdGlvbnMuCisgICAgICAgICAgICBU
aGlzIG1ha2VzIERGRyBTZXRMb2NhbCB0cmVhdG1lbnQgc2ltcGxlLiBXaGlsZSBvcF9yZXN1bWVf
aGludCBkZWZpbmVzIG11bHRpcGxlIGxvY2Fscywgb3BfcmVzdW1lX2Zyb21fZ2VuZXJhdG9yX2Zy
YW1lIG9ubHkgZGVmaW5lcyBvbmUgbG9jYWwgKGRzdCkuCisKKyAgICAgICAgLSBvcF9yZXN1bWVf
ZnJvbV9nZW5lcmF0b3JfZnJhbWUKKworICAgICAgICAgICAgVGhpcyByZXRyaWV2ZXMgbG9jYWwg
dmFyaWFibGUgZnJvbSB0aGUgZ2VuZXJhdG9yIGZyYW1lLiBvcF9yZXN1bWVfaGludCBhbmQgc3Vi
c2VxdWVudCBvcF9ub3Agd2lsbCBiZSByZXBsYWNlZCB3aXRoIHRoaXMuCisKKyAgICAgICAgLSBv
cF9jbGVhcl9nZW5lcmF0b3JfZnJhbWUKKworICAgICAgICAgICAgVGhpcyBjbGVhcnMgZ2VuZXJh
dG9yIGZyYW1lJ3MgbG9jYWxzIGJ5IHNldHRpbmcgR2VuZXJhdG9yRnJhbWU6Om1fbnVtYmVyT2ZT
YXZlZENhbGxlZUxvY2FscyBhcyAwLgorCisKKyAgICAgICAgSGVyZSwgd2UgZXhwbGFpbiBhYm91
dCBob3cgdG8gcHJlcHJvY2VzcyBieXRlY29kZXMuCisgICAgICAgIEZpcnN0LCB3ZSBlbWl0IG9w
X3NhdmVfaGludCwgb3BfcmVzdW1lX2hpbnQgYW5kIG9wX2NsZWFyX2dlbmVyYXRvcl9mcmFtZSBs
aWtlIHRoaXMuCisKKyAgICAgICAgW2VudHJ5XSAtKy0tPiBbc2F2ZSBibG9ja10gLT4gb3Bfc2F2
ZV9oaW50IChpdCBpcyBicmFuY2hpbmcgYnl0ZWNvZGUpIC0tLS0tLT4gW21lcmdlIGJsb2NrXSAt
PiAuLi4KKyAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorICAgICAgICAgICAgICAgICB8
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICstPiBvcF9yZXQgICAgICAgICAgICAg
ICAgICAgICAgICB8CisgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0+IG9wX3Jl
c3VtZV9oaW50IC0+IG9wX2NsZWFyX2dlbmVyYXRvcl9mcmFtZSAtLS0tLSsKKworICAgICAgICBB
bmQgcGVyZm9ybSBieXRlY29kZSB1c2UtZGVmIGFuYWx5c2lzIG9udG8gdGhpcyBDRkcuIEJ5IHNl
ZWluZyBsaXZlIGxvY2FscyBhdCB0aGUgaGVhZCBvZiBbbWVyZ2UgYmxvY2tdIHdlIGNhbiBmaW5k
ICJ3aGljaCBsb2NhbHMgd2Ugc2hvdWxkIHNhdmUgYW5kIHJlc3VtZSIuCisgICAgICAgIEJhc2Vk
IG9uIHRoZSBhYm92ZSBhbmFseXNpcyByZXN1bHQsIHdlIHBhdGNoIHRoZSBieXRlY29kZSBzdHJl
YW0gYXMgZm9sbG93cy4KKworICAgICAgICBbZW50cnldIC0rLS0+IFtzYXZlIGJsb2NrXSAtPiBv
cF9zYXZlIC0+IG9wX3JldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArLT4gW21lcmdl
IGJsb2NrXSAtPiAuLi4KKyAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAg
ICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgICAgICAgICAgICstLT4gb3BfcmVzdW1lX2Zy
b21fZ2VuZXJhdG9yX2ZyYW1lICogbiAtPiBvcF9jbGVhcl9nZW5lcmF0b3JfZnJhbWUgLSsKKwor
ICAgICAgICBXaGlsZSBvcF9yZXN1bWVfaGludCB3aWxsIGF0dGVtcHQgdG8gZGVmaW5lIG11bHRp
cGxlIGxvY2FscyBhdCBhIHRpbWUsIG9wX3Jlc3VtZV9mcm9tX2dlbmVyYXRvcl9mcmFtZSBvbmx5
IGRlZmluZXMgb25lIGxvY2FsLiBJdCBzaW1wbGlmaWVzIERGRyBhbmFseXNpcy4KKworICAgICAg
ICBBbmQgd2UgaW50cm9kdWNlcyBzZXZlcmFsIERGRyBub2Rlcy4KKworICAgICAgICAtIE5ld0dl
bmVyYXRvckZyYW1lCisKKyAgICAgICAgICAgIFRoaXMganVzdCBhbGxvY2F0ZXMgR2VuZXJhdG9y
RnJhbWUuCisKKyAgICAgICAgLSBQdXRHZW5lcmF0b3JGcmFtZUxvY2FscworCisgICAgICAgICAg
ICBUaGlzIHNldCBHZW5lcmF0b3JGcmFtZTo6bV9udW1iZXJPZlNhdmVkQ2FsbGVlTG9jYWxzICpO
Ki4gVGhpcyBub2RlIGlzIHVzZWQgdG8gKDEpIGFsbG9jYXRlIHNwYWNlIGZvciBsb2NhbHMgaW4g
R2VuZXJhdG9yRnJhbWUgYW5kICgyKSBkZWFsbG9jYXRlIHNwYWNlIGluCisgICAgICAgICAgICBH
ZW5lcmF0b3JGcmFtZSBieSBzZXR0aW5nIGl0IGFzIDAuCisKKyAgICAgICAgLSBHZXRHZW5lcmF0
b3JMb2NhbAorCisgICAgICAgICAgICBHZXQgYSBzYXZlZCBsb2NhbCB2YXJpYWJsZSBmcm9tIGEg
Z2VuZXJhdG9yIGZyYW1lLiBHZXRHZW5lcmF0b3JMb2NhbCBhbmQgU2V0R2VuZXJhdG9yTG9jYWwg
YXJlIGxpbmtlZCB3aXRoIEdlbmVyYXRvckxvY2FsRGF0YS4gU28gdHlwZSBwcmVkaWNhdGlvbiBh
bmQgZmxhZ3MKKyAgICAgICAgICAgIGFyZSBjb3JyZWN0bHkgcHJvcGFnYXRlZCBiZXlvbmQgdGhl
IGdlbmVyYXRvciBmcmFtZS4KKworICAgICAgICAtIFNldEdlbmVyYXRvckxvY2FsCisKKyAgICAg
ICAgICAgIFN0b3JlIGEgbG9jYWwgdmFyaWFibGUgdG8gYSBnZW5lcmF0b3IgZnJhbWUuCisKKyAg
ICAgICAgRnV0dXJlIHBsYW5zIGFyZSB0aGUgZm9sbG93aW5ncy4KKworICAgICAgICAxLiBDcmVh
dGUgSlNHZW5lcmF0b3IgYW5kIGFsbG9jYXRlIGl0IGluIHRoZSBnZW5lcmF0b3Igd3JhcHBlciBm
dW5jdGlvbi4gVGhpcyBzaG91bGQgYmUgY29tcGlsZWQgaW4gREZHIC8gRlRMIGFuZAorICAgICAg
ICB0aGlzIG9iamVjdCBzaG91bGQgYmUgdHJhY2tlZCAoYnkgZXNjYXBlIGFuYWx5c2lzKSBhbmQg
ZWxpbWluYXRlZCBpZiBwb3NzaWJsZSBieSBvYmplY3QgYWxsb2NhdGlvbiBlbGltaW5hdGlvbi4K
KworICAgICAgICAyLiBBbmQgb25jZSB3ZSBleHBsb2l0IHRoYXQgR2VuZXJhdG9yRnJhbWUgaXMg
bm90IGVzY2FwZWQgZnJvbSB0aGUgZ2l2ZW4gRlRMLWVkIGZ1bmN0aW9uLCB3ZSB3aWxsIGVsaW1p
bmF0ZSBHZW5lcmF0b3JGcmFtZSBhbGxvY2F0aW9uIGFuZAorICAgICAgICBjb252ZXJ0IEdlbmVy
YXRvckxvY2FsIG9wZXJhdGlvbnMgaW50byBnZXQvc2V0IGxvY2FsIG9wZXJhdGlvbnMuCisKKyAg
ICAgICAgKiBidWlsdGlucy9HZW5lcmF0b3JQcm90b3R5cGUuanM6CisgICAgICAgIChnZW5lcmF0
b3JSZXN1bWUpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5jcHA6Cisg
ICAgICAgIChKU0M6OmlzQnJhbmNoKToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpc3Qu
anNvbjoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZVVzZURlZi5oOgorICAgICAgICAoSlND
Ojpjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZURl
ZnNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoK
KyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpD
b2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBieXRlY29kZS9QcmVjaXNlSnVt
cFRhcmdldHMuY3BwOgorICAgICAgICAoSlNDOjpnZXRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zm
c2V0KToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IpOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0dlbmVyYXRvckZyYW1lKToKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRTYXZlKToKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXN1bWUpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJh
dG9yRnJhbWVSZWdpc3Rlcik6CisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0SGVhcC5oOgorICAg
ICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlND
OjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZm
ZWN0cyk6CisgICAgICAgICogZGZnL0RGR0JhY2t3YXJkc1Byb3BhZ2F0aW9uUGhhc2UuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OkJhY2t3YXJkc1Byb3BhZ2F0aW9uUGhhc2U6OnByb3BhZ2F0ZSk6
CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpCeXRlQ29kZVBhcnNlcjo6bmV3R2VuZXJhdG9yTG9jYWxEYXRhKToKKyAgICAgICAgKEpTQzo6
REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RGR0NhcGFi
aWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Y2FwYWJpbGl0eUxldmVsKToKKyAgICAg
ICAgKiBkZmcvREZHQ2xvYmJlcml6ZS5oOgorICAgICAgICAoSlNDOjpERkc6OmNsb2JiZXJpemUp
OgorICAgICAgICAqIGRmZy9ERkdDbG9iYmVyc0V4aXRTdGF0ZS5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6Y2xvYmJlcnNFeGl0U3RhdGUpOgorICAgICAgICAqIGRmZy9ERkdEb2VzR0MuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OmRvZXNHQyk6CisgICAgICAgICogZGZnL0RGR0ZpeHVwUGhhc2Uu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwTm9kZSk6CisgICAgICAg
ICogZGZnL0RGR0dlbmVyYXRvckxvY2FsRGF0YS5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6REZH
OjpHZW5lcmF0b3JMb2NhbERhdGE6OnByZWRpY3QpOgorICAgICAgICAoSlNDOjpERkc6OkdlbmVy
YXRvckxvY2FsRGF0YTo6cHJlZGljdGlvbik6CisgICAgICAgIChKU0M6OkRGRzo6R2VuZXJhdG9y
TG9jYWxEYXRhOjpmbGFncyk6CisgICAgICAgIChKU0M6OkRGRzo6R2VuZXJhdG9yTG9jYWxEYXRh
OjptZXJnZUZsYWdzKToKKyAgICAgICAgKiBkZmcvREZHR3JhcGguaDoKKyAgICAgICAgKiBkZmcv
REZHTWF5RXhpdC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6bWF5RXhpdCk6CisgICAgICAgICog
ZGZnL0RGR05vZGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNHZW5lcmF0b3JMb2Nh
bHNTaXplKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpnZW5lcmF0b3JMb2NhbHNTaXplKToK
KyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNHZW5lcmF0b3JMb2NhbEluZGV4KToKKyAgICAg
ICAgKEpTQzo6REZHOjpOb2RlOjpnZW5lcmF0b3JMb2NhbEluZGV4KToKKyAgICAgICAgKEpTQzo6
REZHOjpOb2RlOjpoYXNHZW5lcmF0b3JMb2NhbERhdGEpOgorICAgICAgICAoSlNDOjpERkc6Ok5v
ZGU6OmdlbmVyYXRvckxvY2FsRGF0YSk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzR2Vu
ZXJhdG9yRnJhbWVMb2NhbHMpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmdlbmVyYXRvckZy
YW1lTG9jYWxzKToKKyAgICAgICAgKiBkZmcvREZHTm9kZVR5cGUuaDoKKyAgICAgICAgKiBkZmcv
REZHT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuaDoKKyAgICAg
ICAgKiBkZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlND
OjpERkc6OlByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlOjpwcm9wYWdhdGUpOgorICAgICAgICAq
IGRmZy9ERkdTYWZlVG9FeGVjdXRlLmg6CisgICAgICAgIChKU0M6OkRGRzo6c2FmZVRvRXhlY3V0
ZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld0dlbmVyYXRvckZyYW1lKToKKyAgICAgICAg
KiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVK
SVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUp
OgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1N0b3JlQmFy
cmllckluc2VydGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHU3RydWN0dXJlUmVnaXN0
cmF0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlN0cnVjdHVyZVJlZ2lzdHJhdGlv
blBoYXNlOjpydW4pOgorICAgICAgICAqIGZ0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNw
cDoKKyAgICAgICAgKiBmdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oOgorICAgICAgICAq
IGZ0bC9GVExDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmNhbkNvbXBpbGUp
OgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvTExWTS5jcHA6CisgICAgICAgIChKU0M6OkZU
TDo6REZHOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpGVEw6
OkRGRzo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVQdXRHZW5lcmF0b3JGcmFtZUxvY2Fscyk6Cisg
ICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZVNldEdlbmVyYXRv
ckxvY2FsKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9MTFZNOjpjb21waWxl
R2V0R2VuZXJhdG9yTG9jYWwpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0xM
Vk06OmNvbXBpbGVOZXdHZW5lcmF0b3JGcmFtZSk6CisgICAgICAgICogaml0L0pJVC5jcHA6Cisg
ICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcyk6CisgICAgICAgICogaml0
L0pJVC5oOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX3Jlc3VtZV9mcm9tX2dlbmVyYXRvcl9mcmFtZSk6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdF9vcF9jbGVhcl9nZW5lcmF0b3JfZnJhbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRfb3BfbmV3X2dlbmVyYXRvcl9mcmFtZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9u
b3ApOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcmVzdW1lKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBsbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwOgorICAgICAgICAqIGxsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXI2NC5hc206CisgICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6CisgICAgICAgIChKU0M6OlBh
cnNlcjxMZXhlclR5cGU+OjpwYXJzZUlubmVyKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVy
VHlwZT46OnBhcnNlR2VuZXJhdG9yRnVuY3Rpb25Tb3VyY2VFbGVtZW50cyk6CisgICAgICAgIChK
U0M6OlBhcnNlcjxMZXhlclR5cGU+OjpjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKToKKyAgICAg
ICAgKiBwYXJzZXIvUGFyc2VyLmg6CisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMu
Y3BwOgorICAgICAgICAoSlNDOjpTTE9XX1BBVEhfREVDTCk6CisgICAgICAgICogcnVudGltZS9D
b21tb25TbG93UGF0aHMuaDoKKyAgICAgICAgKiBydW50aW1lL0dlbmVyYXRvckZyYW1lLmNwcDoK
KyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OkdlbmVyYXRvckZyYW1lKToKKyAgICAgICAg
KEpTQzo6R2VuZXJhdG9yRnJhbWU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6R2Vu
ZXJhdG9yRnJhbWU6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZy
YW1lOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6c2F2ZSk6CisgICAg
ICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpyZXN1bWUpOgorICAgICAgICAoSlNDOjpHZW5lcmF0
b3JGcmFtZTo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9HZW5lcmF0b3JGcmFt
ZS5oOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6bG9jYWxPZmZzZXQpOgorICAgICAg
ICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6bnVtYmVyT2ZDYWxsZWVMb2NhbHNPZmZzZXQpOgorICAg
ICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6bnVtYmVyT2ZTYXZlZENhbGxlZUxvY2Fsc09mZnNl
dCk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpsb2NhbEF0KTogRGVsZXRlZC4KKyAg
ICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9i
YWxPYmplY3Q6OmluaXQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAg
ICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmdlbmVyYXRvckZyYW1lU3RydWN0dXJlKToKKyAg
ICAgICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OlZNKTogRGVsZXRlZC4K
KyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisKIDIwMTYtMDEtMTMgIENhcmxvcyBHYXJjaWEgQ2Ft
cG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtDTWFrZV0gRG8gbm90IHVzZSBM
TFZNIHN0YXRpYyBsaWJyYXJpZXMgZm9yIEZUTCBKSVQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9idWlsdGlucy9HZW5lcmF0b3JQcm90b3R5cGUuanMgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnVpbHRpbnMvR2VuZXJhdG9yUHJvdG90eXBlLmpzCmluZGV4IGEzYmJjMzUzNGFl
MDUyZjRkNmZhMjViZGU3MDNjOTNkM2E3OTVlMTEuLjQ5ZGRiZjljODQ2OTMzMDY1ODcxMWYxOGU3
MjE0OWJjOTgyMmRhMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlu
cy9HZW5lcmF0b3JQcm90b3R5cGUuanMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0
aW5zL0dlbmVyYXRvclByb3RvdHlwZS5qcwpAQCAtNTgsNyArNTgsNyBAQCBmdW5jdGlvbiBnZW5l
cmF0b3JSZXN1bWUoZ2VuZXJhdG9yLCBzZW50VmFsdWUsIHJlc3VtZU1vZGUpCiAgICAgfSBlbHNl
IHsKICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgIGdlbmVyYXRvci5AZ2VuZXJhdG9yU3RhdGUg
PSBFeGVjdXRpbmc7Ci0gICAgICAgICAgICB2YWx1ZSA9IGdlbmVyYXRvci5AZ2VuZXJhdG9yTmV4
dC5AY2FsbChnZW5lcmF0b3IuQGdlbmVyYXRvclRoaXMsIGdlbmVyYXRvciwgc3RhdGUsIHNlbnRW
YWx1ZSwgcmVzdW1lTW9kZSk7CisgICAgICAgICAgICB2YWx1ZSA9IGdlbmVyYXRvci5AZ2VuZXJh
dG9yTmV4dC5AY2FsbChnZW5lcmF0b3IuQGdlbmVyYXRvclRoaXMsIGdlbmVyYXRvciwgc3RhdGUs
IHNlbnRWYWx1ZSwgcmVzdW1lTW9kZSwgZ2VuZXJhdG9yLkBnZW5lcmF0b3JGcmFtZSk7CiAgICAg
ICAgICAgICBpZiAoZ2VuZXJhdG9yLkBnZW5lcmF0b3JTdGF0ZSA9PT0gRXhlY3V0aW5nKSB7CiAg
ICAgICAgICAgICAgICAgZ2VuZXJhdG9yLkBnZW5lcmF0b3JTdGF0ZSA9IENvbXBsZXRlZDsKICAg
ICAgICAgICAgICAgICBkb25lID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5jcHAKaW5kZXggN2YxN2MwZWYxMGI0MzNm
YWM4ZjU4Y2IzYjljYTVkNGQwMTViYmEwOC4uNWFhMThlNGNhZjdhNTc1ZGQ2NDVkNmY2ZWQ3OTcy
OGFmNzNiZDI2ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlQmFzaWNCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlQmFzaWNCbG9jay5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgc3RhdGljIGJvb2wgaXNC
cmFuY2goT3Bjb2RlSUQgb3Bjb2RlSUQpCiAgICAgY2FzZSBvcF9zd2l0Y2hfaW1tOgogICAgIGNh
c2Ugb3Bfc3dpdGNoX2NoYXI6CiAgICAgY2FzZSBvcF9zd2l0Y2hfc3RyaW5nOgotICAgIGNhc2Ug
b3Bfc2F2ZToKKyAgICBjYXNlIG9wX3NhdmVfaGludDoKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCmluZGV4IDA1M2I4ZGM5Yjg2NGYxYjg2
YjRjZWM3YWE2MDFmN2NlMmYwM2YyZTQuLjA4YWFjMTIyNTljNjhkYTBlMWFiYzkwOTBiZTU0Yzk1
NWZiMzMwMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZUxpc3QuanNvbgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVMaXN0Lmpzb24KQEAgLTE2LDYgKzE2LDcgQEAKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9w
X25ld19hcnJheV93aXRoX3NpemUiLCAibGVuZ3RoIiA6IDQgfSwKICAgICAgICAgICAgIHsgIm5h
bWUiIDogIm9wX25ld19hcnJheV9idWZmZXIiLCAibGVuZ3RoIiA6IDUgfSwKICAgICAgICAgICAg
IHsgIm5hbWUiIDogIm9wX25ld19yZWdleHAiLCAibGVuZ3RoIiA6IDMgfSwKKyAgICAgICAgICAg
IHsgIm5hbWUiIDogIm9wX25ld19nZW5lcmF0b3JfZnJhbWUiLCAibGVuZ3RoIiA6IDMgfSwKICAg
ICAgICAgICAgIHsgIm5hbWUiIDogIm9wX21vdiIsICJsZW5ndGgiIDogMyB9LAogICAgICAgICAg
ICAgeyAibmFtZSIgOiAib3Bfbm90IiwgImxlbmd0aCIgOiAzIH0sCiAgICAgICAgICAgICB7ICJu
YW1lIiA6ICJvcF9lcSIsICJsZW5ndGgiIDogNCB9LApAQCAtMTM0LDcgKzEzNSwxMSBAQAogICAg
ICAgICAgICAgeyAibmFtZSIgOiAib3BfY29weV9yZXN0IiwgImxlbmd0aCI6IDQgfSwKICAgICAg
ICAgICAgIHsgIm5hbWUiIDogIm9wX2dldF9yZXN0X2xlbmd0aCIsICJsZW5ndGgiOiAzIH0sCiAg
ICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9zYXZlIiwgImxlbmd0aCIgOiA0IH0sCi0gICAgICAg
ICAgICB7ICJuYW1lIiA6ICJvcF9yZXN1bWUiLCAibGVuZ3RoIiA6IDMgfSwKKyAgICAgICAgICAg
IHsgIm5hbWUiIDogIm9wX3NhdmVfaGludCIsICJsZW5ndGgiIDogNCB9LAorICAgICAgICAgICAg
eyAibmFtZSIgOiAib3BfcmVzdW1lX2hpbnQiLCAibGVuZ3RoIiA6IDQgfSwKKyAgICAgICAgICAg
IHsgIm5hbWUiIDogIm9wX3Jlc3VtZV9mcm9tX2dlbmVyYXRvcl9mcmFtZSIsICJsZW5ndGgiIDog
NCB9LAorICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfY2xlYXJfZ2VuZXJhdG9yX2ZyYW1lIiwg
Imxlbmd0aCIgOiAyIH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9ub3AiLCAibGVuZ3Ro
IiA6IDEgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX3dhdGNoZG9nIiwgImxlbmd0aCIg
OiAxIH0KICAgICAgICAgXQogICAgIH0sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZVVzZURlZi5oCmluZGV4IDgwMTExNGMzNzJhMjc3ZjZlMTc3MDliOTBiZTIw
N2M4Zjk5YmU4MmQuLmRhZWY4MWMyNjliYjU0MTU0ZWE2YjZkYzgzOGFmYzY5Y2VlNzJjOTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCkBA
IC01NSw2ICs1NSw4IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCgKICAgICBj
YXNlIG9wX2NyZWF0ZV9vdXRfb2ZfYmFuZF9hcmd1bWVudHM6CiAgICAgY2FzZSBvcF9nZXRfcmVz
dF9sZW5ndGg6CiAgICAgY2FzZSBvcF93YXRjaGRvZzoKKyAgICBjYXNlIG9wX25ld19nZW5lcmF0
b3JfZnJhbWU6CisgICAgY2FzZSBvcF9ub3A6CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIG9w
X2Fzc2VydDoKICAgICBjYXNlIG9wX2dldF9zY29wZToKQEAgLTcyLDcgKzc0LDggQEAgdm9pZCBj
b21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAogICAgIGNhc2Ugb3Bfam5lcV9udWxsOgogICAg
IGNhc2Ugb3BfZGVjOgogICAgIGNhc2Ugb3BfaW5jOgotICAgIGNhc2Ugb3BfcmVzdW1lOiB7Cisg
ICAgY2FzZSBvcF9yZXN1bWVfaGludDoKKyAgICBjYXNlIG9wX2NsZWFyX2dlbmVyYXRvcl9mcmFt
ZTogewogICAgICAgICBBU1NFUlQob3Bjb2RlTGVuZ3Roc1tvcGNvZGVJRF0gPj0gMSk7CiAgICAg
ICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9u
WzFdLnUub3BlcmFuZCk7CiAgICAgICAgIHJldHVybjsKQEAgLTE2NSw3ICsxNjgsOCBAQCB2b2lk
IGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoCiAgICAgY2FzZSBvcF9uZXdfZ2VuZXJhdG9y
X2Z1bmM6CiAgICAgY2FzZSBvcF9nZXRfcGFyZW50X3Njb3BlOgogICAgIGNhc2Ugb3BfY3JlYXRl
X3Njb3BlZF9hcmd1bWVudHM6Ci0gICAgY2FzZSBvcF9nZXRfZnJvbV9hcmd1bWVudHM6IHsKKyAg
ICBjYXNlIG9wX2dldF9mcm9tX2FyZ3VtZW50czoKKyAgICBjYXNlIG9wX3Jlc3VtZV9mcm9tX2dl
bmVyYXRvcl9mcmFtZTogewogICAgICAgICBBU1NFUlQob3Bjb2RlTGVuZ3Roc1tvcGNvZGVJRF0g
Pj0gMik7CiAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQs
IGluc3RydWN0aW9uWzJdLnUub3BlcmFuZCk7CiAgICAgICAgIHJldHVybjsKQEAgLTI1MCw3ICsy
NTQsNyBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoCiAgICAgICAgICAgICBm
dW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBsYXN0QXJnICsgaSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgY2FzZSBvcF9zYXZlOiB7CisgICAgY2FzZSBvcF9z
YXZlX2hpbnQ6IHsKICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNv
ZGVJRCwgaW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKTsKICAgICAgICAgdW5zaWduZWQgbWVyZ2VQ
b2ludEJ5dGVjb2RlT2Zmc2V0ID0gYnl0ZWNvZGVPZmZzZXQgKyBpbnN0cnVjdGlvblszXS51Lm9w
ZXJhbmQ7CiAgICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogbWVyZ2VQb2ludEJsb2NrID0gbnVs
bHB0cjsKQEAgLTI2Niw2ICsyNzAsMTUgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zm
c2V0KAogICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICBjYXNlIG9wX3Nh
dmU6IHsKKyAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwg
aW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKTsKKyAgICAgICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxv
Y2Fsc0luZGV4ID0gaW5zdHJ1Y3Rpb25bMl0udS51bnNpZ25lZFZhbHVlOworICAgICAgICBjb25z
dCBGYXN0Qml0VmVjdG9yJiBsaXZlbmVzcyA9IGNvZGVCbG9jay0+bGl2ZUNhbGxlZUxvY2Fsc0F0
WWllbGQobGl2ZUNhbGxlZUxvY2Fsc0luZGV4KTsKKyAgICAgICAgbGl2ZW5lc3MuZm9yRWFjaFNl
dEJpdChbJl0odW5zaWduZWQgbG9jYWwpIHsKKyAgICAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2Nr
LCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGxvY2FsKS5v
ZmZzZXQoKSk7CisgICAgICAgIH0pOworICAgICAgICByZXR1cm47CisgICAgfQogICAgIGRlZmF1
bHQ6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIGJyZWFr
OwpAQCAtMjg5LDYgKzMwMiw3IEBAIHZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChD
b2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jCiAgICAgY2FzZSBv
cF90aHJvdzoKICAgICBjYXNlIG9wX3Rocm93X3N0YXRpY19lcnJvcjoKICAgICBjYXNlIG9wX3Nh
dmU6CisgICAgY2FzZSBvcF9zYXZlX2hpbnQ6CiAgICAgY2FzZSBvcF9hc3NlcnQ6CiAgICAgY2Fz
ZSBvcF9kZWJ1ZzoKICAgICBjYXNlIG9wX3JldDoKQEAgLTMyMyw2ICszMzcsOCBAQCB2b2lkIGNv
bXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2Rl
QmFzaWNCbG9jayogYmxvYwogICAgIGNhc2Ugb3BfcHJvZmlsZV9jb250cm9sX2Zsb3c6CiAgICAg
Y2FzZSBvcF9wdXRfdG9fYXJndW1lbnRzOgogICAgIGNhc2Ugb3Bfd2F0Y2hkb2c6CisgICAgY2Fz
ZSBvcF9jbGVhcl9nZW5lcmF0b3JfZnJhbWU6CisgICAgY2FzZSBvcF9ub3A6CiAjZGVmaW5lIExM
SU5UX0hFTFBFUl9PUENPREVTKG9wY29kZSwgbGVuZ3RoKSBjYXNlIG9wY29kZToKICAgICAgICAg
Rk9SX0VBQ0hfTExJTlRfT1BDT0RFX0VYVEVOU0lPTihMTElOVF9IRUxQRVJfT1BDT0RFUyk7CiAj
dW5kZWYgTExJTlRfSEVMUEVSX09QQ09ERVMKQEAgLTQxNSw3ICs0MzEsOSBAQCB2b2lkIGNvbXB1
dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFz
aWNCbG9jayogYmxvYwogICAgIGNhc2Ugb3BfZGVsX2J5X3ZhbDoKICAgICBjYXNlIG9wX3Vuc2ln
bmVkOgogICAgIGNhc2Ugb3BfZ2V0X2Zyb21fYXJndW1lbnRzOiAKLSAgICBjYXNlIG9wX2dldF9y
ZXN0X2xlbmd0aDogeworICAgIGNhc2Ugb3BfZ2V0X3Jlc3RfbGVuZ3RoOgorICAgIGNhc2Ugb3Bf
bmV3X2dlbmVyYXRvcl9mcmFtZToKKyAgICBjYXNlIG9wX3Jlc3VtZV9mcm9tX2dlbmVyYXRvcl9m
cmFtZTogewogICAgICAgICBBU1NFUlQob3Bjb2RlTGVuZ3Roc1tvcGNvZGVJRF0gPiAxKTsKICAg
ICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rp
b25bMV0udS5vcGVyYW5kKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNDMxLDcgKzQ0OSw3IEBAIHZv
aWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0
ZWNvZGVCYXNpY0Jsb2NrKiBibG9jCiAgICAgICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5z
dHJ1Y3Rpb24sIG9wY29kZUlELCB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChpKS5vZmZzZXQoKSk7
CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgY2FzZSBvcF9yZXN1bWU6IHsKKyAgICBjYXNl
IG9wX3Jlc3VtZV9oaW50OiB7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGJsb2NrLT5zdWNjZXNz
b3JzKCkuc2l6ZSgpID09IDEpOwogICAgICAgICBibG9jay0+c3VjY2Vzc29ycygpWzBdLT5pbigp
LmZvckVhY2hTZXRCaXQoWyZdKHVuc2lnbmVkIGxvY2FsKSB7CiAgICAgICAgICAgICBmdW5jdG9y
KGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2Nh
bChsb2NhbCkub2Zmc2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcAppbmRleCA1OTA1ZTkxODNjOGYxMjY2NGUyYmEzZGQyOWE1YzQ2NTY3NjhkYzAz
Li41MTMyYmQ4OWNmZDM0YTJkZWVkZWJkNWI3Zjk3MmZkZDc0YWQ1NTk0IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApAQCAtMTU1NiwyNyArMTU1Niw2
MyBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKAogICAgICAgICAgICAgb3V0LnByaW50
ZigiJXMsICVkIiwgZGVidWdIb29rTmFtZShkZWJ1Z0hvb2tJRCksIGhhc0JyZWFrcG9pbnRGbGFn
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIGNhc2Ugb3Bfc2F2ZTog
ewotICAgICAgICAgICAgaW50IGdlbmVyYXRvciA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAg
ICBjYXNlIG9wX3NhdmVfaGludDogeworICAgICAgICAgICAgaW50IGZyYW1lID0gKCsraXQpLT51
Lm9wZXJhbmQ7CiAgICAgICAgICAgICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSAo
KytpdCktPnUudW5zaWduZWRWYWx1ZTsKICAgICAgICAgICAgIGludCBvZmZzZXQgPSAoKytpdCkt
PnUub3BlcmFuZDsKICAgICAgICAgICAgIGNvbnN0IEZhc3RCaXRWZWN0b3ImIGxpdmVuZXNzID0g
bV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZFtsaXZlQ2FsbGVlTG9jYWxzSW5k
ZXhdOwogICAgICAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24s
IGl0LCAic2F2ZSIpOwotICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICIsIHJlZ2lzdGVyTmFt
ZShnZW5lcmF0b3IpLmRhdGEoKSk7CisgICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgIiwgcmVn
aXN0ZXJOYW1lKGZyYW1lKS5kYXRhKCkpOwogICAgICAgICAgICAgbGl2ZW5lc3MuZHVtcChvdXQp
OwogICAgICAgICAgICAgb3V0LnByaW50ZigiKEBsaXZlJTF1KSwgJWQoLT4lZCkiLCBsaXZlQ2Fs
bGVlTG9jYWxzSW5kZXgsIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgY2FzZSBvcF9yZXN1bWU6IHsKLSAgICAgICAgICAg
IGludCBnZW5lcmF0b3IgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgY2FzZSBvcF9zYXZl
OiB7CisgICAgICAgICAgICBpbnQgZnJhbWUgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAg
ICAgIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9ICgrK2l0KS0+dS51bnNpZ25lZFZh
bHVlOworICAgICAgICAgICAgKytpdDsgLy8gZGlzY2FyZCBvZmZzZXQuCiAgICAgICAgICAgICBj
b25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlbmVzcyA9IG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxv
Y2Fsc0F0WWllbGRbbGl2ZUNhbGxlZUxvY2Fsc0luZGV4XTsKLSAgICAgICAgICAgIHByaW50TG9j
YXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgInJlc3VtZSIpOwotICAgICAgICAg
ICAgb3V0LnByaW50ZigiJXMsICIsIHJlZ2lzdGVyTmFtZShnZW5lcmF0b3IpLmRhdGEoKSk7Cisg
ICAgICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJz
YXZlIik7CisgICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgIiwgcmVnaXN0ZXJOYW1lKGZyYW1l
KS5kYXRhKCkpOwogICAgICAgICAgICAgbGl2ZW5lc3MuZHVtcChvdXQpOwogICAgICAgICAgICAg
b3V0LnByaW50ZigiKEBsaXZlJTF1KSIsIGxpdmVDYWxsZWVMb2NhbHNJbmRleCk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICBjYXNlIG9wX3Jlc3VtZV9oaW50OiB7Cisg
ICAgICAgICAgICBpbnQgZnJhbWUgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIHVu
c2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9ICgrK2l0KS0+dS51bnNpZ25lZFZhbHVlOwor
ICAgICAgICAgICAgdW5zaWduZWQgbWF4TGl2ZUNhbGxlZXMgPSAoKytpdCktPnUudW5zaWduZWRW
YWx1ZTsKKyAgICAgICAgICAgIGNvbnN0IEZhc3RCaXRWZWN0b3ImIGxpdmVuZXNzID0gbV9yYXJl
RGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZFtsaXZlQ2FsbGVlTG9jYWxzSW5kZXhdOwor
ICAgICAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAi
cmVzdW1lIik7CisgICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgIiwgcmVnaXN0ZXJOYW1lKGZy
YW1lKS5kYXRhKCkpOworICAgICAgICAgICAgbGl2ZW5lc3MuZHVtcChvdXQpOworICAgICAgICAg
ICAgb3V0LnByaW50ZigiKEBsaXZlJTF1KSwgJXUiLCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXgsIG1h
eExpdmVDYWxsZWVzKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNh
c2Ugb3BfcmVzdW1lX2Zyb21fZ2VuZXJhdG9yX2ZyYW1lOiB7CisgICAgICAgICAgICBpbnQgZHN0
ID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBpbnQgZnJhbWUgPSAoKytpdCktPnUu
b3BlcmFuZDsKKyAgICAgICAgICAgIHVuc2lnbmVkIGluZGV4ID0gKCsraXQpLT51LnVuc2lnbmVk
VmFsdWU7CisgICAgICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlv
biwgaXQsICJyZXN1bWVfZnJvbV9nZW5lcmF0b3JfZnJhbWUiKTsKKyAgICAgICAgICAgIG91dC5w
cmludGYoIiVzLCAlcywgJXUiLCByZWdpc3Rlck5hbWUoZHN0KS5kYXRhKCksIHJlZ2lzdGVyTmFt
ZShmcmFtZSkuZGF0YSgpLCBpbmRleCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor
ICAgICAgICBjYXNlIG9wX2NsZWFyX2dlbmVyYXRvcl9mcmFtZTogeworICAgICAgICAgICAgaW50
IGZyYW1lID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBwcmludExvY2F0aW9uT3BB
bmRSZWdpc3Rlck9wZXJhbmQob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJjbGVhcl9nZW5lcmF0
b3JfZnJhbWUiLCBmcmFtZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAg
ICBjYXNlIG9wX25ld19nZW5lcmF0b3JfZnJhbWU6IHsKKyAgICAgICAgICAgIGludCBkc3QgPSAo
KytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIHVuc2lnbmVkIGdlbmVyYXRvckxvY2Fsc1Np
emUgPSAoKytpdCktPnUudW5zaWduZWRWYWx1ZTsKKyAgICAgICAgICAgIHByaW50TG9jYXRpb25P
cEFuZFJlZ2lzdGVyT3BlcmFuZChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgIm5ld19nZW5lcmF0
b3JfZnJhbWUiLCBkc3QpOworICAgICAgICAgICAgb3V0LnByaW50ZigiICV1IiwgZ2VuZXJhdG9y
TG9jYWxzU2l6ZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNl
IG9wX25vcDogeworICAgICAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9j
YXRpb24sIGl0LCAibm9wIik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAg
ICBjYXNlIG9wX2Fzc2VydDogewogICAgICAgICAgICAgaW50IGNvbmRpdGlvbiA9ICgrK2l0KS0+
dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IGxpbmUgPSAoKytpdCktPnUub3BlcmFuZDsKQEAg
LTE4NDcsNiArMTg4MywxMiBAQCB2b2lkIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZt
LCBDb3B5UGFyc2VkQmxvY2tUYWcsIENvZGVCbG9jayYgb3RoZXIpCiAgICAgc2V0TnVtUGFyYW1l
dGVycyh1bmxpbmtlZENvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKTsKIH0KIAorc3RydWN0IEdl
bmVyYXRvclBvaW50cyB7CisgICAgc2l6ZV90IHNhdmVQb2ludDsKKyAgICBzaXplX3QgbWVyZ2VQ
b2ludDsKKyAgICBzaXplX3QgcmVzdW1lUG9pbnQ7Cit9OworCiB2b2lkIENvZGVCbG9jazo6Zmlu
aXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVu
bGlua2VkQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jaywKICAgICBKU1Njb3BlKiBzY29wZSkK
IHsKQEAgLTE5ODAsOSArMjAyMiwxMCBAQCB2b2lkIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24o
Vk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGluawogICAgIEhh
c2hTZXQ8SlNNb2R1bGVFbnZpcm9ubWVudCo+IHN0cm9uZ2x5UmVmZXJlbmNlZE1vZHVsZUVudmly
b25tZW50czsKIAogICAgIC8vIEJvb2trZWVwIHRoZSBtZXJnZSBwb2ludCBieXRlY29kZSBvZmZz
ZXRzLgotICAgIFZlY3RvcjxzaXplX3Q+IG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldHM7CisgICAg
VmVjdG9yPEdlbmVyYXRvclBvaW50cz4gbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0czsKIAogICAg
IFJlZkNvdW50ZWRBcnJheTxJbnN0cnVjdGlvbj4gaW5zdHJ1Y3Rpb25zKGluc3RydWN0aW9uQ291
bnQpOworICAgIHVuc2lnbmVkIG5ld0dlbmVyYXRvckZyYW1lSW5zdHJ1Y3Rpb25PZmZzZXQgPSAw
OwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgIWluc3RydWN0aW9uUmVhZGVyLmF0RW5kKCk7
ICkgewogICAgICAgICBjb25zdCBVbmxpbmtlZEluc3RydWN0aW9uKiBwYyA9IGluc3RydWN0aW9u
UmVhZGVyLm5leHQoKTsKQEAgLTIyNzAsMTIgKzIzMTMsMjYgQEAgdm9pZCBDb2RlQmxvY2s6OmZp
bmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBV
bmxpbmsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKLSAgICAgICAgY2FzZSBvcF9z
YXZlOiB7CisgICAgICAgIGNhc2Ugb3Bfc2F2ZV9oaW50OiB7CiAgICAgICAgICAgICB1bnNpZ25l
ZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSBwY1syXS51LmluZGV4OwogICAgICAgICAgICAgaW50
IG9mZnNldCA9IHBjWzNdLnUub3BlcmFuZDsKICAgICAgICAgICAgIGlmIChsaXZlQ2FsbGVlTG9j
YWxzSW5kZXggPj0gbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0cy5zaXplKCkpCiAgICAgICAgICAg
ICAgICAgbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0cy5yZXNpemUobGl2ZUNhbGxlZUxvY2Fsc0lu
ZGV4ICsgMSk7Ci0gICAgICAgICAgICBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXRzW2xpdmVDYWxs
ZWVMb2NhbHNJbmRleF0gPSBpICsgb2Zmc2V0OworICAgICAgICAgICAgbWVyZ2VQb2ludEJ5dGVj
b2RlT2Zmc2V0c1tsaXZlQ2FsbGVlTG9jYWxzSW5kZXhdLnNhdmVQb2ludCA9IGk7CisgICAgICAg
ICAgICBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXRzW2xpdmVDYWxsZWVMb2NhbHNJbmRleF0ubWVy
Z2VQb2ludCA9IGkgKyBvZmZzZXQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisg
ICAgICAgIGNhc2Ugb3BfcmVzdW1lX2hpbnQ6IHsKKyAgICAgICAgICAgIHVuc2lnbmVkIGxpdmVD
YWxsZWVMb2NhbHNJbmRleCA9IHBjWzJdLnUuaW5kZXg7CisgICAgICAgICAgICBpZiAobGl2ZUNh
bGxlZUxvY2Fsc0luZGV4ID49IG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldHMuc2l6ZSgpKQorICAg
ICAgICAgICAgICAgIG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldHMucmVzaXplKGxpdmVDYWxsZWVM
b2NhbHNJbmRleCArIDEpOworICAgICAgICAgICAgbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0c1ts
aXZlQ2FsbGVlTG9jYWxzSW5kZXhdLnJlc3VtZVBvaW50ID0gaTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBvcF9uZXdfZ2VuZXJhdG9yX2ZyYW1lOiB7Cisg
ICAgICAgICAgICBuZXdHZW5lcmF0b3JGcmFtZUluc3RydWN0aW9uT2Zmc2V0ID0gaTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKQEAgLTIyODUsMjUgKzIzNDIsNjAgQEAgdm9pZCBD
b2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJF
eGVjdXRhYmxlLCBVbmxpbmsKICAgICAgICAgaSArPSBvcExlbmd0aDsKICAgICB9CiAKLSAgICBp
ZiAodm0uY29udHJvbEZsb3dQcm9maWxlcigpKQotICAgICAgICBpbnNlcnRCYXNpY0Jsb2NrQm91
bmRhcmllc0ZvckNvbnRyb2xGbG93UHJvZmlsZXIoaW5zdHJ1Y3Rpb25zKTsKLQogICAgIG1faW5z
dHJ1Y3Rpb25zID0gV1RGTW92ZShpbnN0cnVjdGlvbnMpOwogCi0gICAgLy8gUGVyZm9ybSBieXRl
Y29kZSBsaXZlbmVzcyBhbmFseXNpcyB0byBkZXRlcm1pbmUgd2hpY2ggbG9jYWxzIGFyZSBsaXZl
IGFuZCBzaG91bGQgYmUgcmVzdW1lZCB3aGVuIGV4ZWN1dGluZyBvcF9yZXN1bWUuCisgICAgLy8g
UGVyZm9ybSBieXRlY29kZSBsaXZlbmVzcyBhbmFseXNpcyB0byBkZXRlcm1pbmUgd2hpY2ggbG9j
YWxzIGFyZSBsaXZlIGFuZCBzaG91bGQgYmUgcmVzdW1lZCB3aGVuIGV4ZWN1dGluZyBvcF9yZXN1
bWVfaGludC4KICAgICBpZiAodW5saW5rZWRDb2RlQmxvY2stPnBhcnNlTW9kZSgpID09IFNvdXJj
ZVBhcnNlTW9kZTo6R2VuZXJhdG9yQm9keU1vZGUpIHsKKyAgICAgICAgdW5zaWduZWQgbWF4R2Vu
ZXJhdG9yTG9jYWxzU2l6ZSA9IDA7CiAgICAgICAgIGlmIChzaXplX3QgY291bnQgPSBtZXJnZVBv
aW50Qnl0ZWNvZGVPZmZzZXRzLnNpemUoKSkgewogICAgICAgICAgICAgY3JlYXRlUmFyZURhdGFJ
Zk5lY2Vzc2FyeSgpOwogICAgICAgICAgICAgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzIGxpdmVu
ZXNzKHRoaXMpOwogICAgICAgICAgICAgbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZ
aWVsZC5ncm93KGNvdW50KTsKLSAgICAgICAgICAgIHNpemVfdCBsaXZlQ2FsbGVlTG9jYWxzSW5k
ZXggPSAwOwotICAgICAgICAgICAgZm9yIChzaXplX3QgYnl0ZWNvZGVPZmZzZXQgOiBtZXJnZVBv
aW50Qnl0ZWNvZGVPZmZzZXRzKSB7Ci0gICAgICAgICAgICAgICAgbV9yYXJlRGF0YS0+bV9saXZl
Q2FsbGVlTG9jYWxzQXRZaWVsZFtsaXZlQ2FsbGVlTG9jYWxzSW5kZXhdID0gbGl2ZW5lc3MuZ2V0
TGl2ZW5lc3NJbmZvQXRCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCk7Ci0gICAgICAgICAg
ICAgICAgKytsaXZlQ2FsbGVlTG9jYWxzSW5kZXg7CisKKyAgICAgICAgICAgIC8vIFBlcmZvcm0g
Ynl0ZWNvZGUgdXNlLWRlZiBhbmFseXNpcyBvbnRvIHRoZSBjdXJyZW50IGJ5dGVjb2RlIHN0cmVh
bSBhbmQgY2FsY3VsYXRlIGxpdmUgbG9jYWxzIGF0IHRoZSBtZXJnZSBwb2ludHMuCisgICAgICAg
ICAgICBmb3IgKHNpemVfdCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSAwOyBsaXZlQ2FsbGVlTG9j
YWxzSW5kZXggPCBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXRzLnNpemUoKTsgKytsaXZlQ2FsbGVl
TG9jYWxzSW5kZXgpIHsKKyAgICAgICAgICAgICAgICBjb25zdCBHZW5lcmF0b3JQb2ludHMmIHBv
aW50cyA9IG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldHNbbGl2ZUNhbGxlZUxvY2Fsc0luZGV4XTsK
KyAgICAgICAgICAgICAgICBzaXplX3QgbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0ID0gcG9pbnRz
Lm1lcmdlUG9pbnQ7CisgICAgICAgICAgICAgICAgRmFzdEJpdFZlY3RvciBsaXZlbmVzc1ZlY3Rv
ciA9IGxpdmVuZXNzLmdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQobWVyZ2VQb2ludEJ5
dGVjb2RlT2Zmc2V0KTsKKyAgICAgICAgICAgICAgICBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVM
b2NhbHNBdFlpZWxkW2xpdmVDYWxsZWVMb2NhbHNJbmRleF0gPSBsaXZlbmVzc1ZlY3RvcjsKKyAg
ICAgICAgICAgICAgICBtYXhHZW5lcmF0b3JMb2NhbHNTaXplID0gc3RkOjptYXg8dW5zaWduZWQ+
KG1heEdlbmVyYXRvckxvY2Fsc1NpemUsIGxpdmVuZXNzVmVjdG9yLmJpdENvdW50KCkpOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBSZXdyaXRlIGJ5dGVjb2RlcyBiYXNlZCBvbiB0
aGUgY2FsY3VsYXRlZCBsaXZlbmVzcy4KKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGxpdmVDYWxs
ZWVMb2NhbHNJbmRleCA9IDA7IGxpdmVDYWxsZWVMb2NhbHNJbmRleCA8IG1lcmdlUG9pbnRCeXRl
Y29kZU9mZnNldHMuc2l6ZSgpOyArK2xpdmVDYWxsZWVMb2NhbHNJbmRleCkgeworICAgICAgICAg
ICAgICAgIGNvbnN0IEdlbmVyYXRvclBvaW50cyYgcG9pbnRzID0gbWVyZ2VQb2ludEJ5dGVjb2Rl
T2Zmc2V0c1tsaXZlQ2FsbGVlTG9jYWxzSW5kZXhdOworICAgICAgICAgICAgICAgIHNpemVfdCBz
YXZlUG9pbnRCeXRlY29kZU9mZnNldCA9IHBvaW50cy5zYXZlUG9pbnQ7CisgICAgICAgICAgICAg
ICAgc2l6ZV90IHJlc3VtZVBvaW50Qnl0ZWNvZGVPZmZzZXQgPSBwb2ludHMucmVzdW1lUG9pbnQ7
CisKKyAgICAgICAgICAgICAgICBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlbmVzc1ZlY3RvciA9
IG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGRbbGl2ZUNhbGxlZUxvY2Fsc0lu
ZGV4XTsKKworICAgICAgICAgICAgICAgIC8vIFBhdGNoIG9wX3Jlc3VtZV9oaW50IHdpdGggYWN0
dWFsIG9wcy4KKyAgICAgICAgICAgICAgICBpbnQgZ2VuZXJhdG9yTG9jYWxJbmRleCA9IG1faW5z
dHJ1Y3Rpb25zW3Jlc3VtZVBvaW50Qnl0ZWNvZGVPZmZzZXQgKyAxXS51Lm9wZXJhbmQ7CisgICAg
ICAgICAgICAgICAgaWYgKCFsaXZlbmVzc1ZlY3Rvci5iaXRDb3VudCgpKSB7CisgICAgICAgICAg
ICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgNDsgKytpKQorICAgICAgICAgICAgICAg
ICAgICAgICAgbV9pbnN0cnVjdGlvbnNbcmVzdW1lUG9pbnRCeXRlY29kZU9mZnNldCArIGldID0g
dm0uaW50ZXJwcmV0ZXItPmdldE9wY29kZShvcF9ub3ApOworICAgICAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpID0gMDsKKyAgICAgICAgICAgICAgICAg
ICAgbGl2ZW5lc3NWZWN0b3IuZm9yRWFjaFNldEJpdChbJl0odW5zaWduZWQgbG9jYWwpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbmRleCA9IGkrKzsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHNpemVfdCBvZmZzZXQgPSByZXN1bWVQb2ludEJ5dGVjb2RlT2Zmc2V0ICsgaW5k
ZXggKiA0OworICAgICAgICAgICAgICAgICAgICAgICAgbV9pbnN0cnVjdGlvbnNbb2Zmc2V0XSA9
IHZtLmludGVycHJldGVyLT5nZXRPcGNvZGUob3BfcmVzdW1lX2Zyb21fZ2VuZXJhdG9yX2ZyYW1l
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1faW5zdHJ1Y3Rpb25zW29mZnNldCArIDFdLnUu
b3BlcmFuZCA9IHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGxvY2FsKS5vZmZzZXQoKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIG1faW5zdHJ1Y3Rpb25zW29mZnNldCArIDJdLnUub3BlcmFuZCA9
IGdlbmVyYXRvckxvY2FsSW5kZXg7CisgICAgICAgICAgICAgICAgICAgICAgICBtX2luc3RydWN0
aW9uc1tvZmZzZXQgKyAzXS51LnVuc2lnbmVkVmFsdWUgPSBpbmRleDsKKyAgICAgICAgICAgICAg
ICAgICAgfSk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgbV9pbnN0cnVj
dGlvbnNbc2F2ZVBvaW50Qnl0ZWNvZGVPZmZzZXRdID0gdm0uaW50ZXJwcmV0ZXItPmdldE9wY29k
ZShvcF9zYXZlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQorICAgICAgICAvLyBGaWxsIG9w
X25ld19nZW5lcmF0b3JfZnJhbWUncyBzaXplLgorICAgICAgICBtX2luc3RydWN0aW9uc1tuZXdH
ZW5lcmF0b3JGcmFtZUluc3RydWN0aW9uT2Zmc2V0ICsgMl0udS51bnNpZ25lZFZhbHVlID0gbWF4
R2VuZXJhdG9yTG9jYWxzU2l6ZTsKICAgICB9CiAKKyAgICBpZiAodm0uY29udHJvbEZsb3dQcm9m
aWxlcigpKQorICAgICAgICBpbnNlcnRCYXNpY0Jsb2NrQm91bmRhcmllc0ZvckNvbnRyb2xGbG93
UHJvZmlsZXIobV9pbnN0cnVjdGlvbnMpOworCiAgICAgLy8gU2V0IG9wdGltaXphdGlvbiB0aHJl
c2hvbGRzIG9ubHkgYWZ0ZXIgbV9pbnN0cnVjdGlvbnMgaXMgaW5pdGlhbGl6ZWQsIHNpbmNlIHRo
ZXNlCiAgICAgLy8gcmVseSBvbiB0aGUgaW5zdHJ1Y3Rpb24gY291bnQgKGFuZCBhcmUgaW4gdGhl
b3J5IHBlcm1pdHRlZCB0byBhbHNvIGluc3BlY3QgdGhlCiAgICAgLy8gaW5zdHJ1Y3Rpb24gc3Ry
ZWFtIHRvIG1vcmUgYWNjdXJhdGUgYXNzZXNzIHRoZSBjb3N0IG9mIHRpZXItdXApLgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmNw
cAppbmRleCBlMmNiMDAwNDgzNzk0YmE5MmQ1MTBkY2Y1ZmE5OTQ4ODVhMjNkYzNkLi4yZjM1Y2Zi
Mzk5NTcwNzU4OGMyYzU4YTQyOTM0NzQxMzQzYjdlNTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmNwcApAQCAtNTQsNyAr
NTQsNyBAQCBzdGF0aWMgdm9pZCBnZXRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVC
bG9jayogY29kZUJsb2NrLCBJbnRlcnByZXRlciogaQogICAgIGNhc2Ugb3Bfam5sZXNzZXE6CiAg
ICAgY2FzZSBvcF9qbmdyZWF0ZXI6CiAgICAgY2FzZSBvcF9qbmdyZWF0ZXJlcToKLSAgICBjYXNl
IG9wX3NhdmU6IC8vIFRoZSBqdW1wIG9mIG9wX3NhdmUgaXMgcHVyZWx5IGZvciBjYWxjdWxhdGlu
ZyBsaXZlbmVzcy4KKyAgICBjYXNlIG9wX3NhdmVfaGludDogLy8gVGhlIGp1bXAgb2Ygb3Bfc2F2
ZV9oaW50IGlzIHB1cmVseSBmb3IgY2FsY3VsYXRpbmcgbGl2ZW5lc3MuCiAgICAgICAgIG91dC5h
cHBlbmQoYnl0ZWNvZGVPZmZzZXQgKyBjdXJyZW50WzNdLnUub3BlcmFuZCk7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2Ugb3Bfc3dpdGNoX2ltbToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXggZDE1ZTIy
NDM1MjY2ZmUxYWZmM2Q1Zjc5YTFkZGE3NWI5YmRhZjNmMy4uMGRhZWVjNjNmNmMyMzcwZDU2NDgz
MDEwYzMyYjVjY2NhNTA2YzQxNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTI1Nyw3ICsyNTcsNyBA
QCBQYXJzZXJFcnJvciBCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUoKQogICAgICAgICAvLyAg
ICBmdW5jdGlvbiAqZ2VuKGEsIGIgPSBoZWxsbygpKQogICAgICAgICAvLyAgICB7CiAgICAgICAg
IC8vICAgICAgICByZXR1cm4gewotICAgICAgICAvLyAgICAgICAgICAgIEBnZW5lcmF0b3JOZXh0
OiBmdW5jdGlvbiAoQGdlbmVyYXRvciwgQGdlbmVyYXRvclN0YXRlLCBAZ2VuZXJhdG9yVmFsdWUs
IEBnZW5lcmF0b3JSZXN1bWVNb2RlKQorICAgICAgICAvLyAgICAgICAgICAgIEBnZW5lcmF0b3JO
ZXh0OiBmdW5jdGlvbiAoQGdlbmVyYXRvciwgQGdlbmVyYXRvclN0YXRlLCBAZ2VuZXJhdG9yVmFs
dWUsIEBnZW5lcmF0b3JSZXN1bWVNb2RlLCBAZ2VuZXJhdG9yRnJhbWUpCiAgICAgICAgIC8vICAg
ICAgICAgICAgewogICAgICAgICAvLyAgICAgICAgICAgICAgICBhcmd1bWVudHM7ICAvLyBUaGlz
IGBhcmd1bWVudHNgIHNob3VsZCByZWZlcmVuY2UgdG8gdGhlIGdlbidzIGFyZ3VtZW50cy4KICAg
ICAgICAgLy8gICAgICAgICAgICAgICAgLi4uCkBAIC01MzcsNiArNTM3LDkgQEAgUGFyc2VyRXJy
b3IgQnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKCkKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9k
ZTo6R2VuZXJhdG9yQm9keU1vZGU6IHsKICAgICAgICAgLy8gfHRoaXN8IGlzIGFscmVhZHkgZmls
bGVkIGNvcnJlY3RseSBiZWZvcmUgaGVyZS4KICAgICAgICAgZW1pdExvYWQobV9uZXdUYXJnZXRS
ZWdpc3RlciwganNVbmRlZmluZWQoKSk7CisKKyAgICAgICAgZW1pdE5ld0dlbmVyYXRvckZyYW1l
KGdlbmVyYXRvckZyYW1lUmVnaXN0ZXIoKSk7CisgICAgICAgIGVtaXRQdXRCeUlkKGdlbmVyYXRv
clJlZ2lzdGVyKCksIHByb3BlcnR5TmFtZXMoKS5nZW5lcmF0b3JGcmFtZVByaXZhdGVOYW1lLCBn
ZW5lcmF0b3JGcmFtZVJlZ2lzdGVyKCkpOwogICAgICAgICBicmVhazsKICAgICB9CiAKQEAgLTI3
NDQsNiArMjc0NywxNCBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1
bmN0aW9uKFJlZ2lzdGVySUQqIGRzdCwgRnVuY3Rpb25NZXRhZGF0YQogICAgIHJldHVybiBkc3Q7
CiB9CiAKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3R2VuZXJhdG9yRnJh
bWUoUmVnaXN0ZXJJRCogZHN0KQoreworICAgIGVtaXRPcGNvZGUob3BfbmV3X2dlbmVyYXRvcl9m
cmFtZSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGRzdC0+aW5kZXgoKSk7CisgICAgaW5z
dHJ1Y3Rpb25zKCkuYXBwZW5kKDApOworICAgIHJldHVybiBkc3Q7Cit9CisKIFJlZ2lzdGVySUQq
IEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2FsbChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQq
IGZ1bmMsIEV4cGVjdGVkRnVuY3Rpb24gZXhwZWN0ZWRGdW5jdGlvbiwgQ2FsbEFyZ3VtZW50cyYg
Y2FsbEFyZ3VtZW50cywgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQ
b3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKQogewog
ICAgIHJldHVybiBlbWl0Q2FsbChvcF9jYWxsLCBkc3QsIGZ1bmMsIGV4cGVjdGVkRnVuY3Rpb24s
IGNhbGxBcmd1bWVudHMsIGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCk7CkBAIC00MTQ0LDgg
KzQxNTUsOCBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0WWllbGRQb2ludChSZWdpc3Rl
cklEKiBhcmd1bWVudCkKIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRTYXZlKExhYmVsKiBt
ZXJnZVBvaW50LCB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpCiB7CiAgICAgc2l6ZV90
IGJlZ2luID0gaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpOwotICAgIGVtaXRPcGNvZGUob3Bfc2F2ZSk7
Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fZ2VuZXJhdG9yUmVnaXN0ZXItPmluZGV4KCkp
OworICAgIGVtaXRPcGNvZGUob3Bfc2F2ZV9oaW50KTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBl
bmQoZ2VuZXJhdG9yRnJhbWVSZWdpc3RlcigpLT5pbmRleCgpKTsKICAgICBpbnN0cnVjdGlvbnMo
KS5hcHBlbmQobGl2ZUNhbGxlZUxvY2Fsc0luZGV4KTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBl
bmQobWVyZ2VQb2ludC0+YmluZChiZWdpbiwgaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKSk7CiB9CkBA
IC00MTUzLDkgKzQxNjQsMzAgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFNhdmUoTGFi
ZWwqIG1lcmdlUG9pbnQsIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmQKIHZvaWQgQnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXRSZXN1bWUoTGFiZWwqIG1lcmdlUG9pbnQsIHVuc2lnbmVkIGxpdmVD
YWxsZWVMb2NhbHNJbmRleCkKIHsKICAgICBlbWl0R2VuZXJhdG9yU3RhdGVMYWJlbCgpOwotICAg
IGVtaXRPcGNvZGUob3BfcmVzdW1lKTsKLSAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobV9nZW5l
cmF0b3JSZWdpc3Rlci0+aW5kZXgoKSk7CisKKyAgICByZWNsYWltRnJlZVJlZ2lzdGVycygpOwor
ICAgIHVuc2lnbmVkIG1heExpdmVMb2NhbHMgPSAwOworICAgIGZvciAoY29uc3QgUmVnaXN0ZXJJ
RCYgcmVnIDogbV9jYWxsZWVMb2NhbHMpIHsKKyAgICAgICAgaWYgKHJlZy5yZWZDb3VudCgpKQor
ICAgICAgICAgICAgKyttYXhMaXZlTG9jYWxzOworICAgIH0KKworICAgIC8vIFRoaXMgb3BfcmVz
dW1lX2hpbnQgd2lsbCBiZSByZXBsYWNlZCB3aXRoIHRoZSBhY3R1YWwgb3BzLgorICAgIHN0YXRp
Y19hc3NlcnQoT1BDT0RFX0xFTkdUSChvcF9yZXN1bWVfaGludCkgPT0gT1BDT0RFX0xFTkdUSChv
cF9yZXN1bWVfZnJvbV9nZW5lcmF0b3JfZnJhbWUpLCAiVGhlIGxlbmd0aCBvZiBvcF9yZXN1bWVf
aGludCBzaG91bGQgZXFhdWFsIHRvIG9uZSBvZiBvcF9yZXN1bWVfZnJvbV9nZW5lcmF0b3JfZnJh
bWUuIik7CisgICAgaWYgKG1heExpdmVMb2NhbHMpCisgICAgICAgIG1heExpdmVMb2NhbHMgLT0g
MTsKKworICAgIGVtaXRPcGNvZGUob3BfcmVzdW1lX2hpbnQpOworICAgIGluc3RydWN0aW9ucygp
LmFwcGVuZChnZW5lcmF0b3JGcmFtZVJlZ2lzdGVyKCktPmluZGV4KCkpOwogICAgIGluc3RydWN0
aW9ucygpLmFwcGVuZChsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpOworICAgIGluc3RydWN0aW9ucygp
LmFwcGVuZChtYXhMaXZlTG9jYWxzKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbWF4
TGl2ZUxvY2FsczsgKytpKSB7CisgICAgICAgIC8vIE5vcCBzcGFjZS4gTGF0ZXIgd2Ugd2lsbCBm
aWxsIHRoaXMgd2l0aCB0aGUgYWN0dWFsIHJlc3VtZSBvcGVyYXRpb25zLgorICAgICAgICBmb3Ig
KHVuc2lnbmVkIGogPSAwOyBqIDwgT1BDT0RFX0xFTkdUSChvcF9yZXN1bWVfZnJvbV9nZW5lcmF0
b3JfZnJhbWUpOyArK2opCisgICAgICAgICAgICBlbWl0T3Bjb2RlKG9wX25vcCk7CisgICAgfQor
ICAgIGVtaXRPcGNvZGUob3BfY2xlYXJfZ2VuZXJhdG9yX2ZyYW1lKTsKKyAgICBpbnN0cnVjdGlv
bnMoKS5hcHBlbmQoZ2VuZXJhdG9yRnJhbWVSZWdpc3RlcigpLT5pbmRleCgpKTsKICAgICBlbWl0
TGFiZWwobWVyZ2VQb2ludCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAppbmRleCA3ZDBjMjBiNmY1MTZhMTdl
ODkzZjFiYmEwODAzYzEzMzNmZmM4ZDBkLi4zZDMzNDc4MTVhYzMwYTgyZTYyNmUzZTA3ODA4MWJl
MmIzZTliZTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5oCkBAIC01MjIsNiArNTIyLDcgQEAKICAgICAgICAgUmVn
aXN0ZXJJRCogZW1pdE5ld0RlZmF1bHRDb25zdHJ1Y3RvcihSZWdpc3RlcklEKiBkc3QsIENvbnN0
cnVjdG9yS2luZCwgY29uc3QgSWRlbnRpZmllciYgbmFtZSk7CiAgICAgICAgIFJlZ2lzdGVySUQq
IGVtaXROZXdBcnJvd0Z1bmN0aW9uRXhwcmVzc2lvbihSZWdpc3RlcklEKiwgQXJyb3dGdW5jRXhw
ck5vZGUqKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdE5ld1JlZ0V4cChSZWdpc3RlcklEKiBk
c3QsIFJlZ0V4cCopOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0TmV3R2VuZXJhdG9yRnJhbWUo
UmVnaXN0ZXJJRCogZHN0KTsKIAogICAgICAgICBSZWdpc3RlcklEKiBlbWl0TW92ZUxpbmtUaW1l
Q29uc3RhbnQoUmVnaXN0ZXJJRCogZHN0LCBMaW5rVGltZUNvbnN0YW50KTsKICAgICAgICAgUmVn
aXN0ZXJJRCogZW1pdE1vdmVFbXB0eVZhbHVlKFJlZ2lzdGVySUQqIGRzdCk7CkBAIC02ODQsNiAr
Njg1LDcgQEAKICAgICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9yU3RhdGVSZWdpc3RlcigpIHsg
cmV0dXJuICZtX3BhcmFtZXRlcnNbMl07IH0KICAgICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9y
VmFsdWVSZWdpc3RlcigpIHsgcmV0dXJuICZtX3BhcmFtZXRlcnNbM107IH0KICAgICAgICAgUmVn
aXN0ZXJJRCogZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKCkgeyByZXR1cm4gJm1fcGFyYW1l
dGVyc1s0XTsgfQorICAgICAgICBSZWdpc3RlcklEKiBnZW5lcmF0b3JGcmFtZVJlZ2lzdGVyKCkg
eyByZXR1cm4gJm1fcGFyYW1ldGVyc1s1XTsgfQogCiAgICAgICAgIENvZGVUeXBlIGNvZGVUeXBl
KCkgY29uc3QgeyByZXR1cm4gbV9jb2RlVHlwZTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SGVhcC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdBYnN0cmFjdEhlYXAuaAppbmRleCA0ZGVjOGZhMDM3NzZlMDFlNmNkMzc0NjA2NTlj
YzU2MTE2MjM4YzY1Li45Yzg2ZjY5MmI4ZDM4NWQ5ZWIyNDY5N2Q3OTI3OWRmNmNkZjQ1Y2U1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SGVhcC5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RIZWFwLmgKQEAgLTY4LDYg
KzY4LDggQEAKICAgICBtYWNybyhTY29wZVByb3BlcnRpZXMpIFwKICAgICBtYWNybyhUeXBlZEFy
cmF5UHJvcGVydGllcykgXAogICAgIG1hY3JvKEhlYXBPYmplY3RDb3VudCkgLyogVXNlZCB0byBy
ZWZsZWN0IHRoZSBmYWN0IHRoYXQgc29tZSBhbGxvY2F0aW9ucyByZXZlYWwgb2JqZWN0IGlkZW50
aXR5ICovXAorICAgIG1hY3JvKEdlbmVyYXRvckxvY2FscykgXAorICAgIG1hY3JvKEdlbmVyYXRv
ckxvY2FsQ291bnQpIFwKICAgICBtYWNybyhSZWdFeHBTdGF0ZSkgXAogICAgIG1hY3JvKE1hdGhE
b3RSYW5kb21TdGF0ZSkgXAogICAgIG1hY3JvKEludGVybmFsU3RhdGUpIFwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGlu
ZXMuaAppbmRleCA5ZWVjNjNjZWIwNzFiYzE0ODZhMDEyYzI4NTAxZGI2MjQyNmJkZTdiLi44MjUw
ODM2OGM5YTg4MDQyMzMxMGExMzk0MTZkZTcxNTNlMWNjOTQwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5o
CkBAIC0xNjg3LDYgKzE2ODcsMTAgQEAKICAgICBjYXNlIE5ld1JlZ2V4cDoKICAgICAgICAgZm9y
Tm9kZShub2RlKS5zZXQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKS0+cmVnRXhwU3RydWN0dXJlKCkpOwogICAgICAgICBicmVhazsKKworICAg
IGNhc2UgTmV3R2VuZXJhdG9yRnJhbWU6CisgICAgICAgIGZvck5vZGUobm9kZSkuc2V0KG1fZ3Jh
cGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyktPmdlbmVy
YXRvckZyYW1lU3RydWN0dXJlKCkpOworICAgICAgICBicmVhazsKICAgICAgICAgICAgIAogICAg
IGNhc2UgVG9UaGlzOiB7CiAgICAgICAgIEFic3RyYWN0VmFsdWUmIHNvdXJjZSA9IGZvck5vZGUo
bm9kZS0+Y2hpbGQxKCkpOwpAQCAtMjUxMCw2ICsyNTE0LDE1IEBACiAgICAgICAgIGZvck5vZGUo
bm9kZSkubWFrZUhlYXBUb3AoKTsKICAgICAgICAgYnJlYWs7CiAKKyAgICBjYXNlIFNldEdlbmVy
YXRvckxvY2FsOgorICAgIGNhc2UgUHV0R2VuZXJhdG9yRnJhbWVMb2NhbHM6CisgICAgICAgIGJy
ZWFrOworCisgICAgY2FzZSBHZXRHZW5lcmF0b3JMb2NhbDogeworICAgICAgICBmb3JOb2RlKG5v
ZGUpLm1ha2VIZWFwVG9wKCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIGNhc2UgRm9y
Y2VPU1JFeGl0OgogICAgIGNhc2UgQ2hlY2tCYWRDZWxsOgogICAgICAgICBtX3N0YXRlLnNldElz
VmFsaWQoZmFsc2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdC
YWNrd2FyZHNQcm9wYWdhdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQmFja3dhcmRzUHJvcGFnYXRpb25QaGFzZS5jcHAKaW5kZXggYmY2NTE4ODZlM2FmOTVhMzQ2
NjA0YmUzZTU2YjAwZmY0MTcwMGJiNy4uZmM1YzYwZWFlMDU2NTNiYzJlZWFkM2U5Y2IzZmE5OTYx
NjAxMjM1MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYWNrd2Fy
ZHNQcm9wYWdhdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0JhY2t3YXJkc1Byb3BhZ2F0aW9uUGhhc2UuY3BwCkBAIC00MDMsNiArNDAzLDIyIEBAIGNsYXNz
IEJhY2t3YXJkc1Byb3BhZ2F0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIEdldEdlbmVyYXRvckxvY2FsOiB7Cisg
ICAgICAgICAgICBHZW5lcmF0b3JMb2NhbERhdGEqIGdlbmVyYXRvckxvY2FsRGF0YSA9IG5vZGUt
PmdlbmVyYXRvckxvY2FsRGF0YSgpOworICAgICAgICAgICAgZmxhZ3MgJj0gfk5vZGVCeXRlY29k
ZVVzZXNBc0ludDsgLy8gV2UgZG9uJ3QgY2FyZSBhYm91dCBjcm9zcy1ibG9jayB1c2VzLWFzLWlu
dC4KKyAgICAgICAgICAgIG1fY2hhbmdlZCB8PSBnZW5lcmF0b3JMb2NhbERhdGEtPm1lcmdlRmxh
Z3MoZmxhZ3MpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBjYXNl
IFNldEdlbmVyYXRvckxvY2FsOiB7CisgICAgICAgICAgICBHZW5lcmF0b3JMb2NhbERhdGEqIGdl
bmVyYXRvckxvY2FsRGF0YSA9IG5vZGUtPmdlbmVyYXRvckxvY2FsRGF0YSgpOworICAgICAgICAg
ICAgZmxhZ3MgPSBnZW5lcmF0b3JMb2NhbERhdGEtPmZsYWdzKCk7CisgICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVCghKGZsYWdzICYgfk5vZGVCeXRlY29kZUJhY2tQcm9wTWFzaykpOworICAgICAg
ICAgICAgZmxhZ3MgfD0gTm9kZUJ5dGVjb2RlVXNlc0FzTnVtYmVyOyAvLyBBY2NvdW50IGZvciB0
aGUgZmFjdCB0aGF0IGNvbnRyb2wgZmxvdyBtYXkgY2F1c2Ugb3ZlcmZsb3dzIHRoYXQgb3VyIG1v
ZGVsaW5nIGNhbid0IGhhbmRsZS4KKyAgICAgICAgICAgIG5vZGUtPmNoaWxkMigpLT5tZXJnZUZs
YWdzKGZsYWdzKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKICAgICAgICAgY2Fz
ZSBJZGVudGl0eTogCiAgICAgICAgICAgICAvLyBUaGlzIHdvdWxkIGJlIHRyaXZpYWwgdG8gaGFu
ZGxlIGJ1dCB3ZSBqdXN0IGFzc2VydCB0aGF0IHdlIGNhbm5vdCBzZWUgdGhlc2UgeWV0LgogICAg
ICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKaW5kZXggMzY0NGEyZmQxOWEwZDli
M2RkYTdiMDY4YTAwNDkwYTU4MjYyMDg2ZC4uN2NlMzI2ZWFiYTkyODM5NmUwOGRhMWQ3NmMxZThh
NTcxODA1NzVkNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29k
ZVBhcnNlci5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJERkdBcnJheU1vZGUuaCIK
ICNpbmNsdWRlICJERkdDYXBhYmlsaXRpZXMuaCIKICNpbmNsdWRlICJERkdDbG9iYmVyc0V4aXRT
dGF0ZS5oIgorI2luY2x1ZGUgIkRGR0dlbmVyYXRvckxvY2FsRGF0YS5oIgogI2luY2x1ZGUgIkRG
R0dyYXBoLmgiCiAjaW5jbHVkZSAiREZHSklUQ29kZS5oIgogI2luY2x1ZGUgIkdldEJ5SWRTdGF0
dXMuaCIKQEAgLTk2Myw2ICs5NjQsMTEgQEAgY2xhc3MgQnl0ZUNvZGVQYXJzZXIgewogICAgICAg
ICBmb3IgKEFyZ3VtZW50UG9zaXRpb24qIGFyZ3VtZW50IDogbV9pbmxpbmVTdGFja1RvcC0+bV9h
cmd1bWVudFBvc2l0aW9ucykKICAgICAgICAgICAgIGFyZ3VtZW50LT5tZXJnZVNob3VsZE5ldmVy
VW5ib3godHJ1ZSk7CiAgICAgfQorCisgICAgR2VuZXJhdG9yTG9jYWxEYXRhKiBuZXdHZW5lcmF0
b3JMb2NhbERhdGEoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZ3JhcGgubV9nZW5lcmF0b3JM
b2NhbERhdGEuYWRkKCk7CisgICAgfQogICAgIAogICAgIFZNKiBtX3ZtOwogICAgIENvZGVCbG9j
ayogbV9jb2RlQmxvY2s7CkBAIC0xMDUxLDYgKzEwNTcsOSBAQCBjbGFzcyBCeXRlQ29kZVBhcnNl
ciB7CiAgICAgICAgIENhbGxMaW5rSW5mb01hcCBtX2NhbGxMaW5rSW5mb3M7CiAgICAgICAgIFN0
dWJJbmZvTWFwIG1fc3R1YkluZm9zOwogICAgICAgICBCeVZhbEluZm9NYXAgbV9ieVZhbEluZm9z
OworCisgICAgICAgIC8vIEJhc2ljIGJsb2NrcyBwZXJmb3JtaW5nIHlpZWxkJ3Mgb3Bfc2F2ZSBv
cGVyYXRpb24uCisgICAgICAgIFZlY3RvcjxPcGVyYW5kczxHZW5lcmF0b3JMb2NhbERhdGEqPj4g
bV9nZW5lcmF0b3JMb2NhbHM7CiAgICAgICAgIAogICAgICAgICAvLyBEaWQgd2Ugc2VlIGFueSBy
ZXR1cm5zPyBXZSBuZWVkIHRvIGhhbmRsZSB0aGUgKHVuY29tbW9uIGJ1dCBuZWNlc3NhcnkpCiAg
ICAgICAgIC8vIGNhc2Ugd2hlcmUgYSBwcm9jZWR1cmUgdGhhdCBkb2VzIG5vdCByZXR1cm4gd2Fz
IGlubGluZWQuCkBAIC0zMzQxLDYgKzMzNTAsMTEgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFy
c2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX25ld19y
ZWdleHApOwogICAgICAgICB9CiAKKyAgICAgICAgY2FzZSBvcF9uZXdfZ2VuZXJhdG9yX2ZyYW1l
OiB7CisgICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsx
XS51Lm9wZXJhbmQpLCBhZGRUb0dyYXBoKE5ld0dlbmVyYXRvckZyYW1lLCBPcEluZm8oY3VycmVu
dEluc3RydWN0aW9uWzJdLnUudW5zaWduZWRWYWx1ZSkpKTsKKyAgICAgICAgICAgIE5FWFRfT1BD
T0RFKG9wX25ld19nZW5lcmF0b3JfZnJhbWUpOworICAgICAgICB9CisKICAgICAgICAgY2FzZSBv
cF9nZXRfcmVzdF9sZW5ndGg6IHsKICAgICAgICAgICAgIElubGluZUNhbGxGcmFtZSogaW5saW5l
Q2FsbEZyYW1lID0gdGhpcy0+aW5saW5lQ2FsbEZyYW1lKCk7CiAgICAgICAgICAgICBOb2RlKiBs
ZW5ndGg7CkBAIC0zMzY4LDYgKzMzODIsNTEgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VC
bG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgICAgICBhcnJheSwgYXJyYXlMZW5ndGgp
OwogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfY29weV9yZXN0KTsKICAgICAgICAgfQorCisg
ICAgICAgIGNhc2Ugb3Bfc2F2ZTogeworICAgICAgICAgICAgTm9kZSogZnJhbWUgPSBnZXQoVmly
dHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpKTsKKyAgICAgICAg
ICAgIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9IGN1cnJlbnRJbnN0cnVjdGlvblsy
XS51LnVuc2lnbmVkVmFsdWU7CisgICAgICAgICAgICBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZl
bmVzcyA9IG1faW5saW5lU3RhY2tUb3AtPm1fY29kZUJsb2NrLT5saXZlQ2FsbGVlTG9jYWxzQXRZ
aWVsZChsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpOworCisgICAgICAgICAgICBSRUxFQVNFX0FTU0VS
VChsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPT0gbV9pbmxpbmVTdGFja1RvcC0+bV9nZW5lcmF0b3JM
b2NhbHMuc2l6ZSgpKTsKKyAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fZ2VuZXJhdG9y
TG9jYWxzLmFwcGVuZChPcGVyYW5kczxHZW5lcmF0b3JMb2NhbERhdGEqPihtX251bUFyZ3VtZW50
cywgbV9udW1Mb2NhbHMpKTsKKyAgICAgICAgICAgIE9wZXJhbmRzPEdlbmVyYXRvckxvY2FsRGF0
YSo+JiBvcGVyYW5kcyA9IG1faW5saW5lU3RhY2tUb3AtPm1fZ2VuZXJhdG9yTG9jYWxzLmxhc3Qo
KTsKKworICAgICAgICAgICAgYWRkVG9HcmFwaChQdXRHZW5lcmF0b3JGcmFtZUxvY2FscywgT3BJ
bmZvKGxpdmVuZXNzLmJpdENvdW50KCkpLCBmcmFtZSk7CisgICAgICAgICAgICB1bnNpZ25lZCBn
ZW5lcmF0b3JMb2NhbEluZGV4ID0gMDsKKyAgICAgICAgICAgIGxpdmVuZXNzLmZvckVhY2hTZXRC
aXQoWyZdKHNpemVfdCBpbmRleCkgeworICAgICAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBv
cGVyYW5kID0gdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaW5kZXgpOworICAgICAgICAgICAgICAg
IFZpcnR1YWxSZWdpc3RlciByZW1hcHBlZE9wZXJhbmQgPSBtX2lubGluZVN0YWNrVG9wLT5yZW1h
cE9wZXJhbmQob3BlcmFuZCk7CisgICAgICAgICAgICAgICAgTm9kZSogbG9jYWwgPSBnZXQob3Bl
cmFuZCk7CisgICAgICAgICAgICAgICAgR2VuZXJhdG9yTG9jYWxEYXRhKiBnZW5lcmF0b3JMb2Nh
bERhdGEgPSBuZXdHZW5lcmF0b3JMb2NhbERhdGEoKTsKKyAgICAgICAgICAgICAgICBvcGVyYW5k
cy5sb2NhbChyZW1hcHBlZE9wZXJhbmQudG9Mb2NhbCgpKSA9IGdlbmVyYXRvckxvY2FsRGF0YTsK
KyAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFNldEdlbmVyYXRvckxvY2FsLCBPcEluZm8oZ2Vu
ZXJhdG9yTG9jYWxJbmRleCsrKSwgT3BJbmZvKGdlbmVyYXRvckxvY2FsRGF0YSksIGZyYW1lLCBs
b2NhbCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX3NhdmUp
OworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBvcF9yZXN1bWVfZnJvbV9nZW5lcmF0b3JfZnJh
bWU6IHsKKyAgICAgICAgICAgIE5vZGUqIGZyYW1lID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJy
ZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSk7CisgICAgICAgICAgICBPcGVyYW5kczxHZW5l
cmF0b3JMb2NhbERhdGEqPiYgb3BlcmFuZHMgPSBtX2lubGluZVN0YWNrVG9wLT5tX2dlbmVyYXRv
ckxvY2Fscy5sYXN0KCk7CisgICAgICAgICAgICB1bnNpZ25lZCBnZW5lcmF0b3JMb2NhbEluZGV4
ID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUudW5zaWduZWRWYWx1ZTsKKyAgICAgICAgICAgIFZp
cnR1YWxSZWdpc3RlciBvcGVyYW5kKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOwor
ICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHJlbWFwcGVkT3BlcmFuZCA9IG1faW5saW5lU3Rh
Y2tUb3AtPnJlbWFwT3BlcmFuZChvcGVyYW5kKTsKKyAgICAgICAgICAgIEdlbmVyYXRvckxvY2Fs
RGF0YSogZ2VuZXJhdG9yTG9jYWxEYXRhID0gb3BlcmFuZHMubG9jYWwocmVtYXBwZWRPcGVyYW5k
LnRvTG9jYWwoKSk7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChnZW5lcmF0b3JMb2NhbERh
dGEpOworICAgICAgICAgICAgc2V0KG9wZXJhbmQsIGFkZFRvR3JhcGgoR2V0R2VuZXJhdG9yTG9j
YWwsIE9wSW5mbyhnZW5lcmF0b3JMb2NhbEluZGV4KSwgT3BJbmZvKGdlbmVyYXRvckxvY2FsRGF0
YSksIGZyYW1lKSk7CisgICAgICAgICAgICBORVhUX09QQ09ERShvcF9yZXN1bWVfZnJvbV9nZW5l
cmF0b3JfZnJhbWUpOworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBvcF9jbGVhcl9nZW5lcmF0
b3JfZnJhbWU6IHsKKyAgICAgICAgICAgIE5vZGUqIGZyYW1lID0gZ2V0KFZpcnR1YWxSZWdpc3Rl
cihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSk7CisgICAgICAgICAgICBhZGRUb0dy
YXBoKFB1dEdlbmVyYXRvckZyYW1lTG9jYWxzLCBPcEluZm8oMCksIGZyYW1lKTsKKyAgICAgICAg
ICAgIE5FWFRfT1BDT0RFKG9wX2NsZWFyX2dlbmVyYXRvcl9mcmFtZSk7CisgICAgICAgIH0KKwor
ICAgICAgICBjYXNlIG9wX25vcDogeworICAgICAgICAgICAgTkVYVF9PUENPREUob3Bfbm9wKTsK
KyAgICAgICAgfQorCiAgICAgICAgICAgICAKICAgICAgICAgLy8gPT09IEJpdHdpc2Ugb3BlcmF0
aW9ucyA9PT0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBh
YmlsaXRpZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMu
Y3BwCmluZGV4IGQxMDBkOTdkNWM2MGUyNWEwNjBmZmRhNDU2NjNiM2I5NDE0MzVkYzYuLmE1ODJm
ODcyMDc2Y2ZmODk0MjgzZWJhMzFhNDk5Nzc2MzBkYzc4OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKQEAgLTE4MSw2ICsxODEsNyBAQCBDYXBh
YmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVsKE9wY29kZUlEIG9wY29kZUlELCBDb2RlQmxvY2sq
IGNvZGVCbG9jaywgSW5zdHJ1YwogICAgIGNhc2Ugb3BfbmV3X2FycmF5OgogICAgIGNhc2Ugb3Bf
bmV3X2FycmF5X3dpdGhfc2l6ZToKICAgICBjYXNlIG9wX25ld19hcnJheV9idWZmZXI6CisgICAg
Y2FzZSBvcF9uZXdfZ2VuZXJhdG9yX2ZyYW1lOgogICAgIGNhc2Ugb3Bfc3RyY2F0OgogICAgIGNh
c2Ugb3BfdG9fcHJpbWl0aXZlOgogICAgIGNhc2Ugb3BfdGhyb3c6CkBAIC0yMjQsNiArMjI1LDEw
IEBAIENhcGFiaWxpdHlMZXZlbCBjYXBhYmlsaXR5TGV2ZWwoT3Bjb2RlSUQgb3Bjb2RlSUQsIENv
ZGVCbG9jayogY29kZUJsb2NrLCBJbnN0cnVjCiAgICAgY2FzZSBvcF9jYXRjaDoKICAgICBjYXNl
IG9wX2NvcHlfcmVzdDoKICAgICBjYXNlIG9wX2dldF9yZXN0X2xlbmd0aDoKKyAgICBjYXNlIG9w
X3NhdmU6CisgICAgY2FzZSBvcF9yZXN1bWVfZnJvbV9nZW5lcmF0b3JfZnJhbWU6CisgICAgY2Fz
ZSBvcF9jbGVhcl9nZW5lcmF0b3JfZnJhbWU6CisgICAgY2FzZSBvcF9ub3A6CiAgICAgICAgIHJl
dHVybiBDYW5Db21waWxlQW5kSW5saW5lOwogCiAgICAgY2FzZSBvcF9wdXRfdG9fc2NvcGU6IHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKaW5kZXggMzQzYTZkZTlj
MjkwOWI5M2UwNTI4Y2YwMjc4NGFhZDk0ZDAxYjRkMS4uZjNlNmVhYTI5ZGY2ZGRlZTgyM2ZkMzU3
YzE1MzA1MDIwZTk3NDViNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDbG9iYmVyaXplLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVy
aXplLmgKQEAgLTEwNDQsNiArMTA0NCw3IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgs
IE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAKICAg
ICBjYXNlIE5ld09iamVjdDoKICAgICBjYXNlIE5ld1JlZ2V4cDoKKyAgICBjYXNlIE5ld0dlbmVy
YXRvckZyYW1lOgogICAgIGNhc2UgTmV3U3RyaW5nT2JqZWN0OgogICAgIGNhc2UgUGhhbnRvbU5l
d09iamVjdDoKICAgICBjYXNlIE1hdGVyaWFsaXplTmV3T2JqZWN0OgpAQCAtMTExMSw2ICsxMTEy
LDIzIEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJl
YWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CisKKyAgICBj
YXNlIFNldEdlbmVyYXRvckxvY2FsOiB7CisgICAgICAgIHJlYWQoR2VuZXJhdG9yTG9jYWxDb3Vu
dCk7CisgICAgICAgIHdyaXRlKEdlbmVyYXRvckxvY2Fscyk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBjYXNlIEdldEdlbmVyYXRvckxvY2FsOiB7CisgICAgICAgIHJlYWQoR2VuZXJh
dG9yTG9jYWxDb3VudCk7CisgICAgICAgIHJlYWQoR2VuZXJhdG9yTG9jYWxzKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIGNhc2UgUHV0R2VuZXJhdG9yRnJhbWVMb2NhbHM6IHsKKyAg
ICAgICAgd3JpdGUoR2VuZXJhdG9yTG9jYWxDb3VudCk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CiAgICAgICAgIAogICAgIGNhc2UgVGhyb3dSZWZlcmVuY2VFcnJvcjoKICAgICAgICAgd3JpdGUo
U2lkZVN0YXRlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xv
YmJlcnNFeGl0U3RhdGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVy
c0V4aXRTdGF0ZS5jcHAKaW5kZXggNGUwYzUwNzc4OWNkN2IzZmY0Nzc1MWY5MjVlNzQ4M2U2MWUy
ZGY1Yi4uY2I5NDEzYmRmMDY3ZDE2MDlmYzFlODQ0ZmQ1OGYzZWFjZWI2ZmI1MiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyc0V4aXRTdGF0ZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyc0V4aXRTdGF0ZS5jcHAKQEAg
LTUzLDEwICs1MywxNiBAQCBib29sIGNsb2JiZXJzRXhpdFN0YXRlKEdyYXBoJiBncmFwaCwgTm9k
ZSogbm9kZSkKICAgICAgICAgLy8gZXhpdCBzdGF0ZS4KICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CisgICAgY2FzZSBQdXRHZW5lcmF0b3JGcmFtZUxvY2FsczoKKyAgICBjYXNlIFNldEdlbmVyYXRv
ckxvY2FsOgorICAgIGNhc2UgR2V0R2VuZXJhdG9yTG9jYWw6CisgICAgICAgIHJldHVybiBmYWxz
ZTsKKwogICAgIGNhc2UgQXJyYXlpZnlUb1N0cnVjdHVyZToKICAgICBjYXNlIEFycmF5aWZ5Ogog
ICAgIGNhc2UgTmV3T2JqZWN0OgogICAgIGNhc2UgTmV3UmVnZXhwOgorICAgIGNhc2UgTmV3R2Vu
ZXJhdG9yRnJhbWU6CiAgICAgY2FzZSBOZXdTdHJpbmdPYmplY3Q6CiAgICAgY2FzZSBQaGFudG9t
TmV3T2JqZWN0OgogICAgIGNhc2UgTWF0ZXJpYWxpemVOZXdPYmplY3Q6CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKaW5kZXggNzAyZGE1YmYxZTdjMGYxYzhmZTU1YzY0ODQ0
NThmY2FkODFlMmFhNS4uZTQxOGQ3ODc2NmVhNjRmMzAxZGQwZDNhNGQ3NTBiNGE4MjUwNmIxMiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcApAQCAtMjI5LDYgKzIyOSw5
IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIEdldEZy
b21Bcmd1bWVudHM6CiAgICAgY2FzZSBQdXRUb0FyZ3VtZW50czoKICAgICBjYXNlIENvcHlSZXN0
OgorICAgIGNhc2UgU2V0R2VuZXJhdG9yTG9jYWw6CisgICAgY2FzZSBHZXRHZW5lcmF0b3JMb2Nh
bDoKKyAgICBjYXNlIFB1dEdlbmVyYXRvckZyYW1lTG9jYWxzOgogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKICAgICBjYXNlIENyZWF0ZUFjdGl2YXRpb246CkBAIC0yNDYsNiArMjQ5LDcgQEAgYm9v
bCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgTmV3QXJyYXlXaXRo
U2l6ZToKICAgICBjYXNlIE5ld0FycmF5QnVmZmVyOgogICAgIGNhc2UgTmV3UmVnZXhwOgorICAg
IGNhc2UgTmV3R2VuZXJhdG9yRnJhbWU6CiAgICAgY2FzZSBOZXdTdHJpbmdPYmplY3Q6CiAgICAg
Y2FzZSBNYWtlUm9wZToKICAgICBjYXNlIE5ld0Fycm93RnVuY3Rpb246CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAppbmRleCBjOWQ1YWJmYjQ5NDgxYjkwNTg5
ZWM0ZmJhNTk1YTJjZThlNzBkZjY3Li44NzliZTlkZTIxMjA4NmQ5YWRmZGY2MTI3NzJmN2YyM2Y2
YjNhYjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhh
c2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAK
QEAgLTE0MzAsNiArMTQzMCwyMSBAQCBjbGFzcyBGaXh1cFBoYXNlIDogcHVibGljIFBoYXNlIHsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKKyAgICAgICAgY2FzZSBTZXRHZW5lcmF0
b3JMb2NhbDogeworICAgICAgICAgICAgZml4RWRnZTxDZWxsVXNlPihub2RlLT5jaGlsZDEoKSk7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2UgR2V0R2VuZXJh
dG9yTG9jYWw6IHsKKyAgICAgICAgICAgIGZpeEVkZ2U8Q2VsbFVzZT4obm9kZS0+Y2hpbGQxKCkp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBjYXNlIFB1dEdlbmVy
YXRvckZyYW1lTG9jYWxzOiB7CisgICAgICAgICAgICBmaXhFZGdlPENlbGxVc2U+KG5vZGUtPmNo
aWxkMSgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKICNpZiAhQVNTRVJUX0RJ
U0FCTEVECiAgICAgICAgIC8vIEhhdmUgdGhlc2Ugbm8tb3AgY2FzZXMgaGVyZSB0byBlbnN1cmUg
dGhhdCBub2JvZHkgZm9yZ2V0cyB0byBhZGQgaGFuZGxlcnMgZm9yIG5ldyBvcGNvZGVzLgogICAg
ICAgICBjYXNlIFNldEFyZ3VtZW50OgpAQCAtMTQ2Miw2ICsxNDc3LDcgQEAgY2xhc3MgRml4dXBQ
aGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgIGNhc2UgTmV3T2JqZWN0OgogICAgICAgICBj
YXNlIE5ld0FycmF5QnVmZmVyOgogICAgICAgICBjYXNlIE5ld1JlZ2V4cDoKKyAgICAgICAgY2Fz
ZSBOZXdHZW5lcmF0b3JGcmFtZToKICAgICAgICAgY2FzZSBCcmVha3BvaW50OgogICAgICAgICBj
YXNlIFByb2ZpbGVXaWxsQ2FsbDoKICAgICAgICAgY2FzZSBQcm9maWxlRGlkQ2FsbDoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR2VuZXJhdG9yTG9jYWxEYXRhLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dlbmVyYXRvckxvY2FsRGF0YS5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRhYTM2NWJiOGYzZDk4N2JlYTJkNTA1NDRkY2FlN2EzZjg1Y2JlZWUKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dlbmVyYXRvckxvY2FsRGF0
YS5oCkBAIC0wLDAgKzEsNjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgWXVzdWtlIFN1
enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgREZHR2VuZXJhdG9yTG9jYWxEYXRhX2gKKyNkZWZp
bmUgREZHR2VuZXJhdG9yTG9jYWxEYXRhX2gKKworI2lmIEVOQUJMRShERkdfSklUKQorCisjaW5j
bHVkZSAiREZHQ29tbW9uLmgiCisjaW5jbHVkZSAiREZHTm9kZUZsYWdzLmgiCisjaW5jbHVkZSAi
REZHVmFyaWFibGVBY2Nlc3NEYXRhLmgiCisjaW5jbHVkZSAiU3BlY3VsYXRlZFR5cGUuaCIKKyNp
bmNsdWRlICJWaXJ0dWFsUmVnaXN0ZXIuaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBE
RkcgeworCitzdHJ1Y3QgTm9kZTsKKworY2xhc3MgR2VuZXJhdG9yTG9jYWxEYXRhIHsKK3B1Ymxp
YzoKKyAgICBib29sIHByZWRpY3QoU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbikKKyAgICB7Cisg
ICAgICAgIHJldHVybiBtZXJnZVNwZWN1bGF0aW9uKG1fcHJlZGljdGlvbiwgcHJlZGljdGlvbik7
CisgICAgfQorCisgICAgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbigpCisgICAgeworICAgICAg
ICByZXR1cm4gbV9wcmVkaWN0aW9uOworICAgIH0KKworICAgIE5vZGVGbGFncyBmbGFncygpIGNv
bnN0IHsgcmV0dXJuIG1fZmxhZ3M7IH0KKworICAgIGJvb2wgbWVyZ2VGbGFncyhOb2RlRmxhZ3Mg
bmV3RmxhZ3MpCisgICAgeworICAgICAgICByZXR1cm4gY2hlY2tBbmRTZXQobV9mbGFncywgbV9m
bGFncyB8IG5ld0ZsYWdzKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgU3BlY3VsYXRlZFR5cGUg
bV9wcmVkaWN0aW9uIHsgU3BlY05vbmUgfTsKKyAgICBOb2RlRmxhZ3MgbV9mbGFncyB7IDAgfTsK
K307CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKKworI2VuZGlmIC8vIEVOQUJMRShERkdf
SklUKQorCisjZW5kaWYgLy8gREZHVmFyaWFibGVBY2Nlc3NEYXRhX2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHR3JhcGguaAppbmRleCAwOWFhZTk1NWY2NmFhNzg5NGExNDg1ZTEzOTM3ZjNiYTUz
ODg5ZDFjLi40M2ZkYmIxYTcxMzAzNDZjOWJkYWY0OWQ0ZTQxNmI3MjQxM2YwNjFkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCkBAIC02MCw2ICs2MCw3IEBACiBjbGFzcyBEb21p
bmF0b3JzOwogY2xhc3MgTmF0dXJhbExvb3BzOwogY2xhc3MgUHJlUG9zdE51bWJlcmluZzsKK2Ns
YXNzIEdlbmVyYXRvckxvY2FsRGF0YTsKIAogI2RlZmluZSBERkdfTk9ERV9ET19UT19DSElMRFJF
TihncmFwaCwgbm9kZSwgdGhpbmdUb0RvKSBkbyB7ICAgICAgICAgICAgXAogICAgICAgICBOb2Rl
KiBfbm9kZSA9IChub2RlKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXApAQCAtODg3LDYgKzg4OCw3IEBAIGNsYXNzIEdyYXBoIDogcHVibGljIHZpcnR1YWwgU2Nh
bm5hYmxlIHsKICAgICBCYWc8Q2FsbFZhcmFyZ3NEYXRhPiBtX2NhbGxWYXJhcmdzRGF0YTsKICAg
ICBCYWc8TG9hZFZhcmFyZ3NEYXRhPiBtX2xvYWRWYXJhcmdzRGF0YTsKICAgICBCYWc8U3RhY2tB
Y2Nlc3NEYXRhPiBtX3N0YWNrQWNjZXNzRGF0YTsKKyAgICBCYWc8R2VuZXJhdG9yTG9jYWxEYXRh
PiBtX2dlbmVyYXRvckxvY2FsRGF0YTsKICAgICBWZWN0b3I8SW5saW5lVmFyaWFibGVEYXRhLCA0
PiBtX2lubGluZVZhcmlhYmxlRGF0YTsKICAgICBIYXNoTWFwPENvZGVCbG9jayosIHN0ZDo6dW5p
cXVlX3B0cjxGdWxsQnl0ZWNvZGVMaXZlbmVzcz4+IG1fYnl0ZWNvZGVMaXZlbmVzczsKICAgICBI
YXNoTWFwPENvZGVCbG9jayosIHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUtpbGxzPj4gbV9ieXRl
Y29kZUtpbGxzOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlF
eGl0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAKaW5kZXgg
ZGFhMjkzMzlkYmZiZGY4MGFhZDliNjQ2YTJjYjdhMDU4N2Q5NjIzOC4uZmM1N2I4MjMwM2M3OWJk
MTNjZDVkMWNlMWJlMGFmYjcxMGNlNmM3NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdNYXlFeGl0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R01heUV4aXQuY3BwCkBAIC0xMzAsNiArMTMwLDkgQEAgRXhpdE1vZGUgbWF5RXhpdChHcmFwaCYg
Z3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBTdG9yZUJhcnJpZXI6CiAgICAgY2FzZSBQdXRC
eU9mZnNldDoKICAgICBjYXNlIFB1dENsb3N1cmVWYXI6CisgICAgY2FzZSBQdXRHZW5lcmF0b3JG
cmFtZUxvY2FsczoKKyAgICBjYXNlIFNldEdlbmVyYXRvckxvY2FsOgorICAgIGNhc2UgR2V0R2Vu
ZXJhdG9yTG9jYWw6CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBTdHJDYXQ6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTm9kZS5oCmluZGV4IDEyODcwZDkzZDBjNDgyZTRmOGU1ZDRkMmRhZjFl
NmJmMWY3MWI2MmMuLmFlNDQ4MzEzYTg1OTYzZTM0NjhkYWRhOWI1YzA4Mzg0MTU2M2I3M2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVk
ZSAiREZHQXJyYXlNb2RlLmgiCiAjaW5jbHVkZSAiREZHQ29tbW9uLmgiCiAjaW5jbHVkZSAiREZH
RXBvY2guaCIKKyNpbmNsdWRlICJERkdHZW5lcmF0b3JMb2NhbERhdGEuaCIKICNpbmNsdWRlICJE
RkdMYXp5SlNWYWx1ZS5oIgogI2luY2x1ZGUgIkRGR011bHRpR2V0QnlPZmZzZXREYXRhLmgiCiAj
aW5jbHVkZSAiREZHTm9kZUZsYWdzLmgiCkBAIC04NzgsNiArODc5LDcyIEBAIHN0cnVjdCBOb2Rl
IHsKICAgICAgICAgcmV0dXJuIG1fb3BJbmZvOwogICAgIH0KIAorICAgIGJvb2wgaGFzR2VuZXJh
dG9yTG9jYWxzU2l6ZSgpCisgICAgeworICAgICAgICBzd2l0Y2ggKG9wKCkpIHsKKyAgICAgICAg
Y2FzZSBOZXdHZW5lcmF0b3JGcmFtZToKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQor
CisgICAgdW5zaWduZWQgZ2VuZXJhdG9yTG9jYWxzU2l6ZSgpCisgICAgeworICAgICAgICBBU1NF
UlQoaGFzR2VuZXJhdG9yTG9jYWxzU2l6ZSgpKTsKKyAgICAgICAgcmV0dXJuIG1fb3BJbmZvOwor
ICAgIH0KKworICAgIGJvb2wgaGFzR2VuZXJhdG9yTG9jYWxJbmRleCgpCisgICAgeworICAgICAg
ICBzd2l0Y2ggKG9wKCkpIHsKKyAgICAgICAgY2FzZSBTZXRHZW5lcmF0b3JMb2NhbDoKKyAgICAg
ICAgY2FzZSBHZXRHZW5lcmF0b3JMb2NhbDoKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
ICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAg
fQorCisgICAgdW5zaWduZWQgZ2VuZXJhdG9yTG9jYWxJbmRleCgpCisgICAgeworICAgICAgICBB
U1NFUlQoaGFzR2VuZXJhdG9yTG9jYWxJbmRleCgpKTsKKyAgICAgICAgcmV0dXJuIG1fb3BJbmZv
OworICAgIH0KKworICAgIGJvb2wgaGFzR2VuZXJhdG9yTG9jYWxEYXRhKCkKKyAgICB7CisgICAg
ICAgIHN3aXRjaCAob3AoKSkgeworICAgICAgICBjYXNlIFNldEdlbmVyYXRvckxvY2FsOgorICAg
ICAgICBjYXNlIEdldEdlbmVyYXRvckxvY2FsOgorICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICBHZW5lcmF0b3JMb2NhbERhdGEqIGdlbmVyYXRvckxvY2FsRGF0YSgpCisgICAg
eworICAgICAgICBBU1NFUlQoaGFzR2VuZXJhdG9yTG9jYWxEYXRhKCkpOworICAgICAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDxHZW5lcmF0b3JMb2NhbERhdGEqPihtX29wSW5mbzIpOworICAg
IH0KKworICAgIGJvb2wgaGFzR2VuZXJhdG9yRnJhbWVMb2NhbHMoKQorICAgIHsKKyAgICAgICAg
c3dpdGNoIChvcCgpKSB7CisgICAgICAgIGNhc2UgUHV0R2VuZXJhdG9yRnJhbWVMb2NhbHM6Cisg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHVuc2lnbmVkIGdlbmVyYXRvckZy
YW1lTG9jYWxzKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChoYXNHZW5lcmF0b3JGcmFtZUxvY2Fs
cygpKTsKKyAgICAgICAgcmV0dXJuIG1fb3BJbmZvOworICAgIH0KKwogICAgIGJvb2wgaGFzQWNj
ZXNzb3JBdHRyaWJ1dGVzKCkKICAgICB7CiAgICAgICAgIHN3aXRjaCAob3AoKSkgewpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCmluZGV4IGRkZDBiOTdjYjJmZTY5MjYwNDUx
MDNmOGE3MTA3MDA0ODJlOWY2YmQuLmM5YThkNzJmODI3ZWJlYzgxYWRlZWJmMmQ2ZDg5N2FjOWU4
MGQ1M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKQEAgLTc5LDYg
Kzc5LDEwIEBACiAgICAgbWFjcm8oRmx1c2gsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNy
byhQaGFudG9tTG9jYWwsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBcCisgICAgbWFjcm8oU2V0
R2VuZXJhdG9yTG9jYWwsIE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBtYWNybyhHZXRHZW5lcmF0
b3JMb2NhbCwgTm9kZVJlc3VsdEpTKSBcCisgICAgbWFjcm8oUHV0R2VuZXJhdG9yRnJhbWVMb2Nh
bHMsIE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBcCiAgICAgLyogSGludCB0aGF0IHRoaXMgaXMg
d2hlcmUgYnl0ZWNvZGUgdGhpbmtzIGlzIGEgZ29vZCBwbGFjZSB0byBPU1IuIE5vdGUgdGhhdCB0
aGlzICovXAogICAgIC8qIHdpbGwgZXhpc3QgZXZlbiBpbiBpbmxpbmVkIGxvb3BzLiBUaGlzIGhh
cyBubyBleGVjdXRpb24gc2VtYW50aWNzIGJ1dCBpdCBtdXN0ICovXAogICAgIC8qIHN1cnZpdmUg
YWxsIERDRS4gV2UgdHJlYXQgdGhpcyBhcyBiZWluZyBhIGNhbi1leGl0IGJlY2F1c2UgdGllci11
cCB0byBGVEwgbWF5ICovXApAQCAtMjYzLDYgKzI2Nyw3IEBACiAgICAgbWFjcm8oTmV3QXJyYXlC
dWZmZXIsIE5vZGVSZXN1bHRKUykgXAogICAgIG1hY3JvKE5ld1R5cGVkQXJyYXksIE5vZGVSZXN1
bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhOZXdSZWdleHAsIE5vZGVSZXN1
bHRKUykgXAorICAgIG1hY3JvKE5ld0dlbmVyYXRvckZyYW1lLCBOb2RlUmVzdWx0SlMpIFwKICAg
ICAvKiBSZXN0IFBhcmFtZXRlciAqL1wKICAgICBtYWNybyhHZXRSZXN0TGVuZ3RoLCBOb2RlUmVz
dWx0SW50MzIpIFwKICAgICBtYWNybyhDb3B5UmVzdCwgTm9kZU11c3RHZW5lcmF0ZSkgXApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKaW5kZXggMmZkNWRiZGM3
ZmM0Y2NhODZmYWUxMDkyMjdhYzE3NTdmZGNkZjk2Yy4uYmMzNTY2MTNkM2Y1MjE4MDgyMzhlNTI2
ODEzNWFhYjA5YmU2N2YwZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJh
dGlvbnMuY3BwCkBAIC00MSw4ICs0MSw5IEBACiAjaW5jbHVkZSAiRGlyZWN0QXJndW1lbnRzLmgi
CiAjaW5jbHVkZSAiRlRMRm9yT1NSRW50cnlKSVRDb2RlLmgiCiAjaW5jbHVkZSAiRlRMT1NSRW50
cnkuaCIKLSNpbmNsdWRlICJIb3N0Q2FsbFJldHVyblZhbHVlLmgiCisjaW5jbHVkZSAiR2VuZXJh
dG9yRnJhbWUuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKKyNpbmNsdWRlICJIb3N0Q2Fs
bFJldHVyblZhbHVlLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKSVQu
aCIKICNpbmNsdWRlICJKSVRFeGNlcHRpb25zLmgiCkBAIC04MTcsNiArODE4LDExIEBAIGNoYXIq
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3RmxvYXQ2NEFycmF5V2l0aE9uZUFyZ3VtZW50KAog
ICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmljVHlwZWRB
cnJheVZpZXdXaXRoQXJndW1lbnRzPEpTRmxvYXQ2NEFycmF5PihleGVjLCBzdHJ1Y3R1cmUsIGVu
Y29kZWRWYWx1ZSwgMCwgTnVsbG9wdCkpOwogfQogCitjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbk5ld0dlbmVyYXRvckZyYW1lKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIGludDMyX3QgbnVtYmVyT2ZDYWxsZWVMb2NhbHMpCit7CisgICAgcmV0dXJuIGJpdHdpc2Vf
Y2FzdDxjaGFyKj4oR2VuZXJhdG9yRnJhbWU6OmNyZWF0ZShleGVjLT52bSgpLCBzdHJ1Y3R1cmUs
IG51bWJlck9mQ2FsbGVlTG9jYWxzKSk7Cit9CisKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVy
YXRpb25DcmVhdGVBY3RpdmF0aW9uRGlyZWN0KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIEpTU2NvcGUqIHNjb3BlLCBTeW1ib2xUYWJsZSogdGFibGUsIEVuY29kZWRKU1Zh
bHVlIGluaXRpYWxWYWx1ZUVuY29kZWQpCiB7CiAgICAgSlNWYWx1ZSBpbml0aWFsVmFsdWUgPSBK
U1ZhbHVlOjpkZWNvZGUoaW5pdGlhbFZhbHVlRW5jb2RlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT3BlcmF0aW9ucy5oCmluZGV4IDQwOTYyOWZmNWQ1M2E3YmUzODdhNjIzNjQ1NWQ2
ODE2YWMwODVlYzkuLmU0NDNiYTI4MjM3MmZiY2NlMmJhYzViMDlhMzY3YmQ1MmM4ZTc1ZjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCkBAIC04Miw2ICs4Miw3
IEBACiBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Zsb2F0MzJBcnJheVdpdGhPbmVB
cmd1bWVudChFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqLCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVS
TkFMOwogY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdGbG9hdDY0QXJyYXlXaXRoU2l6
ZShFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90KSBXVEZfSU5URVJOQUw7CiBjaGFyKiBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Zsb2F0NjRBcnJheVdpdGhPbmVBcmd1bWVudChFeGVj
U3RhdGUqLCBTdHJ1Y3R1cmUqLCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFMOworY2hhciog
SklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdHZW5lcmF0b3JGcmFtZShFeGVjU3RhdGUqLCBTdHJ1
Y3R1cmUqLCBpbnQzMl90KSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uUHV0QnlWYWxTdHJpY3QoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2Us
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRQcm9wZXJ0eSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlKSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxO
b25TdHJpY3QoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRQcm9wZXJ0eSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSBXVEZf
SU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxDZWxsU3RyaWN0
KEV4ZWNTdGF0ZSosIEpTQ2VsbCosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRQcm9wZXJ0eSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSBXVEZfSU5URVJOQUw7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2Uu
Y3BwCmluZGV4IDU3OTk4Y2ZlMTgxYThmY2Y5Y2M2NTE0MzUxYWM1ODBiODBlN2ZiOGEuLjFiOGUx
OTI4MDExMGM5NTA5OGQzMDlkYzE3NmE4MGExZDc2ZjY3ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2Uu
Y3BwCkBAIC0xNjAsNiArMTYwLDI0IEBAIGNsYXNzIFByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNl
IDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgIGNoYW5nZWQgfD0gdmFyaWFibGVBY2Nlc3NE
YXRhLT5wcmVkaWN0KG5vZGUtPmNoaWxkMSgpLT5wcmVkaWN0aW9uKCkpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KKworICAgICAgICBjYXNlIFNldEdlbmVyYXRvckxvY2FsOiB7Cisg
ICAgICAgICAgICBHZW5lcmF0b3JMb2NhbERhdGEqIGdlbmVyYXRvckxvY2FsRGF0YSA9IG5vZGUt
PmdlbmVyYXRvckxvY2FsRGF0YSgpOworICAgICAgICAgICAgY2hhbmdlZCB8PSBnZW5lcmF0b3JM
b2NhbERhdGEtPnByZWRpY3Qobm9kZS0+Y2hpbGQyKCktPnByZWRpY3Rpb24oKSk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2UgR2V0R2VuZXJhdG9yTG9jYWw6
IHsKKyAgICAgICAgICAgIEdlbmVyYXRvckxvY2FsRGF0YSogZ2VuZXJhdG9yTG9jYWxEYXRhID0g
bm9kZS0+Z2VuZXJhdG9yTG9jYWxEYXRhKCk7CisgICAgICAgICAgICBTcGVjdWxhdGVkVHlwZSBw
cmVkaWN0aW9uID0gZ2VuZXJhdG9yTG9jYWxEYXRhLT5wcmVkaWN0aW9uKCk7CisgICAgICAgICAg
ICAvLyBXZSBhbHdheXMgc3RvcmUgdGhlIHZhbHVlIGluIEdlbmVyYXRvckxvY2FsIGFzIEZvcm1h
dEpTVmFsdWUuCisgICAgICAgICAgICAvLyBTbyBkb3VibGUgdmFsdWUgaXMgYmV0dGVyIHRoYW4g
SW50NTIgdmFsdWUuCisgICAgICAgICAgICBpZiAocHJlZGljdGlvbiAmIFNwZWNJbnQ1MikKKyAg
ICAgICAgICAgICAgICBwcmVkaWN0aW9uID0gKHByZWRpY3Rpb24gfCBTcGVjSW50NTJBc0RvdWJs
ZSkgJiB+U3BlY0ludDUyOworICAgICAgICAgICAgaWYgKHByZWRpY3Rpb24pCisgICAgICAgICAg
ICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24ocHJlZGljdGlvbik7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgQml0QW5kOgog
ICAgICAgICBjYXNlIEJpdE9yOgpAQCAtNTI0LDcgKzU0Miw4IEBAIGNsYXNzIFByZWRpY3Rpb25Q
cm9wYWdhdGlvblBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgfQogICAgICAgICAgICAg
CiAgICAgICAgIGNhc2UgTmV3UmVnZXhwOgotICAgICAgICBjYXNlIENyZWF0ZUFjdGl2YXRpb246
IHsKKyAgICAgICAgY2FzZSBDcmVhdGVBY3RpdmF0aW9uOgorICAgICAgICBjYXNlIE5ld0dlbmVy
YXRvckZyYW1lOiB7CiAgICAgICAgICAgICBjaGFuZ2VkIHw9IHNldFByZWRpY3Rpb24oU3BlY09i
amVjdE90aGVyKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC03MTYsNiArNzM1
LDcgQEAgY2xhc3MgUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2Ugewog
ICAgICAgICBjYXNlIEV4aXRPSzoKICAgICAgICAgY2FzZSBMb2FkVmFyYXJnczoKICAgICAgICAg
Y2FzZSBDb3B5UmVzdDoKKyAgICAgICAgY2FzZSBQdXRHZW5lcmF0b3JGcmFtZUxvY2FsczoKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCiAgICAgICAgIC8vIFRoaXMgZ2V0cyBpZ25v
cmVkIGJlY2F1c2UgaXQgb25seSBwcmV0ZW5kcyB0byBwcm9kdWNlIGEgdmFsdWUuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCmluZGV4IDIzMGVmZWRjNDgz
MTUxMmJhYzU2OGJlZWZkYjI3Njk2MTg3MjA5NGMuLjdiZGVjM2I1M2UyMzA0MjhiZWM5ZGFjMTAz
NWYwYTRkMDRkOGE2MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U2FmZVRvRXhlY3V0ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRv
RXhlY3V0ZS5oCkBAIC0yMzcsNiArMjM3LDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0
U3RhdGVUeXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgTmV3
QXJyYXlXaXRoU2l6ZToKICAgICBjYXNlIE5ld0FycmF5QnVmZmVyOgogICAgIGNhc2UgTmV3UmVn
ZXhwOgorICAgIGNhc2UgTmV3R2VuZXJhdG9yRnJhbWU6CiAgICAgY2FzZSBCcmVha3BvaW50Ogog
ICAgIGNhc2UgUHJvZmlsZVdpbGxDYWxsOgogICAgIGNhc2UgUHJvZmlsZURpZENhbGw6CkBAIC0z
MjgsNiArMzI5LDkgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0
ZSwgR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgR2V0TXlBcmd1bWVudEJ5VmFs
OgogICAgIGNhc2UgRm9yd2FyZFZhcmFyZ3M6CiAgICAgY2FzZSBDb3B5UmVzdDoKKyAgICBjYXNl
IFNldEdlbmVyYXRvckxvY2FsOgorICAgIGNhc2UgR2V0R2VuZXJhdG9yTG9jYWw6CisgICAgY2Fz
ZSBQdXRHZW5lcmF0b3JGcmFtZUxvY2FsczoKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBj
YXNlIEJvdHRvbVZhbHVlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmNwcAppbmRleCBjY2NlNzkxOTk1MTQ1ZTkxZWZkMjAwODhjOTZiN2FmODJiNTYx
NmQ2Li42NTFiY2M3OWRjZTBlMTNlNTVjMzMwZjI1YjgzMTQyNDNkZWNjODg3IDEwMDc1NQotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApAQCAtMzgsNiAr
MzgsNyBAQAogI2luY2x1ZGUgIkRGR1NhbmVTdHJpbmdHZXRCeVZhbFNsb3dQYXRoR2VuZXJhdG9y
LmgiCiAjaW5jbHVkZSAiREZHU2xvd1BhdGhHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJEaXJlY3RB
cmd1bWVudHMuaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JGcmFtZS5oIgogI2luY2x1ZGUgIkpJVEFk
ZEdlbmVyYXRvci5oIgogI2luY2x1ZGUgIkpJVEJpdEFuZEdlbmVyYXRvci5oIgogI2luY2x1ZGUg
IkpJVEJpdE9yR2VuZXJhdG9yLmgiCkBAIC02Mzc4LDYgKzYzNzksMzQgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZU5ld1N0cmluZ09iamVjdChOb2RlKiBub2RlKQogICAgIGNlbGxSZXN1
bHQocmVzdWx0R1BSLCBub2RlKTsKIH0KIAordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5l
d0dlbmVyYXRvckZyYW1lKE5vZGUqIG5vZGUpCit7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCA9IG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYyk7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBnbG9iYWxPYmplY3QtPmdlbmVyYXRv
ckZyYW1lU3RydWN0dXJlKCk7CisgICAgdW5zaWduZWQgZ2VuZXJhdG9yTG9jYWxzU2l6ZSA9IG5v
ZGUtPmdlbmVyYXRvckxvY2Fsc1NpemUoKTsKKworICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhp
cyk7CisgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2gxKHRoaXMpOworICAgIEdQUlRlbXBvcmFyeSBz
Y3JhdGNoMih0aGlzKTsKKworICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7Cisg
ICAgR1BSUmVnIHNjcmF0Y2gxR1BSID0gc2NyYXRjaDEuZ3ByKCk7CisgICAgR1BSUmVnIHNjcmF0
Y2gyR1BSID0gc2NyYXRjaDIuZ3ByKCk7CisKKyAgICBKSVRDb21waWxlcjo6SnVtcExpc3Qgc2xv
d1BhdGg7CisKKyAgICBlbWl0QWxsb2NhdGVKU09iamVjdFdpdGhLbm93blNpemU8R2VuZXJhdG9y
RnJhbWU+KHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpLCBUcnVzdGVkSW1tUHRy
KG51bGxwdHIpLCBzY3JhdGNoMUdQUiwgc2NyYXRjaDJHUFIsIHNsb3dQYXRoLCBHZW5lcmF0b3JG
cmFtZTo6YWxsb2NhdGlvblNpemVGb3JMb2NhbHMoZ2VuZXJhdG9yTG9jYWxzU2l6ZSkpOworICAg
IG1faml0LnN0b3JlMzIoVHJ1c3RlZEltbTMyKGdlbmVyYXRvckxvY2Fsc1NpemUpLCBKSVRDb21w
aWxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIEdlbmVyYXRvckZyYW1lOjpudW1iZXJPZkNhbGxlZUxv
Y2Fsc09mZnNldCgpKSk7CisgICAgbV9qaXQuc3RvcmUzMihUcnVzdGVkSW1tMzIoMCksIEpJVENv
bXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgR2VuZXJhdG9yRnJhbWU6Om51bWJlck9mU2F2ZWRD
YWxsZWVMb2NhbHNPZmZzZXQoKSkpOworICAgIEpTVmFsdWUgZW1wdHlWYWx1ZTsKKyAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgZ2VuZXJhdG9yTG9jYWxzU2l6ZTsgKytpKQorICAgICAgICBt
X2ppdC5zdG9yZVRydXN0ZWRWYWx1ZShlbXB0eVZhbHVlLCBKSVRDb21waWxlcjo6QWRkcmVzcyhy
ZXN1bHRHUFIsIEdlbmVyYXRvckZyYW1lOjpsb2NhbE9mZnNldChpKSkpOworCisgICAgYWRkU2xv
d1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dQYXRoLCB0aGlzLCBvcGVyYXRpb25OZXdH
ZW5lcmF0b3JGcmFtZSwgcmVzdWx0R1BSLCBzdHJ1Y3R1cmUsIGdlbmVyYXRvckxvY2Fsc1NpemUp
KTsKKworICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKK30KKwogdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZU5ld1R5cGVkQXJyYXkoTm9kZSogbm9kZSkKIHsKICAgICBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3Iobm9k
ZS0+b3JpZ2luLnNlbWFudGljKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuaAppbmRleCA1MzEyYzhkYmVkZmVkMTgwMDU0MzgxMTMwNzllZWIwYjBlOTkw
OGFiLi41NzM5ODE1NzhmMjRmNWIzMDI1OWYyYWMwMjU1MmZkNDA4ZmU3YWUwIDEwMDc1NQotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCkBAIC0yMjgxLDYgKzIy
ODEsNyBAQCBjbGFzcyBTcGVjdWxhdGl2ZUpJVCB7CiAgICAgdm9pZCBjb21waWxlUHV0QnlWYWxG
b3JGbG9hdFR5cGVkQXJyYXkoR1BSUmVnIGJhc2UsIEdQUlJlZyBwcm9wZXJ0eSwgTm9kZSosIFR5
cGVkQXJyYXlUeXBlKTsKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2xhc3NUeXBlPiB2b2lkIGNv
bXBpbGVOZXdGdW5jdGlvbkNvbW1vbihHUFJSZWcsIFN0cnVjdHVyZSosIEdQUlJlZywgR1BSUmVn
LCBHUFJSZWcsIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCYsIHNpemVfdCwgRnVuY3Rpb25FeGVj
dXRhYmxlKiwgcHRyZGlmZl90LCBwdHJkaWZmX3QsIHB0cmRpZmZfdCk7CiAgICAgdm9pZCBjb21w
aWxlTmV3RnVuY3Rpb24oTm9kZSopOworICAgIHZvaWQgY29tcGlsZU5ld0dlbmVyYXRvckZyYW1l
KE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVGb3J3YXJkVmFyYXJncyhOb2RlKik7CiAgICAgdm9p
ZCBjb21waWxlQ3JlYXRlQWN0aXZhdGlvbihOb2RlKik7CiAgICAgdm9pZCBjb21waWxlQ3JlYXRl
RGlyZWN0QXJndW1lbnRzKE5vZGUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCmluZGV4IDEyZWI1MDQxMTgwYWMyZjUwMTY0
Zjk1MWIwNThlZGI2MmQyMjgyNzAuLjMxMDNhZDU5ZmYyMDQxYTc0ZDEyZWE4YjgzYWMxNzczM2Vm
N2M2ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVDMyXzY0LmNwcApAQCAtMzY1MCw2ICszNjUwLDExIEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgY2VsbFJlc3VsdChyZXN1bHRQYXlsb2Fk
LmdwcigpLCBub2RlKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQorCisgICAgY2FzZSBOZXdHZW5l
cmF0b3JGcmFtZTogeworICAgICAgICBjb21waWxlTmV3R2VuZXJhdG9yRnJhbWUobm9kZSk7Cisg
ICAgICAgIGJyZWFrOworICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBUb1RoaXM6IHsKICAgICAg
ICAgQVNTRVJUKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4
IGU3NDU2OTQwNGMxYjk3ODQ4MDYxOTdkMTQ1NDVjZDFkYjIzZDdhNWMuLmY3OTllZjQ0ZDQyNWIx
NGE0YTBiZThiYzFjNzE3MGZkMmVkYTUxOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1
ZGUgIkRGR1Nsb3dQYXRoR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiRGVidWdnZXIuaCIKICNpbmNs
dWRlICJEaXJlY3RBcmd1bWVudHMuaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JGcmFtZS5oIgogI2lu
Y2x1ZGUgIkdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRl
ICJKU0Vudmlyb25tZW50UmVjb3JkLmgiCkBAIC0zNjg4LDYgKzM2ODksMTEgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBjZWxsUmVzdWx0KHJlc3Vs
dC5ncHIoKSwgbm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KKworICAgIGNhc2UgTmV3R2Vu
ZXJhdG9yRnJhbWU6IHsKKyAgICAgICAgY29tcGlsZU5ld0dlbmVyYXRvckZyYW1lKG5vZGUpOwor
ICAgICAgICBicmVhazsKKyAgICB9CiAgICAgICAgIAogICAgIGNhc2UgVG9UaGlzOiB7CiAgICAg
ICAgIEFTU0VSVChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSk7CkBAIC00
NzIwLDYgKzQ3MjYsMzggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2Rl
KQogICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiAgICAgICAgIGJyZWFrOwog
ICAgIH0KKyAgICBjYXNlIFNldEdlbmVyYXRvckxvY2FsOiB7CisgICAgICAgIFNwZWN1bGF0ZUNl
bGxPcGVyYW5kIGZyYW1lKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgSlNWYWx1ZU9w
ZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQyKCkpOworCisgICAgICAgIEdQUlJlZyBmcmFt
ZUdQUiA9IGZyYW1lLmdwcigpOworICAgICAgICBHUFJSZWcgdmFsdWVHUFIgPSB2YWx1ZS5ncHIo
KTsKKyAgICAgICAgdW5zaWduZWQgZ2VuZXJhdG9yTG9jYWxJbmRleCA9IG5vZGUtPmdlbmVyYXRv
ckxvY2FsSW5kZXgoKTsKKworICAgICAgICBtX2ppdC5zdG9yZTY0KHZhbHVlR1BSLCBKSVRDb21w
aWxlcjo6QWRkcmVzcyhmcmFtZUdQUiwgR2VuZXJhdG9yRnJhbWU6OmxvY2FsT2Zmc2V0KGdlbmVy
YXRvckxvY2FsSW5kZXgpKSk7CisKKyAgICAgICAgbm9SZXN1bHQobm9kZSk7CisgICAgICAgIGJy
ZWFrOworICAgIH0KKyAgICBjYXNlIEdldEdlbmVyYXRvckxvY2FsOiB7CisgICAgICAgIFNwZWN1
bGF0ZUNlbGxPcGVyYW5kIGZyYW1lKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgR1BS
VGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKworICAgICAgICBHUFJSZWcgZnJhbWVHUFIgPSBmcmFt
ZS5ncHIoKTsKKyAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKyAgICAg
ICAgdW5zaWduZWQgZ2VuZXJhdG9yTG9jYWxJbmRleCA9IG5vZGUtPmdlbmVyYXRvckxvY2FsSW5k
ZXgoKTsKKworICAgICAgICBtX2ppdC5sb2FkNjQoSklUQ29tcGlsZXI6OkFkZHJlc3MoZnJhbWVH
UFIsIEdlbmVyYXRvckZyYW1lOjpsb2NhbE9mZnNldChnZW5lcmF0b3JMb2NhbEluZGV4KSksIHJl
c3VsdEdQUik7CisgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgUHV0R2VuZXJhdG9yRnJhbWVMb2NhbHM6IHsKKyAg
ICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgZnJhbWUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwor
ICAgICAgICBHUFJSZWcgZnJhbWVHUFIgPSBmcmFtZS5ncHIoKTsKKyAgICAgICAgbV9qaXQuc3Rv
cmUzMihUcnVzdGVkSW1tMzIobm9kZS0+Z2VuZXJhdG9yRnJhbWVMb2NhbHMoKSksIEpJVENvbXBp
bGVyOjpBZGRyZXNzKGZyYW1lR1BSLCBHZW5lcmF0b3JGcmFtZTo6bnVtYmVyT2ZTYXZlZENhbGxl
ZUxvY2Fsc09mZnNldCgpKSk7CisgICAgICAgIG5vUmVzdWx0KG5vZGUpOworICAgICAgICBicmVh
azsKKyAgICB9CiAgICAgY2FzZSBQcm9maWxlVHlwZTogewogICAgICAgICBKU1ZhbHVlT3BlcmFu
ZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIEdQUlRlbXBvcmFyeSBzY3Jh
dGNoMSh0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Rv
cmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAKaW5kZXggNzJmMjIwMGNlYTEwYjk4MTBk
YmE4YzdiMTlmZWZmMjRkYWE1ZGFlMy4uZDdjNzA1NjZmYzczN2Y4OTBmMTU2YjUzNDUwOWQ5YTBj
MDczOGU5YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJh
cnJpZXJJbnNlcnRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAKQEAgLTI4MSw2ICsyODEsMTEgQEAgY2xh
c3MgU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAg
ICAgICAgIGNvbnNpZGVyQmFycmllcihtX25vZGUtPmNoaWxkMSgpLCBtX25vZGUtPmNoaWxkMigp
KTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
Y2FzZSBTZXRHZW5lcmF0b3JMb2NhbDogeworICAgICAgICAgICAgICAgIGNvbnNpZGVyQmFycmll
cihtX25vZGUtPmNoaWxkMSgpLCBtX25vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgIGRlZmF1
bHQ6CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0yOTYsNiArMzAxLDcgQEAgY2xhc3MgU3Rv
cmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgY2Fz
ZSBOZXdBcnJheUJ1ZmZlcjoKICAgICAgICAgICAgIGNhc2UgTmV3VHlwZWRBcnJheToKICAgICAg
ICAgICAgIGNhc2UgTmV3UmVnZXhwOgorICAgICAgICAgICAgY2FzZSBOZXdHZW5lcmF0b3JGcmFt
ZToKICAgICAgICAgICAgIGNhc2UgTWF0ZXJpYWxpemVOZXdPYmplY3Q6CiAgICAgICAgICAgICBj
YXNlIE1hdGVyaWFsaXplQ3JlYXRlQWN0aXZhdGlvbjoKICAgICAgICAgICAgIGNhc2UgTmV3U3Ry
aW5nT2JqZWN0OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1
Y3R1cmVSZWdpc3RyYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlLmNwcAppbmRleCAyYzA1NTk4NDk4OTliZGY2ZmIx
MTE3NTk3ZTEwNTRiZmYzNTQ2NjkzLi5lMWFlZjBiMmMzOTNmNTYxOTQ4Y2NhNWE5NTlmMmUwNzEw
ODg0Mzg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVjdHVy
ZVJlZ2lzdHJhdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlLmNwcApAQCAtMTQ5LDYgKzE0OSw5IEBAIGNsYXNz
IFN0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAg
ICAgICBjYXNlIE5ld0dlbmVyYXRvckZ1bmN0aW9uOgogICAgICAgICAgICAgICAgICAgICByZWdp
c3RlclN0cnVjdHVyZShtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpLT5nZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVyZSgpKTsKICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBOZXdHZW5lcmF0b3JGcmFtZToKKyAgICAgICAg
ICAgICAgICAgICAgcmVnaXN0ZXJTdHJ1Y3R1cmUobV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9k
ZS0+b3JpZ2luLnNlbWFudGljKS0+Z2VuZXJhdG9yRnJhbWVTdHJ1Y3R1cmUoKSk7CisgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAg
ICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwCmluZGV4
IDk3YzA3ODRiYjQyYmM5MTlkMDZjZjUyM2M0MWUwMjQ2YTUzNTFkOTEuLjY5ZDg5ZDZhZDQyNTQ5
MjNiYzNmYWIzYzdhY2EyMDg5NWM1NWU1Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcApAQCAtMzAsNiArMzAs
NyBAQAogCiAjaW5jbHVkZSAiRGlyZWN0QXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiRlRMQWJicmV2
aWF0aW9ucy5oIgorI2luY2x1ZGUgIkdlbmVyYXRvckZyYW1lLmgiCiAjaW5jbHVkZSAiR2V0dGVy
U2V0dGVyLmgiCiAjaW5jbHVkZSAiSlNFbnZpcm9ubWVudFJlY29yZC5oIgogI2luY2x1ZGUgIkpT
UHJvcGVydHlOYW1lRW51bWVyYXRvci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaAppbmRleCA3N2U1Nzk4Njk0MGM2YWM5
NmY4N2YxZjk0NWM0NjI1MTI4ODYzMGYwLi40ODg2M2MwYmQzMGY2NDU3NjUzMTA4YmY0NTY5YjEy
Yzk0MDg1OGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3Ry
YWN0SGVhcFJlcG9zaXRvcnkuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFi
c3RyYWN0SGVhcFJlcG9zaXRvcnkuaApAQCAtNDcsNiArNDcsOCBAQAogICAgIG1hY3JvKERpcmVj
dEFyZ3VtZW50c19sZW5ndGgsIERpcmVjdEFyZ3VtZW50czo6b2Zmc2V0T2ZMZW5ndGgoKSkgXAog
ICAgIG1hY3JvKERpcmVjdEFyZ3VtZW50c19taW5DYXBhY2l0eSwgRGlyZWN0QXJndW1lbnRzOjpv
ZmZzZXRPZk1pbkNhcGFjaXR5KCkpIFwKICAgICBtYWNybyhEaXJlY3RBcmd1bWVudHNfb3ZlcnJp
ZGVzLCBEaXJlY3RBcmd1bWVudHM6Om9mZnNldE9mT3ZlcnJpZGVzKCkpIFwKKyAgICBtYWNybyhH
ZW5lcmF0b3JGcmFtZV9udW1iZXJPZkNhbGxlZUxvY2FscywgR2VuZXJhdG9yRnJhbWU6Om51bWJl
ck9mQ2FsbGVlTG9jYWxzT2Zmc2V0KCkpIFwKKyAgICBtYWNybyhHZW5lcmF0b3JGcmFtZV9udW1i
ZXJPZlNhdmVkQ2FsbGVlTG9jYWxzLCBHZW5lcmF0b3JGcmFtZTo6bnVtYmVyT2ZTYXZlZENhbGxl
ZUxvY2Fsc09mZnNldCgpKSBcCiAgICAgbWFjcm8oR2V0dGVyU2V0dGVyX2dldHRlciwgR2V0dGVy
U2V0dGVyOjpvZmZzZXRPZkdldHRlcigpKSBcCiAgICAgbWFjcm8oR2V0dGVyU2V0dGVyX3NldHRl
ciwgR2V0dGVyU2V0dGVyOjpvZmZzZXRPZlNldHRlcigpKSBcCiAgICAgbWFjcm8oSlNBcnJheUJ1
ZmZlclZpZXdfbGVuZ3RoLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSkgXApA
QCAtOTEsNiArOTMsNyBAQAogCiAjZGVmaW5lIEZPUl9FQUNIX0lOREVYRURfQUJTVFJBQ1RfSEVB
UChtYWNybykgXAogICAgIG1hY3JvKERpcmVjdEFyZ3VtZW50c19zdG9yYWdlLCBEaXJlY3RBcmd1
bWVudHM6OnN0b3JhZ2VPZmZzZXQoKSwgc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSkgXAorICAgIG1h
Y3JvKEdlbmVyYXRvckZyYW1lX2NhbGxlZUxvY2FscywgR2VuZXJhdG9yRnJhbWU6Om9mZnNldE9m
TG9jYWxzKCksIHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pKSBcCiAgICAgbWFjcm8oSlNF
bnZpcm9ubWVudFJlY29yZF92YXJpYWJsZXMsIEpTRW52aXJvbm1lbnRSZWNvcmQ6Om9mZnNldE9m
VmFyaWFibGVzKCksIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkpIFwKICAgICBtYWNybyhKU1Byb3Bl
cnR5TmFtZUVudW1lcmF0b3JfY2FjaGVkUHJvcGVydHlOYW1lc1ZlY3RvckNvbnRlbnRzLCAwLCBz
aXplb2YoV3JpdGVCYXJyaWVyPEpTU3RyaW5nPikpIFwKICAgICBtYWNybyhKU1JvcGVTdHJpbmdf
ZmliZXJzLCBKU1JvcGVTdHJpbmc6Om9mZnNldE9mRmliZXJzKCksIHNpemVvZihXcml0ZUJhcnJp
ZXI8SlNTdHJpbmc+KSkgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmls
aXRpZXMuY3BwCmluZGV4IGQyYTQ5MGMyYTY3ZTZkYjhiOWE1YTc5NjY0ZTU2NWUzZDZkOTUxZGMu
LjE3YjRlMmRiNWY2YTFjYzAwM2Y4ODBjN2VhNGM2MDBhYjhhYzg2NzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKQEAgLTcyLDYgKzcyLDcgQEAg
aW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBO
ZXdPYmplY3Q6CiAgICAgY2FzZSBOZXdBcnJheToKICAgICBjYXNlIE5ld0FycmF5QnVmZmVyOgor
ICAgIGNhc2UgTmV3R2VuZXJhdG9yRnJhbWU6CiAgICAgY2FzZSBHZXRCeU9mZnNldDoKICAgICBj
YXNlIEdldEdldHRlclNldHRlckJ5T2Zmc2V0OgogICAgIGNhc2UgR2V0R2V0dGVyOgpAQCAtMjE2
LDYgKzIxNyw5IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiBub2Rl
KQogICAgIGNhc2UgUHV0U2V0dGVyQnlWYWw6CiAgICAgY2FzZSBDb3B5UmVzdDoKICAgICBjYXNl
IEdldFJlc3RMZW5ndGg6CisgICAgY2FzZSBTZXRHZW5lcmF0b3JMb2NhbDoKKyAgICBjYXNlIEdl
dEdlbmVyYXRvckxvY2FsOgorICAgIGNhc2UgUHV0R2VuZXJhdG9yRnJhbWVMb2NhbHM6CiAgICAg
ICAgIC8vIFRoZXNlIGFyZSBPSy4KICAgICAgICAgYnJlYWs7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAKaW5kZXggMzdjYWU1YzE3YWQ5Yzcx
ZDAxOGQ0MWJiNmU5YTY2YzkxNzc5NjZmMi4uNmRmNzRhMDQ2YzQyOWU2MTAzNzA5NzNlMzdkN2U0
NTQ3OWRmNTlkNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dl
ckRGR1RvTExWTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRG
R1RvTExWTS5jcHAKQEAgLTUzLDYgKzUzLDcgQEAKICNpbmNsdWRlICJGVExQYXRjaHBvaW50RXhj
ZXB0aW9uSGFuZGxlLmgiCiAjaW5jbHVkZSAiRlRMVGh1bmtzLmgiCiAjaW5jbHVkZSAiRlRMV2Vp
Z2h0ZWRUYXJnZXQuaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JGcmFtZS5oIgogI2luY2x1ZGUgIkpJ
VEFkZEdlbmVyYXRvci5oIgogI2luY2x1ZGUgIkpJVEJpdEFuZEdlbmVyYXRvci5oIgogI2luY2x1
ZGUgIkpJVEJpdE9yR2VuZXJhdG9yLmgiCkBAIC04MzksNiArODQwLDkgQEAgY2xhc3MgTG93ZXJE
RkdUb0xMVk0gewogICAgICAgICBjYXNlIE5ld0FycmF5V2l0aFNpemU6CiAgICAgICAgICAgICBj
b21waWxlTmV3QXJyYXlXaXRoU2l6ZSgpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgTmV3R2VuZXJhdG9yRnJhbWU6CisgICAgICAgICAgICBjb21waWxlTmV3R2VuZXJhdG9yRnJh
bWUoKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRl
T2Zmc2V0OgogICAgICAgICAgICAgY29tcGlsZUdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0KCk7CiAg
ICAgICAgICAgICBicmVhazsKQEAgLTEwNzEsNiArMTA3NSwxNSBAQCBjbGFzcyBMb3dlckRGR1Rv
TExWTSB7CiAgICAgICAgIGNhc2UgR2V0UmVzdExlbmd0aDoKICAgICAgICAgICAgIGNvbXBpbGVH
ZXRSZXN0TGVuZ3RoKCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBQdXRHZW5l
cmF0b3JGcmFtZUxvY2FsczoKKyAgICAgICAgICAgIGNvbXBpbGVQdXRHZW5lcmF0b3JGcmFtZUxv
Y2FscygpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU2V0R2VuZXJhdG9yTG9j
YWw6CisgICAgICAgICAgICBjb21waWxlU2V0R2VuZXJhdG9yTG9jYWwoKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIEdldEdlbmVyYXRvckxvY2FsOgorICAgICAgICAgICAgY29t
cGlsZUdldEdlbmVyYXRvckxvY2FsKCk7CisgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBj
YXNlIFBoYW50b21Mb2NhbDoKICAgICAgICAgY2FzZSBMb29wSGludDoKQEAgLTM5MTYsNiArMzky
OSwyOCBAQCBjbGFzcyBMb3dlckRGR1RvTExWTSB7CiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNv
bnRpbnVhdGlvbiwgbGFzdE5leHQpOwogICAgICAgICBzZXRJbnQzMihtX291dC5waGkobV9vdXQu
aW50MzIsIHplcm9MZW5ndGhSZXN1bHQsIG5vblplcm9MZW5ndGhSZXN1bHQpKTsKICAgICB9CisK
KyAgICB2b2lkIGNvbXBpbGVQdXRHZW5lcmF0b3JGcmFtZUxvY2FscygpCisgICAgeworICAgICAg
ICBMVmFsdWUgZnJhbWUgPSBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBtX291
dC5zdG9yZTMyKG1fb3V0LmNvbnN0SW50MzIobV9ub2RlLT5nZW5lcmF0b3JGcmFtZUxvY2Fscygp
KSwgZnJhbWUsIG1faGVhcHMuR2VuZXJhdG9yRnJhbWVfbnVtYmVyT2ZTYXZlZENhbGxlZUxvY2Fs
cyk7CisgICAgfQorCisgICAgdm9pZCBjb21waWxlU2V0R2VuZXJhdG9yTG9jYWwoKQorICAgIHsK
KyAgICAgICAgbV9vdXQuc3RvcmU2NCgKKyAgICAgICAgICAgIGxvd0pTVmFsdWUobV9ub2RlLT5j
aGlsZDIoKSksCisgICAgICAgICAgICBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpLAorICAgICAg
ICAgICAgbV9oZWFwcy5HZW5lcmF0b3JGcmFtZV9jYWxsZWVMb2NhbHNbbV9ub2RlLT5nZW5lcmF0
b3JMb2NhbEluZGV4KCldKTsKKyAgICB9CisKKyAgICB2b2lkIGNvbXBpbGVHZXRHZW5lcmF0b3JM
b2NhbCgpCisgICAgeworICAgICAgICBzZXRKU1ZhbHVlKAorICAgICAgICAgICAgbV9vdXQubG9h
ZDY0KAorICAgICAgICAgICAgICAgIGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSksCisgICAgICAg
ICAgICAgICAgbV9oZWFwcy5HZW5lcmF0b3JGcmFtZV9jYWxsZWVMb2NhbHNbbV9ub2RlLT5nZW5l
cmF0b3JMb2NhbEluZGV4KCldKSk7CisgICAgfQogICAgIAogICAgIHZvaWQgY29tcGlsZU5ld09i
amVjdCgpCiAgICAgewpAQCAtNDE1MCw2ICs0MTg1LDQyIEBAIGNsYXNzIExvd2VyREZHVG9MTFZN
IHsKICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKHN0cnVjdHVyZSkpOwogICAgICAgICBz
ZXRKU1ZhbHVlKHZtQ2FsbChtX291dC5pbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbk5l
d0FycmF5V2l0aFNpemUpLCBtX2NhbGxGcmFtZSwgc3RydWN0dXJlVmFsdWUsIHB1YmxpY0xlbmd0
aCkpOwogICAgIH0KKworICAgIHZvaWQgY29tcGlsZU5ld0dlbmVyYXRvckZyYW1lKCkKKyAgICB7
CisgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgIFN0cnVjdHVyZSogc3Ry
dWN0dXJlID0gZ2xvYmFsT2JqZWN0LT5nZW5lcmF0b3JGcmFtZVN0cnVjdHVyZSgpOworICAgICAg
ICB1bnNpZ25lZCBnZW5lcmF0b3JMb2NhbHNTaXplID0gbV9ub2RlLT5nZW5lcmF0b3JMb2NhbHNT
aXplKCk7CisKKyAgICAgICAgTEJhc2ljQmxvY2sgc2xvd1BhdGggPSBGVExfTkVXX0JMT0NLKG1f
b3V0LCAoIk5ld0dlbmVyYXRvckZyYW1lIHNsb3cgcGF0aCIpKTsKKyAgICAgICAgTEJhc2ljQmxv
Y2sgY29udGludWF0aW9uID0gRlRMX05FV19CTE9DSyhtX291dCwgKCJOZXdHZW5lcmF0b3JGcmFt
ZSBjb250aW51YXRpb24iKSk7CisKKyAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQgPSBtX291
dC5pbnNlcnROZXdCbG9ja3NCZWZvcmUoc2xvd1BhdGgpOworICAgICAgICBMVmFsdWUgZmFzdE9i
amVjdCA9IGFsbG9jYXRlT2JqZWN0PEdlbmVyYXRvckZyYW1lPihHZW5lcmF0b3JGcmFtZTo6YWxs
b2NhdGlvblNpemVGb3JMb2NhbHMoZ2VuZXJhdG9yTG9jYWxzU2l6ZSksIHN0cnVjdHVyZSwgbV9v
dXQuaW50UHRyWmVybywgc2xvd1BhdGgpOworICAgICAgICBtX291dC5zdG9yZTMyKG1fb3V0LmNv
bnN0SW50MzIoZ2VuZXJhdG9yTG9jYWxzU2l6ZSksIGZhc3RPYmplY3QsIG1faGVhcHMuR2VuZXJh
dG9yRnJhbWVfbnVtYmVyT2ZDYWxsZWVMb2NhbHMpOworICAgICAgICBtX291dC5zdG9yZTMyKG1f
b3V0LmNvbnN0SW50MzIoMCksIGZhc3RPYmplY3QsIG1faGVhcHMuR2VuZXJhdG9yRnJhbWVfbnVt
YmVyT2ZTYXZlZENhbGxlZUxvY2Fscyk7CisKKyAgICAgICAgSlNWYWx1ZSBlbXB0eVZhbHVlOwor
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZ2VuZXJhdG9yTG9jYWxzU2l6ZTsgKytp
KQorICAgICAgICAgICAgbV9vdXQuc3RvcmU2NChtX291dC5jb25zdEludDY0KEpTVmFsdWU6OmVu
Y29kZShlbXB0eVZhbHVlKSksIGZhc3RPYmplY3QsIG1faGVhcHMuR2VuZXJhdG9yRnJhbWVfY2Fs
bGVlTG9jYWxzW2ldKTsKKworICAgICAgICBWYWx1ZUZyb21CbG9jayBmYXN0UmVzdWx0ID0gbV9v
dXQuYW5jaG9yKGZhc3RPYmplY3QpOworICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7
CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oc2xvd1BhdGgsIGNvbnRpbnVhdGlvbik7CisgICAg
ICAgIFZlY3RvcjxMVmFsdWU+IHNsb3dQYXRoQXJndW1lbnRzOworICAgICAgICBMVmFsdWUgY2Fs
bFJlc3VsdCA9IGxhenlTbG93UGF0aCgKKyAgICAgICAgICAgIFs9XSAoY29uc3QgVmVjdG9yPExv
Y2F0aW9uPiYgbG9jYXRpb25zKSAtPiBSZWZQdHI8TGF6eVNsb3dQYXRoOjpHZW5lcmF0b3I+IHsK
KyAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlTGF6eUNhbGxHZW5lcmF0b3IoCisgICAgICAg
ICAgICAgICAgICAgIG9wZXJhdGlvbk5ld0dlbmVyYXRvckZyYW1lLAorICAgICAgICAgICAgICAg
ICAgICBsb2NhdGlvbnNbMF0uZGlyZWN0R1BSKCksIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0
cihzdHJ1Y3R1cmUpLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihnZW5lcmF0b3JMb2NhbHNT
aXplKSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgc2xvd1Jlc3Vs
dCA9IG1fb3V0LmFuY2hvcihjYWxsUmVzdWx0KTsKKyAgICAgICAgbV9vdXQuanVtcChjb250aW51
YXRpb24pOworCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQp
OworICAgICAgICBzZXRKU1ZhbHVlKG1fb3V0LnBoaShtX291dC5pbnRQdHIsIGZhc3RSZXN1bHQs
IHNsb3dSZXN1bHQpKTsKKyAgICB9CiAgICAgCiAgICAgdm9pZCBjb21waWxlQWxsb2NhdGVQcm9w
ZXJ0eVN0b3JhZ2UoKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAppbmRleCBhM2Jk
ZmE3Y2Q1ZDBmNTcyNDdmMWJlOGM0MGIyNTEwZDI5ZDgwMGZmLi4wYjlmZDhkMzQzZmQ4Y2ViMjdh
YWY3YTM5NDAwNzA0NjQ3NGMyNjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCkBAIC0y
MTYsNyArMjE2LDkgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAg
ICBERUZJTkVfT1Aob3BfY2hlY2tfdGR6KQogICAgICAgICBERUZJTkVfT1Aob3BfYXNzZXJ0KQog
ICAgICAgICBERUZJTkVfT1Aob3Bfc2F2ZSkKLSAgICAgICAgREVGSU5FX09QKG9wX3Jlc3VtZSkK
KyAgICAgICAgREVGSU5FX09QKG9wX25ld19nZW5lcmF0b3JfZnJhbWUpCisgICAgICAgIERFRklO
RV9PUChvcF9yZXN1bWVfZnJvbV9nZW5lcmF0b3JfZnJhbWUpCisgICAgICAgIERFRklORV9PUChv
cF9jbGVhcl9nZW5lcmF0b3JfZnJhbWUpCiAgICAgICAgIERFRklORV9PUChvcF9kZWJ1ZykKICAg
ICAgICAgREVGSU5FX09QKG9wX2RlbF9ieV9pZCkKICAgICAgICAgREVGSU5FX09QKG9wX2RpdikK
QEAgLTI4OSw2ICsyOTEsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAg
ICAgICAgIERFRklORV9PUChvcF9wdXRfZ2V0dGVyX3NldHRlcl9ieV9pZCkKICAgICAgICAgREVG
SU5FX09QKG9wX3B1dF9nZXR0ZXJfYnlfdmFsKQogICAgICAgICBERUZJTkVfT1Aob3BfcHV0X3Nl
dHRlcl9ieV92YWwpCisgICAgICAgIERFRklORV9PUChvcF9ub3ApCiAKICAgICAgICAgREVGSU5F
X09QKG9wX3JldCkKICAgICAgICAgREVGSU5FX09QKG9wX3JzaGlmdCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVC5oCmluZGV4IGRmN2IzZGM1ZTg5MjBlZTRlZjkyYmNhY2JhZWZmMWI0YzAwZDkzNjkuLmVj
NjgxZDA5OTBlZjBjMmExYjBjNDFkNTQxMmJiY2UwYzBkMzkxZGUgMTAwNzU1Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVQuaApAQCAtNDk1LDcgKzQ5NSw5IEBACiAgICAgICAgIHZvaWQgZW1pdF9vcF9jaGVja190
ZHooSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2Fzc2VydChJbnN0cnVjdGlv
biopOwogICAgICAgICB2b2lkIGVtaXRfb3Bfc2F2ZShJbnN0cnVjdGlvbiopOwotICAgICAgICB2
b2lkIGVtaXRfb3BfcmVzdW1lKEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9y
ZXN1bWVfZnJvbV9nZW5lcmF0b3JfZnJhbWUoSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBl
bWl0X29wX2NsZWFyX2dlbmVyYXRvcl9mcmFtZShJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lk
IGVtaXRfb3BfbmV3X2dlbmVyYXRvcl9mcmFtZShJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lk
IGVtaXRfb3BfZGVidWcoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2RlbF9i
eV9pZChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZGl2KEluc3RydWN0aW9u
Kik7CkBAIC01OTUsNiArNTk3LDcgQEAKICAgICAgICAgdm9pZCBlbWl0X29wX2VudW1lcmF0b3Jf
c3RydWN0dXJlX3BuYW1lKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9lbnVt
ZXJhdG9yX2dlbmVyaWNfcG5hbWUoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29w
X3RvX2luZGV4X3N0cmluZyhJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3Bfbm9w
KEluc3RydWN0aW9uKik7CiAKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9hZGQoSW5zdHJ1Y3Rp
b24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZW1p
dFNsb3dfb3BfYml0YW5kKEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVy
YXRvciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVz
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKaW5kZXggNzM4
Y2I2M2ZlZDkxYjQ5ODU1ZDVkMDMzZDQ2MzM0NWZkZDQ3NmQ5Yi4uNGE2YTg4Yzg0ZjU3NWYxNGJh
YjYwMzkzOTBmNDY4MTk0ZWY3MzcyNiAxMDA3NTUKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGNvZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
Y29kZXMuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiQ29waWVkU3BhY2VJbmxpbmVz
LmgiCiAjaW5jbHVkZSAiRGVidWdnZXIuaCIKICNpbmNsdWRlICJFeGNlcHRpb24uaCIKKyNpbmNs
dWRlICJHZW5lcmF0b3JGcmFtZS5oIgogI2luY2x1ZGUgIkhlYXAuaCIKICNpbmNsdWRlICJKSVRJ
bmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgpAQCAtODkzLDYgKzg5NCwyMyBAQCB2b2lk
IEpJVDo6ZW1pdFNsb3dfb3BfdG9fc3RyaW5nKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24sIFZlY3RvcjxTbG93Q2FzZQogICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CiB9CiAKK3ZvaWQg
SklUOjplbWl0X29wX3Jlc3VtZV9mcm9tX2dlbmVyYXRvcl9mcmFtZShJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQoreworICAgIGludCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0u
dS5vcGVyYW5kOworICAgIGludCBmcmFtZSA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJh
bmQ7CisgICAgdW5zaWduZWQgaW5kZXggPSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS51bnNpZ25l
ZFZhbHVlOworICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoZnJhbWUsIHJlZ1QxKTsKKyAgICBs
b2FkNjQoQWRkcmVzcyhyZWdUMSwgR2VuZXJhdG9yRnJhbWU6OmxvY2FsT2Zmc2V0KGluZGV4KSks
IHJlZ1QwKTsKKyAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCk7Cit9CisKK3ZvaWQgSklU
OjplbWl0X29wX2NsZWFyX2dlbmVyYXRvcl9mcmFtZShJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQoreworICAgIGludCBmcmFtZSA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJh
bmQ7CisgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihmcmFtZSwgcmVnVDEpOworICAgIHN0b3Jl
MzIoVHJ1c3RlZEltbTMyKDApLCBBZGRyZXNzKHJlZ1QxLCBHZW5lcmF0b3JGcmFtZTo6bnVtYmVy
T2ZTYXZlZENhbGxlZUxvY2Fsc09mZnNldCgpKSk7Cit9CisKICNlbmRpZiAvLyBVU0UoSlNWQUxV
RTY0KQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9sb29wX2hpbnQoSW5zdHJ1Y3Rpb24qKQpAQCAtMTQz
NSwxMiArMTQ1MywxNiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9zYXZlKEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCiAgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKIH0KIAotdm9pZCBKSVQ6
OmVtaXRfb3BfcmVzdW1lKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJ
VDo6ZW1pdF9vcF9uZXdfZ2VuZXJhdG9yX2ZyYW1lKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCiB7Ci0gICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50
SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9yZXN1bWUpOworICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93
UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfbmV3X2dlbmVyYXRv
cl9mcmFtZSk7CiAgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKIH0KIAordm9pZCBKSVQ6OmVtaXRf
b3Bfbm9wKEluc3RydWN0aW9uKikKK3sKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRp
ZiAvLyBFTkFCTEUoSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcAppbmRleCAyYjRlNjE5ODZkMzEyYWM5ZTRmODczNzNj
ZTdhYTBiOWZkMGNlNzVhLi5hZmUwOTY4NDg4ZjQ2ZDE2NzVjOTE3ZWNiMmI2MjBjMDA1NjEyMjQ2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0
cmFjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRz
RXh0cmFjdG9yLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkRpcmVjdEFyZ3VtZW50
cy5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbi5oIgogI2luY2x1ZGUgIkV4ZWN1dGFibGUuaCIKKyNp
bmNsdWRlICJHZW5lcmF0b3JGcmFtZS5oIgogI2luY2x1ZGUgIkhlYXAuaCIKICNpbmNsdWRlICJJ
bnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbSBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQppbmRleCBjZDRjZTkwNjNi
MTk1NzVhOTU3ZTNjYTNlMjJiZTU3OTE1YmRiNTlhLi5iOTIwYTZjZTY2Y2ZiZTEzNTMzNGRhMDFm
NjlkNThkZTQ2NjBjZTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlci5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCkBAIC0xNjUsNiArMTY1LDcgQEAgY29uc3QgU2xvdFNp
emUgPSA4CiAKIGNvbnN0IEpTRW52aXJvbm1lbnRSZWNvcmRfdmFyaWFibGVzID0gKHNpemVvZiBK
U0Vudmlyb25tZW50UmVjb3JkICsgU2xvdFNpemUgLSAxKSAmIH4oU2xvdFNpemUgLSAxKQogY29u
c3QgRGlyZWN0QXJndW1lbnRzX3N0b3JhZ2UgPSAoc2l6ZW9mIERpcmVjdEFyZ3VtZW50cyArIFNs
b3RTaXplIC0gMSkgJiB+KFNsb3RTaXplIC0gMSkKK2NvbnN0IEdlbmVyYXRvckZyYW1lX2NhbGxl
ZUxvY2FscyA9IChzaXplb2YgR2VuZXJhdG9yRnJhbWUgKyBTbG90U2l6ZSAtIDEpICYgfihTbG90
U2l6ZSAtIDEpCiAKIGNvbnN0IFN0YWNrQWxpZ25tZW50ID0gMTYKIGNvbnN0IFN0YWNrQWxpZ25t
ZW50U2xvdHMgPSAyCkBAIC0xMjU2LDYgKzEyNTcsMTIgQEAgX2xsaW50X29wX25ld19yZWdleHA6
CiAgICAgZGlzcGF0Y2goMykKIAogCitfbGxpbnRfb3BfbmV3X2dlbmVyYXRvcl9mcmFtZToKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfbmV3X2dlbmVy
YXRvcl9mcmFtZSkKKyAgICBkaXNwYXRjaCgzKQorCisKIF9sbGludF9vcF9sZXNzOgogICAgIHRy
YWNlRXhlY3V0aW9uKCkKICAgICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF9sZXNzKQpAQCAtMTU5
NSwxMCArMTYwMiwxNiBAQCBfbGxpbnRfb3Bfc2F2ZToKICAgICBkaXNwYXRjaCg0KQogCiAKLV9s
bGludF9vcF9yZXN1bWU6CitfbGxpbnRfb3Bfc2F2ZV9oaW50OgogICAgIHRyYWNlRXhlY3V0aW9u
KCkKLSAgICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF9yZXN1bWUpCi0gICAgZGlzcGF0Y2goMykK
KyAgICBub3RTdXBwb3J0ZWQoKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX3Jlc3Vt
ZV9oaW50OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBub3RTdXBwb3J0ZWQoKQorICAgIGRp
c3BhdGNoKDQpCiAKIAogX2xsaW50X29wX2NyZWF0ZV9sZXhpY2FsX2Vudmlyb25tZW50OgpAQCAt
MTcwOCw2ICsxNzIxLDEwIEBAIF9sbGludF9vcF9jb3B5X3Jlc3Q6CiAgICAgY2FsbFNsb3dQYXRo
KF9zbG93X3BhdGhfY29weV9yZXN0KQogICAgIGRpc3BhdGNoKDQpCiAKK19sbGludF9vcF9ub3A6
CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGRpc3BhdGNoKDEpCisKIAogIyBMYXN0bHksIG1h
a2Ugc3VyZSB0aGF0IHdlIGNhbiBsaW5rIGV2ZW4gdGhvdWdoIHdlIGRvbid0IHN1cHBvcnQgYWxs
IG9wY29kZXMuCiAjIFRoZXNlIG9wY29kZXMgc2hvdWxkIG5ldmVyIGFyaXNlIHdoZW4gdXNpbmcg
TExJbnQgb3IgZWl0aGVyIEpJVC4gV2UgYXNzZXJ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbSBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCmluZGV4IDg1MTczYmM4MjYy
MTQ2YjBlMGQxZTAxOTJiNzA2MDI4YmJkOTA2ODMuLjQ5MmM2M2MyNWNkZmFlMzJmZjllZWI4YTRk
MTk3ZTU4NTUzMTlhYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCkBAIC0yMzIxLDMgKzIzMjEsMTggQEAgX2xsaW50
X29wX2dldF9yZXN0X2xlbmd0aDoKICAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMSwgdDEpCiAg
ICAgc3RvcmVxIHQwLCBbY2ZyLCB0MSwgOF0KICAgICBkaXNwYXRjaCgzKQorCitfbGxpbnRfb3Bf
Y2xlYXJfZ2VuZXJhdG9yX2ZyYW1lOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkVmFy
aWFibGUoMSwgdDApCisgICAgc3RvcmVpIDAsIEdlbmVyYXRvckZyYW1lOjptX251bWJlck9mU2F2
ZWRDYWxsZWVMb2NhbHNbdDBdCisgICAgZGlzcGF0Y2goMikKKworX2xsaW50X29wX3Jlc3VtZV9m
cm9tX2dlbmVyYXRvcl9mcmFtZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZFZhcmlh
YmxlKDIsIHQwKQorICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigzLCB0MSkKKyAgICBsb2FkcSBH
ZW5lcmF0b3JGcmFtZV9jYWxsZWVMb2NhbHNbdDAsIHQxLCA4XSwgdDAKKyAgICBsb2FkaXNGcm9t
SW5zdHJ1Y3Rpb24oMSwgdDEpCisgICAgc3RvcmVxIHQwLCBbY2ZyLCB0MSwgOF0KKyAgICBkaXNw
YXRjaCg0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCmluZGV4IDhkMzcw
NjM0NTEyOGU5ZGY5ZGFjMzI1N2Y3YzVmNGU1YWIzYTljMzQuLmU4NjA1M2I0ODJhOGQzNmIzMzVj
MDhiYTdkMzY3NTZkM2I3OTZhZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNl
ci5jcHAKQEAgLTI1MCw5ICsyNTAsMTAgQEAKICAgICBib29sIGlzQXJyb3dGdW5jdGlvbkJvZHlF
eHByZXNzaW9uID0gZmFsc2U7CiAgICAgaWYgKG1fbGV4ZXItPmlzUmVwYXJzaW5nRnVuY3Rpb24o
KSkgewogICAgICAgICBQYXJzZXJGdW5jdGlvbkluZm88QVNUQnVpbGRlcj4gZnVuY3Rpb25JbmZv
OwotICAgICAgICBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yQm9k
eU1vZGUpCi0gICAgICAgICAgICBmdW5jdGlvbkluZm8ucGFyYW1ldGVycyA9IGNyZWF0ZUdlbmVy
YXRvclBhcmFtZXRlcnMoY29udGV4dCk7Ci0gICAgICAgIGVsc2UKKyAgICAgICAgaWYgKHBhcnNl
TW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckJvZHlNb2RlKSB7CisgICAgICAgICAg
ICB1bnNpZ25lZCBwYXJhbWV0ZXJDb3VudCA9IDA7CisgICAgICAgICAgICBmdW5jdGlvbkluZm8u
cGFyYW1ldGVycyA9IGNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMoY29udGV4dCwgcGFyYW1ldGVy
Q291bnQpOworICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIHBhcnNlRnVuY3Rpb25QYXJhbWV0
ZXJzKGNvbnRleHQsIHBhcnNlTW9kZSwgZnVuY3Rpb25JbmZvKTsKICAgICAgICAgbV9wYXJhbWV0
ZXJzID0gZnVuY3Rpb25JbmZvLnBhcmFtZXRlcnM7CiAKQEAgLTQ4NSwxMCArNDg2LDkgQEAKIAog
ICAgIFBhcnNlckZ1bmN0aW9uSW5mbzxUcmVlQnVpbGRlcj4gaW5mbzsKICAgICBpbmZvLm5hbWUg
PSAmbV92bS0+cHJvcGVydHlOYW1lcy0+bnVsbElkZW50aWZpZXI7Ci0gICAgaW5mby5wYXJhbWV0
ZXJzID0gY3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhjb250ZXh0KTsKKyAgICBpbmZvLnBhcmFt
ZXRlcnMgPSBjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKGNvbnRleHQsIGluZm8ucGFyYW1ldGVy
Q291bnQpOwogICAgIGluZm8uc3RhcnRPZmZzZXQgPSBwYXJhbWV0ZXJzU3RhcnQ7CiAgICAgaW5m
by5zdGFydExpbmUgPSB0b2tlbkxpbmUoKTsKLSAgICBpbmZvLnBhcmFtZXRlckNvdW50ID0gNDsg
Ly8gZ2VuZXJhdG9yLCBzdGF0ZSwgdmFsdWUsIHJlc3VtZSBtb2RlCiAKICAgICB7CiAgICAgICAg
IEF1dG9Qb3BTY29wZVJlZiBnZW5lcmF0b3JCb2R5U2NvcGUodGhpcywgcHVzaFNjb3BlKCkpOwpA
QCAtMTc4MSwzMiArMTc4MSwzMCBAQCBzdGF0aWMgY29uc3QgY2hhciogc3RyaW5nRm9yRnVuY3Rp
b25Nb2RlKFNvdXJjZVBhcnNlTW9kZSBtb2RlKQogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4
ZXJUeXBlPgotdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiB0eXBlbmFtZSBUcmVlQnVpbGRl
cjo6Rm9ybWFsUGFyYW1ldGVyTGlzdCBQYXJzZXI8TGV4ZXJUeXBlPjo6Y3JlYXRlR2VuZXJhdG9y
UGFyYW1ldGVycyhUcmVlQnVpbGRlciYgY29udGV4dCkKK3RlbXBsYXRlIDxjbGFzcyBUcmVlQnVp
bGRlcj4gdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkZvcm1hbFBhcmFtZXRlckxpc3QgUGFyc2VyPExl
eGVyVHlwZT46OmNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMoVHJlZUJ1aWxkZXImIGNvbnRleHQs
IHVuc2lnbmVkJiBwYXJhbWV0ZXJDb3VudCkKIHsKICAgICBhdXRvIHBhcmFtZXRlcnMgPSBjb250
ZXh0LmNyZWF0ZUZvcm1hbFBhcmFtZXRlckxpc3QoKTsKIAogICAgIEpTVG9rZW5Mb2NhdGlvbiBs
b2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOwogICAgIEpTVGV4dFBvc2l0aW9uIHBvc2l0aW9uID0g
dG9rZW5TdGFydFBvc2l0aW9uKCk7CiAKLSAgICAvLyBAZ2VuZXJhdG9yCi0gICAgZGVjbGFyZVBh
cmFtZXRlcigmbV92bS0+cHJvcGVydHlOYW1lcy0+Z2VuZXJhdG9yUHJpdmF0ZU5hbWUpOwotICAg
IGF1dG8gZ2VuZXJhdG9yID0gY29udGV4dC5jcmVhdGVCaW5kaW5nTG9jYXRpb24obG9jYXRpb24s
IG1fdm0tPnByb3BlcnR5TmFtZXMtPmdlbmVyYXRvclByaXZhdGVOYW1lLCBwb3NpdGlvbiwgcG9z
aXRpb24sIEFzc2lnbm1lbnRDb250ZXh0OjpEZWNsYXJhdGlvblN0YXRlbWVudCk7Ci0gICAgY29u
dGV4dC5hcHBlbmRQYXJhbWV0ZXIocGFyYW1ldGVycywgZ2VuZXJhdG9yLCAwKTsKKyAgICBhdXRv
IGFkZFBhcmFtZXRlciA9IFsmXShjb25zdCBJZGVudGlmaWVyJiBuYW1lKSB7CisgICAgICAgIGRl
Y2xhcmVQYXJhbWV0ZXIoJm5hbWUpOworICAgICAgICBhdXRvIGJpbmRpbmcgPSBjb250ZXh0LmNy
ZWF0ZUJpbmRpbmdMb2NhdGlvbihsb2NhdGlvbiwgbmFtZSwgcG9zaXRpb24sIHBvc2l0aW9uLCBB
c3NpZ25tZW50Q29udGV4dDo6RGVjbGFyYXRpb25TdGF0ZW1lbnQpOworICAgICAgICBjb250ZXh0
LmFwcGVuZFBhcmFtZXRlcihwYXJhbWV0ZXJzLCBiaW5kaW5nLCAwKTsKKyAgICAgICAgKytwYXJh
bWV0ZXJDb3VudDsKKyAgICB9OwogCisgICAgLy8gQGdlbmVyYXRvcgorICAgIGFkZFBhcmFtZXRl
cihtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5nZW5lcmF0b3JQcml2YXRlTmFtZSk7CiAgICAgLy8gQGdl
bmVyYXRvclN0YXRlCi0gICAgZGVjbGFyZVBhcmFtZXRlcigmbV92bS0+cHJvcGVydHlOYW1lcy0+
Z2VuZXJhdG9yU3RhdGVQcml2YXRlTmFtZSk7Ci0gICAgYXV0byBnZW5lcmF0b3JTdGF0ZSA9IGNv
bnRleHQuY3JlYXRlQmluZGluZ0xvY2F0aW9uKGxvY2F0aW9uLCBtX3ZtLT5wcm9wZXJ0eU5hbWVz
LT5nZW5lcmF0b3JTdGF0ZVByaXZhdGVOYW1lLCBwb3NpdGlvbiwgcG9zaXRpb24sIEFzc2lnbm1l
bnRDb250ZXh0OjpEZWNsYXJhdGlvblN0YXRlbWVudCk7Ci0gICAgY29udGV4dC5hcHBlbmRQYXJh
bWV0ZXIocGFyYW1ldGVycywgZ2VuZXJhdG9yU3RhdGUsIDApOwotCisgICAgYWRkUGFyYW1ldGVy
KG1fdm0tPnByb3BlcnR5TmFtZXMtPmdlbmVyYXRvclN0YXRlUHJpdmF0ZU5hbWUpOwogICAgIC8v
IEBnZW5lcmF0b3JWYWx1ZQotICAgIGRlY2xhcmVQYXJhbWV0ZXIoJm1fdm0tPnByb3BlcnR5TmFt
ZXMtPmdlbmVyYXRvclZhbHVlUHJpdmF0ZU5hbWUpOwotICAgIGF1dG8gZ2VuZXJhdG9yVmFsdWUg
PSBjb250ZXh0LmNyZWF0ZUJpbmRpbmdMb2NhdGlvbihsb2NhdGlvbiwgbV92bS0+cHJvcGVydHlO
YW1lcy0+Z2VuZXJhdG9yVmFsdWVQcml2YXRlTmFtZSwgcG9zaXRpb24sIHBvc2l0aW9uLCBBc3Np
Z25tZW50Q29udGV4dDo6RGVjbGFyYXRpb25TdGF0ZW1lbnQpOwotICAgIGNvbnRleHQuYXBwZW5k
UGFyYW1ldGVyKHBhcmFtZXRlcnMsIGdlbmVyYXRvclZhbHVlLCAwKTsKLQorICAgIGFkZFBhcmFt
ZXRlcihtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5nZW5lcmF0b3JWYWx1ZVByaXZhdGVOYW1lKTsKICAg
ICAvLyBAZ2VuZXJhdG9yUmVzdW1lTW9kZQotICAgIGRlY2xhcmVQYXJhbWV0ZXIoJm1fdm0tPnBy
b3BlcnR5TmFtZXMtPmdlbmVyYXRvclJlc3VtZU1vZGVQcml2YXRlTmFtZSk7Ci0gICAgYXV0byBn
ZW5lcmF0b3JSZXN1bWVNb2RlID0gY29udGV4dC5jcmVhdGVCaW5kaW5nTG9jYXRpb24obG9jYXRp
b24sIG1fdm0tPnByb3BlcnR5TmFtZXMtPmdlbmVyYXRvclJlc3VtZU1vZGVQcml2YXRlTmFtZSwg
cG9zaXRpb24sIHBvc2l0aW9uLCBBc3NpZ25tZW50Q29udGV4dDo6RGVjbGFyYXRpb25TdGF0ZW1l
bnQpOwotICAgIGNvbnRleHQuYXBwZW5kUGFyYW1ldGVyKHBhcmFtZXRlcnMsIGdlbmVyYXRvclJl
c3VtZU1vZGUsIDApOworICAgIGFkZFBhcmFtZXRlcihtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5nZW5l
cmF0b3JSZXN1bWVNb2RlUHJpdmF0ZU5hbWUpOworICAgIC8vIEBnZW5lcmF0b3JGcmFtZQorICAg
IGFkZFBhcmFtZXRlcihtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5nZW5lcmF0b3JGcmFtZVByaXZhdGVO
YW1lKTsKIAogICAgIHJldHVybiBwYXJhbWV0ZXJzOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvUGFyc2VyLmgKaW5kZXggYTExYjM1YzEwMWZlNWI4NDljYjIzMzA5NmM1NjgzMTM3MDY2Y2Fi
Zi4uZTYxNDlhM2FjMzY5NDA0ODkzZDIzNjk2OTMxNmI1YzMwMzNiZTg1MSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCkBAIC0xMjU5LDcgKzEyNTksNyBAQCBjbGFzcyBQYXJz
ZXIgewogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gTkVWRVJfSU5MSU5FIGJvb2wg
cGFyc2VGdW5jdGlvbkluZm8oVHJlZUJ1aWxkZXImLCBGdW5jdGlvblJlcXVpcmVtZW50cywgU291
cmNlUGFyc2VNb2RlLCBib29sIG5hbWVJc0luQ29udGFpbmluZ1Njb3BlLCBDb25zdHJ1Y3Rvcktp
bmQsIFN1cGVyQmluZGluZywgaW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBQYXJzZXJGdW5jdGlv
bkluZm88VHJlZUJ1aWxkZXI+JiwgRnVuY3Rpb25EZWZpbml0aW9uVHlwZSk7CiAgICAgCiAgICAg
dGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBORVZFUl9JTkxJTkUgaW50IHBhcnNlRnVuY3Rp
b25QYXJhbWV0ZXJzKFRyZWVCdWlsZGVyJiwgU291cmNlUGFyc2VNb2RlLCBQYXJzZXJGdW5jdGlv
bkluZm88VHJlZUJ1aWxkZXI+Jik7Ci0gICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBO
RVZFUl9JTkxJTkUgdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkZvcm1hbFBhcmFtZXRlckxpc3QgY3Jl
YXRlR2VuZXJhdG9yUGFyYW1ldGVycyhUcmVlQnVpbGRlciYpOworICAgIHRlbXBsYXRlIDxjbGFz
cyBUcmVlQnVpbGRlcj4gTkVWRVJfSU5MSU5FIHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpGb3JtYWxQ
YXJhbWV0ZXJMaXN0IGNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMoVHJlZUJ1aWxkZXImLCB1bnNp
Z25lZCYgcGFyYW1ldGVyQ291bnQpOwogCiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVy
PiBORVZFUl9JTkxJTkUgVHJlZUNsYXNzRXhwcmVzc2lvbiBwYXJzZUNsYXNzKFRyZWVCdWlsZGVy
JiwgRnVuY3Rpb25SZXF1aXJlbWVudHMsIFBhcnNlckNsYXNzSW5mbzxUcmVlQnVpbGRlcj4mKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1Bh
dGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5j
cHAKaW5kZXggNzhiNDNjNGQzODlmZjdhOTA4MzEzYjU1NDA1NzBlODgyZTFiMDM3MS4uZGNhMmQ0
ZTY2NmQwNzNjZjM5MGY2MWYyOTdjYTczOTdiMzZjNThkMyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCkBAIC02OTcsMzMgKzY5Nywx
MiBAQCBzdGF0aWMgdm9pZCB1cGRhdGVSZXN1bHRQcm9maWxlRm9yQmluYXJ5QXJpdGhPcChFeGVj
U3RhdGUqLCBJbnN0cnVjdGlvbiosIEpTVmFsdQogICAgIC8vIE9ubHkgc2F2ZSB2YXJpYWJsZXMg
YW5kIHRlbXBvcmFyeSByZWdpc3RlcnMuIFRoZSBzY29wZSByZWdpc3RlcnMgYXJlIGluY2x1ZGVk
IGluIHRoZW0uCiAgICAgLy8gQnV0IHBhcmFtZXRlcnMgYXJlIG5vdCBpbmNsdWRlZC4gQmVjYXVz
ZSB0aGUgZ2VuZXJhdG9yIGltcGxlbWVudGF0aW9uIHJlcGxhY2VzIHRoZSB2YWx1ZXMgb2YgcGFy
YW1ldGVycyBvbiBlYWNoIGdlbmVyYXRvci5uZXh0KCkgY2FsbC4KICAgICBCRUdJTigpOwotICAg
IEpTVmFsdWUgZ2VuZXJhdG9yID0gT1AoMSkuanNWYWx1ZSgpOwotICAgIEdlbmVyYXRvckZyYW1l
KiBmcmFtZSA9IG51bGxwdHI7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IGdlbmVyYXRvci5nZXQoZXhl
YywgZXhlYy0+cHJvcGVydHlOYW1lcygpLmdlbmVyYXRvckZyYW1lUHJpdmF0ZU5hbWUpOwotICAg
IGlmICghdmFsdWUuaXNOdWxsKCkpCi0gICAgICAgIGZyYW1lID0ganNDYXN0PEdlbmVyYXRvckZy
YW1lKj4odmFsdWUpOwotICAgIGVsc2UgewotICAgICAgICAvLyBGSVhNRTogT25jZSBKU0dlbmVy
YXRvciBzcGVjaWFsaXplZCBvYmplY3QgaXMgaW50cm9kdWNlZCwgdGhpcyBHZW5lcmF0b3JGcmFt
ZSBzaG91bGQgYmUgZW1iZWRlZCBpbnRvIGl0IHRvIGF2b2lkIGFsbG9jYXRpb25zLgotICAgICAg
ICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNTQ1Ci0gICAg
ICAgIGZyYW1lID0gR2VuZXJhdG9yRnJhbWU6OmNyZWF0ZShleGVjLT52bSgpLCAgZXhlYy0+Y29k
ZUJsb2NrKCktPm51bUNhbGxlZUxvY2FscygpKTsKLSAgICAgICAgUHV0UHJvcGVydHlTbG90IHNs
b3QoZ2VuZXJhdG9yLCB0cnVlLCBQdXRQcm9wZXJ0eVNsb3Q6OlB1dEJ5SWQpOwotICAgICAgICBh
c09iamVjdChnZW5lcmF0b3IpLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+cHV0KGFzT2JqZWN0
KGdlbmVyYXRvciksIGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5nZW5lcmF0b3JGcmFtZVBy
aXZhdGVOYW1lLCBmcmFtZSwgc2xvdCk7Ci0gICAgfQorICAgIEdlbmVyYXRvckZyYW1lKiBmcmFt
ZSA9IGpzQ2FzdDxHZW5lcmF0b3JGcmFtZSo+KE9QKDEpLmpzVmFsdWUoKSk7CiAgICAgdW5zaWdu
ZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gcGNbMl0udS51bnNpZ25lZFZhbHVlOwogICAgIGZy
YW1lLT5zYXZlKGV4ZWMsIGV4ZWMtPmNvZGVCbG9jaygpLT5saXZlQ2FsbGVlTG9jYWxzQXRZaWVs
ZChsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpKTsKICAgICBFTkQoKTsKIH0KIAotU0xPV19QQVRIX0RF
Q0woc2xvd19wYXRoX3Jlc3VtZSkKLXsKLSAgICBCRUdJTigpOwotICAgIEpTVmFsdWUgZ2VuZXJh
dG9yID0gT1AoMSkuanNWYWx1ZSgpOwotICAgIEdlbmVyYXRvckZyYW1lKiBmcmFtZSA9IGpzQ2Fz
dDxHZW5lcmF0b3JGcmFtZSo+KGdlbmVyYXRvci5nZXQoZXhlYywgZXhlYy0+cHJvcGVydHlOYW1l
cygpLmdlbmVyYXRvckZyYW1lUHJpdmF0ZU5hbWUpKTsKLSAgICB1bnNpZ25lZCBsaXZlQ2FsbGVl
TG9jYWxzSW5kZXggPSBwY1syXS51LnVuc2lnbmVkVmFsdWU7Ci0gICAgZnJhbWUtPnJlc3VtZShl
eGVjLCBleGVjLT5jb2RlQmxvY2soKS0+bGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQobGl2ZUNhbGxl
ZUxvY2Fsc0luZGV4KSk7Ci0gICAgRU5EKCk7Ci19Ci0KIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0
aF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudCkKIHsKICAgICBCRUdJTigpOwpAQCAtNzk3LDQg
Kzc3NiwxMiBAQCBzdGF0aWMgdm9pZCB1cGRhdGVSZXN1bHRQcm9maWxlRm9yQmluYXJ5QXJpdGhP
cChFeGVjU3RhdGUqLCBJbnN0cnVjdGlvbiosIEpTVmFsdQogICAgIEVORCgpOwogfQogCitTTE9X
X1BBVEhfREVDTChzbG93X3BhdGhfbmV3X2dlbmVyYXRvcl9mcmFtZSkKK3sKKyAgICBCRUdJTigp
OworICAgIHVuc2lnbmVkIGdlbmVyYXRvckxvY2Fsc1NpemUgPSBwY1syXS51LnVuc2lnbmVkVmFs
dWU7CisgICAgUkVUVVJOKEdlbmVyYXRvckZyYW1lOjpjcmVhdGUoZXhlYywgZ2VuZXJhdG9yTG9j
YWxzU2l6ZSkpOworfQorCisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAppbmRleCBmMDBkODcwNWQ0ZTY3ZmU0
ZDQwNTliZGUxNjhlZTg4ZjU3ZGY3MmU3Li4wNjUwYzRlOGNiNzE1NTkxN2NkMWQ3YTJmNzdhN2M3
ZjcyOWExNTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21t
b25TbG93UGF0aHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25T
bG93UGF0aHMuaApAQCAtMjk2LDYgKzI5Niw3IEBAIGlubGluZSB2b2lkIGRlY29kZVJlc3VsdChT
bG93UGF0aFJldHVyblR5cGUgcmVzdWx0LCB2b2lkKiYgYSwgdm9pZComIGIpCiBTTE9XX1BBVEhf
SElEREVOX0RFQ0woc2xvd19wYXRoX3B1c2hfd2l0aF9zY29wZSk7CiBTTE9XX1BBVEhfSElEREVO
X0RFQ0woc2xvd19wYXRoX3Jlc29sdmVfc2NvcGUpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNs
b3dfcGF0aF9jb3B5X3Jlc3QpOworU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9uZXdf
Z2VuZXJhdG9yX2ZyYW1lKTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZyYW1lLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZyYW1lLmNwcAppbmRleCBlZjZlYTdhMTAw
MjU4YzNlY2UwNGRhYWI0M2JkYWE4NTFlYzhmNzE1Li4yMDkxOTZiNDBjNGM1MmE2NjE0MzdjYWUy
ODM5OTQ3NmI1ZGIwYjY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9HZW5lcmF0b3JGcmFtZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
R2VuZXJhdG9yRnJhbWUuY3BwCkBAIC0zMCwxNSArMzAsMTYgQEAKICNpbmNsdWRlICJIZWFwSXRl
cmF0aW9uU2NvcGUuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUg
IkpTQ2VsbElubGluZXMuaCIKKyNpbmNsdWRlICJKU09iamVjdElubGluZXMuaCIKICNpbmNsdWRl
ICJTbG90VmlzaXRvcklubGluZXMuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCiAK
IG5hbWVzcGFjZSBKU0MgewogCi1jb25zdCBDbGFzc0luZm8gR2VuZXJhdG9yRnJhbWU6OnNfaW5m
byA9IHsgIkdlbmVyYXRvckZyYW1lIiwgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9U
QUJMRShHZW5lcmF0b3JGcmFtZSkgfTsKK2NvbnN0IENsYXNzSW5mbyBHZW5lcmF0b3JGcmFtZTo6
c19pbmZvID0geyAiR2VuZXJhdG9yRnJhbWUiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBDUkVB
VEVfTUVUSE9EX1RBQkxFKEdlbmVyYXRvckZyYW1lKSB9OwogCi1HZW5lcmF0b3JGcmFtZTo6R2Vu
ZXJhdG9yRnJhbWUoVk0mIHZtLCBzaXplX3QgbnVtYmVyT2ZDYWxsZWVMb2NhbHMpCi0gICAgOiBC
YXNlKHZtLCB2bS5nZW5lcmF0b3JGcmFtZVN0cnVjdHVyZS5nZXQoKSkKK0dlbmVyYXRvckZyYW1l
OjpHZW5lcmF0b3JGcmFtZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCB1aW50MzJfdCBu
dW1iZXJPZkNhbGxlZUxvY2FscykKKyAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkKICAgICAsIG1f
bnVtYmVyT2ZDYWxsZWVMb2NhbHMobnVtYmVyT2ZDYWxsZWVMb2NhbHMpCiB7CiB9CkBAIC00Niwz
MyArNDcsNDIgQEAKIHZvaWQgR2VuZXJhdG9yRnJhbWU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkK
IHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgSlNWYWx1ZSBlbXB0eVZhbHVl
OwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9udW1iZXJPZkNhbGxlZUxvY2FsczsgKytp
KQotICAgICAgICBsb2NhbEF0KGkpLmNsZWFyKCk7CisgICAgICAgIGxvY2FsQXQoaSkuc2V0U3Rh
cnRpbmdWYWx1ZShlbXB0eVZhbHVlKTsKIH0KIAogU3RydWN0dXJlKiBHZW5lcmF0b3JGcmFtZTo6
Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1ZSBwcm90b3R5cGUpCiB7Ci0gICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9i
YWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oQ2VsbFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwg
aW5mbygpKTsKKyAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwg
cHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7
CiB9CiAKLUdlbmVyYXRvckZyYW1lKiBHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlKFZNJiB2bSwgc2l6
ZV90IG51bWJlck9mTG9jYWxzKQorR2VuZXJhdG9yRnJhbWUqIEdlbmVyYXRvckZyYW1lOjpjcmVh
dGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgc2l6ZV90IG51bWJlck9mQ2FsbGVlTG9j
YWxzKQogewogICAgIEdlbmVyYXRvckZyYW1lKiByZXN1bHQgPQogICAgICAgICBuZXcgKAogICAg
ICAgICAgICAgTm90TnVsbCwKLSAgICAgICAgICAgIGFsbG9jYXRlQ2VsbDxHZW5lcmF0b3JGcmFt
ZT4odm0uaGVhcCwgYWxsb2NhdGlvblNpemVGb3JMb2NhbHMobnVtYmVyT2ZMb2NhbHMpKSkKLSAg
ICAgICAgR2VuZXJhdG9yRnJhbWUodm0sIG51bWJlck9mTG9jYWxzKTsKKyAgICAgICAgICAgIGFs
bG9jYXRlQ2VsbDxHZW5lcmF0b3JGcmFtZT4odm0uaGVhcCwgYWxsb2NhdGlvblNpemVGb3JMb2Nh
bHMobnVtYmVyT2ZDYWxsZWVMb2NhbHMpKSkKKyAgICAgICAgR2VuZXJhdG9yRnJhbWUodm0sIHN0
cnVjdHVyZSwgbnVtYmVyT2ZDYWxsZWVMb2NhbHMpOwogICAgIHJlc3VsdC0+ZmluaXNoQ3JlYXRp
b24odm0pOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK0dlbmVyYXRvckZyYW1lKiBHZW5lcmF0
b3JGcmFtZTo6Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgc2l6ZV90IG51bWJlck9mQ2FsbGVlTG9j
YWxzKQoreworICAgIHJldHVybiBjcmVhdGUoZXhlYy0+dm0oKSwgZXhlYy0+bGV4aWNhbEdsb2Jh
bE9iamVjdCgpLT5nZW5lcmF0b3JGcmFtZVN0cnVjdHVyZSgpLCBudW1iZXJPZkNhbGxlZUxvY2Fs
cyk7Cit9CisKIHZvaWQgR2VuZXJhdG9yRnJhbWU6OnNhdmUoRXhlY1N0YXRlKiBleGVjLCBjb25z
dCBGYXN0Qml0VmVjdG9yJiBsaXZlQ2FsbGVlTG9jYWxzKQogeworICAgIC8vIEFsbG9jYXRlIHRo
ZSBnZW5lcmF0b3IgbG9jYWwgc3BhY2UgZmlyc3QuCisgICAgbV9udW1iZXJPZlNhdmVkQ2FsbGVl
TG9jYWxzID0gbGl2ZUNhbGxlZUxvY2Fscy5iaXRDb3VudCgpOworCiAgICAgLy8gT25seSBzYXZl
IGNhbGxlZSBsb2NhbHMuCiAgICAgLy8gRXZlcnkgdGltZSBhIGdlbmVyYXRvciBpcyBjYWxsZWQg
KG9yIHJlc3VtZWQpLCBwYXJhbWV0ZXJzIHNob3VsZCBiZSByZXBsYWNlZC4KLSAgICBBU1NFUlQo
bGl2ZUNhbGxlZUxvY2Fscy5udW1CaXRzKCkgPD0gbV9udW1iZXJPZkNhbGxlZUxvY2Fscyk7Cisg
ICAgdW5zaWduZWQgZ2VuZXJhdG9yTG9jYWxJbmRleCA9IDA7CiAgICAgbGl2ZUNhbGxlZUxvY2Fs
cy5mb3JFYWNoU2V0Qml0KFsmXShzaXplX3QgaW5kZXgpIHsKLSAgICAgICAgbG9jYWxBdChpbmRl
eCkuc2V0KGV4ZWMtPnZtKCksIHRoaXMsIGV4ZWMtPnVuY2hlY2tlZFIodmlydHVhbFJlZ2lzdGVy
Rm9yTG9jYWwoaW5kZXgpKS5qc1ZhbHVlKCkpOworICAgICAgICBsb2NhbEF0KGdlbmVyYXRvckxv
Y2FsSW5kZXgrKykuc2V0KGV4ZWMtPnZtKCksIHRoaXMsIGV4ZWMtPnVuY2hlY2tlZFIodmlydHVh
bFJlZ2lzdGVyRm9yTG9jYWwoaW5kZXgpKS5qc1ZhbHVlKCkpOwogICAgIH0pOwogfQogCkBAIC04
MCwxMCArOTAsMTEgQEAgdm9pZCBHZW5lcmF0b3JGcmFtZTo6cmVzdW1lKEV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZUNhbGxlZUxvY2EKIHsKICAgICAvLyBPbmx5IHJl
c3VtZSBjYWxsZWUgbG9jYWxzLgogICAgIC8vIEV2ZXJ5IHRpbWUgYSBnZW5lcmF0b3IgaXMgY2Fs
bGVkIChvciByZXN1bWVkKSwgcGFyYW1ldGVycyBzaG91bGQgYmUgcmVwbGFjZWQuCisgICAgdW5z
aWduZWQgZ2VuZXJhdG9yTG9jYWxJbmRleCA9IDA7CiAgICAgbGl2ZUNhbGxlZUxvY2Fscy5mb3JF
YWNoU2V0Qml0KFsmXShzaXplX3QgaW5kZXgpIHsKLSAgICAgICAgZXhlYy0+dW5jaGVja2VkUih2
aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChpbmRleCkpID0gbG9jYWxBdChpbmRleCkuZ2V0KCk7Ci0g
ICAgICAgIGxvY2FsQXQoaW5kZXgpLmNsZWFyKCk7CisgICAgICAgIGV4ZWMtPnVuY2hlY2tlZFIo
dmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaW5kZXgpKSA9IGxvY2FsQXQoZ2VuZXJhdG9yTG9jYWxJ
bmRleCsrKS5nZXQoKTsKICAgICB9KTsKKyAgICBtX251bWJlck9mU2F2ZWRDYWxsZWVMb2NhbHMg
PSAwOwogfQogCiB2b2lkIEdlbmVyYXRvckZyYW1lOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2Vs
bCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCkBAIC05MSw3ICsxMDIsMTIgQEAgdm9pZCBHZW5lcmF0
b3JGcmFtZTo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9y
KQogICAgIEdlbmVyYXRvckZyYW1lKiB0aGlzT2JqZWN0ID0ganNDYXN0PEdlbmVyYXRvckZyYW1l
Kj4oY2VsbCk7CiAgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsK
ICAgICAvLyBTaW5jZSBvbmx5IHRydWUgY2VsbCBwb2ludGVycyBhcmUgc3RvcmVkIGFzIGEgY2Vs
bCwgd2UgY2FuIHNhZmVseSBtYXJrIHRoZW0uCi0gICAgdmlzaXRvci5hcHBlbmRWYWx1ZXModGhp
c09iamVjdC0+bG9jYWxzKCksIHRoaXNPYmplY3QtPm1fbnVtYmVyT2ZDYWxsZWVMb2NhbHMpOwor
ICAgIHZpc2l0b3IuYXBwZW5kVmFsdWVzKHRoaXNPYmplY3QtPmxvY2FscygpLCB0aGlzT2JqZWN0
LT5tX251bWJlck9mU2F2ZWRDYWxsZWVMb2NhbHMpOworICAgIC8vIENsZWFyIG5vdCB1c2VkIGNh
bGxlZSBsb2NhbHMgd2hlbiBtYXJraW5nLgorICAgIC8vIFRoaXMgZW5zdXJlcyB0aGF0LCAiaWYg
YSBnaXZlbiBsb2NhbCBoYXMgYSB2YWx1ZSwgdGhpcyB2YWx1ZSBpcyBjb3JyZWN0bHkgbWFya2Vk
IGluIHRoZSBwcmV2aW91cyBtYXJraW5nIHBoYXNlIi4KKyAgICBzaXplX3QgcmVtYWluaW5nID0g
dGhpc09iamVjdC0+bV9udW1iZXJPZkNhbGxlZUxvY2FscyAtIHRoaXNPYmplY3QtPm1fbnVtYmVy
T2ZTYXZlZENhbGxlZUxvY2FsczsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJlbWFpbmlu
ZzsgKytpKQorICAgICAgICB0aGlzT2JqZWN0LT5sb2NhbEF0KHRoaXNPYmplY3QtPm1fbnVtYmVy
T2ZTYXZlZENhbGxlZUxvY2FscyArIGkpLmNsZWFyKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpT
QwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJh
bWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZyYW1lLmgKaW5k
ZXggM2Q1NDViMTQ3ZGQ0YWJmYjJiYmI5YjVhNzE5NGU4Zjc0ODQxYzQ5YS4uY2YxZGI3YTJiZWU2
MGRhMjk0NjRlYzQxN2EwYzVmYjhjMWYwYWU4YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJhbWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9HZW5lcmF0b3JGcmFtZS5oCkBAIC0yNywxMSArMjcsMTQgQEAKICNkZWZpbmUg
R2VuZXJhdG9yRnJhbWVfaAogCiAjaW5jbHVkZSAiSlNDZWxsLmgiCisjaW5jbHVkZSAiSlNPYmpl
Y3QuaCIKICNpbmNsdWRlIDx3dGYvRmFzdEJpdFZlY3Rvci5oPgogCiBuYW1lc3BhY2UgSlNDIHsK
IAotY2xhc3MgR2VuZXJhdG9yRnJhbWUgOiBwdWJsaWMgSlNDZWxsIHsKK2NsYXNzIExMSW50T2Zm
c2V0c0V4dHJhY3RvcjsKKworY2xhc3MgR2VuZXJhdG9yRnJhbWUgOiBwdWJsaWMgSlNOb25GaW5h
bE9iamVjdCB7CiAgICAgZnJpZW5kIGNsYXNzIEpJVDsKICNpZiBFTkFCTEUoREZHX0pJVCkKICAg
ICBmcmllbmQgY2xhc3MgREZHOjpTcGVjdWxhdGl2ZUpJVDsKQEAgLTM5LDEyICs0MiwxMiBAQCBj
bGFzcyBHZW5lcmF0b3JGcmFtZSA6IHB1YmxpYyBKU0NlbGwgewogI2VuZGlmCiAgICAgZnJpZW5k
IGNsYXNzIFZNOwogcHVibGljOgotICAgIHR5cGVkZWYgSlNDZWxsIEJhc2U7Ci0gICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gU3RydWN0dXJlSXNJbW1vcnRhbCB8IEJh
c2U6OlN0cnVjdHVyZUZsYWdzOworICAgIHR5cGVkZWYgSlNOb25GaW5hbE9iamVjdCBCYXNlOwog
CiAgICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKIAotICAgIHN0YXRpYyBHZW5lcmF0b3JGcmFtZSog
Y3JlYXRlKFZNJiwgc2l6ZV90IG51bWJlck9mQ2FsbGVlTG9jYWxzKTsKKyAgICBzdGF0aWMgR2Vu
ZXJhdG9yRnJhbWUqIGNyZWF0ZShFeGVjU3RhdGUqLCBzaXplX3QgbnVtYmVyT2ZDYWxsZWVMb2Nh
bHMpOworICAgIHN0YXRpYyBHZW5lcmF0b3JGcmFtZSogY3JlYXRlKFZNJiwgU3RydWN0dXJlKiwg
c2l6ZV90IG51bWJlck9mQ2FsbGVlTG9jYWxzKTsKIAogICAgIFdyaXRlQmFycmllckJhc2U8VW5r
bm93bj4qIGxvY2FscygpCiAgICAgewpAQCAtNTMsNyArNTYsNiBAQCBjbGFzcyBHZW5lcmF0b3JG
cmFtZSA6IHB1YmxpYyBKU0NlbGwgewogCiAgICAgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiYg
bG9jYWxBdChzaXplX3QgaW5kZXgpCiAgICAgewotICAgICAgICBBU1NFUlQoaW5kZXggPCBtX251
bWJlck9mQ2FsbGVlTG9jYWxzKTsKICAgICAgICAgcmV0dXJuIGxvY2FscygpW2luZGV4XTsKICAg
ICB9CiAKQEAgLTYyLDYgKzY0LDIxIEBAIGNsYXNzIEdlbmVyYXRvckZyYW1lIDogcHVibGljIEpT
Q2VsbCB7CiAgICAgICAgIHJldHVybiBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Y8c2l6ZW9mKFdy
aXRlQmFycmllcjxVbmtub3duPik+KHNpemVvZihHZW5lcmF0b3JGcmFtZSkpOwogICAgIH0KIAor
ICAgIHN0YXRpYyBzaXplX3QgbG9jYWxPZmZzZXQodW5zaWduZWQgaW5kZXgpCisgICAgeworICAg
ICAgICByZXR1cm4gb2Zmc2V0T2ZMb2NhbHMoKSArIGluZGV4ICogc2l6ZW9mKFdyaXRlQmFycmll
cjxVbmtub3duPik7CisgICAgfQorCisgICAgc3RhdGljIHNpemVfdCBudW1iZXJPZkNhbGxlZUxv
Y2Fsc09mZnNldCgpCisgICAgeworICAgICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEdlbmVy
YXRvckZyYW1lLCBtX251bWJlck9mQ2FsbGVlTG9jYWxzKTsKKyAgICB9CisKKyAgICBzdGF0aWMg
c2l6ZV90IG51bWJlck9mU2F2ZWRDYWxsZWVMb2NhbHNPZmZzZXQoKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIE9CSkVDVF9PRkZTRVRPRihHZW5lcmF0b3JGcmFtZSwgbV9udW1iZXJPZlNhdmVkQ2Fs
bGVlTG9jYWxzKTsKKyAgICB9CisKICAgICBzdGF0aWMgc2l6ZV90IGFsbG9jYXRpb25TaXplRm9y
TG9jYWxzKHVuc2lnbmVkIG51bWJlck9mTG9jYWxzKQogICAgIHsKICAgICAgICAgcmV0dXJuIG9m
ZnNldE9mTG9jYWxzKCkgKyBudW1iZXJPZkxvY2FscyAqIHNpemVvZihXcml0ZUJhcnJpZXI8VW5r
bm93bj4pOwpAQCAtNzMsMTYgKzkwLDE2IEBAIGNsYXNzIEdlbmVyYXRvckZyYW1lIDogcHVibGlj
IEpTQ2VsbCB7CiAgICAgdm9pZCByZXN1bWUoRXhlY1N0YXRlKiwgY29uc3QgRmFzdEJpdFZlY3Rv
ciYgbGl2ZUNhbGxlZUxvY2Fscyk7CiAKIHByaXZhdGU6Ci0gICAgR2VuZXJhdG9yRnJhbWUoVk0m
LCBzaXplX3QgbnVtYmVyT2ZDYWxsZWVMb2NhbHMpOworICAgIEdlbmVyYXRvckZyYW1lKFZNJiwg
U3RydWN0dXJlKiwgdWludDMyX3QgbnVtYmVyT2ZDYWxsZWVMb2NhbHMpOwogCi0gICAgc2l6ZV90
IG1fbnVtYmVyT2ZDYWxsZWVMb2NhbHM7CisgICAgdWludDMyX3QgbV9udW1iZXJPZkNhbGxlZUxv
Y2FsczsKKyAgICB1aW50MzJfdCBtX251bWJlck9mU2F2ZWRDYWxsZWVMb2NhbHMgeyAwIH07CiAK
ICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogCi0gICAgdm9pZCBmaW5p
c2hDcmVhdGlvbihWTSYpOwotCiBwcm90ZWN0ZWQ6CiAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGls
ZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0m
KTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IDc2OWEzZWZiMzA0MzhkY2Q5ZGRlNDQy
ZGM4ODk0YTFmMDM4MmE1MDQuLjhjYjg0YWJlNWY4NzM5YTAxOGU2MmVhNDhmNDcxNDQ0Nzk1NTFk
M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5jcHAKQEAgLTUwLDYgKzUwLDcgQEAKICNpbmNsdWRlICJFcnJvclByb3RvdHlwZS5oIgogI2lu
Y2x1ZGUgIkZ1bmN0aW9uQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJGdW5jdGlvblByb3RvdHlw
ZS5oIgorI2luY2x1ZGUgIkdlbmVyYXRvckZyYW1lLmgiCiAjaW5jbHVkZSAiR2VuZXJhdG9yRnVu
Y3Rpb25Db25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBl
LmgiCiAjaW5jbHVkZSAiR2VuZXJhdG9yUHJvdG90eXBlLmgiCkBAIC0zODgsNiArMzg5LDcgQEAg
dm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdChWTSYgdm0pCiAgICAgCiAgICAgRk9SX0VBQ0hfQlVJ
TFRJTl9ERVJJVkVEX0lURVJBVE9SX1RZUEUoQ1JFQVRFX1BST1RPVFlQRV9GT1JfREVSSVZFRF9J
VEVSQVRPUl9UWVBFKQogICAgIG1fcHJvcGVydHlOYW1lSXRlcmF0b3JTdHJ1Y3R1cmUuc2V0KHZt
LCB0aGlzLCBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMs
IG1faXRlcmF0b3JQcm90b3R5cGUuZ2V0KCkpKTsKKyAgICBtX2dlbmVyYXRvckZyYW1lU3RydWN0
dXJlLnNldCh2bSwgdGhpcywgR2VuZXJhdG9yRnJhbWU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhp
cywganNOdWxsKCkpKTsKICAgICBtX2dlbmVyYXRvclByb3RvdHlwZS5zZXQodm0sIHRoaXMsIEdl
bmVyYXRvclByb3RvdHlwZTo6Y3JlYXRlKHZtLCB0aGlzLCBHZW5lcmF0b3JQcm90b3R5cGU6OmNy
ZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9pdGVyYXRvclByb3RvdHlwZS5nZXQoKSkpKTsKICAg
ICAKICN1bmRlZiBDUkVBVEVfUFJPVE9UWVBFX0ZPUl9ERVJJVkVEX0lURVJBVE9SX1RZUEUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IGI0
ZmYyZmI0MTNlMGU0NDYyNDkyYTQ4YTNmZDVhNGMyNGVhMGI3NDEuLjcxZDM5ZWM5MjgzYWQ5ZTU5
MDEyNDRmMDEzNmExMzU4ZjU0NGE5OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAtMjU1LDYgKzI1NSw3IEBAIGNsYXNzIEpTR2xvYmFs
T2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIFdyaXRlQmFy
cmllcjxTdHJ1Y3R1cmU+IG1fY2FsbGJhY2tGdW5jdGlvblN0cnVjdHVyZTsKICAgICBXcml0ZUJh
cnJpZXI8U3RydWN0dXJlPiBtX2NhbGxiYWNrT2JqZWN0U3RydWN0dXJlOwogICAgIFdyaXRlQmFy
cmllcjxTdHJ1Y3R1cmU+IG1fcHJvcGVydHlOYW1lSXRlcmF0b3JTdHJ1Y3R1cmU7CisgICAgV3Jp
dGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9nZW5lcmF0b3JGcmFtZVN0cnVjdHVyZTsKICNpZiBKU0Nf
T0JKQ19BUElfRU5BQkxFRAogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fb2JqY0NhbGxi
YWNrRnVuY3Rpb25TdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9vYmpj
V3JhcHBlck9iamVjdFN0cnVjdHVyZTsKQEAgLTUwMSw2ICs1MDIsNyBAQCBjbGFzcyBKU0dsb2Jh
bE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBTdHJ1Y3R1
cmUqIGNhbGxiYWNrRnVuY3Rpb25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2NhbGxiYWNr
RnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIGNhbGxiYWNrT2JqZWN0
U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9jYWxsYmFja09iamVjdFN0cnVjdHVyZS5nZXQo
KTsgfQogICAgIFN0cnVjdHVyZSogcHJvcGVydHlOYW1lSXRlcmF0b3JTdHJ1Y3R1cmUoKSBjb25z
dCB7IHJldHVybiBtX3Byb3BlcnR5TmFtZUl0ZXJhdG9yU3RydWN0dXJlLmdldCgpOyB9CisgICAg
U3RydWN0dXJlKiBnZW5lcmF0b3JGcmFtZVN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fZ2Vu
ZXJhdG9yRnJhbWVTdHJ1Y3R1cmUuZ2V0KCk7IH0KICNpZiBKU0NfT0JKQ19BUElfRU5BQkxFRAog
ICAgIFN0cnVjdHVyZSogb2JqY0NhbGxiYWNrRnVuY3Rpb25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJl
dHVybiBtX29iamNDYWxsYmFja0Z1bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0
dXJlKiBvYmpjV3JhcHBlck9iamVjdFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fb2JqY1dy
YXBwZXJPYmplY3RTdHJ1Y3R1cmUuZ2V0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZN
LmNwcAppbmRleCAwZTQ0YzM0NjBmOWY4ZjBkY2IzNWQ5MTJkNzk1ZjdmOThkZmI3ZjQ1Li4wZWYy
NWU3MjlhYTZlNTVjM2RjYTA2MWMyMmI2NWFhNmY3YjViMzRlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVk0uY3BwCkBAIC0yNDYsNyArMjQ2LDYgQEAgc3RhdGljIGJvb2wgZW5hYmxlQXNz
ZW1ibGVyKEV4ZWN1dGFibGVBbGxvY2F0b3ImIGV4ZWN1dGFibGVBbGxvY2F0b3IpCiAgICAgaW5m
ZXJyZWRUeXBlU3RydWN0dXJlLnNldCgqdGhpcywgSW5mZXJyZWRUeXBlOjpjcmVhdGVTdHJ1Y3R1
cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgaW5mZXJyZWRUeXBlVGFibGVTdHJ1Y3R1cmUu
c2V0KCp0aGlzLCBJbmZlcnJlZFR5cGVUYWJsZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBq
c051bGwoKSkpOwogICAgIGZ1bmN0aW9uUmFyZURhdGFTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBGdW5j
dGlvblJhcmVEYXRhOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7Ci0gICAg
Z2VuZXJhdG9yRnJhbWVTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBHZW5lcmF0b3JGcmFtZTo6Y3JlYXRl
U3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIGV4Y2VwdGlvblN0cnVjdHVyZS5z
ZXQoKnRoaXMsIEV4Y2VwdGlvbjo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkp
OwogICAgIHByb21pc2VEZWZlcnJlZFN0cnVjdHVyZS5zZXQoKnRoaXMsIEpTUHJvbWlzZURlZmVy
cmVkOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgaW50ZXJuYWxQ
cm9taXNlRGVmZXJyZWRTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBKU0ludGVybmFsUHJvbWlzZURlZmVy
cmVkOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVk0uaAppbmRleCBhZWUwYWMxZjIxYjg0NTFiYzc3Njc0NDNhMGIwNWNhMDQ4YjRm
NDliLi4yMzYwODM3MGE5ODM2ZDg5NzdlNDlkNzFlNjhhODA5YjlhYzQ1MzYzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ZNLmgKQEAgLTMxMiw3ICszMTIsNiBAQCBjbGFzcyBWTSA6IHB1Ymxp
YyBUaHJlYWRTYWZlUmVmQ291bnRlZDxWTT4gewogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGluZmVy
cmVkVHlwZVN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBpbmZlcnJlZFR5cGVUYWJs
ZVN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBmdW5jdGlvblJhcmVEYXRhU3RydWN0
dXJlOwotICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGdlbmVyYXRvckZyYW1lU3RydWN0dXJlOwogICAg
IFN0cm9uZzxTdHJ1Y3R1cmU+IGV4Y2VwdGlvblN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0
dXJlPiBwcm9taXNlRGVmZXJyZWRTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gaW50
ZXJuYWxQcm9taXNlRGVmZXJyZWRTdHJ1Y3R1cmU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>269166</attachid>
            <date>2016-01-16 07:00:34 -0800</date>
            <delta_ts>2016-01-16 08:15:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-152723-20160117000003.patch</filename>
            <type>text/plain</type>
            <size>105806</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk1MDU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
ZDVkMzdhNWE2NzE2ZmQyMWY5YzRiYzhlZDg0OGZkNTlhZjU1NTgzLi40NTRjNzkyNzYwYjhmMGYw
YzE0ZGVmNGYxNzI0NGNmZDRmM2QyZDQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMjIgQEAKKzIwMTYtMDEtMTYgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgQ3JlYXRlIEdlbmVyYXRvckZyYW1lIHdpdGggdGhlIGJ5dGVjb2Rl
IG9wX25ld19nZW5lcmF0b3JfZnJhbWUgYW5kIG1ha2Ugb3Bfc2F2ZSAvIG9wX3Jlc3VtZSBERkcv
RlRMIGNhcGFibGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1MjcyMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRoaXMgcGF0Y2ggaXMgYW4gaW5pdGlhbCBhdHRlbXB0IHRvIGltcGxlbWVudCBERkcgYW5k
IEZUTCBjYXBhYmxlIEVTNiBnZW5lcmF0b3JzLgorICAgICAgICBXZSBpbnRyb2R1Y2UgdGhlIHNl
dmVyYWwgYnl0ZWNvZGVzIGFuZCBjb21waWxlIHRoZW0gaW4gREZHIC8gRlRMLgorCisgICAgICAg
IC0gb3Bfbm9wCisKKyAgICAgICAgICAgIE5vcCBvcGVyYXRpb24gaW4gdGhlIGJ5dGVjb2RlLiBU
aGlzIGlzIHVzZWQgdG8gcmVwcmVzZW50IGhvbGVzIGluIHRoZSBieXRlY29kZSBzdHJlYW0uCisg
ICAgICAgICAgICBUaGVzZSBieXRlY29kZXMgY291bGQgYmUgcmVwbGFjZWQgKFNpbWlsYXIgdG8g
dGhlIExMVk0gcGF0Y2hwb2ludCkuCisKKyAgICAgICAgLSBvcF9uZXdfZ2VuZXJhdG9yX2ZyYW1l
CisKKyAgICAgICAgICAgIEFsbG9jYXRlIEdlbmVyYXRvckZyYW1lIGluIHRoZSBieXRlY29kZSBp
bnN0ZWFkIG9mIGFsbG9jYXRpbmcgaXQgaW4gdGhlIG9wX3NhdmUuCisKKyAgICAgICAgLSBvcF9z
YXZlX2hpbnQKKworICAgICAgICAgICAgVGhpcyBpcyBwcmV2aW91cyBvcF9zYXZlLiBUaGlzIG9w
X3NhdmVfaGludCBpcyBvbmx5IHVzZWQgZm9yIHRoZSBieXRlY29kZSB1c2UtZGVmIGFuYWx5c2lz
LiBPbmNlIHRoZSBhbmFseXNpcyBpcyBkb25lIGluIENvZGVCbG9jayBjcmVhdGlvbiBwaGFzZSwK
KyAgICAgICAgICAgIHdlIHdpbGwgY29udmVydCB0aGlzIGJ5dGVjb2RlIHRvIG9wX3NhdmUuCisg
ICAgICAgICAgICBXaGlsZSBvcF9zYXZlX2hpbnQgaGFzIGEgcHNldWRvIGp1bXAgdG8gdGhlIGdl
bmVyYXRvciBjb250aW51YXRpb24gbWVyZ2UgcG9pbnQsIG9wX3NhdmUgZG9lcyBub3QgaGF2ZSBp
dC4gVGhpcyBwc2V1ZG8ganVtcCBpcyBuZWNlc3NhcnkgZm9yCisgICAgICAgICAgICB0aGUgYnl0
ZWNvZGUgdXNlLWRlZiBhbmFseXNpcy4gVGhpcyBieXRlY29kZSB1c2UtZGVmIGFuYWx5c2lzIGlz
IHVzZWQgdG8gZGlzY292ZXIgbGl2ZSB2YXJpYWJsZXMgaW4gdGhlIGdlbmVyYXRvciBjb250aW51
YXRpb24gbWVyZ2UgcG9pbnQuCisKKyAgICAgICAgICAgIFRoZSBnZW5lcmF0b3IgY29udGludWF0
aW9uIG1lcmdlIHBvaW50IGlzIHRoZSBwb2ludCB0aGF0IG1lcmdpbmcgdGhlIDIgYmFzaWMgYmxv
Y2tzLCBzYXZpbmcgbG9jYWxzIHRvIHRoZSBnZW5lcmF0b3IgZnJhbWUgYW5kIHJlc3VtaW5nIGxv
Y2FscyBmcm9tCisgICAgICAgICAgICB0aGUgZ2VuZXJhdG9yIGZyYW1lLgorCisgICAgICAgIC0g
b3Bfc2F2ZQorCisgICAgICAgICAgICBTaW1pbGFyIHRvIHRoZSBwcmV2aW91cyBvcF9zYXZlLiBJ
dCB1c2VzIGxvY2FscyBhbmQgc2F2ZXMgdGhlbSB0byB0aGUgZ2VuZXJhdG9yIGZyYW1lLiBBdCB0
aGF0IHRpbWUsIHdlIHdpbGwgc2V0IEdlbmVyYXRvckZyYW1lOjptX251bWJlck9mU2F2ZWRDYWxs
ZWVMb2NhbHMgYXMgKk4qCisgICAgICAgICAgICB0byBhbGxvY2F0ZSBzcGFjZSBmb3Igc2F2ZWQg
bG9jYWxzLgorCisgICAgICAgIC0gb3BfcmVzdW1lX2hpbnQKKworICAgICAgICAgICAgU2ltaWxh
ciB0byB0aGUgb3Bfc2F2ZV9oaW50LCB0aGlzIGlzIG9ubHkgdXNlZCBmb3IgdGhlIGJ5dGVjb2Rl
IHVzZS1kZWYgYW5hbHlzaXMuIG9wX3Jlc3VtZV9oaW50IGxlYWRzIHNldmVyYWwgb3Bfbm9wIG9w
ZXJhdGlvbnMuCisgICAgICAgICAgICBBZnRlciB0aGUgYW5hbHlzaXMsIHdlIGV4cGxvaXQgdGhl
IG5lZWRlZCBkZWZzIGZvciB0aGlzIHJlc3VtZSBwb2ludCBhbmQgcmVwbGFjZSB0aGlzIGJ5dGVj
b2RlIGFuZCBvcF9ub3Agd2l0aCBvcF9yZXN1bWVfZnJvbV9nZW5lcmF0b3JfZnJhbWUgb3BlcmF0
aW9ucy4KKyAgICAgICAgICAgIFRoaXMgbWFrZXMgREZHIFNldExvY2FsIHRyZWF0bWVudCBzaW1w
bGUuIFdoaWxlIG9wX3Jlc3VtZV9oaW50IGRlZmluZXMgbXVsdGlwbGUgbG9jYWxzLCBvcF9yZXN1
bWVfZnJvbV9nZW5lcmF0b3JfZnJhbWUgb25seSBkZWZpbmVzIG9uZSBsb2NhbCAoZHN0KS4KKwor
ICAgICAgICAtIG9wX3Jlc3VtZV9mcm9tX2dlbmVyYXRvcl9mcmFtZQorCisgICAgICAgICAgICBU
aGlzIHJldHJpZXZlcyBsb2NhbCB2YXJpYWJsZSBmcm9tIHRoZSBnZW5lcmF0b3IgZnJhbWUuIG9w
X3Jlc3VtZV9oaW50IGFuZCBzdWJzZXF1ZW50IG9wX25vcCB3aWxsIGJlIHJlcGxhY2VkIHdpdGgg
dGhpcy4KKworICAgICAgICAtIG9wX2NsZWFyX2dlbmVyYXRvcl9mcmFtZQorCisgICAgICAgICAg
ICBUaGlzIGNsZWFycyBnZW5lcmF0b3IgZnJhbWUncyBsb2NhbHMgYnkgc2V0dGluZyBHZW5lcmF0
b3JGcmFtZTo6bV9udW1iZXJPZlNhdmVkQ2FsbGVlTG9jYWxzIGFzIDAuCisKKworICAgICAgICBI
ZXJlLCB3ZSBleHBsYWluIGFib3V0IGhvdyB0byBwcmVwcm9jZXNzIGJ5dGVjb2Rlcy4KKyAgICAg
ICAgRmlyc3QsIHdlIGVtaXQgb3Bfc2F2ZV9oaW50LCBvcF9yZXN1bWVfaGludCBhbmQgb3BfY2xl
YXJfZ2VuZXJhdG9yX2ZyYW1lIGxpa2UgdGhpcy4KKworICAgICAgICBbZW50cnldIC0rLS0+IFtz
YXZlIGJsb2NrXSAtPiBvcF9zYXZlX2hpbnQgKGl0IGlzIGJyYW5jaGluZyBieXRlY29kZSkgLS0t
LS0tPiBbbWVyZ2UgYmxvY2tdIC0+IC4uLgorICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBe
CisgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKy0+
IG9wX3JldCAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgICAgICAgKy0tLS0t
LS0tLS0tLS0tLS0tLT4gb3BfcmVzdW1lX2hpbnQgLT4gb3BfY2xlYXJfZ2VuZXJhdG9yX2ZyYW1l
IC0tLS0tKworCisgICAgICAgIEFuZCBwZXJmb3JtIGJ5dGVjb2RlIHVzZS1kZWYgYW5hbHlzaXMg
b250byB0aGlzIENGRy4gQnkgc2VlaW5nIGxpdmUgbG9jYWxzIGF0IHRoZSBoZWFkIG9mIFttZXJn
ZSBibG9ja10gd2UgY2FuIGZpbmQgIndoaWNoIGxvY2FscyB3ZSBzaG91bGQgc2F2ZSBhbmQgcmVz
dW1lIi4KKyAgICAgICAgQmFzZWQgb24gdGhlIGFib3ZlIGFuYWx5c2lzIHJlc3VsdCwgd2UgcGF0
Y2ggdGhlIGJ5dGVjb2RlIHN0cmVhbSBhcyBmb2xsb3dzLgorCisgICAgICAgIFtlbnRyeV0gLSst
LT4gW3NhdmUgYmxvY2tdIC0+IG9wX3NhdmUgLT4gb3BfcmV0ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICstPiBbbWVyZ2UgYmxvY2tdIC0+IC4uLgorICAgICAgICAgICAgICAgICB8ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB8CisgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgICAg
ICAgKy0tPiBvcF9yZXN1bWVfZnJvbV9nZW5lcmF0b3JfZnJhbWUgKiBuIC0+IG9wX2NsZWFyX2dl
bmVyYXRvcl9mcmFtZSAtKworCisgICAgICAgIFdoaWxlIG9wX3Jlc3VtZV9oaW50IHdpbGwgYXR0
ZW1wdCB0byBkZWZpbmUgbXVsdGlwbGUgbG9jYWxzIGF0IGEgdGltZSwgb3BfcmVzdW1lX2Zyb21f
Z2VuZXJhdG9yX2ZyYW1lIG9ubHkgZGVmaW5lcyBvbmUgbG9jYWwuIEl0IHNpbXBsaWZpZXMgREZH
IGFuYWx5c2lzLgorCisgICAgICAgIEFuZCB3ZSBpbnRyb2R1Y2VzIHNldmVyYWwgREZHIG5vZGVz
LgorCisgICAgICAgIC0gTmV3R2VuZXJhdG9yRnJhbWUKKworICAgICAgICAgICAgVGhpcyBqdXN0
IGFsbG9jYXRlcyBHZW5lcmF0b3JGcmFtZS4KKworICAgICAgICAtIFJlc2l6ZUdlbmVyYXRvckxv
Y2FscworCisgICAgICAgICAgICBUaGlzIHNldCBHZW5lcmF0b3JGcmFtZTo6bV9udW1iZXJPZlNh
dmVkQ2FsbGVlTG9jYWxzICpOKi4gVGhpcyBub2RlIGlzIHVzZWQgdG8gKDEpIGFsbG9jYXRlIHNw
YWNlIGZvciBsb2NhbHMgaW4gR2VuZXJhdG9yRnJhbWUgYW5kICgyKSBkZWFsbG9jYXRlIHNwYWNl
IGluCisgICAgICAgICAgICBHZW5lcmF0b3JGcmFtZSBieSBzZXR0aW5nIGl0IGFzIDAuCisKKyAg
ICAgICAgLSBHZXRHZW5lcmF0b3JMb2NhbAorCisgICAgICAgICAgICBHZXQgYSBzYXZlZCBsb2Nh
bCB2YXJpYWJsZSBmcm9tIGEgZ2VuZXJhdG9yIGZyYW1lLiBHZXRHZW5lcmF0b3JMb2NhbCBhbmQg
U2V0R2VuZXJhdG9yTG9jYWwgYXJlIGxpbmtlZCB3aXRoIEdlbmVyYXRvckxvY2FsRGF0YS4gU28g
dHlwZSBwcmVkaWNhdGlvbiBhbmQgZmxhZ3MKKyAgICAgICAgICAgIGFyZSBjb3JyZWN0bHkgcHJv
cGFnYXRlZCBiZXlvbmQgdGhlIGdlbmVyYXRvciBmcmFtZS4KKworICAgICAgICAtIFNldEdlbmVy
YXRvckxvY2FsCisKKyAgICAgICAgICAgIFN0b3JlIGEgbG9jYWwgdmFyaWFibGUgdG8gYSBnZW5l
cmF0b3IgZnJhbWUuCisKKyAgICAgICAgRnV0dXJlIHBsYW5zIGFyZSB0aGUgZm9sbG93aW5ncy4K
KworICAgICAgICAxLiBDcmVhdGUgSlNHZW5lcmF0b3IgYW5kIGFsbG9jYXRlIGl0IGluIHRoZSBn
ZW5lcmF0b3Igd3JhcHBlciBmdW5jdGlvbi4gVGhpcyBzaG91bGQgYmUgY29tcGlsZWQgaW4gREZH
IC8gRlRMIGFuZAorICAgICAgICB0aGlzIG9iamVjdCBzaG91bGQgYmUgdHJhY2tlZCAoYnkgZXNj
YXBlIGFuYWx5c2lzKSBhbmQgZWxpbWluYXRlZCBpZiBwb3NzaWJsZSBieSBvYmplY3QgYWxsb2Nh
dGlvbiBlbGltaW5hdGlvbi4KKworICAgICAgICAyLiBBbmQgb25jZSB3ZSBleHBsb2l0IHRoYXQg
R2VuZXJhdG9yRnJhbWUgaXMgbm90IGVzY2FwZWQgZnJvbSB0aGUgZ2l2ZW4gRlRMLWVkIGZ1bmN0
aW9uLCB3ZSB3aWxsIGVsaW1pbmF0ZSBHZW5lcmF0b3JGcmFtZSBhbGxvY2F0aW9uIGFuZAorICAg
ICAgICBjb252ZXJ0IEdlbmVyYXRvckxvY2FsIG9wZXJhdGlvbnMgaW50byBnZXQvc2V0IGxvY2Fs
IG9wZXJhdGlvbnMuCisKKyAgICAgICAgKiBidWlsdGlucy9HZW5lcmF0b3JQcm90b3R5cGUuanM6
CisgICAgICAgIChnZW5lcmF0b3JSZXN1bWUpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2Rl
QmFzaWNCbG9jay5jcHA6CisgICAgICAgIChKU0M6OmlzQnJhbmNoKToKKyAgICAgICAgKiBieXRl
Y29kZS9CeXRlY29kZUxpc3QuanNvbjoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZVVzZURl
Zi5oOgorICAgICAgICAoSlNDOjpjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAg
ICAgKEpTQzo6Y29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgICogYnl0ZWNv
ZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUp
OgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBi
eXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHMuY3BwOgorICAgICAgICAoSlNDOjpnZXRKdW1wVGFy
Z2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVH
ZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVH
ZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0dlbmVy
YXRvckZyYW1lKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRTYXZlKToK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXN1bWUpOgorICAgICAgICAq
IGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUdlbmVyYXRvcjo6Z2VuZXJhdG9yRnJhbWVSZWdpc3Rlcik6CisgICAgICAgICogZGZnL0RGR0Fi
c3RyYWN0SGVhcC5oOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5l
cy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0
ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2Vy
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6bmV3R2VuZXJhdG9yTG9j
YWxEYXRhKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6
CisgICAgICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
Y2FwYWJpbGl0eUxldmVsKToKKyAgICAgICAgKiBkZmcvREZHQ2xvYmJlcml6ZS5oOgorICAgICAg
ICAoSlNDOjpERkc6OmNsb2JiZXJpemUpOgorICAgICAgICAqIGRmZy9ERkdDbG9iYmVyc0V4aXRT
dGF0ZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Y2xvYmJlcnNFeGl0U3RhdGUpOgorICAgICAg
ICAqIGRmZy9ERkdEb2VzR0MuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmRvZXNHQyk6CisgICAg
ICAgICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhh
c2U6OmZpeHVwTm9kZSk6CisgICAgICAgICogZGZnL0RGR0dlbmVyYXRvckxvY2FsRGF0YS5oOiBB
ZGRlZC4KKyAgICAgICAgKEpTQzo6REZHOjpHZW5lcmF0b3JMb2NhbERhdGE6OnByZWRpY3QpOgor
ICAgICAgICAoSlNDOjpERkc6OkdlbmVyYXRvckxvY2FsRGF0YTo6cHJlZGljdGlvbik6CisgICAg
ICAgICogZGZnL0RGR0dyYXBoLmg6CisgICAgICAgICogZGZnL0RGR01heUV4aXQuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6Om1heUV4aXQpOgorICAgICAgICAqIGRmZy9ERkdOb2RlLmg6CisgICAg
ICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzR2VuZXJhdG9yTG9jYWxzU2l6ZSk6CisgICAgICAgIChK
U0M6OkRGRzo6Tm9kZTo6Z2VuZXJhdG9yTG9jYWxzU2l6ZSk6CisgICAgICAgIChKU0M6OkRGRzo6
Tm9kZTo6aGFzR2VuZXJhdG9yTG9jYWxJbmRleCk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6
Z2VuZXJhdG9yTG9jYWxJbmRleCk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzR2VuZXJh
dG9yTG9jYWxEYXRhKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpnZW5lcmF0b3JMb2NhbERh
dGEpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc0dlbmVyYXRvckZyYW1lTG9jYWxzKToK
KyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpnZW5lcmF0b3JGcmFtZUxvY2Fscyk6CisgICAgICAg
ICogZGZnL0RGR05vZGVUeXBlLmg6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuY3BwOgor
ICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmg6CisgICAgICAgICogZGZnL0RGR1ByZWRpY3Rp
b25Qcm9wYWdhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpQcmVkaWN0aW9uUHJv
cGFnYXRpb25QaGFzZTo6cHJvcGFnYXRlKToKKyAgICAgICAgKiBkZmcvREZHU2FmZVRvRXhlY3V0
ZS5oOgorICAgICAgICAoSlNDOjpERkc6OnNhZmVUb0V4ZWN1dGUpOgorICAgICAgICAqIGRmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVOZXdHZW5lcmF0b3JGcmFtZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVSZXNpemVHZW5lcmF0b3JMb2NhbHMpOgorICAgICAgICAqIGRmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAg
ICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0
aW9uUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdTdHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFz
ZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2U6OnJ1
bik6CisgICAgICAgICogZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwOgorICAgICAg
ICAqIGZ0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5Lmg6CisgICAgICAgICogZnRsL0ZUTENh
cGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6Y2FuQ29tcGlsZSk6CisgICAgICAg
ICogZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxv
d2VyREZHVG9MTFZNOjpjb21waWxlTm9kZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dl
ckRGR1RvTExWTTo6Y29tcGlsZVJlc2l6ZUdlbmVyYXRvckxvY2Fscyk6CisgICAgICAgIChKU0M6
OkZUTDo6REZHOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZVNldEdlbmVyYXRvckxvY2FsKToKKyAg
ICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlR2V0R2VuZXJhdG9y
TG9jYWwpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVO
ZXdHZW5lcmF0b3JGcmFtZSk6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6
OkpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcyk6CisgICAgICAgICogaml0L0pJVC5oOgorICAg
ICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3Jl
c3VtZV9mcm9tX2dlbmVyYXRvcl9mcmFtZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9j
bGVhcl9nZW5lcmF0b3JfZnJhbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbmV3X2dl
bmVyYXRvcl9mcmFtZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9ub3ApOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRfb3BfcmVzdW1lKTogRGVsZXRlZC4KKyAgICAgICAgKiBqaXQvSklU
T3Bjb2RlczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3Jlc3VtZV9mcm9t
X2dlbmVyYXRvcl9mcmFtZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9jbGVhcl9nZW5l
cmF0b3JfZnJhbWUpOgorICAgICAgICAqIGxsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHA6
CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc206CisgICAgICAgICogbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZl
bEludGVycHJldGVyNjQuYXNtOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAg
ICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJbm5lcik6CisgICAgICAgIChKU0M6OlBh
cnNlcjxMZXhlclR5cGU+OjpwYXJzZUdlbmVyYXRvckZ1bmN0aW9uU291cmNlRWxlbWVudHMpOgor
ICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6Y3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVy
cyk6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5oOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9u
U2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6U0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAq
IHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmg6CisgICAgICAgICogcnVudGltZS9HZW5lcmF0b3JG
cmFtZS5jcHA6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpHZW5lcmF0b3JGcmFtZSk6
CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAg
IChKU0M6OkdlbmVyYXRvckZyYW1lOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpH
ZW5lcmF0b3JGcmFtZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OnNh
dmUpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6cmVzdW1lKToKKyAgICAgICAgKEpT
Qzo6R2VuZXJhdG9yRnJhbWU6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUvR2Vu
ZXJhdG9yRnJhbWUuaDoKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OmxvY2FsT2Zmc2V0
KToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6Om51bWJlck9mQ2FsbGVlTG9jYWxzT2Zm
c2V0KToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6Om51bWJlck9mU2F2ZWRDYWxsZWVM
b2NhbHNPZmZzZXQpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6bG9jYWxBdCk6IERl
bGV0ZWQuCisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChK
U0M6OkpTR2xvYmFsT2JqZWN0Ojppbml0KToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpnZW5lcmF0b3JGcmFtZVN0cnVj
dHVyZSk6CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpWTSk6
IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9WTS5oOgorCiAyMDE2LTAxLTEzICBDYXJsb3Mg
R2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbQ01ha2VdIERv
IG5vdCB1c2UgTExWTSBzdGF0aWMgbGlicmFyaWVzIGZvciBGVEwgSklUCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvR2VuZXJhdG9yUHJvdG90eXBlLmpzIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0dlbmVyYXRvclByb3RvdHlwZS5qcwppbmRleCBh
M2JiYzM1MzRhZTA1MmY0ZDZmYTI1YmRlNzAzYzkzZDNhNzk1ZTExLi40OWRkYmY5Yzg0NjkzMzA2
NTg3MTFmMThlNzIxNDliYzk4MjJkYTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnVpbHRpbnMvR2VuZXJhdG9yUHJvdG90eXBlLmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9idWlsdGlucy9HZW5lcmF0b3JQcm90b3R5cGUuanMKQEAgLTU4LDcgKzU4LDcgQEAgZnVu
Y3Rpb24gZ2VuZXJhdG9yUmVzdW1lKGdlbmVyYXRvciwgc2VudFZhbHVlLCByZXN1bWVNb2RlKQog
ICAgIH0gZWxzZSB7CiAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICBnZW5lcmF0b3IuQGdlbmVy
YXRvclN0YXRlID0gRXhlY3V0aW5nOwotICAgICAgICAgICAgdmFsdWUgPSBnZW5lcmF0b3IuQGdl
bmVyYXRvck5leHQuQGNhbGwoZ2VuZXJhdG9yLkBnZW5lcmF0b3JUaGlzLCBnZW5lcmF0b3IsIHN0
YXRlLCBzZW50VmFsdWUsIHJlc3VtZU1vZGUpOworICAgICAgICAgICAgdmFsdWUgPSBnZW5lcmF0
b3IuQGdlbmVyYXRvck5leHQuQGNhbGwoZ2VuZXJhdG9yLkBnZW5lcmF0b3JUaGlzLCBnZW5lcmF0
b3IsIHN0YXRlLCBzZW50VmFsdWUsIHJlc3VtZU1vZGUsIGdlbmVyYXRvci5AZ2VuZXJhdG9yRnJh
bWUpOwogICAgICAgICAgICAgaWYgKGdlbmVyYXRvci5AZ2VuZXJhdG9yU3RhdGUgPT09IEV4ZWN1
dGluZykgewogICAgICAgICAgICAgICAgIGdlbmVyYXRvci5AZ2VuZXJhdG9yU3RhdGUgPSBDb21w
bGV0ZWQ7CiAgICAgICAgICAgICAgICAgZG9uZSA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suY3BwCmluZGV4IDdmMTdj
MGVmMTBiNDMzZmFjOGY1OGNiM2I5Y2E1ZDRkMDE1YmJhMDguLjVhYTE4ZTRjYWY3YTU3NWRkNjQ1
ZDZmNmVkNzk3MjhhZjczYmQyNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suY3BwCkBAIC01OCw3ICs1OCw3IEBAIHN0YXRp
YyBib29sIGlzQnJhbmNoKE9wY29kZUlEIG9wY29kZUlEKQogICAgIGNhc2Ugb3Bfc3dpdGNoX2lt
bToKICAgICBjYXNlIG9wX3N3aXRjaF9jaGFyOgogICAgIGNhc2Ugb3Bfc3dpdGNoX3N0cmluZzoK
LSAgICBjYXNlIG9wX3NhdmU6CisgICAgY2FzZSBvcF9zYXZlX2hpbnQ6CiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbiBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgppbmRleCAwNTNiOGRj
OWI4NjRmMWI4NmI0Y2VjN2FhNjAxZjdjZTJmMDNmMmU0Li4wOGFhYzEyMjU5YzY4ZGEwZTFhYmM5
MDkwYmU1NGM5NTVmYjMzMDA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlTGlzdC5qc29uCkBAIC0xNiw2ICsxNiw3IEBACiAgICAgICAgICAgICB7ICJu
YW1lIiA6ICJvcF9uZXdfYXJyYXlfd2l0aF9zaXplIiwgImxlbmd0aCIgOiA0IH0sCiAgICAgICAg
ICAgICB7ICJuYW1lIiA6ICJvcF9uZXdfYXJyYXlfYnVmZmVyIiwgImxlbmd0aCIgOiA1IH0sCiAg
ICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXdfcmVnZXhwIiwgImxlbmd0aCIgOiAzIH0sCisg
ICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXdfZ2VuZXJhdG9yX2ZyYW1lIiwgImxlbmd0aCIg
OiAzIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9tb3YiLCAibGVuZ3RoIiA6IDMgfSwK
ICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX25vdCIsICJsZW5ndGgiIDogMyB9LAogICAgICAg
ICAgICAgeyAibmFtZSIgOiAib3BfZXEiLCAibGVuZ3RoIiA6IDQgfSwKQEAgLTEzNCw3ICsxMzUs
MTEgQEAKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2NvcHlfcmVzdCIsICJsZW5ndGgiOiA0
IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9nZXRfcmVzdF9sZW5ndGgiLCAibGVuZ3Ro
IjogMyB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3Bfc2F2ZSIsICJsZW5ndGgiIDogNCB9
LAotICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfcmVzdW1lIiwgImxlbmd0aCIgOiAzIH0sCisg
ICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9zYXZlX2hpbnQiLCAibGVuZ3RoIiA6IDQgfSwKKyAg
ICAgICAgICAgIHsgIm5hbWUiIDogIm9wX3Jlc3VtZV9oaW50IiwgImxlbmd0aCIgOiA0IH0sCisg
ICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9yZXN1bWVfZnJvbV9nZW5lcmF0b3JfZnJhbWUiLCAi
bGVuZ3RoIiA6IDQgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2NsZWFyX2dlbmVyYXRv
cl9mcmFtZSIsICJsZW5ndGgiIDogMiB9LAorICAgICAgICAgICAgeyAibmFtZSIgOiAib3Bfbm9w
IiwgImxlbmd0aCIgOiAxIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF93YXRjaGRvZyIs
ICJsZW5ndGgiIDogMSB9CiAgICAgICAgIF0KICAgICB9LApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaAppbmRleCA4MDExMTRjMzcyYTI3N2Y2ZTE3
NzA5YjkwYmUyMDdjOGY5OWJlODJkLi5kYWVmODFjMjY5YmI1NDE1NGVhNmI2ZGM4MzhhZmM2OWNl
ZTcyYzk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVVc2VEZWYuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVV
c2VEZWYuaApAQCAtNTUsNiArNTUsOCBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZz
ZXQoCiAgICAgY2FzZSBvcF9jcmVhdGVfb3V0X29mX2JhbmRfYXJndW1lbnRzOgogICAgIGNhc2Ug
b3BfZ2V0X3Jlc3RfbGVuZ3RoOgogICAgIGNhc2Ugb3Bfd2F0Y2hkb2c6CisgICAgY2FzZSBvcF9u
ZXdfZ2VuZXJhdG9yX2ZyYW1lOgorICAgIGNhc2Ugb3Bfbm9wOgogICAgICAgICByZXR1cm47CiAg
ICAgY2FzZSBvcF9hc3NlcnQ6CiAgICAgY2FzZSBvcF9nZXRfc2NvcGU6CkBAIC03Miw3ICs3NCw4
IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCgKICAgICBjYXNlIG9wX2puZXFf
bnVsbDoKICAgICBjYXNlIG9wX2RlYzoKICAgICBjYXNlIG9wX2luYzoKLSAgICBjYXNlIG9wX3Jl
c3VtZTogeworICAgIGNhc2Ugb3BfcmVzdW1lX2hpbnQ6CisgICAgY2FzZSBvcF9jbGVhcl9nZW5l
cmF0b3JfZnJhbWU6IHsKICAgICAgICAgQVNTRVJUKG9wY29kZUxlbmd0aHNbb3Bjb2RlSURdID49
IDEpOwogICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBp
bnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOwogICAgICAgICByZXR1cm47CkBAIC0xNjUsNyArMTY4
LDggQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAogICAgIGNhc2Ugb3BfbmV3
X2dlbmVyYXRvcl9mdW5jOgogICAgIGNhc2Ugb3BfZ2V0X3BhcmVudF9zY29wZToKICAgICBjYXNl
IG9wX2NyZWF0ZV9zY29wZWRfYXJndW1lbnRzOgotICAgIGNhc2Ugb3BfZ2V0X2Zyb21fYXJndW1l
bnRzOiB7CisgICAgY2FzZSBvcF9nZXRfZnJvbV9hcmd1bWVudHM6CisgICAgY2FzZSBvcF9yZXN1
bWVfZnJvbV9nZW5lcmF0b3JfZnJhbWU6IHsKICAgICAgICAgQVNTRVJUKG9wY29kZUxlbmd0aHNb
b3Bjb2RlSURdID49IDIpOwogICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24s
IG9wY29kZUlELCBpbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpOwogICAgICAgICByZXR1cm47CkBA
IC0yNTAsNyArMjU0LDcgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAogICAg
ICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgbGFzdEFy
ZyArIGkpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGNhc2Ugb3Bfc2F2ZTogeworICAg
IGNhc2Ugb3Bfc2F2ZV9oaW50OiB7CiAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVj
dGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CiAgICAgICAgIHVuc2ln
bmVkIG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldCA9IGJ5dGVjb2RlT2Zmc2V0ICsgaW5zdHJ1Y3Rp
b25bM10udS5vcGVyYW5kOwogICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIG1lcmdlUG9pbnRC
bG9jayA9IG51bGxwdHI7CkBAIC0yNjYsNiArMjcwLDE1IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JC
eXRlY29kZU9mZnNldCgKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CisgICAg
Y2FzZSBvcF9zYXZlOiB7CisgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwg
b3Bjb2RlSUQsIGluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CisgICAgICAgIHVuc2lnbmVkIGxp
dmVDYWxsZWVMb2NhbHNJbmRleCA9IGluc3RydWN0aW9uWzJdLnUudW5zaWduZWRWYWx1ZTsKKyAg
ICAgICAgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZW5lc3MgPSBjb2RlQmxvY2stPmxpdmVDYWxs
ZWVMb2NhbHNBdFlpZWxkKGxpdmVDYWxsZWVMb2NhbHNJbmRleCk7CisgICAgICAgIGxpdmVuZXNz
LmZvckVhY2hTZXRCaXQoWyZdKHVuc2lnbmVkIGxvY2FsKSB7CisgICAgICAgICAgICBmdW5jdG9y
KGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2Nh
bChsb2NhbCkub2Zmc2V0KCkpOworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
ICAgICBkZWZhdWx0OgogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
ICAgICBicmVhazsKQEAgLTI4OSw2ICszMDIsNyBAQCB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNv
ZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvYwog
ICAgIGNhc2Ugb3BfdGhyb3c6CiAgICAgY2FzZSBvcF90aHJvd19zdGF0aWNfZXJyb3I6CiAgICAg
Y2FzZSBvcF9zYXZlOgorICAgIGNhc2Ugb3Bfc2F2ZV9oaW50OgogICAgIGNhc2Ugb3BfYXNzZXJ0
OgogICAgIGNhc2Ugb3BfZGVidWc6CiAgICAgY2FzZSBvcF9yZXQ6CkBAIC0zMjMsNiArMzM3LDgg
QEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2Nr
LCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2MKICAgICBjYXNlIG9wX3Byb2ZpbGVfY29udHJvbF9m
bG93OgogICAgIGNhc2Ugb3BfcHV0X3RvX2FyZ3VtZW50czoKICAgICBjYXNlIG9wX3dhdGNoZG9n
OgorICAgIGNhc2Ugb3BfY2xlYXJfZ2VuZXJhdG9yX2ZyYW1lOgorICAgIGNhc2Ugb3Bfbm9wOgog
I2RlZmluZSBMTElOVF9IRUxQRVJfT1BDT0RFUyhvcGNvZGUsIGxlbmd0aCkgY2FzZSBvcGNvZGU6
CiAgICAgICAgIEZPUl9FQUNIX0xMSU5UX09QQ09ERV9FWFRFTlNJT04oTExJTlRfSEVMUEVSX09Q
Q09ERVMpOwogI3VuZGVmIExMSU5UX0hFTFBFUl9PUENPREVTCkBAIC00MTUsNyArNDMxLDkgQEAg
dm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBC
eXRlY29kZUJhc2ljQmxvY2sqIGJsb2MKICAgICBjYXNlIG9wX2RlbF9ieV92YWw6CiAgICAgY2Fz
ZSBvcF91bnNpZ25lZDoKICAgICBjYXNlIG9wX2dldF9mcm9tX2FyZ3VtZW50czogCi0gICAgY2Fz
ZSBvcF9nZXRfcmVzdF9sZW5ndGg6IHsKKyAgICBjYXNlIG9wX2dldF9yZXN0X2xlbmd0aDoKKyAg
ICBjYXNlIG9wX25ld19nZW5lcmF0b3JfZnJhbWU6CisgICAgY2FzZSBvcF9yZXN1bWVfZnJvbV9n
ZW5lcmF0b3JfZnJhbWU6IHsKICAgICAgICAgQVNTRVJUKG9wY29kZUxlbmd0aHNbb3Bjb2RlSURd
ID4gMSk7CiAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQs
IGluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CiAgICAgICAgIHJldHVybjsKQEAgLTQzMSw3ICs0
NDksNyBAQCB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2Rl
QmxvY2ssIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvYwogICAgICAgICAgICAgZnVuY3Rvcihjb2Rl
QmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaSku
b2Zmc2V0KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGNhc2Ugb3BfcmVzdW1lOiB7
CisgICAgY2FzZSBvcF9yZXN1bWVfaGludDogewogICAgICAgICBSRUxFQVNFX0FTU0VSVChibG9j
ay0+c3VjY2Vzc29ycygpLnNpemUoKSA9PSAxKTsKICAgICAgICAgYmxvY2stPnN1Y2Nlc3NvcnMo
KVswXS0+aW4oKS5mb3JFYWNoU2V0Qml0KFsmXSh1bnNpZ25lZCBsb2NhbCkgewogICAgICAgICAg
ICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgdmlydHVhbFJlZ2lz
dGVyRm9yTG9jYWwobG9jYWwpLm9mZnNldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5jcHAKaW5kZXggNTkwNWU5MTgzYzhmMTI2NjRlMmJhM2RkMjlhNWM0
NjU2NzY4ZGMwMy4uZGEzZTU4ZDAxNmJkYmUwZmY2NzcxYjBjMmZiYWI5MTgyNGI2NTZlMCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTE1NTYs
MjcgKzE1NTYsNjMgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZSgKICAgICAgICAgICAg
IG91dC5wcmludGYoIiVzLCAlZCIsIGRlYnVnSG9va05hbWUoZGVidWdIb29rSUQpLCBoYXNCcmVh
a3BvaW50RmxhZyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBjYXNl
IG9wX3NhdmU6IHsKLSAgICAgICAgICAgIGludCBnZW5lcmF0b3IgPSAoKytpdCktPnUub3BlcmFu
ZDsKKyAgICAgICAgY2FzZSBvcF9zYXZlX2hpbnQ6IHsKKyAgICAgICAgICAgIGludCBmcmFtZSA9
ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fs
c0luZGV4ID0gKCsraXQpLT51LnVuc2lnbmVkVmFsdWU7CiAgICAgICAgICAgICBpbnQgb2Zmc2V0
ID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBjb25zdCBGYXN0Qml0VmVjdG9yJiBs
aXZlbmVzcyA9IG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGRbbGl2ZUNhbGxl
ZUxvY2Fsc0luZGV4XTsKICAgICAgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMs
IGxvY2F0aW9uLCBpdCwgInNhdmUiKTsKLSAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAiLCBy
ZWdpc3Rlck5hbWUoZ2VuZXJhdG9yKS5kYXRhKCkpOworICAgICAgICAgICAgb3V0LnByaW50Zigi
JXMsICIsIHJlZ2lzdGVyTmFtZShmcmFtZSkuZGF0YSgpKTsKICAgICAgICAgICAgIGxpdmVuZXNz
LmR1bXAob3V0KTsKICAgICAgICAgICAgIG91dC5wcmludGYoIihAbGl2ZSUxdSksICVkKC0+JWQp
IiwgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4LCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIGNhc2Ugb3BfcmVzdW1lOiB7Ci0g
ICAgICAgICAgICBpbnQgZ2VuZXJhdG9yID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIGNh
c2Ugb3Bfc2F2ZTogeworICAgICAgICAgICAgaW50IGZyYW1lID0gKCsraXQpLT51Lm9wZXJhbmQ7
CiAgICAgICAgICAgICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSAoKytpdCktPnUu
dW5zaWduZWRWYWx1ZTsKKyAgICAgICAgICAgICsraXQ7IC8vIGRpc2NhcmQgb2Zmc2V0LgogICAg
ICAgICAgICAgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZW5lc3MgPSBtX3JhcmVEYXRhLT5tX2xp
dmVDYWxsZWVMb2NhbHNBdFlpZWxkW2xpdmVDYWxsZWVMb2NhbHNJbmRleF07Ci0gICAgICAgICAg
ICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJyZXN1bWUiKTsK
LSAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAiLCByZWdpc3Rlck5hbWUoZ2VuZXJhdG9yKS5k
YXRhKCkpOworICAgICAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRp
b24sIGl0LCAic2F2ZSIpOworICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICIsIHJlZ2lzdGVy
TmFtZShmcmFtZSkuZGF0YSgpKTsKICAgICAgICAgICAgIGxpdmVuZXNzLmR1bXAob3V0KTsKICAg
ICAgICAgICAgIG91dC5wcmludGYoIihAbGl2ZSUxdSkiLCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXgp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9yZXN1bWVf
aGludDogeworICAgICAgICAgICAgaW50IGZyYW1lID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAg
ICAgICAgICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSAoKytpdCktPnUudW5zaWdu
ZWRWYWx1ZTsKKyAgICAgICAgICAgIHVuc2lnbmVkIG1heExpdmVDYWxsZWVzID0gKCsraXQpLT51
LnVuc2lnbmVkVmFsdWU7CisgICAgICAgICAgICBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlbmVz
cyA9IG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGRbbGl2ZUNhbGxlZUxvY2Fs
c0luZGV4XTsKKyAgICAgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0
aW9uLCBpdCwgInJlc3VtZSIpOworICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICIsIHJlZ2lz
dGVyTmFtZShmcmFtZSkuZGF0YSgpKTsKKyAgICAgICAgICAgIGxpdmVuZXNzLmR1bXAob3V0KTsK
KyAgICAgICAgICAgIG91dC5wcmludGYoIihAbGl2ZSUxdSksICV1IiwgbGl2ZUNhbGxlZUxvY2Fs
c0luZGV4LCBtYXhMaXZlQ2FsbGVlcyk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor
ICAgICAgICBjYXNlIG9wX3Jlc3VtZV9mcm9tX2dlbmVyYXRvcl9mcmFtZTogeworICAgICAgICAg
ICAgaW50IGRzdCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgaW50IGZyYW1lID0g
KCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICB1bnNpZ25lZCBpbmRleCA9ICgrK2l0KS0+
dS51bnNpZ25lZFZhbHVlOworICAgICAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhl
YywgbG9jYXRpb24sIGl0LCAicmVzdW1lX2Zyb21fZ2VuZXJhdG9yX2ZyYW1lIik7CisgICAgICAg
ICAgICBvdXQucHJpbnRmKCIlcywgJXMsICV1IiwgcmVnaXN0ZXJOYW1lKGRzdCkuZGF0YSgpLCBy
ZWdpc3Rlck5hbWUoZnJhbWUpLmRhdGEoKSwgaW5kZXgpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9jbGVhcl9nZW5lcmF0b3JfZnJhbWU6IHsKKyAgICAg
ICAgICAgIGludCBmcmFtZSA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgcHJpbnRM
b2NhdGlvbk9wQW5kUmVnaXN0ZXJPcGVyYW5kKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAiY2xl
YXJfZ2VuZXJhdG9yX2ZyYW1lIiwgZnJhbWUpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KKyAgICAgICAgY2FzZSBvcF9uZXdfZ2VuZXJhdG9yX2ZyYW1lOiB7CisgICAgICAgICAgICBp
bnQgZHN0ID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICB1bnNpZ25lZCBnZW5lcmF0
b3JMb2NhbHNTaXplID0gKCsraXQpLT51LnVuc2lnbmVkVmFsdWU7CisgICAgICAgICAgICBwcmlu
dExvY2F0aW9uT3BBbmRSZWdpc3Rlck9wZXJhbmQob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJu
ZXdfZ2VuZXJhdG9yX2ZyYW1lIiwgZHN0KTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIiAldSIs
IGdlbmVyYXRvckxvY2Fsc1NpemUpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAg
ICAgICAgY2FzZSBvcF9ub3A6IHsKKyAgICAgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQs
IGV4ZWMsIGxvY2F0aW9uLCBpdCwgIm5vcCIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KICAgICAgICAgY2FzZSBvcF9hc3NlcnQ6IHsKICAgICAgICAgICAgIGludCBjb25kaXRpb24g
PSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBsaW5lID0gKCsraXQpLT51Lm9w
ZXJhbmQ7CkBAIC0xODQ3LDYgKzE4ODMsMTIgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0
aW9uKFZNJiB2bSwgQ29weVBhcnNlZEJsb2NrVGFnLCBDb2RlQmxvY2smIG90aGVyKQogICAgIHNl
dE51bVBhcmFtZXRlcnModW5saW5rZWRDb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSk7CiB9CiAK
K3N0cnVjdCBHZW5lcmF0b3JQb2ludHMgeworICAgIHNpemVfdCBzYXZlUG9pbnQ7CisgICAgc2l6
ZV90IG1lcmdlUG9pbnQ7CisgICAgc2l6ZV90IHJlc3VtZVBvaW50OworfTsKKwogdm9pZCBDb2Rl
QmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVj
dXRhYmxlLCBVbmxpbmtlZENvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2ssCiAgICAgSlNTY29w
ZSogc2NvcGUpCiB7CkBAIC0xOTgwLDkgKzIwMjIsMTAgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmlz
aENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxp
bmsKICAgICBIYXNoU2V0PEpTTW9kdWxlRW52aXJvbm1lbnQqPiBzdHJvbmdseVJlZmVyZW5jZWRN
b2R1bGVFbnZpcm9ubWVudHM7CiAKICAgICAvLyBCb29ra2VlcCB0aGUgbWVyZ2UgcG9pbnQgYnl0
ZWNvZGUgb2Zmc2V0cy4KLSAgICBWZWN0b3I8c2l6ZV90PiBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZz
ZXRzOworICAgIFZlY3RvcjxHZW5lcmF0b3JQb2ludHM+IGdlbmVyYXRvclBvaW50c1ZlY3RvcjsK
IAogICAgIFJlZkNvdW50ZWRBcnJheTxJbnN0cnVjdGlvbj4gaW5zdHJ1Y3Rpb25zKGluc3RydWN0
aW9uQ291bnQpOworICAgIHVuc2lnbmVkIG5ld0dlbmVyYXRvckZyYW1lSW5zdHJ1Y3Rpb25PZmZz
ZXQgPSAwOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgIWluc3RydWN0aW9uUmVhZGVyLmF0
RW5kKCk7ICkgewogICAgICAgICBjb25zdCBVbmxpbmtlZEluc3RydWN0aW9uKiBwYyA9IGluc3Ry
dWN0aW9uUmVhZGVyLm5leHQoKTsKQEAgLTIyNzAsMTIgKzIzMTMsMjYgQEAgdm9pZCBDb2RlQmxv
Y2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRh
YmxlLCBVbmxpbmsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKLSAgICAgICAgY2Fz
ZSBvcF9zYXZlOiB7CisgICAgICAgIGNhc2Ugb3Bfc2F2ZV9oaW50OiB7CiAgICAgICAgICAgICB1
bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSBwY1syXS51LmluZGV4OwogICAgICAgICAg
ICAgaW50IG9mZnNldCA9IHBjWzNdLnUub3BlcmFuZDsKLSAgICAgICAgICAgIGlmIChsaXZlQ2Fs
bGVlTG9jYWxzSW5kZXggPj0gbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0cy5zaXplKCkpCi0gICAg
ICAgICAgICAgICAgbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0cy5yZXNpemUobGl2ZUNhbGxlZUxv
Y2Fsc0luZGV4ICsgMSk7Ci0gICAgICAgICAgICBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXRzW2xp
dmVDYWxsZWVMb2NhbHNJbmRleF0gPSBpICsgb2Zmc2V0OworICAgICAgICAgICAgaWYgKGxpdmVD
YWxsZWVMb2NhbHNJbmRleCA+PSBnZW5lcmF0b3JQb2ludHNWZWN0b3Iuc2l6ZSgpKQorICAgICAg
ICAgICAgICAgIGdlbmVyYXRvclBvaW50c1ZlY3Rvci5yZXNpemUobGl2ZUNhbGxlZUxvY2Fsc0lu
ZGV4ICsgMSk7CisgICAgICAgICAgICBnZW5lcmF0b3JQb2ludHNWZWN0b3JbbGl2ZUNhbGxlZUxv
Y2Fsc0luZGV4XS5zYXZlUG9pbnQgPSBpOworICAgICAgICAgICAgZ2VuZXJhdG9yUG9pbnRzVmVj
dG9yW2xpdmVDYWxsZWVMb2NhbHNJbmRleF0ubWVyZ2VQb2ludCA9IGkgKyBvZmZzZXQ7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2Ugb3BfcmVzdW1lX2hpbnQ6
IHsKKyAgICAgICAgICAgIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9IHBjWzJdLnUu
aW5kZXg7CisgICAgICAgICAgICBpZiAobGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID49IGdlbmVyYXRv
clBvaW50c1ZlY3Rvci5zaXplKCkpCisgICAgICAgICAgICAgICAgZ2VuZXJhdG9yUG9pbnRzVmVj
dG9yLnJlc2l6ZShsaXZlQ2FsbGVlTG9jYWxzSW5kZXggKyAxKTsKKyAgICAgICAgICAgIGdlbmVy
YXRvclBvaW50c1ZlY3RvcltsaXZlQ2FsbGVlTG9jYWxzSW5kZXhdLnJlc3VtZVBvaW50ID0gaTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBvcF9uZXdfZ2Vu
ZXJhdG9yX2ZyYW1lOiB7CisgICAgICAgICAgICBuZXdHZW5lcmF0b3JGcmFtZUluc3RydWN0aW9u
T2Zmc2V0ID0gaTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKQEAgLTIyODUsMjUg
KzIzNDIsNjQgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0
RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICAgICAgaSArPSBvcExlbmd0
aDsKICAgICB9CiAKLSAgICBpZiAodm0uY29udHJvbEZsb3dQcm9maWxlcigpKQotICAgICAgICBp
bnNlcnRCYXNpY0Jsb2NrQm91bmRhcmllc0ZvckNvbnRyb2xGbG93UHJvZmlsZXIoaW5zdHJ1Y3Rp
b25zKTsKLQogICAgIG1faW5zdHJ1Y3Rpb25zID0gV1RGTW92ZShpbnN0cnVjdGlvbnMpOwogCi0g
ICAgLy8gUGVyZm9ybSBieXRlY29kZSBsaXZlbmVzcyBhbmFseXNpcyB0byBkZXRlcm1pbmUgd2hp
Y2ggbG9jYWxzIGFyZSBsaXZlIGFuZCBzaG91bGQgYmUgcmVzdW1lZCB3aGVuIGV4ZWN1dGluZyBv
cF9yZXN1bWUuCisgICAgLy8gUGVyZm9ybSBieXRlY29kZSBsaXZlbmVzcyBhbmFseXNpcyB0byBk
ZXRlcm1pbmUgd2hpY2ggbG9jYWxzIGFyZSBsaXZlIGFuZCBzaG91bGQgYmUgcmVzdW1lZCB3aGVu
IGV4ZWN1dGluZyBvcF9yZXN1bWVfaGludC4KICAgICBpZiAodW5saW5rZWRDb2RlQmxvY2stPnBh
cnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yQm9keU1vZGUpIHsKLSAgICAg
ICAgaWYgKHNpemVfdCBjb3VudCA9IG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldHMuc2l6ZSgpKSB7
CisgICAgICAgIHVuc2lnbmVkIG1heEdlbmVyYXRvckxvY2Fsc1NpemUgPSAwOworICAgICAgICBp
ZiAoc2l6ZV90IGNvdW50ID0gZ2VuZXJhdG9yUG9pbnRzVmVjdG9yLnNpemUoKSkgewogICAgICAg
ICAgICAgY3JlYXRlUmFyZURhdGFJZk5lY2Vzc2FyeSgpOwotICAgICAgICAgICAgQnl0ZWNvZGVM
aXZlbmVzc0FuYWx5c2lzIGxpdmVuZXNzKHRoaXMpOwogICAgICAgICAgICAgbV9yYXJlRGF0YS0+
bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZC5ncm93KGNvdW50KTsKLSAgICAgICAgICAgIHNpemVf
dCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSAwOwotICAgICAgICAgICAgZm9yIChzaXplX3QgYnl0
ZWNvZGVPZmZzZXQgOiBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXRzKSB7Ci0gICAgICAgICAgICAg
ICAgbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZFtsaXZlQ2FsbGVlTG9jYWxz
SW5kZXhdID0gbGl2ZW5lc3MuZ2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29kZU9mZnNldChieXRlY29k
ZU9mZnNldCk7Ci0gICAgICAgICAgICAgICAgKytsaXZlQ2FsbGVlTG9jYWxzSW5kZXg7CisKKyAg
ICAgICAgICAgIC8vIEZpcnN0LCBwZXJmb3JtIGJ5dGVjb2RlIHVzZS1kZWYgYW5hbHlzaXMgb250
byB0aGUgY3VycmVudCBieXRlY29kZSBzdHJlYW0gYW5kIGNhbGN1bGF0ZSBsaXZlIGxvY2FscyBh
dCB0aGUgbWVyZ2UgcG9pbnRzLgorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIEJ5dGVj
b2RlTGl2ZW5lc3NBbmFseXNpcyBsaXZlbmVzcyh0aGlzKTsKKyAgICAgICAgICAgICAgICBmb3Ig
KHNpemVfdCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSAwOyBsaXZlQ2FsbGVlTG9jYWxzSW5kZXgg
PCBnZW5lcmF0b3JQb2ludHNWZWN0b3Iuc2l6ZSgpOyArK2xpdmVDYWxsZWVMb2NhbHNJbmRleCkg
eworICAgICAgICAgICAgICAgICAgICBjb25zdCBHZW5lcmF0b3JQb2ludHMmIHBvaW50cyA9IGdl
bmVyYXRvclBvaW50c1ZlY3RvcltsaXZlQ2FsbGVlTG9jYWxzSW5kZXhdOworICAgICAgICAgICAg
ICAgICAgICBzaXplX3QgbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0ID0gcG9pbnRzLm1lcmdlUG9p
bnQ7CisgICAgICAgICAgICAgICAgICAgIEZhc3RCaXRWZWN0b3IgbGl2ZW5lc3NWZWN0b3IgPSBs
aXZlbmVzcy5nZXRMaXZlbmVzc0luZm9BdEJ5dGVjb2RlT2Zmc2V0KG1lcmdlUG9pbnRCeXRlY29k
ZU9mZnNldCk7CisgICAgICAgICAgICAgICAgICAgIG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxv
Y2Fsc0F0WWllbGRbbGl2ZUNhbGxlZUxvY2Fsc0luZGV4XSA9IGxpdmVuZXNzVmVjdG9yOworICAg
ICAgICAgICAgICAgICAgICBtYXhHZW5lcmF0b3JMb2NhbHNTaXplID0gc3RkOjptYXg8dW5zaWdu
ZWQ+KG1heEdlbmVyYXRvckxvY2Fsc1NpemUsIGxpdmVuZXNzVmVjdG9yLmJpdENvdW50KCkpOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlbiwg
cmV3cml0ZSBieXRlY29kZXMgYmFzZWQgb24gdGhlIGNhbGN1bGF0ZWQgbGl2ZW5lc3MuCisgICAg
ICAgICAgICAvLyBEbyBub3QgcmV3cml0ZSBieXRlY29kZXMgd2hpbGUgY29udGludWluZyBsaXZl
bmVzcyBhbmFseXNpcy4KKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGxpdmVDYWxsZWVMb2NhbHNJ
bmRleCA9IDA7IGxpdmVDYWxsZWVMb2NhbHNJbmRleCA8IGdlbmVyYXRvclBvaW50c1ZlY3Rvci5z
aXplKCk7ICsrbGl2ZUNhbGxlZUxvY2Fsc0luZGV4KSB7CisgICAgICAgICAgICAgICAgY29uc3Qg
R2VuZXJhdG9yUG9pbnRzJiBwb2ludHMgPSBnZW5lcmF0b3JQb2ludHNWZWN0b3JbbGl2ZUNhbGxl
ZUxvY2Fsc0luZGV4XTsKKyAgICAgICAgICAgICAgICBzaXplX3Qgc2F2ZVBvaW50Qnl0ZWNvZGVP
ZmZzZXQgPSBwb2ludHMuc2F2ZVBvaW50OworICAgICAgICAgICAgICAgIHNpemVfdCByZXN1bWVQ
b2ludEJ5dGVjb2RlT2Zmc2V0ID0gcG9pbnRzLnJlc3VtZVBvaW50OworCisgICAgICAgICAgICAg
ICAgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZW5lc3NWZWN0b3IgPSBtX3JhcmVEYXRhLT5tX2xp
dmVDYWxsZWVMb2NhbHNBdFlpZWxkW2xpdmVDYWxsZWVMb2NhbHNJbmRleF07CisKKyAgICAgICAg
ICAgICAgICAvLyBQYXRjaCBvcF9yZXN1bWVfaGludCB3aXRoIHJlc3VtZV9mcm9tX2dlbmVyYXRv
cl9mcmFtZSBvcGVyYXRpb25zLgorICAgICAgICAgICAgICAgIGludCBnZW5lcmF0b3JMb2NhbElu
ZGV4ID0gbV9pbnN0cnVjdGlvbnNbcmVzdW1lUG9pbnRCeXRlY29kZU9mZnNldCArIDFdLnUub3Bl
cmFuZDsKKyAgICAgICAgICAgICAgICBpZiAoIWxpdmVuZXNzVmVjdG9yLmJpdENvdW50KCkpIHsK
KyAgICAgICAgICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCA0OyArK2kpCisgICAg
ICAgICAgICAgICAgICAgICAgICBtX2luc3RydWN0aW9uc1tyZXN1bWVQb2ludEJ5dGVjb2RlT2Zm
c2V0ICsgaV0gPSB2bS5pbnRlcnByZXRlci0+Z2V0T3Bjb2RlKG9wX25vcCk7CisgICAgICAgICAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGkgPSAwOworICAgICAg
ICAgICAgICAgICAgICBsaXZlbmVzc1ZlY3Rvci5mb3JFYWNoU2V0Qml0KFsmXSh1bnNpZ25lZCBs
b2NhbCkgeworICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGluZGV4ID0gaSsrOworICAg
ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG9mZnNldCA9IHJlc3VtZVBvaW50Qnl0ZWNvZGVP
ZmZzZXQgKyBpbmRleCAqIDQ7CisgICAgICAgICAgICAgICAgICAgICAgICBtX2luc3RydWN0aW9u
c1tvZmZzZXRdID0gdm0uaW50ZXJwcmV0ZXItPmdldE9wY29kZShvcF9yZXN1bWVfZnJvbV9nZW5l
cmF0b3JfZnJhbWUpOworICAgICAgICAgICAgICAgICAgICAgICAgbV9pbnN0cnVjdGlvbnNbb2Zm
c2V0ICsgMV0udS5vcGVyYW5kID0gdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwobG9jYWwpLm9mZnNl
dCgpOworICAgICAgICAgICAgICAgICAgICAgICAgbV9pbnN0cnVjdGlvbnNbb2Zmc2V0ICsgMl0u
dS5vcGVyYW5kID0gZ2VuZXJhdG9yTG9jYWxJbmRleDsKKyAgICAgICAgICAgICAgICAgICAgICAg
IG1faW5zdHJ1Y3Rpb25zW29mZnNldCArIDNdLnUudW5zaWduZWRWYWx1ZSA9IGluZGV4OworICAg
ICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAg
ICAvLyBQYXRjaCBvcF9zYXZlX2hpbnQgd2l0aCBvcF9zYXZlLgorICAgICAgICAgICAgICAgIG1f
aW5zdHJ1Y3Rpb25zW3NhdmVQb2ludEJ5dGVjb2RlT2Zmc2V0XSA9IHZtLmludGVycHJldGVyLT5n
ZXRPcGNvZGUob3Bfc2F2ZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KKyAgICAgICAgLy8g
RmlsbCBvcF9uZXdfZ2VuZXJhdG9yX2ZyYW1lJ3Mgc2l6ZS4KKyAgICAgICAgbV9pbnN0cnVjdGlv
bnNbbmV3R2VuZXJhdG9yRnJhbWVJbnN0cnVjdGlvbk9mZnNldCArIDJdLnUudW5zaWduZWRWYWx1
ZSA9IG1heEdlbmVyYXRvckxvY2Fsc1NpemU7CiAgICAgfQogCisgICAgaWYgKHZtLmNvbnRyb2xG
bG93UHJvZmlsZXIoKSkKKyAgICAgICAgaW5zZXJ0QmFzaWNCbG9ja0JvdW5kYXJpZXNGb3JDb250
cm9sRmxvd1Byb2ZpbGVyKG1faW5zdHJ1Y3Rpb25zKTsKKwogICAgIC8vIFNldCBvcHRpbWl6YXRp
b24gdGhyZXNob2xkcyBvbmx5IGFmdGVyIG1faW5zdHJ1Y3Rpb25zIGlzIGluaXRpYWxpemVkLCBz
aW5jZSB0aGVzZQogICAgIC8vIHJlbHkgb24gdGhlIGluc3RydWN0aW9uIGNvdW50IChhbmQgYXJl
IGluIHRoZW9yeSBwZXJtaXR0ZWQgdG8gYWxzbyBpbnNwZWN0IHRoZQogICAgIC8vIGluc3RydWN0
aW9uIHN0cmVhbSB0byBtb3JlIGFjY3VyYXRlIGFzc2VzcyB0aGUgY29zdCBvZiB0aWVyLXVwKS4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRh
cmdldHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFy
Z2V0cy5jcHAKaW5kZXggZTJjYjAwMDQ4Mzc5NGJhOTJkNTEwZGNmNWZhOTk0ODg1YTIzZGMzZC4u
MDg0YmFiYzI2M2E1NTA0ODg1YWMwOTUwZmI0YWIzMTJlMWE1OWYzMyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5jcHAKQEAg
LTU0LDcgKzU0LDkgQEAgc3RhdGljIHZvaWQgZ2V0SnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNl
dChDb2RlQmxvY2sqIGNvZGVCbG9jaywgSW50ZXJwcmV0ZXIqIGkKICAgICBjYXNlIG9wX2pubGVz
c2VxOgogICAgIGNhc2Ugb3Bfam5ncmVhdGVyOgogICAgIGNhc2Ugb3Bfam5ncmVhdGVyZXE6Ci0g
ICAgY2FzZSBvcF9zYXZlOiAvLyBUaGUganVtcCBvZiBvcF9zYXZlIGlzIHB1cmVseSBmb3IgY2Fs
Y3VsYXRpbmcgbGl2ZW5lc3MuCisgICAgLy8gVGhlIGp1bXAgb2Ygb3Bfc2F2ZV9oaW50IGlzIHB1
cmVseSBmb3IgY2FsY3VsYXRpbmcgbGl2ZW5lc3MuCisgICAgLy8gV2hpbGUgb3Bfc2F2ZV9oaW50
IGhhcyBhIGp1bXAgZm9yIGxpdmVuZXNzIGFuYWx5c2lzLCBvcF9zYXZlIGRvZXMgbm90IGhhdmUg
YSBqdW1wLgorICAgIGNhc2Ugb3Bfc2F2ZV9oaW50OgogICAgICAgICBvdXQuYXBwZW5kKGJ5dGVj
b2RlT2Zmc2V0ICsgY3VycmVudFszXS51Lm9wZXJhbmQpOwogICAgICAgICBicmVhazsKICAgICBj
YXNlIG9wX3N3aXRjaF9pbW06CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IGQxNWUyMjQzNTI2NmZlMWFm
ZjNkNWY3OWExZGRhNzViOWJkYWYzZjMuLjBkYWVlYzYzZjZjMjM3MGQ1NjQ4MzAxMGMzMmI1Y2Nj
YTUwNmM0MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC0yNTcsNyArMjU3LDcgQEAgUGFyc2VyRXJy
b3IgQnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKCkKICAgICAgICAgLy8gICAgZnVuY3Rpb24g
KmdlbihhLCBiID0gaGVsbG8oKSkKICAgICAgICAgLy8gICAgewogICAgICAgICAvLyAgICAgICAg
cmV0dXJuIHsKLSAgICAgICAgLy8gICAgICAgICAgICBAZ2VuZXJhdG9yTmV4dDogZnVuY3Rpb24g
KEBnZW5lcmF0b3IsIEBnZW5lcmF0b3JTdGF0ZSwgQGdlbmVyYXRvclZhbHVlLCBAZ2VuZXJhdG9y
UmVzdW1lTW9kZSkKKyAgICAgICAgLy8gICAgICAgICAgICBAZ2VuZXJhdG9yTmV4dDogZnVuY3Rp
b24gKEBnZW5lcmF0b3IsIEBnZW5lcmF0b3JTdGF0ZSwgQGdlbmVyYXRvclZhbHVlLCBAZ2VuZXJh
dG9yUmVzdW1lTW9kZSwgQGdlbmVyYXRvckZyYW1lKQogICAgICAgICAvLyAgICAgICAgICAgIHsK
ICAgICAgICAgLy8gICAgICAgICAgICAgICAgYXJndW1lbnRzOyAgLy8gVGhpcyBgYXJndW1lbnRz
YCBzaG91bGQgcmVmZXJlbmNlIHRvIHRoZSBnZW4ncyBhcmd1bWVudHMuCiAgICAgICAgIC8vICAg
ICAgICAgICAgICAgIC4uLgpAQCAtNTM3LDYgKzUzNyw5IEBAIFBhcnNlckVycm9yIEJ5dGVjb2Rl
R2VuZXJhdG9yOjpnZW5lcmF0ZSgpCiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRv
ckJvZHlNb2RlOiB7CiAgICAgICAgIC8vIHx0aGlzfCBpcyBhbHJlYWR5IGZpbGxlZCBjb3JyZWN0
bHkgYmVmb3JlIGhlcmUuCiAgICAgICAgIGVtaXRMb2FkKG1fbmV3VGFyZ2V0UmVnaXN0ZXIsIGpz
VW5kZWZpbmVkKCkpOworCisgICAgICAgIGVtaXROZXdHZW5lcmF0b3JGcmFtZShnZW5lcmF0b3JG
cmFtZVJlZ2lzdGVyKCkpOworICAgICAgICBlbWl0UHV0QnlJZChnZW5lcmF0b3JSZWdpc3Rlcigp
LCBwcm9wZXJ0eU5hbWVzKCkuZ2VuZXJhdG9yRnJhbWVQcml2YXRlTmFtZSwgZ2VuZXJhdG9yRnJh
bWVSZWdpc3RlcigpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCkBAIC0yNzQ0LDYgKzI3NDcs
MTQgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdGdW5jdGlvbihSZWdp
c3RlcklEKiBkc3QsIEZ1bmN0aW9uTWV0YWRhdGEKICAgICByZXR1cm4gZHN0OwogfQogCitSZWdp
c3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0dlbmVyYXRvckZyYW1lKFJlZ2lzdGVy
SUQqIGRzdCkKK3sKKyAgICBlbWl0T3Bjb2RlKG9wX25ld19nZW5lcmF0b3JfZnJhbWUpOworICAg
IGluc3RydWN0aW9ucygpLmFwcGVuZChkc3QtPmluZGV4KCkpOworICAgIGluc3RydWN0aW9ucygp
LmFwcGVuZCgwKTsKKyAgICByZXR1cm4gZHN0OworfQorCiBSZWdpc3RlcklEKiBCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdENhbGwoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBmdW5jLCBFeHBl
Y3RlZEZ1bmN0aW9uIGV4cGVjdGVkRnVuY3Rpb24sIENhbGxBcmd1bWVudHMmIGNhbGxBcmd1bWVu
dHMsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRp
dm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCkKIHsKICAgICByZXR1cm4g
ZW1pdENhbGwob3BfY2FsbCwgZHN0LCBmdW5jLCBleHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1l
bnRzLCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQpOwpAQCAtNDE0NCw4ICs0MTU1LDggQEAg
dm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFlpZWxkUG9pbnQoUmVnaXN0ZXJJRCogYXJndW1l
bnQpCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0U2F2ZShMYWJlbCogbWVyZ2VQb2ludCwg
dW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4KQogewogICAgIHNpemVfdCBiZWdpbiA9IGlu
c3RydWN0aW9ucygpLnNpemUoKTsKLSAgICBlbWl0T3Bjb2RlKG9wX3NhdmUpOwotICAgIGluc3Ry
dWN0aW9ucygpLmFwcGVuZChtX2dlbmVyYXRvclJlZ2lzdGVyLT5pbmRleCgpKTsKKyAgICBlbWl0
T3Bjb2RlKG9wX3NhdmVfaGludCk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGdlbmVyYXRv
ckZyYW1lUmVnaXN0ZXIoKS0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGxp
dmVDYWxsZWVMb2NhbHNJbmRleCk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1lcmdlUG9p
bnQtPmJpbmQoYmVnaW4sIGluc3RydWN0aW9ucygpLnNpemUoKSkpOwogfQpAQCAtNDE1Myw5ICs0
MTY0LDMwIEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRTYXZlKExhYmVsKiBtZXJnZVBv
aW50LCB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0UmVzdW1lKExhYmVsKiBtZXJnZVBvaW50LCB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxz
SW5kZXgpCiB7CiAgICAgZW1pdEdlbmVyYXRvclN0YXRlTGFiZWwoKTsKLSAgICBlbWl0T3Bjb2Rl
KG9wX3Jlc3VtZSk7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fZ2VuZXJhdG9yUmVnaXN0
ZXItPmluZGV4KCkpOworCisgICAgcmVjbGFpbUZyZWVSZWdpc3RlcnMoKTsKKyAgICB1bnNpZ25l
ZCBtYXhMaXZlTG9jYWxzID0gMDsKKyAgICBmb3IgKGNvbnN0IFJlZ2lzdGVySUQmIHJlZyA6IG1f
Y2FsbGVlTG9jYWxzKSB7CisgICAgICAgIGlmIChyZWcucmVmQ291bnQoKSkKKyAgICAgICAgICAg
ICsrbWF4TGl2ZUxvY2FsczsKKyAgICB9CisKKyAgICAvLyBUaGlzIG9wX3Jlc3VtZV9oaW50IHdp
bGwgYmUgcmVwbGFjZWQgd2l0aCB0aGUgYWN0dWFsIG9wcy4KKyAgICBzdGF0aWNfYXNzZXJ0KE9Q
Q09ERV9MRU5HVEgob3BfcmVzdW1lX2hpbnQpID09IE9QQ09ERV9MRU5HVEgob3BfcmVzdW1lX2Zy
b21fZ2VuZXJhdG9yX2ZyYW1lKSwgIlRoZSBsZW5ndGggb2Ygb3BfcmVzdW1lX2hpbnQgc2hvdWxk
IGVxYXVhbCB0byBvbmUgb2Ygb3BfcmVzdW1lX2Zyb21fZ2VuZXJhdG9yX2ZyYW1lLiIpOworICAg
IGlmIChtYXhMaXZlTG9jYWxzKQorICAgICAgICBtYXhMaXZlTG9jYWxzIC09IDE7CisKKyAgICBl
bWl0T3Bjb2RlKG9wX3Jlc3VtZV9oaW50KTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZ2Vu
ZXJhdG9yRnJhbWVSZWdpc3RlcigpLT5pbmRleCgpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBl
bmQobGl2ZUNhbGxlZUxvY2Fsc0luZGV4KTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobWF4
TGl2ZUxvY2Fscyk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1heExpdmVMb2NhbHM7
ICsraSkgeworICAgICAgICAvLyBOb3Agc3BhY2UuIExhdGVyIHdlIHdpbGwgZmlsbCB0aGlzIHdp
dGggdGhlIGFjdHVhbCByZXN1bWUgb3BlcmF0aW9ucy4KKyAgICAgICAgZm9yICh1bnNpZ25lZCBq
ID0gMDsgaiA8IE9QQ09ERV9MRU5HVEgob3BfcmVzdW1lX2Zyb21fZ2VuZXJhdG9yX2ZyYW1lKTsg
KytqKQorICAgICAgICAgICAgZW1pdE9wY29kZShvcF9ub3ApOworICAgIH0KKyAgICBlbWl0T3Bj
b2RlKG9wX2NsZWFyX2dlbmVyYXRvcl9mcmFtZSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5k
KGdlbmVyYXRvckZyYW1lUmVnaXN0ZXIoKS0+aW5kZXgoKSk7CiAgICAgZW1pdExhYmVsKG1lcmdl
UG9pbnQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5kZXggN2QwYzIwYjZmNTE2YTE3ZTg5M2YxYmJhMDgw
M2MxMzMzZmZjOGQwZC4uM2QzMzQ3ODE1YWMzMGE4MmU2MjZlM2UwNzgwODFiZTJiM2U5YmUzZiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdl
bmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuaApAQCAtNTIyLDYgKzUyMiw3IEBACiAgICAgICAgIFJlZ2lzdGVySUQqIGVt
aXROZXdEZWZhdWx0Q29uc3RydWN0b3IoUmVnaXN0ZXJJRCogZHN0LCBDb25zdHJ1Y3RvcktpbmQs
IGNvbnN0IElkZW50aWZpZXImIG5hbWUpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0TmV3QXJy
b3dGdW5jdGlvbkV4cHJlc3Npb24oUmVnaXN0ZXJJRCosIEFycm93RnVuY0V4cHJOb2RlKik7CiAg
ICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdSZWdFeHAoUmVnaXN0ZXJJRCogZHN0LCBSZWdFeHAq
KTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdE5ld0dlbmVyYXRvckZyYW1lKFJlZ2lzdGVySUQq
IGRzdCk7CiAKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdE1vdmVMaW5rVGltZUNvbnN0YW50KFJl
Z2lzdGVySUQqIGRzdCwgTGlua1RpbWVDb25zdGFudCk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVt
aXRNb3ZlRW1wdHlWYWx1ZShSZWdpc3RlcklEKiBkc3QpOwpAQCAtNjg0LDYgKzY4NSw3IEBACiAg
ICAgICAgIFJlZ2lzdGVySUQqIGdlbmVyYXRvclN0YXRlUmVnaXN0ZXIoKSB7IHJldHVybiAmbV9w
YXJhbWV0ZXJzWzJdOyB9CiAgICAgICAgIFJlZ2lzdGVySUQqIGdlbmVyYXRvclZhbHVlUmVnaXN0
ZXIoKSB7IHJldHVybiAmbV9wYXJhbWV0ZXJzWzNdOyB9CiAgICAgICAgIFJlZ2lzdGVySUQqIGdl
bmVyYXRvclJlc3VtZU1vZGVSZWdpc3RlcigpIHsgcmV0dXJuICZtX3BhcmFtZXRlcnNbNF07IH0K
KyAgICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9yRnJhbWVSZWdpc3RlcigpIHsgcmV0dXJuICZt
X3BhcmFtZXRlcnNbNV07IH0KIAogICAgICAgICBDb2RlVHlwZSBjb2RlVHlwZSgpIGNvbnN0IHsg
cmV0dXJuIG1fY29kZVR5cGU7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdBYnN0cmFjdEhlYXAuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJz
dHJhY3RIZWFwLmgKaW5kZXggNGRlYzhmYTAzNzc2ZTAxZTZjZDM3NDYwNjU5Y2M1NjExNjIzOGM2
NS4uOWM4NmY2OTJiOGQzODVkOWViMjQ2OTdkNzkyNzlkZjZjZGY0NWNlNSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEhlYXAuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SGVhcC5oCkBAIC02OCw2ICs2OCw4IEBACiAg
ICAgbWFjcm8oU2NvcGVQcm9wZXJ0aWVzKSBcCiAgICAgbWFjcm8oVHlwZWRBcnJheVByb3BlcnRp
ZXMpIFwKICAgICBtYWNybyhIZWFwT2JqZWN0Q291bnQpIC8qIFVzZWQgdG8gcmVmbGVjdCB0aGUg
ZmFjdCB0aGF0IHNvbWUgYWxsb2NhdGlvbnMgcmV2ZWFsIG9iamVjdCBpZGVudGl0eSAqL1wKKyAg
ICBtYWNybyhHZW5lcmF0b3JMb2NhbHMpIFwKKyAgICBtYWNybyhHZW5lcmF0b3JMb2NhbENvdW50
KSBcCiAgICAgbWFjcm8oUmVnRXhwU3RhdGUpIFwKICAgICBtYWNybyhNYXRoRG90UmFuZG9tU3Rh
dGUpIFwKICAgICBtYWNybyhJbnRlcm5hbFN0YXRlKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKaW5kZXgg
OWVlYzYzY2ViMDcxYmMxNDg2YTAxMmMyODUwMWRiNjI0MjZiZGU3Yi4uNzZlMTczZWViYWRiN2Yy
YWU5ODkwMDVhMWJhNTViZTFhMWU5NDA2NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaApAQCAtMTY4Nyw2
ICsxNjg3LDEwIEBACiAgICAgY2FzZSBOZXdSZWdleHA6CiAgICAgICAgIGZvck5vZGUobm9kZSku
c2V0KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YyktPnJlZ0V4cFN0cnVjdHVyZSgpKTsKICAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIE5ld0dl
bmVyYXRvckZyYW1lOgorICAgICAgICBmb3JOb2RlKG5vZGUpLnNldChtX2dyYXBoLCBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5nZW5lcmF0b3JGcmFtZVN0
cnVjdHVyZSgpKTsKKyAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICBjYXNlIFRvVGhp
czogewogICAgICAgICBBYnN0cmFjdFZhbHVlJiBzb3VyY2UgPSBmb3JOb2RlKG5vZGUtPmNoaWxk
MSgpKTsKQEAgLTI1MTAsNiArMjUxNCwxNyBAQAogICAgICAgICBmb3JOb2RlKG5vZGUpLm1ha2VI
ZWFwVG9wKCk7CiAgICAgICAgIGJyZWFrOwogCisgICAgY2FzZSBTZXRHZW5lcmF0b3JMb2NhbDoK
KyAgICBjYXNlIFJlc2l6ZUdlbmVyYXRvckxvY2FsczoKKyAgICAgICAgYnJlYWs7CisKKyAgICBj
YXNlIEdldEdlbmVyYXRvckxvY2FsOiB7CisgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYXR0
ZW1wdCB0byBjb252ZXJ0IGl0IHRvIGNvbnN0YW50LgorICAgICAgICAvLyBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUzMTgzCisgICAgICAgIGZvck5vZGUobm9kZSku
bWFrZUhlYXBUb3AoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBGb3JjZU9T
UkV4aXQ6CiAgICAgY2FzZSBDaGVja0JhZENlbGw6CiAgICAgICAgIG1fc3RhdGUuc2V0SXNWYWxp
ZChmYWxzZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVD
b2RlUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJz
ZXIuY3BwCmluZGV4IDM2NDRhMmZkMTlhMGQ5YjNkZGE3YjA2OGEwMDQ5MGE1ODI2MjA4NmQuLjZh
ODNkYTFmZDI0NmNiOGI1ZWZkMzk0MDg3YzQ2NDdiNTc3ZWE5YzIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC0zNiw2ICszNiw3IEBA
CiAjaW5jbHVkZSAiREZHQXJyYXlNb2RlLmgiCiAjaW5jbHVkZSAiREZHQ2FwYWJpbGl0aWVzLmgi
CiAjaW5jbHVkZSAiREZHQ2xvYmJlcnNFeGl0U3RhdGUuaCIKKyNpbmNsdWRlICJERkdHZW5lcmF0
b3JMb2NhbERhdGEuaCIKICNpbmNsdWRlICJERkdHcmFwaC5oIgogI2luY2x1ZGUgIkRGR0pJVENv
ZGUuaCIKICNpbmNsdWRlICJHZXRCeUlkU3RhdHVzLmgiCkBAIC05NjMsNiArOTY0LDExIEBAIGNs
YXNzIEJ5dGVDb2RlUGFyc2VyIHsKICAgICAgICAgZm9yIChBcmd1bWVudFBvc2l0aW9uKiBhcmd1
bWVudCA6IG1faW5saW5lU3RhY2tUb3AtPm1fYXJndW1lbnRQb3NpdGlvbnMpCiAgICAgICAgICAg
ICBhcmd1bWVudC0+bWVyZ2VTaG91bGROZXZlclVuYm94KHRydWUpOwogICAgIH0KKworICAgIEdl
bmVyYXRvckxvY2FsRGF0YSogbmV3R2VuZXJhdG9yTG9jYWxEYXRhKCkKKyAgICB7CisgICAgICAg
IHJldHVybiBtX2dyYXBoLm1fZ2VuZXJhdG9yTG9jYWxEYXRhLmFkZCgpOworICAgIH0KICAgICAK
ICAgICBWTSogbV92bTsKICAgICBDb2RlQmxvY2sqIG1fY29kZUJsb2NrOwpAQCAtMTA1MSw2ICsx
MDU3LDExIEBAIGNsYXNzIEJ5dGVDb2RlUGFyc2VyIHsKICAgICAgICAgQ2FsbExpbmtJbmZvTWFw
IG1fY2FsbExpbmtJbmZvczsKICAgICAgICAgU3R1YkluZm9NYXAgbV9zdHViSW5mb3M7CiAgICAg
ICAgIEJ5VmFsSW5mb01hcCBtX2J5VmFsSW5mb3M7CisKKyAgICAgICAgLy8gU2luY2UgdGhlIG9w
X3Jlc3VtZV9oaW50IGlzIGVtaXR0ZWQgYWZ0ZXIgdGhlIGNvcnJlc3BvbmRpbmcgb3Bfc2F2ZV9o
aW50CisgICAgICAgIC8vIGFuZCB0aGVyZSBpcyBubyBvdGhlciBvcF9yZXN1bWVfaGludCBhbmQg
b3Bfc2F2ZV9oaW50IGJldHdlZW4gdGhlbSwKKyAgICAgICAgLy8gd2UgY2FuIHRyYWNrIHRoZXNl
IGNvcnJlc3BvbmRlbmNlIGJ5IGp1c3QgdHJhY2tpbmcgY3VycmVudGx5IGZvY3VzaW5nIG9wX3Nh
dmUuCisgICAgICAgIE9wZXJhbmRzPEdlbmVyYXRvckxvY2FsRGF0YSo+IG1fZ2VuZXJhdG9yTG9j
YWxzOwogICAgICAgICAKICAgICAgICAgLy8gRGlkIHdlIHNlZSBhbnkgcmV0dXJucz8gV2UgbmVl
ZCB0byBoYW5kbGUgdGhlICh1bmNvbW1vbiBidXQgbmVjZXNzYXJ5KQogICAgICAgICAvLyBjYXNl
IHdoZXJlIGEgcHJvY2VkdXJlIHRoYXQgZG9lcyBub3QgcmV0dXJuIHdhcyBpbmxpbmVkLgpAQCAt
MzM0MSw2ICszMzUyLDExIEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWdu
ZWQgbGltaXQpCiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9uZXdfcmVnZXhwKTsKICAgICAg
ICAgfQogCisgICAgICAgIGNhc2Ugb3BfbmV3X2dlbmVyYXRvcl9mcmFtZTogeworICAgICAgICAg
ICAgc2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSwg
YWRkVG9HcmFwaChOZXdHZW5lcmF0b3JGcmFtZSwgT3BJbmZvKGN1cnJlbnRJbnN0cnVjdGlvblsy
XS51LnVuc2lnbmVkVmFsdWUpKSk7CisgICAgICAgICAgICBORVhUX09QQ09ERShvcF9uZXdfZ2Vu
ZXJhdG9yX2ZyYW1lKTsKKyAgICAgICAgfQorCiAgICAgICAgIGNhc2Ugb3BfZ2V0X3Jlc3RfbGVu
Z3RoOiB7CiAgICAgICAgICAgICBJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSA9IHRo
aXMtPmlubGluZUNhbGxGcmFtZSgpOwogICAgICAgICAgICAgTm9kZSogbGVuZ3RoOwpAQCAtMzM2
OCw2ICszMzg0LDQ4IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQg
bGltaXQpCiAgICAgICAgICAgICAgICAgYXJyYXksIGFycmF5TGVuZ3RoKTsKICAgICAgICAgICAg
IE5FWFRfT1BDT0RFKG9wX2NvcHlfcmVzdCk7CiAgICAgICAgIH0KKworICAgICAgICBjYXNlIG9w
X3NhdmU6IHsKKyAgICAgICAgICAgIE5vZGUqIGZyYW1lID0gZ2V0KFZpcnR1YWxSZWdpc3Rlcihj
dXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSk7CisgICAgICAgICAgICB1bnNpZ25lZCBs
aXZlQ2FsbGVlTG9jYWxzSW5kZXggPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS51bnNpZ25lZFZh
bHVlOworICAgICAgICAgICAgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZW5lc3MgPSBtX2lubGlu
ZVN0YWNrVG9wLT5tX2NvZGVCbG9jay0+bGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQobGl2ZUNhbGxl
ZUxvY2Fsc0luZGV4KTsKKworICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9nZW5lcmF0
b3JMb2NhbHMgPSBPcGVyYW5kczxHZW5lcmF0b3JMb2NhbERhdGEqPihtX251bUFyZ3VtZW50cywg
bV9udW1Mb2NhbHMpOworCisgICAgICAgICAgICBhZGRUb0dyYXBoKFJlc2l6ZUdlbmVyYXRvckxv
Y2FscywgT3BJbmZvKGxpdmVuZXNzLmJpdENvdW50KCkpLCBmcmFtZSk7CisgICAgICAgICAgICB1
bnNpZ25lZCBnZW5lcmF0b3JMb2NhbEluZGV4ID0gMDsKKyAgICAgICAgICAgIGxpdmVuZXNzLmZv
ckVhY2hTZXRCaXQoWyZdKHNpemVfdCBpbmRleCkgeworICAgICAgICAgICAgICAgIFZpcnR1YWxS
ZWdpc3RlciBvcGVyYW5kID0gdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaW5kZXgpOworICAgICAg
ICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciByZW1hcHBlZE9wZXJhbmQgPSBtX2lubGluZVN0YWNr
VG9wLT5yZW1hcE9wZXJhbmQob3BlcmFuZCk7CisgICAgICAgICAgICAgICAgTm9kZSogbG9jYWwg
PSBnZXQob3BlcmFuZCk7CisgICAgICAgICAgICAgICAgR2VuZXJhdG9yTG9jYWxEYXRhKiBnZW5l
cmF0b3JMb2NhbERhdGEgPSBuZXdHZW5lcmF0b3JMb2NhbERhdGEoKTsKKyAgICAgICAgICAgICAg
ICBtX2lubGluZVN0YWNrVG9wLT5tX2dlbmVyYXRvckxvY2Fscy5sb2NhbChyZW1hcHBlZE9wZXJh
bmQudG9Mb2NhbCgpKSA9IGdlbmVyYXRvckxvY2FsRGF0YTsKKyAgICAgICAgICAgICAgICBhZGRU
b0dyYXBoKFNldEdlbmVyYXRvckxvY2FsLCBPcEluZm8oZ2VuZXJhdG9yTG9jYWxJbmRleCsrKSwg
T3BJbmZvKGdlbmVyYXRvckxvY2FsRGF0YSksIGZyYW1lLCBsb2NhbCk7CisgICAgICAgICAgICB9
KTsKKyAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX3NhdmUpOworICAgICAgICB9CisKKyAgICAg
ICAgY2FzZSBvcF9yZXN1bWVfZnJvbV9nZW5lcmF0b3JfZnJhbWU6IHsKKyAgICAgICAgICAgIE5v
ZGUqIGZyYW1lID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5v
cGVyYW5kKSk7CisgICAgICAgICAgICB1bnNpZ25lZCBnZW5lcmF0b3JMb2NhbEluZGV4ID0gY3Vy
cmVudEluc3RydWN0aW9uWzNdLnUudW5zaWduZWRWYWx1ZTsKKyAgICAgICAgICAgIFZpcnR1YWxS
ZWdpc3RlciBvcGVyYW5kKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOworICAgICAg
ICAgICAgVmlydHVhbFJlZ2lzdGVyIHJlbWFwcGVkT3BlcmFuZCA9IG1faW5saW5lU3RhY2tUb3At
PnJlbWFwT3BlcmFuZChvcGVyYW5kKTsKKyAgICAgICAgICAgIEdlbmVyYXRvckxvY2FsRGF0YSog
Z2VuZXJhdG9yTG9jYWxEYXRhID0gbV9pbmxpbmVTdGFja1RvcC0+bV9nZW5lcmF0b3JMb2NhbHMu
bG9jYWwocmVtYXBwZWRPcGVyYW5kLnRvTG9jYWwoKSk7CisgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVChnZW5lcmF0b3JMb2NhbERhdGEpOworICAgICAgICAgICAgc2V0KG9wZXJhbmQsIGFkZFRv
R3JhcGgoR2V0R2VuZXJhdG9yTG9jYWwsIE9wSW5mbyhnZW5lcmF0b3JMb2NhbEluZGV4KSwgT3BJ
bmZvKGdlbmVyYXRvckxvY2FsRGF0YSksIGZyYW1lKSk7CisgICAgICAgICAgICBORVhUX09QQ09E
RShvcF9yZXN1bWVfZnJvbV9nZW5lcmF0b3JfZnJhbWUpOworICAgICAgICB9CisKKyAgICAgICAg
Y2FzZSBvcF9jbGVhcl9nZW5lcmF0b3JfZnJhbWU6IHsKKyAgICAgICAgICAgIE5vZGUqIGZyYW1l
ID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSk7
CisgICAgICAgICAgICBhZGRUb0dyYXBoKFJlc2l6ZUdlbmVyYXRvckxvY2FscywgT3BJbmZvKDAp
LCBmcmFtZSk7CisgICAgICAgICAgICBORVhUX09QQ09ERShvcF9jbGVhcl9nZW5lcmF0b3JfZnJh
bWUpOworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBvcF9ub3A6IHsKKyAgICAgICAgICAgIE5F
WFRfT1BDT0RFKG9wX25vcCk7CisgICAgICAgIH0KKwogICAgICAgICAgICAgCiAgICAgICAgIC8v
ID09PSBCaXR3aXNlIG9wZXJhdGlvbnMgPT09CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAppbmRleCBkMTAwZDk3ZDVjNjBlMjVhMDYwZmZkYTQ1NjYz
YjNiOTQxNDM1ZGM2Li5hNTgyZjg3MjA3NmNmZjg5NDI4M2ViYTMxYTQ5OTc3NjMwZGM3ODkwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCkBAIC0x
ODEsNiArMTgxLDcgQEAgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbChPcGNvZGVJRCBv
cGNvZGVJRCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEluc3RydWMKICAgICBjYXNlIG9wX25ld19h
cnJheToKICAgICBjYXNlIG9wX25ld19hcnJheV93aXRoX3NpemU6CiAgICAgY2FzZSBvcF9uZXdf
YXJyYXlfYnVmZmVyOgorICAgIGNhc2Ugb3BfbmV3X2dlbmVyYXRvcl9mcmFtZToKICAgICBjYXNl
IG9wX3N0cmNhdDoKICAgICBjYXNlIG9wX3RvX3ByaW1pdGl2ZToKICAgICBjYXNlIG9wX3Rocm93
OgpAQCAtMjI0LDYgKzIyNSwxMCBAQCBDYXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVsKE9w
Y29kZUlEIG9wY29kZUlELCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSW5zdHJ1YwogICAgIGNhc2Ug
b3BfY2F0Y2g6CiAgICAgY2FzZSBvcF9jb3B5X3Jlc3Q6CiAgICAgY2FzZSBvcF9nZXRfcmVzdF9s
ZW5ndGg6CisgICAgY2FzZSBvcF9zYXZlOgorICAgIGNhc2Ugb3BfcmVzdW1lX2Zyb21fZ2VuZXJh
dG9yX2ZyYW1lOgorICAgIGNhc2Ugb3BfY2xlYXJfZ2VuZXJhdG9yX2ZyYW1lOgorICAgIGNhc2Ug
b3Bfbm9wOgogICAgICAgICByZXR1cm4gQ2FuQ29tcGlsZUFuZElubGluZTsKIAogICAgIGNhc2Ug
b3BfcHV0X3RvX3Njb3BlOiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Nsb2JiZXJpemUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6
ZS5oCmluZGV4IDM0M2E2ZGU5YzI5MDliOTNlMDUyOGNmMDI3ODRhYWQ5NGQwMWI0ZDEuLjU5ZWM4
MmJjMjBkM2YxNjhlMmY0YjVjYjBiZTZmNTVhMmJmOGRjY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCkBAIC0xMDQ0LDYgKzEwNDQsNyBAQCB2b2lkIGNsb2Ji
ZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwg
Y29uc3QgV3JpdGVGdQogCiAgICAgY2FzZSBOZXdPYmplY3Q6CiAgICAgY2FzZSBOZXdSZWdleHA6
CisgICAgY2FzZSBOZXdHZW5lcmF0b3JGcmFtZToKICAgICBjYXNlIE5ld1N0cmluZ09iamVjdDoK
ICAgICBjYXNlIFBoYW50b21OZXdPYmplY3Q6CiAgICAgY2FzZSBNYXRlcmlhbGl6ZU5ld09iamVj
dDoKQEAgLTExMTEsNiArMTExMiwyMyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBO
b2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgICAg
ICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQorCisgICAgY2FzZSBTZXRHZW5lcmF0b3JMb2NhbDogeworICAgICAgICByZWFk
KEdlbmVyYXRvckxvY2FsQ291bnQpOworICAgICAgICB3cml0ZShHZW5lcmF0b3JMb2NhbHMpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgY2FzZSBHZXRHZW5lcmF0b3JMb2NhbDogewor
ICAgICAgICByZWFkKEdlbmVyYXRvckxvY2FsQ291bnQpOworICAgICAgICByZWFkKEdlbmVyYXRv
ckxvY2Fscyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBjYXNlIFJlc2l6ZUdlbmVy
YXRvckxvY2FsczogeworICAgICAgICB3cml0ZShHZW5lcmF0b3JMb2NhbENvdW50KTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBUaHJvd1JlZmVyZW5jZUVycm9y
OgogICAgICAgICB3cml0ZShTaWRlU3RhdGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDbG9iYmVyc0V4aXRTdGF0ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcAppbmRleCA0ZTBjNTA3Nzg5Y2Q3YjNmZjQ3
NzUxZjkyNWU3NDgzZTYxZTJkZjViLi45Mjg1NTEyNjI3ODUxZDNmODNmMzdmMDJhYmYwYTNiNWVm
NmJmNWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJz
RXhpdFN0YXRlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJz
RXhpdFN0YXRlLmNwcApAQCAtNTMsMTAgKzUzLDE2IEBAIGJvb2wgY2xvYmJlcnNFeGl0U3RhdGUo
R3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgICAgICAvLyBleGl0IHN0YXRlLgogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKKyAgICBjYXNlIFJlc2l6ZUdlbmVyYXRvckxvY2FsczoKKyAgICBj
YXNlIFNldEdlbmVyYXRvckxvY2FsOgorICAgIGNhc2UgR2V0R2VuZXJhdG9yTG9jYWw6CisgICAg
ICAgIHJldHVybiBmYWxzZTsKKwogICAgIGNhc2UgQXJyYXlpZnlUb1N0cnVjdHVyZToKICAgICBj
YXNlIEFycmF5aWZ5OgogICAgIGNhc2UgTmV3T2JqZWN0OgogICAgIGNhc2UgTmV3UmVnZXhwOgor
ICAgIGNhc2UgTmV3R2VuZXJhdG9yRnJhbWU6CiAgICAgY2FzZSBOZXdTdHJpbmdPYmplY3Q6CiAg
ICAgY2FzZSBQaGFudG9tTmV3T2JqZWN0OgogICAgIGNhc2UgTWF0ZXJpYWxpemVOZXdPYmplY3Q6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKaW5kZXggNzAyZGE1YmYxZTdj
MGYxYzhmZTU1YzY0ODQ0NThmY2FkODFlMmFhNS4uY2ViNzg2MWM3YjI3YjVlOTc5NzcyYjZiM2I4
NzA3YjNlZTg5MmIxMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdE
b2VzR0MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcApA
QCAtMjI5LDYgKzIyOSw5IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkK
ICAgICBjYXNlIEdldEZyb21Bcmd1bWVudHM6CiAgICAgY2FzZSBQdXRUb0FyZ3VtZW50czoKICAg
ICBjYXNlIENvcHlSZXN0OgorICAgIGNhc2UgU2V0R2VuZXJhdG9yTG9jYWw6CisgICAgY2FzZSBH
ZXRHZW5lcmF0b3JMb2NhbDoKKyAgICBjYXNlIFJlc2l6ZUdlbmVyYXRvckxvY2FsczoKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCiAgICAgY2FzZSBDcmVhdGVBY3RpdmF0aW9uOgpAQCAtMjQ2LDYg
KzI0OSw3IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNl
IE5ld0FycmF5V2l0aFNpemU6CiAgICAgY2FzZSBOZXdBcnJheUJ1ZmZlcjoKICAgICBjYXNlIE5l
d1JlZ2V4cDoKKyAgICBjYXNlIE5ld0dlbmVyYXRvckZyYW1lOgogICAgIGNhc2UgTmV3U3RyaW5n
T2JqZWN0OgogICAgIGNhc2UgTWFrZVJvcGU6CiAgICAgY2FzZSBOZXdBcnJvd0Z1bmN0aW9uOgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKaW5kZXggYzlkNWFi
ZmI0OTQ4MWI5MDU4OWVjNGZiYTU5NWEyY2U4ZTcwZGY2Ny4uMDE1ZGY1MWRjMzdiZmJmNDZiYWE5
MWVjOWE4YzhiMDE3ZTVkOTFhNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdGaXh1cFBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Zp
eHVwUGhhc2UuY3BwCkBAIC0xNDMwLDYgKzE0MzAsMjQgQEAgY2xhc3MgRml4dXBQaGFzZSA6IHB1
YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCisgICAgICAgIGNh
c2UgU2V0R2VuZXJhdG9yTG9jYWw6IHsKKyAgICAgICAgICAgIGZpeEVkZ2U8Q2VsbFVzZT4obm9k
ZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgc3BlY3VsYXRlRm9yQmFycmllcihub2RlLT5jaGls
ZDIoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2UgR2V0
R2VuZXJhdG9yTG9jYWw6IHsKKyAgICAgICAgICAgIGZpeEVkZ2U8Q2VsbFVzZT4obm9kZS0+Y2hp
bGQxKCkpOworICAgICAgICAgICAgLy8gQ3VycmVudGx5LCB3ZSBhbHdheXMgc3RvcmUgdGhlIHZh
bHVlIGFzIEpTVmFsdWUgaW4gdGhlIEdlbmVyYXRvckZyYW1lLgorICAgICAgICAgICAgbm9kZS0+
c2V0UmVzdWx0KE5vZGVSZXN1bHRKUyk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor
CisgICAgICAgIGNhc2UgUmVzaXplR2VuZXJhdG9yTG9jYWxzOiB7CisgICAgICAgICAgICBmaXhF
ZGdlPENlbGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CisKICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgICAgIC8vIEhhdmUgdGhlc2Ugbm8tb3Ag
Y2FzZXMgaGVyZSB0byBlbnN1cmUgdGhhdCBub2JvZHkgZm9yZ2V0cyB0byBhZGQgaGFuZGxlcnMg
Zm9yIG5ldyBvcGNvZGVzLgogICAgICAgICBjYXNlIFNldEFyZ3VtZW50OgpAQCAtMTQ2Miw2ICsx
NDgwLDcgQEAgY2xhc3MgRml4dXBQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgIGNhc2Ug
TmV3T2JqZWN0OgogICAgICAgICBjYXNlIE5ld0FycmF5QnVmZmVyOgogICAgICAgICBjYXNlIE5l
d1JlZ2V4cDoKKyAgICAgICAgY2FzZSBOZXdHZW5lcmF0b3JGcmFtZToKICAgICAgICAgY2FzZSBC
cmVha3BvaW50OgogICAgICAgICBjYXNlIFByb2ZpbGVXaWxsQ2FsbDoKICAgICAgICAgY2FzZSBQ
cm9maWxlRGlkQ2FsbDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
R2VuZXJhdG9yTG9jYWxEYXRhLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dlbmVy
YXRvckxvY2FsRGF0YS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg5YzU1MTNiNWIzZDY0MDgwMTdkMGM4Zjg5NmRi
NzY0NGJkYmQzZDQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0dlbmVyYXRvckxvY2FsRGF0YS5oCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTYgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgREZHR2VuZXJh
dG9yTG9jYWxEYXRhX2gKKyNkZWZpbmUgREZHR2VuZXJhdG9yTG9jYWxEYXRhX2gKKworI2lmIEVO
QUJMRShERkdfSklUKQorCisjaW5jbHVkZSAiREZHQ29tbW9uLmgiCisjaW5jbHVkZSAiREZHTm9k
ZUZsYWdzLmgiCisjaW5jbHVkZSAiREZHVmFyaWFibGVBY2Nlc3NEYXRhLmgiCisjaW5jbHVkZSAi
U3BlY3VsYXRlZFR5cGUuaCIKKyNpbmNsdWRlICJWaXJ0dWFsUmVnaXN0ZXIuaCIKKworbmFtZXNw
YWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgeworCitzdHJ1Y3QgTm9kZTsKKworY2xhc3MgR2VuZXJh
dG9yTG9jYWxEYXRhIHsKK3B1YmxpYzoKKyAgICBib29sIHByZWRpY3QoU3BlY3VsYXRlZFR5cGUg
cHJlZGljdGlvbikKKyAgICB7CisgICAgICAgIHJldHVybiBtZXJnZVNwZWN1bGF0aW9uKG1fcHJl
ZGljdGlvbiwgcHJlZGljdGlvbik7CisgICAgfQorCisgICAgU3BlY3VsYXRlZFR5cGUgcHJlZGlj
dGlvbigpCisgICAgeworICAgICAgICByZXR1cm4gbV9wcmVkaWN0aW9uOworICAgIH0KKworcHJp
dmF0ZToKKyAgICBTcGVjdWxhdGVkVHlwZSBtX3ByZWRpY3Rpb24geyBTcGVjTm9uZSB9OworfTsK
KworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRworCisjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQp
CisKKyNlbmRpZiAvLyBERkdWYXJpYWJsZUFjY2Vzc0RhdGFfaApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdHcmFwaC5oCmluZGV4IDA5YWFlOTU1ZjY2YWE3ODk0YTE0ODVlMTM5MzdmM2JhNTM4ODlk
MWMuLjQzZmRiYjFhNzEzMDM0NmM5YmRhZjQ5ZDRlNDE2YjcyNDEzZjA2MWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKQEAgLTYwLDYgKzYwLDcgQEAKIGNsYXNzIERvbWluYXRv
cnM7CiBjbGFzcyBOYXR1cmFsTG9vcHM7CiBjbGFzcyBQcmVQb3N0TnVtYmVyaW5nOworY2xhc3Mg
R2VuZXJhdG9yTG9jYWxEYXRhOwogCiAjZGVmaW5lIERGR19OT0RFX0RPX1RPX0NISUxEUkVOKGdy
YXBoLCBub2RlLCB0aGluZ1RvRG8pIGRvIHsgICAgICAgICAgICBcCiAgICAgICAgIE5vZGUqIF9u
b2RlID0gKG5vZGUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CkBAIC04ODcsNiArODg4LDcgQEAgY2xhc3MgR3JhcGggOiBwdWJsaWMgdmlydHVhbCBTY2FubmFi
bGUgewogICAgIEJhZzxDYWxsVmFyYXJnc0RhdGE+IG1fY2FsbFZhcmFyZ3NEYXRhOwogICAgIEJh
ZzxMb2FkVmFyYXJnc0RhdGE+IG1fbG9hZFZhcmFyZ3NEYXRhOwogICAgIEJhZzxTdGFja0FjY2Vz
c0RhdGE+IG1fc3RhY2tBY2Nlc3NEYXRhOworICAgIEJhZzxHZW5lcmF0b3JMb2NhbERhdGE+IG1f
Z2VuZXJhdG9yTG9jYWxEYXRhOwogICAgIFZlY3RvcjxJbmxpbmVWYXJpYWJsZURhdGEsIDQ+IG1f
aW5saW5lVmFyaWFibGVEYXRhOwogICAgIEhhc2hNYXA8Q29kZUJsb2NrKiwgc3RkOjp1bmlxdWVf
cHRyPEZ1bGxCeXRlY29kZUxpdmVuZXNzPj4gbV9ieXRlY29kZUxpdmVuZXNzOwogICAgIEhhc2hN
YXA8Q29kZUJsb2NrKiwgc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlS2lsbHM+PiBtX2J5dGVjb2Rl
S2lsbHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNwcAppbmRleCBkYWEy
OTMzOWRiZmJkZjgwYWFkOWI2NDZhMmNiN2EwNTg3ZDk2MjM4Li5iYzZkMTVjODRkZmE0NGY3MzRm
ZGM0NzRkZGU3YTZiYjI2NTZlNmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR01heUV4aXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5
RXhpdC5jcHAKQEAgLTEzMCw2ICsxMzAsOSBAQCBFeGl0TW9kZSBtYXlFeGl0KEdyYXBoJiBncmFw
aCwgTm9kZSogbm9kZSkKICAgICBjYXNlIFN0b3JlQmFycmllcjoKICAgICBjYXNlIFB1dEJ5T2Zm
c2V0OgogICAgIGNhc2UgUHV0Q2xvc3VyZVZhcjoKKyAgICBjYXNlIFJlc2l6ZUdlbmVyYXRvckxv
Y2FsczoKKyAgICBjYXNlIFNldEdlbmVyYXRvckxvY2FsOgorICAgIGNhc2UgR2V0R2VuZXJhdG9y
TG9jYWw6CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBTdHJDYXQ6CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTm9kZS5oCmluZGV4IDEyODcwZDkzZDBjNDgyZTRmOGU1ZDRkMmRhZjFlNmJmMWY3
MWI2MmMuLjNlYzc3ZTFhMTRkY2UyNTM1YmExMGRmMjNmMDlhOWU4MWY5NzhiMDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiREZH
QXJyYXlNb2RlLmgiCiAjaW5jbHVkZSAiREZHQ29tbW9uLmgiCiAjaW5jbHVkZSAiREZHRXBvY2gu
aCIKKyNpbmNsdWRlICJERkdHZW5lcmF0b3JMb2NhbERhdGEuaCIKICNpbmNsdWRlICJERkdMYXp5
SlNWYWx1ZS5oIgogI2luY2x1ZGUgIkRGR011bHRpR2V0QnlPZmZzZXREYXRhLmgiCiAjaW5jbHVk
ZSAiREZHTm9kZUZsYWdzLmgiCkBAIC04NzgsNiArODc5LDcyIEBAIHN0cnVjdCBOb2RlIHsKICAg
ICAgICAgcmV0dXJuIG1fb3BJbmZvOwogICAgIH0KIAorICAgIGJvb2wgaGFzR2VuZXJhdG9yTG9j
YWxzU2l6ZSgpCisgICAgeworICAgICAgICBzd2l0Y2ggKG9wKCkpIHsKKyAgICAgICAgY2FzZSBO
ZXdHZW5lcmF0b3JGcmFtZToKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorCisgICAg
dW5zaWduZWQgZ2VuZXJhdG9yTG9jYWxzU2l6ZSgpCisgICAgeworICAgICAgICBBU1NFUlQoaGFz
R2VuZXJhdG9yTG9jYWxzU2l6ZSgpKTsKKyAgICAgICAgcmV0dXJuIG1fb3BJbmZvOworICAgIH0K
KworICAgIGJvb2wgaGFzR2VuZXJhdG9yTG9jYWxJbmRleCgpCisgICAgeworICAgICAgICBzd2l0
Y2ggKG9wKCkpIHsKKyAgICAgICAgY2FzZSBTZXRHZW5lcmF0b3JMb2NhbDoKKyAgICAgICAgY2Fz
ZSBHZXRHZW5lcmF0b3JMb2NhbDoKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorCisg
ICAgdW5zaWduZWQgZ2VuZXJhdG9yTG9jYWxJbmRleCgpCisgICAgeworICAgICAgICBBU1NFUlQo
aGFzR2VuZXJhdG9yTG9jYWxJbmRleCgpKTsKKyAgICAgICAgcmV0dXJuIG1fb3BJbmZvOworICAg
IH0KKworICAgIGJvb2wgaGFzR2VuZXJhdG9yTG9jYWxEYXRhKCkKKyAgICB7CisgICAgICAgIHN3
aXRjaCAob3AoKSkgeworICAgICAgICBjYXNlIFNldEdlbmVyYXRvckxvY2FsOgorICAgICAgICBj
YXNlIEdldEdlbmVyYXRvckxvY2FsOgorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg
IGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICBHZW5lcmF0b3JMb2NhbERhdGEqIGdlbmVyYXRvckxvY2FsRGF0YSgpCisgICAgeworICAg
ICAgICBBU1NFUlQoaGFzR2VuZXJhdG9yTG9jYWxEYXRhKCkpOworICAgICAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDxHZW5lcmF0b3JMb2NhbERhdGEqPihtX29wSW5mbzIpOworICAgIH0KKwor
ICAgIGJvb2wgaGFzR2VuZXJhdG9yRnJhbWVMb2NhbHMoKQorICAgIHsKKyAgICAgICAgc3dpdGNo
IChvcCgpKSB7CisgICAgICAgIGNhc2UgUmVzaXplR2VuZXJhdG9yTG9jYWxzOgorICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB1bnNpZ25lZCBnZW5lcmF0b3JGcmFtZUxvY2Fs
cygpCisgICAgeworICAgICAgICBBU1NFUlQoaGFzR2VuZXJhdG9yRnJhbWVMb2NhbHMoKSk7Cisg
ICAgICAgIHJldHVybiBtX29wSW5mbzsKKyAgICB9CisKICAgICBib29sIGhhc0FjY2Vzc29yQXR0
cmlidXRlcygpCiAgICAgewogICAgICAgICBzd2l0Y2ggKG9wKCkpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTm9kZVR5cGUuaAppbmRleCBkZGQwYjk3Y2IyZmU2OTI2MDQ1MTAzZjhhNzEw
NzAwNDgyZTlmNmJkLi4yOThjOGY4YzdjYmM5ZGZjNWY1MDIyZjU0MTY2ZjZlOTQ4MzcyM2RjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCkBAIC03OSw2ICs3OSwxMCBA
QAogICAgIG1hY3JvKEZsdXNoLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oUGhhbnRv
bUxvY2FsLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgXAorICAgIG1hY3JvKFNldEdlbmVyYXRv
ckxvY2FsLCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgbWFjcm8oR2V0R2VuZXJhdG9yTG9jYWws
IE5vZGVSZXN1bHRKUykgXAorICAgIG1hY3JvKFJlc2l6ZUdlbmVyYXRvckxvY2FscywgTm9kZU11
c3RHZW5lcmF0ZSkgXAorICAgIFwKICAgICAvKiBIaW50IHRoYXQgdGhpcyBpcyB3aGVyZSBieXRl
Y29kZSB0aGlua3MgaXMgYSBnb29kIHBsYWNlIHRvIE9TUi4gTm90ZSB0aGF0IHRoaXMgKi9cCiAg
ICAgLyogd2lsbCBleGlzdCBldmVuIGluIGlubGluZWQgbG9vcHMuIFRoaXMgaGFzIG5vIGV4ZWN1
dGlvbiBzZW1hbnRpY3MgYnV0IGl0IG11c3QgKi9cCiAgICAgLyogc3Vydml2ZSBhbGwgRENFLiBX
ZSB0cmVhdCB0aGlzIGFzIGJlaW5nIGEgY2FuLWV4aXQgYmVjYXVzZSB0aWVyLXVwIHRvIEZUTCBt
YXkgKi9cCkBAIC0yNjMsNiArMjY3LDcgQEAKICAgICBtYWNybyhOZXdBcnJheUJ1ZmZlciwgTm9k
ZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oTmV3VHlwZWRBcnJheSwgTm9kZVJlc3VsdEpTIHwgTm9k
ZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKE5ld1JlZ2V4cCwgTm9kZVJlc3VsdEpTKSBcCisg
ICAgbWFjcm8oTmV3R2VuZXJhdG9yRnJhbWUsIE5vZGVSZXN1bHRKUykgXAogICAgIC8qIFJlc3Qg
UGFyYW1ldGVyICovXAogICAgIG1hY3JvKEdldFJlc3RMZW5ndGgsIE5vZGVSZXN1bHRJbnQzMikg
XAogICAgIG1hY3JvKENvcHlSZXN0LCBOb2RlTXVzdEdlbmVyYXRlKSBcCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAppbmRleCAyZmQ1ZGJkYzdmYzRjY2E4NmZh
ZTEwOTIyN2FjMTc1N2ZkY2RmOTZjLi5iYzM1NjYxM2QzZjUyMTgwODIzOGU1MjY4MTM1YWFiMDli
ZTY3ZjBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlv
bnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAK
QEAgLTQxLDggKzQxLDkgQEAKICNpbmNsdWRlICJEaXJlY3RBcmd1bWVudHMuaCIKICNpbmNsdWRl
ICJGVExGb3JPU1JFbnRyeUpJVENvZGUuaCIKICNpbmNsdWRlICJGVExPU1JFbnRyeS5oIgotI2lu
Y2x1ZGUgIkhvc3RDYWxsUmV0dXJuVmFsdWUuaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JGcmFtZS5o
IgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgorI2luY2x1ZGUgIkhvc3RDYWxsUmV0dXJuVmFs
dWUuaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1
ZGUgIkpJVEV4Y2VwdGlvbnMuaCIKQEAgLTgxNyw2ICs4MTgsMTEgQEAgY2hhciogSklUX09QRVJB
VElPTiBvcGVyYXRpb25OZXdGbG9hdDY0QXJyYXlXaXRoT25lQXJndW1lbnQoCiAgICAgcmV0dXJu
IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dp
dGhBcmd1bWVudHM8SlNGbG9hdDY0QXJyYXk+KGV4ZWMsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVl
LCAwLCBOdWxsb3B0KSk7CiB9CiAKK2NoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3R2Vu
ZXJhdG9yRnJhbWUoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJf
dCBudW1iZXJPZkNhbGxlZUxvY2FscykKK3sKKyAgICByZXR1cm4gYml0d2lzZV9jYXN0PGNoYXIq
PihHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlKGV4ZWMtPnZtKCksIHN0cnVjdHVyZSwgbnVtYmVyT2ZD
YWxsZWVMb2NhbHMpKTsKK30KKwogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0
ZUFjdGl2YXRpb25EaXJlY3QoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
SlNTY29wZSogc2NvcGUsIFN5bWJvbFRhYmxlKiB0YWJsZSwgRW5jb2RlZEpTVmFsdWUgaW5pdGlh
bFZhbHVlRW5jb2RlZCkKIHsKICAgICBKU1ZhbHVlIGluaXRpYWxWYWx1ZSA9IEpTVmFsdWU6OmRl
Y29kZShpbml0aWFsVmFsdWVFbmNvZGVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
cGVyYXRpb25zLmgKaW5kZXggNDA5NjI5ZmY1ZDUzYTdiZTM4N2E2MjM2NDU1ZDY4MTZhYzA4NWVj
OS4uZTQ0M2JhMjgyMzcyZmJjY2UyYmFjNWIwOWEzNjdiZDUyYzhlNzVmMyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKQEAgLTgyLDYgKzgyLDcgQEAKIGNoYXIq
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3RmxvYXQzMkFycmF5V2l0aE9uZUFyZ3VtZW50KEV4
ZWNTdGF0ZSosIFN0cnVjdHVyZSosIEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7CiBjaGFy
KiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Zsb2F0NjRBcnJheVdpdGhTaXplKEV4ZWNTdGF0
ZSosIFN0cnVjdHVyZSosIGludDMyX3QpIFdURl9JTlRFUk5BTDsKIGNoYXIqIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uTmV3RmxvYXQ2NEFycmF5V2l0aE9uZUFyZ3VtZW50KEV4ZWNTdGF0ZSosIFN0
cnVjdHVyZSosIEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7CitjaGFyKiBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbk5ld0dlbmVyYXRvckZyYW1lKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSosIGlu
dDMyX3QpIFdURl9JTlRFUk5BTDsKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZh
bFN0cmljdChFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFByb3BlcnR5LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpIFdURl9J
TlRFUk5BTDsKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbE5vblN0cmljdChF
eGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFByb3BlcnR5LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpIFdURl9JTlRFUk5BTDsK
IHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbENlbGxTdHJpY3QoRXhlY1N0YXRl
KiwgSlNDZWxsKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFByb3BlcnR5LCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkVmFsdWUpIFdURl9JTlRFUk5BTDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKaW5kZXgg
NTc5OThjZmUxODFhOGZjZjljYzY1MTQzNTFhYzU4MGI4MGU3ZmI4YS4uMmQzYWJiZDJlNzYwYmU2
NDVhNzBjYTE1Zjg5Y2Y1OTA4ZDkyMmZjMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKQEAgLTE2
MCw2ICsxNjAsMjQgQEAgY2xhc3MgUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UgOiBwdWJsaWMg
UGhhc2UgewogICAgICAgICAgICAgY2hhbmdlZCB8PSB2YXJpYWJsZUFjY2Vzc0RhdGEtPnByZWRp
Y3Qobm9kZS0+Y2hpbGQxKCktPnByZWRpY3Rpb24oKSk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQorCisgICAgICAgIGNhc2UgU2V0R2VuZXJhdG9yTG9jYWw6IHsKKyAgICAgICAgICAg
IEdlbmVyYXRvckxvY2FsRGF0YSogZ2VuZXJhdG9yTG9jYWxEYXRhID0gbm9kZS0+Z2VuZXJhdG9y
TG9jYWxEYXRhKCk7CisgICAgICAgICAgICBjaGFuZ2VkIHw9IGdlbmVyYXRvckxvY2FsRGF0YS0+
cHJlZGljdChub2RlLT5jaGlsZDIoKS0+cHJlZGljdGlvbigpKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBHZXRHZW5lcmF0b3JMb2NhbDogeworICAgICAg
ICAgICAgR2VuZXJhdG9yTG9jYWxEYXRhKiBnZW5lcmF0b3JMb2NhbERhdGEgPSBub2RlLT5nZW5l
cmF0b3JMb2NhbERhdGEoKTsKKyAgICAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24g
PSBnZW5lcmF0b3JMb2NhbERhdGEtPnByZWRpY3Rpb24oKTsKKyAgICAgICAgICAgIC8vIFdlIGFs
d2F5cyBzdG9yZSB0aGUgdmFsdWUgaW4gR2VuZXJhdG9yTG9jYWwgYXMgRm9ybWF0SlNWYWx1ZS4K
KyAgICAgICAgICAgIC8vIFNvIGRvdWJsZSB2YWx1ZSBpcyBiZXR0ZXIgdGhhbiBJbnQ1MiB2YWx1
ZS4KKyAgICAgICAgICAgIGlmIChwcmVkaWN0aW9uICYgU3BlY0ludDUyKQorICAgICAgICAgICAg
ICAgIHByZWRpY3Rpb24gPSAocHJlZGljdGlvbiB8IFNwZWNJbnQ1MkFzRG91YmxlKSAmIH5TcGVj
SW50NTI7CisgICAgICAgICAgICBpZiAocHJlZGljdGlvbikKKyAgICAgICAgICAgICAgICBjaGFu
Z2VkIHw9IG1lcmdlUHJlZGljdGlvbihwcmVkaWN0aW9uKTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBCaXRBbmQ6CiAgICAgICAgIGNh
c2UgQml0T3I6CkBAIC01MjQsNyArNTQyLDggQEAgY2xhc3MgUHJlZGljdGlvblByb3BhZ2F0aW9u
UGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAg
Y2FzZSBOZXdSZWdleHA6Ci0gICAgICAgIGNhc2UgQ3JlYXRlQWN0aXZhdGlvbjogeworICAgICAg
ICBjYXNlIENyZWF0ZUFjdGl2YXRpb246CisgICAgICAgIGNhc2UgTmV3R2VuZXJhdG9yRnJhbWU6
IHsKICAgICAgICAgICAgIGNoYW5nZWQgfD0gc2V0UHJlZGljdGlvbihTcGVjT2JqZWN0T3RoZXIp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTcxNiw2ICs3MzUsNyBAQCBjbGFz
cyBQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgIGNh
c2UgRXhpdE9LOgogICAgICAgICBjYXNlIExvYWRWYXJhcmdzOgogICAgICAgICBjYXNlIENvcHlS
ZXN0OgorICAgICAgICBjYXNlIFJlc2l6ZUdlbmVyYXRvckxvY2FsczoKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgCiAgICAgICAgIC8vIFRoaXMgZ2V0cyBpZ25vcmVkIGJlY2F1c2Ug
aXQgb25seSBwcmV0ZW5kcyB0byBwcm9kdWNlIGEgdmFsdWUuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCmluZGV4IDIzMGVmZWRjNDgzMTUxMmJhYzU2OGJl
ZWZkYjI3Njk2MTg3MjA5NGMuLjg3YzNlMDI2OGM1ODExMjhjZGJiZjFmYjU1YjM2NjkyZmM0MTZk
ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0
ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCkBA
IC0yMzcsNiArMjM3LDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBz
dGF0ZSwgR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgTmV3QXJyYXlXaXRoU2l6
ZToKICAgICBjYXNlIE5ld0FycmF5QnVmZmVyOgogICAgIGNhc2UgTmV3UmVnZXhwOgorICAgIGNh
c2UgTmV3R2VuZXJhdG9yRnJhbWU6CiAgICAgY2FzZSBCcmVha3BvaW50OgogICAgIGNhc2UgUHJv
ZmlsZVdpbGxDYWxsOgogICAgIGNhc2UgUHJvZmlsZURpZENhbGw6CkBAIC0zMjgsNiArMzI5LDkg
QEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSwgR3JhcGgmIGdy
YXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgR2V0TXlBcmd1bWVudEJ5VmFsOgogICAgIGNhc2Ug
Rm9yd2FyZFZhcmFyZ3M6CiAgICAgY2FzZSBDb3B5UmVzdDoKKyAgICBjYXNlIFNldEdlbmVyYXRv
ckxvY2FsOgorICAgIGNhc2UgR2V0R2VuZXJhdG9yTG9jYWw6CisgICAgY2FzZSBSZXNpemVHZW5l
cmF0b3JMb2NhbHM6CiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgY2FzZSBCb3R0b21WYWx1
ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAK
aW5kZXggY2NjZTc5MTk5NTE0NWU5MWVmZDIwMDg4Yzk2YjdhZjgyYjU2MTZkNi4uNWY5NjlmYzgw
OWExNjg2NmYwZGFkODI2ZDZhMmQzZjJiZTQ1YWJkMyAxMDA3NTUKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNs
dWRlICJERkdTYW5lU3RyaW5nR2V0QnlWYWxTbG93UGF0aEdlbmVyYXRvci5oIgogI2luY2x1ZGUg
IkRGR1Nsb3dQYXRoR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiRGlyZWN0QXJndW1lbnRzLmgiCisj
aW5jbHVkZSAiR2VuZXJhdG9yRnJhbWUuaCIKICNpbmNsdWRlICJKSVRBZGRHZW5lcmF0b3IuaCIK
ICNpbmNsdWRlICJKSVRCaXRBbmRHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJKSVRCaXRPckdlbmVy
YXRvci5oIgpAQCAtNjM3OCw2ICs2Mzc5LDQyIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVOZXdTdHJpbmdPYmplY3QoTm9kZSogbm9kZSkKICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwg
bm9kZSk7CiB9CiAKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdHZW5lcmF0b3JGcmFt
ZShOb2RlKiBub2RlKQoreworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2pp
dC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAgIFN0
cnVjdHVyZSogc3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT5nZW5lcmF0b3JGcmFtZVN0cnVjdHVy
ZSgpOworICAgIHVuc2lnbmVkIGdlbmVyYXRvckxvY2Fsc1NpemUgPSBub2RlLT5nZW5lcmF0b3JM
b2NhbHNTaXplKCk7CisKKyAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOworICAgIEdQUlRl
bXBvcmFyeSBzY3JhdGNoMSh0aGlzKTsKKyAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaDIodGhpcyk7
CisKKyAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOworICAgIEdQUlJlZyBzY3Jh
dGNoMUdQUiA9IHNjcmF0Y2gxLmdwcigpOworICAgIEdQUlJlZyBzY3JhdGNoMkdQUiA9IHNjcmF0
Y2gyLmdwcigpOworCisgICAgSklUQ29tcGlsZXI6Okp1bXBMaXN0IHNsb3dQYXRoOworCisgICAg
ZW1pdEFsbG9jYXRlSlNPYmplY3RXaXRoS25vd25TaXplPEdlbmVyYXRvckZyYW1lPihyZXN1bHRH
UFIsIFRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwgVHJ1c3RlZEltbVB0cihudWxscHRyKSwgc2Ny
YXRjaDFHUFIsIHNjcmF0Y2gyR1BSLCBzbG93UGF0aCwgR2VuZXJhdG9yRnJhbWU6OmFsbG9jYXRp
b25TaXplRm9yTG9jYWxzKGdlbmVyYXRvckxvY2Fsc1NpemUpKTsKKyAgICBtX2ppdC5zdG9yZTMy
KFRydXN0ZWRJbW0zMihnZW5lcmF0b3JMb2NhbHNTaXplKSwgSklUQ29tcGlsZXI6OkFkZHJlc3Mo
cmVzdWx0R1BSLCBHZW5lcmF0b3JGcmFtZTo6bnVtYmVyT2ZDYWxsZWVMb2NhbHNPZmZzZXQoKSkp
OworICAgIG1faml0LnN0b3JlMzIoVHJ1c3RlZEltbTMyKDApLCBKSVRDb21waWxlcjo6QWRkcmVz
cyhyZXN1bHRHUFIsIEdlbmVyYXRvckZyYW1lOjpudW1iZXJPZlNhdmVkQ2FsbGVlTG9jYWxzT2Zm
c2V0KCkpKTsKKyAgICBKU1ZhbHVlIGVtcHR5VmFsdWU7CisgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IGdlbmVyYXRvckxvY2Fsc1NpemU7ICsraSkKKyAgICAgICAgbV9qaXQuc3RvcmVUcnVz
dGVkVmFsdWUoZW1wdHlWYWx1ZSwgSklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBHZW5l
cmF0b3JGcmFtZTo6bG9jYWxPZmZzZXQoaSkpKTsKKworICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9y
KHNsb3dQYXRoQ2FsbChzbG93UGF0aCwgdGhpcywgb3BlcmF0aW9uTmV3R2VuZXJhdG9yRnJhbWUs
IHJlc3VsdEdQUiwgc3RydWN0dXJlLCBnZW5lcmF0b3JMb2NhbHNTaXplKSk7CisKKyAgICBjZWxs
UmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7Cit9CisKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVSZXNpemVHZW5lcmF0b3JMb2NhbHMoTm9kZSogbm9kZSkKK3sKKyAgICBTcGVjdWxhdGVDZWxs
T3BlcmFuZCBmcmFtZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgR1BSUmVnIGZyYW1lR1BS
ID0gZnJhbWUuZ3ByKCk7CisgICAgbV9qaXQuc3RvcmUzMihUcnVzdGVkSW1tMzIobm9kZS0+Z2Vu
ZXJhdG9yRnJhbWVMb2NhbHMoKSksIEpJVENvbXBpbGVyOjpBZGRyZXNzKGZyYW1lR1BSLCBHZW5l
cmF0b3JGcmFtZTo6bnVtYmVyT2ZTYXZlZENhbGxlZUxvY2Fsc09mZnNldCgpKSk7CisgICAgbm9S
ZXN1bHQobm9kZSk7Cit9CisKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdUeXBlZEFy
cmF5KE5vZGUqIG5vZGUpCiB7CiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1f
aml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKaW5kZXggNTMxMmM4
ZGJlZGZlZDE4MDA1NDM4MTEzMDc5ZWViMGIwZTk5MDhhYi4uMDBhNGZhOTJhYzczZTU4MzlhYjg1
NmVhYjlmNDM2NDIwZTUyY2IxNSAxMDA3NTUKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuaApAQCAtMjI4MSw2ICsyMjgxLDggQEAgY2xhc3MgU3BlY3VsYXRpdmVK
SVQgewogICAgIHZvaWQgY29tcGlsZVB1dEJ5VmFsRm9yRmxvYXRUeXBlZEFycmF5KEdQUlJlZyBi
YXNlLCBHUFJSZWcgcHJvcGVydHksIE5vZGUqLCBUeXBlZEFycmF5VHlwZSk7CiAgICAgdGVtcGxh
dGUgPHR5cGVuYW1lIENsYXNzVHlwZT4gdm9pZCBjb21waWxlTmV3RnVuY3Rpb25Db21tb24oR1BS
UmVnLCBTdHJ1Y3R1cmUqLCBHUFJSZWcsIEdQUlJlZywgR1BSUmVnLCBNYWNyb0Fzc2VtYmxlcjo6
SnVtcExpc3QmLCBzaXplX3QsIEZ1bmN0aW9uRXhlY3V0YWJsZSosIHB0cmRpZmZfdCwgcHRyZGlm
Zl90LCBwdHJkaWZmX3QpOwogICAgIHZvaWQgY29tcGlsZU5ld0Z1bmN0aW9uKE5vZGUqKTsKKyAg
ICB2b2lkIGNvbXBpbGVOZXdHZW5lcmF0b3JGcmFtZShOb2RlKik7CisgICAgdm9pZCBjb21waWxl
UmVzaXplR2VuZXJhdG9yTG9jYWxzKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVGb3J3YXJkVmFy
YXJncyhOb2RlKik7CiAgICAgdm9pZCBjb21waWxlQ3JlYXRlQWN0aXZhdGlvbihOb2RlKik7CiAg
ICAgdm9pZCBjb21waWxlQ3JlYXRlRGlyZWN0QXJndW1lbnRzKE5vZGUqKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCmluZGV4
IDEyZWI1MDQxMTgwYWMyZjUwMTY0Zjk1MWIwNThlZGI2MmQyMjgyNzAuLjQ2NmQzYWJiMzgwYjQx
YzEyMTU2YTE1ZDFiNjk2ZWU5ZjVkOTJhMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApAQCAtMzY1MCw2ICszNjUwLDEx
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgY2Vs
bFJlc3VsdChyZXN1bHRQYXlsb2FkLmdwcigpLCBub2RlKTsKICAgICAgICAgYnJlYWs7CiAgICAg
fQorCisgICAgY2FzZSBOZXdHZW5lcmF0b3JGcmFtZTogeworICAgICAgICBjb21waWxlTmV3R2Vu
ZXJhdG9yRnJhbWUobm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICAgICAgCiAgICAg
Y2FzZSBUb1RoaXM6IHsKICAgICAgICAgQVNTRVJUKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9
PSBVbnR5cGVkVXNlKTsKQEAgLTQ3MTgsNiArNDcyMyw0MSBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2Rl
KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQorICAgIGNhc2UgU2V0R2VuZXJhdG9yTG9jYWw6IHsK
KyAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgZnJhbWUodGhpcywgbm9kZS0+Y2hpbGQxKCkp
OworICAgICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisK
KyAgICAgICAgR1BSUmVnIGZyYW1lR1BSID0gZnJhbWUuZ3ByKCk7CisgICAgICAgIEdQUlJlZyB2
YWx1ZVRhZ0dQUiA9IHZhbHVlLnRhZ0dQUigpOworICAgICAgICBHUFJSZWcgdmFsdWVQYXlsb2Fk
R1BSID0gdmFsdWUucGF5bG9hZEdQUigpOworICAgICAgICB1bnNpZ25lZCBnZW5lcmF0b3JMb2Nh
bEluZGV4ID0gbm9kZS0+Z2VuZXJhdG9yTG9jYWxJbmRleCgpOworCisgICAgICAgIG1faml0LnN0
b3JlMzIodmFsdWVUYWdHUFIsIEpJVENvbXBpbGVyOjpBZGRyZXNzKGZyYW1lR1BSLCBHZW5lcmF0
b3JGcmFtZTo6bG9jYWxPZmZzZXQoZ2VuZXJhdG9yTG9jYWxJbmRleCkgKyBPQkpFQ1RfT0ZGU0VU
T0YoSlNWYWx1ZSwgdS5hc0JpdHMudGFnKSkpOworICAgICAgICBtX2ppdC5zdG9yZTMyKHZhbHVl
UGF5bG9hZEdQUiwgSklUQ29tcGlsZXI6OkFkZHJlc3MoZnJhbWVHUFIsIEdlbmVyYXRvckZyYW1l
Ojpsb2NhbE9mZnNldChnZW5lcmF0b3JMb2NhbEluZGV4KSArIE9CSkVDVF9PRkZTRVRPRihKU1Zh
bHVlLCB1LmFzQml0cy5wYXlsb2FkKSkpOworCisgICAgICAgIG5vUmVzdWx0KG5vZGUpOworICAg
ICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBHZXRHZW5lcmF0b3JMb2NhbDogeworICAgICAg
ICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBmcmFtZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAg
ICAgIEdQUlRlbXBvcmFyeSByZXN1bHRUYWcodGhpcyk7CisgICAgICAgIEdQUlRlbXBvcmFyeSBy
ZXN1bHRQYXlsb2FkKHRoaXMpOworCisgICAgICAgIEdQUlJlZyBmcmFtZUdQUiA9IGZyYW1lLmdw
cigpOworICAgICAgICBHUFJSZWcgcmVzdWx0VGFnR1BSID0gcmVzdWx0VGFnLmdwcigpOworICAg
ICAgICBHUFJSZWcgcmVzdWx0UGF5bG9hZEdQUiA9IHJlc3VsdFBheWxvYWQuZ3ByKCk7CisgICAg
ICAgIHVuc2lnbmVkIGdlbmVyYXRvckxvY2FsSW5kZXggPSBub2RlLT5nZW5lcmF0b3JMb2NhbElu
ZGV4KCk7CisKKyAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGZyYW1l
R1BSLCBHZW5lcmF0b3JGcmFtZTo6bG9jYWxPZmZzZXQoZ2VuZXJhdG9yTG9jYWxJbmRleCkgKyBP
QkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMudGFnKSksIHJlc3VsdFRhZ0dQUik7Cisg
ICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6QWRkcmVzcyhmcmFtZUdQUiwgR2VuZXJh
dG9yRnJhbWU6OmxvY2FsT2Zmc2V0KGdlbmVyYXRvckxvY2FsSW5kZXgpICsgT0JKRUNUX09GRlNF
VE9GKEpTVmFsdWUsIHUuYXNCaXRzLnBheWxvYWQpKSwgcmVzdWx0UGF5bG9hZEdQUik7CisKKyAg
ICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRUYWdHUFIsIHJlc3VsdFBheWxvYWRHUFIsIG5vZGUp
OworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBSZXNpemVHZW5lcmF0b3JMb2NhbHM6
IHsKKyAgICAgICAgY29tcGlsZVJlc2l6ZUdlbmVyYXRvckxvY2Fscyhub2RlKTsKKyAgICAgICAg
YnJlYWs7CisgICAgfQogICAgIGNhc2UgUHJvZmlsZVR5cGU6IHsKICAgICAgICAgSlNWYWx1ZU9w
ZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBHUFJUZW1wb3Jhcnkg
c2NyYXRjaDEodGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVDY0LmNwcAppbmRleCBlNzQ1Njk0MDRjMWI5Nzg0ODA2MTk3ZDE0NTQ1Y2QxZGIy
M2Q3YTVjLi41YThmY2Q0NGQxMzVhZGUxNTM3YjI3ZWRiZjBjOWEwOGI1YjMzYzRjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKQEAg
LTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJERkdTbG93UGF0aEdlbmVyYXRvci5oIgogI2luY2x1
ZGUgIkRlYnVnZ2VyLmgiCiAjaW5jbHVkZSAiRGlyZWN0QXJndW1lbnRzLmgiCisjaW5jbHVkZSAi
R2VuZXJhdG9yRnJhbWUuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJK
U0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNFbnZpcm9ubWVudFJlY29yZC5oIgpAQCAtMzY4OCw2
ICszNjg5LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAg
ICAgICAgY2VsbFJlc3VsdChyZXN1bHQuZ3ByKCksIG5vZGUpOwogICAgICAgICBicmVhazsKICAg
ICB9CisKKyAgICBjYXNlIE5ld0dlbmVyYXRvckZyYW1lOiB7CisgICAgICAgIGNvbXBpbGVOZXdH
ZW5lcmF0b3JGcmFtZShub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogICAgICAgICAKICAg
ICBjYXNlIFRvVGhpczogewogICAgICAgICBBU1NFUlQobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgp
ID09IFVudHlwZWRVc2UpOwpAQCAtNDcyMCw2ICs0NzI2LDM1IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5v
ZGUpOwogICAgICAgICBicmVhazsKICAgICB9CisgICAgY2FzZSBTZXRHZW5lcmF0b3JMb2NhbDog
eworICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBmcmFtZSh0aGlzLCBub2RlLT5jaGlsZDEo
KSk7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsK
KworICAgICAgICBHUFJSZWcgZnJhbWVHUFIgPSBmcmFtZS5ncHIoKTsKKyAgICAgICAgR1BSUmVn
IHZhbHVlR1BSID0gdmFsdWUuZ3ByKCk7CisgICAgICAgIHVuc2lnbmVkIGdlbmVyYXRvckxvY2Fs
SW5kZXggPSBub2RlLT5nZW5lcmF0b3JMb2NhbEluZGV4KCk7CisKKyAgICAgICAgbV9qaXQuc3Rv
cmU2NCh2YWx1ZUdQUiwgSklUQ29tcGlsZXI6OkFkZHJlc3MoZnJhbWVHUFIsIEdlbmVyYXRvckZy
YW1lOjpsb2NhbE9mZnNldChnZW5lcmF0b3JMb2NhbEluZGV4KSkpOworCisgICAgICAgIG5vUmVz
dWx0KG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBHZXRHZW5lcmF0b3JM
b2NhbDogeworICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBmcmFtZSh0aGlzLCBub2RlLT5j
aGlsZDEoKSk7CisgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CisKKyAgICAgICAg
R1BSUmVnIGZyYW1lR1BSID0gZnJhbWUuZ3ByKCk7CisgICAgICAgIEdQUlJlZyByZXN1bHRHUFIg
PSByZXN1bHQuZ3ByKCk7CisgICAgICAgIHVuc2lnbmVkIGdlbmVyYXRvckxvY2FsSW5kZXggPSBu
b2RlLT5nZW5lcmF0b3JMb2NhbEluZGV4KCk7CisKKyAgICAgICAgbV9qaXQubG9hZDY0KEpJVENv
bXBpbGVyOjpBZGRyZXNzKGZyYW1lR1BSLCBHZW5lcmF0b3JGcmFtZTo6bG9jYWxPZmZzZXQoZ2Vu
ZXJhdG9yTG9jYWxJbmRleCkpLCByZXN1bHRHUFIpOworICAgICAgICBqc1ZhbHVlUmVzdWx0KHJl
c3VsdEdQUiwgbm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIFJlc2l6ZUdl
bmVyYXRvckxvY2FsczogeworICAgICAgICBjb21waWxlUmVzaXplR2VuZXJhdG9yTG9jYWxzKG5v
ZGUpOworICAgICAgICBicmVhazsKKyAgICB9CiAgICAgY2FzZSBQcm9maWxlVHlwZTogewogICAg
ICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgICAg
IEdQUlRlbXBvcmFyeSBzY3JhdGNoMSh0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAKaW5kZXgg
NzJmMjIwMGNlYTEwYjk4MTBkYmE4YzdiMTlmZWZmMjRkYWE1ZGFlMy4uZDdjNzA1NjZmYzczN2Y4
OTBmMTU2YjUzNDUwOWQ5YTBjMDczOGU5YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAKQEAgLTI4
MSw2ICsyODEsMTEgQEAgY2xhc3MgU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UgOiBwdWJsaWMg
UGhhc2UgewogICAgICAgICAgICAgICAgIGNvbnNpZGVyQmFycmllcihtX25vZGUtPmNoaWxkMSgp
LCBtX25vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgY2FzZSBTZXRHZW5lcmF0b3JMb2NhbDogeworICAgICAgICAgICAg
ICAgIGNvbnNpZGVyQmFycmllcihtX25vZGUtPmNoaWxkMSgpLCBtX25vZGUtPmNoaWxkMigpKTsK
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAK
ICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0yOTYsNiAr
MzAxLDcgQEAgY2xhc3MgU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2Ug
ewogICAgICAgICAgICAgY2FzZSBOZXdBcnJheUJ1ZmZlcjoKICAgICAgICAgICAgIGNhc2UgTmV3
VHlwZWRBcnJheToKICAgICAgICAgICAgIGNhc2UgTmV3UmVnZXhwOgorICAgICAgICAgICAgY2Fz
ZSBOZXdHZW5lcmF0b3JGcmFtZToKICAgICAgICAgICAgIGNhc2UgTWF0ZXJpYWxpemVOZXdPYmpl
Y3Q6CiAgICAgICAgICAgICBjYXNlIE1hdGVyaWFsaXplQ3JlYXRlQWN0aXZhdGlvbjoKICAgICAg
ICAgICAgIGNhc2UgTmV3U3RyaW5nT2JqZWN0OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlLmNwcAppbmRleCAy
YzA1NTk4NDk4OTliZGY2ZmIxMTE3NTk3ZTEwNTRiZmYzNTQ2NjkzLi5lMWFlZjBiMmMzOTNmNTYx
OTQ4Y2NhNWE5NTlmMmUwNzEwODg0Mzg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlLmNwcApAQCAtMTQ5
LDYgKzE0OSw5IEBAIGNsYXNzIFN0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlIDogcHVibGljIFBo
YXNlIHsKICAgICAgICAgICAgICAgICBjYXNlIE5ld0dlbmVyYXRvckZ1bmN0aW9uOgogICAgICAg
ICAgICAgICAgICAgICByZWdpc3RlclN0cnVjdHVyZShtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpLT5nZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVyZSgpKTsKICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBOZXdHZW5lcmF0
b3JGcmFtZToKKyAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJTdHJ1Y3R1cmUobV9ncmFwaC5n
bG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+Z2VuZXJhdG9yRnJhbWVTdHJ1
Y3R1cmUoKSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAg
ICAKICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICBicmVhazsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVw
b3NpdG9yeS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJl
cG9zaXRvcnkuY3BwCmluZGV4IDk3YzA3ODRiYjQyYmM5MTlkMDZjZjUyM2M0MWUwMjQ2YTUzNTFk
OTEuLjY5ZDg5ZDZhZDQyNTQ5MjNiYzNmYWIzYzdhY2EyMDg5NWM1NWU1Y2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5
LmNwcApAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiRGlyZWN0QXJndW1lbnRzLmgiCiAj
aW5jbHVkZSAiRlRMQWJicmV2aWF0aW9ucy5oIgorI2luY2x1ZGUgIkdlbmVyYXRvckZyYW1lLmgi
CiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiSlNFbnZpcm9ubWVudFJlY29y
ZC5oIgogI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1lRW51bWVyYXRvci5oIgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaAppbmRl
eCA3N2U1Nzk4Njk0MGM2YWM5NmY4N2YxZjk0NWM0NjI1MTI4ODYzMGYwLi40ODg2M2MwYmQzMGY2
NDU3NjUzMTA4YmY0NTY5YjEyYzk0MDg1OGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaApAQCAtNDcsNiArNDcsOCBA
QAogICAgIG1hY3JvKERpcmVjdEFyZ3VtZW50c19sZW5ndGgsIERpcmVjdEFyZ3VtZW50czo6b2Zm
c2V0T2ZMZW5ndGgoKSkgXAogICAgIG1hY3JvKERpcmVjdEFyZ3VtZW50c19taW5DYXBhY2l0eSwg
RGlyZWN0QXJndW1lbnRzOjpvZmZzZXRPZk1pbkNhcGFjaXR5KCkpIFwKICAgICBtYWNybyhEaXJl
Y3RBcmd1bWVudHNfb3ZlcnJpZGVzLCBEaXJlY3RBcmd1bWVudHM6Om9mZnNldE9mT3ZlcnJpZGVz
KCkpIFwKKyAgICBtYWNybyhHZW5lcmF0b3JGcmFtZV9udW1iZXJPZkNhbGxlZUxvY2FscywgR2Vu
ZXJhdG9yRnJhbWU6Om51bWJlck9mQ2FsbGVlTG9jYWxzT2Zmc2V0KCkpIFwKKyAgICBtYWNybyhH
ZW5lcmF0b3JGcmFtZV9udW1iZXJPZlNhdmVkQ2FsbGVlTG9jYWxzLCBHZW5lcmF0b3JGcmFtZTo6
bnVtYmVyT2ZTYXZlZENhbGxlZUxvY2Fsc09mZnNldCgpKSBcCiAgICAgbWFjcm8oR2V0dGVyU2V0
dGVyX2dldHRlciwgR2V0dGVyU2V0dGVyOjpvZmZzZXRPZkdldHRlcigpKSBcCiAgICAgbWFjcm8o
R2V0dGVyU2V0dGVyX3NldHRlciwgR2V0dGVyU2V0dGVyOjpvZmZzZXRPZlNldHRlcigpKSBcCiAg
ICAgbWFjcm8oSlNBcnJheUJ1ZmZlclZpZXdfbGVuZ3RoLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zm
c2V0T2ZMZW5ndGgoKSkgXApAQCAtOTEsNiArOTMsNyBAQAogCiAjZGVmaW5lIEZPUl9FQUNIX0lO
REVYRURfQUJTVFJBQ1RfSEVBUChtYWNybykgXAogICAgIG1hY3JvKERpcmVjdEFyZ3VtZW50c19z
dG9yYWdlLCBEaXJlY3RBcmd1bWVudHM6OnN0b3JhZ2VPZmZzZXQoKSwgc2l6ZW9mKEVuY29kZWRK
U1ZhbHVlKSkgXAorICAgIG1hY3JvKEdlbmVyYXRvckZyYW1lX2NhbGxlZUxvY2FscywgR2VuZXJh
dG9yRnJhbWU6Om9mZnNldE9mTG9jYWxzKCksIHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4p
KSBcCiAgICAgbWFjcm8oSlNFbnZpcm9ubWVudFJlY29yZF92YXJpYWJsZXMsIEpTRW52aXJvbm1l
bnRSZWNvcmQ6Om9mZnNldE9mVmFyaWFibGVzKCksIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkpIFwK
ICAgICBtYWNybyhKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3JfY2FjaGVkUHJvcGVydHlOYW1lc1Zl
Y3RvckNvbnRlbnRzLCAwLCBzaXplb2YoV3JpdGVCYXJyaWVyPEpTU3RyaW5nPikpIFwKICAgICBt
YWNybyhKU1JvcGVTdHJpbmdfZmliZXJzLCBKU1JvcGVTdHJpbmc6Om9mZnNldE9mRmliZXJzKCks
IHNpemVvZihXcml0ZUJhcnJpZXI8SlNTdHJpbmc+KSkgXApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCmluZGV4IGQyYTQ5MGMyYTY3ZTZkYjhiOWE1YTc5
NjY0ZTU2NWUzZDZkOTUxZGMuLjBlMWRmZTg3NWUxMGE1YjU2NTU2ZmE5ZGQ1YmZkYjNlNjkwZjgz
ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVz
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAK
QEAgLTcyLDYgKzcyLDcgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUq
IG5vZGUpCiAgICAgY2FzZSBOZXdPYmplY3Q6CiAgICAgY2FzZSBOZXdBcnJheToKICAgICBjYXNl
IE5ld0FycmF5QnVmZmVyOgorICAgIGNhc2UgTmV3R2VuZXJhdG9yRnJhbWU6CiAgICAgY2FzZSBH
ZXRCeU9mZnNldDoKICAgICBjYXNlIEdldEdldHRlclNldHRlckJ5T2Zmc2V0OgogICAgIGNhc2Ug
R2V0R2V0dGVyOgpAQCAtMjE2LDYgKzIxNyw5IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2Fu
Q29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgUHV0U2V0dGVyQnlWYWw6CiAgICAgY2FzZSBD
b3B5UmVzdDoKICAgICBjYXNlIEdldFJlc3RMZW5ndGg6CisgICAgY2FzZSBTZXRHZW5lcmF0b3JM
b2NhbDoKKyAgICBjYXNlIEdldEdlbmVyYXRvckxvY2FsOgorICAgIGNhc2UgUmVzaXplR2VuZXJh
dG9yTG9jYWxzOgogICAgICAgICAvLyBUaGVzZSBhcmUgT0suCiAgICAgICAgIGJyZWFrOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCmluZGV4
IDM3Y2FlNWMxN2FkOWM3MWQwMThkNDFiYjZlOWE2NmM5MTc3OTY2ZjIuLmIxY2Y2NTBiY2I0OWY3
OWMyM2QzODk3YmQxOWM1Y2VhM2Y3MTg5MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCkBAIC01Myw2ICs1Myw3IEBACiAjaW5jbHVkZSAi
RlRMUGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZS5oIgogI2luY2x1ZGUgIkZUTFRodW5rcy5oIgog
I2luY2x1ZGUgIkZUTFdlaWdodGVkVGFyZ2V0LmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yRnJhbWUu
aCIKICNpbmNsdWRlICJKSVRBZGRHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJKSVRCaXRBbmRHZW5l
cmF0b3IuaCIKICNpbmNsdWRlICJKSVRCaXRPckdlbmVyYXRvci5oIgpAQCAtODM5LDYgKzg0MCw5
IEBAIGNsYXNzIExvd2VyREZHVG9MTFZNIHsKICAgICAgICAgY2FzZSBOZXdBcnJheVdpdGhTaXpl
OgogICAgICAgICAgICAgY29tcGlsZU5ld0FycmF5V2l0aFNpemUoKTsKICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIE5ld0dlbmVyYXRvckZyYW1lOgorICAgICAgICAgICAgY29tcGls
ZU5ld0dlbmVyYXRvckZyYW1lKCk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBH
ZXRUeXBlZEFycmF5Qnl0ZU9mZnNldDoKICAgICAgICAgICAgIGNvbXBpbGVHZXRUeXBlZEFycmF5
Qnl0ZU9mZnNldCgpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xMDcxLDYgKzEwNzUsMTUgQEAg
Y2xhc3MgTG93ZXJERkdUb0xMVk0gewogICAgICAgICBjYXNlIEdldFJlc3RMZW5ndGg6CiAgICAg
ICAgICAgICBjb21waWxlR2V0UmVzdExlbmd0aCgpOwogICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgUmVzaXplR2VuZXJhdG9yTG9jYWxzOgorICAgICAgICAgICAgY29tcGlsZVJlc2l6
ZUdlbmVyYXRvckxvY2FscygpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU2V0
R2VuZXJhdG9yTG9jYWw6CisgICAgICAgICAgICBjb21waWxlU2V0R2VuZXJhdG9yTG9jYWwoKTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdldEdlbmVyYXRvckxvY2FsOgorICAg
ICAgICAgICAgY29tcGlsZUdldEdlbmVyYXRvckxvY2FsKCk7CisgICAgICAgICAgICBicmVhazsK
IAogICAgICAgICBjYXNlIFBoYW50b21Mb2NhbDoKICAgICAgICAgY2FzZSBMb29wSGludDoKQEAg
LTM5MTYsNiArMzkyOSwyOCBAQCBjbGFzcyBMb3dlckRGR1RvTExWTSB7CiAgICAgICAgIG1fb3V0
LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOwogICAgICAgICBzZXRJbnQzMihtX291
dC5waGkobV9vdXQuaW50MzIsIHplcm9MZW5ndGhSZXN1bHQsIG5vblplcm9MZW5ndGhSZXN1bHQp
KTsKICAgICB9CisKKyAgICB2b2lkIGNvbXBpbGVSZXNpemVHZW5lcmF0b3JMb2NhbHMoKQorICAg
IHsKKyAgICAgICAgTFZhbHVlIGZyYW1lID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKTsKKyAg
ICAgICAgbV9vdXQuc3RvcmUzMihtX291dC5jb25zdEludDMyKG1fbm9kZS0+Z2VuZXJhdG9yRnJh
bWVMb2NhbHMoKSksIGZyYW1lLCBtX2hlYXBzLkdlbmVyYXRvckZyYW1lX251bWJlck9mU2F2ZWRD
YWxsZWVMb2NhbHMpOworICAgIH0KKworICAgIHZvaWQgY29tcGlsZVNldEdlbmVyYXRvckxvY2Fs
KCkKKyAgICB7CisgICAgICAgIG1fb3V0LnN0b3JlNjQoCisgICAgICAgICAgICBsb3dKU1ZhbHVl
KG1fbm9kZS0+Y2hpbGQyKCkpLAorICAgICAgICAgICAgbG93Q2VsbChtX25vZGUtPmNoaWxkMSgp
KSwKKyAgICAgICAgICAgIG1faGVhcHMuR2VuZXJhdG9yRnJhbWVfY2FsbGVlTG9jYWxzW21fbm9k
ZS0+Z2VuZXJhdG9yTG9jYWxJbmRleCgpXSk7CisgICAgfQorCisgICAgdm9pZCBjb21waWxlR2V0
R2VuZXJhdG9yTG9jYWwoKQorICAgIHsKKyAgICAgICAgc2V0SlNWYWx1ZSgKKyAgICAgICAgICAg
IG1fb3V0LmxvYWQ2NCgKKyAgICAgICAgICAgICAgICBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkp
LAorICAgICAgICAgICAgICAgIG1faGVhcHMuR2VuZXJhdG9yRnJhbWVfY2FsbGVlTG9jYWxzW21f
bm9kZS0+Z2VuZXJhdG9yTG9jYWxJbmRleCgpXSkpOworICAgIH0KICAgICAKICAgICB2b2lkIGNv
bXBpbGVOZXdPYmplY3QoKQogICAgIHsKQEAgLTQxNTAsNiArNDE4NSw0MiBAQCBjbGFzcyBMb3dl
ckRGR1RvTExWTSB7CiAgICAgICAgICAgICBtX291dC5jb25zdEludFB0cihzdHJ1Y3R1cmUpKTsK
ICAgICAgICAgc2V0SlNWYWx1ZSh2bUNhbGwobV9vdXQuaW50NjQsIG1fb3V0Lm9wZXJhdGlvbihv
cGVyYXRpb25OZXdBcnJheVdpdGhTaXplKSwgbV9jYWxsRnJhbWUsIHN0cnVjdHVyZVZhbHVlLCBw
dWJsaWNMZW5ndGgpKTsKICAgICB9CisKKyAgICB2b2lkIGNvbXBpbGVOZXdHZW5lcmF0b3JGcmFt
ZSgpCisgICAgeworICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAgICAgICBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSA9IGdsb2JhbE9iamVjdC0+Z2VuZXJhdG9yRnJhbWVTdHJ1Y3R1cmUo
KTsKKyAgICAgICAgdW5zaWduZWQgZ2VuZXJhdG9yTG9jYWxzU2l6ZSA9IG1fbm9kZS0+Z2VuZXJh
dG9yTG9jYWxzU2l6ZSgpOworCisgICAgICAgIExCYXNpY0Jsb2NrIHNsb3dQYXRoID0gRlRMX05F
V19CTE9DSyhtX291dCwgKCJOZXdHZW5lcmF0b3JGcmFtZSBzbG93IHBhdGgiKSk7CisgICAgICAg
IExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgiTmV3R2Vu
ZXJhdG9yRnJhbWUgY29udGludWF0aW9uIikpOworCisgICAgICAgIExCYXNpY0Jsb2NrIGxhc3RO
ZXh0ID0gbV9vdXQuaW5zZXJ0TmV3QmxvY2tzQmVmb3JlKHNsb3dQYXRoKTsKKyAgICAgICAgTFZh
bHVlIGZhc3RPYmplY3QgPSBhbGxvY2F0ZU9iamVjdDxHZW5lcmF0b3JGcmFtZT4oR2VuZXJhdG9y
RnJhbWU6OmFsbG9jYXRpb25TaXplRm9yTG9jYWxzKGdlbmVyYXRvckxvY2Fsc1NpemUpLCBzdHJ1
Y3R1cmUsIG1fb3V0LmludFB0clplcm8sIHNsb3dQYXRoKTsKKyAgICAgICAgbV9vdXQuc3RvcmUz
MihtX291dC5jb25zdEludDMyKGdlbmVyYXRvckxvY2Fsc1NpemUpLCBmYXN0T2JqZWN0LCBtX2hl
YXBzLkdlbmVyYXRvckZyYW1lX251bWJlck9mQ2FsbGVlTG9jYWxzKTsKKyAgICAgICAgbV9vdXQu
c3RvcmUzMihtX291dC5jb25zdEludDMyKDApLCBmYXN0T2JqZWN0LCBtX2hlYXBzLkdlbmVyYXRv
ckZyYW1lX251bWJlck9mU2F2ZWRDYWxsZWVMb2NhbHMpOworCisgICAgICAgIEpTVmFsdWUgZW1w
dHlWYWx1ZTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGdlbmVyYXRvckxvY2Fs
c1NpemU7ICsraSkKKyAgICAgICAgICAgIG1fb3V0LnN0b3JlNjQobV9vdXQuY29uc3RJbnQ2NChK
U1ZhbHVlOjplbmNvZGUoZW1wdHlWYWx1ZSkpLCBmYXN0T2JqZWN0LCBtX2hlYXBzLkdlbmVyYXRv
ckZyYW1lX2NhbGxlZUxvY2Fsc1tpXSk7CisKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgZmFzdFJl
c3VsdCA9IG1fb3V0LmFuY2hvcihmYXN0T2JqZWN0KTsKKyAgICAgICAgbV9vdXQuanVtcChjb250
aW51YXRpb24pOworCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKHNsb3dQYXRoLCBjb250aW51YXRp
b24pOworICAgICAgICBWZWN0b3I8TFZhbHVlPiBzbG93UGF0aEFyZ3VtZW50czsKKyAgICAgICAg
TFZhbHVlIGNhbGxSZXN1bHQgPSBsYXp5U2xvd1BhdGgoCisgICAgICAgICAgICBbPV0gKGNvbnN0
IFZlY3RvcjxMb2NhdGlvbj4mIGxvY2F0aW9ucykgLT4gUmVmUHRyPExhenlTbG93UGF0aDo6R2Vu
ZXJhdG9yPiB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUxhenlDYWxsR2VuZXJhdG9y
KAorICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb25OZXdHZW5lcmF0b3JGcmFtZSwKKyAgICAg
ICAgICAgICAgICAgICAgbG9jYXRpb25zWzBdLmRpcmVjdEdQUigpLCBDQ2FsbEhlbHBlcnM6OlRy
dXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoZ2VuZXJh
dG9yTG9jYWxzU2l6ZSkpOworICAgICAgICAgICAgfSk7CisgICAgICAgIFZhbHVlRnJvbUJsb2Nr
IHNsb3dSZXN1bHQgPSBtX291dC5hbmNob3IoY2FsbFJlc3VsdCk7CisgICAgICAgIG1fb3V0Lmp1
bXAoY29udGludWF0aW9uKTsKKworICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24s
IGxhc3ROZXh0KTsKKyAgICAgICAgc2V0SlNWYWx1ZShtX291dC5waGkobV9vdXQuaW50UHRyLCBm
YXN0UmVzdWx0LCBzbG93UmVzdWx0KSk7CisgICAgfQogICAgIAogICAgIHZvaWQgY29tcGlsZUFs
bG9jYXRlUHJvcGVydHlTdG9yYWdlKCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAK
aW5kZXggYTNiZGZhN2NkNWQwZjU3MjQ3ZjFiZThjNDBiMjUxMGQyOWQ4MDBmZi4uMGI5ZmQ4ZDM0
M2ZkOGNlYjI3YWFmN2EzOTQwMDcwNDY0NzRjMjY4YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
LmNwcApAQCAtMjE2LDcgKzIxNiw5IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNz
KCkKICAgICAgICAgREVGSU5FX09QKG9wX2NoZWNrX3RkeikKICAgICAgICAgREVGSU5FX09QKG9w
X2Fzc2VydCkKICAgICAgICAgREVGSU5FX09QKG9wX3NhdmUpCi0gICAgICAgIERFRklORV9PUChv
cF9yZXN1bWUpCisgICAgICAgIERFRklORV9PUChvcF9uZXdfZ2VuZXJhdG9yX2ZyYW1lKQorICAg
ICAgICBERUZJTkVfT1Aob3BfcmVzdW1lX2Zyb21fZ2VuZXJhdG9yX2ZyYW1lKQorICAgICAgICBE
RUZJTkVfT1Aob3BfY2xlYXJfZ2VuZXJhdG9yX2ZyYW1lKQogICAgICAgICBERUZJTkVfT1Aob3Bf
ZGVidWcpCiAgICAgICAgIERFRklORV9PUChvcF9kZWxfYnlfaWQpCiAgICAgICAgIERFRklORV9P
UChvcF9kaXYpCkBAIC0yODksNiArMjkxLDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFp
blBhc3MoKQogICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2dldHRlcl9zZXR0ZXJfYnlfaWQpCiAg
ICAgICAgIERFRklORV9PUChvcF9wdXRfZ2V0dGVyX2J5X3ZhbCkKICAgICAgICAgREVGSU5FX09Q
KG9wX3B1dF9zZXR0ZXJfYnlfdmFsKQorICAgICAgICBERUZJTkVfT1Aob3Bfbm9wKQogCiAgICAg
ICAgIERFRklORV9PUChvcF9yZXQpCiAgICAgICAgIERFRklORV9PUChvcF9yc2hpZnQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVQuaAppbmRleCBkZjdiM2RjNWU4OTIwZWU0ZWY5MmJjYWNiYWVmZjFiNGMw
MGQ5MzY5Li5lYzY4MWQwOTkwZWYwYzJhMWIwYzQxZDU0MTJiYmNlMGMwZDM5MWRlIDEwMDc1NQot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklULmgKQEAgLTQ5NSw3ICs0OTUsOSBAQAogICAgICAgICB2b2lkIGVtaXRf
b3BfY2hlY2tfdGR6KEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9hc3NlcnQo
SW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX3NhdmUoSW5zdHJ1Y3Rpb24qKTsK
LSAgICAgICAgdm9pZCBlbWl0X29wX3Jlc3VtZShJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lk
IGVtaXRfb3BfcmVzdW1lX2Zyb21fZ2VuZXJhdG9yX2ZyYW1lKEluc3RydWN0aW9uKik7CisgICAg
ICAgIHZvaWQgZW1pdF9vcF9jbGVhcl9nZW5lcmF0b3JfZnJhbWUoSW5zdHJ1Y3Rpb24qKTsKKyAg
ICAgICAgdm9pZCBlbWl0X29wX25ld19nZW5lcmF0b3JfZnJhbWUoSW5zdHJ1Y3Rpb24qKTsKICAg
ICAgICAgdm9pZCBlbWl0X29wX2RlYnVnKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1p
dF9vcF9kZWxfYnlfaWQoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2RpdihJ
bnN0cnVjdGlvbiopOwpAQCAtNTk1LDYgKzU5Nyw3IEBACiAgICAgICAgIHZvaWQgZW1pdF9vcF9l
bnVtZXJhdG9yX3N0cnVjdHVyZV9wbmFtZShJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVt
aXRfb3BfZW51bWVyYXRvcl9nZW5lcmljX3BuYW1lKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZv
aWQgZW1pdF9vcF90b19pbmRleF9zdHJpbmcoSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBl
bWl0X29wX25vcChJbnN0cnVjdGlvbiopOwogCiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfYWRk
KEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogICAgICAg
ICB2b2lkIGVtaXRTbG93X29wX2JpdGFuZChJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVu
dHJ5Pjo6aXRlcmF0b3ImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3Bjb2Rlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3Bw
CmluZGV4IDczOGNiNjNmZWQ5MWI0OTg1NWQ1ZDAzM2Q0NjMzNDVmZGQ0NzZkOWIuLjRhNmE4OGM4
NGY1NzVmMTRiYWI2MDM5MzkwZjQ2ODE5NGVmNzM3MjYgMTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGNvZGVzLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkNvcGllZFNw
YWNlSW5saW5lcy5oIgogI2luY2x1ZGUgIkRlYnVnZ2VyLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9u
LmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yRnJhbWUuaCIKICNpbmNsdWRlICJIZWFwLmgiCiAjaW5j
bHVkZSAiSklUSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKQEAgLTg5Myw2ICs4OTQs
MjMgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3RvX3N0cmluZyhJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2UKICAgICBzbG93UGF0aENhbGwuY2FsbCgpOwog
fQogCit2b2lkIEpJVDo6ZW1pdF9vcF9yZXN1bWVfZnJvbV9nZW5lcmF0b3JfZnJhbWUoSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBpbnQgZHN0ID0gY3VycmVudEluc3Ry
dWN0aW9uWzFdLnUub3BlcmFuZDsKKyAgICBpbnQgZnJhbWUgPSBjdXJyZW50SW5zdHJ1Y3Rpb25b
Ml0udS5vcGVyYW5kOworICAgIHVuc2lnbmVkIGluZGV4ID0gY3VycmVudEluc3RydWN0aW9uWzNd
LnUudW5zaWduZWRWYWx1ZTsKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGZyYW1lLCByZWdU
MSk7CisgICAgbG9hZDY0KEFkZHJlc3MocmVnVDEsIEdlbmVyYXRvckZyYW1lOjpsb2NhbE9mZnNl
dChpbmRleCkpLCByZWdUMCk7CisgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QpOworfQor
Cit2b2lkIEpJVDo6ZW1pdF9vcF9jbGVhcl9nZW5lcmF0b3JfZnJhbWUoSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBpbnQgZnJhbWUgPSBjdXJyZW50SW5zdHJ1Y3Rpb25b
MV0udS5vcGVyYW5kOworICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoZnJhbWUsIHJlZ1QxKTsK
KyAgICBzdG9yZTMyKFRydXN0ZWRJbW0zMigwKSwgQWRkcmVzcyhyZWdUMSwgR2VuZXJhdG9yRnJh
bWU6Om51bWJlck9mU2F2ZWRDYWxsZWVMb2NhbHNPZmZzZXQoKSkpOworfQorCiAjZW5kaWYgLy8g
VVNFKEpTVkFMVUU2NCkKIAogdm9pZCBKSVQ6OmVtaXRfb3BfbG9vcF9oaW50KEluc3RydWN0aW9u
KikKQEAgLTE0MzUsMTIgKzE0NTMsMTYgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bfc2F2ZShJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CiB9CiAK
LXZvaWQgSklUOjplbWl0X29wX3Jlc3VtZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQordm9pZCBKSVQ6OmVtaXRfb3BfbmV3X2dlbmVyYXRvcl9mcmFtZShJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQogewotICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhp
cywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfcmVzdW1lKTsKKyAgICBKSVRTbG93UGF0
aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX25l
d19nZW5lcmF0b3JfZnJhbWUpOwogICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CiB9CiAKK3ZvaWQg
SklUOjplbWl0X29wX25vcChJbnN0cnVjdGlvbiopCit7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpT
QwogCiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3Bjb2RlczMyXzY0LmNwcAppbmRleCBjMzI2ZmYzZTAxZTVhNDI0M2U3Yjc4YmVlODUyY2Zi
Nzk3ZDM5MmVlLi5kNDJlODVkOWY1N2NjOGQ1MGI5YjI3YjM5MDc3MmNjMjUxNzAzOTViIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCkBAIC0xMzI4
LDYgKzEzMjgsMjQgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHJvZmlsZV90eXBlKEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAganVtcFRvRW5kLmxpbmsodGhpcyk7CiB9CiAKK3Zv
aWQgSklUOjplbWl0X29wX3Jlc3VtZV9mcm9tX2dlbmVyYXRvcl9mcmFtZShJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQoreworICAgIGludCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25b
MV0udS5vcGVyYW5kOworICAgIGludCBmcmFtZSA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9w
ZXJhbmQ7CisgICAgdW5zaWduZWQgaW5kZXggPSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS51bnNp
Z25lZFZhbHVlOworICAgIGVtaXRMb2FkUGF5bG9hZChmcmFtZSwgcmVnVDIpOworICAgIGxvYWQz
MihBZGRyZXNzKHJlZ1QyLCBHZW5lcmF0b3JGcmFtZTo6bG9jYWxPZmZzZXQoaW5kZXgpICsgT0JK
RUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnRhZykpLCByZWdUMSk7CisgICAgbG9hZDMy
KEFkZHJlc3MocmVnVDIsIEdlbmVyYXRvckZyYW1lOjpsb2NhbE9mZnNldChpbmRleCkgKyBPQkpF
Q1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMucGF5bG9hZCkpLCByZWdUMCk7CisgICAgZW1p
dFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QsIEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdUMCkpOworfQor
Cit2b2lkIEpJVDo6ZW1pdF9vcF9jbGVhcl9nZW5lcmF0b3JfZnJhbWUoSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBpbnQgZnJhbWUgPSBjdXJyZW50SW5zdHJ1Y3Rpb25b
MV0udS5vcGVyYW5kOworICAgIGVtaXRMb2FkUGF5bG9hZChmcmFtZSwgcmVnVDEpOworICAgIHN0
b3JlMzIoVHJ1c3RlZEltbTMyKDApLCBBZGRyZXNzKHJlZ1QxLCBHZW5lcmF0b3JGcmFtZTo6bnVt
YmVyT2ZTYXZlZENhbGxlZUxvY2Fsc09mZnNldCgpKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpT
QwogCiAjZW5kaWYgLy8gVVNFKEpTVkFMVUUzMl82NCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKaW5kZXggMmI0ZTYxOTg2
ZDMxMmFjOWU0Zjg3MzczY2U3YWEwYjlmZDBjZTc1YS4uYWZlMDk2ODQ4OGY0NmQxNjc1YzkxN2Vj
YjJiNjIwYzAwNTYxMjI0NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRl
ICJEaXJlY3RBcmd1bWVudHMuaCIKICNpbmNsdWRlICJFeGNlcHRpb24uaCIKICNpbmNsdWRlICJF
eGVjdXRhYmxlLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yRnJhbWUuaCIKICNpbmNsdWRlICJIZWFw
LmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5h
c20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20K
aW5kZXggY2Q0Y2U5MDYzYjE5NTc1YTk1N2UzY2EzZTIyYmU1NzkxNWJkYjU5YS4uYjkyMGE2Y2U2
NmNmYmUxMzUzMzRkYTAxZjY5ZDU4ZGU0NjYwY2U0ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQpAQCAtMTY1LDYgKzE2NSw3
IEBAIGNvbnN0IFNsb3RTaXplID0gOAogCiBjb25zdCBKU0Vudmlyb25tZW50UmVjb3JkX3Zhcmlh
YmxlcyA9IChzaXplb2YgSlNFbnZpcm9ubWVudFJlY29yZCArIFNsb3RTaXplIC0gMSkgJiB+KFNs
b3RTaXplIC0gMSkKIGNvbnN0IERpcmVjdEFyZ3VtZW50c19zdG9yYWdlID0gKHNpemVvZiBEaXJl
Y3RBcmd1bWVudHMgKyBTbG90U2l6ZSAtIDEpICYgfihTbG90U2l6ZSAtIDEpCitjb25zdCBHZW5l
cmF0b3JGcmFtZV9jYWxsZWVMb2NhbHMgPSAoc2l6ZW9mIEdlbmVyYXRvckZyYW1lICsgU2xvdFNp
emUgLSAxKSAmIH4oU2xvdFNpemUgLSAxKQogCiBjb25zdCBTdGFja0FsaWdubWVudCA9IDE2CiBj
b25zdCBTdGFja0FsaWdubWVudFNsb3RzID0gMgpAQCAtMTI1Niw2ICsxMjU3LDEyIEBAIF9sbGlu
dF9vcF9uZXdfcmVnZXhwOgogICAgIGRpc3BhdGNoKDMpCiAKIAorX2xsaW50X29wX25ld19nZW5l
cmF0b3JfZnJhbWU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxTbG93UGF0aChfc2xv
d19wYXRoX25ld19nZW5lcmF0b3JfZnJhbWUpCisgICAgZGlzcGF0Y2goMykKKworCiBfbGxpbnRf
b3BfbGVzczoKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgY2FsbFNsb3dQYXRoKF9zbG93X3Bh
dGhfbGVzcykKQEAgLTE1OTUsMTAgKzE2MDIsMTYgQEAgX2xsaW50X29wX3NhdmU6CiAgICAgZGlz
cGF0Y2goNCkKIAogCi1fbGxpbnRfb3BfcmVzdW1lOgorX2xsaW50X29wX3NhdmVfaGludDoKICAg
ICB0cmFjZUV4ZWN1dGlvbigpCi0gICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfcmVzdW1lKQot
ICAgIGRpc3BhdGNoKDMpCisgICAgbm90U3VwcG9ydGVkKCkKKyAgICBkaXNwYXRjaCg0KQorCisK
K19sbGludF9vcF9yZXN1bWVfaGludDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbm90U3Vw
cG9ydGVkKCkKKyAgICBkaXNwYXRjaCg0KQogCiAKIF9sbGludF9vcF9jcmVhdGVfbGV4aWNhbF9l
bnZpcm9ubWVudDoKQEAgLTE3MDgsNiArMTcyMSwxMCBAQCBfbGxpbnRfb3BfY29weV9yZXN0Ogog
ICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRoX2NvcHlfcmVzdCkKICAgICBkaXNwYXRjaCg0KQog
CitfbGxpbnRfb3Bfbm9wOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBkaXNwYXRjaCgxKQor
CiAKICMgTGFzdGx5LCBtYWtlIHN1cmUgdGhhdCB3ZSBjYW4gbGluayBldmVuIHRob3VnaCB3ZSBk
b24ndCBzdXBwb3J0IGFsbCBvcGNvZGVzLgogIyBUaGVzZSBvcGNvZGVzIHNob3VsZCBuZXZlciBh
cmlzZSB3aGVuIHVzaW5nIExMSW50IG9yIGVpdGhlciBKSVQuIFdlIGFzc2VydApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5h
c20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0
LmFzbQppbmRleCBkMDZiNGQzOTZkMzFjZDFiYzUyYzM3MTFlMTMzZmJhZWRjYzJjMDRlLi4wY2Vm
N2UxNDhmMTI3ZDdlYzRiM2M3YzdlMzA2MmM0MWYxNDgyNWMzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQpA
QCAtMjQ2MCwzICsyNDYwLDIwIEBAIF9sbGludF9vcF9nZXRfcmVzdF9sZW5ndGg6CiAgICAgc3Rv
cmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCiAgICAgc3RvcmVpIEludDMyVGFnLCBU
YWdPZmZzZXRbY2ZyLCB0MSwgOF0KICAgICBkaXNwYXRjaCgzKQorCitfbGxpbnRfb3BfY2xlYXJf
Z2VuZXJhdG9yX2ZyYW1lOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkVmFyaWFibGUo
MSwgdDIsIHQxLCB0MCkKKyAgICBzdG9yZWkgMCwgR2VuZXJhdG9yRnJhbWU6Om1fbnVtYmVyT2ZT
YXZlZENhbGxlZUxvY2Fsc1t0MF0KKyAgICBkaXNwYXRjaCgyKQorCitfbGxpbnRfb3BfcmVzdW1l
X2Zyb21fZ2VuZXJhdG9yX2ZyYW1lOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkVmFy
aWFibGUoMiwgdDIsIHQxLCB0MCkKKyAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMywgdDMpCisg
ICAgbG9hZHAgR2VuZXJhdG9yRnJhbWVfY2FsbGVlTG9jYWxzICsgVGFnT2Zmc2V0W3QwLCB0Mywg
OF0sIHQxCisgICAgbG9hZHAgR2VuZXJhdG9yRnJhbWVfY2FsbGVlTG9jYWxzICsgUGF5bG9hZE9m
ZnNldFt0MCwgdDMsIDhdLCB0MgorICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigxLCB0MCkKKyAg
ICBzdG9yZWkgdDEsIFRhZ09mZnNldFtjZnIsIHQwLCA4XQorICAgIHN0b3JlaSB0MiwgUGF5bG9h
ZE9mZnNldFtjZnIsIHQwLCA4XQorICAgIGRpc3BhdGNoKDQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbSBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCmluZGV4IDg1MTcz
YmM4MjYyMTQ2YjBlMGQxZTAxOTJiNzA2MDI4YmJkOTA2ODMuLjQ5MmM2M2MyNWNkZmFlMzJmZjll
ZWI4YTRkMTk3ZTU4NTUzMTlhYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCkBAIC0yMzIxLDMgKzIzMjEsMTggQEAg
X2xsaW50X29wX2dldF9yZXN0X2xlbmd0aDoKICAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMSwg
dDEpCiAgICAgc3RvcmVxIHQwLCBbY2ZyLCB0MSwgOF0KICAgICBkaXNwYXRjaCgzKQorCitfbGxp
bnRfb3BfY2xlYXJfZ2VuZXJhdG9yX2ZyYW1lOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBs
b2FkVmFyaWFibGUoMSwgdDApCisgICAgc3RvcmVpIDAsIEdlbmVyYXRvckZyYW1lOjptX251bWJl
ck9mU2F2ZWRDYWxsZWVMb2NhbHNbdDBdCisgICAgZGlzcGF0Y2goMikKKworX2xsaW50X29wX3Jl
c3VtZV9mcm9tX2dlbmVyYXRvcl9mcmFtZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9h
ZFZhcmlhYmxlKDIsIHQwKQorICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigzLCB0MSkKKyAgICBs
b2FkcSBHZW5lcmF0b3JGcmFtZV9jYWxsZWVMb2NhbHNbdDAsIHQxLCA4XSwgdDAKKyAgICBsb2Fk
aXNGcm9tSW5zdHJ1Y3Rpb24oMSwgdDEpCisgICAgc3RvcmVxIHQwLCBbY2ZyLCB0MSwgOF0KKyAg
ICBkaXNwYXRjaCg0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Q
YXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCmluZGV4
IDhkMzcwNjM0NTEyOGU5ZGY5ZGFjMzI1N2Y3YzVmNGU1YWIzYTljMzQuLmU4NjA1M2I0ODJhOGQz
NmIzMzVjMDhiYTdkMzY3NTZkM2I3OTZhZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1BhcnNlci5jcHAKQEAgLTI1MCw5ICsyNTAsMTAgQEAKICAgICBib29sIGlzQXJyb3dGdW5jdGlv
bkJvZHlFeHByZXNzaW9uID0gZmFsc2U7CiAgICAgaWYgKG1fbGV4ZXItPmlzUmVwYXJzaW5nRnVu
Y3Rpb24oKSkgewogICAgICAgICBQYXJzZXJGdW5jdGlvbkluZm88QVNUQnVpbGRlcj4gZnVuY3Rp
b25JbmZvOwotICAgICAgICBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJh
dG9yQm9keU1vZGUpCi0gICAgICAgICAgICBmdW5jdGlvbkluZm8ucGFyYW1ldGVycyA9IGNyZWF0
ZUdlbmVyYXRvclBhcmFtZXRlcnMoY29udGV4dCk7Ci0gICAgICAgIGVsc2UKKyAgICAgICAgaWYg
KHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckJvZHlNb2RlKSB7CisgICAg
ICAgICAgICB1bnNpZ25lZCBwYXJhbWV0ZXJDb3VudCA9IDA7CisgICAgICAgICAgICBmdW5jdGlv
bkluZm8ucGFyYW1ldGVycyA9IGNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMoY29udGV4dCwgcGFy
YW1ldGVyQ291bnQpOworICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIHBhcnNlRnVuY3Rpb25Q
YXJhbWV0ZXJzKGNvbnRleHQsIHBhcnNlTW9kZSwgZnVuY3Rpb25JbmZvKTsKICAgICAgICAgbV9w
YXJhbWV0ZXJzID0gZnVuY3Rpb25JbmZvLnBhcmFtZXRlcnM7CiAKQEAgLTQ4NSwxMCArNDg2LDkg
QEAKIAogICAgIFBhcnNlckZ1bmN0aW9uSW5mbzxUcmVlQnVpbGRlcj4gaW5mbzsKICAgICBpbmZv
Lm5hbWUgPSAmbV92bS0+cHJvcGVydHlOYW1lcy0+bnVsbElkZW50aWZpZXI7Ci0gICAgaW5mby5w
YXJhbWV0ZXJzID0gY3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhjb250ZXh0KTsKKyAgICBpbmZv
LnBhcmFtZXRlcnMgPSBjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKGNvbnRleHQsIGluZm8ucGFy
YW1ldGVyQ291bnQpOwogICAgIGluZm8uc3RhcnRPZmZzZXQgPSBwYXJhbWV0ZXJzU3RhcnQ7CiAg
ICAgaW5mby5zdGFydExpbmUgPSB0b2tlbkxpbmUoKTsKLSAgICBpbmZvLnBhcmFtZXRlckNvdW50
ID0gNDsgLy8gZ2VuZXJhdG9yLCBzdGF0ZSwgdmFsdWUsIHJlc3VtZSBtb2RlCiAKICAgICB7CiAg
ICAgICAgIEF1dG9Qb3BTY29wZVJlZiBnZW5lcmF0b3JCb2R5U2NvcGUodGhpcywgcHVzaFNjb3Bl
KCkpOwpAQCAtMTc4MSwzMiArMTc4MSwzMCBAQCBzdGF0aWMgY29uc3QgY2hhciogc3RyaW5nRm9y
RnVuY3Rpb25Nb2RlKFNvdXJjZVBhcnNlTW9kZSBtb2RlKQogfQogCiB0ZW1wbGF0ZSA8dHlwZW5h
bWUgTGV4ZXJUeXBlPgotdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiB0eXBlbmFtZSBUcmVl
QnVpbGRlcjo6Rm9ybWFsUGFyYW1ldGVyTGlzdCBQYXJzZXI8TGV4ZXJUeXBlPjo6Y3JlYXRlR2Vu
ZXJhdG9yUGFyYW1ldGVycyhUcmVlQnVpbGRlciYgY29udGV4dCkKK3RlbXBsYXRlIDxjbGFzcyBU
cmVlQnVpbGRlcj4gdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkZvcm1hbFBhcmFtZXRlckxpc3QgUGFy
c2VyPExleGVyVHlwZT46OmNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMoVHJlZUJ1aWxkZXImIGNv
bnRleHQsIHVuc2lnbmVkJiBwYXJhbWV0ZXJDb3VudCkKIHsKICAgICBhdXRvIHBhcmFtZXRlcnMg
PSBjb250ZXh0LmNyZWF0ZUZvcm1hbFBhcmFtZXRlckxpc3QoKTsKIAogICAgIEpTVG9rZW5Mb2Nh
dGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOwogICAgIEpTVGV4dFBvc2l0aW9uIHBvc2l0
aW9uID0gdG9rZW5TdGFydFBvc2l0aW9uKCk7CiAKLSAgICAvLyBAZ2VuZXJhdG9yCi0gICAgZGVj
bGFyZVBhcmFtZXRlcigmbV92bS0+cHJvcGVydHlOYW1lcy0+Z2VuZXJhdG9yUHJpdmF0ZU5hbWUp
OwotICAgIGF1dG8gZ2VuZXJhdG9yID0gY29udGV4dC5jcmVhdGVCaW5kaW5nTG9jYXRpb24obG9j
YXRpb24sIG1fdm0tPnByb3BlcnR5TmFtZXMtPmdlbmVyYXRvclByaXZhdGVOYW1lLCBwb3NpdGlv
biwgcG9zaXRpb24sIEFzc2lnbm1lbnRDb250ZXh0OjpEZWNsYXJhdGlvblN0YXRlbWVudCk7Ci0g
ICAgY29udGV4dC5hcHBlbmRQYXJhbWV0ZXIocGFyYW1ldGVycywgZ2VuZXJhdG9yLCAwKTsKKyAg
ICBhdXRvIGFkZFBhcmFtZXRlciA9IFsmXShjb25zdCBJZGVudGlmaWVyJiBuYW1lKSB7CisgICAg
ICAgIGRlY2xhcmVQYXJhbWV0ZXIoJm5hbWUpOworICAgICAgICBhdXRvIGJpbmRpbmcgPSBjb250
ZXh0LmNyZWF0ZUJpbmRpbmdMb2NhdGlvbihsb2NhdGlvbiwgbmFtZSwgcG9zaXRpb24sIHBvc2l0
aW9uLCBBc3NpZ25tZW50Q29udGV4dDo6RGVjbGFyYXRpb25TdGF0ZW1lbnQpOworICAgICAgICBj
b250ZXh0LmFwcGVuZFBhcmFtZXRlcihwYXJhbWV0ZXJzLCBiaW5kaW5nLCAwKTsKKyAgICAgICAg
KytwYXJhbWV0ZXJDb3VudDsKKyAgICB9OwogCisgICAgLy8gQGdlbmVyYXRvcgorICAgIGFkZFBh
cmFtZXRlcihtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5nZW5lcmF0b3JQcml2YXRlTmFtZSk7CiAgICAg
Ly8gQGdlbmVyYXRvclN0YXRlCi0gICAgZGVjbGFyZVBhcmFtZXRlcigmbV92bS0+cHJvcGVydHlO
YW1lcy0+Z2VuZXJhdG9yU3RhdGVQcml2YXRlTmFtZSk7Ci0gICAgYXV0byBnZW5lcmF0b3JTdGF0
ZSA9IGNvbnRleHQuY3JlYXRlQmluZGluZ0xvY2F0aW9uKGxvY2F0aW9uLCBtX3ZtLT5wcm9wZXJ0
eU5hbWVzLT5nZW5lcmF0b3JTdGF0ZVByaXZhdGVOYW1lLCBwb3NpdGlvbiwgcG9zaXRpb24sIEFz
c2lnbm1lbnRDb250ZXh0OjpEZWNsYXJhdGlvblN0YXRlbWVudCk7Ci0gICAgY29udGV4dC5hcHBl
bmRQYXJhbWV0ZXIocGFyYW1ldGVycywgZ2VuZXJhdG9yU3RhdGUsIDApOwotCisgICAgYWRkUGFy
YW1ldGVyKG1fdm0tPnByb3BlcnR5TmFtZXMtPmdlbmVyYXRvclN0YXRlUHJpdmF0ZU5hbWUpOwog
ICAgIC8vIEBnZW5lcmF0b3JWYWx1ZQotICAgIGRlY2xhcmVQYXJhbWV0ZXIoJm1fdm0tPnByb3Bl
cnR5TmFtZXMtPmdlbmVyYXRvclZhbHVlUHJpdmF0ZU5hbWUpOwotICAgIGF1dG8gZ2VuZXJhdG9y
VmFsdWUgPSBjb250ZXh0LmNyZWF0ZUJpbmRpbmdMb2NhdGlvbihsb2NhdGlvbiwgbV92bS0+cHJv
cGVydHlOYW1lcy0+Z2VuZXJhdG9yVmFsdWVQcml2YXRlTmFtZSwgcG9zaXRpb24sIHBvc2l0aW9u
LCBBc3NpZ25tZW50Q29udGV4dDo6RGVjbGFyYXRpb25TdGF0ZW1lbnQpOwotICAgIGNvbnRleHQu
YXBwZW5kUGFyYW1ldGVyKHBhcmFtZXRlcnMsIGdlbmVyYXRvclZhbHVlLCAwKTsKLQorICAgIGFk
ZFBhcmFtZXRlcihtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5nZW5lcmF0b3JWYWx1ZVByaXZhdGVOYW1l
KTsKICAgICAvLyBAZ2VuZXJhdG9yUmVzdW1lTW9kZQotICAgIGRlY2xhcmVQYXJhbWV0ZXIoJm1f
dm0tPnByb3BlcnR5TmFtZXMtPmdlbmVyYXRvclJlc3VtZU1vZGVQcml2YXRlTmFtZSk7Ci0gICAg
YXV0byBnZW5lcmF0b3JSZXN1bWVNb2RlID0gY29udGV4dC5jcmVhdGVCaW5kaW5nTG9jYXRpb24o
bG9jYXRpb24sIG1fdm0tPnByb3BlcnR5TmFtZXMtPmdlbmVyYXRvclJlc3VtZU1vZGVQcml2YXRl
TmFtZSwgcG9zaXRpb24sIHBvc2l0aW9uLCBBc3NpZ25tZW50Q29udGV4dDo6RGVjbGFyYXRpb25T
dGF0ZW1lbnQpOwotICAgIGNvbnRleHQuYXBwZW5kUGFyYW1ldGVyKHBhcmFtZXRlcnMsIGdlbmVy
YXRvclJlc3VtZU1vZGUsIDApOworICAgIGFkZFBhcmFtZXRlcihtX3ZtLT5wcm9wZXJ0eU5hbWVz
LT5nZW5lcmF0b3JSZXN1bWVNb2RlUHJpdmF0ZU5hbWUpOworICAgIC8vIEBnZW5lcmF0b3JGcmFt
ZQorICAgIGFkZFBhcmFtZXRlcihtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5nZW5lcmF0b3JGcmFtZVBy
aXZhdGVOYW1lKTsKIAogICAgIHJldHVybiBwYXJhbWV0ZXJzOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvUGFyc2VyLmgKaW5kZXggYTExYjM1YzEwMWZlNWI4NDljYjIzMzA5NmM1NjgzMTM3
MDY2Y2FiZi4uZTYxNDlhM2FjMzY5NDA0ODkzZDIzNjk2OTMxNmI1YzMwMzNiZTg1MSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCkBAIC0xMjU5LDcgKzEyNTksNyBAQCBjbGFz
cyBQYXJzZXIgewogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gTkVWRVJfSU5MSU5F
IGJvb2wgcGFyc2VGdW5jdGlvbkluZm8oVHJlZUJ1aWxkZXImLCBGdW5jdGlvblJlcXVpcmVtZW50
cywgU291cmNlUGFyc2VNb2RlLCBib29sIG5hbWVJc0luQ29udGFpbmluZ1Njb3BlLCBDb25zdHJ1
Y3RvcktpbmQsIFN1cGVyQmluZGluZywgaW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBQYXJzZXJG
dW5jdGlvbkluZm88VHJlZUJ1aWxkZXI+JiwgRnVuY3Rpb25EZWZpbml0aW9uVHlwZSk7CiAgICAg
CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBORVZFUl9JTkxJTkUgaW50IHBhcnNl
RnVuY3Rpb25QYXJhbWV0ZXJzKFRyZWVCdWlsZGVyJiwgU291cmNlUGFyc2VNb2RlLCBQYXJzZXJG
dW5jdGlvbkluZm88VHJlZUJ1aWxkZXI+Jik7Ci0gICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWls
ZGVyPiBORVZFUl9JTkxJTkUgdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkZvcm1hbFBhcmFtZXRlckxp
c3QgY3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhUcmVlQnVpbGRlciYpOworICAgIHRlbXBsYXRl
IDxjbGFzcyBUcmVlQnVpbGRlcj4gTkVWRVJfSU5MSU5FIHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpG
b3JtYWxQYXJhbWV0ZXJMaXN0IGNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMoVHJlZUJ1aWxkZXIm
LCB1bnNpZ25lZCYgcGFyYW1ldGVyQ291bnQpOwogCiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVC
dWlsZGVyPiBORVZFUl9JTkxJTkUgVHJlZUNsYXNzRXhwcmVzc2lvbiBwYXJzZUNsYXNzKFRyZWVC
dWlsZGVyJiwgRnVuY3Rpb25SZXF1aXJlbWVudHMsIFBhcnNlckNsYXNzSW5mbzxUcmVlQnVpbGRl
cj4mKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9u
U2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQ
YXRocy5jcHAKaW5kZXggNzhiNDNjNGQzODlmZjdhOTA4MzEzYjU1NDA1NzBlODgyZTFiMDM3MS4u
ZGNhMmQ0ZTY2NmQwNzNjZjM5MGY2MWYyOTdjYTczOTdiMzZjNThkMyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCkBAIC02OTcsMzMg
KzY5NywxMiBAQCBzdGF0aWMgdm9pZCB1cGRhdGVSZXN1bHRQcm9maWxlRm9yQmluYXJ5QXJpdGhP
cChFeGVjU3RhdGUqLCBJbnN0cnVjdGlvbiosIEpTVmFsdQogICAgIC8vIE9ubHkgc2F2ZSB2YXJp
YWJsZXMgYW5kIHRlbXBvcmFyeSByZWdpc3RlcnMuIFRoZSBzY29wZSByZWdpc3RlcnMgYXJlIGlu
Y2x1ZGVkIGluIHRoZW0uCiAgICAgLy8gQnV0IHBhcmFtZXRlcnMgYXJlIG5vdCBpbmNsdWRlZC4g
QmVjYXVzZSB0aGUgZ2VuZXJhdG9yIGltcGxlbWVudGF0aW9uIHJlcGxhY2VzIHRoZSB2YWx1ZXMg
b2YgcGFyYW1ldGVycyBvbiBlYWNoIGdlbmVyYXRvci5uZXh0KCkgY2FsbC4KICAgICBCRUdJTigp
OwotICAgIEpTVmFsdWUgZ2VuZXJhdG9yID0gT1AoMSkuanNWYWx1ZSgpOwotICAgIEdlbmVyYXRv
ckZyYW1lKiBmcmFtZSA9IG51bGxwdHI7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IGdlbmVyYXRvci5n
ZXQoZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLmdlbmVyYXRvckZyYW1lUHJpdmF0ZU5hbWUp
OwotICAgIGlmICghdmFsdWUuaXNOdWxsKCkpCi0gICAgICAgIGZyYW1lID0ganNDYXN0PEdlbmVy
YXRvckZyYW1lKj4odmFsdWUpOwotICAgIGVsc2UgewotICAgICAgICAvLyBGSVhNRTogT25jZSBK
U0dlbmVyYXRvciBzcGVjaWFsaXplZCBvYmplY3QgaXMgaW50cm9kdWNlZCwgdGhpcyBHZW5lcmF0
b3JGcmFtZSBzaG91bGQgYmUgZW1iZWRlZCBpbnRvIGl0IHRvIGF2b2lkIGFsbG9jYXRpb25zLgot
ICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNTQ1
Ci0gICAgICAgIGZyYW1lID0gR2VuZXJhdG9yRnJhbWU6OmNyZWF0ZShleGVjLT52bSgpLCAgZXhl
Yy0+Y29kZUJsb2NrKCktPm51bUNhbGxlZUxvY2FscygpKTsKLSAgICAgICAgUHV0UHJvcGVydHlT
bG90IHNsb3QoZ2VuZXJhdG9yLCB0cnVlLCBQdXRQcm9wZXJ0eVNsb3Q6OlB1dEJ5SWQpOwotICAg
ICAgICBhc09iamVjdChnZW5lcmF0b3IpLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+cHV0KGFz
T2JqZWN0KGdlbmVyYXRvciksIGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5nZW5lcmF0b3JG
cmFtZVByaXZhdGVOYW1lLCBmcmFtZSwgc2xvdCk7Ci0gICAgfQorICAgIEdlbmVyYXRvckZyYW1l
KiBmcmFtZSA9IGpzQ2FzdDxHZW5lcmF0b3JGcmFtZSo+KE9QKDEpLmpzVmFsdWUoKSk7CiAgICAg
dW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gcGNbMl0udS51bnNpZ25lZFZhbHVlOwog
ICAgIGZyYW1lLT5zYXZlKGV4ZWMsIGV4ZWMtPmNvZGVCbG9jaygpLT5saXZlQ2FsbGVlTG9jYWxz
QXRZaWVsZChsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpKTsKICAgICBFTkQoKTsKIH0KIAotU0xPV19Q
QVRIX0RFQ0woc2xvd19wYXRoX3Jlc3VtZSkKLXsKLSAgICBCRUdJTigpOwotICAgIEpTVmFsdWUg
Z2VuZXJhdG9yID0gT1AoMSkuanNWYWx1ZSgpOwotICAgIEdlbmVyYXRvckZyYW1lKiBmcmFtZSA9
IGpzQ2FzdDxHZW5lcmF0b3JGcmFtZSo+KGdlbmVyYXRvci5nZXQoZXhlYywgZXhlYy0+cHJvcGVy
dHlOYW1lcygpLmdlbmVyYXRvckZyYW1lUHJpdmF0ZU5hbWUpKTsKLSAgICB1bnNpZ25lZCBsaXZl
Q2FsbGVlTG9jYWxzSW5kZXggPSBwY1syXS51LnVuc2lnbmVkVmFsdWU7Ci0gICAgZnJhbWUtPnJl
c3VtZShleGVjLCBleGVjLT5jb2RlQmxvY2soKS0+bGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQobGl2
ZUNhbGxlZUxvY2Fsc0luZGV4KSk7Ci0gICAgRU5EKCk7Ci19Ci0KIFNMT1dfUEFUSF9ERUNMKHNs
b3dfcGF0aF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudCkKIHsKICAgICBCRUdJTigpOwpAQCAt
Nzk3LDQgKzc3NiwxMiBAQCBzdGF0aWMgdm9pZCB1cGRhdGVSZXN1bHRQcm9maWxlRm9yQmluYXJ5
QXJpdGhPcChFeGVjU3RhdGUqLCBJbnN0cnVjdGlvbiosIEpTVmFsdQogICAgIEVORCgpOwogfQog
CitTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbmV3X2dlbmVyYXRvcl9mcmFtZSkKK3sKKyAgICBC
RUdJTigpOworICAgIHVuc2lnbmVkIGdlbmVyYXRvckxvY2Fsc1NpemUgPSBwY1syXS51LnVuc2ln
bmVkVmFsdWU7CisgICAgUkVUVVJOKEdlbmVyYXRvckZyYW1lOjpjcmVhdGUoZXhlYywgZ2VuZXJh
dG9yTG9jYWxzU2l6ZSkpOworfQorCisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAppbmRleCBmMDBkODcwNWQ0
ZTY3ZmU0ZDQwNTliZGUxNjhlZTg4ZjU3ZGY3MmU3Li5jN2ZmYTNkZmNjNjNiMTRiYzM4YTVkZTA2
Zjg0Y2YzM2NjZTMzMDg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21tb25TbG93UGF0aHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21tb25TbG93UGF0aHMuaApAQCAtMjkxLDExICsyOTEsMTEgQEAgaW5saW5lIHZvaWQgZGVjb2Rl
UmVzdWx0KFNsb3dQYXRoUmV0dXJuVHlwZSByZXN1bHQsIHZvaWQqJiBhLCB2b2lkKiYgYikKIFNM
T1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcHJvZmlsZV90eXBlX2NsZWFyX2xvZyk7CiBT
TE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2Fzc2VydCk7CiBTTE9XX1BBVEhfSElEREVO
X0RFQ0woc2xvd19wYXRoX3NhdmUpOwotU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9y
ZXN1bWUpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9jcmVhdGVfbGV4aWNhbF9l
bnZpcm9ubWVudCk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3B1c2hfd2l0aF9z
Y29wZSk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3Jlc29sdmVfc2NvcGUpOwog
U0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9jb3B5X3Jlc3QpOworU0xPV19QQVRIX0hJ
RERFTl9ERUNMKHNsb3dfcGF0aF9uZXdfZ2VuZXJhdG9yX2ZyYW1lKTsKIAogfSAvLyBuYW1lc3Bh
Y2UgSlNDCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVy
YXRvckZyYW1lLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZy
YW1lLmNwcAppbmRleCBlZjZlYTdhMTAwMjU4YzNlY2UwNGRhYWI0M2JkYWE4NTFlYzhmNzE1Li4w
ZGNiNTE0YTQyMDk5OWZiZjU5ZGYxOGJkZGY1N2MzMGFkYTc5ZTkxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGcmFtZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJhbWUuY3BwCkBAIC0zMCwxNSArMzAs
MTYgQEAKICNpbmNsdWRlICJIZWFwSXRlcmF0aW9uU2NvcGUuaCIKICNpbmNsdWRlICJKU0NKU1Zh
bHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKKyNpbmNsdWRlICJKU09i
amVjdElubGluZXMuaCIKICNpbmNsdWRlICJTbG90VmlzaXRvcklubGluZXMuaCIKICNpbmNsdWRl
ICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCi1jb25zdCBDbGFzc0lu
Zm8gR2VuZXJhdG9yRnJhbWU6OnNfaW5mbyA9IHsgIkdlbmVyYXRvckZyYW1lIiwgbnVsbHB0ciwg
bnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShHZW5lcmF0b3JGcmFtZSkgfTsKK2NvbnN0IENs
YXNzSW5mbyBHZW5lcmF0b3JGcmFtZTo6c19pbmZvID0geyAiR2VuZXJhdG9yRnJhbWUiLCAmQmFz
ZTo6c19pbmZvLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEdlbmVyYXRvckZyYW1lKSB9
OwogCi1HZW5lcmF0b3JGcmFtZTo6R2VuZXJhdG9yRnJhbWUoVk0mIHZtLCBzaXplX3QgbnVtYmVy
T2ZDYWxsZWVMb2NhbHMpCi0gICAgOiBCYXNlKHZtLCB2bS5nZW5lcmF0b3JGcmFtZVN0cnVjdHVy
ZS5nZXQoKSkKK0dlbmVyYXRvckZyYW1lOjpHZW5lcmF0b3JGcmFtZShWTSYgdm0sIFN0cnVjdHVy
ZSogc3RydWN0dXJlLCB1aW50MzJfdCBudW1iZXJPZkNhbGxlZUxvY2FscykKKyAgICA6IEJhc2Uo
dm0sIHN0cnVjdHVyZSkKICAgICAsIG1fbnVtYmVyT2ZDYWxsZWVMb2NhbHMobnVtYmVyT2ZDYWxs
ZWVMb2NhbHMpCiB7CiB9CkBAIC00NiwzMyArNDcsNDIgQEAKIHZvaWQgR2VuZXJhdG9yRnJhbWU6
OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7
CisgICAgSlNWYWx1ZSBlbXB0eVZhbHVlOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9u
dW1iZXJPZkNhbGxlZUxvY2FsczsgKytpKQotICAgICAgICBsb2NhbEF0KGkpLmNsZWFyKCk7Cisg
ICAgICAgIGxvY2FsQXQoaSkuc2V0U3RhcnRpbmdWYWx1ZShlbXB0eVZhbHVlKTsKIH0KIAogU3Ry
dWN0dXJlKiBHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCiB7Ci0gICAgcmV0dXJuIFN0
cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oQ2Vs
bFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICByZXR1cm4gU3RydWN0dXJlOjpj
cmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBT
dHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiB9CiAKLUdlbmVyYXRvckZyYW1lKiBHZW5lcmF0b3JG
cmFtZTo6Y3JlYXRlKFZNJiB2bSwgc2l6ZV90IG51bWJlck9mTG9jYWxzKQorR2VuZXJhdG9yRnJh
bWUqIEdlbmVyYXRvckZyYW1lOjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
c2l6ZV90IG51bWJlck9mQ2FsbGVlTG9jYWxzKQogewogICAgIEdlbmVyYXRvckZyYW1lKiByZXN1
bHQgPQogICAgICAgICBuZXcgKAogICAgICAgICAgICAgTm90TnVsbCwKLSAgICAgICAgICAgIGFs
bG9jYXRlQ2VsbDxHZW5lcmF0b3JGcmFtZT4odm0uaGVhcCwgYWxsb2NhdGlvblNpemVGb3JMb2Nh
bHMobnVtYmVyT2ZMb2NhbHMpKSkKLSAgICAgICAgR2VuZXJhdG9yRnJhbWUodm0sIG51bWJlck9m
TG9jYWxzKTsKKyAgICAgICAgICAgIGFsbG9jYXRlQ2VsbDxHZW5lcmF0b3JGcmFtZT4odm0uaGVh
cCwgYWxsb2NhdGlvblNpemVGb3JMb2NhbHMobnVtYmVyT2ZDYWxsZWVMb2NhbHMpKSkKKyAgICAg
ICAgR2VuZXJhdG9yRnJhbWUodm0sIHN0cnVjdHVyZSwgbnVtYmVyT2ZDYWxsZWVMb2NhbHMpOwog
ICAgIHJlc3VsdC0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAK
K0dlbmVyYXRvckZyYW1lKiBHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywg
c2l6ZV90IG51bWJlck9mQ2FsbGVlTG9jYWxzKQoreworICAgIHJldHVybiBjcmVhdGUoZXhlYy0+
dm0oKSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5nZW5lcmF0b3JGcmFtZVN0cnVjdHVy
ZSgpLCBudW1iZXJPZkNhbGxlZUxvY2Fscyk7Cit9CisKIHZvaWQgR2VuZXJhdG9yRnJhbWU6OnNh
dmUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlQ2FsbGVlTG9jYWxz
KQogeworICAgIC8vIEFsbG9jYXRlIHRoZSBnZW5lcmF0b3IgbG9jYWwgc3BhY2UgZmlyc3QuCisg
ICAgbV9udW1iZXJPZlNhdmVkQ2FsbGVlTG9jYWxzID0gbGl2ZUNhbGxlZUxvY2Fscy5iaXRDb3Vu
dCgpOworCiAgICAgLy8gT25seSBzYXZlIGNhbGxlZSBsb2NhbHMuCiAgICAgLy8gRXZlcnkgdGlt
ZSBhIGdlbmVyYXRvciBpcyBjYWxsZWQgKG9yIHJlc3VtZWQpLCBwYXJhbWV0ZXJzIHNob3VsZCBi
ZSByZXBsYWNlZC4KLSAgICBBU1NFUlQobGl2ZUNhbGxlZUxvY2Fscy5udW1CaXRzKCkgPD0gbV9u
dW1iZXJPZkNhbGxlZUxvY2Fscyk7CisgICAgdW5zaWduZWQgZ2VuZXJhdG9yTG9jYWxJbmRleCA9
IDA7CiAgICAgbGl2ZUNhbGxlZUxvY2Fscy5mb3JFYWNoU2V0Qml0KFsmXShzaXplX3QgaW5kZXgp
IHsKLSAgICAgICAgbG9jYWxBdChpbmRleCkuc2V0KGV4ZWMtPnZtKCksIHRoaXMsIGV4ZWMtPnVu
Y2hlY2tlZFIodmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaW5kZXgpKS5qc1ZhbHVlKCkpOworICAg
ICAgICBsb2NhbEF0KGdlbmVyYXRvckxvY2FsSW5kZXgrKykuc2V0KGV4ZWMtPnZtKCksIHRoaXMs
IGV4ZWMtPnVuY2hlY2tlZFIodmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaW5kZXgpKS5qc1ZhbHVl
KCkpOwogICAgIH0pOwogfQogCkBAIC04MCwxMCArOTAsMTEgQEAgdm9pZCBHZW5lcmF0b3JGcmFt
ZTo6cmVzdW1lKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZUNhbGxl
ZUxvY2EKIHsKICAgICAvLyBPbmx5IHJlc3VtZSBjYWxsZWUgbG9jYWxzLgogICAgIC8vIEV2ZXJ5
IHRpbWUgYSBnZW5lcmF0b3IgaXMgY2FsbGVkIChvciByZXN1bWVkKSwgcGFyYW1ldGVycyBzaG91
bGQgYmUgcmVwbGFjZWQuCisgICAgdW5zaWduZWQgZ2VuZXJhdG9yTG9jYWxJbmRleCA9IDA7CiAg
ICAgbGl2ZUNhbGxlZUxvY2Fscy5mb3JFYWNoU2V0Qml0KFsmXShzaXplX3QgaW5kZXgpIHsKLSAg
ICAgICAgZXhlYy0+dW5jaGVja2VkUih2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChpbmRleCkpID0g
bG9jYWxBdChpbmRleCkuZ2V0KCk7Ci0gICAgICAgIGxvY2FsQXQoaW5kZXgpLmNsZWFyKCk7Cisg
ICAgICAgIGV4ZWMtPnVuY2hlY2tlZFIodmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaW5kZXgpKSA9
IGxvY2FsQXQoZ2VuZXJhdG9yTG9jYWxJbmRleCsrKS5nZXQoKTsKICAgICB9KTsKKyAgICBtX251
bWJlck9mU2F2ZWRDYWxsZWVMb2NhbHMgPSAwOwogfQogCiB2b2lkIEdlbmVyYXRvckZyYW1lOjp2
aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCkBAIC05MSw3
ICsxMDIsMTIgQEAgdm9pZCBHZW5lcmF0b3JGcmFtZTo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNl
bGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIEdlbmVyYXRvckZyYW1lKiB0aGlzT2JqZWN0
ID0ganNDYXN0PEdlbmVyYXRvckZyYW1lKj4oY2VsbCk7CiAgICAgQmFzZTo6dmlzaXRDaGlsZHJl
bih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKICAgICAvLyBTaW5jZSBvbmx5IHRydWUgY2VsbCBwb2lu
dGVycyBhcmUgc3RvcmVkIGFzIGEgY2VsbCwgd2UgY2FuIHNhZmVseSBtYXJrIHRoZW0uCi0gICAg
dmlzaXRvci5hcHBlbmRWYWx1ZXModGhpc09iamVjdC0+bG9jYWxzKCksIHRoaXNPYmplY3QtPm1f
bnVtYmVyT2ZDYWxsZWVMb2NhbHMpOworICAgIHZpc2l0b3IuYXBwZW5kVmFsdWVzKHRoaXNPYmpl
Y3QtPmxvY2FscygpLCB0aGlzT2JqZWN0LT5tX251bWJlck9mU2F2ZWRDYWxsZWVMb2NhbHMpOwor
ICAgIC8vIENsZWFyIG5vdCB1c2VkIGNhbGxlZSBsb2NhbHMgd2hlbiBtYXJraW5nLgorICAgIC8v
IFRoaXMgZW5zdXJlcyB0aGF0LCAiaWYgYSBnaXZlbiBsb2NhbCBoYXMgYSB2YWx1ZSwgdGhpcyB2
YWx1ZSBpcyBjb3JyZWN0bHkgbWFya2VkIGluIHRoZSBwcmV2aW91cyBtYXJraW5nIHBoYXNlIi4K
KyAgICBzaXplX3QgdW51c2VkTG9jYWxzQ291bnQgPSB0aGlzT2JqZWN0LT5tX251bWJlck9mQ2Fs
bGVlTG9jYWxzIC0gdGhpc09iamVjdC0+bV9udW1iZXJPZlNhdmVkQ2FsbGVlTG9jYWxzOworICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdW51c2VkTG9jYWxzQ291bnQ7ICsraSkKKyAgICAgICAg
dGhpc09iamVjdC0+bG9jYWxBdCh0aGlzT2JqZWN0LT5tX251bWJlck9mU2F2ZWRDYWxsZWVMb2Nh
bHMgKyBpKS5jbGVhcigpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZyYW1lLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGcmFtZS5oCmluZGV4IDNkNTQ1YjE0N2RkNGFi
ZmIyYmJiOWI1YTcxOTRlOGY3NDg0MWM0OWEuLmNmMWRiN2EyYmVlNjBkYTI5NDY0ZWM0MTdhMGM1
ZmI4YzFmMGFlOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dl
bmVyYXRvckZyYW1lLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJh
dG9yRnJhbWUuaApAQCAtMjcsMTEgKzI3LDE0IEBACiAjZGVmaW5lIEdlbmVyYXRvckZyYW1lX2gK
IAogI2luY2x1ZGUgIkpTQ2VsbC5oIgorI2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAjaW5jbHVkZSA8
d3RmL0Zhc3RCaXRWZWN0b3IuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKLWNsYXNzIEdlbmVyYXRv
ckZyYW1lIDogcHVibGljIEpTQ2VsbCB7CitjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisK
K2NsYXNzIEdlbmVyYXRvckZyYW1lIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogICAgIGZy
aWVuZCBjbGFzcyBKSVQ7CiAjaWYgRU5BQkxFKERGR19KSVQpCiAgICAgZnJpZW5kIGNsYXNzIERG
Rzo6U3BlY3VsYXRpdmVKSVQ7CkBAIC0zOSwxMiArNDIsMTIgQEAgY2xhc3MgR2VuZXJhdG9yRnJh
bWUgOiBwdWJsaWMgSlNDZWxsIHsKICNlbmRpZgogICAgIGZyaWVuZCBjbGFzcyBWTTsKIHB1Ymxp
YzoKLSAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOwotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBT
dHJ1Y3R1cmVGbGFncyA9IFN0cnVjdHVyZUlzSW1tb3J0YWwgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFn
czsKKyAgICB0eXBlZGVmIEpTTm9uRmluYWxPYmplY3QgQmFzZTsKIAogICAgIERFQ0xBUkVfRVhQ
T1JUX0lORk87CiAKLSAgICBzdGF0aWMgR2VuZXJhdG9yRnJhbWUqIGNyZWF0ZShWTSYsIHNpemVf
dCBudW1iZXJPZkNhbGxlZUxvY2Fscyk7CisgICAgc3RhdGljIEdlbmVyYXRvckZyYW1lKiBjcmVh
dGUoRXhlY1N0YXRlKiwgc2l6ZV90IG51bWJlck9mQ2FsbGVlTG9jYWxzKTsKKyAgICBzdGF0aWMg
R2VuZXJhdG9yRnJhbWUqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSosIHNpemVfdCBudW1iZXJPZkNh
bGxlZUxvY2Fscyk7CiAKICAgICBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiBsb2NhbHMoKQog
ICAgIHsKQEAgLTUzLDcgKzU2LDYgQEAgY2xhc3MgR2VuZXJhdG9yRnJhbWUgOiBwdWJsaWMgSlND
ZWxsIHsKIAogICAgIFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4mIGxvY2FsQXQoc2l6ZV90IGlu
ZGV4KQogICAgIHsKLSAgICAgICAgQVNTRVJUKGluZGV4IDwgbV9udW1iZXJPZkNhbGxlZUxvY2Fs
cyk7CiAgICAgICAgIHJldHVybiBsb2NhbHMoKVtpbmRleF07CiAgICAgfQogCkBAIC02Miw2ICs2
NCwyMSBAQCBjbGFzcyBHZW5lcmF0b3JGcmFtZSA6IHB1YmxpYyBKU0NlbGwgewogICAgICAgICBy
ZXR1cm4gV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mPHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93
bj4pPihzaXplb2YoR2VuZXJhdG9yRnJhbWUpKTsKICAgICB9CiAKKyAgICBzdGF0aWMgc2l6ZV90
IGxvY2FsT2Zmc2V0KHVuc2lnbmVkIGluZGV4KQorICAgIHsKKyAgICAgICAgcmV0dXJuIG9mZnNl
dE9mTG9jYWxzKCkgKyBpbmRleCAqIHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pOworICAg
IH0KKworICAgIHN0YXRpYyBzaXplX3QgbnVtYmVyT2ZDYWxsZWVMb2NhbHNPZmZzZXQoKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihHZW5lcmF0b3JGcmFtZSwgbV9udW1i
ZXJPZkNhbGxlZUxvY2Fscyk7CisgICAgfQorCisgICAgc3RhdGljIHNpemVfdCBudW1iZXJPZlNh
dmVkQ2FsbGVlTG9jYWxzT2Zmc2V0KCkKKyAgICB7CisgICAgICAgIHJldHVybiBPQkpFQ1RfT0ZG
U0VUT0YoR2VuZXJhdG9yRnJhbWUsIG1fbnVtYmVyT2ZTYXZlZENhbGxlZUxvY2Fscyk7CisgICAg
fQorCiAgICAgc3RhdGljIHNpemVfdCBhbGxvY2F0aW9uU2l6ZUZvckxvY2Fscyh1bnNpZ25lZCBu
dW1iZXJPZkxvY2FscykKICAgICB7CiAgICAgICAgIHJldHVybiBvZmZzZXRPZkxvY2FscygpICsg
bnVtYmVyT2ZMb2NhbHMgKiBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KTsKQEAgLTczLDE2
ICs5MCwxNiBAQCBjbGFzcyBHZW5lcmF0b3JGcmFtZSA6IHB1YmxpYyBKU0NlbGwgewogICAgIHZv
aWQgcmVzdW1lKEV4ZWNTdGF0ZSosIGNvbnN0IEZhc3RCaXRWZWN0b3ImIGxpdmVDYWxsZWVMb2Nh
bHMpOwogCiBwcml2YXRlOgotICAgIEdlbmVyYXRvckZyYW1lKFZNJiwgc2l6ZV90IG51bWJlck9m
Q2FsbGVlTG9jYWxzKTsKKyAgICBHZW5lcmF0b3JGcmFtZShWTSYsIFN0cnVjdHVyZSosIHVpbnQz
Ml90IG51bWJlck9mQ2FsbGVlTG9jYWxzKTsKIAotICAgIHNpemVfdCBtX251bWJlck9mQ2FsbGVl
TG9jYWxzOworICAgIHVpbnQzMl90IG1fbnVtYmVyT2ZDYWxsZWVMb2NhbHM7CisgICAgdWludDMy
X3QgbV9udW1iZXJPZlNhdmVkQ2FsbGVlTG9jYWxzIHsgMCB9OwogCiAgICAgZnJpZW5kIGNsYXNz
IExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIAotICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsK
LQogcHJvdGVjdGVkOgogICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xv
dFZpc2l0b3ImKTsKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmNwcAppbmRleCA3NjlhM2VmYjMwNDM4ZGNkOWRkZTQ0MmRjODg5NGExZjAzODJhNTA0
Li44Y2I4NGFiZTVmODczOWEwMThlNjJlYTQ4ZjQ3MTQ0NDc5NTUxZDNkIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC01MCw2ICs1
MCw3IEBACiAjaW5jbHVkZSAiRXJyb3JQcm90b3R5cGUuaCIKICNpbmNsdWRlICJGdW5jdGlvbkNv
bnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiRnVuY3Rpb25Qcm90b3R5cGUuaCIKKyNpbmNsdWRlICJH
ZW5lcmF0b3JGcmFtZS5oIgogI2luY2x1ZGUgIkdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3Iu
aCIKICNpbmNsdWRlICJHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkdl
bmVyYXRvclByb3RvdHlwZS5oIgpAQCAtMzg4LDYgKzM4OSw3IEBAIHZvaWQgSlNHbG9iYWxPYmpl
Y3Q6OmluaXQoVk0mIHZtKQogICAgIAogICAgIEZPUl9FQUNIX0JVSUxUSU5fREVSSVZFRF9JVEVS
QVRPUl9UWVBFKENSRUFURV9QUk9UT1RZUEVfRk9SX0RFUklWRURfSVRFUkFUT1JfVFlQRSkKICAg
ICBtX3Byb3BlcnR5TmFtZUl0ZXJhdG9yU3RydWN0dXJlLnNldCh2bSwgdGhpcywgSlNQcm9wZXJ0
eU5hbWVJdGVyYXRvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2l0ZXJhdG9yUHJvdG90
eXBlLmdldCgpKSk7CisgICAgbV9nZW5lcmF0b3JGcmFtZVN0cnVjdHVyZS5zZXQodm0sIHRoaXMs
IEdlbmVyYXRvckZyYW1lOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIGpzTnVsbCgpKSk7CiAg
ICAgbV9nZW5lcmF0b3JQcm90b3R5cGUuc2V0KHZtLCB0aGlzLCBHZW5lcmF0b3JQcm90b3R5cGU6
OmNyZWF0ZSh2bSwgdGhpcywgR2VuZXJhdG9yUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0s
IHRoaXMsIG1faXRlcmF0b3JQcm90b3R5cGUuZ2V0KCkpKSk7CiAgICAgCiAjdW5kZWYgQ1JFQVRF
X1BST1RPVFlQRV9GT1JfREVSSVZFRF9JVEVSQVRPUl9UWVBFCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCBiNGZmMmZiNDEzZTBlNDQ2MjQ5
MmE0OGEzZmQ1YTRjMjRlYTBiNzQxLi43MWQzOWVjOTI4M2FkOWU1OTAxMjQ0ZjAxMzZhMTM1OGY1
NDRhOTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmgKQEAgLTI1NSw2ICsyNTUsNyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBK
U1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBt
X2NhbGxiYWNrRnVuY3Rpb25TdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4g
bV9jYWxsYmFja09iamVjdFN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBt
X3Byb3BlcnR5TmFtZUl0ZXJhdG9yU3RydWN0dXJlOworICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1
cmU+IG1fZ2VuZXJhdG9yRnJhbWVTdHJ1Y3R1cmU7CiAjaWYgSlNDX09CSkNfQVBJX0VOQUJMRUQK
ICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX29iamNDYWxsYmFja0Z1bmN0aW9uU3RydWN0
dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fb2JqY1dyYXBwZXJPYmplY3RTdHJ1
Y3R1cmU7CkBAIC01MDEsNiArNTAyLDcgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMg
SlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgU3RydWN0dXJlKiBjYWxsYmFja0Z1bmN0
aW9uU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9jYWxsYmFja0Z1bmN0aW9uU3RydWN0dXJl
LmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBjYWxsYmFja09iamVjdFN0cnVjdHVyZSgpIGNvbnN0
IHsgcmV0dXJuIG1fY2FsbGJhY2tPYmplY3RTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1
cmUqIHByb3BlcnR5TmFtZUl0ZXJhdG9yU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9wcm9w
ZXJ0eU5hbWVJdGVyYXRvclN0cnVjdHVyZS5nZXQoKTsgfQorICAgIFN0cnVjdHVyZSogZ2VuZXJh
dG9yRnJhbWVTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2dlbmVyYXRvckZyYW1lU3RydWN0
dXJlLmdldCgpOyB9CiAjaWYgSlNDX09CSkNfQVBJX0VOQUJMRUQKICAgICBTdHJ1Y3R1cmUqIG9i
amNDYWxsYmFja0Z1bmN0aW9uU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9vYmpjQ2FsbGJh
Y2tGdW5jdGlvblN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogb2JqY1dyYXBwZXJP
YmplY3RTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX29iamNXcmFwcGVyT2JqZWN0U3RydWN0
dXJlLmdldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXggMGU0NGMz
NDYwZjlmOGYwZGNiMzVkOTEyZDc5NWY3Zjk4ZGZiN2Y0NS4uMGVmMjVlNzI5YWE2ZTU1YzNkY2Ew
NjFjMjJiNjVhYTZmN2I1YjM0ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApA
QCAtMjQ2LDcgKzI0Niw2IEBAIHN0YXRpYyBib29sIGVuYWJsZUFzc2VtYmxlcihFeGVjdXRhYmxl
QWxsb2NhdG9yJiBleGVjdXRhYmxlQWxsb2NhdG9yKQogICAgIGluZmVycmVkVHlwZVN0cnVjdHVy
ZS5zZXQoKnRoaXMsIEluZmVycmVkVHlwZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051
bGwoKSkpOwogICAgIGluZmVycmVkVHlwZVRhYmxlU3RydWN0dXJlLnNldCgqdGhpcywgSW5mZXJy
ZWRUeXBlVGFibGU6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICBm
dW5jdGlvblJhcmVEYXRhU3RydWN0dXJlLnNldCgqdGhpcywgRnVuY3Rpb25SYXJlRGF0YTo6Y3Jl
YXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwotICAgIGdlbmVyYXRvckZyYW1lU3Ry
dWN0dXJlLnNldCgqdGhpcywgR2VuZXJhdG9yRnJhbWU6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywg
MCwganNOdWxsKCkpKTsKICAgICBleGNlcHRpb25TdHJ1Y3R1cmUuc2V0KCp0aGlzLCBFeGNlcHRp
b246OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICBwcm9taXNlRGVm
ZXJyZWRTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBKU1Byb21pc2VEZWZlcnJlZDo6Y3JlYXRlU3RydWN0
dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIGludGVybmFsUHJvbWlzZURlZmVycmVkU3Ry
dWN0dXJlLnNldCgqdGhpcywgSlNJbnRlcm5hbFByb21pc2VEZWZlcnJlZDo6Y3JlYXRlU3RydWN0
dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVk0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKaW5k
ZXggYWVlMGFjMWYyMWI4NDUxYmM3NzY3NDQzYTBiMDVjYTA0OGI0ZjQ5Yi4uMjM2MDgzNzBhOTgz
NmQ4OTc3ZTQ5ZDcxZTY4YTgwOWI5YWM0NTM2MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVk0uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5oCkBAIC0zMTIsNyArMzEyLDYgQEAgY2xhc3MgVk0gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNv
dW50ZWQ8Vk0+IHsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBpbmZlcnJlZFR5cGVTdHJ1Y3R1cmU7
CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gaW5mZXJyZWRUeXBlVGFibGVTdHJ1Y3R1cmU7CiAgICAg
U3Ryb25nPFN0cnVjdHVyZT4gZnVuY3Rpb25SYXJlRGF0YVN0cnVjdHVyZTsKLSAgICBTdHJvbmc8
U3RydWN0dXJlPiBnZW5lcmF0b3JGcmFtZVN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJl
PiBleGNlcHRpb25TdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gcHJvbWlzZURlZmVy
cmVkU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGludGVybmFsUHJvbWlzZURlZmVy
cmVkU3RydWN0dXJlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>269169</attachid>
            <date>2016-01-16 08:15:10 -0800</date>
            <delta_ts>2016-01-16 08:16:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-152723-20160117011440.patch</filename>
            <type>text/plain</type>
            <size>109692</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk1MDU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
ZDVkMzdhNWE2NzE2ZmQyMWY5YzRiYzhlZDg0OGZkNTlhZjU1NTgzLi5kOGMwMTdmYzBjMTFiMmIx
ZDRiMTMzZTE5ZmI3MDdjODc1Y2VlZjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMzIgQEAKKzIwMTYtMDEtMTYgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgQ3JlYXRlIEdlbmVyYXRvckZyYW1lIHdpdGggdGhlIGJ5dGVjb2Rl
IG9wX25ld19nZW5lcmF0b3JfZnJhbWUgYW5kIG1ha2Ugb3Bfc2F2ZSAvIG9wX3Jlc3VtZSBERkcv
RlRMIGNhcGFibGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1MjcyMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRoaXMgcGF0Y2ggaXMgYW4gaW5pdGlhbCBhdHRlbXB0IHRvIGltcGxlbWVudCBERkcgYW5k
IEZUTCBjYXBhYmxlIEVTNiBnZW5lcmF0b3JzLgorICAgICAgICBXZSBpbnRyb2R1Y2UgdGhlIHNl
dmVyYWwgYnl0ZWNvZGVzIGFuZCBjb21waWxlIHRoZW0gaW4gREZHIC8gRlRMLgorCisgICAgICAg
IC0gb3Bfbm9wCisKKyAgICAgICAgICAgIE5vcCBvcGVyYXRpb24gaW4gdGhlIGJ5dGVjb2RlLiBU
aGlzIGlzIHVzZWQgdG8gcmVwcmVzZW50IGhvbGVzIGluIHRoZSBieXRlY29kZSBzdHJlYW0uCisg
ICAgICAgICAgICBUaGVzZSBieXRlY29kZXMgY291bGQgYmUgcmVwbGFjZWQgKFNpbWlsYXIgdG8g
dGhlIExMVk0gcGF0Y2hwb2ludCkuCisKKyAgICAgICAgLSBvcF9uZXdfZ2VuZXJhdG9yX2ZyYW1l
CisKKyAgICAgICAgICAgIEFsbG9jYXRlIEdlbmVyYXRvckZyYW1lIGluIHRoZSBieXRlY29kZSBp
bnN0ZWFkIG9mIGFsbG9jYXRpbmcgaXQgaW4gdGhlIG9wX3NhdmUuCisKKyAgICAgICAgLSBvcF9z
YXZlX2hpbnQKKworICAgICAgICAgICAgVGhpcyBpcyBwcmV2aW91cyBvcF9zYXZlLiBUaGlzIG9w
X3NhdmVfaGludCBpcyBvbmx5IHVzZWQgZm9yIHRoZSBieXRlY29kZSB1c2UtZGVmIGFuYWx5c2lz
LiBPbmNlIHRoZSBhbmFseXNpcyBpcyBkb25lIGluIENvZGVCbG9jayBjcmVhdGlvbiBwaGFzZSwK
KyAgICAgICAgICAgIHdlIHdpbGwgY29udmVydCB0aGlzIGJ5dGVjb2RlIHRvIG9wX3NhdmUuCisg
ICAgICAgICAgICBXaGlsZSBvcF9zYXZlX2hpbnQgaGFzIGEgcHNldWRvIGp1bXAgdG8gdGhlIGdl
bmVyYXRvciBjb250aW51YXRpb24gbWVyZ2UgcG9pbnQsIG9wX3NhdmUgZG9lcyBub3QgaGF2ZSBp
dC4gVGhpcyBwc2V1ZG8ganVtcCBpcyBuZWNlc3NhcnkgZm9yCisgICAgICAgICAgICB0aGUgYnl0
ZWNvZGUgdXNlLWRlZiBhbmFseXNpcy4gVGhpcyBieXRlY29kZSB1c2UtZGVmIGFuYWx5c2lzIGlz
IHVzZWQgdG8gZGlzY292ZXIgbGl2ZSB2YXJpYWJsZXMgaW4gdGhlIGdlbmVyYXRvciBjb250aW51
YXRpb24gbWVyZ2UgcG9pbnQuCisKKyAgICAgICAgICAgIFRoZSBnZW5lcmF0b3IgY29udGludWF0
aW9uIG1lcmdlIHBvaW50IGlzIHRoZSBwb2ludCB0aGF0IG1lcmdpbmcgdGhlIDIgYmFzaWMgYmxv
Y2tzLCBzYXZpbmcgbG9jYWxzIHRvIHRoZSBnZW5lcmF0b3IgZnJhbWUgYW5kIHJlc3VtaW5nIGxv
Y2FscyBmcm9tCisgICAgICAgICAgICB0aGUgZ2VuZXJhdG9yIGZyYW1lLgorCisgICAgICAgIC0g
b3Bfc2F2ZQorCisgICAgICAgICAgICBTaW1pbGFyIHRvIHRoZSBwcmV2aW91cyBvcF9zYXZlLiBJ
dCB1c2VzIGxvY2FscyBhbmQgc2F2ZXMgdGhlbSB0byB0aGUgZ2VuZXJhdG9yIGZyYW1lLiBBdCB0
aGF0IHRpbWUsIHdlIHdpbGwgc2V0IEdlbmVyYXRvckZyYW1lOjptX251bWJlck9mU2F2ZWRDYWxs
ZWVMb2NhbHMgYXMgKk4qCisgICAgICAgICAgICB0byBhbGxvY2F0ZSBzcGFjZSBmb3Igc2F2ZWQg
bG9jYWxzLgorCisgICAgICAgIC0gb3BfcmVzdW1lX2hpbnQKKworICAgICAgICAgICAgU2ltaWxh
ciB0byB0aGUgb3Bfc2F2ZV9oaW50LCB0aGlzIGlzIG9ubHkgdXNlZCBmb3IgdGhlIGJ5dGVjb2Rl
IHVzZS1kZWYgYW5hbHlzaXMuIG9wX3Jlc3VtZV9oaW50IGxlYWRzIHNldmVyYWwgb3Bfbm9wIG9w
ZXJhdGlvbnMuCisgICAgICAgICAgICBBZnRlciB0aGUgYW5hbHlzaXMsIHdlIGV4cGxvaXQgdGhl
IG5lZWRlZCBkZWZzIGZvciB0aGlzIHJlc3VtZSBwb2ludCBhbmQgcmVwbGFjZSB0aGlzIGJ5dGVj
b2RlIGFuZCBvcF9ub3Agd2l0aCBvcF9yZXN1bWVfZnJvbV9nZW5lcmF0b3JfZnJhbWUgb3BlcmF0
aW9ucy4KKyAgICAgICAgICAgIFRoaXMgbWFrZXMgREZHIFNldExvY2FsIHRyZWF0bWVudCBzaW1w
bGUuIFdoaWxlIG9wX3Jlc3VtZV9oaW50IGRlZmluZXMgbXVsdGlwbGUgbG9jYWxzLCBvcF9yZXN1
bWVfZnJvbV9nZW5lcmF0b3JfZnJhbWUgb25seSBkZWZpbmVzIG9uZSBsb2NhbCAoZHN0KS4KKwor
ICAgICAgICAtIG9wX3Jlc3VtZV9mcm9tX2dlbmVyYXRvcl9mcmFtZQorCisgICAgICAgICAgICBU
aGlzIHJldHJpZXZlcyBsb2NhbCB2YXJpYWJsZSBmcm9tIHRoZSBnZW5lcmF0b3IgZnJhbWUuIG9w
X3Jlc3VtZV9oaW50IGFuZCBzdWJzZXF1ZW50IG9wX25vcCB3aWxsIGJlIHJlcGxhY2VkIHdpdGgg
dGhpcy4KKworICAgICAgICAtIG9wX2NsZWFyX2dlbmVyYXRvcl9mcmFtZQorCisgICAgICAgICAg
ICBUaGlzIGNsZWFycyBnZW5lcmF0b3IgZnJhbWUncyBsb2NhbHMgYnkgc2V0dGluZyBHZW5lcmF0
b3JGcmFtZTo6bV9udW1iZXJPZlNhdmVkQ2FsbGVlTG9jYWxzIGFzIDAuCisKKworICAgICAgICBI
ZXJlLCB3ZSBleHBsYWluIGFib3V0IGhvdyB0byBwcmVwcm9jZXNzIGJ5dGVjb2Rlcy4KKyAgICAg
ICAgRmlyc3QsIHdlIGVtaXQgb3Bfc2F2ZV9oaW50LCBvcF9yZXN1bWVfaGludCBhbmQgb3BfY2xl
YXJfZ2VuZXJhdG9yX2ZyYW1lIGxpa2UgdGhpcy4KKworICAgICAgICBbZW50cnldIC0rLS0+IFtz
YXZlIGJsb2NrXSAtPiBvcF9zYXZlX2hpbnQgKGl0IGlzIGJyYW5jaGluZyBieXRlY29kZSkgLS0t
LS0tPiBbbWVyZ2UgYmxvY2tdIC0+IC4uLgorICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBe
CisgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKy0+
IG9wX3JldCAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgICAgICAgKy0tLS0t
LS0tLS0tLS0tLS0tLT4gb3BfcmVzdW1lX2hpbnQgLT4gb3BfY2xlYXJfZ2VuZXJhdG9yX2ZyYW1l
IC0tLS0tKworCisgICAgICAgIEFuZCBwZXJmb3JtIGJ5dGVjb2RlIHVzZS1kZWYgYW5hbHlzaXMg
b250byB0aGlzIENGRy4gQnkgc2VlaW5nIGxpdmUgbG9jYWxzIGF0IHRoZSBoZWFkIG9mIFttZXJn
ZSBibG9ja10gd2UgY2FuIGZpbmQgIndoaWNoIGxvY2FscyB3ZSBzaG91bGQgc2F2ZSBhbmQgcmVz
dW1lIi4KKyAgICAgICAgQmFzZWQgb24gdGhlIGFib3ZlIGFuYWx5c2lzIHJlc3VsdCwgd2UgcGF0
Y2ggdGhlIGJ5dGVjb2RlIHN0cmVhbSBhcyBmb2xsb3dzLgorCisgICAgICAgIFtlbnRyeV0gLSst
LT4gW3NhdmUgYmxvY2tdIC0+IG9wX3NhdmUgLT4gb3BfcmV0ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICstPiBbbWVyZ2UgYmxvY2tdIC0+IC4uLgorICAgICAgICAgICAgICAgICB8ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB8CisgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgICAg
ICAgKy0tPiBvcF9yZXN1bWVfZnJvbV9nZW5lcmF0b3JfZnJhbWUgKiBuIC0+IG9wX2NsZWFyX2dl
bmVyYXRvcl9mcmFtZSAtKworCisgICAgICAgIFdoaWxlIG9wX3Jlc3VtZV9oaW50IHdpbGwgYXR0
ZW1wdCB0byBkZWZpbmUgbXVsdGlwbGUgbG9jYWxzIGF0IGEgdGltZSwgb3BfcmVzdW1lX2Zyb21f
Z2VuZXJhdG9yX2ZyYW1lIG9ubHkgZGVmaW5lcyBvbmUgbG9jYWwuIEl0IHNpbXBsaWZpZXMgREZH
IGFuYWx5c2lzLgorCisgICAgICAgIEFuZCB3ZSBpbnRyb2R1Y2VzIHNldmVyYWwgREZHIG5vZGVz
LgorCisgICAgICAgIC0gTmV3R2VuZXJhdG9yRnJhbWUKKworICAgICAgICAgICAgVGhpcyBqdXN0
IGFsbG9jYXRlcyBHZW5lcmF0b3JGcmFtZS4KKworICAgICAgICAtIFJlc2l6ZUdlbmVyYXRvckxv
Y2FscworCisgICAgICAgICAgICBUaGlzIHNldCBHZW5lcmF0b3JGcmFtZTo6bV9udW1iZXJPZlNh
dmVkQ2FsbGVlTG9jYWxzICpOKi4gVGhpcyBub2RlIGlzIHVzZWQgdG8gKDEpIGFsbG9jYXRlIHNw
YWNlIGZvciBsb2NhbHMgaW4gR2VuZXJhdG9yRnJhbWUgYW5kICgyKSBkZWFsbG9jYXRlIHNwYWNl
IGluCisgICAgICAgICAgICBHZW5lcmF0b3JGcmFtZSBieSBzZXR0aW5nIGl0IGFzIDAuCisKKyAg
ICAgICAgLSBHZXRHZW5lcmF0b3JMb2NhbAorCisgICAgICAgICAgICBHZXQgYSBzYXZlZCBsb2Nh
bCB2YXJpYWJsZSBmcm9tIGEgZ2VuZXJhdG9yIGZyYW1lLiBHZXRHZW5lcmF0b3JMb2NhbCBhbmQg
U2V0R2VuZXJhdG9yTG9jYWwgYXJlIGxpbmtlZCB3aXRoIEdlbmVyYXRvckxvY2FsRGF0YS4gU28g
dHlwZSBwcmVkaWNhdGlvbiBhbmQgZmxhZ3MKKyAgICAgICAgICAgIGFyZSBjb3JyZWN0bHkgcHJv
cGFnYXRlZCBiZXlvbmQgdGhlIGdlbmVyYXRvciBmcmFtZS4KKworICAgICAgICAtIFNldEdlbmVy
YXRvckxvY2FsCisKKyAgICAgICAgICAgIFN0b3JlIGEgbG9jYWwgdmFyaWFibGUgdG8gYSBnZW5l
cmF0b3IgZnJhbWUuCisKKyAgICAgICAgRnV0dXJlIHBsYW5zIGFyZSB0aGUgZm9sbG93aW5ncy4K
KworICAgICAgICAxLiBTdXBwb3J0IHRyYW5zZmVycmluZyBBYnN0cmFjdFZhbHVlIGJldHdlZW4g
U2V0R2VuZXJhdG9yTG9jYWwgYW5kIEdldEdlbmVyYXRvckxvY2FsLiBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUyNzIzCisKKyAgICAgICAgMi4gQ3JlYXRlIEpTR2Vu
ZXJhdG9yIGFuZCBhbGxvY2F0ZSBpdCBpbiB0aGUgZ2VuZXJhdG9yIHdyYXBwZXIgZnVuY3Rpb24u
IFRoaXMgc2hvdWxkIGJlIGNvbXBpbGVkIGluIERGRyAvIEZUTCBhbmQKKyAgICAgICAgdGhpcyBv
YmplY3Qgc2hvdWxkIGJlIHRyYWNrZWQgKGJ5IGVzY2FwZSBhbmFseXNpcykgYW5kIGVsaW1pbmF0
ZWQgaWYgcG9zc2libGUgYnkgb2JqZWN0IGFsbG9jYXRpb24gZWxpbWluYXRpb24uCisKKyAgICAg
ICAgMy4gQW5kIG9uY2Ugd2UgZXhwbG9pdCB0aGF0IEdlbmVyYXRvckZyYW1lIGlzIG5vdCBlc2Nh
cGVkIGZyb20gdGhlIGdpdmVuIEZUTC1lZCBmdW5jdGlvbiwgd2Ugd2lsbCBlbGltaW5hdGUgR2Vu
ZXJhdG9yRnJhbWUgYWxsb2NhdGlvbiBhbmQKKyAgICAgICAgY29udmVydCBHZW5lcmF0b3JMb2Nh
bCBvcGVyYXRpb25zIGludG8gZ2V0L3NldCBsb2NhbCBvcGVyYXRpb25zLgorCisgICAgICAgICog
YnVpbHRpbnMvR2VuZXJhdG9yUHJvdG90eXBlLmpzOgorICAgICAgICAoZ2VuZXJhdG9yUmVzdW1l
KToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suY3BwOgorICAgICAgICAo
SlNDOjppc0JyYW5jaCk6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb246Cisg
ICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaDoKKyAgICAgICAgKEpTQzo6Y29tcHV0
ZVVzZXNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OmNvbXB1dGVEZWZzRm9yQnl0
ZWNvZGVPZmZzZXQpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAg
IChKU0M6OkNvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRz
LmNwcDoKKyAgICAgICAgKEpTQzo6Z2V0SnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldCk6Cisg
ICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdHZW5lcmF0b3JGcmFtZSk6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0U2F2ZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0UmVzdW1lKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuaDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRvckZyYW1l
UmVnaXN0ZXIpOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEhlYXAuaDoKKyAgICAgICAgKiBk
ZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpB
YnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHMpOgor
ICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
Qnl0ZUNvZGVQYXJzZXI6Om5ld0dlbmVyYXRvckxvY2FsRGF0YSk6CisgICAgICAgIChKU0M6OkRG
Rzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAqIGRmZy9ERkdDYXBhYmls
aXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmNhcGFiaWxpdHlMZXZlbCk6CisgICAgICAg
ICogZGZnL0RGR0Nsb2JiZXJpemUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToK
KyAgICAgICAgKiBkZmcvREZHQ2xvYmJlcnNFeGl0U3RhdGUuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OmNsb2JiZXJzRXhpdFN0YXRlKToKKyAgICAgICAgKiBkZmcvREZHRG9lc0dDLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpkb2VzR0MpOgorICAgICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5vZGUpOgorICAgICAgICAq
IGRmZy9ERkdHZW5lcmF0b3JMb2NhbERhdGEuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkRGRzo6
R2VuZXJhdG9yTG9jYWxEYXRhOjpwcmVkaWN0KToKKyAgICAgICAgKEpTQzo6REZHOjpHZW5lcmF0
b3JMb2NhbERhdGE6OnByZWRpY3Rpb24pOgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5oOgorICAg
ICAgICAqIGRmZy9ERkdNYXlFeGl0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjptYXlFeGl0KToK
KyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc0dl
bmVyYXRvckxvY2Fsc1NpemUpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmdlbmVyYXRvckxv
Y2Fsc1NpemUpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc0dlbmVyYXRvckxvY2FsSW5k
ZXgpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmdlbmVyYXRvckxvY2FsSW5kZXgpOgorICAg
ICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc0dlbmVyYXRvckxvY2FsRGF0YSk6CisgICAgICAgIChK
U0M6OkRGRzo6Tm9kZTo6Z2VuZXJhdG9yTG9jYWxEYXRhKToKKyAgICAgICAgKEpTQzo6REZHOjpO
b2RlOjpoYXNHZW5lcmF0b3JGcmFtZUxvY2Fscyk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6
Z2VuZXJhdG9yRnJhbWVMb2NhbHMpOgorICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAg
ICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9u
cy5oOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2U6OnByb3BhZ2F0ZSk6
CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpz
YWZlVG9FeGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3R2VuZXJhdG9yRnJhbWUp
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUmVzaXplR2VuZXJh
dG9yTG9jYWxzKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAg
KiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAg
ICAgICogZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBk
ZmcvREZHU3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OlN0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlOjpydW4pOgorICAgICAgICAqIGZ0bC9GVExBYnN0
cmFjdEhlYXBSZXBvc2l0b3J5LmNwcDoKKyAgICAgICAgKiBmdGwvRlRMQWJzdHJhY3RIZWFwUmVw
b3NpdG9yeS5oOgorICAgICAgICAqIGZ0bC9GVExDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAo
SlNDOjpGVEw6OmNhbkNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvTExWTS5j
cHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZU5vZGUp
OgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVSZXNpemVH
ZW5lcmF0b3JMb2NhbHMpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0xMVk06
OmNvbXBpbGVTZXRHZW5lcmF0b3JMb2NhbCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dl
ckRGR1RvTExWTTo6Y29tcGlsZUdldEdlbmVyYXRvckxvY2FsKToKKyAgICAgICAgKEpTQzo6RlRM
OjpERkc6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlTmV3R2VuZXJhdG9yRnJhbWUpOgorICAgICAg
ICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlTWFpblBh
c3MpOgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUT3Bjb2Rlcy5jcHA6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9yZXN1bWVfZnJvbV9nZW5lcmF0b3JfZnJhbWUp
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfY2xlYXJfZ2VuZXJhdG9yX2ZyYW1lKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0X29wX25ld19nZW5lcmF0b3JfZnJhbWUpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRfb3Bfbm9wKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3Jlc3Vt
ZSk6IERlbGV0ZWQuCisgICAgICAgICogaml0L0pJVE9wY29kZXMzMl82NC5jcHA6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdF9vcF9yZXN1bWVfZnJvbV9nZW5lcmF0b3JfZnJhbWUpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRfb3BfY2xlYXJfZ2VuZXJhdG9yX2ZyYW1lKToKKyAgICAgICAgKiBs
bGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwOgorICAgICAgICAqIGxsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXIuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82
NC5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbToKKyAgICAg
ICAgKiBwYXJzZXIvUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46
OnBhcnNlSW5uZXIpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VHZW5l
cmF0b3JGdW5jdGlvblNvdXJjZUVsZW1lbnRzKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVy
VHlwZT46OmNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMpOgorICAgICAgICAqIHBhcnNlci9QYXJz
ZXIuaDoKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHA6CisgICAgICAgIChK
U0M6OlNMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5o
OgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJhdG9yRnJhbWUuY3BwOgorICAgICAgICAoSlNDOjpH
ZW5lcmF0b3JGcmFtZTo6R2VuZXJhdG9yRnJhbWUpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JG
cmFtZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6Y3Jl
YXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OmNyZWF0ZSk6Cisg
ICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpzYXZlKToKKyAgICAgICAgKEpTQzo6R2VuZXJh
dG9yRnJhbWU6OnJlc3VtZSk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjp2aXNpdENo
aWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL0dlbmVyYXRvckZyYW1lLmg6CisgICAgICAgIChK
U0M6OkdlbmVyYXRvckZyYW1lOjpsb2NhbE9mZnNldCk6CisgICAgICAgIChKU0M6OkdlbmVyYXRv
ckZyYW1lOjpudW1iZXJPZkNhbGxlZUxvY2Fsc09mZnNldCk6CisgICAgICAgIChKU0M6OkdlbmVy
YXRvckZyYW1lOjpudW1iZXJPZlNhdmVkQ2FsbGVlTG9jYWxzT2Zmc2V0KToKKyAgICAgICAgKEpT
Qzo6R2VuZXJhdG9yRnJhbWU6OmxvY2FsQXQpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUv
SlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6
CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDOjpKU0ds
b2JhbE9iamVjdDo6Z2VuZXJhdG9yRnJhbWVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUv
Vk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6Vk0pOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRp
bWUvVk0uaDoKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwtYW5kLWFy
cmF5LmpzOiBBZGRlZC4KKyAgICAgICAgKGZpYik6CisgICAgICAgICogdGVzdHMvc3RyZXNzL2dl
bmVyYXRvci1maWItZnRsLWFuZC1vYmplY3QuanM6IEFkZGVkLgorICAgICAgICAoZmliKToKKyAg
ICAgICAgKiB0ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwtYW5kLXN0cmluZy5qczogQWRk
ZWQuCisgICAgICAgIChmaWIpOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmli
LWZ0bC5qczogQWRkZWQuCisgICAgICAgIChmaWIpOgorCiAyMDE2LTAxLTEzICBDYXJsb3MgR2Fy
Y2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbQ01ha2VdIERvIG5v
dCB1c2UgTExWTSBzdGF0aWMgbGlicmFyaWVzIGZvciBGVEwgSklUCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvR2VuZXJhdG9yUHJvdG90eXBlLmpzIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0dlbmVyYXRvclByb3RvdHlwZS5qcwppbmRleCBhM2Ji
YzM1MzRhZTA1MmY0ZDZmYTI1YmRlNzAzYzkzZDNhNzk1ZTExLi40OWRkYmY5Yzg0NjkzMzA2NTg3
MTFmMThlNzIxNDliYzk4MjJkYTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YnVpbHRpbnMvR2VuZXJhdG9yUHJvdG90eXBlLmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9idWlsdGlucy9HZW5lcmF0b3JQcm90b3R5cGUuanMKQEAgLTU4LDcgKzU4LDcgQEAgZnVuY3Rp
b24gZ2VuZXJhdG9yUmVzdW1lKGdlbmVyYXRvciwgc2VudFZhbHVlLCByZXN1bWVNb2RlKQogICAg
IH0gZWxzZSB7CiAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICBnZW5lcmF0b3IuQGdlbmVyYXRv
clN0YXRlID0gRXhlY3V0aW5nOwotICAgICAgICAgICAgdmFsdWUgPSBnZW5lcmF0b3IuQGdlbmVy
YXRvck5leHQuQGNhbGwoZ2VuZXJhdG9yLkBnZW5lcmF0b3JUaGlzLCBnZW5lcmF0b3IsIHN0YXRl
LCBzZW50VmFsdWUsIHJlc3VtZU1vZGUpOworICAgICAgICAgICAgdmFsdWUgPSBnZW5lcmF0b3Iu
QGdlbmVyYXRvck5leHQuQGNhbGwoZ2VuZXJhdG9yLkBnZW5lcmF0b3JUaGlzLCBnZW5lcmF0b3Is
IHN0YXRlLCBzZW50VmFsdWUsIHJlc3VtZU1vZGUsIGdlbmVyYXRvci5AZ2VuZXJhdG9yRnJhbWUp
OwogICAgICAgICAgICAgaWYgKGdlbmVyYXRvci5AZ2VuZXJhdG9yU3RhdGUgPT09IEV4ZWN1dGlu
ZykgewogICAgICAgICAgICAgICAgIGdlbmVyYXRvci5AZ2VuZXJhdG9yU3RhdGUgPSBDb21wbGV0
ZWQ7CiAgICAgICAgICAgICAgICAgZG9uZSA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suY3BwCmluZGV4IDdmMTdjMGVm
MTBiNDMzZmFjOGY1OGNiM2I5Y2E1ZDRkMDE1YmJhMDguLjVhYTE4ZTRjYWY3YTU3NWRkNjQ1ZDZm
NmVkNzk3MjhhZjczYmQyNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZUJhc2ljQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suY3BwCkBAIC01OCw3ICs1OCw3IEBAIHN0YXRpYyBi
b29sIGlzQnJhbmNoKE9wY29kZUlEIG9wY29kZUlEKQogICAgIGNhc2Ugb3Bfc3dpdGNoX2ltbToK
ICAgICBjYXNlIG9wX3N3aXRjaF9jaGFyOgogICAgIGNhc2Ugb3Bfc3dpdGNoX3N0cmluZzoKLSAg
ICBjYXNlIG9wX3NhdmU6CisgICAgY2FzZSBvcF9zYXZlX2hpbnQ6CiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbiBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgppbmRleCAwNTNiOGRjOWI4
NjRmMWI4NmI0Y2VjN2FhNjAxZjdjZTJmMDNmMmU0Li4wOGFhYzEyMjU5YzY4ZGEwZTFhYmM5MDkw
YmU1NGM5NTVmYjMzMDA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVMaXN0Lmpzb24KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlTGlzdC5qc29uCkBAIC0xNiw2ICsxNiw3IEBACiAgICAgICAgICAgICB7ICJuYW1l
IiA6ICJvcF9uZXdfYXJyYXlfd2l0aF9zaXplIiwgImxlbmd0aCIgOiA0IH0sCiAgICAgICAgICAg
ICB7ICJuYW1lIiA6ICJvcF9uZXdfYXJyYXlfYnVmZmVyIiwgImxlbmd0aCIgOiA1IH0sCiAgICAg
ICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXdfcmVnZXhwIiwgImxlbmd0aCIgOiAzIH0sCisgICAg
ICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXdfZ2VuZXJhdG9yX2ZyYW1lIiwgImxlbmd0aCIgOiAz
IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9tb3YiLCAibGVuZ3RoIiA6IDMgfSwKICAg
ICAgICAgICAgIHsgIm5hbWUiIDogIm9wX25vdCIsICJsZW5ndGgiIDogMyB9LAogICAgICAgICAg
ICAgeyAibmFtZSIgOiAib3BfZXEiLCAibGVuZ3RoIiA6IDQgfSwKQEAgLTEzNCw3ICsxMzUsMTEg
QEAKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2NvcHlfcmVzdCIsICJsZW5ndGgiOiA0IH0s
CiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9nZXRfcmVzdF9sZW5ndGgiLCAibGVuZ3RoIjog
MyB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3Bfc2F2ZSIsICJsZW5ndGgiIDogNCB9LAot
ICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfcmVzdW1lIiwgImxlbmd0aCIgOiAzIH0sCisgICAg
ICAgICAgICB7ICJuYW1lIiA6ICJvcF9zYXZlX2hpbnQiLCAibGVuZ3RoIiA6IDQgfSwKKyAgICAg
ICAgICAgIHsgIm5hbWUiIDogIm9wX3Jlc3VtZV9oaW50IiwgImxlbmd0aCIgOiA0IH0sCisgICAg
ICAgICAgICB7ICJuYW1lIiA6ICJvcF9yZXN1bWVfZnJvbV9nZW5lcmF0b3JfZnJhbWUiLCAibGVu
Z3RoIiA6IDQgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2NsZWFyX2dlbmVyYXRvcl9m
cmFtZSIsICJsZW5ndGgiIDogMiB9LAorICAgICAgICAgICAgeyAibmFtZSIgOiAib3Bfbm9wIiwg
Imxlbmd0aCIgOiAxIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF93YXRjaGRvZyIsICJs
ZW5ndGgiIDogMSB9CiAgICAgICAgIF0KICAgICB9LApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaAppbmRleCA4MDExMTRjMzcyYTI3N2Y2ZTE3NzA5
YjkwYmUyMDdjOGY5OWJlODJkLi5kYWVmODFjMjY5YmI1NDE1NGVhNmI2ZGM4MzhhZmM2OWNlZTcy
Yzk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVV
c2VEZWYuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VE
ZWYuaApAQCAtNTUsNiArNTUsOCBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQo
CiAgICAgY2FzZSBvcF9jcmVhdGVfb3V0X29mX2JhbmRfYXJndW1lbnRzOgogICAgIGNhc2Ugb3Bf
Z2V0X3Jlc3RfbGVuZ3RoOgogICAgIGNhc2Ugb3Bfd2F0Y2hkb2c6CisgICAgY2FzZSBvcF9uZXdf
Z2VuZXJhdG9yX2ZyYW1lOgorICAgIGNhc2Ugb3Bfbm9wOgogICAgICAgICByZXR1cm47CiAgICAg
Y2FzZSBvcF9hc3NlcnQ6CiAgICAgY2FzZSBvcF9nZXRfc2NvcGU6CkBAIC03Miw3ICs3NCw4IEBA
IHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCgKICAgICBjYXNlIG9wX2puZXFfbnVs
bDoKICAgICBjYXNlIG9wX2RlYzoKICAgICBjYXNlIG9wX2luYzoKLSAgICBjYXNlIG9wX3Jlc3Vt
ZTogeworICAgIGNhc2Ugb3BfcmVzdW1lX2hpbnQ6CisgICAgY2FzZSBvcF9jbGVhcl9nZW5lcmF0
b3JfZnJhbWU6IHsKICAgICAgICAgQVNTRVJUKG9wY29kZUxlbmd0aHNbb3Bjb2RlSURdID49IDEp
OwogICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBpbnN0
cnVjdGlvblsxXS51Lm9wZXJhbmQpOwogICAgICAgICByZXR1cm47CkBAIC0xNjUsNyArMTY4LDgg
QEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAogICAgIGNhc2Ugb3BfbmV3X2dl
bmVyYXRvcl9mdW5jOgogICAgIGNhc2Ugb3BfZ2V0X3BhcmVudF9zY29wZToKICAgICBjYXNlIG9w
X2NyZWF0ZV9zY29wZWRfYXJndW1lbnRzOgotICAgIGNhc2Ugb3BfZ2V0X2Zyb21fYXJndW1lbnRz
OiB7CisgICAgY2FzZSBvcF9nZXRfZnJvbV9hcmd1bWVudHM6CisgICAgY2FzZSBvcF9yZXN1bWVf
ZnJvbV9nZW5lcmF0b3JfZnJhbWU6IHsKICAgICAgICAgQVNTRVJUKG9wY29kZUxlbmd0aHNbb3Bj
b2RlSURdID49IDIpOwogICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9w
Y29kZUlELCBpbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpOwogICAgICAgICByZXR1cm47CkBAIC0y
NTAsNyArMjU0LDcgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAogICAgICAg
ICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgbGFzdEFyZyAr
IGkpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGNhc2Ugb3Bfc2F2ZTogeworICAgIGNh
c2Ugb3Bfc2F2ZV9oaW50OiB7CiAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlv
biwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CiAgICAgICAgIHVuc2lnbmVk
IG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldCA9IGJ5dGVjb2RlT2Zmc2V0ICsgaW5zdHJ1Y3Rpb25b
M10udS5vcGVyYW5kOwogICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIG1lcmdlUG9pbnRCbG9j
ayA9IG51bGxwdHI7CkBAIC0yNjYsNiArMjcwLDE1IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRl
Y29kZU9mZnNldCgKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CisgICAgY2Fz
ZSBvcF9zYXZlOiB7CisgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bj
b2RlSUQsIGluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CisgICAgICAgIHVuc2lnbmVkIGxpdmVD
YWxsZWVMb2NhbHNJbmRleCA9IGluc3RydWN0aW9uWzJdLnUudW5zaWduZWRWYWx1ZTsKKyAgICAg
ICAgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZW5lc3MgPSBjb2RlQmxvY2stPmxpdmVDYWxsZWVM
b2NhbHNBdFlpZWxkKGxpdmVDYWxsZWVMb2NhbHNJbmRleCk7CisgICAgICAgIGxpdmVuZXNzLmZv
ckVhY2hTZXRCaXQoWyZdKHVuc2lnbmVkIGxvY2FsKSB7CisgICAgICAgICAgICBmdW5jdG9yKGNv
ZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChs
b2NhbCkub2Zmc2V0KCkpOworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KICAg
ICBkZWZhdWx0OgogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAg
ICBicmVhazsKQEAgLTI4OSw2ICszMDIsNyBAQCB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVP
ZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvYwogICAg
IGNhc2Ugb3BfdGhyb3c6CiAgICAgY2FzZSBvcF90aHJvd19zdGF0aWNfZXJyb3I6CiAgICAgY2Fz
ZSBvcF9zYXZlOgorICAgIGNhc2Ugb3Bfc2F2ZV9oaW50OgogICAgIGNhc2Ugb3BfYXNzZXJ0Ogog
ICAgIGNhc2Ugb3BfZGVidWc6CiAgICAgY2FzZSBvcF9yZXQ6CkBAIC0zMjMsNiArMzM3LDggQEAg
dm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBC
eXRlY29kZUJhc2ljQmxvY2sqIGJsb2MKICAgICBjYXNlIG9wX3Byb2ZpbGVfY29udHJvbF9mbG93
OgogICAgIGNhc2Ugb3BfcHV0X3RvX2FyZ3VtZW50czoKICAgICBjYXNlIG9wX3dhdGNoZG9nOgor
ICAgIGNhc2Ugb3BfY2xlYXJfZ2VuZXJhdG9yX2ZyYW1lOgorICAgIGNhc2Ugb3Bfbm9wOgogI2Rl
ZmluZSBMTElOVF9IRUxQRVJfT1BDT0RFUyhvcGNvZGUsIGxlbmd0aCkgY2FzZSBvcGNvZGU6CiAg
ICAgICAgIEZPUl9FQUNIX0xMSU5UX09QQ09ERV9FWFRFTlNJT04oTExJTlRfSEVMUEVSX09QQ09E
RVMpOwogI3VuZGVmIExMSU5UX0hFTFBFUl9PUENPREVTCkBAIC00MTUsNyArNDMxLDkgQEAgdm9p
ZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRl
Y29kZUJhc2ljQmxvY2sqIGJsb2MKICAgICBjYXNlIG9wX2RlbF9ieV92YWw6CiAgICAgY2FzZSBv
cF91bnNpZ25lZDoKICAgICBjYXNlIG9wX2dldF9mcm9tX2FyZ3VtZW50czogCi0gICAgY2FzZSBv
cF9nZXRfcmVzdF9sZW5ndGg6IHsKKyAgICBjYXNlIG9wX2dldF9yZXN0X2xlbmd0aDoKKyAgICBj
YXNlIG9wX25ld19nZW5lcmF0b3JfZnJhbWU6CisgICAgY2FzZSBvcF9yZXN1bWVfZnJvbV9nZW5l
cmF0b3JfZnJhbWU6IHsKICAgICAgICAgQVNTRVJUKG9wY29kZUxlbmd0aHNbb3Bjb2RlSURdID4g
MSk7CiAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGlu
c3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CiAgICAgICAgIHJldHVybjsKQEAgLTQzMSw3ICs0NDks
NyBAQCB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvYwogICAgICAgICAgICAgZnVuY3Rvcihjb2RlQmxv
Y2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaSkub2Zm
c2V0KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGNhc2Ugb3BfcmVzdW1lOiB7Cisg
ICAgY2FzZSBvcF9yZXN1bWVfaGludDogewogICAgICAgICBSRUxFQVNFX0FTU0VSVChibG9jay0+
c3VjY2Vzc29ycygpLnNpemUoKSA9PSAxKTsKICAgICAgICAgYmxvY2stPnN1Y2Nlc3NvcnMoKVsw
XS0+aW4oKS5mb3JFYWNoU2V0Qml0KFsmXSh1bnNpZ25lZCBsb2NhbCkgewogICAgICAgICAgICAg
ZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgdmlydHVhbFJlZ2lzdGVy
Rm9yTG9jYWwobG9jYWwpLm9mZnNldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5jcHAKaW5kZXggNTkwNWU5MTgzYzhmMTI2NjRlMmJhM2RkMjlhNWM0NjU2
NzY4ZGMwMy4uZGEzZTU4ZDAxNmJkYmUwZmY2NzcxYjBjMmZiYWI5MTgyNGI2NTZlMCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTE1NTYsMjcg
KzE1NTYsNjMgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZSgKICAgICAgICAgICAgIG91
dC5wcmludGYoIiVzLCAlZCIsIGRlYnVnSG9va05hbWUoZGVidWdIb29rSUQpLCBoYXNCcmVha3Bv
aW50RmxhZyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBjYXNlIG9w
X3NhdmU6IHsKLSAgICAgICAgICAgIGludCBnZW5lcmF0b3IgPSAoKytpdCktPnUub3BlcmFuZDsK
KyAgICAgICAgY2FzZSBvcF9zYXZlX2hpbnQ6IHsKKyAgICAgICAgICAgIGludCBmcmFtZSA9ICgr
K2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0lu
ZGV4ID0gKCsraXQpLT51LnVuc2lnbmVkVmFsdWU7CiAgICAgICAgICAgICBpbnQgb2Zmc2V0ID0g
KCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZl
bmVzcyA9IG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGRbbGl2ZUNhbGxlZUxv
Y2Fsc0luZGV4XTsKICAgICAgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxv
Y2F0aW9uLCBpdCwgInNhdmUiKTsKLSAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAiLCByZWdp
c3Rlck5hbWUoZ2VuZXJhdG9yKS5kYXRhKCkpOworICAgICAgICAgICAgb3V0LnByaW50ZigiJXMs
ICIsIHJlZ2lzdGVyTmFtZShmcmFtZSkuZGF0YSgpKTsKICAgICAgICAgICAgIGxpdmVuZXNzLmR1
bXAob3V0KTsKICAgICAgICAgICAgIG91dC5wcmludGYoIihAbGl2ZSUxdSksICVkKC0+JWQpIiwg
bGl2ZUNhbGxlZUxvY2Fsc0luZGV4LCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIGNhc2Ugb3BfcmVzdW1lOiB7Ci0gICAg
ICAgICAgICBpbnQgZ2VuZXJhdG9yID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIGNhc2Ug
b3Bfc2F2ZTogeworICAgICAgICAgICAgaW50IGZyYW1lID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAg
ICAgICAgICAgICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSAoKytpdCktPnUudW5z
aWduZWRWYWx1ZTsKKyAgICAgICAgICAgICsraXQ7IC8vIGRpc2NhcmQgb2Zmc2V0LgogICAgICAg
ICAgICAgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZW5lc3MgPSBtX3JhcmVEYXRhLT5tX2xpdmVD
YWxsZWVMb2NhbHNBdFlpZWxkW2xpdmVDYWxsZWVMb2NhbHNJbmRleF07Ci0gICAgICAgICAgICBw
cmludExvY2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJyZXN1bWUiKTsKLSAg
ICAgICAgICAgIG91dC5wcmludGYoIiVzLCAiLCByZWdpc3Rlck5hbWUoZ2VuZXJhdG9yKS5kYXRh
KCkpOworICAgICAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24s
IGl0LCAic2F2ZSIpOworICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICIsIHJlZ2lzdGVyTmFt
ZShmcmFtZSkuZGF0YSgpKTsKICAgICAgICAgICAgIGxpdmVuZXNzLmR1bXAob3V0KTsKICAgICAg
ICAgICAgIG91dC5wcmludGYoIihAbGl2ZSUxdSkiLCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9yZXN1bWVfaGlu
dDogeworICAgICAgICAgICAgaW50IGZyYW1lID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAg
ICAgICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSAoKytpdCktPnUudW5zaWduZWRW
YWx1ZTsKKyAgICAgICAgICAgIHVuc2lnbmVkIG1heExpdmVDYWxsZWVzID0gKCsraXQpLT51LnVu
c2lnbmVkVmFsdWU7CisgICAgICAgICAgICBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlbmVzcyA9
IG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGRbbGl2ZUNhbGxlZUxvY2Fsc0lu
ZGV4XTsKKyAgICAgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9u
LCBpdCwgInJlc3VtZSIpOworICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICIsIHJlZ2lzdGVy
TmFtZShmcmFtZSkuZGF0YSgpKTsKKyAgICAgICAgICAgIGxpdmVuZXNzLmR1bXAob3V0KTsKKyAg
ICAgICAgICAgIG91dC5wcmludGYoIihAbGl2ZSUxdSksICV1IiwgbGl2ZUNhbGxlZUxvY2Fsc0lu
ZGV4LCBtYXhMaXZlQ2FsbGVlcyk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAg
ICAgICBjYXNlIG9wX3Jlc3VtZV9mcm9tX2dlbmVyYXRvcl9mcmFtZTogeworICAgICAgICAgICAg
aW50IGRzdCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgaW50IGZyYW1lID0gKCsr
aXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICB1bnNpZ25lZCBpbmRleCA9ICgrK2l0KS0+dS51
bnNpZ25lZFZhbHVlOworICAgICAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywg
bG9jYXRpb24sIGl0LCAicmVzdW1lX2Zyb21fZ2VuZXJhdG9yX2ZyYW1lIik7CisgICAgICAgICAg
ICBvdXQucHJpbnRmKCIlcywgJXMsICV1IiwgcmVnaXN0ZXJOYW1lKGRzdCkuZGF0YSgpLCByZWdp
c3Rlck5hbWUoZnJhbWUpLmRhdGEoKSwgaW5kZXgpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0KKyAgICAgICAgY2FzZSBvcF9jbGVhcl9nZW5lcmF0b3JfZnJhbWU6IHsKKyAgICAgICAg
ICAgIGludCBmcmFtZSA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgcHJpbnRMb2Nh
dGlvbk9wQW5kUmVnaXN0ZXJPcGVyYW5kKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAiY2xlYXJf
Z2VuZXJhdG9yX2ZyYW1lIiwgZnJhbWUpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0K
KyAgICAgICAgY2FzZSBvcF9uZXdfZ2VuZXJhdG9yX2ZyYW1lOiB7CisgICAgICAgICAgICBpbnQg
ZHN0ID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICB1bnNpZ25lZCBnZW5lcmF0b3JM
b2NhbHNTaXplID0gKCsraXQpLT51LnVuc2lnbmVkVmFsdWU7CisgICAgICAgICAgICBwcmludExv
Y2F0aW9uT3BBbmRSZWdpc3Rlck9wZXJhbmQob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJuZXdf
Z2VuZXJhdG9yX2ZyYW1lIiwgZHN0KTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIiAldSIsIGdl
bmVyYXRvckxvY2Fsc1NpemUpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAg
ICAgY2FzZSBvcF9ub3A6IHsKKyAgICAgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGV4
ZWMsIGxvY2F0aW9uLCBpdCwgIm5vcCIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0K
ICAgICAgICAgY2FzZSBvcF9hc3NlcnQ6IHsKICAgICAgICAgICAgIGludCBjb25kaXRpb24gPSAo
KytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBsaW5lID0gKCsraXQpLT51Lm9wZXJh
bmQ7CkBAIC0xODQ3LDYgKzE4ODMsMTIgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9u
KFZNJiB2bSwgQ29weVBhcnNlZEJsb2NrVGFnLCBDb2RlQmxvY2smIG90aGVyKQogICAgIHNldE51
bVBhcmFtZXRlcnModW5saW5rZWRDb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSk7CiB9CiAKK3N0
cnVjdCBHZW5lcmF0b3JQb2ludHMgeworICAgIHNpemVfdCBzYXZlUG9pbnQ7CisgICAgc2l6ZV90
IG1lcmdlUG9pbnQ7CisgICAgc2l6ZV90IHJlc3VtZVBvaW50OworfTsKKwogdm9pZCBDb2RlQmxv
Y2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRh
YmxlLCBVbmxpbmtlZENvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2ssCiAgICAgSlNTY29wZSog
c2NvcGUpCiB7CkBAIC0xOTgwLDkgKzIwMjIsMTAgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmlzaENy
ZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsK
ICAgICBIYXNoU2V0PEpTTW9kdWxlRW52aXJvbm1lbnQqPiBzdHJvbmdseVJlZmVyZW5jZWRNb2R1
bGVFbnZpcm9ubWVudHM7CiAKICAgICAvLyBCb29ra2VlcCB0aGUgbWVyZ2UgcG9pbnQgYnl0ZWNv
ZGUgb2Zmc2V0cy4KLSAgICBWZWN0b3I8c2l6ZV90PiBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXRz
OworICAgIFZlY3RvcjxHZW5lcmF0b3JQb2ludHM+IGdlbmVyYXRvclBvaW50c1ZlY3RvcjsKIAog
ICAgIFJlZkNvdW50ZWRBcnJheTxJbnN0cnVjdGlvbj4gaW5zdHJ1Y3Rpb25zKGluc3RydWN0aW9u
Q291bnQpOworICAgIHVuc2lnbmVkIG5ld0dlbmVyYXRvckZyYW1lSW5zdHJ1Y3Rpb25PZmZzZXQg
PSAwOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgIWluc3RydWN0aW9uUmVhZGVyLmF0RW5k
KCk7ICkgewogICAgICAgICBjb25zdCBVbmxpbmtlZEluc3RydWN0aW9uKiBwYyA9IGluc3RydWN0
aW9uUmVhZGVyLm5leHQoKTsKQEAgLTIyNzAsMTIgKzIzMTMsMjYgQEAgdm9pZCBDb2RlQmxvY2s6
OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxl
LCBVbmxpbmsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKLSAgICAgICAgY2FzZSBv
cF9zYXZlOiB7CisgICAgICAgIGNhc2Ugb3Bfc2F2ZV9oaW50OiB7CiAgICAgICAgICAgICB1bnNp
Z25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSBwY1syXS51LmluZGV4OwogICAgICAgICAgICAg
aW50IG9mZnNldCA9IHBjWzNdLnUub3BlcmFuZDsKLSAgICAgICAgICAgIGlmIChsaXZlQ2FsbGVl
TG9jYWxzSW5kZXggPj0gbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0cy5zaXplKCkpCi0gICAgICAg
ICAgICAgICAgbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0cy5yZXNpemUobGl2ZUNhbGxlZUxvY2Fs
c0luZGV4ICsgMSk7Ci0gICAgICAgICAgICBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXRzW2xpdmVD
YWxsZWVMb2NhbHNJbmRleF0gPSBpICsgb2Zmc2V0OworICAgICAgICAgICAgaWYgKGxpdmVDYWxs
ZWVMb2NhbHNJbmRleCA+PSBnZW5lcmF0b3JQb2ludHNWZWN0b3Iuc2l6ZSgpKQorICAgICAgICAg
ICAgICAgIGdlbmVyYXRvclBvaW50c1ZlY3Rvci5yZXNpemUobGl2ZUNhbGxlZUxvY2Fsc0luZGV4
ICsgMSk7CisgICAgICAgICAgICBnZW5lcmF0b3JQb2ludHNWZWN0b3JbbGl2ZUNhbGxlZUxvY2Fs
c0luZGV4XS5zYXZlUG9pbnQgPSBpOworICAgICAgICAgICAgZ2VuZXJhdG9yUG9pbnRzVmVjdG9y
W2xpdmVDYWxsZWVMb2NhbHNJbmRleF0ubWVyZ2VQb2ludCA9IGkgKyBvZmZzZXQ7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2Ugb3BfcmVzdW1lX2hpbnQ6IHsK
KyAgICAgICAgICAgIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9IHBjWzJdLnUuaW5k
ZXg7CisgICAgICAgICAgICBpZiAobGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID49IGdlbmVyYXRvclBv
aW50c1ZlY3Rvci5zaXplKCkpCisgICAgICAgICAgICAgICAgZ2VuZXJhdG9yUG9pbnRzVmVjdG9y
LnJlc2l6ZShsaXZlQ2FsbGVlTG9jYWxzSW5kZXggKyAxKTsKKyAgICAgICAgICAgIGdlbmVyYXRv
clBvaW50c1ZlY3RvcltsaXZlQ2FsbGVlTG9jYWxzSW5kZXhdLnJlc3VtZVBvaW50ID0gaTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBvcF9uZXdfZ2VuZXJh
dG9yX2ZyYW1lOiB7CisgICAgICAgICAgICBuZXdHZW5lcmF0b3JGcmFtZUluc3RydWN0aW9uT2Zm
c2V0ID0gaTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKQEAgLTIyODUsMjUgKzIz
NDIsNjQgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhl
Y3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICAgICAgaSArPSBvcExlbmd0aDsK
ICAgICB9CiAKLSAgICBpZiAodm0uY29udHJvbEZsb3dQcm9maWxlcigpKQotICAgICAgICBpbnNl
cnRCYXNpY0Jsb2NrQm91bmRhcmllc0ZvckNvbnRyb2xGbG93UHJvZmlsZXIoaW5zdHJ1Y3Rpb25z
KTsKLQogICAgIG1faW5zdHJ1Y3Rpb25zID0gV1RGTW92ZShpbnN0cnVjdGlvbnMpOwogCi0gICAg
Ly8gUGVyZm9ybSBieXRlY29kZSBsaXZlbmVzcyBhbmFseXNpcyB0byBkZXRlcm1pbmUgd2hpY2gg
bG9jYWxzIGFyZSBsaXZlIGFuZCBzaG91bGQgYmUgcmVzdW1lZCB3aGVuIGV4ZWN1dGluZyBvcF9y
ZXN1bWUuCisgICAgLy8gUGVyZm9ybSBieXRlY29kZSBsaXZlbmVzcyBhbmFseXNpcyB0byBkZXRl
cm1pbmUgd2hpY2ggbG9jYWxzIGFyZSBsaXZlIGFuZCBzaG91bGQgYmUgcmVzdW1lZCB3aGVuIGV4
ZWN1dGluZyBvcF9yZXN1bWVfaGludC4KICAgICBpZiAodW5saW5rZWRDb2RlQmxvY2stPnBhcnNl
TW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yQm9keU1vZGUpIHsKLSAgICAgICAg
aWYgKHNpemVfdCBjb3VudCA9IG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldHMuc2l6ZSgpKSB7Cisg
ICAgICAgIHVuc2lnbmVkIG1heEdlbmVyYXRvckxvY2Fsc1NpemUgPSAwOworICAgICAgICBpZiAo
c2l6ZV90IGNvdW50ID0gZ2VuZXJhdG9yUG9pbnRzVmVjdG9yLnNpemUoKSkgewogICAgICAgICAg
ICAgY3JlYXRlUmFyZURhdGFJZk5lY2Vzc2FyeSgpOwotICAgICAgICAgICAgQnl0ZWNvZGVMaXZl
bmVzc0FuYWx5c2lzIGxpdmVuZXNzKHRoaXMpOwogICAgICAgICAgICAgbV9yYXJlRGF0YS0+bV9s
aXZlQ2FsbGVlTG9jYWxzQXRZaWVsZC5ncm93KGNvdW50KTsKLSAgICAgICAgICAgIHNpemVfdCBs
aXZlQ2FsbGVlTG9jYWxzSW5kZXggPSAwOwotICAgICAgICAgICAgZm9yIChzaXplX3QgYnl0ZWNv
ZGVPZmZzZXQgOiBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXRzKSB7Ci0gICAgICAgICAgICAgICAg
bV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZFtsaXZlQ2FsbGVlTG9jYWxzSW5k
ZXhdID0gbGl2ZW5lc3MuZ2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29kZU9mZnNldChieXRlY29kZU9m
ZnNldCk7Ci0gICAgICAgICAgICAgICAgKytsaXZlQ2FsbGVlTG9jYWxzSW5kZXg7CisKKyAgICAg
ICAgICAgIC8vIEZpcnN0LCBwZXJmb3JtIGJ5dGVjb2RlIHVzZS1kZWYgYW5hbHlzaXMgb250byB0
aGUgY3VycmVudCBieXRlY29kZSBzdHJlYW0gYW5kIGNhbGN1bGF0ZSBsaXZlIGxvY2FscyBhdCB0
aGUgbWVyZ2UgcG9pbnRzLgorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIEJ5dGVjb2Rl
TGl2ZW5lc3NBbmFseXNpcyBsaXZlbmVzcyh0aGlzKTsKKyAgICAgICAgICAgICAgICBmb3IgKHNp
emVfdCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSAwOyBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPCBn
ZW5lcmF0b3JQb2ludHNWZWN0b3Iuc2l6ZSgpOyArK2xpdmVDYWxsZWVMb2NhbHNJbmRleCkgewor
ICAgICAgICAgICAgICAgICAgICBjb25zdCBHZW5lcmF0b3JQb2ludHMmIHBvaW50cyA9IGdlbmVy
YXRvclBvaW50c1ZlY3RvcltsaXZlQ2FsbGVlTG9jYWxzSW5kZXhdOworICAgICAgICAgICAgICAg
ICAgICBzaXplX3QgbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0ID0gcG9pbnRzLm1lcmdlUG9pbnQ7
CisgICAgICAgICAgICAgICAgICAgIEZhc3RCaXRWZWN0b3IgbGl2ZW5lc3NWZWN0b3IgPSBsaXZl
bmVzcy5nZXRMaXZlbmVzc0luZm9BdEJ5dGVjb2RlT2Zmc2V0KG1lcmdlUG9pbnRCeXRlY29kZU9m
ZnNldCk7CisgICAgICAgICAgICAgICAgICAgIG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fs
c0F0WWllbGRbbGl2ZUNhbGxlZUxvY2Fsc0luZGV4XSA9IGxpdmVuZXNzVmVjdG9yOworICAgICAg
ICAgICAgICAgICAgICBtYXhHZW5lcmF0b3JMb2NhbHNTaXplID0gc3RkOjptYXg8dW5zaWduZWQ+
KG1heEdlbmVyYXRvckxvY2Fsc1NpemUsIGxpdmVuZXNzVmVjdG9yLmJpdENvdW50KCkpOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlbiwgcmV3
cml0ZSBieXRlY29kZXMgYmFzZWQgb24gdGhlIGNhbGN1bGF0ZWQgbGl2ZW5lc3MuCisgICAgICAg
ICAgICAvLyBEbyBub3QgcmV3cml0ZSBieXRlY29kZXMgd2hpbGUgY29udGludWluZyBsaXZlbmVz
cyBhbmFseXNpcy4KKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGxpdmVDYWxsZWVMb2NhbHNJbmRl
eCA9IDA7IGxpdmVDYWxsZWVMb2NhbHNJbmRleCA8IGdlbmVyYXRvclBvaW50c1ZlY3Rvci5zaXpl
KCk7ICsrbGl2ZUNhbGxlZUxvY2Fsc0luZGV4KSB7CisgICAgICAgICAgICAgICAgY29uc3QgR2Vu
ZXJhdG9yUG9pbnRzJiBwb2ludHMgPSBnZW5lcmF0b3JQb2ludHNWZWN0b3JbbGl2ZUNhbGxlZUxv
Y2Fsc0luZGV4XTsKKyAgICAgICAgICAgICAgICBzaXplX3Qgc2F2ZVBvaW50Qnl0ZWNvZGVPZmZz
ZXQgPSBwb2ludHMuc2F2ZVBvaW50OworICAgICAgICAgICAgICAgIHNpemVfdCByZXN1bWVQb2lu
dEJ5dGVjb2RlT2Zmc2V0ID0gcG9pbnRzLnJlc3VtZVBvaW50OworCisgICAgICAgICAgICAgICAg
Y29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZW5lc3NWZWN0b3IgPSBtX3JhcmVEYXRhLT5tX2xpdmVD
YWxsZWVMb2NhbHNBdFlpZWxkW2xpdmVDYWxsZWVMb2NhbHNJbmRleF07CisKKyAgICAgICAgICAg
ICAgICAvLyBQYXRjaCBvcF9yZXN1bWVfaGludCB3aXRoIHJlc3VtZV9mcm9tX2dlbmVyYXRvcl9m
cmFtZSBvcGVyYXRpb25zLgorICAgICAgICAgICAgICAgIGludCBnZW5lcmF0b3JMb2NhbEluZGV4
ID0gbV9pbnN0cnVjdGlvbnNbcmVzdW1lUG9pbnRCeXRlY29kZU9mZnNldCArIDFdLnUub3BlcmFu
ZDsKKyAgICAgICAgICAgICAgICBpZiAoIWxpdmVuZXNzVmVjdG9yLmJpdENvdW50KCkpIHsKKyAg
ICAgICAgICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCA0OyArK2kpCisgICAgICAg
ICAgICAgICAgICAgICAgICBtX2luc3RydWN0aW9uc1tyZXN1bWVQb2ludEJ5dGVjb2RlT2Zmc2V0
ICsgaV0gPSB2bS5pbnRlcnByZXRlci0+Z2V0T3Bjb2RlKG9wX25vcCk7CisgICAgICAgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGkgPSAwOworICAgICAgICAg
ICAgICAgICAgICBsaXZlbmVzc1ZlY3Rvci5mb3JFYWNoU2V0Qml0KFsmXSh1bnNpZ25lZCBsb2Nh
bCkgeworICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGluZGV4ID0gaSsrOworICAgICAg
ICAgICAgICAgICAgICAgICAgc2l6ZV90IG9mZnNldCA9IHJlc3VtZVBvaW50Qnl0ZWNvZGVPZmZz
ZXQgKyBpbmRleCAqIDQ7CisgICAgICAgICAgICAgICAgICAgICAgICBtX2luc3RydWN0aW9uc1tv
ZmZzZXRdID0gdm0uaW50ZXJwcmV0ZXItPmdldE9wY29kZShvcF9yZXN1bWVfZnJvbV9nZW5lcmF0
b3JfZnJhbWUpOworICAgICAgICAgICAgICAgICAgICAgICAgbV9pbnN0cnVjdGlvbnNbb2Zmc2V0
ICsgMV0udS5vcGVyYW5kID0gdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwobG9jYWwpLm9mZnNldCgp
OworICAgICAgICAgICAgICAgICAgICAgICAgbV9pbnN0cnVjdGlvbnNbb2Zmc2V0ICsgMl0udS5v
cGVyYW5kID0gZ2VuZXJhdG9yTG9jYWxJbmRleDsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1f
aW5zdHJ1Y3Rpb25zW29mZnNldCArIDNdLnUudW5zaWduZWRWYWx1ZSA9IGluZGV4OworICAgICAg
ICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAv
LyBQYXRjaCBvcF9zYXZlX2hpbnQgd2l0aCBvcF9zYXZlLgorICAgICAgICAgICAgICAgIG1faW5z
dHJ1Y3Rpb25zW3NhdmVQb2ludEJ5dGVjb2RlT2Zmc2V0XSA9IHZtLmludGVycHJldGVyLT5nZXRP
cGNvZGUob3Bfc2F2ZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KKyAgICAgICAgLy8gRmls
bCBvcF9uZXdfZ2VuZXJhdG9yX2ZyYW1lJ3Mgc2l6ZS4KKyAgICAgICAgbV9pbnN0cnVjdGlvbnNb
bmV3R2VuZXJhdG9yRnJhbWVJbnN0cnVjdGlvbk9mZnNldCArIDJdLnUudW5zaWduZWRWYWx1ZSA9
IG1heEdlbmVyYXRvckxvY2Fsc1NpemU7CiAgICAgfQogCisgICAgaWYgKHZtLmNvbnRyb2xGbG93
UHJvZmlsZXIoKSkKKyAgICAgICAgaW5zZXJ0QmFzaWNCbG9ja0JvdW5kYXJpZXNGb3JDb250cm9s
Rmxvd1Byb2ZpbGVyKG1faW5zdHJ1Y3Rpb25zKTsKKwogICAgIC8vIFNldCBvcHRpbWl6YXRpb24g
dGhyZXNob2xkcyBvbmx5IGFmdGVyIG1faW5zdHJ1Y3Rpb25zIGlzIGluaXRpYWxpemVkLCBzaW5j
ZSB0aGVzZQogICAgIC8vIHJlbHkgb24gdGhlIGluc3RydWN0aW9uIGNvdW50IChhbmQgYXJlIGlu
IHRoZW9yeSBwZXJtaXR0ZWQgdG8gYWxzbyBpbnNwZWN0IHRoZQogICAgIC8vIGluc3RydWN0aW9u
IHN0cmVhbSB0byBtb3JlIGFjY3VyYXRlIGFzc2VzcyB0aGUgY29zdCBvZiB0aWVyLXVwKS4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdl
dHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0
cy5jcHAKaW5kZXggZTJjYjAwMDQ4Mzc5NGJhOTJkNTEwZGNmNWZhOTk0ODg1YTIzZGMzZC4uMDg0
YmFiYzI2M2E1NTA0ODg1YWMwOTUwZmI0YWIzMTJlMWE1OWYzMyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5jcHAKQEAgLTU0
LDcgKzU0LDkgQEAgc3RhdGljIHZvaWQgZ2V0SnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChD
b2RlQmxvY2sqIGNvZGVCbG9jaywgSW50ZXJwcmV0ZXIqIGkKICAgICBjYXNlIG9wX2pubGVzc2Vx
OgogICAgIGNhc2Ugb3Bfam5ncmVhdGVyOgogICAgIGNhc2Ugb3Bfam5ncmVhdGVyZXE6Ci0gICAg
Y2FzZSBvcF9zYXZlOiAvLyBUaGUganVtcCBvZiBvcF9zYXZlIGlzIHB1cmVseSBmb3IgY2FsY3Vs
YXRpbmcgbGl2ZW5lc3MuCisgICAgLy8gVGhlIGp1bXAgb2Ygb3Bfc2F2ZV9oaW50IGlzIHB1cmVs
eSBmb3IgY2FsY3VsYXRpbmcgbGl2ZW5lc3MuCisgICAgLy8gV2hpbGUgb3Bfc2F2ZV9oaW50IGhh
cyBhIGp1bXAgZm9yIGxpdmVuZXNzIGFuYWx5c2lzLCBvcF9zYXZlIGRvZXMgbm90IGhhdmUgYSBq
dW1wLgorICAgIGNhc2Ugb3Bfc2F2ZV9oaW50OgogICAgICAgICBvdXQuYXBwZW5kKGJ5dGVjb2Rl
T2Zmc2V0ICsgY3VycmVudFszXS51Lm9wZXJhbmQpOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IG9wX3N3aXRjaF9pbW06CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IGQxNWUyMjQzNTI2NmZlMWFmZjNk
NWY3OWExZGRhNzViOWJkYWYzZjMuLjBkYWVlYzYzZjZjMjM3MGQ1NjQ4MzAxMGMzMmI1Y2NjYTUw
NmM0MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0
ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC0yNTcsNyArMjU3LDcgQEAgUGFyc2VyRXJyb3Ig
Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKCkKICAgICAgICAgLy8gICAgZnVuY3Rpb24gKmdl
bihhLCBiID0gaGVsbG8oKSkKICAgICAgICAgLy8gICAgewogICAgICAgICAvLyAgICAgICAgcmV0
dXJuIHsKLSAgICAgICAgLy8gICAgICAgICAgICBAZ2VuZXJhdG9yTmV4dDogZnVuY3Rpb24gKEBn
ZW5lcmF0b3IsIEBnZW5lcmF0b3JTdGF0ZSwgQGdlbmVyYXRvclZhbHVlLCBAZ2VuZXJhdG9yUmVz
dW1lTW9kZSkKKyAgICAgICAgLy8gICAgICAgICAgICBAZ2VuZXJhdG9yTmV4dDogZnVuY3Rpb24g
KEBnZW5lcmF0b3IsIEBnZW5lcmF0b3JTdGF0ZSwgQGdlbmVyYXRvclZhbHVlLCBAZ2VuZXJhdG9y
UmVzdW1lTW9kZSwgQGdlbmVyYXRvckZyYW1lKQogICAgICAgICAvLyAgICAgICAgICAgIHsKICAg
ICAgICAgLy8gICAgICAgICAgICAgICAgYXJndW1lbnRzOyAgLy8gVGhpcyBgYXJndW1lbnRzYCBz
aG91bGQgcmVmZXJlbmNlIHRvIHRoZSBnZW4ncyBhcmd1bWVudHMuCiAgICAgICAgIC8vICAgICAg
ICAgICAgICAgIC4uLgpAQCAtNTM3LDYgKzUzNyw5IEBAIFBhcnNlckVycm9yIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjpnZW5lcmF0ZSgpCiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckJv
ZHlNb2RlOiB7CiAgICAgICAgIC8vIHx0aGlzfCBpcyBhbHJlYWR5IGZpbGxlZCBjb3JyZWN0bHkg
YmVmb3JlIGhlcmUuCiAgICAgICAgIGVtaXRMb2FkKG1fbmV3VGFyZ2V0UmVnaXN0ZXIsIGpzVW5k
ZWZpbmVkKCkpOworCisgICAgICAgIGVtaXROZXdHZW5lcmF0b3JGcmFtZShnZW5lcmF0b3JGcmFt
ZVJlZ2lzdGVyKCkpOworICAgICAgICBlbWl0UHV0QnlJZChnZW5lcmF0b3JSZWdpc3RlcigpLCBw
cm9wZXJ0eU5hbWVzKCkuZ2VuZXJhdG9yRnJhbWVQcml2YXRlTmFtZSwgZ2VuZXJhdG9yRnJhbWVS
ZWdpc3RlcigpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCkBAIC0yNzQ0LDYgKzI3NDcsMTQg
QEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdGdW5jdGlvbihSZWdpc3Rl
cklEKiBkc3QsIEZ1bmN0aW9uTWV0YWRhdGEKICAgICByZXR1cm4gZHN0OwogfQogCitSZWdpc3Rl
cklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0dlbmVyYXRvckZyYW1lKFJlZ2lzdGVySUQq
IGRzdCkKK3sKKyAgICBlbWl0T3Bjb2RlKG9wX25ld19nZW5lcmF0b3JfZnJhbWUpOworICAgIGlu
c3RydWN0aW9ucygpLmFwcGVuZChkc3QtPmluZGV4KCkpOworICAgIGluc3RydWN0aW9ucygpLmFw
cGVuZCgwKTsKKyAgICByZXR1cm4gZHN0OworfQorCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdENhbGwoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBmdW5jLCBFeHBlY3Rl
ZEZ1bmN0aW9uIGV4cGVjdGVkRnVuY3Rpb24sIENhbGxBcmd1bWVudHMmIGNhbGxBcmd1bWVudHMs
IGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90
U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCkKIHsKICAgICByZXR1cm4gZW1p
dENhbGwob3BfY2FsbCwgZHN0LCBmdW5jLCBleHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRz
LCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQpOwpAQCAtNDE0NCw4ICs0MTU1LDggQEAgdm9p
ZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFlpZWxkUG9pbnQoUmVnaXN0ZXJJRCogYXJndW1lbnQp
CiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0U2F2ZShMYWJlbCogbWVyZ2VQb2ludCwgdW5z
aWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4KQogewogICAgIHNpemVfdCBiZWdpbiA9IGluc3Ry
dWN0aW9ucygpLnNpemUoKTsKLSAgICBlbWl0T3Bjb2RlKG9wX3NhdmUpOwotICAgIGluc3RydWN0
aW9ucygpLmFwcGVuZChtX2dlbmVyYXRvclJlZ2lzdGVyLT5pbmRleCgpKTsKKyAgICBlbWl0T3Bj
b2RlKG9wX3NhdmVfaGludCk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGdlbmVyYXRvckZy
YW1lUmVnaXN0ZXIoKS0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGxpdmVD
YWxsZWVMb2NhbHNJbmRleCk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1lcmdlUG9pbnQt
PmJpbmQoYmVnaW4sIGluc3RydWN0aW9ucygpLnNpemUoKSkpOwogfQpAQCAtNDE1Myw5ICs0MTY0
LDMwIEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRTYXZlKExhYmVsKiBtZXJnZVBvaW50
LCB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0UmVzdW1lKExhYmVsKiBtZXJnZVBvaW50LCB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5k
ZXgpCiB7CiAgICAgZW1pdEdlbmVyYXRvclN0YXRlTGFiZWwoKTsKLSAgICBlbWl0T3Bjb2RlKG9w
X3Jlc3VtZSk7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fZ2VuZXJhdG9yUmVnaXN0ZXIt
PmluZGV4KCkpOworCisgICAgcmVjbGFpbUZyZWVSZWdpc3RlcnMoKTsKKyAgICB1bnNpZ25lZCBt
YXhMaXZlTG9jYWxzID0gMDsKKyAgICBmb3IgKGNvbnN0IFJlZ2lzdGVySUQmIHJlZyA6IG1fY2Fs
bGVlTG9jYWxzKSB7CisgICAgICAgIGlmIChyZWcucmVmQ291bnQoKSkKKyAgICAgICAgICAgICsr
bWF4TGl2ZUxvY2FsczsKKyAgICB9CisKKyAgICAvLyBUaGlzIG9wX3Jlc3VtZV9oaW50IHdpbGwg
YmUgcmVwbGFjZWQgd2l0aCB0aGUgYWN0dWFsIG9wcy4KKyAgICBzdGF0aWNfYXNzZXJ0KE9QQ09E
RV9MRU5HVEgob3BfcmVzdW1lX2hpbnQpID09IE9QQ09ERV9MRU5HVEgob3BfcmVzdW1lX2Zyb21f
Z2VuZXJhdG9yX2ZyYW1lKSwgIlRoZSBsZW5ndGggb2Ygb3BfcmVzdW1lX2hpbnQgc2hvdWxkIGVx
YXVhbCB0byBvbmUgb2Ygb3BfcmVzdW1lX2Zyb21fZ2VuZXJhdG9yX2ZyYW1lLiIpOworICAgIGlm
IChtYXhMaXZlTG9jYWxzKQorICAgICAgICBtYXhMaXZlTG9jYWxzIC09IDE7CisKKyAgICBlbWl0
T3Bjb2RlKG9wX3Jlc3VtZV9oaW50KTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZ2VuZXJh
dG9yRnJhbWVSZWdpc3RlcigpLT5pbmRleCgpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQo
bGl2ZUNhbGxlZUxvY2Fsc0luZGV4KTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobWF4TGl2
ZUxvY2Fscyk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1heExpdmVMb2NhbHM7ICsr
aSkgeworICAgICAgICAvLyBOb3Agc3BhY2UuIExhdGVyIHdlIHdpbGwgZmlsbCB0aGlzIHdpdGgg
dGhlIGFjdHVhbCByZXN1bWUgb3BlcmF0aW9ucy4KKyAgICAgICAgZm9yICh1bnNpZ25lZCBqID0g
MDsgaiA8IE9QQ09ERV9MRU5HVEgob3BfcmVzdW1lX2Zyb21fZ2VuZXJhdG9yX2ZyYW1lKTsgKytq
KQorICAgICAgICAgICAgZW1pdE9wY29kZShvcF9ub3ApOworICAgIH0KKyAgICBlbWl0T3Bjb2Rl
KG9wX2NsZWFyX2dlbmVyYXRvcl9mcmFtZSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGdl
bmVyYXRvckZyYW1lUmVnaXN0ZXIoKS0+aW5kZXgoKSk7CiAgICAgZW1pdExhYmVsKG1lcmdlUG9p
bnQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5kZXggN2QwYzIwYjZmNTE2YTE3ZTg5M2YxYmJhMDgwM2Mx
MzMzZmZjOGQwZC4uM2QzMzQ3ODE1YWMzMGE4MmU2MjZlM2UwNzgwODFiZTJiM2U5YmUzZiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVH
ZW5lcmF0b3IuaApAQCAtNTIyLDYgKzUyMiw3IEBACiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRO
ZXdEZWZhdWx0Q29uc3RydWN0b3IoUmVnaXN0ZXJJRCogZHN0LCBDb25zdHJ1Y3RvcktpbmQsIGNv
bnN0IElkZW50aWZpZXImIG5hbWUpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0TmV3QXJyb3dG
dW5jdGlvbkV4cHJlc3Npb24oUmVnaXN0ZXJJRCosIEFycm93RnVuY0V4cHJOb2RlKik7CiAgICAg
ICAgIFJlZ2lzdGVySUQqIGVtaXROZXdSZWdFeHAoUmVnaXN0ZXJJRCogZHN0LCBSZWdFeHAqKTsK
KyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdE5ld0dlbmVyYXRvckZyYW1lKFJlZ2lzdGVySUQqIGRz
dCk7CiAKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdE1vdmVMaW5rVGltZUNvbnN0YW50KFJlZ2lz
dGVySUQqIGRzdCwgTGlua1RpbWVDb25zdGFudCk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRN
b3ZlRW1wdHlWYWx1ZShSZWdpc3RlcklEKiBkc3QpOwpAQCAtNjg0LDYgKzY4NSw3IEBACiAgICAg
ICAgIFJlZ2lzdGVySUQqIGdlbmVyYXRvclN0YXRlUmVnaXN0ZXIoKSB7IHJldHVybiAmbV9wYXJh
bWV0ZXJzWzJdOyB9CiAgICAgICAgIFJlZ2lzdGVySUQqIGdlbmVyYXRvclZhbHVlUmVnaXN0ZXIo
KSB7IHJldHVybiAmbV9wYXJhbWV0ZXJzWzNdOyB9CiAgICAgICAgIFJlZ2lzdGVySUQqIGdlbmVy
YXRvclJlc3VtZU1vZGVSZWdpc3RlcigpIHsgcmV0dXJuICZtX3BhcmFtZXRlcnNbNF07IH0KKyAg
ICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9yRnJhbWVSZWdpc3RlcigpIHsgcmV0dXJuICZtX3Bh
cmFtZXRlcnNbNV07IH0KIAogICAgICAgICBDb2RlVHlwZSBjb2RlVHlwZSgpIGNvbnN0IHsgcmV0
dXJuIG1fY29kZVR5cGU7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdBYnN0cmFjdEhlYXAuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJh
Y3RIZWFwLmgKaW5kZXggNGRlYzhmYTAzNzc2ZTAxZTZjZDM3NDYwNjU5Y2M1NjExNjIzOGM2NS4u
OWM4NmY2OTJiOGQzODVkOWViMjQ2OTdkNzkyNzlkZjZjZGY0NWNlNSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEhlYXAuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SGVhcC5oCkBAIC02OCw2ICs2OCw4IEBACiAgICAg
bWFjcm8oU2NvcGVQcm9wZXJ0aWVzKSBcCiAgICAgbWFjcm8oVHlwZWRBcnJheVByb3BlcnRpZXMp
IFwKICAgICBtYWNybyhIZWFwT2JqZWN0Q291bnQpIC8qIFVzZWQgdG8gcmVmbGVjdCB0aGUgZmFj
dCB0aGF0IHNvbWUgYWxsb2NhdGlvbnMgcmV2ZWFsIG9iamVjdCBpZGVudGl0eSAqL1wKKyAgICBt
YWNybyhHZW5lcmF0b3JMb2NhbHMpIFwKKyAgICBtYWNybyhHZW5lcmF0b3JMb2NhbENvdW50KSBc
CiAgICAgbWFjcm8oUmVnRXhwU3RhdGUpIFwKICAgICBtYWNybyhNYXRoRG90UmFuZG9tU3RhdGUp
IFwKICAgICBtYWNybyhJbnRlcm5hbFN0YXRlKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKaW5kZXggOWVl
YzYzY2ViMDcxYmMxNDg2YTAxMmMyODUwMWRiNjI0MjZiZGU3Yi4uNzZlMTczZWViYWRiN2YyYWU5
ODkwMDVhMWJhNTViZTFhMWU5NDA2NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaApAQCAtMTY4Nyw2ICsx
Njg3LDEwIEBACiAgICAgY2FzZSBOZXdSZWdleHA6CiAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykt
PnJlZ0V4cFN0cnVjdHVyZSgpKTsKICAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIE5ld0dlbmVy
YXRvckZyYW1lOgorICAgICAgICBmb3JOb2RlKG5vZGUpLnNldChtX2dyYXBoLCBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5nZW5lcmF0b3JGcmFtZVN0cnVj
dHVyZSgpKTsKKyAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICBjYXNlIFRvVGhpczog
ewogICAgICAgICBBYnN0cmFjdFZhbHVlJiBzb3VyY2UgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgp
KTsKQEAgLTI1MTAsNiArMjUxNCwxNyBAQAogICAgICAgICBmb3JOb2RlKG5vZGUpLm1ha2VIZWFw
VG9wKCk7CiAgICAgICAgIGJyZWFrOwogCisgICAgY2FzZSBTZXRHZW5lcmF0b3JMb2NhbDoKKyAg
ICBjYXNlIFJlc2l6ZUdlbmVyYXRvckxvY2FsczoKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNl
IEdldEdlbmVyYXRvckxvY2FsOiB7CisgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYXR0ZW1w
dCB0byBjb252ZXJ0IGl0IHRvIGNvbnN0YW50LgorICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUzMTgzCisgICAgICAgIGZvck5vZGUobm9kZSkubWFr
ZUhlYXBUb3AoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBGb3JjZU9TUkV4
aXQ6CiAgICAgY2FzZSBDaGVja0JhZENlbGw6CiAgICAgICAgIG1fc3RhdGUuc2V0SXNWYWxpZChm
YWxzZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2Rl
UGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIu
Y3BwCmluZGV4IDM2NDRhMmZkMTlhMGQ5YjNkZGE3YjA2OGEwMDQ5MGE1ODI2MjA4NmQuLjZhODNk
YTFmZDI0NmNiOGI1ZWZkMzk0MDg3YzQ2NDdiNTc3ZWE5YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC0zNiw2ICszNiw3IEBACiAj
aW5jbHVkZSAiREZHQXJyYXlNb2RlLmgiCiAjaW5jbHVkZSAiREZHQ2FwYWJpbGl0aWVzLmgiCiAj
aW5jbHVkZSAiREZHQ2xvYmJlcnNFeGl0U3RhdGUuaCIKKyNpbmNsdWRlICJERkdHZW5lcmF0b3JM
b2NhbERhdGEuaCIKICNpbmNsdWRlICJERkdHcmFwaC5oIgogI2luY2x1ZGUgIkRGR0pJVENvZGUu
aCIKICNpbmNsdWRlICJHZXRCeUlkU3RhdHVzLmgiCkBAIC05NjMsNiArOTY0LDExIEBAIGNsYXNz
IEJ5dGVDb2RlUGFyc2VyIHsKICAgICAgICAgZm9yIChBcmd1bWVudFBvc2l0aW9uKiBhcmd1bWVu
dCA6IG1faW5saW5lU3RhY2tUb3AtPm1fYXJndW1lbnRQb3NpdGlvbnMpCiAgICAgICAgICAgICBh
cmd1bWVudC0+bWVyZ2VTaG91bGROZXZlclVuYm94KHRydWUpOwogICAgIH0KKworICAgIEdlbmVy
YXRvckxvY2FsRGF0YSogbmV3R2VuZXJhdG9yTG9jYWxEYXRhKCkKKyAgICB7CisgICAgICAgIHJl
dHVybiBtX2dyYXBoLm1fZ2VuZXJhdG9yTG9jYWxEYXRhLmFkZCgpOworICAgIH0KICAgICAKICAg
ICBWTSogbV92bTsKICAgICBDb2RlQmxvY2sqIG1fY29kZUJsb2NrOwpAQCAtMTA1MSw2ICsxMDU3
LDExIEBAIGNsYXNzIEJ5dGVDb2RlUGFyc2VyIHsKICAgICAgICAgQ2FsbExpbmtJbmZvTWFwIG1f
Y2FsbExpbmtJbmZvczsKICAgICAgICAgU3R1YkluZm9NYXAgbV9zdHViSW5mb3M7CiAgICAgICAg
IEJ5VmFsSW5mb01hcCBtX2J5VmFsSW5mb3M7CisKKyAgICAgICAgLy8gU2luY2UgdGhlIG9wX3Jl
c3VtZV9oaW50IGlzIGVtaXR0ZWQgYWZ0ZXIgdGhlIGNvcnJlc3BvbmRpbmcgb3Bfc2F2ZV9oaW50
CisgICAgICAgIC8vIGFuZCB0aGVyZSBpcyBubyBvdGhlciBvcF9yZXN1bWVfaGludCBhbmQgb3Bf
c2F2ZV9oaW50IGJldHdlZW4gdGhlbSwKKyAgICAgICAgLy8gd2UgY2FuIHRyYWNrIHRoZXNlIGNv
cnJlc3BvbmRlbmNlIGJ5IGp1c3QgdHJhY2tpbmcgY3VycmVudGx5IGZvY3VzaW5nIG9wX3NhdmUu
CisgICAgICAgIE9wZXJhbmRzPEdlbmVyYXRvckxvY2FsRGF0YSo+IG1fZ2VuZXJhdG9yTG9jYWxz
OwogICAgICAgICAKICAgICAgICAgLy8gRGlkIHdlIHNlZSBhbnkgcmV0dXJucz8gV2UgbmVlZCB0
byBoYW5kbGUgdGhlICh1bmNvbW1vbiBidXQgbmVjZXNzYXJ5KQogICAgICAgICAvLyBjYXNlIHdo
ZXJlIGEgcHJvY2VkdXJlIHRoYXQgZG9lcyBub3QgcmV0dXJuIHdhcyBpbmxpbmVkLgpAQCAtMzM0
MSw2ICszMzUyLDExIEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQg
bGltaXQpCiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9uZXdfcmVnZXhwKTsKICAgICAgICAg
fQogCisgICAgICAgIGNhc2Ugb3BfbmV3X2dlbmVyYXRvcl9mcmFtZTogeworICAgICAgICAgICAg
c2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSwgYWRk
VG9HcmFwaChOZXdHZW5lcmF0b3JGcmFtZSwgT3BJbmZvKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51
LnVuc2lnbmVkVmFsdWUpKSk7CisgICAgICAgICAgICBORVhUX09QQ09ERShvcF9uZXdfZ2VuZXJh
dG9yX2ZyYW1lKTsKKyAgICAgICAgfQorCiAgICAgICAgIGNhc2Ugb3BfZ2V0X3Jlc3RfbGVuZ3Ro
OiB7CiAgICAgICAgICAgICBJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSA9IHRoaXMt
PmlubGluZUNhbGxGcmFtZSgpOwogICAgICAgICAgICAgTm9kZSogbGVuZ3RoOwpAQCAtMzM2OCw2
ICszMzg0LDQ4IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGlt
aXQpCiAgICAgICAgICAgICAgICAgYXJyYXksIGFycmF5TGVuZ3RoKTsKICAgICAgICAgICAgIE5F
WFRfT1BDT0RFKG9wX2NvcHlfcmVzdCk7CiAgICAgICAgIH0KKworICAgICAgICBjYXNlIG9wX3Nh
dmU6IHsKKyAgICAgICAgICAgIE5vZGUqIGZyYW1lID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJy
ZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSk7CisgICAgICAgICAgICB1bnNpZ25lZCBsaXZl
Q2FsbGVlTG9jYWxzSW5kZXggPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS51bnNpZ25lZFZhbHVl
OworICAgICAgICAgICAgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZW5lc3MgPSBtX2lubGluZVN0
YWNrVG9wLT5tX2NvZGVCbG9jay0+bGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQobGl2ZUNhbGxlZUxv
Y2Fsc0luZGV4KTsKKworICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9nZW5lcmF0b3JM
b2NhbHMgPSBPcGVyYW5kczxHZW5lcmF0b3JMb2NhbERhdGEqPihtX251bUFyZ3VtZW50cywgbV9u
dW1Mb2NhbHMpOworCisgICAgICAgICAgICBhZGRUb0dyYXBoKFJlc2l6ZUdlbmVyYXRvckxvY2Fs
cywgT3BJbmZvKGxpdmVuZXNzLmJpdENvdW50KCkpLCBmcmFtZSk7CisgICAgICAgICAgICB1bnNp
Z25lZCBnZW5lcmF0b3JMb2NhbEluZGV4ID0gMDsKKyAgICAgICAgICAgIGxpdmVuZXNzLmZvckVh
Y2hTZXRCaXQoWyZdKHNpemVfdCBpbmRleCkgeworICAgICAgICAgICAgICAgIFZpcnR1YWxSZWdp
c3RlciBvcGVyYW5kID0gdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaW5kZXgpOworICAgICAgICAg
ICAgICAgIFZpcnR1YWxSZWdpc3RlciByZW1hcHBlZE9wZXJhbmQgPSBtX2lubGluZVN0YWNrVG9w
LT5yZW1hcE9wZXJhbmQob3BlcmFuZCk7CisgICAgICAgICAgICAgICAgTm9kZSogbG9jYWwgPSBn
ZXQob3BlcmFuZCk7CisgICAgICAgICAgICAgICAgR2VuZXJhdG9yTG9jYWxEYXRhKiBnZW5lcmF0
b3JMb2NhbERhdGEgPSBuZXdHZW5lcmF0b3JMb2NhbERhdGEoKTsKKyAgICAgICAgICAgICAgICBt
X2lubGluZVN0YWNrVG9wLT5tX2dlbmVyYXRvckxvY2Fscy5sb2NhbChyZW1hcHBlZE9wZXJhbmQu
dG9Mb2NhbCgpKSA9IGdlbmVyYXRvckxvY2FsRGF0YTsKKyAgICAgICAgICAgICAgICBhZGRUb0dy
YXBoKFNldEdlbmVyYXRvckxvY2FsLCBPcEluZm8oZ2VuZXJhdG9yTG9jYWxJbmRleCsrKSwgT3BJ
bmZvKGdlbmVyYXRvckxvY2FsRGF0YSksIGZyYW1lLCBsb2NhbCk7CisgICAgICAgICAgICB9KTsK
KyAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX3NhdmUpOworICAgICAgICB9CisKKyAgICAgICAg
Y2FzZSBvcF9yZXN1bWVfZnJvbV9nZW5lcmF0b3JfZnJhbWU6IHsKKyAgICAgICAgICAgIE5vZGUq
IGZyYW1lID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVy
YW5kKSk7CisgICAgICAgICAgICB1bnNpZ25lZCBnZW5lcmF0b3JMb2NhbEluZGV4ID0gY3VycmVu
dEluc3RydWN0aW9uWzNdLnUudW5zaWduZWRWYWx1ZTsKKyAgICAgICAgICAgIFZpcnR1YWxSZWdp
c3RlciBvcGVyYW5kKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOworICAgICAgICAg
ICAgVmlydHVhbFJlZ2lzdGVyIHJlbWFwcGVkT3BlcmFuZCA9IG1faW5saW5lU3RhY2tUb3AtPnJl
bWFwT3BlcmFuZChvcGVyYW5kKTsKKyAgICAgICAgICAgIEdlbmVyYXRvckxvY2FsRGF0YSogZ2Vu
ZXJhdG9yTG9jYWxEYXRhID0gbV9pbmxpbmVTdGFja1RvcC0+bV9nZW5lcmF0b3JMb2NhbHMubG9j
YWwocmVtYXBwZWRPcGVyYW5kLnRvTG9jYWwoKSk7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VS
VChnZW5lcmF0b3JMb2NhbERhdGEpOworICAgICAgICAgICAgc2V0KG9wZXJhbmQsIGFkZFRvR3Jh
cGgoR2V0R2VuZXJhdG9yTG9jYWwsIE9wSW5mbyhnZW5lcmF0b3JMb2NhbEluZGV4KSwgT3BJbmZv
KGdlbmVyYXRvckxvY2FsRGF0YSksIGZyYW1lKSk7CisgICAgICAgICAgICBORVhUX09QQ09ERShv
cF9yZXN1bWVfZnJvbV9nZW5lcmF0b3JfZnJhbWUpOworICAgICAgICB9CisKKyAgICAgICAgY2Fz
ZSBvcF9jbGVhcl9nZW5lcmF0b3JfZnJhbWU6IHsKKyAgICAgICAgICAgIE5vZGUqIGZyYW1lID0g
Z2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSk7Cisg
ICAgICAgICAgICBhZGRUb0dyYXBoKFJlc2l6ZUdlbmVyYXRvckxvY2FscywgT3BJbmZvKDApLCBm
cmFtZSk7CisgICAgICAgICAgICBORVhUX09QQ09ERShvcF9jbGVhcl9nZW5lcmF0b3JfZnJhbWUp
OworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBvcF9ub3A6IHsKKyAgICAgICAgICAgIE5FWFRf
T1BDT0RFKG9wX25vcCk7CisgICAgICAgIH0KKwogICAgICAgICAgICAgCiAgICAgICAgIC8vID09
PSBCaXR3aXNlIG9wZXJhdGlvbnMgPT09CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQ2FwYWJpbGl0aWVzLmNwcAppbmRleCBkMTAwZDk3ZDVjNjBlMjVhMDYwZmZkYTQ1NjYzYjNi
OTQxNDM1ZGM2Li5hNTgyZjg3MjA3NmNmZjg5NDI4M2ViYTMxYTQ5OTc3NjMwZGM3ODkwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCkBAIC0xODEs
NiArMTgxLDcgQEAgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbChPcGNvZGVJRCBvcGNv
ZGVJRCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEluc3RydWMKICAgICBjYXNlIG9wX25ld19hcnJh
eToKICAgICBjYXNlIG9wX25ld19hcnJheV93aXRoX3NpemU6CiAgICAgY2FzZSBvcF9uZXdfYXJy
YXlfYnVmZmVyOgorICAgIGNhc2Ugb3BfbmV3X2dlbmVyYXRvcl9mcmFtZToKICAgICBjYXNlIG9w
X3N0cmNhdDoKICAgICBjYXNlIG9wX3RvX3ByaW1pdGl2ZToKICAgICBjYXNlIG9wX3Rocm93OgpA
QCAtMjI0LDYgKzIyNSwxMCBAQCBDYXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVsKE9wY29k
ZUlEIG9wY29kZUlELCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSW5zdHJ1YwogICAgIGNhc2Ugb3Bf
Y2F0Y2g6CiAgICAgY2FzZSBvcF9jb3B5X3Jlc3Q6CiAgICAgY2FzZSBvcF9nZXRfcmVzdF9sZW5n
dGg6CisgICAgY2FzZSBvcF9zYXZlOgorICAgIGNhc2Ugb3BfcmVzdW1lX2Zyb21fZ2VuZXJhdG9y
X2ZyYW1lOgorICAgIGNhc2Ugb3BfY2xlYXJfZ2VuZXJhdG9yX2ZyYW1lOgorICAgIGNhc2Ugb3Bf
bm9wOgogICAgICAgICByZXR1cm4gQ2FuQ29tcGlsZUFuZElubGluZTsKIAogICAgIGNhc2Ugb3Bf
cHV0X3RvX3Njb3BlOiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Nsb2JiZXJpemUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5o
CmluZGV4IDM0M2E2ZGU5YzI5MDliOTNlMDUyOGNmMDI3ODRhYWQ5NGQwMWI0ZDEuLjU5ZWM4MmJj
MjBkM2YxNjhlMmY0YjVjYjBiZTZmNTVhMmJmOGRjY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ2xvYmJlcml6ZS5oCkBAIC0xMDQ0LDYgKzEwNDQsNyBAQCB2b2lkIGNsb2JiZXJp
emUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29u
c3QgV3JpdGVGdQogCiAgICAgY2FzZSBOZXdPYmplY3Q6CiAgICAgY2FzZSBOZXdSZWdleHA6Cisg
ICAgY2FzZSBOZXdHZW5lcmF0b3JGcmFtZToKICAgICBjYXNlIE5ld1N0cmluZ09iamVjdDoKICAg
ICBjYXNlIFBoYW50b21OZXdPYmplY3Q6CiAgICAgY2FzZSBNYXRlcmlhbGl6ZU5ld09iamVjdDoK
QEAgLTExMTEsNiArMTExMiwyMyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2Rl
KiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgICAgICAg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQorCisgICAgY2FzZSBTZXRHZW5lcmF0b3JMb2NhbDogeworICAgICAgICByZWFkKEdl
bmVyYXRvckxvY2FsQ291bnQpOworICAgICAgICB3cml0ZShHZW5lcmF0b3JMb2NhbHMpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgY2FzZSBHZXRHZW5lcmF0b3JMb2NhbDogeworICAg
ICAgICByZWFkKEdlbmVyYXRvckxvY2FsQ291bnQpOworICAgICAgICByZWFkKEdlbmVyYXRvckxv
Y2Fscyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBjYXNlIFJlc2l6ZUdlbmVyYXRv
ckxvY2FsczogeworICAgICAgICB3cml0ZShHZW5lcmF0b3JMb2NhbENvdW50KTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBUaHJvd1JlZmVyZW5jZUVycm9yOgog
ICAgICAgICB3cml0ZShTaWRlU3RhdGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDbG9iYmVyc0V4aXRTdGF0ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcAppbmRleCA0ZTBjNTA3Nzg5Y2Q3YjNmZjQ3NzUx
ZjkyNWU3NDgzZTYxZTJkZjViLi45Mjg1NTEyNjI3ODUxZDNmODNmMzdmMDJhYmYwYTNiNWVmNmJm
NWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJzRXhp
dFN0YXRlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJzRXhp
dFN0YXRlLmNwcApAQCAtNTMsMTAgKzUzLDE2IEBAIGJvb2wgY2xvYmJlcnNFeGl0U3RhdGUoR3Jh
cGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgICAgICAvLyBleGl0IHN0YXRlLgogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKKyAgICBjYXNlIFJlc2l6ZUdlbmVyYXRvckxvY2FsczoKKyAgICBjYXNl
IFNldEdlbmVyYXRvckxvY2FsOgorICAgIGNhc2UgR2V0R2VuZXJhdG9yTG9jYWw6CisgICAgICAg
IHJldHVybiBmYWxzZTsKKwogICAgIGNhc2UgQXJyYXlpZnlUb1N0cnVjdHVyZToKICAgICBjYXNl
IEFycmF5aWZ5OgogICAgIGNhc2UgTmV3T2JqZWN0OgogICAgIGNhc2UgTmV3UmVnZXhwOgorICAg
IGNhc2UgTmV3R2VuZXJhdG9yRnJhbWU6CiAgICAgY2FzZSBOZXdTdHJpbmdPYmplY3Q6CiAgICAg
Y2FzZSBQaGFudG9tTmV3T2JqZWN0OgogICAgIGNhc2UgTWF0ZXJpYWxpemVOZXdPYmplY3Q6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKaW5kZXggNzAyZGE1YmYxZTdjMGYx
YzhmZTU1YzY0ODQ0NThmY2FkODFlMmFhNS4uY2ViNzg2MWM3YjI3YjVlOTc5NzcyYjZiM2I4NzA3
YjNlZTg5MmIxMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2Vz
R0MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcApAQCAt
MjI5LDYgKzIyOSw5IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAg
ICBjYXNlIEdldEZyb21Bcmd1bWVudHM6CiAgICAgY2FzZSBQdXRUb0FyZ3VtZW50czoKICAgICBj
YXNlIENvcHlSZXN0OgorICAgIGNhc2UgU2V0R2VuZXJhdG9yTG9jYWw6CisgICAgY2FzZSBHZXRH
ZW5lcmF0b3JMb2NhbDoKKyAgICBjYXNlIFJlc2l6ZUdlbmVyYXRvckxvY2FsczoKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCiAgICAgY2FzZSBDcmVhdGVBY3RpdmF0aW9uOgpAQCAtMjQ2LDYgKzI0
OSw3IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIE5l
d0FycmF5V2l0aFNpemU6CiAgICAgY2FzZSBOZXdBcnJheUJ1ZmZlcjoKICAgICBjYXNlIE5ld1Jl
Z2V4cDoKKyAgICBjYXNlIE5ld0dlbmVyYXRvckZyYW1lOgogICAgIGNhc2UgTmV3U3RyaW5nT2Jq
ZWN0OgogICAgIGNhc2UgTWFrZVJvcGU6CiAgICAgY2FzZSBOZXdBcnJvd0Z1bmN0aW9uOgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKaW5kZXggYzlkNWFiZmI0
OTQ4MWI5MDU4OWVjNGZiYTU5NWEyY2U4ZTcwZGY2Ny4uMDE1ZGY1MWRjMzdiZmJmNDZiYWE5MWVj
OWE4YzhiMDE3ZTVkOTFhNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdGaXh1cFBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVw
UGhhc2UuY3BwCkBAIC0xNDMwLDYgKzE0MzAsMjQgQEAgY2xhc3MgRml4dXBQaGFzZSA6IHB1Ymxp
YyBQaGFzZSB7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCisgICAgICAgIGNhc2Ug
U2V0R2VuZXJhdG9yTG9jYWw6IHsKKyAgICAgICAgICAgIGZpeEVkZ2U8Q2VsbFVzZT4obm9kZS0+
Y2hpbGQxKCkpOworICAgICAgICAgICAgc3BlY3VsYXRlRm9yQmFycmllcihub2RlLT5jaGlsZDIo
KSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2UgR2V0R2Vu
ZXJhdG9yTG9jYWw6IHsKKyAgICAgICAgICAgIGZpeEVkZ2U8Q2VsbFVzZT4obm9kZS0+Y2hpbGQx
KCkpOworICAgICAgICAgICAgLy8gQ3VycmVudGx5LCB3ZSBhbHdheXMgc3RvcmUgdGhlIHZhbHVl
IGFzIEpTVmFsdWUgaW4gdGhlIEdlbmVyYXRvckZyYW1lLgorICAgICAgICAgICAgbm9kZS0+c2V0
UmVzdWx0KE5vZGVSZXN1bHRKUyk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisg
ICAgICAgIGNhc2UgUmVzaXplR2VuZXJhdG9yTG9jYWxzOiB7CisgICAgICAgICAgICBmaXhFZGdl
PENlbGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9
CisKICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgICAgIC8vIEhhdmUgdGhlc2Ugbm8tb3AgY2Fz
ZXMgaGVyZSB0byBlbnN1cmUgdGhhdCBub2JvZHkgZm9yZ2V0cyB0byBhZGQgaGFuZGxlcnMgZm9y
IG5ldyBvcGNvZGVzLgogICAgICAgICBjYXNlIFNldEFyZ3VtZW50OgpAQCAtMTQ2Miw2ICsxNDgw
LDcgQEAgY2xhc3MgRml4dXBQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgIGNhc2UgTmV3
T2JqZWN0OgogICAgICAgICBjYXNlIE5ld0FycmF5QnVmZmVyOgogICAgICAgICBjYXNlIE5ld1Jl
Z2V4cDoKKyAgICAgICAgY2FzZSBOZXdHZW5lcmF0b3JGcmFtZToKICAgICAgICAgY2FzZSBCcmVh
a3BvaW50OgogICAgICAgICBjYXNlIFByb2ZpbGVXaWxsQ2FsbDoKICAgICAgICAgY2FzZSBQcm9m
aWxlRGlkQ2FsbDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR2Vu
ZXJhdG9yTG9jYWxEYXRhLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dlbmVyYXRv
ckxvY2FsRGF0YS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFkZjdlYjcwOTAwZWQzMjJhOTE2NTg5ZjI3MjI4Y2Jk
NzkzNDQ1YzEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0dlbmVyYXRvckxvY2FsRGF0YS5oCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTYgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBERkdHZW5lcmF0b3JM
b2NhbERhdGFfaAorI2RlZmluZSBERkdHZW5lcmF0b3JMb2NhbERhdGFfaAorCisjaWYgRU5BQkxF
KERGR19KSVQpCisKKyNpbmNsdWRlICJERkdDb21tb24uaCIKKyNpbmNsdWRlICJERkdOb2RlRmxh
Z3MuaCIKKyNpbmNsdWRlICJERkdWYXJpYWJsZUFjY2Vzc0RhdGEuaCIKKyNpbmNsdWRlICJTcGVj
dWxhdGVkVHlwZS5oIgorI2luY2x1ZGUgIlZpcnR1YWxSZWdpc3Rlci5oIgorCituYW1lc3BhY2Ug
SlNDIHsgbmFtZXNwYWNlIERGRyB7CisKK3N0cnVjdCBOb2RlOworCitjbGFzcyBHZW5lcmF0b3JM
b2NhbERhdGEgeworcHVibGljOgorICAgIGJvb2wgcHJlZGljdChTcGVjdWxhdGVkVHlwZSBwcmVk
aWN0aW9uKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1lcmdlU3BlY3VsYXRpb24obV9wcmVkaWN0
aW9uLCBwcmVkaWN0aW9uKTsKKyAgICB9CisKKyAgICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9u
KCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX3ByZWRpY3Rpb247CisgICAgfQorCitwcml2YXRl
OgorICAgIFNwZWN1bGF0ZWRUeXBlIG1fcHJlZGljdGlvbiB7IFNwZWNOb25lIH07Cit9OworCit9
IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCisKKyNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKKwor
I2VuZGlmIC8vIERGR1ZhcmlhYmxlQWNjZXNzRGF0YV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0dyYXBoLmgKaW5kZXggMDlhYWU5NTVmNjZhYTc4OTRhMTQ4NWUxMzkzN2YzYmE1Mzg4OWQxYy4u
NDNmZGJiMWE3MTMwMzQ2YzliZGFmNDlkNGU0MTZiNzI0MTNmMDYxZCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHR3JhcGguaApAQCAtNjAsNiArNjAsNyBAQAogY2xhc3MgRG9taW5hdG9yczsK
IGNsYXNzIE5hdHVyYWxMb29wczsKIGNsYXNzIFByZVBvc3ROdW1iZXJpbmc7CitjbGFzcyBHZW5l
cmF0b3JMb2NhbERhdGE7CiAKICNkZWZpbmUgREZHX05PREVfRE9fVE9fQ0hJTERSRU4oZ3JhcGgs
IG5vZGUsIHRoaW5nVG9EbykgZG8geyAgICAgICAgICAgIFwKICAgICAgICAgTm9kZSogX25vZGUg
PSAobm9kZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKQEAg
LTg4Nyw2ICs4ODgsNyBAQCBjbGFzcyBHcmFwaCA6IHB1YmxpYyB2aXJ0dWFsIFNjYW5uYWJsZSB7
CiAgICAgQmFnPENhbGxWYXJhcmdzRGF0YT4gbV9jYWxsVmFyYXJnc0RhdGE7CiAgICAgQmFnPExv
YWRWYXJhcmdzRGF0YT4gbV9sb2FkVmFyYXJnc0RhdGE7CiAgICAgQmFnPFN0YWNrQWNjZXNzRGF0
YT4gbV9zdGFja0FjY2Vzc0RhdGE7CisgICAgQmFnPEdlbmVyYXRvckxvY2FsRGF0YT4gbV9nZW5l
cmF0b3JMb2NhbERhdGE7CiAgICAgVmVjdG9yPElubGluZVZhcmlhYmxlRGF0YSwgND4gbV9pbmxp
bmVWYXJpYWJsZURhdGE7CiAgICAgSGFzaE1hcDxDb2RlQmxvY2sqLCBzdGQ6OnVuaXF1ZV9wdHI8
RnVsbEJ5dGVjb2RlTGl2ZW5lc3M+PiBtX2J5dGVjb2RlTGl2ZW5lc3M7CiAgICAgSGFzaE1hcDxD
b2RlQmxvY2sqLCBzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVLaWxscz4+IG1fYnl0ZWNvZGVLaWxs
czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3BwCmluZGV4IGRhYTI5MzM5
ZGJmYmRmODBhYWQ5YjY0NmEyY2I3YTA1ODdkOTYyMzguLmJjNmQxNWM4NGRmYTQ0ZjczNGZkYzQ3
NGRkZTdhNmJiMjY1NmU2ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTWF5RXhpdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0
LmNwcApAQCAtMTMwLDYgKzEzMCw5IEBAIEV4aXRNb2RlIG1heUV4aXQoR3JhcGgmIGdyYXBoLCBO
b2RlKiBub2RlKQogICAgIGNhc2UgU3RvcmVCYXJyaWVyOgogICAgIGNhc2UgUHV0QnlPZmZzZXQ6
CiAgICAgY2FzZSBQdXRDbG9zdXJlVmFyOgorICAgIGNhc2UgUmVzaXplR2VuZXJhdG9yTG9jYWxz
OgorICAgIGNhc2UgU2V0R2VuZXJhdG9yTG9jYWw6CisgICAgY2FzZSBHZXRHZW5lcmF0b3JMb2Nh
bDoKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIFN0ckNhdDoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdOb2RlLmgKaW5kZXggMTI4NzBkOTNkMGM0ODJlNGY4ZTVkNGQyZGFmMWU2YmYxZjcxYjYy
Yy4uM2VjNzdlMWExNGRjZTI1MzViYTEwZGYyM2YwOWE5ZTgxZjk3OGIwMyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdOb2RlLmgKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJERkdBcnJh
eU1vZGUuaCIKICNpbmNsdWRlICJERkdDb21tb24uaCIKICNpbmNsdWRlICJERkdFcG9jaC5oIgor
I2luY2x1ZGUgIkRGR0dlbmVyYXRvckxvY2FsRGF0YS5oIgogI2luY2x1ZGUgIkRGR0xhenlKU1Zh
bHVlLmgiCiAjaW5jbHVkZSAiREZHTXVsdGlHZXRCeU9mZnNldERhdGEuaCIKICNpbmNsdWRlICJE
RkdOb2RlRmxhZ3MuaCIKQEAgLTg3OCw2ICs4NzksNzIgQEAgc3RydWN0IE5vZGUgewogICAgICAg
ICByZXR1cm4gbV9vcEluZm87CiAgICAgfQogCisgICAgYm9vbCBoYXNHZW5lcmF0b3JMb2NhbHNT
aXplKCkKKyAgICB7CisgICAgICAgIHN3aXRjaCAob3AoKSkgeworICAgICAgICBjYXNlIE5ld0dl
bmVyYXRvckZyYW1lOgorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB1bnNp
Z25lZCBnZW5lcmF0b3JMb2NhbHNTaXplKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChoYXNHZW5l
cmF0b3JMb2NhbHNTaXplKCkpOworICAgICAgICByZXR1cm4gbV9vcEluZm87CisgICAgfQorCisg
ICAgYm9vbCBoYXNHZW5lcmF0b3JMb2NhbEluZGV4KCkKKyAgICB7CisgICAgICAgIHN3aXRjaCAo
b3AoKSkgeworICAgICAgICBjYXNlIFNldEdlbmVyYXRvckxvY2FsOgorICAgICAgICBjYXNlIEdl
dEdlbmVyYXRvckxvY2FsOgorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGRlZmF1
bHQ6CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB1
bnNpZ25lZCBnZW5lcmF0b3JMb2NhbEluZGV4KCkKKyAgICB7CisgICAgICAgIEFTU0VSVChoYXNH
ZW5lcmF0b3JMb2NhbEluZGV4KCkpOworICAgICAgICByZXR1cm4gbV9vcEluZm87CisgICAgfQor
CisgICAgYm9vbCBoYXNHZW5lcmF0b3JMb2NhbERhdGEoKQorICAgIHsKKyAgICAgICAgc3dpdGNo
IChvcCgpKSB7CisgICAgICAgIGNhc2UgU2V0R2VuZXJhdG9yTG9jYWw6CisgICAgICAgIGNhc2Ug
R2V0R2VuZXJhdG9yTG9jYWw6CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAg
IEdlbmVyYXRvckxvY2FsRGF0YSogZ2VuZXJhdG9yTG9jYWxEYXRhKCkKKyAgICB7CisgICAgICAg
IEFTU0VSVChoYXNHZW5lcmF0b3JMb2NhbERhdGEoKSk7CisgICAgICAgIHJldHVybiByZWludGVy
cHJldF9jYXN0PEdlbmVyYXRvckxvY2FsRGF0YSo+KG1fb3BJbmZvMik7CisgICAgfQorCisgICAg
Ym9vbCBoYXNHZW5lcmF0b3JGcmFtZUxvY2FscygpCisgICAgeworICAgICAgICBzd2l0Y2ggKG9w
KCkpIHsKKyAgICAgICAgY2FzZSBSZXNpemVHZW5lcmF0b3JMb2NhbHM6CisgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgfQorICAgIH0KKworICAgIHVuc2lnbmVkIGdlbmVyYXRvckZyYW1lTG9jYWxzKCkK
KyAgICB7CisgICAgICAgIEFTU0VSVChoYXNHZW5lcmF0b3JGcmFtZUxvY2FscygpKTsKKyAgICAg
ICAgcmV0dXJuIG1fb3BJbmZvOworICAgIH0KKwogICAgIGJvb2wgaGFzQWNjZXNzb3JBdHRyaWJ1
dGVzKCkKICAgICB7CiAgICAgICAgIHN3aXRjaCAob3AoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdOb2RlVHlwZS5oCmluZGV4IGRkZDBiOTdjYjJmZTY5MjYwNDUxMDNmOGE3MTA3MDA0
ODJlOWY2YmQuLjI5OGM4ZjhjN2NiYzlkZmM1ZjUwMjJmNTQxNjZmNmU5NDgzNzIzZGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKQEAgLTc5LDYgKzc5LDEwIEBACiAg
ICAgbWFjcm8oRmx1c2gsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhQaGFudG9tTG9j
YWwsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBcCisgICAgbWFjcm8oU2V0R2VuZXJhdG9yTG9j
YWwsIE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBtYWNybyhHZXRHZW5lcmF0b3JMb2NhbCwgTm9k
ZVJlc3VsdEpTKSBcCisgICAgbWFjcm8oUmVzaXplR2VuZXJhdG9yTG9jYWxzLCBOb2RlTXVzdEdl
bmVyYXRlKSBcCisgICAgXAogICAgIC8qIEhpbnQgdGhhdCB0aGlzIGlzIHdoZXJlIGJ5dGVjb2Rl
IHRoaW5rcyBpcyBhIGdvb2QgcGxhY2UgdG8gT1NSLiBOb3RlIHRoYXQgdGhpcyAqL1wKICAgICAv
KiB3aWxsIGV4aXN0IGV2ZW4gaW4gaW5saW5lZCBsb29wcy4gVGhpcyBoYXMgbm8gZXhlY3V0aW9u
IHNlbWFudGljcyBidXQgaXQgbXVzdCAqL1wKICAgICAvKiBzdXJ2aXZlIGFsbCBEQ0UuIFdlIHRy
ZWF0IHRoaXMgYXMgYmVpbmcgYSBjYW4tZXhpdCBiZWNhdXNlIHRpZXItdXAgdG8gRlRMIG1heSAq
L1wKQEAgLTI2Myw2ICsyNjcsNyBAQAogICAgIG1hY3JvKE5ld0FycmF5QnVmZmVyLCBOb2RlUmVz
dWx0SlMpIFwKICAgICBtYWNybyhOZXdUeXBlZEFycmF5LCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVz
dEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oTmV3UmVnZXhwLCBOb2RlUmVzdWx0SlMpIFwKKyAgICBt
YWNybyhOZXdHZW5lcmF0b3JGcmFtZSwgTm9kZVJlc3VsdEpTKSBcCiAgICAgLyogUmVzdCBQYXJh
bWV0ZXIgKi9cCiAgICAgbWFjcm8oR2V0UmVzdExlbmd0aCwgTm9kZVJlc3VsdEludDMyKSBcCiAg
ICAgbWFjcm8oQ29weVJlc3QsIE5vZGVNdXN0R2VuZXJhdGUpIFwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCmluZGV4IDJmZDVkYmRjN2ZjNGNjYTg2ZmFlMTA5
MjI3YWMxNzU3ZmRjZGY5NmMuLmJjMzU2NjEzZDNmNTIxODA4MjM4ZTUyNjgxMzVhYWIwOWJlNjdm
MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcApAQCAt
NDEsOCArNDEsOSBAQAogI2luY2x1ZGUgIkRpcmVjdEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIkZU
TEZvck9TUkVudHJ5SklUQ29kZS5oIgogI2luY2x1ZGUgIkZUTE9TUkVudHJ5LmgiCi0jaW5jbHVk
ZSAiSG9zdENhbGxSZXR1cm5WYWx1ZS5oIgorI2luY2x1ZGUgIkdlbmVyYXRvckZyYW1lLmgiCiAj
aW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCisjaW5jbHVkZSAiSG9zdENhbGxSZXR1cm5WYWx1ZS5o
IgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAi
SklURXhjZXB0aW9ucy5oIgpAQCAtODE3LDYgKzgxOCwxMSBAQCBjaGFyKiBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbk5ld0Zsb2F0NjRBcnJheVdpdGhPbmVBcmd1bWVudCgKICAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFy
Z3VtZW50czxKU0Zsb2F0NjRBcnJheT4oZXhlYywgc3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAs
IE51bGxvcHQpKTsKIH0KIAorY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdHZW5lcmF0
b3JGcmFtZShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnQzMl90IG51
bWJlck9mQ2FsbGVlTG9jYWxzKQoreworICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8Y2hhcio+KEdl
bmVyYXRvckZyYW1lOjpjcmVhdGUoZXhlYy0+dm0oKSwgc3RydWN0dXJlLCBudW1iZXJPZkNhbGxl
ZUxvY2FscykpOworfQorCiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRlQWN0
aXZhdGlvbkRpcmVjdChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU1Nj
b3BlKiBzY29wZSwgU3ltYm9sVGFibGUqIHRhYmxlLCBFbmNvZGVkSlNWYWx1ZSBpbml0aWFsVmFs
dWVFbmNvZGVkKQogewogICAgIEpTVmFsdWUgaW5pdGlhbFZhbHVlID0gSlNWYWx1ZTo6ZGVjb2Rl
KGluaXRpYWxWYWx1ZUVuY29kZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJh
dGlvbnMuaAppbmRleCA0MDk2MjlmZjVkNTNhN2JlMzg3YTYyMzY0NTVkNjgxNmFjMDg1ZWM5Li5l
NDQzYmEyODIzNzJmYmNjZTJiYWM1YjA5YTM2N2JkNTJjOGU3NWYzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaApAQCAtODIsNiArODIsNyBAQAogY2hhciogSklU
X09QRVJBVElPTiBvcGVyYXRpb25OZXdGbG9hdDMyQXJyYXlXaXRoT25lQXJndW1lbnQoRXhlY1N0
YXRlKiwgU3RydWN0dXJlKiwgRW5jb2RlZEpTVmFsdWUpIFdURl9JTlRFUk5BTDsKIGNoYXIqIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3RmxvYXQ2NEFycmF5V2l0aFNpemUoRXhlY1N0YXRlKiwg
U3RydWN0dXJlKiwgaW50MzJfdCkgV1RGX0lOVEVSTkFMOwogY2hhciogSklUX09QRVJBVElPTiBv
cGVyYXRpb25OZXdGbG9hdDY0QXJyYXlXaXRoT25lQXJndW1lbnQoRXhlY1N0YXRlKiwgU3RydWN0
dXJlKiwgRW5jb2RlZEpTVmFsdWUpIFdURl9JTlRFUk5BTDsKK2NoYXIqIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uTmV3R2VuZXJhdG9yRnJhbWUoRXhlY1N0YXRlKiwgU3RydWN0dXJlKiwgaW50MzJf
dCkgV1RGX0lOVEVSTkFMOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsU3Ry
aWN0KEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkUHJvcGVydHksIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkgV1RGX0lOVEVS
TkFMOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsTm9uU3RyaWN0KEV4ZWNT
dGF0ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
UHJvcGVydHksIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkgV1RGX0lOVEVSTkFMOwogdm9p
ZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsQ2VsbFN0cmljdChFeGVjU3RhdGUqLCBK
U0NlbGwqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkUHJvcGVydHksIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSkgV1RGX0lOVEVSTkFMOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAppbmRleCA1Nzk5
OGNmZTE4MWE4ZmNmOWNjNjUxNDM1MWFjNTgwYjgwZTdmYjhhLi4yZDNhYmJkMmU3NjBiZTY0NWE3
MGNhMTVmODljZjU5MDhkOTIyZmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcApAQCAtMTYwLDYg
KzE2MCwyNCBAQCBjbGFzcyBQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZSA6IHB1YmxpYyBQaGFz
ZSB7CiAgICAgICAgICAgICBjaGFuZ2VkIHw9IHZhcmlhYmxlQWNjZXNzRGF0YS0+cHJlZGljdChu
b2RlLT5jaGlsZDEoKS0+cHJlZGljdGlvbigpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CisKKyAgICAgICAgY2FzZSBTZXRHZW5lcmF0b3JMb2NhbDogeworICAgICAgICAgICAgR2Vu
ZXJhdG9yTG9jYWxEYXRhKiBnZW5lcmF0b3JMb2NhbERhdGEgPSBub2RlLT5nZW5lcmF0b3JMb2Nh
bERhdGEoKTsKKyAgICAgICAgICAgIGNoYW5nZWQgfD0gZ2VuZXJhdG9yTG9jYWxEYXRhLT5wcmVk
aWN0KG5vZGUtPmNoaWxkMigpLT5wcmVkaWN0aW9uKCkpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KKworICAgICAgICBjYXNlIEdldEdlbmVyYXRvckxvY2FsOiB7CisgICAgICAgICAg
ICBHZW5lcmF0b3JMb2NhbERhdGEqIGdlbmVyYXRvckxvY2FsRGF0YSA9IG5vZGUtPmdlbmVyYXRv
ckxvY2FsRGF0YSgpOworICAgICAgICAgICAgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiA9IGdl
bmVyYXRvckxvY2FsRGF0YS0+cHJlZGljdGlvbigpOworICAgICAgICAgICAgLy8gV2UgYWx3YXlz
IHN0b3JlIHRoZSB2YWx1ZSBpbiBHZW5lcmF0b3JMb2NhbCBhcyBGb3JtYXRKU1ZhbHVlLgorICAg
ICAgICAgICAgLy8gU28gZG91YmxlIHZhbHVlIGlzIGJldHRlciB0aGFuIEludDUyIHZhbHVlLgor
ICAgICAgICAgICAgaWYgKHByZWRpY3Rpb24gJiBTcGVjSW50NTIpCisgICAgICAgICAgICAgICAg
cHJlZGljdGlvbiA9IChwcmVkaWN0aW9uIHwgU3BlY0ludDUyQXNEb3VibGUpICYgflNwZWNJbnQ1
MjsKKyAgICAgICAgICAgIGlmIChwcmVkaWN0aW9uKQorICAgICAgICAgICAgICAgIGNoYW5nZWQg
fD0gbWVyZ2VQcmVkaWN0aW9uKHByZWRpY3Rpb24pOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0KICAgICAgICAgICAgIAogICAgICAgICBjYXNlIEJpdEFuZDoKICAgICAgICAgY2FzZSBC
aXRPcjoKQEAgLTUyNCw3ICs1NDIsOCBAQCBjbGFzcyBQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFz
ZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICBjYXNl
IE5ld1JlZ2V4cDoKLSAgICAgICAgY2FzZSBDcmVhdGVBY3RpdmF0aW9uOiB7CisgICAgICAgIGNh
c2UgQ3JlYXRlQWN0aXZhdGlvbjoKKyAgICAgICAgY2FzZSBOZXdHZW5lcmF0b3JGcmFtZTogewog
ICAgICAgICAgICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9uKFNwZWNPYmplY3RPdGhlcik7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtNzE2LDYgKzczNSw3IEBAIGNsYXNzIFBy
ZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgY2FzZSBF
eGl0T0s6CiAgICAgICAgIGNhc2UgTG9hZFZhcmFyZ3M6CiAgICAgICAgIGNhc2UgQ29weVJlc3Q6
CisgICAgICAgIGNhc2UgUmVzaXplR2VuZXJhdG9yTG9jYWxzOgogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICAKICAgICAgICAgLy8gVGhpcyBnZXRzIGlnbm9yZWQgYmVjYXVzZSBpdCBv
bmx5IHByZXRlbmRzIHRvIHByb2R1Y2UgYSB2YWx1ZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKaW5kZXggMjMwZWZlZGM0ODMxNTEyYmFjNTY4YmVlZmRi
Mjc2OTYxODcyMDk0Yy4uODdjM2UwMjY4YzU4MTEyOGNkYmJmMWZiNTViMzY2OTJmYzQxNmRlNCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKQEAgLTIz
Nyw2ICsyMzcsNyBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0YXRl
LCBHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBOZXdBcnJheVdpdGhTaXplOgog
ICAgIGNhc2UgTmV3QXJyYXlCdWZmZXI6CiAgICAgY2FzZSBOZXdSZWdleHA6CisgICAgY2FzZSBO
ZXdHZW5lcmF0b3JGcmFtZToKICAgICBjYXNlIEJyZWFrcG9pbnQ6CiAgICAgY2FzZSBQcm9maWxl
V2lsbENhbGw6CiAgICAgY2FzZSBQcm9maWxlRGlkQ2FsbDoKQEAgLTMyOCw2ICszMjksOSBAQCBi
b29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgs
IE5vZGUqIG5vZGUpCiAgICAgY2FzZSBHZXRNeUFyZ3VtZW50QnlWYWw6CiAgICAgY2FzZSBGb3J3
YXJkVmFyYXJnczoKICAgICBjYXNlIENvcHlSZXN0OgorICAgIGNhc2UgU2V0R2VuZXJhdG9yTG9j
YWw6CisgICAgY2FzZSBHZXRHZW5lcmF0b3JMb2NhbDoKKyAgICBjYXNlIFJlc2l6ZUdlbmVyYXRv
ckxvY2FsczoKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBjYXNlIEJvdHRvbVZhbHVlOgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAppbmRl
eCBjY2NlNzkxOTk1MTQ1ZTkxZWZkMjAwODhjOTZiN2FmODJiNTYxNmQ2Li41Zjk2OWZjODA5YTE2
ODY2ZjBkYWQ4MjZkNmEyZDNmMmJlNDVhYmQzIDEwMDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUg
IkRGR1NhbmVTdHJpbmdHZXRCeVZhbFNsb3dQYXRoR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiREZH
U2xvd1BhdGhHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJEaXJlY3RBcmd1bWVudHMuaCIKKyNpbmNs
dWRlICJHZW5lcmF0b3JGcmFtZS5oIgogI2luY2x1ZGUgIkpJVEFkZEdlbmVyYXRvci5oIgogI2lu
Y2x1ZGUgIkpJVEJpdEFuZEdlbmVyYXRvci5oIgogI2luY2x1ZGUgIkpJVEJpdE9yR2VuZXJhdG9y
LmgiCkBAIC02Mzc4LDYgKzYzNzksNDIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5l
d1N0cmluZ09iamVjdChOb2RlKiBub2RlKQogICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2Rl
KTsKIH0KIAordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld0dlbmVyYXRvckZyYW1lKE5v
ZGUqIG5vZGUpCit7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1faml0Lmdy
YXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUgPSBnbG9iYWxPYmplY3QtPmdlbmVyYXRvckZyYW1lU3RydWN0dXJlKCk7
CisgICAgdW5zaWduZWQgZ2VuZXJhdG9yTG9jYWxzU2l6ZSA9IG5vZGUtPmdlbmVyYXRvckxvY2Fs
c1NpemUoKTsKKworICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CisgICAgR1BSVGVtcG9y
YXJ5IHNjcmF0Y2gxKHRoaXMpOworICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoMih0aGlzKTsKKwor
ICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CisgICAgR1BSUmVnIHNjcmF0Y2gx
R1BSID0gc2NyYXRjaDEuZ3ByKCk7CisgICAgR1BSUmVnIHNjcmF0Y2gyR1BSID0gc2NyYXRjaDIu
Z3ByKCk7CisKKyAgICBKSVRDb21waWxlcjo6SnVtcExpc3Qgc2xvd1BhdGg7CisKKyAgICBlbWl0
QWxsb2NhdGVKU09iamVjdFdpdGhLbm93blNpemU8R2VuZXJhdG9yRnJhbWU+KHJlc3VsdEdQUiwg
VHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpLCBUcnVzdGVkSW1tUHRyKG51bGxwdHIpLCBzY3JhdGNo
MUdQUiwgc2NyYXRjaDJHUFIsIHNsb3dQYXRoLCBHZW5lcmF0b3JGcmFtZTo6YWxsb2NhdGlvblNp
emVGb3JMb2NhbHMoZ2VuZXJhdG9yTG9jYWxzU2l6ZSkpOworICAgIG1faml0LnN0b3JlMzIoVHJ1
c3RlZEltbTMyKGdlbmVyYXRvckxvY2Fsc1NpemUpLCBKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1
bHRHUFIsIEdlbmVyYXRvckZyYW1lOjpudW1iZXJPZkNhbGxlZUxvY2Fsc09mZnNldCgpKSk7Cisg
ICAgbV9qaXQuc3RvcmUzMihUcnVzdGVkSW1tMzIoMCksIEpJVENvbXBpbGVyOjpBZGRyZXNzKHJl
c3VsdEdQUiwgR2VuZXJhdG9yRnJhbWU6Om51bWJlck9mU2F2ZWRDYWxsZWVMb2NhbHNPZmZzZXQo
KSkpOworICAgIEpTVmFsdWUgZW1wdHlWYWx1ZTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgZ2VuZXJhdG9yTG9jYWxzU2l6ZTsgKytpKQorICAgICAgICBtX2ppdC5zdG9yZVRydXN0ZWRW
YWx1ZShlbXB0eVZhbHVlLCBKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIEdlbmVyYXRv
ckZyYW1lOjpsb2NhbE9mZnNldChpKSkpOworCisgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xv
d1BhdGhDYWxsKHNsb3dQYXRoLCB0aGlzLCBvcGVyYXRpb25OZXdHZW5lcmF0b3JGcmFtZSwgcmVz
dWx0R1BSLCBzdHJ1Y3R1cmUsIGdlbmVyYXRvckxvY2Fsc1NpemUpKTsKKworICAgIGNlbGxSZXN1
bHQocmVzdWx0R1BSLCBub2RlKTsKK30KKwordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVJl
c2l6ZUdlbmVyYXRvckxvY2FscyhOb2RlKiBub2RlKQoreworICAgIFNwZWN1bGF0ZUNlbGxPcGVy
YW5kIGZyYW1lKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICBHUFJSZWcgZnJhbWVHUFIgPSBm
cmFtZS5ncHIoKTsKKyAgICBtX2ppdC5zdG9yZTMyKFRydXN0ZWRJbW0zMihub2RlLT5nZW5lcmF0
b3JGcmFtZUxvY2FscygpKSwgSklUQ29tcGlsZXI6OkFkZHJlc3MoZnJhbWVHUFIsIEdlbmVyYXRv
ckZyYW1lOjpudW1iZXJPZlNhdmVkQ2FsbGVlTG9jYWxzT2Zmc2V0KCkpKTsKKyAgICBub1Jlc3Vs
dChub2RlKTsKK30KKwogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld1R5cGVkQXJyYXko
Tm9kZSogbm9kZSkKIHsKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9qaXQu
Z3JhcGgoKS5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAppbmRleCA1MzEyYzhkYmVk
ZmVkMTgwMDU0MzgxMTMwNzllZWIwYjBlOTkwOGFiLi4wMGE0ZmE5MmFjNzNlNTgzOWFiODU2ZWFi
OWY0MzY0MjBlNTJjYjE1IDEwMDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5oCkBAIC0yMjgxLDYgKzIyODEsOCBAQCBjbGFzcyBTcGVjdWxhdGl2ZUpJVCB7
CiAgICAgdm9pZCBjb21waWxlUHV0QnlWYWxGb3JGbG9hdFR5cGVkQXJyYXkoR1BSUmVnIGJhc2Us
IEdQUlJlZyBwcm9wZXJ0eSwgTm9kZSosIFR5cGVkQXJyYXlUeXBlKTsKICAgICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgQ2xhc3NUeXBlPiB2b2lkIGNvbXBpbGVOZXdGdW5jdGlvbkNvbW1vbihHUFJSZWcs
IFN0cnVjdHVyZSosIEdQUlJlZywgR1BSUmVnLCBHUFJSZWcsIE1hY3JvQXNzZW1ibGVyOjpKdW1w
TGlzdCYsIHNpemVfdCwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgcHRyZGlmZl90LCBwdHJkaWZmX3Qs
IHB0cmRpZmZfdCk7CiAgICAgdm9pZCBjb21waWxlTmV3RnVuY3Rpb24oTm9kZSopOworICAgIHZv
aWQgY29tcGlsZU5ld0dlbmVyYXRvckZyYW1lKE5vZGUqKTsKKyAgICB2b2lkIGNvbXBpbGVSZXNp
emVHZW5lcmF0b3JMb2NhbHMoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUZvcndhcmRWYXJhcmdz
KE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVDcmVhdGVBY3RpdmF0aW9uKE5vZGUqKTsKICAgICB2
b2lkIGNvbXBpbGVDcmVhdGVEaXJlY3RBcmd1bWVudHMoTm9kZSopOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKaW5kZXggMTJl
YjUwNDExODBhYzJmNTAxNjRmOTUxYjA1OGVkYjYyZDIyODI3MC4uNDY2ZDNhYmIzODBiNDFjMTIx
NTZhMTVkMWI2OTZlZTlmNWQ5MmEzOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCkBAIC0zNjUwLDYgKzM2NTAsMTEgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBjZWxsUmVz
dWx0KHJlc3VsdFBheWxvYWQuZ3ByKCksIG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9CisK
KyAgICBjYXNlIE5ld0dlbmVyYXRvckZyYW1lOiB7CisgICAgICAgIGNvbXBpbGVOZXdHZW5lcmF0
b3JGcmFtZShub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogICAgICAgICAKICAgICBjYXNl
IFRvVGhpczogewogICAgICAgICBBU1NFUlQobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IFVu
dHlwZWRVc2UpOwpAQCAtNDcxOCw2ICs0NzIzLDQxIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwog
ICAgICAgICBicmVhazsKICAgICB9CisgICAgY2FzZSBTZXRHZW5lcmF0b3JMb2NhbDogeworICAg
ICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBmcmFtZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Cisg
ICAgICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKKworICAg
ICAgICBHUFJSZWcgZnJhbWVHUFIgPSBmcmFtZS5ncHIoKTsKKyAgICAgICAgR1BSUmVnIHZhbHVl
VGFnR1BSID0gdmFsdWUudGFnR1BSKCk7CisgICAgICAgIEdQUlJlZyB2YWx1ZVBheWxvYWRHUFIg
PSB2YWx1ZS5wYXlsb2FkR1BSKCk7CisgICAgICAgIHVuc2lnbmVkIGdlbmVyYXRvckxvY2FsSW5k
ZXggPSBub2RlLT5nZW5lcmF0b3JMb2NhbEluZGV4KCk7CisKKyAgICAgICAgbV9qaXQuc3RvcmUz
Mih2YWx1ZVRhZ0dQUiwgSklUQ29tcGlsZXI6OkFkZHJlc3MoZnJhbWVHUFIsIEdlbmVyYXRvckZy
YW1lOjpsb2NhbE9mZnNldChnZW5lcmF0b3JMb2NhbEluZGV4KSArIE9CSkVDVF9PRkZTRVRPRihK
U1ZhbHVlLCB1LmFzQml0cy50YWcpKSk7CisgICAgICAgIG1faml0LnN0b3JlMzIodmFsdWVQYXls
b2FkR1BSLCBKSVRDb21waWxlcjo6QWRkcmVzcyhmcmFtZUdQUiwgR2VuZXJhdG9yRnJhbWU6Omxv
Y2FsT2Zmc2V0KGdlbmVyYXRvckxvY2FsSW5kZXgpICsgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUs
IHUuYXNCaXRzLnBheWxvYWQpKSk7CisKKyAgICAgICAgbm9SZXN1bHQobm9kZSk7CisgICAgICAg
IGJyZWFrOworICAgIH0KKyAgICBjYXNlIEdldEdlbmVyYXRvckxvY2FsOiB7CisgICAgICAgIFNw
ZWN1bGF0ZUNlbGxPcGVyYW5kIGZyYW1lKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAg
R1BSVGVtcG9yYXJ5IHJlc3VsdFRhZyh0aGlzKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3Vs
dFBheWxvYWQodGhpcyk7CisKKyAgICAgICAgR1BSUmVnIGZyYW1lR1BSID0gZnJhbWUuZ3ByKCk7
CisgICAgICAgIEdQUlJlZyByZXN1bHRUYWdHUFIgPSByZXN1bHRUYWcuZ3ByKCk7CisgICAgICAg
IEdQUlJlZyByZXN1bHRQYXlsb2FkR1BSID0gcmVzdWx0UGF5bG9hZC5ncHIoKTsKKyAgICAgICAg
dW5zaWduZWQgZ2VuZXJhdG9yTG9jYWxJbmRleCA9IG5vZGUtPmdlbmVyYXRvckxvY2FsSW5kZXgo
KTsKKworICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OkFkZHJlc3MoZnJhbWVHUFIs
IEdlbmVyYXRvckZyYW1lOjpsb2NhbE9mZnNldChnZW5lcmF0b3JMb2NhbEluZGV4KSArIE9CSkVD
VF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy50YWcpKSwgcmVzdWx0VGFnR1BSKTsKKyAgICAg
ICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGZyYW1lR1BSLCBHZW5lcmF0b3JG
cmFtZTo6bG9jYWxPZmZzZXQoZ2VuZXJhdG9yTG9jYWxJbmRleCkgKyBPQkpFQ1RfT0ZGU0VUT0Yo
SlNWYWx1ZSwgdS5hc0JpdHMucGF5bG9hZCkpLCByZXN1bHRQYXlsb2FkR1BSKTsKKworICAgICAg
ICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQUiwgbm9kZSk7Cisg
ICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIFJlc2l6ZUdlbmVyYXRvckxvY2Fsczogewor
ICAgICAgICBjb21waWxlUmVzaXplR2VuZXJhdG9yTG9jYWxzKG5vZGUpOworICAgICAgICBicmVh
azsKKyAgICB9CiAgICAgY2FzZSBQcm9maWxlVHlwZTogewogICAgICAgICBKU1ZhbHVlT3BlcmFu
ZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIEdQUlRlbXBvcmFyeSBzY3Jh
dGNoMSh0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklUNjQuY3BwCmluZGV4IGU3NDU2OTQwNGMxYjk3ODQ4MDYxOTdkMTQ1NDVjZDFkYjIzZDdh
NWMuLjVhOGZjZDQ0ZDEzNWFkZTE1MzdiMjdlZGJmMGM5YTA4YjViMzNjNGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAtMzYs
NiArMzYsNyBAQAogI2luY2x1ZGUgIkRGR1Nsb3dQYXRoR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAi
RGVidWdnZXIuaCIKICNpbmNsdWRlICJEaXJlY3RBcmd1bWVudHMuaCIKKyNpbmNsdWRlICJHZW5l
cmF0b3JGcmFtZS5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIkpTQ0lu
bGluZXMuaCIKICNpbmNsdWRlICJKU0Vudmlyb25tZW50UmVjb3JkLmgiCkBAIC0zNjg4LDYgKzM2
ODksMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAg
ICBjZWxsUmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0K
KworICAgIGNhc2UgTmV3R2VuZXJhdG9yRnJhbWU6IHsKKyAgICAgICAgY29tcGlsZU5ld0dlbmVy
YXRvckZyYW1lKG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CiAgICAgICAgIAogICAgIGNh
c2UgVG9UaGlzOiB7CiAgICAgICAgIEFTU0VSVChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0g
VW50eXBlZFVzZSk7CkBAIC00NzIwLDYgKzQ3MjYsMzUgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7
CiAgICAgICAgIGJyZWFrOwogICAgIH0KKyAgICBjYXNlIFNldEdlbmVyYXRvckxvY2FsOiB7Cisg
ICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGZyYW1lKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsK
KyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQyKCkpOworCisg
ICAgICAgIEdQUlJlZyBmcmFtZUdQUiA9IGZyYW1lLmdwcigpOworICAgICAgICBHUFJSZWcgdmFs
dWVHUFIgPSB2YWx1ZS5ncHIoKTsKKyAgICAgICAgdW5zaWduZWQgZ2VuZXJhdG9yTG9jYWxJbmRl
eCA9IG5vZGUtPmdlbmVyYXRvckxvY2FsSW5kZXgoKTsKKworICAgICAgICBtX2ppdC5zdG9yZTY0
KHZhbHVlR1BSLCBKSVRDb21waWxlcjo6QWRkcmVzcyhmcmFtZUdQUiwgR2VuZXJhdG9yRnJhbWU6
OmxvY2FsT2Zmc2V0KGdlbmVyYXRvckxvY2FsSW5kZXgpKSk7CisKKyAgICAgICAgbm9SZXN1bHQo
bm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIEdldEdlbmVyYXRvckxvY2Fs
OiB7CisgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGZyYW1lKHRoaXMsIG5vZGUtPmNoaWxk
MSgpKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKworICAgICAgICBHUFJS
ZWcgZnJhbWVHUFIgPSBmcmFtZS5ncHIoKTsKKyAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJl
c3VsdC5ncHIoKTsKKyAgICAgICAgdW5zaWduZWQgZ2VuZXJhdG9yTG9jYWxJbmRleCA9IG5vZGUt
PmdlbmVyYXRvckxvY2FsSW5kZXgoKTsKKworICAgICAgICBtX2ppdC5sb2FkNjQoSklUQ29tcGls
ZXI6OkFkZHJlc3MoZnJhbWVHUFIsIEdlbmVyYXRvckZyYW1lOjpsb2NhbE9mZnNldChnZW5lcmF0
b3JMb2NhbEluZGV4KSksIHJlc3VsdEdQUik7CisgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0
R1BSLCBub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgUmVzaXplR2VuZXJh
dG9yTG9jYWxzOiB7CisgICAgICAgIGNvbXBpbGVSZXNpemVHZW5lcmF0b3JMb2NhbHMobm9kZSk7
CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICBjYXNlIFByb2ZpbGVUeXBlOiB7CiAgICAgICAg
IEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgR1BS
VGVtcG9yYXJ5IHNjcmF0Y2gxKHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcAppbmRleCA3MmYy
MjAwY2VhMTBiOTgxMGRiYThjN2IxOWZlZmYyNGRhYTVkYWUzLi5kN2M3MDU2NmZjNzM3Zjg5MGYx
NTZiNTM0NTA5ZDlhMGMwNzM4ZTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcApAQCAtMjgxLDYg
KzI4MSwxMSBAQCBjbGFzcyBTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZSA6IHB1YmxpYyBQaGFz
ZSB7CiAgICAgICAgICAgICAgICAgY29uc2lkZXJCYXJyaWVyKG1fbm9kZS0+Y2hpbGQxKCksIG1f
bm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQor
CisgICAgICAgICAgICBjYXNlIFNldEdlbmVyYXRvckxvY2FsOiB7CisgICAgICAgICAgICAgICAg
Y29uc2lkZXJCYXJyaWVyKG1fbm9kZS0+Y2hpbGQxKCksIG1fbm9kZS0+Y2hpbGQyKCkpOworICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIAogICAg
ICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTI5Niw2ICszMDEs
NyBAQCBjbGFzcyBTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAg
ICAgICAgICAgICBjYXNlIE5ld0FycmF5QnVmZmVyOgogICAgICAgICAgICAgY2FzZSBOZXdUeXBl
ZEFycmF5OgogICAgICAgICAgICAgY2FzZSBOZXdSZWdleHA6CisgICAgICAgICAgICBjYXNlIE5l
d0dlbmVyYXRvckZyYW1lOgogICAgICAgICAgICAgY2FzZSBNYXRlcmlhbGl6ZU5ld09iamVjdDoK
ICAgICAgICAgICAgIGNhc2UgTWF0ZXJpYWxpemVDcmVhdGVBY3RpdmF0aW9uOgogICAgICAgICAg
ICAgY2FzZSBOZXdTdHJpbmdPYmplY3Q6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2UuY3BwCmluZGV4IDJjMDU1
OTg0OTg5OWJkZjZmYjExMTc1OTdlMTA1NGJmZjM1NDY2OTMuLmUxYWVmMGIyYzM5M2Y1NjE5NDhj
Y2E1YTk1OWYyZTA3MTA4ODQzODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2UuY3BwCkBAIC0xNDksNiAr
MTQ5LDkgQEAgY2xhc3MgU3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2Ug
ewogICAgICAgICAgICAgICAgIGNhc2UgTmV3R2VuZXJhdG9yRnVuY3Rpb246CiAgICAgICAgICAg
ICAgICAgICAgIHJlZ2lzdGVyU3RydWN0dXJlKG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYyktPmdlbmVyYXRvckZ1bmN0aW9uU3RydWN0dXJlKCkpOwogICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIE5ld0dlbmVyYXRvckZy
YW1lOgorICAgICAgICAgICAgICAgICAgICByZWdpc3RlclN0cnVjdHVyZShtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5nZW5lcmF0b3JGcmFtZVN0cnVjdHVy
ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIAog
ICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0
b3J5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3Np
dG9yeS5jcHAKaW5kZXggOTdjMDc4NGJiNDJiYzkxOWQwNmNmNTIzYzQxZTAyNDZhNTM1MWQ5MS4u
NjlkODlkNmFkNDI1NDkyM2JjM2ZhYjNjN2FjYTIwODk1YzU1ZTVjYSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3Bw
CkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJEaXJlY3RBcmd1bWVudHMuaCIKICNpbmNs
dWRlICJGVExBYmJyZXZpYXRpb25zLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yRnJhbWUuaCIKICNp
bmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJKU0Vudmlyb25tZW50UmVjb3JkLmgi
CiAjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmgiCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCmluZGV4IDc3
ZTU3OTg2OTQwYzZhYzk2Zjg3ZjFmOTQ1YzQ2MjUxMjg4NjMwZjAuLjQ4ODYzYzBiZDMwZjY0NTc2
NTMxMDhiZjQ1NjliMTJjOTQwODU4YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCkBAIC00Nyw2ICs0Nyw4IEBACiAg
ICAgbWFjcm8oRGlyZWN0QXJndW1lbnRzX2xlbmd0aCwgRGlyZWN0QXJndW1lbnRzOjpvZmZzZXRP
Zkxlbmd0aCgpKSBcCiAgICAgbWFjcm8oRGlyZWN0QXJndW1lbnRzX21pbkNhcGFjaXR5LCBEaXJl
Y3RBcmd1bWVudHM6Om9mZnNldE9mTWluQ2FwYWNpdHkoKSkgXAogICAgIG1hY3JvKERpcmVjdEFy
Z3VtZW50c19vdmVycmlkZXMsIERpcmVjdEFyZ3VtZW50czo6b2Zmc2V0T2ZPdmVycmlkZXMoKSkg
XAorICAgIG1hY3JvKEdlbmVyYXRvckZyYW1lX251bWJlck9mQ2FsbGVlTG9jYWxzLCBHZW5lcmF0
b3JGcmFtZTo6bnVtYmVyT2ZDYWxsZWVMb2NhbHNPZmZzZXQoKSkgXAorICAgIG1hY3JvKEdlbmVy
YXRvckZyYW1lX251bWJlck9mU2F2ZWRDYWxsZWVMb2NhbHMsIEdlbmVyYXRvckZyYW1lOjpudW1i
ZXJPZlNhdmVkQ2FsbGVlTG9jYWxzT2Zmc2V0KCkpIFwKICAgICBtYWNybyhHZXR0ZXJTZXR0ZXJf
Z2V0dGVyLCBHZXR0ZXJTZXR0ZXI6Om9mZnNldE9mR2V0dGVyKCkpIFwKICAgICBtYWNybyhHZXR0
ZXJTZXR0ZXJfc2V0dGVyLCBHZXR0ZXJTZXR0ZXI6Om9mZnNldE9mU2V0dGVyKCkpIFwKICAgICBt
YWNybyhKU0FycmF5QnVmZmVyVmlld19sZW5ndGgsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRP
Zkxlbmd0aCgpKSBcCkBAIC05MSw2ICs5Myw3IEBACiAKICNkZWZpbmUgRk9SX0VBQ0hfSU5ERVhF
RF9BQlNUUkFDVF9IRUFQKG1hY3JvKSBcCiAgICAgbWFjcm8oRGlyZWN0QXJndW1lbnRzX3N0b3Jh
Z2UsIERpcmVjdEFyZ3VtZW50czo6c3RvcmFnZU9mZnNldCgpLCBzaXplb2YoRW5jb2RlZEpTVmFs
dWUpKSBcCisgICAgbWFjcm8oR2VuZXJhdG9yRnJhbWVfY2FsbGVlTG9jYWxzLCBHZW5lcmF0b3JG
cmFtZTo6b2Zmc2V0T2ZMb2NhbHMoKSwgc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPikpIFwK
ICAgICBtYWNybyhKU0Vudmlyb25tZW50UmVjb3JkX3ZhcmlhYmxlcywgSlNFbnZpcm9ubWVudFJl
Y29yZDo6b2Zmc2V0T2ZWYXJpYWJsZXMoKSwgc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSkgXAogICAg
IG1hY3JvKEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcl9jYWNoZWRQcm9wZXJ0eU5hbWVzVmVjdG9y
Q29udGVudHMsIDAsIHNpemVvZihXcml0ZUJhcnJpZXI8SlNTdHJpbmc+KSkgXAogICAgIG1hY3Jv
KEpTUm9wZVN0cmluZ19maWJlcnMsIEpTUm9wZVN0cmluZzo6b2Zmc2V0T2ZGaWJlcnMoKSwgc2l6
ZW9mKFdyaXRlQmFycmllcjxKU1N0cmluZz4pKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKaW5kZXggZDJhNDkwYzJhNjdlNmRiOGI5YTVhNzk2NjRl
NTY1ZTNkNmQ5NTFkYy4uMGUxZGZlODc1ZTEwYTViNTY1NTZmYTlkZDViZmRiM2U2OTBmODM4OCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcApAQCAt
NzIsNiArNzIsNyBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoTm9kZSogbm9k
ZSkKICAgICBjYXNlIE5ld09iamVjdDoKICAgICBjYXNlIE5ld0FycmF5OgogICAgIGNhc2UgTmV3
QXJyYXlCdWZmZXI6CisgICAgY2FzZSBOZXdHZW5lcmF0b3JGcmFtZToKICAgICBjYXNlIEdldEJ5
T2Zmc2V0OgogICAgIGNhc2UgR2V0R2V0dGVyU2V0dGVyQnlPZmZzZXQ6CiAgICAgY2FzZSBHZXRH
ZXR0ZXI6CkBAIC0yMTYsNiArMjE3LDkgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21w
aWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBQdXRTZXR0ZXJCeVZhbDoKICAgICBjYXNlIENvcHlS
ZXN0OgogICAgIGNhc2UgR2V0UmVzdExlbmd0aDoKKyAgICBjYXNlIFNldEdlbmVyYXRvckxvY2Fs
OgorICAgIGNhc2UgR2V0R2VuZXJhdG9yTG9jYWw6CisgICAgY2FzZSBSZXNpemVHZW5lcmF0b3JM
b2NhbHM6CiAgICAgICAgIC8vIFRoZXNlIGFyZSBPSy4KICAgICAgICAgYnJlYWs7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAKaW5kZXggMzdj
YWU1YzE3YWQ5YzcxZDAxOGQ0MWJiNmU5YTY2YzkxNzc5NjZmMi4uYjFjZjY1MGJjYjQ5Zjc5YzIz
ZDM4OTdiZDE5YzVjZWEzZjcxODkyMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExMb3dlckRGR1RvTExWTS5jcHAKQEAgLTUzLDYgKzUzLDcgQEAKICNpbmNsdWRlICJGVExQ
YXRjaHBvaW50RXhjZXB0aW9uSGFuZGxlLmgiCiAjaW5jbHVkZSAiRlRMVGh1bmtzLmgiCiAjaW5j
bHVkZSAiRlRMV2VpZ2h0ZWRUYXJnZXQuaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JGcmFtZS5oIgog
I2luY2x1ZGUgIkpJVEFkZEdlbmVyYXRvci5oIgogI2luY2x1ZGUgIkpJVEJpdEFuZEdlbmVyYXRv
ci5oIgogI2luY2x1ZGUgIkpJVEJpdE9yR2VuZXJhdG9yLmgiCkBAIC04MzksNiArODQwLDkgQEAg
Y2xhc3MgTG93ZXJERkdUb0xMVk0gewogICAgICAgICBjYXNlIE5ld0FycmF5V2l0aFNpemU6CiAg
ICAgICAgICAgICBjb21waWxlTmV3QXJyYXlXaXRoU2l6ZSgpOwogICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgTmV3R2VuZXJhdG9yRnJhbWU6CisgICAgICAgICAgICBjb21waWxlTmV3
R2VuZXJhdG9yRnJhbWUoKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEdldFR5
cGVkQXJyYXlCeXRlT2Zmc2V0OgogICAgICAgICAgICAgY29tcGlsZUdldFR5cGVkQXJyYXlCeXRl
T2Zmc2V0KCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTEwNzEsNiArMTA3NSwxNSBAQCBjbGFz
cyBMb3dlckRGR1RvTExWTSB7CiAgICAgICAgIGNhc2UgR2V0UmVzdExlbmd0aDoKICAgICAgICAg
ICAgIGNvbXBpbGVHZXRSZXN0TGVuZ3RoKCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBSZXNpemVHZW5lcmF0b3JMb2NhbHM6CisgICAgICAgICAgICBjb21waWxlUmVzaXplR2Vu
ZXJhdG9yTG9jYWxzKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTZXRHZW5l
cmF0b3JMb2NhbDoKKyAgICAgICAgICAgIGNvbXBpbGVTZXRHZW5lcmF0b3JMb2NhbCgpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR2V0R2VuZXJhdG9yTG9jYWw6CisgICAgICAg
ICAgICBjb21waWxlR2V0R2VuZXJhdG9yTG9jYWwoKTsKKyAgICAgICAgICAgIGJyZWFrOwogCiAg
ICAgICAgIGNhc2UgUGhhbnRvbUxvY2FsOgogICAgICAgICBjYXNlIExvb3BIaW50OgpAQCAtMzkx
Niw2ICszOTI5LDI4IEBAIGNsYXNzIExvd2VyREZHVG9MTFZNIHsKICAgICAgICAgbV9vdXQuYXBw
ZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7CiAgICAgICAgIHNldEludDMyKG1fb3V0LnBo
aShtX291dC5pbnQzMiwgemVyb0xlbmd0aFJlc3VsdCwgbm9uWmVyb0xlbmd0aFJlc3VsdCkpOwog
ICAgIH0KKworICAgIHZvaWQgY29tcGlsZVJlc2l6ZUdlbmVyYXRvckxvY2FscygpCisgICAgewor
ICAgICAgICBMVmFsdWUgZnJhbWUgPSBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAg
ICBtX291dC5zdG9yZTMyKG1fb3V0LmNvbnN0SW50MzIobV9ub2RlLT5nZW5lcmF0b3JGcmFtZUxv
Y2FscygpKSwgZnJhbWUsIG1faGVhcHMuR2VuZXJhdG9yRnJhbWVfbnVtYmVyT2ZTYXZlZENhbGxl
ZUxvY2Fscyk7CisgICAgfQorCisgICAgdm9pZCBjb21waWxlU2V0R2VuZXJhdG9yTG9jYWwoKQor
ICAgIHsKKyAgICAgICAgbV9vdXQuc3RvcmU2NCgKKyAgICAgICAgICAgIGxvd0pTVmFsdWUobV9u
b2RlLT5jaGlsZDIoKSksCisgICAgICAgICAgICBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpLAor
ICAgICAgICAgICAgbV9oZWFwcy5HZW5lcmF0b3JGcmFtZV9jYWxsZWVMb2NhbHNbbV9ub2RlLT5n
ZW5lcmF0b3JMb2NhbEluZGV4KCldKTsKKyAgICB9CisKKyAgICB2b2lkIGNvbXBpbGVHZXRHZW5l
cmF0b3JMb2NhbCgpCisgICAgeworICAgICAgICBzZXRKU1ZhbHVlKAorICAgICAgICAgICAgbV9v
dXQubG9hZDY0KAorICAgICAgICAgICAgICAgIGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSksCisg
ICAgICAgICAgICAgICAgbV9oZWFwcy5HZW5lcmF0b3JGcmFtZV9jYWxsZWVMb2NhbHNbbV9ub2Rl
LT5nZW5lcmF0b3JMb2NhbEluZGV4KCldKSk7CisgICAgfQogICAgIAogICAgIHZvaWQgY29tcGls
ZU5ld09iamVjdCgpCiAgICAgewpAQCAtNDE1MCw2ICs0MTg1LDQyIEBAIGNsYXNzIExvd2VyREZH
VG9MTFZNIHsKICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKHN0cnVjdHVyZSkpOwogICAg
ICAgICBzZXRKU1ZhbHVlKHZtQ2FsbChtX291dC5pbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJh
dGlvbk5ld0FycmF5V2l0aFNpemUpLCBtX2NhbGxGcmFtZSwgc3RydWN0dXJlVmFsdWUsIHB1Ymxp
Y0xlbmd0aCkpOwogICAgIH0KKworICAgIHZvaWQgY29tcGlsZU5ld0dlbmVyYXRvckZyYW1lKCkK
KyAgICB7CisgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgIFN0cnVjdHVy
ZSogc3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT5nZW5lcmF0b3JGcmFtZVN0cnVjdHVyZSgpOwor
ICAgICAgICB1bnNpZ25lZCBnZW5lcmF0b3JMb2NhbHNTaXplID0gbV9ub2RlLT5nZW5lcmF0b3JM
b2NhbHNTaXplKCk7CisKKyAgICAgICAgTEJhc2ljQmxvY2sgc2xvd1BhdGggPSBGVExfTkVXX0JM
T0NLKG1fb3V0LCAoIk5ld0dlbmVyYXRvckZyYW1lIHNsb3cgcGF0aCIpKTsKKyAgICAgICAgTEJh
c2ljQmxvY2sgY29udGludWF0aW9uID0gRlRMX05FV19CTE9DSyhtX291dCwgKCJOZXdHZW5lcmF0
b3JGcmFtZSBjb250aW51YXRpb24iKSk7CisKKyAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQg
PSBtX291dC5pbnNlcnROZXdCbG9ja3NCZWZvcmUoc2xvd1BhdGgpOworICAgICAgICBMVmFsdWUg
ZmFzdE9iamVjdCA9IGFsbG9jYXRlT2JqZWN0PEdlbmVyYXRvckZyYW1lPihHZW5lcmF0b3JGcmFt
ZTo6YWxsb2NhdGlvblNpemVGb3JMb2NhbHMoZ2VuZXJhdG9yTG9jYWxzU2l6ZSksIHN0cnVjdHVy
ZSwgbV9vdXQuaW50UHRyWmVybywgc2xvd1BhdGgpOworICAgICAgICBtX291dC5zdG9yZTMyKG1f
b3V0LmNvbnN0SW50MzIoZ2VuZXJhdG9yTG9jYWxzU2l6ZSksIGZhc3RPYmplY3QsIG1faGVhcHMu
R2VuZXJhdG9yRnJhbWVfbnVtYmVyT2ZDYWxsZWVMb2NhbHMpOworICAgICAgICBtX291dC5zdG9y
ZTMyKG1fb3V0LmNvbnN0SW50MzIoMCksIGZhc3RPYmplY3QsIG1faGVhcHMuR2VuZXJhdG9yRnJh
bWVfbnVtYmVyT2ZTYXZlZENhbGxlZUxvY2Fscyk7CisKKyAgICAgICAgSlNWYWx1ZSBlbXB0eVZh
bHVlOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZ2VuZXJhdG9yTG9jYWxzU2l6
ZTsgKytpKQorICAgICAgICAgICAgbV9vdXQuc3RvcmU2NChtX291dC5jb25zdEludDY0KEpTVmFs
dWU6OmVuY29kZShlbXB0eVZhbHVlKSksIGZhc3RPYmplY3QsIG1faGVhcHMuR2VuZXJhdG9yRnJh
bWVfY2FsbGVlTG9jYWxzW2ldKTsKKworICAgICAgICBWYWx1ZUZyb21CbG9jayBmYXN0UmVzdWx0
ID0gbV9vdXQuYW5jaG9yKGZhc3RPYmplY3QpOworICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVh
dGlvbik7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oc2xvd1BhdGgsIGNvbnRpbnVhdGlvbik7
CisgICAgICAgIFZlY3RvcjxMVmFsdWU+IHNsb3dQYXRoQXJndW1lbnRzOworICAgICAgICBMVmFs
dWUgY2FsbFJlc3VsdCA9IGxhenlTbG93UGF0aCgKKyAgICAgICAgICAgIFs9XSAoY29uc3QgVmVj
dG9yPExvY2F0aW9uPiYgbG9jYXRpb25zKSAtPiBSZWZQdHI8TGF6eVNsb3dQYXRoOjpHZW5lcmF0
b3I+IHsKKyAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlTGF6eUNhbGxHZW5lcmF0b3IoCisg
ICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbk5ld0dlbmVyYXRvckZyYW1lLAorICAgICAgICAg
ICAgICAgICAgICBsb2NhdGlvbnNbMF0uZGlyZWN0R1BSKCksIENDYWxsSGVscGVyczo6VHJ1c3Rl
ZEltbVB0cihzdHJ1Y3R1cmUpLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihnZW5lcmF0b3JM
b2NhbHNTaXplKSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgc2xv
d1Jlc3VsdCA9IG1fb3V0LmFuY2hvcihjYWxsUmVzdWx0KTsKKyAgICAgICAgbV9vdXQuanVtcChj
b250aW51YXRpb24pOworCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFz
dE5leHQpOworICAgICAgICBzZXRKU1ZhbHVlKG1fb3V0LnBoaShtX291dC5pbnRQdHIsIGZhc3RS
ZXN1bHQsIHNsb3dSZXN1bHQpKTsKKyAgICB9CiAgICAgCiAgICAgdm9pZCBjb21waWxlQWxsb2Nh
dGVQcm9wZXJ0eVN0b3JhZ2UoKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAppbmRl
eCBhM2JkZmE3Y2Q1ZDBmNTcyNDdmMWJlOGM0MGIyNTEwZDI5ZDgwMGZmLi4wYjlmZDhkMzQzZmQ4
Y2ViMjdhYWY3YTM5NDAwNzA0NjQ3NGMyNjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3Bw
CkBAIC0yMTYsNyArMjE2LDkgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQog
ICAgICAgICBERUZJTkVfT1Aob3BfY2hlY2tfdGR6KQogICAgICAgICBERUZJTkVfT1Aob3BfYXNz
ZXJ0KQogICAgICAgICBERUZJTkVfT1Aob3Bfc2F2ZSkKLSAgICAgICAgREVGSU5FX09QKG9wX3Jl
c3VtZSkKKyAgICAgICAgREVGSU5FX09QKG9wX25ld19nZW5lcmF0b3JfZnJhbWUpCisgICAgICAg
IERFRklORV9PUChvcF9yZXN1bWVfZnJvbV9nZW5lcmF0b3JfZnJhbWUpCisgICAgICAgIERFRklO
RV9PUChvcF9jbGVhcl9nZW5lcmF0b3JfZnJhbWUpCiAgICAgICAgIERFRklORV9PUChvcF9kZWJ1
ZykKICAgICAgICAgREVGSU5FX09QKG9wX2RlbF9ieV9pZCkKICAgICAgICAgREVGSU5FX09QKG9w
X2RpdikKQEAgLTI4OSw2ICsyOTEsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFz
cygpCiAgICAgICAgIERFRklORV9PUChvcF9wdXRfZ2V0dGVyX3NldHRlcl9ieV9pZCkKICAgICAg
ICAgREVGSU5FX09QKG9wX3B1dF9nZXR0ZXJfYnlfdmFsKQogICAgICAgICBERUZJTkVfT1Aob3Bf
cHV0X3NldHRlcl9ieV92YWwpCisgICAgICAgIERFRklORV9PUChvcF9ub3ApCiAKICAgICAgICAg
REVGSU5FX09QKG9wX3JldCkKICAgICAgICAgREVGSU5FX09QKG9wX3JzaGlmdCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5oCmluZGV4IGRmN2IzZGM1ZTg5MjBlZTRlZjkyYmNhY2JhZWZmMWI0YzAwZDkz
NjkuLmVjNjgxZDA5OTBlZjBjMmExYjBjNDFkNTQxMmJiY2UwYzBkMzkxZGUgMTAwNzU1Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVQuaApAQCAtNDk1LDcgKzQ5NSw5IEBACiAgICAgICAgIHZvaWQgZW1pdF9vcF9j
aGVja190ZHooSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2Fzc2VydChJbnN0
cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3Bfc2F2ZShJbnN0cnVjdGlvbiopOwotICAg
ICAgICB2b2lkIGVtaXRfb3BfcmVzdW1lKEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1p
dF9vcF9yZXN1bWVfZnJvbV9nZW5lcmF0b3JfZnJhbWUoSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAg
dm9pZCBlbWl0X29wX2NsZWFyX2dlbmVyYXRvcl9mcmFtZShJbnN0cnVjdGlvbiopOworICAgICAg
ICB2b2lkIGVtaXRfb3BfbmV3X2dlbmVyYXRvcl9mcmFtZShJbnN0cnVjdGlvbiopOwogICAgICAg
ICB2b2lkIGVtaXRfb3BfZGVidWcoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29w
X2RlbF9ieV9pZChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZGl2KEluc3Ry
dWN0aW9uKik7CkBAIC01OTUsNiArNTk3LDcgQEAKICAgICAgICAgdm9pZCBlbWl0X29wX2VudW1l
cmF0b3Jfc3RydWN0dXJlX3BuYW1lKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9v
cF9lbnVtZXJhdG9yX2dlbmVyaWNfcG5hbWUoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBl
bWl0X29wX3RvX2luZGV4X3N0cmluZyhJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRf
b3Bfbm9wKEluc3RydWN0aW9uKik7CiAKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9hZGQoSW5z
dHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZv
aWQgZW1pdFNsb3dfb3BfYml0YW5kKEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+
OjppdGVyYXRvciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGNvZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKaW5k
ZXggNzM4Y2I2M2ZlZDkxYjQ5ODU1ZDVkMDMzZDQ2MzM0NWZkZDQ3NmQ5Yi4uNGE2YTg4Yzg0ZjU3
NWYxNGJhYjYwMzkzOTBmNDY4MTk0ZWY3MzcyNiAxMDA3NTUKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wY29kZXMuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiQ29waWVkU3BhY2VJ
bmxpbmVzLmgiCiAjaW5jbHVkZSAiRGVidWdnZXIuaCIKICNpbmNsdWRlICJFeGNlcHRpb24uaCIK
KyNpbmNsdWRlICJHZW5lcmF0b3JGcmFtZS5oIgogI2luY2x1ZGUgIkhlYXAuaCIKICNpbmNsdWRl
ICJKSVRJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgpAQCAtODkzLDYgKzg5NCwyMyBA
QCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfdG9fc3RyaW5nKEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZQogICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CiB9CiAK
K3ZvaWQgSklUOjplbWl0X29wX3Jlc3VtZV9mcm9tX2dlbmVyYXRvcl9mcmFtZShJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIGludCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rp
b25bMV0udS5vcGVyYW5kOworICAgIGludCBmcmFtZSA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51
Lm9wZXJhbmQ7CisgICAgdW5zaWduZWQgaW5kZXggPSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS51
bnNpZ25lZFZhbHVlOworICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoZnJhbWUsIHJlZ1QxKTsK
KyAgICBsb2FkNjQoQWRkcmVzcyhyZWdUMSwgR2VuZXJhdG9yRnJhbWU6OmxvY2FsT2Zmc2V0KGlu
ZGV4KSksIHJlZ1QwKTsKKyAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCk7Cit9CisKK3Zv
aWQgSklUOjplbWl0X29wX2NsZWFyX2dlbmVyYXRvcl9mcmFtZShJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQoreworICAgIGludCBmcmFtZSA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51
Lm9wZXJhbmQ7CisgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihmcmFtZSwgcmVnVDEpOworICAg
IHN0b3JlMzIoVHJ1c3RlZEltbTMyKDApLCBBZGRyZXNzKHJlZ1QxLCBHZW5lcmF0b3JGcmFtZTo6
bnVtYmVyT2ZTYXZlZENhbGxlZUxvY2Fsc09mZnNldCgpKSk7Cit9CisKICNlbmRpZiAvLyBVU0Uo
SlNWQUxVRTY0KQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9sb29wX2hpbnQoSW5zdHJ1Y3Rpb24qKQpA
QCAtMTQzNSwxMiArMTQ1MywxNiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9zYXZlKEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKIH0KIAotdm9p
ZCBKSVQ6OmVtaXRfb3BfcmVzdW1lKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2
b2lkIEpJVDo6ZW1pdF9vcF9uZXdfZ2VuZXJhdG9yX2ZyYW1lKEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCiB7Ci0gICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBj
dXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9yZXN1bWUpOworICAgIEpJVFNsb3dQYXRoQ2Fs
bCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfbmV3X2dl
bmVyYXRvcl9mcmFtZSk7CiAgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKIH0KIAordm9pZCBKSVQ6
OmVtaXRfb3Bfbm9wKEluc3RydWN0aW9uKikKK3sKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAK
ICNlbmRpZiAvLyBFTkFCTEUoSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGNvZGVzMzJfNjQuY3BwCmluZGV4IGMzMjZmZjNlMDFlNWE0MjQzZTdiNzhiZWU4NTJjZmI3OTdk
MzkyZWUuLmQ0MmU4NWQ5ZjU3Y2M4ZDUwYjliMjdiMzkwNzcyY2MyNTE3MDM5NWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKQEAgLTEzMjgsNiAr
MTMyOCwyNCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wcm9maWxlX3R5cGUoSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKICAgICBqdW1wVG9FbmQubGluayh0aGlzKTsKIH0KIAordm9pZCBK
SVQ6OmVtaXRfb3BfcmVzdW1lX2Zyb21fZ2VuZXJhdG9yX2ZyYW1lKEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgaW50IGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51
Lm9wZXJhbmQ7CisgICAgaW50IGZyYW1lID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFu
ZDsKKyAgICB1bnNpZ25lZCBpbmRleCA9IGN1cnJlbnRJbnN0cnVjdGlvblszXS51LnVuc2lnbmVk
VmFsdWU7CisgICAgZW1pdExvYWRQYXlsb2FkKGZyYW1lLCByZWdUMik7CisgICAgbG9hZDMyKEFk
ZHJlc3MocmVnVDIsIEdlbmVyYXRvckZyYW1lOjpsb2NhbE9mZnNldChpbmRleCkgKyBPQkpFQ1Rf
T0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMudGFnKSksIHJlZ1QxKTsKKyAgICBsb2FkMzIoQWRk
cmVzcyhyZWdUMiwgR2VuZXJhdG9yRnJhbWU6OmxvY2FsT2Zmc2V0KGluZGV4KSArIE9CSkVDVF9P
RkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy5wYXlsb2FkKSksIHJlZ1QwKTsKKyAgICBlbWl0UHV0
VmlydHVhbFJlZ2lzdGVyKGRzdCwgSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKSk7Cit9CisKK3Zv
aWQgSklUOjplbWl0X29wX2NsZWFyX2dlbmVyYXRvcl9mcmFtZShJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQoreworICAgIGludCBmcmFtZSA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51
Lm9wZXJhbmQ7CisgICAgZW1pdExvYWRQYXlsb2FkKGZyYW1lLCByZWdUMSk7CisgICAgc3RvcmUz
MihUcnVzdGVkSW1tMzIoMCksIEFkZHJlc3MocmVnVDEsIEdlbmVyYXRvckZyYW1lOjpudW1iZXJP
ZlNhdmVkQ2FsbGVlTG9jYWxzT2Zmc2V0KCkpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAK
ICNlbmRpZiAvLyBVU0UoSlNWQUxVRTMyXzY0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcAppbmRleCAyYjRlNjE5ODZkMzEy
YWM5ZTRmODczNzNjZTdhYTBiOWZkMGNlNzVhLi5hZmUwOTY4NDg4ZjQ2ZDE2NzVjOTE3ZWNiMmI2
MjBjMDA1NjEyMjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRPZmZzZXRzRXh0cmFjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkRp
cmVjdEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbi5oIgogI2luY2x1ZGUgIkV4ZWN1
dGFibGUuaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JGcmFtZS5oIgogI2luY2x1ZGUgIkhlYXAuaCIK
ICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbSBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQppbmRl
eCBjZDRjZTkwNjNiMTk1NzVhOTU3ZTNjYTNlMjJiZTU3OTE1YmRiNTlhLi5iOTIwYTZjZTY2Y2Zi
ZTEzNTMzNGRhMDFmNjlkNThkZTQ2NjBjZTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCkBAIC0xNjUsNiArMTY1LDcgQEAg
Y29uc3QgU2xvdFNpemUgPSA4CiAKIGNvbnN0IEpTRW52aXJvbm1lbnRSZWNvcmRfdmFyaWFibGVz
ID0gKHNpemVvZiBKU0Vudmlyb25tZW50UmVjb3JkICsgU2xvdFNpemUgLSAxKSAmIH4oU2xvdFNp
emUgLSAxKQogY29uc3QgRGlyZWN0QXJndW1lbnRzX3N0b3JhZ2UgPSAoc2l6ZW9mIERpcmVjdEFy
Z3VtZW50cyArIFNsb3RTaXplIC0gMSkgJiB+KFNsb3RTaXplIC0gMSkKK2NvbnN0IEdlbmVyYXRv
ckZyYW1lX2NhbGxlZUxvY2FscyA9IChzaXplb2YgR2VuZXJhdG9yRnJhbWUgKyBTbG90U2l6ZSAt
IDEpICYgfihTbG90U2l6ZSAtIDEpCiAKIGNvbnN0IFN0YWNrQWxpZ25tZW50ID0gMTYKIGNvbnN0
IFN0YWNrQWxpZ25tZW50U2xvdHMgPSAyCkBAIC0xMjU2LDYgKzEyNTcsMTIgQEAgX2xsaW50X29w
X25ld19yZWdleHA6CiAgICAgZGlzcGF0Y2goMykKIAogCitfbGxpbnRfb3BfbmV3X2dlbmVyYXRv
cl9mcmFtZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbFNsb3dQYXRoKF9zbG93X3Bh
dGhfbmV3X2dlbmVyYXRvcl9mcmFtZSkKKyAgICBkaXNwYXRjaCgzKQorCisKIF9sbGludF9vcF9s
ZXNzOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF9s
ZXNzKQpAQCAtMTU5NSwxMCArMTYwMiwxNiBAQCBfbGxpbnRfb3Bfc2F2ZToKICAgICBkaXNwYXRj
aCg0KQogCiAKLV9sbGludF9vcF9yZXN1bWU6CitfbGxpbnRfb3Bfc2F2ZV9oaW50OgogICAgIHRy
YWNlRXhlY3V0aW9uKCkKLSAgICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF9yZXN1bWUpCi0gICAg
ZGlzcGF0Y2goMykKKyAgICBub3RTdXBwb3J0ZWQoKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xs
aW50X29wX3Jlc3VtZV9oaW50OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBub3RTdXBwb3J0
ZWQoKQorICAgIGRpc3BhdGNoKDQpCiAKIAogX2xsaW50X29wX2NyZWF0ZV9sZXhpY2FsX2Vudmly
b25tZW50OgpAQCAtMTcwOCw2ICsxNzIxLDEwIEBAIF9sbGludF9vcF9jb3B5X3Jlc3Q6CiAgICAg
Y2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfY29weV9yZXN0KQogICAgIGRpc3BhdGNoKDQpCiAKK19s
bGludF9vcF9ub3A6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGRpc3BhdGNoKDEpCisKIAog
IyBMYXN0bHksIG1ha2Ugc3VyZSB0aGF0IHdlIGNhbiBsaW5rIGV2ZW4gdGhvdWdoIHdlIGRvbid0
IHN1cHBvcnQgYWxsIG9wY29kZXMuCiAjIFRoZXNlIG9wY29kZXMgc2hvdWxkIG5ldmVyIGFyaXNl
IHdoZW4gdXNpbmcgTExJbnQgb3IgZWl0aGVyIEpJVC4gV2UgYXNzZXJ0CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbSBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNt
CmluZGV4IGQwNmI0ZDM5NmQzMWNkMWJjNTJjMzcxMWUxMzNmYmFlZGNjMmMwNGUuLjBjZWY3ZTE0
OGYxMjdkN2VjNGIzYzdjN2UzMDYyYzQxZjE0ODI1YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCkBAIC0y
NDYwLDMgKzI0NjAsMjAgQEAgX2xsaW50X29wX2dldF9yZXN0X2xlbmd0aDoKICAgICBzdG9yZWkg
dDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KICAgICBzdG9yZWkgSW50MzJUYWcsIFRhZ09m
ZnNldFtjZnIsIHQxLCA4XQogICAgIGRpc3BhdGNoKDMpCisKK19sbGludF9vcF9jbGVhcl9nZW5l
cmF0b3JfZnJhbWU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRWYXJpYWJsZSgxLCB0
MiwgdDEsIHQwKQorICAgIHN0b3JlaSAwLCBHZW5lcmF0b3JGcmFtZTo6bV9udW1iZXJPZlNhdmVk
Q2FsbGVlTG9jYWxzW3QwXQorICAgIGRpc3BhdGNoKDIpCisKK19sbGludF9vcF9yZXN1bWVfZnJv
bV9nZW5lcmF0b3JfZnJhbWU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRWYXJpYWJs
ZSgyLCB0MiwgdDEsIHQwKQorICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigzLCB0MykKKyAgICBs
b2FkcCBHZW5lcmF0b3JGcmFtZV9jYWxsZWVMb2NhbHMgKyBUYWdPZmZzZXRbdDAsIHQzLCA4XSwg
dDEKKyAgICBsb2FkcCBHZW5lcmF0b3JGcmFtZV9jYWxsZWVMb2NhbHMgKyBQYXlsb2FkT2Zmc2V0
W3QwLCB0MywgOF0sIHQyCisgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDEsIHQwKQorICAgIHN0
b3JlaSB0MSwgVGFnT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zm
c2V0W2NmciwgdDAsIDhdCisgICAgZGlzcGF0Y2goNCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KaW5kZXggODUxNzNiYzgy
NjIxNDZiMGUwZDFlMDE5MmI3MDYwMjhiYmQ5MDY4My4uNDkyYzYzYzI1Y2RmYWUzMmZmOWVlYjhh
NGQxOTdlNTg1NTMxOWFjMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KQEAgLTIzMjEsMyArMjMyMSwxOCBAQCBfbGxp
bnRfb3BfZ2V0X3Jlc3RfbGVuZ3RoOgogICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigxLCB0MSkK
ICAgICBzdG9yZXEgdDAsIFtjZnIsIHQxLCA4XQogICAgIGRpc3BhdGNoKDMpCisKK19sbGludF9v
cF9jbGVhcl9nZW5lcmF0b3JfZnJhbWU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRW
YXJpYWJsZSgxLCB0MCkKKyAgICBzdG9yZWkgMCwgR2VuZXJhdG9yRnJhbWU6Om1fbnVtYmVyT2ZT
YXZlZENhbGxlZUxvY2Fsc1t0MF0KKyAgICBkaXNwYXRjaCgyKQorCitfbGxpbnRfb3BfcmVzdW1l
X2Zyb21fZ2VuZXJhdG9yX2ZyYW1lOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkVmFy
aWFibGUoMiwgdDApCisgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDMsIHQxKQorICAgIGxvYWRx
IEdlbmVyYXRvckZyYW1lX2NhbGxlZUxvY2Fsc1t0MCwgdDEsIDhdLCB0MAorICAgIGxvYWRpc0Zy
b21JbnN0cnVjdGlvbigxLCB0MSkKKyAgICBzdG9yZXEgdDAsIFtjZnIsIHQxLCA4XQorICAgIGRp
c3BhdGNoKDQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNl
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKaW5kZXggOGQz
NzA2MzQ1MTI4ZTlkZjlkYWMzMjU3ZjdjNWY0ZTVhYjNhOWMzNC4uZTg2MDUzYjQ4MmE4ZDM2YjMz
NWMwOGJhN2QzNjc1NmQzYjc5NmFkOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9QYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFy
c2VyLmNwcApAQCAtMjUwLDkgKzI1MCwxMCBAQAogICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQm9k
eUV4cHJlc3Npb24gPSBmYWxzZTsKICAgICBpZiAobV9sZXhlci0+aXNSZXBhcnNpbmdGdW5jdGlv
bigpKSB7CiAgICAgICAgIFBhcnNlckZ1bmN0aW9uSW5mbzxBU1RCdWlsZGVyPiBmdW5jdGlvbklu
Zm87Ci0gICAgICAgIGlmIChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JC
b2R5TW9kZSkKLSAgICAgICAgICAgIGZ1bmN0aW9uSW5mby5wYXJhbWV0ZXJzID0gY3JlYXRlR2Vu
ZXJhdG9yUGFyYW1ldGVycyhjb250ZXh0KTsKLSAgICAgICAgZWxzZQorICAgICAgICBpZiAocGFy
c2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yQm9keU1vZGUpIHsKKyAgICAgICAg
ICAgIHVuc2lnbmVkIHBhcmFtZXRlckNvdW50ID0gMDsKKyAgICAgICAgICAgIGZ1bmN0aW9uSW5m
by5wYXJhbWV0ZXJzID0gY3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhjb250ZXh0LCBwYXJhbWV0
ZXJDb3VudCk7CisgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgcGFyc2VGdW5jdGlvblBhcmFt
ZXRlcnMoY29udGV4dCwgcGFyc2VNb2RlLCBmdW5jdGlvbkluZm8pOwogICAgICAgICBtX3BhcmFt
ZXRlcnMgPSBmdW5jdGlvbkluZm8ucGFyYW1ldGVyczsKIApAQCAtNDg1LDEwICs0ODYsOSBAQAog
CiAgICAgUGFyc2VyRnVuY3Rpb25JbmZvPFRyZWVCdWlsZGVyPiBpbmZvOwogICAgIGluZm8ubmFt
ZSA9ICZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5udWxsSWRlbnRpZmllcjsKLSAgICBpbmZvLnBhcmFt
ZXRlcnMgPSBjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKGNvbnRleHQpOworICAgIGluZm8ucGFy
YW1ldGVycyA9IGNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMoY29udGV4dCwgaW5mby5wYXJhbWV0
ZXJDb3VudCk7CiAgICAgaW5mby5zdGFydE9mZnNldCA9IHBhcmFtZXRlcnNTdGFydDsKICAgICBp
bmZvLnN0YXJ0TGluZSA9IHRva2VuTGluZSgpOwotICAgIGluZm8ucGFyYW1ldGVyQ291bnQgPSA0
OyAvLyBnZW5lcmF0b3IsIHN0YXRlLCB2YWx1ZSwgcmVzdW1lIG1vZGUKIAogICAgIHsKICAgICAg
ICAgQXV0b1BvcFNjb3BlUmVmIGdlbmVyYXRvckJvZHlTY29wZSh0aGlzLCBwdXNoU2NvcGUoKSk7
CkBAIC0xNzgxLDMyICsxNzgxLDMwIEBAIHN0YXRpYyBjb25zdCBjaGFyKiBzdHJpbmdGb3JGdW5j
dGlvbk1vZGUoU291cmNlUGFyc2VNb2RlIG1vZGUpCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBM
ZXhlclR5cGU+Ci10ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IHR5cGVuYW1lIFRyZWVCdWls
ZGVyOjpGb3JtYWxQYXJhbWV0ZXJMaXN0IFBhcnNlcjxMZXhlclR5cGU+OjpjcmVhdGVHZW5lcmF0
b3JQYXJhbWV0ZXJzKFRyZWVCdWlsZGVyJiBjb250ZXh0KQordGVtcGxhdGUgPGNsYXNzIFRyZWVC
dWlsZGVyPiB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6Rm9ybWFsUGFyYW1ldGVyTGlzdCBQYXJzZXI8
TGV4ZXJUeXBlPjo6Y3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhUcmVlQnVpbGRlciYgY29udGV4
dCwgdW5zaWduZWQmIHBhcmFtZXRlckNvdW50KQogewogICAgIGF1dG8gcGFyYW1ldGVycyA9IGNv
bnRleHQuY3JlYXRlRm9ybWFsUGFyYW1ldGVyTGlzdCgpOwogCiAgICAgSlNUb2tlbkxvY2F0aW9u
IGxvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CiAgICAgSlNUZXh0UG9zaXRpb24gcG9zaXRpb24g
PSB0b2tlblN0YXJ0UG9zaXRpb24oKTsKIAotICAgIC8vIEBnZW5lcmF0b3IKLSAgICBkZWNsYXJl
UGFyYW1ldGVyKCZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5nZW5lcmF0b3JQcml2YXRlTmFtZSk7Ci0g
ICAgYXV0byBnZW5lcmF0b3IgPSBjb250ZXh0LmNyZWF0ZUJpbmRpbmdMb2NhdGlvbihsb2NhdGlv
biwgbV92bS0+cHJvcGVydHlOYW1lcy0+Z2VuZXJhdG9yUHJpdmF0ZU5hbWUsIHBvc2l0aW9uLCBw
b3NpdGlvbiwgQXNzaWdubWVudENvbnRleHQ6OkRlY2xhcmF0aW9uU3RhdGVtZW50KTsKLSAgICBj
b250ZXh0LmFwcGVuZFBhcmFtZXRlcihwYXJhbWV0ZXJzLCBnZW5lcmF0b3IsIDApOworICAgIGF1
dG8gYWRkUGFyYW1ldGVyID0gWyZdKGNvbnN0IElkZW50aWZpZXImIG5hbWUpIHsKKyAgICAgICAg
ZGVjbGFyZVBhcmFtZXRlcigmbmFtZSk7CisgICAgICAgIGF1dG8gYmluZGluZyA9IGNvbnRleHQu
Y3JlYXRlQmluZGluZ0xvY2F0aW9uKGxvY2F0aW9uLCBuYW1lLCBwb3NpdGlvbiwgcG9zaXRpb24s
IEFzc2lnbm1lbnRDb250ZXh0OjpEZWNsYXJhdGlvblN0YXRlbWVudCk7CisgICAgICAgIGNvbnRl
eHQuYXBwZW5kUGFyYW1ldGVyKHBhcmFtZXRlcnMsIGJpbmRpbmcsIDApOworICAgICAgICArK3Bh
cmFtZXRlckNvdW50OworICAgIH07CiAKKyAgICAvLyBAZ2VuZXJhdG9yCisgICAgYWRkUGFyYW1l
dGVyKG1fdm0tPnByb3BlcnR5TmFtZXMtPmdlbmVyYXRvclByaXZhdGVOYW1lKTsKICAgICAvLyBA
Z2VuZXJhdG9yU3RhdGUKLSAgICBkZWNsYXJlUGFyYW1ldGVyKCZtX3ZtLT5wcm9wZXJ0eU5hbWVz
LT5nZW5lcmF0b3JTdGF0ZVByaXZhdGVOYW1lKTsKLSAgICBhdXRvIGdlbmVyYXRvclN0YXRlID0g
Y29udGV4dC5jcmVhdGVCaW5kaW5nTG9jYXRpb24obG9jYXRpb24sIG1fdm0tPnByb3BlcnR5TmFt
ZXMtPmdlbmVyYXRvclN0YXRlUHJpdmF0ZU5hbWUsIHBvc2l0aW9uLCBwb3NpdGlvbiwgQXNzaWdu
bWVudENvbnRleHQ6OkRlY2xhcmF0aW9uU3RhdGVtZW50KTsKLSAgICBjb250ZXh0LmFwcGVuZFBh
cmFtZXRlcihwYXJhbWV0ZXJzLCBnZW5lcmF0b3JTdGF0ZSwgMCk7Ci0KKyAgICBhZGRQYXJhbWV0
ZXIobV92bS0+cHJvcGVydHlOYW1lcy0+Z2VuZXJhdG9yU3RhdGVQcml2YXRlTmFtZSk7CiAgICAg
Ly8gQGdlbmVyYXRvclZhbHVlCi0gICAgZGVjbGFyZVBhcmFtZXRlcigmbV92bS0+cHJvcGVydHlO
YW1lcy0+Z2VuZXJhdG9yVmFsdWVQcml2YXRlTmFtZSk7Ci0gICAgYXV0byBnZW5lcmF0b3JWYWx1
ZSA9IGNvbnRleHQuY3JlYXRlQmluZGluZ0xvY2F0aW9uKGxvY2F0aW9uLCBtX3ZtLT5wcm9wZXJ0
eU5hbWVzLT5nZW5lcmF0b3JWYWx1ZVByaXZhdGVOYW1lLCBwb3NpdGlvbiwgcG9zaXRpb24sIEFz
c2lnbm1lbnRDb250ZXh0OjpEZWNsYXJhdGlvblN0YXRlbWVudCk7Ci0gICAgY29udGV4dC5hcHBl
bmRQYXJhbWV0ZXIocGFyYW1ldGVycywgZ2VuZXJhdG9yVmFsdWUsIDApOwotCisgICAgYWRkUGFy
YW1ldGVyKG1fdm0tPnByb3BlcnR5TmFtZXMtPmdlbmVyYXRvclZhbHVlUHJpdmF0ZU5hbWUpOwog
ICAgIC8vIEBnZW5lcmF0b3JSZXN1bWVNb2RlCi0gICAgZGVjbGFyZVBhcmFtZXRlcigmbV92bS0+
cHJvcGVydHlOYW1lcy0+Z2VuZXJhdG9yUmVzdW1lTW9kZVByaXZhdGVOYW1lKTsKLSAgICBhdXRv
IGdlbmVyYXRvclJlc3VtZU1vZGUgPSBjb250ZXh0LmNyZWF0ZUJpbmRpbmdMb2NhdGlvbihsb2Nh
dGlvbiwgbV92bS0+cHJvcGVydHlOYW1lcy0+Z2VuZXJhdG9yUmVzdW1lTW9kZVByaXZhdGVOYW1l
LCBwb3NpdGlvbiwgcG9zaXRpb24sIEFzc2lnbm1lbnRDb250ZXh0OjpEZWNsYXJhdGlvblN0YXRl
bWVudCk7Ci0gICAgY29udGV4dC5hcHBlbmRQYXJhbWV0ZXIocGFyYW1ldGVycywgZ2VuZXJhdG9y
UmVzdW1lTW9kZSwgMCk7CisgICAgYWRkUGFyYW1ldGVyKG1fdm0tPnByb3BlcnR5TmFtZXMtPmdl
bmVyYXRvclJlc3VtZU1vZGVQcml2YXRlTmFtZSk7CisgICAgLy8gQGdlbmVyYXRvckZyYW1lCisg
ICAgYWRkUGFyYW1ldGVyKG1fdm0tPnByb3BlcnR5TmFtZXMtPmdlbmVyYXRvckZyYW1lUHJpdmF0
ZU5hbWUpOwogCiAgICAgcmV0dXJuIHBhcmFtZXRlcnM7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9QYXJzZXIuaAppbmRleCBhMTFiMzVjMTAxZmU1Yjg0OWNiMjMzMDk2YzU2ODMxMzcwNjZj
YWJmLi5lNjE0OWEzYWMzNjk0MDQ4OTNkMjM2OTY5MzE2YjVjMzAzM2JlODUxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKQEAgLTEyNTksNyArMTI1OSw3IEBAIGNsYXNzIFBh
cnNlciB7CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBORVZFUl9JTkxJTkUgYm9v
bCBwYXJzZUZ1bmN0aW9uSW5mbyhUcmVlQnVpbGRlciYsIEZ1bmN0aW9uUmVxdWlyZW1lbnRzLCBT
b3VyY2VQYXJzZU1vZGUsIGJvb2wgbmFtZUlzSW5Db250YWluaW5nU2NvcGUsIENvbnN0cnVjdG9y
S2luZCwgU3VwZXJCaW5kaW5nLCBpbnQgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIFBhcnNlckZ1bmN0
aW9uSW5mbzxUcmVlQnVpbGRlcj4mLCBGdW5jdGlvbkRlZmluaXRpb25UeXBlKTsKICAgICAKICAg
ICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElORSBpbnQgcGFyc2VGdW5j
dGlvblBhcmFtZXRlcnMoVHJlZUJ1aWxkZXImLCBTb3VyY2VQYXJzZU1vZGUsIFBhcnNlckZ1bmN0
aW9uSW5mbzxUcmVlQnVpbGRlcj4mKTsKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+
IE5FVkVSX0lOTElORSB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6Rm9ybWFsUGFyYW1ldGVyTGlzdCBj
cmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKFRyZWVCdWlsZGVyJik7CisgICAgdGVtcGxhdGUgPGNs
YXNzIFRyZWVCdWlsZGVyPiBORVZFUl9JTkxJTkUgdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkZvcm1h
bFBhcmFtZXRlckxpc3QgY3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhUcmVlQnVpbGRlciYsIHVu
c2lnbmVkJiBwYXJhbWV0ZXJDb3VudCk7CiAKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxk
ZXI+IE5FVkVSX0lOTElORSBUcmVlQ2xhc3NFeHByZXNzaW9uIHBhcnNlQ2xhc3MoVHJlZUJ1aWxk
ZXImLCBGdW5jdGlvblJlcXVpcmVtZW50cywgUGFyc2VyQ2xhc3NJbmZvPFRyZWVCdWlsZGVyPiYp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93
UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhz
LmNwcAppbmRleCA3OGI0M2M0ZDM4OWZmN2E5MDgzMTNiNTU0MDU3MGU4ODJlMWIwMzcxLi5kY2Ey
ZDRlNjY2ZDA3M2NmMzkwZjYxZjI5N2NhNzM5N2IzNmM1OGQzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKQEAgLTY5NywzMyArNjk3
LDEyIEBAIHN0YXRpYyB2b2lkIHVwZGF0ZVJlc3VsdFByb2ZpbGVGb3JCaW5hcnlBcml0aE9wKEV4
ZWNTdGF0ZSosIEluc3RydWN0aW9uKiwgSlNWYWx1CiAgICAgLy8gT25seSBzYXZlIHZhcmlhYmxl
cyBhbmQgdGVtcG9yYXJ5IHJlZ2lzdGVycy4gVGhlIHNjb3BlIHJlZ2lzdGVycyBhcmUgaW5jbHVk
ZWQgaW4gdGhlbS4KICAgICAvLyBCdXQgcGFyYW1ldGVycyBhcmUgbm90IGluY2x1ZGVkLiBCZWNh
dXNlIHRoZSBnZW5lcmF0b3IgaW1wbGVtZW50YXRpb24gcmVwbGFjZXMgdGhlIHZhbHVlcyBvZiBw
YXJhbWV0ZXJzIG9uIGVhY2ggZ2VuZXJhdG9yLm5leHQoKSBjYWxsLgogICAgIEJFR0lOKCk7Ci0g
ICAgSlNWYWx1ZSBnZW5lcmF0b3IgPSBPUCgxKS5qc1ZhbHVlKCk7Ci0gICAgR2VuZXJhdG9yRnJh
bWUqIGZyYW1lID0gbnVsbHB0cjsKLSAgICBKU1ZhbHVlIHZhbHVlID0gZ2VuZXJhdG9yLmdldChl
eGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuZ2VuZXJhdG9yRnJhbWVQcml2YXRlTmFtZSk7Ci0g
ICAgaWYgKCF2YWx1ZS5pc051bGwoKSkKLSAgICAgICAgZnJhbWUgPSBqc0Nhc3Q8R2VuZXJhdG9y
RnJhbWUqPih2YWx1ZSk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIC8vIEZJWE1FOiBPbmNlIEpTR2Vu
ZXJhdG9yIHNwZWNpYWxpemVkIG9iamVjdCBpcyBpbnRyb2R1Y2VkLCB0aGlzIEdlbmVyYXRvckZy
YW1lIHNob3VsZCBiZSBlbWJlZGVkIGludG8gaXQgdG8gYXZvaWQgYWxsb2NhdGlvbnMuCi0gICAg
ICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE1NDUKLSAg
ICAgICAgZnJhbWUgPSBHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlKGV4ZWMtPnZtKCksICBleGVjLT5j
b2RlQmxvY2soKS0+bnVtQ2FsbGVlTG9jYWxzKCkpOwotICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qg
c2xvdChnZW5lcmF0b3IsIHRydWUsIFB1dFByb3BlcnR5U2xvdDo6UHV0QnlJZCk7Ci0gICAgICAg
IGFzT2JqZWN0KGdlbmVyYXRvciktPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5wdXQoYXNPYmpl
Y3QoZ2VuZXJhdG9yKSwgZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLmdlbmVyYXRvckZyYW1l
UHJpdmF0ZU5hbWUsIGZyYW1lLCBzbG90KTsKLSAgICB9CisgICAgR2VuZXJhdG9yRnJhbWUqIGZy
YW1lID0ganNDYXN0PEdlbmVyYXRvckZyYW1lKj4oT1AoMSkuanNWYWx1ZSgpKTsKICAgICB1bnNp
Z25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSBwY1syXS51LnVuc2lnbmVkVmFsdWU7CiAgICAg
ZnJhbWUtPnNhdmUoZXhlYywgZXhlYy0+Y29kZUJsb2NrKCktPmxpdmVDYWxsZWVMb2NhbHNBdFlp
ZWxkKGxpdmVDYWxsZWVMb2NhbHNJbmRleCkpOwogICAgIEVORCgpOwogfQogCi1TTE9XX1BBVEhf
REVDTChzbG93X3BhdGhfcmVzdW1lKQotewotICAgIEJFR0lOKCk7Ci0gICAgSlNWYWx1ZSBnZW5l
cmF0b3IgPSBPUCgxKS5qc1ZhbHVlKCk7Ci0gICAgR2VuZXJhdG9yRnJhbWUqIGZyYW1lID0ganND
YXN0PEdlbmVyYXRvckZyYW1lKj4oZ2VuZXJhdG9yLmdldChleGVjLCBleGVjLT5wcm9wZXJ0eU5h
bWVzKCkuZ2VuZXJhdG9yRnJhbWVQcml2YXRlTmFtZSkpOwotICAgIHVuc2lnbmVkIGxpdmVDYWxs
ZWVMb2NhbHNJbmRleCA9IHBjWzJdLnUudW5zaWduZWRWYWx1ZTsKLSAgICBmcmFtZS0+cmVzdW1l
KGV4ZWMsIGV4ZWMtPmNvZGVCbG9jaygpLT5saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZChsaXZlQ2Fs
bGVlTG9jYWxzSW5kZXgpKTsKLSAgICBFTkQoKTsKLX0KLQogU0xPV19QQVRIX0RFQ0woc2xvd19w
YXRoX2NyZWF0ZV9sZXhpY2FsX2Vudmlyb25tZW50KQogewogICAgIEJFR0lOKCk7CkBAIC03OTcs
NCArNzc2LDEyIEBAIHN0YXRpYyB2b2lkIHVwZGF0ZVJlc3VsdFByb2ZpbGVGb3JCaW5hcnlBcml0
aE9wKEV4ZWNTdGF0ZSosIEluc3RydWN0aW9uKiwgSlNWYWx1CiAgICAgRU5EKCk7CiB9CiAKK1NM
T1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9uZXdfZ2VuZXJhdG9yX2ZyYW1lKQoreworICAgIEJFR0lO
KCk7CisgICAgdW5zaWduZWQgZ2VuZXJhdG9yTG9jYWxzU2l6ZSA9IHBjWzJdLnUudW5zaWduZWRW
YWx1ZTsKKyAgICBSRVRVUk4oR2VuZXJhdG9yRnJhbWU6OmNyZWF0ZShleGVjLCBnZW5lcmF0b3JM
b2NhbHNTaXplKSk7Cit9CisKKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCmluZGV4IGYwMGQ4NzA1ZDRlNjdm
ZTRkNDA1OWJkZTE2OGVlODhmNTdkZjcyZTcuLmM3ZmZhM2RmY2M2M2IxNGJjMzhhNWRlMDZmODRj
ZjMzY2NlMzMwODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bW1vblNsb3dQYXRocy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1v
blNsb3dQYXRocy5oCkBAIC0yOTEsMTEgKzI5MSwxMSBAQCBpbmxpbmUgdm9pZCBkZWNvZGVSZXN1
bHQoU2xvd1BhdGhSZXR1cm5UeXBlIHJlc3VsdCwgdm9pZComIGEsIHZvaWQqJiBiKQogU0xPV19Q
QVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9wcm9maWxlX3R5cGVfY2xlYXJfbG9nKTsKIFNMT1df
UEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfYXNzZXJ0KTsKIFNMT1dfUEFUSF9ISURERU5fREVD
TChzbG93X3BhdGhfc2F2ZSk7Ci1TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3Jlc3Vt
ZSk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2NyZWF0ZV9sZXhpY2FsX2Vudmly
b25tZW50KTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcHVzaF93aXRoX3Njb3Bl
KTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcmVzb2x2ZV9zY29wZSk7CiBTTE9X
X1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2NvcHlfcmVzdCk7CitTTE9XX1BBVEhfSElEREVO
X0RFQ0woc2xvd19wYXRoX25ld19nZW5lcmF0b3JfZnJhbWUpOwogCiB9IC8vIG5hbWVzcGFjZSBK
U0MKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9y
RnJhbWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJhbWUu
Y3BwCmluZGV4IGVmNmVhN2ExMDAyNThjM2VjZTA0ZGFhYjQzYmRhYTg1MWVjOGY3MTUuLjBkY2I1
MTRhNDIwOTk5ZmJmNTlkZjE4YmRkZjU3YzMwYWRhNzllOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZyYW1lLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGcmFtZS5jcHAKQEAgLTMwLDE1ICszMCwxNiBA
QAogI2luY2x1ZGUgIkhlYXBJdGVyYXRpb25TY29wZS5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWVJ
bmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTT2JqZWN0
SW5saW5lcy5oIgogI2luY2x1ZGUgIlNsb3RWaXNpdG9ySW5saW5lcy5oIgogI2luY2x1ZGUgIlN0
cnVjdHVyZUlubGluZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWNvbnN0IENsYXNzSW5mbyBH
ZW5lcmF0b3JGcmFtZTo6c19pbmZvID0geyAiR2VuZXJhdG9yRnJhbWUiLCBudWxscHRyLCBudWxs
cHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEdlbmVyYXRvckZyYW1lKSB9OworY29uc3QgQ2xhc3NJ
bmZvIEdlbmVyYXRvckZyYW1lOjpzX2luZm8gPSB7ICJHZW5lcmF0b3JGcmFtZSIsICZCYXNlOjpz
X2luZm8sIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoR2VuZXJhdG9yRnJhbWUpIH07CiAK
LUdlbmVyYXRvckZyYW1lOjpHZW5lcmF0b3JGcmFtZShWTSYgdm0sIHNpemVfdCBudW1iZXJPZkNh
bGxlZUxvY2FscykKLSAgICA6IEJhc2Uodm0sIHZtLmdlbmVyYXRvckZyYW1lU3RydWN0dXJlLmdl
dCgpKQorR2VuZXJhdG9yRnJhbWU6OkdlbmVyYXRvckZyYW1lKFZNJiB2bSwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIHVpbnQzMl90IG51bWJlck9mQ2FsbGVlTG9jYWxzKQorICAgIDogQmFzZSh2bSwg
c3RydWN0dXJlKQogICAgICwgbV9udW1iZXJPZkNhbGxlZUxvY2FscyhudW1iZXJPZkNhbGxlZUxv
Y2FscykKIHsKIH0KQEAgLTQ2LDMzICs0Nyw0MiBAQAogdm9pZCBHZW5lcmF0b3JGcmFtZTo6Zmlu
aXNoQ3JlYXRpb24oVk0mIHZtKQogewogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAg
ICBKU1ZhbHVlIGVtcHR5VmFsdWU7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX251bWJl
ck9mQ2FsbGVlTG9jYWxzOyArK2kpCi0gICAgICAgIGxvY2FsQXQoaSkuY2xlYXIoKTsKKyAgICAg
ICAgbG9jYWxBdChpKS5zZXRTdGFydGluZ1ZhbHVlKGVtcHR5VmFsdWUpOwogfQogCiBTdHJ1Y3R1
cmUqIEdlbmVyYXRvckZyYW1lOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKIHsKLSAgICByZXR1cm4gU3RydWN0
dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhDZWxsVHlw
ZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0
ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVj
dHVyZUZsYWdzKSwgaW5mbygpKTsKIH0KIAotR2VuZXJhdG9yRnJhbWUqIEdlbmVyYXRvckZyYW1l
OjpjcmVhdGUoVk0mIHZtLCBzaXplX3QgbnVtYmVyT2ZMb2NhbHMpCitHZW5lcmF0b3JGcmFtZSog
R2VuZXJhdG9yRnJhbWU6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBzaXpl
X3QgbnVtYmVyT2ZDYWxsZWVMb2NhbHMpCiB7CiAgICAgR2VuZXJhdG9yRnJhbWUqIHJlc3VsdCA9
CiAgICAgICAgIG5ldyAoCiAgICAgICAgICAgICBOb3ROdWxsLAotICAgICAgICAgICAgYWxsb2Nh
dGVDZWxsPEdlbmVyYXRvckZyYW1lPih2bS5oZWFwLCBhbGxvY2F0aW9uU2l6ZUZvckxvY2Fscyhu
dW1iZXJPZkxvY2FscykpKQotICAgICAgICBHZW5lcmF0b3JGcmFtZSh2bSwgbnVtYmVyT2ZMb2Nh
bHMpOworICAgICAgICAgICAgYWxsb2NhdGVDZWxsPEdlbmVyYXRvckZyYW1lPih2bS5oZWFwLCBh
bGxvY2F0aW9uU2l6ZUZvckxvY2FscyhudW1iZXJPZkNhbGxlZUxvY2FscykpKQorICAgICAgICBH
ZW5lcmF0b3JGcmFtZSh2bSwgc3RydWN0dXJlLCBudW1iZXJPZkNhbGxlZUxvY2Fscyk7CiAgICAg
cmVzdWx0LT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorR2Vu
ZXJhdG9yRnJhbWUqIEdlbmVyYXRvckZyYW1lOjpjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBzaXpl
X3QgbnVtYmVyT2ZDYWxsZWVMb2NhbHMpCit7CisgICAgcmV0dXJuIGNyZWF0ZShleGVjLT52bSgp
LCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmdlbmVyYXRvckZyYW1lU3RydWN0dXJlKCks
IG51bWJlck9mQ2FsbGVlTG9jYWxzKTsKK30KKwogdm9pZCBHZW5lcmF0b3JGcmFtZTo6c2F2ZShF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEZhc3RCaXRWZWN0b3ImIGxpdmVDYWxsZWVMb2NhbHMpCiB7
CisgICAgLy8gQWxsb2NhdGUgdGhlIGdlbmVyYXRvciBsb2NhbCBzcGFjZSBmaXJzdC4KKyAgICBt
X251bWJlck9mU2F2ZWRDYWxsZWVMb2NhbHMgPSBsaXZlQ2FsbGVlTG9jYWxzLmJpdENvdW50KCk7
CisKICAgICAvLyBPbmx5IHNhdmUgY2FsbGVlIGxvY2Fscy4KICAgICAvLyBFdmVyeSB0aW1lIGEg
Z2VuZXJhdG9yIGlzIGNhbGxlZCAob3IgcmVzdW1lZCksIHBhcmFtZXRlcnMgc2hvdWxkIGJlIHJl
cGxhY2VkLgotICAgIEFTU0VSVChsaXZlQ2FsbGVlTG9jYWxzLm51bUJpdHMoKSA8PSBtX251bWJl
ck9mQ2FsbGVlTG9jYWxzKTsKKyAgICB1bnNpZ25lZCBnZW5lcmF0b3JMb2NhbEluZGV4ID0gMDsK
ICAgICBsaXZlQ2FsbGVlTG9jYWxzLmZvckVhY2hTZXRCaXQoWyZdKHNpemVfdCBpbmRleCkgewot
ICAgICAgICBsb2NhbEF0KGluZGV4KS5zZXQoZXhlYy0+dm0oKSwgdGhpcywgZXhlYy0+dW5jaGVj
a2VkUih2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChpbmRleCkpLmpzVmFsdWUoKSk7CisgICAgICAg
IGxvY2FsQXQoZ2VuZXJhdG9yTG9jYWxJbmRleCsrKS5zZXQoZXhlYy0+dm0oKSwgdGhpcywgZXhl
Yy0+dW5jaGVja2VkUih2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChpbmRleCkpLmpzVmFsdWUoKSk7
CiAgICAgfSk7CiB9CiAKQEAgLTgwLDEwICs5MCwxMSBAQCB2b2lkIEdlbmVyYXRvckZyYW1lOjpy
ZXN1bWUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlQ2FsbGVlTG9j
YQogewogICAgIC8vIE9ubHkgcmVzdW1lIGNhbGxlZSBsb2NhbHMuCiAgICAgLy8gRXZlcnkgdGlt
ZSBhIGdlbmVyYXRvciBpcyBjYWxsZWQgKG9yIHJlc3VtZWQpLCBwYXJhbWV0ZXJzIHNob3VsZCBi
ZSByZXBsYWNlZC4KKyAgICB1bnNpZ25lZCBnZW5lcmF0b3JMb2NhbEluZGV4ID0gMDsKICAgICBs
aXZlQ2FsbGVlTG9jYWxzLmZvckVhY2hTZXRCaXQoWyZdKHNpemVfdCBpbmRleCkgewotICAgICAg
ICBleGVjLT51bmNoZWNrZWRSKHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGluZGV4KSkgPSBsb2Nh
bEF0KGluZGV4KS5nZXQoKTsKLSAgICAgICAgbG9jYWxBdChpbmRleCkuY2xlYXIoKTsKKyAgICAg
ICAgZXhlYy0+dW5jaGVja2VkUih2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChpbmRleCkpID0gbG9j
YWxBdChnZW5lcmF0b3JMb2NhbEluZGV4KyspLmdldCgpOwogICAgIH0pOworICAgIG1fbnVtYmVy
T2ZTYXZlZENhbGxlZUxvY2FscyA9IDA7CiB9CiAKIHZvaWQgR2VuZXJhdG9yRnJhbWU6OnZpc2l0
Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKQEAgLTkxLDcgKzEw
MiwxMiBAQCB2b2lkIEdlbmVyYXRvckZyYW1lOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwg
U2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgR2VuZXJhdG9yRnJhbWUqIHRoaXNPYmplY3QgPSBq
c0Nhc3Q8R2VuZXJhdG9yRnJhbWUqPihjZWxsKTsKICAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRo
aXNPYmplY3QsIHZpc2l0b3IpOwogICAgIC8vIFNpbmNlIG9ubHkgdHJ1ZSBjZWxsIHBvaW50ZXJz
IGFyZSBzdG9yZWQgYXMgYSBjZWxsLCB3ZSBjYW4gc2FmZWx5IG1hcmsgdGhlbS4KLSAgICB2aXNp
dG9yLmFwcGVuZFZhbHVlcyh0aGlzT2JqZWN0LT5sb2NhbHMoKSwgdGhpc09iamVjdC0+bV9udW1i
ZXJPZkNhbGxlZUxvY2Fscyk7CisgICAgdmlzaXRvci5hcHBlbmRWYWx1ZXModGhpc09iamVjdC0+
bG9jYWxzKCksIHRoaXNPYmplY3QtPm1fbnVtYmVyT2ZTYXZlZENhbGxlZUxvY2Fscyk7CisgICAg
Ly8gQ2xlYXIgbm90IHVzZWQgY2FsbGVlIGxvY2FscyB3aGVuIG1hcmtpbmcuCisgICAgLy8gVGhp
cyBlbnN1cmVzIHRoYXQsICJpZiBhIGdpdmVuIGxvY2FsIGhhcyBhIHZhbHVlLCB0aGlzIHZhbHVl
IGlzIGNvcnJlY3RseSBtYXJrZWQgaW4gdGhlIHByZXZpb3VzIG1hcmtpbmcgcGhhc2UiLgorICAg
IHNpemVfdCB1bnVzZWRMb2NhbHNDb3VudCA9IHRoaXNPYmplY3QtPm1fbnVtYmVyT2ZDYWxsZWVM
b2NhbHMgLSB0aGlzT2JqZWN0LT5tX251bWJlck9mU2F2ZWRDYWxsZWVMb2NhbHM7CisgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCB1bnVzZWRMb2NhbHNDb3VudDsgKytpKQorICAgICAgICB0aGlz
T2JqZWN0LT5sb2NhbEF0KHRoaXNPYmplY3QtPm1fbnVtYmVyT2ZTYXZlZENhbGxlZUxvY2FscyAr
IGkpLmNsZWFyKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJhbWUuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZyYW1lLmgKaW5kZXggM2Q1NDViMTQ3ZGQ0YWJmYjJi
YmI5YjVhNzE5NGU4Zjc0ODQxYzQ5YS4uY2YxZGI3YTJiZWU2MGRhMjk0NjRlYzQxN2EwYzVmYjhj
MWYwYWU4YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJh
dG9yRnJhbWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JG
cmFtZS5oCkBAIC0yNywxMSArMjcsMTQgQEAKICNkZWZpbmUgR2VuZXJhdG9yRnJhbWVfaAogCiAj
aW5jbHVkZSAiSlNDZWxsLmgiCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKICNpbmNsdWRlIDx3dGYv
RmFzdEJpdFZlY3Rvci5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIAotY2xhc3MgR2VuZXJhdG9yRnJh
bWUgOiBwdWJsaWMgSlNDZWxsIHsKK2NsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKworY2xh
c3MgR2VuZXJhdG9yRnJhbWUgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAgZnJpZW5k
IGNsYXNzIEpJVDsKICNpZiBFTkFCTEUoREZHX0pJVCkKICAgICBmcmllbmQgY2xhc3MgREZHOjpT
cGVjdWxhdGl2ZUpJVDsKQEAgLTM5LDEyICs0MiwxMiBAQCBjbGFzcyBHZW5lcmF0b3JGcmFtZSA6
IHB1YmxpYyBKU0NlbGwgewogI2VuZGlmCiAgICAgZnJpZW5kIGNsYXNzIFZNOwogcHVibGljOgot
ICAgIHR5cGVkZWYgSlNDZWxsIEJhc2U7Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVj
dHVyZUZsYWdzID0gU3RydWN0dXJlSXNJbW1vcnRhbCB8IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwor
ICAgIHR5cGVkZWYgSlNOb25GaW5hbE9iamVjdCBCYXNlOwogCiAgICAgREVDTEFSRV9FWFBPUlRf
SU5GTzsKIAotICAgIHN0YXRpYyBHZW5lcmF0b3JGcmFtZSogY3JlYXRlKFZNJiwgc2l6ZV90IG51
bWJlck9mQ2FsbGVlTG9jYWxzKTsKKyAgICBzdGF0aWMgR2VuZXJhdG9yRnJhbWUqIGNyZWF0ZShF
eGVjU3RhdGUqLCBzaXplX3QgbnVtYmVyT2ZDYWxsZWVMb2NhbHMpOworICAgIHN0YXRpYyBHZW5l
cmF0b3JGcmFtZSogY3JlYXRlKFZNJiwgU3RydWN0dXJlKiwgc2l6ZV90IG51bWJlck9mQ2FsbGVl
TG9jYWxzKTsKIAogICAgIFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qIGxvY2FscygpCiAgICAg
ewpAQCAtNTMsNyArNTYsNiBAQCBjbGFzcyBHZW5lcmF0b3JGcmFtZSA6IHB1YmxpYyBKU0NlbGwg
ewogCiAgICAgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiYgbG9jYWxBdChzaXplX3QgaW5kZXgp
CiAgICAgewotICAgICAgICBBU1NFUlQoaW5kZXggPCBtX251bWJlck9mQ2FsbGVlTG9jYWxzKTsK
ICAgICAgICAgcmV0dXJuIGxvY2FscygpW2luZGV4XTsKICAgICB9CiAKQEAgLTYyLDYgKzY0LDIx
IEBAIGNsYXNzIEdlbmVyYXRvckZyYW1lIDogcHVibGljIEpTQ2VsbCB7CiAgICAgICAgIHJldHVy
biBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Y8c2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPik+
KHNpemVvZihHZW5lcmF0b3JGcmFtZSkpOwogICAgIH0KIAorICAgIHN0YXRpYyBzaXplX3QgbG9j
YWxPZmZzZXQodW5zaWduZWQgaW5kZXgpCisgICAgeworICAgICAgICByZXR1cm4gb2Zmc2V0T2ZM
b2NhbHMoKSArIGluZGV4ICogc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPik7CisgICAgfQor
CisgICAgc3RhdGljIHNpemVfdCBudW1iZXJPZkNhbGxlZUxvY2Fsc09mZnNldCgpCisgICAgewor
ICAgICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEdlbmVyYXRvckZyYW1lLCBtX251bWJlck9m
Q2FsbGVlTG9jYWxzKTsKKyAgICB9CisKKyAgICBzdGF0aWMgc2l6ZV90IG51bWJlck9mU2F2ZWRD
YWxsZWVMb2NhbHNPZmZzZXQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRP
RihHZW5lcmF0b3JGcmFtZSwgbV9udW1iZXJPZlNhdmVkQ2FsbGVlTG9jYWxzKTsKKyAgICB9CisK
ICAgICBzdGF0aWMgc2l6ZV90IGFsbG9jYXRpb25TaXplRm9yTG9jYWxzKHVuc2lnbmVkIG51bWJl
ck9mTG9jYWxzKQogICAgIHsKICAgICAgICAgcmV0dXJuIG9mZnNldE9mTG9jYWxzKCkgKyBudW1i
ZXJPZkxvY2FscyAqIHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pOwpAQCAtNzMsMTYgKzkw
LDE2IEBAIGNsYXNzIEdlbmVyYXRvckZyYW1lIDogcHVibGljIEpTQ2VsbCB7CiAgICAgdm9pZCBy
ZXN1bWUoRXhlY1N0YXRlKiwgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZUNhbGxlZUxvY2Fscyk7
CiAKIHByaXZhdGU6Ci0gICAgR2VuZXJhdG9yRnJhbWUoVk0mLCBzaXplX3QgbnVtYmVyT2ZDYWxs
ZWVMb2NhbHMpOworICAgIEdlbmVyYXRvckZyYW1lKFZNJiwgU3RydWN0dXJlKiwgdWludDMyX3Qg
bnVtYmVyT2ZDYWxsZWVMb2NhbHMpOwogCi0gICAgc2l6ZV90IG1fbnVtYmVyT2ZDYWxsZWVMb2Nh
bHM7CisgICAgdWludDMyX3QgbV9udW1iZXJPZkNhbGxlZUxvY2FsczsKKyAgICB1aW50MzJfdCBt
X251bWJlck9mU2F2ZWRDYWxsZWVMb2NhbHMgeyAwIH07CiAKICAgICBmcmllbmQgY2xhc3MgTExJ
bnRPZmZzZXRzRXh0cmFjdG9yOwogCi0gICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOwotCiBw
cm90ZWN0ZWQ6CiAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90Vmlz
aXRvciYpOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuY3BwCmluZGV4IDc2OWEzZWZiMzA0MzhkY2Q5ZGRlNDQyZGM4ODk0YTFmMDM4MmE1MDQuLjhj
Yjg0YWJlNWY4NzM5YTAxOGU2MmVhNDhmNDcxNDQ0Nzk1NTFkM2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTUwLDYgKzUwLDcg
QEAKICNpbmNsdWRlICJFcnJvclByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkZ1bmN0aW9uQ29uc3Ry
dWN0b3IuaCIKICNpbmNsdWRlICJGdW5jdGlvblByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkdlbmVy
YXRvckZyYW1lLmgiCiAjaW5jbHVkZSAiR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5oIgog
I2luY2x1ZGUgIkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiR2VuZXJh
dG9yUHJvdG90eXBlLmgiCkBAIC0zODgsNiArMzg5LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6
aW5pdChWTSYgdm0pCiAgICAgCiAgICAgRk9SX0VBQ0hfQlVJTFRJTl9ERVJJVkVEX0lURVJBVE9S
X1RZUEUoQ1JFQVRFX1BST1RPVFlQRV9GT1JfREVSSVZFRF9JVEVSQVRPUl9UWVBFKQogICAgIG1f
cHJvcGVydHlOYW1lSXRlcmF0b3JTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBKU1Byb3BlcnR5TmFt
ZUl0ZXJhdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1faXRlcmF0b3JQcm90b3R5cGUu
Z2V0KCkpKTsKKyAgICBtX2dlbmVyYXRvckZyYW1lU3RydWN0dXJlLnNldCh2bSwgdGhpcywgR2Vu
ZXJhdG9yRnJhbWU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywganNOdWxsKCkpKTsKICAgICBt
X2dlbmVyYXRvclByb3RvdHlwZS5zZXQodm0sIHRoaXMsIEdlbmVyYXRvclByb3RvdHlwZTo6Y3Jl
YXRlKHZtLCB0aGlzLCBHZW5lcmF0b3JQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhp
cywgbV9pdGVyYXRvclByb3RvdHlwZS5nZXQoKSkpKTsKICAgICAKICN1bmRlZiBDUkVBVEVfUFJP
VE9UWVBFX0ZPUl9ERVJJVkVEX0lURVJBVE9SX1RZUEUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IGI0ZmYyZmI0MTNlMGU0NDYyNDkyYTQ4
YTNmZDVhNGMyNGVhMGI3NDEuLjcxZDM5ZWM5MjgzYWQ5ZTU5MDEyNDRmMDEzNmExMzU4ZjU0NGE5
OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
aApAQCAtMjU1LDYgKzI1NSw3IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2Vn
bWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fY2Fs
bGJhY2tGdW5jdGlvblN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2Nh
bGxiYWNrT2JqZWN0U3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fcHJv
cGVydHlOYW1lSXRlcmF0b3JTdHJ1Y3R1cmU7CisgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4g
bV9nZW5lcmF0b3JGcmFtZVN0cnVjdHVyZTsKICNpZiBKU0NfT0JKQ19BUElfRU5BQkxFRAogICAg
IFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fb2JqY0NhbGxiYWNrRnVuY3Rpb25TdHJ1Y3R1cmU7
CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9vYmpjV3JhcHBlck9iamVjdFN0cnVjdHVy
ZTsKQEAgLTUwMSw2ICs1MDIsNyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1Nl
Z21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBTdHJ1Y3R1cmUqIGNhbGxiYWNrRnVuY3Rpb25T
dHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2NhbGxiYWNrRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0
KCk7IH0KICAgICBTdHJ1Y3R1cmUqIGNhbGxiYWNrT2JqZWN0U3RydWN0dXJlKCkgY29uc3QgeyBy
ZXR1cm4gbV9jYWxsYmFja09iamVjdFN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSog
cHJvcGVydHlOYW1lSXRlcmF0b3JTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3Byb3BlcnR5
TmFtZUl0ZXJhdG9yU3RydWN0dXJlLmdldCgpOyB9CisgICAgU3RydWN0dXJlKiBnZW5lcmF0b3JG
cmFtZVN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fZ2VuZXJhdG9yRnJhbWVTdHJ1Y3R1cmUu
Z2V0KCk7IH0KICNpZiBKU0NfT0JKQ19BUElfRU5BQkxFRAogICAgIFN0cnVjdHVyZSogb2JqY0Nh
bGxiYWNrRnVuY3Rpb25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX29iamNDYWxsYmFja0Z1
bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBvYmpjV3JhcHBlck9iamVj
dFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fb2JqY1dyYXBwZXJPYmplY3RTdHJ1Y3R1cmUu
Z2V0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCAwZTQ0YzM0NjBm
OWY4ZjBkY2IzNWQ5MTJkNzk1ZjdmOThkZmI3ZjQ1Li4wZWYyNWU3MjlhYTZlNTVjM2RjYTA2MWMy
MmI2NWFhNmY3YjViMzRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC0y
NDYsNyArMjQ2LDYgQEAgc3RhdGljIGJvb2wgZW5hYmxlQXNzZW1ibGVyKEV4ZWN1dGFibGVBbGxv
Y2F0b3ImIGV4ZWN1dGFibGVBbGxvY2F0b3IpCiAgICAgaW5mZXJyZWRUeXBlU3RydWN0dXJlLnNl
dCgqdGhpcywgSW5mZXJyZWRUeXBlOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgp
KSk7CiAgICAgaW5mZXJyZWRUeXBlVGFibGVTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBJbmZlcnJlZFR5
cGVUYWJsZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIGZ1bmN0
aW9uUmFyZURhdGFTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBGdW5jdGlvblJhcmVEYXRhOjpjcmVhdGVT
dHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7Ci0gICAgZ2VuZXJhdG9yRnJhbWVTdHJ1Y3R1
cmUuc2V0KCp0aGlzLCBHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBq
c051bGwoKSkpOwogICAgIGV4Y2VwdGlvblN0cnVjdHVyZS5zZXQoKnRoaXMsIEV4Y2VwdGlvbjo6
Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIHByb21pc2VEZWZlcnJl
ZFN0cnVjdHVyZS5zZXQoKnRoaXMsIEpTUHJvbWlzZURlZmVycmVkOjpjcmVhdGVTdHJ1Y3R1cmUo
KnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgaW50ZXJuYWxQcm9taXNlRGVmZXJyZWRTdHJ1Y3R1
cmUuc2V0KCp0aGlzLCBKU0ludGVybmFsUHJvbWlzZURlZmVycmVkOjpjcmVhdGVTdHJ1Y3R1cmUo
KnRoaXMsIDAsIGpzTnVsbCgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAppbmRleCBh
ZWUwYWMxZjIxYjg0NTFiYzc3Njc0NDNhMGIwNWNhMDQ4YjRmNDliLi4yMzYwODM3MGE5ODM2ZDg5
NzdlNDlkNzFlNjhhODA5YjlhYzQ1MzYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgK
QEAgLTMxMiw3ICszMTIsNiBAQCBjbGFzcyBWTSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRl
ZDxWTT4gewogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGluZmVycmVkVHlwZVN0cnVjdHVyZTsKICAg
ICBTdHJvbmc8U3RydWN0dXJlPiBpbmZlcnJlZFR5cGVUYWJsZVN0cnVjdHVyZTsKICAgICBTdHJv
bmc8U3RydWN0dXJlPiBmdW5jdGlvblJhcmVEYXRhU3RydWN0dXJlOwotICAgIFN0cm9uZzxTdHJ1
Y3R1cmU+IGdlbmVyYXRvckZyYW1lU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGV4
Y2VwdGlvblN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBwcm9taXNlRGVmZXJyZWRT
dHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gaW50ZXJuYWxQcm9taXNlRGVmZXJyZWRT
dHJ1Y3R1cmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNz
L2dlbmVyYXRvci1maWItZnRsLWFuZC1hcnJheS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwtYW5kLWFycmF5LmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZl
OTM5ODEyZmRiYWVjNmI4MzJiZmQwMGYyMTUzZGVmODRiYjc1OTIKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLWFu
ZC1hcnJheS5qcwpAQCAtMCwwICsxLDIzIEBACisoZnVuY3Rpb24gKCkgeworICAgIGZ1bmN0aW9u
ICpmaWIoKQorICAgIHsKKyAgICAgICAgbGV0IGEgPSAxOworICAgICAgICBsZXQgYiA9IDE7Cisg
ICAgICAgIGxldCBjID0gWyAwIF07CisgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAg
ICBjWzBdID0gYTsKKyAgICAgICAgICAgIHlpZWxkIGM7CisgICAgICAgICAgICBbYSwgYl0gPSBb
YiwgYSArIGJdOworICAgICAgICB9CisgICAgfQorCisgICAgbGV0IHZhbHVlID0gMDsKKyAgICBm
b3IgKGxldCBpID0gMDsgaSA8IDFlNDsgKytpKSB7CisgICAgICAgIGxldCBmID0gZmliKCk7Cisg
ICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwOyArK2kpIHsKKyAgICAgICAgICAgIHZhbHVl
ID0gZi5uZXh0KCkudmFsdWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHZhbHVlWzBdICE9PSAz
NTQyMjQ4NDgxNzkyNjIwMDAwMDApCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCB2
YWx1ZToke3Jlc3VsdH1gKTsKKyAgICB9Cit9KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQtb2JqZWN0LmpzIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQt
b2JqZWN0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY2NzM0MGYyZWE0Yzc0MzhhMmQyMDlhYTQwZDA2NzdlNGFi
N2QzZmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3Ry
ZXNzL2dlbmVyYXRvci1maWItZnRsLWFuZC1vYmplY3QuanMKQEAgLTAsMCArMSwyMyBAQAorKGZ1
bmN0aW9uICgpIHsKKyAgICBmdW5jdGlvbiAqZmliKCkKKyAgICB7CisgICAgICAgIGxldCBhID0g
MTsKKyAgICAgICAgbGV0IGIgPSAxOworICAgICAgICBsZXQgYyA9IHsgZmliOiAwIH07CisgICAg
ICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICBjLmZpYiA9IGE7CisgICAgICAgICAgICB5
aWVsZCBjOworICAgICAgICAgICAgW2EsIGJdID0gW2IsIGEgKyBiXTsKKyAgICAgICAgfQorICAg
IH0KKworICAgIGxldCB2YWx1ZSA9IDA7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxZTQ7ICsr
aSkgeworICAgICAgICBsZXQgZiA9IGZpYigpOworICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8
IDEwMDsgKytpKSB7CisgICAgICAgICAgICB2YWx1ZSA9IGYubmV4dCgpLnZhbHVlOworICAgICAg
ICB9CisgICAgICAgIGlmICh2YWx1ZS5maWIgIT09IDM1NDIyNDg0ODE3OTI2MjAwMDAwMCkKKyAg
ICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIHZhbHVlOiR7cmVzdWx0fWApOworICAgIH0K
K30oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dl
bmVyYXRvci1maWItZnRsLWFuZC1zdHJpbmcuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLWFuZC1zdHJpbmcuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDM4
YWU2YWIzMzQ3MDQ2ODIyODQ5ZjQzMDA0ZWE1YzQwM2VlZGEyOAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwtYW5k
LXN0cmluZy5qcwpAQCAtMCwwICsxLDIyIEBACisoZnVuY3Rpb24gKCkgeworICAgIGZ1bmN0aW9u
ICpmaWIoKQorICAgIHsKKyAgICAgICAgbGV0IGEgPSAxOworICAgICAgICBsZXQgYiA9IDE7Cisg
ICAgICAgIGxldCBjID0gIlJlc3VsdCEgIjsKKyAgICAgICAgd2hpbGUgKHRydWUpIHsKKyAgICAg
ICAgICAgIHlpZWxkIGMgKyBhOworICAgICAgICAgICAgW2EsIGJdID0gW2IsIGEgKyBiXTsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIGxldCB2YWx1ZSA9IDA7CisgICAgZm9yIChsZXQgaSA9IDA7
IGkgPCAxZTQ7ICsraSkgeworICAgICAgICBsZXQgZiA9IGZpYigpOworICAgICAgICBmb3IgKGxl
dCBpID0gMDsgaSA8IDEwMDsgKytpKSB7CisgICAgICAgICAgICB2YWx1ZSA9IGYubmV4dCgpLnZh
bHVlOworICAgICAgICB9CisgICAgICAgIGlmICh2YWx1ZSAhPT0gYFJlc3VsdCEgMzU0MjI0ODQ4
MTc5MjYyMDAwMDAwYCkKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIHZhbHVlOiR7
cmVzdWx0fWApOworICAgIH0KK30oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLmpzIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNDBlMzNk
YmM4NjhiZWE3YTg5M2M5ZWMxNmI3NzllYzI2YmRiMTljCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC5qcwpAQCAt
MCwwICsxLDIxIEBACisoZnVuY3Rpb24gKCkgeworICAgIGZ1bmN0aW9uICpmaWIoKQorICAgIHsK
KyAgICAgICAgbGV0IGEgPSAxOworICAgICAgICBsZXQgYiA9IDE7CisgICAgICAgIHdoaWxlICh0
cnVlKSB7CisgICAgICAgICAgICB5aWVsZCBhOworICAgICAgICAgICAgW2EsIGJdID0gW2IsIGEg
KyBiXTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGxldCB2YWx1ZSA9IDA7CisgICAgZm9yIChs
ZXQgaSA9IDA7IGkgPCAxZTQ7ICsraSkgeworICAgICAgICBsZXQgZiA9IGZpYigpOworICAgICAg
ICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDsgKytpKSB7CisgICAgICAgICAgICB2YWx1ZSA9IGYu
bmV4dCgpLnZhbHVlOworICAgICAgICB9CisgICAgICAgIGlmICh2YWx1ZSAhPT0gMzU0MjI0ODQ4
MTc5MjYyMDAwMDAwKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgdmFsdWU6JHty
ZXN1bHR9YCk7CisgICAgfQorfSgpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>269170</attachid>
            <date>2016-01-16 08:16:52 -0800</date>
            <delta_ts>2016-01-16 09:03:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-152723-20160117011622.patch</filename>
            <type>text/plain</type>
            <size>109692</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk1MDU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
ZDVkMzdhNWE2NzE2ZmQyMWY5YzRiYzhlZDg0OGZkNTlhZjU1NTgzLi4yZDZkM2UzYjQ0N2NkYjRh
M2UwY2IzNzY1YTIzOWU1OTljMGQyZjBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMzIgQEAKKzIwMTYtMDEtMTYgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgQ3JlYXRlIEdlbmVyYXRvckZyYW1lIHdpdGggdGhlIGJ5dGVjb2Rl
IG9wX25ld19nZW5lcmF0b3JfZnJhbWUgYW5kIG1ha2Ugb3Bfc2F2ZSAvIG9wX3Jlc3VtZSBERkcv
RlRMIGNhcGFibGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1MjcyMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRoaXMgcGF0Y2ggaXMgYW4gaW5pdGlhbCBhdHRlbXB0IHRvIGltcGxlbWVudCBERkcgYW5k
IEZUTCBjYXBhYmxlIEVTNiBnZW5lcmF0b3JzLgorICAgICAgICBXZSBpbnRyb2R1Y2UgdGhlIHNl
dmVyYWwgYnl0ZWNvZGVzIGFuZCBjb21waWxlIHRoZW0gaW4gREZHIC8gRlRMLgorCisgICAgICAg
IC0gb3Bfbm9wCisKKyAgICAgICAgICAgIE5vcCBvcGVyYXRpb24gaW4gdGhlIGJ5dGVjb2RlLiBU
aGlzIGlzIHVzZWQgdG8gcmVwcmVzZW50IGhvbGVzIGluIHRoZSBieXRlY29kZSBzdHJlYW0uCisg
ICAgICAgICAgICBUaGVzZSBieXRlY29kZXMgY291bGQgYmUgcmVwbGFjZWQgKFNpbWlsYXIgdG8g
dGhlIExMVk0gcGF0Y2hwb2ludCkuCisKKyAgICAgICAgLSBvcF9uZXdfZ2VuZXJhdG9yX2ZyYW1l
CisKKyAgICAgICAgICAgIEFsbG9jYXRlIEdlbmVyYXRvckZyYW1lIGluIHRoZSBieXRlY29kZSBp
bnN0ZWFkIG9mIGFsbG9jYXRpbmcgaXQgaW4gdGhlIG9wX3NhdmUuCisKKyAgICAgICAgLSBvcF9z
YXZlX2hpbnQKKworICAgICAgICAgICAgVGhpcyBpcyBwcmV2aW91cyBvcF9zYXZlLiBUaGlzIG9w
X3NhdmVfaGludCBpcyBvbmx5IHVzZWQgZm9yIHRoZSBieXRlY29kZSB1c2UtZGVmIGFuYWx5c2lz
LiBPbmNlIHRoZSBhbmFseXNpcyBpcyBkb25lIGluIENvZGVCbG9jayBjcmVhdGlvbiBwaGFzZSwK
KyAgICAgICAgICAgIHdlIHdpbGwgY29udmVydCB0aGlzIGJ5dGVjb2RlIHRvIG9wX3NhdmUuCisg
ICAgICAgICAgICBXaGlsZSBvcF9zYXZlX2hpbnQgaGFzIGEgcHNldWRvIGp1bXAgdG8gdGhlIGdl
bmVyYXRvciBjb250aW51YXRpb24gbWVyZ2UgcG9pbnQsIG9wX3NhdmUgZG9lcyBub3QgaGF2ZSBp
dC4gVGhpcyBwc2V1ZG8ganVtcCBpcyBuZWNlc3NhcnkgZm9yCisgICAgICAgICAgICB0aGUgYnl0
ZWNvZGUgdXNlLWRlZiBhbmFseXNpcy4gVGhpcyBieXRlY29kZSB1c2UtZGVmIGFuYWx5c2lzIGlz
IHVzZWQgdG8gZGlzY292ZXIgbGl2ZSB2YXJpYWJsZXMgaW4gdGhlIGdlbmVyYXRvciBjb250aW51
YXRpb24gbWVyZ2UgcG9pbnQuCisKKyAgICAgICAgICAgIFRoZSBnZW5lcmF0b3IgY29udGludWF0
aW9uIG1lcmdlIHBvaW50IGlzIHRoZSBwb2ludCB0aGF0IG1lcmdpbmcgdGhlIDIgYmFzaWMgYmxv
Y2tzLCBzYXZpbmcgbG9jYWxzIHRvIHRoZSBnZW5lcmF0b3IgZnJhbWUgYW5kIHJlc3VtaW5nIGxv
Y2FscyBmcm9tCisgICAgICAgICAgICB0aGUgZ2VuZXJhdG9yIGZyYW1lLgorCisgICAgICAgIC0g
b3Bfc2F2ZQorCisgICAgICAgICAgICBTaW1pbGFyIHRvIHRoZSBwcmV2aW91cyBvcF9zYXZlLiBJ
dCB1c2VzIGxvY2FscyBhbmQgc2F2ZXMgdGhlbSB0byB0aGUgZ2VuZXJhdG9yIGZyYW1lLiBBdCB0
aGF0IHRpbWUsIHdlIHdpbGwgc2V0IEdlbmVyYXRvckZyYW1lOjptX251bWJlck9mU2F2ZWRDYWxs
ZWVMb2NhbHMgYXMgKk4qCisgICAgICAgICAgICB0byBhbGxvY2F0ZSBzcGFjZSBmb3Igc2F2ZWQg
bG9jYWxzLgorCisgICAgICAgIC0gb3BfcmVzdW1lX2hpbnQKKworICAgICAgICAgICAgU2ltaWxh
ciB0byB0aGUgb3Bfc2F2ZV9oaW50LCB0aGlzIGlzIG9ubHkgdXNlZCBmb3IgdGhlIGJ5dGVjb2Rl
IHVzZS1kZWYgYW5hbHlzaXMuIG9wX3Jlc3VtZV9oaW50IGxlYWRzIHNldmVyYWwgb3Bfbm9wIG9w
ZXJhdGlvbnMuCisgICAgICAgICAgICBBZnRlciB0aGUgYW5hbHlzaXMsIHdlIGV4cGxvaXQgdGhl
IG5lZWRlZCBkZWZzIGZvciB0aGlzIHJlc3VtZSBwb2ludCBhbmQgcmVwbGFjZSB0aGlzIGJ5dGVj
b2RlIGFuZCBvcF9ub3Agd2l0aCBvcF9yZXN1bWVfZnJvbV9nZW5lcmF0b3JfZnJhbWUgb3BlcmF0
aW9ucy4KKyAgICAgICAgICAgIFRoaXMgbWFrZXMgREZHIFNldExvY2FsIHRyZWF0bWVudCBzaW1w
bGUuIFdoaWxlIG9wX3Jlc3VtZV9oaW50IGRlZmluZXMgbXVsdGlwbGUgbG9jYWxzLCBvcF9yZXN1
bWVfZnJvbV9nZW5lcmF0b3JfZnJhbWUgb25seSBkZWZpbmVzIG9uZSBsb2NhbCAoZHN0KS4KKwor
ICAgICAgICAtIG9wX3Jlc3VtZV9mcm9tX2dlbmVyYXRvcl9mcmFtZQorCisgICAgICAgICAgICBU
aGlzIHJldHJpZXZlcyBsb2NhbCB2YXJpYWJsZSBmcm9tIHRoZSBnZW5lcmF0b3IgZnJhbWUuIG9w
X3Jlc3VtZV9oaW50IGFuZCBzdWJzZXF1ZW50IG9wX25vcCB3aWxsIGJlIHJlcGxhY2VkIHdpdGgg
dGhpcy4KKworICAgICAgICAtIG9wX2NsZWFyX2dlbmVyYXRvcl9mcmFtZQorCisgICAgICAgICAg
ICBUaGlzIGNsZWFycyBnZW5lcmF0b3IgZnJhbWUncyBsb2NhbHMgYnkgc2V0dGluZyBHZW5lcmF0
b3JGcmFtZTo6bV9udW1iZXJPZlNhdmVkQ2FsbGVlTG9jYWxzIGFzIDAuCisKKworICAgICAgICBI
ZXJlLCB3ZSBleHBsYWluIGFib3V0IGhvdyB0byBwcmVwcm9jZXNzIGJ5dGVjb2Rlcy4KKyAgICAg
ICAgRmlyc3QsIHdlIGVtaXQgb3Bfc2F2ZV9oaW50LCBvcF9yZXN1bWVfaGludCBhbmQgb3BfY2xl
YXJfZ2VuZXJhdG9yX2ZyYW1lIGxpa2UgdGhpcy4KKworICAgICAgICBbZW50cnldIC0rLS0+IFtz
YXZlIGJsb2NrXSAtPiBvcF9zYXZlX2hpbnQgKGl0IGlzIGJyYW5jaGluZyBieXRlY29kZSkgLS0t
LS0tPiBbbWVyZ2UgYmxvY2tdIC0+IC4uLgorICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBe
CisgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKy0+
IG9wX3JldCAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgICAgICAgKy0tLS0t
LS0tLS0tLS0tLS0tLT4gb3BfcmVzdW1lX2hpbnQgLT4gb3BfY2xlYXJfZ2VuZXJhdG9yX2ZyYW1l
IC0tLS0tKworCisgICAgICAgIEFuZCBwZXJmb3JtIGJ5dGVjb2RlIHVzZS1kZWYgYW5hbHlzaXMg
b250byB0aGlzIENGRy4gQnkgc2VlaW5nIGxpdmUgbG9jYWxzIGF0IHRoZSBoZWFkIG9mIFttZXJn
ZSBibG9ja10gd2UgY2FuIGZpbmQgIndoaWNoIGxvY2FscyB3ZSBzaG91bGQgc2F2ZSBhbmQgcmVz
dW1lIi4KKyAgICAgICAgQmFzZWQgb24gdGhlIGFib3ZlIGFuYWx5c2lzIHJlc3VsdCwgd2UgcGF0
Y2ggdGhlIGJ5dGVjb2RlIHN0cmVhbSBhcyBmb2xsb3dzLgorCisgICAgICAgIFtlbnRyeV0gLSst
LT4gW3NhdmUgYmxvY2tdIC0+IG9wX3NhdmUgLT4gb3BfcmV0ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICstPiBbbWVyZ2UgYmxvY2tdIC0+IC4uLgorICAgICAgICAgICAgICAgICB8ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB8CisgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgICAg
ICAgKy0tPiBvcF9yZXN1bWVfZnJvbV9nZW5lcmF0b3JfZnJhbWUgKiBuIC0+IG9wX2NsZWFyX2dl
bmVyYXRvcl9mcmFtZSAtKworCisgICAgICAgIFdoaWxlIG9wX3Jlc3VtZV9oaW50IHdpbGwgYXR0
ZW1wdCB0byBkZWZpbmUgbXVsdGlwbGUgbG9jYWxzIGF0IGEgdGltZSwgb3BfcmVzdW1lX2Zyb21f
Z2VuZXJhdG9yX2ZyYW1lIG9ubHkgZGVmaW5lcyBvbmUgbG9jYWwuIEl0IHNpbXBsaWZpZXMgREZH
IGFuYWx5c2lzLgorCisgICAgICAgIEFuZCB3ZSBpbnRyb2R1Y2VzIHNldmVyYWwgREZHIG5vZGVz
LgorCisgICAgICAgIC0gTmV3R2VuZXJhdG9yRnJhbWUKKworICAgICAgICAgICAgVGhpcyBqdXN0
IGFsbG9jYXRlcyBHZW5lcmF0b3JGcmFtZS4KKworICAgICAgICAtIFJlc2l6ZUdlbmVyYXRvckxv
Y2FscworCisgICAgICAgICAgICBUaGlzIHNldCBHZW5lcmF0b3JGcmFtZTo6bV9udW1iZXJPZlNh
dmVkQ2FsbGVlTG9jYWxzICpOKi4gVGhpcyBub2RlIGlzIHVzZWQgdG8gKDEpIGFsbG9jYXRlIHNw
YWNlIGZvciBsb2NhbHMgaW4gR2VuZXJhdG9yRnJhbWUgYW5kICgyKSBkZWFsbG9jYXRlIHNwYWNl
IGluCisgICAgICAgICAgICBHZW5lcmF0b3JGcmFtZSBieSBzZXR0aW5nIGl0IGFzIDAuCisKKyAg
ICAgICAgLSBHZXRHZW5lcmF0b3JMb2NhbAorCisgICAgICAgICAgICBHZXQgYSBzYXZlZCBsb2Nh
bCB2YXJpYWJsZSBmcm9tIGEgZ2VuZXJhdG9yIGZyYW1lLiBHZXRHZW5lcmF0b3JMb2NhbCBhbmQg
U2V0R2VuZXJhdG9yTG9jYWwgYXJlIGxpbmtlZCB3aXRoIEdlbmVyYXRvckxvY2FsRGF0YS4gU28g
dHlwZSBwcmVkaWNhdGlvbiBhbmQgZmxhZ3MKKyAgICAgICAgICAgIGFyZSBjb3JyZWN0bHkgcHJv
cGFnYXRlZCBiZXlvbmQgdGhlIGdlbmVyYXRvciBmcmFtZS4KKworICAgICAgICAtIFNldEdlbmVy
YXRvckxvY2FsCisKKyAgICAgICAgICAgIFN0b3JlIGEgbG9jYWwgdmFyaWFibGUgdG8gYSBnZW5l
cmF0b3IgZnJhbWUuCisKKyAgICAgICAgRnV0dXJlIHBsYW5zIGFyZSB0aGUgZm9sbG93aW5ncy4K
KworICAgICAgICAxLiBTdXBwb3J0IHRyYW5zZmVycmluZyBBYnN0cmFjdFZhbHVlIGJldHdlZW4g
U2V0R2VuZXJhdG9yTG9jYWwgYW5kIEdldEdlbmVyYXRvckxvY2FsLiBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUzMTgzCisKKyAgICAgICAgMi4gQ3JlYXRlIEpTR2Vu
ZXJhdG9yIGFuZCBhbGxvY2F0ZSBpdCBpbiB0aGUgZ2VuZXJhdG9yIHdyYXBwZXIgZnVuY3Rpb24u
IFRoaXMgc2hvdWxkIGJlIGNvbXBpbGVkIGluIERGRyAvIEZUTCBhbmQKKyAgICAgICAgdGhpcyBv
YmplY3Qgc2hvdWxkIGJlIHRyYWNrZWQgKGJ5IGVzY2FwZSBhbmFseXNpcykgYW5kIGVsaW1pbmF0
ZWQgaWYgcG9zc2libGUgYnkgb2JqZWN0IGFsbG9jYXRpb24gZWxpbWluYXRpb24uCisKKyAgICAg
ICAgMy4gQW5kIG9uY2Ugd2UgZXhwbG9pdCB0aGF0IEdlbmVyYXRvckZyYW1lIGlzIG5vdCBlc2Nh
cGVkIGZyb20gdGhlIGdpdmVuIEZUTC1lZCBmdW5jdGlvbiwgd2Ugd2lsbCBlbGltaW5hdGUgR2Vu
ZXJhdG9yRnJhbWUgYWxsb2NhdGlvbiBhbmQKKyAgICAgICAgY29udmVydCBHZW5lcmF0b3JMb2Nh
bCBvcGVyYXRpb25zIGludG8gZ2V0L3NldCBsb2NhbCBvcGVyYXRpb25zLgorCisgICAgICAgICog
YnVpbHRpbnMvR2VuZXJhdG9yUHJvdG90eXBlLmpzOgorICAgICAgICAoZ2VuZXJhdG9yUmVzdW1l
KToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suY3BwOgorICAgICAgICAo
SlNDOjppc0JyYW5jaCk6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb246Cisg
ICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaDoKKyAgICAgICAgKEpTQzo6Y29tcHV0
ZVVzZXNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OmNvbXB1dGVEZWZzRm9yQnl0
ZWNvZGVPZmZzZXQpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAg
IChKU0M6OkNvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRz
LmNwcDoKKyAgICAgICAgKEpTQzo6Z2V0SnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldCk6Cisg
ICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdHZW5lcmF0b3JGcmFtZSk6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0U2F2ZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0UmVzdW1lKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuaDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRvckZyYW1l
UmVnaXN0ZXIpOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEhlYXAuaDoKKyAgICAgICAgKiBk
ZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpB
YnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHMpOgor
ICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
Qnl0ZUNvZGVQYXJzZXI6Om5ld0dlbmVyYXRvckxvY2FsRGF0YSk6CisgICAgICAgIChKU0M6OkRG
Rzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAqIGRmZy9ERkdDYXBhYmls
aXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmNhcGFiaWxpdHlMZXZlbCk6CisgICAgICAg
ICogZGZnL0RGR0Nsb2JiZXJpemUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToK
KyAgICAgICAgKiBkZmcvREZHQ2xvYmJlcnNFeGl0U3RhdGUuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OmNsb2JiZXJzRXhpdFN0YXRlKToKKyAgICAgICAgKiBkZmcvREZHRG9lc0dDLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpkb2VzR0MpOgorICAgICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5vZGUpOgorICAgICAgICAq
IGRmZy9ERkdHZW5lcmF0b3JMb2NhbERhdGEuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkRGRzo6
R2VuZXJhdG9yTG9jYWxEYXRhOjpwcmVkaWN0KToKKyAgICAgICAgKEpTQzo6REZHOjpHZW5lcmF0
b3JMb2NhbERhdGE6OnByZWRpY3Rpb24pOgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5oOgorICAg
ICAgICAqIGRmZy9ERkdNYXlFeGl0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjptYXlFeGl0KToK
KyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc0dl
bmVyYXRvckxvY2Fsc1NpemUpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmdlbmVyYXRvckxv
Y2Fsc1NpemUpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc0dlbmVyYXRvckxvY2FsSW5k
ZXgpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmdlbmVyYXRvckxvY2FsSW5kZXgpOgorICAg
ICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc0dlbmVyYXRvckxvY2FsRGF0YSk6CisgICAgICAgIChK
U0M6OkRGRzo6Tm9kZTo6Z2VuZXJhdG9yTG9jYWxEYXRhKToKKyAgICAgICAgKEpTQzo6REZHOjpO
b2RlOjpoYXNHZW5lcmF0b3JGcmFtZUxvY2Fscyk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6
Z2VuZXJhdG9yRnJhbWVMb2NhbHMpOgorICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAg
ICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9u
cy5oOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2U6OnByb3BhZ2F0ZSk6
CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpz
YWZlVG9FeGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3R2VuZXJhdG9yRnJhbWUp
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUmVzaXplR2VuZXJh
dG9yTG9jYWxzKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAg
KiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAg
ICAgICogZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBk
ZmcvREZHU3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OlN0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlOjpydW4pOgorICAgICAgICAqIGZ0bC9GVExBYnN0
cmFjdEhlYXBSZXBvc2l0b3J5LmNwcDoKKyAgICAgICAgKiBmdGwvRlRMQWJzdHJhY3RIZWFwUmVw
b3NpdG9yeS5oOgorICAgICAgICAqIGZ0bC9GVExDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAo
SlNDOjpGVEw6OmNhbkNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvTExWTS5j
cHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZU5vZGUp
OgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVSZXNpemVH
ZW5lcmF0b3JMb2NhbHMpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0xMVk06
OmNvbXBpbGVTZXRHZW5lcmF0b3JMb2NhbCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dl
ckRGR1RvTExWTTo6Y29tcGlsZUdldEdlbmVyYXRvckxvY2FsKToKKyAgICAgICAgKEpTQzo6RlRM
OjpERkc6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlTmV3R2VuZXJhdG9yRnJhbWUpOgorICAgICAg
ICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlTWFpblBh
c3MpOgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUT3Bjb2Rlcy5jcHA6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9yZXN1bWVfZnJvbV9nZW5lcmF0b3JfZnJhbWUp
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfY2xlYXJfZ2VuZXJhdG9yX2ZyYW1lKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0X29wX25ld19nZW5lcmF0b3JfZnJhbWUpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRfb3Bfbm9wKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3Jlc3Vt
ZSk6IERlbGV0ZWQuCisgICAgICAgICogaml0L0pJVE9wY29kZXMzMl82NC5jcHA6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdF9vcF9yZXN1bWVfZnJvbV9nZW5lcmF0b3JfZnJhbWUpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRfb3BfY2xlYXJfZ2VuZXJhdG9yX2ZyYW1lKToKKyAgICAgICAgKiBs
bGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwOgorICAgICAgICAqIGxsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXIuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82
NC5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbToKKyAgICAg
ICAgKiBwYXJzZXIvUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46
OnBhcnNlSW5uZXIpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VHZW5l
cmF0b3JGdW5jdGlvblNvdXJjZUVsZW1lbnRzKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVy
VHlwZT46OmNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMpOgorICAgICAgICAqIHBhcnNlci9QYXJz
ZXIuaDoKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHA6CisgICAgICAgIChK
U0M6OlNMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5o
OgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJhdG9yRnJhbWUuY3BwOgorICAgICAgICAoSlNDOjpH
ZW5lcmF0b3JGcmFtZTo6R2VuZXJhdG9yRnJhbWUpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JG
cmFtZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6Y3Jl
YXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OmNyZWF0ZSk6Cisg
ICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpzYXZlKToKKyAgICAgICAgKEpTQzo6R2VuZXJh
dG9yRnJhbWU6OnJlc3VtZSk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjp2aXNpdENo
aWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL0dlbmVyYXRvckZyYW1lLmg6CisgICAgICAgIChK
U0M6OkdlbmVyYXRvckZyYW1lOjpsb2NhbE9mZnNldCk6CisgICAgICAgIChKU0M6OkdlbmVyYXRv
ckZyYW1lOjpudW1iZXJPZkNhbGxlZUxvY2Fsc09mZnNldCk6CisgICAgICAgIChKU0M6OkdlbmVy
YXRvckZyYW1lOjpudW1iZXJPZlNhdmVkQ2FsbGVlTG9jYWxzT2Zmc2V0KToKKyAgICAgICAgKEpT
Qzo6R2VuZXJhdG9yRnJhbWU6OmxvY2FsQXQpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUv
SlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6
CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDOjpKU0ds
b2JhbE9iamVjdDo6Z2VuZXJhdG9yRnJhbWVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUv
Vk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6Vk0pOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRp
bWUvVk0uaDoKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwtYW5kLWFy
cmF5LmpzOiBBZGRlZC4KKyAgICAgICAgKGZpYik6CisgICAgICAgICogdGVzdHMvc3RyZXNzL2dl
bmVyYXRvci1maWItZnRsLWFuZC1vYmplY3QuanM6IEFkZGVkLgorICAgICAgICAoZmliKToKKyAg
ICAgICAgKiB0ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwtYW5kLXN0cmluZy5qczogQWRk
ZWQuCisgICAgICAgIChmaWIpOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmli
LWZ0bC5qczogQWRkZWQuCisgICAgICAgIChmaWIpOgorCiAyMDE2LTAxLTEzICBDYXJsb3MgR2Fy
Y2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbQ01ha2VdIERvIG5v
dCB1c2UgTExWTSBzdGF0aWMgbGlicmFyaWVzIGZvciBGVEwgSklUCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvR2VuZXJhdG9yUHJvdG90eXBlLmpzIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0dlbmVyYXRvclByb3RvdHlwZS5qcwppbmRleCBhM2Ji
YzM1MzRhZTA1MmY0ZDZmYTI1YmRlNzAzYzkzZDNhNzk1ZTExLi40OWRkYmY5Yzg0NjkzMzA2NTg3
MTFmMThlNzIxNDliYzk4MjJkYTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YnVpbHRpbnMvR2VuZXJhdG9yUHJvdG90eXBlLmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9idWlsdGlucy9HZW5lcmF0b3JQcm90b3R5cGUuanMKQEAgLTU4LDcgKzU4LDcgQEAgZnVuY3Rp
b24gZ2VuZXJhdG9yUmVzdW1lKGdlbmVyYXRvciwgc2VudFZhbHVlLCByZXN1bWVNb2RlKQogICAg
IH0gZWxzZSB7CiAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICBnZW5lcmF0b3IuQGdlbmVyYXRv
clN0YXRlID0gRXhlY3V0aW5nOwotICAgICAgICAgICAgdmFsdWUgPSBnZW5lcmF0b3IuQGdlbmVy
YXRvck5leHQuQGNhbGwoZ2VuZXJhdG9yLkBnZW5lcmF0b3JUaGlzLCBnZW5lcmF0b3IsIHN0YXRl
LCBzZW50VmFsdWUsIHJlc3VtZU1vZGUpOworICAgICAgICAgICAgdmFsdWUgPSBnZW5lcmF0b3Iu
QGdlbmVyYXRvck5leHQuQGNhbGwoZ2VuZXJhdG9yLkBnZW5lcmF0b3JUaGlzLCBnZW5lcmF0b3Is
IHN0YXRlLCBzZW50VmFsdWUsIHJlc3VtZU1vZGUsIGdlbmVyYXRvci5AZ2VuZXJhdG9yRnJhbWUp
OwogICAgICAgICAgICAgaWYgKGdlbmVyYXRvci5AZ2VuZXJhdG9yU3RhdGUgPT09IEV4ZWN1dGlu
ZykgewogICAgICAgICAgICAgICAgIGdlbmVyYXRvci5AZ2VuZXJhdG9yU3RhdGUgPSBDb21wbGV0
ZWQ7CiAgICAgICAgICAgICAgICAgZG9uZSA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suY3BwCmluZGV4IDdmMTdjMGVm
MTBiNDMzZmFjOGY1OGNiM2I5Y2E1ZDRkMDE1YmJhMDguLjVhYTE4ZTRjYWY3YTU3NWRkNjQ1ZDZm
NmVkNzk3MjhhZjczYmQyNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZUJhc2ljQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suY3BwCkBAIC01OCw3ICs1OCw3IEBAIHN0YXRpYyBi
b29sIGlzQnJhbmNoKE9wY29kZUlEIG9wY29kZUlEKQogICAgIGNhc2Ugb3Bfc3dpdGNoX2ltbToK
ICAgICBjYXNlIG9wX3N3aXRjaF9jaGFyOgogICAgIGNhc2Ugb3Bfc3dpdGNoX3N0cmluZzoKLSAg
ICBjYXNlIG9wX3NhdmU6CisgICAgY2FzZSBvcF9zYXZlX2hpbnQ6CiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbiBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgppbmRleCAwNTNiOGRjOWI4
NjRmMWI4NmI0Y2VjN2FhNjAxZjdjZTJmMDNmMmU0Li4wOGFhYzEyMjU5YzY4ZGEwZTFhYmM5MDkw
YmU1NGM5NTVmYjMzMDA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVMaXN0Lmpzb24KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlTGlzdC5qc29uCkBAIC0xNiw2ICsxNiw3IEBACiAgICAgICAgICAgICB7ICJuYW1l
IiA6ICJvcF9uZXdfYXJyYXlfd2l0aF9zaXplIiwgImxlbmd0aCIgOiA0IH0sCiAgICAgICAgICAg
ICB7ICJuYW1lIiA6ICJvcF9uZXdfYXJyYXlfYnVmZmVyIiwgImxlbmd0aCIgOiA1IH0sCiAgICAg
ICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXdfcmVnZXhwIiwgImxlbmd0aCIgOiAzIH0sCisgICAg
ICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXdfZ2VuZXJhdG9yX2ZyYW1lIiwgImxlbmd0aCIgOiAz
IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9tb3YiLCAibGVuZ3RoIiA6IDMgfSwKICAg
ICAgICAgICAgIHsgIm5hbWUiIDogIm9wX25vdCIsICJsZW5ndGgiIDogMyB9LAogICAgICAgICAg
ICAgeyAibmFtZSIgOiAib3BfZXEiLCAibGVuZ3RoIiA6IDQgfSwKQEAgLTEzNCw3ICsxMzUsMTEg
QEAKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2NvcHlfcmVzdCIsICJsZW5ndGgiOiA0IH0s
CiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9nZXRfcmVzdF9sZW5ndGgiLCAibGVuZ3RoIjog
MyB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3Bfc2F2ZSIsICJsZW5ndGgiIDogNCB9LAot
ICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfcmVzdW1lIiwgImxlbmd0aCIgOiAzIH0sCisgICAg
ICAgICAgICB7ICJuYW1lIiA6ICJvcF9zYXZlX2hpbnQiLCAibGVuZ3RoIiA6IDQgfSwKKyAgICAg
ICAgICAgIHsgIm5hbWUiIDogIm9wX3Jlc3VtZV9oaW50IiwgImxlbmd0aCIgOiA0IH0sCisgICAg
ICAgICAgICB7ICJuYW1lIiA6ICJvcF9yZXN1bWVfZnJvbV9nZW5lcmF0b3JfZnJhbWUiLCAibGVu
Z3RoIiA6IDQgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2NsZWFyX2dlbmVyYXRvcl9m
cmFtZSIsICJsZW5ndGgiIDogMiB9LAorICAgICAgICAgICAgeyAibmFtZSIgOiAib3Bfbm9wIiwg
Imxlbmd0aCIgOiAxIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF93YXRjaGRvZyIsICJs
ZW5ndGgiIDogMSB9CiAgICAgICAgIF0KICAgICB9LApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaAppbmRleCA4MDExMTRjMzcyYTI3N2Y2ZTE3NzA5
YjkwYmUyMDdjOGY5OWJlODJkLi5kYWVmODFjMjY5YmI1NDE1NGVhNmI2ZGM4MzhhZmM2OWNlZTcy
Yzk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVV
c2VEZWYuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VE
ZWYuaApAQCAtNTUsNiArNTUsOCBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQo
CiAgICAgY2FzZSBvcF9jcmVhdGVfb3V0X29mX2JhbmRfYXJndW1lbnRzOgogICAgIGNhc2Ugb3Bf
Z2V0X3Jlc3RfbGVuZ3RoOgogICAgIGNhc2Ugb3Bfd2F0Y2hkb2c6CisgICAgY2FzZSBvcF9uZXdf
Z2VuZXJhdG9yX2ZyYW1lOgorICAgIGNhc2Ugb3Bfbm9wOgogICAgICAgICByZXR1cm47CiAgICAg
Y2FzZSBvcF9hc3NlcnQ6CiAgICAgY2FzZSBvcF9nZXRfc2NvcGU6CkBAIC03Miw3ICs3NCw4IEBA
IHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCgKICAgICBjYXNlIG9wX2puZXFfbnVs
bDoKICAgICBjYXNlIG9wX2RlYzoKICAgICBjYXNlIG9wX2luYzoKLSAgICBjYXNlIG9wX3Jlc3Vt
ZTogeworICAgIGNhc2Ugb3BfcmVzdW1lX2hpbnQ6CisgICAgY2FzZSBvcF9jbGVhcl9nZW5lcmF0
b3JfZnJhbWU6IHsKICAgICAgICAgQVNTRVJUKG9wY29kZUxlbmd0aHNbb3Bjb2RlSURdID49IDEp
OwogICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBpbnN0
cnVjdGlvblsxXS51Lm9wZXJhbmQpOwogICAgICAgICByZXR1cm47CkBAIC0xNjUsNyArMTY4LDgg
QEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAogICAgIGNhc2Ugb3BfbmV3X2dl
bmVyYXRvcl9mdW5jOgogICAgIGNhc2Ugb3BfZ2V0X3BhcmVudF9zY29wZToKICAgICBjYXNlIG9w
X2NyZWF0ZV9zY29wZWRfYXJndW1lbnRzOgotICAgIGNhc2Ugb3BfZ2V0X2Zyb21fYXJndW1lbnRz
OiB7CisgICAgY2FzZSBvcF9nZXRfZnJvbV9hcmd1bWVudHM6CisgICAgY2FzZSBvcF9yZXN1bWVf
ZnJvbV9nZW5lcmF0b3JfZnJhbWU6IHsKICAgICAgICAgQVNTRVJUKG9wY29kZUxlbmd0aHNbb3Bj
b2RlSURdID49IDIpOwogICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9w
Y29kZUlELCBpbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpOwogICAgICAgICByZXR1cm47CkBAIC0y
NTAsNyArMjU0LDcgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAogICAgICAg
ICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgbGFzdEFyZyAr
IGkpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGNhc2Ugb3Bfc2F2ZTogeworICAgIGNh
c2Ugb3Bfc2F2ZV9oaW50OiB7CiAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlv
biwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CiAgICAgICAgIHVuc2lnbmVk
IG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldCA9IGJ5dGVjb2RlT2Zmc2V0ICsgaW5zdHJ1Y3Rpb25b
M10udS5vcGVyYW5kOwogICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIG1lcmdlUG9pbnRCbG9j
ayA9IG51bGxwdHI7CkBAIC0yNjYsNiArMjcwLDE1IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRl
Y29kZU9mZnNldCgKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CisgICAgY2Fz
ZSBvcF9zYXZlOiB7CisgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bj
b2RlSUQsIGluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CisgICAgICAgIHVuc2lnbmVkIGxpdmVD
YWxsZWVMb2NhbHNJbmRleCA9IGluc3RydWN0aW9uWzJdLnUudW5zaWduZWRWYWx1ZTsKKyAgICAg
ICAgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZW5lc3MgPSBjb2RlQmxvY2stPmxpdmVDYWxsZWVM
b2NhbHNBdFlpZWxkKGxpdmVDYWxsZWVMb2NhbHNJbmRleCk7CisgICAgICAgIGxpdmVuZXNzLmZv
ckVhY2hTZXRCaXQoWyZdKHVuc2lnbmVkIGxvY2FsKSB7CisgICAgICAgICAgICBmdW5jdG9yKGNv
ZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChs
b2NhbCkub2Zmc2V0KCkpOworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KICAg
ICBkZWZhdWx0OgogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAg
ICBicmVhazsKQEAgLTI4OSw2ICszMDIsNyBAQCB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVP
ZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvYwogICAg
IGNhc2Ugb3BfdGhyb3c6CiAgICAgY2FzZSBvcF90aHJvd19zdGF0aWNfZXJyb3I6CiAgICAgY2Fz
ZSBvcF9zYXZlOgorICAgIGNhc2Ugb3Bfc2F2ZV9oaW50OgogICAgIGNhc2Ugb3BfYXNzZXJ0Ogog
ICAgIGNhc2Ugb3BfZGVidWc6CiAgICAgY2FzZSBvcF9yZXQ6CkBAIC0zMjMsNiArMzM3LDggQEAg
dm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBC
eXRlY29kZUJhc2ljQmxvY2sqIGJsb2MKICAgICBjYXNlIG9wX3Byb2ZpbGVfY29udHJvbF9mbG93
OgogICAgIGNhc2Ugb3BfcHV0X3RvX2FyZ3VtZW50czoKICAgICBjYXNlIG9wX3dhdGNoZG9nOgor
ICAgIGNhc2Ugb3BfY2xlYXJfZ2VuZXJhdG9yX2ZyYW1lOgorICAgIGNhc2Ugb3Bfbm9wOgogI2Rl
ZmluZSBMTElOVF9IRUxQRVJfT1BDT0RFUyhvcGNvZGUsIGxlbmd0aCkgY2FzZSBvcGNvZGU6CiAg
ICAgICAgIEZPUl9FQUNIX0xMSU5UX09QQ09ERV9FWFRFTlNJT04oTExJTlRfSEVMUEVSX09QQ09E
RVMpOwogI3VuZGVmIExMSU5UX0hFTFBFUl9PUENPREVTCkBAIC00MTUsNyArNDMxLDkgQEAgdm9p
ZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRl
Y29kZUJhc2ljQmxvY2sqIGJsb2MKICAgICBjYXNlIG9wX2RlbF9ieV92YWw6CiAgICAgY2FzZSBv
cF91bnNpZ25lZDoKICAgICBjYXNlIG9wX2dldF9mcm9tX2FyZ3VtZW50czogCi0gICAgY2FzZSBv
cF9nZXRfcmVzdF9sZW5ndGg6IHsKKyAgICBjYXNlIG9wX2dldF9yZXN0X2xlbmd0aDoKKyAgICBj
YXNlIG9wX25ld19nZW5lcmF0b3JfZnJhbWU6CisgICAgY2FzZSBvcF9yZXN1bWVfZnJvbV9nZW5l
cmF0b3JfZnJhbWU6IHsKICAgICAgICAgQVNTRVJUKG9wY29kZUxlbmd0aHNbb3Bjb2RlSURdID4g
MSk7CiAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGlu
c3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CiAgICAgICAgIHJldHVybjsKQEAgLTQzMSw3ICs0NDks
NyBAQCB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvYwogICAgICAgICAgICAgZnVuY3Rvcihjb2RlQmxv
Y2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaSkub2Zm
c2V0KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGNhc2Ugb3BfcmVzdW1lOiB7Cisg
ICAgY2FzZSBvcF9yZXN1bWVfaGludDogewogICAgICAgICBSRUxFQVNFX0FTU0VSVChibG9jay0+
c3VjY2Vzc29ycygpLnNpemUoKSA9PSAxKTsKICAgICAgICAgYmxvY2stPnN1Y2Nlc3NvcnMoKVsw
XS0+aW4oKS5mb3JFYWNoU2V0Qml0KFsmXSh1bnNpZ25lZCBsb2NhbCkgewogICAgICAgICAgICAg
ZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgdmlydHVhbFJlZ2lzdGVy
Rm9yTG9jYWwobG9jYWwpLm9mZnNldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5jcHAKaW5kZXggNTkwNWU5MTgzYzhmMTI2NjRlMmJhM2RkMjlhNWM0NjU2
NzY4ZGMwMy4uZGEzZTU4ZDAxNmJkYmUwZmY2NzcxYjBjMmZiYWI5MTgyNGI2NTZlMCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTE1NTYsMjcg
KzE1NTYsNjMgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZSgKICAgICAgICAgICAgIG91
dC5wcmludGYoIiVzLCAlZCIsIGRlYnVnSG9va05hbWUoZGVidWdIb29rSUQpLCBoYXNCcmVha3Bv
aW50RmxhZyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBjYXNlIG9w
X3NhdmU6IHsKLSAgICAgICAgICAgIGludCBnZW5lcmF0b3IgPSAoKytpdCktPnUub3BlcmFuZDsK
KyAgICAgICAgY2FzZSBvcF9zYXZlX2hpbnQ6IHsKKyAgICAgICAgICAgIGludCBmcmFtZSA9ICgr
K2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0lu
ZGV4ID0gKCsraXQpLT51LnVuc2lnbmVkVmFsdWU7CiAgICAgICAgICAgICBpbnQgb2Zmc2V0ID0g
KCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZl
bmVzcyA9IG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGRbbGl2ZUNhbGxlZUxv
Y2Fsc0luZGV4XTsKICAgICAgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxv
Y2F0aW9uLCBpdCwgInNhdmUiKTsKLSAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAiLCByZWdp
c3Rlck5hbWUoZ2VuZXJhdG9yKS5kYXRhKCkpOworICAgICAgICAgICAgb3V0LnByaW50ZigiJXMs
ICIsIHJlZ2lzdGVyTmFtZShmcmFtZSkuZGF0YSgpKTsKICAgICAgICAgICAgIGxpdmVuZXNzLmR1
bXAob3V0KTsKICAgICAgICAgICAgIG91dC5wcmludGYoIihAbGl2ZSUxdSksICVkKC0+JWQpIiwg
bGl2ZUNhbGxlZUxvY2Fsc0luZGV4LCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIGNhc2Ugb3BfcmVzdW1lOiB7Ci0gICAg
ICAgICAgICBpbnQgZ2VuZXJhdG9yID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIGNhc2Ug
b3Bfc2F2ZTogeworICAgICAgICAgICAgaW50IGZyYW1lID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAg
ICAgICAgICAgICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSAoKytpdCktPnUudW5z
aWduZWRWYWx1ZTsKKyAgICAgICAgICAgICsraXQ7IC8vIGRpc2NhcmQgb2Zmc2V0LgogICAgICAg
ICAgICAgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZW5lc3MgPSBtX3JhcmVEYXRhLT5tX2xpdmVD
YWxsZWVMb2NhbHNBdFlpZWxkW2xpdmVDYWxsZWVMb2NhbHNJbmRleF07Ci0gICAgICAgICAgICBw
cmludExvY2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJyZXN1bWUiKTsKLSAg
ICAgICAgICAgIG91dC5wcmludGYoIiVzLCAiLCByZWdpc3Rlck5hbWUoZ2VuZXJhdG9yKS5kYXRh
KCkpOworICAgICAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24s
IGl0LCAic2F2ZSIpOworICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICIsIHJlZ2lzdGVyTmFt
ZShmcmFtZSkuZGF0YSgpKTsKICAgICAgICAgICAgIGxpdmVuZXNzLmR1bXAob3V0KTsKICAgICAg
ICAgICAgIG91dC5wcmludGYoIihAbGl2ZSUxdSkiLCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9yZXN1bWVfaGlu
dDogeworICAgICAgICAgICAgaW50IGZyYW1lID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAg
ICAgICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSAoKytpdCktPnUudW5zaWduZWRW
YWx1ZTsKKyAgICAgICAgICAgIHVuc2lnbmVkIG1heExpdmVDYWxsZWVzID0gKCsraXQpLT51LnVu
c2lnbmVkVmFsdWU7CisgICAgICAgICAgICBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlbmVzcyA9
IG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGRbbGl2ZUNhbGxlZUxvY2Fsc0lu
ZGV4XTsKKyAgICAgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9u
LCBpdCwgInJlc3VtZSIpOworICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICIsIHJlZ2lzdGVy
TmFtZShmcmFtZSkuZGF0YSgpKTsKKyAgICAgICAgICAgIGxpdmVuZXNzLmR1bXAob3V0KTsKKyAg
ICAgICAgICAgIG91dC5wcmludGYoIihAbGl2ZSUxdSksICV1IiwgbGl2ZUNhbGxlZUxvY2Fsc0lu
ZGV4LCBtYXhMaXZlQ2FsbGVlcyk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAg
ICAgICBjYXNlIG9wX3Jlc3VtZV9mcm9tX2dlbmVyYXRvcl9mcmFtZTogeworICAgICAgICAgICAg
aW50IGRzdCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgaW50IGZyYW1lID0gKCsr
aXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICB1bnNpZ25lZCBpbmRleCA9ICgrK2l0KS0+dS51
bnNpZ25lZFZhbHVlOworICAgICAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywg
bG9jYXRpb24sIGl0LCAicmVzdW1lX2Zyb21fZ2VuZXJhdG9yX2ZyYW1lIik7CisgICAgICAgICAg
ICBvdXQucHJpbnRmKCIlcywgJXMsICV1IiwgcmVnaXN0ZXJOYW1lKGRzdCkuZGF0YSgpLCByZWdp
c3Rlck5hbWUoZnJhbWUpLmRhdGEoKSwgaW5kZXgpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0KKyAgICAgICAgY2FzZSBvcF9jbGVhcl9nZW5lcmF0b3JfZnJhbWU6IHsKKyAgICAgICAg
ICAgIGludCBmcmFtZSA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgcHJpbnRMb2Nh
dGlvbk9wQW5kUmVnaXN0ZXJPcGVyYW5kKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAiY2xlYXJf
Z2VuZXJhdG9yX2ZyYW1lIiwgZnJhbWUpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0K
KyAgICAgICAgY2FzZSBvcF9uZXdfZ2VuZXJhdG9yX2ZyYW1lOiB7CisgICAgICAgICAgICBpbnQg
ZHN0ID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICB1bnNpZ25lZCBnZW5lcmF0b3JM
b2NhbHNTaXplID0gKCsraXQpLT51LnVuc2lnbmVkVmFsdWU7CisgICAgICAgICAgICBwcmludExv
Y2F0aW9uT3BBbmRSZWdpc3Rlck9wZXJhbmQob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJuZXdf
Z2VuZXJhdG9yX2ZyYW1lIiwgZHN0KTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIiAldSIsIGdl
bmVyYXRvckxvY2Fsc1NpemUpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAg
ICAgY2FzZSBvcF9ub3A6IHsKKyAgICAgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGV4
ZWMsIGxvY2F0aW9uLCBpdCwgIm5vcCIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0K
ICAgICAgICAgY2FzZSBvcF9hc3NlcnQ6IHsKICAgICAgICAgICAgIGludCBjb25kaXRpb24gPSAo
KytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBsaW5lID0gKCsraXQpLT51Lm9wZXJh
bmQ7CkBAIC0xODQ3LDYgKzE4ODMsMTIgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9u
KFZNJiB2bSwgQ29weVBhcnNlZEJsb2NrVGFnLCBDb2RlQmxvY2smIG90aGVyKQogICAgIHNldE51
bVBhcmFtZXRlcnModW5saW5rZWRDb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSk7CiB9CiAKK3N0
cnVjdCBHZW5lcmF0b3JQb2ludHMgeworICAgIHNpemVfdCBzYXZlUG9pbnQ7CisgICAgc2l6ZV90
IG1lcmdlUG9pbnQ7CisgICAgc2l6ZV90IHJlc3VtZVBvaW50OworfTsKKwogdm9pZCBDb2RlQmxv
Y2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRh
YmxlLCBVbmxpbmtlZENvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2ssCiAgICAgSlNTY29wZSog
c2NvcGUpCiB7CkBAIC0xOTgwLDkgKzIwMjIsMTAgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmlzaENy
ZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsK
ICAgICBIYXNoU2V0PEpTTW9kdWxlRW52aXJvbm1lbnQqPiBzdHJvbmdseVJlZmVyZW5jZWRNb2R1
bGVFbnZpcm9ubWVudHM7CiAKICAgICAvLyBCb29ra2VlcCB0aGUgbWVyZ2UgcG9pbnQgYnl0ZWNv
ZGUgb2Zmc2V0cy4KLSAgICBWZWN0b3I8c2l6ZV90PiBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXRz
OworICAgIFZlY3RvcjxHZW5lcmF0b3JQb2ludHM+IGdlbmVyYXRvclBvaW50c1ZlY3RvcjsKIAog
ICAgIFJlZkNvdW50ZWRBcnJheTxJbnN0cnVjdGlvbj4gaW5zdHJ1Y3Rpb25zKGluc3RydWN0aW9u
Q291bnQpOworICAgIHVuc2lnbmVkIG5ld0dlbmVyYXRvckZyYW1lSW5zdHJ1Y3Rpb25PZmZzZXQg
PSAwOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgIWluc3RydWN0aW9uUmVhZGVyLmF0RW5k
KCk7ICkgewogICAgICAgICBjb25zdCBVbmxpbmtlZEluc3RydWN0aW9uKiBwYyA9IGluc3RydWN0
aW9uUmVhZGVyLm5leHQoKTsKQEAgLTIyNzAsMTIgKzIzMTMsMjYgQEAgdm9pZCBDb2RlQmxvY2s6
OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxl
LCBVbmxpbmsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKLSAgICAgICAgY2FzZSBv
cF9zYXZlOiB7CisgICAgICAgIGNhc2Ugb3Bfc2F2ZV9oaW50OiB7CiAgICAgICAgICAgICB1bnNp
Z25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSBwY1syXS51LmluZGV4OwogICAgICAgICAgICAg
aW50IG9mZnNldCA9IHBjWzNdLnUub3BlcmFuZDsKLSAgICAgICAgICAgIGlmIChsaXZlQ2FsbGVl
TG9jYWxzSW5kZXggPj0gbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0cy5zaXplKCkpCi0gICAgICAg
ICAgICAgICAgbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0cy5yZXNpemUobGl2ZUNhbGxlZUxvY2Fs
c0luZGV4ICsgMSk7Ci0gICAgICAgICAgICBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXRzW2xpdmVD
YWxsZWVMb2NhbHNJbmRleF0gPSBpICsgb2Zmc2V0OworICAgICAgICAgICAgaWYgKGxpdmVDYWxs
ZWVMb2NhbHNJbmRleCA+PSBnZW5lcmF0b3JQb2ludHNWZWN0b3Iuc2l6ZSgpKQorICAgICAgICAg
ICAgICAgIGdlbmVyYXRvclBvaW50c1ZlY3Rvci5yZXNpemUobGl2ZUNhbGxlZUxvY2Fsc0luZGV4
ICsgMSk7CisgICAgICAgICAgICBnZW5lcmF0b3JQb2ludHNWZWN0b3JbbGl2ZUNhbGxlZUxvY2Fs
c0luZGV4XS5zYXZlUG9pbnQgPSBpOworICAgICAgICAgICAgZ2VuZXJhdG9yUG9pbnRzVmVjdG9y
W2xpdmVDYWxsZWVMb2NhbHNJbmRleF0ubWVyZ2VQb2ludCA9IGkgKyBvZmZzZXQ7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2Ugb3BfcmVzdW1lX2hpbnQ6IHsK
KyAgICAgICAgICAgIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9IHBjWzJdLnUuaW5k
ZXg7CisgICAgICAgICAgICBpZiAobGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID49IGdlbmVyYXRvclBv
aW50c1ZlY3Rvci5zaXplKCkpCisgICAgICAgICAgICAgICAgZ2VuZXJhdG9yUG9pbnRzVmVjdG9y
LnJlc2l6ZShsaXZlQ2FsbGVlTG9jYWxzSW5kZXggKyAxKTsKKyAgICAgICAgICAgIGdlbmVyYXRv
clBvaW50c1ZlY3RvcltsaXZlQ2FsbGVlTG9jYWxzSW5kZXhdLnJlc3VtZVBvaW50ID0gaTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBvcF9uZXdfZ2VuZXJh
dG9yX2ZyYW1lOiB7CisgICAgICAgICAgICBuZXdHZW5lcmF0b3JGcmFtZUluc3RydWN0aW9uT2Zm
c2V0ID0gaTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKQEAgLTIyODUsMjUgKzIz
NDIsNjQgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhl
Y3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICAgICAgaSArPSBvcExlbmd0aDsK
ICAgICB9CiAKLSAgICBpZiAodm0uY29udHJvbEZsb3dQcm9maWxlcigpKQotICAgICAgICBpbnNl
cnRCYXNpY0Jsb2NrQm91bmRhcmllc0ZvckNvbnRyb2xGbG93UHJvZmlsZXIoaW5zdHJ1Y3Rpb25z
KTsKLQogICAgIG1faW5zdHJ1Y3Rpb25zID0gV1RGTW92ZShpbnN0cnVjdGlvbnMpOwogCi0gICAg
Ly8gUGVyZm9ybSBieXRlY29kZSBsaXZlbmVzcyBhbmFseXNpcyB0byBkZXRlcm1pbmUgd2hpY2gg
bG9jYWxzIGFyZSBsaXZlIGFuZCBzaG91bGQgYmUgcmVzdW1lZCB3aGVuIGV4ZWN1dGluZyBvcF9y
ZXN1bWUuCisgICAgLy8gUGVyZm9ybSBieXRlY29kZSBsaXZlbmVzcyBhbmFseXNpcyB0byBkZXRl
cm1pbmUgd2hpY2ggbG9jYWxzIGFyZSBsaXZlIGFuZCBzaG91bGQgYmUgcmVzdW1lZCB3aGVuIGV4
ZWN1dGluZyBvcF9yZXN1bWVfaGludC4KICAgICBpZiAodW5saW5rZWRDb2RlQmxvY2stPnBhcnNl
TW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yQm9keU1vZGUpIHsKLSAgICAgICAg
aWYgKHNpemVfdCBjb3VudCA9IG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldHMuc2l6ZSgpKSB7Cisg
ICAgICAgIHVuc2lnbmVkIG1heEdlbmVyYXRvckxvY2Fsc1NpemUgPSAwOworICAgICAgICBpZiAo
c2l6ZV90IGNvdW50ID0gZ2VuZXJhdG9yUG9pbnRzVmVjdG9yLnNpemUoKSkgewogICAgICAgICAg
ICAgY3JlYXRlUmFyZURhdGFJZk5lY2Vzc2FyeSgpOwotICAgICAgICAgICAgQnl0ZWNvZGVMaXZl
bmVzc0FuYWx5c2lzIGxpdmVuZXNzKHRoaXMpOwogICAgICAgICAgICAgbV9yYXJlRGF0YS0+bV9s
aXZlQ2FsbGVlTG9jYWxzQXRZaWVsZC5ncm93KGNvdW50KTsKLSAgICAgICAgICAgIHNpemVfdCBs
aXZlQ2FsbGVlTG9jYWxzSW5kZXggPSAwOwotICAgICAgICAgICAgZm9yIChzaXplX3QgYnl0ZWNv
ZGVPZmZzZXQgOiBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXRzKSB7Ci0gICAgICAgICAgICAgICAg
bV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZFtsaXZlQ2FsbGVlTG9jYWxzSW5k
ZXhdID0gbGl2ZW5lc3MuZ2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29kZU9mZnNldChieXRlY29kZU9m
ZnNldCk7Ci0gICAgICAgICAgICAgICAgKytsaXZlQ2FsbGVlTG9jYWxzSW5kZXg7CisKKyAgICAg
ICAgICAgIC8vIEZpcnN0LCBwZXJmb3JtIGJ5dGVjb2RlIHVzZS1kZWYgYW5hbHlzaXMgb250byB0
aGUgY3VycmVudCBieXRlY29kZSBzdHJlYW0gYW5kIGNhbGN1bGF0ZSBsaXZlIGxvY2FscyBhdCB0
aGUgbWVyZ2UgcG9pbnRzLgorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIEJ5dGVjb2Rl
TGl2ZW5lc3NBbmFseXNpcyBsaXZlbmVzcyh0aGlzKTsKKyAgICAgICAgICAgICAgICBmb3IgKHNp
emVfdCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSAwOyBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPCBn
ZW5lcmF0b3JQb2ludHNWZWN0b3Iuc2l6ZSgpOyArK2xpdmVDYWxsZWVMb2NhbHNJbmRleCkgewor
ICAgICAgICAgICAgICAgICAgICBjb25zdCBHZW5lcmF0b3JQb2ludHMmIHBvaW50cyA9IGdlbmVy
YXRvclBvaW50c1ZlY3RvcltsaXZlQ2FsbGVlTG9jYWxzSW5kZXhdOworICAgICAgICAgICAgICAg
ICAgICBzaXplX3QgbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0ID0gcG9pbnRzLm1lcmdlUG9pbnQ7
CisgICAgICAgICAgICAgICAgICAgIEZhc3RCaXRWZWN0b3IgbGl2ZW5lc3NWZWN0b3IgPSBsaXZl
bmVzcy5nZXRMaXZlbmVzc0luZm9BdEJ5dGVjb2RlT2Zmc2V0KG1lcmdlUG9pbnRCeXRlY29kZU9m
ZnNldCk7CisgICAgICAgICAgICAgICAgICAgIG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fs
c0F0WWllbGRbbGl2ZUNhbGxlZUxvY2Fsc0luZGV4XSA9IGxpdmVuZXNzVmVjdG9yOworICAgICAg
ICAgICAgICAgICAgICBtYXhHZW5lcmF0b3JMb2NhbHNTaXplID0gc3RkOjptYXg8dW5zaWduZWQ+
KG1heEdlbmVyYXRvckxvY2Fsc1NpemUsIGxpdmVuZXNzVmVjdG9yLmJpdENvdW50KCkpOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlbiwgcmV3
cml0ZSBieXRlY29kZXMgYmFzZWQgb24gdGhlIGNhbGN1bGF0ZWQgbGl2ZW5lc3MuCisgICAgICAg
ICAgICAvLyBEbyBub3QgcmV3cml0ZSBieXRlY29kZXMgd2hpbGUgY29udGludWluZyBsaXZlbmVz
cyBhbmFseXNpcy4KKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGxpdmVDYWxsZWVMb2NhbHNJbmRl
eCA9IDA7IGxpdmVDYWxsZWVMb2NhbHNJbmRleCA8IGdlbmVyYXRvclBvaW50c1ZlY3Rvci5zaXpl
KCk7ICsrbGl2ZUNhbGxlZUxvY2Fsc0luZGV4KSB7CisgICAgICAgICAgICAgICAgY29uc3QgR2Vu
ZXJhdG9yUG9pbnRzJiBwb2ludHMgPSBnZW5lcmF0b3JQb2ludHNWZWN0b3JbbGl2ZUNhbGxlZUxv
Y2Fsc0luZGV4XTsKKyAgICAgICAgICAgICAgICBzaXplX3Qgc2F2ZVBvaW50Qnl0ZWNvZGVPZmZz
ZXQgPSBwb2ludHMuc2F2ZVBvaW50OworICAgICAgICAgICAgICAgIHNpemVfdCByZXN1bWVQb2lu
dEJ5dGVjb2RlT2Zmc2V0ID0gcG9pbnRzLnJlc3VtZVBvaW50OworCisgICAgICAgICAgICAgICAg
Y29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZW5lc3NWZWN0b3IgPSBtX3JhcmVEYXRhLT5tX2xpdmVD
YWxsZWVMb2NhbHNBdFlpZWxkW2xpdmVDYWxsZWVMb2NhbHNJbmRleF07CisKKyAgICAgICAgICAg
ICAgICAvLyBQYXRjaCBvcF9yZXN1bWVfaGludCB3aXRoIHJlc3VtZV9mcm9tX2dlbmVyYXRvcl9m
cmFtZSBvcGVyYXRpb25zLgorICAgICAgICAgICAgICAgIGludCBnZW5lcmF0b3JMb2NhbEluZGV4
ID0gbV9pbnN0cnVjdGlvbnNbcmVzdW1lUG9pbnRCeXRlY29kZU9mZnNldCArIDFdLnUub3BlcmFu
ZDsKKyAgICAgICAgICAgICAgICBpZiAoIWxpdmVuZXNzVmVjdG9yLmJpdENvdW50KCkpIHsKKyAg
ICAgICAgICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCA0OyArK2kpCisgICAgICAg
ICAgICAgICAgICAgICAgICBtX2luc3RydWN0aW9uc1tyZXN1bWVQb2ludEJ5dGVjb2RlT2Zmc2V0
ICsgaV0gPSB2bS5pbnRlcnByZXRlci0+Z2V0T3Bjb2RlKG9wX25vcCk7CisgICAgICAgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGkgPSAwOworICAgICAgICAg
ICAgICAgICAgICBsaXZlbmVzc1ZlY3Rvci5mb3JFYWNoU2V0Qml0KFsmXSh1bnNpZ25lZCBsb2Nh
bCkgeworICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGluZGV4ID0gaSsrOworICAgICAg
ICAgICAgICAgICAgICAgICAgc2l6ZV90IG9mZnNldCA9IHJlc3VtZVBvaW50Qnl0ZWNvZGVPZmZz
ZXQgKyBpbmRleCAqIDQ7CisgICAgICAgICAgICAgICAgICAgICAgICBtX2luc3RydWN0aW9uc1tv
ZmZzZXRdID0gdm0uaW50ZXJwcmV0ZXItPmdldE9wY29kZShvcF9yZXN1bWVfZnJvbV9nZW5lcmF0
b3JfZnJhbWUpOworICAgICAgICAgICAgICAgICAgICAgICAgbV9pbnN0cnVjdGlvbnNbb2Zmc2V0
ICsgMV0udS5vcGVyYW5kID0gdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwobG9jYWwpLm9mZnNldCgp
OworICAgICAgICAgICAgICAgICAgICAgICAgbV9pbnN0cnVjdGlvbnNbb2Zmc2V0ICsgMl0udS5v
cGVyYW5kID0gZ2VuZXJhdG9yTG9jYWxJbmRleDsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1f
aW5zdHJ1Y3Rpb25zW29mZnNldCArIDNdLnUudW5zaWduZWRWYWx1ZSA9IGluZGV4OworICAgICAg
ICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAv
LyBQYXRjaCBvcF9zYXZlX2hpbnQgd2l0aCBvcF9zYXZlLgorICAgICAgICAgICAgICAgIG1faW5z
dHJ1Y3Rpb25zW3NhdmVQb2ludEJ5dGVjb2RlT2Zmc2V0XSA9IHZtLmludGVycHJldGVyLT5nZXRP
cGNvZGUob3Bfc2F2ZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KKyAgICAgICAgLy8gRmls
bCBvcF9uZXdfZ2VuZXJhdG9yX2ZyYW1lJ3Mgc2l6ZS4KKyAgICAgICAgbV9pbnN0cnVjdGlvbnNb
bmV3R2VuZXJhdG9yRnJhbWVJbnN0cnVjdGlvbk9mZnNldCArIDJdLnUudW5zaWduZWRWYWx1ZSA9
IG1heEdlbmVyYXRvckxvY2Fsc1NpemU7CiAgICAgfQogCisgICAgaWYgKHZtLmNvbnRyb2xGbG93
UHJvZmlsZXIoKSkKKyAgICAgICAgaW5zZXJ0QmFzaWNCbG9ja0JvdW5kYXJpZXNGb3JDb250cm9s
Rmxvd1Byb2ZpbGVyKG1faW5zdHJ1Y3Rpb25zKTsKKwogICAgIC8vIFNldCBvcHRpbWl6YXRpb24g
dGhyZXNob2xkcyBvbmx5IGFmdGVyIG1faW5zdHJ1Y3Rpb25zIGlzIGluaXRpYWxpemVkLCBzaW5j
ZSB0aGVzZQogICAgIC8vIHJlbHkgb24gdGhlIGluc3RydWN0aW9uIGNvdW50IChhbmQgYXJlIGlu
IHRoZW9yeSBwZXJtaXR0ZWQgdG8gYWxzbyBpbnNwZWN0IHRoZQogICAgIC8vIGluc3RydWN0aW9u
IHN0cmVhbSB0byBtb3JlIGFjY3VyYXRlIGFzc2VzcyB0aGUgY29zdCBvZiB0aWVyLXVwKS4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdl
dHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0
cy5jcHAKaW5kZXggZTJjYjAwMDQ4Mzc5NGJhOTJkNTEwZGNmNWZhOTk0ODg1YTIzZGMzZC4uMDg0
YmFiYzI2M2E1NTA0ODg1YWMwOTUwZmI0YWIzMTJlMWE1OWYzMyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5jcHAKQEAgLTU0
LDcgKzU0LDkgQEAgc3RhdGljIHZvaWQgZ2V0SnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChD
b2RlQmxvY2sqIGNvZGVCbG9jaywgSW50ZXJwcmV0ZXIqIGkKICAgICBjYXNlIG9wX2pubGVzc2Vx
OgogICAgIGNhc2Ugb3Bfam5ncmVhdGVyOgogICAgIGNhc2Ugb3Bfam5ncmVhdGVyZXE6Ci0gICAg
Y2FzZSBvcF9zYXZlOiAvLyBUaGUganVtcCBvZiBvcF9zYXZlIGlzIHB1cmVseSBmb3IgY2FsY3Vs
YXRpbmcgbGl2ZW5lc3MuCisgICAgLy8gVGhlIGp1bXAgb2Ygb3Bfc2F2ZV9oaW50IGlzIHB1cmVs
eSBmb3IgY2FsY3VsYXRpbmcgbGl2ZW5lc3MuCisgICAgLy8gV2hpbGUgb3Bfc2F2ZV9oaW50IGhh
cyBhIGp1bXAgZm9yIGxpdmVuZXNzIGFuYWx5c2lzLCBvcF9zYXZlIGRvZXMgbm90IGhhdmUgYSBq
dW1wLgorICAgIGNhc2Ugb3Bfc2F2ZV9oaW50OgogICAgICAgICBvdXQuYXBwZW5kKGJ5dGVjb2Rl
T2Zmc2V0ICsgY3VycmVudFszXS51Lm9wZXJhbmQpOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IG9wX3N3aXRjaF9pbW06CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IGQxNWUyMjQzNTI2NmZlMWFmZjNk
NWY3OWExZGRhNzViOWJkYWYzZjMuLjBkYWVlYzYzZjZjMjM3MGQ1NjQ4MzAxMGMzMmI1Y2NjYTUw
NmM0MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0
ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC0yNTcsNyArMjU3LDcgQEAgUGFyc2VyRXJyb3Ig
Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKCkKICAgICAgICAgLy8gICAgZnVuY3Rpb24gKmdl
bihhLCBiID0gaGVsbG8oKSkKICAgICAgICAgLy8gICAgewogICAgICAgICAvLyAgICAgICAgcmV0
dXJuIHsKLSAgICAgICAgLy8gICAgICAgICAgICBAZ2VuZXJhdG9yTmV4dDogZnVuY3Rpb24gKEBn
ZW5lcmF0b3IsIEBnZW5lcmF0b3JTdGF0ZSwgQGdlbmVyYXRvclZhbHVlLCBAZ2VuZXJhdG9yUmVz
dW1lTW9kZSkKKyAgICAgICAgLy8gICAgICAgICAgICBAZ2VuZXJhdG9yTmV4dDogZnVuY3Rpb24g
KEBnZW5lcmF0b3IsIEBnZW5lcmF0b3JTdGF0ZSwgQGdlbmVyYXRvclZhbHVlLCBAZ2VuZXJhdG9y
UmVzdW1lTW9kZSwgQGdlbmVyYXRvckZyYW1lKQogICAgICAgICAvLyAgICAgICAgICAgIHsKICAg
ICAgICAgLy8gICAgICAgICAgICAgICAgYXJndW1lbnRzOyAgLy8gVGhpcyBgYXJndW1lbnRzYCBz
aG91bGQgcmVmZXJlbmNlIHRvIHRoZSBnZW4ncyBhcmd1bWVudHMuCiAgICAgICAgIC8vICAgICAg
ICAgICAgICAgIC4uLgpAQCAtNTM3LDYgKzUzNyw5IEBAIFBhcnNlckVycm9yIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjpnZW5lcmF0ZSgpCiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckJv
ZHlNb2RlOiB7CiAgICAgICAgIC8vIHx0aGlzfCBpcyBhbHJlYWR5IGZpbGxlZCBjb3JyZWN0bHkg
YmVmb3JlIGhlcmUuCiAgICAgICAgIGVtaXRMb2FkKG1fbmV3VGFyZ2V0UmVnaXN0ZXIsIGpzVW5k
ZWZpbmVkKCkpOworCisgICAgICAgIGVtaXROZXdHZW5lcmF0b3JGcmFtZShnZW5lcmF0b3JGcmFt
ZVJlZ2lzdGVyKCkpOworICAgICAgICBlbWl0UHV0QnlJZChnZW5lcmF0b3JSZWdpc3RlcigpLCBw
cm9wZXJ0eU5hbWVzKCkuZ2VuZXJhdG9yRnJhbWVQcml2YXRlTmFtZSwgZ2VuZXJhdG9yRnJhbWVS
ZWdpc3RlcigpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCkBAIC0yNzQ0LDYgKzI3NDcsMTQg
QEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdGdW5jdGlvbihSZWdpc3Rl
cklEKiBkc3QsIEZ1bmN0aW9uTWV0YWRhdGEKICAgICByZXR1cm4gZHN0OwogfQogCitSZWdpc3Rl
cklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0dlbmVyYXRvckZyYW1lKFJlZ2lzdGVySUQq
IGRzdCkKK3sKKyAgICBlbWl0T3Bjb2RlKG9wX25ld19nZW5lcmF0b3JfZnJhbWUpOworICAgIGlu
c3RydWN0aW9ucygpLmFwcGVuZChkc3QtPmluZGV4KCkpOworICAgIGluc3RydWN0aW9ucygpLmFw
cGVuZCgwKTsKKyAgICByZXR1cm4gZHN0OworfQorCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdENhbGwoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBmdW5jLCBFeHBlY3Rl
ZEZ1bmN0aW9uIGV4cGVjdGVkRnVuY3Rpb24sIENhbGxBcmd1bWVudHMmIGNhbGxBcmd1bWVudHMs
IGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90
U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCkKIHsKICAgICByZXR1cm4gZW1p
dENhbGwob3BfY2FsbCwgZHN0LCBmdW5jLCBleHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRz
LCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQpOwpAQCAtNDE0NCw4ICs0MTU1LDggQEAgdm9p
ZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFlpZWxkUG9pbnQoUmVnaXN0ZXJJRCogYXJndW1lbnQp
CiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0U2F2ZShMYWJlbCogbWVyZ2VQb2ludCwgdW5z
aWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4KQogewogICAgIHNpemVfdCBiZWdpbiA9IGluc3Ry
dWN0aW9ucygpLnNpemUoKTsKLSAgICBlbWl0T3Bjb2RlKG9wX3NhdmUpOwotICAgIGluc3RydWN0
aW9ucygpLmFwcGVuZChtX2dlbmVyYXRvclJlZ2lzdGVyLT5pbmRleCgpKTsKKyAgICBlbWl0T3Bj
b2RlKG9wX3NhdmVfaGludCk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGdlbmVyYXRvckZy
YW1lUmVnaXN0ZXIoKS0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGxpdmVD
YWxsZWVMb2NhbHNJbmRleCk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1lcmdlUG9pbnQt
PmJpbmQoYmVnaW4sIGluc3RydWN0aW9ucygpLnNpemUoKSkpOwogfQpAQCAtNDE1Myw5ICs0MTY0
LDMwIEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRTYXZlKExhYmVsKiBtZXJnZVBvaW50
LCB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0UmVzdW1lKExhYmVsKiBtZXJnZVBvaW50LCB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5k
ZXgpCiB7CiAgICAgZW1pdEdlbmVyYXRvclN0YXRlTGFiZWwoKTsKLSAgICBlbWl0T3Bjb2RlKG9w
X3Jlc3VtZSk7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fZ2VuZXJhdG9yUmVnaXN0ZXIt
PmluZGV4KCkpOworCisgICAgcmVjbGFpbUZyZWVSZWdpc3RlcnMoKTsKKyAgICB1bnNpZ25lZCBt
YXhMaXZlTG9jYWxzID0gMDsKKyAgICBmb3IgKGNvbnN0IFJlZ2lzdGVySUQmIHJlZyA6IG1fY2Fs
bGVlTG9jYWxzKSB7CisgICAgICAgIGlmIChyZWcucmVmQ291bnQoKSkKKyAgICAgICAgICAgICsr
bWF4TGl2ZUxvY2FsczsKKyAgICB9CisKKyAgICAvLyBUaGlzIG9wX3Jlc3VtZV9oaW50IHdpbGwg
YmUgcmVwbGFjZWQgd2l0aCB0aGUgYWN0dWFsIG9wcy4KKyAgICBzdGF0aWNfYXNzZXJ0KE9QQ09E
RV9MRU5HVEgob3BfcmVzdW1lX2hpbnQpID09IE9QQ09ERV9MRU5HVEgob3BfcmVzdW1lX2Zyb21f
Z2VuZXJhdG9yX2ZyYW1lKSwgIlRoZSBsZW5ndGggb2Ygb3BfcmVzdW1lX2hpbnQgc2hvdWxkIGVx
YXVhbCB0byBvbmUgb2Ygb3BfcmVzdW1lX2Zyb21fZ2VuZXJhdG9yX2ZyYW1lLiIpOworICAgIGlm
IChtYXhMaXZlTG9jYWxzKQorICAgICAgICBtYXhMaXZlTG9jYWxzIC09IDE7CisKKyAgICBlbWl0
T3Bjb2RlKG9wX3Jlc3VtZV9oaW50KTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZ2VuZXJh
dG9yRnJhbWVSZWdpc3RlcigpLT5pbmRleCgpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQo
bGl2ZUNhbGxlZUxvY2Fsc0luZGV4KTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobWF4TGl2
ZUxvY2Fscyk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1heExpdmVMb2NhbHM7ICsr
aSkgeworICAgICAgICAvLyBOb3Agc3BhY2UuIExhdGVyIHdlIHdpbGwgZmlsbCB0aGlzIHdpdGgg
dGhlIGFjdHVhbCByZXN1bWUgb3BlcmF0aW9ucy4KKyAgICAgICAgZm9yICh1bnNpZ25lZCBqID0g
MDsgaiA8IE9QQ09ERV9MRU5HVEgob3BfcmVzdW1lX2Zyb21fZ2VuZXJhdG9yX2ZyYW1lKTsgKytq
KQorICAgICAgICAgICAgZW1pdE9wY29kZShvcF9ub3ApOworICAgIH0KKyAgICBlbWl0T3Bjb2Rl
KG9wX2NsZWFyX2dlbmVyYXRvcl9mcmFtZSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGdl
bmVyYXRvckZyYW1lUmVnaXN0ZXIoKS0+aW5kZXgoKSk7CiAgICAgZW1pdExhYmVsKG1lcmdlUG9p
bnQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5kZXggN2QwYzIwYjZmNTE2YTE3ZTg5M2YxYmJhMDgwM2Mx
MzMzZmZjOGQwZC4uM2QzMzQ3ODE1YWMzMGE4MmU2MjZlM2UwNzgwODFiZTJiM2U5YmUzZiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVH
ZW5lcmF0b3IuaApAQCAtNTIyLDYgKzUyMiw3IEBACiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRO
ZXdEZWZhdWx0Q29uc3RydWN0b3IoUmVnaXN0ZXJJRCogZHN0LCBDb25zdHJ1Y3RvcktpbmQsIGNv
bnN0IElkZW50aWZpZXImIG5hbWUpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0TmV3QXJyb3dG
dW5jdGlvbkV4cHJlc3Npb24oUmVnaXN0ZXJJRCosIEFycm93RnVuY0V4cHJOb2RlKik7CiAgICAg
ICAgIFJlZ2lzdGVySUQqIGVtaXROZXdSZWdFeHAoUmVnaXN0ZXJJRCogZHN0LCBSZWdFeHAqKTsK
KyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdE5ld0dlbmVyYXRvckZyYW1lKFJlZ2lzdGVySUQqIGRz
dCk7CiAKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdE1vdmVMaW5rVGltZUNvbnN0YW50KFJlZ2lz
dGVySUQqIGRzdCwgTGlua1RpbWVDb25zdGFudCk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRN
b3ZlRW1wdHlWYWx1ZShSZWdpc3RlcklEKiBkc3QpOwpAQCAtNjg0LDYgKzY4NSw3IEBACiAgICAg
ICAgIFJlZ2lzdGVySUQqIGdlbmVyYXRvclN0YXRlUmVnaXN0ZXIoKSB7IHJldHVybiAmbV9wYXJh
bWV0ZXJzWzJdOyB9CiAgICAgICAgIFJlZ2lzdGVySUQqIGdlbmVyYXRvclZhbHVlUmVnaXN0ZXIo
KSB7IHJldHVybiAmbV9wYXJhbWV0ZXJzWzNdOyB9CiAgICAgICAgIFJlZ2lzdGVySUQqIGdlbmVy
YXRvclJlc3VtZU1vZGVSZWdpc3RlcigpIHsgcmV0dXJuICZtX3BhcmFtZXRlcnNbNF07IH0KKyAg
ICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9yRnJhbWVSZWdpc3RlcigpIHsgcmV0dXJuICZtX3Bh
cmFtZXRlcnNbNV07IH0KIAogICAgICAgICBDb2RlVHlwZSBjb2RlVHlwZSgpIGNvbnN0IHsgcmV0
dXJuIG1fY29kZVR5cGU7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdBYnN0cmFjdEhlYXAuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJh
Y3RIZWFwLmgKaW5kZXggNGRlYzhmYTAzNzc2ZTAxZTZjZDM3NDYwNjU5Y2M1NjExNjIzOGM2NS4u
OWM4NmY2OTJiOGQzODVkOWViMjQ2OTdkNzkyNzlkZjZjZGY0NWNlNSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEhlYXAuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SGVhcC5oCkBAIC02OCw2ICs2OCw4IEBACiAgICAg
bWFjcm8oU2NvcGVQcm9wZXJ0aWVzKSBcCiAgICAgbWFjcm8oVHlwZWRBcnJheVByb3BlcnRpZXMp
IFwKICAgICBtYWNybyhIZWFwT2JqZWN0Q291bnQpIC8qIFVzZWQgdG8gcmVmbGVjdCB0aGUgZmFj
dCB0aGF0IHNvbWUgYWxsb2NhdGlvbnMgcmV2ZWFsIG9iamVjdCBpZGVudGl0eSAqL1wKKyAgICBt
YWNybyhHZW5lcmF0b3JMb2NhbHMpIFwKKyAgICBtYWNybyhHZW5lcmF0b3JMb2NhbENvdW50KSBc
CiAgICAgbWFjcm8oUmVnRXhwU3RhdGUpIFwKICAgICBtYWNybyhNYXRoRG90UmFuZG9tU3RhdGUp
IFwKICAgICBtYWNybyhJbnRlcm5hbFN0YXRlKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKaW5kZXggOWVl
YzYzY2ViMDcxYmMxNDg2YTAxMmMyODUwMWRiNjI0MjZiZGU3Yi4uNzZlMTczZWViYWRiN2YyYWU5
ODkwMDVhMWJhNTViZTFhMWU5NDA2NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaApAQCAtMTY4Nyw2ICsx
Njg3LDEwIEBACiAgICAgY2FzZSBOZXdSZWdleHA6CiAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykt
PnJlZ0V4cFN0cnVjdHVyZSgpKTsKICAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIE5ld0dlbmVy
YXRvckZyYW1lOgorICAgICAgICBmb3JOb2RlKG5vZGUpLnNldChtX2dyYXBoLCBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5nZW5lcmF0b3JGcmFtZVN0cnVj
dHVyZSgpKTsKKyAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICBjYXNlIFRvVGhpczog
ewogICAgICAgICBBYnN0cmFjdFZhbHVlJiBzb3VyY2UgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgp
KTsKQEAgLTI1MTAsNiArMjUxNCwxNyBAQAogICAgICAgICBmb3JOb2RlKG5vZGUpLm1ha2VIZWFw
VG9wKCk7CiAgICAgICAgIGJyZWFrOwogCisgICAgY2FzZSBTZXRHZW5lcmF0b3JMb2NhbDoKKyAg
ICBjYXNlIFJlc2l6ZUdlbmVyYXRvckxvY2FsczoKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNl
IEdldEdlbmVyYXRvckxvY2FsOiB7CisgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYXR0ZW1w
dCB0byBjb252ZXJ0IGl0IHRvIGNvbnN0YW50LgorICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUzMTgzCisgICAgICAgIGZvck5vZGUobm9kZSkubWFr
ZUhlYXBUb3AoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBGb3JjZU9TUkV4
aXQ6CiAgICAgY2FzZSBDaGVja0JhZENlbGw6CiAgICAgICAgIG1fc3RhdGUuc2V0SXNWYWxpZChm
YWxzZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2Rl
UGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIu
Y3BwCmluZGV4IDM2NDRhMmZkMTlhMGQ5YjNkZGE3YjA2OGEwMDQ5MGE1ODI2MjA4NmQuLjZhODNk
YTFmZDI0NmNiOGI1ZWZkMzk0MDg3YzQ2NDdiNTc3ZWE5YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC0zNiw2ICszNiw3IEBACiAj
aW5jbHVkZSAiREZHQXJyYXlNb2RlLmgiCiAjaW5jbHVkZSAiREZHQ2FwYWJpbGl0aWVzLmgiCiAj
aW5jbHVkZSAiREZHQ2xvYmJlcnNFeGl0U3RhdGUuaCIKKyNpbmNsdWRlICJERkdHZW5lcmF0b3JM
b2NhbERhdGEuaCIKICNpbmNsdWRlICJERkdHcmFwaC5oIgogI2luY2x1ZGUgIkRGR0pJVENvZGUu
aCIKICNpbmNsdWRlICJHZXRCeUlkU3RhdHVzLmgiCkBAIC05NjMsNiArOTY0LDExIEBAIGNsYXNz
IEJ5dGVDb2RlUGFyc2VyIHsKICAgICAgICAgZm9yIChBcmd1bWVudFBvc2l0aW9uKiBhcmd1bWVu
dCA6IG1faW5saW5lU3RhY2tUb3AtPm1fYXJndW1lbnRQb3NpdGlvbnMpCiAgICAgICAgICAgICBh
cmd1bWVudC0+bWVyZ2VTaG91bGROZXZlclVuYm94KHRydWUpOwogICAgIH0KKworICAgIEdlbmVy
YXRvckxvY2FsRGF0YSogbmV3R2VuZXJhdG9yTG9jYWxEYXRhKCkKKyAgICB7CisgICAgICAgIHJl
dHVybiBtX2dyYXBoLm1fZ2VuZXJhdG9yTG9jYWxEYXRhLmFkZCgpOworICAgIH0KICAgICAKICAg
ICBWTSogbV92bTsKICAgICBDb2RlQmxvY2sqIG1fY29kZUJsb2NrOwpAQCAtMTA1MSw2ICsxMDU3
LDExIEBAIGNsYXNzIEJ5dGVDb2RlUGFyc2VyIHsKICAgICAgICAgQ2FsbExpbmtJbmZvTWFwIG1f
Y2FsbExpbmtJbmZvczsKICAgICAgICAgU3R1YkluZm9NYXAgbV9zdHViSW5mb3M7CiAgICAgICAg
IEJ5VmFsSW5mb01hcCBtX2J5VmFsSW5mb3M7CisKKyAgICAgICAgLy8gU2luY2UgdGhlIG9wX3Jl
c3VtZV9oaW50IGlzIGVtaXR0ZWQgYWZ0ZXIgdGhlIGNvcnJlc3BvbmRpbmcgb3Bfc2F2ZV9oaW50
CisgICAgICAgIC8vIGFuZCB0aGVyZSBpcyBubyBvdGhlciBvcF9yZXN1bWVfaGludCBhbmQgb3Bf
c2F2ZV9oaW50IGJldHdlZW4gdGhlbSwKKyAgICAgICAgLy8gd2UgY2FuIHRyYWNrIHRoZXNlIGNv
cnJlc3BvbmRlbmNlIGJ5IGp1c3QgdHJhY2tpbmcgY3VycmVudGx5IGZvY3VzaW5nIG9wX3NhdmUu
CisgICAgICAgIE9wZXJhbmRzPEdlbmVyYXRvckxvY2FsRGF0YSo+IG1fZ2VuZXJhdG9yTG9jYWxz
OwogICAgICAgICAKICAgICAgICAgLy8gRGlkIHdlIHNlZSBhbnkgcmV0dXJucz8gV2UgbmVlZCB0
byBoYW5kbGUgdGhlICh1bmNvbW1vbiBidXQgbmVjZXNzYXJ5KQogICAgICAgICAvLyBjYXNlIHdo
ZXJlIGEgcHJvY2VkdXJlIHRoYXQgZG9lcyBub3QgcmV0dXJuIHdhcyBpbmxpbmVkLgpAQCAtMzM0
MSw2ICszMzUyLDExIEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQg
bGltaXQpCiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9uZXdfcmVnZXhwKTsKICAgICAgICAg
fQogCisgICAgICAgIGNhc2Ugb3BfbmV3X2dlbmVyYXRvcl9mcmFtZTogeworICAgICAgICAgICAg
c2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSwgYWRk
VG9HcmFwaChOZXdHZW5lcmF0b3JGcmFtZSwgT3BJbmZvKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51
LnVuc2lnbmVkVmFsdWUpKSk7CisgICAgICAgICAgICBORVhUX09QQ09ERShvcF9uZXdfZ2VuZXJh
dG9yX2ZyYW1lKTsKKyAgICAgICAgfQorCiAgICAgICAgIGNhc2Ugb3BfZ2V0X3Jlc3RfbGVuZ3Ro
OiB7CiAgICAgICAgICAgICBJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSA9IHRoaXMt
PmlubGluZUNhbGxGcmFtZSgpOwogICAgICAgICAgICAgTm9kZSogbGVuZ3RoOwpAQCAtMzM2OCw2
ICszMzg0LDQ4IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGlt
aXQpCiAgICAgICAgICAgICAgICAgYXJyYXksIGFycmF5TGVuZ3RoKTsKICAgICAgICAgICAgIE5F
WFRfT1BDT0RFKG9wX2NvcHlfcmVzdCk7CiAgICAgICAgIH0KKworICAgICAgICBjYXNlIG9wX3Nh
dmU6IHsKKyAgICAgICAgICAgIE5vZGUqIGZyYW1lID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJy
ZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSk7CisgICAgICAgICAgICB1bnNpZ25lZCBsaXZl
Q2FsbGVlTG9jYWxzSW5kZXggPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS51bnNpZ25lZFZhbHVl
OworICAgICAgICAgICAgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZW5lc3MgPSBtX2lubGluZVN0
YWNrVG9wLT5tX2NvZGVCbG9jay0+bGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQobGl2ZUNhbGxlZUxv
Y2Fsc0luZGV4KTsKKworICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9nZW5lcmF0b3JM
b2NhbHMgPSBPcGVyYW5kczxHZW5lcmF0b3JMb2NhbERhdGEqPihtX251bUFyZ3VtZW50cywgbV9u
dW1Mb2NhbHMpOworCisgICAgICAgICAgICBhZGRUb0dyYXBoKFJlc2l6ZUdlbmVyYXRvckxvY2Fs
cywgT3BJbmZvKGxpdmVuZXNzLmJpdENvdW50KCkpLCBmcmFtZSk7CisgICAgICAgICAgICB1bnNp
Z25lZCBnZW5lcmF0b3JMb2NhbEluZGV4ID0gMDsKKyAgICAgICAgICAgIGxpdmVuZXNzLmZvckVh
Y2hTZXRCaXQoWyZdKHNpemVfdCBpbmRleCkgeworICAgICAgICAgICAgICAgIFZpcnR1YWxSZWdp
c3RlciBvcGVyYW5kID0gdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaW5kZXgpOworICAgICAgICAg
ICAgICAgIFZpcnR1YWxSZWdpc3RlciByZW1hcHBlZE9wZXJhbmQgPSBtX2lubGluZVN0YWNrVG9w
LT5yZW1hcE9wZXJhbmQob3BlcmFuZCk7CisgICAgICAgICAgICAgICAgTm9kZSogbG9jYWwgPSBn
ZXQob3BlcmFuZCk7CisgICAgICAgICAgICAgICAgR2VuZXJhdG9yTG9jYWxEYXRhKiBnZW5lcmF0
b3JMb2NhbERhdGEgPSBuZXdHZW5lcmF0b3JMb2NhbERhdGEoKTsKKyAgICAgICAgICAgICAgICBt
X2lubGluZVN0YWNrVG9wLT5tX2dlbmVyYXRvckxvY2Fscy5sb2NhbChyZW1hcHBlZE9wZXJhbmQu
dG9Mb2NhbCgpKSA9IGdlbmVyYXRvckxvY2FsRGF0YTsKKyAgICAgICAgICAgICAgICBhZGRUb0dy
YXBoKFNldEdlbmVyYXRvckxvY2FsLCBPcEluZm8oZ2VuZXJhdG9yTG9jYWxJbmRleCsrKSwgT3BJ
bmZvKGdlbmVyYXRvckxvY2FsRGF0YSksIGZyYW1lLCBsb2NhbCk7CisgICAgICAgICAgICB9KTsK
KyAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX3NhdmUpOworICAgICAgICB9CisKKyAgICAgICAg
Y2FzZSBvcF9yZXN1bWVfZnJvbV9nZW5lcmF0b3JfZnJhbWU6IHsKKyAgICAgICAgICAgIE5vZGUq
IGZyYW1lID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVy
YW5kKSk7CisgICAgICAgICAgICB1bnNpZ25lZCBnZW5lcmF0b3JMb2NhbEluZGV4ID0gY3VycmVu
dEluc3RydWN0aW9uWzNdLnUudW5zaWduZWRWYWx1ZTsKKyAgICAgICAgICAgIFZpcnR1YWxSZWdp
c3RlciBvcGVyYW5kKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOworICAgICAgICAg
ICAgVmlydHVhbFJlZ2lzdGVyIHJlbWFwcGVkT3BlcmFuZCA9IG1faW5saW5lU3RhY2tUb3AtPnJl
bWFwT3BlcmFuZChvcGVyYW5kKTsKKyAgICAgICAgICAgIEdlbmVyYXRvckxvY2FsRGF0YSogZ2Vu
ZXJhdG9yTG9jYWxEYXRhID0gbV9pbmxpbmVTdGFja1RvcC0+bV9nZW5lcmF0b3JMb2NhbHMubG9j
YWwocmVtYXBwZWRPcGVyYW5kLnRvTG9jYWwoKSk7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VS
VChnZW5lcmF0b3JMb2NhbERhdGEpOworICAgICAgICAgICAgc2V0KG9wZXJhbmQsIGFkZFRvR3Jh
cGgoR2V0R2VuZXJhdG9yTG9jYWwsIE9wSW5mbyhnZW5lcmF0b3JMb2NhbEluZGV4KSwgT3BJbmZv
KGdlbmVyYXRvckxvY2FsRGF0YSksIGZyYW1lKSk7CisgICAgICAgICAgICBORVhUX09QQ09ERShv
cF9yZXN1bWVfZnJvbV9nZW5lcmF0b3JfZnJhbWUpOworICAgICAgICB9CisKKyAgICAgICAgY2Fz
ZSBvcF9jbGVhcl9nZW5lcmF0b3JfZnJhbWU6IHsKKyAgICAgICAgICAgIE5vZGUqIGZyYW1lID0g
Z2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSk7Cisg
ICAgICAgICAgICBhZGRUb0dyYXBoKFJlc2l6ZUdlbmVyYXRvckxvY2FscywgT3BJbmZvKDApLCBm
cmFtZSk7CisgICAgICAgICAgICBORVhUX09QQ09ERShvcF9jbGVhcl9nZW5lcmF0b3JfZnJhbWUp
OworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBvcF9ub3A6IHsKKyAgICAgICAgICAgIE5FWFRf
T1BDT0RFKG9wX25vcCk7CisgICAgICAgIH0KKwogICAgICAgICAgICAgCiAgICAgICAgIC8vID09
PSBCaXR3aXNlIG9wZXJhdGlvbnMgPT09CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQ2FwYWJpbGl0aWVzLmNwcAppbmRleCBkMTAwZDk3ZDVjNjBlMjVhMDYwZmZkYTQ1NjYzYjNi
OTQxNDM1ZGM2Li5hNTgyZjg3MjA3NmNmZjg5NDI4M2ViYTMxYTQ5OTc3NjMwZGM3ODkwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCkBAIC0xODEs
NiArMTgxLDcgQEAgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbChPcGNvZGVJRCBvcGNv
ZGVJRCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEluc3RydWMKICAgICBjYXNlIG9wX25ld19hcnJh
eToKICAgICBjYXNlIG9wX25ld19hcnJheV93aXRoX3NpemU6CiAgICAgY2FzZSBvcF9uZXdfYXJy
YXlfYnVmZmVyOgorICAgIGNhc2Ugb3BfbmV3X2dlbmVyYXRvcl9mcmFtZToKICAgICBjYXNlIG9w
X3N0cmNhdDoKICAgICBjYXNlIG9wX3RvX3ByaW1pdGl2ZToKICAgICBjYXNlIG9wX3Rocm93OgpA
QCAtMjI0LDYgKzIyNSwxMCBAQCBDYXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVsKE9wY29k
ZUlEIG9wY29kZUlELCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSW5zdHJ1YwogICAgIGNhc2Ugb3Bf
Y2F0Y2g6CiAgICAgY2FzZSBvcF9jb3B5X3Jlc3Q6CiAgICAgY2FzZSBvcF9nZXRfcmVzdF9sZW5n
dGg6CisgICAgY2FzZSBvcF9zYXZlOgorICAgIGNhc2Ugb3BfcmVzdW1lX2Zyb21fZ2VuZXJhdG9y
X2ZyYW1lOgorICAgIGNhc2Ugb3BfY2xlYXJfZ2VuZXJhdG9yX2ZyYW1lOgorICAgIGNhc2Ugb3Bf
bm9wOgogICAgICAgICByZXR1cm4gQ2FuQ29tcGlsZUFuZElubGluZTsKIAogICAgIGNhc2Ugb3Bf
cHV0X3RvX3Njb3BlOiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Nsb2JiZXJpemUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5o
CmluZGV4IDM0M2E2ZGU5YzI5MDliOTNlMDUyOGNmMDI3ODRhYWQ5NGQwMWI0ZDEuLjU5ZWM4MmJj
MjBkM2YxNjhlMmY0YjVjYjBiZTZmNTVhMmJmOGRjY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ2xvYmJlcml6ZS5oCkBAIC0xMDQ0LDYgKzEwNDQsNyBAQCB2b2lkIGNsb2JiZXJp
emUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29u
c3QgV3JpdGVGdQogCiAgICAgY2FzZSBOZXdPYmplY3Q6CiAgICAgY2FzZSBOZXdSZWdleHA6Cisg
ICAgY2FzZSBOZXdHZW5lcmF0b3JGcmFtZToKICAgICBjYXNlIE5ld1N0cmluZ09iamVjdDoKICAg
ICBjYXNlIFBoYW50b21OZXdPYmplY3Q6CiAgICAgY2FzZSBNYXRlcmlhbGl6ZU5ld09iamVjdDoK
QEAgLTExMTEsNiArMTExMiwyMyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2Rl
KiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgICAgICAg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQorCisgICAgY2FzZSBTZXRHZW5lcmF0b3JMb2NhbDogeworICAgICAgICByZWFkKEdl
bmVyYXRvckxvY2FsQ291bnQpOworICAgICAgICB3cml0ZShHZW5lcmF0b3JMb2NhbHMpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgY2FzZSBHZXRHZW5lcmF0b3JMb2NhbDogeworICAg
ICAgICByZWFkKEdlbmVyYXRvckxvY2FsQ291bnQpOworICAgICAgICByZWFkKEdlbmVyYXRvckxv
Y2Fscyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBjYXNlIFJlc2l6ZUdlbmVyYXRv
ckxvY2FsczogeworICAgICAgICB3cml0ZShHZW5lcmF0b3JMb2NhbENvdW50KTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBUaHJvd1JlZmVyZW5jZUVycm9yOgog
ICAgICAgICB3cml0ZShTaWRlU3RhdGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDbG9iYmVyc0V4aXRTdGF0ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcAppbmRleCA0ZTBjNTA3Nzg5Y2Q3YjNmZjQ3NzUx
ZjkyNWU3NDgzZTYxZTJkZjViLi45Mjg1NTEyNjI3ODUxZDNmODNmMzdmMDJhYmYwYTNiNWVmNmJm
NWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJzRXhp
dFN0YXRlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJzRXhp
dFN0YXRlLmNwcApAQCAtNTMsMTAgKzUzLDE2IEBAIGJvb2wgY2xvYmJlcnNFeGl0U3RhdGUoR3Jh
cGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgICAgICAvLyBleGl0IHN0YXRlLgogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKKyAgICBjYXNlIFJlc2l6ZUdlbmVyYXRvckxvY2FsczoKKyAgICBjYXNl
IFNldEdlbmVyYXRvckxvY2FsOgorICAgIGNhc2UgR2V0R2VuZXJhdG9yTG9jYWw6CisgICAgICAg
IHJldHVybiBmYWxzZTsKKwogICAgIGNhc2UgQXJyYXlpZnlUb1N0cnVjdHVyZToKICAgICBjYXNl
IEFycmF5aWZ5OgogICAgIGNhc2UgTmV3T2JqZWN0OgogICAgIGNhc2UgTmV3UmVnZXhwOgorICAg
IGNhc2UgTmV3R2VuZXJhdG9yRnJhbWU6CiAgICAgY2FzZSBOZXdTdHJpbmdPYmplY3Q6CiAgICAg
Y2FzZSBQaGFudG9tTmV3T2JqZWN0OgogICAgIGNhc2UgTWF0ZXJpYWxpemVOZXdPYmplY3Q6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKaW5kZXggNzAyZGE1YmYxZTdjMGYx
YzhmZTU1YzY0ODQ0NThmY2FkODFlMmFhNS4uY2ViNzg2MWM3YjI3YjVlOTc5NzcyYjZiM2I4NzA3
YjNlZTg5MmIxMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2Vz
R0MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcApAQCAt
MjI5LDYgKzIyOSw5IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAg
ICBjYXNlIEdldEZyb21Bcmd1bWVudHM6CiAgICAgY2FzZSBQdXRUb0FyZ3VtZW50czoKICAgICBj
YXNlIENvcHlSZXN0OgorICAgIGNhc2UgU2V0R2VuZXJhdG9yTG9jYWw6CisgICAgY2FzZSBHZXRH
ZW5lcmF0b3JMb2NhbDoKKyAgICBjYXNlIFJlc2l6ZUdlbmVyYXRvckxvY2FsczoKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCiAgICAgY2FzZSBDcmVhdGVBY3RpdmF0aW9uOgpAQCAtMjQ2LDYgKzI0
OSw3IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIE5l
d0FycmF5V2l0aFNpemU6CiAgICAgY2FzZSBOZXdBcnJheUJ1ZmZlcjoKICAgICBjYXNlIE5ld1Jl
Z2V4cDoKKyAgICBjYXNlIE5ld0dlbmVyYXRvckZyYW1lOgogICAgIGNhc2UgTmV3U3RyaW5nT2Jq
ZWN0OgogICAgIGNhc2UgTWFrZVJvcGU6CiAgICAgY2FzZSBOZXdBcnJvd0Z1bmN0aW9uOgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKaW5kZXggYzlkNWFiZmI0
OTQ4MWI5MDU4OWVjNGZiYTU5NWEyY2U4ZTcwZGY2Ny4uMDE1ZGY1MWRjMzdiZmJmNDZiYWE5MWVj
OWE4YzhiMDE3ZTVkOTFhNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdGaXh1cFBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVw
UGhhc2UuY3BwCkBAIC0xNDMwLDYgKzE0MzAsMjQgQEAgY2xhc3MgRml4dXBQaGFzZSA6IHB1Ymxp
YyBQaGFzZSB7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCisgICAgICAgIGNhc2Ug
U2V0R2VuZXJhdG9yTG9jYWw6IHsKKyAgICAgICAgICAgIGZpeEVkZ2U8Q2VsbFVzZT4obm9kZS0+
Y2hpbGQxKCkpOworICAgICAgICAgICAgc3BlY3VsYXRlRm9yQmFycmllcihub2RlLT5jaGlsZDIo
KSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2UgR2V0R2Vu
ZXJhdG9yTG9jYWw6IHsKKyAgICAgICAgICAgIGZpeEVkZ2U8Q2VsbFVzZT4obm9kZS0+Y2hpbGQx
KCkpOworICAgICAgICAgICAgLy8gQ3VycmVudGx5LCB3ZSBhbHdheXMgc3RvcmUgdGhlIHZhbHVl
IGFzIEpTVmFsdWUgaW4gdGhlIEdlbmVyYXRvckZyYW1lLgorICAgICAgICAgICAgbm9kZS0+c2V0
UmVzdWx0KE5vZGVSZXN1bHRKUyk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisg
ICAgICAgIGNhc2UgUmVzaXplR2VuZXJhdG9yTG9jYWxzOiB7CisgICAgICAgICAgICBmaXhFZGdl
PENlbGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9
CisKICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgICAgIC8vIEhhdmUgdGhlc2Ugbm8tb3AgY2Fz
ZXMgaGVyZSB0byBlbnN1cmUgdGhhdCBub2JvZHkgZm9yZ2V0cyB0byBhZGQgaGFuZGxlcnMgZm9y
IG5ldyBvcGNvZGVzLgogICAgICAgICBjYXNlIFNldEFyZ3VtZW50OgpAQCAtMTQ2Miw2ICsxNDgw
LDcgQEAgY2xhc3MgRml4dXBQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgIGNhc2UgTmV3
T2JqZWN0OgogICAgICAgICBjYXNlIE5ld0FycmF5QnVmZmVyOgogICAgICAgICBjYXNlIE5ld1Jl
Z2V4cDoKKyAgICAgICAgY2FzZSBOZXdHZW5lcmF0b3JGcmFtZToKICAgICAgICAgY2FzZSBCcmVh
a3BvaW50OgogICAgICAgICBjYXNlIFByb2ZpbGVXaWxsQ2FsbDoKICAgICAgICAgY2FzZSBQcm9m
aWxlRGlkQ2FsbDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR2Vu
ZXJhdG9yTG9jYWxEYXRhLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dlbmVyYXRv
ckxvY2FsRGF0YS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFkZjdlYjcwOTAwZWQzMjJhOTE2NTg5ZjI3MjI4Y2Jk
NzkzNDQ1YzEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0dlbmVyYXRvckxvY2FsRGF0YS5oCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTYgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBERkdHZW5lcmF0b3JM
b2NhbERhdGFfaAorI2RlZmluZSBERkdHZW5lcmF0b3JMb2NhbERhdGFfaAorCisjaWYgRU5BQkxF
KERGR19KSVQpCisKKyNpbmNsdWRlICJERkdDb21tb24uaCIKKyNpbmNsdWRlICJERkdOb2RlRmxh
Z3MuaCIKKyNpbmNsdWRlICJERkdWYXJpYWJsZUFjY2Vzc0RhdGEuaCIKKyNpbmNsdWRlICJTcGVj
dWxhdGVkVHlwZS5oIgorI2luY2x1ZGUgIlZpcnR1YWxSZWdpc3Rlci5oIgorCituYW1lc3BhY2Ug
SlNDIHsgbmFtZXNwYWNlIERGRyB7CisKK3N0cnVjdCBOb2RlOworCitjbGFzcyBHZW5lcmF0b3JM
b2NhbERhdGEgeworcHVibGljOgorICAgIGJvb2wgcHJlZGljdChTcGVjdWxhdGVkVHlwZSBwcmVk
aWN0aW9uKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1lcmdlU3BlY3VsYXRpb24obV9wcmVkaWN0
aW9uLCBwcmVkaWN0aW9uKTsKKyAgICB9CisKKyAgICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9u
KCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX3ByZWRpY3Rpb247CisgICAgfQorCitwcml2YXRl
OgorICAgIFNwZWN1bGF0ZWRUeXBlIG1fcHJlZGljdGlvbiB7IFNwZWNOb25lIH07Cit9OworCit9
IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCisKKyNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKKwor
I2VuZGlmIC8vIERGR1ZhcmlhYmxlQWNjZXNzRGF0YV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0dyYXBoLmgKaW5kZXggMDlhYWU5NTVmNjZhYTc4OTRhMTQ4NWUxMzkzN2YzYmE1Mzg4OWQxYy4u
NDNmZGJiMWE3MTMwMzQ2YzliZGFmNDlkNGU0MTZiNzI0MTNmMDYxZCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHR3JhcGguaApAQCAtNjAsNiArNjAsNyBAQAogY2xhc3MgRG9taW5hdG9yczsK
IGNsYXNzIE5hdHVyYWxMb29wczsKIGNsYXNzIFByZVBvc3ROdW1iZXJpbmc7CitjbGFzcyBHZW5l
cmF0b3JMb2NhbERhdGE7CiAKICNkZWZpbmUgREZHX05PREVfRE9fVE9fQ0hJTERSRU4oZ3JhcGgs
IG5vZGUsIHRoaW5nVG9EbykgZG8geyAgICAgICAgICAgIFwKICAgICAgICAgTm9kZSogX25vZGUg
PSAobm9kZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKQEAg
LTg4Nyw2ICs4ODgsNyBAQCBjbGFzcyBHcmFwaCA6IHB1YmxpYyB2aXJ0dWFsIFNjYW5uYWJsZSB7
CiAgICAgQmFnPENhbGxWYXJhcmdzRGF0YT4gbV9jYWxsVmFyYXJnc0RhdGE7CiAgICAgQmFnPExv
YWRWYXJhcmdzRGF0YT4gbV9sb2FkVmFyYXJnc0RhdGE7CiAgICAgQmFnPFN0YWNrQWNjZXNzRGF0
YT4gbV9zdGFja0FjY2Vzc0RhdGE7CisgICAgQmFnPEdlbmVyYXRvckxvY2FsRGF0YT4gbV9nZW5l
cmF0b3JMb2NhbERhdGE7CiAgICAgVmVjdG9yPElubGluZVZhcmlhYmxlRGF0YSwgND4gbV9pbmxp
bmVWYXJpYWJsZURhdGE7CiAgICAgSGFzaE1hcDxDb2RlQmxvY2sqLCBzdGQ6OnVuaXF1ZV9wdHI8
RnVsbEJ5dGVjb2RlTGl2ZW5lc3M+PiBtX2J5dGVjb2RlTGl2ZW5lc3M7CiAgICAgSGFzaE1hcDxD
b2RlQmxvY2sqLCBzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVLaWxscz4+IG1fYnl0ZWNvZGVLaWxs
czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3BwCmluZGV4IGRhYTI5MzM5
ZGJmYmRmODBhYWQ5YjY0NmEyY2I3YTA1ODdkOTYyMzguLmJjNmQxNWM4NGRmYTQ0ZjczNGZkYzQ3
NGRkZTdhNmJiMjY1NmU2ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTWF5RXhpdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0
LmNwcApAQCAtMTMwLDYgKzEzMCw5IEBAIEV4aXRNb2RlIG1heUV4aXQoR3JhcGgmIGdyYXBoLCBO
b2RlKiBub2RlKQogICAgIGNhc2UgU3RvcmVCYXJyaWVyOgogICAgIGNhc2UgUHV0QnlPZmZzZXQ6
CiAgICAgY2FzZSBQdXRDbG9zdXJlVmFyOgorICAgIGNhc2UgUmVzaXplR2VuZXJhdG9yTG9jYWxz
OgorICAgIGNhc2UgU2V0R2VuZXJhdG9yTG9jYWw6CisgICAgY2FzZSBHZXRHZW5lcmF0b3JMb2Nh
bDoKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIFN0ckNhdDoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdOb2RlLmgKaW5kZXggMTI4NzBkOTNkMGM0ODJlNGY4ZTVkNGQyZGFmMWU2YmYxZjcxYjYy
Yy4uM2VjNzdlMWExNGRjZTI1MzViYTEwZGYyM2YwOWE5ZTgxZjk3OGIwMyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdOb2RlLmgKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJERkdBcnJh
eU1vZGUuaCIKICNpbmNsdWRlICJERkdDb21tb24uaCIKICNpbmNsdWRlICJERkdFcG9jaC5oIgor
I2luY2x1ZGUgIkRGR0dlbmVyYXRvckxvY2FsRGF0YS5oIgogI2luY2x1ZGUgIkRGR0xhenlKU1Zh
bHVlLmgiCiAjaW5jbHVkZSAiREZHTXVsdGlHZXRCeU9mZnNldERhdGEuaCIKICNpbmNsdWRlICJE
RkdOb2RlRmxhZ3MuaCIKQEAgLTg3OCw2ICs4NzksNzIgQEAgc3RydWN0IE5vZGUgewogICAgICAg
ICByZXR1cm4gbV9vcEluZm87CiAgICAgfQogCisgICAgYm9vbCBoYXNHZW5lcmF0b3JMb2NhbHNT
aXplKCkKKyAgICB7CisgICAgICAgIHN3aXRjaCAob3AoKSkgeworICAgICAgICBjYXNlIE5ld0dl
bmVyYXRvckZyYW1lOgorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB1bnNp
Z25lZCBnZW5lcmF0b3JMb2NhbHNTaXplKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChoYXNHZW5l
cmF0b3JMb2NhbHNTaXplKCkpOworICAgICAgICByZXR1cm4gbV9vcEluZm87CisgICAgfQorCisg
ICAgYm9vbCBoYXNHZW5lcmF0b3JMb2NhbEluZGV4KCkKKyAgICB7CisgICAgICAgIHN3aXRjaCAo
b3AoKSkgeworICAgICAgICBjYXNlIFNldEdlbmVyYXRvckxvY2FsOgorICAgICAgICBjYXNlIEdl
dEdlbmVyYXRvckxvY2FsOgorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGRlZmF1
bHQ6CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB1
bnNpZ25lZCBnZW5lcmF0b3JMb2NhbEluZGV4KCkKKyAgICB7CisgICAgICAgIEFTU0VSVChoYXNH
ZW5lcmF0b3JMb2NhbEluZGV4KCkpOworICAgICAgICByZXR1cm4gbV9vcEluZm87CisgICAgfQor
CisgICAgYm9vbCBoYXNHZW5lcmF0b3JMb2NhbERhdGEoKQorICAgIHsKKyAgICAgICAgc3dpdGNo
IChvcCgpKSB7CisgICAgICAgIGNhc2UgU2V0R2VuZXJhdG9yTG9jYWw6CisgICAgICAgIGNhc2Ug
R2V0R2VuZXJhdG9yTG9jYWw6CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAg
IEdlbmVyYXRvckxvY2FsRGF0YSogZ2VuZXJhdG9yTG9jYWxEYXRhKCkKKyAgICB7CisgICAgICAg
IEFTU0VSVChoYXNHZW5lcmF0b3JMb2NhbERhdGEoKSk7CisgICAgICAgIHJldHVybiByZWludGVy
cHJldF9jYXN0PEdlbmVyYXRvckxvY2FsRGF0YSo+KG1fb3BJbmZvMik7CisgICAgfQorCisgICAg
Ym9vbCBoYXNHZW5lcmF0b3JGcmFtZUxvY2FscygpCisgICAgeworICAgICAgICBzd2l0Y2ggKG9w
KCkpIHsKKyAgICAgICAgY2FzZSBSZXNpemVHZW5lcmF0b3JMb2NhbHM6CisgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgfQorICAgIH0KKworICAgIHVuc2lnbmVkIGdlbmVyYXRvckZyYW1lTG9jYWxzKCkK
KyAgICB7CisgICAgICAgIEFTU0VSVChoYXNHZW5lcmF0b3JGcmFtZUxvY2FscygpKTsKKyAgICAg
ICAgcmV0dXJuIG1fb3BJbmZvOworICAgIH0KKwogICAgIGJvb2wgaGFzQWNjZXNzb3JBdHRyaWJ1
dGVzKCkKICAgICB7CiAgICAgICAgIHN3aXRjaCAob3AoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdOb2RlVHlwZS5oCmluZGV4IGRkZDBiOTdjYjJmZTY5MjYwNDUxMDNmOGE3MTA3MDA0
ODJlOWY2YmQuLjI5OGM4ZjhjN2NiYzlkZmM1ZjUwMjJmNTQxNjZmNmU5NDgzNzIzZGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKQEAgLTc5LDYgKzc5LDEwIEBACiAg
ICAgbWFjcm8oRmx1c2gsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhQaGFudG9tTG9j
YWwsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBcCisgICAgbWFjcm8oU2V0R2VuZXJhdG9yTG9j
YWwsIE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBtYWNybyhHZXRHZW5lcmF0b3JMb2NhbCwgTm9k
ZVJlc3VsdEpTKSBcCisgICAgbWFjcm8oUmVzaXplR2VuZXJhdG9yTG9jYWxzLCBOb2RlTXVzdEdl
bmVyYXRlKSBcCisgICAgXAogICAgIC8qIEhpbnQgdGhhdCB0aGlzIGlzIHdoZXJlIGJ5dGVjb2Rl
IHRoaW5rcyBpcyBhIGdvb2QgcGxhY2UgdG8gT1NSLiBOb3RlIHRoYXQgdGhpcyAqL1wKICAgICAv
KiB3aWxsIGV4aXN0IGV2ZW4gaW4gaW5saW5lZCBsb29wcy4gVGhpcyBoYXMgbm8gZXhlY3V0aW9u
IHNlbWFudGljcyBidXQgaXQgbXVzdCAqL1wKICAgICAvKiBzdXJ2aXZlIGFsbCBEQ0UuIFdlIHRy
ZWF0IHRoaXMgYXMgYmVpbmcgYSBjYW4tZXhpdCBiZWNhdXNlIHRpZXItdXAgdG8gRlRMIG1heSAq
L1wKQEAgLTI2Myw2ICsyNjcsNyBAQAogICAgIG1hY3JvKE5ld0FycmF5QnVmZmVyLCBOb2RlUmVz
dWx0SlMpIFwKICAgICBtYWNybyhOZXdUeXBlZEFycmF5LCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVz
dEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oTmV3UmVnZXhwLCBOb2RlUmVzdWx0SlMpIFwKKyAgICBt
YWNybyhOZXdHZW5lcmF0b3JGcmFtZSwgTm9kZVJlc3VsdEpTKSBcCiAgICAgLyogUmVzdCBQYXJh
bWV0ZXIgKi9cCiAgICAgbWFjcm8oR2V0UmVzdExlbmd0aCwgTm9kZVJlc3VsdEludDMyKSBcCiAg
ICAgbWFjcm8oQ29weVJlc3QsIE5vZGVNdXN0R2VuZXJhdGUpIFwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCmluZGV4IDJmZDVkYmRjN2ZjNGNjYTg2ZmFlMTA5
MjI3YWMxNzU3ZmRjZGY5NmMuLmJjMzU2NjEzZDNmNTIxODA4MjM4ZTUyNjgxMzVhYWIwOWJlNjdm
MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcApAQCAt
NDEsOCArNDEsOSBAQAogI2luY2x1ZGUgIkRpcmVjdEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIkZU
TEZvck9TUkVudHJ5SklUQ29kZS5oIgogI2luY2x1ZGUgIkZUTE9TUkVudHJ5LmgiCi0jaW5jbHVk
ZSAiSG9zdENhbGxSZXR1cm5WYWx1ZS5oIgorI2luY2x1ZGUgIkdlbmVyYXRvckZyYW1lLmgiCiAj
aW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCisjaW5jbHVkZSAiSG9zdENhbGxSZXR1cm5WYWx1ZS5o
IgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAi
SklURXhjZXB0aW9ucy5oIgpAQCAtODE3LDYgKzgxOCwxMSBAQCBjaGFyKiBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbk5ld0Zsb2F0NjRBcnJheVdpdGhPbmVBcmd1bWVudCgKICAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFy
Z3VtZW50czxKU0Zsb2F0NjRBcnJheT4oZXhlYywgc3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAs
IE51bGxvcHQpKTsKIH0KIAorY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdHZW5lcmF0
b3JGcmFtZShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnQzMl90IG51
bWJlck9mQ2FsbGVlTG9jYWxzKQoreworICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8Y2hhcio+KEdl
bmVyYXRvckZyYW1lOjpjcmVhdGUoZXhlYy0+dm0oKSwgc3RydWN0dXJlLCBudW1iZXJPZkNhbGxl
ZUxvY2FscykpOworfQorCiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRlQWN0
aXZhdGlvbkRpcmVjdChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU1Nj
b3BlKiBzY29wZSwgU3ltYm9sVGFibGUqIHRhYmxlLCBFbmNvZGVkSlNWYWx1ZSBpbml0aWFsVmFs
dWVFbmNvZGVkKQogewogICAgIEpTVmFsdWUgaW5pdGlhbFZhbHVlID0gSlNWYWx1ZTo6ZGVjb2Rl
KGluaXRpYWxWYWx1ZUVuY29kZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJh
dGlvbnMuaAppbmRleCA0MDk2MjlmZjVkNTNhN2JlMzg3YTYyMzY0NTVkNjgxNmFjMDg1ZWM5Li5l
NDQzYmEyODIzNzJmYmNjZTJiYWM1YjA5YTM2N2JkNTJjOGU3NWYzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaApAQCAtODIsNiArODIsNyBAQAogY2hhciogSklU
X09QRVJBVElPTiBvcGVyYXRpb25OZXdGbG9hdDMyQXJyYXlXaXRoT25lQXJndW1lbnQoRXhlY1N0
YXRlKiwgU3RydWN0dXJlKiwgRW5jb2RlZEpTVmFsdWUpIFdURl9JTlRFUk5BTDsKIGNoYXIqIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3RmxvYXQ2NEFycmF5V2l0aFNpemUoRXhlY1N0YXRlKiwg
U3RydWN0dXJlKiwgaW50MzJfdCkgV1RGX0lOVEVSTkFMOwogY2hhciogSklUX09QRVJBVElPTiBv
cGVyYXRpb25OZXdGbG9hdDY0QXJyYXlXaXRoT25lQXJndW1lbnQoRXhlY1N0YXRlKiwgU3RydWN0
dXJlKiwgRW5jb2RlZEpTVmFsdWUpIFdURl9JTlRFUk5BTDsKK2NoYXIqIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uTmV3R2VuZXJhdG9yRnJhbWUoRXhlY1N0YXRlKiwgU3RydWN0dXJlKiwgaW50MzJf
dCkgV1RGX0lOVEVSTkFMOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsU3Ry
aWN0KEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkUHJvcGVydHksIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkgV1RGX0lOVEVS
TkFMOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsTm9uU3RyaWN0KEV4ZWNT
dGF0ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
UHJvcGVydHksIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkgV1RGX0lOVEVSTkFMOwogdm9p
ZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsQ2VsbFN0cmljdChFeGVjU3RhdGUqLCBK
U0NlbGwqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkUHJvcGVydHksIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSkgV1RGX0lOVEVSTkFMOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAppbmRleCA1Nzk5
OGNmZTE4MWE4ZmNmOWNjNjUxNDM1MWFjNTgwYjgwZTdmYjhhLi4yZDNhYmJkMmU3NjBiZTY0NWE3
MGNhMTVmODljZjU5MDhkOTIyZmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcApAQCAtMTYwLDYg
KzE2MCwyNCBAQCBjbGFzcyBQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZSA6IHB1YmxpYyBQaGFz
ZSB7CiAgICAgICAgICAgICBjaGFuZ2VkIHw9IHZhcmlhYmxlQWNjZXNzRGF0YS0+cHJlZGljdChu
b2RlLT5jaGlsZDEoKS0+cHJlZGljdGlvbigpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CisKKyAgICAgICAgY2FzZSBTZXRHZW5lcmF0b3JMb2NhbDogeworICAgICAgICAgICAgR2Vu
ZXJhdG9yTG9jYWxEYXRhKiBnZW5lcmF0b3JMb2NhbERhdGEgPSBub2RlLT5nZW5lcmF0b3JMb2Nh
bERhdGEoKTsKKyAgICAgICAgICAgIGNoYW5nZWQgfD0gZ2VuZXJhdG9yTG9jYWxEYXRhLT5wcmVk
aWN0KG5vZGUtPmNoaWxkMigpLT5wcmVkaWN0aW9uKCkpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KKworICAgICAgICBjYXNlIEdldEdlbmVyYXRvckxvY2FsOiB7CisgICAgICAgICAg
ICBHZW5lcmF0b3JMb2NhbERhdGEqIGdlbmVyYXRvckxvY2FsRGF0YSA9IG5vZGUtPmdlbmVyYXRv
ckxvY2FsRGF0YSgpOworICAgICAgICAgICAgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiA9IGdl
bmVyYXRvckxvY2FsRGF0YS0+cHJlZGljdGlvbigpOworICAgICAgICAgICAgLy8gV2UgYWx3YXlz
IHN0b3JlIHRoZSB2YWx1ZSBpbiBHZW5lcmF0b3JMb2NhbCBhcyBGb3JtYXRKU1ZhbHVlLgorICAg
ICAgICAgICAgLy8gU28gZG91YmxlIHZhbHVlIGlzIGJldHRlciB0aGFuIEludDUyIHZhbHVlLgor
ICAgICAgICAgICAgaWYgKHByZWRpY3Rpb24gJiBTcGVjSW50NTIpCisgICAgICAgICAgICAgICAg
cHJlZGljdGlvbiA9IChwcmVkaWN0aW9uIHwgU3BlY0ludDUyQXNEb3VibGUpICYgflNwZWNJbnQ1
MjsKKyAgICAgICAgICAgIGlmIChwcmVkaWN0aW9uKQorICAgICAgICAgICAgICAgIGNoYW5nZWQg
fD0gbWVyZ2VQcmVkaWN0aW9uKHByZWRpY3Rpb24pOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0KICAgICAgICAgICAgIAogICAgICAgICBjYXNlIEJpdEFuZDoKICAgICAgICAgY2FzZSBC
aXRPcjoKQEAgLTUyNCw3ICs1NDIsOCBAQCBjbGFzcyBQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFz
ZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICBjYXNl
IE5ld1JlZ2V4cDoKLSAgICAgICAgY2FzZSBDcmVhdGVBY3RpdmF0aW9uOiB7CisgICAgICAgIGNh
c2UgQ3JlYXRlQWN0aXZhdGlvbjoKKyAgICAgICAgY2FzZSBOZXdHZW5lcmF0b3JGcmFtZTogewog
ICAgICAgICAgICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9uKFNwZWNPYmplY3RPdGhlcik7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtNzE2LDYgKzczNSw3IEBAIGNsYXNzIFBy
ZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgY2FzZSBF
eGl0T0s6CiAgICAgICAgIGNhc2UgTG9hZFZhcmFyZ3M6CiAgICAgICAgIGNhc2UgQ29weVJlc3Q6
CisgICAgICAgIGNhc2UgUmVzaXplR2VuZXJhdG9yTG9jYWxzOgogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICAKICAgICAgICAgLy8gVGhpcyBnZXRzIGlnbm9yZWQgYmVjYXVzZSBpdCBv
bmx5IHByZXRlbmRzIHRvIHByb2R1Y2UgYSB2YWx1ZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKaW5kZXggMjMwZWZlZGM0ODMxNTEyYmFjNTY4YmVlZmRi
Mjc2OTYxODcyMDk0Yy4uODdjM2UwMjY4YzU4MTEyOGNkYmJmMWZiNTViMzY2OTJmYzQxNmRlNCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKQEAgLTIz
Nyw2ICsyMzcsNyBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0YXRl
LCBHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBOZXdBcnJheVdpdGhTaXplOgog
ICAgIGNhc2UgTmV3QXJyYXlCdWZmZXI6CiAgICAgY2FzZSBOZXdSZWdleHA6CisgICAgY2FzZSBO
ZXdHZW5lcmF0b3JGcmFtZToKICAgICBjYXNlIEJyZWFrcG9pbnQ6CiAgICAgY2FzZSBQcm9maWxl
V2lsbENhbGw6CiAgICAgY2FzZSBQcm9maWxlRGlkQ2FsbDoKQEAgLTMyOCw2ICszMjksOSBAQCBi
b29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgs
IE5vZGUqIG5vZGUpCiAgICAgY2FzZSBHZXRNeUFyZ3VtZW50QnlWYWw6CiAgICAgY2FzZSBGb3J3
YXJkVmFyYXJnczoKICAgICBjYXNlIENvcHlSZXN0OgorICAgIGNhc2UgU2V0R2VuZXJhdG9yTG9j
YWw6CisgICAgY2FzZSBHZXRHZW5lcmF0b3JMb2NhbDoKKyAgICBjYXNlIFJlc2l6ZUdlbmVyYXRv
ckxvY2FsczoKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBjYXNlIEJvdHRvbVZhbHVlOgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAppbmRl
eCBjY2NlNzkxOTk1MTQ1ZTkxZWZkMjAwODhjOTZiN2FmODJiNTYxNmQ2Li41Zjk2OWZjODA5YTE2
ODY2ZjBkYWQ4MjZkNmEyZDNmMmJlNDVhYmQzIDEwMDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUg
IkRGR1NhbmVTdHJpbmdHZXRCeVZhbFNsb3dQYXRoR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiREZH
U2xvd1BhdGhHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJEaXJlY3RBcmd1bWVudHMuaCIKKyNpbmNs
dWRlICJHZW5lcmF0b3JGcmFtZS5oIgogI2luY2x1ZGUgIkpJVEFkZEdlbmVyYXRvci5oIgogI2lu
Y2x1ZGUgIkpJVEJpdEFuZEdlbmVyYXRvci5oIgogI2luY2x1ZGUgIkpJVEJpdE9yR2VuZXJhdG9y
LmgiCkBAIC02Mzc4LDYgKzYzNzksNDIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5l
d1N0cmluZ09iamVjdChOb2RlKiBub2RlKQogICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2Rl
KTsKIH0KIAordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld0dlbmVyYXRvckZyYW1lKE5v
ZGUqIG5vZGUpCit7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1faml0Lmdy
YXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUgPSBnbG9iYWxPYmplY3QtPmdlbmVyYXRvckZyYW1lU3RydWN0dXJlKCk7
CisgICAgdW5zaWduZWQgZ2VuZXJhdG9yTG9jYWxzU2l6ZSA9IG5vZGUtPmdlbmVyYXRvckxvY2Fs
c1NpemUoKTsKKworICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CisgICAgR1BSVGVtcG9y
YXJ5IHNjcmF0Y2gxKHRoaXMpOworICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoMih0aGlzKTsKKwor
ICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CisgICAgR1BSUmVnIHNjcmF0Y2gx
R1BSID0gc2NyYXRjaDEuZ3ByKCk7CisgICAgR1BSUmVnIHNjcmF0Y2gyR1BSID0gc2NyYXRjaDIu
Z3ByKCk7CisKKyAgICBKSVRDb21waWxlcjo6SnVtcExpc3Qgc2xvd1BhdGg7CisKKyAgICBlbWl0
QWxsb2NhdGVKU09iamVjdFdpdGhLbm93blNpemU8R2VuZXJhdG9yRnJhbWU+KHJlc3VsdEdQUiwg
VHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpLCBUcnVzdGVkSW1tUHRyKG51bGxwdHIpLCBzY3JhdGNo
MUdQUiwgc2NyYXRjaDJHUFIsIHNsb3dQYXRoLCBHZW5lcmF0b3JGcmFtZTo6YWxsb2NhdGlvblNp
emVGb3JMb2NhbHMoZ2VuZXJhdG9yTG9jYWxzU2l6ZSkpOworICAgIG1faml0LnN0b3JlMzIoVHJ1
c3RlZEltbTMyKGdlbmVyYXRvckxvY2Fsc1NpemUpLCBKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1
bHRHUFIsIEdlbmVyYXRvckZyYW1lOjpudW1iZXJPZkNhbGxlZUxvY2Fsc09mZnNldCgpKSk7Cisg
ICAgbV9qaXQuc3RvcmUzMihUcnVzdGVkSW1tMzIoMCksIEpJVENvbXBpbGVyOjpBZGRyZXNzKHJl
c3VsdEdQUiwgR2VuZXJhdG9yRnJhbWU6Om51bWJlck9mU2F2ZWRDYWxsZWVMb2NhbHNPZmZzZXQo
KSkpOworICAgIEpTVmFsdWUgZW1wdHlWYWx1ZTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgZ2VuZXJhdG9yTG9jYWxzU2l6ZTsgKytpKQorICAgICAgICBtX2ppdC5zdG9yZVRydXN0ZWRW
YWx1ZShlbXB0eVZhbHVlLCBKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIEdlbmVyYXRv
ckZyYW1lOjpsb2NhbE9mZnNldChpKSkpOworCisgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xv
d1BhdGhDYWxsKHNsb3dQYXRoLCB0aGlzLCBvcGVyYXRpb25OZXdHZW5lcmF0b3JGcmFtZSwgcmVz
dWx0R1BSLCBzdHJ1Y3R1cmUsIGdlbmVyYXRvckxvY2Fsc1NpemUpKTsKKworICAgIGNlbGxSZXN1
bHQocmVzdWx0R1BSLCBub2RlKTsKK30KKwordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVJl
c2l6ZUdlbmVyYXRvckxvY2FscyhOb2RlKiBub2RlKQoreworICAgIFNwZWN1bGF0ZUNlbGxPcGVy
YW5kIGZyYW1lKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICBHUFJSZWcgZnJhbWVHUFIgPSBm
cmFtZS5ncHIoKTsKKyAgICBtX2ppdC5zdG9yZTMyKFRydXN0ZWRJbW0zMihub2RlLT5nZW5lcmF0
b3JGcmFtZUxvY2FscygpKSwgSklUQ29tcGlsZXI6OkFkZHJlc3MoZnJhbWVHUFIsIEdlbmVyYXRv
ckZyYW1lOjpudW1iZXJPZlNhdmVkQ2FsbGVlTG9jYWxzT2Zmc2V0KCkpKTsKKyAgICBub1Jlc3Vs
dChub2RlKTsKK30KKwogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld1R5cGVkQXJyYXko
Tm9kZSogbm9kZSkKIHsKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9qaXQu
Z3JhcGgoKS5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAppbmRleCA1MzEyYzhkYmVk
ZmVkMTgwMDU0MzgxMTMwNzllZWIwYjBlOTkwOGFiLi4wMGE0ZmE5MmFjNzNlNTgzOWFiODU2ZWFi
OWY0MzY0MjBlNTJjYjE1IDEwMDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5oCkBAIC0yMjgxLDYgKzIyODEsOCBAQCBjbGFzcyBTcGVjdWxhdGl2ZUpJVCB7
CiAgICAgdm9pZCBjb21waWxlUHV0QnlWYWxGb3JGbG9hdFR5cGVkQXJyYXkoR1BSUmVnIGJhc2Us
IEdQUlJlZyBwcm9wZXJ0eSwgTm9kZSosIFR5cGVkQXJyYXlUeXBlKTsKICAgICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgQ2xhc3NUeXBlPiB2b2lkIGNvbXBpbGVOZXdGdW5jdGlvbkNvbW1vbihHUFJSZWcs
IFN0cnVjdHVyZSosIEdQUlJlZywgR1BSUmVnLCBHUFJSZWcsIE1hY3JvQXNzZW1ibGVyOjpKdW1w
TGlzdCYsIHNpemVfdCwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgcHRyZGlmZl90LCBwdHJkaWZmX3Qs
IHB0cmRpZmZfdCk7CiAgICAgdm9pZCBjb21waWxlTmV3RnVuY3Rpb24oTm9kZSopOworICAgIHZv
aWQgY29tcGlsZU5ld0dlbmVyYXRvckZyYW1lKE5vZGUqKTsKKyAgICB2b2lkIGNvbXBpbGVSZXNp
emVHZW5lcmF0b3JMb2NhbHMoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUZvcndhcmRWYXJhcmdz
KE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVDcmVhdGVBY3RpdmF0aW9uKE5vZGUqKTsKICAgICB2
b2lkIGNvbXBpbGVDcmVhdGVEaXJlY3RBcmd1bWVudHMoTm9kZSopOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKaW5kZXggMTJl
YjUwNDExODBhYzJmNTAxNjRmOTUxYjA1OGVkYjYyZDIyODI3MC4uNDY2ZDNhYmIzODBiNDFjMTIx
NTZhMTVkMWI2OTZlZTlmNWQ5MmEzOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCkBAIC0zNjUwLDYgKzM2NTAsMTEgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBjZWxsUmVz
dWx0KHJlc3VsdFBheWxvYWQuZ3ByKCksIG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9CisK
KyAgICBjYXNlIE5ld0dlbmVyYXRvckZyYW1lOiB7CisgICAgICAgIGNvbXBpbGVOZXdHZW5lcmF0
b3JGcmFtZShub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogICAgICAgICAKICAgICBjYXNl
IFRvVGhpczogewogICAgICAgICBBU1NFUlQobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IFVu
dHlwZWRVc2UpOwpAQCAtNDcxOCw2ICs0NzIzLDQxIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwog
ICAgICAgICBicmVhazsKICAgICB9CisgICAgY2FzZSBTZXRHZW5lcmF0b3JMb2NhbDogeworICAg
ICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBmcmFtZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Cisg
ICAgICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKKworICAg
ICAgICBHUFJSZWcgZnJhbWVHUFIgPSBmcmFtZS5ncHIoKTsKKyAgICAgICAgR1BSUmVnIHZhbHVl
VGFnR1BSID0gdmFsdWUudGFnR1BSKCk7CisgICAgICAgIEdQUlJlZyB2YWx1ZVBheWxvYWRHUFIg
PSB2YWx1ZS5wYXlsb2FkR1BSKCk7CisgICAgICAgIHVuc2lnbmVkIGdlbmVyYXRvckxvY2FsSW5k
ZXggPSBub2RlLT5nZW5lcmF0b3JMb2NhbEluZGV4KCk7CisKKyAgICAgICAgbV9qaXQuc3RvcmUz
Mih2YWx1ZVRhZ0dQUiwgSklUQ29tcGlsZXI6OkFkZHJlc3MoZnJhbWVHUFIsIEdlbmVyYXRvckZy
YW1lOjpsb2NhbE9mZnNldChnZW5lcmF0b3JMb2NhbEluZGV4KSArIE9CSkVDVF9PRkZTRVRPRihK
U1ZhbHVlLCB1LmFzQml0cy50YWcpKSk7CisgICAgICAgIG1faml0LnN0b3JlMzIodmFsdWVQYXls
b2FkR1BSLCBKSVRDb21waWxlcjo6QWRkcmVzcyhmcmFtZUdQUiwgR2VuZXJhdG9yRnJhbWU6Omxv
Y2FsT2Zmc2V0KGdlbmVyYXRvckxvY2FsSW5kZXgpICsgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUs
IHUuYXNCaXRzLnBheWxvYWQpKSk7CisKKyAgICAgICAgbm9SZXN1bHQobm9kZSk7CisgICAgICAg
IGJyZWFrOworICAgIH0KKyAgICBjYXNlIEdldEdlbmVyYXRvckxvY2FsOiB7CisgICAgICAgIFNw
ZWN1bGF0ZUNlbGxPcGVyYW5kIGZyYW1lKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAg
R1BSVGVtcG9yYXJ5IHJlc3VsdFRhZyh0aGlzKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3Vs
dFBheWxvYWQodGhpcyk7CisKKyAgICAgICAgR1BSUmVnIGZyYW1lR1BSID0gZnJhbWUuZ3ByKCk7
CisgICAgICAgIEdQUlJlZyByZXN1bHRUYWdHUFIgPSByZXN1bHRUYWcuZ3ByKCk7CisgICAgICAg
IEdQUlJlZyByZXN1bHRQYXlsb2FkR1BSID0gcmVzdWx0UGF5bG9hZC5ncHIoKTsKKyAgICAgICAg
dW5zaWduZWQgZ2VuZXJhdG9yTG9jYWxJbmRleCA9IG5vZGUtPmdlbmVyYXRvckxvY2FsSW5kZXgo
KTsKKworICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OkFkZHJlc3MoZnJhbWVHUFIs
IEdlbmVyYXRvckZyYW1lOjpsb2NhbE9mZnNldChnZW5lcmF0b3JMb2NhbEluZGV4KSArIE9CSkVD
VF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy50YWcpKSwgcmVzdWx0VGFnR1BSKTsKKyAgICAg
ICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGZyYW1lR1BSLCBHZW5lcmF0b3JG
cmFtZTo6bG9jYWxPZmZzZXQoZ2VuZXJhdG9yTG9jYWxJbmRleCkgKyBPQkpFQ1RfT0ZGU0VUT0Yo
SlNWYWx1ZSwgdS5hc0JpdHMucGF5bG9hZCkpLCByZXN1bHRQYXlsb2FkR1BSKTsKKworICAgICAg
ICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQUiwgbm9kZSk7Cisg
ICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIFJlc2l6ZUdlbmVyYXRvckxvY2Fsczogewor
ICAgICAgICBjb21waWxlUmVzaXplR2VuZXJhdG9yTG9jYWxzKG5vZGUpOworICAgICAgICBicmVh
azsKKyAgICB9CiAgICAgY2FzZSBQcm9maWxlVHlwZTogewogICAgICAgICBKU1ZhbHVlT3BlcmFu
ZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIEdQUlRlbXBvcmFyeSBzY3Jh
dGNoMSh0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklUNjQuY3BwCmluZGV4IGU3NDU2OTQwNGMxYjk3ODQ4MDYxOTdkMTQ1NDVjZDFkYjIzZDdh
NWMuLjVhOGZjZDQ0ZDEzNWFkZTE1MzdiMjdlZGJmMGM5YTA4YjViMzNjNGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAtMzYs
NiArMzYsNyBAQAogI2luY2x1ZGUgIkRGR1Nsb3dQYXRoR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAi
RGVidWdnZXIuaCIKICNpbmNsdWRlICJEaXJlY3RBcmd1bWVudHMuaCIKKyNpbmNsdWRlICJHZW5l
cmF0b3JGcmFtZS5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIkpTQ0lu
bGluZXMuaCIKICNpbmNsdWRlICJKU0Vudmlyb25tZW50UmVjb3JkLmgiCkBAIC0zNjg4LDYgKzM2
ODksMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAg
ICBjZWxsUmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0K
KworICAgIGNhc2UgTmV3R2VuZXJhdG9yRnJhbWU6IHsKKyAgICAgICAgY29tcGlsZU5ld0dlbmVy
YXRvckZyYW1lKG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CiAgICAgICAgIAogICAgIGNh
c2UgVG9UaGlzOiB7CiAgICAgICAgIEFTU0VSVChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0g
VW50eXBlZFVzZSk7CkBAIC00NzIwLDYgKzQ3MjYsMzUgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7
CiAgICAgICAgIGJyZWFrOwogICAgIH0KKyAgICBjYXNlIFNldEdlbmVyYXRvckxvY2FsOiB7Cisg
ICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGZyYW1lKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsK
KyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQyKCkpOworCisg
ICAgICAgIEdQUlJlZyBmcmFtZUdQUiA9IGZyYW1lLmdwcigpOworICAgICAgICBHUFJSZWcgdmFs
dWVHUFIgPSB2YWx1ZS5ncHIoKTsKKyAgICAgICAgdW5zaWduZWQgZ2VuZXJhdG9yTG9jYWxJbmRl
eCA9IG5vZGUtPmdlbmVyYXRvckxvY2FsSW5kZXgoKTsKKworICAgICAgICBtX2ppdC5zdG9yZTY0
KHZhbHVlR1BSLCBKSVRDb21waWxlcjo6QWRkcmVzcyhmcmFtZUdQUiwgR2VuZXJhdG9yRnJhbWU6
OmxvY2FsT2Zmc2V0KGdlbmVyYXRvckxvY2FsSW5kZXgpKSk7CisKKyAgICAgICAgbm9SZXN1bHQo
bm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIEdldEdlbmVyYXRvckxvY2Fs
OiB7CisgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGZyYW1lKHRoaXMsIG5vZGUtPmNoaWxk
MSgpKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKworICAgICAgICBHUFJS
ZWcgZnJhbWVHUFIgPSBmcmFtZS5ncHIoKTsKKyAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJl
c3VsdC5ncHIoKTsKKyAgICAgICAgdW5zaWduZWQgZ2VuZXJhdG9yTG9jYWxJbmRleCA9IG5vZGUt
PmdlbmVyYXRvckxvY2FsSW5kZXgoKTsKKworICAgICAgICBtX2ppdC5sb2FkNjQoSklUQ29tcGls
ZXI6OkFkZHJlc3MoZnJhbWVHUFIsIEdlbmVyYXRvckZyYW1lOjpsb2NhbE9mZnNldChnZW5lcmF0
b3JMb2NhbEluZGV4KSksIHJlc3VsdEdQUik7CisgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0
R1BSLCBub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgUmVzaXplR2VuZXJh
dG9yTG9jYWxzOiB7CisgICAgICAgIGNvbXBpbGVSZXNpemVHZW5lcmF0b3JMb2NhbHMobm9kZSk7
CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICBjYXNlIFByb2ZpbGVUeXBlOiB7CiAgICAgICAg
IEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgR1BS
VGVtcG9yYXJ5IHNjcmF0Y2gxKHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcAppbmRleCA3MmYy
MjAwY2VhMTBiOTgxMGRiYThjN2IxOWZlZmYyNGRhYTVkYWUzLi5kN2M3MDU2NmZjNzM3Zjg5MGYx
NTZiNTM0NTA5ZDlhMGMwNzM4ZTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcApAQCAtMjgxLDYg
KzI4MSwxMSBAQCBjbGFzcyBTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZSA6IHB1YmxpYyBQaGFz
ZSB7CiAgICAgICAgICAgICAgICAgY29uc2lkZXJCYXJyaWVyKG1fbm9kZS0+Y2hpbGQxKCksIG1f
bm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQor
CisgICAgICAgICAgICBjYXNlIFNldEdlbmVyYXRvckxvY2FsOiB7CisgICAgICAgICAgICAgICAg
Y29uc2lkZXJCYXJyaWVyKG1fbm9kZS0+Y2hpbGQxKCksIG1fbm9kZS0+Y2hpbGQyKCkpOworICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIAogICAg
ICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTI5Niw2ICszMDEs
NyBAQCBjbGFzcyBTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAg
ICAgICAgICAgICBjYXNlIE5ld0FycmF5QnVmZmVyOgogICAgICAgICAgICAgY2FzZSBOZXdUeXBl
ZEFycmF5OgogICAgICAgICAgICAgY2FzZSBOZXdSZWdleHA6CisgICAgICAgICAgICBjYXNlIE5l
d0dlbmVyYXRvckZyYW1lOgogICAgICAgICAgICAgY2FzZSBNYXRlcmlhbGl6ZU5ld09iamVjdDoK
ICAgICAgICAgICAgIGNhc2UgTWF0ZXJpYWxpemVDcmVhdGVBY3RpdmF0aW9uOgogICAgICAgICAg
ICAgY2FzZSBOZXdTdHJpbmdPYmplY3Q6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2UuY3BwCmluZGV4IDJjMDU1
OTg0OTg5OWJkZjZmYjExMTc1OTdlMTA1NGJmZjM1NDY2OTMuLmUxYWVmMGIyYzM5M2Y1NjE5NDhj
Y2E1YTk1OWYyZTA3MTA4ODQzODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2UuY3BwCkBAIC0xNDksNiAr
MTQ5LDkgQEAgY2xhc3MgU3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2Ug
ewogICAgICAgICAgICAgICAgIGNhc2UgTmV3R2VuZXJhdG9yRnVuY3Rpb246CiAgICAgICAgICAg
ICAgICAgICAgIHJlZ2lzdGVyU3RydWN0dXJlKG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYyktPmdlbmVyYXRvckZ1bmN0aW9uU3RydWN0dXJlKCkpOwogICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIE5ld0dlbmVyYXRvckZy
YW1lOgorICAgICAgICAgICAgICAgICAgICByZWdpc3RlclN0cnVjdHVyZShtX2dyYXBoLmdsb2Jh
bE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5nZW5lcmF0b3JGcmFtZVN0cnVjdHVy
ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIAog
ICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0
b3J5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3Np
dG9yeS5jcHAKaW5kZXggOTdjMDc4NGJiNDJiYzkxOWQwNmNmNTIzYzQxZTAyNDZhNTM1MWQ5MS4u
NjlkODlkNmFkNDI1NDkyM2JjM2ZhYjNjN2FjYTIwODk1YzU1ZTVjYSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3Bw
CkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJEaXJlY3RBcmd1bWVudHMuaCIKICNpbmNs
dWRlICJGVExBYmJyZXZpYXRpb25zLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yRnJhbWUuaCIKICNp
bmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJKU0Vudmlyb25tZW50UmVjb3JkLmgi
CiAjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmgiCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCmluZGV4IDc3
ZTU3OTg2OTQwYzZhYzk2Zjg3ZjFmOTQ1YzQ2MjUxMjg4NjMwZjAuLjQ4ODYzYzBiZDMwZjY0NTc2
NTMxMDhiZjQ1NjliMTJjOTQwODU4YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCkBAIC00Nyw2ICs0Nyw4IEBACiAg
ICAgbWFjcm8oRGlyZWN0QXJndW1lbnRzX2xlbmd0aCwgRGlyZWN0QXJndW1lbnRzOjpvZmZzZXRP
Zkxlbmd0aCgpKSBcCiAgICAgbWFjcm8oRGlyZWN0QXJndW1lbnRzX21pbkNhcGFjaXR5LCBEaXJl
Y3RBcmd1bWVudHM6Om9mZnNldE9mTWluQ2FwYWNpdHkoKSkgXAogICAgIG1hY3JvKERpcmVjdEFy
Z3VtZW50c19vdmVycmlkZXMsIERpcmVjdEFyZ3VtZW50czo6b2Zmc2V0T2ZPdmVycmlkZXMoKSkg
XAorICAgIG1hY3JvKEdlbmVyYXRvckZyYW1lX251bWJlck9mQ2FsbGVlTG9jYWxzLCBHZW5lcmF0
b3JGcmFtZTo6bnVtYmVyT2ZDYWxsZWVMb2NhbHNPZmZzZXQoKSkgXAorICAgIG1hY3JvKEdlbmVy
YXRvckZyYW1lX251bWJlck9mU2F2ZWRDYWxsZWVMb2NhbHMsIEdlbmVyYXRvckZyYW1lOjpudW1i
ZXJPZlNhdmVkQ2FsbGVlTG9jYWxzT2Zmc2V0KCkpIFwKICAgICBtYWNybyhHZXR0ZXJTZXR0ZXJf
Z2V0dGVyLCBHZXR0ZXJTZXR0ZXI6Om9mZnNldE9mR2V0dGVyKCkpIFwKICAgICBtYWNybyhHZXR0
ZXJTZXR0ZXJfc2V0dGVyLCBHZXR0ZXJTZXR0ZXI6Om9mZnNldE9mU2V0dGVyKCkpIFwKICAgICBt
YWNybyhKU0FycmF5QnVmZmVyVmlld19sZW5ndGgsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRP
Zkxlbmd0aCgpKSBcCkBAIC05MSw2ICs5Myw3IEBACiAKICNkZWZpbmUgRk9SX0VBQ0hfSU5ERVhF
RF9BQlNUUkFDVF9IRUFQKG1hY3JvKSBcCiAgICAgbWFjcm8oRGlyZWN0QXJndW1lbnRzX3N0b3Jh
Z2UsIERpcmVjdEFyZ3VtZW50czo6c3RvcmFnZU9mZnNldCgpLCBzaXplb2YoRW5jb2RlZEpTVmFs
dWUpKSBcCisgICAgbWFjcm8oR2VuZXJhdG9yRnJhbWVfY2FsbGVlTG9jYWxzLCBHZW5lcmF0b3JG
cmFtZTo6b2Zmc2V0T2ZMb2NhbHMoKSwgc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPikpIFwK
ICAgICBtYWNybyhKU0Vudmlyb25tZW50UmVjb3JkX3ZhcmlhYmxlcywgSlNFbnZpcm9ubWVudFJl
Y29yZDo6b2Zmc2V0T2ZWYXJpYWJsZXMoKSwgc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSkgXAogICAg
IG1hY3JvKEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcl9jYWNoZWRQcm9wZXJ0eU5hbWVzVmVjdG9y
Q29udGVudHMsIDAsIHNpemVvZihXcml0ZUJhcnJpZXI8SlNTdHJpbmc+KSkgXAogICAgIG1hY3Jv
KEpTUm9wZVN0cmluZ19maWJlcnMsIEpTUm9wZVN0cmluZzo6b2Zmc2V0T2ZGaWJlcnMoKSwgc2l6
ZW9mKFdyaXRlQmFycmllcjxKU1N0cmluZz4pKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKaW5kZXggZDJhNDkwYzJhNjdlNmRiOGI5YTVhNzk2NjRl
NTY1ZTNkNmQ5NTFkYy4uMGUxZGZlODc1ZTEwYTViNTY1NTZmYTlkZDViZmRiM2U2OTBmODM4OCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcApAQCAt
NzIsNiArNzIsNyBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoTm9kZSogbm9k
ZSkKICAgICBjYXNlIE5ld09iamVjdDoKICAgICBjYXNlIE5ld0FycmF5OgogICAgIGNhc2UgTmV3
QXJyYXlCdWZmZXI6CisgICAgY2FzZSBOZXdHZW5lcmF0b3JGcmFtZToKICAgICBjYXNlIEdldEJ5
T2Zmc2V0OgogICAgIGNhc2UgR2V0R2V0dGVyU2V0dGVyQnlPZmZzZXQ6CiAgICAgY2FzZSBHZXRH
ZXR0ZXI6CkBAIC0yMTYsNiArMjE3LDkgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21w
aWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBQdXRTZXR0ZXJCeVZhbDoKICAgICBjYXNlIENvcHlS
ZXN0OgogICAgIGNhc2UgR2V0UmVzdExlbmd0aDoKKyAgICBjYXNlIFNldEdlbmVyYXRvckxvY2Fs
OgorICAgIGNhc2UgR2V0R2VuZXJhdG9yTG9jYWw6CisgICAgY2FzZSBSZXNpemVHZW5lcmF0b3JM
b2NhbHM6CiAgICAgICAgIC8vIFRoZXNlIGFyZSBPSy4KICAgICAgICAgYnJlYWs7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAKaW5kZXggMzdj
YWU1YzE3YWQ5YzcxZDAxOGQ0MWJiNmU5YTY2YzkxNzc5NjZmMi4uYjFjZjY1MGJjYjQ5Zjc5YzIz
ZDM4OTdiZDE5YzVjZWEzZjcxODkyMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExMb3dlckRGR1RvTExWTS5jcHAKQEAgLTUzLDYgKzUzLDcgQEAKICNpbmNsdWRlICJGVExQ
YXRjaHBvaW50RXhjZXB0aW9uSGFuZGxlLmgiCiAjaW5jbHVkZSAiRlRMVGh1bmtzLmgiCiAjaW5j
bHVkZSAiRlRMV2VpZ2h0ZWRUYXJnZXQuaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JGcmFtZS5oIgog
I2luY2x1ZGUgIkpJVEFkZEdlbmVyYXRvci5oIgogI2luY2x1ZGUgIkpJVEJpdEFuZEdlbmVyYXRv
ci5oIgogI2luY2x1ZGUgIkpJVEJpdE9yR2VuZXJhdG9yLmgiCkBAIC04MzksNiArODQwLDkgQEAg
Y2xhc3MgTG93ZXJERkdUb0xMVk0gewogICAgICAgICBjYXNlIE5ld0FycmF5V2l0aFNpemU6CiAg
ICAgICAgICAgICBjb21waWxlTmV3QXJyYXlXaXRoU2l6ZSgpOwogICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgTmV3R2VuZXJhdG9yRnJhbWU6CisgICAgICAgICAgICBjb21waWxlTmV3
R2VuZXJhdG9yRnJhbWUoKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEdldFR5
cGVkQXJyYXlCeXRlT2Zmc2V0OgogICAgICAgICAgICAgY29tcGlsZUdldFR5cGVkQXJyYXlCeXRl
T2Zmc2V0KCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTEwNzEsNiArMTA3NSwxNSBAQCBjbGFz
cyBMb3dlckRGR1RvTExWTSB7CiAgICAgICAgIGNhc2UgR2V0UmVzdExlbmd0aDoKICAgICAgICAg
ICAgIGNvbXBpbGVHZXRSZXN0TGVuZ3RoKCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBSZXNpemVHZW5lcmF0b3JMb2NhbHM6CisgICAgICAgICAgICBjb21waWxlUmVzaXplR2Vu
ZXJhdG9yTG9jYWxzKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTZXRHZW5l
cmF0b3JMb2NhbDoKKyAgICAgICAgICAgIGNvbXBpbGVTZXRHZW5lcmF0b3JMb2NhbCgpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR2V0R2VuZXJhdG9yTG9jYWw6CisgICAgICAg
ICAgICBjb21waWxlR2V0R2VuZXJhdG9yTG9jYWwoKTsKKyAgICAgICAgICAgIGJyZWFrOwogCiAg
ICAgICAgIGNhc2UgUGhhbnRvbUxvY2FsOgogICAgICAgICBjYXNlIExvb3BIaW50OgpAQCAtMzkx
Niw2ICszOTI5LDI4IEBAIGNsYXNzIExvd2VyREZHVG9MTFZNIHsKICAgICAgICAgbV9vdXQuYXBw
ZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7CiAgICAgICAgIHNldEludDMyKG1fb3V0LnBo
aShtX291dC5pbnQzMiwgemVyb0xlbmd0aFJlc3VsdCwgbm9uWmVyb0xlbmd0aFJlc3VsdCkpOwog
ICAgIH0KKworICAgIHZvaWQgY29tcGlsZVJlc2l6ZUdlbmVyYXRvckxvY2FscygpCisgICAgewor
ICAgICAgICBMVmFsdWUgZnJhbWUgPSBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAg
ICBtX291dC5zdG9yZTMyKG1fb3V0LmNvbnN0SW50MzIobV9ub2RlLT5nZW5lcmF0b3JGcmFtZUxv
Y2FscygpKSwgZnJhbWUsIG1faGVhcHMuR2VuZXJhdG9yRnJhbWVfbnVtYmVyT2ZTYXZlZENhbGxl
ZUxvY2Fscyk7CisgICAgfQorCisgICAgdm9pZCBjb21waWxlU2V0R2VuZXJhdG9yTG9jYWwoKQor
ICAgIHsKKyAgICAgICAgbV9vdXQuc3RvcmU2NCgKKyAgICAgICAgICAgIGxvd0pTVmFsdWUobV9u
b2RlLT5jaGlsZDIoKSksCisgICAgICAgICAgICBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpLAor
ICAgICAgICAgICAgbV9oZWFwcy5HZW5lcmF0b3JGcmFtZV9jYWxsZWVMb2NhbHNbbV9ub2RlLT5n
ZW5lcmF0b3JMb2NhbEluZGV4KCldKTsKKyAgICB9CisKKyAgICB2b2lkIGNvbXBpbGVHZXRHZW5l
cmF0b3JMb2NhbCgpCisgICAgeworICAgICAgICBzZXRKU1ZhbHVlKAorICAgICAgICAgICAgbV9v
dXQubG9hZDY0KAorICAgICAgICAgICAgICAgIGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSksCisg
ICAgICAgICAgICAgICAgbV9oZWFwcy5HZW5lcmF0b3JGcmFtZV9jYWxsZWVMb2NhbHNbbV9ub2Rl
LT5nZW5lcmF0b3JMb2NhbEluZGV4KCldKSk7CisgICAgfQogICAgIAogICAgIHZvaWQgY29tcGls
ZU5ld09iamVjdCgpCiAgICAgewpAQCAtNDE1MCw2ICs0MTg1LDQyIEBAIGNsYXNzIExvd2VyREZH
VG9MTFZNIHsKICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKHN0cnVjdHVyZSkpOwogICAg
ICAgICBzZXRKU1ZhbHVlKHZtQ2FsbChtX291dC5pbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJh
dGlvbk5ld0FycmF5V2l0aFNpemUpLCBtX2NhbGxGcmFtZSwgc3RydWN0dXJlVmFsdWUsIHB1Ymxp
Y0xlbmd0aCkpOwogICAgIH0KKworICAgIHZvaWQgY29tcGlsZU5ld0dlbmVyYXRvckZyYW1lKCkK
KyAgICB7CisgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgIFN0cnVjdHVy
ZSogc3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT5nZW5lcmF0b3JGcmFtZVN0cnVjdHVyZSgpOwor
ICAgICAgICB1bnNpZ25lZCBnZW5lcmF0b3JMb2NhbHNTaXplID0gbV9ub2RlLT5nZW5lcmF0b3JM
b2NhbHNTaXplKCk7CisKKyAgICAgICAgTEJhc2ljQmxvY2sgc2xvd1BhdGggPSBGVExfTkVXX0JM
T0NLKG1fb3V0LCAoIk5ld0dlbmVyYXRvckZyYW1lIHNsb3cgcGF0aCIpKTsKKyAgICAgICAgTEJh
c2ljQmxvY2sgY29udGludWF0aW9uID0gRlRMX05FV19CTE9DSyhtX291dCwgKCJOZXdHZW5lcmF0
b3JGcmFtZSBjb250aW51YXRpb24iKSk7CisKKyAgICAgICAgTEJhc2ljQmxvY2sgbGFzdE5leHQg
PSBtX291dC5pbnNlcnROZXdCbG9ja3NCZWZvcmUoc2xvd1BhdGgpOworICAgICAgICBMVmFsdWUg
ZmFzdE9iamVjdCA9IGFsbG9jYXRlT2JqZWN0PEdlbmVyYXRvckZyYW1lPihHZW5lcmF0b3JGcmFt
ZTo6YWxsb2NhdGlvblNpemVGb3JMb2NhbHMoZ2VuZXJhdG9yTG9jYWxzU2l6ZSksIHN0cnVjdHVy
ZSwgbV9vdXQuaW50UHRyWmVybywgc2xvd1BhdGgpOworICAgICAgICBtX291dC5zdG9yZTMyKG1f
b3V0LmNvbnN0SW50MzIoZ2VuZXJhdG9yTG9jYWxzU2l6ZSksIGZhc3RPYmplY3QsIG1faGVhcHMu
R2VuZXJhdG9yRnJhbWVfbnVtYmVyT2ZDYWxsZWVMb2NhbHMpOworICAgICAgICBtX291dC5zdG9y
ZTMyKG1fb3V0LmNvbnN0SW50MzIoMCksIGZhc3RPYmplY3QsIG1faGVhcHMuR2VuZXJhdG9yRnJh
bWVfbnVtYmVyT2ZTYXZlZENhbGxlZUxvY2Fscyk7CisKKyAgICAgICAgSlNWYWx1ZSBlbXB0eVZh
bHVlOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZ2VuZXJhdG9yTG9jYWxzU2l6
ZTsgKytpKQorICAgICAgICAgICAgbV9vdXQuc3RvcmU2NChtX291dC5jb25zdEludDY0KEpTVmFs
dWU6OmVuY29kZShlbXB0eVZhbHVlKSksIGZhc3RPYmplY3QsIG1faGVhcHMuR2VuZXJhdG9yRnJh
bWVfY2FsbGVlTG9jYWxzW2ldKTsKKworICAgICAgICBWYWx1ZUZyb21CbG9jayBmYXN0UmVzdWx0
ID0gbV9vdXQuYW5jaG9yKGZhc3RPYmplY3QpOworICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVh
dGlvbik7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oc2xvd1BhdGgsIGNvbnRpbnVhdGlvbik7
CisgICAgICAgIFZlY3RvcjxMVmFsdWU+IHNsb3dQYXRoQXJndW1lbnRzOworICAgICAgICBMVmFs
dWUgY2FsbFJlc3VsdCA9IGxhenlTbG93UGF0aCgKKyAgICAgICAgICAgIFs9XSAoY29uc3QgVmVj
dG9yPExvY2F0aW9uPiYgbG9jYXRpb25zKSAtPiBSZWZQdHI8TGF6eVNsb3dQYXRoOjpHZW5lcmF0
b3I+IHsKKyAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlTGF6eUNhbGxHZW5lcmF0b3IoCisg
ICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbk5ld0dlbmVyYXRvckZyYW1lLAorICAgICAgICAg
ICAgICAgICAgICBsb2NhdGlvbnNbMF0uZGlyZWN0R1BSKCksIENDYWxsSGVscGVyczo6VHJ1c3Rl
ZEltbVB0cihzdHJ1Y3R1cmUpLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihnZW5lcmF0b3JM
b2NhbHNTaXplKSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgc2xv
d1Jlc3VsdCA9IG1fb3V0LmFuY2hvcihjYWxsUmVzdWx0KTsKKyAgICAgICAgbV9vdXQuanVtcChj
b250aW51YXRpb24pOworCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFz
dE5leHQpOworICAgICAgICBzZXRKU1ZhbHVlKG1fb3V0LnBoaShtX291dC5pbnRQdHIsIGZhc3RS
ZXN1bHQsIHNsb3dSZXN1bHQpKTsKKyAgICB9CiAgICAgCiAgICAgdm9pZCBjb21waWxlQWxsb2Nh
dGVQcm9wZXJ0eVN0b3JhZ2UoKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAppbmRl
eCBhM2JkZmE3Y2Q1ZDBmNTcyNDdmMWJlOGM0MGIyNTEwZDI5ZDgwMGZmLi4wYjlmZDhkMzQzZmQ4
Y2ViMjdhYWY3YTM5NDAwNzA0NjQ3NGMyNjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3Bw
CkBAIC0yMTYsNyArMjE2LDkgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQog
ICAgICAgICBERUZJTkVfT1Aob3BfY2hlY2tfdGR6KQogICAgICAgICBERUZJTkVfT1Aob3BfYXNz
ZXJ0KQogICAgICAgICBERUZJTkVfT1Aob3Bfc2F2ZSkKLSAgICAgICAgREVGSU5FX09QKG9wX3Jl
c3VtZSkKKyAgICAgICAgREVGSU5FX09QKG9wX25ld19nZW5lcmF0b3JfZnJhbWUpCisgICAgICAg
IERFRklORV9PUChvcF9yZXN1bWVfZnJvbV9nZW5lcmF0b3JfZnJhbWUpCisgICAgICAgIERFRklO
RV9PUChvcF9jbGVhcl9nZW5lcmF0b3JfZnJhbWUpCiAgICAgICAgIERFRklORV9PUChvcF9kZWJ1
ZykKICAgICAgICAgREVGSU5FX09QKG9wX2RlbF9ieV9pZCkKICAgICAgICAgREVGSU5FX09QKG9w
X2RpdikKQEAgLTI4OSw2ICsyOTEsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFz
cygpCiAgICAgICAgIERFRklORV9PUChvcF9wdXRfZ2V0dGVyX3NldHRlcl9ieV9pZCkKICAgICAg
ICAgREVGSU5FX09QKG9wX3B1dF9nZXR0ZXJfYnlfdmFsKQogICAgICAgICBERUZJTkVfT1Aob3Bf
cHV0X3NldHRlcl9ieV92YWwpCisgICAgICAgIERFRklORV9PUChvcF9ub3ApCiAKICAgICAgICAg
REVGSU5FX09QKG9wX3JldCkKICAgICAgICAgREVGSU5FX09QKG9wX3JzaGlmdCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5oCmluZGV4IGRmN2IzZGM1ZTg5MjBlZTRlZjkyYmNhY2JhZWZmMWI0YzAwZDkz
NjkuLmVjNjgxZDA5OTBlZjBjMmExYjBjNDFkNTQxMmJiY2UwYzBkMzkxZGUgMTAwNzU1Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVQuaApAQCAtNDk1LDcgKzQ5NSw5IEBACiAgICAgICAgIHZvaWQgZW1pdF9vcF9j
aGVja190ZHooSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2Fzc2VydChJbnN0
cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3Bfc2F2ZShJbnN0cnVjdGlvbiopOwotICAg
ICAgICB2b2lkIGVtaXRfb3BfcmVzdW1lKEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1p
dF9vcF9yZXN1bWVfZnJvbV9nZW5lcmF0b3JfZnJhbWUoSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAg
dm9pZCBlbWl0X29wX2NsZWFyX2dlbmVyYXRvcl9mcmFtZShJbnN0cnVjdGlvbiopOworICAgICAg
ICB2b2lkIGVtaXRfb3BfbmV3X2dlbmVyYXRvcl9mcmFtZShJbnN0cnVjdGlvbiopOwogICAgICAg
ICB2b2lkIGVtaXRfb3BfZGVidWcoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29w
X2RlbF9ieV9pZChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZGl2KEluc3Ry
dWN0aW9uKik7CkBAIC01OTUsNiArNTk3LDcgQEAKICAgICAgICAgdm9pZCBlbWl0X29wX2VudW1l
cmF0b3Jfc3RydWN0dXJlX3BuYW1lKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9v
cF9lbnVtZXJhdG9yX2dlbmVyaWNfcG5hbWUoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBl
bWl0X29wX3RvX2luZGV4X3N0cmluZyhJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVtaXRf
b3Bfbm9wKEluc3RydWN0aW9uKik7CiAKICAgICAgICAgdm9pZCBlbWl0U2xvd19vcF9hZGQoSW5z
dHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZv
aWQgZW1pdFNsb3dfb3BfYml0YW5kKEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+
OjppdGVyYXRvciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGNvZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKaW5k
ZXggNzM4Y2I2M2ZlZDkxYjQ5ODU1ZDVkMDMzZDQ2MzM0NWZkZDQ3NmQ5Yi4uNGE2YTg4Yzg0ZjU3
NWYxNGJhYjYwMzkzOTBmNDY4MTk0ZWY3MzcyNiAxMDA3NTUKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wY29kZXMuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiQ29waWVkU3BhY2VJ
bmxpbmVzLmgiCiAjaW5jbHVkZSAiRGVidWdnZXIuaCIKICNpbmNsdWRlICJFeGNlcHRpb24uaCIK
KyNpbmNsdWRlICJHZW5lcmF0b3JGcmFtZS5oIgogI2luY2x1ZGUgIkhlYXAuaCIKICNpbmNsdWRl
ICJKSVRJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgpAQCAtODkzLDYgKzg5NCwyMyBA
QCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfdG9fc3RyaW5nKEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZQogICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CiB9CiAK
K3ZvaWQgSklUOjplbWl0X29wX3Jlc3VtZV9mcm9tX2dlbmVyYXRvcl9mcmFtZShJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIGludCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rp
b25bMV0udS5vcGVyYW5kOworICAgIGludCBmcmFtZSA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51
Lm9wZXJhbmQ7CisgICAgdW5zaWduZWQgaW5kZXggPSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS51
bnNpZ25lZFZhbHVlOworICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoZnJhbWUsIHJlZ1QxKTsK
KyAgICBsb2FkNjQoQWRkcmVzcyhyZWdUMSwgR2VuZXJhdG9yRnJhbWU6OmxvY2FsT2Zmc2V0KGlu
ZGV4KSksIHJlZ1QwKTsKKyAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCk7Cit9CisKK3Zv
aWQgSklUOjplbWl0X29wX2NsZWFyX2dlbmVyYXRvcl9mcmFtZShJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQoreworICAgIGludCBmcmFtZSA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51
Lm9wZXJhbmQ7CisgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihmcmFtZSwgcmVnVDEpOworICAg
IHN0b3JlMzIoVHJ1c3RlZEltbTMyKDApLCBBZGRyZXNzKHJlZ1QxLCBHZW5lcmF0b3JGcmFtZTo6
bnVtYmVyT2ZTYXZlZENhbGxlZUxvY2Fsc09mZnNldCgpKSk7Cit9CisKICNlbmRpZiAvLyBVU0Uo
SlNWQUxVRTY0KQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9sb29wX2hpbnQoSW5zdHJ1Y3Rpb24qKQpA
QCAtMTQzNSwxMiArMTQ1MywxNiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9zYXZlKEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKIH0KIAotdm9p
ZCBKSVQ6OmVtaXRfb3BfcmVzdW1lKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2
b2lkIEpJVDo6ZW1pdF9vcF9uZXdfZ2VuZXJhdG9yX2ZyYW1lKEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCiB7Ci0gICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBj
dXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9yZXN1bWUpOworICAgIEpJVFNsb3dQYXRoQ2Fs
bCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfbmV3X2dl
bmVyYXRvcl9mcmFtZSk7CiAgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKIH0KIAordm9pZCBKSVQ6
OmVtaXRfb3Bfbm9wKEluc3RydWN0aW9uKikKK3sKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAK
ICNlbmRpZiAvLyBFTkFCTEUoSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGNvZGVzMzJfNjQuY3BwCmluZGV4IGMzMjZmZjNlMDFlNWE0MjQzZTdiNzhiZWU4NTJjZmI3OTdk
MzkyZWUuLmQ0MmU4NWQ5ZjU3Y2M4ZDUwYjliMjdiMzkwNzcyY2MyNTE3MDM5NWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKQEAgLTEzMjgsNiAr
MTMyOCwyNCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wcm9maWxlX3R5cGUoSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKICAgICBqdW1wVG9FbmQubGluayh0aGlzKTsKIH0KIAordm9pZCBK
SVQ6OmVtaXRfb3BfcmVzdW1lX2Zyb21fZ2VuZXJhdG9yX2ZyYW1lKEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgaW50IGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51
Lm9wZXJhbmQ7CisgICAgaW50IGZyYW1lID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFu
ZDsKKyAgICB1bnNpZ25lZCBpbmRleCA9IGN1cnJlbnRJbnN0cnVjdGlvblszXS51LnVuc2lnbmVk
VmFsdWU7CisgICAgZW1pdExvYWRQYXlsb2FkKGZyYW1lLCByZWdUMik7CisgICAgbG9hZDMyKEFk
ZHJlc3MocmVnVDIsIEdlbmVyYXRvckZyYW1lOjpsb2NhbE9mZnNldChpbmRleCkgKyBPQkpFQ1Rf
T0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMudGFnKSksIHJlZ1QxKTsKKyAgICBsb2FkMzIoQWRk
cmVzcyhyZWdUMiwgR2VuZXJhdG9yRnJhbWU6OmxvY2FsT2Zmc2V0KGluZGV4KSArIE9CSkVDVF9P
RkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy5wYXlsb2FkKSksIHJlZ1QwKTsKKyAgICBlbWl0UHV0
VmlydHVhbFJlZ2lzdGVyKGRzdCwgSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKSk7Cit9CisKK3Zv
aWQgSklUOjplbWl0X29wX2NsZWFyX2dlbmVyYXRvcl9mcmFtZShJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQoreworICAgIGludCBmcmFtZSA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51
Lm9wZXJhbmQ7CisgICAgZW1pdExvYWRQYXlsb2FkKGZyYW1lLCByZWdUMSk7CisgICAgc3RvcmUz
MihUcnVzdGVkSW1tMzIoMCksIEFkZHJlc3MocmVnVDEsIEdlbmVyYXRvckZyYW1lOjpudW1iZXJP
ZlNhdmVkQ2FsbGVlTG9jYWxzT2Zmc2V0KCkpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAK
ICNlbmRpZiAvLyBVU0UoSlNWQUxVRTMyXzY0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcAppbmRleCAyYjRlNjE5ODZkMzEy
YWM5ZTRmODczNzNjZTdhYTBiOWZkMGNlNzVhLi5hZmUwOTY4NDg4ZjQ2ZDE2NzVjOTE3ZWNiMmI2
MjBjMDA1NjEyMjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRPZmZzZXRzRXh0cmFjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkRp
cmVjdEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbi5oIgogI2luY2x1ZGUgIkV4ZWN1
dGFibGUuaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JGcmFtZS5oIgogI2luY2x1ZGUgIkhlYXAuaCIK
ICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbSBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQppbmRl
eCBjZDRjZTkwNjNiMTk1NzVhOTU3ZTNjYTNlMjJiZTU3OTE1YmRiNTlhLi5iOTIwYTZjZTY2Y2Zi
ZTEzNTMzNGRhMDFmNjlkNThkZTQ2NjBjZTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCkBAIC0xNjUsNiArMTY1LDcgQEAg
Y29uc3QgU2xvdFNpemUgPSA4CiAKIGNvbnN0IEpTRW52aXJvbm1lbnRSZWNvcmRfdmFyaWFibGVz
ID0gKHNpemVvZiBKU0Vudmlyb25tZW50UmVjb3JkICsgU2xvdFNpemUgLSAxKSAmIH4oU2xvdFNp
emUgLSAxKQogY29uc3QgRGlyZWN0QXJndW1lbnRzX3N0b3JhZ2UgPSAoc2l6ZW9mIERpcmVjdEFy
Z3VtZW50cyArIFNsb3RTaXplIC0gMSkgJiB+KFNsb3RTaXplIC0gMSkKK2NvbnN0IEdlbmVyYXRv
ckZyYW1lX2NhbGxlZUxvY2FscyA9IChzaXplb2YgR2VuZXJhdG9yRnJhbWUgKyBTbG90U2l6ZSAt
IDEpICYgfihTbG90U2l6ZSAtIDEpCiAKIGNvbnN0IFN0YWNrQWxpZ25tZW50ID0gMTYKIGNvbnN0
IFN0YWNrQWxpZ25tZW50U2xvdHMgPSAyCkBAIC0xMjU2LDYgKzEyNTcsMTIgQEAgX2xsaW50X29w
X25ld19yZWdleHA6CiAgICAgZGlzcGF0Y2goMykKIAogCitfbGxpbnRfb3BfbmV3X2dlbmVyYXRv
cl9mcmFtZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbFNsb3dQYXRoKF9zbG93X3Bh
dGhfbmV3X2dlbmVyYXRvcl9mcmFtZSkKKyAgICBkaXNwYXRjaCgzKQorCisKIF9sbGludF9vcF9s
ZXNzOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF9s
ZXNzKQpAQCAtMTU5NSwxMCArMTYwMiwxNiBAQCBfbGxpbnRfb3Bfc2F2ZToKICAgICBkaXNwYXRj
aCg0KQogCiAKLV9sbGludF9vcF9yZXN1bWU6CitfbGxpbnRfb3Bfc2F2ZV9oaW50OgogICAgIHRy
YWNlRXhlY3V0aW9uKCkKLSAgICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF9yZXN1bWUpCi0gICAg
ZGlzcGF0Y2goMykKKyAgICBub3RTdXBwb3J0ZWQoKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xs
aW50X29wX3Jlc3VtZV9oaW50OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBub3RTdXBwb3J0
ZWQoKQorICAgIGRpc3BhdGNoKDQpCiAKIAogX2xsaW50X29wX2NyZWF0ZV9sZXhpY2FsX2Vudmly
b25tZW50OgpAQCAtMTcwOCw2ICsxNzIxLDEwIEBAIF9sbGludF9vcF9jb3B5X3Jlc3Q6CiAgICAg
Y2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfY29weV9yZXN0KQogICAgIGRpc3BhdGNoKDQpCiAKK19s
bGludF9vcF9ub3A6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGRpc3BhdGNoKDEpCisKIAog
IyBMYXN0bHksIG1ha2Ugc3VyZSB0aGF0IHdlIGNhbiBsaW5rIGV2ZW4gdGhvdWdoIHdlIGRvbid0
IHN1cHBvcnQgYWxsIG9wY29kZXMuCiAjIFRoZXNlIG9wY29kZXMgc2hvdWxkIG5ldmVyIGFyaXNl
IHdoZW4gdXNpbmcgTExJbnQgb3IgZWl0aGVyIEpJVC4gV2UgYXNzZXJ0CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbSBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNt
CmluZGV4IGQwNmI0ZDM5NmQzMWNkMWJjNTJjMzcxMWUxMzNmYmFlZGNjMmMwNGUuLjBjZWY3ZTE0
OGYxMjdkN2VjNGIzYzdjN2UzMDYyYzQxZjE0ODI1YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCkBAIC0y
NDYwLDMgKzI0NjAsMjAgQEAgX2xsaW50X29wX2dldF9yZXN0X2xlbmd0aDoKICAgICBzdG9yZWkg
dDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KICAgICBzdG9yZWkgSW50MzJUYWcsIFRhZ09m
ZnNldFtjZnIsIHQxLCA4XQogICAgIGRpc3BhdGNoKDMpCisKK19sbGludF9vcF9jbGVhcl9nZW5l
cmF0b3JfZnJhbWU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRWYXJpYWJsZSgxLCB0
MiwgdDEsIHQwKQorICAgIHN0b3JlaSAwLCBHZW5lcmF0b3JGcmFtZTo6bV9udW1iZXJPZlNhdmVk
Q2FsbGVlTG9jYWxzW3QwXQorICAgIGRpc3BhdGNoKDIpCisKK19sbGludF9vcF9yZXN1bWVfZnJv
bV9nZW5lcmF0b3JfZnJhbWU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRWYXJpYWJs
ZSgyLCB0MiwgdDEsIHQwKQorICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigzLCB0MykKKyAgICBs
b2FkcCBHZW5lcmF0b3JGcmFtZV9jYWxsZWVMb2NhbHMgKyBUYWdPZmZzZXRbdDAsIHQzLCA4XSwg
dDEKKyAgICBsb2FkcCBHZW5lcmF0b3JGcmFtZV9jYWxsZWVMb2NhbHMgKyBQYXlsb2FkT2Zmc2V0
W3QwLCB0MywgOF0sIHQyCisgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDEsIHQwKQorICAgIHN0
b3JlaSB0MSwgVGFnT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zm
c2V0W2NmciwgdDAsIDhdCisgICAgZGlzcGF0Y2goNCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KaW5kZXggODUxNzNiYzgy
NjIxNDZiMGUwZDFlMDE5MmI3MDYwMjhiYmQ5MDY4My4uNDkyYzYzYzI1Y2RmYWUzMmZmOWVlYjhh
NGQxOTdlNTg1NTMxOWFjMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KQEAgLTIzMjEsMyArMjMyMSwxOCBAQCBfbGxp
bnRfb3BfZ2V0X3Jlc3RfbGVuZ3RoOgogICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigxLCB0MSkK
ICAgICBzdG9yZXEgdDAsIFtjZnIsIHQxLCA4XQogICAgIGRpc3BhdGNoKDMpCisKK19sbGludF9v
cF9jbGVhcl9nZW5lcmF0b3JfZnJhbWU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRW
YXJpYWJsZSgxLCB0MCkKKyAgICBzdG9yZWkgMCwgR2VuZXJhdG9yRnJhbWU6Om1fbnVtYmVyT2ZT
YXZlZENhbGxlZUxvY2Fsc1t0MF0KKyAgICBkaXNwYXRjaCgyKQorCitfbGxpbnRfb3BfcmVzdW1l
X2Zyb21fZ2VuZXJhdG9yX2ZyYW1lOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkVmFy
aWFibGUoMiwgdDApCisgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDMsIHQxKQorICAgIGxvYWRx
IEdlbmVyYXRvckZyYW1lX2NhbGxlZUxvY2Fsc1t0MCwgdDEsIDhdLCB0MAorICAgIGxvYWRpc0Zy
b21JbnN0cnVjdGlvbigxLCB0MSkKKyAgICBzdG9yZXEgdDAsIFtjZnIsIHQxLCA4XQorICAgIGRp
c3BhdGNoKDQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNl
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKaW5kZXggOGQz
NzA2MzQ1MTI4ZTlkZjlkYWMzMjU3ZjdjNWY0ZTVhYjNhOWMzNC4uZTg2MDUzYjQ4MmE4ZDM2YjMz
NWMwOGJhN2QzNjc1NmQzYjc5NmFkOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9QYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFy
c2VyLmNwcApAQCAtMjUwLDkgKzI1MCwxMCBAQAogICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQm9k
eUV4cHJlc3Npb24gPSBmYWxzZTsKICAgICBpZiAobV9sZXhlci0+aXNSZXBhcnNpbmdGdW5jdGlv
bigpKSB7CiAgICAgICAgIFBhcnNlckZ1bmN0aW9uSW5mbzxBU1RCdWlsZGVyPiBmdW5jdGlvbklu
Zm87Ci0gICAgICAgIGlmIChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JC
b2R5TW9kZSkKLSAgICAgICAgICAgIGZ1bmN0aW9uSW5mby5wYXJhbWV0ZXJzID0gY3JlYXRlR2Vu
ZXJhdG9yUGFyYW1ldGVycyhjb250ZXh0KTsKLSAgICAgICAgZWxzZQorICAgICAgICBpZiAocGFy
c2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yQm9keU1vZGUpIHsKKyAgICAgICAg
ICAgIHVuc2lnbmVkIHBhcmFtZXRlckNvdW50ID0gMDsKKyAgICAgICAgICAgIGZ1bmN0aW9uSW5m
by5wYXJhbWV0ZXJzID0gY3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhjb250ZXh0LCBwYXJhbWV0
ZXJDb3VudCk7CisgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgcGFyc2VGdW5jdGlvblBhcmFt
ZXRlcnMoY29udGV4dCwgcGFyc2VNb2RlLCBmdW5jdGlvbkluZm8pOwogICAgICAgICBtX3BhcmFt
ZXRlcnMgPSBmdW5jdGlvbkluZm8ucGFyYW1ldGVyczsKIApAQCAtNDg1LDEwICs0ODYsOSBAQAog
CiAgICAgUGFyc2VyRnVuY3Rpb25JbmZvPFRyZWVCdWlsZGVyPiBpbmZvOwogICAgIGluZm8ubmFt
ZSA9ICZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5udWxsSWRlbnRpZmllcjsKLSAgICBpbmZvLnBhcmFt
ZXRlcnMgPSBjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKGNvbnRleHQpOworICAgIGluZm8ucGFy
YW1ldGVycyA9IGNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMoY29udGV4dCwgaW5mby5wYXJhbWV0
ZXJDb3VudCk7CiAgICAgaW5mby5zdGFydE9mZnNldCA9IHBhcmFtZXRlcnNTdGFydDsKICAgICBp
bmZvLnN0YXJ0TGluZSA9IHRva2VuTGluZSgpOwotICAgIGluZm8ucGFyYW1ldGVyQ291bnQgPSA0
OyAvLyBnZW5lcmF0b3IsIHN0YXRlLCB2YWx1ZSwgcmVzdW1lIG1vZGUKIAogICAgIHsKICAgICAg
ICAgQXV0b1BvcFNjb3BlUmVmIGdlbmVyYXRvckJvZHlTY29wZSh0aGlzLCBwdXNoU2NvcGUoKSk7
CkBAIC0xNzgxLDMyICsxNzgxLDMwIEBAIHN0YXRpYyBjb25zdCBjaGFyKiBzdHJpbmdGb3JGdW5j
dGlvbk1vZGUoU291cmNlUGFyc2VNb2RlIG1vZGUpCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBM
ZXhlclR5cGU+Ci10ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IHR5cGVuYW1lIFRyZWVCdWls
ZGVyOjpGb3JtYWxQYXJhbWV0ZXJMaXN0IFBhcnNlcjxMZXhlclR5cGU+OjpjcmVhdGVHZW5lcmF0
b3JQYXJhbWV0ZXJzKFRyZWVCdWlsZGVyJiBjb250ZXh0KQordGVtcGxhdGUgPGNsYXNzIFRyZWVC
dWlsZGVyPiB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6Rm9ybWFsUGFyYW1ldGVyTGlzdCBQYXJzZXI8
TGV4ZXJUeXBlPjo6Y3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhUcmVlQnVpbGRlciYgY29udGV4
dCwgdW5zaWduZWQmIHBhcmFtZXRlckNvdW50KQogewogICAgIGF1dG8gcGFyYW1ldGVycyA9IGNv
bnRleHQuY3JlYXRlRm9ybWFsUGFyYW1ldGVyTGlzdCgpOwogCiAgICAgSlNUb2tlbkxvY2F0aW9u
IGxvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CiAgICAgSlNUZXh0UG9zaXRpb24gcG9zaXRpb24g
PSB0b2tlblN0YXJ0UG9zaXRpb24oKTsKIAotICAgIC8vIEBnZW5lcmF0b3IKLSAgICBkZWNsYXJl
UGFyYW1ldGVyKCZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5nZW5lcmF0b3JQcml2YXRlTmFtZSk7Ci0g
ICAgYXV0byBnZW5lcmF0b3IgPSBjb250ZXh0LmNyZWF0ZUJpbmRpbmdMb2NhdGlvbihsb2NhdGlv
biwgbV92bS0+cHJvcGVydHlOYW1lcy0+Z2VuZXJhdG9yUHJpdmF0ZU5hbWUsIHBvc2l0aW9uLCBw
b3NpdGlvbiwgQXNzaWdubWVudENvbnRleHQ6OkRlY2xhcmF0aW9uU3RhdGVtZW50KTsKLSAgICBj
b250ZXh0LmFwcGVuZFBhcmFtZXRlcihwYXJhbWV0ZXJzLCBnZW5lcmF0b3IsIDApOworICAgIGF1
dG8gYWRkUGFyYW1ldGVyID0gWyZdKGNvbnN0IElkZW50aWZpZXImIG5hbWUpIHsKKyAgICAgICAg
ZGVjbGFyZVBhcmFtZXRlcigmbmFtZSk7CisgICAgICAgIGF1dG8gYmluZGluZyA9IGNvbnRleHQu
Y3JlYXRlQmluZGluZ0xvY2F0aW9uKGxvY2F0aW9uLCBuYW1lLCBwb3NpdGlvbiwgcG9zaXRpb24s
IEFzc2lnbm1lbnRDb250ZXh0OjpEZWNsYXJhdGlvblN0YXRlbWVudCk7CisgICAgICAgIGNvbnRl
eHQuYXBwZW5kUGFyYW1ldGVyKHBhcmFtZXRlcnMsIGJpbmRpbmcsIDApOworICAgICAgICArK3Bh
cmFtZXRlckNvdW50OworICAgIH07CiAKKyAgICAvLyBAZ2VuZXJhdG9yCisgICAgYWRkUGFyYW1l
dGVyKG1fdm0tPnByb3BlcnR5TmFtZXMtPmdlbmVyYXRvclByaXZhdGVOYW1lKTsKICAgICAvLyBA
Z2VuZXJhdG9yU3RhdGUKLSAgICBkZWNsYXJlUGFyYW1ldGVyKCZtX3ZtLT5wcm9wZXJ0eU5hbWVz
LT5nZW5lcmF0b3JTdGF0ZVByaXZhdGVOYW1lKTsKLSAgICBhdXRvIGdlbmVyYXRvclN0YXRlID0g
Y29udGV4dC5jcmVhdGVCaW5kaW5nTG9jYXRpb24obG9jYXRpb24sIG1fdm0tPnByb3BlcnR5TmFt
ZXMtPmdlbmVyYXRvclN0YXRlUHJpdmF0ZU5hbWUsIHBvc2l0aW9uLCBwb3NpdGlvbiwgQXNzaWdu
bWVudENvbnRleHQ6OkRlY2xhcmF0aW9uU3RhdGVtZW50KTsKLSAgICBjb250ZXh0LmFwcGVuZFBh
cmFtZXRlcihwYXJhbWV0ZXJzLCBnZW5lcmF0b3JTdGF0ZSwgMCk7Ci0KKyAgICBhZGRQYXJhbWV0
ZXIobV92bS0+cHJvcGVydHlOYW1lcy0+Z2VuZXJhdG9yU3RhdGVQcml2YXRlTmFtZSk7CiAgICAg
Ly8gQGdlbmVyYXRvclZhbHVlCi0gICAgZGVjbGFyZVBhcmFtZXRlcigmbV92bS0+cHJvcGVydHlO
YW1lcy0+Z2VuZXJhdG9yVmFsdWVQcml2YXRlTmFtZSk7Ci0gICAgYXV0byBnZW5lcmF0b3JWYWx1
ZSA9IGNvbnRleHQuY3JlYXRlQmluZGluZ0xvY2F0aW9uKGxvY2F0aW9uLCBtX3ZtLT5wcm9wZXJ0
eU5hbWVzLT5nZW5lcmF0b3JWYWx1ZVByaXZhdGVOYW1lLCBwb3NpdGlvbiwgcG9zaXRpb24sIEFz
c2lnbm1lbnRDb250ZXh0OjpEZWNsYXJhdGlvblN0YXRlbWVudCk7Ci0gICAgY29udGV4dC5hcHBl
bmRQYXJhbWV0ZXIocGFyYW1ldGVycywgZ2VuZXJhdG9yVmFsdWUsIDApOwotCisgICAgYWRkUGFy
YW1ldGVyKG1fdm0tPnByb3BlcnR5TmFtZXMtPmdlbmVyYXRvclZhbHVlUHJpdmF0ZU5hbWUpOwog
ICAgIC8vIEBnZW5lcmF0b3JSZXN1bWVNb2RlCi0gICAgZGVjbGFyZVBhcmFtZXRlcigmbV92bS0+
cHJvcGVydHlOYW1lcy0+Z2VuZXJhdG9yUmVzdW1lTW9kZVByaXZhdGVOYW1lKTsKLSAgICBhdXRv
IGdlbmVyYXRvclJlc3VtZU1vZGUgPSBjb250ZXh0LmNyZWF0ZUJpbmRpbmdMb2NhdGlvbihsb2Nh
dGlvbiwgbV92bS0+cHJvcGVydHlOYW1lcy0+Z2VuZXJhdG9yUmVzdW1lTW9kZVByaXZhdGVOYW1l
LCBwb3NpdGlvbiwgcG9zaXRpb24sIEFzc2lnbm1lbnRDb250ZXh0OjpEZWNsYXJhdGlvblN0YXRl
bWVudCk7Ci0gICAgY29udGV4dC5hcHBlbmRQYXJhbWV0ZXIocGFyYW1ldGVycywgZ2VuZXJhdG9y
UmVzdW1lTW9kZSwgMCk7CisgICAgYWRkUGFyYW1ldGVyKG1fdm0tPnByb3BlcnR5TmFtZXMtPmdl
bmVyYXRvclJlc3VtZU1vZGVQcml2YXRlTmFtZSk7CisgICAgLy8gQGdlbmVyYXRvckZyYW1lCisg
ICAgYWRkUGFyYW1ldGVyKG1fdm0tPnByb3BlcnR5TmFtZXMtPmdlbmVyYXRvckZyYW1lUHJpdmF0
ZU5hbWUpOwogCiAgICAgcmV0dXJuIHBhcmFtZXRlcnM7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9QYXJzZXIuaAppbmRleCBhMTFiMzVjMTAxZmU1Yjg0OWNiMjMzMDk2YzU2ODMxMzcwNjZj
YWJmLi5lNjE0OWEzYWMzNjk0MDQ4OTNkMjM2OTY5MzE2YjVjMzAzM2JlODUxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKQEAgLTEyNTksNyArMTI1OSw3IEBAIGNsYXNzIFBh
cnNlciB7CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBORVZFUl9JTkxJTkUgYm9v
bCBwYXJzZUZ1bmN0aW9uSW5mbyhUcmVlQnVpbGRlciYsIEZ1bmN0aW9uUmVxdWlyZW1lbnRzLCBT
b3VyY2VQYXJzZU1vZGUsIGJvb2wgbmFtZUlzSW5Db250YWluaW5nU2NvcGUsIENvbnN0cnVjdG9y
S2luZCwgU3VwZXJCaW5kaW5nLCBpbnQgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIFBhcnNlckZ1bmN0
aW9uSW5mbzxUcmVlQnVpbGRlcj4mLCBGdW5jdGlvbkRlZmluaXRpb25UeXBlKTsKICAgICAKICAg
ICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElORSBpbnQgcGFyc2VGdW5j
dGlvblBhcmFtZXRlcnMoVHJlZUJ1aWxkZXImLCBTb3VyY2VQYXJzZU1vZGUsIFBhcnNlckZ1bmN0
aW9uSW5mbzxUcmVlQnVpbGRlcj4mKTsKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+
IE5FVkVSX0lOTElORSB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6Rm9ybWFsUGFyYW1ldGVyTGlzdCBj
cmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKFRyZWVCdWlsZGVyJik7CisgICAgdGVtcGxhdGUgPGNs
YXNzIFRyZWVCdWlsZGVyPiBORVZFUl9JTkxJTkUgdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkZvcm1h
bFBhcmFtZXRlckxpc3QgY3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhUcmVlQnVpbGRlciYsIHVu
c2lnbmVkJiBwYXJhbWV0ZXJDb3VudCk7CiAKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxk
ZXI+IE5FVkVSX0lOTElORSBUcmVlQ2xhc3NFeHByZXNzaW9uIHBhcnNlQ2xhc3MoVHJlZUJ1aWxk
ZXImLCBGdW5jdGlvblJlcXVpcmVtZW50cywgUGFyc2VyQ2xhc3NJbmZvPFRyZWVCdWlsZGVyPiYp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93
UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhz
LmNwcAppbmRleCA3OGI0M2M0ZDM4OWZmN2E5MDgzMTNiNTU0MDU3MGU4ODJlMWIwMzcxLi5kY2Ey
ZDRlNjY2ZDA3M2NmMzkwZjYxZjI5N2NhNzM5N2IzNmM1OGQzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKQEAgLTY5NywzMyArNjk3
LDEyIEBAIHN0YXRpYyB2b2lkIHVwZGF0ZVJlc3VsdFByb2ZpbGVGb3JCaW5hcnlBcml0aE9wKEV4
ZWNTdGF0ZSosIEluc3RydWN0aW9uKiwgSlNWYWx1CiAgICAgLy8gT25seSBzYXZlIHZhcmlhYmxl
cyBhbmQgdGVtcG9yYXJ5IHJlZ2lzdGVycy4gVGhlIHNjb3BlIHJlZ2lzdGVycyBhcmUgaW5jbHVk
ZWQgaW4gdGhlbS4KICAgICAvLyBCdXQgcGFyYW1ldGVycyBhcmUgbm90IGluY2x1ZGVkLiBCZWNh
dXNlIHRoZSBnZW5lcmF0b3IgaW1wbGVtZW50YXRpb24gcmVwbGFjZXMgdGhlIHZhbHVlcyBvZiBw
YXJhbWV0ZXJzIG9uIGVhY2ggZ2VuZXJhdG9yLm5leHQoKSBjYWxsLgogICAgIEJFR0lOKCk7Ci0g
ICAgSlNWYWx1ZSBnZW5lcmF0b3IgPSBPUCgxKS5qc1ZhbHVlKCk7Ci0gICAgR2VuZXJhdG9yRnJh
bWUqIGZyYW1lID0gbnVsbHB0cjsKLSAgICBKU1ZhbHVlIHZhbHVlID0gZ2VuZXJhdG9yLmdldChl
eGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuZ2VuZXJhdG9yRnJhbWVQcml2YXRlTmFtZSk7Ci0g
ICAgaWYgKCF2YWx1ZS5pc051bGwoKSkKLSAgICAgICAgZnJhbWUgPSBqc0Nhc3Q8R2VuZXJhdG9y
RnJhbWUqPih2YWx1ZSk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIC8vIEZJWE1FOiBPbmNlIEpTR2Vu
ZXJhdG9yIHNwZWNpYWxpemVkIG9iamVjdCBpcyBpbnRyb2R1Y2VkLCB0aGlzIEdlbmVyYXRvckZy
YW1lIHNob3VsZCBiZSBlbWJlZGVkIGludG8gaXQgdG8gYXZvaWQgYWxsb2NhdGlvbnMuCi0gICAg
ICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE1NDUKLSAg
ICAgICAgZnJhbWUgPSBHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlKGV4ZWMtPnZtKCksICBleGVjLT5j
b2RlQmxvY2soKS0+bnVtQ2FsbGVlTG9jYWxzKCkpOwotICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qg
c2xvdChnZW5lcmF0b3IsIHRydWUsIFB1dFByb3BlcnR5U2xvdDo6UHV0QnlJZCk7Ci0gICAgICAg
IGFzT2JqZWN0KGdlbmVyYXRvciktPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5wdXQoYXNPYmpl
Y3QoZ2VuZXJhdG9yKSwgZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLmdlbmVyYXRvckZyYW1l
UHJpdmF0ZU5hbWUsIGZyYW1lLCBzbG90KTsKLSAgICB9CisgICAgR2VuZXJhdG9yRnJhbWUqIGZy
YW1lID0ganNDYXN0PEdlbmVyYXRvckZyYW1lKj4oT1AoMSkuanNWYWx1ZSgpKTsKICAgICB1bnNp
Z25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSBwY1syXS51LnVuc2lnbmVkVmFsdWU7CiAgICAg
ZnJhbWUtPnNhdmUoZXhlYywgZXhlYy0+Y29kZUJsb2NrKCktPmxpdmVDYWxsZWVMb2NhbHNBdFlp
ZWxkKGxpdmVDYWxsZWVMb2NhbHNJbmRleCkpOwogICAgIEVORCgpOwogfQogCi1TTE9XX1BBVEhf
REVDTChzbG93X3BhdGhfcmVzdW1lKQotewotICAgIEJFR0lOKCk7Ci0gICAgSlNWYWx1ZSBnZW5l
cmF0b3IgPSBPUCgxKS5qc1ZhbHVlKCk7Ci0gICAgR2VuZXJhdG9yRnJhbWUqIGZyYW1lID0ganND
YXN0PEdlbmVyYXRvckZyYW1lKj4oZ2VuZXJhdG9yLmdldChleGVjLCBleGVjLT5wcm9wZXJ0eU5h
bWVzKCkuZ2VuZXJhdG9yRnJhbWVQcml2YXRlTmFtZSkpOwotICAgIHVuc2lnbmVkIGxpdmVDYWxs
ZWVMb2NhbHNJbmRleCA9IHBjWzJdLnUudW5zaWduZWRWYWx1ZTsKLSAgICBmcmFtZS0+cmVzdW1l
KGV4ZWMsIGV4ZWMtPmNvZGVCbG9jaygpLT5saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZChsaXZlQ2Fs
bGVlTG9jYWxzSW5kZXgpKTsKLSAgICBFTkQoKTsKLX0KLQogU0xPV19QQVRIX0RFQ0woc2xvd19w
YXRoX2NyZWF0ZV9sZXhpY2FsX2Vudmlyb25tZW50KQogewogICAgIEJFR0lOKCk7CkBAIC03OTcs
NCArNzc2LDEyIEBAIHN0YXRpYyB2b2lkIHVwZGF0ZVJlc3VsdFByb2ZpbGVGb3JCaW5hcnlBcml0
aE9wKEV4ZWNTdGF0ZSosIEluc3RydWN0aW9uKiwgSlNWYWx1CiAgICAgRU5EKCk7CiB9CiAKK1NM
T1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9uZXdfZ2VuZXJhdG9yX2ZyYW1lKQoreworICAgIEJFR0lO
KCk7CisgICAgdW5zaWduZWQgZ2VuZXJhdG9yTG9jYWxzU2l6ZSA9IHBjWzJdLnUudW5zaWduZWRW
YWx1ZTsKKyAgICBSRVRVUk4oR2VuZXJhdG9yRnJhbWU6OmNyZWF0ZShleGVjLCBnZW5lcmF0b3JM
b2NhbHNTaXplKSk7Cit9CisKKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCmluZGV4IGYwMGQ4NzA1ZDRlNjdm
ZTRkNDA1OWJkZTE2OGVlODhmNTdkZjcyZTcuLmM3ZmZhM2RmY2M2M2IxNGJjMzhhNWRlMDZmODRj
ZjMzY2NlMzMwODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bW1vblNsb3dQYXRocy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1v
blNsb3dQYXRocy5oCkBAIC0yOTEsMTEgKzI5MSwxMSBAQCBpbmxpbmUgdm9pZCBkZWNvZGVSZXN1
bHQoU2xvd1BhdGhSZXR1cm5UeXBlIHJlc3VsdCwgdm9pZComIGEsIHZvaWQqJiBiKQogU0xPV19Q
QVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9wcm9maWxlX3R5cGVfY2xlYXJfbG9nKTsKIFNMT1df
UEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfYXNzZXJ0KTsKIFNMT1dfUEFUSF9ISURERU5fREVD
TChzbG93X3BhdGhfc2F2ZSk7Ci1TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3Jlc3Vt
ZSk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2NyZWF0ZV9sZXhpY2FsX2Vudmly
b25tZW50KTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcHVzaF93aXRoX3Njb3Bl
KTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcmVzb2x2ZV9zY29wZSk7CiBTTE9X
X1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2NvcHlfcmVzdCk7CitTTE9XX1BBVEhfSElEREVO
X0RFQ0woc2xvd19wYXRoX25ld19nZW5lcmF0b3JfZnJhbWUpOwogCiB9IC8vIG5hbWVzcGFjZSBK
U0MKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9y
RnJhbWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJhbWUu
Y3BwCmluZGV4IGVmNmVhN2ExMDAyNThjM2VjZTA0ZGFhYjQzYmRhYTg1MWVjOGY3MTUuLjBkY2I1
MTRhNDIwOTk5ZmJmNTlkZjE4YmRkZjU3YzMwYWRhNzllOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZyYW1lLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGcmFtZS5jcHAKQEAgLTMwLDE1ICszMCwxNiBA
QAogI2luY2x1ZGUgIkhlYXBJdGVyYXRpb25TY29wZS5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWVJ
bmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTT2JqZWN0
SW5saW5lcy5oIgogI2luY2x1ZGUgIlNsb3RWaXNpdG9ySW5saW5lcy5oIgogI2luY2x1ZGUgIlN0
cnVjdHVyZUlubGluZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWNvbnN0IENsYXNzSW5mbyBH
ZW5lcmF0b3JGcmFtZTo6c19pbmZvID0geyAiR2VuZXJhdG9yRnJhbWUiLCBudWxscHRyLCBudWxs
cHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEdlbmVyYXRvckZyYW1lKSB9OworY29uc3QgQ2xhc3NJ
bmZvIEdlbmVyYXRvckZyYW1lOjpzX2luZm8gPSB7ICJHZW5lcmF0b3JGcmFtZSIsICZCYXNlOjpz
X2luZm8sIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoR2VuZXJhdG9yRnJhbWUpIH07CiAK
LUdlbmVyYXRvckZyYW1lOjpHZW5lcmF0b3JGcmFtZShWTSYgdm0sIHNpemVfdCBudW1iZXJPZkNh
bGxlZUxvY2FscykKLSAgICA6IEJhc2Uodm0sIHZtLmdlbmVyYXRvckZyYW1lU3RydWN0dXJlLmdl
dCgpKQorR2VuZXJhdG9yRnJhbWU6OkdlbmVyYXRvckZyYW1lKFZNJiB2bSwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIHVpbnQzMl90IG51bWJlck9mQ2FsbGVlTG9jYWxzKQorICAgIDogQmFzZSh2bSwg
c3RydWN0dXJlKQogICAgICwgbV9udW1iZXJPZkNhbGxlZUxvY2FscyhudW1iZXJPZkNhbGxlZUxv
Y2FscykKIHsKIH0KQEAgLTQ2LDMzICs0Nyw0MiBAQAogdm9pZCBHZW5lcmF0b3JGcmFtZTo6Zmlu
aXNoQ3JlYXRpb24oVk0mIHZtKQogewogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAg
ICBKU1ZhbHVlIGVtcHR5VmFsdWU7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX251bWJl
ck9mQ2FsbGVlTG9jYWxzOyArK2kpCi0gICAgICAgIGxvY2FsQXQoaSkuY2xlYXIoKTsKKyAgICAg
ICAgbG9jYWxBdChpKS5zZXRTdGFydGluZ1ZhbHVlKGVtcHR5VmFsdWUpOwogfQogCiBTdHJ1Y3R1
cmUqIEdlbmVyYXRvckZyYW1lOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKIHsKLSAgICByZXR1cm4gU3RydWN0
dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhDZWxsVHlw
ZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0
ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVj
dHVyZUZsYWdzKSwgaW5mbygpKTsKIH0KIAotR2VuZXJhdG9yRnJhbWUqIEdlbmVyYXRvckZyYW1l
OjpjcmVhdGUoVk0mIHZtLCBzaXplX3QgbnVtYmVyT2ZMb2NhbHMpCitHZW5lcmF0b3JGcmFtZSog
R2VuZXJhdG9yRnJhbWU6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBzaXpl
X3QgbnVtYmVyT2ZDYWxsZWVMb2NhbHMpCiB7CiAgICAgR2VuZXJhdG9yRnJhbWUqIHJlc3VsdCA9
CiAgICAgICAgIG5ldyAoCiAgICAgICAgICAgICBOb3ROdWxsLAotICAgICAgICAgICAgYWxsb2Nh
dGVDZWxsPEdlbmVyYXRvckZyYW1lPih2bS5oZWFwLCBhbGxvY2F0aW9uU2l6ZUZvckxvY2Fscyhu
dW1iZXJPZkxvY2FscykpKQotICAgICAgICBHZW5lcmF0b3JGcmFtZSh2bSwgbnVtYmVyT2ZMb2Nh
bHMpOworICAgICAgICAgICAgYWxsb2NhdGVDZWxsPEdlbmVyYXRvckZyYW1lPih2bS5oZWFwLCBh
bGxvY2F0aW9uU2l6ZUZvckxvY2FscyhudW1iZXJPZkNhbGxlZUxvY2FscykpKQorICAgICAgICBH
ZW5lcmF0b3JGcmFtZSh2bSwgc3RydWN0dXJlLCBudW1iZXJPZkNhbGxlZUxvY2Fscyk7CiAgICAg
cmVzdWx0LT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorR2Vu
ZXJhdG9yRnJhbWUqIEdlbmVyYXRvckZyYW1lOjpjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBzaXpl
X3QgbnVtYmVyT2ZDYWxsZWVMb2NhbHMpCit7CisgICAgcmV0dXJuIGNyZWF0ZShleGVjLT52bSgp
LCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmdlbmVyYXRvckZyYW1lU3RydWN0dXJlKCks
IG51bWJlck9mQ2FsbGVlTG9jYWxzKTsKK30KKwogdm9pZCBHZW5lcmF0b3JGcmFtZTo6c2F2ZShF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEZhc3RCaXRWZWN0b3ImIGxpdmVDYWxsZWVMb2NhbHMpCiB7
CisgICAgLy8gQWxsb2NhdGUgdGhlIGdlbmVyYXRvciBsb2NhbCBzcGFjZSBmaXJzdC4KKyAgICBt
X251bWJlck9mU2F2ZWRDYWxsZWVMb2NhbHMgPSBsaXZlQ2FsbGVlTG9jYWxzLmJpdENvdW50KCk7
CisKICAgICAvLyBPbmx5IHNhdmUgY2FsbGVlIGxvY2Fscy4KICAgICAvLyBFdmVyeSB0aW1lIGEg
Z2VuZXJhdG9yIGlzIGNhbGxlZCAob3IgcmVzdW1lZCksIHBhcmFtZXRlcnMgc2hvdWxkIGJlIHJl
cGxhY2VkLgotICAgIEFTU0VSVChsaXZlQ2FsbGVlTG9jYWxzLm51bUJpdHMoKSA8PSBtX251bWJl
ck9mQ2FsbGVlTG9jYWxzKTsKKyAgICB1bnNpZ25lZCBnZW5lcmF0b3JMb2NhbEluZGV4ID0gMDsK
ICAgICBsaXZlQ2FsbGVlTG9jYWxzLmZvckVhY2hTZXRCaXQoWyZdKHNpemVfdCBpbmRleCkgewot
ICAgICAgICBsb2NhbEF0KGluZGV4KS5zZXQoZXhlYy0+dm0oKSwgdGhpcywgZXhlYy0+dW5jaGVj
a2VkUih2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChpbmRleCkpLmpzVmFsdWUoKSk7CisgICAgICAg
IGxvY2FsQXQoZ2VuZXJhdG9yTG9jYWxJbmRleCsrKS5zZXQoZXhlYy0+dm0oKSwgdGhpcywgZXhl
Yy0+dW5jaGVja2VkUih2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChpbmRleCkpLmpzVmFsdWUoKSk7
CiAgICAgfSk7CiB9CiAKQEAgLTgwLDEwICs5MCwxMSBAQCB2b2lkIEdlbmVyYXRvckZyYW1lOjpy
ZXN1bWUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlQ2FsbGVlTG9j
YQogewogICAgIC8vIE9ubHkgcmVzdW1lIGNhbGxlZSBsb2NhbHMuCiAgICAgLy8gRXZlcnkgdGlt
ZSBhIGdlbmVyYXRvciBpcyBjYWxsZWQgKG9yIHJlc3VtZWQpLCBwYXJhbWV0ZXJzIHNob3VsZCBi
ZSByZXBsYWNlZC4KKyAgICB1bnNpZ25lZCBnZW5lcmF0b3JMb2NhbEluZGV4ID0gMDsKICAgICBs
aXZlQ2FsbGVlTG9jYWxzLmZvckVhY2hTZXRCaXQoWyZdKHNpemVfdCBpbmRleCkgewotICAgICAg
ICBleGVjLT51bmNoZWNrZWRSKHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGluZGV4KSkgPSBsb2Nh
bEF0KGluZGV4KS5nZXQoKTsKLSAgICAgICAgbG9jYWxBdChpbmRleCkuY2xlYXIoKTsKKyAgICAg
ICAgZXhlYy0+dW5jaGVja2VkUih2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChpbmRleCkpID0gbG9j
YWxBdChnZW5lcmF0b3JMb2NhbEluZGV4KyspLmdldCgpOwogICAgIH0pOworICAgIG1fbnVtYmVy
T2ZTYXZlZENhbGxlZUxvY2FscyA9IDA7CiB9CiAKIHZvaWQgR2VuZXJhdG9yRnJhbWU6OnZpc2l0
Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKQEAgLTkxLDcgKzEw
MiwxMiBAQCB2b2lkIEdlbmVyYXRvckZyYW1lOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwg
U2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgR2VuZXJhdG9yRnJhbWUqIHRoaXNPYmplY3QgPSBq
c0Nhc3Q8R2VuZXJhdG9yRnJhbWUqPihjZWxsKTsKICAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRo
aXNPYmplY3QsIHZpc2l0b3IpOwogICAgIC8vIFNpbmNlIG9ubHkgdHJ1ZSBjZWxsIHBvaW50ZXJz
IGFyZSBzdG9yZWQgYXMgYSBjZWxsLCB3ZSBjYW4gc2FmZWx5IG1hcmsgdGhlbS4KLSAgICB2aXNp
dG9yLmFwcGVuZFZhbHVlcyh0aGlzT2JqZWN0LT5sb2NhbHMoKSwgdGhpc09iamVjdC0+bV9udW1i
ZXJPZkNhbGxlZUxvY2Fscyk7CisgICAgdmlzaXRvci5hcHBlbmRWYWx1ZXModGhpc09iamVjdC0+
bG9jYWxzKCksIHRoaXNPYmplY3QtPm1fbnVtYmVyT2ZTYXZlZENhbGxlZUxvY2Fscyk7CisgICAg
Ly8gQ2xlYXIgbm90IHVzZWQgY2FsbGVlIGxvY2FscyB3aGVuIG1hcmtpbmcuCisgICAgLy8gVGhp
cyBlbnN1cmVzIHRoYXQsICJpZiBhIGdpdmVuIGxvY2FsIGhhcyBhIHZhbHVlLCB0aGlzIHZhbHVl
IGlzIGNvcnJlY3RseSBtYXJrZWQgaW4gdGhlIHByZXZpb3VzIG1hcmtpbmcgcGhhc2UiLgorICAg
IHNpemVfdCB1bnVzZWRMb2NhbHNDb3VudCA9IHRoaXNPYmplY3QtPm1fbnVtYmVyT2ZDYWxsZWVM
b2NhbHMgLSB0aGlzT2JqZWN0LT5tX251bWJlck9mU2F2ZWRDYWxsZWVMb2NhbHM7CisgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCB1bnVzZWRMb2NhbHNDb3VudDsgKytpKQorICAgICAgICB0aGlz
T2JqZWN0LT5sb2NhbEF0KHRoaXNPYmplY3QtPm1fbnVtYmVyT2ZTYXZlZENhbGxlZUxvY2FscyAr
IGkpLmNsZWFyKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJhbWUuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZyYW1lLmgKaW5kZXggM2Q1NDViMTQ3ZGQ0YWJmYjJi
YmI5YjVhNzE5NGU4Zjc0ODQxYzQ5YS4uY2YxZGI3YTJiZWU2MGRhMjk0NjRlYzQxN2EwYzVmYjhj
MWYwYWU4YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJh
dG9yRnJhbWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JG
cmFtZS5oCkBAIC0yNywxMSArMjcsMTQgQEAKICNkZWZpbmUgR2VuZXJhdG9yRnJhbWVfaAogCiAj
aW5jbHVkZSAiSlNDZWxsLmgiCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKICNpbmNsdWRlIDx3dGYv
RmFzdEJpdFZlY3Rvci5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIAotY2xhc3MgR2VuZXJhdG9yRnJh
bWUgOiBwdWJsaWMgSlNDZWxsIHsKK2NsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKworY2xh
c3MgR2VuZXJhdG9yRnJhbWUgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAgZnJpZW5k
IGNsYXNzIEpJVDsKICNpZiBFTkFCTEUoREZHX0pJVCkKICAgICBmcmllbmQgY2xhc3MgREZHOjpT
cGVjdWxhdGl2ZUpJVDsKQEAgLTM5LDEyICs0MiwxMiBAQCBjbGFzcyBHZW5lcmF0b3JGcmFtZSA6
IHB1YmxpYyBKU0NlbGwgewogI2VuZGlmCiAgICAgZnJpZW5kIGNsYXNzIFZNOwogcHVibGljOgot
ICAgIHR5cGVkZWYgSlNDZWxsIEJhc2U7Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVj
dHVyZUZsYWdzID0gU3RydWN0dXJlSXNJbW1vcnRhbCB8IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwor
ICAgIHR5cGVkZWYgSlNOb25GaW5hbE9iamVjdCBCYXNlOwogCiAgICAgREVDTEFSRV9FWFBPUlRf
SU5GTzsKIAotICAgIHN0YXRpYyBHZW5lcmF0b3JGcmFtZSogY3JlYXRlKFZNJiwgc2l6ZV90IG51
bWJlck9mQ2FsbGVlTG9jYWxzKTsKKyAgICBzdGF0aWMgR2VuZXJhdG9yRnJhbWUqIGNyZWF0ZShF
eGVjU3RhdGUqLCBzaXplX3QgbnVtYmVyT2ZDYWxsZWVMb2NhbHMpOworICAgIHN0YXRpYyBHZW5l
cmF0b3JGcmFtZSogY3JlYXRlKFZNJiwgU3RydWN0dXJlKiwgc2l6ZV90IG51bWJlck9mQ2FsbGVl
TG9jYWxzKTsKIAogICAgIFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qIGxvY2FscygpCiAgICAg
ewpAQCAtNTMsNyArNTYsNiBAQCBjbGFzcyBHZW5lcmF0b3JGcmFtZSA6IHB1YmxpYyBKU0NlbGwg
ewogCiAgICAgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiYgbG9jYWxBdChzaXplX3QgaW5kZXgp
CiAgICAgewotICAgICAgICBBU1NFUlQoaW5kZXggPCBtX251bWJlck9mQ2FsbGVlTG9jYWxzKTsK
ICAgICAgICAgcmV0dXJuIGxvY2FscygpW2luZGV4XTsKICAgICB9CiAKQEAgLTYyLDYgKzY0LDIx
IEBAIGNsYXNzIEdlbmVyYXRvckZyYW1lIDogcHVibGljIEpTQ2VsbCB7CiAgICAgICAgIHJldHVy
biBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Y8c2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPik+
KHNpemVvZihHZW5lcmF0b3JGcmFtZSkpOwogICAgIH0KIAorICAgIHN0YXRpYyBzaXplX3QgbG9j
YWxPZmZzZXQodW5zaWduZWQgaW5kZXgpCisgICAgeworICAgICAgICByZXR1cm4gb2Zmc2V0T2ZM
b2NhbHMoKSArIGluZGV4ICogc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPik7CisgICAgfQor
CisgICAgc3RhdGljIHNpemVfdCBudW1iZXJPZkNhbGxlZUxvY2Fsc09mZnNldCgpCisgICAgewor
ICAgICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEdlbmVyYXRvckZyYW1lLCBtX251bWJlck9m
Q2FsbGVlTG9jYWxzKTsKKyAgICB9CisKKyAgICBzdGF0aWMgc2l6ZV90IG51bWJlck9mU2F2ZWRD
YWxsZWVMb2NhbHNPZmZzZXQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRP
RihHZW5lcmF0b3JGcmFtZSwgbV9udW1iZXJPZlNhdmVkQ2FsbGVlTG9jYWxzKTsKKyAgICB9CisK
ICAgICBzdGF0aWMgc2l6ZV90IGFsbG9jYXRpb25TaXplRm9yTG9jYWxzKHVuc2lnbmVkIG51bWJl
ck9mTG9jYWxzKQogICAgIHsKICAgICAgICAgcmV0dXJuIG9mZnNldE9mTG9jYWxzKCkgKyBudW1i
ZXJPZkxvY2FscyAqIHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pOwpAQCAtNzMsMTYgKzkw
LDE2IEBAIGNsYXNzIEdlbmVyYXRvckZyYW1lIDogcHVibGljIEpTQ2VsbCB7CiAgICAgdm9pZCBy
ZXN1bWUoRXhlY1N0YXRlKiwgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZUNhbGxlZUxvY2Fscyk7
CiAKIHByaXZhdGU6Ci0gICAgR2VuZXJhdG9yRnJhbWUoVk0mLCBzaXplX3QgbnVtYmVyT2ZDYWxs
ZWVMb2NhbHMpOworICAgIEdlbmVyYXRvckZyYW1lKFZNJiwgU3RydWN0dXJlKiwgdWludDMyX3Qg
bnVtYmVyT2ZDYWxsZWVMb2NhbHMpOwogCi0gICAgc2l6ZV90IG1fbnVtYmVyT2ZDYWxsZWVMb2Nh
bHM7CisgICAgdWludDMyX3QgbV9udW1iZXJPZkNhbGxlZUxvY2FsczsKKyAgICB1aW50MzJfdCBt
X251bWJlck9mU2F2ZWRDYWxsZWVMb2NhbHMgeyAwIH07CiAKICAgICBmcmllbmQgY2xhc3MgTExJ
bnRPZmZzZXRzRXh0cmFjdG9yOwogCi0gICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOwotCiBw
cm90ZWN0ZWQ6CiAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90Vmlz
aXRvciYpOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuY3BwCmluZGV4IDc2OWEzZWZiMzA0MzhkY2Q5ZGRlNDQyZGM4ODk0YTFmMDM4MmE1MDQuLjhj
Yjg0YWJlNWY4NzM5YTAxOGU2MmVhNDhmNDcxNDQ0Nzk1NTFkM2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTUwLDYgKzUwLDcg
QEAKICNpbmNsdWRlICJFcnJvclByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkZ1bmN0aW9uQ29uc3Ry
dWN0b3IuaCIKICNpbmNsdWRlICJGdW5jdGlvblByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkdlbmVy
YXRvckZyYW1lLmgiCiAjaW5jbHVkZSAiR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5oIgog
I2luY2x1ZGUgIkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiR2VuZXJh
dG9yUHJvdG90eXBlLmgiCkBAIC0zODgsNiArMzg5LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6
aW5pdChWTSYgdm0pCiAgICAgCiAgICAgRk9SX0VBQ0hfQlVJTFRJTl9ERVJJVkVEX0lURVJBVE9S
X1RZUEUoQ1JFQVRFX1BST1RPVFlQRV9GT1JfREVSSVZFRF9JVEVSQVRPUl9UWVBFKQogICAgIG1f
cHJvcGVydHlOYW1lSXRlcmF0b3JTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBKU1Byb3BlcnR5TmFt
ZUl0ZXJhdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1faXRlcmF0b3JQcm90b3R5cGUu
Z2V0KCkpKTsKKyAgICBtX2dlbmVyYXRvckZyYW1lU3RydWN0dXJlLnNldCh2bSwgdGhpcywgR2Vu
ZXJhdG9yRnJhbWU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywganNOdWxsKCkpKTsKICAgICBt
X2dlbmVyYXRvclByb3RvdHlwZS5zZXQodm0sIHRoaXMsIEdlbmVyYXRvclByb3RvdHlwZTo6Y3Jl
YXRlKHZtLCB0aGlzLCBHZW5lcmF0b3JQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhp
cywgbV9pdGVyYXRvclByb3RvdHlwZS5nZXQoKSkpKTsKICAgICAKICN1bmRlZiBDUkVBVEVfUFJP
VE9UWVBFX0ZPUl9ERVJJVkVEX0lURVJBVE9SX1RZUEUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IGI0ZmYyZmI0MTNlMGU0NDYyNDkyYTQ4
YTNmZDVhNGMyNGVhMGI3NDEuLjcxZDM5ZWM5MjgzYWQ5ZTU5MDEyNDRmMDEzNmExMzU4ZjU0NGE5
OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
aApAQCAtMjU1LDYgKzI1NSw3IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2Vn
bWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fY2Fs
bGJhY2tGdW5jdGlvblN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2Nh
bGxiYWNrT2JqZWN0U3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fcHJv
cGVydHlOYW1lSXRlcmF0b3JTdHJ1Y3R1cmU7CisgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4g
bV9nZW5lcmF0b3JGcmFtZVN0cnVjdHVyZTsKICNpZiBKU0NfT0JKQ19BUElfRU5BQkxFRAogICAg
IFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fb2JqY0NhbGxiYWNrRnVuY3Rpb25TdHJ1Y3R1cmU7
CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9vYmpjV3JhcHBlck9iamVjdFN0cnVjdHVy
ZTsKQEAgLTUwMSw2ICs1MDIsNyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1Nl
Z21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBTdHJ1Y3R1cmUqIGNhbGxiYWNrRnVuY3Rpb25T
dHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2NhbGxiYWNrRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0
KCk7IH0KICAgICBTdHJ1Y3R1cmUqIGNhbGxiYWNrT2JqZWN0U3RydWN0dXJlKCkgY29uc3QgeyBy
ZXR1cm4gbV9jYWxsYmFja09iamVjdFN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSog
cHJvcGVydHlOYW1lSXRlcmF0b3JTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3Byb3BlcnR5
TmFtZUl0ZXJhdG9yU3RydWN0dXJlLmdldCgpOyB9CisgICAgU3RydWN0dXJlKiBnZW5lcmF0b3JG
cmFtZVN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fZ2VuZXJhdG9yRnJhbWVTdHJ1Y3R1cmUu
Z2V0KCk7IH0KICNpZiBKU0NfT0JKQ19BUElfRU5BQkxFRAogICAgIFN0cnVjdHVyZSogb2JqY0Nh
bGxiYWNrRnVuY3Rpb25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX29iamNDYWxsYmFja0Z1
bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBvYmpjV3JhcHBlck9iamVj
dFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fb2JqY1dyYXBwZXJPYmplY3RTdHJ1Y3R1cmUu
Z2V0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCAwZTQ0YzM0NjBm
OWY4ZjBkY2IzNWQ5MTJkNzk1ZjdmOThkZmI3ZjQ1Li4wZWYyNWU3MjlhYTZlNTVjM2RjYTA2MWMy
MmI2NWFhNmY3YjViMzRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC0y
NDYsNyArMjQ2LDYgQEAgc3RhdGljIGJvb2wgZW5hYmxlQXNzZW1ibGVyKEV4ZWN1dGFibGVBbGxv
Y2F0b3ImIGV4ZWN1dGFibGVBbGxvY2F0b3IpCiAgICAgaW5mZXJyZWRUeXBlU3RydWN0dXJlLnNl
dCgqdGhpcywgSW5mZXJyZWRUeXBlOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgp
KSk7CiAgICAgaW5mZXJyZWRUeXBlVGFibGVTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBJbmZlcnJlZFR5
cGVUYWJsZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIGZ1bmN0
aW9uUmFyZURhdGFTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBGdW5jdGlvblJhcmVEYXRhOjpjcmVhdGVT
dHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7Ci0gICAgZ2VuZXJhdG9yRnJhbWVTdHJ1Y3R1
cmUuc2V0KCp0aGlzLCBHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBq
c051bGwoKSkpOwogICAgIGV4Y2VwdGlvblN0cnVjdHVyZS5zZXQoKnRoaXMsIEV4Y2VwdGlvbjo6
Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIHByb21pc2VEZWZlcnJl
ZFN0cnVjdHVyZS5zZXQoKnRoaXMsIEpTUHJvbWlzZURlZmVycmVkOjpjcmVhdGVTdHJ1Y3R1cmUo
KnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgaW50ZXJuYWxQcm9taXNlRGVmZXJyZWRTdHJ1Y3R1
cmUuc2V0KCp0aGlzLCBKU0ludGVybmFsUHJvbWlzZURlZmVycmVkOjpjcmVhdGVTdHJ1Y3R1cmUo
KnRoaXMsIDAsIGpzTnVsbCgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAppbmRleCBh
ZWUwYWMxZjIxYjg0NTFiYzc3Njc0NDNhMGIwNWNhMDQ4YjRmNDliLi4yMzYwODM3MGE5ODM2ZDg5
NzdlNDlkNzFlNjhhODA5YjlhYzQ1MzYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgK
QEAgLTMxMiw3ICszMTIsNiBAQCBjbGFzcyBWTSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRl
ZDxWTT4gewogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGluZmVycmVkVHlwZVN0cnVjdHVyZTsKICAg
ICBTdHJvbmc8U3RydWN0dXJlPiBpbmZlcnJlZFR5cGVUYWJsZVN0cnVjdHVyZTsKICAgICBTdHJv
bmc8U3RydWN0dXJlPiBmdW5jdGlvblJhcmVEYXRhU3RydWN0dXJlOwotICAgIFN0cm9uZzxTdHJ1
Y3R1cmU+IGdlbmVyYXRvckZyYW1lU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGV4
Y2VwdGlvblN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBwcm9taXNlRGVmZXJyZWRT
dHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gaW50ZXJuYWxQcm9taXNlRGVmZXJyZWRT
dHJ1Y3R1cmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNz
L2dlbmVyYXRvci1maWItZnRsLWFuZC1hcnJheS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwtYW5kLWFycmF5LmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZl
OTM5ODEyZmRiYWVjNmI4MzJiZmQwMGYyMTUzZGVmODRiYjc1OTIKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLWFu
ZC1hcnJheS5qcwpAQCAtMCwwICsxLDIzIEBACisoZnVuY3Rpb24gKCkgeworICAgIGZ1bmN0aW9u
ICpmaWIoKQorICAgIHsKKyAgICAgICAgbGV0IGEgPSAxOworICAgICAgICBsZXQgYiA9IDE7Cisg
ICAgICAgIGxldCBjID0gWyAwIF07CisgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAg
ICBjWzBdID0gYTsKKyAgICAgICAgICAgIHlpZWxkIGM7CisgICAgICAgICAgICBbYSwgYl0gPSBb
YiwgYSArIGJdOworICAgICAgICB9CisgICAgfQorCisgICAgbGV0IHZhbHVlID0gMDsKKyAgICBm
b3IgKGxldCBpID0gMDsgaSA8IDFlNDsgKytpKSB7CisgICAgICAgIGxldCBmID0gZmliKCk7Cisg
ICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwOyArK2kpIHsKKyAgICAgICAgICAgIHZhbHVl
ID0gZi5uZXh0KCkudmFsdWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHZhbHVlWzBdICE9PSAz
NTQyMjQ4NDgxNzkyNjIwMDAwMDApCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCB2
YWx1ZToke3Jlc3VsdH1gKTsKKyAgICB9Cit9KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQtb2JqZWN0LmpzIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQt
b2JqZWN0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY2NzM0MGYyZWE0Yzc0MzhhMmQyMDlhYTQwZDA2NzdlNGFi
N2QzZmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3Ry
ZXNzL2dlbmVyYXRvci1maWItZnRsLWFuZC1vYmplY3QuanMKQEAgLTAsMCArMSwyMyBAQAorKGZ1
bmN0aW9uICgpIHsKKyAgICBmdW5jdGlvbiAqZmliKCkKKyAgICB7CisgICAgICAgIGxldCBhID0g
MTsKKyAgICAgICAgbGV0IGIgPSAxOworICAgICAgICBsZXQgYyA9IHsgZmliOiAwIH07CisgICAg
ICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICBjLmZpYiA9IGE7CisgICAgICAgICAgICB5
aWVsZCBjOworICAgICAgICAgICAgW2EsIGJdID0gW2IsIGEgKyBiXTsKKyAgICAgICAgfQorICAg
IH0KKworICAgIGxldCB2YWx1ZSA9IDA7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxZTQ7ICsr
aSkgeworICAgICAgICBsZXQgZiA9IGZpYigpOworICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8
IDEwMDsgKytpKSB7CisgICAgICAgICAgICB2YWx1ZSA9IGYubmV4dCgpLnZhbHVlOworICAgICAg
ICB9CisgICAgICAgIGlmICh2YWx1ZS5maWIgIT09IDM1NDIyNDg0ODE3OTI2MjAwMDAwMCkKKyAg
ICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIHZhbHVlOiR7cmVzdWx0fWApOworICAgIH0K
K30oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dl
bmVyYXRvci1maWItZnRsLWFuZC1zdHJpbmcuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLWFuZC1zdHJpbmcuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDM4
YWU2YWIzMzQ3MDQ2ODIyODQ5ZjQzMDA0ZWE1YzQwM2VlZGEyOAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwtYW5k
LXN0cmluZy5qcwpAQCAtMCwwICsxLDIyIEBACisoZnVuY3Rpb24gKCkgeworICAgIGZ1bmN0aW9u
ICpmaWIoKQorICAgIHsKKyAgICAgICAgbGV0IGEgPSAxOworICAgICAgICBsZXQgYiA9IDE7Cisg
ICAgICAgIGxldCBjID0gIlJlc3VsdCEgIjsKKyAgICAgICAgd2hpbGUgKHRydWUpIHsKKyAgICAg
ICAgICAgIHlpZWxkIGMgKyBhOworICAgICAgICAgICAgW2EsIGJdID0gW2IsIGEgKyBiXTsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIGxldCB2YWx1ZSA9IDA7CisgICAgZm9yIChsZXQgaSA9IDA7
IGkgPCAxZTQ7ICsraSkgeworICAgICAgICBsZXQgZiA9IGZpYigpOworICAgICAgICBmb3IgKGxl
dCBpID0gMDsgaSA8IDEwMDsgKytpKSB7CisgICAgICAgICAgICB2YWx1ZSA9IGYubmV4dCgpLnZh
bHVlOworICAgICAgICB9CisgICAgICAgIGlmICh2YWx1ZSAhPT0gYFJlc3VsdCEgMzU0MjI0ODQ4
MTc5MjYyMDAwMDAwYCkKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIHZhbHVlOiR7
cmVzdWx0fWApOworICAgIH0KK30oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLmpzIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNDBlMzNk
YmM4NjhiZWE3YTg5M2M5ZWMxNmI3NzllYzI2YmRiMTljCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC5qcwpAQCAt
MCwwICsxLDIxIEBACisoZnVuY3Rpb24gKCkgeworICAgIGZ1bmN0aW9uICpmaWIoKQorICAgIHsK
KyAgICAgICAgbGV0IGEgPSAxOworICAgICAgICBsZXQgYiA9IDE7CisgICAgICAgIHdoaWxlICh0
cnVlKSB7CisgICAgICAgICAgICB5aWVsZCBhOworICAgICAgICAgICAgW2EsIGJdID0gW2IsIGEg
KyBiXTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGxldCB2YWx1ZSA9IDA7CisgICAgZm9yIChs
ZXQgaSA9IDA7IGkgPCAxZTQ7ICsraSkgeworICAgICAgICBsZXQgZiA9IGZpYigpOworICAgICAg
ICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDsgKytpKSB7CisgICAgICAgICAgICB2YWx1ZSA9IGYu
bmV4dCgpLnZhbHVlOworICAgICAgICB9CisgICAgICAgIGlmICh2YWx1ZSAhPT0gMzU0MjI0ODQ4
MTc5MjYyMDAwMDAwKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgdmFsdWU6JHty
ZXN1bHR9YCk7CisgICAgfQorfSgpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>269171</attachid>
            <date>2016-01-16 09:03:08 -0800</date>
            <delta_ts>2016-01-16 09:20:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-152723-20160117020238.patch</filename>
            <type>text/plain</type>
            <size>115288</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk1MTY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
MjY1MGYyMDZjYmY0ZDYyYWRiODRiYzc5YjM2MmZlYzQ5NDZmMmM0Li44YTYyNGU4MjBhNTk3YWI3
M2IwOGY1ODViNGMzMTU1ZTFhZjgyN2ZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMzUgQEAKKzIwMTYtMDEtMTYgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgQ3JlYXRlIEdlbmVyYXRvckZyYW1lIHdpdGggdGhlIGJ5dGVjb2Rl
IG9wX25ld19nZW5lcmF0b3JfZnJhbWUgYW5kIG1ha2Ugb3Bfc2F2ZSAvIG9wX3Jlc3VtZSBERkcv
RlRMIGNhcGFibGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1MjcyMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRoaXMgcGF0Y2ggaXMgYW4gaW5pdGlhbCBhdHRlbXB0IHRvIGltcGxlbWVudCBERkcgYW5k
IEZUTCBjYXBhYmxlIEVTNiBnZW5lcmF0b3JzLgorICAgICAgICBXZSBpbnRyb2R1Y2UgdGhlIHNl
dmVyYWwgYnl0ZWNvZGVzIGFuZCBjb21waWxlIHRoZW0gaW4gREZHIC8gRlRMLgorCisgICAgICAg
IC0gb3Bfbm9wCisKKyAgICAgICAgICAgIE5vcCBvcGVyYXRpb24gaW4gdGhlIGJ5dGVjb2RlLiBU
aGlzIGlzIHVzZWQgdG8gcmVwcmVzZW50IGhvbGVzIGluIHRoZSBieXRlY29kZSBzdHJlYW0uCisg
ICAgICAgICAgICBUaGVzZSBieXRlY29kZXMgY291bGQgYmUgcmVwbGFjZWQgKFNpbWlsYXIgdG8g
dGhlIExMVk0gcGF0Y2hwb2ludCkuCisKKyAgICAgICAgLSBvcF9uZXdfZ2VuZXJhdG9yX2ZyYW1l
CisKKyAgICAgICAgICAgIEFsbG9jYXRlIEdlbmVyYXRvckZyYW1lIGluIHRoZSBieXRlY29kZSBp
bnN0ZWFkIG9mIGFsbG9jYXRpbmcgaXQgaW4gdGhlIG9wX3NhdmUuCisKKyAgICAgICAgLSBvcF9z
YXZlX2hpbnQKKworICAgICAgICAgICAgVGhpcyBpcyBwcmV2aW91cyBvcF9zYXZlLiBUaGlzIG9w
X3NhdmVfaGludCBpcyBvbmx5IHVzZWQgZm9yIHRoZSBieXRlY29kZSB1c2UtZGVmIGFuYWx5c2lz
LiBPbmNlIHRoZSBhbmFseXNpcyBpcyBkb25lIGluIENvZGVCbG9jayBjcmVhdGlvbiBwaGFzZSwK
KyAgICAgICAgICAgIHdlIHdpbGwgY29udmVydCB0aGlzIGJ5dGVjb2RlIHRvIG9wX3NhdmUuCisg
ICAgICAgICAgICBXaGlsZSBvcF9zYXZlX2hpbnQgaGFzIGEgcHNldWRvIGp1bXAgdG8gdGhlIGdl
bmVyYXRvciBjb250aW51YXRpb24gbWVyZ2UgcG9pbnQsIG9wX3NhdmUgZG9lcyBub3QgaGF2ZSBp
dC4gVGhpcyBwc2V1ZG8ganVtcCBpcyBuZWNlc3NhcnkgZm9yCisgICAgICAgICAgICB0aGUgYnl0
ZWNvZGUgdXNlLWRlZiBhbmFseXNpcy4gVGhpcyBieXRlY29kZSB1c2UtZGVmIGFuYWx5c2lzIGlz
IHVzZWQgdG8gZGlzY292ZXIgbGl2ZSB2YXJpYWJsZXMgaW4gdGhlIGdlbmVyYXRvciBjb250aW51
YXRpb24gbWVyZ2UgcG9pbnQuCisKKyAgICAgICAgICAgIFRoZSBnZW5lcmF0b3IgY29udGludWF0
aW9uIG1lcmdlIHBvaW50IGlzIHRoZSBwb2ludCB0aGF0IG1lcmdpbmcgdGhlIDIgYmFzaWMgYmxv
Y2tzLCBzYXZpbmcgbG9jYWxzIHRvIHRoZSBnZW5lcmF0b3IgZnJhbWUgYW5kIHJlc3VtaW5nIGxv
Y2FscyBmcm9tCisgICAgICAgICAgICB0aGUgZ2VuZXJhdG9yIGZyYW1lLgorCisgICAgICAgIC0g
b3Bfc2F2ZQorCisgICAgICAgICAgICBTaW1pbGFyIHRvIHRoZSBwcmV2aW91cyBvcF9zYXZlLiBJ
dCB1c2VzIGxvY2FscyBhbmQgc2F2ZXMgdGhlbSB0byB0aGUgZ2VuZXJhdG9yIGZyYW1lLiBBdCB0
aGF0IHRpbWUsIHdlIHdpbGwgc2V0IEdlbmVyYXRvckZyYW1lOjptX251bWJlck9mU2F2ZWRDYWxs
ZWVMb2NhbHMgYXMgKk4qCisgICAgICAgICAgICB0byBhbGxvY2F0ZSBzcGFjZSBmb3Igc2F2ZWQg
bG9jYWxzLgorCisgICAgICAgIC0gb3BfcmVzdW1lX2hpbnQKKworICAgICAgICAgICAgU2ltaWxh
ciB0byB0aGUgb3Bfc2F2ZV9oaW50LCB0aGlzIGlzIG9ubHkgdXNlZCBmb3IgdGhlIGJ5dGVjb2Rl
IHVzZS1kZWYgYW5hbHlzaXMuIG9wX3Jlc3VtZV9oaW50IGxlYWRzIHNldmVyYWwgb3Bfbm9wIG9w
ZXJhdGlvbnMuCisgICAgICAgICAgICBBZnRlciB0aGUgYW5hbHlzaXMsIHdlIGV4cGxvaXQgdGhl
IG5lZWRlZCBkZWZzIGZvciB0aGlzIHJlc3VtZSBwb2ludCBhbmQgcmVwbGFjZSB0aGlzIGJ5dGVj
b2RlIGFuZCBvcF9ub3Agd2l0aCBvcF9yZXN1bWVfZnJvbV9nZW5lcmF0b3JfZnJhbWUgb3BlcmF0
aW9ucy4KKyAgICAgICAgICAgIFRoaXMgbWFrZXMgREZHIFNldExvY2FsIHRyZWF0bWVudCBzaW1w
bGUuIFdoaWxlIG9wX3Jlc3VtZV9oaW50IGRlZmluZXMgbXVsdGlwbGUgbG9jYWxzLCBvcF9yZXN1
bWVfZnJvbV9nZW5lcmF0b3JfZnJhbWUgb25seSBkZWZpbmVzIG9uZSBsb2NhbCAoZHN0KS4KKwor
ICAgICAgICAtIG9wX3Jlc3VtZV9mcm9tX2dlbmVyYXRvcl9mcmFtZQorCisgICAgICAgICAgICBU
aGlzIHJldHJpZXZlcyBsb2NhbCB2YXJpYWJsZSBmcm9tIHRoZSBnZW5lcmF0b3IgZnJhbWUuIG9w
X3Jlc3VtZV9oaW50IGFuZCBzdWJzZXF1ZW50IG9wX25vcCB3aWxsIGJlIHJlcGxhY2VkIHdpdGgg
dGhpcy4KKworICAgICAgICAtIG9wX2NsZWFyX2dlbmVyYXRvcl9mcmFtZQorCisgICAgICAgICAg
ICBUaGlzIGNsZWFycyBnZW5lcmF0b3IgZnJhbWUncyBsb2NhbHMgYnkgc2V0dGluZyBHZW5lcmF0
b3JGcmFtZTo6bV9udW1iZXJPZlNhdmVkQ2FsbGVlTG9jYWxzIGFzIDAuCisKKworICAgICAgICBI
ZXJlLCB3ZSBleHBsYWluIGFib3V0IGhvdyB0byBwcmVwcm9jZXNzIGJ5dGVjb2Rlcy4KKyAgICAg
ICAgRmlyc3QsIHdlIGVtaXQgb3Bfc2F2ZV9oaW50LCBvcF9yZXN1bWVfaGludCBhbmQgb3BfY2xl
YXJfZ2VuZXJhdG9yX2ZyYW1lIGxpa2UgdGhpcy4KKworICAgICAgICBbZW50cnldIC0rLS0+IFtz
YXZlIGJsb2NrXSAtPiBvcF9zYXZlX2hpbnQgKGl0IGlzIGJyYW5jaGluZyBieXRlY29kZSkgLS0t
LS0tPiBbbWVyZ2UgYmxvY2tdIC0+IC4uLgorICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBe
CisgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKy0+
IG9wX3JldCAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgICAgICAgKy0tLS0t
LS0tLS0tLS0tLS0tLT4gb3BfcmVzdW1lX2hpbnQgLT4gb3BfY2xlYXJfZ2VuZXJhdG9yX2ZyYW1l
IC0tLS0tKworCisgICAgICAgIEFuZCBwZXJmb3JtIGJ5dGVjb2RlIHVzZS1kZWYgYW5hbHlzaXMg
b250byB0aGlzIENGRy4gQnkgc2VlaW5nIGxpdmUgbG9jYWxzIGF0IHRoZSBoZWFkIG9mIFttZXJn
ZSBibG9ja10gd2UgY2FuIGZpbmQgIndoaWNoIGxvY2FscyB3ZSBzaG91bGQgc2F2ZSBhbmQgcmVz
dW1lIi4KKyAgICAgICAgQmFzZWQgb24gdGhlIGFib3ZlIGFuYWx5c2lzIHJlc3VsdCwgd2UgcGF0
Y2ggdGhlIGJ5dGVjb2RlIHN0cmVhbSBhcyBmb2xsb3dzLgorCisgICAgICAgIFtlbnRyeV0gLSst
LT4gW3NhdmUgYmxvY2tdIC0+IG9wX3NhdmUgLT4gb3BfcmV0ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICstPiBbbWVyZ2UgYmxvY2tdIC0+IC4uLgorICAgICAgICAgICAgICAgICB8ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB8CisgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgICAg
ICAgKy0tPiBvcF9yZXN1bWVfZnJvbV9nZW5lcmF0b3JfZnJhbWUgKiBuIC0+IG9wX2NsZWFyX2dl
bmVyYXRvcl9mcmFtZSAtKworCisgICAgICAgIFdoaWxlIG9wX3Jlc3VtZV9oaW50IHdpbGwgYXR0
ZW1wdCB0byBkZWZpbmUgbXVsdGlwbGUgbG9jYWxzIGF0IGEgdGltZSwgb3BfcmVzdW1lX2Zyb21f
Z2VuZXJhdG9yX2ZyYW1lIG9ubHkgZGVmaW5lcyBvbmUgbG9jYWwuIEl0IHNpbXBsaWZpZXMgREZH
IGFuYWx5c2lzLgorCisgICAgICAgIEFuZCB3ZSBpbnRyb2R1Y2VzIHNldmVyYWwgREZHIG5vZGVz
LgorCisgICAgICAgIC0gTmV3R2VuZXJhdG9yRnJhbWUKKworICAgICAgICAgICAgVGhpcyBqdXN0
IGFsbG9jYXRlcyBHZW5lcmF0b3JGcmFtZS4KKworICAgICAgICAtIFJlc2l6ZUdlbmVyYXRvckxv
Y2FscworCisgICAgICAgICAgICBUaGlzIHNldCBHZW5lcmF0b3JGcmFtZTo6bV9udW1iZXJPZlNh
dmVkQ2FsbGVlTG9jYWxzICpOKi4gVGhpcyBub2RlIGlzIHVzZWQgdG8gKDEpIGFsbG9jYXRlIHNw
YWNlIGZvciBsb2NhbHMgaW4gR2VuZXJhdG9yRnJhbWUgYW5kICgyKSBkZWFsbG9jYXRlIHNwYWNl
IGluCisgICAgICAgICAgICBHZW5lcmF0b3JGcmFtZSBieSBzZXR0aW5nIGl0IGFzIDAuCisKKyAg
ICAgICAgLSBHZXRHZW5lcmF0b3JMb2NhbAorCisgICAgICAgICAgICBHZXQgYSBzYXZlZCBsb2Nh
bCB2YXJpYWJsZSBmcm9tIGEgZ2VuZXJhdG9yIGZyYW1lLiBHZXRHZW5lcmF0b3JMb2NhbCBhbmQg
U2V0R2VuZXJhdG9yTG9jYWwgYXJlIGxpbmtlZCB3aXRoIEdlbmVyYXRvckxvY2FsRGF0YS4gU28g
dHlwZSBwcmVkaWNhdGlvbiBhbmQgZmxhZ3MKKyAgICAgICAgICAgIGFyZSBjb3JyZWN0bHkgcHJv
cGFnYXRlZCBiZXlvbmQgdGhlIGdlbmVyYXRvciBmcmFtZS4KKworICAgICAgICAtIFNldEdlbmVy
YXRvckxvY2FsCisKKyAgICAgICAgICAgIFN0b3JlIGEgbG9jYWwgdmFyaWFibGUgdG8gYSBnZW5l
cmF0b3IgZnJhbWUuCisKKyAgICAgICAgRnV0dXJlIHBsYW5zIGFyZSB0aGUgZm9sbG93aW5ncy4K
KworICAgICAgICAxLiBTdXBwb3J0IHRyYW5zZmVycmluZyBBYnN0cmFjdFZhbHVlIGJldHdlZW4g
U2V0R2VuZXJhdG9yTG9jYWwgYW5kIEdldEdlbmVyYXRvckxvY2FsLiBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUzMTgzCisKKyAgICAgICAgMi4gQ3JlYXRlIEpTR2Vu
ZXJhdG9yIGFuZCBhbGxvY2F0ZSBpdCBpbiB0aGUgZ2VuZXJhdG9yIHdyYXBwZXIgZnVuY3Rpb24u
IFRoaXMgc2hvdWxkIGJlIGNvbXBpbGVkIGluIERGRyAvIEZUTCBhbmQKKyAgICAgICAgdGhpcyBv
YmplY3Qgc2hvdWxkIGJlIHRyYWNrZWQgKGJ5IGVzY2FwZSBhbmFseXNpcykgYW5kIGVsaW1pbmF0
ZWQgaWYgcG9zc2libGUgYnkgb2JqZWN0IGFsbG9jYXRpb24gZWxpbWluYXRpb24uCisKKyAgICAg
ICAgMy4gQW5kIG9uY2Ugd2UgZXhwbG9pdCB0aGF0IEdlbmVyYXRvckZyYW1lIGlzIG5vdCBlc2Nh
cGVkIGZyb20gdGhlIGdpdmVuIEZUTC1lZCBmdW5jdGlvbiwgd2Ugd2lsbCBlbGltaW5hdGUgR2Vu
ZXJhdG9yRnJhbWUgYWxsb2NhdGlvbiBhbmQKKyAgICAgICAgY29udmVydCBHZW5lcmF0b3JMb2Nh
bCBvcGVyYXRpb25zIGludG8gZ2V0L3NldCBsb2NhbCBvcGVyYXRpb25zLgorCisgICAgICAgICog
SmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qOgorICAgICAgICAq
IEphdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzOgor
ICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAg
ICAgICogYnVpbHRpbnMvR2VuZXJhdG9yUHJvdG90eXBlLmpzOgorICAgICAgICAoZ2VuZXJhdG9y
UmVzdW1lKToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suY3BwOgorICAg
ICAgICAoSlNDOjppc0JyYW5jaCk6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpz
b246CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaDoKKyAgICAgICAgKEpTQzo6
Y29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OmNvbXB1dGVEZWZz
Rm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogYnl0ZWNvZGUvUHJlY2lzZUp1bXBU
YXJnZXRzLmNwcDoKKyAgICAgICAgKEpTQzo6Z2V0SnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNl
dCk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdHZW5lcmF0b3JGcmFtZSk6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0U2F2ZSk6CisgICAgICAgIChKU0M6OkJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0UmVzdW1lKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRv
ckZyYW1lUmVnaXN0ZXIpOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEhlYXAuaDoKKyAgICAg
ICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6
REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVj
dHMpOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6Om5ld0dlbmVyYXRvckxvY2FsRGF0YSk6CisgICAgICAgIChK
U0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAqIGRmZy9ERkdD
YXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmNhcGFiaWxpdHlMZXZlbCk6Cisg
ICAgICAgICogZGZnL0RGR0Nsb2JiZXJpemUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVy
aXplKToKKyAgICAgICAgKiBkZmcvREZHQ2xvYmJlcnNFeGl0U3RhdGUuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OmNsb2JiZXJzRXhpdFN0YXRlKToKKyAgICAgICAgKiBkZmcvREZHRG9lc0dDLmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpkb2VzR0MpOgorICAgICAgICAqIGRmZy9ERkdGaXh1cFBo
YXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5vZGUpOgorICAg
ICAgICAqIGRmZy9ERkdHZW5lcmF0b3JMb2NhbERhdGEuaDogQWRkZWQuCisgICAgICAgIChKU0M6
OkRGRzo6R2VuZXJhdG9yTG9jYWxEYXRhOjpwcmVkaWN0KToKKyAgICAgICAgKEpTQzo6REZHOjpH
ZW5lcmF0b3JMb2NhbERhdGE6OnByZWRpY3Rpb24pOgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5o
OgorICAgICAgICAqIGRmZy9ERkdNYXlFeGl0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjptYXlF
eGl0KToKKyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6
Omhhc0dlbmVyYXRvckxvY2Fsc1NpemUpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmdlbmVy
YXRvckxvY2Fsc1NpemUpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc0dlbmVyYXRvckxv
Y2FsSW5kZXgpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmdlbmVyYXRvckxvY2FsSW5kZXgp
OgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc0dlbmVyYXRvckxvY2FsRGF0YSk6CisgICAg
ICAgIChKU0M6OkRGRzo6Tm9kZTo6Z2VuZXJhdG9yTG9jYWxEYXRhKToKKyAgICAgICAgKEpTQzo6
REZHOjpOb2RlOjpoYXNHZW5lcmF0b3JGcmFtZUxvY2Fscyk6CisgICAgICAgIChKU0M6OkRGRzo6
Tm9kZTo6Z2VuZXJhdG9yRnJhbWVMb2NhbHMpOgorICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5o
OgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBkZmcvREZHT3Bl
cmF0aW9ucy5oOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2U6OnByb3Bh
Z2F0ZSk6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6
REZHOjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3R2VuZXJhdG9y
RnJhbWUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUmVzaXpl
R2VuZXJhdG9yTG9jYWxzKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAg
ICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2
ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6
CisgICAgICAgICogZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcDoKKyAgICAg
ICAgKiBkZmcvREZHU3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlND
OjpERkc6OlN0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlOjpydW4pOgorICAgICAgICAqIGZ0bC9G
VExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcDoKKyAgICAgICAgKiBmdGwvRlRMQWJzdHJhY3RI
ZWFwUmVwb3NpdG9yeS5oOgorICAgICAgICAqIGZ0bC9GVExDYXBhYmlsaXRpZXMuY3BwOgorICAg
ICAgICAoSlNDOjpGVEw6OmNhbkNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1Rv
TExWTS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvTExWTTo6Y29tcGls
ZU5vZGUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVS
ZXNpemVHZW5lcmF0b3JMb2NhbHMpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdU
b0xMVk06OmNvbXBpbGVTZXRHZW5lcmF0b3JMb2NhbCk6CisgICAgICAgIChKU0M6OkZUTDo6REZH
OjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZUdldEdlbmVyYXRvckxvY2FsKToKKyAgICAgICAgKEpT
Qzo6RlRMOjpERkc6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlTmV3R2VuZXJhdG9yRnJhbWUpOgor
ICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxl
TWFpblBhc3MpOgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUT3Bjb2Rl
cy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9yZXN1bWVfZnJvbV9nZW5lcmF0b3Jf
ZnJhbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfY2xlYXJfZ2VuZXJhdG9yX2ZyYW1l
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX25ld19nZW5lcmF0b3JfZnJhbWUpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bfbm9wKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29w
X3Jlc3VtZSk6IERlbGV0ZWQuCisgICAgICAgICogaml0L0pJVE9wY29kZXMzMl82NC5jcHA6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9yZXN1bWVfZnJvbV9nZW5lcmF0b3JfZnJhbWUpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfY2xlYXJfZ2VuZXJhdG9yX2ZyYW1lKToKKyAgICAg
ICAgKiBsbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwOgorICAgICAgICAqIGxsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIzMl82NC5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbToK
KyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVy
VHlwZT46OnBhcnNlSW5uZXIpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFy
c2VHZW5lcmF0b3JGdW5jdGlvblNvdXJjZUVsZW1lbnRzKToKKyAgICAgICAgKEpTQzo6UGFyc2Vy
PExleGVyVHlwZT46OmNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMpOgorICAgICAgICAqIHBhcnNl
ci9QYXJzZXIuaDoKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHA6CisgICAg
ICAgIChKU0M6OlNMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQ
YXRocy5oOgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJhdG9yRnJhbWUuY3BwOgorICAgICAgICAo
SlNDOjpHZW5lcmF0b3JGcmFtZTo6R2VuZXJhdG9yRnJhbWUpOgorICAgICAgICAoSlNDOjpHZW5l
cmF0b3JGcmFtZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFt
ZTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OmNyZWF0
ZSk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpzYXZlKToKKyAgICAgICAgKEpTQzo6
R2VuZXJhdG9yRnJhbWU6OnJlc3VtZSk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjp2
aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL0dlbmVyYXRvckZyYW1lLmg6CisgICAg
ICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpsb2NhbE9mZnNldCk6CisgICAgICAgIChKU0M6Okdl
bmVyYXRvckZyYW1lOjpudW1iZXJPZkNhbGxlZUxvY2Fsc09mZnNldCk6CisgICAgICAgIChKU0M6
OkdlbmVyYXRvckZyYW1lOjpudW1iZXJPZlNhdmVkQ2FsbGVlTG9jYWxzT2Zmc2V0KToKKyAgICAg
ICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OmxvY2FsQXQpOiBEZWxldGVkLgorICAgICAgICAqIHJ1
bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6
aW5pdCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlND
OjpKU0dsb2JhbE9iamVjdDo6Z2VuZXJhdG9yRnJhbWVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1
bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6Vk0pOiBEZWxldGVkLgorICAgICAgICAq
IHJ1bnRpbWUvVk0uaDoKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwt
YW5kLWFycmF5LmpzOiBBZGRlZC4KKyAgICAgICAgKGZpYik6CisgICAgICAgICogdGVzdHMvc3Ry
ZXNzL2dlbmVyYXRvci1maWItZnRsLWFuZC1vYmplY3QuanM6IEFkZGVkLgorICAgICAgICAoZmli
KToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwtYW5kLXN0cmluZy5q
czogQWRkZWQuCisgICAgICAgIChmaWIpOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9nZW5lcmF0
b3ItZmliLWZ0bC5qczogQWRkZWQuCisgICAgICAgIChmaWIpOgorCiAyMDE2LTAxLTE1ICBCZW5q
YW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIExlZ2Fs
aXplIE1lbW9yeSBPZmZzZXRzIGZvciBBUk02NCBiZWZvcmUgbG93ZXJpbmcgdG8gQWlyCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZh
U2NyaXB0Q29yZS52Y3hwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
LnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagppbmRleCBlMTgwZTM1YzIyOGUzYmFjMDY0
YzNmYTQ3Yzc3NzlkNjAyZjgyYmM5Li41ZjUxYzZiYTYzZTE1YmUzZmNiNmFjOWRlODM4MDBmYTVl
NDIzMmViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
dmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKQEAgLTExOTQs
NiArMTE5NCw3IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxkZmdcREZHRnJvemVuVmFs
dWUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGRmZ1xERkdGdW5jdGlvbldoaXRl
bGlzdC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cZGZnXERGR0dlbmVyYXRpb25J
bmZvLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxkZmdcREZHR2VuZXJhdG9yTG9j
YWxEYXRhLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxkZmdcREZHR1BSSW5mby5o
IiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cZGZnXERGR0dyYXBoLmgiIC8+CiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxkZmdcREZHR3JhcGhTYWZlcG9pbnQuaCIgLz4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFT
Y3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycwppbmRleCBiZjc1
NjBlYWE0YTNjMWNkNzk1OTNiMGIzYjYzMDQ1ODRhOTI0NjAyLi43MzkyZjFlZjlkM2I5YTA3ZDE2
YmNkZGYzOTRhNjliMTYyNmRhNDQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlw
dENvcmUudmN4cHJvai5maWx0ZXJzCkBAIC0zODcyLDYgKzM4NzIsOSBAQAogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5cZGZnXERGR0dlbmVyYXRpb25JbmZvLmgiPgogICAgICAgPEZpbHRlcj5k
Zmc8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XGRmZ1xERkdHZW5lcmF0b3JMb2NhbERhdGEuaCI+CisgICAgICA8RmlsdGVyPmRmZzwvRmlsdGVy
PgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cZGZnXERGR0dQ
UkluZm8uaCI+CiAgICAgICA8RmlsdGVyPmRmZzwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBhOTNhNmFhMWNhYTlhODI1NGNkMTZjNDVh
YjIzZGFhZmM5MDNmNGEyLi45ZjhkY2YwMTg2ZmRiMjAxNjUyZTcxNGRmMGMzZWRkNzkxOTcwYjE4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTI1MCw2ICsxMjUwLDcgQEAKIAkJ
NzA1QjQxQjAxQTZFNTAxRTAwNzE2NzU3IC8qIFN5bWJvbE9iamVjdC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzA1QjQxQTgxQTZFNTAxRTAwNzE2NzU3
IC8qIFN5bWJvbE9iamVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTcwNUI0MUIxMUE2RTUwMUUwMDcxNjc1NyAvKiBTeW1ib2xQcm90b3R5cGUu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzA1QjQx
QTkxQTZFNTAxRTAwNzE2NzU3IC8qIFN5bWJvbFByb3RvdHlwZS5jcHAgKi87IH07CiAJCTcwNUI0
MUIyMUE2RTUwMUUwMDcxNjc1NyAvKiBTeW1ib2xQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwNUI0MUFBMUE2RTUwMUUwMDcxNjc1NyAv
KiBTeW1ib2xQcm90b3R5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQk3MDc5MTQxRDFDNEFBODYwMDBCODJGRjcgLyogREZHR2VuZXJhdG9yTG9j
YWxEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
MDc5MTQxQzFDNEFBODA3MDBCODJGRjcgLyogREZHR2VuZXJhdG9yTG9jYWxEYXRhLmggKi87IH07
CiAJCTcwOTRDNERFMUFFNDM5NTMwMDQxQTJFRSAvKiBCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwOTRD
NERDMUFFNDM5NTMwMDQxQTJFRSAvKiBCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmNwcCAqLzsg
fTsKIAkJNzA5NEM0REYxQUU0Mzk1MzAwNDFBMkVFIC8qIEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0
cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwOTRD
NEREMUFFNDM5NTMwMDQxQTJFRSAvKiBCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzA5RkI4NjcxQUUz
MzVDNjAwMzlEMDY5IC8qIEpTV2Vha1NldC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3MDlGQjg2MTFBRTMzNUM2MDAzOUQwNjkgLyogSlNXZWFrU2V0
LmNwcCAqLzsgfTsKQEAgLTM0MjQsNiArMzQyNSw3IEBACiAJCTcwNUI0MUE4MUE2RTUwMUUwMDcx
Njc1NyAvKiBTeW1ib2xPYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U3ltYm9sT2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcwNUI0MUE5MUE2
RTUwMUUwMDcxNjc1NyAvKiBTeW1ib2xQcm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gU3ltYm9sUHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNzA1QjQxQUExQTZFNTAxRTAwNzE2NzU3IC8qIFN5bWJvbFByb3RvdHlwZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTeW1ib2xQcm90b3R5cGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzA3OTE0MUMxQzRBQTgwNzAwQjgyRkY3IC8qIERG
R0dlbmVyYXRvckxvY2FsRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBE
RkdHZW5lcmF0b3JMb2NhbERhdGEuaDsgcGF0aCA9IGRmZy9ERkdHZW5lcmF0b3JMb2NhbERhdGEu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzA5NEM0REMxQUU0Mzk1MzAwNDFBMkVF
IC8qIEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTcwOTRDNEREMUFFNDM5NTMwMDQxQTJFRSAvKiBCeXRlY29kZUlu
dHJpbnNpY1JlZ2lzdHJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJ5dGVj
b2RlSW50cmluc2ljUmVnaXN0cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzA5
RkI4NjExQUUzMzVDNjAwMzlEMDY5IC8qIEpTV2Vha1NldC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBKU1dlYWtTZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtNjIxOCw2ICs2MjIwLDcgQEAKIAkJCQkyQTg4MDY3NjE5MTA3RDU1MDBDQjBCQkIg
LyogREZHRnVuY3Rpb25XaGl0ZWxpc3QuY3BwICovLAogCQkJCTJBODgwNjc3MTkxMDdENTUwMENC
MEJCQiAvKiBERkdGdW5jdGlvbldoaXRlbGlzdC5oICovLAogCQkJCTg2RUM5REI2MTMyOERGODIw
MDJCMkFENyAvKiBERkdHZW5lcmF0aW9uSW5mby5oICovLAorCQkJCTcwNzkxNDFDMUM0QUE4MDcw
MEI4MkZGNyAvKiBERkdHZW5lcmF0b3JMb2NhbERhdGEuaCAqLywKIAkJCQk4NkVDOURCNzEzMjhE
RjgyMDAyQjJBRDcgLyogREZHR3JhcGguY3BwICovLAogCQkJCTg2RUM5REI4MTMyOERGODIwMDJC
MkFENyAvKiBERkdHcmFwaC5oICovLAogCQkJCTBGMkZDQ0YyMThBNjAwNzAwMDFBMjdGOCAvKiBE
RkdHcmFwaFNhZmVwb2ludC5jcHAgKi8sCkBAIC03OTY1LDYgKzc5NjgsNyBAQAogCQkJCTBGRTA1
MDI5MUFBOTA5NTYwMEQzM0IzMyAvKiBTY29wZWRBcmd1bWVudHNUYWJsZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEZFMDUwMkIxQUE5MDk1NjAwRDMzQjMzIC8qIFNjb3BlT2Zmc2V0LmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRjI0RTU1MjE3RUUyNzQ5MDBBQkIyMTcgLyogU2NyYXRjaFJlZ2lzdGVy
QWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQk3MDc5MTQxRDFDNEFBODYwMDBCODJGRjcg
LyogREZHR2VuZXJhdG9yTG9jYWxEYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNUZEMDA2ODE4
OUFGRTlDMDA2MzMyMzEgLyogU2NyaXB0QXJndW1lbnRzLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
NTAzRkEyMTE4OEVGRjY4MDAxMTBGMTQgLyogU2NyaXB0QnJlYWtwb2ludC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTVGRDAwNkUxODlCMDBBQTAwNjMzMjMxIC8qIFNjcmlwdENhbGxGcmFtZS5oIGlu
IEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMv
R2VuZXJhdG9yUHJvdG90eXBlLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0dl
bmVyYXRvclByb3RvdHlwZS5qcwppbmRleCBhM2JiYzM1MzRhZTA1MmY0ZDZmYTI1YmRlNzAzYzkz
ZDNhNzk1ZTExLi40OWRkYmY5Yzg0NjkzMzA2NTg3MTFmMThlNzIxNDliYzk4MjJkYTM0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvR2VuZXJhdG9yUHJvdG90eXBl
LmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9HZW5lcmF0b3JQcm90b3R5
cGUuanMKQEAgLTU4LDcgKzU4LDcgQEAgZnVuY3Rpb24gZ2VuZXJhdG9yUmVzdW1lKGdlbmVyYXRv
ciwgc2VudFZhbHVlLCByZXN1bWVNb2RlKQogICAgIH0gZWxzZSB7CiAgICAgICAgIHRyeSB7CiAg
ICAgICAgICAgICBnZW5lcmF0b3IuQGdlbmVyYXRvclN0YXRlID0gRXhlY3V0aW5nOwotICAgICAg
ICAgICAgdmFsdWUgPSBnZW5lcmF0b3IuQGdlbmVyYXRvck5leHQuQGNhbGwoZ2VuZXJhdG9yLkBn
ZW5lcmF0b3JUaGlzLCBnZW5lcmF0b3IsIHN0YXRlLCBzZW50VmFsdWUsIHJlc3VtZU1vZGUpOwor
ICAgICAgICAgICAgdmFsdWUgPSBnZW5lcmF0b3IuQGdlbmVyYXRvck5leHQuQGNhbGwoZ2VuZXJh
dG9yLkBnZW5lcmF0b3JUaGlzLCBnZW5lcmF0b3IsIHN0YXRlLCBzZW50VmFsdWUsIHJlc3VtZU1v
ZGUsIGdlbmVyYXRvci5AZ2VuZXJhdG9yRnJhbWUpOwogICAgICAgICAgICAgaWYgKGdlbmVyYXRv
ci5AZ2VuZXJhdG9yU3RhdGUgPT09IEV4ZWN1dGluZykgewogICAgICAgICAgICAgICAgIGdlbmVy
YXRvci5AZ2VuZXJhdG9yU3RhdGUgPSBDb21wbGV0ZWQ7CiAgICAgICAgICAgICAgICAgZG9uZSA9
IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVCYXNpY0Jsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZUJhc2ljQmxvY2suY3BwCmluZGV4IDdmMTdjMGVmMTBiNDMzZmFjOGY1OGNiM2I5Y2E1ZDRkMDE1
YmJhMDguLjVhYTE4ZTRjYWY3YTU3NWRkNjQ1ZDZmNmVkNzk3MjhhZjczYmQyNmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2su
Y3BwCkBAIC01OCw3ICs1OCw3IEBAIHN0YXRpYyBib29sIGlzQnJhbmNoKE9wY29kZUlEIG9wY29k
ZUlEKQogICAgIGNhc2Ugb3Bfc3dpdGNoX2ltbToKICAgICBjYXNlIG9wX3N3aXRjaF9jaGFyOgog
ICAgIGNhc2Ugb3Bfc3dpdGNoX3N0cmluZzoKLSAgICBjYXNlIG9wX3NhdmU6CisgICAgY2FzZSBv
cF9zYXZlX2hpbnQ6CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGRlZmF1bHQ6CiAgICAgICAg
IHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZUxpc3QuanNvbiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZUxpc3QuanNvbgppbmRleCAwNTNiOGRjOWI4NjRmMWI4NmI0Y2VjN2FhNjAxZjdjZTJmMDNm
MmU0Li4wOGFhYzEyMjU5YzY4ZGEwZTFhYmM5MDkwYmU1NGM5NTVmYjMzMDA1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24KKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCkBAIC0xNiw2
ICsxNiw3IEBACiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXdfYXJyYXlfd2l0aF9zaXpl
IiwgImxlbmd0aCIgOiA0IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXdfYXJyYXlf
YnVmZmVyIiwgImxlbmd0aCIgOiA1IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXdf
cmVnZXhwIiwgImxlbmd0aCIgOiAzIH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXdf
Z2VuZXJhdG9yX2ZyYW1lIiwgImxlbmd0aCIgOiAzIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6
ICJvcF9tb3YiLCAibGVuZ3RoIiA6IDMgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX25v
dCIsICJsZW5ndGgiIDogMyB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfZXEiLCAibGVu
Z3RoIiA6IDQgfSwKQEAgLTEzNCw3ICsxMzUsMTEgQEAKICAgICAgICAgICAgIHsgIm5hbWUiIDog
Im9wX2NvcHlfcmVzdCIsICJsZW5ndGgiOiA0IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJv
cF9nZXRfcmVzdF9sZW5ndGgiLCAibGVuZ3RoIjogMyB9LAogICAgICAgICAgICAgeyAibmFtZSIg
OiAib3Bfc2F2ZSIsICJsZW5ndGgiIDogNCB9LAotICAgICAgICAgICAgeyAibmFtZSIgOiAib3Bf
cmVzdW1lIiwgImxlbmd0aCIgOiAzIH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9zYXZl
X2hpbnQiLCAibGVuZ3RoIiA6IDQgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX3Jlc3Vt
ZV9oaW50IiwgImxlbmd0aCIgOiA0IH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9yZXN1
bWVfZnJvbV9nZW5lcmF0b3JfZnJhbWUiLCAibGVuZ3RoIiA6IDQgfSwKKyAgICAgICAgICAgIHsg
Im5hbWUiIDogIm9wX2NsZWFyX2dlbmVyYXRvcl9mcmFtZSIsICJsZW5ndGgiIDogMiB9LAorICAg
ICAgICAgICAgeyAibmFtZSIgOiAib3Bfbm9wIiwgImxlbmd0aCIgOiAxIH0sCiAgICAgICAgICAg
ICB7ICJuYW1lIiA6ICJvcF93YXRjaGRvZyIsICJsZW5ndGgiIDogMSB9CiAgICAgICAgIF0KICAg
ICB9LApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
VXNlRGVmLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYu
aAppbmRleCA4MDExMTRjMzcyYTI3N2Y2ZTE3NzA5YjkwYmUyMDdjOGY5OWJlODJkLi5kYWVmODFj
MjY5YmI1NDE1NGVhNmI2ZGM4MzhhZmM2OWNlZTcyYzk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaApAQCAtNTUsNiArNTUsOCBAQCB2b2lk
IGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoCiAgICAgY2FzZSBvcF9jcmVhdGVfb3V0X29m
X2JhbmRfYXJndW1lbnRzOgogICAgIGNhc2Ugb3BfZ2V0X3Jlc3RfbGVuZ3RoOgogICAgIGNhc2Ug
b3Bfd2F0Y2hkb2c6CisgICAgY2FzZSBvcF9uZXdfZ2VuZXJhdG9yX2ZyYW1lOgorICAgIGNhc2Ug
b3Bfbm9wOgogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBvcF9hc3NlcnQ6CiAgICAgY2FzZSBv
cF9nZXRfc2NvcGU6CkBAIC03Miw3ICs3NCw4IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29k
ZU9mZnNldCgKICAgICBjYXNlIG9wX2puZXFfbnVsbDoKICAgICBjYXNlIG9wX2RlYzoKICAgICBj
YXNlIG9wX2luYzoKLSAgICBjYXNlIG9wX3Jlc3VtZTogeworICAgIGNhc2Ugb3BfcmVzdW1lX2hp
bnQ6CisgICAgY2FzZSBvcF9jbGVhcl9nZW5lcmF0b3JfZnJhbWU6IHsKICAgICAgICAgQVNTRVJU
KG9wY29kZUxlbmd0aHNbb3Bjb2RlSURdID49IDEpOwogICAgICAgICBmdW5jdG9yKGNvZGVCbG9j
aywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBpbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOwogICAg
ICAgICByZXR1cm47CkBAIC0xNjUsNyArMTY4LDggQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVj
b2RlT2Zmc2V0KAogICAgIGNhc2Ugb3BfbmV3X2dlbmVyYXRvcl9mdW5jOgogICAgIGNhc2Ugb3Bf
Z2V0X3BhcmVudF9zY29wZToKICAgICBjYXNlIG9wX2NyZWF0ZV9zY29wZWRfYXJndW1lbnRzOgot
ICAgIGNhc2Ugb3BfZ2V0X2Zyb21fYXJndW1lbnRzOiB7CisgICAgY2FzZSBvcF9nZXRfZnJvbV9h
cmd1bWVudHM6CisgICAgY2FzZSBvcF9yZXN1bWVfZnJvbV9nZW5lcmF0b3JfZnJhbWU6IHsKICAg
ICAgICAgQVNTRVJUKG9wY29kZUxlbmd0aHNbb3Bjb2RlSURdID49IDIpOwogICAgICAgICBmdW5j
dG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBpbnN0cnVjdGlvblsyXS51Lm9w
ZXJhbmQpOwogICAgICAgICByZXR1cm47CkBAIC0yNTAsNyArMjU0LDcgQEAgdm9pZCBjb21wdXRl
VXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAogICAgICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGlu
c3RydWN0aW9uLCBvcGNvZGVJRCwgbGFzdEFyZyArIGkpOwogICAgICAgICByZXR1cm47CiAgICAg
fQotICAgIGNhc2Ugb3Bfc2F2ZTogeworICAgIGNhc2Ugb3Bfc2F2ZV9oaW50OiB7CiAgICAgICAg
IGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzFd
LnUub3BlcmFuZCk7CiAgICAgICAgIHVuc2lnbmVkIG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldCA9
IGJ5dGVjb2RlT2Zmc2V0ICsgaW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kOwogICAgICAgICBCeXRl
Y29kZUJhc2ljQmxvY2sqIG1lcmdlUG9pbnRCbG9jayA9IG51bGxwdHI7CkBAIC0yNjYsNiArMjcw
LDE1IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCgKICAgICAgICAgfSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CisgICAgY2FzZSBvcF9zYXZlOiB7CisgICAgICAgIGZ1bmN0
b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzFdLnUub3Bl
cmFuZCk7CisgICAgICAgIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9IGluc3RydWN0
aW9uWzJdLnUudW5zaWduZWRWYWx1ZTsKKyAgICAgICAgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2
ZW5lc3MgPSBjb2RlQmxvY2stPmxpdmVDYWxsZWVMb2NhbHNBdFlpZWxkKGxpdmVDYWxsZWVMb2Nh
bHNJbmRleCk7CisgICAgICAgIGxpdmVuZXNzLmZvckVhY2hTZXRCaXQoWyZdKHVuc2lnbmVkIGxv
Y2FsKSB7CisgICAgICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29k
ZUlELCB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChsb2NhbCkub2Zmc2V0KCkpOworICAgICAgICB9
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KICAgICBkZWZhdWx0OgogICAgICAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBicmVhazsKQEAgLTI4OSw2ICszMDIsNyBA
QCB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvYwogICAgIGNhc2Ugb3BfdGhyb3c6CiAgICAgY2FzZSBv
cF90aHJvd19zdGF0aWNfZXJyb3I6CiAgICAgY2FzZSBvcF9zYXZlOgorICAgIGNhc2Ugb3Bfc2F2
ZV9oaW50OgogICAgIGNhc2Ugb3BfYXNzZXJ0OgogICAgIGNhc2Ugb3BfZGVidWc6CiAgICAgY2Fz
ZSBvcF9yZXQ6CkBAIC0zMjMsNiArMzM3LDggQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2Rl
T2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2MKICAg
ICBjYXNlIG9wX3Byb2ZpbGVfY29udHJvbF9mbG93OgogICAgIGNhc2Ugb3BfcHV0X3RvX2FyZ3Vt
ZW50czoKICAgICBjYXNlIG9wX3dhdGNoZG9nOgorICAgIGNhc2Ugb3BfY2xlYXJfZ2VuZXJhdG9y
X2ZyYW1lOgorICAgIGNhc2Ugb3Bfbm9wOgogI2RlZmluZSBMTElOVF9IRUxQRVJfT1BDT0RFUyhv
cGNvZGUsIGxlbmd0aCkgY2FzZSBvcGNvZGU6CiAgICAgICAgIEZPUl9FQUNIX0xMSU5UX09QQ09E
RV9FWFRFTlNJT04oTExJTlRfSEVMUEVSX09QQ09ERVMpOwogI3VuZGVmIExMSU5UX0hFTFBFUl9P
UENPREVTCkBAIC00MTUsNyArNDMxLDkgQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zm
c2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2MKICAgICBj
YXNlIG9wX2RlbF9ieV92YWw6CiAgICAgY2FzZSBvcF91bnNpZ25lZDoKICAgICBjYXNlIG9wX2dl
dF9mcm9tX2FyZ3VtZW50czogCi0gICAgY2FzZSBvcF9nZXRfcmVzdF9sZW5ndGg6IHsKKyAgICBj
YXNlIG9wX2dldF9yZXN0X2xlbmd0aDoKKyAgICBjYXNlIG9wX25ld19nZW5lcmF0b3JfZnJhbWU6
CisgICAgY2FzZSBvcF9yZXN1bWVfZnJvbV9nZW5lcmF0b3JfZnJhbWU6IHsKICAgICAgICAgQVNT
RVJUKG9wY29kZUxlbmd0aHNbb3Bjb2RlSURdID4gMSk7CiAgICAgICAgIGZ1bmN0b3IoY29kZUJs
b2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CiAg
ICAgICAgIHJldHVybjsKQEAgLTQzMSw3ICs0NDksNyBAQCB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0
ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxv
YwogICAgICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwg
dmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaSkub2Zmc2V0KCkpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQotICAgIGNhc2Ugb3BfcmVzdW1lOiB7CisgICAgY2FzZSBvcF9yZXN1bWVfaGludDogewog
ICAgICAgICBSRUxFQVNFX0FTU0VSVChibG9jay0+c3VjY2Vzc29ycygpLnNpemUoKSA9PSAxKTsK
ICAgICAgICAgYmxvY2stPnN1Y2Nlc3NvcnMoKVswXS0+aW4oKS5mb3JFYWNoU2V0Qml0KFsmXSh1
bnNpZ25lZCBsb2NhbCkgewogICAgICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0
aW9uLCBvcGNvZGVJRCwgdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwobG9jYWwpLm9mZnNldCgpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKaW5kZXggNTkw
NWU5MTgzYzhmMTI2NjRlMmJhM2RkMjlhNWM0NjU2NzY4ZGMwMy4uZGEzZTU4ZDAxNmJkYmUwZmY2
NzcxYjBjMmZiYWI5MTgyNGI2NTZlMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5jcHAKQEAgLTE1NTYsMjcgKzE1NTYsNjMgQEAgdm9pZCBDb2RlQmxvY2s6
OmR1bXBCeXRlY29kZSgKICAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAlZCIsIGRlYnVnSG9v
a05hbWUoZGVidWdIb29rSUQpLCBoYXNCcmVha3BvaW50RmxhZyk7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQotICAgICAgICBjYXNlIG9wX3NhdmU6IHsKLSAgICAgICAgICAgIGludCBn
ZW5lcmF0b3IgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgY2FzZSBvcF9zYXZlX2hpbnQ6
IHsKKyAgICAgICAgICAgIGludCBmcmFtZSA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAg
ICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gKCsraXQpLT51LnVuc2lnbmVkVmFs
dWU7CiAgICAgICAgICAgICBpbnQgb2Zmc2V0ID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAg
ICAgICBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlbmVzcyA9IG1fcmFyZURhdGEtPm1fbGl2ZUNh
bGxlZUxvY2Fsc0F0WWllbGRbbGl2ZUNhbGxlZUxvY2Fsc0luZGV4XTsKICAgICAgICAgICAgIHBy
aW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgInNhdmUiKTsKLSAgICAg
ICAgICAgIG91dC5wcmludGYoIiVzLCAiLCByZWdpc3Rlck5hbWUoZ2VuZXJhdG9yKS5kYXRhKCkp
OworICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICIsIHJlZ2lzdGVyTmFtZShmcmFtZSkuZGF0
YSgpKTsKICAgICAgICAgICAgIGxpdmVuZXNzLmR1bXAob3V0KTsKICAgICAgICAgICAgIG91dC5w
cmludGYoIihAbGl2ZSUxdSksICVkKC0+JWQpIiwgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4LCBvZmZz
ZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0g
ICAgICAgIGNhc2Ugb3BfcmVzdW1lOiB7Ci0gICAgICAgICAgICBpbnQgZ2VuZXJhdG9yID0gKCsr
aXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIGNhc2Ugb3Bfc2F2ZTogeworICAgICAgICAgICAgaW50
IGZyYW1lID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICB1bnNpZ25lZCBsaXZlQ2Fs
bGVlTG9jYWxzSW5kZXggPSAoKytpdCktPnUudW5zaWduZWRWYWx1ZTsKKyAgICAgICAgICAgICsr
aXQ7IC8vIGRpc2NhcmQgb2Zmc2V0LgogICAgICAgICAgICAgY29uc3QgRmFzdEJpdFZlY3RvciYg
bGl2ZW5lc3MgPSBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkW2xpdmVDYWxs
ZWVMb2NhbHNJbmRleF07Ci0gICAgICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBleGVj
LCBsb2NhdGlvbiwgaXQsICJyZXN1bWUiKTsKLSAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAi
LCByZWdpc3Rlck5hbWUoZ2VuZXJhdG9yKS5kYXRhKCkpOworICAgICAgICAgICAgcHJpbnRMb2Nh
dGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAic2F2ZSIpOworICAgICAgICAgICAg
b3V0LnByaW50ZigiJXMsICIsIHJlZ2lzdGVyTmFtZShmcmFtZSkuZGF0YSgpKTsKICAgICAgICAg
ICAgIGxpdmVuZXNzLmR1bXAob3V0KTsKICAgICAgICAgICAgIG91dC5wcmludGYoIihAbGl2ZSUx
dSkiLCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KKyAgICAgICAgY2FzZSBvcF9yZXN1bWVfaGludDogeworICAgICAgICAgICAgaW50IGZyYW1l
ID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9j
YWxzSW5kZXggPSAoKytpdCktPnUudW5zaWduZWRWYWx1ZTsKKyAgICAgICAgICAgIHVuc2lnbmVk
IG1heExpdmVDYWxsZWVzID0gKCsraXQpLT51LnVuc2lnbmVkVmFsdWU7CisgICAgICAgICAgICBj
b25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlbmVzcyA9IG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxv
Y2Fsc0F0WWllbGRbbGl2ZUNhbGxlZUxvY2Fsc0luZGV4XTsKKyAgICAgICAgICAgIHByaW50TG9j
YXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgInJlc3VtZSIpOworICAgICAgICAg
ICAgb3V0LnByaW50ZigiJXMsICIsIHJlZ2lzdGVyTmFtZShmcmFtZSkuZGF0YSgpKTsKKyAgICAg
ICAgICAgIGxpdmVuZXNzLmR1bXAob3V0KTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIihAbGl2
ZSUxdSksICV1IiwgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4LCBtYXhMaXZlQ2FsbGVlcyk7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIG9wX3Jlc3VtZV9mcm9tX2dl
bmVyYXRvcl9mcmFtZTogeworICAgICAgICAgICAgaW50IGRzdCA9ICgrK2l0KS0+dS5vcGVyYW5k
OworICAgICAgICAgICAgaW50IGZyYW1lID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAg
ICB1bnNpZ25lZCBpbmRleCA9ICgrK2l0KS0+dS51bnNpZ25lZFZhbHVlOworICAgICAgICAgICAg
cHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAicmVzdW1lX2Zyb21f
Z2VuZXJhdG9yX2ZyYW1lIik7CisgICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMsICV1Iiwg
cmVnaXN0ZXJOYW1lKGRzdCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZnJhbWUpLmRhdGEoKSwgaW5k
ZXgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9jbGVh
cl9nZW5lcmF0b3JfZnJhbWU6IHsKKyAgICAgICAgICAgIGludCBmcmFtZSA9ICgrK2l0KS0+dS5v
cGVyYW5kOworICAgICAgICAgICAgcHJpbnRMb2NhdGlvbk9wQW5kUmVnaXN0ZXJPcGVyYW5kKG91
dCwgZXhlYywgbG9jYXRpb24sIGl0LCAiY2xlYXJfZ2VuZXJhdG9yX2ZyYW1lIiwgZnJhbWUpOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9uZXdfZ2VuZXJh
dG9yX2ZyYW1lOiB7CisgICAgICAgICAgICBpbnQgZHN0ID0gKCsraXQpLT51Lm9wZXJhbmQ7Cisg
ICAgICAgICAgICB1bnNpZ25lZCBnZW5lcmF0b3JMb2NhbHNTaXplID0gKCsraXQpLT51LnVuc2ln
bmVkVmFsdWU7CisgICAgICAgICAgICBwcmludExvY2F0aW9uT3BBbmRSZWdpc3Rlck9wZXJhbmQo
b3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJuZXdfZ2VuZXJhdG9yX2ZyYW1lIiwgZHN0KTsKKyAg
ICAgICAgICAgIG91dC5wcmludGYoIiAldSIsIGdlbmVyYXRvckxvY2Fsc1NpemUpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9ub3A6IHsKKyAgICAgICAg
ICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgIm5vcCIpOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9hc3NlcnQ6IHsK
ICAgICAgICAgICAgIGludCBjb25kaXRpb24gPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAg
ICAgIGludCBsaW5lID0gKCsraXQpLT51Lm9wZXJhbmQ7CkBAIC0xODQ3LDYgKzE4ODMsMTIgQEAg
dm9pZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgQ29weVBhcnNlZEJsb2NrVGFn
LCBDb2RlQmxvY2smIG90aGVyKQogICAgIHNldE51bVBhcmFtZXRlcnModW5saW5rZWRDb2RlQmxv
Y2stPm51bVBhcmFtZXRlcnMoKSk7CiB9CiAKK3N0cnVjdCBHZW5lcmF0b3JQb2ludHMgeworICAg
IHNpemVfdCBzYXZlUG9pbnQ7CisgICAgc2l6ZV90IG1lcmdlUG9pbnQ7CisgICAgc2l6ZV90IHJl
c3VtZVBvaW50OworfTsKKwogdm9pZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwg
U2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmtlZENvZGVCbG9jayogdW5s
aW5rZWRDb2RlQmxvY2ssCiAgICAgSlNTY29wZSogc2NvcGUpCiB7CkBAIC0xOTgwLDkgKzIwMjIs
MTAgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0
YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICBIYXNoU2V0PEpTTW9kdWxlRW52aXJv
bm1lbnQqPiBzdHJvbmdseVJlZmVyZW5jZWRNb2R1bGVFbnZpcm9ubWVudHM7CiAKICAgICAvLyBC
b29ra2VlcCB0aGUgbWVyZ2UgcG9pbnQgYnl0ZWNvZGUgb2Zmc2V0cy4KLSAgICBWZWN0b3I8c2l6
ZV90PiBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXRzOworICAgIFZlY3RvcjxHZW5lcmF0b3JQb2lu
dHM+IGdlbmVyYXRvclBvaW50c1ZlY3RvcjsKIAogICAgIFJlZkNvdW50ZWRBcnJheTxJbnN0cnVj
dGlvbj4gaW5zdHJ1Y3Rpb25zKGluc3RydWN0aW9uQ291bnQpOworICAgIHVuc2lnbmVkIG5ld0dl
bmVyYXRvckZyYW1lSW5zdHJ1Y3Rpb25PZmZzZXQgPSAwOwogCiAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgIWluc3RydWN0aW9uUmVhZGVyLmF0RW5kKCk7ICkgewogICAgICAgICBjb25zdCBVbmxp
bmtlZEluc3RydWN0aW9uKiBwYyA9IGluc3RydWN0aW9uUmVhZGVyLm5leHQoKTsKQEAgLTIyNzAs
MTIgKzIzMTMsMjYgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2Ny
aXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAKLSAgICAgICAgY2FzZSBvcF9zYXZlOiB7CisgICAgICAgIGNhc2Ugb3Bf
c2F2ZV9oaW50OiB7CiAgICAgICAgICAgICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXgg
PSBwY1syXS51LmluZGV4OwogICAgICAgICAgICAgaW50IG9mZnNldCA9IHBjWzNdLnUub3BlcmFu
ZDsKLSAgICAgICAgICAgIGlmIChsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPj0gbWVyZ2VQb2ludEJ5
dGVjb2RlT2Zmc2V0cy5zaXplKCkpCi0gICAgICAgICAgICAgICAgbWVyZ2VQb2ludEJ5dGVjb2Rl
T2Zmc2V0cy5yZXNpemUobGl2ZUNhbGxlZUxvY2Fsc0luZGV4ICsgMSk7Ci0gICAgICAgICAgICBt
ZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXRzW2xpdmVDYWxsZWVMb2NhbHNJbmRleF0gPSBpICsgb2Zm
c2V0OworICAgICAgICAgICAgaWYgKGxpdmVDYWxsZWVMb2NhbHNJbmRleCA+PSBnZW5lcmF0b3JQ
b2ludHNWZWN0b3Iuc2l6ZSgpKQorICAgICAgICAgICAgICAgIGdlbmVyYXRvclBvaW50c1ZlY3Rv
ci5yZXNpemUobGl2ZUNhbGxlZUxvY2Fsc0luZGV4ICsgMSk7CisgICAgICAgICAgICBnZW5lcmF0
b3JQb2ludHNWZWN0b3JbbGl2ZUNhbGxlZUxvY2Fsc0luZGV4XS5zYXZlUG9pbnQgPSBpOworICAg
ICAgICAgICAgZ2VuZXJhdG9yUG9pbnRzVmVjdG9yW2xpdmVDYWxsZWVMb2NhbHNJbmRleF0ubWVy
Z2VQb2ludCA9IGkgKyBvZmZzZXQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisg
ICAgICAgIGNhc2Ugb3BfcmVzdW1lX2hpbnQ6IHsKKyAgICAgICAgICAgIHVuc2lnbmVkIGxpdmVD
YWxsZWVMb2NhbHNJbmRleCA9IHBjWzJdLnUuaW5kZXg7CisgICAgICAgICAgICBpZiAobGl2ZUNh
bGxlZUxvY2Fsc0luZGV4ID49IGdlbmVyYXRvclBvaW50c1ZlY3Rvci5zaXplKCkpCisgICAgICAg
ICAgICAgICAgZ2VuZXJhdG9yUG9pbnRzVmVjdG9yLnJlc2l6ZShsaXZlQ2FsbGVlTG9jYWxzSW5k
ZXggKyAxKTsKKyAgICAgICAgICAgIGdlbmVyYXRvclBvaW50c1ZlY3RvcltsaXZlQ2FsbGVlTG9j
YWxzSW5kZXhdLnJlc3VtZVBvaW50ID0gaTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9
CisKKyAgICAgICAgY2FzZSBvcF9uZXdfZ2VuZXJhdG9yX2ZyYW1lOiB7CisgICAgICAgICAgICBu
ZXdHZW5lcmF0b3JGcmFtZUluc3RydWN0aW9uT2Zmc2V0ID0gaTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAKQEAgLTIyODUsMjUgKzIzNDIsNjQgQEAgdm9pZCBDb2RlQmxvY2s6OmZp
bmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBV
bmxpbmsKICAgICAgICAgaSArPSBvcExlbmd0aDsKICAgICB9CiAKLSAgICBpZiAodm0uY29udHJv
bEZsb3dQcm9maWxlcigpKQotICAgICAgICBpbnNlcnRCYXNpY0Jsb2NrQm91bmRhcmllc0ZvckNv
bnRyb2xGbG93UHJvZmlsZXIoaW5zdHJ1Y3Rpb25zKTsKLQogICAgIG1faW5zdHJ1Y3Rpb25zID0g
V1RGTW92ZShpbnN0cnVjdGlvbnMpOwogCi0gICAgLy8gUGVyZm9ybSBieXRlY29kZSBsaXZlbmVz
cyBhbmFseXNpcyB0byBkZXRlcm1pbmUgd2hpY2ggbG9jYWxzIGFyZSBsaXZlIGFuZCBzaG91bGQg
YmUgcmVzdW1lZCB3aGVuIGV4ZWN1dGluZyBvcF9yZXN1bWUuCisgICAgLy8gUGVyZm9ybSBieXRl
Y29kZSBsaXZlbmVzcyBhbmFseXNpcyB0byBkZXRlcm1pbmUgd2hpY2ggbG9jYWxzIGFyZSBsaXZl
IGFuZCBzaG91bGQgYmUgcmVzdW1lZCB3aGVuIGV4ZWN1dGluZyBvcF9yZXN1bWVfaGludC4KICAg
ICBpZiAodW5saW5rZWRDb2RlQmxvY2stPnBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6
R2VuZXJhdG9yQm9keU1vZGUpIHsKLSAgICAgICAgaWYgKHNpemVfdCBjb3VudCA9IG1lcmdlUG9p
bnRCeXRlY29kZU9mZnNldHMuc2l6ZSgpKSB7CisgICAgICAgIHVuc2lnbmVkIG1heEdlbmVyYXRv
ckxvY2Fsc1NpemUgPSAwOworICAgICAgICBpZiAoc2l6ZV90IGNvdW50ID0gZ2VuZXJhdG9yUG9p
bnRzVmVjdG9yLnNpemUoKSkgewogICAgICAgICAgICAgY3JlYXRlUmFyZURhdGFJZk5lY2Vzc2Fy
eSgpOwotICAgICAgICAgICAgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzIGxpdmVuZXNzKHRoaXMp
OwogICAgICAgICAgICAgbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZC5ncm93
KGNvdW50KTsKLSAgICAgICAgICAgIHNpemVfdCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSAwOwot
ICAgICAgICAgICAgZm9yIChzaXplX3QgYnl0ZWNvZGVPZmZzZXQgOiBtZXJnZVBvaW50Qnl0ZWNv
ZGVPZmZzZXRzKSB7Ci0gICAgICAgICAgICAgICAgbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9j
YWxzQXRZaWVsZFtsaXZlQ2FsbGVlTG9jYWxzSW5kZXhdID0gbGl2ZW5lc3MuZ2V0TGl2ZW5lc3NJ
bmZvQXRCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCk7Ci0gICAgICAgICAgICAgICAgKyts
aXZlQ2FsbGVlTG9jYWxzSW5kZXg7CisKKyAgICAgICAgICAgIC8vIEZpcnN0LCBwZXJmb3JtIGJ5
dGVjb2RlIHVzZS1kZWYgYW5hbHlzaXMgb250byB0aGUgY3VycmVudCBieXRlY29kZSBzdHJlYW0g
YW5kIGNhbGN1bGF0ZSBsaXZlIGxvY2FscyBhdCB0aGUgbWVyZ2UgcG9pbnRzLgorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcyBsaXZlbmVzcyh0
aGlzKTsKKyAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXgg
PSAwOyBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPCBnZW5lcmF0b3JQb2ludHNWZWN0b3Iuc2l6ZSgp
OyArK2xpdmVDYWxsZWVMb2NhbHNJbmRleCkgeworICAgICAgICAgICAgICAgICAgICBjb25zdCBH
ZW5lcmF0b3JQb2ludHMmIHBvaW50cyA9IGdlbmVyYXRvclBvaW50c1ZlY3RvcltsaXZlQ2FsbGVl
TG9jYWxzSW5kZXhdOworICAgICAgICAgICAgICAgICAgICBzaXplX3QgbWVyZ2VQb2ludEJ5dGVj
b2RlT2Zmc2V0ID0gcG9pbnRzLm1lcmdlUG9pbnQ7CisgICAgICAgICAgICAgICAgICAgIEZhc3RC
aXRWZWN0b3IgbGl2ZW5lc3NWZWN0b3IgPSBsaXZlbmVzcy5nZXRMaXZlbmVzc0luZm9BdEJ5dGVj
b2RlT2Zmc2V0KG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldCk7CisgICAgICAgICAgICAgICAgICAg
IG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGRbbGl2ZUNhbGxlZUxvY2Fsc0lu
ZGV4XSA9IGxpdmVuZXNzVmVjdG9yOworICAgICAgICAgICAgICAgICAgICBtYXhHZW5lcmF0b3JM
b2NhbHNTaXplID0gc3RkOjptYXg8dW5zaWduZWQ+KG1heEdlbmVyYXRvckxvY2Fsc1NpemUsIGxp
dmVuZXNzVmVjdG9yLmJpdENvdW50KCkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgLy8gVGhlbiwgcmV3cml0ZSBieXRlY29kZXMgYmFzZWQgb24gdGhl
IGNhbGN1bGF0ZWQgbGl2ZW5lc3MuCisgICAgICAgICAgICAvLyBEbyBub3QgcmV3cml0ZSBieXRl
Y29kZXMgd2hpbGUgY29udGludWluZyBsaXZlbmVzcyBhbmFseXNpcy4KKyAgICAgICAgICAgIGZv
ciAoc2l6ZV90IGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9IDA7IGxpdmVDYWxsZWVMb2NhbHNJbmRl
eCA8IGdlbmVyYXRvclBvaW50c1ZlY3Rvci5zaXplKCk7ICsrbGl2ZUNhbGxlZUxvY2Fsc0luZGV4
KSB7CisgICAgICAgICAgICAgICAgY29uc3QgR2VuZXJhdG9yUG9pbnRzJiBwb2ludHMgPSBnZW5l
cmF0b3JQb2ludHNWZWN0b3JbbGl2ZUNhbGxlZUxvY2Fsc0luZGV4XTsKKyAgICAgICAgICAgICAg
ICBzaXplX3Qgc2F2ZVBvaW50Qnl0ZWNvZGVPZmZzZXQgPSBwb2ludHMuc2F2ZVBvaW50OworICAg
ICAgICAgICAgICAgIHNpemVfdCByZXN1bWVQb2ludEJ5dGVjb2RlT2Zmc2V0ID0gcG9pbnRzLnJl
c3VtZVBvaW50OworCisgICAgICAgICAgICAgICAgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZW5l
c3NWZWN0b3IgPSBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkW2xpdmVDYWxs
ZWVMb2NhbHNJbmRleF07CisKKyAgICAgICAgICAgICAgICAvLyBQYXRjaCBvcF9yZXN1bWVfaGlu
dCB3aXRoIHJlc3VtZV9mcm9tX2dlbmVyYXRvcl9mcmFtZSBvcGVyYXRpb25zLgorICAgICAgICAg
ICAgICAgIGludCBnZW5lcmF0b3JMb2NhbEluZGV4ID0gbV9pbnN0cnVjdGlvbnNbcmVzdW1lUG9p
bnRCeXRlY29kZU9mZnNldCArIDFdLnUub3BlcmFuZDsKKyAgICAgICAgICAgICAgICBpZiAoIWxp
dmVuZXNzVmVjdG9yLmJpdENvdW50KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCA0OyArK2kpCisgICAgICAgICAgICAgICAgICAgICAgICBtX2luc3RydWN0
aW9uc1tyZXN1bWVQb2ludEJ5dGVjb2RlT2Zmc2V0ICsgaV0gPSB2bS5pbnRlcnByZXRlci0+Z2V0
T3Bjb2RlKG9wX25vcCk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICAgICAgc2l6ZV90IGkgPSAwOworICAgICAgICAgICAgICAgICAgICBsaXZlbmVzc1ZlY3Rvci5m
b3JFYWNoU2V0Qml0KFsmXSh1bnNpZ25lZCBsb2NhbCkgeworICAgICAgICAgICAgICAgICAgICAg
ICAgc2l6ZV90IGluZGV4ID0gaSsrOworICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG9m
ZnNldCA9IHJlc3VtZVBvaW50Qnl0ZWNvZGVPZmZzZXQgKyBpbmRleCAqIDQ7CisgICAgICAgICAg
ICAgICAgICAgICAgICBtX2luc3RydWN0aW9uc1tvZmZzZXRdID0gdm0uaW50ZXJwcmV0ZXItPmdl
dE9wY29kZShvcF9yZXN1bWVfZnJvbV9nZW5lcmF0b3JfZnJhbWUpOworICAgICAgICAgICAgICAg
ICAgICAgICAgbV9pbnN0cnVjdGlvbnNbb2Zmc2V0ICsgMV0udS5vcGVyYW5kID0gdmlydHVhbFJl
Z2lzdGVyRm9yTG9jYWwobG9jYWwpLm9mZnNldCgpOworICAgICAgICAgICAgICAgICAgICAgICAg
bV9pbnN0cnVjdGlvbnNbb2Zmc2V0ICsgMl0udS5vcGVyYW5kID0gZ2VuZXJhdG9yTG9jYWxJbmRl
eDsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1faW5zdHJ1Y3Rpb25zW29mZnNldCArIDNdLnUu
dW5zaWduZWRWYWx1ZSA9IGluZGV4OworICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvLyBQYXRjaCBvcF9zYXZlX2hpbnQgd2l0aCBv
cF9zYXZlLgorICAgICAgICAgICAgICAgIG1faW5zdHJ1Y3Rpb25zW3NhdmVQb2ludEJ5dGVjb2Rl
T2Zmc2V0XSA9IHZtLmludGVycHJldGVyLT5nZXRPcGNvZGUob3Bfc2F2ZSk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KKyAgICAgICAgLy8gRmlsbCBvcF9uZXdfZ2VuZXJhdG9yX2ZyYW1lJ3Mg
c2l6ZS4KKyAgICAgICAgbV9pbnN0cnVjdGlvbnNbbmV3R2VuZXJhdG9yRnJhbWVJbnN0cnVjdGlv
bk9mZnNldCArIDJdLnUudW5zaWduZWRWYWx1ZSA9IG1heEdlbmVyYXRvckxvY2Fsc1NpemU7CiAg
ICAgfQogCisgICAgaWYgKHZtLmNvbnRyb2xGbG93UHJvZmlsZXIoKSkKKyAgICAgICAgaW5zZXJ0
QmFzaWNCbG9ja0JvdW5kYXJpZXNGb3JDb250cm9sRmxvd1Byb2ZpbGVyKG1faW5zdHJ1Y3Rpb25z
KTsKKwogICAgIC8vIFNldCBvcHRpbWl6YXRpb24gdGhyZXNob2xkcyBvbmx5IGFmdGVyIG1faW5z
dHJ1Y3Rpb25zIGlzIGluaXRpYWxpemVkLCBzaW5jZSB0aGVzZQogICAgIC8vIHJlbHkgb24gdGhl
IGluc3RydWN0aW9uIGNvdW50IChhbmQgYXJlIGluIHRoZW9yeSBwZXJtaXR0ZWQgdG8gYWxzbyBp
bnNwZWN0IHRoZQogICAgIC8vIGluc3RydWN0aW9uIHN0cmVhbSB0byBtb3JlIGFjY3VyYXRlIGFz
c2VzcyB0aGUgY29zdCBvZiB0aWVyLXVwKS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5jcHAKaW5kZXggZTJjYjAwMDQ4Mzc5NGJh
OTJkNTEwZGNmNWZhOTk0ODg1YTIzZGMzZC4uMDg0YmFiYzI2M2E1NTA0ODg1YWMwOTUwZmI0YWIz
MTJlMWE1OWYzMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1By
ZWNpc2VKdW1wVGFyZ2V0cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1ByZWNpc2VKdW1wVGFyZ2V0cy5jcHAKQEAgLTU0LDcgKzU0LDkgQEAgc3RhdGljIHZvaWQgZ2V0
SnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgSW50ZXJw
cmV0ZXIqIGkKICAgICBjYXNlIG9wX2pubGVzc2VxOgogICAgIGNhc2Ugb3Bfam5ncmVhdGVyOgog
ICAgIGNhc2Ugb3Bfam5ncmVhdGVyZXE6Ci0gICAgY2FzZSBvcF9zYXZlOiAvLyBUaGUganVtcCBv
ZiBvcF9zYXZlIGlzIHB1cmVseSBmb3IgY2FsY3VsYXRpbmcgbGl2ZW5lc3MuCisgICAgLy8gVGhl
IGp1bXAgb2Ygb3Bfc2F2ZV9oaW50IGlzIHB1cmVseSBmb3IgY2FsY3VsYXRpbmcgbGl2ZW5lc3Mu
CisgICAgLy8gV2hpbGUgb3Bfc2F2ZV9oaW50IGhhcyBhIGp1bXAgZm9yIGxpdmVuZXNzIGFuYWx5
c2lzLCBvcF9zYXZlIGRvZXMgbm90IGhhdmUgYSBqdW1wLgorICAgIGNhc2Ugb3Bfc2F2ZV9oaW50
OgogICAgICAgICBvdXQuYXBwZW5kKGJ5dGVjb2RlT2Zmc2V0ICsgY3VycmVudFszXS51Lm9wZXJh
bmQpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIG9wX3N3aXRjaF9pbW06CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3Iu
Y3BwCmluZGV4IGQxNWUyMjQzNTI2NmZlMWFmZjNkNWY3OWExZGRhNzViOWJkYWYzZjMuLjBkYWVl
YzYzZjZjMjM3MGQ1NjQ4MzAxMGMzMmI1Y2NjYTUwNmM0MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBA
IC0yNTcsNyArMjU3LDcgQEAgUGFyc2VyRXJyb3IgQnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRl
KCkKICAgICAgICAgLy8gICAgZnVuY3Rpb24gKmdlbihhLCBiID0gaGVsbG8oKSkKICAgICAgICAg
Ly8gICAgewogICAgICAgICAvLyAgICAgICAgcmV0dXJuIHsKLSAgICAgICAgLy8gICAgICAgICAg
ICBAZ2VuZXJhdG9yTmV4dDogZnVuY3Rpb24gKEBnZW5lcmF0b3IsIEBnZW5lcmF0b3JTdGF0ZSwg
QGdlbmVyYXRvclZhbHVlLCBAZ2VuZXJhdG9yUmVzdW1lTW9kZSkKKyAgICAgICAgLy8gICAgICAg
ICAgICBAZ2VuZXJhdG9yTmV4dDogZnVuY3Rpb24gKEBnZW5lcmF0b3IsIEBnZW5lcmF0b3JTdGF0
ZSwgQGdlbmVyYXRvclZhbHVlLCBAZ2VuZXJhdG9yUmVzdW1lTW9kZSwgQGdlbmVyYXRvckZyYW1l
KQogICAgICAgICAvLyAgICAgICAgICAgIHsKICAgICAgICAgLy8gICAgICAgICAgICAgICAgYXJn
dW1lbnRzOyAgLy8gVGhpcyBgYXJndW1lbnRzYCBzaG91bGQgcmVmZXJlbmNlIHRvIHRoZSBnZW4n
cyBhcmd1bWVudHMuCiAgICAgICAgIC8vICAgICAgICAgICAgICAgIC4uLgpAQCAtNTM3LDYgKzUz
Nyw5IEBAIFBhcnNlckVycm9yIEJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZSgpCiAgICAgY2Fz
ZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckJvZHlNb2RlOiB7CiAgICAgICAgIC8vIHx0aGlz
fCBpcyBhbHJlYWR5IGZpbGxlZCBjb3JyZWN0bHkgYmVmb3JlIGhlcmUuCiAgICAgICAgIGVtaXRM
b2FkKG1fbmV3VGFyZ2V0UmVnaXN0ZXIsIGpzVW5kZWZpbmVkKCkpOworCisgICAgICAgIGVtaXRO
ZXdHZW5lcmF0b3JGcmFtZShnZW5lcmF0b3JGcmFtZVJlZ2lzdGVyKCkpOworICAgICAgICBlbWl0
UHV0QnlJZChnZW5lcmF0b3JSZWdpc3RlcigpLCBwcm9wZXJ0eU5hbWVzKCkuZ2VuZXJhdG9yRnJh
bWVQcml2YXRlTmFtZSwgZ2VuZXJhdG9yRnJhbWVSZWdpc3RlcigpKTsKICAgICAgICAgYnJlYWs7
CiAgICAgfQogCkBAIC0yNzQ0LDYgKzI3NDcsMTQgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXROZXdGdW5jdGlvbihSZWdpc3RlcklEKiBkc3QsIEZ1bmN0aW9uTWV0YWRhdGEK
ICAgICByZXR1cm4gZHN0OwogfQogCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dE5ld0dlbmVyYXRvckZyYW1lKFJlZ2lzdGVySUQqIGRzdCkKK3sKKyAgICBlbWl0T3Bjb2RlKG9w
X25ld19nZW5lcmF0b3JfZnJhbWUpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChkc3QtPmlu
ZGV4KCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsKKyAgICByZXR1cm4gZHN0Owor
fQorCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENhbGwoUmVnaXN0ZXJJRCog
ZHN0LCBSZWdpc3RlcklEKiBmdW5jLCBFeHBlY3RlZEZ1bmN0aW9uIGV4cGVjdGVkRnVuY3Rpb24s
IENhbGxBcmd1bWVudHMmIGNhbGxBcmd1bWVudHMsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZv
dCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9u
JiBkaXZvdEVuZCkKIHsKICAgICByZXR1cm4gZW1pdENhbGwob3BfY2FsbCwgZHN0LCBmdW5jLCBl
eHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RF
bmQpOwpAQCAtNDE0NCw4ICs0MTU1LDggQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFlp
ZWxkUG9pbnQoUmVnaXN0ZXJJRCogYXJndW1lbnQpCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0U2F2ZShMYWJlbCogbWVyZ2VQb2ludCwgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4
KQogewogICAgIHNpemVfdCBiZWdpbiA9IGluc3RydWN0aW9ucygpLnNpemUoKTsKLSAgICBlbWl0
T3Bjb2RlKG9wX3NhdmUpOwotICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChtX2dlbmVyYXRvclJl
Z2lzdGVyLT5pbmRleCgpKTsKKyAgICBlbWl0T3Bjb2RlKG9wX3NhdmVfaGludCk7CisgICAgaW5z
dHJ1Y3Rpb25zKCkuYXBwZW5kKGdlbmVyYXRvckZyYW1lUmVnaXN0ZXIoKS0+aW5kZXgoKSk7CiAg
ICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGxpdmVDYWxsZWVMb2NhbHNJbmRleCk7CiAgICAgaW5z
dHJ1Y3Rpb25zKCkuYXBwZW5kKG1lcmdlUG9pbnQtPmJpbmQoYmVnaW4sIGluc3RydWN0aW9ucygp
LnNpemUoKSkpOwogfQpAQCAtNDE1Myw5ICs0MTY0LDMwIEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXRTYXZlKExhYmVsKiBtZXJnZVBvaW50LCB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxz
SW5kCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzdW1lKExhYmVsKiBtZXJnZVBvaW50
LCB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpCiB7CiAgICAgZW1pdEdlbmVyYXRvclN0
YXRlTGFiZWwoKTsKLSAgICBlbWl0T3Bjb2RlKG9wX3Jlc3VtZSk7Ci0gICAgaW5zdHJ1Y3Rpb25z
KCkuYXBwZW5kKG1fZ2VuZXJhdG9yUmVnaXN0ZXItPmluZGV4KCkpOworCisgICAgcmVjbGFpbUZy
ZWVSZWdpc3RlcnMoKTsKKyAgICB1bnNpZ25lZCBtYXhMaXZlTG9jYWxzID0gMDsKKyAgICBmb3Ig
KGNvbnN0IFJlZ2lzdGVySUQmIHJlZyA6IG1fY2FsbGVlTG9jYWxzKSB7CisgICAgICAgIGlmIChy
ZWcucmVmQ291bnQoKSkKKyAgICAgICAgICAgICsrbWF4TGl2ZUxvY2FsczsKKyAgICB9CisKKyAg
ICAvLyBUaGlzIG9wX3Jlc3VtZV9oaW50IHdpbGwgYmUgcmVwbGFjZWQgd2l0aCB0aGUgYWN0dWFs
IG9wcy4KKyAgICBzdGF0aWNfYXNzZXJ0KE9QQ09ERV9MRU5HVEgob3BfcmVzdW1lX2hpbnQpID09
IE9QQ09ERV9MRU5HVEgob3BfcmVzdW1lX2Zyb21fZ2VuZXJhdG9yX2ZyYW1lKSwgIlRoZSBsZW5n
dGggb2Ygb3BfcmVzdW1lX2hpbnQgc2hvdWxkIGVxYXVhbCB0byBvbmUgb2Ygb3BfcmVzdW1lX2Zy
b21fZ2VuZXJhdG9yX2ZyYW1lLiIpOworICAgIGlmIChtYXhMaXZlTG9jYWxzKQorICAgICAgICBt
YXhMaXZlTG9jYWxzIC09IDE7CisKKyAgICBlbWl0T3Bjb2RlKG9wX3Jlc3VtZV9oaW50KTsKKyAg
ICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZ2VuZXJhdG9yRnJhbWVSZWdpc3RlcigpLT5pbmRleCgp
KTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobGl2ZUNhbGxlZUxvY2Fsc0luZGV4KTsKKyAg
ICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobWF4TGl2ZUxvY2Fscyk7CisgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IG1heExpdmVMb2NhbHM7ICsraSkgeworICAgICAgICAvLyBOb3Agc3BhY2Uu
IExhdGVyIHdlIHdpbGwgZmlsbCB0aGlzIHdpdGggdGhlIGFjdHVhbCByZXN1bWUgb3BlcmF0aW9u
cy4KKyAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8IE9QQ09ERV9MRU5HVEgob3BfcmVz
dW1lX2Zyb21fZ2VuZXJhdG9yX2ZyYW1lKTsgKytqKQorICAgICAgICAgICAgZW1pdE9wY29kZShv
cF9ub3ApOworICAgIH0KKyAgICBlbWl0T3Bjb2RlKG9wX2NsZWFyX2dlbmVyYXRvcl9mcmFtZSk7
CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGdlbmVyYXRvckZyYW1lUmVnaXN0ZXIoKS0+aW5k
ZXgoKSk7CiAgICAgZW1pdExhYmVsKG1lcmdlUG9pbnQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5kZXgg
N2QwYzIwYjZmNTE2YTE3ZTg5M2YxYmJhMDgwM2MxMzMzZmZjOGQwZC4uM2QzMzQ3ODE1YWMzMGE4
MmU2MjZlM2UwNzgwODFiZTJiM2U5YmUzZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAtNTIyLDYgKzUyMiw3
IEBACiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdEZWZhdWx0Q29uc3RydWN0b3IoUmVnaXN0
ZXJJRCogZHN0LCBDb25zdHJ1Y3RvcktpbmQsIGNvbnN0IElkZW50aWZpZXImIG5hbWUpOwogICAg
ICAgICBSZWdpc3RlcklEKiBlbWl0TmV3QXJyb3dGdW5jdGlvbkV4cHJlc3Npb24oUmVnaXN0ZXJJ
RCosIEFycm93RnVuY0V4cHJOb2RlKik7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdSZWdF
eHAoUmVnaXN0ZXJJRCogZHN0LCBSZWdFeHAqKTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdE5l
d0dlbmVyYXRvckZyYW1lKFJlZ2lzdGVySUQqIGRzdCk7CiAKICAgICAgICAgUmVnaXN0ZXJJRCog
ZW1pdE1vdmVMaW5rVGltZUNvbnN0YW50KFJlZ2lzdGVySUQqIGRzdCwgTGlua1RpbWVDb25zdGFu
dCk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRNb3ZlRW1wdHlWYWx1ZShSZWdpc3RlcklEKiBk
c3QpOwpAQCAtNjg0LDYgKzY4NSw3IEBACiAgICAgICAgIFJlZ2lzdGVySUQqIGdlbmVyYXRvclN0
YXRlUmVnaXN0ZXIoKSB7IHJldHVybiAmbV9wYXJhbWV0ZXJzWzJdOyB9CiAgICAgICAgIFJlZ2lz
dGVySUQqIGdlbmVyYXRvclZhbHVlUmVnaXN0ZXIoKSB7IHJldHVybiAmbV9wYXJhbWV0ZXJzWzNd
OyB9CiAgICAgICAgIFJlZ2lzdGVySUQqIGdlbmVyYXRvclJlc3VtZU1vZGVSZWdpc3RlcigpIHsg
cmV0dXJuICZtX3BhcmFtZXRlcnNbNF07IH0KKyAgICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9y
RnJhbWVSZWdpc3RlcigpIHsgcmV0dXJuICZtX3BhcmFtZXRlcnNbNV07IH0KIAogICAgICAgICBD
b2RlVHlwZSBjb2RlVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZVR5cGU7IH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEhlYXAuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RIZWFwLmgKaW5kZXggNGRlYzhmYTAzNzc2
ZTAxZTZjZDM3NDYwNjU5Y2M1NjExNjIzOGM2NS4uOWM4NmY2OTJiOGQzODVkOWViMjQ2OTdkNzky
NzlkZjZjZGY0NWNlNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdB
YnN0cmFjdEhlYXAuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0
SGVhcC5oCkBAIC02OCw2ICs2OCw4IEBACiAgICAgbWFjcm8oU2NvcGVQcm9wZXJ0aWVzKSBcCiAg
ICAgbWFjcm8oVHlwZWRBcnJheVByb3BlcnRpZXMpIFwKICAgICBtYWNybyhIZWFwT2JqZWN0Q291
bnQpIC8qIFVzZWQgdG8gcmVmbGVjdCB0aGUgZmFjdCB0aGF0IHNvbWUgYWxsb2NhdGlvbnMgcmV2
ZWFsIG9iamVjdCBpZGVudGl0eSAqL1wKKyAgICBtYWNybyhHZW5lcmF0b3JMb2NhbHMpIFwKKyAg
ICBtYWNybyhHZW5lcmF0b3JMb2NhbENvdW50KSBcCiAgICAgbWFjcm8oUmVnRXhwU3RhdGUpIFwK
ICAgICBtYWNybyhNYXRoRG90UmFuZG9tU3RhdGUpIFwKICAgICBtYWNybyhJbnRlcm5hbFN0YXRl
KSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50
ZXJwcmV0ZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0
SW50ZXJwcmV0ZXJJbmxpbmVzLmgKaW5kZXggOWVlYzYzY2ViMDcxYmMxNDg2YTAxMmMyODUwMWRi
NjI0MjZiZGU3Yi4uNzZlMTczZWViYWRiN2YyYWU5ODkwMDVhMWJhNTViZTFhMWU5NDA2NSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVy
SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRl
cnByZXRlcklubGluZXMuaApAQCAtMTY4Nyw2ICsxNjg3LDEwIEBACiAgICAgY2FzZSBOZXdSZWdl
eHA6CiAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyktPnJlZ0V4cFN0cnVjdHVyZSgpKTsKICAgICAg
ICAgYnJlYWs7CisKKyAgICBjYXNlIE5ld0dlbmVyYXRvckZyYW1lOgorICAgICAgICBmb3JOb2Rl
KG5vZGUpLnNldChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpLT5nZW5lcmF0b3JGcmFtZVN0cnVjdHVyZSgpKTsKKyAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICAKICAgICBjYXNlIFRvVGhpczogewogICAgICAgICBBYnN0cmFjdFZhbHVlJiBz
b3VyY2UgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKTsKQEAgLTI1MTAsNiArMjUxNCwxNyBAQAog
ICAgICAgICBmb3JOb2RlKG5vZGUpLm1ha2VIZWFwVG9wKCk7CiAgICAgICAgIGJyZWFrOwogCisg
ICAgY2FzZSBTZXRHZW5lcmF0b3JMb2NhbDoKKyAgICBjYXNlIFJlc2l6ZUdlbmVyYXRvckxvY2Fs
czoKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIEdldEdlbmVyYXRvckxvY2FsOiB7CisgICAg
ICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYXR0ZW1wdCB0byBjb252ZXJ0IGl0IHRvIGNvbnN0YW50
LgorICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUz
MTgzCisgICAgICAgIGZvck5vZGUobm9kZSkubWFrZUhlYXBUb3AoKTsKKyAgICAgICAgYnJlYWs7
CisgICAgfQorCiAgICAgY2FzZSBGb3JjZU9TUkV4aXQ6CiAgICAgY2FzZSBDaGVja0JhZENlbGw6
CiAgICAgICAgIG1fc3RhdGUuc2V0SXNWYWxpZChmYWxzZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCmluZGV4IDM2NDRhMmZkMTlhMGQ5YjNk
ZGE3YjA2OGEwMDQ5MGE1ODI2MjA4NmQuLjZhODNkYTFmZDI0NmNiOGI1ZWZkMzk0MDg3YzQ2NDdi
NTc3ZWE5YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNv
ZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQ
YXJzZXIuY3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiREZHQXJyYXlNb2RlLmgiCiAj
aW5jbHVkZSAiREZHQ2FwYWJpbGl0aWVzLmgiCiAjaW5jbHVkZSAiREZHQ2xvYmJlcnNFeGl0U3Rh
dGUuaCIKKyNpbmNsdWRlICJERkdHZW5lcmF0b3JMb2NhbERhdGEuaCIKICNpbmNsdWRlICJERkdH
cmFwaC5oIgogI2luY2x1ZGUgIkRGR0pJVENvZGUuaCIKICNpbmNsdWRlICJHZXRCeUlkU3RhdHVz
LmgiCkBAIC05NjMsNiArOTY0LDExIEBAIGNsYXNzIEJ5dGVDb2RlUGFyc2VyIHsKICAgICAgICAg
Zm9yIChBcmd1bWVudFBvc2l0aW9uKiBhcmd1bWVudCA6IG1faW5saW5lU3RhY2tUb3AtPm1fYXJn
dW1lbnRQb3NpdGlvbnMpCiAgICAgICAgICAgICBhcmd1bWVudC0+bWVyZ2VTaG91bGROZXZlclVu
Ym94KHRydWUpOwogICAgIH0KKworICAgIEdlbmVyYXRvckxvY2FsRGF0YSogbmV3R2VuZXJhdG9y
TG9jYWxEYXRhKCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX2dyYXBoLm1fZ2VuZXJhdG9yTG9j
YWxEYXRhLmFkZCgpOworICAgIH0KICAgICAKICAgICBWTSogbV92bTsKICAgICBDb2RlQmxvY2sq
IG1fY29kZUJsb2NrOwpAQCAtMTA1MSw2ICsxMDU3LDExIEBAIGNsYXNzIEJ5dGVDb2RlUGFyc2Vy
IHsKICAgICAgICAgQ2FsbExpbmtJbmZvTWFwIG1fY2FsbExpbmtJbmZvczsKICAgICAgICAgU3R1
YkluZm9NYXAgbV9zdHViSW5mb3M7CiAgICAgICAgIEJ5VmFsSW5mb01hcCBtX2J5VmFsSW5mb3M7
CisKKyAgICAgICAgLy8gU2luY2UgdGhlIG9wX3Jlc3VtZV9oaW50IGlzIGVtaXR0ZWQgYWZ0ZXIg
dGhlIGNvcnJlc3BvbmRpbmcgb3Bfc2F2ZV9oaW50CisgICAgICAgIC8vIGFuZCB0aGVyZSBpcyBu
byBvdGhlciBvcF9yZXN1bWVfaGludCBhbmQgb3Bfc2F2ZV9oaW50IGJldHdlZW4gdGhlbSwKKyAg
ICAgICAgLy8gd2UgY2FuIHRyYWNrIHRoZXNlIGNvcnJlc3BvbmRlbmNlIGJ5IGp1c3QgdHJhY2tp
bmcgY3VycmVudGx5IGZvY3VzaW5nIG9wX3NhdmUuCisgICAgICAgIE9wZXJhbmRzPEdlbmVyYXRv
ckxvY2FsRGF0YSo+IG1fZ2VuZXJhdG9yTG9jYWxzOwogICAgICAgICAKICAgICAgICAgLy8gRGlk
IHdlIHNlZSBhbnkgcmV0dXJucz8gV2UgbmVlZCB0byBoYW5kbGUgdGhlICh1bmNvbW1vbiBidXQg
bmVjZXNzYXJ5KQogICAgICAgICAvLyBjYXNlIHdoZXJlIGEgcHJvY2VkdXJlIHRoYXQgZG9lcyBu
b3QgcmV0dXJuIHdhcyBpbmxpbmVkLgpAQCAtMzM0MSw2ICszMzUyLDExIEBAIGJvb2wgQnl0ZUNv
ZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgICAgICBORVhUX09Q
Q09ERShvcF9uZXdfcmVnZXhwKTsKICAgICAgICAgfQogCisgICAgICAgIGNhc2Ugb3BfbmV3X2dl
bmVyYXRvcl9mcmFtZTogeworICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50
SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSwgYWRkVG9HcmFwaChOZXdHZW5lcmF0b3JGcmFtZSwg
T3BJbmZvKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51LnVuc2lnbmVkVmFsdWUpKSk7CisgICAgICAg
ICAgICBORVhUX09QQ09ERShvcF9uZXdfZ2VuZXJhdG9yX2ZyYW1lKTsKKyAgICAgICAgfQorCiAg
ICAgICAgIGNhc2Ugb3BfZ2V0X3Jlc3RfbGVuZ3RoOiB7CiAgICAgICAgICAgICBJbmxpbmVDYWxs
RnJhbWUqIGlubGluZUNhbGxGcmFtZSA9IHRoaXMtPmlubGluZUNhbGxGcmFtZSgpOwogICAgICAg
ICAgICAgTm9kZSogbGVuZ3RoOwpAQCAtMzM2OCw2ICszMzg0LDQ4IEBAIGJvb2wgQnl0ZUNvZGVQ
YXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgICAgICAgICAgYXJyYXks
IGFycmF5TGVuZ3RoKTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2NvcHlfcmVzdCk7CiAg
ICAgICAgIH0KKworICAgICAgICBjYXNlIG9wX3NhdmU6IHsKKyAgICAgICAgICAgIE5vZGUqIGZy
YW1lID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5k
KSk7CisgICAgICAgICAgICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSBjdXJyZW50
SW5zdHJ1Y3Rpb25bMl0udS51bnNpZ25lZFZhbHVlOworICAgICAgICAgICAgY29uc3QgRmFzdEJp
dFZlY3RvciYgbGl2ZW5lc3MgPSBtX2lubGluZVN0YWNrVG9wLT5tX2NvZGVCbG9jay0+bGl2ZUNh
bGxlZUxvY2Fsc0F0WWllbGQobGl2ZUNhbGxlZUxvY2Fsc0luZGV4KTsKKworICAgICAgICAgICAg
bV9pbmxpbmVTdGFja1RvcC0+bV9nZW5lcmF0b3JMb2NhbHMgPSBPcGVyYW5kczxHZW5lcmF0b3JM
b2NhbERhdGEqPihtX251bUFyZ3VtZW50cywgbV9udW1Mb2NhbHMpOworCisgICAgICAgICAgICBh
ZGRUb0dyYXBoKFJlc2l6ZUdlbmVyYXRvckxvY2FscywgT3BJbmZvKGxpdmVuZXNzLmJpdENvdW50
KCkpLCBmcmFtZSk7CisgICAgICAgICAgICB1bnNpZ25lZCBnZW5lcmF0b3JMb2NhbEluZGV4ID0g
MDsKKyAgICAgICAgICAgIGxpdmVuZXNzLmZvckVhY2hTZXRCaXQoWyZdKHNpemVfdCBpbmRleCkg
eworICAgICAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kID0gdmlydHVhbFJlZ2lz
dGVyRm9yTG9jYWwoaW5kZXgpOworICAgICAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciByZW1h
cHBlZE9wZXJhbmQgPSBtX2lubGluZVN0YWNrVG9wLT5yZW1hcE9wZXJhbmQob3BlcmFuZCk7Cisg
ICAgICAgICAgICAgICAgTm9kZSogbG9jYWwgPSBnZXQob3BlcmFuZCk7CisgICAgICAgICAgICAg
ICAgR2VuZXJhdG9yTG9jYWxEYXRhKiBnZW5lcmF0b3JMb2NhbERhdGEgPSBuZXdHZW5lcmF0b3JM
b2NhbERhdGEoKTsKKyAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2dlbmVyYXRv
ckxvY2Fscy5sb2NhbChyZW1hcHBlZE9wZXJhbmQudG9Mb2NhbCgpKSA9IGdlbmVyYXRvckxvY2Fs
RGF0YTsKKyAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFNldEdlbmVyYXRvckxvY2FsLCBPcElu
Zm8oZ2VuZXJhdG9yTG9jYWxJbmRleCsrKSwgT3BJbmZvKGdlbmVyYXRvckxvY2FsRGF0YSksIGZy
YW1lLCBsb2NhbCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9w
X3NhdmUpOworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBvcF9yZXN1bWVfZnJvbV9nZW5lcmF0
b3JfZnJhbWU6IHsKKyAgICAgICAgICAgIE5vZGUqIGZyYW1lID0gZ2V0KFZpcnR1YWxSZWdpc3Rl
cihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSk7CisgICAgICAgICAgICB1bnNpZ25l
ZCBnZW5lcmF0b3JMb2NhbEluZGV4ID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUudW5zaWduZWRW
YWx1ZTsKKyAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kKGN1cnJlbnRJbnN0cnVj
dGlvblsxXS51Lm9wZXJhbmQpOworICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHJlbWFwcGVk
T3BlcmFuZCA9IG1faW5saW5lU3RhY2tUb3AtPnJlbWFwT3BlcmFuZChvcGVyYW5kKTsKKyAgICAg
ICAgICAgIEdlbmVyYXRvckxvY2FsRGF0YSogZ2VuZXJhdG9yTG9jYWxEYXRhID0gbV9pbmxpbmVT
dGFja1RvcC0+bV9nZW5lcmF0b3JMb2NhbHMubG9jYWwocmVtYXBwZWRPcGVyYW5kLnRvTG9jYWwo
KSk7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChnZW5lcmF0b3JMb2NhbERhdGEpOworICAg
ICAgICAgICAgc2V0KG9wZXJhbmQsIGFkZFRvR3JhcGgoR2V0R2VuZXJhdG9yTG9jYWwsIE9wSW5m
byhnZW5lcmF0b3JMb2NhbEluZGV4KSwgT3BJbmZvKGdlbmVyYXRvckxvY2FsRGF0YSksIGZyYW1l
KSk7CisgICAgICAgICAgICBORVhUX09QQ09ERShvcF9yZXN1bWVfZnJvbV9nZW5lcmF0b3JfZnJh
bWUpOworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBvcF9jbGVhcl9nZW5lcmF0b3JfZnJhbWU6
IHsKKyAgICAgICAgICAgIE5vZGUqIGZyYW1lID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50
SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSk7CisgICAgICAgICAgICBhZGRUb0dyYXBoKFJlc2l6
ZUdlbmVyYXRvckxvY2FscywgT3BJbmZvKDApLCBmcmFtZSk7CisgICAgICAgICAgICBORVhUX09Q
Q09ERShvcF9jbGVhcl9nZW5lcmF0b3JfZnJhbWUpOworICAgICAgICB9CisKKyAgICAgICAgY2Fz
ZSBvcF9ub3A6IHsKKyAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX25vcCk7CisgICAgICAgIH0K
KwogICAgICAgICAgICAgCiAgICAgICAgIC8vID09PSBCaXR3aXNlIG9wZXJhdGlvbnMgPT09CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAppbmRleCBk
MTAwZDk3ZDVjNjBlMjVhMDYwZmZkYTQ1NjYzYjNiOTQxNDM1ZGM2Li5hNTgyZjg3MjA3NmNmZjg5
NDI4M2ViYTMxYTQ5OTc3NjMwZGM3ODkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDYXBhYmlsaXRpZXMuY3BwCkBAIC0xODEsNiArMTgxLDcgQEAgQ2FwYWJpbGl0eUxldmVs
IGNhcGFiaWxpdHlMZXZlbChPcGNvZGVJRCBvcGNvZGVJRCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IEluc3RydWMKICAgICBjYXNlIG9wX25ld19hcnJheToKICAgICBjYXNlIG9wX25ld19hcnJheV93
aXRoX3NpemU6CiAgICAgY2FzZSBvcF9uZXdfYXJyYXlfYnVmZmVyOgorICAgIGNhc2Ugb3BfbmV3
X2dlbmVyYXRvcl9mcmFtZToKICAgICBjYXNlIG9wX3N0cmNhdDoKICAgICBjYXNlIG9wX3RvX3By
aW1pdGl2ZToKICAgICBjYXNlIG9wX3Rocm93OgpAQCAtMjI0LDYgKzIyNSwxMCBAQCBDYXBhYmls
aXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVsKE9wY29kZUlEIG9wY29kZUlELCBDb2RlQmxvY2sqIGNv
ZGVCbG9jaywgSW5zdHJ1YwogICAgIGNhc2Ugb3BfY2F0Y2g6CiAgICAgY2FzZSBvcF9jb3B5X3Jl
c3Q6CiAgICAgY2FzZSBvcF9nZXRfcmVzdF9sZW5ndGg6CisgICAgY2FzZSBvcF9zYXZlOgorICAg
IGNhc2Ugb3BfcmVzdW1lX2Zyb21fZ2VuZXJhdG9yX2ZyYW1lOgorICAgIGNhc2Ugb3BfY2xlYXJf
Z2VuZXJhdG9yX2ZyYW1lOgorICAgIGNhc2Ugb3Bfbm9wOgogICAgICAgICByZXR1cm4gQ2FuQ29t
cGlsZUFuZElubGluZTsKIAogICAgIGNhc2Ugb3BfcHV0X3RvX3Njb3BlOiB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCmluZGV4IDM0M2E2ZGU5YzI5MDliOTNlMDUy
OGNmMDI3ODRhYWQ5NGQwMWI0ZDEuLjU5ZWM4MmJjMjBkM2YxNjhlMmY0YjVjYjBiZTZmNTVhMmJm
OGRjY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6
ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCkBAIC0x
MDQ0LDYgKzEwNDQsNyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2Rl
LCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogCiAgICAgY2FzZSBOZXdP
YmplY3Q6CiAgICAgY2FzZSBOZXdSZWdleHA6CisgICAgY2FzZSBOZXdHZW5lcmF0b3JGcmFtZToK
ICAgICBjYXNlIE5ld1N0cmluZ09iamVjdDoKICAgICBjYXNlIFBoYW50b21OZXdPYmplY3Q6CiAg
ICAgY2FzZSBNYXRlcmlhbGl6ZU5ld09iamVjdDoKQEAgLTExMTEsNiArMTExMiwyMyBAQCB2b2lk
IGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYg
cmVhZCwgY29uc3QgV3JpdGVGdQogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQorCisgICAgY2FzZSBTZXRHZW5l
cmF0b3JMb2NhbDogeworICAgICAgICByZWFkKEdlbmVyYXRvckxvY2FsQ291bnQpOworICAgICAg
ICB3cml0ZShHZW5lcmF0b3JMb2NhbHMpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
Y2FzZSBHZXRHZW5lcmF0b3JMb2NhbDogeworICAgICAgICByZWFkKEdlbmVyYXRvckxvY2FsQ291
bnQpOworICAgICAgICByZWFkKEdlbmVyYXRvckxvY2Fscyk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBjYXNlIFJlc2l6ZUdlbmVyYXRvckxvY2FsczogeworICAgICAgICB3cml0ZShH
ZW5lcmF0b3JMb2NhbENvdW50KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KICAgICAgICAgCiAg
ICAgY2FzZSBUaHJvd1JlZmVyZW5jZUVycm9yOgogICAgICAgICB3cml0ZShTaWRlU3RhdGUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyc0V4aXRTdGF0
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJzRXhpdFN0YXRlLmNw
cAppbmRleCA0ZTBjNTA3Nzg5Y2Q3YjNmZjQ3NzUxZjkyNWU3NDgzZTYxZTJkZjViLi45Mjg1NTEy
NjI3ODUxZDNmODNmMzdmMDJhYmYwYTNiNWVmNmJmNWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcApAQCAtNTMsMTAgKzUzLDE2
IEBAIGJvb2wgY2xvYmJlcnNFeGl0U3RhdGUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAg
ICAgICAvLyBleGl0IHN0YXRlLgogICAgICAgICByZXR1cm4gZmFsc2U7CiAKKyAgICBjYXNlIFJl
c2l6ZUdlbmVyYXRvckxvY2FsczoKKyAgICBjYXNlIFNldEdlbmVyYXRvckxvY2FsOgorICAgIGNh
c2UgR2V0R2VuZXJhdG9yTG9jYWw6CisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIGNhc2Ug
QXJyYXlpZnlUb1N0cnVjdHVyZToKICAgICBjYXNlIEFycmF5aWZ5OgogICAgIGNhc2UgTmV3T2Jq
ZWN0OgogICAgIGNhc2UgTmV3UmVnZXhwOgorICAgIGNhc2UgTmV3R2VuZXJhdG9yRnJhbWU6CiAg
ICAgY2FzZSBOZXdTdHJpbmdPYmplY3Q6CiAgICAgY2FzZSBQaGFudG9tTmV3T2JqZWN0OgogICAg
IGNhc2UgTWF0ZXJpYWxpemVOZXdPYmplY3Q6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0RvZXNHQy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rv
ZXNHQy5jcHAKaW5kZXggNzAyZGE1YmYxZTdjMGYxYzhmZTU1YzY0ODQ0NThmY2FkODFlMmFhNS4u
Y2ViNzg2MWM3YjI3YjVlOTc5NzcyYjZiM2I4NzA3YjNlZTg5MmIxMyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcApAQCAtMjI5LDYgKzIyOSw5IEBAIGJvb2wgZG9lc0dD
KEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIEdldEZyb21Bcmd1bWVudHM6CiAg
ICAgY2FzZSBQdXRUb0FyZ3VtZW50czoKICAgICBjYXNlIENvcHlSZXN0OgorICAgIGNhc2UgU2V0
R2VuZXJhdG9yTG9jYWw6CisgICAgY2FzZSBHZXRHZW5lcmF0b3JMb2NhbDoKKyAgICBjYXNlIFJl
c2l6ZUdlbmVyYXRvckxvY2FsczoKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgY2FzZSBD
cmVhdGVBY3RpdmF0aW9uOgpAQCAtMjQ2LDYgKzI0OSw3IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBn
cmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIE5ld0FycmF5V2l0aFNpemU6CiAgICAgY2FzZSBO
ZXdBcnJheUJ1ZmZlcjoKICAgICBjYXNlIE5ld1JlZ2V4cDoKKyAgICBjYXNlIE5ld0dlbmVyYXRv
ckZyYW1lOgogICAgIGNhc2UgTmV3U3RyaW5nT2JqZWN0OgogICAgIGNhc2UgTWFrZVJvcGU6CiAg
ICAgY2FzZSBOZXdBcnJvd0Z1bmN0aW9uOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Rml4dXBQaGFzZS5jcHAKaW5kZXggYzlkNWFiZmI0OTQ4MWI5MDU4OWVjNGZiYTU5NWEyY2U4ZTcw
ZGY2Ny4uMDE1ZGY1MWRjMzdiZmJmNDZiYWE5MWVjOWE4YzhiMDE3ZTVkOTFhNiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCkBAIC0xNDMwLDYgKzE0MzAs
MjQgQEAgY2xhc3MgRml4dXBQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQogCisgICAgICAgIGNhc2UgU2V0R2VuZXJhdG9yTG9jYWw6IHsKKyAgICAg
ICAgICAgIGZpeEVkZ2U8Q2VsbFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgc3Bl
Y3VsYXRlRm9yQmFycmllcihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQorCisgICAgICAgIGNhc2UgR2V0R2VuZXJhdG9yTG9jYWw6IHsKKyAgICAgICAgICAg
IGZpeEVkZ2U8Q2VsbFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgLy8gQ3VycmVu
dGx5LCB3ZSBhbHdheXMgc3RvcmUgdGhlIHZhbHVlIGFzIEpTVmFsdWUgaW4gdGhlIEdlbmVyYXRv
ckZyYW1lLgorICAgICAgICAgICAgbm9kZS0+c2V0UmVzdWx0KE5vZGVSZXN1bHRKUyk7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2UgUmVzaXplR2VuZXJhdG9y
TG9jYWxzOiB7CisgICAgICAgICAgICBmaXhFZGdlPENlbGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKICNpZiAhQVNTRVJUX0RJU0FCTEVECiAg
ICAgICAgIC8vIEhhdmUgdGhlc2Ugbm8tb3AgY2FzZXMgaGVyZSB0byBlbnN1cmUgdGhhdCBub2Jv
ZHkgZm9yZ2V0cyB0byBhZGQgaGFuZGxlcnMgZm9yIG5ldyBvcGNvZGVzLgogICAgICAgICBjYXNl
IFNldEFyZ3VtZW50OgpAQCAtMTQ2Miw2ICsxNDgwLDcgQEAgY2xhc3MgRml4dXBQaGFzZSA6IHB1
YmxpYyBQaGFzZSB7CiAgICAgICAgIGNhc2UgTmV3T2JqZWN0OgogICAgICAgICBjYXNlIE5ld0Fy
cmF5QnVmZmVyOgogICAgICAgICBjYXNlIE5ld1JlZ2V4cDoKKyAgICAgICAgY2FzZSBOZXdHZW5l
cmF0b3JGcmFtZToKICAgICAgICAgY2FzZSBCcmVha3BvaW50OgogICAgICAgICBjYXNlIFByb2Zp
bGVXaWxsQ2FsbDoKICAgICAgICAgY2FzZSBQcm9maWxlRGlkQ2FsbDoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR2VuZXJhdG9yTG9jYWxEYXRhLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0dlbmVyYXRvckxvY2FsRGF0YS5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNl
YWYxYWJjMDViNzgzODU0N2MwYjdhZWJlZGZmNjA0Y2NiNWZkMTIKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dlbmVyYXRvckxvY2FsRGF0YS5oCkBAIC0w
LDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgWXVzdWtlIFN1enVraSA8dXRh
dGFuZS50ZWFAZ21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBERkdHZW5lcmF0b3JMb2NhbERhdGFfaAorI2RlZmluZSBERkdHZW5l
cmF0b3JMb2NhbERhdGFfaAorCisjaWYgRU5BQkxFKERGR19KSVQpCisKKyNpbmNsdWRlICJERkdD
b21tb24uaCIKKyNpbmNsdWRlICJTcGVjdWxhdGVkVHlwZS5oIgorI2luY2x1ZGUgIlZpcnR1YWxS
ZWdpc3Rlci5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CisKKworY2xhc3Mg
R2VuZXJhdG9yTG9jYWxEYXRhIHsKK3B1YmxpYzoKKyAgICBib29sIHByZWRpY3QoU3BlY3VsYXRl
ZFR5cGUgcHJlZGljdGlvbikKKyAgICB7CisgICAgICAgIHJldHVybiBtZXJnZVNwZWN1bGF0aW9u
KG1fcHJlZGljdGlvbiwgcHJlZGljdGlvbik7CisgICAgfQorCisgICAgU3BlY3VsYXRlZFR5cGUg
cHJlZGljdGlvbigpCisgICAgeworICAgICAgICByZXR1cm4gbV9wcmVkaWN0aW9uOworICAgIH0K
KworcHJpdmF0ZToKKyAgICBTcGVjdWxhdGVkVHlwZSBtX3ByZWRpY3Rpb24geyBTcGVjTm9uZSB9
OworfTsKKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRworCisjZW5kaWYgLy8gRU5BQkxFKERG
R19KSVQpCisKKyNlbmRpZiAvLyBERkdWYXJpYWJsZUFjY2Vzc0RhdGFfaApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdHcmFwaC5oCmluZGV4IDA5YWFlOTU1ZjY2YWE3ODk0YTE0ODVlMTM5MzdmM2Jh
NTM4ODlkMWMuLjQzZmRiYjFhNzEzMDM0NmM5YmRhZjQ5ZDRlNDE2YjcyNDEzZjA2MWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKQEAgLTYwLDYgKzYwLDcgQEAKIGNsYXNzIERv
bWluYXRvcnM7CiBjbGFzcyBOYXR1cmFsTG9vcHM7CiBjbGFzcyBQcmVQb3N0TnVtYmVyaW5nOwor
Y2xhc3MgR2VuZXJhdG9yTG9jYWxEYXRhOwogCiAjZGVmaW5lIERGR19OT0RFX0RPX1RPX0NISUxE
UkVOKGdyYXBoLCBub2RlLCB0aGluZ1RvRG8pIGRvIHsgICAgICAgICAgICBcCiAgICAgICAgIE5v
ZGUqIF9ub2RlID0gKG5vZGUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCkBAIC04ODcsNiArODg4LDcgQEAgY2xhc3MgR3JhcGggOiBwdWJsaWMgdmlydHVhbCBT
Y2FubmFibGUgewogICAgIEJhZzxDYWxsVmFyYXJnc0RhdGE+IG1fY2FsbFZhcmFyZ3NEYXRhOwog
ICAgIEJhZzxMb2FkVmFyYXJnc0RhdGE+IG1fbG9hZFZhcmFyZ3NEYXRhOwogICAgIEJhZzxTdGFj
a0FjY2Vzc0RhdGE+IG1fc3RhY2tBY2Nlc3NEYXRhOworICAgIEJhZzxHZW5lcmF0b3JMb2NhbERh
dGE+IG1fZ2VuZXJhdG9yTG9jYWxEYXRhOwogICAgIFZlY3RvcjxJbmxpbmVWYXJpYWJsZURhdGEs
IDQ+IG1faW5saW5lVmFyaWFibGVEYXRhOwogICAgIEhhc2hNYXA8Q29kZUJsb2NrKiwgc3RkOjp1
bmlxdWVfcHRyPEZ1bGxCeXRlY29kZUxpdmVuZXNzPj4gbV9ieXRlY29kZUxpdmVuZXNzOwogICAg
IEhhc2hNYXA8Q29kZUJsb2NrKiwgc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlS2lsbHM+PiBtX2J5
dGVjb2RlS2lsbHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01h
eUV4aXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNwcAppbmRl
eCBkYWEyOTMzOWRiZmJkZjgwYWFkOWI2NDZhMmNiN2EwNTg3ZDk2MjM4Li5iYzZkMTVjODRkZmE0
NGY3MzRmZGM0NzRkZGU3YTZiYjI2NTZlNmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR01heUV4aXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTWF5RXhpdC5jcHAKQEAgLTEzMCw2ICsxMzAsOSBAQCBFeGl0TW9kZSBtYXlFeGl0KEdyYXBo
JiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIFN0b3JlQmFycmllcjoKICAgICBjYXNlIFB1
dEJ5T2Zmc2V0OgogICAgIGNhc2UgUHV0Q2xvc3VyZVZhcjoKKyAgICBjYXNlIFJlc2l6ZUdlbmVy
YXRvckxvY2FsczoKKyAgICBjYXNlIFNldEdlbmVyYXRvckxvY2FsOgorICAgIGNhc2UgR2V0R2Vu
ZXJhdG9yTG9jYWw6CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBTdHJDYXQ6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTm9kZS5oCmluZGV4IDEyODcwZDkzZDBjNDgyZTRmOGU1ZDRkMmRhZjFl
NmJmMWY3MWI2MmMuLjNlYzc3ZTFhMTRkY2UyNTM1YmExMGRmMjNmMDlhOWU4MWY5NzhiMDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVk
ZSAiREZHQXJyYXlNb2RlLmgiCiAjaW5jbHVkZSAiREZHQ29tbW9uLmgiCiAjaW5jbHVkZSAiREZH
RXBvY2guaCIKKyNpbmNsdWRlICJERkdHZW5lcmF0b3JMb2NhbERhdGEuaCIKICNpbmNsdWRlICJE
RkdMYXp5SlNWYWx1ZS5oIgogI2luY2x1ZGUgIkRGR011bHRpR2V0QnlPZmZzZXREYXRhLmgiCiAj
aW5jbHVkZSAiREZHTm9kZUZsYWdzLmgiCkBAIC04NzgsNiArODc5LDcyIEBAIHN0cnVjdCBOb2Rl
IHsKICAgICAgICAgcmV0dXJuIG1fb3BJbmZvOwogICAgIH0KIAorICAgIGJvb2wgaGFzR2VuZXJh
dG9yTG9jYWxzU2l6ZSgpCisgICAgeworICAgICAgICBzd2l0Y2ggKG9wKCkpIHsKKyAgICAgICAg
Y2FzZSBOZXdHZW5lcmF0b3JGcmFtZToKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQor
CisgICAgdW5zaWduZWQgZ2VuZXJhdG9yTG9jYWxzU2l6ZSgpCisgICAgeworICAgICAgICBBU1NF
UlQoaGFzR2VuZXJhdG9yTG9jYWxzU2l6ZSgpKTsKKyAgICAgICAgcmV0dXJuIG1fb3BJbmZvOwor
ICAgIH0KKworICAgIGJvb2wgaGFzR2VuZXJhdG9yTG9jYWxJbmRleCgpCisgICAgeworICAgICAg
ICBzd2l0Y2ggKG9wKCkpIHsKKyAgICAgICAgY2FzZSBTZXRHZW5lcmF0b3JMb2NhbDoKKyAgICAg
ICAgY2FzZSBHZXRHZW5lcmF0b3JMb2NhbDoKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
ICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAg
fQorCisgICAgdW5zaWduZWQgZ2VuZXJhdG9yTG9jYWxJbmRleCgpCisgICAgeworICAgICAgICBB
U1NFUlQoaGFzR2VuZXJhdG9yTG9jYWxJbmRleCgpKTsKKyAgICAgICAgcmV0dXJuIG1fb3BJbmZv
OworICAgIH0KKworICAgIGJvb2wgaGFzR2VuZXJhdG9yTG9jYWxEYXRhKCkKKyAgICB7CisgICAg
ICAgIHN3aXRjaCAob3AoKSkgeworICAgICAgICBjYXNlIFNldEdlbmVyYXRvckxvY2FsOgorICAg
ICAgICBjYXNlIEdldEdlbmVyYXRvckxvY2FsOgorICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICBHZW5lcmF0b3JMb2NhbERhdGEqIGdlbmVyYXRvckxvY2FsRGF0YSgpCisgICAg
eworICAgICAgICBBU1NFUlQoaGFzR2VuZXJhdG9yTG9jYWxEYXRhKCkpOworICAgICAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDxHZW5lcmF0b3JMb2NhbERhdGEqPihtX29wSW5mbzIpOworICAg
IH0KKworICAgIGJvb2wgaGFzR2VuZXJhdG9yRnJhbWVMb2NhbHMoKQorICAgIHsKKyAgICAgICAg
c3dpdGNoIChvcCgpKSB7CisgICAgICAgIGNhc2UgUmVzaXplR2VuZXJhdG9yTG9jYWxzOgorICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB1bnNpZ25lZCBnZW5lcmF0b3JGcmFt
ZUxvY2FscygpCisgICAgeworICAgICAgICBBU1NFUlQoaGFzR2VuZXJhdG9yRnJhbWVMb2NhbHMo
KSk7CisgICAgICAgIHJldHVybiBtX29wSW5mbzsKKyAgICB9CisKICAgICBib29sIGhhc0FjY2Vz
c29yQXR0cmlidXRlcygpCiAgICAgewogICAgICAgICBzd2l0Y2ggKG9wKCkpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAppbmRleCBkZGQwYjk3Y2IyZmU2OTI2MDQ1MTAz
ZjhhNzEwNzAwNDgyZTlmNmJkLi4yOThjOGY4YzdjYmM5ZGZjNWY1MDIyZjU0MTY2ZjZlOTQ4Mzcy
M2RjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCkBAIC03OSw2ICs3
OSwxMCBAQAogICAgIG1hY3JvKEZsdXNoLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8o
UGhhbnRvbUxvY2FsLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgXAorICAgIG1hY3JvKFNldEdl
bmVyYXRvckxvY2FsLCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgbWFjcm8oR2V0R2VuZXJhdG9y
TG9jYWwsIE5vZGVSZXN1bHRKUykgXAorICAgIG1hY3JvKFJlc2l6ZUdlbmVyYXRvckxvY2Fscywg
Tm9kZU11c3RHZW5lcmF0ZSkgXAorICAgIFwKICAgICAvKiBIaW50IHRoYXQgdGhpcyBpcyB3aGVy
ZSBieXRlY29kZSB0aGlua3MgaXMgYSBnb29kIHBsYWNlIHRvIE9TUi4gTm90ZSB0aGF0IHRoaXMg
Ki9cCiAgICAgLyogd2lsbCBleGlzdCBldmVuIGluIGlubGluZWQgbG9vcHMuIFRoaXMgaGFzIG5v
IGV4ZWN1dGlvbiBzZW1hbnRpY3MgYnV0IGl0IG11c3QgKi9cCiAgICAgLyogc3Vydml2ZSBhbGwg
RENFLiBXZSB0cmVhdCB0aGlzIGFzIGJlaW5nIGEgY2FuLWV4aXQgYmVjYXVzZSB0aWVyLXVwIHRv
IEZUTCBtYXkgKi9cCkBAIC0yNjMsNiArMjY3LDcgQEAKICAgICBtYWNybyhOZXdBcnJheUJ1ZmZl
ciwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oTmV3VHlwZWRBcnJheSwgTm9kZVJlc3VsdEpT
IHwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKE5ld1JlZ2V4cCwgTm9kZVJlc3VsdEpT
KSBcCisgICAgbWFjcm8oTmV3R2VuZXJhdG9yRnJhbWUsIE5vZGVSZXN1bHRKUykgXAogICAgIC8q
IFJlc3QgUGFyYW1ldGVyICovXAogICAgIG1hY3JvKEdldFJlc3RMZW5ndGgsIE5vZGVSZXN1bHRJ
bnQzMikgXAogICAgIG1hY3JvKENvcHlSZXN0LCBOb2RlTXVzdEdlbmVyYXRlKSBcCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAppbmRleCAyZmQ1ZGJkYzdmYzRj
Y2E4NmZhZTEwOTIyN2FjMTc1N2ZkY2RmOTZjLi5iYzM1NjYxM2QzZjUyMTgwODIzOGU1MjY4MTM1
YWFiMDliZTY3ZjBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09w
ZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9u
cy5jcHAKQEAgLTQxLDggKzQxLDkgQEAKICNpbmNsdWRlICJEaXJlY3RBcmd1bWVudHMuaCIKICNp
bmNsdWRlICJGVExGb3JPU1JFbnRyeUpJVENvZGUuaCIKICNpbmNsdWRlICJGVExPU1JFbnRyeS5o
IgotI2luY2x1ZGUgIkhvc3RDYWxsUmV0dXJuVmFsdWUuaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JG
cmFtZS5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgorI2luY2x1ZGUgIkhvc3RDYWxsUmV0
dXJuVmFsdWUuaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpJVC5oIgog
I2luY2x1ZGUgIkpJVEV4Y2VwdGlvbnMuaCIKQEAgLTgxNyw2ICs4MTgsMTEgQEAgY2hhciogSklU
X09QRVJBVElPTiBvcGVyYXRpb25OZXdGbG9hdDY0QXJyYXlXaXRoT25lQXJndW1lbnQoCiAgICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5
Vmlld1dpdGhBcmd1bWVudHM8SlNGbG9hdDY0QXJyYXk+KGV4ZWMsIHN0cnVjdHVyZSwgZW5jb2Rl
ZFZhbHVlLCAwLCBOdWxsb3B0KSk7CiB9CiAKK2NoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
TmV3R2VuZXJhdG9yRnJhbWUoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
aW50MzJfdCBudW1iZXJPZkNhbGxlZUxvY2FscykKK3sKKyAgICByZXR1cm4gYml0d2lzZV9jYXN0
PGNoYXIqPihHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlKGV4ZWMtPnZtKCksIHN0cnVjdHVyZSwgbnVt
YmVyT2ZDYWxsZWVMb2NhbHMpKTsKK30KKwogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bkNyZWF0ZUFjdGl2YXRpb25EaXJlY3QoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgSlNTY29wZSogc2NvcGUsIFN5bWJvbFRhYmxlKiB0YWJsZSwgRW5jb2RlZEpTVmFsdWUg
aW5pdGlhbFZhbHVlRW5jb2RlZCkKIHsKICAgICBKU1ZhbHVlIGluaXRpYWxWYWx1ZSA9IEpTVmFs
dWU6OmRlY29kZShpbml0aWFsVmFsdWVFbmNvZGVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPcGVyYXRpb25zLmgKaW5kZXggNDA5NjI5ZmY1ZDUzYTdiZTM4N2E2MjM2NDU1ZDY4MTZh
YzA4NWVjOS4uZTQ0M2JhMjgyMzcyZmJjY2UyYmFjNWIwOWEzNjdiZDUyYzhlNzVmMyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKQEAgLTgyLDYgKzgyLDcgQEAK
IGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3RmxvYXQzMkFycmF5V2l0aE9uZUFyZ3Vt
ZW50KEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSosIEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7
CiBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Zsb2F0NjRBcnJheVdpdGhTaXplKEV4
ZWNTdGF0ZSosIFN0cnVjdHVyZSosIGludDMyX3QpIFdURl9JTlRFUk5BTDsKIGNoYXIqIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uTmV3RmxvYXQ2NEFycmF5V2l0aE9uZUFyZ3VtZW50KEV4ZWNTdGF0
ZSosIFN0cnVjdHVyZSosIEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7CitjaGFyKiBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbk5ld0dlbmVyYXRvckZyYW1lKEV4ZWNTdGF0ZSosIFN0cnVjdHVy
ZSosIGludDMyX3QpIFdURl9JTlRFUk5BTDsKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Q
dXRCeVZhbFN0cmljdChFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFByb3BlcnR5LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUp
IFdURl9JTlRFUk5BTDsKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbE5vblN0
cmljdChFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFByb3BlcnR5LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpIFdURl9JTlRF
Uk5BTDsKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbENlbGxTdHJpY3QoRXhl
Y1N0YXRlKiwgSlNDZWxsKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFByb3BlcnR5LCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUpIFdURl9JTlRFUk5BTDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAK
aW5kZXggNTc5OThjZmUxODFhOGZjZjljYzY1MTQzNTFhYzU4MGI4MGU3ZmI4YS4uMmQzYWJiZDJl
NzYwYmU2NDVhNzBjYTE1Zjg5Y2Y1OTA4ZDkyMmZjMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAK
QEAgLTE2MCw2ICsxNjAsMjQgQEAgY2xhc3MgUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UgOiBw
dWJsaWMgUGhhc2UgewogICAgICAgICAgICAgY2hhbmdlZCB8PSB2YXJpYWJsZUFjY2Vzc0RhdGEt
PnByZWRpY3Qobm9kZS0+Y2hpbGQxKCktPnByZWRpY3Rpb24oKSk7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQorCisgICAgICAgIGNhc2UgU2V0R2VuZXJhdG9yTG9jYWw6IHsKKyAgICAg
ICAgICAgIEdlbmVyYXRvckxvY2FsRGF0YSogZ2VuZXJhdG9yTG9jYWxEYXRhID0gbm9kZS0+Z2Vu
ZXJhdG9yTG9jYWxEYXRhKCk7CisgICAgICAgICAgICBjaGFuZ2VkIHw9IGdlbmVyYXRvckxvY2Fs
RGF0YS0+cHJlZGljdChub2RlLT5jaGlsZDIoKS0+cHJlZGljdGlvbigpKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBHZXRHZW5lcmF0b3JMb2NhbDogewor
ICAgICAgICAgICAgR2VuZXJhdG9yTG9jYWxEYXRhKiBnZW5lcmF0b3JMb2NhbERhdGEgPSBub2Rl
LT5nZW5lcmF0b3JMb2NhbERhdGEoKTsKKyAgICAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRp
Y3Rpb24gPSBnZW5lcmF0b3JMb2NhbERhdGEtPnByZWRpY3Rpb24oKTsKKyAgICAgICAgICAgIC8v
IFdlIGFsd2F5cyBzdG9yZSB0aGUgdmFsdWUgaW4gR2VuZXJhdG9yTG9jYWwgYXMgRm9ybWF0SlNW
YWx1ZS4KKyAgICAgICAgICAgIC8vIFNvIGRvdWJsZSB2YWx1ZSBpcyBiZXR0ZXIgdGhhbiBJbnQ1
MiB2YWx1ZS4KKyAgICAgICAgICAgIGlmIChwcmVkaWN0aW9uICYgU3BlY0ludDUyKQorICAgICAg
ICAgICAgICAgIHByZWRpY3Rpb24gPSAocHJlZGljdGlvbiB8IFNwZWNJbnQ1MkFzRG91YmxlKSAm
IH5TcGVjSW50NTI7CisgICAgICAgICAgICBpZiAocHJlZGljdGlvbikKKyAgICAgICAgICAgICAg
ICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihwcmVkaWN0aW9uKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBCaXRBbmQ6CiAgICAg
ICAgIGNhc2UgQml0T3I6CkBAIC01MjQsNyArNTQyLDggQEAgY2xhc3MgUHJlZGljdGlvblByb3Bh
Z2F0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICB9CiAgICAgICAgICAgICAKICAg
ICAgICAgY2FzZSBOZXdSZWdleHA6Ci0gICAgICAgIGNhc2UgQ3JlYXRlQWN0aXZhdGlvbjogewor
ICAgICAgICBjYXNlIENyZWF0ZUFjdGl2YXRpb246CisgICAgICAgIGNhc2UgTmV3R2VuZXJhdG9y
RnJhbWU6IHsKICAgICAgICAgICAgIGNoYW5nZWQgfD0gc2V0UHJlZGljdGlvbihTcGVjT2JqZWN0
T3RoZXIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTcxNiw2ICs3MzUsNyBA
QCBjbGFzcyBQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAg
ICAgIGNhc2UgRXhpdE9LOgogICAgICAgICBjYXNlIExvYWRWYXJhcmdzOgogICAgICAgICBjYXNl
IENvcHlSZXN0OgorICAgICAgICBjYXNlIFJlc2l6ZUdlbmVyYXRvckxvY2FsczoKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgCiAgICAgICAgIC8vIFRoaXMgZ2V0cyBpZ25vcmVkIGJl
Y2F1c2UgaXQgb25seSBwcmV0ZW5kcyB0byBwcm9kdWNlIGEgdmFsdWUuCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCmluZGV4IDIzMGVmZWRjNDgzMTUxMmJh
YzU2OGJlZWZkYjI3Njk2MTg3MjA5NGMuLjg3YzNlMDI2OGM1ODExMjhjZGJiZjFmYjU1YjM2Njky
ZmM0MTZkZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRv
RXhlY3V0ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0
ZS5oCkBAIC0yMzcsNiArMjM3LDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVU
eXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgTmV3QXJyYXlX
aXRoU2l6ZToKICAgICBjYXNlIE5ld0FycmF5QnVmZmVyOgogICAgIGNhc2UgTmV3UmVnZXhwOgor
ICAgIGNhc2UgTmV3R2VuZXJhdG9yRnJhbWU6CiAgICAgY2FzZSBCcmVha3BvaW50OgogICAgIGNh
c2UgUHJvZmlsZVdpbGxDYWxsOgogICAgIGNhc2UgUHJvZmlsZURpZENhbGw6CkBAIC0zMjgsNiAr
MzI5LDkgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSwgR3Jh
cGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgR2V0TXlBcmd1bWVudEJ5VmFsOgogICAg
IGNhc2UgRm9yd2FyZFZhcmFyZ3M6CiAgICAgY2FzZSBDb3B5UmVzdDoKKyAgICBjYXNlIFNldEdl
bmVyYXRvckxvY2FsOgorICAgIGNhc2UgR2V0R2VuZXJhdG9yTG9jYWw6CisgICAgY2FzZSBSZXNp
emVHZW5lcmF0b3JMb2NhbHM6CiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgY2FzZSBCb3R0
b21WYWx1ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5jcHAKaW5kZXggY2NjZTc5MTk5NTE0NWU5MWVmZDIwMDg4Yzk2YjdhZjgyYjU2MTZkNi4uNWY5
NjlmYzgwOWExNjg2NmYwZGFkODI2ZDZhMmQzZjJiZTQ1YWJkMyAxMDA3NTUKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTM4LDYgKzM4LDcgQEAK
ICNpbmNsdWRlICJERkdTYW5lU3RyaW5nR2V0QnlWYWxTbG93UGF0aEdlbmVyYXRvci5oIgogI2lu
Y2x1ZGUgIkRGR1Nsb3dQYXRoR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiRGlyZWN0QXJndW1lbnRz
LmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yRnJhbWUuaCIKICNpbmNsdWRlICJKSVRBZGRHZW5lcmF0
b3IuaCIKICNpbmNsdWRlICJKSVRCaXRBbmRHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJKSVRCaXRP
ckdlbmVyYXRvci5oIgpAQCAtNjM3OCw2ICs2Mzc5LDQyIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVOZXdTdHJpbmdPYmplY3QoTm9kZSogbm9kZSkKICAgICBjZWxsUmVzdWx0KHJlc3Vs
dEdQUiwgbm9kZSk7CiB9CiAKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdHZW5lcmF0
b3JGcmFtZShOb2RlKiBub2RlKQoreworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qg
PSBtX2ppdC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpOwor
ICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT5nZW5lcmF0b3JGcmFtZVN0
cnVjdHVyZSgpOworICAgIHVuc2lnbmVkIGdlbmVyYXRvckxvY2Fsc1NpemUgPSBub2RlLT5nZW5l
cmF0b3JMb2NhbHNTaXplKCk7CisKKyAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOworICAg
IEdQUlRlbXBvcmFyeSBzY3JhdGNoMSh0aGlzKTsKKyAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaDIo
dGhpcyk7CisKKyAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOworICAgIEdQUlJl
ZyBzY3JhdGNoMUdQUiA9IHNjcmF0Y2gxLmdwcigpOworICAgIEdQUlJlZyBzY3JhdGNoMkdQUiA9
IHNjcmF0Y2gyLmdwcigpOworCisgICAgSklUQ29tcGlsZXI6Okp1bXBMaXN0IHNsb3dQYXRoOwor
CisgICAgZW1pdEFsbG9jYXRlSlNPYmplY3RXaXRoS25vd25TaXplPEdlbmVyYXRvckZyYW1lPihy
ZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwgVHJ1c3RlZEltbVB0cihudWxscHRy
KSwgc2NyYXRjaDFHUFIsIHNjcmF0Y2gyR1BSLCBzbG93UGF0aCwgR2VuZXJhdG9yRnJhbWU6OmFs
bG9jYXRpb25TaXplRm9yTG9jYWxzKGdlbmVyYXRvckxvY2Fsc1NpemUpKTsKKyAgICBtX2ppdC5z
dG9yZTMyKFRydXN0ZWRJbW0zMihnZW5lcmF0b3JMb2NhbHNTaXplKSwgSklUQ29tcGlsZXI6OkFk
ZHJlc3MocmVzdWx0R1BSLCBHZW5lcmF0b3JGcmFtZTo6bnVtYmVyT2ZDYWxsZWVMb2NhbHNPZmZz
ZXQoKSkpOworICAgIG1faml0LnN0b3JlMzIoVHJ1c3RlZEltbTMyKDApLCBKSVRDb21waWxlcjo6
QWRkcmVzcyhyZXN1bHRHUFIsIEdlbmVyYXRvckZyYW1lOjpudW1iZXJPZlNhdmVkQ2FsbGVlTG9j
YWxzT2Zmc2V0KCkpKTsKKyAgICBKU1ZhbHVlIGVtcHR5VmFsdWU7CisgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IGdlbmVyYXRvckxvY2Fsc1NpemU7ICsraSkKKyAgICAgICAgbV9qaXQuc3Rv
cmVUcnVzdGVkVmFsdWUoZW1wdHlWYWx1ZSwgSklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0R1BS
LCBHZW5lcmF0b3JGcmFtZTo6bG9jYWxPZmZzZXQoaSkpKTsKKworICAgIGFkZFNsb3dQYXRoR2Vu
ZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93UGF0aCwgdGhpcywgb3BlcmF0aW9uTmV3R2VuZXJhdG9y
RnJhbWUsIHJlc3VsdEdQUiwgc3RydWN0dXJlLCBnZW5lcmF0b3JMb2NhbHNTaXplKSk7CisKKyAg
ICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7Cit9CisKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVSZXNpemVHZW5lcmF0b3JMb2NhbHMoTm9kZSogbm9kZSkKK3sKKyAgICBTcGVjdWxh
dGVDZWxsT3BlcmFuZCBmcmFtZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgR1BSUmVnIGZy
YW1lR1BSID0gZnJhbWUuZ3ByKCk7CisgICAgbV9qaXQuc3RvcmUzMihUcnVzdGVkSW1tMzIobm9k
ZS0+Z2VuZXJhdG9yRnJhbWVMb2NhbHMoKSksIEpJVENvbXBpbGVyOjpBZGRyZXNzKGZyYW1lR1BS
LCBHZW5lcmF0b3JGcmFtZTo6bnVtYmVyT2ZTYXZlZENhbGxlZUxvY2Fsc09mZnNldCgpKSk7Cisg
ICAgbm9SZXN1bHQobm9kZSk7Cit9CisKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdU
eXBlZEFycmF5KE5vZGUqIG5vZGUpCiB7CiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCA9IG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKaW5kZXgg
NTMxMmM4ZGJlZGZlZDE4MDA1NDM4MTEzMDc5ZWViMGIwZTk5MDhhYi4uMDBhNGZhOTJhYzczZTU4
MzlhYjg1NmVhYjlmNDM2NDIwZTUyY2IxNSAxMDA3NTUKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuaApAQCAtMjI4MSw2ICsyMjgxLDggQEAgY2xhc3MgU3BlY3Vs
YXRpdmVKSVQgewogICAgIHZvaWQgY29tcGlsZVB1dEJ5VmFsRm9yRmxvYXRUeXBlZEFycmF5KEdQ
UlJlZyBiYXNlLCBHUFJSZWcgcHJvcGVydHksIE5vZGUqLCBUeXBlZEFycmF5VHlwZSk7CiAgICAg
dGVtcGxhdGUgPHR5cGVuYW1lIENsYXNzVHlwZT4gdm9pZCBjb21waWxlTmV3RnVuY3Rpb25Db21t
b24oR1BSUmVnLCBTdHJ1Y3R1cmUqLCBHUFJSZWcsIEdQUlJlZywgR1BSUmVnLCBNYWNyb0Fzc2Vt
Ymxlcjo6SnVtcExpc3QmLCBzaXplX3QsIEZ1bmN0aW9uRXhlY3V0YWJsZSosIHB0cmRpZmZfdCwg
cHRyZGlmZl90LCBwdHJkaWZmX3QpOwogICAgIHZvaWQgY29tcGlsZU5ld0Z1bmN0aW9uKE5vZGUq
KTsKKyAgICB2b2lkIGNvbXBpbGVOZXdHZW5lcmF0b3JGcmFtZShOb2RlKik7CisgICAgdm9pZCBj
b21waWxlUmVzaXplR2VuZXJhdG9yTG9jYWxzKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVGb3J3
YXJkVmFyYXJncyhOb2RlKik7CiAgICAgdm9pZCBjb21waWxlQ3JlYXRlQWN0aXZhdGlvbihOb2Rl
Kik7CiAgICAgdm9pZCBjb21waWxlQ3JlYXRlRGlyZWN0QXJndW1lbnRzKE5vZGUqKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3Bw
CmluZGV4IDEyZWI1MDQxMTgwYWMyZjUwMTY0Zjk1MWIwNThlZGI2MmQyMjgyNzAuLjQ2NmQzYWJi
MzgwYjQxYzEyMTU2YTE1ZDFiNjk2ZWU5ZjVkOTJhMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApAQCAtMzY1MCw2ICsz
NjUwLDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAg
ICAgY2VsbFJlc3VsdChyZXN1bHRQYXlsb2FkLmdwcigpLCBub2RlKTsKICAgICAgICAgYnJlYWs7
CiAgICAgfQorCisgICAgY2FzZSBOZXdHZW5lcmF0b3JGcmFtZTogeworICAgICAgICBjb21waWxl
TmV3R2VuZXJhdG9yRnJhbWUobm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICAgICAg
CiAgICAgY2FzZSBUb1RoaXM6IHsKICAgICAgICAgQVNTRVJUKG5vZGUtPmNoaWxkMSgpLnVzZUtp
bmQoKSA9PSBVbnR5cGVkVXNlKTsKQEAgLTQ3MTgsNiArNDcyMyw0MSBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BS
LCBub2RlKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQorICAgIGNhc2UgU2V0R2VuZXJhdG9yTG9j
YWw6IHsKKyAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgZnJhbWUodGhpcywgbm9kZS0+Y2hp
bGQxKCkpOworICAgICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDIo
KSk7CisKKyAgICAgICAgR1BSUmVnIGZyYW1lR1BSID0gZnJhbWUuZ3ByKCk7CisgICAgICAgIEdQ
UlJlZyB2YWx1ZVRhZ0dQUiA9IHZhbHVlLnRhZ0dQUigpOworICAgICAgICBHUFJSZWcgdmFsdWVQ
YXlsb2FkR1BSID0gdmFsdWUucGF5bG9hZEdQUigpOworICAgICAgICB1bnNpZ25lZCBnZW5lcmF0
b3JMb2NhbEluZGV4ID0gbm9kZS0+Z2VuZXJhdG9yTG9jYWxJbmRleCgpOworCisgICAgICAgIG1f
aml0LnN0b3JlMzIodmFsdWVUYWdHUFIsIEpJVENvbXBpbGVyOjpBZGRyZXNzKGZyYW1lR1BSLCBH
ZW5lcmF0b3JGcmFtZTo6bG9jYWxPZmZzZXQoZ2VuZXJhdG9yTG9jYWxJbmRleCkgKyBPQkpFQ1Rf
T0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMudGFnKSkpOworICAgICAgICBtX2ppdC5zdG9yZTMy
KHZhbHVlUGF5bG9hZEdQUiwgSklUQ29tcGlsZXI6OkFkZHJlc3MoZnJhbWVHUFIsIEdlbmVyYXRv
ckZyYW1lOjpsb2NhbE9mZnNldChnZW5lcmF0b3JMb2NhbEluZGV4KSArIE9CSkVDVF9PRkZTRVRP
RihKU1ZhbHVlLCB1LmFzQml0cy5wYXlsb2FkKSkpOworCisgICAgICAgIG5vUmVzdWx0KG5vZGUp
OworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBHZXRHZW5lcmF0b3JMb2NhbDogewor
ICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBmcmFtZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7
CisgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHRUYWcodGhpcyk7CisgICAgICAgIEdQUlRlbXBv
cmFyeSByZXN1bHRQYXlsb2FkKHRoaXMpOworCisgICAgICAgIEdQUlJlZyBmcmFtZUdQUiA9IGZy
YW1lLmdwcigpOworICAgICAgICBHUFJSZWcgcmVzdWx0VGFnR1BSID0gcmVzdWx0VGFnLmdwcigp
OworICAgICAgICBHUFJSZWcgcmVzdWx0UGF5bG9hZEdQUiA9IHJlc3VsdFBheWxvYWQuZ3ByKCk7
CisgICAgICAgIHVuc2lnbmVkIGdlbmVyYXRvckxvY2FsSW5kZXggPSBub2RlLT5nZW5lcmF0b3JM
b2NhbEluZGV4KCk7CisKKyAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjpBZGRyZXNz
KGZyYW1lR1BSLCBHZW5lcmF0b3JGcmFtZTo6bG9jYWxPZmZzZXQoZ2VuZXJhdG9yTG9jYWxJbmRl
eCkgKyBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMudGFnKSksIHJlc3VsdFRhZ0dQ
Uik7CisgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6QWRkcmVzcyhmcmFtZUdQUiwg
R2VuZXJhdG9yRnJhbWU6OmxvY2FsT2Zmc2V0KGdlbmVyYXRvckxvY2FsSW5kZXgpICsgT0JKRUNU
X09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnBheWxvYWQpKSwgcmVzdWx0UGF5bG9hZEdQUik7
CisKKyAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRUYWdHUFIsIHJlc3VsdFBheWxvYWRHUFIs
IG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBSZXNpemVHZW5lcmF0b3JM
b2NhbHM6IHsKKyAgICAgICAgY29tcGlsZVJlc2l6ZUdlbmVyYXRvckxvY2Fscyhub2RlKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgfQogICAgIGNhc2UgUHJvZmlsZVR5cGU6IHsKICAgICAgICAgSlNW
YWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBHUFJUZW1w
b3Jhcnkgc2NyYXRjaDEodGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAppbmRleCBlNzQ1Njk0MDRjMWI5Nzg0ODA2MTk3ZDE0NTQ1
Y2QxZGIyM2Q3YTVjLi41YThmY2Q0NGQxMzVhZGUxNTM3YjI3ZWRiZjBjOWEwOGI1YjMzYzRjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5j
cHAKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJERkdTbG93UGF0aEdlbmVyYXRvci5oIgog
I2luY2x1ZGUgIkRlYnVnZ2VyLmgiCiAjaW5jbHVkZSAiRGlyZWN0QXJndW1lbnRzLmgiCisjaW5j
bHVkZSAiR2VuZXJhdG9yRnJhbWUuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNpbmNs
dWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNFbnZpcm9ubWVudFJlY29yZC5oIgpAQCAt
MzY4OCw2ICszNjg5LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9k
ZSkKICAgICAgICAgY2VsbFJlc3VsdChyZXN1bHQuZ3ByKCksIG5vZGUpOwogICAgICAgICBicmVh
azsKICAgICB9CisKKyAgICBjYXNlIE5ld0dlbmVyYXRvckZyYW1lOiB7CisgICAgICAgIGNvbXBp
bGVOZXdHZW5lcmF0b3JGcmFtZShub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogICAgICAg
ICAKICAgICBjYXNlIFRvVGhpczogewogICAgICAgICBBU1NFUlQobm9kZS0+Y2hpbGQxKCkudXNl
S2luZCgpID09IFVudHlwZWRVc2UpOwpAQCAtNDcyMCw2ICs0NzI2LDM1IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgY2VsbFJlc3VsdChyZXN1bHRH
UFIsIG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9CisgICAgY2FzZSBTZXRHZW5lcmF0b3JM
b2NhbDogeworICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBmcmFtZSh0aGlzLCBub2RlLT5j
aGlsZDEoKSk7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxk
MigpKTsKKworICAgICAgICBHUFJSZWcgZnJhbWVHUFIgPSBmcmFtZS5ncHIoKTsKKyAgICAgICAg
R1BSUmVnIHZhbHVlR1BSID0gdmFsdWUuZ3ByKCk7CisgICAgICAgIHVuc2lnbmVkIGdlbmVyYXRv
ckxvY2FsSW5kZXggPSBub2RlLT5nZW5lcmF0b3JMb2NhbEluZGV4KCk7CisKKyAgICAgICAgbV9q
aXQuc3RvcmU2NCh2YWx1ZUdQUiwgSklUQ29tcGlsZXI6OkFkZHJlc3MoZnJhbWVHUFIsIEdlbmVy
YXRvckZyYW1lOjpsb2NhbE9mZnNldChnZW5lcmF0b3JMb2NhbEluZGV4KSkpOworCisgICAgICAg
IG5vUmVzdWx0KG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBHZXRHZW5l
cmF0b3JMb2NhbDogeworICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBmcmFtZSh0aGlzLCBu
b2RlLT5jaGlsZDEoKSk7CisgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CisKKyAg
ICAgICAgR1BSUmVnIGZyYW1lR1BSID0gZnJhbWUuZ3ByKCk7CisgICAgICAgIEdQUlJlZyByZXN1
bHRHUFIgPSByZXN1bHQuZ3ByKCk7CisgICAgICAgIHVuc2lnbmVkIGdlbmVyYXRvckxvY2FsSW5k
ZXggPSBub2RlLT5nZW5lcmF0b3JMb2NhbEluZGV4KCk7CisKKyAgICAgICAgbV9qaXQubG9hZDY0
KEpJVENvbXBpbGVyOjpBZGRyZXNzKGZyYW1lR1BSLCBHZW5lcmF0b3JGcmFtZTo6bG9jYWxPZmZz
ZXQoZ2VuZXJhdG9yTG9jYWxJbmRleCkpLCByZXN1bHRHUFIpOworICAgICAgICBqc1ZhbHVlUmVz
dWx0KHJlc3VsdEdQUiwgbm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIFJl
c2l6ZUdlbmVyYXRvckxvY2FsczogeworICAgICAgICBjb21waWxlUmVzaXplR2VuZXJhdG9yTG9j
YWxzKG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CiAgICAgY2FzZSBQcm9maWxlVHlwZTog
ewogICAgICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAg
ICAgICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoMSh0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAK
aW5kZXggNzJmMjIwMGNlYTEwYjk4MTBkYmE4YzdiMTlmZWZmMjRkYWE1ZGFlMy4uZDdjNzA1NjZm
YzczN2Y4OTBmMTU2YjUzNDUwOWQ5YTBjMDczOGU5YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAK
QEAgLTI4MSw2ICsyODEsMTEgQEAgY2xhc3MgU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UgOiBw
dWJsaWMgUGhhc2UgewogICAgICAgICAgICAgICAgIGNvbnNpZGVyQmFycmllcihtX25vZGUtPmNo
aWxkMSgpLCBtX25vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgY2FzZSBTZXRHZW5lcmF0b3JMb2NhbDogeworICAgICAg
ICAgICAgICAgIGNvbnNpZGVyQmFycmllcihtX25vZGUtPmNoaWxkMSgpLCBtX25vZGUtPmNoaWxk
MigpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICAKICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0y
OTYsNiArMzAxLDcgQEAgY2xhc3MgU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UgOiBwdWJsaWMg
UGhhc2UgewogICAgICAgICAgICAgY2FzZSBOZXdBcnJheUJ1ZmZlcjoKICAgICAgICAgICAgIGNh
c2UgTmV3VHlwZWRBcnJheToKICAgICAgICAgICAgIGNhc2UgTmV3UmVnZXhwOgorICAgICAgICAg
ICAgY2FzZSBOZXdHZW5lcmF0b3JGcmFtZToKICAgICAgICAgICAgIGNhc2UgTWF0ZXJpYWxpemVO
ZXdPYmplY3Q6CiAgICAgICAgICAgICBjYXNlIE1hdGVyaWFsaXplQ3JlYXRlQWN0aXZhdGlvbjoK
ICAgICAgICAgICAgIGNhc2UgTmV3U3RyaW5nT2JqZWN0OgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFzZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlLmNwcApp
bmRleCAyYzA1NTk4NDk4OTliZGY2ZmIxMTE3NTk3ZTEwNTRiZmYzNTQ2NjkzLi5lMWFlZjBiMmMz
OTNmNTYxOTQ4Y2NhNWE5NTlmMmUwNzEwODg0Mzg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlLmNwcApA
QCAtMTQ5LDYgKzE0OSw5IEBAIGNsYXNzIFN0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlIDogcHVi
bGljIFBoYXNlIHsKICAgICAgICAgICAgICAgICBjYXNlIE5ld0dlbmVyYXRvckZ1bmN0aW9uOgog
ICAgICAgICAgICAgICAgICAgICByZWdpc3RlclN0cnVjdHVyZShtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5nZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVyZSgp
KTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBOZXdH
ZW5lcmF0b3JGcmFtZToKKyAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJTdHJ1Y3R1cmUobV9n
cmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+Z2VuZXJhdG9yRnJh
bWVTdHJ1Y3R1cmUoKSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
ICAgICAgICAKICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICBi
cmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RI
ZWFwUmVwb3NpdG9yeS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0
SGVhcFJlcG9zaXRvcnkuY3BwCmluZGV4IDk3YzA3ODRiYjQyYmM5MTlkMDZjZjUyM2M0MWUwMjQ2
YTUzNTFkOTEuLjY5ZDg5ZDZhZDQyNTQ5MjNiYzNmYWIzYzdhY2EyMDg5NWM1NWU1Y2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9y
eS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBv
c2l0b3J5LmNwcApAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiRGlyZWN0QXJndW1lbnRz
LmgiCiAjaW5jbHVkZSAiRlRMQWJicmV2aWF0aW9ucy5oIgorI2luY2x1ZGUgIkdlbmVyYXRvckZy
YW1lLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiSlNFbnZpcm9ubWVu
dFJlY29yZC5oIgogI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1lRW51bWVyYXRvci5oIgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnku
aAppbmRleCA3N2U1Nzk4Njk0MGM2YWM5NmY4N2YxZjk0NWM0NjI1MTI4ODYzMGYwLi40ODg2M2Mw
YmQzMGY2NDU3NjUzMTA4YmY0NTY5YjEyYzk0MDg1OGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaApAQCAtNDcsNiAr
NDcsOCBAQAogICAgIG1hY3JvKERpcmVjdEFyZ3VtZW50c19sZW5ndGgsIERpcmVjdEFyZ3VtZW50
czo6b2Zmc2V0T2ZMZW5ndGgoKSkgXAogICAgIG1hY3JvKERpcmVjdEFyZ3VtZW50c19taW5DYXBh
Y2l0eSwgRGlyZWN0QXJndW1lbnRzOjpvZmZzZXRPZk1pbkNhcGFjaXR5KCkpIFwKICAgICBtYWNy
byhEaXJlY3RBcmd1bWVudHNfb3ZlcnJpZGVzLCBEaXJlY3RBcmd1bWVudHM6Om9mZnNldE9mT3Zl
cnJpZGVzKCkpIFwKKyAgICBtYWNybyhHZW5lcmF0b3JGcmFtZV9udW1iZXJPZkNhbGxlZUxvY2Fs
cywgR2VuZXJhdG9yRnJhbWU6Om51bWJlck9mQ2FsbGVlTG9jYWxzT2Zmc2V0KCkpIFwKKyAgICBt
YWNybyhHZW5lcmF0b3JGcmFtZV9udW1iZXJPZlNhdmVkQ2FsbGVlTG9jYWxzLCBHZW5lcmF0b3JG
cmFtZTo6bnVtYmVyT2ZTYXZlZENhbGxlZUxvY2Fsc09mZnNldCgpKSBcCiAgICAgbWFjcm8oR2V0
dGVyU2V0dGVyX2dldHRlciwgR2V0dGVyU2V0dGVyOjpvZmZzZXRPZkdldHRlcigpKSBcCiAgICAg
bWFjcm8oR2V0dGVyU2V0dGVyX3NldHRlciwgR2V0dGVyU2V0dGVyOjpvZmZzZXRPZlNldHRlcigp
KSBcCiAgICAgbWFjcm8oSlNBcnJheUJ1ZmZlclZpZXdfbGVuZ3RoLCBKU0FycmF5QnVmZmVyVmll
dzo6b2Zmc2V0T2ZMZW5ndGgoKSkgXApAQCAtOTEsNiArOTMsNyBAQAogCiAjZGVmaW5lIEZPUl9F
QUNIX0lOREVYRURfQUJTVFJBQ1RfSEVBUChtYWNybykgXAogICAgIG1hY3JvKERpcmVjdEFyZ3Vt
ZW50c19zdG9yYWdlLCBEaXJlY3RBcmd1bWVudHM6OnN0b3JhZ2VPZmZzZXQoKSwgc2l6ZW9mKEVu
Y29kZWRKU1ZhbHVlKSkgXAorICAgIG1hY3JvKEdlbmVyYXRvckZyYW1lX2NhbGxlZUxvY2Fscywg
R2VuZXJhdG9yRnJhbWU6Om9mZnNldE9mTG9jYWxzKCksIHNpemVvZihXcml0ZUJhcnJpZXI8VW5r
bm93bj4pKSBcCiAgICAgbWFjcm8oSlNFbnZpcm9ubWVudFJlY29yZF92YXJpYWJsZXMsIEpTRW52
aXJvbm1lbnRSZWNvcmQ6Om9mZnNldE9mVmFyaWFibGVzKCksIHNpemVvZihFbmNvZGVkSlNWYWx1
ZSkpIFwKICAgICBtYWNybyhKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3JfY2FjaGVkUHJvcGVydHlO
YW1lc1ZlY3RvckNvbnRlbnRzLCAwLCBzaXplb2YoV3JpdGVCYXJyaWVyPEpTU3RyaW5nPikpIFwK
ICAgICBtYWNybyhKU1JvcGVTdHJpbmdfZmliZXJzLCBKU1JvcGVTdHJpbmc6Om9mZnNldE9mRmli
ZXJzKCksIHNpemVvZihXcml0ZUJhcnJpZXI8SlNTdHJpbmc+KSkgXApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCmluZGV4IGQyYTQ5MGMyYTY3ZTZkYjhi
OWE1YTc5NjY0ZTU2NWUzZDZkOTUxZGMuLjBlMWRmZTg3NWUxMGE1YjU2NTU2ZmE5ZGQ1YmZkYjNl
NjkwZjgzODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJp
bGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGll
cy5jcHAKQEAgLTcyLDYgKzcyLDcgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxl
KE5vZGUqIG5vZGUpCiAgICAgY2FzZSBOZXdPYmplY3Q6CiAgICAgY2FzZSBOZXdBcnJheToKICAg
ICBjYXNlIE5ld0FycmF5QnVmZmVyOgorICAgIGNhc2UgTmV3R2VuZXJhdG9yRnJhbWU6CiAgICAg
Y2FzZSBHZXRCeU9mZnNldDoKICAgICBjYXNlIEdldEdldHRlclNldHRlckJ5T2Zmc2V0OgogICAg
IGNhc2UgR2V0R2V0dGVyOgpAQCAtMjE2LDYgKzIxNyw5IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2
ZWwgY2FuQ29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgUHV0U2V0dGVyQnlWYWw6CiAgICAg
Y2FzZSBDb3B5UmVzdDoKICAgICBjYXNlIEdldFJlc3RMZW5ndGg6CisgICAgY2FzZSBTZXRHZW5l
cmF0b3JMb2NhbDoKKyAgICBjYXNlIEdldEdlbmVyYXRvckxvY2FsOgorICAgIGNhc2UgUmVzaXpl
R2VuZXJhdG9yTG9jYWxzOgogICAgICAgICAvLyBUaGVzZSBhcmUgT0suCiAgICAgICAgIGJyZWFr
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9M
TFZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3Bw
CmluZGV4IDNjMDA4ZmRiYmI1MGM1NmE5NzhjYTZlMGQ3NDM4ODJiZmQyNTNjYjkuLmE1YWUxNjg0
NzY4OWIyMzkwNzQ5NzQ5YzBiNzg4OGQxNDgxZGI2YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCkBAIC01Myw2ICs1Myw3IEBACiAjaW5j
bHVkZSAiRlRMUGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZS5oIgogI2luY2x1ZGUgIkZUTFRodW5r
cy5oIgogI2luY2x1ZGUgIkZUTFdlaWdodGVkVGFyZ2V0LmgiCisjaW5jbHVkZSAiR2VuZXJhdG9y
RnJhbWUuaCIKICNpbmNsdWRlICJKSVRBZGRHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJKSVRCaXRB
bmRHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJKSVRCaXRPckdlbmVyYXRvci5oIgpAQCAtODM5LDYg
Kzg0MCw5IEBAIGNsYXNzIExvd2VyREZHVG9MTFZNIHsKICAgICAgICAgY2FzZSBOZXdBcnJheVdp
dGhTaXplOgogICAgICAgICAgICAgY29tcGlsZU5ld0FycmF5V2l0aFNpemUoKTsKICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIE5ld0dlbmVyYXRvckZyYW1lOgorICAgICAgICAgICAg
Y29tcGlsZU5ld0dlbmVyYXRvckZyYW1lKCk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldDoKICAgICAgICAgICAgIGNvbXBpbGVHZXRUeXBl
ZEFycmF5Qnl0ZU9mZnNldCgpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xMDcxLDYgKzEwNzUs
MTUgQEAgY2xhc3MgTG93ZXJERkdUb0xMVk0gewogICAgICAgICBjYXNlIEdldFJlc3RMZW5ndGg6
CiAgICAgICAgICAgICBjb21waWxlR2V0UmVzdExlbmd0aCgpOwogICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgUmVzaXplR2VuZXJhdG9yTG9jYWxzOgorICAgICAgICAgICAgY29tcGls
ZVJlc2l6ZUdlbmVyYXRvckxvY2FscygpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgU2V0R2VuZXJhdG9yTG9jYWw6CisgICAgICAgICAgICBjb21waWxlU2V0R2VuZXJhdG9yTG9j
YWwoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdldEdlbmVyYXRvckxvY2Fs
OgorICAgICAgICAgICAgY29tcGlsZUdldEdlbmVyYXRvckxvY2FsKCk7CisgICAgICAgICAgICBi
cmVhazsKIAogICAgICAgICBjYXNlIFBoYW50b21Mb2NhbDoKICAgICAgICAgY2FzZSBMb29wSGlu
dDoKQEAgLTM5MTYsNiArMzkyOSwyOCBAQCBjbGFzcyBMb3dlckRGR1RvTExWTSB7CiAgICAgICAg
IG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOwogICAgICAgICBzZXRJbnQz
MihtX291dC5waGkobV9vdXQuaW50MzIsIHplcm9MZW5ndGhSZXN1bHQsIG5vblplcm9MZW5ndGhS
ZXN1bHQpKTsKICAgICB9CisKKyAgICB2b2lkIGNvbXBpbGVSZXNpemVHZW5lcmF0b3JMb2NhbHMo
KQorICAgIHsKKyAgICAgICAgTFZhbHVlIGZyYW1lID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMSgp
KTsKKyAgICAgICAgbV9vdXQuc3RvcmUzMihtX291dC5jb25zdEludDMyKG1fbm9kZS0+Z2VuZXJh
dG9yRnJhbWVMb2NhbHMoKSksIGZyYW1lLCBtX2hlYXBzLkdlbmVyYXRvckZyYW1lX251bWJlck9m
U2F2ZWRDYWxsZWVMb2NhbHMpOworICAgIH0KKworICAgIHZvaWQgY29tcGlsZVNldEdlbmVyYXRv
ckxvY2FsKCkKKyAgICB7CisgICAgICAgIG1fb3V0LnN0b3JlNjQoCisgICAgICAgICAgICBsb3dK
U1ZhbHVlKG1fbm9kZS0+Y2hpbGQyKCkpLAorICAgICAgICAgICAgbG93Q2VsbChtX25vZGUtPmNo
aWxkMSgpKSwKKyAgICAgICAgICAgIG1faGVhcHMuR2VuZXJhdG9yRnJhbWVfY2FsbGVlTG9jYWxz
W21fbm9kZS0+Z2VuZXJhdG9yTG9jYWxJbmRleCgpXSk7CisgICAgfQorCisgICAgdm9pZCBjb21w
aWxlR2V0R2VuZXJhdG9yTG9jYWwoKQorICAgIHsKKyAgICAgICAgc2V0SlNWYWx1ZSgKKyAgICAg
ICAgICAgIG1fb3V0LmxvYWQ2NCgKKyAgICAgICAgICAgICAgICBsb3dDZWxsKG1fbm9kZS0+Y2hp
bGQxKCkpLAorICAgICAgICAgICAgICAgIG1faGVhcHMuR2VuZXJhdG9yRnJhbWVfY2FsbGVlTG9j
YWxzW21fbm9kZS0+Z2VuZXJhdG9yTG9jYWxJbmRleCgpXSkpOworICAgIH0KICAgICAKICAgICB2
b2lkIGNvbXBpbGVOZXdPYmplY3QoKQogICAgIHsKQEAgLTQxNTAsNiArNDE4NSw0MiBAQCBjbGFz
cyBMb3dlckRGR1RvTExWTSB7CiAgICAgICAgICAgICBtX291dC5jb25zdEludFB0cihzdHJ1Y3R1
cmUpKTsKICAgICAgICAgc2V0SlNWYWx1ZSh2bUNhbGwobV9vdXQuaW50NjQsIG1fb3V0Lm9wZXJh
dGlvbihvcGVyYXRpb25OZXdBcnJheVdpdGhTaXplKSwgbV9jYWxsRnJhbWUsIHN0cnVjdHVyZVZh
bHVlLCBwdWJsaWNMZW5ndGgpKTsKICAgICB9CisKKyAgICB2b2lkIGNvbXBpbGVOZXdHZW5lcmF0
b3JGcmFtZSgpCisgICAgeworICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0g
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAgICAg
ICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdsb2JhbE9iamVjdC0+Z2VuZXJhdG9yRnJhbWVTdHJ1
Y3R1cmUoKTsKKyAgICAgICAgdW5zaWduZWQgZ2VuZXJhdG9yTG9jYWxzU2l6ZSA9IG1fbm9kZS0+
Z2VuZXJhdG9yTG9jYWxzU2l6ZSgpOworCisgICAgICAgIExCYXNpY0Jsb2NrIHNsb3dQYXRoID0g
RlRMX05FV19CTE9DSyhtX291dCwgKCJOZXdHZW5lcmF0b3JGcmFtZSBzbG93IHBhdGgiKSk7Cisg
ICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgi
TmV3R2VuZXJhdG9yRnJhbWUgY29udGludWF0aW9uIikpOworCisgICAgICAgIExCYXNpY0Jsb2Nr
IGxhc3ROZXh0ID0gbV9vdXQuaW5zZXJ0TmV3QmxvY2tzQmVmb3JlKHNsb3dQYXRoKTsKKyAgICAg
ICAgTFZhbHVlIGZhc3RPYmplY3QgPSBhbGxvY2F0ZU9iamVjdDxHZW5lcmF0b3JGcmFtZT4oR2Vu
ZXJhdG9yRnJhbWU6OmFsbG9jYXRpb25TaXplRm9yTG9jYWxzKGdlbmVyYXRvckxvY2Fsc1NpemUp
LCBzdHJ1Y3R1cmUsIG1fb3V0LmludFB0clplcm8sIHNsb3dQYXRoKTsKKyAgICAgICAgbV9vdXQu
c3RvcmUzMihtX291dC5jb25zdEludDMyKGdlbmVyYXRvckxvY2Fsc1NpemUpLCBmYXN0T2JqZWN0
LCBtX2hlYXBzLkdlbmVyYXRvckZyYW1lX251bWJlck9mQ2FsbGVlTG9jYWxzKTsKKyAgICAgICAg
bV9vdXQuc3RvcmUzMihtX291dC5jb25zdEludDMyKDApLCBmYXN0T2JqZWN0LCBtX2hlYXBzLkdl
bmVyYXRvckZyYW1lX251bWJlck9mU2F2ZWRDYWxsZWVMb2NhbHMpOworCisgICAgICAgIEpTVmFs
dWUgZW1wdHlWYWx1ZTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGdlbmVyYXRv
ckxvY2Fsc1NpemU7ICsraSkKKyAgICAgICAgICAgIG1fb3V0LnN0b3JlNjQobV9vdXQuY29uc3RJ
bnQ2NChKU1ZhbHVlOjplbmNvZGUoZW1wdHlWYWx1ZSkpLCBmYXN0T2JqZWN0LCBtX2hlYXBzLkdl
bmVyYXRvckZyYW1lX2NhbGxlZUxvY2Fsc1tpXSk7CisKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sg
ZmFzdFJlc3VsdCA9IG1fb3V0LmFuY2hvcihmYXN0T2JqZWN0KTsKKyAgICAgICAgbV9vdXQuanVt
cChjb250aW51YXRpb24pOworCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKHNsb3dQYXRoLCBjb250
aW51YXRpb24pOworICAgICAgICBWZWN0b3I8TFZhbHVlPiBzbG93UGF0aEFyZ3VtZW50czsKKyAg
ICAgICAgTFZhbHVlIGNhbGxSZXN1bHQgPSBsYXp5U2xvd1BhdGgoCisgICAgICAgICAgICBbPV0g
KGNvbnN0IFZlY3RvcjxMb2NhdGlvbj4mIGxvY2F0aW9ucykgLT4gUmVmUHRyPExhenlTbG93UGF0
aDo6R2VuZXJhdG9yPiB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUxhenlDYWxsR2Vu
ZXJhdG9yKAorICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb25OZXdHZW5lcmF0b3JGcmFtZSwK
KyAgICAgICAgICAgICAgICAgICAgbG9jYXRpb25zWzBdLmRpcmVjdEdQUigpLCBDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIo
Z2VuZXJhdG9yTG9jYWxzU2l6ZSkpOworICAgICAgICAgICAgfSk7CisgICAgICAgIFZhbHVlRnJv
bUJsb2NrIHNsb3dSZXN1bHQgPSBtX291dC5hbmNob3IoY2FsbFJlc3VsdCk7CisgICAgICAgIG1f
b3V0Lmp1bXAoY29udGludWF0aW9uKTsKKworICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51
YXRpb24sIGxhc3ROZXh0KTsKKyAgICAgICAgc2V0SlNWYWx1ZShtX291dC5waGkobV9vdXQuaW50
UHRyLCBmYXN0UmVzdWx0LCBzbG93UmVzdWx0KSk7CisgICAgfQogICAgIAogICAgIHZvaWQgY29t
cGlsZUFsbG9jYXRlUHJvcGVydHlTdG9yYWdlKCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VC5jcHAKaW5kZXggYTNiZGZhN2NkNWQwZjU3MjQ3ZjFiZThjNDBiMjUxMGQyOWQ4MDBmZi4uMGI5
ZmQ4ZDM0M2ZkOGNlYjI3YWFmN2EzOTQwMDcwNDY0NzRjMjY4YSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklULmNwcApAQCAtMjE2LDcgKzIxNiw5IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1h
aW5QYXNzKCkKICAgICAgICAgREVGSU5FX09QKG9wX2NoZWNrX3RkeikKICAgICAgICAgREVGSU5F
X09QKG9wX2Fzc2VydCkKICAgICAgICAgREVGSU5FX09QKG9wX3NhdmUpCi0gICAgICAgIERFRklO
RV9PUChvcF9yZXN1bWUpCisgICAgICAgIERFRklORV9PUChvcF9uZXdfZ2VuZXJhdG9yX2ZyYW1l
KQorICAgICAgICBERUZJTkVfT1Aob3BfcmVzdW1lX2Zyb21fZ2VuZXJhdG9yX2ZyYW1lKQorICAg
ICAgICBERUZJTkVfT1Aob3BfY2xlYXJfZ2VuZXJhdG9yX2ZyYW1lKQogICAgICAgICBERUZJTkVf
T1Aob3BfZGVidWcpCiAgICAgICAgIERFRklORV9PUChvcF9kZWxfYnlfaWQpCiAgICAgICAgIERF
RklORV9PUChvcF9kaXYpCkBAIC0yODksNiArMjkxLDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21w
aWxlTWFpblBhc3MoKQogICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2dldHRlcl9zZXR0ZXJfYnlf
aWQpCiAgICAgICAgIERFRklORV9PUChvcF9wdXRfZ2V0dGVyX2J5X3ZhbCkKICAgICAgICAgREVG
SU5FX09QKG9wX3B1dF9zZXR0ZXJfYnlfdmFsKQorICAgICAgICBERUZJTkVfT1Aob3Bfbm9wKQog
CiAgICAgICAgIERFRklORV9PUChvcF9yZXQpCiAgICAgICAgIERFRklORV9PUChvcF9yc2hpZnQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVQuaAppbmRleCBkZjdiM2RjNWU4OTIwZWU0ZWY5MmJjYWNiYWVm
ZjFiNGMwMGQ5MzY5Li5lYzY4MWQwOTkwZWYwYzJhMWIwYzQxZDU0MTJiYmNlMGMwZDM5MWRlIDEw
MDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklULmgKQEAgLTQ5NSw3ICs0OTUsOSBAQAogICAgICAgICB2b2lk
IGVtaXRfb3BfY2hlY2tfdGR6KEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9h
c3NlcnQoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX3NhdmUoSW5zdHJ1Y3Rp
b24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX3Jlc3VtZShJbnN0cnVjdGlvbiopOworICAgICAg
ICB2b2lkIGVtaXRfb3BfcmVzdW1lX2Zyb21fZ2VuZXJhdG9yX2ZyYW1lKEluc3RydWN0aW9uKik7
CisgICAgICAgIHZvaWQgZW1pdF9vcF9jbGVhcl9nZW5lcmF0b3JfZnJhbWUoSW5zdHJ1Y3Rpb24q
KTsKKyAgICAgICAgdm9pZCBlbWl0X29wX25ld19nZW5lcmF0b3JfZnJhbWUoSW5zdHJ1Y3Rpb24q
KTsKICAgICAgICAgdm9pZCBlbWl0X29wX2RlYnVnKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZv
aWQgZW1pdF9vcF9kZWxfYnlfaWQoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29w
X2RpdihJbnN0cnVjdGlvbiopOwpAQCAtNTk1LDYgKzU5Nyw3IEBACiAgICAgICAgIHZvaWQgZW1p
dF9vcF9lbnVtZXJhdG9yX3N0cnVjdHVyZV9wbmFtZShJbnN0cnVjdGlvbiopOwogICAgICAgICB2
b2lkIGVtaXRfb3BfZW51bWVyYXRvcl9nZW5lcmljX3BuYW1lKEluc3RydWN0aW9uKik7CiAgICAg
ICAgIHZvaWQgZW1pdF9vcF90b19pbmRleF9zdHJpbmcoSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAg
dm9pZCBlbWl0X29wX25vcChJbnN0cnVjdGlvbiopOwogCiAgICAgICAgIHZvaWQgZW1pdFNsb3df
b3BfYWRkKEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwog
ICAgICAgICB2b2lkIGVtaXRTbG93X29wX2JpdGFuZChJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93
Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3Bjb2Rlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29k
ZXMuY3BwCmluZGV4IDczOGNiNjNmZWQ5MWI0OTg1NWQ1ZDAzM2Q0NjMzNDVmZGQ0NzZkOWIuLjRh
NmE4OGM4NGY1NzVmMTRiYWI2MDM5MzkwZjQ2ODE5NGVmNzM3MjYgMTAwNzU1Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkNv
cGllZFNwYWNlSW5saW5lcy5oIgogI2luY2x1ZGUgIkRlYnVnZ2VyLmgiCiAjaW5jbHVkZSAiRXhj
ZXB0aW9uLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yRnJhbWUuaCIKICNpbmNsdWRlICJIZWFwLmgi
CiAjaW5jbHVkZSAiSklUSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKQEAgLTg5Myw2
ICs4OTQsMjMgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3RvX3N0cmluZyhJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2UKICAgICBzbG93UGF0aENhbGwuY2Fs
bCgpOwogfQogCit2b2lkIEpJVDo6ZW1pdF9vcF9yZXN1bWVfZnJvbV9nZW5lcmF0b3JfZnJhbWUo
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBpbnQgZHN0ID0gY3VycmVu
dEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKKyAgICBpbnQgZnJhbWUgPSBjdXJyZW50SW5zdHJ1
Y3Rpb25bMl0udS5vcGVyYW5kOworICAgIHVuc2lnbmVkIGluZGV4ID0gY3VycmVudEluc3RydWN0
aW9uWzNdLnUudW5zaWduZWRWYWx1ZTsKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGZyYW1l
LCByZWdUMSk7CisgICAgbG9hZDY0KEFkZHJlc3MocmVnVDEsIEdlbmVyYXRvckZyYW1lOjpsb2Nh
bE9mZnNldChpbmRleCkpLCByZWdUMCk7CisgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3Qp
OworfQorCit2b2lkIEpJVDo6ZW1pdF9vcF9jbGVhcl9nZW5lcmF0b3JfZnJhbWUoSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBpbnQgZnJhbWUgPSBjdXJyZW50SW5zdHJ1
Y3Rpb25bMV0udS5vcGVyYW5kOworICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoZnJhbWUsIHJl
Z1QxKTsKKyAgICBzdG9yZTMyKFRydXN0ZWRJbW0zMigwKSwgQWRkcmVzcyhyZWdUMSwgR2VuZXJh
dG9yRnJhbWU6Om51bWJlck9mU2F2ZWRDYWxsZWVMb2NhbHNPZmZzZXQoKSkpOworfQorCiAjZW5k
aWYgLy8gVVNFKEpTVkFMVUU2NCkKIAogdm9pZCBKSVQ6OmVtaXRfb3BfbG9vcF9oaW50KEluc3Ry
dWN0aW9uKikKQEAgLTE0MzUsMTIgKzE0NTMsMTYgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bfc2F2ZShJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7
CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX3Jlc3VtZShJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfbmV3X2dlbmVyYXRvcl9mcmFtZShJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQogewotICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENh
bGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfcmVzdW1lKTsKKyAgICBKSVRT
bG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19w
YXRoX25ld19nZW5lcmF0b3JfZnJhbWUpOwogICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CiB9CiAK
K3ZvaWQgSklUOjplbWl0X29wX25vcChJbnN0cnVjdGlvbiopCit7Cit9CisKIH0gLy8gbmFtZXNw
YWNlIEpTQwogCiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAppbmRleCBjMzI2ZmYzZTAxZTVhNDI0M2U3Yjc4YmVl
ODUyY2ZiNzk3ZDM5MmVlLi5kNDJlODVkOWY1N2NjOGQ1MGI5YjI3YjM5MDc3MmNjMjUxNzAzOTVi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCkBA
IC0xMzI4LDYgKzEzMjgsMjQgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHJvZmlsZV90eXBlKEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAganVtcFRvRW5kLmxpbmsodGhpcyk7CiB9
CiAKK3ZvaWQgSklUOjplbWl0X29wX3Jlc3VtZV9mcm9tX2dlbmVyYXRvcl9mcmFtZShJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIGludCBkc3QgPSBjdXJyZW50SW5zdHJ1
Y3Rpb25bMV0udS5vcGVyYW5kOworICAgIGludCBmcmFtZSA9IGN1cnJlbnRJbnN0cnVjdGlvblsy
XS51Lm9wZXJhbmQ7CisgICAgdW5zaWduZWQgaW5kZXggPSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10u
dS51bnNpZ25lZFZhbHVlOworICAgIGVtaXRMb2FkUGF5bG9hZChmcmFtZSwgcmVnVDIpOworICAg
IGxvYWQzMihBZGRyZXNzKHJlZ1QyLCBHZW5lcmF0b3JGcmFtZTo6bG9jYWxPZmZzZXQoaW5kZXgp
ICsgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnRhZykpLCByZWdUMSk7CisgICAg
bG9hZDMyKEFkZHJlc3MocmVnVDIsIEdlbmVyYXRvckZyYW1lOjpsb2NhbE9mZnNldChpbmRleCkg
KyBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMucGF5bG9hZCkpLCByZWdUMCk7Cisg
ICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QsIEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdUMCkp
OworfQorCit2b2lkIEpJVDo6ZW1pdF9vcF9jbGVhcl9nZW5lcmF0b3JfZnJhbWUoSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBpbnQgZnJhbWUgPSBjdXJyZW50SW5zdHJ1
Y3Rpb25bMV0udS5vcGVyYW5kOworICAgIGVtaXRMb2FkUGF5bG9hZChmcmFtZSwgcmVnVDEpOwor
ICAgIHN0b3JlMzIoVHJ1c3RlZEltbTMyKDApLCBBZGRyZXNzKHJlZ1QxLCBHZW5lcmF0b3JGcmFt
ZTo6bnVtYmVyT2ZTYXZlZENhbGxlZUxvY2Fsc09mZnNldCgpKSk7Cit9CisKIH0gLy8gbmFtZXNw
YWNlIEpTQwogCiAjZW5kaWYgLy8gVVNFKEpTVkFMVUUzMl82NCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKaW5kZXggMmI0
ZTYxOTg2ZDMxMmFjOWU0Zjg3MzczY2U3YWEwYjlmZDBjZTc1YS4uYWZlMDk2ODQ4OGY0NmQxNjc1
YzkxN2VjYjJiNjIwYzAwNTYxMjI0NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNp
bmNsdWRlICJEaXJlY3RBcmd1bWVudHMuaCIKICNpbmNsdWRlICJFeGNlcHRpb24uaCIKICNpbmNs
dWRlICJFeGVjdXRhYmxlLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yRnJhbWUuaCIKICNpbmNsdWRl
ICJIZWFwLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKU0FycmF5Lmgi
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlci5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
ci5hc20KaW5kZXggY2Q0Y2U5MDYzYjE5NTc1YTk1N2UzY2EzZTIyYmU1NzkxNWJkYjU5YS4uYjky
MGE2Y2U2NmNmYmUxMzUzMzRkYTAxZjY5ZDU4ZGU0NjYwY2U0ZSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQpAQCAtMTY1LDYg
KzE2NSw3IEBAIGNvbnN0IFNsb3RTaXplID0gOAogCiBjb25zdCBKU0Vudmlyb25tZW50UmVjb3Jk
X3ZhcmlhYmxlcyA9IChzaXplb2YgSlNFbnZpcm9ubWVudFJlY29yZCArIFNsb3RTaXplIC0gMSkg
JiB+KFNsb3RTaXplIC0gMSkKIGNvbnN0IERpcmVjdEFyZ3VtZW50c19zdG9yYWdlID0gKHNpemVv
ZiBEaXJlY3RBcmd1bWVudHMgKyBTbG90U2l6ZSAtIDEpICYgfihTbG90U2l6ZSAtIDEpCitjb25z
dCBHZW5lcmF0b3JGcmFtZV9jYWxsZWVMb2NhbHMgPSAoc2l6ZW9mIEdlbmVyYXRvckZyYW1lICsg
U2xvdFNpemUgLSAxKSAmIH4oU2xvdFNpemUgLSAxKQogCiBjb25zdCBTdGFja0FsaWdubWVudCA9
IDE2CiBjb25zdCBTdGFja0FsaWdubWVudFNsb3RzID0gMgpAQCAtMTI1Niw2ICsxMjU3LDEyIEBA
IF9sbGludF9vcF9uZXdfcmVnZXhwOgogICAgIGRpc3BhdGNoKDMpCiAKIAorX2xsaW50X29wX25l
d19nZW5lcmF0b3JfZnJhbWU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxTbG93UGF0
aChfc2xvd19wYXRoX25ld19nZW5lcmF0b3JfZnJhbWUpCisgICAgZGlzcGF0Y2goMykKKworCiBf
bGxpbnRfb3BfbGVzczoKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgY2FsbFNsb3dQYXRoKF9z
bG93X3BhdGhfbGVzcykKQEAgLTE1OTUsMTAgKzE2MDIsMTYgQEAgX2xsaW50X29wX3NhdmU6CiAg
ICAgZGlzcGF0Y2goNCkKIAogCi1fbGxpbnRfb3BfcmVzdW1lOgorX2xsaW50X29wX3NhdmVfaGlu
dDoKICAgICB0cmFjZUV4ZWN1dGlvbigpCi0gICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfcmVz
dW1lKQotICAgIGRpc3BhdGNoKDMpCisgICAgbm90U3VwcG9ydGVkKCkKKyAgICBkaXNwYXRjaCg0
KQorCisKK19sbGludF9vcF9yZXN1bWVfaGludDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
bm90U3VwcG9ydGVkKCkKKyAgICBkaXNwYXRjaCg0KQogCiAKIF9sbGludF9vcF9jcmVhdGVfbGV4
aWNhbF9lbnZpcm9ubWVudDoKQEAgLTE3MDgsNiArMTcyMSwxMCBAQCBfbGxpbnRfb3BfY29weV9y
ZXN0OgogICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRoX2NvcHlfcmVzdCkKICAgICBkaXNwYXRj
aCg0KQogCitfbGxpbnRfb3Bfbm9wOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBkaXNwYXRj
aCgxKQorCiAKICMgTGFzdGx5LCBtYWtlIHN1cmUgdGhhdCB3ZSBjYW4gbGluayBldmVuIHRob3Vn
aCB3ZSBkb24ndCBzdXBwb3J0IGFsbCBvcGNvZGVzLgogIyBUaGVzZSBvcGNvZGVzIHNob3VsZCBu
ZXZlciBhcmlzZSB3aGVuIHVzaW5nIExMSW50IG9yIGVpdGhlciBKSVQuIFdlIGFzc2VydApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIz
Ml82NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
cjMyXzY0LmFzbQppbmRleCBkMDZiNGQzOTZkMzFjZDFiYzUyYzM3MTFlMTMzZmJhZWRjYzJjMDRl
Li4wY2VmN2UxNDhmMTI3ZDdlYzRiM2M3YzdlMzA2MmM0MWYxNDgyNWMzIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0
LmFzbQpAQCAtMjQ2MCwzICsyNDYwLDIwIEBAIF9sbGludF9vcF9nZXRfcmVzdF9sZW5ndGg6CiAg
ICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCiAgICAgc3RvcmVpIEludDMy
VGFnLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KICAgICBkaXNwYXRjaCgzKQorCitfbGxpbnRfb3Bf
Y2xlYXJfZ2VuZXJhdG9yX2ZyYW1lOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkVmFy
aWFibGUoMSwgdDIsIHQxLCB0MCkKKyAgICBzdG9yZWkgMCwgR2VuZXJhdG9yRnJhbWU6Om1fbnVt
YmVyT2ZTYXZlZENhbGxlZUxvY2Fsc1t0MF0KKyAgICBkaXNwYXRjaCgyKQorCitfbGxpbnRfb3Bf
cmVzdW1lX2Zyb21fZ2VuZXJhdG9yX2ZyYW1lOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBs
b2FkVmFyaWFibGUoMiwgdDIsIHQxLCB0MCkKKyAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMywg
dDMpCisgICAgbG9hZHAgR2VuZXJhdG9yRnJhbWVfY2FsbGVlTG9jYWxzICsgVGFnT2Zmc2V0W3Qw
LCB0MywgOF0sIHQxCisgICAgbG9hZHAgR2VuZXJhdG9yRnJhbWVfY2FsbGVlTG9jYWxzICsgUGF5
bG9hZE9mZnNldFt0MCwgdDMsIDhdLCB0MgorICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigxLCB0
MCkKKyAgICBzdG9yZWkgdDEsIFRhZ09mZnNldFtjZnIsIHQwLCA4XQorICAgIHN0b3JlaSB0Miwg
UGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQorICAgIGRpc3BhdGNoKDQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbSBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCmluZGV4
IDg1MTczYmM4MjYyMTQ2YjBlMGQxZTAxOTJiNzA2MDI4YmJkOTA2ODMuLjQ5MmM2M2MyNWNkZmFl
MzJmZjllZWI4YTRkMTk3ZTU4NTUzMTlhYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCkBAIC0yMzIxLDMgKzIzMjEs
MTggQEAgX2xsaW50X29wX2dldF9yZXN0X2xlbmd0aDoKICAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rp
b24oMSwgdDEpCiAgICAgc3RvcmVxIHQwLCBbY2ZyLCB0MSwgOF0KICAgICBkaXNwYXRjaCgzKQor
CitfbGxpbnRfb3BfY2xlYXJfZ2VuZXJhdG9yX2ZyYW1lOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBsb2FkVmFyaWFibGUoMSwgdDApCisgICAgc3RvcmVpIDAsIEdlbmVyYXRvckZyYW1lOjpt
X251bWJlck9mU2F2ZWRDYWxsZWVMb2NhbHNbdDBdCisgICAgZGlzcGF0Y2goMikKKworX2xsaW50
X29wX3Jlc3VtZV9mcm9tX2dlbmVyYXRvcl9mcmFtZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgbG9hZFZhcmlhYmxlKDIsIHQwKQorICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigzLCB0MSkK
KyAgICBsb2FkcSBHZW5lcmF0b3JGcmFtZV9jYWxsZWVMb2NhbHNbdDAsIHQxLCA4XSwgdDAKKyAg
ICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMSwgdDEpCisgICAgc3RvcmVxIHQwLCBbY2ZyLCB0MSwg
OF0KKyAgICBkaXNwYXRjaCg0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9QYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3Bw
CmluZGV4IDhkMzcwNjM0NTEyOGU5ZGY5ZGFjMzI1N2Y3YzVmNGU1YWIzYTljMzQuLmU4NjA1M2I0
ODJhOGQzNmIzMzVjMDhiYTdkMzY3NTZkM2I3OTZhZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1BhcnNlci5jcHAKQEAgLTI1MCw5ICsyNTAsMTAgQEAKICAgICBib29sIGlzQXJyb3dG
dW5jdGlvbkJvZHlFeHByZXNzaW9uID0gZmFsc2U7CiAgICAgaWYgKG1fbGV4ZXItPmlzUmVwYXJz
aW5nRnVuY3Rpb24oKSkgewogICAgICAgICBQYXJzZXJGdW5jdGlvbkluZm88QVNUQnVpbGRlcj4g
ZnVuY3Rpb25JbmZvOwotICAgICAgICBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6
R2VuZXJhdG9yQm9keU1vZGUpCi0gICAgICAgICAgICBmdW5jdGlvbkluZm8ucGFyYW1ldGVycyA9
IGNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMoY29udGV4dCk7Ci0gICAgICAgIGVsc2UKKyAgICAg
ICAgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckJvZHlNb2RlKSB7
CisgICAgICAgICAgICB1bnNpZ25lZCBwYXJhbWV0ZXJDb3VudCA9IDA7CisgICAgICAgICAgICBm
dW5jdGlvbkluZm8ucGFyYW1ldGVycyA9IGNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMoY29udGV4
dCwgcGFyYW1ldGVyQ291bnQpOworICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIHBhcnNlRnVu
Y3Rpb25QYXJhbWV0ZXJzKGNvbnRleHQsIHBhcnNlTW9kZSwgZnVuY3Rpb25JbmZvKTsKICAgICAg
ICAgbV9wYXJhbWV0ZXJzID0gZnVuY3Rpb25JbmZvLnBhcmFtZXRlcnM7CiAKQEAgLTQ4NSwxMCAr
NDg2LDkgQEAKIAogICAgIFBhcnNlckZ1bmN0aW9uSW5mbzxUcmVlQnVpbGRlcj4gaW5mbzsKICAg
ICBpbmZvLm5hbWUgPSAmbV92bS0+cHJvcGVydHlOYW1lcy0+bnVsbElkZW50aWZpZXI7Ci0gICAg
aW5mby5wYXJhbWV0ZXJzID0gY3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhjb250ZXh0KTsKKyAg
ICBpbmZvLnBhcmFtZXRlcnMgPSBjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKGNvbnRleHQsIGlu
Zm8ucGFyYW1ldGVyQ291bnQpOwogICAgIGluZm8uc3RhcnRPZmZzZXQgPSBwYXJhbWV0ZXJzU3Rh
cnQ7CiAgICAgaW5mby5zdGFydExpbmUgPSB0b2tlbkxpbmUoKTsKLSAgICBpbmZvLnBhcmFtZXRl
ckNvdW50ID0gNDsgLy8gZ2VuZXJhdG9yLCBzdGF0ZSwgdmFsdWUsIHJlc3VtZSBtb2RlCiAKICAg
ICB7CiAgICAgICAgIEF1dG9Qb3BTY29wZVJlZiBnZW5lcmF0b3JCb2R5U2NvcGUodGhpcywgcHVz
aFNjb3BlKCkpOwpAQCAtMTc4MSwzMiArMTc4MSwzMCBAQCBzdGF0aWMgY29uc3QgY2hhciogc3Ry
aW5nRm9yRnVuY3Rpb25Nb2RlKFNvdXJjZVBhcnNlTW9kZSBtb2RlKQogfQogCiB0ZW1wbGF0ZSA8
dHlwZW5hbWUgTGV4ZXJUeXBlPgotdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiB0eXBlbmFt
ZSBUcmVlQnVpbGRlcjo6Rm9ybWFsUGFyYW1ldGVyTGlzdCBQYXJzZXI8TGV4ZXJUeXBlPjo6Y3Jl
YXRlR2VuZXJhdG9yUGFyYW1ldGVycyhUcmVlQnVpbGRlciYgY29udGV4dCkKK3RlbXBsYXRlIDxj
bGFzcyBUcmVlQnVpbGRlcj4gdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkZvcm1hbFBhcmFtZXRlckxp
c3QgUGFyc2VyPExleGVyVHlwZT46OmNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMoVHJlZUJ1aWxk
ZXImIGNvbnRleHQsIHVuc2lnbmVkJiBwYXJhbWV0ZXJDb3VudCkKIHsKICAgICBhdXRvIHBhcmFt
ZXRlcnMgPSBjb250ZXh0LmNyZWF0ZUZvcm1hbFBhcmFtZXRlckxpc3QoKTsKIAogICAgIEpTVG9r
ZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOwogICAgIEpTVGV4dFBvc2l0aW9u
IHBvc2l0aW9uID0gdG9rZW5TdGFydFBvc2l0aW9uKCk7CiAKLSAgICAvLyBAZ2VuZXJhdG9yCi0g
ICAgZGVjbGFyZVBhcmFtZXRlcigmbV92bS0+cHJvcGVydHlOYW1lcy0+Z2VuZXJhdG9yUHJpdmF0
ZU5hbWUpOwotICAgIGF1dG8gZ2VuZXJhdG9yID0gY29udGV4dC5jcmVhdGVCaW5kaW5nTG9jYXRp
b24obG9jYXRpb24sIG1fdm0tPnByb3BlcnR5TmFtZXMtPmdlbmVyYXRvclByaXZhdGVOYW1lLCBw
b3NpdGlvbiwgcG9zaXRpb24sIEFzc2lnbm1lbnRDb250ZXh0OjpEZWNsYXJhdGlvblN0YXRlbWVu
dCk7Ci0gICAgY29udGV4dC5hcHBlbmRQYXJhbWV0ZXIocGFyYW1ldGVycywgZ2VuZXJhdG9yLCAw
KTsKKyAgICBhdXRvIGFkZFBhcmFtZXRlciA9IFsmXShjb25zdCBJZGVudGlmaWVyJiBuYW1lKSB7
CisgICAgICAgIGRlY2xhcmVQYXJhbWV0ZXIoJm5hbWUpOworICAgICAgICBhdXRvIGJpbmRpbmcg
PSBjb250ZXh0LmNyZWF0ZUJpbmRpbmdMb2NhdGlvbihsb2NhdGlvbiwgbmFtZSwgcG9zaXRpb24s
IHBvc2l0aW9uLCBBc3NpZ25tZW50Q29udGV4dDo6RGVjbGFyYXRpb25TdGF0ZW1lbnQpOworICAg
ICAgICBjb250ZXh0LmFwcGVuZFBhcmFtZXRlcihwYXJhbWV0ZXJzLCBiaW5kaW5nLCAwKTsKKyAg
ICAgICAgKytwYXJhbWV0ZXJDb3VudDsKKyAgICB9OwogCisgICAgLy8gQGdlbmVyYXRvcgorICAg
IGFkZFBhcmFtZXRlcihtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5nZW5lcmF0b3JQcml2YXRlTmFtZSk7
CiAgICAgLy8gQGdlbmVyYXRvclN0YXRlCi0gICAgZGVjbGFyZVBhcmFtZXRlcigmbV92bS0+cHJv
cGVydHlOYW1lcy0+Z2VuZXJhdG9yU3RhdGVQcml2YXRlTmFtZSk7Ci0gICAgYXV0byBnZW5lcmF0
b3JTdGF0ZSA9IGNvbnRleHQuY3JlYXRlQmluZGluZ0xvY2F0aW9uKGxvY2F0aW9uLCBtX3ZtLT5w
cm9wZXJ0eU5hbWVzLT5nZW5lcmF0b3JTdGF0ZVByaXZhdGVOYW1lLCBwb3NpdGlvbiwgcG9zaXRp
b24sIEFzc2lnbm1lbnRDb250ZXh0OjpEZWNsYXJhdGlvblN0YXRlbWVudCk7Ci0gICAgY29udGV4
dC5hcHBlbmRQYXJhbWV0ZXIocGFyYW1ldGVycywgZ2VuZXJhdG9yU3RhdGUsIDApOwotCisgICAg
YWRkUGFyYW1ldGVyKG1fdm0tPnByb3BlcnR5TmFtZXMtPmdlbmVyYXRvclN0YXRlUHJpdmF0ZU5h
bWUpOwogICAgIC8vIEBnZW5lcmF0b3JWYWx1ZQotICAgIGRlY2xhcmVQYXJhbWV0ZXIoJm1fdm0t
PnByb3BlcnR5TmFtZXMtPmdlbmVyYXRvclZhbHVlUHJpdmF0ZU5hbWUpOwotICAgIGF1dG8gZ2Vu
ZXJhdG9yVmFsdWUgPSBjb250ZXh0LmNyZWF0ZUJpbmRpbmdMb2NhdGlvbihsb2NhdGlvbiwgbV92
bS0+cHJvcGVydHlOYW1lcy0+Z2VuZXJhdG9yVmFsdWVQcml2YXRlTmFtZSwgcG9zaXRpb24sIHBv
c2l0aW9uLCBBc3NpZ25tZW50Q29udGV4dDo6RGVjbGFyYXRpb25TdGF0ZW1lbnQpOwotICAgIGNv
bnRleHQuYXBwZW5kUGFyYW1ldGVyKHBhcmFtZXRlcnMsIGdlbmVyYXRvclZhbHVlLCAwKTsKLQor
ICAgIGFkZFBhcmFtZXRlcihtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5nZW5lcmF0b3JWYWx1ZVByaXZh
dGVOYW1lKTsKICAgICAvLyBAZ2VuZXJhdG9yUmVzdW1lTW9kZQotICAgIGRlY2xhcmVQYXJhbWV0
ZXIoJm1fdm0tPnByb3BlcnR5TmFtZXMtPmdlbmVyYXRvclJlc3VtZU1vZGVQcml2YXRlTmFtZSk7
Ci0gICAgYXV0byBnZW5lcmF0b3JSZXN1bWVNb2RlID0gY29udGV4dC5jcmVhdGVCaW5kaW5nTG9j
YXRpb24obG9jYXRpb24sIG1fdm0tPnByb3BlcnR5TmFtZXMtPmdlbmVyYXRvclJlc3VtZU1vZGVQ
cml2YXRlTmFtZSwgcG9zaXRpb24sIHBvc2l0aW9uLCBBc3NpZ25tZW50Q29udGV4dDo6RGVjbGFy
YXRpb25TdGF0ZW1lbnQpOwotICAgIGNvbnRleHQuYXBwZW5kUGFyYW1ldGVyKHBhcmFtZXRlcnMs
IGdlbmVyYXRvclJlc3VtZU1vZGUsIDApOworICAgIGFkZFBhcmFtZXRlcihtX3ZtLT5wcm9wZXJ0
eU5hbWVzLT5nZW5lcmF0b3JSZXN1bWVNb2RlUHJpdmF0ZU5hbWUpOworICAgIC8vIEBnZW5lcmF0
b3JGcmFtZQorICAgIGFkZFBhcmFtZXRlcihtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5nZW5lcmF0b3JG
cmFtZVByaXZhdGVOYW1lKTsKIAogICAgIHJldHVybiBwYXJhbWV0ZXJzOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKaW5kZXggYTExYjM1YzEwMWZlNWI4NDljYjIzMzA5NmM1
NjgzMTM3MDY2Y2FiZi4uZTYxNDlhM2FjMzY5NDA0ODkzZDIzNjk2OTMxNmI1YzMwMzNiZTg1MSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCkBAIC0xMjU5LDcgKzEyNTksNyBA
QCBjbGFzcyBQYXJzZXIgewogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gTkVWRVJf
SU5MSU5FIGJvb2wgcGFyc2VGdW5jdGlvbkluZm8oVHJlZUJ1aWxkZXImLCBGdW5jdGlvblJlcXVp
cmVtZW50cywgU291cmNlUGFyc2VNb2RlLCBib29sIG5hbWVJc0luQ29udGFpbmluZ1Njb3BlLCBD
b25zdHJ1Y3RvcktpbmQsIFN1cGVyQmluZGluZywgaW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBQ
YXJzZXJGdW5jdGlvbkluZm88VHJlZUJ1aWxkZXI+JiwgRnVuY3Rpb25EZWZpbml0aW9uVHlwZSk7
CiAgICAgCiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBORVZFUl9JTkxJTkUgaW50
IHBhcnNlRnVuY3Rpb25QYXJhbWV0ZXJzKFRyZWVCdWlsZGVyJiwgU291cmNlUGFyc2VNb2RlLCBQ
YXJzZXJGdW5jdGlvbkluZm88VHJlZUJ1aWxkZXI+Jik7Ci0gICAgdGVtcGxhdGUgPGNsYXNzIFRy
ZWVCdWlsZGVyPiBORVZFUl9JTkxJTkUgdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkZvcm1hbFBhcmFt
ZXRlckxpc3QgY3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhUcmVlQnVpbGRlciYpOworICAgIHRl
bXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gTkVWRVJfSU5MSU5FIHR5cGVuYW1lIFRyZWVCdWls
ZGVyOjpGb3JtYWxQYXJhbWV0ZXJMaXN0IGNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMoVHJlZUJ1
aWxkZXImLCB1bnNpZ25lZCYgcGFyYW1ldGVyQ291bnQpOwogCiAgICAgdGVtcGxhdGUgPGNsYXNz
IFRyZWVCdWlsZGVyPiBORVZFUl9JTkxJTkUgVHJlZUNsYXNzRXhwcmVzc2lvbiBwYXJzZUNsYXNz
KFRyZWVCdWlsZGVyJiwgRnVuY3Rpb25SZXF1aXJlbWVudHMsIFBhcnNlckNsYXNzSW5mbzxUcmVl
QnVpbGRlcj4mKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29tbW9uU2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1v
blNsb3dQYXRocy5jcHAKaW5kZXggNzhiNDNjNGQzODlmZjdhOTA4MzEzYjU1NDA1NzBlODgyZTFi
MDM3MS4uZGNhMmQ0ZTY2NmQwNzNjZjM5MGY2MWYyOTdjYTczOTdiMzZjNThkMyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCkBAIC02
OTcsMzMgKzY5NywxMiBAQCBzdGF0aWMgdm9pZCB1cGRhdGVSZXN1bHRQcm9maWxlRm9yQmluYXJ5
QXJpdGhPcChFeGVjU3RhdGUqLCBJbnN0cnVjdGlvbiosIEpTVmFsdQogICAgIC8vIE9ubHkgc2F2
ZSB2YXJpYWJsZXMgYW5kIHRlbXBvcmFyeSByZWdpc3RlcnMuIFRoZSBzY29wZSByZWdpc3RlcnMg
YXJlIGluY2x1ZGVkIGluIHRoZW0uCiAgICAgLy8gQnV0IHBhcmFtZXRlcnMgYXJlIG5vdCBpbmNs
dWRlZC4gQmVjYXVzZSB0aGUgZ2VuZXJhdG9yIGltcGxlbWVudGF0aW9uIHJlcGxhY2VzIHRoZSB2
YWx1ZXMgb2YgcGFyYW1ldGVycyBvbiBlYWNoIGdlbmVyYXRvci5uZXh0KCkgY2FsbC4KICAgICBC
RUdJTigpOwotICAgIEpTVmFsdWUgZ2VuZXJhdG9yID0gT1AoMSkuanNWYWx1ZSgpOwotICAgIEdl
bmVyYXRvckZyYW1lKiBmcmFtZSA9IG51bGxwdHI7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IGdlbmVy
YXRvci5nZXQoZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLmdlbmVyYXRvckZyYW1lUHJpdmF0
ZU5hbWUpOwotICAgIGlmICghdmFsdWUuaXNOdWxsKCkpCi0gICAgICAgIGZyYW1lID0ganNDYXN0
PEdlbmVyYXRvckZyYW1lKj4odmFsdWUpOwotICAgIGVsc2UgewotICAgICAgICAvLyBGSVhNRTog
T25jZSBKU0dlbmVyYXRvciBzcGVjaWFsaXplZCBvYmplY3QgaXMgaW50cm9kdWNlZCwgdGhpcyBH
ZW5lcmF0b3JGcmFtZSBzaG91bGQgYmUgZW1iZWRlZCBpbnRvIGl0IHRvIGF2b2lkIGFsbG9jYXRp
b25zLgotICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTUxNTQ1Ci0gICAgICAgIGZyYW1lID0gR2VuZXJhdG9yRnJhbWU6OmNyZWF0ZShleGVjLT52bSgp
LCAgZXhlYy0+Y29kZUJsb2NrKCktPm51bUNhbGxlZUxvY2FscygpKTsKLSAgICAgICAgUHV0UHJv
cGVydHlTbG90IHNsb3QoZ2VuZXJhdG9yLCB0cnVlLCBQdXRQcm9wZXJ0eVNsb3Q6OlB1dEJ5SWQp
OwotICAgICAgICBhc09iamVjdChnZW5lcmF0b3IpLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+
cHV0KGFzT2JqZWN0KGdlbmVyYXRvciksIGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5nZW5l
cmF0b3JGcmFtZVByaXZhdGVOYW1lLCBmcmFtZSwgc2xvdCk7Ci0gICAgfQorICAgIEdlbmVyYXRv
ckZyYW1lKiBmcmFtZSA9IGpzQ2FzdDxHZW5lcmF0b3JGcmFtZSo+KE9QKDEpLmpzVmFsdWUoKSk7
CiAgICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gcGNbMl0udS51bnNpZ25lZFZh
bHVlOwogICAgIGZyYW1lLT5zYXZlKGV4ZWMsIGV4ZWMtPmNvZGVCbG9jaygpLT5saXZlQ2FsbGVl
TG9jYWxzQXRZaWVsZChsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpKTsKICAgICBFTkQoKTsKIH0KIAot
U0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3Jlc3VtZSkKLXsKLSAgICBCRUdJTigpOwotICAgIEpT
VmFsdWUgZ2VuZXJhdG9yID0gT1AoMSkuanNWYWx1ZSgpOwotICAgIEdlbmVyYXRvckZyYW1lKiBm
cmFtZSA9IGpzQ2FzdDxHZW5lcmF0b3JGcmFtZSo+KGdlbmVyYXRvci5nZXQoZXhlYywgZXhlYy0+
cHJvcGVydHlOYW1lcygpLmdlbmVyYXRvckZyYW1lUHJpdmF0ZU5hbWUpKTsKLSAgICB1bnNpZ25l
ZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSBwY1syXS51LnVuc2lnbmVkVmFsdWU7Ci0gICAgZnJh
bWUtPnJlc3VtZShleGVjLCBleGVjLT5jb2RlQmxvY2soKS0+bGl2ZUNhbGxlZUxvY2Fsc0F0WWll
bGQobGl2ZUNhbGxlZUxvY2Fsc0luZGV4KSk7Ci0gICAgRU5EKCk7Ci19Ci0KIFNMT1dfUEFUSF9E
RUNMKHNsb3dfcGF0aF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudCkKIHsKICAgICBCRUdJTigp
OwpAQCAtNzk3LDQgKzc3NiwxMiBAQCBzdGF0aWMgdm9pZCB1cGRhdGVSZXN1bHRQcm9maWxlRm9y
QmluYXJ5QXJpdGhPcChFeGVjU3RhdGUqLCBJbnN0cnVjdGlvbiosIEpTVmFsdQogICAgIEVORCgp
OwogfQogCitTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbmV3X2dlbmVyYXRvcl9mcmFtZSkKK3sK
KyAgICBCRUdJTigpOworICAgIHVuc2lnbmVkIGdlbmVyYXRvckxvY2Fsc1NpemUgPSBwY1syXS51
LnVuc2lnbmVkVmFsdWU7CisgICAgUkVUVVJOKEdlbmVyYXRvckZyYW1lOjpjcmVhdGUoZXhlYywg
Z2VuZXJhdG9yTG9jYWxzU2l6ZSkpOworfQorCisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAppbmRleCBmMDBk
ODcwNWQ0ZTY3ZmU0ZDQwNTliZGUxNjhlZTg4ZjU3ZGY3MmU3Li5jN2ZmYTNkZmNjNjNiMTRiYzM4
YTVkZTA2Zjg0Y2YzM2NjZTMzMDg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21tb25TbG93UGF0aHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db21tb25TbG93UGF0aHMuaApAQCAtMjkxLDExICsyOTEsMTEgQEAgaW5saW5lIHZvaWQg
ZGVjb2RlUmVzdWx0KFNsb3dQYXRoUmV0dXJuVHlwZSByZXN1bHQsIHZvaWQqJiBhLCB2b2lkKiYg
YikKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcHJvZmlsZV90eXBlX2NsZWFyX2xv
Zyk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2Fzc2VydCk7CiBTTE9XX1BBVEhf
SElEREVOX0RFQ0woc2xvd19wYXRoX3NhdmUpOwotU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3df
cGF0aF9yZXN1bWUpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9jcmVhdGVfbGV4
aWNhbF9lbnZpcm9ubWVudCk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3B1c2hf
d2l0aF9zY29wZSk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3Jlc29sdmVfc2Nv
cGUpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9jb3B5X3Jlc3QpOworU0xPV19Q
QVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9uZXdfZ2VuZXJhdG9yX2ZyYW1lKTsKIAogfSAvLyBu
YW1lc3BhY2UgSlNDCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0dlbmVyYXRvckZyYW1lLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVy
YXRvckZyYW1lLmNwcAppbmRleCBlZjZlYTdhMTAwMjU4YzNlY2UwNGRhYWI0M2JkYWE4NTFlYzhm
NzE1Li4wZGNiNTE0YTQyMDk5OWZiZjU5ZGYxOGJkZGY1N2MzMGFkYTc5ZTkxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGcmFtZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJhbWUuY3BwCkBAIC0zMCwx
NSArMzAsMTYgQEAKICNpbmNsdWRlICJIZWFwSXRlcmF0aW9uU2NvcGUuaCIKICNpbmNsdWRlICJK
U0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKKyNpbmNsdWRl
ICJKU09iamVjdElubGluZXMuaCIKICNpbmNsdWRlICJTbG90VmlzaXRvcklubGluZXMuaCIKICNp
bmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCi1jb25zdCBD
bGFzc0luZm8gR2VuZXJhdG9yRnJhbWU6OnNfaW5mbyA9IHsgIkdlbmVyYXRvckZyYW1lIiwgbnVs
bHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShHZW5lcmF0b3JGcmFtZSkgfTsKK2Nv
bnN0IENsYXNzSW5mbyBHZW5lcmF0b3JGcmFtZTo6c19pbmZvID0geyAiR2VuZXJhdG9yRnJhbWUi
LCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEdlbmVyYXRvckZy
YW1lKSB9OwogCi1HZW5lcmF0b3JGcmFtZTo6R2VuZXJhdG9yRnJhbWUoVk0mIHZtLCBzaXplX3Qg
bnVtYmVyT2ZDYWxsZWVMb2NhbHMpCi0gICAgOiBCYXNlKHZtLCB2bS5nZW5lcmF0b3JGcmFtZVN0
cnVjdHVyZS5nZXQoKSkKK0dlbmVyYXRvckZyYW1lOjpHZW5lcmF0b3JGcmFtZShWTSYgdm0sIFN0
cnVjdHVyZSogc3RydWN0dXJlLCB1aW50MzJfdCBudW1iZXJPZkNhbGxlZUxvY2FscykKKyAgICA6
IEJhc2Uodm0sIHN0cnVjdHVyZSkKICAgICAsIG1fbnVtYmVyT2ZDYWxsZWVMb2NhbHMobnVtYmVy
T2ZDYWxsZWVMb2NhbHMpCiB7CiB9CkBAIC00NiwzMyArNDcsNDIgQEAKIHZvaWQgR2VuZXJhdG9y
RnJhbWU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlv
bih2bSk7CisgICAgSlNWYWx1ZSBlbXB0eVZhbHVlOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgbV9udW1iZXJPZkNhbGxlZUxvY2FsczsgKytpKQotICAgICAgICBsb2NhbEF0KGkpLmNsZWFy
KCk7CisgICAgICAgIGxvY2FsQXQoaSkuc2V0U3RhcnRpbmdWYWx1ZShlbXB0eVZhbHVlKTsKIH0K
IAogU3RydWN0dXJlKiBHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCiB7Ci0gICAgcmV0
dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUlu
Zm8oQ2VsbFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICByZXR1cm4gU3RydWN0
dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RU
eXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiB9CiAKLUdlbmVyYXRvckZyYW1lKiBHZW5l
cmF0b3JGcmFtZTo6Y3JlYXRlKFZNJiB2bSwgc2l6ZV90IG51bWJlck9mTG9jYWxzKQorR2VuZXJh
dG9yRnJhbWUqIEdlbmVyYXRvckZyYW1lOjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgc2l6ZV90IG51bWJlck9mQ2FsbGVlTG9jYWxzKQogewogICAgIEdlbmVyYXRvckZyYW1l
KiByZXN1bHQgPQogICAgICAgICBuZXcgKAogICAgICAgICAgICAgTm90TnVsbCwKLSAgICAgICAg
ICAgIGFsbG9jYXRlQ2VsbDxHZW5lcmF0b3JGcmFtZT4odm0uaGVhcCwgYWxsb2NhdGlvblNpemVG
b3JMb2NhbHMobnVtYmVyT2ZMb2NhbHMpKSkKLSAgICAgICAgR2VuZXJhdG9yRnJhbWUodm0sIG51
bWJlck9mTG9jYWxzKTsKKyAgICAgICAgICAgIGFsbG9jYXRlQ2VsbDxHZW5lcmF0b3JGcmFtZT4o
dm0uaGVhcCwgYWxsb2NhdGlvblNpemVGb3JMb2NhbHMobnVtYmVyT2ZDYWxsZWVMb2NhbHMpKSkK
KyAgICAgICAgR2VuZXJhdG9yRnJhbWUodm0sIHN0cnVjdHVyZSwgbnVtYmVyT2ZDYWxsZWVMb2Nh
bHMpOwogICAgIHJlc3VsdC0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIHJldHVybiByZXN1bHQ7
CiB9CiAKK0dlbmVyYXRvckZyYW1lKiBHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlKEV4ZWNTdGF0ZSog
ZXhlYywgc2l6ZV90IG51bWJlck9mQ2FsbGVlTG9jYWxzKQoreworICAgIHJldHVybiBjcmVhdGUo
ZXhlYy0+dm0oKSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5nZW5lcmF0b3JGcmFtZVN0
cnVjdHVyZSgpLCBudW1iZXJPZkNhbGxlZUxvY2Fscyk7Cit9CisKIHZvaWQgR2VuZXJhdG9yRnJh
bWU6OnNhdmUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlQ2FsbGVl
TG9jYWxzKQogeworICAgIC8vIEFsbG9jYXRlIHRoZSBnZW5lcmF0b3IgbG9jYWwgc3BhY2UgZmly
c3QuCisgICAgbV9udW1iZXJPZlNhdmVkQ2FsbGVlTG9jYWxzID0gbGl2ZUNhbGxlZUxvY2Fscy5i
aXRDb3VudCgpOworCiAgICAgLy8gT25seSBzYXZlIGNhbGxlZSBsb2NhbHMuCiAgICAgLy8gRXZl
cnkgdGltZSBhIGdlbmVyYXRvciBpcyBjYWxsZWQgKG9yIHJlc3VtZWQpLCBwYXJhbWV0ZXJzIHNo
b3VsZCBiZSByZXBsYWNlZC4KLSAgICBBU1NFUlQobGl2ZUNhbGxlZUxvY2Fscy5udW1CaXRzKCkg
PD0gbV9udW1iZXJPZkNhbGxlZUxvY2Fscyk7CisgICAgdW5zaWduZWQgZ2VuZXJhdG9yTG9jYWxJ
bmRleCA9IDA7CiAgICAgbGl2ZUNhbGxlZUxvY2Fscy5mb3JFYWNoU2V0Qml0KFsmXShzaXplX3Qg
aW5kZXgpIHsKLSAgICAgICAgbG9jYWxBdChpbmRleCkuc2V0KGV4ZWMtPnZtKCksIHRoaXMsIGV4
ZWMtPnVuY2hlY2tlZFIodmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaW5kZXgpKS5qc1ZhbHVlKCkp
OworICAgICAgICBsb2NhbEF0KGdlbmVyYXRvckxvY2FsSW5kZXgrKykuc2V0KGV4ZWMtPnZtKCks
IHRoaXMsIGV4ZWMtPnVuY2hlY2tlZFIodmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaW5kZXgpKS5q
c1ZhbHVlKCkpOwogICAgIH0pOwogfQogCkBAIC04MCwxMCArOTAsMTEgQEAgdm9pZCBHZW5lcmF0
b3JGcmFtZTo6cmVzdW1lKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2
ZUNhbGxlZUxvY2EKIHsKICAgICAvLyBPbmx5IHJlc3VtZSBjYWxsZWUgbG9jYWxzLgogICAgIC8v
IEV2ZXJ5IHRpbWUgYSBnZW5lcmF0b3IgaXMgY2FsbGVkIChvciByZXN1bWVkKSwgcGFyYW1ldGVy
cyBzaG91bGQgYmUgcmVwbGFjZWQuCisgICAgdW5zaWduZWQgZ2VuZXJhdG9yTG9jYWxJbmRleCA9
IDA7CiAgICAgbGl2ZUNhbGxlZUxvY2Fscy5mb3JFYWNoU2V0Qml0KFsmXShzaXplX3QgaW5kZXgp
IHsKLSAgICAgICAgZXhlYy0+dW5jaGVja2VkUih2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChpbmRl
eCkpID0gbG9jYWxBdChpbmRleCkuZ2V0KCk7Ci0gICAgICAgIGxvY2FsQXQoaW5kZXgpLmNsZWFy
KCk7CisgICAgICAgIGV4ZWMtPnVuY2hlY2tlZFIodmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaW5k
ZXgpKSA9IGxvY2FsQXQoZ2VuZXJhdG9yTG9jYWxJbmRleCsrKS5nZXQoKTsKICAgICB9KTsKKyAg
ICBtX251bWJlck9mU2F2ZWRDYWxsZWVMb2NhbHMgPSAwOwogfQogCiB2b2lkIEdlbmVyYXRvckZy
YW1lOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCkBA
IC05MSw3ICsxMDIsMTIgQEAgdm9pZCBHZW5lcmF0b3JGcmFtZTo6dmlzaXRDaGlsZHJlbihKU0Nl
bGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIEdlbmVyYXRvckZyYW1lKiB0aGlz
T2JqZWN0ID0ganNDYXN0PEdlbmVyYXRvckZyYW1lKj4oY2VsbCk7CiAgICAgQmFzZTo6dmlzaXRD
aGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKICAgICAvLyBTaW5jZSBvbmx5IHRydWUgY2Vs
bCBwb2ludGVycyBhcmUgc3RvcmVkIGFzIGEgY2VsbCwgd2UgY2FuIHNhZmVseSBtYXJrIHRoZW0u
Ci0gICAgdmlzaXRvci5hcHBlbmRWYWx1ZXModGhpc09iamVjdC0+bG9jYWxzKCksIHRoaXNPYmpl
Y3QtPm1fbnVtYmVyT2ZDYWxsZWVMb2NhbHMpOworICAgIHZpc2l0b3IuYXBwZW5kVmFsdWVzKHRo
aXNPYmplY3QtPmxvY2FscygpLCB0aGlzT2JqZWN0LT5tX251bWJlck9mU2F2ZWRDYWxsZWVMb2Nh
bHMpOworICAgIC8vIENsZWFyIG5vdCB1c2VkIGNhbGxlZSBsb2NhbHMgd2hlbiBtYXJraW5nLgor
ICAgIC8vIFRoaXMgZW5zdXJlcyB0aGF0LCAiaWYgYSBnaXZlbiBsb2NhbCBoYXMgYSB2YWx1ZSwg
dGhpcyB2YWx1ZSBpcyBjb3JyZWN0bHkgbWFya2VkIGluIHRoZSBwcmV2aW91cyBtYXJraW5nIHBo
YXNlIi4KKyAgICBzaXplX3QgdW51c2VkTG9jYWxzQ291bnQgPSB0aGlzT2JqZWN0LT5tX251bWJl
ck9mQ2FsbGVlTG9jYWxzIC0gdGhpc09iamVjdC0+bV9udW1iZXJPZlNhdmVkQ2FsbGVlTG9jYWxz
OworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdW51c2VkTG9jYWxzQ291bnQ7ICsraSkKKyAg
ICAgICAgdGhpc09iamVjdC0+bG9jYWxBdCh0aGlzT2JqZWN0LT5tX251bWJlck9mU2F2ZWRDYWxs
ZWVMb2NhbHMgKyBpKS5jbGVhcigpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZyYW1lLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGcmFtZS5oCmluZGV4IDNkNTQ1YjE0
N2RkNGFiZmIyYmJiOWI1YTcxOTRlOGY3NDg0MWM0OWEuLmNmMWRiN2EyYmVlNjBkYTI5NDY0ZWM0
MTdhMGM1ZmI4YzFmMGFlOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0dlbmVyYXRvckZyYW1lLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
R2VuZXJhdG9yRnJhbWUuaApAQCAtMjcsMTEgKzI3LDE0IEBACiAjZGVmaW5lIEdlbmVyYXRvckZy
YW1lX2gKIAogI2luY2x1ZGUgIkpTQ2VsbC5oIgorI2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAjaW5j
bHVkZSA8d3RmL0Zhc3RCaXRWZWN0b3IuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKLWNsYXNzIEdl
bmVyYXRvckZyYW1lIDogcHVibGljIEpTQ2VsbCB7CitjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0
b3I7CisKK2NsYXNzIEdlbmVyYXRvckZyYW1lIDogcHVibGljIEpTTm9uRmluYWxPYmplY3Qgewog
ICAgIGZyaWVuZCBjbGFzcyBKSVQ7CiAjaWYgRU5BQkxFKERGR19KSVQpCiAgICAgZnJpZW5kIGNs
YXNzIERGRzo6U3BlY3VsYXRpdmVKSVQ7CkBAIC0zOSwxMiArNDIsMTIgQEAgY2xhc3MgR2VuZXJh
dG9yRnJhbWUgOiBwdWJsaWMgSlNDZWxsIHsKICNlbmRpZgogICAgIGZyaWVuZCBjbGFzcyBWTTsK
IHB1YmxpYzoKLSAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOwotICAgIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCBTdHJ1Y3R1cmVGbGFncyA9IFN0cnVjdHVyZUlzSW1tb3J0YWwgfCBCYXNlOjpTdHJ1Y3R1
cmVGbGFnczsKKyAgICB0eXBlZGVmIEpTTm9uRmluYWxPYmplY3QgQmFzZTsKIAogICAgIERFQ0xB
UkVfRVhQT1JUX0lORk87CiAKLSAgICBzdGF0aWMgR2VuZXJhdG9yRnJhbWUqIGNyZWF0ZShWTSYs
IHNpemVfdCBudW1iZXJPZkNhbGxlZUxvY2Fscyk7CisgICAgc3RhdGljIEdlbmVyYXRvckZyYW1l
KiBjcmVhdGUoRXhlY1N0YXRlKiwgc2l6ZV90IG51bWJlck9mQ2FsbGVlTG9jYWxzKTsKKyAgICBz
dGF0aWMgR2VuZXJhdG9yRnJhbWUqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSosIHNpemVfdCBudW1i
ZXJPZkNhbGxlZUxvY2Fscyk7CiAKICAgICBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiBsb2Nh
bHMoKQogICAgIHsKQEAgLTUzLDcgKzU2LDYgQEAgY2xhc3MgR2VuZXJhdG9yRnJhbWUgOiBwdWJs
aWMgSlNDZWxsIHsKIAogICAgIFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4mIGxvY2FsQXQoc2l6
ZV90IGluZGV4KQogICAgIHsKLSAgICAgICAgQVNTRVJUKGluZGV4IDwgbV9udW1iZXJPZkNhbGxl
ZUxvY2Fscyk7CiAgICAgICAgIHJldHVybiBsb2NhbHMoKVtpbmRleF07CiAgICAgfQogCkBAIC02
Miw2ICs2NCwyMSBAQCBjbGFzcyBHZW5lcmF0b3JGcmFtZSA6IHB1YmxpYyBKU0NlbGwgewogICAg
ICAgICByZXR1cm4gV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mPHNpemVvZihXcml0ZUJhcnJpZXI8
VW5rbm93bj4pPihzaXplb2YoR2VuZXJhdG9yRnJhbWUpKTsKICAgICB9CiAKKyAgICBzdGF0aWMg
c2l6ZV90IGxvY2FsT2Zmc2V0KHVuc2lnbmVkIGluZGV4KQorICAgIHsKKyAgICAgICAgcmV0dXJu
IG9mZnNldE9mTG9jYWxzKCkgKyBpbmRleCAqIHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4p
OworICAgIH0KKworICAgIHN0YXRpYyBzaXplX3QgbnVtYmVyT2ZDYWxsZWVMb2NhbHNPZmZzZXQo
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihHZW5lcmF0b3JGcmFtZSwg
bV9udW1iZXJPZkNhbGxlZUxvY2Fscyk7CisgICAgfQorCisgICAgc3RhdGljIHNpemVfdCBudW1i
ZXJPZlNhdmVkQ2FsbGVlTG9jYWxzT2Zmc2V0KCkKKyAgICB7CisgICAgICAgIHJldHVybiBPQkpF
Q1RfT0ZGU0VUT0YoR2VuZXJhdG9yRnJhbWUsIG1fbnVtYmVyT2ZTYXZlZENhbGxlZUxvY2Fscyk7
CisgICAgfQorCiAgICAgc3RhdGljIHNpemVfdCBhbGxvY2F0aW9uU2l6ZUZvckxvY2Fscyh1bnNp
Z25lZCBudW1iZXJPZkxvY2FscykKICAgICB7CiAgICAgICAgIHJldHVybiBvZmZzZXRPZkxvY2Fs
cygpICsgbnVtYmVyT2ZMb2NhbHMgKiBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KTsKQEAg
LTczLDE2ICs5MCwxNiBAQCBjbGFzcyBHZW5lcmF0b3JGcmFtZSA6IHB1YmxpYyBKU0NlbGwgewog
ICAgIHZvaWQgcmVzdW1lKEV4ZWNTdGF0ZSosIGNvbnN0IEZhc3RCaXRWZWN0b3ImIGxpdmVDYWxs
ZWVMb2NhbHMpOwogCiBwcml2YXRlOgotICAgIEdlbmVyYXRvckZyYW1lKFZNJiwgc2l6ZV90IG51
bWJlck9mQ2FsbGVlTG9jYWxzKTsKKyAgICBHZW5lcmF0b3JGcmFtZShWTSYsIFN0cnVjdHVyZSos
IHVpbnQzMl90IG51bWJlck9mQ2FsbGVlTG9jYWxzKTsKIAotICAgIHNpemVfdCBtX251bWJlck9m
Q2FsbGVlTG9jYWxzOworICAgIHVpbnQzMl90IG1fbnVtYmVyT2ZDYWxsZWVMb2NhbHM7CisgICAg
dWludDMyX3QgbV9udW1iZXJPZlNhdmVkQ2FsbGVlTG9jYWxzIHsgMCB9OwogCiAgICAgZnJpZW5k
IGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIAotICAgIHZvaWQgZmluaXNoQ3JlYXRpb24o
Vk0mKTsKLQogcHJvdGVjdGVkOgogICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxs
KiwgU2xvdFZpc2l0b3ImKTsKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmNwcAppbmRleCBiNmJhMjdjOTEyZGI1MGFhNGY5OWFjZTBmNmFkOWQwNmUz
MDA2ZGY4Li5hZDg1N2Y4NzNiNDA5M2ZhZGMyZmUyYTNlZTI5NGJjZTVjODAwNDZkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC01
MCw2ICs1MCw3IEBACiAjaW5jbHVkZSAiRXJyb3JQcm90b3R5cGUuaCIKICNpbmNsdWRlICJGdW5j
dGlvbkNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiRnVuY3Rpb25Qcm90b3R5cGUuaCIKKyNpbmNs
dWRlICJHZW5lcmF0b3JGcmFtZS5oIgogI2luY2x1ZGUgIkdlbmVyYXRvckZ1bmN0aW9uQ29uc3Ry
dWN0b3IuaCIKICNpbmNsdWRlICJHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5oIgogI2luY2x1
ZGUgIkdlbmVyYXRvclByb3RvdHlwZS5oIgpAQCAtMzg4LDYgKzM4OSw3IEBAIHZvaWQgSlNHbG9i
YWxPYmplY3Q6OmluaXQoVk0mIHZtKQogICAgIAogICAgIEZPUl9FQUNIX0JVSUxUSU5fREVSSVZF
RF9JVEVSQVRPUl9UWVBFKENSRUFURV9QUk9UT1RZUEVfRk9SX0RFUklWRURfSVRFUkFUT1JfVFlQ
RSkKICAgICBtX3Byb3BlcnR5TmFtZUl0ZXJhdG9yU3RydWN0dXJlLnNldCh2bSwgdGhpcywgSlNQ
cm9wZXJ0eU5hbWVJdGVyYXRvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2l0ZXJhdG9y
UHJvdG90eXBlLmdldCgpKSk7CisgICAgbV9nZW5lcmF0b3JGcmFtZVN0cnVjdHVyZS5zZXQodm0s
IHRoaXMsIEdlbmVyYXRvckZyYW1lOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIGpzTnVsbCgp
KSk7CiAgICAgbV9nZW5lcmF0b3JQcm90b3R5cGUuc2V0KHZtLCB0aGlzLCBHZW5lcmF0b3JQcm90
b3R5cGU6OmNyZWF0ZSh2bSwgdGhpcywgR2VuZXJhdG9yUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1
cmUodm0sIHRoaXMsIG1faXRlcmF0b3JQcm90b3R5cGUuZ2V0KCkpKSk7CiAgICAgCiAjdW5kZWYg
Q1JFQVRFX1BST1RPVFlQRV9GT1JfREVSSVZFRF9JVEVSQVRPUl9UWVBFCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCBiNGZmMmZiNDEzZTBl
NDQ2MjQ5MmE0OGEzZmQ1YTRjMjRlYTBiNzQxLi43MWQzOWVjOTI4M2FkOWU1OTAxMjQ0ZjAxMzZh
MTM1OGY1NDRhOTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmgKQEAgLTI1NSw2ICsyNTUsNyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1
YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0
dXJlPiBtX2NhbGxiYWNrRnVuY3Rpb25TdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVj
dHVyZT4gbV9jYWxsYmFja09iamVjdFN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0
dXJlPiBtX3Byb3BlcnR5TmFtZUl0ZXJhdG9yU3RydWN0dXJlOworICAgIFdyaXRlQmFycmllcjxT
dHJ1Y3R1cmU+IG1fZ2VuZXJhdG9yRnJhbWVTdHJ1Y3R1cmU7CiAjaWYgSlNDX09CSkNfQVBJX0VO
QUJMRUQKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX29iamNDYWxsYmFja0Z1bmN0aW9u
U3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fb2JqY1dyYXBwZXJPYmpl
Y3RTdHJ1Y3R1cmU7CkBAIC01MDEsNiArNTAyLDcgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBw
dWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgU3RydWN0dXJlKiBjYWxsYmFj
a0Z1bmN0aW9uU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9jYWxsYmFja0Z1bmN0aW9uU3Ry
dWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBjYWxsYmFja09iamVjdFN0cnVjdHVyZSgp
IGNvbnN0IHsgcmV0dXJuIG1fY2FsbGJhY2tPYmplY3RTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBT
dHJ1Y3R1cmUqIHByb3BlcnR5TmFtZUl0ZXJhdG9yU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4g
bV9wcm9wZXJ0eU5hbWVJdGVyYXRvclN0cnVjdHVyZS5nZXQoKTsgfQorICAgIFN0cnVjdHVyZSog
Z2VuZXJhdG9yRnJhbWVTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2dlbmVyYXRvckZyYW1l
U3RydWN0dXJlLmdldCgpOyB9CiAjaWYgSlNDX09CSkNfQVBJX0VOQUJMRUQKICAgICBTdHJ1Y3R1
cmUqIG9iamNDYWxsYmFja0Z1bmN0aW9uU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9vYmpj
Q2FsbGJhY2tGdW5jdGlvblN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogb2JqY1dy
YXBwZXJPYmplY3RTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX29iamNXcmFwcGVyT2JqZWN0
U3RydWN0dXJlLmdldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9WTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXgg
MGU0NGMzNDYwZjlmOGYwZGNiMzVkOTEyZDc5NWY3Zjk4ZGZiN2Y0NS4uMGVmMjVlNzI5YWE2ZTU1
YzNkY2EwNjFjMjJiNjVhYTZmN2I1YjM0ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZN
LmNwcApAQCAtMjQ2LDcgKzI0Niw2IEBAIHN0YXRpYyBib29sIGVuYWJsZUFzc2VtYmxlcihFeGVj
dXRhYmxlQWxsb2NhdG9yJiBleGVjdXRhYmxlQWxsb2NhdG9yKQogICAgIGluZmVycmVkVHlwZVN0
cnVjdHVyZS5zZXQoKnRoaXMsIEluZmVycmVkVHlwZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAw
LCBqc051bGwoKSkpOwogICAgIGluZmVycmVkVHlwZVRhYmxlU3RydWN0dXJlLnNldCgqdGhpcywg
SW5mZXJyZWRUeXBlVGFibGU6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsK
ICAgICBmdW5jdGlvblJhcmVEYXRhU3RydWN0dXJlLnNldCgqdGhpcywgRnVuY3Rpb25SYXJlRGF0
YTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwotICAgIGdlbmVyYXRvckZy
YW1lU3RydWN0dXJlLnNldCgqdGhpcywgR2VuZXJhdG9yRnJhbWU6OmNyZWF0ZVN0cnVjdHVyZSgq
dGhpcywgMCwganNOdWxsKCkpKTsKICAgICBleGNlcHRpb25TdHJ1Y3R1cmUuc2V0KCp0aGlzLCBF
eGNlcHRpb246OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICBwcm9t
aXNlRGVmZXJyZWRTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBKU1Byb21pc2VEZWZlcnJlZDo6Y3JlYXRl
U3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIGludGVybmFsUHJvbWlzZURlZmVy
cmVkU3RydWN0dXJlLnNldCgqdGhpcywgSlNJbnRlcm5hbFByb21pc2VEZWZlcnJlZDo6Y3JlYXRl
U3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVk0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZN
LmgKaW5kZXggYWVlMGFjMWYyMWI4NDUxYmM3NzY3NDQzYTBiMDVjYTA0OGI0ZjQ5Yi4uMjM2MDgz
NzBhOTgzNmQ4OTc3ZTQ5ZDcxZTY4YTgwOWI5YWM0NTM2MyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9WTS5oCkBAIC0zMTIsNyArMzEyLDYgQEAgY2xhc3MgVk0gOiBwdWJsaWMgVGhyZWFkU2Fm
ZVJlZkNvdW50ZWQ8Vk0+IHsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBpbmZlcnJlZFR5cGVTdHJ1
Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gaW5mZXJyZWRUeXBlVGFibGVTdHJ1Y3R1cmU7
CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gZnVuY3Rpb25SYXJlRGF0YVN0cnVjdHVyZTsKLSAgICBT
dHJvbmc8U3RydWN0dXJlPiBnZW5lcmF0b3JGcmFtZVN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3Ry
dWN0dXJlPiBleGNlcHRpb25TdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gcHJvbWlz
ZURlZmVycmVkU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGludGVybmFsUHJvbWlz
ZURlZmVycmVkU3RydWN0dXJlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQtYXJyYXkuanMgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLWFuZC1hcnJheS5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5mZTkzOTgxMmZkYmFlYzZiODMyYmZkMDBmMjE1M2RlZjg0YmI3NTkyCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3It
ZmliLWZ0bC1hbmQtYXJyYXkuanMKQEAgLTAsMCArMSwyMyBAQAorKGZ1bmN0aW9uICgpIHsKKyAg
ICBmdW5jdGlvbiAqZmliKCkKKyAgICB7CisgICAgICAgIGxldCBhID0gMTsKKyAgICAgICAgbGV0
IGIgPSAxOworICAgICAgICBsZXQgYyA9IFsgMCBdOworICAgICAgICB3aGlsZSAodHJ1ZSkgewor
ICAgICAgICAgICAgY1swXSA9IGE7CisgICAgICAgICAgICB5aWVsZCBjOworICAgICAgICAgICAg
W2EsIGJdID0gW2IsIGEgKyBiXTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGxldCB2YWx1ZSA9
IDA7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxZTQ7ICsraSkgeworICAgICAgICBsZXQgZiA9
IGZpYigpOworICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDsgKytpKSB7CisgICAgICAg
ICAgICB2YWx1ZSA9IGYubmV4dCgpLnZhbHVlOworICAgICAgICB9CisgICAgICAgIGlmICh2YWx1
ZVswXSAhPT0gMzU0MjI0ODQ4MTc5MjYyMDAwMDAwKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKGBiYWQgdmFsdWU6JHtyZXN1bHR9YCk7CisgICAgfQorfSgpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwtYW5kLW9i
amVjdC5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZp
Yi1mdGwtYW5kLW9iamVjdC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NjczNDBmMmVhNGM3NDM4YTJkMjA5YWE0
MGQwNjc3ZTRhYjdkM2ZiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQtb2JqZWN0LmpzCkBAIC0wLDAgKzEs
MjMgQEAKKyhmdW5jdGlvbiAoKSB7CisgICAgZnVuY3Rpb24gKmZpYigpCisgICAgeworICAgICAg
ICBsZXQgYSA9IDE7CisgICAgICAgIGxldCBiID0gMTsKKyAgICAgICAgbGV0IGMgPSB7IGZpYjog
MCB9OworICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAgYy5maWIgPSBhOworICAg
ICAgICAgICAgeWllbGQgYzsKKyAgICAgICAgICAgIFthLCBiXSA9IFtiLCBhICsgYl07CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICBsZXQgdmFsdWUgPSAwOworICAgIGZvciAobGV0IGkgPSAwOyBp
IDwgMWU0OyArK2kpIHsKKyAgICAgICAgbGV0IGYgPSBmaWIoKTsKKyAgICAgICAgZm9yIChsZXQg
aSA9IDA7IGkgPCAxMDA7ICsraSkgeworICAgICAgICAgICAgdmFsdWUgPSBmLm5leHQoKS52YWx1
ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAodmFsdWUuZmliICE9PSAzNTQyMjQ4NDgxNzkyNjIw
MDAwMDApCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCB2YWx1ZToke3Jlc3VsdH1g
KTsKKyAgICB9Cit9KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3Rz
L3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQtc3RyaW5nLmpzIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQtc3RyaW5nLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjQzOGFlNmFiMzM0NzA0NjgyMjg0OWY0MzAwNGVhNWM0MDNlZWRhMjgKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1m
aWItZnRsLWFuZC1zdHJpbmcuanMKQEAgLTAsMCArMSwyMiBAQAorKGZ1bmN0aW9uICgpIHsKKyAg
ICBmdW5jdGlvbiAqZmliKCkKKyAgICB7CisgICAgICAgIGxldCBhID0gMTsKKyAgICAgICAgbGV0
IGIgPSAxOworICAgICAgICBsZXQgYyA9ICJSZXN1bHQhICI7CisgICAgICAgIHdoaWxlICh0cnVl
KSB7CisgICAgICAgICAgICB5aWVsZCBjICsgYTsKKyAgICAgICAgICAgIFthLCBiXSA9IFtiLCBh
ICsgYl07CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQgdmFsdWUgPSAwOworICAgIGZvciAo
bGV0IGkgPSAwOyBpIDwgMWU0OyArK2kpIHsKKyAgICAgICAgbGV0IGYgPSBmaWIoKTsKKyAgICAg
ICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDA7ICsraSkgeworICAgICAgICAgICAgdmFsdWUgPSBm
Lm5leHQoKS52YWx1ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAodmFsdWUgIT09IGBSZXN1bHQh
IDM1NDIyNDg0ODE3OTI2MjAwMDAwMGApCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJh
ZCB2YWx1ZToke3Jlc3VsdH1gKTsKKyAgICB9Cit9KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC5qcyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMzQwZTMzZGJjODY4YmVhN2E4OTNjOWVjMTZiNzc5ZWMyNmJkYjE5YwotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1m
dGwuanMKQEAgLTAsMCArMSwyMSBAQAorKGZ1bmN0aW9uICgpIHsKKyAgICBmdW5jdGlvbiAqZmli
KCkKKyAgICB7CisgICAgICAgIGxldCBhID0gMTsKKyAgICAgICAgbGV0IGIgPSAxOworICAgICAg
ICB3aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAgeWllbGQgYTsKKyAgICAgICAgICAgIFthLCBi
XSA9IFtiLCBhICsgYl07CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQgdmFsdWUgPSAwOwor
ICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMWU0OyArK2kpIHsKKyAgICAgICAgbGV0IGYgPSBmaWIo
KTsKKyAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDA7ICsraSkgeworICAgICAgICAgICAg
dmFsdWUgPSBmLm5leHQoKS52YWx1ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAodmFsdWUgIT09
IDM1NDIyNDg0ODE3OTI2MjAwMDAwMCkKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFk
IHZhbHVlOiR7cmVzdWx0fWApOworICAgIH0KK30oKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>269174</attachid>
            <date>2016-01-16 09:20:08 -0800</date>
            <delta_ts>2016-01-19 12:18:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-152723-20160117021937.patch</filename>
            <type>text/plain</type>
            <size>115708</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk1MTY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
MjY1MGYyMDZjYmY0ZDYyYWRiODRiYzc5YjM2MmZlYzQ5NDZmMmM0Li44YTYyNGU4MjBhNTk3YWI3
M2IwOGY1ODViNGMzMTU1ZTFhZjgyN2ZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMzUgQEAKKzIwMTYtMDEtMTYgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgQ3JlYXRlIEdlbmVyYXRvckZyYW1lIHdpdGggdGhlIGJ5dGVjb2Rl
IG9wX25ld19nZW5lcmF0b3JfZnJhbWUgYW5kIG1ha2Ugb3Bfc2F2ZSAvIG9wX3Jlc3VtZSBERkcv
RlRMIGNhcGFibGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1MjcyMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRoaXMgcGF0Y2ggaXMgYW4gaW5pdGlhbCBhdHRlbXB0IHRvIGltcGxlbWVudCBERkcgYW5k
IEZUTCBjYXBhYmxlIEVTNiBnZW5lcmF0b3JzLgorICAgICAgICBXZSBpbnRyb2R1Y2UgdGhlIHNl
dmVyYWwgYnl0ZWNvZGVzIGFuZCBjb21waWxlIHRoZW0gaW4gREZHIC8gRlRMLgorCisgICAgICAg
IC0gb3Bfbm9wCisKKyAgICAgICAgICAgIE5vcCBvcGVyYXRpb24gaW4gdGhlIGJ5dGVjb2RlLiBU
aGlzIGlzIHVzZWQgdG8gcmVwcmVzZW50IGhvbGVzIGluIHRoZSBieXRlY29kZSBzdHJlYW0uCisg
ICAgICAgICAgICBUaGVzZSBieXRlY29kZXMgY291bGQgYmUgcmVwbGFjZWQgKFNpbWlsYXIgdG8g
dGhlIExMVk0gcGF0Y2hwb2ludCkuCisKKyAgICAgICAgLSBvcF9uZXdfZ2VuZXJhdG9yX2ZyYW1l
CisKKyAgICAgICAgICAgIEFsbG9jYXRlIEdlbmVyYXRvckZyYW1lIGluIHRoZSBieXRlY29kZSBp
bnN0ZWFkIG9mIGFsbG9jYXRpbmcgaXQgaW4gdGhlIG9wX3NhdmUuCisKKyAgICAgICAgLSBvcF9z
YXZlX2hpbnQKKworICAgICAgICAgICAgVGhpcyBpcyBwcmV2aW91cyBvcF9zYXZlLiBUaGlzIG9w
X3NhdmVfaGludCBpcyBvbmx5IHVzZWQgZm9yIHRoZSBieXRlY29kZSB1c2UtZGVmIGFuYWx5c2lz
LiBPbmNlIHRoZSBhbmFseXNpcyBpcyBkb25lIGluIENvZGVCbG9jayBjcmVhdGlvbiBwaGFzZSwK
KyAgICAgICAgICAgIHdlIHdpbGwgY29udmVydCB0aGlzIGJ5dGVjb2RlIHRvIG9wX3NhdmUuCisg
ICAgICAgICAgICBXaGlsZSBvcF9zYXZlX2hpbnQgaGFzIGEgcHNldWRvIGp1bXAgdG8gdGhlIGdl
bmVyYXRvciBjb250aW51YXRpb24gbWVyZ2UgcG9pbnQsIG9wX3NhdmUgZG9lcyBub3QgaGF2ZSBp
dC4gVGhpcyBwc2V1ZG8ganVtcCBpcyBuZWNlc3NhcnkgZm9yCisgICAgICAgICAgICB0aGUgYnl0
ZWNvZGUgdXNlLWRlZiBhbmFseXNpcy4gVGhpcyBieXRlY29kZSB1c2UtZGVmIGFuYWx5c2lzIGlz
IHVzZWQgdG8gZGlzY292ZXIgbGl2ZSB2YXJpYWJsZXMgaW4gdGhlIGdlbmVyYXRvciBjb250aW51
YXRpb24gbWVyZ2UgcG9pbnQuCisKKyAgICAgICAgICAgIFRoZSBnZW5lcmF0b3IgY29udGludWF0
aW9uIG1lcmdlIHBvaW50IGlzIHRoZSBwb2ludCB0aGF0IG1lcmdpbmcgdGhlIDIgYmFzaWMgYmxv
Y2tzLCBzYXZpbmcgbG9jYWxzIHRvIHRoZSBnZW5lcmF0b3IgZnJhbWUgYW5kIHJlc3VtaW5nIGxv
Y2FscyBmcm9tCisgICAgICAgICAgICB0aGUgZ2VuZXJhdG9yIGZyYW1lLgorCisgICAgICAgIC0g
b3Bfc2F2ZQorCisgICAgICAgICAgICBTaW1pbGFyIHRvIHRoZSBwcmV2aW91cyBvcF9zYXZlLiBJ
dCB1c2VzIGxvY2FscyBhbmQgc2F2ZXMgdGhlbSB0byB0aGUgZ2VuZXJhdG9yIGZyYW1lLiBBdCB0
aGF0IHRpbWUsIHdlIHdpbGwgc2V0IEdlbmVyYXRvckZyYW1lOjptX251bWJlck9mU2F2ZWRDYWxs
ZWVMb2NhbHMgYXMgKk4qCisgICAgICAgICAgICB0byBhbGxvY2F0ZSBzcGFjZSBmb3Igc2F2ZWQg
bG9jYWxzLgorCisgICAgICAgIC0gb3BfcmVzdW1lX2hpbnQKKworICAgICAgICAgICAgU2ltaWxh
ciB0byB0aGUgb3Bfc2F2ZV9oaW50LCB0aGlzIGlzIG9ubHkgdXNlZCBmb3IgdGhlIGJ5dGVjb2Rl
IHVzZS1kZWYgYW5hbHlzaXMuIG9wX3Jlc3VtZV9oaW50IGxlYWRzIHNldmVyYWwgb3Bfbm9wIG9w
ZXJhdGlvbnMuCisgICAgICAgICAgICBBZnRlciB0aGUgYW5hbHlzaXMsIHdlIGV4cGxvaXQgdGhl
IG5lZWRlZCBkZWZzIGZvciB0aGlzIHJlc3VtZSBwb2ludCBhbmQgcmVwbGFjZSB0aGlzIGJ5dGVj
b2RlIGFuZCBvcF9ub3Agd2l0aCBvcF9yZXN1bWVfZnJvbV9nZW5lcmF0b3JfZnJhbWUgb3BlcmF0
aW9ucy4KKyAgICAgICAgICAgIFRoaXMgbWFrZXMgREZHIFNldExvY2FsIHRyZWF0bWVudCBzaW1w
bGUuIFdoaWxlIG9wX3Jlc3VtZV9oaW50IGRlZmluZXMgbXVsdGlwbGUgbG9jYWxzLCBvcF9yZXN1
bWVfZnJvbV9nZW5lcmF0b3JfZnJhbWUgb25seSBkZWZpbmVzIG9uZSBsb2NhbCAoZHN0KS4KKwor
ICAgICAgICAtIG9wX3Jlc3VtZV9mcm9tX2dlbmVyYXRvcl9mcmFtZQorCisgICAgICAgICAgICBU
aGlzIHJldHJpZXZlcyBsb2NhbCB2YXJpYWJsZSBmcm9tIHRoZSBnZW5lcmF0b3IgZnJhbWUuIG9w
X3Jlc3VtZV9oaW50IGFuZCBzdWJzZXF1ZW50IG9wX25vcCB3aWxsIGJlIHJlcGxhY2VkIHdpdGgg
dGhpcy4KKworICAgICAgICAtIG9wX2NsZWFyX2dlbmVyYXRvcl9mcmFtZQorCisgICAgICAgICAg
ICBUaGlzIGNsZWFycyBnZW5lcmF0b3IgZnJhbWUncyBsb2NhbHMgYnkgc2V0dGluZyBHZW5lcmF0
b3JGcmFtZTo6bV9udW1iZXJPZlNhdmVkQ2FsbGVlTG9jYWxzIGFzIDAuCisKKworICAgICAgICBI
ZXJlLCB3ZSBleHBsYWluIGFib3V0IGhvdyB0byBwcmVwcm9jZXNzIGJ5dGVjb2Rlcy4KKyAgICAg
ICAgRmlyc3QsIHdlIGVtaXQgb3Bfc2F2ZV9oaW50LCBvcF9yZXN1bWVfaGludCBhbmQgb3BfY2xl
YXJfZ2VuZXJhdG9yX2ZyYW1lIGxpa2UgdGhpcy4KKworICAgICAgICBbZW50cnldIC0rLS0+IFtz
YXZlIGJsb2NrXSAtPiBvcF9zYXZlX2hpbnQgKGl0IGlzIGJyYW5jaGluZyBieXRlY29kZSkgLS0t
LS0tPiBbbWVyZ2UgYmxvY2tdIC0+IC4uLgorICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBe
CisgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKy0+
IG9wX3JldCAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgICAgICAgKy0tLS0t
LS0tLS0tLS0tLS0tLT4gb3BfcmVzdW1lX2hpbnQgLT4gb3BfY2xlYXJfZ2VuZXJhdG9yX2ZyYW1l
IC0tLS0tKworCisgICAgICAgIEFuZCBwZXJmb3JtIGJ5dGVjb2RlIHVzZS1kZWYgYW5hbHlzaXMg
b250byB0aGlzIENGRy4gQnkgc2VlaW5nIGxpdmUgbG9jYWxzIGF0IHRoZSBoZWFkIG9mIFttZXJn
ZSBibG9ja10gd2UgY2FuIGZpbmQgIndoaWNoIGxvY2FscyB3ZSBzaG91bGQgc2F2ZSBhbmQgcmVz
dW1lIi4KKyAgICAgICAgQmFzZWQgb24gdGhlIGFib3ZlIGFuYWx5c2lzIHJlc3VsdCwgd2UgcGF0
Y2ggdGhlIGJ5dGVjb2RlIHN0cmVhbSBhcyBmb2xsb3dzLgorCisgICAgICAgIFtlbnRyeV0gLSst
LT4gW3NhdmUgYmxvY2tdIC0+IG9wX3NhdmUgLT4gb3BfcmV0ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICstPiBbbWVyZ2UgYmxvY2tdIC0+IC4uLgorICAgICAgICAgICAgICAgICB8ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB8CisgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgICAg
ICAgKy0tPiBvcF9yZXN1bWVfZnJvbV9nZW5lcmF0b3JfZnJhbWUgKiBuIC0+IG9wX2NsZWFyX2dl
bmVyYXRvcl9mcmFtZSAtKworCisgICAgICAgIFdoaWxlIG9wX3Jlc3VtZV9oaW50IHdpbGwgYXR0
ZW1wdCB0byBkZWZpbmUgbXVsdGlwbGUgbG9jYWxzIGF0IGEgdGltZSwgb3BfcmVzdW1lX2Zyb21f
Z2VuZXJhdG9yX2ZyYW1lIG9ubHkgZGVmaW5lcyBvbmUgbG9jYWwuIEl0IHNpbXBsaWZpZXMgREZH
IGFuYWx5c2lzLgorCisgICAgICAgIEFuZCB3ZSBpbnRyb2R1Y2VzIHNldmVyYWwgREZHIG5vZGVz
LgorCisgICAgICAgIC0gTmV3R2VuZXJhdG9yRnJhbWUKKworICAgICAgICAgICAgVGhpcyBqdXN0
IGFsbG9jYXRlcyBHZW5lcmF0b3JGcmFtZS4KKworICAgICAgICAtIFJlc2l6ZUdlbmVyYXRvckxv
Y2FscworCisgICAgICAgICAgICBUaGlzIHNldCBHZW5lcmF0b3JGcmFtZTo6bV9udW1iZXJPZlNh
dmVkQ2FsbGVlTG9jYWxzICpOKi4gVGhpcyBub2RlIGlzIHVzZWQgdG8gKDEpIGFsbG9jYXRlIHNw
YWNlIGZvciBsb2NhbHMgaW4gR2VuZXJhdG9yRnJhbWUgYW5kICgyKSBkZWFsbG9jYXRlIHNwYWNl
IGluCisgICAgICAgICAgICBHZW5lcmF0b3JGcmFtZSBieSBzZXR0aW5nIGl0IGFzIDAuCisKKyAg
ICAgICAgLSBHZXRHZW5lcmF0b3JMb2NhbAorCisgICAgICAgICAgICBHZXQgYSBzYXZlZCBsb2Nh
bCB2YXJpYWJsZSBmcm9tIGEgZ2VuZXJhdG9yIGZyYW1lLiBHZXRHZW5lcmF0b3JMb2NhbCBhbmQg
U2V0R2VuZXJhdG9yTG9jYWwgYXJlIGxpbmtlZCB3aXRoIEdlbmVyYXRvckxvY2FsRGF0YS4gU28g
dHlwZSBwcmVkaWNhdGlvbiBhbmQgZmxhZ3MKKyAgICAgICAgICAgIGFyZSBjb3JyZWN0bHkgcHJv
cGFnYXRlZCBiZXlvbmQgdGhlIGdlbmVyYXRvciBmcmFtZS4KKworICAgICAgICAtIFNldEdlbmVy
YXRvckxvY2FsCisKKyAgICAgICAgICAgIFN0b3JlIGEgbG9jYWwgdmFyaWFibGUgdG8gYSBnZW5l
cmF0b3IgZnJhbWUuCisKKyAgICAgICAgRnV0dXJlIHBsYW5zIGFyZSB0aGUgZm9sbG93aW5ncy4K
KworICAgICAgICAxLiBTdXBwb3J0IHRyYW5zZmVycmluZyBBYnN0cmFjdFZhbHVlIGJldHdlZW4g
U2V0R2VuZXJhdG9yTG9jYWwgYW5kIEdldEdlbmVyYXRvckxvY2FsLiBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUzMTgzCisKKyAgICAgICAgMi4gQ3JlYXRlIEpTR2Vu
ZXJhdG9yIGFuZCBhbGxvY2F0ZSBpdCBpbiB0aGUgZ2VuZXJhdG9yIHdyYXBwZXIgZnVuY3Rpb24u
IFRoaXMgc2hvdWxkIGJlIGNvbXBpbGVkIGluIERGRyAvIEZUTCBhbmQKKyAgICAgICAgdGhpcyBv
YmplY3Qgc2hvdWxkIGJlIHRyYWNrZWQgKGJ5IGVzY2FwZSBhbmFseXNpcykgYW5kIGVsaW1pbmF0
ZWQgaWYgcG9zc2libGUgYnkgb2JqZWN0IGFsbG9jYXRpb24gZWxpbWluYXRpb24uCisKKyAgICAg
ICAgMy4gQW5kIG9uY2Ugd2UgZXhwbG9pdCB0aGF0IEdlbmVyYXRvckZyYW1lIGlzIG5vdCBlc2Nh
cGVkIGZyb20gdGhlIGdpdmVuIEZUTC1lZCBmdW5jdGlvbiwgd2Ugd2lsbCBlbGltaW5hdGUgR2Vu
ZXJhdG9yRnJhbWUgYWxsb2NhdGlvbiBhbmQKKyAgICAgICAgY29udmVydCBHZW5lcmF0b3JMb2Nh
bCBvcGVyYXRpb25zIGludG8gZ2V0L3NldCBsb2NhbCBvcGVyYXRpb25zLgorCisgICAgICAgICog
SmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qOgorICAgICAgICAq
IEphdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzOgor
ICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAg
ICAgICogYnVpbHRpbnMvR2VuZXJhdG9yUHJvdG90eXBlLmpzOgorICAgICAgICAoZ2VuZXJhdG9y
UmVzdW1lKToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suY3BwOgorICAg
ICAgICAoSlNDOjppc0JyYW5jaCk6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpz
b246CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaDoKKyAgICAgICAgKEpTQzo6
Y29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OmNvbXB1dGVEZWZz
Rm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogYnl0ZWNvZGUvUHJlY2lzZUp1bXBU
YXJnZXRzLmNwcDoKKyAgICAgICAgKEpTQzo6Z2V0SnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNl
dCk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdHZW5lcmF0b3JGcmFtZSk6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0U2F2ZSk6CisgICAgICAgIChKU0M6OkJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0UmVzdW1lKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRv
ckZyYW1lUmVnaXN0ZXIpOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEhlYXAuaDoKKyAgICAg
ICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6
REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVj
dHMpOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6Om5ld0dlbmVyYXRvckxvY2FsRGF0YSk6CisgICAgICAgIChK
U0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAqIGRmZy9ERkdD
YXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmNhcGFiaWxpdHlMZXZlbCk6Cisg
ICAgICAgICogZGZnL0RGR0Nsb2JiZXJpemUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVy
aXplKToKKyAgICAgICAgKiBkZmcvREZHQ2xvYmJlcnNFeGl0U3RhdGUuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OmNsb2JiZXJzRXhpdFN0YXRlKToKKyAgICAgICAgKiBkZmcvREZHRG9lc0dDLmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpkb2VzR0MpOgorICAgICAgICAqIGRmZy9ERkdGaXh1cFBo
YXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5vZGUpOgorICAg
ICAgICAqIGRmZy9ERkdHZW5lcmF0b3JMb2NhbERhdGEuaDogQWRkZWQuCisgICAgICAgIChKU0M6
OkRGRzo6R2VuZXJhdG9yTG9jYWxEYXRhOjpwcmVkaWN0KToKKyAgICAgICAgKEpTQzo6REZHOjpH
ZW5lcmF0b3JMb2NhbERhdGE6OnByZWRpY3Rpb24pOgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5o
OgorICAgICAgICAqIGRmZy9ERkdNYXlFeGl0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjptYXlF
eGl0KToKKyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6
Omhhc0dlbmVyYXRvckxvY2Fsc1NpemUpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmdlbmVy
YXRvckxvY2Fsc1NpemUpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc0dlbmVyYXRvckxv
Y2FsSW5kZXgpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmdlbmVyYXRvckxvY2FsSW5kZXgp
OgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc0dlbmVyYXRvckxvY2FsRGF0YSk6CisgICAg
ICAgIChKU0M6OkRGRzo6Tm9kZTo6Z2VuZXJhdG9yTG9jYWxEYXRhKToKKyAgICAgICAgKEpTQzo6
REZHOjpOb2RlOjpoYXNHZW5lcmF0b3JGcmFtZUxvY2Fscyk6CisgICAgICAgIChKU0M6OkRGRzo6
Tm9kZTo6Z2VuZXJhdG9yRnJhbWVMb2NhbHMpOgorICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5o
OgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBkZmcvREZHT3Bl
cmF0aW9ucy5oOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2U6OnByb3Bh
Z2F0ZSk6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6
REZHOjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3R2VuZXJhdG9y
RnJhbWUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUmVzaXpl
R2VuZXJhdG9yTG9jYWxzKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAg
ICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2
ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6
CisgICAgICAgICogZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcDoKKyAgICAg
ICAgKiBkZmcvREZHU3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlND
OjpERkc6OlN0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlOjpydW4pOgorICAgICAgICAqIGZ0bC9G
VExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcDoKKyAgICAgICAgKiBmdGwvRlRMQWJzdHJhY3RI
ZWFwUmVwb3NpdG9yeS5oOgorICAgICAgICAqIGZ0bC9GVExDYXBhYmlsaXRpZXMuY3BwOgorICAg
ICAgICAoSlNDOjpGVEw6OmNhbkNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1Rv
TExWTS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvTExWTTo6Y29tcGls
ZU5vZGUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVS
ZXNpemVHZW5lcmF0b3JMb2NhbHMpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdU
b0xMVk06OmNvbXBpbGVTZXRHZW5lcmF0b3JMb2NhbCk6CisgICAgICAgIChKU0M6OkZUTDo6REZH
OjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZUdldEdlbmVyYXRvckxvY2FsKToKKyAgICAgICAgKEpT
Qzo6RlRMOjpERkc6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlTmV3R2VuZXJhdG9yRnJhbWUpOgor
ICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxl
TWFpblBhc3MpOgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUT3Bjb2Rl
cy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9yZXN1bWVfZnJvbV9nZW5lcmF0b3Jf
ZnJhbWUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfY2xlYXJfZ2VuZXJhdG9yX2ZyYW1l
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX25ld19nZW5lcmF0b3JfZnJhbWUpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bfbm9wKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29w
X3Jlc3VtZSk6IERlbGV0ZWQuCisgICAgICAgICogaml0L0pJVE9wY29kZXMzMl82NC5jcHA6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9yZXN1bWVfZnJvbV9nZW5lcmF0b3JfZnJhbWUpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfY2xlYXJfZ2VuZXJhdG9yX2ZyYW1lKToKKyAgICAg
ICAgKiBsbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwOgorICAgICAgICAqIGxsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIzMl82NC5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbToK
KyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVy
VHlwZT46OnBhcnNlSW5uZXIpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFy
c2VHZW5lcmF0b3JGdW5jdGlvblNvdXJjZUVsZW1lbnRzKToKKyAgICAgICAgKEpTQzo6UGFyc2Vy
PExleGVyVHlwZT46OmNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMpOgorICAgICAgICAqIHBhcnNl
ci9QYXJzZXIuaDoKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHA6CisgICAg
ICAgIChKU0M6OlNMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQ
YXRocy5oOgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJhdG9yRnJhbWUuY3BwOgorICAgICAgICAo
SlNDOjpHZW5lcmF0b3JGcmFtZTo6R2VuZXJhdG9yRnJhbWUpOgorICAgICAgICAoSlNDOjpHZW5l
cmF0b3JGcmFtZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFt
ZTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OmNyZWF0
ZSk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpzYXZlKToKKyAgICAgICAgKEpTQzo6
R2VuZXJhdG9yRnJhbWU6OnJlc3VtZSk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjp2
aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL0dlbmVyYXRvckZyYW1lLmg6CisgICAg
ICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpsb2NhbE9mZnNldCk6CisgICAgICAgIChKU0M6Okdl
bmVyYXRvckZyYW1lOjpudW1iZXJPZkNhbGxlZUxvY2Fsc09mZnNldCk6CisgICAgICAgIChKU0M6
OkdlbmVyYXRvckZyYW1lOjpudW1iZXJPZlNhdmVkQ2FsbGVlTG9jYWxzT2Zmc2V0KToKKyAgICAg
ICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OmxvY2FsQXQpOiBEZWxldGVkLgorICAgICAgICAqIHJ1
bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6
aW5pdCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlND
OjpKU0dsb2JhbE9iamVjdDo6Z2VuZXJhdG9yRnJhbWVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1
bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6Vk0pOiBEZWxldGVkLgorICAgICAgICAq
IHJ1bnRpbWUvVk0uaDoKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwt
YW5kLWFycmF5LmpzOiBBZGRlZC4KKyAgICAgICAgKGZpYik6CisgICAgICAgICogdGVzdHMvc3Ry
ZXNzL2dlbmVyYXRvci1maWItZnRsLWFuZC1vYmplY3QuanM6IEFkZGVkLgorICAgICAgICAoZmli
KToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwtYW5kLXN0cmluZy5q
czogQWRkZWQuCisgICAgICAgIChmaWIpOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9nZW5lcmF0
b3ItZmliLWZ0bC5qczogQWRkZWQuCisgICAgICAgIChmaWIpOgorCiAyMDE2LTAxLTE1ICBCZW5q
YW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIExlZ2Fs
aXplIE1lbW9yeSBPZmZzZXRzIGZvciBBUk02NCBiZWZvcmUgbG93ZXJpbmcgdG8gQWlyCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZh
U2NyaXB0Q29yZS52Y3hwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
LnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagppbmRleCBlMTgwZTM1YzIyOGUzYmFjMDY0
YzNmYTQ3Yzc3NzlkNjAyZjgyYmM5Li41ZjUxYzZiYTYzZTE1YmUzZmNiNmFjOWRlODM4MDBmYTVl
NDIzMmViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
dmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKQEAgLTExOTQs
NiArMTE5NCw3IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxkZmdcREZHRnJvemVuVmFs
dWUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGRmZ1xERkdGdW5jdGlvbldoaXRl
bGlzdC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cZGZnXERGR0dlbmVyYXRpb25J
bmZvLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxkZmdcREZHR2VuZXJhdG9yTG9j
YWxEYXRhLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxkZmdcREZHR1BSSW5mby5o
IiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cZGZnXERGR0dyYXBoLmgiIC8+CiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxkZmdcREZHR3JhcGhTYWZlcG9pbnQuaCIgLz4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFT
Y3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycwppbmRleCBiZjc1
NjBlYWE0YTNjMWNkNzk1OTNiMGIzYjYzMDQ1ODRhOTI0NjAyLi43MzkyZjFlZjlkM2I5YTA3ZDE2
YmNkZGYzOTRhNjliMTYyNmRhNDQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlw
dENvcmUudmN4cHJvai5maWx0ZXJzCkBAIC0zODcyLDYgKzM4NzIsOSBAQAogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5cZGZnXERGR0dlbmVyYXRpb25JbmZvLmgiPgogICAgICAgPEZpbHRlcj5k
Zmc8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XGRmZ1xERkdHZW5lcmF0b3JMb2NhbERhdGEuaCI+CisgICAgICA8RmlsdGVyPmRmZzwvRmlsdGVy
PgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cZGZnXERGR0dQ
UkluZm8uaCI+CiAgICAgICA8RmlsdGVyPmRmZzwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBhOTNhNmFhMWNhYTlhODI1NGNkMTZjNDVh
YjIzZGFhZmM5MDNmNGEyLi45ZjhkY2YwMTg2ZmRiMjAxNjUyZTcxNGRmMGMzZWRkNzkxOTcwYjE4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTI1MCw2ICsxMjUwLDcgQEAKIAkJ
NzA1QjQxQjAxQTZFNTAxRTAwNzE2NzU3IC8qIFN5bWJvbE9iamVjdC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzA1QjQxQTgxQTZFNTAxRTAwNzE2NzU3
IC8qIFN5bWJvbE9iamVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTcwNUI0MUIxMUE2RTUwMUUwMDcxNjc1NyAvKiBTeW1ib2xQcm90b3R5cGUu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzA1QjQx
QTkxQTZFNTAxRTAwNzE2NzU3IC8qIFN5bWJvbFByb3RvdHlwZS5jcHAgKi87IH07CiAJCTcwNUI0
MUIyMUE2RTUwMUUwMDcxNjc1NyAvKiBTeW1ib2xQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwNUI0MUFBMUE2RTUwMUUwMDcxNjc1NyAv
KiBTeW1ib2xQcm90b3R5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQk3MDc5MTQxRDFDNEFBODYwMDBCODJGRjcgLyogREZHR2VuZXJhdG9yTG9j
YWxEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
MDc5MTQxQzFDNEFBODA3MDBCODJGRjcgLyogREZHR2VuZXJhdG9yTG9jYWxEYXRhLmggKi87IH07
CiAJCTcwOTRDNERFMUFFNDM5NTMwMDQxQTJFRSAvKiBCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwOTRD
NERDMUFFNDM5NTMwMDQxQTJFRSAvKiBCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmNwcCAqLzsg
fTsKIAkJNzA5NEM0REYxQUU0Mzk1MzAwNDFBMkVFIC8qIEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0
cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwOTRD
NEREMUFFNDM5NTMwMDQxQTJFRSAvKiBCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzA5RkI4NjcxQUUz
MzVDNjAwMzlEMDY5IC8qIEpTV2Vha1NldC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3MDlGQjg2MTFBRTMzNUM2MDAzOUQwNjkgLyogSlNXZWFrU2V0
LmNwcCAqLzsgfTsKQEAgLTM0MjQsNiArMzQyNSw3IEBACiAJCTcwNUI0MUE4MUE2RTUwMUUwMDcx
Njc1NyAvKiBTeW1ib2xPYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U3ltYm9sT2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcwNUI0MUE5MUE2
RTUwMUUwMDcxNjc1NyAvKiBTeW1ib2xQcm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gU3ltYm9sUHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNzA1QjQxQUExQTZFNTAxRTAwNzE2NzU3IC8qIFN5bWJvbFByb3RvdHlwZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTeW1ib2xQcm90b3R5cGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzA3OTE0MUMxQzRBQTgwNzAwQjgyRkY3IC8qIERG
R0dlbmVyYXRvckxvY2FsRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBE
RkdHZW5lcmF0b3JMb2NhbERhdGEuaDsgcGF0aCA9IGRmZy9ERkdHZW5lcmF0b3JMb2NhbERhdGEu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzA5NEM0REMxQUU0Mzk1MzAwNDFBMkVF
IC8qIEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTcwOTRDNEREMUFFNDM5NTMwMDQxQTJFRSAvKiBCeXRlY29kZUlu
dHJpbnNpY1JlZ2lzdHJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJ5dGVj
b2RlSW50cmluc2ljUmVnaXN0cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzA5
RkI4NjExQUUzMzVDNjAwMzlEMDY5IC8qIEpTV2Vha1NldC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBKU1dlYWtTZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtNjIxOCw2ICs2MjIwLDcgQEAKIAkJCQkyQTg4MDY3NjE5MTA3RDU1MDBDQjBCQkIg
LyogREZHRnVuY3Rpb25XaGl0ZWxpc3QuY3BwICovLAogCQkJCTJBODgwNjc3MTkxMDdENTUwMENC
MEJCQiAvKiBERkdGdW5jdGlvbldoaXRlbGlzdC5oICovLAogCQkJCTg2RUM5REI2MTMyOERGODIw
MDJCMkFENyAvKiBERkdHZW5lcmF0aW9uSW5mby5oICovLAorCQkJCTcwNzkxNDFDMUM0QUE4MDcw
MEI4MkZGNyAvKiBERkdHZW5lcmF0b3JMb2NhbERhdGEuaCAqLywKIAkJCQk4NkVDOURCNzEzMjhE
RjgyMDAyQjJBRDcgLyogREZHR3JhcGguY3BwICovLAogCQkJCTg2RUM5REI4MTMyOERGODIwMDJC
MkFENyAvKiBERkdHcmFwaC5oICovLAogCQkJCTBGMkZDQ0YyMThBNjAwNzAwMDFBMjdGOCAvKiBE
RkdHcmFwaFNhZmVwb2ludC5jcHAgKi8sCkBAIC03OTY1LDYgKzc5NjgsNyBAQAogCQkJCTBGRTA1
MDI5MUFBOTA5NTYwMEQzM0IzMyAvKiBTY29wZWRBcmd1bWVudHNUYWJsZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEZFMDUwMkIxQUE5MDk1NjAwRDMzQjMzIC8qIFNjb3BlT2Zmc2V0LmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRjI0RTU1MjE3RUUyNzQ5MDBBQkIyMTcgLyogU2NyYXRjaFJlZ2lzdGVy
QWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQk3MDc5MTQxRDFDNEFBODYwMDBCODJGRjcg
LyogREZHR2VuZXJhdG9yTG9jYWxEYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNUZEMDA2ODE4
OUFGRTlDMDA2MzMyMzEgLyogU2NyaXB0QXJndW1lbnRzLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
NTAzRkEyMTE4OEVGRjY4MDAxMTBGMTQgLyogU2NyaXB0QnJlYWtwb2ludC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTVGRDAwNkUxODlCMDBBQTAwNjMzMjMxIC8qIFNjcmlwdENhbGxGcmFtZS5oIGlu
IEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMv
R2VuZXJhdG9yUHJvdG90eXBlLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0dl
bmVyYXRvclByb3RvdHlwZS5qcwppbmRleCBhM2JiYzM1MzRhZTA1MmY0ZDZmYTI1YmRlNzAzYzkz
ZDNhNzk1ZTExLi40OWRkYmY5Yzg0NjkzMzA2NTg3MTFmMThlNzIxNDliYzk4MjJkYTM0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvR2VuZXJhdG9yUHJvdG90eXBl
LmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9HZW5lcmF0b3JQcm90b3R5
cGUuanMKQEAgLTU4LDcgKzU4LDcgQEAgZnVuY3Rpb24gZ2VuZXJhdG9yUmVzdW1lKGdlbmVyYXRv
ciwgc2VudFZhbHVlLCByZXN1bWVNb2RlKQogICAgIH0gZWxzZSB7CiAgICAgICAgIHRyeSB7CiAg
ICAgICAgICAgICBnZW5lcmF0b3IuQGdlbmVyYXRvclN0YXRlID0gRXhlY3V0aW5nOwotICAgICAg
ICAgICAgdmFsdWUgPSBnZW5lcmF0b3IuQGdlbmVyYXRvck5leHQuQGNhbGwoZ2VuZXJhdG9yLkBn
ZW5lcmF0b3JUaGlzLCBnZW5lcmF0b3IsIHN0YXRlLCBzZW50VmFsdWUsIHJlc3VtZU1vZGUpOwor
ICAgICAgICAgICAgdmFsdWUgPSBnZW5lcmF0b3IuQGdlbmVyYXRvck5leHQuQGNhbGwoZ2VuZXJh
dG9yLkBnZW5lcmF0b3JUaGlzLCBnZW5lcmF0b3IsIHN0YXRlLCBzZW50VmFsdWUsIHJlc3VtZU1v
ZGUsIGdlbmVyYXRvci5AZ2VuZXJhdG9yRnJhbWUpOwogICAgICAgICAgICAgaWYgKGdlbmVyYXRv
ci5AZ2VuZXJhdG9yU3RhdGUgPT09IEV4ZWN1dGluZykgewogICAgICAgICAgICAgICAgIGdlbmVy
YXRvci5AZ2VuZXJhdG9yU3RhdGUgPSBDb21wbGV0ZWQ7CiAgICAgICAgICAgICAgICAgZG9uZSA9
IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVCYXNpY0Jsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZUJhc2ljQmxvY2suY3BwCmluZGV4IDdmMTdjMGVmMTBiNDMzZmFjOGY1OGNiM2I5Y2E1ZDRkMDE1
YmJhMDguLjVhYTE4ZTRjYWY3YTU3NWRkNjQ1ZDZmNmVkNzk3MjhhZjczYmQyNmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2su
Y3BwCkBAIC01OCw3ICs1OCw3IEBAIHN0YXRpYyBib29sIGlzQnJhbmNoKE9wY29kZUlEIG9wY29k
ZUlEKQogICAgIGNhc2Ugb3Bfc3dpdGNoX2ltbToKICAgICBjYXNlIG9wX3N3aXRjaF9jaGFyOgog
ICAgIGNhc2Ugb3Bfc3dpdGNoX3N0cmluZzoKLSAgICBjYXNlIG9wX3NhdmU6CisgICAgY2FzZSBv
cF9zYXZlX2hpbnQ6CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGRlZmF1bHQ6CiAgICAgICAg
IHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZUxpc3QuanNvbiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZUxpc3QuanNvbgppbmRleCAwNTNiOGRjOWI4NjRmMWI4NmI0Y2VjN2FhNjAxZjdjZTJmMDNm
MmU0Li4wOGFhYzEyMjU5YzY4ZGEwZTFhYmM5MDkwYmU1NGM5NTVmYjMzMDA1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24KKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCkBAIC0xNiw2
ICsxNiw3IEBACiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXdfYXJyYXlfd2l0aF9zaXpl
IiwgImxlbmd0aCIgOiA0IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXdfYXJyYXlf
YnVmZmVyIiwgImxlbmd0aCIgOiA1IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXdf
cmVnZXhwIiwgImxlbmd0aCIgOiAzIH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXdf
Z2VuZXJhdG9yX2ZyYW1lIiwgImxlbmd0aCIgOiAzIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6
ICJvcF9tb3YiLCAibGVuZ3RoIiA6IDMgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX25v
dCIsICJsZW5ndGgiIDogMyB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfZXEiLCAibGVu
Z3RoIiA6IDQgfSwKQEAgLTEzNCw3ICsxMzUsMTEgQEAKICAgICAgICAgICAgIHsgIm5hbWUiIDog
Im9wX2NvcHlfcmVzdCIsICJsZW5ndGgiOiA0IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJv
cF9nZXRfcmVzdF9sZW5ndGgiLCAibGVuZ3RoIjogMyB9LAogICAgICAgICAgICAgeyAibmFtZSIg
OiAib3Bfc2F2ZSIsICJsZW5ndGgiIDogNCB9LAotICAgICAgICAgICAgeyAibmFtZSIgOiAib3Bf
cmVzdW1lIiwgImxlbmd0aCIgOiAzIH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9zYXZl
X2hpbnQiLCAibGVuZ3RoIiA6IDQgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX3Jlc3Vt
ZV9oaW50IiwgImxlbmd0aCIgOiA0IH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9yZXN1
bWVfZnJvbV9nZW5lcmF0b3JfZnJhbWUiLCAibGVuZ3RoIiA6IDQgfSwKKyAgICAgICAgICAgIHsg
Im5hbWUiIDogIm9wX2NsZWFyX2dlbmVyYXRvcl9mcmFtZSIsICJsZW5ndGgiIDogMiB9LAorICAg
ICAgICAgICAgeyAibmFtZSIgOiAib3Bfbm9wIiwgImxlbmd0aCIgOiAxIH0sCiAgICAgICAgICAg
ICB7ICJuYW1lIiA6ICJvcF93YXRjaGRvZyIsICJsZW5ndGgiIDogMSB9CiAgICAgICAgIF0KICAg
ICB9LApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
VXNlRGVmLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYu
aAppbmRleCA4MDExMTRjMzcyYTI3N2Y2ZTE3NzA5YjkwYmUyMDdjOGY5OWJlODJkLi5kYWVmODFj
MjY5YmI1NDE1NGVhNmI2ZGM4MzhhZmM2OWNlZTcyYzk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaApAQCAtNTUsNiArNTUsOCBAQCB2b2lk
IGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoCiAgICAgY2FzZSBvcF9jcmVhdGVfb3V0X29m
X2JhbmRfYXJndW1lbnRzOgogICAgIGNhc2Ugb3BfZ2V0X3Jlc3RfbGVuZ3RoOgogICAgIGNhc2Ug
b3Bfd2F0Y2hkb2c6CisgICAgY2FzZSBvcF9uZXdfZ2VuZXJhdG9yX2ZyYW1lOgorICAgIGNhc2Ug
b3Bfbm9wOgogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBvcF9hc3NlcnQ6CiAgICAgY2FzZSBv
cF9nZXRfc2NvcGU6CkBAIC03Miw3ICs3NCw4IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29k
ZU9mZnNldCgKICAgICBjYXNlIG9wX2puZXFfbnVsbDoKICAgICBjYXNlIG9wX2RlYzoKICAgICBj
YXNlIG9wX2luYzoKLSAgICBjYXNlIG9wX3Jlc3VtZTogeworICAgIGNhc2Ugb3BfcmVzdW1lX2hp
bnQ6CisgICAgY2FzZSBvcF9jbGVhcl9nZW5lcmF0b3JfZnJhbWU6IHsKICAgICAgICAgQVNTRVJU
KG9wY29kZUxlbmd0aHNbb3Bjb2RlSURdID49IDEpOwogICAgICAgICBmdW5jdG9yKGNvZGVCbG9j
aywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBpbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOwogICAg
ICAgICByZXR1cm47CkBAIC0xNjUsNyArMTY4LDggQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVj
b2RlT2Zmc2V0KAogICAgIGNhc2Ugb3BfbmV3X2dlbmVyYXRvcl9mdW5jOgogICAgIGNhc2Ugb3Bf
Z2V0X3BhcmVudF9zY29wZToKICAgICBjYXNlIG9wX2NyZWF0ZV9zY29wZWRfYXJndW1lbnRzOgot
ICAgIGNhc2Ugb3BfZ2V0X2Zyb21fYXJndW1lbnRzOiB7CisgICAgY2FzZSBvcF9nZXRfZnJvbV9h
cmd1bWVudHM6CisgICAgY2FzZSBvcF9yZXN1bWVfZnJvbV9nZW5lcmF0b3JfZnJhbWU6IHsKICAg
ICAgICAgQVNTRVJUKG9wY29kZUxlbmd0aHNbb3Bjb2RlSURdID49IDIpOwogICAgICAgICBmdW5j
dG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBpbnN0cnVjdGlvblsyXS51Lm9w
ZXJhbmQpOwogICAgICAgICByZXR1cm47CkBAIC0yNTAsNyArMjU0LDcgQEAgdm9pZCBjb21wdXRl
VXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAogICAgICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGlu
c3RydWN0aW9uLCBvcGNvZGVJRCwgbGFzdEFyZyArIGkpOwogICAgICAgICByZXR1cm47CiAgICAg
fQotICAgIGNhc2Ugb3Bfc2F2ZTogeworICAgIGNhc2Ugb3Bfc2F2ZV9oaW50OiB7CiAgICAgICAg
IGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzFd
LnUub3BlcmFuZCk7CiAgICAgICAgIHVuc2lnbmVkIG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldCA9
IGJ5dGVjb2RlT2Zmc2V0ICsgaW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kOwogICAgICAgICBCeXRl
Y29kZUJhc2ljQmxvY2sqIG1lcmdlUG9pbnRCbG9jayA9IG51bGxwdHI7CkBAIC0yNjYsNiArMjcw
LDE1IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCgKICAgICAgICAgfSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CisgICAgY2FzZSBvcF9zYXZlOiB7CisgICAgICAgIGZ1bmN0
b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzFdLnUub3Bl
cmFuZCk7CisgICAgICAgIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9IGluc3RydWN0
aW9uWzJdLnUudW5zaWduZWRWYWx1ZTsKKyAgICAgICAgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2
ZW5lc3MgPSBjb2RlQmxvY2stPmxpdmVDYWxsZWVMb2NhbHNBdFlpZWxkKGxpdmVDYWxsZWVMb2Nh
bHNJbmRleCk7CisgICAgICAgIGxpdmVuZXNzLmZvckVhY2hTZXRCaXQoWyZdKHVuc2lnbmVkIGxv
Y2FsKSB7CisgICAgICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29k
ZUlELCB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChsb2NhbCkub2Zmc2V0KCkpOworICAgICAgICB9
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KICAgICBkZWZhdWx0OgogICAgICAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBicmVhazsKQEAgLTI4OSw2ICszMDIsNyBA
QCB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvYwogICAgIGNhc2Ugb3BfdGhyb3c6CiAgICAgY2FzZSBv
cF90aHJvd19zdGF0aWNfZXJyb3I6CiAgICAgY2FzZSBvcF9zYXZlOgorICAgIGNhc2Ugb3Bfc2F2
ZV9oaW50OgogICAgIGNhc2Ugb3BfYXNzZXJ0OgogICAgIGNhc2Ugb3BfZGVidWc6CiAgICAgY2Fz
ZSBvcF9yZXQ6CkBAIC0zMjMsNiArMzM3LDggQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2Rl
T2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2MKICAg
ICBjYXNlIG9wX3Byb2ZpbGVfY29udHJvbF9mbG93OgogICAgIGNhc2Ugb3BfcHV0X3RvX2FyZ3Vt
ZW50czoKICAgICBjYXNlIG9wX3dhdGNoZG9nOgorICAgIGNhc2Ugb3BfY2xlYXJfZ2VuZXJhdG9y
X2ZyYW1lOgorICAgIGNhc2Ugb3Bfbm9wOgogI2RlZmluZSBMTElOVF9IRUxQRVJfT1BDT0RFUyhv
cGNvZGUsIGxlbmd0aCkgY2FzZSBvcGNvZGU6CiAgICAgICAgIEZPUl9FQUNIX0xMSU5UX09QQ09E
RV9FWFRFTlNJT04oTExJTlRfSEVMUEVSX09QQ09ERVMpOwogI3VuZGVmIExMSU5UX0hFTFBFUl9P
UENPREVTCkBAIC00MTUsNyArNDMxLDkgQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zm
c2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2MKICAgICBj
YXNlIG9wX2RlbF9ieV92YWw6CiAgICAgY2FzZSBvcF91bnNpZ25lZDoKICAgICBjYXNlIG9wX2dl
dF9mcm9tX2FyZ3VtZW50czogCi0gICAgY2FzZSBvcF9nZXRfcmVzdF9sZW5ndGg6IHsKKyAgICBj
YXNlIG9wX2dldF9yZXN0X2xlbmd0aDoKKyAgICBjYXNlIG9wX25ld19nZW5lcmF0b3JfZnJhbWU6
CisgICAgY2FzZSBvcF9yZXN1bWVfZnJvbV9nZW5lcmF0b3JfZnJhbWU6IHsKICAgICAgICAgQVNT
RVJUKG9wY29kZUxlbmd0aHNbb3Bjb2RlSURdID4gMSk7CiAgICAgICAgIGZ1bmN0b3IoY29kZUJs
b2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CiAg
ICAgICAgIHJldHVybjsKQEAgLTQzMSw3ICs0NDksNyBAQCB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0
ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxv
YwogICAgICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwg
dmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaSkub2Zmc2V0KCkpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQotICAgIGNhc2Ugb3BfcmVzdW1lOiB7CisgICAgY2FzZSBvcF9yZXN1bWVfaGludDogewog
ICAgICAgICBSRUxFQVNFX0FTU0VSVChibG9jay0+c3VjY2Vzc29ycygpLnNpemUoKSA9PSAxKTsK
ICAgICAgICAgYmxvY2stPnN1Y2Nlc3NvcnMoKVswXS0+aW4oKS5mb3JFYWNoU2V0Qml0KFsmXSh1
bnNpZ25lZCBsb2NhbCkgewogICAgICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0
aW9uLCBvcGNvZGVJRCwgdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwobG9jYWwpLm9mZnNldCgpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKaW5kZXggNTkw
NWU5MTgzYzhmMTI2NjRlMmJhM2RkMjlhNWM0NjU2NzY4ZGMwMy4uZGEzZTU4ZDAxNmJkYmUwZmY2
NzcxYjBjMmZiYWI5MTgyNGI2NTZlMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5jcHAKQEAgLTE1NTYsMjcgKzE1NTYsNjMgQEAgdm9pZCBDb2RlQmxvY2s6
OmR1bXBCeXRlY29kZSgKICAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAlZCIsIGRlYnVnSG9v
a05hbWUoZGVidWdIb29rSUQpLCBoYXNCcmVha3BvaW50RmxhZyk7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQotICAgICAgICBjYXNlIG9wX3NhdmU6IHsKLSAgICAgICAgICAgIGludCBn
ZW5lcmF0b3IgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgY2FzZSBvcF9zYXZlX2hpbnQ6
IHsKKyAgICAgICAgICAgIGludCBmcmFtZSA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAg
ICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gKCsraXQpLT51LnVuc2lnbmVkVmFs
dWU7CiAgICAgICAgICAgICBpbnQgb2Zmc2V0ID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAg
ICAgICBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlbmVzcyA9IG1fcmFyZURhdGEtPm1fbGl2ZUNh
bGxlZUxvY2Fsc0F0WWllbGRbbGl2ZUNhbGxlZUxvY2Fsc0luZGV4XTsKICAgICAgICAgICAgIHBy
aW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgInNhdmUiKTsKLSAgICAg
ICAgICAgIG91dC5wcmludGYoIiVzLCAiLCByZWdpc3Rlck5hbWUoZ2VuZXJhdG9yKS5kYXRhKCkp
OworICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICIsIHJlZ2lzdGVyTmFtZShmcmFtZSkuZGF0
YSgpKTsKICAgICAgICAgICAgIGxpdmVuZXNzLmR1bXAob3V0KTsKICAgICAgICAgICAgIG91dC5w
cmludGYoIihAbGl2ZSUxdSksICVkKC0+JWQpIiwgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4LCBvZmZz
ZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0g
ICAgICAgIGNhc2Ugb3BfcmVzdW1lOiB7Ci0gICAgICAgICAgICBpbnQgZ2VuZXJhdG9yID0gKCsr
aXQpLT51Lm9wZXJhbmQ7CisgICAgICAgIGNhc2Ugb3Bfc2F2ZTogeworICAgICAgICAgICAgaW50
IGZyYW1lID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICB1bnNpZ25lZCBsaXZlQ2Fs
bGVlTG9jYWxzSW5kZXggPSAoKytpdCktPnUudW5zaWduZWRWYWx1ZTsKKyAgICAgICAgICAgICsr
aXQ7IC8vIGRpc2NhcmQgb2Zmc2V0LgogICAgICAgICAgICAgY29uc3QgRmFzdEJpdFZlY3RvciYg
bGl2ZW5lc3MgPSBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkW2xpdmVDYWxs
ZWVMb2NhbHNJbmRleF07Ci0gICAgICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBleGVj
LCBsb2NhdGlvbiwgaXQsICJyZXN1bWUiKTsKLSAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAi
LCByZWdpc3Rlck5hbWUoZ2VuZXJhdG9yKS5kYXRhKCkpOworICAgICAgICAgICAgcHJpbnRMb2Nh
dGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAic2F2ZSIpOworICAgICAgICAgICAg
b3V0LnByaW50ZigiJXMsICIsIHJlZ2lzdGVyTmFtZShmcmFtZSkuZGF0YSgpKTsKICAgICAgICAg
ICAgIGxpdmVuZXNzLmR1bXAob3V0KTsKICAgICAgICAgICAgIG91dC5wcmludGYoIihAbGl2ZSUx
dSkiLCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KKyAgICAgICAgY2FzZSBvcF9yZXN1bWVfaGludDogeworICAgICAgICAgICAgaW50IGZyYW1l
ID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9j
YWxzSW5kZXggPSAoKytpdCktPnUudW5zaWduZWRWYWx1ZTsKKyAgICAgICAgICAgIHVuc2lnbmVk
IG1heExpdmVDYWxsZWVzID0gKCsraXQpLT51LnVuc2lnbmVkVmFsdWU7CisgICAgICAgICAgICBj
b25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlbmVzcyA9IG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxv
Y2Fsc0F0WWllbGRbbGl2ZUNhbGxlZUxvY2Fsc0luZGV4XTsKKyAgICAgICAgICAgIHByaW50TG9j
YXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgInJlc3VtZSIpOworICAgICAgICAg
ICAgb3V0LnByaW50ZigiJXMsICIsIHJlZ2lzdGVyTmFtZShmcmFtZSkuZGF0YSgpKTsKKyAgICAg
ICAgICAgIGxpdmVuZXNzLmR1bXAob3V0KTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIihAbGl2
ZSUxdSksICV1IiwgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4LCBtYXhMaXZlQ2FsbGVlcyk7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIG9wX3Jlc3VtZV9mcm9tX2dl
bmVyYXRvcl9mcmFtZTogeworICAgICAgICAgICAgaW50IGRzdCA9ICgrK2l0KS0+dS5vcGVyYW5k
OworICAgICAgICAgICAgaW50IGZyYW1lID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAg
ICB1bnNpZ25lZCBpbmRleCA9ICgrK2l0KS0+dS51bnNpZ25lZFZhbHVlOworICAgICAgICAgICAg
cHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAicmVzdW1lX2Zyb21f
Z2VuZXJhdG9yX2ZyYW1lIik7CisgICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMsICV1Iiwg
cmVnaXN0ZXJOYW1lKGRzdCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZnJhbWUpLmRhdGEoKSwgaW5k
ZXgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9jbGVh
cl9nZW5lcmF0b3JfZnJhbWU6IHsKKyAgICAgICAgICAgIGludCBmcmFtZSA9ICgrK2l0KS0+dS5v
cGVyYW5kOworICAgICAgICAgICAgcHJpbnRMb2NhdGlvbk9wQW5kUmVnaXN0ZXJPcGVyYW5kKG91
dCwgZXhlYywgbG9jYXRpb24sIGl0LCAiY2xlYXJfZ2VuZXJhdG9yX2ZyYW1lIiwgZnJhbWUpOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9uZXdfZ2VuZXJh
dG9yX2ZyYW1lOiB7CisgICAgICAgICAgICBpbnQgZHN0ID0gKCsraXQpLT51Lm9wZXJhbmQ7Cisg
ICAgICAgICAgICB1bnNpZ25lZCBnZW5lcmF0b3JMb2NhbHNTaXplID0gKCsraXQpLT51LnVuc2ln
bmVkVmFsdWU7CisgICAgICAgICAgICBwcmludExvY2F0aW9uT3BBbmRSZWdpc3Rlck9wZXJhbmQo
b3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJuZXdfZ2VuZXJhdG9yX2ZyYW1lIiwgZHN0KTsKKyAg
ICAgICAgICAgIG91dC5wcmludGYoIiAldSIsIGdlbmVyYXRvckxvY2Fsc1NpemUpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9ub3A6IHsKKyAgICAgICAg
ICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgIm5vcCIpOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9hc3NlcnQ6IHsK
ICAgICAgICAgICAgIGludCBjb25kaXRpb24gPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAg
ICAgIGludCBsaW5lID0gKCsraXQpLT51Lm9wZXJhbmQ7CkBAIC0xODQ3LDYgKzE4ODMsMTIgQEAg
dm9pZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgQ29weVBhcnNlZEJsb2NrVGFn
LCBDb2RlQmxvY2smIG90aGVyKQogICAgIHNldE51bVBhcmFtZXRlcnModW5saW5rZWRDb2RlQmxv
Y2stPm51bVBhcmFtZXRlcnMoKSk7CiB9CiAKK3N0cnVjdCBHZW5lcmF0b3JQb2ludHMgeworICAg
IHNpemVfdCBzYXZlUG9pbnQ7CisgICAgc2l6ZV90IG1lcmdlUG9pbnQ7CisgICAgc2l6ZV90IHJl
c3VtZVBvaW50OworfTsKKwogdm9pZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwg
U2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmtlZENvZGVCbG9jayogdW5s
aW5rZWRDb2RlQmxvY2ssCiAgICAgSlNTY29wZSogc2NvcGUpCiB7CkBAIC0xOTgwLDkgKzIwMjIs
MTAgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0
YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICBIYXNoU2V0PEpTTW9kdWxlRW52aXJv
bm1lbnQqPiBzdHJvbmdseVJlZmVyZW5jZWRNb2R1bGVFbnZpcm9ubWVudHM7CiAKICAgICAvLyBC
b29ra2VlcCB0aGUgbWVyZ2UgcG9pbnQgYnl0ZWNvZGUgb2Zmc2V0cy4KLSAgICBWZWN0b3I8c2l6
ZV90PiBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXRzOworICAgIFZlY3RvcjxHZW5lcmF0b3JQb2lu
dHM+IGdlbmVyYXRvclBvaW50c1ZlY3RvcjsKIAogICAgIFJlZkNvdW50ZWRBcnJheTxJbnN0cnVj
dGlvbj4gaW5zdHJ1Y3Rpb25zKGluc3RydWN0aW9uQ291bnQpOworICAgIHVuc2lnbmVkIG5ld0dl
bmVyYXRvckZyYW1lSW5zdHJ1Y3Rpb25PZmZzZXQgPSAwOwogCiAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgIWluc3RydWN0aW9uUmVhZGVyLmF0RW5kKCk7ICkgewogICAgICAgICBjb25zdCBVbmxp
bmtlZEluc3RydWN0aW9uKiBwYyA9IGluc3RydWN0aW9uUmVhZGVyLm5leHQoKTsKQEAgLTIyNzAs
MTIgKzIzMTMsMjYgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2Ny
aXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAKLSAgICAgICAgY2FzZSBvcF9zYXZlOiB7CisgICAgICAgIGNhc2Ugb3Bf
c2F2ZV9oaW50OiB7CiAgICAgICAgICAgICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXgg
PSBwY1syXS51LmluZGV4OwogICAgICAgICAgICAgaW50IG9mZnNldCA9IHBjWzNdLnUub3BlcmFu
ZDsKLSAgICAgICAgICAgIGlmIChsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPj0gbWVyZ2VQb2ludEJ5
dGVjb2RlT2Zmc2V0cy5zaXplKCkpCi0gICAgICAgICAgICAgICAgbWVyZ2VQb2ludEJ5dGVjb2Rl
T2Zmc2V0cy5yZXNpemUobGl2ZUNhbGxlZUxvY2Fsc0luZGV4ICsgMSk7Ci0gICAgICAgICAgICBt
ZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXRzW2xpdmVDYWxsZWVMb2NhbHNJbmRleF0gPSBpICsgb2Zm
c2V0OworICAgICAgICAgICAgaWYgKGxpdmVDYWxsZWVMb2NhbHNJbmRleCA+PSBnZW5lcmF0b3JQ
b2ludHNWZWN0b3Iuc2l6ZSgpKQorICAgICAgICAgICAgICAgIGdlbmVyYXRvclBvaW50c1ZlY3Rv
ci5yZXNpemUobGl2ZUNhbGxlZUxvY2Fsc0luZGV4ICsgMSk7CisgICAgICAgICAgICBnZW5lcmF0
b3JQb2ludHNWZWN0b3JbbGl2ZUNhbGxlZUxvY2Fsc0luZGV4XS5zYXZlUG9pbnQgPSBpOworICAg
ICAgICAgICAgZ2VuZXJhdG9yUG9pbnRzVmVjdG9yW2xpdmVDYWxsZWVMb2NhbHNJbmRleF0ubWVy
Z2VQb2ludCA9IGkgKyBvZmZzZXQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisg
ICAgICAgIGNhc2Ugb3BfcmVzdW1lX2hpbnQ6IHsKKyAgICAgICAgICAgIHVuc2lnbmVkIGxpdmVD
YWxsZWVMb2NhbHNJbmRleCA9IHBjWzJdLnUuaW5kZXg7CisgICAgICAgICAgICBpZiAobGl2ZUNh
bGxlZUxvY2Fsc0luZGV4ID49IGdlbmVyYXRvclBvaW50c1ZlY3Rvci5zaXplKCkpCisgICAgICAg
ICAgICAgICAgZ2VuZXJhdG9yUG9pbnRzVmVjdG9yLnJlc2l6ZShsaXZlQ2FsbGVlTG9jYWxzSW5k
ZXggKyAxKTsKKyAgICAgICAgICAgIGdlbmVyYXRvclBvaW50c1ZlY3RvcltsaXZlQ2FsbGVlTG9j
YWxzSW5kZXhdLnJlc3VtZVBvaW50ID0gaTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9
CisKKyAgICAgICAgY2FzZSBvcF9uZXdfZ2VuZXJhdG9yX2ZyYW1lOiB7CisgICAgICAgICAgICBu
ZXdHZW5lcmF0b3JGcmFtZUluc3RydWN0aW9uT2Zmc2V0ID0gaTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAKQEAgLTIyODUsMjUgKzIzNDIsNjQgQEAgdm9pZCBDb2RlQmxvY2s6OmZp
bmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBV
bmxpbmsKICAgICAgICAgaSArPSBvcExlbmd0aDsKICAgICB9CiAKLSAgICBpZiAodm0uY29udHJv
bEZsb3dQcm9maWxlcigpKQotICAgICAgICBpbnNlcnRCYXNpY0Jsb2NrQm91bmRhcmllc0ZvckNv
bnRyb2xGbG93UHJvZmlsZXIoaW5zdHJ1Y3Rpb25zKTsKLQogICAgIG1faW5zdHJ1Y3Rpb25zID0g
V1RGTW92ZShpbnN0cnVjdGlvbnMpOwogCi0gICAgLy8gUGVyZm9ybSBieXRlY29kZSBsaXZlbmVz
cyBhbmFseXNpcyB0byBkZXRlcm1pbmUgd2hpY2ggbG9jYWxzIGFyZSBsaXZlIGFuZCBzaG91bGQg
YmUgcmVzdW1lZCB3aGVuIGV4ZWN1dGluZyBvcF9yZXN1bWUuCisgICAgLy8gUGVyZm9ybSBieXRl
Y29kZSBsaXZlbmVzcyBhbmFseXNpcyB0byBkZXRlcm1pbmUgd2hpY2ggbG9jYWxzIGFyZSBsaXZl
IGFuZCBzaG91bGQgYmUgcmVzdW1lZCB3aGVuIGV4ZWN1dGluZyBvcF9yZXN1bWVfaGludC4KICAg
ICBpZiAodW5saW5rZWRDb2RlQmxvY2stPnBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6
R2VuZXJhdG9yQm9keU1vZGUpIHsKLSAgICAgICAgaWYgKHNpemVfdCBjb3VudCA9IG1lcmdlUG9p
bnRCeXRlY29kZU9mZnNldHMuc2l6ZSgpKSB7CisgICAgICAgIHVuc2lnbmVkIG1heEdlbmVyYXRv
ckxvY2Fsc1NpemUgPSAwOworICAgICAgICBpZiAoc2l6ZV90IGNvdW50ID0gZ2VuZXJhdG9yUG9p
bnRzVmVjdG9yLnNpemUoKSkgewogICAgICAgICAgICAgY3JlYXRlUmFyZURhdGFJZk5lY2Vzc2Fy
eSgpOwotICAgICAgICAgICAgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzIGxpdmVuZXNzKHRoaXMp
OwogICAgICAgICAgICAgbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZC5ncm93
KGNvdW50KTsKLSAgICAgICAgICAgIHNpemVfdCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSAwOwot
ICAgICAgICAgICAgZm9yIChzaXplX3QgYnl0ZWNvZGVPZmZzZXQgOiBtZXJnZVBvaW50Qnl0ZWNv
ZGVPZmZzZXRzKSB7Ci0gICAgICAgICAgICAgICAgbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9j
YWxzQXRZaWVsZFtsaXZlQ2FsbGVlTG9jYWxzSW5kZXhdID0gbGl2ZW5lc3MuZ2V0TGl2ZW5lc3NJ
bmZvQXRCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCk7Ci0gICAgICAgICAgICAgICAgKyts
aXZlQ2FsbGVlTG9jYWxzSW5kZXg7CisKKyAgICAgICAgICAgIC8vIEZpcnN0LCBwZXJmb3JtIGJ5
dGVjb2RlIHVzZS1kZWYgYW5hbHlzaXMgb250byB0aGUgY3VycmVudCBieXRlY29kZSBzdHJlYW0g
YW5kIGNhbGN1bGF0ZSBsaXZlIGxvY2FscyBhdCB0aGUgbWVyZ2UgcG9pbnRzLgorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcyBsaXZlbmVzcyh0
aGlzKTsKKyAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXgg
PSAwOyBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPCBnZW5lcmF0b3JQb2ludHNWZWN0b3Iuc2l6ZSgp
OyArK2xpdmVDYWxsZWVMb2NhbHNJbmRleCkgeworICAgICAgICAgICAgICAgICAgICBjb25zdCBH
ZW5lcmF0b3JQb2ludHMmIHBvaW50cyA9IGdlbmVyYXRvclBvaW50c1ZlY3RvcltsaXZlQ2FsbGVl
TG9jYWxzSW5kZXhdOworICAgICAgICAgICAgICAgICAgICBzaXplX3QgbWVyZ2VQb2ludEJ5dGVj
b2RlT2Zmc2V0ID0gcG9pbnRzLm1lcmdlUG9pbnQ7CisgICAgICAgICAgICAgICAgICAgIEZhc3RC
aXRWZWN0b3IgbGl2ZW5lc3NWZWN0b3IgPSBsaXZlbmVzcy5nZXRMaXZlbmVzc0luZm9BdEJ5dGVj
b2RlT2Zmc2V0KG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldCk7CisgICAgICAgICAgICAgICAgICAg
IG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGRbbGl2ZUNhbGxlZUxvY2Fsc0lu
ZGV4XSA9IGxpdmVuZXNzVmVjdG9yOworICAgICAgICAgICAgICAgICAgICBtYXhHZW5lcmF0b3JM
b2NhbHNTaXplID0gc3RkOjptYXg8dW5zaWduZWQ+KG1heEdlbmVyYXRvckxvY2Fsc1NpemUsIGxp
dmVuZXNzVmVjdG9yLmJpdENvdW50KCkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgLy8gVGhlbiwgcmV3cml0ZSBieXRlY29kZXMgYmFzZWQgb24gdGhl
IGNhbGN1bGF0ZWQgbGl2ZW5lc3MuCisgICAgICAgICAgICAvLyBEbyBub3QgcmV3cml0ZSBieXRl
Y29kZXMgd2hpbGUgY29udGludWluZyBsaXZlbmVzcyBhbmFseXNpcy4KKyAgICAgICAgICAgIGZv
ciAoc2l6ZV90IGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9IDA7IGxpdmVDYWxsZWVMb2NhbHNJbmRl
eCA8IGdlbmVyYXRvclBvaW50c1ZlY3Rvci5zaXplKCk7ICsrbGl2ZUNhbGxlZUxvY2Fsc0luZGV4
KSB7CisgICAgICAgICAgICAgICAgY29uc3QgR2VuZXJhdG9yUG9pbnRzJiBwb2ludHMgPSBnZW5l
cmF0b3JQb2ludHNWZWN0b3JbbGl2ZUNhbGxlZUxvY2Fsc0luZGV4XTsKKyAgICAgICAgICAgICAg
ICBzaXplX3Qgc2F2ZVBvaW50Qnl0ZWNvZGVPZmZzZXQgPSBwb2ludHMuc2F2ZVBvaW50OworICAg
ICAgICAgICAgICAgIHNpemVfdCByZXN1bWVQb2ludEJ5dGVjb2RlT2Zmc2V0ID0gcG9pbnRzLnJl
c3VtZVBvaW50OworCisgICAgICAgICAgICAgICAgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZW5l
c3NWZWN0b3IgPSBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkW2xpdmVDYWxs
ZWVMb2NhbHNJbmRleF07CisKKyAgICAgICAgICAgICAgICAvLyBQYXRjaCBvcF9yZXN1bWVfaGlu
dCB3aXRoIHJlc3VtZV9mcm9tX2dlbmVyYXRvcl9mcmFtZSBvcGVyYXRpb25zLgorICAgICAgICAg
ICAgICAgIGludCBnZW5lcmF0b3JMb2NhbEluZGV4ID0gbV9pbnN0cnVjdGlvbnNbcmVzdW1lUG9p
bnRCeXRlY29kZU9mZnNldCArIDFdLnUub3BlcmFuZDsKKyAgICAgICAgICAgICAgICBpZiAoIWxp
dmVuZXNzVmVjdG9yLmJpdENvdW50KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCA0OyArK2kpCisgICAgICAgICAgICAgICAgICAgICAgICBtX2luc3RydWN0
aW9uc1tyZXN1bWVQb2ludEJ5dGVjb2RlT2Zmc2V0ICsgaV0gPSB2bS5pbnRlcnByZXRlci0+Z2V0
T3Bjb2RlKG9wX25vcCk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICAgICAgc2l6ZV90IGkgPSAwOworICAgICAgICAgICAgICAgICAgICBsaXZlbmVzc1ZlY3Rvci5m
b3JFYWNoU2V0Qml0KFsmXSh1bnNpZ25lZCBsb2NhbCkgeworICAgICAgICAgICAgICAgICAgICAg
ICAgc2l6ZV90IGluZGV4ID0gaSsrOworICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG9m
ZnNldCA9IHJlc3VtZVBvaW50Qnl0ZWNvZGVPZmZzZXQgKyBpbmRleCAqIDQ7CisgICAgICAgICAg
ICAgICAgICAgICAgICBtX2luc3RydWN0aW9uc1tvZmZzZXRdID0gdm0uaW50ZXJwcmV0ZXItPmdl
dE9wY29kZShvcF9yZXN1bWVfZnJvbV9nZW5lcmF0b3JfZnJhbWUpOworICAgICAgICAgICAgICAg
ICAgICAgICAgbV9pbnN0cnVjdGlvbnNbb2Zmc2V0ICsgMV0udS5vcGVyYW5kID0gdmlydHVhbFJl
Z2lzdGVyRm9yTG9jYWwobG9jYWwpLm9mZnNldCgpOworICAgICAgICAgICAgICAgICAgICAgICAg
bV9pbnN0cnVjdGlvbnNbb2Zmc2V0ICsgMl0udS5vcGVyYW5kID0gZ2VuZXJhdG9yTG9jYWxJbmRl
eDsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1faW5zdHJ1Y3Rpb25zW29mZnNldCArIDNdLnUu
dW5zaWduZWRWYWx1ZSA9IGluZGV4OworICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvLyBQYXRjaCBvcF9zYXZlX2hpbnQgd2l0aCBv
cF9zYXZlLgorICAgICAgICAgICAgICAgIG1faW5zdHJ1Y3Rpb25zW3NhdmVQb2ludEJ5dGVjb2Rl
T2Zmc2V0XSA9IHZtLmludGVycHJldGVyLT5nZXRPcGNvZGUob3Bfc2F2ZSk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KKyAgICAgICAgLy8gRmlsbCBvcF9uZXdfZ2VuZXJhdG9yX2ZyYW1lJ3Mg
c2l6ZS4KKyAgICAgICAgbV9pbnN0cnVjdGlvbnNbbmV3R2VuZXJhdG9yRnJhbWVJbnN0cnVjdGlv
bk9mZnNldCArIDJdLnUudW5zaWduZWRWYWx1ZSA9IG1heEdlbmVyYXRvckxvY2Fsc1NpemU7CiAg
ICAgfQogCisgICAgaWYgKHZtLmNvbnRyb2xGbG93UHJvZmlsZXIoKSkKKyAgICAgICAgaW5zZXJ0
QmFzaWNCbG9ja0JvdW5kYXJpZXNGb3JDb250cm9sRmxvd1Byb2ZpbGVyKG1faW5zdHJ1Y3Rpb25z
KTsKKwogICAgIC8vIFNldCBvcHRpbWl6YXRpb24gdGhyZXNob2xkcyBvbmx5IGFmdGVyIG1faW5z
dHJ1Y3Rpb25zIGlzIGluaXRpYWxpemVkLCBzaW5jZSB0aGVzZQogICAgIC8vIHJlbHkgb24gdGhl
IGluc3RydWN0aW9uIGNvdW50IChhbmQgYXJlIGluIHRoZW9yeSBwZXJtaXR0ZWQgdG8gYWxzbyBp
bnNwZWN0IHRoZQogICAgIC8vIGluc3RydWN0aW9uIHN0cmVhbSB0byBtb3JlIGFjY3VyYXRlIGFz
c2VzcyB0aGUgY29zdCBvZiB0aWVyLXVwKS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5jcHAKaW5kZXggZTJjYjAwMDQ4Mzc5NGJh
OTJkNTEwZGNmNWZhOTk0ODg1YTIzZGMzZC4uMDg0YmFiYzI2M2E1NTA0ODg1YWMwOTUwZmI0YWIz
MTJlMWE1OWYzMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1By
ZWNpc2VKdW1wVGFyZ2V0cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1ByZWNpc2VKdW1wVGFyZ2V0cy5jcHAKQEAgLTU0LDcgKzU0LDkgQEAgc3RhdGljIHZvaWQgZ2V0
SnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgSW50ZXJw
cmV0ZXIqIGkKICAgICBjYXNlIG9wX2pubGVzc2VxOgogICAgIGNhc2Ugb3Bfam5ncmVhdGVyOgog
ICAgIGNhc2Ugb3Bfam5ncmVhdGVyZXE6Ci0gICAgY2FzZSBvcF9zYXZlOiAvLyBUaGUganVtcCBv
ZiBvcF9zYXZlIGlzIHB1cmVseSBmb3IgY2FsY3VsYXRpbmcgbGl2ZW5lc3MuCisgICAgLy8gVGhl
IGp1bXAgb2Ygb3Bfc2F2ZV9oaW50IGlzIHB1cmVseSBmb3IgY2FsY3VsYXRpbmcgbGl2ZW5lc3Mu
CisgICAgLy8gV2hpbGUgb3Bfc2F2ZV9oaW50IGhhcyBhIGp1bXAgZm9yIGxpdmVuZXNzIGFuYWx5
c2lzLCBvcF9zYXZlIGRvZXMgbm90IGhhdmUgYSBqdW1wLgorICAgIGNhc2Ugb3Bfc2F2ZV9oaW50
OgogICAgICAgICBvdXQuYXBwZW5kKGJ5dGVjb2RlT2Zmc2V0ICsgY3VycmVudFszXS51Lm9wZXJh
bmQpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIG9wX3N3aXRjaF9pbW06CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3Iu
Y3BwCmluZGV4IGQxNWUyMjQzNTI2NmZlMWFmZjNkNWY3OWExZGRhNzViOWJkYWYzZjMuLjBkYWVl
YzYzZjZjMjM3MGQ1NjQ4MzAxMGMzMmI1Y2NjYTUwNmM0MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBA
IC0yNTcsNyArMjU3LDcgQEAgUGFyc2VyRXJyb3IgQnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRl
KCkKICAgICAgICAgLy8gICAgZnVuY3Rpb24gKmdlbihhLCBiID0gaGVsbG8oKSkKICAgICAgICAg
Ly8gICAgewogICAgICAgICAvLyAgICAgICAgcmV0dXJuIHsKLSAgICAgICAgLy8gICAgICAgICAg
ICBAZ2VuZXJhdG9yTmV4dDogZnVuY3Rpb24gKEBnZW5lcmF0b3IsIEBnZW5lcmF0b3JTdGF0ZSwg
QGdlbmVyYXRvclZhbHVlLCBAZ2VuZXJhdG9yUmVzdW1lTW9kZSkKKyAgICAgICAgLy8gICAgICAg
ICAgICBAZ2VuZXJhdG9yTmV4dDogZnVuY3Rpb24gKEBnZW5lcmF0b3IsIEBnZW5lcmF0b3JTdGF0
ZSwgQGdlbmVyYXRvclZhbHVlLCBAZ2VuZXJhdG9yUmVzdW1lTW9kZSwgQGdlbmVyYXRvckZyYW1l
KQogICAgICAgICAvLyAgICAgICAgICAgIHsKICAgICAgICAgLy8gICAgICAgICAgICAgICAgYXJn
dW1lbnRzOyAgLy8gVGhpcyBgYXJndW1lbnRzYCBzaG91bGQgcmVmZXJlbmNlIHRvIHRoZSBnZW4n
cyBhcmd1bWVudHMuCiAgICAgICAgIC8vICAgICAgICAgICAgICAgIC4uLgpAQCAtNTM3LDYgKzUz
Nyw5IEBAIFBhcnNlckVycm9yIEJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZSgpCiAgICAgY2Fz
ZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckJvZHlNb2RlOiB7CiAgICAgICAgIC8vIHx0aGlz
fCBpcyBhbHJlYWR5IGZpbGxlZCBjb3JyZWN0bHkgYmVmb3JlIGhlcmUuCiAgICAgICAgIGVtaXRM
b2FkKG1fbmV3VGFyZ2V0UmVnaXN0ZXIsIGpzVW5kZWZpbmVkKCkpOworCisgICAgICAgIGVtaXRO
ZXdHZW5lcmF0b3JGcmFtZShnZW5lcmF0b3JGcmFtZVJlZ2lzdGVyKCkpOworICAgICAgICBlbWl0
UHV0QnlJZChnZW5lcmF0b3JSZWdpc3RlcigpLCBwcm9wZXJ0eU5hbWVzKCkuZ2VuZXJhdG9yRnJh
bWVQcml2YXRlTmFtZSwgZ2VuZXJhdG9yRnJhbWVSZWdpc3RlcigpKTsKICAgICAgICAgYnJlYWs7
CiAgICAgfQogCkBAIC0yNzQ0LDYgKzI3NDcsMTQgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXROZXdGdW5jdGlvbihSZWdpc3RlcklEKiBkc3QsIEZ1bmN0aW9uTWV0YWRhdGEK
ICAgICByZXR1cm4gZHN0OwogfQogCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dE5ld0dlbmVyYXRvckZyYW1lKFJlZ2lzdGVySUQqIGRzdCkKK3sKKyAgICBlbWl0T3Bjb2RlKG9w
X25ld19nZW5lcmF0b3JfZnJhbWUpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChkc3QtPmlu
ZGV4KCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsKKyAgICByZXR1cm4gZHN0Owor
fQorCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENhbGwoUmVnaXN0ZXJJRCog
ZHN0LCBSZWdpc3RlcklEKiBmdW5jLCBFeHBlY3RlZEZ1bmN0aW9uIGV4cGVjdGVkRnVuY3Rpb24s
IENhbGxBcmd1bWVudHMmIGNhbGxBcmd1bWVudHMsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZv
dCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9u
JiBkaXZvdEVuZCkKIHsKICAgICByZXR1cm4gZW1pdENhbGwob3BfY2FsbCwgZHN0LCBmdW5jLCBl
eHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RF
bmQpOwpAQCAtNDE0NCw4ICs0MTU1LDggQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFlp
ZWxkUG9pbnQoUmVnaXN0ZXJJRCogYXJndW1lbnQpCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0U2F2ZShMYWJlbCogbWVyZ2VQb2ludCwgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4
KQogewogICAgIHNpemVfdCBiZWdpbiA9IGluc3RydWN0aW9ucygpLnNpemUoKTsKLSAgICBlbWl0
T3Bjb2RlKG9wX3NhdmUpOwotICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChtX2dlbmVyYXRvclJl
Z2lzdGVyLT5pbmRleCgpKTsKKyAgICBlbWl0T3Bjb2RlKG9wX3NhdmVfaGludCk7CisgICAgaW5z
dHJ1Y3Rpb25zKCkuYXBwZW5kKGdlbmVyYXRvckZyYW1lUmVnaXN0ZXIoKS0+aW5kZXgoKSk7CiAg
ICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGxpdmVDYWxsZWVMb2NhbHNJbmRleCk7CiAgICAgaW5z
dHJ1Y3Rpb25zKCkuYXBwZW5kKG1lcmdlUG9pbnQtPmJpbmQoYmVnaW4sIGluc3RydWN0aW9ucygp
LnNpemUoKSkpOwogfQpAQCAtNDE1Myw5ICs0MTY0LDMwIEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXRTYXZlKExhYmVsKiBtZXJnZVBvaW50LCB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxz
SW5kCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzdW1lKExhYmVsKiBtZXJnZVBvaW50
LCB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpCiB7CiAgICAgZW1pdEdlbmVyYXRvclN0
YXRlTGFiZWwoKTsKLSAgICBlbWl0T3Bjb2RlKG9wX3Jlc3VtZSk7Ci0gICAgaW5zdHJ1Y3Rpb25z
KCkuYXBwZW5kKG1fZ2VuZXJhdG9yUmVnaXN0ZXItPmluZGV4KCkpOworCisgICAgcmVjbGFpbUZy
ZWVSZWdpc3RlcnMoKTsKKyAgICB1bnNpZ25lZCBtYXhMaXZlTG9jYWxzID0gMDsKKyAgICBmb3Ig
KGNvbnN0IFJlZ2lzdGVySUQmIHJlZyA6IG1fY2FsbGVlTG9jYWxzKSB7CisgICAgICAgIGlmIChy
ZWcucmVmQ291bnQoKSkKKyAgICAgICAgICAgICsrbWF4TGl2ZUxvY2FsczsKKyAgICB9CisKKyAg
ICAvLyBUaGlzIG9wX3Jlc3VtZV9oaW50IHdpbGwgYmUgcmVwbGFjZWQgd2l0aCB0aGUgYWN0dWFs
IG9wcy4KKyAgICBzdGF0aWNfYXNzZXJ0KE9QQ09ERV9MRU5HVEgob3BfcmVzdW1lX2hpbnQpID09
IE9QQ09ERV9MRU5HVEgob3BfcmVzdW1lX2Zyb21fZ2VuZXJhdG9yX2ZyYW1lKSwgIlRoZSBsZW5n
dGggb2Ygb3BfcmVzdW1lX2hpbnQgc2hvdWxkIGVxYXVhbCB0byBvbmUgb2Ygb3BfcmVzdW1lX2Zy
b21fZ2VuZXJhdG9yX2ZyYW1lLiIpOworICAgIGlmIChtYXhMaXZlTG9jYWxzKQorICAgICAgICBt
YXhMaXZlTG9jYWxzIC09IDE7CisKKyAgICBlbWl0T3Bjb2RlKG9wX3Jlc3VtZV9oaW50KTsKKyAg
ICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZ2VuZXJhdG9yRnJhbWVSZWdpc3RlcigpLT5pbmRleCgp
KTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobGl2ZUNhbGxlZUxvY2Fsc0luZGV4KTsKKyAg
ICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobWF4TGl2ZUxvY2Fscyk7CisgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IG1heExpdmVMb2NhbHM7ICsraSkgeworICAgICAgICAvLyBOb3Agc3BhY2Uu
IExhdGVyIHdlIHdpbGwgZmlsbCB0aGlzIHdpdGggdGhlIGFjdHVhbCByZXN1bWUgb3BlcmF0aW9u
cy4KKyAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8IE9QQ09ERV9MRU5HVEgob3BfcmVz
dW1lX2Zyb21fZ2VuZXJhdG9yX2ZyYW1lKTsgKytqKQorICAgICAgICAgICAgZW1pdE9wY29kZShv
cF9ub3ApOworICAgIH0KKyAgICBlbWl0T3Bjb2RlKG9wX2NsZWFyX2dlbmVyYXRvcl9mcmFtZSk7
CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGdlbmVyYXRvckZyYW1lUmVnaXN0ZXIoKS0+aW5k
ZXgoKSk7CiAgICAgZW1pdExhYmVsKG1lcmdlUG9pbnQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5kZXgg
N2QwYzIwYjZmNTE2YTE3ZTg5M2YxYmJhMDgwM2MxMzMzZmZjOGQwZC4uM2QzMzQ3ODE1YWMzMGE4
MmU2MjZlM2UwNzgwODFiZTJiM2U5YmUzZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAtNTIyLDYgKzUyMiw3
IEBACiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdEZWZhdWx0Q29uc3RydWN0b3IoUmVnaXN0
ZXJJRCogZHN0LCBDb25zdHJ1Y3RvcktpbmQsIGNvbnN0IElkZW50aWZpZXImIG5hbWUpOwogICAg
ICAgICBSZWdpc3RlcklEKiBlbWl0TmV3QXJyb3dGdW5jdGlvbkV4cHJlc3Npb24oUmVnaXN0ZXJJ
RCosIEFycm93RnVuY0V4cHJOb2RlKik7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdSZWdF
eHAoUmVnaXN0ZXJJRCogZHN0LCBSZWdFeHAqKTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdE5l
d0dlbmVyYXRvckZyYW1lKFJlZ2lzdGVySUQqIGRzdCk7CiAKICAgICAgICAgUmVnaXN0ZXJJRCog
ZW1pdE1vdmVMaW5rVGltZUNvbnN0YW50KFJlZ2lzdGVySUQqIGRzdCwgTGlua1RpbWVDb25zdGFu
dCk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRNb3ZlRW1wdHlWYWx1ZShSZWdpc3RlcklEKiBk
c3QpOwpAQCAtNjg0LDYgKzY4NSw3IEBACiAgICAgICAgIFJlZ2lzdGVySUQqIGdlbmVyYXRvclN0
YXRlUmVnaXN0ZXIoKSB7IHJldHVybiAmbV9wYXJhbWV0ZXJzWzJdOyB9CiAgICAgICAgIFJlZ2lz
dGVySUQqIGdlbmVyYXRvclZhbHVlUmVnaXN0ZXIoKSB7IHJldHVybiAmbV9wYXJhbWV0ZXJzWzNd
OyB9CiAgICAgICAgIFJlZ2lzdGVySUQqIGdlbmVyYXRvclJlc3VtZU1vZGVSZWdpc3RlcigpIHsg
cmV0dXJuICZtX3BhcmFtZXRlcnNbNF07IH0KKyAgICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9y
RnJhbWVSZWdpc3RlcigpIHsgcmV0dXJuICZtX3BhcmFtZXRlcnNbNV07IH0KIAogICAgICAgICBD
b2RlVHlwZSBjb2RlVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZVR5cGU7IH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEhlYXAuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RIZWFwLmgKaW5kZXggNGRlYzhmYTAzNzc2
ZTAxZTZjZDM3NDYwNjU5Y2M1NjExNjIzOGM2NS4uOWM4NmY2OTJiOGQzODVkOWViMjQ2OTdkNzky
NzlkZjZjZGY0NWNlNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdB
YnN0cmFjdEhlYXAuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0
SGVhcC5oCkBAIC02OCw2ICs2OCw4IEBACiAgICAgbWFjcm8oU2NvcGVQcm9wZXJ0aWVzKSBcCiAg
ICAgbWFjcm8oVHlwZWRBcnJheVByb3BlcnRpZXMpIFwKICAgICBtYWNybyhIZWFwT2JqZWN0Q291
bnQpIC8qIFVzZWQgdG8gcmVmbGVjdCB0aGUgZmFjdCB0aGF0IHNvbWUgYWxsb2NhdGlvbnMgcmV2
ZWFsIG9iamVjdCBpZGVudGl0eSAqL1wKKyAgICBtYWNybyhHZW5lcmF0b3JMb2NhbHMpIFwKKyAg
ICBtYWNybyhHZW5lcmF0b3JMb2NhbENvdW50KSBcCiAgICAgbWFjcm8oUmVnRXhwU3RhdGUpIFwK
ICAgICBtYWNybyhNYXRoRG90UmFuZG9tU3RhdGUpIFwKICAgICBtYWNybyhJbnRlcm5hbFN0YXRl
KSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50
ZXJwcmV0ZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0
SW50ZXJwcmV0ZXJJbmxpbmVzLmgKaW5kZXggOWVlYzYzY2ViMDcxYmMxNDg2YTAxMmMyODUwMWRi
NjI0MjZiZGU3Yi4uNzZlMTczZWViYWRiN2YyYWU5ODkwMDVhMWJhNTViZTFhMWU5NDA2NSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVy
SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRl
cnByZXRlcklubGluZXMuaApAQCAtMTY4Nyw2ICsxNjg3LDEwIEBACiAgICAgY2FzZSBOZXdSZWdl
eHA6CiAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyktPnJlZ0V4cFN0cnVjdHVyZSgpKTsKICAgICAg
ICAgYnJlYWs7CisKKyAgICBjYXNlIE5ld0dlbmVyYXRvckZyYW1lOgorICAgICAgICBmb3JOb2Rl
KG5vZGUpLnNldChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4u
c2VtYW50aWMpLT5nZW5lcmF0b3JGcmFtZVN0cnVjdHVyZSgpKTsKKyAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICAKICAgICBjYXNlIFRvVGhpczogewogICAgICAgICBBYnN0cmFjdFZhbHVlJiBz
b3VyY2UgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKTsKQEAgLTI1MTAsNiArMjUxNCwxNyBAQAog
ICAgICAgICBmb3JOb2RlKG5vZGUpLm1ha2VIZWFwVG9wKCk7CiAgICAgICAgIGJyZWFrOwogCisg
ICAgY2FzZSBTZXRHZW5lcmF0b3JMb2NhbDoKKyAgICBjYXNlIFJlc2l6ZUdlbmVyYXRvckxvY2Fs
czoKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIEdldEdlbmVyYXRvckxvY2FsOiB7CisgICAg
ICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYXR0ZW1wdCB0byBjb252ZXJ0IGl0IHRvIGNvbnN0YW50
LgorICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUz
MTgzCisgICAgICAgIGZvck5vZGUobm9kZSkubWFrZUhlYXBUb3AoKTsKKyAgICAgICAgYnJlYWs7
CisgICAgfQorCiAgICAgY2FzZSBGb3JjZU9TUkV4aXQ6CiAgICAgY2FzZSBDaGVja0JhZENlbGw6
CiAgICAgICAgIG1fc3RhdGUuc2V0SXNWYWxpZChmYWxzZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCmluZGV4IDM2NDRhMmZkMTlhMGQ5YjNk
ZGE3YjA2OGEwMDQ5MGE1ODI2MjA4NmQuLjZhODNkYTFmZDI0NmNiOGI1ZWZkMzk0MDg3YzQ2NDdi
NTc3ZWE5YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNv
ZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQ
YXJzZXIuY3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiREZHQXJyYXlNb2RlLmgiCiAj
aW5jbHVkZSAiREZHQ2FwYWJpbGl0aWVzLmgiCiAjaW5jbHVkZSAiREZHQ2xvYmJlcnNFeGl0U3Rh
dGUuaCIKKyNpbmNsdWRlICJERkdHZW5lcmF0b3JMb2NhbERhdGEuaCIKICNpbmNsdWRlICJERkdH
cmFwaC5oIgogI2luY2x1ZGUgIkRGR0pJVENvZGUuaCIKICNpbmNsdWRlICJHZXRCeUlkU3RhdHVz
LmgiCkBAIC05NjMsNiArOTY0LDExIEBAIGNsYXNzIEJ5dGVDb2RlUGFyc2VyIHsKICAgICAgICAg
Zm9yIChBcmd1bWVudFBvc2l0aW9uKiBhcmd1bWVudCA6IG1faW5saW5lU3RhY2tUb3AtPm1fYXJn
dW1lbnRQb3NpdGlvbnMpCiAgICAgICAgICAgICBhcmd1bWVudC0+bWVyZ2VTaG91bGROZXZlclVu
Ym94KHRydWUpOwogICAgIH0KKworICAgIEdlbmVyYXRvckxvY2FsRGF0YSogbmV3R2VuZXJhdG9y
TG9jYWxEYXRhKCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX2dyYXBoLm1fZ2VuZXJhdG9yTG9j
YWxEYXRhLmFkZCgpOworICAgIH0KICAgICAKICAgICBWTSogbV92bTsKICAgICBDb2RlQmxvY2sq
IG1fY29kZUJsb2NrOwpAQCAtMTA1MSw2ICsxMDU3LDExIEBAIGNsYXNzIEJ5dGVDb2RlUGFyc2Vy
IHsKICAgICAgICAgQ2FsbExpbmtJbmZvTWFwIG1fY2FsbExpbmtJbmZvczsKICAgICAgICAgU3R1
YkluZm9NYXAgbV9zdHViSW5mb3M7CiAgICAgICAgIEJ5VmFsSW5mb01hcCBtX2J5VmFsSW5mb3M7
CisKKyAgICAgICAgLy8gU2luY2UgdGhlIG9wX3Jlc3VtZV9oaW50IGlzIGVtaXR0ZWQgYWZ0ZXIg
dGhlIGNvcnJlc3BvbmRpbmcgb3Bfc2F2ZV9oaW50CisgICAgICAgIC8vIGFuZCB0aGVyZSBpcyBu
byBvdGhlciBvcF9yZXN1bWVfaGludCBhbmQgb3Bfc2F2ZV9oaW50IGJldHdlZW4gdGhlbSwKKyAg
ICAgICAgLy8gd2UgY2FuIHRyYWNrIHRoZXNlIGNvcnJlc3BvbmRlbmNlIGJ5IGp1c3QgdHJhY2tp
bmcgY3VycmVudGx5IGZvY3VzaW5nIG9wX3NhdmUuCisgICAgICAgIE9wZXJhbmRzPEdlbmVyYXRv
ckxvY2FsRGF0YSo+IG1fZ2VuZXJhdG9yTG9jYWxzOwogICAgICAgICAKICAgICAgICAgLy8gRGlk
IHdlIHNlZSBhbnkgcmV0dXJucz8gV2UgbmVlZCB0byBoYW5kbGUgdGhlICh1bmNvbW1vbiBidXQg
bmVjZXNzYXJ5KQogICAgICAgICAvLyBjYXNlIHdoZXJlIGEgcHJvY2VkdXJlIHRoYXQgZG9lcyBu
b3QgcmV0dXJuIHdhcyBpbmxpbmVkLgpAQCAtMzM0MSw2ICszMzUyLDExIEBAIGJvb2wgQnl0ZUNv
ZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgICAgICBORVhUX09Q
Q09ERShvcF9uZXdfcmVnZXhwKTsKICAgICAgICAgfQogCisgICAgICAgIGNhc2Ugb3BfbmV3X2dl
bmVyYXRvcl9mcmFtZTogeworICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50
SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSwgYWRkVG9HcmFwaChOZXdHZW5lcmF0b3JGcmFtZSwg
T3BJbmZvKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51LnVuc2lnbmVkVmFsdWUpKSk7CisgICAgICAg
ICAgICBORVhUX09QQ09ERShvcF9uZXdfZ2VuZXJhdG9yX2ZyYW1lKTsKKyAgICAgICAgfQorCiAg
ICAgICAgIGNhc2Ugb3BfZ2V0X3Jlc3RfbGVuZ3RoOiB7CiAgICAgICAgICAgICBJbmxpbmVDYWxs
RnJhbWUqIGlubGluZUNhbGxGcmFtZSA9IHRoaXMtPmlubGluZUNhbGxGcmFtZSgpOwogICAgICAg
ICAgICAgTm9kZSogbGVuZ3RoOwpAQCAtMzM2OCw2ICszMzg0LDQ4IEBAIGJvb2wgQnl0ZUNvZGVQ
YXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgICAgICAgICAgYXJyYXks
IGFycmF5TGVuZ3RoKTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2NvcHlfcmVzdCk7CiAg
ICAgICAgIH0KKworICAgICAgICBjYXNlIG9wX3NhdmU6IHsKKyAgICAgICAgICAgIE5vZGUqIGZy
YW1lID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5k
KSk7CisgICAgICAgICAgICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSBjdXJyZW50
SW5zdHJ1Y3Rpb25bMl0udS51bnNpZ25lZFZhbHVlOworICAgICAgICAgICAgY29uc3QgRmFzdEJp
dFZlY3RvciYgbGl2ZW5lc3MgPSBtX2lubGluZVN0YWNrVG9wLT5tX2NvZGVCbG9jay0+bGl2ZUNh
bGxlZUxvY2Fsc0F0WWllbGQobGl2ZUNhbGxlZUxvY2Fsc0luZGV4KTsKKworICAgICAgICAgICAg
bV9pbmxpbmVTdGFja1RvcC0+bV9nZW5lcmF0b3JMb2NhbHMgPSBPcGVyYW5kczxHZW5lcmF0b3JM
b2NhbERhdGEqPihtX251bUFyZ3VtZW50cywgbV9udW1Mb2NhbHMpOworCisgICAgICAgICAgICBh
ZGRUb0dyYXBoKFJlc2l6ZUdlbmVyYXRvckxvY2FscywgT3BJbmZvKGxpdmVuZXNzLmJpdENvdW50
KCkpLCBmcmFtZSk7CisgICAgICAgICAgICB1bnNpZ25lZCBnZW5lcmF0b3JMb2NhbEluZGV4ID0g
MDsKKyAgICAgICAgICAgIGxpdmVuZXNzLmZvckVhY2hTZXRCaXQoWyZdKHNpemVfdCBpbmRleCkg
eworICAgICAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kID0gdmlydHVhbFJlZ2lz
dGVyRm9yTG9jYWwoaW5kZXgpOworICAgICAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciByZW1h
cHBlZE9wZXJhbmQgPSBtX2lubGluZVN0YWNrVG9wLT5yZW1hcE9wZXJhbmQob3BlcmFuZCk7Cisg
ICAgICAgICAgICAgICAgTm9kZSogbG9jYWwgPSBnZXQob3BlcmFuZCk7CisgICAgICAgICAgICAg
ICAgR2VuZXJhdG9yTG9jYWxEYXRhKiBnZW5lcmF0b3JMb2NhbERhdGEgPSBuZXdHZW5lcmF0b3JM
b2NhbERhdGEoKTsKKyAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2dlbmVyYXRv
ckxvY2Fscy5sb2NhbChyZW1hcHBlZE9wZXJhbmQudG9Mb2NhbCgpKSA9IGdlbmVyYXRvckxvY2Fs
RGF0YTsKKyAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFNldEdlbmVyYXRvckxvY2FsLCBPcElu
Zm8oZ2VuZXJhdG9yTG9jYWxJbmRleCsrKSwgT3BJbmZvKGdlbmVyYXRvckxvY2FsRGF0YSksIGZy
YW1lLCBsb2NhbCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9w
X3NhdmUpOworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBvcF9yZXN1bWVfZnJvbV9nZW5lcmF0
b3JfZnJhbWU6IHsKKyAgICAgICAgICAgIE5vZGUqIGZyYW1lID0gZ2V0KFZpcnR1YWxSZWdpc3Rl
cihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSk7CisgICAgICAgICAgICB1bnNpZ25l
ZCBnZW5lcmF0b3JMb2NhbEluZGV4ID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUudW5zaWduZWRW
YWx1ZTsKKyAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kKGN1cnJlbnRJbnN0cnVj
dGlvblsxXS51Lm9wZXJhbmQpOworICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHJlbWFwcGVk
T3BlcmFuZCA9IG1faW5saW5lU3RhY2tUb3AtPnJlbWFwT3BlcmFuZChvcGVyYW5kKTsKKyAgICAg
ICAgICAgIEdlbmVyYXRvckxvY2FsRGF0YSogZ2VuZXJhdG9yTG9jYWxEYXRhID0gbV9pbmxpbmVT
dGFja1RvcC0+bV9nZW5lcmF0b3JMb2NhbHMubG9jYWwocmVtYXBwZWRPcGVyYW5kLnRvTG9jYWwo
KSk7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChnZW5lcmF0b3JMb2NhbERhdGEpOworICAg
ICAgICAgICAgc2V0KG9wZXJhbmQsIGFkZFRvR3JhcGgoR2V0R2VuZXJhdG9yTG9jYWwsIE9wSW5m
byhnZW5lcmF0b3JMb2NhbEluZGV4KSwgT3BJbmZvKGdlbmVyYXRvckxvY2FsRGF0YSksIGZyYW1l
KSk7CisgICAgICAgICAgICBORVhUX09QQ09ERShvcF9yZXN1bWVfZnJvbV9nZW5lcmF0b3JfZnJh
bWUpOworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBvcF9jbGVhcl9nZW5lcmF0b3JfZnJhbWU6
IHsKKyAgICAgICAgICAgIE5vZGUqIGZyYW1lID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50
SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSk7CisgICAgICAgICAgICBhZGRUb0dyYXBoKFJlc2l6
ZUdlbmVyYXRvckxvY2FscywgT3BJbmZvKDApLCBmcmFtZSk7CisgICAgICAgICAgICBORVhUX09Q
Q09ERShvcF9jbGVhcl9nZW5lcmF0b3JfZnJhbWUpOworICAgICAgICB9CisKKyAgICAgICAgY2Fz
ZSBvcF9ub3A6IHsKKyAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX25vcCk7CisgICAgICAgIH0K
KwogICAgICAgICAgICAgCiAgICAgICAgIC8vID09PSBCaXR3aXNlIG9wZXJhdGlvbnMgPT09CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAppbmRleCBk
MTAwZDk3ZDVjNjBlMjVhMDYwZmZkYTQ1NjYzYjNiOTQxNDM1ZGM2Li5hNTgyZjg3MjA3NmNmZjg5
NDI4M2ViYTMxYTQ5OTc3NjMwZGM3ODkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDYXBhYmlsaXRpZXMuY3BwCkBAIC0xODEsNiArMTgxLDcgQEAgQ2FwYWJpbGl0eUxldmVs
IGNhcGFiaWxpdHlMZXZlbChPcGNvZGVJRCBvcGNvZGVJRCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IEluc3RydWMKICAgICBjYXNlIG9wX25ld19hcnJheToKICAgICBjYXNlIG9wX25ld19hcnJheV93
aXRoX3NpemU6CiAgICAgY2FzZSBvcF9uZXdfYXJyYXlfYnVmZmVyOgorICAgIGNhc2Ugb3BfbmV3
X2dlbmVyYXRvcl9mcmFtZToKICAgICBjYXNlIG9wX3N0cmNhdDoKICAgICBjYXNlIG9wX3RvX3By
aW1pdGl2ZToKICAgICBjYXNlIG9wX3Rocm93OgpAQCAtMjI0LDYgKzIyNSwxMCBAQCBDYXBhYmls
aXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVsKE9wY29kZUlEIG9wY29kZUlELCBDb2RlQmxvY2sqIGNv
ZGVCbG9jaywgSW5zdHJ1YwogICAgIGNhc2Ugb3BfY2F0Y2g6CiAgICAgY2FzZSBvcF9jb3B5X3Jl
c3Q6CiAgICAgY2FzZSBvcF9nZXRfcmVzdF9sZW5ndGg6CisgICAgY2FzZSBvcF9zYXZlOgorICAg
IGNhc2Ugb3BfcmVzdW1lX2Zyb21fZ2VuZXJhdG9yX2ZyYW1lOgorICAgIGNhc2Ugb3BfY2xlYXJf
Z2VuZXJhdG9yX2ZyYW1lOgorICAgIGNhc2Ugb3Bfbm9wOgogICAgICAgICByZXR1cm4gQ2FuQ29t
cGlsZUFuZElubGluZTsKIAogICAgIGNhc2Ugb3BfcHV0X3RvX3Njb3BlOiB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCmluZGV4IDM0M2E2ZGU5YzI5MDliOTNlMDUy
OGNmMDI3ODRhYWQ5NGQwMWI0ZDEuLjU5ZWM4MmJjMjBkM2YxNjhlMmY0YjVjYjBiZTZmNTVhMmJm
OGRjY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6
ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCkBAIC0x
MDQ0LDYgKzEwNDQsNyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2Rl
LCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogCiAgICAgY2FzZSBOZXdP
YmplY3Q6CiAgICAgY2FzZSBOZXdSZWdleHA6CisgICAgY2FzZSBOZXdHZW5lcmF0b3JGcmFtZToK
ICAgICBjYXNlIE5ld1N0cmluZ09iamVjdDoKICAgICBjYXNlIFBoYW50b21OZXdPYmplY3Q6CiAg
ICAgY2FzZSBNYXRlcmlhbGl6ZU5ld09iamVjdDoKQEAgLTExMTEsNiArMTExMiwyMyBAQCB2b2lk
IGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYg
cmVhZCwgY29uc3QgV3JpdGVGdQogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQorCisgICAgY2FzZSBTZXRHZW5l
cmF0b3JMb2NhbDogeworICAgICAgICByZWFkKEdlbmVyYXRvckxvY2FsQ291bnQpOworICAgICAg
ICB3cml0ZShHZW5lcmF0b3JMb2NhbHMpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
Y2FzZSBHZXRHZW5lcmF0b3JMb2NhbDogeworICAgICAgICByZWFkKEdlbmVyYXRvckxvY2FsQ291
bnQpOworICAgICAgICByZWFkKEdlbmVyYXRvckxvY2Fscyk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBjYXNlIFJlc2l6ZUdlbmVyYXRvckxvY2FsczogeworICAgICAgICB3cml0ZShH
ZW5lcmF0b3JMb2NhbENvdW50KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KICAgICAgICAgCiAg
ICAgY2FzZSBUaHJvd1JlZmVyZW5jZUVycm9yOgogICAgICAgICB3cml0ZShTaWRlU3RhdGUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyc0V4aXRTdGF0
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJzRXhpdFN0YXRlLmNw
cAppbmRleCA0ZTBjNTA3Nzg5Y2Q3YjNmZjQ3NzUxZjkyNWU3NDgzZTYxZTJkZjViLi45Mjg1NTEy
NjI3ODUxZDNmODNmMzdmMDJhYmYwYTNiNWVmNmJmNWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcApAQCAtNTMsMTAgKzUzLDE2
IEBAIGJvb2wgY2xvYmJlcnNFeGl0U3RhdGUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAg
ICAgICAvLyBleGl0IHN0YXRlLgogICAgICAgICByZXR1cm4gZmFsc2U7CiAKKyAgICBjYXNlIFJl
c2l6ZUdlbmVyYXRvckxvY2FsczoKKyAgICBjYXNlIFNldEdlbmVyYXRvckxvY2FsOgorICAgIGNh
c2UgR2V0R2VuZXJhdG9yTG9jYWw6CisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIGNhc2Ug
QXJyYXlpZnlUb1N0cnVjdHVyZToKICAgICBjYXNlIEFycmF5aWZ5OgogICAgIGNhc2UgTmV3T2Jq
ZWN0OgogICAgIGNhc2UgTmV3UmVnZXhwOgorICAgIGNhc2UgTmV3R2VuZXJhdG9yRnJhbWU6CiAg
ICAgY2FzZSBOZXdTdHJpbmdPYmplY3Q6CiAgICAgY2FzZSBQaGFudG9tTmV3T2JqZWN0OgogICAg
IGNhc2UgTWF0ZXJpYWxpemVOZXdPYmplY3Q6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0RvZXNHQy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rv
ZXNHQy5jcHAKaW5kZXggNzAyZGE1YmYxZTdjMGYxYzhmZTU1YzY0ODQ0NThmY2FkODFlMmFhNS4u
Y2ViNzg2MWM3YjI3YjVlOTc5NzcyYjZiM2I4NzA3YjNlZTg5MmIxMyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcApAQCAtMjI5LDYgKzIyOSw5IEBAIGJvb2wgZG9lc0dD
KEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIEdldEZyb21Bcmd1bWVudHM6CiAg
ICAgY2FzZSBQdXRUb0FyZ3VtZW50czoKICAgICBjYXNlIENvcHlSZXN0OgorICAgIGNhc2UgU2V0
R2VuZXJhdG9yTG9jYWw6CisgICAgY2FzZSBHZXRHZW5lcmF0b3JMb2NhbDoKKyAgICBjYXNlIFJl
c2l6ZUdlbmVyYXRvckxvY2FsczoKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgY2FzZSBD
cmVhdGVBY3RpdmF0aW9uOgpAQCAtMjQ2LDYgKzI0OSw3IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBn
cmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIE5ld0FycmF5V2l0aFNpemU6CiAgICAgY2FzZSBO
ZXdBcnJheUJ1ZmZlcjoKICAgICBjYXNlIE5ld1JlZ2V4cDoKKyAgICBjYXNlIE5ld0dlbmVyYXRv
ckZyYW1lOgogICAgIGNhc2UgTmV3U3RyaW5nT2JqZWN0OgogICAgIGNhc2UgTWFrZVJvcGU6CiAg
ICAgY2FzZSBOZXdBcnJvd0Z1bmN0aW9uOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Rml4dXBQaGFzZS5jcHAKaW5kZXggYzlkNWFiZmI0OTQ4MWI5MDU4OWVjNGZiYTU5NWEyY2U4ZTcw
ZGY2Ny4uMDE1ZGY1MWRjMzdiZmJmNDZiYWE5MWVjOWE4YzhiMDE3ZTVkOTFhNiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCkBAIC0xNDMwLDYgKzE0MzAs
MjQgQEAgY2xhc3MgRml4dXBQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQogCisgICAgICAgIGNhc2UgU2V0R2VuZXJhdG9yTG9jYWw6IHsKKyAgICAg
ICAgICAgIGZpeEVkZ2U8Q2VsbFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgc3Bl
Y3VsYXRlRm9yQmFycmllcihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQorCisgICAgICAgIGNhc2UgR2V0R2VuZXJhdG9yTG9jYWw6IHsKKyAgICAgICAgICAg
IGZpeEVkZ2U8Q2VsbFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgLy8gQ3VycmVu
dGx5LCB3ZSBhbHdheXMgc3RvcmUgdGhlIHZhbHVlIGFzIEpTVmFsdWUgaW4gdGhlIEdlbmVyYXRv
ckZyYW1lLgorICAgICAgICAgICAgbm9kZS0+c2V0UmVzdWx0KE5vZGVSZXN1bHRKUyk7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2UgUmVzaXplR2VuZXJhdG9y
TG9jYWxzOiB7CisgICAgICAgICAgICBmaXhFZGdlPENlbGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKICNpZiAhQVNTRVJUX0RJU0FCTEVECiAg
ICAgICAgIC8vIEhhdmUgdGhlc2Ugbm8tb3AgY2FzZXMgaGVyZSB0byBlbnN1cmUgdGhhdCBub2Jv
ZHkgZm9yZ2V0cyB0byBhZGQgaGFuZGxlcnMgZm9yIG5ldyBvcGNvZGVzLgogICAgICAgICBjYXNl
IFNldEFyZ3VtZW50OgpAQCAtMTQ2Miw2ICsxNDgwLDcgQEAgY2xhc3MgRml4dXBQaGFzZSA6IHB1
YmxpYyBQaGFzZSB7CiAgICAgICAgIGNhc2UgTmV3T2JqZWN0OgogICAgICAgICBjYXNlIE5ld0Fy
cmF5QnVmZmVyOgogICAgICAgICBjYXNlIE5ld1JlZ2V4cDoKKyAgICAgICAgY2FzZSBOZXdHZW5l
cmF0b3JGcmFtZToKICAgICAgICAgY2FzZSBCcmVha3BvaW50OgogICAgICAgICBjYXNlIFByb2Zp
bGVXaWxsQ2FsbDoKICAgICAgICAgY2FzZSBQcm9maWxlRGlkQ2FsbDoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR2VuZXJhdG9yTG9jYWxEYXRhLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0dlbmVyYXRvckxvY2FsRGF0YS5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNl
YWYxYWJjMDViNzgzODU0N2MwYjdhZWJlZGZmNjA0Y2NiNWZkMTIKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dlbmVyYXRvckxvY2FsRGF0YS5oCkBAIC0w
LDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgWXVzdWtlIFN1enVraSA8dXRh
dGFuZS50ZWFAZ21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBERkdHZW5lcmF0b3JMb2NhbERhdGFfaAorI2RlZmluZSBERkdHZW5l
cmF0b3JMb2NhbERhdGFfaAorCisjaWYgRU5BQkxFKERGR19KSVQpCisKKyNpbmNsdWRlICJERkdD
b21tb24uaCIKKyNpbmNsdWRlICJTcGVjdWxhdGVkVHlwZS5oIgorI2luY2x1ZGUgIlZpcnR1YWxS
ZWdpc3Rlci5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CisKKworY2xhc3Mg
R2VuZXJhdG9yTG9jYWxEYXRhIHsKK3B1YmxpYzoKKyAgICBib29sIHByZWRpY3QoU3BlY3VsYXRl
ZFR5cGUgcHJlZGljdGlvbikKKyAgICB7CisgICAgICAgIHJldHVybiBtZXJnZVNwZWN1bGF0aW9u
KG1fcHJlZGljdGlvbiwgcHJlZGljdGlvbik7CisgICAgfQorCisgICAgU3BlY3VsYXRlZFR5cGUg
cHJlZGljdGlvbigpCisgICAgeworICAgICAgICByZXR1cm4gbV9wcmVkaWN0aW9uOworICAgIH0K
KworcHJpdmF0ZToKKyAgICBTcGVjdWxhdGVkVHlwZSBtX3ByZWRpY3Rpb24geyBTcGVjTm9uZSB9
OworfTsKKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRworCisjZW5kaWYgLy8gRU5BQkxFKERG
R19KSVQpCisKKyNlbmRpZiAvLyBERkdWYXJpYWJsZUFjY2Vzc0RhdGFfaApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdHcmFwaC5oCmluZGV4IDA5YWFlOTU1ZjY2YWE3ODk0YTE0ODVlMTM5MzdmM2Jh
NTM4ODlkMWMuLjQzZmRiYjFhNzEzMDM0NmM5YmRhZjQ5ZDRlNDE2YjcyNDEzZjA2MWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKQEAgLTYwLDYgKzYwLDcgQEAKIGNsYXNzIERv
bWluYXRvcnM7CiBjbGFzcyBOYXR1cmFsTG9vcHM7CiBjbGFzcyBQcmVQb3N0TnVtYmVyaW5nOwor
Y2xhc3MgR2VuZXJhdG9yTG9jYWxEYXRhOwogCiAjZGVmaW5lIERGR19OT0RFX0RPX1RPX0NISUxE
UkVOKGdyYXBoLCBub2RlLCB0aGluZ1RvRG8pIGRvIHsgICAgICAgICAgICBcCiAgICAgICAgIE5v
ZGUqIF9ub2RlID0gKG5vZGUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCkBAIC04ODcsNiArODg4LDcgQEAgY2xhc3MgR3JhcGggOiBwdWJsaWMgdmlydHVhbCBT
Y2FubmFibGUgewogICAgIEJhZzxDYWxsVmFyYXJnc0RhdGE+IG1fY2FsbFZhcmFyZ3NEYXRhOwog
ICAgIEJhZzxMb2FkVmFyYXJnc0RhdGE+IG1fbG9hZFZhcmFyZ3NEYXRhOwogICAgIEJhZzxTdGFj
a0FjY2Vzc0RhdGE+IG1fc3RhY2tBY2Nlc3NEYXRhOworICAgIEJhZzxHZW5lcmF0b3JMb2NhbERh
dGE+IG1fZ2VuZXJhdG9yTG9jYWxEYXRhOwogICAgIFZlY3RvcjxJbmxpbmVWYXJpYWJsZURhdGEs
IDQ+IG1faW5saW5lVmFyaWFibGVEYXRhOwogICAgIEhhc2hNYXA8Q29kZUJsb2NrKiwgc3RkOjp1
bmlxdWVfcHRyPEZ1bGxCeXRlY29kZUxpdmVuZXNzPj4gbV9ieXRlY29kZUxpdmVuZXNzOwogICAg
IEhhc2hNYXA8Q29kZUJsb2NrKiwgc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlS2lsbHM+PiBtX2J5
dGVjb2RlS2lsbHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01h
eUV4aXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNwcAppbmRl
eCBkYWEyOTMzOWRiZmJkZjgwYWFkOWI2NDZhMmNiN2EwNTg3ZDk2MjM4Li5iYzZkMTVjODRkZmE0
NGY3MzRmZGM0NzRkZGU3YTZiYjI2NTZlNmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR01heUV4aXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTWF5RXhpdC5jcHAKQEAgLTEzMCw2ICsxMzAsOSBAQCBFeGl0TW9kZSBtYXlFeGl0KEdyYXBo
JiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIFN0b3JlQmFycmllcjoKICAgICBjYXNlIFB1
dEJ5T2Zmc2V0OgogICAgIGNhc2UgUHV0Q2xvc3VyZVZhcjoKKyAgICBjYXNlIFJlc2l6ZUdlbmVy
YXRvckxvY2FsczoKKyAgICBjYXNlIFNldEdlbmVyYXRvckxvY2FsOgorICAgIGNhc2UgR2V0R2Vu
ZXJhdG9yTG9jYWw6CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBTdHJDYXQ6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTm9kZS5oCmluZGV4IDEyODcwZDkzZDBjNDgyZTRmOGU1ZDRkMmRhZjFl
NmJmMWY3MWI2MmMuLjNlYzc3ZTFhMTRkY2UyNTM1YmExMGRmMjNmMDlhOWU4MWY5NzhiMDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVk
ZSAiREZHQXJyYXlNb2RlLmgiCiAjaW5jbHVkZSAiREZHQ29tbW9uLmgiCiAjaW5jbHVkZSAiREZH
RXBvY2guaCIKKyNpbmNsdWRlICJERkdHZW5lcmF0b3JMb2NhbERhdGEuaCIKICNpbmNsdWRlICJE
RkdMYXp5SlNWYWx1ZS5oIgogI2luY2x1ZGUgIkRGR011bHRpR2V0QnlPZmZzZXREYXRhLmgiCiAj
aW5jbHVkZSAiREZHTm9kZUZsYWdzLmgiCkBAIC04NzgsNiArODc5LDcyIEBAIHN0cnVjdCBOb2Rl
IHsKICAgICAgICAgcmV0dXJuIG1fb3BJbmZvOwogICAgIH0KIAorICAgIGJvb2wgaGFzR2VuZXJh
dG9yTG9jYWxzU2l6ZSgpCisgICAgeworICAgICAgICBzd2l0Y2ggKG9wKCkpIHsKKyAgICAgICAg
Y2FzZSBOZXdHZW5lcmF0b3JGcmFtZToKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQor
CisgICAgdW5zaWduZWQgZ2VuZXJhdG9yTG9jYWxzU2l6ZSgpCisgICAgeworICAgICAgICBBU1NF
UlQoaGFzR2VuZXJhdG9yTG9jYWxzU2l6ZSgpKTsKKyAgICAgICAgcmV0dXJuIG1fb3BJbmZvOwor
ICAgIH0KKworICAgIGJvb2wgaGFzR2VuZXJhdG9yTG9jYWxJbmRleCgpCisgICAgeworICAgICAg
ICBzd2l0Y2ggKG9wKCkpIHsKKyAgICAgICAgY2FzZSBTZXRHZW5lcmF0b3JMb2NhbDoKKyAgICAg
ICAgY2FzZSBHZXRHZW5lcmF0b3JMb2NhbDoKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
ICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAg
fQorCisgICAgdW5zaWduZWQgZ2VuZXJhdG9yTG9jYWxJbmRleCgpCisgICAgeworICAgICAgICBB
U1NFUlQoaGFzR2VuZXJhdG9yTG9jYWxJbmRleCgpKTsKKyAgICAgICAgcmV0dXJuIG1fb3BJbmZv
OworICAgIH0KKworICAgIGJvb2wgaGFzR2VuZXJhdG9yTG9jYWxEYXRhKCkKKyAgICB7CisgICAg
ICAgIHN3aXRjaCAob3AoKSkgeworICAgICAgICBjYXNlIFNldEdlbmVyYXRvckxvY2FsOgorICAg
ICAgICBjYXNlIEdldEdlbmVyYXRvckxvY2FsOgorICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICBHZW5lcmF0b3JMb2NhbERhdGEqIGdlbmVyYXRvckxvY2FsRGF0YSgpCisgICAg
eworICAgICAgICBBU1NFUlQoaGFzR2VuZXJhdG9yTG9jYWxEYXRhKCkpOworICAgICAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDxHZW5lcmF0b3JMb2NhbERhdGEqPihtX29wSW5mbzIpOworICAg
IH0KKworICAgIGJvb2wgaGFzR2VuZXJhdG9yRnJhbWVMb2NhbHMoKQorICAgIHsKKyAgICAgICAg
c3dpdGNoIChvcCgpKSB7CisgICAgICAgIGNhc2UgUmVzaXplR2VuZXJhdG9yTG9jYWxzOgorICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB1bnNpZ25lZCBnZW5lcmF0b3JGcmFt
ZUxvY2FscygpCisgICAgeworICAgICAgICBBU1NFUlQoaGFzR2VuZXJhdG9yRnJhbWVMb2NhbHMo
KSk7CisgICAgICAgIHJldHVybiBtX29wSW5mbzsKKyAgICB9CisKICAgICBib29sIGhhc0FjY2Vz
c29yQXR0cmlidXRlcygpCiAgICAgewogICAgICAgICBzd2l0Y2ggKG9wKCkpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAppbmRleCBkZGQwYjk3Y2IyZmU2OTI2MDQ1MTAz
ZjhhNzEwNzAwNDgyZTlmNmJkLi4yOThjOGY4YzdjYmM5ZGZjNWY1MDIyZjU0MTY2ZjZlOTQ4Mzcy
M2RjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCkBAIC03OSw2ICs3
OSwxMCBAQAogICAgIG1hY3JvKEZsdXNoLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8o
UGhhbnRvbUxvY2FsLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgXAorICAgIG1hY3JvKFNldEdl
bmVyYXRvckxvY2FsLCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgbWFjcm8oR2V0R2VuZXJhdG9y
TG9jYWwsIE5vZGVSZXN1bHRKUykgXAorICAgIG1hY3JvKFJlc2l6ZUdlbmVyYXRvckxvY2Fscywg
Tm9kZU11c3RHZW5lcmF0ZSkgXAorICAgIFwKICAgICAvKiBIaW50IHRoYXQgdGhpcyBpcyB3aGVy
ZSBieXRlY29kZSB0aGlua3MgaXMgYSBnb29kIHBsYWNlIHRvIE9TUi4gTm90ZSB0aGF0IHRoaXMg
Ki9cCiAgICAgLyogd2lsbCBleGlzdCBldmVuIGluIGlubGluZWQgbG9vcHMuIFRoaXMgaGFzIG5v
IGV4ZWN1dGlvbiBzZW1hbnRpY3MgYnV0IGl0IG11c3QgKi9cCiAgICAgLyogc3Vydml2ZSBhbGwg
RENFLiBXZSB0cmVhdCB0aGlzIGFzIGJlaW5nIGEgY2FuLWV4aXQgYmVjYXVzZSB0aWVyLXVwIHRv
IEZUTCBtYXkgKi9cCkBAIC0yNjMsNiArMjY3LDcgQEAKICAgICBtYWNybyhOZXdBcnJheUJ1ZmZl
ciwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oTmV3VHlwZWRBcnJheSwgTm9kZVJlc3VsdEpT
IHwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKE5ld1JlZ2V4cCwgTm9kZVJlc3VsdEpT
KSBcCisgICAgbWFjcm8oTmV3R2VuZXJhdG9yRnJhbWUsIE5vZGVSZXN1bHRKUykgXAogICAgIC8q
IFJlc3QgUGFyYW1ldGVyICovXAogICAgIG1hY3JvKEdldFJlc3RMZW5ndGgsIE5vZGVSZXN1bHRJ
bnQzMikgXAogICAgIG1hY3JvKENvcHlSZXN0LCBOb2RlTXVzdEdlbmVyYXRlKSBcCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAppbmRleCAyZmQ1ZGJkYzdmYzRj
Y2E4NmZhZTEwOTIyN2FjMTc1N2ZkY2RmOTZjLi5iYzM1NjYxM2QzZjUyMTgwODIzOGU1MjY4MTM1
YWFiMDliZTY3ZjBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09w
ZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9u
cy5jcHAKQEAgLTQxLDggKzQxLDkgQEAKICNpbmNsdWRlICJEaXJlY3RBcmd1bWVudHMuaCIKICNp
bmNsdWRlICJGVExGb3JPU1JFbnRyeUpJVENvZGUuaCIKICNpbmNsdWRlICJGVExPU1JFbnRyeS5o
IgotI2luY2x1ZGUgIkhvc3RDYWxsUmV0dXJuVmFsdWUuaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JG
cmFtZS5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgorI2luY2x1ZGUgIkhvc3RDYWxsUmV0
dXJuVmFsdWUuaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpJVC5oIgog
I2luY2x1ZGUgIkpJVEV4Y2VwdGlvbnMuaCIKQEAgLTgxNyw2ICs4MTgsMTEgQEAgY2hhciogSklU
X09QRVJBVElPTiBvcGVyYXRpb25OZXdGbG9hdDY0QXJyYXlXaXRoT25lQXJndW1lbnQoCiAgICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5
Vmlld1dpdGhBcmd1bWVudHM8SlNGbG9hdDY0QXJyYXk+KGV4ZWMsIHN0cnVjdHVyZSwgZW5jb2Rl
ZFZhbHVlLCAwLCBOdWxsb3B0KSk7CiB9CiAKK2NoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
TmV3R2VuZXJhdG9yRnJhbWUoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
aW50MzJfdCBudW1iZXJPZkNhbGxlZUxvY2FscykKK3sKKyAgICByZXR1cm4gYml0d2lzZV9jYXN0
PGNoYXIqPihHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlKGV4ZWMtPnZtKCksIHN0cnVjdHVyZSwgbnVt
YmVyT2ZDYWxsZWVMb2NhbHMpKTsKK30KKwogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bkNyZWF0ZUFjdGl2YXRpb25EaXJlY3QoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgSlNTY29wZSogc2NvcGUsIFN5bWJvbFRhYmxlKiB0YWJsZSwgRW5jb2RlZEpTVmFsdWUg
aW5pdGlhbFZhbHVlRW5jb2RlZCkKIHsKICAgICBKU1ZhbHVlIGluaXRpYWxWYWx1ZSA9IEpTVmFs
dWU6OmRlY29kZShpbml0aWFsVmFsdWVFbmNvZGVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPcGVyYXRpb25zLmgKaW5kZXggNDA5NjI5ZmY1ZDUzYTdiZTM4N2E2MjM2NDU1ZDY4MTZh
YzA4NWVjOS4uZTQ0M2JhMjgyMzcyZmJjY2UyYmFjNWIwOWEzNjdiZDUyYzhlNzVmMyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKQEAgLTgyLDYgKzgyLDcgQEAK
IGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3RmxvYXQzMkFycmF5V2l0aE9uZUFyZ3Vt
ZW50KEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSosIEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7
CiBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Zsb2F0NjRBcnJheVdpdGhTaXplKEV4
ZWNTdGF0ZSosIFN0cnVjdHVyZSosIGludDMyX3QpIFdURl9JTlRFUk5BTDsKIGNoYXIqIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uTmV3RmxvYXQ2NEFycmF5V2l0aE9uZUFyZ3VtZW50KEV4ZWNTdGF0
ZSosIFN0cnVjdHVyZSosIEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7CitjaGFyKiBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbk5ld0dlbmVyYXRvckZyYW1lKEV4ZWNTdGF0ZSosIFN0cnVjdHVy
ZSosIGludDMyX3QpIFdURl9JTlRFUk5BTDsKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25Q
dXRCeVZhbFN0cmljdChFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFByb3BlcnR5LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUp
IFdURl9JTlRFUk5BTDsKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbE5vblN0
cmljdChFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFByb3BlcnR5LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpIFdURl9JTlRF
Uk5BTDsKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbENlbGxTdHJpY3QoRXhl
Y1N0YXRlKiwgSlNDZWxsKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFByb3BlcnR5LCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUpIFdURl9JTlRFUk5BTDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAK
aW5kZXggNTc5OThjZmUxODFhOGZjZjljYzY1MTQzNTFhYzU4MGI4MGU3ZmI4YS4uMmQzYWJiZDJl
NzYwYmU2NDVhNzBjYTE1Zjg5Y2Y1OTA4ZDkyMmZjMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAK
QEAgLTE2MCw2ICsxNjAsMjQgQEAgY2xhc3MgUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UgOiBw
dWJsaWMgUGhhc2UgewogICAgICAgICAgICAgY2hhbmdlZCB8PSB2YXJpYWJsZUFjY2Vzc0RhdGEt
PnByZWRpY3Qobm9kZS0+Y2hpbGQxKCktPnByZWRpY3Rpb24oKSk7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQorCisgICAgICAgIGNhc2UgU2V0R2VuZXJhdG9yTG9jYWw6IHsKKyAgICAg
ICAgICAgIEdlbmVyYXRvckxvY2FsRGF0YSogZ2VuZXJhdG9yTG9jYWxEYXRhID0gbm9kZS0+Z2Vu
ZXJhdG9yTG9jYWxEYXRhKCk7CisgICAgICAgICAgICBjaGFuZ2VkIHw9IGdlbmVyYXRvckxvY2Fs
RGF0YS0+cHJlZGljdChub2RlLT5jaGlsZDIoKS0+cHJlZGljdGlvbigpKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBHZXRHZW5lcmF0b3JMb2NhbDogewor
ICAgICAgICAgICAgR2VuZXJhdG9yTG9jYWxEYXRhKiBnZW5lcmF0b3JMb2NhbERhdGEgPSBub2Rl
LT5nZW5lcmF0b3JMb2NhbERhdGEoKTsKKyAgICAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRp
Y3Rpb24gPSBnZW5lcmF0b3JMb2NhbERhdGEtPnByZWRpY3Rpb24oKTsKKyAgICAgICAgICAgIC8v
IFdlIGFsd2F5cyBzdG9yZSB0aGUgdmFsdWUgaW4gR2VuZXJhdG9yTG9jYWwgYXMgRm9ybWF0SlNW
YWx1ZS4KKyAgICAgICAgICAgIC8vIFNvIGRvdWJsZSB2YWx1ZSBpcyBiZXR0ZXIgdGhhbiBJbnQ1
MiB2YWx1ZS4KKyAgICAgICAgICAgIGlmIChwcmVkaWN0aW9uICYgU3BlY0ludDUyKQorICAgICAg
ICAgICAgICAgIHByZWRpY3Rpb24gPSAocHJlZGljdGlvbiB8IFNwZWNJbnQ1MkFzRG91YmxlKSAm
IH5TcGVjSW50NTI7CisgICAgICAgICAgICBpZiAocHJlZGljdGlvbikKKyAgICAgICAgICAgICAg
ICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihwcmVkaWN0aW9uKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBCaXRBbmQ6CiAgICAg
ICAgIGNhc2UgQml0T3I6CkBAIC01MjQsNyArNTQyLDggQEAgY2xhc3MgUHJlZGljdGlvblByb3Bh
Z2F0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICB9CiAgICAgICAgICAgICAKICAg
ICAgICAgY2FzZSBOZXdSZWdleHA6Ci0gICAgICAgIGNhc2UgQ3JlYXRlQWN0aXZhdGlvbjogewor
ICAgICAgICBjYXNlIENyZWF0ZUFjdGl2YXRpb246CisgICAgICAgIGNhc2UgTmV3R2VuZXJhdG9y
RnJhbWU6IHsKICAgICAgICAgICAgIGNoYW5nZWQgfD0gc2V0UHJlZGljdGlvbihTcGVjT2JqZWN0
T3RoZXIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTcxNiw2ICs3MzUsNyBA
QCBjbGFzcyBQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAg
ICAgIGNhc2UgRXhpdE9LOgogICAgICAgICBjYXNlIExvYWRWYXJhcmdzOgogICAgICAgICBjYXNl
IENvcHlSZXN0OgorICAgICAgICBjYXNlIFJlc2l6ZUdlbmVyYXRvckxvY2FsczoKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgCiAgICAgICAgIC8vIFRoaXMgZ2V0cyBpZ25vcmVkIGJl
Y2F1c2UgaXQgb25seSBwcmV0ZW5kcyB0byBwcm9kdWNlIGEgdmFsdWUuCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCmluZGV4IDIzMGVmZWRjNDgzMTUxMmJh
YzU2OGJlZWZkYjI3Njk2MTg3MjA5NGMuLjg3YzNlMDI2OGM1ODExMjhjZGJiZjFmYjU1YjM2Njky
ZmM0MTZkZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRv
RXhlY3V0ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0
ZS5oCkBAIC0yMzcsNiArMjM3LDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVU
eXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgTmV3QXJyYXlX
aXRoU2l6ZToKICAgICBjYXNlIE5ld0FycmF5QnVmZmVyOgogICAgIGNhc2UgTmV3UmVnZXhwOgor
ICAgIGNhc2UgTmV3R2VuZXJhdG9yRnJhbWU6CiAgICAgY2FzZSBCcmVha3BvaW50OgogICAgIGNh
c2UgUHJvZmlsZVdpbGxDYWxsOgogICAgIGNhc2UgUHJvZmlsZURpZENhbGw6CkBAIC0zMjgsNiAr
MzI5LDkgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSwgR3Jh
cGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgR2V0TXlBcmd1bWVudEJ5VmFsOgogICAg
IGNhc2UgRm9yd2FyZFZhcmFyZ3M6CiAgICAgY2FzZSBDb3B5UmVzdDoKKyAgICBjYXNlIFNldEdl
bmVyYXRvckxvY2FsOgorICAgIGNhc2UgR2V0R2VuZXJhdG9yTG9jYWw6CisgICAgY2FzZSBSZXNp
emVHZW5lcmF0b3JMb2NhbHM6CiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgY2FzZSBCb3R0
b21WYWx1ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5jcHAKaW5kZXggY2NjZTc5MTk5NTE0NWU5MWVmZDIwMDg4Yzk2YjdhZjgyYjU2MTZkNi4uNWY5
NjlmYzgwOWExNjg2NmYwZGFkODI2ZDZhMmQzZjJiZTQ1YWJkMyAxMDA3NTUKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTM4LDYgKzM4LDcgQEAK
ICNpbmNsdWRlICJERkdTYW5lU3RyaW5nR2V0QnlWYWxTbG93UGF0aEdlbmVyYXRvci5oIgogI2lu
Y2x1ZGUgIkRGR1Nsb3dQYXRoR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiRGlyZWN0QXJndW1lbnRz
LmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yRnJhbWUuaCIKICNpbmNsdWRlICJKSVRBZGRHZW5lcmF0
b3IuaCIKICNpbmNsdWRlICJKSVRCaXRBbmRHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJKSVRCaXRP
ckdlbmVyYXRvci5oIgpAQCAtNjM3OCw2ICs2Mzc5LDQyIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVOZXdTdHJpbmdPYmplY3QoTm9kZSogbm9kZSkKICAgICBjZWxsUmVzdWx0KHJlc3Vs
dEdQUiwgbm9kZSk7CiB9CiAKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdHZW5lcmF0
b3JGcmFtZShOb2RlKiBub2RlKQoreworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qg
PSBtX2ppdC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpOwor
ICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT5nZW5lcmF0b3JGcmFtZVN0
cnVjdHVyZSgpOworICAgIHVuc2lnbmVkIGdlbmVyYXRvckxvY2Fsc1NpemUgPSBub2RlLT5nZW5l
cmF0b3JMb2NhbHNTaXplKCk7CisKKyAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOworICAg
IEdQUlRlbXBvcmFyeSBzY3JhdGNoMSh0aGlzKTsKKyAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaDIo
dGhpcyk7CisKKyAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOworICAgIEdQUlJl
ZyBzY3JhdGNoMUdQUiA9IHNjcmF0Y2gxLmdwcigpOworICAgIEdQUlJlZyBzY3JhdGNoMkdQUiA9
IHNjcmF0Y2gyLmdwcigpOworCisgICAgSklUQ29tcGlsZXI6Okp1bXBMaXN0IHNsb3dQYXRoOwor
CisgICAgZW1pdEFsbG9jYXRlSlNPYmplY3RXaXRoS25vd25TaXplPEdlbmVyYXRvckZyYW1lPihy
ZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwgVHJ1c3RlZEltbVB0cihudWxscHRy
KSwgc2NyYXRjaDFHUFIsIHNjcmF0Y2gyR1BSLCBzbG93UGF0aCwgR2VuZXJhdG9yRnJhbWU6OmFs
bG9jYXRpb25TaXplRm9yTG9jYWxzKGdlbmVyYXRvckxvY2Fsc1NpemUpKTsKKyAgICBtX2ppdC5z
dG9yZTMyKFRydXN0ZWRJbW0zMihnZW5lcmF0b3JMb2NhbHNTaXplKSwgSklUQ29tcGlsZXI6OkFk
ZHJlc3MocmVzdWx0R1BSLCBHZW5lcmF0b3JGcmFtZTo6bnVtYmVyT2ZDYWxsZWVMb2NhbHNPZmZz
ZXQoKSkpOworICAgIG1faml0LnN0b3JlMzIoVHJ1c3RlZEltbTMyKDApLCBKSVRDb21waWxlcjo6
QWRkcmVzcyhyZXN1bHRHUFIsIEdlbmVyYXRvckZyYW1lOjpudW1iZXJPZlNhdmVkQ2FsbGVlTG9j
YWxzT2Zmc2V0KCkpKTsKKyAgICBKU1ZhbHVlIGVtcHR5VmFsdWU7CisgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IGdlbmVyYXRvckxvY2Fsc1NpemU7ICsraSkKKyAgICAgICAgbV9qaXQuc3Rv
cmVUcnVzdGVkVmFsdWUoZW1wdHlWYWx1ZSwgSklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0R1BS
LCBHZW5lcmF0b3JGcmFtZTo6bG9jYWxPZmZzZXQoaSkpKTsKKworICAgIGFkZFNsb3dQYXRoR2Vu
ZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93UGF0aCwgdGhpcywgb3BlcmF0aW9uTmV3R2VuZXJhdG9y
RnJhbWUsIHJlc3VsdEdQUiwgc3RydWN0dXJlLCBnZW5lcmF0b3JMb2NhbHNTaXplKSk7CisKKyAg
ICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7Cit9CisKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVSZXNpemVHZW5lcmF0b3JMb2NhbHMoTm9kZSogbm9kZSkKK3sKKyAgICBTcGVjdWxh
dGVDZWxsT3BlcmFuZCBmcmFtZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgR1BSUmVnIGZy
YW1lR1BSID0gZnJhbWUuZ3ByKCk7CisgICAgbV9qaXQuc3RvcmUzMihUcnVzdGVkSW1tMzIobm9k
ZS0+Z2VuZXJhdG9yRnJhbWVMb2NhbHMoKSksIEpJVENvbXBpbGVyOjpBZGRyZXNzKGZyYW1lR1BS
LCBHZW5lcmF0b3JGcmFtZTo6bnVtYmVyT2ZTYXZlZENhbGxlZUxvY2Fsc09mZnNldCgpKSk7Cisg
ICAgbm9SZXN1bHQobm9kZSk7Cit9CisKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdU
eXBlZEFycmF5KE5vZGUqIG5vZGUpCiB7CiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCA9IG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKaW5kZXgg
NTMxMmM4ZGJlZGZlZDE4MDA1NDM4MTEzMDc5ZWViMGIwZTk5MDhhYi4uMDBhNGZhOTJhYzczZTU4
MzlhYjg1NmVhYjlmNDM2NDIwZTUyY2IxNSAxMDA3NTUKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuaApAQCAtMjI4MSw2ICsyMjgxLDggQEAgY2xhc3MgU3BlY3Vs
YXRpdmVKSVQgewogICAgIHZvaWQgY29tcGlsZVB1dEJ5VmFsRm9yRmxvYXRUeXBlZEFycmF5KEdQ
UlJlZyBiYXNlLCBHUFJSZWcgcHJvcGVydHksIE5vZGUqLCBUeXBlZEFycmF5VHlwZSk7CiAgICAg
dGVtcGxhdGUgPHR5cGVuYW1lIENsYXNzVHlwZT4gdm9pZCBjb21waWxlTmV3RnVuY3Rpb25Db21t
b24oR1BSUmVnLCBTdHJ1Y3R1cmUqLCBHUFJSZWcsIEdQUlJlZywgR1BSUmVnLCBNYWNyb0Fzc2Vt
Ymxlcjo6SnVtcExpc3QmLCBzaXplX3QsIEZ1bmN0aW9uRXhlY3V0YWJsZSosIHB0cmRpZmZfdCwg
cHRyZGlmZl90LCBwdHJkaWZmX3QpOwogICAgIHZvaWQgY29tcGlsZU5ld0Z1bmN0aW9uKE5vZGUq
KTsKKyAgICB2b2lkIGNvbXBpbGVOZXdHZW5lcmF0b3JGcmFtZShOb2RlKik7CisgICAgdm9pZCBj
b21waWxlUmVzaXplR2VuZXJhdG9yTG9jYWxzKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVGb3J3
YXJkVmFyYXJncyhOb2RlKik7CiAgICAgdm9pZCBjb21waWxlQ3JlYXRlQWN0aXZhdGlvbihOb2Rl
Kik7CiAgICAgdm9pZCBjb21waWxlQ3JlYXRlRGlyZWN0QXJndW1lbnRzKE5vZGUqKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3Bw
CmluZGV4IDEyZWI1MDQxMTgwYWMyZjUwMTY0Zjk1MWIwNThlZGI2MmQyMjgyNzAuLmFkZWI4MTM3
YTkwZTFiNzc5ZGEwZDk3NmViNzJmOTcwZTUwMTg4ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApAQCAtMzcsNiArMzcs
NyBAQAogI2luY2x1ZGUgIkRGR1Nsb3dQYXRoR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiRGVidWdn
ZXIuaCIKICNpbmNsdWRlICJEaXJlY3RBcmd1bWVudHMuaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JG
cmFtZS5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIkpTRW52aXJvbm1l
bnRSZWNvcmQuaCIKICNpbmNsdWRlICJKU0xleGljYWxFbnZpcm9ubWVudC5oIgpAQCAtMzY1MCw2
ICszNjUxLDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAg
ICAgICAgY2VsbFJlc3VsdChyZXN1bHRQYXlsb2FkLmdwcigpLCBub2RlKTsKICAgICAgICAgYnJl
YWs7CiAgICAgfQorCisgICAgY2FzZSBOZXdHZW5lcmF0b3JGcmFtZTogeworICAgICAgICBjb21w
aWxlTmV3R2VuZXJhdG9yRnJhbWUobm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICAg
ICAgCiAgICAgY2FzZSBUb1RoaXM6IHsKICAgICAgICAgQVNTRVJUKG5vZGUtPmNoaWxkMSgpLnVz
ZUtpbmQoKSA9PSBVbnR5cGVkVXNlKTsKQEAgLTQ3MTgsNiArNDcyNCw0MSBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0
R1BSLCBub2RlKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQorICAgIGNhc2UgU2V0R2VuZXJhdG9y
TG9jYWw6IHsKKyAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgZnJhbWUodGhpcywgbm9kZS0+
Y2hpbGQxKCkpOworICAgICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGls
ZDIoKSk7CisKKyAgICAgICAgR1BSUmVnIGZyYW1lR1BSID0gZnJhbWUuZ3ByKCk7CisgICAgICAg
IEdQUlJlZyB2YWx1ZVRhZ0dQUiA9IHZhbHVlLnRhZ0dQUigpOworICAgICAgICBHUFJSZWcgdmFs
dWVQYXlsb2FkR1BSID0gdmFsdWUucGF5bG9hZEdQUigpOworICAgICAgICB1bnNpZ25lZCBnZW5l
cmF0b3JMb2NhbEluZGV4ID0gbm9kZS0+Z2VuZXJhdG9yTG9jYWxJbmRleCgpOworCisgICAgICAg
IG1faml0LnN0b3JlMzIodmFsdWVUYWdHUFIsIEpJVENvbXBpbGVyOjpBZGRyZXNzKGZyYW1lR1BS
LCBHZW5lcmF0b3JGcmFtZTo6bG9jYWxPZmZzZXQoZ2VuZXJhdG9yTG9jYWxJbmRleCkgKyBPQkpF
Q1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMudGFnKSkpOworICAgICAgICBtX2ppdC5zdG9y
ZTMyKHZhbHVlUGF5bG9hZEdQUiwgSklUQ29tcGlsZXI6OkFkZHJlc3MoZnJhbWVHUFIsIEdlbmVy
YXRvckZyYW1lOjpsb2NhbE9mZnNldChnZW5lcmF0b3JMb2NhbEluZGV4KSArIE9CSkVDVF9PRkZT
RVRPRihKU1ZhbHVlLCB1LmFzQml0cy5wYXlsb2FkKSkpOworCisgICAgICAgIG5vUmVzdWx0KG5v
ZGUpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBHZXRHZW5lcmF0b3JMb2NhbDog
eworICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBmcmFtZSh0aGlzLCBub2RlLT5jaGlsZDEo
KSk7CisgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHRUYWcodGhpcyk7CisgICAgICAgIEdQUlRl
bXBvcmFyeSByZXN1bHRQYXlsb2FkKHRoaXMpOworCisgICAgICAgIEdQUlJlZyBmcmFtZUdQUiA9
IGZyYW1lLmdwcigpOworICAgICAgICBHUFJSZWcgcmVzdWx0VGFnR1BSID0gcmVzdWx0VGFnLmdw
cigpOworICAgICAgICBHUFJSZWcgcmVzdWx0UGF5bG9hZEdQUiA9IHJlc3VsdFBheWxvYWQuZ3By
KCk7CisgICAgICAgIHVuc2lnbmVkIGdlbmVyYXRvckxvY2FsSW5kZXggPSBub2RlLT5nZW5lcmF0
b3JMb2NhbEluZGV4KCk7CisKKyAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjpBZGRy
ZXNzKGZyYW1lR1BSLCBHZW5lcmF0b3JGcmFtZTo6bG9jYWxPZmZzZXQoZ2VuZXJhdG9yTG9jYWxJ
bmRleCkgKyBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMudGFnKSksIHJlc3VsdFRh
Z0dQUik7CisgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6QWRkcmVzcyhmcmFtZUdQ
UiwgR2VuZXJhdG9yRnJhbWU6OmxvY2FsT2Zmc2V0KGdlbmVyYXRvckxvY2FsSW5kZXgpICsgT0JK
RUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnBheWxvYWQpKSwgcmVzdWx0UGF5bG9hZEdQ
Uik7CisKKyAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRUYWdHUFIsIHJlc3VsdFBheWxvYWRH
UFIsIG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBSZXNpemVHZW5lcmF0
b3JMb2NhbHM6IHsKKyAgICAgICAgY29tcGlsZVJlc2l6ZUdlbmVyYXRvckxvY2Fscyhub2RlKTsK
KyAgICAgICAgYnJlYWs7CisgICAgfQogICAgIGNhc2UgUHJvZmlsZVR5cGU6IHsKICAgICAgICAg
SlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBHUFJU
ZW1wb3Jhcnkgc2NyYXRjaDEodGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAppbmRleCBlNzQ1Njk0MDRjMWI5Nzg0ODA2MTk3ZDE0
NTQ1Y2QxZGIyM2Q3YTVjLi41YThmY2Q0NGQxMzVhZGUxNTM3YjI3ZWRiZjBjOWEwOGI1YjMzYzRj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
NjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2
NC5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJERkdTbG93UGF0aEdlbmVyYXRvci5o
IgogI2luY2x1ZGUgIkRlYnVnZ2VyLmgiCiAjaW5jbHVkZSAiRGlyZWN0QXJndW1lbnRzLmgiCisj
aW5jbHVkZSAiR2VuZXJhdG9yRnJhbWUuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNp
bmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNFbnZpcm9ubWVudFJlY29yZC5oIgpA
QCAtMzY4OCw2ICszNjg5LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSog
bm9kZSkKICAgICAgICAgY2VsbFJlc3VsdChyZXN1bHQuZ3ByKCksIG5vZGUpOwogICAgICAgICBi
cmVhazsKICAgICB9CisKKyAgICBjYXNlIE5ld0dlbmVyYXRvckZyYW1lOiB7CisgICAgICAgIGNv
bXBpbGVOZXdHZW5lcmF0b3JGcmFtZShub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogICAg
ICAgICAKICAgICBjYXNlIFRvVGhpczogewogICAgICAgICBBU1NFUlQobm9kZS0+Y2hpbGQxKCku
dXNlS2luZCgpID09IFVudHlwZWRVc2UpOwpAQCAtNDcyMCw2ICs0NzI2LDM1IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgY2VsbFJlc3VsdChyZXN1
bHRHUFIsIG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9CisgICAgY2FzZSBTZXRHZW5lcmF0
b3JMb2NhbDogeworICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBmcmFtZSh0aGlzLCBub2Rl
LT5jaGlsZDEoKSk7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNo
aWxkMigpKTsKKworICAgICAgICBHUFJSZWcgZnJhbWVHUFIgPSBmcmFtZS5ncHIoKTsKKyAgICAg
ICAgR1BSUmVnIHZhbHVlR1BSID0gdmFsdWUuZ3ByKCk7CisgICAgICAgIHVuc2lnbmVkIGdlbmVy
YXRvckxvY2FsSW5kZXggPSBub2RlLT5nZW5lcmF0b3JMb2NhbEluZGV4KCk7CisKKyAgICAgICAg
bV9qaXQuc3RvcmU2NCh2YWx1ZUdQUiwgSklUQ29tcGlsZXI6OkFkZHJlc3MoZnJhbWVHUFIsIEdl
bmVyYXRvckZyYW1lOjpsb2NhbE9mZnNldChnZW5lcmF0b3JMb2NhbEluZGV4KSkpOworCisgICAg
ICAgIG5vUmVzdWx0KG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBHZXRH
ZW5lcmF0b3JMb2NhbDogeworICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBmcmFtZSh0aGlz
LCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CisK
KyAgICAgICAgR1BSUmVnIGZyYW1lR1BSID0gZnJhbWUuZ3ByKCk7CisgICAgICAgIEdQUlJlZyBy
ZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CisgICAgICAgIHVuc2lnbmVkIGdlbmVyYXRvckxvY2Fs
SW5kZXggPSBub2RlLT5nZW5lcmF0b3JMb2NhbEluZGV4KCk7CisKKyAgICAgICAgbV9qaXQubG9h
ZDY0KEpJVENvbXBpbGVyOjpBZGRyZXNzKGZyYW1lR1BSLCBHZW5lcmF0b3JGcmFtZTo6bG9jYWxP
ZmZzZXQoZ2VuZXJhdG9yTG9jYWxJbmRleCkpLCByZXN1bHRHUFIpOworICAgICAgICBqc1ZhbHVl
UmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNl
IFJlc2l6ZUdlbmVyYXRvckxvY2FsczogeworICAgICAgICBjb21waWxlUmVzaXplR2VuZXJhdG9y
TG9jYWxzKG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CiAgICAgY2FzZSBQcm9maWxlVHlw
ZTogewogICAgICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7
CiAgICAgICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoMSh0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5j
cHAKaW5kZXggNzJmMjIwMGNlYTEwYjk4MTBkYmE4YzdiMTlmZWZmMjRkYWE1ZGFlMy4uZDdjNzA1
NjZmYzczN2Y4OTBmMTU2YjUzNDUwOWQ5YTBjMDczOGU5YiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5j
cHAKQEAgLTI4MSw2ICsyODEsMTEgQEAgY2xhc3MgU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2Ug
OiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgICAgIGNvbnNpZGVyQmFycmllcihtX25vZGUt
PmNoaWxkMSgpLCBtX25vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgY2FzZSBTZXRHZW5lcmF0b3JMb2NhbDogeworICAg
ICAgICAgICAgICAgIGNvbnNpZGVyQmFycmllcihtX25vZGUtPmNoaWxkMSgpLCBtX25vZGUtPmNo
aWxkMigpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICAKICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBA
IC0yOTYsNiArMzAxLDcgQEAgY2xhc3MgU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UgOiBwdWJs
aWMgUGhhc2UgewogICAgICAgICAgICAgY2FzZSBOZXdBcnJheUJ1ZmZlcjoKICAgICAgICAgICAg
IGNhc2UgTmV3VHlwZWRBcnJheToKICAgICAgICAgICAgIGNhc2UgTmV3UmVnZXhwOgorICAgICAg
ICAgICAgY2FzZSBOZXdHZW5lcmF0b3JGcmFtZToKICAgICAgICAgICAgIGNhc2UgTWF0ZXJpYWxp
emVOZXdPYmplY3Q6CiAgICAgICAgICAgICBjYXNlIE1hdGVyaWFsaXplQ3JlYXRlQWN0aXZhdGlv
bjoKICAgICAgICAgICAgIGNhc2UgTmV3U3RyaW5nT2JqZWN0OgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFzZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlLmNw
cAppbmRleCAyYzA1NTk4NDk4OTliZGY2ZmIxMTE3NTk3ZTEwNTRiZmYzNTQ2NjkzLi5lMWFlZjBi
MmMzOTNmNTYxOTQ4Y2NhNWE5NTlmMmUwNzEwODg0Mzg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlLmNw
cApAQCAtMTQ5LDYgKzE0OSw5IEBAIGNsYXNzIFN0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlIDog
cHVibGljIFBoYXNlIHsKICAgICAgICAgICAgICAgICBjYXNlIE5ld0dlbmVyYXRvckZ1bmN0aW9u
OgogICAgICAgICAgICAgICAgICAgICByZWdpc3RlclN0cnVjdHVyZShtX2dyYXBoLmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5nZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVy
ZSgpKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBO
ZXdHZW5lcmF0b3JGcmFtZToKKyAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJTdHJ1Y3R1cmUo
bV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+Z2VuZXJhdG9y
RnJhbWVTdHJ1Y3R1cmUoKSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgICAgICAgICAKICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAg
ICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJh
Y3RIZWFwUmVwb3NpdG9yeS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3Ry
YWN0SGVhcFJlcG9zaXRvcnkuY3BwCmluZGV4IDk3YzA3ODRiYjQyYmM5MTlkMDZjZjUyM2M0MWUw
MjQ2YTUzNTFkOTEuLjY5ZDg5ZDZhZDQyNTQ5MjNiYzNmYWIzYzdhY2EyMDg5NWM1NWU1Y2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3Np
dG9yeS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBS
ZXBvc2l0b3J5LmNwcApAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiRGlyZWN0QXJndW1l
bnRzLmgiCiAjaW5jbHVkZSAiRlRMQWJicmV2aWF0aW9ucy5oIgorI2luY2x1ZGUgIkdlbmVyYXRv
ckZyYW1lLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiSlNFbnZpcm9u
bWVudFJlY29yZC5oIgogI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1lRW51bWVyYXRvci5oIgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0
b3J5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRv
cnkuaAppbmRleCA3N2U1Nzk4Njk0MGM2YWM5NmY4N2YxZjk0NWM0NjI1MTI4ODYzMGYwLi40ODg2
M2MwYmQzMGY2NDU3NjUzMTA4YmY0NTY5YjEyYzk0MDg1OGFiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaApAQCAtNDcs
NiArNDcsOCBAQAogICAgIG1hY3JvKERpcmVjdEFyZ3VtZW50c19sZW5ndGgsIERpcmVjdEFyZ3Vt
ZW50czo6b2Zmc2V0T2ZMZW5ndGgoKSkgXAogICAgIG1hY3JvKERpcmVjdEFyZ3VtZW50c19taW5D
YXBhY2l0eSwgRGlyZWN0QXJndW1lbnRzOjpvZmZzZXRPZk1pbkNhcGFjaXR5KCkpIFwKICAgICBt
YWNybyhEaXJlY3RBcmd1bWVudHNfb3ZlcnJpZGVzLCBEaXJlY3RBcmd1bWVudHM6Om9mZnNldE9m
T3ZlcnJpZGVzKCkpIFwKKyAgICBtYWNybyhHZW5lcmF0b3JGcmFtZV9udW1iZXJPZkNhbGxlZUxv
Y2FscywgR2VuZXJhdG9yRnJhbWU6Om51bWJlck9mQ2FsbGVlTG9jYWxzT2Zmc2V0KCkpIFwKKyAg
ICBtYWNybyhHZW5lcmF0b3JGcmFtZV9udW1iZXJPZlNhdmVkQ2FsbGVlTG9jYWxzLCBHZW5lcmF0
b3JGcmFtZTo6bnVtYmVyT2ZTYXZlZENhbGxlZUxvY2Fsc09mZnNldCgpKSBcCiAgICAgbWFjcm8o
R2V0dGVyU2V0dGVyX2dldHRlciwgR2V0dGVyU2V0dGVyOjpvZmZzZXRPZkdldHRlcigpKSBcCiAg
ICAgbWFjcm8oR2V0dGVyU2V0dGVyX3NldHRlciwgR2V0dGVyU2V0dGVyOjpvZmZzZXRPZlNldHRl
cigpKSBcCiAgICAgbWFjcm8oSlNBcnJheUJ1ZmZlclZpZXdfbGVuZ3RoLCBKU0FycmF5QnVmZmVy
Vmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSkgXApAQCAtOTEsNiArOTMsNyBAQAogCiAjZGVmaW5lIEZP
Ul9FQUNIX0lOREVYRURfQUJTVFJBQ1RfSEVBUChtYWNybykgXAogICAgIG1hY3JvKERpcmVjdEFy
Z3VtZW50c19zdG9yYWdlLCBEaXJlY3RBcmd1bWVudHM6OnN0b3JhZ2VPZmZzZXQoKSwgc2l6ZW9m
KEVuY29kZWRKU1ZhbHVlKSkgXAorICAgIG1hY3JvKEdlbmVyYXRvckZyYW1lX2NhbGxlZUxvY2Fs
cywgR2VuZXJhdG9yRnJhbWU6Om9mZnNldE9mTG9jYWxzKCksIHNpemVvZihXcml0ZUJhcnJpZXI8
VW5rbm93bj4pKSBcCiAgICAgbWFjcm8oSlNFbnZpcm9ubWVudFJlY29yZF92YXJpYWJsZXMsIEpT
RW52aXJvbm1lbnRSZWNvcmQ6Om9mZnNldE9mVmFyaWFibGVzKCksIHNpemVvZihFbmNvZGVkSlNW
YWx1ZSkpIFwKICAgICBtYWNybyhKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3JfY2FjaGVkUHJvcGVy
dHlOYW1lc1ZlY3RvckNvbnRlbnRzLCAwLCBzaXplb2YoV3JpdGVCYXJyaWVyPEpTU3RyaW5nPikp
IFwKICAgICBtYWNybyhKU1JvcGVTdHJpbmdfZmliZXJzLCBKU1JvcGVTdHJpbmc6Om9mZnNldE9m
RmliZXJzKCksIHNpemVvZihXcml0ZUJhcnJpZXI8SlNTdHJpbmc+KSkgXApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCmluZGV4IGQyYTQ5MGMyYTY3ZTZk
YjhiOWE1YTc5NjY0ZTU2NWUzZDZkOTUxZGMuLjBlMWRmZTg3NWUxMGE1YjU2NTU2ZmE5ZGQ1YmZk
YjNlNjkwZjgzODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2Fw
YWJpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxp
dGllcy5jcHAKQEAgLTcyLDYgKzcyLDcgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21w
aWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBOZXdPYmplY3Q6CiAgICAgY2FzZSBOZXdBcnJheToK
ICAgICBjYXNlIE5ld0FycmF5QnVmZmVyOgorICAgIGNhc2UgTmV3R2VuZXJhdG9yRnJhbWU6CiAg
ICAgY2FzZSBHZXRCeU9mZnNldDoKICAgICBjYXNlIEdldEdldHRlclNldHRlckJ5T2Zmc2V0Ogog
ICAgIGNhc2UgR2V0R2V0dGVyOgpAQCAtMjE2LDYgKzIxNyw5IEBAIGlubGluZSBDYXBhYmlsaXR5
TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgUHV0U2V0dGVyQnlWYWw6CiAg
ICAgY2FzZSBDb3B5UmVzdDoKICAgICBjYXNlIEdldFJlc3RMZW5ndGg6CisgICAgY2FzZSBTZXRH
ZW5lcmF0b3JMb2NhbDoKKyAgICBjYXNlIEdldEdlbmVyYXRvckxvY2FsOgorICAgIGNhc2UgUmVz
aXplR2VuZXJhdG9yTG9jYWxzOgogICAgICAgICAvLyBUaGVzZSBhcmUgT0suCiAgICAgICAgIGJy
ZWFrOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZH
VG9MTFZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0u
Y3BwCmluZGV4IDNjMDA4ZmRiYmI1MGM1NmE5NzhjYTZlMGQ3NDM4ODJiZmQyNTNjYjkuLmE1YWUx
Njg0NzY4OWIyMzkwNzQ5NzQ5YzBiNzg4OGQxNDgxZGI2YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCkBAIC01Myw2ICs1Myw3IEBACiAj
aW5jbHVkZSAiRlRMUGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZS5oIgogI2luY2x1ZGUgIkZUTFRo
dW5rcy5oIgogI2luY2x1ZGUgIkZUTFdlaWdodGVkVGFyZ2V0LmgiCisjaW5jbHVkZSAiR2VuZXJh
dG9yRnJhbWUuaCIKICNpbmNsdWRlICJKSVRBZGRHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJKSVRC
aXRBbmRHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJKSVRCaXRPckdlbmVyYXRvci5oIgpAQCAtODM5
LDYgKzg0MCw5IEBAIGNsYXNzIExvd2VyREZHVG9MTFZNIHsKICAgICAgICAgY2FzZSBOZXdBcnJh
eVdpdGhTaXplOgogICAgICAgICAgICAgY29tcGlsZU5ld0FycmF5V2l0aFNpemUoKTsKICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE5ld0dlbmVyYXRvckZyYW1lOgorICAgICAgICAg
ICAgY29tcGlsZU5ld0dlbmVyYXRvckZyYW1lKCk7CisgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldDoKICAgICAgICAgICAgIGNvbXBpbGVHZXRU
eXBlZEFycmF5Qnl0ZU9mZnNldCgpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xMDcxLDYgKzEw
NzUsMTUgQEAgY2xhc3MgTG93ZXJERkdUb0xMVk0gewogICAgICAgICBjYXNlIEdldFJlc3RMZW5n
dGg6CiAgICAgICAgICAgICBjb21waWxlR2V0UmVzdExlbmd0aCgpOwogICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgUmVzaXplR2VuZXJhdG9yTG9jYWxzOgorICAgICAgICAgICAgY29t
cGlsZVJlc2l6ZUdlbmVyYXRvckxvY2FscygpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgU2V0R2VuZXJhdG9yTG9jYWw6CisgICAgICAgICAgICBjb21waWxlU2V0R2VuZXJhdG9y
TG9jYWwoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdldEdlbmVyYXRvckxv
Y2FsOgorICAgICAgICAgICAgY29tcGlsZUdldEdlbmVyYXRvckxvY2FsKCk7CisgICAgICAgICAg
ICBicmVhazsKIAogICAgICAgICBjYXNlIFBoYW50b21Mb2NhbDoKICAgICAgICAgY2FzZSBMb29w
SGludDoKQEAgLTM5MTYsNiArMzkyOSwyOCBAQCBjbGFzcyBMb3dlckRGR1RvTExWTSB7CiAgICAg
ICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOwogICAgICAgICBzZXRJ
bnQzMihtX291dC5waGkobV9vdXQuaW50MzIsIHplcm9MZW5ndGhSZXN1bHQsIG5vblplcm9MZW5n
dGhSZXN1bHQpKTsKICAgICB9CisKKyAgICB2b2lkIGNvbXBpbGVSZXNpemVHZW5lcmF0b3JMb2Nh
bHMoKQorICAgIHsKKyAgICAgICAgTFZhbHVlIGZyYW1lID0gbG93Q2VsbChtX25vZGUtPmNoaWxk
MSgpKTsKKyAgICAgICAgbV9vdXQuc3RvcmUzMihtX291dC5jb25zdEludDMyKG1fbm9kZS0+Z2Vu
ZXJhdG9yRnJhbWVMb2NhbHMoKSksIGZyYW1lLCBtX2hlYXBzLkdlbmVyYXRvckZyYW1lX251bWJl
ck9mU2F2ZWRDYWxsZWVMb2NhbHMpOworICAgIH0KKworICAgIHZvaWQgY29tcGlsZVNldEdlbmVy
YXRvckxvY2FsKCkKKyAgICB7CisgICAgICAgIG1fb3V0LnN0b3JlNjQoCisgICAgICAgICAgICBs
b3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQyKCkpLAorICAgICAgICAgICAgbG93Q2VsbChtX25vZGUt
PmNoaWxkMSgpKSwKKyAgICAgICAgICAgIG1faGVhcHMuR2VuZXJhdG9yRnJhbWVfY2FsbGVlTG9j
YWxzW21fbm9kZS0+Z2VuZXJhdG9yTG9jYWxJbmRleCgpXSk7CisgICAgfQorCisgICAgdm9pZCBj
b21waWxlR2V0R2VuZXJhdG9yTG9jYWwoKQorICAgIHsKKyAgICAgICAgc2V0SlNWYWx1ZSgKKyAg
ICAgICAgICAgIG1fb3V0LmxvYWQ2NCgKKyAgICAgICAgICAgICAgICBsb3dDZWxsKG1fbm9kZS0+
Y2hpbGQxKCkpLAorICAgICAgICAgICAgICAgIG1faGVhcHMuR2VuZXJhdG9yRnJhbWVfY2FsbGVl
TG9jYWxzW21fbm9kZS0+Z2VuZXJhdG9yTG9jYWxJbmRleCgpXSkpOworICAgIH0KICAgICAKICAg
ICB2b2lkIGNvbXBpbGVOZXdPYmplY3QoKQogICAgIHsKQEAgLTQxNTAsNiArNDE4NSw0MiBAQCBj
bGFzcyBMb3dlckRGR1RvTExWTSB7CiAgICAgICAgICAgICBtX291dC5jb25zdEludFB0cihzdHJ1
Y3R1cmUpKTsKICAgICAgICAgc2V0SlNWYWx1ZSh2bUNhbGwobV9vdXQuaW50NjQsIG1fb3V0Lm9w
ZXJhdGlvbihvcGVyYXRpb25OZXdBcnJheVdpdGhTaXplKSwgbV9jYWxsRnJhbWUsIHN0cnVjdHVy
ZVZhbHVlLCBwdWJsaWNMZW5ndGgpKTsKICAgICB9CisKKyAgICB2b2lkIGNvbXBpbGVOZXdHZW5l
cmF0b3JGcmFtZSgpCisgICAgeworICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAg
ICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdsb2JhbE9iamVjdC0+Z2VuZXJhdG9yRnJhbWVT
dHJ1Y3R1cmUoKTsKKyAgICAgICAgdW5zaWduZWQgZ2VuZXJhdG9yTG9jYWxzU2l6ZSA9IG1fbm9k
ZS0+Z2VuZXJhdG9yTG9jYWxzU2l6ZSgpOworCisgICAgICAgIExCYXNpY0Jsb2NrIHNsb3dQYXRo
ID0gRlRMX05FV19CTE9DSyhtX291dCwgKCJOZXdHZW5lcmF0b3JGcmFtZSBzbG93IHBhdGgiKSk7
CisgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IEZUTF9ORVdfQkxPQ0sobV9vdXQs
ICgiTmV3R2VuZXJhdG9yRnJhbWUgY29udGludWF0aW9uIikpOworCisgICAgICAgIExCYXNpY0Js
b2NrIGxhc3ROZXh0ID0gbV9vdXQuaW5zZXJ0TmV3QmxvY2tzQmVmb3JlKHNsb3dQYXRoKTsKKyAg
ICAgICAgTFZhbHVlIGZhc3RPYmplY3QgPSBhbGxvY2F0ZU9iamVjdDxHZW5lcmF0b3JGcmFtZT4o
R2VuZXJhdG9yRnJhbWU6OmFsbG9jYXRpb25TaXplRm9yTG9jYWxzKGdlbmVyYXRvckxvY2Fsc1Np
emUpLCBzdHJ1Y3R1cmUsIG1fb3V0LmludFB0clplcm8sIHNsb3dQYXRoKTsKKyAgICAgICAgbV9v
dXQuc3RvcmUzMihtX291dC5jb25zdEludDMyKGdlbmVyYXRvckxvY2Fsc1NpemUpLCBmYXN0T2Jq
ZWN0LCBtX2hlYXBzLkdlbmVyYXRvckZyYW1lX251bWJlck9mQ2FsbGVlTG9jYWxzKTsKKyAgICAg
ICAgbV9vdXQuc3RvcmUzMihtX291dC5jb25zdEludDMyKDApLCBmYXN0T2JqZWN0LCBtX2hlYXBz
LkdlbmVyYXRvckZyYW1lX251bWJlck9mU2F2ZWRDYWxsZWVMb2NhbHMpOworCisgICAgICAgIEpT
VmFsdWUgZW1wdHlWYWx1ZTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGdlbmVy
YXRvckxvY2Fsc1NpemU7ICsraSkKKyAgICAgICAgICAgIG1fb3V0LnN0b3JlNjQobV9vdXQuY29u
c3RJbnQ2NChKU1ZhbHVlOjplbmNvZGUoZW1wdHlWYWx1ZSkpLCBmYXN0T2JqZWN0LCBtX2hlYXBz
LkdlbmVyYXRvckZyYW1lX2NhbGxlZUxvY2Fsc1tpXSk7CisKKyAgICAgICAgVmFsdWVGcm9tQmxv
Y2sgZmFzdFJlc3VsdCA9IG1fb3V0LmFuY2hvcihmYXN0T2JqZWN0KTsKKyAgICAgICAgbV9vdXQu
anVtcChjb250aW51YXRpb24pOworCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKHNsb3dQYXRoLCBj
b250aW51YXRpb24pOworICAgICAgICBWZWN0b3I8TFZhbHVlPiBzbG93UGF0aEFyZ3VtZW50czsK
KyAgICAgICAgTFZhbHVlIGNhbGxSZXN1bHQgPSBsYXp5U2xvd1BhdGgoCisgICAgICAgICAgICBb
PV0gKGNvbnN0IFZlY3RvcjxMb2NhdGlvbj4mIGxvY2F0aW9ucykgLT4gUmVmUHRyPExhenlTbG93
UGF0aDo6R2VuZXJhdG9yPiB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUxhenlDYWxs
R2VuZXJhdG9yKAorICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb25OZXdHZW5lcmF0b3JGcmFt
ZSwKKyAgICAgICAgICAgICAgICAgICAgbG9jYXRpb25zWzBdLmRpcmVjdEdQUigpLCBDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1t
MzIoZ2VuZXJhdG9yTG9jYWxzU2l6ZSkpOworICAgICAgICAgICAgfSk7CisgICAgICAgIFZhbHVl
RnJvbUJsb2NrIHNsb3dSZXN1bHQgPSBtX291dC5hbmNob3IoY2FsbFJlc3VsdCk7CisgICAgICAg
IG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKworICAgICAgICBtX291dC5hcHBlbmRUbyhjb250
aW51YXRpb24sIGxhc3ROZXh0KTsKKyAgICAgICAgc2V0SlNWYWx1ZShtX291dC5waGkobV9vdXQu
aW50UHRyLCBmYXN0UmVzdWx0LCBzbG93UmVzdWx0KSk7CisgICAgfQogICAgIAogICAgIHZvaWQg
Y29tcGlsZUFsbG9jYXRlUHJvcGVydHlTdG9yYWdlKCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVC5jcHAKaW5kZXggYTNiZGZhN2NkNWQwZjU3MjQ3ZjFiZThjNDBiMjUxMGQyOWQ4MDBmZi4u
MGI5ZmQ4ZDM0M2ZkOGNlYjI3YWFmN2EzOTQwMDcwNDY0NzRjMjY4YSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklULmNwcApAQCAtMjE2LDcgKzIxNiw5IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGls
ZU1haW5QYXNzKCkKICAgICAgICAgREVGSU5FX09QKG9wX2NoZWNrX3RkeikKICAgICAgICAgREVG
SU5FX09QKG9wX2Fzc2VydCkKICAgICAgICAgREVGSU5FX09QKG9wX3NhdmUpCi0gICAgICAgIERF
RklORV9PUChvcF9yZXN1bWUpCisgICAgICAgIERFRklORV9PUChvcF9uZXdfZ2VuZXJhdG9yX2Zy
YW1lKQorICAgICAgICBERUZJTkVfT1Aob3BfcmVzdW1lX2Zyb21fZ2VuZXJhdG9yX2ZyYW1lKQor
ICAgICAgICBERUZJTkVfT1Aob3BfY2xlYXJfZ2VuZXJhdG9yX2ZyYW1lKQogICAgICAgICBERUZJ
TkVfT1Aob3BfZGVidWcpCiAgICAgICAgIERFRklORV9PUChvcF9kZWxfYnlfaWQpCiAgICAgICAg
IERFRklORV9PUChvcF9kaXYpCkBAIC0yODksNiArMjkxLDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVD
b21waWxlTWFpblBhc3MoKQogICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2dldHRlcl9zZXR0ZXJf
YnlfaWQpCiAgICAgICAgIERFRklORV9PUChvcF9wdXRfZ2V0dGVyX2J5X3ZhbCkKICAgICAgICAg
REVGSU5FX09QKG9wX3B1dF9zZXR0ZXJfYnlfdmFsKQorICAgICAgICBERUZJTkVfT1Aob3Bfbm9w
KQogCiAgICAgICAgIERFRklORV9PUChvcF9yZXQpCiAgICAgICAgIERFRklORV9PUChvcF9yc2hp
ZnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAppbmRleCBkZjdiM2RjNWU4OTIwZWU0ZWY5MmJjYWNi
YWVmZjFiNGMwMGQ5MzY5Li5lYzY4MWQwOTkwZWYwYzJhMWIwYzQxZDU0MTJiYmNlMGMwZDM5MWRl
IDEwMDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKQEAgLTQ5NSw3ICs0OTUsOSBAQAogICAgICAgICB2
b2lkIGVtaXRfb3BfY2hlY2tfdGR6KEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9v
cF9hc3NlcnQoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX3NhdmUoSW5zdHJ1
Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX3Jlc3VtZShJbnN0cnVjdGlvbiopOworICAg
ICAgICB2b2lkIGVtaXRfb3BfcmVzdW1lX2Zyb21fZ2VuZXJhdG9yX2ZyYW1lKEluc3RydWN0aW9u
Kik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9jbGVhcl9nZW5lcmF0b3JfZnJhbWUoSW5zdHJ1Y3Rp
b24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX25ld19nZW5lcmF0b3JfZnJhbWUoSW5zdHJ1Y3Rp
b24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2RlYnVnKEluc3RydWN0aW9uKik7CiAgICAgICAg
IHZvaWQgZW1pdF9vcF9kZWxfYnlfaWQoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0
X29wX2RpdihJbnN0cnVjdGlvbiopOwpAQCAtNTk1LDYgKzU5Nyw3IEBACiAgICAgICAgIHZvaWQg
ZW1pdF9vcF9lbnVtZXJhdG9yX3N0cnVjdHVyZV9wbmFtZShJbnN0cnVjdGlvbiopOwogICAgICAg
ICB2b2lkIGVtaXRfb3BfZW51bWVyYXRvcl9nZW5lcmljX3BuYW1lKEluc3RydWN0aW9uKik7CiAg
ICAgICAgIHZvaWQgZW1pdF9vcF90b19pbmRleF9zdHJpbmcoSW5zdHJ1Y3Rpb24qKTsKKyAgICAg
ICAgdm9pZCBlbWl0X29wX25vcChJbnN0cnVjdGlvbiopOwogCiAgICAgICAgIHZvaWQgZW1pdFNs
b3dfb3BfYWRkKEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYp
OwogICAgICAgICB2b2lkIGVtaXRTbG93X29wX2JpdGFuZChJbnN0cnVjdGlvbiosIFZlY3RvcjxT
bG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
Y29kZXMuY3BwCmluZGV4IDczOGNiNjNmZWQ5MWI0OTg1NWQ1ZDAzM2Q0NjMzNDVmZGQ0NzZkOWIu
LjRhNmE4OGM4NGY1NzVmMTRiYWI2MDM5MzkwZjQ2ODE5NGVmNzM3MjYgMTAwNzU1Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUg
IkNvcGllZFNwYWNlSW5saW5lcy5oIgogI2luY2x1ZGUgIkRlYnVnZ2VyLmgiCiAjaW5jbHVkZSAi
RXhjZXB0aW9uLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yRnJhbWUuaCIKICNpbmNsdWRlICJIZWFw
LmgiCiAjaW5jbHVkZSAiSklUSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKQEAgLTg5
Myw2ICs4OTQsMjMgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3RvX3N0cmluZyhJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2UKICAgICBzbG93UGF0aENhbGwu
Y2FsbCgpOwogfQogCit2b2lkIEpJVDo6ZW1pdF9vcF9yZXN1bWVfZnJvbV9nZW5lcmF0b3JfZnJh
bWUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBpbnQgZHN0ID0gY3Vy
cmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKKyAgICBpbnQgZnJhbWUgPSBjdXJyZW50SW5z
dHJ1Y3Rpb25bMl0udS5vcGVyYW5kOworICAgIHVuc2lnbmVkIGluZGV4ID0gY3VycmVudEluc3Ry
dWN0aW9uWzNdLnUudW5zaWduZWRWYWx1ZTsKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGZy
YW1lLCByZWdUMSk7CisgICAgbG9hZDY0KEFkZHJlc3MocmVnVDEsIEdlbmVyYXRvckZyYW1lOjps
b2NhbE9mZnNldChpbmRleCkpLCByZWdUMCk7CisgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihk
c3QpOworfQorCit2b2lkIEpJVDo6ZW1pdF9vcF9jbGVhcl9nZW5lcmF0b3JfZnJhbWUoSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBpbnQgZnJhbWUgPSBjdXJyZW50SW5z
dHJ1Y3Rpb25bMV0udS5vcGVyYW5kOworICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoZnJhbWUs
IHJlZ1QxKTsKKyAgICBzdG9yZTMyKFRydXN0ZWRJbW0zMigwKSwgQWRkcmVzcyhyZWdUMSwgR2Vu
ZXJhdG9yRnJhbWU6Om51bWJlck9mU2F2ZWRDYWxsZWVMb2NhbHNPZmZzZXQoKSkpOworfQorCiAj
ZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkKIAogdm9pZCBKSVQ6OmVtaXRfb3BfbG9vcF9oaW50KElu
c3RydWN0aW9uKikKQEAgLTE0MzUsMTIgKzE0NTMsMTYgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bfc2F2
ZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIHNsb3dQYXRoQ2FsbC5jYWxs
KCk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX3Jlc3VtZShJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfbmV3X2dlbmVyYXRvcl9mcmFtZShJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewotICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0
aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfcmVzdW1lKTsKKyAgICBK
SVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xv
d19wYXRoX25ld19nZW5lcmF0b3JfZnJhbWUpOwogICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CiB9
CiAKK3ZvaWQgSklUOjplbWl0X29wX25vcChJbnN0cnVjdGlvbiopCit7Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAppbmRleCBjMzI2ZmYzZTAxZTVhNDI0M2U3Yjc4
YmVlODUyY2ZiNzk3ZDM5MmVlLi44OTM3NTI1ZDllZWNkNDcyODQ2ZThhYTc4ZmY3NDg3NDYxODlk
YzFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82
NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3Bw
CkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiQ0NhbGxIZWxwZXJzLmgiCiAjaW5jbHVkZSAi
RGVidWdnZXIuaCIKICNpbmNsdWRlICJFeGNlcHRpb24uaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JG
cmFtZS5oIgogI2luY2x1ZGUgIkpJVElubGluZXMuaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCiAj
aW5jbHVkZSAiSlNDZWxsLmgiCkBAIC0xMzI4LDYgKzEzMjksMjQgQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfcHJvZmlsZV90eXBlKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAganVt
cFRvRW5kLmxpbmsodGhpcyk7CiB9CiAKK3ZvaWQgSklUOjplbWl0X29wX3Jlc3VtZV9mcm9tX2dl
bmVyYXRvcl9mcmFtZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIGlu
dCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOworICAgIGludCBmcmFtZSA9
IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7CisgICAgdW5zaWduZWQgaW5kZXggPSBj
dXJyZW50SW5zdHJ1Y3Rpb25bM10udS51bnNpZ25lZFZhbHVlOworICAgIGVtaXRMb2FkUGF5bG9h
ZChmcmFtZSwgcmVnVDIpOworICAgIGxvYWQzMihBZGRyZXNzKHJlZ1QyLCBHZW5lcmF0b3JGcmFt
ZTo6bG9jYWxPZmZzZXQoaW5kZXgpICsgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRz
LnRhZykpLCByZWdUMSk7CisgICAgbG9hZDMyKEFkZHJlc3MocmVnVDIsIEdlbmVyYXRvckZyYW1l
Ojpsb2NhbE9mZnNldChpbmRleCkgKyBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMu
cGF5bG9hZCkpLCByZWdUMCk7CisgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QsIEpTVmFs
dWVSZWdzKHJlZ1QxLCByZWdUMCkpOworfQorCit2b2lkIEpJVDo6ZW1pdF9vcF9jbGVhcl9nZW5l
cmF0b3JfZnJhbWUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBpbnQg
ZnJhbWUgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOworICAgIGVtaXRMb2FkUGF5
bG9hZChmcmFtZSwgcmVnVDEpOworICAgIHN0b3JlMzIoVHJ1c3RlZEltbTMyKDApLCBBZGRyZXNz
KHJlZ1QxLCBHZW5lcmF0b3JGcmFtZTo6bnVtYmVyT2ZTYXZlZENhbGxlZUxvY2Fsc09mZnNldCgp
KSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gVVNFKEpTVkFMVUUzMl82
NCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNF
eHRyYWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4
dHJhY3Rvci5jcHAKaW5kZXggMmI0ZTYxOTg2ZDMxMmFjOWU0Zjg3MzczY2U3YWEwYjlmZDBjZTc1
YS4uYWZlMDk2ODQ4OGY0NmQxNjc1YzkxN2VjYjJiNjIwYzAwNTYxMjI0NiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAK
QEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJEaXJlY3RBcmd1bWVudHMuaCIKICNpbmNsdWRl
ICJFeGNlcHRpb24uaCIKICNpbmNsdWRlICJFeGVjdXRhYmxlLmgiCisjaW5jbHVkZSAiR2VuZXJh
dG9yRnJhbWUuaCIKICNpbmNsdWRlICJIZWFwLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIK
ICNpbmNsdWRlICJKU0FycmF5LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KaW5kZXggY2Q0Y2U5MDYzYjE5NTc1YTk1N2UzY2Ez
ZTIyYmU1NzkxNWJkYjU5YS4uYjkyMGE2Y2U2NmNmYmUxMzUzMzRkYTAxZjY5ZDU4ZGU0NjYwY2U0
ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXIuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVy
cHJldGVyLmFzbQpAQCAtMTY1LDYgKzE2NSw3IEBAIGNvbnN0IFNsb3RTaXplID0gOAogCiBjb25z
dCBKU0Vudmlyb25tZW50UmVjb3JkX3ZhcmlhYmxlcyA9IChzaXplb2YgSlNFbnZpcm9ubWVudFJl
Y29yZCArIFNsb3RTaXplIC0gMSkgJiB+KFNsb3RTaXplIC0gMSkKIGNvbnN0IERpcmVjdEFyZ3Vt
ZW50c19zdG9yYWdlID0gKHNpemVvZiBEaXJlY3RBcmd1bWVudHMgKyBTbG90U2l6ZSAtIDEpICYg
fihTbG90U2l6ZSAtIDEpCitjb25zdCBHZW5lcmF0b3JGcmFtZV9jYWxsZWVMb2NhbHMgPSAoc2l6
ZW9mIEdlbmVyYXRvckZyYW1lICsgU2xvdFNpemUgLSAxKSAmIH4oU2xvdFNpemUgLSAxKQogCiBj
b25zdCBTdGFja0FsaWdubWVudCA9IDE2CiBjb25zdCBTdGFja0FsaWdubWVudFNsb3RzID0gMgpA
QCAtMTI1Niw2ICsxMjU3LDEyIEBAIF9sbGludF9vcF9uZXdfcmVnZXhwOgogICAgIGRpc3BhdGNo
KDMpCiAKIAorX2xsaW50X29wX25ld19nZW5lcmF0b3JfZnJhbWU6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRoX25ld19nZW5lcmF0b3JfZnJhbWUpCisg
ICAgZGlzcGF0Y2goMykKKworCiBfbGxpbnRfb3BfbGVzczoKICAgICB0cmFjZUV4ZWN1dGlvbigp
CiAgICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfbGVzcykKQEAgLTE1OTUsMTAgKzE2MDIsMTYg
QEAgX2xsaW50X29wX3NhdmU6CiAgICAgZGlzcGF0Y2goNCkKIAogCi1fbGxpbnRfb3BfcmVzdW1l
OgorX2xsaW50X29wX3NhdmVfaGludDoKICAgICB0cmFjZUV4ZWN1dGlvbigpCi0gICAgY2FsbFNs
b3dQYXRoKF9zbG93X3BhdGhfcmVzdW1lKQotICAgIGRpc3BhdGNoKDMpCisgICAgbm90U3VwcG9y
dGVkKCkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9yZXN1bWVfaGludDoKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgbm90U3VwcG9ydGVkKCkKKyAgICBkaXNwYXRjaCg0KQogCiAK
IF9sbGludF9vcF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudDoKQEAgLTE3MDgsNiArMTcyMSwx
MCBAQCBfbGxpbnRfb3BfY29weV9yZXN0OgogICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRoX2Nv
cHlfcmVzdCkKICAgICBkaXNwYXRjaCg0KQogCitfbGxpbnRfb3Bfbm9wOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBkaXNwYXRjaCgxKQorCiAKICMgTGFzdGx5LCBtYWtlIHN1cmUgdGhhdCB3
ZSBjYW4gbGluayBldmVuIHRob3VnaCB3ZSBkb24ndCBzdXBwb3J0IGFsbCBvcGNvZGVzLgogIyBU
aGVzZSBvcGNvZGVzIHNob3VsZCBuZXZlciBhcmlzZSB3aGVuIHVzaW5nIExMSW50IG9yIGVpdGhl
ciBKSVQuIFdlIGFzc2VydApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQppbmRleCBkMDZiNGQzOTZkMzFjZDFiYzUy
YzM3MTFlMTMzZmJhZWRjYzJjMDRlLi4wY2VmN2UxNDhmMTI3ZDdlYzRiM2M3YzdlMzA2MmM0MWYx
NDgyNWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlcjMyXzY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQpAQCAtMjQ2MCwzICsyNDYwLDIwIEBAIF9sbGludF9v
cF9nZXRfcmVzdF9sZW5ndGg6CiAgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEs
IDhdCiAgICAgc3RvcmVpIEludDMyVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KICAgICBkaXNw
YXRjaCgzKQorCitfbGxpbnRfb3BfY2xlYXJfZ2VuZXJhdG9yX2ZyYW1lOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBsb2FkVmFyaWFibGUoMSwgdDIsIHQxLCB0MCkKKyAgICBzdG9yZWkgMCwg
R2VuZXJhdG9yRnJhbWU6Om1fbnVtYmVyT2ZTYXZlZENhbGxlZUxvY2Fsc1t0MF0KKyAgICBkaXNw
YXRjaCgyKQorCitfbGxpbnRfb3BfcmVzdW1lX2Zyb21fZ2VuZXJhdG9yX2ZyYW1lOgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkVmFyaWFibGUoMiwgdDIsIHQxLCB0MCkKKyAgICBsb2Fk
aXNGcm9tSW5zdHJ1Y3Rpb24oMywgdDMpCisgICAgbG9hZHAgR2VuZXJhdG9yRnJhbWVfY2FsbGVl
TG9jYWxzICsgVGFnT2Zmc2V0W3QwLCB0MywgOF0sIHQxCisgICAgbG9hZHAgR2VuZXJhdG9yRnJh
bWVfY2FsbGVlTG9jYWxzICsgUGF5bG9hZE9mZnNldFt0MCwgdDMsIDhdLCB0MgorICAgIGxvYWRp
c0Zyb21JbnN0cnVjdGlvbigxLCB0MCkKKyAgICBzdG9yZWkgdDEsIFRhZ09mZnNldFtjZnIsIHQw
LCA4XQorICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQorICAgIGRpc3Bh
dGNoKDQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlcjY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbElu
dGVycHJldGVyNjQuYXNtCmluZGV4IDg1MTczYmM4MjYyMTQ2YjBlMGQxZTAxOTJiNzA2MDI4YmJk
OTA2ODMuLjQ5MmM2M2MyNWNkZmFlMzJmZjllZWI4YTRkMTk3ZTU4NTUzMTlhYzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNt
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQu
YXNtCkBAIC0yMzIxLDMgKzIzMjEsMTggQEAgX2xsaW50X29wX2dldF9yZXN0X2xlbmd0aDoKICAg
ICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMSwgdDEpCiAgICAgc3RvcmVxIHQwLCBbY2ZyLCB0MSwg
OF0KICAgICBkaXNwYXRjaCgzKQorCitfbGxpbnRfb3BfY2xlYXJfZ2VuZXJhdG9yX2ZyYW1lOgor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkVmFyaWFibGUoMSwgdDApCisgICAgc3RvcmVp
IDAsIEdlbmVyYXRvckZyYW1lOjptX251bWJlck9mU2F2ZWRDYWxsZWVMb2NhbHNbdDBdCisgICAg
ZGlzcGF0Y2goMikKKworX2xsaW50X29wX3Jlc3VtZV9mcm9tX2dlbmVyYXRvcl9mcmFtZToKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZFZhcmlhYmxlKDIsIHQwKQorICAgIGxvYWRpc0Zy
b21JbnN0cnVjdGlvbigzLCB0MSkKKyAgICBsb2FkcSBHZW5lcmF0b3JGcmFtZV9jYWxsZWVMb2Nh
bHNbdDAsIHQxLCA4XSwgdDAKKyAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oMSwgdDEpCisgICAg
c3RvcmVxIHQwLCBbY2ZyLCB0MSwgOF0KKyAgICBkaXNwYXRjaCg0KQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9QYXJzZXIuY3BwCmluZGV4IDhkMzcwNjM0NTEyOGU5ZGY5ZGFjMzI1N2Y3YzVm
NGU1YWIzYTljMzQuLmU4NjA1M2I0ODJhOGQzNmIzMzVjMDhiYTdkMzY3NTZkM2I3OTZhZDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKQEAgLTI1MCw5ICsyNTAsMTAg
QEAKICAgICBib29sIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uID0gZmFsc2U7CiAgICAg
aWYgKG1fbGV4ZXItPmlzUmVwYXJzaW5nRnVuY3Rpb24oKSkgewogICAgICAgICBQYXJzZXJGdW5j
dGlvbkluZm88QVNUQnVpbGRlcj4gZnVuY3Rpb25JbmZvOwotICAgICAgICBpZiAocGFyc2VNb2Rl
ID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yQm9keU1vZGUpCi0gICAgICAgICAgICBmdW5j
dGlvbkluZm8ucGFyYW1ldGVycyA9IGNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMoY29udGV4dCk7
Ci0gICAgICAgIGVsc2UKKyAgICAgICAgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6
OkdlbmVyYXRvckJvZHlNb2RlKSB7CisgICAgICAgICAgICB1bnNpZ25lZCBwYXJhbWV0ZXJDb3Vu
dCA9IDA7CisgICAgICAgICAgICBmdW5jdGlvbkluZm8ucGFyYW1ldGVycyA9IGNyZWF0ZUdlbmVy
YXRvclBhcmFtZXRlcnMoY29udGV4dCwgcGFyYW1ldGVyQ291bnQpOworICAgICAgICB9IGVsc2UK
ICAgICAgICAgICAgIHBhcnNlRnVuY3Rpb25QYXJhbWV0ZXJzKGNvbnRleHQsIHBhcnNlTW9kZSwg
ZnVuY3Rpb25JbmZvKTsKICAgICAgICAgbV9wYXJhbWV0ZXJzID0gZnVuY3Rpb25JbmZvLnBhcmFt
ZXRlcnM7CiAKQEAgLTQ4NSwxMCArNDg2LDkgQEAKIAogICAgIFBhcnNlckZ1bmN0aW9uSW5mbzxU
cmVlQnVpbGRlcj4gaW5mbzsKICAgICBpbmZvLm5hbWUgPSAmbV92bS0+cHJvcGVydHlOYW1lcy0+
bnVsbElkZW50aWZpZXI7Ci0gICAgaW5mby5wYXJhbWV0ZXJzID0gY3JlYXRlR2VuZXJhdG9yUGFy
YW1ldGVycyhjb250ZXh0KTsKKyAgICBpbmZvLnBhcmFtZXRlcnMgPSBjcmVhdGVHZW5lcmF0b3JQ
YXJhbWV0ZXJzKGNvbnRleHQsIGluZm8ucGFyYW1ldGVyQ291bnQpOwogICAgIGluZm8uc3RhcnRP
ZmZzZXQgPSBwYXJhbWV0ZXJzU3RhcnQ7CiAgICAgaW5mby5zdGFydExpbmUgPSB0b2tlbkxpbmUo
KTsKLSAgICBpbmZvLnBhcmFtZXRlckNvdW50ID0gNDsgLy8gZ2VuZXJhdG9yLCBzdGF0ZSwgdmFs
dWUsIHJlc3VtZSBtb2RlCiAKICAgICB7CiAgICAgICAgIEF1dG9Qb3BTY29wZVJlZiBnZW5lcmF0
b3JCb2R5U2NvcGUodGhpcywgcHVzaFNjb3BlKCkpOwpAQCAtMTc4MSwzMiArMTc4MSwzMCBAQCBz
dGF0aWMgY29uc3QgY2hhciogc3RyaW5nRm9yRnVuY3Rpb25Nb2RlKFNvdXJjZVBhcnNlTW9kZSBt
b2RlKQogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgotdGVtcGxhdGUgPGNsYXNz
IFRyZWVCdWlsZGVyPiB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6Rm9ybWFsUGFyYW1ldGVyTGlzdCBQ
YXJzZXI8TGV4ZXJUeXBlPjo6Y3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhUcmVlQnVpbGRlciYg
Y29udGV4dCkKK3RlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gdHlwZW5hbWUgVHJlZUJ1aWxk
ZXI6OkZvcm1hbFBhcmFtZXRlckxpc3QgUGFyc2VyPExleGVyVHlwZT46OmNyZWF0ZUdlbmVyYXRv
clBhcmFtZXRlcnMoVHJlZUJ1aWxkZXImIGNvbnRleHQsIHVuc2lnbmVkJiBwYXJhbWV0ZXJDb3Vu
dCkKIHsKICAgICBhdXRvIHBhcmFtZXRlcnMgPSBjb250ZXh0LmNyZWF0ZUZvcm1hbFBhcmFtZXRl
ckxpc3QoKTsKIAogICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkp
OwogICAgIEpTVGV4dFBvc2l0aW9uIHBvc2l0aW9uID0gdG9rZW5TdGFydFBvc2l0aW9uKCk7CiAK
LSAgICAvLyBAZ2VuZXJhdG9yCi0gICAgZGVjbGFyZVBhcmFtZXRlcigmbV92bS0+cHJvcGVydHlO
YW1lcy0+Z2VuZXJhdG9yUHJpdmF0ZU5hbWUpOwotICAgIGF1dG8gZ2VuZXJhdG9yID0gY29udGV4
dC5jcmVhdGVCaW5kaW5nTG9jYXRpb24obG9jYXRpb24sIG1fdm0tPnByb3BlcnR5TmFtZXMtPmdl
bmVyYXRvclByaXZhdGVOYW1lLCBwb3NpdGlvbiwgcG9zaXRpb24sIEFzc2lnbm1lbnRDb250ZXh0
OjpEZWNsYXJhdGlvblN0YXRlbWVudCk7Ci0gICAgY29udGV4dC5hcHBlbmRQYXJhbWV0ZXIocGFy
YW1ldGVycywgZ2VuZXJhdG9yLCAwKTsKKyAgICBhdXRvIGFkZFBhcmFtZXRlciA9IFsmXShjb25z
dCBJZGVudGlmaWVyJiBuYW1lKSB7CisgICAgICAgIGRlY2xhcmVQYXJhbWV0ZXIoJm5hbWUpOwor
ICAgICAgICBhdXRvIGJpbmRpbmcgPSBjb250ZXh0LmNyZWF0ZUJpbmRpbmdMb2NhdGlvbihsb2Nh
dGlvbiwgbmFtZSwgcG9zaXRpb24sIHBvc2l0aW9uLCBBc3NpZ25tZW50Q29udGV4dDo6RGVjbGFy
YXRpb25TdGF0ZW1lbnQpOworICAgICAgICBjb250ZXh0LmFwcGVuZFBhcmFtZXRlcihwYXJhbWV0
ZXJzLCBiaW5kaW5nLCAwKTsKKyAgICAgICAgKytwYXJhbWV0ZXJDb3VudDsKKyAgICB9OwogCisg
ICAgLy8gQGdlbmVyYXRvcgorICAgIGFkZFBhcmFtZXRlcihtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5n
ZW5lcmF0b3JQcml2YXRlTmFtZSk7CiAgICAgLy8gQGdlbmVyYXRvclN0YXRlCi0gICAgZGVjbGFy
ZVBhcmFtZXRlcigmbV92bS0+cHJvcGVydHlOYW1lcy0+Z2VuZXJhdG9yU3RhdGVQcml2YXRlTmFt
ZSk7Ci0gICAgYXV0byBnZW5lcmF0b3JTdGF0ZSA9IGNvbnRleHQuY3JlYXRlQmluZGluZ0xvY2F0
aW9uKGxvY2F0aW9uLCBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5nZW5lcmF0b3JTdGF0ZVByaXZhdGVO
YW1lLCBwb3NpdGlvbiwgcG9zaXRpb24sIEFzc2lnbm1lbnRDb250ZXh0OjpEZWNsYXJhdGlvblN0
YXRlbWVudCk7Ci0gICAgY29udGV4dC5hcHBlbmRQYXJhbWV0ZXIocGFyYW1ldGVycywgZ2VuZXJh
dG9yU3RhdGUsIDApOwotCisgICAgYWRkUGFyYW1ldGVyKG1fdm0tPnByb3BlcnR5TmFtZXMtPmdl
bmVyYXRvclN0YXRlUHJpdmF0ZU5hbWUpOwogICAgIC8vIEBnZW5lcmF0b3JWYWx1ZQotICAgIGRl
Y2xhcmVQYXJhbWV0ZXIoJm1fdm0tPnByb3BlcnR5TmFtZXMtPmdlbmVyYXRvclZhbHVlUHJpdmF0
ZU5hbWUpOwotICAgIGF1dG8gZ2VuZXJhdG9yVmFsdWUgPSBjb250ZXh0LmNyZWF0ZUJpbmRpbmdM
b2NhdGlvbihsb2NhdGlvbiwgbV92bS0+cHJvcGVydHlOYW1lcy0+Z2VuZXJhdG9yVmFsdWVQcml2
YXRlTmFtZSwgcG9zaXRpb24sIHBvc2l0aW9uLCBBc3NpZ25tZW50Q29udGV4dDo6RGVjbGFyYXRp
b25TdGF0ZW1lbnQpOwotICAgIGNvbnRleHQuYXBwZW5kUGFyYW1ldGVyKHBhcmFtZXRlcnMsIGdl
bmVyYXRvclZhbHVlLCAwKTsKLQorICAgIGFkZFBhcmFtZXRlcihtX3ZtLT5wcm9wZXJ0eU5hbWVz
LT5nZW5lcmF0b3JWYWx1ZVByaXZhdGVOYW1lKTsKICAgICAvLyBAZ2VuZXJhdG9yUmVzdW1lTW9k
ZQotICAgIGRlY2xhcmVQYXJhbWV0ZXIoJm1fdm0tPnByb3BlcnR5TmFtZXMtPmdlbmVyYXRvclJl
c3VtZU1vZGVQcml2YXRlTmFtZSk7Ci0gICAgYXV0byBnZW5lcmF0b3JSZXN1bWVNb2RlID0gY29u
dGV4dC5jcmVhdGVCaW5kaW5nTG9jYXRpb24obG9jYXRpb24sIG1fdm0tPnByb3BlcnR5TmFtZXMt
PmdlbmVyYXRvclJlc3VtZU1vZGVQcml2YXRlTmFtZSwgcG9zaXRpb24sIHBvc2l0aW9uLCBBc3Np
Z25tZW50Q29udGV4dDo6RGVjbGFyYXRpb25TdGF0ZW1lbnQpOwotICAgIGNvbnRleHQuYXBwZW5k
UGFyYW1ldGVyKHBhcmFtZXRlcnMsIGdlbmVyYXRvclJlc3VtZU1vZGUsIDApOworICAgIGFkZFBh
cmFtZXRlcihtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5nZW5lcmF0b3JSZXN1bWVNb2RlUHJpdmF0ZU5h
bWUpOworICAgIC8vIEBnZW5lcmF0b3JGcmFtZQorICAgIGFkZFBhcmFtZXRlcihtX3ZtLT5wcm9w
ZXJ0eU5hbWVzLT5nZW5lcmF0b3JGcmFtZVByaXZhdGVOYW1lKTsKIAogICAgIHJldHVybiBwYXJh
bWV0ZXJzOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJz
ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKaW5kZXggYTExYjM1
YzEwMWZlNWI4NDljYjIzMzA5NmM1NjgzMTM3MDY2Y2FiZi4uZTYxNDlhM2FjMzY5NDA0ODkzZDIz
Njk2OTMxNmI1YzMwMzNiZTg1MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9QYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5o
CkBAIC0xMjU5LDcgKzEyNTksNyBAQCBjbGFzcyBQYXJzZXIgewogICAgIHRlbXBsYXRlIDxjbGFz
cyBUcmVlQnVpbGRlcj4gTkVWRVJfSU5MSU5FIGJvb2wgcGFyc2VGdW5jdGlvbkluZm8oVHJlZUJ1
aWxkZXImLCBGdW5jdGlvblJlcXVpcmVtZW50cywgU291cmNlUGFyc2VNb2RlLCBib29sIG5hbWVJ
c0luQ29udGFpbmluZ1Njb3BlLCBDb25zdHJ1Y3RvcktpbmQsIFN1cGVyQmluZGluZywgaW50IGZ1
bmN0aW9uS2V5d29yZFN0YXJ0LCBQYXJzZXJGdW5jdGlvbkluZm88VHJlZUJ1aWxkZXI+JiwgRnVu
Y3Rpb25EZWZpbml0aW9uVHlwZSk7CiAgICAgCiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWls
ZGVyPiBORVZFUl9JTkxJTkUgaW50IHBhcnNlRnVuY3Rpb25QYXJhbWV0ZXJzKFRyZWVCdWlsZGVy
JiwgU291cmNlUGFyc2VNb2RlLCBQYXJzZXJGdW5jdGlvbkluZm88VHJlZUJ1aWxkZXI+Jik7Ci0g
ICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBORVZFUl9JTkxJTkUgdHlwZW5hbWUgVHJl
ZUJ1aWxkZXI6OkZvcm1hbFBhcmFtZXRlckxpc3QgY3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhU
cmVlQnVpbGRlciYpOworICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gTkVWRVJfSU5M
SU5FIHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpGb3JtYWxQYXJhbWV0ZXJMaXN0IGNyZWF0ZUdlbmVy
YXRvclBhcmFtZXRlcnMoVHJlZUJ1aWxkZXImLCB1bnNpZ25lZCYgcGFyYW1ldGVyQ291bnQpOwog
CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBORVZFUl9JTkxJTkUgVHJlZUNsYXNz
RXhwcmVzc2lvbiBwYXJzZUNsYXNzKFRyZWVCdWlsZGVyJiwgRnVuY3Rpb25SZXF1aXJlbWVudHMs
IFBhcnNlckNsYXNzSW5mbzxUcmVlQnVpbGRlcj4mKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKaW5kZXggNzhiNDNjNGQzODlmZjdh
OTA4MzEzYjU1NDA1NzBlODgyZTFiMDM3MS4uZGNhMmQ0ZTY2NmQwNzNjZjM5MGY2MWYyOTdjYTcz
OTdiMzZjNThkMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
bW9uU2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21t
b25TbG93UGF0aHMuY3BwCkBAIC02OTcsMzMgKzY5NywxMiBAQCBzdGF0aWMgdm9pZCB1cGRhdGVS
ZXN1bHRQcm9maWxlRm9yQmluYXJ5QXJpdGhPcChFeGVjU3RhdGUqLCBJbnN0cnVjdGlvbiosIEpT
VmFsdQogICAgIC8vIE9ubHkgc2F2ZSB2YXJpYWJsZXMgYW5kIHRlbXBvcmFyeSByZWdpc3RlcnMu
IFRoZSBzY29wZSByZWdpc3RlcnMgYXJlIGluY2x1ZGVkIGluIHRoZW0uCiAgICAgLy8gQnV0IHBh
cmFtZXRlcnMgYXJlIG5vdCBpbmNsdWRlZC4gQmVjYXVzZSB0aGUgZ2VuZXJhdG9yIGltcGxlbWVu
dGF0aW9uIHJlcGxhY2VzIHRoZSB2YWx1ZXMgb2YgcGFyYW1ldGVycyBvbiBlYWNoIGdlbmVyYXRv
ci5uZXh0KCkgY2FsbC4KICAgICBCRUdJTigpOwotICAgIEpTVmFsdWUgZ2VuZXJhdG9yID0gT1Ao
MSkuanNWYWx1ZSgpOwotICAgIEdlbmVyYXRvckZyYW1lKiBmcmFtZSA9IG51bGxwdHI7Ci0gICAg
SlNWYWx1ZSB2YWx1ZSA9IGdlbmVyYXRvci5nZXQoZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygp
LmdlbmVyYXRvckZyYW1lUHJpdmF0ZU5hbWUpOwotICAgIGlmICghdmFsdWUuaXNOdWxsKCkpCi0g
ICAgICAgIGZyYW1lID0ganNDYXN0PEdlbmVyYXRvckZyYW1lKj4odmFsdWUpOwotICAgIGVsc2Ug
ewotICAgICAgICAvLyBGSVhNRTogT25jZSBKU0dlbmVyYXRvciBzcGVjaWFsaXplZCBvYmplY3Qg
aXMgaW50cm9kdWNlZCwgdGhpcyBHZW5lcmF0b3JGcmFtZSBzaG91bGQgYmUgZW1iZWRlZCBpbnRv
IGl0IHRvIGF2b2lkIGFsbG9jYXRpb25zLgotICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNTQ1Ci0gICAgICAgIGZyYW1lID0gR2VuZXJhdG9yRnJh
bWU6OmNyZWF0ZShleGVjLT52bSgpLCAgZXhlYy0+Y29kZUJsb2NrKCktPm51bUNhbGxlZUxvY2Fs
cygpKTsKLSAgICAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoZ2VuZXJhdG9yLCB0cnVlLCBQdXRQ
cm9wZXJ0eVNsb3Q6OlB1dEJ5SWQpOwotICAgICAgICBhc09iamVjdChnZW5lcmF0b3IpLT5tZXRo
b2RUYWJsZShleGVjLT52bSgpKS0+cHV0KGFzT2JqZWN0KGdlbmVyYXRvciksIGV4ZWMsIGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS5nZW5lcmF0b3JGcmFtZVByaXZhdGVOYW1lLCBmcmFtZSwgc2xvdCk7
Ci0gICAgfQorICAgIEdlbmVyYXRvckZyYW1lKiBmcmFtZSA9IGpzQ2FzdDxHZW5lcmF0b3JGcmFt
ZSo+KE9QKDEpLmpzVmFsdWUoKSk7CiAgICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4
ID0gcGNbMl0udS51bnNpZ25lZFZhbHVlOwogICAgIGZyYW1lLT5zYXZlKGV4ZWMsIGV4ZWMtPmNv
ZGVCbG9jaygpLT5saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZChsaXZlQ2FsbGVlTG9jYWxzSW5kZXgp
KTsKICAgICBFTkQoKTsKIH0KIAotU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3Jlc3VtZSkKLXsK
LSAgICBCRUdJTigpOwotICAgIEpTVmFsdWUgZ2VuZXJhdG9yID0gT1AoMSkuanNWYWx1ZSgpOwot
ICAgIEdlbmVyYXRvckZyYW1lKiBmcmFtZSA9IGpzQ2FzdDxHZW5lcmF0b3JGcmFtZSo+KGdlbmVy
YXRvci5nZXQoZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLmdlbmVyYXRvckZyYW1lUHJpdmF0
ZU5hbWUpKTsKLSAgICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSBwY1syXS51LnVu
c2lnbmVkVmFsdWU7Ci0gICAgZnJhbWUtPnJlc3VtZShleGVjLCBleGVjLT5jb2RlQmxvY2soKS0+
bGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQobGl2ZUNhbGxlZUxvY2Fsc0luZGV4KSk7Ci0gICAgRU5E
KCk7Ci19Ci0KIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9u
bWVudCkKIHsKICAgICBCRUdJTigpOwpAQCAtNzk3LDQgKzc3NiwxMiBAQCBzdGF0aWMgdm9pZCB1
cGRhdGVSZXN1bHRQcm9maWxlRm9yQmluYXJ5QXJpdGhPcChFeGVjU3RhdGUqLCBJbnN0cnVjdGlv
biosIEpTVmFsdQogICAgIEVORCgpOwogfQogCitTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbmV3
X2dlbmVyYXRvcl9mcmFtZSkKK3sKKyAgICBCRUdJTigpOworICAgIHVuc2lnbmVkIGdlbmVyYXRv
ckxvY2Fsc1NpemUgPSBwY1syXS51LnVuc2lnbmVkVmFsdWU7CisgICAgUkVUVVJOKEdlbmVyYXRv
ckZyYW1lOjpjcmVhdGUoZXhlYywgZ2VuZXJhdG9yTG9jYWxzU2l6ZSkpOworfQorCisKIH0gLy8g
bmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29tbW9uU2xvd1BhdGhzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25T
bG93UGF0aHMuaAppbmRleCBmMDBkODcwNWQ0ZTY3ZmU0ZDQwNTliZGUxNjhlZTg4ZjU3ZGY3MmU3
Li5jN2ZmYTNkZmNjNjNiMTRiYzM4YTVkZTA2Zjg0Y2YzM2NjZTMzMDg4IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaApAQCAtMjkxLDExICsy
OTEsMTEgQEAgaW5saW5lIHZvaWQgZGVjb2RlUmVzdWx0KFNsb3dQYXRoUmV0dXJuVHlwZSByZXN1
bHQsIHZvaWQqJiBhLCB2b2lkKiYgYikKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhf
cHJvZmlsZV90eXBlX2NsZWFyX2xvZyk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRo
X2Fzc2VydCk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3NhdmUpOwotU0xPV19Q
QVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9yZXN1bWUpOwogU0xPV19QQVRIX0hJRERFTl9ERUNM
KHNsb3dfcGF0aF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudCk7CiBTTE9XX1BBVEhfSElEREVO
X0RFQ0woc2xvd19wYXRoX3B1c2hfd2l0aF9zY29wZSk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0wo
c2xvd19wYXRoX3Jlc29sdmVfc2NvcGUpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0
aF9jb3B5X3Jlc3QpOworU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9uZXdfZ2VuZXJh
dG9yX2ZyYW1lKTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZyYW1lLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZyYW1lLmNwcAppbmRleCBlZjZlYTdhMTAwMjU4YzNl
Y2UwNGRhYWI0M2JkYWE4NTFlYzhmNzE1Li4wZGNiNTE0YTQyMDk5OWZiZjU5ZGYxOGJkZGY1N2Mz
MGFkYTc5ZTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5l
cmF0b3JGcmFtZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJh
dG9yRnJhbWUuY3BwCkBAIC0zMCwxNSArMzAsMTYgQEAKICNpbmNsdWRlICJIZWFwSXRlcmF0aW9u
U2NvcGUuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ2Vs
bElubGluZXMuaCIKKyNpbmNsdWRlICJKU09iamVjdElubGluZXMuaCIKICNpbmNsdWRlICJTbG90
VmlzaXRvcklubGluZXMuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCiAKIG5hbWVz
cGFjZSBKU0MgewogCi1jb25zdCBDbGFzc0luZm8gR2VuZXJhdG9yRnJhbWU6OnNfaW5mbyA9IHsg
IkdlbmVyYXRvckZyYW1lIiwgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShH
ZW5lcmF0b3JGcmFtZSkgfTsKK2NvbnN0IENsYXNzSW5mbyBHZW5lcmF0b3JGcmFtZTo6c19pbmZv
ID0geyAiR2VuZXJhdG9yRnJhbWUiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBDUkVBVEVfTUVU
SE9EX1RBQkxFKEdlbmVyYXRvckZyYW1lKSB9OwogCi1HZW5lcmF0b3JGcmFtZTo6R2VuZXJhdG9y
RnJhbWUoVk0mIHZtLCBzaXplX3QgbnVtYmVyT2ZDYWxsZWVMb2NhbHMpCi0gICAgOiBCYXNlKHZt
LCB2bS5nZW5lcmF0b3JGcmFtZVN0cnVjdHVyZS5nZXQoKSkKK0dlbmVyYXRvckZyYW1lOjpHZW5l
cmF0b3JGcmFtZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCB1aW50MzJfdCBudW1iZXJP
ZkNhbGxlZUxvY2FscykKKyAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkKICAgICAsIG1fbnVtYmVy
T2ZDYWxsZWVMb2NhbHMobnVtYmVyT2ZDYWxsZWVMb2NhbHMpCiB7CiB9CkBAIC00NiwzMyArNDcs
NDIgQEAKIHZvaWQgR2VuZXJhdG9yRnJhbWU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKIHsKICAg
ICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgSlNWYWx1ZSBlbXB0eVZhbHVlOwogICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9udW1iZXJPZkNhbGxlZUxvY2FsczsgKytpKQotICAg
ICAgICBsb2NhbEF0KGkpLmNsZWFyKCk7CisgICAgICAgIGxvY2FsQXQoaSkuc2V0U3RhcnRpbmdW
YWx1ZShlbXB0eVZhbHVlKTsKIH0KIAogU3RydWN0dXJlKiBHZW5lcmF0b3JGcmFtZTo6Y3JlYXRl
U3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBw
cm90b3R5cGUpCiB7Ci0gICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmpl
Y3QsIHByb3RvdHlwZSwgVHlwZUluZm8oQ2VsbFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygp
KTsKKyAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90
eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiB9CiAK
LUdlbmVyYXRvckZyYW1lKiBHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlKFZNJiB2bSwgc2l6ZV90IG51
bWJlck9mTG9jYWxzKQorR2VuZXJhdG9yRnJhbWUqIEdlbmVyYXRvckZyYW1lOjpjcmVhdGUoVk0m
IHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgc2l6ZV90IG51bWJlck9mQ2FsbGVlTG9jYWxzKQog
ewogICAgIEdlbmVyYXRvckZyYW1lKiByZXN1bHQgPQogICAgICAgICBuZXcgKAogICAgICAgICAg
ICAgTm90TnVsbCwKLSAgICAgICAgICAgIGFsbG9jYXRlQ2VsbDxHZW5lcmF0b3JGcmFtZT4odm0u
aGVhcCwgYWxsb2NhdGlvblNpemVGb3JMb2NhbHMobnVtYmVyT2ZMb2NhbHMpKSkKLSAgICAgICAg
R2VuZXJhdG9yRnJhbWUodm0sIG51bWJlck9mTG9jYWxzKTsKKyAgICAgICAgICAgIGFsbG9jYXRl
Q2VsbDxHZW5lcmF0b3JGcmFtZT4odm0uaGVhcCwgYWxsb2NhdGlvblNpemVGb3JMb2NhbHMobnVt
YmVyT2ZDYWxsZWVMb2NhbHMpKSkKKyAgICAgICAgR2VuZXJhdG9yRnJhbWUodm0sIHN0cnVjdHVy
ZSwgbnVtYmVyT2ZDYWxsZWVMb2NhbHMpOwogICAgIHJlc3VsdC0+ZmluaXNoQ3JlYXRpb24odm0p
OwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK0dlbmVyYXRvckZyYW1lKiBHZW5lcmF0b3JGcmFt
ZTo6Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgc2l6ZV90IG51bWJlck9mQ2FsbGVlTG9jYWxzKQor
eworICAgIHJldHVybiBjcmVhdGUoZXhlYy0+dm0oKSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVj
dCgpLT5nZW5lcmF0b3JGcmFtZVN0cnVjdHVyZSgpLCBudW1iZXJPZkNhbGxlZUxvY2Fscyk7Cit9
CisKIHZvaWQgR2VuZXJhdG9yRnJhbWU6OnNhdmUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBGYXN0
Qml0VmVjdG9yJiBsaXZlQ2FsbGVlTG9jYWxzKQogeworICAgIC8vIEFsbG9jYXRlIHRoZSBnZW5l
cmF0b3IgbG9jYWwgc3BhY2UgZmlyc3QuCisgICAgbV9udW1iZXJPZlNhdmVkQ2FsbGVlTG9jYWxz
ID0gbGl2ZUNhbGxlZUxvY2Fscy5iaXRDb3VudCgpOworCiAgICAgLy8gT25seSBzYXZlIGNhbGxl
ZSBsb2NhbHMuCiAgICAgLy8gRXZlcnkgdGltZSBhIGdlbmVyYXRvciBpcyBjYWxsZWQgKG9yIHJl
c3VtZWQpLCBwYXJhbWV0ZXJzIHNob3VsZCBiZSByZXBsYWNlZC4KLSAgICBBU1NFUlQobGl2ZUNh
bGxlZUxvY2Fscy5udW1CaXRzKCkgPD0gbV9udW1iZXJPZkNhbGxlZUxvY2Fscyk7CisgICAgdW5z
aWduZWQgZ2VuZXJhdG9yTG9jYWxJbmRleCA9IDA7CiAgICAgbGl2ZUNhbGxlZUxvY2Fscy5mb3JF
YWNoU2V0Qml0KFsmXShzaXplX3QgaW5kZXgpIHsKLSAgICAgICAgbG9jYWxBdChpbmRleCkuc2V0
KGV4ZWMtPnZtKCksIHRoaXMsIGV4ZWMtPnVuY2hlY2tlZFIodmlydHVhbFJlZ2lzdGVyRm9yTG9j
YWwoaW5kZXgpKS5qc1ZhbHVlKCkpOworICAgICAgICBsb2NhbEF0KGdlbmVyYXRvckxvY2FsSW5k
ZXgrKykuc2V0KGV4ZWMtPnZtKCksIHRoaXMsIGV4ZWMtPnVuY2hlY2tlZFIodmlydHVhbFJlZ2lz
dGVyRm9yTG9jYWwoaW5kZXgpKS5qc1ZhbHVlKCkpOwogICAgIH0pOwogfQogCkBAIC04MCwxMCAr
OTAsMTEgQEAgdm9pZCBHZW5lcmF0b3JGcmFtZTo6cmVzdW1lKEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgRmFzdEJpdFZlY3RvciYgbGl2ZUNhbGxlZUxvY2EKIHsKICAgICAvLyBPbmx5IHJlc3VtZSBj
YWxsZWUgbG9jYWxzLgogICAgIC8vIEV2ZXJ5IHRpbWUgYSBnZW5lcmF0b3IgaXMgY2FsbGVkIChv
ciByZXN1bWVkKSwgcGFyYW1ldGVycyBzaG91bGQgYmUgcmVwbGFjZWQuCisgICAgdW5zaWduZWQg
Z2VuZXJhdG9yTG9jYWxJbmRleCA9IDA7CiAgICAgbGl2ZUNhbGxlZUxvY2Fscy5mb3JFYWNoU2V0
Qml0KFsmXShzaXplX3QgaW5kZXgpIHsKLSAgICAgICAgZXhlYy0+dW5jaGVja2VkUih2aXJ0dWFs
UmVnaXN0ZXJGb3JMb2NhbChpbmRleCkpID0gbG9jYWxBdChpbmRleCkuZ2V0KCk7Ci0gICAgICAg
IGxvY2FsQXQoaW5kZXgpLmNsZWFyKCk7CisgICAgICAgIGV4ZWMtPnVuY2hlY2tlZFIodmlydHVh
bFJlZ2lzdGVyRm9yTG9jYWwoaW5kZXgpKSA9IGxvY2FsQXQoZ2VuZXJhdG9yTG9jYWxJbmRleCsr
KS5nZXQoKTsKICAgICB9KTsKKyAgICBtX251bWJlck9mU2F2ZWRDYWxsZWVMb2NhbHMgPSAwOwog
fQogCiB2b2lkIEdlbmVyYXRvckZyYW1lOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xv
dFZpc2l0b3ImIHZpc2l0b3IpCkBAIC05MSw3ICsxMDIsMTIgQEAgdm9pZCBHZW5lcmF0b3JGcmFt
ZTo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAg
IEdlbmVyYXRvckZyYW1lKiB0aGlzT2JqZWN0ID0ganNDYXN0PEdlbmVyYXRvckZyYW1lKj4oY2Vs
bCk7CiAgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKICAgICAv
LyBTaW5jZSBvbmx5IHRydWUgY2VsbCBwb2ludGVycyBhcmUgc3RvcmVkIGFzIGEgY2VsbCwgd2Ug
Y2FuIHNhZmVseSBtYXJrIHRoZW0uCi0gICAgdmlzaXRvci5hcHBlbmRWYWx1ZXModGhpc09iamVj
dC0+bG9jYWxzKCksIHRoaXNPYmplY3QtPm1fbnVtYmVyT2ZDYWxsZWVMb2NhbHMpOworICAgIHZp
c2l0b3IuYXBwZW5kVmFsdWVzKHRoaXNPYmplY3QtPmxvY2FscygpLCB0aGlzT2JqZWN0LT5tX251
bWJlck9mU2F2ZWRDYWxsZWVMb2NhbHMpOworICAgIC8vIENsZWFyIG5vdCB1c2VkIGNhbGxlZSBs
b2NhbHMgd2hlbiBtYXJraW5nLgorICAgIC8vIFRoaXMgZW5zdXJlcyB0aGF0LCAiaWYgYSBnaXZl
biBsb2NhbCBoYXMgYSB2YWx1ZSwgdGhpcyB2YWx1ZSBpcyBjb3JyZWN0bHkgbWFya2VkIGluIHRo
ZSBwcmV2aW91cyBtYXJraW5nIHBoYXNlIi4KKyAgICBzaXplX3QgdW51c2VkTG9jYWxzQ291bnQg
PSB0aGlzT2JqZWN0LT5tX251bWJlck9mQ2FsbGVlTG9jYWxzIC0gdGhpc09iamVjdC0+bV9udW1i
ZXJPZlNhdmVkQ2FsbGVlTG9jYWxzOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdW51c2Vk
TG9jYWxzQ291bnQ7ICsraSkKKyAgICAgICAgdGhpc09iamVjdC0+bG9jYWxBdCh0aGlzT2JqZWN0
LT5tX251bWJlck9mU2F2ZWRDYWxsZWVMb2NhbHMgKyBpKS5jbGVhcigpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dl
bmVyYXRvckZyYW1lLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JG
cmFtZS5oCmluZGV4IDNkNTQ1YjE0N2RkNGFiZmIyYmJiOWI1YTcxOTRlOGY3NDg0MWM0OWEuLmNm
MWRiN2EyYmVlNjBkYTI5NDY0ZWM0MTdhMGM1ZmI4YzFmMGFlOGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZyYW1lLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJhbWUuaApAQCAtMjcsMTEgKzI3LDE0IEBA
CiAjZGVmaW5lIEdlbmVyYXRvckZyYW1lX2gKIAogI2luY2x1ZGUgIkpTQ2VsbC5oIgorI2luY2x1
ZGUgIkpTT2JqZWN0LmgiCiAjaW5jbHVkZSA8d3RmL0Zhc3RCaXRWZWN0b3IuaD4KIAogbmFtZXNw
YWNlIEpTQyB7CiAKLWNsYXNzIEdlbmVyYXRvckZyYW1lIDogcHVibGljIEpTQ2VsbCB7CitjbGFz
cyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisKK2NsYXNzIEdlbmVyYXRvckZyYW1lIDogcHVibGlj
IEpTTm9uRmluYWxPYmplY3QgewogICAgIGZyaWVuZCBjbGFzcyBKSVQ7CiAjaWYgRU5BQkxFKERG
R19KSVQpCiAgICAgZnJpZW5kIGNsYXNzIERGRzo6U3BlY3VsYXRpdmVKSVQ7CkBAIC0zOSwxMiAr
NDIsMTIgQEAgY2xhc3MgR2VuZXJhdG9yRnJhbWUgOiBwdWJsaWMgSlNDZWxsIHsKICNlbmRpZgog
ICAgIGZyaWVuZCBjbGFzcyBWTTsKIHB1YmxpYzoKLSAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOwot
ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IFN0cnVjdHVyZUlzSW1t
b3J0YWwgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKKyAgICB0eXBlZGVmIEpTTm9uRmluYWxPYmpl
Y3QgQmFzZTsKIAogICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CiAKLSAgICBzdGF0aWMgR2VuZXJh
dG9yRnJhbWUqIGNyZWF0ZShWTSYsIHNpemVfdCBudW1iZXJPZkNhbGxlZUxvY2Fscyk7CisgICAg
c3RhdGljIEdlbmVyYXRvckZyYW1lKiBjcmVhdGUoRXhlY1N0YXRlKiwgc2l6ZV90IG51bWJlck9m
Q2FsbGVlTG9jYWxzKTsKKyAgICBzdGF0aWMgR2VuZXJhdG9yRnJhbWUqIGNyZWF0ZShWTSYsIFN0
cnVjdHVyZSosIHNpemVfdCBudW1iZXJPZkNhbGxlZUxvY2Fscyk7CiAKICAgICBXcml0ZUJhcnJp
ZXJCYXNlPFVua25vd24+KiBsb2NhbHMoKQogICAgIHsKQEAgLTUzLDcgKzU2LDYgQEAgY2xhc3Mg
R2VuZXJhdG9yRnJhbWUgOiBwdWJsaWMgSlNDZWxsIHsKIAogICAgIFdyaXRlQmFycmllckJhc2U8
VW5rbm93bj4mIGxvY2FsQXQoc2l6ZV90IGluZGV4KQogICAgIHsKLSAgICAgICAgQVNTRVJUKGlu
ZGV4IDwgbV9udW1iZXJPZkNhbGxlZUxvY2Fscyk7CiAgICAgICAgIHJldHVybiBsb2NhbHMoKVtp
bmRleF07CiAgICAgfQogCkBAIC02Miw2ICs2NCwyMSBAQCBjbGFzcyBHZW5lcmF0b3JGcmFtZSA6
IHB1YmxpYyBKU0NlbGwgewogICAgICAgICByZXR1cm4gV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9m
PHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pPihzaXplb2YoR2VuZXJhdG9yRnJhbWUpKTsK
ICAgICB9CiAKKyAgICBzdGF0aWMgc2l6ZV90IGxvY2FsT2Zmc2V0KHVuc2lnbmVkIGluZGV4KQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIG9mZnNldE9mTG9jYWxzKCkgKyBpbmRleCAqIHNpemVvZihX
cml0ZUJhcnJpZXI8VW5rbm93bj4pOworICAgIH0KKworICAgIHN0YXRpYyBzaXplX3QgbnVtYmVy
T2ZDYWxsZWVMb2NhbHNPZmZzZXQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZT
RVRPRihHZW5lcmF0b3JGcmFtZSwgbV9udW1iZXJPZkNhbGxlZUxvY2Fscyk7CisgICAgfQorCisg
ICAgc3RhdGljIHNpemVfdCBudW1iZXJPZlNhdmVkQ2FsbGVlTG9jYWxzT2Zmc2V0KCkKKyAgICB7
CisgICAgICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoR2VuZXJhdG9yRnJhbWUsIG1fbnVtYmVy
T2ZTYXZlZENhbGxlZUxvY2Fscyk7CisgICAgfQorCiAgICAgc3RhdGljIHNpemVfdCBhbGxvY2F0
aW9uU2l6ZUZvckxvY2Fscyh1bnNpZ25lZCBudW1iZXJPZkxvY2FscykKICAgICB7CiAgICAgICAg
IHJldHVybiBvZmZzZXRPZkxvY2FscygpICsgbnVtYmVyT2ZMb2NhbHMgKiBzaXplb2YoV3JpdGVC
YXJyaWVyPFVua25vd24+KTsKQEAgLTczLDE2ICs5MCwxNiBAQCBjbGFzcyBHZW5lcmF0b3JGcmFt
ZSA6IHB1YmxpYyBKU0NlbGwgewogICAgIHZvaWQgcmVzdW1lKEV4ZWNTdGF0ZSosIGNvbnN0IEZh
c3RCaXRWZWN0b3ImIGxpdmVDYWxsZWVMb2NhbHMpOwogCiBwcml2YXRlOgotICAgIEdlbmVyYXRv
ckZyYW1lKFZNJiwgc2l6ZV90IG51bWJlck9mQ2FsbGVlTG9jYWxzKTsKKyAgICBHZW5lcmF0b3JG
cmFtZShWTSYsIFN0cnVjdHVyZSosIHVpbnQzMl90IG51bWJlck9mQ2FsbGVlTG9jYWxzKTsKIAot
ICAgIHNpemVfdCBtX251bWJlck9mQ2FsbGVlTG9jYWxzOworICAgIHVpbnQzMl90IG1fbnVtYmVy
T2ZDYWxsZWVMb2NhbHM7CisgICAgdWludDMyX3QgbV9udW1iZXJPZlNhdmVkQ2FsbGVlTG9jYWxz
IHsgMCB9OwogCiAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIAotICAg
IHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKLQogcHJvdGVjdGVkOgogICAgIHN0YXRpYyB2b2lk
IHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKKyAgICB2b2lkIGZpbmlzaENy
ZWF0aW9uKFZNJik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCBiNmJhMjdjOTEyZGI1
MGFhNGY5OWFjZTBmNmFkOWQwNmUzMDA2ZGY4Li5hZDg1N2Y4NzNiNDA5M2ZhZGMyZmUyYTNlZTI5
NGJjZTVjODAwNDZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuY3BwCkBAIC01MCw2ICs1MCw3IEBACiAjaW5jbHVkZSAiRXJyb3JQcm90b3R5
cGUuaCIKICNpbmNsdWRlICJGdW5jdGlvbkNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiRnVuY3Rp
b25Qcm90b3R5cGUuaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JGcmFtZS5oIgogI2luY2x1ZGUgIkdl
bmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJHZW5lcmF0b3JGdW5jdGlv
blByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkdlbmVyYXRvclByb3RvdHlwZS5oIgpAQCAtMzg4LDYg
KzM4OSw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmluaXQoVk0mIHZtKQogICAgIAogICAgIEZP
Ul9FQUNIX0JVSUxUSU5fREVSSVZFRF9JVEVSQVRPUl9UWVBFKENSRUFURV9QUk9UT1RZUEVfRk9S
X0RFUklWRURfSVRFUkFUT1JfVFlQRSkKICAgICBtX3Byb3BlcnR5TmFtZUl0ZXJhdG9yU3RydWN0
dXJlLnNldCh2bSwgdGhpcywgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6Y3JlYXRlU3RydWN0dXJl
KHZtLCB0aGlzLCBtX2l0ZXJhdG9yUHJvdG90eXBlLmdldCgpKSk7CisgICAgbV9nZW5lcmF0b3JG
cmFtZVN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIEdlbmVyYXRvckZyYW1lOjpjcmVhdGVTdHJ1Y3R1
cmUodm0sIHRoaXMsIGpzTnVsbCgpKSk7CiAgICAgbV9nZW5lcmF0b3JQcm90b3R5cGUuc2V0KHZt
LCB0aGlzLCBHZW5lcmF0b3JQcm90b3R5cGU6OmNyZWF0ZSh2bSwgdGhpcywgR2VuZXJhdG9yUHJv
dG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1faXRlcmF0b3JQcm90b3R5cGUuZ2V0
KCkpKSk7CiAgICAgCiAjdW5kZWYgQ1JFQVRFX1BST1RPVFlQRV9GT1JfREVSSVZFRF9JVEVSQVRP
Ul9UWVBFCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
aAppbmRleCBiNGZmMmZiNDEzZTBlNDQ2MjQ5MmE0OGEzZmQ1YTRjMjRlYTBiNzQxLi43MWQzOWVj
OTI4M2FkOWU1OTAxMjQ0ZjAxMzZhMTM1OGY1NDRhOTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTI1NSw2ICsyNTUsNyBAQCBjbGFz
cyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAg
ICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2NhbGxiYWNrRnVuY3Rpb25TdHJ1Y3R1cmU7CiAg
ICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9jYWxsYmFja09iamVjdFN0cnVjdHVyZTsKICAg
ICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3Byb3BlcnR5TmFtZUl0ZXJhdG9yU3RydWN0dXJl
OworICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fZ2VuZXJhdG9yRnJhbWVTdHJ1Y3R1cmU7
CiAjaWYgSlNDX09CSkNfQVBJX0VOQUJMRUQKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBt
X29iamNDYWxsYmFja0Z1bmN0aW9uU3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1
cmU+IG1fb2JqY1dyYXBwZXJPYmplY3RTdHJ1Y3R1cmU7CkBAIC01MDEsNiArNTAyLDcgQEAgY2xh
c3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAg
ICAgU3RydWN0dXJlKiBjYWxsYmFja0Z1bmN0aW9uU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4g
bV9jYWxsYmFja0Z1bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBjYWxs
YmFja09iamVjdFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FsbGJhY2tPYmplY3RTdHJ1
Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIHByb3BlcnR5TmFtZUl0ZXJhdG9yU3RydWN0
dXJlKCkgY29uc3QgeyByZXR1cm4gbV9wcm9wZXJ0eU5hbWVJdGVyYXRvclN0cnVjdHVyZS5nZXQo
KTsgfQorICAgIFN0cnVjdHVyZSogZ2VuZXJhdG9yRnJhbWVTdHJ1Y3R1cmUoKSBjb25zdCB7IHJl
dHVybiBtX2dlbmVyYXRvckZyYW1lU3RydWN0dXJlLmdldCgpOyB9CiAjaWYgSlNDX09CSkNfQVBJ
X0VOQUJMRUQKICAgICBTdHJ1Y3R1cmUqIG9iamNDYWxsYmFja0Z1bmN0aW9uU3RydWN0dXJlKCkg
Y29uc3QgeyByZXR1cm4gbV9vYmpjQ2FsbGJhY2tGdW5jdGlvblN0cnVjdHVyZS5nZXQoKTsgfQog
ICAgIFN0cnVjdHVyZSogb2JqY1dyYXBwZXJPYmplY3RTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVy
biBtX29iamNXcmFwcGVyT2JqZWN0U3RydWN0dXJlLmdldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9WTS5jcHAKaW5kZXggMGU0NGMzNDYwZjlmOGYwZGNiMzVkOTEyZDc5NWY3Zjk4ZGZi
N2Y0NS4uMGVmMjVlNzI5YWE2ZTU1YzNkY2EwNjFjMjJiNjVhYTZmN2I1YjM0ZSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtMjQ2LDcgKzI0Niw2IEBAIHN0YXRpYyBib29s
IGVuYWJsZUFzc2VtYmxlcihFeGVjdXRhYmxlQWxsb2NhdG9yJiBleGVjdXRhYmxlQWxsb2NhdG9y
KQogICAgIGluZmVycmVkVHlwZVN0cnVjdHVyZS5zZXQoKnRoaXMsIEluZmVycmVkVHlwZTo6Y3Jl
YXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIGluZmVycmVkVHlwZVRhYmxl
U3RydWN0dXJlLnNldCgqdGhpcywgSW5mZXJyZWRUeXBlVGFibGU6OmNyZWF0ZVN0cnVjdHVyZSgq
dGhpcywgMCwganNOdWxsKCkpKTsKICAgICBmdW5jdGlvblJhcmVEYXRhU3RydWN0dXJlLnNldCgq
dGhpcywgRnVuY3Rpb25SYXJlRGF0YTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwo
KSkpOwotICAgIGdlbmVyYXRvckZyYW1lU3RydWN0dXJlLnNldCgqdGhpcywgR2VuZXJhdG9yRnJh
bWU6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICBleGNlcHRpb25T
dHJ1Y3R1cmUuc2V0KCp0aGlzLCBFeGNlcHRpb246OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwg
anNOdWxsKCkpKTsKICAgICBwcm9taXNlRGVmZXJyZWRTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBKU1By
b21pc2VEZWZlcnJlZDo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAg
IGludGVybmFsUHJvbWlzZURlZmVycmVkU3RydWN0dXJlLnNldCgqdGhpcywgSlNJbnRlcm5hbFBy
b21pc2VEZWZlcnJlZDo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKaW5kZXggYWVlMGFjMWYyMWI4NDUxYmM3NzY3NDQzYTBi
MDVjYTA0OGI0ZjQ5Yi4uMjM2MDgzNzBhOTgzNmQ4OTc3ZTQ5ZDcxZTY4YTgwOWI5YWM0NTM2MyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCkBAIC0zMTIsNyArMzEyLDYgQEAgY2xhc3Mg
Vk0gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Vk0+IHsKICAgICBTdHJvbmc8U3RydWN0
dXJlPiBpbmZlcnJlZFR5cGVTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gaW5mZXJy
ZWRUeXBlVGFibGVTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gZnVuY3Rpb25SYXJl
RGF0YVN0cnVjdHVyZTsKLSAgICBTdHJvbmc8U3RydWN0dXJlPiBnZW5lcmF0b3JGcmFtZVN0cnVj
dHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBleGNlcHRpb25TdHJ1Y3R1cmU7CiAgICAgU3Ry
b25nPFN0cnVjdHVyZT4gcHJvbWlzZURlZmVycmVkU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1
Y3R1cmU+IGludGVybmFsUHJvbWlzZURlZmVycmVkU3RydWN0dXJlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQtYXJy
YXkuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWIt
ZnRsLWFuZC1hcnJheS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZTkzOTgxMmZkYmFlYzZiODMyYmZkMDBmMjE1
M2RlZjg0YmI3NTkyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQtYXJyYXkuanMKQEAgLTAsMCArMSwyMyBA
QAorKGZ1bmN0aW9uICgpIHsKKyAgICBmdW5jdGlvbiAqZmliKCkKKyAgICB7CisgICAgICAgIGxl
dCBhID0gMTsKKyAgICAgICAgbGV0IGIgPSAxOworICAgICAgICBsZXQgYyA9IFsgMCBdOworICAg
ICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAgY1swXSA9IGE7CisgICAgICAgICAgICB5
aWVsZCBjOworICAgICAgICAgICAgW2EsIGJdID0gW2IsIGEgKyBiXTsKKyAgICAgICAgfQorICAg
IH0KKworICAgIGxldCB2YWx1ZSA9IDA7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxZTQ7ICsr
aSkgeworICAgICAgICBsZXQgZiA9IGZpYigpOworICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8
IDEwMDsgKytpKSB7CisgICAgICAgICAgICB2YWx1ZSA9IGYubmV4dCgpLnZhbHVlOworICAgICAg
ICB9CisgICAgICAgIGlmICh2YWx1ZVswXSAhPT0gMzU0MjI0ODQ4MTc5MjYyMDAwMDAwKQorICAg
ICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgdmFsdWU6JHtyZXN1bHR9YCk7CisgICAgfQor
fSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2Vu
ZXJhdG9yLWZpYi1mdGwtYW5kLW9iamVjdC5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0
cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwtYW5kLW9iamVjdC5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42Njcz
NDBmMmVhNGM3NDM4YTJkMjA5YWE0MGQwNjc3ZTRhYjdkM2ZiCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQt
b2JqZWN0LmpzCkBAIC0wLDAgKzEsMjMgQEAKKyhmdW5jdGlvbiAoKSB7CisgICAgZnVuY3Rpb24g
KmZpYigpCisgICAgeworICAgICAgICBsZXQgYSA9IDE7CisgICAgICAgIGxldCBiID0gMTsKKyAg
ICAgICAgbGV0IGMgPSB7IGZpYjogMCB9OworICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAg
ICAgICAgYy5maWIgPSBhOworICAgICAgICAgICAgeWllbGQgYzsKKyAgICAgICAgICAgIFthLCBi
XSA9IFtiLCBhICsgYl07CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQgdmFsdWUgPSAwOwor
ICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMWU0OyArK2kpIHsKKyAgICAgICAgbGV0IGYgPSBmaWIo
KTsKKyAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDA7ICsraSkgeworICAgICAgICAgICAg
dmFsdWUgPSBmLm5leHQoKS52YWx1ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAodmFsdWUuZmli
ICE9PSAzNTQyMjQ4NDgxNzkyNjIwMDAwMDApCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
YGJhZCB2YWx1ZToke3Jlc3VsdH1gKTsKKyAgICB9Cit9KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQtc3RyaW5n
LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0
bC1hbmQtc3RyaW5nLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQzOGFlNmFiMzM0NzA0NjgyMjg0OWY0MzAwNGVh
NWM0MDNlZWRhMjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLWFuZC1zdHJpbmcuanMKQEAgLTAsMCArMSwyMiBA
QAorKGZ1bmN0aW9uICgpIHsKKyAgICBmdW5jdGlvbiAqZmliKCkKKyAgICB7CisgICAgICAgIGxl
dCBhID0gMTsKKyAgICAgICAgbGV0IGIgPSAxOworICAgICAgICBsZXQgYyA9ICJSZXN1bHQhICI7
CisgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICB5aWVsZCBjICsgYTsKKyAgICAg
ICAgICAgIFthLCBiXSA9IFtiLCBhICsgYl07CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQg
dmFsdWUgPSAwOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMWU0OyArK2kpIHsKKyAgICAgICAg
bGV0IGYgPSBmaWIoKTsKKyAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDA7ICsraSkgewor
ICAgICAgICAgICAgdmFsdWUgPSBmLm5leHQoKS52YWx1ZTsKKyAgICAgICAgfQorICAgICAgICBp
ZiAodmFsdWUgIT09IGBSZXN1bHQhIDM1NDIyNDg0ODE3OTI2MjAwMDAwMGApCisgICAgICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IoYGJhZCB2YWx1ZToke3Jlc3VsdH1gKTsKKyAgICB9Cit9KCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3It
ZmliLWZ0bC5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9y
LWZpYi1mdGwuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzQwZTMzZGJjODY4YmVhN2E4OTNjOWVjMTZiNzc5ZWMy
NmJkYjE5YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9z
dHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwuanMKQEAgLTAsMCArMSwyMSBAQAorKGZ1bmN0aW9uICgp
IHsKKyAgICBmdW5jdGlvbiAqZmliKCkKKyAgICB7CisgICAgICAgIGxldCBhID0gMTsKKyAgICAg
ICAgbGV0IGIgPSAxOworICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAgeWllbGQg
YTsKKyAgICAgICAgICAgIFthLCBiXSA9IFtiLCBhICsgYl07CisgICAgICAgIH0KKyAgICB9CisK
KyAgICBsZXQgdmFsdWUgPSAwOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMWU0OyArK2kpIHsK
KyAgICAgICAgbGV0IGYgPSBmaWIoKTsKKyAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDA7
ICsraSkgeworICAgICAgICAgICAgdmFsdWUgPSBmLm5leHQoKS52YWx1ZTsKKyAgICAgICAgfQor
ICAgICAgICBpZiAodmFsdWUgIT09IDM1NDIyNDg0ODE3OTI2MjAwMDAwMCkKKyAgICAgICAgICAg
IHRocm93IG5ldyBFcnJvcihgYmFkIHZhbHVlOiR7cmVzdWx0fWApOworICAgIH0KK30oKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>269279</attachid>
            <date>2016-01-19 12:18:37 -0800</date>
            <delta_ts>2016-01-19 12:29:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-152723-20160120051807.patch</filename>
            <type>text/plain</type>
            <size>127333</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk1MTgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
ODE1ZGZkYjIxZDMwMzQwODAxNDAzYzkwMWJhMDkwMGIxMDVmMzZlLi5lZWY4ZDk0NDdmZmJmMmU0
Yzg0NDQ3ZjVjOGE5MjQ3MjA1YWZmZGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMzEgQEAKKzIwMTYtMDEtMTkgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgQ3JlYXRlIEdlbmVyYXRvckZyYW1lIHdpdGggdGhlIGJ5dGVjb2Rl
IG9wX25ld19nZW5lcmF0b3JfZnJhbWUgYW5kIG1ha2Ugb3Bfc2F2ZSAvIG9wX3Jlc3VtZSBERkcv
RlRMIGNhcGFibGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1MjcyMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRoaXMgcGF0Y2ggaXMgYW4gaW5pdGlhbCBhdHRlbXB0IHRvIGltcGxlbWVudCBERkcgYW5k
IEZUTCBjYXBhYmxlIEVTNiBnZW5lcmF0b3JzLgorICAgICAgICBXZSBpbnRyb2R1Y2UgdGhlIHNl
dmVyYWwgYnl0ZWNvZGVzIGFuZCBjb21waWxlIHRoZW0gaW4gREZHIC8gRlRMLgorCisgICAgICAg
IC0gb3BfbmV3X2dlbmVyYXRvcl9mcmFtZQorCisgICAgICAgICAgICBBbGxvY2F0ZSBHZW5lcmF0
b3JGcmFtZSBpbiB0aGUgYnl0ZWNvZGUgaW5zdGVhZCBvZiBhbGxvY2F0aW5nIGl0IGluIHRoZSBv
cF9zYXZlLgorCisgICAgICAgIC0gb3Bfc2F2ZQorCisgICAgICAgICAgICBOb3cgQnl0ZWNvZGVM
aXZlbmVzcyBhbmFseXNpcyBhbmQgUHJlY2lzZUp1bXBUYXJnZXQgYW5hbHlzaXMgaGF2ZSAyIG1v
ZGVzOyBTdGFuZGFyZCBhbmQgRXh0cmFjdEdlbmVyYXRvckxpdmVDYWxsZWVMb2NhbHMuCisgICAg
ICAgICAgICBVbmRlciBFeHRyYWN0R2VuZXJhdG9yTGl2ZUNhbGxlZUxvY2FscyBtb2RlLCBvcF9z
YXZlIGhhcyBqdW1wIHRvIHRoZSBtZXJnZSBwb2ludC4gVGhpcyBqdW1wIGlzIGp1c3QgdXNlZCBm
b3IgdXNlLWRlZiBhbmFseXNpcyB0byBleHRyYWN0CisgICAgICAgICAgICBsaXZlIGNhbGxlZSBs
b2NhbHMgYXQgdGhlIG1lcmdlIHBvaW50LiBUaGVzZSBsaXZlIGNhbGxlZSBsb2NhbHMgc2hvdWxk
IGJlIHNhdmVkIGFuZCByZXN1bWVkIHRvIHN1c3BlbmQgYW5kIHJlc3VtZSBnZW5lcmF0b3JzLgor
ICAgICAgICAgICAgVGhlIG1lcmdlIHBvaW50IGlzIHRoZSBwb2ludCB0aGF0IG1lcmdpbmcgdGhl
IDIgYmFzaWMgYmxvY2tzLCBzYXZpbmcgbG9jYWxzIHRvIHRoZSBnZW5lcmF0b3IgZnJhbWUgYW5k
IHJlc3VtaW5nIGxvY2FscyBmcm9tIHRoZSBnZW5lcmF0b3IgZnJhbWUuCisKKyAgICAgICAgLSBv
cF9yZXN1bWUKKworICAgICAgICAgICAgVGhpcyByZXRyaWV2ZXMgbG9jYWwgdmFyaWFibGUgZnJv
bSB0aGUgZ2VuZXJhdG9yIGZyYW1lLiBFeHRyYWN0R2VuZXJhdG9yTGl2ZUNhbGxlZUxvY2FscyBh
bmFseXNpcyB3aWxsIGRpc2NvdmVyIGxpdmUgbG9jYWxzIGF0IHRoZSBtZXJnZSBwb2ludCBhbmQg
cmVjb3JkIGxpdmVuZXNzCisgICAgICAgICAgICBpbmZvcm1hdGlvbiB0byBvcF9zYXZlIGFuZCBv
cF9yZXN1bWUuIE9uIHRoZSBiYXNpcyBvZiB0aGlzIGluZm9ybWF0aW9uLCBvcF9yZXN1bWUgd2ls
bCByZXRyaWV2ZSBzYXZlZCBsb2NhbHMgZnJvbSB0aGUgZ2VuZXJhdG9yIGZyYW1lLgorCisgICAg
ICAgIEhlcmUsIHdlIGV4cGxhaW4gYWJvdXQgaG93IHRvIHByZXByb2Nlc3MgYnl0ZWNvZGVzLgor
ICAgICAgICBGaXJzdCwgd2UgZW1pdCBvcF9zYXZlLCBvcF9yZXN1bWUgYW5kIHBlcmZvcm0gRXh0
cmFjdEdlbmVyYXRvckxpdmVDYWxsZWVMb2NhbHMgYW5hbHlzaXMuCisKKyAgICAgICAgW2VudHJ5
XSAtKy0tPiBbc2F2ZSBibG9ja10gLT4gb3Bfc2F2ZSAoaXQgaXMgYnJhbmNoaW5nIGJ5dGVjb2Rl
KSAtLS0tLS0+IFttZXJnZSBibG9ja10gLT4gLi4uCisgICAgICAgICAgICAgICAgIHwgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIF4KKyAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICArLT4gb3BfcmV0ICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgICAgICAr
LS0tLS0tLS0tLS0tLS0tLS0tPiBvcF9yZXN1bWUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0rCisKKyAgICAgICAgVGhlbiwgZGlzY292ZXIgbGl2ZSBsb2NhbHMgaW5mb3Jt
YXRpb24gKGFzIEZhc3RCaXRWZWN0b3IpIGF0IHRoZSBtZXJnZSBwb2ludCBhbmQgc3RvcmUgaXQg
dG8gY29ycmVzcG9uZGluZyBvcF9zYXZlIGFuZCBvcF9yZXN1bWUuCisgICAgICAgIEFmdGVyIHRo
YXQsIHVuZGVyIFN0YW5kYXJkIGFuYWx5c2lzIG1vZGUsIHRoZSBhYm92ZSBieXRlY29kZSBzdHJl
YW0gd2lsbCBjb25zdHJ1Y3QgdGhlIGZvbGxvd2luZyBDRkcuCisgICAgICAgIEluIHRoZSBmb2xs
b3dpbmcgQ0ZHLCBvcF9zYXZlIG5vIGxvbmdlciBoYXMganVtcCB0byB0aGUgbWVyZ2UgcG9pbnQu
IFRoZSByZW1vdmVkIGp1bXAgZWRnZSB3YXMganVzdCB1c2VkIHRvIGNhbGN1bGF0ZSBsaXZlbmVz
cyBpbmZvcm1hdGlvbiBhdCB0aGUgbWVyZ2UgcG9pbnQuCisKKyAgICAgICAgW2VudHJ5XSAtKy0t
PiBbc2F2ZSBibG9ja10gLT4gb3Bfc2F2ZSAtPiBvcF9yZXQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKy0+IFttZXJnZSBibG9ja10gLT4gLi4uCisgICAgICAgICAgICAgICAgIHwgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHwKKyAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgICAg
ICArLS0tLS0tLS0tLS0tLS0tLS0tPiBvcF9yZXN1bWUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0rCisKKyAgICAgICAgQW5kIHdlIGludHJvZHVjZXMgc2V2ZXJhbCBERkcg
bm9kZXMuCisKKyAgICAgICAgLSBOZXdHZW5lcmF0b3JGcmFtZQorCisgICAgICAgICAgICBUaGlz
IGp1c3QgYWxsb2NhdGVzIEdlbmVyYXRvckZyYW1lLgorCisgICAgICAgIC0gUmVzaXplR2VuZXJh
dG9yTG9jYWxzCisKKyAgICAgICAgICAgIFRoaXMgc2V0IEdlbmVyYXRvckZyYW1lOjptX251bWJl
ck9mU2F2ZWRDYWxsZWVMb2NhbHMgKk4qLiBUaGlzIG5vZGUgaXMgdXNlZCB0byAoMSkgYWxsb2Nh
dGUgc3BhY2UgZm9yIGxvY2FscyBpbiBHZW5lcmF0b3JGcmFtZSBhbmQgKDIpIGRlYWxsb2NhdGUg
c3BhY2UgaW4KKyAgICAgICAgICAgIEdlbmVyYXRvckZyYW1lIGJ5IHNldHRpbmcgaXQgYXMgMC4K
KworICAgICAgICAtIEdldEdlbmVyYXRvckxvY2FsCisKKyAgICAgICAgICAgIEdldCBhIHNhdmVk
IGxvY2FsIHZhcmlhYmxlIGZyb20gYSBnZW5lcmF0b3IgZnJhbWUuIEdldEdlbmVyYXRvckxvY2Fs
IGFuZCBTZXRHZW5lcmF0b3JMb2NhbCBhcmUgbGlua2VkIHdpdGggR2VuZXJhdG9yTG9jYWxEYXRh
LiBTbyB0eXBlIHByZWRpY2F0aW9uIGFuZCBmbGFncworICAgICAgICAgICAgYXJlIGNvcnJlY3Rs
eSBwcm9wYWdhdGVkIGJleW9uZCB0aGUgZ2VuZXJhdG9yIGZyYW1lLgorCisgICAgICAgIC0gU2V0
R2VuZXJhdG9yTG9jYWwKKworICAgICAgICAgICAgU3RvcmUgYSBsb2NhbCB2YXJpYWJsZSB0byBh
IGdlbmVyYXRvciBmcmFtZS4KKworICAgICAgICBGdXR1cmUgcGxhbnMgYXJlIHRoZSBmb2xsb3dp
bmdzLgorCisgICAgICAgIDEuIFN1cHBvcnQgdHJhbnNmZXJyaW5nIEFic3RyYWN0VmFsdWUgYmV0
d2VlbiBTZXRHZW5lcmF0b3JMb2NhbCBhbmQgR2V0R2VuZXJhdG9yTG9jYWwuIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTMxODMKKworICAgICAgICAyLiBDcmVhdGUg
SlNHZW5lcmF0b3IgYW5kIGFsbG9jYXRlIGl0IGluIHRoZSBnZW5lcmF0b3Igd3JhcHBlciBmdW5j
dGlvbi4gVGhpcyBzaG91bGQgYmUgY29tcGlsZWQgaW4gREZHIC8gRlRMIGFuZAorICAgICAgICB0
aGlzIG9iamVjdCBzaG91bGQgYmUgdHJhY2tlZCAoYnkgZXNjYXBlIGFuYWx5c2lzKSBhbmQgZWxp
bWluYXRlZCBpZiBwb3NzaWJsZSBieSBvYmplY3QgYWxsb2NhdGlvbiBlbGltaW5hdGlvbi4KKwor
ICAgICAgICAzLiBBbmQgb25jZSB3ZSBleHBsb2l0IHRoYXQgR2VuZXJhdG9yRnJhbWUgaXMgbm90
IGVzY2FwZWQgZnJvbSB0aGUgZ2l2ZW4gRlRMLWVkIGZ1bmN0aW9uLCB3ZSB3aWxsIGVsaW1pbmF0
ZSBHZW5lcmF0b3JGcmFtZSBhbGxvY2F0aW9uIGFuZAorICAgICAgICBjb252ZXJ0IEdlbmVyYXRv
ckxvY2FsIG9wZXJhdGlvbnMgaW50byBnZXQvc2V0IGxvY2FsIG9wZXJhdGlvbnMuCisKKyAgICAg
ICAgKiBKYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2o6CisgICAg
ICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRl
cnM6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiBidWlsdGlucy9HZW5lcmF0b3JQcm90b3R5cGUuanM6CisgICAgICAgIChnZW5l
cmF0b3JSZXN1bWUpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5jcHA6
CisgICAgICAgIChKU0M6OmlzQnJhbmNoKToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZUJ5dGVjb2Rl
QmFzaWNCbG9ja3MpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5oOgor
ICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uOgorICAgICAgICAqIGJ5dGVjb2Rl
L0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlTGl2
ZW5lc3NBbmFseXNpczo6Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzKToKKyAgICAgICAgKEpTQzo6
c3RlcE92ZXJJbnN0cnVjdGlvbik6CisgICAgICAgIChKU0M6OmNvbXB1dGVMb2NhbExpdmVuZXNz
Rm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpjb21wdXRlTG9jYWxMaXZlbmVzc0Zv
ckJsb2NrKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpydW5MaXZl
bmVzc0ZpeHBvaW50KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpn
ZXRMaXZlbmVzc0luZm9BdEJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVM
aXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlRnVsbExpdmVuZXNzKToKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlS2lsbHMpOgorICAgICAgICAoSlNDOjpCeXRl
Y29kZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGUpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVj
b2RlTGl2ZW5lc3NBbmFseXNpcy5oOgorICAgICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzQW5h
bHlzaXM6OmJ5dGVjb2RlQW5hbHlzaXNNb2RlKToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29k
ZVVzZURlZi5oOgorICAgICAgICAoSlNDOjpjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KToK
KyAgICAgICAgKEpTQzo6Y29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgICog
Ynl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wQnl0
ZWNvZGUpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKToKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjp2YWxpZGF0ZSk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJs
b2NrLmg6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bGl2ZW5lc3NBbmFseXNpcyk6CisgICAg
ICAgICogYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmNwcDoKKyAgICAgICAgKEpTQzo6Z2V0
SnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OmNvbXB1dGVQcmVj
aXNlSnVtcFRhcmdldHMpOgorICAgICAgICAoSlNDOjpmaW5kSnVtcFRhcmdldHNGb3JCeXRlY29k
ZU9mZnNldCk6CisgICAgICAgICogYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmg6CisgICAg
ICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdHZW5lcmF0b3JGcmFtZSk6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0U2F2ZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0UmVzdW1lKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuaDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRvckZyYW1lUmVn
aXN0ZXIpOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEhlYXAuaDoKKyAgICAgICAgKiBkZmcv
REZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0
cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAg
ICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0
ZUNvZGVQYXJzZXI6Om5ld0dlbmVyYXRvckxvY2FsRGF0YSk6CisgICAgICAgIChKU0M6OkRGRzo6
Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2Rl
UGFyc2VyOjpwYXJzZUNvZGVCbG9jayk6CisgICAgICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6Y2FwYWJpbGl0eUxldmVsKToKKyAgICAgICAgKiBkZmcv
REZHQ2xvYmJlcml6ZS5oOgorICAgICAgICAoSlNDOjpERkc6OmNsb2JiZXJpemUpOgorICAgICAg
ICAqIGRmZy9ERkdDbG9iYmVyc0V4aXRTdGF0ZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Y2xv
YmJlcnNFeGl0U3RhdGUpOgorICAgICAgICAqIGRmZy9ERkdEb2VzR0MuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OmRvZXNHQyk6CisgICAgICAgICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwTm9kZSk6CisgICAgICAgICogZGZnL0RG
R0dlbmVyYXRvckxvY2FsRGF0YS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmguCisgICAgICAgIChKU0M6OkRGRzo6R2VuZXJh
dG9yTG9jYWxEYXRhOjpwcmVkaWN0KToKKyAgICAgICAgKEpTQzo6REZHOjpHZW5lcmF0b3JMb2Nh
bERhdGE6OnByZWRpY3Rpb24pOgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5oOgorICAgICAgICAq
IGRmZy9ERkdNYXlFeGl0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjptYXlFeGl0KToKKyAgICAg
ICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc0dlbmVyYXRv
ckxvY2Fsc1NpemUpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmdlbmVyYXRvckxvY2Fsc1Np
emUpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc0dlbmVyYXRvckxvY2FsSW5kZXgpOgor
ICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmdlbmVyYXRvckxvY2FsSW5kZXgpOgorICAgICAgICAo
SlNDOjpERkc6Ok5vZGU6Omhhc0dlbmVyYXRvckxvY2FsRGF0YSk6CisgICAgICAgIChKU0M6OkRG
Rzo6Tm9kZTo6Z2VuZXJhdG9yTG9jYWxEYXRhKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpo
YXNHZW5lcmF0b3JGcmFtZUxvY2Fscyk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6Z2VuZXJh
dG9yRnJhbWVMb2NhbHMpOgorICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAq
IGRmZy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5oOgor
ICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2U6OnByb3BhZ2F0ZSk6CisgICAg
ICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpzYWZlVG9F
eGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3R2VuZXJhdG9yRnJhbWUpOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUmVzaXplR2VuZXJhdG9yTG9j
YWxzKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKiBkZmcv
REZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICog
ZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZH
U3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlN0cnVj
dHVyZVJlZ2lzdHJhdGlvblBoYXNlOjpydW4pOgorICAgICAgICAqIGZ0bC9GVExBYnN0cmFjdEhl
YXBSZXBvc2l0b3J5LmNwcDoKKyAgICAgICAgKiBmdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9y
eS5oOgorICAgICAgICAqIGZ0bC9GVExDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpG
VEw6OmNhbkNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvTExWTS5jcHA6Cisg
ICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZU5vZGUpOgorICAg
ICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVSZXNpemVHZW5lcmF0
b3JMb2NhbHMpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0xMVk06OmNvbXBp
bGVTZXRHZW5lcmF0b3JMb2NhbCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
TExWTTo6Y29tcGlsZUdldEdlbmVyYXRvckxvY2FsKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6
Okxvd2VyREZHVG9MTFZNOjpjb21waWxlTmV3R2VuZXJhdG9yRnJhbWUpOgorICAgICAgICAqIGpp
dC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MpOgor
ICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUT3Bjb2Rlcy5jcHA6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9zYXZlKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29w
X3Jlc3VtZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9uZXdfZ2VuZXJhdG9yX2ZyYW1l
KToKKyAgICAgICAgKiBqaXQvSklUT3Bjb2RlczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX3NhdmUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcmVzdW1lKToKKyAg
ICAgICAgKiBsbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwOgorICAgICAgICAqIGxsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuY3BwOgor
ICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJbm5lcik6CisgICAgICAgIChK
U0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUdlbmVyYXRvckZ1bmN0aW9uU291cmNlRWxlbWVu
dHMpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6Y3JlYXRlR2VuZXJhdG9yUGFy
YW1ldGVycyk6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5oOgorICAgICAgICAqIHJ1bnRpbWUv
Q29tbW9uU2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6U0xPV19QQVRIX0RFQ0wpOgorICAg
ICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmg6CisgICAgICAgICogcnVudGltZS9HZW5l
cmF0b3JGcmFtZS5jcHA6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpHZW5lcmF0b3JG
cmFtZSk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpmaW5pc2hDcmVhdGlvbik6Cisg
ICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAo
SlNDOjpHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJh
bWU6OnNhdmUpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6cmVzdW1lKToKKyAgICAg
ICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRp
bWUvR2VuZXJhdG9yRnJhbWUuaDoKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OmxvY2Fs
T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6Om51bWJlck9mQ2FsbGVlTG9j
YWxzT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6Om51bWJlck9mU2F2ZWRD
YWxsZWVMb2NhbHNPZmZzZXQpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6bG9jYWxB
dCk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAg
ICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojppbml0KToKKyAgICAgICAgKiBydW50aW1lL0pTR2xv
YmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpnZW5lcmF0b3JGcmFt
ZVN0cnVjdHVyZSk6CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZN
OjpWTSk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9WTS5oOgorICAgICAgICAqIHRlc3Rz
L3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQtYXJyYXkuanM6IEFkZGVkLgorICAgICAgICAo
ZmliKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwtYW5kLW9iamVj
dC5qczogQWRkZWQuCisgICAgICAgIChmaWIpOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9nZW5l
cmF0b3ItZmliLWZ0bC1hbmQtc3RyaW5nLmpzOiBBZGRlZC4KKyAgICAgICAgKGZpYik6CisgICAg
ICAgICogdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLmpzOiBBZGRlZC4KKyAgICAgICAg
KGZpYik6CisgICAgICAgICogdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1mcmFtZS1lbXB0eS5qczog
QWRkZWQuCisgICAgICAgIChzaG91bGRUaHJvdyk6CisgICAgICAgIChzaG91bGRUaHJvdy5maWIp
OgorCiAyMDE2LTAxLTE3ICBKdWxpZW4gQnJpYW5jZWF1ICA8amJyaWFuY2VAY2lzY28uY29tPgog
CiAgICAgICAgIFttaXBzXSBGaXggcmVnVDIgYW5kIHJlZ1QzIHRyYW1wbGluZyBpbiBNYWNyb0Fz
c2VtYmxlcgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
LnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKaW5kZXggZTE4MGUz
NWMyMjhlM2JhYzA2NGMzZmE0N2M3Nzc5ZDYwMmY4MmJjOS4uNWY1MWM2YmE2M2UxNWJlM2ZjYjZh
YzlkZTgzODAwZmE1ZTQyMzJlYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hw
cm9qCkBAIC0xMTk0LDYgKzExOTQsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cZGZn
XERGR0Zyb3plblZhbHVlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxkZmdcREZH
RnVuY3Rpb25XaGl0ZWxpc3QuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGRmZ1xE
RkdHZW5lcmF0aW9uSW5mby5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cZGZnXERG
R0dlbmVyYXRvckxvY2FsRGF0YS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cZGZn
XERGR0dQUkluZm8uaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGRmZ1xERkdHcmFw
aC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cZGZnXERGR0dyYXBoU2FmZXBvaW50
LmgiIC8+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
dmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRl
cnMKaW5kZXggYmY3NTYwZWFhNGEzYzFjZDc5NTkzYjBiM2I2MzA0NTg0YTkyNDYwMi4uNzM5MmYx
ZWY5ZDNiOWEwN2QxNmJjZGRmMzk0YTY5YjE2MjZkYTQ0OCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJv
ai5maWx0ZXJzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hw
cm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycwpAQCAtMzg3Miw2ICszODcyLDkgQEAK
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGRmZ1xERkdHZW5lcmF0aW9uSW5mby5oIj4KICAg
ICAgIDxGaWx0ZXI+ZGZnPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxkZmdcREZHR2VuZXJhdG9yTG9jYWxEYXRhLmgiPgorICAgICAgPEZpbHRl
cj5kZmc8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXGRmZ1xERkdHUFJJbmZvLmgiPgogICAgICAgPEZpbHRlcj5kZmc8L0ZpbHRlcj4KICAgICA8
L0NsSW5jbHVkZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYTkzYTZhYTFjYWE5
YTgyNTRjZDE2YzQ1YWIyM2RhYWZjOTAzZjRhMi4uOWY4ZGNmMDE4NmZkYjIwMTY1MmU3MTRkZjBj
M2VkZDc5MTk3MGIxOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEyNTAsNiAr
MTI1MCw3IEBACiAJCTcwNUI0MUIwMUE2RTUwMUUwMDcxNjc1NyAvKiBTeW1ib2xPYmplY3QuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwNUI0MUE4MUE2
RTUwMUUwMDcxNjc1NyAvKiBTeW1ib2xPYmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MDVCNDFCMTFBNkU1MDFFMDA3MTY3NTcgLyogU3lt
Ym9sUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDcwNUI0MUE5MUE2RTUwMUUwMDcxNjc1NyAvKiBTeW1ib2xQcm90b3R5cGUuY3BwICov
OyB9OwogCQk3MDVCNDFCMjFBNkU1MDFFMDA3MTY3NTcgLyogU3ltYm9sUHJvdG90eXBlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MDVCNDFBQTFBNkU1
MDFFMDA3MTY3NTcgLyogU3ltYm9sUHJvdG90eXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNzA3OTE0MUQxQzRBQTg2MDAwQjgyRkY3IC8qIERG
R0dlbmVyYXRvckxvY2FsRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNzA3OTE0MUMxQzRBQTgwNzAwQjgyRkY3IC8qIERGR0dlbmVyYXRvckxvY2Fs
RGF0YS5oICovOyB9OwogCQk3MDk0QzRERTFBRTQzOTUzMDA0MUEyRUUgLyogQnl0ZWNvZGVJbnRy
aW5zaWNSZWdpc3RyeS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3MDk0QzREQzFBRTQzOTUzMDA0MUEyRUUgLyogQnl0ZWNvZGVJbnRyaW5zaWNSZWdp
c3RyeS5jcHAgKi87IH07CiAJCTcwOTRDNERGMUFFNDM5NTMwMDQxQTJFRSAvKiBCeXRlY29kZUlu
dHJpbnNpY1JlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3MDk0QzRERDFBRTQzOTUzMDA0MUEyRUUgLyogQnl0ZWNvZGVJbnRyaW5zaWNSZWdp
c3RyeS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTcwOUZCODY3MUFFMzM1QzYwMDM5RDA2OSAvKiBKU1dlYWtTZXQuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzA5RkI4NjExQUUzMzVDNjAwMzlEMDY5
IC8qIEpTV2Vha1NldC5jcHAgKi87IH07CkBAIC0zNDI0LDYgKzM0MjUsNyBAQAogCQk3MDVCNDFB
ODFBNkU1MDFFMDA3MTY3NTcgLyogU3ltYm9sT2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFN5bWJvbE9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3MDVCNDFBOTFBNkU1MDFFMDA3MTY3NTcgLyogU3ltYm9sUHJvdG90eXBlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN5bWJvbFByb3RvdHlwZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcwNUI0MUFBMUE2RTUwMUUwMDcxNjc1NyAvKiBTeW1i
b2xQcm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3ltYm9sUHJv
dG90eXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcwNzkxNDFDMUM0QUE4MDcw
MEI4MkZGNyAvKiBERkdHZW5lcmF0b3JMb2NhbERhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gREZHR2VuZXJhdG9yTG9jYWxEYXRhLmg7IHBhdGggPSBkZmcvREZHR2VuZXJh
dG9yTG9jYWxEYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcwOTRDNERDMUFF
NDM5NTMwMDQxQTJFRSAvKiBCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MDk0QzRERDFBRTQzOTUzMDA0MUEyRUUg
LyogQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTcwOUZCODYxMUFFMzM1QzYwMDM5RDA2OSAvKiBKU1dlYWtTZXQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNXZWFrU2V0LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTYyMTgsNiArNjIyMCw3IEBACiAJCQkJMkE4ODA2NzYxOTEw
N0Q1NTAwQ0IwQkJCIC8qIERGR0Z1bmN0aW9uV2hpdGVsaXN0LmNwcCAqLywKIAkJCQkyQTg4MDY3
NzE5MTA3RDU1MDBDQjBCQkIgLyogREZHRnVuY3Rpb25XaGl0ZWxpc3QuaCAqLywKIAkJCQk4NkVD
OURCNjEzMjhERjgyMDAyQjJBRDcgLyogREZHR2VuZXJhdGlvbkluZm8uaCAqLywKKwkJCQk3MDc5
MTQxQzFDNEFBODA3MDBCODJGRjcgLyogREZHR2VuZXJhdG9yTG9jYWxEYXRhLmggKi8sCiAJCQkJ
ODZFQzlEQjcxMzI4REY4MjAwMkIyQUQ3IC8qIERGR0dyYXBoLmNwcCAqLywKIAkJCQk4NkVDOURC
ODEzMjhERjgyMDAyQjJBRDcgLyogREZHR3JhcGguaCAqLywKIAkJCQkwRjJGQ0NGMjE4QTYwMDcw
MDAxQTI3RjggLyogREZHR3JhcGhTYWZlcG9pbnQuY3BwICovLApAQCAtNzk2NSw2ICs3OTY4LDcg
QEAKIAkJCQkwRkUwNTAyOTFBQTkwOTU2MDBEMzNCMzMgLyogU2NvcGVkQXJndW1lbnRzVGFibGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGRTA1MDJCMUFBOTA5NTYwMEQzM0IzMyAvKiBTY29wZU9m
ZnNldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyNEU1NTIxN0VFMjc0OTAwQUJCMjE3IC8qIFNj
cmF0Y2hSZWdpc3RlckFsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzA3OTE0MUQxQzRB
QTg2MDAwQjgyRkY3IC8qIERGR0dlbmVyYXRvckxvY2FsRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTVGRDAwNjgxODlBRkU5QzAwNjMzMjMxIC8qIFNjcmlwdEFyZ3VtZW50cy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTUwM0ZBMjExODhFRkY2ODAwMTEwRjE0IC8qIFNjcmlwdEJyZWFrcG9pbnQu
aCBpbiBIZWFkZXJzICovLAogCQkJCUE1RkQwMDZFMTg5QjAwQUEwMDYzMzIzMSAvKiBTY3JpcHRD
YWxsRnJhbWUuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J1aWx0aW5zL0dlbmVyYXRvclByb3RvdHlwZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9idWlsdGlucy9HZW5lcmF0b3JQcm90b3R5cGUuanMKaW5kZXggYTNiYmMzNTM0YWUwNTJmNGQ2
ZmEyNWJkZTcwM2M5M2QzYTc5NWUxMS4uNDlkZGJmOWM4NDY5MzMwNjU4NzExZjE4ZTcyMTQ5YmM5
ODIyZGEzNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0dlbmVy
YXRvclByb3RvdHlwZS5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvR2Vu
ZXJhdG9yUHJvdG90eXBlLmpzCkBAIC01OCw3ICs1OCw3IEBAIGZ1bmN0aW9uIGdlbmVyYXRvclJl
c3VtZShnZW5lcmF0b3IsIHNlbnRWYWx1ZSwgcmVzdW1lTW9kZSkKICAgICB9IGVsc2UgewogICAg
ICAgICB0cnkgewogICAgICAgICAgICAgZ2VuZXJhdG9yLkBnZW5lcmF0b3JTdGF0ZSA9IEV4ZWN1
dGluZzsKLSAgICAgICAgICAgIHZhbHVlID0gZ2VuZXJhdG9yLkBnZW5lcmF0b3JOZXh0LkBjYWxs
KGdlbmVyYXRvci5AZ2VuZXJhdG9yVGhpcywgZ2VuZXJhdG9yLCBzdGF0ZSwgc2VudFZhbHVlLCBy
ZXN1bWVNb2RlKTsKKyAgICAgICAgICAgIHZhbHVlID0gZ2VuZXJhdG9yLkBnZW5lcmF0b3JOZXh0
LkBjYWxsKGdlbmVyYXRvci5AZ2VuZXJhdG9yVGhpcywgZ2VuZXJhdG9yLCBzdGF0ZSwgc2VudFZh
bHVlLCByZXN1bWVNb2RlLCBnZW5lcmF0b3IuQGdlbmVyYXRvckZyYW1lKTsKICAgICAgICAgICAg
IGlmIChnZW5lcmF0b3IuQGdlbmVyYXRvclN0YXRlID09PSBFeGVjdXRpbmcpIHsKICAgICAgICAg
ICAgICAgICBnZW5lcmF0b3IuQGdlbmVyYXRvclN0YXRlID0gQ29tcGxldGVkOwogICAgICAgICAg
ICAgICAgIGRvbmUgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcAppbmRleCA3ZjE3YzBlZjEwYjQzM2ZhYzhmNThj
YjNiOWNhNWQ0ZDAxNWJiYTA4Li5lYzBkYmY2MDU2MjVlMWMwNjIxM2ZiNGY0YjkwMDczYWFjYjQ3
YzkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVC
YXNpY0Jsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVCYXNpY0Jsb2NrLmNwcApAQCAtMzgsNyArMzgsNyBAQCB2b2lkIEJ5dGVjb2RlQmFzaWNCbG9j
azo6c2hyaW5rVG9GaXQoKQogICAgIG1fc3VjY2Vzc29ycy5zaHJpbmtUb0ZpdCgpOwogfQogCi1z
dGF0aWMgYm9vbCBpc0JyYW5jaChPcGNvZGVJRCBvcGNvZGVJRCkKK3N0YXRpYyBib29sIGlzQnJh
bmNoKE9wY29kZUlEIG9wY29kZUlELCBCeXRlY29kZUFuYWx5c2lzTW9kZSBieXRlY29kZUFuYWx5
c2lzTW9kZSkKIHsKICAgICBzd2l0Y2ggKG9wY29kZUlEKSB7CiAgICAgY2FzZSBvcF9qbXA6CkBA
IC01OCw4ICs1OCwxMSBAQCBzdGF0aWMgYm9vbCBpc0JyYW5jaChPcGNvZGVJRCBvcGNvZGVJRCkK
ICAgICBjYXNlIG9wX3N3aXRjaF9pbW06CiAgICAgY2FzZSBvcF9zd2l0Y2hfY2hhcjoKICAgICBj
YXNlIG9wX3N3aXRjaF9zdHJpbmc6Ci0gICAgY2FzZSBvcF9zYXZlOgogICAgICAgICByZXR1cm4g
dHJ1ZTsKKworICAgIGNhc2Ugb3Bfc2F2ZToKKyAgICAgICAgcmV0dXJuIGJ5dGVjb2RlQW5hbHlz
aXNNb2RlID09IEJ5dGVjb2RlQW5hbHlzaXNNb2RlOjpFeHRyYWN0R2VuZXJhdG9yTGl2ZUNhbGxl
ZUxvY2FsczsKKwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBA
IC0xMTAsMTAgKzExMywxMCBAQCBzdGF0aWMgdm9pZCBsaW5rQmxvY2tzKEJ5dGVjb2RlQmFzaWNC
bG9jayogcHJlZGVjZXNzb3IsIEJ5dGVjb2RlQmFzaWNCbG9jayogc3VjYwogICAgIHByZWRlY2Vz
c29yLT5hZGRTdWNjZXNzb3Ioc3VjY2Vzc29yKTsKIH0KIAotdm9pZCBjb21wdXRlQnl0ZWNvZGVC
YXNpY0Jsb2NrcyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxC
eXRlY29kZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9ja3MpCit2b2lkIGNvbXB1dGVCeXRlY29kZUJh
c2ljQmxvY2tzKENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29kZUFuYWx5c2lzTW9kZSBieXRl
Y29kZUFuYWx5c2lzTW9kZSwgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxv
Y2s+PiYgYmFzaWNCbG9ja3MpCiB7CiAgICAgVmVjdG9yPHVuc2lnbmVkLCAzMj4ganVtcFRhcmdl
dHM7Ci0gICAgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhjb2RlQmxvY2ssIGp1bXBUYXJnZXRz
KTsKKyAgICBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKGNvZGVCbG9jaywgYnl0ZWNvZGVBbmFs
eXNpc01vZGUsIGp1bXBUYXJnZXRzKTsKIAogICAgIC8vIENyZWF0ZSB0aGUgZW50cnkgYW5kIGV4
aXQgYmFzaWMgYmxvY2tzLgogICAgIGJhc2ljQmxvY2tzLnJlc2VydmVDYXBhY2l0eShqdW1wVGFy
Z2V0cy5zaXplKCkgKyAyKTsKQEAgLTE0OSw3ICsxNTIsNyBAQCB2b2lkIGNvbXB1dGVCeXRlY29k
ZUJhc2ljQmxvY2tzKENvZGVCbG9jayogY29kZUJsb2NrLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRy
PEJ5dAogICAgICAgICB9CiAKICAgICAgICAgLy8gSWYgdGhlIGN1cnJlbnQgYnl0ZWNvZGUgaXMg
YSBicmFuY2ggb3IgYSByZXR1cm4sIHRoZW4gdGhlIG5leHQgaW5zdHJ1Y3Rpb24gaXMgdGhlIGxl
YWRlciBvZiBpdHMgb3duIGJhc2ljIGJsb2NrLgotICAgICAgICBpZiAoaXNCcmFuY2gob3Bjb2Rl
SUQpIHx8IGlzVGVybWluYWwob3Bjb2RlSUQpIHx8IGlzVGhyb3cob3Bjb2RlSUQpKQorICAgICAg
ICBpZiAoaXNCcmFuY2gob3Bjb2RlSUQsIGJ5dGVjb2RlQW5hbHlzaXNNb2RlKSB8fCBpc1Rlcm1p
bmFsKG9wY29kZUlEKSB8fCBpc1Rocm93KG9wY29kZUlEKSkKICAgICAgICAgICAgIG5leHRJbnN0
cnVjdGlvbklzTGVhZGVyID0gdHJ1ZTsKIAogICAgICAgICBpZiAoY3JlYXRlZEJsb2NrKQpAQCAt
MjAyLDEwICsyMDUsMTAgQEAgdm9pZCBjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2NrcyhDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXQKICAgICAgICAgICAgIH0K
IAogICAgICAgICAgICAgLy8gSWYgd2UgZm91bmQgYSBicmFuY2gsIGxpbmsgdG8gdGhlIGJsb2Nr
KHMpIHRoYXQgd2UganVtcCB0by4KLSAgICAgICAgICAgIGlmIChpc0JyYW5jaChvcGNvZGVJRCkp
IHsKKyAgICAgICAgICAgIGlmIChpc0JyYW5jaChvcGNvZGVJRCwgYnl0ZWNvZGVBbmFseXNpc01v
ZGUpKSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKGJ5dGVjb2RlT2Zmc2V0ICsgb3Bjb2RlTGVu
Z3RoID09IGJsb2NrLT5sZWFkZXJCeXRlY29kZU9mZnNldCgpICsgYmxvY2stPnRvdGFsQnl0ZWNv
ZGVMZW5ndGgoKSk7CiAgICAgICAgICAgICAgICAgVmVjdG9yPHVuc2lnbmVkLCAxPiBieXRlY29k
ZU9mZnNldHNKdW1wZWRUbzsKLSAgICAgICAgICAgICAgICBmaW5kSnVtcFRhcmdldHNGb3JCeXRl
Y29kZU9mZnNldChjb2RlQmxvY2ssIGJ5dGVjb2RlT2Zmc2V0LCBieXRlY29kZU9mZnNldHNKdW1w
ZWRUbyk7CisgICAgICAgICAgICAgICAgZmluZEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQo
Y29kZUJsb2NrLCBieXRlY29kZUFuYWx5c2lzTW9kZSwgYnl0ZWNvZGVPZmZzZXQsIGJ5dGVjb2Rl
T2Zmc2V0c0p1bXBlZFRvKTsKIAogICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBiYXNpY0Jsb2Nrcy5zaXplKCk7IGkrKykgewogICAgICAgICAgICAgICAgICAgICBCeXRl
Y29kZUJhc2ljQmxvY2sqIG90aGVyQmxvY2sgPSBiYXNpY0Jsb2Nrc1tpXS5nZXQoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2su
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suaApp
bmRleCBiZDdkM2FlOWJhMzQzZTFiMDcxNzllOThmMWVlODlkYTY1YmE3ZTIwLi40OTI1Njk1ZGFl
Y2IwZDZiZjhiN2I2MDIyYzY5MDY0ZWIxM2E0YzNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5oCkBAIC0zNiw2ICszNiwxMSBA
QAogCiBjbGFzcyBDb2RlQmxvY2s7CiAKK2VudW0gY2xhc3MgQnl0ZWNvZGVBbmFseXNpc01vZGUg
eworICAgIFN0YW5kYXJkLAorICAgIEV4dHJhY3RHZW5lcmF0b3JMaXZlQ2FsbGVlTG9jYWxzCit9
OworCiBjbGFzcyBCeXRlY29kZUJhc2ljQmxvY2sgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgpAQCAtNzAsNyArNzUsNyBAQCBjbGFzcyBCeXRlY29kZUJhc2ljQmxvY2sg
ewogICAgIEZhc3RCaXRWZWN0b3IgbV9vdXQ7CiB9OwogCi12b2lkIGNvbXB1dGVCeXRlY29kZUJh
c2ljQmxvY2tzKENvZGVCbG9jayosIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNp
Y0Jsb2NrPj4mKTsKK3ZvaWQgY29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MoQ29kZUJsb2NrKiwg
Qnl0ZWNvZGVBbmFseXNpc01vZGUsIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNp
Y0Jsb2NrPj4mKTsKIAogaW5saW5lIEJ5dGVjb2RlQmFzaWNCbG9jazo6Qnl0ZWNvZGVCYXNpY0Js
b2NrKHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBsZW5ndGgpCiAgICAgOiBtX2xlYWRlckJ5dGVj
b2RlT2Zmc2V0KHN0YXJ0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlTGlzdC5qc29uIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlTGlzdC5qc29uCmluZGV4IDA1M2I4ZGM5Yjg2NGYxYjg2YjRjZWM3YWE2MDFmN2NlMmYw
M2YyZTQuLjNhM2QzMTdlOWY2ZGVlOTI0NjdkY2VlMThmNWNiYTdhMDk0N2EwMmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24KQEAgLTE2
LDYgKzE2LDcgQEAKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX25ld19hcnJheV93aXRoX3Np
emUiLCAibGVuZ3RoIiA6IDQgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX25ld19hcnJh
eV9idWZmZXIiLCAibGVuZ3RoIiA6IDUgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX25l
d19yZWdleHAiLCAibGVuZ3RoIiA6IDMgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX25l
d19nZW5lcmF0b3JfZnJhbWUiLCAibGVuZ3RoIiA6IDMgfSwKICAgICAgICAgICAgIHsgIm5hbWUi
IDogIm9wX21vdiIsICJsZW5ndGgiIDogMyB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3Bf
bm90IiwgImxlbmd0aCIgOiAzIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9lcSIsICJs
ZW5ndGgiIDogNCB9LApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNwcAppbmRleCA3MjI4YjAzMzM2NmM3YTY3
YjUxMDQ4OGRmZTQ1ZjNkZDNjZmE0MzE1Li45YzM3ODlmZjY0NzgwNThhNmVmOGQwYjA4OTZjZmZm
Y2FjM2FiMGRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNwcApAQCAtMzUsOCArMzUsOSBAQAogCiBu
YW1lc3BhY2UgSlNDIHsKIAotQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpCeXRlY29kZUxpdmVu
ZXNzQW5hbHlzaXMoQ29kZUJsb2NrKiBjb2RlQmxvY2spCitCeXRlY29kZUxpdmVuZXNzQW5hbHlz
aXM6OkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNv
ZGVBbmFseXNpc01vZGUgYnl0ZWNvZGVBbmFseXNpc01vZGUpCiAgICAgOiBtX2NvZGVCbG9jayhj
b2RlQmxvY2spCisgICAgLCBtX2J5dGVjb2RlQW5hbHlzaXNNb2RlKGJ5dGVjb2RlQW5hbHlzaXNN
b2RlKQogewogICAgIEFTU0VSVChtX2NvZGVCbG9jayk7CiAgICAgY29tcHV0ZSgpOwpAQCAtOTgs
NyArOTksNyBAQCBzdGF0aWMgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBmaW5kQmFzaWNCbG9ja0ZvckJ5
dGVjb2RlT2Zmc2V0KFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdAogLy8gU2ltcGxpZmllZCBpbnRlcmZh
Y2UgdG8gYnl0ZWNvZGUgdXNlL2RlZiwgd2hpY2ggZGV0ZXJtaW5lcyBkZWZzIGZpcnN0IGFuZCB0
aGVuIHVzZXMsIGFuZCBpbmNsdWRlcwogLy8gZXhjZXB0aW9uIGhhbmRsZXJzIGluIHRoZSB1c2Vz
LgogdGVtcGxhdGU8dHlwZW5hbWUgVXNlRnVuY3RvciwgdHlwZW5hbWUgRGVmRnVuY3Rvcj4KLXN0
YXRpYyB2b2lkIHN0ZXBPdmVySW5zdHJ1Y3Rpb24oQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVj
b2RlQmFzaWNCbG9jayogYmxvY2ssIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNp
Y0Jsb2NrPj4mIGJhc2ljQmxvY2tzLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgY29uc3QgVXNl
RnVuY3RvciYgdXNlLCBjb25zdCBEZWZGdW5jdG9yJiBkZWYpCitzdGF0aWMgdm9pZCBzdGVwT3Zl
ckluc3RydWN0aW9uKENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29kZUFuYWx5c2lzTW9kZSBi
eXRlY29kZUFuYWx5c2lzTW9kZSwgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaywgVmVjdG9yPHN0
ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9ja3MsIHVuc2lnbmVk
IGJ5dGVjb2RlT2Zmc2V0LCBjb25zdCBVc2VGdW5jdG9yJiB1c2UsIGNvbnN0IERlZkZ1bmN0b3Im
IGRlZikKIHsKICAgICAvLyBUaGlzIGFic3RyYWN0bHkgZXhlY3V0ZSB0aGUgaW5zdHJ1Y3Rpb24g
aW4gcmV2ZXJzZS4gSW5zdHJ1Y3Rpb25zIGxvZ2ljYWxseSBmaXJzdCB1c2Ugb3BlcmFuZHMgYW5k
CiAgICAgLy8gdGhlbiBkZWZpbmUgb3BlcmFuZHMuIFRoaXMgbG9naWNhbCBvcmRlcmluZyBpcyBu
ZWNlc3NhcnkgZm9yIG9wZXJhdGlvbnMgdGhhdCB1c2UgYW5kIGRlZiB0aGUgc2FtZQpAQCAtMTE2
LDE0ICsxMTcsMTQgQEAgc3RhdGljIHZvaWQgc3RlcE92ZXJJbnN0cnVjdGlvbihDb2RlQmxvY2sq
IGNvZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaywKICAgICAvLyBmaXJzdCBhZGQg
aXQgdG8gdGhlIG91dCBzZXQgKHRoZSB1c2UpLCBhbmQgdGhlbiB3ZSdkIHJlbW92ZSBpdCAodGhl
IGRlZikuCiAgICAgCiAgICAgY29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldCgKLSAgICAgICAg
Y29kZUJsb2NrLCBibG9jaywgYnl0ZWNvZGVPZmZzZXQsCisgICAgICAgIGNvZGVCbG9jaywgYnl0
ZWNvZGVBbmFseXNpc01vZGUsIGJsb2NrLCBieXRlY29kZU9mZnNldCwKICAgICAgICAgWyZdIChD
b2RlQmxvY2sqIGNvZGVCbG9jaywgSW5zdHJ1Y3Rpb24qLCBPcGNvZGVJRCwgaW50IG9wZXJhbmQp
IHsKICAgICAgICAgICAgIGlmIChpc1ZhbGlkUmVnaXN0ZXJGb3JMaXZlbmVzcyhjb2RlQmxvY2ss
IG9wZXJhbmQpKQogICAgICAgICAgICAgICAgIGRlZihWaXJ0dWFsUmVnaXN0ZXIob3BlcmFuZCku
dG9Mb2NhbCgpKTsKICAgICAgICAgfSk7CiAKICAgICBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zm
c2V0KAotICAgICAgICBjb2RlQmxvY2ssIGJsb2NrLCBieXRlY29kZU9mZnNldCwKKyAgICAgICAg
Y29kZUJsb2NrLCBieXRlY29kZUFuYWx5c2lzTW9kZSwgYmxvY2ssIGJ5dGVjb2RlT2Zmc2V0LAog
ICAgICAgICBbJl0gKENvZGVCbG9jayogY29kZUJsb2NrLCBJbnN0cnVjdGlvbiosIE9wY29kZUlE
LCBpbnQgb3BlcmFuZCkgewogICAgICAgICAgICAgaWYgKGlzVmFsaWRSZWdpc3RlckZvckxpdmVu
ZXNzKGNvZGVCbG9jaywgb3BlcmFuZCkpCiAgICAgICAgICAgICAgICAgdXNlKFZpcnR1YWxSZWdp
c3RlcihvcGVyYW5kKS50b0xvY2FsKCkpOwpAQCAtMTM4LDEwICsxMzksMTAgQEAgc3RhdGljIHZv
aWQgc3RlcE92ZXJJbnN0cnVjdGlvbihDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVCYXNp
Y0Jsb2NrKiBibG9jaywKICAgICB9CiB9CiAKLXN0YXRpYyB2b2lkIHN0ZXBPdmVySW5zdHJ1Y3Rp
b24oQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2ssIFZlY3Rv
cjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mIGJhc2ljQmxvY2tzLCB1bnNp
Z25lZCBieXRlY29kZU9mZnNldCwgRmFzdEJpdFZlY3RvciYgb3V0KQorc3RhdGljIHZvaWQgc3Rl
cE92ZXJJbnN0cnVjdGlvbihDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVBbmFseXNpc01v
ZGUgYnl0ZWNvZGVBbmFseXNpc01vZGUsIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2ssIFZlY3Rv
cjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mIGJhc2ljQmxvY2tzLCB1bnNp
Z25lZCBieXRlY29kZU9mZnNldCwgRmFzdEJpdFZlY3RvciYgb3V0KQogewogICAgIHN0ZXBPdmVy
SW5zdHJ1Y3Rpb24oCi0gICAgICAgIGNvZGVCbG9jaywgYmxvY2ssIGJhc2ljQmxvY2tzLCBieXRl
Y29kZU9mZnNldCwKKyAgICAgICAgY29kZUJsb2NrLCBieXRlY29kZUFuYWx5c2lzTW9kZSwgYmxv
Y2ssIGJhc2ljQmxvY2tzLCBieXRlY29kZU9mZnNldCwKICAgICAgICAgWyZdICh1bnNpZ25lZCBi
aXRJbmRleCkgewogICAgICAgICAgICAgLy8gVGhpcyBpcyB0aGUgdXNlIGZ1bmN0b3IsIHNvIHdl
IHNldCB0aGUgYml0LgogICAgICAgICAgICAgb3V0LnNldChiaXRJbmRleCk7CkBAIC0xNTIsNyAr
MTUzLDcgQEAgc3RhdGljIHZvaWQgc3RlcE92ZXJJbnN0cnVjdGlvbihDb2RlQmxvY2sqIGNvZGVC
bG9jaywgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaywKICAgICAgICAgfSk7CiB9CiAKLXN0YXRp
YyB2b2lkIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2ssIFZlY3RvcjxzdGQ6OnVuaXF1ZV9w
dHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mIGJhc2ljQmxvY2tzLCB1bnNpZ25lZCB0YXJnZXRPZmZz
ZXQsIEZhc3RCaXRWZWN0b3ImIHJlc3VsdCkKK3N0YXRpYyB2b2lkIGNvbXB1dGVMb2NhbExpdmVu
ZXNzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQW5hbHlz
aXNNb2RlIGJ5dGVjb2RlQW5hbHlzaXNNb2RlLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrLCBW
ZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+JiBiYXNpY0Jsb2Nrcywg
dW5zaWduZWQgdGFyZ2V0T2Zmc2V0LCBGYXN0Qml0VmVjdG9yJiByZXN1bHQpCiB7CiAgICAgQVNT
RVJUKCFibG9jay0+aXNFeGl0QmxvY2soKSk7CiAgICAgQVNTRVJUKCFibG9jay0+aXNFbnRyeUJs
b2NrKCkpOwpAQCAtMTY0LDE3ICsxNjUsMTcgQEAgc3RhdGljIHZvaWQgY29tcHV0ZUxvY2FsTGl2
ZW5lc3NGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGUKICAg
ICAgICAgaWYgKHRhcmdldE9mZnNldCA+IGJ5dGVjb2RlT2Zmc2V0KQogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIAotICAgICAgICBzdGVwT3Zlckluc3RydWN0aW9uKGNvZGVCbG9jaywgYmxv
Y2ssIGJhc2ljQmxvY2tzLCBieXRlY29kZU9mZnNldCwgb3V0KTsKKyAgICAgICAgc3RlcE92ZXJJ
bnN0cnVjdGlvbihjb2RlQmxvY2ssIGJ5dGVjb2RlQW5hbHlzaXNNb2RlLCBibG9jaywgYmFzaWNC
bG9ja3MsIGJ5dGVjb2RlT2Zmc2V0LCBvdXQpOwogICAgIH0KIAogICAgIHJlc3VsdC5zZXQob3V0
KTsKIH0KIAotc3RhdGljIHZvaWQgY29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCbG9jayhDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaywgVmVjdG9yPHN0ZDo6dW5p
cXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9ja3MpCitzdGF0aWMgdm9pZCBj
b21wdXRlTG9jYWxMaXZlbmVzc0ZvckJsb2NrKENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29k
ZUFuYWx5c2lzTW9kZSBieXRlY29kZUFuYWx5c2lzTW9kZSwgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBi
bG9jaywgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYgYmFzaWNC
bG9ja3MpCiB7CiAgICAgaWYgKGJsb2NrLT5pc0V4aXRCbG9jaygpIHx8IGJsb2NrLT5pc0VudHJ5
QmxvY2soKSkKICAgICAgICAgcmV0dXJuOwotICAgIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQnl0
ZWNvZGVPZmZzZXQoY29kZUJsb2NrLCBibG9jaywgYmFzaWNCbG9ja3MsIGJsb2NrLT5sZWFkZXJC
eXRlY29kZU9mZnNldCgpLCBibG9jay0+aW4oKSk7CisgICAgY29tcHV0ZUxvY2FsTGl2ZW5lc3NG
b3JCeXRlY29kZU9mZnNldChjb2RlQmxvY2ssIGJ5dGVjb2RlQW5hbHlzaXNNb2RlLCBibG9jaywg
YmFzaWNCbG9ja3MsIGJsb2NrLT5sZWFkZXJCeXRlY29kZU9mZnNldCgpLCBibG9jay0+aW4oKSk7
CiB9CiAKIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpydW5MaXZlbmVzc0ZpeHBvaW50
KCkKQEAgLTIwMSw3ICsyMDIsNyBAQCB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6cnVu
TGl2ZW5lc3NGaXhwb2ludCgpCiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSAwOyBqIDwg
YmxvY2stPnN1Y2Nlc3NvcnMoKS5zaXplKCk7IGorKykKICAgICAgICAgICAgICAgICBuZXdPdXQu
bWVyZ2UoYmxvY2stPnN1Y2Nlc3NvcnMoKVtqXS0+aW4oKSk7CiAgICAgICAgICAgICBib29sIG91
dERpZENoYW5nZSA9IGJsb2NrLT5vdXQoKS5zZXRBbmRDaGVjayhuZXdPdXQpOwotICAgICAgICAg
ICAgY29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCbG9jayhtX2NvZGVCbG9jaywgYmxvY2ssIG1fYmFz
aWNCbG9ja3MpOworICAgICAgICAgICAgY29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCbG9jayhtX2Nv
ZGVCbG9jaywgbV9ieXRlY29kZUFuYWx5c2lzTW9kZSwgYmxvY2ssIG1fYmFzaWNCbG9ja3MpOwog
ICAgICAgICAgICAgY2hhbmdlZCB8PSBvdXREaWRDaGFuZ2U7CiAgICAgICAgIH0KICAgICB9IHdo
aWxlIChjaGFuZ2VkKTsKQEAgLTIxNCw3ICsyMTUsNyBAQCB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NB
bmFseXNpczo6Z2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29kZU9mZnNldCh1bnNpZ25lZCBieXRlY29k
ZQogICAgIEFTU0VSVCghYmxvY2stPmlzRW50cnlCbG9jaygpKTsKICAgICBBU1NFUlQoIWJsb2Nr
LT5pc0V4aXRCbG9jaygpKTsKICAgICByZXN1bHQucmVzaXplKGJsb2NrLT5vdXQoKS5udW1CaXRz
KCkpOwotICAgIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQnl0ZWNvZGVPZmZzZXQobV9jb2RlQmxv
Y2ssIGJsb2NrLCBtX2Jhc2ljQmxvY2tzLCBieXRlY29kZU9mZnNldCwgcmVzdWx0KTsKKyAgICBj
b21wdXRlTG9jYWxMaXZlbmVzc0ZvckJ5dGVjb2RlT2Zmc2V0KG1fY29kZUJsb2NrLCBtX2J5dGVj
b2RlQW5hbHlzaXNNb2RlLCBibG9jaywgbV9iYXNpY0Jsb2NrcywgYnl0ZWNvZGVPZmZzZXQsIHJl
c3VsdCk7CiB9CiAKIGJvb2wgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpvcGVyYW5kSXNMaXZl
QXRCeXRlY29kZU9mZnNldChpbnQgb3BlcmFuZCwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpCkBA
IC0yNDgsNyArMjQ5LDcgQEAgdm9pZCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGVG
dWxsTGl2ZW5lc3MoRnVsbEJ5dGVjb2RlTGl2ZW5lc3MmIHJlc3VsdCkKICAgICAgICAgCiAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IGJsb2NrLT5ieXRlY29kZU9mZnNldHMoKS5zaXplKCk7IGkt
LTspIHsKICAgICAgICAgICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0ID0gYmxvY2stPmJ5dGVj
b2RlT2Zmc2V0cygpW2ldOwotICAgICAgICAgICAgc3RlcE92ZXJJbnN0cnVjdGlvbihtX2NvZGVC
bG9jaywgYmxvY2ssIG1fYmFzaWNCbG9ja3MsIGJ5dGVjb2RlT2Zmc2V0LCBvdXQpOworICAgICAg
ICAgICAgc3RlcE92ZXJJbnN0cnVjdGlvbihtX2NvZGVCbG9jaywgbV9ieXRlY29kZUFuYWx5c2lz
TW9kZSwgYmxvY2ssIG1fYmFzaWNCbG9ja3MsIGJ5dGVjb2RlT2Zmc2V0LCBvdXQpOwogICAgICAg
ICAgICAgcmVzdWx0Lm1fbWFwW2J5dGVjb2RlT2Zmc2V0XSA9IG91dDsKICAgICAgICAgfQogICAg
IH0KQEAgLTI3MSw3ICsyNzIsNyBAQCB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Y29t
cHV0ZUtpbGxzKEJ5dGVjb2RlS2lsbHMmIHJlc3VsdCkKICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gYmxvY2stPmJ5dGVjb2RlT2Zmc2V0cygpLnNpemUoKTsgaS0tOykgewogICAgICAgICAgICAg
dW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQgPSBibG9jay0+Ynl0ZWNvZGVPZmZzZXRzKClbaV07CiAg
ICAgICAgICAgICBzdGVwT3Zlckluc3RydWN0aW9uKAotICAgICAgICAgICAgICAgIG1fY29kZUJs
b2NrLCBibG9jaywgbV9iYXNpY0Jsb2NrcywgYnl0ZWNvZGVPZmZzZXQsCisgICAgICAgICAgICAg
ICAgbV9jb2RlQmxvY2ssIG1fYnl0ZWNvZGVBbmFseXNpc01vZGUsIGJsb2NrLCBtX2Jhc2ljQmxv
Y2tzLCBieXRlY29kZU9mZnNldCwKICAgICAgICAgICAgICAgICBbJl0gKHVuc2lnbmVkIGluZGV4
KSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgZm9yIHVzZXMuCiAgICAgICAgICAg
ICAgICAgICAgIGlmIChvdXQuZ2V0KGluZGV4KSkKQEAgLTMzNyw3ICszMzgsNyBAQCB2b2lkIEJ5
dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6ZHVtcFJlc3VsdHMoKQogCiB2b2lkIEJ5dGVjb2RlTGl2
ZW5lc3NBbmFseXNpczo6Y29tcHV0ZSgpCiB7Ci0gICAgY29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9j
a3MobV9jb2RlQmxvY2ssIG1fYmFzaWNCbG9ja3MpOworICAgIGNvbXB1dGVCeXRlY29kZUJhc2lj
QmxvY2tzKG1fY29kZUJsb2NrLCBtX2J5dGVjb2RlQW5hbHlzaXNNb2RlLCBtX2Jhc2ljQmxvY2tz
KTsKICAgICBBU1NFUlQobV9iYXNpY0Jsb2Nrcy5zaXplKCkpOwogICAgIHJ1bkxpdmVuZXNzRml4
cG9pbnQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5oCmluZGV4IGVjZTE2ZjIxZjAxNTEwYTY0MjdmZDg0
MTE0MDc5YmVkODcwYzA4NzUuLjlkMjAyOGQ2OWE1MTc3NjI5NjI4NjExMmUzODM0MDcxOWIwNWMy
NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxp
dmVuZXNzQW5hbHlzaXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmgKQEAgLTQxLDcgKzQxLDcgQEAgY2xhc3MgQnl0ZWNvZGVM
aXZlbmVzc0FuYWx5c2lzIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMpOwogcHVibGljOgotICAg
IEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcyhDb2RlQmxvY2sqKTsKKyAgICBCeXRlY29kZUxpdmVu
ZXNzQW5hbHlzaXMoQ29kZUJsb2NrKiwgQnl0ZWNvZGVBbmFseXNpc01vZGUpOwogICAgIAogICAg
IGJvb2wgb3BlcmFuZElzTGl2ZUF0Qnl0ZWNvZGVPZmZzZXQoaW50IG9wZXJhbmQsIHVuc2lnbmVk
IGJ5dGVjb2RlT2Zmc2V0KTsKICAgICBGYXN0Qml0VmVjdG9yIGdldExpdmVuZXNzSW5mb0F0Qnl0
ZWNvZGVPZmZzZXQodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpOwpAQCAtNDksNiArNDksOCBAQCBj
bGFzcyBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMgewogICAgIHZvaWQgY29tcHV0ZUZ1bGxMaXZl
bmVzcyhGdWxsQnl0ZWNvZGVMaXZlbmVzcyYgcmVzdWx0KTsKICAgICB2b2lkIGNvbXB1dGVLaWxs
cyhCeXRlY29kZUtpbGxzJiByZXN1bHQpOwogCisgICAgQnl0ZWNvZGVBbmFseXNpc01vZGUgYnl0
ZWNvZGVBbmFseXNpc01vZGUoKSBjb25zdCB7IHJldHVybiBtX2J5dGVjb2RlQW5hbHlzaXNNb2Rl
OyB9CisKIHByaXZhdGU6CiAgICAgdm9pZCBjb21wdXRlKCk7CiAgICAgdm9pZCBydW5MaXZlbmVz
c0ZpeHBvaW50KCk7CkBAIC01Nyw2ICs1OSw3IEBAIGNsYXNzIEJ5dGVjb2RlTGl2ZW5lc3NBbmFs
eXNpcyB7CiAgICAgdm9pZCBnZXRMaXZlbmVzc0luZm9BdEJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVk
IGJ5dGVjb2RlT2Zmc2V0LCBGYXN0Qml0VmVjdG9yJik7CiAKICAgICBDb2RlQmxvY2sqIG1fY29k
ZUJsb2NrOworICAgIEJ5dGVjb2RlQW5hbHlzaXNNb2RlIG1fYnl0ZWNvZGVBbmFseXNpc01vZGU7
CiAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiBtX2Jhc2lj
QmxvY2tzOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlVXNlRGVmLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVVc2VEZWYuaAppbmRleCA4MDExMTRjMzcyYTI3N2Y2ZTE3NzA5YjkwYmUyMDdjOGY5OWJlODJk
Li43NTM5NzlkZjNmZjZjN2QxZjAxZTA1ZTU3ODAwY2U3YjFlODI0YTkxIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaApAQCAtMzIsNyArMzIs
NyBAQAogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgogdm9pZCBjb21wdXRlVXNlc0ZvckJ5
dGVjb2RlT2Zmc2V0KAotICAgIENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29kZUJhc2ljQmxv
Y2sqIGJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgY29uc3QgRnVuY3RvciYgZnVuY3Rv
cikKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVBbmFseXNpc01vZGUgYnl0ZWNv
ZGVBbmFseXNpc01vZGUsIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2ssIHVuc2lnbmVkIGJ5dGVj
b2RlT2Zmc2V0LCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQogewogICAgIEludGVycHJldGVyKiBp
bnRlcnByZXRlciA9IGNvZGVCbG9jay0+dm0oKS0+aW50ZXJwcmV0ZXI7CiAgICAgSW5zdHJ1Y3Rp
b24qIGluc3RydWN0aW9uc0JlZ2luID0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigp
OwpAQCAtNTUsNiArNTUsNyBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoCiAg
ICAgY2FzZSBvcF9jcmVhdGVfb3V0X29mX2JhbmRfYXJndW1lbnRzOgogICAgIGNhc2Ugb3BfZ2V0
X3Jlc3RfbGVuZ3RoOgogICAgIGNhc2Ugb3Bfd2F0Y2hkb2c6CisgICAgY2FzZSBvcF9uZXdfZ2Vu
ZXJhdG9yX2ZyYW1lOgogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBvcF9hc3NlcnQ6CiAgICAg
Y2FzZSBvcF9nZXRfc2NvcGU6CkBAIC0yNTIsMTggKzI1MywyNiBAQCB2b2lkIGNvbXB1dGVVc2Vz
Rm9yQnl0ZWNvZGVPZmZzZXQoCiAgICAgfQogICAgIGNhc2Ugb3Bfc2F2ZTogewogICAgICAgICBm
dW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBpbnN0cnVjdGlvblsxXS51
Lm9wZXJhbmQpOwotICAgICAgICB1bnNpZ25lZCBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXQgPSBi
eXRlY29kZU9mZnNldCArIGluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKLSAgICAgICAgQnl0ZWNv
ZGVCYXNpY0Jsb2NrKiBtZXJnZVBvaW50QmxvY2sgPSBudWxscHRyOwotICAgICAgICBmb3IgKEJ5
dGVjb2RlQmFzaWNCbG9jayogc3VjY2Vzc29yIDogYmxvY2stPnN1Y2Nlc3NvcnMoKSkgewotICAg
ICAgICAgICAgaWYgKHN1Y2Nlc3Nvci0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKSA9PSBtZXJnZVBv
aW50Qnl0ZWNvZGVPZmZzZXQpIHsKLSAgICAgICAgICAgICAgICBtZXJnZVBvaW50QmxvY2sgPSBz
dWNjZXNzb3I7Ci0gICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGlmIChieXRlY29kZUFu
YWx5c2lzTW9kZSA9PSBCeXRlY29kZUFuYWx5c2lzTW9kZTo6RXh0cmFjdEdlbmVyYXRvckxpdmVD
YWxsZWVMb2NhbHMpIHsKKyAgICAgICAgICAgIHVuc2lnbmVkIG1lcmdlUG9pbnRCeXRlY29kZU9m
ZnNldCA9IGJ5dGVjb2RlT2Zmc2V0ICsgaW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kOworICAgICAg
ICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBtZXJnZVBvaW50QmxvY2sgPSBudWxscHRyOworICAg
ICAgICAgICAgZm9yIChCeXRlY29kZUJhc2ljQmxvY2sqIHN1Y2Nlc3NvciA6IGJsb2NrLT5zdWNj
ZXNzb3JzKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoc3VjY2Vzc29yLT5sZWFkZXJCeXRlY29k
ZU9mZnNldCgpID09IG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldCkgeworICAgICAgICAgICAgICAg
ICAgICBtZXJnZVBvaW50QmxvY2sgPSBzdWNjZXNzb3I7CisgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEFTU0VS
VChtZXJnZVBvaW50QmxvY2spOworICAgICAgICAgICAgbWVyZ2VQb2ludEJsb2NrLT5pbigpLmZv
ckVhY2hTZXRCaXQoWyZdKHVuc2lnbmVkIGxvY2FsKSB7CisgICAgICAgICAgICAgICAgZnVuY3Rv
cihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgdmlydHVhbFJlZ2lzdGVyRm9yTG9j
YWwobG9jYWwpLm9mZnNldCgpKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gaW5zdHJ1Y3Rpb25b
Ml0udS51bnNpZ25lZFZhbHVlOworICAgICAgICAgICAgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2
ZW5lc3MgPSBjb2RlQmxvY2stPmxpdmVDYWxsZWVMb2NhbHNBdFlpZWxkKGxpdmVDYWxsZWVMb2Nh
bHNJbmRleCk7CisgICAgICAgICAgICBsaXZlbmVzcy5mb3JFYWNoU2V0Qml0KFsmXSh1bnNpZ25l
ZCBsb2NhbCkgeworICAgICAgICAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlv
biwgb3Bjb2RlSUQsIHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGxvY2FsKS5vZmZzZXQoKSk7Cisg
ICAgICAgICAgICB9KTsKICAgICAgICAgfQotICAgICAgICBBU1NFUlQobWVyZ2VQb2ludEJsb2Nr
KTsKLSAgICAgICAgbWVyZ2VQb2ludEJsb2NrLT5pbigpLmZvckVhY2hTZXRCaXQoWyZdKHVuc2ln
bmVkIGxvY2FsKSB7Ci0gICAgICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24s
IG9wY29kZUlELCB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChsb2NhbCkub2Zmc2V0KCkpOwotICAg
ICAgICB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBkZWZhdWx0OgpAQCAtMjczLDcg
KzI4Miw3IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCgKIH0KIAogdGVtcGxh
dGU8dHlwZW5hbWUgRnVuY3Rvcj4KLXZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChD
b2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaywgdW5zaWduZWQg
Ynl0ZWNvZGVPZmZzZXQsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCit2b2lkIGNvbXB1dGVEZWZz
Rm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQW5hbHlzaXNN
b2RlIGJ5dGVjb2RlQW5hbHlzaXNNb2RlLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrLCB1bnNp
Z25lZCBieXRlY29kZU9mZnNldCwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikKIHsKICAgICBJbnRl
cnByZXRlciogaW50ZXJwcmV0ZXIgPSBjb2RlQmxvY2stPnZtKCktPmludGVycHJldGVyOwogICAg
IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiA9IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25z
KCkuYmVnaW4oKTsKQEAgLTQxNSw3ICs0MjQsOCBAQCB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNv
ZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvYwog
ICAgIGNhc2Ugb3BfZGVsX2J5X3ZhbDoKICAgICBjYXNlIG9wX3Vuc2lnbmVkOgogICAgIGNhc2Ug
b3BfZ2V0X2Zyb21fYXJndW1lbnRzOiAKLSAgICBjYXNlIG9wX2dldF9yZXN0X2xlbmd0aDogewor
ICAgIGNhc2Ugb3BfZ2V0X3Jlc3RfbGVuZ3RoOgorICAgIGNhc2Ugb3BfbmV3X2dlbmVyYXRvcl9m
cmFtZTogewogICAgICAgICBBU1NFUlQob3Bjb2RlTGVuZ3Roc1tvcGNvZGVJRF0gPiAxKTsKICAg
ICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rp
b25bMV0udS5vcGVyYW5kKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNDMyLDEwICs0NDIsMTggQEAg
dm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBC
eXRlY29kZUJhc2ljQmxvY2sqIGJsb2MKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBjYXNl
IG9wX3Jlc3VtZTogewotICAgICAgICBSRUxFQVNFX0FTU0VSVChibG9jay0+c3VjY2Vzc29ycygp
LnNpemUoKSA9PSAxKTsKLSAgICAgICAgYmxvY2stPnN1Y2Nlc3NvcnMoKVswXS0+aW4oKS5mb3JF
YWNoU2V0Qml0KFsmXSh1bnNpZ25lZCBsb2NhbCkgewotICAgICAgICAgICAgZnVuY3Rvcihjb2Rl
QmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwobG9j
YWwpLm9mZnNldCgpKTsKLSAgICAgICAgfSk7CisgICAgICAgIGlmIChieXRlY29kZUFuYWx5c2lz
TW9kZSA9PSBCeXRlY29kZUFuYWx5c2lzTW9kZTo6RXh0cmFjdEdlbmVyYXRvckxpdmVDYWxsZWVM
b2NhbHMpIHsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGJsb2NrLT5zdWNjZXNzb3JzKCku
c2l6ZSgpID09IDEpOworICAgICAgICAgICAgYmxvY2stPnN1Y2Nlc3NvcnMoKVswXS0+aW4oKS5m
b3JFYWNoU2V0Qml0KFsmXSh1bnNpZ25lZCBsb2NhbCkgeworICAgICAgICAgICAgICAgIGZ1bmN0
b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIHZpcnR1YWxSZWdpc3RlckZvckxv
Y2FsKGxvY2FsKS5vZmZzZXQoKSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9IGluc3RydWN0aW9u
WzJdLnUudW5zaWduZWRWYWx1ZTsKKyAgICAgICAgICAgIGNvbnN0IEZhc3RCaXRWZWN0b3ImIGxp
dmVuZXNzID0gY29kZUJsb2NrLT5saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZChsaXZlQ2FsbGVlTG9j
YWxzSW5kZXgpOworICAgICAgICAgICAgbGl2ZW5lc3MuZm9yRWFjaFNldEJpdChbJl0odW5zaWdu
ZWQgbG9jYWwpIHsKKyAgICAgICAgICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rp
b24sIG9wY29kZUlELCB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChsb2NhbCkub2Zmc2V0KCkpOwor
ICAgICAgICAgICAgfSk7CisgICAgICAgIH0KICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IDU5
MDVlOTE4M2M4ZjEyNjY0ZTJiYTNkZDI5YTVjNDY1Njc2OGRjMDMuLmRkYThkMWUxYjllMGFhMDY2
MDY3M2U3YTYzNzBjZWNjZjJiMDc4NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suY3BwCkBAIC0xNTU3LDI0ICsxNTU3LDMyIEBAIHZvaWQgQ29kZUJsb2Nr
OjpkdW1wQnl0ZWNvZGUoCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBj
YXNlIG9wX3NhdmU6IHsKLSAgICAgICAgICAgIGludCBnZW5lcmF0b3IgPSAoKytpdCktPnUub3Bl
cmFuZDsKKyAgICAgICAgICAgIGludCBmcmFtZSA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAg
ICAgICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gKCsraXQpLT51LnVuc2lnbmVk
VmFsdWU7CiAgICAgICAgICAgICBpbnQgb2Zmc2V0ID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAg
ICAgICAgICBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlbmVzcyA9IG1fcmFyZURhdGEtPm1fbGl2
ZUNhbGxlZUxvY2Fsc0F0WWllbGRbbGl2ZUNhbGxlZUxvY2Fsc0luZGV4XTsKICAgICAgICAgICAg
IHByaW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgInNhdmUiKTsKLSAg
ICAgICAgICAgIG91dC5wcmludGYoIiVzLCAiLCByZWdpc3Rlck5hbWUoZ2VuZXJhdG9yKS5kYXRh
KCkpOworICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICIsIHJlZ2lzdGVyTmFtZShmcmFtZSku
ZGF0YSgpKTsKICAgICAgICAgICAgIGxpdmVuZXNzLmR1bXAob3V0KTsKICAgICAgICAgICAgIG91
dC5wcmludGYoIihAbGl2ZSUxdSksICVkKC0+JWQpIiwgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4LCBv
ZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAgICAgICAgIGNhc2Ugb3BfcmVzdW1lOiB7Ci0gICAgICAgICAgICBpbnQgZ2VuZXJhdG9yID0g
KCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBpbnQgZnJhbWUgPSAoKytpdCktPnUub3Bl
cmFuZDsKICAgICAgICAgICAgIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9ICgrK2l0
KS0+dS51bnNpZ25lZFZhbHVlOworICAgICAgICAgICAgdW5zaWduZWQgbWF4TGl2ZUNhbGxlZXMg
PSAoKytpdCktPnUudW5zaWduZWRWYWx1ZTsKICAgICAgICAgICAgIGNvbnN0IEZhc3RCaXRWZWN0
b3ImIGxpdmVuZXNzID0gbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZFtsaXZl
Q2FsbGVlTG9jYWxzSW5kZXhdOwogICAgICAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwg
ZXhlYywgbG9jYXRpb24sIGl0LCAicmVzdW1lIik7Ci0gICAgICAgICAgICBvdXQucHJpbnRmKCIl
cywgIiwgcmVnaXN0ZXJOYW1lKGdlbmVyYXRvcikuZGF0YSgpKTsKKyAgICAgICAgICAgIG91dC5w
cmludGYoIiVzLCAiLCByZWdpc3Rlck5hbWUoZnJhbWUpLmRhdGEoKSk7CiAgICAgICAgICAgICBs
aXZlbmVzcy5kdW1wKG91dCk7Ci0gICAgICAgICAgICBvdXQucHJpbnRmKCIoQGxpdmUlMXUpIiwg
bGl2ZUNhbGxlZUxvY2Fsc0luZGV4KTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIihAbGl2ZSUx
dSksICV1IiwgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4LCBtYXhMaXZlQ2FsbGVlcyk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIG9wX25ld19nZW5lcmF0b3JfZnJh
bWU6IHsKKyAgICAgICAgICAgIGludCBkc3QgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAg
ICAgIHVuc2lnbmVkIGdlbmVyYXRvckxvY2Fsc1NpemUgPSAoKytpdCktPnUudW5zaWduZWRWYWx1
ZTsKKyAgICAgICAgICAgIHByaW50TG9jYXRpb25PcEFuZFJlZ2lzdGVyT3BlcmFuZChvdXQsIGV4
ZWMsIGxvY2F0aW9uLCBpdCwgIm5ld19nZW5lcmF0b3JfZnJhbWUiLCBkc3QpOworICAgICAgICAg
ICAgb3V0LnByaW50ZigiICV1IiwgZ2VuZXJhdG9yTG9jYWxzU2l6ZSk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2Fzc2VydDogewpAQCAtMTg0Nyw2ICsx
ODU1LDEyIEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIENvcHlQYXJz
ZWRCbG9ja1RhZywgQ29kZUJsb2NrJiBvdGhlcikKICAgICBzZXROdW1QYXJhbWV0ZXJzKHVubGlu
a2VkQ29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpOwogfQogCitzdHJ1Y3QgR2VuZXJhdG9yUG9p
bnRzIHsKKyAgICBzaXplX3Qgc2F2ZVBvaW50OworICAgIHNpemVfdCBtZXJnZVBvaW50OworICAg
IHNpemVfdCByZXN1bWVQb2ludDsKK307CisKIHZvaWQgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlv
bihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rZWRDb2Rl
QmxvY2sqIHVubGlua2VkQ29kZUJsb2NrLAogICAgIEpTU2NvcGUqIHNjb3BlKQogewpAQCAtMTk4
MCw5ICsxOTk0LDEwIEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNj
cmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAgSGFzaFNldDxKU01v
ZHVsZUVudmlyb25tZW50Kj4gc3Ryb25nbHlSZWZlcmVuY2VkTW9kdWxlRW52aXJvbm1lbnRzOwog
CiAgICAgLy8gQm9va2tlZXAgdGhlIG1lcmdlIHBvaW50IGJ5dGVjb2RlIG9mZnNldHMuCi0gICAg
VmVjdG9yPHNpemVfdD4gbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0czsKKyAgICBWZWN0b3I8R2Vu
ZXJhdG9yUG9pbnRzPiBnZW5lcmF0b3JQb2ludHNWZWN0b3I7CiAKICAgICBSZWZDb3VudGVkQXJy
YXk8SW5zdHJ1Y3Rpb24+IGluc3RydWN0aW9ucyhpbnN0cnVjdGlvbkNvdW50KTsKKyAgICB1bnNp
Z25lZCBuZXdHZW5lcmF0b3JGcmFtZUluc3RydWN0aW9uT2Zmc2V0ID0gMDsKIAogICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7ICFpbnN0cnVjdGlvblJlYWRlci5hdEVuZCgpOyApIHsKICAgICAgICAg
Y29uc3QgVW5saW5rZWRJbnN0cnVjdGlvbiogcGMgPSBpbnN0cnVjdGlvblJlYWRlci5uZXh0KCk7
CkBAIC0yMjczLDkgKzIyODgsMjMgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZN
JiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICAgICAg
Y2FzZSBvcF9zYXZlOiB7CiAgICAgICAgICAgICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5k
ZXggPSBwY1syXS51LmluZGV4OwogICAgICAgICAgICAgaW50IG9mZnNldCA9IHBjWzNdLnUub3Bl
cmFuZDsKLSAgICAgICAgICAgIGlmIChsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPj0gbWVyZ2VQb2lu
dEJ5dGVjb2RlT2Zmc2V0cy5zaXplKCkpCi0gICAgICAgICAgICAgICAgbWVyZ2VQb2ludEJ5dGVj
b2RlT2Zmc2V0cy5yZXNpemUobGl2ZUNhbGxlZUxvY2Fsc0luZGV4ICsgMSk7Ci0gICAgICAgICAg
ICBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXRzW2xpdmVDYWxsZWVMb2NhbHNJbmRleF0gPSBpICsg
b2Zmc2V0OworICAgICAgICAgICAgaWYgKGxpdmVDYWxsZWVMb2NhbHNJbmRleCA+PSBnZW5lcmF0
b3JQb2ludHNWZWN0b3Iuc2l6ZSgpKQorICAgICAgICAgICAgICAgIGdlbmVyYXRvclBvaW50c1Zl
Y3Rvci5yZXNpemUobGl2ZUNhbGxlZUxvY2Fsc0luZGV4ICsgMSk7CisgICAgICAgICAgICBnZW5l
cmF0b3JQb2ludHNWZWN0b3JbbGl2ZUNhbGxlZUxvY2Fsc0luZGV4XS5zYXZlUG9pbnQgPSBpOwor
ICAgICAgICAgICAgZ2VuZXJhdG9yUG9pbnRzVmVjdG9yW2xpdmVDYWxsZWVMb2NhbHNJbmRleF0u
bWVyZ2VQb2ludCA9IGkgKyBvZmZzZXQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor
CisgICAgICAgIGNhc2Ugb3BfcmVzdW1lOiB7CisgICAgICAgICAgICB1bnNpZ25lZCBsaXZlQ2Fs
bGVlTG9jYWxzSW5kZXggPSBwY1syXS51LmluZGV4OworICAgICAgICAgICAgaWYgKGxpdmVDYWxs
ZWVMb2NhbHNJbmRleCA+PSBnZW5lcmF0b3JQb2ludHNWZWN0b3Iuc2l6ZSgpKQorICAgICAgICAg
ICAgICAgIGdlbmVyYXRvclBvaW50c1ZlY3Rvci5yZXNpemUobGl2ZUNhbGxlZUxvY2Fsc0luZGV4
ICsgMSk7CisgICAgICAgICAgICBnZW5lcmF0b3JQb2ludHNWZWN0b3JbbGl2ZUNhbGxlZUxvY2Fs
c0luZGV4XS5yZXN1bWVQb2ludCA9IGk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor
CisgICAgICAgIGNhc2Ugb3BfbmV3X2dlbmVyYXRvcl9mcmFtZTogeworICAgICAgICAgICAgbmV3
R2VuZXJhdG9yRnJhbWVJbnN0cnVjdGlvbk9mZnNldCA9IGk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogCkBAIC0yMjg1LDI1ICsyMzE0LDMxIEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5p
c2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5s
aW5rCiAgICAgICAgIGkgKz0gb3BMZW5ndGg7CiAgICAgfQogCi0gICAgaWYgKHZtLmNvbnRyb2xG
bG93UHJvZmlsZXIoKSkKLSAgICAgICAgaW5zZXJ0QmFzaWNCbG9ja0JvdW5kYXJpZXNGb3JDb250
cm9sRmxvd1Byb2ZpbGVyKGluc3RydWN0aW9ucyk7Ci0KICAgICBtX2luc3RydWN0aW9ucyA9IFdU
Rk1vdmUoaW5zdHJ1Y3Rpb25zKTsKIAogICAgIC8vIFBlcmZvcm0gYnl0ZWNvZGUgbGl2ZW5lc3Mg
YW5hbHlzaXMgdG8gZGV0ZXJtaW5lIHdoaWNoIGxvY2FscyBhcmUgbGl2ZSBhbmQgc2hvdWxkIGJl
IHJlc3VtZWQgd2hlbiBleGVjdXRpbmcgb3BfcmVzdW1lLgogICAgIGlmICh1bmxpbmtlZENvZGVC
bG9jay0+cGFyc2VNb2RlKCkgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JCb2R5TW9kZSkg
ewotICAgICAgICBpZiAoc2l6ZV90IGNvdW50ID0gbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0cy5z
aXplKCkpIHsKKyAgICAgICAgdW5zaWduZWQgbWF4R2VuZXJhdG9yTG9jYWxzU2l6ZSA9IDA7Cisg
ICAgICAgIGlmIChzaXplX3QgY291bnQgPSBnZW5lcmF0b3JQb2ludHNWZWN0b3Iuc2l6ZSgpKSB7
CiAgICAgICAgICAgICBjcmVhdGVSYXJlRGF0YUlmTmVjZXNzYXJ5KCk7Ci0gICAgICAgICAgICBC
eXRlY29kZUxpdmVuZXNzQW5hbHlzaXMgbGl2ZW5lc3ModGhpcyk7CiAgICAgICAgICAgICBtX3Jh
cmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkLmdyb3coY291bnQpOwotICAgICAgICAg
ICAgc2l6ZV90IGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9IDA7Ci0gICAgICAgICAgICBmb3IgKHNp
emVfdCBieXRlY29kZU9mZnNldCA6IG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldHMpIHsKLSAgICAg
ICAgICAgICAgICBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkW2xpdmVDYWxs
ZWVMb2NhbHNJbmRleF0gPSBsaXZlbmVzcy5nZXRMaXZlbmVzc0luZm9BdEJ5dGVjb2RlT2Zmc2V0
KGJ5dGVjb2RlT2Zmc2V0KTsKLSAgICAgICAgICAgICAgICArK2xpdmVDYWxsZWVMb2NhbHNJbmRl
eDsKKworICAgICAgICAgICAgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzIGxpdmVuZXNzKHRoaXMs
IEJ5dGVjb2RlQW5hbHlzaXNNb2RlOjpFeHRyYWN0R2VuZXJhdG9yTGl2ZUNhbGxlZUxvY2Fscyk7
CisgICAgICAgICAgICBmb3IgKHNpemVfdCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSAwOyBsaXZl
Q2FsbGVlTG9jYWxzSW5kZXggPCBnZW5lcmF0b3JQb2ludHNWZWN0b3Iuc2l6ZSgpOyArK2xpdmVD
YWxsZWVMb2NhbHNJbmRleCkgeworICAgICAgICAgICAgICAgIGNvbnN0IEdlbmVyYXRvclBvaW50
cyYgcG9pbnRzID0gZ2VuZXJhdG9yUG9pbnRzVmVjdG9yW2xpdmVDYWxsZWVMb2NhbHNJbmRleF07
CisgICAgICAgICAgICAgICAgc2l6ZV90IG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldCA9IHBvaW50
cy5tZXJnZVBvaW50OworICAgICAgICAgICAgICAgIEZhc3RCaXRWZWN0b3IgbGl2ZW5lc3NWZWN0
b3IgPSBsaXZlbmVzcy5nZXRMaXZlbmVzc0luZm9BdEJ5dGVjb2RlT2Zmc2V0KG1lcmdlUG9pbnRC
eXRlY29kZU9mZnNldCk7CisgICAgICAgICAgICAgICAgbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVl
TG9jYWxzQXRZaWVsZFtsaXZlQ2FsbGVlTG9jYWxzSW5kZXhdID0gbGl2ZW5lc3NWZWN0b3I7Cisg
ICAgICAgICAgICAgICAgbWF4R2VuZXJhdG9yTG9jYWxzU2l6ZSA9IHN0ZDo6bWF4PHVuc2lnbmVk
PihtYXhHZW5lcmF0b3JMb2NhbHNTaXplLCBsaXZlbmVzc1ZlY3Rvci5iaXRDb3VudCgpKTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgfQorICAgICAgICAvLyBGaWxsIG9wX25ld19nZW5lcmF0b3Jf
ZnJhbWUncyBzaXplLgorICAgICAgICBtX2luc3RydWN0aW9uc1tuZXdHZW5lcmF0b3JGcmFtZUlu
c3RydWN0aW9uT2Zmc2V0ICsgMl0udS51bnNpZ25lZFZhbHVlID0gbWF4R2VuZXJhdG9yTG9jYWxz
U2l6ZTsKICAgICB9CiAKKyAgICBpZiAodm0uY29udHJvbEZsb3dQcm9maWxlcigpKQorICAgICAg
ICBpbnNlcnRCYXNpY0Jsb2NrQm91bmRhcmllc0ZvckNvbnRyb2xGbG93UHJvZmlsZXIobV9pbnN0
cnVjdGlvbnMpOworCiAgICAgLy8gU2V0IG9wdGltaXphdGlvbiB0aHJlc2hvbGRzIG9ubHkgYWZ0
ZXIgbV9pbnN0cnVjdGlvbnMgaXMgaW5pdGlhbGl6ZWQsIHNpbmNlIHRoZXNlCiAgICAgLy8gcmVs
eSBvbiB0aGUgaW5zdHJ1Y3Rpb24gY291bnQgKGFuZCBhcmUgaW4gdGhlb3J5IHBlcm1pdHRlZCB0
byBhbHNvIGluc3BlY3QgdGhlCiAgICAgLy8gaW5zdHJ1Y3Rpb24gc3RyZWFtIHRvIG1vcmUgYWNj
dXJhdGUgYXNzZXNzIHRoZSBjb3N0IG9mIHRpZXItdXApLgpAQCAtNDEyMiw3ICs0MTU3LDcgQEAg
VmFsdWVQcm9maWxlKiBDb2RlQmxvY2s6OnZhbHVlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KGlu
dCBieXRlY29kZU9mZnNldCkKIAogdm9pZCBDb2RlQmxvY2s6OnZhbGlkYXRlKCkKIHsKLSAgICBC
eXRlY29kZUxpdmVuZXNzQW5hbHlzaXMgbGl2ZW5lc3ModGhpcyk7IC8vIENvbXB1dGUgZGlyZWN0
bHkgZnJvbSBzY3JhdGNoIHNvIGl0IGRvZXNuJ3QgZWZmZWN0IENvZGVCbG9jayBmb290cHJpbnQu
CisgICAgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzIGxpdmVuZXNzKHRoaXMsIEJ5dGVjb2RlQW5h
bHlzaXNNb2RlOjpTdGFuZGFyZCk7IC8vIENvbXB1dGUgZGlyZWN0bHkgZnJvbSBzY3JhdGNoIHNv
IGl0IGRvZXNuJ3QgZWZmZWN0IENvZGVCbG9jayBmb290cHJpbnQuCiAgICAgCiAgICAgRmFzdEJp
dFZlY3RvciBsaXZlQXRIZWFkID0gbGl2ZW5lc3MuZ2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29kZU9m
ZnNldCgwKTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2su
aAppbmRleCA5OWJmYjA0NWQ5NmFlYmIyMDQ1ODFjNTEzYzdmN2RhZDljOGI4NDNiLi4yZDhhZmMx
M2UwYjUyYmI3ZGI0ZjEwZjJjNjJiNzY4YTgxZWE5OTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCkBAIC02MjMsNyArNjIzLDcgQEAgY2xhc3MgQ29kZUJs
b2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgICAgICAgICAgICAgcmV0dXJuICptX2xpdmVuZXNz
QW5hbHlzaXM7CiAgICAgICAgIH0KICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlTGl2
ZW5lc3NBbmFseXNpcz4gYW5hbHlzaXMgPQotICAgICAgICAgICAgc3RkOjptYWtlX3VuaXF1ZTxC
eXRlY29kZUxpdmVuZXNzQW5hbHlzaXM+KHRoaXMpOworICAgICAgICAgICAgc3RkOjptYWtlX3Vu
aXF1ZTxCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM+KHRoaXMsIEJ5dGVjb2RlQW5hbHlzaXNNb2Rl
OjpTdGFuZGFyZCk7CiAgICAgICAgIHsKICAgICAgICAgICAgIENvbmN1cnJlbnRKSVRMb2NrZXIg
bG9ja2VyKG1fbG9jayk7CiAgICAgICAgICAgICBpZiAoIW1fbGl2ZW5lc3NBbmFseXNpcykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdl
dHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0
cy5jcHAKaW5kZXggZTJjYjAwMDQ4Mzc5NGJhOTJkNTEwZGNmNWZhOTk0ODg1YTIzZGMzZC4uYjAy
OThlNDMxMzhlYzBmNGZmZjkzYTQ3YTJhOGY1YTBmZjY4NGM4OSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5jcHAKQEAgLTMx
LDcgKzMxLDcgQEAKIG5hbWVzcGFjZSBKU0MgewogCiB0ZW1wbGF0ZSA8c2l6ZV90IHZlY3RvclNp
emU+Ci1zdGF0aWMgdm9pZCBnZXRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9j
ayogY29kZUJsb2NrLCBJbnRlcnByZXRlciogaW50ZXJwcmV0ZXIsIEluc3RydWN0aW9uKiBpbnN0
cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIFZlY3Rvcjx1bnNpZ25lZCwg
dmVjdG9yU2l6ZT4mIG91dCkKK3N0YXRpYyB2b2lkIGdldEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVP
ZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQW5hbHlzaXNNb2RlIGJ5dGVjb2Rl
QW5hbHlzaXNNb2RlLCBJbnRlcnByZXRlciogaW50ZXJwcmV0ZXIsIEluc3RydWN0aW9uKiBpbnN0
cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIFZlY3Rvcjx1bnNpZ25lZCwg
dmVjdG9yU2l6ZT4mIG91dCkKIHsKICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGludGVycHJldGVy
LT5nZXRPcGNvZGVJRChpbnN0cnVjdGlvbnNCZWdpbltieXRlY29kZU9mZnNldF0udS5vcGNvZGUp
OwogICAgIEluc3RydWN0aW9uKiBjdXJyZW50ID0gaW5zdHJ1Y3Rpb25zQmVnaW4gKyBieXRlY29k
ZU9mZnNldDsKQEAgLTU0LDkgKzU0LDE0IEBAIHN0YXRpYyB2b2lkIGdldEp1bXBUYXJnZXRzRm9y
Qnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEludGVycHJldGVyKiBpCiAgICAg
Y2FzZSBvcF9qbmxlc3NlcToKICAgICBjYXNlIG9wX2puZ3JlYXRlcjoKICAgICBjYXNlIG9wX2pu
Z3JlYXRlcmVxOgotICAgIGNhc2Ugb3Bfc2F2ZTogLy8gVGhlIGp1bXAgb2Ygb3Bfc2F2ZSBpcyBw
dXJlbHkgZm9yIGNhbGN1bGF0aW5nIGxpdmVuZXNzLgogICAgICAgICBvdXQuYXBwZW5kKGJ5dGVj
b2RlT2Zmc2V0ICsgY3VycmVudFszXS51Lm9wZXJhbmQpOwogICAgICAgICBicmVhazsKKyAgICBj
YXNlIG9wX3NhdmU6IHsKKyAgICAgICAgLy8gVGhlIGp1bXAgb2Ygb3Bfc2F2ZSB1bmRlciBFeHRy
YWN0R2VuZXJhdG9yTGl2ZUNhbGxlZUxvY2FscyBtb2RlIGlzIHB1cmVseSBmb3IgY2FsY3VsYXRp
bmcgbGl2ZW5lc3MuCisgICAgICAgIGlmIChieXRlY29kZUFuYWx5c2lzTW9kZSA9PSBCeXRlY29k
ZUFuYWx5c2lzTW9kZTo6RXh0cmFjdEdlbmVyYXRvckxpdmVDYWxsZWVMb2NhbHMpCisgICAgICAg
ICAgICBvdXQuYXBwZW5kKGJ5dGVjb2RlT2Zmc2V0ICsgY3VycmVudFszXS51Lm9wZXJhbmQpOwor
ICAgICAgICBicmVhazsKKyAgICB9CiAgICAgY2FzZSBvcF9zd2l0Y2hfaW1tOgogICAgIGNhc2Ug
b3Bfc3dpdGNoX2NoYXI6IHsKICAgICAgICAgU2ltcGxlSnVtcFRhYmxlJiB0YWJsZSA9IGNvZGVC
bG9jay0+c3dpdGNoSnVtcFRhYmxlKGN1cnJlbnRbMV0udS5vcGVyYW5kKTsKQEAgLTgyLDcgKzg3
LDcgQEAgc3RhdGljIHZvaWQgZ2V0SnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgSW50ZXJwcmV0ZXIqIGkKICAgICB9CiB9CiAKLXZvaWQgY29tcHV0ZVBy
ZWNpc2VKdW1wVGFyZ2V0cyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgVmVjdG9yPHVuc2lnbmVkLCAz
Mj4mIG91dCkKK3ZvaWQgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhDb2RlQmxvY2sqIGNvZGVC
bG9jaywgQnl0ZWNvZGVBbmFseXNpc01vZGUgYnl0ZWNvZGVBbmFseXNpc01vZGUsIFZlY3Rvcjx1
bnNpZ25lZCwgMzI+JiBvdXQpCiB7CiAgICAgQVNTRVJUKG91dC5pc0VtcHR5KCkpOwogICAgIApA
QCAtMTAyLDcgKzEwNyw3IEBAIHZvaWQgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgVmVjdG9yPHVuc2lnbmVkLCAzMj4mIG91dCkKICAgICB1bnNpZ25lZCBp
bnN0cnVjdGlvbkNvdW50ID0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5zaXplKCk7CiAgICAg
Zm9yICh1bnNpZ25lZCBieXRlY29kZU9mZnNldCA9IDA7IGJ5dGVjb2RlT2Zmc2V0IDwgaW5zdHJ1
Y3Rpb25Db3VudDspIHsKICAgICAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnRlcnByZXRlci0+
Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25zQmVnaW5bYnl0ZWNvZGVPZmZzZXRdLnUub3Bjb2RlKTsK
LSAgICAgICAgZ2V0SnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChjb2RlQmxvY2ssIGludGVy
cHJldGVyLCBpbnN0cnVjdGlvbnNCZWdpbiwgYnl0ZWNvZGVPZmZzZXQsIG91dCk7CisgICAgICAg
IGdldEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoY29kZUJsb2NrLCBieXRlY29kZUFuYWx5
c2lzTW9kZSwgaW50ZXJwcmV0ZXIsIGluc3RydWN0aW9uc0JlZ2luLCBieXRlY29kZU9mZnNldCwg
b3V0KTsKICAgICAgICAgYnl0ZWNvZGVPZmZzZXQgKz0gb3Bjb2RlTGVuZ3Roc1tvcGNvZGVJRF07
CiAgICAgfQogICAgIApAQCAtMTIzLDExICsxMjgsMTEgQEAgdm9pZCBjb21wdXRlUHJlY2lzZUp1
bXBUYXJnZXRzKENvZGVCbG9jayogY29kZUJsb2NrLCBWZWN0b3I8dW5zaWduZWQsIDMyPiYgb3V0
KQogICAgIG91dC5zaHJpbmtUb0ZpdCgpOwogfQogCi12b2lkIGZpbmRKdW1wVGFyZ2V0c0ZvckJ5
dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9mZnNl
dCwgVmVjdG9yPHVuc2lnbmVkLCAxPiYgb3V0KQordm9pZCBmaW5kSnVtcFRhcmdldHNGb3JCeXRl
Y29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVBbmFseXNpc01vZGUgYnl0
ZWNvZGVBbmFseXNpc01vZGUsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBWZWN0b3I8dW5zaWdu
ZWQsIDE+JiBvdXQpCiB7CiAgICAgSW50ZXJwcmV0ZXIqIGludGVycHJldGVyID0gY29kZUJsb2Nr
LT52bSgpLT5pbnRlcnByZXRlcjsKICAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4g
PSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCk7Ci0gICAgZ2V0SnVtcFRhcmdldHNG
b3JCeXRlY29kZU9mZnNldChjb2RlQmxvY2ssIGludGVycHJldGVyLCBpbnN0cnVjdGlvbnNCZWdp
biwgYnl0ZWNvZGVPZmZzZXQsIG91dCk7CisgICAgZ2V0SnVtcFRhcmdldHNGb3JCeXRlY29kZU9m
ZnNldChjb2RlQmxvY2ssIGJ5dGVjb2RlQW5hbHlzaXNNb2RlLCBpbnRlcnByZXRlciwgaW5zdHJ1
Y3Rpb25zQmVnaW4sIGJ5dGVjb2RlT2Zmc2V0LCBvdXQpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBK
U0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVt
cFRhcmdldHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRh
cmdldHMuaAppbmRleCA4NTI0MTNkNzdiNzk4OTg0YjI3Y2VmMGVkNjJiYzk0YzY4OWUyMTJjLi41
ODBhNzkyNTMyNmI3NDUzNDNiZDM4MTFhN2M1YTExOGE5OGZmZDI1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5oCkBAIC0zMSw5
ICszMSw5IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogLy8gUmV0dXJuIGEgc29ydGVkIGxpc3Qgb2Yg
Ynl0ZWNvZGUgaW5kZXggdGhhdCBhcmUgdGhlIGRlc3RpbmF0aW9uIG9mIGEganVtcC4KLXZvaWQg
Y29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhDb2RlQmxvY2sqLCBWZWN0b3I8dW5zaWduZWQsIDMy
PiYgb3V0KTsKK3ZvaWQgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhDb2RlQmxvY2sqLCBCeXRl
Y29kZUFuYWx5c2lzTW9kZSwgVmVjdG9yPHVuc2lnbmVkLCAzMj4mIG91dCk7CiAKLXZvaWQgZmlu
ZEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiwgdW5zaWduZWQgYnl0ZWNv
ZGVPZmZzZXQsIFZlY3Rvcjx1bnNpZ25lZCwgMT4mIG91dCk7Cit2b2lkIGZpbmRKdW1wVGFyZ2V0
c0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayosIEJ5dGVjb2RlQW5hbHlzaXNNb2RlLCB1bnNp
Z25lZCBieXRlY29kZU9mZnNldCwgVmVjdG9yPHVuc2lnbmVkLCAxPiYgb3V0KTsKIAogfSAvLyBu
YW1lc3BhY2UgSlNDCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXggZDE1ZTIyNDM1MjY2ZmUxYWZmM2Q1
Zjc5YTFkZGE3NWI5YmRhZjNmMy4uMmVmMWI1NmNhMzU0MzdiODMxNzU0MjdhNmQ4MmIxMmQ5ODVl
MGQ0NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTI1Nyw3ICsyNTcsNyBAQCBQYXJzZXJFcnJvciBC
eXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUoKQogICAgICAgICAvLyAgICBmdW5jdGlvbiAqZ2Vu
KGEsIGIgPSBoZWxsbygpKQogICAgICAgICAvLyAgICB7CiAgICAgICAgIC8vICAgICAgICByZXR1
cm4gewotICAgICAgICAvLyAgICAgICAgICAgIEBnZW5lcmF0b3JOZXh0OiBmdW5jdGlvbiAoQGdl
bmVyYXRvciwgQGdlbmVyYXRvclN0YXRlLCBAZ2VuZXJhdG9yVmFsdWUsIEBnZW5lcmF0b3JSZXN1
bWVNb2RlKQorICAgICAgICAvLyAgICAgICAgICAgIEBnZW5lcmF0b3JOZXh0OiBmdW5jdGlvbiAo
QGdlbmVyYXRvciwgQGdlbmVyYXRvclN0YXRlLCBAZ2VuZXJhdG9yVmFsdWUsIEBnZW5lcmF0b3JS
ZXN1bWVNb2RlLCBAZ2VuZXJhdG9yRnJhbWUpCiAgICAgICAgIC8vICAgICAgICAgICAgewogICAg
ICAgICAvLyAgICAgICAgICAgICAgICBhcmd1bWVudHM7ICAvLyBUaGlzIGBhcmd1bWVudHNgIHNo
b3VsZCByZWZlcmVuY2UgdG8gdGhlIGdlbidzIGFyZ3VtZW50cy4KICAgICAgICAgLy8gICAgICAg
ICAgICAgICAgLi4uCkBAIC01MzcsNiArNTM3LDkgQEAgUGFyc2VyRXJyb3IgQnl0ZWNvZGVHZW5l
cmF0b3I6OmdlbmVyYXRlKCkKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yQm9k
eU1vZGU6IHsKICAgICAgICAgLy8gfHRoaXN8IGlzIGFscmVhZHkgZmlsbGVkIGNvcnJlY3RseSBi
ZWZvcmUgaGVyZS4KICAgICAgICAgZW1pdExvYWQobV9uZXdUYXJnZXRSZWdpc3RlciwganNVbmRl
ZmluZWQoKSk7CisKKyAgICAgICAgZW1pdE5ld0dlbmVyYXRvckZyYW1lKGdlbmVyYXRvckZyYW1l
UmVnaXN0ZXIoKSk7CisgICAgICAgIGVtaXRQdXRCeUlkKGdlbmVyYXRvclJlZ2lzdGVyKCksIHBy
b3BlcnR5TmFtZXMoKS5nZW5lcmF0b3JGcmFtZVByaXZhdGVOYW1lLCBnZW5lcmF0b3JGcmFtZVJl
Z2lzdGVyKCkpOwogICAgICAgICBicmVhazsKICAgICB9CiAKQEAgLTI3NDQsNiArMjc0NywxNCBA
QCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uKFJlZ2lzdGVy
SUQqIGRzdCwgRnVuY3Rpb25NZXRhZGF0YQogICAgIHJldHVybiBkc3Q7CiB9CiAKK1JlZ2lzdGVy
SUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3R2VuZXJhdG9yRnJhbWUoUmVnaXN0ZXJJRCog
ZHN0KQoreworICAgIGVtaXRPcGNvZGUob3BfbmV3X2dlbmVyYXRvcl9mcmFtZSk7CisgICAgaW5z
dHJ1Y3Rpb25zKCkuYXBwZW5kKGRzdC0+aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKDApOworICAgIHJldHVybiBkc3Q7Cit9CisKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0Q2FsbChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGZ1bmMsIEV4cGVjdGVk
RnVuY3Rpb24gZXhwZWN0ZWRGdW5jdGlvbiwgQ2FsbEFyZ3VtZW50cyYgY2FsbEFyZ3VtZW50cywg
Y29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RT
dGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKQogewogICAgIHJldHVybiBlbWl0
Q2FsbChvcF9jYWxsLCBkc3QsIGZ1bmMsIGV4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMs
IGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCk7CkBAIC00MTQ1LDcgKzQxNTYsNyBAQCB2b2lk
IEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0U2F2ZShMYWJlbCogbWVyZ2VQb2ludCwgdW5zaWduZWQg
bGl2ZUNhbGxlZUxvY2Fsc0luZAogewogICAgIHNpemVfdCBiZWdpbiA9IGluc3RydWN0aW9ucygp
LnNpemUoKTsKICAgICBlbWl0T3Bjb2RlKG9wX3NhdmUpOwotICAgIGluc3RydWN0aW9ucygpLmFw
cGVuZChtX2dlbmVyYXRvclJlZ2lzdGVyLT5pbmRleCgpKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5h
cHBlbmQoZ2VuZXJhdG9yRnJhbWVSZWdpc3RlcigpLT5pbmRleCgpKTsKICAgICBpbnN0cnVjdGlv
bnMoKS5hcHBlbmQobGl2ZUNhbGxlZUxvY2Fsc0luZGV4KTsKICAgICBpbnN0cnVjdGlvbnMoKS5h
cHBlbmQobWVyZ2VQb2ludC0+YmluZChiZWdpbiwgaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKSk7CiB9
CkBAIC00MTU0LDcgKzQxNjUsNyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzdW1l
KExhYmVsKiBtZXJnZVBvaW50LCB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSQogewogICAgIGVt
aXRHZW5lcmF0b3JTdGF0ZUxhYmVsKCk7CiAgICAgZW1pdE9wY29kZShvcF9yZXN1bWUpOwotICAg
IGluc3RydWN0aW9ucygpLmFwcGVuZChtX2dlbmVyYXRvclJlZ2lzdGVyLT5pbmRleCgpKTsKKyAg
ICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZ2VuZXJhdG9yRnJhbWVSZWdpc3RlcigpLT5pbmRleCgp
KTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobGl2ZUNhbGxlZUxvY2Fsc0luZGV4KTsKICAg
ICBlbWl0TGFiZWwobWVyZ2VQb2ludCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5kZXggN2QwYzIwYjZmNTE2
YTE3ZTg5M2YxYmJhMDgwM2MxMzMzZmZjOGQwZC4uM2QzMzQ3ODE1YWMzMGE4MmU2MjZlM2UwNzgw
ODFiZTJiM2U5YmUzZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAtNTIyLDYgKzUyMiw3IEBACiAgICAgICAg
IFJlZ2lzdGVySUQqIGVtaXROZXdEZWZhdWx0Q29uc3RydWN0b3IoUmVnaXN0ZXJJRCogZHN0LCBD
b25zdHJ1Y3RvcktpbmQsIGNvbnN0IElkZW50aWZpZXImIG5hbWUpOwogICAgICAgICBSZWdpc3Rl
cklEKiBlbWl0TmV3QXJyb3dGdW5jdGlvbkV4cHJlc3Npb24oUmVnaXN0ZXJJRCosIEFycm93RnVu
Y0V4cHJOb2RlKik7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdSZWdFeHAoUmVnaXN0ZXJJ
RCogZHN0LCBSZWdFeHAqKTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdE5ld0dlbmVyYXRvckZy
YW1lKFJlZ2lzdGVySUQqIGRzdCk7CiAKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdE1vdmVMaW5r
VGltZUNvbnN0YW50KFJlZ2lzdGVySUQqIGRzdCwgTGlua1RpbWVDb25zdGFudCk7CiAgICAgICAg
IFJlZ2lzdGVySUQqIGVtaXRNb3ZlRW1wdHlWYWx1ZShSZWdpc3RlcklEKiBkc3QpOwpAQCAtNjg0
LDYgKzY4NSw3IEBACiAgICAgICAgIFJlZ2lzdGVySUQqIGdlbmVyYXRvclN0YXRlUmVnaXN0ZXIo
KSB7IHJldHVybiAmbV9wYXJhbWV0ZXJzWzJdOyB9CiAgICAgICAgIFJlZ2lzdGVySUQqIGdlbmVy
YXRvclZhbHVlUmVnaXN0ZXIoKSB7IHJldHVybiAmbV9wYXJhbWV0ZXJzWzNdOyB9CiAgICAgICAg
IFJlZ2lzdGVySUQqIGdlbmVyYXRvclJlc3VtZU1vZGVSZWdpc3RlcigpIHsgcmV0dXJuICZtX3Bh
cmFtZXRlcnNbNF07IH0KKyAgICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9yRnJhbWVSZWdpc3Rl
cigpIHsgcmV0dXJuICZtX3BhcmFtZXRlcnNbNV07IH0KIAogICAgICAgICBDb2RlVHlwZSBjb2Rl
VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZVR5cGU7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEhlYXAuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQWJzdHJhY3RIZWFwLmgKaW5kZXggNGRlYzhmYTAzNzc2ZTAxZTZjZDM3NDYw
NjU5Y2M1NjExNjIzOGM2NS4uOWM4NmY2OTJiOGQzODVkOWViMjQ2OTdkNzkyNzlkZjZjZGY0NWNl
NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEhlYXAu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SGVhcC5oCkBAIC02
OCw2ICs2OCw4IEBACiAgICAgbWFjcm8oU2NvcGVQcm9wZXJ0aWVzKSBcCiAgICAgbWFjcm8oVHlw
ZWRBcnJheVByb3BlcnRpZXMpIFwKICAgICBtYWNybyhIZWFwT2JqZWN0Q291bnQpIC8qIFVzZWQg
dG8gcmVmbGVjdCB0aGUgZmFjdCB0aGF0IHNvbWUgYWxsb2NhdGlvbnMgcmV2ZWFsIG9iamVjdCBp
ZGVudGl0eSAqL1wKKyAgICBtYWNybyhHZW5lcmF0b3JMb2NhbHMpIFwKKyAgICBtYWNybyhHZW5l
cmF0b3JMb2NhbENvdW50KSBcCiAgICAgbWFjcm8oUmVnRXhwU3RhdGUpIFwKICAgICBtYWNybyhN
YXRoRG90UmFuZG9tU3RhdGUpIFwKICAgICBtYWNybyhJbnRlcm5hbFN0YXRlKSBcCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxp
bmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJ
bmxpbmVzLmgKaW5kZXggOWVlYzYzY2ViMDcxYmMxNDg2YTAxMmMyODUwMWRiNjI0MjZiZGU3Yi4u
NDFiMDRlYmVmMTE5N2NmZGYxNDg3MWExM2EyM2RkMjJiMWRkZDI5MCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGlu
ZXMuaApAQCAtMTY4Nyw2ICsxNjg3LDEwIEBACiAgICAgY2FzZSBOZXdSZWdleHA6CiAgICAgICAg
IGZvck5vZGUobm9kZSkuc2V0KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYyktPnJlZ0V4cFN0cnVjdHVyZSgpKTsKICAgICAgICAgYnJlYWs7CisK
KyAgICBjYXNlIE5ld0dlbmVyYXRvckZyYW1lOgorICAgICAgICBmb3JOb2RlKG5vZGUpLnNldCht
X2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5n
ZW5lcmF0b3JGcmFtZVN0cnVjdHVyZSgpKTsKKyAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAK
ICAgICBjYXNlIFRvVGhpczogewogICAgICAgICBBYnN0cmFjdFZhbHVlJiBzb3VyY2UgPSBmb3JO
b2RlKG5vZGUtPmNoaWxkMSgpKTsKQEAgLTI1MTAsNiArMjUxNCwxNyBAQAogICAgICAgICBmb3JO
b2RlKG5vZGUpLm1ha2VIZWFwVG9wKCk7CiAgICAgICAgIGJyZWFrOwogCisgICAgY2FzZSBTZXRH
ZW5lcmF0b3JMb2NhbDoKKyAgICBjYXNlIFJlc2l6ZUdlbmVyYXRvckxvY2FsczoKKyAgICAgICAg
YnJlYWs7CisKKyAgICBjYXNlIEdldEdlbmVyYXRvckxvY2FsOiB7CisgICAgICAgIC8vIEZJWE1F
OiBXZSBzaG91bGQgYXR0ZW1wdCB0byBjb252ZXJ0IGl0IHRvIGNvbnN0YW50LgorICAgICAgICAv
LyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUzMTgzCisgICAgICAg
IGZvck5vZGUobm9kZSkubWFrZUJ5dGVjb2RlVG9wKCk7CisgICAgICAgIGJyZWFrOworICAgIH0K
KwogICAgIGNhc2UgRm9yY2VPU1JFeGl0OgogICAgIGNhc2UgQ2hlY2tCYWRDZWxsOgogICAgICAg
ICBtX3N0YXRlLnNldElzVmFsaWQoZmFsc2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRleCAzNjQ0YTJmZDE5YTBkOWIzZGRhN2IwNjhh
MDA0OTBhNTgyNjIwODZkLi4xNzI3NGU1OTRiODA1NTVkY2YyOGUwOGRhMzE5NzliZTFhYmQ0ZmUw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2Vy
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNw
cApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIkRGR0FycmF5TW9kZS5oIgogI2luY2x1ZGUg
IkRGR0NhcGFiaWxpdGllcy5oIgogI2luY2x1ZGUgIkRGR0Nsb2JiZXJzRXhpdFN0YXRlLmgiCisj
aW5jbHVkZSAiREZHR2VuZXJhdG9yTG9jYWxEYXRhLmgiCiAjaW5jbHVkZSAiREZHR3JhcGguaCIK
ICNpbmNsdWRlICJERkdKSVRDb2RlLmgiCiAjaW5jbHVkZSAiR2V0QnlJZFN0YXR1cy5oIgpAQCAt
OTYzLDYgKzk2NCwxMSBAQCBjbGFzcyBCeXRlQ29kZVBhcnNlciB7CiAgICAgICAgIGZvciAoQXJn
dW1lbnRQb3NpdGlvbiogYXJndW1lbnQgOiBtX2lubGluZVN0YWNrVG9wLT5tX2FyZ3VtZW50UG9z
aXRpb25zKQogICAgICAgICAgICAgYXJndW1lbnQtPm1lcmdlU2hvdWxkTmV2ZXJVbmJveCh0cnVl
KTsKICAgICB9CisKKyAgICBHZW5lcmF0b3JMb2NhbERhdGEqIG5ld0dlbmVyYXRvckxvY2FsRGF0
YSgpCisgICAgeworICAgICAgICByZXR1cm4gbV9ncmFwaC5tX2dlbmVyYXRvckxvY2FsRGF0YS5h
ZGQoKTsKKyAgICB9CiAgICAgCiAgICAgVk0qIG1fdm07CiAgICAgQ29kZUJsb2NrKiBtX2NvZGVC
bG9jazsKQEAgLTEwNTEsNiArMTA1NywxMSBAQCBjbGFzcyBCeXRlQ29kZVBhcnNlciB7CiAgICAg
ICAgIENhbGxMaW5rSW5mb01hcCBtX2NhbGxMaW5rSW5mb3M7CiAgICAgICAgIFN0dWJJbmZvTWFw
IG1fc3R1YkluZm9zOwogICAgICAgICBCeVZhbEluZm9NYXAgbV9ieVZhbEluZm9zOworCisgICAg
ICAgIC8vIFNpbmNlIHRoZSBvcF9yZXN1bWUgaXMgZW1pdHRlZCBhZnRlciB0aGUgY29ycmVzcG9u
ZGluZyBvcF9zYXZlCisgICAgICAgIC8vIGFuZCB0aGVyZSBpcyBubyBvdGhlciBvcF9yZXN1bWUg
YW5kIG9wX3NhdmUgYmV0d2VlbiB0aGVtLAorICAgICAgICAvLyB3ZSBjYW4gdHJhY2sgdGhlc2Ug
Y29ycmVzcG9uZGVuY2UgYnkganVzdCB0cmFja2luZyBjdXJyZW50bHkgZm9jdXNpbmcgb3Bfc2F2
ZS4KKyAgICAgICAgT3BlcmFuZHM8R2VuZXJhdG9yTG9jYWxEYXRhKj4gbV9nZW5lcmF0b3JMb2Nh
bHM7CiAgICAgICAgIAogICAgICAgICAvLyBEaWQgd2Ugc2VlIGFueSByZXR1cm5zPyBXZSBuZWVk
IHRvIGhhbmRsZSB0aGUgKHVuY29tbW9uIGJ1dCBuZWNlc3NhcnkpCiAgICAgICAgIC8vIGNhc2Ug
d2hlcmUgYSBwcm9jZWR1cmUgdGhhdCBkb2VzIG5vdCByZXR1cm4gd2FzIGlubGluZWQuCkBAIC0z
MzQxLDYgKzMzNTIsMTEgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25l
ZCBsaW1pdCkKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX25ld19yZWdleHApOwogICAgICAg
ICB9CiAKKyAgICAgICAgY2FzZSBvcF9uZXdfZ2VuZXJhdG9yX2ZyYW1lOiB7CisgICAgICAgICAg
ICBzZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpLCBh
ZGRUb0dyYXBoKE5ld0dlbmVyYXRvckZyYW1lLCBPcEluZm8oY3VycmVudEluc3RydWN0aW9uWzJd
LnUudW5zaWduZWRWYWx1ZSkpKTsKKyAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX25ld19nZW5l
cmF0b3JfZnJhbWUpOworICAgICAgICB9CisKICAgICAgICAgY2FzZSBvcF9nZXRfcmVzdF9sZW5n
dGg6IHsKICAgICAgICAgICAgIElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lID0gdGhp
cy0+aW5saW5lQ2FsbEZyYW1lKCk7CiAgICAgICAgICAgICBOb2RlKiBsZW5ndGg7CkBAIC0zMzY4
LDYgKzMzODQsNDEgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBs
aW1pdCkKICAgICAgICAgICAgICAgICBhcnJheSwgYXJyYXlMZW5ndGgpOwogICAgICAgICAgICAg
TkVYVF9PUENPREUob3BfY29weV9yZXN0KTsKICAgICAgICAgfQorCisgICAgICAgIGNhc2Ugb3Bf
c2F2ZTogeworICAgICAgICAgICAgTm9kZSogZnJhbWUgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1
cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGxp
dmVDYWxsZWVMb2NhbHNJbmRleCA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51LnVuc2lnbmVkVmFs
dWU7CisgICAgICAgICAgICBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlbmVzcyA9IG1faW5saW5l
U3RhY2tUb3AtPm1fY29kZUJsb2NrLT5saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZChsaXZlQ2FsbGVl
TG9jYWxzSW5kZXgpOworCisgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2dlbmVyYXRv
ckxvY2FscyA9IE9wZXJhbmRzPEdlbmVyYXRvckxvY2FsRGF0YSo+KG1fbnVtQXJndW1lbnRzLCBt
X251bUxvY2Fscyk7CisKKyAgICAgICAgICAgIGFkZFRvR3JhcGgoUmVzaXplR2VuZXJhdG9yTG9j
YWxzLCBPcEluZm8obGl2ZW5lc3MuYml0Q291bnQoKSksIGZyYW1lKTsKKyAgICAgICAgICAgIHVu
c2lnbmVkIGdlbmVyYXRvckxvY2FsSW5kZXggPSAwOworICAgICAgICAgICAgbGl2ZW5lc3MuZm9y
RWFjaFNldEJpdChbJl0oc2l6ZV90IGluZGV4KSB7CisgICAgICAgICAgICAgICAgVmlydHVhbFJl
Z2lzdGVyIG9wZXJhbmQgPSB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChpbmRleCk7CisgICAgICAg
ICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHJlbWFwcGVkT3BlcmFuZCA9IG1faW5saW5lU3RhY2tU
b3AtPnJlbWFwT3BlcmFuZChvcGVyYW5kKTsKKyAgICAgICAgICAgICAgICBOb2RlKiBsb2NhbCA9
IGdldChvcGVyYW5kKTsKKyAgICAgICAgICAgICAgICBHZW5lcmF0b3JMb2NhbERhdGEqIGdlbmVy
YXRvckxvY2FsRGF0YSA9IG5ld0dlbmVyYXRvckxvY2FsRGF0YSgpOworICAgICAgICAgICAgICAg
IG1faW5saW5lU3RhY2tUb3AtPm1fZ2VuZXJhdG9yTG9jYWxzLmxvY2FsKHJlbWFwcGVkT3BlcmFu
ZC50b0xvY2FsKCkpID0gZ2VuZXJhdG9yTG9jYWxEYXRhOworICAgICAgICAgICAgICAgIGFkZFRv
R3JhcGgoU2V0R2VuZXJhdG9yTG9jYWwsIE9wSW5mbyhnZW5lcmF0b3JMb2NhbEluZGV4KyspLCBP
cEluZm8oZ2VuZXJhdG9yTG9jYWxEYXRhKSwgZnJhbWUsIGxvY2FsKTsKKyAgICAgICAgICAgIH0p
OworICAgICAgICAgICAgTkVYVF9PUENPREUob3Bfc2F2ZSk7CisgICAgICAgIH0KKworICAgICAg
ICBjYXNlIG9wX3Jlc3VtZTogeworICAgICAgICAgICAgTm9kZSogZnJhbWUgPSBnZXQoVmlydHVh
bFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpKTsKKyAgICAgICAgICAg
IHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51
LnVuc2lnbmVkVmFsdWU7CisgICAgICAgICAgICBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlbmVz
cyA9IG1faW5saW5lU3RhY2tUb3AtPm1fY29kZUJsb2NrLT5saXZlQ2FsbGVlTG9jYWxzQXRZaWVs
ZChsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpOworICAgICAgICAgICAgdW5zaWduZWQgZ2VuZXJhdG9y
TG9jYWxJbmRleCA9IDA7CisgICAgICAgICAgICBsaXZlbmVzcy5mb3JFYWNoU2V0Qml0KFsmXShz
aXplX3QgaW5kZXgpIHsKKyAgICAgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCA9
IHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGluZGV4KTsKKyAgICAgICAgICAgICAgICBWaXJ0dWFs
UmVnaXN0ZXIgcmVtYXBwZWRPcGVyYW5kID0gbV9pbmxpbmVTdGFja1RvcC0+cmVtYXBPcGVyYW5k
KG9wZXJhbmQpOworICAgICAgICAgICAgICAgIEdlbmVyYXRvckxvY2FsRGF0YSogZ2VuZXJhdG9y
TG9jYWxEYXRhID0gbV9pbmxpbmVTdGFja1RvcC0+bV9nZW5lcmF0b3JMb2NhbHMubG9jYWwocmVt
YXBwZWRPcGVyYW5kLnRvTG9jYWwoKSk7CisgICAgICAgICAgICAgICAgc2V0KG9wZXJhbmQsIGFk
ZFRvR3JhcGgoR2V0R2VuZXJhdG9yTG9jYWwsIE9wSW5mbyhnZW5lcmF0b3JMb2NhbEluZGV4Kysp
LCBPcEluZm8oZ2VuZXJhdG9yTG9jYWxEYXRhKSwgZnJhbWUpKTsKKyAgICAgICAgICAgIH0pOwor
ICAgICAgICAgICAgYWRkVG9HcmFwaChSZXNpemVHZW5lcmF0b3JMb2NhbHMsIE9wSW5mbygwKSwg
ZnJhbWUpOworICAgICAgICAgICAgTkVYVF9PUENPREUob3BfcmVzdW1lKTsKKyAgICAgICAgfQog
ICAgICAgICAgICAgCiAgICAgICAgIC8vID09PSBCaXR3aXNlIG9wZXJhdGlvbnMgPT09CiAKQEAg
LTQ5MTUsNyArNDk2Niw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQ29kZUJsb2NrKCkK
ICAgICB9CiAgICAgCiAgICAgVmVjdG9yPHVuc2lnbmVkLCAzMj4ganVtcFRhcmdldHM7Ci0gICAg
Y29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhjb2RlQmxvY2ssIGp1bXBUYXJnZXRzKTsKKyAgICBj
b21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKGNvZGVCbG9jaywgQnl0ZWNvZGVBbmFseXNpc01vZGU6
OlN0YW5kYXJkLCBqdW1wVGFyZ2V0cyk7CiAgICAgaWYgKE9wdGlvbnM6OmR1bXBCeXRlY29kZUF0
REZHVGltZSgpKSB7CiAgICAgICAgIGRhdGFMb2coIkp1bXAgdGFyZ2V0czogIik7CiAgICAgICAg
IENvbW1hUHJpbnRlciBjb21tYTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2Fw
YWJpbGl0aWVzLmNwcAppbmRleCBkMTAwZDk3ZDVjNjBlMjVhMDYwZmZkYTQ1NjYzYjNiOTQxNDM1
ZGM2Li4yZmRhYTIwYzgwYTc4YWQzZDJmYmZhMTg0MzhkOTVmY2U0YWZmNmUwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCkBAIC0xODEsNiArMTgx
LDcgQEAgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbChPcGNvZGVJRCBvcGNvZGVJRCwg
Q29kZUJsb2NrKiBjb2RlQmxvY2ssIEluc3RydWMKICAgICBjYXNlIG9wX25ld19hcnJheToKICAg
ICBjYXNlIG9wX25ld19hcnJheV93aXRoX3NpemU6CiAgICAgY2FzZSBvcF9uZXdfYXJyYXlfYnVm
ZmVyOgorICAgIGNhc2Ugb3BfbmV3X2dlbmVyYXRvcl9mcmFtZToKICAgICBjYXNlIG9wX3N0cmNh
dDoKICAgICBjYXNlIG9wX3RvX3ByaW1pdGl2ZToKICAgICBjYXNlIG9wX3Rocm93OgpAQCAtMjI0
LDYgKzIyNSw4IEBAIENhcGFiaWxpdHlMZXZlbCBjYXBhYmlsaXR5TGV2ZWwoT3Bjb2RlSUQgb3Bj
b2RlSUQsIENvZGVCbG9jayogY29kZUJsb2NrLCBJbnN0cnVjCiAgICAgY2FzZSBvcF9jYXRjaDoK
ICAgICBjYXNlIG9wX2NvcHlfcmVzdDoKICAgICBjYXNlIG9wX2dldF9yZXN0X2xlbmd0aDoKKyAg
ICBjYXNlIG9wX3NhdmU6CisgICAgY2FzZSBvcF9yZXN1bWU6CiAgICAgICAgIHJldHVybiBDYW5D
b21waWxlQW5kSW5saW5lOwogCiAgICAgY2FzZSBvcF9wdXRfdG9fc2NvcGU6IHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKaW5kZXggMzQzYTZkZTljMjkwOWI5M2Uw
NTI4Y2YwMjc4NGFhZDk0ZDAxYjRkMS4uNTllYzgyYmMyMGQzZjE2OGUyZjRiNWNiMGJlNmY1NWEy
YmY4ZGNjYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVy
aXplLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKQEAg
LTEwNDQsNiArMTA0NCw3IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5v
ZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAKICAgICBjYXNlIE5l
d09iamVjdDoKICAgICBjYXNlIE5ld1JlZ2V4cDoKKyAgICBjYXNlIE5ld0dlbmVyYXRvckZyYW1l
OgogICAgIGNhc2UgTmV3U3RyaW5nT2JqZWN0OgogICAgIGNhc2UgUGhhbnRvbU5ld09iamVjdDoK
ICAgICBjYXNlIE1hdGVyaWFsaXplTmV3T2JqZWN0OgpAQCAtMTExMSw2ICsxMTEyLDIzIEBAIHZv
aWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9y
JiByZWFkLCBjb25zdCBXcml0ZUZ1CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CisKKyAgICBjYXNlIFNldEdl
bmVyYXRvckxvY2FsOiB7CisgICAgICAgIHJlYWQoR2VuZXJhdG9yTG9jYWxDb3VudCk7CisgICAg
ICAgIHdyaXRlKEdlbmVyYXRvckxvY2Fscyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBjYXNlIEdldEdlbmVyYXRvckxvY2FsOiB7CisgICAgICAgIHJlYWQoR2VuZXJhdG9yTG9jYWxD
b3VudCk7CisgICAgICAgIHJlYWQoR2VuZXJhdG9yTG9jYWxzKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIGNhc2UgUmVzaXplR2VuZXJhdG9yTG9jYWxzOiB7CisgICAgICAgIHdyaXRl
KEdlbmVyYXRvckxvY2FsQ291bnQpOworICAgICAgICByZXR1cm47CisgICAgfQogICAgICAgICAK
ICAgICBjYXNlIFRocm93UmVmZXJlbmNlRXJyb3I6CiAgICAgICAgIHdyaXRlKFNpZGVTdGF0ZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJzRXhpdFN0
YXRlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcnNFeGl0U3RhdGUu
Y3BwCmluZGV4IDRlMGM1MDc3ODljZDdiM2ZmNDc3NTFmOTI1ZTc0ODNlNjFlMmRmNWIuLjkyODU1
MTI2Mjc4NTFkM2Y4M2YzN2YwMmFiZjBhM2I1ZWY2YmY1ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcnNFeGl0U3RhdGUuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcnNFeGl0U3RhdGUuY3BwCkBAIC01MywxMCArNTMs
MTYgQEAgYm9vbCBjbG9iYmVyc0V4aXRTdGF0ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAg
ICAgICAgIC8vIGV4aXQgc3RhdGUuCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAorICAgIGNhc2Ug
UmVzaXplR2VuZXJhdG9yTG9jYWxzOgorICAgIGNhc2UgU2V0R2VuZXJhdG9yTG9jYWw6CisgICAg
Y2FzZSBHZXRHZW5lcmF0b3JMb2NhbDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgY2Fz
ZSBBcnJheWlmeVRvU3RydWN0dXJlOgogICAgIGNhc2UgQXJyYXlpZnk6CiAgICAgY2FzZSBOZXdP
YmplY3Q6CiAgICAgY2FzZSBOZXdSZWdleHA6CisgICAgY2FzZSBOZXdHZW5lcmF0b3JGcmFtZToK
ICAgICBjYXNlIE5ld1N0cmluZ09iamVjdDoKICAgICBjYXNlIFBoYW50b21OZXdPYmplY3Q6CiAg
ICAgY2FzZSBNYXRlcmlhbGl6ZU5ld09iamVjdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
RG9lc0dDLmNwcAppbmRleCA3MDJkYTViZjFlN2MwZjFjOGZlNTVjNjQ4NDQ1OGZjYWQ4MWUyYWE1
Li5jZWI3ODYxYzdiMjdiNWU5Nzk3NzJiNmIzYjg3MDdiM2VlODkyYjEzIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCkBAIC0yMjksNiArMjI5LDkgQEAgYm9vbCBkb2Vz
R0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgR2V0RnJvbUFyZ3VtZW50czoK
ICAgICBjYXNlIFB1dFRvQXJndW1lbnRzOgogICAgIGNhc2UgQ29weVJlc3Q6CisgICAgY2FzZSBT
ZXRHZW5lcmF0b3JMb2NhbDoKKyAgICBjYXNlIEdldEdlbmVyYXRvckxvY2FsOgorICAgIGNhc2Ug
UmVzaXplR2VuZXJhdG9yTG9jYWxzOgogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBjYXNl
IENyZWF0ZUFjdGl2YXRpb246CkBAIC0yNDYsNiArMjQ5LDcgQEAgYm9vbCBkb2VzR0MoR3JhcGgm
IGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgTmV3QXJyYXlXaXRoU2l6ZToKICAgICBjYXNl
IE5ld0FycmF5QnVmZmVyOgogICAgIGNhc2UgTmV3UmVnZXhwOgorICAgIGNhc2UgTmV3R2VuZXJh
dG9yRnJhbWU6CiAgICAgY2FzZSBOZXdTdHJpbmdPYmplY3Q6CiAgICAgY2FzZSBNYWtlUm9wZToK
ICAgICBjYXNlIE5ld0Fycm93RnVuY3Rpb246CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdGaXh1cFBoYXNlLmNwcAppbmRleCBjOWQ1YWJmYjQ5NDgxYjkwNTg5ZWM0ZmJhNTk1YTJjZThl
NzBkZjY3Li4wMTVkZjUxZGMzN2JmYmY0NmJhYTkxZWM5YThjOGIwMTdlNWQ5MWE2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKQEAgLTE0MzAsNiArMTQz
MCwyNCBAQCBjbGFzcyBGaXh1cFBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CiAKKyAgICAgICAgY2FzZSBTZXRHZW5lcmF0b3JMb2NhbDogeworICAg
ICAgICAgICAgZml4RWRnZTxDZWxsVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBz
cGVjdWxhdGVGb3JCYXJyaWVyKG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CisKKyAgICAgICAgY2FzZSBHZXRHZW5lcmF0b3JMb2NhbDogeworICAgICAgICAg
ICAgZml4RWRnZTxDZWxsVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAvLyBDdXJy
ZW50bHksIHdlIGFsd2F5cyBzdG9yZSB0aGUgdmFsdWUgYXMgSlNWYWx1ZSBpbiB0aGUgR2VuZXJh
dG9yRnJhbWUuCisgICAgICAgICAgICBub2RlLT5zZXRSZXN1bHQoTm9kZVJlc3VsdEpTKTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBSZXNpemVHZW5lcmF0
b3JMb2NhbHM6IHsKKyAgICAgICAgICAgIGZpeEVkZ2U8Q2VsbFVzZT4obm9kZS0+Y2hpbGQxKCkp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKwogI2lmICFBU1NFUlRfRElTQUJMRUQK
ICAgICAgICAgLy8gSGF2ZSB0aGVzZSBuby1vcCBjYXNlcyBoZXJlIHRvIGVuc3VyZSB0aGF0IG5v
Ym9keSBmb3JnZXRzIHRvIGFkZCBoYW5kbGVycyBmb3IgbmV3IG9wY29kZXMuCiAgICAgICAgIGNh
c2UgU2V0QXJndW1lbnQ6CkBAIC0xNDYyLDYgKzE0ODAsNyBAQCBjbGFzcyBGaXh1cFBoYXNlIDog
cHVibGljIFBoYXNlIHsKICAgICAgICAgY2FzZSBOZXdPYmplY3Q6CiAgICAgICAgIGNhc2UgTmV3
QXJyYXlCdWZmZXI6CiAgICAgICAgIGNhc2UgTmV3UmVnZXhwOgorICAgICAgICBjYXNlIE5ld0dl
bmVyYXRvckZyYW1lOgogICAgICAgICBjYXNlIEJyZWFrcG9pbnQ6CiAgICAgICAgIGNhc2UgUHJv
ZmlsZVdpbGxDYWxsOgogICAgICAgICBjYXNlIFByb2ZpbGVEaWRDYWxsOgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHZW5lcmF0b3JMb2NhbERhdGEuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR2VuZXJhdG9yTG9jYWxEYXRhLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
Y2VhZjFhYmMwNWI3ODM4NTQ3YzBiN2FlYmVkZmY2MDRjY2I1ZmQxMgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR2VuZXJhdG9yTG9jYWxEYXRhLmgKQEAg
LTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBZdXN1a2UgU3V6dWtpIDx1
dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIERGR0dlbmVyYXRvckxvY2FsRGF0YV9oCisjZGVmaW5lIERGR0dl
bmVyYXRvckxvY2FsRGF0YV9oCisKKyNpZiBFTkFCTEUoREZHX0pJVCkKKworI2luY2x1ZGUgIkRG
R0NvbW1vbi5oIgorI2luY2x1ZGUgIlNwZWN1bGF0ZWRUeXBlLmgiCisjaW5jbHVkZSAiVmlydHVh
bFJlZ2lzdGVyLmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKKworCitjbGFz
cyBHZW5lcmF0b3JMb2NhbERhdGEgeworcHVibGljOgorICAgIGJvb2wgcHJlZGljdChTcGVjdWxh
dGVkVHlwZSBwcmVkaWN0aW9uKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1lcmdlU3BlY3VsYXRp
b24obV9wcmVkaWN0aW9uLCBwcmVkaWN0aW9uKTsKKyAgICB9CisKKyAgICBTcGVjdWxhdGVkVHlw
ZSBwcmVkaWN0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX3ByZWRpY3Rpb247CisgICAg
fQorCitwcml2YXRlOgorICAgIFNwZWN1bGF0ZWRUeXBlIG1fcHJlZGljdGlvbiB7IFNwZWNOb25l
IH07Cit9OworCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCisKKyNlbmRpZiAvLyBFTkFCTEUo
REZHX0pJVCkKKworI2VuZGlmIC8vIERGR1ZhcmlhYmxlQWNjZXNzRGF0YV9oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0dyYXBoLmgKaW5kZXggMDlhYWU5NTVmNjZhYTc4OTRhMTQ4NWUxMzkzN2Yz
YmE1Mzg4OWQxYy4uNDNmZGJiMWE3MTMwMzQ2YzliZGFmNDlkNGU0MTZiNzI0MTNmMDYxZCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaApAQCAtNjAsNiArNjAsNyBAQAogY2xhc3Mg
RG9taW5hdG9yczsKIGNsYXNzIE5hdHVyYWxMb29wczsKIGNsYXNzIFByZVBvc3ROdW1iZXJpbmc7
CitjbGFzcyBHZW5lcmF0b3JMb2NhbERhdGE7CiAKICNkZWZpbmUgREZHX05PREVfRE9fVE9fQ0hJ
TERSRU4oZ3JhcGgsIG5vZGUsIHRoaW5nVG9EbykgZG8geyAgICAgICAgICAgIFwKICAgICAgICAg
Tm9kZSogX25vZGUgPSAobm9kZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKQEAgLTg4Nyw2ICs4ODgsNyBAQCBjbGFzcyBHcmFwaCA6IHB1YmxpYyB2aXJ0dWFs
IFNjYW5uYWJsZSB7CiAgICAgQmFnPENhbGxWYXJhcmdzRGF0YT4gbV9jYWxsVmFyYXJnc0RhdGE7
CiAgICAgQmFnPExvYWRWYXJhcmdzRGF0YT4gbV9sb2FkVmFyYXJnc0RhdGE7CiAgICAgQmFnPFN0
YWNrQWNjZXNzRGF0YT4gbV9zdGFja0FjY2Vzc0RhdGE7CisgICAgQmFnPEdlbmVyYXRvckxvY2Fs
RGF0YT4gbV9nZW5lcmF0b3JMb2NhbERhdGE7CiAgICAgVmVjdG9yPElubGluZVZhcmlhYmxlRGF0
YSwgND4gbV9pbmxpbmVWYXJpYWJsZURhdGE7CiAgICAgSGFzaE1hcDxDb2RlQmxvY2sqLCBzdGQ6
OnVuaXF1ZV9wdHI8RnVsbEJ5dGVjb2RlTGl2ZW5lc3M+PiBtX2J5dGVjb2RlTGl2ZW5lc3M7CiAg
ICAgSGFzaE1hcDxDb2RlQmxvY2sqLCBzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVLaWxscz4+IG1f
Ynl0ZWNvZGVLaWxsczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
TWF5RXhpdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3BwCmlu
ZGV4IGRhYTI5MzM5ZGJmYmRmODBhYWQ5YjY0NmEyY2I3YTA1ODdkOTYyMzguLmJjNmQxNWM4NGRm
YTQ0ZjczNGZkYzQ3NGRkZTdhNmJiMjY1NmU2ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdNYXlFeGl0LmNwcApAQCAtMTMwLDYgKzEzMCw5IEBAIEV4aXRNb2RlIG1heUV4aXQoR3Jh
cGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgU3RvcmVCYXJyaWVyOgogICAgIGNhc2Ug
UHV0QnlPZmZzZXQ6CiAgICAgY2FzZSBQdXRDbG9zdXJlVmFyOgorICAgIGNhc2UgUmVzaXplR2Vu
ZXJhdG9yTG9jYWxzOgorICAgIGNhc2UgU2V0R2VuZXJhdG9yTG9jYWw6CisgICAgY2FzZSBHZXRH
ZW5lcmF0b3JMb2NhbDoKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIFN0ckNhdDoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKaW5kZXggMTI4NzBkOTNkMGM0ODJlNGY4ZTVkNGQyZGFm
MWU2YmYxZjcxYjYyYy4uM2VjNzdlMWExNGRjZTI1MzViYTEwZGYyM2YwOWE5ZTgxZjk3OGIwMyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNs
dWRlICJERkdBcnJheU1vZGUuaCIKICNpbmNsdWRlICJERkdDb21tb24uaCIKICNpbmNsdWRlICJE
RkdFcG9jaC5oIgorI2luY2x1ZGUgIkRGR0dlbmVyYXRvckxvY2FsRGF0YS5oIgogI2luY2x1ZGUg
IkRGR0xhenlKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiREZHTXVsdGlHZXRCeU9mZnNldERhdGEuaCIK
ICNpbmNsdWRlICJERkdOb2RlRmxhZ3MuaCIKQEAgLTg3OCw2ICs4NzksNzIgQEAgc3RydWN0IE5v
ZGUgewogICAgICAgICByZXR1cm4gbV9vcEluZm87CiAgICAgfQogCisgICAgYm9vbCBoYXNHZW5l
cmF0b3JMb2NhbHNTaXplKCkKKyAgICB7CisgICAgICAgIHN3aXRjaCAob3AoKSkgeworICAgICAg
ICBjYXNlIE5ld0dlbmVyYXRvckZyYW1lOgorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
ICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9
CisKKyAgICB1bnNpZ25lZCBnZW5lcmF0b3JMb2NhbHNTaXplKCkKKyAgICB7CisgICAgICAgIEFT
U0VSVChoYXNHZW5lcmF0b3JMb2NhbHNTaXplKCkpOworICAgICAgICByZXR1cm4gbV9vcEluZm87
CisgICAgfQorCisgICAgYm9vbCBoYXNHZW5lcmF0b3JMb2NhbEluZGV4KCkKKyAgICB7CisgICAg
ICAgIHN3aXRjaCAob3AoKSkgeworICAgICAgICBjYXNlIFNldEdlbmVyYXRvckxvY2FsOgorICAg
ICAgICBjYXNlIEdldEdlbmVyYXRvckxvY2FsOgorICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICB1bnNpZ25lZCBnZW5lcmF0b3JMb2NhbEluZGV4KCkKKyAgICB7CisgICAgICAg
IEFTU0VSVChoYXNHZW5lcmF0b3JMb2NhbEluZGV4KCkpOworICAgICAgICByZXR1cm4gbV9vcElu
Zm87CisgICAgfQorCisgICAgYm9vbCBoYXNHZW5lcmF0b3JMb2NhbERhdGEoKQorICAgIHsKKyAg
ICAgICAgc3dpdGNoIChvcCgpKSB7CisgICAgICAgIGNhc2UgU2V0R2VuZXJhdG9yTG9jYWw6Cisg
ICAgICAgIGNhc2UgR2V0R2VuZXJhdG9yTG9jYWw6CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIEdlbmVyYXRvckxvY2FsRGF0YSogZ2VuZXJhdG9yTG9jYWxEYXRhKCkKKyAg
ICB7CisgICAgICAgIEFTU0VSVChoYXNHZW5lcmF0b3JMb2NhbERhdGEoKSk7CisgICAgICAgIHJl
dHVybiByZWludGVycHJldF9jYXN0PEdlbmVyYXRvckxvY2FsRGF0YSo+KG1fb3BJbmZvMik7Cisg
ICAgfQorCisgICAgYm9vbCBoYXNHZW5lcmF0b3JGcmFtZUxvY2FscygpCisgICAgeworICAgICAg
ICBzd2l0Y2ggKG9wKCkpIHsKKyAgICAgICAgY2FzZSBSZXNpemVHZW5lcmF0b3JMb2NhbHM6Cisg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHVuc2lnbmVkIGdlbmVyYXRvckZy
YW1lTG9jYWxzKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChoYXNHZW5lcmF0b3JGcmFtZUxvY2Fs
cygpKTsKKyAgICAgICAgcmV0dXJuIG1fb3BJbmZvOworICAgIH0KKwogICAgIGJvb2wgaGFzQWNj
ZXNzb3JBdHRyaWJ1dGVzKCkKICAgICB7CiAgICAgICAgIHN3aXRjaCAob3AoKSkgewpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCmluZGV4IGRkZDBiOTdjYjJmZTY5MjYwNDUx
MDNmOGE3MTA3MDA0ODJlOWY2YmQuLjI5OGM4ZjhjN2NiYzlkZmM1ZjUwMjJmNTQxNjZmNmU5NDgz
NzIzZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKQEAgLTc5LDYg
Kzc5LDEwIEBACiAgICAgbWFjcm8oRmx1c2gsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNy
byhQaGFudG9tTG9jYWwsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBcCisgICAgbWFjcm8oU2V0
R2VuZXJhdG9yTG9jYWwsIE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBtYWNybyhHZXRHZW5lcmF0
b3JMb2NhbCwgTm9kZVJlc3VsdEpTKSBcCisgICAgbWFjcm8oUmVzaXplR2VuZXJhdG9yTG9jYWxz
LCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgXAogICAgIC8qIEhpbnQgdGhhdCB0aGlzIGlzIHdo
ZXJlIGJ5dGVjb2RlIHRoaW5rcyBpcyBhIGdvb2QgcGxhY2UgdG8gT1NSLiBOb3RlIHRoYXQgdGhp
cyAqL1wKICAgICAvKiB3aWxsIGV4aXN0IGV2ZW4gaW4gaW5saW5lZCBsb29wcy4gVGhpcyBoYXMg
bm8gZXhlY3V0aW9uIHNlbWFudGljcyBidXQgaXQgbXVzdCAqL1wKICAgICAvKiBzdXJ2aXZlIGFs
bCBEQ0UuIFdlIHRyZWF0IHRoaXMgYXMgYmVpbmcgYSBjYW4tZXhpdCBiZWNhdXNlIHRpZXItdXAg
dG8gRlRMIG1heSAqL1wKQEAgLTI2Myw2ICsyNjcsNyBAQAogICAgIG1hY3JvKE5ld0FycmF5QnVm
ZmVyLCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhOZXdUeXBlZEFycmF5LCBOb2RlUmVzdWx0
SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oTmV3UmVnZXhwLCBOb2RlUmVzdWx0
SlMpIFwKKyAgICBtYWNybyhOZXdHZW5lcmF0b3JGcmFtZSwgTm9kZVJlc3VsdEpTKSBcCiAgICAg
LyogUmVzdCBQYXJhbWV0ZXIgKi9cCiAgICAgbWFjcm8oR2V0UmVzdExlbmd0aCwgTm9kZVJlc3Vs
dEludDMyKSBcCiAgICAgbWFjcm8oQ29weVJlc3QsIE5vZGVNdXN0R2VuZXJhdGUpIFwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCmluZGV4IDJmZDVkYmRjN2Zj
NGNjYTg2ZmFlMTA5MjI3YWMxNzU3ZmRjZGY5NmMuLmJjMzU2NjEzZDNmNTIxODA4MjM4ZTUyNjgx
MzVhYWIwOWJlNjdmMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRp
b25zLmNwcApAQCAtNDEsOCArNDEsOSBAQAogI2luY2x1ZGUgIkRpcmVjdEFyZ3VtZW50cy5oIgog
I2luY2x1ZGUgIkZUTEZvck9TUkVudHJ5SklUQ29kZS5oIgogI2luY2x1ZGUgIkZUTE9TUkVudHJ5
LmgiCi0jaW5jbHVkZSAiSG9zdENhbGxSZXR1cm5WYWx1ZS5oIgorI2luY2x1ZGUgIkdlbmVyYXRv
ckZyYW1lLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCisjaW5jbHVkZSAiSG9zdENhbGxS
ZXR1cm5WYWx1ZS5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSklULmgi
CiAjaW5jbHVkZSAiSklURXhjZXB0aW9ucy5oIgpAQCAtODE3LDYgKzgxOCwxMSBAQCBjaGFyKiBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Zsb2F0NjRBcnJheVdpdGhPbmVBcmd1bWVudCgKICAg
ICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29uc3RydWN0R2VuZXJpY1R5cGVkQXJy
YXlWaWV3V2l0aEFyZ3VtZW50czxKU0Zsb2F0NjRBcnJheT4oZXhlYywgc3RydWN0dXJlLCBlbmNv
ZGVkVmFsdWUsIDAsIE51bGxvcHQpKTsKIH0KIAorY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRp
b25OZXdHZW5lcmF0b3JGcmFtZShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBpbnQzMl90IG51bWJlck9mQ2FsbGVlTG9jYWxzKQoreworICAgIHJldHVybiBiaXR3aXNlX2Nh
c3Q8Y2hhcio+KEdlbmVyYXRvckZyYW1lOjpjcmVhdGUoZXhlYy0+dm0oKSwgc3RydWN0dXJlLCBu
dW1iZXJPZkNhbGxlZUxvY2FscykpOworfQorCiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uQ3JlYXRlQWN0aXZhdGlvbkRpcmVjdChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBKU1Njb3BlKiBzY29wZSwgU3ltYm9sVGFibGUqIHRhYmxlLCBFbmNvZGVkSlNWYWx1
ZSBpbml0aWFsVmFsdWVFbmNvZGVkKQogewogICAgIEpTVmFsdWUgaW5pdGlhbFZhbHVlID0gSlNW
YWx1ZTo6ZGVjb2RlKGluaXRpYWxWYWx1ZUVuY29kZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09wZXJhdGlvbnMuaAppbmRleCA0MDk2MjlmZjVkNTNhN2JlMzg3YTYyMzY0NTVkNjgx
NmFjMDg1ZWM5Li5lNDQzYmEyODIzNzJmYmNjZTJiYWM1YjA5YTM2N2JkNTJjOGU3NWYzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaApAQCAtODIsNiArODIsNyBA
QAogY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdGbG9hdDMyQXJyYXlXaXRoT25lQXJn
dW1lbnQoRXhlY1N0YXRlKiwgU3RydWN0dXJlKiwgRW5jb2RlZEpTVmFsdWUpIFdURl9JTlRFUk5B
TDsKIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3RmxvYXQ2NEFycmF5V2l0aFNpemUo
RXhlY1N0YXRlKiwgU3RydWN0dXJlKiwgaW50MzJfdCkgV1RGX0lOVEVSTkFMOwogY2hhciogSklU
X09QRVJBVElPTiBvcGVyYXRpb25OZXdGbG9hdDY0QXJyYXlXaXRoT25lQXJndW1lbnQoRXhlY1N0
YXRlKiwgU3RydWN0dXJlKiwgRW5jb2RlZEpTVmFsdWUpIFdURl9JTlRFUk5BTDsKK2NoYXIqIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3R2VuZXJhdG9yRnJhbWUoRXhlY1N0YXRlKiwgU3RydWN0
dXJlKiwgaW50MzJfdCkgV1RGX0lOVEVSTkFMOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blB1dEJ5VmFsU3RyaWN0KEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkUHJvcGVydHksIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSkgV1RGX0lOVEVSTkFMOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsTm9u
U3RyaWN0KEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkUHJvcGVydHksIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkgV1RGX0lO
VEVSTkFMOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsQ2VsbFN0cmljdChF
eGVjU3RhdGUqLCBKU0NlbGwqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkUHJvcGVydHksIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkgV1RGX0lOVEVSTkFMOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNw
cAppbmRleCA1Nzk5OGNmZTE4MWE4ZmNmOWNjNjUxNDM1MWFjNTgwYjgwZTdmYjhhLi4yZDNhYmJk
MmU3NjBiZTY0NWE3MGNhMTVmODljZjU5MDhkOTIyZmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNw
cApAQCAtMTYwLDYgKzE2MCwyNCBAQCBjbGFzcyBQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZSA6
IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICBjaGFuZ2VkIHw9IHZhcmlhYmxlQWNjZXNzRGF0
YS0+cHJlZGljdChub2RlLT5jaGlsZDEoKS0+cHJlZGljdGlvbigpKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CisKKyAgICAgICAgY2FzZSBTZXRHZW5lcmF0b3JMb2NhbDogeworICAg
ICAgICAgICAgR2VuZXJhdG9yTG9jYWxEYXRhKiBnZW5lcmF0b3JMb2NhbERhdGEgPSBub2RlLT5n
ZW5lcmF0b3JMb2NhbERhdGEoKTsKKyAgICAgICAgICAgIGNoYW5nZWQgfD0gZ2VuZXJhdG9yTG9j
YWxEYXRhLT5wcmVkaWN0KG5vZGUtPmNoaWxkMigpLT5wcmVkaWN0aW9uKCkpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBjYXNlIEdldEdlbmVyYXRvckxvY2FsOiB7
CisgICAgICAgICAgICBHZW5lcmF0b3JMb2NhbERhdGEqIGdlbmVyYXRvckxvY2FsRGF0YSA9IG5v
ZGUtPmdlbmVyYXRvckxvY2FsRGF0YSgpOworICAgICAgICAgICAgU3BlY3VsYXRlZFR5cGUgcHJl
ZGljdGlvbiA9IGdlbmVyYXRvckxvY2FsRGF0YS0+cHJlZGljdGlvbigpOworICAgICAgICAgICAg
Ly8gV2UgYWx3YXlzIHN0b3JlIHRoZSB2YWx1ZSBpbiBHZW5lcmF0b3JMb2NhbCBhcyBGb3JtYXRK
U1ZhbHVlLgorICAgICAgICAgICAgLy8gU28gZG91YmxlIHZhbHVlIGlzIGJldHRlciB0aGFuIElu
dDUyIHZhbHVlLgorICAgICAgICAgICAgaWYgKHByZWRpY3Rpb24gJiBTcGVjSW50NTIpCisgICAg
ICAgICAgICAgICAgcHJlZGljdGlvbiA9IChwcmVkaWN0aW9uIHwgU3BlY0ludDUyQXNEb3VibGUp
ICYgflNwZWNJbnQ1MjsKKyAgICAgICAgICAgIGlmIChwcmVkaWN0aW9uKQorICAgICAgICAgICAg
ICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKHByZWRpY3Rpb24pOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICBjYXNlIEJpdEFuZDoKICAg
ICAgICAgY2FzZSBCaXRPcjoKQEAgLTUyNCw3ICs1NDIsOCBAQCBjbGFzcyBQcmVkaWN0aW9uUHJv
cGFnYXRpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgIH0KICAgICAgICAgICAgIAog
ICAgICAgICBjYXNlIE5ld1JlZ2V4cDoKLSAgICAgICAgY2FzZSBDcmVhdGVBY3RpdmF0aW9uOiB7
CisgICAgICAgIGNhc2UgQ3JlYXRlQWN0aXZhdGlvbjoKKyAgICAgICAgY2FzZSBOZXdHZW5lcmF0
b3JGcmFtZTogewogICAgICAgICAgICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9uKFNwZWNPYmpl
Y3RPdGhlcik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtNzE2LDYgKzczNSw3
IEBAIGNsYXNzIFByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlIDogcHVibGljIFBoYXNlIHsKICAg
ICAgICAgY2FzZSBFeGl0T0s6CiAgICAgICAgIGNhc2UgTG9hZFZhcmFyZ3M6CiAgICAgICAgIGNh
c2UgQ29weVJlc3Q6CisgICAgICAgIGNhc2UgUmVzaXplR2VuZXJhdG9yTG9jYWxzOgogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICAgICAgLy8gVGhpcyBnZXRzIGlnbm9yZWQg
YmVjYXVzZSBpdCBvbmx5IHByZXRlbmRzIHRvIHByb2R1Y2UgYSB2YWx1ZS4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKaW5kZXggMjMwZWZlZGM0ODMxNTEy
YmFjNTY4YmVlZmRiMjc2OTYxODcyMDk0Yy4uODdjM2UwMjY4YzU4MTEyOGNkYmJmMWZiNTViMzY2
OTJmYzQxNmRlNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZl
VG9FeGVjdXRlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVj
dXRlLmgKQEAgLTIzNyw2ICsyMzcsNyBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0
ZVR5cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBOZXdBcnJh
eVdpdGhTaXplOgogICAgIGNhc2UgTmV3QXJyYXlCdWZmZXI6CiAgICAgY2FzZSBOZXdSZWdleHA6
CisgICAgY2FzZSBOZXdHZW5lcmF0b3JGcmFtZToKICAgICBjYXNlIEJyZWFrcG9pbnQ6CiAgICAg
Y2FzZSBQcm9maWxlV2lsbENhbGw6CiAgICAgY2FzZSBQcm9maWxlRGlkQ2FsbDoKQEAgLTMyOCw2
ICszMjksOSBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0YXRlLCBH
cmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBHZXRNeUFyZ3VtZW50QnlWYWw6CiAg
ICAgY2FzZSBGb3J3YXJkVmFyYXJnczoKICAgICBjYXNlIENvcHlSZXN0OgorICAgIGNhc2UgU2V0
R2VuZXJhdG9yTG9jYWw6CisgICAgY2FzZSBHZXRHZW5lcmF0b3JMb2NhbDoKKyAgICBjYXNlIFJl
c2l6ZUdlbmVyYXRvckxvY2FsczoKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBjYXNlIEJv
dHRvbVZhbHVlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklULmNwcAppbmRleCBjY2NlNzkxOTk1MTQ1ZTkxZWZkMjAwODhjOTZiN2FmODJiNTYxNmQ2Li41
Zjk2OWZjODA5YTE2ODY2ZjBkYWQ4MjZkNmEyZDNmMmJlNDVhYmQzIDEwMDc1NQotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApAQCAtMzgsNiArMzgsNyBA
QAogI2luY2x1ZGUgIkRGR1NhbmVTdHJpbmdHZXRCeVZhbFNsb3dQYXRoR2VuZXJhdG9yLmgiCiAj
aW5jbHVkZSAiREZHU2xvd1BhdGhHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJEaXJlY3RBcmd1bWVu
dHMuaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JGcmFtZS5oIgogI2luY2x1ZGUgIkpJVEFkZEdlbmVy
YXRvci5oIgogI2luY2x1ZGUgIkpJVEJpdEFuZEdlbmVyYXRvci5oIgogI2luY2x1ZGUgIkpJVEJp
dE9yR2VuZXJhdG9yLmgiCkBAIC02Mzc4LDYgKzYzNzksNDIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZU5ld1N0cmluZ09iamVjdChOb2RlKiBub2RlKQogICAgIGNlbGxSZXN1bHQocmVz
dWx0R1BSLCBub2RlKTsKIH0KIAordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld0dlbmVy
YXRvckZyYW1lKE5vZGUqIG5vZGUpCit7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCA9IG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7
CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBnbG9iYWxPYmplY3QtPmdlbmVyYXRvckZyYW1l
U3RydWN0dXJlKCk7CisgICAgdW5zaWduZWQgZ2VuZXJhdG9yTG9jYWxzU2l6ZSA9IG5vZGUtPmdl
bmVyYXRvckxvY2Fsc1NpemUoKTsKKworICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7Cisg
ICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2gxKHRoaXMpOworICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNo
Mih0aGlzKTsKKworICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CisgICAgR1BS
UmVnIHNjcmF0Y2gxR1BSID0gc2NyYXRjaDEuZ3ByKCk7CisgICAgR1BSUmVnIHNjcmF0Y2gyR1BS
ID0gc2NyYXRjaDIuZ3ByKCk7CisKKyAgICBKSVRDb21waWxlcjo6SnVtcExpc3Qgc2xvd1BhdGg7
CisKKyAgICBlbWl0QWxsb2NhdGVKU09iamVjdFdpdGhLbm93blNpemU8R2VuZXJhdG9yRnJhbWU+
KHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpLCBUcnVzdGVkSW1tUHRyKG51bGxw
dHIpLCBzY3JhdGNoMUdQUiwgc2NyYXRjaDJHUFIsIHNsb3dQYXRoLCBHZW5lcmF0b3JGcmFtZTo6
YWxsb2NhdGlvblNpemVGb3JMb2NhbHMoZ2VuZXJhdG9yTG9jYWxzU2l6ZSkpOworICAgIG1faml0
LnN0b3JlMzIoVHJ1c3RlZEltbTMyKGdlbmVyYXRvckxvY2Fsc1NpemUpLCBKSVRDb21waWxlcjo6
QWRkcmVzcyhyZXN1bHRHUFIsIEdlbmVyYXRvckZyYW1lOjpudW1iZXJPZkNhbGxlZUxvY2Fsc09m
ZnNldCgpKSk7CisgICAgbV9qaXQuc3RvcmUzMihUcnVzdGVkSW1tMzIoMCksIEpJVENvbXBpbGVy
OjpBZGRyZXNzKHJlc3VsdEdQUiwgR2VuZXJhdG9yRnJhbWU6Om51bWJlck9mU2F2ZWRDYWxsZWVM
b2NhbHNPZmZzZXQoKSkpOworICAgIEpTVmFsdWUgZW1wdHlWYWx1ZTsKKyAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgZ2VuZXJhdG9yTG9jYWxzU2l6ZTsgKytpKQorICAgICAgICBtX2ppdC5z
dG9yZVRydXN0ZWRWYWx1ZShlbXB0eVZhbHVlLCBKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHRH
UFIsIEdlbmVyYXRvckZyYW1lOjpsb2NhbE9mZnNldChpKSkpOworCisgICAgYWRkU2xvd1BhdGhH
ZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dQYXRoLCB0aGlzLCBvcGVyYXRpb25OZXdHZW5lcmF0
b3JGcmFtZSwgcmVzdWx0R1BSLCBzdHJ1Y3R1cmUsIGdlbmVyYXRvckxvY2Fsc1NpemUpKTsKKwor
ICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKK30KKwordm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZVJlc2l6ZUdlbmVyYXRvckxvY2FscyhOb2RlKiBub2RlKQoreworICAgIFNwZWN1
bGF0ZUNlbGxPcGVyYW5kIGZyYW1lKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICBHUFJSZWcg
ZnJhbWVHUFIgPSBmcmFtZS5ncHIoKTsKKyAgICBtX2ppdC5zdG9yZTMyKFRydXN0ZWRJbW0zMihu
b2RlLT5nZW5lcmF0b3JGcmFtZUxvY2FscygpKSwgSklUQ29tcGlsZXI6OkFkZHJlc3MoZnJhbWVH
UFIsIEdlbmVyYXRvckZyYW1lOjpudW1iZXJPZlNhdmVkQ2FsbGVlTG9jYWxzT2Zmc2V0KCkpKTsK
KyAgICBub1Jlc3VsdChub2RlKTsKK30KKwogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5l
d1R5cGVkQXJyYXkoTm9kZSogbm9kZSkKIHsKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0ID0gbV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAppbmRl
eCA1MzEyYzhkYmVkZmVkMTgwMDU0MzgxMTMwNzllZWIwYjBlOTkwOGFiLi4wMGE0ZmE5MmFjNzNl
NTgzOWFiODU2ZWFiOWY0MzY0MjBlNTJjYjE1IDEwMDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCkBAIC0yMjgxLDYgKzIyODEsOCBAQCBjbGFzcyBTcGVj
dWxhdGl2ZUpJVCB7CiAgICAgdm9pZCBjb21waWxlUHV0QnlWYWxGb3JGbG9hdFR5cGVkQXJyYXko
R1BSUmVnIGJhc2UsIEdQUlJlZyBwcm9wZXJ0eSwgTm9kZSosIFR5cGVkQXJyYXlUeXBlKTsKICAg
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2xhc3NUeXBlPiB2b2lkIGNvbXBpbGVOZXdGdW5jdGlvbkNv
bW1vbihHUFJSZWcsIFN0cnVjdHVyZSosIEdQUlJlZywgR1BSUmVnLCBHUFJSZWcsIE1hY3JvQXNz
ZW1ibGVyOjpKdW1wTGlzdCYsIHNpemVfdCwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgcHRyZGlmZl90
LCBwdHJkaWZmX3QsIHB0cmRpZmZfdCk7CiAgICAgdm9pZCBjb21waWxlTmV3RnVuY3Rpb24oTm9k
ZSopOworICAgIHZvaWQgY29tcGlsZU5ld0dlbmVyYXRvckZyYW1lKE5vZGUqKTsKKyAgICB2b2lk
IGNvbXBpbGVSZXNpemVHZW5lcmF0b3JMb2NhbHMoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUZv
cndhcmRWYXJhcmdzKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVDcmVhdGVBY3RpdmF0aW9uKE5v
ZGUqKTsKICAgICB2b2lkIGNvbXBpbGVDcmVhdGVEaXJlY3RBcmd1bWVudHMoTm9kZSopOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5j
cHAKaW5kZXggMTJlYjUwNDExODBhYzJmNTAxNjRmOTUxYjA1OGVkYjYyZDIyODI3MC4uYWRlYjgx
MzdhOTBlMWI3NzlkYTBkOTc2ZWI3MmY5NzBlNTAxODhkMiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCkBAIC0zNyw2ICsz
Nyw3IEBACiAjaW5jbHVkZSAiREZHU2xvd1BhdGhHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJEZWJ1
Z2dlci5oIgogI2luY2x1ZGUgIkRpcmVjdEFyZ3VtZW50cy5oIgorI2luY2x1ZGUgIkdlbmVyYXRv
ckZyYW1lLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiSlNFbnZpcm9u
bWVudFJlY29yZC5oIgogI2luY2x1ZGUgIkpTTGV4aWNhbEVudmlyb25tZW50LmgiCkBAIC0zNjUw
LDYgKzM2NTEsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQog
ICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdFBheWxvYWQuZ3ByKCksIG5vZGUpOwogICAgICAgICBi
cmVhazsKICAgICB9CisKKyAgICBjYXNlIE5ld0dlbmVyYXRvckZyYW1lOiB7CisgICAgICAgIGNv
bXBpbGVOZXdHZW5lcmF0b3JGcmFtZShub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogICAg
ICAgICAKICAgICBjYXNlIFRvVGhpczogewogICAgICAgICBBU1NFUlQobm9kZS0+Y2hpbGQxKCku
dXNlS2luZCgpID09IFVudHlwZWRVc2UpOwpAQCAtNDcxOCw2ICs0NzI0LDQxIEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgY2VsbFJlc3VsdChyZXN1
bHRHUFIsIG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9CisgICAgY2FzZSBTZXRHZW5lcmF0
b3JMb2NhbDogeworICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBmcmFtZSh0aGlzLCBub2Rl
LT5jaGlsZDEoKSk7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNo
aWxkMigpKTsKKworICAgICAgICBHUFJSZWcgZnJhbWVHUFIgPSBmcmFtZS5ncHIoKTsKKyAgICAg
ICAgR1BSUmVnIHZhbHVlVGFnR1BSID0gdmFsdWUudGFnR1BSKCk7CisgICAgICAgIEdQUlJlZyB2
YWx1ZVBheWxvYWRHUFIgPSB2YWx1ZS5wYXlsb2FkR1BSKCk7CisgICAgICAgIHVuc2lnbmVkIGdl
bmVyYXRvckxvY2FsSW5kZXggPSBub2RlLT5nZW5lcmF0b3JMb2NhbEluZGV4KCk7CisKKyAgICAg
ICAgbV9qaXQuc3RvcmUzMih2YWx1ZVRhZ0dQUiwgSklUQ29tcGlsZXI6OkFkZHJlc3MoZnJhbWVH
UFIsIEdlbmVyYXRvckZyYW1lOjpsb2NhbE9mZnNldChnZW5lcmF0b3JMb2NhbEluZGV4KSArIE9C
SkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy50YWcpKSk7CisgICAgICAgIG1faml0LnN0
b3JlMzIodmFsdWVQYXlsb2FkR1BSLCBKSVRDb21waWxlcjo6QWRkcmVzcyhmcmFtZUdQUiwgR2Vu
ZXJhdG9yRnJhbWU6OmxvY2FsT2Zmc2V0KGdlbmVyYXRvckxvY2FsSW5kZXgpICsgT0JKRUNUX09G
RlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnBheWxvYWQpKSk7CisKKyAgICAgICAgbm9SZXN1bHQo
bm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIEdldEdlbmVyYXRvckxvY2Fs
OiB7CisgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGZyYW1lKHRoaXMsIG5vZGUtPmNoaWxk
MSgpKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdFRhZyh0aGlzKTsKKyAgICAgICAgR1BS
VGVtcG9yYXJ5IHJlc3VsdFBheWxvYWQodGhpcyk7CisKKyAgICAgICAgR1BSUmVnIGZyYW1lR1BS
ID0gZnJhbWUuZ3ByKCk7CisgICAgICAgIEdQUlJlZyByZXN1bHRUYWdHUFIgPSByZXN1bHRUYWcu
Z3ByKCk7CisgICAgICAgIEdQUlJlZyByZXN1bHRQYXlsb2FkR1BSID0gcmVzdWx0UGF5bG9hZC5n
cHIoKTsKKyAgICAgICAgdW5zaWduZWQgZ2VuZXJhdG9yTG9jYWxJbmRleCA9IG5vZGUtPmdlbmVy
YXRvckxvY2FsSW5kZXgoKTsKKworICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OkFk
ZHJlc3MoZnJhbWVHUFIsIEdlbmVyYXRvckZyYW1lOjpsb2NhbE9mZnNldChnZW5lcmF0b3JMb2Nh
bEluZGV4KSArIE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy50YWcpKSwgcmVzdWx0
VGFnR1BSKTsKKyAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGZyYW1l
R1BSLCBHZW5lcmF0b3JGcmFtZTo6bG9jYWxPZmZzZXQoZ2VuZXJhdG9yTG9jYWxJbmRleCkgKyBP
QkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMucGF5bG9hZCkpLCByZXN1bHRQYXlsb2Fk
R1BSKTsKKworICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9h
ZEdQUiwgbm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIFJlc2l6ZUdlbmVy
YXRvckxvY2FsczogeworICAgICAgICBjb21waWxlUmVzaXplR2VuZXJhdG9yTG9jYWxzKG5vZGUp
OworICAgICAgICBicmVhazsKKyAgICB9CiAgICAgY2FzZSBQcm9maWxlVHlwZTogewogICAgICAg
ICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIEdQ
UlRlbXBvcmFyeSBzY3JhdGNoMSh0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4IGU3NDU2OTQwNGMxYjk3ODQ4MDYxOTdk
MTQ1NDVjZDFkYjIzZDdhNWMuLjVhOGZjZDQ0ZDEzNWFkZTE1MzdiMjdlZGJmMGM5YTA4YjViMzNj
NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQ2NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDY0LmNwcApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIkRGR1Nsb3dQYXRoR2VuZXJhdG9y
LmgiCiAjaW5jbHVkZSAiRGVidWdnZXIuaCIKICNpbmNsdWRlICJEaXJlY3RBcmd1bWVudHMuaCIK
KyNpbmNsdWRlICJHZW5lcmF0b3JGcmFtZS5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgog
I2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU0Vudmlyb25tZW50UmVjb3JkLmgi
CkBAIC0zNjg4LDYgKzM2ODksMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2Rl
KiBub2RlKQogICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9kZSk7CiAgICAgICAg
IGJyZWFrOwogICAgIH0KKworICAgIGNhc2UgTmV3R2VuZXJhdG9yRnJhbWU6IHsKKyAgICAgICAg
Y29tcGlsZU5ld0dlbmVyYXRvckZyYW1lKG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CiAg
ICAgICAgIAogICAgIGNhc2UgVG9UaGlzOiB7CiAgICAgICAgIEFTU0VSVChub2RlLT5jaGlsZDEo
KS51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSk7CkBAIC00NzIwLDYgKzQ3MjYsMzUgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBjZWxsUmVzdWx0KHJl
c3VsdEdQUiwgbm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KKyAgICBjYXNlIFNldEdlbmVy
YXRvckxvY2FsOiB7CisgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGZyYW1lKHRoaXMsIG5v
ZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+
Y2hpbGQyKCkpOworCisgICAgICAgIEdQUlJlZyBmcmFtZUdQUiA9IGZyYW1lLmdwcigpOworICAg
ICAgICBHUFJSZWcgdmFsdWVHUFIgPSB2YWx1ZS5ncHIoKTsKKyAgICAgICAgdW5zaWduZWQgZ2Vu
ZXJhdG9yTG9jYWxJbmRleCA9IG5vZGUtPmdlbmVyYXRvckxvY2FsSW5kZXgoKTsKKworICAgICAg
ICBtX2ppdC5zdG9yZTY0KHZhbHVlR1BSLCBKSVRDb21waWxlcjo6QWRkcmVzcyhmcmFtZUdQUiwg
R2VuZXJhdG9yRnJhbWU6OmxvY2FsT2Zmc2V0KGdlbmVyYXRvckxvY2FsSW5kZXgpKSk7CisKKyAg
ICAgICAgbm9SZXN1bHQobm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIEdl
dEdlbmVyYXRvckxvY2FsOiB7CisgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGZyYW1lKHRo
aXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsK
KworICAgICAgICBHUFJSZWcgZnJhbWVHUFIgPSBmcmFtZS5ncHIoKTsKKyAgICAgICAgR1BSUmVn
IHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKyAgICAgICAgdW5zaWduZWQgZ2VuZXJhdG9yTG9j
YWxJbmRleCA9IG5vZGUtPmdlbmVyYXRvckxvY2FsSW5kZXgoKTsKKworICAgICAgICBtX2ppdC5s
b2FkNjQoSklUQ29tcGlsZXI6OkFkZHJlc3MoZnJhbWVHUFIsIEdlbmVyYXRvckZyYW1lOjpsb2Nh
bE9mZnNldChnZW5lcmF0b3JMb2NhbEluZGV4KSksIHJlc3VsdEdQUik7CisgICAgICAgIGpzVmFs
dWVSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNh
c2UgUmVzaXplR2VuZXJhdG9yTG9jYWxzOiB7CisgICAgICAgIGNvbXBpbGVSZXNpemVHZW5lcmF0
b3JMb2NhbHMobm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICBjYXNlIFByb2ZpbGVU
eXBlOiB7CiAgICAgICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMSgp
KTsKICAgICAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2gxKHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNl
LmNwcAppbmRleCA3MmYyMjAwY2VhMTBiOTgxMGRiYThjN2IxOWZlZmYyNGRhYTVkYWUzLi5kN2M3
MDU2NmZjNzM3Zjg5MGYxNTZiNTM0NTA5ZDlhMGMwNzM4ZTliIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNl
LmNwcApAQCAtMjgxLDYgKzI4MSwxMSBAQCBjbGFzcyBTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFz
ZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICAgICAgY29uc2lkZXJCYXJyaWVyKG1fbm9k
ZS0+Y2hpbGQxKCksIG1fbm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICBjYXNlIFNldEdlbmVyYXRvckxvY2FsOiB7Cisg
ICAgICAgICAgICAgICAgY29uc2lkZXJCYXJyaWVyKG1fbm9kZS0+Y2hpbGQxKCksIG1fbm9kZS0+
Y2hpbGQyKCkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgIAogICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICBicmVhazsK
QEAgLTI5Niw2ICszMDEsNyBAQCBjbGFzcyBTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZSA6IHB1
YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICBjYXNlIE5ld0FycmF5QnVmZmVyOgogICAgICAgICAg
ICAgY2FzZSBOZXdUeXBlZEFycmF5OgogICAgICAgICAgICAgY2FzZSBOZXdSZWdleHA6CisgICAg
ICAgICAgICBjYXNlIE5ld0dlbmVyYXRvckZyYW1lOgogICAgICAgICAgICAgY2FzZSBNYXRlcmlh
bGl6ZU5ld09iamVjdDoKICAgICAgICAgICAgIGNhc2UgTWF0ZXJpYWxpemVDcmVhdGVBY3RpdmF0
aW9uOgogICAgICAgICAgICAgY2FzZSBOZXdTdHJpbmdPYmplY3Q6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2Uu
Y3BwCmluZGV4IDJjMDU1OTg0OTg5OWJkZjZmYjExMTc1OTdlMTA1NGJmZjM1NDY2OTMuLmUxYWVm
MGIyYzM5M2Y1NjE5NDhjY2E1YTk1OWYyZTA3MTA4ODQzODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2UuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2Uu
Y3BwCkBAIC0xNDksNiArMTQ5LDkgQEAgY2xhc3MgU3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2Ug
OiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgICAgIGNhc2UgTmV3R2VuZXJhdG9yRnVuY3Rp
b246CiAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyU3RydWN0dXJlKG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyktPmdlbmVyYXRvckZ1bmN0aW9uU3RydWN0
dXJlKCkpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNl
IE5ld0dlbmVyYXRvckZyYW1lOgorICAgICAgICAgICAgICAgICAgICByZWdpc3RlclN0cnVjdHVy
ZShtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5nZW5lcmF0
b3JGcmFtZVN0cnVjdHVyZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0
cmFjdEhlYXBSZXBvc2l0b3J5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJz
dHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAKaW5kZXggOTdjMDc4NGJiNDJiYzkxOWQwNmNmNTIzYzQx
ZTAyNDZhNTM1MWQ5MS4uNjlkODlkNmFkNDI1NDkyM2JjM2ZhYjNjN2FjYTIwODk1YzU1ZTVjYSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBv
c2l0b3J5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVh
cFJlcG9zaXRvcnkuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJEaXJlY3RBcmd1
bWVudHMuaCIKICNpbmNsdWRlICJGVExBYmJyZXZpYXRpb25zLmgiCisjaW5jbHVkZSAiR2VuZXJh
dG9yRnJhbWUuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJKU0Vudmly
b25tZW50UmVjb3JkLmgiCiAjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmgiCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9z
aXRvcnkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3Np
dG9yeS5oCmluZGV4IDc3ZTU3OTg2OTQwYzZhYzk2Zjg3ZjFmOTQ1YzQ2MjUxMjg4NjMwZjAuLjQ4
ODYzYzBiZDMwZjY0NTc2NTMxMDhiZjQ1NjliMTJjOTQwODU4YWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCkBAIC00
Nyw2ICs0Nyw4IEBACiAgICAgbWFjcm8oRGlyZWN0QXJndW1lbnRzX2xlbmd0aCwgRGlyZWN0QXJn
dW1lbnRzOjpvZmZzZXRPZkxlbmd0aCgpKSBcCiAgICAgbWFjcm8oRGlyZWN0QXJndW1lbnRzX21p
bkNhcGFjaXR5LCBEaXJlY3RBcmd1bWVudHM6Om9mZnNldE9mTWluQ2FwYWNpdHkoKSkgXAogICAg
IG1hY3JvKERpcmVjdEFyZ3VtZW50c19vdmVycmlkZXMsIERpcmVjdEFyZ3VtZW50czo6b2Zmc2V0
T2ZPdmVycmlkZXMoKSkgXAorICAgIG1hY3JvKEdlbmVyYXRvckZyYW1lX251bWJlck9mQ2FsbGVl
TG9jYWxzLCBHZW5lcmF0b3JGcmFtZTo6bnVtYmVyT2ZDYWxsZWVMb2NhbHNPZmZzZXQoKSkgXAor
ICAgIG1hY3JvKEdlbmVyYXRvckZyYW1lX251bWJlck9mU2F2ZWRDYWxsZWVMb2NhbHMsIEdlbmVy
YXRvckZyYW1lOjpudW1iZXJPZlNhdmVkQ2FsbGVlTG9jYWxzT2Zmc2V0KCkpIFwKICAgICBtYWNy
byhHZXR0ZXJTZXR0ZXJfZ2V0dGVyLCBHZXR0ZXJTZXR0ZXI6Om9mZnNldE9mR2V0dGVyKCkpIFwK
ICAgICBtYWNybyhHZXR0ZXJTZXR0ZXJfc2V0dGVyLCBHZXR0ZXJTZXR0ZXI6Om9mZnNldE9mU2V0
dGVyKCkpIFwKICAgICBtYWNybyhKU0FycmF5QnVmZmVyVmlld19sZW5ndGgsIEpTQXJyYXlCdWZm
ZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSBcCkBAIC05MSw2ICs5Myw3IEBACiAKICNkZWZpbmUg
Rk9SX0VBQ0hfSU5ERVhFRF9BQlNUUkFDVF9IRUFQKG1hY3JvKSBcCiAgICAgbWFjcm8oRGlyZWN0
QXJndW1lbnRzX3N0b3JhZ2UsIERpcmVjdEFyZ3VtZW50czo6c3RvcmFnZU9mZnNldCgpLCBzaXpl
b2YoRW5jb2RlZEpTVmFsdWUpKSBcCisgICAgbWFjcm8oR2VuZXJhdG9yRnJhbWVfY2FsbGVlTG9j
YWxzLCBHZW5lcmF0b3JGcmFtZTo6b2Zmc2V0T2ZMb2NhbHMoKSwgc2l6ZW9mKFdyaXRlQmFycmll
cjxVbmtub3duPikpIFwKICAgICBtYWNybyhKU0Vudmlyb25tZW50UmVjb3JkX3ZhcmlhYmxlcywg
SlNFbnZpcm9ubWVudFJlY29yZDo6b2Zmc2V0T2ZWYXJpYWJsZXMoKSwgc2l6ZW9mKEVuY29kZWRK
U1ZhbHVlKSkgXAogICAgIG1hY3JvKEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcl9jYWNoZWRQcm9w
ZXJ0eU5hbWVzVmVjdG9yQ29udGVudHMsIDAsIHNpemVvZihXcml0ZUJhcnJpZXI8SlNTdHJpbmc+
KSkgXAogICAgIG1hY3JvKEpTUm9wZVN0cmluZ19maWJlcnMsIEpTUm9wZVN0cmluZzo6b2Zmc2V0
T2ZGaWJlcnMoKSwgc2l6ZW9mKFdyaXRlQmFycmllcjxKU1N0cmluZz4pKSBcCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKaW5kZXggZDJhNDkwYzJhNjdl
NmRiOGI5YTVhNzk2NjRlNTY1ZTNkNmQ5NTFkYy4uMGUxZGZlODc1ZTEwYTViNTY1NTZmYTlkZDVi
ZmRiM2U2OTBmODM4OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExD
YXBhYmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJp
bGl0aWVzLmNwcApAQCAtNzIsNiArNzIsNyBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNv
bXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIE5ld09iamVjdDoKICAgICBjYXNlIE5ld0FycmF5
OgogICAgIGNhc2UgTmV3QXJyYXlCdWZmZXI6CisgICAgY2FzZSBOZXdHZW5lcmF0b3JGcmFtZToK
ICAgICBjYXNlIEdldEJ5T2Zmc2V0OgogICAgIGNhc2UgR2V0R2V0dGVyU2V0dGVyQnlPZmZzZXQ6
CiAgICAgY2FzZSBHZXRHZXR0ZXI6CkBAIC0yMTYsNiArMjE3LDkgQEAgaW5saW5lIENhcGFiaWxp
dHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBQdXRTZXR0ZXJCeVZhbDoK
ICAgICBjYXNlIENvcHlSZXN0OgogICAgIGNhc2UgR2V0UmVzdExlbmd0aDoKKyAgICBjYXNlIFNl
dEdlbmVyYXRvckxvY2FsOgorICAgIGNhc2UgR2V0R2VuZXJhdG9yTG9jYWw6CisgICAgY2FzZSBS
ZXNpemVHZW5lcmF0b3JMb2NhbHM6CiAgICAgICAgIC8vIFRoZXNlIGFyZSBPSy4KICAgICAgICAg
YnJlYWs7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJE
RkdUb0xMVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExW
TS5jcHAKaW5kZXggM2MwMDhmZGJiYjUwYzU2YTk3OGNhNmUwZDc0Mzg4MmJmZDI1M2NiOS4uYTVh
ZTE2ODQ3Njg5YjIzOTA3NDk3NDljMGI3ODg4ZDE0ODFkYjZiNyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAKQEAgLTUzLDYgKzUzLDcgQEAK
ICNpbmNsdWRlICJGVExQYXRjaHBvaW50RXhjZXB0aW9uSGFuZGxlLmgiCiAjaW5jbHVkZSAiRlRM
VGh1bmtzLmgiCiAjaW5jbHVkZSAiRlRMV2VpZ2h0ZWRUYXJnZXQuaCIKKyNpbmNsdWRlICJHZW5l
cmF0b3JGcmFtZS5oIgogI2luY2x1ZGUgIkpJVEFkZEdlbmVyYXRvci5oIgogI2luY2x1ZGUgIkpJ
VEJpdEFuZEdlbmVyYXRvci5oIgogI2luY2x1ZGUgIkpJVEJpdE9yR2VuZXJhdG9yLmgiCkBAIC04
MzksNiArODQwLDkgQEAgY2xhc3MgTG93ZXJERkdUb0xMVk0gewogICAgICAgICBjYXNlIE5ld0Fy
cmF5V2l0aFNpemU6CiAgICAgICAgICAgICBjb21waWxlTmV3QXJyYXlXaXRoU2l6ZSgpOwogICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTmV3R2VuZXJhdG9yRnJhbWU6CisgICAgICAg
ICAgICBjb21waWxlTmV3R2VuZXJhdG9yRnJhbWUoKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0OgogICAgICAgICAgICAgY29tcGlsZUdl
dFR5cGVkQXJyYXlCeXRlT2Zmc2V0KCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTEwNzEsNiAr
MTA3NSwxNSBAQCBjbGFzcyBMb3dlckRGR1RvTExWTSB7CiAgICAgICAgIGNhc2UgR2V0UmVzdExl
bmd0aDoKICAgICAgICAgICAgIGNvbXBpbGVHZXRSZXN0TGVuZ3RoKCk7CiAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBSZXNpemVHZW5lcmF0b3JMb2NhbHM6CisgICAgICAgICAgICBj
b21waWxlUmVzaXplR2VuZXJhdG9yTG9jYWxzKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBTZXRHZW5lcmF0b3JMb2NhbDoKKyAgICAgICAgICAgIGNvbXBpbGVTZXRHZW5lcmF0
b3JMb2NhbCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR2V0R2VuZXJhdG9y
TG9jYWw6CisgICAgICAgICAgICBjb21waWxlR2V0R2VuZXJhdG9yTG9jYWwoKTsKKyAgICAgICAg
ICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgUGhhbnRvbUxvY2FsOgogICAgICAgICBjYXNlIExv
b3BIaW50OgpAQCAtMzkxNiw2ICszOTI5LDI4IEBAIGNsYXNzIExvd2VyREZHVG9MTFZNIHsKICAg
ICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7CiAgICAgICAgIHNl
dEludDMyKG1fb3V0LnBoaShtX291dC5pbnQzMiwgemVyb0xlbmd0aFJlc3VsdCwgbm9uWmVyb0xl
bmd0aFJlc3VsdCkpOwogICAgIH0KKworICAgIHZvaWQgY29tcGlsZVJlc2l6ZUdlbmVyYXRvckxv
Y2FscygpCisgICAgeworICAgICAgICBMVmFsdWUgZnJhbWUgPSBsb3dDZWxsKG1fbm9kZS0+Y2hp
bGQxKCkpOworICAgICAgICBtX291dC5zdG9yZTMyKG1fb3V0LmNvbnN0SW50MzIobV9ub2RlLT5n
ZW5lcmF0b3JGcmFtZUxvY2FscygpKSwgZnJhbWUsIG1faGVhcHMuR2VuZXJhdG9yRnJhbWVfbnVt
YmVyT2ZTYXZlZENhbGxlZUxvY2Fscyk7CisgICAgfQorCisgICAgdm9pZCBjb21waWxlU2V0R2Vu
ZXJhdG9yTG9jYWwoKQorICAgIHsKKyAgICAgICAgbV9vdXQuc3RvcmU2NCgKKyAgICAgICAgICAg
IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDIoKSksCisgICAgICAgICAgICBsb3dDZWxsKG1fbm9k
ZS0+Y2hpbGQxKCkpLAorICAgICAgICAgICAgbV9oZWFwcy5HZW5lcmF0b3JGcmFtZV9jYWxsZWVM
b2NhbHNbbV9ub2RlLT5nZW5lcmF0b3JMb2NhbEluZGV4KCldKTsKKyAgICB9CisKKyAgICB2b2lk
IGNvbXBpbGVHZXRHZW5lcmF0b3JMb2NhbCgpCisgICAgeworICAgICAgICBzZXRKU1ZhbHVlKAor
ICAgICAgICAgICAgbV9vdXQubG9hZDY0KAorICAgICAgICAgICAgICAgIGxvd0NlbGwobV9ub2Rl
LT5jaGlsZDEoKSksCisgICAgICAgICAgICAgICAgbV9oZWFwcy5HZW5lcmF0b3JGcmFtZV9jYWxs
ZWVMb2NhbHNbbV9ub2RlLT5nZW5lcmF0b3JMb2NhbEluZGV4KCldKSk7CisgICAgfQogICAgIAog
ICAgIHZvaWQgY29tcGlsZU5ld09iamVjdCgpCiAgICAgewpAQCAtNDE1MCw2ICs0MTg1LDQyIEBA
IGNsYXNzIExvd2VyREZHVG9MTFZNIHsKICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKHN0
cnVjdHVyZSkpOwogICAgICAgICBzZXRKU1ZhbHVlKHZtQ2FsbChtX291dC5pbnQ2NCwgbV9vdXQu
b3BlcmF0aW9uKG9wZXJhdGlvbk5ld0FycmF5V2l0aFNpemUpLCBtX2NhbGxGcmFtZSwgc3RydWN0
dXJlVmFsdWUsIHB1YmxpY0xlbmd0aCkpOwogICAgIH0KKworICAgIHZvaWQgY29tcGlsZU5ld0dl
bmVyYXRvckZyYW1lKCkKKyAgICB7CisgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QgPSBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyk7Cisg
ICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT5nZW5lcmF0b3JGcmFt
ZVN0cnVjdHVyZSgpOworICAgICAgICB1bnNpZ25lZCBnZW5lcmF0b3JMb2NhbHNTaXplID0gbV9u
b2RlLT5nZW5lcmF0b3JMb2NhbHNTaXplKCk7CisKKyAgICAgICAgTEJhc2ljQmxvY2sgc2xvd1Bh
dGggPSBGVExfTkVXX0JMT0NLKG1fb3V0LCAoIk5ld0dlbmVyYXRvckZyYW1lIHNsb3cgcGF0aCIp
KTsKKyAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gRlRMX05FV19CTE9DSyhtX291
dCwgKCJOZXdHZW5lcmF0b3JGcmFtZSBjb250aW51YXRpb24iKSk7CisKKyAgICAgICAgTEJhc2lj
QmxvY2sgbGFzdE5leHQgPSBtX291dC5pbnNlcnROZXdCbG9ja3NCZWZvcmUoc2xvd1BhdGgpOwor
ICAgICAgICBMVmFsdWUgZmFzdE9iamVjdCA9IGFsbG9jYXRlT2JqZWN0PEdlbmVyYXRvckZyYW1l
PihHZW5lcmF0b3JGcmFtZTo6YWxsb2NhdGlvblNpemVGb3JMb2NhbHMoZ2VuZXJhdG9yTG9jYWxz
U2l6ZSksIHN0cnVjdHVyZSwgbV9vdXQuaW50UHRyWmVybywgc2xvd1BhdGgpOworICAgICAgICBt
X291dC5zdG9yZTMyKG1fb3V0LmNvbnN0SW50MzIoZ2VuZXJhdG9yTG9jYWxzU2l6ZSksIGZhc3RP
YmplY3QsIG1faGVhcHMuR2VuZXJhdG9yRnJhbWVfbnVtYmVyT2ZDYWxsZWVMb2NhbHMpOworICAg
ICAgICBtX291dC5zdG9yZTMyKG1fb3V0LmNvbnN0SW50MzIoMCksIGZhc3RPYmplY3QsIG1faGVh
cHMuR2VuZXJhdG9yRnJhbWVfbnVtYmVyT2ZTYXZlZENhbGxlZUxvY2Fscyk7CisKKyAgICAgICAg
SlNWYWx1ZSBlbXB0eVZhbHVlOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZ2Vu
ZXJhdG9yTG9jYWxzU2l6ZTsgKytpKQorICAgICAgICAgICAgbV9vdXQuc3RvcmU2NChtX291dC5j
b25zdEludDY0KEpTVmFsdWU6OmVuY29kZShlbXB0eVZhbHVlKSksIGZhc3RPYmplY3QsIG1faGVh
cHMuR2VuZXJhdG9yRnJhbWVfY2FsbGVlTG9jYWxzW2ldKTsKKworICAgICAgICBWYWx1ZUZyb21C
bG9jayBmYXN0UmVzdWx0ID0gbV9vdXQuYW5jaG9yKGZhc3RPYmplY3QpOworICAgICAgICBtX291
dC5qdW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8oc2xvd1BhdGgs
IGNvbnRpbnVhdGlvbik7CisgICAgICAgIFZlY3RvcjxMVmFsdWU+IHNsb3dQYXRoQXJndW1lbnRz
OworICAgICAgICBMVmFsdWUgY2FsbFJlc3VsdCA9IGxhenlTbG93UGF0aCgKKyAgICAgICAgICAg
IFs9XSAoY29uc3QgVmVjdG9yPExvY2F0aW9uPiYgbG9jYXRpb25zKSAtPiBSZWZQdHI8TGF6eVNs
b3dQYXRoOjpHZW5lcmF0b3I+IHsKKyAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlTGF6eUNh
bGxHZW5lcmF0b3IoCisgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbk5ld0dlbmVyYXRvckZy
YW1lLAorICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbnNbMF0uZGlyZWN0R1BSKCksIENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJ
bW0zMihnZW5lcmF0b3JMb2NhbHNTaXplKSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgVmFs
dWVGcm9tQmxvY2sgc2xvd1Jlc3VsdCA9IG1fb3V0LmFuY2hvcihjYWxsUmVzdWx0KTsKKyAgICAg
ICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOworCisgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNv
bnRpbnVhdGlvbiwgbGFzdE5leHQpOworICAgICAgICBzZXRKU1ZhbHVlKG1fb3V0LnBoaShtX291
dC5pbnRQdHIsIGZhc3RSZXN1bHQsIHNsb3dSZXN1bHQpKTsKKyAgICB9CiAgICAgCiAgICAgdm9p
ZCBjb21waWxlQWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2UoKQogICAgIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklULmNwcAppbmRleCBhM2JkZmE3Y2Q1ZDBmNTcyNDdmMWJlOGM0MGIyNTEwZDI5ZDgwMGZm
Li5kOTJiYzg3YzdiNjkwOTQxY2MyY2MyOThiYWZiY2ZmZjU3NjM2MWY1IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVQuY3BwCkBAIC0yMTcsNiArMjE3LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21w
aWxlTWFpblBhc3MoKQogICAgICAgICBERUZJTkVfT1Aob3BfYXNzZXJ0KQogICAgICAgICBERUZJ
TkVfT1Aob3Bfc2F2ZSkKICAgICAgICAgREVGSU5FX09QKG9wX3Jlc3VtZSkKKyAgICAgICAgREVG
SU5FX09QKG9wX25ld19nZW5lcmF0b3JfZnJhbWUpCiAgICAgICAgIERFRklORV9PUChvcF9kZWJ1
ZykKICAgICAgICAgREVGSU5FX09QKG9wX2RlbF9ieV9pZCkKICAgICAgICAgREVGSU5FX09QKG9w
X2RpdikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCmluZGV4IGRmN2IzZGM1ZTg5MjBlZTRlZjkyYmNh
Y2JhZWZmMWI0YzAwZDkzNjkuLmE4OGJiNjY3NGNjODUwYmI2NjlkN2NiY2QwYzhhZTdiYmYyMjQw
NTggMTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaApAQCAtNDk2LDYgKzQ5Niw3IEBACiAgICAgICAg
IHZvaWQgZW1pdF9vcF9hc3NlcnQoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29w
X3NhdmUoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX3Jlc3VtZShJbnN0cnVj
dGlvbiopOworICAgICAgICB2b2lkIGVtaXRfb3BfbmV3X2dlbmVyYXRvcl9mcmFtZShJbnN0cnVj
dGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZGVidWcoSW5zdHJ1Y3Rpb24qKTsKICAgICAg
ICAgdm9pZCBlbWl0X29wX2RlbF9ieV9pZChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVt
aXRfb3BfZGl2KEluc3RydWN0aW9uKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wY29kZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNv
ZGVzLmNwcAppbmRleCA3MzhjYjYzZmVkOTFiNDk4NTVkNWQwMzNkNDYzMzQ1ZmRkNDc2ZDliLi4w
NDg3ZjQ5NGY4NjU0NzFlY2E4NmIwOGNmY2Y5ZmIyZWM0NGIyOTFjIDEwMDc1NQotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJD
b3BpZWRTcGFjZUlubGluZXMuaCIKICNpbmNsdWRlICJEZWJ1Z2dlci5oIgogI2luY2x1ZGUgIkV4
Y2VwdGlvbi5oIgorI2luY2x1ZGUgIkdlbmVyYXRvckZyYW1lLmgiCiAjaW5jbHVkZSAiSGVhcC5o
IgogI2luY2x1ZGUgIkpJVElubGluZXMuaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCkBAIC04OTMs
NiArODk0LDQ2IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF90b19zdHJpbmcoSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlCiAgICAgc2xvd1BhdGhDYWxsLmNh
bGwoKTsKIH0KIAordm9pZCBKSVQ6OmVtaXRfb3Bfc2F2ZShJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQoreworICAgIGludCBmcmFtZSA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9w
ZXJhbmQ7CisgICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gY3VycmVudEluc3Ry
dWN0aW9uWzJdLnUudW5zaWduZWRWYWx1ZTsKKyAgICBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZl
bmVzcyA9IG1fY29kZUJsb2NrLT5saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZChsaXZlQ2FsbGVlTG9j
YWxzSW5kZXgpOworCisgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihmcmFtZSwgcmVnVDEpOwor
CisgICAgLy8gQWxsb2NhdGUgZ2VuZXJhdG9yIGZyYW1lIGxvY2Fscy4KKyAgICBzdG9yZTMyKFRy
dXN0ZWRJbW0zMihsaXZlbmVzcy5iaXRDb3VudCgpKSwgQWRkcmVzcyhyZWdUMSwgR2VuZXJhdG9y
RnJhbWU6Om51bWJlck9mU2F2ZWRDYWxsZWVMb2NhbHNPZmZzZXQoKSkpOworCisgICAgdW5zaWdu
ZWQgZ2VuZXJhdG9yTG9jYWxJbmRleCA9IDA7CisgICAgbGl2ZW5lc3MuZm9yRWFjaFNldEJpdChb
Jl0oc2l6ZV90IGxvY2FsKSB7CisgICAgICAgIFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kID0gdmly
dHVhbFJlZ2lzdGVyRm9yTG9jYWwobG9jYWwpOworICAgICAgICBlbWl0R2V0VmlydHVhbFJlZ2lz
dGVyKG9wZXJhbmQub2Zmc2V0KCksIHJlZ1QwKTsKKyAgICAgICAgc3RvcmU2NChyZWdUMCwgQWRk
cmVzcyhyZWdUMSwgR2VuZXJhdG9yRnJhbWU6OmxvY2FsT2Zmc2V0KGdlbmVyYXRvckxvY2FsSW5k
ZXgpKSk7CisgICAgICAgIGdlbmVyYXRvckxvY2FsSW5kZXgrKzsKKyAgICB9KTsKK30KKwordm9p
ZCBKSVQ6OmVtaXRfb3BfcmVzdW1lKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7
CisgICAgaW50IGZyYW1lID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKKyAgICB1
bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS51
bnNpZ25lZFZhbHVlOworICAgIGNvbnN0IEZhc3RCaXRWZWN0b3ImIGxpdmVuZXNzID0gbV9jb2Rl
QmxvY2stPmxpdmVDYWxsZWVMb2NhbHNBdFlpZWxkKGxpdmVDYWxsZWVMb2NhbHNJbmRleCk7CisK
KyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGZyYW1lLCByZWdUMSk7CisKKyAgICB1bnNpZ25l
ZCBnZW5lcmF0b3JMb2NhbEluZGV4ID0gMDsKKyAgICBsaXZlbmVzcy5mb3JFYWNoU2V0Qml0KFsm
XShzaXplX3QgbG9jYWwpIHsKKyAgICAgICAgVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQgPSB2aXJ0
dWFsUmVnaXN0ZXJGb3JMb2NhbChsb2NhbCk7CisgICAgICAgIGxvYWQ2NChBZGRyZXNzKHJlZ1Qx
LCBHZW5lcmF0b3JGcmFtZTo6bG9jYWxPZmZzZXQoZ2VuZXJhdG9yTG9jYWxJbmRleCkpLCByZWdU
MCk7CisgICAgICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIob3BlcmFuZC5vZmZzZXQoKSk7Cisg
ICAgICAgIGdlbmVyYXRvckxvY2FsSW5kZXgrKzsKKyAgICB9KTsKKworICAgIC8vIERlYWxsb2Nh
dGUgZ2VuZXJhdG9yIGZyYW1lIGxvY2Fscy4KKyAgICBzdG9yZTMyKFRydXN0ZWRJbW0zMigwKSwg
QWRkcmVzcyhyZWdUMSwgR2VuZXJhdG9yRnJhbWU6Om51bWJlck9mU2F2ZWRDYWxsZWVMb2NhbHNP
ZmZzZXQoKSkpOworfQorCiAjZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkKIAogdm9pZCBKSVQ6OmVt
aXRfb3BfbG9vcF9oaW50KEluc3RydWN0aW9uKikKQEAgLTE0MjksMTUgKzE0NzAsOSBAQCB2b2lk
IEpJVDo6ZW1pdF9vcF9nZXRfcmVzdF9sZW5ndGgoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKICNlbmRpZgogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9zYXZlKEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCi17Ci0gICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0
aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9zYXZlKTsKLSAgICBzbG93UGF0aENh
bGwuY2FsbCgpOwotfQotCi12b2lkIEpJVDo6ZW1pdF9vcF9yZXN1bWUoSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX25ld19nZW5lcmF0b3JfZnJhbWUo
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKLSAgICBKSVRTbG93UGF0aENhbGwg
c2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX3Jlc3VtZSk7
CisgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rp
b24sIHNsb3dfcGF0aF9uZXdfZ2VuZXJhdG9yX2ZyYW1lKTsKICAgICBzbG93UGF0aENhbGwuY2Fs
bCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29k
ZXMzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5j
cHAKaW5kZXggYzMyNmZmM2UwMWU1YTQyNDNlN2I3OGJlZTg1MmNmYjc5N2QzOTJlZS4uZjdiYTEx
YmMwY2FhZjQzNGE2YzFiMTI0YTY3NDNkYzY0MGZjYjA1ZSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1
ZGUgIkNDYWxsSGVscGVycy5oIgogI2luY2x1ZGUgIkRlYnVnZ2VyLmgiCiAjaW5jbHVkZSAiRXhj
ZXB0aW9uLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yRnJhbWUuaCIKICNpbmNsdWRlICJKSVRJbmxp
bmVzLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgogI2luY2x1ZGUgIkpTQ2VsbC5oIgpAQCAtMTMy
OCw2ICsxMzI5LDQ4IEBAIHZvaWQgSklUOjplbWl0X29wX3Byb2ZpbGVfdHlwZShJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQogICAgIGp1bXBUb0VuZC5saW5rKHRoaXMpOwogfQogCit2
b2lkIEpJVDo6ZW1pdF9vcF9zYXZlKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7
CisgICAgaW50IGZyYW1lID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKKyAgICB1
bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS51
bnNpZ25lZFZhbHVlOworICAgIGNvbnN0IEZhc3RCaXRWZWN0b3ImIGxpdmVuZXNzID0gbV9jb2Rl
QmxvY2stPmxpdmVDYWxsZWVMb2NhbHNBdFlpZWxkKGxpdmVDYWxsZWVMb2NhbHNJbmRleCk7CisK
KyAgICBlbWl0TG9hZFBheWxvYWQoZnJhbWUsIHJlZ1QyKTsKKworICAgIC8vIEFsbG9jYXRlIGdl
bmVyYXRvciBmcmFtZSBsb2NhbHMuCisgICAgc3RvcmUzMihUcnVzdGVkSW1tMzIobGl2ZW5lc3Mu
Yml0Q291bnQoKSksIEFkZHJlc3MocmVnVDIsIEdlbmVyYXRvckZyYW1lOjpudW1iZXJPZlNhdmVk
Q2FsbGVlTG9jYWxzT2Zmc2V0KCkpKTsKKworICAgIHVuc2lnbmVkIGdlbmVyYXRvckxvY2FsSW5k
ZXggPSAwOworICAgIGxpdmVuZXNzLmZvckVhY2hTZXRCaXQoWyZdKHNpemVfdCBsb2NhbCkgewor
ICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCA9IHZpcnR1YWxSZWdpc3RlckZvckxvY2Fs
KGxvY2FsKTsKKyAgICAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihvcGVyYW5kLm9mZnNldCgp
LCBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApKTsKKyAgICAgICAgc3RvcmUzMihyZWdUMSwgQWRk
cmVzcyhyZWdUMiwgR2VuZXJhdG9yRnJhbWU6OmxvY2FsT2Zmc2V0KGdlbmVyYXRvckxvY2FsSW5k
ZXgpICsgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnRhZykpKTsKKyAgICAgICAg
c3RvcmUzMihyZWdUMCwgQWRkcmVzcyhyZWdUMiwgR2VuZXJhdG9yRnJhbWU6OmxvY2FsT2Zmc2V0
KGdlbmVyYXRvckxvY2FsSW5kZXgpICsgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRz
LnBheWxvYWQpKSk7CisgICAgICAgIGdlbmVyYXRvckxvY2FsSW5kZXgrKzsKKyAgICB9KTsKK30K
Kwordm9pZCBKSVQ6OmVtaXRfb3BfcmVzdW1lKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCit7CisgICAgaW50IGZyYW1lID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsK
KyAgICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSBjdXJyZW50SW5zdHJ1Y3Rpb25b
Ml0udS51bnNpZ25lZFZhbHVlOworICAgIGNvbnN0IEZhc3RCaXRWZWN0b3ImIGxpdmVuZXNzID0g
bV9jb2RlQmxvY2stPmxpdmVDYWxsZWVMb2NhbHNBdFlpZWxkKGxpdmVDYWxsZWVMb2NhbHNJbmRl
eCk7CisKKyAgICBlbWl0TG9hZFBheWxvYWQoZnJhbWUsIHJlZ1QyKTsKKworICAgIHVuc2lnbmVk
IGdlbmVyYXRvckxvY2FsSW5kZXggPSAwOworICAgIGxpdmVuZXNzLmZvckVhY2hTZXRCaXQoWyZd
KHNpemVfdCBsb2NhbCkgeworICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCA9IHZpcnR1
YWxSZWdpc3RlckZvckxvY2FsKGxvY2FsKTsKKyAgICAgICAgbG9hZDMyKEFkZHJlc3MocmVnVDIs
IEdlbmVyYXRvckZyYW1lOjpsb2NhbE9mZnNldChnZW5lcmF0b3JMb2NhbEluZGV4KSArIE9CSkVD
VF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy50YWcpKSwgcmVnVDEpOworICAgICAgICBsb2Fk
MzIoQWRkcmVzcyhyZWdUMiwgR2VuZXJhdG9yRnJhbWU6OmxvY2FsT2Zmc2V0KGdlbmVyYXRvckxv
Y2FsSW5kZXgpICsgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnBheWxvYWQpKSwg
cmVnVDApOworICAgICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKG9wZXJhbmQub2Zmc2V0KCks
IEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdUMCkpOworICAgICAgICBnZW5lcmF0b3JMb2NhbEluZGV4
Kys7CisgICAgfSk7CisKKyAgICAvLyBEZWFsbG9jYXRlIGdlbmVyYXRvciBmcmFtZSBsb2NhbHMu
CisgICAgc3RvcmUzMihUcnVzdGVkSW1tMzIoMCksIEFkZHJlc3MocmVnVDIsIEdlbmVyYXRvckZy
YW1lOjpudW1iZXJPZlNhdmVkQ2FsbGVlTG9jYWxzT2Zmc2V0KCkpKTsKK30KKwogfSAvLyBuYW1l
c3BhY2UgSlNDCiAKICNlbmRpZiAvLyBVU0UoSlNWQUxVRTMyXzY0KQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcAppbmRleCAy
YjRlNjE5ODZkMzEyYWM5ZTRmODczNzNjZTdhYTBiOWZkMGNlNzVhLi5hZmUwOTY4NDg4ZjQ2ZDE2
NzVjOTE3ZWNiMmI2MjBjMDA1NjEyMjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcApAQCAtMzIsNiArMzIsNyBAQAog
I2luY2x1ZGUgIkRpcmVjdEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbi5oIgogI2lu
Y2x1ZGUgIkV4ZWN1dGFibGUuaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JGcmFtZS5oIgogI2luY2x1
ZGUgIkhlYXAuaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpTQXJyYXku
aCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVy
cHJldGVyLmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyLmFzbQppbmRleCBjZDRjZTkwNjNiMTk1NzVhOTU3ZTNjYTNlMjJiZTU3OTE1YmRiNTlhLi4w
MGE3YWRiODlkNWM1ZTA5NTQyMTE1NmQ0ZmU0YmQ2N2UxN2I2YWE3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCkBAIC0xMjU2
LDYgKzEyNTYsMTIgQEAgX2xsaW50X29wX25ld19yZWdleHA6CiAgICAgZGlzcGF0Y2goMykKIAog
CitfbGxpbnRfb3BfbmV3X2dlbmVyYXRvcl9mcmFtZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfbmV3X2dlbmVyYXRvcl9mcmFtZSkKKyAgICBkaXNw
YXRjaCgzKQorCisKIF9sbGludF9vcF9sZXNzOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBj
YWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF9sZXNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Q
YXJzZXIuY3BwCmluZGV4IGUwMGQ4MDAyMjIwNDM5MzIxY2JkMGNkZTE2ZjcyOWU5MzZmODYyMjUu
Ljc2YTRhMjAwMDE2NDEyY2Q3NjdjZTkxYmUwOWFkNjZmYTQ0ODgxZDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKQEAgLTI1MSw3ICsyNTEsNyBAQAogICAgIGlmICht
X2xleGVyLT5pc1JlcGFyc2luZ0Z1bmN0aW9uKCkpIHsKICAgICAgICAgUGFyc2VyRnVuY3Rpb25J
bmZvPEFTVEJ1aWxkZXI+IGZ1bmN0aW9uSW5mbzsKICAgICAgICAgaWYgKHBhcnNlTW9kZSA9PSBT
b3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckJvZHlNb2RlKQotICAgICAgICAgICAgZnVuY3Rpb25J
bmZvLnBhcmFtZXRlcnMgPSBjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKGNvbnRleHQpOworICAg
ICAgICAgICAgZnVuY3Rpb25JbmZvLnBhcmFtZXRlcnMgPSBjcmVhdGVHZW5lcmF0b3JQYXJhbWV0
ZXJzKGNvbnRleHQsIGZ1bmN0aW9uSW5mby5wYXJhbWV0ZXJDb3VudCk7CiAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgIHBhcnNlRnVuY3Rpb25QYXJhbWV0ZXJzKGNvbnRleHQsIHBhcnNlTW9kZSwg
ZnVuY3Rpb25JbmZvKTsKICAgICAgICAgbV9wYXJhbWV0ZXJzID0gZnVuY3Rpb25JbmZvLnBhcmFt
ZXRlcnM7CkBAIC01MjgsMTAgKzUyOCw5IEBACiAKICAgICBQYXJzZXJGdW5jdGlvbkluZm88VHJl
ZUJ1aWxkZXI+IGluZm87CiAgICAgaW5mby5uYW1lID0gJm1fdm0tPnByb3BlcnR5TmFtZXMtPm51
bGxJZGVudGlmaWVyOwotICAgIGluZm8ucGFyYW1ldGVycyA9IGNyZWF0ZUdlbmVyYXRvclBhcmFt
ZXRlcnMoY29udGV4dCk7CisgICAgaW5mby5wYXJhbWV0ZXJzID0gY3JlYXRlR2VuZXJhdG9yUGFy
YW1ldGVycyhjb250ZXh0LCBpbmZvLnBhcmFtZXRlckNvdW50KTsKICAgICBpbmZvLnN0YXJ0T2Zm
c2V0ID0gcGFyYW1ldGVyc1N0YXJ0OwogICAgIGluZm8uc3RhcnRMaW5lID0gdG9rZW5MaW5lKCk7
Ci0gICAgaW5mby5wYXJhbWV0ZXJDb3VudCA9IDQ7IC8vIGdlbmVyYXRvciwgc3RhdGUsIHZhbHVl
LCByZXN1bWUgbW9kZQogCiAgICAgewogICAgICAgICBBdXRvUG9wU2NvcGVSZWYgZ2VuZXJhdG9y
Qm9keVNjb3BlKHRoaXMsIHB1c2hTY29wZSgpKTsKQEAgLTE4MjQsMzIgKzE4MjMsMzAgQEAgc3Rh
dGljIGNvbnN0IGNoYXIqIHN0cmluZ0ZvckZ1bmN0aW9uTW9kZShTb3VyY2VQYXJzZU1vZGUgbW9k
ZSkKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KLXRlbXBsYXRlIDxjbGFzcyBU
cmVlQnVpbGRlcj4gdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkZvcm1hbFBhcmFtZXRlckxpc3QgUGFy
c2VyPExleGVyVHlwZT46OmNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMoVHJlZUJ1aWxkZXImIGNv
bnRleHQpCit0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IHR5cGVuYW1lIFRyZWVCdWlsZGVy
OjpGb3JtYWxQYXJhbWV0ZXJMaXN0IFBhcnNlcjxMZXhlclR5cGU+OjpjcmVhdGVHZW5lcmF0b3JQ
YXJhbWV0ZXJzKFRyZWVCdWlsZGVyJiBjb250ZXh0LCB1bnNpZ25lZCYgcGFyYW1ldGVyQ291bnQp
CiB7CiAgICAgYXV0byBwYXJhbWV0ZXJzID0gY29udGV4dC5jcmVhdGVGb3JtYWxQYXJhbWV0ZXJM
aXN0KCk7CiAKICAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsK
ICAgICBKU1RleHRQb3NpdGlvbiBwb3NpdGlvbiA9IHRva2VuU3RhcnRQb3NpdGlvbigpOwogCi0g
ICAgLy8gQGdlbmVyYXRvcgotICAgIGRlY2xhcmVQYXJhbWV0ZXIoJm1fdm0tPnByb3BlcnR5TmFt
ZXMtPmdlbmVyYXRvclByaXZhdGVOYW1lKTsKLSAgICBhdXRvIGdlbmVyYXRvciA9IGNvbnRleHQu
Y3JlYXRlQmluZGluZ0xvY2F0aW9uKGxvY2F0aW9uLCBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5nZW5l
cmF0b3JQcml2YXRlTmFtZSwgcG9zaXRpb24sIHBvc2l0aW9uLCBBc3NpZ25tZW50Q29udGV4dDo6
RGVjbGFyYXRpb25TdGF0ZW1lbnQpOwotICAgIGNvbnRleHQuYXBwZW5kUGFyYW1ldGVyKHBhcmFt
ZXRlcnMsIGdlbmVyYXRvciwgMCk7CisgICAgYXV0byBhZGRQYXJhbWV0ZXIgPSBbJl0oY29uc3Qg
SWRlbnRpZmllciYgbmFtZSkgeworICAgICAgICBkZWNsYXJlUGFyYW1ldGVyKCZuYW1lKTsKKyAg
ICAgICAgYXV0byBiaW5kaW5nID0gY29udGV4dC5jcmVhdGVCaW5kaW5nTG9jYXRpb24obG9jYXRp
b24sIG5hbWUsIHBvc2l0aW9uLCBwb3NpdGlvbiwgQXNzaWdubWVudENvbnRleHQ6OkRlY2xhcmF0
aW9uU3RhdGVtZW50KTsKKyAgICAgICAgY29udGV4dC5hcHBlbmRQYXJhbWV0ZXIocGFyYW1ldGVy
cywgYmluZGluZywgMCk7CisgICAgICAgICsrcGFyYW1ldGVyQ291bnQ7CisgICAgfTsKIAorICAg
IC8vIEBnZW5lcmF0b3IKKyAgICBhZGRQYXJhbWV0ZXIobV92bS0+cHJvcGVydHlOYW1lcy0+Z2Vu
ZXJhdG9yUHJpdmF0ZU5hbWUpOwogICAgIC8vIEBnZW5lcmF0b3JTdGF0ZQotICAgIGRlY2xhcmVQ
YXJhbWV0ZXIoJm1fdm0tPnByb3BlcnR5TmFtZXMtPmdlbmVyYXRvclN0YXRlUHJpdmF0ZU5hbWUp
OwotICAgIGF1dG8gZ2VuZXJhdG9yU3RhdGUgPSBjb250ZXh0LmNyZWF0ZUJpbmRpbmdMb2NhdGlv
bihsb2NhdGlvbiwgbV92bS0+cHJvcGVydHlOYW1lcy0+Z2VuZXJhdG9yU3RhdGVQcml2YXRlTmFt
ZSwgcG9zaXRpb24sIHBvc2l0aW9uLCBBc3NpZ25tZW50Q29udGV4dDo6RGVjbGFyYXRpb25TdGF0
ZW1lbnQpOwotICAgIGNvbnRleHQuYXBwZW5kUGFyYW1ldGVyKHBhcmFtZXRlcnMsIGdlbmVyYXRv
clN0YXRlLCAwKTsKLQorICAgIGFkZFBhcmFtZXRlcihtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5nZW5l
cmF0b3JTdGF0ZVByaXZhdGVOYW1lKTsKICAgICAvLyBAZ2VuZXJhdG9yVmFsdWUKLSAgICBkZWNs
YXJlUGFyYW1ldGVyKCZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5nZW5lcmF0b3JWYWx1ZVByaXZhdGVO
YW1lKTsKLSAgICBhdXRvIGdlbmVyYXRvclZhbHVlID0gY29udGV4dC5jcmVhdGVCaW5kaW5nTG9j
YXRpb24obG9jYXRpb24sIG1fdm0tPnByb3BlcnR5TmFtZXMtPmdlbmVyYXRvclZhbHVlUHJpdmF0
ZU5hbWUsIHBvc2l0aW9uLCBwb3NpdGlvbiwgQXNzaWdubWVudENvbnRleHQ6OkRlY2xhcmF0aW9u
U3RhdGVtZW50KTsKLSAgICBjb250ZXh0LmFwcGVuZFBhcmFtZXRlcihwYXJhbWV0ZXJzLCBnZW5l
cmF0b3JWYWx1ZSwgMCk7Ci0KKyAgICBhZGRQYXJhbWV0ZXIobV92bS0+cHJvcGVydHlOYW1lcy0+
Z2VuZXJhdG9yVmFsdWVQcml2YXRlTmFtZSk7CiAgICAgLy8gQGdlbmVyYXRvclJlc3VtZU1vZGUK
LSAgICBkZWNsYXJlUGFyYW1ldGVyKCZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5nZW5lcmF0b3JSZXN1
bWVNb2RlUHJpdmF0ZU5hbWUpOwotICAgIGF1dG8gZ2VuZXJhdG9yUmVzdW1lTW9kZSA9IGNvbnRl
eHQuY3JlYXRlQmluZGluZ0xvY2F0aW9uKGxvY2F0aW9uLCBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5n
ZW5lcmF0b3JSZXN1bWVNb2RlUHJpdmF0ZU5hbWUsIHBvc2l0aW9uLCBwb3NpdGlvbiwgQXNzaWdu
bWVudENvbnRleHQ6OkRlY2xhcmF0aW9uU3RhdGVtZW50KTsKLSAgICBjb250ZXh0LmFwcGVuZFBh
cmFtZXRlcihwYXJhbWV0ZXJzLCBnZW5lcmF0b3JSZXN1bWVNb2RlLCAwKTsKKyAgICBhZGRQYXJh
bWV0ZXIobV92bS0+cHJvcGVydHlOYW1lcy0+Z2VuZXJhdG9yUmVzdW1lTW9kZVByaXZhdGVOYW1l
KTsKKyAgICAvLyBAZ2VuZXJhdG9yRnJhbWUKKyAgICBhZGRQYXJhbWV0ZXIobV92bS0+cHJvcGVy
dHlOYW1lcy0+Z2VuZXJhdG9yRnJhbWVQcml2YXRlTmFtZSk7CiAKICAgICByZXR1cm4gcGFyYW1l
dGVyczsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2Vy
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCmluZGV4IDMyOWVkYmU3
MjUzNWYzMjkzYmFmM2ZhMTVjYmU1YmNhZWNhMjk2N2QuLmFmZTI2ODc2YmFiYWQxNzRkYzUxNWFi
Y2NjMjc0YzI1MDhiZGY5MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaApA
QCAtMTIyNyw3ICsxMjI3LDcgQEAgY2xhc3MgUGFyc2VyIHsKICAgICBBTFdBWVNfSU5MSU5FIGJv
b2wgaXNBcnJvd0Z1bmN0aW9uUGFyYW1ldGVycygpOwogICAgIAogICAgIHRlbXBsYXRlIDxjbGFz
cyBUcmVlQnVpbGRlcj4gTkVWRVJfSU5MSU5FIGludCBwYXJzZUZ1bmN0aW9uUGFyYW1ldGVycyhU
cmVlQnVpbGRlciYsIFNvdXJjZVBhcnNlTW9kZSwgUGFyc2VyRnVuY3Rpb25JbmZvPFRyZWVCdWls
ZGVyPiYpOwotICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gTkVWRVJfSU5MSU5FIHR5
cGVuYW1lIFRyZWVCdWlsZGVyOjpGb3JtYWxQYXJhbWV0ZXJMaXN0IGNyZWF0ZUdlbmVyYXRvclBh
cmFtZXRlcnMoVHJlZUJ1aWxkZXImKTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+
IE5FVkVSX0lOTElORSB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6Rm9ybWFsUGFyYW1ldGVyTGlzdCBj
cmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKFRyZWVCdWlsZGVyJiwgdW5zaWduZWQmIHBhcmFtZXRl
ckNvdW50KTsKIAogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gTkVWRVJfSU5MSU5F
IFRyZWVDbGFzc0V4cHJlc3Npb24gcGFyc2VDbGFzcyhUcmVlQnVpbGRlciYsIEZ1bmN0aW9uUmVx
dWlyZW1lbnRzLCBQYXJzZXJDbGFzc0luZm88VHJlZUJ1aWxkZXI+Jik7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCmluZGV4IDc4YjQz
YzRkMzg5ZmY3YTkwODMxM2I1NTQwNTcwZTg4MmUxYjAzNzEuLmVjYmY3MmJlMjhmMzdkMzMwYzll
MWMyYmY1NjljN2RhNmU5OTE4NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcApAQCAtNjk3LDE4ICs2OTcsNyBAQCBzdGF0aWMgdm9p
ZCB1cGRhdGVSZXN1bHRQcm9maWxlRm9yQmluYXJ5QXJpdGhPcChFeGVjU3RhdGUqLCBJbnN0cnVj
dGlvbiosIEpTVmFsdQogICAgIC8vIE9ubHkgc2F2ZSB2YXJpYWJsZXMgYW5kIHRlbXBvcmFyeSBy
ZWdpc3RlcnMuIFRoZSBzY29wZSByZWdpc3RlcnMgYXJlIGluY2x1ZGVkIGluIHRoZW0uCiAgICAg
Ly8gQnV0IHBhcmFtZXRlcnMgYXJlIG5vdCBpbmNsdWRlZC4gQmVjYXVzZSB0aGUgZ2VuZXJhdG9y
IGltcGxlbWVudGF0aW9uIHJlcGxhY2VzIHRoZSB2YWx1ZXMgb2YgcGFyYW1ldGVycyBvbiBlYWNo
IGdlbmVyYXRvci5uZXh0KCkgY2FsbC4KICAgICBCRUdJTigpOwotICAgIEpTVmFsdWUgZ2VuZXJh
dG9yID0gT1AoMSkuanNWYWx1ZSgpOwotICAgIEdlbmVyYXRvckZyYW1lKiBmcmFtZSA9IG51bGxw
dHI7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IGdlbmVyYXRvci5nZXQoZXhlYywgZXhlYy0+cHJvcGVy
dHlOYW1lcygpLmdlbmVyYXRvckZyYW1lUHJpdmF0ZU5hbWUpOwotICAgIGlmICghdmFsdWUuaXNO
dWxsKCkpCi0gICAgICAgIGZyYW1lID0ganNDYXN0PEdlbmVyYXRvckZyYW1lKj4odmFsdWUpOwot
ICAgIGVsc2UgewotICAgICAgICAvLyBGSVhNRTogT25jZSBKU0dlbmVyYXRvciBzcGVjaWFsaXpl
ZCBvYmplY3QgaXMgaW50cm9kdWNlZCwgdGhpcyBHZW5lcmF0b3JGcmFtZSBzaG91bGQgYmUgZW1i
ZWRlZCBpbnRvIGl0IHRvIGF2b2lkIGFsbG9jYXRpb25zLgotICAgICAgICAvLyBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNTQ1Ci0gICAgICAgIGZyYW1lID0gR2Vu
ZXJhdG9yRnJhbWU6OmNyZWF0ZShleGVjLT52bSgpLCAgZXhlYy0+Y29kZUJsb2NrKCktPm51bUNh
bGxlZUxvY2FscygpKTsKLSAgICAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoZ2VuZXJhdG9yLCB0
cnVlLCBQdXRQcm9wZXJ0eVNsb3Q6OlB1dEJ5SWQpOwotICAgICAgICBhc09iamVjdChnZW5lcmF0
b3IpLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+cHV0KGFzT2JqZWN0KGdlbmVyYXRvciksIGV4
ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5nZW5lcmF0b3JGcmFtZVByaXZhdGVOYW1lLCBmcmFt
ZSwgc2xvdCk7Ci0gICAgfQorICAgIEdlbmVyYXRvckZyYW1lKiBmcmFtZSA9IGpzQ2FzdDxHZW5l
cmF0b3JGcmFtZSo+KE9QKDEpLmpzVmFsdWUoKSk7CiAgICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxv
Y2Fsc0luZGV4ID0gcGNbMl0udS51bnNpZ25lZFZhbHVlOwogICAgIGZyYW1lLT5zYXZlKGV4ZWMs
IGV4ZWMtPmNvZGVCbG9jaygpLT5saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZChsaXZlQ2FsbGVlTG9j
YWxzSW5kZXgpKTsKICAgICBFTkQoKTsKQEAgLTcxNyw4ICs3MDYsNyBAQCBzdGF0aWMgdm9pZCB1
cGRhdGVSZXN1bHRQcm9maWxlRm9yQmluYXJ5QXJpdGhPcChFeGVjU3RhdGUqLCBJbnN0cnVjdGlv
biosIEpTVmFsdQogU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3Jlc3VtZSkKIHsKICAgICBCRUdJ
TigpOwotICAgIEpTVmFsdWUgZ2VuZXJhdG9yID0gT1AoMSkuanNWYWx1ZSgpOwotICAgIEdlbmVy
YXRvckZyYW1lKiBmcmFtZSA9IGpzQ2FzdDxHZW5lcmF0b3JGcmFtZSo+KGdlbmVyYXRvci5nZXQo
ZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLmdlbmVyYXRvckZyYW1lUHJpdmF0ZU5hbWUpKTsK
KyAgICBHZW5lcmF0b3JGcmFtZSogZnJhbWUgPSBqc0Nhc3Q8R2VuZXJhdG9yRnJhbWUqPihPUCgx
KS5qc1ZhbHVlKCkpOwogICAgIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9IHBjWzJd
LnUudW5zaWduZWRWYWx1ZTsKICAgICBmcmFtZS0+cmVzdW1lKGV4ZWMsIGV4ZWMtPmNvZGVCbG9j
aygpLT5saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZChsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpKTsKICAg
ICBFTkQoKTsKQEAgLTc5Nyw0ICs3ODUsMTIgQEAgc3RhdGljIHZvaWQgdXBkYXRlUmVzdWx0UHJv
ZmlsZUZvckJpbmFyeUFyaXRoT3AoRXhlY1N0YXRlKiwgSW5zdHJ1Y3Rpb24qLCBKU1ZhbHUKICAg
ICBFTkQoKTsKIH0KIAorU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX25ld19nZW5lcmF0b3JfZnJh
bWUpCit7CisgICAgQkVHSU4oKTsKKyAgICB1bnNpZ25lZCBnZW5lcmF0b3JMb2NhbHNTaXplID0g
cGNbMl0udS51bnNpZ25lZFZhbHVlOworICAgIFJFVFVSTihHZW5lcmF0b3JGcmFtZTo6Y3JlYXRl
KGV4ZWMsIGdlbmVyYXRvckxvY2Fsc1NpemUpKTsKK30KKworCiB9IC8vIG5hbWVzcGFjZSBKU0MK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRo
cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKaW5k
ZXggZjAwZDg3MDVkNGU2N2ZlNGQ0MDU5YmRlMTY4ZWU4OGY1N2RmNzJlNy4uMDY1MGM0ZThjYjcx
NTU5MTdjZDFkN2EyZjc3YTdjN2Y3MjlhMTU0MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKQEAgLTI5Niw2ICsyOTYsNyBAQCBpbmxpbmUg
dm9pZCBkZWNvZGVSZXN1bHQoU2xvd1BhdGhSZXR1cm5UeXBlIHJlc3VsdCwgdm9pZComIGEsIHZv
aWQqJiBiKQogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9wdXNoX3dpdGhfc2NvcGUp
OwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9yZXNvbHZlX3Njb3BlKTsKIFNMT1df
UEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfY29weV9yZXN0KTsKK1NMT1dfUEFUSF9ISURERU5f
REVDTChzbG93X3BhdGhfbmV3X2dlbmVyYXRvcl9mcmFtZSk7CiAKIH0gLy8gbmFtZXNwYWNlIEpT
QwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JG
cmFtZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGcmFtZS5j
cHAKaW5kZXggZWY2ZWE3YTEwMDI1OGMzZWNlMDRkYWFiNDNiZGFhODUxZWM4ZjcxNS4uMGRjYjUx
NGE0MjA5OTlmYmY1OWRmMThiZGRmNTdjMzBhZGE3OWU5MSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZyYW1lLmNwcApAQCAtMzAsMTUgKzMwLDE2IEBA
CiAjaW5jbHVkZSAiSGVhcEl0ZXJhdGlvblNjb3BlLmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZUlu
bGluZXMuaCIKICNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNPYmplY3RJ
bmxpbmVzLmgiCiAjaW5jbHVkZSAiU2xvdFZpc2l0b3JJbmxpbmVzLmgiCiAjaW5jbHVkZSAiU3Ry
dWN0dXJlSW5saW5lcy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAotY29uc3QgQ2xhc3NJbmZvIEdl
bmVyYXRvckZyYW1lOjpzX2luZm8gPSB7ICJHZW5lcmF0b3JGcmFtZSIsIG51bGxwdHIsIG51bGxw
dHIsIENSRUFURV9NRVRIT0RfVEFCTEUoR2VuZXJhdG9yRnJhbWUpIH07Citjb25zdCBDbGFzc0lu
Zm8gR2VuZXJhdG9yRnJhbWU6OnNfaW5mbyA9IHsgIkdlbmVyYXRvckZyYW1lIiwgJkJhc2U6OnNf
aW5mbywgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShHZW5lcmF0b3JGcmFtZSkgfTsKIAot
R2VuZXJhdG9yRnJhbWU6OkdlbmVyYXRvckZyYW1lKFZNJiB2bSwgc2l6ZV90IG51bWJlck9mQ2Fs
bGVlTG9jYWxzKQotICAgIDogQmFzZSh2bSwgdm0uZ2VuZXJhdG9yRnJhbWVTdHJ1Y3R1cmUuZ2V0
KCkpCitHZW5lcmF0b3JGcmFtZTo6R2VuZXJhdG9yRnJhbWUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgdWludDMyX3QgbnVtYmVyT2ZDYWxsZWVMb2NhbHMpCisgICAgOiBCYXNlKHZtLCBz
dHJ1Y3R1cmUpCiAgICAgLCBtX251bWJlck9mQ2FsbGVlTG9jYWxzKG51bWJlck9mQ2FsbGVlTG9j
YWxzKQogewogfQpAQCAtNDYsMzMgKzQ3LDQyIEBACiB2b2lkIEdlbmVyYXRvckZyYW1lOjpmaW5p
c2hDcmVhdGlvbihWTSYgdm0pCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAg
IEpTVmFsdWUgZW1wdHlWYWx1ZTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fbnVtYmVy
T2ZDYWxsZWVMb2NhbHM7ICsraSkKLSAgICAgICAgbG9jYWxBdChpKS5jbGVhcigpOworICAgICAg
ICBsb2NhbEF0KGkpLnNldFN0YXJ0aW5nVmFsdWUoZW1wdHlWYWx1ZSk7CiB9CiAKIFN0cnVjdHVy
ZSogR2VuZXJhdG9yRnJhbWU6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQogewotICAgIHJldHVybiBTdHJ1Y3R1
cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKENlbGxUeXBl
LCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRl
KHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0
dXJlRmxhZ3MpLCBpbmZvKCkpOwogfQogCi1HZW5lcmF0b3JGcmFtZSogR2VuZXJhdG9yRnJhbWU6
OmNyZWF0ZShWTSYgdm0sIHNpemVfdCBudW1iZXJPZkxvY2FscykKK0dlbmVyYXRvckZyYW1lKiBH
ZW5lcmF0b3JGcmFtZTo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHNpemVf
dCBudW1iZXJPZkNhbGxlZUxvY2FscykKIHsKICAgICBHZW5lcmF0b3JGcmFtZSogcmVzdWx0ID0K
ICAgICAgICAgbmV3ICgKICAgICAgICAgICAgIE5vdE51bGwsCi0gICAgICAgICAgICBhbGxvY2F0
ZUNlbGw8R2VuZXJhdG9yRnJhbWU+KHZtLmhlYXAsIGFsbG9jYXRpb25TaXplRm9yTG9jYWxzKG51
bWJlck9mTG9jYWxzKSkpCi0gICAgICAgIEdlbmVyYXRvckZyYW1lKHZtLCBudW1iZXJPZkxvY2Fs
cyk7CisgICAgICAgICAgICBhbGxvY2F0ZUNlbGw8R2VuZXJhdG9yRnJhbWU+KHZtLmhlYXAsIGFs
bG9jYXRpb25TaXplRm9yTG9jYWxzKG51bWJlck9mQ2FsbGVlTG9jYWxzKSkpCisgICAgICAgIEdl
bmVyYXRvckZyYW1lKHZtLCBzdHJ1Y3R1cmUsIG51bWJlck9mQ2FsbGVlTG9jYWxzKTsKICAgICBy
ZXN1bHQtPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCitHZW5l
cmF0b3JGcmFtZSogR2VuZXJhdG9yRnJhbWU6OmNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIHNpemVf
dCBudW1iZXJPZkNhbGxlZUxvY2FscykKK3sKKyAgICByZXR1cm4gY3JlYXRlKGV4ZWMtPnZtKCks
IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+Z2VuZXJhdG9yRnJhbWVTdHJ1Y3R1cmUoKSwg
bnVtYmVyT2ZDYWxsZWVMb2NhbHMpOworfQorCiB2b2lkIEdlbmVyYXRvckZyYW1lOjpzYXZlKEV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZUNhbGxlZUxvY2FscykKIHsK
KyAgICAvLyBBbGxvY2F0ZSB0aGUgZ2VuZXJhdG9yIGxvY2FsIHNwYWNlIGZpcnN0LgorICAgIG1f
bnVtYmVyT2ZTYXZlZENhbGxlZUxvY2FscyA9IGxpdmVDYWxsZWVMb2NhbHMuYml0Q291bnQoKTsK
KwogICAgIC8vIE9ubHkgc2F2ZSBjYWxsZWUgbG9jYWxzLgogICAgIC8vIEV2ZXJ5IHRpbWUgYSBn
ZW5lcmF0b3IgaXMgY2FsbGVkIChvciByZXN1bWVkKSwgcGFyYW1ldGVycyBzaG91bGQgYmUgcmVw
bGFjZWQuCi0gICAgQVNTRVJUKGxpdmVDYWxsZWVMb2NhbHMubnVtQml0cygpIDw9IG1fbnVtYmVy
T2ZDYWxsZWVMb2NhbHMpOworICAgIHVuc2lnbmVkIGdlbmVyYXRvckxvY2FsSW5kZXggPSAwOwog
ICAgIGxpdmVDYWxsZWVMb2NhbHMuZm9yRWFjaFNldEJpdChbJl0oc2l6ZV90IGluZGV4KSB7Ci0g
ICAgICAgIGxvY2FsQXQoaW5kZXgpLnNldChleGVjLT52bSgpLCB0aGlzLCBleGVjLT51bmNoZWNr
ZWRSKHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGluZGV4KSkuanNWYWx1ZSgpKTsKKyAgICAgICAg
bG9jYWxBdChnZW5lcmF0b3JMb2NhbEluZGV4KyspLnNldChleGVjLT52bSgpLCB0aGlzLCBleGVj
LT51bmNoZWNrZWRSKHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGluZGV4KSkuanNWYWx1ZSgpKTsK
ICAgICB9KTsKIH0KIApAQCAtODAsMTAgKzkwLDExIEBAIHZvaWQgR2VuZXJhdG9yRnJhbWU6OnJl
c3VtZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEZhc3RCaXRWZWN0b3ImIGxpdmVDYWxsZWVMb2Nh
CiB7CiAgICAgLy8gT25seSByZXN1bWUgY2FsbGVlIGxvY2Fscy4KICAgICAvLyBFdmVyeSB0aW1l
IGEgZ2VuZXJhdG9yIGlzIGNhbGxlZCAob3IgcmVzdW1lZCksIHBhcmFtZXRlcnMgc2hvdWxkIGJl
IHJlcGxhY2VkLgorICAgIHVuc2lnbmVkIGdlbmVyYXRvckxvY2FsSW5kZXggPSAwOwogICAgIGxp
dmVDYWxsZWVMb2NhbHMuZm9yRWFjaFNldEJpdChbJl0oc2l6ZV90IGluZGV4KSB7Ci0gICAgICAg
IGV4ZWMtPnVuY2hlY2tlZFIodmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaW5kZXgpKSA9IGxvY2Fs
QXQoaW5kZXgpLmdldCgpOwotICAgICAgICBsb2NhbEF0KGluZGV4KS5jbGVhcigpOworICAgICAg
ICBleGVjLT51bmNoZWNrZWRSKHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGluZGV4KSkgPSBsb2Nh
bEF0KGdlbmVyYXRvckxvY2FsSW5kZXgrKykuZ2V0KCk7CiAgICAgfSk7CisgICAgbV9udW1iZXJP
ZlNhdmVkQ2FsbGVlTG9jYWxzID0gMDsKIH0KIAogdm9pZCBHZW5lcmF0b3JGcmFtZTo6dmlzaXRD
aGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQpAQCAtOTEsNyArMTAy
LDEyIEBAIHZvaWQgR2VuZXJhdG9yRnJhbWU6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBT
bG90VmlzaXRvciYgdmlzaXRvcikKICAgICBHZW5lcmF0b3JGcmFtZSogdGhpc09iamVjdCA9IGpz
Q2FzdDxHZW5lcmF0b3JGcmFtZSo+KGNlbGwpOwogICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhp
c09iamVjdCwgdmlzaXRvcik7CiAgICAgLy8gU2luY2Ugb25seSB0cnVlIGNlbGwgcG9pbnRlcnMg
YXJlIHN0b3JlZCBhcyBhIGNlbGwsIHdlIGNhbiBzYWZlbHkgbWFyayB0aGVtLgotICAgIHZpc2l0
b3IuYXBwZW5kVmFsdWVzKHRoaXNPYmplY3QtPmxvY2FscygpLCB0aGlzT2JqZWN0LT5tX251bWJl
ck9mQ2FsbGVlTG9jYWxzKTsKKyAgICB2aXNpdG9yLmFwcGVuZFZhbHVlcyh0aGlzT2JqZWN0LT5s
b2NhbHMoKSwgdGhpc09iamVjdC0+bV9udW1iZXJPZlNhdmVkQ2FsbGVlTG9jYWxzKTsKKyAgICAv
LyBDbGVhciBub3QgdXNlZCBjYWxsZWUgbG9jYWxzIHdoZW4gbWFya2luZy4KKyAgICAvLyBUaGlz
IGVuc3VyZXMgdGhhdCwgImlmIGEgZ2l2ZW4gbG9jYWwgaGFzIGEgdmFsdWUsIHRoaXMgdmFsdWUg
aXMgY29ycmVjdGx5IG1hcmtlZCBpbiB0aGUgcHJldmlvdXMgbWFya2luZyBwaGFzZSIuCisgICAg
c2l6ZV90IHVudXNlZExvY2Fsc0NvdW50ID0gdGhpc09iamVjdC0+bV9udW1iZXJPZkNhbGxlZUxv
Y2FscyAtIHRoaXNPYmplY3QtPm1fbnVtYmVyT2ZTYXZlZENhbGxlZUxvY2FsczsKKyAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IHVudXNlZExvY2Fsc0NvdW50OyArK2kpCisgICAgICAgIHRoaXNP
YmplY3QtPmxvY2FsQXQodGhpc09iamVjdC0+bV9udW1iZXJPZlNhdmVkQ2FsbGVlTG9jYWxzICsg
aSkuY2xlYXIoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGcmFtZS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJhbWUuaAppbmRleCAzZDU0NWIxNDdkZDRhYmZiMmJi
YjliNWE3MTk0ZThmNzQ4NDFjNDlhLi5jZjFkYjdhMmJlZTYwZGEyOTQ2NGVjNDE3YTBjNWZiOGMx
ZjBhZThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0
b3JGcmFtZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZy
YW1lLmgKQEAgLTI3LDExICsyNywxNCBAQAogI2RlZmluZSBHZW5lcmF0b3JGcmFtZV9oCiAKICNp
bmNsdWRlICJKU0NlbGwuaCIKKyNpbmNsdWRlICJKU09iamVjdC5oIgogI2luY2x1ZGUgPHd0Zi9G
YXN0Qml0VmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCi1jbGFzcyBHZW5lcmF0b3JGcmFt
ZSA6IHB1YmxpYyBKU0NlbGwgeworY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworCitjbGFz
cyBHZW5lcmF0b3JGcmFtZSA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAgICBmcmllbmQg
Y2xhc3MgSklUOwogI2lmIEVOQUJMRShERkdfSklUKQogICAgIGZyaWVuZCBjbGFzcyBERkc6OlNw
ZWN1bGF0aXZlSklUOwpAQCAtMzksMTIgKzQyLDEyIEBAIGNsYXNzIEdlbmVyYXRvckZyYW1lIDog
cHVibGljIEpTQ2VsbCB7CiAjZW5kaWYKICAgICBmcmllbmQgY2xhc3MgVk07CiBwdWJsaWM6Ci0g
ICAgdHlwZWRlZiBKU0NlbGwgQmFzZTsKLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0
dXJlRmxhZ3MgPSBTdHJ1Y3R1cmVJc0ltbW9ydGFsIHwgQmFzZTo6U3RydWN0dXJlRmxhZ3M7Cisg
ICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CiAKICAgICBERUNMQVJFX0VYUE9SVF9J
TkZPOwogCi0gICAgc3RhdGljIEdlbmVyYXRvckZyYW1lKiBjcmVhdGUoVk0mLCBzaXplX3QgbnVt
YmVyT2ZDYWxsZWVMb2NhbHMpOworICAgIHN0YXRpYyBHZW5lcmF0b3JGcmFtZSogY3JlYXRlKEV4
ZWNTdGF0ZSosIHNpemVfdCBudW1iZXJPZkNhbGxlZUxvY2Fscyk7CisgICAgc3RhdGljIEdlbmVy
YXRvckZyYW1lKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqLCBzaXplX3QgbnVtYmVyT2ZDYWxsZWVM
b2NhbHMpOwogCiAgICAgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiogbG9jYWxzKCkKICAgICB7
CkBAIC01Myw3ICs1Niw2IEBAIGNsYXNzIEdlbmVyYXRvckZyYW1lIDogcHVibGljIEpTQ2VsbCB7
CiAKICAgICBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+JiBsb2NhbEF0KHNpemVfdCBpbmRleCkK
ICAgICB7Ci0gICAgICAgIEFTU0VSVChpbmRleCA8IG1fbnVtYmVyT2ZDYWxsZWVMb2NhbHMpOwog
ICAgICAgICByZXR1cm4gbG9jYWxzKClbaW5kZXhdOwogICAgIH0KIApAQCAtNjIsNiArNjQsMjEg
QEAgY2xhc3MgR2VuZXJhdG9yRnJhbWUgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAgICAgcmV0dXJu
IFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZjxzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KT4o
c2l6ZW9mKEdlbmVyYXRvckZyYW1lKSk7CiAgICAgfQogCisgICAgc3RhdGljIHNpemVfdCBsb2Nh
bE9mZnNldCh1bnNpZ25lZCBpbmRleCkKKyAgICB7CisgICAgICAgIHJldHVybiBvZmZzZXRPZkxv
Y2FscygpICsgaW5kZXggKiBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KTsKKyAgICB9CisK
KyAgICBzdGF0aWMgc2l6ZV90IG51bWJlck9mQ2FsbGVlTG9jYWxzT2Zmc2V0KCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoR2VuZXJhdG9yRnJhbWUsIG1fbnVtYmVyT2ZD
YWxsZWVMb2NhbHMpOworICAgIH0KKworICAgIHN0YXRpYyBzaXplX3QgbnVtYmVyT2ZTYXZlZENh
bGxlZUxvY2Fsc09mZnNldCgpCisgICAgeworICAgICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9G
KEdlbmVyYXRvckZyYW1lLCBtX251bWJlck9mU2F2ZWRDYWxsZWVMb2NhbHMpOworICAgIH0KKwog
ICAgIHN0YXRpYyBzaXplX3QgYWxsb2NhdGlvblNpemVGb3JMb2NhbHModW5zaWduZWQgbnVtYmVy
T2ZMb2NhbHMpCiAgICAgewogICAgICAgICByZXR1cm4gb2Zmc2V0T2ZMb2NhbHMoKSArIG51bWJl
ck9mTG9jYWxzICogc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPik7CkBAIC03MywxNiArOTAs
MTYgQEAgY2xhc3MgR2VuZXJhdG9yRnJhbWUgOiBwdWJsaWMgSlNDZWxsIHsKICAgICB2b2lkIHJl
c3VtZShFeGVjU3RhdGUqLCBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlQ2FsbGVlTG9jYWxzKTsK
IAogcHJpdmF0ZToKLSAgICBHZW5lcmF0b3JGcmFtZShWTSYsIHNpemVfdCBudW1iZXJPZkNhbGxl
ZUxvY2Fscyk7CisgICAgR2VuZXJhdG9yRnJhbWUoVk0mLCBTdHJ1Y3R1cmUqLCB1aW50MzJfdCBu
dW1iZXJPZkNhbGxlZUxvY2Fscyk7CiAKLSAgICBzaXplX3QgbV9udW1iZXJPZkNhbGxlZUxvY2Fs
czsKKyAgICB1aW50MzJfdCBtX251bWJlck9mQ2FsbGVlTG9jYWxzOworICAgIHVpbnQzMl90IG1f
bnVtYmVyT2ZTYXZlZENhbGxlZUxvY2FscyB7IDAgfTsKIAogICAgIGZyaWVuZCBjbGFzcyBMTElu
dE9mZnNldHNFeHRyYWN0b3I7CiAKLSAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7Ci0KIHBy
b3RlY3RlZDoKICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNp
dG9yJik7CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5jcHAKaW5kZXggYjZiYTI3YzkxMmRiNTBhYTRmOTlhY2UwZjZhZDlkMDZlMzAwNmRmOC4uYWQ4
NTdmODczYjQwOTNmYWRjMmZlMmEzZWUyOTRiY2U1YzgwMDQ2ZCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtNTAsNiArNTAsNyBA
QAogI2luY2x1ZGUgIkVycm9yUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiRnVuY3Rpb25Db25zdHJ1
Y3Rvci5oIgogI2luY2x1ZGUgIkZ1bmN0aW9uUHJvdG90eXBlLmgiCisjaW5jbHVkZSAiR2VuZXJh
dG9yRnJhbWUuaCIKICNpbmNsdWRlICJHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmgiCiAj
aW5jbHVkZSAiR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaCIKICNpbmNsdWRlICJHZW5lcmF0
b3JQcm90b3R5cGUuaCIKQEAgLTM4OCw2ICszODksNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojpp
bml0KFZNJiB2bSkKICAgICAKICAgICBGT1JfRUFDSF9CVUlMVElOX0RFUklWRURfSVRFUkFUT1Jf
VFlQRShDUkVBVEVfUFJPVE9UWVBFX0ZPUl9ERVJJVkVEX0lURVJBVE9SX1RZUEUpCiAgICAgbV9w
cm9wZXJ0eU5hbWVJdGVyYXRvclN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIEpTUHJvcGVydHlOYW1l
SXRlcmF0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9pdGVyYXRvclByb3RvdHlwZS5n
ZXQoKSkpOworICAgIG1fZ2VuZXJhdG9yRnJhbWVTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBHZW5l
cmF0b3JGcmFtZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBqc051bGwoKSkpOwogICAgIG1f
Z2VuZXJhdG9yUHJvdG90eXBlLnNldCh2bSwgdGhpcywgR2VuZXJhdG9yUHJvdG90eXBlOjpjcmVh
dGUodm0sIHRoaXMsIEdlbmVyYXRvclByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlz
LCBtX2l0ZXJhdG9yUHJvdG90eXBlLmdldCgpKSkpOwogICAgIAogI3VuZGVmIENSRUFURV9QUk9U
T1RZUEVfRk9SX0RFUklWRURfSVRFUkFUT1JfVFlQRQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5kZXggYjRmZjJmYjQxM2UwZTQ0NjI0OTJhNDhh
M2ZkNWE0YzI0ZWEwYjc0MS4uNzFkMzllYzkyODNhZDllNTkwMTI0NGYwMTM2YTEzNThmNTQ0YTk5
MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5o
CkBAIC0yNTUsNiArMjU1LDcgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdt
ZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9jYWxs
YmFja0Z1bmN0aW9uU3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fY2Fs
bGJhY2tPYmplY3RTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9wcm9w
ZXJ0eU5hbWVJdGVyYXRvclN0cnVjdHVyZTsKKyAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBt
X2dlbmVyYXRvckZyYW1lU3RydWN0dXJlOwogI2lmIEpTQ19PQkpDX0FQSV9FTkFCTEVECiAgICAg
V3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9vYmpjQ2FsbGJhY2tGdW5jdGlvblN0cnVjdHVyZTsK
ICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX29iamNXcmFwcGVyT2JqZWN0U3RydWN0dXJl
OwpAQCAtNTAxLDYgKzUwMiw3IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2Vn
bWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIFN0cnVjdHVyZSogY2FsbGJhY2tGdW5jdGlvblN0
cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FsbGJhY2tGdW5jdGlvblN0cnVjdHVyZS5nZXQo
KTsgfQogICAgIFN0cnVjdHVyZSogY2FsbGJhY2tPYmplY3RTdHJ1Y3R1cmUoKSBjb25zdCB7IHJl
dHVybiBtX2NhbGxiYWNrT2JqZWN0U3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBw
cm9wZXJ0eU5hbWVJdGVyYXRvclN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvcGVydHlO
YW1lSXRlcmF0b3JTdHJ1Y3R1cmUuZ2V0KCk7IH0KKyAgICBTdHJ1Y3R1cmUqIGdlbmVyYXRvckZy
YW1lU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9nZW5lcmF0b3JGcmFtZVN0cnVjdHVyZS5n
ZXQoKTsgfQogI2lmIEpTQ19PQkpDX0FQSV9FTkFCTEVECiAgICAgU3RydWN0dXJlKiBvYmpjQ2Fs
bGJhY2tGdW5jdGlvblN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fb2JqY0NhbGxiYWNrRnVu
Y3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIG9iamNXcmFwcGVyT2JqZWN0
U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9vYmpjV3JhcHBlck9iamVjdFN0cnVjdHVyZS5n
ZXQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCmluZGV4IDBlNDRjMzQ2MGY5
ZjhmMGRjYjM1ZDkxMmQ3OTVmN2Y5OGRmYjdmNDUuLjBlZjI1ZTcyOWFhNmU1NWMzZGNhMDYxYzIy
YjY1YWE2ZjdiNWIzNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1ZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKQEAgLTI0
Niw3ICsyNDYsNiBAQCBzdGF0aWMgYm9vbCBlbmFibGVBc3NlbWJsZXIoRXhlY3V0YWJsZUFsbG9j
YXRvciYgZXhlY3V0YWJsZUFsbG9jYXRvcikKICAgICBpbmZlcnJlZFR5cGVTdHJ1Y3R1cmUuc2V0
KCp0aGlzLCBJbmZlcnJlZFR5cGU6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkp
KTsKICAgICBpbmZlcnJlZFR5cGVUYWJsZVN0cnVjdHVyZS5zZXQoKnRoaXMsIEluZmVycmVkVHlw
ZVRhYmxlOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgZnVuY3Rp
b25SYXJlRGF0YVN0cnVjdHVyZS5zZXQoKnRoaXMsIEZ1bmN0aW9uUmFyZURhdGE6OmNyZWF0ZVN0
cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKLSAgICBnZW5lcmF0b3JGcmFtZVN0cnVjdHVy
ZS5zZXQoKnRoaXMsIEdlbmVyYXRvckZyYW1lOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpz
TnVsbCgpKSk7CiAgICAgZXhjZXB0aW9uU3RydWN0dXJlLnNldCgqdGhpcywgRXhjZXB0aW9uOjpj
cmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgcHJvbWlzZURlZmVycmVk
U3RydWN0dXJlLnNldCgqdGhpcywgSlNQcm9taXNlRGVmZXJyZWQ6OmNyZWF0ZVN0cnVjdHVyZSgq
dGhpcywgMCwganNOdWxsKCkpKTsKICAgICBpbnRlcm5hbFByb21pc2VEZWZlcnJlZFN0cnVjdHVy
ZS5zZXQoKnRoaXMsIEpTSW50ZXJuYWxQcm9taXNlRGVmZXJyZWQ6OmNyZWF0ZVN0cnVjdHVyZSgq
dGhpcywgMCwganNOdWxsKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ZNLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCmluZGV4IGFl
ZTBhYzFmMjFiODQ1MWJjNzc2NzQ0M2EwYjA1Y2EwNDhiNGY0OWIuLjIzNjA4MzcwYTk4MzZkODk3
N2U0OWQ3MWU2OGE4MDliOWFjNDUzNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaApA
QCAtMzEyLDcgKzMxMiw2IEBAIGNsYXNzIFZNIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVk
PFZNPiB7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gaW5mZXJyZWRUeXBlU3RydWN0dXJlOwogICAg
IFN0cm9uZzxTdHJ1Y3R1cmU+IGluZmVycmVkVHlwZVRhYmxlU3RydWN0dXJlOwogICAgIFN0cm9u
ZzxTdHJ1Y3R1cmU+IGZ1bmN0aW9uUmFyZURhdGFTdHJ1Y3R1cmU7Ci0gICAgU3Ryb25nPFN0cnVj
dHVyZT4gZ2VuZXJhdG9yRnJhbWVTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gZXhj
ZXB0aW9uU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHByb21pc2VEZWZlcnJlZFN0
cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBpbnRlcm5hbFByb21pc2VEZWZlcnJlZFN0
cnVjdHVyZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mv
Z2VuZXJhdG9yLWZpYi1mdGwtYW5kLWFycmF5LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQtYXJyYXkuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmU5
Mzk4MTJmZGJhZWM2YjgzMmJmZDAwZjIxNTNkZWY4NGJiNzU5MgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwtYW5k
LWFycmF5LmpzCkBAIC0wLDAgKzEsMjMgQEAKKyhmdW5jdGlvbiAoKSB7CisgICAgZnVuY3Rpb24g
KmZpYigpCisgICAgeworICAgICAgICBsZXQgYSA9IDE7CisgICAgICAgIGxldCBiID0gMTsKKyAg
ICAgICAgbGV0IGMgPSBbIDAgXTsKKyAgICAgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgICAg
IGNbMF0gPSBhOworICAgICAgICAgICAgeWllbGQgYzsKKyAgICAgICAgICAgIFthLCBiXSA9IFti
LCBhICsgYl07CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQgdmFsdWUgPSAwOworICAgIGZv
ciAobGV0IGkgPSAwOyBpIDwgMWU0OyArK2kpIHsKKyAgICAgICAgbGV0IGYgPSBmaWIoKTsKKyAg
ICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDA7ICsraSkgeworICAgICAgICAgICAgdmFsdWUg
PSBmLm5leHQoKS52YWx1ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAodmFsdWVbMF0gIT09IDM1
NDIyNDg0ODE3OTI2MjAwMDAwMCkKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIHZh
bHVlOiR7cmVzdWx0fWApOworICAgIH0KK30oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLWFuZC1vYmplY3QuanMgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLWFuZC1v
YmplY3QuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNjY3MzQwZjJlYTRjNzQzOGEyZDIwOWFhNDBkMDY3N2U0YWI3
ZDNmYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJl
c3MvZ2VuZXJhdG9yLWZpYi1mdGwtYW5kLW9iamVjdC5qcwpAQCAtMCwwICsxLDIzIEBACisoZnVu
Y3Rpb24gKCkgeworICAgIGZ1bmN0aW9uICpmaWIoKQorICAgIHsKKyAgICAgICAgbGV0IGEgPSAx
OworICAgICAgICBsZXQgYiA9IDE7CisgICAgICAgIGxldCBjID0geyBmaWI6IDAgfTsKKyAgICAg
ICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgICAgIGMuZmliID0gYTsKKyAgICAgICAgICAgIHlp
ZWxkIGM7CisgICAgICAgICAgICBbYSwgYl0gPSBbYiwgYSArIGJdOworICAgICAgICB9CisgICAg
fQorCisgICAgbGV0IHZhbHVlID0gMDsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDFlNDsgKytp
KSB7CisgICAgICAgIGxldCBmID0gZmliKCk7CisgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwg
MTAwOyArK2kpIHsKKyAgICAgICAgICAgIHZhbHVlID0gZi5uZXh0KCkudmFsdWU7CisgICAgICAg
IH0KKyAgICAgICAgaWYgKHZhbHVlLmZpYiAhPT0gMzU0MjI0ODQ4MTc5MjYyMDAwMDAwKQorICAg
ICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgdmFsdWU6JHtyZXN1bHR9YCk7CisgICAgfQor
fSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2Vu
ZXJhdG9yLWZpYi1mdGwtYW5kLXN0cmluZy5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0
cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwtYW5kLXN0cmluZy5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40Mzhh
ZTZhYjMzNDcwNDY4MjI4NDlmNDMwMDRlYTVjNDAzZWVkYTI4Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQt
c3RyaW5nLmpzCkBAIC0wLDAgKzEsMjIgQEAKKyhmdW5jdGlvbiAoKSB7CisgICAgZnVuY3Rpb24g
KmZpYigpCisgICAgeworICAgICAgICBsZXQgYSA9IDE7CisgICAgICAgIGxldCBiID0gMTsKKyAg
ICAgICAgbGV0IGMgPSAiUmVzdWx0ISAiOworICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAg
ICAgICAgeWllbGQgYyArIGE7CisgICAgICAgICAgICBbYSwgYl0gPSBbYiwgYSArIGJdOworICAg
ICAgICB9CisgICAgfQorCisgICAgbGV0IHZhbHVlID0gMDsKKyAgICBmb3IgKGxldCBpID0gMDsg
aSA8IDFlNDsgKytpKSB7CisgICAgICAgIGxldCBmID0gZmliKCk7CisgICAgICAgIGZvciAobGV0
IGkgPSAwOyBpIDwgMTAwOyArK2kpIHsKKyAgICAgICAgICAgIHZhbHVlID0gZi5uZXh0KCkudmFs
dWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHZhbHVlICE9PSBgUmVzdWx0ISAzNTQyMjQ4NDgx
NzkyNjIwMDAwMDBgKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgdmFsdWU6JHty
ZXN1bHR9YCk7CisgICAgfQorfSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM0MGUzM2Ri
Yzg2OGJlYTdhODkzYzllYzE2Yjc3OWVjMjZiZGIxOWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLmpzCkBAIC0w
LDAgKzEsMjEgQEAKKyhmdW5jdGlvbiAoKSB7CisgICAgZnVuY3Rpb24gKmZpYigpCisgICAgewor
ICAgICAgICBsZXQgYSA9IDE7CisgICAgICAgIGxldCBiID0gMTsKKyAgICAgICAgd2hpbGUgKHRy
dWUpIHsKKyAgICAgICAgICAgIHlpZWxkIGE7CisgICAgICAgICAgICBbYSwgYl0gPSBbYiwgYSAr
IGJdOworICAgICAgICB9CisgICAgfQorCisgICAgbGV0IHZhbHVlID0gMDsKKyAgICBmb3IgKGxl
dCBpID0gMDsgaSA8IDFlNDsgKytpKSB7CisgICAgICAgIGxldCBmID0gZmliKCk7CisgICAgICAg
IGZvciAobGV0IGkgPSAwOyBpIDwgMTAwOyArK2kpIHsKKyAgICAgICAgICAgIHZhbHVlID0gZi5u
ZXh0KCkudmFsdWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHZhbHVlICE9PSAzNTQyMjQ4NDgx
NzkyNjIwMDAwMDApCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCB2YWx1ZToke3Jl
c3VsdH1gKTsKKyAgICB9Cit9KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZnJhbWUtZW1wdHkuanMgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1mcmFtZS1lbXB0eS5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41
OWU4ODU1YmZhYzNjNTZkZjkyNmFiZDQyOGMwMTNjMzM0MTYyNzQ2Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZnJhbWUtZW1w
dHkuanMKQEAgLTAsMCArMSwzNCBAQAorZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVuYywgZXJyb3JN
ZXNzYWdlKSB7CisgICAgdmFyIGVycm9yVGhyb3duID0gZmFsc2U7CisgICAgdmFyIGVycm9yID0g
bnVsbDsKKyAgICB0cnkgeworICAgICAgICBmdW5jKCk7CisgICAgfSBjYXRjaCAoZSkgeworICAg
ICAgICBlcnJvclRocm93biA9IHRydWU7CisgICAgICAgIGVycm9yID0gZTsKKyAgICB9CisgICAg
aWYgKCFlcnJvclRocm93bikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdub3QgdGhyb3duJyk7
CisgICAgaWYgKFN0cmluZyhlcnJvcikgIT09IGVycm9yTWVzc2FnZSkKKyAgICAgICAgdGhyb3cg
bmV3IEVycm9yKGBiYWQgZXJyb3I6ICR7U3RyaW5nKGVycm9yKX1gKTsKK30KKworc2hvdWxkVGhy
b3coZnVuY3Rpb24gKCkgeworICAgIGZ1bmN0aW9uICpmaWIoZmxhZykKKyAgICB7CisgICAgICAg
IGxldCBhID0gMTsKKyAgICAgICAgbGV0IGIgPSAxOworICAgICAgICB5aWVsZCA0MjsKKyAgICAg
ICAgaWYgKGZsYWcpCisgICAgICAgICAgICByZXR1cm4gYzsKKyAgICAgICAgbGV0IGMgPSA1MDA7
CisgICAgfQorCisgICAgbGV0IHZhbHVlID0gMDsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDFl
NDsgKytpKSB7CisgICAgICAgIGZvciAobGV0IHYgb2YgZmliKGZhbHNlKSkgeworICAgICAgICB9
CisgICAgfQorICAgIGZvciAobGV0IHYgb2YgZmliKHRydWUpKSB7CisgICAgfQorfSwgYFJlZmVy
ZW5jZUVycm9yOiBDYW5ub3QgYWNjZXNzIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUuYCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>269280</attachid>
            <date>2016-01-19 12:29:25 -0800</date>
            <delta_ts>2016-01-20 22:53:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-152723-20160120052856.patch</filename>
            <type>text/plain</type>
            <size>127278</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk1MTgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
ODE1ZGZkYjIxZDMwMzQwODAxNDAzYzkwMWJhMDkwMGIxMDVmMzZlLi5lZWY4ZDk0NDdmZmJmMmU0
Yzg0NDQ3ZjVjOGE5MjQ3MjA1YWZmZGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMzEgQEAKKzIwMTYtMDEtMTkgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgQ3JlYXRlIEdlbmVyYXRvckZyYW1lIHdpdGggdGhlIGJ5dGVjb2Rl
IG9wX25ld19nZW5lcmF0b3JfZnJhbWUgYW5kIG1ha2Ugb3Bfc2F2ZSAvIG9wX3Jlc3VtZSBERkcv
RlRMIGNhcGFibGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1MjcyMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRoaXMgcGF0Y2ggaXMgYW4gaW5pdGlhbCBhdHRlbXB0IHRvIGltcGxlbWVudCBERkcgYW5k
IEZUTCBjYXBhYmxlIEVTNiBnZW5lcmF0b3JzLgorICAgICAgICBXZSBpbnRyb2R1Y2UgdGhlIHNl
dmVyYWwgYnl0ZWNvZGVzIGFuZCBjb21waWxlIHRoZW0gaW4gREZHIC8gRlRMLgorCisgICAgICAg
IC0gb3BfbmV3X2dlbmVyYXRvcl9mcmFtZQorCisgICAgICAgICAgICBBbGxvY2F0ZSBHZW5lcmF0
b3JGcmFtZSBpbiB0aGUgYnl0ZWNvZGUgaW5zdGVhZCBvZiBhbGxvY2F0aW5nIGl0IGluIHRoZSBv
cF9zYXZlLgorCisgICAgICAgIC0gb3Bfc2F2ZQorCisgICAgICAgICAgICBOb3cgQnl0ZWNvZGVM
aXZlbmVzcyBhbmFseXNpcyBhbmQgUHJlY2lzZUp1bXBUYXJnZXQgYW5hbHlzaXMgaGF2ZSAyIG1v
ZGVzOyBTdGFuZGFyZCBhbmQgRXh0cmFjdEdlbmVyYXRvckxpdmVDYWxsZWVMb2NhbHMuCisgICAg
ICAgICAgICBVbmRlciBFeHRyYWN0R2VuZXJhdG9yTGl2ZUNhbGxlZUxvY2FscyBtb2RlLCBvcF9z
YXZlIGhhcyBqdW1wIHRvIHRoZSBtZXJnZSBwb2ludC4gVGhpcyBqdW1wIGlzIGp1c3QgdXNlZCBm
b3IgdXNlLWRlZiBhbmFseXNpcyB0byBleHRyYWN0CisgICAgICAgICAgICBsaXZlIGNhbGxlZSBs
b2NhbHMgYXQgdGhlIG1lcmdlIHBvaW50LiBUaGVzZSBsaXZlIGNhbGxlZSBsb2NhbHMgc2hvdWxk
IGJlIHNhdmVkIGFuZCByZXN1bWVkIHRvIHN1c3BlbmQgYW5kIHJlc3VtZSBnZW5lcmF0b3JzLgor
ICAgICAgICAgICAgVGhlIG1lcmdlIHBvaW50IGlzIHRoZSBwb2ludCB0aGF0IG1lcmdpbmcgdGhl
IDIgYmFzaWMgYmxvY2tzLCBzYXZpbmcgbG9jYWxzIHRvIHRoZSBnZW5lcmF0b3IgZnJhbWUgYW5k
IHJlc3VtaW5nIGxvY2FscyBmcm9tIHRoZSBnZW5lcmF0b3IgZnJhbWUuCisKKyAgICAgICAgLSBv
cF9yZXN1bWUKKworICAgICAgICAgICAgVGhpcyByZXRyaWV2ZXMgbG9jYWwgdmFyaWFibGUgZnJv
bSB0aGUgZ2VuZXJhdG9yIGZyYW1lLiBFeHRyYWN0R2VuZXJhdG9yTGl2ZUNhbGxlZUxvY2FscyBh
bmFseXNpcyB3aWxsIGRpc2NvdmVyIGxpdmUgbG9jYWxzIGF0IHRoZSBtZXJnZSBwb2ludCBhbmQg
cmVjb3JkIGxpdmVuZXNzCisgICAgICAgICAgICBpbmZvcm1hdGlvbiB0byBvcF9zYXZlIGFuZCBv
cF9yZXN1bWUuIE9uIHRoZSBiYXNpcyBvZiB0aGlzIGluZm9ybWF0aW9uLCBvcF9yZXN1bWUgd2ls
bCByZXRyaWV2ZSBzYXZlZCBsb2NhbHMgZnJvbSB0aGUgZ2VuZXJhdG9yIGZyYW1lLgorCisgICAg
ICAgIEhlcmUsIHdlIGV4cGxhaW4gYWJvdXQgaG93IHRvIHByZXByb2Nlc3MgYnl0ZWNvZGVzLgor
ICAgICAgICBGaXJzdCwgd2UgZW1pdCBvcF9zYXZlLCBvcF9yZXN1bWUgYW5kIHBlcmZvcm0gRXh0
cmFjdEdlbmVyYXRvckxpdmVDYWxsZWVMb2NhbHMgYW5hbHlzaXMuCisKKyAgICAgICAgW2VudHJ5
XSAtKy0tPiBbc2F2ZSBibG9ja10gLT4gb3Bfc2F2ZSAoaXQgaXMgYnJhbmNoaW5nIGJ5dGVjb2Rl
KSAtLS0tLS0+IFttZXJnZSBibG9ja10gLT4gLi4uCisgICAgICAgICAgICAgICAgIHwgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIF4KKyAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICArLT4gb3BfcmV0ICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgICAgICAr
LS0tLS0tLS0tLS0tLS0tLS0tPiBvcF9yZXN1bWUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0rCisKKyAgICAgICAgVGhlbiwgZGlzY292ZXIgbGl2ZSBsb2NhbHMgaW5mb3Jt
YXRpb24gKGFzIEZhc3RCaXRWZWN0b3IpIGF0IHRoZSBtZXJnZSBwb2ludCBhbmQgc3RvcmUgaXQg
dG8gY29ycmVzcG9uZGluZyBvcF9zYXZlIGFuZCBvcF9yZXN1bWUuCisgICAgICAgIEFmdGVyIHRo
YXQsIHVuZGVyIFN0YW5kYXJkIGFuYWx5c2lzIG1vZGUsIHRoZSBhYm92ZSBieXRlY29kZSBzdHJl
YW0gd2lsbCBjb25zdHJ1Y3QgdGhlIGZvbGxvd2luZyBDRkcuCisgICAgICAgIEluIHRoZSBmb2xs
b3dpbmcgQ0ZHLCBvcF9zYXZlIG5vIGxvbmdlciBoYXMganVtcCB0byB0aGUgbWVyZ2UgcG9pbnQu
IFRoZSByZW1vdmVkIGp1bXAgZWRnZSB3YXMganVzdCB1c2VkIHRvIGNhbGN1bGF0ZSBsaXZlbmVz
cyBpbmZvcm1hdGlvbiBhdCB0aGUgbWVyZ2UgcG9pbnQuCisKKyAgICAgICAgW2VudHJ5XSAtKy0t
PiBbc2F2ZSBibG9ja10gLT4gb3Bfc2F2ZSAtPiBvcF9yZXQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKy0+IFttZXJnZSBibG9ja10gLT4gLi4uCisgICAgICAgICAgICAgICAgIHwgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHwKKyAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgICAg
ICArLS0tLS0tLS0tLS0tLS0tLS0tPiBvcF9yZXN1bWUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0rCisKKyAgICAgICAgQW5kIHdlIGludHJvZHVjZXMgc2V2ZXJhbCBERkcg
bm9kZXMuCisKKyAgICAgICAgLSBOZXdHZW5lcmF0b3JGcmFtZQorCisgICAgICAgICAgICBUaGlz
IGp1c3QgYWxsb2NhdGVzIEdlbmVyYXRvckZyYW1lLgorCisgICAgICAgIC0gUmVzaXplR2VuZXJh
dG9yTG9jYWxzCisKKyAgICAgICAgICAgIFRoaXMgc2V0IEdlbmVyYXRvckZyYW1lOjptX251bWJl
ck9mU2F2ZWRDYWxsZWVMb2NhbHMgKk4qLiBUaGlzIG5vZGUgaXMgdXNlZCB0byAoMSkgYWxsb2Nh
dGUgc3BhY2UgZm9yIGxvY2FscyBpbiBHZW5lcmF0b3JGcmFtZSBhbmQgKDIpIGRlYWxsb2NhdGUg
c3BhY2UgaW4KKyAgICAgICAgICAgIEdlbmVyYXRvckZyYW1lIGJ5IHNldHRpbmcgaXQgYXMgMC4K
KworICAgICAgICAtIEdldEdlbmVyYXRvckxvY2FsCisKKyAgICAgICAgICAgIEdldCBhIHNhdmVk
IGxvY2FsIHZhcmlhYmxlIGZyb20gYSBnZW5lcmF0b3IgZnJhbWUuIEdldEdlbmVyYXRvckxvY2Fs
IGFuZCBTZXRHZW5lcmF0b3JMb2NhbCBhcmUgbGlua2VkIHdpdGggR2VuZXJhdG9yTG9jYWxEYXRh
LiBTbyB0eXBlIHByZWRpY2F0aW9uIGFuZCBmbGFncworICAgICAgICAgICAgYXJlIGNvcnJlY3Rs
eSBwcm9wYWdhdGVkIGJleW9uZCB0aGUgZ2VuZXJhdG9yIGZyYW1lLgorCisgICAgICAgIC0gU2V0
R2VuZXJhdG9yTG9jYWwKKworICAgICAgICAgICAgU3RvcmUgYSBsb2NhbCB2YXJpYWJsZSB0byBh
IGdlbmVyYXRvciBmcmFtZS4KKworICAgICAgICBGdXR1cmUgcGxhbnMgYXJlIHRoZSBmb2xsb3dp
bmdzLgorCisgICAgICAgIDEuIFN1cHBvcnQgdHJhbnNmZXJyaW5nIEFic3RyYWN0VmFsdWUgYmV0
d2VlbiBTZXRHZW5lcmF0b3JMb2NhbCBhbmQgR2V0R2VuZXJhdG9yTG9jYWwuIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTMxODMKKworICAgICAgICAyLiBDcmVhdGUg
SlNHZW5lcmF0b3IgYW5kIGFsbG9jYXRlIGl0IGluIHRoZSBnZW5lcmF0b3Igd3JhcHBlciBmdW5j
dGlvbi4gVGhpcyBzaG91bGQgYmUgY29tcGlsZWQgaW4gREZHIC8gRlRMIGFuZAorICAgICAgICB0
aGlzIG9iamVjdCBzaG91bGQgYmUgdHJhY2tlZCAoYnkgZXNjYXBlIGFuYWx5c2lzKSBhbmQgZWxp
bWluYXRlZCBpZiBwb3NzaWJsZSBieSBvYmplY3QgYWxsb2NhdGlvbiBlbGltaW5hdGlvbi4KKwor
ICAgICAgICAzLiBBbmQgb25jZSB3ZSBleHBsb2l0IHRoYXQgR2VuZXJhdG9yRnJhbWUgaXMgbm90
IGVzY2FwZWQgZnJvbSB0aGUgZ2l2ZW4gRlRMLWVkIGZ1bmN0aW9uLCB3ZSB3aWxsIGVsaW1pbmF0
ZSBHZW5lcmF0b3JGcmFtZSBhbGxvY2F0aW9uIGFuZAorICAgICAgICBjb252ZXJ0IEdlbmVyYXRv
ckxvY2FsIG9wZXJhdGlvbnMgaW50byBnZXQvc2V0IGxvY2FsIG9wZXJhdGlvbnMuCisKKyAgICAg
ICAgKiBKYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2o6CisgICAg
ICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRl
cnM6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiBidWlsdGlucy9HZW5lcmF0b3JQcm90b3R5cGUuanM6CisgICAgICAgIChnZW5l
cmF0b3JSZXN1bWUpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5jcHA6
CisgICAgICAgIChKU0M6OmlzQnJhbmNoKToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZUJ5dGVjb2Rl
QmFzaWNCbG9ja3MpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5oOgor
ICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uOgorICAgICAgICAqIGJ5dGVjb2Rl
L0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlTGl2
ZW5lc3NBbmFseXNpczo6Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzKToKKyAgICAgICAgKEpTQzo6
c3RlcE92ZXJJbnN0cnVjdGlvbik6CisgICAgICAgIChKU0M6OmNvbXB1dGVMb2NhbExpdmVuZXNz
Rm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpjb21wdXRlTG9jYWxMaXZlbmVzc0Zv
ckJsb2NrKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpydW5MaXZl
bmVzc0ZpeHBvaW50KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpn
ZXRMaXZlbmVzc0luZm9BdEJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVM
aXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlRnVsbExpdmVuZXNzKToKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlS2lsbHMpOgorICAgICAgICAoSlNDOjpCeXRl
Y29kZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGUpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVj
b2RlTGl2ZW5lc3NBbmFseXNpcy5oOgorICAgICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzQW5h
bHlzaXM6OmJ5dGVjb2RlQW5hbHlzaXNNb2RlKToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29k
ZVVzZURlZi5oOgorICAgICAgICAoSlNDOjpjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KToK
KyAgICAgICAgKEpTQzo6Y29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgICog
Ynl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wQnl0
ZWNvZGUpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKToKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjp2YWxpZGF0ZSk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJs
b2NrLmg6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bGl2ZW5lc3NBbmFseXNpcyk6CisgICAg
ICAgICogYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmNwcDoKKyAgICAgICAgKEpTQzo6Z2V0
SnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OmNvbXB1dGVQcmVj
aXNlSnVtcFRhcmdldHMpOgorICAgICAgICAoSlNDOjpmaW5kSnVtcFRhcmdldHNGb3JCeXRlY29k
ZU9mZnNldCk6CisgICAgICAgICogYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmg6CisgICAg
ICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdHZW5lcmF0b3JGcmFtZSk6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0U2F2ZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0UmVzdW1lKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuaDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRvckZyYW1lUmVn
aXN0ZXIpOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEhlYXAuaDoKKyAgICAgICAgKiBkZmcv
REZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0
cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAg
ICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0
ZUNvZGVQYXJzZXI6Om5ld0dlbmVyYXRvckxvY2FsRGF0YSk6CisgICAgICAgIChKU0M6OkRGRzo6
Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2Rl
UGFyc2VyOjpwYXJzZUNvZGVCbG9jayk6CisgICAgICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6Y2FwYWJpbGl0eUxldmVsKToKKyAgICAgICAgKiBkZmcv
REZHQ2xvYmJlcml6ZS5oOgorICAgICAgICAoSlNDOjpERkc6OmNsb2JiZXJpemUpOgorICAgICAg
ICAqIGRmZy9ERkdDbG9iYmVyc0V4aXRTdGF0ZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Y2xv
YmJlcnNFeGl0U3RhdGUpOgorICAgICAgICAqIGRmZy9ERkdEb2VzR0MuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OmRvZXNHQyk6CisgICAgICAgICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwTm9kZSk6CisgICAgICAgICogZGZnL0RG
R0dlbmVyYXRvckxvY2FsRGF0YS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmguCisgICAgICAgIChKU0M6OkRGRzo6R2VuZXJh
dG9yTG9jYWxEYXRhOjpwcmVkaWN0KToKKyAgICAgICAgKEpTQzo6REZHOjpHZW5lcmF0b3JMb2Nh
bERhdGE6OnByZWRpY3Rpb24pOgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5oOgorICAgICAgICAq
IGRmZy9ERkdNYXlFeGl0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjptYXlFeGl0KToKKyAgICAg
ICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc0dlbmVyYXRv
ckxvY2Fsc1NpemUpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmdlbmVyYXRvckxvY2Fsc1Np
emUpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc0dlbmVyYXRvckxvY2FsSW5kZXgpOgor
ICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmdlbmVyYXRvckxvY2FsSW5kZXgpOgorICAgICAgICAo
SlNDOjpERkc6Ok5vZGU6Omhhc0dlbmVyYXRvckxvY2FsRGF0YSk6CisgICAgICAgIChKU0M6OkRG
Rzo6Tm9kZTo6Z2VuZXJhdG9yTG9jYWxEYXRhKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpo
YXNHZW5lcmF0b3JGcmFtZUxvY2Fscyk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6Z2VuZXJh
dG9yRnJhbWVMb2NhbHMpOgorICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAq
IGRmZy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5oOgor
ICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2U6OnByb3BhZ2F0ZSk6CisgICAg
ICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpzYWZlVG9F
eGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3R2VuZXJhdG9yRnJhbWUpOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUmVzaXplR2VuZXJhdG9yTG9j
YWxzKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKiBkZmcv
REZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICog
ZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZH
U3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlN0cnVj
dHVyZVJlZ2lzdHJhdGlvblBoYXNlOjpydW4pOgorICAgICAgICAqIGZ0bC9GVExBYnN0cmFjdEhl
YXBSZXBvc2l0b3J5LmNwcDoKKyAgICAgICAgKiBmdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9y
eS5oOgorICAgICAgICAqIGZ0bC9GVExDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpG
VEw6OmNhbkNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvTExWTS5jcHA6Cisg
ICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZU5vZGUpOgorICAg
ICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVSZXNpemVHZW5lcmF0
b3JMb2NhbHMpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0xMVk06OmNvbXBp
bGVTZXRHZW5lcmF0b3JMb2NhbCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
TExWTTo6Y29tcGlsZUdldEdlbmVyYXRvckxvY2FsKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6
Okxvd2VyREZHVG9MTFZNOjpjb21waWxlTmV3R2VuZXJhdG9yRnJhbWUpOgorICAgICAgICAqIGpp
dC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MpOgor
ICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUT3Bjb2Rlcy5jcHA6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9zYXZlKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29w
X3Jlc3VtZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9uZXdfZ2VuZXJhdG9yX2ZyYW1l
KToKKyAgICAgICAgKiBqaXQvSklUT3Bjb2RlczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX3NhdmUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcmVzdW1lKToKKyAg
ICAgICAgKiBsbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwOgorICAgICAgICAqIGxsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuY3BwOgor
ICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJbm5lcik6CisgICAgICAgIChK
U0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUdlbmVyYXRvckZ1bmN0aW9uU291cmNlRWxlbWVu
dHMpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6Y3JlYXRlR2VuZXJhdG9yUGFy
YW1ldGVycyk6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5oOgorICAgICAgICAqIHJ1bnRpbWUv
Q29tbW9uU2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6U0xPV19QQVRIX0RFQ0wpOgorICAg
ICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmg6CisgICAgICAgICogcnVudGltZS9HZW5l
cmF0b3JGcmFtZS5jcHA6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpHZW5lcmF0b3JG
cmFtZSk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpmaW5pc2hDcmVhdGlvbik6Cisg
ICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAo
SlNDOjpHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJh
bWU6OnNhdmUpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6cmVzdW1lKToKKyAgICAg
ICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRp
bWUvR2VuZXJhdG9yRnJhbWUuaDoKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OmxvY2Fs
T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6Om51bWJlck9mQ2FsbGVlTG9j
YWxzT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6Om51bWJlck9mU2F2ZWRD
YWxsZWVMb2NhbHNPZmZzZXQpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6bG9jYWxB
dCk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAg
ICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojppbml0KToKKyAgICAgICAgKiBydW50aW1lL0pTR2xv
YmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpnZW5lcmF0b3JGcmFt
ZVN0cnVjdHVyZSk6CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZN
OjpWTSk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9WTS5oOgorICAgICAgICAqIHRlc3Rz
L3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQtYXJyYXkuanM6IEFkZGVkLgorICAgICAgICAo
ZmliKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwtYW5kLW9iamVj
dC5qczogQWRkZWQuCisgICAgICAgIChmaWIpOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9nZW5l
cmF0b3ItZmliLWZ0bC1hbmQtc3RyaW5nLmpzOiBBZGRlZC4KKyAgICAgICAgKGZpYik6CisgICAg
ICAgICogdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLmpzOiBBZGRlZC4KKyAgICAgICAg
KGZpYik6CisgICAgICAgICogdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1mcmFtZS1lbXB0eS5qczog
QWRkZWQuCisgICAgICAgIChzaG91bGRUaHJvdyk6CisgICAgICAgIChzaG91bGRUaHJvdy5maWIp
OgorCiAyMDE2LTAxLTE3ICBKdWxpZW4gQnJpYW5jZWF1ICA8amJyaWFuY2VAY2lzY28uY29tPgog
CiAgICAgICAgIFttaXBzXSBGaXggcmVnVDIgYW5kIHJlZ1QzIHRyYW1wbGluZyBpbiBNYWNyb0Fz
c2VtYmxlcgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
LnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKaW5kZXggZTE4MGUz
NWMyMjhlM2JhYzA2NGMzZmE0N2M3Nzc5ZDYwMmY4MmJjOS4uNWY1MWM2YmE2M2UxNWJlM2ZjYjZh
YzlkZTgzODAwZmE1ZTQyMzJlYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hw
cm9qCkBAIC0xMTk0LDYgKzExOTQsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cZGZn
XERGR0Zyb3plblZhbHVlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxkZmdcREZH
RnVuY3Rpb25XaGl0ZWxpc3QuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGRmZ1xE
RkdHZW5lcmF0aW9uSW5mby5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cZGZnXERG
R0dlbmVyYXRvckxvY2FsRGF0YS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cZGZn
XERGR0dQUkluZm8uaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGRmZ1xERkdHcmFw
aC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cZGZnXERGR0dyYXBoU2FmZXBvaW50
LmgiIC8+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
dmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRl
cnMKaW5kZXggYmY3NTYwZWFhNGEzYzFjZDc5NTkzYjBiM2I2MzA0NTg0YTkyNDYwMi4uNzM5MmYx
ZWY5ZDNiOWEwN2QxNmJjZGRmMzk0YTY5YjE2MjZkYTQ0OCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJv
ai5maWx0ZXJzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hw
cm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycwpAQCAtMzg3Miw2ICszODcyLDkgQEAK
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGRmZ1xERkdHZW5lcmF0aW9uSW5mby5oIj4KICAg
ICAgIDxGaWx0ZXI+ZGZnPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxkZmdcREZHR2VuZXJhdG9yTG9jYWxEYXRhLmgiPgorICAgICAgPEZpbHRl
cj5kZmc8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXGRmZ1xERkdHUFJJbmZvLmgiPgogICAgICAgPEZpbHRlcj5kZmc8L0ZpbHRlcj4KICAgICA8
L0NsSW5jbHVkZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYTkzYTZhYTFjYWE5
YTgyNTRjZDE2YzQ1YWIyM2RhYWZjOTAzZjRhMi4uOWY4ZGNmMDE4NmZkYjIwMTY1MmU3MTRkZjBj
M2VkZDc5MTk3MGIxOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEyNTAsNiAr
MTI1MCw3IEBACiAJCTcwNUI0MUIwMUE2RTUwMUUwMDcxNjc1NyAvKiBTeW1ib2xPYmplY3QuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwNUI0MUE4MUE2
RTUwMUUwMDcxNjc1NyAvKiBTeW1ib2xPYmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MDVCNDFCMTFBNkU1MDFFMDA3MTY3NTcgLyogU3lt
Ym9sUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDcwNUI0MUE5MUE2RTUwMUUwMDcxNjc1NyAvKiBTeW1ib2xQcm90b3R5cGUuY3BwICov
OyB9OwogCQk3MDVCNDFCMjFBNkU1MDFFMDA3MTY3NTcgLyogU3ltYm9sUHJvdG90eXBlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MDVCNDFBQTFBNkU1
MDFFMDA3MTY3NTcgLyogU3ltYm9sUHJvdG90eXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNzA3OTE0MUQxQzRBQTg2MDAwQjgyRkY3IC8qIERG
R0dlbmVyYXRvckxvY2FsRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNzA3OTE0MUMxQzRBQTgwNzAwQjgyRkY3IC8qIERGR0dlbmVyYXRvckxvY2Fs
RGF0YS5oICovOyB9OwogCQk3MDk0QzRERTFBRTQzOTUzMDA0MUEyRUUgLyogQnl0ZWNvZGVJbnRy
aW5zaWNSZWdpc3RyeS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3MDk0QzREQzFBRTQzOTUzMDA0MUEyRUUgLyogQnl0ZWNvZGVJbnRyaW5zaWNSZWdp
c3RyeS5jcHAgKi87IH07CiAJCTcwOTRDNERGMUFFNDM5NTMwMDQxQTJFRSAvKiBCeXRlY29kZUlu
dHJpbnNpY1JlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3MDk0QzRERDFBRTQzOTUzMDA0MUEyRUUgLyogQnl0ZWNvZGVJbnRyaW5zaWNSZWdp
c3RyeS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTcwOUZCODY3MUFFMzM1QzYwMDM5RDA2OSAvKiBKU1dlYWtTZXQuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzA5RkI4NjExQUUzMzVDNjAwMzlEMDY5
IC8qIEpTV2Vha1NldC5jcHAgKi87IH07CkBAIC0zNDI0LDYgKzM0MjUsNyBAQAogCQk3MDVCNDFB
ODFBNkU1MDFFMDA3MTY3NTcgLyogU3ltYm9sT2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFN5bWJvbE9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3MDVCNDFBOTFBNkU1MDFFMDA3MTY3NTcgLyogU3ltYm9sUHJvdG90eXBlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN5bWJvbFByb3RvdHlwZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcwNUI0MUFBMUE2RTUwMUUwMDcxNjc1NyAvKiBTeW1i
b2xQcm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3ltYm9sUHJv
dG90eXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcwNzkxNDFDMUM0QUE4MDcw
MEI4MkZGNyAvKiBERkdHZW5lcmF0b3JMb2NhbERhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gREZHR2VuZXJhdG9yTG9jYWxEYXRhLmg7IHBhdGggPSBkZmcvREZHR2VuZXJh
dG9yTG9jYWxEYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcwOTRDNERDMUFF
NDM5NTMwMDQxQTJFRSAvKiBCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MDk0QzRERDFBRTQzOTUzMDA0MUEyRUUg
LyogQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTcwOUZCODYxMUFFMzM1QzYwMDM5RDA2OSAvKiBKU1dlYWtTZXQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNXZWFrU2V0LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTYyMTgsNiArNjIyMCw3IEBACiAJCQkJMkE4ODA2NzYxOTEw
N0Q1NTAwQ0IwQkJCIC8qIERGR0Z1bmN0aW9uV2hpdGVsaXN0LmNwcCAqLywKIAkJCQkyQTg4MDY3
NzE5MTA3RDU1MDBDQjBCQkIgLyogREZHRnVuY3Rpb25XaGl0ZWxpc3QuaCAqLywKIAkJCQk4NkVD
OURCNjEzMjhERjgyMDAyQjJBRDcgLyogREZHR2VuZXJhdGlvbkluZm8uaCAqLywKKwkJCQk3MDc5
MTQxQzFDNEFBODA3MDBCODJGRjcgLyogREZHR2VuZXJhdG9yTG9jYWxEYXRhLmggKi8sCiAJCQkJ
ODZFQzlEQjcxMzI4REY4MjAwMkIyQUQ3IC8qIERGR0dyYXBoLmNwcCAqLywKIAkJCQk4NkVDOURC
ODEzMjhERjgyMDAyQjJBRDcgLyogREZHR3JhcGguaCAqLywKIAkJCQkwRjJGQ0NGMjE4QTYwMDcw
MDAxQTI3RjggLyogREZHR3JhcGhTYWZlcG9pbnQuY3BwICovLApAQCAtNzk2NSw2ICs3OTY4LDcg
QEAKIAkJCQkwRkUwNTAyOTFBQTkwOTU2MDBEMzNCMzMgLyogU2NvcGVkQXJndW1lbnRzVGFibGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGRTA1MDJCMUFBOTA5NTYwMEQzM0IzMyAvKiBTY29wZU9m
ZnNldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyNEU1NTIxN0VFMjc0OTAwQUJCMjE3IC8qIFNj
cmF0Y2hSZWdpc3RlckFsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzA3OTE0MUQxQzRB
QTg2MDAwQjgyRkY3IC8qIERGR0dlbmVyYXRvckxvY2FsRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTVGRDAwNjgxODlBRkU5QzAwNjMzMjMxIC8qIFNjcmlwdEFyZ3VtZW50cy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTUwM0ZBMjExODhFRkY2ODAwMTEwRjE0IC8qIFNjcmlwdEJyZWFrcG9pbnQu
aCBpbiBIZWFkZXJzICovLAogCQkJCUE1RkQwMDZFMTg5QjAwQUEwMDYzMzIzMSAvKiBTY3JpcHRD
YWxsRnJhbWUuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J1aWx0aW5zL0dlbmVyYXRvclByb3RvdHlwZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9idWlsdGlucy9HZW5lcmF0b3JQcm90b3R5cGUuanMKaW5kZXggYTNiYmMzNTM0YWUwNTJmNGQ2
ZmEyNWJkZTcwM2M5M2QzYTc5NWUxMS4uNDlkZGJmOWM4NDY5MzMwNjU4NzExZjE4ZTcyMTQ5YmM5
ODIyZGEzNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0dlbmVy
YXRvclByb3RvdHlwZS5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvR2Vu
ZXJhdG9yUHJvdG90eXBlLmpzCkBAIC01OCw3ICs1OCw3IEBAIGZ1bmN0aW9uIGdlbmVyYXRvclJl
c3VtZShnZW5lcmF0b3IsIHNlbnRWYWx1ZSwgcmVzdW1lTW9kZSkKICAgICB9IGVsc2UgewogICAg
ICAgICB0cnkgewogICAgICAgICAgICAgZ2VuZXJhdG9yLkBnZW5lcmF0b3JTdGF0ZSA9IEV4ZWN1
dGluZzsKLSAgICAgICAgICAgIHZhbHVlID0gZ2VuZXJhdG9yLkBnZW5lcmF0b3JOZXh0LkBjYWxs
KGdlbmVyYXRvci5AZ2VuZXJhdG9yVGhpcywgZ2VuZXJhdG9yLCBzdGF0ZSwgc2VudFZhbHVlLCBy
ZXN1bWVNb2RlKTsKKyAgICAgICAgICAgIHZhbHVlID0gZ2VuZXJhdG9yLkBnZW5lcmF0b3JOZXh0
LkBjYWxsKGdlbmVyYXRvci5AZ2VuZXJhdG9yVGhpcywgZ2VuZXJhdG9yLCBzdGF0ZSwgc2VudFZh
bHVlLCByZXN1bWVNb2RlLCBnZW5lcmF0b3IuQGdlbmVyYXRvckZyYW1lKTsKICAgICAgICAgICAg
IGlmIChnZW5lcmF0b3IuQGdlbmVyYXRvclN0YXRlID09PSBFeGVjdXRpbmcpIHsKICAgICAgICAg
ICAgICAgICBnZW5lcmF0b3IuQGdlbmVyYXRvclN0YXRlID0gQ29tcGxldGVkOwogICAgICAgICAg
ICAgICAgIGRvbmUgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcAppbmRleCA3ZjE3YzBlZjEwYjQzM2ZhYzhmNThj
YjNiOWNhNWQ0ZDAxNWJiYTA4Li5lYzBkYmY2MDU2MjVlMWMwNjIxM2ZiNGY0YjkwMDczYWFjYjQ3
YzkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVC
YXNpY0Jsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVCYXNpY0Jsb2NrLmNwcApAQCAtMzgsNyArMzgsNyBAQCB2b2lkIEJ5dGVjb2RlQmFzaWNCbG9j
azo6c2hyaW5rVG9GaXQoKQogICAgIG1fc3VjY2Vzc29ycy5zaHJpbmtUb0ZpdCgpOwogfQogCi1z
dGF0aWMgYm9vbCBpc0JyYW5jaChPcGNvZGVJRCBvcGNvZGVJRCkKK3N0YXRpYyBib29sIGlzQnJh
bmNoKE9wY29kZUlEIG9wY29kZUlELCBCeXRlY29kZUFuYWx5c2lzTW9kZSBieXRlY29kZUFuYWx5
c2lzTW9kZSkKIHsKICAgICBzd2l0Y2ggKG9wY29kZUlEKSB7CiAgICAgY2FzZSBvcF9qbXA6CkBA
IC01OCw4ICs1OCwxMSBAQCBzdGF0aWMgYm9vbCBpc0JyYW5jaChPcGNvZGVJRCBvcGNvZGVJRCkK
ICAgICBjYXNlIG9wX3N3aXRjaF9pbW06CiAgICAgY2FzZSBvcF9zd2l0Y2hfY2hhcjoKICAgICBj
YXNlIG9wX3N3aXRjaF9zdHJpbmc6Ci0gICAgY2FzZSBvcF9zYXZlOgogICAgICAgICByZXR1cm4g
dHJ1ZTsKKworICAgIGNhc2Ugb3Bfc2F2ZToKKyAgICAgICAgcmV0dXJuIGJ5dGVjb2RlQW5hbHlz
aXNNb2RlID09IEJ5dGVjb2RlQW5hbHlzaXNNb2RlOjpFeHRyYWN0R2VuZXJhdG9yTGl2ZUNhbGxl
ZUxvY2FsczsKKwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBA
IC0xMTAsMTAgKzExMywxMCBAQCBzdGF0aWMgdm9pZCBsaW5rQmxvY2tzKEJ5dGVjb2RlQmFzaWNC
bG9jayogcHJlZGVjZXNzb3IsIEJ5dGVjb2RlQmFzaWNCbG9jayogc3VjYwogICAgIHByZWRlY2Vz
c29yLT5hZGRTdWNjZXNzb3Ioc3VjY2Vzc29yKTsKIH0KIAotdm9pZCBjb21wdXRlQnl0ZWNvZGVC
YXNpY0Jsb2NrcyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxC
eXRlY29kZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9ja3MpCit2b2lkIGNvbXB1dGVCeXRlY29kZUJh
c2ljQmxvY2tzKENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29kZUFuYWx5c2lzTW9kZSBieXRl
Y29kZUFuYWx5c2lzTW9kZSwgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxv
Y2s+PiYgYmFzaWNCbG9ja3MpCiB7CiAgICAgVmVjdG9yPHVuc2lnbmVkLCAzMj4ganVtcFRhcmdl
dHM7Ci0gICAgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhjb2RlQmxvY2ssIGp1bXBUYXJnZXRz
KTsKKyAgICBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKGNvZGVCbG9jaywgYnl0ZWNvZGVBbmFs
eXNpc01vZGUsIGp1bXBUYXJnZXRzKTsKIAogICAgIC8vIENyZWF0ZSB0aGUgZW50cnkgYW5kIGV4
aXQgYmFzaWMgYmxvY2tzLgogICAgIGJhc2ljQmxvY2tzLnJlc2VydmVDYXBhY2l0eShqdW1wVGFy
Z2V0cy5zaXplKCkgKyAyKTsKQEAgLTE0OSw3ICsxNTIsNyBAQCB2b2lkIGNvbXB1dGVCeXRlY29k
ZUJhc2ljQmxvY2tzKENvZGVCbG9jayogY29kZUJsb2NrLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRy
PEJ5dAogICAgICAgICB9CiAKICAgICAgICAgLy8gSWYgdGhlIGN1cnJlbnQgYnl0ZWNvZGUgaXMg
YSBicmFuY2ggb3IgYSByZXR1cm4sIHRoZW4gdGhlIG5leHQgaW5zdHJ1Y3Rpb24gaXMgdGhlIGxl
YWRlciBvZiBpdHMgb3duIGJhc2ljIGJsb2NrLgotICAgICAgICBpZiAoaXNCcmFuY2gob3Bjb2Rl
SUQpIHx8IGlzVGVybWluYWwob3Bjb2RlSUQpIHx8IGlzVGhyb3cob3Bjb2RlSUQpKQorICAgICAg
ICBpZiAoaXNCcmFuY2gob3Bjb2RlSUQsIGJ5dGVjb2RlQW5hbHlzaXNNb2RlKSB8fCBpc1Rlcm1p
bmFsKG9wY29kZUlEKSB8fCBpc1Rocm93KG9wY29kZUlEKSkKICAgICAgICAgICAgIG5leHRJbnN0
cnVjdGlvbklzTGVhZGVyID0gdHJ1ZTsKIAogICAgICAgICBpZiAoY3JlYXRlZEJsb2NrKQpAQCAt
MjAyLDEwICsyMDUsMTAgQEAgdm9pZCBjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2NrcyhDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXQKICAgICAgICAgICAgIH0K
IAogICAgICAgICAgICAgLy8gSWYgd2UgZm91bmQgYSBicmFuY2gsIGxpbmsgdG8gdGhlIGJsb2Nr
KHMpIHRoYXQgd2UganVtcCB0by4KLSAgICAgICAgICAgIGlmIChpc0JyYW5jaChvcGNvZGVJRCkp
IHsKKyAgICAgICAgICAgIGlmIChpc0JyYW5jaChvcGNvZGVJRCwgYnl0ZWNvZGVBbmFseXNpc01v
ZGUpKSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKGJ5dGVjb2RlT2Zmc2V0ICsgb3Bjb2RlTGVu
Z3RoID09IGJsb2NrLT5sZWFkZXJCeXRlY29kZU9mZnNldCgpICsgYmxvY2stPnRvdGFsQnl0ZWNv
ZGVMZW5ndGgoKSk7CiAgICAgICAgICAgICAgICAgVmVjdG9yPHVuc2lnbmVkLCAxPiBieXRlY29k
ZU9mZnNldHNKdW1wZWRUbzsKLSAgICAgICAgICAgICAgICBmaW5kSnVtcFRhcmdldHNGb3JCeXRl
Y29kZU9mZnNldChjb2RlQmxvY2ssIGJ5dGVjb2RlT2Zmc2V0LCBieXRlY29kZU9mZnNldHNKdW1w
ZWRUbyk7CisgICAgICAgICAgICAgICAgZmluZEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQo
Y29kZUJsb2NrLCBieXRlY29kZUFuYWx5c2lzTW9kZSwgYnl0ZWNvZGVPZmZzZXQsIGJ5dGVjb2Rl
T2Zmc2V0c0p1bXBlZFRvKTsKIAogICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBiYXNpY0Jsb2Nrcy5zaXplKCk7IGkrKykgewogICAgICAgICAgICAgICAgICAgICBCeXRl
Y29kZUJhc2ljQmxvY2sqIG90aGVyQmxvY2sgPSBiYXNpY0Jsb2Nrc1tpXS5nZXQoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2su
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suaApp
bmRleCBiZDdkM2FlOWJhMzQzZTFiMDcxNzllOThmMWVlODlkYTY1YmE3ZTIwLi40OTI1Njk1ZGFl
Y2IwZDZiZjhiN2I2MDIyYzY5MDY0ZWIxM2E0YzNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5oCkBAIC0zNiw2ICszNiwxMSBA
QAogCiBjbGFzcyBDb2RlQmxvY2s7CiAKK2VudW0gY2xhc3MgQnl0ZWNvZGVBbmFseXNpc01vZGUg
eworICAgIFN0YW5kYXJkLAorICAgIEV4dHJhY3RHZW5lcmF0b3JMaXZlQ2FsbGVlTG9jYWxzCit9
OworCiBjbGFzcyBCeXRlY29kZUJhc2ljQmxvY2sgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgpAQCAtNzAsNyArNzUsNyBAQCBjbGFzcyBCeXRlY29kZUJhc2ljQmxvY2sg
ewogICAgIEZhc3RCaXRWZWN0b3IgbV9vdXQ7CiB9OwogCi12b2lkIGNvbXB1dGVCeXRlY29kZUJh
c2ljQmxvY2tzKENvZGVCbG9jayosIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNp
Y0Jsb2NrPj4mKTsKK3ZvaWQgY29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MoQ29kZUJsb2NrKiwg
Qnl0ZWNvZGVBbmFseXNpc01vZGUsIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNp
Y0Jsb2NrPj4mKTsKIAogaW5saW5lIEJ5dGVjb2RlQmFzaWNCbG9jazo6Qnl0ZWNvZGVCYXNpY0Js
b2NrKHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBsZW5ndGgpCiAgICAgOiBtX2xlYWRlckJ5dGVj
b2RlT2Zmc2V0KHN0YXJ0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlTGlzdC5qc29uIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlTGlzdC5qc29uCmluZGV4IDA1M2I4ZGM5Yjg2NGYxYjg2YjRjZWM3YWE2MDFmN2NlMmYw
M2YyZTQuLjNhM2QzMTdlOWY2ZGVlOTI0NjdkY2VlMThmNWNiYTdhMDk0N2EwMmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24KQEAgLTE2
LDYgKzE2LDcgQEAKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX25ld19hcnJheV93aXRoX3Np
emUiLCAibGVuZ3RoIiA6IDQgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX25ld19hcnJh
eV9idWZmZXIiLCAibGVuZ3RoIiA6IDUgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX25l
d19yZWdleHAiLCAibGVuZ3RoIiA6IDMgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX25l
d19nZW5lcmF0b3JfZnJhbWUiLCAibGVuZ3RoIiA6IDMgfSwKICAgICAgICAgICAgIHsgIm5hbWUi
IDogIm9wX21vdiIsICJsZW5ndGgiIDogMyB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3Bf
bm90IiwgImxlbmd0aCIgOiAzIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9lcSIsICJs
ZW5ndGgiIDogNCB9LApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNwcAppbmRleCA3MjI4YjAzMzM2NmM3YTY3
YjUxMDQ4OGRmZTQ1ZjNkZDNjZmE0MzE1Li45YzM3ODlmZjY0NzgwNThhNmVmOGQwYjA4OTZjZmZm
Y2FjM2FiMGRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNwcApAQCAtMzUsOCArMzUsOSBAQAogCiBu
YW1lc3BhY2UgSlNDIHsKIAotQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpCeXRlY29kZUxpdmVu
ZXNzQW5hbHlzaXMoQ29kZUJsb2NrKiBjb2RlQmxvY2spCitCeXRlY29kZUxpdmVuZXNzQW5hbHlz
aXM6OkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNv
ZGVBbmFseXNpc01vZGUgYnl0ZWNvZGVBbmFseXNpc01vZGUpCiAgICAgOiBtX2NvZGVCbG9jayhj
b2RlQmxvY2spCisgICAgLCBtX2J5dGVjb2RlQW5hbHlzaXNNb2RlKGJ5dGVjb2RlQW5hbHlzaXNN
b2RlKQogewogICAgIEFTU0VSVChtX2NvZGVCbG9jayk7CiAgICAgY29tcHV0ZSgpOwpAQCAtOTgs
NyArOTksNyBAQCBzdGF0aWMgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBmaW5kQmFzaWNCbG9ja0ZvckJ5
dGVjb2RlT2Zmc2V0KFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdAogLy8gU2ltcGxpZmllZCBpbnRlcmZh
Y2UgdG8gYnl0ZWNvZGUgdXNlL2RlZiwgd2hpY2ggZGV0ZXJtaW5lcyBkZWZzIGZpcnN0IGFuZCB0
aGVuIHVzZXMsIGFuZCBpbmNsdWRlcwogLy8gZXhjZXB0aW9uIGhhbmRsZXJzIGluIHRoZSB1c2Vz
LgogdGVtcGxhdGU8dHlwZW5hbWUgVXNlRnVuY3RvciwgdHlwZW5hbWUgRGVmRnVuY3Rvcj4KLXN0
YXRpYyB2b2lkIHN0ZXBPdmVySW5zdHJ1Y3Rpb24oQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVj
b2RlQmFzaWNCbG9jayogYmxvY2ssIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNp
Y0Jsb2NrPj4mIGJhc2ljQmxvY2tzLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgY29uc3QgVXNl
RnVuY3RvciYgdXNlLCBjb25zdCBEZWZGdW5jdG9yJiBkZWYpCitzdGF0aWMgdm9pZCBzdGVwT3Zl
ckluc3RydWN0aW9uKENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29kZUFuYWx5c2lzTW9kZSBi
eXRlY29kZUFuYWx5c2lzTW9kZSwgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaywgVmVjdG9yPHN0
ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9ja3MsIHVuc2lnbmVk
IGJ5dGVjb2RlT2Zmc2V0LCBjb25zdCBVc2VGdW5jdG9yJiB1c2UsIGNvbnN0IERlZkZ1bmN0b3Im
IGRlZikKIHsKICAgICAvLyBUaGlzIGFic3RyYWN0bHkgZXhlY3V0ZSB0aGUgaW5zdHJ1Y3Rpb24g
aW4gcmV2ZXJzZS4gSW5zdHJ1Y3Rpb25zIGxvZ2ljYWxseSBmaXJzdCB1c2Ugb3BlcmFuZHMgYW5k
CiAgICAgLy8gdGhlbiBkZWZpbmUgb3BlcmFuZHMuIFRoaXMgbG9naWNhbCBvcmRlcmluZyBpcyBu
ZWNlc3NhcnkgZm9yIG9wZXJhdGlvbnMgdGhhdCB1c2UgYW5kIGRlZiB0aGUgc2FtZQpAQCAtMTE2
LDE0ICsxMTcsMTQgQEAgc3RhdGljIHZvaWQgc3RlcE92ZXJJbnN0cnVjdGlvbihDb2RlQmxvY2sq
IGNvZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaywKICAgICAvLyBmaXJzdCBhZGQg
aXQgdG8gdGhlIG91dCBzZXQgKHRoZSB1c2UpLCBhbmQgdGhlbiB3ZSdkIHJlbW92ZSBpdCAodGhl
IGRlZikuCiAgICAgCiAgICAgY29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldCgKLSAgICAgICAg
Y29kZUJsb2NrLCBibG9jaywgYnl0ZWNvZGVPZmZzZXQsCisgICAgICAgIGNvZGVCbG9jaywgYnl0
ZWNvZGVBbmFseXNpc01vZGUsIGJsb2NrLCBieXRlY29kZU9mZnNldCwKICAgICAgICAgWyZdIChD
b2RlQmxvY2sqIGNvZGVCbG9jaywgSW5zdHJ1Y3Rpb24qLCBPcGNvZGVJRCwgaW50IG9wZXJhbmQp
IHsKICAgICAgICAgICAgIGlmIChpc1ZhbGlkUmVnaXN0ZXJGb3JMaXZlbmVzcyhjb2RlQmxvY2ss
IG9wZXJhbmQpKQogICAgICAgICAgICAgICAgIGRlZihWaXJ0dWFsUmVnaXN0ZXIob3BlcmFuZCku
dG9Mb2NhbCgpKTsKICAgICAgICAgfSk7CiAKICAgICBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zm
c2V0KAotICAgICAgICBjb2RlQmxvY2ssIGJsb2NrLCBieXRlY29kZU9mZnNldCwKKyAgICAgICAg
Y29kZUJsb2NrLCBieXRlY29kZUFuYWx5c2lzTW9kZSwgYmxvY2ssIGJ5dGVjb2RlT2Zmc2V0LAog
ICAgICAgICBbJl0gKENvZGVCbG9jayogY29kZUJsb2NrLCBJbnN0cnVjdGlvbiosIE9wY29kZUlE
LCBpbnQgb3BlcmFuZCkgewogICAgICAgICAgICAgaWYgKGlzVmFsaWRSZWdpc3RlckZvckxpdmVu
ZXNzKGNvZGVCbG9jaywgb3BlcmFuZCkpCiAgICAgICAgICAgICAgICAgdXNlKFZpcnR1YWxSZWdp
c3RlcihvcGVyYW5kKS50b0xvY2FsKCkpOwpAQCAtMTM4LDEwICsxMzksMTAgQEAgc3RhdGljIHZv
aWQgc3RlcE92ZXJJbnN0cnVjdGlvbihDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVCYXNp
Y0Jsb2NrKiBibG9jaywKICAgICB9CiB9CiAKLXN0YXRpYyB2b2lkIHN0ZXBPdmVySW5zdHJ1Y3Rp
b24oQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2ssIFZlY3Rv
cjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mIGJhc2ljQmxvY2tzLCB1bnNp
Z25lZCBieXRlY29kZU9mZnNldCwgRmFzdEJpdFZlY3RvciYgb3V0KQorc3RhdGljIHZvaWQgc3Rl
cE92ZXJJbnN0cnVjdGlvbihDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVBbmFseXNpc01v
ZGUgYnl0ZWNvZGVBbmFseXNpc01vZGUsIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2ssIFZlY3Rv
cjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mIGJhc2ljQmxvY2tzLCB1bnNp
Z25lZCBieXRlY29kZU9mZnNldCwgRmFzdEJpdFZlY3RvciYgb3V0KQogewogICAgIHN0ZXBPdmVy
SW5zdHJ1Y3Rpb24oCi0gICAgICAgIGNvZGVCbG9jaywgYmxvY2ssIGJhc2ljQmxvY2tzLCBieXRl
Y29kZU9mZnNldCwKKyAgICAgICAgY29kZUJsb2NrLCBieXRlY29kZUFuYWx5c2lzTW9kZSwgYmxv
Y2ssIGJhc2ljQmxvY2tzLCBieXRlY29kZU9mZnNldCwKICAgICAgICAgWyZdICh1bnNpZ25lZCBi
aXRJbmRleCkgewogICAgICAgICAgICAgLy8gVGhpcyBpcyB0aGUgdXNlIGZ1bmN0b3IsIHNvIHdl
IHNldCB0aGUgYml0LgogICAgICAgICAgICAgb3V0LnNldChiaXRJbmRleCk7CkBAIC0xNTIsNyAr
MTUzLDcgQEAgc3RhdGljIHZvaWQgc3RlcE92ZXJJbnN0cnVjdGlvbihDb2RlQmxvY2sqIGNvZGVC
bG9jaywgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaywKICAgICAgICAgfSk7CiB9CiAKLXN0YXRp
YyB2b2lkIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2ssIFZlY3RvcjxzdGQ6OnVuaXF1ZV9w
dHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mIGJhc2ljQmxvY2tzLCB1bnNpZ25lZCB0YXJnZXRPZmZz
ZXQsIEZhc3RCaXRWZWN0b3ImIHJlc3VsdCkKK3N0YXRpYyB2b2lkIGNvbXB1dGVMb2NhbExpdmVu
ZXNzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQW5hbHlz
aXNNb2RlIGJ5dGVjb2RlQW5hbHlzaXNNb2RlLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrLCBW
ZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+JiBiYXNpY0Jsb2Nrcywg
dW5zaWduZWQgdGFyZ2V0T2Zmc2V0LCBGYXN0Qml0VmVjdG9yJiByZXN1bHQpCiB7CiAgICAgQVNT
RVJUKCFibG9jay0+aXNFeGl0QmxvY2soKSk7CiAgICAgQVNTRVJUKCFibG9jay0+aXNFbnRyeUJs
b2NrKCkpOwpAQCAtMTY0LDE3ICsxNjUsMTcgQEAgc3RhdGljIHZvaWQgY29tcHV0ZUxvY2FsTGl2
ZW5lc3NGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGUKICAg
ICAgICAgaWYgKHRhcmdldE9mZnNldCA+IGJ5dGVjb2RlT2Zmc2V0KQogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIAotICAgICAgICBzdGVwT3Zlckluc3RydWN0aW9uKGNvZGVCbG9jaywgYmxv
Y2ssIGJhc2ljQmxvY2tzLCBieXRlY29kZU9mZnNldCwgb3V0KTsKKyAgICAgICAgc3RlcE92ZXJJ
bnN0cnVjdGlvbihjb2RlQmxvY2ssIGJ5dGVjb2RlQW5hbHlzaXNNb2RlLCBibG9jaywgYmFzaWNC
bG9ja3MsIGJ5dGVjb2RlT2Zmc2V0LCBvdXQpOwogICAgIH0KIAogICAgIHJlc3VsdC5zZXQob3V0
KTsKIH0KIAotc3RhdGljIHZvaWQgY29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCbG9jayhDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaywgVmVjdG9yPHN0ZDo6dW5p
cXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9ja3MpCitzdGF0aWMgdm9pZCBj
b21wdXRlTG9jYWxMaXZlbmVzc0ZvckJsb2NrKENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29k
ZUFuYWx5c2lzTW9kZSBieXRlY29kZUFuYWx5c2lzTW9kZSwgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBi
bG9jaywgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYgYmFzaWNC
bG9ja3MpCiB7CiAgICAgaWYgKGJsb2NrLT5pc0V4aXRCbG9jaygpIHx8IGJsb2NrLT5pc0VudHJ5
QmxvY2soKSkKICAgICAgICAgcmV0dXJuOwotICAgIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQnl0
ZWNvZGVPZmZzZXQoY29kZUJsb2NrLCBibG9jaywgYmFzaWNCbG9ja3MsIGJsb2NrLT5sZWFkZXJC
eXRlY29kZU9mZnNldCgpLCBibG9jay0+aW4oKSk7CisgICAgY29tcHV0ZUxvY2FsTGl2ZW5lc3NG
b3JCeXRlY29kZU9mZnNldChjb2RlQmxvY2ssIGJ5dGVjb2RlQW5hbHlzaXNNb2RlLCBibG9jaywg
YmFzaWNCbG9ja3MsIGJsb2NrLT5sZWFkZXJCeXRlY29kZU9mZnNldCgpLCBibG9jay0+aW4oKSk7
CiB9CiAKIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpydW5MaXZlbmVzc0ZpeHBvaW50
KCkKQEAgLTIwMSw3ICsyMDIsNyBAQCB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6cnVu
TGl2ZW5lc3NGaXhwb2ludCgpCiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSAwOyBqIDwg
YmxvY2stPnN1Y2Nlc3NvcnMoKS5zaXplKCk7IGorKykKICAgICAgICAgICAgICAgICBuZXdPdXQu
bWVyZ2UoYmxvY2stPnN1Y2Nlc3NvcnMoKVtqXS0+aW4oKSk7CiAgICAgICAgICAgICBib29sIG91
dERpZENoYW5nZSA9IGJsb2NrLT5vdXQoKS5zZXRBbmRDaGVjayhuZXdPdXQpOwotICAgICAgICAg
ICAgY29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCbG9jayhtX2NvZGVCbG9jaywgYmxvY2ssIG1fYmFz
aWNCbG9ja3MpOworICAgICAgICAgICAgY29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCbG9jayhtX2Nv
ZGVCbG9jaywgbV9ieXRlY29kZUFuYWx5c2lzTW9kZSwgYmxvY2ssIG1fYmFzaWNCbG9ja3MpOwog
ICAgICAgICAgICAgY2hhbmdlZCB8PSBvdXREaWRDaGFuZ2U7CiAgICAgICAgIH0KICAgICB9IHdo
aWxlIChjaGFuZ2VkKTsKQEAgLTIxNCw3ICsyMTUsNyBAQCB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NB
bmFseXNpczo6Z2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29kZU9mZnNldCh1bnNpZ25lZCBieXRlY29k
ZQogICAgIEFTU0VSVCghYmxvY2stPmlzRW50cnlCbG9jaygpKTsKICAgICBBU1NFUlQoIWJsb2Nr
LT5pc0V4aXRCbG9jaygpKTsKICAgICByZXN1bHQucmVzaXplKGJsb2NrLT5vdXQoKS5udW1CaXRz
KCkpOwotICAgIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQnl0ZWNvZGVPZmZzZXQobV9jb2RlQmxv
Y2ssIGJsb2NrLCBtX2Jhc2ljQmxvY2tzLCBieXRlY29kZU9mZnNldCwgcmVzdWx0KTsKKyAgICBj
b21wdXRlTG9jYWxMaXZlbmVzc0ZvckJ5dGVjb2RlT2Zmc2V0KG1fY29kZUJsb2NrLCBtX2J5dGVj
b2RlQW5hbHlzaXNNb2RlLCBibG9jaywgbV9iYXNpY0Jsb2NrcywgYnl0ZWNvZGVPZmZzZXQsIHJl
c3VsdCk7CiB9CiAKIGJvb2wgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpvcGVyYW5kSXNMaXZl
QXRCeXRlY29kZU9mZnNldChpbnQgb3BlcmFuZCwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpCkBA
IC0yNDgsNyArMjQ5LDcgQEAgdm9pZCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGVG
dWxsTGl2ZW5lc3MoRnVsbEJ5dGVjb2RlTGl2ZW5lc3MmIHJlc3VsdCkKICAgICAgICAgCiAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IGJsb2NrLT5ieXRlY29kZU9mZnNldHMoKS5zaXplKCk7IGkt
LTspIHsKICAgICAgICAgICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0ID0gYmxvY2stPmJ5dGVj
b2RlT2Zmc2V0cygpW2ldOwotICAgICAgICAgICAgc3RlcE92ZXJJbnN0cnVjdGlvbihtX2NvZGVC
bG9jaywgYmxvY2ssIG1fYmFzaWNCbG9ja3MsIGJ5dGVjb2RlT2Zmc2V0LCBvdXQpOworICAgICAg
ICAgICAgc3RlcE92ZXJJbnN0cnVjdGlvbihtX2NvZGVCbG9jaywgbV9ieXRlY29kZUFuYWx5c2lz
TW9kZSwgYmxvY2ssIG1fYmFzaWNCbG9ja3MsIGJ5dGVjb2RlT2Zmc2V0LCBvdXQpOwogICAgICAg
ICAgICAgcmVzdWx0Lm1fbWFwW2J5dGVjb2RlT2Zmc2V0XSA9IG91dDsKICAgICAgICAgfQogICAg
IH0KQEAgLTI3MSw3ICsyNzIsNyBAQCB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Y29t
cHV0ZUtpbGxzKEJ5dGVjb2RlS2lsbHMmIHJlc3VsdCkKICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gYmxvY2stPmJ5dGVjb2RlT2Zmc2V0cygpLnNpemUoKTsgaS0tOykgewogICAgICAgICAgICAg
dW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQgPSBibG9jay0+Ynl0ZWNvZGVPZmZzZXRzKClbaV07CiAg
ICAgICAgICAgICBzdGVwT3Zlckluc3RydWN0aW9uKAotICAgICAgICAgICAgICAgIG1fY29kZUJs
b2NrLCBibG9jaywgbV9iYXNpY0Jsb2NrcywgYnl0ZWNvZGVPZmZzZXQsCisgICAgICAgICAgICAg
ICAgbV9jb2RlQmxvY2ssIG1fYnl0ZWNvZGVBbmFseXNpc01vZGUsIGJsb2NrLCBtX2Jhc2ljQmxv
Y2tzLCBieXRlY29kZU9mZnNldCwKICAgICAgICAgICAgICAgICBbJl0gKHVuc2lnbmVkIGluZGV4
KSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgZm9yIHVzZXMuCiAgICAgICAgICAg
ICAgICAgICAgIGlmIChvdXQuZ2V0KGluZGV4KSkKQEAgLTMzNyw3ICszMzgsNyBAQCB2b2lkIEJ5
dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6ZHVtcFJlc3VsdHMoKQogCiB2b2lkIEJ5dGVjb2RlTGl2
ZW5lc3NBbmFseXNpczo6Y29tcHV0ZSgpCiB7Ci0gICAgY29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9j
a3MobV9jb2RlQmxvY2ssIG1fYmFzaWNCbG9ja3MpOworICAgIGNvbXB1dGVCeXRlY29kZUJhc2lj
QmxvY2tzKG1fY29kZUJsb2NrLCBtX2J5dGVjb2RlQW5hbHlzaXNNb2RlLCBtX2Jhc2ljQmxvY2tz
KTsKICAgICBBU1NFUlQobV9iYXNpY0Jsb2Nrcy5zaXplKCkpOwogICAgIHJ1bkxpdmVuZXNzRml4
cG9pbnQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5oCmluZGV4IGVjZTE2ZjIxZjAxNTEwYTY0MjdmZDg0
MTE0MDc5YmVkODcwYzA4NzUuLjlkMjAyOGQ2OWE1MTc3NjI5NjI4NjExMmUzODM0MDcxOWIwNWMy
NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxp
dmVuZXNzQW5hbHlzaXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmgKQEAgLTQxLDcgKzQxLDcgQEAgY2xhc3MgQnl0ZWNvZGVM
aXZlbmVzc0FuYWx5c2lzIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMpOwogcHVibGljOgotICAg
IEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcyhDb2RlQmxvY2sqKTsKKyAgICBCeXRlY29kZUxpdmVu
ZXNzQW5hbHlzaXMoQ29kZUJsb2NrKiwgQnl0ZWNvZGVBbmFseXNpc01vZGUpOwogICAgIAogICAg
IGJvb2wgb3BlcmFuZElzTGl2ZUF0Qnl0ZWNvZGVPZmZzZXQoaW50IG9wZXJhbmQsIHVuc2lnbmVk
IGJ5dGVjb2RlT2Zmc2V0KTsKICAgICBGYXN0Qml0VmVjdG9yIGdldExpdmVuZXNzSW5mb0F0Qnl0
ZWNvZGVPZmZzZXQodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpOwpAQCAtNDksNiArNDksOCBAQCBj
bGFzcyBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMgewogICAgIHZvaWQgY29tcHV0ZUZ1bGxMaXZl
bmVzcyhGdWxsQnl0ZWNvZGVMaXZlbmVzcyYgcmVzdWx0KTsKICAgICB2b2lkIGNvbXB1dGVLaWxs
cyhCeXRlY29kZUtpbGxzJiByZXN1bHQpOwogCisgICAgQnl0ZWNvZGVBbmFseXNpc01vZGUgYnl0
ZWNvZGVBbmFseXNpc01vZGUoKSBjb25zdCB7IHJldHVybiBtX2J5dGVjb2RlQW5hbHlzaXNNb2Rl
OyB9CisKIHByaXZhdGU6CiAgICAgdm9pZCBjb21wdXRlKCk7CiAgICAgdm9pZCBydW5MaXZlbmVz
c0ZpeHBvaW50KCk7CkBAIC01Nyw2ICs1OSw3IEBAIGNsYXNzIEJ5dGVjb2RlTGl2ZW5lc3NBbmFs
eXNpcyB7CiAgICAgdm9pZCBnZXRMaXZlbmVzc0luZm9BdEJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVk
IGJ5dGVjb2RlT2Zmc2V0LCBGYXN0Qml0VmVjdG9yJik7CiAKICAgICBDb2RlQmxvY2sqIG1fY29k
ZUJsb2NrOworICAgIEJ5dGVjb2RlQW5hbHlzaXNNb2RlIG1fYnl0ZWNvZGVBbmFseXNpc01vZGU7
CiAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiBtX2Jhc2lj
QmxvY2tzOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlVXNlRGVmLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVVc2VEZWYuaAppbmRleCA4MDExMTRjMzcyYTI3N2Y2ZTE3NzA5YjkwYmUyMDdjOGY5OWJlODJk
Li43NTM5NzlkZjNmZjZjN2QxZjAxZTA1ZTU3ODAwY2U3YjFlODI0YTkxIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaApAQCAtMzIsNyArMzIs
NyBAQAogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgogdm9pZCBjb21wdXRlVXNlc0ZvckJ5
dGVjb2RlT2Zmc2V0KAotICAgIENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29kZUJhc2ljQmxv
Y2sqIGJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgY29uc3QgRnVuY3RvciYgZnVuY3Rv
cikKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVBbmFseXNpc01vZGUgYnl0ZWNv
ZGVBbmFseXNpc01vZGUsIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2ssIHVuc2lnbmVkIGJ5dGVj
b2RlT2Zmc2V0LCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQogewogICAgIEludGVycHJldGVyKiBp
bnRlcnByZXRlciA9IGNvZGVCbG9jay0+dm0oKS0+aW50ZXJwcmV0ZXI7CiAgICAgSW5zdHJ1Y3Rp
b24qIGluc3RydWN0aW9uc0JlZ2luID0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigp
OwpAQCAtNTUsNiArNTUsNyBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoCiAg
ICAgY2FzZSBvcF9jcmVhdGVfb3V0X29mX2JhbmRfYXJndW1lbnRzOgogICAgIGNhc2Ugb3BfZ2V0
X3Jlc3RfbGVuZ3RoOgogICAgIGNhc2Ugb3Bfd2F0Y2hkb2c6CisgICAgY2FzZSBvcF9uZXdfZ2Vu
ZXJhdG9yX2ZyYW1lOgogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBvcF9hc3NlcnQ6CiAgICAg
Y2FzZSBvcF9nZXRfc2NvcGU6CkBAIC0yNTIsMTggKzI1MywyNiBAQCB2b2lkIGNvbXB1dGVVc2Vz
Rm9yQnl0ZWNvZGVPZmZzZXQoCiAgICAgfQogICAgIGNhc2Ugb3Bfc2F2ZTogewogICAgICAgICBm
dW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBpbnN0cnVjdGlvblsxXS51
Lm9wZXJhbmQpOwotICAgICAgICB1bnNpZ25lZCBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXQgPSBi
eXRlY29kZU9mZnNldCArIGluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKLSAgICAgICAgQnl0ZWNv
ZGVCYXNpY0Jsb2NrKiBtZXJnZVBvaW50QmxvY2sgPSBudWxscHRyOwotICAgICAgICBmb3IgKEJ5
dGVjb2RlQmFzaWNCbG9jayogc3VjY2Vzc29yIDogYmxvY2stPnN1Y2Nlc3NvcnMoKSkgewotICAg
ICAgICAgICAgaWYgKHN1Y2Nlc3Nvci0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKSA9PSBtZXJnZVBv
aW50Qnl0ZWNvZGVPZmZzZXQpIHsKLSAgICAgICAgICAgICAgICBtZXJnZVBvaW50QmxvY2sgPSBz
dWNjZXNzb3I7Ci0gICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGlmIChieXRlY29kZUFu
YWx5c2lzTW9kZSA9PSBCeXRlY29kZUFuYWx5c2lzTW9kZTo6RXh0cmFjdEdlbmVyYXRvckxpdmVD
YWxsZWVMb2NhbHMpIHsKKyAgICAgICAgICAgIHVuc2lnbmVkIG1lcmdlUG9pbnRCeXRlY29kZU9m
ZnNldCA9IGJ5dGVjb2RlT2Zmc2V0ICsgaW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kOworICAgICAg
ICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBtZXJnZVBvaW50QmxvY2sgPSBudWxscHRyOworICAg
ICAgICAgICAgZm9yIChCeXRlY29kZUJhc2ljQmxvY2sqIHN1Y2Nlc3NvciA6IGJsb2NrLT5zdWNj
ZXNzb3JzKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoc3VjY2Vzc29yLT5sZWFkZXJCeXRlY29k
ZU9mZnNldCgpID09IG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldCkgeworICAgICAgICAgICAgICAg
ICAgICBtZXJnZVBvaW50QmxvY2sgPSBzdWNjZXNzb3I7CisgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEFTU0VS
VChtZXJnZVBvaW50QmxvY2spOworICAgICAgICAgICAgbWVyZ2VQb2ludEJsb2NrLT5pbigpLmZv
ckVhY2hTZXRCaXQoWyZdKHVuc2lnbmVkIGxvY2FsKSB7CisgICAgICAgICAgICAgICAgZnVuY3Rv
cihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgdmlydHVhbFJlZ2lzdGVyRm9yTG9j
YWwobG9jYWwpLm9mZnNldCgpKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gaW5zdHJ1Y3Rpb25b
Ml0udS51bnNpZ25lZFZhbHVlOworICAgICAgICAgICAgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2
ZW5lc3MgPSBjb2RlQmxvY2stPmxpdmVDYWxsZWVMb2NhbHNBdFlpZWxkKGxpdmVDYWxsZWVMb2Nh
bHNJbmRleCk7CisgICAgICAgICAgICBsaXZlbmVzcy5mb3JFYWNoU2V0Qml0KFsmXSh1bnNpZ25l
ZCBsb2NhbCkgeworICAgICAgICAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlv
biwgb3Bjb2RlSUQsIHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGxvY2FsKS5vZmZzZXQoKSk7Cisg
ICAgICAgICAgICB9KTsKICAgICAgICAgfQotICAgICAgICBBU1NFUlQobWVyZ2VQb2ludEJsb2Nr
KTsKLSAgICAgICAgbWVyZ2VQb2ludEJsb2NrLT5pbigpLmZvckVhY2hTZXRCaXQoWyZdKHVuc2ln
bmVkIGxvY2FsKSB7Ci0gICAgICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24s
IG9wY29kZUlELCB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChsb2NhbCkub2Zmc2V0KCkpOwotICAg
ICAgICB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBkZWZhdWx0OgpAQCAtMjczLDcg
KzI4Miw3IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCgKIH0KIAogdGVtcGxh
dGU8dHlwZW5hbWUgRnVuY3Rvcj4KLXZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChD
b2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaywgdW5zaWduZWQg
Ynl0ZWNvZGVPZmZzZXQsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCit2b2lkIGNvbXB1dGVEZWZz
Rm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQW5hbHlzaXNN
b2RlIGJ5dGVjb2RlQW5hbHlzaXNNb2RlLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrLCB1bnNp
Z25lZCBieXRlY29kZU9mZnNldCwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikKIHsKICAgICBJbnRl
cnByZXRlciogaW50ZXJwcmV0ZXIgPSBjb2RlQmxvY2stPnZtKCktPmludGVycHJldGVyOwogICAg
IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiA9IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25z
KCkuYmVnaW4oKTsKQEAgLTQxNSw3ICs0MjQsOCBAQCB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNv
ZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvYwog
ICAgIGNhc2Ugb3BfZGVsX2J5X3ZhbDoKICAgICBjYXNlIG9wX3Vuc2lnbmVkOgogICAgIGNhc2Ug
b3BfZ2V0X2Zyb21fYXJndW1lbnRzOiAKLSAgICBjYXNlIG9wX2dldF9yZXN0X2xlbmd0aDogewor
ICAgIGNhc2Ugb3BfZ2V0X3Jlc3RfbGVuZ3RoOgorICAgIGNhc2Ugb3BfbmV3X2dlbmVyYXRvcl9m
cmFtZTogewogICAgICAgICBBU1NFUlQob3Bjb2RlTGVuZ3Roc1tvcGNvZGVJRF0gPiAxKTsKICAg
ICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rp
b25bMV0udS5vcGVyYW5kKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNDMyLDEwICs0NDIsMTggQEAg
dm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBC
eXRlY29kZUJhc2ljQmxvY2sqIGJsb2MKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBjYXNl
IG9wX3Jlc3VtZTogewotICAgICAgICBSRUxFQVNFX0FTU0VSVChibG9jay0+c3VjY2Vzc29ycygp
LnNpemUoKSA9PSAxKTsKLSAgICAgICAgYmxvY2stPnN1Y2Nlc3NvcnMoKVswXS0+aW4oKS5mb3JF
YWNoU2V0Qml0KFsmXSh1bnNpZ25lZCBsb2NhbCkgewotICAgICAgICAgICAgZnVuY3Rvcihjb2Rl
QmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwobG9j
YWwpLm9mZnNldCgpKTsKLSAgICAgICAgfSk7CisgICAgICAgIGlmIChieXRlY29kZUFuYWx5c2lz
TW9kZSA9PSBCeXRlY29kZUFuYWx5c2lzTW9kZTo6RXh0cmFjdEdlbmVyYXRvckxpdmVDYWxsZWVM
b2NhbHMpIHsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGJsb2NrLT5zdWNjZXNzb3JzKCku
c2l6ZSgpID09IDEpOworICAgICAgICAgICAgYmxvY2stPnN1Y2Nlc3NvcnMoKVswXS0+aW4oKS5m
b3JFYWNoU2V0Qml0KFsmXSh1bnNpZ25lZCBsb2NhbCkgeworICAgICAgICAgICAgICAgIGZ1bmN0
b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIHZpcnR1YWxSZWdpc3RlckZvckxv
Y2FsKGxvY2FsKS5vZmZzZXQoKSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9IGluc3RydWN0aW9u
WzJdLnUudW5zaWduZWRWYWx1ZTsKKyAgICAgICAgICAgIGNvbnN0IEZhc3RCaXRWZWN0b3ImIGxp
dmVuZXNzID0gY29kZUJsb2NrLT5saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZChsaXZlQ2FsbGVlTG9j
YWxzSW5kZXgpOworICAgICAgICAgICAgbGl2ZW5lc3MuZm9yRWFjaFNldEJpdChbJl0odW5zaWdu
ZWQgbG9jYWwpIHsKKyAgICAgICAgICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rp
b24sIG9wY29kZUlELCB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChsb2NhbCkub2Zmc2V0KCkpOwor
ICAgICAgICAgICAgfSk7CisgICAgICAgIH0KICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IDU5
MDVlOTE4M2M4ZjEyNjY0ZTJiYTNkZDI5YTVjNDY1Njc2OGRjMDMuLjBiZTQxZjFlOWQwYTFjYmYx
Zjc1NjE2ZjlmY2Q2OGE3OGYxNmExN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suY3BwCkBAIC0xNTU3LDI2ICsxNTU3LDMzIEBAIHZvaWQgQ29kZUJsb2Nr
OjpkdW1wQnl0ZWNvZGUoCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBj
YXNlIG9wX3NhdmU6IHsKLSAgICAgICAgICAgIGludCBnZW5lcmF0b3IgPSAoKytpdCktPnUub3Bl
cmFuZDsKKyAgICAgICAgICAgIGludCBmcmFtZSA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAg
ICAgICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gKCsraXQpLT51LnVuc2lnbmVk
VmFsdWU7CiAgICAgICAgICAgICBpbnQgb2Zmc2V0ID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAg
ICAgICAgICBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlbmVzcyA9IG1fcmFyZURhdGEtPm1fbGl2
ZUNhbGxlZUxvY2Fsc0F0WWllbGRbbGl2ZUNhbGxlZUxvY2Fsc0luZGV4XTsKICAgICAgICAgICAg
IHByaW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgInNhdmUiKTsKLSAg
ICAgICAgICAgIG91dC5wcmludGYoIiVzLCAiLCByZWdpc3Rlck5hbWUoZ2VuZXJhdG9yKS5kYXRh
KCkpOworICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICIsIHJlZ2lzdGVyTmFtZShmcmFtZSku
ZGF0YSgpKTsKICAgICAgICAgICAgIGxpdmVuZXNzLmR1bXAob3V0KTsKICAgICAgICAgICAgIG91
dC5wcmludGYoIihAbGl2ZSUxdSksICVkKC0+JWQpIiwgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4LCBv
ZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAgICAgICAgIGNhc2Ugb3BfcmVzdW1lOiB7Ci0gICAgICAgICAgICBpbnQgZ2VuZXJhdG9yID0g
KCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBpbnQgZnJhbWUgPSAoKytpdCktPnUub3Bl
cmFuZDsKICAgICAgICAgICAgIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9ICgrK2l0
KS0+dS51bnNpZ25lZFZhbHVlOwogICAgICAgICAgICAgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2
ZW5lc3MgPSBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkW2xpdmVDYWxsZWVM
b2NhbHNJbmRleF07CiAgICAgICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBleGVjLCBs
b2NhdGlvbiwgaXQsICJyZXN1bWUiKTsKLSAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAiLCBy
ZWdpc3Rlck5hbWUoZ2VuZXJhdG9yKS5kYXRhKCkpOworICAgICAgICAgICAgb3V0LnByaW50Zigi
JXMsICIsIHJlZ2lzdGVyTmFtZShmcmFtZSkuZGF0YSgpKTsKICAgICAgICAgICAgIGxpdmVuZXNz
LmR1bXAob3V0KTsKICAgICAgICAgICAgIG91dC5wcmludGYoIihAbGl2ZSUxdSkiLCBsaXZlQ2Fs
bGVlTG9jYWxzSW5kZXgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAg
Y2FzZSBvcF9uZXdfZ2VuZXJhdG9yX2ZyYW1lOiB7CisgICAgICAgICAgICBpbnQgZHN0ID0gKCsr
aXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICB1bnNpZ25lZCBnZW5lcmF0b3JMb2NhbHNTaXpl
ID0gKCsraXQpLT51LnVuc2lnbmVkVmFsdWU7CisgICAgICAgICAgICBwcmludExvY2F0aW9uT3BB
bmRSZWdpc3Rlck9wZXJhbmQob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJuZXdfZ2VuZXJhdG9y
X2ZyYW1lIiwgZHN0KTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIiAldSIsIGdlbmVyYXRvckxv
Y2Fsc1NpemUpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAgICAgY2FzZSBv
cF9hc3NlcnQ6IHsKICAgICAgICAgICAgIGludCBjb25kaXRpb24gPSAoKytpdCktPnUub3BlcmFu
ZDsKICAgICAgICAgICAgIGludCBsaW5lID0gKCsraXQpLT51Lm9wZXJhbmQ7CkBAIC0xODQ3LDYg
KzE4NTQsMTIgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgQ29weVBh
cnNlZEJsb2NrVGFnLCBDb2RlQmxvY2smIG90aGVyKQogICAgIHNldE51bVBhcmFtZXRlcnModW5s
aW5rZWRDb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSk7CiB9CiAKK3N0cnVjdCBHZW5lcmF0b3JQ
b2ludHMgeworICAgIHNpemVfdCBzYXZlUG9pbnQ7CisgICAgc2l6ZV90IG1lcmdlUG9pbnQ7Cisg
ICAgc2l6ZV90IHJlc3VtZVBvaW50OworfTsKKwogdm9pZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0
aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmtlZENv
ZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2ssCiAgICAgSlNTY29wZSogc2NvcGUpCiB7CkBAIC0x
OTgwLDkgKzE5OTMsMTAgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwg
U2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICBIYXNoU2V0PEpT
TW9kdWxlRW52aXJvbm1lbnQqPiBzdHJvbmdseVJlZmVyZW5jZWRNb2R1bGVFbnZpcm9ubWVudHM7
CiAKICAgICAvLyBCb29ra2VlcCB0aGUgbWVyZ2UgcG9pbnQgYnl0ZWNvZGUgb2Zmc2V0cy4KLSAg
ICBWZWN0b3I8c2l6ZV90PiBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXRzOworICAgIFZlY3RvcjxH
ZW5lcmF0b3JQb2ludHM+IGdlbmVyYXRvclBvaW50c1ZlY3RvcjsKIAogICAgIFJlZkNvdW50ZWRB
cnJheTxJbnN0cnVjdGlvbj4gaW5zdHJ1Y3Rpb25zKGluc3RydWN0aW9uQ291bnQpOworICAgIHVu
c2lnbmVkIG5ld0dlbmVyYXRvckZyYW1lSW5zdHJ1Y3Rpb25PZmZzZXQgPSAwOwogCiAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgIWluc3RydWN0aW9uUmVhZGVyLmF0RW5kKCk7ICkgewogICAgICAg
ICBjb25zdCBVbmxpbmtlZEluc3RydWN0aW9uKiBwYyA9IGluc3RydWN0aW9uUmVhZGVyLm5leHQo
KTsKQEAgLTIyNzMsOSArMjI4NywyMyBAQCB2b2lkIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24o
Vk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGluawogICAgICAg
ICBjYXNlIG9wX3NhdmU6IHsKICAgICAgICAgICAgIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJ
bmRleCA9IHBjWzJdLnUuaW5kZXg7CiAgICAgICAgICAgICBpbnQgb2Zmc2V0ID0gcGNbM10udS5v
cGVyYW5kOwotICAgICAgICAgICAgaWYgKGxpdmVDYWxsZWVMb2NhbHNJbmRleCA+PSBtZXJnZVBv
aW50Qnl0ZWNvZGVPZmZzZXRzLnNpemUoKSkKLSAgICAgICAgICAgICAgICBtZXJnZVBvaW50Qnl0
ZWNvZGVPZmZzZXRzLnJlc2l6ZShsaXZlQ2FsbGVlTG9jYWxzSW5kZXggKyAxKTsKLSAgICAgICAg
ICAgIG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldHNbbGl2ZUNhbGxlZUxvY2Fsc0luZGV4XSA9IGkg
KyBvZmZzZXQ7CisgICAgICAgICAgICBpZiAobGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID49IGdlbmVy
YXRvclBvaW50c1ZlY3Rvci5zaXplKCkpCisgICAgICAgICAgICAgICAgZ2VuZXJhdG9yUG9pbnRz
VmVjdG9yLnJlc2l6ZShsaXZlQ2FsbGVlTG9jYWxzSW5kZXggKyAxKTsKKyAgICAgICAgICAgIGdl
bmVyYXRvclBvaW50c1ZlY3RvcltsaXZlQ2FsbGVlTG9jYWxzSW5kZXhdLnNhdmVQb2ludCA9IGk7
CisgICAgICAgICAgICBnZW5lcmF0b3JQb2ludHNWZWN0b3JbbGl2ZUNhbGxlZUxvY2Fsc0luZGV4
XS5tZXJnZVBvaW50ID0gaSArIG9mZnNldDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9
CisKKyAgICAgICAgY2FzZSBvcF9yZXN1bWU6IHsKKyAgICAgICAgICAgIHVuc2lnbmVkIGxpdmVD
YWxsZWVMb2NhbHNJbmRleCA9IHBjWzJdLnUuaW5kZXg7CisgICAgICAgICAgICBpZiAobGl2ZUNh
bGxlZUxvY2Fsc0luZGV4ID49IGdlbmVyYXRvclBvaW50c1ZlY3Rvci5zaXplKCkpCisgICAgICAg
ICAgICAgICAgZ2VuZXJhdG9yUG9pbnRzVmVjdG9yLnJlc2l6ZShsaXZlQ2FsbGVlTG9jYWxzSW5k
ZXggKyAxKTsKKyAgICAgICAgICAgIGdlbmVyYXRvclBvaW50c1ZlY3RvcltsaXZlQ2FsbGVlTG9j
YWxzSW5kZXhdLnJlc3VtZVBvaW50ID0gaTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9
CisKKyAgICAgICAgY2FzZSBvcF9uZXdfZ2VuZXJhdG9yX2ZyYW1lOiB7CisgICAgICAgICAgICBu
ZXdHZW5lcmF0b3JGcmFtZUluc3RydWN0aW9uT2Zmc2V0ID0gaTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAKQEAgLTIyODUsMjUgKzIzMTMsMzEgQEAgdm9pZCBDb2RlQmxvY2s6OmZp
bmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBV
bmxpbmsKICAgICAgICAgaSArPSBvcExlbmd0aDsKICAgICB9CiAKLSAgICBpZiAodm0uY29udHJv
bEZsb3dQcm9maWxlcigpKQotICAgICAgICBpbnNlcnRCYXNpY0Jsb2NrQm91bmRhcmllc0ZvckNv
bnRyb2xGbG93UHJvZmlsZXIoaW5zdHJ1Y3Rpb25zKTsKLQogICAgIG1faW5zdHJ1Y3Rpb25zID0g
V1RGTW92ZShpbnN0cnVjdGlvbnMpOwogCiAgICAgLy8gUGVyZm9ybSBieXRlY29kZSBsaXZlbmVz
cyBhbmFseXNpcyB0byBkZXRlcm1pbmUgd2hpY2ggbG9jYWxzIGFyZSBsaXZlIGFuZCBzaG91bGQg
YmUgcmVzdW1lZCB3aGVuIGV4ZWN1dGluZyBvcF9yZXN1bWUuCiAgICAgaWYgKHVubGlua2VkQ29k
ZUJsb2NrLT5wYXJzZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckJvZHlNb2Rl
KSB7Ci0gICAgICAgIGlmIChzaXplX3QgY291bnQgPSBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXRz
LnNpemUoKSkgeworICAgICAgICB1bnNpZ25lZCBtYXhHZW5lcmF0b3JMb2NhbHNTaXplID0gMDsK
KyAgICAgICAgaWYgKHNpemVfdCBjb3VudCA9IGdlbmVyYXRvclBvaW50c1ZlY3Rvci5zaXplKCkp
IHsKICAgICAgICAgICAgIGNyZWF0ZVJhcmVEYXRhSWZOZWNlc3NhcnkoKTsKLSAgICAgICAgICAg
IEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcyBsaXZlbmVzcyh0aGlzKTsKICAgICAgICAgICAgIG1f
cmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQuZ3Jvdyhjb3VudCk7Ci0gICAgICAg
ICAgICBzaXplX3QgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gMDsKLSAgICAgICAgICAgIGZvciAo
c2l6ZV90IGJ5dGVjb2RlT2Zmc2V0IDogbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0cykgewotICAg
ICAgICAgICAgICAgIG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGRbbGl2ZUNh
bGxlZUxvY2Fsc0luZGV4XSA9IGxpdmVuZXNzLmdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVPZmZz
ZXQoYnl0ZWNvZGVPZmZzZXQpOwotICAgICAgICAgICAgICAgICsrbGl2ZUNhbGxlZUxvY2Fsc0lu
ZGV4OworCisgICAgICAgICAgICBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMgbGl2ZW5lc3ModGhp
cywgQnl0ZWNvZGVBbmFseXNpc01vZGU6OkV4dHJhY3RHZW5lcmF0b3JMaXZlQ2FsbGVlTG9jYWxz
KTsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9IDA7IGxp
dmVDYWxsZWVMb2NhbHNJbmRleCA8IGdlbmVyYXRvclBvaW50c1ZlY3Rvci5zaXplKCk7ICsrbGl2
ZUNhbGxlZUxvY2Fsc0luZGV4KSB7CisgICAgICAgICAgICAgICAgY29uc3QgR2VuZXJhdG9yUG9p
bnRzJiBwb2ludHMgPSBnZW5lcmF0b3JQb2ludHNWZWN0b3JbbGl2ZUNhbGxlZUxvY2Fsc0luZGV4
XTsKKyAgICAgICAgICAgICAgICBzaXplX3QgbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0ID0gcG9p
bnRzLm1lcmdlUG9pbnQ7CisgICAgICAgICAgICAgICAgRmFzdEJpdFZlY3RvciBsaXZlbmVzc1Zl
Y3RvciA9IGxpdmVuZXNzLmdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQobWVyZ2VQb2lu
dEJ5dGVjb2RlT2Zmc2V0KTsKKyAgICAgICAgICAgICAgICBtX3JhcmVEYXRhLT5tX2xpdmVDYWxs
ZWVMb2NhbHNBdFlpZWxkW2xpdmVDYWxsZWVMb2NhbHNJbmRleF0gPSBsaXZlbmVzc1ZlY3RvcjsK
KyAgICAgICAgICAgICAgICBtYXhHZW5lcmF0b3JMb2NhbHNTaXplID0gc3RkOjptYXg8dW5zaWdu
ZWQ+KG1heEdlbmVyYXRvckxvY2Fsc1NpemUsIGxpdmVuZXNzVmVjdG9yLmJpdENvdW50KCkpOwog
ICAgICAgICAgICAgfQogICAgICAgICB9CisgICAgICAgIC8vIEZpbGwgb3BfbmV3X2dlbmVyYXRv
cl9mcmFtZSdzIHNpemUuCisgICAgICAgIG1faW5zdHJ1Y3Rpb25zW25ld0dlbmVyYXRvckZyYW1l
SW5zdHJ1Y3Rpb25PZmZzZXQgKyAyXS51LnVuc2lnbmVkVmFsdWUgPSBtYXhHZW5lcmF0b3JMb2Nh
bHNTaXplOwogICAgIH0KIAorICAgIGlmICh2bS5jb250cm9sRmxvd1Byb2ZpbGVyKCkpCisgICAg
ICAgIGluc2VydEJhc2ljQmxvY2tCb3VuZGFyaWVzRm9yQ29udHJvbEZsb3dQcm9maWxlcihtX2lu
c3RydWN0aW9ucyk7CisKICAgICAvLyBTZXQgb3B0aW1pemF0aW9uIHRocmVzaG9sZHMgb25seSBh
ZnRlciBtX2luc3RydWN0aW9ucyBpcyBpbml0aWFsaXplZCwgc2luY2UgdGhlc2UKICAgICAvLyBy
ZWx5IG9uIHRoZSBpbnN0cnVjdGlvbiBjb3VudCAoYW5kIGFyZSBpbiB0aGVvcnkgcGVybWl0dGVk
IHRvIGFsc28gaW5zcGVjdCB0aGUKICAgICAvLyBpbnN0cnVjdGlvbiBzdHJlYW0gdG8gbW9yZSBh
Y2N1cmF0ZSBhc3Nlc3MgdGhlIGNvc3Qgb2YgdGllci11cCkuCkBAIC00MTIyLDcgKzQxNTYsNyBA
QCBWYWx1ZVByb2ZpbGUqIENvZGVCbG9jazo6dmFsdWVQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQo
aW50IGJ5dGVjb2RlT2Zmc2V0KQogCiB2b2lkIENvZGVCbG9jazo6dmFsaWRhdGUoKQogewotICAg
IEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcyBsaXZlbmVzcyh0aGlzKTsgLy8gQ29tcHV0ZSBkaXJl
Y3RseSBmcm9tIHNjcmF0Y2ggc28gaXQgZG9lc24ndCBlZmZlY3QgQ29kZUJsb2NrIGZvb3Rwcmlu
dC4KKyAgICBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMgbGl2ZW5lc3ModGhpcywgQnl0ZWNvZGVB
bmFseXNpc01vZGU6OlN0YW5kYXJkKTsgLy8gQ29tcHV0ZSBkaXJlY3RseSBmcm9tIHNjcmF0Y2gg
c28gaXQgZG9lc24ndCBlZmZlY3QgQ29kZUJsb2NrIGZvb3RwcmludC4KICAgICAKICAgICBGYXN0
Qml0VmVjdG9yIGxpdmVBdEhlYWQgPSBsaXZlbmVzcy5nZXRMaXZlbmVzc0luZm9BdEJ5dGVjb2Rl
T2Zmc2V0KDApOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
ay5oCmluZGV4IDk5YmZiMDQ1ZDk2YWViYjIwNDU4MWM1MTNjN2Y3ZGFkOWM4Yjg0M2IuLjJkOGFm
YzEzZTBiNTJiYjdkYjRmMTBmMmM2MmI3NjhhODFlYTk5OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKQEAgLTYyMyw3ICs2MjMsNyBAQCBjbGFzcyBDb2Rl
QmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAgICAgICAgICAgICByZXR1cm4gKm1fbGl2ZW5l
c3NBbmFseXNpczsKICAgICAgICAgfQogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVM
aXZlbmVzc0FuYWx5c2lzPiBhbmFseXNpcyA9Ci0gICAgICAgICAgICBzdGQ6Om1ha2VfdW5pcXVl
PEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcz4odGhpcyk7CisgICAgICAgICAgICBzdGQ6Om1ha2Vf
dW5pcXVlPEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcz4odGhpcywgQnl0ZWNvZGVBbmFseXNpc01v
ZGU6OlN0YW5kYXJkKTsKICAgICAgICAgewogICAgICAgICAgICAgQ29uY3VycmVudEpJVExvY2tl
ciBsb2NrZXIobV9sb2NrKTsKICAgICAgICAgICAgIGlmICghbV9saXZlbmVzc0FuYWx5c2lzKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFy
Z2V0cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJn
ZXRzLmNwcAppbmRleCBlMmNiMDAwNDgzNzk0YmE5MmQ1MTBkY2Y1ZmE5OTQ4ODVhMjNkYzNkLi5i
MDI5OGU0MzEzOGVjMGY0ZmZmOTNhNDdhMmE4ZjVhMGZmNjg0Yzg5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmNwcApAQCAt
MzEsNyArMzEsNyBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIHRlbXBsYXRlIDxzaXplX3QgdmVjdG9y
U2l6ZT4KLXN0YXRpYyB2b2lkIGdldEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJs
b2NrKiBjb2RlQmxvY2ssIEludGVycHJldGVyKiBpbnRlcnByZXRlciwgSW5zdHJ1Y3Rpb24qIGlu
c3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgVmVjdG9yPHVuc2lnbmVk
LCB2ZWN0b3JTaXplPiYgb3V0KQorc3RhdGljIHZvaWQgZ2V0SnVtcFRhcmdldHNGb3JCeXRlY29k
ZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVBbmFseXNpc01vZGUgYnl0ZWNv
ZGVBbmFseXNpc01vZGUsIEludGVycHJldGVyKiBpbnRlcnByZXRlciwgSW5zdHJ1Y3Rpb24qIGlu
c3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgVmVjdG9yPHVuc2lnbmVk
LCB2ZWN0b3JTaXplPiYgb3V0KQogewogICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0
ZXItPmdldE9wY29kZUlEKGluc3RydWN0aW9uc0JlZ2luW2J5dGVjb2RlT2Zmc2V0XS51Lm9wY29k
ZSk7CiAgICAgSW5zdHJ1Y3Rpb24qIGN1cnJlbnQgPSBpbnN0cnVjdGlvbnNCZWdpbiArIGJ5dGVj
b2RlT2Zmc2V0OwpAQCAtNTQsOSArNTQsMTQgQEAgc3RhdGljIHZvaWQgZ2V0SnVtcFRhcmdldHNG
b3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgSW50ZXJwcmV0ZXIqIGkKICAg
ICBjYXNlIG9wX2pubGVzc2VxOgogICAgIGNhc2Ugb3Bfam5ncmVhdGVyOgogICAgIGNhc2Ugb3Bf
am5ncmVhdGVyZXE6Ci0gICAgY2FzZSBvcF9zYXZlOiAvLyBUaGUganVtcCBvZiBvcF9zYXZlIGlz
IHB1cmVseSBmb3IgY2FsY3VsYXRpbmcgbGl2ZW5lc3MuCiAgICAgICAgIG91dC5hcHBlbmQoYnl0
ZWNvZGVPZmZzZXQgKyBjdXJyZW50WzNdLnUub3BlcmFuZCk7CiAgICAgICAgIGJyZWFrOworICAg
IGNhc2Ugb3Bfc2F2ZTogeworICAgICAgICAvLyBUaGUganVtcCBvZiBvcF9zYXZlIHVuZGVyIEV4
dHJhY3RHZW5lcmF0b3JMaXZlQ2FsbGVlTG9jYWxzIG1vZGUgaXMgcHVyZWx5IGZvciBjYWxjdWxh
dGluZyBsaXZlbmVzcy4KKyAgICAgICAgaWYgKGJ5dGVjb2RlQW5hbHlzaXNNb2RlID09IEJ5dGVj
b2RlQW5hbHlzaXNNb2RlOjpFeHRyYWN0R2VuZXJhdG9yTGl2ZUNhbGxlZUxvY2FscykKKyAgICAg
ICAgICAgIG91dC5hcHBlbmQoYnl0ZWNvZGVPZmZzZXQgKyBjdXJyZW50WzNdLnUub3BlcmFuZCk7
CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICBjYXNlIG9wX3N3aXRjaF9pbW06CiAgICAgY2Fz
ZSBvcF9zd2l0Y2hfY2hhcjogewogICAgICAgICBTaW1wbGVKdW1wVGFibGUmIHRhYmxlID0gY29k
ZUJsb2NrLT5zd2l0Y2hKdW1wVGFibGUoY3VycmVudFsxXS51Lm9wZXJhbmQpOwpAQCAtODIsNyAr
ODcsNyBAQCBzdGF0aWMgdm9pZCBnZXRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVC
bG9jayogY29kZUJsb2NrLCBJbnRlcnByZXRlciogaQogICAgIH0KIH0KIAotdm9pZCBjb21wdXRl
UHJlY2lzZUp1bXBUYXJnZXRzKENvZGVCbG9jayogY29kZUJsb2NrLCBWZWN0b3I8dW5zaWduZWQs
IDMyPiYgb3V0KQordm9pZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKENvZGVCbG9jayogY29k
ZUJsb2NrLCBCeXRlY29kZUFuYWx5c2lzTW9kZSBieXRlY29kZUFuYWx5c2lzTW9kZSwgVmVjdG9y
PHVuc2lnbmVkLCAzMj4mIG91dCkKIHsKICAgICBBU1NFUlQob3V0LmlzRW1wdHkoKSk7CiAgICAg
CkBAIC0xMDIsNyArMTA3LDcgQEAgdm9pZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKENvZGVC
bG9jayogY29kZUJsb2NrLCBWZWN0b3I8dW5zaWduZWQsIDMyPiYgb3V0KQogICAgIHVuc2lnbmVk
IGluc3RydWN0aW9uQ291bnQgPSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLnNpemUoKTsKICAg
ICBmb3IgKHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0ID0gMDsgYnl0ZWNvZGVPZmZzZXQgPCBpbnN0
cnVjdGlvbkNvdW50OykgewogICAgICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGludGVycHJldGVy
LT5nZXRPcGNvZGVJRChpbnN0cnVjdGlvbnNCZWdpbltieXRlY29kZU9mZnNldF0udS5vcGNvZGUp
OwotICAgICAgICBnZXRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9jaywgaW50
ZXJwcmV0ZXIsIGluc3RydWN0aW9uc0JlZ2luLCBieXRlY29kZU9mZnNldCwgb3V0KTsKKyAgICAg
ICAgZ2V0SnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChjb2RlQmxvY2ssIGJ5dGVjb2RlQW5h
bHlzaXNNb2RlLCBpbnRlcnByZXRlciwgaW5zdHJ1Y3Rpb25zQmVnaW4sIGJ5dGVjb2RlT2Zmc2V0
LCBvdXQpOwogICAgICAgICBieXRlY29kZU9mZnNldCArPSBvcGNvZGVMZW5ndGhzW29wY29kZUlE
XTsKICAgICB9CiAgICAgCkBAIC0xMjMsMTEgKzEyOCwxMSBAQCB2b2lkIGNvbXB1dGVQcmVjaXNl
SnVtcFRhcmdldHMoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFZlY3Rvcjx1bnNpZ25lZCwgMzI+JiBv
dXQpCiAgICAgb3V0LnNocmlua1RvRml0KCk7CiB9CiAKLXZvaWQgZmluZEp1bXBUYXJnZXRzRm9y
Qnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlT2Zm
c2V0LCBWZWN0b3I8dW5zaWduZWQsIDE+JiBvdXQpCit2b2lkIGZpbmRKdW1wVGFyZ2V0c0ZvckJ5
dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29kZUFuYWx5c2lzTW9kZSBi
eXRlY29kZUFuYWx5c2lzTW9kZSwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIFZlY3Rvcjx1bnNp
Z25lZCwgMT4mIG91dCkKIHsKICAgICBJbnRlcnByZXRlciogaW50ZXJwcmV0ZXIgPSBjb2RlQmxv
Y2stPnZtKCktPmludGVycHJldGVyOwogICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdp
biA9IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsKLSAgICBnZXRKdW1wVGFyZ2V0
c0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9jaywgaW50ZXJwcmV0ZXIsIGluc3RydWN0aW9uc0Jl
Z2luLCBieXRlY29kZU9mZnNldCwgb3V0KTsKKyAgICBnZXRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2Rl
T2Zmc2V0KGNvZGVCbG9jaywgYnl0ZWNvZGVBbmFseXNpc01vZGUsIGludGVycHJldGVyLCBpbnN0
cnVjdGlvbnNCZWdpbiwgYnl0ZWNvZGVPZmZzZXQsIG91dCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VK
dW1wVGFyZ2V0cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1w
VGFyZ2V0cy5oCmluZGV4IDg1MjQxM2Q3N2I3OTg5ODRiMjdjZWYwZWQ2MmJjOTRjNjg5ZTIxMmMu
LjU4MGE3OTI1MzI2Yjc0NTM0M2JkMzgxMWE3YzVhMTE4YTk4ZmZkMjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmgKQEAgLTMx
LDkgKzMxLDkgQEAKIG5hbWVzcGFjZSBKU0MgewogCiAvLyBSZXR1cm4gYSBzb3J0ZWQgbGlzdCBv
ZiBieXRlY29kZSBpbmRleCB0aGF0IGFyZSB0aGUgZGVzdGluYXRpb24gb2YgYSBqdW1wLgotdm9p
ZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKENvZGVCbG9jayosIFZlY3Rvcjx1bnNpZ25lZCwg
MzI+JiBvdXQpOwordm9pZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKENvZGVCbG9jayosIEJ5
dGVjb2RlQW5hbHlzaXNNb2RlLCBWZWN0b3I8dW5zaWduZWQsIDMyPiYgb3V0KTsKIAotdm9pZCBm
aW5kSnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqLCB1bnNpZ25lZCBieXRl
Y29kZU9mZnNldCwgVmVjdG9yPHVuc2lnbmVkLCAxPiYgb3V0KTsKK3ZvaWQgZmluZEp1bXBUYXJn
ZXRzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiwgQnl0ZWNvZGVBbmFseXNpc01vZGUsIHVu
c2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBWZWN0b3I8dW5zaWduZWQsIDE+JiBvdXQpOwogCiB9IC8v
IG5hbWVzcGFjZSBKU0MKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCBkMTVlMjI0MzUyNjZmZTFhZmYz
ZDVmNzlhMWRkYTc1YjliZGFmM2YzLi4yZWYxYjU2Y2EzNTQzN2I4MzE3NTQyN2E2ZDgyYjEyZDk4
NWUwZDQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAtMjU3LDcgKzI1Nyw3IEBAIFBhcnNlckVycm9y
IEJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZSgpCiAgICAgICAgIC8vICAgIGZ1bmN0aW9uICpn
ZW4oYSwgYiA9IGhlbGxvKCkpCiAgICAgICAgIC8vICAgIHsKICAgICAgICAgLy8gICAgICAgIHJl
dHVybiB7Ci0gICAgICAgIC8vICAgICAgICAgICAgQGdlbmVyYXRvck5leHQ6IGZ1bmN0aW9uIChA
Z2VuZXJhdG9yLCBAZ2VuZXJhdG9yU3RhdGUsIEBnZW5lcmF0b3JWYWx1ZSwgQGdlbmVyYXRvclJl
c3VtZU1vZGUpCisgICAgICAgIC8vICAgICAgICAgICAgQGdlbmVyYXRvck5leHQ6IGZ1bmN0aW9u
IChAZ2VuZXJhdG9yLCBAZ2VuZXJhdG9yU3RhdGUsIEBnZW5lcmF0b3JWYWx1ZSwgQGdlbmVyYXRv
clJlc3VtZU1vZGUsIEBnZW5lcmF0b3JGcmFtZSkKICAgICAgICAgLy8gICAgICAgICAgICB7CiAg
ICAgICAgIC8vICAgICAgICAgICAgICAgIGFyZ3VtZW50czsgIC8vIFRoaXMgYGFyZ3VtZW50c2Ag
c2hvdWxkIHJlZmVyZW5jZSB0byB0aGUgZ2VuJ3MgYXJndW1lbnRzLgogICAgICAgICAvLyAgICAg
ICAgICAgICAgICAuLi4KQEAgLTUzNyw2ICs1MzcsOSBAQCBQYXJzZXJFcnJvciBCeXRlY29kZUdl
bmVyYXRvcjo6Z2VuZXJhdGUoKQogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JC
b2R5TW9kZTogewogICAgICAgICAvLyB8dGhpc3wgaXMgYWxyZWFkeSBmaWxsZWQgY29ycmVjdGx5
IGJlZm9yZSBoZXJlLgogICAgICAgICBlbWl0TG9hZChtX25ld1RhcmdldFJlZ2lzdGVyLCBqc1Vu
ZGVmaW5lZCgpKTsKKworICAgICAgICBlbWl0TmV3R2VuZXJhdG9yRnJhbWUoZ2VuZXJhdG9yRnJh
bWVSZWdpc3RlcigpKTsKKyAgICAgICAgZW1pdFB1dEJ5SWQoZ2VuZXJhdG9yUmVnaXN0ZXIoKSwg
cHJvcGVydHlOYW1lcygpLmdlbmVyYXRvckZyYW1lUHJpdmF0ZU5hbWUsIGdlbmVyYXRvckZyYW1l
UmVnaXN0ZXIoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApAQCAtMjc0NCw2ICsyNzQ3LDE0
IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RnVuY3Rpb24oUmVnaXN0
ZXJJRCogZHN0LCBGdW5jdGlvbk1ldGFkYXRhCiAgICAgcmV0dXJuIGRzdDsKIH0KIAorUmVnaXN0
ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdHZW5lcmF0b3JGcmFtZShSZWdpc3RlcklE
KiBkc3QpCit7CisgICAgZW1pdE9wY29kZShvcF9uZXdfZ2VuZXJhdG9yX2ZyYW1lKTsKKyAgICBp
bnN0cnVjdGlvbnMoKS5hcHBlbmQoZHN0LT5pbmRleCgpKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5h
cHBlbmQoMCk7CisgICAgcmV0dXJuIGRzdDsKK30KKwogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXRDYWxsKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogZnVuYywgRXhwZWN0
ZWRGdW5jdGlvbiBleHBlY3RlZEZ1bmN0aW9uLCBDYWxsQXJndW1lbnRzJiBjYWxsQXJndW1lbnRz
LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZv
dFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpCiB7CiAgICAgcmV0dXJuIGVt
aXRDYWxsKG9wX2NhbGwsIGRzdCwgZnVuYywgZXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50
cywgZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kKTsKQEAgLTQxNDUsNyArNDE1Niw3IEBAIHZv
aWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRTYXZlKExhYmVsKiBtZXJnZVBvaW50LCB1bnNpZ25l
ZCBsaXZlQ2FsbGVlTG9jYWxzSW5kCiB7CiAgICAgc2l6ZV90IGJlZ2luID0gaW5zdHJ1Y3Rpb25z
KCkuc2l6ZSgpOwogICAgIGVtaXRPcGNvZGUob3Bfc2F2ZSk7Ci0gICAgaW5zdHJ1Y3Rpb25zKCku
YXBwZW5kKG1fZ2VuZXJhdG9yUmVnaXN0ZXItPmluZGV4KCkpOworICAgIGluc3RydWN0aW9ucygp
LmFwcGVuZChnZW5lcmF0b3JGcmFtZVJlZ2lzdGVyKCktPmluZGV4KCkpOwogICAgIGluc3RydWN0
aW9ucygpLmFwcGVuZChsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpOwogICAgIGluc3RydWN0aW9ucygp
LmFwcGVuZChtZXJnZVBvaW50LT5iaW5kKGJlZ2luLCBpbnN0cnVjdGlvbnMoKS5zaXplKCkpKTsK
IH0KQEAgLTQxNTQsNyArNDE2NSw3IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXN1
bWUoTGFiZWwqIG1lcmdlUG9pbnQsIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJCiB7CiAgICAg
ZW1pdEdlbmVyYXRvclN0YXRlTGFiZWwoKTsKICAgICBlbWl0T3Bjb2RlKG9wX3Jlc3VtZSk7Ci0g
ICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fZ2VuZXJhdG9yUmVnaXN0ZXItPmluZGV4KCkpOwor
ICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChnZW5lcmF0b3JGcmFtZVJlZ2lzdGVyKCktPmluZGV4
KCkpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpOwog
ICAgIGVtaXRMYWJlbChtZXJnZVBvaW50KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAppbmRleCA3ZDBjMjBiNmY1
MTZhMTdlODkzZjFiYmEwODAzYzEzMzNmZmM4ZDBkLi4zZDMzNDc4MTVhYzMwYTgyZTYyNmUzZTA3
ODA4MWJlMmIzZTliZTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCkBAIC01MjIsNiArNTIyLDcgQEAKICAgICAg
ICAgUmVnaXN0ZXJJRCogZW1pdE5ld0RlZmF1bHRDb25zdHJ1Y3RvcihSZWdpc3RlcklEKiBkc3Qs
IENvbnN0cnVjdG9yS2luZCwgY29uc3QgSWRlbnRpZmllciYgbmFtZSk7CiAgICAgICAgIFJlZ2lz
dGVySUQqIGVtaXROZXdBcnJvd0Z1bmN0aW9uRXhwcmVzc2lvbihSZWdpc3RlcklEKiwgQXJyb3dG
dW5jRXhwck5vZGUqKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdE5ld1JlZ0V4cChSZWdpc3Rl
cklEKiBkc3QsIFJlZ0V4cCopOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0TmV3R2VuZXJhdG9y
RnJhbWUoUmVnaXN0ZXJJRCogZHN0KTsKIAogICAgICAgICBSZWdpc3RlcklEKiBlbWl0TW92ZUxp
bmtUaW1lQ29uc3RhbnQoUmVnaXN0ZXJJRCogZHN0LCBMaW5rVGltZUNvbnN0YW50KTsKICAgICAg
ICAgUmVnaXN0ZXJJRCogZW1pdE1vdmVFbXB0eVZhbHVlKFJlZ2lzdGVySUQqIGRzdCk7CkBAIC02
ODQsNiArNjg1LDcgQEAKICAgICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9yU3RhdGVSZWdpc3Rl
cigpIHsgcmV0dXJuICZtX3BhcmFtZXRlcnNbMl07IH0KICAgICAgICAgUmVnaXN0ZXJJRCogZ2Vu
ZXJhdG9yVmFsdWVSZWdpc3RlcigpIHsgcmV0dXJuICZtX3BhcmFtZXRlcnNbM107IH0KICAgICAg
ICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKCkgeyByZXR1cm4gJm1f
cGFyYW1ldGVyc1s0XTsgfQorICAgICAgICBSZWdpc3RlcklEKiBnZW5lcmF0b3JGcmFtZVJlZ2lz
dGVyKCkgeyByZXR1cm4gJm1fcGFyYW1ldGVyc1s1XTsgfQogCiAgICAgICAgIENvZGVUeXBlIGNv
ZGVUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlVHlwZTsgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SGVhcC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBYnN0cmFjdEhlYXAuaAppbmRleCA0ZGVjOGZhMDM3NzZlMDFlNmNkMzc0
NjA2NTljYzU2MTE2MjM4YzY1Li45Yzg2ZjY5MmI4ZDM4NWQ5ZWIyNDY5N2Q3OTI3OWRmNmNkZjQ1
Y2U1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SGVh
cC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RIZWFwLmgKQEAg
LTY4LDYgKzY4LDggQEAKICAgICBtYWNybyhTY29wZVByb3BlcnRpZXMpIFwKICAgICBtYWNybyhU
eXBlZEFycmF5UHJvcGVydGllcykgXAogICAgIG1hY3JvKEhlYXBPYmplY3RDb3VudCkgLyogVXNl
ZCB0byByZWZsZWN0IHRoZSBmYWN0IHRoYXQgc29tZSBhbGxvY2F0aW9ucyByZXZlYWwgb2JqZWN0
IGlkZW50aXR5ICovXAorICAgIG1hY3JvKEdlbmVyYXRvckxvY2FscykgXAorICAgIG1hY3JvKEdl
bmVyYXRvckxvY2FsQ291bnQpIFwKICAgICBtYWNybyhSZWdFeHBTdGF0ZSkgXAogICAgIG1hY3Jv
KE1hdGhEb3RSYW5kb21TdGF0ZSkgXAogICAgIG1hY3JvKEludGVybmFsU3RhdGUpIFwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklu
bGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRl
cklubGluZXMuaAppbmRleCA5ZWVjNjNjZWIwNzFiYzE0ODZhMDEyYzI4NTAxZGI2MjQyNmJkZTdi
Li40MWIwNGViZWYxMTk3Y2ZkZjE0ODcxYTEzYTIzZGQyMmIxZGRkMjkwIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5s
aW5lcy5oCkBAIC0xNjg3LDYgKzE2ODcsMTAgQEAKICAgICBjYXNlIE5ld1JlZ2V4cDoKICAgICAg
ICAgZm9yTm9kZShub2RlKS5zZXQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9k
ZS0+b3JpZ2luLnNlbWFudGljKS0+cmVnRXhwU3RydWN0dXJlKCkpOwogICAgICAgICBicmVhazsK
KworICAgIGNhc2UgTmV3R2VuZXJhdG9yRnJhbWU6CisgICAgICAgIGZvck5vZGUobm9kZSkuc2V0
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykt
PmdlbmVyYXRvckZyYW1lU3RydWN0dXJlKCkpOworICAgICAgICBicmVhazsKICAgICAgICAgICAg
IAogICAgIGNhc2UgVG9UaGlzOiB7CiAgICAgICAgIEFic3RyYWN0VmFsdWUmIHNvdXJjZSA9IGZv
ck5vZGUobm9kZS0+Y2hpbGQxKCkpOwpAQCAtMjUxMCw2ICsyNTE0LDE3IEBACiAgICAgICAgIGZv
ck5vZGUobm9kZSkubWFrZUhlYXBUb3AoKTsKICAgICAgICAgYnJlYWs7CiAKKyAgICBjYXNlIFNl
dEdlbmVyYXRvckxvY2FsOgorICAgIGNhc2UgUmVzaXplR2VuZXJhdG9yTG9jYWxzOgorICAgICAg
ICBicmVhazsKKworICAgIGNhc2UgR2V0R2VuZXJhdG9yTG9jYWw6IHsKKyAgICAgICAgLy8gRklY
TUU6IFdlIHNob3VsZCBhdHRlbXB0IHRvIGNvbnZlcnQgaXQgdG8gY29uc3RhbnQuCisgICAgICAg
IC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTMxODMKKyAgICAg
ICAgZm9yTm9kZShub2RlKS5tYWtlQnl0ZWNvZGVUb3AoKTsKKyAgICAgICAgYnJlYWs7CisgICAg
fQorCiAgICAgY2FzZSBGb3JjZU9TUkV4aXQ6CiAgICAgY2FzZSBDaGVja0JhZENlbGw6CiAgICAg
ICAgIG1fc3RhdGUuc2V0SXNWYWxpZChmYWxzZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCmluZGV4IDM2NDRhMmZkMTlhMGQ5YjNkZGE3YjA2
OGEwMDQ5MGE1ODI2MjA4NmQuLjE3Mjc0ZTU5NGI4MDU1NWRjZjI4ZTA4ZGEzMTk3OWJlMWFiZDRm
ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJz
ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIu
Y3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiREZHQXJyYXlNb2RlLmgiCiAjaW5jbHVk
ZSAiREZHQ2FwYWJpbGl0aWVzLmgiCiAjaW5jbHVkZSAiREZHQ2xvYmJlcnNFeGl0U3RhdGUuaCIK
KyNpbmNsdWRlICJERkdHZW5lcmF0b3JMb2NhbERhdGEuaCIKICNpbmNsdWRlICJERkdHcmFwaC5o
IgogI2luY2x1ZGUgIkRGR0pJVENvZGUuaCIKICNpbmNsdWRlICJHZXRCeUlkU3RhdHVzLmgiCkBA
IC05NjMsNiArOTY0LDExIEBAIGNsYXNzIEJ5dGVDb2RlUGFyc2VyIHsKICAgICAgICAgZm9yIChB
cmd1bWVudFBvc2l0aW9uKiBhcmd1bWVudCA6IG1faW5saW5lU3RhY2tUb3AtPm1fYXJndW1lbnRQ
b3NpdGlvbnMpCiAgICAgICAgICAgICBhcmd1bWVudC0+bWVyZ2VTaG91bGROZXZlclVuYm94KHRy
dWUpOwogICAgIH0KKworICAgIEdlbmVyYXRvckxvY2FsRGF0YSogbmV3R2VuZXJhdG9yTG9jYWxE
YXRhKCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX2dyYXBoLm1fZ2VuZXJhdG9yTG9jYWxEYXRh
LmFkZCgpOworICAgIH0KICAgICAKICAgICBWTSogbV92bTsKICAgICBDb2RlQmxvY2sqIG1fY29k
ZUJsb2NrOwpAQCAtMTA1MSw2ICsxMDU3LDExIEBAIGNsYXNzIEJ5dGVDb2RlUGFyc2VyIHsKICAg
ICAgICAgQ2FsbExpbmtJbmZvTWFwIG1fY2FsbExpbmtJbmZvczsKICAgICAgICAgU3R1YkluZm9N
YXAgbV9zdHViSW5mb3M7CiAgICAgICAgIEJ5VmFsSW5mb01hcCBtX2J5VmFsSW5mb3M7CisKKyAg
ICAgICAgLy8gU2luY2UgdGhlIG9wX3Jlc3VtZSBpcyBlbWl0dGVkIGFmdGVyIHRoZSBjb3JyZXNw
b25kaW5nIG9wX3NhdmUKKyAgICAgICAgLy8gYW5kIHRoZXJlIGlzIG5vIG90aGVyIG9wX3Jlc3Vt
ZSBhbmQgb3Bfc2F2ZSBiZXR3ZWVuIHRoZW0sCisgICAgICAgIC8vIHdlIGNhbiB0cmFjayB0aGVz
ZSBjb3JyZXNwb25kZW5jZSBieSBqdXN0IHRyYWNraW5nIGN1cnJlbnRseSBmb2N1c2luZyBvcF9z
YXZlLgorICAgICAgICBPcGVyYW5kczxHZW5lcmF0b3JMb2NhbERhdGEqPiBtX2dlbmVyYXRvckxv
Y2FsczsKICAgICAgICAgCiAgICAgICAgIC8vIERpZCB3ZSBzZWUgYW55IHJldHVybnM/IFdlIG5l
ZWQgdG8gaGFuZGxlIHRoZSAodW5jb21tb24gYnV0IG5lY2Vzc2FyeSkKICAgICAgICAgLy8gY2Fz
ZSB3aGVyZSBhIHByb2NlZHVyZSB0aGF0IGRvZXMgbm90IHJldHVybiB3YXMgaW5saW5lZC4KQEAg
LTMzNDEsNiArMzM1MiwxMSBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2ln
bmVkIGxpbWl0KQogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfbmV3X3JlZ2V4cCk7CiAgICAg
ICAgIH0KIAorICAgICAgICBjYXNlIG9wX25ld19nZW5lcmF0b3JfZnJhbWU6IHsKKyAgICAgICAg
ICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCks
IGFkZFRvR3JhcGgoTmV3R2VuZXJhdG9yRnJhbWUsIE9wSW5mbyhjdXJyZW50SW5zdHJ1Y3Rpb25b
Ml0udS51bnNpZ25lZFZhbHVlKSkpOworICAgICAgICAgICAgTkVYVF9PUENPREUob3BfbmV3X2dl
bmVyYXRvcl9mcmFtZSk7CisgICAgICAgIH0KKwogICAgICAgICBjYXNlIG9wX2dldF9yZXN0X2xl
bmd0aDogewogICAgICAgICAgICAgSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUgPSB0
aGlzLT5pbmxpbmVDYWxsRnJhbWUoKTsKICAgICAgICAgICAgIE5vZGUqIGxlbmd0aDsKQEAgLTMz
NjgsNiArMzM4NCw0MSBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVk
IGxpbWl0KQogICAgICAgICAgICAgICAgIGFycmF5LCBhcnJheUxlbmd0aCk7CiAgICAgICAgICAg
ICBORVhUX09QQ09ERShvcF9jb3B5X3Jlc3QpOwogICAgICAgICB9CisKKyAgICAgICAgY2FzZSBv
cF9zYXZlOiB7CisgICAgICAgICAgICBOb2RlKiBmcmFtZSA9IGdldChWaXJ0dWFsUmVnaXN0ZXIo
Y3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCkpOworICAgICAgICAgICAgdW5zaWduZWQg
bGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUudW5zaWduZWRW
YWx1ZTsKKyAgICAgICAgICAgIGNvbnN0IEZhc3RCaXRWZWN0b3ImIGxpdmVuZXNzID0gbV9pbmxp
bmVTdGFja1RvcC0+bV9jb2RlQmxvY2stPmxpdmVDYWxsZWVMb2NhbHNBdFlpZWxkKGxpdmVDYWxs
ZWVMb2NhbHNJbmRleCk7CisKKyAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fZ2VuZXJh
dG9yTG9jYWxzID0gT3BlcmFuZHM8R2VuZXJhdG9yTG9jYWxEYXRhKj4obV9udW1Bcmd1bWVudHMs
IG1fbnVtTG9jYWxzKTsKKworICAgICAgICAgICAgYWRkVG9HcmFwaChSZXNpemVHZW5lcmF0b3JM
b2NhbHMsIE9wSW5mbyhsaXZlbmVzcy5iaXRDb3VudCgpKSwgZnJhbWUpOworICAgICAgICAgICAg
dW5zaWduZWQgZ2VuZXJhdG9yTG9jYWxJbmRleCA9IDA7CisgICAgICAgICAgICBsaXZlbmVzcy5m
b3JFYWNoU2V0Qml0KFsmXShzaXplX3QgaW5kZXgpIHsKKyAgICAgICAgICAgICAgICBWaXJ0dWFs
UmVnaXN0ZXIgb3BlcmFuZCA9IHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGluZGV4KTsKKyAgICAg
ICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgcmVtYXBwZWRPcGVyYW5kID0gbV9pbmxpbmVTdGFj
a1RvcC0+cmVtYXBPcGVyYW5kKG9wZXJhbmQpOworICAgICAgICAgICAgICAgIE5vZGUqIGxvY2Fs
ID0gZ2V0KG9wZXJhbmQpOworICAgICAgICAgICAgICAgIEdlbmVyYXRvckxvY2FsRGF0YSogZ2Vu
ZXJhdG9yTG9jYWxEYXRhID0gbmV3R2VuZXJhdG9yTG9jYWxEYXRhKCk7CisgICAgICAgICAgICAg
ICAgbV9pbmxpbmVTdGFja1RvcC0+bV9nZW5lcmF0b3JMb2NhbHMubG9jYWwocmVtYXBwZWRPcGVy
YW5kLnRvTG9jYWwoKSkgPSBnZW5lcmF0b3JMb2NhbERhdGE7CisgICAgICAgICAgICAgICAgYWRk
VG9HcmFwaChTZXRHZW5lcmF0b3JMb2NhbCwgT3BJbmZvKGdlbmVyYXRvckxvY2FsSW5kZXgrKyks
IE9wSW5mbyhnZW5lcmF0b3JMb2NhbERhdGEpLCBmcmFtZSwgbG9jYWwpOworICAgICAgICAgICAg
fSk7CisgICAgICAgICAgICBORVhUX09QQ09ERShvcF9zYXZlKTsKKyAgICAgICAgfQorCisgICAg
ICAgIGNhc2Ugb3BfcmVzdW1lOiB7CisgICAgICAgICAgICBOb2RlKiBmcmFtZSA9IGdldChWaXJ0
dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCkpOworICAgICAgICAg
ICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gY3VycmVudEluc3RydWN0aW9uWzJd
LnUudW5zaWduZWRWYWx1ZTsKKyAgICAgICAgICAgIGNvbnN0IEZhc3RCaXRWZWN0b3ImIGxpdmVu
ZXNzID0gbV9pbmxpbmVTdGFja1RvcC0+bV9jb2RlQmxvY2stPmxpdmVDYWxsZWVMb2NhbHNBdFlp
ZWxkKGxpdmVDYWxsZWVMb2NhbHNJbmRleCk7CisgICAgICAgICAgICB1bnNpZ25lZCBnZW5lcmF0
b3JMb2NhbEluZGV4ID0gMDsKKyAgICAgICAgICAgIGxpdmVuZXNzLmZvckVhY2hTZXRCaXQoWyZd
KHNpemVfdCBpbmRleCkgeworICAgICAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBvcGVyYW5k
ID0gdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaW5kZXgpOworICAgICAgICAgICAgICAgIFZpcnR1
YWxSZWdpc3RlciByZW1hcHBlZE9wZXJhbmQgPSBtX2lubGluZVN0YWNrVG9wLT5yZW1hcE9wZXJh
bmQob3BlcmFuZCk7CisgICAgICAgICAgICAgICAgR2VuZXJhdG9yTG9jYWxEYXRhKiBnZW5lcmF0
b3JMb2NhbERhdGEgPSBtX2lubGluZVN0YWNrVG9wLT5tX2dlbmVyYXRvckxvY2Fscy5sb2NhbChy
ZW1hcHBlZE9wZXJhbmQudG9Mb2NhbCgpKTsKKyAgICAgICAgICAgICAgICBzZXQob3BlcmFuZCwg
YWRkVG9HcmFwaChHZXRHZW5lcmF0b3JMb2NhbCwgT3BJbmZvKGdlbmVyYXRvckxvY2FsSW5kZXgr
KyksIE9wSW5mbyhnZW5lcmF0b3JMb2NhbERhdGEpLCBmcmFtZSkpOworICAgICAgICAgICAgfSk7
CisgICAgICAgICAgICBhZGRUb0dyYXBoKFJlc2l6ZUdlbmVyYXRvckxvY2FscywgT3BJbmZvKDAp
LCBmcmFtZSk7CisgICAgICAgICAgICBORVhUX09QQ09ERShvcF9yZXN1bWUpOworICAgICAgICB9
CiAgICAgICAgICAgICAKICAgICAgICAgLy8gPT09IEJpdHdpc2Ugb3BlcmF0aW9ucyA9PT0KIApA
QCAtNDkxNSw3ICs0OTY2LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VDb2RlQmxvY2so
KQogICAgIH0KICAgICAKICAgICBWZWN0b3I8dW5zaWduZWQsIDMyPiBqdW1wVGFyZ2V0czsKLSAg
ICBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKGNvZGVCbG9jaywganVtcFRhcmdldHMpOworICAg
IGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMoY29kZUJsb2NrLCBCeXRlY29kZUFuYWx5c2lzTW9k
ZTo6U3RhbmRhcmQsIGp1bXBUYXJnZXRzKTsKICAgICBpZiAoT3B0aW9uczo6ZHVtcEJ5dGVjb2Rl
QXRERkdUaW1lKCkpIHsKICAgICAgICAgZGF0YUxvZygiSnVtcCB0YXJnZXRzOiAiKTsKICAgICAg
ICAgQ29tbWFQcmludGVyIGNvbW1hOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
YXBhYmlsaXRpZXMuY3BwCmluZGV4IGQxMDBkOTdkNWM2MGUyNWEwNjBmZmRhNDU2NjNiM2I5NDE0
MzVkYzYuLjJmZGFhMjBjODBhNzhhZDNkMmZiZmExODQzOGQ5NWZjZTRhZmY2ZTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKQEAgLTE4MSw2ICsx
ODEsNyBAQCBDYXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVsKE9wY29kZUlEIG9wY29kZUlE
LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSW5zdHJ1YwogICAgIGNhc2Ugb3BfbmV3X2FycmF5Ogog
ICAgIGNhc2Ugb3BfbmV3X2FycmF5X3dpdGhfc2l6ZToKICAgICBjYXNlIG9wX25ld19hcnJheV9i
dWZmZXI6CisgICAgY2FzZSBvcF9uZXdfZ2VuZXJhdG9yX2ZyYW1lOgogICAgIGNhc2Ugb3Bfc3Ry
Y2F0OgogICAgIGNhc2Ugb3BfdG9fcHJpbWl0aXZlOgogICAgIGNhc2Ugb3BfdGhyb3c6CkBAIC0y
MjQsNiArMjI1LDggQEAgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbChPcGNvZGVJRCBv
cGNvZGVJRCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEluc3RydWMKICAgICBjYXNlIG9wX2NhdGNo
OgogICAgIGNhc2Ugb3BfY29weV9yZXN0OgogICAgIGNhc2Ugb3BfZ2V0X3Jlc3RfbGVuZ3RoOgor
ICAgIGNhc2Ugb3Bfc2F2ZToKKyAgICBjYXNlIG9wX3Jlc3VtZToKICAgICAgICAgcmV0dXJuIENh
bkNvbXBpbGVBbmRJbmxpbmU7CiAKICAgICBjYXNlIG9wX3B1dF90b19zY29wZTogewpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAppbmRleCAzNDNhNmRlOWMyOTA5Yjkz
ZTA1MjhjZjAyNzg0YWFkOTRkMDFiNGQxLi41OWVjODJiYzIwZDNmMTY4ZTJmNGI1Y2IwYmU2ZjU1
YTJiZjhkY2NjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2Ji
ZXJpemUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaApA
QCAtMTA0NCw2ICsxMDQ0LDcgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSog
bm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQsIGNvbnN0IFdyaXRlRnUKIAogICAgIGNhc2Ug
TmV3T2JqZWN0OgogICAgIGNhc2UgTmV3UmVnZXhwOgorICAgIGNhc2UgTmV3R2VuZXJhdG9yRnJh
bWU6CiAgICAgY2FzZSBOZXdTdHJpbmdPYmplY3Q6CiAgICAgY2FzZSBQaGFudG9tTmV3T2JqZWN0
OgogICAgIGNhc2UgTWF0ZXJpYWxpemVOZXdPYmplY3Q6CkBAIC0xMTExLDYgKzExMTIsMjMgQEAg
dm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0
b3ImIHJlYWQsIGNvbnN0IFdyaXRlRnUKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KKworICAgIGNhc2UgU2V0
R2VuZXJhdG9yTG9jYWw6IHsKKyAgICAgICAgcmVhZChHZW5lcmF0b3JMb2NhbENvdW50KTsKKyAg
ICAgICAgd3JpdGUoR2VuZXJhdG9yTG9jYWxzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIGNhc2UgR2V0R2VuZXJhdG9yTG9jYWw6IHsKKyAgICAgICAgcmVhZChHZW5lcmF0b3JMb2Nh
bENvdW50KTsKKyAgICAgICAgcmVhZChHZW5lcmF0b3JMb2NhbHMpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgY2FzZSBSZXNpemVHZW5lcmF0b3JMb2NhbHM6IHsKKyAgICAgICAgd3Jp
dGUoR2VuZXJhdG9yTG9jYWxDb3VudCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAgICAgICAg
IAogICAgIGNhc2UgVGhyb3dSZWZlcmVuY2VFcnJvcjoKICAgICAgICAgd3JpdGUoU2lkZVN0YXRl
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcnNFeGl0
U3RhdGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyc0V4aXRTdGF0
ZS5jcHAKaW5kZXggNGUwYzUwNzc4OWNkN2IzZmY0Nzc1MWY5MjVlNzQ4M2U2MWUyZGY1Yi4uOTI4
NTUxMjYyNzg1MWQzZjgzZjM3ZjAyYWJmMGEzYjVlZjZiZjVlYSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyc0V4aXRTdGF0ZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyc0V4aXRTdGF0ZS5jcHAKQEAgLTUzLDEwICs1
MywxNiBAQCBib29sIGNsb2JiZXJzRXhpdFN0YXRlKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkK
ICAgICAgICAgLy8gZXhpdCBzdGF0ZS4KICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisgICAgY2Fz
ZSBSZXNpemVHZW5lcmF0b3JMb2NhbHM6CisgICAgY2FzZSBTZXRHZW5lcmF0b3JMb2NhbDoKKyAg
ICBjYXNlIEdldEdlbmVyYXRvckxvY2FsOgorICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICBj
YXNlIEFycmF5aWZ5VG9TdHJ1Y3R1cmU6CiAgICAgY2FzZSBBcnJheWlmeToKICAgICBjYXNlIE5l
d09iamVjdDoKICAgICBjYXNlIE5ld1JlZ2V4cDoKKyAgICBjYXNlIE5ld0dlbmVyYXRvckZyYW1l
OgogICAgIGNhc2UgTmV3U3RyaW5nT2JqZWN0OgogICAgIGNhc2UgUGhhbnRvbU5ld09iamVjdDoK
ICAgICBjYXNlIE1hdGVyaWFsaXplTmV3T2JqZWN0OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdEb2VzR0MuY3BwCmluZGV4IDcwMmRhNWJmMWU3YzBmMWM4ZmU1NWM2NDg0NDU4ZmNhZDgxZTJh
YTUuLmNlYjc4NjFjN2IyN2I1ZTk3OTc3MmI2YjNiODcwN2IzZWU4OTJiMTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKQEAgLTIyOSw2ICsyMjksOSBAQCBib29sIGRv
ZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBHZXRGcm9tQXJndW1lbnRz
OgogICAgIGNhc2UgUHV0VG9Bcmd1bWVudHM6CiAgICAgY2FzZSBDb3B5UmVzdDoKKyAgICBjYXNl
IFNldEdlbmVyYXRvckxvY2FsOgorICAgIGNhc2UgR2V0R2VuZXJhdG9yTG9jYWw6CisgICAgY2Fz
ZSBSZXNpemVHZW5lcmF0b3JMb2NhbHM6CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGNh
c2UgQ3JlYXRlQWN0aXZhdGlvbjoKQEAgLTI0Niw2ICsyNDksNyBAQCBib29sIGRvZXNHQyhHcmFw
aCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBOZXdBcnJheVdpdGhTaXplOgogICAgIGNh
c2UgTmV3QXJyYXlCdWZmZXI6CiAgICAgY2FzZSBOZXdSZWdleHA6CisgICAgY2FzZSBOZXdHZW5l
cmF0b3JGcmFtZToKICAgICBjYXNlIE5ld1N0cmluZ09iamVjdDoKICAgICBjYXNlIE1ha2VSb3Bl
OgogICAgIGNhc2UgTmV3QXJyb3dGdW5jdGlvbjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0ZpeHVwUGhhc2UuY3BwCmluZGV4IGM5ZDVhYmZiNDk0ODFiOTA1ODllYzRmYmE1OTVhMmNl
OGU3MGRmNjcuLjAxNWRmNTFkYzM3YmZiZjQ2YmFhOTFlYzlhOGM4YjAxN2U1ZDkxYTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcApAQCAtMTQzMCw2ICsx
NDMwLDI0IEBAIGNsYXNzIEZpeHVwUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIFNldEdlbmVyYXRvckxvY2FsOiB7Cisg
ICAgICAgICAgICBmaXhFZGdlPENlbGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAg
IHNwZWN1bGF0ZUZvckJhcnJpZXIobm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KKworICAgICAgICBjYXNlIEdldEdlbmVyYXRvckxvY2FsOiB7CisgICAgICAg
ICAgICBmaXhFZGdlPENlbGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIC8vIEN1
cnJlbnRseSwgd2UgYWx3YXlzIHN0b3JlIHRoZSB2YWx1ZSBhcyBKU1ZhbHVlIGluIHRoZSBHZW5l
cmF0b3JGcmFtZS4KKyAgICAgICAgICAgIG5vZGUtPnNldFJlc3VsdChOb2RlUmVzdWx0SlMpOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBjYXNlIFJlc2l6ZUdlbmVy
YXRvckxvY2FsczogeworICAgICAgICAgICAgZml4RWRnZTxDZWxsVXNlPihub2RlLT5jaGlsZDEo
KSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCiAjaWYgIUFTU0VSVF9ESVNBQkxF
RAogICAgICAgICAvLyBIYXZlIHRoZXNlIG5vLW9wIGNhc2VzIGhlcmUgdG8gZW5zdXJlIHRoYXQg
bm9ib2R5IGZvcmdldHMgdG8gYWRkIGhhbmRsZXJzIGZvciBuZXcgb3Bjb2Rlcy4KICAgICAgICAg
Y2FzZSBTZXRBcmd1bWVudDoKQEAgLTE0NjIsNiArMTQ4MCw3IEBAIGNsYXNzIEZpeHVwUGhhc2Ug
OiBwdWJsaWMgUGhhc2UgewogICAgICAgICBjYXNlIE5ld09iamVjdDoKICAgICAgICAgY2FzZSBO
ZXdBcnJheUJ1ZmZlcjoKICAgICAgICAgY2FzZSBOZXdSZWdleHA6CisgICAgICAgIGNhc2UgTmV3
R2VuZXJhdG9yRnJhbWU6CiAgICAgICAgIGNhc2UgQnJlYWtwb2ludDoKICAgICAgICAgY2FzZSBQ
cm9maWxlV2lsbENhbGw6CiAgICAgICAgIGNhc2UgUHJvZmlsZURpZENhbGw6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dlbmVyYXRvckxvY2FsRGF0YS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHZW5lcmF0b3JMb2NhbERhdGEuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5jZWFmMWFiYzA1Yjc4Mzg1NDdjMGI3YWViZWRmZjYwNGNjYjVmZDEyCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHZW5lcmF0b3JMb2NhbERhdGEuaApA
QCAtMCwwICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IFl1c3VrZSBTdXp1a2kg
PHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgREZHR2VuZXJhdG9yTG9jYWxEYXRhX2gKKyNkZWZpbmUgREZH
R2VuZXJhdG9yTG9jYWxEYXRhX2gKKworI2lmIEVOQUJMRShERkdfSklUKQorCisjaW5jbHVkZSAi
REZHQ29tbW9uLmgiCisjaW5jbHVkZSAiU3BlY3VsYXRlZFR5cGUuaCIKKyNpbmNsdWRlICJWaXJ0
dWFsUmVnaXN0ZXIuaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgeworCisKK2Ns
YXNzIEdlbmVyYXRvckxvY2FsRGF0YSB7CitwdWJsaWM6CisgICAgYm9vbCBwcmVkaWN0KFNwZWN1
bGF0ZWRUeXBlIHByZWRpY3Rpb24pCisgICAgeworICAgICAgICByZXR1cm4gbWVyZ2VTcGVjdWxh
dGlvbihtX3ByZWRpY3Rpb24sIHByZWRpY3Rpb24pOworICAgIH0KKworICAgIFNwZWN1bGF0ZWRU
eXBlIHByZWRpY3Rpb24oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fcHJlZGljdGlvbjsKKyAg
ICB9CisKK3ByaXZhdGU6CisgICAgU3BlY3VsYXRlZFR5cGUgbV9wcmVkaWN0aW9uIHsgU3BlY05v
bmUgfTsKK307CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKKworI2VuZGlmIC8vIEVOQUJM
RShERkdfSklUKQorCisjZW5kaWYgLy8gREZHVmFyaWFibGVBY2Nlc3NEYXRhX2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHR3JhcGguaAppbmRleCAwOWFhZTk1NWY2NmFhNzg5NGExNDg1ZTEzOTM3
ZjNiYTUzODg5ZDFjLi40M2ZkYmIxYTcxMzAzNDZjOWJkYWY0OWQ0ZTQxNmI3MjQxM2YwNjFkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCkBAIC02MCw2ICs2MCw3IEBACiBjbGFz
cyBEb21pbmF0b3JzOwogY2xhc3MgTmF0dXJhbExvb3BzOwogY2xhc3MgUHJlUG9zdE51bWJlcmlu
ZzsKK2NsYXNzIEdlbmVyYXRvckxvY2FsRGF0YTsKIAogI2RlZmluZSBERkdfTk9ERV9ET19UT19D
SElMRFJFTihncmFwaCwgbm9kZSwgdGhpbmdUb0RvKSBkbyB7ICAgICAgICAgICAgXAogICAgICAg
ICBOb2RlKiBfbm9kZSA9IChub2RlKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXApAQCAtODg3LDYgKzg4OCw3IEBAIGNsYXNzIEdyYXBoIDogcHVibGljIHZpcnR1
YWwgU2Nhbm5hYmxlIHsKICAgICBCYWc8Q2FsbFZhcmFyZ3NEYXRhPiBtX2NhbGxWYXJhcmdzRGF0
YTsKICAgICBCYWc8TG9hZFZhcmFyZ3NEYXRhPiBtX2xvYWRWYXJhcmdzRGF0YTsKICAgICBCYWc8
U3RhY2tBY2Nlc3NEYXRhPiBtX3N0YWNrQWNjZXNzRGF0YTsKKyAgICBCYWc8R2VuZXJhdG9yTG9j
YWxEYXRhPiBtX2dlbmVyYXRvckxvY2FsRGF0YTsKICAgICBWZWN0b3I8SW5saW5lVmFyaWFibGVE
YXRhLCA0PiBtX2lubGluZVZhcmlhYmxlRGF0YTsKICAgICBIYXNoTWFwPENvZGVCbG9jayosIHN0
ZDo6dW5pcXVlX3B0cjxGdWxsQnl0ZWNvZGVMaXZlbmVzcz4+IG1fYnl0ZWNvZGVMaXZlbmVzczsK
ICAgICBIYXNoTWFwPENvZGVCbG9jayosIHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUtpbGxzPj4g
bV9ieXRlY29kZUtpbGxzOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdNYXlFeGl0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAK
aW5kZXggZGFhMjkzMzlkYmZiZGY4MGFhZDliNjQ2YTJjYjdhMDU4N2Q5NjIzOC4uYmM2ZDE1Yzg0
ZGZhNDRmNzM0ZmRjNDc0ZGRlN2E2YmIyNjU2ZTZkOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR01heUV4aXQuY3BwCkBAIC0xMzAsNiArMTMwLDkgQEAgRXhpdE1vZGUgbWF5RXhpdChH
cmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBTdG9yZUJhcnJpZXI6CiAgICAgY2Fz
ZSBQdXRCeU9mZnNldDoKICAgICBjYXNlIFB1dENsb3N1cmVWYXI6CisgICAgY2FzZSBSZXNpemVH
ZW5lcmF0b3JMb2NhbHM6CisgICAgY2FzZSBTZXRHZW5lcmF0b3JMb2NhbDoKKyAgICBjYXNlIEdl
dEdlbmVyYXRvckxvY2FsOgogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgU3RyQ2F0OgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAppbmRleCAxMjg3MGQ5M2QwYzQ4MmU0ZjhlNWQ0ZDJk
YWYxZTZiZjFmNzFiNjJjLi4zZWM3N2UxYTE0ZGNlMjUzNWJhMTBkZjIzZjA5YTllODFmOTc4YjAz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaApAQCAtMzYsNiArMzYsNyBAQAogI2lu
Y2x1ZGUgIkRGR0FycmF5TW9kZS5oIgogI2luY2x1ZGUgIkRGR0NvbW1vbi5oIgogI2luY2x1ZGUg
IkRGR0Vwb2NoLmgiCisjaW5jbHVkZSAiREZHR2VuZXJhdG9yTG9jYWxEYXRhLmgiCiAjaW5jbHVk
ZSAiREZHTGF6eUpTVmFsdWUuaCIKICNpbmNsdWRlICJERkdNdWx0aUdldEJ5T2Zmc2V0RGF0YS5o
IgogI2luY2x1ZGUgIkRGR05vZGVGbGFncy5oIgpAQCAtODc4LDYgKzg3OSw3MiBAQCBzdHJ1Y3Qg
Tm9kZSB7CiAgICAgICAgIHJldHVybiBtX29wSW5mbzsKICAgICB9CiAKKyAgICBib29sIGhhc0dl
bmVyYXRvckxvY2Fsc1NpemUoKQorICAgIHsKKyAgICAgICAgc3dpdGNoIChvcCgpKSB7CisgICAg
ICAgIGNhc2UgTmV3R2VuZXJhdG9yRnJhbWU6CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAg
IH0KKworICAgIHVuc2lnbmVkIGdlbmVyYXRvckxvY2Fsc1NpemUoKQorICAgIHsKKyAgICAgICAg
QVNTRVJUKGhhc0dlbmVyYXRvckxvY2Fsc1NpemUoKSk7CisgICAgICAgIHJldHVybiBtX29wSW5m
bzsKKyAgICB9CisKKyAgICBib29sIGhhc0dlbmVyYXRvckxvY2FsSW5kZXgoKQorICAgIHsKKyAg
ICAgICAgc3dpdGNoIChvcCgpKSB7CisgICAgICAgIGNhc2UgU2V0R2VuZXJhdG9yTG9jYWw6Cisg
ICAgICAgIGNhc2UgR2V0R2VuZXJhdG9yTG9jYWw6CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIHVuc2lnbmVkIGdlbmVyYXRvckxvY2FsSW5kZXgoKQorICAgIHsKKyAgICAg
ICAgQVNTRVJUKGhhc0dlbmVyYXRvckxvY2FsSW5kZXgoKSk7CisgICAgICAgIHJldHVybiBtX29w
SW5mbzsKKyAgICB9CisKKyAgICBib29sIGhhc0dlbmVyYXRvckxvY2FsRGF0YSgpCisgICAgewor
ICAgICAgICBzd2l0Y2ggKG9wKCkpIHsKKyAgICAgICAgY2FzZSBTZXRHZW5lcmF0b3JMb2NhbDoK
KyAgICAgICAgY2FzZSBHZXRHZW5lcmF0b3JMb2NhbDoKKyAgICAgICAgICAgIHJldHVybiB0cnVl
OworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9
CisgICAgfQorCisgICAgR2VuZXJhdG9yTG9jYWxEYXRhKiBnZW5lcmF0b3JMb2NhbERhdGEoKQor
ICAgIHsKKyAgICAgICAgQVNTRVJUKGhhc0dlbmVyYXRvckxvY2FsRGF0YSgpKTsKKyAgICAgICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8R2VuZXJhdG9yTG9jYWxEYXRhKj4obV9vcEluZm8yKTsK
KyAgICB9CisKKyAgICBib29sIGhhc0dlbmVyYXRvckZyYW1lTG9jYWxzKCkKKyAgICB7CisgICAg
ICAgIHN3aXRjaCAob3AoKSkgeworICAgICAgICBjYXNlIFJlc2l6ZUdlbmVyYXRvckxvY2FsczoK
KyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorCisgICAgdW5zaWduZWQgZ2VuZXJhdG9y
RnJhbWVMb2NhbHMoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGhhc0dlbmVyYXRvckZyYW1lTG9j
YWxzKCkpOworICAgICAgICByZXR1cm4gbV9vcEluZm87CisgICAgfQorCiAgICAgYm9vbCBoYXNB
Y2Nlc3NvckF0dHJpYnV0ZXMoKQogICAgIHsKICAgICAgICAgc3dpdGNoIChvcCgpKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKaW5kZXggZGRkMGI5N2NiMmZlNjkyNjA0
NTEwM2Y4YTcxMDcwMDQ4MmU5ZjZiZC4uMjk4YzhmOGM3Y2JjOWRmYzVmNTAyMmY1NDE2NmY2ZTk0
ODM3MjNkYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlw
ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaApAQCAtNzks
NiArNzksMTAgQEAKICAgICBtYWNybyhGbHVzaCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1h
Y3JvKFBoYW50b21Mb2NhbCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIFwKKyAgICBtYWNybyhT
ZXRHZW5lcmF0b3JMb2NhbCwgTm9kZU11c3RHZW5lcmF0ZSkgXAorICAgIG1hY3JvKEdldEdlbmVy
YXRvckxvY2FsLCBOb2RlUmVzdWx0SlMpIFwKKyAgICBtYWNybyhSZXNpemVHZW5lcmF0b3JMb2Nh
bHMsIE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBcCiAgICAgLyogSGludCB0aGF0IHRoaXMgaXMg
d2hlcmUgYnl0ZWNvZGUgdGhpbmtzIGlzIGEgZ29vZCBwbGFjZSB0byBPU1IuIE5vdGUgdGhhdCB0
aGlzICovXAogICAgIC8qIHdpbGwgZXhpc3QgZXZlbiBpbiBpbmxpbmVkIGxvb3BzLiBUaGlzIGhh
cyBubyBleGVjdXRpb24gc2VtYW50aWNzIGJ1dCBpdCBtdXN0ICovXAogICAgIC8qIHN1cnZpdmUg
YWxsIERDRS4gV2UgdHJlYXQgdGhpcyBhcyBiZWluZyBhIGNhbi1leGl0IGJlY2F1c2UgdGllci11
cCB0byBGVEwgbWF5ICovXApAQCAtMjYzLDYgKzI2Nyw3IEBACiAgICAgbWFjcm8oTmV3QXJyYXlC
dWZmZXIsIE5vZGVSZXN1bHRKUykgXAogICAgIG1hY3JvKE5ld1R5cGVkQXJyYXksIE5vZGVSZXN1
bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhOZXdSZWdleHAsIE5vZGVSZXN1
bHRKUykgXAorICAgIG1hY3JvKE5ld0dlbmVyYXRvckZyYW1lLCBOb2RlUmVzdWx0SlMpIFwKICAg
ICAvKiBSZXN0IFBhcmFtZXRlciAqL1wKICAgICBtYWNybyhHZXRSZXN0TGVuZ3RoLCBOb2RlUmVz
dWx0SW50MzIpIFwKICAgICBtYWNybyhDb3B5UmVzdCwgTm9kZU11c3RHZW5lcmF0ZSkgXApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKaW5kZXggMmZkNWRiZGM3
ZmM0Y2NhODZmYWUxMDkyMjdhYzE3NTdmZGNkZjk2Yy4uYmMzNTY2MTNkM2Y1MjE4MDgyMzhlNTI2
ODEzNWFhYjA5YmU2N2YwZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJh
dGlvbnMuY3BwCkBAIC00MSw4ICs0MSw5IEBACiAjaW5jbHVkZSAiRGlyZWN0QXJndW1lbnRzLmgi
CiAjaW5jbHVkZSAiRlRMRm9yT1NSRW50cnlKSVRDb2RlLmgiCiAjaW5jbHVkZSAiRlRMT1NSRW50
cnkuaCIKLSNpbmNsdWRlICJIb3N0Q2FsbFJldHVyblZhbHVlLmgiCisjaW5jbHVkZSAiR2VuZXJh
dG9yRnJhbWUuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKKyNpbmNsdWRlICJIb3N0Q2Fs
bFJldHVyblZhbHVlLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKSVQu
aCIKICNpbmNsdWRlICJKSVRFeGNlcHRpb25zLmgiCkBAIC04MTcsNiArODE4LDExIEBAIGNoYXIq
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3RmxvYXQ2NEFycmF5V2l0aE9uZUFyZ3VtZW50KAog
ICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmljVHlwZWRB
cnJheVZpZXdXaXRoQXJndW1lbnRzPEpTRmxvYXQ2NEFycmF5PihleGVjLCBzdHJ1Y3R1cmUsIGVu
Y29kZWRWYWx1ZSwgMCwgTnVsbG9wdCkpOwogfQogCitjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbk5ld0dlbmVyYXRvckZyYW1lKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIGludDMyX3QgbnVtYmVyT2ZDYWxsZWVMb2NhbHMpCit7CisgICAgcmV0dXJuIGJpdHdpc2Vf
Y2FzdDxjaGFyKj4oR2VuZXJhdG9yRnJhbWU6OmNyZWF0ZShleGVjLT52bSgpLCBzdHJ1Y3R1cmUs
IG51bWJlck9mQ2FsbGVlTG9jYWxzKSk7Cit9CisKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVy
YXRpb25DcmVhdGVBY3RpdmF0aW9uRGlyZWN0KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIEpTU2NvcGUqIHNjb3BlLCBTeW1ib2xUYWJsZSogdGFibGUsIEVuY29kZWRKU1Zh
bHVlIGluaXRpYWxWYWx1ZUVuY29kZWQpCiB7CiAgICAgSlNWYWx1ZSBpbml0aWFsVmFsdWUgPSBK
U1ZhbHVlOjpkZWNvZGUoaW5pdGlhbFZhbHVlRW5jb2RlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT3BlcmF0aW9ucy5oCmluZGV4IDQwOTYyOWZmNWQ1M2E3YmUzODdhNjIzNjQ1NWQ2
ODE2YWMwODVlYzkuLmU0NDNiYTI4MjM3MmZiY2NlMmJhYzViMDlhMzY3YmQ1MmM4ZTc1ZjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCkBAIC04Miw2ICs4Miw3
IEBACiBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Zsb2F0MzJBcnJheVdpdGhPbmVB
cmd1bWVudChFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqLCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVS
TkFMOwogY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdGbG9hdDY0QXJyYXlXaXRoU2l6
ZShFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90KSBXVEZfSU5URVJOQUw7CiBjaGFyKiBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Zsb2F0NjRBcnJheVdpdGhPbmVBcmd1bWVudChFeGVj
U3RhdGUqLCBTdHJ1Y3R1cmUqLCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFMOworY2hhciog
SklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdHZW5lcmF0b3JGcmFtZShFeGVjU3RhdGUqLCBTdHJ1
Y3R1cmUqLCBpbnQzMl90KSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uUHV0QnlWYWxTdHJpY3QoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2Us
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRQcm9wZXJ0eSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlKSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxO
b25TdHJpY3QoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRQcm9wZXJ0eSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSBXVEZf
SU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxDZWxsU3RyaWN0
KEV4ZWNTdGF0ZSosIEpTQ2VsbCosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRQcm9wZXJ0eSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSBXVEZfSU5URVJOQUw7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2Uu
Y3BwCmluZGV4IDU3OTk4Y2ZlMTgxYThmY2Y5Y2M2NTE0MzUxYWM1ODBiODBlN2ZiOGEuLjJkM2Fi
YmQyZTc2MGJlNjQ1YTcwY2ExNWY4OWNmNTkwOGQ5MjJmYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2Uu
Y3BwCkBAIC0xNjAsNiArMTYwLDI0IEBAIGNsYXNzIFByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNl
IDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgIGNoYW5nZWQgfD0gdmFyaWFibGVBY2Nlc3NE
YXRhLT5wcmVkaWN0KG5vZGUtPmNoaWxkMSgpLT5wcmVkaWN0aW9uKCkpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KKworICAgICAgICBjYXNlIFNldEdlbmVyYXRvckxvY2FsOiB7Cisg
ICAgICAgICAgICBHZW5lcmF0b3JMb2NhbERhdGEqIGdlbmVyYXRvckxvY2FsRGF0YSA9IG5vZGUt
PmdlbmVyYXRvckxvY2FsRGF0YSgpOworICAgICAgICAgICAgY2hhbmdlZCB8PSBnZW5lcmF0b3JM
b2NhbERhdGEtPnByZWRpY3Qobm9kZS0+Y2hpbGQyKCktPnByZWRpY3Rpb24oKSk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2UgR2V0R2VuZXJhdG9yTG9jYWw6
IHsKKyAgICAgICAgICAgIEdlbmVyYXRvckxvY2FsRGF0YSogZ2VuZXJhdG9yTG9jYWxEYXRhID0g
bm9kZS0+Z2VuZXJhdG9yTG9jYWxEYXRhKCk7CisgICAgICAgICAgICBTcGVjdWxhdGVkVHlwZSBw
cmVkaWN0aW9uID0gZ2VuZXJhdG9yTG9jYWxEYXRhLT5wcmVkaWN0aW9uKCk7CisgICAgICAgICAg
ICAvLyBXZSBhbHdheXMgc3RvcmUgdGhlIHZhbHVlIGluIEdlbmVyYXRvckxvY2FsIGFzIEZvcm1h
dEpTVmFsdWUuCisgICAgICAgICAgICAvLyBTbyBkb3VibGUgdmFsdWUgaXMgYmV0dGVyIHRoYW4g
SW50NTIgdmFsdWUuCisgICAgICAgICAgICBpZiAocHJlZGljdGlvbiAmIFNwZWNJbnQ1MikKKyAg
ICAgICAgICAgICAgICBwcmVkaWN0aW9uID0gKHByZWRpY3Rpb24gfCBTcGVjSW50NTJBc0RvdWJs
ZSkgJiB+U3BlY0ludDUyOworICAgICAgICAgICAgaWYgKHByZWRpY3Rpb24pCisgICAgICAgICAg
ICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24ocHJlZGljdGlvbik7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgQml0QW5kOgog
ICAgICAgICBjYXNlIEJpdE9yOgpAQCAtNTI0LDcgKzU0Miw4IEBAIGNsYXNzIFByZWRpY3Rpb25Q
cm9wYWdhdGlvblBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgfQogICAgICAgICAgICAg
CiAgICAgICAgIGNhc2UgTmV3UmVnZXhwOgotICAgICAgICBjYXNlIENyZWF0ZUFjdGl2YXRpb246
IHsKKyAgICAgICAgY2FzZSBDcmVhdGVBY3RpdmF0aW9uOgorICAgICAgICBjYXNlIE5ld0dlbmVy
YXRvckZyYW1lOiB7CiAgICAgICAgICAgICBjaGFuZ2VkIHw9IHNldFByZWRpY3Rpb24oU3BlY09i
amVjdE90aGVyKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC03MTYsNiArNzM1
LDcgQEAgY2xhc3MgUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2Ugewog
ICAgICAgICBjYXNlIEV4aXRPSzoKICAgICAgICAgY2FzZSBMb2FkVmFyYXJnczoKICAgICAgICAg
Y2FzZSBDb3B5UmVzdDoKKyAgICAgICAgY2FzZSBSZXNpemVHZW5lcmF0b3JMb2NhbHM6CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIAogICAgICAgICAvLyBUaGlzIGdldHMgaWdub3Jl
ZCBiZWNhdXNlIGl0IG9ubHkgcHJldGVuZHMgdG8gcHJvZHVjZSBhIHZhbHVlLgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAppbmRleCAyMzBlZmVkYzQ4MzE1
MTJiYWM1NjhiZWVmZGIyNzY5NjE4NzIwOTRjLi44N2MzZTAyNjhjNTgxMTI4Y2RiYmYxZmI1NWIz
NjY5MmZjNDE2ZGU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nh
ZmVUb0V4ZWN1dGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4
ZWN1dGUuaApAQCAtMjM3LDYgKzIzNyw3IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0
YXRlVHlwZSYgc3RhdGUsIEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIE5ld0Fy
cmF5V2l0aFNpemU6CiAgICAgY2FzZSBOZXdBcnJheUJ1ZmZlcjoKICAgICBjYXNlIE5ld1JlZ2V4
cDoKKyAgICBjYXNlIE5ld0dlbmVyYXRvckZyYW1lOgogICAgIGNhc2UgQnJlYWtwb2ludDoKICAg
ICBjYXNlIFByb2ZpbGVXaWxsQ2FsbDoKICAgICBjYXNlIFByb2ZpbGVEaWRDYWxsOgpAQCAtMzI4
LDYgKzMyOSw5IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3RhdGUs
IEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIEdldE15QXJndW1lbnRCeVZhbDoK
ICAgICBjYXNlIEZvcndhcmRWYXJhcmdzOgogICAgIGNhc2UgQ29weVJlc3Q6CisgICAgY2FzZSBT
ZXRHZW5lcmF0b3JMb2NhbDoKKyAgICBjYXNlIEdldEdlbmVyYXRvckxvY2FsOgorICAgIGNhc2Ug
UmVzaXplR2VuZXJhdG9yTG9jYWxzOgogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIGNhc2Ug
Qm90dG9tVmFsdWU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuY3BwCmluZGV4IGNjY2U3OTE5OTUxNDVlOTFlZmQyMDA4OGM5NmI3YWY4MmI1NjE2ZDYu
LjVmOTY5ZmM4MDlhMTY4NjZmMGRhZDgyNmQ2YTJkM2YyYmU0NWFiZDMgMTAwNzU1Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC0zOCw2ICszOCw3
IEBACiAjaW5jbHVkZSAiREZHU2FuZVN0cmluZ0dldEJ5VmFsU2xvd1BhdGhHZW5lcmF0b3IuaCIK
ICNpbmNsdWRlICJERkdTbG93UGF0aEdlbmVyYXRvci5oIgogI2luY2x1ZGUgIkRpcmVjdEFyZ3Vt
ZW50cy5oIgorI2luY2x1ZGUgIkdlbmVyYXRvckZyYW1lLmgiCiAjaW5jbHVkZSAiSklUQWRkR2Vu
ZXJhdG9yLmgiCiAjaW5jbHVkZSAiSklUQml0QW5kR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiSklU
Qml0T3JHZW5lcmF0b3IuaCIKQEAgLTYzNzgsNiArNjM3OSw0MiBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlTmV3U3RyaW5nT2JqZWN0KE5vZGUqIG5vZGUpCiAgICAgY2VsbFJlc3VsdChy
ZXN1bHRHUFIsIG5vZGUpOwogfQogCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3R2Vu
ZXJhdG9yRnJhbWUoTm9kZSogbm9kZSkKK3sKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0ID0gbV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KTsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdsb2JhbE9iamVjdC0+Z2VuZXJhdG9yRnJh
bWVTdHJ1Y3R1cmUoKTsKKyAgICB1bnNpZ25lZCBnZW5lcmF0b3JMb2NhbHNTaXplID0gbm9kZS0+
Z2VuZXJhdG9yTG9jYWxzU2l6ZSgpOworCisgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsK
KyAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaDEodGhpcyk7CisgICAgR1BSVGVtcG9yYXJ5IHNjcmF0
Y2gyKHRoaXMpOworCisgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKyAgICBH
UFJSZWcgc2NyYXRjaDFHUFIgPSBzY3JhdGNoMS5ncHIoKTsKKyAgICBHUFJSZWcgc2NyYXRjaDJH
UFIgPSBzY3JhdGNoMi5ncHIoKTsKKworICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93UGF0
aDsKKworICAgIGVtaXRBbGxvY2F0ZUpTT2JqZWN0V2l0aEtub3duU2l6ZTxHZW5lcmF0b3JGcmFt
ZT4ocmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksIFRydXN0ZWRJbW1QdHIobnVs
bHB0ciksIHNjcmF0Y2gxR1BSLCBzY3JhdGNoMkdQUiwgc2xvd1BhdGgsIEdlbmVyYXRvckZyYW1l
OjphbGxvY2F0aW9uU2l6ZUZvckxvY2FscyhnZW5lcmF0b3JMb2NhbHNTaXplKSk7CisgICAgbV9q
aXQuc3RvcmUzMihUcnVzdGVkSW1tMzIoZ2VuZXJhdG9yTG9jYWxzU2l6ZSksIEpJVENvbXBpbGVy
OjpBZGRyZXNzKHJlc3VsdEdQUiwgR2VuZXJhdG9yRnJhbWU6Om51bWJlck9mQ2FsbGVlTG9jYWxz
T2Zmc2V0KCkpKTsKKyAgICBtX2ppdC5zdG9yZTMyKFRydXN0ZWRJbW0zMigwKSwgSklUQ29tcGls
ZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBHZW5lcmF0b3JGcmFtZTo6bnVtYmVyT2ZTYXZlZENhbGxl
ZUxvY2Fsc09mZnNldCgpKSk7CisgICAgSlNWYWx1ZSBlbXB0eVZhbHVlOworICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBnZW5lcmF0b3JMb2NhbHNTaXplOyArK2kpCisgICAgICAgIG1faml0
LnN0b3JlVHJ1c3RlZFZhbHVlKGVtcHR5VmFsdWUsIEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3Vs
dEdQUiwgR2VuZXJhdG9yRnJhbWU6OmxvY2FsT2Zmc2V0KGkpKSk7CisKKyAgICBhZGRTbG93UGF0
aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd1BhdGgsIHRoaXMsIG9wZXJhdGlvbk5ld0dlbmVy
YXRvckZyYW1lLCByZXN1bHRHUFIsIHN0cnVjdHVyZSwgZ2VuZXJhdG9yTG9jYWxzU2l6ZSkpOwor
CisgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOworfQorCit2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlUmVzaXplR2VuZXJhdG9yTG9jYWxzKE5vZGUqIG5vZGUpCit7CisgICAgU3Bl
Y3VsYXRlQ2VsbE9wZXJhbmQgZnJhbWUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgIEdQUlJl
ZyBmcmFtZUdQUiA9IGZyYW1lLmdwcigpOworICAgIG1faml0LnN0b3JlMzIoVHJ1c3RlZEltbTMy
KG5vZGUtPmdlbmVyYXRvckZyYW1lTG9jYWxzKCkpLCBKSVRDb21waWxlcjo6QWRkcmVzcyhmcmFt
ZUdQUiwgR2VuZXJhdG9yRnJhbWU6Om51bWJlck9mU2F2ZWRDYWxsZWVMb2NhbHNPZmZzZXQoKSkp
OworICAgIG5vUmVzdWx0KG5vZGUpOworfQorCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
TmV3VHlwZWRBcnJheShOb2RlKiBub2RlKQogewogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QgPSBtX2ppdC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCmlu
ZGV4IDUzMTJjOGRiZWRmZWQxODAwNTQzODExMzA3OWVlYjBiMGU5OTA4YWIuLjAwYTRmYTkyYWM3
M2U1ODM5YWI4NTZlYWI5ZjQzNjQyMGU1MmNiMTUgMTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKQEAgLTIyODEsNiArMjI4MSw4IEBAIGNsYXNzIFNw
ZWN1bGF0aXZlSklUIHsKICAgICB2b2lkIGNvbXBpbGVQdXRCeVZhbEZvckZsb2F0VHlwZWRBcnJh
eShHUFJSZWcgYmFzZSwgR1BSUmVnIHByb3BlcnR5LCBOb2RlKiwgVHlwZWRBcnJheVR5cGUpOwog
ICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDbGFzc1R5cGU+IHZvaWQgY29tcGlsZU5ld0Z1bmN0aW9u
Q29tbW9uKEdQUlJlZywgU3RydWN0dXJlKiwgR1BSUmVnLCBHUFJSZWcsIEdQUlJlZywgTWFjcm9B
c3NlbWJsZXI6Okp1bXBMaXN0Jiwgc2l6ZV90LCBGdW5jdGlvbkV4ZWN1dGFibGUqLCBwdHJkaWZm
X3QsIHB0cmRpZmZfdCwgcHRyZGlmZl90KTsKICAgICB2b2lkIGNvbXBpbGVOZXdGdW5jdGlvbihO
b2RlKik7CisgICAgdm9pZCBjb21waWxlTmV3R2VuZXJhdG9yRnJhbWUoTm9kZSopOworICAgIHZv
aWQgY29tcGlsZVJlc2l6ZUdlbmVyYXRvckxvY2FscyhOb2RlKik7CiAgICAgdm9pZCBjb21waWxl
Rm9yd2FyZFZhcmFyZ3MoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUNyZWF0ZUFjdGl2YXRpb24o
Tm9kZSopOwogICAgIHZvaWQgY29tcGlsZUNyZWF0ZURpcmVjdEFyZ3VtZW50cyhOb2RlKik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJf
NjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0
LmNwcAppbmRleCAxMmViNTA0MTE4MGFjMmY1MDE2NGY5NTFiMDU4ZWRiNjJkMjI4MjcwLi5hZGVi
ODEzN2E5MGUxYjc3OWRhMGQ5NzZlYjcyZjk3MGU1MDE4OGQyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKQEAgLTM3LDYg
KzM3LDcgQEAKICNpbmNsdWRlICJERkdTbG93UGF0aEdlbmVyYXRvci5oIgogI2luY2x1ZGUgIkRl
YnVnZ2VyLmgiCiAjaW5jbHVkZSAiRGlyZWN0QXJndW1lbnRzLmgiCisjaW5jbHVkZSAiR2VuZXJh
dG9yRnJhbWUuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJKU0Vudmly
b25tZW50UmVjb3JkLmgiCiAjaW5jbHVkZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIKQEAgLTM2
NTAsNiArMzY1MSwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUp
CiAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0UGF5bG9hZC5ncHIoKSwgbm9kZSk7CiAgICAgICAg
IGJyZWFrOwogICAgIH0KKworICAgIGNhc2UgTmV3R2VuZXJhdG9yRnJhbWU6IHsKKyAgICAgICAg
Y29tcGlsZU5ld0dlbmVyYXRvckZyYW1lKG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CiAg
ICAgICAgIAogICAgIGNhc2UgVG9UaGlzOiB7CiAgICAgICAgIEFTU0VSVChub2RlLT5jaGlsZDEo
KS51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSk7CkBAIC00NzE4LDYgKzQ3MjQsNDEgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBjZWxsUmVzdWx0KHJl
c3VsdEdQUiwgbm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KKyAgICBjYXNlIFNldEdlbmVy
YXRvckxvY2FsOiB7CisgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGZyYW1lKHRoaXMsIG5v
ZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+
Y2hpbGQyKCkpOworCisgICAgICAgIEdQUlJlZyBmcmFtZUdQUiA9IGZyYW1lLmdwcigpOworICAg
ICAgICBHUFJSZWcgdmFsdWVUYWdHUFIgPSB2YWx1ZS50YWdHUFIoKTsKKyAgICAgICAgR1BSUmVn
IHZhbHVlUGF5bG9hZEdQUiA9IHZhbHVlLnBheWxvYWRHUFIoKTsKKyAgICAgICAgdW5zaWduZWQg
Z2VuZXJhdG9yTG9jYWxJbmRleCA9IG5vZGUtPmdlbmVyYXRvckxvY2FsSW5kZXgoKTsKKworICAg
ICAgICBtX2ppdC5zdG9yZTMyKHZhbHVlVGFnR1BSLCBKSVRDb21waWxlcjo6QWRkcmVzcyhmcmFt
ZUdQUiwgR2VuZXJhdG9yRnJhbWU6OmxvY2FsT2Zmc2V0KGdlbmVyYXRvckxvY2FsSW5kZXgpICsg
T0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnRhZykpKTsKKyAgICAgICAgbV9qaXQu
c3RvcmUzMih2YWx1ZVBheWxvYWRHUFIsIEpJVENvbXBpbGVyOjpBZGRyZXNzKGZyYW1lR1BSLCBH
ZW5lcmF0b3JGcmFtZTo6bG9jYWxPZmZzZXQoZ2VuZXJhdG9yTG9jYWxJbmRleCkgKyBPQkpFQ1Rf
T0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMucGF5bG9hZCkpKTsKKworICAgICAgICBub1Jlc3Vs
dChub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgR2V0R2VuZXJhdG9yTG9j
YWw6IHsKKyAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgZnJhbWUodGhpcywgbm9kZS0+Y2hp
bGQxKCkpOworICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0VGFnKHRoaXMpOworICAgICAgICBH
UFJUZW1wb3JhcnkgcmVzdWx0UGF5bG9hZCh0aGlzKTsKKworICAgICAgICBHUFJSZWcgZnJhbWVH
UFIgPSBmcmFtZS5ncHIoKTsKKyAgICAgICAgR1BSUmVnIHJlc3VsdFRhZ0dQUiA9IHJlc3VsdFRh
Zy5ncHIoKTsKKyAgICAgICAgR1BSUmVnIHJlc3VsdFBheWxvYWRHUFIgPSByZXN1bHRQYXlsb2Fk
LmdwcigpOworICAgICAgICB1bnNpZ25lZCBnZW5lcmF0b3JMb2NhbEluZGV4ID0gbm9kZS0+Z2Vu
ZXJhdG9yTG9jYWxJbmRleCgpOworCisgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6
QWRkcmVzcyhmcmFtZUdQUiwgR2VuZXJhdG9yRnJhbWU6OmxvY2FsT2Zmc2V0KGdlbmVyYXRvckxv
Y2FsSW5kZXgpICsgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnRhZykpLCByZXN1
bHRUYWdHUFIpOworICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OkFkZHJlc3MoZnJh
bWVHUFIsIEdlbmVyYXRvckZyYW1lOjpsb2NhbE9mZnNldChnZW5lcmF0b3JMb2NhbEluZGV4KSAr
IE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy5wYXlsb2FkKSksIHJlc3VsdFBheWxv
YWRHUFIpOworCisgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0VGFnR1BSLCByZXN1bHRQYXls
b2FkR1BSLCBub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgUmVzaXplR2Vu
ZXJhdG9yTG9jYWxzOiB7CisgICAgICAgIGNvbXBpbGVSZXNpemVHZW5lcmF0b3JMb2NhbHMobm9k
ZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICBjYXNlIFByb2ZpbGVUeXBlOiB7CiAgICAg
ICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAg
R1BSVGVtcG9yYXJ5IHNjcmF0Y2gxKHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKaW5kZXggZTc0NTY5NDA0YzFiOTc4NDgwNjE5
N2QxNDU0NWNkMWRiMjNkN2E1Yy4uNWE4ZmNkNDRkMTM1YWRlMTUzN2IyN2VkYmYwYzlhMDhiNWIz
M2M0YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVDY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklUNjQuY3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiREZHU2xvd1BhdGhHZW5lcmF0
b3IuaCIKICNpbmNsdWRlICJEZWJ1Z2dlci5oIgogI2luY2x1ZGUgIkRpcmVjdEFyZ3VtZW50cy5o
IgorI2luY2x1ZGUgIkdlbmVyYXRvckZyYW1lLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgi
CiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTRW52aXJvbm1lbnRSZWNvcmQu
aCIKQEAgLTM2ODgsNiArMzY4OSwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5v
ZGUqIG5vZGUpCiAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0LmdwcigpLCBub2RlKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQorCisgICAgY2FzZSBOZXdHZW5lcmF0b3JGcmFtZTogeworICAgICAg
ICBjb21waWxlTmV3R2VuZXJhdG9yRnJhbWUobm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0K
ICAgICAgICAgCiAgICAgY2FzZSBUb1RoaXM6IHsKICAgICAgICAgQVNTRVJUKG5vZGUtPmNoaWxk
MSgpLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKTsKQEAgLTQ3MjAsNiArNDcyNiwzNSBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGNlbGxSZXN1bHQo
cmVzdWx0R1BSLCBub2RlKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQorICAgIGNhc2UgU2V0R2Vu
ZXJhdG9yTG9jYWw6IHsKKyAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgZnJhbWUodGhpcywg
bm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2Rl
LT5jaGlsZDIoKSk7CisKKyAgICAgICAgR1BSUmVnIGZyYW1lR1BSID0gZnJhbWUuZ3ByKCk7Cisg
ICAgICAgIEdQUlJlZyB2YWx1ZUdQUiA9IHZhbHVlLmdwcigpOworICAgICAgICB1bnNpZ25lZCBn
ZW5lcmF0b3JMb2NhbEluZGV4ID0gbm9kZS0+Z2VuZXJhdG9yTG9jYWxJbmRleCgpOworCisgICAg
ICAgIG1faml0LnN0b3JlNjQodmFsdWVHUFIsIEpJVENvbXBpbGVyOjpBZGRyZXNzKGZyYW1lR1BS
LCBHZW5lcmF0b3JGcmFtZTo6bG9jYWxPZmZzZXQoZ2VuZXJhdG9yTG9jYWxJbmRleCkpKTsKKwor
ICAgICAgICBub1Jlc3VsdChub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Ug
R2V0R2VuZXJhdG9yTG9jYWw6IHsKKyAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgZnJhbWUo
dGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMp
OworCisgICAgICAgIEdQUlJlZyBmcmFtZUdQUiA9IGZyYW1lLmdwcigpOworICAgICAgICBHUFJS
ZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOworICAgICAgICB1bnNpZ25lZCBnZW5lcmF0b3JM
b2NhbEluZGV4ID0gbm9kZS0+Z2VuZXJhdG9yTG9jYWxJbmRleCgpOworCisgICAgICAgIG1faml0
LmxvYWQ2NChKSVRDb21waWxlcjo6QWRkcmVzcyhmcmFtZUdQUiwgR2VuZXJhdG9yRnJhbWU6Omxv
Y2FsT2Zmc2V0KGdlbmVyYXRvckxvY2FsSW5kZXgpKSwgcmVzdWx0R1BSKTsKKyAgICAgICAganNW
YWx1ZVJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAg
Y2FzZSBSZXNpemVHZW5lcmF0b3JMb2NhbHM6IHsKKyAgICAgICAgY29tcGlsZVJlc2l6ZUdlbmVy
YXRvckxvY2Fscyhub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogICAgIGNhc2UgUHJvZmls
ZVR5cGU6IHsKICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQx
KCkpOwogICAgICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaDEodGhpcyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhh
c2UuY3BwCmluZGV4IDcyZjIyMDBjZWExMGI5ODEwZGJhOGM3YjE5ZmVmZjI0ZGFhNWRhZTMuLmQ3
YzcwNTY2ZmM3MzdmODkwZjE1NmI1MzQ1MDlkOWEwYzA3MzhlOWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhh
c2UuY3BwCkBAIC0yODEsNiArMjgxLDExIEBAIGNsYXNzIFN0b3JlQmFycmllckluc2VydGlvblBo
YXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgICAgICBjb25zaWRlckJhcnJpZXIobV9u
b2RlLT5jaGlsZDEoKSwgbV9ub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGNhc2UgU2V0R2VuZXJhdG9yTG9jYWw6IHsK
KyAgICAgICAgICAgICAgICBjb25zaWRlckJhcnJpZXIobV9ub2RlLT5jaGlsZDEoKSwgbV9ub2Rl
LT5jaGlsZDIoKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgCiAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgIGJyZWFr
OwpAQCAtMjk2LDYgKzMwMSw3IEBAIGNsYXNzIFN0b3JlQmFycmllckluc2VydGlvblBoYXNlIDog
cHVibGljIFBoYXNlIHsKICAgICAgICAgICAgIGNhc2UgTmV3QXJyYXlCdWZmZXI6CiAgICAgICAg
ICAgICBjYXNlIE5ld1R5cGVkQXJyYXk6CiAgICAgICAgICAgICBjYXNlIE5ld1JlZ2V4cDoKKyAg
ICAgICAgICAgIGNhc2UgTmV3R2VuZXJhdG9yRnJhbWU6CiAgICAgICAgICAgICBjYXNlIE1hdGVy
aWFsaXplTmV3T2JqZWN0OgogICAgICAgICAgICAgY2FzZSBNYXRlcmlhbGl6ZUNyZWF0ZUFjdGl2
YXRpb246CiAgICAgICAgICAgICBjYXNlIE5ld1N0cmluZ09iamVjdDoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2UuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFz
ZS5jcHAKaW5kZXggMmMwNTU5ODQ5ODk5YmRmNmZiMTExNzU5N2UxMDU0YmZmMzU0NjY5My4uZTFh
ZWYwYjJjMzkzZjU2MTk0OGNjYTVhOTU5ZjJlMDcxMDg4NDM4OCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFzZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFz
ZS5jcHAKQEAgLTE0OSw2ICsxNDksOSBAQCBjbGFzcyBTdHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFz
ZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICAgICAgY2FzZSBOZXdHZW5lcmF0b3JGdW5j
dGlvbjoKICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJTdHJ1Y3R1cmUobV9ncmFwaC5nbG9i
YWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+Z2VuZXJhdG9yRnVuY3Rpb25TdHJ1
Y3R1cmUoKSk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNh
c2UgTmV3R2VuZXJhdG9yRnJhbWU6CisgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyU3RydWN0
dXJlKG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyktPmdlbmVy
YXRvckZyYW1lU3RydWN0dXJlKCkpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFi
c3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExB
YnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcAppbmRleCA5N2MwNzg0YmI0MmJjOTE5ZDA2Y2Y1MjNj
NDFlMDI0NmE1MzUxZDkxLi42OWQ4OWQ2YWQ0MjU0OTIzYmMzZmFiM2M3YWNhMjA4OTVjNTVlNWNh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJl
cG9zaXRvcnkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RI
ZWFwUmVwb3NpdG9yeS5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIkRpcmVjdEFy
Z3VtZW50cy5oIgogI2luY2x1ZGUgIkZUTEFiYnJldmlhdGlvbnMuaCIKKyNpbmNsdWRlICJHZW5l
cmF0b3JGcmFtZS5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIkpTRW52
aXJvbm1lbnRSZWNvcmQuaCIKICNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuaCIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVw
b3NpdG9yeS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBv
c2l0b3J5LmgKaW5kZXggNzdlNTc5ODY5NDBjNmFjOTZmODdmMWY5NDVjNDYyNTEyODg2MzBmMC4u
NDg4NjNjMGJkMzBmNjQ1NzY1MzEwOGJmNDU2OWIxMmM5NDA4NThhYiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgKQEAg
LTQ3LDYgKzQ3LDggQEAKICAgICBtYWNybyhEaXJlY3RBcmd1bWVudHNfbGVuZ3RoLCBEaXJlY3RB
cmd1bWVudHM6Om9mZnNldE9mTGVuZ3RoKCkpIFwKICAgICBtYWNybyhEaXJlY3RBcmd1bWVudHNf
bWluQ2FwYWNpdHksIERpcmVjdEFyZ3VtZW50czo6b2Zmc2V0T2ZNaW5DYXBhY2l0eSgpKSBcCiAg
ICAgbWFjcm8oRGlyZWN0QXJndW1lbnRzX292ZXJyaWRlcywgRGlyZWN0QXJndW1lbnRzOjpvZmZz
ZXRPZk92ZXJyaWRlcygpKSBcCisgICAgbWFjcm8oR2VuZXJhdG9yRnJhbWVfbnVtYmVyT2ZDYWxs
ZWVMb2NhbHMsIEdlbmVyYXRvckZyYW1lOjpudW1iZXJPZkNhbGxlZUxvY2Fsc09mZnNldCgpKSBc
CisgICAgbWFjcm8oR2VuZXJhdG9yRnJhbWVfbnVtYmVyT2ZTYXZlZENhbGxlZUxvY2FscywgR2Vu
ZXJhdG9yRnJhbWU6Om51bWJlck9mU2F2ZWRDYWxsZWVMb2NhbHNPZmZzZXQoKSkgXAogICAgIG1h
Y3JvKEdldHRlclNldHRlcl9nZXR0ZXIsIEdldHRlclNldHRlcjo6b2Zmc2V0T2ZHZXR0ZXIoKSkg
XAogICAgIG1hY3JvKEdldHRlclNldHRlcl9zZXR0ZXIsIEdldHRlclNldHRlcjo6b2Zmc2V0T2ZT
ZXR0ZXIoKSkgXAogICAgIG1hY3JvKEpTQXJyYXlCdWZmZXJWaWV3X2xlbmd0aCwgSlNBcnJheUJ1
ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpIFwKQEAgLTkxLDYgKzkzLDcgQEAKIAogI2RlZmlu
ZSBGT1JfRUFDSF9JTkRFWEVEX0FCU1RSQUNUX0hFQVAobWFjcm8pIFwKICAgICBtYWNybyhEaXJl
Y3RBcmd1bWVudHNfc3RvcmFnZSwgRGlyZWN0QXJndW1lbnRzOjpzdG9yYWdlT2Zmc2V0KCksIHNp
emVvZihFbmNvZGVkSlNWYWx1ZSkpIFwKKyAgICBtYWNybyhHZW5lcmF0b3JGcmFtZV9jYWxsZWVM
b2NhbHMsIEdlbmVyYXRvckZyYW1lOjpvZmZzZXRPZkxvY2FscygpLCBzaXplb2YoV3JpdGVCYXJy
aWVyPFVua25vd24+KSkgXAogICAgIG1hY3JvKEpTRW52aXJvbm1lbnRSZWNvcmRfdmFyaWFibGVz
LCBKU0Vudmlyb25tZW50UmVjb3JkOjpvZmZzZXRPZlZhcmlhYmxlcygpLCBzaXplb2YoRW5jb2Rl
ZEpTVmFsdWUpKSBcCiAgICAgbWFjcm8oSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yX2NhY2hlZFBy
b3BlcnR5TmFtZXNWZWN0b3JDb250ZW50cywgMCwgc2l6ZW9mKFdyaXRlQmFycmllcjxKU1N0cmlu
Zz4pKSBcCiAgICAgbWFjcm8oSlNSb3BlU3RyaW5nX2ZpYmVycywgSlNSb3BlU3RyaW5nOjpvZmZz
ZXRPZkZpYmVycygpLCBzaXplb2YoV3JpdGVCYXJyaWVyPEpTU3RyaW5nPikpIFwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAppbmRleCBkMmE0OTBjMmE2
N2U2ZGI4YjlhNWE3OTY2NGU1NjVlM2Q2ZDk1MWRjLi4wZTFkZmU4NzVlMTBhNWI1NjU1NmZhOWRk
NWJmZGIzZTY5MGY4Mzg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TENhcGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBh
YmlsaXRpZXMuY3BwCkBAIC03Miw2ICs3Miw3IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2Fu
Q29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgTmV3T2JqZWN0OgogICAgIGNhc2UgTmV3QXJy
YXk6CiAgICAgY2FzZSBOZXdBcnJheUJ1ZmZlcjoKKyAgICBjYXNlIE5ld0dlbmVyYXRvckZyYW1l
OgogICAgIGNhc2UgR2V0QnlPZmZzZXQ6CiAgICAgY2FzZSBHZXRHZXR0ZXJTZXR0ZXJCeU9mZnNl
dDoKICAgICBjYXNlIEdldEdldHRlcjoKQEAgLTIxNiw2ICsyMTcsOSBAQCBpbmxpbmUgQ2FwYWJp
bGl0eUxldmVsIGNhbkNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIFB1dFNldHRlckJ5VmFs
OgogICAgIGNhc2UgQ29weVJlc3Q6CiAgICAgY2FzZSBHZXRSZXN0TGVuZ3RoOgorICAgIGNhc2Ug
U2V0R2VuZXJhdG9yTG9jYWw6CisgICAgY2FzZSBHZXRHZW5lcmF0b3JMb2NhbDoKKyAgICBjYXNl
IFJlc2l6ZUdlbmVyYXRvckxvY2FsczoKICAgICAgICAgLy8gVGhlc2UgYXJlIE9LLgogICAgICAg
ICBicmVhazsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dl
ckRGR1RvTExWTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9M
TFZNLmNwcAppbmRleCAzYzAwOGZkYmJiNTBjNTZhOTc4Y2E2ZTBkNzQzODgyYmZkMjUzY2I5Li5h
NWFlMTY4NDc2ODliMjM5MDc0OTc0OWMwYjc4ODhkMTQ4MWRiNmI3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcApAQCAtNTMsNiArNTMsNyBA
QAogI2luY2x1ZGUgIkZUTFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGUuaCIKICNpbmNsdWRlICJG
VExUaHVua3MuaCIKICNpbmNsdWRlICJGVExXZWlnaHRlZFRhcmdldC5oIgorI2luY2x1ZGUgIkdl
bmVyYXRvckZyYW1lLmgiCiAjaW5jbHVkZSAiSklUQWRkR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAi
SklUQml0QW5kR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiSklUQml0T3JHZW5lcmF0b3IuaCIKQEAg
LTgzOSw2ICs4NDAsOSBAQCBjbGFzcyBMb3dlckRGR1RvTExWTSB7CiAgICAgICAgIGNhc2UgTmV3
QXJyYXlXaXRoU2l6ZToKICAgICAgICAgICAgIGNvbXBpbGVOZXdBcnJheVdpdGhTaXplKCk7CiAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBOZXdHZW5lcmF0b3JGcmFtZToKKyAgICAg
ICAgICAgIGNvbXBpbGVOZXdHZW5lcmF0b3JGcmFtZSgpOworICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQ6CiAgICAgICAgICAgICBjb21waWxl
R2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQoKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTA3MSw2
ICsxMDc1LDE1IEBAIGNsYXNzIExvd2VyREZHVG9MTFZNIHsKICAgICAgICAgY2FzZSBHZXRSZXN0
TGVuZ3RoOgogICAgICAgICAgICAgY29tcGlsZUdldFJlc3RMZW5ndGgoKTsKICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIFJlc2l6ZUdlbmVyYXRvckxvY2FsczoKKyAgICAgICAgICAg
IGNvbXBpbGVSZXNpemVHZW5lcmF0b3JMb2NhbHMoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIFNldEdlbmVyYXRvckxvY2FsOgorICAgICAgICAgICAgY29tcGlsZVNldEdlbmVy
YXRvckxvY2FsKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHZXRHZW5lcmF0
b3JMb2NhbDoKKyAgICAgICAgICAgIGNvbXBpbGVHZXRHZW5lcmF0b3JMb2NhbCgpOworICAgICAg
ICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBQaGFudG9tTG9jYWw6CiAgICAgICAgIGNhc2Ug
TG9vcEhpbnQ6CkBAIC0zOTE2LDYgKzM5MjksMjggQEAgY2xhc3MgTG93ZXJERkdUb0xMVk0gewog
ICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKICAgICAgICAg
c2V0SW50MzIobV9vdXQucGhpKG1fb3V0LmludDMyLCB6ZXJvTGVuZ3RoUmVzdWx0LCBub25aZXJv
TGVuZ3RoUmVzdWx0KSk7CiAgICAgfQorCisgICAgdm9pZCBjb21waWxlUmVzaXplR2VuZXJhdG9y
TG9jYWxzKCkKKyAgICB7CisgICAgICAgIExWYWx1ZSBmcmFtZSA9IGxvd0NlbGwobV9ub2RlLT5j
aGlsZDEoKSk7CisgICAgICAgIG1fb3V0LnN0b3JlMzIobV9vdXQuY29uc3RJbnQzMihtX25vZGUt
PmdlbmVyYXRvckZyYW1lTG9jYWxzKCkpLCBmcmFtZSwgbV9oZWFwcy5HZW5lcmF0b3JGcmFtZV9u
dW1iZXJPZlNhdmVkQ2FsbGVlTG9jYWxzKTsKKyAgICB9CisKKyAgICB2b2lkIGNvbXBpbGVTZXRH
ZW5lcmF0b3JMb2NhbCgpCisgICAgeworICAgICAgICBtX291dC5zdG9yZTY0KAorICAgICAgICAg
ICAgbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMigpKSwKKyAgICAgICAgICAgIGxvd0NlbGwobV9u
b2RlLT5jaGlsZDEoKSksCisgICAgICAgICAgICBtX2hlYXBzLkdlbmVyYXRvckZyYW1lX2NhbGxl
ZUxvY2Fsc1ttX25vZGUtPmdlbmVyYXRvckxvY2FsSW5kZXgoKV0pOworICAgIH0KKworICAgIHZv
aWQgY29tcGlsZUdldEdlbmVyYXRvckxvY2FsKCkKKyAgICB7CisgICAgICAgIHNldEpTVmFsdWUo
CisgICAgICAgICAgICBtX291dC5sb2FkNjQoCisgICAgICAgICAgICAgICAgbG93Q2VsbChtX25v
ZGUtPmNoaWxkMSgpKSwKKyAgICAgICAgICAgICAgICBtX2hlYXBzLkdlbmVyYXRvckZyYW1lX2Nh
bGxlZUxvY2Fsc1ttX25vZGUtPmdlbmVyYXRvckxvY2FsSW5kZXgoKV0pKTsKKyAgICB9CiAgICAg
CiAgICAgdm9pZCBjb21waWxlTmV3T2JqZWN0KCkKICAgICB7CkBAIC00MTUwLDYgKzQxODUsNDIg
QEAgY2xhc3MgTG93ZXJERkdUb0xMVk0gewogICAgICAgICAgICAgbV9vdXQuY29uc3RJbnRQdHIo
c3RydWN0dXJlKSk7CiAgICAgICAgIHNldEpTVmFsdWUodm1DYWxsKG1fb3V0LmludDY0LCBtX291
dC5vcGVyYXRpb24ob3BlcmF0aW9uTmV3QXJyYXlXaXRoU2l6ZSksIG1fY2FsbEZyYW1lLCBzdHJ1
Y3R1cmVWYWx1ZSwgcHVibGljTGVuZ3RoKSk7CiAgICAgfQorCisgICAgdm9pZCBjb21waWxlTmV3
R2VuZXJhdG9yRnJhbWUoKQorICAgIHsKKyAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCA9IG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsK
KyAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBnbG9iYWxPYmplY3QtPmdlbmVyYXRvckZy
YW1lU3RydWN0dXJlKCk7CisgICAgICAgIHVuc2lnbmVkIGdlbmVyYXRvckxvY2Fsc1NpemUgPSBt
X25vZGUtPmdlbmVyYXRvckxvY2Fsc1NpemUoKTsKKworICAgICAgICBMQmFzaWNCbG9jayBzbG93
UGF0aCA9IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgiTmV3R2VuZXJhdG9yRnJhbWUgc2xvdyBwYXRo
IikpOworICAgICAgICBMQmFzaWNCbG9jayBjb250aW51YXRpb24gPSBGVExfTkVXX0JMT0NLKG1f
b3V0LCAoIk5ld0dlbmVyYXRvckZyYW1lIGNvbnRpbnVhdGlvbiIpKTsKKworICAgICAgICBMQmFz
aWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0Lmluc2VydE5ld0Jsb2Nrc0JlZm9yZShzbG93UGF0aCk7
CisgICAgICAgIExWYWx1ZSBmYXN0T2JqZWN0ID0gYWxsb2NhdGVPYmplY3Q8R2VuZXJhdG9yRnJh
bWU+KEdlbmVyYXRvckZyYW1lOjphbGxvY2F0aW9uU2l6ZUZvckxvY2FscyhnZW5lcmF0b3JMb2Nh
bHNTaXplKSwgc3RydWN0dXJlLCBtX291dC5pbnRQdHJaZXJvLCBzbG93UGF0aCk7CisgICAgICAg
IG1fb3V0LnN0b3JlMzIobV9vdXQuY29uc3RJbnQzMihnZW5lcmF0b3JMb2NhbHNTaXplKSwgZmFz
dE9iamVjdCwgbV9oZWFwcy5HZW5lcmF0b3JGcmFtZV9udW1iZXJPZkNhbGxlZUxvY2Fscyk7Cisg
ICAgICAgIG1fb3V0LnN0b3JlMzIobV9vdXQuY29uc3RJbnQzMigwKSwgZmFzdE9iamVjdCwgbV9o
ZWFwcy5HZW5lcmF0b3JGcmFtZV9udW1iZXJPZlNhdmVkQ2FsbGVlTG9jYWxzKTsKKworICAgICAg
ICBKU1ZhbHVlIGVtcHR5VmFsdWU7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBn
ZW5lcmF0b3JMb2NhbHNTaXplOyArK2kpCisgICAgICAgICAgICBtX291dC5zdG9yZTY0KG1fb3V0
LmNvbnN0SW50NjQoSlNWYWx1ZTo6ZW5jb2RlKGVtcHR5VmFsdWUpKSwgZmFzdE9iamVjdCwgbV9o
ZWFwcy5HZW5lcmF0b3JGcmFtZV9jYWxsZWVMb2NhbHNbaV0pOworCisgICAgICAgIFZhbHVlRnJv
bUJsb2NrIGZhc3RSZXN1bHQgPSBtX291dC5hbmNob3IoZmFzdE9iamVjdCk7CisgICAgICAgIG1f
b3V0Lmp1bXAoY29udGludWF0aW9uKTsKKworICAgICAgICBtX291dC5hcHBlbmRUbyhzbG93UGF0
aCwgY29udGludWF0aW9uKTsKKyAgICAgICAgVmVjdG9yPExWYWx1ZT4gc2xvd1BhdGhBcmd1bWVu
dHM7CisgICAgICAgIExWYWx1ZSBjYWxsUmVzdWx0ID0gbGF6eVNsb3dQYXRoKAorICAgICAgICAg
ICAgWz1dIChjb25zdCBWZWN0b3I8TG9jYXRpb24+JiBsb2NhdGlvbnMpIC0+IFJlZlB0cjxMYXp5
U2xvd1BhdGg6OkdlbmVyYXRvcj4geworICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVMYXp5
Q2FsbEdlbmVyYXRvcigKKyAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uTmV3R2VuZXJhdG9y
RnJhbWUsCisgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uc1swXS5kaXJlY3RHUFIoKSwgQ0Nh
bGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksIENDYWxsSGVscGVyczo6VHJ1c3Rl
ZEltbTMyKGdlbmVyYXRvckxvY2Fsc1NpemUpKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICBW
YWx1ZUZyb21CbG9jayBzbG93UmVzdWx0ID0gbV9vdXQuYW5jaG9yKGNhbGxSZXN1bHQpOworICAg
ICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CisKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8o
Y29udGludWF0aW9uLCBsYXN0TmV4dCk7CisgICAgICAgIHNldEpTVmFsdWUobV9vdXQucGhpKG1f
b3V0LmludFB0ciwgZmFzdFJlc3VsdCwgc2xvd1Jlc3VsdCkpOworICAgIH0KICAgICAKICAgICB2
b2lkIGNvbXBpbGVBbGxvY2F0ZVByb3BlcnR5U3RvcmFnZSgpCiAgICAgewpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVQuY3BwCmluZGV4IGEzYmRmYTdjZDVkMGY1NzI0N2YxYmU4YzQwYjI1MTBkMjlkODAw
ZmYuLmQ5MmJjODdjN2I2OTA5NDFjYzJjYzI5OGJhZmJjZmZmNTc2MzYxZjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVC5jcHAKQEAgLTIxNyw2ICsyMTcsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNv
bXBpbGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9PUChvcF9hc3NlcnQpCiAgICAgICAgIERF
RklORV9PUChvcF9zYXZlKQogICAgICAgICBERUZJTkVfT1Aob3BfcmVzdW1lKQorICAgICAgICBE
RUZJTkVfT1Aob3BfbmV3X2dlbmVyYXRvcl9mcmFtZSkKICAgICAgICAgREVGSU5FX09QKG9wX2Rl
YnVnKQogICAgICAgICBERUZJTkVfT1Aob3BfZGVsX2J5X2lkKQogICAgICAgICBERUZJTkVfT1Ao
b3BfZGl2KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKaW5kZXggZGY3YjNkYzVlODkyMGVlNGVmOTJi
Y2FjYmFlZmYxYjRjMDBkOTM2OS4uYTg4YmI2Njc0Y2M4NTBiYjY2OWQ3Y2JjZDBjOGFlN2JiZjIy
NDA1OCAxMDA3NTUKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCkBAIC00OTYsNiArNDk2LDcgQEAKICAgICAg
ICAgdm9pZCBlbWl0X29wX2Fzc2VydChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRf
b3Bfc2F2ZShJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfcmVzdW1lKEluc3Ry
dWN0aW9uKik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9uZXdfZ2VuZXJhdG9yX2ZyYW1lKEluc3Ry
dWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9kZWJ1ZyhJbnN0cnVjdGlvbiopOwogICAg
ICAgICB2b2lkIGVtaXRfb3BfZGVsX2J5X2lkKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQg
ZW1pdF9vcF9kaXYoSW5zdHJ1Y3Rpb24qKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
Y29kZXMuY3BwCmluZGV4IDczOGNiNjNmZWQ5MWI0OTg1NWQ1ZDAzM2Q0NjMzNDVmZGQ0NzZkOWIu
LjA0ODdmNDk0Zjg2NTQ3MWVjYTg2YjA4Y2ZjZjlmYjJlYzQ0YjI5MWMgMTAwNzU1Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUg
IkNvcGllZFNwYWNlSW5saW5lcy5oIgogI2luY2x1ZGUgIkRlYnVnZ2VyLmgiCiAjaW5jbHVkZSAi
RXhjZXB0aW9uLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yRnJhbWUuaCIKICNpbmNsdWRlICJIZWFw
LmgiCiAjaW5jbHVkZSAiSklUSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKQEAgLTg5
Myw2ICs4OTQsNDYgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3RvX3N0cmluZyhJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2UKICAgICBzbG93UGF0aENhbGwu
Y2FsbCgpOwogfQogCit2b2lkIEpJVDo6ZW1pdF9vcF9zYXZlKEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCit7CisgICAgaW50IGZyYW1lID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUu
b3BlcmFuZDsKKyAgICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSBjdXJyZW50SW5z
dHJ1Y3Rpb25bMl0udS51bnNpZ25lZFZhbHVlOworICAgIGNvbnN0IEZhc3RCaXRWZWN0b3ImIGxp
dmVuZXNzID0gbV9jb2RlQmxvY2stPmxpdmVDYWxsZWVMb2NhbHNBdFlpZWxkKGxpdmVDYWxsZWVM
b2NhbHNJbmRleCk7CisKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGZyYW1lLCByZWdUMSk7
CisKKyAgICAvLyBBbGxvY2F0ZSBnZW5lcmF0b3IgZnJhbWUgbG9jYWxzLgorICAgIHN0b3JlMzIo
VHJ1c3RlZEltbTMyKGxpdmVuZXNzLmJpdENvdW50KCkpLCBBZGRyZXNzKHJlZ1QxLCBHZW5lcmF0
b3JGcmFtZTo6bnVtYmVyT2ZTYXZlZENhbGxlZUxvY2Fsc09mZnNldCgpKSk7CisKKyAgICB1bnNp
Z25lZCBnZW5lcmF0b3JMb2NhbEluZGV4ID0gMDsKKyAgICBsaXZlbmVzcy5mb3JFYWNoU2V0Qml0
KFsmXShzaXplX3QgbG9jYWwpIHsKKyAgICAgICAgVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQgPSB2
aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChsb2NhbCk7CisgICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVn
aXN0ZXIob3BlcmFuZC5vZmZzZXQoKSwgcmVnVDApOworICAgICAgICBzdG9yZTY0KHJlZ1QwLCBB
ZGRyZXNzKHJlZ1QxLCBHZW5lcmF0b3JGcmFtZTo6bG9jYWxPZmZzZXQoZ2VuZXJhdG9yTG9jYWxJ
bmRleCkpKTsKKyAgICAgICAgZ2VuZXJhdG9yTG9jYWxJbmRleCsrOworICAgIH0pOworfQorCit2
b2lkIEpJVDo6ZW1pdF9vcF9yZXN1bWUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
K3sKKyAgICBpbnQgZnJhbWUgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOworICAg
IHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51
LnVuc2lnbmVkVmFsdWU7CisgICAgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZW5lc3MgPSBtX2Nv
ZGVCbG9jay0+bGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQobGl2ZUNhbGxlZUxvY2Fsc0luZGV4KTsK
KworICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoZnJhbWUsIHJlZ1QxKTsKKworICAgIHVuc2ln
bmVkIGdlbmVyYXRvckxvY2FsSW5kZXggPSAwOworICAgIGxpdmVuZXNzLmZvckVhY2hTZXRCaXQo
WyZdKHNpemVfdCBsb2NhbCkgeworICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCA9IHZp
cnR1YWxSZWdpc3RlckZvckxvY2FsKGxvY2FsKTsKKyAgICAgICAgbG9hZDY0KEFkZHJlc3MocmVn
VDEsIEdlbmVyYXRvckZyYW1lOjpsb2NhbE9mZnNldChnZW5lcmF0b3JMb2NhbEluZGV4KSksIHJl
Z1QwKTsKKyAgICAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihvcGVyYW5kLm9mZnNldCgpKTsK
KyAgICAgICAgZ2VuZXJhdG9yTG9jYWxJbmRleCsrOworICAgIH0pOworCisgICAgLy8gRGVhbGxv
Y2F0ZSBnZW5lcmF0b3IgZnJhbWUgbG9jYWxzLgorICAgIHN0b3JlMzIoVHJ1c3RlZEltbTMyKDAp
LCBBZGRyZXNzKHJlZ1QxLCBHZW5lcmF0b3JGcmFtZTo6bnVtYmVyT2ZTYXZlZENhbGxlZUxvY2Fs
c09mZnNldCgpKSk7Cit9CisKICNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KQogCiB2b2lkIEpJVDo6
ZW1pdF9vcF9sb29wX2hpbnQoSW5zdHJ1Y3Rpb24qKQpAQCAtMTQyOSwxNSArMTQ3MCw5IEBAIHZv
aWQgSklUOjplbWl0X29wX2dldF9yZXN0X2xlbmd0aChJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogI2VuZGlmCiB9CiAKLXZvaWQgSklUOjplbWl0X29wX3NhdmUoSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKLXsKLSAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxs
KHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX3NhdmUpOwotICAgIHNsb3dQYXRo
Q2FsbC5jYWxsKCk7Ci19Ci0KLXZvaWQgSklUOjplbWl0X29wX3Jlc3VtZShJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfbmV3X2dlbmVyYXRvcl9mcmFt
ZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewotICAgIEpJVFNsb3dQYXRoQ2Fs
bCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfcmVzdW1l
KTsKKyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVj
dGlvbiwgc2xvd19wYXRoX25ld19nZW5lcmF0b3JfZnJhbWUpOwogICAgIHNsb3dQYXRoQ2FsbC5j
YWxsKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bj
b2RlczMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0
LmNwcAppbmRleCBjMzI2ZmYzZTAxZTVhNDI0M2U3Yjc4YmVlODUyY2ZiNzk3ZDM5MmVlLi5mN2Jh
MTFiYzBjYWFmNDM0YTZjMWIxMjRhNjc0M2RjNjQwZmNiMDVlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5j
bHVkZSAiQ0NhbGxIZWxwZXJzLmgiCiAjaW5jbHVkZSAiRGVidWdnZXIuaCIKICNpbmNsdWRlICJF
eGNlcHRpb24uaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JGcmFtZS5oIgogI2luY2x1ZGUgIkpJVElu
bGluZXMuaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCiAjaW5jbHVkZSAiSlNDZWxsLmgiCkBAIC0x
MzI4LDYgKzEzMjksNDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHJvZmlsZV90eXBlKEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAganVtcFRvRW5kLmxpbmsodGhpcyk7CiB9CiAK
K3ZvaWQgSklUOjplbWl0X29wX3NhdmUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
K3sKKyAgICBpbnQgZnJhbWUgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOworICAg
IHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51
LnVuc2lnbmVkVmFsdWU7CisgICAgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZW5lc3MgPSBtX2Nv
ZGVCbG9jay0+bGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQobGl2ZUNhbGxlZUxvY2Fsc0luZGV4KTsK
KworICAgIGVtaXRMb2FkUGF5bG9hZChmcmFtZSwgcmVnVDIpOworCisgICAgLy8gQWxsb2NhdGUg
Z2VuZXJhdG9yIGZyYW1lIGxvY2Fscy4KKyAgICBzdG9yZTMyKFRydXN0ZWRJbW0zMihsaXZlbmVz
cy5iaXRDb3VudCgpKSwgQWRkcmVzcyhyZWdUMiwgR2VuZXJhdG9yRnJhbWU6Om51bWJlck9mU2F2
ZWRDYWxsZWVMb2NhbHNPZmZzZXQoKSkpOworCisgICAgdW5zaWduZWQgZ2VuZXJhdG9yTG9jYWxJ
bmRleCA9IDA7CisgICAgbGl2ZW5lc3MuZm9yRWFjaFNldEJpdChbJl0oc2l6ZV90IGxvY2FsKSB7
CisgICAgICAgIFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kID0gdmlydHVhbFJlZ2lzdGVyRm9yTG9j
YWwobG9jYWwpOworICAgICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKG9wZXJhbmQub2Zmc2V0
KCksIEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdUMCkpOworICAgICAgICBzdG9yZTMyKHJlZ1QxLCBB
ZGRyZXNzKHJlZ1QyLCBHZW5lcmF0b3JGcmFtZTo6bG9jYWxPZmZzZXQoZ2VuZXJhdG9yTG9jYWxJ
bmRleCkgKyBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMudGFnKSkpOworICAgICAg
ICBzdG9yZTMyKHJlZ1QwLCBBZGRyZXNzKHJlZ1QyLCBHZW5lcmF0b3JGcmFtZTo6bG9jYWxPZmZz
ZXQoZ2VuZXJhdG9yTG9jYWxJbmRleCkgKyBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0Jp
dHMucGF5bG9hZCkpKTsKKyAgICAgICAgZ2VuZXJhdG9yTG9jYWxJbmRleCsrOworICAgIH0pOwor
fQorCit2b2lkIEpJVDo6ZW1pdF9vcF9yZXN1bWUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKK3sKKyAgICBpbnQgZnJhbWUgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5k
OworICAgIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9IGN1cnJlbnRJbnN0cnVjdGlv
blsyXS51LnVuc2lnbmVkVmFsdWU7CisgICAgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZW5lc3Mg
PSBtX2NvZGVCbG9jay0+bGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQobGl2ZUNhbGxlZUxvY2Fsc0lu
ZGV4KTsKKworICAgIGVtaXRMb2FkUGF5bG9hZChmcmFtZSwgcmVnVDIpOworCisgICAgdW5zaWdu
ZWQgZ2VuZXJhdG9yTG9jYWxJbmRleCA9IDA7CisgICAgbGl2ZW5lc3MuZm9yRWFjaFNldEJpdChb
Jl0oc2l6ZV90IGxvY2FsKSB7CisgICAgICAgIFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kID0gdmly
dHVhbFJlZ2lzdGVyRm9yTG9jYWwobG9jYWwpOworICAgICAgICBsb2FkMzIoQWRkcmVzcyhyZWdU
MiwgR2VuZXJhdG9yRnJhbWU6OmxvY2FsT2Zmc2V0KGdlbmVyYXRvckxvY2FsSW5kZXgpICsgT0JK
RUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnRhZykpLCByZWdUMSk7CisgICAgICAgIGxv
YWQzMihBZGRyZXNzKHJlZ1QyLCBHZW5lcmF0b3JGcmFtZTo6bG9jYWxPZmZzZXQoZ2VuZXJhdG9y
TG9jYWxJbmRleCkgKyBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMucGF5bG9hZCkp
LCByZWdUMCk7CisgICAgICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIob3BlcmFuZC5vZmZzZXQo
KSwgSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKSk7CisgICAgICAgIGdlbmVyYXRvckxvY2FsSW5k
ZXgrKzsKKyAgICB9KTsKKworICAgIC8vIERlYWxsb2NhdGUgZ2VuZXJhdG9yIGZyYW1lIGxvY2Fs
cy4KKyAgICBzdG9yZTMyKFRydXN0ZWRJbW0zMigwKSwgQWRkcmVzcyhyZWdUMiwgR2VuZXJhdG9y
RnJhbWU6Om51bWJlck9mU2F2ZWRDYWxsZWVMb2NhbHNPZmZzZXQoKSkpOworfQorCiB9IC8vIG5h
bWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIFVTRShKU1ZBTFVFMzJfNjQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCmluZGV4
IDJiNGU2MTk4NmQzMTJhYzllNGY4NzM3M2NlN2FhMGI5ZmQwY2U3NWEuLmFmZTA5Njg0ODhmNDZk
MTY3NWM5MTdlY2IyYjYyMGMwMDU2MTIyNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCkBAIC0zMiw2ICszMiw3IEBA
CiAjaW5jbHVkZSAiRGlyZWN0QXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uLmgiCiAj
aW5jbHVkZSAiRXhlY3V0YWJsZS5oIgorI2luY2x1ZGUgIkdlbmVyYXRvckZyYW1lLmgiCiAjaW5j
bHVkZSAiSGVhcC5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSlNBcnJh
eS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXIuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXIuYXNtCmluZGV4IGNkNGNlOTA2M2IxOTU3NWE5NTdlM2NhM2UyMmJlNTc5MTViZGI1OWEu
LjAwYTdhZGI4OWQ1YzVlMDk1NDIxMTU2ZDRmZTRiZDY3ZTE3YjZhYTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KQEAgLTEy
NTYsNiArMTI1NiwxMiBAQCBfbGxpbnRfb3BfbmV3X3JlZ2V4cDoKICAgICBkaXNwYXRjaCgzKQog
CiAKK19sbGludF9vcF9uZXdfZ2VuZXJhdG9yX2ZyYW1lOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF9uZXdfZ2VuZXJhdG9yX2ZyYW1lKQorICAgIGRp
c3BhdGNoKDMpCisKKwogX2xsaW50X29wX2xlc3M6CiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAg
IGNhbGxTbG93UGF0aChfc2xvd19wYXRoX2xlc3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1BhcnNlci5jcHAKaW5kZXggZTAwZDgwMDIyMjA0MzkzMjFjYmQwY2RlMTZmNzI5ZTkzNmY4NjIy
NS4uNzZhNGEyMDAwMTY0MTJjZDc2N2NlOTFiZTA5YWQ2NmZhNDQ4ODFkMyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcApAQCAtMjUxLDcgKzI1MSw3IEBACiAgICAgaWYg
KG1fbGV4ZXItPmlzUmVwYXJzaW5nRnVuY3Rpb24oKSkgewogICAgICAgICBQYXJzZXJGdW5jdGlv
bkluZm88QVNUQnVpbGRlcj4gZnVuY3Rpb25JbmZvOwogICAgICAgICBpZiAocGFyc2VNb2RlID09
IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yQm9keU1vZGUpCi0gICAgICAgICAgICBmdW5jdGlv
bkluZm8ucGFyYW1ldGVycyA9IGNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMoY29udGV4dCk7Cisg
ICAgICAgICAgICBmdW5jdGlvbkluZm8ucGFyYW1ldGVycyA9IGNyZWF0ZUdlbmVyYXRvclBhcmFt
ZXRlcnMoY29udGV4dCwgZnVuY3Rpb25JbmZvLnBhcmFtZXRlckNvdW50KTsKICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgcGFyc2VGdW5jdGlvblBhcmFtZXRlcnMoY29udGV4dCwgcGFyc2VNb2Rl
LCBmdW5jdGlvbkluZm8pOwogICAgICAgICBtX3BhcmFtZXRlcnMgPSBmdW5jdGlvbkluZm8ucGFy
YW1ldGVyczsKQEAgLTUyOCwxMCArNTI4LDkgQEAKIAogICAgIFBhcnNlckZ1bmN0aW9uSW5mbzxU
cmVlQnVpbGRlcj4gaW5mbzsKICAgICBpbmZvLm5hbWUgPSAmbV92bS0+cHJvcGVydHlOYW1lcy0+
bnVsbElkZW50aWZpZXI7Ci0gICAgaW5mby5wYXJhbWV0ZXJzID0gY3JlYXRlR2VuZXJhdG9yUGFy
YW1ldGVycyhjb250ZXh0KTsKKyAgICBpbmZvLnBhcmFtZXRlcnMgPSBjcmVhdGVHZW5lcmF0b3JQ
YXJhbWV0ZXJzKGNvbnRleHQsIGluZm8ucGFyYW1ldGVyQ291bnQpOwogICAgIGluZm8uc3RhcnRP
ZmZzZXQgPSBwYXJhbWV0ZXJzU3RhcnQ7CiAgICAgaW5mby5zdGFydExpbmUgPSB0b2tlbkxpbmUo
KTsKLSAgICBpbmZvLnBhcmFtZXRlckNvdW50ID0gNDsgLy8gZ2VuZXJhdG9yLCBzdGF0ZSwgdmFs
dWUsIHJlc3VtZSBtb2RlCiAKICAgICB7CiAgICAgICAgIEF1dG9Qb3BTY29wZVJlZiBnZW5lcmF0
b3JCb2R5U2NvcGUodGhpcywgcHVzaFNjb3BlKCkpOwpAQCAtMTgyNCwzMiArMTgyMywzMCBAQCBz
dGF0aWMgY29uc3QgY2hhciogc3RyaW5nRm9yRnVuY3Rpb25Nb2RlKFNvdXJjZVBhcnNlTW9kZSBt
b2RlKQogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgotdGVtcGxhdGUgPGNsYXNz
IFRyZWVCdWlsZGVyPiB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6Rm9ybWFsUGFyYW1ldGVyTGlzdCBQ
YXJzZXI8TGV4ZXJUeXBlPjo6Y3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhUcmVlQnVpbGRlciYg
Y29udGV4dCkKK3RlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gdHlwZW5hbWUgVHJlZUJ1aWxk
ZXI6OkZvcm1hbFBhcmFtZXRlckxpc3QgUGFyc2VyPExleGVyVHlwZT46OmNyZWF0ZUdlbmVyYXRv
clBhcmFtZXRlcnMoVHJlZUJ1aWxkZXImIGNvbnRleHQsIHVuc2lnbmVkJiBwYXJhbWV0ZXJDb3Vu
dCkKIHsKICAgICBhdXRvIHBhcmFtZXRlcnMgPSBjb250ZXh0LmNyZWF0ZUZvcm1hbFBhcmFtZXRl
ckxpc3QoKTsKIAogICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkp
OwogICAgIEpTVGV4dFBvc2l0aW9uIHBvc2l0aW9uID0gdG9rZW5TdGFydFBvc2l0aW9uKCk7CiAK
LSAgICAvLyBAZ2VuZXJhdG9yCi0gICAgZGVjbGFyZVBhcmFtZXRlcigmbV92bS0+cHJvcGVydHlO
YW1lcy0+Z2VuZXJhdG9yUHJpdmF0ZU5hbWUpOwotICAgIGF1dG8gZ2VuZXJhdG9yID0gY29udGV4
dC5jcmVhdGVCaW5kaW5nTG9jYXRpb24obG9jYXRpb24sIG1fdm0tPnByb3BlcnR5TmFtZXMtPmdl
bmVyYXRvclByaXZhdGVOYW1lLCBwb3NpdGlvbiwgcG9zaXRpb24sIEFzc2lnbm1lbnRDb250ZXh0
OjpEZWNsYXJhdGlvblN0YXRlbWVudCk7Ci0gICAgY29udGV4dC5hcHBlbmRQYXJhbWV0ZXIocGFy
YW1ldGVycywgZ2VuZXJhdG9yLCAwKTsKKyAgICBhdXRvIGFkZFBhcmFtZXRlciA9IFsmXShjb25z
dCBJZGVudGlmaWVyJiBuYW1lKSB7CisgICAgICAgIGRlY2xhcmVQYXJhbWV0ZXIoJm5hbWUpOwor
ICAgICAgICBhdXRvIGJpbmRpbmcgPSBjb250ZXh0LmNyZWF0ZUJpbmRpbmdMb2NhdGlvbihsb2Nh
dGlvbiwgbmFtZSwgcG9zaXRpb24sIHBvc2l0aW9uLCBBc3NpZ25tZW50Q29udGV4dDo6RGVjbGFy
YXRpb25TdGF0ZW1lbnQpOworICAgICAgICBjb250ZXh0LmFwcGVuZFBhcmFtZXRlcihwYXJhbWV0
ZXJzLCBiaW5kaW5nLCAwKTsKKyAgICAgICAgKytwYXJhbWV0ZXJDb3VudDsKKyAgICB9OwogCisg
ICAgLy8gQGdlbmVyYXRvcgorICAgIGFkZFBhcmFtZXRlcihtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5n
ZW5lcmF0b3JQcml2YXRlTmFtZSk7CiAgICAgLy8gQGdlbmVyYXRvclN0YXRlCi0gICAgZGVjbGFy
ZVBhcmFtZXRlcigmbV92bS0+cHJvcGVydHlOYW1lcy0+Z2VuZXJhdG9yU3RhdGVQcml2YXRlTmFt
ZSk7Ci0gICAgYXV0byBnZW5lcmF0b3JTdGF0ZSA9IGNvbnRleHQuY3JlYXRlQmluZGluZ0xvY2F0
aW9uKGxvY2F0aW9uLCBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5nZW5lcmF0b3JTdGF0ZVByaXZhdGVO
YW1lLCBwb3NpdGlvbiwgcG9zaXRpb24sIEFzc2lnbm1lbnRDb250ZXh0OjpEZWNsYXJhdGlvblN0
YXRlbWVudCk7Ci0gICAgY29udGV4dC5hcHBlbmRQYXJhbWV0ZXIocGFyYW1ldGVycywgZ2VuZXJh
dG9yU3RhdGUsIDApOwotCisgICAgYWRkUGFyYW1ldGVyKG1fdm0tPnByb3BlcnR5TmFtZXMtPmdl
bmVyYXRvclN0YXRlUHJpdmF0ZU5hbWUpOwogICAgIC8vIEBnZW5lcmF0b3JWYWx1ZQotICAgIGRl
Y2xhcmVQYXJhbWV0ZXIoJm1fdm0tPnByb3BlcnR5TmFtZXMtPmdlbmVyYXRvclZhbHVlUHJpdmF0
ZU5hbWUpOwotICAgIGF1dG8gZ2VuZXJhdG9yVmFsdWUgPSBjb250ZXh0LmNyZWF0ZUJpbmRpbmdM
b2NhdGlvbihsb2NhdGlvbiwgbV92bS0+cHJvcGVydHlOYW1lcy0+Z2VuZXJhdG9yVmFsdWVQcml2
YXRlTmFtZSwgcG9zaXRpb24sIHBvc2l0aW9uLCBBc3NpZ25tZW50Q29udGV4dDo6RGVjbGFyYXRp
b25TdGF0ZW1lbnQpOwotICAgIGNvbnRleHQuYXBwZW5kUGFyYW1ldGVyKHBhcmFtZXRlcnMsIGdl
bmVyYXRvclZhbHVlLCAwKTsKLQorICAgIGFkZFBhcmFtZXRlcihtX3ZtLT5wcm9wZXJ0eU5hbWVz
LT5nZW5lcmF0b3JWYWx1ZVByaXZhdGVOYW1lKTsKICAgICAvLyBAZ2VuZXJhdG9yUmVzdW1lTW9k
ZQotICAgIGRlY2xhcmVQYXJhbWV0ZXIoJm1fdm0tPnByb3BlcnR5TmFtZXMtPmdlbmVyYXRvclJl
c3VtZU1vZGVQcml2YXRlTmFtZSk7Ci0gICAgYXV0byBnZW5lcmF0b3JSZXN1bWVNb2RlID0gY29u
dGV4dC5jcmVhdGVCaW5kaW5nTG9jYXRpb24obG9jYXRpb24sIG1fdm0tPnByb3BlcnR5TmFtZXMt
PmdlbmVyYXRvclJlc3VtZU1vZGVQcml2YXRlTmFtZSwgcG9zaXRpb24sIHBvc2l0aW9uLCBBc3Np
Z25tZW50Q29udGV4dDo6RGVjbGFyYXRpb25TdGF0ZW1lbnQpOwotICAgIGNvbnRleHQuYXBwZW5k
UGFyYW1ldGVyKHBhcmFtZXRlcnMsIGdlbmVyYXRvclJlc3VtZU1vZGUsIDApOworICAgIGFkZFBh
cmFtZXRlcihtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5nZW5lcmF0b3JSZXN1bWVNb2RlUHJpdmF0ZU5h
bWUpOworICAgIC8vIEBnZW5lcmF0b3JGcmFtZQorICAgIGFkZFBhcmFtZXRlcihtX3ZtLT5wcm9w
ZXJ0eU5hbWVzLT5nZW5lcmF0b3JGcmFtZVByaXZhdGVOYW1lKTsKIAogICAgIHJldHVybiBwYXJh
bWV0ZXJzOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJz
ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKaW5kZXggMzI5ZWRi
ZTcyNTM1ZjMyOTNiYWYzZmExNWNiZTViY2FlY2EyOTY3ZC4uYWZlMjY4NzZiYWJhZDE3NGRjNTE1
YWJjY2MyNzRjMjUwOGJkZjkzNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9QYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5o
CkBAIC0xMjI3LDcgKzEyMjcsNyBAQCBjbGFzcyBQYXJzZXIgewogICAgIEFMV0FZU19JTkxJTkUg
Ym9vbCBpc0Fycm93RnVuY3Rpb25QYXJhbWV0ZXJzKCk7CiAgICAgCiAgICAgdGVtcGxhdGUgPGNs
YXNzIFRyZWVCdWlsZGVyPiBORVZFUl9JTkxJTkUgaW50IHBhcnNlRnVuY3Rpb25QYXJhbWV0ZXJz
KFRyZWVCdWlsZGVyJiwgU291cmNlUGFyc2VNb2RlLCBQYXJzZXJGdW5jdGlvbkluZm88VHJlZUJ1
aWxkZXI+Jik7Ci0gICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBORVZFUl9JTkxJTkUg
dHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkZvcm1hbFBhcmFtZXRlckxpc3QgY3JlYXRlR2VuZXJhdG9y
UGFyYW1ldGVycyhUcmVlQnVpbGRlciYpOworICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRl
cj4gTkVWRVJfSU5MSU5FIHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpGb3JtYWxQYXJhbWV0ZXJMaXN0
IGNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMoVHJlZUJ1aWxkZXImLCB1bnNpZ25lZCYgcGFyYW1l
dGVyQ291bnQpOwogCiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBORVZFUl9JTkxJ
TkUgVHJlZUNsYXNzRXhwcmVzc2lvbiBwYXJzZUNsYXNzKFRyZWVCdWlsZGVyJiwgRnVuY3Rpb25S
ZXF1aXJlbWVudHMsIFBhcnNlckNsYXNzSW5mbzxUcmVlQnVpbGRlcj4mKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKaW5kZXggNzhi
NDNjNGQzODlmZjdhOTA4MzEzYjU1NDA1NzBlODgyZTFiMDM3MS4uZWNiZjcyYmUyOGYzN2QzMzBj
OWUxYzJiZjU2OWM3ZGE2ZTk5MTg1NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCkBAIC02OTcsMTggKzY5Nyw3IEBAIHN0YXRpYyB2
b2lkIHVwZGF0ZVJlc3VsdFByb2ZpbGVGb3JCaW5hcnlBcml0aE9wKEV4ZWNTdGF0ZSosIEluc3Ry
dWN0aW9uKiwgSlNWYWx1CiAgICAgLy8gT25seSBzYXZlIHZhcmlhYmxlcyBhbmQgdGVtcG9yYXJ5
IHJlZ2lzdGVycy4gVGhlIHNjb3BlIHJlZ2lzdGVycyBhcmUgaW5jbHVkZWQgaW4gdGhlbS4KICAg
ICAvLyBCdXQgcGFyYW1ldGVycyBhcmUgbm90IGluY2x1ZGVkLiBCZWNhdXNlIHRoZSBnZW5lcmF0
b3IgaW1wbGVtZW50YXRpb24gcmVwbGFjZXMgdGhlIHZhbHVlcyBvZiBwYXJhbWV0ZXJzIG9uIGVh
Y2ggZ2VuZXJhdG9yLm5leHQoKSBjYWxsLgogICAgIEJFR0lOKCk7Ci0gICAgSlNWYWx1ZSBnZW5l
cmF0b3IgPSBPUCgxKS5qc1ZhbHVlKCk7Ci0gICAgR2VuZXJhdG9yRnJhbWUqIGZyYW1lID0gbnVs
bHB0cjsKLSAgICBKU1ZhbHVlIHZhbHVlID0gZ2VuZXJhdG9yLmdldChleGVjLCBleGVjLT5wcm9w
ZXJ0eU5hbWVzKCkuZ2VuZXJhdG9yRnJhbWVQcml2YXRlTmFtZSk7Ci0gICAgaWYgKCF2YWx1ZS5p
c051bGwoKSkKLSAgICAgICAgZnJhbWUgPSBqc0Nhc3Q8R2VuZXJhdG9yRnJhbWUqPih2YWx1ZSk7
Ci0gICAgZWxzZSB7Ci0gICAgICAgIC8vIEZJWE1FOiBPbmNlIEpTR2VuZXJhdG9yIHNwZWNpYWxp
emVkIG9iamVjdCBpcyBpbnRyb2R1Y2VkLCB0aGlzIEdlbmVyYXRvckZyYW1lIHNob3VsZCBiZSBl
bWJlZGVkIGludG8gaXQgdG8gYXZvaWQgYWxsb2NhdGlvbnMuCi0gICAgICAgIC8vIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE1NDUKLSAgICAgICAgZnJhbWUgPSBH
ZW5lcmF0b3JGcmFtZTo6Y3JlYXRlKGV4ZWMtPnZtKCksICBleGVjLT5jb2RlQmxvY2soKS0+bnVt
Q2FsbGVlTG9jYWxzKCkpOwotICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChnZW5lcmF0b3Is
IHRydWUsIFB1dFByb3BlcnR5U2xvdDo6UHV0QnlJZCk7Ci0gICAgICAgIGFzT2JqZWN0KGdlbmVy
YXRvciktPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5wdXQoYXNPYmplY3QoZ2VuZXJhdG9yKSwg
ZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLmdlbmVyYXRvckZyYW1lUHJpdmF0ZU5hbWUsIGZy
YW1lLCBzbG90KTsKLSAgICB9CisgICAgR2VuZXJhdG9yRnJhbWUqIGZyYW1lID0ganNDYXN0PEdl
bmVyYXRvckZyYW1lKj4oT1AoMSkuanNWYWx1ZSgpKTsKICAgICB1bnNpZ25lZCBsaXZlQ2FsbGVl
TG9jYWxzSW5kZXggPSBwY1syXS51LnVuc2lnbmVkVmFsdWU7CiAgICAgZnJhbWUtPnNhdmUoZXhl
YywgZXhlYy0+Y29kZUJsb2NrKCktPmxpdmVDYWxsZWVMb2NhbHNBdFlpZWxkKGxpdmVDYWxsZWVM
b2NhbHNJbmRleCkpOwogICAgIEVORCgpOwpAQCAtNzE3LDggKzcwNiw3IEBAIHN0YXRpYyB2b2lk
IHVwZGF0ZVJlc3VsdFByb2ZpbGVGb3JCaW5hcnlBcml0aE9wKEV4ZWNTdGF0ZSosIEluc3RydWN0
aW9uKiwgSlNWYWx1CiBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcmVzdW1lKQogewogICAgIEJF
R0lOKCk7Ci0gICAgSlNWYWx1ZSBnZW5lcmF0b3IgPSBPUCgxKS5qc1ZhbHVlKCk7Ci0gICAgR2Vu
ZXJhdG9yRnJhbWUqIGZyYW1lID0ganNDYXN0PEdlbmVyYXRvckZyYW1lKj4oZ2VuZXJhdG9yLmdl
dChleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuZ2VuZXJhdG9yRnJhbWVQcml2YXRlTmFtZSkp
OworICAgIEdlbmVyYXRvckZyYW1lKiBmcmFtZSA9IGpzQ2FzdDxHZW5lcmF0b3JGcmFtZSo+KE9Q
KDEpLmpzVmFsdWUoKSk7CiAgICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gcGNb
Ml0udS51bnNpZ25lZFZhbHVlOwogICAgIGZyYW1lLT5yZXN1bWUoZXhlYywgZXhlYy0+Y29kZUJs
b2NrKCktPmxpdmVDYWxsZWVMb2NhbHNBdFlpZWxkKGxpdmVDYWxsZWVMb2NhbHNJbmRleCkpOwog
ICAgIEVORCgpOwpAQCAtNzk3LDQgKzc4NSwxMiBAQCBzdGF0aWMgdm9pZCB1cGRhdGVSZXN1bHRQ
cm9maWxlRm9yQmluYXJ5QXJpdGhPcChFeGVjU3RhdGUqLCBJbnN0cnVjdGlvbiosIEpTVmFsdQog
ICAgIEVORCgpOwogfQogCitTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbmV3X2dlbmVyYXRvcl9m
cmFtZSkKK3sKKyAgICBCRUdJTigpOworICAgIHVuc2lnbmVkIGdlbmVyYXRvckxvY2Fsc1NpemUg
PSBwY1syXS51LnVuc2lnbmVkVmFsdWU7CisgICAgUkVUVVJOKEdlbmVyYXRvckZyYW1lOjpjcmVh
dGUoZXhlYywgZ2VuZXJhdG9yTG9jYWxzU2l6ZSkpOworfQorCisKIH0gLy8gbmFtZXNwYWNlIEpT
QwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1Bh
dGhzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaApp
bmRleCBmMDBkODcwNWQ0ZTY3ZmU0ZDQwNTliZGUxNjhlZTg4ZjU3ZGY3MmU3Li4wNjUwYzRlOGNi
NzE1NTkxN2NkMWQ3YTJmNzdhN2M3ZjcyOWExNTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaApAQCAtMjk2LDYgKzI5Niw3IEBAIGlubGlu
ZSB2b2lkIGRlY29kZVJlc3VsdChTbG93UGF0aFJldHVyblR5cGUgcmVzdWx0LCB2b2lkKiYgYSwg
dm9pZComIGIpCiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3B1c2hfd2l0aF9zY29w
ZSk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3Jlc29sdmVfc2NvcGUpOwogU0xP
V19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9jb3B5X3Jlc3QpOworU0xPV19QQVRIX0hJRERF
Tl9ERUNMKHNsb3dfcGF0aF9uZXdfZ2VuZXJhdG9yX2ZyYW1lKTsKIAogfSAvLyBuYW1lc3BhY2Ug
SlNDCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRv
ckZyYW1lLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZyYW1l
LmNwcAppbmRleCBlZjZlYTdhMTAwMjU4YzNlY2UwNGRhYWI0M2JkYWE4NTFlYzhmNzE1Li4wZGNi
NTE0YTQyMDk5OWZiZjU5ZGYxOGJkZGY1N2MzMGFkYTc5ZTkxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGcmFtZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJhbWUuY3BwCkBAIC0zMCwxNSArMzAsMTYg
QEAKICNpbmNsdWRlICJIZWFwSXRlcmF0aW9uU2NvcGUuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVl
SW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKKyNpbmNsdWRlICJKU09iamVj
dElubGluZXMuaCIKICNpbmNsdWRlICJTbG90VmlzaXRvcklubGluZXMuaCIKICNpbmNsdWRlICJT
dHJ1Y3R1cmVJbmxpbmVzLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCi1jb25zdCBDbGFzc0luZm8g
R2VuZXJhdG9yRnJhbWU6OnNfaW5mbyA9IHsgIkdlbmVyYXRvckZyYW1lIiwgbnVsbHB0ciwgbnVs
bHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShHZW5lcmF0b3JGcmFtZSkgfTsKK2NvbnN0IENsYXNz
SW5mbyBHZW5lcmF0b3JGcmFtZTo6c19pbmZvID0geyAiR2VuZXJhdG9yRnJhbWUiLCAmQmFzZTo6
c19pbmZvLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEdlbmVyYXRvckZyYW1lKSB9Owog
Ci1HZW5lcmF0b3JGcmFtZTo6R2VuZXJhdG9yRnJhbWUoVk0mIHZtLCBzaXplX3QgbnVtYmVyT2ZD
YWxsZWVMb2NhbHMpCi0gICAgOiBCYXNlKHZtLCB2bS5nZW5lcmF0b3JGcmFtZVN0cnVjdHVyZS5n
ZXQoKSkKK0dlbmVyYXRvckZyYW1lOjpHZW5lcmF0b3JGcmFtZShWTSYgdm0sIFN0cnVjdHVyZSog
c3RydWN0dXJlLCB1aW50MzJfdCBudW1iZXJPZkNhbGxlZUxvY2FscykKKyAgICA6IEJhc2Uodm0s
IHN0cnVjdHVyZSkKICAgICAsIG1fbnVtYmVyT2ZDYWxsZWVMb2NhbHMobnVtYmVyT2ZDYWxsZWVM
b2NhbHMpCiB7CiB9CkBAIC00NiwzMyArNDcsNDIgQEAKIHZvaWQgR2VuZXJhdG9yRnJhbWU6OmZp
bmlzaENyZWF0aW9uKFZNJiB2bSkKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7Cisg
ICAgSlNWYWx1ZSBlbXB0eVZhbHVlOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9udW1i
ZXJPZkNhbGxlZUxvY2FsczsgKytpKQotICAgICAgICBsb2NhbEF0KGkpLmNsZWFyKCk7CisgICAg
ICAgIGxvY2FsQXQoaSkuc2V0U3RhcnRpbmdWYWx1ZShlbXB0eVZhbHVlKTsKIH0KIAogU3RydWN0
dXJlKiBHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCiB7Ci0gICAgcmV0dXJuIFN0cnVj
dHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oQ2VsbFR5
cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVh
dGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1
Y3R1cmVGbGFncyksIGluZm8oKSk7CiB9CiAKLUdlbmVyYXRvckZyYW1lKiBHZW5lcmF0b3JGcmFt
ZTo6Y3JlYXRlKFZNJiB2bSwgc2l6ZV90IG51bWJlck9mTG9jYWxzKQorR2VuZXJhdG9yRnJhbWUq
IEdlbmVyYXRvckZyYW1lOjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgc2l6
ZV90IG51bWJlck9mQ2FsbGVlTG9jYWxzKQogewogICAgIEdlbmVyYXRvckZyYW1lKiByZXN1bHQg
PQogICAgICAgICBuZXcgKAogICAgICAgICAgICAgTm90TnVsbCwKLSAgICAgICAgICAgIGFsbG9j
YXRlQ2VsbDxHZW5lcmF0b3JGcmFtZT4odm0uaGVhcCwgYWxsb2NhdGlvblNpemVGb3JMb2NhbHMo
bnVtYmVyT2ZMb2NhbHMpKSkKLSAgICAgICAgR2VuZXJhdG9yRnJhbWUodm0sIG51bWJlck9mTG9j
YWxzKTsKKyAgICAgICAgICAgIGFsbG9jYXRlQ2VsbDxHZW5lcmF0b3JGcmFtZT4odm0uaGVhcCwg
YWxsb2NhdGlvblNpemVGb3JMb2NhbHMobnVtYmVyT2ZDYWxsZWVMb2NhbHMpKSkKKyAgICAgICAg
R2VuZXJhdG9yRnJhbWUodm0sIHN0cnVjdHVyZSwgbnVtYmVyT2ZDYWxsZWVMb2NhbHMpOwogICAg
IHJlc3VsdC0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK0dl
bmVyYXRvckZyYW1lKiBHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgc2l6
ZV90IG51bWJlck9mQ2FsbGVlTG9jYWxzKQoreworICAgIHJldHVybiBjcmVhdGUoZXhlYy0+dm0o
KSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5nZW5lcmF0b3JGcmFtZVN0cnVjdHVyZSgp
LCBudW1iZXJPZkNhbGxlZUxvY2Fscyk7Cit9CisKIHZvaWQgR2VuZXJhdG9yRnJhbWU6OnNhdmUo
RXhlY1N0YXRlKiBleGVjLCBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlQ2FsbGVlTG9jYWxzKQog
eworICAgIC8vIEFsbG9jYXRlIHRoZSBnZW5lcmF0b3IgbG9jYWwgc3BhY2UgZmlyc3QuCisgICAg
bV9udW1iZXJPZlNhdmVkQ2FsbGVlTG9jYWxzID0gbGl2ZUNhbGxlZUxvY2Fscy5iaXRDb3VudCgp
OworCiAgICAgLy8gT25seSBzYXZlIGNhbGxlZSBsb2NhbHMuCiAgICAgLy8gRXZlcnkgdGltZSBh
IGdlbmVyYXRvciBpcyBjYWxsZWQgKG9yIHJlc3VtZWQpLCBwYXJhbWV0ZXJzIHNob3VsZCBiZSBy
ZXBsYWNlZC4KLSAgICBBU1NFUlQobGl2ZUNhbGxlZUxvY2Fscy5udW1CaXRzKCkgPD0gbV9udW1i
ZXJPZkNhbGxlZUxvY2Fscyk7CisgICAgdW5zaWduZWQgZ2VuZXJhdG9yTG9jYWxJbmRleCA9IDA7
CiAgICAgbGl2ZUNhbGxlZUxvY2Fscy5mb3JFYWNoU2V0Qml0KFsmXShzaXplX3QgaW5kZXgpIHsK
LSAgICAgICAgbG9jYWxBdChpbmRleCkuc2V0KGV4ZWMtPnZtKCksIHRoaXMsIGV4ZWMtPnVuY2hl
Y2tlZFIodmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaW5kZXgpKS5qc1ZhbHVlKCkpOworICAgICAg
ICBsb2NhbEF0KGdlbmVyYXRvckxvY2FsSW5kZXgrKykuc2V0KGV4ZWMtPnZtKCksIHRoaXMsIGV4
ZWMtPnVuY2hlY2tlZFIodmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaW5kZXgpKS5qc1ZhbHVlKCkp
OwogICAgIH0pOwogfQogCkBAIC04MCwxMCArOTAsMTEgQEAgdm9pZCBHZW5lcmF0b3JGcmFtZTo6
cmVzdW1lKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZUNhbGxlZUxv
Y2EKIHsKICAgICAvLyBPbmx5IHJlc3VtZSBjYWxsZWUgbG9jYWxzLgogICAgIC8vIEV2ZXJ5IHRp
bWUgYSBnZW5lcmF0b3IgaXMgY2FsbGVkIChvciByZXN1bWVkKSwgcGFyYW1ldGVycyBzaG91bGQg
YmUgcmVwbGFjZWQuCisgICAgdW5zaWduZWQgZ2VuZXJhdG9yTG9jYWxJbmRleCA9IDA7CiAgICAg
bGl2ZUNhbGxlZUxvY2Fscy5mb3JFYWNoU2V0Qml0KFsmXShzaXplX3QgaW5kZXgpIHsKLSAgICAg
ICAgZXhlYy0+dW5jaGVja2VkUih2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChpbmRleCkpID0gbG9j
YWxBdChpbmRleCkuZ2V0KCk7Ci0gICAgICAgIGxvY2FsQXQoaW5kZXgpLmNsZWFyKCk7CisgICAg
ICAgIGV4ZWMtPnVuY2hlY2tlZFIodmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaW5kZXgpKSA9IGxv
Y2FsQXQoZ2VuZXJhdG9yTG9jYWxJbmRleCsrKS5nZXQoKTsKICAgICB9KTsKKyAgICBtX251bWJl
ck9mU2F2ZWRDYWxsZWVMb2NhbHMgPSAwOwogfQogCiB2b2lkIEdlbmVyYXRvckZyYW1lOjp2aXNp
dENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCkBAIC05MSw3ICsx
MDIsMTIgQEAgdm9pZCBHZW5lcmF0b3JGcmFtZTo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGws
IFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIEdlbmVyYXRvckZyYW1lKiB0aGlzT2JqZWN0ID0g
anNDYXN0PEdlbmVyYXRvckZyYW1lKj4oY2VsbCk7CiAgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0
aGlzT2JqZWN0LCB2aXNpdG9yKTsKICAgICAvLyBTaW5jZSBvbmx5IHRydWUgY2VsbCBwb2ludGVy
cyBhcmUgc3RvcmVkIGFzIGEgY2VsbCwgd2UgY2FuIHNhZmVseSBtYXJrIHRoZW0uCi0gICAgdmlz
aXRvci5hcHBlbmRWYWx1ZXModGhpc09iamVjdC0+bG9jYWxzKCksIHRoaXNPYmplY3QtPm1fbnVt
YmVyT2ZDYWxsZWVMb2NhbHMpOworICAgIHZpc2l0b3IuYXBwZW5kVmFsdWVzKHRoaXNPYmplY3Qt
PmxvY2FscygpLCB0aGlzT2JqZWN0LT5tX251bWJlck9mU2F2ZWRDYWxsZWVMb2NhbHMpOworICAg
IC8vIENsZWFyIG5vdCB1c2VkIGNhbGxlZSBsb2NhbHMgd2hlbiBtYXJraW5nLgorICAgIC8vIFRo
aXMgZW5zdXJlcyB0aGF0LCAiaWYgYSBnaXZlbiBsb2NhbCBoYXMgYSB2YWx1ZSwgdGhpcyB2YWx1
ZSBpcyBjb3JyZWN0bHkgbWFya2VkIGluIHRoZSBwcmV2aW91cyBtYXJraW5nIHBoYXNlIi4KKyAg
ICBzaXplX3QgdW51c2VkTG9jYWxzQ291bnQgPSB0aGlzT2JqZWN0LT5tX251bWJlck9mQ2FsbGVl
TG9jYWxzIC0gdGhpc09iamVjdC0+bV9udW1iZXJPZlNhdmVkQ2FsbGVlTG9jYWxzOworICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgdW51c2VkTG9jYWxzQ291bnQ7ICsraSkKKyAgICAgICAgdGhp
c09iamVjdC0+bG9jYWxBdCh0aGlzT2JqZWN0LT5tX251bWJlck9mU2F2ZWRDYWxsZWVMb2NhbHMg
KyBpKS5jbGVhcigpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZyYW1lLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGcmFtZS5oCmluZGV4IDNkNTQ1YjE0N2RkNGFiZmIy
YmJiOWI1YTcxOTRlOGY3NDg0MWM0OWEuLmNmMWRiN2EyYmVlNjBkYTI5NDY0ZWM0MTdhMGM1ZmI4
YzFmMGFlOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVy
YXRvckZyYW1lLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9y
RnJhbWUuaApAQCAtMjcsMTEgKzI3LDE0IEBACiAjZGVmaW5lIEdlbmVyYXRvckZyYW1lX2gKIAog
I2luY2x1ZGUgIkpTQ2VsbC5oIgorI2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAjaW5jbHVkZSA8d3Rm
L0Zhc3RCaXRWZWN0b3IuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKLWNsYXNzIEdlbmVyYXRvckZy
YW1lIDogcHVibGljIEpTQ2VsbCB7CitjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisKK2Ns
YXNzIEdlbmVyYXRvckZyYW1lIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogICAgIGZyaWVu
ZCBjbGFzcyBKSVQ7CiAjaWYgRU5BQkxFKERGR19KSVQpCiAgICAgZnJpZW5kIGNsYXNzIERGRzo6
U3BlY3VsYXRpdmVKSVQ7CkBAIC0zOSwxMiArNDIsMTIgQEAgY2xhc3MgR2VuZXJhdG9yRnJhbWUg
OiBwdWJsaWMgSlNDZWxsIHsKICNlbmRpZgogICAgIGZyaWVuZCBjbGFzcyBWTTsKIHB1YmxpYzoK
LSAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOwotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1
Y3R1cmVGbGFncyA9IFN0cnVjdHVyZUlzSW1tb3J0YWwgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsK
KyAgICB0eXBlZGVmIEpTTm9uRmluYWxPYmplY3QgQmFzZTsKIAogICAgIERFQ0xBUkVfRVhQT1JU
X0lORk87CiAKLSAgICBzdGF0aWMgR2VuZXJhdG9yRnJhbWUqIGNyZWF0ZShWTSYsIHNpemVfdCBu
dW1iZXJPZkNhbGxlZUxvY2Fscyk7CisgICAgc3RhdGljIEdlbmVyYXRvckZyYW1lKiBjcmVhdGUo
RXhlY1N0YXRlKiwgc2l6ZV90IG51bWJlck9mQ2FsbGVlTG9jYWxzKTsKKyAgICBzdGF0aWMgR2Vu
ZXJhdG9yRnJhbWUqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSosIHNpemVfdCBudW1iZXJPZkNhbGxl
ZUxvY2Fscyk7CiAKICAgICBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiBsb2NhbHMoKQogICAg
IHsKQEAgLTUzLDcgKzU2LDYgQEAgY2xhc3MgR2VuZXJhdG9yRnJhbWUgOiBwdWJsaWMgSlNDZWxs
IHsKIAogICAgIFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4mIGxvY2FsQXQoc2l6ZV90IGluZGV4
KQogICAgIHsKLSAgICAgICAgQVNTRVJUKGluZGV4IDwgbV9udW1iZXJPZkNhbGxlZUxvY2Fscyk7
CiAgICAgICAgIHJldHVybiBsb2NhbHMoKVtpbmRleF07CiAgICAgfQogCkBAIC02Miw2ICs2NCwy
MSBAQCBjbGFzcyBHZW5lcmF0b3JGcmFtZSA6IHB1YmxpYyBKU0NlbGwgewogICAgICAgICByZXR1
cm4gV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mPHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4p
PihzaXplb2YoR2VuZXJhdG9yRnJhbWUpKTsKICAgICB9CiAKKyAgICBzdGF0aWMgc2l6ZV90IGxv
Y2FsT2Zmc2V0KHVuc2lnbmVkIGluZGV4KQorICAgIHsKKyAgICAgICAgcmV0dXJuIG9mZnNldE9m
TG9jYWxzKCkgKyBpbmRleCAqIHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pOworICAgIH0K
KworICAgIHN0YXRpYyBzaXplX3QgbnVtYmVyT2ZDYWxsZWVMb2NhbHNPZmZzZXQoKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihHZW5lcmF0b3JGcmFtZSwgbV9udW1iZXJP
ZkNhbGxlZUxvY2Fscyk7CisgICAgfQorCisgICAgc3RhdGljIHNpemVfdCBudW1iZXJPZlNhdmVk
Q2FsbGVlTG9jYWxzT2Zmc2V0KCkKKyAgICB7CisgICAgICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VU
T0YoR2VuZXJhdG9yRnJhbWUsIG1fbnVtYmVyT2ZTYXZlZENhbGxlZUxvY2Fscyk7CisgICAgfQor
CiAgICAgc3RhdGljIHNpemVfdCBhbGxvY2F0aW9uU2l6ZUZvckxvY2Fscyh1bnNpZ25lZCBudW1i
ZXJPZkxvY2FscykKICAgICB7CiAgICAgICAgIHJldHVybiBvZmZzZXRPZkxvY2FscygpICsgbnVt
YmVyT2ZMb2NhbHMgKiBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KTsKQEAgLTczLDE2ICs5
MCwxNiBAQCBjbGFzcyBHZW5lcmF0b3JGcmFtZSA6IHB1YmxpYyBKU0NlbGwgewogICAgIHZvaWQg
cmVzdW1lKEV4ZWNTdGF0ZSosIGNvbnN0IEZhc3RCaXRWZWN0b3ImIGxpdmVDYWxsZWVMb2NhbHMp
OwogCiBwcml2YXRlOgotICAgIEdlbmVyYXRvckZyYW1lKFZNJiwgc2l6ZV90IG51bWJlck9mQ2Fs
bGVlTG9jYWxzKTsKKyAgICBHZW5lcmF0b3JGcmFtZShWTSYsIFN0cnVjdHVyZSosIHVpbnQzMl90
IG51bWJlck9mQ2FsbGVlTG9jYWxzKTsKIAotICAgIHNpemVfdCBtX251bWJlck9mQ2FsbGVlTG9j
YWxzOworICAgIHVpbnQzMl90IG1fbnVtYmVyT2ZDYWxsZWVMb2NhbHM7CisgICAgdWludDMyX3Qg
bV9udW1iZXJPZlNhdmVkQ2FsbGVlTG9jYWxzIHsgMCB9OwogCiAgICAgZnJpZW5kIGNsYXNzIExM
SW50T2Zmc2V0c0V4dHJhY3RvcjsKIAotICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKLQog
cHJvdGVjdGVkOgogICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZp
c2l0b3ImKTsKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmNwcAppbmRleCBiNmJhMjdjOTEyZGI1MGFhNGY5OWFjZTBmNmFkOWQwNmUzMDA2ZGY4Li5h
ZDg1N2Y4NzNiNDA5M2ZhZGMyZmUyYTNlZTI5NGJjZTVjODAwNDZkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC01MCw2ICs1MCw3
IEBACiAjaW5jbHVkZSAiRXJyb3JQcm90b3R5cGUuaCIKICNpbmNsdWRlICJGdW5jdGlvbkNvbnN0
cnVjdG9yLmgiCiAjaW5jbHVkZSAiRnVuY3Rpb25Qcm90b3R5cGUuaCIKKyNpbmNsdWRlICJHZW5l
cmF0b3JGcmFtZS5oIgogI2luY2x1ZGUgIkdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaCIK
ICNpbmNsdWRlICJHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkdlbmVy
YXRvclByb3RvdHlwZS5oIgpAQCAtMzg4LDYgKzM4OSw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6
OmluaXQoVk0mIHZtKQogICAgIAogICAgIEZPUl9FQUNIX0JVSUxUSU5fREVSSVZFRF9JVEVSQVRP
Ul9UWVBFKENSRUFURV9QUk9UT1RZUEVfRk9SX0RFUklWRURfSVRFUkFUT1JfVFlQRSkKICAgICBt
X3Byb3BlcnR5TmFtZUl0ZXJhdG9yU3RydWN0dXJlLnNldCh2bSwgdGhpcywgSlNQcm9wZXJ0eU5h
bWVJdGVyYXRvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2l0ZXJhdG9yUHJvdG90eXBl
LmdldCgpKSk7CisgICAgbV9nZW5lcmF0b3JGcmFtZVN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIEdl
bmVyYXRvckZyYW1lOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIGpzTnVsbCgpKSk7CiAgICAg
bV9nZW5lcmF0b3JQcm90b3R5cGUuc2V0KHZtLCB0aGlzLCBHZW5lcmF0b3JQcm90b3R5cGU6OmNy
ZWF0ZSh2bSwgdGhpcywgR2VuZXJhdG9yUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRo
aXMsIG1faXRlcmF0b3JQcm90b3R5cGUuZ2V0KCkpKSk7CiAgICAgCiAjdW5kZWYgQ1JFQVRFX1BS
T1RPVFlQRV9GT1JfREVSSVZFRF9JVEVSQVRPUl9UWVBFCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCBiNGZmMmZiNDEzZTBlNDQ2MjQ5MmE0
OGEzZmQ1YTRjMjRlYTBiNzQxLi43MWQzOWVjOTI4M2FkOWU1OTAxMjQ0ZjAxMzZhMTM1OGY1NDRh
OTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmgKQEAgLTI1NSw2ICsyNTUsNyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1Nl
Z21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2Nh
bGxiYWNrRnVuY3Rpb25TdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9j
YWxsYmFja09iamVjdFN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3By
b3BlcnR5TmFtZUl0ZXJhdG9yU3RydWN0dXJlOworICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+
IG1fZ2VuZXJhdG9yRnJhbWVTdHJ1Y3R1cmU7CiAjaWYgSlNDX09CSkNfQVBJX0VOQUJMRUQKICAg
ICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX29iamNDYWxsYmFja0Z1bmN0aW9uU3RydWN0dXJl
OwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fb2JqY1dyYXBwZXJPYmplY3RTdHJ1Y3R1
cmU7CkBAIC01MDEsNiArNTAyLDcgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNT
ZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgU3RydWN0dXJlKiBjYWxsYmFja0Z1bmN0aW9u
U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9jYWxsYmFja0Z1bmN0aW9uU3RydWN0dXJlLmdl
dCgpOyB9CiAgICAgU3RydWN0dXJlKiBjYWxsYmFja09iamVjdFN0cnVjdHVyZSgpIGNvbnN0IHsg
cmV0dXJuIG1fY2FsbGJhY2tPYmplY3RTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUq
IHByb3BlcnR5TmFtZUl0ZXJhdG9yU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9wcm9wZXJ0
eU5hbWVJdGVyYXRvclN0cnVjdHVyZS5nZXQoKTsgfQorICAgIFN0cnVjdHVyZSogZ2VuZXJhdG9y
RnJhbWVTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2dlbmVyYXRvckZyYW1lU3RydWN0dXJl
LmdldCgpOyB9CiAjaWYgSlNDX09CSkNfQVBJX0VOQUJMRUQKICAgICBTdHJ1Y3R1cmUqIG9iamND
YWxsYmFja0Z1bmN0aW9uU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9vYmpjQ2FsbGJhY2tG
dW5jdGlvblN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogb2JqY1dyYXBwZXJPYmpl
Y3RTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX29iamNXcmFwcGVyT2JqZWN0U3RydWN0dXJl
LmdldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXggMGU0NGMzNDYw
ZjlmOGYwZGNiMzVkOTEyZDc5NWY3Zjk4ZGZiN2Y0NS4uMGVmMjVlNzI5YWE2ZTU1YzNkY2EwNjFj
MjJiNjVhYTZmN2I1YjM0ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAt
MjQ2LDcgKzI0Niw2IEBAIHN0YXRpYyBib29sIGVuYWJsZUFzc2VtYmxlcihFeGVjdXRhYmxlQWxs
b2NhdG9yJiBleGVjdXRhYmxlQWxsb2NhdG9yKQogICAgIGluZmVycmVkVHlwZVN0cnVjdHVyZS5z
ZXQoKnRoaXMsIEluZmVycmVkVHlwZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwo
KSkpOwogICAgIGluZmVycmVkVHlwZVRhYmxlU3RydWN0dXJlLnNldCgqdGhpcywgSW5mZXJyZWRU
eXBlVGFibGU6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICBmdW5j
dGlvblJhcmVEYXRhU3RydWN0dXJlLnNldCgqdGhpcywgRnVuY3Rpb25SYXJlRGF0YTo6Y3JlYXRl
U3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwotICAgIGdlbmVyYXRvckZyYW1lU3RydWN0
dXJlLnNldCgqdGhpcywgR2VuZXJhdG9yRnJhbWU6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwg
anNOdWxsKCkpKTsKICAgICBleGNlcHRpb25TdHJ1Y3R1cmUuc2V0KCp0aGlzLCBFeGNlcHRpb246
OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICBwcm9taXNlRGVmZXJy
ZWRTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBKU1Byb21pc2VEZWZlcnJlZDo6Y3JlYXRlU3RydWN0dXJl
KCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIGludGVybmFsUHJvbWlzZURlZmVycmVkU3RydWN0
dXJlLnNldCgqdGhpcywgSlNJbnRlcm5hbFByb21pc2VEZWZlcnJlZDo6Y3JlYXRlU3RydWN0dXJl
KCp0aGlzLCAwLCBqc051bGwoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVk0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKaW5kZXgg
YWVlMGFjMWYyMWI4NDUxYmM3NzY3NDQzYTBiMDVjYTA0OGI0ZjQ5Yi4uMjM2MDgzNzBhOTgzNmQ4
OTc3ZTQ5ZDcxZTY4YTgwOWI5YWM0NTM2MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVk0uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5o
CkBAIC0zMTIsNyArMzEyLDYgQEAgY2xhc3MgVk0gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50
ZWQ8Vk0+IHsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBpbmZlcnJlZFR5cGVTdHJ1Y3R1cmU7CiAg
ICAgU3Ryb25nPFN0cnVjdHVyZT4gaW5mZXJyZWRUeXBlVGFibGVTdHJ1Y3R1cmU7CiAgICAgU3Ry
b25nPFN0cnVjdHVyZT4gZnVuY3Rpb25SYXJlRGF0YVN0cnVjdHVyZTsKLSAgICBTdHJvbmc8U3Ry
dWN0dXJlPiBnZW5lcmF0b3JGcmFtZVN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBl
eGNlcHRpb25TdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gcHJvbWlzZURlZmVycmVk
U3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGludGVybmFsUHJvbWlzZURlZmVycmVk
U3RydWN0dXJlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVz
cy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQtYXJyYXkuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLWFuZC1hcnJheS5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5m
ZTkzOTgxMmZkYmFlYzZiODMyYmZkMDBmMjE1M2RlZjg0YmI3NTkyCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC1h
bmQtYXJyYXkuanMKQEAgLTAsMCArMSwyMyBAQAorKGZ1bmN0aW9uICgpIHsKKyAgICBmdW5jdGlv
biAqZmliKCkKKyAgICB7CisgICAgICAgIGxldCBhID0gMTsKKyAgICAgICAgbGV0IGIgPSAxOwor
ICAgICAgICBsZXQgYyA9IFsgMCBdOworICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICAg
ICAgY1swXSA9IGE7CisgICAgICAgICAgICB5aWVsZCBjOworICAgICAgICAgICAgW2EsIGJdID0g
W2IsIGEgKyBiXTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGxldCB2YWx1ZSA9IDA7CisgICAg
Zm9yIChsZXQgaSA9IDA7IGkgPCAxZTQ7ICsraSkgeworICAgICAgICBsZXQgZiA9IGZpYigpOwor
ICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDsgKytpKSB7CisgICAgICAgICAgICB2YWx1
ZSA9IGYubmV4dCgpLnZhbHVlOworICAgICAgICB9CisgICAgICAgIGlmICh2YWx1ZVswXSAhPT0g
MzU0MjI0ODQ4MTc5MjYyMDAwMDAwKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQg
dmFsdWU6JHtyZXN1bHR9YCk7CisgICAgfQorfSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwtYW5kLW9iamVjdC5qcyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwtYW5k
LW9iamVjdC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NjczNDBmMmVhNGM3NDM4YTJkMjA5YWE0MGQwNjc3ZTRh
YjdkM2ZiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0
cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQtb2JqZWN0LmpzCkBAIC0wLDAgKzEsMjMgQEAKKyhm
dW5jdGlvbiAoKSB7CisgICAgZnVuY3Rpb24gKmZpYigpCisgICAgeworICAgICAgICBsZXQgYSA9
IDE7CisgICAgICAgIGxldCBiID0gMTsKKyAgICAgICAgbGV0IGMgPSB7IGZpYjogMCB9OworICAg
ICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAgYy5maWIgPSBhOworICAgICAgICAgICAg
eWllbGQgYzsKKyAgICAgICAgICAgIFthLCBiXSA9IFtiLCBhICsgYl07CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICBsZXQgdmFsdWUgPSAwOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMWU0OyAr
K2kpIHsKKyAgICAgICAgbGV0IGYgPSBmaWIoKTsKKyAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkg
PCAxMDA7ICsraSkgeworICAgICAgICAgICAgdmFsdWUgPSBmLm5leHQoKS52YWx1ZTsKKyAgICAg
ICAgfQorICAgICAgICBpZiAodmFsdWUuZmliICE9PSAzNTQyMjQ4NDgxNzkyNjIwMDAwMDApCisg
ICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCB2YWx1ZToke3Jlc3VsdH1gKTsKKyAgICB9
Cit9KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9n
ZW5lcmF0b3ItZmliLWZ0bC1hbmQtc3RyaW5nLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQtc3RyaW5nLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQz
OGFlNmFiMzM0NzA0NjgyMjg0OWY0MzAwNGVhNWM0MDNlZWRhMjgKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLWFu
ZC1zdHJpbmcuanMKQEAgLTAsMCArMSwyMiBAQAorKGZ1bmN0aW9uICgpIHsKKyAgICBmdW5jdGlv
biAqZmliKCkKKyAgICB7CisgICAgICAgIGxldCBhID0gMTsKKyAgICAgICAgbGV0IGIgPSAxOwor
ICAgICAgICBsZXQgYyA9ICJSZXN1bHQhICI7CisgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAg
ICAgICAgICB5aWVsZCBjICsgYTsKKyAgICAgICAgICAgIFthLCBiXSA9IFtiLCBhICsgYl07Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQgdmFsdWUgPSAwOworICAgIGZvciAobGV0IGkgPSAw
OyBpIDwgMWU0OyArK2kpIHsKKyAgICAgICAgbGV0IGYgPSBmaWIoKTsKKyAgICAgICAgZm9yIChs
ZXQgaSA9IDA7IGkgPCAxMDA7ICsraSkgeworICAgICAgICAgICAgdmFsdWUgPSBmLm5leHQoKS52
YWx1ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAodmFsdWUgIT09IGBSZXN1bHQhIDM1NDIyNDg0
ODE3OTI2MjAwMDAwMGApCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCB2YWx1ZTok
e3Jlc3VsdH1gKTsKKyAgICB9Cit9KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzQwZTMz
ZGJjODY4YmVhN2E4OTNjOWVjMTZiNzc5ZWMyNmJkYjE5YwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwuanMKQEAg
LTAsMCArMSwyMSBAQAorKGZ1bmN0aW9uICgpIHsKKyAgICBmdW5jdGlvbiAqZmliKCkKKyAgICB7
CisgICAgICAgIGxldCBhID0gMTsKKyAgICAgICAgbGV0IGIgPSAxOworICAgICAgICB3aGlsZSAo
dHJ1ZSkgeworICAgICAgICAgICAgeWllbGQgYTsKKyAgICAgICAgICAgIFthLCBiXSA9IFtiLCBh
ICsgYl07CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQgdmFsdWUgPSAwOworICAgIGZvciAo
bGV0IGkgPSAwOyBpIDwgMWU0OyArK2kpIHsKKyAgICAgICAgbGV0IGYgPSBmaWIoKTsKKyAgICAg
ICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDA7ICsraSkgeworICAgICAgICAgICAgdmFsdWUgPSBm
Lm5leHQoKS52YWx1ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAodmFsdWUgIT09IDM1NDIyNDg0
ODE3OTI2MjAwMDAwMCkKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIHZhbHVlOiR7
cmVzdWx0fWApOworICAgIH0KK30oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1mcmFtZS1lbXB0eS5qcyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZyYW1lLWVtcHR5LmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjU5ZTg4NTViZmFjM2M1NmRmOTI2YWJkNDI4YzAxM2MzMzQxNjI3NDYKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1mcmFtZS1l
bXB0eS5qcwpAQCAtMCwwICsxLDM0IEBACitmdW5jdGlvbiBzaG91bGRUaHJvdyhmdW5jLCBlcnJv
ck1lc3NhZ2UpIHsKKyAgICB2YXIgZXJyb3JUaHJvd24gPSBmYWxzZTsKKyAgICB2YXIgZXJyb3Ig
PSBudWxsOworICAgIHRyeSB7CisgICAgICAgIGZ1bmMoKTsKKyAgICB9IGNhdGNoIChlKSB7Cisg
ICAgICAgIGVycm9yVGhyb3duID0gdHJ1ZTsKKyAgICAgICAgZXJyb3IgPSBlOworICAgIH0KKyAg
ICBpZiAoIWVycm9yVGhyb3duKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ25vdCB0aHJvd24n
KTsKKyAgICBpZiAoU3RyaW5nKGVycm9yKSAhPT0gZXJyb3JNZXNzYWdlKQorICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoYGJhZCBlcnJvcjogJHtTdHJpbmcoZXJyb3IpfWApOworfQorCitzaG91bGRU
aHJvdyhmdW5jdGlvbiAoKSB7CisgICAgZnVuY3Rpb24gKmZpYihmbGFnKQorICAgIHsKKyAgICAg
ICAgbGV0IGEgPSAxOworICAgICAgICBsZXQgYiA9IDE7CisgICAgICAgIHlpZWxkIDQyOworICAg
ICAgICBpZiAoZmxhZykKKyAgICAgICAgICAgIHJldHVybiBjOworICAgICAgICBsZXQgYyA9IDUw
MDsKKyAgICB9CisKKyAgICBsZXQgdmFsdWUgPSAwOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwg
MWU0OyArK2kpIHsKKyAgICAgICAgZm9yIChsZXQgdiBvZiBmaWIoZmFsc2UpKSB7CisgICAgICAg
IH0KKyAgICB9CisgICAgZm9yIChsZXQgdiBvZiBmaWIodHJ1ZSkpIHsKKyAgICB9Cit9LCBgUmVm
ZXJlbmNlRXJyb3I6IENhbm5vdCBhY2Nlc3MgdW5pbml0aWFsaXplZCB2YXJpYWJsZS5gKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>269434</attachid>
            <date>2016-01-20 22:53:56 -0800</date>
            <delta_ts>2016-04-27 21:23:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-152723-20160121155328.patch</filename>
            <type>text/plain</type>
            <size>131211</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk1MTgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
ODE1ZGZkYjIxZDMwMzQwODAxNDAzYzkwMWJhMDkwMGIxMDVmMzZlLi40YWJjOTNkNDY5MTRhZTZj
MTViOTFjMmE3MTU5ZTcyNjMxN2JmMWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMzMgQEAKKzIwMTYtMDEtMjAgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgQ3JlYXRlIEdlbmVyYXRvckZyYW1lIHdpdGggdGhlIGJ5dGVjb2Rl
IG9wX25ld19nZW5lcmF0b3JfZnJhbWUgYW5kIG1ha2Ugb3Bfc2F2ZSAvIG9wX3Jlc3VtZSBERkcv
RlRMIGNhcGFibGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1MjcyMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRoaXMgcGF0Y2ggaXMgYW4gaW5pdGlhbCBhdHRlbXB0IHRvIGltcGxlbWVudCBERkcgYW5k
IEZUTCBjYXBhYmxlIEVTNiBnZW5lcmF0b3JzLgorICAgICAgICBXZSBpbnRyb2R1Y2UgdGhlIHNl
dmVyYWwgYnl0ZWNvZGVzIGFuZCBjb21waWxlIHRoZW0gaW4gREZHIC8gRlRMLgorCisgICAgICAg
IC0gb3BfbmV3X2dlbmVyYXRvcl9mcmFtZQorCisgICAgICAgICAgICBBbGxvY2F0ZSBHZW5lcmF0
b3JGcmFtZSBpbiB0aGUgYnl0ZWNvZGUgaW5zdGVhZCBvZiBhbGxvY2F0aW5nIGl0IGluIHRoZSBv
cF9zYXZlLgorCisgICAgICAgIC0gb3Bfc2F2ZQorCisgICAgICAgICAgICBOb3cgQnl0ZWNvZGVM
aXZlbmVzcyBhbmFseXNpcyBhbmQgUHJlY2lzZUp1bXBUYXJnZXQgYW5hbHlzaXMgaGF2ZSAyIG1v
ZGVzOyBTdGFuZGFyZCBhbmQgRXh0cmFjdEdlbmVyYXRvckxpdmVDYWxsZWVMb2NhbHMuCisgICAg
ICAgICAgICBVbmRlciBFeHRyYWN0R2VuZXJhdG9yTGl2ZUNhbGxlZUxvY2FscyBtb2RlLCBvcF9z
YXZlIGhhcyBqdW1wIHRvIHRoZSBtZXJnZSBwb2ludC4gVGhpcyBqdW1wIGlzIGp1c3QgdXNlZCBm
b3IgdXNlLWRlZiBhbmFseXNpcyB0byBleHRyYWN0CisgICAgICAgICAgICBsaXZlIGNhbGxlZSBs
b2NhbHMgYXQgdGhlIG1lcmdlIHBvaW50LiBUaGVzZSBsaXZlIGNhbGxlZSBsb2NhbHMgc2hvdWxk
IGJlIHNhdmVkIGFuZCByZXN1bWVkIHRvIHN1c3BlbmQgYW5kIHJlc3VtZSBnZW5lcmF0b3JzLgor
ICAgICAgICAgICAgVGhlIG1lcmdlIHBvaW50IGlzIHRoZSBwb2ludCB0aGF0IG1lcmdpbmcgdGhl
IDIgYmFzaWMgYmxvY2tzLCBzYXZpbmcgbG9jYWxzIHRvIHRoZSBnZW5lcmF0b3IgZnJhbWUgYW5k
IHJlc3VtaW5nIGxvY2FscyBmcm9tIHRoZSBnZW5lcmF0b3IgZnJhbWUuCisKKyAgICAgICAgLSBv
cF9yZXN1bWUKKworICAgICAgICAgICAgVGhpcyByZXRyaWV2ZXMgbG9jYWwgdmFyaWFibGUgZnJv
bSB0aGUgZ2VuZXJhdG9yIGZyYW1lLiBFeHRyYWN0R2VuZXJhdG9yTGl2ZUNhbGxlZUxvY2FscyBh
bmFseXNpcyB3aWxsIGRpc2NvdmVyIGxpdmUgbG9jYWxzIGF0IHRoZSBtZXJnZSBwb2ludCBhbmQg
cmVjb3JkIGxpdmVuZXNzCisgICAgICAgICAgICBpbmZvcm1hdGlvbiB0byBvcF9zYXZlIGFuZCBv
cF9yZXN1bWUuIE9uIHRoZSBiYXNpcyBvZiB0aGlzIGluZm9ybWF0aW9uLCBvcF9yZXN1bWUgd2ls
bCByZXRyaWV2ZSBzYXZlZCBsb2NhbHMgZnJvbSB0aGUgZ2VuZXJhdG9yIGZyYW1lLgorCisgICAg
ICAgIEhlcmUsIHdlIGV4cGxhaW4gYWJvdXQgaG93IHRvIHByZXByb2Nlc3MgYnl0ZWNvZGVzLgor
ICAgICAgICBGaXJzdCwgd2UgZW1pdCBvcF9zYXZlLCBvcF9yZXN1bWUgYW5kIHBlcmZvcm0gRXh0
cmFjdEdlbmVyYXRvckxpdmVDYWxsZWVMb2NhbHMgYW5hbHlzaXMuCisKKyAgICAgICAgW2VudHJ5
XSAtKy0tPiBbc2F2ZSBibG9ja10gLT4gb3Bfc2F2ZSAoaXQgaXMgYnJhbmNoaW5nIGJ5dGVjb2Rl
KSAtLS0tLS0+IFttZXJnZSBibG9ja10gLT4gLi4uCisgICAgICAgICAgICAgICAgIHwgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIF4KKyAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICArLT4gb3BfcmV0ICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgICAgICAr
LS0tLS0tLS0tLS0tLS0tLS0tPiBvcF9yZXN1bWUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0rCisKKyAgICAgICAgVGhlbiwgZGlzY292ZXIgbGl2ZSBsb2NhbHMgaW5mb3Jt
YXRpb24gKGFzIEZhc3RCaXRWZWN0b3IpIGF0IHRoZSBtZXJnZSBwb2ludCBhbmQgc3RvcmUgaXQg
dG8gY29ycmVzcG9uZGluZyBvcF9zYXZlIGFuZCBvcF9yZXN1bWUuCisgICAgICAgIEFmdGVyIHRo
YXQsIHVuZGVyIFN0YW5kYXJkIGFuYWx5c2lzIG1vZGUsIHRoZSBhYm92ZSBieXRlY29kZSBzdHJl
YW0gd2lsbCBjb25zdHJ1Y3QgdGhlIGZvbGxvd2luZyBDRkcuCisgICAgICAgIEluIHRoZSBmb2xs
b3dpbmcgQ0ZHLCBvcF9zYXZlIG5vIGxvbmdlciBoYXMganVtcCB0byB0aGUgbWVyZ2UgcG9pbnQu
IFRoZSByZW1vdmVkIGp1bXAgZWRnZSB3YXMganVzdCB1c2VkIHRvIGNhbGN1bGF0ZSBsaXZlbmVz
cyBpbmZvcm1hdGlvbiBhdCB0aGUgbWVyZ2UgcG9pbnQuCisKKyAgICAgICAgW2VudHJ5XSAtKy0t
PiBbc2F2ZSBibG9ja10gLT4gb3Bfc2F2ZSAtPiBvcF9yZXQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKy0+IFttZXJnZSBibG9ja10gLT4gLi4uCisgICAgICAgICAgICAgICAgIHwgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHwKKyAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgICAg
ICArLS0tLS0tLS0tLS0tLS0tLS0tPiBvcF9yZXN1bWUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0rCisKKyAgICAgICAgQW5kIHdlIGludHJvZHVjZXMgc2V2ZXJhbCBERkcg
bm9kZXMuCisKKyAgICAgICAgLSBOZXdHZW5lcmF0b3JGcmFtZQorCisgICAgICAgICAgICBUaGlz
IGp1c3QgYWxsb2NhdGVzIEdlbmVyYXRvckZyYW1lLgorCisgICAgICAgIC0gUmVzaXplR2VuZXJh
dG9yTG9jYWxzCisKKyAgICAgICAgICAgIFRoaXMgc2V0IEdlbmVyYXRvckZyYW1lOjptX251bWJl
ck9mU2F2ZWRDYWxsZWVMb2NhbHMgKk4qLiBUaGlzIG5vZGUgaXMgdXNlZCB0byAoMSkgYWxsb2Nh
dGUgc3BhY2UgZm9yIGxvY2FscyBpbiBHZW5lcmF0b3JGcmFtZSBhbmQgKDIpIGRlYWxsb2NhdGUg
c3BhY2UgaW4KKyAgICAgICAgICAgIEdlbmVyYXRvckZyYW1lIGJ5IHNldHRpbmcgaXQgYXMgMC4K
KworICAgICAgICAtIEdldEdlbmVyYXRvckxvY2FsCisKKyAgICAgICAgICAgIEdldCBhIHNhdmVk
IGxvY2FsIHZhcmlhYmxlIGZyb20gYSBnZW5lcmF0b3IgZnJhbWUuIEdldEdlbmVyYXRvckxvY2Fs
IGFuZCBTZXRHZW5lcmF0b3JMb2NhbCBhcmUgbGlua2VkIHdpdGggR2VuZXJhdG9yTG9jYWxEYXRh
LiBTbyB0eXBlIHByZWRpY2F0aW9uIGFuZCBmbGFncworICAgICAgICAgICAgYXJlIGNvcnJlY3Rs
eSBwcm9wYWdhdGVkIGJleW9uZCB0aGUgZ2VuZXJhdG9yIGZyYW1lLgorCisgICAgICAgIC0gU2V0
R2VuZXJhdG9yTG9jYWwKKworICAgICAgICAgICAgU3RvcmUgYSBsb2NhbCB2YXJpYWJsZSB0byBh
IGdlbmVyYXRvciBmcmFtZS4KKworICAgICAgICBGdXR1cmUgcGxhbnMgYXJlIHRoZSBmb2xsb3dp
bmdzLgorCisgICAgICAgIDEuIFN1cHBvcnQgdHJhbnNmZXJyaW5nIEFic3RyYWN0VmFsdWUgYmV0
d2VlbiBTZXRHZW5lcmF0b3JMb2NhbCBhbmQgR2V0R2VuZXJhdG9yTG9jYWwuIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTMxODMKKworICAgICAgICAyLiBDcmVhdGUg
SlNHZW5lcmF0b3IgYW5kIGFsbG9jYXRlIGl0IGluIHRoZSBnZW5lcmF0b3Igd3JhcHBlciBmdW5j
dGlvbi4gVGhpcyBzaG91bGQgYmUgY29tcGlsZWQgaW4gREZHIC8gRlRMIGFuZAorICAgICAgICB0
aGlzIG9iamVjdCBzaG91bGQgYmUgdHJhY2tlZCAoYnkgZXNjYXBlIGFuYWx5c2lzKSBhbmQgZWxp
bWluYXRlZCBpZiBwb3NzaWJsZSBieSBvYmplY3QgYWxsb2NhdGlvbiBlbGltaW5hdGlvbi4KKwor
ICAgICAgICAzLiBBbmQgb25jZSB3ZSBleHBsb2l0IHRoYXQgR2VuZXJhdG9yRnJhbWUgaXMgbm90
IGVzY2FwZWQgZnJvbSB0aGUgZ2l2ZW4gRlRMLWVkIGZ1bmN0aW9uLCB3ZSB3aWxsIGVsaW1pbmF0
ZSBHZW5lcmF0b3JGcmFtZSBhbGxvY2F0aW9uIGFuZAorICAgICAgICBjb252ZXJ0IEdlbmVyYXRv
ckxvY2FsIG9wZXJhdGlvbnMgaW50byBnZXQvc2V0IGxvY2FsIG9wZXJhdGlvbnMuCisKKyAgICAg
ICAgKiBKYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2o6CisgICAg
ICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRl
cnM6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiBidWlsdGlucy9HZW5lcmF0b3JQcm90b3R5cGUuanM6CisgICAgICAgIChnZW5l
cmF0b3JSZXN1bWUpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5jcHA6
CisgICAgICAgIChKU0M6OmlzQnJhbmNoKToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZUJ5dGVjb2Rl
QmFzaWNCbG9ja3MpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5oOgor
ICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uOgorICAgICAgICAqIGJ5dGVjb2Rl
L0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlTGl2
ZW5lc3NBbmFseXNpczo6Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzKToKKyAgICAgICAgKEpTQzo6
c3RlcE92ZXJJbnN0cnVjdGlvbik6CisgICAgICAgIChKU0M6OmNvbXB1dGVMb2NhbExpdmVuZXNz
Rm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpjb21wdXRlTG9jYWxMaXZlbmVzc0Zv
ckJsb2NrKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpydW5MaXZl
bmVzc0ZpeHBvaW50KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpn
ZXRMaXZlbmVzc0luZm9BdEJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVM
aXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlRnVsbExpdmVuZXNzKToKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlS2lsbHMpOgorICAgICAgICAoSlNDOjpCeXRl
Y29kZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGUpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVj
b2RlTGl2ZW5lc3NBbmFseXNpcy5oOgorICAgICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzQW5h
bHlzaXM6OmJ5dGVjb2RlQW5hbHlzaXNNb2RlKToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29k
ZVVzZURlZi5oOgorICAgICAgICAoSlNDOjpjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KToK
KyAgICAgICAgKEpTQzo6Y29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgICog
Ynl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wQnl0
ZWNvZGUpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKToKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjp2YWxpZGF0ZSk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJs
b2NrLmg6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bGl2ZW5lc3NBbmFseXNpcyk6CisgICAg
ICAgICogYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmNwcDoKKyAgICAgICAgKEpTQzo6Z2V0
SnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OmNvbXB1dGVQcmVj
aXNlSnVtcFRhcmdldHMpOgorICAgICAgICAoSlNDOjpmaW5kSnVtcFRhcmdldHNGb3JCeXRlY29k
ZU9mZnNldCk6CisgICAgICAgICogYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmg6CisgICAg
ICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdHZW5lcmF0b3JGcmFtZSk6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0U2F2ZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0UmVzdW1lKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuaDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRvckZyYW1lUmVn
aXN0ZXIpOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEhlYXAuaDoKKyAgICAgICAgKiBkZmcv
REZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0
cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAg
ICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0
ZUNvZGVQYXJzZXI6Om5ld0dlbmVyYXRvckxvY2FsRGF0YSk6CisgICAgICAgIChKU0M6OkRGRzo6
Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2Rl
UGFyc2VyOjpwYXJzZUNvZGVCbG9jayk6CisgICAgICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6Y2FwYWJpbGl0eUxldmVsKToKKyAgICAgICAgKiBkZmcv
REZHQ2xvYmJlcml6ZS5oOgorICAgICAgICAoSlNDOjpERkc6OmNsb2JiZXJpemUpOgorICAgICAg
ICAqIGRmZy9ERkdDbG9iYmVyc0V4aXRTdGF0ZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Y2xv
YmJlcnNFeGl0U3RhdGUpOgorICAgICAgICAqIGRmZy9ERkdEb2VzR0MuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OmRvZXNHQyk6CisgICAgICAgICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwTm9kZSk6CisgICAgICAgICogZGZnL0RG
R0dlbmVyYXRvckxvY2FsRGF0YS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmguCisgICAgICAgIChKU0M6OkRGRzo6R2VuZXJh
dG9yTG9jYWxEYXRhOjpwcmVkaWN0KToKKyAgICAgICAgKEpTQzo6REZHOjpHZW5lcmF0b3JMb2Nh
bERhdGE6OnByZWRpY3Rpb24pOgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5oOgorICAgICAgICAq
IGRmZy9ERkdNYXlFeGl0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjptYXlFeGl0KToKKyAgICAg
ICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc0dlbmVyYXRv
ckxvY2Fsc1NpemUpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmdlbmVyYXRvckxvY2Fsc1Np
emUpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc0dlbmVyYXRvckxvY2FsSW5kZXgpOgor
ICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmdlbmVyYXRvckxvY2FsSW5kZXgpOgorICAgICAgICAo
SlNDOjpERkc6Ok5vZGU6Omhhc0dlbmVyYXRvckxvY2FsRGF0YSk6CisgICAgICAgIChKU0M6OkRG
Rzo6Tm9kZTo6Z2VuZXJhdG9yTG9jYWxEYXRhKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpo
YXNHZW5lcmF0b3JGcmFtZUxvY2Fscyk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6Z2VuZXJh
dG9yRnJhbWVMb2NhbHMpOgorICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAq
IGRmZy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5oOgor
ICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2U6OnByb3BhZ2F0ZSk6CisgICAg
ICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpzYWZlVG9F
eGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3R2VuZXJhdG9yRnJhbWUpOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUmVzaXplR2VuZXJhdG9yTG9j
YWxzKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKiBkZmcv
REZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICog
ZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZH
U3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlN0cnVj
dHVyZVJlZ2lzdHJhdGlvblBoYXNlOjpydW4pOgorICAgICAgICAqIGZ0bC9GVExBYnN0cmFjdEhl
YXBSZXBvc2l0b3J5LmNwcDoKKyAgICAgICAgKiBmdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9y
eS5oOgorICAgICAgICAqIGZ0bC9GVExDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpG
VEw6OmNhbkNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvTExWTS5jcHA6Cisg
ICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZU5vZGUpOgorICAg
ICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVSZXNpemVHZW5lcmF0
b3JMb2NhbHMpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0xMVk06OmNvbXBp
bGVTZXRHZW5lcmF0b3JMb2NhbCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
TExWTTo6Y29tcGlsZUdldEdlbmVyYXRvckxvY2FsKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6
Okxvd2VyREZHVG9MTFZNOjpjb21waWxlTmV3R2VuZXJhdG9yRnJhbWUpOgorICAgICAgICAqIGpp
dC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MpOgor
ICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUT3Bjb2Rlcy5jcHA6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9zYXZlKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29w
X3Jlc3VtZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9uZXdfZ2VuZXJhdG9yX2ZyYW1l
KToKKyAgICAgICAgKiBqaXQvSklUT3Bjb2RlczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX3NhdmUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcmVzdW1lKToKKyAg
ICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRXcml0ZUJhcnJpZXIpOgorICAgICAgICAqIGxsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5j
cHA6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc206CisgICAgICAgICog
cGFyc2VyL1BhcnNlci5jcHA6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJz
ZUlubmVyKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlR2VuZXJhdG9y
RnVuY3Rpb25Tb3VyY2VFbGVtZW50cyk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+
OjpjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmg6
CisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpT
TE9XX1BBVEhfREVDTCk6CisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuaDoKKyAg
ICAgICAgKiBydW50aW1lL0dlbmVyYXRvckZyYW1lLmNwcDoKKyAgICAgICAgKEpTQzo6R2VuZXJh
dG9yRnJhbWU6OkdlbmVyYXRvckZyYW1lKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6
OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OmNyZWF0ZVN0
cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpjcmVhdGUpOgorICAgICAg
ICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6c2F2ZSk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZy
YW1lOjpyZXN1bWUpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6dmlzaXRDaGlsZHJl
bik6CisgICAgICAgICogcnVudGltZS9HZW5lcmF0b3JGcmFtZS5oOgorICAgICAgICAoSlNDOjpH
ZW5lcmF0b3JGcmFtZTo6bG9jYWxPZmZzZXQpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFt
ZTo6bnVtYmVyT2ZDYWxsZWVMb2NhbHNPZmZzZXQpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JG
cmFtZTo6bnVtYmVyT2ZTYXZlZENhbGxlZUxvY2Fsc09mZnNldCk6CisgICAgICAgIChKU0M6Okdl
bmVyYXRvckZyYW1lOjpsb2NhbEF0KTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmluaXQpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxP
YmplY3Q6OmdlbmVyYXRvckZyYW1lU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmNw
cDoKKyAgICAgICAgKEpTQzo6Vk06OlZNKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL1ZN
Lmg6CisgICAgICAgICogdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLWFuZC1hcnJheS5q
czogQWRkZWQuCisgICAgICAgIChmaWIpOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9nZW5lcmF0
b3ItZmliLWZ0bC1hbmQtb2JqZWN0LmpzOiBBZGRlZC4KKyAgICAgICAgKGZpYik6CisgICAgICAg
ICogdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLWFuZC1zdHJpbmcuanM6IEFkZGVkLgor
ICAgICAgICAoZmliKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwu
anM6IEFkZGVkLgorICAgICAgICAoZmliKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvZ2VuZXJh
dG9yLWZyYW1lLWVtcHR5LmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZFRocm93KToKKyAgICAg
ICAgKHNob3VsZFRocm93LmZpYik6CisKIDIwMTYtMDEtMTcgIEp1bGllbiBCcmlhbmNlYXUgIDxq
YnJpYW5jZUBjaXNjby5jb20+CiAKICAgICAgICAgW21pcHNdIEZpeCByZWdUMiBhbmQgcmVnVDMg
dHJhbXBsaW5nIGluIE1hY3JvQXNzZW1ibGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUu
dmN4cHJvagppbmRleCBlMTgwZTM1YzIyOGUzYmFjMDY0YzNmYTQ3Yzc3NzlkNjAyZjgyYmM5Li41
ZjUxYzZiYTYzZTE1YmUzZmNiNmFjOWRlODM4MDBmYTVlNDIzMmViIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52
Y3hwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9q
L0phdmFTY3JpcHRDb3JlLnZjeHByb2oKQEAgLTExOTQsNiArMTE5NCw3IEBACiAgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxkZmdcREZHRnJvemVuVmFsdWUuaCIgLz4KICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXGRmZ1xERkdGdW5jdGlvbldoaXRlbGlzdC5oIiAvPgogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5cZGZnXERGR0dlbmVyYXRpb25JbmZvLmgiIC8+CisgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxkZmdcREZHR2VuZXJhdG9yTG9jYWxEYXRhLmgiIC8+CiAgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxkZmdcREZHR1BSSW5mby5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5cZGZnXERGR0dyYXBoLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxk
ZmdcREZHR3JhcGhTYWZlcG9pbnQuaCIgLz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVy
cyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3Jp
cHRDb3JlLnZjeHByb2ouZmlsdGVycwppbmRleCBiZjc1NjBlYWE0YTNjMWNkNzk1OTNiMGIzYjYz
MDQ1ODRhOTI0NjAyLi43MzkyZjFlZjlkM2I5YTA3ZDE2YmNkZGYzOTRhNjliMTYyNmRhNDQ4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9K
YXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCkBA
IC0zODcyLDYgKzM4NzIsOSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cZGZnXERGR0dl
bmVyYXRpb25JbmZvLmgiPgogICAgICAgPEZpbHRlcj5kZmc8L0ZpbHRlcj4KICAgICA8L0NsSW5j
bHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGRmZ1xERkdHZW5lcmF0b3JMb2NhbERh
dGEuaCI+CisgICAgICA8RmlsdGVyPmRmZzwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cZGZnXERGR0dQUkluZm8uaCI+CiAgICAgICA8RmlsdGVy
PmRmZzwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCBhOTNhNmFhMWNhYTlhODI1NGNkMTZjNDVhYjIzZGFhZmM5MDNmNGEyLi45ZjhkY2Yw
MTg2ZmRiMjAxNjUyZTcxNGRmMGMzZWRkNzkxOTcwYjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtMTI1MCw2ICsxMjUwLDcgQEAKIAkJNzA1QjQxQjAxQTZFNTAxRTAwNzE2NzU3
IC8qIFN5bWJvbE9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNzA1QjQxQTgxQTZFNTAxRTAwNzE2NzU3IC8qIFN5bWJvbE9iamVjdC5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcwNUI0MUIxMUE2
RTUwMUUwMDcxNjc1NyAvKiBTeW1ib2xQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzA1QjQxQTkxQTZFNTAxRTAwNzE2NzU3IC8qIFN5
bWJvbFByb3RvdHlwZS5jcHAgKi87IH07CiAJCTcwNUI0MUIyMUE2RTUwMUUwMDcxNjc1NyAvKiBT
eW1ib2xQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDcwNUI0MUFBMUE2RTUwMUUwMDcxNjc1NyAvKiBTeW1ib2xQcm90b3R5cGUuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3MDc5MTQxRDFD
NEFBODYwMDBCODJGRjcgLyogREZHR2VuZXJhdG9yTG9jYWxEYXRhLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MDc5MTQxQzFDNEFBODA3MDBCODJGRjcg
LyogREZHR2VuZXJhdG9yTG9jYWxEYXRhLmggKi87IH07CiAJCTcwOTRDNERFMUFFNDM5NTMwMDQx
QTJFRSAvKiBCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwOTRDNERDMUFFNDM5NTMwMDQxQTJFRSAvKiBC
eXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmNwcCAqLzsgfTsKIAkJNzA5NEM0REYxQUU0Mzk1MzAw
NDFBMkVFIC8qIEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwOTRDNEREMUFFNDM5NTMwMDQxQTJFRSAvKiBC
eXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzA5RkI4NjcxQUUzMzVDNjAwMzlEMDY5IC8qIEpTV2Vha1Nl
dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MDlG
Qjg2MTFBRTMzNUM2MDAzOUQwNjkgLyogSlNXZWFrU2V0LmNwcCAqLzsgfTsKQEAgLTM0MjQsNiAr
MzQyNSw3IEBACiAJCTcwNUI0MUE4MUE2RTUwMUUwMDcxNjc1NyAvKiBTeW1ib2xPYmplY3QuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3ltYm9sT2JqZWN0Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcwNUI0MUE5MUE2RTUwMUUwMDcxNjc1NyAvKiBTeW1ib2xQ
cm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3ltYm9s
UHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzA1QjQxQUExQTZF
NTAxRTAwNzE2NzU3IC8qIFN5bWJvbFByb3RvdHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTeW1ib2xQcm90b3R5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNzA3OTE0MUMxQzRBQTgwNzAwQjgyRkY3IC8qIERGR0dlbmVyYXRvckxvY2FsRGF0YS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdHZW5lcmF0b3JMb2NhbERhdGEuaDsg
cGF0aCA9IGRmZy9ERkdHZW5lcmF0b3JMb2NhbERhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNzA5NEM0REMxQUU0Mzk1MzAwNDFBMkVFIC8qIEJ5dGVjb2RlSW50cmluc2ljUmVn
aXN0cnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQnl0ZWNvZGVJ
bnRyaW5zaWNSZWdpc3RyeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcwOTRD
NEREMUFFNDM5NTMwMDQxQTJFRSAvKiBCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzA5RkI4NjExQUUzMzVDNjAwMzlEMDY5IC8q
IEpTV2Vha1NldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1dl
YWtTZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjIxOCw2ICs2MjIwLDcg
QEAKIAkJCQkyQTg4MDY3NjE5MTA3RDU1MDBDQjBCQkIgLyogREZHRnVuY3Rpb25XaGl0ZWxpc3Qu
Y3BwICovLAogCQkJCTJBODgwNjc3MTkxMDdENTUwMENCMEJCQiAvKiBERkdGdW5jdGlvbldoaXRl
bGlzdC5oICovLAogCQkJCTg2RUM5REI2MTMyOERGODIwMDJCMkFENyAvKiBERkdHZW5lcmF0aW9u
SW5mby5oICovLAorCQkJCTcwNzkxNDFDMUM0QUE4MDcwMEI4MkZGNyAvKiBERkdHZW5lcmF0b3JM
b2NhbERhdGEuaCAqLywKIAkJCQk4NkVDOURCNzEzMjhERjgyMDAyQjJBRDcgLyogREZHR3JhcGgu
Y3BwICovLAogCQkJCTg2RUM5REI4MTMyOERGODIwMDJCMkFENyAvKiBERkdHcmFwaC5oICovLAog
CQkJCTBGMkZDQ0YyMThBNjAwNzAwMDFBMjdGOCAvKiBERkdHcmFwaFNhZmVwb2ludC5jcHAgKi8s
CkBAIC03OTY1LDYgKzc5NjgsNyBAQAogCQkJCTBGRTA1MDI5MUFBOTA5NTYwMEQzM0IzMyAvKiBT
Y29wZWRBcmd1bWVudHNUYWJsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFMDUwMkIxQUE5MDk1
NjAwRDMzQjMzIC8qIFNjb3BlT2Zmc2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjI0RTU1MjE3
RUUyNzQ5MDBBQkIyMTcgLyogU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yLmggaW4gSGVhZGVycyAq
LywKKwkJCQk3MDc5MTQxRDFDNEFBODYwMDBCODJGRjcgLyogREZHR2VuZXJhdG9yTG9jYWxEYXRh
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNUZEMDA2ODE4OUFGRTlDMDA2MzMyMzEgLyogU2NyaXB0
QXJndW1lbnRzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTAzRkEyMTE4OEVGRjY4MDAxMTBGMTQg
LyogU2NyaXB0QnJlYWtwb2ludC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTVGRDAwNkUxODlCMDBB
QTAwNjMzMjMxIC8qIFNjcmlwdENhbGxGcmFtZS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvR2VuZXJhdG9yUHJvdG90eXBlLmpzIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0dlbmVyYXRvclByb3RvdHlwZS5qcwppbmRl
eCBhM2JiYzM1MzRhZTA1MmY0ZDZmYTI1YmRlNzAzYzkzZDNhNzk1ZTExLi40OWRkYmY5Yzg0Njkz
MzA2NTg3MTFmMThlNzIxNDliYzk4MjJkYTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnVpbHRpbnMvR2VuZXJhdG9yUHJvdG90eXBlLmpzCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9idWlsdGlucy9HZW5lcmF0b3JQcm90b3R5cGUuanMKQEAgLTU4LDcgKzU4LDcgQEAg
ZnVuY3Rpb24gZ2VuZXJhdG9yUmVzdW1lKGdlbmVyYXRvciwgc2VudFZhbHVlLCByZXN1bWVNb2Rl
KQogICAgIH0gZWxzZSB7CiAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICBnZW5lcmF0b3IuQGdl
bmVyYXRvclN0YXRlID0gRXhlY3V0aW5nOwotICAgICAgICAgICAgdmFsdWUgPSBnZW5lcmF0b3Iu
QGdlbmVyYXRvck5leHQuQGNhbGwoZ2VuZXJhdG9yLkBnZW5lcmF0b3JUaGlzLCBnZW5lcmF0b3Is
IHN0YXRlLCBzZW50VmFsdWUsIHJlc3VtZU1vZGUpOworICAgICAgICAgICAgdmFsdWUgPSBnZW5l
cmF0b3IuQGdlbmVyYXRvck5leHQuQGNhbGwoZ2VuZXJhdG9yLkBnZW5lcmF0b3JUaGlzLCBnZW5l
cmF0b3IsIHN0YXRlLCBzZW50VmFsdWUsIHJlc3VtZU1vZGUsIGdlbmVyYXRvci5AZ2VuZXJhdG9y
RnJhbWUpOwogICAgICAgICAgICAgaWYgKGdlbmVyYXRvci5AZ2VuZXJhdG9yU3RhdGUgPT09IEV4
ZWN1dGluZykgewogICAgICAgICAgICAgICAgIGdlbmVyYXRvci5AZ2VuZXJhdG9yU3RhdGUgPSBD
b21wbGV0ZWQ7CiAgICAgICAgICAgICAgICAgZG9uZSA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suY3BwCmluZGV4IDdm
MTdjMGVmMTBiNDMzZmFjOGY1OGNiM2I5Y2E1ZDRkMDE1YmJhMDguLmVjMGRiZjYwNTYyNWUxYzA2
MjEzZmI0ZjRiOTAwNzNhYWNiNDdjOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suY3BwCkBAIC0zOCw3ICszOCw3IEBAIHZv
aWQgQnl0ZWNvZGVCYXNpY0Jsb2NrOjpzaHJpbmtUb0ZpdCgpCiAgICAgbV9zdWNjZXNzb3JzLnNo
cmlua1RvRml0KCk7CiB9CiAKLXN0YXRpYyBib29sIGlzQnJhbmNoKE9wY29kZUlEIG9wY29kZUlE
KQorc3RhdGljIGJvb2wgaXNCcmFuY2goT3Bjb2RlSUQgb3Bjb2RlSUQsIEJ5dGVjb2RlQW5hbHlz
aXNNb2RlIGJ5dGVjb2RlQW5hbHlzaXNNb2RlKQogewogICAgIHN3aXRjaCAob3Bjb2RlSUQpIHsK
ICAgICBjYXNlIG9wX2ptcDoKQEAgLTU4LDggKzU4LDExIEBAIHN0YXRpYyBib29sIGlzQnJhbmNo
KE9wY29kZUlEIG9wY29kZUlEKQogICAgIGNhc2Ugb3Bfc3dpdGNoX2ltbToKICAgICBjYXNlIG9w
X3N3aXRjaF9jaGFyOgogICAgIGNhc2Ugb3Bfc3dpdGNoX3N0cmluZzoKLSAgICBjYXNlIG9wX3Nh
dmU6CiAgICAgICAgIHJldHVybiB0cnVlOworCisgICAgY2FzZSBvcF9zYXZlOgorICAgICAgICBy
ZXR1cm4gYnl0ZWNvZGVBbmFseXNpc01vZGUgPT0gQnl0ZWNvZGVBbmFseXNpc01vZGU6OkV4dHJh
Y3RHZW5lcmF0b3JMaXZlQ2FsbGVlTG9jYWxzOworCiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KQEAgLTExMCwxMCArMTEzLDEwIEBAIHN0YXRpYyB2b2lkIGxpbmtC
bG9ja3MoQnl0ZWNvZGVCYXNpY0Jsb2NrKiBwcmVkZWNlc3NvciwgQnl0ZWNvZGVCYXNpY0Jsb2Nr
KiBzdWNjCiAgICAgcHJlZGVjZXNzb3ItPmFkZFN1Y2Nlc3NvcihzdWNjZXNzb3IpOwogfQogCi12
b2lkIGNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzKENvZGVCbG9jayogY29kZUJsb2NrLCBWZWN0
b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+JiBiYXNpY0Jsb2NrcykKK3Zv
aWQgY29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVj
b2RlQW5hbHlzaXNNb2RlIGJ5dGVjb2RlQW5hbHlzaXNNb2RlLCBWZWN0b3I8c3RkOjp1bmlxdWVf
cHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+JiBiYXNpY0Jsb2NrcykKIHsKICAgICBWZWN0b3I8dW5z
aWduZWQsIDMyPiBqdW1wVGFyZ2V0czsKLSAgICBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKGNv
ZGVCbG9jaywganVtcFRhcmdldHMpOworICAgIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMoY29k
ZUJsb2NrLCBieXRlY29kZUFuYWx5c2lzTW9kZSwganVtcFRhcmdldHMpOwogCiAgICAgLy8gQ3Jl
YXRlIHRoZSBlbnRyeSBhbmQgZXhpdCBiYXNpYyBibG9ja3MuCiAgICAgYmFzaWNCbG9ja3MucmVz
ZXJ2ZUNhcGFjaXR5KGp1bXBUYXJnZXRzLnNpemUoKSArIDIpOwpAQCAtMTQ5LDcgKzE1Miw3IEBA
IHZvaWQgY29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFZl
Y3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0CiAgICAgICAgIH0KIAogICAgICAgICAvLyBJZiB0aGUg
Y3VycmVudCBieXRlY29kZSBpcyBhIGJyYW5jaCBvciBhIHJldHVybiwgdGhlbiB0aGUgbmV4dCBp
bnN0cnVjdGlvbiBpcyB0aGUgbGVhZGVyIG9mIGl0cyBvd24gYmFzaWMgYmxvY2suCi0gICAgICAg
IGlmIChpc0JyYW5jaChvcGNvZGVJRCkgfHwgaXNUZXJtaW5hbChvcGNvZGVJRCkgfHwgaXNUaHJv
dyhvcGNvZGVJRCkpCisgICAgICAgIGlmIChpc0JyYW5jaChvcGNvZGVJRCwgYnl0ZWNvZGVBbmFs
eXNpc01vZGUpIHx8IGlzVGVybWluYWwob3Bjb2RlSUQpIHx8IGlzVGhyb3cob3Bjb2RlSUQpKQog
ICAgICAgICAgICAgbmV4dEluc3RydWN0aW9uSXNMZWFkZXIgPSB0cnVlOwogCiAgICAgICAgIGlm
IChjcmVhdGVkQmxvY2spCkBAIC0yMDIsMTAgKzIwNSwxMCBAQCB2b2lkIGNvbXB1dGVCeXRlY29k
ZUJhc2ljQmxvY2tzKENvZGVCbG9jayogY29kZUJsb2NrLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRy
PEJ5dAogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAvLyBJZiB3ZSBmb3VuZCBhIGJyYW5j
aCwgbGluayB0byB0aGUgYmxvY2socykgdGhhdCB3ZSBqdW1wIHRvLgotICAgICAgICAgICAgaWYg
KGlzQnJhbmNoKG9wY29kZUlEKSkgeworICAgICAgICAgICAgaWYgKGlzQnJhbmNoKG9wY29kZUlE
LCBieXRlY29kZUFuYWx5c2lzTW9kZSkpIHsKICAgICAgICAgICAgICAgICBBU1NFUlQoYnl0ZWNv
ZGVPZmZzZXQgKyBvcGNvZGVMZW5ndGggPT0gYmxvY2stPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCkg
KyBibG9jay0+dG90YWxCeXRlY29kZUxlbmd0aCgpKTsKICAgICAgICAgICAgICAgICBWZWN0b3I8
dW5zaWduZWQsIDE+IGJ5dGVjb2RlT2Zmc2V0c0p1bXBlZFRvOwotICAgICAgICAgICAgICAgIGZp
bmRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9jaywgYnl0ZWNvZGVPZmZzZXQs
IGJ5dGVjb2RlT2Zmc2V0c0p1bXBlZFRvKTsKKyAgICAgICAgICAgICAgICBmaW5kSnVtcFRhcmdl
dHNGb3JCeXRlY29kZU9mZnNldChjb2RlQmxvY2ssIGJ5dGVjb2RlQW5hbHlzaXNNb2RlLCBieXRl
Y29kZU9mZnNldCwgYnl0ZWNvZGVPZmZzZXRzSnVtcGVkVG8pOwogCiAgICAgICAgICAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGJhc2ljQmxvY2tzLnNpemUoKTsgaSsrKSB7CiAgICAg
ICAgICAgICAgICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogb3RoZXJCbG9jayA9IGJhc2ljQmxv
Y2tzW2ldLmdldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlQmFzaWNCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlQmFzaWNCbG9jay5oCmluZGV4IGJkN2QzYWU5YmEzNDNlMWIwNzE3OWU5OGYxZWU4OWRh
NjViYTdlMjAuLjQ5MjU2OTVkYWVjYjBkNmJmOGI3YjYwMjJjNjkwNjRlYjEzYTRjM2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2su
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2Nr
LmgKQEAgLTM2LDYgKzM2LDExIEBACiAKIGNsYXNzIENvZGVCbG9jazsKIAorZW51bSBjbGFzcyBC
eXRlY29kZUFuYWx5c2lzTW9kZSB7CisgICAgU3RhbmRhcmQsCisgICAgRXh0cmFjdEdlbmVyYXRv
ckxpdmVDYWxsZWVMb2NhbHMKK307CisKIGNsYXNzIEJ5dGVjb2RlQmFzaWNCbG9jayB7CiAgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CkBAIC03MCw3ICs3NSw3IEBAIGNsYXNz
IEJ5dGVjb2RlQmFzaWNCbG9jayB7CiAgICAgRmFzdEJpdFZlY3RvciBtX291dDsKIH07CiAKLXZv
aWQgY29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MoQ29kZUJsb2NrKiwgVmVjdG9yPHN0ZDo6dW5p
cXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYpOwordm9pZCBjb21wdXRlQnl0ZWNvZGVCYXNp
Y0Jsb2NrcyhDb2RlQmxvY2sqLCBCeXRlY29kZUFuYWx5c2lzTW9kZSwgVmVjdG9yPHN0ZDo6dW5p
cXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYpOwogCiBpbmxpbmUgQnl0ZWNvZGVCYXNpY0Js
b2NrOjpCeXRlY29kZUJhc2ljQmxvY2sodW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGxlbmd0aCkK
ICAgICA6IG1fbGVhZGVyQnl0ZWNvZGVPZmZzZXQoc3RhcnQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24gYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24KaW5kZXggMDUzYjhkYzliODY0ZjFi
ODZiNGNlYzdhYTYwMWY3Y2UyZjAzZjJlNC4uM2EzZDMxN2U5ZjZkZWU5MjQ2N2RjZWUxOGY1Y2Jh
N2EwOTQ3YTAyZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlTGlzdC5qc29uCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZUxpc3QuanNvbgpAQCAtMTYsNiArMTYsNyBAQAogICAgICAgICAgICAgeyAibmFtZSIgOiAi
b3BfbmV3X2FycmF5X3dpdGhfc2l6ZSIsICJsZW5ndGgiIDogNCB9LAogICAgICAgICAgICAgeyAi
bmFtZSIgOiAib3BfbmV3X2FycmF5X2J1ZmZlciIsICJsZW5ndGgiIDogNSB9LAogICAgICAgICAg
ICAgeyAibmFtZSIgOiAib3BfbmV3X3JlZ2V4cCIsICJsZW5ndGgiIDogMyB9LAorICAgICAgICAg
ICAgeyAibmFtZSIgOiAib3BfbmV3X2dlbmVyYXRvcl9mcmFtZSIsICJsZW5ndGgiIDogMyB9LAog
ICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfbW92IiwgImxlbmd0aCIgOiAzIH0sCiAgICAgICAg
ICAgICB7ICJuYW1lIiA6ICJvcF9ub3QiLCAibGVuZ3RoIiA6IDMgfSwKICAgICAgICAgICAgIHsg
Im5hbWUiIDogIm9wX2VxIiwgImxlbmd0aCIgOiA0IH0sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwCmlu
ZGV4IDcyMjhiMDMzMzY2YzdhNjdiNTEwNDg4ZGZlNDVmM2RkM2NmYTQzMTUuLjljMzc4OWZmNjQ3
ODA1OGE2ZWY4ZDBiMDg5NmNmZmZjYWMzYWIwZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwCkBA
IC0zNSw4ICszNSw5IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1CeXRlY29kZUxpdmVuZXNzQW5h
bHlzaXM6OkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcyhDb2RlQmxvY2sqIGNvZGVCbG9jaykKK0J5
dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzKENvZGVCbG9j
ayogY29kZUJsb2NrLCBCeXRlY29kZUFuYWx5c2lzTW9kZSBieXRlY29kZUFuYWx5c2lzTW9kZSkK
ICAgICA6IG1fY29kZUJsb2NrKGNvZGVCbG9jaykKKyAgICAsIG1fYnl0ZWNvZGVBbmFseXNpc01v
ZGUoYnl0ZWNvZGVBbmFseXNpc01vZGUpCiB7CiAgICAgQVNTRVJUKG1fY29kZUJsb2NrKTsKICAg
ICBjb21wdXRlKCk7CkBAIC05OCw3ICs5OSw3IEBAIHN0YXRpYyBCeXRlY29kZUJhc2ljQmxvY2sq
IGZpbmRCYXNpY0Jsb2NrRm9yQnl0ZWNvZGVPZmZzZXQoVmVjdG9yPHN0ZDo6dW5pcXVlX3B0CiAv
LyBTaW1wbGlmaWVkIGludGVyZmFjZSB0byBieXRlY29kZSB1c2UvZGVmLCB3aGljaCBkZXRlcm1p
bmVzIGRlZnMgZmlyc3QgYW5kIHRoZW4gdXNlcywgYW5kIGluY2x1ZGVzCiAvLyBleGNlcHRpb24g
aGFuZGxlcnMgaW4gdGhlIHVzZXMuCiB0ZW1wbGF0ZTx0eXBlbmFtZSBVc2VGdW5jdG9yLCB0eXBl
bmFtZSBEZWZGdW5jdG9yPgotc3RhdGljIHZvaWQgc3RlcE92ZXJJbnN0cnVjdGlvbihDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaywgVmVjdG9yPHN0ZDo6dW5p
cXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9ja3MsIHVuc2lnbmVkIGJ5dGVj
b2RlT2Zmc2V0LCBjb25zdCBVc2VGdW5jdG9yJiB1c2UsIGNvbnN0IERlZkZ1bmN0b3ImIGRlZikK
K3N0YXRpYyB2b2lkIHN0ZXBPdmVySW5zdHJ1Y3Rpb24oQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5
dGVjb2RlQW5hbHlzaXNNb2RlIGJ5dGVjb2RlQW5hbHlzaXNNb2RlLCBCeXRlY29kZUJhc2ljQmxv
Y2sqIGJsb2NrLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+JiBi
YXNpY0Jsb2NrcywgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIGNvbnN0IFVzZUZ1bmN0b3ImIHVz
ZSwgY29uc3QgRGVmRnVuY3RvciYgZGVmKQogewogICAgIC8vIFRoaXMgYWJzdHJhY3RseSBleGVj
dXRlIHRoZSBpbnN0cnVjdGlvbiBpbiByZXZlcnNlLiBJbnN0cnVjdGlvbnMgbG9naWNhbGx5IGZp
cnN0IHVzZSBvcGVyYW5kcyBhbmQKICAgICAvLyB0aGVuIGRlZmluZSBvcGVyYW5kcy4gVGhpcyBs
b2dpY2FsIG9yZGVyaW5nIGlzIG5lY2Vzc2FyeSBmb3Igb3BlcmF0aW9ucyB0aGF0IHVzZSBhbmQg
ZGVmIHRoZSBzYW1lCkBAIC0xMTYsMTQgKzExNywxNCBAQCBzdGF0aWMgdm9pZCBzdGVwT3Zlcklu
c3RydWN0aW9uKENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2Nr
LAogICAgIC8vIGZpcnN0IGFkZCBpdCB0byB0aGUgb3V0IHNldCAodGhlIHVzZSksIGFuZCB0aGVu
IHdlJ2QgcmVtb3ZlIGl0ICh0aGUgZGVmKS4KICAgICAKICAgICBjb21wdXRlRGVmc0ZvckJ5dGVj
b2RlT2Zmc2V0KAotICAgICAgICBjb2RlQmxvY2ssIGJsb2NrLCBieXRlY29kZU9mZnNldCwKKyAg
ICAgICAgY29kZUJsb2NrLCBieXRlY29kZUFuYWx5c2lzTW9kZSwgYmxvY2ssIGJ5dGVjb2RlT2Zm
c2V0LAogICAgICAgICBbJl0gKENvZGVCbG9jayogY29kZUJsb2NrLCBJbnN0cnVjdGlvbiosIE9w
Y29kZUlELCBpbnQgb3BlcmFuZCkgewogICAgICAgICAgICAgaWYgKGlzVmFsaWRSZWdpc3RlckZv
ckxpdmVuZXNzKGNvZGVCbG9jaywgb3BlcmFuZCkpCiAgICAgICAgICAgICAgICAgZGVmKFZpcnR1
YWxSZWdpc3RlcihvcGVyYW5kKS50b0xvY2FsKCkpOwogICAgICAgICB9KTsKIAogICAgIGNvbXB1
dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoCi0gICAgICAgIGNvZGVCbG9jaywgYmxvY2ssIGJ5dGVj
b2RlT2Zmc2V0LAorICAgICAgICBjb2RlQmxvY2ssIGJ5dGVjb2RlQW5hbHlzaXNNb2RlLCBibG9j
aywgYnl0ZWNvZGVPZmZzZXQsCiAgICAgICAgIFsmXSAoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIElu
c3RydWN0aW9uKiwgT3Bjb2RlSUQsIGludCBvcGVyYW5kKSB7CiAgICAgICAgICAgICBpZiAoaXNW
YWxpZFJlZ2lzdGVyRm9yTGl2ZW5lc3MoY29kZUJsb2NrLCBvcGVyYW5kKSkKICAgICAgICAgICAg
ICAgICB1c2UoVmlydHVhbFJlZ2lzdGVyKG9wZXJhbmQpLnRvTG9jYWwoKSk7CkBAIC0xMzgsMTAg
KzEzOSwxMCBAQCBzdGF0aWMgdm9pZCBzdGVwT3Zlckluc3RydWN0aW9uKENvZGVCbG9jayogY29k
ZUJsb2NrLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrLAogICAgIH0KIH0KIAotc3RhdGljIHZv
aWQgc3RlcE92ZXJJbnN0cnVjdGlvbihDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVCYXNp
Y0Jsb2NrKiBibG9jaywgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+
PiYgYmFzaWNCbG9ja3MsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBGYXN0Qml0VmVjdG9yJiBv
dXQpCitzdGF0aWMgdm9pZCBzdGVwT3Zlckluc3RydWN0aW9uKENvZGVCbG9jayogY29kZUJsb2Nr
LCBCeXRlY29kZUFuYWx5c2lzTW9kZSBieXRlY29kZUFuYWx5c2lzTW9kZSwgQnl0ZWNvZGVCYXNp
Y0Jsb2NrKiBibG9jaywgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+
PiYgYmFzaWNCbG9ja3MsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBGYXN0Qml0VmVjdG9yJiBv
dXQpCiB7CiAgICAgc3RlcE92ZXJJbnN0cnVjdGlvbigKLSAgICAgICAgY29kZUJsb2NrLCBibG9j
aywgYmFzaWNCbG9ja3MsIGJ5dGVjb2RlT2Zmc2V0LAorICAgICAgICBjb2RlQmxvY2ssIGJ5dGVj
b2RlQW5hbHlzaXNNb2RlLCBibG9jaywgYmFzaWNCbG9ja3MsIGJ5dGVjb2RlT2Zmc2V0LAogICAg
ICAgICBbJl0gKHVuc2lnbmVkIGJpdEluZGV4KSB7CiAgICAgICAgICAgICAvLyBUaGlzIGlzIHRo
ZSB1c2UgZnVuY3Rvciwgc28gd2Ugc2V0IHRoZSBiaXQuCiAgICAgICAgICAgICBvdXQuc2V0KGJp
dEluZGV4KTsKQEAgLTE1Miw3ICsxNTMsNyBAQCBzdGF0aWMgdm9pZCBzdGVwT3Zlckluc3RydWN0
aW9uKENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrLAogICAg
ICAgICB9KTsKIH0KIAotc3RhdGljIHZvaWQgY29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCeXRlY29k
ZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaywg
VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9ja3Ms
IHVuc2lnbmVkIHRhcmdldE9mZnNldCwgRmFzdEJpdFZlY3RvciYgcmVzdWx0KQorc3RhdGljIHZv
aWQgY29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVC
bG9jaywgQnl0ZWNvZGVBbmFseXNpc01vZGUgYnl0ZWNvZGVBbmFseXNpc01vZGUsIEJ5dGVjb2Rl
QmFzaWNCbG9jayogYmxvY2ssIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Js
b2NrPj4mIGJhc2ljQmxvY2tzLCB1bnNpZ25lZCB0YXJnZXRPZmZzZXQsIEZhc3RCaXRWZWN0b3Im
IHJlc3VsdCkKIHsKICAgICBBU1NFUlQoIWJsb2NrLT5pc0V4aXRCbG9jaygpKTsKICAgICBBU1NF
UlQoIWJsb2NrLT5pc0VudHJ5QmxvY2soKSk7CkBAIC0xNjQsMTcgKzE2NSwxNyBAQCBzdGF0aWMg
dm9pZCBjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29k
ZUJsb2NrLCBCeXRlY29kZQogICAgICAgICBpZiAodGFyZ2V0T2Zmc2V0ID4gYnl0ZWNvZGVPZmZz
ZXQpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgCi0gICAgICAgIHN0ZXBPdmVySW5zdHJ1
Y3Rpb24oY29kZUJsb2NrLCBibG9jaywgYmFzaWNCbG9ja3MsIGJ5dGVjb2RlT2Zmc2V0LCBvdXQp
OworICAgICAgICBzdGVwT3Zlckluc3RydWN0aW9uKGNvZGVCbG9jaywgYnl0ZWNvZGVBbmFseXNp
c01vZGUsIGJsb2NrLCBiYXNpY0Jsb2NrcywgYnl0ZWNvZGVPZmZzZXQsIG91dCk7CiAgICAgfQog
CiAgICAgcmVzdWx0LnNldChvdXQpOwogfQogCi1zdGF0aWMgdm9pZCBjb21wdXRlTG9jYWxMaXZl
bmVzc0ZvckJsb2NrKENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJs
b2NrLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+JiBiYXNpY0Js
b2NrcykKK3N0YXRpYyB2b2lkIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQmxvY2soQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIEJ5dGVjb2RlQW5hbHlzaXNNb2RlIGJ5dGVjb2RlQW5hbHlzaXNNb2RlLCBC
eXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2Rl
QmFzaWNCbG9jaz4+JiBiYXNpY0Jsb2NrcykKIHsKICAgICBpZiAoYmxvY2stPmlzRXhpdEJsb2Nr
KCkgfHwgYmxvY2stPmlzRW50cnlCbG9jaygpKQogICAgICAgICByZXR1cm47Ci0gICAgY29tcHV0
ZUxvY2FsTGl2ZW5lc3NGb3JCeXRlY29kZU9mZnNldChjb2RlQmxvY2ssIGJsb2NrLCBiYXNpY0Js
b2NrcywgYmxvY2stPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCksIGJsb2NrLT5pbigpKTsKKyAgICBj
b21wdXRlTG9jYWxMaXZlbmVzc0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9jaywgYnl0ZWNvZGVB
bmFseXNpc01vZGUsIGJsb2NrLCBiYXNpY0Jsb2NrcywgYmxvY2stPmxlYWRlckJ5dGVjb2RlT2Zm
c2V0KCksIGJsb2NrLT5pbigpKTsKIH0KIAogdm9pZCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6
OnJ1bkxpdmVuZXNzRml4cG9pbnQoKQpAQCAtMjAxLDcgKzIwMiw3IEBAIHZvaWQgQnl0ZWNvZGVM
aXZlbmVzc0FuYWx5c2lzOjpydW5MaXZlbmVzc0ZpeHBvaW50KCkKICAgICAgICAgICAgIGZvciAo
dW5zaWduZWQgaiA9IDA7IGogPCBibG9jay0+c3VjY2Vzc29ycygpLnNpemUoKTsgaisrKQogICAg
ICAgICAgICAgICAgIG5ld091dC5tZXJnZShibG9jay0+c3VjY2Vzc29ycygpW2pdLT5pbigpKTsK
ICAgICAgICAgICAgIGJvb2wgb3V0RGlkQ2hhbmdlID0gYmxvY2stPm91dCgpLnNldEFuZENoZWNr
KG5ld091dCk7Ci0gICAgICAgICAgICBjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJsb2NrKG1fY29k
ZUJsb2NrLCBibG9jaywgbV9iYXNpY0Jsb2Nrcyk7CisgICAgICAgICAgICBjb21wdXRlTG9jYWxM
aXZlbmVzc0ZvckJsb2NrKG1fY29kZUJsb2NrLCBtX2J5dGVjb2RlQW5hbHlzaXNNb2RlLCBibG9j
aywgbV9iYXNpY0Jsb2Nrcyk7CiAgICAgICAgICAgICBjaGFuZ2VkIHw9IG91dERpZENoYW5nZTsK
ICAgICAgICAgfQogICAgIH0gd2hpbGUgKGNoYW5nZWQpOwpAQCAtMjE0LDcgKzIxNSw3IEBAIHZv
aWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpnZXRMaXZlbmVzc0luZm9BdEJ5dGVjb2RlT2Zm
c2V0KHVuc2lnbmVkIGJ5dGVjb2RlCiAgICAgQVNTRVJUKCFibG9jay0+aXNFbnRyeUJsb2NrKCkp
OwogICAgIEFTU0VSVCghYmxvY2stPmlzRXhpdEJsb2NrKCkpOwogICAgIHJlc3VsdC5yZXNpemUo
YmxvY2stPm91dCgpLm51bUJpdHMoKSk7Ci0gICAgY29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCeXRl
Y29kZU9mZnNldChtX2NvZGVCbG9jaywgYmxvY2ssIG1fYmFzaWNCbG9ja3MsIGJ5dGVjb2RlT2Zm
c2V0LCByZXN1bHQpOworICAgIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQnl0ZWNvZGVPZmZzZXQo
bV9jb2RlQmxvY2ssIG1fYnl0ZWNvZGVBbmFseXNpc01vZGUsIGJsb2NrLCBtX2Jhc2ljQmxvY2tz
LCBieXRlY29kZU9mZnNldCwgcmVzdWx0KTsKIH0KIAogYm9vbCBCeXRlY29kZUxpdmVuZXNzQW5h
bHlzaXM6Om9wZXJhbmRJc0xpdmVBdEJ5dGVjb2RlT2Zmc2V0KGludCBvcGVyYW5kLCB1bnNpZ25l
ZCBieXRlY29kZU9mZnNldCkKQEAgLTI0OCw3ICsyNDksNyBAQCB2b2lkIEJ5dGVjb2RlTGl2ZW5l
c3NBbmFseXNpczo6Y29tcHV0ZUZ1bGxMaXZlbmVzcyhGdWxsQnl0ZWNvZGVMaXZlbmVzcyYgcmVz
dWx0KQogICAgICAgICAKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gYmxvY2stPmJ5dGVjb2Rl
T2Zmc2V0cygpLnNpemUoKTsgaS0tOykgewogICAgICAgICAgICAgdW5zaWduZWQgYnl0ZWNvZGVP
ZmZzZXQgPSBibG9jay0+Ynl0ZWNvZGVPZmZzZXRzKClbaV07Ci0gICAgICAgICAgICBzdGVwT3Zl
ckluc3RydWN0aW9uKG1fY29kZUJsb2NrLCBibG9jaywgbV9iYXNpY0Jsb2NrcywgYnl0ZWNvZGVP
ZmZzZXQsIG91dCk7CisgICAgICAgICAgICBzdGVwT3Zlckluc3RydWN0aW9uKG1fY29kZUJsb2Nr
LCBtX2J5dGVjb2RlQW5hbHlzaXNNb2RlLCBibG9jaywgbV9iYXNpY0Jsb2NrcywgYnl0ZWNvZGVP
ZmZzZXQsIG91dCk7CiAgICAgICAgICAgICByZXN1bHQubV9tYXBbYnl0ZWNvZGVPZmZzZXRdID0g
b3V0OwogICAgICAgICB9CiAgICAgfQpAQCAtMjcxLDcgKzI3Miw3IEBAIHZvaWQgQnl0ZWNvZGVM
aXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlS2lsbHMoQnl0ZWNvZGVLaWxscyYgcmVzdWx0KQogICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSBibG9jay0+Ynl0ZWNvZGVPZmZzZXRzKCkuc2l6ZSgpOyBp
LS07KSB7CiAgICAgICAgICAgICB1bnNpZ25lZCBieXRlY29kZU9mZnNldCA9IGJsb2NrLT5ieXRl
Y29kZU9mZnNldHMoKVtpXTsKICAgICAgICAgICAgIHN0ZXBPdmVySW5zdHJ1Y3Rpb24oCi0gICAg
ICAgICAgICAgICAgbV9jb2RlQmxvY2ssIGJsb2NrLCBtX2Jhc2ljQmxvY2tzLCBieXRlY29kZU9m
ZnNldCwKKyAgICAgICAgICAgICAgICBtX2NvZGVCbG9jaywgbV9ieXRlY29kZUFuYWx5c2lzTW9k
ZSwgYmxvY2ssIG1fYmFzaWNCbG9ja3MsIGJ5dGVjb2RlT2Zmc2V0LAogICAgICAgICAgICAgICAg
IFsmXSAodW5zaWduZWQgaW5kZXgpIHsKICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyBm
b3IgdXNlcy4KICAgICAgICAgICAgICAgICAgICAgaWYgKG91dC5nZXQoaW5kZXgpKQpAQCAtMzM3
LDcgKzMzOCw3IEBAIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpkdW1wUmVzdWx0cygp
CiAKIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlKCkKIHsKLSAgICBjb21w
dXRlQnl0ZWNvZGVCYXNpY0Jsb2NrcyhtX2NvZGVCbG9jaywgbV9iYXNpY0Jsb2Nrcyk7CisgICAg
Y29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MobV9jb2RlQmxvY2ssIG1fYnl0ZWNvZGVBbmFseXNp
c01vZGUsIG1fYmFzaWNCbG9ja3MpOwogICAgIEFTU0VSVChtX2Jhc2ljQmxvY2tzLnNpemUoKSk7
CiAgICAgcnVuTGl2ZW5lc3NGaXhwb2ludCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmgKaW5kZXggZWNl
MTZmMjFmMDE1MTBhNjQyN2ZkODQxMTQwNzliZWQ4NzBjMDg3NS4uOWQyMDI4ZDY5YTUxNzc2Mjk2
Mjg2MTEyZTM4MzQwNzE5YjA1YzI3MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuaApAQCAtNDEsNyArNDEs
NyBAQCBjbGFzcyBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMgewogICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEJ5dGVjb2RlTGl2ZW5lc3NBbmFs
eXNpcyk7CiBwdWJsaWM6Ci0gICAgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzKENvZGVCbG9jayop
OworICAgIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcyhDb2RlQmxvY2sqLCBCeXRlY29kZUFuYWx5
c2lzTW9kZSk7CiAgICAgCiAgICAgYm9vbCBvcGVyYW5kSXNMaXZlQXRCeXRlY29kZU9mZnNldChp
bnQgb3BlcmFuZCwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpOwogICAgIEZhc3RCaXRWZWN0b3Ig
Z2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29kZU9mZnNldCh1bnNpZ25lZCBieXRlY29kZU9mZnNldCk7
CkBAIC00OSw2ICs0OSw4IEBAIGNsYXNzIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcyB7CiAgICAg
dm9pZCBjb21wdXRlRnVsbExpdmVuZXNzKEZ1bGxCeXRlY29kZUxpdmVuZXNzJiByZXN1bHQpOwog
ICAgIHZvaWQgY29tcHV0ZUtpbGxzKEJ5dGVjb2RlS2lsbHMmIHJlc3VsdCk7CiAKKyAgICBCeXRl
Y29kZUFuYWx5c2lzTW9kZSBieXRlY29kZUFuYWx5c2lzTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1f
Ynl0ZWNvZGVBbmFseXNpc01vZGU7IH0KKwogcHJpdmF0ZToKICAgICB2b2lkIGNvbXB1dGUoKTsK
ICAgICB2b2lkIHJ1bkxpdmVuZXNzRml4cG9pbnQoKTsKQEAgLTU3LDYgKzU5LDcgQEAgY2xhc3Mg
Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzIHsKICAgICB2b2lkIGdldExpdmVuZXNzSW5mb0F0Qnl0
ZWNvZGVPZmZzZXQodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIEZhc3RCaXRWZWN0b3ImKTsKIAog
ICAgIENvZGVCbG9jayogbV9jb2RlQmxvY2s7CisgICAgQnl0ZWNvZGVBbmFseXNpc01vZGUgbV9i
eXRlY29kZUFuYWx5c2lzTW9kZTsKICAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2Rl
QmFzaWNCbG9jaz4+IG1fYmFzaWNCbG9ja3M7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCmluZGV4IDgwMTExNGMzNzJhMjc3ZjZlMTc3
MDliOTBiZTIwN2M4Zjk5YmU4MmQuLjc1Mzk3OWRmM2ZmNmM3ZDFmMDFlMDVlNTc4MDBjZTdiMWU4
MjRhOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZVVzZURlZi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVz
ZURlZi5oCkBAIC0zMiw3ICszMiw3IEBACiAKIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+CiB2
b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoCi0gICAgQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBj
b25zdCBGdW5jdG9yJiBmdW5jdG9yKQorICAgIENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29k
ZUFuYWx5c2lzTW9kZSBieXRlY29kZUFuYWx5c2lzTW9kZSwgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBi
bG9jaywgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiB7
CiAgICAgSW50ZXJwcmV0ZXIqIGludGVycHJldGVyID0gY29kZUJsb2NrLT52bSgpLT5pbnRlcnBy
ZXRlcjsKICAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4gPSBjb2RlQmxvY2stPmlu
c3RydWN0aW9ucygpLmJlZ2luKCk7CkBAIC01NSw2ICs1NSw3IEBAIHZvaWQgY29tcHV0ZVVzZXNG
b3JCeXRlY29kZU9mZnNldCgKICAgICBjYXNlIG9wX2NyZWF0ZV9vdXRfb2ZfYmFuZF9hcmd1bWVu
dHM6CiAgICAgY2FzZSBvcF9nZXRfcmVzdF9sZW5ndGg6CiAgICAgY2FzZSBvcF93YXRjaGRvZzoK
KyAgICBjYXNlIG9wX25ld19nZW5lcmF0b3JfZnJhbWU6CiAgICAgICAgIHJldHVybjsKICAgICBj
YXNlIG9wX2Fzc2VydDoKICAgICBjYXNlIG9wX2dldF9zY29wZToKQEAgLTI1MiwxOCArMjUzLDI2
IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCgKICAgICB9CiAgICAgY2FzZSBv
cF9zYXZlOiB7CiAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2Rl
SUQsIGluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7Ci0gICAgICAgIHVuc2lnbmVkIG1lcmdlUG9p
bnRCeXRlY29kZU9mZnNldCA9IGJ5dGVjb2RlT2Zmc2V0ICsgaW5zdHJ1Y3Rpb25bM10udS5vcGVy
YW5kOwotICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIG1lcmdlUG9pbnRCbG9jayA9IG51bGxw
dHI7Ci0gICAgICAgIGZvciAoQnl0ZWNvZGVCYXNpY0Jsb2NrKiBzdWNjZXNzb3IgOiBibG9jay0+
c3VjY2Vzc29ycygpKSB7Ci0gICAgICAgICAgICBpZiAoc3VjY2Vzc29yLT5sZWFkZXJCeXRlY29k
ZU9mZnNldCgpID09IG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldCkgewotICAgICAgICAgICAgICAg
IG1lcmdlUG9pbnRCbG9jayA9IHN1Y2Nlc3NvcjsKLSAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgaWYgKGJ5dGVjb2RlQW5hbHlzaXNNb2RlID09IEJ5dGVjb2RlQW5hbHlzaXNNb2RlOjpF
eHRyYWN0R2VuZXJhdG9yTGl2ZUNhbGxlZUxvY2FscykgeworICAgICAgICAgICAgdW5zaWduZWQg
bWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0ID0gYnl0ZWNvZGVPZmZzZXQgKyBpbnN0cnVjdGlvblsz
XS51Lm9wZXJhbmQ7CisgICAgICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIG1lcmdlUG9pbnRC
bG9jayA9IG51bGxwdHI7CisgICAgICAgICAgICBmb3IgKEJ5dGVjb2RlQmFzaWNCbG9jayogc3Vj
Y2Vzc29yIDogYmxvY2stPnN1Y2Nlc3NvcnMoKSkgeworICAgICAgICAgICAgICAgIGlmIChzdWNj
ZXNzb3ItPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCkgPT0gbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0
KSB7CisgICAgICAgICAgICAgICAgICAgIG1lcmdlUG9pbnRCbG9jayA9IHN1Y2Nlc3NvcjsKKyAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
fQorICAgICAgICAgICAgQVNTRVJUKG1lcmdlUG9pbnRCbG9jayk7CisgICAgICAgICAgICBtZXJn
ZVBvaW50QmxvY2stPmluKCkuZm9yRWFjaFNldEJpdChbJl0odW5zaWduZWQgbG9jYWwpIHsKKyAg
ICAgICAgICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCB2
aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChsb2NhbCkub2Zmc2V0KCkpOworICAgICAgICAgICAgfSk7
CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxz
SW5kZXggPSBpbnN0cnVjdGlvblsyXS51LnVuc2lnbmVkVmFsdWU7CisgICAgICAgICAgICBjb25z
dCBGYXN0Qml0VmVjdG9yJiBsaXZlbmVzcyA9IGNvZGVCbG9jay0+bGl2ZUNhbGxlZUxvY2Fsc0F0
WWllbGQobGl2ZUNhbGxlZUxvY2Fsc0luZGV4KTsKKyAgICAgICAgICAgIGxpdmVuZXNzLmZvckVh
Y2hTZXRCaXQoWyZdKHVuc2lnbmVkIGxvY2FsKSB7CisgICAgICAgICAgICAgICAgZnVuY3Rvcihj
b2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwo
bG9jYWwpLm9mZnNldCgpKTsKKyAgICAgICAgICAgIH0pOwogICAgICAgICB9Ci0gICAgICAgIEFT
U0VSVChtZXJnZVBvaW50QmxvY2spOwotICAgICAgICBtZXJnZVBvaW50QmxvY2stPmluKCkuZm9y
RWFjaFNldEJpdChbJl0odW5zaWduZWQgbG9jYWwpIHsKLSAgICAgICAgICAgIGZ1bmN0b3IoY29k
ZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGxv
Y2FsKS5vZmZzZXQoKSk7Ci0gICAgICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAg
IGRlZmF1bHQ6CkBAIC0yNzMsNyArMjgyLDcgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2Rl
T2Zmc2V0KAogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgotdm9pZCBjb21wdXRlRGVm
c0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29kZUJhc2ljQmxv
Y2sqIGJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgY29uc3QgRnVuY3RvciYgZnVuY3Rv
cikKK3ZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9j
aywgQnl0ZWNvZGVBbmFseXNpc01vZGUgYnl0ZWNvZGVBbmFseXNpc01vZGUsIEJ5dGVjb2RlQmFz
aWNCbG9jayogYmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBjb25zdCBGdW5jdG9yJiBm
dW5jdG9yKQogewogICAgIEludGVycHJldGVyKiBpbnRlcnByZXRlciA9IGNvZGVCbG9jay0+dm0o
KS0+aW50ZXJwcmV0ZXI7CiAgICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luID0gY29k
ZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpOwpAQCAtNDE1LDcgKzQyNCw4IEBAIHZvaWQg
Y29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNv
ZGVCYXNpY0Jsb2NrKiBibG9jCiAgICAgY2FzZSBvcF9kZWxfYnlfdmFsOgogICAgIGNhc2Ugb3Bf
dW5zaWduZWQ6CiAgICAgY2FzZSBvcF9nZXRfZnJvbV9hcmd1bWVudHM6IAotICAgIGNhc2Ugb3Bf
Z2V0X3Jlc3RfbGVuZ3RoOiB7CisgICAgY2FzZSBvcF9nZXRfcmVzdF9sZW5ndGg6CisgICAgY2Fz
ZSBvcF9uZXdfZ2VuZXJhdG9yX2ZyYW1lOiB7CiAgICAgICAgIEFTU0VSVChvcGNvZGVMZW5ndGhz
W29wY29kZUlEXSA+IDEpOwogICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24s
IG9wY29kZUlELCBpbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOwogICAgICAgICByZXR1cm47CkBA
IC00MzIsMTAgKzQ0MiwxOCBAQCB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQ29k
ZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvYwogICAgICAgICByZXR1
cm47CiAgICAgfQogICAgIGNhc2Ugb3BfcmVzdW1lOiB7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJU
KGJsb2NrLT5zdWNjZXNzb3JzKCkuc2l6ZSgpID09IDEpOwotICAgICAgICBibG9jay0+c3VjY2Vz
c29ycygpWzBdLT5pbigpLmZvckVhY2hTZXRCaXQoWyZdKHVuc2lnbmVkIGxvY2FsKSB7Ci0gICAg
ICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCB2aXJ0dWFs
UmVnaXN0ZXJGb3JMb2NhbChsb2NhbCkub2Zmc2V0KCkpOwotICAgICAgICB9KTsKKyAgICAgICAg
aWYgKGJ5dGVjb2RlQW5hbHlzaXNNb2RlID09IEJ5dGVjb2RlQW5hbHlzaXNNb2RlOjpFeHRyYWN0
R2VuZXJhdG9yTGl2ZUNhbGxlZUxvY2FscykgeworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQo
YmxvY2stPnN1Y2Nlc3NvcnMoKS5zaXplKCkgPT0gMSk7CisgICAgICAgICAgICBibG9jay0+c3Vj
Y2Vzc29ycygpWzBdLT5pbigpLmZvckVhY2hTZXRCaXQoWyZdKHVuc2lnbmVkIGxvY2FsKSB7Cisg
ICAgICAgICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwg
dmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwobG9jYWwpLm9mZnNldCgpKTsKKyAgICAgICAgICAgIH0p
OworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fs
c0luZGV4ID0gaW5zdHJ1Y3Rpb25bMl0udS51bnNpZ25lZFZhbHVlOworICAgICAgICAgICAgY29u
c3QgRmFzdEJpdFZlY3RvciYgbGl2ZW5lc3MgPSBjb2RlQmxvY2stPmxpdmVDYWxsZWVMb2NhbHNB
dFlpZWxkKGxpdmVDYWxsZWVMb2NhbHNJbmRleCk7CisgICAgICAgICAgICBsaXZlbmVzcy5mb3JF
YWNoU2V0Qml0KFsmXSh1bnNpZ25lZCBsb2NhbCkgeworICAgICAgICAgICAgICAgIGZ1bmN0b3Io
Y29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIHZpcnR1YWxSZWdpc3RlckZvckxvY2Fs
KGxvY2FsKS5vZmZzZXQoKSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQogICAgICAgICBy
ZXR1cm47CiAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5jcHAKaW5kZXggNTkwNWU5MTgzYzhmMTI2NjRlMmJhM2RkMjlhNWM0NjU2NzY4ZGMw
My4uMGJlNDFmMWU5ZDBhMWNiZjFmNzU2MTZmOWZjZDY4YTc4ZjE2YTE3YSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTE1NTcsMjYgKzE1NTcs
MzMgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZSgKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3Bfc2F2ZTogewotICAgICAgICAgICAgaW50IGdlbmVy
YXRvciA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgaW50IGZyYW1lID0gKCsraXQp
LT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXgg
PSAoKytpdCktPnUudW5zaWduZWRWYWx1ZTsKICAgICAgICAgICAgIGludCBvZmZzZXQgPSAoKytp
dCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGNvbnN0IEZhc3RCaXRWZWN0b3ImIGxpdmVuZXNz
ID0gbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZFtsaXZlQ2FsbGVlTG9jYWxz
SW5kZXhdOwogICAgICAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRp
b24sIGl0LCAic2F2ZSIpOwotICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICIsIHJlZ2lzdGVy
TmFtZShnZW5lcmF0b3IpLmRhdGEoKSk7CisgICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgIiwg
cmVnaXN0ZXJOYW1lKGZyYW1lKS5kYXRhKCkpOwogICAgICAgICAgICAgbGl2ZW5lc3MuZHVtcChv
dXQpOwogICAgICAgICAgICAgb3V0LnByaW50ZigiKEBsaXZlJTF1KSwgJWQoLT4lZCkiLCBsaXZl
Q2FsbGVlTG9jYWxzSW5kZXgsIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9yZXN1bWU6IHsKLSAgICAgICAg
ICAgIGludCBnZW5lcmF0b3IgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIGludCBm
cmFtZSA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgdW5zaWduZWQgbGl2ZUNhbGxl
ZUxvY2Fsc0luZGV4ID0gKCsraXQpLT51LnVuc2lnbmVkVmFsdWU7CiAgICAgICAgICAgICBjb25z
dCBGYXN0Qml0VmVjdG9yJiBsaXZlbmVzcyA9IG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fs
c0F0WWllbGRbbGl2ZUNhbGxlZUxvY2Fsc0luZGV4XTsKICAgICAgICAgICAgIHByaW50TG9jYXRp
b25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgInJlc3VtZSIpOwotICAgICAgICAgICAg
b3V0LnByaW50ZigiJXMsICIsIHJlZ2lzdGVyTmFtZShnZW5lcmF0b3IpLmRhdGEoKSk7CisgICAg
ICAgICAgICBvdXQucHJpbnRmKCIlcywgIiwgcmVnaXN0ZXJOYW1lKGZyYW1lKS5kYXRhKCkpOwog
ICAgICAgICAgICAgbGl2ZW5lc3MuZHVtcChvdXQpOwogICAgICAgICAgICAgb3V0LnByaW50Zigi
KEBsaXZlJTF1KSIsIGxpdmVDYWxsZWVMb2NhbHNJbmRleCk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQorICAgICAgICBjYXNlIG9wX25ld19nZW5lcmF0b3JfZnJhbWU6IHsKKyAgICAg
ICAgICAgIGludCBkc3QgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIHVuc2lnbmVk
IGdlbmVyYXRvckxvY2Fsc1NpemUgPSAoKytpdCktPnUudW5zaWduZWRWYWx1ZTsKKyAgICAgICAg
ICAgIHByaW50TG9jYXRpb25PcEFuZFJlZ2lzdGVyT3BlcmFuZChvdXQsIGV4ZWMsIGxvY2F0aW9u
LCBpdCwgIm5ld19nZW5lcmF0b3JfZnJhbWUiLCBkc3QpOworICAgICAgICAgICAgb3V0LnByaW50
ZigiICV1IiwgZ2VuZXJhdG9yTG9jYWxzU2l6ZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgfQogICAgICAgICBjYXNlIG9wX2Fzc2VydDogewogICAgICAgICAgICAgaW50IGNvbmRpdGlv
biA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IGxpbmUgPSAoKytpdCktPnUu
b3BlcmFuZDsKQEAgLTE4NDcsNiArMTg1NCwxMiBAQCB2b2lkIENvZGVCbG9jazo6ZmluaXNoQ3Jl
YXRpb24oVk0mIHZtLCBDb3B5UGFyc2VkQmxvY2tUYWcsIENvZGVCbG9jayYgb3RoZXIpCiAgICAg
c2V0TnVtUGFyYW1ldGVycyh1bmxpbmtlZENvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKTsKIH0K
IAorc3RydWN0IEdlbmVyYXRvclBvaW50cyB7CisgICAgc2l6ZV90IHNhdmVQb2ludDsKKyAgICBz
aXplX3QgbWVyZ2VQb2ludDsKKyAgICBzaXplX3QgcmVzdW1lUG9pbnQ7Cit9OworCiB2b2lkIENv
ZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4
ZWN1dGFibGUsIFVubGlua2VkQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jaywKICAgICBKU1Nj
b3BlKiBzY29wZSkKIHsKQEAgLTE5ODAsOSArMTk5MywxMCBAQCB2b2lkIENvZGVCbG9jazo6Zmlu
aXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVu
bGluawogICAgIEhhc2hTZXQ8SlNNb2R1bGVFbnZpcm9ubWVudCo+IHN0cm9uZ2x5UmVmZXJlbmNl
ZE1vZHVsZUVudmlyb25tZW50czsKIAogICAgIC8vIEJvb2trZWVwIHRoZSBtZXJnZSBwb2ludCBi
eXRlY29kZSBvZmZzZXRzLgotICAgIFZlY3RvcjxzaXplX3Q+IG1lcmdlUG9pbnRCeXRlY29kZU9m
ZnNldHM7CisgICAgVmVjdG9yPEdlbmVyYXRvclBvaW50cz4gZ2VuZXJhdG9yUG9pbnRzVmVjdG9y
OwogCiAgICAgUmVmQ291bnRlZEFycmF5PEluc3RydWN0aW9uPiBpbnN0cnVjdGlvbnMoaW5zdHJ1
Y3Rpb25Db3VudCk7CisgICAgdW5zaWduZWQgbmV3R2VuZXJhdG9yRnJhbWVJbnN0cnVjdGlvbk9m
ZnNldCA9IDA7CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyAhaW5zdHJ1Y3Rpb25SZWFkZXIu
YXRFbmQoKTsgKSB7CiAgICAgICAgIGNvbnN0IFVubGlua2VkSW5zdHJ1Y3Rpb24qIHBjID0gaW5z
dHJ1Y3Rpb25SZWFkZXIubmV4dCgpOwpAQCAtMjI3Myw5ICsyMjg3LDIzIEBAIHZvaWQgQ29kZUJs
b2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0
YWJsZSwgVW5saW5rCiAgICAgICAgIGNhc2Ugb3Bfc2F2ZTogewogICAgICAgICAgICAgdW5zaWdu
ZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gcGNbMl0udS5pbmRleDsKICAgICAgICAgICAgIGlu
dCBvZmZzZXQgPSBwY1szXS51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBpZiAobGl2ZUNhbGxlZUxv
Y2Fsc0luZGV4ID49IG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldHMuc2l6ZSgpKQotICAgICAgICAg
ICAgICAgIG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldHMucmVzaXplKGxpdmVDYWxsZWVMb2NhbHNJ
bmRleCArIDEpOwotICAgICAgICAgICAgbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0c1tsaXZlQ2Fs
bGVlTG9jYWxzSW5kZXhdID0gaSArIG9mZnNldDsKKyAgICAgICAgICAgIGlmIChsaXZlQ2FsbGVl
TG9jYWxzSW5kZXggPj0gZ2VuZXJhdG9yUG9pbnRzVmVjdG9yLnNpemUoKSkKKyAgICAgICAgICAg
ICAgICBnZW5lcmF0b3JQb2ludHNWZWN0b3IucmVzaXplKGxpdmVDYWxsZWVMb2NhbHNJbmRleCAr
IDEpOworICAgICAgICAgICAgZ2VuZXJhdG9yUG9pbnRzVmVjdG9yW2xpdmVDYWxsZWVMb2NhbHNJ
bmRleF0uc2F2ZVBvaW50ID0gaTsKKyAgICAgICAgICAgIGdlbmVyYXRvclBvaW50c1ZlY3Rvclts
aXZlQ2FsbGVlTG9jYWxzSW5kZXhdLm1lcmdlUG9pbnQgPSBpICsgb2Zmc2V0OworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBjYXNlIG9wX3Jlc3VtZTogeworICAgICAg
ICAgICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gcGNbMl0udS5pbmRleDsKKyAg
ICAgICAgICAgIGlmIChsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPj0gZ2VuZXJhdG9yUG9pbnRzVmVj
dG9yLnNpemUoKSkKKyAgICAgICAgICAgICAgICBnZW5lcmF0b3JQb2ludHNWZWN0b3IucmVzaXpl
KGxpdmVDYWxsZWVMb2NhbHNJbmRleCArIDEpOworICAgICAgICAgICAgZ2VuZXJhdG9yUG9pbnRz
VmVjdG9yW2xpdmVDYWxsZWVMb2NhbHNJbmRleF0ucmVzdW1lUG9pbnQgPSBpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBjYXNlIG9wX25ld19nZW5lcmF0b3JfZnJh
bWU6IHsKKyAgICAgICAgICAgIG5ld0dlbmVyYXRvckZyYW1lSW5zdHJ1Y3Rpb25PZmZzZXQgPSBp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIApAQCAtMjI4NSwyNSArMjMxMywzMSBA
QCB2b2lkIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxl
KiBvd25lckV4ZWN1dGFibGUsIFVubGluawogICAgICAgICBpICs9IG9wTGVuZ3RoOwogICAgIH0K
IAotICAgIGlmICh2bS5jb250cm9sRmxvd1Byb2ZpbGVyKCkpCi0gICAgICAgIGluc2VydEJhc2lj
QmxvY2tCb3VuZGFyaWVzRm9yQ29udHJvbEZsb3dQcm9maWxlcihpbnN0cnVjdGlvbnMpOwotCiAg
ICAgbV9pbnN0cnVjdGlvbnMgPSBXVEZNb3ZlKGluc3RydWN0aW9ucyk7CiAKICAgICAvLyBQZXJm
b3JtIGJ5dGVjb2RlIGxpdmVuZXNzIGFuYWx5c2lzIHRvIGRldGVybWluZSB3aGljaCBsb2NhbHMg
YXJlIGxpdmUgYW5kIHNob3VsZCBiZSByZXN1bWVkIHdoZW4gZXhlY3V0aW5nIG9wX3Jlc3VtZS4K
ICAgICBpZiAodW5saW5rZWRDb2RlQmxvY2stPnBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9k
ZTo6R2VuZXJhdG9yQm9keU1vZGUpIHsKLSAgICAgICAgaWYgKHNpemVfdCBjb3VudCA9IG1lcmdl
UG9pbnRCeXRlY29kZU9mZnNldHMuc2l6ZSgpKSB7CisgICAgICAgIHVuc2lnbmVkIG1heEdlbmVy
YXRvckxvY2Fsc1NpemUgPSAwOworICAgICAgICBpZiAoc2l6ZV90IGNvdW50ID0gZ2VuZXJhdG9y
UG9pbnRzVmVjdG9yLnNpemUoKSkgewogICAgICAgICAgICAgY3JlYXRlUmFyZURhdGFJZk5lY2Vz
c2FyeSgpOwotICAgICAgICAgICAgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzIGxpdmVuZXNzKHRo
aXMpOwogICAgICAgICAgICAgbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZC5n
cm93KGNvdW50KTsKLSAgICAgICAgICAgIHNpemVfdCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSAw
OwotICAgICAgICAgICAgZm9yIChzaXplX3QgYnl0ZWNvZGVPZmZzZXQgOiBtZXJnZVBvaW50Qnl0
ZWNvZGVPZmZzZXRzKSB7Ci0gICAgICAgICAgICAgICAgbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVl
TG9jYWxzQXRZaWVsZFtsaXZlQ2FsbGVlTG9jYWxzSW5kZXhdID0gbGl2ZW5lc3MuZ2V0TGl2ZW5l
c3NJbmZvQXRCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCk7Ci0gICAgICAgICAgICAgICAg
KytsaXZlQ2FsbGVlTG9jYWxzSW5kZXg7CisKKyAgICAgICAgICAgIEJ5dGVjb2RlTGl2ZW5lc3NB
bmFseXNpcyBsaXZlbmVzcyh0aGlzLCBCeXRlY29kZUFuYWx5c2lzTW9kZTo6RXh0cmFjdEdlbmVy
YXRvckxpdmVDYWxsZWVMb2NhbHMpOworICAgICAgICAgICAgZm9yIChzaXplX3QgbGl2ZUNhbGxl
ZUxvY2Fsc0luZGV4ID0gMDsgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4IDwgZ2VuZXJhdG9yUG9pbnRz
VmVjdG9yLnNpemUoKTsgKytsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpIHsKKyAgICAgICAgICAgICAg
ICBjb25zdCBHZW5lcmF0b3JQb2ludHMmIHBvaW50cyA9IGdlbmVyYXRvclBvaW50c1ZlY3Rvclts
aXZlQ2FsbGVlTG9jYWxzSW5kZXhdOworICAgICAgICAgICAgICAgIHNpemVfdCBtZXJnZVBvaW50
Qnl0ZWNvZGVPZmZzZXQgPSBwb2ludHMubWVyZ2VQb2ludDsKKyAgICAgICAgICAgICAgICBGYXN0
Qml0VmVjdG9yIGxpdmVuZXNzVmVjdG9yID0gbGl2ZW5lc3MuZ2V0TGl2ZW5lc3NJbmZvQXRCeXRl
Y29kZU9mZnNldChtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXQpOworICAgICAgICAgICAgICAgIG1f
cmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGRbbGl2ZUNhbGxlZUxvY2Fsc0luZGV4
XSA9IGxpdmVuZXNzVmVjdG9yOworICAgICAgICAgICAgICAgIG1heEdlbmVyYXRvckxvY2Fsc1Np
emUgPSBzdGQ6Om1heDx1bnNpZ25lZD4obWF4R2VuZXJhdG9yTG9jYWxzU2l6ZSwgbGl2ZW5lc3NW
ZWN0b3IuYml0Q291bnQoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KKyAgICAgICAgLy8g
RmlsbCBvcF9uZXdfZ2VuZXJhdG9yX2ZyYW1lJ3Mgc2l6ZS4KKyAgICAgICAgbV9pbnN0cnVjdGlv
bnNbbmV3R2VuZXJhdG9yRnJhbWVJbnN0cnVjdGlvbk9mZnNldCArIDJdLnUudW5zaWduZWRWYWx1
ZSA9IG1heEdlbmVyYXRvckxvY2Fsc1NpemU7CiAgICAgfQogCisgICAgaWYgKHZtLmNvbnRyb2xG
bG93UHJvZmlsZXIoKSkKKyAgICAgICAgaW5zZXJ0QmFzaWNCbG9ja0JvdW5kYXJpZXNGb3JDb250
cm9sRmxvd1Byb2ZpbGVyKG1faW5zdHJ1Y3Rpb25zKTsKKwogICAgIC8vIFNldCBvcHRpbWl6YXRp
b24gdGhyZXNob2xkcyBvbmx5IGFmdGVyIG1faW5zdHJ1Y3Rpb25zIGlzIGluaXRpYWxpemVkLCBz
aW5jZSB0aGVzZQogICAgIC8vIHJlbHkgb24gdGhlIGluc3RydWN0aW9uIGNvdW50IChhbmQgYXJl
IGluIHRoZW9yeSBwZXJtaXR0ZWQgdG8gYWxzbyBpbnNwZWN0IHRoZQogICAgIC8vIGluc3RydWN0
aW9uIHN0cmVhbSB0byBtb3JlIGFjY3VyYXRlIGFzc2VzcyB0aGUgY29zdCBvZiB0aWVyLXVwKS4K
QEAgLTQxMjIsNyArNDE1Niw3IEBAIFZhbHVlUHJvZmlsZSogQ29kZUJsb2NrOjp2YWx1ZVByb2Zp
bGVGb3JCeXRlY29kZU9mZnNldChpbnQgYnl0ZWNvZGVPZmZzZXQpCiAKIHZvaWQgQ29kZUJsb2Nr
Ojp2YWxpZGF0ZSgpCiB7Ci0gICAgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzIGxpdmVuZXNzKHRo
aXMpOyAvLyBDb21wdXRlIGRpcmVjdGx5IGZyb20gc2NyYXRjaCBzbyBpdCBkb2Vzbid0IGVmZmVj
dCBDb2RlQmxvY2sgZm9vdHByaW50LgorICAgIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcyBsaXZl
bmVzcyh0aGlzLCBCeXRlY29kZUFuYWx5c2lzTW9kZTo6U3RhbmRhcmQpOyAvLyBDb21wdXRlIGRp
cmVjdGx5IGZyb20gc2NyYXRjaCBzbyBpdCBkb2Vzbid0IGVmZmVjdCBDb2RlQmxvY2sgZm9vdHBy
aW50LgogICAgIAogICAgIEZhc3RCaXRWZWN0b3IgbGl2ZUF0SGVhZCA9IGxpdmVuZXNzLmdldExp
dmVuZXNzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQoMCk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKaW5kZXggOTliZmIwNDVkOTZhZWJiMjA0NTgxYzUxM2M3
ZjdkYWQ5YzhiODQzYi4uMmQ4YWZjMTNlMGI1MmJiN2RiNGYxMGYyYzYyYjc2OGE4MWVhOTk5MSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaApAQCAtNjIzLDcg
KzYyMyw3IEBAIGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgICAgICAgICAg
ICAgIHJldHVybiAqbV9saXZlbmVzc0FuYWx5c2lzOwogICAgICAgICB9CiAgICAgICAgIHN0ZDo6
dW5pcXVlX3B0cjxCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM+IGFuYWx5c2lzID0KLSAgICAgICAg
ICAgIHN0ZDo6bWFrZV91bmlxdWU8Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzPih0aGlzKTsKKyAg
ICAgICAgICAgIHN0ZDo6bWFrZV91bmlxdWU8Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzPih0aGlz
LCBCeXRlY29kZUFuYWx5c2lzTW9kZTo6U3RhbmRhcmQpOwogICAgICAgICB7CiAgICAgICAgICAg
ICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihtX2xvY2spOwogICAgICAgICAgICAgaWYgKCFt
X2xpdmVuZXNzQW5hbHlzaXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9QcmVjaXNlSnVtcFRhcmdldHMuY3BwCmluZGV4IGUyY2IwMDA0ODM3OTRiYTkyZDUxMGRj
ZjVmYTk5NDg4NWEyM2RjM2QuLmIwMjk4ZTQzMTM4ZWMwZjRmZmY5M2E0N2EyYThmNWEwZmY2ODRj
ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVt
cFRhcmdldHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVjaXNl
SnVtcFRhcmdldHMuY3BwCkBAIC0zMSw3ICszMSw3IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogdGVt
cGxhdGUgPHNpemVfdCB2ZWN0b3JTaXplPgotc3RhdGljIHZvaWQgZ2V0SnVtcFRhcmdldHNGb3JC
eXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgSW50ZXJwcmV0ZXIqIGludGVycHJl
dGVyLCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGJ5dGVjb2RlT2Zm
c2V0LCBWZWN0b3I8dW5zaWduZWQsIHZlY3RvclNpemU+JiBvdXQpCitzdGF0aWMgdm9pZCBnZXRK
dW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29k
ZUFuYWx5c2lzTW9kZSBieXRlY29kZUFuYWx5c2lzTW9kZSwgSW50ZXJwcmV0ZXIqIGludGVycHJl
dGVyLCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGJ5dGVjb2RlT2Zm
c2V0LCBWZWN0b3I8dW5zaWduZWQsIHZlY3RvclNpemU+JiBvdXQpCiB7CiAgICAgT3Bjb2RlSUQg
b3Bjb2RlSUQgPSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25zQmVnaW5bYnl0
ZWNvZGVPZmZzZXRdLnUub3Bjb2RlKTsKICAgICBJbnN0cnVjdGlvbiogY3VycmVudCA9IGluc3Ry
dWN0aW9uc0JlZ2luICsgYnl0ZWNvZGVPZmZzZXQ7CkBAIC01NCw5ICs1NCwxNCBAQCBzdGF0aWMg
dm9pZCBnZXRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2Nr
LCBJbnRlcnByZXRlciogaQogICAgIGNhc2Ugb3Bfam5sZXNzZXE6CiAgICAgY2FzZSBvcF9qbmdy
ZWF0ZXI6CiAgICAgY2FzZSBvcF9qbmdyZWF0ZXJlcToKLSAgICBjYXNlIG9wX3NhdmU6IC8vIFRo
ZSBqdW1wIG9mIG9wX3NhdmUgaXMgcHVyZWx5IGZvciBjYWxjdWxhdGluZyBsaXZlbmVzcy4KICAg
ICAgICAgb3V0LmFwcGVuZChieXRlY29kZU9mZnNldCArIGN1cnJlbnRbM10udS5vcGVyYW5kKTsK
ICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBvcF9zYXZlOiB7CisgICAgICAgIC8vIFRoZSBqdW1w
IG9mIG9wX3NhdmUgdW5kZXIgRXh0cmFjdEdlbmVyYXRvckxpdmVDYWxsZWVMb2NhbHMgbW9kZSBp
cyBwdXJlbHkgZm9yIGNhbGN1bGF0aW5nIGxpdmVuZXNzLgorICAgICAgICBpZiAoYnl0ZWNvZGVB
bmFseXNpc01vZGUgPT0gQnl0ZWNvZGVBbmFseXNpc01vZGU6OkV4dHJhY3RHZW5lcmF0b3JMaXZl
Q2FsbGVlTG9jYWxzKQorICAgICAgICAgICAgb3V0LmFwcGVuZChieXRlY29kZU9mZnNldCArIGN1
cnJlbnRbM10udS5vcGVyYW5kKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogICAgIGNhc2Ugb3Bf
c3dpdGNoX2ltbToKICAgICBjYXNlIG9wX3N3aXRjaF9jaGFyOiB7CiAgICAgICAgIFNpbXBsZUp1
bXBUYWJsZSYgdGFibGUgPSBjb2RlQmxvY2stPnN3aXRjaEp1bXBUYWJsZShjdXJyZW50WzFdLnUu
b3BlcmFuZCk7CkBAIC04Miw3ICs4Nyw3IEBAIHN0YXRpYyB2b2lkIGdldEp1bXBUYXJnZXRzRm9y
Qnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEludGVycHJldGVyKiBpCiAgICAg
fQogfQogCi12b2lkIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMoQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssIFZlY3Rvcjx1bnNpZ25lZCwgMzI+JiBvdXQpCit2b2lkIGNvbXB1dGVQcmVjaXNlSnVtcFRh
cmdldHMoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQW5hbHlzaXNNb2RlIGJ5dGVjb2Rl
QW5hbHlzaXNNb2RlLCBWZWN0b3I8dW5zaWduZWQsIDMyPiYgb3V0KQogewogICAgIEFTU0VSVChv
dXQuaXNFbXB0eSgpKTsKICAgICAKQEAgLTEwMiw3ICsxMDcsNyBAQCB2b2lkIGNvbXB1dGVQcmVj
aXNlSnVtcFRhcmdldHMoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFZlY3Rvcjx1bnNpZ25lZCwgMzI+
JiBvdXQpCiAgICAgdW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCA9IGNvZGVCbG9jay0+aW5zdHJ1
Y3Rpb25zKCkuc2l6ZSgpOwogICAgIGZvciAodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQgPSAwOyBi
eXRlY29kZU9mZnNldCA8IGluc3RydWN0aW9uQ291bnQ7KSB7CiAgICAgICAgIE9wY29kZUlEIG9w
Y29kZUlEID0gaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGluc3RydWN0aW9uc0JlZ2luW2J5dGVj
b2RlT2Zmc2V0XS51Lm9wY29kZSk7Ci0gICAgICAgIGdldEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVP
ZmZzZXQoY29kZUJsb2NrLCBpbnRlcnByZXRlciwgaW5zdHJ1Y3Rpb25zQmVnaW4sIGJ5dGVjb2Rl
T2Zmc2V0LCBvdXQpOworICAgICAgICBnZXRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KGNv
ZGVCbG9jaywgYnl0ZWNvZGVBbmFseXNpc01vZGUsIGludGVycHJldGVyLCBpbnN0cnVjdGlvbnNC
ZWdpbiwgYnl0ZWNvZGVPZmZzZXQsIG91dCk7CiAgICAgICAgIGJ5dGVjb2RlT2Zmc2V0ICs9IG9w
Y29kZUxlbmd0aHNbb3Bjb2RlSURdOwogICAgIH0KICAgICAKQEAgLTEyMywxMSArMTI4LDExIEBA
IHZvaWQgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgVmVj
dG9yPHVuc2lnbmVkLCAzMj4mIG91dCkKICAgICBvdXQuc2hyaW5rVG9GaXQoKTsKIH0KIAotdm9p
ZCBmaW5kSnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywg
dW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIFZlY3Rvcjx1bnNpZ25lZCwgMT4mIG91dCkKK3ZvaWQg
ZmluZEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5
dGVjb2RlQW5hbHlzaXNNb2RlIGJ5dGVjb2RlQW5hbHlzaXNNb2RlLCB1bnNpZ25lZCBieXRlY29k
ZU9mZnNldCwgVmVjdG9yPHVuc2lnbmVkLCAxPiYgb3V0KQogewogICAgIEludGVycHJldGVyKiBp
bnRlcnByZXRlciA9IGNvZGVCbG9jay0+dm0oKS0+aW50ZXJwcmV0ZXI7CiAgICAgSW5zdHJ1Y3Rp
b24qIGluc3RydWN0aW9uc0JlZ2luID0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigp
OwotICAgIGdldEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoY29kZUJsb2NrLCBpbnRlcnBy
ZXRlciwgaW5zdHJ1Y3Rpb25zQmVnaW4sIGJ5dGVjb2RlT2Zmc2V0LCBvdXQpOworICAgIGdldEp1
bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoY29kZUJsb2NrLCBieXRlY29kZUFuYWx5c2lzTW9k
ZSwgaW50ZXJwcmV0ZXIsIGluc3RydWN0aW9uc0JlZ2luLCBieXRlY29kZU9mZnNldCwgb3V0KTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmgKaW5kZXggODUyNDEzZDc3Yjc5ODk4NGIyN2Nl
ZjBlZDYyYmM5NGM2ODllMjEyYy4uNTgwYTc5MjUzMjZiNzQ1MzQzYmQzODExYTdjNWExMThhOThm
ZmQyNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VK
dW1wVGFyZ2V0cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVjaXNl
SnVtcFRhcmdldHMuaApAQCAtMzEsOSArMzEsOSBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIC8vIFJl
dHVybiBhIHNvcnRlZCBsaXN0IG9mIGJ5dGVjb2RlIGluZGV4IHRoYXQgYXJlIHRoZSBkZXN0aW5h
dGlvbiBvZiBhIGp1bXAuCi12b2lkIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMoQ29kZUJsb2Nr
KiwgVmVjdG9yPHVuc2lnbmVkLCAzMj4mIG91dCk7Cit2b2lkIGNvbXB1dGVQcmVjaXNlSnVtcFRh
cmdldHMoQ29kZUJsb2NrKiwgQnl0ZWNvZGVBbmFseXNpc01vZGUsIFZlY3Rvcjx1bnNpZ25lZCwg
MzI+JiBvdXQpOwogCi12b2lkIGZpbmRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVC
bG9jayosIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBWZWN0b3I8dW5zaWduZWQsIDE+JiBvdXQp
Owordm9pZCBmaW5kSnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqLCBCeXRl
Y29kZUFuYWx5c2lzTW9kZSwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIFZlY3Rvcjx1bnNpZ25l
ZCwgMT4mIG91dCk7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4
IGQxNWUyMjQzNTI2NmZlMWFmZjNkNWY3OWExZGRhNzViOWJkYWYzZjMuLjJlZjFiNTZjYTM1NDM3
YjgzMTc1NDI3YTZkODJiMTJkOTg1ZTBkNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC0yNTcsNyAr
MjU3LDcgQEAgUGFyc2VyRXJyb3IgQnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKCkKICAgICAg
ICAgLy8gICAgZnVuY3Rpb24gKmdlbihhLCBiID0gaGVsbG8oKSkKICAgICAgICAgLy8gICAgewog
ICAgICAgICAvLyAgICAgICAgcmV0dXJuIHsKLSAgICAgICAgLy8gICAgICAgICAgICBAZ2VuZXJh
dG9yTmV4dDogZnVuY3Rpb24gKEBnZW5lcmF0b3IsIEBnZW5lcmF0b3JTdGF0ZSwgQGdlbmVyYXRv
clZhbHVlLCBAZ2VuZXJhdG9yUmVzdW1lTW9kZSkKKyAgICAgICAgLy8gICAgICAgICAgICBAZ2Vu
ZXJhdG9yTmV4dDogZnVuY3Rpb24gKEBnZW5lcmF0b3IsIEBnZW5lcmF0b3JTdGF0ZSwgQGdlbmVy
YXRvclZhbHVlLCBAZ2VuZXJhdG9yUmVzdW1lTW9kZSwgQGdlbmVyYXRvckZyYW1lKQogICAgICAg
ICAvLyAgICAgICAgICAgIHsKICAgICAgICAgLy8gICAgICAgICAgICAgICAgYXJndW1lbnRzOyAg
Ly8gVGhpcyBgYXJndW1lbnRzYCBzaG91bGQgcmVmZXJlbmNlIHRvIHRoZSBnZW4ncyBhcmd1bWVu
dHMuCiAgICAgICAgIC8vICAgICAgICAgICAgICAgIC4uLgpAQCAtNTM3LDYgKzUzNyw5IEBAIFBh
cnNlckVycm9yIEJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZSgpCiAgICAgY2FzZSBTb3VyY2VQ
YXJzZU1vZGU6OkdlbmVyYXRvckJvZHlNb2RlOiB7CiAgICAgICAgIC8vIHx0aGlzfCBpcyBhbHJl
YWR5IGZpbGxlZCBjb3JyZWN0bHkgYmVmb3JlIGhlcmUuCiAgICAgICAgIGVtaXRMb2FkKG1fbmV3
VGFyZ2V0UmVnaXN0ZXIsIGpzVW5kZWZpbmVkKCkpOworCisgICAgICAgIGVtaXROZXdHZW5lcmF0
b3JGcmFtZShnZW5lcmF0b3JGcmFtZVJlZ2lzdGVyKCkpOworICAgICAgICBlbWl0UHV0QnlJZChn
ZW5lcmF0b3JSZWdpc3RlcigpLCBwcm9wZXJ0eU5hbWVzKCkuZ2VuZXJhdG9yRnJhbWVQcml2YXRl
TmFtZSwgZ2VuZXJhdG9yRnJhbWVSZWdpc3RlcigpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQog
CkBAIC0yNzQ0LDYgKzI3NDcsMTQgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXROZXdGdW5jdGlvbihSZWdpc3RlcklEKiBkc3QsIEZ1bmN0aW9uTWV0YWRhdGEKICAgICByZXR1
cm4gZHN0OwogfQogCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0dlbmVy
YXRvckZyYW1lKFJlZ2lzdGVySUQqIGRzdCkKK3sKKyAgICBlbWl0T3Bjb2RlKG9wX25ld19nZW5l
cmF0b3JfZnJhbWUpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChkc3QtPmluZGV4KCkpOwor
ICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsKKyAgICByZXR1cm4gZHN0OworfQorCiBSZWdp
c3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENhbGwoUmVnaXN0ZXJJRCogZHN0LCBSZWdp
c3RlcklEKiBmdW5jLCBFeHBlY3RlZEZ1bmN0aW9uIGV4cGVjdGVkRnVuY3Rpb24sIENhbGxBcmd1
bWVudHMmIGNhbGxBcmd1bWVudHMsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3Qg
SlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVu
ZCkKIHsKICAgICByZXR1cm4gZW1pdENhbGwob3BfY2FsbCwgZHN0LCBmdW5jLCBleHBlY3RlZEZ1
bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQpOwpAQCAt
NDE0NSw3ICs0MTU2LDcgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFNhdmUoTGFiZWwq
IG1lcmdlUG9pbnQsIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmQKIHsKICAgICBzaXplX3Qg
YmVnaW4gPSBpbnN0cnVjdGlvbnMoKS5zaXplKCk7CiAgICAgZW1pdE9wY29kZShvcF9zYXZlKTsK
LSAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobV9nZW5lcmF0b3JSZWdpc3Rlci0+aW5kZXgoKSk7
CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGdlbmVyYXRvckZyYW1lUmVnaXN0ZXIoKS0+aW5k
ZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGxpdmVDYWxsZWVMb2NhbHNJbmRleCk7
CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1lcmdlUG9pbnQtPmJpbmQoYmVnaW4sIGluc3Ry
dWN0aW9ucygpLnNpemUoKSkpOwogfQpAQCAtNDE1NCw3ICs0MTY1LDcgQEAgdm9pZCBCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdFJlc3VtZShMYWJlbCogbWVyZ2VQb2ludCwgdW5zaWduZWQgbGl2ZUNh
bGxlZUxvY2Fsc0kKIHsKICAgICBlbWl0R2VuZXJhdG9yU3RhdGVMYWJlbCgpOwogICAgIGVtaXRP
cGNvZGUob3BfcmVzdW1lKTsKLSAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobV9nZW5lcmF0b3JS
ZWdpc3Rlci0+aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGdlbmVyYXRvckZy
YW1lUmVnaXN0ZXIoKS0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGxpdmVD
YWxsZWVMb2NhbHNJbmRleCk7CiAgICAgZW1pdExhYmVsKG1lcmdlUG9pbnQpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5oCmluZGV4IDdkMGMyMGI2ZjUxNmExN2U4OTNmMWJiYTA4MDNjMTMzM2ZmYzhkMGQuLjNkMzM0
NzgxNWFjMzBhODJlNjI2ZTNlMDc4MDgxYmUyYjNlOWJlM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTUy
Miw2ICs1MjIsNyBAQAogICAgICAgICBSZWdpc3RlcklEKiBlbWl0TmV3RGVmYXVsdENvbnN0cnVj
dG9yKFJlZ2lzdGVySUQqIGRzdCwgQ29uc3RydWN0b3JLaW5kLCBjb25zdCBJZGVudGlmaWVyJiBu
YW1lKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdE5ld0Fycm93RnVuY3Rpb25FeHByZXNzaW9u
KFJlZ2lzdGVySUQqLCBBcnJvd0Z1bmNFeHByTm9kZSopOwogICAgICAgICBSZWdpc3RlcklEKiBl
bWl0TmV3UmVnRXhwKFJlZ2lzdGVySUQqIGRzdCwgUmVnRXhwKik7CisgICAgICAgIFJlZ2lzdGVy
SUQqIGVtaXROZXdHZW5lcmF0b3JGcmFtZShSZWdpc3RlcklEKiBkc3QpOwogCiAgICAgICAgIFJl
Z2lzdGVySUQqIGVtaXRNb3ZlTGlua1RpbWVDb25zdGFudChSZWdpc3RlcklEKiBkc3QsIExpbmtU
aW1lQ29uc3RhbnQpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0TW92ZUVtcHR5VmFsdWUoUmVn
aXN0ZXJJRCogZHN0KTsKQEAgLTY4NCw2ICs2ODUsNyBAQAogICAgICAgICBSZWdpc3RlcklEKiBn
ZW5lcmF0b3JTdGF0ZVJlZ2lzdGVyKCkgeyByZXR1cm4gJm1fcGFyYW1ldGVyc1syXTsgfQogICAg
ICAgICBSZWdpc3RlcklEKiBnZW5lcmF0b3JWYWx1ZVJlZ2lzdGVyKCkgeyByZXR1cm4gJm1fcGFy
YW1ldGVyc1szXTsgfQogICAgICAgICBSZWdpc3RlcklEKiBnZW5lcmF0b3JSZXN1bWVNb2RlUmVn
aXN0ZXIoKSB7IHJldHVybiAmbV9wYXJhbWV0ZXJzWzRdOyB9CisgICAgICAgIFJlZ2lzdGVySUQq
IGdlbmVyYXRvckZyYW1lUmVnaXN0ZXIoKSB7IHJldHVybiAmbV9wYXJhbWV0ZXJzWzVdOyB9CiAK
ICAgICAgICAgQ29kZVR5cGUgY29kZVR5cGUoKSBjb25zdCB7IHJldHVybiBtX2NvZGVUeXBlOyB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RIZWFw
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SGVhcC5oCmluZGV4IDRk
ZWM4ZmEwMzc3NmUwMWU2Y2QzNzQ2MDY1OWNjNTYxMTYyMzhjNjUuLjljODZmNjkyYjhkMzg1ZDll
YjI0Njk3ZDc5Mjc5ZGY2Y2RmNDVjZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQWJzdHJhY3RIZWFwLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdBYnN0cmFjdEhlYXAuaApAQCAtNjgsNiArNjgsOCBAQAogICAgIG1hY3JvKFNjb3BlUHJvcGVy
dGllcykgXAogICAgIG1hY3JvKFR5cGVkQXJyYXlQcm9wZXJ0aWVzKSBcCiAgICAgbWFjcm8oSGVh
cE9iamVjdENvdW50KSAvKiBVc2VkIHRvIHJlZmxlY3QgdGhlIGZhY3QgdGhhdCBzb21lIGFsbG9j
YXRpb25zIHJldmVhbCBvYmplY3QgaWRlbnRpdHkgKi9cCisgICAgbWFjcm8oR2VuZXJhdG9yTG9j
YWxzKSBcCisgICAgbWFjcm8oR2VuZXJhdG9yTG9jYWxDb3VudCkgXAogICAgIG1hY3JvKFJlZ0V4
cFN0YXRlKSBcCiAgICAgbWFjcm8oTWF0aERvdFJhbmRvbVN0YXRlKSBcCiAgICAgbWFjcm8oSW50
ZXJuYWxTdGF0ZSkgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdB
YnN0cmFjdEludGVycHJldGVySW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCmluZGV4IDllZWM2M2NlYjA3MWJjMTQ4NmEw
MTJjMjg1MDFkYjYyNDI2YmRlN2IuLjQxYjA0ZWJlZjExOTdjZmRmMTQ4NzFhMTNhMjNkZDIyYjFk
ZGQyOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJ
bnRlcnByZXRlcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fi
c3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKQEAgLTE2ODcsNiArMTY4NywxMCBAQAogICAgIGNh
c2UgTmV3UmVnZXhwOgogICAgICAgICBmb3JOb2RlKG5vZGUpLnNldChtX2dyYXBoLCBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5yZWdFeHBTdHJ1Y3R1cmUo
KSk7CiAgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBOZXdHZW5lcmF0b3JGcmFtZToKKyAgICAg
ICAgZm9yTm9kZShub2RlKS5zZXQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9k
ZS0+b3JpZ2luLnNlbWFudGljKS0+Z2VuZXJhdG9yRnJhbWVTdHJ1Y3R1cmUoKSk7CisgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgCiAgICAgY2FzZSBUb1RoaXM6IHsKICAgICAgICAgQWJzdHJh
Y3RWYWx1ZSYgc291cmNlID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSk7CkBAIC0yNTEwLDYgKzI1
MTQsMTcgQEAKICAgICAgICAgZm9yTm9kZShub2RlKS5tYWtlSGVhcFRvcCgpOwogICAgICAgICBi
cmVhazsKIAorICAgIGNhc2UgU2V0R2VuZXJhdG9yTG9jYWw6CisgICAgY2FzZSBSZXNpemVHZW5l
cmF0b3JMb2NhbHM6CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBHZXRHZW5lcmF0b3JMb2Nh
bDogeworICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGF0dGVtcHQgdG8gY29udmVydCBpdCB0
byBjb25zdGFudC4KKyAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE1MzE4MworICAgICAgICBmb3JOb2RlKG5vZGUpLm1ha2VCeXRlY29kZVRvcCgpOwor
ICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBjYXNlIEZvcmNlT1NSRXhpdDoKICAgICBjYXNl
IENoZWNrQmFkQ2VsbDoKICAgICAgICAgbV9zdGF0ZS5zZXRJc1ZhbGlkKGZhbHNlKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKaW5kZXggMzY0
NGEyZmQxOWEwZDliM2RkYTdiMDY4YTAwNDkwYTU4MjYyMDg2ZC4uMTcyNzRlNTk0YjgwNTU1ZGNm
MjhlMDhkYTMxOTc5YmUxYWJkNGZlMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJERkdB
cnJheU1vZGUuaCIKICNpbmNsdWRlICJERkdDYXBhYmlsaXRpZXMuaCIKICNpbmNsdWRlICJERkdD
bG9iYmVyc0V4aXRTdGF0ZS5oIgorI2luY2x1ZGUgIkRGR0dlbmVyYXRvckxvY2FsRGF0YS5oIgog
I2luY2x1ZGUgIkRGR0dyYXBoLmgiCiAjaW5jbHVkZSAiREZHSklUQ29kZS5oIgogI2luY2x1ZGUg
IkdldEJ5SWRTdGF0dXMuaCIKQEAgLTk2Myw2ICs5NjQsMTEgQEAgY2xhc3MgQnl0ZUNvZGVQYXJz
ZXIgewogICAgICAgICBmb3IgKEFyZ3VtZW50UG9zaXRpb24qIGFyZ3VtZW50IDogbV9pbmxpbmVT
dGFja1RvcC0+bV9hcmd1bWVudFBvc2l0aW9ucykKICAgICAgICAgICAgIGFyZ3VtZW50LT5tZXJn
ZVNob3VsZE5ldmVyVW5ib3godHJ1ZSk7CiAgICAgfQorCisgICAgR2VuZXJhdG9yTG9jYWxEYXRh
KiBuZXdHZW5lcmF0b3JMb2NhbERhdGEoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZ3JhcGgu
bV9nZW5lcmF0b3JMb2NhbERhdGEuYWRkKCk7CisgICAgfQogICAgIAogICAgIFZNKiBtX3ZtOwog
ICAgIENvZGVCbG9jayogbV9jb2RlQmxvY2s7CkBAIC0xMDUxLDYgKzEwNTcsMTEgQEAgY2xhc3Mg
Qnl0ZUNvZGVQYXJzZXIgewogICAgICAgICBDYWxsTGlua0luZm9NYXAgbV9jYWxsTGlua0luZm9z
OwogICAgICAgICBTdHViSW5mb01hcCBtX3N0dWJJbmZvczsKICAgICAgICAgQnlWYWxJbmZvTWFw
IG1fYnlWYWxJbmZvczsKKworICAgICAgICAvLyBTaW5jZSB0aGUgb3BfcmVzdW1lIGlzIGVtaXR0
ZWQgYWZ0ZXIgdGhlIGNvcnJlc3BvbmRpbmcgb3Bfc2F2ZQorICAgICAgICAvLyBhbmQgdGhlcmUg
aXMgbm8gb3RoZXIgb3BfcmVzdW1lIGFuZCBvcF9zYXZlIGJldHdlZW4gdGhlbSwKKyAgICAgICAg
Ly8gd2UgY2FuIHRyYWNrIHRoZXNlIGNvcnJlc3BvbmRlbmNlIGJ5IGp1c3QgdHJhY2tpbmcgY3Vy
cmVudGx5IGZvY3VzaW5nIG9wX3NhdmUuCisgICAgICAgIE9wZXJhbmRzPEdlbmVyYXRvckxvY2Fs
RGF0YSo+IG1fZ2VuZXJhdG9yTG9jYWxzOwogICAgICAgICAKICAgICAgICAgLy8gRGlkIHdlIHNl
ZSBhbnkgcmV0dXJucz8gV2UgbmVlZCB0byBoYW5kbGUgdGhlICh1bmNvbW1vbiBidXQgbmVjZXNz
YXJ5KQogICAgICAgICAvLyBjYXNlIHdoZXJlIGEgcHJvY2VkdXJlIHRoYXQgZG9lcyBub3QgcmV0
dXJuIHdhcyBpbmxpbmVkLgpAQCAtMzM0MSw2ICszMzUyLDExIEBAIGJvb2wgQnl0ZUNvZGVQYXJz
ZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgICAgICBORVhUX09QQ09ERShv
cF9uZXdfcmVnZXhwKTsKICAgICAgICAgfQogCisgICAgICAgIGNhc2Ugb3BfbmV3X2dlbmVyYXRv
cl9mcmFtZTogeworICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1
Y3Rpb25bMV0udS5vcGVyYW5kKSwgYWRkVG9HcmFwaChOZXdHZW5lcmF0b3JGcmFtZSwgT3BJbmZv
KGN1cnJlbnRJbnN0cnVjdGlvblsyXS51LnVuc2lnbmVkVmFsdWUpKSk7CisgICAgICAgICAgICBO
RVhUX09QQ09ERShvcF9uZXdfZ2VuZXJhdG9yX2ZyYW1lKTsKKyAgICAgICAgfQorCiAgICAgICAg
IGNhc2Ugb3BfZ2V0X3Jlc3RfbGVuZ3RoOiB7CiAgICAgICAgICAgICBJbmxpbmVDYWxsRnJhbWUq
IGlubGluZUNhbGxGcmFtZSA9IHRoaXMtPmlubGluZUNhbGxGcmFtZSgpOwogICAgICAgICAgICAg
Tm9kZSogbGVuZ3RoOwpAQCAtMzM2OCw2ICszMzg0LDQxIEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6
OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgICAgICAgICAgYXJyYXksIGFycmF5
TGVuZ3RoKTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2NvcHlfcmVzdCk7CiAgICAgICAg
IH0KKworICAgICAgICBjYXNlIG9wX3NhdmU6IHsKKyAgICAgICAgICAgIE5vZGUqIGZyYW1lID0g
Z2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSk7Cisg
ICAgICAgICAgICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSBjdXJyZW50SW5zdHJ1
Y3Rpb25bMl0udS51bnNpZ25lZFZhbHVlOworICAgICAgICAgICAgY29uc3QgRmFzdEJpdFZlY3Rv
ciYgbGl2ZW5lc3MgPSBtX2lubGluZVN0YWNrVG9wLT5tX2NvZGVCbG9jay0+bGl2ZUNhbGxlZUxv
Y2Fsc0F0WWllbGQobGl2ZUNhbGxlZUxvY2Fsc0luZGV4KTsKKworICAgICAgICAgICAgbV9pbmxp
bmVTdGFja1RvcC0+bV9nZW5lcmF0b3JMb2NhbHMgPSBPcGVyYW5kczxHZW5lcmF0b3JMb2NhbERh
dGEqPihtX251bUFyZ3VtZW50cywgbV9udW1Mb2NhbHMpOworCisgICAgICAgICAgICBhZGRUb0dy
YXBoKFJlc2l6ZUdlbmVyYXRvckxvY2FscywgT3BJbmZvKGxpdmVuZXNzLmJpdENvdW50KCkpLCBm
cmFtZSk7CisgICAgICAgICAgICB1bnNpZ25lZCBnZW5lcmF0b3JMb2NhbEluZGV4ID0gMDsKKyAg
ICAgICAgICAgIGxpdmVuZXNzLmZvckVhY2hTZXRCaXQoWyZdKHNpemVfdCBpbmRleCkgeworICAg
ICAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kID0gdmlydHVhbFJlZ2lzdGVyRm9y
TG9jYWwoaW5kZXgpOworICAgICAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciByZW1hcHBlZE9w
ZXJhbmQgPSBtX2lubGluZVN0YWNrVG9wLT5yZW1hcE9wZXJhbmQob3BlcmFuZCk7CisgICAgICAg
ICAgICAgICAgTm9kZSogbG9jYWwgPSBnZXQob3BlcmFuZCk7CisgICAgICAgICAgICAgICAgR2Vu
ZXJhdG9yTG9jYWxEYXRhKiBnZW5lcmF0b3JMb2NhbERhdGEgPSBuZXdHZW5lcmF0b3JMb2NhbERh
dGEoKTsKKyAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2dlbmVyYXRvckxvY2Fs
cy5sb2NhbChyZW1hcHBlZE9wZXJhbmQudG9Mb2NhbCgpKSA9IGdlbmVyYXRvckxvY2FsRGF0YTsK
KyAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFNldEdlbmVyYXRvckxvY2FsLCBPcEluZm8oZ2Vu
ZXJhdG9yTG9jYWxJbmRleCsrKSwgT3BJbmZvKGdlbmVyYXRvckxvY2FsRGF0YSksIGZyYW1lLCBs
b2NhbCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX3NhdmUp
OworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBvcF9yZXN1bWU6IHsKKyAgICAgICAgICAgIE5v
ZGUqIGZyYW1lID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5v
cGVyYW5kKSk7CisgICAgICAgICAgICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSBj
dXJyZW50SW5zdHJ1Y3Rpb25bMl0udS51bnNpZ25lZFZhbHVlOworICAgICAgICAgICAgY29uc3Qg
RmFzdEJpdFZlY3RvciYgbGl2ZW5lc3MgPSBtX2lubGluZVN0YWNrVG9wLT5tX2NvZGVCbG9jay0+
bGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQobGl2ZUNhbGxlZUxvY2Fsc0luZGV4KTsKKyAgICAgICAg
ICAgIHVuc2lnbmVkIGdlbmVyYXRvckxvY2FsSW5kZXggPSAwOworICAgICAgICAgICAgbGl2ZW5l
c3MuZm9yRWFjaFNldEJpdChbJl0oc2l6ZV90IGluZGV4KSB7CisgICAgICAgICAgICAgICAgVmly
dHVhbFJlZ2lzdGVyIG9wZXJhbmQgPSB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChpbmRleCk7Cisg
ICAgICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHJlbWFwcGVkT3BlcmFuZCA9IG1faW5saW5l
U3RhY2tUb3AtPnJlbWFwT3BlcmFuZChvcGVyYW5kKTsKKyAgICAgICAgICAgICAgICBHZW5lcmF0
b3JMb2NhbERhdGEqIGdlbmVyYXRvckxvY2FsRGF0YSA9IG1faW5saW5lU3RhY2tUb3AtPm1fZ2Vu
ZXJhdG9yTG9jYWxzLmxvY2FsKHJlbWFwcGVkT3BlcmFuZC50b0xvY2FsKCkpOworICAgICAgICAg
ICAgICAgIHNldChvcGVyYW5kLCBhZGRUb0dyYXBoKEdldEdlbmVyYXRvckxvY2FsLCBPcEluZm8o
Z2VuZXJhdG9yTG9jYWxJbmRleCsrKSwgT3BJbmZvKGdlbmVyYXRvckxvY2FsRGF0YSksIGZyYW1l
KSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIGFkZFRvR3JhcGgoUmVzaXplR2VuZXJh
dG9yTG9jYWxzLCBPcEluZm8oMCksIGZyYW1lKTsKKyAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9w
X3Jlc3VtZSk7CisgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICAvLyA9PT0gQml0d2lz
ZSBvcGVyYXRpb25zID09PQogCkBAIC00OTE1LDcgKzQ5NjYsNyBAQCB2b2lkIEJ5dGVDb2RlUGFy
c2VyOjpwYXJzZUNvZGVCbG9jaygpCiAgICAgfQogICAgIAogICAgIFZlY3Rvcjx1bnNpZ25lZCwg
MzI+IGp1bXBUYXJnZXRzOwotICAgIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMoY29kZUJsb2Nr
LCBqdW1wVGFyZ2V0cyk7CisgICAgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhjb2RlQmxvY2ss
IEJ5dGVjb2RlQW5hbHlzaXNNb2RlOjpTdGFuZGFyZCwganVtcFRhcmdldHMpOwogICAgIGlmIChP
cHRpb25zOjpkdW1wQnl0ZWNvZGVBdERGR1RpbWUoKSkgewogICAgICAgICBkYXRhTG9nKCJKdW1w
IHRhcmdldHM6ICIpOwogICAgICAgICBDb21tYVByaW50ZXIgY29tbWE7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKaW5kZXggZDEwMGQ5N2Q1YzYwZTI1
YTA2MGZmZGE0NTY2M2IzYjk0MTQzNWRjNi4uMmZkYWEyMGM4MGE3OGFkM2QyZmJmYTE4NDM4ZDk1
ZmNlNGFmZjZlMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBh
YmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0
aWVzLmNwcApAQCAtMTgxLDYgKzE4MSw3IEBAIENhcGFiaWxpdHlMZXZlbCBjYXBhYmlsaXR5TGV2
ZWwoT3Bjb2RlSUQgb3Bjb2RlSUQsIENvZGVCbG9jayogY29kZUJsb2NrLCBJbnN0cnVjCiAgICAg
Y2FzZSBvcF9uZXdfYXJyYXk6CiAgICAgY2FzZSBvcF9uZXdfYXJyYXlfd2l0aF9zaXplOgogICAg
IGNhc2Ugb3BfbmV3X2FycmF5X2J1ZmZlcjoKKyAgICBjYXNlIG9wX25ld19nZW5lcmF0b3JfZnJh
bWU6CiAgICAgY2FzZSBvcF9zdHJjYXQ6CiAgICAgY2FzZSBvcF90b19wcmltaXRpdmU6CiAgICAg
Y2FzZSBvcF90aHJvdzoKQEAgLTIyNCw2ICsyMjUsOCBAQCBDYXBhYmlsaXR5TGV2ZWwgY2FwYWJp
bGl0eUxldmVsKE9wY29kZUlEIG9wY29kZUlELCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSW5zdHJ1
YwogICAgIGNhc2Ugb3BfY2F0Y2g6CiAgICAgY2FzZSBvcF9jb3B5X3Jlc3Q6CiAgICAgY2FzZSBv
cF9nZXRfcmVzdF9sZW5ndGg6CisgICAgY2FzZSBvcF9zYXZlOgorICAgIGNhc2Ugb3BfcmVzdW1l
OgogICAgICAgICByZXR1cm4gQ2FuQ29tcGlsZUFuZElubGluZTsKIAogICAgIGNhc2Ugb3BfcHV0
X3RvX3Njb3BlOiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Ns
b2JiZXJpemUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCmlu
ZGV4IDM0M2E2ZGU5YzI5MDliOTNlMDUyOGNmMDI3ODRhYWQ5NGQwMWI0ZDEuLjU5ZWM4MmJjMjBk
M2YxNjhlMmY0YjVjYjBiZTZmNTVhMmJmOGRjY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ2xvYmJlcml6ZS5oCkBAIC0xMDQ0LDYgKzEwNDQsNyBAQCB2b2lkIGNsb2JiZXJpemUo
R3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3Qg
V3JpdGVGdQogCiAgICAgY2FzZSBOZXdPYmplY3Q6CiAgICAgY2FzZSBOZXdSZWdleHA6CisgICAg
Y2FzZSBOZXdHZW5lcmF0b3JGcmFtZToKICAgICBjYXNlIE5ld1N0cmluZ09iamVjdDoKICAgICBj
YXNlIFBoYW50b21OZXdPYmplY3Q6CiAgICAgY2FzZSBNYXRlcmlhbGl6ZU5ld09iamVjdDoKQEAg
LTExMTEsNiArMTExMiwyMyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBu
b2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgICAgICAgICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQorCisgICAgY2FzZSBTZXRHZW5lcmF0b3JMb2NhbDogeworICAgICAgICByZWFkKEdlbmVy
YXRvckxvY2FsQ291bnQpOworICAgICAgICB3cml0ZShHZW5lcmF0b3JMb2NhbHMpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgY2FzZSBHZXRHZW5lcmF0b3JMb2NhbDogeworICAgICAg
ICByZWFkKEdlbmVyYXRvckxvY2FsQ291bnQpOworICAgICAgICByZWFkKEdlbmVyYXRvckxvY2Fs
cyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBjYXNlIFJlc2l6ZUdlbmVyYXRvckxv
Y2FsczogeworICAgICAgICB3cml0ZShHZW5lcmF0b3JMb2NhbENvdW50KTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBUaHJvd1JlZmVyZW5jZUVycm9yOgogICAg
ICAgICB3cml0ZShTaWRlU3RhdGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDbG9iYmVyc0V4aXRTdGF0ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcAppbmRleCA0ZTBjNTA3Nzg5Y2Q3YjNmZjQ3NzUxZjky
NWU3NDgzZTYxZTJkZjViLi45Mjg1NTEyNjI3ODUxZDNmODNmMzdmMDJhYmYwYTNiNWVmNmJmNWVh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJzRXhpdFN0
YXRlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJzRXhpdFN0
YXRlLmNwcApAQCAtNTMsMTAgKzUzLDE2IEBAIGJvb2wgY2xvYmJlcnNFeGl0U3RhdGUoR3JhcGgm
IGdyYXBoLCBOb2RlKiBub2RlKQogICAgICAgICAvLyBleGl0IHN0YXRlLgogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKKyAgICBjYXNlIFJlc2l6ZUdlbmVyYXRvckxvY2FsczoKKyAgICBjYXNlIFNl
dEdlbmVyYXRvckxvY2FsOgorICAgIGNhc2UgR2V0R2VuZXJhdG9yTG9jYWw6CisgICAgICAgIHJl
dHVybiBmYWxzZTsKKwogICAgIGNhc2UgQXJyYXlpZnlUb1N0cnVjdHVyZToKICAgICBjYXNlIEFy
cmF5aWZ5OgogICAgIGNhc2UgTmV3T2JqZWN0OgogICAgIGNhc2UgTmV3UmVnZXhwOgorICAgIGNh
c2UgTmV3R2VuZXJhdG9yRnJhbWU6CiAgICAgY2FzZSBOZXdTdHJpbmdPYmplY3Q6CiAgICAgY2Fz
ZSBQaGFudG9tTmV3T2JqZWN0OgogICAgIGNhc2UgTWF0ZXJpYWxpemVOZXdPYmplY3Q6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKaW5kZXggNzAyZGE1YmYxZTdjMGYxYzhm
ZTU1YzY0ODQ0NThmY2FkODFlMmFhNS4uY2ViNzg2MWM3YjI3YjVlOTc5NzcyYjZiM2I4NzA3YjNl
ZTg5MmIxMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0Mu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcApAQCAtMjI5
LDYgKzIyOSw5IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBj
YXNlIEdldEZyb21Bcmd1bWVudHM6CiAgICAgY2FzZSBQdXRUb0FyZ3VtZW50czoKICAgICBjYXNl
IENvcHlSZXN0OgorICAgIGNhc2UgU2V0R2VuZXJhdG9yTG9jYWw6CisgICAgY2FzZSBHZXRHZW5l
cmF0b3JMb2NhbDoKKyAgICBjYXNlIFJlc2l6ZUdlbmVyYXRvckxvY2FsczoKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCiAgICAgY2FzZSBDcmVhdGVBY3RpdmF0aW9uOgpAQCAtMjQ2LDYgKzI0OSw3
IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIE5ld0Fy
cmF5V2l0aFNpemU6CiAgICAgY2FzZSBOZXdBcnJheUJ1ZmZlcjoKICAgICBjYXNlIE5ld1JlZ2V4
cDoKKyAgICBjYXNlIE5ld0dlbmVyYXRvckZyYW1lOgogICAgIGNhc2UgTmV3U3RyaW5nT2JqZWN0
OgogICAgIGNhc2UgTWFrZVJvcGU6CiAgICAgY2FzZSBOZXdBcnJvd0Z1bmN0aW9uOgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKaW5kZXggYzlkNWFiZmI0OTQ4
MWI5MDU4OWVjNGZiYTU5NWEyY2U4ZTcwZGY2Ny4uMDE1ZGY1MWRjMzdiZmJmNDZiYWE5MWVjOWE4
YzhiMDE3ZTVkOTFhNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdG
aXh1cFBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhh
c2UuY3BwCkBAIC0xNDMwLDYgKzE0MzAsMjQgQEAgY2xhc3MgRml4dXBQaGFzZSA6IHB1YmxpYyBQ
aGFzZSB7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCisgICAgICAgIGNhc2UgU2V0
R2VuZXJhdG9yTG9jYWw6IHsKKyAgICAgICAgICAgIGZpeEVkZ2U8Q2VsbFVzZT4obm9kZS0+Y2hp
bGQxKCkpOworICAgICAgICAgICAgc3BlY3VsYXRlRm9yQmFycmllcihub2RlLT5jaGlsZDIoKSk7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2UgR2V0R2VuZXJh
dG9yTG9jYWw6IHsKKyAgICAgICAgICAgIGZpeEVkZ2U8Q2VsbFVzZT4obm9kZS0+Y2hpbGQxKCkp
OworICAgICAgICAgICAgLy8gQ3VycmVudGx5LCB3ZSBhbHdheXMgc3RvcmUgdGhlIHZhbHVlIGFz
IEpTVmFsdWUgaW4gdGhlIEdlbmVyYXRvckZyYW1lLgorICAgICAgICAgICAgbm9kZS0+c2V0UmVz
dWx0KE5vZGVSZXN1bHRKUyk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAg
ICAgIGNhc2UgUmVzaXplR2VuZXJhdG9yTG9jYWxzOiB7CisgICAgICAgICAgICBmaXhFZGdlPENl
bGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisK
ICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgICAgIC8vIEhhdmUgdGhlc2Ugbm8tb3AgY2FzZXMg
aGVyZSB0byBlbnN1cmUgdGhhdCBub2JvZHkgZm9yZ2V0cyB0byBhZGQgaGFuZGxlcnMgZm9yIG5l
dyBvcGNvZGVzLgogICAgICAgICBjYXNlIFNldEFyZ3VtZW50OgpAQCAtMTQ2Miw2ICsxNDgwLDcg
QEAgY2xhc3MgRml4dXBQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgIGNhc2UgTmV3T2Jq
ZWN0OgogICAgICAgICBjYXNlIE5ld0FycmF5QnVmZmVyOgogICAgICAgICBjYXNlIE5ld1JlZ2V4
cDoKKyAgICAgICAgY2FzZSBOZXdHZW5lcmF0b3JGcmFtZToKICAgICAgICAgY2FzZSBCcmVha3Bv
aW50OgogICAgICAgICBjYXNlIFByb2ZpbGVXaWxsQ2FsbDoKICAgICAgICAgY2FzZSBQcm9maWxl
RGlkQ2FsbDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR2VuZXJh
dG9yTG9jYWxEYXRhLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dlbmVyYXRvckxv
Y2FsRGF0YS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNlYWYxYWJjMDViNzgzODU0N2MwYjdhZWJlZGZmNjA0Y2Ni
NWZkMTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dl
bmVyYXRvckxvY2FsRGF0YS5oCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTYgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBERkdHZW5lcmF0b3JMb2Nh
bERhdGFfaAorI2RlZmluZSBERkdHZW5lcmF0b3JMb2NhbERhdGFfaAorCisjaWYgRU5BQkxFKERG
R19KSVQpCisKKyNpbmNsdWRlICJERkdDb21tb24uaCIKKyNpbmNsdWRlICJTcGVjdWxhdGVkVHlw
ZS5oIgorI2luY2x1ZGUgIlZpcnR1YWxSZWdpc3Rlci5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFt
ZXNwYWNlIERGRyB7CisKKworY2xhc3MgR2VuZXJhdG9yTG9jYWxEYXRhIHsKK3B1YmxpYzoKKyAg
ICBib29sIHByZWRpY3QoU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbikKKyAgICB7CisgICAgICAg
IHJldHVybiBtZXJnZVNwZWN1bGF0aW9uKG1fcHJlZGljdGlvbiwgcHJlZGljdGlvbik7CisgICAg
fQorCisgICAgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbigpCisgICAgeworICAgICAgICByZXR1
cm4gbV9wcmVkaWN0aW9uOworICAgIH0KKworcHJpdmF0ZToKKyAgICBTcGVjdWxhdGVkVHlwZSBt
X3ByZWRpY3Rpb24geyBTcGVjTm9uZSB9OworfTsKKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRG
RworCisjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCisKKyNlbmRpZiAvLyBERkdWYXJpYWJsZUFj
Y2Vzc0RhdGFfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFw
aC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCmluZGV4IDA5YWFlOTU1
ZjY2YWE3ODk0YTE0ODVlMTM5MzdmM2JhNTM4ODlkMWMuLjQzZmRiYjFhNzEzMDM0NmM5YmRhZjQ5
ZDRlNDE2YjcyNDEzZjA2MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHR3JhcGguaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKQEAg
LTYwLDYgKzYwLDcgQEAKIGNsYXNzIERvbWluYXRvcnM7CiBjbGFzcyBOYXR1cmFsTG9vcHM7CiBj
bGFzcyBQcmVQb3N0TnVtYmVyaW5nOworY2xhc3MgR2VuZXJhdG9yTG9jYWxEYXRhOwogCiAjZGVm
aW5lIERGR19OT0RFX0RPX1RPX0NISUxEUkVOKGdyYXBoLCBub2RlLCB0aGluZ1RvRG8pIGRvIHsg
ICAgICAgICAgICBcCiAgICAgICAgIE5vZGUqIF9ub2RlID0gKG5vZGUpOyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCkBAIC04ODcsNiArODg4LDcgQEAgY2xhc3Mg
R3JhcGggOiBwdWJsaWMgdmlydHVhbCBTY2FubmFibGUgewogICAgIEJhZzxDYWxsVmFyYXJnc0Rh
dGE+IG1fY2FsbFZhcmFyZ3NEYXRhOwogICAgIEJhZzxMb2FkVmFyYXJnc0RhdGE+IG1fbG9hZFZh
cmFyZ3NEYXRhOwogICAgIEJhZzxTdGFja0FjY2Vzc0RhdGE+IG1fc3RhY2tBY2Nlc3NEYXRhOwor
ICAgIEJhZzxHZW5lcmF0b3JMb2NhbERhdGE+IG1fZ2VuZXJhdG9yTG9jYWxEYXRhOwogICAgIFZl
Y3RvcjxJbmxpbmVWYXJpYWJsZURhdGEsIDQ+IG1faW5saW5lVmFyaWFibGVEYXRhOwogICAgIEhh
c2hNYXA8Q29kZUJsb2NrKiwgc3RkOjp1bmlxdWVfcHRyPEZ1bGxCeXRlY29kZUxpdmVuZXNzPj4g
bV9ieXRlY29kZUxpdmVuZXNzOwogICAgIEhhc2hNYXA8Q29kZUJsb2NrKiwgc3RkOjp1bmlxdWVf
cHRyPEJ5dGVjb2RlS2lsbHM+PiBtX2J5dGVjb2RlS2lsbHM7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdNYXlFeGl0LmNwcAppbmRleCBkYWEyOTMzOWRiZmJkZjgwYWFkOWI2NDZhMmNiN2Ew
NTg3ZDk2MjM4Li5iYzZkMTVjODRkZmE0NGY3MzRmZGM0NzRkZGU3YTZiYjI2NTZlNmQ4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAKQEAgLTEzMCw2ICsxMzAsOSBA
QCBFeGl0TW9kZSBtYXlFeGl0KEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIFN0
b3JlQmFycmllcjoKICAgICBjYXNlIFB1dEJ5T2Zmc2V0OgogICAgIGNhc2UgUHV0Q2xvc3VyZVZh
cjoKKyAgICBjYXNlIFJlc2l6ZUdlbmVyYXRvckxvY2FsczoKKyAgICBjYXNlIFNldEdlbmVyYXRv
ckxvY2FsOgorICAgIGNhc2UgR2V0R2VuZXJhdG9yTG9jYWw6CiAgICAgICAgIGJyZWFrOwogCiAg
ICAgY2FzZSBTdHJDYXQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R05vZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCmluZGV4IDEyODcw
ZDkzZDBjNDgyZTRmOGU1ZDRkMmRhZjFlNmJmMWY3MWI2MmMuLjNlYzc3ZTFhMTRkY2UyNTM1YmEx
MGRmMjNmMDlhOWU4MWY5NzhiMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTm9kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCkBA
IC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiREZHQXJyYXlNb2RlLmgiCiAjaW5jbHVkZSAiREZH
Q29tbW9uLmgiCiAjaW5jbHVkZSAiREZHRXBvY2guaCIKKyNpbmNsdWRlICJERkdHZW5lcmF0b3JM
b2NhbERhdGEuaCIKICNpbmNsdWRlICJERkdMYXp5SlNWYWx1ZS5oIgogI2luY2x1ZGUgIkRGR011
bHRpR2V0QnlPZmZzZXREYXRhLmgiCiAjaW5jbHVkZSAiREZHTm9kZUZsYWdzLmgiCkBAIC04Nzgs
NiArODc5LDcyIEBAIHN0cnVjdCBOb2RlIHsKICAgICAgICAgcmV0dXJuIG1fb3BJbmZvOwogICAg
IH0KIAorICAgIGJvb2wgaGFzR2VuZXJhdG9yTG9jYWxzU2l6ZSgpCisgICAgeworICAgICAgICBz
d2l0Y2ggKG9wKCkpIHsKKyAgICAgICAgY2FzZSBOZXdHZW5lcmF0b3JGcmFtZToKKyAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICB9CisgICAgfQorCisgICAgdW5zaWduZWQgZ2VuZXJhdG9yTG9jYWxzU2l6
ZSgpCisgICAgeworICAgICAgICBBU1NFUlQoaGFzR2VuZXJhdG9yTG9jYWxzU2l6ZSgpKTsKKyAg
ICAgICAgcmV0dXJuIG1fb3BJbmZvOworICAgIH0KKworICAgIGJvb2wgaGFzR2VuZXJhdG9yTG9j
YWxJbmRleCgpCisgICAgeworICAgICAgICBzd2l0Y2ggKG9wKCkpIHsKKyAgICAgICAgY2FzZSBT
ZXRHZW5lcmF0b3JMb2NhbDoKKyAgICAgICAgY2FzZSBHZXRHZW5lcmF0b3JMb2NhbDoKKyAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICB9CisgICAgfQorCisgICAgdW5zaWduZWQgZ2VuZXJhdG9yTG9jYWxJ
bmRleCgpCisgICAgeworICAgICAgICBBU1NFUlQoaGFzR2VuZXJhdG9yTG9jYWxJbmRleCgpKTsK
KyAgICAgICAgcmV0dXJuIG1fb3BJbmZvOworICAgIH0KKworICAgIGJvb2wgaGFzR2VuZXJhdG9y
TG9jYWxEYXRhKCkKKyAgICB7CisgICAgICAgIHN3aXRjaCAob3AoKSkgeworICAgICAgICBjYXNl
IFNldEdlbmVyYXRvckxvY2FsOgorICAgICAgICBjYXNlIEdldEdlbmVyYXRvckxvY2FsOgorICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBHZW5lcmF0b3JMb2NhbERhdGEqIGdl
bmVyYXRvckxvY2FsRGF0YSgpCisgICAgeworICAgICAgICBBU1NFUlQoaGFzR2VuZXJhdG9yTG9j
YWxEYXRhKCkpOworICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxHZW5lcmF0b3JMb2Nh
bERhdGEqPihtX29wSW5mbzIpOworICAgIH0KKworICAgIGJvb2wgaGFzR2VuZXJhdG9yRnJhbWVM
b2NhbHMoKQorICAgIHsKKyAgICAgICAgc3dpdGNoIChvcCgpKSB7CisgICAgICAgIGNhc2UgUmVz
aXplR2VuZXJhdG9yTG9jYWxzOgorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICB1bnNpZ25lZCBnZW5lcmF0b3JGcmFtZUxvY2FscygpCisgICAgeworICAgICAgICBBU1NFUlQo
aGFzR2VuZXJhdG9yRnJhbWVMb2NhbHMoKSk7CisgICAgICAgIHJldHVybiBtX29wSW5mbzsKKyAg
ICB9CisKICAgICBib29sIGhhc0FjY2Vzc29yQXR0cmlidXRlcygpCiAgICAgewogICAgICAgICBz
d2l0Y2ggKG9wKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Tm9kZVR5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAppbmRl
eCBkZGQwYjk3Y2IyZmU2OTI2MDQ1MTAzZjhhNzEwNzAwNDgyZTlmNmJkLi4yOThjOGY4YzdjYmM5
ZGZjNWY1MDIyZjU0MTY2ZjZlOTQ4MzcyM2RjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR05vZGVUeXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdOb2RlVHlwZS5oCkBAIC03OSw2ICs3OSwxMCBAQAogICAgIG1hY3JvKEZsdXNoLCBOb2RlTXVz
dEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oUGhhbnRvbUxvY2FsLCBOb2RlTXVzdEdlbmVyYXRlKSBc
CiAgICAgXAorICAgIG1hY3JvKFNldEdlbmVyYXRvckxvY2FsLCBOb2RlTXVzdEdlbmVyYXRlKSBc
CisgICAgbWFjcm8oR2V0R2VuZXJhdG9yTG9jYWwsIE5vZGVSZXN1bHRKUykgXAorICAgIG1hY3Jv
KFJlc2l6ZUdlbmVyYXRvckxvY2FscywgTm9kZU11c3RHZW5lcmF0ZSkgXAorICAgIFwKICAgICAv
KiBIaW50IHRoYXQgdGhpcyBpcyB3aGVyZSBieXRlY29kZSB0aGlua3MgaXMgYSBnb29kIHBsYWNl
IHRvIE9TUi4gTm90ZSB0aGF0IHRoaXMgKi9cCiAgICAgLyogd2lsbCBleGlzdCBldmVuIGluIGlu
bGluZWQgbG9vcHMuIFRoaXMgaGFzIG5vIGV4ZWN1dGlvbiBzZW1hbnRpY3MgYnV0IGl0IG11c3Qg
Ki9cCiAgICAgLyogc3Vydml2ZSBhbGwgRENFLiBXZSB0cmVhdCB0aGlzIGFzIGJlaW5nIGEgY2Fu
LWV4aXQgYmVjYXVzZSB0aWVyLXVwIHRvIEZUTCBtYXkgKi9cCkBAIC0yNjMsNiArMjY3LDcgQEAK
ICAgICBtYWNybyhOZXdBcnJheUJ1ZmZlciwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oTmV3
VHlwZWRBcnJheSwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3Jv
KE5ld1JlZ2V4cCwgTm9kZVJlc3VsdEpTKSBcCisgICAgbWFjcm8oTmV3R2VuZXJhdG9yRnJhbWUs
IE5vZGVSZXN1bHRKUykgXAogICAgIC8qIFJlc3QgUGFyYW1ldGVyICovXAogICAgIG1hY3JvKEdl
dFJlc3RMZW5ndGgsIE5vZGVSZXN1bHRJbnQzMikgXAogICAgIG1hY3JvKENvcHlSZXN0LCBOb2Rl
TXVzdEdlbmVyYXRlKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25z
LmNwcAppbmRleCAyZmQ1ZGJkYzdmYzRjY2E4NmZhZTEwOTIyN2FjMTc1N2ZkY2RmOTZjLi5iYzM1
NjYxM2QzZjUyMTgwODIzOGU1MjY4MTM1YWFiMDliZTY3ZjBlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKQEAgLTQxLDggKzQxLDkgQEAKICNpbmNsdWRl
ICJEaXJlY3RBcmd1bWVudHMuaCIKICNpbmNsdWRlICJGVExGb3JPU1JFbnRyeUpJVENvZGUuaCIK
ICNpbmNsdWRlICJGVExPU1JFbnRyeS5oIgotI2luY2x1ZGUgIkhvc3RDYWxsUmV0dXJuVmFsdWUu
aCIKKyNpbmNsdWRlICJHZW5lcmF0b3JGcmFtZS5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5o
IgorI2luY2x1ZGUgIkhvc3RDYWxsUmV0dXJuVmFsdWUuaCIKICNpbmNsdWRlICJJbnRlcnByZXRl
ci5oIgogI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUgIkpJVEV4Y2VwdGlvbnMuaCIKQEAgLTgx
Nyw2ICs4MTgsMTEgQEAgY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdGbG9hdDY0QXJy
YXlXaXRoT25lQXJndW1lbnQoCiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNv
bnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHM8SlNGbG9hdDY0QXJyYXk+
KGV4ZWMsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBOdWxsb3B0KSk7CiB9CiAKK2NoYXIq
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3R2VuZXJhdG9yRnJhbWUoRXhlY1N0YXRlKiBleGVj
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBudW1iZXJPZkNhbGxlZUxvY2FscykKK3sK
KyAgICByZXR1cm4gYml0d2lzZV9jYXN0PGNoYXIqPihHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlKGV4
ZWMtPnZtKCksIHN0cnVjdHVyZSwgbnVtYmVyT2ZDYWxsZWVMb2NhbHMpKTsKK30KKwogSlNDZWxs
KiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZUFjdGl2YXRpb25EaXJlY3QoRXhlY1N0YXRl
KiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNTY29wZSogc2NvcGUsIFN5bWJvbFRhYmxl
KiB0YWJsZSwgRW5jb2RlZEpTVmFsdWUgaW5pdGlhbFZhbHVlRW5jb2RlZCkKIHsKICAgICBKU1Zh
bHVlIGluaXRpYWxWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShpbml0aWFsVmFsdWVFbmNvZGVkKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKaW5kZXggNDA5NjI5ZmY1
ZDUzYTdiZTM4N2E2MjM2NDU1ZDY4MTZhYzA4NWVjOS4uZTQ0M2JhMjgyMzcyZmJjY2UyYmFjNWIw
OWEzNjdiZDUyYzhlNzVmMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRp
b25zLmgKQEAgLTgyLDYgKzgyLDcgQEAKIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3
RmxvYXQzMkFycmF5V2l0aE9uZUFyZ3VtZW50KEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSosIEVuY29k
ZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7CiBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5l
d0Zsb2F0NjRBcnJheVdpdGhTaXplKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSosIGludDMyX3QpIFdU
Rl9JTlRFUk5BTDsKIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3RmxvYXQ2NEFycmF5
V2l0aE9uZUFyZ3VtZW50KEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSosIEVuY29kZWRKU1ZhbHVlKSBX
VEZfSU5URVJOQUw7CitjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0dlbmVyYXRvckZy
YW1lKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSosIGludDMyX3QpIFdURl9JTlRFUk5BTDsKIHZvaWQg
SklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbFN0cmljdChFeGVjU3RhdGUqLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFByb3BlcnR5LCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpIFdURl9JTlRFUk5BTDsKIHZvaWQgSklUX09QRVJBVElP
TiBvcGVyYXRpb25QdXRCeVZhbE5vblN0cmljdChFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFByb3BlcnR5LCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkVmFsdWUpIFdURl9JTlRFUk5BTDsKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRp
b25QdXRCeVZhbENlbGxTdHJpY3QoRXhlY1N0YXRlKiwgSlNDZWxsKiwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFByb3BlcnR5LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpIFdURl9JTlRFUk5B
TDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblBy
b3BhZ2F0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0
aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKaW5kZXggNTc5OThjZmUxODFhOGZjZjljYzY1MTQzNTFh
YzU4MGI4MGU3ZmI4YS4uMmQzYWJiZDJlNzYwYmU2NDVhNzBjYTE1Zjg5Y2Y1OTA4ZDkyMmZjMiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFn
YXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0
aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKQEAgLTE2MCw2ICsxNjAsMjQgQEAgY2xhc3MgUHJlZGlj
dGlvblByb3BhZ2F0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgY2hhbmdl
ZCB8PSB2YXJpYWJsZUFjY2Vzc0RhdGEtPnByZWRpY3Qobm9kZS0+Y2hpbGQxKCktPnByZWRpY3Rp
b24oKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorCisgICAgICAgIGNhc2UgU2V0
R2VuZXJhdG9yTG9jYWw6IHsKKyAgICAgICAgICAgIEdlbmVyYXRvckxvY2FsRGF0YSogZ2VuZXJh
dG9yTG9jYWxEYXRhID0gbm9kZS0+Z2VuZXJhdG9yTG9jYWxEYXRhKCk7CisgICAgICAgICAgICBj
aGFuZ2VkIHw9IGdlbmVyYXRvckxvY2FsRGF0YS0+cHJlZGljdChub2RlLT5jaGlsZDIoKS0+cHJl
ZGljdGlvbigpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgY2Fz
ZSBHZXRHZW5lcmF0b3JMb2NhbDogeworICAgICAgICAgICAgR2VuZXJhdG9yTG9jYWxEYXRhKiBn
ZW5lcmF0b3JMb2NhbERhdGEgPSBub2RlLT5nZW5lcmF0b3JMb2NhbERhdGEoKTsKKyAgICAgICAg
ICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24gPSBnZW5lcmF0b3JMb2NhbERhdGEtPnByZWRp
Y3Rpb24oKTsKKyAgICAgICAgICAgIC8vIFdlIGFsd2F5cyBzdG9yZSB0aGUgdmFsdWUgaW4gR2Vu
ZXJhdG9yTG9jYWwgYXMgRm9ybWF0SlNWYWx1ZS4KKyAgICAgICAgICAgIC8vIFNvIGRvdWJsZSB2
YWx1ZSBpcyBiZXR0ZXIgdGhhbiBJbnQ1MiB2YWx1ZS4KKyAgICAgICAgICAgIGlmIChwcmVkaWN0
aW9uICYgU3BlY0ludDUyKQorICAgICAgICAgICAgICAgIHByZWRpY3Rpb24gPSAocHJlZGljdGlv
biB8IFNwZWNJbnQ1MkFzRG91YmxlKSAmIH5TcGVjSW50NTI7CisgICAgICAgICAgICBpZiAocHJl
ZGljdGlvbikKKyAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihwcmVk
aWN0aW9uKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAgICAgICAKICAg
ICAgICAgY2FzZSBCaXRBbmQ6CiAgICAgICAgIGNhc2UgQml0T3I6CkBAIC01MjQsNyArNTQyLDgg
QEAgY2xhc3MgUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAg
ICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBOZXdSZWdleHA6Ci0gICAgICAgIGNh
c2UgQ3JlYXRlQWN0aXZhdGlvbjogeworICAgICAgICBjYXNlIENyZWF0ZUFjdGl2YXRpb246Cisg
ICAgICAgIGNhc2UgTmV3R2VuZXJhdG9yRnJhbWU6IHsKICAgICAgICAgICAgIGNoYW5nZWQgfD0g
c2V0UHJlZGljdGlvbihTcGVjT2JqZWN0T3RoZXIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KQEAgLTcxNiw2ICs3MzUsNyBAQCBjbGFzcyBQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFz
ZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgIGNhc2UgRXhpdE9LOgogICAgICAgICBjYXNlIExv
YWRWYXJhcmdzOgogICAgICAgICBjYXNlIENvcHlSZXN0OgorICAgICAgICBjYXNlIFJlc2l6ZUdl
bmVyYXRvckxvY2FsczoKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCiAgICAgICAg
IC8vIFRoaXMgZ2V0cyBpZ25vcmVkIGJlY2F1c2UgaXQgb25seSBwcmV0ZW5kcyB0byBwcm9kdWNl
IGEgdmFsdWUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVU
b0V4ZWN1dGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5o
CmluZGV4IDIzMGVmZWRjNDgzMTUxMmJhYzU2OGJlZWZkYjI3Njk2MTg3MjA5NGMuLjg3YzNlMDI2
OGM1ODExMjhjZGJiZjFmYjU1YjM2NjkyZmM0MTZkZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCkBAIC0yMzcsNiArMjM3LDcgQEAgYm9vbCBzYWZl
VG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBoLCBOb2RlKiBu
b2RlKQogICAgIGNhc2UgTmV3QXJyYXlXaXRoU2l6ZToKICAgICBjYXNlIE5ld0FycmF5QnVmZmVy
OgogICAgIGNhc2UgTmV3UmVnZXhwOgorICAgIGNhc2UgTmV3R2VuZXJhdG9yRnJhbWU6CiAgICAg
Y2FzZSBCcmVha3BvaW50OgogICAgIGNhc2UgUHJvZmlsZVdpbGxDYWxsOgogICAgIGNhc2UgUHJv
ZmlsZURpZENhbGw6CkBAIC0zMjgsNiArMzI5LDkgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3Ry
YWN0U3RhdGVUeXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2Ug
R2V0TXlBcmd1bWVudEJ5VmFsOgogICAgIGNhc2UgRm9yd2FyZFZhcmFyZ3M6CiAgICAgY2FzZSBD
b3B5UmVzdDoKKyAgICBjYXNlIFNldEdlbmVyYXRvckxvY2FsOgorICAgIGNhc2UgR2V0R2VuZXJh
dG9yTG9jYWw6CisgICAgY2FzZSBSZXNpemVHZW5lcmF0b3JMb2NhbHM6CiAgICAgICAgIHJldHVy
biB0cnVlOwogCiAgICAgY2FzZSBCb3R0b21WYWx1ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggY2NjZTc5MTk5NTE0NWU5MWVmZDIw
MDg4Yzk2YjdhZjgyYjU2MTZkNi4uNWY5NjlmYzgwOWExNjg2NmYwZGFkODI2ZDZhMmQzZjJiZTQ1
YWJkMyAxMDA3NTUKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5jcHAKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJERkdTYW5lU3RyaW5nR2V0QnlWYWxT
bG93UGF0aEdlbmVyYXRvci5oIgogI2luY2x1ZGUgIkRGR1Nsb3dQYXRoR2VuZXJhdG9yLmgiCiAj
aW5jbHVkZSAiRGlyZWN0QXJndW1lbnRzLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yRnJhbWUuaCIK
ICNpbmNsdWRlICJKSVRBZGRHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJKSVRCaXRBbmRHZW5lcmF0
b3IuaCIKICNpbmNsdWRlICJKSVRCaXRPckdlbmVyYXRvci5oIgpAQCAtNjM3OCw2ICs2Mzc5LDQy
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdTdHJpbmdPYmplY3QoTm9kZSogbm9k
ZSkKICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiB9CiAKK3ZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVOZXdHZW5lcmF0b3JGcmFtZShOb2RlKiBub2RlKQoreworICAgIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2ppdC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvcihu
b2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gZ2xvYmFs
T2JqZWN0LT5nZW5lcmF0b3JGcmFtZVN0cnVjdHVyZSgpOworICAgIHVuc2lnbmVkIGdlbmVyYXRv
ckxvY2Fsc1NpemUgPSBub2RlLT5nZW5lcmF0b3JMb2NhbHNTaXplKCk7CisKKyAgICBHUFJUZW1w
b3JhcnkgcmVzdWx0KHRoaXMpOworICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoMSh0aGlzKTsKKyAg
ICBHUFJUZW1wb3Jhcnkgc2NyYXRjaDIodGhpcyk7CisKKyAgICBHUFJSZWcgcmVzdWx0R1BSID0g
cmVzdWx0LmdwcigpOworICAgIEdQUlJlZyBzY3JhdGNoMUdQUiA9IHNjcmF0Y2gxLmdwcigpOwor
ICAgIEdQUlJlZyBzY3JhdGNoMkdQUiA9IHNjcmF0Y2gyLmdwcigpOworCisgICAgSklUQ29tcGls
ZXI6Okp1bXBMaXN0IHNsb3dQYXRoOworCisgICAgZW1pdEFsbG9jYXRlSlNPYmplY3RXaXRoS25v
d25TaXplPEdlbmVyYXRvckZyYW1lPihyZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHIoc3RydWN0dXJl
KSwgVHJ1c3RlZEltbVB0cihudWxscHRyKSwgc2NyYXRjaDFHUFIsIHNjcmF0Y2gyR1BSLCBzbG93
UGF0aCwgR2VuZXJhdG9yRnJhbWU6OmFsbG9jYXRpb25TaXplRm9yTG9jYWxzKGdlbmVyYXRvckxv
Y2Fsc1NpemUpKTsKKyAgICBtX2ppdC5zdG9yZTMyKFRydXN0ZWRJbW0zMihnZW5lcmF0b3JMb2Nh
bHNTaXplKSwgSklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBHZW5lcmF0b3JGcmFtZTo6
bnVtYmVyT2ZDYWxsZWVMb2NhbHNPZmZzZXQoKSkpOworICAgIG1faml0LnN0b3JlMzIoVHJ1c3Rl
ZEltbTMyKDApLCBKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIEdlbmVyYXRvckZyYW1l
OjpudW1iZXJPZlNhdmVkQ2FsbGVlTG9jYWxzT2Zmc2V0KCkpKTsKKyAgICBKU1ZhbHVlIGVtcHR5
VmFsdWU7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGdlbmVyYXRvckxvY2Fsc1NpemU7
ICsraSkKKyAgICAgICAgbV9qaXQuc3RvcmVUcnVzdGVkVmFsdWUoZW1wdHlWYWx1ZSwgSklUQ29t
cGlsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBHZW5lcmF0b3JGcmFtZTo6bG9jYWxPZmZzZXQoaSkp
KTsKKworICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93UGF0aCwgdGhp
cywgb3BlcmF0aW9uTmV3R2VuZXJhdG9yRnJhbWUsIHJlc3VsdEdQUiwgc3RydWN0dXJlLCBnZW5l
cmF0b3JMb2NhbHNTaXplKSk7CisKKyAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7Cit9
CisKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVSZXNpemVHZW5lcmF0b3JMb2NhbHMoTm9k
ZSogbm9kZSkKK3sKKyAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBmcmFtZSh0aGlzLCBub2RlLT5j
aGlsZDEoKSk7CisgICAgR1BSUmVnIGZyYW1lR1BSID0gZnJhbWUuZ3ByKCk7CisgICAgbV9qaXQu
c3RvcmUzMihUcnVzdGVkSW1tMzIobm9kZS0+Z2VuZXJhdG9yRnJhbWVMb2NhbHMoKSksIEpJVENv
bXBpbGVyOjpBZGRyZXNzKGZyYW1lR1BSLCBHZW5lcmF0b3JGcmFtZTo6bnVtYmVyT2ZTYXZlZENh
bGxlZUxvY2Fsc09mZnNldCgpKSk7CisgICAgbm9SZXN1bHQobm9kZSk7Cit9CisKIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdUeXBlZEFycmF5KE5vZGUqIG5vZGUpCiB7CiAgICAgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmgKaW5kZXggNTMxMmM4ZGJlZGZlZDE4MDA1NDM4MTEzMDc5ZWViMGIw
ZTk5MDhhYi4uMDBhNGZhOTJhYzczZTU4MzlhYjg1NmVhYjlmNDM2NDIwZTUyY2IxNSAxMDA3NTUK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaApAQCAtMjI4MSw2
ICsyMjgxLDggQEAgY2xhc3MgU3BlY3VsYXRpdmVKSVQgewogICAgIHZvaWQgY29tcGlsZVB1dEJ5
VmFsRm9yRmxvYXRUeXBlZEFycmF5KEdQUlJlZyBiYXNlLCBHUFJSZWcgcHJvcGVydHksIE5vZGUq
LCBUeXBlZEFycmF5VHlwZSk7CiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIENsYXNzVHlwZT4gdm9p
ZCBjb21waWxlTmV3RnVuY3Rpb25Db21tb24oR1BSUmVnLCBTdHJ1Y3R1cmUqLCBHUFJSZWcsIEdQ
UlJlZywgR1BSUmVnLCBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QmLCBzaXplX3QsIEZ1bmN0aW9u
RXhlY3V0YWJsZSosIHB0cmRpZmZfdCwgcHRyZGlmZl90LCBwdHJkaWZmX3QpOwogICAgIHZvaWQg
Y29tcGlsZU5ld0Z1bmN0aW9uKE5vZGUqKTsKKyAgICB2b2lkIGNvbXBpbGVOZXdHZW5lcmF0b3JG
cmFtZShOb2RlKik7CisgICAgdm9pZCBjb21waWxlUmVzaXplR2VuZXJhdG9yTG9jYWxzKE5vZGUq
KTsKICAgICB2b2lkIGNvbXBpbGVGb3J3YXJkVmFyYXJncyhOb2RlKik7CiAgICAgdm9pZCBjb21w
aWxlQ3JlYXRlQWN0aXZhdGlvbihOb2RlKik7CiAgICAgdm9pZCBjb21waWxlQ3JlYXRlRGlyZWN0
QXJndW1lbnRzKE5vZGUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCmluZGV4IDEyZWI1MDQxMTgwYWMyZjUwMTY0Zjk1MWIw
NThlZGI2MmQyMjgyNzAuLmFkZWI4MTM3YTkwZTFiNzc5ZGEwZDk3NmViNzJmOTcwZTUwMTg4ZDIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQz
Ml82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDMyXzY0LmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIkRGR1Nsb3dQYXRoR2VuZXJh
dG9yLmgiCiAjaW5jbHVkZSAiRGVidWdnZXIuaCIKICNpbmNsdWRlICJEaXJlY3RBcmd1bWVudHMu
aCIKKyNpbmNsdWRlICJHZW5lcmF0b3JGcmFtZS5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5o
IgogI2luY2x1ZGUgIkpTRW52aXJvbm1lbnRSZWNvcmQuaCIKICNpbmNsdWRlICJKU0xleGljYWxF
bnZpcm9ubWVudC5oIgpAQCAtMzY1MCw2ICszNjUxLDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgY2VsbFJlc3VsdChyZXN1bHRQYXlsb2FkLmdw
cigpLCBub2RlKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQorCisgICAgY2FzZSBOZXdHZW5lcmF0
b3JGcmFtZTogeworICAgICAgICBjb21waWxlTmV3R2VuZXJhdG9yRnJhbWUobm9kZSk7CisgICAg
ICAgIGJyZWFrOworICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBUb1RoaXM6IHsKICAgICAgICAg
QVNTRVJUKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKTsKQEAgLTQ3MTgs
NiArNDcyNCw0MSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAg
ICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKICAgICAgICAgYnJlYWs7CiAgICAg
fQorICAgIGNhc2UgU2V0R2VuZXJhdG9yTG9jYWw6IHsKKyAgICAgICAgU3BlY3VsYXRlQ2VsbE9w
ZXJhbmQgZnJhbWUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBKU1ZhbHVlT3BlcmFu
ZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisKKyAgICAgICAgR1BSUmVnIGZyYW1lR1BS
ID0gZnJhbWUuZ3ByKCk7CisgICAgICAgIEdQUlJlZyB2YWx1ZVRhZ0dQUiA9IHZhbHVlLnRhZ0dQ
UigpOworICAgICAgICBHUFJSZWcgdmFsdWVQYXlsb2FkR1BSID0gdmFsdWUucGF5bG9hZEdQUigp
OworICAgICAgICB1bnNpZ25lZCBnZW5lcmF0b3JMb2NhbEluZGV4ID0gbm9kZS0+Z2VuZXJhdG9y
TG9jYWxJbmRleCgpOworCisgICAgICAgIG1faml0LnN0b3JlMzIodmFsdWVUYWdHUFIsIEpJVENv
bXBpbGVyOjpBZGRyZXNzKGZyYW1lR1BSLCBHZW5lcmF0b3JGcmFtZTo6bG9jYWxPZmZzZXQoZ2Vu
ZXJhdG9yTG9jYWxJbmRleCkgKyBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMudGFn
KSkpOworICAgICAgICBtX2ppdC5zdG9yZTMyKHZhbHVlUGF5bG9hZEdQUiwgSklUQ29tcGlsZXI6
OkFkZHJlc3MoZnJhbWVHUFIsIEdlbmVyYXRvckZyYW1lOjpsb2NhbE9mZnNldChnZW5lcmF0b3JM
b2NhbEluZGV4KSArIE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy5wYXlsb2FkKSkp
OworCisgICAgICAgIG5vUmVzdWx0KG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAg
Y2FzZSBHZXRHZW5lcmF0b3JMb2NhbDogeworICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBm
cmFtZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHRU
YWcodGhpcyk7CisgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHRQYXlsb2FkKHRoaXMpOworCisg
ICAgICAgIEdQUlJlZyBmcmFtZUdQUiA9IGZyYW1lLmdwcigpOworICAgICAgICBHUFJSZWcgcmVz
dWx0VGFnR1BSID0gcmVzdWx0VGFnLmdwcigpOworICAgICAgICBHUFJSZWcgcmVzdWx0UGF5bG9h
ZEdQUiA9IHJlc3VsdFBheWxvYWQuZ3ByKCk7CisgICAgICAgIHVuc2lnbmVkIGdlbmVyYXRvckxv
Y2FsSW5kZXggPSBub2RlLT5nZW5lcmF0b3JMb2NhbEluZGV4KCk7CisKKyAgICAgICAgbV9qaXQu
bG9hZDMyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGZyYW1lR1BSLCBHZW5lcmF0b3JGcmFtZTo6bG9j
YWxPZmZzZXQoZ2VuZXJhdG9yTG9jYWxJbmRleCkgKyBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwg
dS5hc0JpdHMudGFnKSksIHJlc3VsdFRhZ0dQUik7CisgICAgICAgIG1faml0LmxvYWQzMihKSVRD
b21waWxlcjo6QWRkcmVzcyhmcmFtZUdQUiwgR2VuZXJhdG9yRnJhbWU6OmxvY2FsT2Zmc2V0KGdl
bmVyYXRvckxvY2FsSW5kZXgpICsgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnBh
eWxvYWQpKSwgcmVzdWx0UGF5bG9hZEdQUik7CisKKyAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1
bHRUYWdHUFIsIHJlc3VsdFBheWxvYWRHUFIsIG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9
CisgICAgY2FzZSBSZXNpemVHZW5lcmF0b3JMb2NhbHM6IHsKKyAgICAgICAgY29tcGlsZVJlc2l6
ZUdlbmVyYXRvckxvY2Fscyhub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogICAgIGNhc2Ug
UHJvZmlsZVR5cGU6IHsKICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+
Y2hpbGQxKCkpOwogICAgICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaDEodGhpcyk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAppbmRleCBl
NzQ1Njk0MDRjMWI5Nzg0ODA2MTk3ZDE0NTQ1Y2QxZGIyM2Q3YTVjLi41YThmY2Q0NGQxMzVhZGUx
NTM3YjI3ZWRiZjBjOWEwOGI1YjMzYzRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRl
ICJERkdTbG93UGF0aEdlbmVyYXRvci5oIgogI2luY2x1ZGUgIkRlYnVnZ2VyLmgiCiAjaW5jbHVk
ZSAiRGlyZWN0QXJndW1lbnRzLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yRnJhbWUuaCIKICNpbmNs
dWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAi
SlNFbnZpcm9ubWVudFJlY29yZC5oIgpAQCAtMzY4OCw2ICszNjg5LDExIEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgY2VsbFJlc3VsdChyZXN1bHQu
Z3ByKCksIG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9CisKKyAgICBjYXNlIE5ld0dlbmVy
YXRvckZyYW1lOiB7CisgICAgICAgIGNvbXBpbGVOZXdHZW5lcmF0b3JGcmFtZShub2RlKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgfQogICAgICAgICAKICAgICBjYXNlIFRvVGhpczogewogICAgICAg
ICBBU1NFUlQobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IFVudHlwZWRVc2UpOwpAQCAtNDcy
MCw2ICs0NzI2LDM1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkK
ICAgICAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogICAgICAgICBicmVhazsKICAg
ICB9CisgICAgY2FzZSBTZXRHZW5lcmF0b3JMb2NhbDogeworICAgICAgICBTcGVjdWxhdGVDZWxs
T3BlcmFuZCBmcmFtZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIEpTVmFsdWVPcGVy
YW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKKworICAgICAgICBHUFJSZWcgZnJhbWVH
UFIgPSBmcmFtZS5ncHIoKTsKKyAgICAgICAgR1BSUmVnIHZhbHVlR1BSID0gdmFsdWUuZ3ByKCk7
CisgICAgICAgIHVuc2lnbmVkIGdlbmVyYXRvckxvY2FsSW5kZXggPSBub2RlLT5nZW5lcmF0b3JM
b2NhbEluZGV4KCk7CisKKyAgICAgICAgbV9qaXQuc3RvcmU2NCh2YWx1ZUdQUiwgSklUQ29tcGls
ZXI6OkFkZHJlc3MoZnJhbWVHUFIsIEdlbmVyYXRvckZyYW1lOjpsb2NhbE9mZnNldChnZW5lcmF0
b3JMb2NhbEluZGV4KSkpOworCisgICAgICAgIG5vUmVzdWx0KG5vZGUpOworICAgICAgICBicmVh
azsKKyAgICB9CisgICAgY2FzZSBHZXRHZW5lcmF0b3JMb2NhbDogeworICAgICAgICBTcGVjdWxh
dGVDZWxsT3BlcmFuZCBmcmFtZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIEdQUlRl
bXBvcmFyeSByZXN1bHQodGhpcyk7CisKKyAgICAgICAgR1BSUmVnIGZyYW1lR1BSID0gZnJhbWUu
Z3ByKCk7CisgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CisgICAgICAg
IHVuc2lnbmVkIGdlbmVyYXRvckxvY2FsSW5kZXggPSBub2RlLT5nZW5lcmF0b3JMb2NhbEluZGV4
KCk7CisKKyAgICAgICAgbV9qaXQubG9hZDY0KEpJVENvbXBpbGVyOjpBZGRyZXNzKGZyYW1lR1BS
LCBHZW5lcmF0b3JGcmFtZTo6bG9jYWxPZmZzZXQoZ2VuZXJhdG9yTG9jYWxJbmRleCkpLCByZXN1
bHRHUFIpOworICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CisgICAgICAg
IGJyZWFrOworICAgIH0KKyAgICBjYXNlIFJlc2l6ZUdlbmVyYXRvckxvY2FsczogeworICAgICAg
ICBjb21waWxlUmVzaXplR2VuZXJhdG9yTG9jYWxzKG5vZGUpOworICAgICAgICBicmVhazsKKyAg
ICB9CiAgICAgY2FzZSBQcm9maWxlVHlwZTogewogICAgICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1
ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoMSh0
aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVCYXJy
aWVySW5zZXJ0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9y
ZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAKaW5kZXggNzJmMjIwMGNlYTEwYjk4MTBkYmE4Yzdi
MTlmZWZmMjRkYWE1ZGFlMy4uZDdjNzA1NjZmYzczN2Y4OTBmMTU2YjUzNDUwOWQ5YTBjMDczOGU5
YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJ
bnNlcnRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9y
ZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAKQEAgLTI4MSw2ICsyODEsMTEgQEAgY2xhc3MgU3Rv
cmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgICAg
IGNvbnNpZGVyQmFycmllcihtX25vZGUtPmNoaWxkMSgpLCBtX25vZGUtPmNoaWxkMigpKTsKICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgY2FzZSBT
ZXRHZW5lcmF0b3JMb2NhbDogeworICAgICAgICAgICAgICAgIGNvbnNpZGVyQmFycmllcihtX25v
ZGUtPmNoaWxkMSgpLCBtX25vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgIGRlZmF1bHQ6CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0yOTYsNiArMzAxLDcgQEAgY2xhc3MgU3RvcmVCYXJy
aWVySW5zZXJ0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgY2FzZSBOZXdB
cnJheUJ1ZmZlcjoKICAgICAgICAgICAgIGNhc2UgTmV3VHlwZWRBcnJheToKICAgICAgICAgICAg
IGNhc2UgTmV3UmVnZXhwOgorICAgICAgICAgICAgY2FzZSBOZXdHZW5lcmF0b3JGcmFtZToKICAg
ICAgICAgICAgIGNhc2UgTWF0ZXJpYWxpemVOZXdPYmplY3Q6CiAgICAgICAgICAgICBjYXNlIE1h
dGVyaWFsaXplQ3JlYXRlQWN0aXZhdGlvbjoKICAgICAgICAgICAgIGNhc2UgTmV3U3RyaW5nT2Jq
ZWN0OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVS
ZWdpc3RyYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVj
dHVyZVJlZ2lzdHJhdGlvblBoYXNlLmNwcAppbmRleCAyYzA1NTk4NDk4OTliZGY2ZmIxMTE3NTk3
ZTEwNTRiZmYzNTQ2NjkzLi5lMWFlZjBiMmMzOTNmNTYxOTQ4Y2NhNWE5NTlmMmUwNzEwODg0Mzg4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVjdHVyZVJlZ2lz
dHJhdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVj
dHVyZVJlZ2lzdHJhdGlvblBoYXNlLmNwcApAQCAtMTQ5LDYgKzE0OSw5IEBAIGNsYXNzIFN0cnVj
dHVyZVJlZ2lzdHJhdGlvblBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgICAgICBj
YXNlIE5ld0dlbmVyYXRvckZ1bmN0aW9uOgogICAgICAgICAgICAgICAgICAgICByZWdpc3RlclN0
cnVjdHVyZShtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5n
ZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVyZSgpKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgICAgY2FzZSBOZXdHZW5lcmF0b3JGcmFtZToKKyAgICAgICAgICAgICAg
ICAgICAgcmVnaXN0ZXJTdHJ1Y3R1cmUobV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3Jp
Z2luLnNlbWFudGljKS0+Z2VuZXJhdG9yRnJhbWVTdHJ1Y3R1cmUoKSk7CisgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBkZWZh
dWx0OgogICAgICAgICAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwCmluZGV4IDk3YzA3
ODRiYjQyYmM5MTlkMDZjZjUyM2M0MWUwMjQ2YTUzNTFkOTEuLjY5ZDg5ZDZhZDQyNTQ5MjNiYzNm
YWIzYzdhY2EyMDg5NWM1NWU1Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcApAQCAtMzAsNiArMzAsNyBAQAog
CiAjaW5jbHVkZSAiRGlyZWN0QXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiRlRMQWJicmV2aWF0aW9u
cy5oIgorI2luY2x1ZGUgIkdlbmVyYXRvckZyYW1lLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVy
LmgiCiAjaW5jbHVkZSAiSlNFbnZpcm9ubWVudFJlY29yZC5oIgogI2luY2x1ZGUgIkpTUHJvcGVy
dHlOYW1lRW51bWVyYXRvci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaAppbmRleCA3N2U1Nzk4Njk0MGM2YWM5NmY4N2Yx
Zjk0NWM0NjI1MTI4ODYzMGYwLi40ODg2M2MwYmQzMGY2NDU3NjUzMTA4YmY0NTY5YjEyYzk0MDg1
OGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVh
cFJlcG9zaXRvcnkuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0
SGVhcFJlcG9zaXRvcnkuaApAQCAtNDcsNiArNDcsOCBAQAogICAgIG1hY3JvKERpcmVjdEFyZ3Vt
ZW50c19sZW5ndGgsIERpcmVjdEFyZ3VtZW50czo6b2Zmc2V0T2ZMZW5ndGgoKSkgXAogICAgIG1h
Y3JvKERpcmVjdEFyZ3VtZW50c19taW5DYXBhY2l0eSwgRGlyZWN0QXJndW1lbnRzOjpvZmZzZXRP
Zk1pbkNhcGFjaXR5KCkpIFwKICAgICBtYWNybyhEaXJlY3RBcmd1bWVudHNfb3ZlcnJpZGVzLCBE
aXJlY3RBcmd1bWVudHM6Om9mZnNldE9mT3ZlcnJpZGVzKCkpIFwKKyAgICBtYWNybyhHZW5lcmF0
b3JGcmFtZV9udW1iZXJPZkNhbGxlZUxvY2FscywgR2VuZXJhdG9yRnJhbWU6Om51bWJlck9mQ2Fs
bGVlTG9jYWxzT2Zmc2V0KCkpIFwKKyAgICBtYWNybyhHZW5lcmF0b3JGcmFtZV9udW1iZXJPZlNh
dmVkQ2FsbGVlTG9jYWxzLCBHZW5lcmF0b3JGcmFtZTo6bnVtYmVyT2ZTYXZlZENhbGxlZUxvY2Fs
c09mZnNldCgpKSBcCiAgICAgbWFjcm8oR2V0dGVyU2V0dGVyX2dldHRlciwgR2V0dGVyU2V0dGVy
OjpvZmZzZXRPZkdldHRlcigpKSBcCiAgICAgbWFjcm8oR2V0dGVyU2V0dGVyX3NldHRlciwgR2V0
dGVyU2V0dGVyOjpvZmZzZXRPZlNldHRlcigpKSBcCiAgICAgbWFjcm8oSlNBcnJheUJ1ZmZlclZp
ZXdfbGVuZ3RoLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSkgXApAQCAtOTEs
NiArOTMsNyBAQAogCiAjZGVmaW5lIEZPUl9FQUNIX0lOREVYRURfQUJTVFJBQ1RfSEVBUChtYWNy
bykgXAogICAgIG1hY3JvKERpcmVjdEFyZ3VtZW50c19zdG9yYWdlLCBEaXJlY3RBcmd1bWVudHM6
OnN0b3JhZ2VPZmZzZXQoKSwgc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSkgXAorICAgIG1hY3JvKEdl
bmVyYXRvckZyYW1lX2NhbGxlZUxvY2FscywgR2VuZXJhdG9yRnJhbWU6Om9mZnNldE9mTG9jYWxz
KCksIHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pKSBcCiAgICAgbWFjcm8oSlNFbnZpcm9u
bWVudFJlY29yZF92YXJpYWJsZXMsIEpTRW52aXJvbm1lbnRSZWNvcmQ6Om9mZnNldE9mVmFyaWFi
bGVzKCksIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkpIFwKICAgICBtYWNybyhKU1Byb3BlcnR5TmFt
ZUVudW1lcmF0b3JfY2FjaGVkUHJvcGVydHlOYW1lc1ZlY3RvckNvbnRlbnRzLCAwLCBzaXplb2Yo
V3JpdGVCYXJyaWVyPEpTU3RyaW5nPikpIFwKICAgICBtYWNybyhKU1JvcGVTdHJpbmdfZmliZXJz
LCBKU1JvcGVTdHJpbmc6Om9mZnNldE9mRmliZXJzKCksIHNpemVvZihXcml0ZUJhcnJpZXI8SlNT
dHJpbmc+KSkgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBh
YmlsaXRpZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMu
Y3BwCmluZGV4IGQyYTQ5MGMyYTY3ZTZkYjhiOWE1YTc5NjY0ZTU2NWUzZDZkOTUxZGMuLjBlMWRm
ZTg3NWUxMGE1YjU2NTU2ZmE5ZGQ1YmZkYjNlNjkwZjgzODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKQEAgLTcyLDYgKzcyLDcgQEAgaW5saW5l
IENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBOZXdPYmpl
Y3Q6CiAgICAgY2FzZSBOZXdBcnJheToKICAgICBjYXNlIE5ld0FycmF5QnVmZmVyOgorICAgIGNh
c2UgTmV3R2VuZXJhdG9yRnJhbWU6CiAgICAgY2FzZSBHZXRCeU9mZnNldDoKICAgICBjYXNlIEdl
dEdldHRlclNldHRlckJ5T2Zmc2V0OgogICAgIGNhc2UgR2V0R2V0dGVyOgpAQCAtMjE2LDYgKzIx
Nyw5IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiBub2RlKQogICAg
IGNhc2UgUHV0U2V0dGVyQnlWYWw6CiAgICAgY2FzZSBDb3B5UmVzdDoKICAgICBjYXNlIEdldFJl
c3RMZW5ndGg6CisgICAgY2FzZSBTZXRHZW5lcmF0b3JMb2NhbDoKKyAgICBjYXNlIEdldEdlbmVy
YXRvckxvY2FsOgorICAgIGNhc2UgUmVzaXplR2VuZXJhdG9yTG9jYWxzOgogICAgICAgICAvLyBU
aGVzZSBhcmUgT0suCiAgICAgICAgIGJyZWFrOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCmluZGV4IDNjMDA4ZmRiYmI1MGM1NmE5NzhjYTZl
MGQ3NDM4ODJiZmQyNTNjYjkuLmE1YWUxNjg0NzY4OWIyMzkwNzQ5NzQ5YzBiNzg4OGQxNDgxZGI2
YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xM
Vk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0u
Y3BwCkBAIC01Myw2ICs1Myw3IEBACiAjaW5jbHVkZSAiRlRMUGF0Y2hwb2ludEV4Y2VwdGlvbkhh
bmRsZS5oIgogI2luY2x1ZGUgIkZUTFRodW5rcy5oIgogI2luY2x1ZGUgIkZUTFdlaWdodGVkVGFy
Z2V0LmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yRnJhbWUuaCIKICNpbmNsdWRlICJKSVRBZGRHZW5l
cmF0b3IuaCIKICNpbmNsdWRlICJKSVRCaXRBbmRHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJKSVRC
aXRPckdlbmVyYXRvci5oIgpAQCAtODM5LDYgKzg0MCw5IEBAIGNsYXNzIExvd2VyREZHVG9MTFZN
IHsKICAgICAgICAgY2FzZSBOZXdBcnJheVdpdGhTaXplOgogICAgICAgICAgICAgY29tcGlsZU5l
d0FycmF5V2l0aFNpemUoKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE5ld0dl
bmVyYXRvckZyYW1lOgorICAgICAgICAgICAgY29tcGlsZU5ld0dlbmVyYXRvckZyYW1lKCk7Cisg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldDoK
ICAgICAgICAgICAgIGNvbXBpbGVHZXRUeXBlZEFycmF5Qnl0ZU9mZnNldCgpOwogICAgICAgICAg
ICAgYnJlYWs7CkBAIC0xMDcxLDYgKzEwNzUsMTUgQEAgY2xhc3MgTG93ZXJERkdUb0xMVk0gewog
ICAgICAgICBjYXNlIEdldFJlc3RMZW5ndGg6CiAgICAgICAgICAgICBjb21waWxlR2V0UmVzdExl
bmd0aCgpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgUmVzaXplR2VuZXJhdG9y
TG9jYWxzOgorICAgICAgICAgICAgY29tcGlsZVJlc2l6ZUdlbmVyYXRvckxvY2FscygpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU2V0R2VuZXJhdG9yTG9jYWw6CisgICAgICAg
ICAgICBjb21waWxlU2V0R2VuZXJhdG9yTG9jYWwoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIEdldEdlbmVyYXRvckxvY2FsOgorICAgICAgICAgICAgY29tcGlsZUdldEdlbmVy
YXRvckxvY2FsKCk7CisgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIFBoYW50b21M
b2NhbDoKICAgICAgICAgY2FzZSBMb29wSGludDoKQEAgLTM5MTYsNiArMzkyOSwyOCBAQCBjbGFz
cyBMb3dlckRGR1RvTExWTSB7CiAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwg
bGFzdE5leHQpOwogICAgICAgICBzZXRJbnQzMihtX291dC5waGkobV9vdXQuaW50MzIsIHplcm9M
ZW5ndGhSZXN1bHQsIG5vblplcm9MZW5ndGhSZXN1bHQpKTsKICAgICB9CisKKyAgICB2b2lkIGNv
bXBpbGVSZXNpemVHZW5lcmF0b3JMb2NhbHMoKQorICAgIHsKKyAgICAgICAgTFZhbHVlIGZyYW1l
ID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgbV9vdXQuc3RvcmUzMihtX291
dC5jb25zdEludDMyKG1fbm9kZS0+Z2VuZXJhdG9yRnJhbWVMb2NhbHMoKSksIGZyYW1lLCBtX2hl
YXBzLkdlbmVyYXRvckZyYW1lX251bWJlck9mU2F2ZWRDYWxsZWVMb2NhbHMpOworICAgIH0KKwor
ICAgIHZvaWQgY29tcGlsZVNldEdlbmVyYXRvckxvY2FsKCkKKyAgICB7CisgICAgICAgIG1fb3V0
LnN0b3JlNjQoCisgICAgICAgICAgICBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQyKCkpLAorICAg
ICAgICAgICAgbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKSwKKyAgICAgICAgICAgIG1faGVhcHMu
R2VuZXJhdG9yRnJhbWVfY2FsbGVlTG9jYWxzW21fbm9kZS0+Z2VuZXJhdG9yTG9jYWxJbmRleCgp
XSk7CisgICAgfQorCisgICAgdm9pZCBjb21waWxlR2V0R2VuZXJhdG9yTG9jYWwoKQorICAgIHsK
KyAgICAgICAgc2V0SlNWYWx1ZSgKKyAgICAgICAgICAgIG1fb3V0LmxvYWQ2NCgKKyAgICAgICAg
ICAgICAgICBsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpLAorICAgICAgICAgICAgICAgIG1faGVh
cHMuR2VuZXJhdG9yRnJhbWVfY2FsbGVlTG9jYWxzW21fbm9kZS0+Z2VuZXJhdG9yTG9jYWxJbmRl
eCgpXSkpOworICAgIH0KICAgICAKICAgICB2b2lkIGNvbXBpbGVOZXdPYmplY3QoKQogICAgIHsK
QEAgLTQxNTAsNiArNDE4NSw0MiBAQCBjbGFzcyBMb3dlckRGR1RvTExWTSB7CiAgICAgICAgICAg
ICBtX291dC5jb25zdEludFB0cihzdHJ1Y3R1cmUpKTsKICAgICAgICAgc2V0SlNWYWx1ZSh2bUNh
bGwobV9vdXQuaW50NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25OZXdBcnJheVdpdGhTaXpl
KSwgbV9jYWxsRnJhbWUsIHN0cnVjdHVyZVZhbHVlLCBwdWJsaWNMZW5ndGgpKTsKICAgICB9CisK
KyAgICB2b2lkIGNvbXBpbGVOZXdHZW5lcmF0b3JGcmFtZSgpCisgICAgeworICAgICAgICBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3IobV9ub2Rl
LT5vcmlnaW4uc2VtYW50aWMpOworICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdsb2Jh
bE9iamVjdC0+Z2VuZXJhdG9yRnJhbWVTdHJ1Y3R1cmUoKTsKKyAgICAgICAgdW5zaWduZWQgZ2Vu
ZXJhdG9yTG9jYWxzU2l6ZSA9IG1fbm9kZS0+Z2VuZXJhdG9yTG9jYWxzU2l6ZSgpOworCisgICAg
ICAgIExCYXNpY0Jsb2NrIHNsb3dQYXRoID0gRlRMX05FV19CTE9DSyhtX291dCwgKCJOZXdHZW5l
cmF0b3JGcmFtZSBzbG93IHBhdGgiKSk7CisgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlv
biA9IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgiTmV3R2VuZXJhdG9yRnJhbWUgY29udGludWF0aW9u
IikpOworCisgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuaW5zZXJ0TmV3Qmxv
Y2tzQmVmb3JlKHNsb3dQYXRoKTsKKyAgICAgICAgTFZhbHVlIGZhc3RPYmplY3QgPSBhbGxvY2F0
ZU9iamVjdDxHZW5lcmF0b3JGcmFtZT4oR2VuZXJhdG9yRnJhbWU6OmFsbG9jYXRpb25TaXplRm9y
TG9jYWxzKGdlbmVyYXRvckxvY2Fsc1NpemUpLCBzdHJ1Y3R1cmUsIG1fb3V0LmludFB0clplcm8s
IHNsb3dQYXRoKTsKKyAgICAgICAgbV9vdXQuc3RvcmUzMihtX291dC5jb25zdEludDMyKGdlbmVy
YXRvckxvY2Fsc1NpemUpLCBmYXN0T2JqZWN0LCBtX2hlYXBzLkdlbmVyYXRvckZyYW1lX251bWJl
ck9mQ2FsbGVlTG9jYWxzKTsKKyAgICAgICAgbV9vdXQuc3RvcmUzMihtX291dC5jb25zdEludDMy
KDApLCBmYXN0T2JqZWN0LCBtX2hlYXBzLkdlbmVyYXRvckZyYW1lX251bWJlck9mU2F2ZWRDYWxs
ZWVMb2NhbHMpOworCisgICAgICAgIEpTVmFsdWUgZW1wdHlWYWx1ZTsKKyAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IGdlbmVyYXRvckxvY2Fsc1NpemU7ICsraSkKKyAgICAgICAgICAg
IG1fb3V0LnN0b3JlNjQobV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjplbmNvZGUoZW1wdHlWYWx1
ZSkpLCBmYXN0T2JqZWN0LCBtX2hlYXBzLkdlbmVyYXRvckZyYW1lX2NhbGxlZUxvY2Fsc1tpXSk7
CisKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgZmFzdFJlc3VsdCA9IG1fb3V0LmFuY2hvcihmYXN0
T2JqZWN0KTsKKyAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOworCisgICAgICAgIG1f
b3V0LmFwcGVuZFRvKHNsb3dQYXRoLCBjb250aW51YXRpb24pOworICAgICAgICBWZWN0b3I8TFZh
bHVlPiBzbG93UGF0aEFyZ3VtZW50czsKKyAgICAgICAgTFZhbHVlIGNhbGxSZXN1bHQgPSBsYXp5
U2xvd1BhdGgoCisgICAgICAgICAgICBbPV0gKGNvbnN0IFZlY3RvcjxMb2NhdGlvbj4mIGxvY2F0
aW9ucykgLT4gUmVmUHRyPExhenlTbG93UGF0aDo6R2VuZXJhdG9yPiB7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIGNyZWF0ZUxhenlDYWxsR2VuZXJhdG9yKAorICAgICAgICAgICAgICAgICAgICBv
cGVyYXRpb25OZXdHZW5lcmF0b3JGcmFtZSwKKyAgICAgICAgICAgICAgICAgICAgbG9jYXRpb25z
WzBdLmRpcmVjdEdQUigpLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwg
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoZ2VuZXJhdG9yTG9jYWxzU2l6ZSkpOworICAgICAg
ICAgICAgfSk7CisgICAgICAgIFZhbHVlRnJvbUJsb2NrIHNsb3dSZXN1bHQgPSBtX291dC5hbmNo
b3IoY2FsbFJlc3VsdCk7CisgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKKworICAg
ICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKKyAgICAgICAgc2V0
SlNWYWx1ZShtX291dC5waGkobV9vdXQuaW50UHRyLCBmYXN0UmVzdWx0LCBzbG93UmVzdWx0KSk7
CisgICAgfQogICAgIAogICAgIHZvaWQgY29tcGlsZUFsbG9jYXRlUHJvcGVydHlTdG9yYWdlKCkK
ICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKaW5kZXggYTNiZGZhN2NkNWQwZjU3MjQ3
ZjFiZThjNDBiMjUxMGQyOWQ4MDBmZi4uZDkyYmM4N2M3YjY5MDk0MWNjMmNjMjk4YmFmYmNmZmY1
NzYzNjFmNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcApAQCAtMjE3LDYgKzIxNyw3IEBA
IHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgREVGSU5FX09QKG9w
X2Fzc2VydCkKICAgICAgICAgREVGSU5FX09QKG9wX3NhdmUpCiAgICAgICAgIERFRklORV9PUChv
cF9yZXN1bWUpCisgICAgICAgIERFRklORV9PUChvcF9uZXdfZ2VuZXJhdG9yX2ZyYW1lKQogICAg
ICAgICBERUZJTkVfT1Aob3BfZGVidWcpCiAgICAgICAgIERFRklORV9PUChvcF9kZWxfYnlfaWQp
CiAgICAgICAgIERFRklORV9PUChvcF9kaXYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAppbmRleCBk
ZjdiM2RjNWU4OTIwZWU0ZWY5MmJjYWNiYWVmZjFiNGMwMGQ5MzY5Li45ZTBmMTc1MTliMjU3ZDVk
N2QwNGRlMDc3NWVhNDQzMGI5NzJjMTAwIDEwMDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKQEAgLTMz
Myw2ICszMzMsNyBAQAogICAgICAgICBlbnVtIFdyaXRlQmFycmllck1vZGUgeyBVbmNvbmRpdGlv
bmFsV3JpdGVCYXJyaWVyLCBTaG91bGRGaWx0ZXJCYXNlLCBTaG91bGRGaWx0ZXJWYWx1ZSwgU2hv
dWxkRmlsdGVyQmFzZUFuZFZhbHVlIH07CiAgICAgICAgIC8vIHZhbHVlIHJlZ2lzdGVyIGluIHdy
aXRlIGJhcnJpZXIgaXMgdXNlZCBiZWZvcmUgYW55IHNjcmF0Y2ggcmVnaXN0ZXJzCiAgICAgICAg
IC8vIHNvIG1heSBzYWZlbHkgYmUgdGhlIHNhbWUgYXMgZWl0aGVyIG9mIHRoZSBzY3JhdGNoIHJl
Z2lzdGVycy4KKyAgICAgICAgdm9pZCBlbWl0V3JpdGVCYXJyaWVyKHVuc2lnbmVkIG93bmVyLCBX
cml0ZUJhcnJpZXJNb2RlKTsKICAgICAgICAgdm9pZCBlbWl0V3JpdGVCYXJyaWVyKHVuc2lnbmVk
IG93bmVyLCB1bnNpZ25lZCB2YWx1ZSwgV3JpdGVCYXJyaWVyTW9kZSk7CiAgICAgICAgIHZvaWQg
ZW1pdFdyaXRlQmFycmllcihKU0NlbGwqIG93bmVyLCB1bnNpZ25lZCB2YWx1ZSwgV3JpdGVCYXJy
aWVyTW9kZSk7CiAgICAgICAgIHZvaWQgZW1pdFdyaXRlQmFycmllcihKU0NlbGwqIG93bmVyKTsK
QEAgLTQ5Niw2ICs0OTcsNyBAQAogICAgICAgICB2b2lkIGVtaXRfb3BfYXNzZXJ0KEluc3RydWN0
aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9zYXZlKEluc3RydWN0aW9uKik7CiAgICAgICAg
IHZvaWQgZW1pdF9vcF9yZXN1bWUoSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29w
X25ld19nZW5lcmF0b3JfZnJhbWUoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29w
X2RlYnVnKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9kZWxfYnlfaWQoSW5z
dHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2RpdihJbnN0cnVjdGlvbiopOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKaW5kZXggNzM4Y2I2M2ZlZDkxYjQ5
ODU1ZDVkMDMzZDQ2MzM0NWZkZDQ3NmQ5Yi4uY2U3NGQzNDQwM2ViN2VhNjI5Y2VmYzcwNGE0YmUx
Yzc5NzlhMzkxNCAxMDA3NTUKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNv
ZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCkBA
IC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiQ29waWVkU3BhY2VJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiRGVidWdnZXIuaCIKICNpbmNsdWRlICJFeGNlcHRpb24uaCIKKyNpbmNsdWRlICJHZW5lcmF0
b3JGcmFtZS5oIgogI2luY2x1ZGUgIkhlYXAuaCIKICNpbmNsdWRlICJKSVRJbmxpbmVzLmgiCiAj
aW5jbHVkZSAiSlNBcnJheS5oIgpAQCAtODkzLDYgKzg5NCw0OSBAQCB2b2lkIEpJVDo6ZW1pdFNs
b3dfb3BfdG9fc3RyaW5nKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxT
bG93Q2FzZQogICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CiB9CiAKK3ZvaWQgSklUOjplbWl0X29w
X3NhdmUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBpbnQgZnJhbWUg
PSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOworICAgIHVuc2lnbmVkIGxpdmVDYWxs
ZWVMb2NhbHNJbmRleCA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51LnVuc2lnbmVkVmFsdWU7Cisg
ICAgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZW5lc3MgPSBtX2NvZGVCbG9jay0+bGl2ZUNhbGxl
ZUxvY2Fsc0F0WWllbGQobGl2ZUNhbGxlZUxvY2Fsc0luZGV4KTsKKworICAgIC8vIEEgZnJhbWUg
aXMgYWx3YXlzIGEgY2VsbC4gTm8gbmVlZCB0byBmaWx0ZXIgb3V0LgorICAgIGVtaXRXcml0ZUJh
cnJpZXIoZnJhbWUsIFVuY29uZGl0aW9uYWxXcml0ZUJhcnJpZXIpOworCisgICAgZW1pdEdldFZp
cnR1YWxSZWdpc3RlcihmcmFtZSwgcmVnVDEpOworCisgICAgLy8gQWxsb2NhdGUgZ2VuZXJhdG9y
IGZyYW1lIGxvY2Fscy4KKyAgICBzdG9yZTMyKFRydXN0ZWRJbW0zMihsaXZlbmVzcy5iaXRDb3Vu
dCgpKSwgQWRkcmVzcyhyZWdUMSwgR2VuZXJhdG9yRnJhbWU6Om51bWJlck9mU2F2ZWRDYWxsZWVM
b2NhbHNPZmZzZXQoKSkpOworCisgICAgdW5zaWduZWQgZ2VuZXJhdG9yTG9jYWxJbmRleCA9IDA7
CisgICAgbGl2ZW5lc3MuZm9yRWFjaFNldEJpdChbJl0oc2l6ZV90IGxvY2FsKSB7CisgICAgICAg
IFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kID0gdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwobG9jYWwp
OworICAgICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKG9wZXJhbmQub2Zmc2V0KCksIHJlZ1Qw
KTsKKyAgICAgICAgc3RvcmU2NChyZWdUMCwgQWRkcmVzcyhyZWdUMSwgR2VuZXJhdG9yRnJhbWU6
OmxvY2FsT2Zmc2V0KGdlbmVyYXRvckxvY2FsSW5kZXgpKSk7CisgICAgICAgIGdlbmVyYXRvckxv
Y2FsSW5kZXgrKzsKKyAgICB9KTsKK30KKwordm9pZCBKSVQ6OmVtaXRfb3BfcmVzdW1lKEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgaW50IGZyYW1lID0gY3VycmVudElu
c3RydWN0aW9uWzFdLnUub3BlcmFuZDsKKyAgICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5k
ZXggPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS51bnNpZ25lZFZhbHVlOworICAgIGNvbnN0IEZh
c3RCaXRWZWN0b3ImIGxpdmVuZXNzID0gbV9jb2RlQmxvY2stPmxpdmVDYWxsZWVMb2NhbHNBdFlp
ZWxkKGxpdmVDYWxsZWVMb2NhbHNJbmRleCk7CisKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVy
KGZyYW1lLCByZWdUMSk7CisKKyAgICB1bnNpZ25lZCBnZW5lcmF0b3JMb2NhbEluZGV4ID0gMDsK
KyAgICBsaXZlbmVzcy5mb3JFYWNoU2V0Qml0KFsmXShzaXplX3QgbG9jYWwpIHsKKyAgICAgICAg
VmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQgPSB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChsb2NhbCk7
CisgICAgICAgIGxvYWQ2NChBZGRyZXNzKHJlZ1QxLCBHZW5lcmF0b3JGcmFtZTo6bG9jYWxPZmZz
ZXQoZ2VuZXJhdG9yTG9jYWxJbmRleCkpLCByZWdUMCk7CisgICAgICAgIGVtaXRQdXRWaXJ0dWFs
UmVnaXN0ZXIob3BlcmFuZC5vZmZzZXQoKSk7CisgICAgICAgIGdlbmVyYXRvckxvY2FsSW5kZXgr
KzsKKyAgICB9KTsKKworICAgIC8vIERlYWxsb2NhdGUgZ2VuZXJhdG9yIGZyYW1lIGxvY2Fscy4K
KyAgICBzdG9yZTMyKFRydXN0ZWRJbW0zMigwKSwgQWRkcmVzcyhyZWdUMSwgR2VuZXJhdG9yRnJh
bWU6Om51bWJlck9mU2F2ZWRDYWxsZWVMb2NhbHNPZmZzZXQoKSkpOworfQorCiAjZW5kaWYgLy8g
VVNFKEpTVkFMVUU2NCkKIAogdm9pZCBKSVQ6OmVtaXRfb3BfbG9vcF9oaW50KEluc3RydWN0aW9u
KikKQEAgLTE0MjksMTUgKzE0NzMsOSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfcmVzdF9sZW5n
dGgoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICNlbmRpZgogfQogCi12b2lkIEpJ
VDo6ZW1pdF9vcF9zYXZlKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCi17Ci0gICAg
SklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNs
b3dfcGF0aF9zYXZlKTsKLSAgICBzbG93UGF0aENhbGwuY2FsbCgpOwotfQotCi12b2lkIEpJVDo6
ZW1pdF9vcF9yZXN1bWUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklU
OjplbWl0X29wX25ld19nZW5lcmF0b3JfZnJhbWUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKIHsKLSAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJ
bnN0cnVjdGlvbiwgc2xvd19wYXRoX3Jlc3VtZSk7CisgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQ
YXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9uZXdfZ2VuZXJhdG9y
X2ZyYW1lKTsKICAgICBzbG93UGF0aENhbGwuY2FsbCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKaW5kZXggYzMyNmZmM2UwMWU1YTQyNDNl
N2I3OGJlZTg1MmNmYjc5N2QzOTJlZS4uOTMxNGZkZGZmMjZiMDg2MjA4Yzg3YmNkNmNjYWRmZjNl
N2NlNmViYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVz
MzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0
LmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkNDYWxsSGVscGVycy5oIgogI2luY2x1
ZGUgIkRlYnVnZ2VyLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uLmgiCisjaW5jbHVkZSAiR2VuZXJh
dG9yRnJhbWUuaCIKICNpbmNsdWRlICJKSVRJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5o
IgogI2luY2x1ZGUgIkpTQ2VsbC5oIgpAQCAtMTMyOCw2ICsxMzI5LDUxIEBAIHZvaWQgSklUOjpl
bWl0X29wX3Byb2ZpbGVfdHlwZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAg
IGp1bXBUb0VuZC5saW5rKHRoaXMpOwogfQogCit2b2lkIEpJVDo6ZW1pdF9vcF9zYXZlKEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgaW50IGZyYW1lID0gY3VycmVudElu
c3RydWN0aW9uWzFdLnUub3BlcmFuZDsKKyAgICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5k
ZXggPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS51bnNpZ25lZFZhbHVlOworICAgIGNvbnN0IEZh
c3RCaXRWZWN0b3ImIGxpdmVuZXNzID0gbV9jb2RlQmxvY2stPmxpdmVDYWxsZWVMb2NhbHNBdFlp
ZWxkKGxpdmVDYWxsZWVMb2NhbHNJbmRleCk7CisKKyAgICAvLyBBIGZyYW1lIGlzIGFsd2F5cyBh
IGNlbGwuIE5vIG5lZWQgdG8gZmlsdGVyIG91dC4KKyAgICBlbWl0V3JpdGVCYXJyaWVyKGZyYW1l
LCBVbmNvbmRpdGlvbmFsV3JpdGVCYXJyaWVyKTsKKworICAgIGVtaXRMb2FkUGF5bG9hZChmcmFt
ZSwgcmVnVDIpOworCisgICAgLy8gQWxsb2NhdGUgZ2VuZXJhdG9yIGZyYW1lIGxvY2Fscy4KKyAg
ICBzdG9yZTMyKFRydXN0ZWRJbW0zMihsaXZlbmVzcy5iaXRDb3VudCgpKSwgQWRkcmVzcyhyZWdU
MiwgR2VuZXJhdG9yRnJhbWU6Om51bWJlck9mU2F2ZWRDYWxsZWVMb2NhbHNPZmZzZXQoKSkpOwor
CisgICAgdW5zaWduZWQgZ2VuZXJhdG9yTG9jYWxJbmRleCA9IDA7CisgICAgbGl2ZW5lc3MuZm9y
RWFjaFNldEJpdChbJl0oc2l6ZV90IGxvY2FsKSB7CisgICAgICAgIFZpcnR1YWxSZWdpc3RlciBv
cGVyYW5kID0gdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwobG9jYWwpOworICAgICAgICBlbWl0R2V0
VmlydHVhbFJlZ2lzdGVyKG9wZXJhbmQub2Zmc2V0KCksIEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdU
MCkpOworICAgICAgICBzdG9yZTMyKHJlZ1QxLCBBZGRyZXNzKHJlZ1QyLCBHZW5lcmF0b3JGcmFt
ZTo6bG9jYWxPZmZzZXQoZ2VuZXJhdG9yTG9jYWxJbmRleCkgKyBPQkpFQ1RfT0ZGU0VUT0YoSlNW
YWx1ZSwgdS5hc0JpdHMudGFnKSkpOworICAgICAgICBzdG9yZTMyKHJlZ1QwLCBBZGRyZXNzKHJl
Z1QyLCBHZW5lcmF0b3JGcmFtZTo6bG9jYWxPZmZzZXQoZ2VuZXJhdG9yTG9jYWxJbmRleCkgKyBP
QkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMucGF5bG9hZCkpKTsKKyAgICAgICAgZ2Vu
ZXJhdG9yTG9jYWxJbmRleCsrOworICAgIH0pOworfQorCit2b2lkIEpJVDo6ZW1pdF9vcF9yZXN1
bWUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBpbnQgZnJhbWUgPSBj
dXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOworICAgIHVuc2lnbmVkIGxpdmVDYWxsZWVM
b2NhbHNJbmRleCA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51LnVuc2lnbmVkVmFsdWU7CisgICAg
Y29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZW5lc3MgPSBtX2NvZGVCbG9jay0+bGl2ZUNhbGxlZUxv
Y2Fsc0F0WWllbGQobGl2ZUNhbGxlZUxvY2Fsc0luZGV4KTsKKworICAgIGVtaXRMb2FkUGF5bG9h
ZChmcmFtZSwgcmVnVDIpOworCisgICAgdW5zaWduZWQgZ2VuZXJhdG9yTG9jYWxJbmRleCA9IDA7
CisgICAgbGl2ZW5lc3MuZm9yRWFjaFNldEJpdChbJl0oc2l6ZV90IGxvY2FsKSB7CisgICAgICAg
IFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kID0gdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwobG9jYWwp
OworICAgICAgICBsb2FkMzIoQWRkcmVzcyhyZWdUMiwgR2VuZXJhdG9yRnJhbWU6OmxvY2FsT2Zm
c2V0KGdlbmVyYXRvckxvY2FsSW5kZXgpICsgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNC
aXRzLnRhZykpLCByZWdUMSk7CisgICAgICAgIGxvYWQzMihBZGRyZXNzKHJlZ1QyLCBHZW5lcmF0
b3JGcmFtZTo6bG9jYWxPZmZzZXQoZ2VuZXJhdG9yTG9jYWxJbmRleCkgKyBPQkpFQ1RfT0ZGU0VU
T0YoSlNWYWx1ZSwgdS5hc0JpdHMucGF5bG9hZCkpLCByZWdUMCk7CisgICAgICAgIGVtaXRQdXRW
aXJ0dWFsUmVnaXN0ZXIob3BlcmFuZC5vZmZzZXQoKSwgSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1Qw
KSk7CisgICAgICAgIGdlbmVyYXRvckxvY2FsSW5kZXgrKzsKKyAgICB9KTsKKworICAgIC8vIERl
YWxsb2NhdGUgZ2VuZXJhdG9yIGZyYW1lIGxvY2Fscy4KKyAgICBzdG9yZTMyKFRydXN0ZWRJbW0z
MigwKSwgQWRkcmVzcyhyZWdUMiwgR2VuZXJhdG9yRnJhbWU6Om51bWJlck9mU2F2ZWRDYWxsZWVM
b2NhbHNPZmZzZXQoKSkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIFVT
RShKU1ZBTFVFMzJfNjQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VFByb3BlcnR5QWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVy
dHlBY2Nlc3MuY3BwCmluZGV4IDM3ODFjMWRmMjM1NzgzMzkxMWE4MTcwODg3ODA2YTM0OGI5Mjkz
YTUuLjkzODYyNjZkZDg3YjExNWY2NDY4MmJkZTNjZjBkNWY2OTc0NzgzYzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCkBAIC0xMDkwLDE0
ICsxMDkwLDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X3RvX2FyZ3VtZW50cyhJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQogI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCiAKICNpZiBV
U0UoSlNWQUxVRTY0KQotdm9pZCBKSVQ6OmVtaXRXcml0ZUJhcnJpZXIodW5zaWduZWQgb3duZXIs
IHVuc2lnbmVkIHZhbHVlLCBXcml0ZUJhcnJpZXJNb2RlIG1vZGUpCit2b2lkIEpJVDo6ZW1pdFdy
aXRlQmFycmllcih1bnNpZ25lZCBvd25lciwgV3JpdGVCYXJyaWVyTW9kZSBtb2RlKQogewotICAg
IEp1bXAgdmFsdWVOb3RDZWxsOwotICAgIGlmIChtb2RlID09IFNob3VsZEZpbHRlclZhbHVlIHx8
IG1vZGUgPT0gU2hvdWxkRmlsdGVyQmFzZUFuZFZhbHVlKSB7Ci0gICAgICAgIGVtaXRHZXRWaXJ0
dWFsUmVnaXN0ZXIodmFsdWUsIHJlZ1QwKTsKLSAgICAgICAgdmFsdWVOb3RDZWxsID0gYnJhbmNo
VGVzdDY0KE5vblplcm8sIHJlZ1QwLCB0YWdNYXNrUmVnaXN0ZXIpOwotICAgIH0KLSAgICAKICAg
ICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKG93bmVyLCByZWdUMCk7CiAgICAgSnVtcCBvd25lck5v
dENlbGw7CiAgICAgaWYgKG1vZGUgPT0gU2hvdWxkRmlsdGVyQmFzZUFuZFZhbHVlIHx8IG1vZGUg
PT0gU2hvdWxkRmlsdGVyQmFzZSkKQEAgLTExMDksNiArMTEwMywxOCBAQCB2b2lkIEpJVDo6ZW1p
dFdyaXRlQmFycmllcih1bnNpZ25lZCBvd25lciwgdW5zaWduZWQgdmFsdWUsIFdyaXRlQmFycmll
ck1vZGUgbW9kZQogCiAgICAgaWYgKG1vZGUgPT0gU2hvdWxkRmlsdGVyQmFzZUFuZFZhbHVlIHx8
IG1vZGUgPT0gU2hvdWxkRmlsdGVyQmFzZSkKICAgICAgICAgb3duZXJOb3RDZWxsLmxpbmsodGhp
cyk7Cit9CisKK3ZvaWQgSklUOjplbWl0V3JpdGVCYXJyaWVyKHVuc2lnbmVkIG93bmVyLCB1bnNp
Z25lZCB2YWx1ZSwgV3JpdGVCYXJyaWVyTW9kZSBtb2RlKQoreworICAgIEp1bXAgdmFsdWVOb3RD
ZWxsOworICAgIGlmIChtb2RlID09IFNob3VsZEZpbHRlclZhbHVlIHx8IG1vZGUgPT0gU2hvdWxk
RmlsdGVyQmFzZUFuZFZhbHVlKSB7CisgICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIodmFs
dWUsIHJlZ1QwKTsKKyAgICAgICAgdmFsdWVOb3RDZWxsID0gYnJhbmNoVGVzdDY0KE5vblplcm8s
IHJlZ1QwLCB0YWdNYXNrUmVnaXN0ZXIpOworICAgIH0KKworICAgIGVtaXRXcml0ZUJhcnJpZXIo
b3duZXIsIG1vZGUpOworCiAgICAgaWYgKG1vZGUgPT0gU2hvdWxkRmlsdGVyVmFsdWUgfHwgbW9k
ZSA9PSBTaG91bGRGaWx0ZXJCYXNlQW5kVmFsdWUpIAogICAgICAgICB2YWx1ZU5vdENlbGwubGlu
ayh0aGlzKTsKIH0KQEAgLTExMjgsMTQgKzExMzQsOCBAQCB2b2lkIEpJVDo6ZW1pdFdyaXRlQmFy
cmllcihKU0NlbGwqIG93bmVyLCB1bnNpZ25lZCB2YWx1ZSwgV3JpdGVCYXJyaWVyTW9kZSBtb2Rl
KQogCiAjZWxzZSAvLyBVU0UoSlNWQUxVRTY0KQogCi12b2lkIEpJVDo6ZW1pdFdyaXRlQmFycmll
cih1bnNpZ25lZCBvd25lciwgdW5zaWduZWQgdmFsdWUsIFdyaXRlQmFycmllck1vZGUgbW9kZSkK
K3ZvaWQgSklUOjplbWl0V3JpdGVCYXJyaWVyKHVuc2lnbmVkIG93bmVyLCBXcml0ZUJhcnJpZXJN
b2RlIG1vZGUpCiB7Ci0gICAgSnVtcCB2YWx1ZU5vdENlbGw7Ci0gICAgaWYgKG1vZGUgPT0gU2hv
dWxkRmlsdGVyVmFsdWUgfHwgbW9kZSA9PSBTaG91bGRGaWx0ZXJCYXNlQW5kVmFsdWUpIHsKLSAg
ICAgICAgZW1pdExvYWRUYWcodmFsdWUsIHJlZ1QwKTsKLSAgICAgICAgdmFsdWVOb3RDZWxsID0g
YnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QwLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykp
OwotICAgIH0KLSAgICAKICAgICBlbWl0TG9hZChvd25lciwgcmVnVDAsIHJlZ1QxKTsKICAgICBK
dW1wIG93bmVyTm90Q2VsbDsKICAgICBpZiAobW9kZSA9PSBTaG91bGRGaWx0ZXJCYXNlIHx8IG1v
ZGUgPT0gU2hvdWxkRmlsdGVyQmFzZUFuZFZhbHVlKQpAQCAtMTE0Nyw3ICsxMTQ3LDIwIEBAIHZv
aWQgSklUOjplbWl0V3JpdGVCYXJyaWVyKHVuc2lnbmVkIG93bmVyLCB1bnNpZ25lZCB2YWx1ZSwg
V3JpdGVCYXJyaWVyTW9kZSBtb2RlCiAKICAgICBpZiAobW9kZSA9PSBTaG91bGRGaWx0ZXJCYXNl
IHx8IG1vZGUgPT0gU2hvdWxkRmlsdGVyQmFzZUFuZFZhbHVlKQogICAgICAgICBvd25lck5vdENl
bGwubGluayh0aGlzKTsKLSAgICBpZiAobW9kZSA9PSBTaG91bGRGaWx0ZXJWYWx1ZSB8fCBtb2Rl
ID09IFNob3VsZEZpbHRlckJhc2VBbmRWYWx1ZSkgCit9CisKKwordm9pZCBKSVQ6OmVtaXRXcml0
ZUJhcnJpZXIodW5zaWduZWQgb3duZXIsIHVuc2lnbmVkIHZhbHVlLCBXcml0ZUJhcnJpZXJNb2Rl
IG1vZGUpCit7CisgICAgSnVtcCB2YWx1ZU5vdENlbGw7CisgICAgaWYgKG1vZGUgPT0gU2hvdWxk
RmlsdGVyVmFsdWUgfHwgbW9kZSA9PSBTaG91bGRGaWx0ZXJCYXNlQW5kVmFsdWUpIHsKKyAgICAg
ICAgZW1pdExvYWRUYWcodmFsdWUsIHJlZ1QwKTsKKyAgICAgICAgdmFsdWVOb3RDZWxsID0gYnJh
bmNoMzIoTm90RXF1YWwsIHJlZ1QwLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpOwor
ICAgIH0KKworICAgIGVtaXRXcml0ZUJhcnJpZXIob3duZXIsIG1vZGUpOworCisgICAgaWYgKG1v
ZGUgPT0gU2hvdWxkRmlsdGVyVmFsdWUgfHwgbW9kZSA9PSBTaG91bGRGaWx0ZXJCYXNlQW5kVmFs
dWUpCiAgICAgICAgIHZhbHVlTm90Q2VsbC5saW5rKHRoaXMpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCmluZGV4
IDJiNGU2MTk4NmQzMTJhYzllNGY4NzM3M2NlN2FhMGI5ZmQwY2U3NWEuLmFmZTA5Njg0ODhmNDZk
MTY3NWM5MTdlY2IyYjYyMGMwMDU2MTIyNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCkBAIC0zMiw2ICszMiw3IEBA
CiAjaW5jbHVkZSAiRGlyZWN0QXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uLmgiCiAj
aW5jbHVkZSAiRXhlY3V0YWJsZS5oIgorI2luY2x1ZGUgIkdlbmVyYXRvckZyYW1lLmgiCiAjaW5j
bHVkZSAiSGVhcC5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSlNBcnJh
eS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXIuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXIuYXNtCmluZGV4IGNkNGNlOTA2M2IxOTU3NWE5NTdlM2NhM2UyMmJlNTc5MTViZGI1OWEu
LjAwYTdhZGI4OWQ1YzVlMDk1NDIxMTU2ZDRmZTRiZDY3ZTE3YjZhYTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KQEAgLTEy
NTYsNiArMTI1NiwxMiBAQCBfbGxpbnRfb3BfbmV3X3JlZ2V4cDoKICAgICBkaXNwYXRjaCgzKQog
CiAKK19sbGludF9vcF9uZXdfZ2VuZXJhdG9yX2ZyYW1lOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF9uZXdfZ2VuZXJhdG9yX2ZyYW1lKQorICAgIGRp
c3BhdGNoKDMpCisKKwogX2xsaW50X29wX2xlc3M6CiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAg
IGNhbGxTbG93UGF0aChfc2xvd19wYXRoX2xlc3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1BhcnNlci5jcHAKaW5kZXggZTAwZDgwMDIyMjA0MzkzMjFjYmQwY2RlMTZmNzI5ZTkzNmY4NjIy
NS4uNzZhNGEyMDAwMTY0MTJjZDc2N2NlOTFiZTA5YWQ2NmZhNDQ4ODFkMyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcApAQCAtMjUxLDcgKzI1MSw3IEBACiAgICAgaWYg
KG1fbGV4ZXItPmlzUmVwYXJzaW5nRnVuY3Rpb24oKSkgewogICAgICAgICBQYXJzZXJGdW5jdGlv
bkluZm88QVNUQnVpbGRlcj4gZnVuY3Rpb25JbmZvOwogICAgICAgICBpZiAocGFyc2VNb2RlID09
IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yQm9keU1vZGUpCi0gICAgICAgICAgICBmdW5jdGlv
bkluZm8ucGFyYW1ldGVycyA9IGNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMoY29udGV4dCk7Cisg
ICAgICAgICAgICBmdW5jdGlvbkluZm8ucGFyYW1ldGVycyA9IGNyZWF0ZUdlbmVyYXRvclBhcmFt
ZXRlcnMoY29udGV4dCwgZnVuY3Rpb25JbmZvLnBhcmFtZXRlckNvdW50KTsKICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgcGFyc2VGdW5jdGlvblBhcmFtZXRlcnMoY29udGV4dCwgcGFyc2VNb2Rl
LCBmdW5jdGlvbkluZm8pOwogICAgICAgICBtX3BhcmFtZXRlcnMgPSBmdW5jdGlvbkluZm8ucGFy
YW1ldGVyczsKQEAgLTUyOCwxMCArNTI4LDkgQEAKIAogICAgIFBhcnNlckZ1bmN0aW9uSW5mbzxU
cmVlQnVpbGRlcj4gaW5mbzsKICAgICBpbmZvLm5hbWUgPSAmbV92bS0+cHJvcGVydHlOYW1lcy0+
bnVsbElkZW50aWZpZXI7Ci0gICAgaW5mby5wYXJhbWV0ZXJzID0gY3JlYXRlR2VuZXJhdG9yUGFy
YW1ldGVycyhjb250ZXh0KTsKKyAgICBpbmZvLnBhcmFtZXRlcnMgPSBjcmVhdGVHZW5lcmF0b3JQ
YXJhbWV0ZXJzKGNvbnRleHQsIGluZm8ucGFyYW1ldGVyQ291bnQpOwogICAgIGluZm8uc3RhcnRP
ZmZzZXQgPSBwYXJhbWV0ZXJzU3RhcnQ7CiAgICAgaW5mby5zdGFydExpbmUgPSB0b2tlbkxpbmUo
KTsKLSAgICBpbmZvLnBhcmFtZXRlckNvdW50ID0gNDsgLy8gZ2VuZXJhdG9yLCBzdGF0ZSwgdmFs
dWUsIHJlc3VtZSBtb2RlCiAKICAgICB7CiAgICAgICAgIEF1dG9Qb3BTY29wZVJlZiBnZW5lcmF0
b3JCb2R5U2NvcGUodGhpcywgcHVzaFNjb3BlKCkpOwpAQCAtMTgyNCwzMiArMTgyMywzMCBAQCBz
dGF0aWMgY29uc3QgY2hhciogc3RyaW5nRm9yRnVuY3Rpb25Nb2RlKFNvdXJjZVBhcnNlTW9kZSBt
b2RlKQogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgotdGVtcGxhdGUgPGNsYXNz
IFRyZWVCdWlsZGVyPiB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6Rm9ybWFsUGFyYW1ldGVyTGlzdCBQ
YXJzZXI8TGV4ZXJUeXBlPjo6Y3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhUcmVlQnVpbGRlciYg
Y29udGV4dCkKK3RlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gdHlwZW5hbWUgVHJlZUJ1aWxk
ZXI6OkZvcm1hbFBhcmFtZXRlckxpc3QgUGFyc2VyPExleGVyVHlwZT46OmNyZWF0ZUdlbmVyYXRv
clBhcmFtZXRlcnMoVHJlZUJ1aWxkZXImIGNvbnRleHQsIHVuc2lnbmVkJiBwYXJhbWV0ZXJDb3Vu
dCkKIHsKICAgICBhdXRvIHBhcmFtZXRlcnMgPSBjb250ZXh0LmNyZWF0ZUZvcm1hbFBhcmFtZXRl
ckxpc3QoKTsKIAogICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkp
OwogICAgIEpTVGV4dFBvc2l0aW9uIHBvc2l0aW9uID0gdG9rZW5TdGFydFBvc2l0aW9uKCk7CiAK
LSAgICAvLyBAZ2VuZXJhdG9yCi0gICAgZGVjbGFyZVBhcmFtZXRlcigmbV92bS0+cHJvcGVydHlO
YW1lcy0+Z2VuZXJhdG9yUHJpdmF0ZU5hbWUpOwotICAgIGF1dG8gZ2VuZXJhdG9yID0gY29udGV4
dC5jcmVhdGVCaW5kaW5nTG9jYXRpb24obG9jYXRpb24sIG1fdm0tPnByb3BlcnR5TmFtZXMtPmdl
bmVyYXRvclByaXZhdGVOYW1lLCBwb3NpdGlvbiwgcG9zaXRpb24sIEFzc2lnbm1lbnRDb250ZXh0
OjpEZWNsYXJhdGlvblN0YXRlbWVudCk7Ci0gICAgY29udGV4dC5hcHBlbmRQYXJhbWV0ZXIocGFy
YW1ldGVycywgZ2VuZXJhdG9yLCAwKTsKKyAgICBhdXRvIGFkZFBhcmFtZXRlciA9IFsmXShjb25z
dCBJZGVudGlmaWVyJiBuYW1lKSB7CisgICAgICAgIGRlY2xhcmVQYXJhbWV0ZXIoJm5hbWUpOwor
ICAgICAgICBhdXRvIGJpbmRpbmcgPSBjb250ZXh0LmNyZWF0ZUJpbmRpbmdMb2NhdGlvbihsb2Nh
dGlvbiwgbmFtZSwgcG9zaXRpb24sIHBvc2l0aW9uLCBBc3NpZ25tZW50Q29udGV4dDo6RGVjbGFy
YXRpb25TdGF0ZW1lbnQpOworICAgICAgICBjb250ZXh0LmFwcGVuZFBhcmFtZXRlcihwYXJhbWV0
ZXJzLCBiaW5kaW5nLCAwKTsKKyAgICAgICAgKytwYXJhbWV0ZXJDb3VudDsKKyAgICB9OwogCisg
ICAgLy8gQGdlbmVyYXRvcgorICAgIGFkZFBhcmFtZXRlcihtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5n
ZW5lcmF0b3JQcml2YXRlTmFtZSk7CiAgICAgLy8gQGdlbmVyYXRvclN0YXRlCi0gICAgZGVjbGFy
ZVBhcmFtZXRlcigmbV92bS0+cHJvcGVydHlOYW1lcy0+Z2VuZXJhdG9yU3RhdGVQcml2YXRlTmFt
ZSk7Ci0gICAgYXV0byBnZW5lcmF0b3JTdGF0ZSA9IGNvbnRleHQuY3JlYXRlQmluZGluZ0xvY2F0
aW9uKGxvY2F0aW9uLCBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5nZW5lcmF0b3JTdGF0ZVByaXZhdGVO
YW1lLCBwb3NpdGlvbiwgcG9zaXRpb24sIEFzc2lnbm1lbnRDb250ZXh0OjpEZWNsYXJhdGlvblN0
YXRlbWVudCk7Ci0gICAgY29udGV4dC5hcHBlbmRQYXJhbWV0ZXIocGFyYW1ldGVycywgZ2VuZXJh
dG9yU3RhdGUsIDApOwotCisgICAgYWRkUGFyYW1ldGVyKG1fdm0tPnByb3BlcnR5TmFtZXMtPmdl
bmVyYXRvclN0YXRlUHJpdmF0ZU5hbWUpOwogICAgIC8vIEBnZW5lcmF0b3JWYWx1ZQotICAgIGRl
Y2xhcmVQYXJhbWV0ZXIoJm1fdm0tPnByb3BlcnR5TmFtZXMtPmdlbmVyYXRvclZhbHVlUHJpdmF0
ZU5hbWUpOwotICAgIGF1dG8gZ2VuZXJhdG9yVmFsdWUgPSBjb250ZXh0LmNyZWF0ZUJpbmRpbmdM
b2NhdGlvbihsb2NhdGlvbiwgbV92bS0+cHJvcGVydHlOYW1lcy0+Z2VuZXJhdG9yVmFsdWVQcml2
YXRlTmFtZSwgcG9zaXRpb24sIHBvc2l0aW9uLCBBc3NpZ25tZW50Q29udGV4dDo6RGVjbGFyYXRp
b25TdGF0ZW1lbnQpOwotICAgIGNvbnRleHQuYXBwZW5kUGFyYW1ldGVyKHBhcmFtZXRlcnMsIGdl
bmVyYXRvclZhbHVlLCAwKTsKLQorICAgIGFkZFBhcmFtZXRlcihtX3ZtLT5wcm9wZXJ0eU5hbWVz
LT5nZW5lcmF0b3JWYWx1ZVByaXZhdGVOYW1lKTsKICAgICAvLyBAZ2VuZXJhdG9yUmVzdW1lTW9k
ZQotICAgIGRlY2xhcmVQYXJhbWV0ZXIoJm1fdm0tPnByb3BlcnR5TmFtZXMtPmdlbmVyYXRvclJl
c3VtZU1vZGVQcml2YXRlTmFtZSk7Ci0gICAgYXV0byBnZW5lcmF0b3JSZXN1bWVNb2RlID0gY29u
dGV4dC5jcmVhdGVCaW5kaW5nTG9jYXRpb24obG9jYXRpb24sIG1fdm0tPnByb3BlcnR5TmFtZXMt
PmdlbmVyYXRvclJlc3VtZU1vZGVQcml2YXRlTmFtZSwgcG9zaXRpb24sIHBvc2l0aW9uLCBBc3Np
Z25tZW50Q29udGV4dDo6RGVjbGFyYXRpb25TdGF0ZW1lbnQpOwotICAgIGNvbnRleHQuYXBwZW5k
UGFyYW1ldGVyKHBhcmFtZXRlcnMsIGdlbmVyYXRvclJlc3VtZU1vZGUsIDApOworICAgIGFkZFBh
cmFtZXRlcihtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5nZW5lcmF0b3JSZXN1bWVNb2RlUHJpdmF0ZU5h
bWUpOworICAgIC8vIEBnZW5lcmF0b3JGcmFtZQorICAgIGFkZFBhcmFtZXRlcihtX3ZtLT5wcm9w
ZXJ0eU5hbWVzLT5nZW5lcmF0b3JGcmFtZVByaXZhdGVOYW1lKTsKIAogICAgIHJldHVybiBwYXJh
bWV0ZXJzOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJz
ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKaW5kZXggMzI5ZWRi
ZTcyNTM1ZjMyOTNiYWYzZmExNWNiZTViY2FlY2EyOTY3ZC4uYWZlMjY4NzZiYWJhZDE3NGRjNTE1
YWJjY2MyNzRjMjUwOGJkZjkzNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9QYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5o
CkBAIC0xMjI3LDcgKzEyMjcsNyBAQCBjbGFzcyBQYXJzZXIgewogICAgIEFMV0FZU19JTkxJTkUg
Ym9vbCBpc0Fycm93RnVuY3Rpb25QYXJhbWV0ZXJzKCk7CiAgICAgCiAgICAgdGVtcGxhdGUgPGNs
YXNzIFRyZWVCdWlsZGVyPiBORVZFUl9JTkxJTkUgaW50IHBhcnNlRnVuY3Rpb25QYXJhbWV0ZXJz
KFRyZWVCdWlsZGVyJiwgU291cmNlUGFyc2VNb2RlLCBQYXJzZXJGdW5jdGlvbkluZm88VHJlZUJ1
aWxkZXI+Jik7Ci0gICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBORVZFUl9JTkxJTkUg
dHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkZvcm1hbFBhcmFtZXRlckxpc3QgY3JlYXRlR2VuZXJhdG9y
UGFyYW1ldGVycyhUcmVlQnVpbGRlciYpOworICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRl
cj4gTkVWRVJfSU5MSU5FIHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpGb3JtYWxQYXJhbWV0ZXJMaXN0
IGNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMoVHJlZUJ1aWxkZXImLCB1bnNpZ25lZCYgcGFyYW1l
dGVyQ291bnQpOwogCiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBORVZFUl9JTkxJ
TkUgVHJlZUNsYXNzRXhwcmVzc2lvbiBwYXJzZUNsYXNzKFRyZWVCdWlsZGVyJiwgRnVuY3Rpb25S
ZXF1aXJlbWVudHMsIFBhcnNlckNsYXNzSW5mbzxUcmVlQnVpbGRlcj4mKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKaW5kZXggNzhi
NDNjNGQzODlmZjdhOTA4MzEzYjU1NDA1NzBlODgyZTFiMDM3MS4uZWNiZjcyYmUyOGYzN2QzMzBj
OWUxYzJiZjU2OWM3ZGE2ZTk5MTg1NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCkBAIC02OTcsMTggKzY5Nyw3IEBAIHN0YXRpYyB2
b2lkIHVwZGF0ZVJlc3VsdFByb2ZpbGVGb3JCaW5hcnlBcml0aE9wKEV4ZWNTdGF0ZSosIEluc3Ry
dWN0aW9uKiwgSlNWYWx1CiAgICAgLy8gT25seSBzYXZlIHZhcmlhYmxlcyBhbmQgdGVtcG9yYXJ5
IHJlZ2lzdGVycy4gVGhlIHNjb3BlIHJlZ2lzdGVycyBhcmUgaW5jbHVkZWQgaW4gdGhlbS4KICAg
ICAvLyBCdXQgcGFyYW1ldGVycyBhcmUgbm90IGluY2x1ZGVkLiBCZWNhdXNlIHRoZSBnZW5lcmF0
b3IgaW1wbGVtZW50YXRpb24gcmVwbGFjZXMgdGhlIHZhbHVlcyBvZiBwYXJhbWV0ZXJzIG9uIGVh
Y2ggZ2VuZXJhdG9yLm5leHQoKSBjYWxsLgogICAgIEJFR0lOKCk7Ci0gICAgSlNWYWx1ZSBnZW5l
cmF0b3IgPSBPUCgxKS5qc1ZhbHVlKCk7Ci0gICAgR2VuZXJhdG9yRnJhbWUqIGZyYW1lID0gbnVs
bHB0cjsKLSAgICBKU1ZhbHVlIHZhbHVlID0gZ2VuZXJhdG9yLmdldChleGVjLCBleGVjLT5wcm9w
ZXJ0eU5hbWVzKCkuZ2VuZXJhdG9yRnJhbWVQcml2YXRlTmFtZSk7Ci0gICAgaWYgKCF2YWx1ZS5p
c051bGwoKSkKLSAgICAgICAgZnJhbWUgPSBqc0Nhc3Q8R2VuZXJhdG9yRnJhbWUqPih2YWx1ZSk7
Ci0gICAgZWxzZSB7Ci0gICAgICAgIC8vIEZJWE1FOiBPbmNlIEpTR2VuZXJhdG9yIHNwZWNpYWxp
emVkIG9iamVjdCBpcyBpbnRyb2R1Y2VkLCB0aGlzIEdlbmVyYXRvckZyYW1lIHNob3VsZCBiZSBl
bWJlZGVkIGludG8gaXQgdG8gYXZvaWQgYWxsb2NhdGlvbnMuCi0gICAgICAgIC8vIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE1NDUKLSAgICAgICAgZnJhbWUgPSBH
ZW5lcmF0b3JGcmFtZTo6Y3JlYXRlKGV4ZWMtPnZtKCksICBleGVjLT5jb2RlQmxvY2soKS0+bnVt
Q2FsbGVlTG9jYWxzKCkpOwotICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChnZW5lcmF0b3Is
IHRydWUsIFB1dFByb3BlcnR5U2xvdDo6UHV0QnlJZCk7Ci0gICAgICAgIGFzT2JqZWN0KGdlbmVy
YXRvciktPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5wdXQoYXNPYmplY3QoZ2VuZXJhdG9yKSwg
ZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLmdlbmVyYXRvckZyYW1lUHJpdmF0ZU5hbWUsIGZy
YW1lLCBzbG90KTsKLSAgICB9CisgICAgR2VuZXJhdG9yRnJhbWUqIGZyYW1lID0ganNDYXN0PEdl
bmVyYXRvckZyYW1lKj4oT1AoMSkuanNWYWx1ZSgpKTsKICAgICB1bnNpZ25lZCBsaXZlQ2FsbGVl
TG9jYWxzSW5kZXggPSBwY1syXS51LnVuc2lnbmVkVmFsdWU7CiAgICAgZnJhbWUtPnNhdmUoZXhl
YywgZXhlYy0+Y29kZUJsb2NrKCktPmxpdmVDYWxsZWVMb2NhbHNBdFlpZWxkKGxpdmVDYWxsZWVM
b2NhbHNJbmRleCkpOwogICAgIEVORCgpOwpAQCAtNzE3LDggKzcwNiw3IEBAIHN0YXRpYyB2b2lk
IHVwZGF0ZVJlc3VsdFByb2ZpbGVGb3JCaW5hcnlBcml0aE9wKEV4ZWNTdGF0ZSosIEluc3RydWN0
aW9uKiwgSlNWYWx1CiBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcmVzdW1lKQogewogICAgIEJF
R0lOKCk7Ci0gICAgSlNWYWx1ZSBnZW5lcmF0b3IgPSBPUCgxKS5qc1ZhbHVlKCk7Ci0gICAgR2Vu
ZXJhdG9yRnJhbWUqIGZyYW1lID0ganNDYXN0PEdlbmVyYXRvckZyYW1lKj4oZ2VuZXJhdG9yLmdl
dChleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuZ2VuZXJhdG9yRnJhbWVQcml2YXRlTmFtZSkp
OworICAgIEdlbmVyYXRvckZyYW1lKiBmcmFtZSA9IGpzQ2FzdDxHZW5lcmF0b3JGcmFtZSo+KE9Q
KDEpLmpzVmFsdWUoKSk7CiAgICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gcGNb
Ml0udS51bnNpZ25lZFZhbHVlOwogICAgIGZyYW1lLT5yZXN1bWUoZXhlYywgZXhlYy0+Y29kZUJs
b2NrKCktPmxpdmVDYWxsZWVMb2NhbHNBdFlpZWxkKGxpdmVDYWxsZWVMb2NhbHNJbmRleCkpOwog
ICAgIEVORCgpOwpAQCAtNzk3LDQgKzc4NSwxMiBAQCBzdGF0aWMgdm9pZCB1cGRhdGVSZXN1bHRQ
cm9maWxlRm9yQmluYXJ5QXJpdGhPcChFeGVjU3RhdGUqLCBJbnN0cnVjdGlvbiosIEpTVmFsdQog
ICAgIEVORCgpOwogfQogCitTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbmV3X2dlbmVyYXRvcl9m
cmFtZSkKK3sKKyAgICBCRUdJTigpOworICAgIHVuc2lnbmVkIGdlbmVyYXRvckxvY2Fsc1NpemUg
PSBwY1syXS51LnVuc2lnbmVkVmFsdWU7CisgICAgUkVUVVJOKEdlbmVyYXRvckZyYW1lOjpjcmVh
dGUoZXhlYywgZ2VuZXJhdG9yTG9jYWxzU2l6ZSkpOworfQorCisKIH0gLy8gbmFtZXNwYWNlIEpT
QwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1Bh
dGhzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaApp
bmRleCBmMDBkODcwNWQ0ZTY3ZmU0ZDQwNTliZGUxNjhlZTg4ZjU3ZGY3MmU3Li4wNjUwYzRlOGNi
NzE1NTkxN2NkMWQ3YTJmNzdhN2M3ZjcyOWExNTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaApAQCAtMjk2LDYgKzI5Niw3IEBAIGlubGlu
ZSB2b2lkIGRlY29kZVJlc3VsdChTbG93UGF0aFJldHVyblR5cGUgcmVzdWx0LCB2b2lkKiYgYSwg
dm9pZComIGIpCiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3B1c2hfd2l0aF9zY29w
ZSk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3Jlc29sdmVfc2NvcGUpOwogU0xP
V19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9jb3B5X3Jlc3QpOworU0xPV19QQVRIX0hJRERF
Tl9ERUNMKHNsb3dfcGF0aF9uZXdfZ2VuZXJhdG9yX2ZyYW1lKTsKIAogfSAvLyBuYW1lc3BhY2Ug
SlNDCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRv
ckZyYW1lLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZyYW1l
LmNwcAppbmRleCBlZjZlYTdhMTAwMjU4YzNlY2UwNGRhYWI0M2JkYWE4NTFlYzhmNzE1Li4wZGNi
NTE0YTQyMDk5OWZiZjU5ZGYxOGJkZGY1N2MzMGFkYTc5ZTkxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGcmFtZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJhbWUuY3BwCkBAIC0zMCwxNSArMzAsMTYg
QEAKICNpbmNsdWRlICJIZWFwSXRlcmF0aW9uU2NvcGUuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVl
SW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKKyNpbmNsdWRlICJKU09iamVj
dElubGluZXMuaCIKICNpbmNsdWRlICJTbG90VmlzaXRvcklubGluZXMuaCIKICNpbmNsdWRlICJT
dHJ1Y3R1cmVJbmxpbmVzLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCi1jb25zdCBDbGFzc0luZm8g
R2VuZXJhdG9yRnJhbWU6OnNfaW5mbyA9IHsgIkdlbmVyYXRvckZyYW1lIiwgbnVsbHB0ciwgbnVs
bHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShHZW5lcmF0b3JGcmFtZSkgfTsKK2NvbnN0IENsYXNz
SW5mbyBHZW5lcmF0b3JGcmFtZTo6c19pbmZvID0geyAiR2VuZXJhdG9yRnJhbWUiLCAmQmFzZTo6
c19pbmZvLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEdlbmVyYXRvckZyYW1lKSB9Owog
Ci1HZW5lcmF0b3JGcmFtZTo6R2VuZXJhdG9yRnJhbWUoVk0mIHZtLCBzaXplX3QgbnVtYmVyT2ZD
YWxsZWVMb2NhbHMpCi0gICAgOiBCYXNlKHZtLCB2bS5nZW5lcmF0b3JGcmFtZVN0cnVjdHVyZS5n
ZXQoKSkKK0dlbmVyYXRvckZyYW1lOjpHZW5lcmF0b3JGcmFtZShWTSYgdm0sIFN0cnVjdHVyZSog
c3RydWN0dXJlLCB1aW50MzJfdCBudW1iZXJPZkNhbGxlZUxvY2FscykKKyAgICA6IEJhc2Uodm0s
IHN0cnVjdHVyZSkKICAgICAsIG1fbnVtYmVyT2ZDYWxsZWVMb2NhbHMobnVtYmVyT2ZDYWxsZWVM
b2NhbHMpCiB7CiB9CkBAIC00NiwzMyArNDcsNDIgQEAKIHZvaWQgR2VuZXJhdG9yRnJhbWU6OmZp
bmlzaENyZWF0aW9uKFZNJiB2bSkKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7Cisg
ICAgSlNWYWx1ZSBlbXB0eVZhbHVlOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9udW1i
ZXJPZkNhbGxlZUxvY2FsczsgKytpKQotICAgICAgICBsb2NhbEF0KGkpLmNsZWFyKCk7CisgICAg
ICAgIGxvY2FsQXQoaSkuc2V0U3RhcnRpbmdWYWx1ZShlbXB0eVZhbHVlKTsKIH0KIAogU3RydWN0
dXJlKiBHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCiB7Ci0gICAgcmV0dXJuIFN0cnVj
dHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oQ2VsbFR5
cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVh
dGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1
Y3R1cmVGbGFncyksIGluZm8oKSk7CiB9CiAKLUdlbmVyYXRvckZyYW1lKiBHZW5lcmF0b3JGcmFt
ZTo6Y3JlYXRlKFZNJiB2bSwgc2l6ZV90IG51bWJlck9mTG9jYWxzKQorR2VuZXJhdG9yRnJhbWUq
IEdlbmVyYXRvckZyYW1lOjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgc2l6
ZV90IG51bWJlck9mQ2FsbGVlTG9jYWxzKQogewogICAgIEdlbmVyYXRvckZyYW1lKiByZXN1bHQg
PQogICAgICAgICBuZXcgKAogICAgICAgICAgICAgTm90TnVsbCwKLSAgICAgICAgICAgIGFsbG9j
YXRlQ2VsbDxHZW5lcmF0b3JGcmFtZT4odm0uaGVhcCwgYWxsb2NhdGlvblNpemVGb3JMb2NhbHMo
bnVtYmVyT2ZMb2NhbHMpKSkKLSAgICAgICAgR2VuZXJhdG9yRnJhbWUodm0sIG51bWJlck9mTG9j
YWxzKTsKKyAgICAgICAgICAgIGFsbG9jYXRlQ2VsbDxHZW5lcmF0b3JGcmFtZT4odm0uaGVhcCwg
YWxsb2NhdGlvblNpemVGb3JMb2NhbHMobnVtYmVyT2ZDYWxsZWVMb2NhbHMpKSkKKyAgICAgICAg
R2VuZXJhdG9yRnJhbWUodm0sIHN0cnVjdHVyZSwgbnVtYmVyT2ZDYWxsZWVMb2NhbHMpOwogICAg
IHJlc3VsdC0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK0dl
bmVyYXRvckZyYW1lKiBHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgc2l6
ZV90IG51bWJlck9mQ2FsbGVlTG9jYWxzKQoreworICAgIHJldHVybiBjcmVhdGUoZXhlYy0+dm0o
KSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5nZW5lcmF0b3JGcmFtZVN0cnVjdHVyZSgp
LCBudW1iZXJPZkNhbGxlZUxvY2Fscyk7Cit9CisKIHZvaWQgR2VuZXJhdG9yRnJhbWU6OnNhdmUo
RXhlY1N0YXRlKiBleGVjLCBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlQ2FsbGVlTG9jYWxzKQog
eworICAgIC8vIEFsbG9jYXRlIHRoZSBnZW5lcmF0b3IgbG9jYWwgc3BhY2UgZmlyc3QuCisgICAg
bV9udW1iZXJPZlNhdmVkQ2FsbGVlTG9jYWxzID0gbGl2ZUNhbGxlZUxvY2Fscy5iaXRDb3VudCgp
OworCiAgICAgLy8gT25seSBzYXZlIGNhbGxlZSBsb2NhbHMuCiAgICAgLy8gRXZlcnkgdGltZSBh
IGdlbmVyYXRvciBpcyBjYWxsZWQgKG9yIHJlc3VtZWQpLCBwYXJhbWV0ZXJzIHNob3VsZCBiZSBy
ZXBsYWNlZC4KLSAgICBBU1NFUlQobGl2ZUNhbGxlZUxvY2Fscy5udW1CaXRzKCkgPD0gbV9udW1i
ZXJPZkNhbGxlZUxvY2Fscyk7CisgICAgdW5zaWduZWQgZ2VuZXJhdG9yTG9jYWxJbmRleCA9IDA7
CiAgICAgbGl2ZUNhbGxlZUxvY2Fscy5mb3JFYWNoU2V0Qml0KFsmXShzaXplX3QgaW5kZXgpIHsK
LSAgICAgICAgbG9jYWxBdChpbmRleCkuc2V0KGV4ZWMtPnZtKCksIHRoaXMsIGV4ZWMtPnVuY2hl
Y2tlZFIodmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaW5kZXgpKS5qc1ZhbHVlKCkpOworICAgICAg
ICBsb2NhbEF0KGdlbmVyYXRvckxvY2FsSW5kZXgrKykuc2V0KGV4ZWMtPnZtKCksIHRoaXMsIGV4
ZWMtPnVuY2hlY2tlZFIodmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaW5kZXgpKS5qc1ZhbHVlKCkp
OwogICAgIH0pOwogfQogCkBAIC04MCwxMCArOTAsMTEgQEAgdm9pZCBHZW5lcmF0b3JGcmFtZTo6
cmVzdW1lKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZUNhbGxlZUxv
Y2EKIHsKICAgICAvLyBPbmx5IHJlc3VtZSBjYWxsZWUgbG9jYWxzLgogICAgIC8vIEV2ZXJ5IHRp
bWUgYSBnZW5lcmF0b3IgaXMgY2FsbGVkIChvciByZXN1bWVkKSwgcGFyYW1ldGVycyBzaG91bGQg
YmUgcmVwbGFjZWQuCisgICAgdW5zaWduZWQgZ2VuZXJhdG9yTG9jYWxJbmRleCA9IDA7CiAgICAg
bGl2ZUNhbGxlZUxvY2Fscy5mb3JFYWNoU2V0Qml0KFsmXShzaXplX3QgaW5kZXgpIHsKLSAgICAg
ICAgZXhlYy0+dW5jaGVja2VkUih2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChpbmRleCkpID0gbG9j
YWxBdChpbmRleCkuZ2V0KCk7Ci0gICAgICAgIGxvY2FsQXQoaW5kZXgpLmNsZWFyKCk7CisgICAg
ICAgIGV4ZWMtPnVuY2hlY2tlZFIodmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaW5kZXgpKSA9IGxv
Y2FsQXQoZ2VuZXJhdG9yTG9jYWxJbmRleCsrKS5nZXQoKTsKICAgICB9KTsKKyAgICBtX251bWJl
ck9mU2F2ZWRDYWxsZWVMb2NhbHMgPSAwOwogfQogCiB2b2lkIEdlbmVyYXRvckZyYW1lOjp2aXNp
dENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCkBAIC05MSw3ICsx
MDIsMTIgQEAgdm9pZCBHZW5lcmF0b3JGcmFtZTo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGws
IFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIEdlbmVyYXRvckZyYW1lKiB0aGlzT2JqZWN0ID0g
anNDYXN0PEdlbmVyYXRvckZyYW1lKj4oY2VsbCk7CiAgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0
aGlzT2JqZWN0LCB2aXNpdG9yKTsKICAgICAvLyBTaW5jZSBvbmx5IHRydWUgY2VsbCBwb2ludGVy
cyBhcmUgc3RvcmVkIGFzIGEgY2VsbCwgd2UgY2FuIHNhZmVseSBtYXJrIHRoZW0uCi0gICAgdmlz
aXRvci5hcHBlbmRWYWx1ZXModGhpc09iamVjdC0+bG9jYWxzKCksIHRoaXNPYmplY3QtPm1fbnVt
YmVyT2ZDYWxsZWVMb2NhbHMpOworICAgIHZpc2l0b3IuYXBwZW5kVmFsdWVzKHRoaXNPYmplY3Qt
PmxvY2FscygpLCB0aGlzT2JqZWN0LT5tX251bWJlck9mU2F2ZWRDYWxsZWVMb2NhbHMpOworICAg
IC8vIENsZWFyIG5vdCB1c2VkIGNhbGxlZSBsb2NhbHMgd2hlbiBtYXJraW5nLgorICAgIC8vIFRo
aXMgZW5zdXJlcyB0aGF0LCAiaWYgYSBnaXZlbiBsb2NhbCBoYXMgYSB2YWx1ZSwgdGhpcyB2YWx1
ZSBpcyBjb3JyZWN0bHkgbWFya2VkIGluIHRoZSBwcmV2aW91cyBtYXJraW5nIHBoYXNlIi4KKyAg
ICBzaXplX3QgdW51c2VkTG9jYWxzQ291bnQgPSB0aGlzT2JqZWN0LT5tX251bWJlck9mQ2FsbGVl
TG9jYWxzIC0gdGhpc09iamVjdC0+bV9udW1iZXJPZlNhdmVkQ2FsbGVlTG9jYWxzOworICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgdW51c2VkTG9jYWxzQ291bnQ7ICsraSkKKyAgICAgICAgdGhp
c09iamVjdC0+bG9jYWxBdCh0aGlzT2JqZWN0LT5tX251bWJlck9mU2F2ZWRDYWxsZWVMb2NhbHMg
KyBpKS5jbGVhcigpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZyYW1lLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGcmFtZS5oCmluZGV4IDNkNTQ1YjE0N2RkNGFiZmIy
YmJiOWI1YTcxOTRlOGY3NDg0MWM0OWEuLmNmMWRiN2EyYmVlNjBkYTI5NDY0ZWM0MTdhMGM1ZmI4
YzFmMGFlOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVy
YXRvckZyYW1lLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9y
RnJhbWUuaApAQCAtMjcsMTEgKzI3LDE0IEBACiAjZGVmaW5lIEdlbmVyYXRvckZyYW1lX2gKIAog
I2luY2x1ZGUgIkpTQ2VsbC5oIgorI2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAjaW5jbHVkZSA8d3Rm
L0Zhc3RCaXRWZWN0b3IuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKLWNsYXNzIEdlbmVyYXRvckZy
YW1lIDogcHVibGljIEpTQ2VsbCB7CitjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisKK2Ns
YXNzIEdlbmVyYXRvckZyYW1lIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogICAgIGZyaWVu
ZCBjbGFzcyBKSVQ7CiAjaWYgRU5BQkxFKERGR19KSVQpCiAgICAgZnJpZW5kIGNsYXNzIERGRzo6
U3BlY3VsYXRpdmVKSVQ7CkBAIC0zOSwxMiArNDIsMTIgQEAgY2xhc3MgR2VuZXJhdG9yRnJhbWUg
OiBwdWJsaWMgSlNDZWxsIHsKICNlbmRpZgogICAgIGZyaWVuZCBjbGFzcyBWTTsKIHB1YmxpYzoK
LSAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOwotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1
Y3R1cmVGbGFncyA9IFN0cnVjdHVyZUlzSW1tb3J0YWwgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsK
KyAgICB0eXBlZGVmIEpTTm9uRmluYWxPYmplY3QgQmFzZTsKIAogICAgIERFQ0xBUkVfRVhQT1JU
X0lORk87CiAKLSAgICBzdGF0aWMgR2VuZXJhdG9yRnJhbWUqIGNyZWF0ZShWTSYsIHNpemVfdCBu
dW1iZXJPZkNhbGxlZUxvY2Fscyk7CisgICAgc3RhdGljIEdlbmVyYXRvckZyYW1lKiBjcmVhdGUo
RXhlY1N0YXRlKiwgc2l6ZV90IG51bWJlck9mQ2FsbGVlTG9jYWxzKTsKKyAgICBzdGF0aWMgR2Vu
ZXJhdG9yRnJhbWUqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSosIHNpemVfdCBudW1iZXJPZkNhbGxl
ZUxvY2Fscyk7CiAKICAgICBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiBsb2NhbHMoKQogICAg
IHsKQEAgLTUzLDcgKzU2LDYgQEAgY2xhc3MgR2VuZXJhdG9yRnJhbWUgOiBwdWJsaWMgSlNDZWxs
IHsKIAogICAgIFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4mIGxvY2FsQXQoc2l6ZV90IGluZGV4
KQogICAgIHsKLSAgICAgICAgQVNTRVJUKGluZGV4IDwgbV9udW1iZXJPZkNhbGxlZUxvY2Fscyk7
CiAgICAgICAgIHJldHVybiBsb2NhbHMoKVtpbmRleF07CiAgICAgfQogCkBAIC02Miw2ICs2NCwy
MSBAQCBjbGFzcyBHZW5lcmF0b3JGcmFtZSA6IHB1YmxpYyBKU0NlbGwgewogICAgICAgICByZXR1
cm4gV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mPHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4p
PihzaXplb2YoR2VuZXJhdG9yRnJhbWUpKTsKICAgICB9CiAKKyAgICBzdGF0aWMgc2l6ZV90IGxv
Y2FsT2Zmc2V0KHVuc2lnbmVkIGluZGV4KQorICAgIHsKKyAgICAgICAgcmV0dXJuIG9mZnNldE9m
TG9jYWxzKCkgKyBpbmRleCAqIHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pOworICAgIH0K
KworICAgIHN0YXRpYyBzaXplX3QgbnVtYmVyT2ZDYWxsZWVMb2NhbHNPZmZzZXQoKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihHZW5lcmF0b3JGcmFtZSwgbV9udW1iZXJP
ZkNhbGxlZUxvY2Fscyk7CisgICAgfQorCisgICAgc3RhdGljIHNpemVfdCBudW1iZXJPZlNhdmVk
Q2FsbGVlTG9jYWxzT2Zmc2V0KCkKKyAgICB7CisgICAgICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VU
T0YoR2VuZXJhdG9yRnJhbWUsIG1fbnVtYmVyT2ZTYXZlZENhbGxlZUxvY2Fscyk7CisgICAgfQor
CiAgICAgc3RhdGljIHNpemVfdCBhbGxvY2F0aW9uU2l6ZUZvckxvY2Fscyh1bnNpZ25lZCBudW1i
ZXJPZkxvY2FscykKICAgICB7CiAgICAgICAgIHJldHVybiBvZmZzZXRPZkxvY2FscygpICsgbnVt
YmVyT2ZMb2NhbHMgKiBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KTsKQEAgLTczLDE2ICs5
MCwxNiBAQCBjbGFzcyBHZW5lcmF0b3JGcmFtZSA6IHB1YmxpYyBKU0NlbGwgewogICAgIHZvaWQg
cmVzdW1lKEV4ZWNTdGF0ZSosIGNvbnN0IEZhc3RCaXRWZWN0b3ImIGxpdmVDYWxsZWVMb2NhbHMp
OwogCiBwcml2YXRlOgotICAgIEdlbmVyYXRvckZyYW1lKFZNJiwgc2l6ZV90IG51bWJlck9mQ2Fs
bGVlTG9jYWxzKTsKKyAgICBHZW5lcmF0b3JGcmFtZShWTSYsIFN0cnVjdHVyZSosIHVpbnQzMl90
IG51bWJlck9mQ2FsbGVlTG9jYWxzKTsKIAotICAgIHNpemVfdCBtX251bWJlck9mQ2FsbGVlTG9j
YWxzOworICAgIHVpbnQzMl90IG1fbnVtYmVyT2ZDYWxsZWVMb2NhbHM7CisgICAgdWludDMyX3Qg
bV9udW1iZXJPZlNhdmVkQ2FsbGVlTG9jYWxzIHsgMCB9OwogCiAgICAgZnJpZW5kIGNsYXNzIExM
SW50T2Zmc2V0c0V4dHJhY3RvcjsKIAotICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKLQog
cHJvdGVjdGVkOgogICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZp
c2l0b3ImKTsKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmNwcAppbmRleCBiNmJhMjdjOTEyZGI1MGFhNGY5OWFjZTBmNmFkOWQwNmUzMDA2ZGY4Li5h
ZDg1N2Y4NzNiNDA5M2ZhZGMyZmUyYTNlZTI5NGJjZTVjODAwNDZkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC01MCw2ICs1MCw3
IEBACiAjaW5jbHVkZSAiRXJyb3JQcm90b3R5cGUuaCIKICNpbmNsdWRlICJGdW5jdGlvbkNvbnN0
cnVjdG9yLmgiCiAjaW5jbHVkZSAiRnVuY3Rpb25Qcm90b3R5cGUuaCIKKyNpbmNsdWRlICJHZW5l
cmF0b3JGcmFtZS5oIgogI2luY2x1ZGUgIkdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaCIK
ICNpbmNsdWRlICJHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkdlbmVy
YXRvclByb3RvdHlwZS5oIgpAQCAtMzg4LDYgKzM4OSw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6
OmluaXQoVk0mIHZtKQogICAgIAogICAgIEZPUl9FQUNIX0JVSUxUSU5fREVSSVZFRF9JVEVSQVRP
Ul9UWVBFKENSRUFURV9QUk9UT1RZUEVfRk9SX0RFUklWRURfSVRFUkFUT1JfVFlQRSkKICAgICBt
X3Byb3BlcnR5TmFtZUl0ZXJhdG9yU3RydWN0dXJlLnNldCh2bSwgdGhpcywgSlNQcm9wZXJ0eU5h
bWVJdGVyYXRvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2l0ZXJhdG9yUHJvdG90eXBl
LmdldCgpKSk7CisgICAgbV9nZW5lcmF0b3JGcmFtZVN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIEdl
bmVyYXRvckZyYW1lOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIGpzTnVsbCgpKSk7CiAgICAg
bV9nZW5lcmF0b3JQcm90b3R5cGUuc2V0KHZtLCB0aGlzLCBHZW5lcmF0b3JQcm90b3R5cGU6OmNy
ZWF0ZSh2bSwgdGhpcywgR2VuZXJhdG9yUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRo
aXMsIG1faXRlcmF0b3JQcm90b3R5cGUuZ2V0KCkpKSk7CiAgICAgCiAjdW5kZWYgQ1JFQVRFX1BS
T1RPVFlQRV9GT1JfREVSSVZFRF9JVEVSQVRPUl9UWVBFCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCBiNGZmMmZiNDEzZTBlNDQ2MjQ5MmE0
OGEzZmQ1YTRjMjRlYTBiNzQxLi43MWQzOWVjOTI4M2FkOWU1OTAxMjQ0ZjAxMzZhMTM1OGY1NDRh
OTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmgKQEAgLTI1NSw2ICsyNTUsNyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1Nl
Z21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2Nh
bGxiYWNrRnVuY3Rpb25TdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9j
YWxsYmFja09iamVjdFN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3By
b3BlcnR5TmFtZUl0ZXJhdG9yU3RydWN0dXJlOworICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+
IG1fZ2VuZXJhdG9yRnJhbWVTdHJ1Y3R1cmU7CiAjaWYgSlNDX09CSkNfQVBJX0VOQUJMRUQKICAg
ICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX29iamNDYWxsYmFja0Z1bmN0aW9uU3RydWN0dXJl
OwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fb2JqY1dyYXBwZXJPYmplY3RTdHJ1Y3R1
cmU7CkBAIC01MDEsNiArNTAyLDcgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNT
ZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgU3RydWN0dXJlKiBjYWxsYmFja0Z1bmN0aW9u
U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9jYWxsYmFja0Z1bmN0aW9uU3RydWN0dXJlLmdl
dCgpOyB9CiAgICAgU3RydWN0dXJlKiBjYWxsYmFja09iamVjdFN0cnVjdHVyZSgpIGNvbnN0IHsg
cmV0dXJuIG1fY2FsbGJhY2tPYmplY3RTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUq
IHByb3BlcnR5TmFtZUl0ZXJhdG9yU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9wcm9wZXJ0
eU5hbWVJdGVyYXRvclN0cnVjdHVyZS5nZXQoKTsgfQorICAgIFN0cnVjdHVyZSogZ2VuZXJhdG9y
RnJhbWVTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2dlbmVyYXRvckZyYW1lU3RydWN0dXJl
LmdldCgpOyB9CiAjaWYgSlNDX09CSkNfQVBJX0VOQUJMRUQKICAgICBTdHJ1Y3R1cmUqIG9iamND
YWxsYmFja0Z1bmN0aW9uU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9vYmpjQ2FsbGJhY2tG
dW5jdGlvblN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogb2JqY1dyYXBwZXJPYmpl
Y3RTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX29iamNXcmFwcGVyT2JqZWN0U3RydWN0dXJl
LmdldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXggMGU0NGMzNDYw
ZjlmOGYwZGNiMzVkOTEyZDc5NWY3Zjk4ZGZiN2Y0NS4uMGVmMjVlNzI5YWE2ZTU1YzNkY2EwNjFj
MjJiNjVhYTZmN2I1YjM0ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAt
MjQ2LDcgKzI0Niw2IEBAIHN0YXRpYyBib29sIGVuYWJsZUFzc2VtYmxlcihFeGVjdXRhYmxlQWxs
b2NhdG9yJiBleGVjdXRhYmxlQWxsb2NhdG9yKQogICAgIGluZmVycmVkVHlwZVN0cnVjdHVyZS5z
ZXQoKnRoaXMsIEluZmVycmVkVHlwZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwo
KSkpOwogICAgIGluZmVycmVkVHlwZVRhYmxlU3RydWN0dXJlLnNldCgqdGhpcywgSW5mZXJyZWRU
eXBlVGFibGU6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICBmdW5j
dGlvblJhcmVEYXRhU3RydWN0dXJlLnNldCgqdGhpcywgRnVuY3Rpb25SYXJlRGF0YTo6Y3JlYXRl
U3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwotICAgIGdlbmVyYXRvckZyYW1lU3RydWN0
dXJlLnNldCgqdGhpcywgR2VuZXJhdG9yRnJhbWU6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwg
anNOdWxsKCkpKTsKICAgICBleGNlcHRpb25TdHJ1Y3R1cmUuc2V0KCp0aGlzLCBFeGNlcHRpb246
OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICBwcm9taXNlRGVmZXJy
ZWRTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBKU1Byb21pc2VEZWZlcnJlZDo6Y3JlYXRlU3RydWN0dXJl
KCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIGludGVybmFsUHJvbWlzZURlZmVycmVkU3RydWN0
dXJlLnNldCgqdGhpcywgSlNJbnRlcm5hbFByb21pc2VEZWZlcnJlZDo6Y3JlYXRlU3RydWN0dXJl
KCp0aGlzLCAwLCBqc051bGwoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVk0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKaW5kZXgg
YWVlMGFjMWYyMWI4NDUxYmM3NzY3NDQzYTBiMDVjYTA0OGI0ZjQ5Yi4uMjM2MDgzNzBhOTgzNmQ4
OTc3ZTQ5ZDcxZTY4YTgwOWI5YWM0NTM2MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVk0uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5o
CkBAIC0zMTIsNyArMzEyLDYgQEAgY2xhc3MgVk0gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50
ZWQ8Vk0+IHsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBpbmZlcnJlZFR5cGVTdHJ1Y3R1cmU7CiAg
ICAgU3Ryb25nPFN0cnVjdHVyZT4gaW5mZXJyZWRUeXBlVGFibGVTdHJ1Y3R1cmU7CiAgICAgU3Ry
b25nPFN0cnVjdHVyZT4gZnVuY3Rpb25SYXJlRGF0YVN0cnVjdHVyZTsKLSAgICBTdHJvbmc8U3Ry
dWN0dXJlPiBnZW5lcmF0b3JGcmFtZVN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBl
eGNlcHRpb25TdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gcHJvbWlzZURlZmVycmVk
U3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGludGVybmFsUHJvbWlzZURlZmVycmVk
U3RydWN0dXJlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVz
cy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQtYXJyYXkuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLWFuZC1hcnJheS5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5m
ZTkzOTgxMmZkYmFlYzZiODMyYmZkMDBmMjE1M2RlZjg0YmI3NTkyCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC1h
bmQtYXJyYXkuanMKQEAgLTAsMCArMSwyMyBAQAorKGZ1bmN0aW9uICgpIHsKKyAgICBmdW5jdGlv
biAqZmliKCkKKyAgICB7CisgICAgICAgIGxldCBhID0gMTsKKyAgICAgICAgbGV0IGIgPSAxOwor
ICAgICAgICBsZXQgYyA9IFsgMCBdOworICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICAg
ICAgY1swXSA9IGE7CisgICAgICAgICAgICB5aWVsZCBjOworICAgICAgICAgICAgW2EsIGJdID0g
W2IsIGEgKyBiXTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGxldCB2YWx1ZSA9IDA7CisgICAg
Zm9yIChsZXQgaSA9IDA7IGkgPCAxZTQ7ICsraSkgeworICAgICAgICBsZXQgZiA9IGZpYigpOwor
ICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDsgKytpKSB7CisgICAgICAgICAgICB2YWx1
ZSA9IGYubmV4dCgpLnZhbHVlOworICAgICAgICB9CisgICAgICAgIGlmICh2YWx1ZVswXSAhPT0g
MzU0MjI0ODQ4MTc5MjYyMDAwMDAwKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQg
dmFsdWU6JHtyZXN1bHR9YCk7CisgICAgfQorfSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwtYW5kLW9iamVjdC5qcyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwtYW5k
LW9iamVjdC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NjczNDBmMmVhNGM3NDM4YTJkMjA5YWE0MGQwNjc3ZTRh
YjdkM2ZiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0
cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQtb2JqZWN0LmpzCkBAIC0wLDAgKzEsMjMgQEAKKyhm
dW5jdGlvbiAoKSB7CisgICAgZnVuY3Rpb24gKmZpYigpCisgICAgeworICAgICAgICBsZXQgYSA9
IDE7CisgICAgICAgIGxldCBiID0gMTsKKyAgICAgICAgbGV0IGMgPSB7IGZpYjogMCB9OworICAg
ICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAgYy5maWIgPSBhOworICAgICAgICAgICAg
eWllbGQgYzsKKyAgICAgICAgICAgIFthLCBiXSA9IFtiLCBhICsgYl07CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICBsZXQgdmFsdWUgPSAwOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMWU0OyAr
K2kpIHsKKyAgICAgICAgbGV0IGYgPSBmaWIoKTsKKyAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkg
PCAxMDA7ICsraSkgeworICAgICAgICAgICAgdmFsdWUgPSBmLm5leHQoKS52YWx1ZTsKKyAgICAg
ICAgfQorICAgICAgICBpZiAodmFsdWUuZmliICE9PSAzNTQyMjQ4NDgxNzkyNjIwMDAwMDApCisg
ICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCB2YWx1ZToke3Jlc3VsdH1gKTsKKyAgICB9
Cit9KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9n
ZW5lcmF0b3ItZmliLWZ0bC1hbmQtc3RyaW5nLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQtc3RyaW5nLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQz
OGFlNmFiMzM0NzA0NjgyMjg0OWY0MzAwNGVhNWM0MDNlZWRhMjgKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLWFu
ZC1zdHJpbmcuanMKQEAgLTAsMCArMSwyMiBAQAorKGZ1bmN0aW9uICgpIHsKKyAgICBmdW5jdGlv
biAqZmliKCkKKyAgICB7CisgICAgICAgIGxldCBhID0gMTsKKyAgICAgICAgbGV0IGIgPSAxOwor
ICAgICAgICBsZXQgYyA9ICJSZXN1bHQhICI7CisgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAg
ICAgICAgICB5aWVsZCBjICsgYTsKKyAgICAgICAgICAgIFthLCBiXSA9IFtiLCBhICsgYl07Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQgdmFsdWUgPSAwOworICAgIGZvciAobGV0IGkgPSAw
OyBpIDwgMWU0OyArK2kpIHsKKyAgICAgICAgbGV0IGYgPSBmaWIoKTsKKyAgICAgICAgZm9yIChs
ZXQgaSA9IDA7IGkgPCAxMDA7ICsraSkgeworICAgICAgICAgICAgdmFsdWUgPSBmLm5leHQoKS52
YWx1ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAodmFsdWUgIT09IGBSZXN1bHQhIDM1NDIyNDg0
ODE3OTI2MjAwMDAwMGApCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCB2YWx1ZTok
e3Jlc3VsdH1gKTsKKyAgICB9Cit9KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzQwZTMz
ZGJjODY4YmVhN2E4OTNjOWVjMTZiNzc5ZWMyNmJkYjE5YwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwuanMKQEAg
LTAsMCArMSwyMSBAQAorKGZ1bmN0aW9uICgpIHsKKyAgICBmdW5jdGlvbiAqZmliKCkKKyAgICB7
CisgICAgICAgIGxldCBhID0gMTsKKyAgICAgICAgbGV0IGIgPSAxOworICAgICAgICB3aGlsZSAo
dHJ1ZSkgeworICAgICAgICAgICAgeWllbGQgYTsKKyAgICAgICAgICAgIFthLCBiXSA9IFtiLCBh
ICsgYl07CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQgdmFsdWUgPSAwOworICAgIGZvciAo
bGV0IGkgPSAwOyBpIDwgMWU0OyArK2kpIHsKKyAgICAgICAgbGV0IGYgPSBmaWIoKTsKKyAgICAg
ICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDA7ICsraSkgeworICAgICAgICAgICAgdmFsdWUgPSBm
Lm5leHQoKS52YWx1ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAodmFsdWUgIT09IDM1NDIyNDg0
ODE3OTI2MjAwMDAwMCkKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIHZhbHVlOiR7
cmVzdWx0fWApOworICAgIH0KK30oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1mcmFtZS1lbXB0eS5qcyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZyYW1lLWVtcHR5LmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjU5ZTg4NTViZmFjM2M1NmRmOTI2YWJkNDI4YzAxM2MzMzQxNjI3NDYKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1mcmFtZS1l
bXB0eS5qcwpAQCAtMCwwICsxLDM0IEBACitmdW5jdGlvbiBzaG91bGRUaHJvdyhmdW5jLCBlcnJv
ck1lc3NhZ2UpIHsKKyAgICB2YXIgZXJyb3JUaHJvd24gPSBmYWxzZTsKKyAgICB2YXIgZXJyb3Ig
PSBudWxsOworICAgIHRyeSB7CisgICAgICAgIGZ1bmMoKTsKKyAgICB9IGNhdGNoIChlKSB7Cisg
ICAgICAgIGVycm9yVGhyb3duID0gdHJ1ZTsKKyAgICAgICAgZXJyb3IgPSBlOworICAgIH0KKyAg
ICBpZiAoIWVycm9yVGhyb3duKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ25vdCB0aHJvd24n
KTsKKyAgICBpZiAoU3RyaW5nKGVycm9yKSAhPT0gZXJyb3JNZXNzYWdlKQorICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoYGJhZCBlcnJvcjogJHtTdHJpbmcoZXJyb3IpfWApOworfQorCitzaG91bGRU
aHJvdyhmdW5jdGlvbiAoKSB7CisgICAgZnVuY3Rpb24gKmZpYihmbGFnKQorICAgIHsKKyAgICAg
ICAgbGV0IGEgPSAxOworICAgICAgICBsZXQgYiA9IDE7CisgICAgICAgIHlpZWxkIDQyOworICAg
ICAgICBpZiAoZmxhZykKKyAgICAgICAgICAgIHJldHVybiBjOworICAgICAgICBsZXQgYyA9IDUw
MDsKKyAgICB9CisKKyAgICBsZXQgdmFsdWUgPSAwOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwg
MWU0OyArK2kpIHsKKyAgICAgICAgZm9yIChsZXQgdiBvZiBmaWIoZmFsc2UpKSB7CisgICAgICAg
IH0KKyAgICB9CisgICAgZm9yIChsZXQgdiBvZiBmaWIodHJ1ZSkpIHsKKyAgICB9Cit9LCBgUmVm
ZXJlbmNlRXJyb3I6IENhbm5vdCBhY2Nlc3MgdW5pbml0aWFsaXplZCB2YXJpYWJsZS5gKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>277585</attachid>
            <date>2016-04-27 21:23:47 -0700</date>
            <delta_ts>2016-05-05 09:36:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-152723-20160428132417.patch</filename>
            <type>text/plain</type>
            <size>124800</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk5OTY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
MDI5MWIwMTM0YWE5NjY0OWVjZmQwMmM1ZjdhY2RjZGJmNDlmYTI5Li5mNmRkMDU3OWU2NTYwYmRi
NjZlMjUzY2RkZTkyMTIyMjhmNzk5NmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMjQgQEAKKzIwMTYtMDQtMjcgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0RGR10gRW1iZWQgZ2VuZXJhdG9yIGZyYW1lIGludG8gU2NvcGUg
YW5kIGVuYWJsZSBnZW5lcmF0b3IgaW4gREZHIC8gRlRMCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTI3MjMKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGlzIGFuIGluaXRpYWwgYXR0ZW1w
dCB0byBpbXBsZW1lbnQgREZHIGFuZCBGVEwgY2FwYWJsZSBFUzYgZ2VuZXJhdG9ycy4KKyAgICAg
ICAgV2UgaW50cm9kdWNlIHRoZSBzZXZlcmFsIGJ5dGVjb2RlcyBhbmQgY29tcGlsZSB0aGVtIGlu
IERGRyAvIEZUTC4KKworICAgICAgICAtIG9wX25ld19nZW5lcmF0b3JfZnJhbWUKKworICAgICAg
ICAgICAgQWxsb2NhdGUgR2VuZXJhdG9yRnJhbWUgaW4gdGhlIGJ5dGVjb2RlIGluc3RlYWQgb2Yg
YWxsb2NhdGluZyBpdCBpbiB0aGUgb3Bfc2F2ZS4KKworICAgICAgICAtIG9wX3NhdmUKKworICAg
ICAgICAgICAgTm93IEJ5dGVjb2RlTGl2ZW5lc3MgYW5hbHlzaXMgYW5kIFByZWNpc2VKdW1wVGFy
Z2V0IGFuYWx5c2lzIGhhdmUgMiBtb2RlczsgU3RhbmRhcmQgYW5kIEV4dHJhY3RHZW5lcmF0b3JM
aXZlQ2FsbGVlTG9jYWxzLgorICAgICAgICAgICAgVW5kZXIgRXh0cmFjdEdlbmVyYXRvckxpdmVD
YWxsZWVMb2NhbHMgbW9kZSwgb3Bfc2F2ZSBoYXMganVtcCB0byB0aGUgbWVyZ2UgcG9pbnQuIFRo
aXMganVtcCBpcyBqdXN0IHVzZWQgZm9yIHVzZS1kZWYgYW5hbHlzaXMgdG8gZXh0cmFjdAorICAg
ICAgICAgICAgbGl2ZSBjYWxsZWUgbG9jYWxzIGF0IHRoZSBtZXJnZSBwb2ludC4gVGhlc2UgbGl2
ZSBjYWxsZWUgbG9jYWxzIHNob3VsZCBiZSBzYXZlZCBhbmQgcmVzdW1lZCB0byBzdXNwZW5kIGFu
ZCByZXN1bWUgZ2VuZXJhdG9ycy4KKyAgICAgICAgICAgIFRoZSBtZXJnZSBwb2ludCBpcyB0aGUg
cG9pbnQgdGhhdCBtZXJnaW5nIHRoZSAyIGJhc2ljIGJsb2Nrcywgc2F2aW5nIGxvY2FscyB0byB0
aGUgZ2VuZXJhdG9yIGZyYW1lIGFuZCByZXN1bWluZyBsb2NhbHMgZnJvbSB0aGUgZ2VuZXJhdG9y
IGZyYW1lLgorCisgICAgICAgIC0gb3BfcmVzdW1lCisKKyAgICAgICAgICAgIFRoaXMgcmV0cmll
dmVzIGxvY2FsIHZhcmlhYmxlIGZyb20gdGhlIGdlbmVyYXRvciBmcmFtZS4gRXh0cmFjdEdlbmVy
YXRvckxpdmVDYWxsZWVMb2NhbHMgYW5hbHlzaXMgd2lsbCBkaXNjb3ZlciBsaXZlIGxvY2FscyBh
dCB0aGUgbWVyZ2UgcG9pbnQgYW5kIHJlY29yZCBsaXZlbmVzcworICAgICAgICAgICAgaW5mb3Jt
YXRpb24gdG8gb3Bfc2F2ZSBhbmQgb3BfcmVzdW1lLiBPbiB0aGUgYmFzaXMgb2YgdGhpcyBpbmZv
cm1hdGlvbiwgb3BfcmVzdW1lIHdpbGwgcmV0cmlldmUgc2F2ZWQgbG9jYWxzIGZyb20gdGhlIGdl
bmVyYXRvciBmcmFtZS4KKworICAgICAgICBIZXJlLCB3ZSBleHBsYWluIGFib3V0IGhvdyB0byBw
cmVwcm9jZXNzIGJ5dGVjb2Rlcy4KKyAgICAgICAgRmlyc3QsIHdlIGVtaXQgb3Bfc2F2ZSwgb3Bf
cmVzdW1lIGFuZCBwZXJmb3JtIEV4dHJhY3RHZW5lcmF0b3JMaXZlQ2FsbGVlTG9jYWxzIGFuYWx5
c2lzLgorCisgICAgICAgIFtlbnRyeV0gLSstLT4gW3NhdmUgYmxvY2tdIC0+IG9wX3NhdmUgKGl0
IGlzIGJyYW5jaGluZyBieXRlY29kZSkgLS0tLS0tPiBbbWVyZ2UgYmxvY2tdIC0+IC4uLgorICAg
ICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBeCisgICAgICAgICAgICAgICAgIHwgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKy0+IG9wX3JldCAgICAgICAgICAgICAgICAgICAgICAg
IHwKKyAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLT4gb3BfcmVzdW1lIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworCisgICAgICAgIFRoZW4sIGRpc2Nv
dmVyIGxpdmUgbG9jYWxzIGluZm9ybWF0aW9uIChhcyBGYXN0Qml0VmVjdG9yKSBhdCB0aGUgbWVy
Z2UgcG9pbnQgYW5kIHN0b3JlIGl0IHRvIGNvcnJlc3BvbmRpbmcgb3Bfc2F2ZSBhbmQgb3BfcmVz
dW1lLgorICAgICAgICBBZnRlciB0aGF0LCB1bmRlciBTdGFuZGFyZCBhbmFseXNpcyBtb2RlLCB0
aGUgYWJvdmUgYnl0ZWNvZGUgc3RyZWFtIHdpbGwgY29uc3RydWN0IHRoZSBmb2xsb3dpbmcgQ0ZH
LgorICAgICAgICBJbiB0aGUgZm9sbG93aW5nIENGRywgb3Bfc2F2ZSBubyBsb25nZXIgaGFzIGp1
bXAgdG8gdGhlIG1lcmdlIHBvaW50LiBUaGUgcmVtb3ZlZCBqdW1wIGVkZ2Ugd2FzIGp1c3QgdXNl
ZCB0byBjYWxjdWxhdGUgbGl2ZW5lc3MgaW5mb3JtYXRpb24gYXQgdGhlIG1lcmdlIHBvaW50Lgor
CisgICAgICAgIFtlbnRyeV0gLSstLT4gW3NhdmUgYmxvY2tdIC0+IG9wX3NhdmUgLT4gb3BfcmV0
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICstPiBbbWVyZ2UgYmxvY2tdIC0+IC4uLgor
ICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgICAgICAgICAgIHwgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHwKKyAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLT4gb3BfcmVzdW1lIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworCisgICAgICAgIEFuZCB3ZSBp
bnRyb2R1Y2VzIHNldmVyYWwgREZHIG5vZGVzLgorCisgICAgICAgIC0gTmV3R2VuZXJhdG9yRnJh
bWUKKworICAgICAgICAgICAgVGhpcyBqdXN0IGFsbG9jYXRlcyBHZW5lcmF0b3JGcmFtZS4KKwor
ICAgICAgICAtIFJlc2l6ZUdlbmVyYXRvckxvY2FscworCisgICAgICAgICAgICBUaGlzIHNldCBH
ZW5lcmF0b3JGcmFtZTo6bV9udW1iZXJPZlNhdmVkQ2FsbGVlTG9jYWxzICpOKi4gVGhpcyBub2Rl
IGlzIHVzZWQgdG8gKDEpIGFsbG9jYXRlIHNwYWNlIGZvciBsb2NhbHMgaW4gR2VuZXJhdG9yRnJh
bWUgYW5kICgyKSBkZWFsbG9jYXRlIHNwYWNlIGluCisgICAgICAgICAgICBHZW5lcmF0b3JGcmFt
ZSBieSBzZXR0aW5nIGl0IGFzIDAuCisKKyAgICAgICAgLSBHZXRHZW5lcmF0b3JMb2NhbAorCisg
ICAgICAgICAgICBHZXQgYSBzYXZlZCBsb2NhbCB2YXJpYWJsZSBmcm9tIGEgZ2VuZXJhdG9yIGZy
YW1lLiBHZXRHZW5lcmF0b3JMb2NhbCBhbmQgU2V0R2VuZXJhdG9yTG9jYWwgYXJlIGxpbmtlZCB3
aXRoIEdlbmVyYXRvckxvY2FsRGF0YS4gU28gdHlwZSBwcmVkaWNhdGlvbiBhbmQgZmxhZ3MKKyAg
ICAgICAgICAgIGFyZSBjb3JyZWN0bHkgcHJvcGFnYXRlZCBiZXlvbmQgdGhlIGdlbmVyYXRvciBm
cmFtZS4KKworICAgICAgICAtIFNldEdlbmVyYXRvckxvY2FsCisKKyAgICAgICAgICAgIFN0b3Jl
IGEgbG9jYWwgdmFyaWFibGUgdG8gYSBnZW5lcmF0b3IgZnJhbWUuCisKKyAgICAgICAgRnV0dXJl
IHBsYW5zIGFyZSB0aGUgZm9sbG93aW5ncy4KKworICAgICAgICAxLiBTdXBwb3J0IHRyYW5zZmVy
cmluZyBBYnN0cmFjdFZhbHVlIGJldHdlZW4gU2V0R2VuZXJhdG9yTG9jYWwgYW5kIEdldEdlbmVy
YXRvckxvY2FsLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUzMTgz
CisKKyAgICAgICAgMi4gQ3JlYXRlIEpTR2VuZXJhdG9yIGFuZCBhbGxvY2F0ZSBpdCBpbiB0aGUg
Z2VuZXJhdG9yIHdyYXBwZXIgZnVuY3Rpb24uIFRoaXMgc2hvdWxkIGJlIGNvbXBpbGVkIGluIERG
RyAvIEZUTCBhbmQKKyAgICAgICAgdGhpcyBvYmplY3Qgc2hvdWxkIGJlIHRyYWNrZWQgKGJ5IGVz
Y2FwZSBhbmFseXNpcykgYW5kIGVsaW1pbmF0ZWQgaWYgcG9zc2libGUgYnkgb2JqZWN0IGFsbG9j
YXRpb24gZWxpbWluYXRpb24uCisKKyAgICAgICAgMy4gQW5kIG9uY2Ugd2UgZXhwbG9pdCB0aGF0
IEdlbmVyYXRvckZyYW1lIGlzIG5vdCBlc2NhcGVkIGZyb20gdGhlIGdpdmVuIEZUTC1lZCBmdW5j
dGlvbiwgd2Ugd2lsbCBlbGltaW5hdGUgR2VuZXJhdG9yRnJhbWUgYWxsb2NhdGlvbiBhbmQKKyAg
ICAgICAgY29udmVydCBHZW5lcmF0b3JMb2NhbCBvcGVyYXRpb25zIGludG8gZ2V0L3NldCBsb2Nh
bCBvcGVyYXRpb25zLgorCisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBidWlsdGlucy9HZW5lcmF0b3JQcm90b3R5cGUuanM6Cisg
ICAgICAgIChnZW5lcmF0b3JSZXN1bWUpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlQmFz
aWNCbG9jay5jcHA6CisgICAgICAgIChKU0M6OmlzQnJhbmNoKToKKyAgICAgICAgKEpTQzo6Y29t
cHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlQmFz
aWNCbG9jay5oOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uOgorICAgICAg
ICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHA6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzKToKKyAg
ICAgICAgKEpTQzo6c3RlcE92ZXJJbnN0cnVjdGlvbik6CisgICAgICAgIChKU0M6OmNvbXB1dGVM
b2NhbExpdmVuZXNzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpjb21wdXRlTG9j
YWxMaXZlbmVzc0ZvckJsb2NrKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5
c2lzOjpydW5MaXZlbmVzc0ZpeHBvaW50KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVz
c0FuYWx5c2lzOjpnZXRMaXZlbmVzc0luZm9BdEJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlRnVsbExpdmVuZXNzKToKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlS2lsbHMpOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGUpOgorICAgICAgICAqIGJ5
dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5oOgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUxpdmVuZXNzQW5hbHlzaXM6OmJ5dGVjb2RlQW5hbHlzaXNNb2RlKToKKyAgICAgICAgKiBieXRl
Y29kZS9CeXRlY29kZVVzZURlZi5oOgorICAgICAgICAoSlNDOjpjb21wdXRlVXNlc0ZvckJ5dGVj
b2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldCk6
CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJs
b2NrOjpkdW1wQnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmlzaENyZWF0
aW9uKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjp2YWxpZGF0ZSk6CisgICAgICAgICogYnl0
ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bGl2ZW5lc3NBbmFs
eXNpcyk6CisgICAgICAgICogYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmNwcDoKKyAgICAg
ICAgKEpTQzo6Z2V0SnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6
OmNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMpOgorICAgICAgICAoSlNDOjpmaW5kSnVtcFRhcmdl
dHNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgICogYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJn
ZXRzLmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKToKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdHZW5lcmF0b3JGcmFtZSk6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0U2F2ZSk6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzdW1lKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0
ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVy
YXRvckZyYW1lUmVnaXN0ZXIpOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEhlYXAuaDoKKyAg
ICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaDoKKyAgICAgICAgKEpT
Qzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVm
ZmVjdHMpOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6Om5ld0dlbmVyYXRvckxvY2FsRGF0YSk6CisgICAgICAg
IChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAoSlNDOjpE
Rkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUNvZGVCbG9jayk6CisgICAgICAgICogZGZnL0RGR0Nh
cGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Y2FwYWJpbGl0eUxldmVsKToKKyAg
ICAgICAgKiBkZmcvREZHQ2xvYmJlcml6ZS5oOgorICAgICAgICAoSlNDOjpERkc6OmNsb2JiZXJp
emUpOgorICAgICAgICAqIGRmZy9ERkdDbG9iYmVyc0V4aXRTdGF0ZS5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6Y2xvYmJlcnNFeGl0U3RhdGUpOgorICAgICAgICAqIGRmZy9ERkdEb2VzR0MuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OmRvZXNHQyk6CisgICAgICAgICogZGZnL0RGR0ZpeHVwUGhh
c2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwTm9kZSk6CisgICAg
ICAgICogZGZnL0RGR0dlbmVyYXRvckxvY2FsRGF0YS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmguCisgICAgICAgIChKU0M6
OkRGRzo6R2VuZXJhdG9yTG9jYWxEYXRhOjpwcmVkaWN0KToKKyAgICAgICAgKEpTQzo6REZHOjpH
ZW5lcmF0b3JMb2NhbERhdGE6OnByZWRpY3Rpb24pOgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5o
OgorICAgICAgICAqIGRmZy9ERkdNYXlFeGl0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjptYXlF
eGl0KToKKyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6
Omhhc0dlbmVyYXRvckxvY2Fsc1NpemUpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmdlbmVy
YXRvckxvY2Fsc1NpemUpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc0dlbmVyYXRvckxv
Y2FsSW5kZXgpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmdlbmVyYXRvckxvY2FsSW5kZXgp
OgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc0dlbmVyYXRvckxvY2FsRGF0YSk6CisgICAg
ICAgIChKU0M6OkRGRzo6Tm9kZTo6Z2VuZXJhdG9yTG9jYWxEYXRhKToKKyAgICAgICAgKEpTQzo6
REZHOjpOb2RlOjpoYXNHZW5lcmF0b3JGcmFtZUxvY2Fscyk6CisgICAgICAgIChKU0M6OkRGRzo6
Tm9kZTo6Z2VuZXJhdG9yRnJhbWVMb2NhbHMpOgorICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5o
OgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBkZmcvREZHT3Bl
cmF0aW9ucy5oOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5j
cHA6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6REZH
OjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3R2VuZXJhdG9yRnJh
bWUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUmVzaXplR2Vu
ZXJhdG9yTG9jYWxzKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAg
ICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6Cisg
ICAgICAgICogZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcDoKKyAgICAgICAg
KiBkZmcvREZHU3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OlN0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlOjpydW4pOgorICAgICAgICAqIGZ0bC9GVExB
YnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcDoKKyAgICAgICAgKiBmdGwvRlRMQWJzdHJhY3RIZWFw
UmVwb3NpdG9yeS5oOgorICAgICAgICAqIGZ0bC9GVExDYXBhYmlsaXRpZXMuY3BwOgorICAgICAg
ICAoSlNDOjpGVEw6OmNhbkNvbXBpbGUpOgorICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAg
ICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MpOgorICAgICAgICAqIGppdC9KSVQu
aDoKKyAgICAgICAgKiBqaXQvSklUT3Bjb2Rlcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dF9vcF9zYXZlKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3Jlc3VtZSk6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdF9vcF9uZXdfZ2VuZXJhdG9yX2ZyYW1lKToKKyAgICAgICAgKiBqaXQv
SklUT3Bjb2RlczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3NhdmUpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcmVzdW1lKToKKyAgICAgICAgKiBqaXQvSklUUHJv
cGVydHlBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRXcml0ZUJhcnJpZXIpOgor
ICAgICAgICAqIGxsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHA6CisgICAgICAgICogbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc206CisgICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6
CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUlubmVyKToKKyAgICAgICAg
KEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlR2VuZXJhdG9yRnVuY3Rpb25Tb3VyY2VFbGVt
ZW50cyk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpjcmVhdGVHZW5lcmF0b3JQ
YXJhbWV0ZXJzKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmg6CisgICAgICAgICogcnVudGlt
ZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpTTE9XX1BBVEhfREVDTCk6Cisg
ICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuaDoKKyAgICAgICAgKiBydW50aW1lL0dl
bmVyYXRvckZyYW1lLmNwcDoKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OkdlbmVyYXRv
ckZyYW1lKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OmZpbmlzaENyZWF0aW9uKToK
KyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAg
IChKU0M6OkdlbmVyYXRvckZyYW1lOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JG
cmFtZTo6c2F2ZSk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpyZXN1bWUpOgorICAg
ICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVu
dGltZS9HZW5lcmF0b3JGcmFtZS5oOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6bG9j
YWxPZmZzZXQpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6bnVtYmVyT2ZDYWxsZWVM
b2NhbHNPZmZzZXQpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6bnVtYmVyT2ZTYXZl
ZENhbGxlZUxvY2Fsc09mZnNldCk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpsb2Nh
bEF0KTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAg
ICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmluaXQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNH
bG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmdlbmVyYXRvckZy
YW1lU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6
Vk06OlZNKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisgICAgICAgICogdGVz
dHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLWFuZC1hcnJheS5qczogQWRkZWQuCisgICAgICAg
IChmaWIpOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQtb2Jq
ZWN0LmpzOiBBZGRlZC4KKyAgICAgICAgKGZpYik6CisgICAgICAgICogdGVzdHMvc3RyZXNzL2dl
bmVyYXRvci1maWItZnRsLWFuZC1zdHJpbmcuanM6IEFkZGVkLgorICAgICAgICAoZmliKToKKyAg
ICAgICAgKiB0ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwuanM6IEFkZGVkLgorICAgICAg
ICAoZmliKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZyYW1lLWVtcHR5Lmpz
OiBBZGRlZC4KKyAgICAgICAgKHNob3VsZFRocm93KToKKyAgICAgICAgKHNob3VsZFRocm93LmZp
Yik6CisKIDIwMTYtMDQtMjQgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+
CiAKICAgICAgICAgW0pTQ10gT3B0aW1pemUgSlNPTi5wYXJzZSBzdHJpbmcgZmFzdCBwYXRoCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGNlMWU1YzAwYjE1NGI1YWIyODY4ODVlZGZi
ZjZlOGMyNjEwMmZiMTYuLmNhYTdkYjllNTUyZGYzODk2ZTI0NTQyMjY3NDkwYzk4ZWYzZmM1NDUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMjQxLDYgKzEyNDEsNyBAQAogCQk3
MDVCNDFCMDFBNkU1MDFFMDA3MTY3NTcgLyogU3ltYm9sT2JqZWN0LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MDVCNDFBODFBNkU1MDFFMDA3MTY3NTcg
LyogU3ltYm9sT2JqZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJNzA1QjQxQjExQTZFNTAxRTAwNzE2NzU3IC8qIFN5bWJvbFByb3RvdHlwZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MDVCNDFB
OTFBNkU1MDFFMDA3MTY3NTcgLyogU3ltYm9sUHJvdG90eXBlLmNwcCAqLzsgfTsKIAkJNzA1QjQx
QjIxQTZFNTAxRTAwNzE2NzU3IC8qIFN5bWJvbFByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzA1QjQxQUExQTZFNTAxRTAwNzE2NzU3IC8q
IFN5bWJvbFByb3RvdHlwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCTcwNzkxNDFEMUM0QUE4NjAwMEI4MkZGNyAvKiBERkdHZW5lcmF0b3JMb2Nh
bERhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcw
NzkxNDFDMUM0QUE4MDcwMEI4MkZGNyAvKiBERkdHZW5lcmF0b3JMb2NhbERhdGEuaCAqLzsgfTsK
IAkJNzA5NEM0REUxQUU0Mzk1MzAwNDFBMkVFIC8qIEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnku
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzA5NEM0
REMxQUU0Mzk1MzAwNDFBMkVFIC8qIEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuY3BwICovOyB9
OwogCQk3MDk0QzRERjFBRTQzOTUzMDA0MUEyRUUgLyogQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3Ry
eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzA5NEM0
REQxQUU0Mzk1MzAwNDFBMkVFIC8qIEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MDlGQjg2NzFBRTMz
NUM2MDAzOUQwNjkgLyogSlNXZWFrU2V0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDcwOUZCODYxMUFFMzM1QzYwMDM5RDA2OSAvKiBKU1dlYWtTZXQu
Y3BwICovOyB9OwpAQCAtMzQxNyw2ICszNDE4LDcgQEAKIAkJNzA1QjQxQTgxQTZFNTAxRTAwNzE2
NzU3IC8qIFN5bWJvbE9iamVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
eW1ib2xPYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzA1QjQxQTkxQTZF
NTAxRTAwNzE2NzU3IC8qIFN5bWJvbFByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBTeW1ib2xQcm90b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3MDVCNDFBQTFBNkU1MDFFMDA3MTY3NTcgLyogU3ltYm9sUHJvdG90eXBlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN5bWJvbFByb3RvdHlwZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MDc5MTQxQzFDNEFBODA3MDBCODJGRjcgLyogREZH
R2VuZXJhdG9yTG9jYWxEYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERG
R0dlbmVyYXRvckxvY2FsRGF0YS5oOyBwYXRoID0gZGZnL0RGR0dlbmVyYXRvckxvY2FsRGF0YS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MDk0QzREQzFBRTQzOTUzMDA0MUEyRUUg
LyogQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNzA5NEM0REQxQUU0Mzk1MzAwNDFBMkVFIC8qIEJ5dGVjb2RlSW50
cmluc2ljUmVnaXN0cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnl0ZWNv
ZGVJbnRyaW5zaWNSZWdpc3RyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MDlG
Qjg2MTFBRTMzNUM2MDAzOUQwNjkgLyogSlNXZWFrU2V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEpTV2Vha1NldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC02MjA4LDYgKzYyMTAsNyBAQAogCQkJCTJBODgwNjc2MTkxMDdENTUwMENCMEJCQiAv
KiBERkdGdW5jdGlvbldoaXRlbGlzdC5jcHAgKi8sCiAJCQkJMkE4ODA2NzcxOTEwN0Q1NTAwQ0Iw
QkJCIC8qIERGR0Z1bmN0aW9uV2hpdGVsaXN0LmggKi8sCiAJCQkJODZFQzlEQjYxMzI4REY4MjAw
MkIyQUQ3IC8qIERGR0dlbmVyYXRpb25JbmZvLmggKi8sCisJCQkJNzA3OTE0MUMxQzRBQTgwNzAw
QjgyRkY3IC8qIERGR0dlbmVyYXRvckxvY2FsRGF0YS5oICovLAogCQkJCTg2RUM5REI3MTMyOERG
ODIwMDJCMkFENyAvKiBERkdHcmFwaC5jcHAgKi8sCiAJCQkJODZFQzlEQjgxMzI4REY4MjAwMkIy
QUQ3IC8qIERGR0dyYXBoLmggKi8sCiAJCQkJMEYyRkNDRjIxOEE2MDA3MDAwMUEyN0Y4IC8qIERG
R0dyYXBoU2FmZXBvaW50LmNwcCAqLywKQEAgLTc5NTMsNiArNzk1Niw3IEBACiAJCQkJMEZFMDUw
MjkxQUE5MDk1NjAwRDMzQjMzIC8qIFNjb3BlZEFyZ3VtZW50c1RhYmxlLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRkUwNTAyQjFBQTkwOTU2MDBEMzNCMzMgLyogU2NvcGVPZmZzZXQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGMjRFNTUyMTdFRTI3NDkwMEFCQjIxNyAvKiBTY3JhdGNoUmVnaXN0ZXJB
bGxvY2F0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCTcwNzkxNDFEMUM0QUE4NjAwMEI4MkZGNyAv
KiBERkdHZW5lcmF0b3JMb2NhbERhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1RkQwMDY4MTg5
QUZFOUMwMDYzMzIzMSAvKiBTY3JpcHRBcmd1bWVudHMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1
MDNGQTIxMTg4RUZGNjgwMDExMEYxNCAvKiBTY3JpcHRCcmVha3BvaW50LmggaW4gSGVhZGVycyAq
LywKIAkJCQlBNUZEMDA2RTE4OUIwMEFBMDA2MzMyMzEgLyogU2NyaXB0Q2FsbEZyYW1lLmggaW4g
SGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9H
ZW5lcmF0b3JQcm90b3R5cGUuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvR2Vu
ZXJhdG9yUHJvdG90eXBlLmpzCmluZGV4IDY5NDYzYzMzNjAyZTI4ZjdkZDQyOWFkMjM0NmRiMWE3
ZTVlZWRkZWUuLjA0YTYzMzM4ZjdhMTJkMGRhMTg0ZGVmYWM5YWJkZmNlYTkzNTBiZGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9HZW5lcmF0b3JQcm90b3R5cGUu
anMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0dlbmVyYXRvclByb3RvdHlw
ZS5qcwpAQCAtNDksNyArNDksNyBAQCBmdW5jdGlvbiBnZW5lcmF0b3JSZXN1bWUoZ2VuZXJhdG9y
LCBzZW50VmFsdWUsIHJlc3VtZU1vZGUpCiAgICAgfSBlbHNlIHsKICAgICAgICAgdHJ5IHsKICAg
ICAgICAgICAgIGdlbmVyYXRvci5AZ2VuZXJhdG9yU3RhdGUgPSBAR2VuZXJhdG9yU3RhdGVFeGVj
dXRpbmc7Ci0gICAgICAgICAgICB2YWx1ZSA9IGdlbmVyYXRvci5AZ2VuZXJhdG9yTmV4dC5AY2Fs
bChnZW5lcmF0b3IuQGdlbmVyYXRvclRoaXMsIGdlbmVyYXRvciwgc3RhdGUsIHNlbnRWYWx1ZSwg
cmVzdW1lTW9kZSk7CisgICAgICAgICAgICB2YWx1ZSA9IGdlbmVyYXRvci5AZ2VuZXJhdG9yTmV4
dC5AY2FsbChnZW5lcmF0b3IuQGdlbmVyYXRvclRoaXMsIGdlbmVyYXRvciwgc3RhdGUsIHNlbnRW
YWx1ZSwgcmVzdW1lTW9kZSwgZ2VuZXJhdG9yLkBnZW5lcmF0b3JGcmFtZSk7CiAgICAgICAgICAg
ICBpZiAoZ2VuZXJhdG9yLkBnZW5lcmF0b3JTdGF0ZSA9PT0gQEdlbmVyYXRvclN0YXRlRXhlY3V0
aW5nKSB7CiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLkBnZW5lcmF0b3JTdGF0ZSA9IEBHZW5l
cmF0b3JTdGF0ZUNvbXBsZXRlZDsKICAgICAgICAgICAgICAgICBkb25lID0gdHJ1ZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2su
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5j
cHAKaW5kZXggN2YxN2MwZWYxMGI0MzNmYWM4ZjU4Y2IzYjljYTVkNGQwMTViYmEwOC4uZWMwZGJm
NjA1NjI1ZTFjMDYyMTNmYjRmNGI5MDA3M2FhY2I0N2M5MyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5jcHAKQEAgLTM4LDcg
KzM4LDcgQEAgdm9pZCBCeXRlY29kZUJhc2ljQmxvY2s6OnNocmlua1RvRml0KCkKICAgICBtX3N1
Y2Nlc3NvcnMuc2hyaW5rVG9GaXQoKTsKIH0KIAotc3RhdGljIGJvb2wgaXNCcmFuY2goT3Bjb2Rl
SUQgb3Bjb2RlSUQpCitzdGF0aWMgYm9vbCBpc0JyYW5jaChPcGNvZGVJRCBvcGNvZGVJRCwgQnl0
ZWNvZGVBbmFseXNpc01vZGUgYnl0ZWNvZGVBbmFseXNpc01vZGUpCiB7CiAgICAgc3dpdGNoIChv
cGNvZGVJRCkgewogICAgIGNhc2Ugb3Bfam1wOgpAQCAtNTgsOCArNTgsMTEgQEAgc3RhdGljIGJv
b2wgaXNCcmFuY2goT3Bjb2RlSUQgb3Bjb2RlSUQpCiAgICAgY2FzZSBvcF9zd2l0Y2hfaW1tOgog
ICAgIGNhc2Ugb3Bfc3dpdGNoX2NoYXI6CiAgICAgY2FzZSBvcF9zd2l0Y2hfc3RyaW5nOgotICAg
IGNhc2Ugb3Bfc2F2ZToKICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBjYXNlIG9wX3NhdmU6
CisgICAgICAgIHJldHVybiBieXRlY29kZUFuYWx5c2lzTW9kZSA9PSBCeXRlY29kZUFuYWx5c2lz
TW9kZTo6RXh0cmFjdEdlbmVyYXRvckxpdmVDYWxsZWVMb2NhbHM7CisKICAgICBkZWZhdWx0Ogog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpAQCAtMTEwLDEwICsxMTMsMTAgQEAgc3RhdGlj
IHZvaWQgbGlua0Jsb2NrcyhCeXRlY29kZUJhc2ljQmxvY2sqIHByZWRlY2Vzc29yLCBCeXRlY29k
ZUJhc2ljQmxvY2sqIHN1Y2MKICAgICBwcmVkZWNlc3Nvci0+YWRkU3VjY2Vzc29yKHN1Y2Nlc3Nv
cik7CiB9CiAKLXZvaWQgY29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MoQ29kZUJsb2NrKiBjb2Rl
QmxvY2ssIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mIGJhc2lj
QmxvY2tzKQordm9pZCBjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2NrcyhDb2RlQmxvY2sqIGNvZGVC
bG9jaywgQnl0ZWNvZGVBbmFseXNpc01vZGUgYnl0ZWNvZGVBbmFseXNpc01vZGUsIFZlY3Rvcjxz
dGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mIGJhc2ljQmxvY2tzKQogewogICAg
IFZlY3Rvcjx1bnNpZ25lZCwgMzI+IGp1bXBUYXJnZXRzOwotICAgIGNvbXB1dGVQcmVjaXNlSnVt
cFRhcmdldHMoY29kZUJsb2NrLCBqdW1wVGFyZ2V0cyk7CisgICAgY29tcHV0ZVByZWNpc2VKdW1w
VGFyZ2V0cyhjb2RlQmxvY2ssIGJ5dGVjb2RlQW5hbHlzaXNNb2RlLCBqdW1wVGFyZ2V0cyk7CiAK
ICAgICAvLyBDcmVhdGUgdGhlIGVudHJ5IGFuZCBleGl0IGJhc2ljIGJsb2Nrcy4KICAgICBiYXNp
Y0Jsb2Nrcy5yZXNlcnZlQ2FwYWNpdHkoanVtcFRhcmdldHMuc2l6ZSgpICsgMik7CkBAIC0xNDks
NyArMTUyLDcgQEAgdm9pZCBjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2NrcyhDb2RlQmxvY2sqIGNv
ZGVCbG9jaywgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXQKICAgICAgICAgfQogCiAgICAgICAg
IC8vIElmIHRoZSBjdXJyZW50IGJ5dGVjb2RlIGlzIGEgYnJhbmNoIG9yIGEgcmV0dXJuLCB0aGVu
IHRoZSBuZXh0IGluc3RydWN0aW9uIGlzIHRoZSBsZWFkZXIgb2YgaXRzIG93biBiYXNpYyBibG9j
ay4KLSAgICAgICAgaWYgKGlzQnJhbmNoKG9wY29kZUlEKSB8fCBpc1Rlcm1pbmFsKG9wY29kZUlE
KSB8fCBpc1Rocm93KG9wY29kZUlEKSkKKyAgICAgICAgaWYgKGlzQnJhbmNoKG9wY29kZUlELCBi
eXRlY29kZUFuYWx5c2lzTW9kZSkgfHwgaXNUZXJtaW5hbChvcGNvZGVJRCkgfHwgaXNUaHJvdyhv
cGNvZGVJRCkpCiAgICAgICAgICAgICBuZXh0SW5zdHJ1Y3Rpb25Jc0xlYWRlciA9IHRydWU7CiAK
ICAgICAgICAgaWYgKGNyZWF0ZWRCbG9jaykKQEAgLTIwMiwxMCArMjA1LDEwIEBAIHZvaWQgY29t
cHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFZlY3RvcjxzdGQ6
OnVuaXF1ZV9wdHI8Qnl0CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIC8vIElmIHdlIGZv
dW5kIGEgYnJhbmNoLCBsaW5rIHRvIHRoZSBibG9jayhzKSB0aGF0IHdlIGp1bXAgdG8uCi0gICAg
ICAgICAgICBpZiAoaXNCcmFuY2gob3Bjb2RlSUQpKSB7CisgICAgICAgICAgICBpZiAoaXNCcmFu
Y2gob3Bjb2RlSUQsIGJ5dGVjb2RlQW5hbHlzaXNNb2RlKSkgewogICAgICAgICAgICAgICAgIEFT
U0VSVChieXRlY29kZU9mZnNldCArIG9wY29kZUxlbmd0aCA9PSBibG9jay0+bGVhZGVyQnl0ZWNv
ZGVPZmZzZXQoKSArIGJsb2NrLT50b3RhbEJ5dGVjb2RlTGVuZ3RoKCkpOwogICAgICAgICAgICAg
ICAgIFZlY3Rvcjx1bnNpZ25lZCwgMT4gYnl0ZWNvZGVPZmZzZXRzSnVtcGVkVG87Ci0gICAgICAg
ICAgICAgICAgZmluZEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoY29kZUJsb2NrLCBieXRl
Y29kZU9mZnNldCwgYnl0ZWNvZGVPZmZzZXRzSnVtcGVkVG8pOworICAgICAgICAgICAgICAgIGZp
bmRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9jaywgYnl0ZWNvZGVBbmFseXNp
c01vZGUsIGJ5dGVjb2RlT2Zmc2V0LCBieXRlY29kZU9mZnNldHNKdW1wZWRUbyk7CiAKICAgICAg
ICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYmFzaWNCbG9ja3Muc2l6ZSgpOyBp
KyspIHsKICAgICAgICAgICAgICAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBvdGhlckJsb2Nr
ID0gYmFzaWNCbG9ja3NbaV0uZ2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmgKaW5kZXggYmQ3ZDNhZTliYTM0M2UxYjA3MTc5
ZTk4ZjFlZTg5ZGE2NWJhN2UyMC4uNDkyNTY5NWRhZWNiMGQ2YmY4YjdiNjAyMmM2OTA2NGViMTNh
NGMzYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
QmFzaWNCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZUJhc2ljQmxvY2suaApAQCAtMzYsNiArMzYsMTEgQEAKIAogY2xhc3MgQ29kZUJsb2NrOwogCitl
bnVtIGNsYXNzIEJ5dGVjb2RlQW5hbHlzaXNNb2RlIHsKKyAgICBTdGFuZGFyZCwKKyAgICBFeHRy
YWN0R2VuZXJhdG9yTGl2ZUNhbGxlZUxvY2FscworfTsKKwogY2xhc3MgQnl0ZWNvZGVCYXNpY0Js
b2NrIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKQEAgLTcwLDcgKzc1
LDcgQEAgY2xhc3MgQnl0ZWNvZGVCYXNpY0Jsb2NrIHsKICAgICBGYXN0Qml0VmVjdG9yIG1fb3V0
OwogfTsKIAotdm9pZCBjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2NrcyhDb2RlQmxvY2sqLCBWZWN0
b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+Jik7Cit2b2lkIGNvbXB1dGVC
eXRlY29kZUJhc2ljQmxvY2tzKENvZGVCbG9jayosIEJ5dGVjb2RlQW5hbHlzaXNNb2RlLCBWZWN0
b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+Jik7CiAKIGlubGluZSBCeXRl
Y29kZUJhc2ljQmxvY2s6OkJ5dGVjb2RlQmFzaWNCbG9jayh1bnNpZ25lZCBzdGFydCwgdW5zaWdu
ZWQgbGVuZ3RoKQogICAgIDogbV9sZWFkZXJCeXRlY29kZU9mZnNldChzdGFydCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbiBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgppbmRleCBlOGVi
OWI2YmRlNDg0YzE3MDE1OTBjMWFhZjkyY2MwZDQ2YWI3NTVlLi4xNDAwMzNjYTQ0MGMyMmE5NmY2
ZTQ4YTkzNTNiZjY3Nzk5MmZiZjY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCkBAIC0xNiw2ICsxNiw3IEBACiAgICAgICAgICAgICB7
ICJuYW1lIiA6ICJvcF9uZXdfYXJyYXlfd2l0aF9zaXplIiwgImxlbmd0aCIgOiA0IH0sCiAgICAg
ICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXdfYXJyYXlfYnVmZmVyIiwgImxlbmd0aCIgOiA1IH0s
CiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXdfcmVnZXhwIiwgImxlbmd0aCIgOiAzIH0s
CisgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXdfZ2VuZXJhdG9yX2ZyYW1lIiwgImxlbmd0
aCIgOiAzIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9tb3YiLCAibGVuZ3RoIiA6IDMg
fSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX25vdCIsICJsZW5ndGgiIDogMyB9LAogICAg
ICAgICAgICAgeyAibmFtZSIgOiAib3BfZXEiLCAibGVuZ3RoIiA6IDQgfSwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFs
eXNpcy5jcHAKaW5kZXggNzIyOGIwMzMzNjZjN2E2N2I1MTA0ODhkZmU0NWYzZGQzY2ZhNDMxNS4u
OWMzNzg5ZmY2NDc4MDU4YTZlZjhkMGIwODk2Y2ZmZmNhYzNhYjBkYiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFs
eXNpcy5jcHAKQEAgLTM1LDggKzM1LDkgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLUJ5dGVjb2Rl
TGl2ZW5lc3NBbmFseXNpczo6Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzKENvZGVCbG9jayogY29k
ZUJsb2NrKQorQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlz
aXMoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQW5hbHlzaXNNb2RlIGJ5dGVjb2RlQW5h
bHlzaXNNb2RlKQogICAgIDogbV9jb2RlQmxvY2soY29kZUJsb2NrKQorICAgICwgbV9ieXRlY29k
ZUFuYWx5c2lzTW9kZShieXRlY29kZUFuYWx5c2lzTW9kZSkKIHsKICAgICBBU1NFUlQobV9jb2Rl
QmxvY2spOwogICAgIGNvbXB1dGUoKTsKQEAgLTk4LDcgKzk5LDcgQEAgc3RhdGljIEJ5dGVjb2Rl
QmFzaWNCbG9jayogZmluZEJhc2ljQmxvY2tGb3JCeXRlY29kZU9mZnNldChWZWN0b3I8c3RkOjp1
bmlxdWVfcHQKIC8vIFNpbXBsaWZpZWQgaW50ZXJmYWNlIHRvIGJ5dGVjb2RlIHVzZS9kZWYsIHdo
aWNoIGRldGVybWluZXMgZGVmcyBmaXJzdCBhbmQgdGhlbiB1c2VzLCBhbmQgaW5jbHVkZXMKIC8v
IGV4Y2VwdGlvbiBoYW5kbGVycyBpbiB0aGUgdXNlcy4KIHRlbXBsYXRlPHR5cGVuYW1lIFVzZUZ1
bmN0b3IsIHR5cGVuYW1lIERlZkZ1bmN0b3I+Ci1zdGF0aWMgdm9pZCBzdGVwT3Zlckluc3RydWN0
aW9uKENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrLCBWZWN0
b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+JiBiYXNpY0Jsb2NrcywgdW5z
aWduZWQgYnl0ZWNvZGVPZmZzZXQsIGNvbnN0IFVzZUZ1bmN0b3ImIHVzZSwgY29uc3QgRGVmRnVu
Y3RvciYgZGVmKQorc3RhdGljIHZvaWQgc3RlcE92ZXJJbnN0cnVjdGlvbihDb2RlQmxvY2sqIGNv
ZGVCbG9jaywgQnl0ZWNvZGVBbmFseXNpc01vZGUgYnl0ZWNvZGVBbmFseXNpc01vZGUsIEJ5dGVj
b2RlQmFzaWNCbG9jayogYmxvY2ssIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNp
Y0Jsb2NrPj4mIGJhc2ljQmxvY2tzLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgY29uc3QgVXNl
RnVuY3RvciYgdXNlLCBjb25zdCBEZWZGdW5jdG9yJiBkZWYpCiB7CiAgICAgLy8gVGhpcyBhYnN0
cmFjdGx5IGV4ZWN1dGUgdGhlIGluc3RydWN0aW9uIGluIHJldmVyc2UuIEluc3RydWN0aW9ucyBs
b2dpY2FsbHkgZmlyc3QgdXNlIG9wZXJhbmRzIGFuZAogICAgIC8vIHRoZW4gZGVmaW5lIG9wZXJh
bmRzLiBUaGlzIGxvZ2ljYWwgb3JkZXJpbmcgaXMgbmVjZXNzYXJ5IGZvciBvcGVyYXRpb25zIHRo
YXQgdXNlIGFuZCBkZWYgdGhlIHNhbWUKQEAgLTExNiwxNCArMTE3LDE0IEBAIHN0YXRpYyB2b2lk
IHN0ZXBPdmVySW5zdHJ1Y3Rpb24oQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFzaWNC
bG9jayogYmxvY2ssCiAgICAgLy8gZmlyc3QgYWRkIGl0IHRvIHRoZSBvdXQgc2V0ICh0aGUgdXNl
KSwgYW5kIHRoZW4gd2UnZCByZW1vdmUgaXQgKHRoZSBkZWYpLgogICAgIAogICAgIGNvbXB1dGVE
ZWZzRm9yQnl0ZWNvZGVPZmZzZXQoCi0gICAgICAgIGNvZGVCbG9jaywgYmxvY2ssIGJ5dGVjb2Rl
T2Zmc2V0LAorICAgICAgICBjb2RlQmxvY2ssIGJ5dGVjb2RlQW5hbHlzaXNNb2RlLCBibG9jaywg
Ynl0ZWNvZGVPZmZzZXQsCiAgICAgICAgIFsmXSAoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEluc3Ry
dWN0aW9uKiwgT3Bjb2RlSUQsIGludCBvcGVyYW5kKSB7CiAgICAgICAgICAgICBpZiAoaXNWYWxp
ZFJlZ2lzdGVyRm9yTGl2ZW5lc3MoY29kZUJsb2NrLCBvcGVyYW5kKSkKICAgICAgICAgICAgICAg
ICBkZWYoVmlydHVhbFJlZ2lzdGVyKG9wZXJhbmQpLnRvTG9jYWwoKSk7CiAgICAgICAgIH0pOwog
CiAgICAgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCgKLSAgICAgICAgY29kZUJsb2NrLCBi
bG9jaywgYnl0ZWNvZGVPZmZzZXQsCisgICAgICAgIGNvZGVCbG9jaywgYnl0ZWNvZGVBbmFseXNp
c01vZGUsIGJsb2NrLCBieXRlY29kZU9mZnNldCwKICAgICAgICAgWyZdIChDb2RlQmxvY2sqIGNv
ZGVCbG9jaywgSW5zdHJ1Y3Rpb24qLCBPcGNvZGVJRCwgaW50IG9wZXJhbmQpIHsKICAgICAgICAg
ICAgIGlmIChpc1ZhbGlkUmVnaXN0ZXJGb3JMaXZlbmVzcyhjb2RlQmxvY2ssIG9wZXJhbmQpKQog
ICAgICAgICAgICAgICAgIHVzZShWaXJ0dWFsUmVnaXN0ZXIob3BlcmFuZCkudG9Mb2NhbCgpKTsK
QEAgLTEzOCwxMCArMTM5LDEwIEBAIHN0YXRpYyB2b2lkIHN0ZXBPdmVySW5zdHJ1Y3Rpb24oQ29k
ZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2ssCiAgICAgfQogfQog
Ci1zdGF0aWMgdm9pZCBzdGVwT3Zlckluc3RydWN0aW9uKENvZGVCbG9jayogY29kZUJsb2NrLCBC
eXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2Rl
QmFzaWNCbG9jaz4+JiBiYXNpY0Jsb2NrcywgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIEZhc3RC
aXRWZWN0b3ImIG91dCkKK3N0YXRpYyB2b2lkIHN0ZXBPdmVySW5zdHJ1Y3Rpb24oQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIEJ5dGVjb2RlQW5hbHlzaXNNb2RlIGJ5dGVjb2RlQW5hbHlzaXNNb2RlLCBC
eXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2Rl
QmFzaWNCbG9jaz4+JiBiYXNpY0Jsb2NrcywgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIEZhc3RC
aXRWZWN0b3ImIG91dCkKIHsKICAgICBzdGVwT3Zlckluc3RydWN0aW9uKAotICAgICAgICBjb2Rl
QmxvY2ssIGJsb2NrLCBiYXNpY0Jsb2NrcywgYnl0ZWNvZGVPZmZzZXQsCisgICAgICAgIGNvZGVC
bG9jaywgYnl0ZWNvZGVBbmFseXNpc01vZGUsIGJsb2NrLCBiYXNpY0Jsb2NrcywgYnl0ZWNvZGVP
ZmZzZXQsCiAgICAgICAgIFsmXSAodW5zaWduZWQgYml0SW5kZXgpIHsKICAgICAgICAgICAgIC8v
IFRoaXMgaXMgdGhlIHVzZSBmdW5jdG9yLCBzbyB3ZSBzZXQgdGhlIGJpdC4KICAgICAgICAgICAg
IG91dC5zZXQoYml0SW5kZXgpOwpAQCAtMTUyLDcgKzE1Myw3IEBAIHN0YXRpYyB2b2lkIHN0ZXBP
dmVySW5zdHJ1Y3Rpb24oQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFzaWNCbG9jayog
YmxvY2ssCiAgICAgICAgIH0pOwogfQogCi1zdGF0aWMgdm9pZCBjb21wdXRlTG9jYWxMaXZlbmVz
c0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29kZUJhc2ljQmxv
Y2sqIGJsb2NrLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+JiBi
YXNpY0Jsb2NrcywgdW5zaWduZWQgdGFyZ2V0T2Zmc2V0LCBGYXN0Qml0VmVjdG9yJiByZXN1bHQp
CitzdGF0aWMgdm9pZCBjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVC
bG9jayogY29kZUJsb2NrLCBCeXRlY29kZUFuYWx5c2lzTW9kZSBieXRlY29kZUFuYWx5c2lzTW9k
ZSwgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaywgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRl
Y29kZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9ja3MsIHVuc2lnbmVkIHRhcmdldE9mZnNldCwgRmFz
dEJpdFZlY3RvciYgcmVzdWx0KQogewogICAgIEFTU0VSVCghYmxvY2stPmlzRXhpdEJsb2NrKCkp
OwogICAgIEFTU0VSVCghYmxvY2stPmlzRW50cnlCbG9jaygpKTsKQEAgLTE2NCwxNyArMTY1LDE3
IEBAIHN0YXRpYyB2b2lkIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQnl0ZWNvZGVPZmZzZXQoQ29k
ZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlCiAgICAgICAgIGlmICh0YXJnZXRPZmZzZXQgPiBi
eXRlY29kZU9mZnNldCkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAKLSAgICAgICAgc3Rl
cE92ZXJJbnN0cnVjdGlvbihjb2RlQmxvY2ssIGJsb2NrLCBiYXNpY0Jsb2NrcywgYnl0ZWNvZGVP
ZmZzZXQsIG91dCk7CisgICAgICAgIHN0ZXBPdmVySW5zdHJ1Y3Rpb24oY29kZUJsb2NrLCBieXRl
Y29kZUFuYWx5c2lzTW9kZSwgYmxvY2ssIGJhc2ljQmxvY2tzLCBieXRlY29kZU9mZnNldCwgb3V0
KTsKICAgICB9CiAKICAgICByZXN1bHQuc2V0KG91dCk7CiB9CiAKLXN0YXRpYyB2b2lkIGNvbXB1
dGVMb2NhbExpdmVuZXNzRm9yQmxvY2soQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFz
aWNCbG9jayogYmxvY2ssIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2Nr
Pj4mIGJhc2ljQmxvY2tzKQorc3RhdGljIHZvaWQgY29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCbG9j
ayhDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVBbmFseXNpc01vZGUgYnl0ZWNvZGVBbmFs
eXNpc01vZGUsIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2ssIFZlY3RvcjxzdGQ6OnVuaXF1ZV9w
dHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mIGJhc2ljQmxvY2tzKQogewogICAgIGlmIChibG9jay0+
aXNFeGl0QmxvY2soKSB8fCBibG9jay0+aXNFbnRyeUJsb2NrKCkpCiAgICAgICAgIHJldHVybjsK
LSAgICBjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9jaywgYmxv
Y2ssIGJhc2ljQmxvY2tzLCBibG9jay0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKSwgYmxvY2stPmlu
KCkpOworICAgIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQnl0ZWNvZGVPZmZzZXQoY29kZUJsb2Nr
LCBieXRlY29kZUFuYWx5c2lzTW9kZSwgYmxvY2ssIGJhc2ljQmxvY2tzLCBibG9jay0+bGVhZGVy
Qnl0ZWNvZGVPZmZzZXQoKSwgYmxvY2stPmluKCkpOwogfQogCiB2b2lkIEJ5dGVjb2RlTGl2ZW5l
c3NBbmFseXNpczo6cnVuTGl2ZW5lc3NGaXhwb2ludCgpCkBAIC0yMDEsNyArMjAyLDcgQEAgdm9p
ZCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OnJ1bkxpdmVuZXNzRml4cG9pbnQoKQogICAgICAg
ICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8IGJsb2NrLT5zdWNjZXNzb3JzKCkuc2l6ZSgp
OyBqKyspCiAgICAgICAgICAgICAgICAgbmV3T3V0Lm1lcmdlKGJsb2NrLT5zdWNjZXNzb3JzKClb
al0tPmluKCkpOwogICAgICAgICAgICAgYm9vbCBvdXREaWRDaGFuZ2UgPSBibG9jay0+b3V0KCku
c2V0QW5kQ2hlY2sobmV3T3V0KTsKLSAgICAgICAgICAgIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9y
QmxvY2sobV9jb2RlQmxvY2ssIGJsb2NrLCBtX2Jhc2ljQmxvY2tzKTsKKyAgICAgICAgICAgIGNv
bXB1dGVMb2NhbExpdmVuZXNzRm9yQmxvY2sobV9jb2RlQmxvY2ssIG1fYnl0ZWNvZGVBbmFseXNp
c01vZGUsIGJsb2NrLCBtX2Jhc2ljQmxvY2tzKTsKICAgICAgICAgICAgIGNoYW5nZWQgfD0gb3V0
RGlkQ2hhbmdlOwogICAgICAgICB9CiAgICAgfSB3aGlsZSAoY2hhbmdlZCk7CkBAIC0yMTQsNyAr
MjE1LDcgQEAgdm9pZCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmdldExpdmVuZXNzSW5mb0F0
Qnl0ZWNvZGVPZmZzZXQodW5zaWduZWQgYnl0ZWNvZGUKICAgICBBU1NFUlQoIWJsb2NrLT5pc0Vu
dHJ5QmxvY2soKSk7CiAgICAgQVNTRVJUKCFibG9jay0+aXNFeGl0QmxvY2soKSk7CiAgICAgcmVz
dWx0LnJlc2l6ZShibG9jay0+b3V0KCkubnVtQml0cygpKTsKLSAgICBjb21wdXRlTG9jYWxMaXZl
bmVzc0ZvckJ5dGVjb2RlT2Zmc2V0KG1fY29kZUJsb2NrLCBibG9jaywgbV9iYXNpY0Jsb2Nrcywg
Ynl0ZWNvZGVPZmZzZXQsIHJlc3VsdCk7CisgICAgY29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCeXRl
Y29kZU9mZnNldChtX2NvZGVCbG9jaywgbV9ieXRlY29kZUFuYWx5c2lzTW9kZSwgYmxvY2ssIG1f
YmFzaWNCbG9ja3MsIGJ5dGVjb2RlT2Zmc2V0LCByZXN1bHQpOwogfQogCiBib29sIEJ5dGVjb2Rl
TGl2ZW5lc3NBbmFseXNpczo6b3BlcmFuZElzTGl2ZUF0Qnl0ZWNvZGVPZmZzZXQoaW50IG9wZXJh
bmQsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KQpAQCAtMjQ4LDcgKzI0OSw3IEBAIHZvaWQgQnl0
ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlRnVsbExpdmVuZXNzKEZ1bGxCeXRlY29kZUxp
dmVuZXNzJiByZXN1bHQpCiAgICAgICAgIAogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBibG9j
ay0+Ynl0ZWNvZGVPZmZzZXRzKCkuc2l6ZSgpOyBpLS07KSB7CiAgICAgICAgICAgICB1bnNpZ25l
ZCBieXRlY29kZU9mZnNldCA9IGJsb2NrLT5ieXRlY29kZU9mZnNldHMoKVtpXTsKLSAgICAgICAg
ICAgIHN0ZXBPdmVySW5zdHJ1Y3Rpb24obV9jb2RlQmxvY2ssIGJsb2NrLCBtX2Jhc2ljQmxvY2tz
LCBieXRlY29kZU9mZnNldCwgb3V0KTsKKyAgICAgICAgICAgIHN0ZXBPdmVySW5zdHJ1Y3Rpb24o
bV9jb2RlQmxvY2ssIG1fYnl0ZWNvZGVBbmFseXNpc01vZGUsIGJsb2NrLCBtX2Jhc2ljQmxvY2tz
LCBieXRlY29kZU9mZnNldCwgb3V0KTsKICAgICAgICAgICAgIHJlc3VsdC5tX21hcFtieXRlY29k
ZU9mZnNldF0gPSBvdXQ7CiAgICAgICAgIH0KICAgICB9CkBAIC0yNzEsNyArMjcyLDcgQEAgdm9p
ZCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGVLaWxscyhCeXRlY29kZUtpbGxzJiBy
ZXN1bHQpCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGJsb2NrLT5ieXRlY29kZU9mZnNldHMo
KS5zaXplKCk7IGktLTspIHsKICAgICAgICAgICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0ID0g
YmxvY2stPmJ5dGVjb2RlT2Zmc2V0cygpW2ldOwogICAgICAgICAgICAgc3RlcE92ZXJJbnN0cnVj
dGlvbigKLSAgICAgICAgICAgICAgICBtX2NvZGVCbG9jaywgYmxvY2ssIG1fYmFzaWNCbG9ja3Ms
IGJ5dGVjb2RlT2Zmc2V0LAorICAgICAgICAgICAgICAgIG1fY29kZUJsb2NrLCBtX2J5dGVjb2Rl
QW5hbHlzaXNNb2RlLCBibG9jaywgbV9iYXNpY0Jsb2NrcywgYnl0ZWNvZGVPZmZzZXQsCiAgICAg
ICAgICAgICAgICAgWyZdICh1bnNpZ25lZCBpbmRleCkgewogICAgICAgICAgICAgICAgICAgICAv
LyBUaGlzIGlzIGZvciB1c2VzLgogICAgICAgICAgICAgICAgICAgICBpZiAob3V0LmdldChpbmRl
eCkpCkBAIC0zMzcsNyArMzM4LDcgQEAgdm9pZCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmR1
bXBSZXN1bHRzKCkKIAogdm9pZCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGUoKQog
ewotICAgIGNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzKG1fY29kZUJsb2NrLCBtX2Jhc2ljQmxv
Y2tzKTsKKyAgICBjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2NrcyhtX2NvZGVCbG9jaywgbV9ieXRl
Y29kZUFuYWx5c2lzTW9kZSwgbV9iYXNpY0Jsb2Nrcyk7CiAgICAgQVNTRVJUKG1fYmFzaWNCbG9j
a3Muc2l6ZSgpKTsKICAgICBydW5MaXZlbmVzc0ZpeHBvaW50KCk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMu
aAppbmRleCBlY2UxNmYyMWYwMTUxMGE2NDI3ZmQ4NDExNDA3OWJlZDg3MGMwODc1Li45ZDIwMjhk
NjlhNTE3NzYyOTYyODYxMTJlMzgzNDA3MTliMDVjMjcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5oCkBA
IC00MSw3ICs0MSw3IEBAIGNsYXNzIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcyB7CiAgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQnl0ZWNvZGVM
aXZlbmVzc0FuYWx5c2lzKTsKIHB1YmxpYzoKLSAgICBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMo
Q29kZUJsb2NrKik7CisgICAgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzKENvZGVCbG9jayosIEJ5
dGVjb2RlQW5hbHlzaXNNb2RlKTsKICAgICAKICAgICBib29sIG9wZXJhbmRJc0xpdmVBdEJ5dGVj
b2RlT2Zmc2V0KGludCBvcGVyYW5kLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCk7CiAgICAgRmFz
dEJpdFZlY3RvciBnZXRMaXZlbmVzc0luZm9BdEJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVj
b2RlT2Zmc2V0KTsKQEAgLTQ5LDYgKzQ5LDggQEAgY2xhc3MgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5
c2lzIHsKICAgICB2b2lkIGNvbXB1dGVGdWxsTGl2ZW5lc3MoRnVsbEJ5dGVjb2RlTGl2ZW5lc3Mm
IHJlc3VsdCk7CiAgICAgdm9pZCBjb21wdXRlS2lsbHMoQnl0ZWNvZGVLaWxscyYgcmVzdWx0KTsK
IAorICAgIEJ5dGVjb2RlQW5hbHlzaXNNb2RlIGJ5dGVjb2RlQW5hbHlzaXNNb2RlKCkgY29uc3Qg
eyByZXR1cm4gbV9ieXRlY29kZUFuYWx5c2lzTW9kZTsgfQorCiBwcml2YXRlOgogICAgIHZvaWQg
Y29tcHV0ZSgpOwogICAgIHZvaWQgcnVuTGl2ZW5lc3NGaXhwb2ludCgpOwpAQCAtNTcsNiArNTks
NyBAQCBjbGFzcyBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMgewogICAgIHZvaWQgZ2V0TGl2ZW5l
c3NJbmZvQXRCeXRlY29kZU9mZnNldCh1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgRmFzdEJpdFZl
Y3RvciYpOwogCiAgICAgQ29kZUJsb2NrKiBtX2NvZGVCbG9jazsKKyAgICBCeXRlY29kZUFuYWx5
c2lzTW9kZSBtX2J5dGVjb2RlQW5hbHlzaXNNb2RlOwogICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9w
dHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4gbV9iYXNpY0Jsb2NrczsKIH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKaW5kZXggMzNjMDRhODc5
ZmM3ODNiMzU5Yzc4YWExMTI2YWY1NjI1OWQ2MTZmNC4uNmE2NzBlMGVjMjQxYjQ2MmI3NGIyOTI4
ZTg4ZGUzZTMyOTNlNDRhMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlVXNlRGVmLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlVXNlRGVmLmgKQEAgLTMyLDcgKzMyLDcgQEAKIAogdGVtcGxhdGU8dHlwZW5hbWUg
RnVuY3Rvcj4KIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCgKLSAgICBDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaywgdW5zaWduZWQgYnl0ZWNv
ZGVPZmZzZXQsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCisgICAgQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssIEJ5dGVjb2RlQW5hbHlzaXNNb2RlIGJ5dGVjb2RlQW5hbHlzaXNNb2RlLCBCeXRlY29kZUJh
c2ljQmxvY2sqIGJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgY29uc3QgRnVuY3RvciYg
ZnVuY3RvcikKIHsKICAgICBJbnRlcnByZXRlciogaW50ZXJwcmV0ZXIgPSBjb2RlQmxvY2stPnZt
KCktPmludGVycHJldGVyOwogICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiA9IGNv
ZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsKQEAgLTU3LDYgKzU3LDcgQEAgdm9pZCBj
b21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAogICAgIGNhc2Ugb3Bfd2F0Y2hkb2c6CiAgICAg
Y2FzZSBvcF9sb2dfc2hhZG93X2NoaWNrZW5fcHJvbG9ndWU6CiAgICAgY2FzZSBvcF9sb2dfc2hh
ZG93X2NoaWNrZW5fdGFpbDoKKyAgICBjYXNlIG9wX25ld19nZW5lcmF0b3JfZnJhbWU6CiAgICAg
ICAgIHJldHVybjsKICAgICBjYXNlIG9wX2Fzc2VydDoKICAgICBjYXNlIG9wX2dldF9zY29wZToK
QEAgLTI1NiwxOCArMjU3LDI2IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCgK
ICAgICB9CiAgICAgY2FzZSBvcF9zYXZlOiB7CiAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBp
bnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7Ci0gICAgICAg
IHVuc2lnbmVkIG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldCA9IGJ5dGVjb2RlT2Zmc2V0ICsgaW5z
dHJ1Y3Rpb25bM10udS5vcGVyYW5kOwotICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIG1lcmdl
UG9pbnRCbG9jayA9IG51bGxwdHI7Ci0gICAgICAgIGZvciAoQnl0ZWNvZGVCYXNpY0Jsb2NrKiBz
dWNjZXNzb3IgOiBibG9jay0+c3VjY2Vzc29ycygpKSB7Ci0gICAgICAgICAgICBpZiAoc3VjY2Vz
c29yLT5sZWFkZXJCeXRlY29kZU9mZnNldCgpID09IG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldCkg
ewotICAgICAgICAgICAgICAgIG1lcmdlUG9pbnRCbG9jayA9IHN1Y2Nlc3NvcjsKLSAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgaWYgKGJ5dGVjb2RlQW5hbHlzaXNNb2RlID09IEJ5dGVj
b2RlQW5hbHlzaXNNb2RlOjpFeHRyYWN0R2VuZXJhdG9yTGl2ZUNhbGxlZUxvY2FscykgeworICAg
ICAgICAgICAgdW5zaWduZWQgbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0ID0gYnl0ZWNvZGVPZmZz
ZXQgKyBpbnN0cnVjdGlvblszXS51Lm9wZXJhbmQ7CisgICAgICAgICAgICBCeXRlY29kZUJhc2lj
QmxvY2sqIG1lcmdlUG9pbnRCbG9jayA9IG51bGxwdHI7CisgICAgICAgICAgICBmb3IgKEJ5dGVj
b2RlQmFzaWNCbG9jayogc3VjY2Vzc29yIDogYmxvY2stPnN1Y2Nlc3NvcnMoKSkgeworICAgICAg
ICAgICAgICAgIGlmIChzdWNjZXNzb3ItPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCkgPT0gbWVyZ2VQ
b2ludEJ5dGVjb2RlT2Zmc2V0KSB7CisgICAgICAgICAgICAgICAgICAgIG1lcmdlUG9pbnRCbG9j
ayA9IHN1Y2Nlc3NvcjsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgfQorICAgICAgICAgICAgQVNTRVJUKG1lcmdlUG9pbnRCbG9jayk7
CisgICAgICAgICAgICBtZXJnZVBvaW50QmxvY2stPmluKCkuZm9yRWFjaFNldEJpdChbJl0odW5z
aWduZWQgbG9jYWwpIHsKKyAgICAgICAgICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1
Y3Rpb24sIG9wY29kZUlELCB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChsb2NhbCkub2Zmc2V0KCkp
OworICAgICAgICAgICAgfSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB1bnNpZ25l
ZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSBpbnN0cnVjdGlvblsyXS51LnVuc2lnbmVkVmFsdWU7
CisgICAgICAgICAgICBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlbmVzcyA9IGNvZGVCbG9jay0+
bGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQobGl2ZUNhbGxlZUxvY2Fsc0luZGV4KTsKKyAgICAgICAg
ICAgIGxpdmVuZXNzLmZvckVhY2hTZXRCaXQoWyZdKHVuc2lnbmVkIGxvY2FsKSB7CisgICAgICAg
ICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgdmlydHVh
bFJlZ2lzdGVyRm9yTG9jYWwobG9jYWwpLm9mZnNldCgpKTsKKyAgICAgICAgICAgIH0pOwogICAg
ICAgICB9Ci0gICAgICAgIEFTU0VSVChtZXJnZVBvaW50QmxvY2spOwotICAgICAgICBtZXJnZVBv
aW50QmxvY2stPmluKCkuZm9yRWFjaFNldEJpdChbJl0odW5zaWduZWQgbG9jYWwpIHsKLSAgICAg
ICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIHZpcnR1YWxS
ZWdpc3RlckZvckxvY2FsKGxvY2FsKS5vZmZzZXQoKSk7Ci0gICAgICAgIH0pOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogICAgIGRlZmF1bHQ6CkBAIC0yNzcsNyArMjg2LDcgQEAgdm9pZCBjb21w
dXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9y
Pgotdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2Nr
LCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgY29u
c3QgRnVuY3RvciYgZnVuY3RvcikKK3ZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChD
b2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVBbmFseXNpc01vZGUgYnl0ZWNvZGVBbmFseXNp
c01vZGUsIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0
LCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQogewogICAgIEludGVycHJldGVyKiBpbnRlcnByZXRl
ciA9IGNvZGVCbG9jay0+dm0oKS0+aW50ZXJwcmV0ZXI7CiAgICAgSW5zdHJ1Y3Rpb24qIGluc3Ry
dWN0aW9uc0JlZ2luID0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpOwpAQCAtNDIz
LDcgKzQzMiw4IEBAIHZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sq
IGNvZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jCiAgICAgY2FzZSBvcF9kZWxfYnlf
dmFsOgogICAgIGNhc2Ugb3BfdW5zaWduZWQ6CiAgICAgY2FzZSBvcF9nZXRfZnJvbV9hcmd1bWVu
dHM6IAotICAgIGNhc2Ugb3BfZ2V0X3Jlc3RfbGVuZ3RoOiB7CisgICAgY2FzZSBvcF9nZXRfcmVz
dF9sZW5ndGg6CisgICAgY2FzZSBvcF9uZXdfZ2VuZXJhdG9yX2ZyYW1lOiB7CiAgICAgICAgIEFT
U0VSVChvcGNvZGVMZW5ndGhzW29wY29kZUlEXSA+IDEpOwogICAgICAgICBmdW5jdG9yKGNvZGVC
bG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBpbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOwog
ICAgICAgICByZXR1cm47CkBAIC00NDAsMTAgKzQ1MCwxOCBAQCB2b2lkIGNvbXB1dGVEZWZzRm9y
Qnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFzaWNCbG9jayog
YmxvYwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGNhc2Ugb3BfcmVzdW1lOiB7Ci0gICAg
ICAgIFJFTEVBU0VfQVNTRVJUKGJsb2NrLT5zdWNjZXNzb3JzKCkuc2l6ZSgpID09IDEpOwotICAg
ICAgICBibG9jay0+c3VjY2Vzc29ycygpWzBdLT5pbigpLmZvckVhY2hTZXRCaXQoWyZdKHVuc2ln
bmVkIGxvY2FsKSB7Ci0gICAgICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24s
IG9wY29kZUlELCB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChsb2NhbCkub2Zmc2V0KCkpOwotICAg
ICAgICB9KTsKKyAgICAgICAgaWYgKGJ5dGVjb2RlQW5hbHlzaXNNb2RlID09IEJ5dGVjb2RlQW5h
bHlzaXNNb2RlOjpFeHRyYWN0R2VuZXJhdG9yTGl2ZUNhbGxlZUxvY2FscykgeworICAgICAgICAg
ICAgUkVMRUFTRV9BU1NFUlQoYmxvY2stPnN1Y2Nlc3NvcnMoKS5zaXplKCkgPT0gMSk7CisgICAg
ICAgICAgICBibG9jay0+c3VjY2Vzc29ycygpWzBdLT5pbigpLmZvckVhY2hTZXRCaXQoWyZdKHVu
c2lnbmVkIGxvY2FsKSB7CisgICAgICAgICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3Ry
dWN0aW9uLCBvcGNvZGVJRCwgdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwobG9jYWwpLm9mZnNldCgp
KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdW5zaWdu
ZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gaW5zdHJ1Y3Rpb25bMl0udS51bnNpZ25lZFZhbHVl
OworICAgICAgICAgICAgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZW5lc3MgPSBjb2RlQmxvY2st
PmxpdmVDYWxsZWVMb2NhbHNBdFlpZWxkKGxpdmVDYWxsZWVMb2NhbHNJbmRleCk7CisgICAgICAg
ICAgICBsaXZlbmVzcy5mb3JFYWNoU2V0Qml0KFsmXSh1bnNpZ25lZCBsb2NhbCkgeworICAgICAg
ICAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIHZpcnR1
YWxSZWdpc3RlckZvckxvY2FsKGxvY2FsKS5vZmZzZXQoKSk7CisgICAgICAgICAgICB9KTsKKyAg
ICAgICAgfQogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKaW5kZXggOTY3N2M3YzEwNDgxMjdjMGYxZWU2
MTllMGFiOTAwMmE0MWNlYWEyYy4uNGIxMDZlY2Y5MTI4MTljZTMyMWE2NTZiM2RjOTMyNzg5ZDVk
NWVlMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
ay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAK
QEAgLTE1ODYsMjYgKzE1ODYsMzMgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZSgKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3Bfc2F2ZTogewotICAg
ICAgICAgICAgaW50IGdlbmVyYXRvciA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAg
aW50IGZyYW1lID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICB1bnNpZ25lZCBsaXZl
Q2FsbGVlTG9jYWxzSW5kZXggPSAoKytpdCktPnUudW5zaWduZWRWYWx1ZTsKICAgICAgICAgICAg
IGludCBvZmZzZXQgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGNvbnN0IEZhc3RC
aXRWZWN0b3ImIGxpdmVuZXNzID0gbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVs
ZFtsaXZlQ2FsbGVlTG9jYWxzSW5kZXhdOwogICAgICAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9w
KG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAic2F2ZSIpOwotICAgICAgICAgICAgb3V0LnByaW50
ZigiJXMsICIsIHJlZ2lzdGVyTmFtZShnZW5lcmF0b3IpLmRhdGEoKSk7CisgICAgICAgICAgICBv
dXQucHJpbnRmKCIlcywgIiwgcmVnaXN0ZXJOYW1lKGZyYW1lKS5kYXRhKCkpOwogICAgICAgICAg
ICAgbGl2ZW5lc3MuZHVtcChvdXQpOwogICAgICAgICAgICAgb3V0LnByaW50ZigiKEBsaXZlJTF1
KSwgJWQoLT4lZCkiLCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXgsIG9mZnNldCwgbG9jYXRpb24gKyBv
ZmZzZXQpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9y
ZXN1bWU6IHsKLSAgICAgICAgICAgIGludCBnZW5lcmF0b3IgPSAoKytpdCktPnUub3BlcmFuZDsK
KyAgICAgICAgICAgIGludCBmcmFtZSA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAg
dW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gKCsraXQpLT51LnVuc2lnbmVkVmFsdWU7
CiAgICAgICAgICAgICBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlbmVzcyA9IG1fcmFyZURhdGEt
Pm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGRbbGl2ZUNhbGxlZUxvY2Fsc0luZGV4XTsKICAgICAg
ICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgInJlc3Vt
ZSIpOwotICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICIsIHJlZ2lzdGVyTmFtZShnZW5lcmF0
b3IpLmRhdGEoKSk7CisgICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgIiwgcmVnaXN0ZXJOYW1l
KGZyYW1lKS5kYXRhKCkpOwogICAgICAgICAgICAgbGl2ZW5lc3MuZHVtcChvdXQpOwogICAgICAg
ICAgICAgb3V0LnByaW50ZigiKEBsaXZlJTF1KSIsIGxpdmVDYWxsZWVMb2NhbHNJbmRleCk7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICBjYXNlIG9wX25ld19nZW5lcmF0
b3JfZnJhbWU6IHsKKyAgICAgICAgICAgIGludCBkc3QgPSAoKytpdCktPnUub3BlcmFuZDsKKyAg
ICAgICAgICAgIHVuc2lnbmVkIGdlbmVyYXRvckxvY2Fsc1NpemUgPSAoKytpdCktPnUudW5zaWdu
ZWRWYWx1ZTsKKyAgICAgICAgICAgIHByaW50TG9jYXRpb25PcEFuZFJlZ2lzdGVyT3BlcmFuZChv
dXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgIm5ld19nZW5lcmF0b3JfZnJhbWUiLCBkc3QpOworICAg
ICAgICAgICAgb3V0LnByaW50ZigiICV1IiwgZ2VuZXJhdG9yTG9jYWxzU2l6ZSk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2Fzc2VydDogewogICAgICAg
ICAgICAgaW50IGNvbmRpdGlvbiA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50
IGxpbmUgPSAoKytpdCktPnUub3BlcmFuZDsKQEAgLTE4NzAsNiArMTg3NywxMiBAQCB2b2lkIENv
ZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBDb3B5UGFyc2VkQmxvY2tUYWcsIENvZGVC
bG9jayYgb3RoZXIpCiAgICAgc2V0TnVtUGFyYW1ldGVycyh1bmxpbmtlZENvZGVCbG9jay0+bnVt
UGFyYW1ldGVycygpKTsKIH0KIAorc3RydWN0IEdlbmVyYXRvclBvaW50cyB7CisgICAgc2l6ZV90
IHNhdmVQb2ludDsKKyAgICBzaXplX3QgbWVyZ2VQb2ludDsKKyAgICBzaXplX3QgcmVzdW1lUG9p
bnQ7Cit9OworCiB2b2lkIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRF
eGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGlua2VkQ29kZUJsb2NrKiB1bmxpbmtlZENv
ZGVCbG9jaywKICAgICBKU1Njb3BlKiBzY29wZSkKIHsKQEAgLTE5ODYsOSArMTk5OSwxMCBAQCB2
b2lkIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBv
d25lckV4ZWN1dGFibGUsIFVubGluawogICAgIEhhc2hTZXQ8SlNNb2R1bGVFbnZpcm9ubWVudCo+
IHN0cm9uZ2x5UmVmZXJlbmNlZE1vZHVsZUVudmlyb25tZW50czsKIAogICAgIC8vIEJvb2trZWVw
IHRoZSBtZXJnZSBwb2ludCBieXRlY29kZSBvZmZzZXRzLgotICAgIFZlY3RvcjxzaXplX3Q+IG1l
cmdlUG9pbnRCeXRlY29kZU9mZnNldHM7CisgICAgVmVjdG9yPEdlbmVyYXRvclBvaW50cz4gZ2Vu
ZXJhdG9yUG9pbnRzVmVjdG9yOwogCiAgICAgUmVmQ291bnRlZEFycmF5PEluc3RydWN0aW9uPiBp
bnN0cnVjdGlvbnMoaW5zdHJ1Y3Rpb25Db3VudCk7CisgICAgdW5zaWduZWQgbmV3R2VuZXJhdG9y
RnJhbWVJbnN0cnVjdGlvbk9mZnNldCA9IDA7CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyAh
aW5zdHJ1Y3Rpb25SZWFkZXIuYXRFbmQoKTsgKSB7CiAgICAgICAgIGNvbnN0IFVubGlua2VkSW5z
dHJ1Y3Rpb24qIHBjID0gaW5zdHJ1Y3Rpb25SZWFkZXIubmV4dCgpOwpAQCAtMjI3MSw5ICsyMjg1
LDIzIEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1
dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAgICAgIGNhc2Ugb3Bfc2F2ZTogewog
ICAgICAgICAgICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gcGNbMl0udS5pbmRl
eDsKICAgICAgICAgICAgIGludCBvZmZzZXQgPSBwY1szXS51Lm9wZXJhbmQ7Ci0gICAgICAgICAg
ICBpZiAobGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID49IG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldHMu
c2l6ZSgpKQotICAgICAgICAgICAgICAgIG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldHMucmVzaXpl
KGxpdmVDYWxsZWVMb2NhbHNJbmRleCArIDEpOwotICAgICAgICAgICAgbWVyZ2VQb2ludEJ5dGVj
b2RlT2Zmc2V0c1tsaXZlQ2FsbGVlTG9jYWxzSW5kZXhdID0gaSArIG9mZnNldDsKKyAgICAgICAg
ICAgIGlmIChsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPj0gZ2VuZXJhdG9yUG9pbnRzVmVjdG9yLnNp
emUoKSkKKyAgICAgICAgICAgICAgICBnZW5lcmF0b3JQb2ludHNWZWN0b3IucmVzaXplKGxpdmVD
YWxsZWVMb2NhbHNJbmRleCArIDEpOworICAgICAgICAgICAgZ2VuZXJhdG9yUG9pbnRzVmVjdG9y
W2xpdmVDYWxsZWVMb2NhbHNJbmRleF0uc2F2ZVBvaW50ID0gaTsKKyAgICAgICAgICAgIGdlbmVy
YXRvclBvaW50c1ZlY3RvcltsaXZlQ2FsbGVlTG9jYWxzSW5kZXhdLm1lcmdlUG9pbnQgPSBpICsg
b2Zmc2V0OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBjYXNlIG9w
X3Jlc3VtZTogeworICAgICAgICAgICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0g
cGNbMl0udS5pbmRleDsKKyAgICAgICAgICAgIGlmIChsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPj0g
Z2VuZXJhdG9yUG9pbnRzVmVjdG9yLnNpemUoKSkKKyAgICAgICAgICAgICAgICBnZW5lcmF0b3JQ
b2ludHNWZWN0b3IucmVzaXplKGxpdmVDYWxsZWVMb2NhbHNJbmRleCArIDEpOworICAgICAgICAg
ICAgZ2VuZXJhdG9yUG9pbnRzVmVjdG9yW2xpdmVDYWxsZWVMb2NhbHNJbmRleF0ucmVzdW1lUG9p
bnQgPSBpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBjYXNlIG9w
X25ld19nZW5lcmF0b3JfZnJhbWU6IHsKKyAgICAgICAgICAgIG5ld0dlbmVyYXRvckZyYW1lSW5z
dHJ1Y3Rpb25PZmZzZXQgPSBpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIApAQCAt
MjI4MywyNSArMjMxMSwzMSBAQCB2b2lkIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZt
LCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGluawogICAgICAgICBpICs9
IG9wTGVuZ3RoOwogICAgIH0KIAotICAgIGlmICh2bS5jb250cm9sRmxvd1Byb2ZpbGVyKCkpCi0g
ICAgICAgIGluc2VydEJhc2ljQmxvY2tCb3VuZGFyaWVzRm9yQ29udHJvbEZsb3dQcm9maWxlcihp
bnN0cnVjdGlvbnMpOwotCiAgICAgbV9pbnN0cnVjdGlvbnMgPSBXVEZNb3ZlKGluc3RydWN0aW9u
cyk7CiAKICAgICAvLyBQZXJmb3JtIGJ5dGVjb2RlIGxpdmVuZXNzIGFuYWx5c2lzIHRvIGRldGVy
bWluZSB3aGljaCBsb2NhbHMgYXJlIGxpdmUgYW5kIHNob3VsZCBiZSByZXN1bWVkIHdoZW4gZXhl
Y3V0aW5nIG9wX3Jlc3VtZS4KICAgICBpZiAodW5saW5rZWRDb2RlQmxvY2stPnBhcnNlTW9kZSgp
ID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yQm9keU1vZGUpIHsKLSAgICAgICAgaWYgKHNp
emVfdCBjb3VudCA9IG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldHMuc2l6ZSgpKSB7CisgICAgICAg
IHVuc2lnbmVkIG1heEdlbmVyYXRvckxvY2Fsc1NpemUgPSAwOworICAgICAgICBpZiAoc2l6ZV90
IGNvdW50ID0gZ2VuZXJhdG9yUG9pbnRzVmVjdG9yLnNpemUoKSkgewogICAgICAgICAgICAgY3Jl
YXRlUmFyZURhdGFJZk5lY2Vzc2FyeSgpOwotICAgICAgICAgICAgQnl0ZWNvZGVMaXZlbmVzc0Fu
YWx5c2lzIGxpdmVuZXNzKHRoaXMpOwogICAgICAgICAgICAgbV9yYXJlRGF0YS0+bV9saXZlQ2Fs
bGVlTG9jYWxzQXRZaWVsZC5ncm93KGNvdW50KTsKLSAgICAgICAgICAgIHNpemVfdCBsaXZlQ2Fs
bGVlTG9jYWxzSW5kZXggPSAwOwotICAgICAgICAgICAgZm9yIChzaXplX3QgYnl0ZWNvZGVPZmZz
ZXQgOiBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXRzKSB7Ci0gICAgICAgICAgICAgICAgbV9yYXJl
RGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZFtsaXZlQ2FsbGVlTG9jYWxzSW5kZXhdID0g
bGl2ZW5lc3MuZ2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCk7
Ci0gICAgICAgICAgICAgICAgKytsaXZlQ2FsbGVlTG9jYWxzSW5kZXg7CisKKyAgICAgICAgICAg
IEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcyBsaXZlbmVzcyh0aGlzLCBCeXRlY29kZUFuYWx5c2lz
TW9kZTo6RXh0cmFjdEdlbmVyYXRvckxpdmVDYWxsZWVMb2NhbHMpOworICAgICAgICAgICAgZm9y
IChzaXplX3QgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gMDsgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4
IDwgZ2VuZXJhdG9yUG9pbnRzVmVjdG9yLnNpemUoKTsgKytsaXZlQ2FsbGVlTG9jYWxzSW5kZXgp
IHsKKyAgICAgICAgICAgICAgICBjb25zdCBHZW5lcmF0b3JQb2ludHMmIHBvaW50cyA9IGdlbmVy
YXRvclBvaW50c1ZlY3RvcltsaXZlQ2FsbGVlTG9jYWxzSW5kZXhdOworICAgICAgICAgICAgICAg
IHNpemVfdCBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXQgPSBwb2ludHMubWVyZ2VQb2ludDsKKyAg
ICAgICAgICAgICAgICBGYXN0Qml0VmVjdG9yIGxpdmVuZXNzVmVjdG9yID0gbGl2ZW5lc3MuZ2V0
TGl2ZW5lc3NJbmZvQXRCeXRlY29kZU9mZnNldChtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXQpOwor
ICAgICAgICAgICAgICAgIG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGRbbGl2
ZUNhbGxlZUxvY2Fsc0luZGV4XSA9IGxpdmVuZXNzVmVjdG9yOworICAgICAgICAgICAgICAgIG1h
eEdlbmVyYXRvckxvY2Fsc1NpemUgPSBzdGQ6Om1heDx1bnNpZ25lZD4obWF4R2VuZXJhdG9yTG9j
YWxzU2l6ZSwgbGl2ZW5lc3NWZWN0b3IuYml0Q291bnQoKSk7CiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0KKyAgICAgICAgLy8gRmlsbCBvcF9uZXdfZ2VuZXJhdG9yX2ZyYW1lJ3Mgc2l6ZS4KKyAg
ICAgICAgbV9pbnN0cnVjdGlvbnNbbmV3R2VuZXJhdG9yRnJhbWVJbnN0cnVjdGlvbk9mZnNldCAr
IDJdLnUudW5zaWduZWRWYWx1ZSA9IG1heEdlbmVyYXRvckxvY2Fsc1NpemU7CiAgICAgfQogCisg
ICAgaWYgKHZtLmNvbnRyb2xGbG93UHJvZmlsZXIoKSkKKyAgICAgICAgaW5zZXJ0QmFzaWNCbG9j
a0JvdW5kYXJpZXNGb3JDb250cm9sRmxvd1Byb2ZpbGVyKG1faW5zdHJ1Y3Rpb25zKTsKKwogICAg
IC8vIFNldCBvcHRpbWl6YXRpb24gdGhyZXNob2xkcyBvbmx5IGFmdGVyIG1faW5zdHJ1Y3Rpb25z
IGlzIGluaXRpYWxpemVkLCBzaW5jZSB0aGVzZQogICAgIC8vIHJlbHkgb24gdGhlIGluc3RydWN0
aW9uIGNvdW50IChhbmQgYXJlIGluIHRoZW9yeSBwZXJtaXR0ZWQgdG8gYWxzbyBpbnNwZWN0IHRo
ZQogICAgIC8vIGluc3RydWN0aW9uIHN0cmVhbSB0byBtb3JlIGFjY3VyYXRlIGFzc2VzcyB0aGUg
Y29zdCBvZiB0aWVyLXVwKS4KQEAgLTQxNTAsNyArNDE4NCw3IEBAIFZhbHVlUHJvZmlsZSogQ29k
ZUJsb2NrOjp2YWx1ZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChpbnQgYnl0ZWNvZGVPZmZzZXQp
CiAKIHZvaWQgQ29kZUJsb2NrOjp2YWxpZGF0ZSgpCiB7Ci0gICAgQnl0ZWNvZGVMaXZlbmVzc0Fu
YWx5c2lzIGxpdmVuZXNzKHRoaXMpOyAvLyBDb21wdXRlIGRpcmVjdGx5IGZyb20gc2NyYXRjaCBz
byBpdCBkb2Vzbid0IGVmZmVjdCBDb2RlQmxvY2sgZm9vdHByaW50LgorICAgIEJ5dGVjb2RlTGl2
ZW5lc3NBbmFseXNpcyBsaXZlbmVzcyh0aGlzLCBCeXRlY29kZUFuYWx5c2lzTW9kZTo6U3RhbmRh
cmQpOyAvLyBDb21wdXRlIGRpcmVjdGx5IGZyb20gc2NyYXRjaCBzbyBpdCBkb2Vzbid0IGVmZmVj
dCBDb2RlQmxvY2sgZm9vdHByaW50LgogICAgIAogICAgIEZhc3RCaXRWZWN0b3IgbGl2ZUF0SGVh
ZCA9IGxpdmVuZXNzLmdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQoMCk7CiAgICAgCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKaW5kZXggYzM4NTY2MDhi
NDllZThlYWRiNmRjMTA5OTE3MjhkMTFiNTFmNGVkOS4uYmEyOTY0MDlkNTc0Yjk3YWJlYjBiNWNi
MWVhY2E5MTYxNDE1ZTk3ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suaApAQCAtNTk4LDcgKzU5OCw3IEBAIGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBKU0Nl
bGwgewogICAgICAgICAgICAgICAgIHJldHVybiAqbV9saXZlbmVzc0FuYWx5c2lzOwogICAgICAg
ICB9CiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM+IGFu
YWx5c2lzID0KLSAgICAgICAgICAgIHN0ZDo6bWFrZV91bmlxdWU8Qnl0ZWNvZGVMaXZlbmVzc0Fu
YWx5c2lzPih0aGlzKTsKKyAgICAgICAgICAgIHN0ZDo6bWFrZV91bmlxdWU8Qnl0ZWNvZGVMaXZl
bmVzc0FuYWx5c2lzPih0aGlzLCBCeXRlY29kZUFuYWx5c2lzTW9kZTo6U3RhbmRhcmQpOwogICAg
ICAgICB7CiAgICAgICAgICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihtX2xvY2spOwog
ICAgICAgICAgICAgaWYgKCFtX2xpdmVuZXNzQW5hbHlzaXMpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHMuY3BwCmluZGV4IGUyY2Iw
MDA0ODM3OTRiYTkyZDUxMGRjZjVmYTk5NDg4NWEyM2RjM2QuLmIwMjk4ZTQzMTM4ZWMwZjRmZmY5
M2E0N2EyYThmNWEwZmY2ODRjODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHMuY3BwCkBAIC0zMSw3ICszMSw3IEBACiBuYW1l
c3BhY2UgSlNDIHsKIAogdGVtcGxhdGUgPHNpemVfdCB2ZWN0b3JTaXplPgotc3RhdGljIHZvaWQg
Z2V0SnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgSW50
ZXJwcmV0ZXIqIGludGVycHJldGVyLCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVu
c2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBWZWN0b3I8dW5zaWduZWQsIHZlY3RvclNpemU+JiBvdXQp
CitzdGF0aWMgdm9pZCBnZXRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayog
Y29kZUJsb2NrLCBCeXRlY29kZUFuYWx5c2lzTW9kZSBieXRlY29kZUFuYWx5c2lzTW9kZSwgSW50
ZXJwcmV0ZXIqIGludGVycHJldGVyLCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVu
c2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBWZWN0b3I8dW5zaWduZWQsIHZlY3RvclNpemU+JiBvdXQp
CiB7CiAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoaW5z
dHJ1Y3Rpb25zQmVnaW5bYnl0ZWNvZGVPZmZzZXRdLnUub3Bjb2RlKTsKICAgICBJbnN0cnVjdGlv
biogY3VycmVudCA9IGluc3RydWN0aW9uc0JlZ2luICsgYnl0ZWNvZGVPZmZzZXQ7CkBAIC01NCw5
ICs1NCwxNCBAQCBzdGF0aWMgdm9pZCBnZXRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KENv
ZGVCbG9jayogY29kZUJsb2NrLCBJbnRlcnByZXRlciogaQogICAgIGNhc2Ugb3Bfam5sZXNzZXE6
CiAgICAgY2FzZSBvcF9qbmdyZWF0ZXI6CiAgICAgY2FzZSBvcF9qbmdyZWF0ZXJlcToKLSAgICBj
YXNlIG9wX3NhdmU6IC8vIFRoZSBqdW1wIG9mIG9wX3NhdmUgaXMgcHVyZWx5IGZvciBjYWxjdWxh
dGluZyBsaXZlbmVzcy4KICAgICAgICAgb3V0LmFwcGVuZChieXRlY29kZU9mZnNldCArIGN1cnJl
bnRbM10udS5vcGVyYW5kKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBvcF9zYXZlOiB7Cisg
ICAgICAgIC8vIFRoZSBqdW1wIG9mIG9wX3NhdmUgdW5kZXIgRXh0cmFjdEdlbmVyYXRvckxpdmVD
YWxsZWVMb2NhbHMgbW9kZSBpcyBwdXJlbHkgZm9yIGNhbGN1bGF0aW5nIGxpdmVuZXNzLgorICAg
ICAgICBpZiAoYnl0ZWNvZGVBbmFseXNpc01vZGUgPT0gQnl0ZWNvZGVBbmFseXNpc01vZGU6OkV4
dHJhY3RHZW5lcmF0b3JMaXZlQ2FsbGVlTG9jYWxzKQorICAgICAgICAgICAgb3V0LmFwcGVuZChi
eXRlY29kZU9mZnNldCArIGN1cnJlbnRbM10udS5vcGVyYW5kKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQogICAgIGNhc2Ugb3Bfc3dpdGNoX2ltbToKICAgICBjYXNlIG9wX3N3aXRjaF9jaGFyOiB7
CiAgICAgICAgIFNpbXBsZUp1bXBUYWJsZSYgdGFibGUgPSBjb2RlQmxvY2stPnN3aXRjaEp1bXBU
YWJsZShjdXJyZW50WzFdLnUub3BlcmFuZCk7CkBAIC04Miw3ICs4Nyw3IEBAIHN0YXRpYyB2b2lk
IGdldEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIElu
dGVycHJldGVyKiBpCiAgICAgfQogfQogCi12b2lkIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMo
Q29kZUJsb2NrKiBjb2RlQmxvY2ssIFZlY3Rvcjx1bnNpZ25lZCwgMzI+JiBvdXQpCit2b2lkIGNv
bXB1dGVQcmVjaXNlSnVtcFRhcmdldHMoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQW5h
bHlzaXNNb2RlIGJ5dGVjb2RlQW5hbHlzaXNNb2RlLCBWZWN0b3I8dW5zaWduZWQsIDMyPiYgb3V0
KQogewogICAgIEFTU0VSVChvdXQuaXNFbXB0eSgpKTsKICAgICAKQEAgLTEwMiw3ICsxMDcsNyBA
QCB2b2lkIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFZl
Y3Rvcjx1bnNpZ25lZCwgMzI+JiBvdXQpCiAgICAgdW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCA9
IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpOwogICAgIGZvciAodW5zaWduZWQgYnl0
ZWNvZGVPZmZzZXQgPSAwOyBieXRlY29kZU9mZnNldCA8IGluc3RydWN0aW9uQ291bnQ7KSB7CiAg
ICAgICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGluc3Ry
dWN0aW9uc0JlZ2luW2J5dGVjb2RlT2Zmc2V0XS51Lm9wY29kZSk7Ci0gICAgICAgIGdldEp1bXBU
YXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoY29kZUJsb2NrLCBpbnRlcnByZXRlciwgaW5zdHJ1Y3Rp
b25zQmVnaW4sIGJ5dGVjb2RlT2Zmc2V0LCBvdXQpOworICAgICAgICBnZXRKdW1wVGFyZ2V0c0Zv
ckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9jaywgYnl0ZWNvZGVBbmFseXNpc01vZGUsIGludGVycHJl
dGVyLCBpbnN0cnVjdGlvbnNCZWdpbiwgYnl0ZWNvZGVPZmZzZXQsIG91dCk7CiAgICAgICAgIGJ5
dGVjb2RlT2Zmc2V0ICs9IG9wY29kZUxlbmd0aHNbb3Bjb2RlSURdOwogICAgIH0KICAgICAKQEAg
LTEyMywxMSArMTI4LDExIEBAIHZvaWQgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgVmVjdG9yPHVuc2lnbmVkLCAzMj4mIG91dCkKICAgICBvdXQuc2hyaW5r
VG9GaXQoKTsKIH0KIAotdm9pZCBmaW5kSnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChDb2Rl
QmxvY2sqIGNvZGVCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIFZlY3Rvcjx1bnNpZ25l
ZCwgMT4mIG91dCkKK3ZvaWQgZmluZEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJs
b2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQW5hbHlzaXNNb2RlIGJ5dGVjb2RlQW5hbHlzaXNNb2Rl
LCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgVmVjdG9yPHVuc2lnbmVkLCAxPiYgb3V0KQogewog
ICAgIEludGVycHJldGVyKiBpbnRlcnByZXRlciA9IGNvZGVCbG9jay0+dm0oKS0+aW50ZXJwcmV0
ZXI7CiAgICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luID0gY29kZUJsb2NrLT5pbnN0
cnVjdGlvbnMoKS5iZWdpbigpOwotICAgIGdldEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQo
Y29kZUJsb2NrLCBpbnRlcnByZXRlciwgaW5zdHJ1Y3Rpb25zQmVnaW4sIGJ5dGVjb2RlT2Zmc2V0
LCBvdXQpOworICAgIGdldEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoY29kZUJsb2NrLCBi
eXRlY29kZUFuYWx5c2lzTW9kZSwgaW50ZXJwcmV0ZXIsIGluc3RydWN0aW9uc0JlZ2luLCBieXRl
Y29kZU9mZnNldCwgb3V0KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmgKaW5kZXggODUy
NDEzZDc3Yjc5ODk4NGIyN2NlZjBlZDYyYmM5NGM2ODllMjEyYy4uNTgwYTc5MjUzMjZiNzQ1MzQz
YmQzODExYTdjNWExMThhOThmZmQyNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHMuaApAQCAtMzEsOSArMzEsOSBAQAogbmFtZXNw
YWNlIEpTQyB7CiAKIC8vIFJldHVybiBhIHNvcnRlZCBsaXN0IG9mIGJ5dGVjb2RlIGluZGV4IHRo
YXQgYXJlIHRoZSBkZXN0aW5hdGlvbiBvZiBhIGp1bXAuCi12b2lkIGNvbXB1dGVQcmVjaXNlSnVt
cFRhcmdldHMoQ29kZUJsb2NrKiwgVmVjdG9yPHVuc2lnbmVkLCAzMj4mIG91dCk7Cit2b2lkIGNv
bXB1dGVQcmVjaXNlSnVtcFRhcmdldHMoQ29kZUJsb2NrKiwgQnl0ZWNvZGVBbmFseXNpc01vZGUs
IFZlY3Rvcjx1bnNpZ25lZCwgMzI+JiBvdXQpOwogCi12b2lkIGZpbmRKdW1wVGFyZ2V0c0ZvckJ5
dGVjb2RlT2Zmc2V0KENvZGVCbG9jayosIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBWZWN0b3I8
dW5zaWduZWQsIDE+JiBvdXQpOwordm9pZCBmaW5kSnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNl
dChDb2RlQmxvY2sqLCBCeXRlY29kZUFuYWx5c2lzTW9kZSwgdW5zaWduZWQgYnl0ZWNvZGVPZmZz
ZXQsIFZlY3Rvcjx1bnNpZ25lZCwgMT4mIG91dCk7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVH
ZW5lcmF0b3IuY3BwCmluZGV4IDdiNGIwODNhN2FiY2YxNDQwZGUyZWM5NWVhYmU2YzhlOWI5Y2Rm
MDcuLjdjZDgyM2JhYjBiZDIyMzJlMDEyZjBkNTk5NDg0M2I4M2ZmMjBlM2UgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuY3BwCkBAIC0yNTksNyArMjU5LDcgQEAgUGFyc2VyRXJyb3IgQnl0ZWNvZGVHZW5lcmF0b3I6
OmdlbmVyYXRlKCkKICAgICAgICAgLy8gICAgZnVuY3Rpb24gKmdlbihhLCBiID0gaGVsbG8oKSkK
ICAgICAgICAgLy8gICAgewogICAgICAgICAvLyAgICAgICAgcmV0dXJuIHsKLSAgICAgICAgLy8g
ICAgICAgICAgICBAZ2VuZXJhdG9yTmV4dDogZnVuY3Rpb24gKEBnZW5lcmF0b3IsIEBnZW5lcmF0
b3JTdGF0ZSwgQGdlbmVyYXRvclZhbHVlLCBAZ2VuZXJhdG9yUmVzdW1lTW9kZSkKKyAgICAgICAg
Ly8gICAgICAgICAgICBAZ2VuZXJhdG9yTmV4dDogZnVuY3Rpb24gKEBnZW5lcmF0b3IsIEBnZW5l
cmF0b3JTdGF0ZSwgQGdlbmVyYXRvclZhbHVlLCBAZ2VuZXJhdG9yUmVzdW1lTW9kZSwgQGdlbmVy
YXRvckZyYW1lKQogICAgICAgICAvLyAgICAgICAgICAgIHsKICAgICAgICAgLy8gICAgICAgICAg
ICAgICAgYXJndW1lbnRzOyAgLy8gVGhpcyBgYXJndW1lbnRzYCBzaG91bGQgcmVmZXJlbmNlIHRv
IHRoZSBnZW4ncyBhcmd1bWVudHMuCiAgICAgICAgIC8vICAgICAgICAgICAgICAgIC4uLgpAQCAt
NTMyLDYgKzUzMiw5IEBAIFBhcnNlckVycm9yIEJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZSgp
CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckJvZHlNb2RlOiB7CiAgICAgICAg
IC8vIHx0aGlzfCBpcyBhbHJlYWR5IGZpbGxlZCBjb3JyZWN0bHkgYmVmb3JlIGhlcmUuCiAgICAg
ICAgIGVtaXRMb2FkKG1fbmV3VGFyZ2V0UmVnaXN0ZXIsIGpzVW5kZWZpbmVkKCkpOworCisgICAg
ICAgIGVtaXROZXdHZW5lcmF0b3JGcmFtZShnZW5lcmF0b3JGcmFtZVJlZ2lzdGVyKCkpOworICAg
ICAgICBlbWl0UHV0QnlJZChnZW5lcmF0b3JSZWdpc3RlcigpLCBwcm9wZXJ0eU5hbWVzKCkuZ2Vu
ZXJhdG9yRnJhbWVQcml2YXRlTmFtZSwgZ2VuZXJhdG9yRnJhbWVSZWdpc3RlcigpKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQogCkBAIC0yOTAzLDYgKzI5MDYsMTQgQEAgdm9pZCBCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdFNldEZ1bmN0aW9uTmFtZUlmTmVlZGVkKEV4cHJlc3Npb25Ob2RlKiB2YWx1
ZU5vZGUsIFIKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobmFtZS0+aW5kZXgoKSk7CiB9CiAK
K1JlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3R2VuZXJhdG9yRnJhbWUoUmVn
aXN0ZXJJRCogZHN0KQoreworICAgIGVtaXRPcGNvZGUob3BfbmV3X2dlbmVyYXRvcl9mcmFtZSk7
CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGRzdC0+aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rp
b25zKCkuYXBwZW5kKDApOworICAgIHJldHVybiBkc3Q7Cit9CisKIFJlZ2lzdGVySUQqIEJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0Q2FsbChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGZ1bmMs
IEV4cGVjdGVkRnVuY3Rpb24gZXhwZWN0ZWRGdW5jdGlvbiwgQ2FsbEFyZ3VtZW50cyYgY2FsbEFy
Z3VtZW50cywgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlv
biYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKQogewogICAgIHJl
dHVybiBlbWl0Q2FsbChvcF9jYWxsLCBkc3QsIGZ1bmMsIGV4cGVjdGVkRnVuY3Rpb24sIGNhbGxB
cmd1bWVudHMsIGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCk7CkBAIC00MzQ5LDcgKzQzNjAs
NyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0U2F2ZShMYWJlbCogbWVyZ2VQb2ludCwg
dW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZAogewogICAgIHNpemVfdCBiZWdpbiA9IGluc3Ry
dWN0aW9ucygpLnNpemUoKTsKICAgICBlbWl0T3Bjb2RlKG9wX3NhdmUpOwotICAgIGluc3RydWN0
aW9ucygpLmFwcGVuZChtX2dlbmVyYXRvclJlZ2lzdGVyLT5pbmRleCgpKTsKKyAgICBpbnN0cnVj
dGlvbnMoKS5hcHBlbmQoZ2VuZXJhdG9yRnJhbWVSZWdpc3RlcigpLT5pbmRleCgpKTsKICAgICBp
bnN0cnVjdGlvbnMoKS5hcHBlbmQobGl2ZUNhbGxlZUxvY2Fsc0luZGV4KTsKICAgICBpbnN0cnVj
dGlvbnMoKS5hcHBlbmQobWVyZ2VQb2ludC0+YmluZChiZWdpbiwgaW5zdHJ1Y3Rpb25zKCkuc2l6
ZSgpKSk7CiB9CkBAIC00MzU4LDcgKzQzNjksNyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0UmVzdW1lKExhYmVsKiBtZXJnZVBvaW50LCB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSQog
ewogICAgIGVtaXRHZW5lcmF0b3JTdGF0ZUxhYmVsKCk7CiAgICAgZW1pdE9wY29kZShvcF9yZXN1
bWUpOwotICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChtX2dlbmVyYXRvclJlZ2lzdGVyLT5pbmRl
eCgpKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZ2VuZXJhdG9yRnJhbWVSZWdpc3Rlcigp
LT5pbmRleCgpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobGl2ZUNhbGxlZUxvY2Fsc0lu
ZGV4KTsKICAgICBlbWl0TGFiZWwobWVyZ2VQb2ludCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5kZXggMGZh
OTA4MTcwMTQ5OTcyMjE3NzZmYWVhNzJjMDFlZDRhOTQ5NTA4OC4uYjFhZjEzMDMzNDk1MmZlNWE0
NDgxMzUxYjEyNTcwMjY0ZjliNGUyMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAtNTMwLDYgKzUzMCw3IEBA
CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdBcnJvd0Z1bmN0aW9uRXhwcmVzc2lvbihSZWdp
c3RlcklEKiwgQXJyb3dGdW5jRXhwck5vZGUqKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdE5l
d01ldGhvZERlZmluaXRpb24oUmVnaXN0ZXJJRCogZHN0LCBNZXRob2REZWZpbml0aW9uTm9kZSop
OwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0TmV3UmVnRXhwKFJlZ2lzdGVySUQqIGRzdCwgUmVn
RXhwKik7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdHZW5lcmF0b3JGcmFtZShSZWdpc3Rl
cklEKiBkc3QpOwogCiAgICAgICAgIHZvaWQgZW1pdFNldEZ1bmN0aW9uTmFtZUlmTmVlZGVkKEV4
cHJlc3Npb25Ob2RlKiB2YWx1ZU5vZGUsIFJlZ2lzdGVySUQqIHZhbHVlLCBSZWdpc3RlcklEKiBu
YW1lKTsKIApAQCAtNjk1LDYgKzY5Niw3IEBACiAgICAgICAgIFJlZ2lzdGVySUQqIGdlbmVyYXRv
clN0YXRlUmVnaXN0ZXIoKSB7IHJldHVybiAmbV9wYXJhbWV0ZXJzWzJdOyB9CiAgICAgICAgIFJl
Z2lzdGVySUQqIGdlbmVyYXRvclZhbHVlUmVnaXN0ZXIoKSB7IHJldHVybiAmbV9wYXJhbWV0ZXJz
WzNdOyB9CiAgICAgICAgIFJlZ2lzdGVySUQqIGdlbmVyYXRvclJlc3VtZU1vZGVSZWdpc3Rlcigp
IHsgcmV0dXJuICZtX3BhcmFtZXRlcnNbNF07IH0KKyAgICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJh
dG9yRnJhbWVSZWdpc3RlcigpIHsgcmV0dXJuICZtX3BhcmFtZXRlcnNbNV07IH0KIAogICAgICAg
ICBDb2RlVHlwZSBjb2RlVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZVR5cGU7IH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEhlYXAuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RIZWFwLmgKaW5kZXggYWZlMTBjNDk2
NDMxMjljN2IxMWU4MjBiZTQ5ZTYwNmVmNzM4OTE2NS4uNGRlYmY5MzJlOWE0YmEyZjdlNWE2ODcz
NGVhMmY5ZTgxMDAyMDc4NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdBYnN0cmFjdEhlYXAuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3Ry
YWN0SGVhcC5oCkBAIC02OSw2ICs2OSw4IEBACiAgICAgbWFjcm8oU2NvcGVQcm9wZXJ0aWVzKSBc
CiAgICAgbWFjcm8oVHlwZWRBcnJheVByb3BlcnRpZXMpIFwKICAgICBtYWNybyhIZWFwT2JqZWN0
Q291bnQpIC8qIFVzZWQgdG8gcmVmbGVjdCB0aGUgZmFjdCB0aGF0IHNvbWUgYWxsb2NhdGlvbnMg
cmV2ZWFsIG9iamVjdCBpZGVudGl0eSAqL1wKKyAgICBtYWNybyhHZW5lcmF0b3JMb2NhbHMpIFwK
KyAgICBtYWNybyhHZW5lcmF0b3JMb2NhbENvdW50KSBcCiAgICAgbWFjcm8oUmVnRXhwU3RhdGUp
IFwKICAgICBtYWNybyhNYXRoRG90UmFuZG9tU3RhdGUpIFwKICAgICBtYWNybyhJbnRlcm5hbFN0
YXRlKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0
SW50ZXJwcmV0ZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3Ry
YWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKaW5kZXggNDVkYTJjMjEyN2M0Mzg4MzE5Nzc0NzEyZjZj
NDY4NzNmMWQ0Yjc3YS4uNjIxZWUwNTYyNmY0YTk4OGFiYTg3MzBhMDlkNjAyNTk0YWRiNzJhMiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJl
dGVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJ
bnRlcnByZXRlcklubGluZXMuaApAQCAtMTg0OCw2ICsxODQ4LDEwIEBACiAgICAgY2FzZSBOZXdS
ZWdleHA6CiAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyktPnJlZ0V4cFN0cnVjdHVyZSgpKTsKICAg
ICAgICAgYnJlYWs7CisKKyAgICBjYXNlIE5ld0dlbmVyYXRvckZyYW1lOgorICAgICAgICBmb3JO
b2RlKG5vZGUpLnNldChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpLT5nZW5lcmF0b3JGcmFtZVN0cnVjdHVyZSgpKTsKKyAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICAKICAgICBjYXNlIFRvVGhpczogewogICAgICAgICBBYnN0cmFjdFZhbHVl
JiBzb3VyY2UgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKTsKQEAgLTI3NTQsNiArMjc1OCwxNyBA
QAogICAgICAgICBmb3JOb2RlKG5vZGUpLm1ha2VIZWFwVG9wKCk7CiAgICAgICAgIGJyZWFrOwog
CisgICAgY2FzZSBTZXRHZW5lcmF0b3JMb2NhbDoKKyAgICBjYXNlIFJlc2l6ZUdlbmVyYXRvckxv
Y2FsczoKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIEdldEdlbmVyYXRvckxvY2FsOiB7Cisg
ICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYXR0ZW1wdCB0byBjb252ZXJ0IGl0IHRvIGNvbnN0
YW50LgorICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTUzMTgzCisgICAgICAgIGZvck5vZGUobm9kZSkubWFrZUJ5dGVjb2RlVG9wKCk7CisgICAgICAg
IGJyZWFrOworICAgIH0KKwogICAgIGNhc2UgRm9yY2VPU1JFeGl0OgogICAgIGNhc2UgQ2hlY2tC
YWRDZWxsOgogICAgICAgICBtX3N0YXRlLnNldElzVmFsaWQoZmFsc2UpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRleCAzMTEyNTdhMzhm
MTJlZjBiZDJmMjAxYjk5MWQ4ZTk4NDFjZmU4MTY4Li4wMzc2MWZhMWNmMjVkOGI5NTlhMWNlNmI1
YWJkMGJiZmZhYzE1ZTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5
dGVDb2RlUGFyc2VyLmNwcApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIkRGR0NhcGFiaWxp
dGllcy5oIgogI2luY2x1ZGUgIkRGR0Nsb2JiZXJpemUuaCIKICNpbmNsdWRlICJERkdDbG9iYmVy
c0V4aXRTdGF0ZS5oIgorI2luY2x1ZGUgIkRGR0dlbmVyYXRvckxvY2FsRGF0YS5oIgogI2luY2x1
ZGUgIkRGR0dyYXBoLmgiCiAjaW5jbHVkZSAiREZHSklUQ29kZS5oIgogI2luY2x1ZGUgIkdldEJ5
SWRTdGF0dXMuaCIKQEAgLTk3MCw2ICs5NzEsMTEgQEAgY2xhc3MgQnl0ZUNvZGVQYXJzZXIgewog
ICAgIH0KIAogICAgIGJvb2wgbmVlZHNEeW5hbWljTG9va3VwKFJlc29sdmVUeXBlLCBPcGNvZGVJ
RCk7CisKKyAgICBHZW5lcmF0b3JMb2NhbERhdGEqIG5ld0dlbmVyYXRvckxvY2FsRGF0YSgpCisg
ICAgeworICAgICAgICByZXR1cm4gbV9ncmFwaC5tX2dlbmVyYXRvckxvY2FsRGF0YS5hZGQoKTsK
KyAgICB9CiAgICAgCiAgICAgVk0qIG1fdm07CiAgICAgQ29kZUJsb2NrKiBtX2NvZGVCbG9jazsK
QEAgLTEwNTgsNiArMTA2NCwxMSBAQCBjbGFzcyBCeXRlQ29kZVBhcnNlciB7CiAgICAgICAgIENh
bGxMaW5rSW5mb01hcCBtX2NhbGxMaW5rSW5mb3M7CiAgICAgICAgIFN0dWJJbmZvTWFwIG1fc3R1
YkluZm9zOwogICAgICAgICBCeVZhbEluZm9NYXAgbV9ieVZhbEluZm9zOworCisgICAgICAgIC8v
IFNpbmNlIHRoZSBvcF9yZXN1bWUgaXMgZW1pdHRlZCBhZnRlciB0aGUgY29ycmVzcG9uZGluZyBv
cF9zYXZlCisgICAgICAgIC8vIGFuZCB0aGVyZSBpcyBubyBvdGhlciBvcF9yZXN1bWUgYW5kIG9w
X3NhdmUgYmV0d2VlbiB0aGVtLAorICAgICAgICAvLyB3ZSBjYW4gdHJhY2sgdGhlc2UgY29ycmVz
cG9uZGVuY2UgYnkganVzdCB0cmFja2luZyBjdXJyZW50bHkgZm9jdXNpbmcgb3Bfc2F2ZS4KKyAg
ICAgICAgT3BlcmFuZHM8R2VuZXJhdG9yTG9jYWxEYXRhKj4gbV9nZW5lcmF0b3JMb2NhbHM7CiAg
ICAgICAgIAogICAgICAgICAvLyBEaWQgd2Ugc2VlIGFueSByZXR1cm5zPyBXZSBuZWVkIHRvIGhh
bmRsZSB0aGUgKHVuY29tbW9uIGJ1dCBuZWNlc3NhcnkpCiAgICAgICAgIC8vIGNhc2Ugd2hlcmUg
YSBwcm9jZWR1cmUgdGhhdCBkb2VzIG5vdCByZXR1cm4gd2FzIGlubGluZWQuCkBAIC0zNTIxLDYg
KzM1MzIsMTEgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1p
dCkKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX25ld19yZWdleHApOwogICAgICAgICB9CiAK
KyAgICAgICAgY2FzZSBvcF9uZXdfZ2VuZXJhdG9yX2ZyYW1lOiB7CisgICAgICAgICAgICBzZXQo
VmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpLCBhZGRUb0dy
YXBoKE5ld0dlbmVyYXRvckZyYW1lLCBPcEluZm8oY3VycmVudEluc3RydWN0aW9uWzJdLnUudW5z
aWduZWRWYWx1ZSkpKTsKKyAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX25ld19nZW5lcmF0b3Jf
ZnJhbWUpOworICAgICAgICB9CisKICAgICAgICAgY2FzZSBvcF9nZXRfcmVzdF9sZW5ndGg6IHsK
ICAgICAgICAgICAgIElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lID0gdGhpcy0+aW5s
aW5lQ2FsbEZyYW1lKCk7CiAgICAgICAgICAgICBOb2RlKiBsZW5ndGg7CkBAIC0zNTQ4LDYgKzM1
NjQsNDEgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkK
ICAgICAgICAgICAgICAgICBhcnJheSwgYXJyYXlMZW5ndGgpOwogICAgICAgICAgICAgTkVYVF9P
UENPREUob3BfY29weV9yZXN0KTsKICAgICAgICAgfQorCisgICAgICAgIGNhc2Ugb3Bfc2F2ZTog
eworICAgICAgICAgICAgTm9kZSogZnJhbWUgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJ
bnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGxpdmVDYWxs
ZWVMb2NhbHNJbmRleCA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51LnVuc2lnbmVkVmFsdWU7Cisg
ICAgICAgICAgICBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlbmVzcyA9IG1faW5saW5lU3RhY2tU
b3AtPm1fY29kZUJsb2NrLT5saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZChsaXZlQ2FsbGVlTG9jYWxz
SW5kZXgpOworCisgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2dlbmVyYXRvckxvY2Fs
cyA9IE9wZXJhbmRzPEdlbmVyYXRvckxvY2FsRGF0YSo+KG1fbnVtQXJndW1lbnRzLCBtX251bUxv
Y2Fscyk7CisKKyAgICAgICAgICAgIGFkZFRvR3JhcGgoUmVzaXplR2VuZXJhdG9yTG9jYWxzLCBP
cEluZm8obGl2ZW5lc3MuYml0Q291bnQoKSksIGZyYW1lKTsKKyAgICAgICAgICAgIHVuc2lnbmVk
IGdlbmVyYXRvckxvY2FsSW5kZXggPSAwOworICAgICAgICAgICAgbGl2ZW5lc3MuZm9yRWFjaFNl
dEJpdChbJl0oc2l6ZV90IGluZGV4KSB7CisgICAgICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVy
IG9wZXJhbmQgPSB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChpbmRleCk7CisgICAgICAgICAgICAg
ICAgVmlydHVhbFJlZ2lzdGVyIHJlbWFwcGVkT3BlcmFuZCA9IG1faW5saW5lU3RhY2tUb3AtPnJl
bWFwT3BlcmFuZChvcGVyYW5kKTsKKyAgICAgICAgICAgICAgICBOb2RlKiBsb2NhbCA9IGdldChv
cGVyYW5kKTsKKyAgICAgICAgICAgICAgICBHZW5lcmF0b3JMb2NhbERhdGEqIGdlbmVyYXRvckxv
Y2FsRGF0YSA9IG5ld0dlbmVyYXRvckxvY2FsRGF0YSgpOworICAgICAgICAgICAgICAgIG1faW5s
aW5lU3RhY2tUb3AtPm1fZ2VuZXJhdG9yTG9jYWxzLmxvY2FsKHJlbWFwcGVkT3BlcmFuZC50b0xv
Y2FsKCkpID0gZ2VuZXJhdG9yTG9jYWxEYXRhOworICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgo
U2V0R2VuZXJhdG9yTG9jYWwsIE9wSW5mbyhnZW5lcmF0b3JMb2NhbEluZGV4KyspLCBPcEluZm8o
Z2VuZXJhdG9yTG9jYWxEYXRhKSwgZnJhbWUsIGxvY2FsKTsKKyAgICAgICAgICAgIH0pOworICAg
ICAgICAgICAgTkVYVF9PUENPREUob3Bfc2F2ZSk7CisgICAgICAgIH0KKworICAgICAgICBjYXNl
IG9wX3Jlc3VtZTogeworICAgICAgICAgICAgTm9kZSogZnJhbWUgPSBnZXQoVmlydHVhbFJlZ2lz
dGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpKTsKKyAgICAgICAgICAgIHVuc2ln
bmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51LnVuc2ln
bmVkVmFsdWU7CisgICAgICAgICAgICBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlbmVzcyA9IG1f
aW5saW5lU3RhY2tUb3AtPm1fY29kZUJsb2NrLT5saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZChsaXZl
Q2FsbGVlTG9jYWxzSW5kZXgpOworICAgICAgICAgICAgdW5zaWduZWQgZ2VuZXJhdG9yTG9jYWxJ
bmRleCA9IDA7CisgICAgICAgICAgICBsaXZlbmVzcy5mb3JFYWNoU2V0Qml0KFsmXShzaXplX3Qg
aW5kZXgpIHsKKyAgICAgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCA9IHZpcnR1
YWxSZWdpc3RlckZvckxvY2FsKGluZGV4KTsKKyAgICAgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0
ZXIgcmVtYXBwZWRPcGVyYW5kID0gbV9pbmxpbmVTdGFja1RvcC0+cmVtYXBPcGVyYW5kKG9wZXJh
bmQpOworICAgICAgICAgICAgICAgIEdlbmVyYXRvckxvY2FsRGF0YSogZ2VuZXJhdG9yTG9jYWxE
YXRhID0gbV9pbmxpbmVTdGFja1RvcC0+bV9nZW5lcmF0b3JMb2NhbHMubG9jYWwocmVtYXBwZWRP
cGVyYW5kLnRvTG9jYWwoKSk7CisgICAgICAgICAgICAgICAgc2V0KG9wZXJhbmQsIGFkZFRvR3Jh
cGgoR2V0R2VuZXJhdG9yTG9jYWwsIE9wSW5mbyhnZW5lcmF0b3JMb2NhbEluZGV4KyspLCBPcElu
Zm8oZ2VuZXJhdG9yTG9jYWxEYXRhKSwgZnJhbWUpKTsKKyAgICAgICAgICAgIH0pOworICAgICAg
ICAgICAgYWRkVG9HcmFwaChSZXNpemVHZW5lcmF0b3JMb2NhbHMsIE9wSW5mbygwKSwgZnJhbWUp
OworICAgICAgICAgICAgTkVYVF9PUENPREUob3BfcmVzdW1lKTsKKyAgICAgICAgfQogICAgICAg
ICAgICAgCiAgICAgICAgIC8vID09PSBCaXR3aXNlIG9wZXJhdGlvbnMgPT09CiAKQEAgLTUxNTAs
NyArNTIwMSw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQ29kZUJsb2NrKCkKICAgICB9
CiAgICAgCiAgICAgVmVjdG9yPHVuc2lnbmVkLCAzMj4ganVtcFRhcmdldHM7Ci0gICAgY29tcHV0
ZVByZWNpc2VKdW1wVGFyZ2V0cyhjb2RlQmxvY2ssIGp1bXBUYXJnZXRzKTsKKyAgICBjb21wdXRl
UHJlY2lzZUp1bXBUYXJnZXRzKGNvZGVCbG9jaywgQnl0ZWNvZGVBbmFseXNpc01vZGU6OlN0YW5k
YXJkLCBqdW1wVGFyZ2V0cyk7CiAgICAgaWYgKE9wdGlvbnM6OmR1bXBCeXRlY29kZUF0REZHVGlt
ZSgpKSB7CiAgICAgICAgIGRhdGFMb2coIkp1bXAgdGFyZ2V0czogIik7CiAgICAgICAgIENvbW1h
UHJpbnRlciBjb21tYTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0
aWVzLmNwcAppbmRleCA3MzcwMTM4N2U0ZTRhY2RlY2QxYmNhZDc2MmQyYjBhNzMwMDQ3NDFiLi5i
OWVkNjE2NzQ3MjJkMDIzYmIyNzk3MzNmYWE1Mjg5ZTFiYmVjYzJlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCkBAIC0xODQsNiArMTg0LDcgQEAg
Q2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbChPcGNvZGVJRCBvcGNvZGVJRCwgQ29kZUJs
b2NrKiBjb2RlQmxvY2ssIEluc3RydWMKICAgICBjYXNlIG9wX25ld19hcnJheToKICAgICBjYXNl
IG9wX25ld19hcnJheV93aXRoX3NpemU6CiAgICAgY2FzZSBvcF9uZXdfYXJyYXlfYnVmZmVyOgor
ICAgIGNhc2Ugb3BfbmV3X2dlbmVyYXRvcl9mcmFtZToKICAgICBjYXNlIG9wX3N0cmNhdDoKICAg
ICBjYXNlIG9wX3RvX3ByaW1pdGl2ZToKICAgICBjYXNlIG9wX3Rocm93OgpAQCAtMjMyLDYgKzIz
Myw4IEBAIENhcGFiaWxpdHlMZXZlbCBjYXBhYmlsaXR5TGV2ZWwoT3Bjb2RlSUQgb3Bjb2RlSUQs
IENvZGVCbG9jayogY29kZUJsb2NrLCBJbnN0cnVjCiAgICAgY2FzZSBvcF9sb2dfc2hhZG93X2No
aWNrZW5fdGFpbDoKICAgICBjYXNlIG9wX3B1dF90b19zY29wZToKICAgICBjYXNlIG9wX3Jlc29s
dmVfc2NvcGU6CisgICAgY2FzZSBvcF9zYXZlOgorICAgIGNhc2Ugb3BfcmVzdW1lOgogICAgICAg
ICByZXR1cm4gQ2FuQ29tcGlsZUFuZElubGluZTsKIAogICAgIGNhc2Ugb3BfbmV3X3JlZ2V4cDoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKaW5kZXggMmUwNTI4YTI0
YmRhNGEyODc2YjUwNTNlNzkzMjEyOTVkYTIzNDkxMS4uOTYyM2UzNGFhZmRlOWFiODI2Mjc3OTFh
YThjMzlmNmFmNjc4YzczNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDbG9iYmVyaXplLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVy
aXplLmgKQEAgLTEwODUsNiArMTA4NSw3IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgs
IE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAKICAg
ICBjYXNlIE5ld09iamVjdDoKICAgICBjYXNlIE5ld1JlZ2V4cDoKKyAgICBjYXNlIE5ld0dlbmVy
YXRvckZyYW1lOgogICAgIGNhc2UgTmV3U3RyaW5nT2JqZWN0OgogICAgIGNhc2UgUGhhbnRvbU5l
d09iamVjdDoKICAgICBjYXNlIE1hdGVyaWFsaXplTmV3T2JqZWN0OgpAQCAtMTE3OCw2ICsxMTc5
LDIzIEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJl
YWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CisKKyAgICBj
YXNlIFNldEdlbmVyYXRvckxvY2FsOiB7CisgICAgICAgIHJlYWQoR2VuZXJhdG9yTG9jYWxDb3Vu
dCk7CisgICAgICAgIHdyaXRlKEdlbmVyYXRvckxvY2Fscyk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBjYXNlIEdldEdlbmVyYXRvckxvY2FsOiB7CisgICAgICAgIHJlYWQoR2VuZXJh
dG9yTG9jYWxDb3VudCk7CisgICAgICAgIHJlYWQoR2VuZXJhdG9yTG9jYWxzKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIGNhc2UgUmVzaXplR2VuZXJhdG9yTG9jYWxzOiB7CisgICAg
ICAgIHdyaXRlKEdlbmVyYXRvckxvY2FsQ291bnQpOworICAgICAgICByZXR1cm47CisgICAgfQog
ICAgICAgICAKICAgICBjYXNlIFRocm93UmVmZXJlbmNlRXJyb3I6CiAgICAgICAgIHdyaXRlKFNp
ZGVTdGF0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2Ji
ZXJzRXhpdFN0YXRlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcnNF
eGl0U3RhdGUuY3BwCmluZGV4IDgwOWE0NWQ2ZjFhNjQwMTU4MTlkNzJlM2ZhNDgxZTRlYWIzMzQ3
ODIuLjZhYWZjYmZkYTM2ZTE2NDQ2ZmY3OTRlZTg0YzMwOTdlMjI1YTBhMmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcnNFeGl0U3RhdGUuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcnNFeGl0U3RhdGUuY3BwCkBAIC01
MywxMCArNTMsMTYgQEAgYm9vbCBjbG9iYmVyc0V4aXRTdGF0ZShHcmFwaCYgZ3JhcGgsIE5vZGUq
IG5vZGUpCiAgICAgICAgIC8vIGV4aXQgc3RhdGUuCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAor
ICAgIGNhc2UgUmVzaXplR2VuZXJhdG9yTG9jYWxzOgorICAgIGNhc2UgU2V0R2VuZXJhdG9yTG9j
YWw6CisgICAgY2FzZSBHZXRHZW5lcmF0b3JMb2NhbDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CiAgICAgY2FzZSBBcnJheWlmeVRvU3RydWN0dXJlOgogICAgIGNhc2UgQXJyYXlpZnk6CiAgICAg
Y2FzZSBOZXdPYmplY3Q6CiAgICAgY2FzZSBOZXdSZWdleHA6CisgICAgY2FzZSBOZXdHZW5lcmF0
b3JGcmFtZToKICAgICBjYXNlIE5ld1N0cmluZ09iamVjdDoKICAgICBjYXNlIFBoYW50b21OZXdP
YmplY3Q6CiAgICAgY2FzZSBNYXRlcmlhbGl6ZU5ld09iamVjdDoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHRG9lc0dDLmNwcAppbmRleCAyOTRmYmYxNGExYjVhYWRmYTgzOGE1ZDZjZjNiNjIy
MDYxZTA0YjExLi44Mzk2NzYzNGQ3MjUzZGMzMmJjODg1YmExODY4NGEwOGYyNzc5NmYwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCkBAIC0yNDYsNiArMjQ2LDkgQEAg
Ym9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgR2V0RHluYW1p
Y1ZhcjoKICAgICBjYXNlIFB1dER5bmFtaWNWYXI6CiAgICAgY2FzZSBSZXNvbHZlU2NvcGU6Cisg
ICAgY2FzZSBTZXRHZW5lcmF0b3JMb2NhbDoKKyAgICBjYXNlIEdldEdlbmVyYXRvckxvY2FsOgor
ICAgIGNhc2UgUmVzaXplR2VuZXJhdG9yTG9jYWxzOgogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ICAgICBjYXNlIENyZWF0ZUFjdGl2YXRpb246CkBAIC0yNjQsNiArMjY3LDcgQEAgYm9vbCBkb2Vz
R0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgTmV3QXJyYXlXaXRoU2l6ZToK
ICAgICBjYXNlIE5ld0FycmF5QnVmZmVyOgogICAgIGNhc2UgTmV3UmVnZXhwOgorICAgIGNhc2Ug
TmV3R2VuZXJhdG9yRnJhbWU6CiAgICAgY2FzZSBOZXdTdHJpbmdPYmplY3Q6CiAgICAgY2FzZSBN
YWtlUm9wZToKICAgICBjYXNlIE5ld0Z1bmN0aW9uOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRml4dXBQaGFzZS5jcHAKaW5kZXggMzQ0ODI3ZWQ2ZmFhNTkwMGFiMTg3MWEyMjc0MDQz
MDBjNGMyZDI4MS4uZjE2OWMyODY0YTBhYzcxNTUwNjdlNDA5ZjgyNGI4NGUxMzc5ZTU0MCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCkBAIC0xNDkxLDYg
KzE0OTEsMjQgQEAgY2xhc3MgRml4dXBQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogCisgICAgICAgIGNhc2UgU2V0R2VuZXJhdG9yTG9jYWw6IHsK
KyAgICAgICAgICAgIGZpeEVkZ2U8Q2VsbFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAg
ICAgc3BlY3VsYXRlRm9yQmFycmllcihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2UgR2V0R2VuZXJhdG9yTG9jYWw6IHsKKyAgICAg
ICAgICAgIGZpeEVkZ2U8Q2VsbFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgLy8g
Q3VycmVudGx5LCB3ZSBhbHdheXMgc3RvcmUgdGhlIHZhbHVlIGFzIEpTVmFsdWUgaW4gdGhlIEdl
bmVyYXRvckZyYW1lLgorICAgICAgICAgICAgbm9kZS0+c2V0UmVzdWx0KE5vZGVSZXN1bHRKUyk7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2UgUmVzaXplR2Vu
ZXJhdG9yTG9jYWxzOiB7CisgICAgICAgICAgICBmaXhFZGdlPENlbGxVc2U+KG5vZGUtPmNoaWxk
MSgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKICNpZiAhQVNTRVJUX0RJU0FC
TEVECiAgICAgICAgIC8vIEhhdmUgdGhlc2Ugbm8tb3AgY2FzZXMgaGVyZSB0byBlbnN1cmUgdGhh
dCBub2JvZHkgZm9yZ2V0cyB0byBhZGQgaGFuZGxlcnMgZm9yIG5ldyBvcGNvZGVzLgogICAgICAg
ICBjYXNlIFNldEFyZ3VtZW50OgpAQCAtMTUyNCw2ICsxNTQyLDcgQEAgY2xhc3MgRml4dXBQaGFz
ZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgIGNhc2UgTmV3T2JqZWN0OgogICAgICAgICBjYXNl
IE5ld0FycmF5QnVmZmVyOgogICAgICAgICBjYXNlIE5ld1JlZ2V4cDoKKyAgICAgICAgY2FzZSBO
ZXdHZW5lcmF0b3JGcmFtZToKICAgICAgICAgY2FzZSBQcm9maWxlV2lsbENhbGw6CiAgICAgICAg
IGNhc2UgUHJvZmlsZURpZENhbGw6CiAgICAgICAgIGNhc2UgRGVsZXRlQnlJZDoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR2VuZXJhdG9yTG9jYWxEYXRhLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dlbmVyYXRvckxvY2FsRGF0YS5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmNlYWYxYWJjMDViNzgzODU0N2MwYjdhZWJlZGZmNjA0Y2NiNWZkMTIKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dlbmVyYXRvckxvY2FsRGF0YS5o
CkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgWXVzdWtlIFN1enVr
aSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBERkdHZW5lcmF0b3JMb2NhbERhdGFfaAorI2RlZmluZSBE
RkdHZW5lcmF0b3JMb2NhbERhdGFfaAorCisjaWYgRU5BQkxFKERGR19KSVQpCisKKyNpbmNsdWRl
ICJERkdDb21tb24uaCIKKyNpbmNsdWRlICJTcGVjdWxhdGVkVHlwZS5oIgorI2luY2x1ZGUgIlZp
cnR1YWxSZWdpc3Rlci5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CisKKwor
Y2xhc3MgR2VuZXJhdG9yTG9jYWxEYXRhIHsKK3B1YmxpYzoKKyAgICBib29sIHByZWRpY3QoU3Bl
Y3VsYXRlZFR5cGUgcHJlZGljdGlvbikKKyAgICB7CisgICAgICAgIHJldHVybiBtZXJnZVNwZWN1
bGF0aW9uKG1fcHJlZGljdGlvbiwgcHJlZGljdGlvbik7CisgICAgfQorCisgICAgU3BlY3VsYXRl
ZFR5cGUgcHJlZGljdGlvbigpCisgICAgeworICAgICAgICByZXR1cm4gbV9wcmVkaWN0aW9uOwor
ICAgIH0KKworcHJpdmF0ZToKKyAgICBTcGVjdWxhdGVkVHlwZSBtX3ByZWRpY3Rpb24geyBTcGVj
Tm9uZSB9OworfTsKKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRworCisjZW5kaWYgLy8gRU5B
QkxFKERGR19KSVQpCisKKyNlbmRpZiAvLyBERkdWYXJpYWJsZUFjY2Vzc0RhdGFfaApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCmluZGV4IDQ2N2RiMGVkOWY3NTdiZGVlZDZiMGU1ZWIy
ODZjMThmZTdmYzhlY2EuLjVjOTk0MTEwMmFkYjYwYzY0Mzk2NDFmMTM5NDQ1Njg5Njg0Y2Y4MWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKQEAgLTYwLDYgKzYwLDcgQEAKIGNs
YXNzIERvbWluYXRvcnM7CiBjbGFzcyBOYXR1cmFsTG9vcHM7CiBjbGFzcyBQcmVQb3N0TnVtYmVy
aW5nOworY2xhc3MgR2VuZXJhdG9yTG9jYWxEYXRhOwogCiAjZGVmaW5lIERGR19OT0RFX0RPX1RP
X0NISUxEUkVOKGdyYXBoLCBub2RlLCB0aGluZ1RvRG8pIGRvIHsgICAgICAgICAgICBcCiAgICAg
ICAgIE5vZGUqIF9ub2RlID0gKG5vZGUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCkBAIC04NjgsNiArODY5LDcgQEAgY2xhc3MgR3JhcGggOiBwdWJsaWMgdmly
dHVhbCBTY2FubmFibGUgewogICAgIEJhZzxDYWxsVmFyYXJnc0RhdGE+IG1fY2FsbFZhcmFyZ3NE
YXRhOwogICAgIEJhZzxMb2FkVmFyYXJnc0RhdGE+IG1fbG9hZFZhcmFyZ3NEYXRhOwogICAgIEJh
ZzxTdGFja0FjY2Vzc0RhdGE+IG1fc3RhY2tBY2Nlc3NEYXRhOworICAgIEJhZzxHZW5lcmF0b3JM
b2NhbERhdGE+IG1fZ2VuZXJhdG9yTG9jYWxEYXRhOwogICAgIEJhZzxMYXp5SlNWYWx1ZT4gbV9s
YXp5SlNWYWx1ZXM7CiAgICAgVmVjdG9yPElubGluZVZhcmlhYmxlRGF0YSwgND4gbV9pbmxpbmVW
YXJpYWJsZURhdGE7CiAgICAgSGFzaE1hcDxDb2RlQmxvY2sqLCBzdGQ6OnVuaXF1ZV9wdHI8RnVs
bEJ5dGVjb2RlTGl2ZW5lc3M+PiBtX2J5dGVjb2RlTGl2ZW5lc3M7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdNYXlFeGl0LmNwcAppbmRleCA1YzVjNjBlYmM4YmNiNGIyMDBlMzVkZmRmNGRj
NDIwNmMxNTBmOWU4Li40MmQwZmE0MmMxNmY1M2VjZDNjODkyY2ZhMTA1MjZkNzBkNTg5YzUwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAKQEAgLTEzMiw2ICsxMzIs
OSBAQCBFeGl0TW9kZSBtYXlFeGl0KEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNl
IFB1dEJ5T2Zmc2V0OgogICAgIGNhc2UgUHV0Q2xvc3VyZVZhcjoKICAgICBjYXNlIFJlY29yZFJl
Z0V4cENhY2hlZFJlc3VsdDoKKyAgICBjYXNlIFJlc2l6ZUdlbmVyYXRvckxvY2FsczoKKyAgICBj
YXNlIFNldEdlbmVyYXRvckxvY2FsOgorICAgIGNhc2UgR2V0R2VuZXJhdG9yTG9jYWw6CiAgICAg
ICAgIGJyZWFrOwogCiAgICAgY2FzZSBTdHJDYXQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR05vZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZS5oCmluZGV4IGJhYjFjMzUzZmNlNjQ5MjEzZGRkYzU2Njg5NTgxMzU5NDE1Mjc5MDguLjYyNDU2
Y2I3ZWNlNGVhZDBjNTZhNDkzMzEzMGI0NDAxN2VmOTBhNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTm9kZS5oCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiREZHQXJyYXlNb2RlLmgi
CiAjaW5jbHVkZSAiREZHQ29tbW9uLmgiCiAjaW5jbHVkZSAiREZHRXBvY2guaCIKKyNpbmNsdWRl
ICJERkdHZW5lcmF0b3JMb2NhbERhdGEuaCIKICNpbmNsdWRlICJERkdMYXp5SlNWYWx1ZS5oIgog
I2luY2x1ZGUgIkRGR011bHRpR2V0QnlPZmZzZXREYXRhLmgiCiAjaW5jbHVkZSAiREZHTm9kZUZs
YWdzLmgiCkBAIC05MDIsMTIgKzkwMyw3OCBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgICAgIH0KICAg
ICB9CiAKKyAgICBib29sIGhhc0dlbmVyYXRvckxvY2Fsc1NpemUoKQorICAgIHsKKyAgICAgICAg
c3dpdGNoIChvcCgpKSB7CisgICAgICAgIGNhc2UgTmV3R2VuZXJhdG9yRnJhbWU6CisgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIHVuc2lnbmVkIGdldFB1dEluZm8oKQogICAg
IHsKICAgICAgICAgQVNTRVJUKGhhc0dldFB1dEluZm8oKSk7CiAgICAgICAgIHJldHVybiBtX29w
SW5mbzI7CiAgICAgfQogCisgICAgdW5zaWduZWQgZ2VuZXJhdG9yTG9jYWxzU2l6ZSgpCisgICAg
eworICAgICAgICBBU1NFUlQoaGFzR2VuZXJhdG9yTG9jYWxzU2l6ZSgpKTsKKyAgICAgICAgcmV0
dXJuIG1fb3BJbmZvOworICAgIH0KKworICAgIGJvb2wgaGFzR2VuZXJhdG9yTG9jYWxJbmRleCgp
CisgICAgeworICAgICAgICBzd2l0Y2ggKG9wKCkpIHsKKyAgICAgICAgY2FzZSBTZXRHZW5lcmF0
b3JMb2NhbDoKKyAgICAgICAgY2FzZSBHZXRHZW5lcmF0b3JMb2NhbDoKKyAgICAgICAgICAgIHJl
dHVybiB0cnVlOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICB9CisgICAgfQorCisgICAgdW5zaWduZWQgZ2VuZXJhdG9yTG9jYWxJbmRleCgpCisg
ICAgeworICAgICAgICBBU1NFUlQoaGFzR2VuZXJhdG9yTG9jYWxJbmRleCgpKTsKKyAgICAgICAg
cmV0dXJuIG1fb3BJbmZvOworICAgIH0KKworICAgIGJvb2wgaGFzR2VuZXJhdG9yTG9jYWxEYXRh
KCkKKyAgICB7CisgICAgICAgIHN3aXRjaCAob3AoKSkgeworICAgICAgICBjYXNlIFNldEdlbmVy
YXRvckxvY2FsOgorICAgICAgICBjYXNlIEdldEdlbmVyYXRvckxvY2FsOgorICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICBHZW5lcmF0b3JMb2NhbERhdGEqIGdlbmVyYXRvckxv
Y2FsRGF0YSgpCisgICAgeworICAgICAgICBBU1NFUlQoaGFzR2VuZXJhdG9yTG9jYWxEYXRhKCkp
OworICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxHZW5lcmF0b3JMb2NhbERhdGEqPiht
X29wSW5mbzIpOworICAgIH0KKworICAgIGJvb2wgaGFzR2VuZXJhdG9yRnJhbWVMb2NhbHMoKQor
ICAgIHsKKyAgICAgICAgc3dpdGNoIChvcCgpKSB7CisgICAgICAgIGNhc2UgUmVzaXplR2VuZXJh
dG9yTG9jYWxzOgorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB1bnNpZ25l
ZCBnZW5lcmF0b3JGcmFtZUxvY2FscygpCisgICAgeworICAgICAgICBBU1NFUlQoaGFzR2VuZXJh
dG9yRnJhbWVMb2NhbHMoKSk7CisgICAgICAgIHJldHVybiBtX29wSW5mbzsKKyAgICB9CisKICAg
ICBib29sIGhhc0FjY2Vzc29yQXR0cmlidXRlcygpCiAgICAgewogICAgICAgICBzd2l0Y2ggKG9w
KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAppbmRleCA1MjlmNTcx
NmVjZjEwNWNmNDVhN2M1NDI1MDEwOGQ2Y2QyOWU0YzU4Li41NjQ2YjNlOWYyMTQ2Mjk1ZmY5OGY4
ZGNhNjUyODQyYmY5MGMzYWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR05vZGVUeXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlw
ZS5oCkBAIC04Miw2ICs4MiwxMCBAQAogICAgIG1hY3JvKEZsdXNoLCBOb2RlTXVzdEdlbmVyYXRl
KSBcCiAgICAgbWFjcm8oUGhhbnRvbUxvY2FsLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgXAor
ICAgIG1hY3JvKFNldEdlbmVyYXRvckxvY2FsLCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgbWFj
cm8oR2V0R2VuZXJhdG9yTG9jYWwsIE5vZGVSZXN1bHRKUykgXAorICAgIG1hY3JvKFJlc2l6ZUdl
bmVyYXRvckxvY2FscywgTm9kZU11c3RHZW5lcmF0ZSkgXAorICAgIFwKICAgICAvKiBIaW50IHRo
YXQgdGhpcyBpcyB3aGVyZSBieXRlY29kZSB0aGlua3MgaXMgYSBnb29kIHBsYWNlIHRvIE9TUi4g
Tm90ZSB0aGF0IHRoaXMgKi9cCiAgICAgLyogd2lsbCBleGlzdCBldmVuIGluIGlubGluZWQgbG9v
cHMuIFRoaXMgaGFzIG5vIGV4ZWN1dGlvbiBzZW1hbnRpY3MgYnV0IGl0IG11c3QgKi9cCiAgICAg
Lyogc3Vydml2ZSBhbGwgRENFLiBXZSB0cmVhdCB0aGlzIGFzIGJlaW5nIGEgY2FuLWV4aXQgYmVj
YXVzZSB0aWVyLXVwIHRvIEZUTCBtYXkgKi9cCkBAIC0yODIsNiArMjg2LDcgQEAKICAgICBtYWNy
byhOZXdBcnJheUJ1ZmZlciwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oTmV3VHlwZWRBcnJh
eSwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKE5ld1JlZ2V4
cCwgTm9kZVJlc3VsdEpTKSBcCisgICAgbWFjcm8oTmV3R2VuZXJhdG9yRnJhbWUsIE5vZGVSZXN1
bHRKUykgXAogICAgIC8qIFJlc3QgUGFyYW1ldGVyICovXAogICAgIG1hY3JvKEdldFJlc3RMZW5n
dGgsIE5vZGVSZXN1bHRJbnQzMikgXAogICAgIG1hY3JvKENvcHlSZXN0LCBOb2RlTXVzdEdlbmVy
YXRlKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlv
bnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAppbmRl
eCBhZGIxOGJjZGExODczZjEwMmVlYjE4YWZlMzgxODY4OTU4MmYzYzQ2Li5mNTY5NzUxZTYxZDZk
ZTk5MmEyMzBlMDBmNjJmNTY2MDY3YjQ3YTkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT3BlcmF0aW9ucy5jcHAKQEAgLTQyLDggKzQyLDkgQEAKICNpbmNsdWRlICJEaXJlY3RB
cmd1bWVudHMuaCIKICNpbmNsdWRlICJGVExGb3JPU1JFbnRyeUpJVENvZGUuaCIKICNpbmNsdWRl
ICJGVExPU1JFbnRyeS5oIgotI2luY2x1ZGUgIkhvc3RDYWxsUmV0dXJuVmFsdWUuaCIKKyNpbmNs
dWRlICJHZW5lcmF0b3JGcmFtZS5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgorI2luY2x1
ZGUgIkhvc3RDYWxsUmV0dXJuVmFsdWUuaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogI2lu
Y2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUgIkpJVEV4Y2VwdGlvbnMuaCIKQEAgLTkzNSw2ICs5MzYs
MTEgQEAgY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdGbG9hdDY0QXJyYXlXaXRoT25l
QXJndW1lbnQoCiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdl
bmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHM8SlNGbG9hdDY0QXJyYXk+KGV4ZWMsIHN0
cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAwLCBOdWxsb3B0KSk7CiB9CiAKK2NoYXIqIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uTmV3R2VuZXJhdG9yRnJhbWUoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBudW1iZXJPZkNhbGxlZUxvY2FscykKK3sKKyAgICByZXR1
cm4gYml0d2lzZV9jYXN0PGNoYXIqPihHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlKGV4ZWMtPnZtKCks
IHN0cnVjdHVyZSwgbnVtYmVyT2ZDYWxsZWVMb2NhbHMpKTsKK30KKwogSlNDZWxsKiBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbkNyZWF0ZUFjdGl2YXRpb25EaXJlY3QoRXhlY1N0YXRlKiBleGVjLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNTY29wZSogc2NvcGUsIFN5bWJvbFRhYmxlKiB0YWJsZSwg
RW5jb2RlZEpTVmFsdWUgaW5pdGlhbFZhbHVlRW5jb2RlZCkKIHsKICAgICBKU1ZhbHVlIGluaXRp
YWxWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShpbml0aWFsVmFsdWVFbmNvZGVkKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKaW5kZXggNzkyNjJmZjdkOTk0NDkxZDc0
MDU5Y2IwODllMWM0NWFiMmIzOTgwMS4uMWE2MzIyMTA4NjAzYzYwODJlYTFhNGM5ZjI1MDM0MmM3
NzlhYjY5ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRp
b25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKQEAg
LTgzLDYgKzgzLDcgQEAKIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3RmxvYXQzMkFy
cmF5V2l0aE9uZUFyZ3VtZW50KEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSosIEVuY29kZWRKU1ZhbHVl
KSBXVEZfSU5URVJOQUw7CiBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Zsb2F0NjRB
cnJheVdpdGhTaXplKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSosIGludDMyX3QpIFdURl9JTlRFUk5B
TDsKIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3RmxvYXQ2NEFycmF5V2l0aE9uZUFy
Z3VtZW50KEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSosIEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5URVJO
QUw7CitjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0dlbmVyYXRvckZyYW1lKEV4ZWNT
dGF0ZSosIFN0cnVjdHVyZSosIGludDMyX3QpIFdURl9JTlRFUk5BTDsKIHZvaWQgSklUX09QRVJB
VElPTiBvcGVyYXRpb25QdXRCeVZhbFN0cmljdChFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFByb3BlcnR5LCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkVmFsdWUpIFdURl9JTlRFUk5BTDsKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRp
b25QdXRCeVZhbE5vblN0cmljdChFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFz
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFByb3BlcnR5LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUpIFdURl9JTlRFUk5BTDsKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZh
bENlbGxTdHJpY3QoRXhlY1N0YXRlKiwgSlNDZWxsKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFBy
b3BlcnR5LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpIFdURl9JTlRFUk5BTDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9u
UGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFn
YXRpb25QaGFzZS5jcHAKaW5kZXggZjA5ZGM1NDFlZjAwNjEzNDU1NGQ5MWZlNDQyZjJkZjg1OTA3
NDk3My4uNGQ3Y2NmMWFlNzc4NWZmNjZlYTc4N2M0Y2JmNjE2OTM0ZTRhNGE3YyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFz
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFn
YXRpb25QaGFzZS5jcHAKQEAgLTE2OCw2ICsxNjgsMjQgQEAgY2xhc3MgUHJlZGljdGlvblByb3Bh
Z2F0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KIAorICAgICAgICBjYXNlIFNldEdlbmVyYXRvckxvY2FsOiB7CisgICAgICAgICAgICBHZW5l
cmF0b3JMb2NhbERhdGEqIGdlbmVyYXRvckxvY2FsRGF0YSA9IG5vZGUtPmdlbmVyYXRvckxvY2Fs
RGF0YSgpOworICAgICAgICAgICAgY2hhbmdlZCB8PSBnZW5lcmF0b3JMb2NhbERhdGEtPnByZWRp
Y3Qobm9kZS0+Y2hpbGQyKCktPnByZWRpY3Rpb24oKSk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQorCisgICAgICAgIGNhc2UgR2V0R2VuZXJhdG9yTG9jYWw6IHsKKyAgICAgICAgICAg
IEdlbmVyYXRvckxvY2FsRGF0YSogZ2VuZXJhdG9yTG9jYWxEYXRhID0gbm9kZS0+Z2VuZXJhdG9y
TG9jYWxEYXRhKCk7CisgICAgICAgICAgICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uID0gZ2Vu
ZXJhdG9yTG9jYWxEYXRhLT5wcmVkaWN0aW9uKCk7CisgICAgICAgICAgICAvLyBXZSBhbHdheXMg
c3RvcmUgdGhlIHZhbHVlIGluIEdlbmVyYXRvckxvY2FsIGFzIEZvcm1hdEpTVmFsdWUuCisgICAg
ICAgICAgICAvLyBTbyBkb3VibGUgdmFsdWUgaXMgYmV0dGVyIHRoYW4gSW50NTIgdmFsdWUuCisg
ICAgICAgICAgICBpZiAocHJlZGljdGlvbiAmIFNwZWNJbnQ1MikKKyAgICAgICAgICAgICAgICBw
cmVkaWN0aW9uID0gKHByZWRpY3Rpb24gfCBTcGVjSW50NTJBc0RvdWJsZSkgJiB+U3BlY0ludDUy
OworICAgICAgICAgICAgaWYgKHByZWRpY3Rpb24pCisgICAgICAgICAgICAgICAgY2hhbmdlZCB8
PSBtZXJnZVByZWRpY3Rpb24ocHJlZGljdGlvbik7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgfQorCiAgICAgICAgIGNhc2UgVUludDMyVG9OdW1iZXI6IHsKICAgICAgICAgICAgIGlmIChu
b2RlLT5jYW5TcGVjdWxhdGVJbnQzMihtX3Bhc3MpKQogICAgICAgICAgICAgICAgIGNoYW5nZWQg
fD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNJbnQzMik7CkBAIC04MjYsNyArODQ0LDggQEAgY2xhc3Mg
UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIAotICAgICAgICBjYXNlIENyZWF0ZUFjdGl2
YXRpb246IHsKKyAgICAgICAgY2FzZSBDcmVhdGVBY3RpdmF0aW9uOgorICAgICAgICBjYXNlIE5l
d0dlbmVyYXRvckZyYW1lOiB7CiAgICAgICAgICAgICBzZXRQcmVkaWN0aW9uKFNwZWNPYmplY3RP
dGhlcik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMTA0MSw2ICsxMDYwLDcg
QEAgY2xhc3MgUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAg
ICAgICBjYXNlIExvYWRWYXJhcmdzOgogICAgICAgICBjYXNlIENvcHlSZXN0OgogICAgICAgICBj
YXNlIFB1dER5bmFtaWNWYXI6CisgICAgICAgIGNhc2UgUmVzaXplR2VuZXJhdG9yTG9jYWxzOgog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICAgICAgLy8gVGhpcyBnZXRzIGln
bm9yZWQgYmVjYXVzZSBpdCBvbmx5IHByZXRlbmRzIHRvIHByb2R1Y2UgYSB2YWx1ZS4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKaW5kZXggYTg4Y2E1ZDVl
Y2FmNzYyMTU1NTY2OThjM2E0NTllY2VhNDJiZmEwMC4uY2JkOWZjMDdlMjk2ZDlkYTYyYzQyNjQ4
N2JkNTNiNTJjYzcxZDZhZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTYWZlVG9FeGVjdXRlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZl
VG9FeGVjdXRlLmgKQEAgLTI0NSw2ICsyNDUsNyBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJh
Y3RTdGF0ZVR5cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBO
ZXdBcnJheVdpdGhTaXplOgogICAgIGNhc2UgTmV3QXJyYXlCdWZmZXI6CiAgICAgY2FzZSBOZXdS
ZWdleHA6CisgICAgY2FzZSBOZXdHZW5lcmF0b3JGcmFtZToKICAgICBjYXNlIFByb2ZpbGVXaWxs
Q2FsbDoKICAgICBjYXNlIFByb2ZpbGVEaWRDYWxsOgogICAgIGNhc2UgUHJvZmlsZVR5cGU6CkBA
IC0zNDIsNiArMzQzLDkgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBz
dGF0ZSwgR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgR2V0TXlBcmd1bWVudEJ5
VmFsT3V0T2ZCb3VuZHM6CiAgICAgY2FzZSBGb3J3YXJkVmFyYXJnczoKICAgICBjYXNlIENvcHlS
ZXN0OgorICAgIGNhc2UgU2V0R2VuZXJhdG9yTG9jYWw6CisgICAgY2FzZSBHZXRHZW5lcmF0b3JM
b2NhbDoKKyAgICBjYXNlIFJlc2l6ZUdlbmVyYXRvckxvY2FsczoKICAgICBjYXNlIFN0cmluZ1Jl
cGxhY2U6CiAgICAgY2FzZSBHZXRSZWdFeHBPYmplY3RMYXN0SW5kZXg6CiAgICAgY2FzZSBTZXRS
ZWdFeHBPYmplY3RMYXN0SW5kZXg6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4IGEzZDBlNTYxZDU3NWZiMDE0OGU2OGJhNzRjM2M4ZTI4
Mzg1MTE3YzAuLjI4ZGYzZTIyOTllOGY3MTQ0ZTY3Njc1YWRmNTlhZGRiYjczMWVlM2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC0z
OCw2ICszOCw3IEBACiAjaW5jbHVkZSAiREZHU2FuZVN0cmluZ0dldEJ5VmFsU2xvd1BhdGhHZW5l
cmF0b3IuaCIKICNpbmNsdWRlICJERkdTbG93UGF0aEdlbmVyYXRvci5oIgogI2luY2x1ZGUgIkRp
cmVjdEFyZ3VtZW50cy5oIgorI2luY2x1ZGUgIkdlbmVyYXRvckZyYW1lLmgiCiAjaW5jbHVkZSAi
SklUQWRkR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiSklUQml0QW5kR2VuZXJhdG9yLmgiCiAjaW5j
bHVkZSAiSklUQml0T3JHZW5lcmF0b3IuaCIKQEAgLTY3OTgsNiArNjc5OSw0MiBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlTmV3U3RyaW5nT2JqZWN0KE5vZGUqIG5vZGUpCiAgICAgY2Vs
bFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogfQogCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlTmV3R2VuZXJhdG9yRnJhbWUoTm9kZSogbm9kZSkKK3sKKyAgICBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0ID0gbV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKTsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdsb2JhbE9iamVjdC0+Z2Vu
ZXJhdG9yRnJhbWVTdHJ1Y3R1cmUoKTsKKyAgICB1bnNpZ25lZCBnZW5lcmF0b3JMb2NhbHNTaXpl
ID0gbm9kZS0+Z2VuZXJhdG9yTG9jYWxzU2l6ZSgpOworCisgICAgR1BSVGVtcG9yYXJ5IHJlc3Vs
dCh0aGlzKTsKKyAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaDEodGhpcyk7CisgICAgR1BSVGVtcG9y
YXJ5IHNjcmF0Y2gyKHRoaXMpOworCisgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIo
KTsKKyAgICBHUFJSZWcgc2NyYXRjaDFHUFIgPSBzY3JhdGNoMS5ncHIoKTsKKyAgICBHUFJSZWcg
c2NyYXRjaDJHUFIgPSBzY3JhdGNoMi5ncHIoKTsKKworICAgIEpJVENvbXBpbGVyOjpKdW1wTGlz
dCBzbG93UGF0aDsKKworICAgIGVtaXRBbGxvY2F0ZUpTT2JqZWN0V2l0aEtub3duU2l6ZTxHZW5l
cmF0b3JGcmFtZT4ocmVzdWx0R1BSLCBUcnVzdGVkSW1tUHRyKHN0cnVjdHVyZSksIFRydXN0ZWRJ
bW1QdHIobnVsbHB0ciksIHNjcmF0Y2gxR1BSLCBzY3JhdGNoMkdQUiwgc2xvd1BhdGgsIEdlbmVy
YXRvckZyYW1lOjphbGxvY2F0aW9uU2l6ZUZvckxvY2FscyhnZW5lcmF0b3JMb2NhbHNTaXplKSk7
CisgICAgbV9qaXQuc3RvcmUzMihUcnVzdGVkSW1tMzIoZ2VuZXJhdG9yTG9jYWxzU2l6ZSksIEpJ
VENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgR2VuZXJhdG9yRnJhbWU6Om51bWJlck9mQ2Fs
bGVlTG9jYWxzT2Zmc2V0KCkpKTsKKyAgICBtX2ppdC5zdG9yZTMyKFRydXN0ZWRJbW0zMigwKSwg
SklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBHZW5lcmF0b3JGcmFtZTo6bnVtYmVyT2ZT
YXZlZENhbGxlZUxvY2Fsc09mZnNldCgpKSk7CisgICAgSlNWYWx1ZSBlbXB0eVZhbHVlOworICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBnZW5lcmF0b3JMb2NhbHNTaXplOyArK2kpCisgICAg
ICAgIG1faml0LnN0b3JlVHJ1c3RlZFZhbHVlKGVtcHR5VmFsdWUsIEpJVENvbXBpbGVyOjpBZGRy
ZXNzKHJlc3VsdEdQUiwgR2VuZXJhdG9yRnJhbWU6OmxvY2FsT2Zmc2V0KGkpKSk7CisKKyAgICBh
ZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd1BhdGgsIHRoaXMsIG9wZXJhdGlv
bk5ld0dlbmVyYXRvckZyYW1lLCByZXN1bHRHUFIsIHN0cnVjdHVyZSwgZ2VuZXJhdG9yTG9jYWxz
U2l6ZSkpOworCisgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOworfQorCit2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlUmVzaXplR2VuZXJhdG9yTG9jYWxzKE5vZGUqIG5vZGUpCit7
CisgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgZnJhbWUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwor
ICAgIEdQUlJlZyBmcmFtZUdQUiA9IGZyYW1lLmdwcigpOworICAgIG1faml0LnN0b3JlMzIoVHJ1
c3RlZEltbTMyKG5vZGUtPmdlbmVyYXRvckZyYW1lTG9jYWxzKCkpLCBKSVRDb21waWxlcjo6QWRk
cmVzcyhmcmFtZUdQUiwgR2VuZXJhdG9yRnJhbWU6Om51bWJlck9mU2F2ZWRDYWxsZWVMb2NhbHNP
ZmZzZXQoKSkpOworICAgIG5vUmVzdWx0KG5vZGUpOworfQorCiB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlTmV3VHlwZWRBcnJheShOb2RlKiBub2RlKQogewogICAgIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QgPSBtX2ppdC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5oCmluZGV4IDU3YzIzZjY5ZDEzMTc4NmEzMDgzN2YxMmFhYmQ5NzhjNzFjYTBjNTEuLjM5
MjFiYmEyNjc4MDBiN2FmZmUxYzAyYWUzMjdmNmY0ZTY4ZTE2OGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKQEAgLTI0OTEsNiArMjQ5MSw4IEBA
IGNsYXNzIFNwZWN1bGF0aXZlSklUIHsKICAgICB2b2lkIGNvbXBpbGVQdXRCeVZhbEZvckZsb2F0
VHlwZWRBcnJheShHUFJSZWcgYmFzZSwgR1BSUmVnIHByb3BlcnR5LCBOb2RlKiwgVHlwZWRBcnJh
eVR5cGUpOwogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDbGFzc1R5cGU+IHZvaWQgY29tcGlsZU5l
d0Z1bmN0aW9uQ29tbW9uKEdQUlJlZywgU3RydWN0dXJlKiwgR1BSUmVnLCBHUFJSZWcsIEdQUlJl
ZywgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0Jiwgc2l6ZV90LCBGdW5jdGlvbkV4ZWN1dGFibGUq
LCBwdHJkaWZmX3QsIHB0cmRpZmZfdCwgcHRyZGlmZl90KTsKICAgICB2b2lkIGNvbXBpbGVOZXdG
dW5jdGlvbihOb2RlKik7CisgICAgdm9pZCBjb21waWxlTmV3R2VuZXJhdG9yRnJhbWUoTm9kZSop
OworICAgIHZvaWQgY29tcGlsZVJlc2l6ZUdlbmVyYXRvckxvY2FscyhOb2RlKik7CiAgICAgdm9p
ZCBjb21waWxlU2V0RnVuY3Rpb25OYW1lKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVGb3J3YXJk
VmFyYXJncyhOb2RlKik7CiAgICAgdm9pZCBjb21waWxlQ3JlYXRlQWN0aXZhdGlvbihOb2RlKik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
MzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMy
XzY0LmNwcAppbmRleCAyMWY0MjA3OTUxNjdhNzFmODgwZjZjOWQ3MmJlM2NjOGQ1YWY1ZTk0Li43
MGQ1YTY0NTljMjUyOWMwZGRlZTMwYTg3ZjhlZWU1Yzg2NzE0YzJkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKQEAgLTM3
LDYgKzM3LDcgQEAKICNpbmNsdWRlICJERkdTbG93UGF0aEdlbmVyYXRvci5oIgogI2luY2x1ZGUg
IkRlYnVnZ2VyLmgiCiAjaW5jbHVkZSAiRGlyZWN0QXJndW1lbnRzLmgiCisjaW5jbHVkZSAiR2Vu
ZXJhdG9yRnJhbWUuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJKU0Vu
dmlyb25tZW50UmVjb3JkLmgiCiAjaW5jbHVkZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIKQEAg
LTM4MjksNiArMzgzMCwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5v
ZGUpCiAgICAgICAgIGNvbXBpbGVDYWxsT2JqZWN0Q29uc3RydWN0b3Iobm9kZSk7CiAgICAgICAg
IGJyZWFrOwogICAgIH0KKworICAgIGNhc2UgTmV3R2VuZXJhdG9yRnJhbWU6IHsKKyAgICAgICAg
Y29tcGlsZU5ld0dlbmVyYXRvckZyYW1lKG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CiAg
ICAgICAgIAogICAgIGNhc2UgVG9UaGlzOiB7CiAgICAgICAgIEFTU0VSVChub2RlLT5jaGlsZDEo
KS51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSk7CkBAIC00OTM2LDYgKzQ5NDIsNDEgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBjZWxsUmVzdWx0KHJl
c3VsdEdQUiwgbm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KKyAgICBjYXNlIFNldEdlbmVy
YXRvckxvY2FsOiB7CisgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGZyYW1lKHRoaXMsIG5v
ZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+
Y2hpbGQyKCkpOworCisgICAgICAgIEdQUlJlZyBmcmFtZUdQUiA9IGZyYW1lLmdwcigpOworICAg
ICAgICBHUFJSZWcgdmFsdWVUYWdHUFIgPSB2YWx1ZS50YWdHUFIoKTsKKyAgICAgICAgR1BSUmVn
IHZhbHVlUGF5bG9hZEdQUiA9IHZhbHVlLnBheWxvYWRHUFIoKTsKKyAgICAgICAgdW5zaWduZWQg
Z2VuZXJhdG9yTG9jYWxJbmRleCA9IG5vZGUtPmdlbmVyYXRvckxvY2FsSW5kZXgoKTsKKworICAg
ICAgICBtX2ppdC5zdG9yZTMyKHZhbHVlVGFnR1BSLCBKSVRDb21waWxlcjo6QWRkcmVzcyhmcmFt
ZUdQUiwgR2VuZXJhdG9yRnJhbWU6OmxvY2FsT2Zmc2V0KGdlbmVyYXRvckxvY2FsSW5kZXgpICsg
T0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnRhZykpKTsKKyAgICAgICAgbV9qaXQu
c3RvcmUzMih2YWx1ZVBheWxvYWRHUFIsIEpJVENvbXBpbGVyOjpBZGRyZXNzKGZyYW1lR1BSLCBH
ZW5lcmF0b3JGcmFtZTo6bG9jYWxPZmZzZXQoZ2VuZXJhdG9yTG9jYWxJbmRleCkgKyBPQkpFQ1Rf
T0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMucGF5bG9hZCkpKTsKKworICAgICAgICBub1Jlc3Vs
dChub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgR2V0R2VuZXJhdG9yTG9j
YWw6IHsKKyAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgZnJhbWUodGhpcywgbm9kZS0+Y2hp
bGQxKCkpOworICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0VGFnKHRoaXMpOworICAgICAgICBH
UFJUZW1wb3JhcnkgcmVzdWx0UGF5bG9hZCh0aGlzKTsKKworICAgICAgICBHUFJSZWcgZnJhbWVH
UFIgPSBmcmFtZS5ncHIoKTsKKyAgICAgICAgR1BSUmVnIHJlc3VsdFRhZ0dQUiA9IHJlc3VsdFRh
Zy5ncHIoKTsKKyAgICAgICAgR1BSUmVnIHJlc3VsdFBheWxvYWRHUFIgPSByZXN1bHRQYXlsb2Fk
LmdwcigpOworICAgICAgICB1bnNpZ25lZCBnZW5lcmF0b3JMb2NhbEluZGV4ID0gbm9kZS0+Z2Vu
ZXJhdG9yTG9jYWxJbmRleCgpOworCisgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6
QWRkcmVzcyhmcmFtZUdQUiwgR2VuZXJhdG9yRnJhbWU6OmxvY2FsT2Zmc2V0KGdlbmVyYXRvckxv
Y2FsSW5kZXgpICsgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnRhZykpLCByZXN1
bHRUYWdHUFIpOworICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OkFkZHJlc3MoZnJh
bWVHUFIsIEdlbmVyYXRvckZyYW1lOjpsb2NhbE9mZnNldChnZW5lcmF0b3JMb2NhbEluZGV4KSAr
IE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy5wYXlsb2FkKSksIHJlc3VsdFBheWxv
YWRHUFIpOworCisgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0VGFnR1BSLCByZXN1bHRQYXls
b2FkR1BSLCBub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgUmVzaXplR2Vu
ZXJhdG9yTG9jYWxzOiB7CisgICAgICAgIGNvbXBpbGVSZXNpemVHZW5lcmF0b3JMb2NhbHMobm9k
ZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICBjYXNlIFByb2ZpbGVUeXBlOiB7CiAgICAg
ICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAg
R1BSVGVtcG9yYXJ5IHNjcmF0Y2gxKHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKaW5kZXggYjUyZDQ3ZDU3MDczNjkxOGNmZWE3
MDUwYTE1Y2E0MWFiOWE3ODViZS4uYWFhNDY3N2FmZTA2NzI3OWRkMTFlODdjMTZlYmViMjE0MWVj
YTQ4ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVDY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklUNjQuY3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiREZHU2xvd1BhdGhHZW5lcmF0
b3IuaCIKICNpbmNsdWRlICJEZWJ1Z2dlci5oIgogI2luY2x1ZGUgIkRpcmVjdEFyZ3VtZW50cy5o
IgorI2luY2x1ZGUgIkdlbmVyYXRvckZyYW1lLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgi
CiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTRW52aXJvbm1lbnRSZWNvcmQu
aCIKQEAgLTM4ODgsNiArMzg4OSwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5v
ZGUqIG5vZGUpCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgTmV3R2VuZXJhdG9y
RnJhbWU6IHsKKyAgICAgICAgY29tcGlsZU5ld0dlbmVyYXRvckZyYW1lKG5vZGUpOworICAgICAg
ICBicmVhazsKKyAgICB9CisgICAgICAgIAogICAgIGNhc2UgVG9UaGlzOiB7CiAgICAgICAgIEFT
U0VSVChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSk7CiAgICAgICAgIEpT
VmFsdWVPcGVyYW5kIHRoaXNWYWx1ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CkBAIC00OTcyLDYg
KzQ5NzgsMzUgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAg
ICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0K
KyAgICBjYXNlIFNldEdlbmVyYXRvckxvY2FsOiB7CisgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVy
YW5kIGZyYW1lKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQg
dmFsdWUodGhpcywgbm9kZS0+Y2hpbGQyKCkpOworCisgICAgICAgIEdQUlJlZyBmcmFtZUdQUiA9
IGZyYW1lLmdwcigpOworICAgICAgICBHUFJSZWcgdmFsdWVHUFIgPSB2YWx1ZS5ncHIoKTsKKyAg
ICAgICAgdW5zaWduZWQgZ2VuZXJhdG9yTG9jYWxJbmRleCA9IG5vZGUtPmdlbmVyYXRvckxvY2Fs
SW5kZXgoKTsKKworICAgICAgICBtX2ppdC5zdG9yZTY0KHZhbHVlR1BSLCBKSVRDb21waWxlcjo6
QWRkcmVzcyhmcmFtZUdQUiwgR2VuZXJhdG9yRnJhbWU6OmxvY2FsT2Zmc2V0KGdlbmVyYXRvckxv
Y2FsSW5kZXgpKSk7CisKKyAgICAgICAgbm9SZXN1bHQobm9kZSk7CisgICAgICAgIGJyZWFrOwor
ICAgIH0KKyAgICBjYXNlIEdldEdlbmVyYXRvckxvY2FsOiB7CisgICAgICAgIFNwZWN1bGF0ZUNl
bGxPcGVyYW5kIGZyYW1lKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgR1BSVGVtcG9y
YXJ5IHJlc3VsdCh0aGlzKTsKKworICAgICAgICBHUFJSZWcgZnJhbWVHUFIgPSBmcmFtZS5ncHIo
KTsKKyAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKyAgICAgICAgdW5z
aWduZWQgZ2VuZXJhdG9yTG9jYWxJbmRleCA9IG5vZGUtPmdlbmVyYXRvckxvY2FsSW5kZXgoKTsK
KworICAgICAgICBtX2ppdC5sb2FkNjQoSklUQ29tcGlsZXI6OkFkZHJlc3MoZnJhbWVHUFIsIEdl
bmVyYXRvckZyYW1lOjpsb2NhbE9mZnNldChnZW5lcmF0b3JMb2NhbEluZGV4KSksIHJlc3VsdEdQ
Uik7CisgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKKyAgICAgICAgYnJl
YWs7CisgICAgfQorICAgIGNhc2UgUmVzaXplR2VuZXJhdG9yTG9jYWxzOiB7CisgICAgICAgIGNv
bXBpbGVSZXNpemVHZW5lcmF0b3JMb2NhbHMobm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0K
ICAgICBjYXNlIFByb2ZpbGVUeXBlOiB7CiAgICAgICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRo
aXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2gxKHRoaXMp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJ
bnNlcnRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0b3JlQmFy
cmllckluc2VydGlvblBoYXNlLmNwcAppbmRleCBiNjMxMjA5ZThkMTcyNjhkMDlhM2UwNzc4MmQ3
OGM5MzQ2MmQwYmZjLi5jOTM3YmQ5ZDI3MTNiNGU5OGE1NDNhYmVlZjc3N2ZhMjI3MGI3ZWZhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0b3JlQmFycmllckluc2Vy
dGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0b3JlQmFy
cmllckluc2VydGlvblBoYXNlLmNwcApAQCAtMjgzLDYgKzI4MywxMSBAQCBjbGFzcyBTdG9yZUJh
cnJpZXJJbnNlcnRpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICAgICAgY29u
c2lkZXJCYXJyaWVyKG1fbm9kZS0+Y2hpbGQxKCksIG1fbm9kZS0+Y2hpbGQyKCkpOwogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQorCisgICAgICAgICAgICBjYXNlIFNldEdl
bmVyYXRvckxvY2FsOiB7CisgICAgICAgICAgICAgICAgY29uc2lkZXJCYXJyaWVyKG1fbm9kZS0+
Y2hpbGQxKCksIG1fbm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgY2FzZSBTZXRGdW5jdGlv
bk5hbWU6IHsKICAgICAgICAgICAgICAgICBjb25zaWRlckJhcnJpZXIobV9ub2RlLT5jaGlsZDEo
KSwgbV9ub2RlLT5jaGlsZDIoKSk7CkBAIC0zMDMsNiArMzA4LDcgQEAgY2xhc3MgU3RvcmVCYXJy
aWVySW5zZXJ0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgY2FzZSBOZXdB
cnJheUJ1ZmZlcjoKICAgICAgICAgICAgIGNhc2UgTmV3VHlwZWRBcnJheToKICAgICAgICAgICAg
IGNhc2UgTmV3UmVnZXhwOgorICAgICAgICAgICAgY2FzZSBOZXdHZW5lcmF0b3JGcmFtZToKICAg
ICAgICAgICAgIGNhc2UgTWF0ZXJpYWxpemVOZXdPYmplY3Q6CiAgICAgICAgICAgICBjYXNlIE1h
dGVyaWFsaXplQ3JlYXRlQWN0aXZhdGlvbjoKICAgICAgICAgICAgIGNhc2UgTmV3U3RyaW5nT2Jq
ZWN0OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVS
ZWdpc3RyYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVj
dHVyZVJlZ2lzdHJhdGlvblBoYXNlLmNwcAppbmRleCA1NzE1MjFmY2JhMjFkMTEzZmU5N2Q3NGNm
NjBhNDllYzQ0ZmVjNmU2Li45MmM3NzJiMjAwYTNiOTJiMTIyZTVkOWVmODE3ZGI2N2NmOTg4MjEz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVjdHVyZVJlZ2lz
dHJhdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVj
dHVyZVJlZ2lzdHJhdGlvblBoYXNlLmNwcApAQCAtMTMyLDYgKzEzMiw5IEBAIGNsYXNzIFN0cnVj
dHVyZVJlZ2lzdHJhdGlvblBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgICAgICBj
YXNlIENyZWF0ZURpcmVjdEFyZ3VtZW50czoKICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJT
dHJ1Y3R1cmUobV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+
ZGlyZWN0QXJndW1lbnRzU3RydWN0dXJlKCkpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgICBjYXNlIE5ld0dlbmVyYXRvckZyYW1lOgorICAgICAgICAgICAgICAg
ICAgICByZWdpc3RlclN0cnVjdHVyZShtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpLT5nZW5lcmF0b3JGcmFtZVN0cnVjdHVyZSgpKTsKKyAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGNhc2Ug
Q3JlYXRlU2NvcGVkQXJndW1lbnRzOgogICAgICAgICAgICAgICAgICAgICByZWdpc3RlclN0cnVj
dHVyZShtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5zY29w
ZWRBcmd1bWVudHNTdHJ1Y3R1cmUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcAppbmRleCBhNGI1NDM3ZTk3YzQ3
ZjhmZjNmZWVkYzFlZTkwZjYwNzdhYjVmZjA1Li5iMWIyZmVjY2UzYWY5OTQ0YWZkMWM2M2E0YjMw
ZTBiMDcyZTk5NzI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFi
c3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRl
ICJCM1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkRpcmVjdEFyZ3VtZW50cy5oIgogI2luY2x1
ZGUgIkZUTFN0YXRlLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yRnJhbWUuaCIKICNpbmNsdWRlICJH
ZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJKU0Vudmlyb25tZW50UmVjb3JkLmgiCiAjaW5jbHVk
ZSAiSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCmluZGV4IGIxMWFkZTRmMDlh
NzY4MDYwMDk2OGU3MzA2NTkxMTQzZjI3MWRiOTMuLjM5YTI4ZDUxZDhlODA4Yjc3ZDZiNmViOWJh
MDFjNTNmNTMwNGZlZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
QWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCkBAIC00OCw2ICs0OCw4IEBACiAgICAgbWFjcm8o
RGlyZWN0QXJndW1lbnRzX2xlbmd0aCwgRGlyZWN0QXJndW1lbnRzOjpvZmZzZXRPZkxlbmd0aCgp
KSBcCiAgICAgbWFjcm8oRGlyZWN0QXJndW1lbnRzX21pbkNhcGFjaXR5LCBEaXJlY3RBcmd1bWVu
dHM6Om9mZnNldE9mTWluQ2FwYWNpdHkoKSkgXAogICAgIG1hY3JvKERpcmVjdEFyZ3VtZW50c19v
dmVycmlkZXMsIERpcmVjdEFyZ3VtZW50czo6b2Zmc2V0T2ZPdmVycmlkZXMoKSkgXAorICAgIG1h
Y3JvKEdlbmVyYXRvckZyYW1lX251bWJlck9mQ2FsbGVlTG9jYWxzLCBHZW5lcmF0b3JGcmFtZTo6
bnVtYmVyT2ZDYWxsZWVMb2NhbHNPZmZzZXQoKSkgXAorICAgIG1hY3JvKEdlbmVyYXRvckZyYW1l
X251bWJlck9mU2F2ZWRDYWxsZWVMb2NhbHMsIEdlbmVyYXRvckZyYW1lOjpudW1iZXJPZlNhdmVk
Q2FsbGVlTG9jYWxzT2Zmc2V0KCkpIFwKICAgICBtYWNybyhHZXR0ZXJTZXR0ZXJfZ2V0dGVyLCBH
ZXR0ZXJTZXR0ZXI6Om9mZnNldE9mR2V0dGVyKCkpIFwKICAgICBtYWNybyhHZXR0ZXJTZXR0ZXJf
c2V0dGVyLCBHZXR0ZXJTZXR0ZXI6Om9mZnNldE9mU2V0dGVyKCkpIFwKICAgICBtYWNybyhKU0Fy
cmF5QnVmZmVyVmlld19sZW5ndGgsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgp
KSBcCkBAIC0xMDMsNiArMTA1LDcgQEAKIAogI2RlZmluZSBGT1JfRUFDSF9JTkRFWEVEX0FCU1RS
QUNUX0hFQVAobWFjcm8pIFwKICAgICBtYWNybyhEaXJlY3RBcmd1bWVudHNfc3RvcmFnZSwgRGly
ZWN0QXJndW1lbnRzOjpzdG9yYWdlT2Zmc2V0KCksIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkpIFwK
KyAgICBtYWNybyhHZW5lcmF0b3JGcmFtZV9jYWxsZWVMb2NhbHMsIEdlbmVyYXRvckZyYW1lOjpv
ZmZzZXRPZkxvY2FscygpLCBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KSkgXAogICAgIG1h
Y3JvKEpTRW52aXJvbm1lbnRSZWNvcmRfdmFyaWFibGVzLCBKU0Vudmlyb25tZW50UmVjb3JkOjpv
ZmZzZXRPZlZhcmlhYmxlcygpLCBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKSBcCiAgICAgbWFjcm8o
SlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yX2NhY2hlZFByb3BlcnR5TmFtZXNWZWN0b3JDb250ZW50
cywgMCwgc2l6ZW9mKFdyaXRlQmFycmllcjxKU1N0cmluZz4pKSBcCiAgICAgbWFjcm8oSlNSb3Bl
U3RyaW5nX2ZpYmVycywgSlNSb3BlU3RyaW5nOjpvZmZzZXRPZkZpYmVycygpLCBzaXplb2YoV3Jp
dGVCYXJyaWVyPEpTU3RyaW5nPikpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
Q2FwYWJpbGl0aWVzLmNwcAppbmRleCBkNzEwODM5MDY2MThiZWU5MDU1NmNmNTQ5ZTM5MWNmZjBm
NzcyN2E5Li4yZmI0YTczZmQwZjMwZTM2YjE1NmQyMjVjM2RiNGRjZWFhZTM2YjY0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCkBAIC03Miw2ICs3
Miw3IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiBub2RlKQogICAg
IGNhc2UgTmV3T2JqZWN0OgogICAgIGNhc2UgTmV3QXJyYXk6CiAgICAgY2FzZSBOZXdBcnJheUJ1
ZmZlcjoKKyAgICBjYXNlIE5ld0dlbmVyYXRvckZyYW1lOgogICAgIGNhc2UgTmV3VHlwZWRBcnJh
eToKICAgICBjYXNlIEdldEJ5T2Zmc2V0OgogICAgIGNhc2UgR2V0R2V0dGVyU2V0dGVyQnlPZmZz
ZXQ6CkBAIC0yMjgsNiArMjI5LDkgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxl
KE5vZGUqIG5vZGUpCiAgICAgY2FzZSBQdXRTZXR0ZXJCeVZhbDoKICAgICBjYXNlIENvcHlSZXN0
OgogICAgIGNhc2UgR2V0UmVzdExlbmd0aDoKKyAgICBjYXNlIFNldEdlbmVyYXRvckxvY2FsOgor
ICAgIGNhc2UgR2V0R2VuZXJhdG9yTG9jYWw6CisgICAgY2FzZSBSZXNpemVHZW5lcmF0b3JMb2Nh
bHM6CiAgICAgY2FzZSBSZWdFeHBFeGVjOgogICAgIGNhc2UgUmVnRXhwVGVzdDoKICAgICBjYXNl
IE5ld1JlZ2V4cDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAppbmRleCAyZDc0Y2Y2ZjE5NTc1
ZTMyNmM3YjdlZmEzY2M2MWQxZDA5ZTc5ZjI5Li5jMDJiZTdhZDgxMjAwMTIyNGFmODdlNzM5NzZj
ODhmNjFhZDE5YzUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCkBAIC0yMjAsNiArMjIw
LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBERUZJTkVf
T1Aob3BfYXNzZXJ0KQogICAgICAgICBERUZJTkVfT1Aob3Bfc2F2ZSkKICAgICAgICAgREVGSU5F
X09QKG9wX3Jlc3VtZSkKKyAgICAgICAgREVGSU5FX09QKG9wX25ld19nZW5lcmF0b3JfZnJhbWUp
CiAgICAgICAgIERFRklORV9PUChvcF9kZWJ1ZykKICAgICAgICAgREVGSU5FX09QKG9wX2RlbF9i
eV9pZCkKICAgICAgICAgREVGSU5FX09QKG9wX2RpdikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCmlu
ZGV4IDA4MTliN2UyMjVlMGE1ZWVkZmJhN2RmNGZhMmIzMGNiZTRlMTZlNjAuLjlkZDhkZjFkNmJk
NWI3YWQ2ZmY2YmZmNGViZmNjMDljYWFhY2FhNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaApA
QCAtMzMxLDYgKzMzMSw3IEBACiAgICAgICAgIGVudW0gV3JpdGVCYXJyaWVyTW9kZSB7IFVuY29u
ZGl0aW9uYWxXcml0ZUJhcnJpZXIsIFNob3VsZEZpbHRlckJhc2UsIFNob3VsZEZpbHRlclZhbHVl
LCBTaG91bGRGaWx0ZXJCYXNlQW5kVmFsdWUgfTsKICAgICAgICAgLy8gdmFsdWUgcmVnaXN0ZXIg
aW4gd3JpdGUgYmFycmllciBpcyB1c2VkIGJlZm9yZSBhbnkgc2NyYXRjaCByZWdpc3RlcnMKICAg
ICAgICAgLy8gc28gbWF5IHNhZmVseSBiZSB0aGUgc2FtZSBhcyBlaXRoZXIgb2YgdGhlIHNjcmF0
Y2ggcmVnaXN0ZXJzLgorICAgICAgICB2b2lkIGVtaXRXcml0ZUJhcnJpZXIodW5zaWduZWQgb3du
ZXIsIFdyaXRlQmFycmllck1vZGUpOwogICAgICAgICB2b2lkIGVtaXRXcml0ZUJhcnJpZXIodW5z
aWduZWQgb3duZXIsIHVuc2lnbmVkIHZhbHVlLCBXcml0ZUJhcnJpZXJNb2RlKTsKICAgICAgICAg
dm9pZCBlbWl0V3JpdGVCYXJyaWVyKEpTQ2VsbCogb3duZXIsIHVuc2lnbmVkIHZhbHVlLCBXcml0
ZUJhcnJpZXJNb2RlKTsKICAgICAgICAgdm9pZCBlbWl0V3JpdGVCYXJyaWVyKEpTQ2VsbCogb3du
ZXIpOwpAQCAtNDk0LDYgKzQ5NSw3IEBACiAgICAgICAgIHZvaWQgZW1pdF9vcF9hc3NlcnQoSW5z
dHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX3NhdmUoSW5zdHJ1Y3Rpb24qKTsKICAg
ICAgICAgdm9pZCBlbWl0X29wX3Jlc3VtZShJbnN0cnVjdGlvbiopOworICAgICAgICB2b2lkIGVt
aXRfb3BfbmV3X2dlbmVyYXRvcl9mcmFtZShJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVt
aXRfb3BfZGVidWcoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2RlbF9ieV9p
ZChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZGl2KEluc3RydWN0aW9uKik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAppbmRleCBmMTM2NGZmZDlm
YWY3MzI3YjE3M2Y0NGQ1NjNhOGE0Yzk1YTAwMjYzLi5iNWM4MzhlN2E2MDc4ODQ3OTM5MzhlODdj
YWIwMTgyNjE4NDUxNzdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wY29kZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5j
cHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJDb3BpZWRTcGFjZUlubGluZXMuaCIKICNp
bmNsdWRlICJEZWJ1Z2dlci5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbi5oIgorI2luY2x1ZGUgIkdl
bmVyYXRvckZyYW1lLmgiCiAjaW5jbHVkZSAiSGVhcC5oIgogI2luY2x1ZGUgIkpJVElubGluZXMu
aCIKICNpbmNsdWRlICJKU0FycmF5LmgiCkBAIC05MDUsNiArOTA2LDQ5IEBAIHZvaWQgSklUOjpl
bWl0U2xvd19vcF90b19zdHJpbmcoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVj
dG9yPFNsb3dDYXNlCiAgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKIH0KIAordm9pZCBKSVQ6OmVt
aXRfb3Bfc2F2ZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIGludCBm
cmFtZSA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CisgICAgdW5zaWduZWQgbGl2
ZUNhbGxlZUxvY2Fsc0luZGV4ID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUudW5zaWduZWRWYWx1
ZTsKKyAgICBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlbmVzcyA9IG1fY29kZUJsb2NrLT5saXZl
Q2FsbGVlTG9jYWxzQXRZaWVsZChsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpOworCisgICAgLy8gQSBm
cmFtZSBpcyBhbHdheXMgYSBjZWxsLiBObyBuZWVkIHRvIGZpbHRlciBvdXQuCisgICAgZW1pdFdy
aXRlQmFycmllcihmcmFtZSwgVW5jb25kaXRpb25hbFdyaXRlQmFycmllcik7CisKKyAgICBlbWl0
R2V0VmlydHVhbFJlZ2lzdGVyKGZyYW1lLCByZWdUMSk7CisKKyAgICAvLyBBbGxvY2F0ZSBnZW5l
cmF0b3IgZnJhbWUgbG9jYWxzLgorICAgIHN0b3JlMzIoVHJ1c3RlZEltbTMyKGxpdmVuZXNzLmJp
dENvdW50KCkpLCBBZGRyZXNzKHJlZ1QxLCBHZW5lcmF0b3JGcmFtZTo6bnVtYmVyT2ZTYXZlZENh
bGxlZUxvY2Fsc09mZnNldCgpKSk7CisKKyAgICB1bnNpZ25lZCBnZW5lcmF0b3JMb2NhbEluZGV4
ID0gMDsKKyAgICBsaXZlbmVzcy5mb3JFYWNoU2V0Qml0KFsmXShzaXplX3QgbG9jYWwpIHsKKyAg
ICAgICAgVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQgPSB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChs
b2NhbCk7CisgICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIob3BlcmFuZC5vZmZzZXQoKSwg
cmVnVDApOworICAgICAgICBzdG9yZTY0KHJlZ1QwLCBBZGRyZXNzKHJlZ1QxLCBHZW5lcmF0b3JG
cmFtZTo6bG9jYWxPZmZzZXQoZ2VuZXJhdG9yTG9jYWxJbmRleCkpKTsKKyAgICAgICAgZ2VuZXJh
dG9yTG9jYWxJbmRleCsrOworICAgIH0pOworfQorCit2b2lkIEpJVDo6ZW1pdF9vcF9yZXN1bWUo
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBpbnQgZnJhbWUgPSBjdXJy
ZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOworICAgIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2Nh
bHNJbmRleCA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51LnVuc2lnbmVkVmFsdWU7CisgICAgY29u
c3QgRmFzdEJpdFZlY3RvciYgbGl2ZW5lc3MgPSBtX2NvZGVCbG9jay0+bGl2ZUNhbGxlZUxvY2Fs
c0F0WWllbGQobGl2ZUNhbGxlZUxvY2Fsc0luZGV4KTsKKworICAgIGVtaXRHZXRWaXJ0dWFsUmVn
aXN0ZXIoZnJhbWUsIHJlZ1QxKTsKKworICAgIHVuc2lnbmVkIGdlbmVyYXRvckxvY2FsSW5kZXgg
PSAwOworICAgIGxpdmVuZXNzLmZvckVhY2hTZXRCaXQoWyZdKHNpemVfdCBsb2NhbCkgeworICAg
ICAgICBWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCA9IHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGxv
Y2FsKTsKKyAgICAgICAgbG9hZDY0KEFkZHJlc3MocmVnVDEsIEdlbmVyYXRvckZyYW1lOjpsb2Nh
bE9mZnNldChnZW5lcmF0b3JMb2NhbEluZGV4KSksIHJlZ1QwKTsKKyAgICAgICAgZW1pdFB1dFZp
cnR1YWxSZWdpc3RlcihvcGVyYW5kLm9mZnNldCgpKTsKKyAgICAgICAgZ2VuZXJhdG9yTG9jYWxJ
bmRleCsrOworICAgIH0pOworCisgICAgLy8gRGVhbGxvY2F0ZSBnZW5lcmF0b3IgZnJhbWUgbG9j
YWxzLgorICAgIHN0b3JlMzIoVHJ1c3RlZEltbTMyKDApLCBBZGRyZXNzKHJlZ1QxLCBHZW5lcmF0
b3JGcmFtZTo6bnVtYmVyT2ZTYXZlZENhbGxlZUxvY2Fsc09mZnNldCgpKSk7Cit9CisKICNlbmRp
ZiAvLyBVU0UoSlNWQUxVRTY0KQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9sb29wX2hpbnQoSW5zdHJ1
Y3Rpb24qKQpAQCAtMTQzOCwxNSArMTQ4Miw5IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9yZXN0
X2xlbmd0aChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogI2VuZGlmCiB9CiAKLXZv
aWQgSklUOjplbWl0X29wX3NhdmUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKLXsK
LSAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlv
biwgc2xvd19wYXRoX3NhdmUpOwotICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7Ci19Ci0KLXZvaWQg
SklUOjplbWl0X29wX3Jlc3VtZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQordm9p
ZCBKSVQ6OmVtaXRfb3BfbmV3X2dlbmVyYXRvcl9mcmFtZShJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQogewotICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3Vy
cmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfcmVzdW1lKTsKKyAgICBKSVRTbG93UGF0aENhbGwg
c2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX25ld19nZW5l
cmF0b3JfZnJhbWUpOwogICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAppbmRleCBlZDQ0MzQ5YTc5MmUw
ZDNlZTIxMDMwOTNjZWQ0NzZkNGRhOThiOThhLi5iYTA4M2FiYzgzMjljYjcxMDAxNmI4MzM5NzA3
NWQwZWQ0N2NhOTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
Y29kZXMzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVz
MzJfNjQuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiQ0NhbGxIZWxwZXJzLmgiCiAj
aW5jbHVkZSAiRGVidWdnZXIuaCIKICNpbmNsdWRlICJFeGNlcHRpb24uaCIKKyNpbmNsdWRlICJH
ZW5lcmF0b3JGcmFtZS5oIgogI2luY2x1ZGUgIkpJVElubGluZXMuaCIKICNpbmNsdWRlICJKU0Fy
cmF5LmgiCiAjaW5jbHVkZSAiSlNDZWxsLmgiCkBAIC0xMzQzLDYgKzEzNDQsNTEgQEAgdm9pZCBK
SVQ6OmVtaXRfb3BfcHJvZmlsZV90eXBlKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
CiAgICAganVtcFRvRW5kLmxpbmsodGhpcyk7CiB9CiAKK3ZvaWQgSklUOjplbWl0X29wX3NhdmUo
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBpbnQgZnJhbWUgPSBjdXJy
ZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOworICAgIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2Nh
bHNJbmRleCA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51LnVuc2lnbmVkVmFsdWU7CisgICAgY29u
c3QgRmFzdEJpdFZlY3RvciYgbGl2ZW5lc3MgPSBtX2NvZGVCbG9jay0+bGl2ZUNhbGxlZUxvY2Fs
c0F0WWllbGQobGl2ZUNhbGxlZUxvY2Fsc0luZGV4KTsKKworICAgIC8vIEEgZnJhbWUgaXMgYWx3
YXlzIGEgY2VsbC4gTm8gbmVlZCB0byBmaWx0ZXIgb3V0LgorICAgIGVtaXRXcml0ZUJhcnJpZXIo
ZnJhbWUsIFVuY29uZGl0aW9uYWxXcml0ZUJhcnJpZXIpOworCisgICAgZW1pdExvYWRQYXlsb2Fk
KGZyYW1lLCByZWdUMik7CisKKyAgICAvLyBBbGxvY2F0ZSBnZW5lcmF0b3IgZnJhbWUgbG9jYWxz
LgorICAgIHN0b3JlMzIoVHJ1c3RlZEltbTMyKGxpdmVuZXNzLmJpdENvdW50KCkpLCBBZGRyZXNz
KHJlZ1QyLCBHZW5lcmF0b3JGcmFtZTo6bnVtYmVyT2ZTYXZlZENhbGxlZUxvY2Fsc09mZnNldCgp
KSk7CisKKyAgICB1bnNpZ25lZCBnZW5lcmF0b3JMb2NhbEluZGV4ID0gMDsKKyAgICBsaXZlbmVz
cy5mb3JFYWNoU2V0Qml0KFsmXShzaXplX3QgbG9jYWwpIHsKKyAgICAgICAgVmlydHVhbFJlZ2lz
dGVyIG9wZXJhbmQgPSB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChsb2NhbCk7CisgICAgICAgIGVt
aXRHZXRWaXJ0dWFsUmVnaXN0ZXIob3BlcmFuZC5vZmZzZXQoKSwgSlNWYWx1ZVJlZ3MocmVnVDEs
IHJlZ1QwKSk7CisgICAgICAgIHN0b3JlMzIocmVnVDEsIEFkZHJlc3MocmVnVDIsIEdlbmVyYXRv
ckZyYW1lOjpsb2NhbE9mZnNldChnZW5lcmF0b3JMb2NhbEluZGV4KSArIE9CSkVDVF9PRkZTRVRP
RihKU1ZhbHVlLCB1LmFzQml0cy50YWcpKSk7CisgICAgICAgIHN0b3JlMzIocmVnVDAsIEFkZHJl
c3MocmVnVDIsIEdlbmVyYXRvckZyYW1lOjpsb2NhbE9mZnNldChnZW5lcmF0b3JMb2NhbEluZGV4
KSArIE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy5wYXlsb2FkKSkpOworICAgICAg
ICBnZW5lcmF0b3JMb2NhbEluZGV4Kys7CisgICAgfSk7Cit9CisKK3ZvaWQgSklUOjplbWl0X29w
X3Jlc3VtZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIGludCBmcmFt
ZSA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CisgICAgdW5zaWduZWQgbGl2ZUNh
bGxlZUxvY2Fsc0luZGV4ID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUudW5zaWduZWRWYWx1ZTsK
KyAgICBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlbmVzcyA9IG1fY29kZUJsb2NrLT5saXZlQ2Fs
bGVlTG9jYWxzQXRZaWVsZChsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpOworCisgICAgZW1pdExvYWRQ
YXlsb2FkKGZyYW1lLCByZWdUMik7CisKKyAgICB1bnNpZ25lZCBnZW5lcmF0b3JMb2NhbEluZGV4
ID0gMDsKKyAgICBsaXZlbmVzcy5mb3JFYWNoU2V0Qml0KFsmXShzaXplX3QgbG9jYWwpIHsKKyAg
ICAgICAgVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQgPSB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChs
b2NhbCk7CisgICAgICAgIGxvYWQzMihBZGRyZXNzKHJlZ1QyLCBHZW5lcmF0b3JGcmFtZTo6bG9j
YWxPZmZzZXQoZ2VuZXJhdG9yTG9jYWxJbmRleCkgKyBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwg
dS5hc0JpdHMudGFnKSksIHJlZ1QxKTsKKyAgICAgICAgbG9hZDMyKEFkZHJlc3MocmVnVDIsIEdl
bmVyYXRvckZyYW1lOjpsb2NhbE9mZnNldChnZW5lcmF0b3JMb2NhbEluZGV4KSArIE9CSkVDVF9P
RkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy5wYXlsb2FkKSksIHJlZ1QwKTsKKyAgICAgICAgZW1p
dFB1dFZpcnR1YWxSZWdpc3RlcihvcGVyYW5kLm9mZnNldCgpLCBKU1ZhbHVlUmVncyhyZWdUMSwg
cmVnVDApKTsKKyAgICAgICAgZ2VuZXJhdG9yTG9jYWxJbmRleCsrOworICAgIH0pOworCisgICAg
Ly8gRGVhbGxvY2F0ZSBnZW5lcmF0b3IgZnJhbWUgbG9jYWxzLgorICAgIHN0b3JlMzIoVHJ1c3Rl
ZEltbTMyKDApLCBBZGRyZXNzKHJlZ1QyLCBHZW5lcmF0b3JGcmFtZTo6bnVtYmVyT2ZTYXZlZENh
bGxlZUxvY2Fsc09mZnNldCgpKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYg
Ly8gVVNFKEpTVkFMVUUzMl82NCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQ
cm9wZXJ0eUFjY2Vzcy5jcHAKaW5kZXggMTM0YWY3OWZjNzc5ODQ1Njg0NWU1MDhiNzk3ODQzZDky
MDEyNThjMi4uYmUxNTI5NWZmNTBlYzBhYWI3ZmNmODM1MDY2Zjg1NjU0MmRmN2MzNSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKQEAgLTEx
MTIsMTQgKzExMTIsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfdG9fYXJndW1lbnRzKEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAjZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkKIAog
I2lmIFVTRShKU1ZBTFVFNjQpCi12b2lkIEpJVDo6ZW1pdFdyaXRlQmFycmllcih1bnNpZ25lZCBv
d25lciwgdW5zaWduZWQgdmFsdWUsIFdyaXRlQmFycmllck1vZGUgbW9kZSkKK3ZvaWQgSklUOjpl
bWl0V3JpdGVCYXJyaWVyKHVuc2lnbmVkIG93bmVyLCBXcml0ZUJhcnJpZXJNb2RlIG1vZGUpCiB7
Ci0gICAgSnVtcCB2YWx1ZU5vdENlbGw7Ci0gICAgaWYgKG1vZGUgPT0gU2hvdWxkRmlsdGVyVmFs
dWUgfHwgbW9kZSA9PSBTaG91bGRGaWx0ZXJCYXNlQW5kVmFsdWUpIHsKLSAgICAgICAgZW1pdEdl
dFZpcnR1YWxSZWdpc3Rlcih2YWx1ZSwgcmVnVDApOwotICAgICAgICB2YWx1ZU5vdENlbGwgPSBi
cmFuY2hUZXN0NjQoTm9uWmVybywgcmVnVDAsIHRhZ01hc2tSZWdpc3Rlcik7Ci0gICAgfQotICAg
IAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIob3duZXIsIHJlZ1QwKTsKICAgICBKdW1wIG93
bmVyTm90Q2VsbDsKICAgICBpZiAobW9kZSA9PSBTaG91bGRGaWx0ZXJCYXNlQW5kVmFsdWUgfHwg
bW9kZSA9PSBTaG91bGRGaWx0ZXJCYXNlKQpAQCAtMTEzMSw2ICsxMTI1LDE4IEBAIHZvaWQgSklU
OjplbWl0V3JpdGVCYXJyaWVyKHVuc2lnbmVkIG93bmVyLCB1bnNpZ25lZCB2YWx1ZSwgV3JpdGVC
YXJyaWVyTW9kZSBtb2RlCiAKICAgICBpZiAobW9kZSA9PSBTaG91bGRGaWx0ZXJCYXNlQW5kVmFs
dWUgfHwgbW9kZSA9PSBTaG91bGRGaWx0ZXJCYXNlKQogICAgICAgICBvd25lck5vdENlbGwubGlu
ayh0aGlzKTsKK30KKwordm9pZCBKSVQ6OmVtaXRXcml0ZUJhcnJpZXIodW5zaWduZWQgb3duZXIs
IHVuc2lnbmVkIHZhbHVlLCBXcml0ZUJhcnJpZXJNb2RlIG1vZGUpCit7CisgICAgSnVtcCB2YWx1
ZU5vdENlbGw7CisgICAgaWYgKG1vZGUgPT0gU2hvdWxkRmlsdGVyVmFsdWUgfHwgbW9kZSA9PSBT
aG91bGRGaWx0ZXJCYXNlQW5kVmFsdWUpIHsKKyAgICAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rl
cih2YWx1ZSwgcmVnVDApOworICAgICAgICB2YWx1ZU5vdENlbGwgPSBicmFuY2hUZXN0NjQoTm9u
WmVybywgcmVnVDAsIHRhZ01hc2tSZWdpc3Rlcik7CisgICAgfQorCisgICAgZW1pdFdyaXRlQmFy
cmllcihvd25lciwgbW9kZSk7CisKICAgICBpZiAobW9kZSA9PSBTaG91bGRGaWx0ZXJWYWx1ZSB8
fCBtb2RlID09IFNob3VsZEZpbHRlckJhc2VBbmRWYWx1ZSkgCiAgICAgICAgIHZhbHVlTm90Q2Vs
bC5saW5rKHRoaXMpOwogfQpAQCAtMTE1MCwxNCArMTE1Niw4IEBAIHZvaWQgSklUOjplbWl0V3Jp
dGVCYXJyaWVyKEpTQ2VsbCogb3duZXIsIHVuc2lnbmVkIHZhbHVlLCBXcml0ZUJhcnJpZXJNb2Rl
IG1vZGUpCiAKICNlbHNlIC8vIFVTRShKU1ZBTFVFNjQpCiAKLXZvaWQgSklUOjplbWl0V3JpdGVC
YXJyaWVyKHVuc2lnbmVkIG93bmVyLCB1bnNpZ25lZCB2YWx1ZSwgV3JpdGVCYXJyaWVyTW9kZSBt
b2RlKQordm9pZCBKSVQ6OmVtaXRXcml0ZUJhcnJpZXIodW5zaWduZWQgb3duZXIsIFdyaXRlQmFy
cmllck1vZGUgbW9kZSkKIHsKLSAgICBKdW1wIHZhbHVlTm90Q2VsbDsKLSAgICBpZiAobW9kZSA9
PSBTaG91bGRGaWx0ZXJWYWx1ZSB8fCBtb2RlID09IFNob3VsZEZpbHRlckJhc2VBbmRWYWx1ZSkg
ewotICAgICAgICBlbWl0TG9hZFRhZyh2YWx1ZSwgcmVnVDApOwotICAgICAgICB2YWx1ZU5vdENl
bGwgPSBicmFuY2gzMihOb3RFcXVhbCwgcmVnVDAsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxs
VGFnKSk7Ci0gICAgfQotICAgIAogICAgIGVtaXRMb2FkKG93bmVyLCByZWdUMCwgcmVnVDEpOwog
ICAgIEp1bXAgb3duZXJOb3RDZWxsOwogICAgIGlmIChtb2RlID09IFNob3VsZEZpbHRlckJhc2Ug
fHwgbW9kZSA9PSBTaG91bGRGaWx0ZXJCYXNlQW5kVmFsdWUpCkBAIC0xMTY5LDcgKzExNjksMjAg
QEAgdm9pZCBKSVQ6OmVtaXRXcml0ZUJhcnJpZXIodW5zaWduZWQgb3duZXIsIHVuc2lnbmVkIHZh
bHVlLCBXcml0ZUJhcnJpZXJNb2RlIG1vZGUKIAogICAgIGlmIChtb2RlID09IFNob3VsZEZpbHRl
ckJhc2UgfHwgbW9kZSA9PSBTaG91bGRGaWx0ZXJCYXNlQW5kVmFsdWUpCiAgICAgICAgIG93bmVy
Tm90Q2VsbC5saW5rKHRoaXMpOwotICAgIGlmIChtb2RlID09IFNob3VsZEZpbHRlclZhbHVlIHx8
IG1vZGUgPT0gU2hvdWxkRmlsdGVyQmFzZUFuZFZhbHVlKSAKK30KKworCit2b2lkIEpJVDo6ZW1p
dFdyaXRlQmFycmllcih1bnNpZ25lZCBvd25lciwgdW5zaWduZWQgdmFsdWUsIFdyaXRlQmFycmll
ck1vZGUgbW9kZSkKK3sKKyAgICBKdW1wIHZhbHVlTm90Q2VsbDsKKyAgICBpZiAobW9kZSA9PSBT
aG91bGRGaWx0ZXJWYWx1ZSB8fCBtb2RlID09IFNob3VsZEZpbHRlckJhc2VBbmRWYWx1ZSkgewor
ICAgICAgICBlbWl0TG9hZFRhZyh2YWx1ZSwgcmVnVDApOworICAgICAgICB2YWx1ZU5vdENlbGwg
PSBicmFuY2gzMihOb3RFcXVhbCwgcmVnVDAsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFn
KSk7CisgICAgfQorCisgICAgZW1pdFdyaXRlQmFycmllcihvd25lciwgbW9kZSk7CisKKyAgICBp
ZiAobW9kZSA9PSBTaG91bGRGaWx0ZXJWYWx1ZSB8fCBtb2RlID09IFNob3VsZEZpbHRlckJhc2VB
bmRWYWx1ZSkKICAgICAgICAgdmFsdWVOb3RDZWxsLmxpbmsodGhpcyk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAK
aW5kZXggNTdkMjljODE1NDBmZDA0YjdkMjk2MzVkNGZiNDM2MTI1YjIzOGMxNC4uMTEzNmNkMjll
ODEzMWNlNDgwMWU4YjBjZWI2MzRmZDU0YTg0NjRkMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKQEAgLTMyLDYgKzMy
LDcgQEAKICNpbmNsdWRlICJEaXJlY3RBcmd1bWVudHMuaCIKICNpbmNsdWRlICJFeGNlcHRpb24u
aCIKICNpbmNsdWRlICJFeGVjdXRhYmxlLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yRnJhbWUuaCIK
ICNpbmNsdWRlICJIZWFwLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJK
U0FycmF5LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlci5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlci5hc20KaW5kZXggMjkwYzNjNDczYzE4MGZkNDI1MzIxMjMzMmNmYjk4Y2U2NDNj
NzExMS4uMjAwZDgxOWNkMzY2MTg4NDYzNTcyZGQ0Zjc3N2YyNWI2OWU0NWQwOCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQpA
QCAtMTI0OCw2ICsxMjQ4LDEyIEBAIF9sbGludF9vcF9uZXdfcmVnZXhwOgogICAgIGRpc3BhdGNo
KDMpCiAKIAorX2xsaW50X29wX25ld19nZW5lcmF0b3JfZnJhbWU6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRoX25ld19nZW5lcmF0b3JfZnJhbWUpCisg
ICAgZGlzcGF0Y2goMykKKworCiBfbGxpbnRfb3BfbGVzczoKICAgICB0cmFjZUV4ZWN1dGlvbigp
CiAgICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfbGVzcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvUGFyc2VyLmNwcAppbmRleCBlN2JhOWQxZGY4YTZkOGY2ZjFkYWNkMzI1NTdhZDNkMGQ2
YTEyOWRhLi45NjcyY2RkYTEzMTBmM2I3Yjc5MzI5OGQ2YThmMDkzNDFlYjhkMWIxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCkBAIC0yNTMsNyArMjUzLDcgQEAKICAg
ICBpZiAobV9sZXhlci0+aXNSZXBhcnNpbmdGdW5jdGlvbigpKSB7CiAgICAgICAgIFBhcnNlckZ1
bmN0aW9uSW5mbzxBU1RCdWlsZGVyPiBmdW5jdGlvbkluZm87CiAgICAgICAgIGlmIChwYXJzZU1v
ZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JCb2R5TW9kZSkKLSAgICAgICAgICAgIGZ1
bmN0aW9uSW5mby5wYXJhbWV0ZXJzID0gY3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhjb250ZXh0
KTsKKyAgICAgICAgICAgIGZ1bmN0aW9uSW5mby5wYXJhbWV0ZXJzID0gY3JlYXRlR2VuZXJhdG9y
UGFyYW1ldGVycyhjb250ZXh0LCBmdW5jdGlvbkluZm8ucGFyYW1ldGVyQ291bnQpOwogICAgICAg
ICBlbHNlCiAgICAgICAgICAgICBwYXJzZUZ1bmN0aW9uUGFyYW1ldGVycyhjb250ZXh0LCBwYXJz
ZU1vZGUsIGZ1bmN0aW9uSW5mbyk7CiAgICAgICAgIG1fcGFyYW1ldGVycyA9IGZ1bmN0aW9uSW5m
by5wYXJhbWV0ZXJzOwpAQCAtNDk3LDEwICs0OTcsOSBAQAogCiAgICAgUGFyc2VyRnVuY3Rpb25J
bmZvPFRyZWVCdWlsZGVyPiBpbmZvOwogICAgIGluZm8ubmFtZSA9ICZtX3ZtLT5wcm9wZXJ0eU5h
bWVzLT5udWxsSWRlbnRpZmllcjsKLSAgICBpbmZvLnBhcmFtZXRlcnMgPSBjcmVhdGVHZW5lcmF0
b3JQYXJhbWV0ZXJzKGNvbnRleHQpOworICAgIGluZm8ucGFyYW1ldGVycyA9IGNyZWF0ZUdlbmVy
YXRvclBhcmFtZXRlcnMoY29udGV4dCwgaW5mby5wYXJhbWV0ZXJDb3VudCk7CiAgICAgaW5mby5z
dGFydE9mZnNldCA9IHBhcmFtZXRlcnNTdGFydDsKICAgICBpbmZvLnN0YXJ0TGluZSA9IHRva2Vu
TGluZSgpOwotICAgIGluZm8ucGFyYW1ldGVyQ291bnQgPSA0OyAvLyBnZW5lcmF0b3IsIHN0YXRl
LCB2YWx1ZSwgcmVzdW1lIG1vZGUKIAogICAgIHsKICAgICAgICAgQXV0b1BvcFNjb3BlUmVmIGdl
bmVyYXRvckJvZHlTY29wZSh0aGlzLCBwdXNoU2NvcGUoKSk7CkBAIC0xODgzLDMyICsxODgyLDMw
IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBzdHJpbmdGb3JGdW5jdGlvbk1vZGUoU291cmNlUGFyc2VN
b2RlIG1vZGUpCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+Ci10ZW1wbGF0ZSA8
Y2xhc3MgVHJlZUJ1aWxkZXI+IHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpGb3JtYWxQYXJhbWV0ZXJM
aXN0IFBhcnNlcjxMZXhlclR5cGU+OjpjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKFRyZWVCdWls
ZGVyJiBjb250ZXh0KQordGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiB0eXBlbmFtZSBUcmVl
QnVpbGRlcjo6Rm9ybWFsUGFyYW1ldGVyTGlzdCBQYXJzZXI8TGV4ZXJUeXBlPjo6Y3JlYXRlR2Vu
ZXJhdG9yUGFyYW1ldGVycyhUcmVlQnVpbGRlciYgY29udGV4dCwgdW5zaWduZWQmIHBhcmFtZXRl
ckNvdW50KQogewogICAgIGF1dG8gcGFyYW1ldGVycyA9IGNvbnRleHQuY3JlYXRlRm9ybWFsUGFy
YW1ldGVyTGlzdCgpOwogCiAgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uKHRva2VuTG9jYXRp
b24oKSk7CiAgICAgSlNUZXh0UG9zaXRpb24gcG9zaXRpb24gPSB0b2tlblN0YXJ0UG9zaXRpb24o
KTsKIAotICAgIC8vIEBnZW5lcmF0b3IKLSAgICBkZWNsYXJlUGFyYW1ldGVyKCZtX3ZtLT5wcm9w
ZXJ0eU5hbWVzLT5nZW5lcmF0b3JQcml2YXRlTmFtZSk7Ci0gICAgYXV0byBnZW5lcmF0b3IgPSBj
b250ZXh0LmNyZWF0ZUJpbmRpbmdMb2NhdGlvbihsb2NhdGlvbiwgbV92bS0+cHJvcGVydHlOYW1l
cy0+Z2VuZXJhdG9yUHJpdmF0ZU5hbWUsIHBvc2l0aW9uLCBwb3NpdGlvbiwgQXNzaWdubWVudENv
bnRleHQ6OkRlY2xhcmF0aW9uU3RhdGVtZW50KTsKLSAgICBjb250ZXh0LmFwcGVuZFBhcmFtZXRl
cihwYXJhbWV0ZXJzLCBnZW5lcmF0b3IsIDApOworICAgIGF1dG8gYWRkUGFyYW1ldGVyID0gWyZd
KGNvbnN0IElkZW50aWZpZXImIG5hbWUpIHsKKyAgICAgICAgZGVjbGFyZVBhcmFtZXRlcigmbmFt
ZSk7CisgICAgICAgIGF1dG8gYmluZGluZyA9IGNvbnRleHQuY3JlYXRlQmluZGluZ0xvY2F0aW9u
KGxvY2F0aW9uLCBuYW1lLCBwb3NpdGlvbiwgcG9zaXRpb24sIEFzc2lnbm1lbnRDb250ZXh0OjpE
ZWNsYXJhdGlvblN0YXRlbWVudCk7CisgICAgICAgIGNvbnRleHQuYXBwZW5kUGFyYW1ldGVyKHBh
cmFtZXRlcnMsIGJpbmRpbmcsIDApOworICAgICAgICArK3BhcmFtZXRlckNvdW50OworICAgIH07
CiAKKyAgICAvLyBAZ2VuZXJhdG9yCisgICAgYWRkUGFyYW1ldGVyKG1fdm0tPnByb3BlcnR5TmFt
ZXMtPmdlbmVyYXRvclByaXZhdGVOYW1lKTsKICAgICAvLyBAZ2VuZXJhdG9yU3RhdGUKLSAgICBk
ZWNsYXJlUGFyYW1ldGVyKCZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5nZW5lcmF0b3JTdGF0ZVByaXZh
dGVOYW1lKTsKLSAgICBhdXRvIGdlbmVyYXRvclN0YXRlID0gY29udGV4dC5jcmVhdGVCaW5kaW5n
TG9jYXRpb24obG9jYXRpb24sIG1fdm0tPnByb3BlcnR5TmFtZXMtPmdlbmVyYXRvclN0YXRlUHJp
dmF0ZU5hbWUsIHBvc2l0aW9uLCBwb3NpdGlvbiwgQXNzaWdubWVudENvbnRleHQ6OkRlY2xhcmF0
aW9uU3RhdGVtZW50KTsKLSAgICBjb250ZXh0LmFwcGVuZFBhcmFtZXRlcihwYXJhbWV0ZXJzLCBn
ZW5lcmF0b3JTdGF0ZSwgMCk7Ci0KKyAgICBhZGRQYXJhbWV0ZXIobV92bS0+cHJvcGVydHlOYW1l
cy0+Z2VuZXJhdG9yU3RhdGVQcml2YXRlTmFtZSk7CiAgICAgLy8gQGdlbmVyYXRvclZhbHVlCi0g
ICAgZGVjbGFyZVBhcmFtZXRlcigmbV92bS0+cHJvcGVydHlOYW1lcy0+Z2VuZXJhdG9yVmFsdWVQ
cml2YXRlTmFtZSk7Ci0gICAgYXV0byBnZW5lcmF0b3JWYWx1ZSA9IGNvbnRleHQuY3JlYXRlQmlu
ZGluZ0xvY2F0aW9uKGxvY2F0aW9uLCBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5nZW5lcmF0b3JWYWx1
ZVByaXZhdGVOYW1lLCBwb3NpdGlvbiwgcG9zaXRpb24sIEFzc2lnbm1lbnRDb250ZXh0OjpEZWNs
YXJhdGlvblN0YXRlbWVudCk7Ci0gICAgY29udGV4dC5hcHBlbmRQYXJhbWV0ZXIocGFyYW1ldGVy
cywgZ2VuZXJhdG9yVmFsdWUsIDApOwotCisgICAgYWRkUGFyYW1ldGVyKG1fdm0tPnByb3BlcnR5
TmFtZXMtPmdlbmVyYXRvclZhbHVlUHJpdmF0ZU5hbWUpOwogICAgIC8vIEBnZW5lcmF0b3JSZXN1
bWVNb2RlCi0gICAgZGVjbGFyZVBhcmFtZXRlcigmbV92bS0+cHJvcGVydHlOYW1lcy0+Z2VuZXJh
dG9yUmVzdW1lTW9kZVByaXZhdGVOYW1lKTsKLSAgICBhdXRvIGdlbmVyYXRvclJlc3VtZU1vZGUg
PSBjb250ZXh0LmNyZWF0ZUJpbmRpbmdMb2NhdGlvbihsb2NhdGlvbiwgbV92bS0+cHJvcGVydHlO
YW1lcy0+Z2VuZXJhdG9yUmVzdW1lTW9kZVByaXZhdGVOYW1lLCBwb3NpdGlvbiwgcG9zaXRpb24s
IEFzc2lnbm1lbnRDb250ZXh0OjpEZWNsYXJhdGlvblN0YXRlbWVudCk7Ci0gICAgY29udGV4dC5h
cHBlbmRQYXJhbWV0ZXIocGFyYW1ldGVycywgZ2VuZXJhdG9yUmVzdW1lTW9kZSwgMCk7CisgICAg
YWRkUGFyYW1ldGVyKG1fdm0tPnByb3BlcnR5TmFtZXMtPmdlbmVyYXRvclJlc3VtZU1vZGVQcml2
YXRlTmFtZSk7CisgICAgLy8gQGdlbmVyYXRvckZyYW1lCisgICAgYWRkUGFyYW1ldGVyKG1fdm0t
PnByb3BlcnR5TmFtZXMtPmdlbmVyYXRvckZyYW1lUHJpdmF0ZU5hbWUpOwogCiAgICAgcmV0dXJu
IHBhcmFtZXRlcnM7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1BhcnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAppbmRleCAz
MDliMGE3NTk0MTMwMTMyYTA5NTM4MWRjY2M2OWRiMGY2ZWYwNzg2Li44MGMyMzk1ZDkyZDA2Njk0
ZGFmNmEyODczMmZjOWU2N2JlMDkyMmM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL1BhcnNlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFy
c2VyLmgKQEAgLTE0MTYsNyArMTQxNiw3IEBAIGNsYXNzIFBhcnNlciB7CiAgICAgQUxXQVlTX0lO
TElORSBib29sIGlzQXJyb3dGdW5jdGlvblBhcmFtZXRlcnMoKTsKICAgICAKICAgICB0ZW1wbGF0
ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElORSBpbnQgcGFyc2VGdW5jdGlvblBhcmFt
ZXRlcnMoVHJlZUJ1aWxkZXImLCBTb3VyY2VQYXJzZU1vZGUsIFBhcnNlckZ1bmN0aW9uSW5mbzxU
cmVlQnVpbGRlcj4mKTsKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lO
TElORSB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6Rm9ybWFsUGFyYW1ldGVyTGlzdCBjcmVhdGVHZW5l
cmF0b3JQYXJhbWV0ZXJzKFRyZWVCdWlsZGVyJik7CisgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVC
dWlsZGVyPiBORVZFUl9JTkxJTkUgdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkZvcm1hbFBhcmFtZXRl
ckxpc3QgY3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhUcmVlQnVpbGRlciYsIHVuc2lnbmVkJiBw
YXJhbWV0ZXJDb3VudCk7CiAKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVS
X0lOTElORSBUcmVlQ2xhc3NFeHByZXNzaW9uIHBhcnNlQ2xhc3MoVHJlZUJ1aWxkZXImLCBGdW5j
dGlvblJlcXVpcmVtZW50cywgUGFyc2VyQ2xhc3NJbmZvPFRyZWVCdWlsZGVyPiYpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAppbmRl
eCBhMTllNWUyNWM1MzFhNGE5ZDAwODY0ZGY4NWZkNGExYWM3OTlmZDA5Li4yODFkOTkwNmNjODUz
ODgwNWRmYTUxMTIxYmFmY2VkYjQ4NzE1NjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKQEAgLTcxNCwxOCArNzE0LDcgQEAgc3Rh
dGljIHZvaWQgdXBkYXRlUmVzdWx0UHJvZmlsZUZvckJpbmFyeUFyaXRoT3AoRXhlY1N0YXRlKiwg
SW5zdHJ1Y3Rpb24qLCBKU1ZhbHUKICAgICAvLyBPbmx5IHNhdmUgdmFyaWFibGVzIGFuZCB0ZW1w
b3JhcnkgcmVnaXN0ZXJzLiBUaGUgc2NvcGUgcmVnaXN0ZXJzIGFyZSBpbmNsdWRlZCBpbiB0aGVt
LgogICAgIC8vIEJ1dCBwYXJhbWV0ZXJzIGFyZSBub3QgaW5jbHVkZWQuIEJlY2F1c2UgdGhlIGdl
bmVyYXRvciBpbXBsZW1lbnRhdGlvbiByZXBsYWNlcyB0aGUgdmFsdWVzIG9mIHBhcmFtZXRlcnMg
b24gZWFjaCBnZW5lcmF0b3IubmV4dCgpIGNhbGwuCiAgICAgQkVHSU4oKTsKLSAgICBKU1ZhbHVl
IGdlbmVyYXRvciA9IE9QKDEpLmpzVmFsdWUoKTsKLSAgICBHZW5lcmF0b3JGcmFtZSogZnJhbWUg
PSBudWxscHRyOwotICAgIEpTVmFsdWUgdmFsdWUgPSBnZW5lcmF0b3IuZ2V0KGV4ZWMsIGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS5nZW5lcmF0b3JGcmFtZVByaXZhdGVOYW1lKTsKLSAgICBpZiAoIXZh
bHVlLmlzTnVsbCgpKQotICAgICAgICBmcmFtZSA9IGpzQ2FzdDxHZW5lcmF0b3JGcmFtZSo+KHZh
bHVlKTsKLSAgICBlbHNlIHsKLSAgICAgICAgLy8gRklYTUU6IE9uY2UgSlNHZW5lcmF0b3Igc3Bl
Y2lhbGl6ZWQgb2JqZWN0IGlzIGludHJvZHVjZWQsIHRoaXMgR2VuZXJhdG9yRnJhbWUgc2hvdWxk
IGJlIGVtYmVkZWQgaW50byBpdCB0byBhdm9pZCBhbGxvY2F0aW9ucy4KLSAgICAgICAgLy8gaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTU0NQotICAgICAgICBmcmFt
ZSA9IEdlbmVyYXRvckZyYW1lOjpjcmVhdGUoZXhlYy0+dm0oKSwgIGV4ZWMtPmNvZGVCbG9jaygp
LT5udW1DYWxsZWVMb2NhbHMoKSk7Ci0gICAgICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGdlbmVy
YXRvciwgdHJ1ZSwgUHV0UHJvcGVydHlTbG90OjpQdXRCeUlkKTsKLSAgICAgICAgYXNPYmplY3Qo
Z2VuZXJhdG9yKS0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPnB1dChhc09iamVjdChnZW5lcmF0
b3IpLCBleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuZ2VuZXJhdG9yRnJhbWVQcml2YXRlTmFt
ZSwgZnJhbWUsIHNsb3QpOwotICAgIH0KKyAgICBHZW5lcmF0b3JGcmFtZSogZnJhbWUgPSBqc0Nh
c3Q8R2VuZXJhdG9yRnJhbWUqPihPUCgxKS5qc1ZhbHVlKCkpOwogICAgIHVuc2lnbmVkIGxpdmVD
YWxsZWVMb2NhbHNJbmRleCA9IHBjWzJdLnUudW5zaWduZWRWYWx1ZTsKICAgICBmcmFtZS0+c2F2
ZShleGVjLCBleGVjLT5jb2RlQmxvY2soKS0+bGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQobGl2ZUNh
bGxlZUxvY2Fsc0luZGV4KSk7CiAgICAgRU5EKCk7CkBAIC03MzQsOCArNzIzLDcgQEAgc3RhdGlj
IHZvaWQgdXBkYXRlUmVzdWx0UHJvZmlsZUZvckJpbmFyeUFyaXRoT3AoRXhlY1N0YXRlKiwgSW5z
dHJ1Y3Rpb24qLCBKU1ZhbHUKIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9yZXN1bWUpCiB7CiAg
ICAgQkVHSU4oKTsKLSAgICBKU1ZhbHVlIGdlbmVyYXRvciA9IE9QKDEpLmpzVmFsdWUoKTsKLSAg
ICBHZW5lcmF0b3JGcmFtZSogZnJhbWUgPSBqc0Nhc3Q8R2VuZXJhdG9yRnJhbWUqPihnZW5lcmF0
b3IuZ2V0KGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5nZW5lcmF0b3JGcmFtZVByaXZhdGVO
YW1lKSk7CisgICAgR2VuZXJhdG9yRnJhbWUqIGZyYW1lID0ganNDYXN0PEdlbmVyYXRvckZyYW1l
Kj4oT1AoMSkuanNWYWx1ZSgpKTsKICAgICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXgg
PSBwY1syXS51LnVuc2lnbmVkVmFsdWU7CiAgICAgZnJhbWUtPnJlc3VtZShleGVjLCBleGVjLT5j
b2RlQmxvY2soKS0+bGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQobGl2ZUNhbGxlZUxvY2Fsc0luZGV4
KSk7CiAgICAgRU5EKCk7CkBAIC04MTYsNCArODA0LDEyIEBAIHN0YXRpYyB2b2lkIHVwZGF0ZVJl
c3VsdFByb2ZpbGVGb3JCaW5hcnlBcml0aE9wKEV4ZWNTdGF0ZSosIEluc3RydWN0aW9uKiwgSlNW
YWx1CiAgICAgRU5EKCk7CiB9CiAKK1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9uZXdfZ2VuZXJh
dG9yX2ZyYW1lKQoreworICAgIEJFR0lOKCk7CisgICAgdW5zaWduZWQgZ2VuZXJhdG9yTG9jYWxz
U2l6ZSA9IHBjWzJdLnUudW5zaWduZWRWYWx1ZTsKKyAgICBSRVRVUk4oR2VuZXJhdG9yRnJhbWU6
OmNyZWF0ZShleGVjLCBnZW5lcmF0b3JMb2NhbHNTaXplKSk7Cit9CisKKwogfSAvLyBuYW1lc3Bh
Y2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25T
bG93UGF0aHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRo
cy5oCmluZGV4IDQzYTg4YzQ2N2QxODU3ZTM2NzIyMDUzMDkyNzNmYTk1NDA1ZTAwYTAuLjAxODVk
ZTcyODVjOTJiMGNiYjM1OTE0NWEzODhjOThkZDM4YzI0NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCkBAIC0yNDgsNiArMjQ4LDcgQEAg
aW5saW5lIHZvaWQgdHJ5Q2FjaGVHZXRGcm9tU2NvcGVHbG9iYWwoCiBTTE9XX1BBVEhfSElEREVO
X0RFQ0woc2xvd19wYXRoX3B1c2hfd2l0aF9zY29wZSk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0wo
c2xvd19wYXRoX3Jlc29sdmVfc2NvcGUpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0
aF9jb3B5X3Jlc3QpOworU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9uZXdfZ2VuZXJh
dG9yX2ZyYW1lKTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZyYW1lLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZyYW1lLmNwcAppbmRleCBlZjZlYTdhMTAwMjU4YzNl
Y2UwNGRhYWI0M2JkYWE4NTFlYzhmNzE1Li4wZGNiNTE0YTQyMDk5OWZiZjU5ZGYxOGJkZGY1N2Mz
MGFkYTc5ZTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5l
cmF0b3JGcmFtZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJh
dG9yRnJhbWUuY3BwCkBAIC0zMCwxNSArMzAsMTYgQEAKICNpbmNsdWRlICJIZWFwSXRlcmF0aW9u
U2NvcGUuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ2Vs
bElubGluZXMuaCIKKyNpbmNsdWRlICJKU09iamVjdElubGluZXMuaCIKICNpbmNsdWRlICJTbG90
VmlzaXRvcklubGluZXMuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCiAKIG5hbWVz
cGFjZSBKU0MgewogCi1jb25zdCBDbGFzc0luZm8gR2VuZXJhdG9yRnJhbWU6OnNfaW5mbyA9IHsg
IkdlbmVyYXRvckZyYW1lIiwgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShH
ZW5lcmF0b3JGcmFtZSkgfTsKK2NvbnN0IENsYXNzSW5mbyBHZW5lcmF0b3JGcmFtZTo6c19pbmZv
ID0geyAiR2VuZXJhdG9yRnJhbWUiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBDUkVBVEVfTUVU
SE9EX1RBQkxFKEdlbmVyYXRvckZyYW1lKSB9OwogCi1HZW5lcmF0b3JGcmFtZTo6R2VuZXJhdG9y
RnJhbWUoVk0mIHZtLCBzaXplX3QgbnVtYmVyT2ZDYWxsZWVMb2NhbHMpCi0gICAgOiBCYXNlKHZt
LCB2bS5nZW5lcmF0b3JGcmFtZVN0cnVjdHVyZS5nZXQoKSkKK0dlbmVyYXRvckZyYW1lOjpHZW5l
cmF0b3JGcmFtZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCB1aW50MzJfdCBudW1iZXJP
ZkNhbGxlZUxvY2FscykKKyAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkKICAgICAsIG1fbnVtYmVy
T2ZDYWxsZWVMb2NhbHMobnVtYmVyT2ZDYWxsZWVMb2NhbHMpCiB7CiB9CkBAIC00NiwzMyArNDcs
NDIgQEAKIHZvaWQgR2VuZXJhdG9yRnJhbWU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKIHsKICAg
ICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgSlNWYWx1ZSBlbXB0eVZhbHVlOwogICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9udW1iZXJPZkNhbGxlZUxvY2FsczsgKytpKQotICAg
ICAgICBsb2NhbEF0KGkpLmNsZWFyKCk7CisgICAgICAgIGxvY2FsQXQoaSkuc2V0U3RhcnRpbmdW
YWx1ZShlbXB0eVZhbHVlKTsKIH0KIAogU3RydWN0dXJlKiBHZW5lcmF0b3JGcmFtZTo6Y3JlYXRl
U3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBw
cm90b3R5cGUpCiB7Ci0gICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmpl
Y3QsIHByb3RvdHlwZSwgVHlwZUluZm8oQ2VsbFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygp
KTsKKyAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90
eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiB9CiAK
LUdlbmVyYXRvckZyYW1lKiBHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlKFZNJiB2bSwgc2l6ZV90IG51
bWJlck9mTG9jYWxzKQorR2VuZXJhdG9yRnJhbWUqIEdlbmVyYXRvckZyYW1lOjpjcmVhdGUoVk0m
IHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgc2l6ZV90IG51bWJlck9mQ2FsbGVlTG9jYWxzKQog
ewogICAgIEdlbmVyYXRvckZyYW1lKiByZXN1bHQgPQogICAgICAgICBuZXcgKAogICAgICAgICAg
ICAgTm90TnVsbCwKLSAgICAgICAgICAgIGFsbG9jYXRlQ2VsbDxHZW5lcmF0b3JGcmFtZT4odm0u
aGVhcCwgYWxsb2NhdGlvblNpemVGb3JMb2NhbHMobnVtYmVyT2ZMb2NhbHMpKSkKLSAgICAgICAg
R2VuZXJhdG9yRnJhbWUodm0sIG51bWJlck9mTG9jYWxzKTsKKyAgICAgICAgICAgIGFsbG9jYXRl
Q2VsbDxHZW5lcmF0b3JGcmFtZT4odm0uaGVhcCwgYWxsb2NhdGlvblNpemVGb3JMb2NhbHMobnVt
YmVyT2ZDYWxsZWVMb2NhbHMpKSkKKyAgICAgICAgR2VuZXJhdG9yRnJhbWUodm0sIHN0cnVjdHVy
ZSwgbnVtYmVyT2ZDYWxsZWVMb2NhbHMpOwogICAgIHJlc3VsdC0+ZmluaXNoQ3JlYXRpb24odm0p
OwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK0dlbmVyYXRvckZyYW1lKiBHZW5lcmF0b3JGcmFt
ZTo6Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgc2l6ZV90IG51bWJlck9mQ2FsbGVlTG9jYWxzKQor
eworICAgIHJldHVybiBjcmVhdGUoZXhlYy0+dm0oKSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVj
dCgpLT5nZW5lcmF0b3JGcmFtZVN0cnVjdHVyZSgpLCBudW1iZXJPZkNhbGxlZUxvY2Fscyk7Cit9
CisKIHZvaWQgR2VuZXJhdG9yRnJhbWU6OnNhdmUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBGYXN0
Qml0VmVjdG9yJiBsaXZlQ2FsbGVlTG9jYWxzKQogeworICAgIC8vIEFsbG9jYXRlIHRoZSBnZW5l
cmF0b3IgbG9jYWwgc3BhY2UgZmlyc3QuCisgICAgbV9udW1iZXJPZlNhdmVkQ2FsbGVlTG9jYWxz
ID0gbGl2ZUNhbGxlZUxvY2Fscy5iaXRDb3VudCgpOworCiAgICAgLy8gT25seSBzYXZlIGNhbGxl
ZSBsb2NhbHMuCiAgICAgLy8gRXZlcnkgdGltZSBhIGdlbmVyYXRvciBpcyBjYWxsZWQgKG9yIHJl
c3VtZWQpLCBwYXJhbWV0ZXJzIHNob3VsZCBiZSByZXBsYWNlZC4KLSAgICBBU1NFUlQobGl2ZUNh
bGxlZUxvY2Fscy5udW1CaXRzKCkgPD0gbV9udW1iZXJPZkNhbGxlZUxvY2Fscyk7CisgICAgdW5z
aWduZWQgZ2VuZXJhdG9yTG9jYWxJbmRleCA9IDA7CiAgICAgbGl2ZUNhbGxlZUxvY2Fscy5mb3JF
YWNoU2V0Qml0KFsmXShzaXplX3QgaW5kZXgpIHsKLSAgICAgICAgbG9jYWxBdChpbmRleCkuc2V0
KGV4ZWMtPnZtKCksIHRoaXMsIGV4ZWMtPnVuY2hlY2tlZFIodmlydHVhbFJlZ2lzdGVyRm9yTG9j
YWwoaW5kZXgpKS5qc1ZhbHVlKCkpOworICAgICAgICBsb2NhbEF0KGdlbmVyYXRvckxvY2FsSW5k
ZXgrKykuc2V0KGV4ZWMtPnZtKCksIHRoaXMsIGV4ZWMtPnVuY2hlY2tlZFIodmlydHVhbFJlZ2lz
dGVyRm9yTG9jYWwoaW5kZXgpKS5qc1ZhbHVlKCkpOwogICAgIH0pOwogfQogCkBAIC04MCwxMCAr
OTAsMTEgQEAgdm9pZCBHZW5lcmF0b3JGcmFtZTo6cmVzdW1lKEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgRmFzdEJpdFZlY3RvciYgbGl2ZUNhbGxlZUxvY2EKIHsKICAgICAvLyBPbmx5IHJlc3VtZSBj
YWxsZWUgbG9jYWxzLgogICAgIC8vIEV2ZXJ5IHRpbWUgYSBnZW5lcmF0b3IgaXMgY2FsbGVkIChv
ciByZXN1bWVkKSwgcGFyYW1ldGVycyBzaG91bGQgYmUgcmVwbGFjZWQuCisgICAgdW5zaWduZWQg
Z2VuZXJhdG9yTG9jYWxJbmRleCA9IDA7CiAgICAgbGl2ZUNhbGxlZUxvY2Fscy5mb3JFYWNoU2V0
Qml0KFsmXShzaXplX3QgaW5kZXgpIHsKLSAgICAgICAgZXhlYy0+dW5jaGVja2VkUih2aXJ0dWFs
UmVnaXN0ZXJGb3JMb2NhbChpbmRleCkpID0gbG9jYWxBdChpbmRleCkuZ2V0KCk7Ci0gICAgICAg
IGxvY2FsQXQoaW5kZXgpLmNsZWFyKCk7CisgICAgICAgIGV4ZWMtPnVuY2hlY2tlZFIodmlydHVh
bFJlZ2lzdGVyRm9yTG9jYWwoaW5kZXgpKSA9IGxvY2FsQXQoZ2VuZXJhdG9yTG9jYWxJbmRleCsr
KS5nZXQoKTsKICAgICB9KTsKKyAgICBtX251bWJlck9mU2F2ZWRDYWxsZWVMb2NhbHMgPSAwOwog
fQogCiB2b2lkIEdlbmVyYXRvckZyYW1lOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xv
dFZpc2l0b3ImIHZpc2l0b3IpCkBAIC05MSw3ICsxMDIsMTIgQEAgdm9pZCBHZW5lcmF0b3JGcmFt
ZTo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAg
IEdlbmVyYXRvckZyYW1lKiB0aGlzT2JqZWN0ID0ganNDYXN0PEdlbmVyYXRvckZyYW1lKj4oY2Vs
bCk7CiAgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKICAgICAv
LyBTaW5jZSBvbmx5IHRydWUgY2VsbCBwb2ludGVycyBhcmUgc3RvcmVkIGFzIGEgY2VsbCwgd2Ug
Y2FuIHNhZmVseSBtYXJrIHRoZW0uCi0gICAgdmlzaXRvci5hcHBlbmRWYWx1ZXModGhpc09iamVj
dC0+bG9jYWxzKCksIHRoaXNPYmplY3QtPm1fbnVtYmVyT2ZDYWxsZWVMb2NhbHMpOworICAgIHZp
c2l0b3IuYXBwZW5kVmFsdWVzKHRoaXNPYmplY3QtPmxvY2FscygpLCB0aGlzT2JqZWN0LT5tX251
bWJlck9mU2F2ZWRDYWxsZWVMb2NhbHMpOworICAgIC8vIENsZWFyIG5vdCB1c2VkIGNhbGxlZSBs
b2NhbHMgd2hlbiBtYXJraW5nLgorICAgIC8vIFRoaXMgZW5zdXJlcyB0aGF0LCAiaWYgYSBnaXZl
biBsb2NhbCBoYXMgYSB2YWx1ZSwgdGhpcyB2YWx1ZSBpcyBjb3JyZWN0bHkgbWFya2VkIGluIHRo
ZSBwcmV2aW91cyBtYXJraW5nIHBoYXNlIi4KKyAgICBzaXplX3QgdW51c2VkTG9jYWxzQ291bnQg
PSB0aGlzT2JqZWN0LT5tX251bWJlck9mQ2FsbGVlTG9jYWxzIC0gdGhpc09iamVjdC0+bV9udW1i
ZXJPZlNhdmVkQ2FsbGVlTG9jYWxzOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdW51c2Vk
TG9jYWxzQ291bnQ7ICsraSkKKyAgICAgICAgdGhpc09iamVjdC0+bG9jYWxBdCh0aGlzT2JqZWN0
LT5tX251bWJlck9mU2F2ZWRDYWxsZWVMb2NhbHMgKyBpKS5jbGVhcigpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dl
bmVyYXRvckZyYW1lLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JG
cmFtZS5oCmluZGV4IDNkNTQ1YjE0N2RkNGFiZmIyYmJiOWI1YTcxOTRlOGY3NDg0MWM0OWEuLmNm
MWRiN2EyYmVlNjBkYTI5NDY0ZWM0MTdhMGM1ZmI4YzFmMGFlOGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZyYW1lLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJhbWUuaApAQCAtMjcsMTEgKzI3LDE0IEBA
CiAjZGVmaW5lIEdlbmVyYXRvckZyYW1lX2gKIAogI2luY2x1ZGUgIkpTQ2VsbC5oIgorI2luY2x1
ZGUgIkpTT2JqZWN0LmgiCiAjaW5jbHVkZSA8d3RmL0Zhc3RCaXRWZWN0b3IuaD4KIAogbmFtZXNw
YWNlIEpTQyB7CiAKLWNsYXNzIEdlbmVyYXRvckZyYW1lIDogcHVibGljIEpTQ2VsbCB7CitjbGFz
cyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisKK2NsYXNzIEdlbmVyYXRvckZyYW1lIDogcHVibGlj
IEpTTm9uRmluYWxPYmplY3QgewogICAgIGZyaWVuZCBjbGFzcyBKSVQ7CiAjaWYgRU5BQkxFKERG
R19KSVQpCiAgICAgZnJpZW5kIGNsYXNzIERGRzo6U3BlY3VsYXRpdmVKSVQ7CkBAIC0zOSwxMiAr
NDIsMTIgQEAgY2xhc3MgR2VuZXJhdG9yRnJhbWUgOiBwdWJsaWMgSlNDZWxsIHsKICNlbmRpZgog
ICAgIGZyaWVuZCBjbGFzcyBWTTsKIHB1YmxpYzoKLSAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOwot
ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IFN0cnVjdHVyZUlzSW1t
b3J0YWwgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKKyAgICB0eXBlZGVmIEpTTm9uRmluYWxPYmpl
Y3QgQmFzZTsKIAogICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CiAKLSAgICBzdGF0aWMgR2VuZXJh
dG9yRnJhbWUqIGNyZWF0ZShWTSYsIHNpemVfdCBudW1iZXJPZkNhbGxlZUxvY2Fscyk7CisgICAg
c3RhdGljIEdlbmVyYXRvckZyYW1lKiBjcmVhdGUoRXhlY1N0YXRlKiwgc2l6ZV90IG51bWJlck9m
Q2FsbGVlTG9jYWxzKTsKKyAgICBzdGF0aWMgR2VuZXJhdG9yRnJhbWUqIGNyZWF0ZShWTSYsIFN0
cnVjdHVyZSosIHNpemVfdCBudW1iZXJPZkNhbGxlZUxvY2Fscyk7CiAKICAgICBXcml0ZUJhcnJp
ZXJCYXNlPFVua25vd24+KiBsb2NhbHMoKQogICAgIHsKQEAgLTUzLDcgKzU2LDYgQEAgY2xhc3Mg
R2VuZXJhdG9yRnJhbWUgOiBwdWJsaWMgSlNDZWxsIHsKIAogICAgIFdyaXRlQmFycmllckJhc2U8
VW5rbm93bj4mIGxvY2FsQXQoc2l6ZV90IGluZGV4KQogICAgIHsKLSAgICAgICAgQVNTRVJUKGlu
ZGV4IDwgbV9udW1iZXJPZkNhbGxlZUxvY2Fscyk7CiAgICAgICAgIHJldHVybiBsb2NhbHMoKVtp
bmRleF07CiAgICAgfQogCkBAIC02Miw2ICs2NCwyMSBAQCBjbGFzcyBHZW5lcmF0b3JGcmFtZSA6
IHB1YmxpYyBKU0NlbGwgewogICAgICAgICByZXR1cm4gV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9m
PHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pPihzaXplb2YoR2VuZXJhdG9yRnJhbWUpKTsK
ICAgICB9CiAKKyAgICBzdGF0aWMgc2l6ZV90IGxvY2FsT2Zmc2V0KHVuc2lnbmVkIGluZGV4KQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIG9mZnNldE9mTG9jYWxzKCkgKyBpbmRleCAqIHNpemVvZihX
cml0ZUJhcnJpZXI8VW5rbm93bj4pOworICAgIH0KKworICAgIHN0YXRpYyBzaXplX3QgbnVtYmVy
T2ZDYWxsZWVMb2NhbHNPZmZzZXQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZT
RVRPRihHZW5lcmF0b3JGcmFtZSwgbV9udW1iZXJPZkNhbGxlZUxvY2Fscyk7CisgICAgfQorCisg
ICAgc3RhdGljIHNpemVfdCBudW1iZXJPZlNhdmVkQ2FsbGVlTG9jYWxzT2Zmc2V0KCkKKyAgICB7
CisgICAgICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoR2VuZXJhdG9yRnJhbWUsIG1fbnVtYmVy
T2ZTYXZlZENhbGxlZUxvY2Fscyk7CisgICAgfQorCiAgICAgc3RhdGljIHNpemVfdCBhbGxvY2F0
aW9uU2l6ZUZvckxvY2Fscyh1bnNpZ25lZCBudW1iZXJPZkxvY2FscykKICAgICB7CiAgICAgICAg
IHJldHVybiBvZmZzZXRPZkxvY2FscygpICsgbnVtYmVyT2ZMb2NhbHMgKiBzaXplb2YoV3JpdGVC
YXJyaWVyPFVua25vd24+KTsKQEAgLTczLDE2ICs5MCwxNiBAQCBjbGFzcyBHZW5lcmF0b3JGcmFt
ZSA6IHB1YmxpYyBKU0NlbGwgewogICAgIHZvaWQgcmVzdW1lKEV4ZWNTdGF0ZSosIGNvbnN0IEZh
c3RCaXRWZWN0b3ImIGxpdmVDYWxsZWVMb2NhbHMpOwogCiBwcml2YXRlOgotICAgIEdlbmVyYXRv
ckZyYW1lKFZNJiwgc2l6ZV90IG51bWJlck9mQ2FsbGVlTG9jYWxzKTsKKyAgICBHZW5lcmF0b3JG
cmFtZShWTSYsIFN0cnVjdHVyZSosIHVpbnQzMl90IG51bWJlck9mQ2FsbGVlTG9jYWxzKTsKIAot
ICAgIHNpemVfdCBtX251bWJlck9mQ2FsbGVlTG9jYWxzOworICAgIHVpbnQzMl90IG1fbnVtYmVy
T2ZDYWxsZWVMb2NhbHM7CisgICAgdWludDMyX3QgbV9udW1iZXJPZlNhdmVkQ2FsbGVlTG9jYWxz
IHsgMCB9OwogCiAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIAotICAg
IHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKLQogcHJvdGVjdGVkOgogICAgIHN0YXRpYyB2b2lk
IHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKKyAgICB2b2lkIGZpbmlzaENy
ZWF0aW9uKFZNJik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCBkYzcxNTZjODljZmFi
MTJjNmFmYmYzMGIxNzljZWI4NmY5OTkxMWViLi4wNTIyZjdhNmQ1MmRlMTVmYTkxODA1ZGE5MWZl
YTZkMmVjZGM0YzY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuY3BwCkBAIC01MSw2ICs1MSw3IEBACiAjaW5jbHVkZSAiRXJyb3JQcm90b3R5
cGUuaCIKICNpbmNsdWRlICJGdW5jdGlvbkNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiRnVuY3Rp
b25Qcm90b3R5cGUuaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JGcmFtZS5oIgogI2luY2x1ZGUgIkdl
bmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJHZW5lcmF0b3JGdW5jdGlv
blByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkdlbmVyYXRvclByb3RvdHlwZS5oIgpAQCAtNDA5LDYg
KzQxMCw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmluaXQoVk0mIHZtKQogICAgIAogICAgIEZP
Ul9FQUNIX0JVSUxUSU5fREVSSVZFRF9JVEVSQVRPUl9UWVBFKENSRUFURV9QUk9UT1RZUEVfRk9S
X0RFUklWRURfSVRFUkFUT1JfVFlQRSkKICAgICBtX3Byb3BlcnR5TmFtZUl0ZXJhdG9yU3RydWN0
dXJlLnNldCh2bSwgdGhpcywgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6Y3JlYXRlU3RydWN0dXJl
KHZtLCB0aGlzLCBtX2l0ZXJhdG9yUHJvdG90eXBlLmdldCgpKSk7CisgICAgbV9nZW5lcmF0b3JG
cmFtZVN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIEdlbmVyYXRvckZyYW1lOjpjcmVhdGVTdHJ1Y3R1
cmUodm0sIHRoaXMsIGpzTnVsbCgpKSk7CiAgICAgbV9nZW5lcmF0b3JQcm90b3R5cGUuc2V0KHZt
LCB0aGlzLCBHZW5lcmF0b3JQcm90b3R5cGU6OmNyZWF0ZSh2bSwgdGhpcywgR2VuZXJhdG9yUHJv
dG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1faXRlcmF0b3JQcm90b3R5cGUuZ2V0
KCkpKSk7CiAgICAgCiAjdW5kZWYgQ1JFQVRFX1BST1RPVFlQRV9GT1JfREVSSVZFRF9JVEVSQVRP
Ul9UWVBFCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
aAppbmRleCAxN2Y3NjJlZTA2NGNkOWYzNTlhZDcxYjQ1N2ZiZDUyNjU4ODJlNjMxLi5lZDBmOWI5
YjFmYzI4OTdiYTFhMWQyNGQ5OGIyMWExZTgwNGI4Nzk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTI1OCw2ICsyNTgsNyBAQCBjbGFz
cyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAg
ICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2NhbGxiYWNrRnVuY3Rpb25TdHJ1Y3R1cmU7CiAg
ICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9jYWxsYmFja09iamVjdFN0cnVjdHVyZTsKICAg
ICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3Byb3BlcnR5TmFtZUl0ZXJhdG9yU3RydWN0dXJl
OworICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fZ2VuZXJhdG9yRnJhbWVTdHJ1Y3R1cmU7
CiAjaWYgSlNDX09CSkNfQVBJX0VOQUJMRUQKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBt
X29iamNDYWxsYmFja0Z1bmN0aW9uU3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1
cmU+IG1fb2JqY1dyYXBwZXJPYmplY3RTdHJ1Y3R1cmU7CkBAIC01MTAsNiArNTExLDcgQEAgY2xh
c3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAg
ICAgU3RydWN0dXJlKiBjYWxsYmFja0Z1bmN0aW9uU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4g
bV9jYWxsYmFja0Z1bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBjYWxs
YmFja09iamVjdFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FsbGJhY2tPYmplY3RTdHJ1
Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIHByb3BlcnR5TmFtZUl0ZXJhdG9yU3RydWN0
dXJlKCkgY29uc3QgeyByZXR1cm4gbV9wcm9wZXJ0eU5hbWVJdGVyYXRvclN0cnVjdHVyZS5nZXQo
KTsgfQorICAgIFN0cnVjdHVyZSogZ2VuZXJhdG9yRnJhbWVTdHJ1Y3R1cmUoKSBjb25zdCB7IHJl
dHVybiBtX2dlbmVyYXRvckZyYW1lU3RydWN0dXJlLmdldCgpOyB9CiAjaWYgSlNDX09CSkNfQVBJ
X0VOQUJMRUQKICAgICBTdHJ1Y3R1cmUqIG9iamNDYWxsYmFja0Z1bmN0aW9uU3RydWN0dXJlKCkg
Y29uc3QgeyByZXR1cm4gbV9vYmpjQ2FsbGJhY2tGdW5jdGlvblN0cnVjdHVyZS5nZXQoKTsgfQog
ICAgIFN0cnVjdHVyZSogb2JqY1dyYXBwZXJPYmplY3RTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVy
biBtX29iamNXcmFwcGVyT2JqZWN0U3RydWN0dXJlLmdldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9WTS5jcHAKaW5kZXggMzM0Y2EzZDgzN2E2MzZjYjE3NGJmZjExYWU0YmI4MjRmMTVj
YTdmMi4uOTkyNWI4ZTdkODU1NmIzMmYzNWM0NjM1NmYyOWZmYzExYzAwYmU5MyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtMjQ5LDcgKzI0OSw2IEBAIHN0YXRpYyBib29s
IGVuYWJsZUFzc2VtYmxlcihFeGVjdXRhYmxlQWxsb2NhdG9yJiBleGVjdXRhYmxlQWxsb2NhdG9y
KQogICAgIGluZmVycmVkVHlwZVN0cnVjdHVyZS5zZXQoKnRoaXMsIEluZmVycmVkVHlwZTo6Y3Jl
YXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIGluZmVycmVkVHlwZVRhYmxl
U3RydWN0dXJlLnNldCgqdGhpcywgSW5mZXJyZWRUeXBlVGFibGU6OmNyZWF0ZVN0cnVjdHVyZSgq
dGhpcywgMCwganNOdWxsKCkpKTsKICAgICBmdW5jdGlvblJhcmVEYXRhU3RydWN0dXJlLnNldCgq
dGhpcywgRnVuY3Rpb25SYXJlRGF0YTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwo
KSkpOwotICAgIGdlbmVyYXRvckZyYW1lU3RydWN0dXJlLnNldCgqdGhpcywgR2VuZXJhdG9yRnJh
bWU6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICBleGNlcHRpb25T
dHJ1Y3R1cmUuc2V0KCp0aGlzLCBFeGNlcHRpb246OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwg
anNOdWxsKCkpKTsKICAgICBwcm9taXNlRGVmZXJyZWRTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBKU1By
b21pc2VEZWZlcnJlZDo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAg
IGludGVybmFsUHJvbWlzZURlZmVycmVkU3RydWN0dXJlLnNldCgqdGhpcywgSlNJbnRlcm5hbFBy
b21pc2VEZWZlcnJlZDo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKaW5kZXggYmQwYThkZTNlMjQ3MjFmNWQzZDg1ZGNiOGM5
YzFjNTk2ZTg4OGE0NC4uMjJmODY2NWJlYWI4Y2Y4N2M1ODAzNjVkNmFhYWRmMjNlNGNlNmVhZiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCkBAIC0zMjAsNyArMzIwLDYgQEAgY2xhc3Mg
Vk0gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Vk0+IHsKICAgICBTdHJvbmc8U3RydWN0
dXJlPiBpbmZlcnJlZFR5cGVTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gaW5mZXJy
ZWRUeXBlVGFibGVTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gZnVuY3Rpb25SYXJl
RGF0YVN0cnVjdHVyZTsKLSAgICBTdHJvbmc8U3RydWN0dXJlPiBnZW5lcmF0b3JGcmFtZVN0cnVj
dHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBleGNlcHRpb25TdHJ1Y3R1cmU7CiAgICAgU3Ry
b25nPFN0cnVjdHVyZT4gcHJvbWlzZURlZmVycmVkU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1
Y3R1cmU+IGludGVybmFsUHJvbWlzZURlZmVycmVkU3RydWN0dXJlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQtYXJy
YXkuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWIt
ZnRsLWFuZC1hcnJheS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZTkzOTgxMmZkYmFlYzZiODMyYmZkMDBmMjE1
M2RlZjg0YmI3NTkyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQtYXJyYXkuanMKQEAgLTAsMCArMSwyMyBA
QAorKGZ1bmN0aW9uICgpIHsKKyAgICBmdW5jdGlvbiAqZmliKCkKKyAgICB7CisgICAgICAgIGxl
dCBhID0gMTsKKyAgICAgICAgbGV0IGIgPSAxOworICAgICAgICBsZXQgYyA9IFsgMCBdOworICAg
ICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAgY1swXSA9IGE7CisgICAgICAgICAgICB5
aWVsZCBjOworICAgICAgICAgICAgW2EsIGJdID0gW2IsIGEgKyBiXTsKKyAgICAgICAgfQorICAg
IH0KKworICAgIGxldCB2YWx1ZSA9IDA7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxZTQ7ICsr
aSkgeworICAgICAgICBsZXQgZiA9IGZpYigpOworICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8
IDEwMDsgKytpKSB7CisgICAgICAgICAgICB2YWx1ZSA9IGYubmV4dCgpLnZhbHVlOworICAgICAg
ICB9CisgICAgICAgIGlmICh2YWx1ZVswXSAhPT0gMzU0MjI0ODQ4MTc5MjYyMDAwMDAwKQorICAg
ICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgdmFsdWU6JHtyZXN1bHR9YCk7CisgICAgfQor
fSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2Vu
ZXJhdG9yLWZpYi1mdGwtYW5kLW9iamVjdC5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0
cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwtYW5kLW9iamVjdC5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42Njcz
NDBmMmVhNGM3NDM4YTJkMjA5YWE0MGQwNjc3ZTRhYjdkM2ZiCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQt
b2JqZWN0LmpzCkBAIC0wLDAgKzEsMjMgQEAKKyhmdW5jdGlvbiAoKSB7CisgICAgZnVuY3Rpb24g
KmZpYigpCisgICAgeworICAgICAgICBsZXQgYSA9IDE7CisgICAgICAgIGxldCBiID0gMTsKKyAg
ICAgICAgbGV0IGMgPSB7IGZpYjogMCB9OworICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAg
ICAgICAgYy5maWIgPSBhOworICAgICAgICAgICAgeWllbGQgYzsKKyAgICAgICAgICAgIFthLCBi
XSA9IFtiLCBhICsgYl07CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQgdmFsdWUgPSAwOwor
ICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMWU0OyArK2kpIHsKKyAgICAgICAgbGV0IGYgPSBmaWIo
KTsKKyAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDA7ICsraSkgeworICAgICAgICAgICAg
dmFsdWUgPSBmLm5leHQoKS52YWx1ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAodmFsdWUuZmli
ICE9PSAzNTQyMjQ4NDgxNzkyNjIwMDAwMDApCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
YGJhZCB2YWx1ZToke3Jlc3VsdH1gKTsKKyAgICB9Cit9KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQtc3RyaW5n
LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0
bC1hbmQtc3RyaW5nLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQzOGFlNmFiMzM0NzA0NjgyMjg0OWY0MzAwNGVh
NWM0MDNlZWRhMjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLWFuZC1zdHJpbmcuanMKQEAgLTAsMCArMSwyMiBA
QAorKGZ1bmN0aW9uICgpIHsKKyAgICBmdW5jdGlvbiAqZmliKCkKKyAgICB7CisgICAgICAgIGxl
dCBhID0gMTsKKyAgICAgICAgbGV0IGIgPSAxOworICAgICAgICBsZXQgYyA9ICJSZXN1bHQhICI7
CisgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICB5aWVsZCBjICsgYTsKKyAgICAg
ICAgICAgIFthLCBiXSA9IFtiLCBhICsgYl07CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQg
dmFsdWUgPSAwOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMWU0OyArK2kpIHsKKyAgICAgICAg
bGV0IGYgPSBmaWIoKTsKKyAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDA7ICsraSkgewor
ICAgICAgICAgICAgdmFsdWUgPSBmLm5leHQoKS52YWx1ZTsKKyAgICAgICAgfQorICAgICAgICBp
ZiAodmFsdWUgIT09IGBSZXN1bHQhIDM1NDIyNDg0ODE3OTI2MjAwMDAwMGApCisgICAgICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IoYGJhZCB2YWx1ZToke3Jlc3VsdH1gKTsKKyAgICB9Cit9KCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3It
ZmliLWZ0bC5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9y
LWZpYi1mdGwuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzQwZTMzZGJjODY4YmVhN2E4OTNjOWVjMTZiNzc5ZWMy
NmJkYjE5YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9z
dHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwuanMKQEAgLTAsMCArMSwyMSBAQAorKGZ1bmN0aW9uICgp
IHsKKyAgICBmdW5jdGlvbiAqZmliKCkKKyAgICB7CisgICAgICAgIGxldCBhID0gMTsKKyAgICAg
ICAgbGV0IGIgPSAxOworICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAgeWllbGQg
YTsKKyAgICAgICAgICAgIFthLCBiXSA9IFtiLCBhICsgYl07CisgICAgICAgIH0KKyAgICB9CisK
KyAgICBsZXQgdmFsdWUgPSAwOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMWU0OyArK2kpIHsK
KyAgICAgICAgbGV0IGYgPSBmaWIoKTsKKyAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDA7
ICsraSkgeworICAgICAgICAgICAgdmFsdWUgPSBmLm5leHQoKS52YWx1ZTsKKyAgICAgICAgfQor
ICAgICAgICBpZiAodmFsdWUgIT09IDM1NDIyNDg0ODE3OTI2MjAwMDAwMCkKKyAgICAgICAgICAg
IHRocm93IG5ldyBFcnJvcihgYmFkIHZhbHVlOiR7cmVzdWx0fWApOworICAgIH0KK30oKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1m
cmFtZS1lbXB0eS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJh
dG9yLWZyYW1lLWVtcHR5LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU5ZTg4NTViZmFjM2M1NmRmOTI2YWJkNDI4
YzAxM2MzMzQxNjI3NDYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dGVzdHMvc3RyZXNzL2dlbmVyYXRvci1mcmFtZS1lbXB0eS5qcwpAQCAtMCwwICsxLDM0IEBACitm
dW5jdGlvbiBzaG91bGRUaHJvdyhmdW5jLCBlcnJvck1lc3NhZ2UpIHsKKyAgICB2YXIgZXJyb3JU
aHJvd24gPSBmYWxzZTsKKyAgICB2YXIgZXJyb3IgPSBudWxsOworICAgIHRyeSB7CisgICAgICAg
IGZ1bmMoKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGVycm9yVGhyb3duID0gdHJ1ZTsK
KyAgICAgICAgZXJyb3IgPSBlOworICAgIH0KKyAgICBpZiAoIWVycm9yVGhyb3duKQorICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IoJ25vdCB0aHJvd24nKTsKKyAgICBpZiAoU3RyaW5nKGVycm9yKSAh
PT0gZXJyb3JNZXNzYWdlKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCBlcnJvcjogJHtT
dHJpbmcoZXJyb3IpfWApOworfQorCitzaG91bGRUaHJvdyhmdW5jdGlvbiAoKSB7CisgICAgZnVu
Y3Rpb24gKmZpYihmbGFnKQorICAgIHsKKyAgICAgICAgbGV0IGEgPSAxOworICAgICAgICBsZXQg
YiA9IDE7CisgICAgICAgIHlpZWxkIDQyOworICAgICAgICBpZiAoZmxhZykKKyAgICAgICAgICAg
IHJldHVybiBjOworICAgICAgICBsZXQgYyA9IDUwMDsKKyAgICB9CisKKyAgICBsZXQgdmFsdWUg
PSAwOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMWU0OyArK2kpIHsKKyAgICAgICAgZm9yIChs
ZXQgdiBvZiBmaWIoZmFsc2UpKSB7CisgICAgICAgIH0KKyAgICB9CisgICAgZm9yIChsZXQgdiBv
ZiBmaWIodHJ1ZSkpIHsKKyAgICB9Cit9LCBgUmVmZXJlbmNlRXJyb3I6IENhbm5vdCBhY2Nlc3Mg
dW5pbml0aWFsaXplZCB2YXJpYWJsZS5gKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>278168</attachid>
            <date>2016-05-05 09:36:22 -0700</date>
            <delta_ts>2016-05-18 20:13:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-152723-20160506013702.patch</filename>
            <type>text/plain</type>
            <size>142191</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAwNDU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
NDFmZGI3ZTBhNGU2OWNlN2JjNjIyMWMxNzMxNjg2MmM3YWZiYzE3Li4wZTU4NDIyN2MwMzI1YjZj
OGMxMjhkYjQ2ZjBlNDNlZDA5OWE4M2RiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMzkgQEAKKzIwMTYtMDUtMDUgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0RGR10gRW1iZWQgZ2VuZXJhdG9yIGZyYW1lIGludG8gU2NvcGUg
YW5kIGVuYWJsZSBnZW5lcmF0b3IgaW4gREZHIC8gRlRMCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTI3MjMKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGlzIGFuIGluaXRpYWwgYXR0ZW1w
dCB0byBpbXBsZW1lbnQgREZHIGFuZCBGVEwgY2FwYWJsZSBFUzYgZ2VuZXJhdG9ycy4KKyAgICAg
ICAgV2UgaW50cm9kdWNlIHRoZSBzZXZlcmFsIGJ5dGVjb2RlcyBhbmQgY29tcGlsZSB0aGVtIGlu
IERGRyAvIEZUTC4KKworICAgICAgICAtIG9wX25ld19nZW5lcmF0b3JfZnJhbWUKKworICAgICAg
ICAgICAgQWxsb2NhdGUgR2VuZXJhdG9yRnJhbWUgaW4gdGhlIGJ5dGVjb2RlIGluc3RlYWQgb2Yg
YWxsb2NhdGluZyBpdCBpbiB0aGUgb3Bfc2F2ZS4KKworICAgICAgICAtIG9wX3NhdmUKKworICAg
ICAgICAgICAgTm93IEJ5dGVjb2RlTGl2ZW5lc3MgYW5hbHlzaXMgYW5kIFByZWNpc2VKdW1wVGFy
Z2V0IGFuYWx5c2lzIGhhdmUgMiBtb2RlczsgU3RhbmRhcmQgYW5kIEV4dHJhY3RHZW5lcmF0b3JM
aXZlQ2FsbGVlTG9jYWxzLgorICAgICAgICAgICAgVW5kZXIgRXh0cmFjdEdlbmVyYXRvckxpdmVD
YWxsZWVMb2NhbHMgbW9kZSwgb3Bfc2F2ZSBoYXMganVtcCB0byB0aGUgbWVyZ2UgcG9pbnQuIFRo
aXMganVtcCBpcyBqdXN0IHVzZWQgZm9yIHVzZS1kZWYgYW5hbHlzaXMgdG8gZXh0cmFjdAorICAg
ICAgICAgICAgbGl2ZSBjYWxsZWUgbG9jYWxzIGF0IHRoZSBtZXJnZSBwb2ludC4gVGhlc2UgbGl2
ZSBjYWxsZWUgbG9jYWxzIHNob3VsZCBiZSBzYXZlZCBhbmQgcmVzdW1lZCB0byBzdXNwZW5kIGFu
ZCByZXN1bWUgZ2VuZXJhdG9ycy4KKyAgICAgICAgICAgIFRoZSBtZXJnZSBwb2ludCBpcyB0aGUg
cG9pbnQgdGhhdCBtZXJnaW5nIHRoZSAyIGJhc2ljIGJsb2Nrcywgc2F2aW5nIGxvY2FscyB0byB0
aGUgZ2VuZXJhdG9yIGZyYW1lIGFuZCByZXN1bWluZyBsb2NhbHMgZnJvbSB0aGUgZ2VuZXJhdG9y
IGZyYW1lLgorCisgICAgICAgIC0gb3BfcmVzdW1lCisKKyAgICAgICAgICAgIFRoaXMgcmV0cmll
dmVzIGxvY2FsIHZhcmlhYmxlIGZyb20gdGhlIGdlbmVyYXRvciBmcmFtZS4gRXh0cmFjdEdlbmVy
YXRvckxpdmVDYWxsZWVMb2NhbHMgYW5hbHlzaXMgd2lsbCBkaXNjb3ZlciBsaXZlIGxvY2FscyBh
dCB0aGUgbWVyZ2UgcG9pbnQgYW5kIHJlY29yZCBsaXZlbmVzcworICAgICAgICAgICAgaW5mb3Jt
YXRpb24gdG8gb3Bfc2F2ZSBhbmQgb3BfcmVzdW1lLiBPbiB0aGUgYmFzaXMgb2YgdGhpcyBpbmZv
cm1hdGlvbiwgb3BfcmVzdW1lIHdpbGwgcmV0cmlldmUgc2F2ZWQgbG9jYWxzIGZyb20gdGhlIGdl
bmVyYXRvciBmcmFtZS4KKworICAgICAgICBIZXJlLCB3ZSBleHBsYWluIGFib3V0IGhvdyB0byBw
cmVwcm9jZXNzIGJ5dGVjb2Rlcy4KKyAgICAgICAgRmlyc3QsIHdlIGVtaXQgb3Bfc2F2ZSwgb3Bf
cmVzdW1lIGFuZCBwZXJmb3JtIEV4dHJhY3RHZW5lcmF0b3JMaXZlQ2FsbGVlTG9jYWxzIGFuYWx5
c2lzLgorCisgICAgICAgIFtlbnRyeV0gLSstLT4gW3NhdmUgYmxvY2tdIC0+IG9wX3NhdmUgKGl0
IGlzIGJyYW5jaGluZyBieXRlY29kZSkgLS0tLS0tPiBbbWVyZ2UgYmxvY2tdIC0+IC4uLgorICAg
ICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBeCisgICAgICAgICAgICAgICAgIHwgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKy0+IG9wX3JldCAgICAgICAgICAgICAgICAgICAgICAg
IHwKKyAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLT4gb3BfcmVzdW1lIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworCisgICAgICAgIFRoZW4sIGRpc2Nv
dmVyIGxpdmUgbG9jYWxzIGluZm9ybWF0aW9uIChhcyBGYXN0Qml0VmVjdG9yKSBhdCB0aGUgbWVy
Z2UgcG9pbnQgYW5kIHN0b3JlIGl0IHRvIGNvcnJlc3BvbmRpbmcgb3Bfc2F2ZSBhbmQgb3BfcmVz
dW1lLgorICAgICAgICBBZnRlciB0aGF0LCB1bmRlciBTdGFuZGFyZCBhbmFseXNpcyBtb2RlLCB0
aGUgYWJvdmUgYnl0ZWNvZGUgc3RyZWFtIHdpbGwgY29uc3RydWN0IHRoZSBmb2xsb3dpbmcgQ0ZH
LgorICAgICAgICBJbiB0aGUgZm9sbG93aW5nIENGRywgb3Bfc2F2ZSBubyBsb25nZXIgaGFzIGp1
bXAgdG8gdGhlIG1lcmdlIHBvaW50LiBUaGUgcmVtb3ZlZCBqdW1wIGVkZ2Ugd2FzIGp1c3QgdXNl
ZCB0byBjYWxjdWxhdGUgbGl2ZW5lc3MgaW5mb3JtYXRpb24gYXQgdGhlIG1lcmdlIHBvaW50Lgor
CisgICAgICAgIFtlbnRyeV0gLSstLT4gW3NhdmUgYmxvY2tdIC0+IG9wX3NhdmUgLT4gb3BfcmV0
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICstPiBbbWVyZ2UgYmxvY2tdIC0+IC4uLgor
ICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgICAgICAgICAgIHwgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHwKKyAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLT4gb3BfcmVzdW1lIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworCisgICAgICAgIEFuZCB3ZSBp
bnRyb2R1Y2VzIHNldmVyYWwgREZHIG5vZGVzLgorCisgICAgICAgIC0gTmV3R2VuZXJhdG9yRnJh
bWUKKworICAgICAgICAgICAgVGhpcyBqdXN0IGFsbG9jYXRlcyBHZW5lcmF0b3JGcmFtZS4KKwor
ICAgICAgICAtIFJlc2l6ZUdlbmVyYXRvckxvY2FscworCisgICAgICAgICAgICBUaGlzIHNldCBH
ZW5lcmF0b3JGcmFtZTo6bV9udW1iZXJPZlNhdmVkQ2FsbGVlTG9jYWxzICpOKi4gVGhpcyBub2Rl
IGlzIHVzZWQgdG8gKDEpIGFsbG9jYXRlIHNwYWNlIGZvciBsb2NhbHMgaW4gR2VuZXJhdG9yRnJh
bWUgYW5kICgyKSBkZWFsbG9jYXRlIHNwYWNlIGluCisgICAgICAgICAgICBHZW5lcmF0b3JGcmFt
ZSBieSBzZXR0aW5nIGl0IGFzIDAuCisKKyAgICAgICAgLSBHZXRHZW5lcmF0b3JMb2NhbAorCisg
ICAgICAgICAgICBHZXQgYSBzYXZlZCBsb2NhbCB2YXJpYWJsZSBmcm9tIGEgZ2VuZXJhdG9yIGZy
YW1lLiBHZXRHZW5lcmF0b3JMb2NhbCBhbmQgU2V0R2VuZXJhdG9yTG9jYWwgYXJlIGxpbmtlZCB3
aXRoIEdlbmVyYXRvckxvY2FsRGF0YS4gU28gdHlwZSBwcmVkaWNhdGlvbiBhbmQgZmxhZ3MKKyAg
ICAgICAgICAgIGFyZSBjb3JyZWN0bHkgcHJvcGFnYXRlZCBiZXlvbmQgdGhlIGdlbmVyYXRvciBm
cmFtZS4KKworICAgICAgICAtIFNldEdlbmVyYXRvckxvY2FsCisKKyAgICAgICAgICAgIFN0b3Jl
IGEgbG9jYWwgdmFyaWFibGUgdG8gYSBnZW5lcmF0b3IgZnJhbWUuCisKKyAgICAgICAgRnV0dXJl
IHBsYW5zIGFyZSB0aGUgZm9sbG93aW5ncy4KKworICAgICAgICAxLiBTdXBwb3J0IHRyYW5zZmVy
cmluZyBBYnN0cmFjdFZhbHVlIGJldHdlZW4gU2V0R2VuZXJhdG9yTG9jYWwgYW5kIEdldEdlbmVy
YXRvckxvY2FsLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUzMTgz
CisKKyAgICAgICAgMi4gQ3JlYXRlIEpTR2VuZXJhdG9yIGFuZCBhbGxvY2F0ZSBpdCBpbiB0aGUg
Z2VuZXJhdG9yIHdyYXBwZXIgZnVuY3Rpb24uIFRoaXMgc2hvdWxkIGJlIGNvbXBpbGVkIGluIERG
RyAvIEZUTCBhbmQKKyAgICAgICAgdGhpcyBvYmplY3Qgc2hvdWxkIGJlIHRyYWNrZWQgKGJ5IGVz
Y2FwZSBhbmFseXNpcykgYW5kIGVsaW1pbmF0ZWQgaWYgcG9zc2libGUgYnkgb2JqZWN0IGFsbG9j
YXRpb24gZWxpbWluYXRpb24uCisKKyAgICAgICAgMy4gQW5kIG9uY2Ugd2UgZXhwbG9pdCB0aGF0
IEdlbmVyYXRvckZyYW1lIGlzIG5vdCBlc2NhcGVkIGZyb20gdGhlIGdpdmVuIEZUTC1lZCBmdW5j
dGlvbiwgd2Ugd2lsbCBlbGltaW5hdGUgR2VuZXJhdG9yRnJhbWUgYWxsb2NhdGlvbiBhbmQKKyAg
ICAgICAgY29udmVydCBHZW5lcmF0b3JMb2NhbCBvcGVyYXRpb25zIGludG8gZ2V0L3NldCBsb2Nh
bCBvcGVyYXRpb25zLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBidWlsdGlu
cy9HZW5lcmF0b3JQcm90b3R5cGUuanM6CisgICAgICAgIChnZW5lcmF0b3JSZXN1bWUpOgorICAg
ICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5jcHA6CisgICAgICAgIChKU0M6Omlz
QnJhbmNoKToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MpOgorICAg
ICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5oOgorICAgICAgICAqIGJ5dGVjb2Rl
L0J5dGVjb2RlR3JhcGguY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmguCisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
R3JhcGg6OkJ5dGVjb2RlR3JhcGgpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlR3JhcGgu
aDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2
ZW5lc3NBbmFseXNpcy5oLgorICAgICAgICAoSlNDOjpCeXRlY29kZUdyYXBoOjpieXRlY29kZUFu
YWx5c2lzTW9kZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR3JhcGg6OmNvZGVCbG9jayk6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR3JhcGg6OmJhc2ljQmxvY2tzKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHcmFwaDo6UmV2ZXJzZUl0ZXJhYmxlOjpSZXZlcnNlSXRlcmFibGUpOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUdyYXBoOjpSZXZlcnNlSXRlcmFibGU6OmJlZ2luKToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHcmFwaDo6UmV2ZXJzZUl0ZXJhYmxlOjplbmQpOgorICAgICAgICAoSlND
OjpCeXRlY29kZUdyYXBoOjpiYXNpY0Jsb2Nrc0luUmV2ZXJzZU9yZGVyKToKKyAgICAgICAgKiBi
eXRlY29kZS9CeXRlY29kZUluc2VydGlvblNldC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmguCisgICAgICAgIChK
U0M6OkJ5dGVjb2RlSW5zZXJ0aW9uU2V0OjpCeXRlY29kZUluc2VydGlvblNldCk6CisgICAgICAg
ICogYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb246CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNv
ZGVMaXZlbmVzc0FuYWx5c2lzLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc0Fu
YWx5c2lzOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMpOgorICAgICAgICAoSlNDOjpmaW5kQmFz
aWNCbG9ja1dpdGhMZWFkZXJPZmZzZXQpOgorICAgICAgICAoSlNDOjpmaW5kQmFzaWNCbG9ja0Zv
ckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6c3RlcE92ZXJJbnN0cnVjdGlvbik6Cisg
ICAgICAgIChKU0M6OmNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAg
ICAgICAoSlNDOjpjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJsb2NrKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpydW5MaXZlbmVzc0ZpeHBvaW50KToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpnZXRMaXZlbmVzc0luZm9BdEJ5dGVjb2Rl
T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpjb21wdXRl
RnVsbExpdmVuZXNzKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpj
b21wdXRlS2lsbHMpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmR1
bXBSZXN1bHRzKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpjb21w
dXRlKTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlz
aXMuaDoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZVVzZURlZi5oOgorICAgICAgICAoSlND
Ojpjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZURl
ZnNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoK
KyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpD
b2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjp2YWxp
ZGF0ZSk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6OkNv
ZGVCbG9jazo6bGl2ZW5lc3NBbmFseXNpcyk6CisgICAgICAgICogYnl0ZWNvZGUvUHJlY2lzZUp1
bXBUYXJnZXRzLmNwcDoKKyAgICAgICAgKEpTQzo6Z2V0SnVtcFRhcmdldHNGb3JCeXRlY29kZU9m
ZnNldCk6CisgICAgICAgIChKU0M6OmNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMpOgorICAgICAg
ICAoSlNDOjpmaW5kSnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgICogYnl0
ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVj
b2RlR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdH
ZW5lcmF0b3JGcmFtZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0U2F2
ZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzdW1lKToKKyAgICAg
ICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRvckZyYW1lUmVnaXN0ZXIpOgorICAgICAgICAqIGRmZy9E
RkdBYnN0cmFjdEhlYXAuaDoKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklu
bGluZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0
U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6Om5ld0dlbmVyYXRv
ckxvY2FsRGF0YSk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxv
Y2spOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUNvZGVCbG9jayk6
CisgICAgICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
Y2FwYWJpbGl0eUxldmVsKToKKyAgICAgICAgKiBkZmcvREZHQ2xvYmJlcml6ZS5oOgorICAgICAg
ICAoSlNDOjpERkc6OmNsb2JiZXJpemUpOgorICAgICAgICAqIGRmZy9ERkdDbG9iYmVyc0V4aXRT
dGF0ZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Y2xvYmJlcnNFeGl0U3RhdGUpOgorICAgICAg
ICAqIGRmZy9ERkdEb2VzR0MuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmRvZXNHQyk6CisgICAg
ICAgICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhh
c2U6OmZpeHVwTm9kZSk6CisgICAgICAgICogZGZnL0RGR0dlbmVyYXRvckxvY2FsRGF0YS5oOiBD
b3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJn
ZXRzLmguCisgICAgICAgIChKU0M6OkRGRzo6R2VuZXJhdG9yTG9jYWxEYXRhOjpwcmVkaWN0KToK
KyAgICAgICAgKEpTQzo6REZHOjpHZW5lcmF0b3JMb2NhbERhdGE6OnByZWRpY3Rpb24pOgorICAg
ICAgICAqIGRmZy9ERkdHcmFwaC5oOgorICAgICAgICAqIGRmZy9ERkdNYXlFeGl0LmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjptYXlFeGl0KToKKyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAg
ICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc0dlbmVyYXRvckxvY2Fsc1NpemUpOgorICAgICAgICAo
SlNDOjpERkc6Ok5vZGU6OmdlbmVyYXRvckxvY2Fsc1NpemUpOgorICAgICAgICAoSlNDOjpERkc6
Ok5vZGU6Omhhc0dlbmVyYXRvckxvY2FsSW5kZXgpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6
OmdlbmVyYXRvckxvY2FsSW5kZXgpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc0dlbmVy
YXRvckxvY2FsRGF0YSk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6Z2VuZXJhdG9yTG9jYWxE
YXRhKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNHZW5lcmF0b3JGcmFtZUxvY2Fscyk6
CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6Z2VuZXJhdG9yRnJhbWVMb2NhbHMpOgorICAgICAg
ICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNwcDoK
KyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0
aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUu
aDoKKyAgICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZH
U3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpj
b21waWxlTmV3R2VuZXJhdG9yRnJhbWUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpjb21waWxlUmVzaXplR2VuZXJhdG9yTG9jYWxzKToKKyAgICAgICAgKiBkZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAq
IGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlv
blBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHU3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2Uu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OlN0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlOjpydW4p
OgorICAgICAgICAqIGZ0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcDoKKyAgICAgICAg
KiBmdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oOgorICAgICAgICAqIGZ0bC9GVExDYXBh
YmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmNhbkNvbXBpbGUpOgorICAgICAgICAq
IGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3Mp
OgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUT3Bjb2Rlcy5jcHA6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9zYXZlKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
X29wX3Jlc3VtZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9uZXdfZ2VuZXJhdG9yX2Zy
YW1lKToKKyAgICAgICAgKiBqaXQvSklUT3Bjb2RlczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0X29wX3NhdmUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcmVzdW1lKToK
KyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRXcml0ZUJhcnJpZXIpOgorICAgICAgICAqIGxsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rv
ci5jcHA6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc206CisgICAgICAg
ICogcGFyc2VyL1BhcnNlci5jcHA6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+Ojpw
YXJzZUlubmVyKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlR2VuZXJh
dG9yRnVuY3Rpb25Tb3VyY2VFbGVtZW50cyk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5
cGU+OjpjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2Vy
Lmg6CisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAoSlND
OjpTTE9XX1BBVEhfREVDTCk6CisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuaDoK
KyAgICAgICAgKiBydW50aW1lL0dlbmVyYXRvckZyYW1lLmNwcDoKKyAgICAgICAgKEpTQzo6R2Vu
ZXJhdG9yRnJhbWU6OkdlbmVyYXRvckZyYW1lKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJh
bWU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OmNyZWF0
ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpjcmVhdGUpOgorICAg
ICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6c2F2ZSk6CisgICAgICAgIChKU0M6OkdlbmVyYXRv
ckZyYW1lOjpyZXN1bWUpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6dmlzaXRDaGls
ZHJlbik6CisgICAgICAgICogcnVudGltZS9HZW5lcmF0b3JGcmFtZS5oOgorICAgICAgICAoSlND
OjpHZW5lcmF0b3JGcmFtZTo6bG9jYWxPZmZzZXQpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JG
cmFtZTo6bnVtYmVyT2ZDYWxsZWVMb2NhbHNPZmZzZXQpOgorICAgICAgICAoSlNDOjpHZW5lcmF0
b3JGcmFtZTo6bnVtYmVyT2ZTYXZlZENhbGxlZUxvY2Fsc09mZnNldCk6CisgICAgICAgIChKU0M6
OkdlbmVyYXRvckZyYW1lOjpsb2NhbEF0KTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmluaXQpOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNHbG9i
YWxPYmplY3Q6OmdlbmVyYXRvckZyYW1lU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL1ZN
LmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OlZNKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1l
L1ZNLmg6CisgICAgICAgICogdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLWFuZC1hcnJh
eS5qczogQWRkZWQuCisgICAgICAgIChmaWIpOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9nZW5l
cmF0b3ItZmliLWZ0bC1hbmQtb2JqZWN0LmpzOiBBZGRlZC4KKyAgICAgICAgKGZpYik6CisgICAg
ICAgICogdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLWFuZC1zdHJpbmcuanM6IEFkZGVk
LgorICAgICAgICAoZmliKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1m
dGwuanM6IEFkZGVkLgorICAgICAgICAoZmliKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvZ2Vu
ZXJhdG9yLWZyYW1lLWVtcHR5LmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZFRocm93KToKKyAg
ICAgICAgKHNob3VsZFRocm93LmZpYik6CisKIDIwMTYtMDUtMDUgIEpvc2VwaCBQZWNvcmFybyAg
PHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBDcmVhdGUgY29uc29sZSBvYmplY3QgbGF6
aWx5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggMWVkYmVjMjIzMTFjYjNj
YzQwMjk5NmE2MDVjMGRlNzA1ZTBjNDhhYi4uYmJlYmRiZDI5MGUwODdlZjdlY2VhYmY4N2I1NmRl
MTI0ODAyMWFlYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMu
dHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTc4LDYg
KzE3OCw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgYnl0ZWNvZGUvQXJyYXlB
bGxvY2F0aW9uUHJvZmlsZS5jcHAKICAgICBieXRlY29kZS9BcnJheVByb2ZpbGUuY3BwCiAgICAg
Ynl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcAorICAgIGJ5dGVjb2RlL0J5dGVjb2RlR3Jh
cGguY3BwCiAgICAgYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5jcHAKICAgICBi
eXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwCiAgICAgYnl0ZWNvZGUvQ2FsbEVk
Z2UuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDU4NzJhMzg5ODhjNzRlZDA5
NGNmMmQ4NGRjNzQxMjM4ZDBjYWYzOWEuLjUyNWY2NTRmODg4ZjZkYWZmYmE2ZDM1MmNiNjBiMjUw
MmRkNmU0YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMjQxLDYgKzEyNDEs
NyBAQAogCQk3MDVCNDFCMDFBNkU1MDFFMDA3MTY3NTcgLyogU3ltYm9sT2JqZWN0LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MDVCNDFBODFBNkU1MDFF
MDA3MTY3NTcgLyogU3ltYm9sT2JqZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzA1QjQxQjExQTZFNTAxRTAwNzE2NzU3IC8qIFN5bWJvbFBy
b3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3MDVCNDFBOTFBNkU1MDFFMDA3MTY3NTcgLyogU3ltYm9sUHJvdG90eXBlLmNwcCAqLzsgfTsK
IAkJNzA1QjQxQjIxQTZFNTAxRTAwNzE2NzU3IC8qIFN5bWJvbFByb3RvdHlwZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzA1QjQxQUExQTZFNTAxRTAw
NzE2NzU3IC8qIFN5bWJvbFByb3RvdHlwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCTcwNzkxNDFEMUM0QUE4NjAwMEI4MkZGNyAvKiBERkdHZW5l
cmF0b3JMb2NhbERhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDcwNzkxNDFDMUM0QUE4MDcwMEI4MkZGNyAvKiBERkdHZW5lcmF0b3JMb2NhbERhdGEu
aCAqLzsgfTsKIAkJNzA5NEM0REUxQUU0Mzk1MzAwNDFBMkVFIC8qIEJ5dGVjb2RlSW50cmluc2lj
UmVnaXN0cnkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNzA5NEM0REMxQUU0Mzk1MzAwNDFBMkVFIC8qIEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnku
Y3BwICovOyB9OwogCQk3MDk0QzRERjFBRTQzOTUzMDA0MUEyRUUgLyogQnl0ZWNvZGVJbnRyaW5z
aWNSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNzA5NEM0REQxQUU0Mzk1MzAwNDFBMkVFIC8qIEJ5dGVjb2RlSW50cmluc2ljUmVnaXN0cnku
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MDlG
Qjg2NzFBRTMzNUM2MDAzOUQwNjkgLyogSlNXZWFrU2V0LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwOUZCODYxMUFFMzM1QzYwMDM5RDA2OSAvKiBK
U1dlYWtTZXQuY3BwICovOyB9OwpAQCAtMzQyMCw2ICszNDIxLDcgQEAKIAkJNzA1QjQxQTgxQTZF
NTAxRTAwNzE2NzU3IC8qIFN5bWJvbE9iamVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTeW1ib2xPYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzA1
QjQxQTkxQTZFNTAxRTAwNzE2NzU3IC8qIFN5bWJvbFByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTeW1ib2xQcm90b3R5cGUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3MDVCNDFBQTFBNkU1MDFFMDA3MTY3NTcgLyogU3ltYm9sUHJv
dG90eXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN5bWJvbFByb3RvdHlw
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MDc5MTQxQzFDNEFBODA3MDBCODJG
RjcgLyogREZHR2VuZXJhdG9yTG9jYWxEYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IERGR0dlbmVyYXRvckxvY2FsRGF0YS5oOyBwYXRoID0gZGZnL0RGR0dlbmVyYXRvckxv
Y2FsRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MDk0QzREQzFBRTQzOTUz
MDA0MUEyRUUgLyogQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzA5NEM0REQxQUU0Mzk1MzAwNDFBMkVFIC8qIEJ5
dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3MDlGQjg2MTFBRTMzNUM2MDAzOUQwNjkgLyogSlNXZWFrU2V0LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTV2Vha1NldC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC02MjE3LDYgKzYyMTksNyBAQAogCQkJCTJBODgwNjc2MTkxMDdENTUw
MENCMEJCQiAvKiBERkdGdW5jdGlvbldoaXRlbGlzdC5jcHAgKi8sCiAJCQkJMkE4ODA2NzcxOTEw
N0Q1NTAwQ0IwQkJCIC8qIERGR0Z1bmN0aW9uV2hpdGVsaXN0LmggKi8sCiAJCQkJODZFQzlEQjYx
MzI4REY4MjAwMkIyQUQ3IC8qIERGR0dlbmVyYXRpb25JbmZvLmggKi8sCisJCQkJNzA3OTE0MUMx
QzRBQTgwNzAwQjgyRkY3IC8qIERGR0dlbmVyYXRvckxvY2FsRGF0YS5oICovLAogCQkJCTg2RUM5
REI3MTMyOERGODIwMDJCMkFENyAvKiBERkdHcmFwaC5jcHAgKi8sCiAJCQkJODZFQzlEQjgxMzI4
REY4MjAwMkIyQUQ3IC8qIERGR0dyYXBoLmggKi8sCiAJCQkJMEYyRkNDRjIxOEE2MDA3MDAwMUEy
N0Y4IC8qIERGR0dyYXBoU2FmZXBvaW50LmNwcCAqLywKQEAgLTc5NjUsNiArNzk2OCw3IEBACiAJ
CQkJMEZFMDUwMjkxQUE5MDk1NjAwRDMzQjMzIC8qIFNjb3BlZEFyZ3VtZW50c1RhYmxlLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRkUwNTAyQjFBQTkwOTU2MDBEMzNCMzMgLyogU2NvcGVPZmZzZXQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjRFNTUyMTdFRTI3NDkwMEFCQjIxNyAvKiBTY3JhdGNo
UmVnaXN0ZXJBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCTcwNzkxNDFEMUM0QUE4NjAw
MEI4MkZGNyAvKiBERkdHZW5lcmF0b3JMb2NhbERhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1
RkQwMDY4MTg5QUZFOUMwMDYzMzIzMSAvKiBTY3JpcHRBcmd1bWVudHMuaCBpbiBIZWFkZXJzICov
LAogCQkJCUE1MDNGQTIxMTg4RUZGNjgwMDExMEYxNCAvKiBTY3JpcHRCcmVha3BvaW50LmggaW4g
SGVhZGVycyAqLywKIAkJCQlBNUZEMDA2RTE4OUIwMEFBMDA2MzMyMzEgLyogU2NyaXB0Q2FsbEZy
YW1lLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
dWlsdGlucy9HZW5lcmF0b3JQcm90b3R5cGUuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVp
bHRpbnMvR2VuZXJhdG9yUHJvdG90eXBlLmpzCmluZGV4IDY5NDYzYzMzNjAyZTI4ZjdkZDQyOWFk
MjM0NmRiMWE3ZTVlZWRkZWUuLjA0YTYzMzM4ZjdhMTJkMGRhMTg0ZGVmYWM5YWJkZmNlYTkzNTBi
ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9HZW5lcmF0b3JQ
cm90b3R5cGUuanMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0dlbmVyYXRv
clByb3RvdHlwZS5qcwpAQCAtNDksNyArNDksNyBAQCBmdW5jdGlvbiBnZW5lcmF0b3JSZXN1bWUo
Z2VuZXJhdG9yLCBzZW50VmFsdWUsIHJlc3VtZU1vZGUpCiAgICAgfSBlbHNlIHsKICAgICAgICAg
dHJ5IHsKICAgICAgICAgICAgIGdlbmVyYXRvci5AZ2VuZXJhdG9yU3RhdGUgPSBAR2VuZXJhdG9y
U3RhdGVFeGVjdXRpbmc7Ci0gICAgICAgICAgICB2YWx1ZSA9IGdlbmVyYXRvci5AZ2VuZXJhdG9y
TmV4dC5AY2FsbChnZW5lcmF0b3IuQGdlbmVyYXRvclRoaXMsIGdlbmVyYXRvciwgc3RhdGUsIHNl
bnRWYWx1ZSwgcmVzdW1lTW9kZSk7CisgICAgICAgICAgICB2YWx1ZSA9IGdlbmVyYXRvci5AZ2Vu
ZXJhdG9yTmV4dC5AY2FsbChnZW5lcmF0b3IuQGdlbmVyYXRvclRoaXMsIGdlbmVyYXRvciwgc3Rh
dGUsIHNlbnRWYWx1ZSwgcmVzdW1lTW9kZSwgZ2VuZXJhdG9yLkBnZW5lcmF0b3JGcmFtZSk7CiAg
ICAgICAgICAgICBpZiAoZ2VuZXJhdG9yLkBnZW5lcmF0b3JTdGF0ZSA9PT0gQEdlbmVyYXRvclN0
YXRlRXhlY3V0aW5nKSB7CiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLkBnZW5lcmF0b3JTdGF0
ZSA9IEBHZW5lcmF0b3JTdGF0ZUNvbXBsZXRlZDsKICAgICAgICAgICAgICAgICBkb25lID0gdHJ1
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJh
c2ljQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQmFz
aWNCbG9jay5jcHAKaW5kZXggN2YxN2MwZWYxMGI0MzNmYWM4ZjU4Y2IzYjljYTVkNGQwMTViYmEw
OC4uZWMwZGJmNjA1NjI1ZTFjMDYyMTNmYjRmNGI5MDA3M2FhY2I0N2M5MyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5jcHAK
QEAgLTM4LDcgKzM4LDcgQEAgdm9pZCBCeXRlY29kZUJhc2ljQmxvY2s6OnNocmlua1RvRml0KCkK
ICAgICBtX3N1Y2Nlc3NvcnMuc2hyaW5rVG9GaXQoKTsKIH0KIAotc3RhdGljIGJvb2wgaXNCcmFu
Y2goT3Bjb2RlSUQgb3Bjb2RlSUQpCitzdGF0aWMgYm9vbCBpc0JyYW5jaChPcGNvZGVJRCBvcGNv
ZGVJRCwgQnl0ZWNvZGVBbmFseXNpc01vZGUgYnl0ZWNvZGVBbmFseXNpc01vZGUpCiB7CiAgICAg
c3dpdGNoIChvcGNvZGVJRCkgewogICAgIGNhc2Ugb3Bfam1wOgpAQCAtNTgsOCArNTgsMTEgQEAg
c3RhdGljIGJvb2wgaXNCcmFuY2goT3Bjb2RlSUQgb3Bjb2RlSUQpCiAgICAgY2FzZSBvcF9zd2l0
Y2hfaW1tOgogICAgIGNhc2Ugb3Bfc3dpdGNoX2NoYXI6CiAgICAgY2FzZSBvcF9zd2l0Y2hfc3Ry
aW5nOgotICAgIGNhc2Ugb3Bfc2F2ZToKICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBjYXNl
IG9wX3NhdmU6CisgICAgICAgIHJldHVybiBieXRlY29kZUFuYWx5c2lzTW9kZSA9PSBCeXRlY29k
ZUFuYWx5c2lzTW9kZTo6RXh0cmFjdEdlbmVyYXRvckxpdmVDYWxsZWVMb2NhbHM7CisKICAgICBk
ZWZhdWx0OgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpAQCAtMTEwLDEwICsxMTMsMTAg
QEAgc3RhdGljIHZvaWQgbGlua0Jsb2NrcyhCeXRlY29kZUJhc2ljQmxvY2sqIHByZWRlY2Vzc29y
LCBCeXRlY29kZUJhc2ljQmxvY2sqIHN1Y2MKICAgICBwcmVkZWNlc3Nvci0+YWRkU3VjY2Vzc29y
KHN1Y2Nlc3Nvcik7CiB9CiAKLXZvaWQgY29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MoQ29kZUJs
b2NrKiBjb2RlQmxvY2ssIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2Nr
Pj4mIGJhc2ljQmxvY2tzKQordm9pZCBjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2NrcyhDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVBbmFseXNpc01vZGUgYnl0ZWNvZGVBbmFseXNpc01vZGUs
IFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mIGJhc2ljQmxvY2tz
KQogewogICAgIFZlY3Rvcjx1bnNpZ25lZCwgMzI+IGp1bXBUYXJnZXRzOwotICAgIGNvbXB1dGVQ
cmVjaXNlSnVtcFRhcmdldHMoY29kZUJsb2NrLCBqdW1wVGFyZ2V0cyk7CisgICAgY29tcHV0ZVBy
ZWNpc2VKdW1wVGFyZ2V0cyhjb2RlQmxvY2ssIGJ5dGVjb2RlQW5hbHlzaXNNb2RlLCBqdW1wVGFy
Z2V0cyk7CiAKICAgICAvLyBDcmVhdGUgdGhlIGVudHJ5IGFuZCBleGl0IGJhc2ljIGJsb2Nrcy4K
ICAgICBiYXNpY0Jsb2Nrcy5yZXNlcnZlQ2FwYWNpdHkoanVtcFRhcmdldHMuc2l6ZSgpICsgMik7
CkBAIC0xNDksNyArMTUyLDcgQEAgdm9pZCBjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2NrcyhDb2Rl
QmxvY2sqIGNvZGVCbG9jaywgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXQKICAgICAgICAgfQog
CiAgICAgICAgIC8vIElmIHRoZSBjdXJyZW50IGJ5dGVjb2RlIGlzIGEgYnJhbmNoIG9yIGEgcmV0
dXJuLCB0aGVuIHRoZSBuZXh0IGluc3RydWN0aW9uIGlzIHRoZSBsZWFkZXIgb2YgaXRzIG93biBi
YXNpYyBibG9jay4KLSAgICAgICAgaWYgKGlzQnJhbmNoKG9wY29kZUlEKSB8fCBpc1Rlcm1pbmFs
KG9wY29kZUlEKSB8fCBpc1Rocm93KG9wY29kZUlEKSkKKyAgICAgICAgaWYgKGlzQnJhbmNoKG9w
Y29kZUlELCBieXRlY29kZUFuYWx5c2lzTW9kZSkgfHwgaXNUZXJtaW5hbChvcGNvZGVJRCkgfHwg
aXNUaHJvdyhvcGNvZGVJRCkpCiAgICAgICAgICAgICBuZXh0SW5zdHJ1Y3Rpb25Jc0xlYWRlciA9
IHRydWU7CiAKICAgICAgICAgaWYgKGNyZWF0ZWRCbG9jaykKQEAgLTIwMiwxMCArMjA1LDEwIEBA
IHZvaWQgY29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFZl
Y3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIC8v
IElmIHdlIGZvdW5kIGEgYnJhbmNoLCBsaW5rIHRvIHRoZSBibG9jayhzKSB0aGF0IHdlIGp1bXAg
dG8uCi0gICAgICAgICAgICBpZiAoaXNCcmFuY2gob3Bjb2RlSUQpKSB7CisgICAgICAgICAgICBp
ZiAoaXNCcmFuY2gob3Bjb2RlSUQsIGJ5dGVjb2RlQW5hbHlzaXNNb2RlKSkgewogICAgICAgICAg
ICAgICAgIEFTU0VSVChieXRlY29kZU9mZnNldCArIG9wY29kZUxlbmd0aCA9PSBibG9jay0+bGVh
ZGVyQnl0ZWNvZGVPZmZzZXQoKSArIGJsb2NrLT50b3RhbEJ5dGVjb2RlTGVuZ3RoKCkpOwogICAg
ICAgICAgICAgICAgIFZlY3Rvcjx1bnNpZ25lZCwgMT4gYnl0ZWNvZGVPZmZzZXRzSnVtcGVkVG87
Ci0gICAgICAgICAgICAgICAgZmluZEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoY29kZUJs
b2NrLCBieXRlY29kZU9mZnNldCwgYnl0ZWNvZGVPZmZzZXRzSnVtcGVkVG8pOworICAgICAgICAg
ICAgICAgIGZpbmRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9jaywgYnl0ZWNv
ZGVBbmFseXNpc01vZGUsIGJ5dGVjb2RlT2Zmc2V0LCBieXRlY29kZU9mZnNldHNKdW1wZWRUbyk7
CiAKICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYmFzaWNCbG9ja3Mu
c2l6ZSgpOyBpKyspIHsKICAgICAgICAgICAgICAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBv
dGhlckJsb2NrID0gYmFzaWNCbG9ja3NbaV0uZ2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmgKaW5kZXggYmQ3ZDNhZTliYTM0
M2UxYjA3MTc5ZTk4ZjFlZTg5ZGE2NWJhN2UyMC4uNDkyNTY5NWRhZWNiMGQ2YmY4YjdiNjAyMmM2
OTA2NGViMTNhNGMzYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlQmFzaWNCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZUJhc2ljQmxvY2suaApAQCAtMzYsNiArMzYsMTEgQEAKIAogY2xhc3MgQ29kZUJs
b2NrOwogCitlbnVtIGNsYXNzIEJ5dGVjb2RlQW5hbHlzaXNNb2RlIHsKKyAgICBTdGFuZGFyZCwK
KyAgICBFeHRyYWN0R2VuZXJhdG9yTGl2ZUNhbGxlZUxvY2FscworfTsKKwogY2xhc3MgQnl0ZWNv
ZGVCYXNpY0Jsb2NrIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKQEAg
LTcwLDcgKzc1LDcgQEAgY2xhc3MgQnl0ZWNvZGVCYXNpY0Jsb2NrIHsKICAgICBGYXN0Qml0VmVj
dG9yIG1fb3V0OwogfTsKIAotdm9pZCBjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2NrcyhDb2RlQmxv
Y2sqLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+Jik7Cit2b2lk
IGNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzKENvZGVCbG9jayosIEJ5dGVjb2RlQW5hbHlzaXNN
b2RlLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+Jik7CiAKIGlu
bGluZSBCeXRlY29kZUJhc2ljQmxvY2s6OkJ5dGVjb2RlQmFzaWNCbG9jayh1bnNpZ25lZCBzdGFy
dCwgdW5zaWduZWQgbGVuZ3RoKQogICAgIDogbV9sZWFkZXJCeXRlY29kZU9mZnNldChzdGFydCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUdyYXBo
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUdyYXBoLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5lNmNmM2Q1ODNlZjkxMzZlMGMzNDdiMjE1YjA3ZTRlYWUwN2Q1OWEzCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlR3Jh
cGguY3BwCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgWXVzdWtl
IFN1enVraSA8eXVzdWtlLnN1enVraUBzc2xhYi5pY3Mua2Vpby5hYy5qcD4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkJ5dGVjb2RlR3JhcGguaCIKKworI2luY2x1
ZGUgIkJ5dGVjb2RlQmFzaWNCbG9jay5oIgorCituYW1lc3BhY2UgSlNDIHsKKworQnl0ZWNvZGVH
cmFwaDo6Qnl0ZWNvZGVHcmFwaChDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVBbmFseXNp
c01vZGUgYnl0ZWNvZGVBbmFseXNpc01vZGUpCisgICAgOiBtX2NvZGVCbG9jayhjb2RlQmxvY2sp
CisgICAgLCBtX2J5dGVjb2RlQW5hbHlzaXNNb2RlKGJ5dGVjb2RlQW5hbHlzaXNNb2RlKQorewor
ICAgIEFTU0VSVChtX2NvZGVCbG9jayk7CisgICAgY29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3Mo
bV9jb2RlQmxvY2ssIG1fYnl0ZWNvZGVBbmFseXNpc01vZGUsIG1fYmFzaWNCbG9ja3MpOworICAg
IEFTU0VSVChtX2Jhc2ljQmxvY2tzLnNpemUoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlR3JhcGgu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUdyYXBoLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMDFiNDY4MGIxY2U0Y2EyZGQ0MDVhYmJmZjkwOWI3YTc0OTI5MDU2NQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUdyYXBoLmgK
QEAgLTAsMCArMSw4NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBZdXN1a2UgU3V6dWtp
IDx5dXN1a2Uuc3V6dWtpQHNzbGFiLmljcy5rZWlvLmFjLmpwPgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IEJ5dGVjb2RlR3JhcGhfaAorI2RlZmluZSBCeXRlY29kZUdyYXBoX2gKKworI2luY2x1ZGUgIkJ5
dGVjb2RlQmFzaWNCbG9jay5oIgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNl
IEpTQyB7CisKK2NsYXNzIEJ5dGVjb2RlQmFzaWNCbG9jazsKK2NsYXNzIENvZGVCbG9jazsKKwor
Y2xhc3MgQnl0ZWNvZGVHcmFwaCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoQnl0ZWNvZGVHcmFwaCk7CitwdWJsaWM6CisgICAgdHlwZWRl
ZiBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+IEJhc2ljQmxvY2tz
VmVjdG9yOworCisgICAgQnl0ZWNvZGVHcmFwaChDb2RlQmxvY2sqLCBCeXRlY29kZUFuYWx5c2lz
TW9kZSk7CisKKyAgICBCeXRlY29kZUFuYWx5c2lzTW9kZSBieXRlY29kZUFuYWx5c2lzTW9kZSgp
IGNvbnN0IHsgcmV0dXJuIG1fYnl0ZWNvZGVBbmFseXNpc01vZGU7IH0KKworICAgIENvZGVCbG9j
ayogY29kZUJsb2NrKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2s7IH0KKworICAgIEJhc2lj
QmxvY2tzVmVjdG9yJiBiYXNpY0Jsb2NrcygpIHsgcmV0dXJuIG1fYmFzaWNCbG9ja3M7IH0KKwor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEl0ZXJhdG9yPgorICAgIGNsYXNzIFJldmVyc2VJdGVyYWJs
ZSB7CisgICAgcHVibGljOgorICAgICAgICBSZXZlcnNlSXRlcmFibGUoSXRlcmF0b3IgYmVnaW4s
IEl0ZXJhdG9yIGVuZCkKKyAgICAgICAgICAgIDogbV9iZWdpbihiZWdpbikKKyAgICAgICAgICAg
ICwgbV9lbmQoZW5kKQorICAgICAgICB7CisgICAgICAgIH0KKworICAgICAgICBzdGQ6OnJldmVy
c2VfaXRlcmF0b3I8SXRlcmF0b3I+IGJlZ2luKCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6cmV2ZXJzZV9pdGVyYXRvcjxJdGVyYXRvcj4obV9lbmQpOworICAgICAgICB9CisK
KyAgICAgICAgc3RkOjpyZXZlcnNlX2l0ZXJhdG9yPEl0ZXJhdG9yPiBlbmQoKQorICAgICAgICB7
CisgICAgICAgICAgICByZXR1cm4gc3RkOjpyZXZlcnNlX2l0ZXJhdG9yPEl0ZXJhdG9yPihtX2Jl
Z2luKTsKKyAgICAgICAgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgSXRlcmF0b3IgbV9iZWdp
bjsKKyAgICAgICAgSXRlcmF0b3IgbV9lbmQ7CisgICAgfTsKKworICAgIFJldmVyc2VJdGVyYWJs
ZTxCYXNpY0Jsb2Nrc1ZlY3Rvcjo6aXRlcmF0b3I+IGJhc2ljQmxvY2tzSW5SZXZlcnNlT3JkZXIo
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHsgbV9iYXNpY0Jsb2Nrcy5iZWdpbigpLCBtX2Jhc2lj
QmxvY2tzLmVuZCgpIH07CisgICAgfQorCitwcml2YXRlOgorICAgIENvZGVCbG9jayogbV9jb2Rl
QmxvY2s7CisgICAgQnl0ZWNvZGVBbmFseXNpc01vZGUgbV9ieXRlY29kZUFuYWx5c2lzTW9kZTsK
KyAgICBCYXNpY0Jsb2Nrc1ZlY3RvciBtX2Jhc2ljQmxvY2tzOworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgSlNDCisjZW5kaWYgLy8gQnl0ZWNvZGVHcmFwaF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnNlcnRpb25TZXQuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUluc2VydGlvblNldC5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY0
ZmU0NDZlNmEwZmZjZTNhZjczOWQ3MTdlZDg1MDhlOTExMjVhMDgKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnNlcnRpb25TZXQuaApA
QCAtMCwwICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IFl1c3VrZSBTdXp1a2kg
PHl1c3VrZS5zdXp1a2lAc3NsYWIuaWNzLmtlaW8uYWMuanA+CisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
Qnl0ZWNvZGVJbnNlcnRpb25TZXRfaAorI2RlZmluZSBCeXRlY29kZUluc2VydGlvblNldF9oCisK
K25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBCeXRlY29kZUluc2VydGlvblNldCB7CitwdWJsaWM6
CisgICAgQnl0ZWNvZGVJbnNlcnRpb25TZXQoQnl0ZWNvZGVHcmFwaCYgZ3JhcGgpCisgICAgICAg
IDogbV9ncmFwaChncmFwaCkKKyAgICB7CisgICAgfQorCitwcml2YXRlOgorICAgIEJ5dGVjb2Rl
R3JhcGgmIG1fZ3JhcGg7CisgICAgVmVjdG9yPEluc2VydGlvbiwgOD4gbV9pbnNlcnRpb25zOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisjZW5kaWYgLy8gQnl0ZWNvZGVJbnNlcnRpb25TZXRf
aApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlz
dC5qc29uIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29u
CmluZGV4IDY3MjNjOTI2NzYzYzExMDcwNmFmMDkzYzVlZjI0YzVjYTFjZGM1ZDUuLjA3ZTI0MWM2
ZmQ5NjY3NjY4ZDM2ZTQ1ZDQwZDU1MDJlYTdiNDJhNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24KQEAgLTE2LDYgKzE2LDcgQEAKICAg
ICAgICAgICAgIHsgIm5hbWUiIDogIm9wX25ld19hcnJheV93aXRoX3NpemUiLCAibGVuZ3RoIiA6
IDQgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX25ld19hcnJheV9idWZmZXIiLCAibGVu
Z3RoIiA6IDUgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX25ld19yZWdleHAiLCAibGVu
Z3RoIiA6IDMgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX25ld19nZW5lcmF0b3JfZnJh
bWUiLCAibGVuZ3RoIiA6IDMgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX21vdiIsICJs
ZW5ndGgiIDogMyB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3Bfbm90IiwgImxlbmd0aCIg
OiAzIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9lcSIsICJsZW5ndGgiIDogNCB9LApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5l
c3NBbmFseXNpcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVM
aXZlbmVzc0FuYWx5c2lzLmNwcAppbmRleCA3MjI4YjAzMzM2NmM3YTY3YjUxMDQ4OGRmZTQ1ZjNk
ZDNjZmE0MzE1Li43YjcxODljMzFhZGJlZDU4ZmRkYjE2Yzc5YzRiZmY5MTg5MzNlZjk5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0Fu
YWx5c2lzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVM
aXZlbmVzc0FuYWx5c2lzLmNwcApAQCAtMzUsMTAgKzM1LDkgQEAKIAogbmFtZXNwYWNlIEpTQyB7
CiAKLUJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzKENv
ZGVCbG9jayogY29kZUJsb2NrKQotICAgIDogbV9jb2RlQmxvY2soY29kZUJsb2NrKQorQnl0ZWNv
ZGVMaXZlbmVzc0FuYWx5c2lzOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMoQnl0ZWNvZGVHcmFw
aCYgZ3JhcGgpCisgICAgOiBtX2dyYXBoKGdyYXBoKQogewotICAgIEFTU0VSVChtX2NvZGVCbG9j
ayk7CiAgICAgY29tcHV0ZSgpOwogfQogCkBAIC01Niw5ICs1NSw5IEBAIHN0YXRpYyB1bnNpZ25l
ZCBnZXRMZWFkZXJPZmZzZXRGb3JCYXNpY0Jsb2NrKHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJh
c2ljQmxvY2s+CiAgICAgcmV0dXJuICgqYmFzaWNCbG9jayktPmxlYWRlckJ5dGVjb2RlT2Zmc2V0
KCk7CiB9CiAKLXN0YXRpYyBCeXRlY29kZUJhc2ljQmxvY2sqIGZpbmRCYXNpY0Jsb2NrV2l0aExl
YWRlck9mZnNldChWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+JiBi
YXNpY0Jsb2NrcywgdW5zaWduZWQgbGVhZGVyT2Zmc2V0KQorc3RhdGljIEJ5dGVjb2RlQmFzaWNC
bG9jayogZmluZEJhc2ljQmxvY2tXaXRoTGVhZGVyT2Zmc2V0KEJ5dGVjb2RlR3JhcGgmIGdyYXBo
LCB1bnNpZ25lZCBsZWFkZXJPZmZzZXQpCiB7Ci0gICAgcmV0dXJuICgqdHJ5QmluYXJ5U2VhcmNo
PHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+LCB1bnNpZ25lZD4oYmFzaWNCbG9j
a3MsIGJhc2ljQmxvY2tzLnNpemUoKSwgbGVhZGVyT2Zmc2V0LCBnZXRMZWFkZXJPZmZzZXRGb3JC
YXNpY0Jsb2NrKSkuZ2V0KCk7CisgICAgcmV0dXJuICgqdHJ5QmluYXJ5U2VhcmNoPHN0ZDo6dW5p
cXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+LCB1bnNpZ25lZD4oZ3JhcGguYmFzaWNCbG9ja3Mo
KSwgZ3JhcGguYmFzaWNCbG9ja3MoKS5zaXplKCksIGxlYWRlck9mZnNldCwgZ2V0TGVhZGVyT2Zm
c2V0Rm9yQmFzaWNCbG9jaykpLmdldCgpOwogfQogCiBzdGF0aWMgYm9vbCBibG9ja0NvbnRhaW5z
Qnl0ZWNvZGVPZmZzZXQoQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaywgdW5zaWduZWQgYnl0ZWNv
ZGVPZmZzZXQpCkBAIC02Nyw3ICs2Niw3IEBAIHN0YXRpYyBib29sIGJsb2NrQ29udGFpbnNCeXRl
Y29kZU9mZnNldChCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrLCB1bnNpZ25lZCBieXRlCiAgICAg
cmV0dXJuIGJ5dGVjb2RlT2Zmc2V0ID49IGxlYWRlck9mZnNldCAmJiBieXRlY29kZU9mZnNldCA8
IGxlYWRlck9mZnNldCArIGJsb2NrLT50b3RhbEJ5dGVjb2RlTGVuZ3RoKCk7CiB9CiAKLXN0YXRp
YyBCeXRlY29kZUJhc2ljQmxvY2sqIGZpbmRCYXNpY0Jsb2NrRm9yQnl0ZWNvZGVPZmZzZXQoVmVj
dG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9ja3MsIHVu
c2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KQorc3RhdGljIEJ5dGVjb2RlQmFzaWNCbG9jayogZmluZEJh
c2ljQmxvY2tGb3JCeXRlY29kZU9mZnNldChCeXRlY29kZUdyYXBoJiBncmFwaCwgdW5zaWduZWQg
Ynl0ZWNvZGVPZmZzZXQpCiB7CiAvKgogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBiYXNp
Y0Jsb2Nrcy5zaXplKCk7IGkrKykgewpAQCAtNzYsNiArNzUsOCBAQCBzdGF0aWMgQnl0ZWNvZGVC
YXNpY0Jsb2NrKiBmaW5kQmFzaWNCbG9ja0ZvckJ5dGVjb2RlT2Zmc2V0KFZlY3RvcjxzdGQ6OnVu
aXF1ZV9wdAogICAgIH0KICAgICByZXR1cm4gMDsKICovCisgICAgQnl0ZWNvZGVHcmFwaDo6QmFz
aWNCbG9ja3NWZWN0b3ImIGJhc2ljQmxvY2tzID0gZ3JhcGguYmFzaWNCbG9ja3MoKTsKKwogICAg
IHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+KiBiYXNpY0Jsb2NrID0gYXBwcm94
aW1hdGVCaW5hcnlTZWFyY2g8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4sIHVu
c2lnbmVkPigKICAgICAgICAgYmFzaWNCbG9ja3MsIGJhc2ljQmxvY2tzLnNpemUoKSwgYnl0ZWNv
ZGVPZmZzZXQsIGdldExlYWRlck9mZnNldEZvckJhc2ljQmxvY2spOwogICAgIC8vIFdlIGZvdW5k
IHRoZSBibG9jayB3ZSB3ZXJlIGxvb2tpbmcgZm9yLgpAQCAtOTgsNyArOTksNyBAQCBzdGF0aWMg
Qnl0ZWNvZGVCYXNpY0Jsb2NrKiBmaW5kQmFzaWNCbG9ja0ZvckJ5dGVjb2RlT2Zmc2V0KFZlY3Rv
cjxzdGQ6OnVuaXF1ZV9wdAogLy8gU2ltcGxpZmllZCBpbnRlcmZhY2UgdG8gYnl0ZWNvZGUgdXNl
L2RlZiwgd2hpY2ggZGV0ZXJtaW5lcyBkZWZzIGZpcnN0IGFuZCB0aGVuIHVzZXMsIGFuZCBpbmNs
dWRlcwogLy8gZXhjZXB0aW9uIGhhbmRsZXJzIGluIHRoZSB1c2VzLgogdGVtcGxhdGU8dHlwZW5h
bWUgVXNlRnVuY3RvciwgdHlwZW5hbWUgRGVmRnVuY3Rvcj4KLXN0YXRpYyB2b2lkIHN0ZXBPdmVy
SW5zdHJ1Y3Rpb24oQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxv
Y2ssIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mIGJhc2ljQmxv
Y2tzLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgY29uc3QgVXNlRnVuY3RvciYgdXNlLCBjb25z
dCBEZWZGdW5jdG9yJiBkZWYpCitzdGF0aWMgdm9pZCBzdGVwT3Zlckluc3RydWN0aW9uKENvZGVC
bG9jayogY29kZUJsb2NrLCBCeXRlY29kZUFuYWx5c2lzTW9kZSBieXRlY29kZUFuYWx5c2lzTW9k
ZSwgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaywgQnl0ZWNvZGVHcmFwaCYgZ3JhcGgsIHVuc2ln
bmVkIGJ5dGVjb2RlT2Zmc2V0LCBjb25zdCBVc2VGdW5jdG9yJiB1c2UsIGNvbnN0IERlZkZ1bmN0
b3ImIGRlZikKIHsKICAgICAvLyBUaGlzIGFic3RyYWN0bHkgZXhlY3V0ZSB0aGUgaW5zdHJ1Y3Rp
b24gaW4gcmV2ZXJzZS4gSW5zdHJ1Y3Rpb25zIGxvZ2ljYWxseSBmaXJzdCB1c2Ugb3BlcmFuZHMg
YW5kCiAgICAgLy8gdGhlbiBkZWZpbmUgb3BlcmFuZHMuIFRoaXMgbG9naWNhbCBvcmRlcmluZyBp
cyBuZWNlc3NhcnkgZm9yIG9wZXJhdGlvbnMgdGhhdCB1c2UgYW5kIGRlZiB0aGUgc2FtZQpAQCAt
MTE2LDE0ICsxMTcsMTQgQEAgc3RhdGljIHZvaWQgc3RlcE92ZXJJbnN0cnVjdGlvbihDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaywKICAgICAvLyBmaXJzdCBh
ZGQgaXQgdG8gdGhlIG91dCBzZXQgKHRoZSB1c2UpLCBhbmQgdGhlbiB3ZSdkIHJlbW92ZSBpdCAo
dGhlIGRlZikuCiAgICAgCiAgICAgY29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldCgKLSAgICAg
ICAgY29kZUJsb2NrLCBibG9jaywgYnl0ZWNvZGVPZmZzZXQsCisgICAgICAgIGNvZGVCbG9jaywg
Ynl0ZWNvZGVBbmFseXNpc01vZGUsIGJsb2NrLCBieXRlY29kZU9mZnNldCwKICAgICAgICAgWyZd
IChDb2RlQmxvY2sqIGNvZGVCbG9jaywgSW5zdHJ1Y3Rpb24qLCBPcGNvZGVJRCwgaW50IG9wZXJh
bmQpIHsKICAgICAgICAgICAgIGlmIChpc1ZhbGlkUmVnaXN0ZXJGb3JMaXZlbmVzcyhjb2RlQmxv
Y2ssIG9wZXJhbmQpKQogICAgICAgICAgICAgICAgIGRlZihWaXJ0dWFsUmVnaXN0ZXIob3BlcmFu
ZCkudG9Mb2NhbCgpKTsKICAgICAgICAgfSk7CiAKICAgICBjb21wdXRlVXNlc0ZvckJ5dGVjb2Rl
T2Zmc2V0KAotICAgICAgICBjb2RlQmxvY2ssIGJsb2NrLCBieXRlY29kZU9mZnNldCwKKyAgICAg
ICAgY29kZUJsb2NrLCBieXRlY29kZUFuYWx5c2lzTW9kZSwgYmxvY2ssIGJ5dGVjb2RlT2Zmc2V0
LAogICAgICAgICBbJl0gKENvZGVCbG9jayogY29kZUJsb2NrLCBJbnN0cnVjdGlvbiosIE9wY29k
ZUlELCBpbnQgb3BlcmFuZCkgewogICAgICAgICAgICAgaWYgKGlzVmFsaWRSZWdpc3RlckZvckxp
dmVuZXNzKGNvZGVCbG9jaywgb3BlcmFuZCkpCiAgICAgICAgICAgICAgICAgdXNlKFZpcnR1YWxS
ZWdpc3RlcihvcGVyYW5kKS50b0xvY2FsKCkpOwpAQCAtMTMyLDE2ICsxMzMsMTYgQEAgc3RhdGlj
IHZvaWQgc3RlcE92ZXJJbnN0cnVjdGlvbihDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVC
YXNpY0Jsb2NrKiBibG9jaywKICAgICAvLyBJZiB3ZSBoYXZlIGFuIGV4Y2VwdGlvbiBoYW5kbGVy
LCB3ZSB3YW50IHRoZSBsaXZlLWluIHZhcmlhYmxlcyBvZiB0aGUgCiAgICAgLy8gZXhjZXB0aW9u
IGhhbmRsZXIgYmxvY2sgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIGxpdmUtaW4gb2YgdGhpcyBwYXJ0
aWN1bGFyIGJ5dGVjb2RlLgogICAgIGlmIChIYW5kbGVySW5mbyogaGFuZGxlciA9IGNvZGVCbG9j
ay0+aGFuZGxlckZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KSkgewotICAgICAgICBC
eXRlY29kZUJhc2ljQmxvY2sqIGhhbmRsZXJCbG9jayA9IGZpbmRCYXNpY0Jsb2NrV2l0aExlYWRl
ck9mZnNldChiYXNpY0Jsb2NrcywgaGFuZGxlci0+dGFyZ2V0KTsKKyAgICAgICAgQnl0ZWNvZGVC
YXNpY0Jsb2NrKiBoYW5kbGVyQmxvY2sgPSBmaW5kQmFzaWNCbG9ja1dpdGhMZWFkZXJPZmZzZXQo
Z3JhcGgsIGhhbmRsZXItPnRhcmdldCk7CiAgICAgICAgIEFTU0VSVChoYW5kbGVyQmxvY2spOwog
ICAgICAgICBoYW5kbGVyQmxvY2stPmluKCkuZm9yRWFjaFNldEJpdCh1c2UpOwogICAgIH0KIH0K
IAotc3RhdGljIHZvaWQgc3RlcE92ZXJJbnN0cnVjdGlvbihDb2RlQmxvY2sqIGNvZGVCbG9jaywg
Qnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaywgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29k
ZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9ja3MsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBGYXN0
Qml0VmVjdG9yJiBvdXQpCitzdGF0aWMgdm9pZCBzdGVwT3Zlckluc3RydWN0aW9uKENvZGVCbG9j
ayogY29kZUJsb2NrLCBCeXRlY29kZUFuYWx5c2lzTW9kZSBieXRlY29kZUFuYWx5c2lzTW9kZSwg
Qnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaywgQnl0ZWNvZGVHcmFwaCYgZ3JhcGgsIHVuc2lnbmVk
IGJ5dGVjb2RlT2Zmc2V0LCBGYXN0Qml0VmVjdG9yJiBvdXQpCiB7CiAgICAgc3RlcE92ZXJJbnN0
cnVjdGlvbigKLSAgICAgICAgY29kZUJsb2NrLCBibG9jaywgYmFzaWNCbG9ja3MsIGJ5dGVjb2Rl
T2Zmc2V0LAorICAgICAgICBjb2RlQmxvY2ssIGJ5dGVjb2RlQW5hbHlzaXNNb2RlLCBibG9jaywg
Z3JhcGgsIGJ5dGVjb2RlT2Zmc2V0LAogICAgICAgICBbJl0gKHVuc2lnbmVkIGJpdEluZGV4KSB7
CiAgICAgICAgICAgICAvLyBUaGlzIGlzIHRoZSB1c2UgZnVuY3Rvciwgc28gd2Ugc2V0IHRoZSBi
aXQuCiAgICAgICAgICAgICBvdXQuc2V0KGJpdEluZGV4KTsKQEAgLTE1Miw3ICsxNTMsNyBAQCBz
dGF0aWMgdm9pZCBzdGVwT3Zlckluc3RydWN0aW9uKENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRl
Y29kZUJhc2ljQmxvY2sqIGJsb2NrLAogICAgICAgICB9KTsKIH0KIAotc3RhdGljIHZvaWQgY29t
cHV0ZUxvY2FsTGl2ZW5lc3NGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywg
Qnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaywgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29k
ZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9ja3MsIHVuc2lnbmVkIHRhcmdldE9mZnNldCwgRmFzdEJp
dFZlY3RvciYgcmVzdWx0KQorc3RhdGljIHZvaWQgY29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCeXRl
Y29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVBbmFseXNpc01vZGUgYnl0
ZWNvZGVBbmFseXNpc01vZGUsIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2ssIEJ5dGVjb2RlR3Jh
cGgmIGdyYXBoLCB1bnNpZ25lZCB0YXJnZXRPZmZzZXQsIEZhc3RCaXRWZWN0b3ImIHJlc3VsdCkK
IHsKICAgICBBU1NFUlQoIWJsb2NrLT5pc0V4aXRCbG9jaygpKTsKICAgICBBU1NFUlQoIWJsb2Nr
LT5pc0VudHJ5QmxvY2soKSk7CkBAIC0xNjQsNDQgKzE2NSw0NCBAQCBzdGF0aWMgdm9pZCBjb21w
dXRlTG9jYWxMaXZlbmVzc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBC
eXRlY29kZQogICAgICAgICBpZiAodGFyZ2V0T2Zmc2V0ID4gYnl0ZWNvZGVPZmZzZXQpCiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgCi0gICAgICAgIHN0ZXBPdmVySW5zdHJ1Y3Rpb24oY29k
ZUJsb2NrLCBibG9jaywgYmFzaWNCbG9ja3MsIGJ5dGVjb2RlT2Zmc2V0LCBvdXQpOworICAgICAg
ICBzdGVwT3Zlckluc3RydWN0aW9uKGNvZGVCbG9jaywgYnl0ZWNvZGVBbmFseXNpc01vZGUsIGJs
b2NrLCBncmFwaCwgYnl0ZWNvZGVPZmZzZXQsIG91dCk7CiAgICAgfQogCiAgICAgcmVzdWx0LnNl
dChvdXQpOwogfQogCi1zdGF0aWMgdm9pZCBjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJsb2NrKENv
ZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrLCBWZWN0b3I8c3Rk
Ojp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+JiBiYXNpY0Jsb2NrcykKK3N0YXRpYyB2
b2lkIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQmxvY2soQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5
dGVjb2RlQW5hbHlzaXNNb2RlIGJ5dGVjb2RlQW5hbHlzaXNNb2RlLCBCeXRlY29kZUJhc2ljQmxv
Y2sqIGJsb2NrLCBCeXRlY29kZUdyYXBoJiBncmFwaCkKIHsKICAgICBpZiAoYmxvY2stPmlzRXhp
dEJsb2NrKCkgfHwgYmxvY2stPmlzRW50cnlCbG9jaygpKQogICAgICAgICByZXR1cm47Ci0gICAg
Y29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCeXRlY29kZU9mZnNldChjb2RlQmxvY2ssIGJsb2NrLCBi
YXNpY0Jsb2NrcywgYmxvY2stPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCksIGJsb2NrLT5pbigpKTsK
KyAgICBjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9jaywgYnl0
ZWNvZGVBbmFseXNpc01vZGUsIGJsb2NrLCBncmFwaCwgYmxvY2stPmxlYWRlckJ5dGVjb2RlT2Zm
c2V0KCksIGJsb2NrLT5pbigpKTsKIH0KIAogdm9pZCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6
OnJ1bkxpdmVuZXNzRml4cG9pbnQoKQogewotICAgIFVubGlua2VkQ29kZUJsb2NrKiB1bmxpbmtl
ZENvZGVCbG9jayA9IG1fY29kZUJsb2NrLT51bmxpbmtlZENvZGVCbG9jaygpOworICAgIENvZGVC
bG9jayogY29kZUJsb2NrID0gbV9ncmFwaC5jb2RlQmxvY2soKTsKKyAgICBVbmxpbmtlZENvZGVC
bG9jayogdW5saW5rZWRDb2RlQmxvY2sgPSBjb2RlQmxvY2stPnVubGlua2VkQ29kZUJsb2NrKCk7
CiAgICAgdW5zaWduZWQgbnVtYmVyT2ZWYXJpYWJsZXMgPSB1bmxpbmtlZENvZGVCbG9jay0+bV9u
dW1DYWxsZWVMb2NhbHM7CiAKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9iYXNpY0Js
b2Nrcy5zaXplKCk7IGkrKykgewotICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrID0g
bV9iYXNpY0Jsb2Nrc1tpXS5nZXQoKTsKKyAgICBmb3IgKHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29k
ZUJhc2ljQmxvY2s+JiBibG9jayA6IG1fZ3JhcGguYmFzaWNCbG9ja3MoKSkgewogICAgICAgICBi
bG9jay0+aW4oKS5yZXNpemUobnVtYmVyT2ZWYXJpYWJsZXMpOwogICAgICAgICBibG9jay0+b3V0
KCkucmVzaXplKG51bWJlck9mVmFyaWFibGVzKTsKICAgICB9CiAKICAgICBib29sIGNoYW5nZWQ7
Ci0gICAgbV9iYXNpY0Jsb2Nrcy5sYXN0KCktPmluKCkuY2xlYXJBbGwoKTsKLSAgICBtX2Jhc2lj
QmxvY2tzLmxhc3QoKS0+b3V0KCkuY2xlYXJBbGwoKTsKKyAgICBCeXRlY29kZUJhc2ljQmxvY2sq
IGxhc3RCbG9jayA9IG1fZ3JhcGguYmFzaWNCbG9ja3MoKS5sYXN0KCkuZ2V0KCk7CisgICAgbGFz
dEJsb2NrLT5pbigpLmNsZWFyQWxsKCk7CisgICAgbGFzdEJsb2NrLT5vdXQoKS5jbGVhckFsbCgp
OwogICAgIEZhc3RCaXRWZWN0b3IgbmV3T3V0OwotICAgIG5ld091dC5yZXNpemUobV9iYXNpY0Js
b2Nrcy5sYXN0KCktPm91dCgpLm51bUJpdHMoKSk7CisgICAgbmV3T3V0LnJlc2l6ZShsYXN0Qmxv
Y2stPm91dCgpLm51bUJpdHMoKSk7CiAgICAgZG8gewogICAgICAgICBjaGFuZ2VkID0gZmFsc2U7
Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1fYmFzaWNCbG9ja3Muc2l6ZSgpIC0gMTsgaS0t
OykgewotICAgICAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jayA9IG1fYmFzaWNCbG9j
a3NbaV0uZ2V0KCk7CisgICAgICAgIGZvciAoc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNC
bG9jaz4mIGJsb2NrIDogbV9ncmFwaC5iYXNpY0Jsb2Nrc0luUmV2ZXJzZU9yZGVyKCkpIHsKICAg
ICAgICAgICAgIG5ld091dC5jbGVhckFsbCgpOwogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBq
ID0gMDsgaiA8IGJsb2NrLT5zdWNjZXNzb3JzKCkuc2l6ZSgpOyBqKyspCiAgICAgICAgICAgICAg
ICAgbmV3T3V0Lm1lcmdlKGJsb2NrLT5zdWNjZXNzb3JzKClbal0tPmluKCkpOwogICAgICAgICAg
ICAgYm9vbCBvdXREaWRDaGFuZ2UgPSBibG9jay0+b3V0KCkuc2V0QW5kQ2hlY2sobmV3T3V0KTsK
LSAgICAgICAgICAgIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQmxvY2sobV9jb2RlQmxvY2ssIGJs
b2NrLCBtX2Jhc2ljQmxvY2tzKTsKKyAgICAgICAgICAgIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9y
QmxvY2soY29kZUJsb2NrLCBtX2dyYXBoLmJ5dGVjb2RlQW5hbHlzaXNNb2RlKCksIGJsb2NrLmdl
dCgpLCBtX2dyYXBoKTsKICAgICAgICAgICAgIGNoYW5nZWQgfD0gb3V0RGlkQ2hhbmdlOwogICAg
ICAgICB9CiAgICAgfSB3aGlsZSAoY2hhbmdlZCk7CkBAIC0yMDksMTIgKzIxMCwxMiBAQCB2b2lk
IEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6cnVuTGl2ZW5lc3NGaXhwb2ludCgpCiAKIHZvaWQg
Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpnZXRMaXZlbmVzc0luZm9BdEJ5dGVjb2RlT2Zmc2V0
KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBGYXN0Qml0VmVjdG9yJiByZXN1bHQpCiB7Ci0gICAg
Qnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jayA9IGZpbmRCYXNpY0Jsb2NrRm9yQnl0ZWNvZGVPZmZz
ZXQobV9iYXNpY0Jsb2NrcywgYnl0ZWNvZGVPZmZzZXQpOworICAgIEJ5dGVjb2RlQmFzaWNCbG9j
ayogYmxvY2sgPSBmaW5kQmFzaWNCbG9ja0ZvckJ5dGVjb2RlT2Zmc2V0KG1fZ3JhcGgsIGJ5dGVj
b2RlT2Zmc2V0KTsKICAgICBBU1NFUlQoYmxvY2spOwogICAgIEFTU0VSVCghYmxvY2stPmlzRW50
cnlCbG9jaygpKTsKICAgICBBU1NFUlQoIWJsb2NrLT5pc0V4aXRCbG9jaygpKTsKICAgICByZXN1
bHQucmVzaXplKGJsb2NrLT5vdXQoKS5udW1CaXRzKCkpOwotICAgIGNvbXB1dGVMb2NhbExpdmVu
ZXNzRm9yQnl0ZWNvZGVPZmZzZXQobV9jb2RlQmxvY2ssIGJsb2NrLCBtX2Jhc2ljQmxvY2tzLCBi
eXRlY29kZU9mZnNldCwgcmVzdWx0KTsKKyAgICBjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJ5dGVj
b2RlT2Zmc2V0KG1fZ3JhcGguY29kZUJsb2NrKCksIG1fZ3JhcGguYnl0ZWNvZGVBbmFseXNpc01v
ZGUoKSwgYmxvY2ssIG1fZ3JhcGgsIGJ5dGVjb2RlT2Zmc2V0LCByZXN1bHQpOwogfQogCiBib29s
IEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6b3BlcmFuZElzTGl2ZUF0Qnl0ZWNvZGVPZmZzZXQo
aW50IG9wZXJhbmQsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KQpAQCAtMjM2LDExICsyMzcsMTEg
QEAgRmFzdEJpdFZlY3RvciBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmdldExpdmVuZXNzSW5m
b0F0Qnl0ZWNvZGVPZmZzZXQodW5zaWduZWQKIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lz
Ojpjb21wdXRlRnVsbExpdmVuZXNzKEZ1bGxCeXRlY29kZUxpdmVuZXNzJiByZXN1bHQpCiB7CiAg
ICAgRmFzdEJpdFZlY3RvciBvdXQ7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBtX2dyYXBo
LmNvZGVCbG9jaygpOwogICAgIAotICAgIHJlc3VsdC5tX21hcC5yZXNpemUobV9jb2RlQmxvY2st
Pmluc3RydWN0aW9ucygpLnNpemUoKSk7CisgICAgcmVzdWx0Lm1fbWFwLnJlc2l6ZShjb2RlQmxv
Y2stPmluc3RydWN0aW9ucygpLnNpemUoKSk7CiAgICAgCi0gICAgZm9yICh1bnNpZ25lZCBpID0g
bV9iYXNpY0Jsb2Nrcy5zaXplKCk7IGktLTspIHsKLSAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2Nr
KiBibG9jayA9IG1fYmFzaWNCbG9ja3NbaV0uZ2V0KCk7CisgICAgZm9yIChzdGQ6OnVuaXF1ZV9w
dHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiYgYmxvY2sgOiBtX2dyYXBoLmJhc2ljQmxvY2tzSW5SZXZl
cnNlT3JkZXIoKSkgewogICAgICAgICBpZiAoYmxvY2stPmlzRW50cnlCbG9jaygpIHx8IGJsb2Nr
LT5pc0V4aXRCbG9jaygpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIApAQCAtMjQ4
LDcgKzI0OSw3IEBAIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlRnVsbExp
dmVuZXNzKEZ1bGxCeXRlY29kZUxpdmVuZXNzJiByZXN1bHQpCiAgICAgICAgIAogICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSBibG9jay0+Ynl0ZWNvZGVPZmZzZXRzKCkuc2l6ZSgpOyBpLS07KSB7
CiAgICAgICAgICAgICB1bnNpZ25lZCBieXRlY29kZU9mZnNldCA9IGJsb2NrLT5ieXRlY29kZU9m
ZnNldHMoKVtpXTsKLSAgICAgICAgICAgIHN0ZXBPdmVySW5zdHJ1Y3Rpb24obV9jb2RlQmxvY2ss
IGJsb2NrLCBtX2Jhc2ljQmxvY2tzLCBieXRlY29kZU9mZnNldCwgb3V0KTsKKyAgICAgICAgICAg
IHN0ZXBPdmVySW5zdHJ1Y3Rpb24oY29kZUJsb2NrLCBtX2dyYXBoLmJ5dGVjb2RlQW5hbHlzaXNN
b2RlKCksIGJsb2NrLmdldCgpLCBtX2dyYXBoLCBieXRlY29kZU9mZnNldCwgb3V0KTsKICAgICAg
ICAgICAgIHJlc3VsdC5tX21hcFtieXRlY29kZU9mZnNldF0gPSBvdXQ7CiAgICAgICAgIH0KICAg
ICB9CkBAIC0yNTgsMTEgKzI1OSwxMSBAQCB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6
Y29tcHV0ZUtpbGxzKEJ5dGVjb2RlS2lsbHMmIHJlc3VsdCkKIHsKICAgICBGYXN0Qml0VmVjdG9y
IG91dDsKICAgICAKLSAgICByZXN1bHQubV9jb2RlQmxvY2sgPSBtX2NvZGVCbG9jazsKLSAgICBy
ZXN1bHQubV9raWxsU2V0cyA9IHN0ZDo6bWFrZV91bmlxdWU8Qnl0ZWNvZGVLaWxsczo6S2lsbFNl
dFtdPihtX2NvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKKyAgICBDb2RlQmxvY2sq
IGNvZGVCbG9jayA9IG1fZ3JhcGguY29kZUJsb2NrKCk7CisgICAgcmVzdWx0Lm1fY29kZUJsb2Nr
ID0gY29kZUJsb2NrOworICAgIHJlc3VsdC5tX2tpbGxTZXRzID0gc3RkOjptYWtlX3VuaXF1ZTxC
eXRlY29kZUtpbGxzOjpLaWxsU2V0W10+KGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgp
KTsKICAgICAKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2Jhc2ljQmxvY2tzLnNpemUoKTsgaS0t
OykgewotICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrID0gbV9iYXNpY0Jsb2Nrc1tp
XS5nZXQoKTsKKyAgICBmb3IgKHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+JiBi
bG9jayA6IG1fZ3JhcGguYmFzaWNCbG9ja3NJblJldmVyc2VPcmRlcigpKSB7CiAgICAgICAgIGlm
IChibG9jay0+aXNFbnRyeUJsb2NrKCkgfHwgYmxvY2stPmlzRXhpdEJsb2NrKCkpCiAgICAgICAg
ICAgICBjb250aW51ZTsKICAgICAgICAgCkBAIC0yNzEsNyArMjcyLDcgQEAgdm9pZCBCeXRlY29k
ZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGVLaWxscyhCeXRlY29kZUtpbGxzJiByZXN1bHQpCiAg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IGJsb2NrLT5ieXRlY29kZU9mZnNldHMoKS5zaXplKCk7
IGktLTspIHsKICAgICAgICAgICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0ID0gYmxvY2stPmJ5
dGVjb2RlT2Zmc2V0cygpW2ldOwogICAgICAgICAgICAgc3RlcE92ZXJJbnN0cnVjdGlvbigKLSAg
ICAgICAgICAgICAgICBtX2NvZGVCbG9jaywgYmxvY2ssIG1fYmFzaWNCbG9ja3MsIGJ5dGVjb2Rl
T2Zmc2V0LAorICAgICAgICAgICAgICAgIGNvZGVCbG9jaywgbV9ncmFwaC5ieXRlY29kZUFuYWx5
c2lzTW9kZSgpLCBibG9jay5nZXQoKSwgbV9ncmFwaCwgYnl0ZWNvZGVPZmZzZXQsCiAgICAgICAg
ICAgICAgICAgWyZdICh1bnNpZ25lZCBpbmRleCkgewogICAgICAgICAgICAgICAgICAgICAvLyBU
aGlzIGlzIGZvciB1c2VzLgogICAgICAgICAgICAgICAgICAgICBpZiAob3V0LmdldChpbmRleCkp
CkBAIC0yODksMTEgKzI5MCwxMiBAQCB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Y29t
cHV0ZUtpbGxzKEJ5dGVjb2RlS2lsbHMmIHJlc3VsdCkKIAogdm9pZCBCeXRlY29kZUxpdmVuZXNz
QW5hbHlzaXM6OmR1bXBSZXN1bHRzKCkKIHsKLSAgICBJbnRlcnByZXRlciogaW50ZXJwcmV0ZXIg
PSBtX2NvZGVCbG9jay0+dm0oKS0+aW50ZXJwcmV0ZXI7Ci0gICAgSW5zdHJ1Y3Rpb24qIGluc3Ry
dWN0aW9uc0JlZ2luID0gbV9jb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCk7Ci0gICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fYmFzaWNCbG9ja3Muc2l6ZSgpOyBpKyspIHsKLSAg
ICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jayA9IG1fYmFzaWNCbG9ja3NbaV0uZ2V0KCk7
Ci0gICAgICAgIGRhdGFMb2dGKCJcbkJ5dGVjb2RlIGJhc2ljIGJsb2NrICV1OiAlcCAob2Zmc2V0
OiAldSwgbGVuZ3RoOiAldSlcbiIsIGksIGJsb2NrLCBibG9jay0+bGVhZGVyQnl0ZWNvZGVPZmZz
ZXQoKSwgYmxvY2stPnRvdGFsQnl0ZWNvZGVMZW5ndGgoKSk7CisgICAgQ29kZUJsb2NrKiBjb2Rl
QmxvY2sgPSBtX2dyYXBoLmNvZGVCbG9jaygpOworICAgIEludGVycHJldGVyKiBpbnRlcnByZXRl
ciA9IGNvZGVCbG9jay0+dm0oKS0+aW50ZXJwcmV0ZXI7CisgICAgSW5zdHJ1Y3Rpb24qIGluc3Ry
dWN0aW9uc0JlZ2luID0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpOworICAgIHVu
c2lnbmVkIGkgPSAwOworICAgIGZvciAoc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9j
az4mIGJsb2NrIDogbV9ncmFwaC5iYXNpY0Jsb2NrcygpKSB7CisgICAgICAgIGRhdGFMb2dGKCJc
bkJ5dGVjb2RlIGJhc2ljIGJsb2NrICV1OiAlcCAob2Zmc2V0OiAldSwgbGVuZ3RoOiAldSlcbiIs
IGkrKywgYmxvY2suZ2V0KCksIGJsb2NrLT5sZWFkZXJCeXRlY29kZU9mZnNldCgpLCBibG9jay0+
dG90YWxCeXRlY29kZUxlbmd0aCgpKTsKICAgICAgICAgZGF0YUxvZ0YoIlN1Y2Nlc3NvcnM6ICIp
OwogICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSAwOyBqIDwgYmxvY2stPnN1Y2Nlc3NvcnMoKS5z
aXplKCk7IGorKykgewogICAgICAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBzdWNjZXNzb3Ig
PSBibG9jay0+c3VjY2Vzc29ycygpW2pdOwpAQCAtMzAxLDExICszMDMsMTEgQEAgdm9pZCBCeXRl
Y29kZUxpdmVuZXNzQW5hbHlzaXM6OmR1bXBSZXN1bHRzKCkKICAgICAgICAgfQogICAgICAgICBk
YXRhTG9nRigiXG4iKTsKICAgICAgICAgaWYgKGJsb2NrLT5pc0VudHJ5QmxvY2soKSkgewotICAg
ICAgICAgICAgZGF0YUxvZ0YoIkVudHJ5IGJsb2NrICVwXG4iLCBibG9jayk7CisgICAgICAgICAg
ICBkYXRhTG9nRigiRW50cnkgYmxvY2sgJXBcbiIsIGJsb2NrLmdldCgpKTsKICAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICB9CiAgICAgICAgIGlmIChibG9jay0+aXNFeGl0QmxvY2soKSkg
ewotICAgICAgICAgICAgZGF0YUxvZ0YoIkV4aXQgYmxvY2s6ICVwXG4iLCBibG9jayk7CisgICAg
ICAgICAgICBkYXRhTG9nRigiRXhpdCBibG9jazogJXBcbiIsIGJsb2NrLmdldCgpKTsKICAgICAg
ICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAgICAgICAgIGZvciAodW5zaWduZWQgYnl0ZWNv
ZGVPZmZzZXQgPSBibG9jay0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKTsgYnl0ZWNvZGVPZmZzZXQg
PCBibG9jay0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKSArIGJsb2NrLT50b3RhbEJ5dGVjb2RlTGVu
Z3RoKCk7KSB7CkBAIC0zMTgsNyArMzIwLDcgQEAgdm9pZCBCeXRlY29kZUxpdmVuZXNzQW5hbHlz
aXM6OmR1bXBSZXN1bHRzKCkKICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZ0YoIiV1ICIsIGop
OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZGF0YUxvZ0YoIlxuIik7Ci0gICAgICAgICAg
ICBtX2NvZGVCbG9jay0+ZHVtcEJ5dGVjb2RlKFdURjo6ZGF0YUZpbGUoKSwgbV9jb2RlQmxvY2st
Pmdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVjKCksIGluc3RydWN0aW9uc0JlZ2luLCBjdXJyZW50
SW5zdHJ1Y3Rpb24pOworICAgICAgICAgICAgY29kZUJsb2NrLT5kdW1wQnl0ZWNvZGUoV1RGOjpk
YXRhRmlsZSgpLCBjb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVjKCksIGluc3Ry
dWN0aW9uc0JlZ2luLCBjdXJyZW50SW5zdHJ1Y3Rpb24pOwogCiAgICAgICAgICAgICBPcGNvZGVJ
RCBvcGNvZGVJRCA9IGludGVycHJldGVyLT5nZXRPcGNvZGVJRChpbnN0cnVjdGlvbnNCZWdpblti
eXRlY29kZU9mZnNldF0udS5vcGNvZGUpOwogICAgICAgICAgICAgdW5zaWduZWQgb3Bjb2RlTGVu
Z3RoID0gb3Bjb2RlTGVuZ3Roc1tvcGNvZGVJRF07CkBAIC0zMzcsOCArMzM5LDYgQEAgdm9pZCBC
eXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmR1bXBSZXN1bHRzKCkKIAogdm9pZCBCeXRlY29kZUxp
dmVuZXNzQW5hbHlzaXM6OmNvbXB1dGUoKQogewotICAgIGNvbXB1dGVCeXRlY29kZUJhc2ljQmxv
Y2tzKG1fY29kZUJsb2NrLCBtX2Jhc2ljQmxvY2tzKTsKLSAgICBBU1NFUlQobV9iYXNpY0Jsb2Nr
cy5zaXplKCkpOwogICAgIHJ1bkxpdmVuZXNzRml4cG9pbnQoKTsKIAogICAgIGlmIChPcHRpb25z
OjpkdW1wQnl0ZWNvZGVMaXZlbmVzc1Jlc3VsdHMoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuaAppbmRleCBl
Y2UxNmYyMWYwMTUxMGE2NDI3ZmQ4NDExNDA3OWJlZDg3MGMwODc1Li4zNWRmNWYxZjM4Zjg5N2I5
NTIwNmUyMmM0MzJmYzc1YmVmM2JiMDQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5oCkBAIC0yNyw2ICsy
Nyw3IEBACiAjZGVmaW5lIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc19oCiAKICNpbmNsdWRlICJC
eXRlY29kZUJhc2ljQmxvY2suaCIKKyNpbmNsdWRlICJCeXRlY29kZUdyYXBoLmgiCiAjaW5jbHVk
ZSA8d3RmL0Zhc3RCaXRWZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTQxLDcgKzQyLDcgQEAgY2xhc3MgQnl0ZWNvZGVMaXZlbmVz
c0FuYWx5c2lzIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMpOwogcHVibGljOgotICAgIEJ5dGVj
b2RlTGl2ZW5lc3NBbmFseXNpcyhDb2RlQmxvY2sqKTsKKyAgICBCeXRlY29kZUxpdmVuZXNzQW5h
bHlzaXMoQnl0ZWNvZGVHcmFwaCYpOwogICAgIAogICAgIGJvb2wgb3BlcmFuZElzTGl2ZUF0Qnl0
ZWNvZGVPZmZzZXQoaW50IG9wZXJhbmQsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KTsKICAgICBG
YXN0Qml0VmVjdG9yIGdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQodW5zaWduZWQgYnl0
ZWNvZGVPZmZzZXQpOwpAQCAtNTYsOCArNTcsNyBAQCBjbGFzcyBCeXRlY29kZUxpdmVuZXNzQW5h
bHlzaXMgewogCiAgICAgdm9pZCBnZXRMaXZlbmVzc0luZm9BdEJ5dGVjb2RlT2Zmc2V0KHVuc2ln
bmVkIGJ5dGVjb2RlT2Zmc2V0LCBGYXN0Qml0VmVjdG9yJik7CiAKLSAgICBDb2RlQmxvY2sqIG1f
Y29kZUJsb2NrOwotICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2Nr
Pj4gbV9iYXNpY0Jsb2NrczsKKyAgICBCeXRlY29kZUdyYXBoJiBtX2dyYXBoOwogfTsKIAogaW5s
aW5lIGJvb2wgb3BlcmFuZElzQWx3YXlzTGl2ZShpbnQgb3BlcmFuZCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCmluZGV4IGZiMDU2MDg3MGU0
NDQ5ZmUyZTI5MjdiNDAwZmM2ODFjZWY0Zjc0MDIuLmMwZWEyNWU3Mzk3MWViODk4MTIyNDliOTdi
YjEwM2ZjMjgxYjY1ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZVVzZURlZi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZVVzZURlZi5oCkBAIC0zMiw3ICszMiw3IEBACiAKIHRlbXBsYXRlPHR5cGVuYW1lIEZ1
bmN0b3I+CiB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoCi0gICAgQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2Rl
T2Zmc2V0LCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQorICAgIENvZGVCbG9jayogY29kZUJsb2Nr
LCBCeXRlY29kZUFuYWx5c2lzTW9kZSBieXRlY29kZUFuYWx5c2lzTW9kZSwgQnl0ZWNvZGVCYXNp
Y0Jsb2NrKiBibG9jaywgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIGNvbnN0IEZ1bmN0b3ImIGZ1
bmN0b3IpCiB7CiAgICAgSW50ZXJwcmV0ZXIqIGludGVycHJldGVyID0gY29kZUJsb2NrLT52bSgp
LT5pbnRlcnByZXRlcjsKICAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4gPSBjb2Rl
QmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCk7CkBAIC01Nyw2ICs1Nyw3IEBAIHZvaWQgY29t
cHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCgKICAgICBjYXNlIG9wX3dhdGNoZG9nOgogICAgIGNh
c2Ugb3BfbG9nX3NoYWRvd19jaGlja2VuX3Byb2xvZ3VlOgogICAgIGNhc2Ugb3BfbG9nX3NoYWRv
d19jaGlja2VuX3RhaWw6CisgICAgY2FzZSBvcF9uZXdfZ2VuZXJhdG9yX2ZyYW1lOgogICAgICAg
ICByZXR1cm47CiAgICAgY2FzZSBvcF9hc3NlcnQ6CiAgICAgY2FzZSBvcF9nZXRfc2NvcGU6CkBA
IC0yNTcsMTggKzI1OCwyNiBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoCiAg
ICAgfQogICAgIGNhc2Ugb3Bfc2F2ZTogewogICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5z
dHJ1Y3Rpb24sIG9wY29kZUlELCBpbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOwotICAgICAgICB1
bnNpZ25lZCBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXQgPSBieXRlY29kZU9mZnNldCArIGluc3Ry
dWN0aW9uWzNdLnUub3BlcmFuZDsKLSAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBtZXJnZVBv
aW50QmxvY2sgPSBudWxscHRyOwotICAgICAgICBmb3IgKEJ5dGVjb2RlQmFzaWNCbG9jayogc3Vj
Y2Vzc29yIDogYmxvY2stPnN1Y2Nlc3NvcnMoKSkgewotICAgICAgICAgICAgaWYgKHN1Y2Nlc3Nv
ci0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKSA9PSBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXQpIHsK
LSAgICAgICAgICAgICAgICBtZXJnZVBvaW50QmxvY2sgPSBzdWNjZXNzb3I7Ci0gICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGlmIChieXRlY29kZUFuYWx5c2lzTW9kZSA9PSBCeXRlY29k
ZUFuYWx5c2lzTW9kZTo6RXh0cmFjdEdlbmVyYXRvckxpdmVDYWxsZWVMb2NhbHMpIHsKKyAgICAg
ICAgICAgIHVuc2lnbmVkIG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldCA9IGJ5dGVjb2RlT2Zmc2V0
ICsgaW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kOworICAgICAgICAgICAgQnl0ZWNvZGVCYXNpY0Js
b2NrKiBtZXJnZVBvaW50QmxvY2sgPSBudWxscHRyOworICAgICAgICAgICAgZm9yIChCeXRlY29k
ZUJhc2ljQmxvY2sqIHN1Y2Nlc3NvciA6IGJsb2NrLT5zdWNjZXNzb3JzKCkpIHsKKyAgICAgICAg
ICAgICAgICBpZiAoc3VjY2Vzc29yLT5sZWFkZXJCeXRlY29kZU9mZnNldCgpID09IG1lcmdlUG9p
bnRCeXRlY29kZU9mZnNldCkgeworICAgICAgICAgICAgICAgICAgICBtZXJnZVBvaW50QmxvY2sg
PSBzdWNjZXNzb3I7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEFTU0VSVChtZXJnZVBvaW50QmxvY2spOwor
ICAgICAgICAgICAgbWVyZ2VQb2ludEJsb2NrLT5pbigpLmZvckVhY2hTZXRCaXQoWyZdKHVuc2ln
bmVkIGxvY2FsKSB7CisgICAgICAgICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0
aW9uLCBvcGNvZGVJRCwgdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwobG9jYWwpLm9mZnNldCgpKTsK
KyAgICAgICAgICAgIH0pOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdW5zaWduZWQg
bGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gaW5zdHJ1Y3Rpb25bMl0udS51bnNpZ25lZFZhbHVlOwor
ICAgICAgICAgICAgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZW5lc3MgPSBjb2RlQmxvY2stPmxp
dmVDYWxsZWVMb2NhbHNBdFlpZWxkKGxpdmVDYWxsZWVMb2NhbHNJbmRleCk7CisgICAgICAgICAg
ICBsaXZlbmVzcy5mb3JFYWNoU2V0Qml0KFsmXSh1bnNpZ25lZCBsb2NhbCkgeworICAgICAgICAg
ICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIHZpcnR1YWxS
ZWdpc3RlckZvckxvY2FsKGxvY2FsKS5vZmZzZXQoKSk7CisgICAgICAgICAgICB9KTsKICAgICAg
ICAgfQotICAgICAgICBBU1NFUlQobWVyZ2VQb2ludEJsb2NrKTsKLSAgICAgICAgbWVyZ2VQb2lu
dEJsb2NrLT5pbigpLmZvckVhY2hTZXRCaXQoWyZdKHVuc2lnbmVkIGxvY2FsKSB7Ci0gICAgICAg
ICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCB2aXJ0dWFsUmVn
aXN0ZXJGb3JMb2NhbChsb2NhbCkub2Zmc2V0KCkpOwotICAgICAgICB9KTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KICAgICBkZWZhdWx0OgpAQCAtMjc4LDcgKzI4Nyw3IEBAIHZvaWQgY29tcHV0
ZVVzZXNGb3JCeXRlY29kZU9mZnNldCgKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4K
LXZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywg
Qnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaywgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIGNvbnN0
IEZ1bmN0b3ImIGZ1bmN0b3IpCit2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQ29k
ZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQW5hbHlzaXNNb2RlIGJ5dGVjb2RlQW5hbHlzaXNN
b2RlLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwg
Y29uc3QgRnVuY3RvciYgZnVuY3RvcikKIHsKICAgICBJbnRlcnByZXRlciogaW50ZXJwcmV0ZXIg
PSBjb2RlQmxvY2stPnZtKCktPmludGVycHJldGVyOwogICAgIEluc3RydWN0aW9uKiBpbnN0cnVj
dGlvbnNCZWdpbiA9IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsKQEAgLTQyNSw3
ICs0MzQsOCBAQCB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvYwogICAgIGNhc2Ugb3BfZGVsX2J5X3Zh
bDoKICAgICBjYXNlIG9wX3Vuc2lnbmVkOgogICAgIGNhc2Ugb3BfZ2V0X2Zyb21fYXJndW1lbnRz
OiAKLSAgICBjYXNlIG9wX2dldF9yZXN0X2xlbmd0aDogeworICAgIGNhc2Ugb3BfZ2V0X3Jlc3Rf
bGVuZ3RoOgorICAgIGNhc2Ugb3BfbmV3X2dlbmVyYXRvcl9mcmFtZTogewogICAgICAgICBBU1NF
UlQob3Bjb2RlTGVuZ3Roc1tvcGNvZGVJRF0gPiAxKTsKICAgICAgICAgZnVuY3Rvcihjb2RlQmxv
Y2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKTsKICAg
ICAgICAgcmV0dXJuOwpAQCAtNDQyLDEwICs0NTIsMTggQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5
dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJs
b2MKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBjYXNlIG9wX3Jlc3VtZTogewotICAgICAg
ICBSRUxFQVNFX0FTU0VSVChibG9jay0+c3VjY2Vzc29ycygpLnNpemUoKSA9PSAxKTsKLSAgICAg
ICAgYmxvY2stPnN1Y2Nlc3NvcnMoKVswXS0+aW4oKS5mb3JFYWNoU2V0Qml0KFsmXSh1bnNpZ25l
ZCBsb2NhbCkgewotICAgICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBv
cGNvZGVJRCwgdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwobG9jYWwpLm9mZnNldCgpKTsKLSAgICAg
ICAgfSk7CisgICAgICAgIGlmIChieXRlY29kZUFuYWx5c2lzTW9kZSA9PSBCeXRlY29kZUFuYWx5
c2lzTW9kZTo6RXh0cmFjdEdlbmVyYXRvckxpdmVDYWxsZWVMb2NhbHMpIHsKKyAgICAgICAgICAg
IFJFTEVBU0VfQVNTRVJUKGJsb2NrLT5zdWNjZXNzb3JzKCkuc2l6ZSgpID09IDEpOworICAgICAg
ICAgICAgYmxvY2stPnN1Y2Nlc3NvcnMoKVswXS0+aW4oKS5mb3JFYWNoU2V0Qml0KFsmXSh1bnNp
Z25lZCBsb2NhbCkgeworICAgICAgICAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVj
dGlvbiwgb3Bjb2RlSUQsIHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGxvY2FsKS5vZmZzZXQoKSk7
CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHVuc2lnbmVk
IGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9IGluc3RydWN0aW9uWzJdLnUudW5zaWduZWRWYWx1ZTsK
KyAgICAgICAgICAgIGNvbnN0IEZhc3RCaXRWZWN0b3ImIGxpdmVuZXNzID0gY29kZUJsb2NrLT5s
aXZlQ2FsbGVlTG9jYWxzQXRZaWVsZChsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpOworICAgICAgICAg
ICAgbGl2ZW5lc3MuZm9yRWFjaFNldEJpdChbJl0odW5zaWduZWQgbG9jYWwpIHsKKyAgICAgICAg
ICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCB2aXJ0dWFs
UmVnaXN0ZXJGb3JMb2NhbChsb2NhbCkub2Zmc2V0KCkpOworICAgICAgICAgICAgfSk7CisgICAg
ICAgIH0KICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IDYzZTczMzQ4NDMwY2MwYTgzNDdkMTZi
NmU3OGQzYzYzNjQ1ZjhiMDQuLmY1NWI3N2ZhMzU5NjhiN2VmYTExNzc0NDI1ZmM0ZDI1MjFiMDA1
NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2su
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBA
IC0zMiw2ICszMiw3IEBACiAKICNpbmNsdWRlICJCYXNpY0Jsb2NrTG9jYXRpb24uaCIKICNpbmNs
dWRlICJCeXRlY29kZUdlbmVyYXRvci5oIgorI2luY2x1ZGUgIkJ5dGVjb2RlR3JhcGguaCIKICNp
bmNsdWRlICJCeXRlY29kZVVzZURlZi5oIgogI2luY2x1ZGUgIkNhbGxMaW5rU3RhdHVzLmgiCiAj
aW5jbHVkZSAiREZHQ2FwYWJpbGl0aWVzLmgiCkBAIC0xNTkwLDI2ICsxNTkxLDMzIEBAIHZvaWQg
Q29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQog
ICAgICAgICBjYXNlIG9wX3NhdmU6IHsKLSAgICAgICAgICAgIGludCBnZW5lcmF0b3IgPSAoKytp
dCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIGludCBmcmFtZSA9ICgrK2l0KS0+dS5vcGVyYW5k
OwogICAgICAgICAgICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gKCsraXQpLT51
LnVuc2lnbmVkVmFsdWU7CiAgICAgICAgICAgICBpbnQgb2Zmc2V0ID0gKCsraXQpLT51Lm9wZXJh
bmQ7CiAgICAgICAgICAgICBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlbmVzcyA9IG1fcmFyZURh
dGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGRbbGl2ZUNhbGxlZUxvY2Fsc0luZGV4XTsKICAg
ICAgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgInNh
dmUiKTsKLSAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAiLCByZWdpc3Rlck5hbWUoZ2VuZXJh
dG9yKS5kYXRhKCkpOworICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICIsIHJlZ2lzdGVyTmFt
ZShmcmFtZSkuZGF0YSgpKTsKICAgICAgICAgICAgIGxpdmVuZXNzLmR1bXAob3V0KTsKICAgICAg
ICAgICAgIG91dC5wcmludGYoIihAbGl2ZSUxdSksICVkKC0+JWQpIiwgbGl2ZUNhbGxlZUxvY2Fs
c0luZGV4LCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfcmVzdW1lOiB7Ci0gICAgICAgICAgICBpbnQgZ2Vu
ZXJhdG9yID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBpbnQgZnJhbWUgPSAoKytp
dCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRl
eCA9ICgrK2l0KS0+dS51bnNpZ25lZFZhbHVlOwogICAgICAgICAgICAgY29uc3QgRmFzdEJpdFZl
Y3RvciYgbGl2ZW5lc3MgPSBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkW2xp
dmVDYWxsZWVMb2NhbHNJbmRleF07CiAgICAgICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0
LCBleGVjLCBsb2NhdGlvbiwgaXQsICJyZXN1bWUiKTsKLSAgICAgICAgICAgIG91dC5wcmludGYo
IiVzLCAiLCByZWdpc3Rlck5hbWUoZ2VuZXJhdG9yKS5kYXRhKCkpOworICAgICAgICAgICAgb3V0
LnByaW50ZigiJXMsICIsIHJlZ2lzdGVyTmFtZShmcmFtZSkuZGF0YSgpKTsKICAgICAgICAgICAg
IGxpdmVuZXNzLmR1bXAob3V0KTsKICAgICAgICAgICAgIG91dC5wcmludGYoIihAbGl2ZSUxdSki
LCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
KyAgICAgICAgY2FzZSBvcF9uZXdfZ2VuZXJhdG9yX2ZyYW1lOiB7CisgICAgICAgICAgICBpbnQg
ZHN0ID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICB1bnNpZ25lZCBnZW5lcmF0b3JM
b2NhbHNTaXplID0gKCsraXQpLT51LnVuc2lnbmVkVmFsdWU7CisgICAgICAgICAgICBwcmludExv
Y2F0aW9uT3BBbmRSZWdpc3Rlck9wZXJhbmQob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJuZXdf
Z2VuZXJhdG9yX2ZyYW1lIiwgZHN0KTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIiAldSIsIGdl
bmVyYXRvckxvY2Fsc1NpemUpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAg
ICAgY2FzZSBvcF9hc3NlcnQ6IHsKICAgICAgICAgICAgIGludCBjb25kaXRpb24gPSAoKytpdCkt
PnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBsaW5lID0gKCsraXQpLT51Lm9wZXJhbmQ7CkBA
IC0xODc0LDYgKzE4ODIsMTIgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2
bSwgQ29weVBhcnNlZEJsb2NrVGFnLCBDb2RlQmxvY2smIG90aGVyKQogICAgIHNldE51bVBhcmFt
ZXRlcnModW5saW5rZWRDb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSk7CiB9CiAKK3N0cnVjdCBH
ZW5lcmF0b3JQb2ludHMgeworICAgIHNpemVfdCBzYXZlUG9pbnQ7CisgICAgc2l6ZV90IG1lcmdl
UG9pbnQ7CisgICAgc2l6ZV90IHJlc3VtZVBvaW50OworfTsKKwogdm9pZCBDb2RlQmxvY2s6OmZp
bmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBV
bmxpbmtlZENvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2ssCiAgICAgSlNTY29wZSogc2NvcGUp
CiB7CkBAIC0xOTkwLDkgKzIwMDQsMTAgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9u
KFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICBI
YXNoU2V0PEpTTW9kdWxlRW52aXJvbm1lbnQqPiBzdHJvbmdseVJlZmVyZW5jZWRNb2R1bGVFbnZp
cm9ubWVudHM7CiAKICAgICAvLyBCb29ra2VlcCB0aGUgbWVyZ2UgcG9pbnQgYnl0ZWNvZGUgb2Zm
c2V0cy4KLSAgICBWZWN0b3I8c2l6ZV90PiBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXRzOworICAg
IFZlY3RvcjxHZW5lcmF0b3JQb2ludHM+IGdlbmVyYXRvclBvaW50c1ZlY3RvcjsKIAogICAgIFJl
ZkNvdW50ZWRBcnJheTxJbnN0cnVjdGlvbj4gaW5zdHJ1Y3Rpb25zKGluc3RydWN0aW9uQ291bnQp
OworICAgIHVuc2lnbmVkIG5ld0dlbmVyYXRvckZyYW1lSW5zdHJ1Y3Rpb25PZmZzZXQgPSAwOwog
CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgIWluc3RydWN0aW9uUmVhZGVyLmF0RW5kKCk7ICkg
ewogICAgICAgICBjb25zdCBVbmxpbmtlZEluc3RydWN0aW9uKiBwYyA9IGluc3RydWN0aW9uUmVh
ZGVyLm5leHQoKTsKQEAgLTIyNzUsOSArMjI5MCwyMyBAQCB2b2lkIENvZGVCbG9jazo6ZmluaXNo
Q3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGlu
awogICAgICAgICBjYXNlIG9wX3NhdmU6IHsKICAgICAgICAgICAgIHVuc2lnbmVkIGxpdmVDYWxs
ZWVMb2NhbHNJbmRleCA9IHBjWzJdLnUuaW5kZXg7CiAgICAgICAgICAgICBpbnQgb2Zmc2V0ID0g
cGNbM10udS5vcGVyYW5kOwotICAgICAgICAgICAgaWYgKGxpdmVDYWxsZWVMb2NhbHNJbmRleCA+
PSBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXRzLnNpemUoKSkKLSAgICAgICAgICAgICAgICBtZXJn
ZVBvaW50Qnl0ZWNvZGVPZmZzZXRzLnJlc2l6ZShsaXZlQ2FsbGVlTG9jYWxzSW5kZXggKyAxKTsK
LSAgICAgICAgICAgIG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldHNbbGl2ZUNhbGxlZUxvY2Fsc0lu
ZGV4XSA9IGkgKyBvZmZzZXQ7CisgICAgICAgICAgICBpZiAobGl2ZUNhbGxlZUxvY2Fsc0luZGV4
ID49IGdlbmVyYXRvclBvaW50c1ZlY3Rvci5zaXplKCkpCisgICAgICAgICAgICAgICAgZ2VuZXJh
dG9yUG9pbnRzVmVjdG9yLnJlc2l6ZShsaXZlQ2FsbGVlTG9jYWxzSW5kZXggKyAxKTsKKyAgICAg
ICAgICAgIGdlbmVyYXRvclBvaW50c1ZlY3RvcltsaXZlQ2FsbGVlTG9jYWxzSW5kZXhdLnNhdmVQ
b2ludCA9IGk7CisgICAgICAgICAgICBnZW5lcmF0b3JQb2ludHNWZWN0b3JbbGl2ZUNhbGxlZUxv
Y2Fsc0luZGV4XS5tZXJnZVBvaW50ID0gaSArIG9mZnNldDsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CisKKyAgICAgICAgY2FzZSBvcF9yZXN1bWU6IHsKKyAgICAgICAgICAgIHVuc2ln
bmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9IHBjWzJdLnUuaW5kZXg7CisgICAgICAgICAgICBp
ZiAobGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID49IGdlbmVyYXRvclBvaW50c1ZlY3Rvci5zaXplKCkp
CisgICAgICAgICAgICAgICAgZ2VuZXJhdG9yUG9pbnRzVmVjdG9yLnJlc2l6ZShsaXZlQ2FsbGVl
TG9jYWxzSW5kZXggKyAxKTsKKyAgICAgICAgICAgIGdlbmVyYXRvclBvaW50c1ZlY3RvcltsaXZl
Q2FsbGVlTG9jYWxzSW5kZXhdLnJlc3VtZVBvaW50ID0gaTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CisKKyAgICAgICAgY2FzZSBvcF9uZXdfZ2VuZXJhdG9yX2ZyYW1lOiB7CisgICAg
ICAgICAgICBuZXdHZW5lcmF0b3JGcmFtZUluc3RydWN0aW9uT2Zmc2V0ID0gaTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CiAKQEAgLTIyODcsMjUgKzIzMTYsMzIgQEAgdm9pZCBDb2Rl
QmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVj
dXRhYmxlLCBVbmxpbmsKICAgICAgICAgaSArPSBvcExlbmd0aDsKICAgICB9CiAKLSAgICBpZiAo
dm0uY29udHJvbEZsb3dQcm9maWxlcigpKQotICAgICAgICBpbnNlcnRCYXNpY0Jsb2NrQm91bmRh
cmllc0ZvckNvbnRyb2xGbG93UHJvZmlsZXIoaW5zdHJ1Y3Rpb25zKTsKLQogICAgIG1faW5zdHJ1
Y3Rpb25zID0gV1RGTW92ZShpbnN0cnVjdGlvbnMpOwogCiAgICAgLy8gUGVyZm9ybSBieXRlY29k
ZSBsaXZlbmVzcyBhbmFseXNpcyB0byBkZXRlcm1pbmUgd2hpY2ggbG9jYWxzIGFyZSBsaXZlIGFu
ZCBzaG91bGQgYmUgcmVzdW1lZCB3aGVuIGV4ZWN1dGluZyBvcF9yZXN1bWUuCiAgICAgaWYgKHVu
bGlua2VkQ29kZUJsb2NrLT5wYXJzZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRv
ckJvZHlNb2RlKSB7Ci0gICAgICAgIGlmIChzaXplX3QgY291bnQgPSBtZXJnZVBvaW50Qnl0ZWNv
ZGVPZmZzZXRzLnNpemUoKSkgeworICAgICAgICB1bnNpZ25lZCBtYXhHZW5lcmF0b3JMb2NhbHNT
aXplID0gMDsKKyAgICAgICAgaWYgKHNpemVfdCBjb3VudCA9IGdlbmVyYXRvclBvaW50c1ZlY3Rv
ci5zaXplKCkpIHsKICAgICAgICAgICAgIGNyZWF0ZVJhcmVEYXRhSWZOZWNlc3NhcnkoKTsKLSAg
ICAgICAgICAgIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcyBsaXZlbmVzcyh0aGlzKTsKICAgICAg
ICAgICAgIG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQuZ3Jvdyhjb3VudCk7
Ci0gICAgICAgICAgICBzaXplX3QgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gMDsKLSAgICAgICAg
ICAgIGZvciAoc2l6ZV90IGJ5dGVjb2RlT2Zmc2V0IDogbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0
cykgewotICAgICAgICAgICAgICAgIG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWll
bGRbbGl2ZUNhbGxlZUxvY2Fsc0luZGV4XSA9IGxpdmVuZXNzLmdldExpdmVuZXNzSW5mb0F0Qnl0
ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpOwotICAgICAgICAgICAgICAgICsrbGl2ZUNhbGxl
ZUxvY2Fsc0luZGV4OworCisgICAgICAgICAgICBCeXRlY29kZUdyYXBoIGdyYXBoKHRoaXMsIEJ5
dGVjb2RlQW5hbHlzaXNNb2RlOjpFeHRyYWN0R2VuZXJhdG9yTGl2ZUNhbGxlZUxvY2Fscyk7Cisg
ICAgICAgICAgICBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMgbGl2ZW5lc3MoZ3JhcGgpOworICAg
ICAgICAgICAgZm9yIChzaXplX3QgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gMDsgbGl2ZUNhbGxl
ZUxvY2Fsc0luZGV4IDwgZ2VuZXJhdG9yUG9pbnRzVmVjdG9yLnNpemUoKTsgKytsaXZlQ2FsbGVl
TG9jYWxzSW5kZXgpIHsKKyAgICAgICAgICAgICAgICBjb25zdCBHZW5lcmF0b3JQb2ludHMmIHBv
aW50cyA9IGdlbmVyYXRvclBvaW50c1ZlY3RvcltsaXZlQ2FsbGVlTG9jYWxzSW5kZXhdOworICAg
ICAgICAgICAgICAgIHNpemVfdCBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXQgPSBwb2ludHMubWVy
Z2VQb2ludDsKKyAgICAgICAgICAgICAgICBGYXN0Qml0VmVjdG9yIGxpdmVuZXNzVmVjdG9yID0g
bGl2ZW5lc3MuZ2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29kZU9mZnNldChtZXJnZVBvaW50Qnl0ZWNv
ZGVPZmZzZXQpOworICAgICAgICAgICAgICAgIG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fs
c0F0WWllbGRbbGl2ZUNhbGxlZUxvY2Fsc0luZGV4XSA9IGxpdmVuZXNzVmVjdG9yOworICAgICAg
ICAgICAgICAgIG1heEdlbmVyYXRvckxvY2Fsc1NpemUgPSBzdGQ6Om1heDx1bnNpZ25lZD4obWF4
R2VuZXJhdG9yTG9jYWxzU2l6ZSwgbGl2ZW5lc3NWZWN0b3IuYml0Q291bnQoKSk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KKyAgICAgICAgLy8gRmlsbCBvcF9uZXdfZ2VuZXJhdG9yX2ZyYW1l
J3Mgc2l6ZS4KKyAgICAgICAgbV9pbnN0cnVjdGlvbnNbbmV3R2VuZXJhdG9yRnJhbWVJbnN0cnVj
dGlvbk9mZnNldCArIDJdLnUudW5zaWduZWRWYWx1ZSA9IG1heEdlbmVyYXRvckxvY2Fsc1NpemU7
CiAgICAgfQogCisgICAgaWYgKHZtLmNvbnRyb2xGbG93UHJvZmlsZXIoKSkKKyAgICAgICAgaW5z
ZXJ0QmFzaWNCbG9ja0JvdW5kYXJpZXNGb3JDb250cm9sRmxvd1Byb2ZpbGVyKG1faW5zdHJ1Y3Rp
b25zKTsKKwogICAgIC8vIFNldCBvcHRpbWl6YXRpb24gdGhyZXNob2xkcyBvbmx5IGFmdGVyIG1f
aW5zdHJ1Y3Rpb25zIGlzIGluaXRpYWxpemVkLCBzaW5jZSB0aGVzZQogICAgIC8vIHJlbHkgb24g
dGhlIGluc3RydWN0aW9uIGNvdW50IChhbmQgYXJlIGluIHRoZW9yeSBwZXJtaXR0ZWQgdG8gYWxz
byBpbnNwZWN0IHRoZQogICAgIC8vIGluc3RydWN0aW9uIHN0cmVhbSB0byBtb3JlIGFjY3VyYXRl
IGFzc2VzcyB0aGUgY29zdCBvZiB0aWVyLXVwKS4KQEAgLTQxMzgsNyArNDE3NCw4IEBAIFZhbHVl
UHJvZmlsZSogQ29kZUJsb2NrOjp2YWx1ZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChpbnQgYnl0
ZWNvZGVPZmZzZXQpCiAKIHZvaWQgQ29kZUJsb2NrOjp2YWxpZGF0ZSgpCiB7Ci0gICAgQnl0ZWNv
ZGVMaXZlbmVzc0FuYWx5c2lzIGxpdmVuZXNzKHRoaXMpOyAvLyBDb21wdXRlIGRpcmVjdGx5IGZy
b20gc2NyYXRjaCBzbyBpdCBkb2Vzbid0IGVmZmVjdCBDb2RlQmxvY2sgZm9vdHByaW50LgorICAg
IEJ5dGVjb2RlR3JhcGggZ3JhcGgodGhpcywgQnl0ZWNvZGVBbmFseXNpc01vZGU6OlN0YW5kYXJk
KTsKKyAgICBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMgbGl2ZW5lc3MoZ3JhcGgpOyAvLyBDb21w
dXRlIGRpcmVjdGx5IGZyb20gc2NyYXRjaCBzbyBpdCBkb2Vzbid0IGVmZmVjdCBDb2RlQmxvY2sg
Zm9vdHByaW50LgogICAgIAogICAgIEZhc3RCaXRWZWN0b3IgbGl2ZUF0SGVhZCA9IGxpdmVuZXNz
LmdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQoMCk7CiAgICAgCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKaW5kZXggYzM4NTY2MDhiNDllZThlYWRiNmRj
MTA5OTE3MjhkMTFiNTFmNGVkOS4uMjE0MmFhMjZkNDYzZWI0NmRkYmE5YjQwZTNlZDYzNzEyYzkz
NTRlOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
ay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaApAQCAt
NTk3LDEyICs1OTcsMTQgQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAg
ICAgICAgICBpZiAoISFtX2xpdmVuZXNzQW5hbHlzaXMpCiAgICAgICAgICAgICAgICAgcmV0dXJu
ICptX2xpdmVuZXNzQW5hbHlzaXM7CiAgICAgICAgIH0KLSAgICAgICAgc3RkOjp1bmlxdWVfcHRy
PEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcz4gYW5hbHlzaXMgPQotICAgICAgICAgICAgc3RkOjpt
YWtlX3VuaXF1ZTxCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM+KHRoaXMpOworICAgICAgICBzdGQ6
OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVHcmFwaD4gZ3JhcGggPSBzdGQ6Om1ha2VfdW5pcXVlPEJ5dGVj
b2RlR3JhcGg+KHRoaXMsIEJ5dGVjb2RlQW5hbHlzaXNNb2RlOjpTdGFuZGFyZCk7CisgICAgICAg
IHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM+IGFuYWx5c2lzID0gc3Rk
OjptYWtlX3VuaXF1ZTxCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM+KCpncmFwaCk7CiAgICAgICAg
IHsKICAgICAgICAgICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKG1fbG9jayk7Ci0gICAg
ICAgICAgICBpZiAoIW1fbGl2ZW5lc3NBbmFseXNpcykKKyAgICAgICAgICAgIGlmICghbV9saXZl
bmVzc0FuYWx5c2lzKSB7CisgICAgICAgICAgICAgICAgbV9ieXRlY29kZUdyYXBoID0gV1RGTW92
ZShncmFwaCk7CiAgICAgICAgICAgICAgICAgbV9saXZlbmVzc0FuYWx5c2lzID0gV1RGTW92ZShh
bmFseXNpcyk7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gKm1fbGl2ZW5lc3NB
bmFseXNpczsKICAgICAgICAgfQogICAgIH0KQEAgLTEwNjQsNiArMTA2Niw3IEBAIGNsYXNzIENv
ZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogCiAgICAgc3RkOjpjaHJvbm86OnN0ZWFkeV9jbG9j
azo6dGltZV9wb2ludCBtX2NyZWF0aW9uVGltZTsKIAorICAgIHN0ZDo6dW5pcXVlX3B0cjxCeXRl
Y29kZUdyYXBoPiBtX2J5dGVjb2RlR3JhcGg7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2Rl
TGl2ZW5lc3NBbmFseXNpcz4gbV9saXZlbmVzc0FuYWx5c2lzOwogCiAgICAgc3RkOjp1bmlxdWVf
cHRyPFJhcmVEYXRhPiBtX3JhcmVEYXRhOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmNwcAppbmRleCBlMmNiMDAwNDgzNzk0YmE5
MmQ1MTBkY2Y1ZmE5OTQ4ODVhMjNkYzNkLi5iMDI5OGU0MzEzOGVjMGY0ZmZmOTNhNDdhMmE4ZjVh
MGZmNjg0Yzg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJl
Y2lzZUp1bXBUYXJnZXRzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
UHJlY2lzZUp1bXBUYXJnZXRzLmNwcApAQCAtMzEsNyArMzEsNyBAQAogbmFtZXNwYWNlIEpTQyB7
CiAKIHRlbXBsYXRlIDxzaXplX3QgdmVjdG9yU2l6ZT4KLXN0YXRpYyB2b2lkIGdldEp1bXBUYXJn
ZXRzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEludGVycHJldGVyKiBp
bnRlcnByZXRlciwgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBieXRl
Y29kZU9mZnNldCwgVmVjdG9yPHVuc2lnbmVkLCB2ZWN0b3JTaXplPiYgb3V0KQorc3RhdGljIHZv
aWQgZ2V0SnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywg
Qnl0ZWNvZGVBbmFseXNpc01vZGUgYnl0ZWNvZGVBbmFseXNpc01vZGUsIEludGVycHJldGVyKiBp
bnRlcnByZXRlciwgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBieXRl
Y29kZU9mZnNldCwgVmVjdG9yPHVuc2lnbmVkLCB2ZWN0b3JTaXplPiYgb3V0KQogewogICAgIE9w
Y29kZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGluc3RydWN0aW9uc0Jl
Z2luW2J5dGVjb2RlT2Zmc2V0XS51Lm9wY29kZSk7CiAgICAgSW5zdHJ1Y3Rpb24qIGN1cnJlbnQg
PSBpbnN0cnVjdGlvbnNCZWdpbiArIGJ5dGVjb2RlT2Zmc2V0OwpAQCAtNTQsOSArNTQsMTQgQEAg
c3RhdGljIHZvaWQgZ2V0SnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNv
ZGVCbG9jaywgSW50ZXJwcmV0ZXIqIGkKICAgICBjYXNlIG9wX2pubGVzc2VxOgogICAgIGNhc2Ug
b3Bfam5ncmVhdGVyOgogICAgIGNhc2Ugb3Bfam5ncmVhdGVyZXE6Ci0gICAgY2FzZSBvcF9zYXZl
OiAvLyBUaGUganVtcCBvZiBvcF9zYXZlIGlzIHB1cmVseSBmb3IgY2FsY3VsYXRpbmcgbGl2ZW5l
c3MuCiAgICAgICAgIG91dC5hcHBlbmQoYnl0ZWNvZGVPZmZzZXQgKyBjdXJyZW50WzNdLnUub3Bl
cmFuZCk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2Ugb3Bfc2F2ZTogeworICAgICAgICAvLyBU
aGUganVtcCBvZiBvcF9zYXZlIHVuZGVyIEV4dHJhY3RHZW5lcmF0b3JMaXZlQ2FsbGVlTG9jYWxz
IG1vZGUgaXMgcHVyZWx5IGZvciBjYWxjdWxhdGluZyBsaXZlbmVzcy4KKyAgICAgICAgaWYgKGJ5
dGVjb2RlQW5hbHlzaXNNb2RlID09IEJ5dGVjb2RlQW5hbHlzaXNNb2RlOjpFeHRyYWN0R2VuZXJh
dG9yTGl2ZUNhbGxlZUxvY2FscykKKyAgICAgICAgICAgIG91dC5hcHBlbmQoYnl0ZWNvZGVPZmZz
ZXQgKyBjdXJyZW50WzNdLnUub3BlcmFuZCk7CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICBj
YXNlIG9wX3N3aXRjaF9pbW06CiAgICAgY2FzZSBvcF9zd2l0Y2hfY2hhcjogewogICAgICAgICBT
aW1wbGVKdW1wVGFibGUmIHRhYmxlID0gY29kZUJsb2NrLT5zd2l0Y2hKdW1wVGFibGUoY3VycmVu
dFsxXS51Lm9wZXJhbmQpOwpAQCAtODIsNyArODcsNyBAQCBzdGF0aWMgdm9pZCBnZXRKdW1wVGFy
Z2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBJbnRlcnByZXRlciog
aQogICAgIH0KIH0KIAotdm9pZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKENvZGVCbG9jayog
Y29kZUJsb2NrLCBWZWN0b3I8dW5zaWduZWQsIDMyPiYgb3V0KQordm9pZCBjb21wdXRlUHJlY2lz
ZUp1bXBUYXJnZXRzKENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29kZUFuYWx5c2lzTW9kZSBi
eXRlY29kZUFuYWx5c2lzTW9kZSwgVmVjdG9yPHVuc2lnbmVkLCAzMj4mIG91dCkKIHsKICAgICBB
U1NFUlQob3V0LmlzRW1wdHkoKSk7CiAgICAgCkBAIC0xMDIsNyArMTA3LDcgQEAgdm9pZCBjb21w
dXRlUHJlY2lzZUp1bXBUYXJnZXRzKENvZGVCbG9jayogY29kZUJsb2NrLCBWZWN0b3I8dW5zaWdu
ZWQsIDMyPiYgb3V0KQogICAgIHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQgPSBjb2RlQmxvY2st
Pmluc3RydWN0aW9ucygpLnNpemUoKTsKICAgICBmb3IgKHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0
ID0gMDsgYnl0ZWNvZGVPZmZzZXQgPCBpbnN0cnVjdGlvbkNvdW50OykgewogICAgICAgICBPcGNv
ZGVJRCBvcGNvZGVJRCA9IGludGVycHJldGVyLT5nZXRPcGNvZGVJRChpbnN0cnVjdGlvbnNCZWdp
bltieXRlY29kZU9mZnNldF0udS5vcGNvZGUpOwotICAgICAgICBnZXRKdW1wVGFyZ2V0c0ZvckJ5
dGVjb2RlT2Zmc2V0KGNvZGVCbG9jaywgaW50ZXJwcmV0ZXIsIGluc3RydWN0aW9uc0JlZ2luLCBi
eXRlY29kZU9mZnNldCwgb3V0KTsKKyAgICAgICAgZ2V0SnVtcFRhcmdldHNGb3JCeXRlY29kZU9m
ZnNldChjb2RlQmxvY2ssIGJ5dGVjb2RlQW5hbHlzaXNNb2RlLCBpbnRlcnByZXRlciwgaW5zdHJ1
Y3Rpb25zQmVnaW4sIGJ5dGVjb2RlT2Zmc2V0LCBvdXQpOwogICAgICAgICBieXRlY29kZU9mZnNl
dCArPSBvcGNvZGVMZW5ndGhzW29wY29kZUlEXTsKICAgICB9CiAgICAgCkBAIC0xMjMsMTEgKzEy
OCwxMSBAQCB2b2lkIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMoQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssIFZlY3Rvcjx1bnNpZ25lZCwgMzI+JiBvdXQpCiAgICAgb3V0LnNocmlua1RvRml0KCk7CiB9
CiAKLXZvaWQgZmluZEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2Rl
QmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBWZWN0b3I8dW5zaWduZWQsIDE+JiBvdXQp
Cit2b2lkIGZpbmRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJs
b2NrLCBCeXRlY29kZUFuYWx5c2lzTW9kZSBieXRlY29kZUFuYWx5c2lzTW9kZSwgdW5zaWduZWQg
Ynl0ZWNvZGVPZmZzZXQsIFZlY3Rvcjx1bnNpZ25lZCwgMT4mIG91dCkKIHsKICAgICBJbnRlcnBy
ZXRlciogaW50ZXJwcmV0ZXIgPSBjb2RlQmxvY2stPnZtKCktPmludGVycHJldGVyOwogICAgIElu
c3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiA9IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCku
YmVnaW4oKTsKLSAgICBnZXRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9jaywg
aW50ZXJwcmV0ZXIsIGluc3RydWN0aW9uc0JlZ2luLCBieXRlY29kZU9mZnNldCwgb3V0KTsKKyAg
ICBnZXRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9jaywgYnl0ZWNvZGVBbmFs
eXNpc01vZGUsIGludGVycHJldGVyLCBpbnN0cnVjdGlvbnNCZWdpbiwgYnl0ZWNvZGVPZmZzZXQs
IG91dCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5oCmluZGV4IDg1MjQxM2Q3N2I3OTg5
ODRiMjdjZWYwZWQ2MmJjOTRjNjg5ZTIxMmMuLjU4MGE3OTI1MzI2Yjc0NTM0M2JkMzgxMWE3YzVh
MTE4YTk4ZmZkMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Q
cmVjaXNlSnVtcFRhcmdldHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
UHJlY2lzZUp1bXBUYXJnZXRzLmgKQEAgLTMxLDkgKzMxLDkgQEAKIG5hbWVzcGFjZSBKU0Mgewog
CiAvLyBSZXR1cm4gYSBzb3J0ZWQgbGlzdCBvZiBieXRlY29kZSBpbmRleCB0aGF0IGFyZSB0aGUg
ZGVzdGluYXRpb24gb2YgYSBqdW1wLgotdm9pZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKENv
ZGVCbG9jayosIFZlY3Rvcjx1bnNpZ25lZCwgMzI+JiBvdXQpOwordm9pZCBjb21wdXRlUHJlY2lz
ZUp1bXBUYXJnZXRzKENvZGVCbG9jayosIEJ5dGVjb2RlQW5hbHlzaXNNb2RlLCBWZWN0b3I8dW5z
aWduZWQsIDMyPiYgb3V0KTsKIAotdm9pZCBmaW5kSnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNl
dChDb2RlQmxvY2sqLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgVmVjdG9yPHVuc2lnbmVkLCAx
PiYgb3V0KTsKK3ZvaWQgZmluZEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2Nr
KiwgQnl0ZWNvZGVBbmFseXNpc01vZGUsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBWZWN0b3I8
dW5zaWduZWQsIDE+JiBvdXQpOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNw
cAppbmRleCA4YjNhNmFhOThiYmIxNjY0MmEwZTg0Mjc2NDlkOTJkNWU2OTY2ZThlLi5hMGI1Nzhl
MWNhZDliNjU3YWUyZmY1YTEyYWE4YTAzNDE1MmQyOTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAt
MjU5LDcgKzI1OSw3IEBAIFBhcnNlckVycm9yIEJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZSgp
CiAgICAgICAgIC8vICAgIGZ1bmN0aW9uICpnZW4oYSwgYiA9IGhlbGxvKCkpCiAgICAgICAgIC8v
ICAgIHsKICAgICAgICAgLy8gICAgICAgIHJldHVybiB7Ci0gICAgICAgIC8vICAgICAgICAgICAg
QGdlbmVyYXRvck5leHQ6IGZ1bmN0aW9uIChAZ2VuZXJhdG9yLCBAZ2VuZXJhdG9yU3RhdGUsIEBn
ZW5lcmF0b3JWYWx1ZSwgQGdlbmVyYXRvclJlc3VtZU1vZGUpCisgICAgICAgIC8vICAgICAgICAg
ICAgQGdlbmVyYXRvck5leHQ6IGZ1bmN0aW9uIChAZ2VuZXJhdG9yLCBAZ2VuZXJhdG9yU3RhdGUs
IEBnZW5lcmF0b3JWYWx1ZSwgQGdlbmVyYXRvclJlc3VtZU1vZGUsIEBnZW5lcmF0b3JGcmFtZSkK
ICAgICAgICAgLy8gICAgICAgICAgICB7CiAgICAgICAgIC8vICAgICAgICAgICAgICAgIGFyZ3Vt
ZW50czsgIC8vIFRoaXMgYGFyZ3VtZW50c2Agc2hvdWxkIHJlZmVyZW5jZSB0byB0aGUgZ2VuJ3Mg
YXJndW1lbnRzLgogICAgICAgICAvLyAgICAgICAgICAgICAgICAuLi4KQEAgLTUzMiw2ICs1MzIs
OSBAQCBQYXJzZXJFcnJvciBCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUoKQogICAgIGNhc2Ug
U291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JCb2R5TW9kZTogewogICAgICAgICAvLyB8dGhpc3wg
aXMgYWxyZWFkeSBmaWxsZWQgY29ycmVjdGx5IGJlZm9yZSBoZXJlLgogICAgICAgICBlbWl0TG9h
ZChtX25ld1RhcmdldFJlZ2lzdGVyLCBqc1VuZGVmaW5lZCgpKTsKKworICAgICAgICBlbWl0TmV3
R2VuZXJhdG9yRnJhbWUoZ2VuZXJhdG9yRnJhbWVSZWdpc3RlcigpKTsKKyAgICAgICAgZW1pdFB1
dEJ5SWQoZ2VuZXJhdG9yUmVnaXN0ZXIoKSwgcHJvcGVydHlOYW1lcygpLmdlbmVyYXRvckZyYW1l
UHJpdmF0ZU5hbWUsIGdlbmVyYXRvckZyYW1lUmVnaXN0ZXIoKSk7CiAgICAgICAgIGJyZWFrOwog
ICAgIH0KIApAQCAtMjkwMyw2ICsyOTA2LDE0IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRTZXRGdW5jdGlvbk5hbWVJZk5lZWRlZChFeHByZXNzaW9uTm9kZSogdmFsdWVOb2RlLCBSCiAg
ICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG5hbWUtPmluZGV4KCkpOwogfQogCitSZWdpc3RlcklE
KiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0dlbmVyYXRvckZyYW1lKFJlZ2lzdGVySUQqIGRz
dCkKK3sKKyAgICBlbWl0T3Bjb2RlKG9wX25ld19nZW5lcmF0b3JfZnJhbWUpOworICAgIGluc3Ry
dWN0aW9ucygpLmFwcGVuZChkc3QtPmluZGV4KCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVu
ZCgwKTsKKyAgICByZXR1cm4gZHN0OworfQorCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRv
cjo6ZW1pdENhbGwoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBmdW5jLCBFeHBlY3RlZEZ1
bmN0aW9uIGV4cGVjdGVkRnVuY3Rpb24sIENhbGxBcmd1bWVudHMmIGNhbGxBcmd1bWVudHMsIGNv
bnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3Rh
cnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCkKIHsKICAgICByZXR1cm4gZW1pdENh
bGwob3BfY2FsbCwgZHN0LCBmdW5jLCBleHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJndW1lbnRzLCBk
aXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQpOwpAQCAtNDM1Nyw3ICs0MzY4LDcgQEAgdm9pZCBC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdFNhdmUoTGFiZWwqIG1lcmdlUG9pbnQsIHVuc2lnbmVkIGxp
dmVDYWxsZWVMb2NhbHNJbmQKIHsKICAgICBzaXplX3QgYmVnaW4gPSBpbnN0cnVjdGlvbnMoKS5z
aXplKCk7CiAgICAgZW1pdE9wY29kZShvcF9zYXZlKTsKLSAgICBpbnN0cnVjdGlvbnMoKS5hcHBl
bmQobV9nZW5lcmF0b3JSZWdpc3Rlci0+aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKGdlbmVyYXRvckZyYW1lUmVnaXN0ZXIoKS0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25z
KCkuYXBwZW5kKGxpdmVDYWxsZWVMb2NhbHNJbmRleCk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKG1lcmdlUG9pbnQtPmJpbmQoYmVnaW4sIGluc3RydWN0aW9ucygpLnNpemUoKSkpOwogfQpA
QCAtNDM2Niw3ICs0Mzc3LDcgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlc3VtZShM
YWJlbCogbWVyZ2VQb2ludCwgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0kKIHsKICAgICBlbWl0
R2VuZXJhdG9yU3RhdGVMYWJlbCgpOwogICAgIGVtaXRPcGNvZGUob3BfcmVzdW1lKTsKLSAgICBp
bnN0cnVjdGlvbnMoKS5hcHBlbmQobV9nZW5lcmF0b3JSZWdpc3Rlci0+aW5kZXgoKSk7CisgICAg
aW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGdlbmVyYXRvckZyYW1lUmVnaXN0ZXIoKS0+aW5kZXgoKSk7
CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGxpdmVDYWxsZWVMb2NhbHNJbmRleCk7CiAgICAg
ZW1pdExhYmVsKG1lcmdlUG9pbnQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmluZGV4IDA5NjFlMDI0NWYwZjE4
NzA3YWRkODljYTdjMzUwZDhkZjgyZDBkYTguLjU3NDllOWVjYWRkNGEwZmViYzM1YzNiM2JmZWFh
YTM3Yjc0Y2I4MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTUzMCw2ICs1MzAsNyBAQAogICAgICAgICBS
ZWdpc3RlcklEKiBlbWl0TmV3QXJyb3dGdW5jdGlvbkV4cHJlc3Npb24oUmVnaXN0ZXJJRCosIEFy
cm93RnVuY0V4cHJOb2RlKik7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdNZXRob2REZWZp
bml0aW9uKFJlZ2lzdGVySUQqIGRzdCwgTWV0aG9kRGVmaW5pdGlvbk5vZGUqKTsKICAgICAgICAg
UmVnaXN0ZXJJRCogZW1pdE5ld1JlZ0V4cChSZWdpc3RlcklEKiBkc3QsIFJlZ0V4cCopOworICAg
ICAgICBSZWdpc3RlcklEKiBlbWl0TmV3R2VuZXJhdG9yRnJhbWUoUmVnaXN0ZXJJRCogZHN0KTsK
IAogICAgICAgICB2b2lkIGVtaXRTZXRGdW5jdGlvbk5hbWVJZk5lZWRlZChFeHByZXNzaW9uTm9k
ZSogdmFsdWVOb2RlLCBSZWdpc3RlcklEKiB2YWx1ZSwgUmVnaXN0ZXJJRCogbmFtZSk7CiAKQEAg
LTY5Niw2ICs2OTcsNyBAQAogICAgICAgICBSZWdpc3RlcklEKiBnZW5lcmF0b3JTdGF0ZVJlZ2lz
dGVyKCkgeyByZXR1cm4gJm1fcGFyYW1ldGVyc1syXTsgfQogICAgICAgICBSZWdpc3RlcklEKiBn
ZW5lcmF0b3JWYWx1ZVJlZ2lzdGVyKCkgeyByZXR1cm4gJm1fcGFyYW1ldGVyc1szXTsgfQogICAg
ICAgICBSZWdpc3RlcklEKiBnZW5lcmF0b3JSZXN1bWVNb2RlUmVnaXN0ZXIoKSB7IHJldHVybiAm
bV9wYXJhbWV0ZXJzWzRdOyB9CisgICAgICAgIFJlZ2lzdGVySUQqIGdlbmVyYXRvckZyYW1lUmVn
aXN0ZXIoKSB7IHJldHVybiAmbV9wYXJhbWV0ZXJzWzVdOyB9CiAKICAgICAgICAgQ29kZVR5cGUg
Y29kZVR5cGUoKSBjb25zdCB7IHJldHVybiBtX2NvZGVUeXBlOyB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RIZWFwLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SGVhcC5oCmluZGV4IGFmZTEwYzQ5NjQzMTI5YzdiMTFl
ODIwYmU0OWU2MDZlZjczODkxNjUuLjRkZWJmOTMyZTlhNGJhMmY3ZTVhNjg3MzRlYTJmOWU4MTAw
MjA3ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RI
ZWFwLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEhlYXAuaApA
QCAtNjksNiArNjksOCBAQAogICAgIG1hY3JvKFNjb3BlUHJvcGVydGllcykgXAogICAgIG1hY3Jv
KFR5cGVkQXJyYXlQcm9wZXJ0aWVzKSBcCiAgICAgbWFjcm8oSGVhcE9iamVjdENvdW50KSAvKiBV
c2VkIHRvIHJlZmxlY3QgdGhlIGZhY3QgdGhhdCBzb21lIGFsbG9jYXRpb25zIHJldmVhbCBvYmpl
Y3QgaWRlbnRpdHkgKi9cCisgICAgbWFjcm8oR2VuZXJhdG9yTG9jYWxzKSBcCisgICAgbWFjcm8o
R2VuZXJhdG9yTG9jYWxDb3VudCkgXAogICAgIG1hY3JvKFJlZ0V4cFN0YXRlKSBcCiAgICAgbWFj
cm8oTWF0aERvdFJhbmRvbVN0YXRlKSBcCiAgICAgbWFjcm8oSW50ZXJuYWxTdGF0ZSkgXApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVy
SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJl
dGVySW5saW5lcy5oCmluZGV4IGQ3OWNkYWJjNzQ1MjYyMmI5M2MzODkzZDViNmIwNmU5NjE5YzE2
M2UuLjJkMjQyMTlhNTkxNDk0NDIxYTNkNWZiMDEzZWZhZDQ2ODdkNTY1NDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJ
bmxpbmVzLmgKQEAgLTE5MTUsNiArMTkxNSwxMCBAQCBpbmxpbmUgYm9vbCBpc1RvVGhpc0FuSWRl
bnRpdHkoYm9vbCBpc1N0cmljdE1vZGUsIEFic3RyYWN0VmFsdWUmIHZhbHVlRm9yTm9kZSkKICAg
ICBjYXNlIE5ld1JlZ2V4cDoKICAgICAgICAgZm9yTm9kZShub2RlKS5zZXQobV9ncmFwaCwgbV9n
cmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+cmVnRXhwU3RydWN0
dXJlKCkpOwogICAgICAgICBicmVhazsKKworICAgIGNhc2UgTmV3R2VuZXJhdG9yRnJhbWU6Cisg
ICAgICAgIGZvck5vZGUobm9kZSkuc2V0KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYyktPmdlbmVyYXRvckZyYW1lU3RydWN0dXJlKCkpOworICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIAogICAgIGNhc2UgVG9UaGlzOiB7CiAgICAgICAgIEFi
c3RyYWN0VmFsdWUmIHNvdXJjZSA9IGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpOwpAQCAtMjgxNyw2
ICsyODIxLDE3IEBAIGlubGluZSBib29sIGlzVG9UaGlzQW5JZGVudGl0eShib29sIGlzU3RyaWN0
TW9kZSwgQWJzdHJhY3RWYWx1ZSYgdmFsdWVGb3JOb2RlKQogICAgICAgICBmb3JOb2RlKG5vZGUp
Lm1ha2VIZWFwVG9wKCk7CiAgICAgICAgIGJyZWFrOwogCisgICAgY2FzZSBTZXRHZW5lcmF0b3JM
b2NhbDoKKyAgICBjYXNlIFJlc2l6ZUdlbmVyYXRvckxvY2FsczoKKyAgICAgICAgYnJlYWs7CisK
KyAgICBjYXNlIEdldEdlbmVyYXRvckxvY2FsOiB7CisgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91
bGQgYXR0ZW1wdCB0byBjb252ZXJ0IGl0IHRvIGNvbnN0YW50LgorICAgICAgICAvLyBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUzMTgzCisgICAgICAgIGZvck5vZGUo
bm9kZSkubWFrZUJ5dGVjb2RlVG9wKCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIGNh
c2UgRm9yY2VPU1JFeGl0OgogICAgIGNhc2UgQ2hlY2tCYWRDZWxsOgogICAgICAgICBtX3N0YXRl
LnNldElzVmFsaWQoZmFsc2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5
dGVDb2RlUGFyc2VyLmNwcAppbmRleCAwY2IyNTBhMjdiMWRjM2EyOTNiYzMxNjQyMWNiZDk2N2Jm
MWY3YmZjLi5lODc4ZmVjN2M5MjAyZGM0NzcyZmY2N2M0ZDA1NDg2NTc1M2YxNTY2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtMzgs
NiArMzgsNyBAQAogI2luY2x1ZGUgIkRGR0NhcGFiaWxpdGllcy5oIgogI2luY2x1ZGUgIkRGR0Ns
b2JiZXJpemUuaCIKICNpbmNsdWRlICJERkdDbG9iYmVyc0V4aXRTdGF0ZS5oIgorI2luY2x1ZGUg
IkRGR0dlbmVyYXRvckxvY2FsRGF0YS5oIgogI2luY2x1ZGUgIkRGR0dyYXBoLmgiCiAjaW5jbHVk
ZSAiREZHSklUQ29kZS5oIgogI2luY2x1ZGUgIkdldEJ5SWRTdGF0dXMuaCIKQEAgLTk4Miw2ICs5
ODMsMTEgQEAgY2xhc3MgQnl0ZUNvZGVQYXJzZXIgewogICAgIH0KIAogICAgIGJvb2wgbmVlZHNE
eW5hbWljTG9va3VwKFJlc29sdmVUeXBlLCBPcGNvZGVJRCk7CisKKyAgICBHZW5lcmF0b3JMb2Nh
bERhdGEqIG5ld0dlbmVyYXRvckxvY2FsRGF0YSgpCisgICAgeworICAgICAgICByZXR1cm4gbV9n
cmFwaC5tX2dlbmVyYXRvckxvY2FsRGF0YS5hZGQoKTsKKyAgICB9CiAgICAgCiAgICAgVk0qIG1f
dm07CiAgICAgQ29kZUJsb2NrKiBtX2NvZGVCbG9jazsKQEAgLTEwNzAsNiArMTA3NiwxMSBAQCBj
bGFzcyBCeXRlQ29kZVBhcnNlciB7CiAgICAgICAgIENhbGxMaW5rSW5mb01hcCBtX2NhbGxMaW5r
SW5mb3M7CiAgICAgICAgIFN0dWJJbmZvTWFwIG1fc3R1YkluZm9zOwogICAgICAgICBCeVZhbElu
Zm9NYXAgbV9ieVZhbEluZm9zOworCisgICAgICAgIC8vIFNpbmNlIHRoZSBvcF9yZXN1bWUgaXMg
ZW1pdHRlZCBhZnRlciB0aGUgY29ycmVzcG9uZGluZyBvcF9zYXZlCisgICAgICAgIC8vIGFuZCB0
aGVyZSBpcyBubyBvdGhlciBvcF9yZXN1bWUgYW5kIG9wX3NhdmUgYmV0d2VlbiB0aGVtLAorICAg
ICAgICAvLyB3ZSBjYW4gdHJhY2sgdGhlc2UgY29ycmVzcG9uZGVuY2UgYnkganVzdCB0cmFja2lu
ZyBjdXJyZW50bHkgZm9jdXNpbmcgb3Bfc2F2ZS4KKyAgICAgICAgT3BlcmFuZHM8R2VuZXJhdG9y
TG9jYWxEYXRhKj4gbV9nZW5lcmF0b3JMb2NhbHM7CiAgICAgICAgIAogICAgICAgICAvLyBEaWQg
d2Ugc2VlIGFueSByZXR1cm5zPyBXZSBuZWVkIHRvIGhhbmRsZSB0aGUgKHVuY29tbW9uIGJ1dCBu
ZWNlc3NhcnkpCiAgICAgICAgIC8vIGNhc2Ugd2hlcmUgYSBwcm9jZWR1cmUgdGhhdCBkb2VzIG5v
dCByZXR1cm4gd2FzIGlubGluZWQuCkBAIC0zNjI4LDYgKzM2MzksMTEgQEAgYm9vbCBCeXRlQ29k
ZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgIE5FWFRfT1BD
T0RFKG9wX25ld19yZWdleHApOwogICAgICAgICB9CiAKKyAgICAgICAgY2FzZSBvcF9uZXdfZ2Vu
ZXJhdG9yX2ZyYW1lOiB7CisgICAgICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJ
bnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpLCBhZGRUb0dyYXBoKE5ld0dlbmVyYXRvckZyYW1lLCBP
cEluZm8oY3VycmVudEluc3RydWN0aW9uWzJdLnUudW5zaWduZWRWYWx1ZSkpKTsKKyAgICAgICAg
ICAgIE5FWFRfT1BDT0RFKG9wX25ld19nZW5lcmF0b3JfZnJhbWUpOworICAgICAgICB9CisKICAg
ICAgICAgY2FzZSBvcF9nZXRfcmVzdF9sZW5ndGg6IHsKICAgICAgICAgICAgIElubGluZUNhbGxG
cmFtZSogaW5saW5lQ2FsbEZyYW1lID0gdGhpcy0+aW5saW5lQ2FsbEZyYW1lKCk7CiAgICAgICAg
ICAgICBOb2RlKiBsZW5ndGg7CkBAIC0zNjU1LDYgKzM2NzEsNDEgQEAgYm9vbCBCeXRlQ29kZVBh
cnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgICAgICBhcnJheSwg
YXJyYXlMZW5ndGgpOwogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfY29weV9yZXN0KTsKICAg
ICAgICAgfQorCisgICAgICAgIGNhc2Ugb3Bfc2F2ZTogeworICAgICAgICAgICAgTm9kZSogZnJh
bWUgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQp
KTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9IGN1cnJlbnRJ
bnN0cnVjdGlvblsyXS51LnVuc2lnbmVkVmFsdWU7CisgICAgICAgICAgICBjb25zdCBGYXN0Qml0
VmVjdG9yJiBsaXZlbmVzcyA9IG1faW5saW5lU3RhY2tUb3AtPm1fY29kZUJsb2NrLT5saXZlQ2Fs
bGVlTG9jYWxzQXRZaWVsZChsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpOworCisgICAgICAgICAgICBt
X2lubGluZVN0YWNrVG9wLT5tX2dlbmVyYXRvckxvY2FscyA9IE9wZXJhbmRzPEdlbmVyYXRvckxv
Y2FsRGF0YSo+KG1fbnVtQXJndW1lbnRzLCBtX251bUxvY2Fscyk7CisKKyAgICAgICAgICAgIGFk
ZFRvR3JhcGgoUmVzaXplR2VuZXJhdG9yTG9jYWxzLCBPcEluZm8obGl2ZW5lc3MuYml0Q291bnQo
KSksIGZyYW1lKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGdlbmVyYXRvckxvY2FsSW5kZXggPSAw
OworICAgICAgICAgICAgbGl2ZW5lc3MuZm9yRWFjaFNldEJpdChbJl0oc2l6ZV90IGluZGV4KSB7
CisgICAgICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQgPSB2aXJ0dWFsUmVnaXN0
ZXJGb3JMb2NhbChpbmRleCk7CisgICAgICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHJlbWFw
cGVkT3BlcmFuZCA9IG1faW5saW5lU3RhY2tUb3AtPnJlbWFwT3BlcmFuZChvcGVyYW5kKTsKKyAg
ICAgICAgICAgICAgICBOb2RlKiBsb2NhbCA9IGdldChvcGVyYW5kKTsKKyAgICAgICAgICAgICAg
ICBHZW5lcmF0b3JMb2NhbERhdGEqIGdlbmVyYXRvckxvY2FsRGF0YSA9IG5ld0dlbmVyYXRvckxv
Y2FsRGF0YSgpOworICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fZ2VuZXJhdG9y
TG9jYWxzLmxvY2FsKHJlbWFwcGVkT3BlcmFuZC50b0xvY2FsKCkpID0gZ2VuZXJhdG9yTG9jYWxE
YXRhOworICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoU2V0R2VuZXJhdG9yTG9jYWwsIE9wSW5m
byhnZW5lcmF0b3JMb2NhbEluZGV4KyspLCBPcEluZm8oZ2VuZXJhdG9yTG9jYWxEYXRhKSwgZnJh
bWUsIGxvY2FsKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgTkVYVF9PUENPREUob3Bf
c2F2ZSk7CisgICAgICAgIH0KKworICAgICAgICBjYXNlIG9wX3Jlc3VtZTogeworICAgICAgICAg
ICAgTm9kZSogZnJhbWUgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsx
XS51Lm9wZXJhbmQpKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRl
eCA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51LnVuc2lnbmVkVmFsdWU7CisgICAgICAgICAgICBj
b25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlbmVzcyA9IG1faW5saW5lU3RhY2tUb3AtPm1fY29kZUJs
b2NrLT5saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZChsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpOworICAg
ICAgICAgICAgdW5zaWduZWQgZ2VuZXJhdG9yTG9jYWxJbmRleCA9IDA7CisgICAgICAgICAgICBs
aXZlbmVzcy5mb3JFYWNoU2V0Qml0KFsmXShzaXplX3QgaW5kZXgpIHsKKyAgICAgICAgICAgICAg
ICBWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCA9IHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGluZGV4
KTsKKyAgICAgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgcmVtYXBwZWRPcGVyYW5kID0gbV9p
bmxpbmVTdGFja1RvcC0+cmVtYXBPcGVyYW5kKG9wZXJhbmQpOworICAgICAgICAgICAgICAgIEdl
bmVyYXRvckxvY2FsRGF0YSogZ2VuZXJhdG9yTG9jYWxEYXRhID0gbV9pbmxpbmVTdGFja1RvcC0+
bV9nZW5lcmF0b3JMb2NhbHMubG9jYWwocmVtYXBwZWRPcGVyYW5kLnRvTG9jYWwoKSk7CisgICAg
ICAgICAgICAgICAgc2V0KG9wZXJhbmQsIGFkZFRvR3JhcGgoR2V0R2VuZXJhdG9yTG9jYWwsIE9w
SW5mbyhnZW5lcmF0b3JMb2NhbEluZGV4KyspLCBPcEluZm8oZ2VuZXJhdG9yTG9jYWxEYXRhKSwg
ZnJhbWUpKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgYWRkVG9HcmFwaChSZXNpemVH
ZW5lcmF0b3JMb2NhbHMsIE9wSW5mbygwKSwgZnJhbWUpOworICAgICAgICAgICAgTkVYVF9PUENP
REUob3BfcmVzdW1lKTsKKyAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgIC8vID09PSBC
aXR3aXNlIG9wZXJhdGlvbnMgPT09CiAKQEAgLTUyNjEsNyArNTMxMiw3IEBAIHZvaWQgQnl0ZUNv
ZGVQYXJzZXI6OnBhcnNlQ29kZUJsb2NrKCkKICAgICB9CiAgICAgCiAgICAgVmVjdG9yPHVuc2ln
bmVkLCAzMj4ganVtcFRhcmdldHM7Ci0gICAgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhjb2Rl
QmxvY2ssIGp1bXBUYXJnZXRzKTsKKyAgICBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKGNvZGVC
bG9jaywgQnl0ZWNvZGVBbmFseXNpc01vZGU6OlN0YW5kYXJkLCBqdW1wVGFyZ2V0cyk7CiAgICAg
aWYgKE9wdGlvbnM6OmR1bXBCeXRlY29kZUF0REZHVGltZSgpKSB7CiAgICAgICAgIGRhdGFMb2co
Ikp1bXAgdGFyZ2V0czogIik7CiAgICAgICAgIENvbW1hUHJpbnRlciBjb21tYTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAppbmRleCAxZTkyNTM4NjBm
ZWNhYjg0YjExZjRlZmUyOTllNDczOGViMGQzYTE4Li41NWRkNzRhZTc4YmNlOTMxYmI1MjE3YTM2
MjQyMzNjNjE3YTJmZmUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NhcGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBh
YmlsaXRpZXMuY3BwCkBAIC0xODUsNiArMTg1LDcgQEAgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxp
dHlMZXZlbChPcGNvZGVJRCBvcGNvZGVJRCwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEluc3RydWMK
ICAgICBjYXNlIG9wX25ld19hcnJheToKICAgICBjYXNlIG9wX25ld19hcnJheV93aXRoX3NpemU6
CiAgICAgY2FzZSBvcF9uZXdfYXJyYXlfYnVmZmVyOgorICAgIGNhc2Ugb3BfbmV3X2dlbmVyYXRv
cl9mcmFtZToKICAgICBjYXNlIG9wX3N0cmNhdDoKICAgICBjYXNlIG9wX3RvX3ByaW1pdGl2ZToK
ICAgICBjYXNlIG9wX3Rocm93OgpAQCAtMjMzLDYgKzIzNCw4IEBAIENhcGFiaWxpdHlMZXZlbCBj
YXBhYmlsaXR5TGV2ZWwoT3Bjb2RlSUQgb3Bjb2RlSUQsIENvZGVCbG9jayogY29kZUJsb2NrLCBJ
bnN0cnVjCiAgICAgY2FzZSBvcF9sb2dfc2hhZG93X2NoaWNrZW5fdGFpbDoKICAgICBjYXNlIG9w
X3B1dF90b19zY29wZToKICAgICBjYXNlIG9wX3Jlc29sdmVfc2NvcGU6CisgICAgY2FzZSBvcF9z
YXZlOgorICAgIGNhc2Ugb3BfcmVzdW1lOgogICAgICAgICByZXR1cm4gQ2FuQ29tcGlsZUFuZElu
bGluZTsKIAogICAgIGNhc2Ugb3BfbmV3X3JlZ2V4cDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDbG9iYmVyaXplLmgKaW5kZXggY2M2ZTU4MjMzZTljYWFiODdhZDNlZGQwYzIxZjY3NzRk
NTMxNjhiYy4uNDhkMzVmY2IyOTFjMjgyYzQxMTc4YTA5ODQwNTQ4NzA0YjBkNTY2MSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKQEAgLTEwODYsNiArMTA4Niw3
IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRG
dW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAKICAgICBjYXNlIE5ld09iamVjdDoKICAgICBj
YXNlIE5ld1JlZ2V4cDoKKyAgICBjYXNlIE5ld0dlbmVyYXRvckZyYW1lOgogICAgIGNhc2UgTmV3
U3RyaW5nT2JqZWN0OgogICAgIGNhc2UgUGhhbnRvbU5ld09iamVjdDoKICAgICBjYXNlIE1hdGVy
aWFsaXplTmV3T2JqZWN0OgpAQCAtMTE4MCw2ICsxMTgxLDIzIEBAIHZvaWQgY2xvYmJlcml6ZShH
cmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBX
cml0ZUZ1CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CisKKyAgICBjYXNlIFNldEdlbmVyYXRvckxvY2FsOiB7
CisgICAgICAgIHJlYWQoR2VuZXJhdG9yTG9jYWxDb3VudCk7CisgICAgICAgIHdyaXRlKEdlbmVy
YXRvckxvY2Fscyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBjYXNlIEdldEdlbmVy
YXRvckxvY2FsOiB7CisgICAgICAgIHJlYWQoR2VuZXJhdG9yTG9jYWxDb3VudCk7CisgICAgICAg
IHJlYWQoR2VuZXJhdG9yTG9jYWxzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGNh
c2UgUmVzaXplR2VuZXJhdG9yTG9jYWxzOiB7CisgICAgICAgIHdyaXRlKEdlbmVyYXRvckxvY2Fs
Q291bnQpOworICAgICAgICByZXR1cm47CisgICAgfQogICAgICAgICAKICAgICBjYXNlIFRocm93
UmVmZXJlbmNlRXJyb3I6CiAgICAgICAgIHdyaXRlKFNpZGVTdGF0ZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcnNFeGl0U3RhdGUuY3BwCmluZGV4IDgwOWE0
NWQ2ZjFhNjQwMTU4MTlkNzJlM2ZhNDgxZTRlYWIzMzQ3ODIuLjZhYWZjYmZkYTM2ZTE2NDQ2ZmY3
OTRlZTg0YzMwOTdlMjI1YTBhMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ2xvYmJlcnNFeGl0U3RhdGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ2xvYmJlcnNFeGl0U3RhdGUuY3BwCkBAIC01MywxMCArNTMsMTYgQEAgYm9vbCBjbG9i
YmVyc0V4aXRTdGF0ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgICAgIC8vIGV4aXQg
c3RhdGUuCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAorICAgIGNhc2UgUmVzaXplR2VuZXJhdG9y
TG9jYWxzOgorICAgIGNhc2UgU2V0R2VuZXJhdG9yTG9jYWw6CisgICAgY2FzZSBHZXRHZW5lcmF0
b3JMb2NhbDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgY2FzZSBBcnJheWlmeVRvU3Ry
dWN0dXJlOgogICAgIGNhc2UgQXJyYXlpZnk6CiAgICAgY2FzZSBOZXdPYmplY3Q6CiAgICAgY2Fz
ZSBOZXdSZWdleHA6CisgICAgY2FzZSBOZXdHZW5lcmF0b3JGcmFtZToKICAgICBjYXNlIE5ld1N0
cmluZ09iamVjdDoKICAgICBjYXNlIFBoYW50b21OZXdPYmplY3Q6CiAgICAgY2FzZSBNYXRlcmlh
bGl6ZU5ld09iamVjdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
RG9lc0dDLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAppbmRl
eCBhZDdmZGRiYzQ3NTQxNWE4MjRiODIzZDg3MzI2YzQ5YzNmYjI4Yzg5Li4yYmE3ZjRkZWE3MjI5
NjZlZjY5OTQ5MGU4NWE5YTljODRkMjUyMjgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdEb2VzR0MuY3BwCkBAIC0yNDcsNiArMjQ3LDkgQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBo
LCBOb2RlKiBub2RlKQogICAgIGNhc2UgR2V0RHluYW1pY1ZhcjoKICAgICBjYXNlIFB1dER5bmFt
aWNWYXI6CiAgICAgY2FzZSBSZXNvbHZlU2NvcGU6CisgICAgY2FzZSBTZXRHZW5lcmF0b3JMb2Nh
bDoKKyAgICBjYXNlIEdldEdlbmVyYXRvckxvY2FsOgorICAgIGNhc2UgUmVzaXplR2VuZXJhdG9y
TG9jYWxzOgogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBjYXNlIENyZWF0ZUFjdGl2YXRp
b246CkBAIC0yNjUsNiArMjY4LDcgQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBu
b2RlKQogICAgIGNhc2UgTmV3QXJyYXlXaXRoU2l6ZToKICAgICBjYXNlIE5ld0FycmF5QnVmZmVy
OgogICAgIGNhc2UgTmV3UmVnZXhwOgorICAgIGNhc2UgTmV3R2VuZXJhdG9yRnJhbWU6CiAgICAg
Y2FzZSBOZXdTdHJpbmdPYmplY3Q6CiAgICAgY2FzZSBNYWtlUm9wZToKICAgICBjYXNlIE5ld0Z1
bmN0aW9uOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBo
YXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKaW5k
ZXggNDE2YjEzMjVhNDFjMzY0OWYwMDA5YjVjMWZlMDgzZTU2ZmUwMTk5Ny4uY2IyYzBjYmM2OTc5
OTRkZWY0MzY5ZjgxMjk1NWMwOWZmZDEyNDg4MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCkBAIC0xNTA1LDYgKzE1MDUsMjQgQEAgY2xhc3MgRml4dXBQ
aGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCisg
ICAgICAgIGNhc2UgU2V0R2VuZXJhdG9yTG9jYWw6IHsKKyAgICAgICAgICAgIGZpeEVkZ2U8Q2Vs
bFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgc3BlY3VsYXRlRm9yQmFycmllcihu
b2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAg
IGNhc2UgR2V0R2VuZXJhdG9yTG9jYWw6IHsKKyAgICAgICAgICAgIGZpeEVkZ2U8Q2VsbFVzZT4o
bm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgLy8gQ3VycmVudGx5LCB3ZSBhbHdheXMgc3Rv
cmUgdGhlIHZhbHVlIGFzIEpTVmFsdWUgaW4gdGhlIEdlbmVyYXRvckZyYW1lLgorICAgICAgICAg
ICAgbm9kZS0+c2V0UmVzdWx0KE5vZGVSZXN1bHRKUyk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQorCisgICAgICAgIGNhc2UgUmVzaXplR2VuZXJhdG9yTG9jYWxzOiB7CisgICAgICAg
ICAgICBmaXhFZGdlPENlbGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisKICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgICAgIC8vIEhhdmUgdGhl
c2Ugbm8tb3AgY2FzZXMgaGVyZSB0byBlbnN1cmUgdGhhdCBub2JvZHkgZm9yZ2V0cyB0byBhZGQg
aGFuZGxlcnMgZm9yIG5ldyBvcGNvZGVzLgogICAgICAgICBjYXNlIFNldEFyZ3VtZW50OgpAQCAt
MTUzOCw2ICsxNTU2LDcgQEAgY2xhc3MgRml4dXBQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAg
ICAgIGNhc2UgTmV3T2JqZWN0OgogICAgICAgICBjYXNlIE5ld0FycmF5QnVmZmVyOgogICAgICAg
ICBjYXNlIE5ld1JlZ2V4cDoKKyAgICAgICAgY2FzZSBOZXdHZW5lcmF0b3JGcmFtZToKICAgICAg
ICAgY2FzZSBQcm9maWxlV2lsbENhbGw6CiAgICAgICAgIGNhc2UgUHJvZmlsZURpZENhbGw6CiAg
ICAgICAgIGNhc2UgRGVsZXRlQnlJZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHR2VuZXJhdG9yTG9jYWxEYXRhLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0dlbmVyYXRvckxvY2FsRGF0YS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNlYWYxYWJjMDViNzgzODU0N2Mw
YjdhZWJlZGZmNjA0Y2NiNWZkMTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0dlbmVyYXRvckxvY2FsRGF0YS5oCkBAIC0wLDAgKzEsNTggQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTYgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29t
Pi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBE
RkdHZW5lcmF0b3JMb2NhbERhdGFfaAorI2RlZmluZSBERkdHZW5lcmF0b3JMb2NhbERhdGFfaAor
CisjaWYgRU5BQkxFKERGR19KSVQpCisKKyNpbmNsdWRlICJERkdDb21tb24uaCIKKyNpbmNsdWRl
ICJTcGVjdWxhdGVkVHlwZS5oIgorI2luY2x1ZGUgIlZpcnR1YWxSZWdpc3Rlci5oIgorCituYW1l
c3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CisKKworY2xhc3MgR2VuZXJhdG9yTG9jYWxEYXRh
IHsKK3B1YmxpYzoKKyAgICBib29sIHByZWRpY3QoU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbikK
KyAgICB7CisgICAgICAgIHJldHVybiBtZXJnZVNwZWN1bGF0aW9uKG1fcHJlZGljdGlvbiwgcHJl
ZGljdGlvbik7CisgICAgfQorCisgICAgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbigpCisgICAg
eworICAgICAgICByZXR1cm4gbV9wcmVkaWN0aW9uOworICAgIH0KKworcHJpdmF0ZToKKyAgICBT
cGVjdWxhdGVkVHlwZSBtX3ByZWRpY3Rpb24geyBTcGVjTm9uZSB9OworfTsKKworfSB9IC8vIG5h
bWVzcGFjZSBKU0M6OkRGRworCisjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCisKKyNlbmRpZiAv
LyBERkdWYXJpYWJsZUFjY2Vzc0RhdGFfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdHcmFwaC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5o
CmluZGV4IGFkN2U1ODBjMDdhYWU5NmNjNDM2MzYxMmIzYmE5NDFiOWY0MmFjNTMuLmZjY2M3NGU2
YmYxOWU4NzAwYWJkMjA5ZmFjMWNjNTQyMWFhZTMyMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0dyYXBoLmgKQEAgLTYwLDYgKzYwLDcgQEAKIGNsYXNzIERvbWluYXRvcnM7CiBjbGFzcyBO
YXR1cmFsTG9vcHM7CiBjbGFzcyBQcmVQb3N0TnVtYmVyaW5nOworY2xhc3MgR2VuZXJhdG9yTG9j
YWxEYXRhOwogCiAjZGVmaW5lIERGR19OT0RFX0RPX1RPX0NISUxEUkVOKGdyYXBoLCBub2RlLCB0
aGluZ1RvRG8pIGRvIHsgICAgICAgICAgICBcCiAgICAgICAgIE5vZGUqIF9ub2RlID0gKG5vZGUp
OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCkBAIC04NzAsNiAr
ODcxLDcgQEAgY2xhc3MgR3JhcGggOiBwdWJsaWMgdmlydHVhbCBTY2FubmFibGUgewogICAgIEJh
ZzxDYWxsVmFyYXJnc0RhdGE+IG1fY2FsbFZhcmFyZ3NEYXRhOwogICAgIEJhZzxMb2FkVmFyYXJn
c0RhdGE+IG1fbG9hZFZhcmFyZ3NEYXRhOwogICAgIEJhZzxTdGFja0FjY2Vzc0RhdGE+IG1fc3Rh
Y2tBY2Nlc3NEYXRhOworICAgIEJhZzxHZW5lcmF0b3JMb2NhbERhdGE+IG1fZ2VuZXJhdG9yTG9j
YWxEYXRhOwogICAgIEJhZzxMYXp5SlNWYWx1ZT4gbV9sYXp5SlNWYWx1ZXM7CiAgICAgVmVjdG9y
PElubGluZVZhcmlhYmxlRGF0YSwgND4gbV9pbmxpbmVWYXJpYWJsZURhdGE7CiAgICAgSGFzaE1h
cDxDb2RlQmxvY2sqLCBzdGQ6OnVuaXF1ZV9wdHI8RnVsbEJ5dGVjb2RlTGl2ZW5lc3M+PiBtX2J5
dGVjb2RlTGl2ZW5lc3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R01heUV4aXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNwcApp
bmRleCA1YzVjNjBlYmM4YmNiNGIyMDBlMzVkZmRmNGRjNDIwNmMxNTBmOWU4Li40MmQwZmE0MmMx
NmY1M2VjZDNjODkyY2ZhMTA1MjZkNzBkNTg5YzUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTWF5RXhpdC5jcHAKQEAgLTEzMiw2ICsxMzIsOSBAQCBFeGl0TW9kZSBtYXlFeGl0KEdy
YXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIFB1dEJ5T2Zmc2V0OgogICAgIGNhc2Ug
UHV0Q2xvc3VyZVZhcjoKICAgICBjYXNlIFJlY29yZFJlZ0V4cENhY2hlZFJlc3VsdDoKKyAgICBj
YXNlIFJlc2l6ZUdlbmVyYXRvckxvY2FsczoKKyAgICBjYXNlIFNldEdlbmVyYXRvckxvY2FsOgor
ICAgIGNhc2UgR2V0R2VuZXJhdG9yTG9jYWw6CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBT
dHJDYXQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCmluZGV4IDRiN2ZhOWIxYzg0ZTU2
ZGI5ZmIyMzlkY2IzYzQ1Y2I5MjQ3OGM3MDEuLmFiZGFmNmVmYjI1Zjc1MzlkYWU5YmJkMDBjNzI4
YmFmODBmZGYzNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCkBAIC0zNiw2ICsz
Niw3IEBACiAjaW5jbHVkZSAiREZHQXJyYXlNb2RlLmgiCiAjaW5jbHVkZSAiREZHQ29tbW9uLmgi
CiAjaW5jbHVkZSAiREZHRXBvY2guaCIKKyNpbmNsdWRlICJERkdHZW5lcmF0b3JMb2NhbERhdGEu
aCIKICNpbmNsdWRlICJERkdMYXp5SlNWYWx1ZS5oIgogI2luY2x1ZGUgIkRGR011bHRpR2V0QnlP
ZmZzZXREYXRhLmgiCiAjaW5jbHVkZSAiREZHTm9kZUZsYWdzLmgiCkBAIC04OTUsMTIgKzg5Niw3
OCBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgICAgIH0KICAgICB9CiAKKyAgICBib29sIGhhc0dlbmVy
YXRvckxvY2Fsc1NpemUoKQorICAgIHsKKyAgICAgICAgc3dpdGNoIChvcCgpKSB7CisgICAgICAg
IGNhc2UgTmV3R2VuZXJhdG9yRnJhbWU6CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0K
KwogICAgIHVuc2lnbmVkIGdldFB1dEluZm8oKQogICAgIHsKICAgICAgICAgQVNTRVJUKGhhc0dl
dFB1dEluZm8oKSk7CiAgICAgICAgIHJldHVybiBtX29wSW5mbzI7CiAgICAgfQogCisgICAgdW5z
aWduZWQgZ2VuZXJhdG9yTG9jYWxzU2l6ZSgpCisgICAgeworICAgICAgICBBU1NFUlQoaGFzR2Vu
ZXJhdG9yTG9jYWxzU2l6ZSgpKTsKKyAgICAgICAgcmV0dXJuIG1fb3BJbmZvOworICAgIH0KKwor
ICAgIGJvb2wgaGFzR2VuZXJhdG9yTG9jYWxJbmRleCgpCisgICAgeworICAgICAgICBzd2l0Y2gg
KG9wKCkpIHsKKyAgICAgICAgY2FzZSBTZXRHZW5lcmF0b3JMb2NhbDoKKyAgICAgICAgY2FzZSBH
ZXRHZW5lcmF0b3JMb2NhbDoKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorCisgICAg
dW5zaWduZWQgZ2VuZXJhdG9yTG9jYWxJbmRleCgpCisgICAgeworICAgICAgICBBU1NFUlQoaGFz
R2VuZXJhdG9yTG9jYWxJbmRleCgpKTsKKyAgICAgICAgcmV0dXJuIG1fb3BJbmZvOworICAgIH0K
KworICAgIGJvb2wgaGFzR2VuZXJhdG9yTG9jYWxEYXRhKCkKKyAgICB7CisgICAgICAgIHN3aXRj
aCAob3AoKSkgeworICAgICAgICBjYXNlIFNldEdlbmVyYXRvckxvY2FsOgorICAgICAgICBjYXNl
IEdldEdlbmVyYXRvckxvY2FsOgorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICBHZW5lcmF0b3JMb2NhbERhdGEqIGdlbmVyYXRvckxvY2FsRGF0YSgpCisgICAgeworICAgICAg
ICBBU1NFUlQoaGFzR2VuZXJhdG9yTG9jYWxEYXRhKCkpOworICAgICAgICByZXR1cm4gcmVpbnRl
cnByZXRfY2FzdDxHZW5lcmF0b3JMb2NhbERhdGEqPihtX29wSW5mbzIpOworICAgIH0KKworICAg
IGJvb2wgaGFzR2VuZXJhdG9yRnJhbWVMb2NhbHMoKQorICAgIHsKKyAgICAgICAgc3dpdGNoIChv
cCgpKSB7CisgICAgICAgIGNhc2UgUmVzaXplR2VuZXJhdG9yTG9jYWxzOgorICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICB1bnNpZ25lZCBnZW5lcmF0b3JGcmFtZUxvY2Fscygp
CisgICAgeworICAgICAgICBBU1NFUlQoaGFzR2VuZXJhdG9yRnJhbWVMb2NhbHMoKSk7CisgICAg
ICAgIHJldHVybiBtX29wSW5mbzsKKyAgICB9CisKICAgICBib29sIGhhc0FjY2Vzc29yQXR0cmli
dXRlcygpCiAgICAgewogICAgICAgICBzd2l0Y2ggKG9wKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTm9kZVR5cGUuaAppbmRleCAyNTU0YjJhY2ZlODVmYzNlNWM4NGI3ZjQ5ODQ0NGJj
OTBhZTFiNzJjLi4zMDBjODM2NGY4YTdkYjUyMzQ0MDQzMzBkMzQ3ZmJiOWE2NGNiYWRkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCkBAIC04Miw2ICs4MiwxMCBAQAog
ICAgIG1hY3JvKEZsdXNoLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oUGhhbnRvbUxv
Y2FsLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgXAorICAgIG1hY3JvKFNldEdlbmVyYXRvckxv
Y2FsLCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgbWFjcm8oR2V0R2VuZXJhdG9yTG9jYWwsIE5v
ZGVSZXN1bHRKUykgXAorICAgIG1hY3JvKFJlc2l6ZUdlbmVyYXRvckxvY2FscywgTm9kZU11c3RH
ZW5lcmF0ZSkgXAorICAgIFwKICAgICAvKiBIaW50IHRoYXQgdGhpcyBpcyB3aGVyZSBieXRlY29k
ZSB0aGlua3MgaXMgYSBnb29kIHBsYWNlIHRvIE9TUi4gTm90ZSB0aGF0IHRoaXMgKi9cCiAgICAg
Lyogd2lsbCBleGlzdCBldmVuIGluIGlubGluZWQgbG9vcHMuIFRoaXMgaGFzIG5vIGV4ZWN1dGlv
biBzZW1hbnRpY3MgYnV0IGl0IG11c3QgKi9cCiAgICAgLyogc3Vydml2ZSBhbGwgRENFLiBXZSB0
cmVhdCB0aGlzIGFzIGJlaW5nIGEgY2FuLWV4aXQgYmVjYXVzZSB0aWVyLXVwIHRvIEZUTCBtYXkg
Ki9cCkBAIC0yODMsNiArMjg3LDcgQEAKICAgICBtYWNybyhOZXdBcnJheUJ1ZmZlciwgTm9kZVJl
c3VsdEpTKSBcCiAgICAgbWFjcm8oTmV3VHlwZWRBcnJheSwgTm9kZVJlc3VsdEpTIHwgTm9kZU11
c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKE5ld1JlZ2V4cCwgTm9kZVJlc3VsdEpTKSBcCisgICAg
bWFjcm8oTmV3R2VuZXJhdG9yRnJhbWUsIE5vZGVSZXN1bHRKUykgXAogICAgIC8qIFJlc3QgUGFy
YW1ldGVyICovXAogICAgIG1hY3JvKEdldFJlc3RMZW5ndGgsIE5vZGVSZXN1bHRJbnQzMikgXAog
ICAgIG1hY3JvKENvcHlSZXN0LCBOb2RlTXVzdEdlbmVyYXRlKSBcCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAppbmRleCBhZGIxOGJjZGExODczZjEwMmVlYjE4
YWZlMzgxODY4OTU4MmYzYzQ2Li5mNTY5NzUxZTYxZDZkZTk5MmEyMzBlMDBmNjJmNTY2MDY3YjQ3
YTkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKQEAg
LTQyLDggKzQyLDkgQEAKICNpbmNsdWRlICJEaXJlY3RBcmd1bWVudHMuaCIKICNpbmNsdWRlICJG
VExGb3JPU1JFbnRyeUpJVENvZGUuaCIKICNpbmNsdWRlICJGVExPU1JFbnRyeS5oIgotI2luY2x1
ZGUgIkhvc3RDYWxsUmV0dXJuVmFsdWUuaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JGcmFtZS5oIgog
I2luY2x1ZGUgIkdldHRlclNldHRlci5oIgorI2luY2x1ZGUgIkhvc3RDYWxsUmV0dXJuVmFsdWUu
aCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUg
IkpJVEV4Y2VwdGlvbnMuaCIKQEAgLTkzNSw2ICs5MzYsMTEgQEAgY2hhciogSklUX09QRVJBVElP
TiBvcGVyYXRpb25OZXdGbG9hdDY0QXJyYXlXaXRoT25lQXJndW1lbnQoCiAgICAgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhB
cmd1bWVudHM8SlNGbG9hdDY0QXJyYXk+KGV4ZWMsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVlLCAw
LCBOdWxsb3B0KSk7CiB9CiAKK2NoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3R2VuZXJh
dG9yRnJhbWUoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJfdCBu
dW1iZXJPZkNhbGxlZUxvY2FscykKK3sKKyAgICByZXR1cm4gYml0d2lzZV9jYXN0PGNoYXIqPihH
ZW5lcmF0b3JGcmFtZTo6Y3JlYXRlKGV4ZWMtPnZtKCksIHN0cnVjdHVyZSwgbnVtYmVyT2ZDYWxs
ZWVMb2NhbHMpKTsKK30KKwogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZUFj
dGl2YXRpb25EaXJlY3QoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNT
Y29wZSogc2NvcGUsIFN5bWJvbFRhYmxlKiB0YWJsZSwgRW5jb2RlZEpTVmFsdWUgaW5pdGlhbFZh
bHVlRW5jb2RlZCkKIHsKICAgICBKU1ZhbHVlIGluaXRpYWxWYWx1ZSA9IEpTVmFsdWU6OmRlY29k
ZShpbml0aWFsVmFsdWVFbmNvZGVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVy
YXRpb25zLmgKaW5kZXggNzkyNjJmZjdkOTk0NDkxZDc0MDU5Y2IwODllMWM0NWFiMmIzOTgwMS4u
MWE2MzIyMTA4NjAzYzYwODJlYTFhNGM5ZjI1MDM0MmM3NzlhYjY5ZCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKQEAgLTgzLDYgKzgzLDcgQEAKIGNoYXIqIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3RmxvYXQzMkFycmF5V2l0aE9uZUFyZ3VtZW50KEV4ZWNT
dGF0ZSosIFN0cnVjdHVyZSosIEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7CiBjaGFyKiBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Zsb2F0NjRBcnJheVdpdGhTaXplKEV4ZWNTdGF0ZSos
IFN0cnVjdHVyZSosIGludDMyX3QpIFdURl9JTlRFUk5BTDsKIGNoYXIqIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uTmV3RmxvYXQ2NEFycmF5V2l0aE9uZUFyZ3VtZW50KEV4ZWNTdGF0ZSosIFN0cnVj
dHVyZSosIEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7CitjaGFyKiBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbk5ld0dlbmVyYXRvckZyYW1lKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSosIGludDMy
X3QpIFdURl9JTlRFUk5BTDsKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbFN0
cmljdChFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFByb3BlcnR5LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpIFdURl9JTlRF
Uk5BTDsKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbE5vblN0cmljdChFeGVj
U3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFByb3BlcnR5LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpIFdURl9JTlRFUk5BTDsKIHZv
aWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbENlbGxTdHJpY3QoRXhlY1N0YXRlKiwg
SlNDZWxsKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFByb3BlcnR5LCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUpIFdURl9JTlRFUk5BTDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKaW5kZXggNTQy
YjE4YzMzYzM1OTdhMGUzZWNjNTA1YjhkZGJkM2FkMDY5NDBjNS4uZDc0YzBkMzZkYTU0ZmJlZmM2
NjY1ODBlZDIwY2JjYWU5ODlmNjE3YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKQEAgLTE2OCw2
ICsxNjgsMjQgQEAgY2xhc3MgUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UgOiBwdWJsaWMgUGhh
c2UgewogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIFNldEdl
bmVyYXRvckxvY2FsOiB7CisgICAgICAgICAgICBHZW5lcmF0b3JMb2NhbERhdGEqIGdlbmVyYXRv
ckxvY2FsRGF0YSA9IG5vZGUtPmdlbmVyYXRvckxvY2FsRGF0YSgpOworICAgICAgICAgICAgY2hh
bmdlZCB8PSBnZW5lcmF0b3JMb2NhbERhdGEtPnByZWRpY3Qobm9kZS0+Y2hpbGQyKCktPnByZWRp
Y3Rpb24oKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2Ug
R2V0R2VuZXJhdG9yTG9jYWw6IHsKKyAgICAgICAgICAgIEdlbmVyYXRvckxvY2FsRGF0YSogdmFy
aWFibGUgPSBub2RlLT5nZW5lcmF0b3JMb2NhbERhdGEoKTsKKyAgICAgICAgICAgIFNwZWN1bGF0
ZWRUeXBlIHByZWRpY3Rpb24gPSB2YXJpYWJsZS0+cHJlZGljdGlvbigpOworICAgICAgICAgICAg
Ly8gV2UgYWx3YXlzIHN0b3JlIHRoZSB2YWx1ZSBpbiBHZW5lcmF0b3JMb2NhbCBhcyBGb3JtYXRK
U1ZhbHVlLgorICAgICAgICAgICAgLy8gU28gZG91YmxlIHZhbHVlIGlzIGJldHRlciB0aGFuIElu
dDUyIHZhbHVlLgorICAgICAgICAgICAgaWYgKGVuYWJsZUludDUyKCkgJiYgKHByZWRpY3Rpb24g
JiBTcGVjSW50NTJPbmx5KSkKKyAgICAgICAgICAgICAgICBwcmVkaWN0aW9uID0gKHByZWRpY3Rp
b24gfCBTcGVjQW55SW50QXNEb3VibGUpICYgflNwZWNJbnQ1Mk9ubHk7CisgICAgICAgICAgICBp
ZiAocHJlZGljdGlvbikKKyAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlv
bihwcmVkaWN0aW9uKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKICAgICAgICAg
Y2FzZSBVSW50MzJUb051bWJlcjogewogICAgICAgICAgICAgaWYgKG5vZGUtPmNhblNwZWN1bGF0
ZUludDMyKG1fcGFzcykpCiAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rp
b24oU3BlY0ludDMyT25seSk7CkBAIC04MjgsNyArODQ2LDggQEAgY2xhc3MgUHJlZGljdGlvblBy
b3BhZ2F0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KICAgICAgICAgICAgIAotICAgICAgICBjYXNlIENyZWF0ZUFjdGl2YXRpb246IHsKKyAg
ICAgICAgY2FzZSBDcmVhdGVBY3RpdmF0aW9uOgorICAgICAgICBjYXNlIE5ld0dlbmVyYXRvckZy
YW1lOiB7CiAgICAgICAgICAgICBzZXRQcmVkaWN0aW9uKFNwZWNPYmplY3RPdGhlcik7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMTA0Myw2ICsxMDYyLDcgQEAgY2xhc3MgUHJl
ZGljdGlvblByb3BhZ2F0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICBjYXNlIExv
YWRWYXJhcmdzOgogICAgICAgICBjYXNlIENvcHlSZXN0OgogICAgICAgICBjYXNlIFB1dER5bmFt
aWNWYXI6CisgICAgICAgIGNhc2UgUmVzaXplR2VuZXJhdG9yTG9jYWxzOgogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICAKICAgICAgICAgLy8gVGhpcyBnZXRzIGlnbm9yZWQgYmVjYXVz
ZSBpdCBvbmx5IHByZXRlbmRzIHRvIHByb2R1Y2UgYSB2YWx1ZS4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKaW5kZXggZTZhOGFmOTY1YjE0YTY3ZGI1YWJi
MmM3YzczNDNjZTliYTVhMDQ0YS4uOTEwM2U5MWY1ZGU1MzlmYTU0NDcwMGFjNDcwYTE0YjMyMWZm
MjYyOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVj
dXRlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgK
QEAgLTI0NSw2ICsyNDUsNyBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUm
IHN0YXRlLCBHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBOZXdBcnJheVdpdGhT
aXplOgogICAgIGNhc2UgTmV3QXJyYXlCdWZmZXI6CiAgICAgY2FzZSBOZXdSZWdleHA6CisgICAg
Y2FzZSBOZXdHZW5lcmF0b3JGcmFtZToKICAgICBjYXNlIFByb2ZpbGVXaWxsQ2FsbDoKICAgICBj
YXNlIFByb2ZpbGVEaWRDYWxsOgogICAgIGNhc2UgUHJvZmlsZVR5cGU6CkBAIC0zNDMsNiArMzQ0
LDkgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSwgR3JhcGgm
IGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgR2V0TXlBcmd1bWVudEJ5VmFsT3V0T2ZCb3Vu
ZHM6CiAgICAgY2FzZSBGb3J3YXJkVmFyYXJnczoKICAgICBjYXNlIENvcHlSZXN0OgorICAgIGNh
c2UgU2V0R2VuZXJhdG9yTG9jYWw6CisgICAgY2FzZSBHZXRHZW5lcmF0b3JMb2NhbDoKKyAgICBj
YXNlIFJlc2l6ZUdlbmVyYXRvckxvY2FsczoKICAgICBjYXNlIFN0cmluZ1JlcGxhY2U6CiAgICAg
Y2FzZSBTdHJpbmdSZXBsYWNlUmVnRXhwOgogICAgIGNhc2UgR2V0UmVnRXhwT2JqZWN0TGFzdElu
ZGV4OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNw
cAppbmRleCA0YTBiZDk2Mzk0ZTg2NmRiNjQ2MDc0ZjcxYWQ1NzFlY2Q2NWRhYmNjLi4zMTQyZjFl
YjgxMzk4MDY3ZmU5MGI5NGRjOTI3ZWJlMmYyZDJmMjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApAQCAtMzgsNiArMzgsNyBAQAogI2lu
Y2x1ZGUgIkRGR1NhbmVTdHJpbmdHZXRCeVZhbFNsb3dQYXRoR2VuZXJhdG9yLmgiCiAjaW5jbHVk
ZSAiREZHU2xvd1BhdGhHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJEaXJlY3RBcmd1bWVudHMuaCIK
KyNpbmNsdWRlICJHZW5lcmF0b3JGcmFtZS5oIgogI2luY2x1ZGUgIkpJVEFkZEdlbmVyYXRvci5o
IgogI2luY2x1ZGUgIkpJVEJpdEFuZEdlbmVyYXRvci5oIgogI2luY2x1ZGUgIkpJVEJpdE9yR2Vu
ZXJhdG9yLmgiCkBAIC02ODUxLDYgKzY4NTIsNDIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZU5ld1N0cmluZ09iamVjdChOb2RlKiBub2RlKQogICAgIGNlbGxSZXN1bHQocmVzdWx0R1BS
LCBub2RlKTsKIH0KIAordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld0dlbmVyYXRvckZy
YW1lKE5vZGUqIG5vZGUpCit7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1f
aml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBnbG9iYWxPYmplY3QtPmdlbmVyYXRvckZyYW1lU3RydWN0
dXJlKCk7CisgICAgdW5zaWduZWQgZ2VuZXJhdG9yTG9jYWxzU2l6ZSA9IG5vZGUtPmdlbmVyYXRv
ckxvY2Fsc1NpemUoKTsKKworICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CisgICAgR1BS
VGVtcG9yYXJ5IHNjcmF0Y2gxKHRoaXMpOworICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoMih0aGlz
KTsKKworICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CisgICAgR1BSUmVnIHNj
cmF0Y2gxR1BSID0gc2NyYXRjaDEuZ3ByKCk7CisgICAgR1BSUmVnIHNjcmF0Y2gyR1BSID0gc2Ny
YXRjaDIuZ3ByKCk7CisKKyAgICBKSVRDb21waWxlcjo6SnVtcExpc3Qgc2xvd1BhdGg7CisKKyAg
ICBlbWl0QWxsb2NhdGVKU09iamVjdFdpdGhLbm93blNpemU8R2VuZXJhdG9yRnJhbWU+KHJlc3Vs
dEdQUiwgVHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpLCBUcnVzdGVkSW1tUHRyKG51bGxwdHIpLCBz
Y3JhdGNoMUdQUiwgc2NyYXRjaDJHUFIsIHNsb3dQYXRoLCBHZW5lcmF0b3JGcmFtZTo6YWxsb2Nh
dGlvblNpemVGb3JMb2NhbHMoZ2VuZXJhdG9yTG9jYWxzU2l6ZSkpOworICAgIG1faml0LnN0b3Jl
MzIoVHJ1c3RlZEltbTMyKGdlbmVyYXRvckxvY2Fsc1NpemUpLCBKSVRDb21waWxlcjo6QWRkcmVz
cyhyZXN1bHRHUFIsIEdlbmVyYXRvckZyYW1lOjpudW1iZXJPZkNhbGxlZUxvY2Fsc09mZnNldCgp
KSk7CisgICAgbV9qaXQuc3RvcmUzMihUcnVzdGVkSW1tMzIoMCksIEpJVENvbXBpbGVyOjpBZGRy
ZXNzKHJlc3VsdEdQUiwgR2VuZXJhdG9yRnJhbWU6Om51bWJlck9mU2F2ZWRDYWxsZWVMb2NhbHNP
ZmZzZXQoKSkpOworICAgIEpTVmFsdWUgZW1wdHlWYWx1ZTsKKyAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgZ2VuZXJhdG9yTG9jYWxzU2l6ZTsgKytpKQorICAgICAgICBtX2ppdC5zdG9yZVRy
dXN0ZWRWYWx1ZShlbXB0eVZhbHVlLCBKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIEdl
bmVyYXRvckZyYW1lOjpsb2NhbE9mZnNldChpKSkpOworCisgICAgYWRkU2xvd1BhdGhHZW5lcmF0
b3Ioc2xvd1BhdGhDYWxsKHNsb3dQYXRoLCB0aGlzLCBvcGVyYXRpb25OZXdHZW5lcmF0b3JGcmFt
ZSwgcmVzdWx0R1BSLCBzdHJ1Y3R1cmUsIGdlbmVyYXRvckxvY2Fsc1NpemUpKTsKKworICAgIGNl
bGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKK30KKwordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZVJlc2l6ZUdlbmVyYXRvckxvY2FscyhOb2RlKiBub2RlKQoreworICAgIFNwZWN1bGF0ZUNl
bGxPcGVyYW5kIGZyYW1lKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICBHUFJSZWcgZnJhbWVH
UFIgPSBmcmFtZS5ncHIoKTsKKyAgICBtX2ppdC5zdG9yZTMyKFRydXN0ZWRJbW0zMihub2RlLT5n
ZW5lcmF0b3JGcmFtZUxvY2FscygpKSwgSklUQ29tcGlsZXI6OkFkZHJlc3MoZnJhbWVHUFIsIEdl
bmVyYXRvckZyYW1lOjpudW1iZXJPZlNhdmVkQ2FsbGVlTG9jYWxzT2Zmc2V0KCkpKTsKKyAgICBu
b1Jlc3VsdChub2RlKTsKK30KKwogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld1R5cGVk
QXJyYXkoTm9kZSogbm9kZSkKIHsKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0g
bV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAppbmRleCA0ODU1
NjNhOGNiNmQyNjUxOGU3YzJiY2JkMDhiYmMwOTcxMGMzMjQ2Li5iYzk3MDRlNzk0Mzc4Mjg0N2Ex
NzBhNjQ1NTgyMDViMzcyMzdjMjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5oCkBAIC0yNDkxLDYgKzI0OTEsOCBAQCBjbGFzcyBTcGVjdWxhdGl2
ZUpJVCB7CiAgICAgdm9pZCBjb21waWxlUHV0QnlWYWxGb3JGbG9hdFR5cGVkQXJyYXkoR1BSUmVn
IGJhc2UsIEdQUlJlZyBwcm9wZXJ0eSwgTm9kZSosIFR5cGVkQXJyYXlUeXBlKTsKICAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgQ2xhc3NUeXBlPiB2b2lkIGNvbXBpbGVOZXdGdW5jdGlvbkNvbW1vbihH
UFJSZWcsIFN0cnVjdHVyZSosIEdQUlJlZywgR1BSUmVnLCBHUFJSZWcsIE1hY3JvQXNzZW1ibGVy
OjpKdW1wTGlzdCYsIHNpemVfdCwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgcHRyZGlmZl90LCBwdHJk
aWZmX3QsIHB0cmRpZmZfdCk7CiAgICAgdm9pZCBjb21waWxlTmV3RnVuY3Rpb24oTm9kZSopOwor
ICAgIHZvaWQgY29tcGlsZU5ld0dlbmVyYXRvckZyYW1lKE5vZGUqKTsKKyAgICB2b2lkIGNvbXBp
bGVSZXNpemVHZW5lcmF0b3JMb2NhbHMoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZVNldEZ1bmN0
aW9uTmFtZShOb2RlKik7CiAgICAgdm9pZCBjb21waWxlRm9yd2FyZFZhcmFyZ3MoTm9kZSopOwog
ICAgIHZvaWQgY29tcGlsZUNyZWF0ZUFjdGl2YXRpb24oTm9kZSopOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKaW5kZXggZGU2
MzFkNGFkYjZkOTUzMzQ4ZTQzMjIxZTkzOWY3YzBmYzcyMzgwMC4uNGI3MTA1ZWZlNDY1ZDkxMjBl
OWFjMjY3YTQ2MDBhMTJjZTdjYzFhYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5j
bHVkZSAiREZHU2xvd1BhdGhHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJEZWJ1Z2dlci5oIgogI2lu
Y2x1ZGUgIkRpcmVjdEFyZ3VtZW50cy5oIgorI2luY2x1ZGUgIkdlbmVyYXRvckZyYW1lLmgiCiAj
aW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiSlNFbnZpcm9ubWVudFJlY29yZC5o
IgogI2luY2x1ZGUgIkpTTGV4aWNhbEVudmlyb25tZW50LmgiCkBAIC0zODM1LDYgKzM4MzYsMTEg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBjb21w
aWxlQ2FsbE9iamVjdENvbnN0cnVjdG9yKG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9CisK
KyAgICBjYXNlIE5ld0dlbmVyYXRvckZyYW1lOiB7CisgICAgICAgIGNvbXBpbGVOZXdHZW5lcmF0
b3JGcmFtZShub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogICAgICAgICAKICAgICBjYXNl
IFRvVGhpczogewogICAgICAgICBBU1NFUlQobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IFVu
dHlwZWRVc2UpOwpAQCAtNDk1MCw2ICs0OTU2LDQxIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwog
ICAgICAgICBicmVhazsKICAgICB9CisgICAgY2FzZSBTZXRHZW5lcmF0b3JMb2NhbDogeworICAg
ICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBmcmFtZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Cisg
ICAgICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKKworICAg
ICAgICBHUFJSZWcgZnJhbWVHUFIgPSBmcmFtZS5ncHIoKTsKKyAgICAgICAgR1BSUmVnIHZhbHVl
VGFnR1BSID0gdmFsdWUudGFnR1BSKCk7CisgICAgICAgIEdQUlJlZyB2YWx1ZVBheWxvYWRHUFIg
PSB2YWx1ZS5wYXlsb2FkR1BSKCk7CisgICAgICAgIHVuc2lnbmVkIGdlbmVyYXRvckxvY2FsSW5k
ZXggPSBub2RlLT5nZW5lcmF0b3JMb2NhbEluZGV4KCk7CisKKyAgICAgICAgbV9qaXQuc3RvcmUz
Mih2YWx1ZVRhZ0dQUiwgSklUQ29tcGlsZXI6OkFkZHJlc3MoZnJhbWVHUFIsIEdlbmVyYXRvckZy
YW1lOjpsb2NhbE9mZnNldChnZW5lcmF0b3JMb2NhbEluZGV4KSArIE9CSkVDVF9PRkZTRVRPRihK
U1ZhbHVlLCB1LmFzQml0cy50YWcpKSk7CisgICAgICAgIG1faml0LnN0b3JlMzIodmFsdWVQYXls
b2FkR1BSLCBKSVRDb21waWxlcjo6QWRkcmVzcyhmcmFtZUdQUiwgR2VuZXJhdG9yRnJhbWU6Omxv
Y2FsT2Zmc2V0KGdlbmVyYXRvckxvY2FsSW5kZXgpICsgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUs
IHUuYXNCaXRzLnBheWxvYWQpKSk7CisKKyAgICAgICAgbm9SZXN1bHQobm9kZSk7CisgICAgICAg
IGJyZWFrOworICAgIH0KKyAgICBjYXNlIEdldEdlbmVyYXRvckxvY2FsOiB7CisgICAgICAgIFNw
ZWN1bGF0ZUNlbGxPcGVyYW5kIGZyYW1lKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAg
R1BSVGVtcG9yYXJ5IHJlc3VsdFRhZyh0aGlzKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3Vs
dFBheWxvYWQodGhpcyk7CisKKyAgICAgICAgR1BSUmVnIGZyYW1lR1BSID0gZnJhbWUuZ3ByKCk7
CisgICAgICAgIEdQUlJlZyByZXN1bHRUYWdHUFIgPSByZXN1bHRUYWcuZ3ByKCk7CisgICAgICAg
IEdQUlJlZyByZXN1bHRQYXlsb2FkR1BSID0gcmVzdWx0UGF5bG9hZC5ncHIoKTsKKyAgICAgICAg
dW5zaWduZWQgZ2VuZXJhdG9yTG9jYWxJbmRleCA9IG5vZGUtPmdlbmVyYXRvckxvY2FsSW5kZXgo
KTsKKworICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OkFkZHJlc3MoZnJhbWVHUFIs
IEdlbmVyYXRvckZyYW1lOjpsb2NhbE9mZnNldChnZW5lcmF0b3JMb2NhbEluZGV4KSArIE9CSkVD
VF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy50YWcpKSwgcmVzdWx0VGFnR1BSKTsKKyAgICAg
ICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGZyYW1lR1BSLCBHZW5lcmF0b3JG
cmFtZTo6bG9jYWxPZmZzZXQoZ2VuZXJhdG9yTG9jYWxJbmRleCkgKyBPQkpFQ1RfT0ZGU0VUT0Yo
SlNWYWx1ZSwgdS5hc0JpdHMucGF5bG9hZCkpLCByZXN1bHRQYXlsb2FkR1BSKTsKKworICAgICAg
ICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQUiwgbm9kZSk7Cisg
ICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIFJlc2l6ZUdlbmVyYXRvckxvY2Fsczogewor
ICAgICAgICBjb21waWxlUmVzaXplR2VuZXJhdG9yTG9jYWxzKG5vZGUpOworICAgICAgICBicmVh
azsKKyAgICB9CiAgICAgY2FzZSBQcm9maWxlVHlwZTogewogICAgICAgICBKU1ZhbHVlT3BlcmFu
ZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIEdQUlRlbXBvcmFyeSBzY3Jh
dGNoMSh0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklUNjQuY3BwCmluZGV4IGY1M2E0NThlMzEwN2EyNzQ2YzJkNjAyZWIzYmE1OGJhZDQwNjgz
NGEuLjYxNjRiYTM4NWYzYWE5N2Y3MzlmZmE4NzVlN2E4MzkwZmUzMjUzN2UgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAtMzYs
NiArMzYsNyBAQAogI2luY2x1ZGUgIkRGR1Nsb3dQYXRoR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAi
RGVidWdnZXIuaCIKICNpbmNsdWRlICJEaXJlY3RBcmd1bWVudHMuaCIKKyNpbmNsdWRlICJHZW5l
cmF0b3JGcmFtZS5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIkpTQ0lu
bGluZXMuaCIKICNpbmNsdWRlICJKU0Vudmlyb25tZW50UmVjb3JkLmgiCkBAIC0zODk0LDYgKzM4
OTUsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAg
ICBicmVhazsKICAgICB9CiAKKyAgICBjYXNlIE5ld0dlbmVyYXRvckZyYW1lOiB7CisgICAgICAg
IGNvbXBpbGVOZXdHZW5lcmF0b3JGcmFtZShub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQor
ICAgICAgICAKICAgICBjYXNlIFRvVGhpczogewogICAgICAgICBBU1NFUlQobm9kZS0+Y2hpbGQx
KCkudXNlS2luZCgpID09IFVudHlwZWRVc2UpOwogICAgICAgICBKU1ZhbHVlT3BlcmFuZCB0aGlz
VmFsdWUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwpAQCAtNDk4OSw2ICs0OTk1LDM1IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgY2VsbFJlc3VsdChy
ZXN1bHRHUFIsIG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9CisgICAgY2FzZSBTZXRHZW5l
cmF0b3JMb2NhbDogeworICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBmcmFtZSh0aGlzLCBu
b2RlLT5jaGlsZDEoKSk7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUt
PmNoaWxkMigpKTsKKworICAgICAgICBHUFJSZWcgZnJhbWVHUFIgPSBmcmFtZS5ncHIoKTsKKyAg
ICAgICAgR1BSUmVnIHZhbHVlR1BSID0gdmFsdWUuZ3ByKCk7CisgICAgICAgIHVuc2lnbmVkIGdl
bmVyYXRvckxvY2FsSW5kZXggPSBub2RlLT5nZW5lcmF0b3JMb2NhbEluZGV4KCk7CisKKyAgICAg
ICAgbV9qaXQuc3RvcmU2NCh2YWx1ZUdQUiwgSklUQ29tcGlsZXI6OkFkZHJlc3MoZnJhbWVHUFIs
IEdlbmVyYXRvckZyYW1lOjpsb2NhbE9mZnNldChnZW5lcmF0b3JMb2NhbEluZGV4KSkpOworCisg
ICAgICAgIG5vUmVzdWx0KG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBH
ZXRHZW5lcmF0b3JMb2NhbDogeworICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBmcmFtZSh0
aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7
CisKKyAgICAgICAgR1BSUmVnIGZyYW1lR1BSID0gZnJhbWUuZ3ByKCk7CisgICAgICAgIEdQUlJl
ZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CisgICAgICAgIHVuc2lnbmVkIGdlbmVyYXRvckxv
Y2FsSW5kZXggPSBub2RlLT5nZW5lcmF0b3JMb2NhbEluZGV4KCk7CisKKyAgICAgICAgbV9qaXQu
bG9hZDY0KEpJVENvbXBpbGVyOjpBZGRyZXNzKGZyYW1lR1BSLCBHZW5lcmF0b3JGcmFtZTo6bG9j
YWxPZmZzZXQoZ2VuZXJhdG9yTG9jYWxJbmRleCkpLCByZXN1bHRHUFIpOworICAgICAgICBqc1Zh
bHVlUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBj
YXNlIFJlc2l6ZUdlbmVyYXRvckxvY2FsczogeworICAgICAgICBjb21waWxlUmVzaXplR2VuZXJh
dG9yTG9jYWxzKG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CiAgICAgY2FzZSBQcm9maWxl
VHlwZTogewogICAgICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDEo
KSk7CiAgICAgICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoMSh0aGlzKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFz
ZS5jcHAKaW5kZXggYjYzMTIwOWU4ZDE3MjY4ZDA5YTNlMDc3ODJkNzhjOTM0NjJkMGJmYy4uYzkz
N2JkOWQyNzEzYjRlOThhNTQzYWJlZWY3NzdmYTIyNzBiN2VmYSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFz
ZS5jcHAKQEAgLTI4Myw2ICsyODMsMTEgQEAgY2xhc3MgU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhh
c2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgICAgIGNvbnNpZGVyQmFycmllcihtX25v
ZGUtPmNoaWxkMSgpLCBtX25vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgY2FzZSBTZXRHZW5lcmF0b3JMb2NhbDogewor
ICAgICAgICAgICAgICAgIGNvbnNpZGVyQmFycmllcihtX25vZGUtPmNoaWxkMSgpLCBtX25vZGUt
PmNoaWxkMigpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICAKICAgICAgICAgICAgIGNhc2UgU2V0RnVuY3Rpb25OYW1lOiB7CiAgICAgICAg
ICAgICAgICAgY29uc2lkZXJCYXJyaWVyKG1fbm9kZS0+Y2hpbGQxKCksIG1fbm9kZS0+Y2hpbGQy
KCkpOwpAQCAtMzAzLDYgKzMwOCw3IEBAIGNsYXNzIFN0b3JlQmFycmllckluc2VydGlvblBoYXNl
IDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgIGNhc2UgTmV3QXJyYXlCdWZmZXI6CiAgICAg
ICAgICAgICBjYXNlIE5ld1R5cGVkQXJyYXk6CiAgICAgICAgICAgICBjYXNlIE5ld1JlZ2V4cDoK
KyAgICAgICAgICAgIGNhc2UgTmV3R2VuZXJhdG9yRnJhbWU6CiAgICAgICAgICAgICBjYXNlIE1h
dGVyaWFsaXplTmV3T2JqZWN0OgogICAgICAgICAgICAgY2FzZSBNYXRlcmlhbGl6ZUNyZWF0ZUFj
dGl2YXRpb246CiAgICAgICAgICAgICBjYXNlIE5ld1N0cmluZ09iamVjdDoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2Uu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVSZWdpc3RyYXRpb25Q
aGFzZS5jcHAKaW5kZXggNTFjZjQ4OTYwYThiMWZmNTcyYTg2OWVhZTE4YmYwYTlmNWEyNzlkZC4u
MDBkMTk4YzM5MDk1MzY1Y2U3ODYyZjc2YjE3ZjUzYmU0NjViOTI4ZSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFzZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVSZWdpc3RyYXRpb25Q
aGFzZS5jcHAKQEAgLTEzNSw2ICsxMzUsOSBAQCBjbGFzcyBTdHJ1Y3R1cmVSZWdpc3RyYXRpb25Q
aGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICAgICAgY2FzZSBDcmVhdGVEaXJlY3RB
cmd1bWVudHM6CiAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyU3RydWN0dXJlKG1fZ3JhcGgu
Z2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyktPmRpcmVjdEFyZ3VtZW50c1N0
cnVjdHVyZSgpKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAg
Y2FzZSBOZXdHZW5lcmF0b3JGcmFtZToKKyAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJTdHJ1
Y3R1cmUobV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+Z2Vu
ZXJhdG9yRnJhbWVTdHJ1Y3R1cmUoKSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBjYXNlIENyZWF0ZVNjb3BlZEFyZ3Vt
ZW50czoKICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJTdHJ1Y3R1cmUobV9ncmFwaC5nbG9i
YWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+c2NvcGVkQXJndW1lbnRzU3RydWN0
dXJlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFj
dEhlYXBSZXBvc2l0b3J5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJh
Y3RIZWFwUmVwb3NpdG9yeS5jcHAKaW5kZXggYTRiNTQzN2U5N2M0N2Y4ZmYzZmVlZGMxZWU5MGY2
MDc3YWI1ZmYwNS4uYjFiMmZlY2NlM2FmOTk0NGFmZDFjNjNhNGIzMGUwYjA3MmU5OTcyNyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0
b3J5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJl
cG9zaXRvcnkuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiQjNWYWx1ZUlubGluZXMu
aCIKICNpbmNsdWRlICJEaXJlY3RBcmd1bWVudHMuaCIKICNpbmNsdWRlICJGVExTdGF0ZS5oIgor
I2luY2x1ZGUgIkdlbmVyYXRvckZyYW1lLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAj
aW5jbHVkZSAiSlNFbnZpcm9ubWVudFJlY29yZC5oIgogI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1l
RW51bWVyYXRvci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExB
YnN0cmFjdEhlYXBSZXBvc2l0b3J5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFi
c3RyYWN0SGVhcFJlcG9zaXRvcnkuaAppbmRleCBiMTFhZGU0ZjA5YTc2ODA2MDA5NjhlNzMwNjU5
MTE0M2YyNzFkYjkzLi4zOWEyOGQ1MWQ4ZTgwOGI3N2Q2YjZlYjliYTAxYzUzZjUzMDRmZWVhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9z
aXRvcnkuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJl
cG9zaXRvcnkuaApAQCAtNDgsNiArNDgsOCBAQAogICAgIG1hY3JvKERpcmVjdEFyZ3VtZW50c19s
ZW5ndGgsIERpcmVjdEFyZ3VtZW50czo6b2Zmc2V0T2ZMZW5ndGgoKSkgXAogICAgIG1hY3JvKERp
cmVjdEFyZ3VtZW50c19taW5DYXBhY2l0eSwgRGlyZWN0QXJndW1lbnRzOjpvZmZzZXRPZk1pbkNh
cGFjaXR5KCkpIFwKICAgICBtYWNybyhEaXJlY3RBcmd1bWVudHNfb3ZlcnJpZGVzLCBEaXJlY3RB
cmd1bWVudHM6Om9mZnNldE9mT3ZlcnJpZGVzKCkpIFwKKyAgICBtYWNybyhHZW5lcmF0b3JGcmFt
ZV9udW1iZXJPZkNhbGxlZUxvY2FscywgR2VuZXJhdG9yRnJhbWU6Om51bWJlck9mQ2FsbGVlTG9j
YWxzT2Zmc2V0KCkpIFwKKyAgICBtYWNybyhHZW5lcmF0b3JGcmFtZV9udW1iZXJPZlNhdmVkQ2Fs
bGVlTG9jYWxzLCBHZW5lcmF0b3JGcmFtZTo6bnVtYmVyT2ZTYXZlZENhbGxlZUxvY2Fsc09mZnNl
dCgpKSBcCiAgICAgbWFjcm8oR2V0dGVyU2V0dGVyX2dldHRlciwgR2V0dGVyU2V0dGVyOjpvZmZz
ZXRPZkdldHRlcigpKSBcCiAgICAgbWFjcm8oR2V0dGVyU2V0dGVyX3NldHRlciwgR2V0dGVyU2V0
dGVyOjpvZmZzZXRPZlNldHRlcigpKSBcCiAgICAgbWFjcm8oSlNBcnJheUJ1ZmZlclZpZXdfbGVu
Z3RoLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSkgXApAQCAtMTAzLDYgKzEw
NSw3IEBACiAKICNkZWZpbmUgRk9SX0VBQ0hfSU5ERVhFRF9BQlNUUkFDVF9IRUFQKG1hY3JvKSBc
CiAgICAgbWFjcm8oRGlyZWN0QXJndW1lbnRzX3N0b3JhZ2UsIERpcmVjdEFyZ3VtZW50czo6c3Rv
cmFnZU9mZnNldCgpLCBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKSBcCisgICAgbWFjcm8oR2VuZXJh
dG9yRnJhbWVfY2FsbGVlTG9jYWxzLCBHZW5lcmF0b3JGcmFtZTo6b2Zmc2V0T2ZMb2NhbHMoKSwg
c2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPikpIFwKICAgICBtYWNybyhKU0Vudmlyb25tZW50
UmVjb3JkX3ZhcmlhYmxlcywgSlNFbnZpcm9ubWVudFJlY29yZDo6b2Zmc2V0T2ZWYXJpYWJsZXMo
KSwgc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSkgXAogICAgIG1hY3JvKEpTUHJvcGVydHlOYW1lRW51
bWVyYXRvcl9jYWNoZWRQcm9wZXJ0eU5hbWVzVmVjdG9yQ29udGVudHMsIDAsIHNpemVvZihXcml0
ZUJhcnJpZXI8SlNTdHJpbmc+KSkgXAogICAgIG1hY3JvKEpTUm9wZVN0cmluZ19maWJlcnMsIEpT
Um9wZVN0cmluZzo6b2Zmc2V0T2ZGaWJlcnMoKSwgc2l6ZW9mKFdyaXRlQmFycmllcjxKU1N0cmlu
Zz4pKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxp
dGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAK
aW5kZXggY2Y4MWJhNTI4MDI2ZTQwM2Y4NzFlNWU0ZGMwNWMyNDRiZjgwZDhhMy4uMDEzMmU4ZWZi
MTI0MzFjN2E5MGU5OGIwODhkNjIxMjMxYmVlYjQzOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcApAQCAtNzIsNiArNzIsNyBAQCBpbmxpbmUgQ2Fw
YWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIE5ld09iamVjdDoK
ICAgICBjYXNlIE5ld0FycmF5OgogICAgIGNhc2UgTmV3QXJyYXlCdWZmZXI6CisgICAgY2FzZSBO
ZXdHZW5lcmF0b3JGcmFtZToKICAgICBjYXNlIE5ld1R5cGVkQXJyYXk6CiAgICAgY2FzZSBHZXRC
eU9mZnNldDoKICAgICBjYXNlIEdldEdldHRlclNldHRlckJ5T2Zmc2V0OgpAQCAtMjI5LDYgKzIz
MCw5IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiBub2RlKQogICAg
IGNhc2UgUHV0U2V0dGVyQnlWYWw6CiAgICAgY2FzZSBDb3B5UmVzdDoKICAgICBjYXNlIEdldFJl
c3RMZW5ndGg6CisgICAgY2FzZSBTZXRHZW5lcmF0b3JMb2NhbDoKKyAgICBjYXNlIEdldEdlbmVy
YXRvckxvY2FsOgorICAgIGNhc2UgUmVzaXplR2VuZXJhdG9yTG9jYWxzOgogICAgIGNhc2UgUmVn
RXhwRXhlYzoKICAgICBjYXNlIFJlZ0V4cFRlc3Q6CiAgICAgY2FzZSBOZXdSZWdleHA6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVC5jcHAKaW5kZXggOTZlNGVjMjg2MDE3YTA4MzY4MTI5MDAyYzRjYzNj
NTJlYTg2OGY0ZS4uNGUyYmMyMGY1YzM2OTViNzQ5YzRlMTBmM2ViZjkxNDRmYjIxNjI5YSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcApAQCAtMjIwLDYgKzIyMCw3IEBAIHZvaWQgSklUOjpw
cml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgREVGSU5FX09QKG9wX2Fzc2VydCkKICAg
ICAgICAgREVGSU5FX09QKG9wX3NhdmUpCiAgICAgICAgIERFRklORV9PUChvcF9yZXN1bWUpCisg
ICAgICAgIERFRklORV9PUChvcF9uZXdfZ2VuZXJhdG9yX2ZyYW1lKQogICAgICAgICBERUZJTkVf
T1Aob3BfZGVidWcpCiAgICAgICAgIERFRklORV9PUChvcF9kZWxfYnlfaWQpCiAgICAgICAgIERF
RklORV9PUChvcF9kaXYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAppbmRleCAwYzNmMTFkYjhkMWVk
YTZkNTBiNTI2ZGY2MjBmNDVlYTQ3M2YyNTI5Li4zZGQ2ODU5ZmQ0MWVjZDJhYjYwNmFjYWUwZjg5
MDIxNTYyM2Y1MGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKQEAgLTMzMSw2ICszMzEsNyBA
QAogICAgICAgICBlbnVtIFdyaXRlQmFycmllck1vZGUgeyBVbmNvbmRpdGlvbmFsV3JpdGVCYXJy
aWVyLCBTaG91bGRGaWx0ZXJCYXNlLCBTaG91bGRGaWx0ZXJWYWx1ZSwgU2hvdWxkRmlsdGVyQmFz
ZUFuZFZhbHVlIH07CiAgICAgICAgIC8vIHZhbHVlIHJlZ2lzdGVyIGluIHdyaXRlIGJhcnJpZXIg
aXMgdXNlZCBiZWZvcmUgYW55IHNjcmF0Y2ggcmVnaXN0ZXJzCiAgICAgICAgIC8vIHNvIG1heSBz
YWZlbHkgYmUgdGhlIHNhbWUgYXMgZWl0aGVyIG9mIHRoZSBzY3JhdGNoIHJlZ2lzdGVycy4KKyAg
ICAgICAgdm9pZCBlbWl0V3JpdGVCYXJyaWVyKHVuc2lnbmVkIG93bmVyLCBXcml0ZUJhcnJpZXJN
b2RlKTsKICAgICAgICAgdm9pZCBlbWl0V3JpdGVCYXJyaWVyKHVuc2lnbmVkIG93bmVyLCB1bnNp
Z25lZCB2YWx1ZSwgV3JpdGVCYXJyaWVyTW9kZSk7CiAgICAgICAgIHZvaWQgZW1pdFdyaXRlQmFy
cmllcihKU0NlbGwqIG93bmVyLCB1bnNpZ25lZCB2YWx1ZSwgV3JpdGVCYXJyaWVyTW9kZSk7CiAg
ICAgICAgIHZvaWQgZW1pdFdyaXRlQmFycmllcihKU0NlbGwqIG93bmVyKTsKQEAgLTQ5NCw2ICs0
OTUsNyBAQAogICAgICAgICB2b2lkIGVtaXRfb3BfYXNzZXJ0KEluc3RydWN0aW9uKik7CiAgICAg
ICAgIHZvaWQgZW1pdF9vcF9zYXZlKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9v
cF9yZXN1bWUoSW5zdHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX25ld19nZW5lcmF0
b3JfZnJhbWUoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2RlYnVnKEluc3Ry
dWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9kZWxfYnlfaWQoSW5zdHJ1Y3Rpb24qKTsK
ICAgICAgICAgdm9pZCBlbWl0X29wX2RpdihJbnN0cnVjdGlvbiopOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKaW5kZXggOWFjYjUzMDZkMTFkNzAyYjA2ZmVjZDQxODVk
MzFmYmVlZmRiMGQ5Ni4uYzQyMmQ2OGNiYjMyMmNkZTljOWU1ZjljODJkNDUwOTkyYzNkMThkZCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCkBAIC0zMiw2ICszMiw3
IEBACiAjaW5jbHVkZSAiQ29waWVkU3BhY2VJbmxpbmVzLmgiCiAjaW5jbHVkZSAiRGVidWdnZXIu
aCIKICNpbmNsdWRlICJFeGNlcHRpb24uaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JGcmFtZS5oIgog
I2luY2x1ZGUgIkhlYXAuaCIKICNpbmNsdWRlICJKSVRJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNB
cnJheS5oIgpAQCAtOTE3LDYgKzkxOCw0OSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfdG9fc3Ry
aW5nKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZQogICAg
IHNsb3dQYXRoQ2FsbC5jYWxsKCk7CiB9CiAKK3ZvaWQgSklUOjplbWl0X29wX3NhdmUoSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBpbnQgZnJhbWUgPSBjdXJyZW50SW5z
dHJ1Y3Rpb25bMV0udS5vcGVyYW5kOworICAgIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRl
eCA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51LnVuc2lnbmVkVmFsdWU7CisgICAgY29uc3QgRmFz
dEJpdFZlY3RvciYgbGl2ZW5lc3MgPSBtX2NvZGVCbG9jay0+bGl2ZUNhbGxlZUxvY2Fsc0F0WWll
bGQobGl2ZUNhbGxlZUxvY2Fsc0luZGV4KTsKKworICAgIC8vIEEgZnJhbWUgaXMgYWx3YXlzIGEg
Y2VsbC4gTm8gbmVlZCB0byBmaWx0ZXIgb3V0LgorICAgIGVtaXRXcml0ZUJhcnJpZXIoZnJhbWUs
IFVuY29uZGl0aW9uYWxXcml0ZUJhcnJpZXIpOworCisgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rl
cihmcmFtZSwgcmVnVDEpOworCisgICAgLy8gQWxsb2NhdGUgZ2VuZXJhdG9yIGZyYW1lIGxvY2Fs
cy4KKyAgICBzdG9yZTMyKFRydXN0ZWRJbW0zMihsaXZlbmVzcy5iaXRDb3VudCgpKSwgQWRkcmVz
cyhyZWdUMSwgR2VuZXJhdG9yRnJhbWU6Om51bWJlck9mU2F2ZWRDYWxsZWVMb2NhbHNPZmZzZXQo
KSkpOworCisgICAgdW5zaWduZWQgZ2VuZXJhdG9yTG9jYWxJbmRleCA9IDA7CisgICAgbGl2ZW5l
c3MuZm9yRWFjaFNldEJpdChbJl0oc2l6ZV90IGxvY2FsKSB7CisgICAgICAgIFZpcnR1YWxSZWdp
c3RlciBvcGVyYW5kID0gdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwobG9jYWwpOworICAgICAgICBl
bWl0R2V0VmlydHVhbFJlZ2lzdGVyKG9wZXJhbmQub2Zmc2V0KCksIHJlZ1QwKTsKKyAgICAgICAg
c3RvcmU2NChyZWdUMCwgQWRkcmVzcyhyZWdUMSwgR2VuZXJhdG9yRnJhbWU6OmxvY2FsT2Zmc2V0
KGdlbmVyYXRvckxvY2FsSW5kZXgpKSk7CisgICAgICAgIGdlbmVyYXRvckxvY2FsSW5kZXgrKzsK
KyAgICB9KTsKK30KKwordm9pZCBKSVQ6OmVtaXRfb3BfcmVzdW1lKEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgaW50IGZyYW1lID0gY3VycmVudEluc3RydWN0aW9uWzFd
LnUub3BlcmFuZDsKKyAgICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSBjdXJyZW50
SW5zdHJ1Y3Rpb25bMl0udS51bnNpZ25lZFZhbHVlOworICAgIGNvbnN0IEZhc3RCaXRWZWN0b3Im
IGxpdmVuZXNzID0gbV9jb2RlQmxvY2stPmxpdmVDYWxsZWVMb2NhbHNBdFlpZWxkKGxpdmVDYWxs
ZWVMb2NhbHNJbmRleCk7CisKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGZyYW1lLCByZWdU
MSk7CisKKyAgICB1bnNpZ25lZCBnZW5lcmF0b3JMb2NhbEluZGV4ID0gMDsKKyAgICBsaXZlbmVz
cy5mb3JFYWNoU2V0Qml0KFsmXShzaXplX3QgbG9jYWwpIHsKKyAgICAgICAgVmlydHVhbFJlZ2lz
dGVyIG9wZXJhbmQgPSB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChsb2NhbCk7CisgICAgICAgIGxv
YWQ2NChBZGRyZXNzKHJlZ1QxLCBHZW5lcmF0b3JGcmFtZTo6bG9jYWxPZmZzZXQoZ2VuZXJhdG9y
TG9jYWxJbmRleCkpLCByZWdUMCk7CisgICAgICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIob3Bl
cmFuZC5vZmZzZXQoKSk7CisgICAgICAgIGdlbmVyYXRvckxvY2FsSW5kZXgrKzsKKyAgICB9KTsK
KworICAgIC8vIERlYWxsb2NhdGUgZ2VuZXJhdG9yIGZyYW1lIGxvY2Fscy4KKyAgICBzdG9yZTMy
KFRydXN0ZWRJbW0zMigwKSwgQWRkcmVzcyhyZWdUMSwgR2VuZXJhdG9yRnJhbWU6Om51bWJlck9m
U2F2ZWRDYWxsZWVMb2NhbHNPZmZzZXQoKSkpOworfQorCiAjZW5kaWYgLy8gVVNFKEpTVkFMVUU2
NCkKIAogdm9pZCBKSVQ6OmVtaXRfb3BfbG9vcF9oaW50KEluc3RydWN0aW9uKikKQEAgLTE0NTAs
MTUgKzE0OTQsOSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfcmVzdF9sZW5ndGgoSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICNlbmRpZgogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9z
YXZlKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCi17Ci0gICAgSklUU2xvd1BhdGhD
YWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9zYXZl
KTsKLSAgICBzbG93UGF0aENhbGwuY2FsbCgpOwotfQotCi12b2lkIEpJVDo6ZW1pdF9vcF9yZXN1
bWUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX25l
d19nZW5lcmF0b3JfZnJhbWUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKLSAg
ICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwg
c2xvd19wYXRoX3Jlc3VtZSk7CisgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlz
LCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9uZXdfZ2VuZXJhdG9yX2ZyYW1lKTsKICAg
ICBzbG93UGF0aENhbGwuY2FsbCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wY29kZXMzMl82NC5jcHAKaW5kZXggNjkwZTQxYzJiZjkxNDFiMTIzZGVkMjJjNWM4NmUz
YjhlNzcwZjM1OS4uZjU4MjRjNDQxOGZiOWZmZTQwODliNTRiODM0MWE0MGQ2NmZiZDk1NyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcApAQCAtMzMs
NiArMzMsNyBAQAogI2luY2x1ZGUgIkNDYWxsSGVscGVycy5oIgogI2luY2x1ZGUgIkRlYnVnZ2Vy
LmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yRnJhbWUuaCIK
ICNpbmNsdWRlICJKSVRJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgogI2luY2x1ZGUg
IkpTQ2VsbC5oIgpAQCAtMTM1NCw2ICsxMzU1LDUxIEBAIHZvaWQgSklUOjplbWl0X29wX3Byb2Zp
bGVfdHlwZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGp1bXBUb0VuZC5s
aW5rKHRoaXMpOwogfQogCit2b2lkIEpJVDo6ZW1pdF9vcF9zYXZlKEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgaW50IGZyYW1lID0gY3VycmVudEluc3RydWN0aW9uWzFd
LnUub3BlcmFuZDsKKyAgICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSBjdXJyZW50
SW5zdHJ1Y3Rpb25bMl0udS51bnNpZ25lZFZhbHVlOworICAgIGNvbnN0IEZhc3RCaXRWZWN0b3Im
IGxpdmVuZXNzID0gbV9jb2RlQmxvY2stPmxpdmVDYWxsZWVMb2NhbHNBdFlpZWxkKGxpdmVDYWxs
ZWVMb2NhbHNJbmRleCk7CisKKyAgICAvLyBBIGZyYW1lIGlzIGFsd2F5cyBhIGNlbGwuIE5vIG5l
ZWQgdG8gZmlsdGVyIG91dC4KKyAgICBlbWl0V3JpdGVCYXJyaWVyKGZyYW1lLCBVbmNvbmRpdGlv
bmFsV3JpdGVCYXJyaWVyKTsKKworICAgIGVtaXRMb2FkUGF5bG9hZChmcmFtZSwgcmVnVDIpOwor
CisgICAgLy8gQWxsb2NhdGUgZ2VuZXJhdG9yIGZyYW1lIGxvY2Fscy4KKyAgICBzdG9yZTMyKFRy
dXN0ZWRJbW0zMihsaXZlbmVzcy5iaXRDb3VudCgpKSwgQWRkcmVzcyhyZWdUMiwgR2VuZXJhdG9y
RnJhbWU6Om51bWJlck9mU2F2ZWRDYWxsZWVMb2NhbHNPZmZzZXQoKSkpOworCisgICAgdW5zaWdu
ZWQgZ2VuZXJhdG9yTG9jYWxJbmRleCA9IDA7CisgICAgbGl2ZW5lc3MuZm9yRWFjaFNldEJpdChb
Jl0oc2l6ZV90IGxvY2FsKSB7CisgICAgICAgIFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kID0gdmly
dHVhbFJlZ2lzdGVyRm9yTG9jYWwobG9jYWwpOworICAgICAgICBlbWl0R2V0VmlydHVhbFJlZ2lz
dGVyKG9wZXJhbmQub2Zmc2V0KCksIEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdUMCkpOworICAgICAg
ICBzdG9yZTMyKHJlZ1QxLCBBZGRyZXNzKHJlZ1QyLCBHZW5lcmF0b3JGcmFtZTo6bG9jYWxPZmZz
ZXQoZ2VuZXJhdG9yTG9jYWxJbmRleCkgKyBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0Jp
dHMudGFnKSkpOworICAgICAgICBzdG9yZTMyKHJlZ1QwLCBBZGRyZXNzKHJlZ1QyLCBHZW5lcmF0
b3JGcmFtZTo6bG9jYWxPZmZzZXQoZ2VuZXJhdG9yTG9jYWxJbmRleCkgKyBPQkpFQ1RfT0ZGU0VU
T0YoSlNWYWx1ZSwgdS5hc0JpdHMucGF5bG9hZCkpKTsKKyAgICAgICAgZ2VuZXJhdG9yTG9jYWxJ
bmRleCsrOworICAgIH0pOworfQorCit2b2lkIEpJVDo6ZW1pdF9vcF9yZXN1bWUoSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBpbnQgZnJhbWUgPSBjdXJyZW50SW5zdHJ1
Y3Rpb25bMV0udS5vcGVyYW5kOworICAgIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9
IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51LnVuc2lnbmVkVmFsdWU7CisgICAgY29uc3QgRmFzdEJp
dFZlY3RvciYgbGl2ZW5lc3MgPSBtX2NvZGVCbG9jay0+bGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQo
bGl2ZUNhbGxlZUxvY2Fsc0luZGV4KTsKKworICAgIGVtaXRMb2FkUGF5bG9hZChmcmFtZSwgcmVn
VDIpOworCisgICAgdW5zaWduZWQgZ2VuZXJhdG9yTG9jYWxJbmRleCA9IDA7CisgICAgbGl2ZW5l
c3MuZm9yRWFjaFNldEJpdChbJl0oc2l6ZV90IGxvY2FsKSB7CisgICAgICAgIFZpcnR1YWxSZWdp
c3RlciBvcGVyYW5kID0gdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwobG9jYWwpOworICAgICAgICBs
b2FkMzIoQWRkcmVzcyhyZWdUMiwgR2VuZXJhdG9yRnJhbWU6OmxvY2FsT2Zmc2V0KGdlbmVyYXRv
ckxvY2FsSW5kZXgpICsgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnRhZykpLCBy
ZWdUMSk7CisgICAgICAgIGxvYWQzMihBZGRyZXNzKHJlZ1QyLCBHZW5lcmF0b3JGcmFtZTo6bG9j
YWxPZmZzZXQoZ2VuZXJhdG9yTG9jYWxJbmRleCkgKyBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwg
dS5hc0JpdHMucGF5bG9hZCkpLCByZWdUMCk7CisgICAgICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0
ZXIob3BlcmFuZC5vZmZzZXQoKSwgSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKSk7CisgICAgICAg
IGdlbmVyYXRvckxvY2FsSW5kZXgrKzsKKyAgICB9KTsKKworICAgIC8vIERlYWxsb2NhdGUgZ2Vu
ZXJhdG9yIGZyYW1lIGxvY2Fscy4KKyAgICBzdG9yZTMyKFRydXN0ZWRJbW0zMigwKSwgQWRkcmVz
cyhyZWdUMiwgR2VuZXJhdG9yRnJhbWU6Om51bWJlck9mU2F2ZWRDYWxsZWVMb2NhbHNPZmZzZXQo
KSkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIFVTRShKU1ZBTFVFMzJf
NjQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNj
ZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3Bw
CmluZGV4IDEzNGFmNzlmYzc3OTg0NTY4NDVlNTA4Yjc5Nzg0M2Q5MjAxMjU4YzIuLmJlMTUyOTVm
ZjUwZWMwYWFiN2ZjZjgzNTA2NmY4NTY1NDJkZjdjMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCkBAIC0xMTEyLDE0ICsxMTEyLDggQEAg
dm9pZCBKSVQ6OmVtaXRfb3BfcHV0X3RvX2FyZ3VtZW50cyhJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQogI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCiAKICNpZiBVU0UoSlNWQUxVRTY0
KQotdm9pZCBKSVQ6OmVtaXRXcml0ZUJhcnJpZXIodW5zaWduZWQgb3duZXIsIHVuc2lnbmVkIHZh
bHVlLCBXcml0ZUJhcnJpZXJNb2RlIG1vZGUpCit2b2lkIEpJVDo6ZW1pdFdyaXRlQmFycmllcih1
bnNpZ25lZCBvd25lciwgV3JpdGVCYXJyaWVyTW9kZSBtb2RlKQogewotICAgIEp1bXAgdmFsdWVO
b3RDZWxsOwotICAgIGlmIChtb2RlID09IFNob3VsZEZpbHRlclZhbHVlIHx8IG1vZGUgPT0gU2hv
dWxkRmlsdGVyQmFzZUFuZFZhbHVlKSB7Ci0gICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIo
dmFsdWUsIHJlZ1QwKTsKLSAgICAgICAgdmFsdWVOb3RDZWxsID0gYnJhbmNoVGVzdDY0KE5vblpl
cm8sIHJlZ1QwLCB0YWdNYXNrUmVnaXN0ZXIpOwotICAgIH0KLSAgICAKICAgICBlbWl0R2V0Vmly
dHVhbFJlZ2lzdGVyKG93bmVyLCByZWdUMCk7CiAgICAgSnVtcCBvd25lck5vdENlbGw7CiAgICAg
aWYgKG1vZGUgPT0gU2hvdWxkRmlsdGVyQmFzZUFuZFZhbHVlIHx8IG1vZGUgPT0gU2hvdWxkRmls
dGVyQmFzZSkKQEAgLTExMzEsNiArMTEyNSwxOCBAQCB2b2lkIEpJVDo6ZW1pdFdyaXRlQmFycmll
cih1bnNpZ25lZCBvd25lciwgdW5zaWduZWQgdmFsdWUsIFdyaXRlQmFycmllck1vZGUgbW9kZQog
CiAgICAgaWYgKG1vZGUgPT0gU2hvdWxkRmlsdGVyQmFzZUFuZFZhbHVlIHx8IG1vZGUgPT0gU2hv
dWxkRmlsdGVyQmFzZSkKICAgICAgICAgb3duZXJOb3RDZWxsLmxpbmsodGhpcyk7Cit9CisKK3Zv
aWQgSklUOjplbWl0V3JpdGVCYXJyaWVyKHVuc2lnbmVkIG93bmVyLCB1bnNpZ25lZCB2YWx1ZSwg
V3JpdGVCYXJyaWVyTW9kZSBtb2RlKQoreworICAgIEp1bXAgdmFsdWVOb3RDZWxsOworICAgIGlm
IChtb2RlID09IFNob3VsZEZpbHRlclZhbHVlIHx8IG1vZGUgPT0gU2hvdWxkRmlsdGVyQmFzZUFu
ZFZhbHVlKSB7CisgICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIodmFsdWUsIHJlZ1QwKTsK
KyAgICAgICAgdmFsdWVOb3RDZWxsID0gYnJhbmNoVGVzdDY0KE5vblplcm8sIHJlZ1QwLCB0YWdN
YXNrUmVnaXN0ZXIpOworICAgIH0KKworICAgIGVtaXRXcml0ZUJhcnJpZXIob3duZXIsIG1vZGUp
OworCiAgICAgaWYgKG1vZGUgPT0gU2hvdWxkRmlsdGVyVmFsdWUgfHwgbW9kZSA9PSBTaG91bGRG
aWx0ZXJCYXNlQW5kVmFsdWUpIAogICAgICAgICB2YWx1ZU5vdENlbGwubGluayh0aGlzKTsKIH0K
QEAgLTExNTAsMTQgKzExNTYsOCBAQCB2b2lkIEpJVDo6ZW1pdFdyaXRlQmFycmllcihKU0NlbGwq
IG93bmVyLCB1bnNpZ25lZCB2YWx1ZSwgV3JpdGVCYXJyaWVyTW9kZSBtb2RlKQogCiAjZWxzZSAv
LyBVU0UoSlNWQUxVRTY0KQogCi12b2lkIEpJVDo6ZW1pdFdyaXRlQmFycmllcih1bnNpZ25lZCBv
d25lciwgdW5zaWduZWQgdmFsdWUsIFdyaXRlQmFycmllck1vZGUgbW9kZSkKK3ZvaWQgSklUOjpl
bWl0V3JpdGVCYXJyaWVyKHVuc2lnbmVkIG93bmVyLCBXcml0ZUJhcnJpZXJNb2RlIG1vZGUpCiB7
Ci0gICAgSnVtcCB2YWx1ZU5vdENlbGw7Ci0gICAgaWYgKG1vZGUgPT0gU2hvdWxkRmlsdGVyVmFs
dWUgfHwgbW9kZSA9PSBTaG91bGRGaWx0ZXJCYXNlQW5kVmFsdWUpIHsKLSAgICAgICAgZW1pdExv
YWRUYWcodmFsdWUsIHJlZ1QwKTsKLSAgICAgICAgdmFsdWVOb3RDZWxsID0gYnJhbmNoMzIoTm90
RXF1YWwsIHJlZ1QwLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpOwotICAgIH0KLSAg
ICAKICAgICBlbWl0TG9hZChvd25lciwgcmVnVDAsIHJlZ1QxKTsKICAgICBKdW1wIG93bmVyTm90
Q2VsbDsKICAgICBpZiAobW9kZSA9PSBTaG91bGRGaWx0ZXJCYXNlIHx8IG1vZGUgPT0gU2hvdWxk
RmlsdGVyQmFzZUFuZFZhbHVlKQpAQCAtMTE2OSw3ICsxMTY5LDIwIEBAIHZvaWQgSklUOjplbWl0
V3JpdGVCYXJyaWVyKHVuc2lnbmVkIG93bmVyLCB1bnNpZ25lZCB2YWx1ZSwgV3JpdGVCYXJyaWVy
TW9kZSBtb2RlCiAKICAgICBpZiAobW9kZSA9PSBTaG91bGRGaWx0ZXJCYXNlIHx8IG1vZGUgPT0g
U2hvdWxkRmlsdGVyQmFzZUFuZFZhbHVlKQogICAgICAgICBvd25lck5vdENlbGwubGluayh0aGlz
KTsKLSAgICBpZiAobW9kZSA9PSBTaG91bGRGaWx0ZXJWYWx1ZSB8fCBtb2RlID09IFNob3VsZEZp
bHRlckJhc2VBbmRWYWx1ZSkgCit9CisKKwordm9pZCBKSVQ6OmVtaXRXcml0ZUJhcnJpZXIodW5z
aWduZWQgb3duZXIsIHVuc2lnbmVkIHZhbHVlLCBXcml0ZUJhcnJpZXJNb2RlIG1vZGUpCit7Cisg
ICAgSnVtcCB2YWx1ZU5vdENlbGw7CisgICAgaWYgKG1vZGUgPT0gU2hvdWxkRmlsdGVyVmFsdWUg
fHwgbW9kZSA9PSBTaG91bGRGaWx0ZXJCYXNlQW5kVmFsdWUpIHsKKyAgICAgICAgZW1pdExvYWRU
YWcodmFsdWUsIHJlZ1QwKTsKKyAgICAgICAgdmFsdWVOb3RDZWxsID0gYnJhbmNoMzIoTm90RXF1
YWwsIHJlZ1QwLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpOworICAgIH0KKworICAg
IGVtaXRXcml0ZUJhcnJpZXIob3duZXIsIG1vZGUpOworCisgICAgaWYgKG1vZGUgPT0gU2hvdWxk
RmlsdGVyVmFsdWUgfHwgbW9kZSA9PSBTaG91bGRGaWx0ZXJCYXNlQW5kVmFsdWUpCiAgICAgICAg
IHZhbHVlTm90Q2VsbC5saW5rKHRoaXMpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCmluZGV4IDU3ZDI5YzgxNTQw
ZmQwNGI3ZDI5NjM1ZDRmYjQzNjEyNWIyMzhjMTQuLjExMzZjZDI5ZTgxMzFjZTQ4MDFlOGIwY2Vi
NjM0ZmQ1NGE4NDY0ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludE9mZnNldHNFeHRyYWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAi
RGlyZWN0QXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAiRXhl
Y3V0YWJsZS5oIgorI2luY2x1ZGUgIkdlbmVyYXRvckZyYW1lLmgiCiAjaW5jbHVkZSAiSGVhcC5o
IgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNt
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCmlu
ZGV4IDI5MGMzYzQ3M2MxODBmZDQyNTMyMTIzMzJjZmI5OGNlNjQzYzcxMTEuLjIwMGQ4MTljZDM2
NjE4ODQ2MzU3MmRkNGY3NzdmMjViNjllNDVkMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KQEAgLTEyNDgsNiArMTI0OCwx
MiBAQCBfbGxpbnRfb3BfbmV3X3JlZ2V4cDoKICAgICBkaXNwYXRjaCgzKQogCiAKK19sbGludF9v
cF9uZXdfZ2VuZXJhdG9yX2ZyYW1lOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsU2xv
d1BhdGgoX3Nsb3dfcGF0aF9uZXdfZ2VuZXJhdG9yX2ZyYW1lKQorICAgIGRpc3BhdGNoKDMpCisK
KwogX2xsaW50X29wX2xlc3M6CiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGNhbGxTbG93UGF0
aChfc2xvd19wYXRoX2xlc3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1BhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAK
aW5kZXggYTc0YjI5YWJjZjZkOTc5YmI4NjYyZjIxNTc4YjAwZWQzMTAyOGVhNi4uZmEyZDljMzhk
NTY4ZDkwOGI3MTQ3Yzc2YWVhYmJmZTQyMjA1ODM5OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvUGFyc2VyLmNwcApAQCAtMjU3LDcgKzI1Nyw3IEBACiAgICAgaWYgKG1fbGV4ZXItPmlz
UmVwYXJzaW5nRnVuY3Rpb24oKSkgewogICAgICAgICBQYXJzZXJGdW5jdGlvbkluZm88QVNUQnVp
bGRlcj4gZnVuY3Rpb25JbmZvOwogICAgICAgICBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNl
TW9kZTo6R2VuZXJhdG9yQm9keU1vZGUpCi0gICAgICAgICAgICBtX3BhcmFtZXRlcnMgPSBjcmVh
dGVHZW5lcmF0b3JQYXJhbWV0ZXJzKGNvbnRleHQpOworICAgICAgICAgICAgbV9wYXJhbWV0ZXJz
ID0gY3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhjb250ZXh0LCBmdW5jdGlvbkluZm8ucGFyYW1l
dGVyQ291bnQpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBtX3BhcmFtZXRlcnMgPSBwYXJz
ZUZ1bmN0aW9uUGFyYW1ldGVycyhjb250ZXh0LCBwYXJzZU1vZGUsIGZ1bmN0aW9uSW5mbyk7CiAK
QEAgLTUwMSwxMCArNTAxLDkgQEAKIAogICAgIFBhcnNlckZ1bmN0aW9uSW5mbzxUcmVlQnVpbGRl
cj4gaW5mbzsKICAgICBpbmZvLm5hbWUgPSAmbV92bS0+cHJvcGVydHlOYW1lcy0+bnVsbElkZW50
aWZpZXI7Ci0gICAgY3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhjb250ZXh0KTsKKyAgICBjcmVh
dGVHZW5lcmF0b3JQYXJhbWV0ZXJzKGNvbnRleHQsIGluZm8ucGFyYW1ldGVyQ291bnQpOwogICAg
IGluZm8uc3RhcnRPZmZzZXQgPSBwYXJhbWV0ZXJzU3RhcnQ7CiAgICAgaW5mby5zdGFydExpbmUg
PSB0b2tlbkxpbmUoKTsKLSAgICBpbmZvLnBhcmFtZXRlckNvdW50ID0gNDsgLy8gZ2VuZXJhdG9y
LCBzdGF0ZSwgdmFsdWUsIHJlc3VtZSBtb2RlCiAKICAgICB7CiAgICAgICAgIEF1dG9Qb3BTY29w
ZVJlZiBnZW5lcmF0b3JCb2R5U2NvcGUodGhpcywgcHVzaFNjb3BlKCkpOwpAQCAtMTg4OCwzMiAr
MTg4NywzMCBAQCBzdGF0aWMgY29uc3QgY2hhciogc3RyaW5nRm9yRnVuY3Rpb25Nb2RlKFNvdXJj
ZVBhcnNlTW9kZSBtb2RlKQogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgotdGVt
cGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6Rm9ybWFsUGFy
YW1ldGVyTGlzdCBQYXJzZXI8TGV4ZXJUeXBlPjo6Y3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhU
cmVlQnVpbGRlciYgY29udGV4dCkKK3RlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gdHlwZW5h
bWUgVHJlZUJ1aWxkZXI6OkZvcm1hbFBhcmFtZXRlckxpc3QgUGFyc2VyPExleGVyVHlwZT46OmNy
ZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMoVHJlZUJ1aWxkZXImIGNvbnRleHQsIHVuc2lnbmVkJiBw
YXJhbWV0ZXJDb3VudCkKIHsKICAgICBhdXRvIHBhcmFtZXRlcnMgPSBjb250ZXh0LmNyZWF0ZUZv
cm1hbFBhcmFtZXRlckxpc3QoKTsKIAogICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tl
bkxvY2F0aW9uKCkpOwogICAgIEpTVGV4dFBvc2l0aW9uIHBvc2l0aW9uID0gdG9rZW5TdGFydFBv
c2l0aW9uKCk7CiAKLSAgICAvLyBAZ2VuZXJhdG9yCi0gICAgZGVjbGFyZVBhcmFtZXRlcigmbV92
bS0+cHJvcGVydHlOYW1lcy0+Z2VuZXJhdG9yUHJpdmF0ZU5hbWUpOwotICAgIGF1dG8gZ2VuZXJh
dG9yID0gY29udGV4dC5jcmVhdGVCaW5kaW5nTG9jYXRpb24obG9jYXRpb24sIG1fdm0tPnByb3Bl
cnR5TmFtZXMtPmdlbmVyYXRvclByaXZhdGVOYW1lLCBwb3NpdGlvbiwgcG9zaXRpb24sIEFzc2ln
bm1lbnRDb250ZXh0OjpEZWNsYXJhdGlvblN0YXRlbWVudCk7Ci0gICAgY29udGV4dC5hcHBlbmRQ
YXJhbWV0ZXIocGFyYW1ldGVycywgZ2VuZXJhdG9yLCAwKTsKKyAgICBhdXRvIGFkZFBhcmFtZXRl
ciA9IFsmXShjb25zdCBJZGVudGlmaWVyJiBuYW1lKSB7CisgICAgICAgIGRlY2xhcmVQYXJhbWV0
ZXIoJm5hbWUpOworICAgICAgICBhdXRvIGJpbmRpbmcgPSBjb250ZXh0LmNyZWF0ZUJpbmRpbmdM
b2NhdGlvbihsb2NhdGlvbiwgbmFtZSwgcG9zaXRpb24sIHBvc2l0aW9uLCBBc3NpZ25tZW50Q29u
dGV4dDo6RGVjbGFyYXRpb25TdGF0ZW1lbnQpOworICAgICAgICBjb250ZXh0LmFwcGVuZFBhcmFt
ZXRlcihwYXJhbWV0ZXJzLCBiaW5kaW5nLCAwKTsKKyAgICAgICAgKytwYXJhbWV0ZXJDb3VudDsK
KyAgICB9OwogCisgICAgLy8gQGdlbmVyYXRvcgorICAgIGFkZFBhcmFtZXRlcihtX3ZtLT5wcm9w
ZXJ0eU5hbWVzLT5nZW5lcmF0b3JQcml2YXRlTmFtZSk7CiAgICAgLy8gQGdlbmVyYXRvclN0YXRl
Ci0gICAgZGVjbGFyZVBhcmFtZXRlcigmbV92bS0+cHJvcGVydHlOYW1lcy0+Z2VuZXJhdG9yU3Rh
dGVQcml2YXRlTmFtZSk7Ci0gICAgYXV0byBnZW5lcmF0b3JTdGF0ZSA9IGNvbnRleHQuY3JlYXRl
QmluZGluZ0xvY2F0aW9uKGxvY2F0aW9uLCBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5nZW5lcmF0b3JT
dGF0ZVByaXZhdGVOYW1lLCBwb3NpdGlvbiwgcG9zaXRpb24sIEFzc2lnbm1lbnRDb250ZXh0OjpE
ZWNsYXJhdGlvblN0YXRlbWVudCk7Ci0gICAgY29udGV4dC5hcHBlbmRQYXJhbWV0ZXIocGFyYW1l
dGVycywgZ2VuZXJhdG9yU3RhdGUsIDApOwotCisgICAgYWRkUGFyYW1ldGVyKG1fdm0tPnByb3Bl
cnR5TmFtZXMtPmdlbmVyYXRvclN0YXRlUHJpdmF0ZU5hbWUpOwogICAgIC8vIEBnZW5lcmF0b3JW
YWx1ZQotICAgIGRlY2xhcmVQYXJhbWV0ZXIoJm1fdm0tPnByb3BlcnR5TmFtZXMtPmdlbmVyYXRv
clZhbHVlUHJpdmF0ZU5hbWUpOwotICAgIGF1dG8gZ2VuZXJhdG9yVmFsdWUgPSBjb250ZXh0LmNy
ZWF0ZUJpbmRpbmdMb2NhdGlvbihsb2NhdGlvbiwgbV92bS0+cHJvcGVydHlOYW1lcy0+Z2VuZXJh
dG9yVmFsdWVQcml2YXRlTmFtZSwgcG9zaXRpb24sIHBvc2l0aW9uLCBBc3NpZ25tZW50Q29udGV4
dDo6RGVjbGFyYXRpb25TdGF0ZW1lbnQpOwotICAgIGNvbnRleHQuYXBwZW5kUGFyYW1ldGVyKHBh
cmFtZXRlcnMsIGdlbmVyYXRvclZhbHVlLCAwKTsKLQorICAgIGFkZFBhcmFtZXRlcihtX3ZtLT5w
cm9wZXJ0eU5hbWVzLT5nZW5lcmF0b3JWYWx1ZVByaXZhdGVOYW1lKTsKICAgICAvLyBAZ2VuZXJh
dG9yUmVzdW1lTW9kZQotICAgIGRlY2xhcmVQYXJhbWV0ZXIoJm1fdm0tPnByb3BlcnR5TmFtZXMt
PmdlbmVyYXRvclJlc3VtZU1vZGVQcml2YXRlTmFtZSk7Ci0gICAgYXV0byBnZW5lcmF0b3JSZXN1
bWVNb2RlID0gY29udGV4dC5jcmVhdGVCaW5kaW5nTG9jYXRpb24obG9jYXRpb24sIG1fdm0tPnBy
b3BlcnR5TmFtZXMtPmdlbmVyYXRvclJlc3VtZU1vZGVQcml2YXRlTmFtZSwgcG9zaXRpb24sIHBv
c2l0aW9uLCBBc3NpZ25tZW50Q29udGV4dDo6RGVjbGFyYXRpb25TdGF0ZW1lbnQpOwotICAgIGNv
bnRleHQuYXBwZW5kUGFyYW1ldGVyKHBhcmFtZXRlcnMsIGdlbmVyYXRvclJlc3VtZU1vZGUsIDAp
OworICAgIGFkZFBhcmFtZXRlcihtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5nZW5lcmF0b3JSZXN1bWVN
b2RlUHJpdmF0ZU5hbWUpOworICAgIC8vIEBnZW5lcmF0b3JGcmFtZQorICAgIGFkZFBhcmFtZXRl
cihtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5nZW5lcmF0b3JGcmFtZVByaXZhdGVOYW1lKTsKIAogICAg
IHJldHVybiBwYXJhbWV0ZXJzOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9QYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgK
aW5kZXggZDVhYTBjY2IzNjcwODBiZjgxMWFmOWQ1ZWRiMDU3ZjFkZDZiNjVlNC4uMGEzNDhjZTM1
ZGQwYTY0Mzc4OTc1OThkYmI5YzQxZTlhOWQ4YmJkNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1BhcnNlci5oCkBAIC0xNDM4LDcgKzE0MzgsNyBAQCBjbGFzcyBQYXJzZXIgewogICAgIEFM
V0FZU19JTkxJTkUgYm9vbCBpc0Fycm93RnVuY3Rpb25QYXJhbWV0ZXJzKCk7CiAgICAgCiAgICAg
dGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyLCBjbGFzcyBGdW5jdGlvbkluZm9UeXBlPiBORVZF
Ul9JTkxJTkUgdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkZvcm1hbFBhcmFtZXRlckxpc3QgcGFyc2VG
dW5jdGlvblBhcmFtZXRlcnMoVHJlZUJ1aWxkZXImLCBTb3VyY2VQYXJzZU1vZGUsIEZ1bmN0aW9u
SW5mb1R5cGUmKTsKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElO
RSB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6Rm9ybWFsUGFyYW1ldGVyTGlzdCBjcmVhdGVHZW5lcmF0
b3JQYXJhbWV0ZXJzKFRyZWVCdWlsZGVyJik7CisgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWls
ZGVyPiBORVZFUl9JTkxJTkUgdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkZvcm1hbFBhcmFtZXRlckxp
c3QgY3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhUcmVlQnVpbGRlciYsIHVuc2lnbmVkJiBwYXJh
bWV0ZXJDb3VudCk7CiAKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lO
TElORSBUcmVlQ2xhc3NFeHByZXNzaW9uIHBhcnNlQ2xhc3MoVHJlZUJ1aWxkZXImLCBGdW5jdGlv
blJlcXVpcmVtZW50cywgUGFyc2VyQ2xhc3NJbmZvPFRyZWVCdWlsZGVyPiYpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAppbmRleCBh
ZDgzMjdhMTg2MTYxNjllOTJlMDc3ZmY5NTI4OTI3YWQ0ZDNiMDVmLi5hODY5YzcwZTc0M2IzYTc1
MjMzN2YzZjZjNDc3NThjZTlhZjZiNzA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKQEAgLTcxNSwxOCArNzE1LDcgQEAgc3RhdGlj
IHZvaWQgdXBkYXRlUmVzdWx0UHJvZmlsZUZvckJpbmFyeUFyaXRoT3AoRXhlY1N0YXRlKiwgSW5z
dHJ1Y3Rpb24qLCBKU1ZhbHUKICAgICAvLyBPbmx5IHNhdmUgdmFyaWFibGVzIGFuZCB0ZW1wb3Jh
cnkgcmVnaXN0ZXJzLiBUaGUgc2NvcGUgcmVnaXN0ZXJzIGFyZSBpbmNsdWRlZCBpbiB0aGVtLgog
ICAgIC8vIEJ1dCBwYXJhbWV0ZXJzIGFyZSBub3QgaW5jbHVkZWQuIEJlY2F1c2UgdGhlIGdlbmVy
YXRvciBpbXBsZW1lbnRhdGlvbiByZXBsYWNlcyB0aGUgdmFsdWVzIG9mIHBhcmFtZXRlcnMgb24g
ZWFjaCBnZW5lcmF0b3IubmV4dCgpIGNhbGwuCiAgICAgQkVHSU4oKTsKLSAgICBKU1ZhbHVlIGdl
bmVyYXRvciA9IE9QKDEpLmpzVmFsdWUoKTsKLSAgICBHZW5lcmF0b3JGcmFtZSogZnJhbWUgPSBu
dWxscHRyOwotICAgIEpTVmFsdWUgdmFsdWUgPSBnZW5lcmF0b3IuZ2V0KGV4ZWMsIGV4ZWMtPnBy
b3BlcnR5TmFtZXMoKS5nZW5lcmF0b3JGcmFtZVByaXZhdGVOYW1lKTsKLSAgICBpZiAoIXZhbHVl
LmlzTnVsbCgpKQotICAgICAgICBmcmFtZSA9IGpzQ2FzdDxHZW5lcmF0b3JGcmFtZSo+KHZhbHVl
KTsKLSAgICBlbHNlIHsKLSAgICAgICAgLy8gRklYTUU6IE9uY2UgSlNHZW5lcmF0b3Igc3BlY2lh
bGl6ZWQgb2JqZWN0IGlzIGludHJvZHVjZWQsIHRoaXMgR2VuZXJhdG9yRnJhbWUgc2hvdWxkIGJl
IGVtYmVkZWQgaW50byBpdCB0byBhdm9pZCBhbGxvY2F0aW9ucy4KLSAgICAgICAgLy8gaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTU0NQotICAgICAgICBmcmFtZSA9
IEdlbmVyYXRvckZyYW1lOjpjcmVhdGUoZXhlYy0+dm0oKSwgIGV4ZWMtPmNvZGVCbG9jaygpLT5u
dW1DYWxsZWVMb2NhbHMoKSk7Ci0gICAgICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGdlbmVyYXRv
ciwgdHJ1ZSwgUHV0UHJvcGVydHlTbG90OjpQdXRCeUlkKTsKLSAgICAgICAgYXNPYmplY3QoZ2Vu
ZXJhdG9yKS0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPnB1dChhc09iamVjdChnZW5lcmF0b3Ip
LCBleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuZ2VuZXJhdG9yRnJhbWVQcml2YXRlTmFtZSwg
ZnJhbWUsIHNsb3QpOwotICAgIH0KKyAgICBHZW5lcmF0b3JGcmFtZSogZnJhbWUgPSBqc0Nhc3Q8
R2VuZXJhdG9yRnJhbWUqPihPUCgxKS5qc1ZhbHVlKCkpOwogICAgIHVuc2lnbmVkIGxpdmVDYWxs
ZWVMb2NhbHNJbmRleCA9IHBjWzJdLnUudW5zaWduZWRWYWx1ZTsKICAgICBmcmFtZS0+c2F2ZShl
eGVjLCBleGVjLT5jb2RlQmxvY2soKS0+bGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQobGl2ZUNhbGxl
ZUxvY2Fsc0luZGV4KSk7CiAgICAgRU5EKCk7CkBAIC03MzUsOCArNzI0LDcgQEAgc3RhdGljIHZv
aWQgdXBkYXRlUmVzdWx0UHJvZmlsZUZvckJpbmFyeUFyaXRoT3AoRXhlY1N0YXRlKiwgSW5zdHJ1
Y3Rpb24qLCBKU1ZhbHUKIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9yZXN1bWUpCiB7CiAgICAg
QkVHSU4oKTsKLSAgICBKU1ZhbHVlIGdlbmVyYXRvciA9IE9QKDEpLmpzVmFsdWUoKTsKLSAgICBH
ZW5lcmF0b3JGcmFtZSogZnJhbWUgPSBqc0Nhc3Q8R2VuZXJhdG9yRnJhbWUqPihnZW5lcmF0b3Iu
Z2V0KGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5nZW5lcmF0b3JGcmFtZVByaXZhdGVOYW1l
KSk7CisgICAgR2VuZXJhdG9yRnJhbWUqIGZyYW1lID0ganNDYXN0PEdlbmVyYXRvckZyYW1lKj4o
T1AoMSkuanNWYWx1ZSgpKTsKICAgICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSBw
Y1syXS51LnVuc2lnbmVkVmFsdWU7CiAgICAgZnJhbWUtPnJlc3VtZShleGVjLCBleGVjLT5jb2Rl
QmxvY2soKS0+bGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQobGl2ZUNhbGxlZUxvY2Fsc0luZGV4KSk7
CiAgICAgRU5EKCk7CkBAIC04MTcsNCArODA1LDEyIEBAIHN0YXRpYyB2b2lkIHVwZGF0ZVJlc3Vs
dFByb2ZpbGVGb3JCaW5hcnlBcml0aE9wKEV4ZWNTdGF0ZSosIEluc3RydWN0aW9uKiwgSlNWYWx1
CiAgICAgRU5EKCk7CiB9CiAKK1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9uZXdfZ2VuZXJhdG9y
X2ZyYW1lKQoreworICAgIEJFR0lOKCk7CisgICAgdW5zaWduZWQgZ2VuZXJhdG9yTG9jYWxzU2l6
ZSA9IHBjWzJdLnUudW5zaWduZWRWYWx1ZTsKKyAgICBSRVRVUk4oR2VuZXJhdG9yRnJhbWU6OmNy
ZWF0ZShleGVjLCBnZW5lcmF0b3JMb2NhbHNTaXplKSk7Cit9CisKKwogfSAvLyBuYW1lc3BhY2Ug
SlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93
UGF0aHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5o
CmluZGV4IDQzYTg4YzQ2N2QxODU3ZTM2NzIyMDUzMDkyNzNmYTk1NDA1ZTAwYTAuLjAxODVkZTcy
ODVjOTJiMGNiYjM1OTE0NWEzODhjOThkZDM4YzI0NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCkBAIC0yNDgsNiArMjQ4LDcgQEAgaW5s
aW5lIHZvaWQgdHJ5Q2FjaGVHZXRGcm9tU2NvcGVHbG9iYWwoCiBTTE9XX1BBVEhfSElEREVOX0RF
Q0woc2xvd19wYXRoX3B1c2hfd2l0aF9zY29wZSk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xv
d19wYXRoX3Jlc29sdmVfc2NvcGUpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9j
b3B5X3Jlc3QpOworU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9uZXdfZ2VuZXJhdG9y
X2ZyYW1lKTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZyYW1lLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0dlbmVyYXRvckZyYW1lLmNwcAppbmRleCBlZjZlYTdhMTAwMjU4YzNlY2Uw
NGRhYWI0M2JkYWE4NTFlYzhmNzE1Li4wZGNiNTE0YTQyMDk5OWZiZjU5ZGYxOGJkZGY1N2MzMGFk
YTc5ZTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0
b3JGcmFtZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9y
RnJhbWUuY3BwCkBAIC0zMCwxNSArMzAsMTYgQEAKICNpbmNsdWRlICJIZWFwSXRlcmF0aW9uU2Nv
cGUuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ2VsbElu
bGluZXMuaCIKKyNpbmNsdWRlICJKU09iamVjdElubGluZXMuaCIKICNpbmNsdWRlICJTbG90Vmlz
aXRvcklubGluZXMuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCiAKIG5hbWVzcGFj
ZSBKU0MgewogCi1jb25zdCBDbGFzc0luZm8gR2VuZXJhdG9yRnJhbWU6OnNfaW5mbyA9IHsgIkdl
bmVyYXRvckZyYW1lIiwgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShHZW5l
cmF0b3JGcmFtZSkgfTsKK2NvbnN0IENsYXNzSW5mbyBHZW5lcmF0b3JGcmFtZTo6c19pbmZvID0g
eyAiR2VuZXJhdG9yRnJhbWUiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBDUkVBVEVfTUVUSE9E
X1RBQkxFKEdlbmVyYXRvckZyYW1lKSB9OwogCi1HZW5lcmF0b3JGcmFtZTo6R2VuZXJhdG9yRnJh
bWUoVk0mIHZtLCBzaXplX3QgbnVtYmVyT2ZDYWxsZWVMb2NhbHMpCi0gICAgOiBCYXNlKHZtLCB2
bS5nZW5lcmF0b3JGcmFtZVN0cnVjdHVyZS5nZXQoKSkKK0dlbmVyYXRvckZyYW1lOjpHZW5lcmF0
b3JGcmFtZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCB1aW50MzJfdCBudW1iZXJPZkNh
bGxlZUxvY2FscykKKyAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkKICAgICAsIG1fbnVtYmVyT2ZD
YWxsZWVMb2NhbHMobnVtYmVyT2ZDYWxsZWVMb2NhbHMpCiB7CiB9CkBAIC00NiwzMyArNDcsNDIg
QEAKIHZvaWQgR2VuZXJhdG9yRnJhbWU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKIHsKICAgICBC
YXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgSlNWYWx1ZSBlbXB0eVZhbHVlOwogICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9udW1iZXJPZkNhbGxlZUxvY2FsczsgKytpKQotICAgICAg
ICBsb2NhbEF0KGkpLmNsZWFyKCk7CisgICAgICAgIGxvY2FsQXQoaSkuc2V0U3RhcnRpbmdWYWx1
ZShlbXB0eVZhbHVlKTsKIH0KIAogU3RydWN0dXJlKiBHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlU3Ry
dWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90
b3R5cGUpCiB7Ci0gICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3Qs
IHByb3RvdHlwZSwgVHlwZUluZm8oQ2VsbFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsK
KyAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBl
LCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiB9CiAKLUdl
bmVyYXRvckZyYW1lKiBHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlKFZNJiB2bSwgc2l6ZV90IG51bWJl
ck9mTG9jYWxzKQorR2VuZXJhdG9yRnJhbWUqIEdlbmVyYXRvckZyYW1lOjpjcmVhdGUoVk0mIHZt
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgc2l6ZV90IG51bWJlck9mQ2FsbGVlTG9jYWxzKQogewog
ICAgIEdlbmVyYXRvckZyYW1lKiByZXN1bHQgPQogICAgICAgICBuZXcgKAogICAgICAgICAgICAg
Tm90TnVsbCwKLSAgICAgICAgICAgIGFsbG9jYXRlQ2VsbDxHZW5lcmF0b3JGcmFtZT4odm0uaGVh
cCwgYWxsb2NhdGlvblNpemVGb3JMb2NhbHMobnVtYmVyT2ZMb2NhbHMpKSkKLSAgICAgICAgR2Vu
ZXJhdG9yRnJhbWUodm0sIG51bWJlck9mTG9jYWxzKTsKKyAgICAgICAgICAgIGFsbG9jYXRlQ2Vs
bDxHZW5lcmF0b3JGcmFtZT4odm0uaGVhcCwgYWxsb2NhdGlvblNpemVGb3JMb2NhbHMobnVtYmVy
T2ZDYWxsZWVMb2NhbHMpKSkKKyAgICAgICAgR2VuZXJhdG9yRnJhbWUodm0sIHN0cnVjdHVyZSwg
bnVtYmVyT2ZDYWxsZWVMb2NhbHMpOwogICAgIHJlc3VsdC0+ZmluaXNoQ3JlYXRpb24odm0pOwog
ICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK0dlbmVyYXRvckZyYW1lKiBHZW5lcmF0b3JGcmFtZTo6
Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgc2l6ZV90IG51bWJlck9mQ2FsbGVlTG9jYWxzKQorewor
ICAgIHJldHVybiBjcmVhdGUoZXhlYy0+dm0oKSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgp
LT5nZW5lcmF0b3JGcmFtZVN0cnVjdHVyZSgpLCBudW1iZXJPZkNhbGxlZUxvY2Fscyk7Cit9CisK
IHZvaWQgR2VuZXJhdG9yRnJhbWU6OnNhdmUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBGYXN0Qml0
VmVjdG9yJiBsaXZlQ2FsbGVlTG9jYWxzKQogeworICAgIC8vIEFsbG9jYXRlIHRoZSBnZW5lcmF0
b3IgbG9jYWwgc3BhY2UgZmlyc3QuCisgICAgbV9udW1iZXJPZlNhdmVkQ2FsbGVlTG9jYWxzID0g
bGl2ZUNhbGxlZUxvY2Fscy5iaXRDb3VudCgpOworCiAgICAgLy8gT25seSBzYXZlIGNhbGxlZSBs
b2NhbHMuCiAgICAgLy8gRXZlcnkgdGltZSBhIGdlbmVyYXRvciBpcyBjYWxsZWQgKG9yIHJlc3Vt
ZWQpLCBwYXJhbWV0ZXJzIHNob3VsZCBiZSByZXBsYWNlZC4KLSAgICBBU1NFUlQobGl2ZUNhbGxl
ZUxvY2Fscy5udW1CaXRzKCkgPD0gbV9udW1iZXJPZkNhbGxlZUxvY2Fscyk7CisgICAgdW5zaWdu
ZWQgZ2VuZXJhdG9yTG9jYWxJbmRleCA9IDA7CiAgICAgbGl2ZUNhbGxlZUxvY2Fscy5mb3JFYWNo
U2V0Qml0KFsmXShzaXplX3QgaW5kZXgpIHsKLSAgICAgICAgbG9jYWxBdChpbmRleCkuc2V0KGV4
ZWMtPnZtKCksIHRoaXMsIGV4ZWMtPnVuY2hlY2tlZFIodmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwo
aW5kZXgpKS5qc1ZhbHVlKCkpOworICAgICAgICBsb2NhbEF0KGdlbmVyYXRvckxvY2FsSW5kZXgr
Kykuc2V0KGV4ZWMtPnZtKCksIHRoaXMsIGV4ZWMtPnVuY2hlY2tlZFIodmlydHVhbFJlZ2lzdGVy
Rm9yTG9jYWwoaW5kZXgpKS5qc1ZhbHVlKCkpOwogICAgIH0pOwogfQogCkBAIC04MCwxMCArOTAs
MTEgQEAgdm9pZCBHZW5lcmF0b3JGcmFtZTo6cmVzdW1lKEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
RmFzdEJpdFZlY3RvciYgbGl2ZUNhbGxlZUxvY2EKIHsKICAgICAvLyBPbmx5IHJlc3VtZSBjYWxs
ZWUgbG9jYWxzLgogICAgIC8vIEV2ZXJ5IHRpbWUgYSBnZW5lcmF0b3IgaXMgY2FsbGVkIChvciBy
ZXN1bWVkKSwgcGFyYW1ldGVycyBzaG91bGQgYmUgcmVwbGFjZWQuCisgICAgdW5zaWduZWQgZ2Vu
ZXJhdG9yTG9jYWxJbmRleCA9IDA7CiAgICAgbGl2ZUNhbGxlZUxvY2Fscy5mb3JFYWNoU2V0Qml0
KFsmXShzaXplX3QgaW5kZXgpIHsKLSAgICAgICAgZXhlYy0+dW5jaGVja2VkUih2aXJ0dWFsUmVn
aXN0ZXJGb3JMb2NhbChpbmRleCkpID0gbG9jYWxBdChpbmRleCkuZ2V0KCk7Ci0gICAgICAgIGxv
Y2FsQXQoaW5kZXgpLmNsZWFyKCk7CisgICAgICAgIGV4ZWMtPnVuY2hlY2tlZFIodmlydHVhbFJl
Z2lzdGVyRm9yTG9jYWwoaW5kZXgpKSA9IGxvY2FsQXQoZ2VuZXJhdG9yTG9jYWxJbmRleCsrKS5n
ZXQoKTsKICAgICB9KTsKKyAgICBtX251bWJlck9mU2F2ZWRDYWxsZWVMb2NhbHMgPSAwOwogfQog
CiB2b2lkIEdlbmVyYXRvckZyYW1lOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZp
c2l0b3ImIHZpc2l0b3IpCkBAIC05MSw3ICsxMDIsMTIgQEAgdm9pZCBHZW5lcmF0b3JGcmFtZTo6
dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIEdl
bmVyYXRvckZyYW1lKiB0aGlzT2JqZWN0ID0ganNDYXN0PEdlbmVyYXRvckZyYW1lKj4oY2VsbCk7
CiAgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKICAgICAvLyBT
aW5jZSBvbmx5IHRydWUgY2VsbCBwb2ludGVycyBhcmUgc3RvcmVkIGFzIGEgY2VsbCwgd2UgY2Fu
IHNhZmVseSBtYXJrIHRoZW0uCi0gICAgdmlzaXRvci5hcHBlbmRWYWx1ZXModGhpc09iamVjdC0+
bG9jYWxzKCksIHRoaXNPYmplY3QtPm1fbnVtYmVyT2ZDYWxsZWVMb2NhbHMpOworICAgIHZpc2l0
b3IuYXBwZW5kVmFsdWVzKHRoaXNPYmplY3QtPmxvY2FscygpLCB0aGlzT2JqZWN0LT5tX251bWJl
ck9mU2F2ZWRDYWxsZWVMb2NhbHMpOworICAgIC8vIENsZWFyIG5vdCB1c2VkIGNhbGxlZSBsb2Nh
bHMgd2hlbiBtYXJraW5nLgorICAgIC8vIFRoaXMgZW5zdXJlcyB0aGF0LCAiaWYgYSBnaXZlbiBs
b2NhbCBoYXMgYSB2YWx1ZSwgdGhpcyB2YWx1ZSBpcyBjb3JyZWN0bHkgbWFya2VkIGluIHRoZSBw
cmV2aW91cyBtYXJraW5nIHBoYXNlIi4KKyAgICBzaXplX3QgdW51c2VkTG9jYWxzQ291bnQgPSB0
aGlzT2JqZWN0LT5tX251bWJlck9mQ2FsbGVlTG9jYWxzIC0gdGhpc09iamVjdC0+bV9udW1iZXJP
ZlNhdmVkQ2FsbGVlTG9jYWxzOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdW51c2VkTG9j
YWxzQ291bnQ7ICsraSkKKyAgICAgICAgdGhpc09iamVjdC0+bG9jYWxBdCh0aGlzT2JqZWN0LT5t
X251bWJlck9mU2F2ZWRDYWxsZWVMb2NhbHMgKyBpKS5jbGVhcigpOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVy
YXRvckZyYW1lLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGcmFt
ZS5oCmluZGV4IDNkNTQ1YjE0N2RkNGFiZmIyYmJiOWI1YTcxOTRlOGY3NDg0MWM0OWEuLmNmMWRi
N2EyYmVlNjBkYTI5NDY0ZWM0MTdhMGM1ZmI4YzFmMGFlOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZyYW1lLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJhbWUuaApAQCAtMjcsMTEgKzI3LDE0IEBACiAj
ZGVmaW5lIEdlbmVyYXRvckZyYW1lX2gKIAogI2luY2x1ZGUgIkpTQ2VsbC5oIgorI2luY2x1ZGUg
IkpTT2JqZWN0LmgiCiAjaW5jbHVkZSA8d3RmL0Zhc3RCaXRWZWN0b3IuaD4KIAogbmFtZXNwYWNl
IEpTQyB7CiAKLWNsYXNzIEdlbmVyYXRvckZyYW1lIDogcHVibGljIEpTQ2VsbCB7CitjbGFzcyBM
TEludE9mZnNldHNFeHRyYWN0b3I7CisKK2NsYXNzIEdlbmVyYXRvckZyYW1lIDogcHVibGljIEpT
Tm9uRmluYWxPYmplY3QgewogICAgIGZyaWVuZCBjbGFzcyBKSVQ7CiAjaWYgRU5BQkxFKERGR19K
SVQpCiAgICAgZnJpZW5kIGNsYXNzIERGRzo6U3BlY3VsYXRpdmVKSVQ7CkBAIC0zOSwxMiArNDIs
MTIgQEAgY2xhc3MgR2VuZXJhdG9yRnJhbWUgOiBwdWJsaWMgSlNDZWxsIHsKICNlbmRpZgogICAg
IGZyaWVuZCBjbGFzcyBWTTsKIHB1YmxpYzoKLSAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOwotICAg
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IFN0cnVjdHVyZUlzSW1tb3J0
YWwgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKKyAgICB0eXBlZGVmIEpTTm9uRmluYWxPYmplY3Qg
QmFzZTsKIAogICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CiAKLSAgICBzdGF0aWMgR2VuZXJhdG9y
RnJhbWUqIGNyZWF0ZShWTSYsIHNpemVfdCBudW1iZXJPZkNhbGxlZUxvY2Fscyk7CisgICAgc3Rh
dGljIEdlbmVyYXRvckZyYW1lKiBjcmVhdGUoRXhlY1N0YXRlKiwgc2l6ZV90IG51bWJlck9mQ2Fs
bGVlTG9jYWxzKTsKKyAgICBzdGF0aWMgR2VuZXJhdG9yRnJhbWUqIGNyZWF0ZShWTSYsIFN0cnVj
dHVyZSosIHNpemVfdCBudW1iZXJPZkNhbGxlZUxvY2Fscyk7CiAKICAgICBXcml0ZUJhcnJpZXJC
YXNlPFVua25vd24+KiBsb2NhbHMoKQogICAgIHsKQEAgLTUzLDcgKzU2LDYgQEAgY2xhc3MgR2Vu
ZXJhdG9yRnJhbWUgOiBwdWJsaWMgSlNDZWxsIHsKIAogICAgIFdyaXRlQmFycmllckJhc2U8VW5r
bm93bj4mIGxvY2FsQXQoc2l6ZV90IGluZGV4KQogICAgIHsKLSAgICAgICAgQVNTRVJUKGluZGV4
IDwgbV9udW1iZXJPZkNhbGxlZUxvY2Fscyk7CiAgICAgICAgIHJldHVybiBsb2NhbHMoKVtpbmRl
eF07CiAgICAgfQogCkBAIC02Miw2ICs2NCwyMSBAQCBjbGFzcyBHZW5lcmF0b3JGcmFtZSA6IHB1
YmxpYyBKU0NlbGwgewogICAgICAgICByZXR1cm4gV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mPHNp
emVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pPihzaXplb2YoR2VuZXJhdG9yRnJhbWUpKTsKICAg
ICB9CiAKKyAgICBzdGF0aWMgc2l6ZV90IGxvY2FsT2Zmc2V0KHVuc2lnbmVkIGluZGV4KQorICAg
IHsKKyAgICAgICAgcmV0dXJuIG9mZnNldE9mTG9jYWxzKCkgKyBpbmRleCAqIHNpemVvZihXcml0
ZUJhcnJpZXI8VW5rbm93bj4pOworICAgIH0KKworICAgIHN0YXRpYyBzaXplX3QgbnVtYmVyT2ZD
YWxsZWVMb2NhbHNPZmZzZXQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRP
RihHZW5lcmF0b3JGcmFtZSwgbV9udW1iZXJPZkNhbGxlZUxvY2Fscyk7CisgICAgfQorCisgICAg
c3RhdGljIHNpemVfdCBudW1iZXJPZlNhdmVkQ2FsbGVlTG9jYWxzT2Zmc2V0KCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoR2VuZXJhdG9yRnJhbWUsIG1fbnVtYmVyT2ZT
YXZlZENhbGxlZUxvY2Fscyk7CisgICAgfQorCiAgICAgc3RhdGljIHNpemVfdCBhbGxvY2F0aW9u
U2l6ZUZvckxvY2Fscyh1bnNpZ25lZCBudW1iZXJPZkxvY2FscykKICAgICB7CiAgICAgICAgIHJl
dHVybiBvZmZzZXRPZkxvY2FscygpICsgbnVtYmVyT2ZMb2NhbHMgKiBzaXplb2YoV3JpdGVCYXJy
aWVyPFVua25vd24+KTsKQEAgLTczLDE2ICs5MCwxNiBAQCBjbGFzcyBHZW5lcmF0b3JGcmFtZSA6
IHB1YmxpYyBKU0NlbGwgewogICAgIHZvaWQgcmVzdW1lKEV4ZWNTdGF0ZSosIGNvbnN0IEZhc3RC
aXRWZWN0b3ImIGxpdmVDYWxsZWVMb2NhbHMpOwogCiBwcml2YXRlOgotICAgIEdlbmVyYXRvckZy
YW1lKFZNJiwgc2l6ZV90IG51bWJlck9mQ2FsbGVlTG9jYWxzKTsKKyAgICBHZW5lcmF0b3JGcmFt
ZShWTSYsIFN0cnVjdHVyZSosIHVpbnQzMl90IG51bWJlck9mQ2FsbGVlTG9jYWxzKTsKIAotICAg
IHNpemVfdCBtX251bWJlck9mQ2FsbGVlTG9jYWxzOworICAgIHVpbnQzMl90IG1fbnVtYmVyT2ZD
YWxsZWVMb2NhbHM7CisgICAgdWludDMyX3QgbV9udW1iZXJPZlNhdmVkQ2FsbGVlTG9jYWxzIHsg
MCB9OwogCiAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIAotICAgIHZv
aWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKLQogcHJvdGVjdGVkOgogICAgIHN0YXRpYyB2b2lkIHZp
c2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKKyAgICB2b2lkIGZpbmlzaENyZWF0
aW9uKFZNJik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCAzYmQ2NzlhZmVlYTcxYjg3
MWQ5YmY3ODhlMzc4ZDAwM2ViYWI1NTI4Li45YTVjNDNkNDJjMmI3YmUyYTc4NmEwYzgzODkzMzE1
ZGU3Mzk0NGYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3QuY3BwCkBAIC01MSw2ICs1MSw3IEBACiAjaW5jbHVkZSAiRXJyb3JQcm90b3R5cGUu
aCIKICNpbmNsdWRlICJGdW5jdGlvbkNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiRnVuY3Rpb25Q
cm90b3R5cGUuaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JGcmFtZS5oIgogI2luY2x1ZGUgIkdlbmVy
YXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJHZW5lcmF0b3JGdW5jdGlvblBy
b3RvdHlwZS5oIgogI2luY2x1ZGUgIkdlbmVyYXRvclByb3RvdHlwZS5oIgpAQCAtNTUzLDYgKzU1
NCw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmluaXQoVk0mIHZtKQogI3VuZGVmIENSRUFURV9Q
Uk9UT1RZUEVfRk9SX0RFUklWRURfSVRFUkFUT1JfVFlQRQogCiAgICAgbV9wcm9wZXJ0eU5hbWVJ
dGVyYXRvclN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6OmNy
ZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9pdGVyYXRvclByb3RvdHlwZS5nZXQoKSkpOworICAg
IG1fZ2VuZXJhdG9yRnJhbWVTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBHZW5lcmF0b3JGcmFtZTo6
Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBqc051bGwoKSkpOwogICAgIG1fZ2VuZXJhdG9yUHJv
dG90eXBlLnNldCh2bSwgdGhpcywgR2VuZXJhdG9yUHJvdG90eXBlOjpjcmVhdGUodm0sIHRoaXMs
IEdlbmVyYXRvclByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2l0ZXJhdG9y
UHJvdG90eXBlLmdldCgpKSkpOwogICAgIAogICAgIC8vIENvbnN0cnVjdG9ycwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5kZXggMDBiMGYwNzgz
YzE5NDU1MzE4NzMxMDFkNjQxNGRiYTAwODliYTNhMi4uYTYyMzkzODEzNjVjMzM4OGY1ZDk4MzRh
YzNkNmI1NTc3MGQ1NzQxNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5oCkBAIC0yODMsNiArMjgzLDcgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3Qg
OiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgTGF6eVByb3BlcnR5PEpT
R2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fY2FsbGJhY2tGdW5jdGlvblN0cnVjdHVyZTsKICAg
ICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9jYWxsYmFja09iamVj
dFN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3Byb3BlcnR5TmFtZUl0
ZXJhdG9yU3RydWN0dXJlOworICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fZ2VuZXJhdG9y
RnJhbWVTdHJ1Y3R1cmU7CiAjaWYgSlNDX09CSkNfQVBJX0VOQUJMRUQKICAgICBMYXp5UHJvcGVy
dHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9vYmpjQ2FsbGJhY2tGdW5jdGlvblN0cnVj
dHVyZTsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9vYmpj
V3JhcHBlck9iamVjdFN0cnVjdHVyZTsKQEAgLTU1Miw2ICs1NTMsNyBAQCBjbGFzcyBKU0dsb2Jh
bE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBTdHJ1Y3R1
cmUqIGNhbGxiYWNrRnVuY3Rpb25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2NhbGxiYWNr
RnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9CiAgICAgU3RydWN0dXJlKiBjYWxsYmFja09i
amVjdFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FsbGJhY2tPYmplY3RTdHJ1Y3R1cmUu
Z2V0KHRoaXMpOyB9CiAgICAgU3RydWN0dXJlKiBwcm9wZXJ0eU5hbWVJdGVyYXRvclN0cnVjdHVy
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvcGVydHlOYW1lSXRlcmF0b3JTdHJ1Y3R1cmUuZ2V0KCk7
IH0KKyAgICBTdHJ1Y3R1cmUqIGdlbmVyYXRvckZyYW1lU3RydWN0dXJlKCkgY29uc3QgeyByZXR1
cm4gbV9nZW5lcmF0b3JGcmFtZVN0cnVjdHVyZS5nZXQoKTsgfQogI2lmIEpTQ19PQkpDX0FQSV9F
TkFCTEVECiAgICAgU3RydWN0dXJlKiBvYmpjQ2FsbGJhY2tGdW5jdGlvblN0cnVjdHVyZSgpIGNv
bnN0IHsgcmV0dXJuIG1fb2JqY0NhbGxiYWNrRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9
CiAgICAgU3RydWN0dXJlKiBvYmpjV3JhcHBlck9iamVjdFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0
dXJuIG1fb2JqY1dyYXBwZXJPYmplY3RTdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXggY2I2YmIzOTczYmNmZjAxNzhhN2RkMzI0MzhlNjYy
YTA0ZmRhMzUxZS4uY2UxMTQ1M2I0MzM2YzMwMDc1Njc5ZTk1ZGNlZjJlOWQ3OWY1OGRlMiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtMjQ4LDcgKzI0OCw2IEBAIHN0YXRp
YyBib29sIGVuYWJsZUFzc2VtYmxlcihFeGVjdXRhYmxlQWxsb2NhdG9yJiBleGVjdXRhYmxlQWxs
b2NhdG9yKQogICAgIGluZmVycmVkVHlwZVN0cnVjdHVyZS5zZXQoKnRoaXMsIEluZmVycmVkVHlw
ZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIGluZmVycmVkVHlw
ZVRhYmxlU3RydWN0dXJlLnNldCgqdGhpcywgSW5mZXJyZWRUeXBlVGFibGU6OmNyZWF0ZVN0cnVj
dHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICBmdW5jdGlvblJhcmVEYXRhU3RydWN0dXJl
LnNldCgqdGhpcywgRnVuY3Rpb25SYXJlRGF0YTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBq
c051bGwoKSkpOwotICAgIGdlbmVyYXRvckZyYW1lU3RydWN0dXJlLnNldCgqdGhpcywgR2VuZXJh
dG9yRnJhbWU6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICBleGNl
cHRpb25TdHJ1Y3R1cmUuc2V0KCp0aGlzLCBFeGNlcHRpb246OmNyZWF0ZVN0cnVjdHVyZSgqdGhp
cywgMCwganNOdWxsKCkpKTsKICAgICBwcm9taXNlRGVmZXJyZWRTdHJ1Y3R1cmUuc2V0KCp0aGlz
LCBKU1Byb21pc2VEZWZlcnJlZDo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkp
OwogICAgIGludGVybmFsUHJvbWlzZURlZmVycmVkU3RydWN0dXJlLnNldCgqdGhpcywgSlNJbnRl
cm5hbFByb21pc2VEZWZlcnJlZDo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKaW5kZXggZDdlNWUxMDVkNTUxMGExOWRjZjA4
YjM3OTEyN2ZjY2UwNDI3ZjFmNy4uZjAzYTlmZGZlNjZjYjZhODcyNGU4OWFjMGQ2NDE2ODUzOGFh
YWMxNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCkBAIC0zMTksNyArMzE5LDYgQEAg
Y2xhc3MgVk0gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Vk0+IHsKICAgICBTdHJvbmc8
U3RydWN0dXJlPiBpbmZlcnJlZFR5cGVTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4g
aW5mZXJyZWRUeXBlVGFibGVTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gZnVuY3Rp
b25SYXJlRGF0YVN0cnVjdHVyZTsKLSAgICBTdHJvbmc8U3RydWN0dXJlPiBnZW5lcmF0b3JGcmFt
ZVN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBleGNlcHRpb25TdHJ1Y3R1cmU7CiAg
ICAgU3Ryb25nPFN0cnVjdHVyZT4gcHJvbWlzZURlZmVycmVkU3RydWN0dXJlOwogICAgIFN0cm9u
ZzxTdHJ1Y3R1cmU+IGludGVybmFsUHJvbWlzZURlZmVycmVkU3RydWN0dXJlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC1h
bmQtYXJyYXkuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRv
ci1maWItZnRsLWFuZC1hcnJheS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZTkzOTgxMmZkYmFlYzZiODMyYmZk
MDBmMjE1M2RlZjg0YmI3NTkyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQtYXJyYXkuanMKQEAgLTAsMCAr
MSwyMyBAQAorKGZ1bmN0aW9uICgpIHsKKyAgICBmdW5jdGlvbiAqZmliKCkKKyAgICB7CisgICAg
ICAgIGxldCBhID0gMTsKKyAgICAgICAgbGV0IGIgPSAxOworICAgICAgICBsZXQgYyA9IFsgMCBd
OworICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAgY1swXSA9IGE7CisgICAgICAg
ICAgICB5aWVsZCBjOworICAgICAgICAgICAgW2EsIGJdID0gW2IsIGEgKyBiXTsKKyAgICAgICAg
fQorICAgIH0KKworICAgIGxldCB2YWx1ZSA9IDA7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAx
ZTQ7ICsraSkgeworICAgICAgICBsZXQgZiA9IGZpYigpOworICAgICAgICBmb3IgKGxldCBpID0g
MDsgaSA8IDEwMDsgKytpKSB7CisgICAgICAgICAgICB2YWx1ZSA9IGYubmV4dCgpLnZhbHVlOwor
ICAgICAgICB9CisgICAgICAgIGlmICh2YWx1ZVswXSAhPT0gMzU0MjI0ODQ4MTc5MjYyMDAwMDAw
KQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgdmFsdWU6JHtyZXN1bHR9YCk7Cisg
ICAgfQorfSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJl
c3MvZ2VuZXJhdG9yLWZpYi1mdGwtYW5kLW9iamVjdC5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwtYW5kLW9iamVjdC5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42NjczNDBmMmVhNGM3NDM4YTJkMjA5YWE0MGQwNjc3ZTRhYjdkM2ZiCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0
bC1hbmQtb2JqZWN0LmpzCkBAIC0wLDAgKzEsMjMgQEAKKyhmdW5jdGlvbiAoKSB7CisgICAgZnVu
Y3Rpb24gKmZpYigpCisgICAgeworICAgICAgICBsZXQgYSA9IDE7CisgICAgICAgIGxldCBiID0g
MTsKKyAgICAgICAgbGV0IGMgPSB7IGZpYjogMCB9OworICAgICAgICB3aGlsZSAodHJ1ZSkgewor
ICAgICAgICAgICAgYy5maWIgPSBhOworICAgICAgICAgICAgeWllbGQgYzsKKyAgICAgICAgICAg
IFthLCBiXSA9IFtiLCBhICsgYl07CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQgdmFsdWUg
PSAwOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMWU0OyArK2kpIHsKKyAgICAgICAgbGV0IGYg
PSBmaWIoKTsKKyAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDA7ICsraSkgeworICAgICAg
ICAgICAgdmFsdWUgPSBmLm5leHQoKS52YWx1ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAodmFs
dWUuZmliICE9PSAzNTQyMjQ4NDgxNzkyNjIwMDAwMDApCisgICAgICAgICAgICB0aHJvdyBuZXcg
RXJyb3IoYGJhZCB2YWx1ZToke3Jlc3VsdH1gKTsKKyAgICB9Cit9KCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQt
c3RyaW5nLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3It
ZmliLWZ0bC1hbmQtc3RyaW5nLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQzOGFlNmFiMzM0NzA0NjgyMjg0OWY0
MzAwNGVhNWM0MDNlZWRhMjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLWFuZC1zdHJpbmcuanMKQEAgLTAsMCAr
MSwyMiBAQAorKGZ1bmN0aW9uICgpIHsKKyAgICBmdW5jdGlvbiAqZmliKCkKKyAgICB7CisgICAg
ICAgIGxldCBhID0gMTsKKyAgICAgICAgbGV0IGIgPSAxOworICAgICAgICBsZXQgYyA9ICJSZXN1
bHQhICI7CisgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICB5aWVsZCBjICsgYTsK
KyAgICAgICAgICAgIFthLCBiXSA9IFtiLCBhICsgYl07CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICBsZXQgdmFsdWUgPSAwOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMWU0OyArK2kpIHsKKyAg
ICAgICAgbGV0IGYgPSBmaWIoKTsKKyAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDA7ICsr
aSkgeworICAgICAgICAgICAgdmFsdWUgPSBmLm5leHQoKS52YWx1ZTsKKyAgICAgICAgfQorICAg
ICAgICBpZiAodmFsdWUgIT09IGBSZXN1bHQhIDM1NDIyNDg0ODE3OTI2MjAwMDAwMGApCisgICAg
ICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCB2YWx1ZToke3Jlc3VsdH1gKTsKKyAgICB9Cit9
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5l
cmF0b3ItZmliLWZ0bC5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2Vu
ZXJhdG9yLWZpYi1mdGwuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzQwZTMzZGJjODY4YmVhN2E4OTNjOWVjMTZi
Nzc5ZWMyNmJkYjE5YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwuanMKQEAgLTAsMCArMSwyMSBAQAorKGZ1bmN0
aW9uICgpIHsKKyAgICBmdW5jdGlvbiAqZmliKCkKKyAgICB7CisgICAgICAgIGxldCBhID0gMTsK
KyAgICAgICAgbGV0IGIgPSAxOworICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAg
eWllbGQgYTsKKyAgICAgICAgICAgIFthLCBiXSA9IFtiLCBhICsgYl07CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICBsZXQgdmFsdWUgPSAwOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMWU0OyAr
K2kpIHsKKyAgICAgICAgbGV0IGYgPSBmaWIoKTsKKyAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkg
PCAxMDA7ICsraSkgeworICAgICAgICAgICAgdmFsdWUgPSBmLm5leHQoKS52YWx1ZTsKKyAgICAg
ICAgfQorICAgICAgICBpZiAodmFsdWUgIT09IDM1NDIyNDg0ODE3OTI2MjAwMDAwMCkKKyAgICAg
ICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIHZhbHVlOiR7cmVzdWx0fWApOworICAgIH0KK30o
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVy
YXRvci1mcmFtZS1lbXB0eS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mv
Z2VuZXJhdG9yLWZyYW1lLWVtcHR5LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU5ZTg4NTViZmFjM2M1NmRmOTI2
YWJkNDI4YzAxM2MzMzQxNjI3NDYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1mcmFtZS1lbXB0eS5qcwpAQCAtMCwwICsxLDM0
IEBACitmdW5jdGlvbiBzaG91bGRUaHJvdyhmdW5jLCBlcnJvck1lc3NhZ2UpIHsKKyAgICB2YXIg
ZXJyb3JUaHJvd24gPSBmYWxzZTsKKyAgICB2YXIgZXJyb3IgPSBudWxsOworICAgIHRyeSB7Cisg
ICAgICAgIGZ1bmMoKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGVycm9yVGhyb3duID0g
dHJ1ZTsKKyAgICAgICAgZXJyb3IgPSBlOworICAgIH0KKyAgICBpZiAoIWVycm9yVGhyb3duKQor
ICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ25vdCB0aHJvd24nKTsKKyAgICBpZiAoU3RyaW5nKGVy
cm9yKSAhPT0gZXJyb3JNZXNzYWdlKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCBlcnJv
cjogJHtTdHJpbmcoZXJyb3IpfWApOworfQorCitzaG91bGRUaHJvdyhmdW5jdGlvbiAoKSB7Cisg
ICAgZnVuY3Rpb24gKmZpYihmbGFnKQorICAgIHsKKyAgICAgICAgbGV0IGEgPSAxOworICAgICAg
ICBsZXQgYiA9IDE7CisgICAgICAgIHlpZWxkIDQyOworICAgICAgICBpZiAoZmxhZykKKyAgICAg
ICAgICAgIHJldHVybiBjOworICAgICAgICBsZXQgYyA9IDUwMDsKKyAgICB9CisKKyAgICBsZXQg
dmFsdWUgPSAwOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMWU0OyArK2kpIHsKKyAgICAgICAg
Zm9yIChsZXQgdiBvZiBmaWIoZmFsc2UpKSB7CisgICAgICAgIH0KKyAgICB9CisgICAgZm9yIChs
ZXQgdiBvZiBmaWIodHJ1ZSkpIHsKKyAgICB9Cit9LCBgUmVmZXJlbmNlRXJyb3I6IENhbm5vdCBh
Y2Nlc3MgdW5pbml0aWFsaXplZCB2YXJpYWJsZS5gKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>279342</attachid>
            <date>2016-05-18 20:14:05 -0700</date>
            <delta_ts>2016-07-03 12:50:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-152723-20160519121503.patch</filename>
            <type>text/plain</type>
            <size>140279</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAxMTIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
OGEwZDQ1ZTFlNWFlNDcyYjQ1YjEwNjc5ZTE5MGM1ZGRiZTE1MjQ4Li42MDBhOWZhNGZjYTdmOGQ3
NzAyZmUwNTE5YzdkNzRhYjVjZjM3ODI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMzkgQEAKKzIwMTYtMDUtMTggIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0RGR10gRW1iZWQgZ2VuZXJhdG9yIGZyYW1lIGludG8gU2NvcGUg
YW5kIGVuYWJsZSBnZW5lcmF0b3IgaW4gREZHIC8gRlRMCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTI3MjMKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGlzIGFuIGluaXRpYWwgYXR0ZW1w
dCB0byBpbXBsZW1lbnQgREZHIGFuZCBGVEwgY2FwYWJsZSBFUzYgZ2VuZXJhdG9ycy4KKyAgICAg
ICAgV2UgaW50cm9kdWNlIHRoZSBzZXZlcmFsIGJ5dGVjb2RlcyBhbmQgY29tcGlsZSB0aGVtIGlu
IERGRyAvIEZUTC4KKworICAgICAgICAtIG9wX25ld19nZW5lcmF0b3JfZnJhbWUKKworICAgICAg
ICAgICAgQWxsb2NhdGUgR2VuZXJhdG9yRnJhbWUgaW4gdGhlIGJ5dGVjb2RlIGluc3RlYWQgb2Yg
YWxsb2NhdGluZyBpdCBpbiB0aGUgb3Bfc2F2ZS4KKworICAgICAgICAtIG9wX3NhdmUKKworICAg
ICAgICAgICAgTm93IEJ5dGVjb2RlTGl2ZW5lc3MgYW5hbHlzaXMgYW5kIFByZWNpc2VKdW1wVGFy
Z2V0IGFuYWx5c2lzIGhhdmUgMiBtb2RlczsgU3RhbmRhcmQgYW5kIEV4dHJhY3RHZW5lcmF0b3JM
aXZlQ2FsbGVlTG9jYWxzLgorICAgICAgICAgICAgVW5kZXIgRXh0cmFjdEdlbmVyYXRvckxpdmVD
YWxsZWVMb2NhbHMgbW9kZSwgb3Bfc2F2ZSBoYXMganVtcCB0byB0aGUgbWVyZ2UgcG9pbnQuIFRo
aXMganVtcCBpcyBqdXN0IHVzZWQgZm9yIHVzZS1kZWYgYW5hbHlzaXMgdG8gZXh0cmFjdAorICAg
ICAgICAgICAgbGl2ZSBjYWxsZWUgbG9jYWxzIGF0IHRoZSBtZXJnZSBwb2ludC4gVGhlc2UgbGl2
ZSBjYWxsZWUgbG9jYWxzIHNob3VsZCBiZSBzYXZlZCBhbmQgcmVzdW1lZCB0byBzdXNwZW5kIGFu
ZCByZXN1bWUgZ2VuZXJhdG9ycy4KKyAgICAgICAgICAgIFRoZSBtZXJnZSBwb2ludCBpcyB0aGUg
cG9pbnQgdGhhdCBtZXJnaW5nIHRoZSAyIGJhc2ljIGJsb2Nrcywgc2F2aW5nIGxvY2FscyB0byB0
aGUgZ2VuZXJhdG9yIGZyYW1lIGFuZCByZXN1bWluZyBsb2NhbHMgZnJvbSB0aGUgZ2VuZXJhdG9y
IGZyYW1lLgorCisgICAgICAgIC0gb3BfcmVzdW1lCisKKyAgICAgICAgICAgIFRoaXMgcmV0cmll
dmVzIGxvY2FsIHZhcmlhYmxlIGZyb20gdGhlIGdlbmVyYXRvciBmcmFtZS4gRXh0cmFjdEdlbmVy
YXRvckxpdmVDYWxsZWVMb2NhbHMgYW5hbHlzaXMgd2lsbCBkaXNjb3ZlciBsaXZlIGxvY2FscyBh
dCB0aGUgbWVyZ2UgcG9pbnQgYW5kIHJlY29yZCBsaXZlbmVzcworICAgICAgICAgICAgaW5mb3Jt
YXRpb24gdG8gb3Bfc2F2ZSBhbmQgb3BfcmVzdW1lLiBPbiB0aGUgYmFzaXMgb2YgdGhpcyBpbmZv
cm1hdGlvbiwgb3BfcmVzdW1lIHdpbGwgcmV0cmlldmUgc2F2ZWQgbG9jYWxzIGZyb20gdGhlIGdl
bmVyYXRvciBmcmFtZS4KKworICAgICAgICBIZXJlLCB3ZSBleHBsYWluIGFib3V0IGhvdyB0byBw
cmVwcm9jZXNzIGJ5dGVjb2Rlcy4KKyAgICAgICAgRmlyc3QsIHdlIGVtaXQgb3Bfc2F2ZSwgb3Bf
cmVzdW1lIGFuZCBwZXJmb3JtIEV4dHJhY3RHZW5lcmF0b3JMaXZlQ2FsbGVlTG9jYWxzIGFuYWx5
c2lzLgorCisgICAgICAgIFtlbnRyeV0gLSstLT4gW3NhdmUgYmxvY2tdIC0+IG9wX3NhdmUgKGl0
IGlzIGJyYW5jaGluZyBieXRlY29kZSkgLS0tLS0tPiBbbWVyZ2UgYmxvY2tdIC0+IC4uLgorICAg
ICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBeCisgICAgICAgICAgICAgICAgIHwgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKy0+IG9wX3JldCAgICAgICAgICAgICAgICAgICAgICAg
IHwKKyAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLT4gb3BfcmVzdW1lIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworCisgICAgICAgIFRoZW4sIGRpc2Nv
dmVyIGxpdmUgbG9jYWxzIGluZm9ybWF0aW9uIChhcyBGYXN0Qml0VmVjdG9yKSBhdCB0aGUgbWVy
Z2UgcG9pbnQgYW5kIHN0b3JlIGl0IHRvIGNvcnJlc3BvbmRpbmcgb3Bfc2F2ZSBhbmQgb3BfcmVz
dW1lLgorICAgICAgICBBZnRlciB0aGF0LCB1bmRlciBTdGFuZGFyZCBhbmFseXNpcyBtb2RlLCB0
aGUgYWJvdmUgYnl0ZWNvZGUgc3RyZWFtIHdpbGwgY29uc3RydWN0IHRoZSBmb2xsb3dpbmcgQ0ZH
LgorICAgICAgICBJbiB0aGUgZm9sbG93aW5nIENGRywgb3Bfc2F2ZSBubyBsb25nZXIgaGFzIGp1
bXAgdG8gdGhlIG1lcmdlIHBvaW50LiBUaGUgcmVtb3ZlZCBqdW1wIGVkZ2Ugd2FzIGp1c3QgdXNl
ZCB0byBjYWxjdWxhdGUgbGl2ZW5lc3MgaW5mb3JtYXRpb24gYXQgdGhlIG1lcmdlIHBvaW50Lgor
CisgICAgICAgIFtlbnRyeV0gLSstLT4gW3NhdmUgYmxvY2tdIC0+IG9wX3NhdmUgLT4gb3BfcmV0
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICstPiBbbWVyZ2UgYmxvY2tdIC0+IC4uLgor
ICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgICAgICAgICAgIHwgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHwKKyAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLT4gb3BfcmVzdW1lIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworCisgICAgICAgIEFuZCB3ZSBp
bnRyb2R1Y2VzIHNldmVyYWwgREZHIG5vZGVzLgorCisgICAgICAgIC0gTmV3R2VuZXJhdG9yRnJh
bWUKKworICAgICAgICAgICAgVGhpcyBqdXN0IGFsbG9jYXRlcyBHZW5lcmF0b3JGcmFtZS4KKwor
ICAgICAgICAtIFJlc2l6ZUdlbmVyYXRvckxvY2FscworCisgICAgICAgICAgICBUaGlzIHNldCBH
ZW5lcmF0b3JGcmFtZTo6bV9udW1iZXJPZlNhdmVkQ2FsbGVlTG9jYWxzICpOKi4gVGhpcyBub2Rl
IGlzIHVzZWQgdG8gKDEpIGFsbG9jYXRlIHNwYWNlIGZvciBsb2NhbHMgaW4gR2VuZXJhdG9yRnJh
bWUgYW5kICgyKSBkZWFsbG9jYXRlIHNwYWNlIGluCisgICAgICAgICAgICBHZW5lcmF0b3JGcmFt
ZSBieSBzZXR0aW5nIGl0IGFzIDAuCisKKyAgICAgICAgLSBHZXRHZW5lcmF0b3JMb2NhbAorCisg
ICAgICAgICAgICBHZXQgYSBzYXZlZCBsb2NhbCB2YXJpYWJsZSBmcm9tIGEgZ2VuZXJhdG9yIGZy
YW1lLiBHZXRHZW5lcmF0b3JMb2NhbCBhbmQgU2V0R2VuZXJhdG9yTG9jYWwgYXJlIGxpbmtlZCB3
aXRoIEdlbmVyYXRvckxvY2FsRGF0YS4gU28gdHlwZSBwcmVkaWNhdGlvbiBhbmQgZmxhZ3MKKyAg
ICAgICAgICAgIGFyZSBjb3JyZWN0bHkgcHJvcGFnYXRlZCBiZXlvbmQgdGhlIGdlbmVyYXRvciBm
cmFtZS4KKworICAgICAgICAtIFNldEdlbmVyYXRvckxvY2FsCisKKyAgICAgICAgICAgIFN0b3Jl
IGEgbG9jYWwgdmFyaWFibGUgdG8gYSBnZW5lcmF0b3IgZnJhbWUuCisKKyAgICAgICAgRnV0dXJl
IHBsYW5zIGFyZSB0aGUgZm9sbG93aW5ncy4KKworICAgICAgICAxLiBTdXBwb3J0IHRyYW5zZmVy
cmluZyBBYnN0cmFjdFZhbHVlIGJldHdlZW4gU2V0R2VuZXJhdG9yTG9jYWwgYW5kIEdldEdlbmVy
YXRvckxvY2FsLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUzMTgz
CisKKyAgICAgICAgMi4gQ3JlYXRlIEpTR2VuZXJhdG9yIGFuZCBhbGxvY2F0ZSBpdCBpbiB0aGUg
Z2VuZXJhdG9yIHdyYXBwZXIgZnVuY3Rpb24uIFRoaXMgc2hvdWxkIGJlIGNvbXBpbGVkIGluIERG
RyAvIEZUTCBhbmQKKyAgICAgICAgdGhpcyBvYmplY3Qgc2hvdWxkIGJlIHRyYWNrZWQgKGJ5IGVz
Y2FwZSBhbmFseXNpcykgYW5kIGVsaW1pbmF0ZWQgaWYgcG9zc2libGUgYnkgb2JqZWN0IGFsbG9j
YXRpb24gZWxpbWluYXRpb24uCisKKyAgICAgICAgMy4gQW5kIG9uY2Ugd2UgZXhwbG9pdCB0aGF0
IEdlbmVyYXRvckZyYW1lIGlzIG5vdCBlc2NhcGVkIGZyb20gdGhlIGdpdmVuIEZUTC1lZCBmdW5j
dGlvbiwgd2Ugd2lsbCBlbGltaW5hdGUgR2VuZXJhdG9yRnJhbWUgYWxsb2NhdGlvbiBhbmQKKyAg
ICAgICAgY29udmVydCBHZW5lcmF0b3JMb2NhbCBvcGVyYXRpb25zIGludG8gZ2V0L3NldCBsb2Nh
bCBvcGVyYXRpb25zLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBidWlsdGlu
cy9HZW5lcmF0b3JQcm90b3R5cGUuanM6CisgICAgICAgIChnZW5lcmF0b3JSZXN1bWUpOgorICAg
ICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5jcHA6CisgICAgICAgIChKU0M6Omlz
QnJhbmNoKToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MpOgorICAg
ICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5oOgorICAgICAgICAqIGJ5dGVjb2Rl
L0J5dGVjb2RlR3JhcGguY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmguCisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
R3JhcGg6OkJ5dGVjb2RlR3JhcGgpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlR3JhcGgu
aDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2
ZW5lc3NBbmFseXNpcy5oLgorICAgICAgICAoSlNDOjpCeXRlY29kZUdyYXBoOjpieXRlY29kZUFu
YWx5c2lzTW9kZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR3JhcGg6OmNvZGVCbG9jayk6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR3JhcGg6OmJhc2ljQmxvY2tzKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHcmFwaDo6UmV2ZXJzZUl0ZXJhYmxlOjpSZXZlcnNlSXRlcmFibGUpOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUdyYXBoOjpSZXZlcnNlSXRlcmFibGU6OmJlZ2luKToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHcmFwaDo6UmV2ZXJzZUl0ZXJhYmxlOjplbmQpOgorICAgICAgICAoSlND
OjpCeXRlY29kZUdyYXBoOjpiYXNpY0Jsb2Nrc0luUmV2ZXJzZU9yZGVyKToKKyAgICAgICAgKiBi
eXRlY29kZS9CeXRlY29kZUluc2VydGlvblNldC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmguCisgICAgICAgIChK
U0M6OkJ5dGVjb2RlSW5zZXJ0aW9uU2V0OjpCeXRlY29kZUluc2VydGlvblNldCk6CisgICAgICAg
ICogYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb246CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNv
ZGVMaXZlbmVzc0FuYWx5c2lzLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc0Fu
YWx5c2lzOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMpOgorICAgICAgICAoSlNDOjpmaW5kQmFz
aWNCbG9ja1dpdGhMZWFkZXJPZmZzZXQpOgorICAgICAgICAoSlNDOjpmaW5kQmFzaWNCbG9ja0Zv
ckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6c3RlcE92ZXJJbnN0cnVjdGlvbik6Cisg
ICAgICAgIChKU0M6OmNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAg
ICAgICAoSlNDOjpjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJsb2NrKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpydW5MaXZlbmVzc0ZpeHBvaW50KToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpnZXRMaXZlbmVzc0luZm9BdEJ5dGVjb2Rl
T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpjb21wdXRl
RnVsbExpdmVuZXNzKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpj
b21wdXRlS2lsbHMpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmR1
bXBSZXN1bHRzKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpjb21w
dXRlKTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlz
aXMuaDoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZVVzZURlZi5oOgorICAgICAgICAoSlND
Ojpjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZURl
ZnNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoK
KyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpD
b2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjp2YWxp
ZGF0ZSk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6OkNv
ZGVCbG9jazo6bGl2ZW5lc3NBbmFseXNpcyk6CisgICAgICAgICogYnl0ZWNvZGUvUHJlY2lzZUp1
bXBUYXJnZXRzLmNwcDoKKyAgICAgICAgKEpTQzo6Z2V0SnVtcFRhcmdldHNGb3JCeXRlY29kZU9m
ZnNldCk6CisgICAgICAgIChKU0M6OmNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMpOgorICAgICAg
ICAoSlNDOjpmaW5kSnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgICogYnl0
ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVj
b2RlR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdH
ZW5lcmF0b3JGcmFtZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0U2F2
ZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzdW1lKToKKyAgICAg
ICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRvckZyYW1lUmVnaXN0ZXIpOgorICAgICAgICAqIGRmZy9E
RkdBYnN0cmFjdEhlYXAuaDoKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklu
bGluZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0
U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6Om5ld0dlbmVyYXRv
ckxvY2FsRGF0YSk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxv
Y2spOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUNvZGVCbG9jayk6
CisgICAgICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
Y2FwYWJpbGl0eUxldmVsKToKKyAgICAgICAgKiBkZmcvREZHQ2xvYmJlcml6ZS5oOgorICAgICAg
ICAoSlNDOjpERkc6OmNsb2JiZXJpemUpOgorICAgICAgICAqIGRmZy9ERkdDbG9iYmVyc0V4aXRT
dGF0ZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Y2xvYmJlcnNFeGl0U3RhdGUpOgorICAgICAg
ICAqIGRmZy9ERkdEb2VzR0MuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmRvZXNHQyk6CisgICAg
ICAgICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhh
c2U6OmZpeHVwTm9kZSk6CisgICAgICAgICogZGZnL0RGR0dlbmVyYXRvckxvY2FsRGF0YS5oOiBD
b3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJn
ZXRzLmguCisgICAgICAgIChKU0M6OkRGRzo6R2VuZXJhdG9yTG9jYWxEYXRhOjpwcmVkaWN0KToK
KyAgICAgICAgKEpTQzo6REZHOjpHZW5lcmF0b3JMb2NhbERhdGE6OnByZWRpY3Rpb24pOgorICAg
ICAgICAqIGRmZy9ERkdHcmFwaC5oOgorICAgICAgICAqIGRmZy9ERkdNYXlFeGl0LmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjptYXlFeGl0KToKKyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAg
ICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc0dlbmVyYXRvckxvY2Fsc1NpemUpOgorICAgICAgICAo
SlNDOjpERkc6Ok5vZGU6OmdlbmVyYXRvckxvY2Fsc1NpemUpOgorICAgICAgICAoSlNDOjpERkc6
Ok5vZGU6Omhhc0dlbmVyYXRvckxvY2FsSW5kZXgpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6
OmdlbmVyYXRvckxvY2FsSW5kZXgpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc0dlbmVy
YXRvckxvY2FsRGF0YSk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6Z2VuZXJhdG9yTG9jYWxE
YXRhKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNHZW5lcmF0b3JGcmFtZUxvY2Fscyk6
CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6Z2VuZXJhdG9yRnJhbWVMb2NhbHMpOgorICAgICAg
ICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNwcDoK
KyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0
aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUu
aDoKKyAgICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZH
U3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpj
b21waWxlTmV3R2VuZXJhdG9yRnJhbWUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpjb21waWxlUmVzaXplR2VuZXJhdG9yTG9jYWxzKToKKyAgICAgICAgKiBkZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAq
IGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlv
blBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHU3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2Uu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OlN0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlOjpydW4p
OgorICAgICAgICAqIGZ0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcDoKKyAgICAgICAg
KiBmdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oOgorICAgICAgICAqIGZ0bC9GVExDYXBh
YmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmNhbkNvbXBpbGUpOgorICAgICAgICAq
IGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3Mp
OgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUT3Bjb2Rlcy5jcHA6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9zYXZlKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
X29wX3Jlc3VtZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9uZXdfZ2VuZXJhdG9yX2Zy
YW1lKToKKyAgICAgICAgKiBqaXQvSklUT3Bjb2RlczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0X29wX3NhdmUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcmVzdW1lKToK
KyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRXcml0ZUJhcnJpZXIpOgorICAgICAgICAqIGxsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rv
ci5jcHA6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc206CisgICAgICAg
ICogcGFyc2VyL1BhcnNlci5jcHA6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+Ojpw
YXJzZUlubmVyKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlR2VuZXJh
dG9yRnVuY3Rpb25Tb3VyY2VFbGVtZW50cyk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5
cGU+OjpjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2Vy
Lmg6CisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAoSlND
OjpTTE9XX1BBVEhfREVDTCk6CisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuaDoK
KyAgICAgICAgKiBydW50aW1lL0dlbmVyYXRvckZyYW1lLmNwcDoKKyAgICAgICAgKEpTQzo6R2Vu
ZXJhdG9yRnJhbWU6OkdlbmVyYXRvckZyYW1lKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJh
bWU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OmNyZWF0
ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpjcmVhdGUpOgorICAg
ICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6c2F2ZSk6CisgICAgICAgIChKU0M6OkdlbmVyYXRv
ckZyYW1lOjpyZXN1bWUpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6dmlzaXRDaGls
ZHJlbik6CisgICAgICAgICogcnVudGltZS9HZW5lcmF0b3JGcmFtZS5oOgorICAgICAgICAoSlND
OjpHZW5lcmF0b3JGcmFtZTo6bG9jYWxPZmZzZXQpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JG
cmFtZTo6bnVtYmVyT2ZDYWxsZWVMb2NhbHNPZmZzZXQpOgorICAgICAgICAoSlNDOjpHZW5lcmF0
b3JGcmFtZTo6bnVtYmVyT2ZTYXZlZENhbGxlZUxvY2Fsc09mZnNldCk6CisgICAgICAgIChKU0M6
OkdlbmVyYXRvckZyYW1lOjpsb2NhbEF0KTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmluaXQpOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNHbG9i
YWxPYmplY3Q6OmdlbmVyYXRvckZyYW1lU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL1ZN
LmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OlZNKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1l
L1ZNLmg6CisgICAgICAgICogdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLWFuZC1hcnJh
eS5qczogQWRkZWQuCisgICAgICAgIChmaWIpOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9nZW5l
cmF0b3ItZmliLWZ0bC1hbmQtb2JqZWN0LmpzOiBBZGRlZC4KKyAgICAgICAgKGZpYik6CisgICAg
ICAgICogdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLWFuZC1zdHJpbmcuanM6IEFkZGVk
LgorICAgICAgICAoZmliKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1m
dGwuanM6IEFkZGVkLgorICAgICAgICAoZmliKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvZ2Vu
ZXJhdG9yLWZyYW1lLWVtcHR5LmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZFRocm93KToKKyAg
ICAgICAgKHNob3VsZFRocm93LmZpYik6CisKIDIwMTYtMDUtMTggIFNhYW0gYmFyYXRpICA8c2Jh
cmF0aUBhcHBsZS5jb20+CiAKICAgICAgICAgRnVuY3Rpb24gd2l0aCBkZWZhdWx0IHBhcmFtZXRl
ciB2YWx1ZXMgdGhhdCBhcmUgYXJyb3cgZnVuY3Rpb25zIHRoYXQgY2FwdHVyZSB0aGlzIGlzbid0
IHdvcmtpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4
dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBiZjUyMTgxYmM2
YTU4NjBlOTgyOGQ1ZmY2NjEyOTcxZGRlOTZlOWY4Li5kNTZjNzExOWYxODY1NWRiNzhhMmUyYmI0
YWY1ZTJhMmI1YTRlOWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VM
aXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0x
NzgsNiArMTc4LDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBieXRlY29kZS9B
cnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcAogICAgIGJ5dGVjb2RlL0FycmF5UHJvZmlsZS5jcHAK
ICAgICBieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suY3BwCisgICAgYnl0ZWNvZGUvQnl0ZWNv
ZGVHcmFwaC5jcHAKICAgICBieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmNwcAog
ICAgIGJ5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAKICAgICBieXRlY29kZS9D
YWxsRWRnZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYjFjYmFiYTg0ZDE1
MGZkNGJhM2M3YzI1YWQ4MzY0MTdmYzAxNjY0Yy4uYjM0NDgyOTRhNjU5ZWM3ZDk4MDA0NGRjOGUx
Mjk4ZTdhYWE3MjE3NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTYyMjMsNiAr
NjIyMyw3IEBACiAJCQkJMEY2OUNDODYxOTNBQzYwQTAwNDU3NTlFIC8qIERGR0Zyb3plblZhbHVl
LmNwcCAqLywKIAkJCQkwRjY5Q0M4NzE5M0FDNjBBMDA0NTc1OUUgLyogREZHRnJvemVuVmFsdWUu
aCAqLywKIAkJCQk4NkVDOURCNjEzMjhERjgyMDAyQjJBRDcgLyogREZHR2VuZXJhdGlvbkluZm8u
aCAqLywKKwkJCQk3MDc5MTQxQzFDNEFBODA3MDBCODJGRjcgLyogREZHR2VuZXJhdG9yTG9jYWxE
YXRhLmggKi8sCiAJCQkJODZFQzlEQjcxMzI4REY4MjAwMkIyQUQ3IC8qIERGR0dyYXBoLmNwcCAq
LywKIAkJCQk4NkVDOURCODEzMjhERjgyMDAyQjJBRDcgLyogREZHR3JhcGguaCAqLywKIAkJCQkw
RjJGQ0NGMjE4QTYwMDcwMDAxQTI3RjggLyogREZHR3JhcGhTYWZlcG9pbnQuY3BwICovLApAQCAt
Nzk3OSw2ICs3OTgwLDcgQEAKIAkJCQkwRkUwNTAyOTFBQTkwOTU2MDBEMzNCMzMgLyogU2NvcGVk
QXJndW1lbnRzVGFibGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRTA1MDJCMUFBOTA5NTYwMEQz
M0IzMyAvKiBTY29wZU9mZnNldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyNEU1NTIxN0VFMjc0
OTAwQUJCMjE3IC8qIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJNzA3OTE0MUQxQzRBQTg2MDAwQjgyRkY3IC8qIERGR0dlbmVyYXRvckxvY2FsRGF0YS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQTVGRDAwNjgxODlBRkU5QzAwNjMzMjMxIC8qIFNjcmlwdEFyZ3Vt
ZW50cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTUwM0ZBMjExODhFRkY2ODAwMTEwRjE0IC8qIFNj
cmlwdEJyZWFrcG9pbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1RkQwMDZFMTg5QjAwQUEwMDYz
MzIzMSAvKiBTY3JpcHRDYWxsRnJhbWUuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0dlbmVyYXRvclByb3RvdHlwZS5qcyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9HZW5lcmF0b3JQcm90b3R5cGUuanMKaW5kZXggNjk0
NjNjMzM2MDJlMjhmN2RkNDI5YWQyMzQ2ZGIxYTdlNWVlZGRlZS4uMDRhNjMzMzhmN2ExMmQwZGEx
ODRkZWZhYzlhYmRmY2VhOTM1MGJkZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J1aWx0aW5zL0dlbmVyYXRvclByb3RvdHlwZS5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnVpbHRpbnMvR2VuZXJhdG9yUHJvdG90eXBlLmpzCkBAIC00OSw3ICs0OSw3IEBAIGZ1bmN0
aW9uIGdlbmVyYXRvclJlc3VtZShnZW5lcmF0b3IsIHNlbnRWYWx1ZSwgcmVzdW1lTW9kZSkKICAg
ICB9IGVsc2UgewogICAgICAgICB0cnkgewogICAgICAgICAgICAgZ2VuZXJhdG9yLkBnZW5lcmF0
b3JTdGF0ZSA9IEBHZW5lcmF0b3JTdGF0ZUV4ZWN1dGluZzsKLSAgICAgICAgICAgIHZhbHVlID0g
Z2VuZXJhdG9yLkBnZW5lcmF0b3JOZXh0LkBjYWxsKGdlbmVyYXRvci5AZ2VuZXJhdG9yVGhpcywg
Z2VuZXJhdG9yLCBzdGF0ZSwgc2VudFZhbHVlLCByZXN1bWVNb2RlKTsKKyAgICAgICAgICAgIHZh
bHVlID0gZ2VuZXJhdG9yLkBnZW5lcmF0b3JOZXh0LkBjYWxsKGdlbmVyYXRvci5AZ2VuZXJhdG9y
VGhpcywgZ2VuZXJhdG9yLCBzdGF0ZSwgc2VudFZhbHVlLCByZXN1bWVNb2RlLCBnZW5lcmF0b3Iu
QGdlbmVyYXRvckZyYW1lKTsKICAgICAgICAgICAgIGlmIChnZW5lcmF0b3IuQGdlbmVyYXRvclN0
YXRlID09PSBAR2VuZXJhdG9yU3RhdGVFeGVjdXRpbmcpIHsKICAgICAgICAgICAgICAgICBnZW5l
cmF0b3IuQGdlbmVyYXRvclN0YXRlID0gQEdlbmVyYXRvclN0YXRlQ29tcGxldGVkOwogICAgICAg
ICAgICAgICAgIGRvbmUgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcAppbmRleCA3ZjE3YzBlZjEwYjQzM2ZhYzhm
NThjYjNiOWNhNWQ0ZDAxNWJiYTA4Li5lYzBkYmY2MDU2MjVlMWMwNjIxM2ZiNGY0YjkwMDczYWFj
YjQ3YzkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVCYXNpY0Jsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVCYXNpY0Jsb2NrLmNwcApAQCAtMzgsNyArMzgsNyBAQCB2b2lkIEJ5dGVjb2RlQmFzaWNC
bG9jazo6c2hyaW5rVG9GaXQoKQogICAgIG1fc3VjY2Vzc29ycy5zaHJpbmtUb0ZpdCgpOwogfQog
Ci1zdGF0aWMgYm9vbCBpc0JyYW5jaChPcGNvZGVJRCBvcGNvZGVJRCkKK3N0YXRpYyBib29sIGlz
QnJhbmNoKE9wY29kZUlEIG9wY29kZUlELCBCeXRlY29kZUFuYWx5c2lzTW9kZSBieXRlY29kZUFu
YWx5c2lzTW9kZSkKIHsKICAgICBzd2l0Y2ggKG9wY29kZUlEKSB7CiAgICAgY2FzZSBvcF9qbXA6
CkBAIC01OCw4ICs1OCwxMSBAQCBzdGF0aWMgYm9vbCBpc0JyYW5jaChPcGNvZGVJRCBvcGNvZGVJ
RCkKICAgICBjYXNlIG9wX3N3aXRjaF9pbW06CiAgICAgY2FzZSBvcF9zd2l0Y2hfY2hhcjoKICAg
ICBjYXNlIG9wX3N3aXRjaF9zdHJpbmc6Ci0gICAgY2FzZSBvcF9zYXZlOgogICAgICAgICByZXR1
cm4gdHJ1ZTsKKworICAgIGNhc2Ugb3Bfc2F2ZToKKyAgICAgICAgcmV0dXJuIGJ5dGVjb2RlQW5h
bHlzaXNNb2RlID09IEJ5dGVjb2RlQW5hbHlzaXNNb2RlOjpFeHRyYWN0R2VuZXJhdG9yTGl2ZUNh
bGxlZUxvY2FsczsKKwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
CkBAIC0xMTAsMTAgKzExMywxMCBAQCBzdGF0aWMgdm9pZCBsaW5rQmxvY2tzKEJ5dGVjb2RlQmFz
aWNCbG9jayogcHJlZGVjZXNzb3IsIEJ5dGVjb2RlQmFzaWNCbG9jayogc3VjYwogICAgIHByZWRl
Y2Vzc29yLT5hZGRTdWNjZXNzb3Ioc3VjY2Vzc29yKTsKIH0KIAotdm9pZCBjb21wdXRlQnl0ZWNv
ZGVCYXNpY0Jsb2NrcyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0
cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9ja3MpCit2b2lkIGNvbXB1dGVCeXRlY29k
ZUJhc2ljQmxvY2tzKENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29kZUFuYWx5c2lzTW9kZSBi
eXRlY29kZUFuYWx5c2lzTW9kZSwgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2lj
QmxvY2s+PiYgYmFzaWNCbG9ja3MpCiB7CiAgICAgVmVjdG9yPHVuc2lnbmVkLCAzMj4ganVtcFRh
cmdldHM7Ci0gICAgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhjb2RlQmxvY2ssIGp1bXBUYXJn
ZXRzKTsKKyAgICBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKGNvZGVCbG9jaywgYnl0ZWNvZGVB
bmFseXNpc01vZGUsIGp1bXBUYXJnZXRzKTsKIAogICAgIC8vIENyZWF0ZSB0aGUgZW50cnkgYW5k
IGV4aXQgYmFzaWMgYmxvY2tzLgogICAgIGJhc2ljQmxvY2tzLnJlc2VydmVDYXBhY2l0eShqdW1w
VGFyZ2V0cy5zaXplKCkgKyAyKTsKQEAgLTE0OSw3ICsxNTIsNyBAQCB2b2lkIGNvbXB1dGVCeXRl
Y29kZUJhc2ljQmxvY2tzKENvZGVCbG9jayogY29kZUJsb2NrLCBWZWN0b3I8c3RkOjp1bmlxdWVf
cHRyPEJ5dAogICAgICAgICB9CiAKICAgICAgICAgLy8gSWYgdGhlIGN1cnJlbnQgYnl0ZWNvZGUg
aXMgYSBicmFuY2ggb3IgYSByZXR1cm4sIHRoZW4gdGhlIG5leHQgaW5zdHJ1Y3Rpb24gaXMgdGhl
IGxlYWRlciBvZiBpdHMgb3duIGJhc2ljIGJsb2NrLgotICAgICAgICBpZiAoaXNCcmFuY2gob3Bj
b2RlSUQpIHx8IGlzVGVybWluYWwob3Bjb2RlSUQpIHx8IGlzVGhyb3cob3Bjb2RlSUQpKQorICAg
ICAgICBpZiAoaXNCcmFuY2gob3Bjb2RlSUQsIGJ5dGVjb2RlQW5hbHlzaXNNb2RlKSB8fCBpc1Rl
cm1pbmFsKG9wY29kZUlEKSB8fCBpc1Rocm93KG9wY29kZUlEKSkKICAgICAgICAgICAgIG5leHRJ
bnN0cnVjdGlvbklzTGVhZGVyID0gdHJ1ZTsKIAogICAgICAgICBpZiAoY3JlYXRlZEJsb2NrKQpA
QCAtMjAyLDEwICsyMDUsMTAgQEAgdm9pZCBjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2NrcyhDb2Rl
QmxvY2sqIGNvZGVCbG9jaywgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXQKICAgICAgICAgICAg
IH0KIAogICAgICAgICAgICAgLy8gSWYgd2UgZm91bmQgYSBicmFuY2gsIGxpbmsgdG8gdGhlIGJs
b2NrKHMpIHRoYXQgd2UganVtcCB0by4KLSAgICAgICAgICAgIGlmIChpc0JyYW5jaChvcGNvZGVJ
RCkpIHsKKyAgICAgICAgICAgIGlmIChpc0JyYW5jaChvcGNvZGVJRCwgYnl0ZWNvZGVBbmFseXNp
c01vZGUpKSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKGJ5dGVjb2RlT2Zmc2V0ICsgb3Bjb2Rl
TGVuZ3RoID09IGJsb2NrLT5sZWFkZXJCeXRlY29kZU9mZnNldCgpICsgYmxvY2stPnRvdGFsQnl0
ZWNvZGVMZW5ndGgoKSk7CiAgICAgICAgICAgICAgICAgVmVjdG9yPHVuc2lnbmVkLCAxPiBieXRl
Y29kZU9mZnNldHNKdW1wZWRUbzsKLSAgICAgICAgICAgICAgICBmaW5kSnVtcFRhcmdldHNGb3JC
eXRlY29kZU9mZnNldChjb2RlQmxvY2ssIGJ5dGVjb2RlT2Zmc2V0LCBieXRlY29kZU9mZnNldHNK
dW1wZWRUbyk7CisgICAgICAgICAgICAgICAgZmluZEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZz
ZXQoY29kZUJsb2NrLCBieXRlY29kZUFuYWx5c2lzTW9kZSwgYnl0ZWNvZGVPZmZzZXQsIGJ5dGVj
b2RlT2Zmc2V0c0p1bXBlZFRvKTsKIAogICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBiYXNpY0Jsb2Nrcy5zaXplKCk7IGkrKykgewogICAgICAgICAgICAgICAgICAgICBC
eXRlY29kZUJhc2ljQmxvY2sqIG90aGVyQmxvY2sgPSBiYXNpY0Jsb2Nrc1tpXS5nZXQoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxv
Y2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2su
aAppbmRleCBiZDdkM2FlOWJhMzQzZTFiMDcxNzllOThmMWVlODlkYTY1YmE3ZTIwLi40OTI1Njk1
ZGFlY2IwZDZiZjhiN2I2MDIyYzY5MDY0ZWIxM2E0YzNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5oCkBAIC0zNiw2ICszNiwx
MSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgQ29kZUJsb2NrOwogCitlbnVtIGNsYXNzIEJ5
dGVjb2RlQW5hbHlzaXNNb2RlIHsKKyAgICBTdGFuZGFyZCwKKyAgICBFeHRyYWN0R2VuZXJhdG9y
TGl2ZUNhbGxlZUxvY2FscworfTsKKwogY2xhc3MgQnl0ZWNvZGVCYXNpY0Jsb2NrIHsKICAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKQEAgLTcwLDcgKzc1LDcgQEAgY2xhc3Mg
Qnl0ZWNvZGVCYXNpY0Jsb2NrIHsKICAgICBGYXN0Qml0VmVjdG9yIG1fb3V0OwogfTsKIAotdm9p
ZCBjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2NrcyhDb2RlQmxvY2sqLCBWZWN0b3I8c3RkOjp1bmlx
dWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+Jik7Cit2b2lkIGNvbXB1dGVCeXRlY29kZUJhc2lj
QmxvY2tzKENvZGVCbG9jayosIEJ5dGVjb2RlQW5hbHlzaXNNb2RlLCBWZWN0b3I8c3RkOjp1bmlx
dWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+Jik7CiAKIGlubGluZSBCeXRlY29kZUJhc2ljQmxv
Y2s6OkJ5dGVjb2RlQmFzaWNCbG9jayh1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgbGVuZ3RoKQog
ICAgIDogbV9sZWFkZXJCeXRlY29kZU9mZnNldChzdGFydCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUdyYXBoLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUdyYXBoLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNmNmM2Q1ODNl
ZjkxMzZlMGMzNDdiMjE1YjA3ZTRlYWUwN2Q1OWEzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlR3JhcGguY3BwCkBAIC0wLDAgKzEsNDIg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgWXVzdWtlIFN1enVraSA8eXVzdWtlLnN1enVr
aUBzc2xhYi5pY3Mua2Vpby5hYy5qcD4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIkJ5dGVjb2RlR3JhcGguaCIKKworI2luY2x1ZGUgIkJ5dGVjb2RlQmFzaWNCbG9j
ay5oIgorCituYW1lc3BhY2UgSlNDIHsKKworQnl0ZWNvZGVHcmFwaDo6Qnl0ZWNvZGVHcmFwaChD
b2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVBbmFseXNpc01vZGUgYnl0ZWNvZGVBbmFseXNp
c01vZGUpCisgICAgOiBtX2NvZGVCbG9jayhjb2RlQmxvY2spCisgICAgLCBtX2J5dGVjb2RlQW5h
bHlzaXNNb2RlKGJ5dGVjb2RlQW5hbHlzaXNNb2RlKQoreworICAgIEFTU0VSVChtX2NvZGVCbG9j
ayk7CisgICAgY29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MobV9jb2RlQmxvY2ssIG1fYnl0ZWNv
ZGVBbmFseXNpc01vZGUsIG1fYmFzaWNCbG9ja3MpOworICAgIEFTU0VSVChtX2Jhc2ljQmxvY2tz
LnNpemUoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlR3JhcGguaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9CeXRlY29kZUdyYXBoLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDFiNDY4MGIxY2U0Y2Ey
ZGQ0MDVhYmJmZjkwOWI3YTc0OTI5MDU2NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUdyYXBoLmgKQEAgLTAsMCArMSw4NyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNiBZdXN1a2UgU3V6dWtpIDx5dXN1a2Uuc3V6dWtpQHNzbGFi
Lmljcy5rZWlvLmFjLmpwPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEJ5dGVjb2RlR3JhcGhfaAorI2Rl
ZmluZSBCeXRlY29kZUdyYXBoX2gKKworI2luY2x1ZGUgIkJ5dGVjb2RlQmFzaWNCbG9jay5oIgor
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEJ5dGVj
b2RlQmFzaWNCbG9jazsKK2NsYXNzIENvZGVCbG9jazsKKworY2xhc3MgQnl0ZWNvZGVHcmFwaCB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
Qnl0ZWNvZGVHcmFwaCk7CitwdWJsaWM6CisgICAgdHlwZWRlZiBWZWN0b3I8c3RkOjp1bmlxdWVf
cHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+IEJhc2ljQmxvY2tzVmVjdG9yOworCisgICAgQnl0ZWNv
ZGVHcmFwaChDb2RlQmxvY2sqLCBCeXRlY29kZUFuYWx5c2lzTW9kZSk7CisKKyAgICBCeXRlY29k
ZUFuYWx5c2lzTW9kZSBieXRlY29kZUFuYWx5c2lzTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fYnl0
ZWNvZGVBbmFseXNpc01vZGU7IH0KKworICAgIENvZGVCbG9jayogY29kZUJsb2NrKCkgY29uc3Qg
eyByZXR1cm4gbV9jb2RlQmxvY2s7IH0KKworICAgIEJhc2ljQmxvY2tzVmVjdG9yJiBiYXNpY0Js
b2NrcygpIHsgcmV0dXJuIG1fYmFzaWNCbG9ja3M7IH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1l
IEl0ZXJhdG9yPgorICAgIGNsYXNzIFJldmVyc2VJdGVyYWJsZSB7CisgICAgcHVibGljOgorICAg
ICAgICBSZXZlcnNlSXRlcmFibGUoSXRlcmF0b3IgYmVnaW4sIEl0ZXJhdG9yIGVuZCkKKyAgICAg
ICAgICAgIDogbV9iZWdpbihiZWdpbikKKyAgICAgICAgICAgICwgbV9lbmQoZW5kKQorICAgICAg
ICB7CisgICAgICAgIH0KKworICAgICAgICBzdGQ6OnJldmVyc2VfaXRlcmF0b3I8SXRlcmF0b3I+
IGJlZ2luKCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6cmV2ZXJzZV9pdGVy
YXRvcjxJdGVyYXRvcj4obV9lbmQpOworICAgICAgICB9CisKKyAgICAgICAgc3RkOjpyZXZlcnNl
X2l0ZXJhdG9yPEl0ZXJhdG9yPiBlbmQoKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4g
c3RkOjpyZXZlcnNlX2l0ZXJhdG9yPEl0ZXJhdG9yPihtX2JlZ2luKTsKKyAgICAgICAgfQorCisg
ICAgcHJpdmF0ZToKKyAgICAgICAgSXRlcmF0b3IgbV9iZWdpbjsKKyAgICAgICAgSXRlcmF0b3Ig
bV9lbmQ7CisgICAgfTsKKworICAgIFJldmVyc2VJdGVyYWJsZTxCYXNpY0Jsb2Nrc1ZlY3Rvcjo6
aXRlcmF0b3I+IGJhc2ljQmxvY2tzSW5SZXZlcnNlT3JkZXIoKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIHsgbV9iYXNpY0Jsb2Nrcy5iZWdpbigpLCBtX2Jhc2ljQmxvY2tzLmVuZCgpIH07CisgICAg
fQorCitwcml2YXRlOgorICAgIENvZGVCbG9jayogbV9jb2RlQmxvY2s7CisgICAgQnl0ZWNvZGVB
bmFseXNpc01vZGUgbV9ieXRlY29kZUFuYWx5c2lzTW9kZTsKKyAgICBCYXNpY0Jsb2Nrc1ZlY3Rv
ciBtX2Jhc2ljQmxvY2tzOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisjZW5kaWYgLy8gQnl0
ZWNvZGVHcmFwaF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Qnl0ZWNvZGVJbnNlcnRpb25TZXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZUluc2VydGlvblNldC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY0ZmU0NDZlNmEwZmZjZTNhZjczOWQ3
MTdlZDg1MDhlOTExMjVhMDgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnNlcnRpb25TZXQuaApAQCAtMCwwICsxLDQ0IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE2IFl1c3VrZSBTdXp1a2kgPHl1c3VrZS5zdXp1a2lAc3NsYWIu
aWNzLmtlaW8uYWMuanA+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQnl0ZWNvZGVJbnNlcnRpb25TZXRf
aAorI2RlZmluZSBCeXRlY29kZUluc2VydGlvblNldF9oCisKK25hbWVzcGFjZSBKU0MgeworCitj
bGFzcyBCeXRlY29kZUluc2VydGlvblNldCB7CitwdWJsaWM6CisgICAgQnl0ZWNvZGVJbnNlcnRp
b25TZXQoQnl0ZWNvZGVHcmFwaCYgZ3JhcGgpCisgICAgICAgIDogbV9ncmFwaChncmFwaCkKKyAg
ICB7CisgICAgfQorCitwcml2YXRlOgorICAgIEJ5dGVjb2RlR3JhcGgmIG1fZ3JhcGg7CisgICAg
VmVjdG9yPEluc2VydGlvbiwgOD4gbV9pbnNlcnRpb25zOworfTsKKworfSAvLyBuYW1lc3BhY2Ug
SlNDCisjZW5kaWYgLy8gQnl0ZWNvZGVJbnNlcnRpb25TZXRfaApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCmluZGV4IGJhMThhN2U5M2FlNDAy
MmE5MWE5MzUxYmYzZTA4NGYwODZjNTI4OTguLmQ4NGFjNDNiNzUzOWZkZjUxNThlYTMyM2I0YTU5
ZTQ1YmZkNDJjYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZUxpc3QuanNvbgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVMaXN0Lmpzb24KQEAgLTE2LDYgKzE2LDcgQEAKICAgICAgICAgICAgIHsgIm5hbWUiIDog
Im9wX25ld19hcnJheV93aXRoX3NpemUiLCAibGVuZ3RoIiA6IDQgfSwKICAgICAgICAgICAgIHsg
Im5hbWUiIDogIm9wX25ld19hcnJheV9idWZmZXIiLCAibGVuZ3RoIiA6IDUgfSwKICAgICAgICAg
ICAgIHsgIm5hbWUiIDogIm9wX25ld19yZWdleHAiLCAibGVuZ3RoIiA6IDMgfSwKKyAgICAgICAg
ICAgIHsgIm5hbWUiIDogIm9wX25ld19nZW5lcmF0b3JfZnJhbWUiLCAibGVuZ3RoIiA6IDMgfSwK
ICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX21vdiIsICJsZW5ndGgiIDogMyB9LAogICAgICAg
ICAgICAgeyAibmFtZSIgOiAib3Bfbm90IiwgImxlbmd0aCIgOiAzIH0sCiAgICAgICAgICAgICB7
ICJuYW1lIiA6ICJvcF9lcSIsICJsZW5ndGgiIDogNCB9LApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNwcApp
bmRleCA3MjI4YjAzMzM2NmM3YTY3YjUxMDQ4OGRmZTQ1ZjNkZDNjZmE0MzE1Li43YjcxODljMzFh
ZGJlZDU4ZmRkYjE2Yzc5YzRiZmY5MTg5MzNlZjk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNwcApA
QCAtMzUsMTAgKzM1LDkgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLUJ5dGVjb2RlTGl2ZW5lc3NB
bmFseXNpczo6Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzKENvZGVCbG9jayogY29kZUJsb2NrKQot
ICAgIDogbV9jb2RlQmxvY2soY29kZUJsb2NrKQorQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpC
eXRlY29kZUxpdmVuZXNzQW5hbHlzaXMoQnl0ZWNvZGVHcmFwaCYgZ3JhcGgpCisgICAgOiBtX2dy
YXBoKGdyYXBoKQogewotICAgIEFTU0VSVChtX2NvZGVCbG9jayk7CiAgICAgY29tcHV0ZSgpOwog
fQogCkBAIC01Niw5ICs1NSw5IEBAIHN0YXRpYyB1bnNpZ25lZCBnZXRMZWFkZXJPZmZzZXRGb3JC
YXNpY0Jsb2NrKHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+CiAgICAgcmV0dXJu
ICgqYmFzaWNCbG9jayktPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCk7CiB9CiAKLXN0YXRpYyBCeXRl
Y29kZUJhc2ljQmxvY2sqIGZpbmRCYXNpY0Jsb2NrV2l0aExlYWRlck9mZnNldChWZWN0b3I8c3Rk
Ojp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+JiBiYXNpY0Jsb2NrcywgdW5zaWduZWQg
bGVhZGVyT2Zmc2V0KQorc3RhdGljIEJ5dGVjb2RlQmFzaWNCbG9jayogZmluZEJhc2ljQmxvY2tX
aXRoTGVhZGVyT2Zmc2V0KEJ5dGVjb2RlR3JhcGgmIGdyYXBoLCB1bnNpZ25lZCBsZWFkZXJPZmZz
ZXQpCiB7Ci0gICAgcmV0dXJuICgqdHJ5QmluYXJ5U2VhcmNoPHN0ZDo6dW5pcXVlX3B0cjxCeXRl
Y29kZUJhc2ljQmxvY2s+LCB1bnNpZ25lZD4oYmFzaWNCbG9ja3MsIGJhc2ljQmxvY2tzLnNpemUo
KSwgbGVhZGVyT2Zmc2V0LCBnZXRMZWFkZXJPZmZzZXRGb3JCYXNpY0Jsb2NrKSkuZ2V0KCk7Cisg
ICAgcmV0dXJuICgqdHJ5QmluYXJ5U2VhcmNoPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2lj
QmxvY2s+LCB1bnNpZ25lZD4oZ3JhcGguYmFzaWNCbG9ja3MoKSwgZ3JhcGguYmFzaWNCbG9ja3Mo
KS5zaXplKCksIGxlYWRlck9mZnNldCwgZ2V0TGVhZGVyT2Zmc2V0Rm9yQmFzaWNCbG9jaykpLmdl
dCgpOwogfQogCiBzdGF0aWMgYm9vbCBibG9ja0NvbnRhaW5zQnl0ZWNvZGVPZmZzZXQoQnl0ZWNv
ZGVCYXNpY0Jsb2NrKiBibG9jaywgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpCkBAIC02Nyw3ICs2
Niw3IEBAIHN0YXRpYyBib29sIGJsb2NrQ29udGFpbnNCeXRlY29kZU9mZnNldChCeXRlY29kZUJh
c2ljQmxvY2sqIGJsb2NrLCB1bnNpZ25lZCBieXRlCiAgICAgcmV0dXJuIGJ5dGVjb2RlT2Zmc2V0
ID49IGxlYWRlck9mZnNldCAmJiBieXRlY29kZU9mZnNldCA8IGxlYWRlck9mZnNldCArIGJsb2Nr
LT50b3RhbEJ5dGVjb2RlTGVuZ3RoKCk7CiB9CiAKLXN0YXRpYyBCeXRlY29kZUJhc2ljQmxvY2sq
IGZpbmRCYXNpY0Jsb2NrRm9yQnl0ZWNvZGVPZmZzZXQoVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxC
eXRlY29kZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9ja3MsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0
KQorc3RhdGljIEJ5dGVjb2RlQmFzaWNCbG9jayogZmluZEJhc2ljQmxvY2tGb3JCeXRlY29kZU9m
ZnNldChCeXRlY29kZUdyYXBoJiBncmFwaCwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpCiB7CiAv
KgogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBiYXNpY0Jsb2Nrcy5zaXplKCk7IGkrKykg
ewpAQCAtNzYsNiArNzUsOCBAQCBzdGF0aWMgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBmaW5kQmFzaWNC
bG9ja0ZvckJ5dGVjb2RlT2Zmc2V0KFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdAogICAgIH0KICAgICBy
ZXR1cm4gMDsKICovCisgICAgQnl0ZWNvZGVHcmFwaDo6QmFzaWNCbG9ja3NWZWN0b3ImIGJhc2lj
QmxvY2tzID0gZ3JhcGguYmFzaWNCbG9ja3MoKTsKKwogICAgIHN0ZDo6dW5pcXVlX3B0cjxCeXRl
Y29kZUJhc2ljQmxvY2s+KiBiYXNpY0Jsb2NrID0gYXBwcm94aW1hdGVCaW5hcnlTZWFyY2g8c3Rk
Ojp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4sIHVuc2lnbmVkPigKICAgICAgICAgYmFz
aWNCbG9ja3MsIGJhc2ljQmxvY2tzLnNpemUoKSwgYnl0ZWNvZGVPZmZzZXQsIGdldExlYWRlck9m
ZnNldEZvckJhc2ljQmxvY2spOwogICAgIC8vIFdlIGZvdW5kIHRoZSBibG9jayB3ZSB3ZXJlIGxv
b2tpbmcgZm9yLgpAQCAtOTgsNyArOTksNyBAQCBzdGF0aWMgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBm
aW5kQmFzaWNCbG9ja0ZvckJ5dGVjb2RlT2Zmc2V0KFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdAogLy8g
U2ltcGxpZmllZCBpbnRlcmZhY2UgdG8gYnl0ZWNvZGUgdXNlL2RlZiwgd2hpY2ggZGV0ZXJtaW5l
cyBkZWZzIGZpcnN0IGFuZCB0aGVuIHVzZXMsIGFuZCBpbmNsdWRlcwogLy8gZXhjZXB0aW9uIGhh
bmRsZXJzIGluIHRoZSB1c2VzLgogdGVtcGxhdGU8dHlwZW5hbWUgVXNlRnVuY3RvciwgdHlwZW5h
bWUgRGVmRnVuY3Rvcj4KLXN0YXRpYyB2b2lkIHN0ZXBPdmVySW5zdHJ1Y3Rpb24oQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2ssIFZlY3RvcjxzdGQ6OnVuaXF1
ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mIGJhc2ljQmxvY2tzLCB1bnNpZ25lZCBieXRlY29k
ZU9mZnNldCwgY29uc3QgVXNlRnVuY3RvciYgdXNlLCBjb25zdCBEZWZGdW5jdG9yJiBkZWYpCitz
dGF0aWMgdm9pZCBzdGVwT3Zlckluc3RydWN0aW9uKENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRl
Y29kZUFuYWx5c2lzTW9kZSBieXRlY29kZUFuYWx5c2lzTW9kZSwgQnl0ZWNvZGVCYXNpY0Jsb2Nr
KiBibG9jaywgQnl0ZWNvZGVHcmFwaCYgZ3JhcGgsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBj
b25zdCBVc2VGdW5jdG9yJiB1c2UsIGNvbnN0IERlZkZ1bmN0b3ImIGRlZikKIHsKICAgICAvLyBU
aGlzIGFic3RyYWN0bHkgZXhlY3V0ZSB0aGUgaW5zdHJ1Y3Rpb24gaW4gcmV2ZXJzZS4gSW5zdHJ1
Y3Rpb25zIGxvZ2ljYWxseSBmaXJzdCB1c2Ugb3BlcmFuZHMgYW5kCiAgICAgLy8gdGhlbiBkZWZp
bmUgb3BlcmFuZHMuIFRoaXMgbG9naWNhbCBvcmRlcmluZyBpcyBuZWNlc3NhcnkgZm9yIG9wZXJh
dGlvbnMgdGhhdCB1c2UgYW5kIGRlZiB0aGUgc2FtZQpAQCAtMTE2LDE0ICsxMTcsMTQgQEAgc3Rh
dGljIHZvaWQgc3RlcE92ZXJJbnN0cnVjdGlvbihDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNv
ZGVCYXNpY0Jsb2NrKiBibG9jaywKICAgICAvLyBmaXJzdCBhZGQgaXQgdG8gdGhlIG91dCBzZXQg
KHRoZSB1c2UpLCBhbmQgdGhlbiB3ZSdkIHJlbW92ZSBpdCAodGhlIGRlZikuCiAgICAgCiAgICAg
Y29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldCgKLSAgICAgICAgY29kZUJsb2NrLCBibG9jaywg
Ynl0ZWNvZGVPZmZzZXQsCisgICAgICAgIGNvZGVCbG9jaywgYnl0ZWNvZGVBbmFseXNpc01vZGUs
IGJsb2NrLCBieXRlY29kZU9mZnNldCwKICAgICAgICAgWyZdIChDb2RlQmxvY2sqIGNvZGVCbG9j
aywgSW5zdHJ1Y3Rpb24qLCBPcGNvZGVJRCwgaW50IG9wZXJhbmQpIHsKICAgICAgICAgICAgIGlm
IChpc1ZhbGlkUmVnaXN0ZXJGb3JMaXZlbmVzcyhjb2RlQmxvY2ssIG9wZXJhbmQpKQogICAgICAg
ICAgICAgICAgIGRlZihWaXJ0dWFsUmVnaXN0ZXIob3BlcmFuZCkudG9Mb2NhbCgpKTsKICAgICAg
ICAgfSk7CiAKICAgICBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAotICAgICAgICBjb2Rl
QmxvY2ssIGJsb2NrLCBieXRlY29kZU9mZnNldCwKKyAgICAgICAgY29kZUJsb2NrLCBieXRlY29k
ZUFuYWx5c2lzTW9kZSwgYmxvY2ssIGJ5dGVjb2RlT2Zmc2V0LAogICAgICAgICBbJl0gKENvZGVC
bG9jayogY29kZUJsb2NrLCBJbnN0cnVjdGlvbiosIE9wY29kZUlELCBpbnQgb3BlcmFuZCkgewog
ICAgICAgICAgICAgaWYgKGlzVmFsaWRSZWdpc3RlckZvckxpdmVuZXNzKGNvZGVCbG9jaywgb3Bl
cmFuZCkpCiAgICAgICAgICAgICAgICAgdXNlKFZpcnR1YWxSZWdpc3RlcihvcGVyYW5kKS50b0xv
Y2FsKCkpOwpAQCAtMTMyLDE2ICsxMzMsMTYgQEAgc3RhdGljIHZvaWQgc3RlcE92ZXJJbnN0cnVj
dGlvbihDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaywKICAg
ICAvLyBJZiB3ZSBoYXZlIGFuIGV4Y2VwdGlvbiBoYW5kbGVyLCB3ZSB3YW50IHRoZSBsaXZlLWlu
IHZhcmlhYmxlcyBvZiB0aGUgCiAgICAgLy8gZXhjZXB0aW9uIGhhbmRsZXIgYmxvY2sgdG8gYmUg
aW5jbHVkZWQgaW4gdGhlIGxpdmUtaW4gb2YgdGhpcyBwYXJ0aWN1bGFyIGJ5dGVjb2RlLgogICAg
IGlmIChIYW5kbGVySW5mbyogaGFuZGxlciA9IGNvZGVCbG9jay0+aGFuZGxlckZvckJ5dGVjb2Rl
T2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KSkgewotICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGhh
bmRsZXJCbG9jayA9IGZpbmRCYXNpY0Jsb2NrV2l0aExlYWRlck9mZnNldChiYXNpY0Jsb2Nrcywg
aGFuZGxlci0+dGFyZ2V0KTsKKyAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBoYW5kbGVyQmxv
Y2sgPSBmaW5kQmFzaWNCbG9ja1dpdGhMZWFkZXJPZmZzZXQoZ3JhcGgsIGhhbmRsZXItPnRhcmdl
dCk7CiAgICAgICAgIEFTU0VSVChoYW5kbGVyQmxvY2spOwogICAgICAgICBoYW5kbGVyQmxvY2st
PmluKCkuZm9yRWFjaFNldEJpdCh1c2UpOwogICAgIH0KIH0KIAotc3RhdGljIHZvaWQgc3RlcE92
ZXJJbnN0cnVjdGlvbihDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBi
bG9jaywgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYgYmFzaWNC
bG9ja3MsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBGYXN0Qml0VmVjdG9yJiBvdXQpCitzdGF0
aWMgdm9pZCBzdGVwT3Zlckluc3RydWN0aW9uKENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29k
ZUFuYWx5c2lzTW9kZSBieXRlY29kZUFuYWx5c2lzTW9kZSwgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBi
bG9jaywgQnl0ZWNvZGVHcmFwaCYgZ3JhcGgsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBGYXN0
Qml0VmVjdG9yJiBvdXQpCiB7CiAgICAgc3RlcE92ZXJJbnN0cnVjdGlvbigKLSAgICAgICAgY29k
ZUJsb2NrLCBibG9jaywgYmFzaWNCbG9ja3MsIGJ5dGVjb2RlT2Zmc2V0LAorICAgICAgICBjb2Rl
QmxvY2ssIGJ5dGVjb2RlQW5hbHlzaXNNb2RlLCBibG9jaywgZ3JhcGgsIGJ5dGVjb2RlT2Zmc2V0
LAogICAgICAgICBbJl0gKHVuc2lnbmVkIGJpdEluZGV4KSB7CiAgICAgICAgICAgICAvLyBUaGlz
IGlzIHRoZSB1c2UgZnVuY3Rvciwgc28gd2Ugc2V0IHRoZSBiaXQuCiAgICAgICAgICAgICBvdXQu
c2V0KGJpdEluZGV4KTsKQEAgLTE1Miw3ICsxNTMsNyBAQCBzdGF0aWMgdm9pZCBzdGVwT3Zlcklu
c3RydWN0aW9uKENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2Nr
LAogICAgICAgICB9KTsKIH0KIAotc3RhdGljIHZvaWQgY29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JC
eXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBi
bG9jaywgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYgYmFzaWNC
bG9ja3MsIHVuc2lnbmVkIHRhcmdldE9mZnNldCwgRmFzdEJpdFZlY3RvciYgcmVzdWx0KQorc3Rh
dGljIHZvaWQgY29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sq
IGNvZGVCbG9jaywgQnl0ZWNvZGVBbmFseXNpc01vZGUgYnl0ZWNvZGVBbmFseXNpc01vZGUsIEJ5
dGVjb2RlQmFzaWNCbG9jayogYmxvY2ssIEJ5dGVjb2RlR3JhcGgmIGdyYXBoLCB1bnNpZ25lZCB0
YXJnZXRPZmZzZXQsIEZhc3RCaXRWZWN0b3ImIHJlc3VsdCkKIHsKICAgICBBU1NFUlQoIWJsb2Nr
LT5pc0V4aXRCbG9jaygpKTsKICAgICBBU1NFUlQoIWJsb2NrLT5pc0VudHJ5QmxvY2soKSk7CkBA
IC0xNjQsNDQgKzE2NSw0NCBAQCBzdGF0aWMgdm9pZCBjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJ5
dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29kZQogICAgICAgICBpZiAo
dGFyZ2V0T2Zmc2V0ID4gYnl0ZWNvZGVPZmZzZXQpCiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgCi0gICAgICAgIHN0ZXBPdmVySW5zdHJ1Y3Rpb24oY29kZUJsb2NrLCBibG9jaywgYmFzaWNC
bG9ja3MsIGJ5dGVjb2RlT2Zmc2V0LCBvdXQpOworICAgICAgICBzdGVwT3Zlckluc3RydWN0aW9u
KGNvZGVCbG9jaywgYnl0ZWNvZGVBbmFseXNpc01vZGUsIGJsb2NrLCBncmFwaCwgYnl0ZWNvZGVP
ZmZzZXQsIG91dCk7CiAgICAgfQogCiAgICAgcmVzdWx0LnNldChvdXQpOwogfQogCi1zdGF0aWMg
dm9pZCBjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJsb2NrKENvZGVCbG9jayogY29kZUJsb2NrLCBC
eXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2Rl
QmFzaWNCbG9jaz4+JiBiYXNpY0Jsb2NrcykKK3N0YXRpYyB2b2lkIGNvbXB1dGVMb2NhbExpdmVu
ZXNzRm9yQmxvY2soQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQW5hbHlzaXNNb2RlIGJ5
dGVjb2RlQW5hbHlzaXNNb2RlLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrLCBCeXRlY29kZUdy
YXBoJiBncmFwaCkKIHsKICAgICBpZiAoYmxvY2stPmlzRXhpdEJsb2NrKCkgfHwgYmxvY2stPmlz
RW50cnlCbG9jaygpKQogICAgICAgICByZXR1cm47Ci0gICAgY29tcHV0ZUxvY2FsTGl2ZW5lc3NG
b3JCeXRlY29kZU9mZnNldChjb2RlQmxvY2ssIGJsb2NrLCBiYXNpY0Jsb2NrcywgYmxvY2stPmxl
YWRlckJ5dGVjb2RlT2Zmc2V0KCksIGJsb2NrLT5pbigpKTsKKyAgICBjb21wdXRlTG9jYWxMaXZl
bmVzc0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9jaywgYnl0ZWNvZGVBbmFseXNpc01vZGUsIGJs
b2NrLCBncmFwaCwgYmxvY2stPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCksIGJsb2NrLT5pbigpKTsK
IH0KIAogdm9pZCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OnJ1bkxpdmVuZXNzRml4cG9pbnQo
KQogewotICAgIFVubGlua2VkQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jayA9IG1fY29kZUJs
b2NrLT51bmxpbmtlZENvZGVCbG9jaygpOworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gbV9n
cmFwaC5jb2RlQmxvY2soKTsKKyAgICBVbmxpbmtlZENvZGVCbG9jayogdW5saW5rZWRDb2RlQmxv
Y2sgPSBjb2RlQmxvY2stPnVubGlua2VkQ29kZUJsb2NrKCk7CiAgICAgdW5zaWduZWQgbnVtYmVy
T2ZWYXJpYWJsZXMgPSB1bmxpbmtlZENvZGVCbG9jay0+bV9udW1DYWxsZWVMb2NhbHM7CiAKLSAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9iYXNpY0Jsb2Nrcy5zaXplKCk7IGkrKykgewot
ICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrID0gbV9iYXNpY0Jsb2Nrc1tpXS5nZXQo
KTsKKyAgICBmb3IgKHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+JiBibG9jayA6
IG1fZ3JhcGguYmFzaWNCbG9ja3MoKSkgewogICAgICAgICBibG9jay0+aW4oKS5yZXNpemUobnVt
YmVyT2ZWYXJpYWJsZXMpOwogICAgICAgICBibG9jay0+b3V0KCkucmVzaXplKG51bWJlck9mVmFy
aWFibGVzKTsKICAgICB9CiAKICAgICBib29sIGNoYW5nZWQ7Ci0gICAgbV9iYXNpY0Jsb2Nrcy5s
YXN0KCktPmluKCkuY2xlYXJBbGwoKTsKLSAgICBtX2Jhc2ljQmxvY2tzLmxhc3QoKS0+b3V0KCku
Y2xlYXJBbGwoKTsKKyAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGxhc3RCbG9jayA9IG1fZ3JhcGgu
YmFzaWNCbG9ja3MoKS5sYXN0KCkuZ2V0KCk7CisgICAgbGFzdEJsb2NrLT5pbigpLmNsZWFyQWxs
KCk7CisgICAgbGFzdEJsb2NrLT5vdXQoKS5jbGVhckFsbCgpOwogICAgIEZhc3RCaXRWZWN0b3Ig
bmV3T3V0OwotICAgIG5ld091dC5yZXNpemUobV9iYXNpY0Jsb2Nrcy5sYXN0KCktPm91dCgpLm51
bUJpdHMoKSk7CisgICAgbmV3T3V0LnJlc2l6ZShsYXN0QmxvY2stPm91dCgpLm51bUJpdHMoKSk7
CiAgICAgZG8gewogICAgICAgICBjaGFuZ2VkID0gZmFsc2U7Ci0gICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IG1fYmFzaWNCbG9ja3Muc2l6ZSgpIC0gMTsgaS0tOykgewotICAgICAgICAgICAgQnl0
ZWNvZGVCYXNpY0Jsb2NrKiBibG9jayA9IG1fYmFzaWNCbG9ja3NbaV0uZ2V0KCk7CisgICAgICAg
IGZvciAoc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4mIGJsb2NrIDogbV9ncmFw
aC5iYXNpY0Jsb2Nrc0luUmV2ZXJzZU9yZGVyKCkpIHsKICAgICAgICAgICAgIG5ld091dC5jbGVh
ckFsbCgpOwogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8IGJsb2NrLT5zdWNj
ZXNzb3JzKCkuc2l6ZSgpOyBqKyspCiAgICAgICAgICAgICAgICAgbmV3T3V0Lm1lcmdlKGJsb2Nr
LT5zdWNjZXNzb3JzKClbal0tPmluKCkpOwogICAgICAgICAgICAgYm9vbCBvdXREaWRDaGFuZ2Ug
PSBibG9jay0+b3V0KCkuc2V0QW5kQ2hlY2sobmV3T3V0KTsKLSAgICAgICAgICAgIGNvbXB1dGVM
b2NhbExpdmVuZXNzRm9yQmxvY2sobV9jb2RlQmxvY2ssIGJsb2NrLCBtX2Jhc2ljQmxvY2tzKTsK
KyAgICAgICAgICAgIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQmxvY2soY29kZUJsb2NrLCBtX2dy
YXBoLmJ5dGVjb2RlQW5hbHlzaXNNb2RlKCksIGJsb2NrLmdldCgpLCBtX2dyYXBoKTsKICAgICAg
ICAgICAgIGNoYW5nZWQgfD0gb3V0RGlkQ2hhbmdlOwogICAgICAgICB9CiAgICAgfSB3aGlsZSAo
Y2hhbmdlZCk7CkBAIC0yMDksMTIgKzIxMCwxMiBAQCB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFs
eXNpczo6cnVuTGl2ZW5lc3NGaXhwb2ludCgpCiAKIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5
c2lzOjpnZXRMaXZlbmVzc0luZm9BdEJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zm
c2V0LCBGYXN0Qml0VmVjdG9yJiByZXN1bHQpCiB7Ci0gICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBi
bG9jayA9IGZpbmRCYXNpY0Jsb2NrRm9yQnl0ZWNvZGVPZmZzZXQobV9iYXNpY0Jsb2NrcywgYnl0
ZWNvZGVPZmZzZXQpOworICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2sgPSBmaW5kQmFzaWNC
bG9ja0ZvckJ5dGVjb2RlT2Zmc2V0KG1fZ3JhcGgsIGJ5dGVjb2RlT2Zmc2V0KTsKICAgICBBU1NF
UlQoYmxvY2spOwogICAgIEFTU0VSVCghYmxvY2stPmlzRW50cnlCbG9jaygpKTsKICAgICBBU1NF
UlQoIWJsb2NrLT5pc0V4aXRCbG9jaygpKTsKICAgICByZXN1bHQucmVzaXplKGJsb2NrLT5vdXQo
KS5udW1CaXRzKCkpOwotICAgIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQnl0ZWNvZGVPZmZzZXQo
bV9jb2RlQmxvY2ssIGJsb2NrLCBtX2Jhc2ljQmxvY2tzLCBieXRlY29kZU9mZnNldCwgcmVzdWx0
KTsKKyAgICBjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJ5dGVjb2RlT2Zmc2V0KG1fZ3JhcGguY29k
ZUJsb2NrKCksIG1fZ3JhcGguYnl0ZWNvZGVBbmFseXNpc01vZGUoKSwgYmxvY2ssIG1fZ3JhcGgs
IGJ5dGVjb2RlT2Zmc2V0LCByZXN1bHQpOwogfQogCiBib29sIEJ5dGVjb2RlTGl2ZW5lc3NBbmFs
eXNpczo6b3BlcmFuZElzTGl2ZUF0Qnl0ZWNvZGVPZmZzZXQoaW50IG9wZXJhbmQsIHVuc2lnbmVk
IGJ5dGVjb2RlT2Zmc2V0KQpAQCAtMjM2LDExICsyMzcsMTEgQEAgRmFzdEJpdFZlY3RvciBCeXRl
Y29kZUxpdmVuZXNzQW5hbHlzaXM6OmdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQodW5z
aWduZWQKIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlRnVsbExpdmVuZXNz
KEZ1bGxCeXRlY29kZUxpdmVuZXNzJiByZXN1bHQpCiB7CiAgICAgRmFzdEJpdFZlY3RvciBvdXQ7
CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBtX2dyYXBoLmNvZGVCbG9jaygpOwogICAgIAot
ICAgIHJlc3VsdC5tX21hcC5yZXNpemUobV9jb2RlQmxvY2stPmluc3RydWN0aW9ucygpLnNpemUo
KSk7CisgICAgcmVzdWx0Lm1fbWFwLnJlc2l6ZShjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLnNp
emUoKSk7CiAgICAgCi0gICAgZm9yICh1bnNpZ25lZCBpID0gbV9iYXNpY0Jsb2Nrcy5zaXplKCk7
IGktLTspIHsKLSAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jayA9IG1fYmFzaWNCbG9j
a3NbaV0uZ2V0KCk7CisgICAgZm9yIChzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2Nr
PiYgYmxvY2sgOiBtX2dyYXBoLmJhc2ljQmxvY2tzSW5SZXZlcnNlT3JkZXIoKSkgewogICAgICAg
ICBpZiAoYmxvY2stPmlzRW50cnlCbG9jaygpIHx8IGJsb2NrLT5pc0V4aXRCbG9jaygpKQogICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgIApAQCAtMjQ4LDcgKzI0OSw3IEBAIHZvaWQgQnl0
ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlRnVsbExpdmVuZXNzKEZ1bGxCeXRlY29kZUxp
dmVuZXNzJiByZXN1bHQpCiAgICAgICAgIAogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBibG9j
ay0+Ynl0ZWNvZGVPZmZzZXRzKCkuc2l6ZSgpOyBpLS07KSB7CiAgICAgICAgICAgICB1bnNpZ25l
ZCBieXRlY29kZU9mZnNldCA9IGJsb2NrLT5ieXRlY29kZU9mZnNldHMoKVtpXTsKLSAgICAgICAg
ICAgIHN0ZXBPdmVySW5zdHJ1Y3Rpb24obV9jb2RlQmxvY2ssIGJsb2NrLCBtX2Jhc2ljQmxvY2tz
LCBieXRlY29kZU9mZnNldCwgb3V0KTsKKyAgICAgICAgICAgIHN0ZXBPdmVySW5zdHJ1Y3Rpb24o
Y29kZUJsb2NrLCBtX2dyYXBoLmJ5dGVjb2RlQW5hbHlzaXNNb2RlKCksIGJsb2NrLmdldCgpLCBt
X2dyYXBoLCBieXRlY29kZU9mZnNldCwgb3V0KTsKICAgICAgICAgICAgIHJlc3VsdC5tX21hcFti
eXRlY29kZU9mZnNldF0gPSBvdXQ7CiAgICAgICAgIH0KICAgICB9CkBAIC0yNTgsMTEgKzI1OSwx
MSBAQCB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0ZUtpbGxzKEJ5dGVjb2Rl
S2lsbHMmIHJlc3VsdCkKIHsKICAgICBGYXN0Qml0VmVjdG9yIG91dDsKICAgICAKLSAgICByZXN1
bHQubV9jb2RlQmxvY2sgPSBtX2NvZGVCbG9jazsKLSAgICByZXN1bHQubV9raWxsU2V0cyA9IHN0
ZDo6bWFrZV91bmlxdWU8Qnl0ZWNvZGVLaWxsczo6S2lsbFNldFtdPihtX2NvZGVCbG9jay0+aW5z
dHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IG1fZ3JhcGgu
Y29kZUJsb2NrKCk7CisgICAgcmVzdWx0Lm1fY29kZUJsb2NrID0gY29kZUJsb2NrOworICAgIHJl
c3VsdC5tX2tpbGxTZXRzID0gc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZUtpbGxzOjpLaWxsU2V0
W10+KGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKICAgICAKLSAgICBmb3IgKHVu
c2lnbmVkIGkgPSBtX2Jhc2ljQmxvY2tzLnNpemUoKTsgaS0tOykgewotICAgICAgICBCeXRlY29k
ZUJhc2ljQmxvY2sqIGJsb2NrID0gbV9iYXNpY0Jsb2Nrc1tpXS5nZXQoKTsKKyAgICBmb3IgKHN0
ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+JiBibG9jayA6IG1fZ3JhcGguYmFzaWNC
bG9ja3NJblJldmVyc2VPcmRlcigpKSB7CiAgICAgICAgIGlmIChibG9jay0+aXNFbnRyeUJsb2Nr
KCkgfHwgYmxvY2stPmlzRXhpdEJsb2NrKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAg
ICAgCkBAIC0yNzEsNyArMjcyLDcgQEAgdm9pZCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmNv
bXB1dGVLaWxscyhCeXRlY29kZUtpbGxzJiByZXN1bHQpCiAgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IGJsb2NrLT5ieXRlY29kZU9mZnNldHMoKS5zaXplKCk7IGktLTspIHsKICAgICAgICAgICAg
IHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0ID0gYmxvY2stPmJ5dGVjb2RlT2Zmc2V0cygpW2ldOwog
ICAgICAgICAgICAgc3RlcE92ZXJJbnN0cnVjdGlvbigKLSAgICAgICAgICAgICAgICBtX2NvZGVC
bG9jaywgYmxvY2ssIG1fYmFzaWNCbG9ja3MsIGJ5dGVjb2RlT2Zmc2V0LAorICAgICAgICAgICAg
ICAgIGNvZGVCbG9jaywgbV9ncmFwaC5ieXRlY29kZUFuYWx5c2lzTW9kZSgpLCBibG9jay5nZXQo
KSwgbV9ncmFwaCwgYnl0ZWNvZGVPZmZzZXQsCiAgICAgICAgICAgICAgICAgWyZdICh1bnNpZ25l
ZCBpbmRleCkgewogICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIGZvciB1c2VzLgogICAg
ICAgICAgICAgICAgICAgICBpZiAob3V0LmdldChpbmRleCkpCkBAIC0yODksMTEgKzI5MCwxMiBA
QCB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0ZUtpbGxzKEJ5dGVjb2RlS2ls
bHMmIHJlc3VsdCkKIAogdm9pZCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmR1bXBSZXN1bHRz
KCkKIHsKLSAgICBJbnRlcnByZXRlciogaW50ZXJwcmV0ZXIgPSBtX2NvZGVCbG9jay0+dm0oKS0+
aW50ZXJwcmV0ZXI7Ci0gICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luID0gbV9jb2Rl
QmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IG1fYmFzaWNCbG9ja3Muc2l6ZSgpOyBpKyspIHsKLSAgICAgICAgQnl0ZWNvZGVCYXNpY0Js
b2NrKiBibG9jayA9IG1fYmFzaWNCbG9ja3NbaV0uZ2V0KCk7Ci0gICAgICAgIGRhdGFMb2dGKCJc
bkJ5dGVjb2RlIGJhc2ljIGJsb2NrICV1OiAlcCAob2Zmc2V0OiAldSwgbGVuZ3RoOiAldSlcbiIs
IGksIGJsb2NrLCBibG9jay0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKSwgYmxvY2stPnRvdGFsQnl0
ZWNvZGVMZW5ndGgoKSk7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBtX2dyYXBoLmNvZGVC
bG9jaygpOworICAgIEludGVycHJldGVyKiBpbnRlcnByZXRlciA9IGNvZGVCbG9jay0+dm0oKS0+
aW50ZXJwcmV0ZXI7CisgICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luID0gY29kZUJs
b2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpOworICAgIHVuc2lnbmVkIGkgPSAwOworICAgIGZv
ciAoc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4mIGJsb2NrIDogbV9ncmFwaC5i
YXNpY0Jsb2NrcygpKSB7CisgICAgICAgIGRhdGFMb2dGKCJcbkJ5dGVjb2RlIGJhc2ljIGJsb2Nr
ICV1OiAlcCAob2Zmc2V0OiAldSwgbGVuZ3RoOiAldSlcbiIsIGkrKywgYmxvY2suZ2V0KCksIGJs
b2NrLT5sZWFkZXJCeXRlY29kZU9mZnNldCgpLCBibG9jay0+dG90YWxCeXRlY29kZUxlbmd0aCgp
KTsKICAgICAgICAgZGF0YUxvZ0YoIlN1Y2Nlc3NvcnM6ICIpOwogICAgICAgICBmb3IgKHVuc2ln
bmVkIGogPSAwOyBqIDwgYmxvY2stPnN1Y2Nlc3NvcnMoKS5zaXplKCk7IGorKykgewogICAgICAg
ICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBzdWNjZXNzb3IgPSBibG9jay0+c3VjY2Vzc29ycygp
W2pdOwpAQCAtMzAxLDExICszMDMsMTEgQEAgdm9pZCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6
OmR1bXBSZXN1bHRzKCkKICAgICAgICAgfQogICAgICAgICBkYXRhTG9nRigiXG4iKTsKICAgICAg
ICAgaWYgKGJsb2NrLT5pc0VudHJ5QmxvY2soKSkgewotICAgICAgICAgICAgZGF0YUxvZ0YoIkVu
dHJ5IGJsb2NrICVwXG4iLCBibG9jayk7CisgICAgICAgICAgICBkYXRhTG9nRigiRW50cnkgYmxv
Y2sgJXBcbiIsIGJsb2NrLmdldCgpKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9
CiAgICAgICAgIGlmIChibG9jay0+aXNFeGl0QmxvY2soKSkgewotICAgICAgICAgICAgZGF0YUxv
Z0YoIkV4aXQgYmxvY2s6ICVwXG4iLCBibG9jayk7CisgICAgICAgICAgICBkYXRhTG9nRigiRXhp
dCBibG9jazogJXBcbiIsIGJsb2NrLmdldCgpKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICB9CiAgICAgICAgIGZvciAodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQgPSBibG9jay0+bGVh
ZGVyQnl0ZWNvZGVPZmZzZXQoKTsgYnl0ZWNvZGVPZmZzZXQgPCBibG9jay0+bGVhZGVyQnl0ZWNv
ZGVPZmZzZXQoKSArIGJsb2NrLT50b3RhbEJ5dGVjb2RlTGVuZ3RoKCk7KSB7CkBAIC0zMTgsNyAr
MzIwLDcgQEAgdm9pZCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmR1bXBSZXN1bHRzKCkKICAg
ICAgICAgICAgICAgICAgICAgZGF0YUxvZ0YoIiV1ICIsIGopOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgZGF0YUxvZ0YoIlxuIik7Ci0gICAgICAgICAgICBtX2NvZGVCbG9jay0+ZHVtcEJ5
dGVjb2RlKFdURjo6ZGF0YUZpbGUoKSwgbV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpLT5nbG9i
YWxFeGVjKCksIGluc3RydWN0aW9uc0JlZ2luLCBjdXJyZW50SW5zdHJ1Y3Rpb24pOworICAgICAg
ICAgICAgY29kZUJsb2NrLT5kdW1wQnl0ZWNvZGUoV1RGOjpkYXRhRmlsZSgpLCBjb2RlQmxvY2st
Pmdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVjKCksIGluc3RydWN0aW9uc0JlZ2luLCBjdXJyZW50
SW5zdHJ1Y3Rpb24pOwogCiAgICAgICAgICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGludGVycHJl
dGVyLT5nZXRPcGNvZGVJRChpbnN0cnVjdGlvbnNCZWdpbltieXRlY29kZU9mZnNldF0udS5vcGNv
ZGUpOwogICAgICAgICAgICAgdW5zaWduZWQgb3Bjb2RlTGVuZ3RoID0gb3Bjb2RlTGVuZ3Roc1tv
cGNvZGVJRF07CkBAIC0zMzcsOCArMzM5LDYgQEAgdm9pZCBCeXRlY29kZUxpdmVuZXNzQW5hbHlz
aXM6OmR1bXBSZXN1bHRzKCkKIAogdm9pZCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1
dGUoKQogewotICAgIGNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzKG1fY29kZUJsb2NrLCBtX2Jh
c2ljQmxvY2tzKTsKLSAgICBBU1NFUlQobV9iYXNpY0Jsb2Nrcy5zaXplKCkpOwogICAgIHJ1bkxp
dmVuZXNzRml4cG9pbnQoKTsKIAogICAgIGlmIChPcHRpb25zOjpkdW1wQnl0ZWNvZGVMaXZlbmVz
c1Jlc3VsdHMoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuaAppbmRleCBlY2UxNmYyMWYwMTUxMGE2NDI3ZmQ4
NDExNDA3OWJlZDg3MGMwODc1Li4zNWRmNWYxZjM4Zjg5N2I5NTIwNmUyMmM0MzJmYzc1YmVmM2Ji
MDQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVM
aXZlbmVzc0FuYWx5c2lzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5oCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIEJ5dGVj
b2RlTGl2ZW5lc3NBbmFseXNpc19oCiAKICNpbmNsdWRlICJCeXRlY29kZUJhc2ljQmxvY2suaCIK
KyNpbmNsdWRlICJCeXRlY29kZUdyYXBoLmgiCiAjaW5jbHVkZSA8d3RmL0Zhc3RCaXRWZWN0b3Iu
aD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAg
LTQxLDcgKzQyLDcgQEAgY2xhc3MgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzIHsKICAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShCeXRlY29kZUxp
dmVuZXNzQW5hbHlzaXMpOwogcHVibGljOgotICAgIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcyhD
b2RlQmxvY2sqKTsKKyAgICBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMoQnl0ZWNvZGVHcmFwaCYp
OwogICAgIAogICAgIGJvb2wgb3BlcmFuZElzTGl2ZUF0Qnl0ZWNvZGVPZmZzZXQoaW50IG9wZXJh
bmQsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KTsKICAgICBGYXN0Qml0VmVjdG9yIGdldExpdmVu
ZXNzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpOwpAQCAtNTYs
OCArNTcsNyBAQCBjbGFzcyBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMgewogCiAgICAgdm9pZCBn
ZXRMaXZlbmVzc0luZm9BdEJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBG
YXN0Qml0VmVjdG9yJik7CiAKLSAgICBDb2RlQmxvY2sqIG1fY29kZUJsb2NrOwotICAgIFZlY3Rv
cjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4gbV9iYXNpY0Jsb2NrczsKKyAg
ICBCeXRlY29kZUdyYXBoJiBtX2dyYXBoOwogfTsKIAogaW5saW5lIGJvb2wgb3BlcmFuZElzQWx3
YXlzTGl2ZShpbnQgb3BlcmFuZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZVVzZURlZi5oCmluZGV4IDE0ZTI2YjgyNzEzZjlkYWI5MGVmMDZlYWJiMjJjODE4
YWI3MDBlYTIuLmQ3Y2YyMzZlMGRmMzIzNDVmOGQwMDllZGRlNDAwZDFjYTVlMmQ1YjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCkBAIC0z
Miw3ICszMiw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9y
Pgogdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAotICAgIENvZGVCbG9jayogY29k
ZUJsb2NrLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9mZnNl
dCwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0
ZWNvZGVBbmFseXNpc01vZGUgYnl0ZWNvZGVBbmFseXNpc01vZGUsIEJ5dGVjb2RlQmFzaWNCbG9j
ayogYmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBjb25zdCBGdW5jdG9yJiBmdW5jdG9y
KQogewogICAgIEludGVycHJldGVyKiBpbnRlcnByZXRlciA9IGNvZGVCbG9jay0+dm0oKS0+aW50
ZXJwcmV0ZXI7CiAgICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luID0gY29kZUJsb2Nr
LT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpOwpAQCAtNTUsNiArNTUsNyBAQCB2b2lkIGNvbXB1dGVV
c2VzRm9yQnl0ZWNvZGVPZmZzZXQoCiAgICAgY2FzZSBvcF9jcmVhdGVfY2xvbmVkX2FyZ3VtZW50
czoKICAgICBjYXNlIG9wX2dldF9yZXN0X2xlbmd0aDoKICAgICBjYXNlIG9wX3dhdGNoZG9nOgor
ICAgIGNhc2Ugb3BfbmV3X2dlbmVyYXRvcl9mcmFtZToKICAgICAgICAgcmV0dXJuOwogICAgIGNh
c2Ugb3BfYXNzZXJ0OgogICAgIGNhc2Ugb3BfZ2V0X3Njb3BlOgpAQCAtMjgwLDE4ICsyODEsMjYg
QEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAogICAgIH0KICAgICBjYXNlIG9w
X3NhdmU6IHsKICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJ
RCwgaW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKTsKLSAgICAgICAgdW5zaWduZWQgbWVyZ2VQb2lu
dEJ5dGVjb2RlT2Zmc2V0ID0gYnl0ZWNvZGVPZmZzZXQgKyBpbnN0cnVjdGlvblszXS51Lm9wZXJh
bmQ7Ci0gICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogbWVyZ2VQb2ludEJsb2NrID0gbnVsbHB0
cjsKLSAgICAgICAgZm9yIChCeXRlY29kZUJhc2ljQmxvY2sqIHN1Y2Nlc3NvciA6IGJsb2NrLT5z
dWNjZXNzb3JzKCkpIHsKLSAgICAgICAgICAgIGlmIChzdWNjZXNzb3ItPmxlYWRlckJ5dGVjb2Rl
T2Zmc2V0KCkgPT0gbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0KSB7Ci0gICAgICAgICAgICAgICAg
bWVyZ2VQb2ludEJsb2NrID0gc3VjY2Vzc29yOwotICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBpZiAoYnl0ZWNvZGVBbmFseXNpc01vZGUgPT0gQnl0ZWNvZGVBbmFseXNpc01vZGU6OkV4
dHJhY3RHZW5lcmF0b3JMaXZlQ2FsbGVlTG9jYWxzKSB7CisgICAgICAgICAgICB1bnNpZ25lZCBt
ZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXQgPSBieXRlY29kZU9mZnNldCArIGluc3RydWN0aW9uWzNd
LnUub3BlcmFuZDsKKyAgICAgICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogbWVyZ2VQb2ludEJs
b2NrID0gbnVsbHB0cjsKKyAgICAgICAgICAgIGZvciAoQnl0ZWNvZGVCYXNpY0Jsb2NrKiBzdWNj
ZXNzb3IgOiBibG9jay0+c3VjY2Vzc29ycygpKSB7CisgICAgICAgICAgICAgICAgaWYgKHN1Y2Nl
c3Nvci0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKSA9PSBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXQp
IHsKKyAgICAgICAgICAgICAgICAgICAgbWVyZ2VQb2ludEJsb2NrID0gc3VjY2Vzc29yOworICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9
CisgICAgICAgICAgICBBU1NFUlQobWVyZ2VQb2ludEJsb2NrKTsKKyAgICAgICAgICAgIG1lcmdl
UG9pbnRCbG9jay0+aW4oKS5mb3JFYWNoU2V0Qml0KFsmXSh1bnNpZ25lZCBsb2NhbCkgeworICAg
ICAgICAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIHZp
cnR1YWxSZWdpc3RlckZvckxvY2FsKGxvY2FsKS5vZmZzZXQoKSk7CisgICAgICAgICAgICB9KTsK
KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJ
bmRleCA9IGluc3RydWN0aW9uWzJdLnUudW5zaWduZWRWYWx1ZTsKKyAgICAgICAgICAgIGNvbnN0
IEZhc3RCaXRWZWN0b3ImIGxpdmVuZXNzID0gY29kZUJsb2NrLT5saXZlQ2FsbGVlTG9jYWxzQXRZ
aWVsZChsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpOworICAgICAgICAgICAgbGl2ZW5lc3MuZm9yRWFj
aFNldEJpdChbJl0odW5zaWduZWQgbG9jYWwpIHsKKyAgICAgICAgICAgICAgICBmdW5jdG9yKGNv
ZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChs
b2NhbCkub2Zmc2V0KCkpOworICAgICAgICAgICAgfSk7CiAgICAgICAgIH0KLSAgICAgICAgQVNT
RVJUKG1lcmdlUG9pbnRCbG9jayk7Ci0gICAgICAgIG1lcmdlUG9pbnRCbG9jay0+aW4oKS5mb3JF
YWNoU2V0Qml0KFsmXSh1bnNpZ25lZCBsb2NhbCkgewotICAgICAgICAgICAgZnVuY3Rvcihjb2Rl
QmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwobG9j
YWwpLm9mZnNldCgpKTsKLSAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAg
ZGVmYXVsdDoKQEAgLTMwMSw3ICszMTAsNyBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVP
ZmZzZXQoCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+Ci12b2lkIGNvbXB1dGVEZWZz
Rm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFzaWNCbG9j
ayogYmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBjb25zdCBGdW5jdG9yJiBmdW5jdG9y
KQordm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2Nr
LCBCeXRlY29kZUFuYWx5c2lzTW9kZSBieXRlY29kZUFuYWx5c2lzTW9kZSwgQnl0ZWNvZGVCYXNp
Y0Jsb2NrKiBibG9jaywgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIGNvbnN0IEZ1bmN0b3ImIGZ1
bmN0b3IpCiB7CiAgICAgSW50ZXJwcmV0ZXIqIGludGVycHJldGVyID0gY29kZUJsb2NrLT52bSgp
LT5pbnRlcnByZXRlcjsKICAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4gPSBjb2Rl
QmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCk7CkBAIC00NTIsNyArNDYxLDggQEAgdm9pZCBj
b21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29k
ZUJhc2ljQmxvY2sqIGJsb2MKICAgICBjYXNlIG9wX2RlbF9ieV92YWw6CiAgICAgY2FzZSBvcF91
bnNpZ25lZDoKICAgICBjYXNlIG9wX2dldF9mcm9tX2FyZ3VtZW50czogCi0gICAgY2FzZSBvcF9n
ZXRfcmVzdF9sZW5ndGg6IHsKKyAgICBjYXNlIG9wX2dldF9yZXN0X2xlbmd0aDoKKyAgICBjYXNl
IG9wX25ld19nZW5lcmF0b3JfZnJhbWU6IHsKICAgICAgICAgQVNTRVJUKG9wY29kZUxlbmd0aHNb
b3Bjb2RlSURdID4gMSk7CiAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwg
b3Bjb2RlSUQsIGluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CiAgICAgICAgIHJldHVybjsKQEAg
LTQ2OSwxMCArNDc5LDE4IEBAIHZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChDb2Rl
QmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jCiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAgICAgY2FzZSBvcF9yZXN1bWU6IHsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQo
YmxvY2stPnN1Y2Nlc3NvcnMoKS5zaXplKCkgPT0gMSk7Ci0gICAgICAgIGJsb2NrLT5zdWNjZXNz
b3JzKClbMF0tPmluKCkuZm9yRWFjaFNldEJpdChbJl0odW5zaWduZWQgbG9jYWwpIHsKLSAgICAg
ICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIHZpcnR1YWxS
ZWdpc3RlckZvckxvY2FsKGxvY2FsKS5vZmZzZXQoKSk7Ci0gICAgICAgIH0pOworICAgICAgICBp
ZiAoYnl0ZWNvZGVBbmFseXNpc01vZGUgPT0gQnl0ZWNvZGVBbmFseXNpc01vZGU6OkV4dHJhY3RH
ZW5lcmF0b3JMaXZlQ2FsbGVlTG9jYWxzKSB7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChi
bG9jay0+c3VjY2Vzc29ycygpLnNpemUoKSA9PSAxKTsKKyAgICAgICAgICAgIGJsb2NrLT5zdWNj
ZXNzb3JzKClbMF0tPmluKCkuZm9yRWFjaFNldEJpdChbJl0odW5zaWduZWQgbG9jYWwpIHsKKyAg
ICAgICAgICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCB2
aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChsb2NhbCkub2Zmc2V0KCkpOworICAgICAgICAgICAgfSk7
CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxz
SW5kZXggPSBpbnN0cnVjdGlvblsyXS51LnVuc2lnbmVkVmFsdWU7CisgICAgICAgICAgICBjb25z
dCBGYXN0Qml0VmVjdG9yJiBsaXZlbmVzcyA9IGNvZGVCbG9jay0+bGl2ZUNhbGxlZUxvY2Fsc0F0
WWllbGQobGl2ZUNhbGxlZUxvY2Fsc0luZGV4KTsKKyAgICAgICAgICAgIGxpdmVuZXNzLmZvckVh
Y2hTZXRCaXQoWyZdKHVuc2lnbmVkIGxvY2FsKSB7CisgICAgICAgICAgICAgICAgZnVuY3Rvcihj
b2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwo
bG9jYWwpLm9mZnNldCgpKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcAppbmRleCA0NTk2NzE1YWM3YjA0MmI4YWM4ZTc4M2ExNTJlMmNkYmFhY2RjMjYz
Li41ODVhOTVjNDE0MzJjZWEzZjgxYWQ5Zjg0NDI3YmMwODdmMzM1NmI0IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApAQCAtMzIsNiArMzIsNyBAQAog
CiAjaW5jbHVkZSAiQmFzaWNCbG9ja0xvY2F0aW9uLmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVHZW5l
cmF0b3IuaCIKKyNpbmNsdWRlICJCeXRlY29kZUdyYXBoLmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVV
c2VEZWYuaCIKICNpbmNsdWRlICJDYWxsTGlua1N0YXR1cy5oIgogI2luY2x1ZGUgIkRGR0NhcGFi
aWxpdGllcy5oIgpAQCAtMTYzMiwyNiArMTYzMywzMyBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5
dGVjb2RlKAogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9z
YXZlOiB7Ci0gICAgICAgICAgICBpbnQgZ2VuZXJhdG9yID0gKCsraXQpLT51Lm9wZXJhbmQ7Cisg
ICAgICAgICAgICBpbnQgZnJhbWUgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIHVu
c2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9ICgrK2l0KS0+dS51bnNpZ25lZFZhbHVlOwog
ICAgICAgICAgICAgaW50IG9mZnNldCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAg
Y29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZW5lc3MgPSBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVM
b2NhbHNBdFlpZWxkW2xpdmVDYWxsZWVMb2NhbHNJbmRleF07CiAgICAgICAgICAgICBwcmludExv
Y2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJzYXZlIik7Ci0gICAgICAgICAg
ICBvdXQucHJpbnRmKCIlcywgIiwgcmVnaXN0ZXJOYW1lKGdlbmVyYXRvcikuZGF0YSgpKTsKKyAg
ICAgICAgICAgIG91dC5wcmludGYoIiVzLCAiLCByZWdpc3Rlck5hbWUoZnJhbWUpLmRhdGEoKSk7
CiAgICAgICAgICAgICBsaXZlbmVzcy5kdW1wKG91dCk7CiAgICAgICAgICAgICBvdXQucHJpbnRm
KCIoQGxpdmUlMXUpLCAlZCgtPiVkKSIsIGxpdmVDYWxsZWVMb2NhbHNJbmRleCwgb2Zmc2V0LCBs
b2NhdGlvbiArIG9mZnNldCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAg
ICBjYXNlIG9wX3Jlc3VtZTogewotICAgICAgICAgICAgaW50IGdlbmVyYXRvciA9ICgrK2l0KS0+
dS5vcGVyYW5kOworICAgICAgICAgICAgaW50IGZyYW1lID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAg
ICAgICAgICAgICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSAoKytpdCktPnUudW5z
aWduZWRWYWx1ZTsKICAgICAgICAgICAgIGNvbnN0IEZhc3RCaXRWZWN0b3ImIGxpdmVuZXNzID0g
bV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZFtsaXZlQ2FsbGVlTG9jYWxzSW5k
ZXhdOwogICAgICAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24s
IGl0LCAicmVzdW1lIik7Ci0gICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgIiwgcmVnaXN0ZXJO
YW1lKGdlbmVyYXRvcikuZGF0YSgpKTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAiLCBy
ZWdpc3Rlck5hbWUoZnJhbWUpLmRhdGEoKSk7CiAgICAgICAgICAgICBsaXZlbmVzcy5kdW1wKG91
dCk7CiAgICAgICAgICAgICBvdXQucHJpbnRmKCIoQGxpdmUlMXUpIiwgbGl2ZUNhbGxlZUxvY2Fs
c0luZGV4KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisgICAgICAgIGNhc2Ugb3Bf
bmV3X2dlbmVyYXRvcl9mcmFtZTogeworICAgICAgICAgICAgaW50IGRzdCA9ICgrK2l0KS0+dS5v
cGVyYW5kOworICAgICAgICAgICAgdW5zaWduZWQgZ2VuZXJhdG9yTG9jYWxzU2l6ZSA9ICgrK2l0
KS0+dS51bnNpZ25lZFZhbHVlOworICAgICAgICAgICAgcHJpbnRMb2NhdGlvbk9wQW5kUmVnaXN0
ZXJPcGVyYW5kKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAibmV3X2dlbmVyYXRvcl9mcmFtZSIs
IGRzdCk7CisgICAgICAgICAgICBvdXQucHJpbnRmKCIgJXUiLCBnZW5lcmF0b3JMb2NhbHNTaXpl
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfYXNzZXJ0
OiB7CiAgICAgICAgICAgICBpbnQgY29uZGl0aW9uID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAg
ICAgICAgICBpbnQgbGluZSA9ICgrK2l0KS0+dS5vcGVyYW5kOwpAQCAtMTkxNiw2ICsxOTI0LDEy
IEBAIENvZGVCbG9jazo6Q29kZUJsb2NrKFZNKiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFNj
cmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0CiAgICAgc2V0TnVtUGFyYW1ldGVycyh1bmxpbmtl
ZENvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKTsKIH0KIAorc3RydWN0IEdlbmVyYXRvclBvaW50
cyB7CisgICAgc2l6ZV90IHNhdmVQb2ludDsKKyAgICBzaXplX3QgbWVyZ2VQb2ludDsKKyAgICBz
aXplX3QgcmVzdW1lUG9pbnQ7Cit9OworCiB2b2lkIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24o
Vk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGlua2VkQ29kZUJs
b2NrKiB1bmxpbmtlZENvZGVCbG9jaywKICAgICBKU1Njb3BlKiBzY29wZSkKIHsKQEAgLTIwMzIs
OSArMjA0NiwxMCBAQCB2b2lkIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3Jp
cHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGluawogICAgIEhhc2hTZXQ8SlNNb2R1
bGVFbnZpcm9ubWVudCo+IHN0cm9uZ2x5UmVmZXJlbmNlZE1vZHVsZUVudmlyb25tZW50czsKIAog
ICAgIC8vIEJvb2trZWVwIHRoZSBtZXJnZSBwb2ludCBieXRlY29kZSBvZmZzZXRzLgotICAgIFZl
Y3RvcjxzaXplX3Q+IG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldHM7CisgICAgVmVjdG9yPEdlbmVy
YXRvclBvaW50cz4gZ2VuZXJhdG9yUG9pbnRzVmVjdG9yOwogCiAgICAgUmVmQ291bnRlZEFycmF5
PEluc3RydWN0aW9uPiBpbnN0cnVjdGlvbnMoaW5zdHJ1Y3Rpb25Db3VudCk7CisgICAgdW5zaWdu
ZWQgbmV3R2VuZXJhdG9yRnJhbWVJbnN0cnVjdGlvbk9mZnNldCA9IDA7CiAKICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyAhaW5zdHJ1Y3Rpb25SZWFkZXIuYXRFbmQoKTsgKSB7CiAgICAgICAgIGNv
bnN0IFVubGlua2VkSW5zdHJ1Y3Rpb24qIHBjID0gaW5zdHJ1Y3Rpb25SZWFkZXIubmV4dCgpOwpA
QCAtMjMxNyw5ICsyMzMyLDIzIEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYg
dm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAgICAgIGNh
c2Ugb3Bfc2F2ZTogewogICAgICAgICAgICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4
ID0gcGNbMl0udS5pbmRleDsKICAgICAgICAgICAgIGludCBvZmZzZXQgPSBwY1szXS51Lm9wZXJh
bmQ7Ci0gICAgICAgICAgICBpZiAobGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID49IG1lcmdlUG9pbnRC
eXRlY29kZU9mZnNldHMuc2l6ZSgpKQotICAgICAgICAgICAgICAgIG1lcmdlUG9pbnRCeXRlY29k
ZU9mZnNldHMucmVzaXplKGxpdmVDYWxsZWVMb2NhbHNJbmRleCArIDEpOwotICAgICAgICAgICAg
bWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0c1tsaXZlQ2FsbGVlTG9jYWxzSW5kZXhdID0gaSArIG9m
ZnNldDsKKyAgICAgICAgICAgIGlmIChsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPj0gZ2VuZXJhdG9y
UG9pbnRzVmVjdG9yLnNpemUoKSkKKyAgICAgICAgICAgICAgICBnZW5lcmF0b3JQb2ludHNWZWN0
b3IucmVzaXplKGxpdmVDYWxsZWVMb2NhbHNJbmRleCArIDEpOworICAgICAgICAgICAgZ2VuZXJh
dG9yUG9pbnRzVmVjdG9yW2xpdmVDYWxsZWVMb2NhbHNJbmRleF0uc2F2ZVBvaW50ID0gaTsKKyAg
ICAgICAgICAgIGdlbmVyYXRvclBvaW50c1ZlY3RvcltsaXZlQ2FsbGVlTG9jYWxzSW5kZXhdLm1l
cmdlUG9pbnQgPSBpICsgb2Zmc2V0OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKwor
ICAgICAgICBjYXNlIG9wX3Jlc3VtZTogeworICAgICAgICAgICAgdW5zaWduZWQgbGl2ZUNhbGxl
ZUxvY2Fsc0luZGV4ID0gcGNbMl0udS5pbmRleDsKKyAgICAgICAgICAgIGlmIChsaXZlQ2FsbGVl
TG9jYWxzSW5kZXggPj0gZ2VuZXJhdG9yUG9pbnRzVmVjdG9yLnNpemUoKSkKKyAgICAgICAgICAg
ICAgICBnZW5lcmF0b3JQb2ludHNWZWN0b3IucmVzaXplKGxpdmVDYWxsZWVMb2NhbHNJbmRleCAr
IDEpOworICAgICAgICAgICAgZ2VuZXJhdG9yUG9pbnRzVmVjdG9yW2xpdmVDYWxsZWVMb2NhbHNJ
bmRleF0ucmVzdW1lUG9pbnQgPSBpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKwor
ICAgICAgICBjYXNlIG9wX25ld19nZW5lcmF0b3JfZnJhbWU6IHsKKyAgICAgICAgICAgIG5ld0dl
bmVyYXRvckZyYW1lSW5zdHJ1Y3Rpb25PZmZzZXQgPSBpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KIApAQCAtMjMyOSwyNSArMjM1OCwzMiBAQCB2b2lkIENvZGVCbG9jazo6ZmluaXNo
Q3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGlu
awogICAgICAgICBpICs9IG9wTGVuZ3RoOwogICAgIH0KIAotICAgIGlmICh2bS5jb250cm9sRmxv
d1Byb2ZpbGVyKCkpCi0gICAgICAgIGluc2VydEJhc2ljQmxvY2tCb3VuZGFyaWVzRm9yQ29udHJv
bEZsb3dQcm9maWxlcihpbnN0cnVjdGlvbnMpOwotCiAgICAgbV9pbnN0cnVjdGlvbnMgPSBXVEZN
b3ZlKGluc3RydWN0aW9ucyk7CiAKICAgICAvLyBQZXJmb3JtIGJ5dGVjb2RlIGxpdmVuZXNzIGFu
YWx5c2lzIHRvIGRldGVybWluZSB3aGljaCBsb2NhbHMgYXJlIGxpdmUgYW5kIHNob3VsZCBiZSBy
ZXN1bWVkIHdoZW4gZXhlY3V0aW5nIG9wX3Jlc3VtZS4KICAgICBpZiAodW5saW5rZWRDb2RlQmxv
Y2stPnBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yQm9keU1vZGUpIHsK
LSAgICAgICAgaWYgKHNpemVfdCBjb3VudCA9IG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldHMuc2l6
ZSgpKSB7CisgICAgICAgIHVuc2lnbmVkIG1heEdlbmVyYXRvckxvY2Fsc1NpemUgPSAwOworICAg
ICAgICBpZiAoc2l6ZV90IGNvdW50ID0gZ2VuZXJhdG9yUG9pbnRzVmVjdG9yLnNpemUoKSkgewog
ICAgICAgICAgICAgY3JlYXRlUmFyZURhdGFJZk5lY2Vzc2FyeSgpOwotICAgICAgICAgICAgQnl0
ZWNvZGVMaXZlbmVzc0FuYWx5c2lzIGxpdmVuZXNzKHRoaXMpOwogICAgICAgICAgICAgbV9yYXJl
RGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZC5ncm93KGNvdW50KTsKLSAgICAgICAgICAg
IHNpemVfdCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSAwOwotICAgICAgICAgICAgZm9yIChzaXpl
X3QgYnl0ZWNvZGVPZmZzZXQgOiBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXRzKSB7Ci0gICAgICAg
ICAgICAgICAgbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZFtsaXZlQ2FsbGVl
TG9jYWxzSW5kZXhdID0gbGl2ZW5lc3MuZ2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29kZU9mZnNldChi
eXRlY29kZU9mZnNldCk7Ci0gICAgICAgICAgICAgICAgKytsaXZlQ2FsbGVlTG9jYWxzSW5kZXg7
CisKKyAgICAgICAgICAgIEJ5dGVjb2RlR3JhcGggZ3JhcGgodGhpcywgQnl0ZWNvZGVBbmFseXNp
c01vZGU6OkV4dHJhY3RHZW5lcmF0b3JMaXZlQ2FsbGVlTG9jYWxzKTsKKyAgICAgICAgICAgIEJ5
dGVjb2RlTGl2ZW5lc3NBbmFseXNpcyBsaXZlbmVzcyhncmFwaCk7CisgICAgICAgICAgICBmb3Ig
KHNpemVfdCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSAwOyBsaXZlQ2FsbGVlTG9jYWxzSW5kZXgg
PCBnZW5lcmF0b3JQb2ludHNWZWN0b3Iuc2l6ZSgpOyArK2xpdmVDYWxsZWVMb2NhbHNJbmRleCkg
eworICAgICAgICAgICAgICAgIGNvbnN0IEdlbmVyYXRvclBvaW50cyYgcG9pbnRzID0gZ2VuZXJh
dG9yUG9pbnRzVmVjdG9yW2xpdmVDYWxsZWVMb2NhbHNJbmRleF07CisgICAgICAgICAgICAgICAg
c2l6ZV90IG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldCA9IHBvaW50cy5tZXJnZVBvaW50OworICAg
ICAgICAgICAgICAgIEZhc3RCaXRWZWN0b3IgbGl2ZW5lc3NWZWN0b3IgPSBsaXZlbmVzcy5nZXRM
aXZlbmVzc0luZm9BdEJ5dGVjb2RlT2Zmc2V0KG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldCk7Cisg
ICAgICAgICAgICAgICAgbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZFtsaXZl
Q2FsbGVlTG9jYWxzSW5kZXhdID0gbGl2ZW5lc3NWZWN0b3I7CisgICAgICAgICAgICAgICAgbWF4
R2VuZXJhdG9yTG9jYWxzU2l6ZSA9IHN0ZDo6bWF4PHVuc2lnbmVkPihtYXhHZW5lcmF0b3JMb2Nh
bHNTaXplLCBsaXZlbmVzc1ZlY3Rvci5iaXRDb3VudCgpKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgfQorICAgICAgICAvLyBGaWxsIG9wX25ld19nZW5lcmF0b3JfZnJhbWUncyBzaXplLgorICAg
ICAgICBtX2luc3RydWN0aW9uc1tuZXdHZW5lcmF0b3JGcmFtZUluc3RydWN0aW9uT2Zmc2V0ICsg
Ml0udS51bnNpZ25lZFZhbHVlID0gbWF4R2VuZXJhdG9yTG9jYWxzU2l6ZTsKICAgICB9CiAKKyAg
ICBpZiAodm0uY29udHJvbEZsb3dQcm9maWxlcigpKQorICAgICAgICBpbnNlcnRCYXNpY0Jsb2Nr
Qm91bmRhcmllc0ZvckNvbnRyb2xGbG93UHJvZmlsZXIobV9pbnN0cnVjdGlvbnMpOworCiAgICAg
Ly8gU2V0IG9wdGltaXphdGlvbiB0aHJlc2hvbGRzIG9ubHkgYWZ0ZXIgbV9pbnN0cnVjdGlvbnMg
aXMgaW5pdGlhbGl6ZWQsIHNpbmNlIHRoZXNlCiAgICAgLy8gcmVseSBvbiB0aGUgaW5zdHJ1Y3Rp
b24gY291bnQgKGFuZCBhcmUgaW4gdGhlb3J5IHBlcm1pdHRlZCB0byBhbHNvIGluc3BlY3QgdGhl
CiAgICAgLy8gaW5zdHJ1Y3Rpb24gc3RyZWFtIHRvIG1vcmUgYWNjdXJhdGUgYXNzZXNzIHRoZSBj
b3N0IG9mIHRpZXItdXApLgpAQCAtNDE4Miw3ICs0MjE4LDggQEAgVmFsdWVQcm9maWxlKiBDb2Rl
QmxvY2s6OnZhbHVlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KGludCBieXRlY29kZU9mZnNldCkK
IAogdm9pZCBDb2RlQmxvY2s6OnZhbGlkYXRlKCkKIHsKLSAgICBCeXRlY29kZUxpdmVuZXNzQW5h
bHlzaXMgbGl2ZW5lc3ModGhpcyk7IC8vIENvbXB1dGUgZGlyZWN0bHkgZnJvbSBzY3JhdGNoIHNv
IGl0IGRvZXNuJ3QgZWZmZWN0IENvZGVCbG9jayBmb290cHJpbnQuCisgICAgQnl0ZWNvZGVHcmFw
aCBncmFwaCh0aGlzLCBCeXRlY29kZUFuYWx5c2lzTW9kZTo6U3RhbmRhcmQpOworICAgIEJ5dGVj
b2RlTGl2ZW5lc3NBbmFseXNpcyBsaXZlbmVzcyhncmFwaCk7IC8vIENvbXB1dGUgZGlyZWN0bHkg
ZnJvbSBzY3JhdGNoIHNvIGl0IGRvZXNuJ3QgZWZmZWN0IENvZGVCbG9jayBmb290cHJpbnQuCiAg
ICAgCiAgICAgRmFzdEJpdFZlY3RvciBsaXZlQXRIZWFkID0gbGl2ZW5lc3MuZ2V0TGl2ZW5lc3NJ
bmZvQXRCeXRlY29kZU9mZnNldCgwKTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suaAppbmRleCBiMTU5Nzg5MzNmNTEwZTliNzhmNTlhZmU3M2ZkNjc5NTcw
MGNlNmEyLi5kMGM3MGFiNWMwMWUxN2Q0OGQ0OTc5MDY4Njc0YWJlZDAxNTI2ZDM3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCkBAIC01OTgsMTIgKzU5OCwx
NCBAQCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAgICAgICAgIGlmICgh
IW1fbGl2ZW5lc3NBbmFseXNpcykKICAgICAgICAgICAgICAgICByZXR1cm4gKm1fbGl2ZW5lc3NB
bmFseXNpczsKICAgICAgICAgfQotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVMaXZl
bmVzc0FuYWx5c2lzPiBhbmFseXNpcyA9Ci0gICAgICAgICAgICBzdGQ6Om1ha2VfdW5pcXVlPEJ5
dGVjb2RlTGl2ZW5lc3NBbmFseXNpcz4odGhpcyk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxC
eXRlY29kZUdyYXBoPiBncmFwaCA9IHN0ZDo6bWFrZV91bmlxdWU8Qnl0ZWNvZGVHcmFwaD4odGhp
cywgQnl0ZWNvZGVBbmFseXNpc01vZGU6OlN0YW5kYXJkKTsKKyAgICAgICAgc3RkOjp1bmlxdWVf
cHRyPEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcz4gYW5hbHlzaXMgPSBzdGQ6Om1ha2VfdW5pcXVl
PEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcz4oKmdyYXBoKTsKICAgICAgICAgewogICAgICAgICAg
ICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIobV9sb2NrKTsKLSAgICAgICAgICAgIGlmICgh
bV9saXZlbmVzc0FuYWx5c2lzKQorICAgICAgICAgICAgaWYgKCFtX2xpdmVuZXNzQW5hbHlzaXMp
IHsKKyAgICAgICAgICAgICAgICBtX2J5dGVjb2RlR3JhcGggPSBXVEZNb3ZlKGdyYXBoKTsKICAg
ICAgICAgICAgICAgICBtX2xpdmVuZXNzQW5hbHlzaXMgPSBXVEZNb3ZlKGFuYWx5c2lzKTsKKyAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiAqbV9saXZlbmVzc0FuYWx5c2lzOwogICAg
ICAgICB9CiAgICAgfQpAQCAtMTA2Nyw2ICsxMDY5LDcgQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVi
bGljIEpTQ2VsbCB7CiAKICAgICBzdGQ6OmNocm9ubzo6c3RlYWR5X2Nsb2NrOjp0aW1lX3BvaW50
IG1fY3JlYXRpb25UaW1lOwogCisgICAgc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlR3JhcGg+IG1f
Ynl0ZWNvZGVHcmFwaDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5
c2lzPiBtX2xpdmVuZXNzQW5hbHlzaXM7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmFyZURhdGE+
IG1fcmFyZURhdGE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
UHJlY2lzZUp1bXBUYXJnZXRzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Q
cmVjaXNlSnVtcFRhcmdldHMuY3BwCmluZGV4IGUyY2IwMDA0ODM3OTRiYTkyZDUxMGRjZjVmYTk5
NDg4NWEyM2RjM2QuLmIwMjk4ZTQzMTM4ZWMwZjRmZmY5M2E0N2EyYThmNWEwZmY2ODRjODkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdl
dHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRh
cmdldHMuY3BwCkBAIC0zMSw3ICszMSw3IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogdGVtcGxhdGUg
PHNpemVfdCB2ZWN0b3JTaXplPgotc3RhdGljIHZvaWQgZ2V0SnVtcFRhcmdldHNGb3JCeXRlY29k
ZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgSW50ZXJwcmV0ZXIqIGludGVycHJldGVyLCBJ
bnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBW
ZWN0b3I8dW5zaWduZWQsIHZlY3RvclNpemU+JiBvdXQpCitzdGF0aWMgdm9pZCBnZXRKdW1wVGFy
Z2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29kZUFuYWx5
c2lzTW9kZSBieXRlY29kZUFuYWx5c2lzTW9kZSwgSW50ZXJwcmV0ZXIqIGludGVycHJldGVyLCBJ
bnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBW
ZWN0b3I8dW5zaWduZWQsIHZlY3RvclNpemU+JiBvdXQpCiB7CiAgICAgT3Bjb2RlSUQgb3Bjb2Rl
SUQgPSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25zQmVnaW5bYnl0ZWNvZGVP
ZmZzZXRdLnUub3Bjb2RlKTsKICAgICBJbnN0cnVjdGlvbiogY3VycmVudCA9IGluc3RydWN0aW9u
c0JlZ2luICsgYnl0ZWNvZGVPZmZzZXQ7CkBAIC01NCw5ICs1NCwxNCBAQCBzdGF0aWMgdm9pZCBn
ZXRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBJbnRl
cnByZXRlciogaQogICAgIGNhc2Ugb3Bfam5sZXNzZXE6CiAgICAgY2FzZSBvcF9qbmdyZWF0ZXI6
CiAgICAgY2FzZSBvcF9qbmdyZWF0ZXJlcToKLSAgICBjYXNlIG9wX3NhdmU6IC8vIFRoZSBqdW1w
IG9mIG9wX3NhdmUgaXMgcHVyZWx5IGZvciBjYWxjdWxhdGluZyBsaXZlbmVzcy4KICAgICAgICAg
b3V0LmFwcGVuZChieXRlY29kZU9mZnNldCArIGN1cnJlbnRbM10udS5vcGVyYW5kKTsKICAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBvcF9zYXZlOiB7CisgICAgICAgIC8vIFRoZSBqdW1wIG9mIG9w
X3NhdmUgdW5kZXIgRXh0cmFjdEdlbmVyYXRvckxpdmVDYWxsZWVMb2NhbHMgbW9kZSBpcyBwdXJl
bHkgZm9yIGNhbGN1bGF0aW5nIGxpdmVuZXNzLgorICAgICAgICBpZiAoYnl0ZWNvZGVBbmFseXNp
c01vZGUgPT0gQnl0ZWNvZGVBbmFseXNpc01vZGU6OkV4dHJhY3RHZW5lcmF0b3JMaXZlQ2FsbGVl
TG9jYWxzKQorICAgICAgICAgICAgb3V0LmFwcGVuZChieXRlY29kZU9mZnNldCArIGN1cnJlbnRb
M10udS5vcGVyYW5kKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogICAgIGNhc2Ugb3Bfc3dpdGNo
X2ltbToKICAgICBjYXNlIG9wX3N3aXRjaF9jaGFyOiB7CiAgICAgICAgIFNpbXBsZUp1bXBUYWJs
ZSYgdGFibGUgPSBjb2RlQmxvY2stPnN3aXRjaEp1bXBUYWJsZShjdXJyZW50WzFdLnUub3BlcmFu
ZCk7CkBAIC04Miw3ICs4Nyw3IEBAIHN0YXRpYyB2b2lkIGdldEp1bXBUYXJnZXRzRm9yQnl0ZWNv
ZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEludGVycHJldGVyKiBpCiAgICAgfQogfQog
Ci12b2lkIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFZl
Y3Rvcjx1bnNpZ25lZCwgMzI+JiBvdXQpCit2b2lkIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMo
Q29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQW5hbHlzaXNNb2RlIGJ5dGVjb2RlQW5hbHlz
aXNNb2RlLCBWZWN0b3I8dW5zaWduZWQsIDMyPiYgb3V0KQogewogICAgIEFTU0VSVChvdXQuaXNF
bXB0eSgpKTsKICAgICAKQEAgLTEwMiw3ICsxMDcsNyBAQCB2b2lkIGNvbXB1dGVQcmVjaXNlSnVt
cFRhcmdldHMoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFZlY3Rvcjx1bnNpZ25lZCwgMzI+JiBvdXQp
CiAgICAgdW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCA9IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25z
KCkuc2l6ZSgpOwogICAgIGZvciAodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQgPSAwOyBieXRlY29k
ZU9mZnNldCA8IGluc3RydWN0aW9uQ291bnQ7KSB7CiAgICAgICAgIE9wY29kZUlEIG9wY29kZUlE
ID0gaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGluc3RydWN0aW9uc0JlZ2luW2J5dGVjb2RlT2Zm
c2V0XS51Lm9wY29kZSk7Ci0gICAgICAgIGdldEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQo
Y29kZUJsb2NrLCBpbnRlcnByZXRlciwgaW5zdHJ1Y3Rpb25zQmVnaW4sIGJ5dGVjb2RlT2Zmc2V0
LCBvdXQpOworICAgICAgICBnZXRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9j
aywgYnl0ZWNvZGVBbmFseXNpc01vZGUsIGludGVycHJldGVyLCBpbnN0cnVjdGlvbnNCZWdpbiwg
Ynl0ZWNvZGVPZmZzZXQsIG91dCk7CiAgICAgICAgIGJ5dGVjb2RlT2Zmc2V0ICs9IG9wY29kZUxl
bmd0aHNbb3Bjb2RlSURdOwogICAgIH0KICAgICAKQEAgLTEyMywxMSArMTI4LDExIEBAIHZvaWQg
Y29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgVmVjdG9yPHVu
c2lnbmVkLCAzMj4mIG91dCkKICAgICBvdXQuc2hyaW5rVG9GaXQoKTsKIH0KIAotdm9pZCBmaW5k
SnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgdW5zaWdu
ZWQgYnl0ZWNvZGVPZmZzZXQsIFZlY3Rvcjx1bnNpZ25lZCwgMT4mIG91dCkKK3ZvaWQgZmluZEp1
bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2Rl
QW5hbHlzaXNNb2RlIGJ5dGVjb2RlQW5hbHlzaXNNb2RlLCB1bnNpZ25lZCBieXRlY29kZU9mZnNl
dCwgVmVjdG9yPHVuc2lnbmVkLCAxPiYgb3V0KQogewogICAgIEludGVycHJldGVyKiBpbnRlcnBy
ZXRlciA9IGNvZGVCbG9jay0+dm0oKS0+aW50ZXJwcmV0ZXI7CiAgICAgSW5zdHJ1Y3Rpb24qIGlu
c3RydWN0aW9uc0JlZ2luID0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpOwotICAg
IGdldEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoY29kZUJsb2NrLCBpbnRlcnByZXRlciwg
aW5zdHJ1Y3Rpb25zQmVnaW4sIGJ5dGVjb2RlT2Zmc2V0LCBvdXQpOworICAgIGdldEp1bXBUYXJn
ZXRzRm9yQnl0ZWNvZGVPZmZzZXQoY29kZUJsb2NrLCBieXRlY29kZUFuYWx5c2lzTW9kZSwgaW50
ZXJwcmV0ZXIsIGluc3RydWN0aW9uc0JlZ2luLCBieXRlY29kZU9mZnNldCwgb3V0KTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmgKaW5kZXggODUyNDEzZDc3Yjc5ODk4NGIyN2NlZjBlZDYy
YmM5NGM2ODllMjEyYy4uNTgwYTc5MjUzMjZiNzQ1MzQzYmQzODExYTdjNWExMThhOThmZmQyNSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFy
Z2V0cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRh
cmdldHMuaApAQCAtMzEsOSArMzEsOSBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIC8vIFJldHVybiBh
IHNvcnRlZCBsaXN0IG9mIGJ5dGVjb2RlIGluZGV4IHRoYXQgYXJlIHRoZSBkZXN0aW5hdGlvbiBv
ZiBhIGp1bXAuCi12b2lkIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMoQ29kZUJsb2NrKiwgVmVj
dG9yPHVuc2lnbmVkLCAzMj4mIG91dCk7Cit2b2lkIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMo
Q29kZUJsb2NrKiwgQnl0ZWNvZGVBbmFseXNpc01vZGUsIFZlY3Rvcjx1bnNpZ25lZCwgMzI+JiBv
dXQpOwogCi12b2lkIGZpbmRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayos
IHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBWZWN0b3I8dW5zaWduZWQsIDE+JiBvdXQpOwordm9p
ZCBmaW5kSnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqLCBCeXRlY29kZUFu
YWx5c2lzTW9kZSwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIFZlY3Rvcjx1bnNpZ25lZCwgMT4m
IG91dCk7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IGJmOGE1
YzNjNjJhMTNiZmIxYjM2NmFjMGNlMjRhYTU4ZmFjNGYxNDEuLmRmZDE3YTE4OTY5OGNmM2UxNmM3
ZmUwNzRhMjU2YmFjMGZjYTE1MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC0yNjEsNyArMjYxLDcg
QEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25O
b2RlKiBmdW5jdGlvbk5vZGUsIFVubGlua2UKICAgICAgICAgLy8gICAgZnVuY3Rpb24gKmdlbihh
LCBiID0gaGVsbG8oKSkKICAgICAgICAgLy8gICAgewogICAgICAgICAvLyAgICAgICAgcmV0dXJu
IHsKLSAgICAgICAgLy8gICAgICAgICAgICBAZ2VuZXJhdG9yTmV4dDogZnVuY3Rpb24gKEBnZW5l
cmF0b3IsIEBnZW5lcmF0b3JTdGF0ZSwgQGdlbmVyYXRvclZhbHVlLCBAZ2VuZXJhdG9yUmVzdW1l
TW9kZSkKKyAgICAgICAgLy8gICAgICAgICAgICBAZ2VuZXJhdG9yTmV4dDogZnVuY3Rpb24gKEBn
ZW5lcmF0b3IsIEBnZW5lcmF0b3JTdGF0ZSwgQGdlbmVyYXRvclZhbHVlLCBAZ2VuZXJhdG9yUmVz
dW1lTW9kZSwgQGdlbmVyYXRvckZyYW1lKQogICAgICAgICAvLyAgICAgICAgICAgIHsKICAgICAg
ICAgLy8gICAgICAgICAgICAgICAgYXJndW1lbnRzOyAgLy8gVGhpcyBgYXJndW1lbnRzYCBzaG91
bGQgcmVmZXJlbmNlIHRvIHRoZSBnZW4ncyBhcmd1bWVudHMuCiAgICAgICAgIC8vICAgICAgICAg
ICAgICAgIC4uLgpAQCAtNTM5LDYgKzUzOSw5IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29k
ZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtlCiAg
ICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckJvZHlNb2RlOiB7CiAgICAgICAgIC8v
IHx0aGlzfCBpcyBhbHJlYWR5IGZpbGxlZCBjb3JyZWN0bHkgYmVmb3JlIGhlcmUuCiAgICAgICAg
IGVtaXRMb2FkKG1fbmV3VGFyZ2V0UmVnaXN0ZXIsIGpzVW5kZWZpbmVkKCkpOworCisgICAgICAg
IGVtaXROZXdHZW5lcmF0b3JGcmFtZShnZW5lcmF0b3JGcmFtZVJlZ2lzdGVyKCkpOworICAgICAg
ICBlbWl0UHV0QnlJZChnZW5lcmF0b3JSZWdpc3RlcigpLCBwcm9wZXJ0eU5hbWVzKCkuZ2VuZXJh
dG9yRnJhbWVQcml2YXRlTmFtZSwgZ2VuZXJhdG9yRnJhbWVSZWdpc3RlcigpKTsKICAgICAgICAg
YnJlYWs7CiAgICAgfQogCkBAIC0yOTQ5LDYgKzI5NTIsMTQgQEAgdm9pZCBCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdFNldEZ1bmN0aW9uTmFtZUlmTmVlZGVkKEV4cHJlc3Npb25Ob2RlKiB2YWx1ZU5v
ZGUsIFIKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobmFtZS0+aW5kZXgoKSk7CiB9CiAKK1Jl
Z2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3R2VuZXJhdG9yRnJhbWUoUmVnaXN0
ZXJJRCogZHN0KQoreworICAgIGVtaXRPcGNvZGUob3BfbmV3X2dlbmVyYXRvcl9mcmFtZSk7Cisg
ICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGRzdC0+aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25z
KCkuYXBwZW5kKDApOworICAgIHJldHVybiBkc3Q7Cit9CisKIFJlZ2lzdGVySUQqIEJ5dGVjb2Rl
R2VuZXJhdG9yOjplbWl0Q2FsbChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGZ1bmMsIEV4
cGVjdGVkRnVuY3Rpb24gZXhwZWN0ZWRGdW5jdGlvbiwgQ2FsbEFyZ3VtZW50cyYgY2FsbEFyZ3Vt
ZW50cywgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYg
ZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKQogewogICAgIHJldHVy
biBlbWl0Q2FsbChvcF9jYWxsLCBkc3QsIGZ1bmMsIGV4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1
bWVudHMsIGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCk7CkBAIC00NDE5LDcgKzQ0MzAsNyBA
QCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0U2F2ZShMYWJlbCogbWVyZ2VQb2ludCwgdW5z
aWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZAogewogICAgIHNpemVfdCBiZWdpbiA9IGluc3RydWN0
aW9ucygpLnNpemUoKTsKICAgICBlbWl0T3Bjb2RlKG9wX3NhdmUpOwotICAgIGluc3RydWN0aW9u
cygpLmFwcGVuZChtX2dlbmVyYXRvclJlZ2lzdGVyLT5pbmRleCgpKTsKKyAgICBpbnN0cnVjdGlv
bnMoKS5hcHBlbmQoZ2VuZXJhdG9yRnJhbWVSZWdpc3RlcigpLT5pbmRleCgpKTsKICAgICBpbnN0
cnVjdGlvbnMoKS5hcHBlbmQobGl2ZUNhbGxlZUxvY2Fsc0luZGV4KTsKICAgICBpbnN0cnVjdGlv
bnMoKS5hcHBlbmQobWVyZ2VQb2ludC0+YmluZChiZWdpbiwgaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgp
KSk7CiB9CkBAIC00NDI4LDcgKzQ0MzksNyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
UmVzdW1lKExhYmVsKiBtZXJnZVBvaW50LCB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSQogewog
ICAgIGVtaXRHZW5lcmF0b3JTdGF0ZUxhYmVsKCk7CiAgICAgZW1pdE9wY29kZShvcF9yZXN1bWUp
OwotICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChtX2dlbmVyYXRvclJlZ2lzdGVyLT5pbmRleCgp
KTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZ2VuZXJhdG9yRnJhbWVSZWdpc3RlcigpLT5p
bmRleCgpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobGl2ZUNhbGxlZUxvY2Fsc0luZGV4
KTsKICAgICBlbWl0TGFiZWwobWVyZ2VQb2ludCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5kZXggNTc0ZjNh
YWZlZGNhNjcxZTkzNDIxNTUwMzBkMjQyMTAzZmNiN2EyYi4uNTlkMzNkOTM4Y2Q0MGI0ZmRkMWEy
OGRmYTdiYzQ0OTdiYWEwMzcxMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAtNTMxLDYgKzUzMSw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICBSZWdpc3RlcklEKiBlbWl0TmV3QXJyb3dGdW5jdGlvbkV4
cHJlc3Npb24oUmVnaXN0ZXJJRCosIEFycm93RnVuY0V4cHJOb2RlKik7CiAgICAgICAgIFJlZ2lz
dGVySUQqIGVtaXROZXdNZXRob2REZWZpbml0aW9uKFJlZ2lzdGVySUQqIGRzdCwgTWV0aG9kRGVm
aW5pdGlvbk5vZGUqKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdE5ld1JlZ0V4cChSZWdpc3Rl
cklEKiBkc3QsIFJlZ0V4cCopOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0TmV3R2VuZXJhdG9y
RnJhbWUoUmVnaXN0ZXJJRCogZHN0KTsKIAogICAgICAgICB2b2lkIGVtaXRTZXRGdW5jdGlvbk5h
bWVJZk5lZWRlZChFeHByZXNzaW9uTm9kZSogdmFsdWVOb2RlLCBSZWdpc3RlcklEKiB2YWx1ZSwg
UmVnaXN0ZXJJRCogbmFtZSk7CiAKQEAgLTcwMSw2ICs3MDIsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9yU3RhdGVSZWdpc3RlcigpIHsgcmV0dXJuICZt
X3BhcmFtZXRlcnNbMl07IH0KICAgICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9yVmFsdWVSZWdp
c3RlcigpIHsgcmV0dXJuICZtX3BhcmFtZXRlcnNbM107IH0KICAgICAgICAgUmVnaXN0ZXJJRCog
Z2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKCkgeyByZXR1cm4gJm1fcGFyYW1ldGVyc1s0XTsg
fQorICAgICAgICBSZWdpc3RlcklEKiBnZW5lcmF0b3JGcmFtZVJlZ2lzdGVyKCkgeyByZXR1cm4g
Jm1fcGFyYW1ldGVyc1s1XTsgfQogCiAgICAgICAgIENvZGVUeXBlIGNvZGVUeXBlKCkgY29uc3Qg
eyByZXR1cm4gbV9jb2RlVHlwZTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Fic3RyYWN0SGVhcC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdB
YnN0cmFjdEhlYXAuaAppbmRleCBhZmUxMGM0OTY0MzEyOWM3YjExZTgyMGJlNDllNjA2ZWY3Mzg5
MTY1Li40ZGViZjkzMmU5YTRiYTJmN2U1YTY4NzM0ZWEyZjllODEwMDIwNzg0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SGVhcC5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RIZWFwLmgKQEAgLTY5LDYgKzY5LDggQEAg
bmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3JvKFNjb3BlUHJvcGVydGll
cykgXAogICAgIG1hY3JvKFR5cGVkQXJyYXlQcm9wZXJ0aWVzKSBcCiAgICAgbWFjcm8oSGVhcE9i
amVjdENvdW50KSAvKiBVc2VkIHRvIHJlZmxlY3QgdGhlIGZhY3QgdGhhdCBzb21lIGFsbG9jYXRp
b25zIHJldmVhbCBvYmplY3QgaWRlbnRpdHkgKi9cCisgICAgbWFjcm8oR2VuZXJhdG9yTG9jYWxz
KSBcCisgICAgbWFjcm8oR2VuZXJhdG9yTG9jYWxDb3VudCkgXAogICAgIG1hY3JvKFJlZ0V4cFN0
YXRlKSBcCiAgICAgbWFjcm8oTWF0aERvdFJhbmRvbVN0YXRlKSBcCiAgICAgbWFjcm8oSW50ZXJu
YWxTdGF0ZSkgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0
cmFjdEludGVycHJldGVySW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdB
YnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCmluZGV4IDA5YjRmMmUzYzc3YTYxZjlmNTA2Yjg3
NjZiMzcxYzkzOGM2NWJmMzMuLmYzZjBiYjczZTRhNjBlYTZjYTVlNDJkZTlhNDhhNmNlNzBlZWNj
ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRl
cnByZXRlcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3Ry
YWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKQEAgLTE4NzMsNiArMTg3MywxMCBAQCBib29sIEFic3Ry
YWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25l
ZCBjbG9iYmVyTGltaQogICAgIGNhc2UgTmV3UmVnZXhwOgogICAgICAgICBmb3JOb2RlKG5vZGUp
LnNldChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50
aWMpLT5yZWdFeHBTdHJ1Y3R1cmUoKSk7CiAgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBOZXdH
ZW5lcmF0b3JGcmFtZToKKyAgICAgICAgZm9yTm9kZShub2RlKS5zZXQobV9ncmFwaCwgbV9ncmFw
aC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+Z2VuZXJhdG9yRnJhbWVT
dHJ1Y3R1cmUoKSk7CisgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCiAgICAgY2FzZSBUb1Ro
aXM6IHsKICAgICAgICAgQWJzdHJhY3RWYWx1ZSYgc291cmNlID0gZm9yTm9kZShub2RlLT5jaGls
ZDEoKSk7CkBAIC0yNzczLDYgKzI3NzcsMTcgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFi
c3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAg
ICAgICAgZm9yTm9kZShub2RlKS5tYWtlSGVhcFRvcCgpOwogICAgICAgICBicmVhazsKIAorICAg
IGNhc2UgU2V0R2VuZXJhdG9yTG9jYWw6CisgICAgY2FzZSBSZXNpemVHZW5lcmF0b3JMb2NhbHM6
CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBHZXRHZW5lcmF0b3JMb2NhbDogeworICAgICAg
ICAvLyBGSVhNRTogV2Ugc2hvdWxkIGF0dGVtcHQgdG8gY29udmVydCBpdCB0byBjb25zdGFudC4K
KyAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MzE4
MworICAgICAgICBmb3JOb2RlKG5vZGUpLm1ha2VCeXRlY29kZVRvcCgpOworICAgICAgICBicmVh
azsKKyAgICB9CisKICAgICBjYXNlIEZvcmNlT1NSRXhpdDoKICAgICBjYXNlIENoZWNrQmFkQ2Vs
bDoKICAgICAgICAgbV9zdGF0ZS5zZXRJc1ZhbGlkKGZhbHNlKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKaW5kZXggMmY0OWZhNTIyOTQyZDZh
NmFmMDg0NDBjOTNmNmQ3ODgyZGYxNTIwZC4uNGZiMDY1ODA1ZWZlMjBhY2MxZjBjMDA5ZWIwMmY0
ZTYzNzE0YjNhZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29k
ZVBhcnNlci5jcHAKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJERkdDYXBhYmlsaXRpZXMu
aCIKICNpbmNsdWRlICJERkdDbG9iYmVyaXplLmgiCiAjaW5jbHVkZSAiREZHQ2xvYmJlcnNFeGl0
U3RhdGUuaCIKKyNpbmNsdWRlICJERkdHZW5lcmF0b3JMb2NhbERhdGEuaCIKICNpbmNsdWRlICJE
RkdHcmFwaC5oIgogI2luY2x1ZGUgIkRGR0pJVENvZGUuaCIKICNpbmNsdWRlICJHZXRCeUlkU3Rh
dHVzLmgiCkBAIC05OTcsNiArOTk4LDExIEBAIGNsYXNzIEJ5dGVDb2RlUGFyc2VyIHsKICAgICB9
CiAKICAgICBib29sIG5lZWRzRHluYW1pY0xvb2t1cChSZXNvbHZlVHlwZSwgT3Bjb2RlSUQpOwor
CisgICAgR2VuZXJhdG9yTG9jYWxEYXRhKiBuZXdHZW5lcmF0b3JMb2NhbERhdGEoKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIG1fZ3JhcGgubV9nZW5lcmF0b3JMb2NhbERhdGEuYWRkKCk7CisgICAg
fQogICAgIAogICAgIFZNKiBtX3ZtOwogICAgIENvZGVCbG9jayogbV9jb2RlQmxvY2s7CkBAIC0x
MDg1LDYgKzEwOTEsMTEgQEAgY2xhc3MgQnl0ZUNvZGVQYXJzZXIgewogICAgICAgICBDYWxsTGlu
a0luZm9NYXAgbV9jYWxsTGlua0luZm9zOwogICAgICAgICBTdHViSW5mb01hcCBtX3N0dWJJbmZv
czsKICAgICAgICAgQnlWYWxJbmZvTWFwIG1fYnlWYWxJbmZvczsKKworICAgICAgICAvLyBTaW5j
ZSB0aGUgb3BfcmVzdW1lIGlzIGVtaXR0ZWQgYWZ0ZXIgdGhlIGNvcnJlc3BvbmRpbmcgb3Bfc2F2
ZQorICAgICAgICAvLyBhbmQgdGhlcmUgaXMgbm8gb3RoZXIgb3BfcmVzdW1lIGFuZCBvcF9zYXZl
IGJldHdlZW4gdGhlbSwKKyAgICAgICAgLy8gd2UgY2FuIHRyYWNrIHRoZXNlIGNvcnJlc3BvbmRl
bmNlIGJ5IGp1c3QgdHJhY2tpbmcgY3VycmVudGx5IGZvY3VzaW5nIG9wX3NhdmUuCisgICAgICAg
IE9wZXJhbmRzPEdlbmVyYXRvckxvY2FsRGF0YSo+IG1fZ2VuZXJhdG9yTG9jYWxzOwogICAgICAg
ICAKICAgICAgICAgLy8gRGlkIHdlIHNlZSBhbnkgcmV0dXJucz8gV2UgbmVlZCB0byBoYW5kbGUg
dGhlICh1bmNvbW1vbiBidXQgbmVjZXNzYXJ5KQogICAgICAgICAvLyBjYXNlIHdoZXJlIGEgcHJv
Y2VkdXJlIHRoYXQgZG9lcyBub3QgcmV0dXJuIHdhcyBpbmxpbmVkLgpAQCAtMzYwNiw2ICszNjE3
LDExIEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAg
ICAgICAgICAgICBORVhUX09QQ09ERShvcF9uZXdfcmVnZXhwKTsKICAgICAgICAgfQogCisgICAg
ICAgIGNhc2Ugb3BfbmV3X2dlbmVyYXRvcl9mcmFtZTogeworICAgICAgICAgICAgc2V0KFZpcnR1
YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSwgYWRkVG9HcmFwaChO
ZXdHZW5lcmF0b3JGcmFtZSwgT3BJbmZvKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51LnVuc2lnbmVk
VmFsdWUpKSk7CisgICAgICAgICAgICBORVhUX09QQ09ERShvcF9uZXdfZ2VuZXJhdG9yX2ZyYW1l
KTsKKyAgICAgICAgfQorCiAgICAgICAgIGNhc2Ugb3BfZ2V0X3Jlc3RfbGVuZ3RoOiB7CiAgICAg
ICAgICAgICBJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSA9IHRoaXMtPmlubGluZUNh
bGxGcmFtZSgpOwogICAgICAgICAgICAgTm9kZSogbGVuZ3RoOwpAQCAtMzYzMyw2ICszNjQ5LDQx
IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAg
ICAgICAgICAgICAgYXJyYXksIGFycmF5TGVuZ3RoKTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RF
KG9wX2NvcHlfcmVzdCk7CiAgICAgICAgIH0KKworICAgICAgICBjYXNlIG9wX3NhdmU6IHsKKyAg
ICAgICAgICAgIE5vZGUqIGZyYW1lID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1
Y3Rpb25bMV0udS5vcGVyYW5kKSk7CisgICAgICAgICAgICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9j
YWxzSW5kZXggPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS51bnNpZ25lZFZhbHVlOworICAgICAg
ICAgICAgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZW5lc3MgPSBtX2lubGluZVN0YWNrVG9wLT5t
X2NvZGVCbG9jay0+bGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQobGl2ZUNhbGxlZUxvY2Fsc0luZGV4
KTsKKworICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9nZW5lcmF0b3JMb2NhbHMgPSBP
cGVyYW5kczxHZW5lcmF0b3JMb2NhbERhdGEqPihtX251bUFyZ3VtZW50cywgbV9udW1Mb2NhbHMp
OworCisgICAgICAgICAgICBhZGRUb0dyYXBoKFJlc2l6ZUdlbmVyYXRvckxvY2FscywgT3BJbmZv
KGxpdmVuZXNzLmJpdENvdW50KCkpLCBmcmFtZSk7CisgICAgICAgICAgICB1bnNpZ25lZCBnZW5l
cmF0b3JMb2NhbEluZGV4ID0gMDsKKyAgICAgICAgICAgIGxpdmVuZXNzLmZvckVhY2hTZXRCaXQo
WyZdKHNpemVfdCBpbmRleCkgeworICAgICAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBvcGVy
YW5kID0gdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaW5kZXgpOworICAgICAgICAgICAgICAgIFZp
cnR1YWxSZWdpc3RlciByZW1hcHBlZE9wZXJhbmQgPSBtX2lubGluZVN0YWNrVG9wLT5yZW1hcE9w
ZXJhbmQob3BlcmFuZCk7CisgICAgICAgICAgICAgICAgTm9kZSogbG9jYWwgPSBnZXQob3BlcmFu
ZCk7CisgICAgICAgICAgICAgICAgR2VuZXJhdG9yTG9jYWxEYXRhKiBnZW5lcmF0b3JMb2NhbERh
dGEgPSBuZXdHZW5lcmF0b3JMb2NhbERhdGEoKTsKKyAgICAgICAgICAgICAgICBtX2lubGluZVN0
YWNrVG9wLT5tX2dlbmVyYXRvckxvY2Fscy5sb2NhbChyZW1hcHBlZE9wZXJhbmQudG9Mb2NhbCgp
KSA9IGdlbmVyYXRvckxvY2FsRGF0YTsKKyAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFNldEdl
bmVyYXRvckxvY2FsLCBPcEluZm8oZ2VuZXJhdG9yTG9jYWxJbmRleCsrKSwgT3BJbmZvKGdlbmVy
YXRvckxvY2FsRGF0YSksIGZyYW1lLCBsb2NhbCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAg
ICAgIE5FWFRfT1BDT0RFKG9wX3NhdmUpOworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBvcF9y
ZXN1bWU6IHsKKyAgICAgICAgICAgIE5vZGUqIGZyYW1lID0gZ2V0KFZpcnR1YWxSZWdpc3Rlcihj
dXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSk7CisgICAgICAgICAgICB1bnNpZ25lZCBs
aXZlQ2FsbGVlTG9jYWxzSW5kZXggPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS51bnNpZ25lZFZh
bHVlOworICAgICAgICAgICAgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZW5lc3MgPSBtX2lubGlu
ZVN0YWNrVG9wLT5tX2NvZGVCbG9jay0+bGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQobGl2ZUNhbGxl
ZUxvY2Fsc0luZGV4KTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGdlbmVyYXRvckxvY2FsSW5kZXgg
PSAwOworICAgICAgICAgICAgbGl2ZW5lc3MuZm9yRWFjaFNldEJpdChbJl0oc2l6ZV90IGluZGV4
KSB7CisgICAgICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQgPSB2aXJ0dWFsUmVn
aXN0ZXJGb3JMb2NhbChpbmRleCk7CisgICAgICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHJl
bWFwcGVkT3BlcmFuZCA9IG1faW5saW5lU3RhY2tUb3AtPnJlbWFwT3BlcmFuZChvcGVyYW5kKTsK
KyAgICAgICAgICAgICAgICBHZW5lcmF0b3JMb2NhbERhdGEqIGdlbmVyYXRvckxvY2FsRGF0YSA9
IG1faW5saW5lU3RhY2tUb3AtPm1fZ2VuZXJhdG9yTG9jYWxzLmxvY2FsKHJlbWFwcGVkT3BlcmFu
ZC50b0xvY2FsKCkpOworICAgICAgICAgICAgICAgIHNldChvcGVyYW5kLCBhZGRUb0dyYXBoKEdl
dEdlbmVyYXRvckxvY2FsLCBPcEluZm8oZ2VuZXJhdG9yTG9jYWxJbmRleCsrKSwgT3BJbmZvKGdl
bmVyYXRvckxvY2FsRGF0YSksIGZyYW1lKSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAg
IGFkZFRvR3JhcGgoUmVzaXplR2VuZXJhdG9yTG9jYWxzLCBPcEluZm8oMCksIGZyYW1lKTsKKyAg
ICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX3Jlc3VtZSk7CisgICAgICAgIH0KICAgICAgICAgICAg
IAogICAgICAgICAvLyA9PT0gQml0d2lzZSBvcGVyYXRpb25zID09PQogCkBAIC01MjkyLDcgKzUz
NDMsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUNvZGVCbG9jaygpCiAgICAgfQogICAg
IAogICAgIFZlY3Rvcjx1bnNpZ25lZCwgMzI+IGp1bXBUYXJnZXRzOwotICAgIGNvbXB1dGVQcmVj
aXNlSnVtcFRhcmdldHMoY29kZUJsb2NrLCBqdW1wVGFyZ2V0cyk7CisgICAgY29tcHV0ZVByZWNp
c2VKdW1wVGFyZ2V0cyhjb2RlQmxvY2ssIEJ5dGVjb2RlQW5hbHlzaXNNb2RlOjpTdGFuZGFyZCwg
anVtcFRhcmdldHMpOwogICAgIGlmIChPcHRpb25zOjpkdW1wQnl0ZWNvZGVBdERGR1RpbWUoKSkg
ewogICAgICAgICBkYXRhTG9nKCJKdW1wIHRhcmdldHM6ICIpOwogICAgICAgICBDb21tYVByaW50
ZXIgY29tbWE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFi
aWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5j
cHAKaW5kZXggY2MyZDQ3NDgyNDk3YTJkMzM3MTdmNWI0YzM5MjIxMjhlYTIyNTQxYi4uYTJhN2Yx
YmJmN2MwN2UyMGFlMzVlYzljMmIxNjc4ZGZkMjcxZDM2NiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcApAQCAtMTkwLDYgKzE5MCw3IEBAIENhcGFi
aWxpdHlMZXZlbCBjYXBhYmlsaXR5TGV2ZWwoT3Bjb2RlSUQgb3Bjb2RlSUQsIENvZGVCbG9jayog
Y29kZUJsb2NrLCBJbnN0cnVjCiAgICAgY2FzZSBvcF9uZXdfYXJyYXk6CiAgICAgY2FzZSBvcF9u
ZXdfYXJyYXlfd2l0aF9zaXplOgogICAgIGNhc2Ugb3BfbmV3X2FycmF5X2J1ZmZlcjoKKyAgICBj
YXNlIG9wX25ld19nZW5lcmF0b3JfZnJhbWU6CiAgICAgY2FzZSBvcF9zdHJjYXQ6CiAgICAgY2Fz
ZSBvcF90b19wcmltaXRpdmU6CiAgICAgY2FzZSBvcF90aHJvdzoKQEAgLTIzOCw2ICsyMzksOCBA
QCBDYXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVsKE9wY29kZUlEIG9wY29kZUlELCBDb2Rl
QmxvY2sqIGNvZGVCbG9jaywgSW5zdHJ1YwogICAgIGNhc2Ugb3BfbG9nX3NoYWRvd19jaGlja2Vu
X3RhaWw6CiAgICAgY2FzZSBvcF9wdXRfdG9fc2NvcGU6CiAgICAgY2FzZSBvcF9yZXNvbHZlX3Nj
b3BlOgorICAgIGNhc2Ugb3Bfc2F2ZToKKyAgICBjYXNlIG9wX3Jlc3VtZToKICAgICAgICAgcmV0
dXJuIENhbkNvbXBpbGVBbmRJbmxpbmU7CiAKICAgICBjYXNlIG9wX25ld19yZWdleHA6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCmluZGV4IDcyNjQzOWQzZTgwNTJj
YjQ3MDZjYTI4MmQ4MTkyZDczYmFlNDMwNTcuLmY0YWExM2QzMTc1OTJmYTNhNzlmMjVjZGYwMWE1
OGVmZmY2NWU4MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xv
YmJlcml6ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5o
CkBAIC0xMDk4LDYgKzEwOTgsNyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2Rl
KiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogCiAgICAgY2Fz
ZSBOZXdPYmplY3Q6CiAgICAgY2FzZSBOZXdSZWdleHA6CisgICAgY2FzZSBOZXdHZW5lcmF0b3JG
cmFtZToKICAgICBjYXNlIE5ld1N0cmluZ09iamVjdDoKICAgICBjYXNlIFBoYW50b21OZXdPYmpl
Y3Q6CiAgICAgY2FzZSBNYXRlcmlhbGl6ZU5ld09iamVjdDoKQEAgLTExOTIsNiArMTE5MywyMyBA
QCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVu
Y3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQorCisgICAgY2FzZSBT
ZXRHZW5lcmF0b3JMb2NhbDogeworICAgICAgICByZWFkKEdlbmVyYXRvckxvY2FsQ291bnQpOwor
ICAgICAgICB3cml0ZShHZW5lcmF0b3JMb2NhbHMpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgY2FzZSBHZXRHZW5lcmF0b3JMb2NhbDogeworICAgICAgICByZWFkKEdlbmVyYXRvckxv
Y2FsQ291bnQpOworICAgICAgICByZWFkKEdlbmVyYXRvckxvY2Fscyk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBjYXNlIFJlc2l6ZUdlbmVyYXRvckxvY2FsczogeworICAgICAgICB3
cml0ZShHZW5lcmF0b3JMb2NhbENvdW50KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KICAgICAg
ICAgCiAgICAgY2FzZSBUaHJvd1JlZmVyZW5jZUVycm9yOgogICAgICAgICB3cml0ZShTaWRlU3Rh
dGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyc0V4
aXRTdGF0ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJzRXhpdFN0
YXRlLmNwcAppbmRleCA4MDlhNDVkNmYxYTY0MDE1ODE5ZDcyZTNmYTQ4MWU0ZWFiMzM0NzgyLi42
YWFmY2JmZGEzNmUxNjQ0NmZmNzk0ZWU4NGMzMDk3ZTIyNWEwYTJhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcApAQCAtNTMsMTAg
KzUzLDE2IEBAIGJvb2wgY2xvYmJlcnNFeGl0U3RhdGUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2Rl
KQogICAgICAgICAvLyBleGl0IHN0YXRlLgogICAgICAgICByZXR1cm4gZmFsc2U7CiAKKyAgICBj
YXNlIFJlc2l6ZUdlbmVyYXRvckxvY2FsczoKKyAgICBjYXNlIFNldEdlbmVyYXRvckxvY2FsOgor
ICAgIGNhc2UgR2V0R2VuZXJhdG9yTG9jYWw6CisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAg
IGNhc2UgQXJyYXlpZnlUb1N0cnVjdHVyZToKICAgICBjYXNlIEFycmF5aWZ5OgogICAgIGNhc2Ug
TmV3T2JqZWN0OgogICAgIGNhc2UgTmV3UmVnZXhwOgorICAgIGNhc2UgTmV3R2VuZXJhdG9yRnJh
bWU6CiAgICAgY2FzZSBOZXdTdHJpbmdPYmplY3Q6CiAgICAgY2FzZSBQaGFudG9tTmV3T2JqZWN0
OgogICAgIGNhc2UgTWF0ZXJpYWxpemVOZXdPYmplY3Q6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0RvZXNHQy5jcHAKaW5kZXggYWYxMWUxODc3YjE3YzVhMzZlMjcxZTM3Y2VlOGVmNDVmZWVi
NTc5Ny4uZjgzMjk5MDA0OWY1ZDZhM2JjNDQ4MTEwZmJhODkzYjNjN2ExMmRhYiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcApAQCAtMjQ5LDYgKzI0OSw5IEBAIGJvb2wg
ZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIEdldER5bmFtaWNWYXI6
CiAgICAgY2FzZSBQdXREeW5hbWljVmFyOgogICAgIGNhc2UgUmVzb2x2ZVNjb3BlOgorICAgIGNh
c2UgU2V0R2VuZXJhdG9yTG9jYWw6CisgICAgY2FzZSBHZXRHZW5lcmF0b3JMb2NhbDoKKyAgICBj
YXNlIFJlc2l6ZUdlbmVyYXRvckxvY2FsczoKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAg
Y2FzZSBDcmVhdGVBY3RpdmF0aW9uOgpAQCAtMjY2LDYgKzI2OSw3IEBAIGJvb2wgZG9lc0dDKEdy
YXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIE5ld0FycmF5V2l0aFNpemU6CiAgICAg
Y2FzZSBOZXdBcnJheUJ1ZmZlcjoKICAgICBjYXNlIE5ld1JlZ2V4cDoKKyAgICBjYXNlIE5ld0dl
bmVyYXRvckZyYW1lOgogICAgIGNhc2UgTmV3U3RyaW5nT2JqZWN0OgogICAgIGNhc2UgTWFrZVJv
cGU6CiAgICAgY2FzZSBOZXdGdW5jdGlvbjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0ZpeHVwUGhhc2UuY3BwCmluZGV4IGNlNTI1MjdiZjJhOTczMTFiZTA1ZTBmZmIyNDc3MDQ5ZGZi
MDY1ZTYuLjU3ZjMyOWFlZGRjZDg3ZWZlMzY4MjNiMzMzZmMxNWFlODQ1NjY1YzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcApAQCAtMTUwMCw2ICsxNTAw
LDI0IEBAIGNsYXNzIEZpeHVwUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIFNldEdlbmVyYXRvckxvY2FsOiB7CisgICAg
ICAgICAgICBmaXhFZGdlPENlbGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIHNw
ZWN1bGF0ZUZvckJhcnJpZXIobm9kZS0+Y2hpbGQyKCkpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KKworICAgICAgICBjYXNlIEdldEdlbmVyYXRvckxvY2FsOiB7CisgICAgICAgICAg
ICBmaXhFZGdlPENlbGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIC8vIEN1cnJl
bnRseSwgd2UgYWx3YXlzIHN0b3JlIHRoZSB2YWx1ZSBhcyBKU1ZhbHVlIGluIHRoZSBHZW5lcmF0
b3JGcmFtZS4KKyAgICAgICAgICAgIG5vZGUtPnNldFJlc3VsdChOb2RlUmVzdWx0SlMpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBjYXNlIFJlc2l6ZUdlbmVyYXRv
ckxvY2FsczogeworICAgICAgICAgICAgZml4RWRnZTxDZWxsVXNlPihub2RlLT5jaGlsZDEoKSk7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCiAjaWYgIUFTU0VSVF9ESVNBQkxFRAog
ICAgICAgICAvLyBIYXZlIHRoZXNlIG5vLW9wIGNhc2VzIGhlcmUgdG8gZW5zdXJlIHRoYXQgbm9i
b2R5IGZvcmdldHMgdG8gYWRkIGhhbmRsZXJzIGZvciBuZXcgb3Bjb2Rlcy4KICAgICAgICAgY2Fz
ZSBTZXRBcmd1bWVudDoKQEAgLTE1MzMsNiArMTU1MSw3IEBAIGNsYXNzIEZpeHVwUGhhc2UgOiBw
dWJsaWMgUGhhc2UgewogICAgICAgICBjYXNlIE5ld09iamVjdDoKICAgICAgICAgY2FzZSBOZXdB
cnJheUJ1ZmZlcjoKICAgICAgICAgY2FzZSBOZXdSZWdleHA6CisgICAgICAgIGNhc2UgTmV3R2Vu
ZXJhdG9yRnJhbWU6CiAgICAgICAgIGNhc2UgUHJvZmlsZVdpbGxDYWxsOgogICAgICAgICBjYXNl
IFByb2ZpbGVEaWRDYWxsOgogICAgICAgICBjYXNlIERlbGV0ZUJ5SWQ6CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dlbmVyYXRvckxvY2FsRGF0YS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHZW5lcmF0b3JMb2NhbERhdGEuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5j
ZWFmMWFiYzA1Yjc4Mzg1NDdjMGI3YWViZWRmZjYwNGNjYjVmZDEyCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHZW5lcmF0b3JMb2NhbERhdGEuaApAQCAt
MCwwICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IFl1c3VrZSBTdXp1a2kgPHV0
YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgREZHR2VuZXJhdG9yTG9jYWxEYXRhX2gKKyNkZWZpbmUgREZHR2Vu
ZXJhdG9yTG9jYWxEYXRhX2gKKworI2lmIEVOQUJMRShERkdfSklUKQorCisjaW5jbHVkZSAiREZH
Q29tbW9uLmgiCisjaW5jbHVkZSAiU3BlY3VsYXRlZFR5cGUuaCIKKyNpbmNsdWRlICJWaXJ0dWFs
UmVnaXN0ZXIuaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgeworCisKK2NsYXNz
IEdlbmVyYXRvckxvY2FsRGF0YSB7CitwdWJsaWM6CisgICAgYm9vbCBwcmVkaWN0KFNwZWN1bGF0
ZWRUeXBlIHByZWRpY3Rpb24pCisgICAgeworICAgICAgICByZXR1cm4gbWVyZ2VTcGVjdWxhdGlv
bihtX3ByZWRpY3Rpb24sIHByZWRpY3Rpb24pOworICAgIH0KKworICAgIFNwZWN1bGF0ZWRUeXBl
IHByZWRpY3Rpb24oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fcHJlZGljdGlvbjsKKyAgICB9
CisKK3ByaXZhdGU6CisgICAgU3BlY3VsYXRlZFR5cGUgbV9wcmVkaWN0aW9uIHsgU3BlY05vbmUg
fTsKK307CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKKworI2VuZGlmIC8vIEVOQUJMRShE
RkdfSklUKQorCisjZW5kaWYgLy8gREZHVmFyaWFibGVBY2Nlc3NEYXRhX2gKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHR3JhcGguaAppbmRleCA4NmIzZWVmM2RmODg0YzE0MDNmOTY0YjEyNmVhNzdi
ZmU3YTAzNWI0Li5iMGU5NDhjOWNjYTk3NTBjMjEwNmViYTg0Y2Q1ZmYzODg0Y2RiYjI1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCkBAIC02MCw2ICs2MCw3IEBAIGNsYXNzIENG
RzsKIGNsYXNzIERvbWluYXRvcnM7CiBjbGFzcyBOYXR1cmFsTG9vcHM7CiBjbGFzcyBQcmVQb3N0
TnVtYmVyaW5nOworY2xhc3MgR2VuZXJhdG9yTG9jYWxEYXRhOwogCiAjZGVmaW5lIERGR19OT0RF
X0RPX1RPX0NISUxEUkVOKGdyYXBoLCBub2RlLCB0aGluZ1RvRG8pIGRvIHsgICAgICAgICAgICBc
CiAgICAgICAgIE5vZGUqIF9ub2RlID0gKG5vZGUpOyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCkBAIC04NjksNiArODcwLDcgQEAgY2xhc3MgR3JhcGggOiBwdWJs
aWMgdmlydHVhbCBTY2FubmFibGUgewogICAgIEJhZzxDYWxsVmFyYXJnc0RhdGE+IG1fY2FsbFZh
cmFyZ3NEYXRhOwogICAgIEJhZzxMb2FkVmFyYXJnc0RhdGE+IG1fbG9hZFZhcmFyZ3NEYXRhOwog
ICAgIEJhZzxTdGFja0FjY2Vzc0RhdGE+IG1fc3RhY2tBY2Nlc3NEYXRhOworICAgIEJhZzxHZW5l
cmF0b3JMb2NhbERhdGE+IG1fZ2VuZXJhdG9yTG9jYWxEYXRhOwogICAgIEJhZzxMYXp5SlNWYWx1
ZT4gbV9sYXp5SlNWYWx1ZXM7CiAgICAgVmVjdG9yPElubGluZVZhcmlhYmxlRGF0YSwgND4gbV9p
bmxpbmVWYXJpYWJsZURhdGE7CiAgICAgSGFzaE1hcDxDb2RlQmxvY2sqLCBzdGQ6OnVuaXF1ZV9w
dHI8RnVsbEJ5dGVjb2RlTGl2ZW5lc3M+PiBtX2J5dGVjb2RlTGl2ZW5lc3M7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNwcAppbmRleCA1YzVjNjBlYmM4YmNiNGIyMDBlMzVk
ZmRmNGRjNDIwNmMxNTBmOWU4Li40MmQwZmE0MmMxNmY1M2VjZDNjODkyY2ZhMTA1MjZkNzBkNTg5
YzUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAKQEAgLTEzMiw2
ICsxMzIsOSBAQCBFeGl0TW9kZSBtYXlFeGl0KEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAg
ICBjYXNlIFB1dEJ5T2Zmc2V0OgogICAgIGNhc2UgUHV0Q2xvc3VyZVZhcjoKICAgICBjYXNlIFJl
Y29yZFJlZ0V4cENhY2hlZFJlc3VsdDoKKyAgICBjYXNlIFJlc2l6ZUdlbmVyYXRvckxvY2FsczoK
KyAgICBjYXNlIFNldEdlbmVyYXRvckxvY2FsOgorICAgIGNhc2UgR2V0R2VuZXJhdG9yTG9jYWw6
CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBTdHJDYXQ6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTm9kZS5oCmluZGV4IDg2NWQ1MmJmNjVkNDRhZTc5N2I1NGVjMTNiZmIyMDU1YWZmOGU4Yjku
Ljk4NWVmYmVmZGJkNGMyMTgyNjg1ZDJlN2M0YmRmNGI3OWZiZGMzMzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTm9kZS5oCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiREZHQXJyYXlN
b2RlLmgiCiAjaW5jbHVkZSAiREZHQ29tbW9uLmgiCiAjaW5jbHVkZSAiREZHRXBvY2guaCIKKyNp
bmNsdWRlICJERkdHZW5lcmF0b3JMb2NhbERhdGEuaCIKICNpbmNsdWRlICJERkdMYXp5SlNWYWx1
ZS5oIgogI2luY2x1ZGUgIkRGR011bHRpR2V0QnlPZmZzZXREYXRhLmgiCiAjaW5jbHVkZSAiREZH
Tm9kZUZsYWdzLmgiCkBAIC05MDMsMTIgKzkwNCw3OCBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgICAg
IH0KICAgICB9CiAKKyAgICBib29sIGhhc0dlbmVyYXRvckxvY2Fsc1NpemUoKQorICAgIHsKKyAg
ICAgICAgc3dpdGNoIChvcCgpKSB7CisgICAgICAgIGNhc2UgTmV3R2VuZXJhdG9yRnJhbWU6Cisg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIHVuc2lnbmVkIGdldFB1dEluZm8o
KQogICAgIHsKICAgICAgICAgQVNTRVJUKGhhc0dldFB1dEluZm8oKSk7CiAgICAgICAgIHJldHVy
biBtX29wSW5mbzI7CiAgICAgfQogCisgICAgdW5zaWduZWQgZ2VuZXJhdG9yTG9jYWxzU2l6ZSgp
CisgICAgeworICAgICAgICBBU1NFUlQoaGFzR2VuZXJhdG9yTG9jYWxzU2l6ZSgpKTsKKyAgICAg
ICAgcmV0dXJuIG1fb3BJbmZvOworICAgIH0KKworICAgIGJvb2wgaGFzR2VuZXJhdG9yTG9jYWxJ
bmRleCgpCisgICAgeworICAgICAgICBzd2l0Y2ggKG9wKCkpIHsKKyAgICAgICAgY2FzZSBTZXRH
ZW5lcmF0b3JMb2NhbDoKKyAgICAgICAgY2FzZSBHZXRHZW5lcmF0b3JMb2NhbDoKKyAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICB9CisgICAgfQorCisgICAgdW5zaWduZWQgZ2VuZXJhdG9yTG9jYWxJbmRl
eCgpCisgICAgeworICAgICAgICBBU1NFUlQoaGFzR2VuZXJhdG9yTG9jYWxJbmRleCgpKTsKKyAg
ICAgICAgcmV0dXJuIG1fb3BJbmZvOworICAgIH0KKworICAgIGJvb2wgaGFzR2VuZXJhdG9yTG9j
YWxEYXRhKCkKKyAgICB7CisgICAgICAgIHN3aXRjaCAob3AoKSkgeworICAgICAgICBjYXNlIFNl
dEdlbmVyYXRvckxvY2FsOgorICAgICAgICBjYXNlIEdldEdlbmVyYXRvckxvY2FsOgorICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBHZW5lcmF0b3JMb2NhbERhdGEqIGdlbmVy
YXRvckxvY2FsRGF0YSgpCisgICAgeworICAgICAgICBBU1NFUlQoaGFzR2VuZXJhdG9yTG9jYWxE
YXRhKCkpOworICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxHZW5lcmF0b3JMb2NhbERh
dGEqPihtX29wSW5mbzIpOworICAgIH0KKworICAgIGJvb2wgaGFzR2VuZXJhdG9yRnJhbWVMb2Nh
bHMoKQorICAgIHsKKyAgICAgICAgc3dpdGNoIChvcCgpKSB7CisgICAgICAgIGNhc2UgUmVzaXpl
R2VuZXJhdG9yTG9jYWxzOgorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGRlZmF1
bHQ6CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB1
bnNpZ25lZCBnZW5lcmF0b3JGcmFtZUxvY2FscygpCisgICAgeworICAgICAgICBBU1NFUlQoaGFz
R2VuZXJhdG9yRnJhbWVMb2NhbHMoKSk7CisgICAgICAgIHJldHVybiBtX29wSW5mbzsKKyAgICB9
CisKICAgICBib29sIGhhc0FjY2Vzc29yQXR0cmlidXRlcygpCiAgICAgewogICAgICAgICBzd2l0
Y2ggKG9wKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZVR5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAppbmRleCAz
NDExMzRmOWYxNzA4YzJkZmI1MDUwOGZlY2FhNTc2ZGY3NGRhOGEzLi5mZTRlMTFkODEyZDNkZDNl
YTUxMDE3N2IyODM1MTYzNTAxMjY3NzBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR05vZGVUeXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdO
b2RlVHlwZS5oCkBAIC04Miw2ICs4MiwxMCBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERG
RyB7CiAgICAgbWFjcm8oRmx1c2gsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhQaGFu
dG9tTG9jYWwsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBcCisgICAgbWFjcm8oU2V0R2VuZXJh
dG9yTG9jYWwsIE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBtYWNybyhHZXRHZW5lcmF0b3JMb2Nh
bCwgTm9kZVJlc3VsdEpTKSBcCisgICAgbWFjcm8oUmVzaXplR2VuZXJhdG9yTG9jYWxzLCBOb2Rl
TXVzdEdlbmVyYXRlKSBcCisgICAgXAogICAgIC8qIEhpbnQgdGhhdCB0aGlzIGlzIHdoZXJlIGJ5
dGVjb2RlIHRoaW5rcyBpcyBhIGdvb2QgcGxhY2UgdG8gT1NSLiBOb3RlIHRoYXQgdGhpcyAqL1wK
ICAgICAvKiB3aWxsIGV4aXN0IGV2ZW4gaW4gaW5saW5lZCBsb29wcy4gVGhpcyBoYXMgbm8gZXhl
Y3V0aW9uIHNlbWFudGljcyBidXQgaXQgbXVzdCAqL1wKICAgICAvKiBzdXJ2aXZlIGFsbCBEQ0Uu
IFdlIHRyZWF0IHRoaXMgYXMgYmVpbmcgYSBjYW4tZXhpdCBiZWNhdXNlIHRpZXItdXAgdG8gRlRM
IG1heSAqL1wKQEAgLTI4OCw2ICsyOTIsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERG
RyB7CiAgICAgbWFjcm8oTmV3QXJyYXlCdWZmZXIsIE5vZGVSZXN1bHRKUykgXAogICAgIG1hY3Jv
KE5ld1R5cGVkQXJyYXksIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBt
YWNybyhOZXdSZWdleHAsIE5vZGVSZXN1bHRKUykgXAorICAgIG1hY3JvKE5ld0dlbmVyYXRvckZy
YW1lLCBOb2RlUmVzdWx0SlMpIFwKICAgICAvKiBSZXN0IFBhcmFtZXRlciAqL1wKICAgICBtYWNy
byhHZXRSZXN0TGVuZ3RoLCBOb2RlUmVzdWx0SW50MzIpIFwKICAgICBtYWNybyhDb3B5UmVzdCwg
Tm9kZU11c3RHZW5lcmF0ZSkgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0
aW9ucy5jcHAKaW5kZXggYTVkMGQwNDE0ZGQ5YWQ3OTEwMjBiM2QwNTZmMzJjOWM3Mzc5YjMyYi4u
OWFkOTJiZWQwYTkwMTJhMDFlYjU3ZGM2MWJjZTExYjEzZDQ1N2RhOCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCkBAIC00MSw4ICs0MSw5IEBACiAjaW5j
bHVkZSAiRGlyZWN0QXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiRlRMRm9yT1NSRW50cnlKSVRDb2Rl
LmgiCiAjaW5jbHVkZSAiRlRMT1NSRW50cnkuaCIKLSNpbmNsdWRlICJIb3N0Q2FsbFJldHVyblZh
bHVlLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yRnJhbWUuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0
ZXIuaCIKKyNpbmNsdWRlICJIb3N0Q2FsbFJldHVyblZhbHVlLmgiCiAjaW5jbHVkZSAiSW50ZXJw
cmV0ZXIuaCIKICNpbmNsdWRlICJKSVQuaCIKICNpbmNsdWRlICJKSVRFeGNlcHRpb25zLmgiCkBA
IC05NjYsNiArOTY3LDExIEBAIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3RmxvYXQ2
NEFycmF5V2l0aE9uZUFyZ3VtZW50KAogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIq
Pihjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzPEpTRmxvYXQ2NEFy
cmF5PihleGVjLCBzdHJ1Y3R1cmUsIGVuY29kZWRWYWx1ZSwgMCwgTnVsbG9wdCkpOwogfQogCitj
aGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0dlbmVyYXRvckZyYW1lKEV4ZWNTdGF0ZSog
ZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludDMyX3QgbnVtYmVyT2ZDYWxsZWVMb2NhbHMp
Cit7CisgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxjaGFyKj4oR2VuZXJhdG9yRnJhbWU6OmNyZWF0
ZShleGVjLT52bSgpLCBzdHJ1Y3R1cmUsIG51bWJlck9mQ2FsbGVlTG9jYWxzKSk7Cit9CisKIEpT
Q2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25DcmVhdGVBY3RpdmF0aW9uRGlyZWN0KEV4ZWNT
dGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTU2NvcGUqIHNjb3BlLCBTeW1ib2xU
YWJsZSogdGFibGUsIEVuY29kZWRKU1ZhbHVlIGluaXRpYWxWYWx1ZUVuY29kZWQpCiB7CiAgICAg
SlNWYWx1ZSBpbml0aWFsVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoaW5pdGlhbFZhbHVlRW5jb2Rl
ZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCmluZGV4IDVhOWJj
MjVhMDhlZTI3ZjY4NTc3ZTlkNzY1ZjFmODcyNjM3ZDE5MTQuLjE5YWUyOWVlYjk5Yzk2ZjFmMjVl
M2Y0MTlkNGJkN2Q4ZjAwYjY5NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3Bl
cmF0aW9ucy5oCkBAIC04MSw2ICs4MSw3IEBAIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
TmV3RmxvYXQzMkFycmF5V2l0aFNpemUoRXhlY1N0YXRlKiwgU3RydWN0dXJlKiwgaW50CiBjaGFy
KiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Zsb2F0MzJBcnJheVdpdGhPbmVBcmd1bWVudChF
eGVjU3RhdGUqLCBTdHJ1Y3R1cmUqLCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFMOwogY2hh
ciogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdGbG9hdDY0QXJyYXlXaXRoU2l6ZShFeGVjU3Rh
dGUqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90KSBXVEZfSU5URVJOQUw7CiBjaGFyKiBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbk5ld0Zsb2F0NjRBcnJheVdpdGhPbmVBcmd1bWVudChFeGVjU3RhdGUqLCBT
dHJ1Y3R1cmUqLCBFbmNvZGVkSlNWYWx1ZSkgV1RGX0lOVEVSTkFMOworY2hhciogSklUX09QRVJB
VElPTiBvcGVyYXRpb25OZXdHZW5lcmF0b3JGcmFtZShFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqLCBp
bnQzMl90KSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlW
YWxTdHJpY3QoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRQcm9wZXJ0eSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSBXVEZf
SU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxOb25TdHJpY3Qo
RXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRQcm9wZXJ0eSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSBXVEZfSU5URVJOQUw7
CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxDZWxsU3RyaWN0KEV4ZWNTdGF0
ZSosIEpTQ2VsbCosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRQcm9wZXJ0eSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlKSBXVEZfSU5URVJOQUw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCmluZGV4
IDg3MDA3NzU2ZjhmOGEwOTY5YjQ5YWQzMjUxZWVjNTJkODE1YzNlZjguLmEwMzQ5Y2NkMDRhZDkz
MzM3ZmNmZmM1YjI5ODJlNDk3YzI4N2Y0OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCkBAIC0x
NjgsNiArMTY4LDI0IEBAIGNsYXNzIFByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlIDogcHVibGlj
IFBoYXNlIHsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKKyAgICAgICAgY2FzZSBT
ZXRHZW5lcmF0b3JMb2NhbDogeworICAgICAgICAgICAgR2VuZXJhdG9yTG9jYWxEYXRhKiBnZW5l
cmF0b3JMb2NhbERhdGEgPSBub2RlLT5nZW5lcmF0b3JMb2NhbERhdGEoKTsKKyAgICAgICAgICAg
IGNoYW5nZWQgfD0gZ2VuZXJhdG9yTG9jYWxEYXRhLT5wcmVkaWN0KG5vZGUtPmNoaWxkMigpLT5w
cmVkaWN0aW9uKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBj
YXNlIEdldEdlbmVyYXRvckxvY2FsOiB7CisgICAgICAgICAgICBHZW5lcmF0b3JMb2NhbERhdGEq
IHZhcmlhYmxlID0gbm9kZS0+Z2VuZXJhdG9yTG9jYWxEYXRhKCk7CisgICAgICAgICAgICBTcGVj
dWxhdGVkVHlwZSBwcmVkaWN0aW9uID0gdmFyaWFibGUtPnByZWRpY3Rpb24oKTsKKyAgICAgICAg
ICAgIC8vIFdlIGFsd2F5cyBzdG9yZSB0aGUgdmFsdWUgaW4gR2VuZXJhdG9yTG9jYWwgYXMgRm9y
bWF0SlNWYWx1ZS4KKyAgICAgICAgICAgIC8vIFNvIGRvdWJsZSB2YWx1ZSBpcyBiZXR0ZXIgdGhh
biBJbnQ1MiB2YWx1ZS4KKyAgICAgICAgICAgIGlmIChlbmFibGVJbnQ1MigpICYmIChwcmVkaWN0
aW9uICYgU3BlY0ludDUyT25seSkpCisgICAgICAgICAgICAgICAgcHJlZGljdGlvbiA9IChwcmVk
aWN0aW9uIHwgU3BlY0FueUludEFzRG91YmxlKSAmIH5TcGVjSW50NTJPbmx5OworICAgICAgICAg
ICAgaWYgKHByZWRpY3Rpb24pCisgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRp
Y3Rpb24ocHJlZGljdGlvbik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCiAgICAg
ICAgIGNhc2UgVUludDMyVG9OdW1iZXI6IHsKICAgICAgICAgICAgIGlmIChub2RlLT5jYW5TcGVj
dWxhdGVJbnQzMihtX3Bhc3MpKQogICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVk
aWN0aW9uKFNwZWNJbnQzMk9ubHkpOwpAQCAtODQyLDcgKzg2MCw4IEBAIGNsYXNzIFByZWRpY3Rp
b25Qcm9wYWdhdGlvblBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgY2FzZSBDcmVhdGVBY3RpdmF0aW9uOiB7
CisgICAgICAgIGNhc2UgQ3JlYXRlQWN0aXZhdGlvbjoKKyAgICAgICAgY2FzZSBOZXdHZW5lcmF0
b3JGcmFtZTogewogICAgICAgICAgICAgc2V0UHJlZGljdGlvbihTcGVjT2JqZWN0T3RoZXIpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTEwNTksNiArMTA3OCw3IEBAIGNsYXNz
IFByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgY2Fz
ZSBMb2FkVmFyYXJnczoKICAgICAgICAgY2FzZSBDb3B5UmVzdDoKICAgICAgICAgY2FzZSBQdXRE
eW5hbWljVmFyOgorICAgICAgICBjYXNlIFJlc2l6ZUdlbmVyYXRvckxvY2FsczoKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgCiAgICAgICAgIC8vIFRoaXMgZ2V0cyBpZ25vcmVkIGJl
Y2F1c2UgaXQgb25seSBwcmV0ZW5kcyB0byBwcm9kdWNlIGEgdmFsdWUuCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCmluZGV4IDYxMzU3MzZhZjNkYWVhYzY3
N2Q5MTQxYzA5ZjFiNmM0ZWI5OTM5NGMuLjAyOGI1ZGUzMTU4MWYwNjY3Y2FjYjQ4MGEyYzI4ZmQ0
OTAyNmJjYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRv
RXhlY3V0ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0
ZS5oCkBAIC0yNTAsNiArMjUwLDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVU
eXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgTmV3QXJyYXlX
aXRoU2l6ZToKICAgICBjYXNlIE5ld0FycmF5QnVmZmVyOgogICAgIGNhc2UgTmV3UmVnZXhwOgor
ICAgIGNhc2UgTmV3R2VuZXJhdG9yRnJhbWU6CiAgICAgY2FzZSBQcm9maWxlV2lsbENhbGw6CiAg
ICAgY2FzZSBQcm9maWxlRGlkQ2FsbDoKICAgICBjYXNlIFByb2ZpbGVUeXBlOgpAQCAtMzQ0LDYg
KzM0NSw5IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3RhdGUsIEdy
YXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIEdldE15QXJndW1lbnRCeVZhbE91dE9m
Qm91bmRzOgogICAgIGNhc2UgRm9yd2FyZFZhcmFyZ3M6CiAgICAgY2FzZSBDb3B5UmVzdDoKKyAg
ICBjYXNlIFNldEdlbmVyYXRvckxvY2FsOgorICAgIGNhc2UgR2V0R2VuZXJhdG9yTG9jYWw6Cisg
ICAgY2FzZSBSZXNpemVHZW5lcmF0b3JMb2NhbHM6CiAgICAgY2FzZSBTdHJpbmdSZXBsYWNlOgog
ICAgIGNhc2UgU3RyaW5nUmVwbGFjZVJlZ0V4cDoKICAgICBjYXNlIEdldFJlZ0V4cE9iamVjdExh
c3RJbmRleDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5jcHAKaW5kZXggMDU4MWFjZDIzODAxOTJiNGRhNmQ4NjA1NjhhZDcxY2Y1ZTQ2ZDJiMy4uMmIx
MDY4MmJmYjA4NWYxMGM3N2Q5YTk3ZTVjMDUxODA3Mzg1MDRhMyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTM4LDYgKzM4LDcgQEAK
ICNpbmNsdWRlICJERkdTYW5lU3RyaW5nR2V0QnlWYWxTbG93UGF0aEdlbmVyYXRvci5oIgogI2lu
Y2x1ZGUgIkRGR1Nsb3dQYXRoR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiRGlyZWN0QXJndW1lbnRz
LmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yRnJhbWUuaCIKICNpbmNsdWRlICJKSVRBZGRHZW5lcmF0
b3IuaCIKICNpbmNsdWRlICJKSVRCaXRBbmRHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJKSVRCaXRP
ckdlbmVyYXRvci5oIgpAQCAtNjc4OCw2ICs2Nzg5LDQyIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVOZXdTdHJpbmdPYmplY3QoTm9kZSogbm9kZSkKICAgICBjZWxsUmVzdWx0KHJlc3Vs
dEdQUiwgbm9kZSk7CiB9CiAKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdHZW5lcmF0
b3JGcmFtZShOb2RlKiBub2RlKQoreworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qg
PSBtX2ppdC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpOwor
ICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT5nZW5lcmF0b3JGcmFtZVN0
cnVjdHVyZSgpOworICAgIHVuc2lnbmVkIGdlbmVyYXRvckxvY2Fsc1NpemUgPSBub2RlLT5nZW5l
cmF0b3JMb2NhbHNTaXplKCk7CisKKyAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOworICAg
IEdQUlRlbXBvcmFyeSBzY3JhdGNoMSh0aGlzKTsKKyAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaDIo
dGhpcyk7CisKKyAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOworICAgIEdQUlJl
ZyBzY3JhdGNoMUdQUiA9IHNjcmF0Y2gxLmdwcigpOworICAgIEdQUlJlZyBzY3JhdGNoMkdQUiA9
IHNjcmF0Y2gyLmdwcigpOworCisgICAgSklUQ29tcGlsZXI6Okp1bXBMaXN0IHNsb3dQYXRoOwor
CisgICAgZW1pdEFsbG9jYXRlSlNPYmplY3RXaXRoS25vd25TaXplPEdlbmVyYXRvckZyYW1lPihy
ZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHIoc3RydWN0dXJlKSwgVHJ1c3RlZEltbVB0cihudWxscHRy
KSwgc2NyYXRjaDFHUFIsIHNjcmF0Y2gyR1BSLCBzbG93UGF0aCwgR2VuZXJhdG9yRnJhbWU6OmFs
bG9jYXRpb25TaXplRm9yTG9jYWxzKGdlbmVyYXRvckxvY2Fsc1NpemUpKTsKKyAgICBtX2ppdC5z
dG9yZTMyKFRydXN0ZWRJbW0zMihnZW5lcmF0b3JMb2NhbHNTaXplKSwgSklUQ29tcGlsZXI6OkFk
ZHJlc3MocmVzdWx0R1BSLCBHZW5lcmF0b3JGcmFtZTo6bnVtYmVyT2ZDYWxsZWVMb2NhbHNPZmZz
ZXQoKSkpOworICAgIG1faml0LnN0b3JlMzIoVHJ1c3RlZEltbTMyKDApLCBKSVRDb21waWxlcjo6
QWRkcmVzcyhyZXN1bHRHUFIsIEdlbmVyYXRvckZyYW1lOjpudW1iZXJPZlNhdmVkQ2FsbGVlTG9j
YWxzT2Zmc2V0KCkpKTsKKyAgICBKU1ZhbHVlIGVtcHR5VmFsdWU7CisgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IGdlbmVyYXRvckxvY2Fsc1NpemU7ICsraSkKKyAgICAgICAgbV9qaXQuc3Rv
cmVUcnVzdGVkVmFsdWUoZW1wdHlWYWx1ZSwgSklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0R1BS
LCBHZW5lcmF0b3JGcmFtZTo6bG9jYWxPZmZzZXQoaSkpKTsKKworICAgIGFkZFNsb3dQYXRoR2Vu
ZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93UGF0aCwgdGhpcywgb3BlcmF0aW9uTmV3R2VuZXJhdG9y
RnJhbWUsIHJlc3VsdEdQUiwgc3RydWN0dXJlLCBnZW5lcmF0b3JMb2NhbHNTaXplKSk7CisKKyAg
ICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7Cit9CisKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVSZXNpemVHZW5lcmF0b3JMb2NhbHMoTm9kZSogbm9kZSkKK3sKKyAgICBTcGVjdWxh
dGVDZWxsT3BlcmFuZCBmcmFtZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgR1BSUmVnIGZy
YW1lR1BSID0gZnJhbWUuZ3ByKCk7CisgICAgbV9qaXQuc3RvcmUzMihUcnVzdGVkSW1tMzIobm9k
ZS0+Z2VuZXJhdG9yRnJhbWVMb2NhbHMoKSksIEpJVENvbXBpbGVyOjpBZGRyZXNzKGZyYW1lR1BS
LCBHZW5lcmF0b3JGcmFtZTo6bnVtYmVyT2ZTYXZlZENhbGxlZUxvY2Fsc09mZnNldCgpKSk7Cisg
ICAgbm9SZXN1bHQobm9kZSk7Cit9CisKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdU
eXBlZEFycmF5KE5vZGUqIG5vZGUpCiB7CiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCA9IG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKaW5kZXgg
NDMxZGI1YTlkMzFiZjA3ZGZlOGFkODZmYWMwMzMzMTI2ZjQ3NDU4MC4uNmNiNGJjYjZjYWEzOWI4
OWE1ZDUzZWIxNDM1NDdhNTg5ODg3YTc5NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuaApAQCAtMjQ5Miw2ICsyNDkyLDggQEAgY2xhc3MgU3BlY3Vs
YXRpdmVKSVQgewogICAgIHZvaWQgY29tcGlsZVB1dEJ5VmFsRm9yRmxvYXRUeXBlZEFycmF5KEdQ
UlJlZyBiYXNlLCBHUFJSZWcgcHJvcGVydHksIE5vZGUqLCBUeXBlZEFycmF5VHlwZSk7CiAgICAg
dGVtcGxhdGUgPHR5cGVuYW1lIENsYXNzVHlwZT4gdm9pZCBjb21waWxlTmV3RnVuY3Rpb25Db21t
b24oR1BSUmVnLCBTdHJ1Y3R1cmUqLCBHUFJSZWcsIEdQUlJlZywgR1BSUmVnLCBNYWNyb0Fzc2Vt
Ymxlcjo6SnVtcExpc3QmLCBzaXplX3QsIEZ1bmN0aW9uRXhlY3V0YWJsZSosIHB0cmRpZmZfdCwg
cHRyZGlmZl90LCBwdHJkaWZmX3QpOwogICAgIHZvaWQgY29tcGlsZU5ld0Z1bmN0aW9uKE5vZGUq
KTsKKyAgICB2b2lkIGNvbXBpbGVOZXdHZW5lcmF0b3JGcmFtZShOb2RlKik7CisgICAgdm9pZCBj
b21waWxlUmVzaXplR2VuZXJhdG9yTG9jYWxzKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVTZXRG
dW5jdGlvbk5hbWUoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUZvcndhcmRWYXJhcmdzKE5vZGUq
KTsKICAgICB2b2lkIGNvbXBpbGVDcmVhdGVBY3RpdmF0aW9uKE5vZGUqKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCmluZGV4
IGQ3MjNhNzBiODRlYTU0YzJiNDkxYzhkNTM4ZTMwZWUzYTBkZTE0MDguLmNhYjM0NDI4NGRhZDYz
NGJmYzQ5MjM1Zjc1Yzk0Yzg3MTdmMzA2ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApAQCAtMzcsNiArMzcsNyBAQAog
I2luY2x1ZGUgIkRGR1Nsb3dQYXRoR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiRGVidWdnZXIuaCIK
ICNpbmNsdWRlICJEaXJlY3RBcmd1bWVudHMuaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JGcmFtZS5o
IgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIkpTRW52aXJvbm1lbnRSZWNv
cmQuaCIKICNpbmNsdWRlICJKU0xleGljYWxFbnZpcm9ubWVudC5oIgpAQCAtMzkyNCw2ICszOTI1
LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAg
Y2VsbFJlc3VsdChyZXN1bHRQYXlsb2FkLmdwcigpLCBub2RlKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgfQorCisgICAgY2FzZSBOZXdHZW5lcmF0b3JGcmFtZTogeworICAgICAgICBjb21waWxlTmV3
R2VuZXJhdG9yRnJhbWUobm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICAgICAgCiAg
ICAgY2FzZSBUb1RoaXM6IHsKICAgICAgICAgQVNTRVJUKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQo
KSA9PSBVbnR5cGVkVXNlKTsKQEAgLTUwNzEsNiArNTA3Nyw0MSBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBu
b2RlKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQorICAgIGNhc2UgU2V0R2VuZXJhdG9yTG9jYWw6
IHsKKyAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgZnJhbWUodGhpcywgbm9kZS0+Y2hpbGQx
KCkpOworICAgICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7
CisKKyAgICAgICAgR1BSUmVnIGZyYW1lR1BSID0gZnJhbWUuZ3ByKCk7CisgICAgICAgIEdQUlJl
ZyB2YWx1ZVRhZ0dQUiA9IHZhbHVlLnRhZ0dQUigpOworICAgICAgICBHUFJSZWcgdmFsdWVQYXls
b2FkR1BSID0gdmFsdWUucGF5bG9hZEdQUigpOworICAgICAgICB1bnNpZ25lZCBnZW5lcmF0b3JM
b2NhbEluZGV4ID0gbm9kZS0+Z2VuZXJhdG9yTG9jYWxJbmRleCgpOworCisgICAgICAgIG1faml0
LnN0b3JlMzIodmFsdWVUYWdHUFIsIEpJVENvbXBpbGVyOjpBZGRyZXNzKGZyYW1lR1BSLCBHZW5l
cmF0b3JGcmFtZTo6bG9jYWxPZmZzZXQoZ2VuZXJhdG9yTG9jYWxJbmRleCkgKyBPQkpFQ1RfT0ZG
U0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMudGFnKSkpOworICAgICAgICBtX2ppdC5zdG9yZTMyKHZh
bHVlUGF5bG9hZEdQUiwgSklUQ29tcGlsZXI6OkFkZHJlc3MoZnJhbWVHUFIsIEdlbmVyYXRvckZy
YW1lOjpsb2NhbE9mZnNldChnZW5lcmF0b3JMb2NhbEluZGV4KSArIE9CSkVDVF9PRkZTRVRPRihK
U1ZhbHVlLCB1LmFzQml0cy5wYXlsb2FkKSkpOworCisgICAgICAgIG5vUmVzdWx0KG5vZGUpOwor
ICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBHZXRHZW5lcmF0b3JMb2NhbDogeworICAg
ICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBmcmFtZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Cisg
ICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHRUYWcodGhpcyk7CisgICAgICAgIEdQUlRlbXBvcmFy
eSByZXN1bHRQYXlsb2FkKHRoaXMpOworCisgICAgICAgIEdQUlJlZyBmcmFtZUdQUiA9IGZyYW1l
LmdwcigpOworICAgICAgICBHUFJSZWcgcmVzdWx0VGFnR1BSID0gcmVzdWx0VGFnLmdwcigpOwor
ICAgICAgICBHUFJSZWcgcmVzdWx0UGF5bG9hZEdQUiA9IHJlc3VsdFBheWxvYWQuZ3ByKCk7Cisg
ICAgICAgIHVuc2lnbmVkIGdlbmVyYXRvckxvY2FsSW5kZXggPSBub2RlLT5nZW5lcmF0b3JMb2Nh
bEluZGV4KCk7CisKKyAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGZy
YW1lR1BSLCBHZW5lcmF0b3JGcmFtZTo6bG9jYWxPZmZzZXQoZ2VuZXJhdG9yTG9jYWxJbmRleCkg
KyBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMudGFnKSksIHJlc3VsdFRhZ0dQUik7
CisgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6QWRkcmVzcyhmcmFtZUdQUiwgR2Vu
ZXJhdG9yRnJhbWU6OmxvY2FsT2Zmc2V0KGdlbmVyYXRvckxvY2FsSW5kZXgpICsgT0JKRUNUX09G
RlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnBheWxvYWQpKSwgcmVzdWx0UGF5bG9hZEdQUik7CisK
KyAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRUYWdHUFIsIHJlc3VsdFBheWxvYWRHUFIsIG5v
ZGUpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBSZXNpemVHZW5lcmF0b3JMb2Nh
bHM6IHsKKyAgICAgICAgY29tcGlsZVJlc2l6ZUdlbmVyYXRvckxvY2Fscyhub2RlKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgfQogICAgIGNhc2UgUHJvZmlsZVR5cGU6IHsKICAgICAgICAgSlNWYWx1
ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBHUFJUZW1wb3Jh
cnkgc2NyYXRjaDEodGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVDY0LmNwcAppbmRleCBiOWE0MDBjZDYzMDA3NWE2NDRlNzhkNmRkYmI4ZTNh
MDUzYjEzOGE0Li5lYjVkY2Y5ZjIwNzI1MmIyMjY4YmViNTRjODFmZjFlNDRkNzJmZGI1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAK
QEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJERkdTbG93UGF0aEdlbmVyYXRvci5oIgogI2lu
Y2x1ZGUgIkRlYnVnZ2VyLmgiCiAjaW5jbHVkZSAiRGlyZWN0QXJndW1lbnRzLmgiCisjaW5jbHVk
ZSAiR2VuZXJhdG9yRnJhbWUuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRl
ICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNFbnZpcm9ubWVudFJlY29yZC5oIgpAQCAtMzkw
OSw2ICszOTEwLDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkK
ICAgICAgICAgY2VsbFJlc3VsdChyZXN1bHQuZ3ByKCksIG5vZGUpOwogICAgICAgICBicmVhazsK
ICAgICB9CisKKyAgICBjYXNlIE5ld0dlbmVyYXRvckZyYW1lOiB7CisgICAgICAgIGNvbXBpbGVO
ZXdHZW5lcmF0b3JGcmFtZShub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogICAgICAgICAK
ICAgICBjYXNlIFRvVGhpczogewogICAgICAgICBBU1NFUlQobm9kZS0+Y2hpbGQxKCkudXNlS2lu
ZCgpID09IFVudHlwZWRVc2UpOwpAQCAtNTA0Niw2ICs1MDUyLDM1IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIs
IG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9CisgICAgY2FzZSBTZXRHZW5lcmF0b3JMb2Nh
bDogeworICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBmcmFtZSh0aGlzLCBub2RlLT5jaGls
ZDEoKSk7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMigp
KTsKKworICAgICAgICBHUFJSZWcgZnJhbWVHUFIgPSBmcmFtZS5ncHIoKTsKKyAgICAgICAgR1BS
UmVnIHZhbHVlR1BSID0gdmFsdWUuZ3ByKCk7CisgICAgICAgIHVuc2lnbmVkIGdlbmVyYXRvckxv
Y2FsSW5kZXggPSBub2RlLT5nZW5lcmF0b3JMb2NhbEluZGV4KCk7CisKKyAgICAgICAgbV9qaXQu
c3RvcmU2NCh2YWx1ZUdQUiwgSklUQ29tcGlsZXI6OkFkZHJlc3MoZnJhbWVHUFIsIEdlbmVyYXRv
ckZyYW1lOjpsb2NhbE9mZnNldChnZW5lcmF0b3JMb2NhbEluZGV4KSkpOworCisgICAgICAgIG5v
UmVzdWx0KG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBHZXRHZW5lcmF0
b3JMb2NhbDogeworICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBmcmFtZSh0aGlzLCBub2Rl
LT5jaGlsZDEoKSk7CisgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CisKKyAgICAg
ICAgR1BSUmVnIGZyYW1lR1BSID0gZnJhbWUuZ3ByKCk7CisgICAgICAgIEdQUlJlZyByZXN1bHRH
UFIgPSByZXN1bHQuZ3ByKCk7CisgICAgICAgIHVuc2lnbmVkIGdlbmVyYXRvckxvY2FsSW5kZXgg
PSBub2RlLT5nZW5lcmF0b3JMb2NhbEluZGV4KCk7CisKKyAgICAgICAgbV9qaXQubG9hZDY0KEpJ
VENvbXBpbGVyOjpBZGRyZXNzKGZyYW1lR1BSLCBHZW5lcmF0b3JGcmFtZTo6bG9jYWxPZmZzZXQo
Z2VuZXJhdG9yTG9jYWxJbmRleCkpLCByZXN1bHRHUFIpOworICAgICAgICBqc1ZhbHVlUmVzdWx0
KHJlc3VsdEdQUiwgbm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIFJlc2l6
ZUdlbmVyYXRvckxvY2FsczogeworICAgICAgICBjb21waWxlUmVzaXplR2VuZXJhdG9yTG9jYWxz
KG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CiAgICAgY2FzZSBQcm9maWxlVHlwZTogewog
ICAgICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAg
ICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoMSh0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAKaW5k
ZXggYjYzMTIwOWU4ZDE3MjY4ZDA5YTNlMDc3ODJkNzhjOTM0NjJkMGJmYy4uYzkzN2JkOWQyNzEz
YjRlOThhNTQzYWJlZWY3NzdmYTIyNzBiN2VmYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAKQEAg
LTI4Myw2ICsyODMsMTEgQEAgY2xhc3MgU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UgOiBwdWJs
aWMgUGhhc2UgewogICAgICAgICAgICAgICAgIGNvbnNpZGVyQmFycmllcihtX25vZGUtPmNoaWxk
MSgpLCBtX25vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgY2FzZSBTZXRHZW5lcmF0b3JMb2NhbDogeworICAgICAgICAg
ICAgICAgIGNvbnNpZGVyQmFycmllcihtX25vZGUtPmNoaWxkMSgpLCBtX25vZGUtPmNoaWxkMigp
KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICAKICAgICAgICAgICAgIGNhc2UgU2V0RnVuY3Rpb25OYW1lOiB7CiAgICAgICAgICAgICAgICAg
Y29uc2lkZXJCYXJyaWVyKG1fbm9kZS0+Y2hpbGQxKCksIG1fbm9kZS0+Y2hpbGQyKCkpOwpAQCAt
MzAzLDYgKzMwOCw3IEBAIGNsYXNzIFN0b3JlQmFycmllckluc2VydGlvblBoYXNlIDogcHVibGlj
IFBoYXNlIHsKICAgICAgICAgICAgIGNhc2UgTmV3QXJyYXlCdWZmZXI6CiAgICAgICAgICAgICBj
YXNlIE5ld1R5cGVkQXJyYXk6CiAgICAgICAgICAgICBjYXNlIE5ld1JlZ2V4cDoKKyAgICAgICAg
ICAgIGNhc2UgTmV3R2VuZXJhdG9yRnJhbWU6CiAgICAgICAgICAgICBjYXNlIE1hdGVyaWFsaXpl
TmV3T2JqZWN0OgogICAgICAgICAgICAgY2FzZSBNYXRlcmlhbGl6ZUNyZWF0ZUFjdGl2YXRpb246
CiAgICAgICAgICAgICBjYXNlIE5ld1N0cmluZ09iamVjdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2UuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFzZS5jcHAK
aW5kZXggNTFjZjQ4OTYwYThiMWZmNTcyYTg2OWVhZTE4YmYwYTlmNWEyNzlkZC4uMDBkMTk4YzM5
MDk1MzY1Y2U3ODYyZjc2YjE3ZjUzYmU0NjViOTI4ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFzZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFzZS5jcHAK
QEAgLTEzNSw2ICsxMzUsOSBAQCBjbGFzcyBTdHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFzZSA6IHB1
YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICAgICAgY2FzZSBDcmVhdGVEaXJlY3RBcmd1bWVudHM6
CiAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyU3RydWN0dXJlKG1fZ3JhcGguZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyktPmRpcmVjdEFyZ3VtZW50c1N0cnVjdHVyZSgp
KTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBOZXdH
ZW5lcmF0b3JGcmFtZToKKyAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJTdHJ1Y3R1cmUobV9n
cmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+Z2VuZXJhdG9yRnJh
bWVTdHJ1Y3R1cmUoKSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
ICAgICAgICAKICAgICAgICAgICAgICAgICBjYXNlIENyZWF0ZVNjb3BlZEFyZ3VtZW50czoKICAg
ICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJTdHJ1Y3R1cmUobV9ncmFwaC5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+c2NvcGVkQXJndW1lbnRzU3RydWN0dXJlKCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBv
c2l0b3J5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVw
b3NpdG9yeS5jcHAKaW5kZXggYTRiNTQzN2U5N2M0N2Y4ZmYzZmVlZGMxZWU5MGY2MDc3YWI1ZmYw
NS4uYjFiMmZlY2NlM2FmOTk0NGFmZDFjNjNhNGIzMGUwYjA3MmU5OTcyNyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnku
Y3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiQjNWYWx1ZUlubGluZXMuaCIKICNpbmNs
dWRlICJEaXJlY3RBcmd1bWVudHMuaCIKICNpbmNsdWRlICJGVExTdGF0ZS5oIgorI2luY2x1ZGUg
IkdlbmVyYXRvckZyYW1lLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAi
SlNFbnZpcm9ubWVudFJlY29yZC5oIgogI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1lRW51bWVyYXRv
ci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhl
YXBSZXBvc2l0b3J5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVh
cFJlcG9zaXRvcnkuaAppbmRleCAyMTI1ODBmZGFiN2FkYmJjMTVmNTU4OGI1ZTUzYzM3MmYyODlh
NTJhLi4yZmVlZDZiNjcwOGU2Mzc5ZjkzMjQ0NTQ0MmFhZDUyOTJlMDY3MWVkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnku
aApAQCAtNDgsNiArNDgsOCBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEZUTCB7CiAgICAg
bWFjcm8oRGlyZWN0QXJndW1lbnRzX2xlbmd0aCwgRGlyZWN0QXJndW1lbnRzOjpvZmZzZXRPZkxl
bmd0aCgpKSBcCiAgICAgbWFjcm8oRGlyZWN0QXJndW1lbnRzX21pbkNhcGFjaXR5LCBEaXJlY3RB
cmd1bWVudHM6Om9mZnNldE9mTWluQ2FwYWNpdHkoKSkgXAogICAgIG1hY3JvKERpcmVjdEFyZ3Vt
ZW50c19vdmVycmlkZXMsIERpcmVjdEFyZ3VtZW50czo6b2Zmc2V0T2ZPdmVycmlkZXMoKSkgXAor
ICAgIG1hY3JvKEdlbmVyYXRvckZyYW1lX251bWJlck9mQ2FsbGVlTG9jYWxzLCBHZW5lcmF0b3JG
cmFtZTo6bnVtYmVyT2ZDYWxsZWVMb2NhbHNPZmZzZXQoKSkgXAorICAgIG1hY3JvKEdlbmVyYXRv
ckZyYW1lX251bWJlck9mU2F2ZWRDYWxsZWVMb2NhbHMsIEdlbmVyYXRvckZyYW1lOjpudW1iZXJP
ZlNhdmVkQ2FsbGVlTG9jYWxzT2Zmc2V0KCkpIFwKICAgICBtYWNybyhHZXR0ZXJTZXR0ZXJfZ2V0
dGVyLCBHZXR0ZXJTZXR0ZXI6Om9mZnNldE9mR2V0dGVyKCkpIFwKICAgICBtYWNybyhHZXR0ZXJT
ZXR0ZXJfc2V0dGVyLCBHZXR0ZXJTZXR0ZXI6Om9mZnNldE9mU2V0dGVyKCkpIFwKICAgICBtYWNy
byhKU0FycmF5QnVmZmVyVmlld19sZW5ndGgsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxl
bmd0aCgpKSBcCkBAIC0xMDcsNiArMTA5LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBG
VEwgewogCiAjZGVmaW5lIEZPUl9FQUNIX0lOREVYRURfQUJTVFJBQ1RfSEVBUChtYWNybykgXAog
ICAgIG1hY3JvKERpcmVjdEFyZ3VtZW50c19zdG9yYWdlLCBEaXJlY3RBcmd1bWVudHM6OnN0b3Jh
Z2VPZmZzZXQoKSwgc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSkgXAorICAgIG1hY3JvKEdlbmVyYXRv
ckZyYW1lX2NhbGxlZUxvY2FscywgR2VuZXJhdG9yRnJhbWU6Om9mZnNldE9mTG9jYWxzKCksIHNp
emVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pKSBcCiAgICAgbWFjcm8oSlNFbnZpcm9ubWVudFJl
Y29yZF92YXJpYWJsZXMsIEpTRW52aXJvbm1lbnRSZWNvcmQ6Om9mZnNldE9mVmFyaWFibGVzKCks
IHNpemVvZihFbmNvZGVkSlNWYWx1ZSkpIFwKICAgICBtYWNybyhKU1Byb3BlcnR5TmFtZUVudW1l
cmF0b3JfY2FjaGVkUHJvcGVydHlOYW1lc1ZlY3RvckNvbnRlbnRzLCAwLCBzaXplb2YoV3JpdGVC
YXJyaWVyPEpTU3RyaW5nPikpIFwKICAgICBtYWNybyhKU1JvcGVTdHJpbmdfZmliZXJzLCBKU1Jv
cGVTdHJpbmc6Om9mZnNldE9mRmliZXJzKCksIHNpemVvZihXcml0ZUJhcnJpZXI8SlNTdHJpbmc+
KSkgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRp
ZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCmlu
ZGV4IDIxYWVlMDVkM2ViZTNlYzEzZTkzNDMxMWZmMDIwODM2MDEyMzdmZjguLmY2YTA4YjAwYjE2
NTlmMjk0NmE1MzJkMDVjN2NlYzhlNGIzZGZlNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKQEAgLTcyLDYgKzcyLDcgQEAgaW5saW5lIENhcGFi
aWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBOZXdPYmplY3Q6CiAg
ICAgY2FzZSBOZXdBcnJheToKICAgICBjYXNlIE5ld0FycmF5QnVmZmVyOgorICAgIGNhc2UgTmV3
R2VuZXJhdG9yRnJhbWU6CiAgICAgY2FzZSBOZXdUeXBlZEFycmF5OgogICAgIGNhc2UgR2V0QnlP
ZmZzZXQ6CiAgICAgY2FzZSBHZXRHZXR0ZXJTZXR0ZXJCeU9mZnNldDoKQEAgLTIyNiw2ICsyMjcs
OSBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBj
YXNlIFB1dFNldHRlckJ5VmFsOgogICAgIGNhc2UgQ29weVJlc3Q6CiAgICAgY2FzZSBHZXRSZXN0
TGVuZ3RoOgorICAgIGNhc2UgU2V0R2VuZXJhdG9yTG9jYWw6CisgICAgY2FzZSBHZXRHZW5lcmF0
b3JMb2NhbDoKKyAgICBjYXNlIFJlc2l6ZUdlbmVyYXRvckxvY2FsczoKICAgICBjYXNlIFJlZ0V4
cEV4ZWM6CiAgICAgY2FzZSBSZWdFeHBUZXN0OgogICAgIGNhc2UgTmV3UmVnZXhwOgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVQuY3BwCmluZGV4IDFkNTBhYmFlZWU4OTlkZDU4ODcxYzZiNzgxY2Y5Njdj
YzBiYjI3MWIuLjM2M2Q2MWJmM2UzNWE4NDA2ZDc4OTJmM2ZhMzBlMDI4ODk2YzU4NDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKQEAgLTIyOSw2ICsyMjksNyBAQCB2b2lkIEpJVDo6cHJp
dmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9PUChvcF9hc3NlcnQpCiAgICAg
ICAgIERFRklORV9PUChvcF9zYXZlKQogICAgICAgICBERUZJTkVfT1Aob3BfcmVzdW1lKQorICAg
ICAgICBERUZJTkVfT1Aob3BfbmV3X2dlbmVyYXRvcl9mcmFtZSkKICAgICAgICAgREVGSU5FX09Q
KG9wX2RlYnVnKQogICAgICAgICBERUZJTkVfT1Aob3BfZGVsX2J5X2lkKQogICAgICAgICBERUZJ
TkVfT1Aob3BfZGVsX2J5X3ZhbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCmluZGV4IDUxMTQwMDY0
MmIwNWFjYmM4Y2ZmZjJjMjgwNDA2MGFkNzk3YzQyNDUuLjFhOGUzM2E3NWNmNmIxNTA2ZGI1MWQy
YjllNjExYzlkMDk3MWVjYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaApAQCAtMzM0LDYgKzMz
NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBlbnVtIFdyaXRlQmFycmllck1vZGUgeyBV
bmNvbmRpdGlvbmFsV3JpdGVCYXJyaWVyLCBTaG91bGRGaWx0ZXJCYXNlLCBTaG91bGRGaWx0ZXJW
YWx1ZSwgU2hvdWxkRmlsdGVyQmFzZUFuZFZhbHVlIH07CiAgICAgICAgIC8vIHZhbHVlIHJlZ2lz
dGVyIGluIHdyaXRlIGJhcnJpZXIgaXMgdXNlZCBiZWZvcmUgYW55IHNjcmF0Y2ggcmVnaXN0ZXJz
CiAgICAgICAgIC8vIHNvIG1heSBzYWZlbHkgYmUgdGhlIHNhbWUgYXMgZWl0aGVyIG9mIHRoZSBz
Y3JhdGNoIHJlZ2lzdGVycy4KKyAgICAgICAgdm9pZCBlbWl0V3JpdGVCYXJyaWVyKHVuc2lnbmVk
IG93bmVyLCBXcml0ZUJhcnJpZXJNb2RlKTsKICAgICAgICAgdm9pZCBlbWl0V3JpdGVCYXJyaWVy
KHVuc2lnbmVkIG93bmVyLCB1bnNpZ25lZCB2YWx1ZSwgV3JpdGVCYXJyaWVyTW9kZSk7CiAgICAg
ICAgIHZvaWQgZW1pdFdyaXRlQmFycmllcihKU0NlbGwqIG93bmVyLCB1bnNpZ25lZCB2YWx1ZSwg
V3JpdGVCYXJyaWVyTW9kZSk7CiAgICAgICAgIHZvaWQgZW1pdFdyaXRlQmFycmllcihKU0NlbGwq
IG93bmVyKTsKQEAgLTQ5Nyw2ICs0OTgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9p
ZCBlbWl0X29wX2Fzc2VydChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3Bfc2F2
ZShJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfcmVzdW1lKEluc3RydWN0aW9u
Kik7CisgICAgICAgIHZvaWQgZW1pdF9vcF9uZXdfZ2VuZXJhdG9yX2ZyYW1lKEluc3RydWN0aW9u
Kik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9kZWJ1ZyhJbnN0cnVjdGlvbiopOwogICAgICAgICB2
b2lkIGVtaXRfb3BfZGVsX2J5X2lkKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9v
cF9kZWxfYnlfdmFsKEluc3RydWN0aW9uKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wY29kZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGNvZGVzLmNwcAppbmRleCAxOTk1ODAxMTdkOTk2MDI1YzM2NzM3Y2Y3YTAwODA3ZGU4YzE1ODY5
Li5mYTgzMDdiNzFlZTgyZWYxZjRkNGEyODE0YTk4M2ZhMzJjZWYwMWI1IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRl
ICJDb3BpZWRTcGFjZUlubGluZXMuaCIKICNpbmNsdWRlICJEZWJ1Z2dlci5oIgogI2luY2x1ZGUg
IkV4Y2VwdGlvbi5oIgorI2luY2x1ZGUgIkdlbmVyYXRvckZyYW1lLmgiCiAjaW5jbHVkZSAiSGVh
cC5oIgogI2luY2x1ZGUgIkpJVElubGluZXMuaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCkBAIC05
MTcsNiArOTE4LDQ5IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF90b19zdHJpbmcoSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlCiAgICAgc2xvd1BhdGhDYWxs
LmNhbGwoKTsKIH0KIAordm9pZCBKSVQ6OmVtaXRfb3Bfc2F2ZShJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQoreworICAgIGludCBmcmFtZSA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51
Lm9wZXJhbmQ7CisgICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gY3VycmVudElu
c3RydWN0aW9uWzJdLnUudW5zaWduZWRWYWx1ZTsKKyAgICBjb25zdCBGYXN0Qml0VmVjdG9yJiBs
aXZlbmVzcyA9IG1fY29kZUJsb2NrLT5saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZChsaXZlQ2FsbGVl
TG9jYWxzSW5kZXgpOworCisgICAgLy8gQSBmcmFtZSBpcyBhbHdheXMgYSBjZWxsLiBObyBuZWVk
IHRvIGZpbHRlciBvdXQuCisgICAgZW1pdFdyaXRlQmFycmllcihmcmFtZSwgVW5jb25kaXRpb25h
bFdyaXRlQmFycmllcik7CisKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGZyYW1lLCByZWdU
MSk7CisKKyAgICAvLyBBbGxvY2F0ZSBnZW5lcmF0b3IgZnJhbWUgbG9jYWxzLgorICAgIHN0b3Jl
MzIoVHJ1c3RlZEltbTMyKGxpdmVuZXNzLmJpdENvdW50KCkpLCBBZGRyZXNzKHJlZ1QxLCBHZW5l
cmF0b3JGcmFtZTo6bnVtYmVyT2ZTYXZlZENhbGxlZUxvY2Fsc09mZnNldCgpKSk7CisKKyAgICB1
bnNpZ25lZCBnZW5lcmF0b3JMb2NhbEluZGV4ID0gMDsKKyAgICBsaXZlbmVzcy5mb3JFYWNoU2V0
Qml0KFsmXShzaXplX3QgbG9jYWwpIHsKKyAgICAgICAgVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQg
PSB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChsb2NhbCk7CisgICAgICAgIGVtaXRHZXRWaXJ0dWFs
UmVnaXN0ZXIob3BlcmFuZC5vZmZzZXQoKSwgcmVnVDApOworICAgICAgICBzdG9yZTY0KHJlZ1Qw
LCBBZGRyZXNzKHJlZ1QxLCBHZW5lcmF0b3JGcmFtZTo6bG9jYWxPZmZzZXQoZ2VuZXJhdG9yTG9j
YWxJbmRleCkpKTsKKyAgICAgICAgZ2VuZXJhdG9yTG9jYWxJbmRleCsrOworICAgIH0pOworfQor
Cit2b2lkIEpJVDo6ZW1pdF9vcF9yZXN1bWUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKK3sKKyAgICBpbnQgZnJhbWUgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwor
ICAgIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9IGN1cnJlbnRJbnN0cnVjdGlvblsy
XS51LnVuc2lnbmVkVmFsdWU7CisgICAgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZW5lc3MgPSBt
X2NvZGVCbG9jay0+bGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQobGl2ZUNhbGxlZUxvY2Fsc0luZGV4
KTsKKworICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoZnJhbWUsIHJlZ1QxKTsKKworICAgIHVu
c2lnbmVkIGdlbmVyYXRvckxvY2FsSW5kZXggPSAwOworICAgIGxpdmVuZXNzLmZvckVhY2hTZXRC
aXQoWyZdKHNpemVfdCBsb2NhbCkgeworICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCA9
IHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGxvY2FsKTsKKyAgICAgICAgbG9hZDY0KEFkZHJlc3Mo
cmVnVDEsIEdlbmVyYXRvckZyYW1lOjpsb2NhbE9mZnNldChnZW5lcmF0b3JMb2NhbEluZGV4KSks
IHJlZ1QwKTsKKyAgICAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihvcGVyYW5kLm9mZnNldCgp
KTsKKyAgICAgICAgZ2VuZXJhdG9yTG9jYWxJbmRleCsrOworICAgIH0pOworCisgICAgLy8gRGVh
bGxvY2F0ZSBnZW5lcmF0b3IgZnJhbWUgbG9jYWxzLgorICAgIHN0b3JlMzIoVHJ1c3RlZEltbTMy
KDApLCBBZGRyZXNzKHJlZ1QxLCBHZW5lcmF0b3JGcmFtZTo6bnVtYmVyT2ZTYXZlZENhbGxlZUxv
Y2Fsc09mZnNldCgpKSk7Cit9CisKICNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KQogCiB2b2lkIEpJ
VDo6ZW1pdF9vcF9sb29wX2hpbnQoSW5zdHJ1Y3Rpb24qKQpAQCAtMTQ3NSwxNSArMTUxOSw5IEBA
IHZvaWQgSklUOjplbWl0X29wX2dldF9yZXN0X2xlbmd0aChJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQogI2VuZGlmCiB9CiAKLXZvaWQgSklUOjplbWl0X29wX3NhdmUoSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKLXsKLSAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhD
YWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX3NhdmUpOwotICAgIHNsb3dQ
YXRoQ2FsbC5jYWxsKCk7Ci19Ci0KLXZvaWQgSklUOjplbWl0X29wX3Jlc3VtZShJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfbmV3X2dlbmVyYXRvcl9m
cmFtZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewotICAgIEpJVFNsb3dQYXRo
Q2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfcmVz
dW1lKTsKKyAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0
cnVjdGlvbiwgc2xvd19wYXRoX25ld19nZW5lcmF0b3JfZnJhbWUpOwogICAgIHNsb3dQYXRoQ2Fs
bC5jYWxsKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3Bjb2RlczMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMy
XzY0LmNwcAppbmRleCA4ZDg4YjIxN2NhNDdmMTZiNmRjOTlmZjFiMDg4NDAxMzVjYmJlNjk2Li44
NTk4OTI1YTY1YzIxM2ExM2MxYjhhMGE0OWUyMzFhZmIwZTI4YTRkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAj
aW5jbHVkZSAiQ0NhbGxIZWxwZXJzLmgiCiAjaW5jbHVkZSAiRGVidWdnZXIuaCIKICNpbmNsdWRl
ICJFeGNlcHRpb24uaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JGcmFtZS5oIgogI2luY2x1ZGUgIkpJ
VElubGluZXMuaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCiAjaW5jbHVkZSAiSlNDZWxsLmgiCkBA
IC0xMzg0LDYgKzEzODUsNTEgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfbG9nX3NoYWRvd19jaGlja2Vu
X3RhaWwoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBsb2dTaGFkb3dDaGlj
a2VuVGFpbFBhY2tldChzaGFkb3dQYWNrZXRSZWcsIHRoaXNSZWdzLCByZWdUMywgbV9jb2RlQmxv
Y2ssIENhbGxTaXRlSW5kZXgoY3VycmVudEluc3RydWN0aW9uKSk7CiB9CiAKK3ZvaWQgSklUOjpl
bWl0X29wX3NhdmUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBpbnQg
ZnJhbWUgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOworICAgIHVuc2lnbmVkIGxp
dmVDYWxsZWVMb2NhbHNJbmRleCA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51LnVuc2lnbmVkVmFs
dWU7CisgICAgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZW5lc3MgPSBtX2NvZGVCbG9jay0+bGl2
ZUNhbGxlZUxvY2Fsc0F0WWllbGQobGl2ZUNhbGxlZUxvY2Fsc0luZGV4KTsKKworICAgIC8vIEEg
ZnJhbWUgaXMgYWx3YXlzIGEgY2VsbC4gTm8gbmVlZCB0byBmaWx0ZXIgb3V0LgorICAgIGVtaXRX
cml0ZUJhcnJpZXIoZnJhbWUsIFVuY29uZGl0aW9uYWxXcml0ZUJhcnJpZXIpOworCisgICAgZW1p
dExvYWRQYXlsb2FkKGZyYW1lLCByZWdUMik7CisKKyAgICAvLyBBbGxvY2F0ZSBnZW5lcmF0b3Ig
ZnJhbWUgbG9jYWxzLgorICAgIHN0b3JlMzIoVHJ1c3RlZEltbTMyKGxpdmVuZXNzLmJpdENvdW50
KCkpLCBBZGRyZXNzKHJlZ1QyLCBHZW5lcmF0b3JGcmFtZTo6bnVtYmVyT2ZTYXZlZENhbGxlZUxv
Y2Fsc09mZnNldCgpKSk7CisKKyAgICB1bnNpZ25lZCBnZW5lcmF0b3JMb2NhbEluZGV4ID0gMDsK
KyAgICBsaXZlbmVzcy5mb3JFYWNoU2V0Qml0KFsmXShzaXplX3QgbG9jYWwpIHsKKyAgICAgICAg
VmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQgPSB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChsb2NhbCk7
CisgICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIob3BlcmFuZC5vZmZzZXQoKSwgSlNWYWx1
ZVJlZ3MocmVnVDEsIHJlZ1QwKSk7CisgICAgICAgIHN0b3JlMzIocmVnVDEsIEFkZHJlc3MocmVn
VDIsIEdlbmVyYXRvckZyYW1lOjpsb2NhbE9mZnNldChnZW5lcmF0b3JMb2NhbEluZGV4KSArIE9C
SkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy50YWcpKSk7CisgICAgICAgIHN0b3JlMzIo
cmVnVDAsIEFkZHJlc3MocmVnVDIsIEdlbmVyYXRvckZyYW1lOjpsb2NhbE9mZnNldChnZW5lcmF0
b3JMb2NhbEluZGV4KSArIE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy5wYXlsb2Fk
KSkpOworICAgICAgICBnZW5lcmF0b3JMb2NhbEluZGV4Kys7CisgICAgfSk7Cit9CisKK3ZvaWQg
SklUOjplbWl0X29wX3Jlc3VtZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQorewor
ICAgIGludCBmcmFtZSA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CisgICAgdW5z
aWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUudW5z
aWduZWRWYWx1ZTsKKyAgICBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlbmVzcyA9IG1fY29kZUJs
b2NrLT5saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZChsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpOworCisg
ICAgZW1pdExvYWRQYXlsb2FkKGZyYW1lLCByZWdUMik7CisKKyAgICB1bnNpZ25lZCBnZW5lcmF0
b3JMb2NhbEluZGV4ID0gMDsKKyAgICBsaXZlbmVzcy5mb3JFYWNoU2V0Qml0KFsmXShzaXplX3Qg
bG9jYWwpIHsKKyAgICAgICAgVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQgPSB2aXJ0dWFsUmVnaXN0
ZXJGb3JMb2NhbChsb2NhbCk7CisgICAgICAgIGxvYWQzMihBZGRyZXNzKHJlZ1QyLCBHZW5lcmF0
b3JGcmFtZTo6bG9jYWxPZmZzZXQoZ2VuZXJhdG9yTG9jYWxJbmRleCkgKyBPQkpFQ1RfT0ZGU0VU
T0YoSlNWYWx1ZSwgdS5hc0JpdHMudGFnKSksIHJlZ1QxKTsKKyAgICAgICAgbG9hZDMyKEFkZHJl
c3MocmVnVDIsIEdlbmVyYXRvckZyYW1lOjpsb2NhbE9mZnNldChnZW5lcmF0b3JMb2NhbEluZGV4
KSArIE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy5wYXlsb2FkKSksIHJlZ1QwKTsK
KyAgICAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihvcGVyYW5kLm9mZnNldCgpLCBKU1ZhbHVl
UmVncyhyZWdUMSwgcmVnVDApKTsKKyAgICAgICAgZ2VuZXJhdG9yTG9jYWxJbmRleCsrOworICAg
IH0pOworCisgICAgLy8gRGVhbGxvY2F0ZSBnZW5lcmF0b3IgZnJhbWUgbG9jYWxzLgorICAgIHN0
b3JlMzIoVHJ1c3RlZEltbTMyKDApLCBBZGRyZXNzKHJlZ1QyLCBHZW5lcmF0b3JGcmFtZTo6bnVt
YmVyT2ZTYXZlZENhbGxlZUxvY2Fsc09mZnNldCgpKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpT
QwogCiAjZW5kaWYgLy8gVVNFKEpTVkFMVUUzMl82NCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKaW5kZXggMmFmYjZiMTM0YzBkNjBmNWMyYzA3
YzQ5MWYxMzJhYzNmNzVhZDIyOC4uNzcyZGU4NGU2OWM5NjU5NTJlOTE4MzVjZWY0MGQ4NzM4N2Y5
MDllYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFj
Y2Vzcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vz
cy5jcHAKQEAgLTExNjYsMTQgKzExNjYsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfdG9fYXJn
dW1lbnRzKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAjZW5kaWYgLy8gVVNFKEpT
VkFMVUU2NCkKIAogI2lmIFVTRShKU1ZBTFVFNjQpCi12b2lkIEpJVDo6ZW1pdFdyaXRlQmFycmll
cih1bnNpZ25lZCBvd25lciwgdW5zaWduZWQgdmFsdWUsIFdyaXRlQmFycmllck1vZGUgbW9kZSkK
K3ZvaWQgSklUOjplbWl0V3JpdGVCYXJyaWVyKHVuc2lnbmVkIG93bmVyLCBXcml0ZUJhcnJpZXJN
b2RlIG1vZGUpCiB7Ci0gICAgSnVtcCB2YWx1ZU5vdENlbGw7Ci0gICAgaWYgKG1vZGUgPT0gU2hv
dWxkRmlsdGVyVmFsdWUgfHwgbW9kZSA9PSBTaG91bGRGaWx0ZXJCYXNlQW5kVmFsdWUpIHsKLSAg
ICAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcih2YWx1ZSwgcmVnVDApOwotICAgICAgICB2YWx1
ZU5vdENlbGwgPSBicmFuY2hUZXN0NjQoTm9uWmVybywgcmVnVDAsIHRhZ01hc2tSZWdpc3Rlcik7
Ci0gICAgfQotICAgIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIob3duZXIsIHJlZ1QwKTsK
ICAgICBKdW1wIG93bmVyTm90Q2VsbDsKICAgICBpZiAobW9kZSA9PSBTaG91bGRGaWx0ZXJCYXNl
QW5kVmFsdWUgfHwgbW9kZSA9PSBTaG91bGRGaWx0ZXJCYXNlKQpAQCAtMTE4NSw2ICsxMTc5LDE4
IEBAIHZvaWQgSklUOjplbWl0V3JpdGVCYXJyaWVyKHVuc2lnbmVkIG93bmVyLCB1bnNpZ25lZCB2
YWx1ZSwgV3JpdGVCYXJyaWVyTW9kZSBtb2RlCiAKICAgICBpZiAobW9kZSA9PSBTaG91bGRGaWx0
ZXJCYXNlQW5kVmFsdWUgfHwgbW9kZSA9PSBTaG91bGRGaWx0ZXJCYXNlKQogICAgICAgICBvd25l
ck5vdENlbGwubGluayh0aGlzKTsKK30KKwordm9pZCBKSVQ6OmVtaXRXcml0ZUJhcnJpZXIodW5z
aWduZWQgb3duZXIsIHVuc2lnbmVkIHZhbHVlLCBXcml0ZUJhcnJpZXJNb2RlIG1vZGUpCit7Cisg
ICAgSnVtcCB2YWx1ZU5vdENlbGw7CisgICAgaWYgKG1vZGUgPT0gU2hvdWxkRmlsdGVyVmFsdWUg
fHwgbW9kZSA9PSBTaG91bGRGaWx0ZXJCYXNlQW5kVmFsdWUpIHsKKyAgICAgICAgZW1pdEdldFZp
cnR1YWxSZWdpc3Rlcih2YWx1ZSwgcmVnVDApOworICAgICAgICB2YWx1ZU5vdENlbGwgPSBicmFu
Y2hUZXN0NjQoTm9uWmVybywgcmVnVDAsIHRhZ01hc2tSZWdpc3Rlcik7CisgICAgfQorCisgICAg
ZW1pdFdyaXRlQmFycmllcihvd25lciwgbW9kZSk7CisKICAgICBpZiAobW9kZSA9PSBTaG91bGRG
aWx0ZXJWYWx1ZSB8fCBtb2RlID09IFNob3VsZEZpbHRlckJhc2VBbmRWYWx1ZSkgCiAgICAgICAg
IHZhbHVlTm90Q2VsbC5saW5rKHRoaXMpOwogfQpAQCAtMTIwNCwxNCArMTIxMCw4IEBAIHZvaWQg
SklUOjplbWl0V3JpdGVCYXJyaWVyKEpTQ2VsbCogb3duZXIsIHVuc2lnbmVkIHZhbHVlLCBXcml0
ZUJhcnJpZXJNb2RlIG1vZGUpCiAKICNlbHNlIC8vIFVTRShKU1ZBTFVFNjQpCiAKLXZvaWQgSklU
OjplbWl0V3JpdGVCYXJyaWVyKHVuc2lnbmVkIG93bmVyLCB1bnNpZ25lZCB2YWx1ZSwgV3JpdGVC
YXJyaWVyTW9kZSBtb2RlKQordm9pZCBKSVQ6OmVtaXRXcml0ZUJhcnJpZXIodW5zaWduZWQgb3du
ZXIsIFdyaXRlQmFycmllck1vZGUgbW9kZSkKIHsKLSAgICBKdW1wIHZhbHVlTm90Q2VsbDsKLSAg
ICBpZiAobW9kZSA9PSBTaG91bGRGaWx0ZXJWYWx1ZSB8fCBtb2RlID09IFNob3VsZEZpbHRlckJh
c2VBbmRWYWx1ZSkgewotICAgICAgICBlbWl0TG9hZFRhZyh2YWx1ZSwgcmVnVDApOwotICAgICAg
ICB2YWx1ZU5vdENlbGwgPSBicmFuY2gzMihOb3RFcXVhbCwgcmVnVDAsIFRydXN0ZWRJbW0zMihK
U1ZhbHVlOjpDZWxsVGFnKSk7Ci0gICAgfQotICAgIAogICAgIGVtaXRMb2FkKG93bmVyLCByZWdU
MCwgcmVnVDEpOwogICAgIEp1bXAgb3duZXJOb3RDZWxsOwogICAgIGlmIChtb2RlID09IFNob3Vs
ZEZpbHRlckJhc2UgfHwgbW9kZSA9PSBTaG91bGRGaWx0ZXJCYXNlQW5kVmFsdWUpCkBAIC0xMjIz
LDcgKzEyMjMsMjAgQEAgdm9pZCBKSVQ6OmVtaXRXcml0ZUJhcnJpZXIodW5zaWduZWQgb3duZXIs
IHVuc2lnbmVkIHZhbHVlLCBXcml0ZUJhcnJpZXJNb2RlIG1vZGUKIAogICAgIGlmIChtb2RlID09
IFNob3VsZEZpbHRlckJhc2UgfHwgbW9kZSA9PSBTaG91bGRGaWx0ZXJCYXNlQW5kVmFsdWUpCiAg
ICAgICAgIG93bmVyTm90Q2VsbC5saW5rKHRoaXMpOwotICAgIGlmIChtb2RlID09IFNob3VsZEZp
bHRlclZhbHVlIHx8IG1vZGUgPT0gU2hvdWxkRmlsdGVyQmFzZUFuZFZhbHVlKSAKK30KKworCit2
b2lkIEpJVDo6ZW1pdFdyaXRlQmFycmllcih1bnNpZ25lZCBvd25lciwgdW5zaWduZWQgdmFsdWUs
IFdyaXRlQmFycmllck1vZGUgbW9kZSkKK3sKKyAgICBKdW1wIHZhbHVlTm90Q2VsbDsKKyAgICBp
ZiAobW9kZSA9PSBTaG91bGRGaWx0ZXJWYWx1ZSB8fCBtb2RlID09IFNob3VsZEZpbHRlckJhc2VB
bmRWYWx1ZSkgeworICAgICAgICBlbWl0TG9hZFRhZyh2YWx1ZSwgcmVnVDApOworICAgICAgICB2
YWx1ZU5vdENlbGwgPSBicmFuY2gzMihOb3RFcXVhbCwgcmVnVDAsIFRydXN0ZWRJbW0zMihKU1Zh
bHVlOjpDZWxsVGFnKSk7CisgICAgfQorCisgICAgZW1pdFdyaXRlQmFycmllcihvd25lciwgbW9k
ZSk7CisKKyAgICBpZiAobW9kZSA9PSBTaG91bGRGaWx0ZXJWYWx1ZSB8fCBtb2RlID09IFNob3Vs
ZEZpbHRlckJhc2VBbmRWYWx1ZSkKICAgICAgICAgdmFsdWVOb3RDZWxsLmxpbmsodGhpcyk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNF
eHRyYWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4
dHJhY3Rvci5jcHAKaW5kZXggNTdkMjljODE1NDBmZDA0YjdkMjk2MzVkNGZiNDM2MTI1YjIzOGMx
NC4uMTEzNmNkMjllODEzMWNlNDgwMWU4YjBjZWI2MzRmZDU0YTg0NjRkMSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAK
QEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJEaXJlY3RBcmd1bWVudHMuaCIKICNpbmNsdWRl
ICJFeGNlcHRpb24uaCIKICNpbmNsdWRlICJFeGVjdXRhYmxlLmgiCisjaW5jbHVkZSAiR2VuZXJh
dG9yRnJhbWUuaCIKICNpbmNsdWRlICJIZWFwLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIK
ICNpbmNsdWRlICJKU0FycmF5LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KaW5kZXggNjc4OTEwYzU5NmU0M2QyODc0NWU0MmYy
ZWU0YWQzYzJmNDVmNWI4NC4uOTExZDRjMGU3OWU5NGI5MmY3YTk2ZTIyMDNhZGY3YjFlYmYxOGU4
ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXIuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVy
cHJldGVyLmFzbQpAQCAtMTI1NSw2ICsxMjU1LDEyIEBAIF9sbGludF9vcF9uZXdfcmVnZXhwOgog
ICAgIGRpc3BhdGNoKDMpCiAKIAorX2xsaW50X29wX25ld19nZW5lcmF0b3JfZnJhbWU6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRoX25ld19nZW5lcmF0
b3JfZnJhbWUpCisgICAgZGlzcGF0Y2goMykKKworCiBfbGxpbnRfb3BfbGVzczoKICAgICB0cmFj
ZUV4ZWN1dGlvbigpCiAgICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfbGVzcykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAppbmRleCBjZmEzZTUyYjljNzNmYjRmODdmZGEx
NmUzNzVhOWFkZGFmMzZmZTRiLi45ZmU5YmVhNmNkMGFlYzUyMGU4OTI4MzZlNWEwNTVjYjNlNWY4
OWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCkBAIC0yNTcsNyAr
MjU3LDcgQEAgU3RyaW5nIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUlubmVyKGNvbnN0IElkZW50
aWZpZXImIGNhbGxlZU5hbWUsIFNvdXJjZVBhcnNlTW8KICAgICBpZiAobV9sZXhlci0+aXNSZXBh
cnNpbmdGdW5jdGlvbigpKSB7CiAgICAgICAgIFBhcnNlckZ1bmN0aW9uSW5mbzxBU1RCdWlsZGVy
PiBmdW5jdGlvbkluZm87CiAgICAgICAgIGlmIChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2Rl
OjpHZW5lcmF0b3JCb2R5TW9kZSkKLSAgICAgICAgICAgIG1fcGFyYW1ldGVycyA9IGNyZWF0ZUdl
bmVyYXRvclBhcmFtZXRlcnMoY29udGV4dCk7CisgICAgICAgICAgICBtX3BhcmFtZXRlcnMgPSBj
cmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKGNvbnRleHQsIGZ1bmN0aW9uSW5mby5wYXJhbWV0ZXJD
b3VudCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG1fcGFyYW1ldGVycyA9IHBhcnNlRnVu
Y3Rpb25QYXJhbWV0ZXJzKGNvbnRleHQsIHBhcnNlTW9kZSwgZnVuY3Rpb25JbmZvKTsKIApAQCAt
NTAxLDEwICs1MDEsOSBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTb3VyY2VF
bGVtZW50cyBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VHZW5lcmF0bwogCiAgICAgUGFyc2VyRnVu
Y3Rpb25JbmZvPFRyZWVCdWlsZGVyPiBpbmZvOwogICAgIGluZm8ubmFtZSA9ICZtX3ZtLT5wcm9w
ZXJ0eU5hbWVzLT5udWxsSWRlbnRpZmllcjsKLSAgICBjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJz
KGNvbnRleHQpOworICAgIGNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMoY29udGV4dCwgaW5mby5w
YXJhbWV0ZXJDb3VudCk7CiAgICAgaW5mby5zdGFydE9mZnNldCA9IHBhcmFtZXRlcnNTdGFydDsK
ICAgICBpbmZvLnN0YXJ0TGluZSA9IHRva2VuTGluZSgpOwotICAgIGluZm8ucGFyYW1ldGVyQ291
bnQgPSA0OyAvLyBnZW5lcmF0b3IsIHN0YXRlLCB2YWx1ZSwgcmVzdW1lIG1vZGUKIAogICAgIHsK
ICAgICAgICAgQXV0b1BvcFNjb3BlUmVmIGdlbmVyYXRvckJvZHlTY29wZSh0aGlzLCBwdXNoU2Nv
cGUoKSk7CkBAIC0xODg4LDMyICsxODg3LDMwIEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5
cGU+IHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlciwgY2xhc3MgRnVuY3Rpb25JbmZvVHlwCiB9
CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+Ci10ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1
aWxkZXI+IHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpGb3JtYWxQYXJhbWV0ZXJMaXN0IFBhcnNlcjxM
ZXhlclR5cGU+OjpjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKFRyZWVCdWlsZGVyJiBjb250ZXh0
KQordGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6Rm9y
bWFsUGFyYW1ldGVyTGlzdCBQYXJzZXI8TGV4ZXJUeXBlPjo6Y3JlYXRlR2VuZXJhdG9yUGFyYW1l
dGVycyhUcmVlQnVpbGRlciYgY29udGV4dCwgdW5zaWduZWQmIHBhcmFtZXRlckNvdW50KQogewog
ICAgIGF1dG8gcGFyYW1ldGVycyA9IGNvbnRleHQuY3JlYXRlRm9ybWFsUGFyYW1ldGVyTGlzdCgp
OwogCiAgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CiAgICAg
SlNUZXh0UG9zaXRpb24gcG9zaXRpb24gPSB0b2tlblN0YXJ0UG9zaXRpb24oKTsKIAotICAgIC8v
IEBnZW5lcmF0b3IKLSAgICBkZWNsYXJlUGFyYW1ldGVyKCZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5n
ZW5lcmF0b3JQcml2YXRlTmFtZSk7Ci0gICAgYXV0byBnZW5lcmF0b3IgPSBjb250ZXh0LmNyZWF0
ZUJpbmRpbmdMb2NhdGlvbihsb2NhdGlvbiwgbV92bS0+cHJvcGVydHlOYW1lcy0+Z2VuZXJhdG9y
UHJpdmF0ZU5hbWUsIHBvc2l0aW9uLCBwb3NpdGlvbiwgQXNzaWdubWVudENvbnRleHQ6OkRlY2xh
cmF0aW9uU3RhdGVtZW50KTsKLSAgICBjb250ZXh0LmFwcGVuZFBhcmFtZXRlcihwYXJhbWV0ZXJz
LCBnZW5lcmF0b3IsIDApOworICAgIGF1dG8gYWRkUGFyYW1ldGVyID0gWyZdKGNvbnN0IElkZW50
aWZpZXImIG5hbWUpIHsKKyAgICAgICAgZGVjbGFyZVBhcmFtZXRlcigmbmFtZSk7CisgICAgICAg
IGF1dG8gYmluZGluZyA9IGNvbnRleHQuY3JlYXRlQmluZGluZ0xvY2F0aW9uKGxvY2F0aW9uLCBu
YW1lLCBwb3NpdGlvbiwgcG9zaXRpb24sIEFzc2lnbm1lbnRDb250ZXh0OjpEZWNsYXJhdGlvblN0
YXRlbWVudCk7CisgICAgICAgIGNvbnRleHQuYXBwZW5kUGFyYW1ldGVyKHBhcmFtZXRlcnMsIGJp
bmRpbmcsIDApOworICAgICAgICArK3BhcmFtZXRlckNvdW50OworICAgIH07CiAKKyAgICAvLyBA
Z2VuZXJhdG9yCisgICAgYWRkUGFyYW1ldGVyKG1fdm0tPnByb3BlcnR5TmFtZXMtPmdlbmVyYXRv
clByaXZhdGVOYW1lKTsKICAgICAvLyBAZ2VuZXJhdG9yU3RhdGUKLSAgICBkZWNsYXJlUGFyYW1l
dGVyKCZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5nZW5lcmF0b3JTdGF0ZVByaXZhdGVOYW1lKTsKLSAg
ICBhdXRvIGdlbmVyYXRvclN0YXRlID0gY29udGV4dC5jcmVhdGVCaW5kaW5nTG9jYXRpb24obG9j
YXRpb24sIG1fdm0tPnByb3BlcnR5TmFtZXMtPmdlbmVyYXRvclN0YXRlUHJpdmF0ZU5hbWUsIHBv
c2l0aW9uLCBwb3NpdGlvbiwgQXNzaWdubWVudENvbnRleHQ6OkRlY2xhcmF0aW9uU3RhdGVtZW50
KTsKLSAgICBjb250ZXh0LmFwcGVuZFBhcmFtZXRlcihwYXJhbWV0ZXJzLCBnZW5lcmF0b3JTdGF0
ZSwgMCk7Ci0KKyAgICBhZGRQYXJhbWV0ZXIobV92bS0+cHJvcGVydHlOYW1lcy0+Z2VuZXJhdG9y
U3RhdGVQcml2YXRlTmFtZSk7CiAgICAgLy8gQGdlbmVyYXRvclZhbHVlCi0gICAgZGVjbGFyZVBh
cmFtZXRlcigmbV92bS0+cHJvcGVydHlOYW1lcy0+Z2VuZXJhdG9yVmFsdWVQcml2YXRlTmFtZSk7
Ci0gICAgYXV0byBnZW5lcmF0b3JWYWx1ZSA9IGNvbnRleHQuY3JlYXRlQmluZGluZ0xvY2F0aW9u
KGxvY2F0aW9uLCBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5nZW5lcmF0b3JWYWx1ZVByaXZhdGVOYW1l
LCBwb3NpdGlvbiwgcG9zaXRpb24sIEFzc2lnbm1lbnRDb250ZXh0OjpEZWNsYXJhdGlvblN0YXRl
bWVudCk7Ci0gICAgY29udGV4dC5hcHBlbmRQYXJhbWV0ZXIocGFyYW1ldGVycywgZ2VuZXJhdG9y
VmFsdWUsIDApOwotCisgICAgYWRkUGFyYW1ldGVyKG1fdm0tPnByb3BlcnR5TmFtZXMtPmdlbmVy
YXRvclZhbHVlUHJpdmF0ZU5hbWUpOwogICAgIC8vIEBnZW5lcmF0b3JSZXN1bWVNb2RlCi0gICAg
ZGVjbGFyZVBhcmFtZXRlcigmbV92bS0+cHJvcGVydHlOYW1lcy0+Z2VuZXJhdG9yUmVzdW1lTW9k
ZVByaXZhdGVOYW1lKTsKLSAgICBhdXRvIGdlbmVyYXRvclJlc3VtZU1vZGUgPSBjb250ZXh0LmNy
ZWF0ZUJpbmRpbmdMb2NhdGlvbihsb2NhdGlvbiwgbV92bS0+cHJvcGVydHlOYW1lcy0+Z2VuZXJh
dG9yUmVzdW1lTW9kZVByaXZhdGVOYW1lLCBwb3NpdGlvbiwgcG9zaXRpb24sIEFzc2lnbm1lbnRD
b250ZXh0OjpEZWNsYXJhdGlvblN0YXRlbWVudCk7Ci0gICAgY29udGV4dC5hcHBlbmRQYXJhbWV0
ZXIocGFyYW1ldGVycywgZ2VuZXJhdG9yUmVzdW1lTW9kZSwgMCk7CisgICAgYWRkUGFyYW1ldGVy
KG1fdm0tPnByb3BlcnR5TmFtZXMtPmdlbmVyYXRvclJlc3VtZU1vZGVQcml2YXRlTmFtZSk7Cisg
ICAgLy8gQGdlbmVyYXRvckZyYW1lCisgICAgYWRkUGFyYW1ldGVyKG1fdm0tPnByb3BlcnR5TmFt
ZXMtPmdlbmVyYXRvckZyYW1lUHJpdmF0ZU5hbWUpOwogCiAgICAgcmV0dXJuIHBhcmFtZXRlcnM7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAppbmRleCBkNWFhMGNjYjM2NzA4
MGJmODExYWY5ZDVlZGIwNTdmMWRkNmI2NWU0Li4wYTM0OGNlMzVkZDBhNjQzNzg5NzU5OGRiYjlj
NDFlOWE5ZDhiYmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Bh
cnNlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKQEAgLTE0
MzgsNyArMTQzOCw3IEBAIGNsYXNzIFBhcnNlciB7CiAgICAgQUxXQVlTX0lOTElORSBib29sIGlz
QXJyb3dGdW5jdGlvblBhcmFtZXRlcnMoKTsKICAgICAKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJl
ZUJ1aWxkZXIsIGNsYXNzIEZ1bmN0aW9uSW5mb1R5cGU+IE5FVkVSX0lOTElORSB0eXBlbmFtZSBU
cmVlQnVpbGRlcjo6Rm9ybWFsUGFyYW1ldGVyTGlzdCBwYXJzZUZ1bmN0aW9uUGFyYW1ldGVycyhU
cmVlQnVpbGRlciYsIFNvdXJjZVBhcnNlTW9kZSwgRnVuY3Rpb25JbmZvVHlwZSYpOwotICAgIHRl
bXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gTkVWRVJfSU5MSU5FIHR5cGVuYW1lIFRyZWVCdWls
ZGVyOjpGb3JtYWxQYXJhbWV0ZXJMaXN0IGNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMoVHJlZUJ1
aWxkZXImKTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElORSB0
eXBlbmFtZSBUcmVlQnVpbGRlcjo6Rm9ybWFsUGFyYW1ldGVyTGlzdCBjcmVhdGVHZW5lcmF0b3JQ
YXJhbWV0ZXJzKFRyZWVCdWlsZGVyJiwgdW5zaWduZWQmIHBhcmFtZXRlckNvdW50KTsKIAogICAg
IHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gTkVWRVJfSU5MSU5FIFRyZWVDbGFzc0V4cHJl
c3Npb24gcGFyc2VDbGFzcyhUcmVlQnVpbGRlciYsIEZ1bmN0aW9uUmVxdWlyZW1lbnRzLCBQYXJz
ZXJDbGFzc0luZm88VHJlZUJ1aWxkZXI+Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCmluZGV4IDA5YTE3MDQ3NzY0YmEwYzFkNzQ4
N2RjNDhmNjg3YTA3OTUzNzc5Y2IuLjQ4YjY5MDIxNGQ3OWI3MjNkZmRhY2RiYWQ1YmZhNTc5NDU2
MmQwMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNs
b3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xv
d1BhdGhzLmNwcApAQCAtNzE1LDE4ICs3MTUsNyBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhf
c2F2ZSkKICAgICAvLyBPbmx5IHNhdmUgdmFyaWFibGVzIGFuZCB0ZW1wb3JhcnkgcmVnaXN0ZXJz
LiBUaGUgc2NvcGUgcmVnaXN0ZXJzIGFyZSBpbmNsdWRlZCBpbiB0aGVtLgogICAgIC8vIEJ1dCBw
YXJhbWV0ZXJzIGFyZSBub3QgaW5jbHVkZWQuIEJlY2F1c2UgdGhlIGdlbmVyYXRvciBpbXBsZW1l
bnRhdGlvbiByZXBsYWNlcyB0aGUgdmFsdWVzIG9mIHBhcmFtZXRlcnMgb24gZWFjaCBnZW5lcmF0
b3IubmV4dCgpIGNhbGwuCiAgICAgQkVHSU4oKTsKLSAgICBKU1ZhbHVlIGdlbmVyYXRvciA9IE9Q
KDEpLmpzVmFsdWUoKTsKLSAgICBHZW5lcmF0b3JGcmFtZSogZnJhbWUgPSBudWxscHRyOwotICAg
IEpTVmFsdWUgdmFsdWUgPSBnZW5lcmF0b3IuZ2V0KGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMo
KS5nZW5lcmF0b3JGcmFtZVByaXZhdGVOYW1lKTsKLSAgICBpZiAoIXZhbHVlLmlzTnVsbCgpKQot
ICAgICAgICBmcmFtZSA9IGpzQ2FzdDxHZW5lcmF0b3JGcmFtZSo+KHZhbHVlKTsKLSAgICBlbHNl
IHsKLSAgICAgICAgLy8gRklYTUU6IE9uY2UgSlNHZW5lcmF0b3Igc3BlY2lhbGl6ZWQgb2JqZWN0
IGlzIGludHJvZHVjZWQsIHRoaXMgR2VuZXJhdG9yRnJhbWUgc2hvdWxkIGJlIGVtYmVkZWQgaW50
byBpdCB0byBhdm9pZCBhbGxvY2F0aW9ucy4KLSAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTU0NQotICAgICAgICBmcmFtZSA9IEdlbmVyYXRvckZy
YW1lOjpjcmVhdGUoZXhlYy0+dm0oKSwgIGV4ZWMtPmNvZGVCbG9jaygpLT5udW1DYWxsZWVMb2Nh
bHMoKSk7Ci0gICAgICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGdlbmVyYXRvciwgdHJ1ZSwgUHV0
UHJvcGVydHlTbG90OjpQdXRCeUlkKTsKLSAgICAgICAgYXNPYmplY3QoZ2VuZXJhdG9yKS0+bWV0
aG9kVGFibGUoZXhlYy0+dm0oKSktPnB1dChhc09iamVjdChnZW5lcmF0b3IpLCBleGVjLCBleGVj
LT5wcm9wZXJ0eU5hbWVzKCkuZ2VuZXJhdG9yRnJhbWVQcml2YXRlTmFtZSwgZnJhbWUsIHNsb3Qp
OwotICAgIH0KKyAgICBHZW5lcmF0b3JGcmFtZSogZnJhbWUgPSBqc0Nhc3Q8R2VuZXJhdG9yRnJh
bWUqPihPUCgxKS5qc1ZhbHVlKCkpOwogICAgIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRl
eCA9IHBjWzJdLnUudW5zaWduZWRWYWx1ZTsKICAgICBmcmFtZS0+c2F2ZShleGVjLCBleGVjLT5j
b2RlQmxvY2soKS0+bGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQobGl2ZUNhbGxlZUxvY2Fsc0luZGV4
KSk7CiAgICAgRU5EKCk7CkBAIC03MzUsOCArNzI0LDcgQEAgU0xPV19QQVRIX0RFQ0woc2xvd19w
YXRoX3NhdmUpCiBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcmVzdW1lKQogewogICAgIEJFR0lO
KCk7Ci0gICAgSlNWYWx1ZSBnZW5lcmF0b3IgPSBPUCgxKS5qc1ZhbHVlKCk7Ci0gICAgR2VuZXJh
dG9yRnJhbWUqIGZyYW1lID0ganNDYXN0PEdlbmVyYXRvckZyYW1lKj4oZ2VuZXJhdG9yLmdldChl
eGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuZ2VuZXJhdG9yRnJhbWVQcml2YXRlTmFtZSkpOwor
ICAgIEdlbmVyYXRvckZyYW1lKiBmcmFtZSA9IGpzQ2FzdDxHZW5lcmF0b3JGcmFtZSo+KE9QKDEp
LmpzVmFsdWUoKSk7CiAgICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gcGNbMl0u
dS51bnNpZ25lZFZhbHVlOwogICAgIGZyYW1lLT5yZXN1bWUoZXhlYywgZXhlYy0+Y29kZUJsb2Nr
KCktPmxpdmVDYWxsZWVMb2NhbHNBdFlpZWxkKGxpdmVDYWxsZWVMb2NhbHNJbmRleCkpOwogICAg
IEVORCgpOwpAQCAtODkxLDQgKzg3OSwxMiBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHV0
X2J5X3ZhbF93aXRoX3RoaXMpCiAgICAgRU5EKCk7CiB9CiAKK1NMT1dfUEFUSF9ERUNMKHNsb3df
cGF0aF9uZXdfZ2VuZXJhdG9yX2ZyYW1lKQoreworICAgIEJFR0lOKCk7CisgICAgdW5zaWduZWQg
Z2VuZXJhdG9yTG9jYWxzU2l6ZSA9IHBjWzJdLnUudW5zaWduZWRWYWx1ZTsKKyAgICBSRVRVUk4o
R2VuZXJhdG9yRnJhbWU6OmNyZWF0ZShleGVjLCBnZW5lcmF0b3JMb2NhbHNTaXplKSk7Cit9CisK
KwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21tb25TbG93UGF0aHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbW1vblNsb3dQYXRocy5oCmluZGV4IGFiY2I3MWY0MGE3ZGJkOTIwZGFmMzEzOTQ0NzUwNjk0
NmJjOGJkNjguLmU5NWFlYzMxYzEyODI1NTkzNGQ2MTIxMmFmNTI2Y2RiZGMyOTE3YzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCkBAIC0y
NTIsNiArMjUyLDcgQEAgU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9nZXRfYnlfaWRf
d2l0aF90aGlzKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfZ2V0X2J5X3ZhbF93
aXRoX3RoaXMpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9wdXRfYnlfaWRfd2l0
aF90aGlzKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcHV0X2J5X3ZhbF93aXRo
X3RoaXMpOworU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9uZXdfZ2VuZXJhdG9yX2Zy
YW1lKTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZyYW1lLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0dlbmVyYXRvckZyYW1lLmNwcAppbmRleCBlZjZlYTdhMTAwMjU4YzNlY2UwNGRh
YWI0M2JkYWE4NTFlYzhmNzE1Li4wZGNiNTE0YTQyMDk5OWZiZjU5ZGYxOGJkZGY1N2MzMGFkYTc5
ZTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JG
cmFtZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJh
bWUuY3BwCkBAIC0zMCwxNSArMzAsMTYgQEAKICNpbmNsdWRlICJIZWFwSXRlcmF0aW9uU2NvcGUu
aCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ2VsbElubGlu
ZXMuaCIKKyNpbmNsdWRlICJKU09iamVjdElubGluZXMuaCIKICNpbmNsdWRlICJTbG90VmlzaXRv
cklubGluZXMuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCiAKIG5hbWVzcGFjZSBK
U0MgewogCi1jb25zdCBDbGFzc0luZm8gR2VuZXJhdG9yRnJhbWU6OnNfaW5mbyA9IHsgIkdlbmVy
YXRvckZyYW1lIiwgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShHZW5lcmF0
b3JGcmFtZSkgfTsKK2NvbnN0IENsYXNzSW5mbyBHZW5lcmF0b3JGcmFtZTo6c19pbmZvID0geyAi
R2VuZXJhdG9yRnJhbWUiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RB
QkxFKEdlbmVyYXRvckZyYW1lKSB9OwogCi1HZW5lcmF0b3JGcmFtZTo6R2VuZXJhdG9yRnJhbWUo
Vk0mIHZtLCBzaXplX3QgbnVtYmVyT2ZDYWxsZWVMb2NhbHMpCi0gICAgOiBCYXNlKHZtLCB2bS5n
ZW5lcmF0b3JGcmFtZVN0cnVjdHVyZS5nZXQoKSkKK0dlbmVyYXRvckZyYW1lOjpHZW5lcmF0b3JG
cmFtZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCB1aW50MzJfdCBudW1iZXJPZkNhbGxl
ZUxvY2FscykKKyAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkKICAgICAsIG1fbnVtYmVyT2ZDYWxs
ZWVMb2NhbHMobnVtYmVyT2ZDYWxsZWVMb2NhbHMpCiB7CiB9CkBAIC00NiwzMyArNDcsNDIgQEAg
R2VuZXJhdG9yRnJhbWU6OkdlbmVyYXRvckZyYW1lKFZNJiB2bSwgc2l6ZV90IG51bWJlck9mQ2Fs
bGVlTG9jYWxzKQogdm9pZCBHZW5lcmF0b3JGcmFtZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQog
ewogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBKU1ZhbHVlIGVtcHR5VmFsdWU7
CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX251bWJlck9mQ2FsbGVlTG9jYWxzOyArK2kp
Ci0gICAgICAgIGxvY2FsQXQoaSkuY2xlYXIoKTsKKyAgICAgICAgbG9jYWxBdChpKS5zZXRTdGFy
dGluZ1ZhbHVlKGVtcHR5VmFsdWUpOwogfQogCiBTdHJ1Y3R1cmUqIEdlbmVyYXRvckZyYW1lOjpj
cmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Zh
bHVlIHByb3RvdHlwZSkKIHsKLSAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2Jh
bE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhDZWxsVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBp
bmZvKCkpOworICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBw
cm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsK
IH0KIAotR2VuZXJhdG9yRnJhbWUqIEdlbmVyYXRvckZyYW1lOjpjcmVhdGUoVk0mIHZtLCBzaXpl
X3QgbnVtYmVyT2ZMb2NhbHMpCitHZW5lcmF0b3JGcmFtZSogR2VuZXJhdG9yRnJhbWU6OmNyZWF0
ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBzaXplX3QgbnVtYmVyT2ZDYWxsZWVMb2Nh
bHMpCiB7CiAgICAgR2VuZXJhdG9yRnJhbWUqIHJlc3VsdCA9CiAgICAgICAgIG5ldyAoCiAgICAg
ICAgICAgICBOb3ROdWxsLAotICAgICAgICAgICAgYWxsb2NhdGVDZWxsPEdlbmVyYXRvckZyYW1l
Pih2bS5oZWFwLCBhbGxvY2F0aW9uU2l6ZUZvckxvY2FscyhudW1iZXJPZkxvY2FscykpKQotICAg
ICAgICBHZW5lcmF0b3JGcmFtZSh2bSwgbnVtYmVyT2ZMb2NhbHMpOworICAgICAgICAgICAgYWxs
b2NhdGVDZWxsPEdlbmVyYXRvckZyYW1lPih2bS5oZWFwLCBhbGxvY2F0aW9uU2l6ZUZvckxvY2Fs
cyhudW1iZXJPZkNhbGxlZUxvY2FscykpKQorICAgICAgICBHZW5lcmF0b3JGcmFtZSh2bSwgc3Ry
dWN0dXJlLCBudW1iZXJPZkNhbGxlZUxvY2Fscyk7CiAgICAgcmVzdWx0LT5maW5pc2hDcmVhdGlv
bih2bSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorR2VuZXJhdG9yRnJhbWUqIEdlbmVyYXRv
ckZyYW1lOjpjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBzaXplX3QgbnVtYmVyT2ZDYWxsZWVMb2Nh
bHMpCit7CisgICAgcmV0dXJuIGNyZWF0ZShleGVjLT52bSgpLCBleGVjLT5sZXhpY2FsR2xvYmFs
T2JqZWN0KCktPmdlbmVyYXRvckZyYW1lU3RydWN0dXJlKCksIG51bWJlck9mQ2FsbGVlTG9jYWxz
KTsKK30KKwogdm9pZCBHZW5lcmF0b3JGcmFtZTo6c2F2ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IEZhc3RCaXRWZWN0b3ImIGxpdmVDYWxsZWVMb2NhbHMpCiB7CisgICAgLy8gQWxsb2NhdGUgdGhl
IGdlbmVyYXRvciBsb2NhbCBzcGFjZSBmaXJzdC4KKyAgICBtX251bWJlck9mU2F2ZWRDYWxsZWVM
b2NhbHMgPSBsaXZlQ2FsbGVlTG9jYWxzLmJpdENvdW50KCk7CisKICAgICAvLyBPbmx5IHNhdmUg
Y2FsbGVlIGxvY2Fscy4KICAgICAvLyBFdmVyeSB0aW1lIGEgZ2VuZXJhdG9yIGlzIGNhbGxlZCAo
b3IgcmVzdW1lZCksIHBhcmFtZXRlcnMgc2hvdWxkIGJlIHJlcGxhY2VkLgotICAgIEFTU0VSVChs
aXZlQ2FsbGVlTG9jYWxzLm51bUJpdHMoKSA8PSBtX251bWJlck9mQ2FsbGVlTG9jYWxzKTsKKyAg
ICB1bnNpZ25lZCBnZW5lcmF0b3JMb2NhbEluZGV4ID0gMDsKICAgICBsaXZlQ2FsbGVlTG9jYWxz
LmZvckVhY2hTZXRCaXQoWyZdKHNpemVfdCBpbmRleCkgewotICAgICAgICBsb2NhbEF0KGluZGV4
KS5zZXQoZXhlYy0+dm0oKSwgdGhpcywgZXhlYy0+dW5jaGVja2VkUih2aXJ0dWFsUmVnaXN0ZXJG
b3JMb2NhbChpbmRleCkpLmpzVmFsdWUoKSk7CisgICAgICAgIGxvY2FsQXQoZ2VuZXJhdG9yTG9j
YWxJbmRleCsrKS5zZXQoZXhlYy0+dm0oKSwgdGhpcywgZXhlYy0+dW5jaGVja2VkUih2aXJ0dWFs
UmVnaXN0ZXJGb3JMb2NhbChpbmRleCkpLmpzVmFsdWUoKSk7CiAgICAgfSk7CiB9CiAKQEAgLTgw
LDEwICs5MCwxMSBAQCB2b2lkIEdlbmVyYXRvckZyYW1lOjpyZXN1bWUoRXhlY1N0YXRlKiBleGVj
LCBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlQ2FsbGVlTG9jYQogewogICAgIC8vIE9ubHkgcmVz
dW1lIGNhbGxlZSBsb2NhbHMuCiAgICAgLy8gRXZlcnkgdGltZSBhIGdlbmVyYXRvciBpcyBjYWxs
ZWQgKG9yIHJlc3VtZWQpLCBwYXJhbWV0ZXJzIHNob3VsZCBiZSByZXBsYWNlZC4KKyAgICB1bnNp
Z25lZCBnZW5lcmF0b3JMb2NhbEluZGV4ID0gMDsKICAgICBsaXZlQ2FsbGVlTG9jYWxzLmZvckVh
Y2hTZXRCaXQoWyZdKHNpemVfdCBpbmRleCkgewotICAgICAgICBleGVjLT51bmNoZWNrZWRSKHZp
cnR1YWxSZWdpc3RlckZvckxvY2FsKGluZGV4KSkgPSBsb2NhbEF0KGluZGV4KS5nZXQoKTsKLSAg
ICAgICAgbG9jYWxBdChpbmRleCkuY2xlYXIoKTsKKyAgICAgICAgZXhlYy0+dW5jaGVja2VkUih2
aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChpbmRleCkpID0gbG9jYWxBdChnZW5lcmF0b3JMb2NhbElu
ZGV4KyspLmdldCgpOwogICAgIH0pOworICAgIG1fbnVtYmVyT2ZTYXZlZENhbGxlZUxvY2FscyA9
IDA7CiB9CiAKIHZvaWQgR2VuZXJhdG9yRnJhbWU6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxs
LCBTbG90VmlzaXRvciYgdmlzaXRvcikKQEAgLTkxLDcgKzEwMiwxMiBAQCB2b2lkIEdlbmVyYXRv
ckZyYW1lOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3Ip
CiAgICAgR2VuZXJhdG9yRnJhbWUqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8R2VuZXJhdG9yRnJhbWUq
PihjZWxsKTsKICAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwog
ICAgIC8vIFNpbmNlIG9ubHkgdHJ1ZSBjZWxsIHBvaW50ZXJzIGFyZSBzdG9yZWQgYXMgYSBjZWxs
LCB3ZSBjYW4gc2FmZWx5IG1hcmsgdGhlbS4KLSAgICB2aXNpdG9yLmFwcGVuZFZhbHVlcyh0aGlz
T2JqZWN0LT5sb2NhbHMoKSwgdGhpc09iamVjdC0+bV9udW1iZXJPZkNhbGxlZUxvY2Fscyk7Cisg
ICAgdmlzaXRvci5hcHBlbmRWYWx1ZXModGhpc09iamVjdC0+bG9jYWxzKCksIHRoaXNPYmplY3Qt
Pm1fbnVtYmVyT2ZTYXZlZENhbGxlZUxvY2Fscyk7CisgICAgLy8gQ2xlYXIgbm90IHVzZWQgY2Fs
bGVlIGxvY2FscyB3aGVuIG1hcmtpbmcuCisgICAgLy8gVGhpcyBlbnN1cmVzIHRoYXQsICJpZiBh
IGdpdmVuIGxvY2FsIGhhcyBhIHZhbHVlLCB0aGlzIHZhbHVlIGlzIGNvcnJlY3RseSBtYXJrZWQg
aW4gdGhlIHByZXZpb3VzIG1hcmtpbmcgcGhhc2UiLgorICAgIHNpemVfdCB1bnVzZWRMb2NhbHND
b3VudCA9IHRoaXNPYmplY3QtPm1fbnVtYmVyT2ZDYWxsZWVMb2NhbHMgLSB0aGlzT2JqZWN0LT5t
X251bWJlck9mU2F2ZWRDYWxsZWVMb2NhbHM7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB1
bnVzZWRMb2NhbHNDb3VudDsgKytpKQorICAgICAgICB0aGlzT2JqZWN0LT5sb2NhbEF0KHRoaXNP
YmplY3QtPm1fbnVtYmVyT2ZTYXZlZENhbGxlZUxvY2FscyArIGkpLmNsZWFyKCk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvR2VuZXJhdG9yRnJhbWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVy
YXRvckZyYW1lLmgKaW5kZXggM2Q1NDViMTQ3ZGQ0YWJmYjJiYmI5YjVhNzE5NGU4Zjc0ODQxYzQ5
YS4uY2YxZGI3YTJiZWU2MGRhMjk0NjRlYzQxN2EwYzVmYjhjMWYwYWU4YSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJhbWUuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGcmFtZS5oCkBAIC0yNywxMSArMjcs
MTQgQEAKICNkZWZpbmUgR2VuZXJhdG9yRnJhbWVfaAogCiAjaW5jbHVkZSAiSlNDZWxsLmgiCisj
aW5jbHVkZSAiSlNPYmplY3QuaCIKICNpbmNsdWRlIDx3dGYvRmFzdEJpdFZlY3Rvci5oPgogCiBu
YW1lc3BhY2UgSlNDIHsKIAotY2xhc3MgR2VuZXJhdG9yRnJhbWUgOiBwdWJsaWMgSlNDZWxsIHsK
K2NsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKworY2xhc3MgR2VuZXJhdG9yRnJhbWUgOiBw
dWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAgZnJpZW5kIGNsYXNzIEpJVDsKICNpZiBFTkFC
TEUoREZHX0pJVCkKICAgICBmcmllbmQgY2xhc3MgREZHOjpTcGVjdWxhdGl2ZUpJVDsKQEAgLTM5
LDEyICs0MiwxMiBAQCBjbGFzcyBHZW5lcmF0b3JGcmFtZSA6IHB1YmxpYyBKU0NlbGwgewogI2Vu
ZGlmCiAgICAgZnJpZW5kIGNsYXNzIFZNOwogcHVibGljOgotICAgIHR5cGVkZWYgSlNDZWxsIEJh
c2U7Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gU3RydWN0dXJl
SXNJbW1vcnRhbCB8IEJhc2U6OlN0cnVjdHVyZUZsYWdzOworICAgIHR5cGVkZWYgSlNOb25GaW5h
bE9iamVjdCBCYXNlOwogCiAgICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKIAotICAgIHN0YXRpYyBH
ZW5lcmF0b3JGcmFtZSogY3JlYXRlKFZNJiwgc2l6ZV90IG51bWJlck9mQ2FsbGVlTG9jYWxzKTsK
KyAgICBzdGF0aWMgR2VuZXJhdG9yRnJhbWUqIGNyZWF0ZShFeGVjU3RhdGUqLCBzaXplX3QgbnVt
YmVyT2ZDYWxsZWVMb2NhbHMpOworICAgIHN0YXRpYyBHZW5lcmF0b3JGcmFtZSogY3JlYXRlKFZN
JiwgU3RydWN0dXJlKiwgc2l6ZV90IG51bWJlck9mQ2FsbGVlTG9jYWxzKTsKIAogICAgIFdyaXRl
QmFycmllckJhc2U8VW5rbm93bj4qIGxvY2FscygpCiAgICAgewpAQCAtNTMsNyArNTYsNiBAQCBj
bGFzcyBHZW5lcmF0b3JGcmFtZSA6IHB1YmxpYyBKU0NlbGwgewogCiAgICAgV3JpdGVCYXJyaWVy
QmFzZTxVbmtub3duPiYgbG9jYWxBdChzaXplX3QgaW5kZXgpCiAgICAgewotICAgICAgICBBU1NF
UlQoaW5kZXggPCBtX251bWJlck9mQ2FsbGVlTG9jYWxzKTsKICAgICAgICAgcmV0dXJuIGxvY2Fs
cygpW2luZGV4XTsKICAgICB9CiAKQEAgLTYyLDYgKzY0LDIxIEBAIGNsYXNzIEdlbmVyYXRvckZy
YW1lIDogcHVibGljIEpTQ2VsbCB7CiAgICAgICAgIHJldHVybiBXVEY6OnJvdW5kVXBUb011bHRp
cGxlT2Y8c2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPik+KHNpemVvZihHZW5lcmF0b3JGcmFt
ZSkpOwogICAgIH0KIAorICAgIHN0YXRpYyBzaXplX3QgbG9jYWxPZmZzZXQodW5zaWduZWQgaW5k
ZXgpCisgICAgeworICAgICAgICByZXR1cm4gb2Zmc2V0T2ZMb2NhbHMoKSArIGluZGV4ICogc2l6
ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPik7CisgICAgfQorCisgICAgc3RhdGljIHNpemVfdCBu
dW1iZXJPZkNhbGxlZUxvY2Fsc09mZnNldCgpCisgICAgeworICAgICAgICByZXR1cm4gT0JKRUNU
X09GRlNFVE9GKEdlbmVyYXRvckZyYW1lLCBtX251bWJlck9mQ2FsbGVlTG9jYWxzKTsKKyAgICB9
CisKKyAgICBzdGF0aWMgc2l6ZV90IG51bWJlck9mU2F2ZWRDYWxsZWVMb2NhbHNPZmZzZXQoKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihHZW5lcmF0b3JGcmFtZSwgbV9u
dW1iZXJPZlNhdmVkQ2FsbGVlTG9jYWxzKTsKKyAgICB9CisKICAgICBzdGF0aWMgc2l6ZV90IGFs
bG9jYXRpb25TaXplRm9yTG9jYWxzKHVuc2lnbmVkIG51bWJlck9mTG9jYWxzKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIG9mZnNldE9mTG9jYWxzKCkgKyBudW1iZXJPZkxvY2FscyAqIHNpemVvZihX
cml0ZUJhcnJpZXI8VW5rbm93bj4pOwpAQCAtNzMsMTYgKzkwLDE2IEBAIGNsYXNzIEdlbmVyYXRv
ckZyYW1lIDogcHVibGljIEpTQ2VsbCB7CiAgICAgdm9pZCByZXN1bWUoRXhlY1N0YXRlKiwgY29u
c3QgRmFzdEJpdFZlY3RvciYgbGl2ZUNhbGxlZUxvY2Fscyk7CiAKIHByaXZhdGU6Ci0gICAgR2Vu
ZXJhdG9yRnJhbWUoVk0mLCBzaXplX3QgbnVtYmVyT2ZDYWxsZWVMb2NhbHMpOworICAgIEdlbmVy
YXRvckZyYW1lKFZNJiwgU3RydWN0dXJlKiwgdWludDMyX3QgbnVtYmVyT2ZDYWxsZWVMb2NhbHMp
OwogCi0gICAgc2l6ZV90IG1fbnVtYmVyT2ZDYWxsZWVMb2NhbHM7CisgICAgdWludDMyX3QgbV9u
dW1iZXJPZkNhbGxlZUxvY2FsczsKKyAgICB1aW50MzJfdCBtX251bWJlck9mU2F2ZWRDYWxsZWVM
b2NhbHMgeyAwIH07CiAKICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwog
Ci0gICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOwotCiBwcm90ZWN0ZWQ6CiAgICAgc3RhdGlj
IHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOworICAgIHZvaWQgZmlu
aXNoQ3JlYXRpb24oVk0mKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IDFjOTJhMjAz
YWIzZjhiY2NmMzgwYTE3MTE5OGRkODY1YmQ0NWIxOGIuLjgwMjE5NjdhY2VkMzA2MTMyMTliZjc4
NWQyMDk4ZGI0ZDNmMGRmMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTUxLDYgKzUxLDcgQEAKICNpbmNsdWRlICJFcnJvclBy
b3RvdHlwZS5oIgogI2luY2x1ZGUgIkZ1bmN0aW9uQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJG
dW5jdGlvblByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkdlbmVyYXRvckZyYW1lLmgiCiAjaW5jbHVk
ZSAiR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkdlbmVyYXRvckZ1
bmN0aW9uUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiR2VuZXJhdG9yUHJvdG90eXBlLmgiCkBAIC01
NjksNiArNTcwLDcgQEAgbV8gIyMgcHJvcGVyTmFtZSAjIyBTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlz
LCBpbnN0YW5jZVR5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGgKICN1bmRlZiBDUkVBVEVfUFJP
VE9UWVBFX0ZPUl9ERVJJVkVEX0lURVJBVE9SX1RZUEUKIAogICAgIG1fcHJvcGVydHlOYW1lSXRl
cmF0b3JTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpjcmVh
dGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1faXRlcmF0b3JQcm90b3R5cGUuZ2V0KCkpKTsKKyAgICBt
X2dlbmVyYXRvckZyYW1lU3RydWN0dXJlLnNldCh2bSwgdGhpcywgR2VuZXJhdG9yRnJhbWU6OmNy
ZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywganNOdWxsKCkpKTsKICAgICBtX2dlbmVyYXRvclByb3Rv
dHlwZS5zZXQodm0sIHRoaXMsIEdlbmVyYXRvclByb3RvdHlwZTo6Y3JlYXRlKHZtLCB0aGlzLCBH
ZW5lcmF0b3JQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9pdGVyYXRvclBy
b3RvdHlwZS5nZXQoKSkpKTsKICAgICAKICAgICAvLyBDb25zdHJ1Y3RvcnMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IGY1ODA0NzZhMWUw
YmY3ZGQxZTY1MDkzY2U1YjU5NGQ5YTE2ZWY3NjUuLmEwMDkzNTQ3MDY0OGQ1MDA1ZTIyNjYyNDY3
NWIxOGU0ZjNiZWQxMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuaApAQCAtMjg2LDYgKzI4Niw3IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDog
cHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIExhenlQcm9wZXJ0eTxKU0ds
b2JhbE9iamVjdCwgU3RydWN0dXJlPiBtX2NhbGxiYWNrRnVuY3Rpb25TdHJ1Y3R1cmU7CiAgICAg
TGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fY2FsbGJhY2tPYmplY3RT
dHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9wcm9wZXJ0eU5hbWVJdGVy
YXRvclN0cnVjdHVyZTsKKyAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2dlbmVyYXRvckZy
YW1lU3RydWN0dXJlOwogI2lmIEpTQ19PQkpDX0FQSV9FTkFCTEVECiAgICAgTGF6eVByb3BlcnR5
PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fb2JqY0NhbGxiYWNrRnVuY3Rpb25TdHJ1Y3R1
cmU7CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fb2JqY1dy
YXBwZXJPYmplY3RTdHJ1Y3R1cmU7CkBAIC01NTUsNiArNTU2LDcgQEAgY2xhc3MgSlNHbG9iYWxP
YmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgU3RydWN0dXJl
KiBjYWxsYmFja0Z1bmN0aW9uU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9jYWxsYmFja0Z1
bmN0aW9uU3RydWN0dXJlLmdldCh0aGlzKTsgfQogICAgIFN0cnVjdHVyZSogY2FsbGJhY2tPYmpl
Y3RTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2NhbGxiYWNrT2JqZWN0U3RydWN0dXJlLmdl
dCh0aGlzKTsgfQogICAgIFN0cnVjdHVyZSogcHJvcGVydHlOYW1lSXRlcmF0b3JTdHJ1Y3R1cmUo
KSBjb25zdCB7IHJldHVybiBtX3Byb3BlcnR5TmFtZUl0ZXJhdG9yU3RydWN0dXJlLmdldCgpOyB9
CisgICAgU3RydWN0dXJlKiBnZW5lcmF0b3JGcmFtZVN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJu
IG1fZ2VuZXJhdG9yRnJhbWVTdHJ1Y3R1cmUuZ2V0KCk7IH0KICNpZiBKU0NfT0JKQ19BUElfRU5B
QkxFRAogICAgIFN0cnVjdHVyZSogb2JqY0NhbGxiYWNrRnVuY3Rpb25TdHJ1Y3R1cmUoKSBjb25z
dCB7IHJldHVybiBtX29iamNDYWxsYmFja0Z1bmN0aW9uU3RydWN0dXJlLmdldCh0aGlzKTsgfQog
ICAgIFN0cnVjdHVyZSogb2JqY1dyYXBwZXJPYmplY3RTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVy
biBtX29iamNXcmFwcGVyT2JqZWN0U3RydWN0dXJlLmdldCh0aGlzKTsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVk0uY3BwCmluZGV4IGRjMzFjNDNmOGZiMGE2NWFiZjIyZDk1Mjg5NDg4Zjcx
NjkxMDkwY2UuLmQwOWNhYzUwNzliYzY3NGVjNGI1YjBmMDkzMGRiZGRlMzQ5MzdjNmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKQEAgLTI0OCw3ICsyNDgsNiBAQCBWTTo6Vk0o
Vk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgaW5mZXJyZWRUeXBlU3RydWN0
dXJlLnNldCgqdGhpcywgSW5mZXJyZWRUeXBlOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpz
TnVsbCgpKSk7CiAgICAgaW5mZXJyZWRUeXBlVGFibGVTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBJbmZl
cnJlZFR5cGVUYWJsZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAg
IGZ1bmN0aW9uUmFyZURhdGFTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBGdW5jdGlvblJhcmVEYXRhOjpj
cmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7Ci0gICAgZ2VuZXJhdG9yRnJhbWVT
dHJ1Y3R1cmUuc2V0KCp0aGlzLCBHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlz
LCAwLCBqc051bGwoKSkpOwogICAgIGV4Y2VwdGlvblN0cnVjdHVyZS5zZXQoKnRoaXMsIEV4Y2Vw
dGlvbjo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIHByb21pc2VE
ZWZlcnJlZFN0cnVjdHVyZS5zZXQoKnRoaXMsIEpTUHJvbWlzZURlZmVycmVkOjpjcmVhdGVTdHJ1
Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgaW50ZXJuYWxQcm9taXNlRGVmZXJyZWRT
dHJ1Y3R1cmUuc2V0KCp0aGlzLCBKU0ludGVybmFsUHJvbWlzZURlZmVycmVkOjpjcmVhdGVTdHJ1
Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaApp
bmRleCAwZmZlNzY2YTc4MmFlNDgyMzQzYTkyYjIxNDc5YzM2OTgyNzBmMjNkLi5lYTRiZDhjZjgw
Y2Y4YmIxNWI0YjcxN2Q5NDJiNWRmOGVjYWZjY2RiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1ZNLmgKQEAgLTMxNiw3ICszMTYsNiBAQCBjbGFzcyBWTSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVm
Q291bnRlZDxWTT4gewogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGluZmVycmVkVHlwZVN0cnVjdHVy
ZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBpbmZlcnJlZFR5cGVUYWJsZVN0cnVjdHVyZTsKICAg
ICBTdHJvbmc8U3RydWN0dXJlPiBmdW5jdGlvblJhcmVEYXRhU3RydWN0dXJlOwotICAgIFN0cm9u
ZzxTdHJ1Y3R1cmU+IGdlbmVyYXRvckZyYW1lU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1
cmU+IGV4Y2VwdGlvblN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBwcm9taXNlRGVm
ZXJyZWRTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gaW50ZXJuYWxQcm9taXNlRGVm
ZXJyZWRTdHJ1Y3R1cmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMv
c3RyZXNzL2dlbmVyYXRvci1maWItZnRsLWFuZC1hcnJheS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwtYW5kLWFycmF5LmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmZlOTM5ODEyZmRiYWVjNmI4MzJiZmQwMGYyMTUzZGVmODRiYjc1OTIKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWIt
ZnRsLWFuZC1hcnJheS5qcwpAQCAtMCwwICsxLDIzIEBACisoZnVuY3Rpb24gKCkgeworICAgIGZ1
bmN0aW9uICpmaWIoKQorICAgIHsKKyAgICAgICAgbGV0IGEgPSAxOworICAgICAgICBsZXQgYiA9
IDE7CisgICAgICAgIGxldCBjID0gWyAwIF07CisgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAg
ICAgICAgICBjWzBdID0gYTsKKyAgICAgICAgICAgIHlpZWxkIGM7CisgICAgICAgICAgICBbYSwg
Yl0gPSBbYiwgYSArIGJdOworICAgICAgICB9CisgICAgfQorCisgICAgbGV0IHZhbHVlID0gMDsK
KyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDFlNDsgKytpKSB7CisgICAgICAgIGxldCBmID0gZmli
KCk7CisgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwOyArK2kpIHsKKyAgICAgICAgICAg
IHZhbHVlID0gZi5uZXh0KCkudmFsdWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHZhbHVlWzBd
ICE9PSAzNTQyMjQ4NDgxNzkyNjIwMDAwMDApCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
YGJhZCB2YWx1ZToke3Jlc3VsdH1gKTsKKyAgICB9Cit9KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQtb2JqZWN0
LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0
bC1hbmQtb2JqZWN0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY2NzM0MGYyZWE0Yzc0MzhhMmQyMDlhYTQwZDA2
NzdlNGFiN2QzZmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLWFuZC1vYmplY3QuanMKQEAgLTAsMCArMSwyMyBA
QAorKGZ1bmN0aW9uICgpIHsKKyAgICBmdW5jdGlvbiAqZmliKCkKKyAgICB7CisgICAgICAgIGxl
dCBhID0gMTsKKyAgICAgICAgbGV0IGIgPSAxOworICAgICAgICBsZXQgYyA9IHsgZmliOiAwIH07
CisgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICBjLmZpYiA9IGE7CisgICAgICAg
ICAgICB5aWVsZCBjOworICAgICAgICAgICAgW2EsIGJdID0gW2IsIGEgKyBiXTsKKyAgICAgICAg
fQorICAgIH0KKworICAgIGxldCB2YWx1ZSA9IDA7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAx
ZTQ7ICsraSkgeworICAgICAgICBsZXQgZiA9IGZpYigpOworICAgICAgICBmb3IgKGxldCBpID0g
MDsgaSA8IDEwMDsgKytpKSB7CisgICAgICAgICAgICB2YWx1ZSA9IGYubmV4dCgpLnZhbHVlOwor
ICAgICAgICB9CisgICAgICAgIGlmICh2YWx1ZS5maWIgIT09IDM1NDIyNDg0ODE3OTI2MjAwMDAw
MCkKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIHZhbHVlOiR7cmVzdWx0fWApOwor
ICAgIH0KK30oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3Ry
ZXNzL2dlbmVyYXRvci1maWItZnRsLWFuZC1zdHJpbmcuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLWFuZC1zdHJpbmcuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNDM4YWU2YWIzMzQ3MDQ2ODIyODQ5ZjQzMDA0ZWE1YzQwM2VlZGEyOAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1m
dGwtYW5kLXN0cmluZy5qcwpAQCAtMCwwICsxLDIyIEBACisoZnVuY3Rpb24gKCkgeworICAgIGZ1
bmN0aW9uICpmaWIoKQorICAgIHsKKyAgICAgICAgbGV0IGEgPSAxOworICAgICAgICBsZXQgYiA9
IDE7CisgICAgICAgIGxldCBjID0gIlJlc3VsdCEgIjsKKyAgICAgICAgd2hpbGUgKHRydWUpIHsK
KyAgICAgICAgICAgIHlpZWxkIGMgKyBhOworICAgICAgICAgICAgW2EsIGJdID0gW2IsIGEgKyBi
XTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGxldCB2YWx1ZSA9IDA7CisgICAgZm9yIChsZXQg
aSA9IDA7IGkgPCAxZTQ7ICsraSkgeworICAgICAgICBsZXQgZiA9IGZpYigpOworICAgICAgICBm
b3IgKGxldCBpID0gMDsgaSA8IDEwMDsgKytpKSB7CisgICAgICAgICAgICB2YWx1ZSA9IGYubmV4
dCgpLnZhbHVlOworICAgICAgICB9CisgICAgICAgIGlmICh2YWx1ZSAhPT0gYFJlc3VsdCEgMzU0
MjI0ODQ4MTc5MjYyMDAwMDAwYCkKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIHZh
bHVlOiR7cmVzdWx0fWApOworICAgIH0KK30oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLmpzIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4z
NDBlMzNkYmM4NjhiZWE3YTg5M2M5ZWMxNmI3NzllYzI2YmRiMTljCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC5q
cwpAQCAtMCwwICsxLDIxIEBACisoZnVuY3Rpb24gKCkgeworICAgIGZ1bmN0aW9uICpmaWIoKQor
ICAgIHsKKyAgICAgICAgbGV0IGEgPSAxOworICAgICAgICBsZXQgYiA9IDE7CisgICAgICAgIHdo
aWxlICh0cnVlKSB7CisgICAgICAgICAgICB5aWVsZCBhOworICAgICAgICAgICAgW2EsIGJdID0g
W2IsIGEgKyBiXTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGxldCB2YWx1ZSA9IDA7CisgICAg
Zm9yIChsZXQgaSA9IDA7IGkgPCAxZTQ7ICsraSkgeworICAgICAgICBsZXQgZiA9IGZpYigpOwor
ICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDsgKytpKSB7CisgICAgICAgICAgICB2YWx1
ZSA9IGYubmV4dCgpLnZhbHVlOworICAgICAgICB9CisgICAgICAgIGlmICh2YWx1ZSAhPT0gMzU0
MjI0ODQ4MTc5MjYyMDAwMDAwKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgdmFs
dWU6JHtyZXN1bHR9YCk7CisgICAgfQorfSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZyYW1lLWVtcHR5LmpzIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZnJhbWUtZW1wdHkuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNTllODg1NWJmYWMzYzU2ZGY5MjZhYmQ0MjhjMDEzYzMzNDE2Mjc0NgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZy
YW1lLWVtcHR5LmpzCkBAIC0wLDAgKzEsMzQgQEAKK2Z1bmN0aW9uIHNob3VsZFRocm93KGZ1bmMs
IGVycm9yTWVzc2FnZSkgeworICAgIHZhciBlcnJvclRocm93biA9IGZhbHNlOworICAgIHZhciBl
cnJvciA9IG51bGw7CisgICAgdHJ5IHsKKyAgICAgICAgZnVuYygpOworICAgIH0gY2F0Y2ggKGUp
IHsKKyAgICAgICAgZXJyb3JUaHJvd24gPSB0cnVlOworICAgICAgICBlcnJvciA9IGU7CisgICAg
fQorICAgIGlmICghZXJyb3JUaHJvd24pCisgICAgICAgIHRocm93IG5ldyBFcnJvcignbm90IHRo
cm93bicpOworICAgIGlmIChTdHJpbmcoZXJyb3IpICE9PSBlcnJvck1lc3NhZ2UpCisgICAgICAg
IHRocm93IG5ldyBFcnJvcihgYmFkIGVycm9yOiAke1N0cmluZyhlcnJvcil9YCk7Cit9CisKK3No
b3VsZFRocm93KGZ1bmN0aW9uICgpIHsKKyAgICBmdW5jdGlvbiAqZmliKGZsYWcpCisgICAgewor
ICAgICAgICBsZXQgYSA9IDE7CisgICAgICAgIGxldCBiID0gMTsKKyAgICAgICAgeWllbGQgNDI7
CisgICAgICAgIGlmIChmbGFnKQorICAgICAgICAgICAgcmV0dXJuIGM7CisgICAgICAgIGxldCBj
ID0gNTAwOworICAgIH0KKworICAgIGxldCB2YWx1ZSA9IDA7CisgICAgZm9yIChsZXQgaSA9IDA7
IGkgPCAxZTQ7ICsraSkgeworICAgICAgICBmb3IgKGxldCB2IG9mIGZpYihmYWxzZSkpIHsKKyAg
ICAgICAgfQorICAgIH0KKyAgICBmb3IgKGxldCB2IG9mIGZpYih0cnVlKSkgeworICAgIH0KK30s
IGBSZWZlcmVuY2VFcnJvcjogQ2Fubm90IGFjY2VzcyB1bmluaXRpYWxpemVkIHZhcmlhYmxlLmAp
Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>282667</attachid>
            <date>2016-07-03 12:50:29 -0700</date>
            <delta_ts>2016-07-04 04:48:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-152723-20160704045002.patch</filename>
            <type>text/plain</type>
            <size>184911</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAyNzc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
OWI3MGZlZjZjNGQ1MmRhYjlhYTUzMWI1ZDZiNzVhMmM1YTk4MTYxLi43NTZlZDE0MDkzNWQ4MWE1
ZDE3ODVkMDkwODRmYmE1MDgxMGZlOWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NDYgQEAKKzIwMTYtMDctMDMgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0RGR10gRW1iZWQgZ2VuZXJhdG9yIGZyYW1lIGludG8gU2NvcGUg
YW5kIGVuYWJsZSBnZW5lcmF0b3IgaW4gREZHIC8gRlRMCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTI3MjMKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworCisgICAgICAgICEhISBXSVAgISEhIFRoZSBmb2xsb3dpbmcgZG9j
dW1lbnQgaXMgbm90IHVwZGF0ZWQgeWV0LgorCisKKworCisKKworCisKKyAgICAgICAgVGhpcyBw
YXRjaCBpcyBhbiBpbml0aWFsIGF0dGVtcHQgdG8gaW1wbGVtZW50IERGRyBhbmQgRlRMIGNhcGFi
bGUgRVM2IGdlbmVyYXRvcnMuCisgICAgICAgIFdlIGludHJvZHVjZSB0aGUgc2V2ZXJhbCBieXRl
Y29kZXMgYW5kIGNvbXBpbGUgdGhlbSBpbiBERkcgLyBGVEwuCisKKyAgICAgICAgLSBvcF9uZXdf
Z2VuZXJhdG9yX2ZyYW1lCisKKyAgICAgICAgICAgIEFsbG9jYXRlIEdlbmVyYXRvckZyYW1lIGlu
IHRoZSBieXRlY29kZSBpbnN0ZWFkIG9mIGFsbG9jYXRpbmcgaXQgaW4gdGhlIG9wX3NhdmUuCisK
KyAgICAgICAgLSBvcF9zYXZlCisKKyAgICAgICAgICAgIE5vdyBCeXRlY29kZUxpdmVuZXNzIGFu
YWx5c2lzIGFuZCBQcmVjaXNlSnVtcFRhcmdldCBhbmFseXNpcyBoYXZlIDIgbW9kZXM7IFN0YW5k
YXJkIGFuZCBFeHRyYWN0R2VuZXJhdG9yTGl2ZUNhbGxlZUxvY2Fscy4KKyAgICAgICAgICAgIFVu
ZGVyIEV4dHJhY3RHZW5lcmF0b3JMaXZlQ2FsbGVlTG9jYWxzIG1vZGUsIG9wX3NhdmUgaGFzIGp1
bXAgdG8gdGhlIG1lcmdlIHBvaW50LiBUaGlzIGp1bXAgaXMganVzdCB1c2VkIGZvciB1c2UtZGVm
IGFuYWx5c2lzIHRvIGV4dHJhY3QKKyAgICAgICAgICAgIGxpdmUgY2FsbGVlIGxvY2FscyBhdCB0
aGUgbWVyZ2UgcG9pbnQuIFRoZXNlIGxpdmUgY2FsbGVlIGxvY2FscyBzaG91bGQgYmUgc2F2ZWQg
YW5kIHJlc3VtZWQgdG8gc3VzcGVuZCBhbmQgcmVzdW1lIGdlbmVyYXRvcnMuCisgICAgICAgICAg
ICBUaGUgbWVyZ2UgcG9pbnQgaXMgdGhlIHBvaW50IHRoYXQgbWVyZ2luZyB0aGUgMiBiYXNpYyBi
bG9ja3MsIHNhdmluZyBsb2NhbHMgdG8gdGhlIGdlbmVyYXRvciBmcmFtZSBhbmQgcmVzdW1pbmcg
bG9jYWxzIGZyb20gdGhlIGdlbmVyYXRvciBmcmFtZS4KKworICAgICAgICAtIG9wX3Jlc3VtZQor
CisgICAgICAgICAgICBUaGlzIHJldHJpZXZlcyBsb2NhbCB2YXJpYWJsZSBmcm9tIHRoZSBnZW5l
cmF0b3IgZnJhbWUuIEV4dHJhY3RHZW5lcmF0b3JMaXZlQ2FsbGVlTG9jYWxzIGFuYWx5c2lzIHdp
bGwgZGlzY292ZXIgbGl2ZSBsb2NhbHMgYXQgdGhlIG1lcmdlIHBvaW50IGFuZCByZWNvcmQgbGl2
ZW5lc3MKKyAgICAgICAgICAgIGluZm9ybWF0aW9uIHRvIG9wX3NhdmUgYW5kIG9wX3Jlc3VtZS4g
T24gdGhlIGJhc2lzIG9mIHRoaXMgaW5mb3JtYXRpb24sIG9wX3Jlc3VtZSB3aWxsIHJldHJpZXZl
IHNhdmVkIGxvY2FscyBmcm9tIHRoZSBnZW5lcmF0b3IgZnJhbWUuCisKKyAgICAgICAgSGVyZSwg
d2UgZXhwbGFpbiBhYm91dCBob3cgdG8gcHJlcHJvY2VzcyBieXRlY29kZXMuCisgICAgICAgIEZp
cnN0LCB3ZSBlbWl0IG9wX3NhdmUsIG9wX3Jlc3VtZSBhbmQgcGVyZm9ybSBFeHRyYWN0R2VuZXJh
dG9yTGl2ZUNhbGxlZUxvY2FscyBhbmFseXNpcy4KKworICAgICAgICBbZW50cnldIC0rLS0+IFtz
YXZlIGJsb2NrXSAtPiBvcF9zYXZlIChpdCBpcyBicmFuY2hpbmcgYnl0ZWNvZGUpIC0tLS0tLT4g
W21lcmdlIGJsb2NrXSAtPiAuLi4KKyAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorICAg
ICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICstPiBvcF9y
ZXQgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgICAgICAgICAgICstLS0tLS0tLS0t
LS0tLS0tLS0+IG9wX3Jlc3VtZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LSsKKworICAgICAgICBUaGVuLCBkaXNjb3ZlciBsaXZlIGxvY2FscyBpbmZvcm1hdGlvbiAoYXMg
RmFzdEJpdFZlY3RvcikgYXQgdGhlIG1lcmdlIHBvaW50IGFuZCBzdG9yZSBpdCB0byBjb3JyZXNw
b25kaW5nIG9wX3NhdmUgYW5kIG9wX3Jlc3VtZS4KKyAgICAgICAgQWZ0ZXIgdGhhdCwgdW5kZXIg
U3RhbmRhcmQgYW5hbHlzaXMgbW9kZSwgdGhlIGFib3ZlIGJ5dGVjb2RlIHN0cmVhbSB3aWxsIGNv
bnN0cnVjdCB0aGUgZm9sbG93aW5nIENGRy4KKyAgICAgICAgSW4gdGhlIGZvbGxvd2luZyBDRkcs
IG9wX3NhdmUgbm8gbG9uZ2VyIGhhcyBqdW1wIHRvIHRoZSBtZXJnZSBwb2ludC4gVGhlIHJlbW92
ZWQganVtcCBlZGdlIHdhcyBqdXN0IHVzZWQgdG8gY2FsY3VsYXRlIGxpdmVuZXNzIGluZm9ybWF0
aW9uIGF0IHRoZSBtZXJnZSBwb2ludC4KKworICAgICAgICBbZW50cnldIC0rLS0+IFtzYXZlIGJs
b2NrXSAtPiBvcF9zYXZlIC0+IG9wX3JldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAr
LT4gW21lcmdlIGJsb2NrXSAtPiAuLi4KKyAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAor
ICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgICAgICAgICAgICstLS0tLS0t
LS0tLS0tLS0tLS0+IG9wX3Jlc3VtZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLSsKKworICAgICAgICBBbmQgd2UgaW50cm9kdWNlcyBzZXZlcmFsIERGRyBub2Rlcy4KKwor
ICAgICAgICAtIE5ld0dlbmVyYXRvckZyYW1lCisKKyAgICAgICAgICAgIFRoaXMganVzdCBhbGxv
Y2F0ZXMgR2VuZXJhdG9yRnJhbWUuCisKKyAgICAgICAgLSBSZXNpemVHZW5lcmF0b3JMb2NhbHMK
KworICAgICAgICAgICAgVGhpcyBzZXQgR2VuZXJhdG9yRnJhbWU6Om1fbnVtYmVyT2ZTYXZlZENh
bGxlZUxvY2FscyAqTiouIFRoaXMgbm9kZSBpcyB1c2VkIHRvICgxKSBhbGxvY2F0ZSBzcGFjZSBm
b3IgbG9jYWxzIGluIEdlbmVyYXRvckZyYW1lIGFuZCAoMikgZGVhbGxvY2F0ZSBzcGFjZSBpbgor
ICAgICAgICAgICAgR2VuZXJhdG9yRnJhbWUgYnkgc2V0dGluZyBpdCBhcyAwLgorCisgICAgICAg
IC0gR2V0R2VuZXJhdG9yTG9jYWwKKworICAgICAgICAgICAgR2V0IGEgc2F2ZWQgbG9jYWwgdmFy
aWFibGUgZnJvbSBhIGdlbmVyYXRvciBmcmFtZS4gR2V0R2VuZXJhdG9yTG9jYWwgYW5kIFNldEdl
bmVyYXRvckxvY2FsIGFyZSBsaW5rZWQgd2l0aCBHZW5lcmF0b3JMb2NhbERhdGEuIFNvIHR5cGUg
cHJlZGljYXRpb24gYW5kIGZsYWdzCisgICAgICAgICAgICBhcmUgY29ycmVjdGx5IHByb3BhZ2F0
ZWQgYmV5b25kIHRoZSBnZW5lcmF0b3IgZnJhbWUuCisKKyAgICAgICAgLSBTZXRHZW5lcmF0b3JM
b2NhbAorCisgICAgICAgICAgICBTdG9yZSBhIGxvY2FsIHZhcmlhYmxlIHRvIGEgZ2VuZXJhdG9y
IGZyYW1lLgorCisgICAgICAgIEZ1dHVyZSBwbGFucyBhcmUgdGhlIGZvbGxvd2luZ3MuCisKKyAg
ICAgICAgMS4gU3VwcG9ydCB0cmFuc2ZlcnJpbmcgQWJzdHJhY3RWYWx1ZSBiZXR3ZWVuIFNldEdl
bmVyYXRvckxvY2FsIGFuZCBHZXRHZW5lcmF0b3JMb2NhbC4gaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE1MzE4MworCisgICAgICAgIDIuIENyZWF0ZSBKU0dlbmVyYXRv
ciBhbmQgYWxsb2NhdGUgaXQgaW4gdGhlIGdlbmVyYXRvciB3cmFwcGVyIGZ1bmN0aW9uLiBUaGlz
IHNob3VsZCBiZSBjb21waWxlZCBpbiBERkcgLyBGVEwgYW5kCisgICAgICAgIHRoaXMgb2JqZWN0
IHNob3VsZCBiZSB0cmFja2VkIChieSBlc2NhcGUgYW5hbHlzaXMpIGFuZCBlbGltaW5hdGVkIGlm
IHBvc3NpYmxlIGJ5IG9iamVjdCBhbGxvY2F0aW9uIGVsaW1pbmF0aW9uLgorCisgICAgICAgIDMu
IEFuZCBvbmNlIHdlIGV4cGxvaXQgdGhhdCBHZW5lcmF0b3JGcmFtZSBpcyBub3QgZXNjYXBlZCBm
cm9tIHRoZSBnaXZlbiBGVEwtZWQgZnVuY3Rpb24sIHdlIHdpbGwgZWxpbWluYXRlIEdlbmVyYXRv
ckZyYW1lIGFsbG9jYXRpb24gYW5kCisgICAgICAgIGNvbnZlcnQgR2VuZXJhdG9yTG9jYWwgb3Bl
cmF0aW9ucyBpbnRvIGdldC9zZXQgbG9jYWwgb3BlcmF0aW9ucy4KKworICAgICAgICAqIENNYWtl
TGlzdHMudHh0OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogYnVpbHRpbnMvR2VuZXJhdG9yUHJvdG90eXBlLmpzOgorICAgICAg
ICAoZ2VuZXJhdG9yUmVzdW1lKToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUJhc2ljQmxv
Y2suY3BwOgorICAgICAgICAoSlNDOjppc0JyYW5jaCk6CisgICAgICAgIChKU0M6OmNvbXB1dGVC
eXRlY29kZUJhc2ljQmxvY2tzKToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUJhc2ljQmxv
Y2suaDoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUdyYXBoLmNwcDogQ29waWVkIGZyb20g
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5o
LgorICAgICAgICAoSlNDOjpCeXRlY29kZUdyYXBoOjpCeXRlY29kZUdyYXBoKToKKyAgICAgICAg
KiBieXRlY29kZS9CeXRlY29kZUdyYXBoLmg6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuaC4KKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHcmFwaDo6Ynl0ZWNvZGVBbmFseXNpc01vZGUpOgorICAgICAgICAoSlNDOjpCeXRl
Y29kZUdyYXBoOjpjb2RlQmxvY2spOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdyYXBoOjpiYXNp
Y0Jsb2Nrcyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR3JhcGg6OlJldmVyc2VJdGVyYWJsZTo6
UmV2ZXJzZUl0ZXJhYmxlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHcmFwaDo6UmV2ZXJzZUl0
ZXJhYmxlOjpiZWdpbik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR3JhcGg6OlJldmVyc2VJdGVy
YWJsZTo6ZW5kKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHcmFwaDo6YmFzaWNCbG9ja3NJblJl
dmVyc2VPcmRlcik6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVJbnNlcnRpb25TZXQuaDog
Q29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5l
c3NBbmFseXNpcy5oLgorICAgICAgICAoSlNDOjpCeXRlY29kZUluc2VydGlvblNldDo6Qnl0ZWNv
ZGVJbnNlcnRpb25TZXQpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uOgor
ICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHA6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lz
KToKKyAgICAgICAgKEpTQzo6ZmluZEJhc2ljQmxvY2tXaXRoTGVhZGVyT2Zmc2V0KToKKyAgICAg
ICAgKEpTQzo6ZmluZEJhc2ljQmxvY2tGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6
OnN0ZXBPdmVySW5zdHJ1Y3Rpb24pOgorICAgICAgICAoSlNDOjpjb21wdXRlTG9jYWxMaXZlbmVz
c0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZUxvY2FsTGl2ZW5lc3NG
b3JCbG9jayk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6cnVuTGl2
ZW5lc3NGaXhwb2ludCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6
Z2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
TGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0ZUZ1bGxMaXZlbmVzcyk6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0ZUtpbGxzKToKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpkdW1wUmVzdWx0cyk6CisgICAgICAgIChKU0M6OkJ5dGVj
b2RlTGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0ZSk6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNv
ZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmg6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNv
ZGVVc2VEZWYuaDoKKyAgICAgICAgKEpTQzo6Y29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCk6
CisgICAgICAgIChKU0M6OmNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAq
IGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZHVtcEJ5
dGVjb2RlKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbik6CisgICAg
ICAgIChKU0M6OkNvZGVCbG9jazo6dmFsaWRhdGUpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVC
bG9jay5oOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmxpdmVuZXNzQW5hbHlzaXMpOgorICAg
ICAgICAqIGJ5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5jcHA6CisgICAgICAgIChKU0M6Omdl
dEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpjb21wdXRlUHJl
Y2lzZUp1bXBUYXJnZXRzKToKKyAgICAgICAgKEpTQzo6ZmluZEp1bXBUYXJnZXRzRm9yQnl0ZWNv
ZGVPZmZzZXQpOgorICAgICAgICAqIGJ5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5oOgorICAg
ICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3R2VuZXJhdG9yRnJhbWUpOgorICAgICAgICAoSlNDOjpC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdFNhdmUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdFJlc3VtZSk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmg6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0b3JGcmFtZVJl
Z2lzdGVyKToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RIZWFwLmg6CisgICAgICAgICogZGZn
L0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkRGRzo6QWJz
dHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKToKKyAg
ICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5
dGVDb2RlUGFyc2VyOjpuZXdHZW5lcmF0b3JMb2NhbERhdGEpOgorICAgICAgICAoSlNDOjpERkc6
OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29k
ZVBhcnNlcjo6cGFyc2VDb2RlQmxvY2spOgorICAgICAgICAqIGRmZy9ERkdDYXBhYmlsaXRpZXMu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OmNhcGFiaWxpdHlMZXZlbCk6CisgICAgICAgICogZGZn
L0RGR0Nsb2JiZXJpemUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAgICAg
ICAgKiBkZmcvREZHQ2xvYmJlcnNFeGl0U3RhdGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmNs
b2JiZXJzRXhpdFN0YXRlKToKKyAgICAgICAgKiBkZmcvREZHRG9lc0dDLmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpkb2VzR0MpOgorICAgICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5vZGUpOgorICAgICAgICAqIGRmZy9E
RkdHZW5lcmF0b3JMb2NhbERhdGEuaDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5oLgorICAgICAgICAoSlNDOjpERkc6OkdlbmVy
YXRvckxvY2FsRGF0YTo6cHJlZGljdCk6CisgICAgICAgIChKU0M6OkRGRzo6R2VuZXJhdG9yTG9j
YWxEYXRhOjpwcmVkaWN0aW9uKToKKyAgICAgICAgKiBkZmcvREZHR3JhcGguaDoKKyAgICAgICAg
KiBkZmcvREZHTWF5RXhpdC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6bWF5RXhpdCk6CisgICAg
ICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNHZW5lcmF0
b3JMb2NhbHNTaXplKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpnZW5lcmF0b3JMb2NhbHNT
aXplKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNHZW5lcmF0b3JMb2NhbEluZGV4KToK
KyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpnZW5lcmF0b3JMb2NhbEluZGV4KToKKyAgICAgICAg
KEpTQzo6REZHOjpOb2RlOjpoYXNHZW5lcmF0b3JMb2NhbERhdGEpOgorICAgICAgICAoSlNDOjpE
Rkc6Ok5vZGU6OmdlbmVyYXRvckxvY2FsRGF0YSk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6
aGFzR2VuZXJhdG9yRnJhbWVMb2NhbHMpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmdlbmVy
YXRvckZyYW1lTG9jYWxzKToKKyAgICAgICAgKiBkZmcvREZHTm9kZVR5cGUuaDoKKyAgICAgICAg
KiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuaDoK
KyAgICAgICAgKiBkZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwOgorICAgICAg
ICAqIGRmZy9ERkdTYWZlVG9FeGVjdXRlLmg6CisgICAgICAgIChKU0M6OkRGRzo6c2FmZVRvRXhl
Y3V0ZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld0dlbmVyYXRvckZyYW1lKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVJlc2l6ZUdlbmVyYXRvckxvY2Fs
cyk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgICogZGZnL0RG
R1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRm
Zy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1N0
cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTdHJ1Y3R1
cmVSZWdpc3RyYXRpb25QaGFzZTo6cnVuKToKKyAgICAgICAgKiBmdGwvRlRMQWJzdHJhY3RIZWFw
UmVwb3NpdG9yeS5jcHA6CisgICAgICAgICogZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnku
aDoKKyAgICAgICAgKiBmdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRM
OjpjYW5Db21waWxlKToKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklU
Ojpwcml2YXRlQ29tcGlsZU1haW5QYXNzKToKKyAgICAgICAgKiBqaXQvSklULmg6CisgICAgICAg
ICogaml0L0pJVE9wY29kZXMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bfc2F2ZSk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9yZXN1bWUpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRfb3BfbmV3X2dlbmVyYXRvcl9mcmFtZSk6CisgICAgICAgICogaml0L0pJVE9wY29kZXMz
Ml82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9zYXZlKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX3Jlc3VtZSk6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNz
LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0V3JpdGVCYXJyaWVyKToKKyAgICAgICAgKiBs
bGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwOgorICAgICAgICAqIGxsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXIuYXNtOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAgICAo
SlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJbm5lcik6CisgICAgICAgIChKU0M6OlBhcnNl
cjxMZXhlclR5cGU+OjpwYXJzZUdlbmVyYXRvckZ1bmN0aW9uU291cmNlRWxlbWVudHMpOgorICAg
ICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6Y3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyk6
CisgICAgICAgICogcGFyc2VyL1BhcnNlci5oOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xv
d1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6U0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAqIHJ1
bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmg6CisgICAgICAgICogcnVudGltZS9HZW5lcmF0b3JGcmFt
ZS5jcHA6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpHZW5lcmF0b3JGcmFtZSk6Cisg
ICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChK
U0M6OkdlbmVyYXRvckZyYW1lOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpHZW5l
cmF0b3JGcmFtZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OnNhdmUp
OgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6cmVzdW1lKToKKyAgICAgICAgKEpTQzo6
R2VuZXJhdG9yRnJhbWU6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJh
dG9yRnJhbWUuaDoKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OmxvY2FsT2Zmc2V0KToK
KyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6Om51bWJlck9mQ2FsbGVlTG9jYWxzT2Zmc2V0
KToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6Om51bWJlck9mU2F2ZWRDYWxsZWVMb2Nh
bHNPZmZzZXQpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6bG9jYWxBdCk6IERlbGV0
ZWQuCisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6
OkpTR2xvYmFsT2JqZWN0Ojppbml0KToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0
Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpnZW5lcmF0b3JGcmFtZVN0cnVjdHVy
ZSk6CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpWTSk6IERl
bGV0ZWQuCisgICAgICAgICogcnVudGltZS9WTS5oOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9n
ZW5lcmF0b3ItZmliLWZ0bC1hbmQtYXJyYXkuanM6IEFkZGVkLgorICAgICAgICAoZmliKToKKyAg
ICAgICAgKiB0ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwtYW5kLW9iamVjdC5qczogQWRk
ZWQuCisgICAgICAgIChmaWIpOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmli
LWZ0bC1hbmQtc3RyaW5nLmpzOiBBZGRlZC4KKyAgICAgICAgKGZpYik6CisgICAgICAgICogdGVz
dHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLmpzOiBBZGRlZC4KKyAgICAgICAgKGZpYik6Cisg
ICAgICAgICogdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1mcmFtZS1lbXB0eS5qczogQWRkZWQuCisg
ICAgICAgIChzaG91bGRUaHJvdyk6CisgICAgICAgIChzaG91bGRUaHJvdy5maWIpOgorCisgICAg
ICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBidWlsdGlucy9HZW5lcmF0b3JQcm90b3R5cGUu
anM6CisgICAgICAgIChnbG9iYWxQcml2YXRlLmdlbmVyYXRvclJlc3VtZSk6CisgICAgICAgICog
Ynl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6aXNCcmFuY2gp
OgorICAgICAgICAoSlNDOjpnZXRPcGNvZGVJRCk6CisgICAgICAgIChKU0M6OmNvbXB1dGVCeXRl
Y29kZUJhc2ljQmxvY2tzSW50ZXJuYWwpOgorICAgICAgICAoSlNDOjpjb21wdXRlQnl0ZWNvZGVC
YXNpY0Jsb2Nrcyk6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmg6Cisg
ICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwOiBBZGRlZC4K
KyAgICAgICAgKEpTQzo6aXNWYWxpZFJlZ2lzdGVyRm9yTGl2ZW5lc3MpOgorICAgICAgICAoSlND
OjpnZXRMZWFkZXJPZmZzZXRGb3JCYXNpY0Jsb2NrKToKKyAgICAgICAgKEpTQzo6ZmluZEJhc2lj
QmxvY2tXaXRoTGVhZGVyT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6YmxvY2tDb250YWluc0J5dGVj
b2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6ZmluZEJhc2ljQmxvY2tGb3JCeXRlY29kZU9mZnNl
dCk6CisgICAgICAgIChKU0M6OmNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAg
ICAoSlNDOjpjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6c3Rl
cE92ZXJJbnN0cnVjdGlvbik6CisgICAgICAgIChKU0M6OmNvbXB1dGVMb2NhbExpdmVuZXNzRm9y
Qnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJs
b2NrKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb246OkJ5dGVjb2Rl
R2VuZXJhdG9yaWZpY2F0aW9uKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3JpZmlj
YXRpb246OmdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpC
eXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbjo6cnVuKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVH
ZW5lcmF0b3JpZmljYXRpb246OnJ1bkxpdmVuZXNzQW5hbHlzaXMpOgorICAgICAgICAoSlNDOjpw
ZXJmb3JtR2VuZXJhdG9yaWZpY2F0aW9uKToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUdl
bmVyYXRvcmlmaWNhdGlvbi5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmguCisgICAgICAgICogYnl0ZWNvZGUvQnl0
ZWNvZGVHcmFwaC5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuaC4KKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29k
ZUdyYXBoLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpCeXRlY29kZUdyYXBoOjpieXRlY29kZUFu
YWx5c2lzTW9kZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR3JhcGg6OmNvZGVCbG9jayk6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR3JhcGg6OmJhc2ljQmxvY2tzKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHcmFwaDo6aW5zdHJ1Y3Rpb25zKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHcmFw
aDo6UmV2ZXJzZUl0ZXJhYmxlOjpSZXZlcnNlSXRlcmFibGUpOgorICAgICAgICAoSlNDOjpCeXRl
Y29kZUdyYXBoOjpSZXZlcnNlSXRlcmFibGU6OmJlZ2luKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNv
ZGVHcmFwaDo6UmV2ZXJzZUl0ZXJhYmxlOjplbmQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdy
YXBoOjpiYXNpY0Jsb2Nrc0luUmV2ZXJzZU9yZGVyKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVH
cmFwaDxCbG9jaz46OkJ5dGVjb2RlR3JhcGgpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2Rl
SW5zZXJ0aW9uU2V0Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuaC4KKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVJbnNl
cnRpb25TZXQ6OkJ5dGVjb2RlSW5zZXJ0aW9uU2V0KToKKyAgICAgICAgKiBieXRlY29kZS9CeXRl
Y29kZUxpc3QuanNvbjoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlz
aXMuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OkJ5dGVjb2Rl
TGl2ZW5lc3NBbmFseXNpcyk6CisgICAgICAgIChKU0M6OmZpbmRCYXNpY0Jsb2NrV2l0aExlYWRl
ck9mZnNldCk6CisgICAgICAgIChKU0M6OmZpbmRCYXNpY0Jsb2NrRm9yQnl0ZWNvZGVPZmZzZXQp
OgorICAgICAgICAoSlNDOjpzdGVwT3Zlckluc3RydWN0aW9uKToKKyAgICAgICAgKEpTQzo6Y29t
cHV0ZUxvY2FsTGl2ZW5lc3NGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OmNvbXB1
dGVMb2NhbExpdmVuZXNzRm9yQmxvY2spOgorICAgICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNz
QW5hbHlzaXM6OnJ1bkxpdmVuZXNzRml4cG9pbnQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUxp
dmVuZXNzQW5hbHlzaXM6OmdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQpOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGVGdWxsTGl2ZW5lc3MpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGVLaWxscyk6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6ZHVtcFJlc3VsdHMpOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGUpOiBEZWxldGVkLgor
ICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5oOgorICAgICAgICAq
IGJ5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmg6CisgICAgICAgIChKU0M6OmNvbXB1dGVVc2VzRm9y
Qnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zm
c2V0KToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpD
b2RlQmxvY2s6OmR1bXBCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluaXNo
Q3JlYXRpb24pOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnZhbGlkYXRlKToKKyAgICAgICAg
KiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpsaXZlbmVz
c0FuYWx5c2lzKToKKyAgICAgICAgKiBieXRlY29kZS9IYW5kbGVySW5mby5oOgorICAgICAgICAq
IGJ5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5jcHA6CisgICAgICAgIChKU0M6OmdldE9wY29k
ZUlEKToKKyAgICAgICAgKEpTQzo6Z2V0SnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldCk6Cisg
ICAgICAgIChKU0M6OmNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHNJbnRlcm5hbCk6CisgICAgICAg
IChKU0M6OmNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMpOgorICAgICAgICAoSlNDOjpmaW5kSnVt
cFRhcmdldHNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgICogYnl0ZWNvZGUvUHJlY2lzZUp1
bXBUYXJnZXRzLmg6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwOgor
ICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6aGFuZGxlckZvckJ5dGVjb2RlT2Zmc2V0
KToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OmhhbmRsZXJGb3JJbmRleCk6Cisg
ICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6VW5s
aW5rZWRTdHJpbmdKdW1wVGFibGU6Om9mZnNldEZvclZhbHVlKToKKyAgICAgICAgKEpTQzo6VW5s
aW5rZWRDb2RlQmxvY2s6OmxpdmVDYWxsZWVMb2NhbHNBdFlpZWxkKToKKyAgICAgICAgKiBieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdl
bmVyYXRvcjo6Z2VuZXJhdGUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Qnl0
ZWNvZGVHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5l
d0dlbmVyYXRvckZyYW1lKToKKyAgICAgICAgKEpTQzo6cHJlcGFyZUp1bXBUYWJsZUZvclN0cmlu
Z1N3aXRjaCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0U2F2ZSk6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzdW1lKToKKyAgICAgICAgKiBi
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVH
ZW5lcmF0b3I6OmdlbmVyYXRvckZyYW1lUmVnaXN0ZXIpOgorICAgICAgICAqIGRmZy9ERkdBYnN0
cmFjdEhlYXAuaDoKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMu
aDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVU
eXBlPjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6Om5ld0dlbmVyYXRvckxvY2Fs
RGF0YSk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgor
ICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUNvZGVCbG9jayk6CisgICAg
ICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Y2FwYWJp
bGl0eUxldmVsKToKKyAgICAgICAgKiBkZmcvREZHQ2xvYmJlcml6ZS5oOgorICAgICAgICAoSlND
OjpERkc6OmNsb2JiZXJpemUpOgorICAgICAgICAqIGRmZy9ERkdDbG9iYmVyc0V4aXRTdGF0ZS5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6Y2xvYmJlcnNFeGl0U3RhdGUpOgorICAgICAgICAqIGRm
Zy9ERkdEb2VzR0MuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmRvZXNHQyk6CisgICAgICAgICog
ZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZp
eHVwTm9kZSk6CisgICAgICAgICogZGZnL0RGR0dlbmVyYXRvckxvY2FsRGF0YS5oOiBDb3BpZWQg
ZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmgu
CisgICAgICAgIChKU0M6OkRGRzo6R2VuZXJhdG9yTG9jYWxEYXRhOjpwcmVkaWN0KToKKyAgICAg
ICAgKEpTQzo6REZHOjpHZW5lcmF0b3JMb2NhbERhdGE6OnByZWRpY3Rpb24pOgorICAgICAgICAq
IGRmZy9ERkdHcmFwaC5oOgorICAgICAgICAqIGRmZy9ERkdNYXlFeGl0LmNwcDoKKyAgICAgICAg
KiBkZmcvREZHTm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc0dlbmVyYXRvckxv
Y2Fsc1NpemUpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmdlbmVyYXRvckxvY2Fsc1NpemUp
OgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc0dlbmVyYXRvckxvY2FsSW5kZXgpOgorICAg
ICAgICAoSlNDOjpERkc6Ok5vZGU6OmdlbmVyYXRvckxvY2FsSW5kZXgpOgorICAgICAgICAoSlND
OjpERkc6Ok5vZGU6Omhhc0dlbmVyYXRvckxvY2FsRGF0YSk6CisgICAgICAgIChKU0M6OkRGRzo6
Tm9kZTo6Z2VuZXJhdG9yTG9jYWxEYXRhKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNH
ZW5lcmF0b3JGcmFtZUxvY2Fscyk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6Z2VuZXJhdG9y
RnJhbWVMb2NhbHMpOgorICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAqIGRm
Zy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5oOgorICAg
ICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgICog
ZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRl
KToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3R2VuZXJhdG9yRnJhbWUpOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUmVzaXplR2VuZXJhdG9yTG9jYWxzKToK
KyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKiBkZmcvREZHU3Bl
Y3VsYXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RG
R1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHU3RydWN0
dXJlUmVnaXN0cmF0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlN0cnVjdHVyZVJl
Z2lzdHJhdGlvblBoYXNlOjpydW4pOgorICAgICAgICAqIGZ0bC9GVExBYnN0cmFjdEhlYXBSZXBv
c2l0b3J5LmNwcDoKKyAgICAgICAgKiBmdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oOgor
ICAgICAgICAqIGZ0bC9GVExDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmNh
bkNvbXBpbGUpOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAg
ICAgKEpTQzo6ZmluZEV4Y2VwdGlvbkhhbmRsZXIpOgorICAgICAgICAoSlNDOjpHZXRDYXRjaEhh
bmRsZXJGdW5jdG9yOjpvcGVyYXRvcigpKToKKyAgICAgICAgKEpTQzo6VW53aW5kRnVuY3Rvcjo6
b3BlcmF0b3IoKSk6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6
cHJpdmF0ZUNvbXBpbGVNYWluUGFzcyk6CisgICAgICAgICogaml0L0pJVC5oOgorICAgICAgICAq
IGppdC9KSVRPcGNvZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3NhdmUpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcmVzdW1lKToKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0X29wX25ld19nZW5lcmF0b3JfZnJhbWUpOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzMzJf
NjQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bfc2F2ZSk6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdF9vcF9yZXN1bWUpOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5j
cHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFdyaXRlQmFycmllcik6CisgICAgICAgICogbGxp
bnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcDoKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbElu
dGVycHJldGVyLmFzbToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmNwcDoKKyAgICAgICAgKEpT
Qzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlSW5uZXIpOgorICAgICAgICAoSlNDOjpQYXJzZXI8
TGV4ZXJUeXBlPjo6cGFyc2VHZW5lcmF0b3JGdW5jdGlvblNvdXJjZUVsZW1lbnRzKToKKyAgICAg
ICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OmNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMpOgor
ICAgICAgICAqIHBhcnNlci9QYXJzZXIuaDoKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQ
YXRocy5jcHA6CisgICAgICAgIChKU0M6OlNMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKiBydW50
aW1lL0NvbW1vblNsb3dQYXRocy5oOgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJhdG9yRnJhbWUu
Y3BwOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6R2VuZXJhdG9yRnJhbWUpOgorICAg
ICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlND
OjpHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6R2VuZXJh
dG9yRnJhbWU6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpzYXZlKToK
KyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OnJlc3VtZSk6CisgICAgICAgIChKU0M6Okdl
bmVyYXRvckZyYW1lOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL0dlbmVyYXRv
ckZyYW1lLmg6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpsb2NhbE9mZnNldCk6Cisg
ICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpudW1iZXJPZkNhbGxlZUxvY2Fsc09mZnNldCk6
CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpudW1iZXJPZlNhdmVkQ2FsbGVlTG9jYWxz
T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OmxvY2FsQXQpOiBEZWxldGVk
LgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpK
U0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5o
OgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6Z2VuZXJhdG9yRnJhbWVTdHJ1Y3R1cmUp
OgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6Vk0pOiBEZWxl
dGVkLgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvZ2Vu
ZXJhdG9yLWZpYi1mdGwtYW5kLWFycmF5LmpzOiBBZGRlZC4KKyAgICAgICAgKGZpYik6CisgICAg
ICAgICogdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLWFuZC1vYmplY3QuanM6IEFkZGVk
LgorICAgICAgICAoZmliKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1m
dGwtYW5kLXN0cmluZy5qczogQWRkZWQuCisgICAgICAgIChmaWIpOgorICAgICAgICAqIHRlc3Rz
L3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC5qczogQWRkZWQuCisgICAgICAgIChmaWIpOgorICAg
ICAgICAqIHRlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZnJhbWUtZW1wdHkuanM6IEFkZGVkLgorICAg
ICAgICAoc2hvdWxkVGhyb3cpOgorICAgICAgICAoc2hvdWxkVGhyb3cuZmliKToKKwogMjAxNi0w
Ny0wMSAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxlLmNvbT4KIAogICAgICAgICBb
SlNDXSBSZWdFeHAuY29tcGlsZSBpcyBub3QgcmV0dXJuaW5nIHRoZSByZWdleHAgd2hlbiBpdCBz
dWNjZWVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggYjdjNmNmMDY0NmFm
NWVmOGUxMzdlMmQzMjBmNTAyY2FjYmQ4MzcxMC4uN2E0N2Q1NGU5MDAyODhhZmJkYjA3YWNkMjEw
NDFmMDU5ZmZmZGZhYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlz
dHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTc4
LDYgKzE3OCw4IEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgYnl0ZWNvZGUvQXJy
YXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAKICAgICBieXRlY29kZS9BcnJheVByb2ZpbGUuY3BwCiAg
ICAgYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcAorICAgIGJ5dGVjb2RlL0J5dGVjb2Rl
R2VuZXJhdG9yaWZpY2F0aW9uLmNwcAorICAgIGJ5dGVjb2RlL0J5dGVjb2RlR3JhcGguY3BwCiAg
ICAgYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5jcHAKICAgICBieXRlY29kZS9C
eXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwCiAgICAgYnl0ZWNvZGUvQ2FsbEVkZ2UuY3BwCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDJkMmJjMzQwOTMyZDE4YjZhNmQ2NzFjMDU1
ZGE2OTdmZGE1Y2E0ZTQuLjM3ZTY2MWI4Nzg2M2FlNjM2NmYwYzY0NTk4M2JmMDJjZjVmNzk2YTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC02MjUzLDYgKzYyNTMsNyBAQAogCQkJ
CTBGNjlDQzg2MTkzQUM2MEEwMDQ1NzU5RSAvKiBERkdGcm96ZW5WYWx1ZS5jcHAgKi8sCiAJCQkJ
MEY2OUNDODcxOTNBQzYwQTAwNDU3NTlFIC8qIERGR0Zyb3plblZhbHVlLmggKi8sCiAJCQkJODZF
QzlEQjYxMzI4REY4MjAwMkIyQUQ3IC8qIERGR0dlbmVyYXRpb25JbmZvLmggKi8sCisJCQkJNzA3
OTE0MUMxQzRBQTgwNzAwQjgyRkY3IC8qIERGR0dlbmVyYXRvckxvY2FsRGF0YS5oICovLAogCQkJ
CTg2RUM5REI3MTMyOERGODIwMDJCMkFENyAvKiBERkdHcmFwaC5jcHAgKi8sCiAJCQkJODZFQzlE
QjgxMzI4REY4MjAwMkIyQUQ3IC8qIERGR0dyYXBoLmggKi8sCiAJCQkJMEYyRkNDRjIxOEE2MDA3
MDAwMUEyN0Y4IC8qIERGR0dyYXBoU2FmZXBvaW50LmNwcCAqLywKQEAgLTgwMTIsNiArODAxMyw3
IEBACiAJCQkJMEZFMDUwMjkxQUE5MDk1NjAwRDMzQjMzIC8qIFNjb3BlZEFyZ3VtZW50c1RhYmxl
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkUwNTAyQjFBQTkwOTU2MDBEMzNCMzMgLyogU2NvcGVP
ZmZzZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjRFNTUyMTdFRTI3NDkwMEFCQjIxNyAvKiBT
Y3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCTcwNzkxNDFEMUM0
QUE4NjAwMEI4MkZGNyAvKiBERkdHZW5lcmF0b3JMb2NhbERhdGEuaCBpbiBIZWFkZXJzICovLAog
CQkJCUE1RkQwMDY4MTg5QUZFOUMwMDYzMzIzMSAvKiBTY3JpcHRBcmd1bWVudHMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUE1MDNGQTIxMTg4RUZGNjgwMDExMEYxNCAvKiBTY3JpcHRCcmVha3BvaW50
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNUZEMDA2RTE4OUIwMEFBMDA2MzMyMzEgLyogU2NyaXB0
Q2FsbEZyYW1lLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9idWlsdGlucy9HZW5lcmF0b3JQcm90b3R5cGUuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnVpbHRpbnMvR2VuZXJhdG9yUHJvdG90eXBlLmpzCmluZGV4IDNjMTQwNjg3ZGZjN2UwMGVm
ZTkxYWU4MGIyYWM2NzZmYTliZjQ4ZjQuLjQ5OWRiZDM5MmU4MzEzZGNkZDg2ZWM4YzE2MDU2OWQ3
ZDZmNTQ5YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9HZW5l
cmF0b3JQcm90b3R5cGUuanMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0dl
bmVyYXRvclByb3RvdHlwZS5qcwpAQCAtNTEsNyArNTEsNyBAQCBmdW5jdGlvbiBnZW5lcmF0b3JS
ZXN1bWUoZ2VuZXJhdG9yLCBzZW50VmFsdWUsIHJlc3VtZU1vZGUpCiAgICAgfSBlbHNlIHsKICAg
ICAgICAgdHJ5IHsKICAgICAgICAgICAgIGdlbmVyYXRvci5AZ2VuZXJhdG9yU3RhdGUgPSBAR2Vu
ZXJhdG9yU3RhdGVFeGVjdXRpbmc7Ci0gICAgICAgICAgICB2YWx1ZSA9IGdlbmVyYXRvci5AZ2Vu
ZXJhdG9yTmV4dC5AY2FsbChnZW5lcmF0b3IuQGdlbmVyYXRvclRoaXMsIGdlbmVyYXRvciwgc3Rh
dGUsIHNlbnRWYWx1ZSwgcmVzdW1lTW9kZSk7CisgICAgICAgICAgICB2YWx1ZSA9IGdlbmVyYXRv
ci5AZ2VuZXJhdG9yTmV4dC5AY2FsbChnZW5lcmF0b3IuQGdlbmVyYXRvclRoaXMsIGdlbmVyYXRv
ciwgc3RhdGUsIHNlbnRWYWx1ZSwgcmVzdW1lTW9kZSwgZ2VuZXJhdG9yLkBnZW5lcmF0b3JGcmFt
ZSk7CiAgICAgICAgICAgICBpZiAoZ2VuZXJhdG9yLkBnZW5lcmF0b3JTdGF0ZSA9PT0gQEdlbmVy
YXRvclN0YXRlRXhlY3V0aW5nKSB7CiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLkBnZW5lcmF0
b3JTdGF0ZSA9IEBHZW5lcmF0b3JTdGF0ZUNvbXBsZXRlZDsKICAgICAgICAgICAgICAgICBkb25l
ID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZUJhc2ljQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVj
b2RlQmFzaWNCbG9jay5jcHAKaW5kZXggN2YxN2MwZWYxMGI0MzNmYWM4ZjU4Y2IzYjljYTVkNGQw
MTViYmEwOC4uMmQ1YWZhY2EzMGExMDljOWIxMWNiMWYxMzBjNTgxNGQ2ZTUxZmVkOCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9j
ay5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRl
ICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiUHJlY2lzZUp1bXBUYXJnZXRzLmgiCisjaW5jbHVk
ZSAiVW5saW5rZWRJbnN0cnVjdGlvblN0cmVhbS5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAt
MzgsNyArMzksNyBAQCB2b2lkIEJ5dGVjb2RlQmFzaWNCbG9jazo6c2hyaW5rVG9GaXQoKQogICAg
IG1fc3VjY2Vzc29ycy5zaHJpbmtUb0ZpdCgpOwogfQogCi1zdGF0aWMgYm9vbCBpc0JyYW5jaChP
cGNvZGVJRCBvcGNvZGVJRCkKK3N0YXRpYyBib29sIGlzQnJhbmNoKE9wY29kZUlEIG9wY29kZUlE
LCBCeXRlY29kZUFuYWx5c2lzTW9kZSBieXRlY29kZUFuYWx5c2lzTW9kZSkKIHsKICAgICBzd2l0
Y2ggKG9wY29kZUlEKSB7CiAgICAgY2FzZSBvcF9qbXA6CkBAIC01OCw4ICs1OSwxMSBAQCBzdGF0
aWMgYm9vbCBpc0JyYW5jaChPcGNvZGVJRCBvcGNvZGVJRCkKICAgICBjYXNlIG9wX3N3aXRjaF9p
bW06CiAgICAgY2FzZSBvcF9zd2l0Y2hfY2hhcjoKICAgICBjYXNlIG9wX3N3aXRjaF9zdHJpbmc6
Ci0gICAgY2FzZSBvcF9zYXZlOgogICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGNhc2Ugb3Bf
c2F2ZToKKyAgICAgICAgcmV0dXJuIGJ5dGVjb2RlQW5hbHlzaXNNb2RlID09IEJ5dGVjb2RlQW5h
bHlzaXNNb2RlOjpFeHRyYWN0R2VuZXJhdG9yTGl2ZUNhbGxlZUxvY2FsczsKKwogICAgIGRlZmF1
bHQ6CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBAIC0xMTAsMTAgKzExNCwyMSBAQCBz
dGF0aWMgdm9pZCBsaW5rQmxvY2tzKEJ5dGVjb2RlQmFzaWNCbG9jayogcHJlZGVjZXNzb3IsIEJ5
dGVjb2RlQmFzaWNCbG9jayogc3VjYwogICAgIHByZWRlY2Vzc29yLT5hZGRTdWNjZXNzb3Ioc3Vj
Y2Vzc29yKTsKIH0KIAotdm9pZCBjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2NrcyhDb2RlQmxvY2sq
IGNvZGVCbG9jaywgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYg
YmFzaWNCbG9ja3MpCitzdGF0aWMgT3Bjb2RlSUQgZ2V0T3Bjb2RlSUQoSW50ZXJwcmV0ZXIqIGlu
dGVycHJldGVyLCBjb25zdCBJbnN0cnVjdGlvbiYgaW5zdHJ1Y3Rpb24pCit7CisgICAgcmV0dXJu
IGludGVycHJldGVyLT5nZXRPcGNvZGVJRChpbnN0cnVjdGlvbi51Lm9wY29kZSk7Cit9CisKK3N0
YXRpYyBPcGNvZGVJRCBnZXRPcGNvZGVJRChJbnRlcnByZXRlciosIGNvbnN0IFVubGlua2VkSW5z
dHJ1Y3Rpb24mIGluc3RydWN0aW9uKQoreworICAgIHJldHVybiBpbnN0cnVjdGlvbi51Lm9wY29k
ZTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQmxvY2ssIHR5cGVuYW1lIEluc3RydWN0aW9uPgor
c3RhdGljIHZvaWQgY29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3NJbnRlcm5hbChCbG9jayogY29k
ZUJsb2NrLCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGluc3RydWN0
aW9uQ291bnQsIEJ5dGVjb2RlQW5hbHlzaXNNb2RlIGJ5dGVjb2RlQW5hbHlzaXNNb2RlLCBWZWN0
b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+JiBiYXNpY0Jsb2NrcykKIHsK
ICAgICBWZWN0b3I8dW5zaWduZWQsIDMyPiBqdW1wVGFyZ2V0czsKLSAgICBjb21wdXRlUHJlY2lz
ZUp1bXBUYXJnZXRzKGNvZGVCbG9jaywganVtcFRhcmdldHMpOworICAgIGNvbXB1dGVQcmVjaXNl
SnVtcFRhcmdldHMoY29kZUJsb2NrLCBieXRlY29kZUFuYWx5c2lzTW9kZSwgaW5zdHJ1Y3Rpb25z
QmVnaW4sIGluc3RydWN0aW9uQ291bnQsIGp1bXBUYXJnZXRzKTsKIAogICAgIC8vIENyZWF0ZSB0
aGUgZW50cnkgYW5kIGV4aXQgYmFzaWMgYmxvY2tzLgogICAgIGJhc2ljQmxvY2tzLnJlc2VydmVD
YXBhY2l0eShqdW1wVGFyZ2V0cy5zaXplKCkgKyAyKTsKQEAgLTEzMSwxMCArMTQ2LDggQEAgdm9p
ZCBjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2NrcyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgVmVjdG9y
PHN0ZDo6dW5pcXVlX3B0cjxCeXQKICAgICBib29sIG5leHRJbnN0cnVjdGlvbklzTGVhZGVyID0g
ZmFsc2U7CiAKICAgICBJbnRlcnByZXRlciogaW50ZXJwcmV0ZXIgPSBjb2RlQmxvY2stPnZtKCkt
PmludGVycHJldGVyOwotICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiA9IGNvZGVC
bG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsKLSAgICB1bnNpZ25lZCBpbnN0cnVjdGlvbkNv
dW50ID0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5zaXplKCk7CiAgICAgZm9yICh1bnNpZ25l
ZCBieXRlY29kZU9mZnNldCA9IDA7IGJ5dGVjb2RlT2Zmc2V0IDwgaW5zdHJ1Y3Rpb25Db3VudDsp
IHsKLSAgICAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQo
aW5zdHJ1Y3Rpb25zQmVnaW5bYnl0ZWNvZGVPZmZzZXRdLnUub3Bjb2RlKTsKKyAgICAgICAgT3Bj
b2RlSUQgb3Bjb2RlSUQgPSBnZXRPcGNvZGVJRChpbnRlcnByZXRlciwgaW5zdHJ1Y3Rpb25zQmVn
aW5bYnl0ZWNvZGVPZmZzZXRdKTsKICAgICAgICAgdW5zaWduZWQgb3Bjb2RlTGVuZ3RoID0gb3Bj
b2RlTGVuZ3Roc1tvcGNvZGVJRF07CiAKICAgICAgICAgYm9vbCBjcmVhdGVkQmxvY2sgPSBmYWxz
ZTsKQEAgLTE0OSw3ICsxNjIsNyBAQCB2b2lkIGNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzKENv
ZGVCbG9jayogY29kZUJsb2NrLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dAogICAgICAgICB9
CiAKICAgICAgICAgLy8gSWYgdGhlIGN1cnJlbnQgYnl0ZWNvZGUgaXMgYSBicmFuY2ggb3IgYSBy
ZXR1cm4sIHRoZW4gdGhlIG5leHQgaW5zdHJ1Y3Rpb24gaXMgdGhlIGxlYWRlciBvZiBpdHMgb3du
IGJhc2ljIGJsb2NrLgotICAgICAgICBpZiAoaXNCcmFuY2gob3Bjb2RlSUQpIHx8IGlzVGVybWlu
YWwob3Bjb2RlSUQpIHx8IGlzVGhyb3cob3Bjb2RlSUQpKQorICAgICAgICBpZiAoaXNCcmFuY2go
b3Bjb2RlSUQsIGJ5dGVjb2RlQW5hbHlzaXNNb2RlKSB8fCBpc1Rlcm1pbmFsKG9wY29kZUlEKSB8
fCBpc1Rocm93KG9wY29kZUlEKSkKICAgICAgICAgICAgIG5leHRJbnN0cnVjdGlvbklzTGVhZGVy
ID0gdHJ1ZTsKIAogICAgICAgICBpZiAoY3JlYXRlZEJsb2NrKQpAQCAtMTY5LDggKzE4Miw3IEBA
IHZvaWQgY29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFZl
Y3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0CiAKICAgICAgICAgYm9vbCBmYWxsc1Rocm91Z2ggPSB0
cnVlOyAKICAgICAgICAgZm9yICh1bnNpZ25lZCBieXRlY29kZU9mZnNldCA9IGJsb2NrLT5sZWFk
ZXJCeXRlY29kZU9mZnNldCgpOyBieXRlY29kZU9mZnNldCA8IGJsb2NrLT5sZWFkZXJCeXRlY29k
ZU9mZnNldCgpICsgYmxvY2stPnRvdGFsQnl0ZWNvZGVMZW5ndGgoKTspIHsKLSAgICAgICAgICAg
IGNvbnN0IEluc3RydWN0aW9uJiBjdXJyZW50SW5zdHJ1Y3Rpb24gPSBpbnN0cnVjdGlvbnNCZWdp
bltieXRlY29kZU9mZnNldF07Ci0gICAgICAgICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGludGVy
cHJldGVyLT5nZXRPcGNvZGVJRChjdXJyZW50SW5zdHJ1Y3Rpb24udS5vcGNvZGUpOworICAgICAg
ICAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBnZXRPcGNvZGVJRChpbnRlcnByZXRlciwgaW5zdHJ1
Y3Rpb25zQmVnaW5bYnl0ZWNvZGVPZmZzZXRdKTsKICAgICAgICAgICAgIHVuc2lnbmVkIG9wY29k
ZUxlbmd0aCA9IG9wY29kZUxlbmd0aHNbb3Bjb2RlSURdOwogICAgICAgICAgICAgLy8gSWYgd2Ug
Zm91bmQgYSB0ZXJtaW5hbCBieXRlY29kZSwgbGluayB0byB0aGUgZXhpdCBibG9jay4KICAgICAg
ICAgICAgIGlmIChpc1Rlcm1pbmFsKG9wY29kZUlEKSkgewpAQCAtMTg1LDcgKzE5Nyw3IEBAIHZv
aWQgY29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFZlY3Rv
cjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0CiAgICAgICAgICAgICAvLyBibG9jayBiZWNhdXNlIHRoZSBm
aW5hbGx5IGJsb2NrIHdpbGwgY3JlYXRlIGl0cyBvd24gY2F0Y2gsIHdoaWNoIHdpbGwgZ2VuZXJh
dGUgYSBIYW5kbGVySW5mby4KICAgICAgICAgICAgIGlmIChpc1Rocm93KG9wY29kZUlEKSkgewog
ICAgICAgICAgICAgICAgIEFTU0VSVChieXRlY29kZU9mZnNldCArIG9wY29kZUxlbmd0aCA9PSBi
bG9jay0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKSArIGJsb2NrLT50b3RhbEJ5dGVjb2RlTGVuZ3Ro
KCkpOwotICAgICAgICAgICAgICAgIEhhbmRsZXJJbmZvKiBoYW5kbGVyID0gY29kZUJsb2NrLT5o
YW5kbGVyRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpOworICAgICAgICAgICAgICAg
IGF1dG8qIGhhbmRsZXIgPSBjb2RlQmxvY2stPmhhbmRsZXJGb3JCeXRlY29kZU9mZnNldChieXRl
Y29kZU9mZnNldCk7CiAgICAgICAgICAgICAgICAgZmFsbHNUaHJvdWdoID0gZmFsc2U7CiAgICAg
ICAgICAgICAgICAgaWYgKCFoYW5kbGVyKSB7CiAgICAgICAgICAgICAgICAgICAgIGxpbmtCbG9j
a3MoYmxvY2ssIGV4aXQuZ2V0KCkpOwpAQCAtMjAyLDEwICsyMTQsMTAgQEAgdm9pZCBjb21wdXRl
Qnl0ZWNvZGVCYXNpY0Jsb2NrcyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgVmVjdG9yPHN0ZDo6dW5p
cXVlX3B0cjxCeXQKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgLy8gSWYgd2UgZm91bmQg
YSBicmFuY2gsIGxpbmsgdG8gdGhlIGJsb2NrKHMpIHRoYXQgd2UganVtcCB0by4KLSAgICAgICAg
ICAgIGlmIChpc0JyYW5jaChvcGNvZGVJRCkpIHsKKyAgICAgICAgICAgIGlmIChpc0JyYW5jaChv
cGNvZGVJRCwgYnl0ZWNvZGVBbmFseXNpc01vZGUpKSB7CiAgICAgICAgICAgICAgICAgQVNTRVJU
KGJ5dGVjb2RlT2Zmc2V0ICsgb3Bjb2RlTGVuZ3RoID09IGJsb2NrLT5sZWFkZXJCeXRlY29kZU9m
ZnNldCgpICsgYmxvY2stPnRvdGFsQnl0ZWNvZGVMZW5ndGgoKSk7CiAgICAgICAgICAgICAgICAg
VmVjdG9yPHVuc2lnbmVkLCAxPiBieXRlY29kZU9mZnNldHNKdW1wZWRUbzsKLSAgICAgICAgICAg
ICAgICBmaW5kSnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChjb2RlQmxvY2ssIGJ5dGVjb2Rl
T2Zmc2V0LCBieXRlY29kZU9mZnNldHNKdW1wZWRUbyk7CisgICAgICAgICAgICAgICAgZmluZEp1
bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoY29kZUJsb2NrLCBieXRlY29kZUFuYWx5c2lzTW9k
ZSwgaW5zdHJ1Y3Rpb25zQmVnaW4sIGJ5dGVjb2RlT2Zmc2V0LCBieXRlY29kZU9mZnNldHNKdW1w
ZWRUbyk7CiAKICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYmFzaWNC
bG9ja3Muc2l6ZSgpOyBpKyspIHsKICAgICAgICAgICAgICAgICAgICAgQnl0ZWNvZGVCYXNpY0Js
b2NrKiBvdGhlckJsb2NrID0gYmFzaWNCbG9ja3NbaV0uZ2V0KCk7CkBAIC0yMzUsNCArMjQ3LDE0
IEBAIHZvaWQgY29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MoQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0CiAgICAgICAgIGJhc2ljQmxvY2stPnNocmlua1Rv
Rml0KCk7CiB9CiAKK3ZvaWQgY29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MoQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgaW5zdHJ1
Y3Rpb25Db3VudCwgQnl0ZWNvZGVBbmFseXNpc01vZGUgYnl0ZWNvZGVBbmFseXNpc01vZGUsIFZl
Y3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mIGJhc2ljQmxvY2tzKQor
eworICAgIGNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzSW50ZXJuYWwoY29kZUJsb2NrLCBpbnN0
cnVjdGlvbnNCZWdpbiwgaW5zdHJ1Y3Rpb25Db3VudCwgYnl0ZWNvZGVBbmFseXNpc01vZGUsIGJh
c2ljQmxvY2tzKTsKK30KKwordm9pZCBjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2NrcyhVbmxpbmtl
ZENvZGVCbG9jayogY29kZUJsb2NrLCBVbmxpbmtlZEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNC
ZWdpbiwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCwgQnl0ZWNvZGVBbmFseXNpc01vZGUgYnl0
ZWNvZGVBbmFseXNpc01vZGUsIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Js
b2NrPj4mIGJhc2ljQmxvY2tzKQoreworICAgIGNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzSW50
ZXJuYWwoY29kZUJsb2NrLCBpbnN0cnVjdGlvbnNCZWdpbiwgaW5zdHJ1Y3Rpb25Db3VudCwgYnl0
ZWNvZGVBbmFseXNpc01vZGUsIGJhc2ljQmxvY2tzKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlND
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVCYXNp
Y0Jsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Js
b2NrLmgKaW5kZXggYmQ3ZDNhZTliYTM0M2UxYjA3MTc5ZTk4ZjFlZTg5ZGE2NWJhN2UyMC4uOWU2
ZWFjODZkNTNkM2ZlY2U0YWUwMmEzYWY0MzAyOGQ4ZWYxMzFjOCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suaApAQCAtMzUsNiAr
MzUsMTQgQEAKIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBDb2RlQmxvY2s7CitjbGFzcyBVbmxp
bmtlZENvZGVCbG9jazsKK2NsYXNzIEluc3RydWN0aW9uOworY2xhc3MgVW5saW5rZWRJbnN0cnVj
dGlvbjsKKworZW51bSBjbGFzcyBCeXRlY29kZUFuYWx5c2lzTW9kZSB7CisgICAgU3RhbmRhcmQs
CisgICAgRXh0cmFjdEdlbmVyYXRvckxpdmVDYWxsZWVMb2NhbHMKK307CiAKIGNsYXNzIEJ5dGVj
b2RlQmFzaWNCbG9jayB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC03MCw3ICs3
OCw4IEBAIGNsYXNzIEJ5dGVjb2RlQmFzaWNCbG9jayB7CiAgICAgRmFzdEJpdFZlY3RvciBtX291
dDsKIH07CiAKLXZvaWQgY29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MoQ29kZUJsb2NrKiwgVmVj
dG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYpOwordm9pZCBjb21wdXRl
Qnl0ZWNvZGVCYXNpY0Jsb2NrcyhDb2RlQmxvY2sqLCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25z
QmVnaW4sIHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQsIEJ5dGVjb2RlQW5hbHlzaXNNb2RlLCBW
ZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+Jik7Cit2b2lkIGNvbXB1
dGVCeXRlY29kZUJhc2ljQmxvY2tzKFVubGlua2VkQ29kZUJsb2NrKiwgVW5saW5rZWRJbnN0cnVj
dGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQsIEJ5dGVj
b2RlQW5hbHlzaXNNb2RlLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9j
az4+Jik7CiAKIGlubGluZSBCeXRlY29kZUJhc2ljQmxvY2s6OkJ5dGVjb2RlQmFzaWNCbG9jayh1
bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgbGVuZ3RoKQogICAgIDogbV9sZWFkZXJCeXRlY29kZU9m
ZnNldChzdGFydCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkyODA1MWEz
MjdlZjA2OWM2MThmMjBmZGRlZDhkYjc2ZjZkY2QyZWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3Bw
CkBAIC0wLDAgKzEsMzU1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IFl1c3VrZSBTdXp1
a2kgPHl1c3VrZS5zdXp1a2lAc3NsYWIuaWNzLmtlaW8uYWMuanA+CisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5oIgorCisjaW5jbHVkZSAiSW50ZXJwcmV0
ZXIuaCIKKyNpbmNsdWRlICJCeXRlY29kZVVzZURlZi5oIgorI2luY2x1ZGUgIlVubGlua2VkQ29k
ZUJsb2NrLmgiCisvLyAjaW5jbHVkZSAiQnl0ZWNvZGVJbnNlcnRpb25TZXQuaCIKKworbmFtZXNw
YWNlIEpTQyB7CisKK3N0YXRpYyBib29sIGlzVmFsaWRSZWdpc3RlckZvckxpdmVuZXNzKFVubGlu
a2VkQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGludCBvcGVyYW5kKQoreworICAgIGlmIChjb2RlQmxv
Y2stPmlzQ29uc3RhbnRSZWdpc3RlckluZGV4KG9wZXJhbmQpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgCisgICAgVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWcob3BlcmFuZCk7CisgICAg
cmV0dXJuIHZpcnR1YWxSZWcuaXNMb2NhbCgpOworfQorCitzdGF0aWMgdW5zaWduZWQgZ2V0TGVh
ZGVyT2Zmc2V0Rm9yQmFzaWNCbG9jayhzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2Nr
PiogYmFzaWNCbG9jaykKK3sKKyAgICByZXR1cm4gKCpiYXNpY0Jsb2NrKS0+bGVhZGVyQnl0ZWNv
ZGVPZmZzZXQoKTsKK30KKworc3RhdGljIEJ5dGVjb2RlQmFzaWNCbG9jayogZmluZEJhc2ljQmxv
Y2tXaXRoTGVhZGVyT2Zmc2V0KEJ5dGVjb2RlR3JhcGg8VW5saW5rZWRDb2RlQmxvY2s+JiBncmFw
aCwgdW5zaWduZWQgbGVhZGVyT2Zmc2V0KQoreworICAgIHJldHVybiAoKnRyeUJpbmFyeVNlYXJj
aDxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiwgdW5zaWduZWQ+KGdyYXBoLmJh
c2ljQmxvY2tzKCksIGdyYXBoLmJhc2ljQmxvY2tzKCkuc2l6ZSgpLCBsZWFkZXJPZmZzZXQsIGdl
dExlYWRlck9mZnNldEZvckJhc2ljQmxvY2spKS5nZXQoKTsKK30KKworc3RhdGljIGJvb2wgYmxv
Y2tDb250YWluc0J5dGVjb2RlT2Zmc2V0KEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2ssIHVuc2ln
bmVkIGJ5dGVjb2RlT2Zmc2V0KQoreworICAgIHVuc2lnbmVkIGxlYWRlck9mZnNldCA9IGJsb2Nr
LT5sZWFkZXJCeXRlY29kZU9mZnNldCgpOworICAgIHJldHVybiBieXRlY29kZU9mZnNldCA+PSBs
ZWFkZXJPZmZzZXQgJiYgYnl0ZWNvZGVPZmZzZXQgPCBsZWFkZXJPZmZzZXQgKyBibG9jay0+dG90
YWxCeXRlY29kZUxlbmd0aCgpOworfQorCitzdGF0aWMgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBmaW5k
QmFzaWNCbG9ja0ZvckJ5dGVjb2RlT2Zmc2V0KEJ5dGVjb2RlR3JhcGg8VW5saW5rZWRDb2RlQmxv
Y2s+JiBncmFwaCwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpCit7CisvKgorICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBiYXNpY0Jsb2Nrcy5zaXplKCk7IGkrKykgeworICAgICAgICBpZiAo
YmxvY2tDb250YWluc0J5dGVjb2RlT2Zmc2V0KGJhc2ljQmxvY2tzW2ldLmdldCgpLCBieXRlY29k
ZU9mZnNldCkpCisgICAgICAgICAgICByZXR1cm4gYmFzaWNCbG9ja3NbaV0uZ2V0KCk7CisgICAg
fQorICAgIHJldHVybiAwOworKi8KKyAgICBCeXRlY29kZUdyYXBoPFVubGlua2VkQ29kZUJsb2Nr
Pjo6QmFzaWNCbG9ja3NWZWN0b3ImIGJhc2ljQmxvY2tzID0gZ3JhcGguYmFzaWNCbG9ja3MoKTsK
KworICAgIHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+KiBiYXNpY0Jsb2NrID0g
YXBwcm94aW1hdGVCaW5hcnlTZWFyY2g8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9j
az4sIHVuc2lnbmVkPigKKyAgICAgICAgYmFzaWNCbG9ja3MsIGJhc2ljQmxvY2tzLnNpemUoKSwg
Ynl0ZWNvZGVPZmZzZXQsIGdldExlYWRlck9mZnNldEZvckJhc2ljQmxvY2spOworICAgIC8vIFdl
IGZvdW5kIHRoZSBibG9jayB3ZSB3ZXJlIGxvb2tpbmcgZm9yLgorICAgIGlmIChibG9ja0NvbnRh
aW5zQnl0ZWNvZGVPZmZzZXQoKCpiYXNpY0Jsb2NrKS5nZXQoKSwgYnl0ZWNvZGVPZmZzZXQpKQor
ICAgICAgICByZXR1cm4gKCpiYXNpY0Jsb2NrKS5nZXQoKTsKKworICAgIC8vIEJhc2ljIGJsb2Nr
IGlzIHRvIHRoZSBsZWZ0IG9mIHRoZSByZXR1cm5lZCBibG9jay4KKyAgICBpZiAoYnl0ZWNvZGVP
ZmZzZXQgPCAoKmJhc2ljQmxvY2spLT5sZWFkZXJCeXRlY29kZU9mZnNldCgpKSB7CisgICAgICAg
IEFTU0VSVChiYXNpY0Jsb2NrIC0gMSA+PSBiYXNpY0Jsb2Nrcy5kYXRhKCkpOworICAgICAgICBB
U1NFUlQoYmxvY2tDb250YWluc0J5dGVjb2RlT2Zmc2V0KGJhc2ljQmxvY2tbLTFdLmdldCgpLCBi
eXRlY29kZU9mZnNldCkpOworICAgICAgICByZXR1cm4gYmFzaWNCbG9ja1stMV0uZ2V0KCk7Cisg
ICAgfQorCisgICAgLy8gQmFzaWMgYmxvY2sgaXMgdG8gdGhlIHJpZ2h0IG9mIHRoZSByZXR1cm5l
ZCBibG9jay4KKyAgICBBU1NFUlQoJmJhc2ljQmxvY2tbMV0gPD0gJmJhc2ljQmxvY2tzLmxhc3Qo
KSk7CisgICAgQVNTRVJUKGJsb2NrQ29udGFpbnNCeXRlY29kZU9mZnNldChiYXNpY0Jsb2NrWzFd
LmdldCgpLCBieXRlY29kZU9mZnNldCkpOworICAgIHJldHVybiBiYXNpY0Jsb2NrWzFdLmdldCgp
OworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgordm9pZCBjb21wdXRlRGVmc0ZvckJ5
dGVjb2RlT2Zmc2V0KFVubGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2ssIE9wY29kZUlEIG9wY29k
ZUlELCBVbmxpbmtlZEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgQnl0ZWNvZGVCYXNpY0Jsb2Nr
KiBibG9jaywgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3Ip
Cit7CisgICAgVU5VU0VEX1BBUkFNKGJ5dGVjb2RlT2Zmc2V0KTsKKyAgICBzd2l0Y2ggKG9wY29k
ZUlEKSB7CisgICAgY2FzZSBvcF9zYXZlOgorICAgICAgICBicmVhazsKKworICAgIGNhc2Ugb3Bf
cmVzdW1lOiB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGJsb2NrLT5zdWNjZXNzb3JzKCkuc2l6
ZSgpID09IDEpOworICAgICAgICBibG9jay0+c3VjY2Vzc29ycygpWzBdLT5pbigpLmZvckVhY2hT
ZXRCaXQoWyZdKHVuc2lnbmVkIGxvY2FsKSB7CisgICAgICAgICAgICBmdW5jdG9yKGNvZGVCbG9j
aywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChsb2NhbCku
b2Zmc2V0KCkpOworICAgICAgICB9KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgZGVm
YXVsdDoKKyAgICAgICAgY29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChjb2RlQmxvY2ssIG9w
Y29kZUlELCBpbnN0cnVjdGlvbiwgZnVuY3Rvcik7CisgICAgICAgIGJyZWFrOworICAgIH0KK30K
KwordGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KK3ZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29k
ZU9mZnNldChVbmxpbmtlZENvZGVCbG9jayogY29kZUJsb2NrLCBPcGNvZGVJRCBvcGNvZGVJRCwg
VW5saW5rZWRJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxv
Y2ssIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQorewor
ICAgIGlmIChvcGNvZGVJRCAhPSBvcF9lbnRlciAmJiBjb2RlQmxvY2stPndhc0NvbXBpbGVkV2l0
aERlYnVnZ2luZ09wY29kZXMoKSAmJiBjb2RlQmxvY2stPnNjb3BlUmVnaXN0ZXIoKS5pc1ZhbGlk
KCkpCisgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGNv
ZGVCbG9jay0+c2NvcGVSZWdpc3RlcigpLm9mZnNldCgpKTsKKworICAgIHN3aXRjaCAob3Bjb2Rl
SUQpIHsKKyAgICBjYXNlIG9wX3NhdmU6IHsKKyAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGlu
c3RydWN0aW9uLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKTsKKyAgICAgICAg
dW5zaWduZWQgbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0ID0gYnl0ZWNvZGVPZmZzZXQgKyBpbnN0
cnVjdGlvblszXS51Lm9wZXJhbmQ7CisgICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogbWVyZ2VQ
b2ludEJsb2NrID0gbnVsbHB0cjsKKyAgICAgICAgZm9yIChCeXRlY29kZUJhc2ljQmxvY2sqIHN1
Y2Nlc3NvciA6IGJsb2NrLT5zdWNjZXNzb3JzKCkpIHsKKyAgICAgICAgICAgIGlmIChzdWNjZXNz
b3ItPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCkgPT0gbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0KSB7
CisgICAgICAgICAgICAgICAgbWVyZ2VQb2ludEJsb2NrID0gc3VjY2Vzc29yOworICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIEFTU0VSVCht
ZXJnZVBvaW50QmxvY2spOworICAgICAgICBtZXJnZVBvaW50QmxvY2stPmluKCkuZm9yRWFjaFNl
dEJpdChbJl0odW5zaWduZWQgbG9jYWwpIHsKKyAgICAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2Nr
LCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGxvY2FsKS5v
ZmZzZXQoKSk7CisgICAgICAgIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgY2Fz
ZSBvcF9yZXN1bWU6CisgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bj
b2RlSUQsIGluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CisgICAgICAgIHJldHVybjsKKworICAg
IGRlZmF1bHQ6CisgICAgICAgIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoY29kZUJsb2Nr
LCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb24sIGZ1bmN0b3IpOworICAgICAgICByZXR1cm47CisgICAg
fQorfQorCisvLyBTaW1wbGlmaWVkIGludGVyZmFjZSB0byBieXRlY29kZSB1c2UvZGVmLCB3aGlj
aCBkZXRlcm1pbmVzIGRlZnMgZmlyc3QgYW5kIHRoZW4gdXNlcywgYW5kIGluY2x1ZGVzCisvLyBl
eGNlcHRpb24gaGFuZGxlcnMgaW4gdGhlIHVzZXMuCit0ZW1wbGF0ZTx0eXBlbmFtZSBVc2VGdW5j
dG9yLCB0eXBlbmFtZSBEZWZGdW5jdG9yPgorc3RhdGljIHZvaWQgc3RlcE92ZXJJbnN0cnVjdGlv
bihVbmxpbmtlZENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2Nr
LCBCeXRlY29kZUdyYXBoPFVubGlua2VkQ29kZUJsb2NrPiYgZ3JhcGgsIHVuc2lnbmVkIGJ5dGVj
b2RlT2Zmc2V0LCBjb25zdCBVc2VGdW5jdG9yJiB1c2UsIGNvbnN0IERlZkZ1bmN0b3ImIGRlZikK
K3sKKyAgICAvLyBUaGlzIGFic3RyYWN0bHkgZXhlY3V0ZSB0aGUgaW5zdHJ1Y3Rpb24gaW4gcmV2
ZXJzZS4gSW5zdHJ1Y3Rpb25zIGxvZ2ljYWxseSBmaXJzdCB1c2Ugb3BlcmFuZHMgYW5kCisgICAg
Ly8gdGhlbiBkZWZpbmUgb3BlcmFuZHMuIFRoaXMgbG9naWNhbCBvcmRlcmluZyBpcyBuZWNlc3Nh
cnkgZm9yIG9wZXJhdGlvbnMgdGhhdCB1c2UgYW5kIGRlZiB0aGUgc2FtZQorICAgIC8vIG9wZXJh
bmQsIGxpa2U6CisgICAgLy8KKyAgICAvLyAgICAgb3BfYWRkIGxvYzEsIGxvYzEsIGxvYzIKKyAg
ICAvLworICAgIC8vIFRoZSB1c2Ugb2YgbG9jMSBoYXBwZW5zIGJlZm9yZSB0aGUgZGVmIG9mIGxv
YzEuIFRoYXQncyBhIHNlbWFudGljIHJlcXVpcmVtZW50IHNpbmNlIHRoZSBhZGQKKyAgICAvLyBv
cGVyYXRpb24gY2Fubm90IHRyYXZlbCBmb3J3YXJkIGluIHRpbWUgdG8gcmVhZCB0aGUgdmFsdWUg
dGhhdCBpdCB3aWxsIHByb2R1Y2UgYWZ0ZXIgcmVhZGluZyB0aGF0CisgICAgLy8gdmFsdWUuIFNp
bmNlIHdlIGFyZSBleGVjdXRpbmcgaW4gcmV2ZXJzZSwgdGhpcyBtZWFucyB0aGF0IHdlIG11c3Qg
ZG8gZGVmcyBiZWZvcmUgdXNlcyAocmV2ZXJzZSBvZgorICAgIC8vIHVzZXMgYmVmb3JlIGRlZnMp
LgorICAgIC8vCisgICAgLy8gU2luY2UgdGhpcyBpcyBhIGxpdmVuZXNzIGFuYWx5c2lzLCB0aGlz
IG9yZGVyaW5nIGVuZHMgdXAgYmVpbmcgcGFydGljdWxhcmx5IGltcG9ydGFudDogaWYgd2UgZGlk
CisgICAgLy8gdXNlcyBiZWZvcmUgZGVmcywgdGhlbiB0aGUgYWRkIG9wZXJhdGlvbiBhYm92ZSB3
b3VsZCBhcHBlYXIgdG8gbm90IGhhdmUgbG9jMSBsaXZlLCBzaW5jZSB3ZSdkCisgICAgLy8gZmly
c3QgYWRkIGl0IHRvIHRoZSBvdXQgc2V0ICh0aGUgdXNlKSwgYW5kIHRoZW4gd2UnZCByZW1vdmUg
aXQgKHRoZSBkZWYpLgorCisgICAgYXV0byYgaW5zdHJ1Y3Rpb25zID0gZ3JhcGguaW5zdHJ1Y3Rp
b25zKCk7CisgICAgVW5saW5rZWRJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSAmaW5zdHJ1Y3Rp
b25zW2J5dGVjb2RlT2Zmc2V0XTsKKyAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGluc3RydWN0aW9u
LT51Lm9wY29kZTsKKworICAgIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoCisgICAgICAg
IGNvZGVCbG9jaywgb3Bjb2RlSUQsIGluc3RydWN0aW9uLCBibG9jaywgYnl0ZWNvZGVPZmZzZXQs
CisgICAgICAgIFsmXSAoVW5saW5rZWRDb2RlQmxvY2sqIGNvZGVCbG9jaywgVW5saW5rZWRJbnN0
cnVjdGlvbiosIE9wY29kZUlELCBpbnQgb3BlcmFuZCkgeworICAgICAgICAgICAgaWYgKGlzVmFs
aWRSZWdpc3RlckZvckxpdmVuZXNzKGNvZGVCbG9jaywgb3BlcmFuZCkpCisgICAgICAgICAgICAg
ICAgZGVmKFZpcnR1YWxSZWdpc3RlcihvcGVyYW5kKS50b0xvY2FsKCkpOworICAgICAgICB9KTsK
KworICAgIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoCisgICAgICAgIGNvZGVCbG9jaywg
b3Bjb2RlSUQsIGluc3RydWN0aW9uLCBibG9jaywgYnl0ZWNvZGVPZmZzZXQsCisgICAgICAgIFsm
XSAoVW5saW5rZWRDb2RlQmxvY2sqIGNvZGVCbG9jaywgVW5saW5rZWRJbnN0cnVjdGlvbiosIE9w
Y29kZUlELCBpbnQgb3BlcmFuZCkgeworICAgICAgICAgICAgaWYgKGlzVmFsaWRSZWdpc3RlckZv
ckxpdmVuZXNzKGNvZGVCbG9jaywgb3BlcmFuZCkpCisgICAgICAgICAgICAgICAgdXNlKFZpcnR1
YWxSZWdpc3RlcihvcGVyYW5kKS50b0xvY2FsKCkpOworICAgICAgICB9KTsKKworICAgIC8vIElm
IHdlIGhhdmUgYW4gZXhjZXB0aW9uIGhhbmRsZXIsIHdlIHdhbnQgdGhlIGxpdmUtaW4gdmFyaWFi
bGVzIG9mIHRoZSAKKyAgICAvLyBleGNlcHRpb24gaGFuZGxlciBibG9jayB0byBiZSBpbmNsdWRl
ZCBpbiB0aGUgbGl2ZS1pbiBvZiB0aGlzIHBhcnRpY3VsYXIgYnl0ZWNvZGUuCisgICAgaWYgKFVu
bGlua2VkSGFuZGxlckluZm8qIGhhbmRsZXIgPSBjb2RlQmxvY2stPmhhbmRsZXJGb3JCeXRlY29k
ZU9mZnNldChieXRlY29kZU9mZnNldCkpIHsKKyAgICAgICAgaWYgKG9wY29kZUlEICE9IG9wX3Jl
c3VtZSkgeworICAgICAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBoYW5kbGVyQmxvY2sgPSBm
aW5kQmFzaWNCbG9ja1dpdGhMZWFkZXJPZmZzZXQoZ3JhcGgsIGhhbmRsZXItPnRhcmdldCk7Cisg
ICAgICAgICAgICBBU1NFUlQoaGFuZGxlckJsb2NrKTsKKyAgICAgICAgICAgIGhhbmRsZXJCbG9j
ay0+aW4oKS5mb3JFYWNoU2V0Qml0KHVzZSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3N0YXRp
YyB2b2lkIHN0ZXBPdmVySW5zdHJ1Y3Rpb24oVW5saW5rZWRDb2RlQmxvY2sqIGNvZGVCbG9jaywg
Qnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaywgQnl0ZWNvZGVHcmFwaDxVbmxpbmtlZENvZGVCbG9j
az4mIGdyYXBoLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgRmFzdEJpdFZlY3RvciYgb3V0KQor
eworICAgIHN0ZXBPdmVySW5zdHJ1Y3Rpb24oCisgICAgICAgIGNvZGVCbG9jaywgYmxvY2ssIGdy
YXBoLCBieXRlY29kZU9mZnNldCwKKyAgICAgICAgWyZdICh1bnNpZ25lZCBiaXRJbmRleCkgewor
ICAgICAgICAgICAgLy8gVGhpcyBpcyB0aGUgdXNlIGZ1bmN0b3IsIHNvIHdlIHNldCB0aGUgYml0
LgorICAgICAgICAgICAgb3V0LnNldChiaXRJbmRleCk7CisgICAgICAgIH0sCisgICAgICAgIFsm
XSAodW5zaWduZWQgYml0SW5kZXgpIHsKKyAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIGRlZiBm
dW5jdG9yLCBzbyB3ZSBjbGVhciB0aGUgYml0LgorICAgICAgICAgICAgb3V0LmNsZWFyKGJpdElu
ZGV4KTsKKyAgICAgICAgfSk7Cit9CisKK3N0YXRpYyB2b2lkIGNvbXB1dGVMb2NhbExpdmVuZXNz
Rm9yQnl0ZWNvZGVPZmZzZXQoVW5saW5rZWRDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVC
YXNpY0Jsb2NrKiBibG9jaywgQnl0ZWNvZGVHcmFwaDxVbmxpbmtlZENvZGVCbG9jaz4mIGdyYXBo
LCB1bnNpZ25lZCB0YXJnZXRPZmZzZXQsIEZhc3RCaXRWZWN0b3ImIHJlc3VsdCkKK3sKKyAgICBB
U1NFUlQoIWJsb2NrLT5pc0V4aXRCbG9jaygpKTsKKyAgICBBU1NFUlQoIWJsb2NrLT5pc0VudHJ5
QmxvY2soKSk7CisKKyAgICBGYXN0Qml0VmVjdG9yIG91dCA9IGJsb2NrLT5vdXQoKTsKKworICAg
IGZvciAoaW50IGkgPSBibG9jay0+Ynl0ZWNvZGVPZmZzZXRzKCkuc2l6ZSgpIC0gMTsgaSA+PSAw
OyBpLS0pIHsKKyAgICAgICAgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQgPSBibG9jay0+Ynl0ZWNv
ZGVPZmZzZXRzKClbaV07CisgICAgICAgIGlmICh0YXJnZXRPZmZzZXQgPiBieXRlY29kZU9mZnNl
dCkKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIHN0ZXBPdmVySW5zdHJ1Y3Rpb24oY29k
ZUJsb2NrLCBibG9jaywgZ3JhcGgsIGJ5dGVjb2RlT2Zmc2V0LCBvdXQpOworICAgIH0KKworICAg
IHJlc3VsdC5zZXQob3V0KTsKK30KKworc3RhdGljIHZvaWQgY29tcHV0ZUxvY2FsTGl2ZW5lc3NG
b3JCbG9jayhVbmxpbmtlZENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29kZUJhc2ljQmxvY2sq
IGJsb2NrLCBCeXRlY29kZUdyYXBoPFVubGlua2VkQ29kZUJsb2NrPiYgZ3JhcGgpCit7CisgICAg
aWYgKGJsb2NrLT5pc0V4aXRCbG9jaygpIHx8IGJsb2NrLT5pc0VudHJ5QmxvY2soKSkKKyAgICAg
ICAgcmV0dXJuOworICAgIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQnl0ZWNvZGVPZmZzZXQoY29k
ZUJsb2NrLCBibG9jaywgZ3JhcGgsIGJsb2NrLT5sZWFkZXJCeXRlY29kZU9mZnNldCgpLCBibG9j
ay0+aW4oKSk7Cit9CisKK2NsYXNzIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uIHsKK3B1Ymxp
YzoKKyAgICBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbihCeXRlY29kZUdyYXBoPFVubGlua2Vk
Q29kZUJsb2NrPiYgZ3JhcGgpCisgICAgICAgIDogbV9ncmFwaChncmFwaCkKKyAgICB7CisgICAg
fQorCisgICAgc3RydWN0IEdlbmVyYXRvclBvaW50cyB7CisgICAgICAgIHNpemVfdCBzYXZlUG9p
bnQ7CisgICAgICAgIHNpemVfdCBtZXJnZVBvaW50OworICAgICAgICBzaXplX3QgcmVzdW1lUG9p
bnQ7CisgICAgfTsKKworICAgIEZhc3RCaXRWZWN0b3IgZ2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29k
ZU9mZnNldCh1bnNpZ25lZCBieXRlY29kZU9mZnNldCkKKyAgICB7CisgICAgICAgIEJ5dGVjb2Rl
QmFzaWNCbG9jayogYmxvY2sgPSBmaW5kQmFzaWNCbG9ja0ZvckJ5dGVjb2RlT2Zmc2V0KG1fZ3Jh
cGgsIGJ5dGVjb2RlT2Zmc2V0KTsKKyAgICAgICAgQVNTRVJUKGJsb2NrKTsKKyAgICAgICAgQVNT
RVJUKCFibG9jay0+aXNFbnRyeUJsb2NrKCkpOworICAgICAgICBBU1NFUlQoIWJsb2NrLT5pc0V4
aXRCbG9jaygpKTsKKyAgICAgICAgRmFzdEJpdFZlY3RvciBvdXQ7CisgICAgICAgIG91dC5yZXNp
emUoYmxvY2stPm91dCgpLm51bUJpdHMoKSk7CisgICAgICAgIGNvbXB1dGVMb2NhbExpdmVuZXNz
Rm9yQnl0ZWNvZGVPZmZzZXQobV9ncmFwaC5jb2RlQmxvY2soKSwgYmxvY2ssIG1fZ3JhcGgsIGJ5
dGVjb2RlT2Zmc2V0LCBvdXQpOworICAgICAgICByZXR1cm4gb3V0OworICAgIH0KKworICAgIHZv
aWQgcnVuKCkKKyAgICB7CisgICAgICAgIHJ1bkxpdmVuZXNzQW5hbHlzaXMoKTsKKworICAgICAg
ICAvLyBXZSB3aWxsIGltcGxlbWVudCB0aGUgdHJhbnNmb3JtYXRpb24gdGhhdCBjaGFuZ2VzIG9w
X3NhdmUgLyBvcF9yZXN1bWUgdG8gc2NvcGUgb3BlcmF0aW9ucyBoZXJlLgorCisgICAgICAgIC8v
IEJvb2trZWVwIHRoZSBtZXJnZSBwb2ludCBieXRlY29kZSBvZmZzZXRzLgorICAgICAgICBWZWN0
b3I8R2VuZXJhdG9yUG9pbnRzPiBnZW5lcmF0b3JQb2ludHNWZWN0b3I7CisgICAgICAgIHVuc2ln
bmVkIG5ld0dlbmVyYXRvckZyYW1lSW5zdHJ1Y3Rpb25PZmZzZXQgPSAwOworICAgICAgICBmb3Ig
KHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+JiBibG9jayA6IG1fZ3JhcGguYmFz
aWNCbG9ja3MoKSkgeworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBieXRlY29kZU9mZnNldCA6
IGJsb2NrLT5ieXRlY29kZU9mZnNldHMoKSkgeworICAgICAgICAgICAgICAgIGNvbnN0IFVubGlu
a2VkSW5zdHJ1Y3Rpb24qIHBjID0gJm1fZ3JhcGguaW5zdHJ1Y3Rpb25zKClbYnl0ZWNvZGVPZmZz
ZXRdOworICAgICAgICAgICAgICAgIHN3aXRjaCAocGMtPnUub3Bjb2RlKSB7CisgICAgICAgICAg
ICAgICAgY2FzZSBvcF9zYXZlOiB7CisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxpdmVD
YWxsZWVMb2NhbHNJbmRleCA9IHBjWzJdLnUuaW5kZXg7CisgICAgICAgICAgICAgICAgICAgIGlu
dCBvZmZzZXQgPSBwY1szXS51Lm9wZXJhbmQ7CisgICAgICAgICAgICAgICAgICAgIGlmIChsaXZl
Q2FsbGVlTG9jYWxzSW5kZXggPj0gZ2VuZXJhdG9yUG9pbnRzVmVjdG9yLnNpemUoKSkKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvclBvaW50c1ZlY3Rvci5yZXNpemUobGl2ZUNhbGxl
ZUxvY2Fsc0luZGV4ICsgMSk7CisgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvclBvaW50c1Zl
Y3RvcltsaXZlQ2FsbGVlTG9jYWxzSW5kZXhdLnNhdmVQb2ludCA9IGJ5dGVjb2RlT2Zmc2V0Owor
ICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3JQb2ludHNWZWN0b3JbbGl2ZUNhbGxlZUxvY2Fs
c0luZGV4XS5tZXJnZVBvaW50ID0gYnl0ZWNvZGVPZmZzZXQgKyBvZmZzZXQ7CisgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGNh
c2Ugb3BfcmVzdW1lOiB7CisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxpdmVDYWxsZWVM
b2NhbHNJbmRleCA9IHBjWzJdLnUuaW5kZXg7CisgICAgICAgICAgICAgICAgICAgIGlmIChsaXZl
Q2FsbGVlTG9jYWxzSW5kZXggPj0gZ2VuZXJhdG9yUG9pbnRzVmVjdG9yLnNpemUoKSkKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvclBvaW50c1ZlY3Rvci5yZXNpemUobGl2ZUNhbGxl
ZUxvY2Fsc0luZGV4ICsgMSk7CisgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvclBvaW50c1Zl
Y3RvcltsaXZlQ2FsbGVlTG9jYWxzSW5kZXhdLnJlc3VtZVBvaW50ID0gYnl0ZWNvZGVPZmZzZXQ7
CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgICAgIGNhc2Ugb3BfbmV3X2dlbmVyYXRvcl9mcmFtZTogeworICAgICAgICAgICAgICAg
ICAgICBuZXdHZW5lcmF0b3JGcmFtZUluc3RydWN0aW9uT2Zmc2V0ID0gYnl0ZWNvZGVPZmZzZXQ7
CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8vIFBlcmZvcm0g
Ynl0ZWNvZGUgbGl2ZW5lc3MgYW5hbHlzaXMgdG8gZGV0ZXJtaW5lIHdoaWNoIGxvY2FscyBhcmUg
bGl2ZSBhbmQgc2hvdWxkIGJlIHJlc3VtZWQgd2hlbiBleGVjdXRpbmcgb3BfcmVzdW1lLgorICAg
ICAgICBVbmxpbmtlZENvZGVCbG9jayogY29kZUJsb2NrID0gbV9ncmFwaC5jb2RlQmxvY2soKTsK
KyAgICAgICAgdW5zaWduZWQgbWF4R2VuZXJhdG9yTG9jYWxzU2l6ZSA9IDA7CisgICAgICAgIGF1
dG8mIGxpdmVDYWxsZWVMb2NhbHNBdFlpZWxkID0gY29kZUJsb2NrLT5saXZlQ2FsbGVlTG9jYWxz
QXRZaWVsZCgpOworICAgICAgICBsaXZlQ2FsbGVlTG9jYWxzQXRZaWVsZC5ncm93KGdlbmVyYXRv
clBvaW50c1ZlY3Rvci5zaXplKCkpOworICAgICAgICBmb3IgKHNpemVfdCBsaXZlQ2FsbGVlTG9j
YWxzSW5kZXggPSAwOyBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPCBnZW5lcmF0b3JQb2ludHNWZWN0
b3Iuc2l6ZSgpOyArK2xpdmVDYWxsZWVMb2NhbHNJbmRleCkgeworICAgICAgICAgICAgY29uc3Qg
R2VuZXJhdG9yUG9pbnRzJiBwb2ludHMgPSBnZW5lcmF0b3JQb2ludHNWZWN0b3JbbGl2ZUNhbGxl
ZUxvY2Fsc0luZGV4XTsKKyAgICAgICAgICAgIHNpemVfdCBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZz
ZXQgPSBwb2ludHMubWVyZ2VQb2ludDsKKyAgICAgICAgICAgIEZhc3RCaXRWZWN0b3IgbGl2ZW5l
c3NWZWN0b3IgPSBnZXRMaXZlbmVzc0luZm9BdEJ5dGVjb2RlT2Zmc2V0KG1lcmdlUG9pbnRCeXRl
Y29kZU9mZnNldCk7CisgICAgICAgICAgICBsaXZlQ2FsbGVlTG9jYWxzQXRZaWVsZFtsaXZlQ2Fs
bGVlTG9jYWxzSW5kZXhdID0gbGl2ZW5lc3NWZWN0b3I7CisgICAgICAgICAgICBtYXhHZW5lcmF0
b3JMb2NhbHNTaXplID0gc3RkOjptYXg8dW5zaWduZWQ+KG1heEdlbmVyYXRvckxvY2Fsc1NpemUs
IGxpdmVuZXNzVmVjdG9yLmJpdENvdW50KCkpOworICAgICAgICB9CisgICAgICAgIC8vIEZpbGwg
b3BfbmV3X2dlbmVyYXRvcl9mcmFtZSdzIHNpemUuCisgICAgICAgIG1fZ3JhcGguaW5zdHJ1Y3Rp
b25zKClbbmV3R2VuZXJhdG9yRnJhbWVJbnN0cnVjdGlvbk9mZnNldCArIDJdLnUuaW5kZXggPSBt
YXhHZW5lcmF0b3JMb2NhbHNTaXplOworICAgIH0KKworICAgIHZvaWQgcnVuTGl2ZW5lc3NBbmFs
eXNpcygpCisgICAgeworICAgICAgICBVbmxpbmtlZENvZGVCbG9jayogdW5saW5rZWRDb2RlQmxv
Y2sgPSBtX2dyYXBoLmNvZGVCbG9jaygpOworICAgICAgICB1bnNpZ25lZCBudW1iZXJPZlZhcmlh
YmxlcyA9IHVubGlua2VkQ29kZUJsb2NrLT5tX251bUNhbGxlZUxvY2FsczsKKyAgICAgICAgZm9y
IChzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiYgYmxvY2sgOiBtX2dyYXBoLmJh
c2ljQmxvY2tzKCkpIHsKKyAgICAgICAgICAgIGJsb2NrLT5pbigpLnJlc2l6ZShudW1iZXJPZlZh
cmlhYmxlcyk7CisgICAgICAgICAgICBibG9jay0+b3V0KCkucmVzaXplKG51bWJlck9mVmFyaWFi
bGVzKTsKKyAgICAgICAgfQorCisgICAgICAgIGJvb2wgY2hhbmdlZDsKKyAgICAgICAgQnl0ZWNv
ZGVCYXNpY0Jsb2NrKiBsYXN0QmxvY2sgPSBtX2dyYXBoLmJhc2ljQmxvY2tzKCkubGFzdCgpLmdl
dCgpOworICAgICAgICBsYXN0QmxvY2stPmluKCkuY2xlYXJBbGwoKTsKKyAgICAgICAgbGFzdEJs
b2NrLT5vdXQoKS5jbGVhckFsbCgpOworICAgICAgICBGYXN0Qml0VmVjdG9yIG5ld091dDsKKyAg
ICAgICAgbmV3T3V0LnJlc2l6ZShsYXN0QmxvY2stPm91dCgpLm51bUJpdHMoKSk7CisgICAgICAg
IGRvIHsKKyAgICAgICAgICAgIGNoYW5nZWQgPSBmYWxzZTsKKyAgICAgICAgICAgIGZvciAoc3Rk
Ojp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4mIGJsb2NrIDogbV9ncmFwaC5iYXNpY0Js
b2Nrc0luUmV2ZXJzZU9yZGVyKCkpIHsKKyAgICAgICAgICAgICAgICBuZXdPdXQuY2xlYXJBbGwo
KTsKKyAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSAwOyBqIDwgYmxvY2stPnN1Y2Nl
c3NvcnMoKS5zaXplKCk7IGorKykKKyAgICAgICAgICAgICAgICAgICAgbmV3T3V0Lm1lcmdlKGJs
b2NrLT5zdWNjZXNzb3JzKClbal0tPmluKCkpOworICAgICAgICAgICAgICAgIGJvb2wgb3V0RGlk
Q2hhbmdlID0gYmxvY2stPm91dCgpLnNldEFuZENoZWNrKG5ld091dCk7CisgICAgICAgICAgICAg
ICAgY29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCbG9jayh1bmxpbmtlZENvZGVCbG9jaywgYmxvY2su
Z2V0KCksIG1fZ3JhcGgpOworICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gb3V0RGlkQ2hhbmdl
OworICAgICAgICAgICAgfQorICAgICAgICB9IHdoaWxlIChjaGFuZ2VkKTsKKyAgICB9CisKK3By
aXZhdGU6CisgICAgQnl0ZWNvZGVHcmFwaDxVbmxpbmtlZENvZGVCbG9jaz4mIG1fZ3JhcGg7Cit9
OworCit2b2lkIHBlcmZvcm1HZW5lcmF0b3JpZmljYXRpb24oQnl0ZWNvZGVHcmFwaDxVbmxpbmtl
ZENvZGVCbG9jaz4mIGdyYXBoKQoreworICAgIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uIHBh
c3MoZ3JhcGgpOworICAgIHBhc3MucnVuKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9y
aWZpY2F0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVHZW5l
cmF0b3JpZmljYXRpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODk4OTUxZWQwZWQ2OGY4YTMwOTY5MGJkZDZl
ZjFmMDY5ZmRkMTExCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmgKQEAgLTAsMCArMSwzNCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNiBZdXN1a2UgU3V6dWtpIDx5dXN1a2Uuc3V6dWtpQHNzbGFi
Lmljcy5rZWlvLmFjLmpwPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPEJ5
dGVjb2RlR3JhcGguaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK3ZvaWQgcGVyZm9ybUdlbmVyYXRv
cmlmaWNhdGlvbihCeXRlY29kZUdyYXBoPFVubGlua2VkQ29kZUJsb2NrPiYpOworCit9IC8vIG5h
bWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZUdyYXBoLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZUdyYXBoLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MDVlZDRjZWJmN2VhMmU4NTk0MDYxODliZGUxMjJmN2Iz
ODc4OTU1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlR3JhcGguY3BwCkBAIC0wLDAgKzEsMzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTYgWXVzdWtlIFN1enVraSA8eXVzdWtlLnN1enVraUBzc2xhYi5pY3Mua2Vpby5hYy5qcD4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkJ5dGVjb2RlR3JhcGgu
aCIKKworI2luY2x1ZGUgIkJ5dGVjb2RlQmFzaWNCbG9jay5oIgorCituYW1lc3BhY2UgSlNDIHsK
KworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUdyYXBoLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVHcmFwaC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMxMWQwZDM2MjA2ZjVmNjIxMzBmNWNlZjNh
MGJmNjcyOWY5ZmJkZTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQnl0ZWNvZGVHcmFwaC5oCkBAIC0wLDAgKzEsMTAyIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE2IFl1c3VrZSBTdXp1a2kgPHl1c3VrZS5zdXp1a2lAc3NsYWIuaWNzLmtlaW8u
YWMuanA+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQnl0ZWNvZGVHcmFwaF9oCisjZGVmaW5lIEJ5dGVj
b2RlR3JhcGhfaAorCisjaW5jbHVkZSAiQnl0ZWNvZGVCYXNpY0Jsb2NrLmgiCisjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgQnl0ZWNvZGVCYXNpY0Js
b2NrOworCit0ZW1wbGF0ZTx0eXBlbmFtZSBCbG9jaz4KK2NsYXNzIEJ5dGVjb2RlR3JhcGggewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEJ5
dGVjb2RlR3JhcGgpOworcHVibGljOgorICAgIHR5cGVkZWYgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0
cjxCeXRlY29kZUJhc2ljQmxvY2s+PiBCYXNpY0Jsb2Nrc1ZlY3RvcjsKKworICAgIGlubGluZSBC
eXRlY29kZUdyYXBoKEJsb2NrKiwgdHlwZW5hbWUgQmxvY2s6OlVucGFja2VkSW5zdHJ1Y3Rpb25z
JiwgQnl0ZWNvZGVBbmFseXNpc01vZGUpOworCisgICAgQnl0ZWNvZGVBbmFseXNpc01vZGUgYnl0
ZWNvZGVBbmFseXNpc01vZGUoKSBjb25zdCB7IHJldHVybiBtX2J5dGVjb2RlQW5hbHlzaXNNb2Rl
OyB9CisKKyAgICBCbG9jayogY29kZUJsb2NrKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2s7
IH0KKworICAgIEJhc2ljQmxvY2tzVmVjdG9yJiBiYXNpY0Jsb2NrcygpIHsgcmV0dXJuIG1fYmFz
aWNCbG9ja3M7IH0KKworICAgIHR5cGVuYW1lIEJsb2NrOjpVbnBhY2tlZEluc3RydWN0aW9ucyYg
aW5zdHJ1Y3Rpb25zKCkgeyByZXR1cm4gbV9pbnN0cnVjdGlvbnM7IH0KKworICAgIHRlbXBsYXRl
PHR5cGVuYW1lIEl0ZXJhdG9yPgorICAgIGNsYXNzIFJldmVyc2VJdGVyYWJsZSB7CisgICAgcHVi
bGljOgorICAgICAgICBSZXZlcnNlSXRlcmFibGUoSXRlcmF0b3IgYmVnaW4sIEl0ZXJhdG9yIGVu
ZCkKKyAgICAgICAgICAgIDogbV9iZWdpbihiZWdpbikKKyAgICAgICAgICAgICwgbV9lbmQoZW5k
KQorICAgICAgICB7CisgICAgICAgIH0KKworICAgICAgICBzdGQ6OnJldmVyc2VfaXRlcmF0b3I8
SXRlcmF0b3I+IGJlZ2luKCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6cmV2
ZXJzZV9pdGVyYXRvcjxJdGVyYXRvcj4obV9lbmQpOworICAgICAgICB9CisKKyAgICAgICAgc3Rk
OjpyZXZlcnNlX2l0ZXJhdG9yPEl0ZXJhdG9yPiBlbmQoKQorICAgICAgICB7CisgICAgICAgICAg
ICByZXR1cm4gc3RkOjpyZXZlcnNlX2l0ZXJhdG9yPEl0ZXJhdG9yPihtX2JlZ2luKTsKKyAgICAg
ICAgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgSXRlcmF0b3IgbV9iZWdpbjsKKyAgICAgICAg
SXRlcmF0b3IgbV9lbmQ7CisgICAgfTsKKworICAgIFJldmVyc2VJdGVyYWJsZTxCYXNpY0Jsb2Nr
c1ZlY3Rvcjo6aXRlcmF0b3I+IGJhc2ljQmxvY2tzSW5SZXZlcnNlT3JkZXIoKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIHsgbV9iYXNpY0Jsb2Nrcy5iZWdpbigpLCBtX2Jhc2ljQmxvY2tzLmVuZCgp
IH07CisgICAgfQorCitwcml2YXRlOgorICAgIEJsb2NrKiBtX2NvZGVCbG9jazsKKyAgICBCeXRl
Y29kZUFuYWx5c2lzTW9kZSBtX2J5dGVjb2RlQW5hbHlzaXNNb2RlOworICAgIEJhc2ljQmxvY2tz
VmVjdG9yIG1fYmFzaWNCbG9ja3M7CisgICAgdHlwZW5hbWUgQmxvY2s6OlVucGFja2VkSW5zdHJ1
Y3Rpb25zJiBtX2luc3RydWN0aW9uczsKK307CisKKwordGVtcGxhdGU8dHlwZW5hbWUgQmxvY2s+
CitCeXRlY29kZUdyYXBoPEJsb2NrPjo6Qnl0ZWNvZGVHcmFwaChCbG9jayogY29kZUJsb2NrLCB0
eXBlbmFtZSBCbG9jazo6VW5wYWNrZWRJbnN0cnVjdGlvbnMmIGluc3RydWN0aW9ucywgQnl0ZWNv
ZGVBbmFseXNpc01vZGUgYnl0ZWNvZGVBbmFseXNpc01vZGUpCisgICAgOiBtX2NvZGVCbG9jayhj
b2RlQmxvY2spCisgICAgLCBtX2J5dGVjb2RlQW5hbHlzaXNNb2RlKGJ5dGVjb2RlQW5hbHlzaXNN
b2RlKQorICAgICwgbV9pbnN0cnVjdGlvbnMoaW5zdHJ1Y3Rpb25zKQoreworICAgIEFTU0VSVCht
X2NvZGVCbG9jayk7CisgICAgY29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MobV9jb2RlQmxvY2ss
IGluc3RydWN0aW9ucy5iZWdpbigpLCBpbnN0cnVjdGlvbnMuc2l6ZSgpLCBtX2J5dGVjb2RlQW5h
bHlzaXNNb2RlLCBtX2Jhc2ljQmxvY2tzKTsKKyAgICBBU1NFUlQobV9iYXNpY0Jsb2Nrcy5zaXpl
KCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKyNlbmRpZiAvLyBCeXRlY29kZUdyYXBoX2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUluc2Vy
dGlvblNldC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW5zZXJ0
aW9uU2V0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMjRlOTUzYzYxOGI0MDg3ZDMxZjgyNWJiODE5Nzg2MjM4ZGRk
N2VlZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZUluc2VydGlvblNldC5oCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTYgWXVzdWtlIFN1enVraSA8eXVzdWtlLnN1enVraUBzc2xhYi5pY3Mua2Vpby5hYy5q
cD4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBCeXRlY29kZUluc2VydGlvblNldF9oCisjZGVmaW5lIEJ5
dGVjb2RlSW5zZXJ0aW9uU2V0X2gKKworbmFtZXNwYWNlIEpTQyB7CisKK3RlbXBsYXRlPHR5cGVu
YW1lIEdyYXBoPgorY2xhc3MgQnl0ZWNvZGVJbnNlcnRpb25TZXQgeworcHVibGljOgorICAgIEJ5
dGVjb2RlSW5zZXJ0aW9uU2V0KEdyYXBoJiBncmFwaCkKKyAgICAgICAgOiBtX2dyYXBoKGdyYXBo
KQorICAgIHsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgR3JhcGgmIG1fZ3JhcGg7CisgICAgVmVj
dG9yPEluc2VydGlvbiwgOD4gbV9pbnNlcnRpb25zOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlND
CisjZW5kaWYgLy8gQnl0ZWNvZGVJbnNlcnRpb25TZXRfaApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCmluZGV4IDg4YTdjNTIzMjA1NWMzOWI3
N2U5ZTJmNWM2OWFjZjFiNGNjZjY5YWIuLjU1NWVjMWJlYThjNGU5ZmQyYTNjMDQzYjAxMzQxNGMw
YTQwODc1ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZUxpc3QuanNvbgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVMaXN0Lmpzb24KQEAgLTE3LDYgKzE3LDcgQEAKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9w
X25ld19hcnJheV93aXRoX3NpemUiLCAibGVuZ3RoIiA6IDQgfSwKICAgICAgICAgICAgIHsgIm5h
bWUiIDogIm9wX25ld19hcnJheV9idWZmZXIiLCAibGVuZ3RoIiA6IDUgfSwKICAgICAgICAgICAg
IHsgIm5hbWUiIDogIm9wX25ld19yZWdleHAiLCAibGVuZ3RoIiA6IDMgfSwKKyAgICAgICAgICAg
IHsgIm5hbWUiIDogIm9wX25ld19nZW5lcmF0b3JfZnJhbWUiLCAibGVuZ3RoIiA6IDMgfSwKICAg
ICAgICAgICAgIHsgIm5hbWUiIDogIm9wX21vdiIsICJsZW5ndGgiIDogMyB9LAogICAgICAgICAg
ICAgeyAibmFtZSIgOiAib3Bfbm90IiwgImxlbmd0aCIgOiAzIH0sCiAgICAgICAgICAgICB7ICJu
YW1lIiA6ICJvcF9lcSIsICJsZW5ndGgiIDogNCB9LApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNwcAppbmRl
eCAxN2U4MmEyZmJiYTAxNTA0M2U5OWQzNGVkMjU2OTM3MmIzNmY3YTg1Li4wMzFiM2Y2Yzc5OTA0
OThhMGUyMTkxYzZmNTM4MDllNTVmMTE1MzBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNwcApAQCAt
MzUsMTAgKzM1LDkgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLUJ5dGVjb2RlTGl2ZW5lc3NBbmFs
eXNpczo6Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzKENvZGVCbG9jayogY29kZUJsb2NrKQotICAg
IDogbV9jb2RlQmxvY2soY29kZUJsb2NrKQorQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpCeXRl
Y29kZUxpdmVuZXNzQW5hbHlzaXMoQnl0ZWNvZGVHcmFwaDxDb2RlQmxvY2s+JiBncmFwaCkKKyAg
ICA6IG1fZ3JhcGgoZ3JhcGgpCiB7Ci0gICAgQVNTRVJUKG1fY29kZUJsb2NrKTsKICAgICBjb21w
dXRlKCk7CiB9CiAKQEAgLTU2LDkgKzU1LDkgQEAgc3RhdGljIHVuc2lnbmVkIGdldExlYWRlck9m
ZnNldEZvckJhc2ljQmxvY2soc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4KICAg
ICByZXR1cm4gKCpiYXNpY0Jsb2NrKS0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKTsKIH0KIAotc3Rh
dGljIEJ5dGVjb2RlQmFzaWNCbG9jayogZmluZEJhc2ljQmxvY2tXaXRoTGVhZGVyT2Zmc2V0KFZl
Y3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mIGJhc2ljQmxvY2tzLCB1
bnNpZ25lZCBsZWFkZXJPZmZzZXQpCitzdGF0aWMgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBmaW5kQmFz
aWNCbG9ja1dpdGhMZWFkZXJPZmZzZXQoQnl0ZWNvZGVHcmFwaDxDb2RlQmxvY2s+JiBncmFwaCwg
dW5zaWduZWQgbGVhZGVyT2Zmc2V0KQogewotICAgIHJldHVybiAoKnRyeUJpbmFyeVNlYXJjaDxz
dGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiwgdW5zaWduZWQ+KGJhc2ljQmxvY2tz
LCBiYXNpY0Jsb2Nrcy5zaXplKCksIGxlYWRlck9mZnNldCwgZ2V0TGVhZGVyT2Zmc2V0Rm9yQmFz
aWNCbG9jaykpLmdldCgpOworICAgIHJldHVybiAoKnRyeUJpbmFyeVNlYXJjaDxzdGQ6OnVuaXF1
ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiwgdW5zaWduZWQ+KGdyYXBoLmJhc2ljQmxvY2tzKCks
IGdyYXBoLmJhc2ljQmxvY2tzKCkuc2l6ZSgpLCBsZWFkZXJPZmZzZXQsIGdldExlYWRlck9mZnNl
dEZvckJhc2ljQmxvY2spKS5nZXQoKTsKIH0KIAogc3RhdGljIGJvb2wgYmxvY2tDb250YWluc0J5
dGVjb2RlT2Zmc2V0KEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2Rl
T2Zmc2V0KQpAQCAtNjcsNyArNjYsNyBAQCBzdGF0aWMgYm9vbCBibG9ja0NvbnRhaW5zQnl0ZWNv
ZGVPZmZzZXQoQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaywgdW5zaWduZWQgYnl0ZQogICAgIHJl
dHVybiBieXRlY29kZU9mZnNldCA+PSBsZWFkZXJPZmZzZXQgJiYgYnl0ZWNvZGVPZmZzZXQgPCBs
ZWFkZXJPZmZzZXQgKyBibG9jay0+dG90YWxCeXRlY29kZUxlbmd0aCgpOwogfQogCi1zdGF0aWMg
Qnl0ZWNvZGVCYXNpY0Jsb2NrKiBmaW5kQmFzaWNCbG9ja0ZvckJ5dGVjb2RlT2Zmc2V0KFZlY3Rv
cjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mIGJhc2ljQmxvY2tzLCB1bnNp
Z25lZCBieXRlY29kZU9mZnNldCkKK3N0YXRpYyBCeXRlY29kZUJhc2ljQmxvY2sqIGZpbmRCYXNp
Y0Jsb2NrRm9yQnl0ZWNvZGVPZmZzZXQoQnl0ZWNvZGVHcmFwaDxDb2RlQmxvY2s+JiBncmFwaCwg
dW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpCiB7CiAvKgogICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBiYXNpY0Jsb2Nrcy5zaXplKCk7IGkrKykgewpAQCAtNzYsNiArNzUsOCBAQCBzdGF0aWMg
Qnl0ZWNvZGVCYXNpY0Jsb2NrKiBmaW5kQmFzaWNCbG9ja0ZvckJ5dGVjb2RlT2Zmc2V0KFZlY3Rv
cjxzdGQ6OnVuaXF1ZV9wdAogICAgIH0KICAgICByZXR1cm4gMDsKICovCisgICAgQnl0ZWNvZGVH
cmFwaDxDb2RlQmxvY2s+OjpCYXNpY0Jsb2Nrc1ZlY3RvciYgYmFzaWNCbG9ja3MgPSBncmFwaC5i
YXNpY0Jsb2NrcygpOworCiAgICAgc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4q
IGJhc2ljQmxvY2sgPSBhcHByb3hpbWF0ZUJpbmFyeVNlYXJjaDxzdGQ6OnVuaXF1ZV9wdHI8Qnl0
ZWNvZGVCYXNpY0Jsb2NrPiwgdW5zaWduZWQ+KAogICAgICAgICBiYXNpY0Jsb2NrcywgYmFzaWNC
bG9ja3Muc2l6ZSgpLCBieXRlY29kZU9mZnNldCwgZ2V0TGVhZGVyT2Zmc2V0Rm9yQmFzaWNCbG9j
ayk7CiAgICAgLy8gV2UgZm91bmQgdGhlIGJsb2NrIHdlIHdlcmUgbG9va2luZyBmb3IuCkBAIC05
OCw3ICs5OSw3IEBAIHN0YXRpYyBCeXRlY29kZUJhc2ljQmxvY2sqIGZpbmRCYXNpY0Jsb2NrRm9y
Qnl0ZWNvZGVPZmZzZXQoVmVjdG9yPHN0ZDo6dW5pcXVlX3B0CiAvLyBTaW1wbGlmaWVkIGludGVy
ZmFjZSB0byBieXRlY29kZSB1c2UvZGVmLCB3aGljaCBkZXRlcm1pbmVzIGRlZnMgZmlyc3QgYW5k
IHRoZW4gdXNlcywgYW5kIGluY2x1ZGVzCiAvLyBleGNlcHRpb24gaGFuZGxlcnMgaW4gdGhlIHVz
ZXMuCiB0ZW1wbGF0ZTx0eXBlbmFtZSBVc2VGdW5jdG9yLCB0eXBlbmFtZSBEZWZGdW5jdG9yPgot
c3RhdGljIHZvaWQgc3RlcE92ZXJJbnN0cnVjdGlvbihDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0
ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaywgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJh
c2ljQmxvY2s+PiYgYmFzaWNCbG9ja3MsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBjb25zdCBV
c2VGdW5jdG9yJiB1c2UsIGNvbnN0IERlZkZ1bmN0b3ImIGRlZikKK3N0YXRpYyB2b2lkIHN0ZXBP
dmVySW5zdHJ1Y3Rpb24oQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlR3JhcGg8Q29kZUJs
b2NrPiYgZ3JhcGgsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBjb25zdCBVc2VGdW5jdG9yJiB1
c2UsIGNvbnN0IERlZkZ1bmN0b3ImIGRlZikKIHsKICAgICAvLyBUaGlzIGFic3RyYWN0bHkgZXhl
Y3V0ZSB0aGUgaW5zdHJ1Y3Rpb24gaW4gcmV2ZXJzZS4gSW5zdHJ1Y3Rpb25zIGxvZ2ljYWxseSBm
aXJzdCB1c2Ugb3BlcmFuZHMgYW5kCiAgICAgLy8gdGhlbiBkZWZpbmUgb3BlcmFuZHMuIFRoaXMg
bG9naWNhbCBvcmRlcmluZyBpcyBuZWNlc3NhcnkgZm9yIG9wZXJhdGlvbnMgdGhhdCB1c2UgYW5k
IGRlZiB0aGUgc2FtZQpAQCAtMTE2LDE0ICsxMTcsMTQgQEAgc3RhdGljIHZvaWQgc3RlcE92ZXJJ
bnN0cnVjdGlvbihDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9j
aywKICAgICAvLyBmaXJzdCBhZGQgaXQgdG8gdGhlIG91dCBzZXQgKHRoZSB1c2UpLCBhbmQgdGhl
biB3ZSdkIHJlbW92ZSBpdCAodGhlIGRlZikuCiAgICAgCiAgICAgY29tcHV0ZURlZnNGb3JCeXRl
Y29kZU9mZnNldCgKLSAgICAgICAgY29kZUJsb2NrLCBibG9jaywgYnl0ZWNvZGVPZmZzZXQsCisg
ICAgICAgIGNvZGVCbG9jaywgYnl0ZWNvZGVPZmZzZXQsCiAgICAgICAgIFsmXSAoQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIEluc3RydWN0aW9uKiwgT3Bjb2RlSUQsIGludCBvcGVyYW5kKSB7CiAgICAg
ICAgICAgICBpZiAoaXNWYWxpZFJlZ2lzdGVyRm9yTGl2ZW5lc3MoY29kZUJsb2NrLCBvcGVyYW5k
KSkKICAgICAgICAgICAgICAgICBkZWYoVmlydHVhbFJlZ2lzdGVyKG9wZXJhbmQpLnRvTG9jYWwo
KSk7CiAgICAgICAgIH0pOwogCiAgICAgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCgKLSAg
ICAgICAgY29kZUJsb2NrLCBibG9jaywgYnl0ZWNvZGVPZmZzZXQsCisgICAgICAgIGNvZGVCbG9j
aywgYnl0ZWNvZGVPZmZzZXQsCiAgICAgICAgIFsmXSAoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIElu
c3RydWN0aW9uKiwgT3Bjb2RlSUQsIGludCBvcGVyYW5kKSB7CiAgICAgICAgICAgICBpZiAoaXNW
YWxpZFJlZ2lzdGVyRm9yTGl2ZW5lc3MoY29kZUJsb2NrLCBvcGVyYW5kKSkKICAgICAgICAgICAg
ICAgICB1c2UoVmlydHVhbFJlZ2lzdGVyKG9wZXJhbmQpLnRvTG9jYWwoKSk7CkBAIC0xMzksMTcg
KzE0MCwxNyBAQCBzdGF0aWMgdm9pZCBzdGVwT3Zlckluc3RydWN0aW9uKENvZGVCbG9jayogY29k
ZUJsb2NrLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrLAogICAgICAgICBJbnN0cnVjdGlvbiog
aW5zdHJ1Y3Rpb24gPSAmaW5zdHJ1Y3Rpb25zQmVnaW5bYnl0ZWNvZGVPZmZzZXRdOwogICAgICAg
ICBPcGNvZGVJRCBvcGNvZGVJRCA9IGludGVycHJldGVyLT5nZXRPcGNvZGVJRChpbnN0cnVjdGlv
bi0+dS5vcGNvZGUpOwogICAgICAgICBpZiAob3Bjb2RlSUQgIT0gb3BfcmVzdW1lKSB7Ci0gICAg
ICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGhhbmRsZXJCbG9jayA9IGZpbmRCYXNpY0Jsb2Nr
V2l0aExlYWRlck9mZnNldChiYXNpY0Jsb2NrcywgaGFuZGxlci0+dGFyZ2V0KTsKKyAgICAgICAg
ICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogaGFuZGxlckJsb2NrID0gZmluZEJhc2ljQmxvY2tXaXRo
TGVhZGVyT2Zmc2V0KGdyYXBoLCBoYW5kbGVyLT50YXJnZXQpOwogICAgICAgICAgICAgQVNTRVJU
KGhhbmRsZXJCbG9jayk7CiAgICAgICAgICAgICBoYW5kbGVyQmxvY2stPmluKCkuZm9yRWFjaFNl
dEJpdCh1c2UpOwogICAgICAgICB9CiAgICAgfQogfQogCi1zdGF0aWMgdm9pZCBzdGVwT3Zlcklu
c3RydWN0aW9uKENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2Nr
LCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+JiBiYXNpY0Jsb2Nr
cywgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIEZhc3RCaXRWZWN0b3ImIG91dCkKK3N0YXRpYyB2
b2lkIHN0ZXBPdmVySW5zdHJ1Y3Rpb24oQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlR3Jh
cGg8Q29kZUJsb2NrPiYgZ3JhcGgsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBGYXN0Qml0VmVj
dG9yJiBvdXQpCiB7CiAgICAgc3RlcE92ZXJJbnN0cnVjdGlvbigKLSAgICAgICAgY29kZUJsb2Nr
LCBibG9jaywgYmFzaWNCbG9ja3MsIGJ5dGVjb2RlT2Zmc2V0LAorICAgICAgICBjb2RlQmxvY2ss
IGdyYXBoLCBieXRlY29kZU9mZnNldCwKICAgICAgICAgWyZdICh1bnNpZ25lZCBiaXRJbmRleCkg
ewogICAgICAgICAgICAgLy8gVGhpcyBpcyB0aGUgdXNlIGZ1bmN0b3IsIHNvIHdlIHNldCB0aGUg
Yml0LgogICAgICAgICAgICAgb3V0LnNldChiaXRJbmRleCk7CkBAIC0xNjAsNyArMTYxLDcgQEAg
c3RhdGljIHZvaWQgc3RlcE92ZXJJbnN0cnVjdGlvbihDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0
ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaywKICAgICAgICAgfSk7CiB9CiAKLXN0YXRpYyB2b2lkIGNv
bXB1dGVMb2NhbExpdmVuZXNzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2ssIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNv
ZGVCYXNpY0Jsb2NrPj4mIGJhc2ljQmxvY2tzLCB1bnNpZ25lZCB0YXJnZXRPZmZzZXQsIEZhc3RC
aXRWZWN0b3ImIHJlc3VsdCkKK3N0YXRpYyB2b2lkIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQnl0
ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxv
Y2ssIEJ5dGVjb2RlR3JhcGg8Q29kZUJsb2NrPiYgZ3JhcGgsIHVuc2lnbmVkIHRhcmdldE9mZnNl
dCwgRmFzdEJpdFZlY3RvciYgcmVzdWx0KQogewogICAgIEFTU0VSVCghYmxvY2stPmlzRXhpdEJs
b2NrKCkpOwogICAgIEFTU0VSVCghYmxvY2stPmlzRW50cnlCbG9jaygpKTsKQEAgLTE3Miw0NCAr
MTczLDQ0IEBAIHN0YXRpYyB2b2lkIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQnl0ZWNvZGVPZmZz
ZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlCiAgICAgICAgIGlmICh0YXJnZXRPZmZz
ZXQgPiBieXRlY29kZU9mZnNldCkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAKLSAgICAg
ICAgc3RlcE92ZXJJbnN0cnVjdGlvbihjb2RlQmxvY2ssIGJsb2NrLCBiYXNpY0Jsb2NrcywgYnl0
ZWNvZGVPZmZzZXQsIG91dCk7CisgICAgICAgIHN0ZXBPdmVySW5zdHJ1Y3Rpb24oY29kZUJsb2Nr
LCBncmFwaCwgYnl0ZWNvZGVPZmZzZXQsIG91dCk7CiAgICAgfQogCiAgICAgcmVzdWx0LnNldChv
dXQpOwogfQogCi1zdGF0aWMgdm9pZCBjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJsb2NrKENvZGVC
bG9jayogY29kZUJsb2NrLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrLCBWZWN0b3I8c3RkOjp1
bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+JiBiYXNpY0Jsb2NrcykKK3N0YXRpYyB2b2lk
IGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQmxvY2soQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVj
b2RlQmFzaWNCbG9jayogYmxvY2ssIEJ5dGVjb2RlR3JhcGg8Q29kZUJsb2NrPiYgZ3JhcGgpCiB7
CiAgICAgaWYgKGJsb2NrLT5pc0V4aXRCbG9jaygpIHx8IGJsb2NrLT5pc0VudHJ5QmxvY2soKSkK
ICAgICAgICAgcmV0dXJuOwotICAgIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQnl0ZWNvZGVPZmZz
ZXQoY29kZUJsb2NrLCBibG9jaywgYmFzaWNCbG9ja3MsIGJsb2NrLT5sZWFkZXJCeXRlY29kZU9m
ZnNldCgpLCBibG9jay0+aW4oKSk7CisgICAgY29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCeXRlY29k
ZU9mZnNldChjb2RlQmxvY2ssIGJsb2NrLCBncmFwaCwgYmxvY2stPmxlYWRlckJ5dGVjb2RlT2Zm
c2V0KCksIGJsb2NrLT5pbigpKTsKIH0KIAogdm9pZCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6
OnJ1bkxpdmVuZXNzRml4cG9pbnQoKQogewotICAgIFVubGlua2VkQ29kZUJsb2NrKiB1bmxpbmtl
ZENvZGVCbG9jayA9IG1fY29kZUJsb2NrLT51bmxpbmtlZENvZGVCbG9jaygpOworICAgIENvZGVC
bG9jayogY29kZUJsb2NrID0gbV9ncmFwaC5jb2RlQmxvY2soKTsKKyAgICBVbmxpbmtlZENvZGVC
bG9jayogdW5saW5rZWRDb2RlQmxvY2sgPSBjb2RlQmxvY2stPnVubGlua2VkQ29kZUJsb2NrKCk7
CiAgICAgdW5zaWduZWQgbnVtYmVyT2ZWYXJpYWJsZXMgPSB1bmxpbmtlZENvZGVCbG9jay0+bV9u
dW1DYWxsZWVMb2NhbHM7CiAKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9iYXNpY0Js
b2Nrcy5zaXplKCk7IGkrKykgewotICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrID0g
bV9iYXNpY0Jsb2Nrc1tpXS5nZXQoKTsKKyAgICBmb3IgKHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29k
ZUJhc2ljQmxvY2s+JiBibG9jayA6IG1fZ3JhcGguYmFzaWNCbG9ja3MoKSkgewogICAgICAgICBi
bG9jay0+aW4oKS5yZXNpemUobnVtYmVyT2ZWYXJpYWJsZXMpOwogICAgICAgICBibG9jay0+b3V0
KCkucmVzaXplKG51bWJlck9mVmFyaWFibGVzKTsKICAgICB9CiAKICAgICBib29sIGNoYW5nZWQ7
Ci0gICAgbV9iYXNpY0Jsb2Nrcy5sYXN0KCktPmluKCkuY2xlYXJBbGwoKTsKLSAgICBtX2Jhc2lj
QmxvY2tzLmxhc3QoKS0+b3V0KCkuY2xlYXJBbGwoKTsKKyAgICBCeXRlY29kZUJhc2ljQmxvY2sq
IGxhc3RCbG9jayA9IG1fZ3JhcGguYmFzaWNCbG9ja3MoKS5sYXN0KCkuZ2V0KCk7CisgICAgbGFz
dEJsb2NrLT5pbigpLmNsZWFyQWxsKCk7CisgICAgbGFzdEJsb2NrLT5vdXQoKS5jbGVhckFsbCgp
OwogICAgIEZhc3RCaXRWZWN0b3IgbmV3T3V0OwotICAgIG5ld091dC5yZXNpemUobV9iYXNpY0Js
b2Nrcy5sYXN0KCktPm91dCgpLm51bUJpdHMoKSk7CisgICAgbmV3T3V0LnJlc2l6ZShsYXN0Qmxv
Y2stPm91dCgpLm51bUJpdHMoKSk7CiAgICAgZG8gewogICAgICAgICBjaGFuZ2VkID0gZmFsc2U7
Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1fYmFzaWNCbG9ja3Muc2l6ZSgpIC0gMTsgaS0t
OykgewotICAgICAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jayA9IG1fYmFzaWNCbG9j
a3NbaV0uZ2V0KCk7CisgICAgICAgIGZvciAoc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNC
bG9jaz4mIGJsb2NrIDogbV9ncmFwaC5iYXNpY0Jsb2Nrc0luUmV2ZXJzZU9yZGVyKCkpIHsKICAg
ICAgICAgICAgIG5ld091dC5jbGVhckFsbCgpOwogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBq
ID0gMDsgaiA8IGJsb2NrLT5zdWNjZXNzb3JzKCkuc2l6ZSgpOyBqKyspCiAgICAgICAgICAgICAg
ICAgbmV3T3V0Lm1lcmdlKGJsb2NrLT5zdWNjZXNzb3JzKClbal0tPmluKCkpOwogICAgICAgICAg
ICAgYm9vbCBvdXREaWRDaGFuZ2UgPSBibG9jay0+b3V0KCkuc2V0QW5kQ2hlY2sobmV3T3V0KTsK
LSAgICAgICAgICAgIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQmxvY2sobV9jb2RlQmxvY2ssIGJs
b2NrLCBtX2Jhc2ljQmxvY2tzKTsKKyAgICAgICAgICAgIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9y
QmxvY2soY29kZUJsb2NrLCBibG9jay5nZXQoKSwgbV9ncmFwaCk7CiAgICAgICAgICAgICBjaGFu
Z2VkIHw9IG91dERpZENoYW5nZTsKICAgICAgICAgfQogICAgIH0gd2hpbGUgKGNoYW5nZWQpOwpA
QCAtMjE3LDEyICsyMTgsMTIgQEAgdm9pZCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OnJ1bkxp
dmVuZXNzRml4cG9pbnQoKQogCiB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Z2V0TGl2
ZW5lc3NJbmZvQXRCeXRlY29kZU9mZnNldCh1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgRmFzdEJp
dFZlY3RvciYgcmVzdWx0KQogewotICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2sgPSBmaW5k
QmFzaWNCbG9ja0ZvckJ5dGVjb2RlT2Zmc2V0KG1fYmFzaWNCbG9ja3MsIGJ5dGVjb2RlT2Zmc2V0
KTsKKyAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrID0gZmluZEJhc2ljQmxvY2tGb3JCeXRl
Y29kZU9mZnNldChtX2dyYXBoLCBieXRlY29kZU9mZnNldCk7CiAgICAgQVNTRVJUKGJsb2NrKTsK
ICAgICBBU1NFUlQoIWJsb2NrLT5pc0VudHJ5QmxvY2soKSk7CiAgICAgQVNTRVJUKCFibG9jay0+
aXNFeGl0QmxvY2soKSk7CiAgICAgcmVzdWx0LnJlc2l6ZShibG9jay0+b3V0KCkubnVtQml0cygp
KTsKLSAgICBjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJ5dGVjb2RlT2Zmc2V0KG1fY29kZUJsb2Nr
LCBibG9jaywgbV9iYXNpY0Jsb2NrcywgYnl0ZWNvZGVPZmZzZXQsIHJlc3VsdCk7CisgICAgY29t
cHV0ZUxvY2FsTGl2ZW5lc3NGb3JCeXRlY29kZU9mZnNldChtX2dyYXBoLmNvZGVCbG9jaygpLCBi
bG9jaywgbV9ncmFwaCwgYnl0ZWNvZGVPZmZzZXQsIHJlc3VsdCk7CiB9CiAKIGJvb2wgQnl0ZWNv
ZGVMaXZlbmVzc0FuYWx5c2lzOjpvcGVyYW5kSXNMaXZlQXRCeXRlY29kZU9mZnNldChpbnQgb3Bl
cmFuZCwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpCkBAIC0yNDQsMTEgKzI0NSwxMSBAQCBGYXN0
Qml0VmVjdG9yIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Z2V0TGl2ZW5lc3NJbmZvQXRCeXRl
Y29kZU9mZnNldCh1bnNpZ25lZAogdm9pZCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1
dGVGdWxsTGl2ZW5lc3MoRnVsbEJ5dGVjb2RlTGl2ZW5lc3MmIHJlc3VsdCkKIHsKICAgICBGYXN0
Qml0VmVjdG9yIG91dDsKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IG1fZ3JhcGguY29kZUJs
b2NrKCk7CiAgICAgCi0gICAgcmVzdWx0Lm1fbWFwLnJlc2l6ZShtX2NvZGVCbG9jay0+aW5zdHJ1
Y3Rpb25zKCkuc2l6ZSgpKTsKKyAgICByZXN1bHQubV9tYXAucmVzaXplKGNvZGVCbG9jay0+aW5z
dHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKICAgICAKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2Jhc2lj
QmxvY2tzLnNpemUoKTsgaS0tOykgewotICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2Nr
ID0gbV9iYXNpY0Jsb2Nrc1tpXS5nZXQoKTsKKyAgICBmb3IgKHN0ZDo6dW5pcXVlX3B0cjxCeXRl
Y29kZUJhc2ljQmxvY2s+JiBibG9jayA6IG1fZ3JhcGguYmFzaWNCbG9ja3NJblJldmVyc2VPcmRl
cigpKSB7CiAgICAgICAgIGlmIChibG9jay0+aXNFbnRyeUJsb2NrKCkgfHwgYmxvY2stPmlzRXhp
dEJsb2NrKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgCkBAIC0yNTYsNyArMjU3
LDcgQEAgdm9pZCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGVGdWxsTGl2ZW5lc3Mo
RnVsbEJ5dGVjb2RlTGl2ZW5lc3MmIHJlc3VsdCkKICAgICAgICAgCiAgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IGJsb2NrLT5ieXRlY29kZU9mZnNldHMoKS5zaXplKCk7IGktLTspIHsKICAgICAg
ICAgICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0ID0gYmxvY2stPmJ5dGVjb2RlT2Zmc2V0cygp
W2ldOwotICAgICAgICAgICAgc3RlcE92ZXJJbnN0cnVjdGlvbihtX2NvZGVCbG9jaywgYmxvY2ss
IG1fYmFzaWNCbG9ja3MsIGJ5dGVjb2RlT2Zmc2V0LCBvdXQpOworICAgICAgICAgICAgc3RlcE92
ZXJJbnN0cnVjdGlvbihjb2RlQmxvY2ssIG1fZ3JhcGgsIGJ5dGVjb2RlT2Zmc2V0LCBvdXQpOwog
ICAgICAgICAgICAgcmVzdWx0Lm1fbWFwW2J5dGVjb2RlT2Zmc2V0XSA9IG91dDsKICAgICAgICAg
fQogICAgIH0KQEAgLTI2NiwxMSArMjY3LDExIEBAIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5
c2lzOjpjb21wdXRlS2lsbHMoQnl0ZWNvZGVLaWxscyYgcmVzdWx0KQogewogICAgIEZhc3RCaXRW
ZWN0b3Igb3V0OwogICAgIAotICAgIHJlc3VsdC5tX2NvZGVCbG9jayA9IG1fY29kZUJsb2NrOwot
ICAgIHJlc3VsdC5tX2tpbGxTZXRzID0gc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZUtpbGxzOjpL
aWxsU2V0W10+KG1fY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5zaXplKCkpOworICAgIENvZGVC
bG9jayogY29kZUJsb2NrID0gbV9ncmFwaC5jb2RlQmxvY2soKTsKKyAgICByZXN1bHQubV9jb2Rl
QmxvY2sgPSBjb2RlQmxvY2s7CisgICAgcmVzdWx0Lm1fa2lsbFNldHMgPSBzdGQ6Om1ha2VfdW5p
cXVlPEJ5dGVjb2RlS2lsbHM6OktpbGxTZXRbXT4oY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5z
aXplKCkpOwogICAgIAotICAgIGZvciAodW5zaWduZWQgaSA9IG1fYmFzaWNCbG9ja3Muc2l6ZSgp
OyBpLS07KSB7Ci0gICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2sgPSBtX2Jhc2ljQmxv
Y2tzW2ldLmdldCgpOworICAgIGZvciAoc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9j
az4mIGJsb2NrIDogbV9ncmFwaC5iYXNpY0Jsb2Nrc0luUmV2ZXJzZU9yZGVyKCkpIHsKICAgICAg
ICAgaWYgKGJsb2NrLT5pc0VudHJ5QmxvY2soKSB8fCBibG9jay0+aXNFeGl0QmxvY2soKSkKICAg
ICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAKQEAgLTI3OSw3ICsyODAsNyBAQCB2b2lkIEJ5
dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0ZUtpbGxzKEJ5dGVjb2RlS2lsbHMmIHJlc3Vs
dCkKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gYmxvY2stPmJ5dGVjb2RlT2Zmc2V0cygpLnNp
emUoKTsgaS0tOykgewogICAgICAgICAgICAgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQgPSBibG9j
ay0+Ynl0ZWNvZGVPZmZzZXRzKClbaV07CiAgICAgICAgICAgICBzdGVwT3Zlckluc3RydWN0aW9u
KAotICAgICAgICAgICAgICAgIG1fY29kZUJsb2NrLCBibG9jaywgbV9iYXNpY0Jsb2NrcywgYnl0
ZWNvZGVPZmZzZXQsCisgICAgICAgICAgICAgICAgY29kZUJsb2NrLCBtX2dyYXBoLCBieXRlY29k
ZU9mZnNldCwKICAgICAgICAgICAgICAgICBbJl0gKHVuc2lnbmVkIGluZGV4KSB7CiAgICAgICAg
ICAgICAgICAgICAgIC8vIFRoaXMgaXMgZm9yIHVzZXMuCiAgICAgICAgICAgICAgICAgICAgIGlm
IChvdXQuZ2V0KGluZGV4KSkKQEAgLTI5NywxMiArMjk4LDEzIEBAIHZvaWQgQnl0ZWNvZGVMaXZl
bmVzc0FuYWx5c2lzOjpjb21wdXRlS2lsbHMoQnl0ZWNvZGVLaWxscyYgcmVzdWx0KQogCiB2b2lk
IEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6ZHVtcFJlc3VsdHMoKQogewotICAgIGRhdGFMb2co
IlxuRHVtcGluZyBieXRlY29kZSBsaXZlbmVzcyBmb3IgIiwgKm1fY29kZUJsb2NrLCAiOlxuIik7
Ci0gICAgSW50ZXJwcmV0ZXIqIGludGVycHJldGVyID0gbV9jb2RlQmxvY2stPnZtKCktPmludGVy
cHJldGVyOwotICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiA9IG1fY29kZUJsb2Nr
LT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBt
X2Jhc2ljQmxvY2tzLnNpemUoKTsgaSsrKSB7Ci0gICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9jayog
YmxvY2sgPSBtX2Jhc2ljQmxvY2tzW2ldLmdldCgpOwotICAgICAgICBkYXRhTG9nRigiXG5CeXRl
Y29kZSBiYXNpYyBibG9jayAldTogJXAgKG9mZnNldDogJXUsIGxlbmd0aDogJXUpXG4iLCBpLCBi
bG9jaywgYmxvY2stPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCksIGJsb2NrLT50b3RhbEJ5dGVjb2Rl
TGVuZ3RoKCkpOworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gbV9ncmFwaC5jb2RlQmxvY2so
KTsKKyAgICBkYXRhTG9nKCJcbkR1bXBpbmcgYnl0ZWNvZGUgbGl2ZW5lc3MgZm9yICIsICpjb2Rl
QmxvY2ssICI6XG4iKTsKKyAgICBJbnRlcnByZXRlciogaW50ZXJwcmV0ZXIgPSBjb2RlQmxvY2st
PnZtKCktPmludGVycHJldGVyOworICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiA9
IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsKKyAgICB1bnNpZ25lZCBpID0gMDsK
KyAgICBmb3IgKHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+JiBibG9jayA6IG1f
Z3JhcGguYmFzaWNCbG9ja3MoKSkgeworICAgICAgICBkYXRhTG9nRigiXG5CeXRlY29kZSBiYXNp
YyBibG9jayAldTogJXAgKG9mZnNldDogJXUsIGxlbmd0aDogJXUpXG4iLCBpKyssIGJsb2NrLmdl
dCgpLCBibG9jay0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKSwgYmxvY2stPnRvdGFsQnl0ZWNvZGVM
ZW5ndGgoKSk7CiAgICAgICAgIGRhdGFMb2dGKCJTdWNjZXNzb3JzOiAiKTsKICAgICAgICAgZm9y
ICh1bnNpZ25lZCBqID0gMDsgaiA8IGJsb2NrLT5zdWNjZXNzb3JzKCkuc2l6ZSgpOyBqKyspIHsK
ICAgICAgICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogc3VjY2Vzc29yID0gYmxvY2stPnN1Y2Nl
c3NvcnMoKVtqXTsKQEAgLTMxMCwxMSArMzEyLDExIEBAIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0Fu
YWx5c2lzOjpkdW1wUmVzdWx0cygpCiAgICAgICAgIH0KICAgICAgICAgZGF0YUxvZ0YoIlxuIik7
CiAgICAgICAgIGlmIChibG9jay0+aXNFbnRyeUJsb2NrKCkpIHsKLSAgICAgICAgICAgIGRhdGFM
b2dGKCJFbnRyeSBibG9jayAlcFxuIiwgYmxvY2spOworICAgICAgICAgICAgZGF0YUxvZ0YoIkVu
dHJ5IGJsb2NrICVwXG4iLCBibG9jay5nZXQoKSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgfQogICAgICAgICBpZiAoYmxvY2stPmlzRXhpdEJsb2NrKCkpIHsKLSAgICAgICAgICAg
IGRhdGFMb2dGKCJFeGl0IGJsb2NrOiAlcFxuIiwgYmxvY2spOworICAgICAgICAgICAgZGF0YUxv
Z0YoIkV4aXQgYmxvY2s6ICVwXG4iLCBibG9jay5nZXQoKSk7CiAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgfQogICAgICAgICBmb3IgKHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0ID0gYmxv
Y2stPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCk7IGJ5dGVjb2RlT2Zmc2V0IDwgYmxvY2stPmxlYWRl
ckJ5dGVjb2RlT2Zmc2V0KCkgKyBibG9jay0+dG90YWxCeXRlY29kZUxlbmd0aCgpOykgewpAQCAt
MzI3LDcgKzMyOSw3IEBAIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpkdW1wUmVzdWx0
cygpCiAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2dGKCIldSAiLCBqKTsKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIGRhdGFMb2dGKCJcbiIpOwotICAgICAgICAgICAgbV9jb2RlQmxvY2st
PmR1bXBCeXRlY29kZShXVEY6OmRhdGFGaWxlKCksIG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3Qo
KS0+Z2xvYmFsRXhlYygpLCBpbnN0cnVjdGlvbnNCZWdpbiwgY3VycmVudEluc3RydWN0aW9uKTsK
KyAgICAgICAgICAgIGNvZGVCbG9jay0+ZHVtcEJ5dGVjb2RlKFdURjo6ZGF0YUZpbGUoKSwgY29k
ZUJsb2NrLT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpLCBpbnN0cnVjdGlvbnNCZWdpbiwg
Y3VycmVudEluc3RydWN0aW9uKTsKIAogICAgICAgICAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBp
bnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25zQmVnaW5bYnl0ZWNvZGVPZmZzZXRd
LnUub3Bjb2RlKTsKICAgICAgICAgICAgIHVuc2lnbmVkIG9wY29kZUxlbmd0aCA9IG9wY29kZUxl
bmd0aHNbb3Bjb2RlSURdOwpAQCAtMzQ2LDggKzM0OCw2IEBAIHZvaWQgQnl0ZWNvZGVMaXZlbmVz
c0FuYWx5c2lzOjpkdW1wUmVzdWx0cygpCiAKIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lz
Ojpjb21wdXRlKCkKIHsKLSAgICBjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2NrcyhtX2NvZGVCbG9j
aywgbV9iYXNpY0Jsb2Nrcyk7Ci0gICAgQVNTRVJUKG1fYmFzaWNCbG9ja3Muc2l6ZSgpKTsKICAg
ICBydW5MaXZlbmVzc0ZpeHBvaW50KCk7CiAKICAgICBpZiAoT3B0aW9uczo6ZHVtcEJ5dGVjb2Rl
TGl2ZW5lc3NSZXN1bHRzKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmgKaW5kZXggZWNlMTZmMjFmMDE1MTBh
NjQyN2ZkODQxMTQwNzliZWQ4NzBjMDg3NS4uMDYwZTllYTg4NzAxMzgzNDFhYmFhYWIyZDM0OGE1
ZDVkNDMzZjcyYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuaApAQCAtMjcsNiArMjcsNyBAQAogI2RlZmlu
ZSBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNfaAogCiAjaW5jbHVkZSAiQnl0ZWNvZGVCYXNpY0Js
b2NrLmgiCisjaW5jbHVkZSAiQnl0ZWNvZGVHcmFwaC5oIgogI2luY2x1ZGUgPHd0Zi9GYXN0Qml0
VmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CkBAIC0zNCwxNCArMzUsMTMgQEAKIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBCeXRlY29k
ZUtpbGxzOwotY2xhc3MgQ29kZUJsb2NrOwogY2xhc3MgRnVsbEJ5dGVjb2RlTGl2ZW5lc3M7CiAK
IGNsYXNzIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcyB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lz
KTsKIHB1YmxpYzoKLSAgICBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMoQ29kZUJsb2NrKik7Cisg
ICAgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzKEJ5dGVjb2RlR3JhcGg8Q29kZUJsb2NrPiYpOwog
ICAgIAogICAgIGJvb2wgb3BlcmFuZElzTGl2ZUF0Qnl0ZWNvZGVPZmZzZXQoaW50IG9wZXJhbmQs
IHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KTsKICAgICBGYXN0Qml0VmVjdG9yIGdldExpdmVuZXNz
SW5mb0F0Qnl0ZWNvZGVPZmZzZXQodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpOwpAQCAtNTYsOCAr
NTYsNyBAQCBjbGFzcyBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMgewogCiAgICAgdm9pZCBnZXRM
aXZlbmVzc0luZm9BdEJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBGYXN0
Qml0VmVjdG9yJik7CiAKLSAgICBDb2RlQmxvY2sqIG1fY29kZUJsb2NrOwotICAgIFZlY3Rvcjxz
dGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4gbV9iYXNpY0Jsb2NrczsKKyAgICBC
eXRlY29kZUdyYXBoPENvZGVCbG9jaz4mIG1fZ3JhcGg7CiB9OwogCiBpbmxpbmUgYm9vbCBvcGVy
YW5kSXNBbHdheXNMaXZlKGludCBvcGVyYW5kKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKaW5kZXggOTgxZmIxZDBmZWMwNTcwNGQ1YjdmNjZl
YzQ0MTgyNTdlODNhYWMzNi4uMzVjM2Y2NDBkZDdiN2ZlODYzMmY1MDFiODRiNGJiNjY1NjgzNzY5
NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNl
RGVmLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVm
LmgKQEAgLTMwLDE4ICszMCw5IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi10ZW1wbGF0ZTx0eXBl
bmFtZSBGdW5jdG9yPgotdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAotICAgIENv
ZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrLCB1bnNpZ25lZCBi
eXRlY29kZU9mZnNldCwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikKK3RlbXBsYXRlPHR5cGVuYW1l
IEJsb2NrLCB0eXBlbmFtZSBGdW5jdG9yLCB0eXBlbmFtZSBJbnN0cnVjdGlvbj4KK3ZvaWQgY29t
cHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldChCbG9jayogY29kZUJsb2NrLCBPcGNvZGVJRCBvcGNv
ZGVJRCwgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQog
ewotICAgIEludGVycHJldGVyKiBpbnRlcnByZXRlciA9IGNvZGVCbG9jay0+dm0oKS0+aW50ZXJw
cmV0ZXI7Ci0gICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luID0gY29kZUJsb2NrLT5p
bnN0cnVjdGlvbnMoKS5iZWdpbigpOwotICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9ICZp
bnN0cnVjdGlvbnNCZWdpbltieXRlY29kZU9mZnNldF07Ci0gICAgT3Bjb2RlSUQgb3Bjb2RlSUQg
PSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb24tPnUub3Bjb2RlKTsKLQotICAg
IGlmIChvcGNvZGVJRCAhPSBvcF9lbnRlciAmJiBjb2RlQmxvY2stPndhc0NvbXBpbGVkV2l0aERl
YnVnZ2luZ09wY29kZXMoKSAmJiBjb2RlQmxvY2stPnNjb3BlUmVnaXN0ZXIoKS5pc1ZhbGlkKCkp
Ci0gICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGNvZGVC
bG9jay0+c2NvcGVSZWdpc3RlcigpLm9mZnNldCgpKTsKLQogICAgIHN3aXRjaCAob3Bjb2RlSUQp
IHsKICAgICAvLyBObyB1c2VzLgogICAgIGNhc2Ugb3BfbmV3X3JlZ2V4cDoKQEAgLTYwLDYgKzUx
LDcgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAogICAgIGNhc2Ugb3BfY3Jl
YXRlX2Nsb25lZF9hcmd1bWVudHM6CiAgICAgY2FzZSBvcF9nZXRfcmVzdF9sZW5ndGg6CiAgICAg
Y2FzZSBvcF93YXRjaGRvZzoKKyAgICBjYXNlIG9wX25ld19nZW5lcmF0b3JfZnJhbWU6CiAgICAg
ICAgIHJldHVybjsKICAgICBjYXNlIG9wX2Fzc2VydDoKICAgICBjYXNlIG9wX2dldF9zY29wZToK
QEAgLTc1LDggKzY3LDcgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAogICAg
IGNhc2Ugb3Bfam5lcV9udWxsOgogICAgIGNhc2Ugb3BfZGVjOgogICAgIGNhc2Ugb3BfaW5jOgot
ICAgIGNhc2Ugb3BfbG9nX3NoYWRvd19jaGlja2VuX3Byb2xvZ3VlOgotICAgIGNhc2Ugb3BfcmVz
dW1lOiB7CisgICAgY2FzZSBvcF9sb2dfc2hhZG93X2NoaWNrZW5fcHJvbG9ndWU6IHsKICAgICAg
ICAgQVNTRVJUKG9wY29kZUxlbmd0aHNbb3Bjb2RlSURdID4gMSk7CiAgICAgICAgIGZ1bmN0b3Io
Y29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzFdLnUub3BlcmFu
ZCk7CiAgICAgICAgIHJldHVybjsKQEAgLTI4NCwyMiArMjc1LDYgQEAgdm9pZCBjb21wdXRlVXNl
c0ZvckJ5dGVjb2RlT2Zmc2V0KAogICAgICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3Ry
dWN0aW9uLCBvcGNvZGVJRCwgbGFzdEFyZyArIGkpOwogICAgICAgICByZXR1cm47CiAgICAgfQot
ICAgIGNhc2Ugb3Bfc2F2ZTogewotICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rp
b24sIG9wY29kZUlELCBpbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOwotICAgICAgICB1bnNpZ25l
ZCBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXQgPSBieXRlY29kZU9mZnNldCArIGluc3RydWN0aW9u
WzNdLnUub3BlcmFuZDsKLSAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBtZXJnZVBvaW50Qmxv
Y2sgPSBudWxscHRyOwotICAgICAgICBmb3IgKEJ5dGVjb2RlQmFzaWNCbG9jayogc3VjY2Vzc29y
IDogYmxvY2stPnN1Y2Nlc3NvcnMoKSkgewotICAgICAgICAgICAgaWYgKHN1Y2Nlc3Nvci0+bGVh
ZGVyQnl0ZWNvZGVPZmZzZXQoKSA9PSBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXQpIHsKLSAgICAg
ICAgICAgICAgICBtZXJnZVBvaW50QmxvY2sgPSBzdWNjZXNzb3I7Ci0gICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgQVNTRVJUKG1lcmdlUG9p
bnRCbG9jayk7Ci0gICAgICAgIG1lcmdlUG9pbnRCbG9jay0+aW4oKS5mb3JFYWNoU2V0Qml0KFsm
XSh1bnNpZ25lZCBsb2NhbCkgewotICAgICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3Ry
dWN0aW9uLCBvcGNvZGVJRCwgdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwobG9jYWwpLm9mZnNldCgp
KTsKLSAgICAgICAgfSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CiAgICAgZGVmYXVsdDoKICAg
ICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgYnJlYWs7CkBAIC0z
MDcsMTIgKzI4Miw0MSBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoCiB9CiAK
IHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+Ci12b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVP
ZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2ssIHVu
c2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQordm9pZCBjb21w
dXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCB1bnNpZ25lZCBi
eXRlY29kZU9mZnNldCwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikKIHsKICAgICBJbnRlcnByZXRl
ciogaW50ZXJwcmV0ZXIgPSBjb2RlQmxvY2stPnZtKCktPmludGVycHJldGVyOwogICAgIEluc3Ry
dWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiA9IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVn
aW4oKTsKICAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSAmaW5zdHJ1Y3Rpb25zQmVnaW5b
Ynl0ZWNvZGVPZmZzZXRdOwogICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0ZXItPmdl
dE9wY29kZUlEKGluc3RydWN0aW9uLT51Lm9wY29kZSk7CisKKyAgICBpZiAob3Bjb2RlSUQgIT0g
b3BfZW50ZXIgJiYgY29kZUJsb2NrLT53YXNDb21waWxlZFdpdGhEZWJ1Z2dpbmdPcGNvZGVzKCkg
JiYgY29kZUJsb2NrLT5zY29wZVJlZ2lzdGVyKCkuaXNWYWxpZCgpKQorICAgICAgICBmdW5jdG9y
KGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBjb2RlQmxvY2stPnNjb3BlUmVnaXN0
ZXIoKS5vZmZzZXQoKSk7CisKKyAgICAvLyBGSVhNRTogVGhlc2Ugb3Bfc2F2ZSAvIG9wX3Jlc3Vt
ZSB3aWxsIGJlIHJlbW92ZWQuCisgICAgc3dpdGNoIChvcGNvZGVJRCkgeworICAgIGNhc2Ugb3Bf
c2F2ZTogeworICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlE
LCBpbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOworICAgICAgICB1bnNpZ25lZCBsaXZlQ2FsbGVl
TG9jYWxzSW5kZXggPSBpbnN0cnVjdGlvblsyXS51LnVuc2lnbmVkVmFsdWU7CisgICAgICAgIGNv
bnN0IEZhc3RCaXRWZWN0b3ImIGxpdmVuZXNzID0gY29kZUJsb2NrLT5saXZlQ2FsbGVlTG9jYWxz
QXRZaWVsZChsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpOworICAgICAgICBsaXZlbmVzcy5mb3JFYWNo
U2V0Qml0KFsmXSh1bnNpZ25lZCBsb2NhbCkgeworICAgICAgICAgICAgZnVuY3Rvcihjb2RlQmxv
Y2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwobG9jYWwp
Lm9mZnNldCgpKTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBj
YXNlIG9wX3Jlc3VtZToKKyAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBv
cGNvZGVJRCwgaW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKTsKKyAgICAgICAgcmV0dXJuOworCisg
ICAgZGVmYXVsdDoKKyAgICAgICAgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldChjb2RlQmxv
Y2ssIG9wY29kZUlELCBpbnN0cnVjdGlvbiwgZnVuY3Rvcik7CisgICAgICAgIHJldHVybjsKKyAg
ICB9Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIEJsb2NrLCB0eXBlbmFtZSBJbnN0cnVjdGlvbiwg
dHlwZW5hbWUgRnVuY3Rvcj4KK3ZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChCbG9j
ayogY29kZUJsb2NrLCBPcGNvZGVJRCBvcGNvZGVJRCwgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9u
LCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQorewogICAgIHN3aXRjaCAob3Bjb2RlSUQpIHsKICAg
ICAvLyBUaGVzZSBkb24ndCBkZWZpbmUgYW55dGhpbmcuCiAgICAgY2FzZSBvcF9jb3B5X3Jlc3Q6
CkBAIC0zMjAsNyArMzI0LDYgQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KENv
ZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2MKICAgICBjYXNlIG9w
X2VuZDoKICAgICBjYXNlIG9wX3Rocm93OgogICAgIGNhc2Ugb3BfdGhyb3dfc3RhdGljX2Vycm9y
OgotICAgIGNhc2Ugb3Bfc2F2ZToKICAgICBjYXNlIG9wX2Fzc2VydDoKICAgICBjYXNlIG9wX2Rl
YnVnOgogICAgIGNhc2Ugb3BfcmV0OgpAQCAtNDU5LDggKzQ2Miw5IEBAIHZvaWQgY29tcHV0ZURl
ZnNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Js
b2NrKiBibG9jCiAgICAgY2FzZSBvcF9kZWxfYnlfaWQ6CiAgICAgY2FzZSBvcF9kZWxfYnlfdmFs
OgogICAgIGNhc2Ugb3BfdW5zaWduZWQ6Ci0gICAgY2FzZSBvcF9nZXRfZnJvbV9hcmd1bWVudHM6
IAotICAgIGNhc2Ugb3BfZ2V0X3Jlc3RfbGVuZ3RoOiB7CisgICAgY2FzZSBvcF9nZXRfZnJvbV9h
cmd1bWVudHM6CisgICAgY2FzZSBvcF9nZXRfcmVzdF9sZW5ndGg6CisgICAgY2FzZSBvcF9uZXdf
Z2VuZXJhdG9yX2ZyYW1lOiB7CiAgICAgICAgIEFTU0VSVChvcGNvZGVMZW5ndGhzW29wY29kZUlE
XSA+IDEpOwogICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlE
LCBpbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOwogICAgICAgICByZXR1cm47CkBAIC00NzYsMTUg
KzQ4MCwzOCBAQCB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvYwogICAgICAgICAgICAgZnVuY3Rvcihj
b2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwo
aSkub2Zmc2V0KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQorICAgIGRlZmF1bHQ6CisgICAg
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9
Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+Cit2b2lkIGNvbXB1dGVEZWZzRm9yQnl0
ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0
LCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQoreworICAgIEludGVycHJldGVyKiBpbnRlcnByZXRl
ciA9IGNvZGVCbG9jay0+dm0oKS0+aW50ZXJwcmV0ZXI7CisgICAgSW5zdHJ1Y3Rpb24qIGluc3Ry
dWN0aW9uc0JlZ2luID0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpOworICAgIElu
c3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9ICZpbnN0cnVjdGlvbnNCZWdpbltieXRlY29kZU9mZnNl
dF07CisgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoaW5z
dHJ1Y3Rpb24tPnUub3Bjb2RlKTsKKworICAgIC8vIEZJWE1FOiBUaGVzZSBvcF9zYXZlIC8gb3Bf
cmVzdW1lIHdpbGwgYmUgcmVtb3ZlZC4KKyAgICBzd2l0Y2ggKG9wY29kZUlEKSB7CisgICAgLy8g
VGhlc2UgZG9uJ3QgZGVmaW5lIGFueXRoaW5nLgorICAgIGNhc2Ugb3Bfc2F2ZToKKyAgICAgICAg
cmV0dXJuOworCiAgICAgY2FzZSBvcF9yZXN1bWU6IHsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQo
YmxvY2stPnN1Y2Nlc3NvcnMoKS5zaXplKCkgPT0gMSk7Ci0gICAgICAgIC8vIEZJWE1FOiBUaGlz
IGlzIHJlYWxseSBkaXJ0eS4KLSAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE1OTI4MQotICAgICAgICBibG9jay0+c3VjY2Vzc29ycygpWzBdLT5pbigp
LmZvckVhY2hTZXRCaXQoWyZdKHVuc2lnbmVkIGxvY2FsKSB7CisgICAgICAgIHVuc2lnbmVkIGxp
dmVDYWxsZWVMb2NhbHNJbmRleCA9IGluc3RydWN0aW9uWzJdLnUudW5zaWduZWRWYWx1ZTsKKyAg
ICAgICAgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZW5lc3MgPSBjb2RlQmxvY2stPmxpdmVDYWxs
ZWVMb2NhbHNBdFlpZWxkKGxpdmVDYWxsZWVMb2NhbHNJbmRleCk7CisgICAgICAgIGxpdmVuZXNz
LmZvckVhY2hTZXRCaXQoWyZdKHVuc2lnbmVkIGxvY2FsKSB7CiAgICAgICAgICAgICBmdW5jdG9y
KGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2Nh
bChsb2NhbCkub2Zmc2V0KCkpOwogICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
KworICAgIGRlZmF1bHQ6CisgICAgICAgIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoY29k
ZUJsb2NrLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb24sIGZ1bmN0b3IpOworICAgICAgICByZXR1cm47
CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2su
Y3BwCmluZGV4IDgwMjk0ZDIxZDcxMTI4ZDY4NmFhMGU5MGM2YWFjZWYyOGI4MmNiNzkuLjUyOTk4
NDlmNmFiZjg2ODM0YzFiMjdhNzAyMzQ5ZGI3MGQyZDIxNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC0zMiw2ICszMiw3IEBACiAKICNpbmNs
dWRlICJCYXNpY0Jsb2NrTG9jYXRpb24uaCIKICNpbmNsdWRlICJCeXRlY29kZUdlbmVyYXRvci5o
IgorI2luY2x1ZGUgIkJ5dGVjb2RlR3JhcGguaCIKICNpbmNsdWRlICJCeXRlY29kZVVzZURlZi5o
IgogI2luY2x1ZGUgIkNhbGxMaW5rU3RhdHVzLmgiCiAjaW5jbHVkZSAiREZHQ2FwYWJpbGl0aWVz
LmgiCkBAIC0xNjYzLDMwICsxNjY0LDM3IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUo
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX3NhdmU6IHsK
LSAgICAgICAgICAgIGludCBnZW5lcmF0b3IgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAg
ICAgIGludCBmcmFtZSA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgdW5zaWduZWQg
bGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gKCsraXQpLT51LnVuc2lnbmVkVmFsdWU7CiAgICAgICAg
ICAgICBpbnQgb2Zmc2V0ID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBGYXN0Qml0
VmVjdG9yIGxpdmVuZXNzOwogICAgICAgICAgICAgaWYgKGxpdmVDYWxsZWVMb2NhbHNJbmRleCA8
IG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQuc2l6ZSgpKQogICAgICAgICAg
ICAgICAgIGxpdmVuZXNzID0gbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZFts
aXZlQ2FsbGVlTG9jYWxzSW5kZXhdOwogICAgICAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91
dCwgZXhlYywgbG9jYXRpb24sIGl0LCAic2F2ZSIpOwotICAgICAgICAgICAgb3V0LnByaW50Zigi
JXMsICIsIHJlZ2lzdGVyTmFtZShnZW5lcmF0b3IpLmRhdGEoKSk7CisgICAgICAgICAgICBvdXQu
cHJpbnRmKCIlcywgIiwgcmVnaXN0ZXJOYW1lKGZyYW1lKS5kYXRhKCkpOwogICAgICAgICAgICAg
bGl2ZW5lc3MuZHVtcChvdXQpOwogICAgICAgICAgICAgb3V0LnByaW50ZigiKEBsaXZlJTF1KSwg
JWQoLT4lZCkiLCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXgsIG9mZnNldCwgbG9jYXRpb24gKyBvZmZz
ZXQpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9yZXN1
bWU6IHsKLSAgICAgICAgICAgIGludCBnZW5lcmF0b3IgPSAoKytpdCktPnUub3BlcmFuZDsKKyAg
ICAgICAgICAgIGludCBmcmFtZSA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgdW5z
aWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gKCsraXQpLT51LnVuc2lnbmVkVmFsdWU7CiAg
ICAgICAgICAgICBGYXN0Qml0VmVjdG9yIGxpdmVuZXNzOwogICAgICAgICAgICAgaWYgKGxpdmVD
YWxsZWVMb2NhbHNJbmRleCA8IG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQu
c2l6ZSgpKQogICAgICAgICAgICAgICAgIGxpdmVuZXNzID0gbV9yYXJlRGF0YS0+bV9saXZlQ2Fs
bGVlTG9jYWxzQXRZaWVsZFtsaXZlQ2FsbGVlTG9jYWxzSW5kZXhdOwogICAgICAgICAgICAgcHJp
bnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAicmVzdW1lIik7Ci0gICAg
ICAgICAgICBvdXQucHJpbnRmKCIlcywgIiwgcmVnaXN0ZXJOYW1lKGdlbmVyYXRvcikuZGF0YSgp
KTsKKyAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAiLCByZWdpc3Rlck5hbWUoZnJhbWUpLmRh
dGEoKSk7CiAgICAgICAgICAgICBsaXZlbmVzcy5kdW1wKG91dCk7CiAgICAgICAgICAgICBvdXQu
cHJpbnRmKCIoQGxpdmUlMXUpIiwgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4KTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CisgICAgICAgIGNhc2Ugb3BfbmV3X2dlbmVyYXRvcl9mcmFtZTog
eworICAgICAgICAgICAgaW50IGRzdCA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAg
dW5zaWduZWQgZ2VuZXJhdG9yTG9jYWxzU2l6ZSA9ICgrK2l0KS0+dS51bnNpZ25lZFZhbHVlOwor
ICAgICAgICAgICAgcHJpbnRMb2NhdGlvbk9wQW5kUmVnaXN0ZXJPcGVyYW5kKG91dCwgZXhlYywg
bG9jYXRpb24sIGl0LCAibmV3X2dlbmVyYXRvcl9mcmFtZSIsIGRzdCk7CisgICAgICAgICAgICBv
dXQucHJpbnRmKCIgJXUiLCBnZW5lcmF0b3JMb2NhbHNTaXplKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfYXNzZXJ0OiB7CiAgICAgICAgICAgICBpbnQg
Y29uZGl0aW9uID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgbGluZSA9ICgr
K2l0KS0+dS5vcGVyYW5kOwpAQCAtMjAyMSw3ICsyMDI5LDcgQEAgdm9pZCBDb2RlQmxvY2s6OmZp
bmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBV
bmxpbmsKICAgICAgICAgICAgICAgICBVbmxpbmtlZFN0cmluZ0p1bXBUYWJsZTo6U3RyaW5nT2Zm
c2V0VGFibGU6Oml0ZXJhdG9yIGVuZCA9IHVubGlua2VkQ29kZUJsb2NrLT5zdHJpbmdTd2l0Y2hK
dW1wVGFibGUoaSkub2Zmc2V0VGFibGUuZW5kKCk7CiAgICAgICAgICAgICAgICAgZm9yICg7IHB0
ciAhPSBlbmQ7ICsrcHRyKSB7CiAgICAgICAgICAgICAgICAgICAgIE9mZnNldExvY2F0aW9uIG9m
ZnNldDsKLSAgICAgICAgICAgICAgICAgICAgb2Zmc2V0LmJyYW5jaE9mZnNldCA9IHB0ci0+dmFs
dWU7CisgICAgICAgICAgICAgICAgICAgIG9mZnNldC5icmFuY2hPZmZzZXQgPSBwdHItPnZhbHVl
LmJyYW5jaE9mZnNldDsKICAgICAgICAgICAgICAgICAgICAgbV9yYXJlRGF0YS0+bV9zdHJpbmdT
d2l0Y2hKdW1wVGFibGVzW2ldLm9mZnNldFRhYmxlLmFkZChwdHItPmtleSwgb2Zmc2V0KTsKICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CkBAIC0yMDM2LDYgKzIwNDQsOCBAQCB2b2lk
IENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25l
ckV4ZWN1dGFibGUsIFVubGluawogICAgICAgICAgICAgICAgIGRlc3RUYWJsZS5taW4gPSBzb3Vy
Y2VUYWJsZS5taW47CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KKworICAgICAgICBtX3JhcmVE
YXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkID0gdW5saW5rZWRDb2RlQmxvY2stPmxpdmVD
YWxsZWVMb2NhbHNBdFlpZWxkKCk7CiAgICAgfQogCiAgICAgLy8gQWxsb2NhdGUgbWV0YWRhdGEg
YnVmZmVycyBmb3IgdGhlIGJ5dGVjb2RlCkBAIC0yMDYxLDkgKzIwNzEsNiBAQCB2b2lkIENvZGVC
bG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1
dGFibGUsIFVubGluawogICAgIC8vIEJvb2trZWVwIHRoZSBzdHJvbmdseSByZWZlcmVuY2VkIG1v
ZHVsZSBlbnZpcm9ubWVudHMuCiAgICAgSGFzaFNldDxKU01vZHVsZUVudmlyb25tZW50Kj4gc3Ry
b25nbHlSZWZlcmVuY2VkTW9kdWxlRW52aXJvbm1lbnRzOwogCi0gICAgLy8gQm9va2tlZXAgdGhl
IG1lcmdlIHBvaW50IGJ5dGVjb2RlIG9mZnNldHMuCi0gICAgVmVjdG9yPHNpemVfdD4gbWVyZ2VQ
b2ludEJ5dGVjb2RlT2Zmc2V0czsKLQogICAgIFJlZkNvdW50ZWRBcnJheTxJbnN0cnVjdGlvbj4g
aW5zdHJ1Y3Rpb25zKGluc3RydWN0aW9uQ291bnQpOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgIWluc3RydWN0aW9uUmVhZGVyLmF0RW5kKCk7ICkgewpAQCAtMjM0NiwzOSArMjM1MywxNiBA
QCB2b2lkIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxl
KiBvd25lckV4ZWN1dGFibGUsIFVubGluawogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
IAotICAgICAgICBjYXNlIG9wX3NhdmU6IHsKLSAgICAgICAgICAgIHVuc2lnbmVkIGxpdmVDYWxs
ZWVMb2NhbHNJbmRleCA9IHBjWzJdLnUuaW5kZXg7Ci0gICAgICAgICAgICBpbnQgb2Zmc2V0ID0g
cGNbM10udS5vcGVyYW5kOwotICAgICAgICAgICAgaWYgKGxpdmVDYWxsZWVMb2NhbHNJbmRleCA+
PSBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXRzLnNpemUoKSkKLSAgICAgICAgICAgICAgICBtZXJn
ZVBvaW50Qnl0ZWNvZGVPZmZzZXRzLnJlc2l6ZShsaXZlQ2FsbGVlTG9jYWxzSW5kZXggKyAxKTsK
LSAgICAgICAgICAgIG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldHNbbGl2ZUNhbGxlZUxvY2Fsc0lu
ZGV4XSA9IGkgKyBvZmZzZXQ7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotCiAgICAg
ICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBpICs9
IG9wTGVuZ3RoOwogICAgIH0KIAotICAgIGlmICh2bS5jb250cm9sRmxvd1Byb2ZpbGVyKCkpCi0g
ICAgICAgIGluc2VydEJhc2ljQmxvY2tCb3VuZGFyaWVzRm9yQ29udHJvbEZsb3dQcm9maWxlcihp
bnN0cnVjdGlvbnMpOwotCiAgICAgbV9pbnN0cnVjdGlvbnMgPSBXVEZNb3ZlKGluc3RydWN0aW9u
cyk7CiAKLSAgICAvLyBQZXJmb3JtIGJ5dGVjb2RlIGxpdmVuZXNzIGFuYWx5c2lzIHRvIGRldGVy
bWluZSB3aGljaCBsb2NhbHMgYXJlIGxpdmUgYW5kIHNob3VsZCBiZSByZXN1bWVkIHdoZW4gZXhl
Y3V0aW5nIG9wX3Jlc3VtZS4KLSAgICBpZiAodW5saW5rZWRDb2RlQmxvY2stPnBhcnNlTW9kZSgp
ID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yQm9keU1vZGUpIHsKLSAgICAgICAgaWYgKHNp
emVfdCBjb3VudCA9IG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldHMuc2l6ZSgpKSB7Ci0gICAgICAg
ICAgICBjcmVhdGVSYXJlRGF0YUlmTmVjZXNzYXJ5KCk7Ci0gICAgICAgICAgICBCeXRlY29kZUxp
dmVuZXNzQW5hbHlzaXMgbGl2ZW5lc3ModGhpcyk7Ci0gICAgICAgICAgICBtX3JhcmVEYXRhLT5t
X2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkLmdyb3coY291bnQpOwotICAgICAgICAgICAgc2l6ZV90
IGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9IDA7Ci0gICAgICAgICAgICBmb3IgKHNpemVfdCBieXRl
Y29kZU9mZnNldCA6IG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldHMpIHsKLSAgICAgICAgICAgICAg
ICBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkW2xpdmVDYWxsZWVMb2NhbHNJ
bmRleF0gPSBsaXZlbmVzcy5nZXRMaXZlbmVzc0luZm9BdEJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2Rl
T2Zmc2V0KTsKLSAgICAgICAgICAgICAgICArK2xpdmVDYWxsZWVMb2NhbHNJbmRleDsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KKyAgICBpZiAodm0uY29udHJvbEZsb3dQcm9maWxl
cigpKQorICAgICAgICBpbnNlcnRCYXNpY0Jsb2NrQm91bmRhcmllc0ZvckNvbnRyb2xGbG93UHJv
ZmlsZXIobV9pbnN0cnVjdGlvbnMpOwogCiAgICAgLy8gU2V0IG9wdGltaXphdGlvbiB0aHJlc2hv
bGRzIG9ubHkgYWZ0ZXIgbV9pbnN0cnVjdGlvbnMgaXMgaW5pdGlhbGl6ZWQsIHNpbmNlIHRoZXNl
CiAgICAgLy8gcmVseSBvbiB0aGUgaW5zdHJ1Y3Rpb24gY291bnQgKGFuZCBhcmUgaW4gdGhlb3J5
IHBlcm1pdHRlZCB0byBhbHNvIGluc3BlY3QgdGhlCkBAIC00MjgzLDcgKzQyNjcsOCBAQCBWYWx1
ZVByb2ZpbGUqIENvZGVCbG9jazo6dmFsdWVQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoaW50IGJ5
dGVjb2RlT2Zmc2V0KQogCiB2b2lkIENvZGVCbG9jazo6dmFsaWRhdGUoKQogewotICAgIEJ5dGVj
b2RlTGl2ZW5lc3NBbmFseXNpcyBsaXZlbmVzcyh0aGlzKTsgLy8gQ29tcHV0ZSBkaXJlY3RseSBm
cm9tIHNjcmF0Y2ggc28gaXQgZG9lc24ndCBlZmZlY3QgQ29kZUJsb2NrIGZvb3RwcmludC4KKyAg
ICBCeXRlY29kZUdyYXBoPENvZGVCbG9jaz4gZ3JhcGgodGhpcywgaW5zdHJ1Y3Rpb25zKCksIEJ5
dGVjb2RlQW5hbHlzaXNNb2RlOjpTdGFuZGFyZCk7CisgICAgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5
c2lzIGxpdmVuZXNzKGdyYXBoKTsgLy8gQ29tcHV0ZSBkaXJlY3RseSBmcm9tIHNjcmF0Y2ggc28g
aXQgZG9lc24ndCBlZmZlY3QgQ29kZUJsb2NrIGZvb3RwcmludC4KICAgICAKICAgICBGYXN0Qml0
VmVjdG9yIGxpdmVBdEhlYWQgPSBsaXZlbmVzcy5nZXRMaXZlbmVzc0luZm9BdEJ5dGVjb2RlT2Zm
c2V0KDApOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5o
CmluZGV4IGZmODlmZDAzZDVlZjExMGIxNGE0ZTkzMjc5ZmRlYmNiNDQ5YTA2Y2QuLjk4MjcwNGI3
OGQ4ZjU3Yzc1OTI4NDhkYzc5MDllYTFkYjU2NWVhZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKQEAgLTIyMCwxMCArMjIwLDYgQEAgY2xhc3MgQ29kZUJs
b2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgICAgIHJldHVybiBpbmRleCA+PSBtX251bVZhcnM7
CiAgICAgfQogCi0gICAgZW51bSBjbGFzcyBSZXF1aXJlZEhhbmRsZXIgewotICAgICAgICBDYXRj
aEhhbmRsZXIsCi0gICAgICAgIEFueUhhbmRsZXIKLSAgICB9OwogICAgIEhhbmRsZXJJbmZvKiBo
YW5kbGVyRm9yQnl0ZWNvZGVPZmZzZXQodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIFJlcXVpcmVk
SGFuZGxlciA9IFJlcXVpcmVkSGFuZGxlcjo6QW55SGFuZGxlcik7CiAgICAgSGFuZGxlckluZm8q
IGhhbmRsZXJGb3JJbmRleCh1bnNpZ25lZCwgUmVxdWlyZWRIYW5kbGVyID0gUmVxdWlyZWRIYW5k
bGVyOjpBbnlIYW5kbGVyKTsKICAgICB2b2lkIHJlbW92ZUV4Y2VwdGlvbkhhbmRsZXJGb3JDYWxs
U2l0ZShDYWxsU2l0ZUluZGV4KTsKQEAgLTI5NSw2ICsyOTEsOCBAQCBjbGFzcyBDb2RlQmxvY2sg
OiBwdWJsaWMgSlNDZWxsIHsKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEluc3RydWN0aW9u
Kj4ocmV0dXJuQWRkcmVzcykgLSBpbnN0cnVjdGlvbnMoKS5iZWdpbigpOwogICAgIH0KIAorICAg
IHR5cGVkZWYgUmVmQ291bnRlZEFycmF5PEluc3RydWN0aW9uPiYgVW5wYWNrZWRJbnN0cnVjdGlv
bnM7CisKICAgICB1bnNpZ25lZCBudW1iZXJPZkluc3RydWN0aW9ucygpIGNvbnN0IHsgcmV0dXJu
IG1faW5zdHJ1Y3Rpb25zLnNpemUoKTsgfQogICAgIFJlZkNvdW50ZWRBcnJheTxJbnN0cnVjdGlv
bj4mIGluc3RydWN0aW9ucygpIHsgcmV0dXJuIG1faW5zdHJ1Y3Rpb25zOyB9CiAgICAgY29uc3Qg
UmVmQ291bnRlZEFycmF5PEluc3RydWN0aW9uPiYgaW5zdHJ1Y3Rpb25zKCkgY29uc3QgeyByZXR1
cm4gbV9pbnN0cnVjdGlvbnM7IH0KQEAgLTU4OCwxMiArNTg2LDE0IEBAIGNsYXNzIENvZGVCbG9j
ayA6IHB1YmxpYyBKU0NlbGwgewogICAgICAgICAgICAgaWYgKCEhbV9saXZlbmVzc0FuYWx5c2lz
KQogICAgICAgICAgICAgICAgIHJldHVybiAqbV9saXZlbmVzc0FuYWx5c2lzOwogICAgICAgICB9
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM+IGFuYWx5
c2lzID0KLSAgICAgICAgICAgIHN0ZDo6bWFrZV91bmlxdWU8Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5
c2lzPih0aGlzKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlR3JhcGg8Q29kZUJs
b2NrPj4gZ3JhcGggPSBzdGQ6Om1ha2VfdW5pcXVlPEJ5dGVjb2RlR3JhcGg8Q29kZUJsb2NrPj4o
dGhpcywgaW5zdHJ1Y3Rpb25zKCksIEJ5dGVjb2RlQW5hbHlzaXNNb2RlOjpTdGFuZGFyZCk7Cisg
ICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM+IGFuYWx5c2lz
ID0gc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM+KCpncmFwaCk7CiAg
ICAgICAgIHsKICAgICAgICAgICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKG1fbG9jayk7
Ci0gICAgICAgICAgICBpZiAoIW1fbGl2ZW5lc3NBbmFseXNpcykKKyAgICAgICAgICAgIGlmICgh
bV9saXZlbmVzc0FuYWx5c2lzKSB7CisgICAgICAgICAgICAgICAgbV9ieXRlY29kZUdyYXBoID0g
V1RGTW92ZShncmFwaCk7CiAgICAgICAgICAgICAgICAgbV9saXZlbmVzc0FuYWx5c2lzID0gV1RG
TW92ZShhbmFseXNpcyk7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gKm1fbGl2
ZW5lc3NBbmFseXNpczsKICAgICAgICAgfQogICAgIH0KQEAgLTEwNTYsNiArMTA1Niw3IEBAIGNs
YXNzIENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogCiAgICAgc3RkOjpjaHJvbm86OnN0ZWFk
eV9jbG9jazo6dGltZV9wb2ludCBtX2NyZWF0aW9uVGltZTsKIAorICAgIHN0ZDo6dW5pcXVlX3B0
cjxCeXRlY29kZUdyYXBoPENvZGVCbG9jaz4+IG1fYnl0ZWNvZGVHcmFwaDsKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzPiBtX2xpdmVuZXNzQW5hbHlzaXM7CiAK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmFyZURhdGE+IG1fcmFyZURhdGE7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSGFuZGxlckluZm8uaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9IYW5kbGVySW5mby5oCmluZGV4IGFjZGRhMDhlZDE0Y2JmOWYw
OTcxMjc1MDQwNWE0MTc0MWY3NmEyMTMuLjQyZDgxOGM4YWM0Y2NiYWVjYTYwNTVmMjZkNjdjM2I5
ZWMwYWU3YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9IYW5k
bGVySW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9IYW5kbGVySW5m
by5oCkBAIC05NSw2ICs5NSwxMSBAQCBzdHJ1Y3QgSGFuZGxlckluZm8gOiBwdWJsaWMgSGFuZGxl
ckluZm9CYXNlIHsKICNlbmRpZgogfTsKIAorZW51bSBjbGFzcyBSZXF1aXJlZEhhbmRsZXIgewor
ICAgIENhdGNoSGFuZGxlciwKKyAgICBBbnlIYW5kbGVyCit9OworCiB9IC8vIG5hbWVzcGFjZSBK
U0MKIAogI2VuZGlmIC8vIEhhbmRsZXJJbmZvX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHMuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5jcHAKaW5kZXggZTJjYjAwMDQ4Mzc5
NGJhOTJkNTEwZGNmNWZhOTk0ODg1YTIzZGMzZC4uNTY4ZTNiMDA3YmRmYWZmZWIzNzc5NWYyZDU3
Y2Y3NDRjYzdjYmI5ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1ByZWNpc2VKdW1wVGFyZ2V0cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5jcHAKQEAgLTMwLDEwICszMCwyMCBAQAogCiBuYW1lc3Bh
Y2UgSlNDIHsKIAotdGVtcGxhdGUgPHNpemVfdCB2ZWN0b3JTaXplPgotc3RhdGljIHZvaWQgZ2V0
SnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgSW50ZXJw
cmV0ZXIqIGludGVycHJldGVyLCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2ln
bmVkIGJ5dGVjb2RlT2Zmc2V0LCBWZWN0b3I8dW5zaWduZWQsIHZlY3RvclNpemU+JiBvdXQpCitz
dGF0aWMgT3Bjb2RlSUQgZ2V0T3Bjb2RlSUQoSW50ZXJwcmV0ZXIqIGludGVycHJldGVyLCBjb25z
dCBJbnN0cnVjdGlvbiYgaW5zdHJ1Y3Rpb24pCiB7Ci0gICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBp
bnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25zQmVnaW5bYnl0ZWNvZGVPZmZzZXRd
LnUub3Bjb2RlKTsKKyAgICByZXR1cm4gaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGluc3RydWN0
aW9uLnUub3Bjb2RlKTsKK30KKworc3RhdGljIE9wY29kZUlEIGdldE9wY29kZUlEKEludGVycHJl
dGVyKiwgY29uc3QgVW5saW5rZWRJbnN0cnVjdGlvbiYgaW5zdHJ1Y3Rpb24pCit7CisgICAgcmV0
dXJuIGluc3RydWN0aW9uLnUub3Bjb2RlOworfQorCit0ZW1wbGF0ZSA8c2l6ZV90IHZlY3RvclNp
emUsIHR5cGVuYW1lIEJsb2NrLCB0eXBlbmFtZSBJbnN0cnVjdGlvbj4KK3N0YXRpYyB2b2lkIGdl
dEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVB
bmFseXNpc01vZGUgYnl0ZWNvZGVBbmFseXNpc01vZGUsIEludGVycHJldGVyKiBpbnRlcnByZXRl
ciwgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBieXRlY29kZU9mZnNl
dCwgVmVjdG9yPHVuc2lnbmVkLCB2ZWN0b3JTaXplPiYgb3V0KQoreworICAgIE9wY29kZUlEIG9w
Y29kZUlEID0gZ2V0T3Bjb2RlSUQoaW50ZXJwcmV0ZXIsIGluc3RydWN0aW9uc0JlZ2luW2J5dGVj
b2RlT2Zmc2V0XSk7CiAgICAgSW5zdHJ1Y3Rpb24qIGN1cnJlbnQgPSBpbnN0cnVjdGlvbnNCZWdp
biArIGJ5dGVjb2RlT2Zmc2V0OwogICAgIHN3aXRjaCAob3Bjb2RlSUQpIHsKICAgICBjYXNlIG9w
X2ptcDoKQEAgLTU0LDIxICs2NCwyNiBAQCBzdGF0aWMgdm9pZCBnZXRKdW1wVGFyZ2V0c0ZvckJ5
dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBJbnRlcnByZXRlciogaQogICAgIGNh
c2Ugb3Bfam5sZXNzZXE6CiAgICAgY2FzZSBvcF9qbmdyZWF0ZXI6CiAgICAgY2FzZSBvcF9qbmdy
ZWF0ZXJlcToKLSAgICBjYXNlIG9wX3NhdmU6IC8vIFRoZSBqdW1wIG9mIG9wX3NhdmUgaXMgcHVy
ZWx5IGZvciBjYWxjdWxhdGluZyBsaXZlbmVzcy4KICAgICAgICAgb3V0LmFwcGVuZChieXRlY29k
ZU9mZnNldCArIGN1cnJlbnRbM10udS5vcGVyYW5kKTsKICAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBvcF9zYXZlOiB7CisgICAgICAgIC8vIFRoZSBqdW1wIG9mIG9wX3NhdmUgdW5kZXIgRXh0cmFj
dEdlbmVyYXRvckxpdmVDYWxsZWVMb2NhbHMgbW9kZSBpcyBwdXJlbHkgZm9yIGNhbGN1bGF0aW5n
IGxpdmVuZXNzLgorICAgICAgICBpZiAoYnl0ZWNvZGVBbmFseXNpc01vZGUgPT0gQnl0ZWNvZGVB
bmFseXNpc01vZGU6OkV4dHJhY3RHZW5lcmF0b3JMaXZlQ2FsbGVlTG9jYWxzKQorICAgICAgICAg
ICAgb3V0LmFwcGVuZChieXRlY29kZU9mZnNldCArIGN1cnJlbnRbM10udS5vcGVyYW5kKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgfQogICAgIGNhc2Ugb3Bfc3dpdGNoX2ltbToKICAgICBjYXNlIG9w
X3N3aXRjaF9jaGFyOiB7Ci0gICAgICAgIFNpbXBsZUp1bXBUYWJsZSYgdGFibGUgPSBjb2RlQmxv
Y2stPnN3aXRjaEp1bXBUYWJsZShjdXJyZW50WzFdLnUub3BlcmFuZCk7CisgICAgICAgIGF1dG8m
IHRhYmxlID0gY29kZUJsb2NrLT5zd2l0Y2hKdW1wVGFibGUoY3VycmVudFsxXS51Lm9wZXJhbmQp
OwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSB0YWJsZS5icmFuY2hPZmZzZXRzLnNpemUoKTsg
aS0tOykKICAgICAgICAgICAgIG91dC5hcHBlbmQoYnl0ZWNvZGVPZmZzZXQgKyB0YWJsZS5icmFu
Y2hPZmZzZXRzW2ldKTsKICAgICAgICAgb3V0LmFwcGVuZChieXRlY29kZU9mZnNldCArIGN1cnJl
bnRbMl0udS5vcGVyYW5kKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2Ugb3Bfc3dp
dGNoX3N0cmluZzogewotICAgICAgICBTdHJpbmdKdW1wVGFibGUmIHRhYmxlID0gY29kZUJsb2Nr
LT5zdHJpbmdTd2l0Y2hKdW1wVGFibGUoY3VycmVudFsxXS51Lm9wZXJhbmQpOwotICAgICAgICBT
dHJpbmdKdW1wVGFibGU6OlN0cmluZ09mZnNldFRhYmxlOjppdGVyYXRvciBpdGVyID0gdGFibGUu
b2Zmc2V0VGFibGUuYmVnaW4oKTsKLSAgICAgICAgU3RyaW5nSnVtcFRhYmxlOjpTdHJpbmdPZmZz
ZXRUYWJsZTo6aXRlcmF0b3IgZW5kID0gdGFibGUub2Zmc2V0VGFibGUuZW5kKCk7CisgICAgICAg
IGF1dG8mIHRhYmxlID0gY29kZUJsb2NrLT5zdHJpbmdTd2l0Y2hKdW1wVGFibGUoY3VycmVudFsx
XS51Lm9wZXJhbmQpOworICAgICAgICBhdXRvIGl0ZXIgPSB0YWJsZS5vZmZzZXRUYWJsZS5iZWdp
bigpOworICAgICAgICBhdXRvIGVuZCA9IHRhYmxlLm9mZnNldFRhYmxlLmVuZCgpOwogICAgICAg
ICBmb3IgKDsgaXRlciAhPSBlbmQ7ICsraXRlcikKICAgICAgICAgICAgIG91dC5hcHBlbmQoYnl0
ZWNvZGVPZmZzZXQgKyBpdGVyLT52YWx1ZS5icmFuY2hPZmZzZXQpOwogICAgICAgICBvdXQuYXBw
ZW5kKGJ5dGVjb2RlT2Zmc2V0ICsgY3VycmVudFsyXS51Lm9wZXJhbmQpOwpAQCAtODIsNyArOTcs
OCBAQCBzdGF0aWMgdm9pZCBnZXRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9j
ayogY29kZUJsb2NrLCBJbnRlcnByZXRlciogaQogICAgIH0KIH0KIAotdm9pZCBjb21wdXRlUHJl
Y2lzZUp1bXBUYXJnZXRzKENvZGVCbG9jayogY29kZUJsb2NrLCBWZWN0b3I8dW5zaWduZWQsIDMy
PiYgb3V0KQordGVtcGxhdGU8dHlwZW5hbWUgQmxvY2ssIHR5cGVuYW1lIEluc3RydWN0aW9uPgor
dm9pZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzSW50ZXJuYWwoQmxvY2sqIGNvZGVCbG9jaywg
Qnl0ZWNvZGVBbmFseXNpc01vZGUgYnl0ZWNvZGVBbmFseXNpc01vZGUsIEluc3RydWN0aW9uKiBp
bnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCwgVmVjdG9yPHVuc2ln
bmVkLCAzMj4mIG91dCkKIHsKICAgICBBU1NFUlQob3V0LmlzRW1wdHkoKSk7CiAgICAgCkBAIC05
OCwxMSArMTE0LDkgQEAgdm9pZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKENvZGVCbG9jayog
Y29kZUJsb2NrLCBWZWN0b3I8dW5zaWduZWQsIDMyPiYgb3V0KQogICAgIH0KIAogICAgIEludGVy
cHJldGVyKiBpbnRlcnByZXRlciA9IGNvZGVCbG9jay0+dm0oKS0+aW50ZXJwcmV0ZXI7Ci0gICAg
SW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luID0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMo
KS5iZWdpbigpOwotICAgIHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQgPSBjb2RlQmxvY2stPmlu
c3RydWN0aW9ucygpLnNpemUoKTsKICAgICBmb3IgKHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0ID0g
MDsgYnl0ZWNvZGVPZmZzZXQgPCBpbnN0cnVjdGlvbkNvdW50OykgewotICAgICAgICBPcGNvZGVJ
RCBvcGNvZGVJRCA9IGludGVycHJldGVyLT5nZXRPcGNvZGVJRChpbnN0cnVjdGlvbnNCZWdpblti
eXRlY29kZU9mZnNldF0udS5vcGNvZGUpOwotICAgICAgICBnZXRKdW1wVGFyZ2V0c0ZvckJ5dGVj
b2RlT2Zmc2V0KGNvZGVCbG9jaywgaW50ZXJwcmV0ZXIsIGluc3RydWN0aW9uc0JlZ2luLCBieXRl
Y29kZU9mZnNldCwgb3V0KTsKKyAgICAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBnZXRPcGNvZGVJ
RChpbnRlcnByZXRlciwgaW5zdHJ1Y3Rpb25zQmVnaW5bYnl0ZWNvZGVPZmZzZXRdKTsKKyAgICAg
ICAgZ2V0SnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChjb2RlQmxvY2ssIGJ5dGVjb2RlQW5h
bHlzaXNNb2RlLCBpbnRlcnByZXRlciwgaW5zdHJ1Y3Rpb25zQmVnaW4sIGJ5dGVjb2RlT2Zmc2V0
LCBvdXQpOwogICAgICAgICBieXRlY29kZU9mZnNldCArPSBvcGNvZGVMZW5ndGhzW29wY29kZUlE
XTsKICAgICB9CiAgICAgCkBAIC0xMjMsMTEgKzEzNywyOSBAQCB2b2lkIGNvbXB1dGVQcmVjaXNl
SnVtcFRhcmdldHMoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFZlY3Rvcjx1bnNpZ25lZCwgMzI+JiBv
dXQpCiAgICAgb3V0LnNocmlua1RvRml0KCk7CiB9CiAKLXZvaWQgZmluZEp1bXBUYXJnZXRzRm9y
Qnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlT2Zm
c2V0LCBWZWN0b3I8dW5zaWduZWQsIDE+JiBvdXQpCit2b2lkIGNvbXB1dGVQcmVjaXNlSnVtcFRh
cmdldHMoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQW5hbHlzaXNNb2RlIGJ5dGVjb2Rl
QW5hbHlzaXNNb2RlLCBWZWN0b3I8dW5zaWduZWQsIDMyPiYgb3V0KQogewotICAgIEludGVycHJl
dGVyKiBpbnRlcnByZXRlciA9IGNvZGVCbG9jay0+dm0oKS0+aW50ZXJwcmV0ZXI7Ci0gICAgSW5z
dHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luID0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5i
ZWdpbigpOwotICAgIGdldEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoY29kZUJsb2NrLCBp
bnRlcnByZXRlciwgaW5zdHJ1Y3Rpb25zQmVnaW4sIGJ5dGVjb2RlT2Zmc2V0LCBvdXQpOworICAg
IGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHNJbnRlcm5hbChjb2RlQmxvY2ssIGJ5dGVjb2RlQW5h
bHlzaXNNb2RlLCBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCksIGNvZGVCbG9jay0+
aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpLCBvdXQpOworfQorCit2b2lkIGNvbXB1dGVQcmVjaXNlSnVt
cFRhcmdldHMoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQW5hbHlzaXNNb2RlIGJ5dGVj
b2RlQW5hbHlzaXNNb2RlLCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVk
IGluc3RydWN0aW9uQ291bnQsIFZlY3Rvcjx1bnNpZ25lZCwgMzI+JiBvdXQpCit7CisgICAgY29t
cHV0ZVByZWNpc2VKdW1wVGFyZ2V0c0ludGVybmFsKGNvZGVCbG9jaywgYnl0ZWNvZGVBbmFseXNp
c01vZGUsIGluc3RydWN0aW9uc0JlZ2luLCBpbnN0cnVjdGlvbkNvdW50LCBvdXQpOworfQorCit2
b2lkIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMoVW5saW5rZWRDb2RlQmxvY2sqIGNvZGVCbG9j
aywgQnl0ZWNvZGVBbmFseXNpc01vZGUgYnl0ZWNvZGVBbmFseXNpc01vZGUsIFVubGlua2VkSW5z
dHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50LCBW
ZWN0b3I8dW5zaWduZWQsIDMyPiYgb3V0KQoreworICAgIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdl
dHNJbnRlcm5hbChjb2RlQmxvY2ssIGJ5dGVjb2RlQW5hbHlzaXNNb2RlLCBpbnN0cnVjdGlvbnNC
ZWdpbiwgaW5zdHJ1Y3Rpb25Db3VudCwgb3V0KTsKK30KKwordm9pZCBmaW5kSnVtcFRhcmdldHNG
b3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVBbmFseXNpc01v
ZGUgYnl0ZWNvZGVBbmFseXNpc01vZGUsIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwg
dW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIFZlY3Rvcjx1bnNpZ25lZCwgMT4mIG91dCkKK3sKKyAg
ICBnZXRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9jaywgYnl0ZWNvZGVBbmFs
eXNpc01vZGUsIGNvZGVCbG9jay0+dm0oKS0+aW50ZXJwcmV0ZXIsIGluc3RydWN0aW9uc0JlZ2lu
LCBieXRlY29kZU9mZnNldCwgb3V0KTsKK30KKwordm9pZCBmaW5kSnVtcFRhcmdldHNGb3JCeXRl
Y29kZU9mZnNldChVbmxpbmtlZENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29kZUFuYWx5c2lz
TW9kZSBieXRlY29kZUFuYWx5c2lzTW9kZSwgVW5saW5rZWRJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rp
b25zQmVnaW4sIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBWZWN0b3I8dW5zaWduZWQsIDE+JiBv
dXQpCit7CisgICAgZ2V0SnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChjb2RlQmxvY2ssIGJ5
dGVjb2RlQW5hbHlzaXNNb2RlLCBjb2RlQmxvY2stPnZtKCktPmludGVycHJldGVyLCBpbnN0cnVj
dGlvbnNCZWdpbiwgYnl0ZWNvZGVPZmZzZXQsIG91dCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpT
QwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1w
VGFyZ2V0cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFy
Z2V0cy5oCmluZGV4IDg1MjQxM2Q3N2I3OTg5ODRiMjdjZWYwZWQ2MmJjOTRjNjg5ZTIxMmMuLmRm
MDEwYzU1MjU2N2Q2MmU5NTljODZlMjI1ZWFmNWI5ZDRiNTY2NzYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmgKQEAgLTI3LDEz
ICsyNywxNyBAQAogI2RlZmluZSBQcmVjaXNlSnVtcFRhcmdldHNfaAogCiAjaW5jbHVkZSAiQ29k
ZUJsb2NrLmgiCisjaW5jbHVkZSAiVW5saW5rZWRDb2RlQmxvY2suaCIKIAogbmFtZXNwYWNlIEpT
QyB7CiAKIC8vIFJldHVybiBhIHNvcnRlZCBsaXN0IG9mIGJ5dGVjb2RlIGluZGV4IHRoYXQgYXJl
IHRoZSBkZXN0aW5hdGlvbiBvZiBhIGp1bXAuCi12b2lkIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdl
dHMoQ29kZUJsb2NrKiwgVmVjdG9yPHVuc2lnbmVkLCAzMj4mIG91dCk7Cit2b2lkIGNvbXB1dGVQ
cmVjaXNlSnVtcFRhcmdldHMoQ29kZUJsb2NrKiwgQnl0ZWNvZGVBbmFseXNpc01vZGUsIFZlY3Rv
cjx1bnNpZ25lZCwgMzI+JiBvdXQpOwordm9pZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKENv
ZGVCbG9jayosIEJ5dGVjb2RlQW5hbHlzaXNNb2RlLCBJbnN0cnVjdGlvbiosIHVuc2lnbmVkIGlu
c3RydWN0aW9uQ291bnQsIFZlY3Rvcjx1bnNpZ25lZCwgMzI+JiBvdXQpOwordm9pZCBjb21wdXRl
UHJlY2lzZUp1bXBUYXJnZXRzKFVubGlua2VkQ29kZUJsb2NrKiwgQnl0ZWNvZGVBbmFseXNpc01v
ZGUsIFVubGlua2VkSW5zdHJ1Y3Rpb24qLCB1bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50LCBWZWN0
b3I8dW5zaWduZWQsIDMyPiYgb3V0KTsKIAotdm9pZCBmaW5kSnVtcFRhcmdldHNGb3JCeXRlY29k
ZU9mZnNldChDb2RlQmxvY2sqLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgVmVjdG9yPHVuc2ln
bmVkLCAxPiYgb3V0KTsKK3ZvaWQgZmluZEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoQ29k
ZUJsb2NrKiwgQnl0ZWNvZGVBbmFseXNpc01vZGUsIEluc3RydWN0aW9uKiwgdW5zaWduZWQgYnl0
ZWNvZGVPZmZzZXQsIFZlY3Rvcjx1bnNpZ25lZCwgMT4mIG91dCk7Cit2b2lkIGZpbmRKdW1wVGFy
Z2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KFVubGlua2VkQ29kZUJsb2NrKiwgQnl0ZWNvZGVBbmFseXNp
c01vZGUsIFVubGlua2VkSW5zdHJ1Y3Rpb24qLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgVmVj
dG9yPHVuc2lnbmVkLCAxPiYgb3V0KTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCmlu
ZGV4IDI5OWFjNjgwZDlhMWQxZTVhOTBkOWZhZTFhMjJmODQ0ZTI5MmUzZTIuLjVmNTI5Y2NmZDk5
MTkwZWVmYWFmZjQzZTczN2IzZjgyMTVhMDQ4NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcApAQCAtMzY2LDUgKzM2Niwz
MiBAQCBjb25zdCBVbmxpbmtlZEluc3RydWN0aW9uU3RyZWFtJiBVbmxpbmtlZENvZGVCbG9jazo6
aW5zdHJ1Y3Rpb25zKCkgY29uc3QKICAgICByZXR1cm4gKm1fdW5saW5rZWRJbnN0cnVjdGlvbnM7
CiB9CiAKK1VubGlua2VkSGFuZGxlckluZm8qIFVubGlua2VkQ29kZUJsb2NrOjpoYW5kbGVyRm9y
Qnl0ZWNvZGVPZmZzZXQodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIFJlcXVpcmVkSGFuZGxlciBy
ZXF1aXJlZEhhbmRsZXIpCit7CisgICAgcmV0dXJuIGhhbmRsZXJGb3JJbmRleChieXRlY29kZU9m
ZnNldCwgcmVxdWlyZWRIYW5kbGVyKTsKK30KKworLy8gRklYTUU6IENvbXBsZXRlbHkgZHVwbGlj
YXRlLgorVW5saW5rZWRIYW5kbGVySW5mbyogVW5saW5rZWRDb2RlQmxvY2s6OmhhbmRsZXJGb3JJ
bmRleCh1bnNpZ25lZCBpbmRleCwgUmVxdWlyZWRIYW5kbGVyIHJlcXVpcmVkSGFuZGxlcikKK3sK
KyAgICBpZiAoIW1fcmFyZURhdGEpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgVmVj
dG9yPFVubGlua2VkSGFuZGxlckluZm8+JiBleGNlcHRpb25IYW5kbGVycyA9IG1fcmFyZURhdGEt
Pm1fZXhjZXB0aW9uSGFuZGxlcnM7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBleGNlcHRp
b25IYW5kbGVycy5zaXplKCk7ICsraSkgeworICAgICAgICBVbmxpbmtlZEhhbmRsZXJJbmZvJiBo
YW5kbGVyID0gZXhjZXB0aW9uSGFuZGxlcnNbaV07CisgICAgICAgIGlmICgocmVxdWlyZWRIYW5k
bGVyID09IFJlcXVpcmVkSGFuZGxlcjo6Q2F0Y2hIYW5kbGVyKSAmJiAhaGFuZGxlci5pc0NhdGNo
SGFuZGxlcigpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgLy8gSGFuZGxlcnMg
YXJlIG9yZGVyZWQgaW5uZXJtb3N0IGZpcnN0LCBzbyB0aGUgZmlyc3QgaGFuZGxlciB3ZSBlbmNv
dW50ZXIKKyAgICAgICAgLy8gdGhhdCBjb250YWlucyB0aGUgc291cmNlIGFkZHJlc3MgaXMgdGhl
IGNvcnJlY3QgaGFuZGxlciB0byB1c2UuCisgICAgICAgIC8vIFRoaXMgaW5kZXggdXNlZCBpcyBl
aXRoZXIgdGhlIEJ5dGVjb2RlT2Zmc2V0IG9yIGEgQ2FsbFNpdGVJbmRleC4KKyAgICAgICAgaWYg
KGhhbmRsZXIuc3RhcnQgPD0gaW5kZXggJiYgaGFuZGxlci5lbmQgPiBpbmRleCkKKyAgICAgICAg
ICAgIHJldHVybiAmaGFuZGxlcjsKKyAgICB9CisKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRD
b2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVC
bG9jay5oCmluZGV4IDkxZmRjYTQ4YzFlMzllOGJlZmIwYzVmZDU1ZmQ5YmQ5MWMxZjM3MDcuLjIx
ZjUxZGZlMjBjNmI3Yzk1N2RlNWJiNTIwZmJhNDhkNTIwYzUxNTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCkBAIC02OSw3ICs2
OSwxMSBAQCB0eXBlZGVmIHVuc2lnbmVkIFVubGlua2VkT2JqZWN0QWxsb2NhdGlvblByb2ZpbGU7
CiB0eXBlZGVmIHVuc2lnbmVkIFVubGlua2VkTExJbnRDYWxsTGlua0luZm87CiAKIHN0cnVjdCBV
bmxpbmtlZFN0cmluZ0p1bXBUYWJsZSB7Ci0gICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxTdHJp
bmdJbXBsPiwgaW50MzJfdD4gU3RyaW5nT2Zmc2V0VGFibGU7CisgICAgc3RydWN0IE9mZnNldExv
Y2F0aW9uIHsKKyAgICAgICAgaW50MzJfdCBicmFuY2hPZmZzZXQ7CisgICAgfTsKKworICAgIHR5
cGVkZWYgSGFzaE1hcDxSZWZQdHI8U3RyaW5nSW1wbD4sIE9mZnNldExvY2F0aW9uPiBTdHJpbmdP
ZmZzZXRUYWJsZTsKICAgICBTdHJpbmdPZmZzZXRUYWJsZSBvZmZzZXRUYWJsZTsKIAogICAgIGlu
bGluZSBpbnQzMl90IG9mZnNldEZvclZhbHVlKFN0cmluZ0ltcGwqIHZhbHVlLCBpbnQzMl90IGRl
ZmF1bHRPZmZzZXQpCkBAIC03OCw3ICs4Miw3IEBAIHN0cnVjdCBVbmxpbmtlZFN0cmluZ0p1bXBU
YWJsZSB7CiAgICAgICAgIFN0cmluZ09mZnNldFRhYmxlOjpjb25zdF9pdGVyYXRvciBsb2MgPSBv
ZmZzZXRUYWJsZS5maW5kKHZhbHVlKTsKICAgICAgICAgaWYgKGxvYyA9PSBlbmQpCiAgICAgICAg
ICAgICByZXR1cm4gZGVmYXVsdE9mZnNldDsKLSAgICAgICAgcmV0dXJuIGxvYy0+dmFsdWU7Cisg
ICAgICAgIHJldHVybiBsb2MtPnZhbHVlLmJyYW5jaE9mZnNldDsKICAgICB9CiAKIH07CkBAIC0x
MDYsNiArMTEwLDggQEAgc3RydWN0IFVubGlua2VkSW5zdHJ1Y3Rpb24gewogICAgIH0gdTsKIH07
CiAKK2NsYXNzIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uOworCiBjbGFzcyBVbmxpbmtlZENv
ZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogcHVibGljOgogICAgIHR5cGVkZWYgSlNDZWxsIEJh
c2U7CkBAIC0xMTUsNiArMTIxLDggQEAgY2xhc3MgVW5saW5rZWRDb2RlQmxvY2sgOiBwdWJsaWMg
SlNDZWxsIHsKIAogICAgIGVudW0geyBDYWxsRnVuY3Rpb24sIEFwcGx5RnVuY3Rpb24gfTsKIAor
ICAgIHR5cGVkZWYgVmVjdG9yPFVubGlua2VkSW5zdHJ1Y3Rpb24sIDAsIFVuc2FmZVZlY3Rvck92
ZXJmbG93PiBVbnBhY2tlZEluc3RydWN0aW9uczsKKwogICAgIGJvb2wgaXNDb25zdHJ1Y3Rvcigp
IGNvbnN0IHsgcmV0dXJuIG1faXNDb25zdHJ1Y3RvcjsgfQogICAgIGJvb2wgaXNTdHJpY3RNb2Rl
KCkgY29uc3QgeyByZXR1cm4gbV9pc1N0cmljdE1vZGU7IH0KICAgICBib29sIHVzZXNFdmFsKCkg
Y29uc3QgeyByZXR1cm4gbV91c2VzRXZhbDsgfQpAQCAtMjA0LDYgKzIxMiw5IEBAIGNsYXNzIFVu
bGlua2VkQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgdW5zaWduZWQganVtcFRhcmdl
dChpbnQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIG1fanVtcFRhcmdldHNbaW5kZXhdOyB9CiAgICAg
dW5zaWduZWQgbGFzdEp1bXBUYXJnZXQoKSBjb25zdCB7IHJldHVybiBtX2p1bXBUYXJnZXRzLmxh
c3QoKTsgfQogCisgICAgVW5saW5rZWRIYW5kbGVySW5mbyogaGFuZGxlckZvckJ5dGVjb2RlT2Zm
c2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBSZXF1aXJlZEhhbmRsZXIgPSBSZXF1aXJlZEhh
bmRsZXI6OkFueUhhbmRsZXIpOworICAgIFVubGlua2VkSGFuZGxlckluZm8qIGhhbmRsZXJGb3JJ
bmRleCh1bnNpZ25lZCwgUmVxdWlyZWRIYW5kbGVyID0gUmVxdWlyZWRIYW5kbGVyOjpBbnlIYW5k
bGVyKTsKKwogICAgIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2lz
QnVpbHRpbkZ1bmN0aW9uOyB9CiAKICAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5k
KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Q29uc3RydWN0b3JLaW5kPihtX2NvbnN0cnVj
dG9yS2luZCk7IH0KQEAgLTM3NCw2ICszODUsMTIgQEAgY2xhc3MgVW5saW5rZWRDb2RlQmxvY2sg
OiBwdWJsaWMgSlNDZWxsIHsKICAgICBUcmlTdGF0ZSBkaWRPcHRpbWl6ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fZGlkT3B0aW1pemU7IH0KICAgICB2b2lkIHNldERpZE9wdGltaXplKFRyaVN0YXRlIGRp
ZE9wdGltaXplKSB7IG1fZGlkT3B0aW1pemUgPSBkaWRPcHRpbWl6ZTsgfQogCisgICAgVmVjdG9y
PEZhc3RCaXRWZWN0b3I+JiBsaXZlQ2FsbGVlTG9jYWxzQXRZaWVsZCgpCisgICAgeworICAgICAg
ICBjcmVhdGVSYXJlRGF0YUlmTmVjZXNzYXJ5KCk7CisgICAgICAgIHJldHVybiBtX3JhcmVEYXRh
LT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkOworICAgIH0KKwogcHJvdGVjdGVkOgogICAgIFVu
bGlua2VkQ29kZUJsb2NrKFZNKiwgU3RydWN0dXJlKiwgQ29kZVR5cGUsIGNvbnN0IEV4ZWN1dGFi
bGVJbmZvJiwgRGVidWdnZXJNb2RlKTsKICAgICB+VW5saW5rZWRDb2RlQmxvY2soKTsKQEAgLTQ2
MCw2ICs0NzcsOSBAQCBjbGFzcyBVbmxpbmtlZENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewog
ICAgICAgICBWZWN0b3I8VW5saW5rZWRTaW1wbGVKdW1wVGFibGU+IG1fc3dpdGNoSnVtcFRhYmxl
czsKICAgICAgICAgVmVjdG9yPFVubGlua2VkU3RyaW5nSnVtcFRhYmxlPiBtX3N0cmluZ1N3aXRj
aEp1bXBUYWJsZXM7CiAKKyAgICAgICAgLy8gRklYTUU6IFdlIHdpbGwgZHJvcCB0aGlzLgorICAg
ICAgICBWZWN0b3I8RmFzdEJpdFZlY3Rvcj4gbV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZDsKKwog
ICAgICAgICBWZWN0b3I8RXhwcmVzc2lvblJhbmdlSW5mbzo6RmF0UG9zaXRpb24+IG1fZXhwcmVz
c2lvbkluZm9GYXRQb3NpdGlvbnM7CiAKICAgICAgICAgc3RydWN0IFR5cGVQcm9maWxlckV4cHJl
c3Npb25SYW5nZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IGViZTg2MThjMjI1MjFiMDg0OTkyZTY3
MGZiYjU5YmFmMzBlOGQ4NGIuLmM3NzYxNmE4MmNiOWQ3NTg0ZTA2NWFkY2M5MGJkM2U1ZWY0ZGY3
MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiQnl0ZWNv
ZGVHZW5lcmF0b3IuaCIKIAogI2luY2x1ZGUgIkJ1aWx0aW5FeGVjdXRhYmxlcy5oIgorI2luY2x1
ZGUgIkJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVMaXZl
bmVzc0FuYWx5c2lzLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKU0Z1
bmN0aW9uLmgiCkBAIC0xNDAsNiArMTQxLDEyIEBAIFBhcnNlckVycm9yIEJ5dGVjb2RlR2VuZXJh
dG9yOjpnZW5lcmF0ZSgpCiAgICAgICAgIG1fY29kZUJsb2NrLT5hZGRFeGNlcHRpb25IYW5kbGVy
KGluZm8pOwogICAgIH0KICAgICAKKworICAgIGlmIChtX2NvZGVCbG9jay0+cGFyc2VNb2RlKCkg
PT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JCb2R5TW9kZSkgeworICAgICAgICBCeXRlY29k
ZUdyYXBoPFVubGlua2VkQ29kZUJsb2NrPiBncmFwaChtX2NvZGVCbG9jay5nZXQoKSwgbV9pbnN0
cnVjdGlvbnMsIEJ5dGVjb2RlQW5hbHlzaXNNb2RlOjpFeHRyYWN0R2VuZXJhdG9yTGl2ZUNhbGxl
ZUxvY2Fscyk7CisgICAgICAgIHBlcmZvcm1HZW5lcmF0b3JpZmljYXRpb24oZ3JhcGgpOworICAg
IH0KKwogICAgIG1fY29kZUJsb2NrLT5zZXRJbnN0cnVjdGlvbnMoc3RkOjptYWtlX3VuaXF1ZTxV
bmxpbmtlZEluc3RydWN0aW9uU3RyZWFtPihtX2luc3RydWN0aW9ucykpOwogCiAgICAgbV9jb2Rl
QmxvY2stPnNocmlua1RvRml0KCk7CkBAIC0yNTksNyArMjY2LDcgQEAgQnl0ZWNvZGVHZW5lcmF0
b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25Ob2RlKiBmdW5jdGlvbk5vZGUs
IFVubGlua2UKICAgICAgICAgLy8gICAgZnVuY3Rpb24gKmdlbihhLCBiID0gaGVsbG8oKSkKICAg
ICAgICAgLy8gICAgewogICAgICAgICAvLyAgICAgICAgcmV0dXJuIHsKLSAgICAgICAgLy8gICAg
ICAgICAgICBAZ2VuZXJhdG9yTmV4dDogZnVuY3Rpb24gKEBnZW5lcmF0b3IsIEBnZW5lcmF0b3JT
dGF0ZSwgQGdlbmVyYXRvclZhbHVlLCBAZ2VuZXJhdG9yUmVzdW1lTW9kZSkKKyAgICAgICAgLy8g
ICAgICAgICAgICBAZ2VuZXJhdG9yTmV4dDogZnVuY3Rpb24gKEBnZW5lcmF0b3IsIEBnZW5lcmF0
b3JTdGF0ZSwgQGdlbmVyYXRvclZhbHVlLCBAZ2VuZXJhdG9yUmVzdW1lTW9kZSwgQGdlbmVyYXRv
ckZyYW1lKQogICAgICAgICAvLyAgICAgICAgICAgIHsKICAgICAgICAgLy8gICAgICAgICAgICAg
ICAgYXJndW1lbnRzOyAgLy8gVGhpcyBgYXJndW1lbnRzYCBzaG91bGQgcmVmZXJlbmNlIHRvIHRo
ZSBnZW4ncyBhcmd1bWVudHMuCiAgICAgICAgIC8vICAgICAgICAgICAgICAgIC4uLgpAQCAtNTM4
LDYgKzU0NSw5IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0s
IEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtlCiAgICAgY2FzZSBTb3VyY2VQYXJz
ZU1vZGU6OkdlbmVyYXRvckJvZHlNb2RlOiB7CiAgICAgICAgIC8vIHx0aGlzfCBpcyBhbHJlYWR5
IGZpbGxlZCBjb3JyZWN0bHkgYmVmb3JlIGhlcmUuCiAgICAgICAgIGVtaXRMb2FkKG1fbmV3VGFy
Z2V0UmVnaXN0ZXIsIGpzVW5kZWZpbmVkKCkpOworCisgICAgICAgIGVtaXROZXdHZW5lcmF0b3JG
cmFtZShnZW5lcmF0b3JGcmFtZVJlZ2lzdGVyKCkpOworICAgICAgICBlbWl0UHV0QnlJZChnZW5l
cmF0b3JSZWdpc3RlcigpLCBwcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9y
RnJhbWVQcml2YXRlTmFtZSgpLCBnZW5lcmF0b3JGcmFtZVJlZ2lzdGVyKCkpOwogICAgICAgICBi
cmVhazsKICAgICB9CiAKQEAgLTI5OTAsNiArMzAwMCwxNCBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0U2V0RnVuY3Rpb25OYW1lSWZOZWVkZWQoRXhwcmVzc2lvbk5vZGUqIHZhbHVlTm9k
ZSwgUgogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChuYW1lLT5pbmRleCgpKTsKIH0KIAorUmVn
aXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdHZW5lcmF0b3JGcmFtZShSZWdpc3Rl
cklEKiBkc3QpCit7CisgICAgZW1pdE9wY29kZShvcF9uZXdfZ2VuZXJhdG9yX2ZyYW1lKTsKKyAg
ICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZHN0LT5pbmRleCgpKTsKKyAgICBpbnN0cnVjdGlvbnMo
KS5hcHBlbmQoMCk7CisgICAgcmV0dXJuIGRzdDsKK30KKwogUmVnaXN0ZXJJRCogQnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXRDYWxsKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogZnVuYywgRXhw
ZWN0ZWRGdW5jdGlvbiBleHBlY3RlZEZ1bmN0aW9uLCBDYWxsQXJndW1lbnRzJiBjYWxsQXJndW1l
bnRzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBk
aXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpCiB7CiAgICAgcmV0dXJu
IGVtaXRDYWxsKG9wX2NhbGwsIGRzdCwgZnVuYywgZXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3Vt
ZW50cywgZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kKTsKQEAgLTM5MTIsNyArMzkzMCw3IEBA
IHN0YXRpYyB2b2lkIHByZXBhcmVKdW1wVGFibGVGb3JTdHJpbmdTd2l0Y2goVW5saW5rZWRTdHJp
bmdKdW1wVGFibGUmIGp1bXBUYWJsZSwKICAgICAgICAgCiAgICAgICAgIEFTU0VSVChub2Rlc1tp
XS0+aXNTdHJpbmcoKSk7CiAgICAgICAgIFN0cmluZ0ltcGwqIGNsYXVzZSA9IHN0YXRpY19jYXN0
PFN0cmluZ05vZGUqPihub2Rlc1tpXSktPnZhbHVlKCkuaW1wbCgpOwotICAgICAgICBqdW1wVGFi
bGUub2Zmc2V0VGFibGUuYWRkKGNsYXVzZSwgbGFiZWxzW2ldLT5iaW5kKHN3aXRjaEFkZHJlc3Ms
IHN3aXRjaEFkZHJlc3MgKyAzKSk7CisgICAgICAgIGp1bXBUYWJsZS5vZmZzZXRUYWJsZS5hZGQo
Y2xhdXNlLCBVbmxpbmtlZFN0cmluZ0p1bXBUYWJsZTo6T2Zmc2V0TG9jYXRpb24geyBsYWJlbHNb
aV0tPmJpbmQoc3dpdGNoQWRkcmVzcywgc3dpdGNoQWRkcmVzcyArIDMpIH0pOwogICAgIH0KIH0K
IApAQCAtNDQyOSw3ICs0NDQ3LDcgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFNhdmUo
TGFiZWwqIG1lcmdlUG9pbnQsIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmQKIHsKICAgICBz
aXplX3QgYmVnaW4gPSBpbnN0cnVjdGlvbnMoKS5zaXplKCk7CiAgICAgZW1pdE9wY29kZShvcF9z
YXZlKTsKLSAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobV9nZW5lcmF0b3JSZWdpc3Rlci0+aW5k
ZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGdlbmVyYXRvckZyYW1lUmVnaXN0ZXIo
KS0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGxpdmVDYWxsZWVMb2NhbHNJ
bmRleCk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1lcmdlUG9pbnQtPmJpbmQoYmVnaW4s
IGluc3RydWN0aW9ucygpLnNpemUoKSkpOwogfQpAQCAtNDQzOCw3ICs0NDU2LDcgQEAgdm9pZCBC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlc3VtZShMYWJlbCogbWVyZ2VQb2ludCwgdW5zaWduZWQg
bGl2ZUNhbGxlZUxvY2Fsc0kKIHsKICAgICBlbWl0R2VuZXJhdG9yU3RhdGVMYWJlbCgpOwogICAg
IGVtaXRPcGNvZGUob3BfcmVzdW1lKTsKLSAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobV9nZW5l
cmF0b3JSZWdpc3Rlci0+aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGdlbmVy
YXRvckZyYW1lUmVnaXN0ZXIoKS0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5k
KGxpdmVDYWxsZWVMb2NhbHNJbmRleCk7CiAgICAgZW1pdExhYmVsKG1lcmdlUG9pbnQpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdl
bmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdl
bmVyYXRvci5oCmluZGV4IDk5MTRiN2QyMmU0M2Y3Njc0ZDYwM2U3NTM4OGUyZjA1NWE3NGE2MDIu
LmYxNGM0NzAyYzcwOWI1MTgxOWMxZDlhMmY0OWM2N2M3ZWJlZjA4MmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgK
QEAgLTUzMSw2ICs1MzEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVnaXN0ZXJJRCog
ZW1pdE5ld0Fycm93RnVuY3Rpb25FeHByZXNzaW9uKFJlZ2lzdGVySUQqLCBBcnJvd0Z1bmNFeHBy
Tm9kZSopOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0TmV3TWV0aG9kRGVmaW5pdGlvbihSZWdp
c3RlcklEKiBkc3QsIE1ldGhvZERlZmluaXRpb25Ob2RlKik7CiAgICAgICAgIFJlZ2lzdGVySUQq
IGVtaXROZXdSZWdFeHAoUmVnaXN0ZXJJRCogZHN0LCBSZWdFeHAqKTsKKyAgICAgICAgUmVnaXN0
ZXJJRCogZW1pdE5ld0dlbmVyYXRvckZyYW1lKFJlZ2lzdGVySUQqIGRzdCk7CiAKICAgICAgICAg
dm9pZCBlbWl0U2V0RnVuY3Rpb25OYW1lSWZOZWVkZWQoRXhwcmVzc2lvbk5vZGUqIHZhbHVlTm9k
ZSwgUmVnaXN0ZXJJRCogdmFsdWUsIFJlZ2lzdGVySUQqIG5hbWUpOwogCkBAIC03MDMsNiArNzA0
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFJlZ2lzdGVySUQqIGdlbmVyYXRvclN0YXRl
UmVnaXN0ZXIoKSB7IHJldHVybiAmbV9wYXJhbWV0ZXJzWzJdOyB9CiAgICAgICAgIFJlZ2lzdGVy
SUQqIGdlbmVyYXRvclZhbHVlUmVnaXN0ZXIoKSB7IHJldHVybiAmbV9wYXJhbWV0ZXJzWzNdOyB9
CiAgICAgICAgIFJlZ2lzdGVySUQqIGdlbmVyYXRvclJlc3VtZU1vZGVSZWdpc3RlcigpIHsgcmV0
dXJuICZtX3BhcmFtZXRlcnNbNF07IH0KKyAgICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9yRnJh
bWVSZWdpc3RlcigpIHsgcmV0dXJuICZtX3BhcmFtZXRlcnNbNV07IH0KIAogICAgICAgICBDb2Rl
VHlwZSBjb2RlVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZVR5cGU7IH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEhlYXAuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RIZWFwLmgKaW5kZXggYWZlMTBjNDk2NDMxMjlj
N2IxMWU4MjBiZTQ5ZTYwNmVmNzM4OTE2NS4uNGRlYmY5MzJlOWE0YmEyZjdlNWE2ODczNGVhMmY5
ZTgxMDAyMDc4NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0
cmFjdEhlYXAuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SGVh
cC5oCkBAIC02OSw2ICs2OSw4IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAg
ICBtYWNybyhTY29wZVByb3BlcnRpZXMpIFwKICAgICBtYWNybyhUeXBlZEFycmF5UHJvcGVydGll
cykgXAogICAgIG1hY3JvKEhlYXBPYmplY3RDb3VudCkgLyogVXNlZCB0byByZWZsZWN0IHRoZSBm
YWN0IHRoYXQgc29tZSBhbGxvY2F0aW9ucyByZXZlYWwgb2JqZWN0IGlkZW50aXR5ICovXAorICAg
IG1hY3JvKEdlbmVyYXRvckxvY2FscykgXAorICAgIG1hY3JvKEdlbmVyYXRvckxvY2FsQ291bnQp
IFwKICAgICBtYWNybyhSZWdFeHBTdGF0ZSkgXAogICAgIG1hY3JvKE1hdGhEb3RSYW5kb21TdGF0
ZSkgXAogICAgIG1hY3JvKEludGVybmFsU3RhdGUpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAppbmRleCBl
YmRjNzljNjBmNmYyZjZkOTA2M2VhMTZjNGMyODZjNDU1M2ExMDAzLi5hM2NlZmRkM2FkYjdlMjE1
OWYyOTg0MTNmYTRhZWY1MTFjYTE2OTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCkBAIC0xOTI1LDYg
KzE5MjUsMTAgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6
ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICBjYXNlIE5ld1JlZ2V4cDoK
ICAgICAgICAgZm9yTm9kZShub2RlKS5zZXQobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+cmVnRXhwU3RydWN0dXJlKCkpOwogICAgICAgICBi
cmVhazsKKworICAgIGNhc2UgTmV3R2VuZXJhdG9yRnJhbWU6CisgICAgICAgIGZvck5vZGUobm9k
ZSkuc2V0KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYyktPmdlbmVyYXRvckZyYW1lU3RydWN0dXJlKCkpOworICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIAogICAgIGNhc2UgVG9UaGlzOiB7CiAgICAgICAgIEFic3RyYWN0VmFsdWUmIHNvdXJj
ZSA9IGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpOwpAQCAtMjgzOSw2ICsyODQzLDE3IEBAIGJvb2wg
QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVu
c2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAgIGZvck5vZGUobm9kZSkubWFrZUhlYXBUb3AoKTsK
ICAgICAgICAgYnJlYWs7CiAKKyAgICBjYXNlIFNldEdlbmVyYXRvckxvY2FsOgorICAgIGNhc2Ug
UmVzaXplR2VuZXJhdG9yTG9jYWxzOgorICAgICAgICBicmVhazsKKworICAgIGNhc2UgR2V0R2Vu
ZXJhdG9yTG9jYWw6IHsKKyAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBhdHRlbXB0IHRvIGNv
bnZlcnQgaXQgdG8gY29uc3RhbnQuCisgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNTMxODMKKyAgICAgICAgZm9yTm9kZShub2RlKS5tYWtlQnl0ZWNv
ZGVUb3AoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBGb3JjZU9TUkV4aXQ6
CiAgICAgY2FzZSBDaGVja0JhZENlbGw6CiAgICAgICAgIG1fc3RhdGUuc2V0SXNWYWxpZChmYWxz
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFy
c2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3Bw
CmluZGV4IGJjMjI0NDdjMTBhN2NiOGFiNDQwM2ViZjUxZTdhNWU4MmJjODNjN2UuLjQwN2UzMDgx
NjUxYmVhOWQwYzNkM2Y1MmY2ZmE5MTczMTQxMWM4NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC0zOCw2ICszOCw3IEBACiAjaW5j
bHVkZSAiREZHQ2FwYWJpbGl0aWVzLmgiCiAjaW5jbHVkZSAiREZHQ2xvYmJlcml6ZS5oIgogI2lu
Y2x1ZGUgIkRGR0Nsb2JiZXJzRXhpdFN0YXRlLmgiCisjaW5jbHVkZSAiREZHR2VuZXJhdG9yTG9j
YWxEYXRhLmgiCiAjaW5jbHVkZSAiREZHR3JhcGguaCIKICNpbmNsdWRlICJERkdKSVRDb2RlLmgi
CiAjaW5jbHVkZSAiR2V0QnlJZFN0YXR1cy5oIgpAQCAtMTAwNCw2ICsxMDA1LDExIEBAIGNsYXNz
IEJ5dGVDb2RlUGFyc2VyIHsKICAgICB9CiAKICAgICBib29sIG5lZWRzRHluYW1pY0xvb2t1cChS
ZXNvbHZlVHlwZSwgT3Bjb2RlSUQpOworCisgICAgR2VuZXJhdG9yTG9jYWxEYXRhKiBuZXdHZW5l
cmF0b3JMb2NhbERhdGEoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZ3JhcGgubV9nZW5lcmF0
b3JMb2NhbERhdGEuYWRkKCk7CisgICAgfQogICAgIAogICAgIFZNKiBtX3ZtOwogICAgIENvZGVC
bG9jayogbV9jb2RlQmxvY2s7CkBAIC0xMDkyLDYgKzEwOTgsMTEgQEAgY2xhc3MgQnl0ZUNvZGVQ
YXJzZXIgewogICAgICAgICBDYWxsTGlua0luZm9NYXAgbV9jYWxsTGlua0luZm9zOwogICAgICAg
ICBTdHViSW5mb01hcCBtX3N0dWJJbmZvczsKICAgICAgICAgQnlWYWxJbmZvTWFwIG1fYnlWYWxJ
bmZvczsKKworICAgICAgICAvLyBTaW5jZSB0aGUgb3BfcmVzdW1lIGlzIGVtaXR0ZWQgYWZ0ZXIg
dGhlIGNvcnJlc3BvbmRpbmcgb3Bfc2F2ZQorICAgICAgICAvLyBhbmQgdGhlcmUgaXMgbm8gb3Ro
ZXIgb3BfcmVzdW1lIGFuZCBvcF9zYXZlIGJldHdlZW4gdGhlbSwKKyAgICAgICAgLy8gd2UgY2Fu
IHRyYWNrIHRoZXNlIGNvcnJlc3BvbmRlbmNlIGJ5IGp1c3QgdHJhY2tpbmcgY3VycmVudGx5IGZv
Y3VzaW5nIG9wX3NhdmUuCisgICAgICAgIE9wZXJhbmRzPEdlbmVyYXRvckxvY2FsRGF0YSo+IG1f
Z2VuZXJhdG9yTG9jYWxzOwogICAgICAgICAKICAgICAgICAgLy8gRGlkIHdlIHNlZSBhbnkgcmV0
dXJucz8gV2UgbmVlZCB0byBoYW5kbGUgdGhlICh1bmNvbW1vbiBidXQgbmVjZXNzYXJ5KQogICAg
ICAgICAvLyBjYXNlIHdoZXJlIGEgcHJvY2VkdXJlIHRoYXQgZG9lcyBub3QgcmV0dXJuIHdhcyBp
bmxpbmVkLgpAQCAtMzY3Niw2ICszNjg3LDExIEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNl
QmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9uZXdfcmVn
ZXhwKTsKICAgICAgICAgfQogCisgICAgICAgIGNhc2Ugb3BfbmV3X2dlbmVyYXRvcl9mcmFtZTog
eworICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0u
dS5vcGVyYW5kKSwgYWRkVG9HcmFwaChOZXdHZW5lcmF0b3JGcmFtZSwgT3BJbmZvKGN1cnJlbnRJ
bnN0cnVjdGlvblsyXS51LnVuc2lnbmVkVmFsdWUpKSk7CisgICAgICAgICAgICBORVhUX09QQ09E
RShvcF9uZXdfZ2VuZXJhdG9yX2ZyYW1lKTsKKyAgICAgICAgfQorCiAgICAgICAgIGNhc2Ugb3Bf
Z2V0X3Jlc3RfbGVuZ3RoOiB7CiAgICAgICAgICAgICBJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNh
bGxGcmFtZSA9IHRoaXMtPmlubGluZUNhbGxGcmFtZSgpOwogICAgICAgICAgICAgTm9kZSogbGVu
Z3RoOwpAQCAtMzcwMyw2ICszNzE5LDQxIEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxv
Y2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgICAgICAgICAgYXJyYXksIGFycmF5TGVuZ3RoKTsK
ICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2NvcHlfcmVzdCk7CiAgICAgICAgIH0KKworICAg
ICAgICBjYXNlIG9wX3NhdmU6IHsKKyAgICAgICAgICAgIE5vZGUqIGZyYW1lID0gZ2V0KFZpcnR1
YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSk7CisgICAgICAgICAg
ICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0u
dS51bnNpZ25lZFZhbHVlOworICAgICAgICAgICAgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZW5l
c3MgPSBtX2lubGluZVN0YWNrVG9wLT5tX2NvZGVCbG9jay0+bGl2ZUNhbGxlZUxvY2Fsc0F0WWll
bGQobGl2ZUNhbGxlZUxvY2Fsc0luZGV4KTsKKworICAgICAgICAgICAgbV9pbmxpbmVTdGFja1Rv
cC0+bV9nZW5lcmF0b3JMb2NhbHMgPSBPcGVyYW5kczxHZW5lcmF0b3JMb2NhbERhdGEqPihtX251
bUFyZ3VtZW50cywgbV9udW1Mb2NhbHMpOworCisgICAgICAgICAgICBhZGRUb0dyYXBoKFJlc2l6
ZUdlbmVyYXRvckxvY2FscywgT3BJbmZvKGxpdmVuZXNzLmJpdENvdW50KCkpLCBmcmFtZSk7Cisg
ICAgICAgICAgICB1bnNpZ25lZCBnZW5lcmF0b3JMb2NhbEluZGV4ID0gMDsKKyAgICAgICAgICAg
IGxpdmVuZXNzLmZvckVhY2hTZXRCaXQoWyZdKHNpemVfdCBpbmRleCkgeworICAgICAgICAgICAg
ICAgIFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kID0gdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaW5k
ZXgpOworICAgICAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciByZW1hcHBlZE9wZXJhbmQgPSBt
X2lubGluZVN0YWNrVG9wLT5yZW1hcE9wZXJhbmQob3BlcmFuZCk7CisgICAgICAgICAgICAgICAg
Tm9kZSogbG9jYWwgPSBnZXQob3BlcmFuZCk7CisgICAgICAgICAgICAgICAgR2VuZXJhdG9yTG9j
YWxEYXRhKiBnZW5lcmF0b3JMb2NhbERhdGEgPSBuZXdHZW5lcmF0b3JMb2NhbERhdGEoKTsKKyAg
ICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2dlbmVyYXRvckxvY2Fscy5sb2NhbChy
ZW1hcHBlZE9wZXJhbmQudG9Mb2NhbCgpKSA9IGdlbmVyYXRvckxvY2FsRGF0YTsKKyAgICAgICAg
ICAgICAgICBhZGRUb0dyYXBoKFNldEdlbmVyYXRvckxvY2FsLCBPcEluZm8oZ2VuZXJhdG9yTG9j
YWxJbmRleCsrKSwgT3BJbmZvKGdlbmVyYXRvckxvY2FsRGF0YSksIGZyYW1lLCBsb2NhbCk7Cisg
ICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX3NhdmUpOworICAgICAg
ICB9CisKKyAgICAgICAgY2FzZSBvcF9yZXN1bWU6IHsKKyAgICAgICAgICAgIE5vZGUqIGZyYW1l
ID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSk7
CisgICAgICAgICAgICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSBjdXJyZW50SW5z
dHJ1Y3Rpb25bMl0udS51bnNpZ25lZFZhbHVlOworICAgICAgICAgICAgY29uc3QgRmFzdEJpdFZl
Y3RvciYgbGl2ZW5lc3MgPSBtX2lubGluZVN0YWNrVG9wLT5tX2NvZGVCbG9jay0+bGl2ZUNhbGxl
ZUxvY2Fsc0F0WWllbGQobGl2ZUNhbGxlZUxvY2Fsc0luZGV4KTsKKyAgICAgICAgICAgIHVuc2ln
bmVkIGdlbmVyYXRvckxvY2FsSW5kZXggPSAwOworICAgICAgICAgICAgbGl2ZW5lc3MuZm9yRWFj
aFNldEJpdChbJl0oc2l6ZV90IGluZGV4KSB7CisgICAgICAgICAgICAgICAgVmlydHVhbFJlZ2lz
dGVyIG9wZXJhbmQgPSB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChpbmRleCk7CisgICAgICAgICAg
ICAgICAgVmlydHVhbFJlZ2lzdGVyIHJlbWFwcGVkT3BlcmFuZCA9IG1faW5saW5lU3RhY2tUb3At
PnJlbWFwT3BlcmFuZChvcGVyYW5kKTsKKyAgICAgICAgICAgICAgICBHZW5lcmF0b3JMb2NhbERh
dGEqIGdlbmVyYXRvckxvY2FsRGF0YSA9IG1faW5saW5lU3RhY2tUb3AtPm1fZ2VuZXJhdG9yTG9j
YWxzLmxvY2FsKHJlbWFwcGVkT3BlcmFuZC50b0xvY2FsKCkpOworICAgICAgICAgICAgICAgIHNl
dChvcGVyYW5kLCBhZGRUb0dyYXBoKEdldEdlbmVyYXRvckxvY2FsLCBPcEluZm8oZ2VuZXJhdG9y
TG9jYWxJbmRleCsrKSwgT3BJbmZvKGdlbmVyYXRvckxvY2FsRGF0YSksIGZyYW1lKSk7CisgICAg
ICAgICAgICB9KTsKKyAgICAgICAgICAgIGFkZFRvR3JhcGgoUmVzaXplR2VuZXJhdG9yTG9jYWxz
LCBPcEluZm8oMCksIGZyYW1lKTsKKyAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX3Jlc3VtZSk7
CisgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICAvLyA9PT0gQml0d2lzZSBvcGVyYXRp
b25zID09PQogCkBAIC01Mzc5LDcgKzU0MzAsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJz
ZUNvZGVCbG9jaygpCiAgICAgfQogICAgIAogICAgIFZlY3Rvcjx1bnNpZ25lZCwgMzI+IGp1bXBU
YXJnZXRzOwotICAgIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMoY29kZUJsb2NrLCBqdW1wVGFy
Z2V0cyk7CisgICAgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhjb2RlQmxvY2ssIEJ5dGVjb2Rl
QW5hbHlzaXNNb2RlOjpTdGFuZGFyZCwganVtcFRhcmdldHMpOwogICAgIGlmIChPcHRpb25zOjpk
dW1wQnl0ZWNvZGVBdERGR1RpbWUoKSkgewogICAgICAgICBkYXRhTG9nKCJKdW1wIHRhcmdldHM6
ICIpOwogICAgICAgICBDb21tYVByaW50ZXIgY29tbWE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKaW5kZXggMWEyMzQ4MjQyODNiMGI4Y2Y3MzVjNTEw
YWUxMjcyNDU5N2RlMTU3OC4uOWM1ZjQ3ZGM3YmZlOTEzYTU4ZTEwNzFlMWQxYWJhNjlmMTIwMTc0
YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcApA
QCAtMTkyLDYgKzE5Miw3IEBAIENhcGFiaWxpdHlMZXZlbCBjYXBhYmlsaXR5TGV2ZWwoT3Bjb2Rl
SUQgb3Bjb2RlSUQsIENvZGVCbG9jayogY29kZUJsb2NrLCBJbnN0cnVjCiAgICAgY2FzZSBvcF9u
ZXdfYXJyYXk6CiAgICAgY2FzZSBvcF9uZXdfYXJyYXlfd2l0aF9zaXplOgogICAgIGNhc2Ugb3Bf
bmV3X2FycmF5X2J1ZmZlcjoKKyAgICBjYXNlIG9wX25ld19nZW5lcmF0b3JfZnJhbWU6CiAgICAg
Y2FzZSBvcF9zdHJjYXQ6CiAgICAgY2FzZSBvcF90b19wcmltaXRpdmU6CiAgICAgY2FzZSBvcF90
aHJvdzoKQEAgLTI0MCw2ICsyNDEsOCBAQCBDYXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVs
KE9wY29kZUlEIG9wY29kZUlELCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSW5zdHJ1YwogICAgIGNh
c2Ugb3BfbG9nX3NoYWRvd19jaGlja2VuX3RhaWw6CiAgICAgY2FzZSBvcF9wdXRfdG9fc2NvcGU6
CiAgICAgY2FzZSBvcF9yZXNvbHZlX3Njb3BlOgorICAgIGNhc2Ugb3Bfc2F2ZToKKyAgICBjYXNl
IG9wX3Jlc3VtZToKICAgICAgICAgcmV0dXJuIENhbkNvbXBpbGVBbmRJbmxpbmU7CiAKICAgICBj
YXNlIG9wX25ld19yZWdleHA6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Nsb2JiZXJpemUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6
ZS5oCmluZGV4IDZhZTJkZjIxYzYyODBhNjI1ZDQ2OWJjNTVhMTIwYjNiMTY0MzRkNzcuLmRlNWU4
MTg1ZjllNWE2MGQ3ODJlYzM1ZGZlY2QwOWMxOGVkNTRiZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCkBAIC0xMDk5LDYgKzEwOTksNyBAQCB2b2lkIGNsb2Ji
ZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwg
Y29uc3QgV3JpdGVGdQogCiAgICAgY2FzZSBOZXdPYmplY3Q6CiAgICAgY2FzZSBOZXdSZWdleHA6
CisgICAgY2FzZSBOZXdHZW5lcmF0b3JGcmFtZToKICAgICBjYXNlIE5ld1N0cmluZ09iamVjdDoK
ICAgICBjYXNlIFBoYW50b21OZXdPYmplY3Q6CiAgICAgY2FzZSBNYXRlcmlhbGl6ZU5ld09iamVj
dDoKQEAgLTExOTksNiArMTIwMCwyMyBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBO
b2RlKiBub2RlLCBjb25zdCBSZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgICAg
ICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQorCisgICAgY2FzZSBTZXRHZW5lcmF0b3JMb2NhbDogeworICAgICAgICByZWFk
KEdlbmVyYXRvckxvY2FsQ291bnQpOworICAgICAgICB3cml0ZShHZW5lcmF0b3JMb2NhbHMpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgY2FzZSBHZXRHZW5lcmF0b3JMb2NhbDogewor
ICAgICAgICByZWFkKEdlbmVyYXRvckxvY2FsQ291bnQpOworICAgICAgICByZWFkKEdlbmVyYXRv
ckxvY2Fscyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBjYXNlIFJlc2l6ZUdlbmVy
YXRvckxvY2FsczogeworICAgICAgICB3cml0ZShHZW5lcmF0b3JMb2NhbENvdW50KTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBUaHJvd1JlZmVyZW5jZUVycm9y
OgogICAgICAgICB3cml0ZShTaWRlU3RhdGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDbG9iYmVyc0V4aXRTdGF0ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcAppbmRleCA4MDlhNDVkNmYxYTY0MDE1ODE5
ZDcyZTNmYTQ4MWU0ZWFiMzM0NzgyLi42YWFmY2JmZGEzNmUxNjQ0NmZmNzk0ZWU4NGMzMDk3ZTIy
NWEwYTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJz
RXhpdFN0YXRlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJz
RXhpdFN0YXRlLmNwcApAQCAtNTMsMTAgKzUzLDE2IEBAIGJvb2wgY2xvYmJlcnNFeGl0U3RhdGUo
R3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgICAgICAvLyBleGl0IHN0YXRlLgogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKKyAgICBjYXNlIFJlc2l6ZUdlbmVyYXRvckxvY2FsczoKKyAgICBj
YXNlIFNldEdlbmVyYXRvckxvY2FsOgorICAgIGNhc2UgR2V0R2VuZXJhdG9yTG9jYWw6CisgICAg
ICAgIHJldHVybiBmYWxzZTsKKwogICAgIGNhc2UgQXJyYXlpZnlUb1N0cnVjdHVyZToKICAgICBj
YXNlIEFycmF5aWZ5OgogICAgIGNhc2UgTmV3T2JqZWN0OgogICAgIGNhc2UgTmV3UmVnZXhwOgor
ICAgIGNhc2UgTmV3R2VuZXJhdG9yRnJhbWU6CiAgICAgY2FzZSBOZXdTdHJpbmdPYmplY3Q6CiAg
ICAgY2FzZSBQaGFudG9tTmV3T2JqZWN0OgogICAgIGNhc2UgTWF0ZXJpYWxpemVOZXdPYmplY3Q6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKaW5kZXggY2FmMzBlMzZhMjYw
MDQ2MDZlNWUxZTE1YWNkZjIxODJjMTg4N2QzNi4uNDliMWRjOGZjZjI2YWY5MGJiMTBjOTM1ZDAz
OTFjMDk0NDNjNWJjNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdE
b2VzR0MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcApA
QCAtMjUwLDYgKzI1MCw5IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkK
ICAgICBjYXNlIEdldER5bmFtaWNWYXI6CiAgICAgY2FzZSBQdXREeW5hbWljVmFyOgogICAgIGNh
c2UgUmVzb2x2ZVNjb3BlOgorICAgIGNhc2UgU2V0R2VuZXJhdG9yTG9jYWw6CisgICAgY2FzZSBH
ZXRHZW5lcmF0b3JMb2NhbDoKKyAgICBjYXNlIFJlc2l6ZUdlbmVyYXRvckxvY2FsczoKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCiAgICAgY2FzZSBDcmVhdGVBY3RpdmF0aW9uOgpAQCAtMjY4LDYg
KzI3MSw3IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNl
IE5ld0FycmF5V2l0aFNpemU6CiAgICAgY2FzZSBOZXdBcnJheUJ1ZmZlcjoKICAgICBjYXNlIE5l
d1JlZ2V4cDoKKyAgICBjYXNlIE5ld0dlbmVyYXRvckZyYW1lOgogICAgIGNhc2UgTmV3U3RyaW5n
T2JqZWN0OgogICAgIGNhc2UgTWFrZVJvcGU6CiAgICAgY2FzZSBOZXdGdW5jdGlvbjoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCmluZGV4IDk3NDU5MGE4OGVk
ZDhmZWFkNjdlOTA2YjJhMWRjM2Q1ZmZhM2Q3ZDAuLmZiZDI5YzFkM2NlMjA3OWRkNzZhN2NlNGM5
M2ZlZDgyODkyNTZhNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Rml4dXBQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBo
YXNlLmNwcApAQCAtMTUxOSw2ICsxNTE5LDI0IEBAIGNsYXNzIEZpeHVwUGhhc2UgOiBwdWJsaWMg
UGhhc2UgewogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIFNl
dEdlbmVyYXRvckxvY2FsOiB7CisgICAgICAgICAgICBmaXhFZGdlPENlbGxVc2U+KG5vZGUtPmNo
aWxkMSgpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0ZUZvckJhcnJpZXIobm9kZS0+Y2hpbGQyKCkp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBjYXNlIEdldEdlbmVy
YXRvckxvY2FsOiB7CisgICAgICAgICAgICBmaXhFZGdlPENlbGxVc2U+KG5vZGUtPmNoaWxkMSgp
KTsKKyAgICAgICAgICAgIC8vIEN1cnJlbnRseSwgd2UgYWx3YXlzIHN0b3JlIHRoZSB2YWx1ZSBh
cyBKU1ZhbHVlIGluIHRoZSBHZW5lcmF0b3JGcmFtZS4KKyAgICAgICAgICAgIG5vZGUtPnNldFJl
c3VsdChOb2RlUmVzdWx0SlMpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAg
ICAgICBjYXNlIFJlc2l6ZUdlbmVyYXRvckxvY2FsczogeworICAgICAgICAgICAgZml4RWRnZTxD
ZWxsVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor
CiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAgICAgICAvLyBIYXZlIHRoZXNlIG5vLW9wIGNhc2Vz
IGhlcmUgdG8gZW5zdXJlIHRoYXQgbm9ib2R5IGZvcmdldHMgdG8gYWRkIGhhbmRsZXJzIGZvciBu
ZXcgb3Bjb2Rlcy4KICAgICAgICAgY2FzZSBTZXRBcmd1bWVudDoKQEAgLTE1NTMsNiArMTU3MSw3
IEBAIGNsYXNzIEZpeHVwUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICBjYXNlIE5ld09i
amVjdDoKICAgICAgICAgY2FzZSBOZXdBcnJheUJ1ZmZlcjoKICAgICAgICAgY2FzZSBOZXdSZWdl
eHA6CisgICAgICAgIGNhc2UgTmV3R2VuZXJhdG9yRnJhbWU6CiAgICAgICAgIGNhc2UgRGVsZXRl
QnlJZDoKICAgICAgICAgY2FzZSBEZWxldGVCeVZhbDoKICAgICAgICAgY2FzZSBJc0pTQXJyYXk6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dlbmVyYXRvckxvY2Fs
RGF0YS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHZW5lcmF0b3JMb2NhbERhdGEu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5jZWFmMWFiYzA1Yjc4Mzg1NDdjMGI3YWViZWRmZjYwNGNjYjVmZDEyCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHZW5lcmF0b3JM
b2NhbERhdGEuaApAQCAtMCwwICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IFl1
c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgREZHR2VuZXJhdG9yTG9jYWxEYXRhX2gK
KyNkZWZpbmUgREZHR2VuZXJhdG9yTG9jYWxEYXRhX2gKKworI2lmIEVOQUJMRShERkdfSklUKQor
CisjaW5jbHVkZSAiREZHQ29tbW9uLmgiCisjaW5jbHVkZSAiU3BlY3VsYXRlZFR5cGUuaCIKKyNp
bmNsdWRlICJWaXJ0dWFsUmVnaXN0ZXIuaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBE
RkcgeworCisKK2NsYXNzIEdlbmVyYXRvckxvY2FsRGF0YSB7CitwdWJsaWM6CisgICAgYm9vbCBw
cmVkaWN0KFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24pCisgICAgeworICAgICAgICByZXR1cm4g
bWVyZ2VTcGVjdWxhdGlvbihtX3ByZWRpY3Rpb24sIHByZWRpY3Rpb24pOworICAgIH0KKworICAg
IFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fcHJl
ZGljdGlvbjsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgU3BlY3VsYXRlZFR5cGUgbV9wcmVkaWN0
aW9uIHsgU3BlY05vbmUgfTsKK307CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKKworI2Vu
ZGlmIC8vIEVOQUJMRShERkdfSklUKQorCisjZW5kaWYgLy8gREZHVmFyaWFibGVBY2Nlc3NEYXRh
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAppbmRleCAwMjFiMGVjODNlM2ZlYmY1
Y2M1M2Q3ZTliNjIxYTRhMGNmN2FhY2YwLi4zMWRlMmMxMDY0MTI1NWE2ZGQ5OTVmNzNiZDljOTJk
N2U5NzQwZjEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBo
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCkBAIC02Myw2ICs2
Myw3IEBAIGNsYXNzIENvbnRyb2xFcXVpdmFsZW5jZUFuYWx5c2lzOwogY2xhc3MgRG9taW5hdG9y
czsKIGNsYXNzIE5hdHVyYWxMb29wczsKIGNsYXNzIFByZVBvc3ROdW1iZXJpbmc7CitjbGFzcyBH
ZW5lcmF0b3JMb2NhbERhdGE7CiAKICNkZWZpbmUgREZHX05PREVfRE9fVE9fQ0hJTERSRU4oZ3Jh
cGgsIG5vZGUsIHRoaW5nVG9EbykgZG8geyAgICAgICAgICAgIFwKICAgICAgICAgTm9kZSogX25v
ZGUgPSAobm9kZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
QEAgLTg3NSw2ICs4NzYsNyBAQCBjbGFzcyBHcmFwaCA6IHB1YmxpYyB2aXJ0dWFsIFNjYW5uYWJs
ZSB7CiAgICAgQmFnPENhbGxWYXJhcmdzRGF0YT4gbV9jYWxsVmFyYXJnc0RhdGE7CiAgICAgQmFn
PExvYWRWYXJhcmdzRGF0YT4gbV9sb2FkVmFyYXJnc0RhdGE7CiAgICAgQmFnPFN0YWNrQWNjZXNz
RGF0YT4gbV9zdGFja0FjY2Vzc0RhdGE7CisgICAgQmFnPEdlbmVyYXRvckxvY2FsRGF0YT4gbV9n
ZW5lcmF0b3JMb2NhbERhdGE7CiAgICAgQmFnPExhenlKU1ZhbHVlPiBtX2xhenlKU1ZhbHVlczsK
ICAgICBWZWN0b3I8SW5saW5lVmFyaWFibGVEYXRhLCA0PiBtX2lubGluZVZhcmlhYmxlRGF0YTsK
ICAgICBIYXNoTWFwPENvZGVCbG9jayosIHN0ZDo6dW5pcXVlX3B0cjxGdWxsQnl0ZWNvZGVMaXZl
bmVzcz4+IG1fYnl0ZWNvZGVMaXZlbmVzczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01h
eUV4aXQuY3BwCmluZGV4IDU3MGIxMGFjNDMyYzg0NDdiMWM4MjM1NWYxYjI5ZGNkMzM5NTk0NWMu
LmIxZDU5Y2I1ZmIwYjhmYzAyMjMwMDIxODM5NTZlMTc3OTBmYTM3NDEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNwcApAQCAtOTAsNiArOTAsOSBAQCBFeGl0TW9kZSBt
YXlFeGl0SW1wbChHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIFN0YXRlVHlwZSYgc3RhdGUpCiAg
ICAgY2FzZSBQdXRCeU9mZnNldDoKICAgICBjYXNlIFB1dENsb3N1cmVWYXI6CiAgICAgY2FzZSBS
ZWNvcmRSZWdFeHBDYWNoZWRSZXN1bHQ6CisgICAgY2FzZSBSZXNpemVHZW5lcmF0b3JMb2NhbHM6
CisgICAgY2FzZSBTZXRHZW5lcmF0b3JMb2NhbDoKKyAgICBjYXNlIEdldEdlbmVyYXRvckxvY2Fs
OgogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgU3RyQ2F0OgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR05vZGUuaAppbmRleCAzYmYzYjJjNzFhYTRlNmI1MGY4NTEwZDM4MDI2MGNiOTlhYWE3ZDlk
Li5lMWRlMDk0ZGVhMmZlN2RkY2Y0MDVlYzVhYTY2MjVkNzVlNGM5YTQ0IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR05vZGUuaApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIkRGR0FycmF5
TW9kZS5oIgogI2luY2x1ZGUgIkRGR0NvbW1vbi5oIgogI2luY2x1ZGUgIkRGR0Vwb2NoLmgiCisj
aW5jbHVkZSAiREZHR2VuZXJhdG9yTG9jYWxEYXRhLmgiCiAjaW5jbHVkZSAiREZHTGF6eUpTVmFs
dWUuaCIKICNpbmNsdWRlICJERkdNdWx0aUdldEJ5T2Zmc2V0RGF0YS5oIgogI2luY2x1ZGUgIkRG
R05vZGVGbGFncy5oIgpAQCAtOTQ2LDEyICs5NDcsNzggQEAgc3RydWN0IE5vZGUgewogICAgICAg
ICB9CiAgICAgfQogCisgICAgYm9vbCBoYXNHZW5lcmF0b3JMb2NhbHNTaXplKCkKKyAgICB7Cisg
ICAgICAgIHN3aXRjaCAob3AoKSkgeworICAgICAgICBjYXNlIE5ld0dlbmVyYXRvckZyYW1lOgor
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKICAgICB1bnNpZ25lZCBnZXRQdXRJbmZv
KCkKICAgICB7CiAgICAgICAgIEFTU0VSVChoYXNHZXRQdXRJbmZvKCkpOwogICAgICAgICByZXR1
cm4gbV9vcEluZm8yOwogICAgIH0KIAorICAgIHVuc2lnbmVkIGdlbmVyYXRvckxvY2Fsc1NpemUo
KQorICAgIHsKKyAgICAgICAgQVNTRVJUKGhhc0dlbmVyYXRvckxvY2Fsc1NpemUoKSk7CisgICAg
ICAgIHJldHVybiBtX29wSW5mbzsKKyAgICB9CisKKyAgICBib29sIGhhc0dlbmVyYXRvckxvY2Fs
SW5kZXgoKQorICAgIHsKKyAgICAgICAgc3dpdGNoIChvcCgpKSB7CisgICAgICAgIGNhc2UgU2V0
R2VuZXJhdG9yTG9jYWw6CisgICAgICAgIGNhc2UgR2V0R2VuZXJhdG9yTG9jYWw6CisgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHVuc2lnbmVkIGdlbmVyYXRvckxvY2FsSW5k
ZXgoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGhhc0dlbmVyYXRvckxvY2FsSW5kZXgoKSk7Cisg
ICAgICAgIHJldHVybiBtX29wSW5mbzsKKyAgICB9CisKKyAgICBib29sIGhhc0dlbmVyYXRvckxv
Y2FsRGF0YSgpCisgICAgeworICAgICAgICBzd2l0Y2ggKG9wKCkpIHsKKyAgICAgICAgY2FzZSBT
ZXRHZW5lcmF0b3JMb2NhbDoKKyAgICAgICAgY2FzZSBHZXRHZW5lcmF0b3JMb2NhbDoKKyAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICB9CisgICAgfQorCisgICAgR2VuZXJhdG9yTG9jYWxEYXRhKiBnZW5l
cmF0b3JMb2NhbERhdGEoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGhhc0dlbmVyYXRvckxvY2Fs
RGF0YSgpKTsKKyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8R2VuZXJhdG9yTG9jYWxE
YXRhKj4obV9vcEluZm8yKTsKKyAgICB9CisKKyAgICBib29sIGhhc0dlbmVyYXRvckZyYW1lTG9j
YWxzKCkKKyAgICB7CisgICAgICAgIHN3aXRjaCAob3AoKSkgeworICAgICAgICBjYXNlIFJlc2l6
ZUdlbmVyYXRvckxvY2FsczoKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorCisgICAg
dW5zaWduZWQgZ2VuZXJhdG9yRnJhbWVMb2NhbHMoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGhh
c0dlbmVyYXRvckZyYW1lTG9jYWxzKCkpOworICAgICAgICByZXR1cm4gbV9vcEluZm87CisgICAg
fQorCiAgICAgYm9vbCBoYXNBY2Nlc3NvckF0dHJpYnV0ZXMoKQogICAgIHsKICAgICAgICAgc3dp
dGNoIChvcCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05v
ZGVUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKaW5kZXgg
ZjkzYjNiZjE0MjAwY2YwNDVlNjhhNjQxZTdkNmIwMDE3Yzc0ZjEzNy4uNWQ0MDVjMmZjOGZjOWJk
N2Q2Y2IyZTY5MzQ2NzMwMDkzMDE1ZGZhNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdOb2RlVHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Tm9kZVR5cGUuaApAQCAtODIsNiArODIsMTAgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBE
RkcgewogICAgIG1hY3JvKEZsdXNoLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oUGhh
bnRvbUxvY2FsLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgXAorICAgIG1hY3JvKFNldEdlbmVy
YXRvckxvY2FsLCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgbWFjcm8oR2V0R2VuZXJhdG9yTG9j
YWwsIE5vZGVSZXN1bHRKUykgXAorICAgIG1hY3JvKFJlc2l6ZUdlbmVyYXRvckxvY2FscywgTm9k
ZU11c3RHZW5lcmF0ZSkgXAorICAgIFwKICAgICAvKiBIaW50IHRoYXQgdGhpcyBpcyB3aGVyZSBi
eXRlY29kZSB0aGlua3MgaXMgYSBnb29kIHBsYWNlIHRvIE9TUi4gTm90ZSB0aGF0IHRoaXMgKi9c
CiAgICAgLyogd2lsbCBleGlzdCBldmVuIGluIGlubGluZWQgbG9vcHMuIFRoaXMgaGFzIG5vIGV4
ZWN1dGlvbiBzZW1hbnRpY3MgYnV0IGl0IG11c3QgKi9cCiAgICAgLyogc3Vydml2ZSBhbGwgRENF
LiBXZSB0cmVhdCB0aGlzIGFzIGJlaW5nIGEgY2FuLWV4aXQgYmVjYXVzZSB0aWVyLXVwIHRvIEZU
TCBtYXkgKi9cCkBAIC0yODgsNiArMjkyLDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBE
RkcgewogICAgIG1hY3JvKE5ld0FycmF5QnVmZmVyLCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNy
byhOZXdUeXBlZEFycmF5LCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAg
bWFjcm8oTmV3UmVnZXhwLCBOb2RlUmVzdWx0SlMpIFwKKyAgICBtYWNybyhOZXdHZW5lcmF0b3JG
cmFtZSwgTm9kZVJlc3VsdEpTKSBcCiAgICAgLyogUmVzdCBQYXJhbWV0ZXIgKi9cCiAgICAgbWFj
cm8oR2V0UmVzdExlbmd0aCwgTm9kZVJlc3VsdEludDMyKSBcCiAgICAgbWFjcm8oQ29weVJlc3Qs
IE5vZGVNdXN0R2VuZXJhdGUpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJh
dGlvbnMuY3BwCmluZGV4IDY5YTE2ZWI1ZGE0MzU1YmM3OTI1YzVkZmRjYjA2MjAyM2U5OTY1MDIu
LmQwZGYzYzIxZGZmMGM2MGVlYTYxYTQxYWNhNjliNzRiZjljYzdlZjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcApAQCAtNDIsOCArNDIsOSBAQAogI2lu
Y2x1ZGUgIkRpcmVjdEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIkZUTEZvck9TUkVudHJ5SklUQ29k
ZS5oIgogI2luY2x1ZGUgIkZUTE9TUkVudHJ5LmgiCi0jaW5jbHVkZSAiSG9zdENhbGxSZXR1cm5W
YWx1ZS5oIgorI2luY2x1ZGUgIkdlbmVyYXRvckZyYW1lLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0
dGVyLmgiCisjaW5jbHVkZSAiSG9zdENhbGxSZXR1cm5WYWx1ZS5oIgogI2luY2x1ZGUgIkludGVy
cHJldGVyLmgiCiAjaW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSklURXhjZXB0aW9ucy5oIgpA
QCAtOTg5LDYgKzk5MCwxMSBAQCBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Zsb2F0
NjRBcnJheVdpdGhPbmVBcmd1bWVudCgKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFy
Kj4oY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50czxKU0Zsb2F0NjRB
cnJheT4oZXhlYywgc3RydWN0dXJlLCBlbmNvZGVkVmFsdWUsIDAsIE51bGxvcHQpKTsKIH0KIAor
Y2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdHZW5lcmF0b3JGcmFtZShFeGVjU3RhdGUq
IGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBpbnQzMl90IG51bWJlck9mQ2FsbGVlTG9jYWxz
KQoreworICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8Y2hhcio+KEdlbmVyYXRvckZyYW1lOjpjcmVh
dGUoZXhlYy0+dm0oKSwgc3RydWN0dXJlLCBudW1iZXJPZkNhbGxlZUxvY2FscykpOworfQorCiBK
U0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRlQWN0aXZhdGlvbkRpcmVjdChFeGVj
U3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU1Njb3BlKiBzY29wZSwgU3ltYm9s
VGFibGUqIHRhYmxlLCBFbmNvZGVkSlNWYWx1ZSBpbml0aWFsVmFsdWVFbmNvZGVkKQogewogICAg
IEpTVmFsdWUgaW5pdGlhbFZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGluaXRpYWxWYWx1ZUVuY29k
ZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25z
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAppbmRleCBmYmM4
NjJmZTFlYTg0NmQyZjdjM2ZhMjcyNzZlODNkMDYxYjhmMjJiLi4yZjhmYjRmNmVkZTZiMjMwMDA2
ZTBkYjFkZjc2ZDZiMjNiZGRlNjNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09w
ZXJhdGlvbnMuaApAQCAtODMsNiArODMsNyBAQCBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bk5ld0Zsb2F0MzJBcnJheVdpdGhTaXplKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSosIGludAogY2hh
ciogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdGbG9hdDMyQXJyYXlXaXRoT25lQXJndW1lbnQo
RXhlY1N0YXRlKiwgU3RydWN0dXJlKiwgRW5jb2RlZEpTVmFsdWUpIFdURl9JTlRFUk5BTDsKIGNo
YXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3RmxvYXQ2NEFycmF5V2l0aFNpemUoRXhlY1N0
YXRlKiwgU3RydWN0dXJlKiwgaW50MzJfdCkgV1RGX0lOVEVSTkFMOwogY2hhciogSklUX09QRVJB
VElPTiBvcGVyYXRpb25OZXdGbG9hdDY0QXJyYXlXaXRoT25lQXJndW1lbnQoRXhlY1N0YXRlKiwg
U3RydWN0dXJlKiwgRW5jb2RlZEpTVmFsdWUpIFdURl9JTlRFUk5BTDsKK2NoYXIqIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uTmV3R2VuZXJhdG9yRnJhbWUoRXhlY1N0YXRlKiwgU3RydWN0dXJlKiwg
aW50MzJfdCkgV1RGX0lOVEVSTkFMOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5
VmFsU3RyaWN0KEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkUHJvcGVydHksIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkgV1RG
X0lOVEVSTkFMOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsTm9uU3RyaWN0
KEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkUHJvcGVydHksIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkgV1RGX0lOVEVSTkFM
Owogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsQ2VsbFN0cmljdChFeGVjU3Rh
dGUqLCBKU0NlbGwqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkUHJvcGVydHksIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRWYWx1ZSkgV1RGX0lOVEVSTkFMOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAppbmRl
eCBhMmRiZTQ0NGI2ZWQzNzFiMDA1OWMzODBhODdkZGE5YzYxNjdjM2U5Li5jYzAwNzQyNTdiZWNh
ODYzYTMxNDcyZTQ0ZDI0MDdkMzg1ZWRiMjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcApAQCAt
MTY4LDYgKzE2OCwyNCBAQCBjbGFzcyBQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZSA6IHB1Ymxp
YyBQaGFzZSB7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCisgICAgICAgIGNhc2Ug
U2V0R2VuZXJhdG9yTG9jYWw6IHsKKyAgICAgICAgICAgIEdlbmVyYXRvckxvY2FsRGF0YSogZ2Vu
ZXJhdG9yTG9jYWxEYXRhID0gbm9kZS0+Z2VuZXJhdG9yTG9jYWxEYXRhKCk7CisgICAgICAgICAg
ICBjaGFuZ2VkIHw9IGdlbmVyYXRvckxvY2FsRGF0YS0+cHJlZGljdChub2RlLT5jaGlsZDIoKS0+
cHJlZGljdGlvbigpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAg
Y2FzZSBHZXRHZW5lcmF0b3JMb2NhbDogeworICAgICAgICAgICAgR2VuZXJhdG9yTG9jYWxEYXRh
KiB2YXJpYWJsZSA9IG5vZGUtPmdlbmVyYXRvckxvY2FsRGF0YSgpOworICAgICAgICAgICAgU3Bl
Y3VsYXRlZFR5cGUgcHJlZGljdGlvbiA9IHZhcmlhYmxlLT5wcmVkaWN0aW9uKCk7CisgICAgICAg
ICAgICAvLyBXZSBhbHdheXMgc3RvcmUgdGhlIHZhbHVlIGluIEdlbmVyYXRvckxvY2FsIGFzIEZv
cm1hdEpTVmFsdWUuCisgICAgICAgICAgICAvLyBTbyBkb3VibGUgdmFsdWUgaXMgYmV0dGVyIHRo
YW4gSW50NTIgdmFsdWUuCisgICAgICAgICAgICBpZiAoZW5hYmxlSW50NTIoKSAmJiAocHJlZGlj
dGlvbiAmIFNwZWNJbnQ1Mk9ubHkpKQorICAgICAgICAgICAgICAgIHByZWRpY3Rpb24gPSAocHJl
ZGljdGlvbiB8IFNwZWNBbnlJbnRBc0RvdWJsZSkgJiB+U3BlY0ludDUyT25seTsKKyAgICAgICAg
ICAgIGlmIChwcmVkaWN0aW9uKQorICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVk
aWN0aW9uKHByZWRpY3Rpb24pOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKwogICAg
ICAgICBjYXNlIFVJbnQzMlRvTnVtYmVyOiB7CiAgICAgICAgICAgICBpZiAobm9kZS0+Y2FuU3Bl
Y3VsYXRlSW50MzIobV9wYXNzKSkKICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJl
ZGljdGlvbihTcGVjSW50MzJPbmx5KTsKQEAgLTg0OSw3ICs4NjcsOCBAQCBjbGFzcyBQcmVkaWN0
aW9uUHJvcGFnYXRpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogICAgICAgICAgICAgCi0gICAgICAgIGNhc2UgQ3JlYXRlQWN0aXZhdGlvbjog
eworICAgICAgICBjYXNlIENyZWF0ZUFjdGl2YXRpb246CisgICAgICAgIGNhc2UgTmV3R2VuZXJh
dG9yRnJhbWU6IHsKICAgICAgICAgICAgIHNldFByZWRpY3Rpb24oU3BlY09iamVjdE90aGVyKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0xMDY0LDYgKzEwODMsNyBAQCBjbGFz
cyBQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgIGNh
c2UgRm9yd2FyZFZhcmFyZ3M6CiAgICAgICAgIGNhc2UgQ29weVJlc3Q6CiAgICAgICAgIGNhc2Ug
UHV0RHluYW1pY1ZhcjoKKyAgICAgICAgY2FzZSBSZXNpemVHZW5lcmF0b3JMb2NhbHM6CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIAogICAgICAgICAvLyBUaGlzIGdldHMgaWdub3Jl
ZCBiZWNhdXNlIGl0IG9ubHkgcHJldGVuZHMgdG8gcHJvZHVjZSBhIHZhbHVlLgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAppbmRleCBjMWEzYmJlM2ZmZGE3
OWJhMDY3YmQ3MDZkZTY0YWNhMjZmMDdhMTc4Li42YTZkZjdmNzhjOWZlZjY1NTdlYmM4NDUzM2Vk
ZGYzZGViMWE0NzBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nh
ZmVUb0V4ZWN1dGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4
ZWN1dGUuaApAQCAtMjUwLDYgKzI1MCw3IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0
YXRlVHlwZSYgc3RhdGUsIEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIE5ld0Fy
cmF5V2l0aFNpemU6CiAgICAgY2FzZSBOZXdBcnJheUJ1ZmZlcjoKICAgICBjYXNlIE5ld1JlZ2V4
cDoKKyAgICBjYXNlIE5ld0dlbmVyYXRvckZyYW1lOgogICAgIGNhc2UgUHJvZmlsZVR5cGU6CiAg
ICAgY2FzZSBQcm9maWxlQ29udHJvbEZsb3c6CiAgICAgY2FzZSBDaGVja1R5cGVJbmZvRmxhZ3M6
CkBAIC0zNDYsNiArMzQ3LDkgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBl
JiBzdGF0ZSwgR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgR2V0TXlBcmd1bWVu
dEJ5VmFsT3V0T2ZCb3VuZHM6CiAgICAgY2FzZSBGb3J3YXJkVmFyYXJnczoKICAgICBjYXNlIENv
cHlSZXN0OgorICAgIGNhc2UgU2V0R2VuZXJhdG9yTG9jYWw6CisgICAgY2FzZSBHZXRHZW5lcmF0
b3JMb2NhbDoKKyAgICBjYXNlIFJlc2l6ZUdlbmVyYXRvckxvY2FsczoKICAgICBjYXNlIFN0cmlu
Z1JlcGxhY2U6CiAgICAgY2FzZSBTdHJpbmdSZXBsYWNlUmVnRXhwOgogICAgIGNhc2UgR2V0UmVn
RXhwT2JqZWN0TGFzdEluZGV4OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmNwcAppbmRleCBmNzM5MWRjMjgwMzJhZDQyNWVhYzg4MTA4YjBmNWRlNTVi
OTExZWRmLi5mOGM3YjJiYTRlNjA4NWQ3OWFmNmZmOWFlMjNlOGE0ODM1N2RlNDU4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApAQCAtMzgs
NiArMzgsNyBAQAogI2luY2x1ZGUgIkRGR1NhbmVTdHJpbmdHZXRCeVZhbFNsb3dQYXRoR2VuZXJh
dG9yLmgiCiAjaW5jbHVkZSAiREZHU2xvd1BhdGhHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJEaXJl
Y3RBcmd1bWVudHMuaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JGcmFtZS5oIgogI2luY2x1ZGUgIkpJ
VEFkZEdlbmVyYXRvci5oIgogI2luY2x1ZGUgIkpJVEJpdEFuZEdlbmVyYXRvci5oIgogI2luY2x1
ZGUgIkpJVEJpdE9yR2VuZXJhdG9yLmgiCkBAIC02ODc2LDYgKzY4NzcsNDIgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZU5ld1N0cmluZ09iamVjdChOb2RlKiBub2RlKQogICAgIGNlbGxS
ZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKIH0KIAordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZU5ld0dlbmVyYXRvckZyYW1lKE5vZGUqIG5vZGUpCit7CisgICAgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCA9IG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYyk7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBnbG9iYWxPYmplY3QtPmdlbmVy
YXRvckZyYW1lU3RydWN0dXJlKCk7CisgICAgdW5zaWduZWQgZ2VuZXJhdG9yTG9jYWxzU2l6ZSA9
IG5vZGUtPmdlbmVyYXRvckxvY2Fsc1NpemUoKTsKKworICAgIEdQUlRlbXBvcmFyeSByZXN1bHQo
dGhpcyk7CisgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2gxKHRoaXMpOworICAgIEdQUlRlbXBvcmFy
eSBzY3JhdGNoMih0aGlzKTsKKworICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7
CisgICAgR1BSUmVnIHNjcmF0Y2gxR1BSID0gc2NyYXRjaDEuZ3ByKCk7CisgICAgR1BSUmVnIHNj
cmF0Y2gyR1BSID0gc2NyYXRjaDIuZ3ByKCk7CisKKyAgICBKSVRDb21waWxlcjo6SnVtcExpc3Qg
c2xvd1BhdGg7CisKKyAgICBlbWl0QWxsb2NhdGVKU09iamVjdFdpdGhLbm93blNpemU8R2VuZXJh
dG9yRnJhbWU+KHJlc3VsdEdQUiwgVHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpLCBUcnVzdGVkSW1t
UHRyKG51bGxwdHIpLCBzY3JhdGNoMUdQUiwgc2NyYXRjaDJHUFIsIHNsb3dQYXRoLCBHZW5lcmF0
b3JGcmFtZTo6YWxsb2NhdGlvblNpemVGb3JMb2NhbHMoZ2VuZXJhdG9yTG9jYWxzU2l6ZSkpOwor
ICAgIG1faml0LnN0b3JlMzIoVHJ1c3RlZEltbTMyKGdlbmVyYXRvckxvY2Fsc1NpemUpLCBKSVRD
b21waWxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIEdlbmVyYXRvckZyYW1lOjpudW1iZXJPZkNhbGxl
ZUxvY2Fsc09mZnNldCgpKSk7CisgICAgbV9qaXQuc3RvcmUzMihUcnVzdGVkSW1tMzIoMCksIEpJ
VENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgR2VuZXJhdG9yRnJhbWU6Om51bWJlck9mU2F2
ZWRDYWxsZWVMb2NhbHNPZmZzZXQoKSkpOworICAgIEpTVmFsdWUgZW1wdHlWYWx1ZTsKKyAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZ2VuZXJhdG9yTG9jYWxzU2l6ZTsgKytpKQorICAgICAg
ICBtX2ppdC5zdG9yZVRydXN0ZWRWYWx1ZShlbXB0eVZhbHVlLCBKSVRDb21waWxlcjo6QWRkcmVz
cyhyZXN1bHRHUFIsIEdlbmVyYXRvckZyYW1lOjpsb2NhbE9mZnNldChpKSkpOworCisgICAgYWRk
U2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dQYXRoLCB0aGlzLCBvcGVyYXRpb25O
ZXdHZW5lcmF0b3JGcmFtZSwgcmVzdWx0R1BSLCBzdHJ1Y3R1cmUsIGdlbmVyYXRvckxvY2Fsc1Np
emUpKTsKKworICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKK30KKwordm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZVJlc2l6ZUdlbmVyYXRvckxvY2FscyhOb2RlKiBub2RlKQorewor
ICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGZyYW1lKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAg
ICBHUFJSZWcgZnJhbWVHUFIgPSBmcmFtZS5ncHIoKTsKKyAgICBtX2ppdC5zdG9yZTMyKFRydXN0
ZWRJbW0zMihub2RlLT5nZW5lcmF0b3JGcmFtZUxvY2FscygpKSwgSklUQ29tcGlsZXI6OkFkZHJl
c3MoZnJhbWVHUFIsIEdlbmVyYXRvckZyYW1lOjpudW1iZXJPZlNhdmVkQ2FsbGVlTG9jYWxzT2Zm
c2V0KCkpKTsKKyAgICBub1Jlc3VsdChub2RlKTsKK30KKwogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZU5ld1R5cGVkQXJyYXkoTm9kZSogbm9kZSkKIHsKICAgICBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0ID0gbV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuaAppbmRleCBiNzdlYWQ2YzgxZDI1MjZjM2YwNDdhZDA4YjhjZWI1MmEwNmNkYzUzLi5jZjAy
Yjg2MTkxYjA0ZDg1YzEwMjE3ODRlNWI1NWJmNWIzOTU4YzkzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCkBAIC0yNTI5LDYgKzI1MjksOCBAQCBj
bGFzcyBTcGVjdWxhdGl2ZUpJVCB7CiAgICAgdm9pZCBjb21waWxlUHV0QnlWYWxGb3JGbG9hdFR5
cGVkQXJyYXkoR1BSUmVnIGJhc2UsIEdQUlJlZyBwcm9wZXJ0eSwgTm9kZSosIFR5cGVkQXJyYXlU
eXBlKTsKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2xhc3NUeXBlPiB2b2lkIGNvbXBpbGVOZXdG
dW5jdGlvbkNvbW1vbihHUFJSZWcsIFN0cnVjdHVyZSosIEdQUlJlZywgR1BSUmVnLCBHUFJSZWcs
IE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCYsIHNpemVfdCwgRnVuY3Rpb25FeGVjdXRhYmxlKiwg
cHRyZGlmZl90LCBwdHJkaWZmX3QsIHB0cmRpZmZfdCk7CiAgICAgdm9pZCBjb21waWxlTmV3RnVu
Y3Rpb24oTm9kZSopOworICAgIHZvaWQgY29tcGlsZU5ld0dlbmVyYXRvckZyYW1lKE5vZGUqKTsK
KyAgICB2b2lkIGNvbXBpbGVSZXNpemVHZW5lcmF0b3JMb2NhbHMoTm9kZSopOwogICAgIHZvaWQg
Y29tcGlsZVNldEZ1bmN0aW9uTmFtZShOb2RlKik7CiAgICAgdm9pZCBjb21waWxlRm9yd2FyZFZh
cmFyZ3MoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUNyZWF0ZUFjdGl2YXRpb24oTm9kZSopOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMy
XzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82
NC5jcHAKaW5kZXggNzQ2YzQwOTYwNTk0ZjgxOWVlZGY3NDA5MWQzYzdiMzU3ODY5M2NkMS4uODdj
MmI0OTRlMTE4MDQ0ZmE0NWE2MzQ4NzA5ZGQ2ZjFhNDdlOTA2NyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCkBAIC0zNyw2
ICszNyw3IEBACiAjaW5jbHVkZSAiREZHU2xvd1BhdGhHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJE
ZWJ1Z2dlci5oIgogI2luY2x1ZGUgIkRpcmVjdEFyZ3VtZW50cy5oIgorI2luY2x1ZGUgIkdlbmVy
YXRvckZyYW1lLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiSlNFbnZp
cm9ubWVudFJlY29yZC5oIgogI2luY2x1ZGUgIkpTTGV4aWNhbEVudmlyb25tZW50LmgiCkBAIC00
MDE3LDYgKzQwMTgsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2Rl
KQogICAgICAgICBjb21waWxlQ2FsbE9iamVjdENvbnN0cnVjdG9yKG5vZGUpOwogICAgICAgICBi
cmVhazsKICAgICB9CisKKyAgICBjYXNlIE5ld0dlbmVyYXRvckZyYW1lOiB7CisgICAgICAgIGNv
bXBpbGVOZXdHZW5lcmF0b3JGcmFtZShub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogICAg
ICAgICAKICAgICBjYXNlIFRvVGhpczogewogICAgICAgICBBU1NFUlQobm9kZS0+Y2hpbGQxKCku
dXNlS2luZCgpID09IFVudHlwZWRVc2UpOwpAQCAtNTE3NCw2ICs1MTgwLDQxIEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgY2VsbFJlc3VsdChyZXN1
bHRHUFIsIG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9CisgICAgY2FzZSBTZXRHZW5lcmF0
b3JMb2NhbDogeworICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBmcmFtZSh0aGlzLCBub2Rl
LT5jaGlsZDEoKSk7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNo
aWxkMigpKTsKKworICAgICAgICBHUFJSZWcgZnJhbWVHUFIgPSBmcmFtZS5ncHIoKTsKKyAgICAg
ICAgR1BSUmVnIHZhbHVlVGFnR1BSID0gdmFsdWUudGFnR1BSKCk7CisgICAgICAgIEdQUlJlZyB2
YWx1ZVBheWxvYWRHUFIgPSB2YWx1ZS5wYXlsb2FkR1BSKCk7CisgICAgICAgIHVuc2lnbmVkIGdl
bmVyYXRvckxvY2FsSW5kZXggPSBub2RlLT5nZW5lcmF0b3JMb2NhbEluZGV4KCk7CisKKyAgICAg
ICAgbV9qaXQuc3RvcmUzMih2YWx1ZVRhZ0dQUiwgSklUQ29tcGlsZXI6OkFkZHJlc3MoZnJhbWVH
UFIsIEdlbmVyYXRvckZyYW1lOjpsb2NhbE9mZnNldChnZW5lcmF0b3JMb2NhbEluZGV4KSArIE9C
SkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy50YWcpKSk7CisgICAgICAgIG1faml0LnN0
b3JlMzIodmFsdWVQYXlsb2FkR1BSLCBKSVRDb21waWxlcjo6QWRkcmVzcyhmcmFtZUdQUiwgR2Vu
ZXJhdG9yRnJhbWU6OmxvY2FsT2Zmc2V0KGdlbmVyYXRvckxvY2FsSW5kZXgpICsgT0JKRUNUX09G
RlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnBheWxvYWQpKSk7CisKKyAgICAgICAgbm9SZXN1bHQo
bm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIEdldEdlbmVyYXRvckxvY2Fs
OiB7CisgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGZyYW1lKHRoaXMsIG5vZGUtPmNoaWxk
MSgpKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdFRhZyh0aGlzKTsKKyAgICAgICAgR1BS
VGVtcG9yYXJ5IHJlc3VsdFBheWxvYWQodGhpcyk7CisKKyAgICAgICAgR1BSUmVnIGZyYW1lR1BS
ID0gZnJhbWUuZ3ByKCk7CisgICAgICAgIEdQUlJlZyByZXN1bHRUYWdHUFIgPSByZXN1bHRUYWcu
Z3ByKCk7CisgICAgICAgIEdQUlJlZyByZXN1bHRQYXlsb2FkR1BSID0gcmVzdWx0UGF5bG9hZC5n
cHIoKTsKKyAgICAgICAgdW5zaWduZWQgZ2VuZXJhdG9yTG9jYWxJbmRleCA9IG5vZGUtPmdlbmVy
YXRvckxvY2FsSW5kZXgoKTsKKworICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OkFk
ZHJlc3MoZnJhbWVHUFIsIEdlbmVyYXRvckZyYW1lOjpsb2NhbE9mZnNldChnZW5lcmF0b3JMb2Nh
bEluZGV4KSArIE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy50YWcpKSwgcmVzdWx0
VGFnR1BSKTsKKyAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGZyYW1l
R1BSLCBHZW5lcmF0b3JGcmFtZTo6bG9jYWxPZmZzZXQoZ2VuZXJhdG9yTG9jYWxJbmRleCkgKyBP
QkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMucGF5bG9hZCkpLCByZXN1bHRQYXlsb2Fk
R1BSKTsKKworICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9h
ZEdQUiwgbm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIFJlc2l6ZUdlbmVy
YXRvckxvY2FsczogeworICAgICAgICBjb21waWxlUmVzaXplR2VuZXJhdG9yTG9jYWxzKG5vZGUp
OworICAgICAgICBicmVhazsKKyAgICB9CiAgICAgY2FzZSBQcm9maWxlVHlwZTogewogICAgICAg
ICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIEdQ
UlRlbXBvcmFyeSBzY3JhdGNoMSh0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4IDI0ZDZlMzI3ODBiZDMyNDFjM2ZmYmU3
NWU5ZGNmNGVhN2IyNjUxNWEuLjA0NzIzNTM0ZjU1ZTk2MmQwMDFmNTVmOTJhZDY1ZWVkMDhmYjg0
MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQ2NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDY0LmNwcApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIkRGR1Nsb3dQYXRoR2VuZXJhdG9y
LmgiCiAjaW5jbHVkZSAiRGVidWdnZXIuaCIKICNpbmNsdWRlICJEaXJlY3RBcmd1bWVudHMuaCIK
KyNpbmNsdWRlICJHZW5lcmF0b3JGcmFtZS5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgog
I2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU0Vudmlyb25tZW50UmVjb3JkLmgi
CkBAIC0zOTU1LDYgKzM5NTYsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2Rl
KiBub2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNlIE5ld0dlbmVyYXRvckZy
YW1lOiB7CisgICAgICAgIGNvbXBpbGVOZXdHZW5lcmF0b3JGcmFtZShub2RlKTsKKyAgICAgICAg
YnJlYWs7CisgICAgfQorICAgICAgICAKICAgICBjYXNlIFRvVGhpczogewogICAgICAgICBBU1NF
UlQobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IFVudHlwZWRVc2UpOwogICAgICAgICBKU1Zh
bHVlT3BlcmFuZCB0aGlzVmFsdWUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwpAQCAtNTA5OSw2ICs1
MTA1LDM1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAg
ICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogICAgICAgICBicmVhazsKICAgICB9Cisg
ICAgY2FzZSBTZXRHZW5lcmF0b3JMb2NhbDogeworICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFu
ZCBmcmFtZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIHZh
bHVlKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKKworICAgICAgICBHUFJSZWcgZnJhbWVHUFIgPSBm
cmFtZS5ncHIoKTsKKyAgICAgICAgR1BSUmVnIHZhbHVlR1BSID0gdmFsdWUuZ3ByKCk7CisgICAg
ICAgIHVuc2lnbmVkIGdlbmVyYXRvckxvY2FsSW5kZXggPSBub2RlLT5nZW5lcmF0b3JMb2NhbElu
ZGV4KCk7CisKKyAgICAgICAgbV9qaXQuc3RvcmU2NCh2YWx1ZUdQUiwgSklUQ29tcGlsZXI6OkFk
ZHJlc3MoZnJhbWVHUFIsIEdlbmVyYXRvckZyYW1lOjpsb2NhbE9mZnNldChnZW5lcmF0b3JMb2Nh
bEluZGV4KSkpOworCisgICAgICAgIG5vUmVzdWx0KG5vZGUpOworICAgICAgICBicmVhazsKKyAg
ICB9CisgICAgY2FzZSBHZXRHZW5lcmF0b3JMb2NhbDogeworICAgICAgICBTcGVjdWxhdGVDZWxs
T3BlcmFuZCBmcmFtZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIEdQUlRlbXBvcmFy
eSByZXN1bHQodGhpcyk7CisKKyAgICAgICAgR1BSUmVnIGZyYW1lR1BSID0gZnJhbWUuZ3ByKCk7
CisgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CisgICAgICAgIHVuc2ln
bmVkIGdlbmVyYXRvckxvY2FsSW5kZXggPSBub2RlLT5nZW5lcmF0b3JMb2NhbEluZGV4KCk7CisK
KyAgICAgICAgbV9qaXQubG9hZDY0KEpJVENvbXBpbGVyOjpBZGRyZXNzKGZyYW1lR1BSLCBHZW5l
cmF0b3JGcmFtZTo6bG9jYWxPZmZzZXQoZ2VuZXJhdG9yTG9jYWxJbmRleCkpLCByZXN1bHRHUFIp
OworICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CisgICAgICAgIGJyZWFr
OworICAgIH0KKyAgICBjYXNlIFJlc2l6ZUdlbmVyYXRvckxvY2FsczogeworICAgICAgICBjb21w
aWxlUmVzaXplR2VuZXJhdG9yTG9jYWxzKG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CiAg
ICAgY2FzZSBQcm9maWxlVHlwZTogewogICAgICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlz
LCBub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoMSh0aGlzKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5z
ZXJ0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJp
ZXJJbnNlcnRpb25QaGFzZS5jcHAKaW5kZXggYjYzMTIwOWU4ZDE3MjY4ZDA5YTNlMDc3ODJkNzhj
OTM0NjJkMGJmYy4uYzkzN2JkOWQyNzEzYjRlOThhNTQzYWJlZWY3NzdmYTIyNzBiN2VmYSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRp
b25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJp
ZXJJbnNlcnRpb25QaGFzZS5jcHAKQEAgLTI4Myw2ICsyODMsMTEgQEAgY2xhc3MgU3RvcmVCYXJy
aWVySW5zZXJ0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgICAgIGNvbnNp
ZGVyQmFycmllcihtX25vZGUtPmNoaWxkMSgpLCBtX25vZGUtPmNoaWxkMigpKTsKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgY2FzZSBTZXRHZW5l
cmF0b3JMb2NhbDogeworICAgICAgICAgICAgICAgIGNvbnNpZGVyQmFycmllcihtX25vZGUtPmNo
aWxkMSgpLCBtX25vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgIGNhc2UgU2V0RnVuY3Rpb25O
YW1lOiB7CiAgICAgICAgICAgICAgICAgY29uc2lkZXJCYXJyaWVyKG1fbm9kZS0+Y2hpbGQxKCks
IG1fbm9kZS0+Y2hpbGQyKCkpOwpAQCAtMzAzLDYgKzMwOCw3IEBAIGNsYXNzIFN0b3JlQmFycmll
ckluc2VydGlvblBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgIGNhc2UgTmV3QXJy
YXlCdWZmZXI6CiAgICAgICAgICAgICBjYXNlIE5ld1R5cGVkQXJyYXk6CiAgICAgICAgICAgICBj
YXNlIE5ld1JlZ2V4cDoKKyAgICAgICAgICAgIGNhc2UgTmV3R2VuZXJhdG9yRnJhbWU6CiAgICAg
ICAgICAgICBjYXNlIE1hdGVyaWFsaXplTmV3T2JqZWN0OgogICAgICAgICAgICAgY2FzZSBNYXRl
cmlhbGl6ZUNyZWF0ZUFjdGl2YXRpb246CiAgICAgICAgICAgICBjYXNlIE5ld1N0cmluZ09iamVj
dDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RydWN0dXJlUmVn
aXN0cmF0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1
cmVSZWdpc3RyYXRpb25QaGFzZS5jcHAKaW5kZXggNTFjZjQ4OTYwYThiMWZmNTcyYTg2OWVhZTE4
YmYwYTlmNWEyNzlkZC4uMDBkMTk4YzM5MDk1MzY1Y2U3ODYyZjc2YjE3ZjUzYmU0NjViOTI4ZSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVSZWdpc3Ry
YXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1
cmVSZWdpc3RyYXRpb25QaGFzZS5jcHAKQEAgLTEzNSw2ICsxMzUsOSBAQCBjbGFzcyBTdHJ1Y3R1
cmVSZWdpc3RyYXRpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICAgICAgY2Fz
ZSBDcmVhdGVEaXJlY3RBcmd1bWVudHM6CiAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyU3Ry
dWN0dXJlKG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyktPmRp
cmVjdEFyZ3VtZW50c1N0cnVjdHVyZSgpKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgY2FzZSBOZXdHZW5lcmF0b3JGcmFtZToKKyAgICAgICAgICAgICAgICAg
ICAgcmVnaXN0ZXJTdHJ1Y3R1cmUobV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKS0+Z2VuZXJhdG9yRnJhbWVTdHJ1Y3R1cmUoKSk7CisgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBjYXNlIENy
ZWF0ZVNjb3BlZEFyZ3VtZW50czoKICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJTdHJ1Y3R1
cmUobV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+c2NvcGVk
QXJndW1lbnRzU3RydWN0dXJlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAKaW5kZXggYTRiNTQzN2U5N2M0N2Y4
ZmYzZmVlZGMxZWU5MGY2MDc3YWI1ZmYwNS4uYjFiMmZlY2NlM2FmOTk0NGFmZDFjNjNhNGIzMGUw
YjA3MmU5OTcyNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0
cmFjdEhlYXBSZXBvc2l0b3J5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAi
QjNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJEaXJlY3RBcmd1bWVudHMuaCIKICNpbmNsdWRl
ICJGVExTdGF0ZS5oIgorI2luY2x1ZGUgIkdlbmVyYXRvckZyYW1lLmgiCiAjaW5jbHVkZSAiR2V0
dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiSlNFbnZpcm9ubWVudFJlY29yZC5oIgogI2luY2x1ZGUg
IkpTUHJvcGVydHlOYW1lRW51bWVyYXRvci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaAppbmRleCAyMTI1ODBmZGFiN2Fk
YmJjMTVmNTU4OGI1ZTUzYzM3MmYyODlhNTJhLi4yZmVlZDZiNjcwOGU2Mzc5ZjkzMjQ0NTQ0MmFh
ZDUyOTJlMDY3MWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFi
c3RyYWN0SGVhcFJlcG9zaXRvcnkuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaApAQCAtNDgsNiArNDgsOCBAQCBuYW1lc3BhY2UgSlND
IHsgbmFtZXNwYWNlIEZUTCB7CiAgICAgbWFjcm8oRGlyZWN0QXJndW1lbnRzX2xlbmd0aCwgRGly
ZWN0QXJndW1lbnRzOjpvZmZzZXRPZkxlbmd0aCgpKSBcCiAgICAgbWFjcm8oRGlyZWN0QXJndW1l
bnRzX21pbkNhcGFjaXR5LCBEaXJlY3RBcmd1bWVudHM6Om9mZnNldE9mTWluQ2FwYWNpdHkoKSkg
XAogICAgIG1hY3JvKERpcmVjdEFyZ3VtZW50c19vdmVycmlkZXMsIERpcmVjdEFyZ3VtZW50czo6
b2Zmc2V0T2ZPdmVycmlkZXMoKSkgXAorICAgIG1hY3JvKEdlbmVyYXRvckZyYW1lX251bWJlck9m
Q2FsbGVlTG9jYWxzLCBHZW5lcmF0b3JGcmFtZTo6bnVtYmVyT2ZDYWxsZWVMb2NhbHNPZmZzZXQo
KSkgXAorICAgIG1hY3JvKEdlbmVyYXRvckZyYW1lX251bWJlck9mU2F2ZWRDYWxsZWVMb2NhbHMs
IEdlbmVyYXRvckZyYW1lOjpudW1iZXJPZlNhdmVkQ2FsbGVlTG9jYWxzT2Zmc2V0KCkpIFwKICAg
ICBtYWNybyhHZXR0ZXJTZXR0ZXJfZ2V0dGVyLCBHZXR0ZXJTZXR0ZXI6Om9mZnNldE9mR2V0dGVy
KCkpIFwKICAgICBtYWNybyhHZXR0ZXJTZXR0ZXJfc2V0dGVyLCBHZXR0ZXJTZXR0ZXI6Om9mZnNl
dE9mU2V0dGVyKCkpIFwKICAgICBtYWNybyhKU0FycmF5QnVmZmVyVmlld19sZW5ndGgsIEpTQXJy
YXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSBcCkBAIC0xMDcsNiArMTA5LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgewogCiAjZGVmaW5lIEZPUl9FQUNIX0lOREVYRURf
QUJTVFJBQ1RfSEVBUChtYWNybykgXAogICAgIG1hY3JvKERpcmVjdEFyZ3VtZW50c19zdG9yYWdl
LCBEaXJlY3RBcmd1bWVudHM6OnN0b3JhZ2VPZmZzZXQoKSwgc2l6ZW9mKEVuY29kZWRKU1ZhbHVl
KSkgXAorICAgIG1hY3JvKEdlbmVyYXRvckZyYW1lX2NhbGxlZUxvY2FscywgR2VuZXJhdG9yRnJh
bWU6Om9mZnNldE9mTG9jYWxzKCksIHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pKSBcCiAg
ICAgbWFjcm8oSlNFbnZpcm9ubWVudFJlY29yZF92YXJpYWJsZXMsIEpTRW52aXJvbm1lbnRSZWNv
cmQ6Om9mZnNldE9mVmFyaWFibGVzKCksIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkpIFwKICAgICBt
YWNybyhKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3JfY2FjaGVkUHJvcGVydHlOYW1lc1ZlY3RvckNv
bnRlbnRzLCAwLCBzaXplb2YoV3JpdGVCYXJyaWVyPEpTU3RyaW5nPikpIFwKICAgICBtYWNybyhK
U1JvcGVTdHJpbmdfZmliZXJzLCBKU1JvcGVTdHJpbmc6Om9mZnNldE9mRmliZXJzKCksIHNpemVv
ZihXcml0ZUJhcnJpZXI8SlNTdHJpbmc+KSkgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExDYXBhYmlsaXRpZXMuY3BwCmluZGV4IGVkNzg0YmYxMGU1ODg3NjcyNDViZGJkZjNiNTMx
MzgzMDY2MDg2NTIuLmY5Njc5MGM4NWYyNmQ3ZDU3NmQyZTRlYjIxMDI4NTc3YTAxNGU1ZDcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKQEAgLTcy
LDYgKzcyLDcgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5vZGUp
CiAgICAgY2FzZSBOZXdPYmplY3Q6CiAgICAgY2FzZSBOZXdBcnJheToKICAgICBjYXNlIE5ld0Fy
cmF5QnVmZmVyOgorICAgIGNhc2UgTmV3R2VuZXJhdG9yRnJhbWU6CiAgICAgY2FzZSBOZXdUeXBl
ZEFycmF5OgogICAgIGNhc2UgR2V0QnlPZmZzZXQ6CiAgICAgY2FzZSBHZXRHZXR0ZXJTZXR0ZXJC
eU9mZnNldDoKQEAgLTIzMCw2ICsyMzEsOSBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNv
bXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIFB1dFNldHRlckJ5VmFsOgogICAgIGNhc2UgQ29w
eVJlc3Q6CiAgICAgY2FzZSBHZXRSZXN0TGVuZ3RoOgorICAgIGNhc2UgU2V0R2VuZXJhdG9yTG9j
YWw6CisgICAgY2FzZSBHZXRHZW5lcmF0b3JMb2NhbDoKKyAgICBjYXNlIFJlc2l6ZUdlbmVyYXRv
ckxvY2FsczoKICAgICBjYXNlIFJlZ0V4cEV4ZWM6CiAgICAgY2FzZSBSZWdFeHBUZXN0OgogICAg
IGNhc2UgTmV3UmVnZXhwOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL0ludGVycHJldGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9JbnRlcnByZXRlci5jcHAKaW5kZXggNzRmOGM1M2UxMjFjNTUzOGZiNTRlN2RmNDU5NjlhYzcz
NDA4MDY3OS4uNjMyYjIyOWNkOGUyZmNmY2IzYTYyZDE0OTExODg3NjhiZjk0MDI0MiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCkBA
IC02MDcsNyArNjA3LDcgQEAgSlNTdHJpbmcqIEludGVycHJldGVyOjpzdGFja1RyYWNlQXNTdHJp
bmcoVk0mIHZtLCBjb25zdCBWZWN0b3I8U3RhY2tGcmFtZT4mIHN0YWMKICAgICByZXR1cm4ganNT
dHJpbmcoJnZtLCBidWlsZGVyLnRvU3RyaW5nKCkpOwogfQogCi1BTFdBWVNfSU5MSU5FIHN0YXRp
YyBIYW5kbGVySW5mbyogZmluZEV4Y2VwdGlvbkhhbmRsZXIoU3RhY2tWaXNpdG9yJiB2aXNpdG9y
LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZUJsb2NrOjpSZXF1aXJlZEhhbmRsZXIgcmVxdWly
ZWRIYW5kbGVyKQorQUxXQVlTX0lOTElORSBzdGF0aWMgSGFuZGxlckluZm8qIGZpbmRFeGNlcHRp
b25IYW5kbGVyKFN0YWNrVmlzaXRvciYgdmlzaXRvciwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFJl
cXVpcmVkSGFuZGxlciByZXF1aXJlZEhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKGNvZGVCbG9jayk7
CiAjaWYgRU5BQkxFKERGR19KSVQpCkBAIC02NDEsNyArNjQxLDcgQEAgY2xhc3MgR2V0Q2F0Y2hI
YW5kbGVyRnVuY3RvciB7CiAgICAgICAgIGlmICghY29kZUJsb2NrKQogICAgICAgICAgICAgcmV0
dXJuIFN0YWNrVmlzaXRvcjo6Q29udGludWU7CiAKLSAgICAgICAgbV9oYW5kbGVyID0gZmluZEV4
Y2VwdGlvbkhhbmRsZXIodmlzaXRvciwgY29kZUJsb2NrLCBDb2RlQmxvY2s6OlJlcXVpcmVkSGFu
ZGxlcjo6Q2F0Y2hIYW5kbGVyKTsKKyAgICAgICAgbV9oYW5kbGVyID0gZmluZEV4Y2VwdGlvbkhh
bmRsZXIodmlzaXRvciwgY29kZUJsb2NrLCBSZXF1aXJlZEhhbmRsZXI6OkNhdGNoSGFuZGxlcik7
CiAgICAgICAgIGlmIChtX2hhbmRsZXIpCiAgICAgICAgICAgICByZXR1cm4gU3RhY2tWaXNpdG9y
OjpEb25lOwogCkBAIC02ODMsNyArNjgzLDcgQEAgY2xhc3MgVW53aW5kRnVuY3RvciB7CiAgICAg
ICAgIG1faGFuZGxlciA9IG51bGxwdHI7CiAgICAgICAgIGlmICghbV9pc1Rlcm1pbmF0aW9uKSB7
CiAgICAgICAgICAgICBpZiAobV9jb2RlQmxvY2sgJiYgIWlzV2ViQXNzZW1ibHlFeGVjdXRhYmxl
KG1fY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSkpCi0gICAgICAgICAgICAgICAgbV9oYW5k
bGVyID0gZmluZEV4Y2VwdGlvbkhhbmRsZXIodmlzaXRvciwgbV9jb2RlQmxvY2ssIENvZGVCbG9j
azo6UmVxdWlyZWRIYW5kbGVyOjpBbnlIYW5kbGVyKTsKKyAgICAgICAgICAgICAgICBtX2hhbmRs
ZXIgPSBmaW5kRXhjZXB0aW9uSGFuZGxlcih2aXNpdG9yLCBtX2NvZGVCbG9jaywgUmVxdWlyZWRI
YW5kbGVyOjpBbnlIYW5kbGVyKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChtX2hhbmRsZXIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKaW5kZXggNTQ2ZTJhZTE2ZjU0MTFkMmFlMTA1Y2Mw
MDBmNmYxMGQyOGY3OWVmZC4uMzhjOTkxOTg1ZTgxODAwNGVhMDNkYjQyZDNjZTIxNGFjMWIwZmQ2
NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcApAQCAtMjM3LDYgKzIzNyw3IEBAIHZvaWQg
SklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgREVGSU5FX09QKG9wX2Fzc2Vy
dCkKICAgICAgICAgREVGSU5FX09QKG9wX3NhdmUpCiAgICAgICAgIERFRklORV9PUChvcF9yZXN1
bWUpCisgICAgICAgIERFRklORV9PUChvcF9uZXdfZ2VuZXJhdG9yX2ZyYW1lKQogICAgICAgICBE
RUZJTkVfT1Aob3BfZGVidWcpCiAgICAgICAgIERFRklORV9PUChvcF9kZWxfYnlfaWQpCiAgICAg
ICAgIERFRklORV9PUChvcF9kZWxfYnlfdmFsKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKaW5kZXgg
MzQ1MWIyM2ZkODU0YzFhNThmZDRjOTg3YmJjMmIyYTc5YWM4M2U1Yy4uYTk1Yjk1YzBmNDFjOWJj
NmFlNWYxNjc1ZmQzZjBjYmM1MDlkYTAwMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCkBAIC0z
MzksNiArMzM5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGVudW0gV3JpdGVCYXJyaWVy
TW9kZSB7IFVuY29uZGl0aW9uYWxXcml0ZUJhcnJpZXIsIFNob3VsZEZpbHRlckJhc2UsIFNob3Vs
ZEZpbHRlclZhbHVlLCBTaG91bGRGaWx0ZXJCYXNlQW5kVmFsdWUgfTsKICAgICAgICAgLy8gdmFs
dWUgcmVnaXN0ZXIgaW4gd3JpdGUgYmFycmllciBpcyB1c2VkIGJlZm9yZSBhbnkgc2NyYXRjaCBy
ZWdpc3RlcnMKICAgICAgICAgLy8gc28gbWF5IHNhZmVseSBiZSB0aGUgc2FtZSBhcyBlaXRoZXIg
b2YgdGhlIHNjcmF0Y2ggcmVnaXN0ZXJzLgorICAgICAgICB2b2lkIGVtaXRXcml0ZUJhcnJpZXIo
dW5zaWduZWQgb3duZXIsIFdyaXRlQmFycmllck1vZGUpOwogICAgICAgICB2b2lkIGVtaXRXcml0
ZUJhcnJpZXIodW5zaWduZWQgb3duZXIsIHVuc2lnbmVkIHZhbHVlLCBXcml0ZUJhcnJpZXJNb2Rl
KTsKICAgICAgICAgdm9pZCBlbWl0V3JpdGVCYXJyaWVyKEpTQ2VsbCogb3duZXIsIHVuc2lnbmVk
IHZhbHVlLCBXcml0ZUJhcnJpZXJNb2RlKTsKICAgICAgICAgdm9pZCBlbWl0V3JpdGVCYXJyaWVy
KEpTQ2VsbCogb3duZXIpOwpAQCAtNTA0LDYgKzUwNSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICB2b2lkIGVtaXRfb3BfYXNzZXJ0KEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1p
dF9vcF9zYXZlKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9yZXN1bWUoSW5z
dHJ1Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX25ld19nZW5lcmF0b3JfZnJhbWUoSW5z
dHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2RlYnVnKEluc3RydWN0aW9uKik7CiAg
ICAgICAgIHZvaWQgZW1pdF9vcF9kZWxfYnlfaWQoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9p
ZCBlbWl0X29wX2RlbF9ieV92YWwoSW5zdHJ1Y3Rpb24qKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wY29kZXMuY3BwCmluZGV4IGM0NDM5MWMwOTMwZTU1MWUxOWZkMzQ1N2ZhMWE3OGFm
MGQ5ZTJiNWUuLjc1MTIxYmQzMGZiZGNkYzQ1ODRmZGZmZmMxZDExM2U0NzhkZWRjZDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcApAQCAtMzIsNiArMzIsNyBAQAog
I2luY2x1ZGUgIkNvcGllZFNwYWNlSW5saW5lcy5oIgogI2luY2x1ZGUgIkRlYnVnZ2VyLmgiCiAj
aW5jbHVkZSAiRXhjZXB0aW9uLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yRnJhbWUuaCIKICNpbmNs
dWRlICJIZWFwLmgiCiAjaW5jbHVkZSAiSklUSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQXJyYXku
aCIKQEAgLTkyMyw2ICs5MjQsNDkgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3RvX3N0cmluZyhJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2UKICAgICBzbG93
UGF0aENhbGwuY2FsbCgpOwogfQogCit2b2lkIEpJVDo6ZW1pdF9vcF9zYXZlKEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgaW50IGZyYW1lID0gY3VycmVudEluc3RydWN0
aW9uWzFdLnUub3BlcmFuZDsKKyAgICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSBj
dXJyZW50SW5zdHJ1Y3Rpb25bMl0udS51bnNpZ25lZFZhbHVlOworICAgIGNvbnN0IEZhc3RCaXRW
ZWN0b3ImIGxpdmVuZXNzID0gbV9jb2RlQmxvY2stPmxpdmVDYWxsZWVMb2NhbHNBdFlpZWxkKGxp
dmVDYWxsZWVMb2NhbHNJbmRleCk7CisKKyAgICAvLyBBIGZyYW1lIGlzIGFsd2F5cyBhIGNlbGwu
IE5vIG5lZWQgdG8gZmlsdGVyIG91dC4KKyAgICBlbWl0V3JpdGVCYXJyaWVyKGZyYW1lLCBVbmNv
bmRpdGlvbmFsV3JpdGVCYXJyaWVyKTsKKworICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoZnJh
bWUsIHJlZ1QxKTsKKworICAgIC8vIEFsbG9jYXRlIGdlbmVyYXRvciBmcmFtZSBsb2NhbHMuCisg
ICAgc3RvcmUzMihUcnVzdGVkSW1tMzIobGl2ZW5lc3MuYml0Q291bnQoKSksIEFkZHJlc3MocmVn
VDEsIEdlbmVyYXRvckZyYW1lOjpudW1iZXJPZlNhdmVkQ2FsbGVlTG9jYWxzT2Zmc2V0KCkpKTsK
KworICAgIHVuc2lnbmVkIGdlbmVyYXRvckxvY2FsSW5kZXggPSAwOworICAgIGxpdmVuZXNzLmZv
ckVhY2hTZXRCaXQoWyZdKHNpemVfdCBsb2NhbCkgeworICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIg
b3BlcmFuZCA9IHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGxvY2FsKTsKKyAgICAgICAgZW1pdEdl
dFZpcnR1YWxSZWdpc3RlcihvcGVyYW5kLm9mZnNldCgpLCByZWdUMCk7CisgICAgICAgIHN0b3Jl
NjQocmVnVDAsIEFkZHJlc3MocmVnVDEsIEdlbmVyYXRvckZyYW1lOjpsb2NhbE9mZnNldChnZW5l
cmF0b3JMb2NhbEluZGV4KSkpOworICAgICAgICBnZW5lcmF0b3JMb2NhbEluZGV4Kys7CisgICAg
fSk7Cit9CisKK3ZvaWQgSklUOjplbWl0X29wX3Jlc3VtZShJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQoreworICAgIGludCBmcmFtZSA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9w
ZXJhbmQ7CisgICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gY3VycmVudEluc3Ry
dWN0aW9uWzJdLnUudW5zaWduZWRWYWx1ZTsKKyAgICBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZl
bmVzcyA9IG1fY29kZUJsb2NrLT5saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZChsaXZlQ2FsbGVlTG9j
YWxzSW5kZXgpOworCisgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihmcmFtZSwgcmVnVDEpOwor
CisgICAgdW5zaWduZWQgZ2VuZXJhdG9yTG9jYWxJbmRleCA9IDA7CisgICAgbGl2ZW5lc3MuZm9y
RWFjaFNldEJpdChbJl0oc2l6ZV90IGxvY2FsKSB7CisgICAgICAgIFZpcnR1YWxSZWdpc3RlciBv
cGVyYW5kID0gdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwobG9jYWwpOworICAgICAgICBsb2FkNjQo
QWRkcmVzcyhyZWdUMSwgR2VuZXJhdG9yRnJhbWU6OmxvY2FsT2Zmc2V0KGdlbmVyYXRvckxvY2Fs
SW5kZXgpKSwgcmVnVDApOworICAgICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKG9wZXJhbmQu
b2Zmc2V0KCkpOworICAgICAgICBnZW5lcmF0b3JMb2NhbEluZGV4Kys7CisgICAgfSk7CisKKyAg
ICAvLyBEZWFsbG9jYXRlIGdlbmVyYXRvciBmcmFtZSBsb2NhbHMuCisgICAgc3RvcmUzMihUcnVz
dGVkSW1tMzIoMCksIEFkZHJlc3MocmVnVDEsIEdlbmVyYXRvckZyYW1lOjpudW1iZXJPZlNhdmVk
Q2FsbGVlTG9jYWxzT2Zmc2V0KCkpKTsKK30KKwogI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCiAK
IHZvaWQgSklUOjplbWl0X29wX2xvb3BfaGludChJbnN0cnVjdGlvbiopCkBAIC0xNDg2LDE1ICsx
NTMwLDkgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X3Jlc3RfbGVuZ3RoKEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCiAjZW5kaWYKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3Bfc2F2ZShJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQotewotICAgIEpJVFNsb3dQYXRoQ2FsbCBz
bG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfc2F2ZSk7Ci0g
ICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKLX0KLQotdm9pZCBKSVQ6OmVtaXRfb3BfcmVzdW1lKElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9uZXdfZ2Vu
ZXJhdG9yX2ZyYW1lKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7Ci0gICAgSklU
U2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3df
cGF0aF9yZXN1bWUpOworICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3Vy
cmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfbmV3X2dlbmVyYXRvcl9mcmFtZSk7CiAgICAgc2xv
d1BhdGhDYWxsLmNhbGwoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGNvZGVzMzJfNjQuY3BwCmluZGV4IDU1ZGI0MTY0NmVhYWM0ODAyOWQyOTYzMzBmMDBlZGM1ZTI3
ZmIxMGUuLmFkYTU5ODZiNjMwZDEyZjcyNTk5YTk0Njg3ZmRlODk4OGY0NzQ1OWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKQEAgLTMzLDYgKzMz
LDcgQEAKICNpbmNsdWRlICJDQ2FsbEhlbHBlcnMuaCIKICNpbmNsdWRlICJEZWJ1Z2dlci5oIgog
I2luY2x1ZGUgIkV4Y2VwdGlvbi5oIgorI2luY2x1ZGUgIkdlbmVyYXRvckZyYW1lLmgiCiAjaW5j
bHVkZSAiSklUSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKICNpbmNsdWRlICJKU0Nl
bGwuaCIKQEAgLTEzODUsNiArMTM4Niw1MSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9sb2dfc2hhZG93
X2NoaWNrZW5fdGFpbChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGxvZ1No
YWRvd0NoaWNrZW5UYWlsUGFja2V0KHNoYWRvd1BhY2tldFJlZywgdGhpc1JlZ3MsIHJlZ1QzLCBt
X2NvZGVCbG9jaywgQ2FsbFNpdGVJbmRleChjdXJyZW50SW5zdHJ1Y3Rpb24pKTsKIH0KIAordm9p
ZCBKSVQ6OmVtaXRfb3Bfc2F2ZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQorewor
ICAgIGludCBmcmFtZSA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CisgICAgdW5z
aWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUudW5z
aWduZWRWYWx1ZTsKKyAgICBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlbmVzcyA9IG1fY29kZUJs
b2NrLT5saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZChsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpOworCisg
ICAgLy8gQSBmcmFtZSBpcyBhbHdheXMgYSBjZWxsLiBObyBuZWVkIHRvIGZpbHRlciBvdXQuCisg
ICAgZW1pdFdyaXRlQmFycmllcihmcmFtZSwgVW5jb25kaXRpb25hbFdyaXRlQmFycmllcik7CisK
KyAgICBlbWl0TG9hZFBheWxvYWQoZnJhbWUsIHJlZ1QyKTsKKworICAgIC8vIEFsbG9jYXRlIGdl
bmVyYXRvciBmcmFtZSBsb2NhbHMuCisgICAgc3RvcmUzMihUcnVzdGVkSW1tMzIobGl2ZW5lc3Mu
Yml0Q291bnQoKSksIEFkZHJlc3MocmVnVDIsIEdlbmVyYXRvckZyYW1lOjpudW1iZXJPZlNhdmVk
Q2FsbGVlTG9jYWxzT2Zmc2V0KCkpKTsKKworICAgIHVuc2lnbmVkIGdlbmVyYXRvckxvY2FsSW5k
ZXggPSAwOworICAgIGxpdmVuZXNzLmZvckVhY2hTZXRCaXQoWyZdKHNpemVfdCBsb2NhbCkgewor
ICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCA9IHZpcnR1YWxSZWdpc3RlckZvckxvY2Fs
KGxvY2FsKTsKKyAgICAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihvcGVyYW5kLm9mZnNldCgp
LCBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApKTsKKyAgICAgICAgc3RvcmUzMihyZWdUMSwgQWRk
cmVzcyhyZWdUMiwgR2VuZXJhdG9yRnJhbWU6OmxvY2FsT2Zmc2V0KGdlbmVyYXRvckxvY2FsSW5k
ZXgpICsgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnRhZykpKTsKKyAgICAgICAg
c3RvcmUzMihyZWdUMCwgQWRkcmVzcyhyZWdUMiwgR2VuZXJhdG9yRnJhbWU6OmxvY2FsT2Zmc2V0
KGdlbmVyYXRvckxvY2FsSW5kZXgpICsgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRz
LnBheWxvYWQpKSk7CisgICAgICAgIGdlbmVyYXRvckxvY2FsSW5kZXgrKzsKKyAgICB9KTsKK30K
Kwordm9pZCBKSVQ6OmVtaXRfb3BfcmVzdW1lKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCit7CisgICAgaW50IGZyYW1lID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsK
KyAgICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSBjdXJyZW50SW5zdHJ1Y3Rpb25b
Ml0udS51bnNpZ25lZFZhbHVlOworICAgIGNvbnN0IEZhc3RCaXRWZWN0b3ImIGxpdmVuZXNzID0g
bV9jb2RlQmxvY2stPmxpdmVDYWxsZWVMb2NhbHNBdFlpZWxkKGxpdmVDYWxsZWVMb2NhbHNJbmRl
eCk7CisKKyAgICBlbWl0TG9hZFBheWxvYWQoZnJhbWUsIHJlZ1QyKTsKKworICAgIHVuc2lnbmVk
IGdlbmVyYXRvckxvY2FsSW5kZXggPSAwOworICAgIGxpdmVuZXNzLmZvckVhY2hTZXRCaXQoWyZd
KHNpemVfdCBsb2NhbCkgeworICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCA9IHZpcnR1
YWxSZWdpc3RlckZvckxvY2FsKGxvY2FsKTsKKyAgICAgICAgbG9hZDMyKEFkZHJlc3MocmVnVDIs
IEdlbmVyYXRvckZyYW1lOjpsb2NhbE9mZnNldChnZW5lcmF0b3JMb2NhbEluZGV4KSArIE9CSkVD
VF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy50YWcpKSwgcmVnVDEpOworICAgICAgICBsb2Fk
MzIoQWRkcmVzcyhyZWdUMiwgR2VuZXJhdG9yRnJhbWU6OmxvY2FsT2Zmc2V0KGdlbmVyYXRvckxv
Y2FsSW5kZXgpICsgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnBheWxvYWQpKSwg
cmVnVDApOworICAgICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKG9wZXJhbmQub2Zmc2V0KCks
IEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdUMCkpOworICAgICAgICBnZW5lcmF0b3JMb2NhbEluZGV4
Kys7CisgICAgfSk7CisKKyAgICAvLyBEZWFsbG9jYXRlIGdlbmVyYXRvciBmcmFtZSBsb2NhbHMu
CisgICAgc3RvcmUzMihUcnVzdGVkSW1tMzIoMCksIEFkZHJlc3MocmVnVDIsIEdlbmVyYXRvckZy
YW1lOjpudW1iZXJPZlNhdmVkQ2FsbGVlTG9jYWxzT2Zmc2V0KCkpKTsKK30KKwogfSAvLyBuYW1l
c3BhY2UgSlNDCiAKICNlbmRpZiAvLyBVU0UoSlNWQUxVRTMyXzY0KQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAppbmRleCA0MzgzYTEzNTk3OTZl
NzU3ZWQ1Y2M2YmQ1NWUwN2Q5ZmQ0OTQxZGYzLi5lZGZlN2IwN2ExZjA4MzY0ODc3NDc0MDk1YTVl
YzBmY2RiMjhjNjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFBy
b3BlcnR5QWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3Bl
cnR5QWNjZXNzLmNwcApAQCAtMTE2NiwxNCArMTE2Niw4IEBAIHZvaWQgSklUOjplbWl0X29wX3B1
dF90b19hcmd1bWVudHMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICNlbmRpZiAv
LyBVU0UoSlNWQUxVRTY0KQogCiAjaWYgVVNFKEpTVkFMVUU2NCkKLXZvaWQgSklUOjplbWl0V3Jp
dGVCYXJyaWVyKHVuc2lnbmVkIG93bmVyLCB1bnNpZ25lZCB2YWx1ZSwgV3JpdGVCYXJyaWVyTW9k
ZSBtb2RlKQordm9pZCBKSVQ6OmVtaXRXcml0ZUJhcnJpZXIodW5zaWduZWQgb3duZXIsIFdyaXRl
QmFycmllck1vZGUgbW9kZSkKIHsKLSAgICBKdW1wIHZhbHVlTm90Q2VsbDsKLSAgICBpZiAobW9k
ZSA9PSBTaG91bGRGaWx0ZXJWYWx1ZSB8fCBtb2RlID09IFNob3VsZEZpbHRlckJhc2VBbmRWYWx1
ZSkgewotICAgICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHZhbHVlLCByZWdUMCk7Ci0gICAg
ICAgIHZhbHVlTm90Q2VsbCA9IGJyYW5jaFRlc3Q2NChOb25aZXJvLCByZWdUMCwgdGFnTWFza1Jl
Z2lzdGVyKTsKLSAgICB9Ci0gICAgCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihvd25lciwg
cmVnVDApOwogICAgIEp1bXAgb3duZXJOb3RDZWxsOwogICAgIGlmIChtb2RlID09IFNob3VsZEZp
bHRlckJhc2VBbmRWYWx1ZSB8fCBtb2RlID09IFNob3VsZEZpbHRlckJhc2UpCkBAIC0xMTg1LDYg
KzExNzksMTggQEAgdm9pZCBKSVQ6OmVtaXRXcml0ZUJhcnJpZXIodW5zaWduZWQgb3duZXIsIHVu
c2lnbmVkIHZhbHVlLCBXcml0ZUJhcnJpZXJNb2RlIG1vZGUKIAogICAgIGlmIChtb2RlID09IFNo
b3VsZEZpbHRlckJhc2VBbmRWYWx1ZSB8fCBtb2RlID09IFNob3VsZEZpbHRlckJhc2UpCiAgICAg
ICAgIG93bmVyTm90Q2VsbC5saW5rKHRoaXMpOworfQorCit2b2lkIEpJVDo6ZW1pdFdyaXRlQmFy
cmllcih1bnNpZ25lZCBvd25lciwgdW5zaWduZWQgdmFsdWUsIFdyaXRlQmFycmllck1vZGUgbW9k
ZSkKK3sKKyAgICBKdW1wIHZhbHVlTm90Q2VsbDsKKyAgICBpZiAobW9kZSA9PSBTaG91bGRGaWx0
ZXJWYWx1ZSB8fCBtb2RlID09IFNob3VsZEZpbHRlckJhc2VBbmRWYWx1ZSkgeworICAgICAgICBl
bWl0R2V0VmlydHVhbFJlZ2lzdGVyKHZhbHVlLCByZWdUMCk7CisgICAgICAgIHZhbHVlTm90Q2Vs
bCA9IGJyYW5jaFRlc3Q2NChOb25aZXJvLCByZWdUMCwgdGFnTWFza1JlZ2lzdGVyKTsKKyAgICB9
CisKKyAgICBlbWl0V3JpdGVCYXJyaWVyKG93bmVyLCBtb2RlKTsKKwogICAgIGlmIChtb2RlID09
IFNob3VsZEZpbHRlclZhbHVlIHx8IG1vZGUgPT0gU2hvdWxkRmlsdGVyQmFzZUFuZFZhbHVlKSAK
ICAgICAgICAgdmFsdWVOb3RDZWxsLmxpbmsodGhpcyk7CiB9CkBAIC0xMjA0LDE0ICsxMjEwLDgg
QEAgdm9pZCBKSVQ6OmVtaXRXcml0ZUJhcnJpZXIoSlNDZWxsKiBvd25lciwgdW5zaWduZWQgdmFs
dWUsIFdyaXRlQmFycmllck1vZGUgbW9kZSkKIAogI2Vsc2UgLy8gVVNFKEpTVkFMVUU2NCkKIAot
dm9pZCBKSVQ6OmVtaXRXcml0ZUJhcnJpZXIodW5zaWduZWQgb3duZXIsIHVuc2lnbmVkIHZhbHVl
LCBXcml0ZUJhcnJpZXJNb2RlIG1vZGUpCit2b2lkIEpJVDo6ZW1pdFdyaXRlQmFycmllcih1bnNp
Z25lZCBvd25lciwgV3JpdGVCYXJyaWVyTW9kZSBtb2RlKQogewotICAgIEp1bXAgdmFsdWVOb3RD
ZWxsOwotICAgIGlmIChtb2RlID09IFNob3VsZEZpbHRlclZhbHVlIHx8IG1vZGUgPT0gU2hvdWxk
RmlsdGVyQmFzZUFuZFZhbHVlKSB7Ci0gICAgICAgIGVtaXRMb2FkVGFnKHZhbHVlLCByZWdUMCk7
Ci0gICAgICAgIHZhbHVlTm90Q2VsbCA9IGJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMCwgVHJ1c3Rl
ZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKTsKLSAgICB9Ci0gICAgCiAgICAgZW1pdExvYWQob3du
ZXIsIHJlZ1QwLCByZWdUMSk7CiAgICAgSnVtcCBvd25lck5vdENlbGw7CiAgICAgaWYgKG1vZGUg
PT0gU2hvdWxkRmlsdGVyQmFzZSB8fCBtb2RlID09IFNob3VsZEZpbHRlckJhc2VBbmRWYWx1ZSkK
QEAgLTEyMjMsNyArMTIyMywyMCBAQCB2b2lkIEpJVDo6ZW1pdFdyaXRlQmFycmllcih1bnNpZ25l
ZCBvd25lciwgdW5zaWduZWQgdmFsdWUsIFdyaXRlQmFycmllck1vZGUgbW9kZQogCiAgICAgaWYg
KG1vZGUgPT0gU2hvdWxkRmlsdGVyQmFzZSB8fCBtb2RlID09IFNob3VsZEZpbHRlckJhc2VBbmRW
YWx1ZSkKICAgICAgICAgb3duZXJOb3RDZWxsLmxpbmsodGhpcyk7Ci0gICAgaWYgKG1vZGUgPT0g
U2hvdWxkRmlsdGVyVmFsdWUgfHwgbW9kZSA9PSBTaG91bGRGaWx0ZXJCYXNlQW5kVmFsdWUpIAor
fQorCisKK3ZvaWQgSklUOjplbWl0V3JpdGVCYXJyaWVyKHVuc2lnbmVkIG93bmVyLCB1bnNpZ25l
ZCB2YWx1ZSwgV3JpdGVCYXJyaWVyTW9kZSBtb2RlKQoreworICAgIEp1bXAgdmFsdWVOb3RDZWxs
OworICAgIGlmIChtb2RlID09IFNob3VsZEZpbHRlclZhbHVlIHx8IG1vZGUgPT0gU2hvdWxkRmls
dGVyQmFzZUFuZFZhbHVlKSB7CisgICAgICAgIGVtaXRMb2FkVGFnKHZhbHVlLCByZWdUMCk7Cisg
ICAgICAgIHZhbHVlTm90Q2VsbCA9IGJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMCwgVHJ1c3RlZElt
bTMyKEpTVmFsdWU6OkNlbGxUYWcpKTsKKyAgICB9CisKKyAgICBlbWl0V3JpdGVCYXJyaWVyKG93
bmVyLCBtb2RlKTsKKworICAgIGlmIChtb2RlID09IFNob3VsZEZpbHRlclZhbHVlIHx8IG1vZGUg
PT0gU2hvdWxkRmlsdGVyQmFzZUFuZFZhbHVlKQogICAgICAgICB2YWx1ZU5vdENlbGwubGluayh0
aGlzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
T2Zmc2V0c0V4dHJhY3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRP
ZmZzZXRzRXh0cmFjdG9yLmNwcAppbmRleCA4ZWI5YTUwZWRmZjU2ZGRhNmMzYzc0Njg2Y2E0ZDI1
OGZjOTczYzljLi5kZDZlYTAyZDZjNjk0MzQ2ZTQwMDY2MTBlMzkwMjI2NGJlZDJiNzZjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9y
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFj
dG9yLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkRpcmVjdEFyZ3VtZW50cy5oIgog
I2luY2x1ZGUgIkV4Y2VwdGlvbi5oIgogI2luY2x1ZGUgIkV4ZWN1dGFibGUuaCIKKyNpbmNsdWRl
ICJHZW5lcmF0b3JGcmFtZS5oIgogI2luY2x1ZGUgIkhlYXAuaCIKICNpbmNsdWRlICJJbnRlcnBy
ZXRlci5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQppbmRleCBkZmE2ZmQ1YTRhODRhMGFm
NGIwN2VmNGNkMzA1OTkxOTBmNjIyMjI2Li5iN2QxZjNmMzQyNjUyOTZhMmNmOWRiNjAzZDc1ZDU1
Nzg1MTk3NzIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlci5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXIuYXNtCkBAIC0xMjg2LDYgKzEyODYsMTIgQEAgX2xsaW50X29wX25ld19y
ZWdleHA6CiAgICAgZGlzcGF0Y2goMykKIAogCitfbGxpbnRfb3BfbmV3X2dlbmVyYXRvcl9mcmFt
ZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfbmV3
X2dlbmVyYXRvcl9mcmFtZSkKKyAgICBkaXNwYXRjaCgzKQorCisKIF9sbGludF9vcF9sZXNzOgog
ICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBjYWxsT3Bjb2RlU2xvd1BhdGgoX3Nsb3dfcGF0aF9s
ZXNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCmluZGV4IDdmOTZiYTQ4
MDBkMjdjODU0YzM5NWY0ZjI2NjdlYTE1ODBjMDY3ZjguLmE2N2NmYWU3ZDM4NDRhMzg4MzIxMjM2
ODczMzkyZTg5M2I1OGExNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5j
cHAKQEAgLTI1Niw3ICsyNTYsNyBAQCBTdHJpbmcgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlSW5u
ZXIoY29uc3QgSWRlbnRpZmllciYgY2FsbGVlTmFtZSwgU291cmNlUGFyc2VNbwogICAgIGlmICht
X2xleGVyLT5pc1JlcGFyc2luZ0Z1bmN0aW9uKCkpIHsKICAgICAgICAgUGFyc2VyRnVuY3Rpb25J
bmZvPEFTVEJ1aWxkZXI+IGZ1bmN0aW9uSW5mbzsKICAgICAgICAgaWYgKHBhcnNlTW9kZSA9PSBT
b3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckJvZHlNb2RlKQotICAgICAgICAgICAgbV9wYXJhbWV0
ZXJzID0gY3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhjb250ZXh0KTsKKyAgICAgICAgICAgIG1f
cGFyYW1ldGVycyA9IGNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMoY29udGV4dCwgZnVuY3Rpb25J
bmZvLnBhcmFtZXRlckNvdW50KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbV9wYXJhbWV0
ZXJzID0gcGFyc2VGdW5jdGlvblBhcmFtZXRlcnMoY29udGV4dCwgcGFyc2VNb2RlLCBmdW5jdGlv
bkluZm8pOwogCkBAIC00OTksMTAgKzQ5OSw5IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRl
cj4gVHJlZVNvdXJjZUVsZW1lbnRzIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUdlbmVyYXRvCiAK
ICAgICBQYXJzZXJGdW5jdGlvbkluZm88VHJlZUJ1aWxkZXI+IGluZm87CiAgICAgaW5mby5uYW1l
ID0gJm1fdm0tPnByb3BlcnR5TmFtZXMtPm51bGxJZGVudGlmaWVyOwotICAgIGNyZWF0ZUdlbmVy
YXRvclBhcmFtZXRlcnMoY29udGV4dCk7CisgICAgY3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhj
b250ZXh0LCBpbmZvLnBhcmFtZXRlckNvdW50KTsKICAgICBpbmZvLnN0YXJ0T2Zmc2V0ID0gcGFy
YW1ldGVyc1N0YXJ0OwogICAgIGluZm8uc3RhcnRMaW5lID0gdG9rZW5MaW5lKCk7Ci0gICAgaW5m
by5wYXJhbWV0ZXJDb3VudCA9IDQ7IC8vIGdlbmVyYXRvciwgc3RhdGUsIHZhbHVlLCByZXN1bWUg
bW9kZQogCiAgICAgewogICAgICAgICBBdXRvUG9wU2NvcGVSZWYgZ2VuZXJhdG9yQm9keVNjb3Bl
KHRoaXMsIHB1c2hTY29wZSgpKTsKQEAgLTE4OTEsMzIgKzE4OTAsMzAgQEAgdGVtcGxhdGUgPHR5
cGVuYW1lIExleGVyVHlwZT4gdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyLCBjbGFzcyBGdW5j
dGlvbkluZm9UeXAKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KLXRlbXBsYXRl
IDxjbGFzcyBUcmVlQnVpbGRlcj4gdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkZvcm1hbFBhcmFtZXRl
ckxpc3QgUGFyc2VyPExleGVyVHlwZT46OmNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMoVHJlZUJ1
aWxkZXImIGNvbnRleHQpCit0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IHR5cGVuYW1lIFRy
ZWVCdWlsZGVyOjpGb3JtYWxQYXJhbWV0ZXJMaXN0IFBhcnNlcjxMZXhlclR5cGU+OjpjcmVhdGVH
ZW5lcmF0b3JQYXJhbWV0ZXJzKFRyZWVCdWlsZGVyJiBjb250ZXh0LCB1bnNpZ25lZCYgcGFyYW1l
dGVyQ291bnQpCiB7CiAgICAgYXV0byBwYXJhbWV0ZXJzID0gY29udGV4dC5jcmVhdGVGb3JtYWxQ
YXJhbWV0ZXJMaXN0KCk7CiAKICAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb24odG9rZW5Mb2Nh
dGlvbigpKTsKICAgICBKU1RleHRQb3NpdGlvbiBwb3NpdGlvbiA9IHRva2VuU3RhcnRQb3NpdGlv
bigpOwogCi0gICAgLy8gQGdlbmVyYXRvcgotICAgIGRlY2xhcmVQYXJhbWV0ZXIoJm1fdm0tPnBy
b3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclByaXZhdGVOYW1lKCkpOwotICAg
IGF1dG8gZ2VuZXJhdG9yID0gY29udGV4dC5jcmVhdGVCaW5kaW5nTG9jYXRpb24obG9jYXRpb24s
IG1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclByaXZhdGVOYW1l
KCksIHBvc2l0aW9uLCBwb3NpdGlvbiwgQXNzaWdubWVudENvbnRleHQ6OkRlY2xhcmF0aW9uU3Rh
dGVtZW50KTsKLSAgICBjb250ZXh0LmFwcGVuZFBhcmFtZXRlcihwYXJhbWV0ZXJzLCBnZW5lcmF0
b3IsIDApOworICAgIGF1dG8gYWRkUGFyYW1ldGVyID0gWyZdKGNvbnN0IElkZW50aWZpZXImIG5h
bWUpIHsKKyAgICAgICAgZGVjbGFyZVBhcmFtZXRlcigmbmFtZSk7CisgICAgICAgIGF1dG8gYmlu
ZGluZyA9IGNvbnRleHQuY3JlYXRlQmluZGluZ0xvY2F0aW9uKGxvY2F0aW9uLCBuYW1lLCBwb3Np
dGlvbiwgcG9zaXRpb24sIEFzc2lnbm1lbnRDb250ZXh0OjpEZWNsYXJhdGlvblN0YXRlbWVudCk7
CisgICAgICAgIGNvbnRleHQuYXBwZW5kUGFyYW1ldGVyKHBhcmFtZXRlcnMsIGJpbmRpbmcsIDAp
OworICAgICAgICArK3BhcmFtZXRlckNvdW50OworICAgIH07CiAKKyAgICAvLyBAZ2VuZXJhdG9y
CisgICAgYWRkUGFyYW1ldGVyKG1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdl
bmVyYXRvclByaXZhdGVOYW1lKCkpOwogICAgIC8vIEBnZW5lcmF0b3JTdGF0ZQotICAgIGRlY2xh
cmVQYXJhbWV0ZXIoJm1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRv
clN0YXRlUHJpdmF0ZU5hbWUoKSk7Ci0gICAgYXV0byBnZW5lcmF0b3JTdGF0ZSA9IGNvbnRleHQu
Y3JlYXRlQmluZGluZ0xvY2F0aW9uKGxvY2F0aW9uLCBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5idWls
dGluTmFtZXMoKS5nZW5lcmF0b3JTdGF0ZVByaXZhdGVOYW1lKCksIHBvc2l0aW9uLCBwb3NpdGlv
biwgQXNzaWdubWVudENvbnRleHQ6OkRlY2xhcmF0aW9uU3RhdGVtZW50KTsKLSAgICBjb250ZXh0
LmFwcGVuZFBhcmFtZXRlcihwYXJhbWV0ZXJzLCBnZW5lcmF0b3JTdGF0ZSwgMCk7Ci0KKyAgICBh
ZGRQYXJhbWV0ZXIobV92bS0+cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9y
U3RhdGVQcml2YXRlTmFtZSgpKTsKICAgICAvLyBAZ2VuZXJhdG9yVmFsdWUKLSAgICBkZWNsYXJl
UGFyYW1ldGVyKCZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JW
YWx1ZVByaXZhdGVOYW1lKCkpOwotICAgIGF1dG8gZ2VuZXJhdG9yVmFsdWUgPSBjb250ZXh0LmNy
ZWF0ZUJpbmRpbmdMb2NhdGlvbihsb2NhdGlvbiwgbV92bS0+cHJvcGVydHlOYW1lcy0+YnVpbHRp
bk5hbWVzKCkuZ2VuZXJhdG9yVmFsdWVQcml2YXRlTmFtZSgpLCBwb3NpdGlvbiwgcG9zaXRpb24s
IEFzc2lnbm1lbnRDb250ZXh0OjpEZWNsYXJhdGlvblN0YXRlbWVudCk7Ci0gICAgY29udGV4dC5h
cHBlbmRQYXJhbWV0ZXIocGFyYW1ldGVycywgZ2VuZXJhdG9yVmFsdWUsIDApOwotCisgICAgYWRk
UGFyYW1ldGVyKG1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclZh
bHVlUHJpdmF0ZU5hbWUoKSk7CiAgICAgLy8gQGdlbmVyYXRvclJlc3VtZU1vZGUKLSAgICBkZWNs
YXJlUGFyYW1ldGVyKCZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZW5lcmF0
b3JSZXN1bWVNb2RlUHJpdmF0ZU5hbWUoKSk7Ci0gICAgYXV0byBnZW5lcmF0b3JSZXN1bWVNb2Rl
ID0gY29udGV4dC5jcmVhdGVCaW5kaW5nTG9jYXRpb24obG9jYXRpb24sIG1fdm0tPnByb3BlcnR5
TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclJlc3VtZU1vZGVQcml2YXRlTmFtZSgpLCBw
b3NpdGlvbiwgcG9zaXRpb24sIEFzc2lnbm1lbnRDb250ZXh0OjpEZWNsYXJhdGlvblN0YXRlbWVu
dCk7Ci0gICAgY29udGV4dC5hcHBlbmRQYXJhbWV0ZXIocGFyYW1ldGVycywgZ2VuZXJhdG9yUmVz
dW1lTW9kZSwgMCk7CisgICAgYWRkUGFyYW1ldGVyKG1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0
aW5OYW1lcygpLmdlbmVyYXRvclJlc3VtZU1vZGVQcml2YXRlTmFtZSgpKTsKKyAgICAvLyBAZ2Vu
ZXJhdG9yRnJhbWUKKyAgICBhZGRQYXJhbWV0ZXIobV92bS0+cHJvcGVydHlOYW1lcy0+YnVpbHRp
bk5hbWVzKCkuZ2VuZXJhdG9yRnJhbWVQcml2YXRlTmFtZSgpKTsKIAogICAgIHJldHVybiBwYXJh
bWV0ZXJzOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJz
ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKaW5kZXggMDVkMzRh
NzE4NWU3YjRmYmNkMDExOTdjMGZhNTQzMGNlZDQ0ZDJhYS4uZDBjYzk5ZjI3ZjUwNTdiY2QwYzc1
Zjg4NjQ3ZmRlN2RmODY1ODE1MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9QYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5o
CkBAIC0xNDQyLDcgKzE0NDIsNyBAQCBjbGFzcyBQYXJzZXIgewogICAgIEFMV0FZU19JTkxJTkUg
Ym9vbCBpc0Fycm93RnVuY3Rpb25QYXJhbWV0ZXJzKCk7CiAgICAgCiAgICAgdGVtcGxhdGUgPGNs
YXNzIFRyZWVCdWlsZGVyLCBjbGFzcyBGdW5jdGlvbkluZm9UeXBlPiBORVZFUl9JTkxJTkUgdHlw
ZW5hbWUgVHJlZUJ1aWxkZXI6OkZvcm1hbFBhcmFtZXRlckxpc3QgcGFyc2VGdW5jdGlvblBhcmFt
ZXRlcnMoVHJlZUJ1aWxkZXImLCBTb3VyY2VQYXJzZU1vZGUsIEZ1bmN0aW9uSW5mb1R5cGUmKTsK
LSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElORSB0eXBlbmFtZSBU
cmVlQnVpbGRlcjo6Rm9ybWFsUGFyYW1ldGVyTGlzdCBjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJz
KFRyZWVCdWlsZGVyJik7CisgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBORVZFUl9J
TkxJTkUgdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkZvcm1hbFBhcmFtZXRlckxpc3QgY3JlYXRlR2Vu
ZXJhdG9yUGFyYW1ldGVycyhUcmVlQnVpbGRlciYsIHVuc2lnbmVkJiBwYXJhbWV0ZXJDb3VudCk7
CiAKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElORSBUcmVlQ2xh
c3NFeHByZXNzaW9uIHBhcnNlQ2xhc3MoVHJlZUJ1aWxkZXImLCBGdW5jdGlvblJlcXVpcmVtZW50
cywgUGFyc2VyQ2xhc3NJbmZvPFRyZWVCdWlsZGVyPiYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAppbmRleCBhMTU3ODkxN2VmYjYx
ZDQ1MTBiMjUxMGFjZjgyNTU0NzY1NjY4ZWFmLi5iMTUxMjRjOWM1NjI0NmRmYWFhMjRkODJmMmMx
ZTQ1M2QyZTdlYjFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21tb25TbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bW1vblNsb3dQYXRocy5jcHAKQEAgLTcxOSwxOCArNzE5LDcgQEAgU0xPV19QQVRIX0RFQ0woc2xv
d19wYXRoX3NhdmUpCiAgICAgLy8gT25seSBzYXZlIHZhcmlhYmxlcyBhbmQgdGVtcG9yYXJ5IHJl
Z2lzdGVycy4gVGhlIHNjb3BlIHJlZ2lzdGVycyBhcmUgaW5jbHVkZWQgaW4gdGhlbS4KICAgICAv
LyBCdXQgcGFyYW1ldGVycyBhcmUgbm90IGluY2x1ZGVkLiBCZWNhdXNlIHRoZSBnZW5lcmF0b3Ig
aW1wbGVtZW50YXRpb24gcmVwbGFjZXMgdGhlIHZhbHVlcyBvZiBwYXJhbWV0ZXJzIG9uIGVhY2gg
Z2VuZXJhdG9yLm5leHQoKSBjYWxsLgogICAgIEJFR0lOKCk7Ci0gICAgSlNWYWx1ZSBnZW5lcmF0
b3IgPSBPUCgxKS5qc1ZhbHVlKCk7Ci0gICAgR2VuZXJhdG9yRnJhbWUqIGZyYW1lID0gbnVsbHB0
cjsKLSAgICBKU1ZhbHVlIHZhbHVlID0gZ2VuZXJhdG9yLmdldChleGVjLCBleGVjLT5wcm9wZXJ0
eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yRnJhbWVQcml2YXRlTmFtZSgpKTsKLSAg
ICBpZiAoIXZhbHVlLmlzTnVsbCgpKQotICAgICAgICBmcmFtZSA9IGpzQ2FzdDxHZW5lcmF0b3JG
cmFtZSo+KHZhbHVlKTsKLSAgICBlbHNlIHsKLSAgICAgICAgLy8gRklYTUU6IE9uY2UgSlNHZW5l
cmF0b3Igc3BlY2lhbGl6ZWQgb2JqZWN0IGlzIGludHJvZHVjZWQsIHRoaXMgR2VuZXJhdG9yRnJh
bWUgc2hvdWxkIGJlIGVtYmVkZWQgaW50byBpdCB0byBhdm9pZCBhbGxvY2F0aW9ucy4KLSAgICAg
ICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTU0NQotICAg
ICAgICBmcmFtZSA9IEdlbmVyYXRvckZyYW1lOjpjcmVhdGUoZXhlYy0+dm0oKSwgIGV4ZWMtPmNv
ZGVCbG9jaygpLT5udW1DYWxsZWVMb2NhbHMoKSk7Ci0gICAgICAgIFB1dFByb3BlcnR5U2xvdCBz
bG90KGdlbmVyYXRvciwgdHJ1ZSwgUHV0UHJvcGVydHlTbG90OjpQdXRCeUlkKTsKLSAgICAgICAg
YXNPYmplY3QoZ2VuZXJhdG9yKS0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPnB1dChhc09iamVj
dChnZW5lcmF0b3IpLCBleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCku
Z2VuZXJhdG9yRnJhbWVQcml2YXRlTmFtZSgpLCBmcmFtZSwgc2xvdCk7Ci0gICAgfQorICAgIEdl
bmVyYXRvckZyYW1lKiBmcmFtZSA9IGpzQ2FzdDxHZW5lcmF0b3JGcmFtZSo+KE9QKDEpLmpzVmFs
dWUoKSk7CiAgICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gcGNbMl0udS51bnNp
Z25lZFZhbHVlOwogICAgIGZyYW1lLT5zYXZlKGV4ZWMsIGV4ZWMtPmNvZGVCbG9jaygpLT5saXZl
Q2FsbGVlTG9jYWxzQXRZaWVsZChsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpKTsKICAgICBFTkQoKTsK
QEAgLTczOSw4ICs3MjgsNyBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfc2F2ZSkKIFNMT1df
UEFUSF9ERUNMKHNsb3dfcGF0aF9yZXN1bWUpCiB7CiAgICAgQkVHSU4oKTsKLSAgICBKU1ZhbHVl
IGdlbmVyYXRvciA9IE9QKDEpLmpzVmFsdWUoKTsKLSAgICBHZW5lcmF0b3JGcmFtZSogZnJhbWUg
PSBqc0Nhc3Q8R2VuZXJhdG9yRnJhbWUqPihnZW5lcmF0b3IuZ2V0KGV4ZWMsIGV4ZWMtPnByb3Bl
cnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JGcmFtZVByaXZhdGVOYW1lKCkpKTsK
KyAgICBHZW5lcmF0b3JGcmFtZSogZnJhbWUgPSBqc0Nhc3Q8R2VuZXJhdG9yRnJhbWUqPihPUCgx
KS5qc1ZhbHVlKCkpOwogICAgIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9IHBjWzJd
LnUudW5zaWduZWRWYWx1ZTsKICAgICBmcmFtZS0+cmVzdW1lKGV4ZWMsIGV4ZWMtPmNvZGVCbG9j
aygpLT5saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZChsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpKTsKICAg
ICBFTkQoKTsKQEAgLTg5OSw0ICs4ODcsMTIgQEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3B1
dF9ieV92YWxfd2l0aF90aGlzKQogICAgIEVORCgpOwogfQogCitTTE9XX1BBVEhfREVDTChzbG93
X3BhdGhfbmV3X2dlbmVyYXRvcl9mcmFtZSkKK3sKKyAgICBCRUdJTigpOworICAgIHVuc2lnbmVk
IGdlbmVyYXRvckxvY2Fsc1NpemUgPSBwY1syXS51LnVuc2lnbmVkVmFsdWU7CisgICAgUkVUVVJO
KEdlbmVyYXRvckZyYW1lOjpjcmVhdGUoZXhlYywgZ2VuZXJhdG9yTG9jYWxzU2l6ZSkpOworfQor
CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21tb25TbG93UGF0aHMuaAppbmRleCA3ODQxMDljNTc4MjM0NjlmY2YxMDVkNTQwM2FkMDRm
NmVlOTk1MTNmLi5jNTk5MjM0YjI4NjdhMTE0MTljOGFkNjQ3MWE3MjgwMDNmMjdmMGE5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaApAQCAt
MjU2LDYgKzI1Niw3IEBAIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfZ2V0X2J5X2lk
X3dpdGhfdGhpcyk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2dldF9ieV92YWxf
d2l0aF90aGlzKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcHV0X2J5X2lkX3dp
dGhfdGhpcyk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3B1dF9ieV92YWxfd2l0
aF90aGlzKTsKK1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfbmV3X2dlbmVyYXRvcl9m
cmFtZSk7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGcmFtZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9HZW5lcmF0b3JGcmFtZS5jcHAKaW5kZXggZWY2ZWE3YTEwMDI1OGMzZWNlMDRk
YWFiNDNiZGFhODUxZWM4ZjcxNS4uMGRjYjUxNGE0MjA5OTlmYmY1OWRmMThiZGRmNTdjMzBhZGE3
OWU5MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9y
RnJhbWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZy
YW1lLmNwcApAQCAtMzAsMTUgKzMwLDE2IEBACiAjaW5jbHVkZSAiSGVhcEl0ZXJhdGlvblNjb3Bl
LmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJKU0NlbGxJbmxp
bmVzLmgiCisjaW5jbHVkZSAiSlNPYmplY3RJbmxpbmVzLmgiCiAjaW5jbHVkZSAiU2xvdFZpc2l0
b3JJbmxpbmVzLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlSW5saW5lcy5oIgogCiBuYW1lc3BhY2Ug
SlNDIHsKIAotY29uc3QgQ2xhc3NJbmZvIEdlbmVyYXRvckZyYW1lOjpzX2luZm8gPSB7ICJHZW5l
cmF0b3JGcmFtZSIsIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoR2VuZXJh
dG9yRnJhbWUpIH07Citjb25zdCBDbGFzc0luZm8gR2VuZXJhdG9yRnJhbWU6OnNfaW5mbyA9IHsg
IkdlbmVyYXRvckZyYW1lIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9U
QUJMRShHZW5lcmF0b3JGcmFtZSkgfTsKIAotR2VuZXJhdG9yRnJhbWU6OkdlbmVyYXRvckZyYW1l
KFZNJiB2bSwgc2l6ZV90IG51bWJlck9mQ2FsbGVlTG9jYWxzKQotICAgIDogQmFzZSh2bSwgdm0u
Z2VuZXJhdG9yRnJhbWVTdHJ1Y3R1cmUuZ2V0KCkpCitHZW5lcmF0b3JGcmFtZTo6R2VuZXJhdG9y
RnJhbWUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgdWludDMyX3QgbnVtYmVyT2ZDYWxs
ZWVMb2NhbHMpCisgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCiAgICAgLCBtX251bWJlck9mQ2Fs
bGVlTG9jYWxzKG51bWJlck9mQ2FsbGVlTG9jYWxzKQogewogfQpAQCAtNDYsMzMgKzQ3LDQyIEBA
IEdlbmVyYXRvckZyYW1lOjpHZW5lcmF0b3JGcmFtZShWTSYgdm0sIHNpemVfdCBudW1iZXJPZkNh
bGxlZUxvY2FscykKIHZvaWQgR2VuZXJhdG9yRnJhbWU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkK
IHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgSlNWYWx1ZSBlbXB0eVZhbHVl
OwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9udW1iZXJPZkNhbGxlZUxvY2FsczsgKytp
KQotICAgICAgICBsb2NhbEF0KGkpLmNsZWFyKCk7CisgICAgICAgIGxvY2FsQXQoaSkuc2V0U3Rh
cnRpbmdWYWx1ZShlbXB0eVZhbHVlKTsKIH0KIAogU3RydWN0dXJlKiBHZW5lcmF0b3JGcmFtZTo6
Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1ZSBwcm90b3R5cGUpCiB7Ci0gICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9i
YWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oQ2VsbFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwg
aW5mbygpKTsKKyAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwg
cHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7
CiB9CiAKLUdlbmVyYXRvckZyYW1lKiBHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlKFZNJiB2bSwgc2l6
ZV90IG51bWJlck9mTG9jYWxzKQorR2VuZXJhdG9yRnJhbWUqIEdlbmVyYXRvckZyYW1lOjpjcmVh
dGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgc2l6ZV90IG51bWJlck9mQ2FsbGVlTG9j
YWxzKQogewogICAgIEdlbmVyYXRvckZyYW1lKiByZXN1bHQgPQogICAgICAgICBuZXcgKAogICAg
ICAgICAgICAgTm90TnVsbCwKLSAgICAgICAgICAgIGFsbG9jYXRlQ2VsbDxHZW5lcmF0b3JGcmFt
ZT4odm0uaGVhcCwgYWxsb2NhdGlvblNpemVGb3JMb2NhbHMobnVtYmVyT2ZMb2NhbHMpKSkKLSAg
ICAgICAgR2VuZXJhdG9yRnJhbWUodm0sIG51bWJlck9mTG9jYWxzKTsKKyAgICAgICAgICAgIGFs
bG9jYXRlQ2VsbDxHZW5lcmF0b3JGcmFtZT4odm0uaGVhcCwgYWxsb2NhdGlvblNpemVGb3JMb2Nh
bHMobnVtYmVyT2ZDYWxsZWVMb2NhbHMpKSkKKyAgICAgICAgR2VuZXJhdG9yRnJhbWUodm0sIHN0
cnVjdHVyZSwgbnVtYmVyT2ZDYWxsZWVMb2NhbHMpOwogICAgIHJlc3VsdC0+ZmluaXNoQ3JlYXRp
b24odm0pOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK0dlbmVyYXRvckZyYW1lKiBHZW5lcmF0
b3JGcmFtZTo6Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgc2l6ZV90IG51bWJlck9mQ2FsbGVlTG9j
YWxzKQoreworICAgIHJldHVybiBjcmVhdGUoZXhlYy0+dm0oKSwgZXhlYy0+bGV4aWNhbEdsb2Jh
bE9iamVjdCgpLT5nZW5lcmF0b3JGcmFtZVN0cnVjdHVyZSgpLCBudW1iZXJPZkNhbGxlZUxvY2Fs
cyk7Cit9CisKIHZvaWQgR2VuZXJhdG9yRnJhbWU6OnNhdmUoRXhlY1N0YXRlKiBleGVjLCBjb25z
dCBGYXN0Qml0VmVjdG9yJiBsaXZlQ2FsbGVlTG9jYWxzKQogeworICAgIC8vIEFsbG9jYXRlIHRo
ZSBnZW5lcmF0b3IgbG9jYWwgc3BhY2UgZmlyc3QuCisgICAgbV9udW1iZXJPZlNhdmVkQ2FsbGVl
TG9jYWxzID0gbGl2ZUNhbGxlZUxvY2Fscy5iaXRDb3VudCgpOworCiAgICAgLy8gT25seSBzYXZl
IGNhbGxlZSBsb2NhbHMuCiAgICAgLy8gRXZlcnkgdGltZSBhIGdlbmVyYXRvciBpcyBjYWxsZWQg
KG9yIHJlc3VtZWQpLCBwYXJhbWV0ZXJzIHNob3VsZCBiZSByZXBsYWNlZC4KLSAgICBBU1NFUlQo
bGl2ZUNhbGxlZUxvY2Fscy5udW1CaXRzKCkgPD0gbV9udW1iZXJPZkNhbGxlZUxvY2Fscyk7Cisg
ICAgdW5zaWduZWQgZ2VuZXJhdG9yTG9jYWxJbmRleCA9IDA7CiAgICAgbGl2ZUNhbGxlZUxvY2Fs
cy5mb3JFYWNoU2V0Qml0KFsmXShzaXplX3QgaW5kZXgpIHsKLSAgICAgICAgbG9jYWxBdChpbmRl
eCkuc2V0KGV4ZWMtPnZtKCksIHRoaXMsIGV4ZWMtPnVuY2hlY2tlZFIodmlydHVhbFJlZ2lzdGVy
Rm9yTG9jYWwoaW5kZXgpKS5qc1ZhbHVlKCkpOworICAgICAgICBsb2NhbEF0KGdlbmVyYXRvckxv
Y2FsSW5kZXgrKykuc2V0KGV4ZWMtPnZtKCksIHRoaXMsIGV4ZWMtPnVuY2hlY2tlZFIodmlydHVh
bFJlZ2lzdGVyRm9yTG9jYWwoaW5kZXgpKS5qc1ZhbHVlKCkpOwogICAgIH0pOwogfQogCkBAIC04
MCwxMCArOTAsMTEgQEAgdm9pZCBHZW5lcmF0b3JGcmFtZTo6cmVzdW1lKEV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZUNhbGxlZUxvY2EKIHsKICAgICAvLyBPbmx5IHJl
c3VtZSBjYWxsZWUgbG9jYWxzLgogICAgIC8vIEV2ZXJ5IHRpbWUgYSBnZW5lcmF0b3IgaXMgY2Fs
bGVkIChvciByZXN1bWVkKSwgcGFyYW1ldGVycyBzaG91bGQgYmUgcmVwbGFjZWQuCisgICAgdW5z
aWduZWQgZ2VuZXJhdG9yTG9jYWxJbmRleCA9IDA7CiAgICAgbGl2ZUNhbGxlZUxvY2Fscy5mb3JF
YWNoU2V0Qml0KFsmXShzaXplX3QgaW5kZXgpIHsKLSAgICAgICAgZXhlYy0+dW5jaGVja2VkUih2
aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChpbmRleCkpID0gbG9jYWxBdChpbmRleCkuZ2V0KCk7Ci0g
ICAgICAgIGxvY2FsQXQoaW5kZXgpLmNsZWFyKCk7CisgICAgICAgIGV4ZWMtPnVuY2hlY2tlZFIo
dmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaW5kZXgpKSA9IGxvY2FsQXQoZ2VuZXJhdG9yTG9jYWxJ
bmRleCsrKS5nZXQoKTsKICAgICB9KTsKKyAgICBtX251bWJlck9mU2F2ZWRDYWxsZWVMb2NhbHMg
PSAwOwogfQogCiB2b2lkIEdlbmVyYXRvckZyYW1lOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2Vs
bCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCkBAIC05MSw3ICsxMDIsMTIgQEAgdm9pZCBHZW5lcmF0
b3JGcmFtZTo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9y
KQogICAgIEdlbmVyYXRvckZyYW1lKiB0aGlzT2JqZWN0ID0ganNDYXN0PEdlbmVyYXRvckZyYW1l
Kj4oY2VsbCk7CiAgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsK
ICAgICAvLyBTaW5jZSBvbmx5IHRydWUgY2VsbCBwb2ludGVycyBhcmUgc3RvcmVkIGFzIGEgY2Vs
bCwgd2UgY2FuIHNhZmVseSBtYXJrIHRoZW0uCi0gICAgdmlzaXRvci5hcHBlbmRWYWx1ZXModGhp
c09iamVjdC0+bG9jYWxzKCksIHRoaXNPYmplY3QtPm1fbnVtYmVyT2ZDYWxsZWVMb2NhbHMpOwor
ICAgIHZpc2l0b3IuYXBwZW5kVmFsdWVzKHRoaXNPYmplY3QtPmxvY2FscygpLCB0aGlzT2JqZWN0
LT5tX251bWJlck9mU2F2ZWRDYWxsZWVMb2NhbHMpOworICAgIC8vIENsZWFyIG5vdCB1c2VkIGNh
bGxlZSBsb2NhbHMgd2hlbiBtYXJraW5nLgorICAgIC8vIFRoaXMgZW5zdXJlcyB0aGF0LCAiaWYg
YSBnaXZlbiBsb2NhbCBoYXMgYSB2YWx1ZSwgdGhpcyB2YWx1ZSBpcyBjb3JyZWN0bHkgbWFya2Vk
IGluIHRoZSBwcmV2aW91cyBtYXJraW5nIHBoYXNlIi4KKyAgICBzaXplX3QgdW51c2VkTG9jYWxz
Q291bnQgPSB0aGlzT2JqZWN0LT5tX251bWJlck9mQ2FsbGVlTG9jYWxzIC0gdGhpc09iamVjdC0+
bV9udW1iZXJPZlNhdmVkQ2FsbGVlTG9jYWxzOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
dW51c2VkTG9jYWxzQ291bnQ7ICsraSkKKyAgICAgICAgdGhpc09iamVjdC0+bG9jYWxBdCh0aGlz
T2JqZWN0LT5tX251bWJlck9mU2F2ZWRDYWxsZWVMb2NhbHMgKyBpKS5jbGVhcigpOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0dlbmVyYXRvckZyYW1lLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5l
cmF0b3JGcmFtZS5oCmluZGV4IDNkNTQ1YjE0N2RkNGFiZmIyYmJiOWI1YTcxOTRlOGY3NDg0MWM0
OWEuLmNmMWRiN2EyYmVlNjBkYTI5NDY0ZWM0MTdhMGM1ZmI4YzFmMGFlOGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZyYW1lLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJhbWUuaApAQCAtMjcsMTEgKzI3
LDE0IEBACiAjZGVmaW5lIEdlbmVyYXRvckZyYW1lX2gKIAogI2luY2x1ZGUgIkpTQ2VsbC5oIgor
I2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAjaW5jbHVkZSA8d3RmL0Zhc3RCaXRWZWN0b3IuaD4KIAog
bmFtZXNwYWNlIEpTQyB7CiAKLWNsYXNzIEdlbmVyYXRvckZyYW1lIDogcHVibGljIEpTQ2VsbCB7
CitjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisKK2NsYXNzIEdlbmVyYXRvckZyYW1lIDog
cHVibGljIEpTTm9uRmluYWxPYmplY3QgewogICAgIGZyaWVuZCBjbGFzcyBKSVQ7CiAjaWYgRU5B
QkxFKERGR19KSVQpCiAgICAgZnJpZW5kIGNsYXNzIERGRzo6U3BlY3VsYXRpdmVKSVQ7CkBAIC0z
OSwxMiArNDIsMTIgQEAgY2xhc3MgR2VuZXJhdG9yRnJhbWUgOiBwdWJsaWMgSlNDZWxsIHsKICNl
bmRpZgogICAgIGZyaWVuZCBjbGFzcyBWTTsKIHB1YmxpYzoKLSAgICB0eXBlZGVmIEpTQ2VsbCBC
YXNlOwotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IFN0cnVjdHVy
ZUlzSW1tb3J0YWwgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKKyAgICB0eXBlZGVmIEpTTm9uRmlu
YWxPYmplY3QgQmFzZTsKIAogICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CiAKLSAgICBzdGF0aWMg
R2VuZXJhdG9yRnJhbWUqIGNyZWF0ZShWTSYsIHNpemVfdCBudW1iZXJPZkNhbGxlZUxvY2Fscyk7
CisgICAgc3RhdGljIEdlbmVyYXRvckZyYW1lKiBjcmVhdGUoRXhlY1N0YXRlKiwgc2l6ZV90IG51
bWJlck9mQ2FsbGVlTG9jYWxzKTsKKyAgICBzdGF0aWMgR2VuZXJhdG9yRnJhbWUqIGNyZWF0ZShW
TSYsIFN0cnVjdHVyZSosIHNpemVfdCBudW1iZXJPZkNhbGxlZUxvY2Fscyk7CiAKICAgICBXcml0
ZUJhcnJpZXJCYXNlPFVua25vd24+KiBsb2NhbHMoKQogICAgIHsKQEAgLTUzLDcgKzU2LDYgQEAg
Y2xhc3MgR2VuZXJhdG9yRnJhbWUgOiBwdWJsaWMgSlNDZWxsIHsKIAogICAgIFdyaXRlQmFycmll
ckJhc2U8VW5rbm93bj4mIGxvY2FsQXQoc2l6ZV90IGluZGV4KQogICAgIHsKLSAgICAgICAgQVNT
RVJUKGluZGV4IDwgbV9udW1iZXJPZkNhbGxlZUxvY2Fscyk7CiAgICAgICAgIHJldHVybiBsb2Nh
bHMoKVtpbmRleF07CiAgICAgfQogCkBAIC02Miw2ICs2NCwyMSBAQCBjbGFzcyBHZW5lcmF0b3JG
cmFtZSA6IHB1YmxpYyBKU0NlbGwgewogICAgICAgICByZXR1cm4gV1RGOjpyb3VuZFVwVG9NdWx0
aXBsZU9mPHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pPihzaXplb2YoR2VuZXJhdG9yRnJh
bWUpKTsKICAgICB9CiAKKyAgICBzdGF0aWMgc2l6ZV90IGxvY2FsT2Zmc2V0KHVuc2lnbmVkIGlu
ZGV4KQorICAgIHsKKyAgICAgICAgcmV0dXJuIG9mZnNldE9mTG9jYWxzKCkgKyBpbmRleCAqIHNp
emVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pOworICAgIH0KKworICAgIHN0YXRpYyBzaXplX3Qg
bnVtYmVyT2ZDYWxsZWVMb2NhbHNPZmZzZXQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIE9CSkVD
VF9PRkZTRVRPRihHZW5lcmF0b3JGcmFtZSwgbV9udW1iZXJPZkNhbGxlZUxvY2Fscyk7CisgICAg
fQorCisgICAgc3RhdGljIHNpemVfdCBudW1iZXJPZlNhdmVkQ2FsbGVlTG9jYWxzT2Zmc2V0KCkK
KyAgICB7CisgICAgICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoR2VuZXJhdG9yRnJhbWUsIG1f
bnVtYmVyT2ZTYXZlZENhbGxlZUxvY2Fscyk7CisgICAgfQorCiAgICAgc3RhdGljIHNpemVfdCBh
bGxvY2F0aW9uU2l6ZUZvckxvY2Fscyh1bnNpZ25lZCBudW1iZXJPZkxvY2FscykKICAgICB7CiAg
ICAgICAgIHJldHVybiBvZmZzZXRPZkxvY2FscygpICsgbnVtYmVyT2ZMb2NhbHMgKiBzaXplb2Yo
V3JpdGVCYXJyaWVyPFVua25vd24+KTsKQEAgLTczLDE2ICs5MCwxNiBAQCBjbGFzcyBHZW5lcmF0
b3JGcmFtZSA6IHB1YmxpYyBKU0NlbGwgewogICAgIHZvaWQgcmVzdW1lKEV4ZWNTdGF0ZSosIGNv
bnN0IEZhc3RCaXRWZWN0b3ImIGxpdmVDYWxsZWVMb2NhbHMpOwogCiBwcml2YXRlOgotICAgIEdl
bmVyYXRvckZyYW1lKFZNJiwgc2l6ZV90IG51bWJlck9mQ2FsbGVlTG9jYWxzKTsKKyAgICBHZW5l
cmF0b3JGcmFtZShWTSYsIFN0cnVjdHVyZSosIHVpbnQzMl90IG51bWJlck9mQ2FsbGVlTG9jYWxz
KTsKIAotICAgIHNpemVfdCBtX251bWJlck9mQ2FsbGVlTG9jYWxzOworICAgIHVpbnQzMl90IG1f
bnVtYmVyT2ZDYWxsZWVMb2NhbHM7CisgICAgdWludDMyX3QgbV9udW1iZXJPZlNhdmVkQ2FsbGVl
TG9jYWxzIHsgMCB9OwogCiAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsK
IAotICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKLQogcHJvdGVjdGVkOgogICAgIHN0YXRp
YyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKKyAgICB2b2lkIGZp
bmlzaENyZWF0aW9uKFZNJik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCAzNWMxMmEz
MTcwZWZlMjNhNzM4MjY5OTBlZTg2ZWZhZTk0NDQwZWRiLi45NDk2ZmVjZTgyM2M5MGMwODczYzM1
MDlhODQ2MzhhOWJlYzBlZTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC01MSw2ICs1MSw3IEBACiAjaW5jbHVkZSAiRXJyb3JQ
cm90b3R5cGUuaCIKICNpbmNsdWRlICJGdW5jdGlvbkNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAi
RnVuY3Rpb25Qcm90b3R5cGUuaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JGcmFtZS5oIgogI2luY2x1
ZGUgIkdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJHZW5lcmF0b3JG
dW5jdGlvblByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkdlbmVyYXRvclByb3RvdHlwZS5oIgpAQCAt
NTUzLDYgKzU1NCw3IEBAIG1fICMjIHByb3Blck5hbWUgIyMgU3RydWN0dXJlLnNldCh2bSwgdGhp
cywgaW5zdGFuY2VUeXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoCiAjdW5kZWYgQ1JFQVRFX1BS
T1RPVFlQRV9GT1JfREVSSVZFRF9JVEVSQVRPUl9UWVBFCiAKICAgICBtX3Byb3BlcnR5TmFtZUl0
ZXJhdG9yU3RydWN0dXJlLnNldCh2bSwgdGhpcywgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6Y3Jl
YXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2l0ZXJhdG9yUHJvdG90eXBlLmdldCgpKSk7CisgICAg
bV9nZW5lcmF0b3JGcmFtZVN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIEdlbmVyYXRvckZyYW1lOjpj
cmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIGpzTnVsbCgpKSk7CiAgICAgbV9nZW5lcmF0b3JQcm90
b3R5cGUuc2V0KHZtLCB0aGlzLCBHZW5lcmF0b3JQcm90b3R5cGU6OmNyZWF0ZSh2bSwgdGhpcywg
R2VuZXJhdG9yUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1faXRlcmF0b3JQ
cm90b3R5cGUuZ2V0KCkpKSk7CiAgICAgCiAgICAgLy8gQ29uc3RydWN0b3JzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCBmOTBjMTkxMWNi
ZTIzMzdiOTI4MDRiZDdjNGMyMzc2YTU3MzA4YTNkLi44ODIxN2JjNDhhODg0ZDYwYjVkMjg3NmFl
NzU5MDA1ZGExMGViNmIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmgKQEAgLTI4Myw2ICsyODMsNyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6
IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBMYXp5UHJvcGVydHk8SlNH
bG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9jYWxsYmFja0Z1bmN0aW9uU3RydWN0dXJlOwogICAg
IExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0dXJlPiBtX2NhbGxiYWNrT2JqZWN0
U3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fcHJvcGVydHlOYW1lSXRl
cmF0b3JTdHJ1Y3R1cmU7CisgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9nZW5lcmF0b3JG
cmFtZVN0cnVjdHVyZTsKICNpZiBKU0NfT0JKQ19BUElfRU5BQkxFRAogICAgIExhenlQcm9wZXJ0
eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0dXJlPiBtX29iamNDYWxsYmFja0Z1bmN0aW9uU3RydWN0
dXJlOwogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0dXJlPiBtX29iamNX
cmFwcGVyT2JqZWN0U3RydWN0dXJlOwpAQCAtNTU0LDYgKzU1NSw3IEBAIGNsYXNzIEpTR2xvYmFs
T2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIFN0cnVjdHVy
ZSogY2FsbGJhY2tGdW5jdGlvblN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FsbGJhY2tG
dW5jdGlvblN0cnVjdHVyZS5nZXQodGhpcyk7IH0KICAgICBTdHJ1Y3R1cmUqIGNhbGxiYWNrT2Jq
ZWN0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9jYWxsYmFja09iamVjdFN0cnVjdHVyZS5n
ZXQodGhpcyk7IH0KICAgICBTdHJ1Y3R1cmUqIHByb3BlcnR5TmFtZUl0ZXJhdG9yU3RydWN0dXJl
KCkgY29uc3QgeyByZXR1cm4gbV9wcm9wZXJ0eU5hbWVJdGVyYXRvclN0cnVjdHVyZS5nZXQoKTsg
fQorICAgIFN0cnVjdHVyZSogZ2VuZXJhdG9yRnJhbWVTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVy
biBtX2dlbmVyYXRvckZyYW1lU3RydWN0dXJlLmdldCgpOyB9CiAjaWYgSlNDX09CSkNfQVBJX0VO
QUJMRUQKICAgICBTdHJ1Y3R1cmUqIG9iamNDYWxsYmFja0Z1bmN0aW9uU3RydWN0dXJlKCkgY29u
c3QgeyByZXR1cm4gbV9vYmpjQ2FsbGJhY2tGdW5jdGlvblN0cnVjdHVyZS5nZXQodGhpcyk7IH0K
ICAgICBTdHJ1Y3R1cmUqIG9iamNXcmFwcGVyT2JqZWN0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1
cm4gbV9vYmpjV3JhcHBlck9iamVjdFN0cnVjdHVyZS5nZXQodGhpcyk7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCBkNTk4OTUxZTIyZjJlMjZjOWVlYWZmNzNkZmZkZTE0
ZjE2YTcwYWFlLi5kMzRhZGQzZWI1MjY2OGQyYWExN2JkODRmOWVmMWE0ZDQxOTcyMWQ1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC0yNDMsNyArMjQzLDYgQEAgVk06OlZN
KFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgIGluZmVycmVkVHlwZVN0cnVj
dHVyZS5zZXQoKnRoaXMsIEluZmVycmVkVHlwZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBq
c051bGwoKSkpOwogICAgIGluZmVycmVkVHlwZVRhYmxlU3RydWN0dXJlLnNldCgqdGhpcywgSW5m
ZXJyZWRUeXBlVGFibGU6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAg
ICBmdW5jdGlvblJhcmVEYXRhU3RydWN0dXJlLnNldCgqdGhpcywgRnVuY3Rpb25SYXJlRGF0YTo6
Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwotICAgIGdlbmVyYXRvckZyYW1l
U3RydWN0dXJlLnNldCgqdGhpcywgR2VuZXJhdG9yRnJhbWU6OmNyZWF0ZVN0cnVjdHVyZSgqdGhp
cywgMCwganNOdWxsKCkpKTsKICAgICBleGNlcHRpb25TdHJ1Y3R1cmUuc2V0KCp0aGlzLCBFeGNl
cHRpb246OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICBwcm9taXNl
RGVmZXJyZWRTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBKU1Byb21pc2VEZWZlcnJlZDo6Y3JlYXRlU3Ry
dWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIGludGVybmFsUHJvbWlzZURlZmVycmVk
U3RydWN0dXJlLnNldCgqdGhpcywgSlNJbnRlcm5hbFByb21pc2VEZWZlcnJlZDo6Y3JlYXRlU3Ry
dWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVk0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgK
aW5kZXggMjk3NDEyNjNiYjExNGJlZDBiM2M0ZWZjOWQ1MmQ1ZWJhYmQzODRkYy4uMWJjZGFmYTQ1
MTE2YjAwOTJjNmNlODE5ZmVhZDQzZGQ0M2VjZDdjZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVk0uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTS5oCkBAIC0zMTUsNyArMzE1LDYgQEAgY2xhc3MgVk0gOiBwdWJsaWMgVGhyZWFkU2FmZVJl
ZkNvdW50ZWQ8Vk0+IHsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBpbmZlcnJlZFR5cGVTdHJ1Y3R1
cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gaW5mZXJyZWRUeXBlVGFibGVTdHJ1Y3R1cmU7CiAg
ICAgU3Ryb25nPFN0cnVjdHVyZT4gZnVuY3Rpb25SYXJlRGF0YVN0cnVjdHVyZTsKLSAgICBTdHJv
bmc8U3RydWN0dXJlPiBnZW5lcmF0b3JGcmFtZVN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0
dXJlPiBleGNlcHRpb25TdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gcHJvbWlzZURl
ZmVycmVkU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGludGVybmFsUHJvbWlzZURl
ZmVycmVkU3RydWN0dXJlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3Rz
L3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQtYXJyYXkuanMgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLWFuZC1hcnJheS5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5mZTkzOTgxMmZkYmFlYzZiODMyYmZkMDBmMjE1M2RlZjg0YmI3NTkyCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmli
LWZ0bC1hbmQtYXJyYXkuanMKQEAgLTAsMCArMSwyMyBAQAorKGZ1bmN0aW9uICgpIHsKKyAgICBm
dW5jdGlvbiAqZmliKCkKKyAgICB7CisgICAgICAgIGxldCBhID0gMTsKKyAgICAgICAgbGV0IGIg
PSAxOworICAgICAgICBsZXQgYyA9IFsgMCBdOworICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAg
ICAgICAgICAgY1swXSA9IGE7CisgICAgICAgICAgICB5aWVsZCBjOworICAgICAgICAgICAgW2Es
IGJdID0gW2IsIGEgKyBiXTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGxldCB2YWx1ZSA9IDA7
CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxZTQ7ICsraSkgeworICAgICAgICBsZXQgZiA9IGZp
YigpOworICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDsgKytpKSB7CisgICAgICAgICAg
ICB2YWx1ZSA9IGYubmV4dCgpLnZhbHVlOworICAgICAgICB9CisgICAgICAgIGlmICh2YWx1ZVsw
XSAhPT0gMzU0MjI0ODQ4MTc5MjYyMDAwMDAwKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9y
KGBiYWQgdmFsdWU6JHtyZXN1bHR9YCk7CisgICAgfQorfSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwtYW5kLW9iamVj
dC5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1m
dGwtYW5kLW9iamVjdC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NjczNDBmMmVhNGM3NDM4YTJkMjA5YWE0MGQw
Njc3ZTRhYjdkM2ZiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQtb2JqZWN0LmpzCkBAIC0wLDAgKzEsMjMg
QEAKKyhmdW5jdGlvbiAoKSB7CisgICAgZnVuY3Rpb24gKmZpYigpCisgICAgeworICAgICAgICBs
ZXQgYSA9IDE7CisgICAgICAgIGxldCBiID0gMTsKKyAgICAgICAgbGV0IGMgPSB7IGZpYjogMCB9
OworICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAgYy5maWIgPSBhOworICAgICAg
ICAgICAgeWllbGQgYzsKKyAgICAgICAgICAgIFthLCBiXSA9IFtiLCBhICsgYl07CisgICAgICAg
IH0KKyAgICB9CisKKyAgICBsZXQgdmFsdWUgPSAwOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwg
MWU0OyArK2kpIHsKKyAgICAgICAgbGV0IGYgPSBmaWIoKTsKKyAgICAgICAgZm9yIChsZXQgaSA9
IDA7IGkgPCAxMDA7ICsraSkgeworICAgICAgICAgICAgdmFsdWUgPSBmLm5leHQoKS52YWx1ZTsK
KyAgICAgICAgfQorICAgICAgICBpZiAodmFsdWUuZmliICE9PSAzNTQyMjQ4NDgxNzkyNjIwMDAw
MDApCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCB2YWx1ZToke3Jlc3VsdH1gKTsK
KyAgICB9Cit9KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0
cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQtc3RyaW5nLmpzIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQtc3RyaW5nLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjQzOGFlNmFiMzM0NzA0NjgyMjg0OWY0MzAwNGVhNWM0MDNlZWRhMjgKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWIt
ZnRsLWFuZC1zdHJpbmcuanMKQEAgLTAsMCArMSwyMiBAQAorKGZ1bmN0aW9uICgpIHsKKyAgICBm
dW5jdGlvbiAqZmliKCkKKyAgICB7CisgICAgICAgIGxldCBhID0gMTsKKyAgICAgICAgbGV0IGIg
PSAxOworICAgICAgICBsZXQgYyA9ICJSZXN1bHQhICI7CisgICAgICAgIHdoaWxlICh0cnVlKSB7
CisgICAgICAgICAgICB5aWVsZCBjICsgYTsKKyAgICAgICAgICAgIFthLCBiXSA9IFtiLCBhICsg
Yl07CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQgdmFsdWUgPSAwOworICAgIGZvciAobGV0
IGkgPSAwOyBpIDwgMWU0OyArK2kpIHsKKyAgICAgICAgbGV0IGYgPSBmaWIoKTsKKyAgICAgICAg
Zm9yIChsZXQgaSA9IDA7IGkgPCAxMDA7ICsraSkgeworICAgICAgICAgICAgdmFsdWUgPSBmLm5l
eHQoKS52YWx1ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAodmFsdWUgIT09IGBSZXN1bHQhIDM1
NDIyNDg0ODE3OTI2MjAwMDAwMGApCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCB2
YWx1ZToke3Jlc3VsdH1gKTsKKyAgICB9Cit9KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC5qcyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MzQwZTMzZGJjODY4YmVhN2E4OTNjOWVjMTZiNzc5ZWMyNmJkYjE5YwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwu
anMKQEAgLTAsMCArMSwyMSBAQAorKGZ1bmN0aW9uICgpIHsKKyAgICBmdW5jdGlvbiAqZmliKCkK
KyAgICB7CisgICAgICAgIGxldCBhID0gMTsKKyAgICAgICAgbGV0IGIgPSAxOworICAgICAgICB3
aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAgeWllbGQgYTsKKyAgICAgICAgICAgIFthLCBiXSA9
IFtiLCBhICsgYl07CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQgdmFsdWUgPSAwOworICAg
IGZvciAobGV0IGkgPSAwOyBpIDwgMWU0OyArK2kpIHsKKyAgICAgICAgbGV0IGYgPSBmaWIoKTsK
KyAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDA7ICsraSkgeworICAgICAgICAgICAgdmFs
dWUgPSBmLm5leHQoKS52YWx1ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAodmFsdWUgIT09IDM1
NDIyNDg0ODE3OTI2MjAwMDAwMCkKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIHZh
bHVlOiR7cmVzdWx0fWApOworICAgIH0KK30oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1mcmFtZS1lbXB0eS5qcyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZyYW1lLWVtcHR5LmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjU5ZTg4NTViZmFjM2M1NmRmOTI2YWJkNDI4YzAxM2MzMzQxNjI3NDYKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1m
cmFtZS1lbXB0eS5qcwpAQCAtMCwwICsxLDM0IEBACitmdW5jdGlvbiBzaG91bGRUaHJvdyhmdW5j
LCBlcnJvck1lc3NhZ2UpIHsKKyAgICB2YXIgZXJyb3JUaHJvd24gPSBmYWxzZTsKKyAgICB2YXIg
ZXJyb3IgPSBudWxsOworICAgIHRyeSB7CisgICAgICAgIGZ1bmMoKTsKKyAgICB9IGNhdGNoIChl
KSB7CisgICAgICAgIGVycm9yVGhyb3duID0gdHJ1ZTsKKyAgICAgICAgZXJyb3IgPSBlOworICAg
IH0KKyAgICBpZiAoIWVycm9yVGhyb3duKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ25vdCB0
aHJvd24nKTsKKyAgICBpZiAoU3RyaW5nKGVycm9yKSAhPT0gZXJyb3JNZXNzYWdlKQorICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IoYGJhZCBlcnJvcjogJHtTdHJpbmcoZXJyb3IpfWApOworfQorCitz
aG91bGRUaHJvdyhmdW5jdGlvbiAoKSB7CisgICAgZnVuY3Rpb24gKmZpYihmbGFnKQorICAgIHsK
KyAgICAgICAgbGV0IGEgPSAxOworICAgICAgICBsZXQgYiA9IDE7CisgICAgICAgIHlpZWxkIDQy
OworICAgICAgICBpZiAoZmxhZykKKyAgICAgICAgICAgIHJldHVybiBjOworICAgICAgICBsZXQg
YyA9IDUwMDsKKyAgICB9CisKKyAgICBsZXQgdmFsdWUgPSAwOworICAgIGZvciAobGV0IGkgPSAw
OyBpIDwgMWU0OyArK2kpIHsKKyAgICAgICAgZm9yIChsZXQgdiBvZiBmaWIoZmFsc2UpKSB7Cisg
ICAgICAgIH0KKyAgICB9CisgICAgZm9yIChsZXQgdiBvZiBmaWIodHJ1ZSkpIHsKKyAgICB9Cit9
LCBgUmVmZXJlbmNlRXJyb3I6IENhbm5vdCBhY2Nlc3MgdW5pbml0aWFsaXplZCB2YXJpYWJsZS5g
KTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>282707</attachid>
            <date>2016-07-04 04:48:24 -0700</date>
            <delta_ts>2016-07-04 06:33:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-152723-20160704204755.patch</filename>
            <type>text/plain</type>
            <size>199990</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAyODA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
M2VmNGQ0ZDUwOWYyY2VhMmY2YzIzNzQ1NTQ3YTI2MjU5YjQzOWRhLi5hYWZlNGQ5NDVmYTRiNDQz
MDNiZTVmOTM4NTQyZjRkOWMyMGJmM2UzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2NDggQEAKKzIwMTYtMDctMDQgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0RGR10gRW1iZWQgZ2VuZXJhdG9yIGZyYW1lIGludG8gU2NvcGUg
YW5kIGVuYWJsZSBnZW5lcmF0b3IgaW4gREZHIC8gRlRMCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTI3MjMKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworCisgICAgICAgICEhISBXSVAgISEhIFRoZSBmb2xsb3dpbmcgZG9j
dW1lbnQgaXMgbm90IHVwZGF0ZWQgeWV0LgorCisKKworCisKKworCisKKyAgICAgICAgVGhpcyBw
YXRjaCBpcyBhbiBpbml0aWFsIGF0dGVtcHQgdG8gaW1wbGVtZW50IERGRyBhbmQgRlRMIGNhcGFi
bGUgRVM2IGdlbmVyYXRvcnMuCisgICAgICAgIFdlIGludHJvZHVjZSB0aGUgc2V2ZXJhbCBieXRl
Y29kZXMgYW5kIGNvbXBpbGUgdGhlbSBpbiBERkcgLyBGVEwuCisKKyAgICAgICAgLSBvcF9uZXdf
Z2VuZXJhdG9yX2ZyYW1lCisKKyAgICAgICAgICAgIEFsbG9jYXRlIEdlbmVyYXRvckZyYW1lIGlu
IHRoZSBieXRlY29kZSBpbnN0ZWFkIG9mIGFsbG9jYXRpbmcgaXQgaW4gdGhlIG9wX3NhdmUuCisK
KyAgICAgICAgLSBvcF9zYXZlCisKKyAgICAgICAgICAgIE5vdyBCeXRlY29kZUxpdmVuZXNzIGFu
YWx5c2lzIGFuZCBQcmVjaXNlSnVtcFRhcmdldCBhbmFseXNpcyBoYXZlIDIgbW9kZXM7IFN0YW5k
YXJkIGFuZCBFeHRyYWN0R2VuZXJhdG9yTGl2ZUNhbGxlZUxvY2Fscy4KKyAgICAgICAgICAgIFVu
ZGVyIEV4dHJhY3RHZW5lcmF0b3JMaXZlQ2FsbGVlTG9jYWxzIG1vZGUsIG9wX3NhdmUgaGFzIGp1
bXAgdG8gdGhlIG1lcmdlIHBvaW50LiBUaGlzIGp1bXAgaXMganVzdCB1c2VkIGZvciB1c2UtZGVm
IGFuYWx5c2lzIHRvIGV4dHJhY3QKKyAgICAgICAgICAgIGxpdmUgY2FsbGVlIGxvY2FscyBhdCB0
aGUgbWVyZ2UgcG9pbnQuIFRoZXNlIGxpdmUgY2FsbGVlIGxvY2FscyBzaG91bGQgYmUgc2F2ZWQg
YW5kIHJlc3VtZWQgdG8gc3VzcGVuZCBhbmQgcmVzdW1lIGdlbmVyYXRvcnMuCisgICAgICAgICAg
ICBUaGUgbWVyZ2UgcG9pbnQgaXMgdGhlIHBvaW50IHRoYXQgbWVyZ2luZyB0aGUgMiBiYXNpYyBi
bG9ja3MsIHNhdmluZyBsb2NhbHMgdG8gdGhlIGdlbmVyYXRvciBmcmFtZSBhbmQgcmVzdW1pbmcg
bG9jYWxzIGZyb20gdGhlIGdlbmVyYXRvciBmcmFtZS4KKworICAgICAgICAtIG9wX3Jlc3VtZQor
CisgICAgICAgICAgICBUaGlzIHJldHJpZXZlcyBsb2NhbCB2YXJpYWJsZSBmcm9tIHRoZSBnZW5l
cmF0b3IgZnJhbWUuIEV4dHJhY3RHZW5lcmF0b3JMaXZlQ2FsbGVlTG9jYWxzIGFuYWx5c2lzIHdp
bGwgZGlzY292ZXIgbGl2ZSBsb2NhbHMgYXQgdGhlIG1lcmdlIHBvaW50IGFuZCByZWNvcmQgbGl2
ZW5lc3MKKyAgICAgICAgICAgIGluZm9ybWF0aW9uIHRvIG9wX3NhdmUgYW5kIG9wX3Jlc3VtZS4g
T24gdGhlIGJhc2lzIG9mIHRoaXMgaW5mb3JtYXRpb24sIG9wX3Jlc3VtZSB3aWxsIHJldHJpZXZl
IHNhdmVkIGxvY2FscyBmcm9tIHRoZSBnZW5lcmF0b3IgZnJhbWUuCisKKyAgICAgICAgSGVyZSwg
d2UgZXhwbGFpbiBhYm91dCBob3cgdG8gcHJlcHJvY2VzcyBieXRlY29kZXMuCisgICAgICAgIEZp
cnN0LCB3ZSBlbWl0IG9wX3NhdmUsIG9wX3Jlc3VtZSBhbmQgcGVyZm9ybSBFeHRyYWN0R2VuZXJh
dG9yTGl2ZUNhbGxlZUxvY2FscyBhbmFseXNpcy4KKworICAgICAgICBbZW50cnldIC0rLS0+IFtz
YXZlIGJsb2NrXSAtPiBvcF9zYXZlIChpdCBpcyBicmFuY2hpbmcgYnl0ZWNvZGUpIC0tLS0tLT4g
W21lcmdlIGJsb2NrXSAtPiAuLi4KKyAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorICAg
ICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICstPiBvcF9y
ZXQgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgICAgICAgICAgICstLS0tLS0tLS0t
LS0tLS0tLS0+IG9wX3Jlc3VtZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LSsKKworICAgICAgICBUaGVuLCBkaXNjb3ZlciBsaXZlIGxvY2FscyBpbmZvcm1hdGlvbiAoYXMg
RmFzdEJpdFZlY3RvcikgYXQgdGhlIG1lcmdlIHBvaW50IGFuZCBzdG9yZSBpdCB0byBjb3JyZXNw
b25kaW5nIG9wX3NhdmUgYW5kIG9wX3Jlc3VtZS4KKyAgICAgICAgQWZ0ZXIgdGhhdCwgdW5kZXIg
U3RhbmRhcmQgYW5hbHlzaXMgbW9kZSwgdGhlIGFib3ZlIGJ5dGVjb2RlIHN0cmVhbSB3aWxsIGNv
bnN0cnVjdCB0aGUgZm9sbG93aW5nIENGRy4KKyAgICAgICAgSW4gdGhlIGZvbGxvd2luZyBDRkcs
IG9wX3NhdmUgbm8gbG9uZ2VyIGhhcyBqdW1wIHRvIHRoZSBtZXJnZSBwb2ludC4gVGhlIHJlbW92
ZWQganVtcCBlZGdlIHdhcyBqdXN0IHVzZWQgdG8gY2FsY3VsYXRlIGxpdmVuZXNzIGluZm9ybWF0
aW9uIGF0IHRoZSBtZXJnZSBwb2ludC4KKworICAgICAgICBbZW50cnldIC0rLS0+IFtzYXZlIGJs
b2NrXSAtPiBvcF9zYXZlIC0+IG9wX3JldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAr
LT4gW21lcmdlIGJsb2NrXSAtPiAuLi4KKyAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAor
ICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgICAgICAgICAgICstLS0tLS0t
LS0tLS0tLS0tLS0+IG9wX3Jlc3VtZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLSsKKworICAgICAgICBBbmQgd2UgaW50cm9kdWNlcyBzZXZlcmFsIERGRyBub2Rlcy4KKwor
ICAgICAgICAtIE5ld0dlbmVyYXRvckZyYW1lCisKKyAgICAgICAgICAgIFRoaXMganVzdCBhbGxv
Y2F0ZXMgR2VuZXJhdG9yRnJhbWUuCisKKyAgICAgICAgLSBSZXNpemVHZW5lcmF0b3JMb2NhbHMK
KworICAgICAgICAgICAgVGhpcyBzZXQgR2VuZXJhdG9yRnJhbWU6Om1fbnVtYmVyT2ZTYXZlZENh
bGxlZUxvY2FscyAqTiouIFRoaXMgbm9kZSBpcyB1c2VkIHRvICgxKSBhbGxvY2F0ZSBzcGFjZSBm
b3IgbG9jYWxzIGluIEdlbmVyYXRvckZyYW1lIGFuZCAoMikgZGVhbGxvY2F0ZSBzcGFjZSBpbgor
ICAgICAgICAgICAgR2VuZXJhdG9yRnJhbWUgYnkgc2V0dGluZyBpdCBhcyAwLgorCisgICAgICAg
IC0gR2V0R2VuZXJhdG9yTG9jYWwKKworICAgICAgICAgICAgR2V0IGEgc2F2ZWQgbG9jYWwgdmFy
aWFibGUgZnJvbSBhIGdlbmVyYXRvciBmcmFtZS4gR2V0R2VuZXJhdG9yTG9jYWwgYW5kIFNldEdl
bmVyYXRvckxvY2FsIGFyZSBsaW5rZWQgd2l0aCBHZW5lcmF0b3JMb2NhbERhdGEuIFNvIHR5cGUg
cHJlZGljYXRpb24gYW5kIGZsYWdzCisgICAgICAgICAgICBhcmUgY29ycmVjdGx5IHByb3BhZ2F0
ZWQgYmV5b25kIHRoZSBnZW5lcmF0b3IgZnJhbWUuCisKKyAgICAgICAgLSBTZXRHZW5lcmF0b3JM
b2NhbAorCisgICAgICAgICAgICBTdG9yZSBhIGxvY2FsIHZhcmlhYmxlIHRvIGEgZ2VuZXJhdG9y
IGZyYW1lLgorCisgICAgICAgIEZ1dHVyZSBwbGFucyBhcmUgdGhlIGZvbGxvd2luZ3MuCisKKyAg
ICAgICAgMS4gU3VwcG9ydCB0cmFuc2ZlcnJpbmcgQWJzdHJhY3RWYWx1ZSBiZXR3ZWVuIFNldEdl
bmVyYXRvckxvY2FsIGFuZCBHZXRHZW5lcmF0b3JMb2NhbC4gaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE1MzE4MworCisgICAgICAgIDIuIENyZWF0ZSBKU0dlbmVyYXRv
ciBhbmQgYWxsb2NhdGUgaXQgaW4gdGhlIGdlbmVyYXRvciB3cmFwcGVyIGZ1bmN0aW9uLiBUaGlz
IHNob3VsZCBiZSBjb21waWxlZCBpbiBERkcgLyBGVEwgYW5kCisgICAgICAgIHRoaXMgb2JqZWN0
IHNob3VsZCBiZSB0cmFja2VkIChieSBlc2NhcGUgYW5hbHlzaXMpIGFuZCBlbGltaW5hdGVkIGlm
IHBvc3NpYmxlIGJ5IG9iamVjdCBhbGxvY2F0aW9uIGVsaW1pbmF0aW9uLgorCisgICAgICAgIDMu
IEFuZCBvbmNlIHdlIGV4cGxvaXQgdGhhdCBHZW5lcmF0b3JGcmFtZSBpcyBub3QgZXNjYXBlZCBm
cm9tIHRoZSBnaXZlbiBGVEwtZWQgZnVuY3Rpb24sIHdlIHdpbGwgZWxpbWluYXRlIEdlbmVyYXRv
ckZyYW1lIGFsbG9jYXRpb24gYW5kCisgICAgICAgIGNvbnZlcnQgR2VuZXJhdG9yTG9jYWwgb3Bl
cmF0aW9ucyBpbnRvIGdldC9zZXQgbG9jYWwgb3BlcmF0aW9ucy4KKworICAgICAgICAqIENNYWtl
TGlzdHMudHh0OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogYnVpbHRpbnMvR2VuZXJhdG9yUHJvdG90eXBlLmpzOgorICAgICAg
ICAoZ2VuZXJhdG9yUmVzdW1lKToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUJhc2ljQmxv
Y2suY3BwOgorICAgICAgICAoSlNDOjppc0JyYW5jaCk6CisgICAgICAgIChKU0M6OmNvbXB1dGVC
eXRlY29kZUJhc2ljQmxvY2tzKToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUJhc2ljQmxv
Y2suaDoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUdyYXBoLmNwcDogQ29waWVkIGZyb20g
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5o
LgorICAgICAgICAoSlNDOjpCeXRlY29kZUdyYXBoOjpCeXRlY29kZUdyYXBoKToKKyAgICAgICAg
KiBieXRlY29kZS9CeXRlY29kZUdyYXBoLmg6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuaC4KKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHcmFwaDo6Ynl0ZWNvZGVBbmFseXNpc01vZGUpOgorICAgICAgICAoSlNDOjpCeXRl
Y29kZUdyYXBoOjpjb2RlQmxvY2spOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdyYXBoOjpiYXNp
Y0Jsb2Nrcyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR3JhcGg6OlJldmVyc2VJdGVyYWJsZTo6
UmV2ZXJzZUl0ZXJhYmxlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHcmFwaDo6UmV2ZXJzZUl0
ZXJhYmxlOjpiZWdpbik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR3JhcGg6OlJldmVyc2VJdGVy
YWJsZTo6ZW5kKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHcmFwaDo6YmFzaWNCbG9ja3NJblJl
dmVyc2VPcmRlcik6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVJbnNlcnRpb25TZXQuaDog
Q29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5l
c3NBbmFseXNpcy5oLgorICAgICAgICAoSlNDOjpCeXRlY29kZUluc2VydGlvblNldDo6Qnl0ZWNv
ZGVJbnNlcnRpb25TZXQpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uOgor
ICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHA6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lz
KToKKyAgICAgICAgKEpTQzo6ZmluZEJhc2ljQmxvY2tXaXRoTGVhZGVyT2Zmc2V0KToKKyAgICAg
ICAgKEpTQzo6ZmluZEJhc2ljQmxvY2tGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6
OnN0ZXBPdmVySW5zdHJ1Y3Rpb24pOgorICAgICAgICAoSlNDOjpjb21wdXRlTG9jYWxMaXZlbmVz
c0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZUxvY2FsTGl2ZW5lc3NG
b3JCbG9jayk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6cnVuTGl2
ZW5lc3NGaXhwb2ludCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6
Z2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
TGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0ZUZ1bGxMaXZlbmVzcyk6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0ZUtpbGxzKToKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpkdW1wUmVzdWx0cyk6CisgICAgICAgIChKU0M6OkJ5dGVj
b2RlTGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0ZSk6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNv
ZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmg6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNv
ZGVVc2VEZWYuaDoKKyAgICAgICAgKEpTQzo6Y29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCk6
CisgICAgICAgIChKU0M6OmNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAq
IGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZHVtcEJ5
dGVjb2RlKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbik6CisgICAg
ICAgIChKU0M6OkNvZGVCbG9jazo6dmFsaWRhdGUpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVC
bG9jay5oOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmxpdmVuZXNzQW5hbHlzaXMpOgorICAg
ICAgICAqIGJ5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5jcHA6CisgICAgICAgIChKU0M6Omdl
dEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpjb21wdXRlUHJl
Y2lzZUp1bXBUYXJnZXRzKToKKyAgICAgICAgKEpTQzo6ZmluZEp1bXBUYXJnZXRzRm9yQnl0ZWNv
ZGVPZmZzZXQpOgorICAgICAgICAqIGJ5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5oOgorICAg
ICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3R2VuZXJhdG9yRnJhbWUpOgorICAgICAgICAoSlNDOjpC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdFNhdmUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdFJlc3VtZSk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmg6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0b3JGcmFtZVJl
Z2lzdGVyKToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RIZWFwLmg6CisgICAgICAgICogZGZn
L0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkRGRzo6QWJz
dHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKToKKyAg
ICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5
dGVDb2RlUGFyc2VyOjpuZXdHZW5lcmF0b3JMb2NhbERhdGEpOgorICAgICAgICAoSlNDOjpERkc6
OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29k
ZVBhcnNlcjo6cGFyc2VDb2RlQmxvY2spOgorICAgICAgICAqIGRmZy9ERkdDYXBhYmlsaXRpZXMu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OmNhcGFiaWxpdHlMZXZlbCk6CisgICAgICAgICogZGZn
L0RGR0Nsb2JiZXJpemUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAgICAg
ICAgKiBkZmcvREZHQ2xvYmJlcnNFeGl0U3RhdGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmNs
b2JiZXJzRXhpdFN0YXRlKToKKyAgICAgICAgKiBkZmcvREZHRG9lc0dDLmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpkb2VzR0MpOgorICAgICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5vZGUpOgorICAgICAgICAqIGRmZy9E
RkdHZW5lcmF0b3JMb2NhbERhdGEuaDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5oLgorICAgICAgICAoSlNDOjpERkc6OkdlbmVy
YXRvckxvY2FsRGF0YTo6cHJlZGljdCk6CisgICAgICAgIChKU0M6OkRGRzo6R2VuZXJhdG9yTG9j
YWxEYXRhOjpwcmVkaWN0aW9uKToKKyAgICAgICAgKiBkZmcvREZHR3JhcGguaDoKKyAgICAgICAg
KiBkZmcvREZHTWF5RXhpdC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6bWF5RXhpdCk6CisgICAg
ICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNHZW5lcmF0
b3JMb2NhbHNTaXplKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpnZW5lcmF0b3JMb2NhbHNT
aXplKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNHZW5lcmF0b3JMb2NhbEluZGV4KToK
KyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpnZW5lcmF0b3JMb2NhbEluZGV4KToKKyAgICAgICAg
KEpTQzo6REZHOjpOb2RlOjpoYXNHZW5lcmF0b3JMb2NhbERhdGEpOgorICAgICAgICAoSlNDOjpE
Rkc6Ok5vZGU6OmdlbmVyYXRvckxvY2FsRGF0YSk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6
aGFzR2VuZXJhdG9yRnJhbWVMb2NhbHMpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmdlbmVy
YXRvckZyYW1lTG9jYWxzKToKKyAgICAgICAgKiBkZmcvREZHTm9kZVR5cGUuaDoKKyAgICAgICAg
KiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuaDoK
KyAgICAgICAgKiBkZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwOgorICAgICAg
ICAqIGRmZy9ERkdTYWZlVG9FeGVjdXRlLmg6CisgICAgICAgIChKU0M6OkRGRzo6c2FmZVRvRXhl
Y3V0ZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld0dlbmVyYXRvckZyYW1lKToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVJlc2l6ZUdlbmVyYXRvckxvY2Fs
cyk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgICogZGZnL0RG
R1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRm
Zy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1N0
cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTdHJ1Y3R1
cmVSZWdpc3RyYXRpb25QaGFzZTo6cnVuKToKKyAgICAgICAgKiBmdGwvRlRMQWJzdHJhY3RIZWFw
UmVwb3NpdG9yeS5jcHA6CisgICAgICAgICogZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnku
aDoKKyAgICAgICAgKiBmdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRM
OjpjYW5Db21waWxlKToKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklU
Ojpwcml2YXRlQ29tcGlsZU1haW5QYXNzKToKKyAgICAgICAgKiBqaXQvSklULmg6CisgICAgICAg
ICogaml0L0pJVE9wY29kZXMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bfc2F2ZSk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9yZXN1bWUpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRfb3BfbmV3X2dlbmVyYXRvcl9mcmFtZSk6CisgICAgICAgICogaml0L0pJVE9wY29kZXMz
Ml82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9zYXZlKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX3Jlc3VtZSk6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNz
LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0V3JpdGVCYXJyaWVyKToKKyAgICAgICAgKiBs
bGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwOgorICAgICAgICAqIGxsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXIuYXNtOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAgICAo
SlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJbm5lcik6CisgICAgICAgIChKU0M6OlBhcnNl
cjxMZXhlclR5cGU+OjpwYXJzZUdlbmVyYXRvckZ1bmN0aW9uU291cmNlRWxlbWVudHMpOgorICAg
ICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6Y3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyk6
CisgICAgICAgICogcGFyc2VyL1BhcnNlci5oOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xv
d1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6U0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAqIHJ1
bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmg6CisgICAgICAgICogcnVudGltZS9HZW5lcmF0b3JGcmFt
ZS5jcHA6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpHZW5lcmF0b3JGcmFtZSk6Cisg
ICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChK
U0M6OkdlbmVyYXRvckZyYW1lOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpHZW5l
cmF0b3JGcmFtZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OnNhdmUp
OgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6cmVzdW1lKToKKyAgICAgICAgKEpTQzo6
R2VuZXJhdG9yRnJhbWU6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJh
dG9yRnJhbWUuaDoKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OmxvY2FsT2Zmc2V0KToK
KyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6Om51bWJlck9mQ2FsbGVlTG9jYWxzT2Zmc2V0
KToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6Om51bWJlck9mU2F2ZWRDYWxsZWVMb2Nh
bHNPZmZzZXQpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6bG9jYWxBdCk6IERlbGV0
ZWQuCisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6
OkpTR2xvYmFsT2JqZWN0Ojppbml0KToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0
Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpnZW5lcmF0b3JGcmFtZVN0cnVjdHVy
ZSk6CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpWTSk6IERl
bGV0ZWQuCisgICAgICAgICogcnVudGltZS9WTS5oOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9n
ZW5lcmF0b3ItZmliLWZ0bC1hbmQtYXJyYXkuanM6IEFkZGVkLgorICAgICAgICAoZmliKToKKyAg
ICAgICAgKiB0ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwtYW5kLW9iamVjdC5qczogQWRk
ZWQuCisgICAgICAgIChmaWIpOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmli
LWZ0bC1hbmQtc3RyaW5nLmpzOiBBZGRlZC4KKyAgICAgICAgKGZpYik6CisgICAgICAgICogdGVz
dHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLmpzOiBBZGRlZC4KKyAgICAgICAgKGZpYik6Cisg
ICAgICAgICogdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1mcmFtZS1lbXB0eS5qczogQWRkZWQuCisg
ICAgICAgIChzaG91bGRUaHJvdyk6CisgICAgICAgIChzaG91bGRUaHJvdy5maWIpOgorCisgICAg
ICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBidWlsdGlucy9HZW5lcmF0b3JQcm90b3R5cGUu
anM6CisgICAgICAgIChnbG9iYWxQcml2YXRlLmdlbmVyYXRvclJlc3VtZSk6CisgICAgICAgICog
Ynl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6aXNCcmFuY2gp
OgorICAgICAgICAoSlNDOjpnZXRPcGNvZGVJRCk6CisgICAgICAgIChKU0M6OmNvbXB1dGVCeXRl
Y29kZUJhc2ljQmxvY2tzSW50ZXJuYWwpOgorICAgICAgICAoSlNDOjpjb21wdXRlQnl0ZWNvZGVC
YXNpY0Jsb2Nrcyk6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmg6Cisg
ICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwOiBBZGRlZC4K
KyAgICAgICAgKEpTQzo6aXNWYWxpZFJlZ2lzdGVyRm9yTGl2ZW5lc3MpOgorICAgICAgICAoSlND
OjpnZXRMZWFkZXJPZmZzZXRGb3JCYXNpY0Jsb2NrKToKKyAgICAgICAgKEpTQzo6ZmluZEJhc2lj
QmxvY2tXaXRoTGVhZGVyT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6YmxvY2tDb250YWluc0J5dGVj
b2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6ZmluZEJhc2ljQmxvY2tGb3JCeXRlY29kZU9mZnNl
dCk6CisgICAgICAgIChKU0M6OmNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAg
ICAoSlNDOjpjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6c3Rl
cE92ZXJJbnN0cnVjdGlvbik6CisgICAgICAgIChKU0M6OmNvbXB1dGVMb2NhbExpdmVuZXNzRm9y
Qnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJs
b2NrKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb246OkJ5dGVjb2Rl
R2VuZXJhdG9yaWZpY2F0aW9uKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3JpZmlj
YXRpb246OmdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpC
eXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbjo6cnVuKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVH
ZW5lcmF0b3JpZmljYXRpb246OnJ1bkxpdmVuZXNzQW5hbHlzaXMpOgorICAgICAgICAoSlNDOjpw
ZXJmb3JtR2VuZXJhdG9yaWZpY2F0aW9uKToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUdl
bmVyYXRvcmlmaWNhdGlvbi5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmguCisgICAgICAgICogYnl0ZWNvZGUvQnl0
ZWNvZGVHcmFwaC5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuaC4KKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29k
ZUdyYXBoLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpCeXRlY29kZUdyYXBoOjpieXRlY29kZUFu
YWx5c2lzTW9kZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR3JhcGg6OmNvZGVCbG9jayk6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR3JhcGg6OmJhc2ljQmxvY2tzKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHcmFwaDo6aW5zdHJ1Y3Rpb25zKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHcmFw
aDo6UmV2ZXJzZUl0ZXJhYmxlOjpSZXZlcnNlSXRlcmFibGUpOgorICAgICAgICAoSlNDOjpCeXRl
Y29kZUdyYXBoOjpSZXZlcnNlSXRlcmFibGU6OmJlZ2luKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNv
ZGVHcmFwaDo6UmV2ZXJzZUl0ZXJhYmxlOjplbmQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdy
YXBoOjpiYXNpY0Jsb2Nrc0luUmV2ZXJzZU9yZGVyKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVH
cmFwaDxCbG9jaz46OkJ5dGVjb2RlR3JhcGgpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2Rl
SW5zZXJ0aW9uU2V0Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuaC4KKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVJbnNl
cnRpb25TZXQ6OkJ5dGVjb2RlSW5zZXJ0aW9uU2V0KToKKyAgICAgICAgKiBieXRlY29kZS9CeXRl
Y29kZUxpc3QuanNvbjoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlz
aXMuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OkJ5dGVjb2Rl
TGl2ZW5lc3NBbmFseXNpcyk6CisgICAgICAgIChKU0M6OmZpbmRCYXNpY0Jsb2NrV2l0aExlYWRl
ck9mZnNldCk6CisgICAgICAgIChKU0M6OmZpbmRCYXNpY0Jsb2NrRm9yQnl0ZWNvZGVPZmZzZXQp
OgorICAgICAgICAoSlNDOjpzdGVwT3Zlckluc3RydWN0aW9uKToKKyAgICAgICAgKEpTQzo6Y29t
cHV0ZUxvY2FsTGl2ZW5lc3NGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OmNvbXB1
dGVMb2NhbExpdmVuZXNzRm9yQmxvY2spOgorICAgICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNz
QW5hbHlzaXM6OnJ1bkxpdmVuZXNzRml4cG9pbnQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUxp
dmVuZXNzQW5hbHlzaXM6OmdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQpOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGVGdWxsTGl2ZW5lc3MpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGVLaWxscyk6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6ZHVtcFJlc3VsdHMpOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGUpOiBEZWxldGVkLgor
ICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5oOgorICAgICAgICAq
IGJ5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmg6CisgICAgICAgIChKU0M6OmNvbXB1dGVVc2VzRm9y
Qnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zm
c2V0KToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpD
b2RlQmxvY2s6OmR1bXBCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluaXNo
Q3JlYXRpb24pOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnZhbGlkYXRlKToKKyAgICAgICAg
KiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpsaXZlbmVz
c0FuYWx5c2lzKToKKyAgICAgICAgKiBieXRlY29kZS9IYW5kbGVySW5mby5oOgorICAgICAgICAq
IGJ5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5jcHA6CisgICAgICAgIChKU0M6OmdldE9wY29k
ZUlEKToKKyAgICAgICAgKEpTQzo6Z2V0SnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldCk6Cisg
ICAgICAgIChKU0M6OmNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHNJbnRlcm5hbCk6CisgICAgICAg
IChKU0M6OmNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMpOgorICAgICAgICAoSlNDOjpmaW5kSnVt
cFRhcmdldHNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgICogYnl0ZWNvZGUvUHJlY2lzZUp1
bXBUYXJnZXRzLmg6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwOgor
ICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6aGFuZGxlckZvckJ5dGVjb2RlT2Zmc2V0
KToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OmhhbmRsZXJGb3JJbmRleCk6Cisg
ICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6VW5s
aW5rZWRTdHJpbmdKdW1wVGFibGU6Om9mZnNldEZvclZhbHVlKToKKyAgICAgICAgKEpTQzo6VW5s
aW5rZWRDb2RlQmxvY2s6OmxpdmVDYWxsZWVMb2NhbHNBdFlpZWxkKToKKyAgICAgICAgKiBieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdl
bmVyYXRvcjo6Z2VuZXJhdGUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Qnl0
ZWNvZGVHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5l
d0dlbmVyYXRvckZyYW1lKToKKyAgICAgICAgKEpTQzo6cHJlcGFyZUp1bXBUYWJsZUZvclN0cmlu
Z1N3aXRjaCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0U2F2ZSk6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzdW1lKToKKyAgICAgICAgKiBi
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVH
ZW5lcmF0b3I6OmdlbmVyYXRvckZyYW1lUmVnaXN0ZXIpOgorICAgICAgICAqIGRmZy9ERkdBYnN0
cmFjdEhlYXAuaDoKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMu
aDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVU
eXBlPjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6Om5ld0dlbmVyYXRvckxvY2Fs
RGF0YSk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgor
ICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUNvZGVCbG9jayk6CisgICAg
ICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Y2FwYWJp
bGl0eUxldmVsKToKKyAgICAgICAgKiBkZmcvREZHQ2xvYmJlcml6ZS5oOgorICAgICAgICAoSlND
OjpERkc6OmNsb2JiZXJpemUpOgorICAgICAgICAqIGRmZy9ERkdDbG9iYmVyc0V4aXRTdGF0ZS5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6Y2xvYmJlcnNFeGl0U3RhdGUpOgorICAgICAgICAqIGRm
Zy9ERkdEb2VzR0MuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmRvZXNHQyk6CisgICAgICAgICog
ZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZp
eHVwTm9kZSk6CisgICAgICAgICogZGZnL0RGR0dlbmVyYXRvckxvY2FsRGF0YS5oOiBDb3BpZWQg
ZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmgu
CisgICAgICAgIChKU0M6OkRGRzo6R2VuZXJhdG9yTG9jYWxEYXRhOjpwcmVkaWN0KToKKyAgICAg
ICAgKEpTQzo6REZHOjpHZW5lcmF0b3JMb2NhbERhdGE6OnByZWRpY3Rpb24pOgorICAgICAgICAq
IGRmZy9ERkdHcmFwaC5oOgorICAgICAgICAqIGRmZy9ERkdNYXlFeGl0LmNwcDoKKyAgICAgICAg
KiBkZmcvREZHTm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc0dlbmVyYXRvckxv
Y2Fsc1NpemUpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmdlbmVyYXRvckxvY2Fsc1NpemUp
OgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc0dlbmVyYXRvckxvY2FsSW5kZXgpOgorICAg
ICAgICAoSlNDOjpERkc6Ok5vZGU6OmdlbmVyYXRvckxvY2FsSW5kZXgpOgorICAgICAgICAoSlND
OjpERkc6Ok5vZGU6Omhhc0dlbmVyYXRvckxvY2FsRGF0YSk6CisgICAgICAgIChKU0M6OkRGRzo6
Tm9kZTo6Z2VuZXJhdG9yTG9jYWxEYXRhKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNH
ZW5lcmF0b3JGcmFtZUxvY2Fscyk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6Z2VuZXJhdG9y
RnJhbWVMb2NhbHMpOgorICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAqIGRm
Zy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5oOgorICAg
ICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgICog
ZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRl
KToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3R2VuZXJhdG9yRnJhbWUpOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUmVzaXplR2VuZXJhdG9yTG9jYWxzKToK
KyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKiBkZmcvREZHU3Bl
Y3VsYXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RG
R1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHU3RydWN0
dXJlUmVnaXN0cmF0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlN0cnVjdHVyZVJl
Z2lzdHJhdGlvblBoYXNlOjpydW4pOgorICAgICAgICAqIGZ0bC9GVExBYnN0cmFjdEhlYXBSZXBv
c2l0b3J5LmNwcDoKKyAgICAgICAgKiBmdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oOgor
ICAgICAgICAqIGZ0bC9GVExDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmNh
bkNvbXBpbGUpOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAg
ICAgKEpTQzo6ZmluZEV4Y2VwdGlvbkhhbmRsZXIpOgorICAgICAgICAoSlNDOjpHZXRDYXRjaEhh
bmRsZXJGdW5jdG9yOjpvcGVyYXRvcigpKToKKyAgICAgICAgKEpTQzo6VW53aW5kRnVuY3Rvcjo6
b3BlcmF0b3IoKSk6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6
cHJpdmF0ZUNvbXBpbGVNYWluUGFzcyk6CisgICAgICAgICogaml0L0pJVC5oOgorICAgICAgICAq
IGppdC9KSVRPcGNvZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3NhdmUpOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcmVzdW1lKToKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0X29wX25ld19nZW5lcmF0b3JfZnJhbWUpOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzMzJf
NjQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bfc2F2ZSk6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdF9vcF9yZXN1bWUpOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5j
cHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFdyaXRlQmFycmllcik6CisgICAgICAgICogbGxp
bnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcDoKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbElu
dGVycHJldGVyLmFzbToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmNwcDoKKyAgICAgICAgKEpT
Qzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlSW5uZXIpOgorICAgICAgICAoSlNDOjpQYXJzZXI8
TGV4ZXJUeXBlPjo6cGFyc2VHZW5lcmF0b3JGdW5jdGlvblNvdXJjZUVsZW1lbnRzKToKKyAgICAg
ICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OmNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMpOgor
ICAgICAgICAqIHBhcnNlci9QYXJzZXIuaDoKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQ
YXRocy5jcHA6CisgICAgICAgIChKU0M6OlNMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKiBydW50
aW1lL0NvbW1vblNsb3dQYXRocy5oOgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJhdG9yRnJhbWUu
Y3BwOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6R2VuZXJhdG9yRnJhbWUpOgorICAg
ICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlND
OjpHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6R2VuZXJh
dG9yRnJhbWU6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpzYXZlKToK
KyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OnJlc3VtZSk6CisgICAgICAgIChKU0M6Okdl
bmVyYXRvckZyYW1lOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL0dlbmVyYXRv
ckZyYW1lLmg6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpsb2NhbE9mZnNldCk6Cisg
ICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpudW1iZXJPZkNhbGxlZUxvY2Fsc09mZnNldCk6
CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpudW1iZXJPZlNhdmVkQ2FsbGVlTG9jYWxz
T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OmxvY2FsQXQpOiBEZWxldGVk
LgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpK
U0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5o
OgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6Z2VuZXJhdG9yRnJhbWVTdHJ1Y3R1cmUp
OgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6Vk0pOiBEZWxl
dGVkLgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvZ2Vu
ZXJhdG9yLWZpYi1mdGwtYW5kLWFycmF5LmpzOiBBZGRlZC4KKyAgICAgICAgKGZpYik6CisgICAg
ICAgICogdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLWFuZC1vYmplY3QuanM6IEFkZGVk
LgorICAgICAgICAoZmliKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1m
dGwtYW5kLXN0cmluZy5qczogQWRkZWQuCisgICAgICAgIChmaWIpOgorICAgICAgICAqIHRlc3Rz
L3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC5qczogQWRkZWQuCisgICAgICAgIChmaWIpOgorICAg
ICAgICAqIHRlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZnJhbWUtZW1wdHkuanM6IEFkZGVkLgorICAg
ICAgICAoc2hvdWxkVGhyb3cpOgorICAgICAgICAoc2hvdWxkVGhyb3cuZmliKToKKworICAgICAg
ICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogYnVpbHRpbnMvR2VuZXJhdG9yUHJvdG90eXBlLmpz
OgorICAgICAgICAoZ2xvYmFsUHJpdmF0ZS5nZW5lcmF0b3JSZXN1bWUpOgorICAgICAgICAqIGJ5
dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5jcHA6CisgICAgICAgIChKU0M6OmlzQnJhbmNoKToK
KyAgICAgICAgKEpTQzo6Z2V0T3Bjb2RlSUQpOgorICAgICAgICAoSlNDOjpjb21wdXRlQnl0ZWNv
ZGVCYXNpY0Jsb2Nrc0ludGVybmFsKToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZUJ5dGVjb2RlQmFz
aWNCbG9ja3MpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5oOgorICAg
ICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcDogQWRkZWQuCisg
ICAgICAgIChKU0M6OmlzVmFsaWRSZWdpc3RlckZvckxpdmVuZXNzKToKKyAgICAgICAgKEpTQzo6
Z2V0TGVhZGVyT2Zmc2V0Rm9yQmFzaWNCbG9jayk6CisgICAgICAgIChKU0M6OmZpbmRCYXNpY0Js
b2NrV2l0aExlYWRlck9mZnNldCk6CisgICAgICAgIChKU0M6OmJsb2NrQ29udGFpbnNCeXRlY29k
ZU9mZnNldCk6CisgICAgICAgIChKU0M6OmZpbmRCYXNpY0Jsb2NrRm9yQnl0ZWNvZGVPZmZzZXQp
OgorICAgICAgICAoSlNDOjpjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAg
KEpTQzo6Y29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OnN0ZXBP
dmVySW5zdHJ1Y3Rpb24pOgorICAgICAgICAoSlNDOjpjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJ5
dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCbG9j
ayk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uOjpCeXRlY29kZUdl
bmVyYXRvcmlmaWNhdGlvbik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0
aW9uOjpnZXRMaXZlbmVzc0luZm9BdEJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVHZW5lcmF0b3JpZmljYXRpb246OnN0b3JhZ2VGb3JHZW5lcmF0b3JMb2NhbCk6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uOjpydW4pOgorICAgICAgICAoSlND
OjpCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbjo6cnVuTGl2ZW5lc3NBbmFseXNpcyk6CisgICAg
ICAgIChKU0M6OnBlcmZvcm1HZW5lcmF0b3JpZmljYXRpb24pOgorICAgICAgICAqIGJ5dGVjb2Rl
L0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmg6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuaC4KKyAgICAgICAgKiBi
eXRlY29kZS9CeXRlY29kZUdyYXBoLmNwcDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5oLgorICAgICAgICAqIGJ5dGVj
b2RlL0J5dGVjb2RlR3JhcGguaDogQWRkZWQuCisgICAgICAgIChKU0M6OkJ5dGVjb2RlR3JhcGg6
OmJ5dGVjb2RlQW5hbHlzaXNNb2RlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHcmFwaDo6Y29k
ZUJsb2NrKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHcmFwaDo6YmFzaWNCbG9ja3MpOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUdyYXBoOjppbnN0cnVjdGlvbnMpOgorICAgICAgICAoSlNDOjpC
eXRlY29kZUdyYXBoOjpSZXZlcnNlSXRlcmFibGU6OlJldmVyc2VJdGVyYWJsZSk6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlR3JhcGg6OlJldmVyc2VJdGVyYWJsZTo6YmVnaW4pOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUdyYXBoOjpSZXZlcnNlSXRlcmFibGU6OmVuZCk6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlR3JhcGg6OmJhc2ljQmxvY2tzSW5SZXZlcnNlT3JkZXIpOgorICAgICAgICAoSlND
OjpCeXRlY29kZUdyYXBoPEJsb2NrPjo6Qnl0ZWNvZGVHcmFwaCk6CisgICAgICAgICogYnl0ZWNv
ZGUvQnl0ZWNvZGVJbnNlcnRpb25TZXQuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmguCisgICAgICAgIChKU0M6
OkJ5dGVjb2RlSW5zZXJ0aW9uU2V0OjpleGVjdXRlKToKKyAgICAgICAgKiBieXRlY29kZS9CeXRl
Y29kZUluc2VydGlvblNldC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmguCisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
SW5zZXJ0aW9uU2V0OjpCeXRlY29kZUluc2VydGlvblNldCk6CisgICAgICAgIChKU0M6OkJ5dGVj
b2RlSW5zZXJ0aW9uU2V0OjppbnNlcnQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUluc2VydGlv
blNldDo6cmVtb3ZlKToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbjoKKyAg
ICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcyk6
CisgICAgICAgIChKU0M6OmZpbmRCYXNpY0Jsb2NrV2l0aExlYWRlck9mZnNldCk6CisgICAgICAg
IChKU0M6OmZpbmRCYXNpY0Jsb2NrRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpz
dGVwT3Zlckluc3RydWN0aW9uKToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZUxvY2FsTGl2ZW5lc3NG
b3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OmNvbXB1dGVMb2NhbExpdmVuZXNzRm9y
QmxvY2spOgorICAgICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OnJ1bkxpdmVu
ZXNzRml4cG9pbnQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6Omdl
dExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUxp
dmVuZXNzQW5hbHlzaXM6OmNvbXB1dGVGdWxsTGl2ZW5lc3MpOgorICAgICAgICAoSlNDOjpCeXRl
Y29kZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGVLaWxscyk6CisgICAgICAgIChKU0M6OkJ5dGVj
b2RlTGl2ZW5lc3NBbmFseXNpczo6ZHVtcFJlc3VsdHMpOgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGUpOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2Rl
L0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5oOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2Rl
VXNlRGVmLmg6CisgICAgICAgIChKU0M6OmNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQpOgor
ICAgICAgICAoSlNDOjpjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKiBi
eXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmR1bXBCeXRl
Y29kZSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAg
ICAoSlNDOjpDb2RlQmxvY2s6OnZhbGlkYXRlKToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxv
Y2suaDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpsaXZlbmVzc0FuYWx5c2lzKToKKyAgICAg
ICAgKiBieXRlY29kZS9IYW5kbGVySW5mby5oOgorICAgICAgICAqIGJ5dGVjb2RlL1ByZWNpc2VK
dW1wVGFyZ2V0cy5jcHA6CisgICAgICAgIChKU0M6OmdldE9wY29kZUlEKToKKyAgICAgICAgKEpT
Qzo6Z2V0SnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OmNvbXB1
dGVQcmVjaXNlSnVtcFRhcmdldHNJbnRlcm5hbCk6CisgICAgICAgIChKU0M6OmNvbXB1dGVQcmVj
aXNlSnVtcFRhcmdldHMpOgorICAgICAgICAoSlNDOjpmaW5kSnVtcFRhcmdldHNGb3JCeXRlY29k
ZU9mZnNldCk6CisgICAgICAgICogYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmg6CisgICAg
ICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpVbmxp
bmtlZENvZGVCbG9jazo6aGFuZGxlckZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6
VW5saW5rZWRDb2RlQmxvY2s6OmhhbmRsZXJGb3JJbmRleCk6CisgICAgICAgICogYnl0ZWNvZGUv
VW5saW5rZWRDb2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRTdHJpbmdKdW1wVGFi
bGU6Om9mZnNldEZvclZhbHVlKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6Omxp
dmVDYWxsZWVMb2NhbHNBdFlpZWxkKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVH
ZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUp
OgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0dlbmVyYXRvckZyYW1lKToK
KyAgICAgICAgKEpTQzo6cHJlcGFyZUp1bXBUYWJsZUZvclN0cmluZ1N3aXRjaCk6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0U2F2ZSk6CisgICAgICAgIChKU0M6OkJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0UmVzdW1lKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRv
ckZyYW1lUmVnaXN0ZXIpOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEhlYXAuaDoKKyAgICAg
ICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6
REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVj
dHMpOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6Om5ld0dlbmVyYXRvckxvY2FsRGF0YSk6CisgICAgICAgIChK
U0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAoSlNDOjpERkc6
OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUNvZGVCbG9jayk6CisgICAgICAgICogZGZnL0RGR0NhcGFi
aWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Y2FwYWJpbGl0eUxldmVsKToKKyAgICAg
ICAgKiBkZmcvREZHQ2xvYmJlcml6ZS5oOgorICAgICAgICAoSlNDOjpERkc6OmNsb2JiZXJpemUp
OgorICAgICAgICAqIGRmZy9ERkdDbG9iYmVyc0V4aXRTdGF0ZS5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6Y2xvYmJlcnNFeGl0U3RhdGUpOgorICAgICAgICAqIGRmZy9ERkdEb2VzR0MuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OmRvZXNHQyk6CisgICAgICAgICogZGZnL0RGR0ZpeHVwUGhhc2Uu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwTm9kZSk6CisgICAgICAg
ICogZGZnL0RGR0dlbmVyYXRvckxvY2FsRGF0YS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmguCisgICAgICAgIChKU0M6OkRG
Rzo6R2VuZXJhdG9yTG9jYWxEYXRhOjpwcmVkaWN0KToKKyAgICAgICAgKEpTQzo6REZHOjpHZW5l
cmF0b3JMb2NhbERhdGE6OnByZWRpY3Rpb24pOgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5oOgor
ICAgICAgICAqIGRmZy9ERkdNYXlFeGl0LmNwcDoKKyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgor
ICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc0dlbmVyYXRvckxvY2Fsc1NpemUpOgorICAgICAg
ICAoSlNDOjpERkc6Ok5vZGU6OmdlbmVyYXRvckxvY2Fsc1NpemUpOgorICAgICAgICAoSlNDOjpE
Rkc6Ok5vZGU6Omhhc0dlbmVyYXRvckxvY2FsSW5kZXgpOgorICAgICAgICAoSlNDOjpERkc6Ok5v
ZGU6OmdlbmVyYXRvckxvY2FsSW5kZXgpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc0dl
bmVyYXRvckxvY2FsRGF0YSk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6Z2VuZXJhdG9yTG9j
YWxEYXRhKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNHZW5lcmF0b3JGcmFtZUxvY2Fs
cyk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6Z2VuZXJhdG9yRnJhbWVMb2NhbHMpOgorICAg
ICAgICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNw
cDoKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGRmZy9ERkdQcmVk
aWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1
dGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAgKiBkZmcv
REZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
Ojpjb21waWxlTmV3R2VuZXJhdG9yRnJhbWUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjpjb21waWxlUmVzaXplR2VuZXJhdG9yTG9jYWxzKToKKyAgICAgICAgKiBkZmcvREZH
U3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAg
ICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1N0b3JlQmFycmllckluc2Vy
dGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHU3RydWN0dXJlUmVnaXN0cmF0aW9uUGhh
c2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlN0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlOjpy
dW4pOgorICAgICAgICAqIGZ0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcDoKKyAgICAg
ICAgKiBmdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oOgorICAgICAgICAqIGZ0bC9GVExD
YXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmNhbkNvbXBpbGUpOgorICAgICAg
ICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpTQzo6ZmluZEV4Y2Vw
dGlvbkhhbmRsZXIpOgorICAgICAgICAoSlNDOjpHZXRDYXRjaEhhbmRsZXJGdW5jdG9yOjpvcGVy
YXRvcigpKToKKyAgICAgICAgKEpTQzo6VW53aW5kRnVuY3Rvcjo6b3BlcmF0b3IoKSk6CisgICAg
ICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVNYWlu
UGFzcyk6CisgICAgICAgICogaml0L0pJVC5oOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNw
cDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3NhdmUpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRfb3BfcmVzdW1lKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX25ld19nZW5lcmF0
b3JfZnJhbWUpOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzMzJfNjQuY3BwOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRfb3Bfc2F2ZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9yZXN1
bWUpOgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdFdyaXRlQmFycmllcik6CisgICAgICAgICogbGxpbnQvTExJbnRPZmZzZXRzRXh0
cmFjdG9yLmNwcDoKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbToKKyAg
ICAgICAgKiBwYXJzZXIvUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlw
ZT46OnBhcnNlSW5uZXIpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VH
ZW5lcmF0b3JGdW5jdGlvblNvdXJjZUVsZW1lbnRzKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExl
eGVyVHlwZT46OmNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMpOgorICAgICAgICAqIHBhcnNlci9Q
YXJzZXIuaDoKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHA6CisgICAgICAg
IChKU0M6OlNMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRo
cy5oOgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJhdG9yRnJhbWUuY3BwOgorICAgICAgICAoSlND
OjpHZW5lcmF0b3JGcmFtZTo6R2VuZXJhdG9yRnJhbWUpOgorICAgICAgICAoSlNDOjpHZW5lcmF0
b3JGcmFtZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6
Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OmNyZWF0ZSk6
CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpzYXZlKToKKyAgICAgICAgKEpTQzo6R2Vu
ZXJhdG9yRnJhbWU6OnJlc3VtZSk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjp2aXNp
dENoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL0dlbmVyYXRvckZyYW1lLmg6CisgICAgICAg
IChKU0M6OkdlbmVyYXRvckZyYW1lOjpsb2NhbE9mZnNldCk6CisgICAgICAgIChKU0M6OkdlbmVy
YXRvckZyYW1lOjpudW1iZXJPZkNhbGxlZUxvY2Fsc09mZnNldCk6CisgICAgICAgIChKU0M6Okdl
bmVyYXRvckZyYW1lOjpudW1iZXJPZlNhdmVkQ2FsbGVlTG9jYWxzT2Zmc2V0KToKKyAgICAgICAg
KEpTQzo6R2VuZXJhdG9yRnJhbWU6OmxvY2FsQXQpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRp
bWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5p
dCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDOjpK
U0dsb2JhbE9iamVjdDo6Z2VuZXJhdG9yRnJhbWVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRp
bWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6Vk0pOiBEZWxldGVkLgorICAgICAgICAqIHJ1
bnRpbWUvVk0uaDoKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwtYW5k
LWFycmF5LmpzOiBBZGRlZC4KKyAgICAgICAgKGZpYik6CisgICAgICAgICogdGVzdHMvc3RyZXNz
L2dlbmVyYXRvci1maWItZnRsLWFuZC1vYmplY3QuanM6IEFkZGVkLgorICAgICAgICAoZmliKToK
KyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwtYW5kLXN0cmluZy5qczog
QWRkZWQuCisgICAgICAgIChmaWIpOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9nZW5lcmF0b3It
ZmliLWZ0bC5qczogQWRkZWQuCisgICAgICAgIChmaWIpOgorICAgICAgICAqIHRlc3RzL3N0cmVz
cy9nZW5lcmF0b3ItZnJhbWUtZW1wdHkuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkVGhyb3cp
OgorICAgICAgICAoc2hvdWxkVGhyb3cuZmliKToKKwogMjAxNi0wNy0wMyAgUGVyIEFybmUgVm9s
bGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW1dpbl0gRExMcyBhcmUgbWlzc2lu
ZyB2ZXJzaW9uIGluZm9ybWF0aW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NNYWtlTGlzdHMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0Cmlu
ZGV4IDc2ZjY4YmVmMmY5NzY2ZWUzY2ZiMjU5ZjcyYTJiOTdjZjQyZDk2YmMuLjk0MjI5MTQyZTA4
Y2MzNTIyYWNhNmU0ZGQ4ZDVlZmVhMDU2NjVkODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VM
aXN0cy50eHQKQEAgLTE3OCw2ICsxNzgsOSBAQCBzZXQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwog
ICAgIGJ5dGVjb2RlL0FycmF5QWxsb2NhdGlvblByb2ZpbGUuY3BwCiAgICAgYnl0ZWNvZGUvQXJy
YXlQcm9maWxlLmNwcAogICAgIGJ5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5jcHAKKyAgICBi
eXRlY29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHAKKyAgICBieXRlY29kZS9CeXRl
Y29kZUdyYXBoLmNwcAorICAgIGJ5dGVjb2RlL0J5dGVjb2RlSW5zZXJ0aW9uU2V0LmNwcAogICAg
IGJ5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuY3BwCiAgICAgYnl0ZWNvZGUvQnl0
ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNwcAogICAgIGJ5dGVjb2RlL0NhbGxFZGdlLmNwcApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAyZDJiYzM0MDkzMmQxOGI2YTZkNjcxYzA1NWRh
Njk3ZmRhNWNhNGU0Li4zN2U2NjFiODc4NjNhZTYzNjZmMGM2NDU5ODNiZjAyY2Y1Zjc5NmE2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNjI1Myw2ICs2MjUzLDcgQEAKIAkJCQkw
RjY5Q0M4NjE5M0FDNjBBMDA0NTc1OUUgLyogREZHRnJvemVuVmFsdWUuY3BwICovLAogCQkJCTBG
NjlDQzg3MTkzQUM2MEEwMDQ1NzU5RSAvKiBERkdGcm96ZW5WYWx1ZS5oICovLAogCQkJCTg2RUM5
REI2MTMyOERGODIwMDJCMkFENyAvKiBERkdHZW5lcmF0aW9uSW5mby5oICovLAorCQkJCTcwNzkx
NDFDMUM0QUE4MDcwMEI4MkZGNyAvKiBERkdHZW5lcmF0b3JMb2NhbERhdGEuaCAqLywKIAkJCQk4
NkVDOURCNzEzMjhERjgyMDAyQjJBRDcgLyogREZHR3JhcGguY3BwICovLAogCQkJCTg2RUM5REI4
MTMyOERGODIwMDJCMkFENyAvKiBERkdHcmFwaC5oICovLAogCQkJCTBGMkZDQ0YyMThBNjAwNzAw
MDFBMjdGOCAvKiBERkdHcmFwaFNhZmVwb2ludC5jcHAgKi8sCkBAIC04MDEyLDYgKzgwMTMsNyBA
QAogCQkJCTBGRTA1MDI5MUFBOTA5NTYwMEQzM0IzMyAvKiBTY29wZWRBcmd1bWVudHNUYWJsZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFMDUwMkIxQUE5MDk1NjAwRDMzQjMzIC8qIFNjb3BlT2Zm
c2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjI0RTU1MjE3RUUyNzQ5MDBBQkIyMTcgLyogU2Ny
YXRjaFJlZ2lzdGVyQWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQk3MDc5MTQxRDFDNEFB
ODYwMDBCODJGRjcgLyogREZHR2VuZXJhdG9yTG9jYWxEYXRhLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBNUZEMDA2ODE4OUFGRTlDMDA2MzMyMzEgLyogU2NyaXB0QXJndW1lbnRzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBNTAzRkEyMTE4OEVGRjY4MDAxMTBGMTQgLyogU2NyaXB0QnJlYWtwb2ludC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQTVGRDAwNkUxODlCMDBBQTAwNjMzMjMxIC8qIFNjcmlwdENh
bGxGcmFtZS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnVpbHRpbnMvR2VuZXJhdG9yUHJvdG90eXBlLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J1aWx0aW5zL0dlbmVyYXRvclByb3RvdHlwZS5qcwppbmRleCAzYzE0MDY4N2RmYzdlMDBlZmU5
MWFlODBiMmFjNjc2ZmE5YmY0OGY0Li40OTlkYmQzOTJlODMxM2RjZGQ4NmVjOGMxNjA1NjlkN2Q2
ZjU0OWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvR2VuZXJh
dG9yUHJvdG90eXBlLmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9HZW5l
cmF0b3JQcm90b3R5cGUuanMKQEAgLTUxLDcgKzUxLDcgQEAgZnVuY3Rpb24gZ2VuZXJhdG9yUmVz
dW1lKGdlbmVyYXRvciwgc2VudFZhbHVlLCByZXN1bWVNb2RlKQogICAgIH0gZWxzZSB7CiAgICAg
ICAgIHRyeSB7CiAgICAgICAgICAgICBnZW5lcmF0b3IuQGdlbmVyYXRvclN0YXRlID0gQEdlbmVy
YXRvclN0YXRlRXhlY3V0aW5nOwotICAgICAgICAgICAgdmFsdWUgPSBnZW5lcmF0b3IuQGdlbmVy
YXRvck5leHQuQGNhbGwoZ2VuZXJhdG9yLkBnZW5lcmF0b3JUaGlzLCBnZW5lcmF0b3IsIHN0YXRl
LCBzZW50VmFsdWUsIHJlc3VtZU1vZGUpOworICAgICAgICAgICAgdmFsdWUgPSBnZW5lcmF0b3Iu
QGdlbmVyYXRvck5leHQuQGNhbGwoZ2VuZXJhdG9yLkBnZW5lcmF0b3JUaGlzLCBnZW5lcmF0b3Is
IHN0YXRlLCBzZW50VmFsdWUsIHJlc3VtZU1vZGUsIGdlbmVyYXRvci5AZ2VuZXJhdG9yRnJhbWUp
OwogICAgICAgICAgICAgaWYgKGdlbmVyYXRvci5AZ2VuZXJhdG9yU3RhdGUgPT09IEBHZW5lcmF0
b3JTdGF0ZUV4ZWN1dGluZykgewogICAgICAgICAgICAgICAgIGdlbmVyYXRvci5AZ2VuZXJhdG9y
U3RhdGUgPSBAR2VuZXJhdG9yU3RhdGVDb21wbGV0ZWQ7CiAgICAgICAgICAgICAgICAgZG9uZSA9
IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVCYXNpY0Jsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZUJhc2ljQmxvY2suY3BwCmluZGV4IDdmMTdjMGVmMTBiNDMzZmFjOGY1OGNiM2I5Y2E1ZDRkMDE1
YmJhMDguLjJkNWFmYWNhMzBhMTA5YzliMTFjYjFmMTMwYzU4MTRkNmU1MWZlZDggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2su
Y3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAi
SlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIlByZWNpc2VKdW1wVGFyZ2V0cy5oIgorI2luY2x1ZGUg
IlVubGlua2VkSW5zdHJ1Y3Rpb25TdHJlYW0uaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTM4
LDcgKzM5LDcgQEAgdm9pZCBCeXRlY29kZUJhc2ljQmxvY2s6OnNocmlua1RvRml0KCkKICAgICBt
X3N1Y2Nlc3NvcnMuc2hyaW5rVG9GaXQoKTsKIH0KIAotc3RhdGljIGJvb2wgaXNCcmFuY2goT3Bj
b2RlSUQgb3Bjb2RlSUQpCitzdGF0aWMgYm9vbCBpc0JyYW5jaChPcGNvZGVJRCBvcGNvZGVJRCwg
Qnl0ZWNvZGVBbmFseXNpc01vZGUgYnl0ZWNvZGVBbmFseXNpc01vZGUpCiB7CiAgICAgc3dpdGNo
IChvcGNvZGVJRCkgewogICAgIGNhc2Ugb3Bfam1wOgpAQCAtNTgsOCArNTksMTEgQEAgc3RhdGlj
IGJvb2wgaXNCcmFuY2goT3Bjb2RlSUQgb3Bjb2RlSUQpCiAgICAgY2FzZSBvcF9zd2l0Y2hfaW1t
OgogICAgIGNhc2Ugb3Bfc3dpdGNoX2NoYXI6CiAgICAgY2FzZSBvcF9zd2l0Y2hfc3RyaW5nOgot
ICAgIGNhc2Ugb3Bfc2F2ZToKICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBjYXNlIG9wX3Nh
dmU6CisgICAgICAgIHJldHVybiBieXRlY29kZUFuYWx5c2lzTW9kZSA9PSBCeXRlY29kZUFuYWx5
c2lzTW9kZTo6RXh0cmFjdEdlbmVyYXRvckxpdmVDYWxsZWVMb2NhbHM7CisKICAgICBkZWZhdWx0
OgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpAQCAtMTEwLDEwICsxMTQsMjEgQEAgc3Rh
dGljIHZvaWQgbGlua0Jsb2NrcyhCeXRlY29kZUJhc2ljQmxvY2sqIHByZWRlY2Vzc29yLCBCeXRl
Y29kZUJhc2ljQmxvY2sqIHN1Y2MKICAgICBwcmVkZWNlc3Nvci0+YWRkU3VjY2Vzc29yKHN1Y2Nl
c3Nvcik7CiB9CiAKLXZvaWQgY29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MoQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mIGJh
c2ljQmxvY2tzKQorc3RhdGljIE9wY29kZUlEIGdldE9wY29kZUlEKEludGVycHJldGVyKiBpbnRl
cnByZXRlciwgY29uc3QgSW5zdHJ1Y3Rpb24mIGluc3RydWN0aW9uKQoreworICAgIHJldHVybiBp
bnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb24udS5vcGNvZGUpOworfQorCitzdGF0
aWMgT3Bjb2RlSUQgZ2V0T3Bjb2RlSUQoSW50ZXJwcmV0ZXIqLCBjb25zdCBVbmxpbmtlZEluc3Ry
dWN0aW9uJiBpbnN0cnVjdGlvbikKK3sKKyAgICByZXR1cm4gaW5zdHJ1Y3Rpb24udS5vcGNvZGU7
Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIEJsb2NrLCB0eXBlbmFtZSBJbnN0cnVjdGlvbj4KK3N0
YXRpYyB2b2lkIGNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzSW50ZXJuYWwoQmxvY2sqIGNvZGVC
bG9jaywgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBpbnN0cnVjdGlv
bkNvdW50LCBCeXRlY29kZUFuYWx5c2lzTW9kZSBieXRlY29kZUFuYWx5c2lzTW9kZSwgVmVjdG9y
PHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9ja3MpCiB7CiAg
ICAgVmVjdG9yPHVuc2lnbmVkLCAzMj4ganVtcFRhcmdldHM7Ci0gICAgY29tcHV0ZVByZWNpc2VK
dW1wVGFyZ2V0cyhjb2RlQmxvY2ssIGp1bXBUYXJnZXRzKTsKKyAgICBjb21wdXRlUHJlY2lzZUp1
bXBUYXJnZXRzKGNvZGVCbG9jaywgYnl0ZWNvZGVBbmFseXNpc01vZGUsIGluc3RydWN0aW9uc0Jl
Z2luLCBpbnN0cnVjdGlvbkNvdW50LCBqdW1wVGFyZ2V0cyk7CiAKICAgICAvLyBDcmVhdGUgdGhl
IGVudHJ5IGFuZCBleGl0IGJhc2ljIGJsb2Nrcy4KICAgICBiYXNpY0Jsb2Nrcy5yZXNlcnZlQ2Fw
YWNpdHkoanVtcFRhcmdldHMuc2l6ZSgpICsgMik7CkBAIC0xMzEsMTAgKzE0Niw4IEBAIHZvaWQg
Y29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFZlY3Rvcjxz
dGQ6OnVuaXF1ZV9wdHI8Qnl0CiAgICAgYm9vbCBuZXh0SW5zdHJ1Y3Rpb25Jc0xlYWRlciA9IGZh
bHNlOwogCiAgICAgSW50ZXJwcmV0ZXIqIGludGVycHJldGVyID0gY29kZUJsb2NrLT52bSgpLT5p
bnRlcnByZXRlcjsKLSAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4gPSBjb2RlQmxv
Y2stPmluc3RydWN0aW9ucygpLmJlZ2luKCk7Ci0gICAgdW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3Vu
dCA9IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpOwogICAgIGZvciAodW5zaWduZWQg
Ynl0ZWNvZGVPZmZzZXQgPSAwOyBieXRlY29kZU9mZnNldCA8IGluc3RydWN0aW9uQ291bnQ7KSB7
Ci0gICAgICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGlu
c3RydWN0aW9uc0JlZ2luW2J5dGVjb2RlT2Zmc2V0XS51Lm9wY29kZSk7CisgICAgICAgIE9wY29k
ZUlEIG9wY29kZUlEID0gZ2V0T3Bjb2RlSUQoaW50ZXJwcmV0ZXIsIGluc3RydWN0aW9uc0JlZ2lu
W2J5dGVjb2RlT2Zmc2V0XSk7CiAgICAgICAgIHVuc2lnbmVkIG9wY29kZUxlbmd0aCA9IG9wY29k
ZUxlbmd0aHNbb3Bjb2RlSURdOwogCiAgICAgICAgIGJvb2wgY3JlYXRlZEJsb2NrID0gZmFsc2U7
CkBAIC0xNDksNyArMTYyLDcgQEAgdm9pZCBjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2NrcyhDb2Rl
QmxvY2sqIGNvZGVCbG9jaywgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXQKICAgICAgICAgfQog
CiAgICAgICAgIC8vIElmIHRoZSBjdXJyZW50IGJ5dGVjb2RlIGlzIGEgYnJhbmNoIG9yIGEgcmV0
dXJuLCB0aGVuIHRoZSBuZXh0IGluc3RydWN0aW9uIGlzIHRoZSBsZWFkZXIgb2YgaXRzIG93biBi
YXNpYyBibG9jay4KLSAgICAgICAgaWYgKGlzQnJhbmNoKG9wY29kZUlEKSB8fCBpc1Rlcm1pbmFs
KG9wY29kZUlEKSB8fCBpc1Rocm93KG9wY29kZUlEKSkKKyAgICAgICAgaWYgKGlzQnJhbmNoKG9w
Y29kZUlELCBieXRlY29kZUFuYWx5c2lzTW9kZSkgfHwgaXNUZXJtaW5hbChvcGNvZGVJRCkgfHwg
aXNUaHJvdyhvcGNvZGVJRCkpCiAgICAgICAgICAgICBuZXh0SW5zdHJ1Y3Rpb25Jc0xlYWRlciA9
IHRydWU7CiAKICAgICAgICAgaWYgKGNyZWF0ZWRCbG9jaykKQEAgLTE2OSw4ICsxODIsNyBAQCB2
b2lkIGNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzKENvZGVCbG9jayogY29kZUJsb2NrLCBWZWN0
b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dAogCiAgICAgICAgIGJvb2wgZmFsbHNUaHJvdWdoID0gdHJ1
ZTsgCiAgICAgICAgIGZvciAodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQgPSBibG9jay0+bGVhZGVy
Qnl0ZWNvZGVPZmZzZXQoKTsgYnl0ZWNvZGVPZmZzZXQgPCBibG9jay0+bGVhZGVyQnl0ZWNvZGVP
ZmZzZXQoKSArIGJsb2NrLT50b3RhbEJ5dGVjb2RlTGVuZ3RoKCk7KSB7Ci0gICAgICAgICAgICBj
b25zdCBJbnN0cnVjdGlvbiYgY3VycmVudEluc3RydWN0aW9uID0gaW5zdHJ1Y3Rpb25zQmVnaW5b
Ynl0ZWNvZGVPZmZzZXRdOwotICAgICAgICAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnRlcnBy
ZXRlci0+Z2V0T3Bjb2RlSUQoY3VycmVudEluc3RydWN0aW9uLnUub3Bjb2RlKTsKKyAgICAgICAg
ICAgIE9wY29kZUlEIG9wY29kZUlEID0gZ2V0T3Bjb2RlSUQoaW50ZXJwcmV0ZXIsIGluc3RydWN0
aW9uc0JlZ2luW2J5dGVjb2RlT2Zmc2V0XSk7CiAgICAgICAgICAgICB1bnNpZ25lZCBvcGNvZGVM
ZW5ndGggPSBvcGNvZGVMZW5ndGhzW29wY29kZUlEXTsKICAgICAgICAgICAgIC8vIElmIHdlIGZv
dW5kIGEgdGVybWluYWwgYnl0ZWNvZGUsIGxpbmsgdG8gdGhlIGV4aXQgYmxvY2suCiAgICAgICAg
ICAgICBpZiAoaXNUZXJtaW5hbChvcGNvZGVJRCkpIHsKQEAgLTE4NSw3ICsxOTcsNyBAQCB2b2lk
IGNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzKENvZGVCbG9jayogY29kZUJsb2NrLCBWZWN0b3I8
c3RkOjp1bmlxdWVfcHRyPEJ5dAogICAgICAgICAgICAgLy8gYmxvY2sgYmVjYXVzZSB0aGUgZmlu
YWxseSBibG9jayB3aWxsIGNyZWF0ZSBpdHMgb3duIGNhdGNoLCB3aGljaCB3aWxsIGdlbmVyYXRl
IGEgSGFuZGxlckluZm8uCiAgICAgICAgICAgICBpZiAoaXNUaHJvdyhvcGNvZGVJRCkpIHsKICAg
ICAgICAgICAgICAgICBBU1NFUlQoYnl0ZWNvZGVPZmZzZXQgKyBvcGNvZGVMZW5ndGggPT0gYmxv
Y2stPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCkgKyBibG9jay0+dG90YWxCeXRlY29kZUxlbmd0aCgp
KTsKLSAgICAgICAgICAgICAgICBIYW5kbGVySW5mbyogaGFuZGxlciA9IGNvZGVCbG9jay0+aGFu
ZGxlckZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KTsKKyAgICAgICAgICAgICAgICBh
dXRvKiBoYW5kbGVyID0gY29kZUJsb2NrLT5oYW5kbGVyRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNv
ZGVPZmZzZXQpOwogICAgICAgICAgICAgICAgIGZhbGxzVGhyb3VnaCA9IGZhbHNlOwogICAgICAg
ICAgICAgICAgIGlmICghaGFuZGxlcikgewogICAgICAgICAgICAgICAgICAgICBsaW5rQmxvY2tz
KGJsb2NrLCBleGl0LmdldCgpKTsKQEAgLTIwMiwxMCArMjE0LDEwIEBAIHZvaWQgY29tcHV0ZUJ5
dGVjb2RlQmFzaWNCbG9ja3MoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFZlY3RvcjxzdGQ6OnVuaXF1
ZV9wdHI8Qnl0CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIC8vIElmIHdlIGZvdW5kIGEg
YnJhbmNoLCBsaW5rIHRvIHRoZSBibG9jayhzKSB0aGF0IHdlIGp1bXAgdG8uCi0gICAgICAgICAg
ICBpZiAoaXNCcmFuY2gob3Bjb2RlSUQpKSB7CisgICAgICAgICAgICBpZiAoaXNCcmFuY2gob3Bj
b2RlSUQsIGJ5dGVjb2RlQW5hbHlzaXNNb2RlKSkgewogICAgICAgICAgICAgICAgIEFTU0VSVChi
eXRlY29kZU9mZnNldCArIG9wY29kZUxlbmd0aCA9PSBibG9jay0+bGVhZGVyQnl0ZWNvZGVPZmZz
ZXQoKSArIGJsb2NrLT50b3RhbEJ5dGVjb2RlTGVuZ3RoKCkpOwogICAgICAgICAgICAgICAgIFZl
Y3Rvcjx1bnNpZ25lZCwgMT4gYnl0ZWNvZGVPZmZzZXRzSnVtcGVkVG87Ci0gICAgICAgICAgICAg
ICAgZmluZEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoY29kZUJsb2NrLCBieXRlY29kZU9m
ZnNldCwgYnl0ZWNvZGVPZmZzZXRzSnVtcGVkVG8pOworICAgICAgICAgICAgICAgIGZpbmRKdW1w
VGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9jaywgYnl0ZWNvZGVBbmFseXNpc01vZGUs
IGluc3RydWN0aW9uc0JlZ2luLCBieXRlY29kZU9mZnNldCwgYnl0ZWNvZGVPZmZzZXRzSnVtcGVk
VG8pOwogCiAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGJhc2ljQmxv
Y2tzLnNpemUoKTsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9j
ayogb3RoZXJCbG9jayA9IGJhc2ljQmxvY2tzW2ldLmdldCgpOwpAQCAtMjM1LDQgKzI0NywxNCBA
QCB2b2lkIGNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzKENvZGVCbG9jayogY29kZUJsb2NrLCBW
ZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dAogICAgICAgICBiYXNpY0Jsb2NrLT5zaHJpbmtUb0Zp
dCgpOwogfQogCit2b2lkIGNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzKENvZGVCbG9jayogY29k
ZUJsb2NrLCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGluc3RydWN0
aW9uQ291bnQsIEJ5dGVjb2RlQW5hbHlzaXNNb2RlIGJ5dGVjb2RlQW5hbHlzaXNNb2RlLCBWZWN0
b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+JiBiYXNpY0Jsb2NrcykKK3sK
KyAgICBjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2Nrc0ludGVybmFsKGNvZGVCbG9jaywgaW5zdHJ1
Y3Rpb25zQmVnaW4sIGluc3RydWN0aW9uQ291bnQsIGJ5dGVjb2RlQW5hbHlzaXNNb2RlLCBiYXNp
Y0Jsb2Nrcyk7Cit9CisKK3ZvaWQgY29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MoVW5saW5rZWRD
b2RlQmxvY2sqIGNvZGVCbG9jaywgVW5saW5rZWRJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVn
aW4sIHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQsIEJ5dGVjb2RlQW5hbHlzaXNNb2RlIGJ5dGVj
b2RlQW5hbHlzaXNNb2RlLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9j
az4+JiBiYXNpY0Jsb2NrcykKK3sKKyAgICBjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2Nrc0ludGVy
bmFsKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb25zQmVnaW4sIGluc3RydWN0aW9uQ291bnQsIGJ5dGVj
b2RlQW5hbHlzaXNNb2RlLCBiYXNpY0Jsb2Nrcyk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNC
bG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9j
ay5oCmluZGV4IGJkN2QzYWU5YmEzNDNlMWIwNzE3OWU5OGYxZWU4OWRhNjViYTdlMjAuLjllNmVh
Yzg2ZDUzZDNmZWNlNGFlMDJhM2FmNDMwMjhkOGVmMTMxYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmgKQEAgLTM1LDYgKzM1
LDE0IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgQ29kZUJsb2NrOworY2xhc3MgVW5saW5r
ZWRDb2RlQmxvY2s7CitjbGFzcyBJbnN0cnVjdGlvbjsKK2NsYXNzIFVubGlua2VkSW5zdHJ1Y3Rp
b247CisKK2VudW0gY2xhc3MgQnl0ZWNvZGVBbmFseXNpc01vZGUgeworICAgIFN0YW5kYXJkLAor
ICAgIEV4dHJhY3RHZW5lcmF0b3JMaXZlQ2FsbGVlTG9jYWxzCit9OwogCiBjbGFzcyBCeXRlY29k
ZUJhc2ljQmxvY2sgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtNzAsNyArNzgs
OCBAQCBjbGFzcyBCeXRlY29kZUJhc2ljQmxvY2sgewogICAgIEZhc3RCaXRWZWN0b3IgbV9vdXQ7
CiB9OwogCi12b2lkIGNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzKENvZGVCbG9jayosIFZlY3Rv
cjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mKTsKK3ZvaWQgY29tcHV0ZUJ5
dGVjb2RlQmFzaWNCbG9ja3MoQ29kZUJsb2NrKiwgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0Jl
Z2luLCB1bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50LCBCeXRlY29kZUFuYWx5c2lzTW9kZSwgVmVj
dG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYpOwordm9pZCBjb21wdXRl
Qnl0ZWNvZGVCYXNpY0Jsb2NrcyhVbmxpbmtlZENvZGVCbG9jayosIFVubGlua2VkSW5zdHJ1Y3Rp
b24qIGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50LCBCeXRlY29k
ZUFuYWx5c2lzTW9kZSwgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+
PiYpOwogCiBpbmxpbmUgQnl0ZWNvZGVCYXNpY0Jsb2NrOjpCeXRlY29kZUJhc2ljQmxvY2sodW5z
aWduZWQgc3RhcnQsIHVuc2lnbmVkIGxlbmd0aCkKICAgICA6IG1fbGVhZGVyQnl0ZWNvZGVPZmZz
ZXQoc3RhcnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMWUwNmNjMzY1
OWNkZThmNzhjODE3YmYyNGRmMTAxZThiYjU4YWMxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcApA
QCAtMCwwICsxLDQzMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBZdXN1a2UgU3V6dWtp
IDx5dXN1a2Uuc3V6dWtpQHNzbGFiLmljcy5rZWlvLmFjLmpwPgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uaCIKKwor
I2luY2x1ZGUgIklkZW50aWZpZXJJbmxpbmVzLmgiCisjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIK
KyNpbmNsdWRlICJCeXRlY29kZUluc2VydGlvblNldC5oIgorI2luY2x1ZGUgIkJ5dGVjb2RlVXNl
RGVmLmgiCisjaW5jbHVkZSAiVW5saW5rZWRDb2RlQmxvY2suaCIKKworbmFtZXNwYWNlIEpTQyB7
CisKK3N0YXRpYyBib29sIGlzVmFsaWRSZWdpc3RlckZvckxpdmVuZXNzKFVubGlua2VkQ29kZUJs
b2NrKiBjb2RlQmxvY2ssIGludCBvcGVyYW5kKQoreworICAgIGlmIChjb2RlQmxvY2stPmlzQ29u
c3RhbnRSZWdpc3RlckluZGV4KG9wZXJhbmQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
CisgICAgVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWcob3BlcmFuZCk7CisgICAgcmV0dXJuIHZp
cnR1YWxSZWcuaXNMb2NhbCgpOworfQorCitzdGF0aWMgdW5zaWduZWQgZ2V0TGVhZGVyT2Zmc2V0
Rm9yQmFzaWNCbG9jayhzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiogYmFzaWNC
bG9jaykKK3sKKyAgICByZXR1cm4gKCpiYXNpY0Jsb2NrKS0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQo
KTsKK30KKworc3RhdGljIEJ5dGVjb2RlQmFzaWNCbG9jayogZmluZEJhc2ljQmxvY2tXaXRoTGVh
ZGVyT2Zmc2V0KEJ5dGVjb2RlR3JhcGg8VW5saW5rZWRDb2RlQmxvY2s+JiBncmFwaCwgdW5zaWdu
ZWQgbGVhZGVyT2Zmc2V0KQoreworICAgIHJldHVybiAoKnRyeUJpbmFyeVNlYXJjaDxzdGQ6OnVu
aXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiwgdW5zaWduZWQ+KGdyYXBoLmJhc2ljQmxvY2tz
KCksIGdyYXBoLmJhc2ljQmxvY2tzKCkuc2l6ZSgpLCBsZWFkZXJPZmZzZXQsIGdldExlYWRlck9m
ZnNldEZvckJhc2ljQmxvY2spKS5nZXQoKTsKK30KKworc3RhdGljIGJvb2wgYmxvY2tDb250YWlu
c0J5dGVjb2RlT2Zmc2V0KEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2ssIHVuc2lnbmVkIGJ5dGVj
b2RlT2Zmc2V0KQoreworICAgIHVuc2lnbmVkIGxlYWRlck9mZnNldCA9IGJsb2NrLT5sZWFkZXJC
eXRlY29kZU9mZnNldCgpOworICAgIHJldHVybiBieXRlY29kZU9mZnNldCA+PSBsZWFkZXJPZmZz
ZXQgJiYgYnl0ZWNvZGVPZmZzZXQgPCBsZWFkZXJPZmZzZXQgKyBibG9jay0+dG90YWxCeXRlY29k
ZUxlbmd0aCgpOworfQorCitzdGF0aWMgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBmaW5kQmFzaWNCbG9j
a0ZvckJ5dGVjb2RlT2Zmc2V0KEJ5dGVjb2RlR3JhcGg8VW5saW5rZWRDb2RlQmxvY2s+JiBncmFw
aCwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpCit7CisvKgorICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBiYXNpY0Jsb2Nrcy5zaXplKCk7IGkrKykgeworICAgICAgICBpZiAoYmxvY2tDb250
YWluc0J5dGVjb2RlT2Zmc2V0KGJhc2ljQmxvY2tzW2ldLmdldCgpLCBieXRlY29kZU9mZnNldCkp
CisgICAgICAgICAgICByZXR1cm4gYmFzaWNCbG9ja3NbaV0uZ2V0KCk7CisgICAgfQorICAgIHJl
dHVybiAwOworKi8KKyAgICBCeXRlY29kZUdyYXBoPFVubGlua2VkQ29kZUJsb2NrPjo6QmFzaWNC
bG9ja3NWZWN0b3ImIGJhc2ljQmxvY2tzID0gZ3JhcGguYmFzaWNCbG9ja3MoKTsKKworICAgIHN0
ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+KiBiYXNpY0Jsb2NrID0gYXBwcm94aW1h
dGVCaW5hcnlTZWFyY2g8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4sIHVuc2ln
bmVkPigKKyAgICAgICAgYmFzaWNCbG9ja3MsIGJhc2ljQmxvY2tzLnNpemUoKSwgYnl0ZWNvZGVP
ZmZzZXQsIGdldExlYWRlck9mZnNldEZvckJhc2ljQmxvY2spOworICAgIC8vIFdlIGZvdW5kIHRo
ZSBibG9jayB3ZSB3ZXJlIGxvb2tpbmcgZm9yLgorICAgIGlmIChibG9ja0NvbnRhaW5zQnl0ZWNv
ZGVPZmZzZXQoKCpiYXNpY0Jsb2NrKS5nZXQoKSwgYnl0ZWNvZGVPZmZzZXQpKQorICAgICAgICBy
ZXR1cm4gKCpiYXNpY0Jsb2NrKS5nZXQoKTsKKworICAgIC8vIEJhc2ljIGJsb2NrIGlzIHRvIHRo
ZSBsZWZ0IG9mIHRoZSByZXR1cm5lZCBibG9jay4KKyAgICBpZiAoYnl0ZWNvZGVPZmZzZXQgPCAo
KmJhc2ljQmxvY2spLT5sZWFkZXJCeXRlY29kZU9mZnNldCgpKSB7CisgICAgICAgIEFTU0VSVChi
YXNpY0Jsb2NrIC0gMSA+PSBiYXNpY0Jsb2Nrcy5kYXRhKCkpOworICAgICAgICBBU1NFUlQoYmxv
Y2tDb250YWluc0J5dGVjb2RlT2Zmc2V0KGJhc2ljQmxvY2tbLTFdLmdldCgpLCBieXRlY29kZU9m
ZnNldCkpOworICAgICAgICByZXR1cm4gYmFzaWNCbG9ja1stMV0uZ2V0KCk7CisgICAgfQorCisg
ICAgLy8gQmFzaWMgYmxvY2sgaXMgdG8gdGhlIHJpZ2h0IG9mIHRoZSByZXR1cm5lZCBibG9jay4K
KyAgICBBU1NFUlQoJmJhc2ljQmxvY2tbMV0gPD0gJmJhc2ljQmxvY2tzLmxhc3QoKSk7CisgICAg
QVNTRVJUKGJsb2NrQ29udGFpbnNCeXRlY29kZU9mZnNldChiYXNpY0Jsb2NrWzFdLmdldCgpLCBi
eXRlY29kZU9mZnNldCkpOworICAgIHJldHVybiBiYXNpY0Jsb2NrWzFdLmdldCgpOworfQorCit0
ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgordm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zm
c2V0KFVubGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2ssIE9wY29kZUlEIG9wY29kZUlELCBVbmxp
bmtlZEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaywg
dW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCit7CisgICAg
VU5VU0VEX1BBUkFNKGJ5dGVjb2RlT2Zmc2V0KTsKKyAgICBzd2l0Y2ggKG9wY29kZUlEKSB7Cisg
ICAgY2FzZSBvcF9zYXZlOgorICAgICAgICBicmVhazsKKworICAgIGNhc2Ugb3BfcmVzdW1lOiB7
CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGJsb2NrLT5zdWNjZXNzb3JzKCkuc2l6ZSgpID09IDEp
OworICAgICAgICBibG9jay0+c3VjY2Vzc29ycygpWzBdLT5pbigpLmZvckVhY2hTZXRCaXQoWyZd
KHVuc2lnbmVkIGxvY2FsKSB7CisgICAgICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1
Y3Rpb24sIG9wY29kZUlELCB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChsb2NhbCkub2Zmc2V0KCkp
OworICAgICAgICB9KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgZGVmYXVsdDoKKyAg
ICAgICAgY29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChjb2RlQmxvY2ssIG9wY29kZUlELCBp
bnN0cnVjdGlvbiwgZnVuY3Rvcik7CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKwordGVtcGxh
dGU8dHlwZW5hbWUgRnVuY3Rvcj4KK3ZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldChV
bmxpbmtlZENvZGVCbG9jayogY29kZUJsb2NrLCBPcGNvZGVJRCBvcGNvZGVJRCwgVW5saW5rZWRJ
bnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2ssIHVuc2ln
bmVkIGJ5dGVjb2RlT2Zmc2V0LCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQoreworICAgIGlmIChv
cGNvZGVJRCAhPSBvcF9lbnRlciAmJiBjb2RlQmxvY2stPndhc0NvbXBpbGVkV2l0aERlYnVnZ2lu
Z09wY29kZXMoKSAmJiBjb2RlQmxvY2stPnNjb3BlUmVnaXN0ZXIoKS5pc1ZhbGlkKCkpCisgICAg
ICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGNvZGVCbG9jay0+
c2NvcGVSZWdpc3RlcigpLm9mZnNldCgpKTsKKworICAgIHN3aXRjaCAob3Bjb2RlSUQpIHsKKyAg
ICBjYXNlIG9wX3NhdmU6IHsKKyAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9u
LCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKTsKKyAgICAgICAgdW5zaWduZWQg
bWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0ID0gYnl0ZWNvZGVPZmZzZXQgKyBpbnN0cnVjdGlvblsz
XS51Lm9wZXJhbmQ7CisgICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogbWVyZ2VQb2ludEJsb2Nr
ID0gbnVsbHB0cjsKKyAgICAgICAgZm9yIChCeXRlY29kZUJhc2ljQmxvY2sqIHN1Y2Nlc3NvciA6
IGJsb2NrLT5zdWNjZXNzb3JzKCkpIHsKKyAgICAgICAgICAgIGlmIChzdWNjZXNzb3ItPmxlYWRl
ckJ5dGVjb2RlT2Zmc2V0KCkgPT0gbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0KSB7CisgICAgICAg
ICAgICAgICAgbWVyZ2VQb2ludEJsb2NrID0gc3VjY2Vzc29yOworICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIEFTU0VSVChtZXJnZVBvaW50
QmxvY2spOworICAgICAgICBtZXJnZVBvaW50QmxvY2stPmluKCkuZm9yRWFjaFNldEJpdChbJl0o
dW5zaWduZWQgbG9jYWwpIHsKKyAgICAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVj
dGlvbiwgb3Bjb2RlSUQsIHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGxvY2FsKS5vZmZzZXQoKSk7
CisgICAgICAgIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgY2FzZSBvcF9yZXN1
bWU6CisgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGlu
c3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CisgICAgICAgIHJldHVybjsKKworICAgIGRlZmF1bHQ6
CisgICAgICAgIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoY29kZUJsb2NrLCBvcGNvZGVJ
RCwgaW5zdHJ1Y3Rpb24sIGZ1bmN0b3IpOworICAgICAgICByZXR1cm47CisgICAgfQorfQorCisv
LyBTaW1wbGlmaWVkIGludGVyZmFjZSB0byBieXRlY29kZSB1c2UvZGVmLCB3aGljaCBkZXRlcm1p
bmVzIGRlZnMgZmlyc3QgYW5kIHRoZW4gdXNlcywgYW5kIGluY2x1ZGVzCisvLyBleGNlcHRpb24g
aGFuZGxlcnMgaW4gdGhlIHVzZXMuCit0ZW1wbGF0ZTx0eXBlbmFtZSBVc2VGdW5jdG9yLCB0eXBl
bmFtZSBEZWZGdW5jdG9yPgorc3RhdGljIHZvaWQgc3RlcE92ZXJJbnN0cnVjdGlvbihVbmxpbmtl
ZENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrLCBCeXRlY29k
ZUdyYXBoPFVubGlua2VkQ29kZUJsb2NrPiYgZ3JhcGgsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0
LCBjb25zdCBVc2VGdW5jdG9yJiB1c2UsIGNvbnN0IERlZkZ1bmN0b3ImIGRlZikKK3sKKyAgICAv
LyBUaGlzIGFic3RyYWN0bHkgZXhlY3V0ZSB0aGUgaW5zdHJ1Y3Rpb24gaW4gcmV2ZXJzZS4gSW5z
dHJ1Y3Rpb25zIGxvZ2ljYWxseSBmaXJzdCB1c2Ugb3BlcmFuZHMgYW5kCisgICAgLy8gdGhlbiBk
ZWZpbmUgb3BlcmFuZHMuIFRoaXMgbG9naWNhbCBvcmRlcmluZyBpcyBuZWNlc3NhcnkgZm9yIG9w
ZXJhdGlvbnMgdGhhdCB1c2UgYW5kIGRlZiB0aGUgc2FtZQorICAgIC8vIG9wZXJhbmQsIGxpa2U6
CisgICAgLy8KKyAgICAvLyAgICAgb3BfYWRkIGxvYzEsIGxvYzEsIGxvYzIKKyAgICAvLworICAg
IC8vIFRoZSB1c2Ugb2YgbG9jMSBoYXBwZW5zIGJlZm9yZSB0aGUgZGVmIG9mIGxvYzEuIFRoYXQn
cyBhIHNlbWFudGljIHJlcXVpcmVtZW50IHNpbmNlIHRoZSBhZGQKKyAgICAvLyBvcGVyYXRpb24g
Y2Fubm90IHRyYXZlbCBmb3J3YXJkIGluIHRpbWUgdG8gcmVhZCB0aGUgdmFsdWUgdGhhdCBpdCB3
aWxsIHByb2R1Y2UgYWZ0ZXIgcmVhZGluZyB0aGF0CisgICAgLy8gdmFsdWUuIFNpbmNlIHdlIGFy
ZSBleGVjdXRpbmcgaW4gcmV2ZXJzZSwgdGhpcyBtZWFucyB0aGF0IHdlIG11c3QgZG8gZGVmcyBi
ZWZvcmUgdXNlcyAocmV2ZXJzZSBvZgorICAgIC8vIHVzZXMgYmVmb3JlIGRlZnMpLgorICAgIC8v
CisgICAgLy8gU2luY2UgdGhpcyBpcyBhIGxpdmVuZXNzIGFuYWx5c2lzLCB0aGlzIG9yZGVyaW5n
IGVuZHMgdXAgYmVpbmcgcGFydGljdWxhcmx5IGltcG9ydGFudDogaWYgd2UgZGlkCisgICAgLy8g
dXNlcyBiZWZvcmUgZGVmcywgdGhlbiB0aGUgYWRkIG9wZXJhdGlvbiBhYm92ZSB3b3VsZCBhcHBl
YXIgdG8gbm90IGhhdmUgbG9jMSBsaXZlLCBzaW5jZSB3ZSdkCisgICAgLy8gZmlyc3QgYWRkIGl0
IHRvIHRoZSBvdXQgc2V0ICh0aGUgdXNlKSwgYW5kIHRoZW4gd2UnZCByZW1vdmUgaXQgKHRoZSBk
ZWYpLgorCisgICAgYXV0byYgaW5zdHJ1Y3Rpb25zID0gZ3JhcGguaW5zdHJ1Y3Rpb25zKCk7Cisg
ICAgVW5saW5rZWRJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSAmaW5zdHJ1Y3Rpb25zW2J5dGVj
b2RlT2Zmc2V0XTsKKyAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGluc3RydWN0aW9uLT51Lm9wY29k
ZTsKKworICAgIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoCisgICAgICAgIGNvZGVCbG9j
aywgb3Bjb2RlSUQsIGluc3RydWN0aW9uLCBibG9jaywgYnl0ZWNvZGVPZmZzZXQsCisgICAgICAg
IFsmXSAoVW5saW5rZWRDb2RlQmxvY2sqIGNvZGVCbG9jaywgVW5saW5rZWRJbnN0cnVjdGlvbios
IE9wY29kZUlELCBpbnQgb3BlcmFuZCkgeworICAgICAgICAgICAgaWYgKGlzVmFsaWRSZWdpc3Rl
ckZvckxpdmVuZXNzKGNvZGVCbG9jaywgb3BlcmFuZCkpCisgICAgICAgICAgICAgICAgZGVmKFZp
cnR1YWxSZWdpc3RlcihvcGVyYW5kKS50b0xvY2FsKCkpOworICAgICAgICB9KTsKKworICAgIGNv
bXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoCisgICAgICAgIGNvZGVCbG9jaywgb3Bjb2RlSUQs
IGluc3RydWN0aW9uLCBibG9jaywgYnl0ZWNvZGVPZmZzZXQsCisgICAgICAgIFsmXSAoVW5saW5r
ZWRDb2RlQmxvY2sqIGNvZGVCbG9jaywgVW5saW5rZWRJbnN0cnVjdGlvbiosIE9wY29kZUlELCBp
bnQgb3BlcmFuZCkgeworICAgICAgICAgICAgaWYgKGlzVmFsaWRSZWdpc3RlckZvckxpdmVuZXNz
KGNvZGVCbG9jaywgb3BlcmFuZCkpCisgICAgICAgICAgICAgICAgdXNlKFZpcnR1YWxSZWdpc3Rl
cihvcGVyYW5kKS50b0xvY2FsKCkpOworICAgICAgICB9KTsKKworICAgIC8vIElmIHdlIGhhdmUg
YW4gZXhjZXB0aW9uIGhhbmRsZXIsIHdlIHdhbnQgdGhlIGxpdmUtaW4gdmFyaWFibGVzIG9mIHRo
ZSAKKyAgICAvLyBleGNlcHRpb24gaGFuZGxlciBibG9jayB0byBiZSBpbmNsdWRlZCBpbiB0aGUg
bGl2ZS1pbiBvZiB0aGlzIHBhcnRpY3VsYXIgYnl0ZWNvZGUuCisgICAgaWYgKFVubGlua2VkSGFu
ZGxlckluZm8qIGhhbmRsZXIgPSBjb2RlQmxvY2stPmhhbmRsZXJGb3JCeXRlY29kZU9mZnNldChi
eXRlY29kZU9mZnNldCkpIHsKKyAgICAgICAgaWYgKG9wY29kZUlEICE9IG9wX3Jlc3VtZSkgewor
ICAgICAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBoYW5kbGVyQmxvY2sgPSBmaW5kQmFzaWNC
bG9ja1dpdGhMZWFkZXJPZmZzZXQoZ3JhcGgsIGhhbmRsZXItPnRhcmdldCk7CisgICAgICAgICAg
ICBBU1NFUlQoaGFuZGxlckJsb2NrKTsKKyAgICAgICAgICAgIGhhbmRsZXJCbG9jay0+aW4oKS5m
b3JFYWNoU2V0Qml0KHVzZSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIHN0
ZXBPdmVySW5zdHJ1Y3Rpb24oVW5saW5rZWRDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVC
YXNpY0Jsb2NrKiBibG9jaywgQnl0ZWNvZGVHcmFwaDxVbmxpbmtlZENvZGVCbG9jaz4mIGdyYXBo
LCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgRmFzdEJpdFZlY3RvciYgb3V0KQoreworICAgIHN0
ZXBPdmVySW5zdHJ1Y3Rpb24oCisgICAgICAgIGNvZGVCbG9jaywgYmxvY2ssIGdyYXBoLCBieXRl
Y29kZU9mZnNldCwKKyAgICAgICAgWyZdICh1bnNpZ25lZCBiaXRJbmRleCkgeworICAgICAgICAg
ICAgLy8gVGhpcyBpcyB0aGUgdXNlIGZ1bmN0b3IsIHNvIHdlIHNldCB0aGUgYml0LgorICAgICAg
ICAgICAgb3V0LnNldChiaXRJbmRleCk7CisgICAgICAgIH0sCisgICAgICAgIFsmXSAodW5zaWdu
ZWQgYml0SW5kZXgpIHsKKyAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIGRlZiBmdW5jdG9yLCBz
byB3ZSBjbGVhciB0aGUgYml0LgorICAgICAgICAgICAgb3V0LmNsZWFyKGJpdEluZGV4KTsKKyAg
ICAgICAgfSk7Cit9CisKK3N0YXRpYyB2b2lkIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQnl0ZWNv
ZGVPZmZzZXQoVW5saW5rZWRDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Jsb2Nr
KiBibG9jaywgQnl0ZWNvZGVHcmFwaDxVbmxpbmtlZENvZGVCbG9jaz4mIGdyYXBoLCB1bnNpZ25l
ZCB0YXJnZXRPZmZzZXQsIEZhc3RCaXRWZWN0b3ImIHJlc3VsdCkKK3sKKyAgICBBU1NFUlQoIWJs
b2NrLT5pc0V4aXRCbG9jaygpKTsKKyAgICBBU1NFUlQoIWJsb2NrLT5pc0VudHJ5QmxvY2soKSk7
CisKKyAgICBGYXN0Qml0VmVjdG9yIG91dCA9IGJsb2NrLT5vdXQoKTsKKworICAgIGZvciAoaW50
IGkgPSBibG9jay0+Ynl0ZWNvZGVPZmZzZXRzKCkuc2l6ZSgpIC0gMTsgaSA+PSAwOyBpLS0pIHsK
KyAgICAgICAgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQgPSBibG9jay0+Ynl0ZWNvZGVPZmZzZXRz
KClbaV07CisgICAgICAgIGlmICh0YXJnZXRPZmZzZXQgPiBieXRlY29kZU9mZnNldCkKKyAgICAg
ICAgICAgIGJyZWFrOworCisgICAgICAgIHN0ZXBPdmVySW5zdHJ1Y3Rpb24oY29kZUJsb2NrLCBi
bG9jaywgZ3JhcGgsIGJ5dGVjb2RlT2Zmc2V0LCBvdXQpOworICAgIH0KKworICAgIHJlc3VsdC5z
ZXQob3V0KTsKK30KKworc3RhdGljIHZvaWQgY29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCbG9jayhV
bmxpbmtlZENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrLCBC
eXRlY29kZUdyYXBoPFVubGlua2VkQ29kZUJsb2NrPiYgZ3JhcGgpCit7CisgICAgaWYgKGJsb2Nr
LT5pc0V4aXRCbG9jaygpIHx8IGJsb2NrLT5pc0VudHJ5QmxvY2soKSkKKyAgICAgICAgcmV0dXJu
OworICAgIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQnl0ZWNvZGVPZmZzZXQoY29kZUJsb2NrLCBi
bG9jaywgZ3JhcGgsIGJsb2NrLT5sZWFkZXJCeXRlY29kZU9mZnNldCgpLCBibG9jay0+aW4oKSk7
Cit9CisKK2NsYXNzIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uIHsKK3B1YmxpYzoKKyAgICBC
eXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbihCeXRlY29kZUdyYXBoPFVubGlua2VkQ29kZUJsb2Nr
PiYgZ3JhcGgpCisgICAgICAgIDogbV9ncmFwaChncmFwaCkKKyAgICAgICAgLCBtX2luc2VydGlv
blNldChncmFwaCkKKyAgICB7CisgICAgfQorCisgICAgRmFzdEJpdFZlY3RvciBnZXRMaXZlbmVz
c0luZm9BdEJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KQorICAgIHsKKyAg
ICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jayA9IGZpbmRCYXNpY0Jsb2NrRm9yQnl0ZWNv
ZGVPZmZzZXQobV9ncmFwaCwgYnl0ZWNvZGVPZmZzZXQpOworICAgICAgICBBU1NFUlQoYmxvY2sp
OworICAgICAgICBBU1NFUlQoIWJsb2NrLT5pc0VudHJ5QmxvY2soKSk7CisgICAgICAgIEFTU0VS
VCghYmxvY2stPmlzRXhpdEJsb2NrKCkpOworICAgICAgICBGYXN0Qml0VmVjdG9yIG91dDsKKyAg
ICAgICAgb3V0LnJlc2l6ZShibG9jay0+b3V0KCkubnVtQml0cygpKTsKKyAgICAgICAgY29tcHV0
ZUxvY2FsTGl2ZW5lc3NGb3JCeXRlY29kZU9mZnNldChtX2dyYXBoLmNvZGVCbG9jaygpLCBibG9j
aywgbV9ncmFwaCwgYnl0ZWNvZGVPZmZzZXQsIG91dCk7CisgICAgICAgIHJldHVybiBvdXQ7Cisg
ICAgfQorCisgICAgc3RydWN0IFN0b3JhZ2UgeworICAgICAgICBJZGVudGlmaWVyIGlkZW50aWZp
ZXI7CisgICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXJJbmRleDsKKyAgICAgICAgU2NvcGVPZmZz
ZXQgc2NvcGVPZmZzZXQ7CisgICAgfTsKKworICAgIFN0b3JhZ2Ugc3RvcmFnZUZvckdlbmVyYXRv
ckxvY2FsKHVuc2lnbmVkIGluZGV4KQorICAgIHsKKyAgICAgICAgaWYgKG1fc3RvcmFnZXMuc2l6
ZSgpIDw9IGluZGV4KSB7CisgICAgICAgICAgICAvLyBGSVhNRTogU3VwZXIgbmFpdmUgaW1wbGVt
ZW50YXRpb24uIFdlIHNob3VsZCByZWNvbnNpZGVyIHRoZSBpbmRleGVkIGdlbmVyYXRvciBsb2Nh
bHMgaW4gdGhlIHNjb3BlLgorICAgICAgICAgICAgVW5saW5rZWRDb2RlQmxvY2sqIGNvZGVCbG9j
ayA9IG1fZ3JhcGguY29kZUJsb2NrKCk7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
LCBhZGRpdGlvbiA9IG1fc3RvcmFnZXMuc2l6ZSgpIC0gaW5kZXggKyAxOyBpIDwgYWRkaXRpb247
ICsraSkgeworICAgICAgICAgICAgICAgIElkZW50aWZpZXIgaWRlbnRpZmllciA9IElkZW50aWZp
ZXI6OmZyb21VaWQoUHJpdmF0ZU5hbWUoKSk7CisgICAgICAgICAgICAgICAgdW5zaWduZWQgaWRl
bnRpZmllckluZGV4ID0gY29kZUJsb2NrLT5udW1iZXJPZklkZW50aWZpZXJzKCk7CisgICAgICAg
ICAgICAgICAgY29kZUJsb2NrLT5hZGRJZGVudGlmaWVyKGlkZW50aWZpZXIpOworCisgICAgICAg
ICAgICAgICAgLy8gRklYTUU6IEFkZCB0YWtlTmV4dFNjb3BlT2Zmc2V0IHJlbGF0ZWQgY29kZSB0
byBhbGxvY2F0ZSBzbG90cyBpbiB0aGUgc2NvcGUuCisgICAgICAgICAgICAgICAgU2NvcGVPZmZz
ZXQgc2NvcGVPZmZzZXQ7CisKKyAgICAgICAgICAgICAgICBtX3N0b3JhZ2VzLmFwcGVuZChTdG9y
YWdlIHsgaWRlbnRpZmllciwgaWRlbnRpZmllckluZGV4LCBzY29wZU9mZnNldCB9KTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbV9zdG9yYWdlc1tpbmRleF07Cisg
ICAgfQorCisgICAgc3RydWN0IEdlbmVyYXRvclBvaW50cyB7CisgICAgICAgIHNpemVfdCBzYXZl
UG9pbnQ7CisgICAgICAgIHNpemVfdCBtZXJnZVBvaW50OworICAgICAgICBzaXplX3QgcmVzdW1l
UG9pbnQ7CisgICAgfTsKKworICAgIHZvaWQgcnVuKCkKKyAgICB7CisgICAgICAgIHJ1bkxpdmVu
ZXNzQW5hbHlzaXMoKTsKKworICAgICAgICAvLyBXZSB3aWxsIGltcGxlbWVudCB0aGUgdHJhbnNm
b3JtYXRpb24gdGhhdCBjaGFuZ2VzIG9wX3NhdmUgLyBvcF9yZXN1bWUgdG8gc2NvcGUgb3BlcmF0
aW9ucyBoZXJlLgorCisgICAgICAgIC8vIEJvb2trZWVwIHRoZSBtZXJnZSBwb2ludCBieXRlY29k
ZSBvZmZzZXRzLgorICAgICAgICBWZWN0b3I8R2VuZXJhdG9yUG9pbnRzPiBnZW5lcmF0b3JQb2lu
dHNWZWN0b3I7CisgICAgICAgIHVuc2lnbmVkIG5ld0dlbmVyYXRvckZyYW1lSW5zdHJ1Y3Rpb25P
ZmZzZXQgPSAwOworICAgICAgICBmb3IgKHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxv
Y2s+JiBibG9jayA6IG1fZ3JhcGguYmFzaWNCbG9ja3MoKSkgeworICAgICAgICAgICAgZm9yICh1
bnNpZ25lZCBieXRlY29kZU9mZnNldCA6IGJsb2NrLT5ieXRlY29kZU9mZnNldHMoKSkgeworICAg
ICAgICAgICAgICAgIGNvbnN0IFVubGlua2VkSW5zdHJ1Y3Rpb24qIHBjID0gJm1fZ3JhcGguaW5z
dHJ1Y3Rpb25zKClbYnl0ZWNvZGVPZmZzZXRdOworICAgICAgICAgICAgICAgIHN3aXRjaCAocGMt
PnUub3Bjb2RlKSB7CisgICAgICAgICAgICAgICAgY2FzZSBvcF9zYXZlOiB7CisgICAgICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9IHBjWzJdLnUuaW5kZXg7
CisgICAgICAgICAgICAgICAgICAgIGludCBvZmZzZXQgPSBwY1szXS51Lm9wZXJhbmQ7CisgICAg
ICAgICAgICAgICAgICAgIGlmIChsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPj0gZ2VuZXJhdG9yUG9p
bnRzVmVjdG9yLnNpemUoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvclBvaW50
c1ZlY3Rvci5yZXNpemUobGl2ZUNhbGxlZUxvY2Fsc0luZGV4ICsgMSk7CisgICAgICAgICAgICAg
ICAgICAgIGdlbmVyYXRvclBvaW50c1ZlY3RvcltsaXZlQ2FsbGVlTG9jYWxzSW5kZXhdLnNhdmVQ
b2ludCA9IGJ5dGVjb2RlT2Zmc2V0OworICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3JQb2lu
dHNWZWN0b3JbbGl2ZUNhbGxlZUxvY2Fsc0luZGV4XS5tZXJnZVBvaW50ID0gYnl0ZWNvZGVPZmZz
ZXQgKyBvZmZzZXQ7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgICAgIGNhc2Ugb3BfcmVzdW1lOiB7CisgICAgICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9IHBjWzJdLnUuaW5kZXg7CisgICAg
ICAgICAgICAgICAgICAgIGlmIChsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPj0gZ2VuZXJhdG9yUG9p
bnRzVmVjdG9yLnNpemUoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvclBvaW50
c1ZlY3Rvci5yZXNpemUobGl2ZUNhbGxlZUxvY2Fsc0luZGV4ICsgMSk7CisgICAgICAgICAgICAg
ICAgICAgIGdlbmVyYXRvclBvaW50c1ZlY3RvcltsaXZlQ2FsbGVlTG9jYWxzSW5kZXhdLnJlc3Vt
ZVBvaW50ID0gYnl0ZWNvZGVPZmZzZXQ7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIHdpbGwgYmUg
cmVtb3ZlZC4KKyAgICAgICAgICAgICAgICBjYXNlIG9wX25ld19nZW5lcmF0b3JfZnJhbWU6IHsK
KyAgICAgICAgICAgICAgICAgICAgbmV3R2VuZXJhdG9yRnJhbWVJbnN0cnVjdGlvbk9mZnNldCA9
IGJ5dGVjb2RlT2Zmc2V0OworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAg
ICAgICAvLyBQZXJmb3JtIGJ5dGVjb2RlIGxpdmVuZXNzIGFuYWx5c2lzIHRvIGRldGVybWluZSB3
aGljaCBsb2NhbHMgYXJlIGxpdmUgYW5kIHNob3VsZCBiZSByZXN1bWVkIHdoZW4gZXhlY3V0aW5n
IG9wX3Jlc3VtZS4KKyAgICAgICAgVW5saW5rZWRDb2RlQmxvY2sqIGNvZGVCbG9jayA9IG1fZ3Jh
cGguY29kZUJsb2NrKCk7CisgICAgICAgIC8vIFZNJiB2bSA9ICpjb2RlQmxvY2stPnZtKCk7Cisg
ICAgICAgIHVuc2lnbmVkIG1heEdlbmVyYXRvckxvY2Fsc1NpemUgPSAwOworICAgICAgICAvLyBG
SVhNRTogVGhpcyB3aWxsIGJlIHJlbW92ZWQuCisgICAgICAgIGF1dG8mIGxpdmVDYWxsZWVMb2Nh
bHNBdFlpZWxkID0gY29kZUJsb2NrLT5saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZCgpOworICAgICAg
ICBsaXZlQ2FsbGVlTG9jYWxzQXRZaWVsZC5ncm93KGdlbmVyYXRvclBvaW50c1ZlY3Rvci5zaXpl
KCkpOworICAgICAgICBmb3IgKHNpemVfdCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSAwOyBsaXZl
Q2FsbGVlTG9jYWxzSW5kZXggPCBnZW5lcmF0b3JQb2ludHNWZWN0b3Iuc2l6ZSgpOyArK2xpdmVD
YWxsZWVMb2NhbHNJbmRleCkgeworICAgICAgICAgICAgY29uc3QgR2VuZXJhdG9yUG9pbnRzJiBw
b2ludHMgPSBnZW5lcmF0b3JQb2ludHNWZWN0b3JbbGl2ZUNhbGxlZUxvY2Fsc0luZGV4XTsKKyAg
ICAgICAgICAgIHNpemVfdCBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXQgPSBwb2ludHMubWVyZ2VQ
b2ludDsKKyAgICAgICAgICAgIEZhc3RCaXRWZWN0b3IgbGl2ZW5lc3NWZWN0b3IgPSBnZXRMaXZl
bmVzc0luZm9BdEJ5dGVjb2RlT2Zmc2V0KG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldCk7CisKKyAg
ICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBzY29wZSA9IHZpcnR1YWxSZWdpc3RlckZvckFyZ3Vt
ZW50KDUpOworCisgICAgICAgICAgICB1bnNpZ25lZCBnZW5lcmF0b3JMb2NhbEluZGV4ID0gMDsK
KyAgICAgICAgICAgIGxpdmVuZXNzVmVjdG9yLmZvckVhY2hTZXRCaXQoWyZdKHNpemVfdCBpbmRl
eCkgeworICAgICAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kID0gdmlydHVhbFJl
Z2lzdGVyRm9yTG9jYWwoaW5kZXgpOworICAgICAgICAgICAgICAgIFN0b3JhZ2Ugc3RvcmFnZSA9
IHN0b3JhZ2VGb3JHZW5lcmF0b3JMb2NhbChnZW5lcmF0b3JMb2NhbEluZGV4KyspOworCisgICAg
ICAgICAgICAgICAgLy8gb3Bfc2F2ZS4KKyAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5p
bnNlcnQocG9pbnRzLnNhdmVQb2ludCwgeworICAgICAgICAgICAgICAgICAgICBvcF9wdXRfdG9f
c2NvcGUsCisgICAgICAgICAgICAgICAgICAgIHNjb3BlLm9mZnNldCgpLCAgICAgICAgICAgICAg
ICAvLyBzY29wZQorICAgICAgICAgICAgICAgICAgICBzdG9yYWdlLmlkZW50aWZpZXJJbmRleCwg
ICAgICAgLy8gaWRlbnRpZmllcgorICAgICAgICAgICAgICAgICAgICBvcGVyYW5kLm9mZnNldCgp
LCAgICAgICAgICAgICAgLy8gdmFsdWUKKyAgICAgICAgICAgICAgICAgICAgR2V0UHV0SW5mbyhE
b05vdFRocm93SWZOb3RGb3VuZCwgTG9jYWxDbG9zdXJlVmFyLCBJbml0aWFsaXphdGlvbk1vZGU6
Ok5vdEluaXRpYWxpemF0aW9uKS5vcGVyYW5kKCksCisgICAgICAgICAgICAgICAgICAgIDAsICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzeW1ib2wgdGFibGUgY29uc3RhbnQgaW5kZXgK
KyAgICAgICAgICAgICAgICAgICAgc3RvcmFnZS5zY29wZU9mZnNldC5vZmZzZXQoKSwgIC8vIHNj
b3BlIG9mZnNldAorICAgICAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICAgICAgLy8gb3Bf
cmVzdW1lLgorICAgICAgICAgICAgICAgIFVubGlua2VkVmFsdWVQcm9maWxlIHByb2ZpbGUgPSBj
b2RlQmxvY2stPmFkZFZhbHVlUHJvZmlsZSgpOworICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9u
U2V0Lmluc2VydChwb2ludHMucmVzdW1lUG9pbnQsIHsKKyAgICAgICAgICAgICAgICAgICAgb3Bf
Z2V0X2Zyb21fc2NvcGUsCisgICAgICAgICAgICAgICAgICAgIG9wZXJhbmQub2Zmc2V0KCksICAg
ICAgICAgICAgICAvLyBkc3QKKyAgICAgICAgICAgICAgICAgICAgc2NvcGUub2Zmc2V0KCksICAg
ICAgICAgICAgICAgIC8vIHNjb3BlCisgICAgICAgICAgICAgICAgICAgIHN0b3JhZ2UuaWRlbnRp
ZmllckluZGV4LCAgICAgICAvLyBpZGVudGlmaWVyCisgICAgICAgICAgICAgICAgICAgIEdldFB1
dEluZm8oRG9Ob3RUaHJvd0lmTm90Rm91bmQsIExvY2FsQ2xvc3VyZVZhciwgSW5pdGlhbGl6YXRp
b25Nb2RlOjpOb3RJbml0aWFsaXphdGlvbikub3BlcmFuZCgpLAorICAgICAgICAgICAgICAgICAg
ICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbG9jYWwgc2NvcGUgZGVwdGgKKyAg
ICAgICAgICAgICAgICAgICAgc3RvcmFnZS5zY29wZU9mZnNldC5vZmZzZXQoKSwgIC8vIHNjb3Bl
IG9mZnNldAorICAgICAgICAgICAgICAgICAgICBwcm9maWxlICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gcHJvZmlsZQorICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfSk7CisKKyAg
ICAgICAgICAgIG1faW5zZXJ0aW9uU2V0LnJlbW92ZShwb2ludHMuc2F2ZVBvaW50LCBvcGNvZGVM
ZW5ndGgob3Bfc2F2ZSkpOworICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQucmVtb3ZlKHBvaW50
cy5yZXN1bWVQb2ludCwgb3Bjb2RlTGVuZ3RoKG9wX3Jlc3VtZSkpOworCisgICAgICAgICAgICAv
LyBGSVhNRTogVGhpcyB3aWxsIGJlIHJlbW92ZWQuCisgICAgICAgICAgICBsaXZlQ2FsbGVlTG9j
YWxzQXRZaWVsZFtsaXZlQ2FsbGVlTG9jYWxzSW5kZXhdID0gbGl2ZW5lc3NWZWN0b3I7CisgICAg
ICAgICAgICBtYXhHZW5lcmF0b3JMb2NhbHNTaXplID0gc3RkOjptYXg8dW5zaWduZWQ+KG1heEdl
bmVyYXRvckxvY2Fsc1NpemUsIGxpdmVuZXNzVmVjdG9yLmJpdENvdW50KCkpOworICAgICAgICB9
CisKKworICAgICAgICAvLyBGSVhNRTogVGhpcyB3aWxsIGJlIHJlbW92ZWQuCisgICAgICAgIC8v
IEZpbGwgb3BfbmV3X2dlbmVyYXRvcl9mcmFtZSdzIHNpemUuCisgICAgICAgIG1fZ3JhcGguaW5z
dHJ1Y3Rpb25zKClbbmV3R2VuZXJhdG9yRnJhbWVJbnN0cnVjdGlvbk9mZnNldCArIDJdLnUuaW5k
ZXggPSBtYXhHZW5lcmF0b3JMb2NhbHNTaXplOworCisKKyAgICAgICAgbV9pbnNlcnRpb25TZXQu
ZXhlY3V0ZSgpOworICAgIH0KKworICAgIHZvaWQgcnVuTGl2ZW5lc3NBbmFseXNpcygpCisgICAg
eworICAgICAgICBVbmxpbmtlZENvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2sgPSBtX2dyYXBo
LmNvZGVCbG9jaygpOworICAgICAgICB1bnNpZ25lZCBudW1iZXJPZlZhcmlhYmxlcyA9IHVubGlu
a2VkQ29kZUJsb2NrLT5tX251bUNhbGxlZUxvY2FsczsKKyAgICAgICAgZm9yIChzdGQ6OnVuaXF1
ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiYgYmxvY2sgOiBtX2dyYXBoLmJhc2ljQmxvY2tzKCkp
IHsKKyAgICAgICAgICAgIGJsb2NrLT5pbigpLnJlc2l6ZShudW1iZXJPZlZhcmlhYmxlcyk7Cisg
ICAgICAgICAgICBibG9jay0+b3V0KCkucmVzaXplKG51bWJlck9mVmFyaWFibGVzKTsKKyAgICAg
ICAgfQorCisgICAgICAgIGJvb2wgY2hhbmdlZDsKKyAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2Nr
KiBsYXN0QmxvY2sgPSBtX2dyYXBoLmJhc2ljQmxvY2tzKCkubGFzdCgpLmdldCgpOworICAgICAg
ICBsYXN0QmxvY2stPmluKCkuY2xlYXJBbGwoKTsKKyAgICAgICAgbGFzdEJsb2NrLT5vdXQoKS5j
bGVhckFsbCgpOworICAgICAgICBGYXN0Qml0VmVjdG9yIG5ld091dDsKKyAgICAgICAgbmV3T3V0
LnJlc2l6ZShsYXN0QmxvY2stPm91dCgpLm51bUJpdHMoKSk7CisgICAgICAgIGRvIHsKKyAgICAg
ICAgICAgIGNoYW5nZWQgPSBmYWxzZTsKKyAgICAgICAgICAgIGZvciAoc3RkOjp1bmlxdWVfcHRy
PEJ5dGVjb2RlQmFzaWNCbG9jaz4mIGJsb2NrIDogbV9ncmFwaC5iYXNpY0Jsb2Nrc0luUmV2ZXJz
ZU9yZGVyKCkpIHsKKyAgICAgICAgICAgICAgICBuZXdPdXQuY2xlYXJBbGwoKTsKKyAgICAgICAg
ICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSAwOyBqIDwgYmxvY2stPnN1Y2Nlc3NvcnMoKS5zaXpl
KCk7IGorKykKKyAgICAgICAgICAgICAgICAgICAgbmV3T3V0Lm1lcmdlKGJsb2NrLT5zdWNjZXNz
b3JzKClbal0tPmluKCkpOworICAgICAgICAgICAgICAgIGJvb2wgb3V0RGlkQ2hhbmdlID0gYmxv
Y2stPm91dCgpLnNldEFuZENoZWNrKG5ld091dCk7CisgICAgICAgICAgICAgICAgY29tcHV0ZUxv
Y2FsTGl2ZW5lc3NGb3JCbG9jayh1bmxpbmtlZENvZGVCbG9jaywgYmxvY2suZ2V0KCksIG1fZ3Jh
cGgpOworICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gb3V0RGlkQ2hhbmdlOworICAgICAgICAg
ICAgfQorICAgICAgICB9IHdoaWxlIChjaGFuZ2VkKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAg
Qnl0ZWNvZGVHcmFwaDxVbmxpbmtlZENvZGVCbG9jaz4mIG1fZ3JhcGg7CisgICAgQnl0ZWNvZGVJ
bnNlcnRpb25TZXQgbV9pbnNlcnRpb25TZXQ7CisgICAgVmVjdG9yPFN0b3JhZ2U+IG1fc3RvcmFn
ZXM7Cit9OworCit2b2lkIHBlcmZvcm1HZW5lcmF0b3JpZmljYXRpb24oQnl0ZWNvZGVHcmFwaDxV
bmxpbmtlZENvZGVCbG9jaz4mIGdyYXBoKQoreworICAgIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0
aW9uIHBhc3MoZ3JhcGgpOworICAgIHBhc3MucnVuKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpT
QwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlR2Vu
ZXJhdG9yaWZpY2F0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVHZW5lcmF0b3JpZmljYXRpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODk4OTUxZWQwZWQ2OGY4YTMwOTY5
MGJkZDZlZjFmMDY5ZmRkMTExCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmgKQEAgLTAsMCArMSwzNCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBZdXN1a2UgU3V6dWtpIDx5dXN1a2Uuc3V6dWtp
QHNzbGFiLmljcy5rZWlvLmFjLmpwPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1
ZGUgPEJ5dGVjb2RlR3JhcGguaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK3ZvaWQgcGVyZm9ybUdl
bmVyYXRvcmlmaWNhdGlvbihCeXRlY29kZUdyYXBoPFVubGlua2VkQ29kZUJsb2NrPiYpOworCit9
IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZUdyYXBoLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZUdyYXBoLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MDVlZDRjZWJmN2VhMmU4NTk0MDYxODliZGUx
MjJmN2IzODc4OTU1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlR3JhcGguY3BwCkBAIC0wLDAgKzEsMzQgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTYgWXVzdWtlIFN1enVraSA8eXVzdWtlLnN1enVraUBzc2xhYi5pY3Mua2Vpby5h
Yy5qcD4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkJ5dGVjb2Rl
R3JhcGguaCIKKworI2luY2x1ZGUgIkJ5dGVjb2RlQmFzaWNCbG9jay5oIgorCituYW1lc3BhY2Ug
SlNDIHsKKworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUdyYXBoLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQnl0ZWNvZGVHcmFwaC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMxMWQwZDM2MjA2ZjVmNjIxMzBm
NWNlZjNhMGJmNjcyOWY5ZmJkZTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVHcmFwaC5oCkBAIC0wLDAgKzEsMTAyIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE2IFl1c3VrZSBTdXp1a2kgPHl1c3VrZS5zdXp1a2lAc3NsYWIuaWNz
LmtlaW8uYWMuanA+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQnl0ZWNvZGVHcmFwaF9oCisjZGVmaW5l
IEJ5dGVjb2RlR3JhcGhfaAorCisjaW5jbHVkZSAiQnl0ZWNvZGVCYXNpY0Jsb2NrLmgiCisjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgQnl0ZWNvZGVC
YXNpY0Jsb2NrOworCit0ZW1wbGF0ZTx0eXBlbmFtZSBCbG9jaz4KK2NsYXNzIEJ5dGVjb2RlR3Jh
cGggeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKEJ5dGVjb2RlR3JhcGgpOworcHVibGljOgorICAgIHR5cGVkZWYgVmVjdG9yPHN0ZDo6dW5p
cXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiBCYXNpY0Jsb2Nrc1ZlY3RvcjsKKworICAgIGlu
bGluZSBCeXRlY29kZUdyYXBoKEJsb2NrKiwgdHlwZW5hbWUgQmxvY2s6OlVucGFja2VkSW5zdHJ1
Y3Rpb25zJiwgQnl0ZWNvZGVBbmFseXNpc01vZGUpOworCisgICAgQnl0ZWNvZGVBbmFseXNpc01v
ZGUgYnl0ZWNvZGVBbmFseXNpc01vZGUoKSBjb25zdCB7IHJldHVybiBtX2J5dGVjb2RlQW5hbHlz
aXNNb2RlOyB9CisKKyAgICBCbG9jayogY29kZUJsb2NrKCkgY29uc3QgeyByZXR1cm4gbV9jb2Rl
QmxvY2s7IH0KKworICAgIEJhc2ljQmxvY2tzVmVjdG9yJiBiYXNpY0Jsb2NrcygpIHsgcmV0dXJu
IG1fYmFzaWNCbG9ja3M7IH0KKworICAgIHR5cGVuYW1lIEJsb2NrOjpVbnBhY2tlZEluc3RydWN0
aW9ucyYgaW5zdHJ1Y3Rpb25zKCkgeyByZXR1cm4gbV9pbnN0cnVjdGlvbnM7IH0KKworICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEl0ZXJhdG9yPgorICAgIGNsYXNzIFJldmVyc2VJdGVyYWJsZSB7Cisg
ICAgcHVibGljOgorICAgICAgICBSZXZlcnNlSXRlcmFibGUoSXRlcmF0b3IgYmVnaW4sIEl0ZXJh
dG9yIGVuZCkKKyAgICAgICAgICAgIDogbV9iZWdpbihiZWdpbikKKyAgICAgICAgICAgICwgbV9l
bmQoZW5kKQorICAgICAgICB7CisgICAgICAgIH0KKworICAgICAgICBzdGQ6OnJldmVyc2VfaXRl
cmF0b3I8SXRlcmF0b3I+IGJlZ2luKCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6cmV2ZXJzZV9pdGVyYXRvcjxJdGVyYXRvcj4obV9lbmQpOworICAgICAgICB9CisKKyAgICAg
ICAgc3RkOjpyZXZlcnNlX2l0ZXJhdG9yPEl0ZXJhdG9yPiBlbmQoKQorICAgICAgICB7CisgICAg
ICAgICAgICByZXR1cm4gc3RkOjpyZXZlcnNlX2l0ZXJhdG9yPEl0ZXJhdG9yPihtX2JlZ2luKTsK
KyAgICAgICAgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgSXRlcmF0b3IgbV9iZWdpbjsKKyAg
ICAgICAgSXRlcmF0b3IgbV9lbmQ7CisgICAgfTsKKworICAgIFJldmVyc2VJdGVyYWJsZTxCYXNp
Y0Jsb2Nrc1ZlY3Rvcjo6aXRlcmF0b3I+IGJhc2ljQmxvY2tzSW5SZXZlcnNlT3JkZXIoKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIHsgbV9iYXNpY0Jsb2Nrcy5iZWdpbigpLCBtX2Jhc2ljQmxvY2tz
LmVuZCgpIH07CisgICAgfQorCitwcml2YXRlOgorICAgIEJsb2NrKiBtX2NvZGVCbG9jazsKKyAg
ICBCeXRlY29kZUFuYWx5c2lzTW9kZSBtX2J5dGVjb2RlQW5hbHlzaXNNb2RlOworICAgIEJhc2lj
QmxvY2tzVmVjdG9yIG1fYmFzaWNCbG9ja3M7CisgICAgdHlwZW5hbWUgQmxvY2s6OlVucGFja2Vk
SW5zdHJ1Y3Rpb25zJiBtX2luc3RydWN0aW9uczsKK307CisKKwordGVtcGxhdGU8dHlwZW5hbWUg
QmxvY2s+CitCeXRlY29kZUdyYXBoPEJsb2NrPjo6Qnl0ZWNvZGVHcmFwaChCbG9jayogY29kZUJs
b2NrLCB0eXBlbmFtZSBCbG9jazo6VW5wYWNrZWRJbnN0cnVjdGlvbnMmIGluc3RydWN0aW9ucywg
Qnl0ZWNvZGVBbmFseXNpc01vZGUgYnl0ZWNvZGVBbmFseXNpc01vZGUpCisgICAgOiBtX2NvZGVC
bG9jayhjb2RlQmxvY2spCisgICAgLCBtX2J5dGVjb2RlQW5hbHlzaXNNb2RlKGJ5dGVjb2RlQW5h
bHlzaXNNb2RlKQorICAgICwgbV9pbnN0cnVjdGlvbnMoaW5zdHJ1Y3Rpb25zKQoreworICAgIEFT
U0VSVChtX2NvZGVCbG9jayk7CisgICAgY29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MobV9jb2Rl
QmxvY2ssIGluc3RydWN0aW9ucy5iZWdpbigpLCBpbnN0cnVjdGlvbnMuc2l6ZSgpLCBtX2J5dGVj
b2RlQW5hbHlzaXNNb2RlLCBtX2Jhc2ljQmxvY2tzKTsKKyAgICBBU1NFUlQobV9iYXNpY0Jsb2Nr
cy5zaXplKCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKyNlbmRpZiAvLyBCeXRlY29kZUdy
YXBoX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZUluc2VydGlvblNldC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVJbnNlcnRpb25TZXQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNkNTA5MTRiMDU2OTQ3ZWM5ZGQyMmE2ZTFj
YjBkODBkMTlhYTZkODAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQnl0ZWNvZGVJbnNlcnRpb25TZXQuY3BwCkBAIC0wLDAgKzEsMzYgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTYgWXVzdWtlIFN1enVraSA8eXVzdWtlLnN1enVraUBzc2xhYi5p
Y3Mua2Vpby5hYy5qcD4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IkJ5dGVjb2RlSW5zZXJ0aW9uU2V0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCit2b2lkIEJ5dGVj
b2RlSW5zZXJ0aW9uU2V0OjpleGVjdXRlKCkKK3sKKyAgICAvLyBUT0RPCit9CisKK30gLy8gbmFt
ZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlSW5zZXJ0aW9uU2V0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVJbnNlcnRpb25TZXQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mOTFlNTk0MTI4ZDY3ZWE2MWQwMmYyODkw
MDFlMWJhN2FmNmQ3YmM1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlSW5zZXJ0aW9uU2V0LmgKQEAgLTAsMCArMSw2NSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNiBZdXN1a2UgU3V6dWtpIDx5dXN1a2Uuc3V6dWtpQHNzbGFiLmlj
cy5rZWlvLmFjLmpwPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkJ5dGVj
b2RlR3JhcGguaCIKKyNpbmNsdWRlICJVbmxpbmtlZENvZGVCbG9jay5oIgorI2luY2x1ZGUgPHd0
Zi9JbnNlcnRpb24uaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEJ5dGVjb2RlSW5zZXJ0
aW9uU2V0IHsKK3B1YmxpYzoKKyAgICBzdHJ1Y3QgSW5zZXJ0ZWRCeXRlY29kZSB7CisgICAgICAg
IE9wY29kZUlEIG9wY29kZUlEOworICAgICAgICBVbmxpbmtlZEluc3RydWN0aW9uIGluc3RydWN0
aW9uc1sxNl07CisgICAgfTsKKworICAgIHR5cGVkZWYgV1RGOjpJbnNlcnRpb248SW5zZXJ0ZWRC
eXRlY29kZT4gSW5zZXJ0aW9uOworCisgICAgQnl0ZWNvZGVJbnNlcnRpb25TZXQoQnl0ZWNvZGVH
cmFwaDxVbmxpbmtlZENvZGVCbG9jaz4mIGdyYXBoKQorICAgICAgICA6IG1fZ3JhcGgoZ3JhcGgp
CisgICAgeworICAgIH0KKworICAgIHZvaWQgaW5zZXJ0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0
LCBJbnNlcnRlZEJ5dGVjb2RlIGJ5dGVjb2RlKQorICAgIHsKKyAgICAgICAgbV9pbnNlcnRpb25z
LmFwcGVuZChJbnNlcnRpb24oYnl0ZWNvZGVPZmZzZXQsIGJ5dGVjb2RlKSk7CisgICAgfQorCisg
ICAgdm9pZCByZW1vdmUodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkK
KyAgICB7CisgICAgICAgIC8vIFRPRE8KKyAgICB9CisKKyAgICB2b2lkIGV4ZWN1dGUoKTsKKwor
cHJpdmF0ZToKKyAgICBCeXRlY29kZUdyYXBoPFVubGlua2VkQ29kZUJsb2NrPiYgbV9ncmFwaDsK
KyAgICBWZWN0b3I8SW5zZXJ0aW9uLCA4PiBtX2luc2VydGlvbnM7Cit9OworCit9IC8vIG5hbWVz
cGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZUxpc3QuanNvbiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxp
c3QuanNvbgppbmRleCA4OGE3YzUyMzIwNTVjMzliNzdlOWUyZjVjNjlhY2YxYjRjY2Y2OWFiLi41
NTVlYzFiZWE4YzRlOWZkMmEzYzA0M2IwMTM0MTRjMGE0MDg3NWQ0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24KKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCkBAIC0xNyw2ICsxNyw3
IEBACiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXdfYXJyYXlfd2l0aF9zaXplIiwgImxl
bmd0aCIgOiA0IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXdfYXJyYXlfYnVmZmVy
IiwgImxlbmd0aCIgOiA1IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXdfcmVnZXhw
IiwgImxlbmd0aCIgOiAzIH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXdfZ2VuZXJh
dG9yX2ZyYW1lIiwgImxlbmd0aCIgOiAzIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9t
b3YiLCAibGVuZ3RoIiA6IDMgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX25vdCIsICJs
ZW5ndGgiIDogMyB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfZXEiLCAibGVuZ3RoIiA6
IDQgfSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZUxpdmVuZXNzQW5hbHlzaXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAKaW5kZXggMTdlODJhMmZiYmEwMTUwNDNlOTlkMzRl
ZDI1NjkzNzJiMzZmN2E4NS4uMDMxYjNmNmM3OTkwNDk4YTBlMjE5MWM2ZjUzODA5ZTU1ZjExNTMw
ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2
ZW5lc3NBbmFseXNpcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAKQEAgLTM1LDEwICszNSw5IEBACiAKIG5hbWVzcGFj
ZSBKU0MgewogCi1CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OkJ5dGVjb2RlTGl2ZW5lc3NBbmFs
eXNpcyhDb2RlQmxvY2sqIGNvZGVCbG9jaykKLSAgICA6IG1fY29kZUJsb2NrKGNvZGVCbG9jaykK
K0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzKEJ5dGVj
b2RlR3JhcGg8Q29kZUJsb2NrPiYgZ3JhcGgpCisgICAgOiBtX2dyYXBoKGdyYXBoKQogewotICAg
IEFTU0VSVChtX2NvZGVCbG9jayk7CiAgICAgY29tcHV0ZSgpOwogfQogCkBAIC01Niw5ICs1NSw5
IEBAIHN0YXRpYyB1bnNpZ25lZCBnZXRMZWFkZXJPZmZzZXRGb3JCYXNpY0Jsb2NrKHN0ZDo6dW5p
cXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+CiAgICAgcmV0dXJuICgqYmFzaWNCbG9jayktPmxl
YWRlckJ5dGVjb2RlT2Zmc2V0KCk7CiB9CiAKLXN0YXRpYyBCeXRlY29kZUJhc2ljQmxvY2sqIGZp
bmRCYXNpY0Jsb2NrV2l0aExlYWRlck9mZnNldChWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVj
b2RlQmFzaWNCbG9jaz4+JiBiYXNpY0Jsb2NrcywgdW5zaWduZWQgbGVhZGVyT2Zmc2V0KQorc3Rh
dGljIEJ5dGVjb2RlQmFzaWNCbG9jayogZmluZEJhc2ljQmxvY2tXaXRoTGVhZGVyT2Zmc2V0KEJ5
dGVjb2RlR3JhcGg8Q29kZUJsb2NrPiYgZ3JhcGgsIHVuc2lnbmVkIGxlYWRlck9mZnNldCkKIHsK
LSAgICByZXR1cm4gKCp0cnlCaW5hcnlTZWFyY2g8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFz
aWNCbG9jaz4sIHVuc2lnbmVkPihiYXNpY0Jsb2NrcywgYmFzaWNCbG9ja3Muc2l6ZSgpLCBsZWFk
ZXJPZmZzZXQsIGdldExlYWRlck9mZnNldEZvckJhc2ljQmxvY2spKS5nZXQoKTsKKyAgICByZXR1
cm4gKCp0cnlCaW5hcnlTZWFyY2g8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4s
IHVuc2lnbmVkPihncmFwaC5iYXNpY0Jsb2NrcygpLCBncmFwaC5iYXNpY0Jsb2NrcygpLnNpemUo
KSwgbGVhZGVyT2Zmc2V0LCBnZXRMZWFkZXJPZmZzZXRGb3JCYXNpY0Jsb2NrKSkuZ2V0KCk7CiB9
CiAKIHN0YXRpYyBib29sIGJsb2NrQ29udGFpbnNCeXRlY29kZU9mZnNldChCeXRlY29kZUJhc2lj
QmxvY2sqIGJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCkKQEAgLTY3LDcgKzY2LDcgQEAg
c3RhdGljIGJvb2wgYmxvY2tDb250YWluc0J5dGVjb2RlT2Zmc2V0KEJ5dGVjb2RlQmFzaWNCbG9j
ayogYmxvY2ssIHVuc2lnbmVkIGJ5dGUKICAgICByZXR1cm4gYnl0ZWNvZGVPZmZzZXQgPj0gbGVh
ZGVyT2Zmc2V0ICYmIGJ5dGVjb2RlT2Zmc2V0IDwgbGVhZGVyT2Zmc2V0ICsgYmxvY2stPnRvdGFs
Qnl0ZWNvZGVMZW5ndGgoKTsKIH0KIAotc3RhdGljIEJ5dGVjb2RlQmFzaWNCbG9jayogZmluZEJh
c2ljQmxvY2tGb3JCeXRlY29kZU9mZnNldChWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2Rl
QmFzaWNCbG9jaz4+JiBiYXNpY0Jsb2NrcywgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpCitzdGF0
aWMgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBmaW5kQmFzaWNCbG9ja0ZvckJ5dGVjb2RlT2Zmc2V0KEJ5
dGVjb2RlR3JhcGg8Q29kZUJsb2NrPiYgZ3JhcGgsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KQog
ewogLyoKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYmFzaWNCbG9ja3Muc2l6ZSgpOyBp
KyspIHsKQEAgLTc2LDYgKzc1LDggQEAgc3RhdGljIEJ5dGVjb2RlQmFzaWNCbG9jayogZmluZEJh
c2ljQmxvY2tGb3JCeXRlY29kZU9mZnNldChWZWN0b3I8c3RkOjp1bmlxdWVfcHQKICAgICB9CiAg
ICAgcmV0dXJuIDA7CiAqLworICAgIEJ5dGVjb2RlR3JhcGg8Q29kZUJsb2NrPjo6QmFzaWNCbG9j
a3NWZWN0b3ImIGJhc2ljQmxvY2tzID0gZ3JhcGguYmFzaWNCbG9ja3MoKTsKKwogICAgIHN0ZDo6
dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+KiBiYXNpY0Jsb2NrID0gYXBwcm94aW1hdGVC
aW5hcnlTZWFyY2g8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4sIHVuc2lnbmVk
PigKICAgICAgICAgYmFzaWNCbG9ja3MsIGJhc2ljQmxvY2tzLnNpemUoKSwgYnl0ZWNvZGVPZmZz
ZXQsIGdldExlYWRlck9mZnNldEZvckJhc2ljQmxvY2spOwogICAgIC8vIFdlIGZvdW5kIHRoZSBi
bG9jayB3ZSB3ZXJlIGxvb2tpbmcgZm9yLgpAQCAtOTgsNyArOTksNyBAQCBzdGF0aWMgQnl0ZWNv
ZGVCYXNpY0Jsb2NrKiBmaW5kQmFzaWNCbG9ja0ZvckJ5dGVjb2RlT2Zmc2V0KFZlY3RvcjxzdGQ6
OnVuaXF1ZV9wdAogLy8gU2ltcGxpZmllZCBpbnRlcmZhY2UgdG8gYnl0ZWNvZGUgdXNlL2RlZiwg
d2hpY2ggZGV0ZXJtaW5lcyBkZWZzIGZpcnN0IGFuZCB0aGVuIHVzZXMsIGFuZCBpbmNsdWRlcwog
Ly8gZXhjZXB0aW9uIGhhbmRsZXJzIGluIHRoZSB1c2VzLgogdGVtcGxhdGU8dHlwZW5hbWUgVXNl
RnVuY3RvciwgdHlwZW5hbWUgRGVmRnVuY3Rvcj4KLXN0YXRpYyB2b2lkIHN0ZXBPdmVySW5zdHJ1
Y3Rpb24oQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2ssIFZl
Y3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mIGJhc2ljQmxvY2tzLCB1
bnNpZ25lZCBieXRlY29kZU9mZnNldCwgY29uc3QgVXNlRnVuY3RvciYgdXNlLCBjb25zdCBEZWZG
dW5jdG9yJiBkZWYpCitzdGF0aWMgdm9pZCBzdGVwT3Zlckluc3RydWN0aW9uKENvZGVCbG9jayog
Y29kZUJsb2NrLCBCeXRlY29kZUdyYXBoPENvZGVCbG9jaz4mIGdyYXBoLCB1bnNpZ25lZCBieXRl
Y29kZU9mZnNldCwgY29uc3QgVXNlRnVuY3RvciYgdXNlLCBjb25zdCBEZWZGdW5jdG9yJiBkZWYp
CiB7CiAgICAgLy8gVGhpcyBhYnN0cmFjdGx5IGV4ZWN1dGUgdGhlIGluc3RydWN0aW9uIGluIHJl
dmVyc2UuIEluc3RydWN0aW9ucyBsb2dpY2FsbHkgZmlyc3QgdXNlIG9wZXJhbmRzIGFuZAogICAg
IC8vIHRoZW4gZGVmaW5lIG9wZXJhbmRzLiBUaGlzIGxvZ2ljYWwgb3JkZXJpbmcgaXMgbmVjZXNz
YXJ5IGZvciBvcGVyYXRpb25zIHRoYXQgdXNlIGFuZCBkZWYgdGhlIHNhbWUKQEAgLTExNiwxNCAr
MTE3LDE0IEBAIHN0YXRpYyB2b2lkIHN0ZXBPdmVySW5zdHJ1Y3Rpb24oQ29kZUJsb2NrKiBjb2Rl
QmxvY2ssIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2ssCiAgICAgLy8gZmlyc3QgYWRkIGl0IHRv
IHRoZSBvdXQgc2V0ICh0aGUgdXNlKSwgYW5kIHRoZW4gd2UnZCByZW1vdmUgaXQgKHRoZSBkZWYp
LgogICAgIAogICAgIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoCi0gICAgICAgIGNvZGVC
bG9jaywgYmxvY2ssIGJ5dGVjb2RlT2Zmc2V0LAorICAgICAgICBjb2RlQmxvY2ssIGJ5dGVjb2Rl
T2Zmc2V0LAogICAgICAgICBbJl0gKENvZGVCbG9jayogY29kZUJsb2NrLCBJbnN0cnVjdGlvbios
IE9wY29kZUlELCBpbnQgb3BlcmFuZCkgewogICAgICAgICAgICAgaWYgKGlzVmFsaWRSZWdpc3Rl
ckZvckxpdmVuZXNzKGNvZGVCbG9jaywgb3BlcmFuZCkpCiAgICAgICAgICAgICAgICAgZGVmKFZp
cnR1YWxSZWdpc3RlcihvcGVyYW5kKS50b0xvY2FsKCkpOwogICAgICAgICB9KTsKIAogICAgIGNv
bXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoCi0gICAgICAgIGNvZGVCbG9jaywgYmxvY2ssIGJ5
dGVjb2RlT2Zmc2V0LAorICAgICAgICBjb2RlQmxvY2ssIGJ5dGVjb2RlT2Zmc2V0LAogICAgICAg
ICBbJl0gKENvZGVCbG9jayogY29kZUJsb2NrLCBJbnN0cnVjdGlvbiosIE9wY29kZUlELCBpbnQg
b3BlcmFuZCkgewogICAgICAgICAgICAgaWYgKGlzVmFsaWRSZWdpc3RlckZvckxpdmVuZXNzKGNv
ZGVCbG9jaywgb3BlcmFuZCkpCiAgICAgICAgICAgICAgICAgdXNlKFZpcnR1YWxSZWdpc3Rlcihv
cGVyYW5kKS50b0xvY2FsKCkpOwpAQCAtMTM5LDE3ICsxNDAsMTcgQEAgc3RhdGljIHZvaWQgc3Rl
cE92ZXJJbnN0cnVjdGlvbihDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Jsb2Nr
KiBibG9jaywKICAgICAgICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uID0gJmluc3RydWN0aW9u
c0JlZ2luW2J5dGVjb2RlT2Zmc2V0XTsKICAgICAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnRl
cnByZXRlci0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb24tPnUub3Bjb2RlKTsKICAgICAgICAgaWYg
KG9wY29kZUlEICE9IG9wX3Jlc3VtZSkgewotICAgICAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2Nr
KiBoYW5kbGVyQmxvY2sgPSBmaW5kQmFzaWNCbG9ja1dpdGhMZWFkZXJPZmZzZXQoYmFzaWNCbG9j
a3MsIGhhbmRsZXItPnRhcmdldCk7CisgICAgICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGhh
bmRsZXJCbG9jayA9IGZpbmRCYXNpY0Jsb2NrV2l0aExlYWRlck9mZnNldChncmFwaCwgaGFuZGxl
ci0+dGFyZ2V0KTsKICAgICAgICAgICAgIEFTU0VSVChoYW5kbGVyQmxvY2spOwogICAgICAgICAg
ICAgaGFuZGxlckJsb2NrLT5pbigpLmZvckVhY2hTZXRCaXQodXNlKTsKICAgICAgICAgfQogICAg
IH0KIH0KIAotc3RhdGljIHZvaWQgc3RlcE92ZXJJbnN0cnVjdGlvbihDb2RlQmxvY2sqIGNvZGVC
bG9jaywgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaywgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxC
eXRlY29kZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9ja3MsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0
LCBGYXN0Qml0VmVjdG9yJiBvdXQpCitzdGF0aWMgdm9pZCBzdGVwT3Zlckluc3RydWN0aW9uKENv
ZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29kZUdyYXBoPENvZGVCbG9jaz4mIGdyYXBoLCB1bnNp
Z25lZCBieXRlY29kZU9mZnNldCwgRmFzdEJpdFZlY3RvciYgb3V0KQogewogICAgIHN0ZXBPdmVy
SW5zdHJ1Y3Rpb24oCi0gICAgICAgIGNvZGVCbG9jaywgYmxvY2ssIGJhc2ljQmxvY2tzLCBieXRl
Y29kZU9mZnNldCwKKyAgICAgICAgY29kZUJsb2NrLCBncmFwaCwgYnl0ZWNvZGVPZmZzZXQsCiAg
ICAgICAgIFsmXSAodW5zaWduZWQgYml0SW5kZXgpIHsKICAgICAgICAgICAgIC8vIFRoaXMgaXMg
dGhlIHVzZSBmdW5jdG9yLCBzbyB3ZSBzZXQgdGhlIGJpdC4KICAgICAgICAgICAgIG91dC5zZXQo
Yml0SW5kZXgpOwpAQCAtMTYwLDcgKzE2MSw3IEBAIHN0YXRpYyB2b2lkIHN0ZXBPdmVySW5zdHJ1
Y3Rpb24oQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2ssCiAg
ICAgICAgIH0pOwogfQogCi1zdGF0aWMgdm9pZCBjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJ5dGVj
b2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2Nr
LCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+JiBiYXNpY0Jsb2Nr
cywgdW5zaWduZWQgdGFyZ2V0T2Zmc2V0LCBGYXN0Qml0VmVjdG9yJiByZXN1bHQpCitzdGF0aWMg
dm9pZCBjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29k
ZUJsb2NrLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrLCBCeXRlY29kZUdyYXBoPENvZGVCbG9j
az4mIGdyYXBoLCB1bnNpZ25lZCB0YXJnZXRPZmZzZXQsIEZhc3RCaXRWZWN0b3ImIHJlc3VsdCkK
IHsKICAgICBBU1NFUlQoIWJsb2NrLT5pc0V4aXRCbG9jaygpKTsKICAgICBBU1NFUlQoIWJsb2Nr
LT5pc0VudHJ5QmxvY2soKSk7CkBAIC0xNzIsNDQgKzE3Myw0NCBAQCBzdGF0aWMgdm9pZCBjb21w
dXRlTG9jYWxMaXZlbmVzc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBC
eXRlY29kZQogICAgICAgICBpZiAodGFyZ2V0T2Zmc2V0ID4gYnl0ZWNvZGVPZmZzZXQpCiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgCi0gICAgICAgIHN0ZXBPdmVySW5zdHJ1Y3Rpb24oY29k
ZUJsb2NrLCBibG9jaywgYmFzaWNCbG9ja3MsIGJ5dGVjb2RlT2Zmc2V0LCBvdXQpOworICAgICAg
ICBzdGVwT3Zlckluc3RydWN0aW9uKGNvZGVCbG9jaywgZ3JhcGgsIGJ5dGVjb2RlT2Zmc2V0LCBv
dXQpOwogICAgIH0KIAogICAgIHJlc3VsdC5zZXQob3V0KTsKIH0KIAotc3RhdGljIHZvaWQgY29t
cHV0ZUxvY2FsTGl2ZW5lc3NGb3JCbG9jayhDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVC
YXNpY0Jsb2NrKiBibG9jaywgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxv
Y2s+PiYgYmFzaWNCbG9ja3MpCitzdGF0aWMgdm9pZCBjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJs
b2NrKENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrLCBCeXRl
Y29kZUdyYXBoPENvZGVCbG9jaz4mIGdyYXBoKQogewogICAgIGlmIChibG9jay0+aXNFeGl0Qmxv
Y2soKSB8fCBibG9jay0+aXNFbnRyeUJsb2NrKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBjb21w
dXRlTG9jYWxMaXZlbmVzc0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9jaywgYmxvY2ssIGJhc2lj
QmxvY2tzLCBibG9jay0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKSwgYmxvY2stPmluKCkpOworICAg
IGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQnl0ZWNvZGVPZmZzZXQoY29kZUJsb2NrLCBibG9jaywg
Z3JhcGgsIGJsb2NrLT5sZWFkZXJCeXRlY29kZU9mZnNldCgpLCBibG9jay0+aW4oKSk7CiB9CiAK
IHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpydW5MaXZlbmVzc0ZpeHBvaW50KCkKIHsK
LSAgICBVbmxpbmtlZENvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2sgPSBtX2NvZGVCbG9jay0+
dW5saW5rZWRDb2RlQmxvY2soKTsKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IG1fZ3JhcGgu
Y29kZUJsb2NrKCk7CisgICAgVW5saW5rZWRDb2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrID0g
Y29kZUJsb2NrLT51bmxpbmtlZENvZGVCbG9jaygpOwogICAgIHVuc2lnbmVkIG51bWJlck9mVmFy
aWFibGVzID0gdW5saW5rZWRDb2RlQmxvY2stPm1fbnVtQ2FsbGVlTG9jYWxzOwogCi0gICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fYmFzaWNCbG9ja3Muc2l6ZSgpOyBpKyspIHsKLSAgICAg
ICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jayA9IG1fYmFzaWNCbG9ja3NbaV0uZ2V0KCk7Cisg
ICAgZm9yIChzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiYgYmxvY2sgOiBtX2dy
YXBoLmJhc2ljQmxvY2tzKCkpIHsKICAgICAgICAgYmxvY2stPmluKCkucmVzaXplKG51bWJlck9m
VmFyaWFibGVzKTsKICAgICAgICAgYmxvY2stPm91dCgpLnJlc2l6ZShudW1iZXJPZlZhcmlhYmxl
cyk7CiAgICAgfQogCiAgICAgYm9vbCBjaGFuZ2VkOwotICAgIG1fYmFzaWNCbG9ja3MubGFzdCgp
LT5pbigpLmNsZWFyQWxsKCk7Ci0gICAgbV9iYXNpY0Jsb2Nrcy5sYXN0KCktPm91dCgpLmNsZWFy
QWxsKCk7CisgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBsYXN0QmxvY2sgPSBtX2dyYXBoLmJhc2lj
QmxvY2tzKCkubGFzdCgpLmdldCgpOworICAgIGxhc3RCbG9jay0+aW4oKS5jbGVhckFsbCgpOwor
ICAgIGxhc3RCbG9jay0+b3V0KCkuY2xlYXJBbGwoKTsKICAgICBGYXN0Qml0VmVjdG9yIG5ld091
dDsKLSAgICBuZXdPdXQucmVzaXplKG1fYmFzaWNCbG9ja3MubGFzdCgpLT5vdXQoKS5udW1CaXRz
KCkpOworICAgIG5ld091dC5yZXNpemUobGFzdEJsb2NrLT5vdXQoKS5udW1CaXRzKCkpOwogICAg
IGRvIHsKICAgICAgICAgY2hhbmdlZCA9IGZhbHNlOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSBtX2Jhc2ljQmxvY2tzLnNpemUoKSAtIDE7IGktLTspIHsKLSAgICAgICAgICAgIEJ5dGVjb2Rl
QmFzaWNCbG9jayogYmxvY2sgPSBtX2Jhc2ljQmxvY2tzW2ldLmdldCgpOworICAgICAgICBmb3Ig
KHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+JiBibG9jayA6IG1fZ3JhcGguYmFz
aWNCbG9ja3NJblJldmVyc2VPcmRlcigpKSB7CiAgICAgICAgICAgICBuZXdPdXQuY2xlYXJBbGwo
KTsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaiA9IDA7IGogPCBibG9jay0+c3VjY2Vzc29y
cygpLnNpemUoKTsgaisrKQogICAgICAgICAgICAgICAgIG5ld091dC5tZXJnZShibG9jay0+c3Vj
Y2Vzc29ycygpW2pdLT5pbigpKTsKICAgICAgICAgICAgIGJvb2wgb3V0RGlkQ2hhbmdlID0gYmxv
Y2stPm91dCgpLnNldEFuZENoZWNrKG5ld091dCk7Ci0gICAgICAgICAgICBjb21wdXRlTG9jYWxM
aXZlbmVzc0ZvckJsb2NrKG1fY29kZUJsb2NrLCBibG9jaywgbV9iYXNpY0Jsb2Nrcyk7CisgICAg
ICAgICAgICBjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJsb2NrKGNvZGVCbG9jaywgYmxvY2suZ2V0
KCksIG1fZ3JhcGgpOwogICAgICAgICAgICAgY2hhbmdlZCB8PSBvdXREaWRDaGFuZ2U7CiAgICAg
ICAgIH0KICAgICB9IHdoaWxlIChjaGFuZ2VkKTsKQEAgLTIxNywxMiArMjE4LDEyIEBAIHZvaWQg
Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpydW5MaXZlbmVzc0ZpeHBvaW50KCkKIAogdm9pZCBC
eXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQo
dW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIEZhc3RCaXRWZWN0b3ImIHJlc3VsdCkKIHsKLSAgICBC
eXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrID0gZmluZEJhc2ljQmxvY2tGb3JCeXRlY29kZU9mZnNl
dChtX2Jhc2ljQmxvY2tzLCBieXRlY29kZU9mZnNldCk7CisgICAgQnl0ZWNvZGVCYXNpY0Jsb2Nr
KiBibG9jayA9IGZpbmRCYXNpY0Jsb2NrRm9yQnl0ZWNvZGVPZmZzZXQobV9ncmFwaCwgYnl0ZWNv
ZGVPZmZzZXQpOwogICAgIEFTU0VSVChibG9jayk7CiAgICAgQVNTRVJUKCFibG9jay0+aXNFbnRy
eUJsb2NrKCkpOwogICAgIEFTU0VSVCghYmxvY2stPmlzRXhpdEJsb2NrKCkpOwogICAgIHJlc3Vs
dC5yZXNpemUoYmxvY2stPm91dCgpLm51bUJpdHMoKSk7Ci0gICAgY29tcHV0ZUxvY2FsTGl2ZW5l
c3NGb3JCeXRlY29kZU9mZnNldChtX2NvZGVCbG9jaywgYmxvY2ssIG1fYmFzaWNCbG9ja3MsIGJ5
dGVjb2RlT2Zmc2V0LCByZXN1bHQpOworICAgIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQnl0ZWNv
ZGVPZmZzZXQobV9ncmFwaC5jb2RlQmxvY2soKSwgYmxvY2ssIG1fZ3JhcGgsIGJ5dGVjb2RlT2Zm
c2V0LCByZXN1bHQpOwogfQogCiBib29sIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6b3BlcmFu
ZElzTGl2ZUF0Qnl0ZWNvZGVPZmZzZXQoaW50IG9wZXJhbmQsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zm
c2V0KQpAQCAtMjQ0LDExICsyNDUsMTEgQEAgRmFzdEJpdFZlY3RvciBCeXRlY29kZUxpdmVuZXNz
QW5hbHlzaXM6OmdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQodW5zaWduZWQKIHZvaWQg
Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlRnVsbExpdmVuZXNzKEZ1bGxCeXRlY29k
ZUxpdmVuZXNzJiByZXN1bHQpCiB7CiAgICAgRmFzdEJpdFZlY3RvciBvdXQ7CisgICAgQ29kZUJs
b2NrKiBjb2RlQmxvY2sgPSBtX2dyYXBoLmNvZGVCbG9jaygpOwogICAgIAotICAgIHJlc3VsdC5t
X21hcC5yZXNpemUobV9jb2RlQmxvY2stPmluc3RydWN0aW9ucygpLnNpemUoKSk7CisgICAgcmVz
dWx0Lm1fbWFwLnJlc2l6ZShjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLnNpemUoKSk7CiAgICAg
Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gbV9iYXNpY0Jsb2Nrcy5zaXplKCk7IGktLTspIHsKLSAg
ICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jayA9IG1fYmFzaWNCbG9ja3NbaV0uZ2V0KCk7
CisgICAgZm9yIChzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiYgYmxvY2sgOiBt
X2dyYXBoLmJhc2ljQmxvY2tzSW5SZXZlcnNlT3JkZXIoKSkgewogICAgICAgICBpZiAoYmxvY2st
PmlzRW50cnlCbG9jaygpIHx8IGJsb2NrLT5pc0V4aXRCbG9jaygpKQogICAgICAgICAgICAgY29u
dGludWU7CiAgICAgICAgIApAQCAtMjU2LDcgKzI1Nyw3IEBAIHZvaWQgQnl0ZWNvZGVMaXZlbmVz
c0FuYWx5c2lzOjpjb21wdXRlRnVsbExpdmVuZXNzKEZ1bGxCeXRlY29kZUxpdmVuZXNzJiByZXN1
bHQpCiAgICAgICAgIAogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBibG9jay0+Ynl0ZWNvZGVP
ZmZzZXRzKCkuc2l6ZSgpOyBpLS07KSB7CiAgICAgICAgICAgICB1bnNpZ25lZCBieXRlY29kZU9m
ZnNldCA9IGJsb2NrLT5ieXRlY29kZU9mZnNldHMoKVtpXTsKLSAgICAgICAgICAgIHN0ZXBPdmVy
SW5zdHJ1Y3Rpb24obV9jb2RlQmxvY2ssIGJsb2NrLCBtX2Jhc2ljQmxvY2tzLCBieXRlY29kZU9m
ZnNldCwgb3V0KTsKKyAgICAgICAgICAgIHN0ZXBPdmVySW5zdHJ1Y3Rpb24oY29kZUJsb2NrLCBt
X2dyYXBoLCBieXRlY29kZU9mZnNldCwgb3V0KTsKICAgICAgICAgICAgIHJlc3VsdC5tX21hcFti
eXRlY29kZU9mZnNldF0gPSBvdXQ7CiAgICAgICAgIH0KICAgICB9CkBAIC0yNjYsMTEgKzI2Nywx
MSBAQCB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0ZUtpbGxzKEJ5dGVjb2Rl
S2lsbHMmIHJlc3VsdCkKIHsKICAgICBGYXN0Qml0VmVjdG9yIG91dDsKICAgICAKLSAgICByZXN1
bHQubV9jb2RlQmxvY2sgPSBtX2NvZGVCbG9jazsKLSAgICByZXN1bHQubV9raWxsU2V0cyA9IHN0
ZDo6bWFrZV91bmlxdWU8Qnl0ZWNvZGVLaWxsczo6S2lsbFNldFtdPihtX2NvZGVCbG9jay0+aW5z
dHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IG1fZ3JhcGgu
Y29kZUJsb2NrKCk7CisgICAgcmVzdWx0Lm1fY29kZUJsb2NrID0gY29kZUJsb2NrOworICAgIHJl
c3VsdC5tX2tpbGxTZXRzID0gc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZUtpbGxzOjpLaWxsU2V0
W10+KGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKICAgICAKLSAgICBmb3IgKHVu
c2lnbmVkIGkgPSBtX2Jhc2ljQmxvY2tzLnNpemUoKTsgaS0tOykgewotICAgICAgICBCeXRlY29k
ZUJhc2ljQmxvY2sqIGJsb2NrID0gbV9iYXNpY0Jsb2Nrc1tpXS5nZXQoKTsKKyAgICBmb3IgKHN0
ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+JiBibG9jayA6IG1fZ3JhcGguYmFzaWNC
bG9ja3NJblJldmVyc2VPcmRlcigpKSB7CiAgICAgICAgIGlmIChibG9jay0+aXNFbnRyeUJsb2Nr
KCkgfHwgYmxvY2stPmlzRXhpdEJsb2NrKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAg
ICAgCkBAIC0yNzksNyArMjgwLDcgQEAgdm9pZCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmNv
bXB1dGVLaWxscyhCeXRlY29kZUtpbGxzJiByZXN1bHQpCiAgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IGJsb2NrLT5ieXRlY29kZU9mZnNldHMoKS5zaXplKCk7IGktLTspIHsKICAgICAgICAgICAg
IHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0ID0gYmxvY2stPmJ5dGVjb2RlT2Zmc2V0cygpW2ldOwog
ICAgICAgICAgICAgc3RlcE92ZXJJbnN0cnVjdGlvbigKLSAgICAgICAgICAgICAgICBtX2NvZGVC
bG9jaywgYmxvY2ssIG1fYmFzaWNCbG9ja3MsIGJ5dGVjb2RlT2Zmc2V0LAorICAgICAgICAgICAg
ICAgIGNvZGVCbG9jaywgbV9ncmFwaCwgYnl0ZWNvZGVPZmZzZXQsCiAgICAgICAgICAgICAgICAg
WyZdICh1bnNpZ25lZCBpbmRleCkgewogICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIGZv
ciB1c2VzLgogICAgICAgICAgICAgICAgICAgICBpZiAob3V0LmdldChpbmRleCkpCkBAIC0yOTcs
MTIgKzI5OCwxMyBAQCB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0ZUtpbGxz
KEJ5dGVjb2RlS2lsbHMmIHJlc3VsdCkKIAogdm9pZCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6
OmR1bXBSZXN1bHRzKCkKIHsKLSAgICBkYXRhTG9nKCJcbkR1bXBpbmcgYnl0ZWNvZGUgbGl2ZW5l
c3MgZm9yICIsICptX2NvZGVCbG9jaywgIjpcbiIpOwotICAgIEludGVycHJldGVyKiBpbnRlcnBy
ZXRlciA9IG1fY29kZUJsb2NrLT52bSgpLT5pbnRlcnByZXRlcjsKLSAgICBJbnN0cnVjdGlvbiog
aW5zdHJ1Y3Rpb25zQmVnaW4gPSBtX2NvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsK
LSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9iYXNpY0Jsb2Nrcy5zaXplKCk7IGkrKykg
ewotICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrID0gbV9iYXNpY0Jsb2Nrc1tpXS5n
ZXQoKTsKLSAgICAgICAgZGF0YUxvZ0YoIlxuQnl0ZWNvZGUgYmFzaWMgYmxvY2sgJXU6ICVwIChv
ZmZzZXQ6ICV1LCBsZW5ndGg6ICV1KVxuIiwgaSwgYmxvY2ssIGJsb2NrLT5sZWFkZXJCeXRlY29k
ZU9mZnNldCgpLCBibG9jay0+dG90YWxCeXRlY29kZUxlbmd0aCgpKTsKKyAgICBDb2RlQmxvY2sq
IGNvZGVCbG9jayA9IG1fZ3JhcGguY29kZUJsb2NrKCk7CisgICAgZGF0YUxvZygiXG5EdW1waW5n
IGJ5dGVjb2RlIGxpdmVuZXNzIGZvciAiLCAqY29kZUJsb2NrLCAiOlxuIik7CisgICAgSW50ZXJw
cmV0ZXIqIGludGVycHJldGVyID0gY29kZUJsb2NrLT52bSgpLT5pbnRlcnByZXRlcjsKKyAgICBJ
bnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4gPSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygp
LmJlZ2luKCk7CisgICAgdW5zaWduZWQgaSA9IDA7CisgICAgZm9yIChzdGQ6OnVuaXF1ZV9wdHI8
Qnl0ZWNvZGVCYXNpY0Jsb2NrPiYgYmxvY2sgOiBtX2dyYXBoLmJhc2ljQmxvY2tzKCkpIHsKKyAg
ICAgICAgZGF0YUxvZ0YoIlxuQnl0ZWNvZGUgYmFzaWMgYmxvY2sgJXU6ICVwIChvZmZzZXQ6ICV1
LCBsZW5ndGg6ICV1KVxuIiwgaSsrLCBibG9jay5nZXQoKSwgYmxvY2stPmxlYWRlckJ5dGVjb2Rl
T2Zmc2V0KCksIGJsb2NrLT50b3RhbEJ5dGVjb2RlTGVuZ3RoKCkpOwogICAgICAgICBkYXRhTG9n
RigiU3VjY2Vzc29yczogIik7CiAgICAgICAgIGZvciAodW5zaWduZWQgaiA9IDA7IGogPCBibG9j
ay0+c3VjY2Vzc29ycygpLnNpemUoKTsgaisrKSB7CiAgICAgICAgICAgICBCeXRlY29kZUJhc2lj
QmxvY2sqIHN1Y2Nlc3NvciA9IGJsb2NrLT5zdWNjZXNzb3JzKClbal07CkBAIC0zMTAsMTEgKzMx
MiwxMSBAQCB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6ZHVtcFJlc3VsdHMoKQogICAg
ICAgICB9CiAgICAgICAgIGRhdGFMb2dGKCJcbiIpOwogICAgICAgICBpZiAoYmxvY2stPmlzRW50
cnlCbG9jaygpKSB7Ci0gICAgICAgICAgICBkYXRhTG9nRigiRW50cnkgYmxvY2sgJXBcbiIsIGJs
b2NrKTsKKyAgICAgICAgICAgIGRhdGFMb2dGKCJFbnRyeSBibG9jayAlcFxuIiwgYmxvY2suZ2V0
KCkpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGJsb2Nr
LT5pc0V4aXRCbG9jaygpKSB7Ci0gICAgICAgICAgICBkYXRhTG9nRigiRXhpdCBibG9jazogJXBc
biIsIGJsb2NrKTsKKyAgICAgICAgICAgIGRhdGFMb2dGKCJFeGl0IGJsb2NrOiAlcFxuIiwgYmxv
Y2suZ2V0KCkpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICAgICAgICAgZm9y
ICh1bnNpZ25lZCBieXRlY29kZU9mZnNldCA9IGJsb2NrLT5sZWFkZXJCeXRlY29kZU9mZnNldCgp
OyBieXRlY29kZU9mZnNldCA8IGJsb2NrLT5sZWFkZXJCeXRlY29kZU9mZnNldCgpICsgYmxvY2st
PnRvdGFsQnl0ZWNvZGVMZW5ndGgoKTspIHsKQEAgLTMyNyw3ICszMjksNyBAQCB2b2lkIEJ5dGVj
b2RlTGl2ZW5lc3NBbmFseXNpczo6ZHVtcFJlc3VsdHMoKQogICAgICAgICAgICAgICAgICAgICBk
YXRhTG9nRigiJXUgIiwgaik7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBkYXRhTG9nRigi
XG4iKTsKLSAgICAgICAgICAgIG1fY29kZUJsb2NrLT5kdW1wQnl0ZWNvZGUoV1RGOjpkYXRhRmls
ZSgpLCBtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKSwgaW5zdHJ1Y3Rp
b25zQmVnaW4sIGN1cnJlbnRJbnN0cnVjdGlvbik7CisgICAgICAgICAgICBjb2RlQmxvY2stPmR1
bXBCeXRlY29kZShXVEY6OmRhdGFGaWxlKCksIGNvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCktPmds
b2JhbEV4ZWMoKSwgaW5zdHJ1Y3Rpb25zQmVnaW4sIGN1cnJlbnRJbnN0cnVjdGlvbik7CiAKICAg
ICAgICAgICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGlu
c3RydWN0aW9uc0JlZ2luW2J5dGVjb2RlT2Zmc2V0XS51Lm9wY29kZSk7CiAgICAgICAgICAgICB1
bnNpZ25lZCBvcGNvZGVMZW5ndGggPSBvcGNvZGVMZW5ndGhzW29wY29kZUlEXTsKQEAgLTM0Niw4
ICszNDgsNiBAQCB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6ZHVtcFJlc3VsdHMoKQog
CiB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0ZSgpCiB7Ci0gICAgY29tcHV0
ZUJ5dGVjb2RlQmFzaWNCbG9ja3MobV9jb2RlQmxvY2ssIG1fYmFzaWNCbG9ja3MpOwotICAgIEFT
U0VSVChtX2Jhc2ljQmxvY2tzLnNpemUoKSk7CiAgICAgcnVuTGl2ZW5lc3NGaXhwb2ludCgpOwog
CiAgICAgaWYgKE9wdGlvbnM6OmR1bXBCeXRlY29kZUxpdmVuZXNzUmVzdWx0cygpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFs
eXNpcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NB
bmFseXNpcy5oCmluZGV4IGVjZTE2ZjIxZjAxNTEwYTY0MjdmZDg0MTE0MDc5YmVkODcwYzA4NzUu
LjA2MGU5ZWE4ODcwMTM4MzQxYWJhYWFiMmQzNDhhNWQ1ZDQzM2Y3MmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5
c2lzLmgKQEAgLTI3LDYgKzI3LDcgQEAKICNkZWZpbmUgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lz
X2gKIAogI2luY2x1ZGUgIkJ5dGVjb2RlQmFzaWNCbG9jay5oIgorI2luY2x1ZGUgIkJ5dGVjb2Rl
R3JhcGguaCIKICNpbmNsdWRlIDx3dGYvRmFzdEJpdFZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9I
YXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtMzQsMTQgKzM1LDEzIEBACiBu
YW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgQnl0ZWNvZGVLaWxsczsKLWNsYXNzIENvZGVCbG9jazsK
IGNsYXNzIEZ1bGxCeXRlY29kZUxpdmVuZXNzOwogCiBjbGFzcyBCeXRlY29kZUxpdmVuZXNzQW5h
bHlzaXMgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcyk7CiBwdWJsaWM6Ci0gICAgQnl0ZWNvZGVM
aXZlbmVzc0FuYWx5c2lzKENvZGVCbG9jayopOworICAgIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNp
cyhCeXRlY29kZUdyYXBoPENvZGVCbG9jaz4mKTsKICAgICAKICAgICBib29sIG9wZXJhbmRJc0xp
dmVBdEJ5dGVjb2RlT2Zmc2V0KGludCBvcGVyYW5kLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCk7
CiAgICAgRmFzdEJpdFZlY3RvciBnZXRMaXZlbmVzc0luZm9BdEJ5dGVjb2RlT2Zmc2V0KHVuc2ln
bmVkIGJ5dGVjb2RlT2Zmc2V0KTsKQEAgLTU2LDggKzU2LDcgQEAgY2xhc3MgQnl0ZWNvZGVMaXZl
bmVzc0FuYWx5c2lzIHsKIAogICAgIHZvaWQgZ2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29kZU9mZnNl
dCh1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgRmFzdEJpdFZlY3RvciYpOwogCi0gICAgQ29kZUJs
b2NrKiBtX2NvZGVCbG9jazsKLSAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFz
aWNCbG9jaz4+IG1fYmFzaWNCbG9ja3M7CisgICAgQnl0ZWNvZGVHcmFwaDxDb2RlQmxvY2s+JiBt
X2dyYXBoOwogfTsKIAogaW5saW5lIGJvb2wgb3BlcmFuZElzQWx3YXlzTGl2ZShpbnQgb3BlcmFu
ZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVV
c2VEZWYuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5o
CmluZGV4IDk4MWZiMWQwZmVjMDU3MDRkNWI3ZjY2ZWM0NDE4MjU3ZTgzYWFjMzYuLjM1YzNmNjQw
ZGQ3YjdmZTg2MzJmNTAxYjg0YjRiYjY2NTY4Mzc2OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCkBAIC0zMCwxOCArMzAsOSBAQAogCiBu
YW1lc3BhY2UgSlNDIHsKIAotdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KLXZvaWQgY29tcHV0
ZVVzZXNGb3JCeXRlY29kZU9mZnNldCgKLSAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNv
ZGVCYXNpY0Jsb2NrKiBibG9jaywgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIGNvbnN0IEZ1bmN0
b3ImIGZ1bmN0b3IpCit0ZW1wbGF0ZTx0eXBlbmFtZSBCbG9jaywgdHlwZW5hbWUgRnVuY3Rvciwg
dHlwZW5hbWUgSW5zdHJ1Y3Rpb24+Cit2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQo
QmxvY2sqIGNvZGVCbG9jaywgT3Bjb2RlSUQgb3Bjb2RlSUQsIEluc3RydWN0aW9uKiBpbnN0cnVj
dGlvbiwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikKIHsKLSAgICBJbnRlcnByZXRlciogaW50ZXJw
cmV0ZXIgPSBjb2RlQmxvY2stPnZtKCktPmludGVycHJldGVyOwotICAgIEluc3RydWN0aW9uKiBp
bnN0cnVjdGlvbnNCZWdpbiA9IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsKLSAg
ICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSAmaW5zdHJ1Y3Rpb25zQmVnaW5bYnl0ZWNvZGVP
ZmZzZXRdOwotICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0ZXItPmdldE9wY29kZUlE
KGluc3RydWN0aW9uLT51Lm9wY29kZSk7Ci0KLSAgICBpZiAob3Bjb2RlSUQgIT0gb3BfZW50ZXIg
JiYgY29kZUJsb2NrLT53YXNDb21waWxlZFdpdGhEZWJ1Z2dpbmdPcGNvZGVzKCkgJiYgY29kZUJs
b2NrLT5zY29wZVJlZ2lzdGVyKCkuaXNWYWxpZCgpKQotICAgICAgICBmdW5jdG9yKGNvZGVCbG9j
aywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBjb2RlQmxvY2stPnNjb3BlUmVnaXN0ZXIoKS5vZmZz
ZXQoKSk7Ci0KICAgICBzd2l0Y2ggKG9wY29kZUlEKSB7CiAgICAgLy8gTm8gdXNlcy4KICAgICBj
YXNlIG9wX25ld19yZWdleHA6CkBAIC02MCw2ICs1MSw3IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JC
eXRlY29kZU9mZnNldCgKICAgICBjYXNlIG9wX2NyZWF0ZV9jbG9uZWRfYXJndW1lbnRzOgogICAg
IGNhc2Ugb3BfZ2V0X3Jlc3RfbGVuZ3RoOgogICAgIGNhc2Ugb3Bfd2F0Y2hkb2c6CisgICAgY2Fz
ZSBvcF9uZXdfZ2VuZXJhdG9yX2ZyYW1lOgogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBvcF9h
c3NlcnQ6CiAgICAgY2FzZSBvcF9nZXRfc2NvcGU6CkBAIC03NSw4ICs2Nyw3IEBAIHZvaWQgY29t
cHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCgKICAgICBjYXNlIG9wX2puZXFfbnVsbDoKICAgICBj
YXNlIG9wX2RlYzoKICAgICBjYXNlIG9wX2luYzoKLSAgICBjYXNlIG9wX2xvZ19zaGFkb3dfY2hp
Y2tlbl9wcm9sb2d1ZToKLSAgICBjYXNlIG9wX3Jlc3VtZTogeworICAgIGNhc2Ugb3BfbG9nX3No
YWRvd19jaGlja2VuX3Byb2xvZ3VlOiB7CiAgICAgICAgIEFTU0VSVChvcGNvZGVMZW5ndGhzW29w
Y29kZUlEXSA+IDEpOwogICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9w
Y29kZUlELCBpbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOwogICAgICAgICByZXR1cm47CkBAIC0y
ODQsMjIgKzI3NSw2IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCgKICAgICAg
ICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGxhc3RBcmcg
KyBpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBjYXNlIG9wX3NhdmU6IHsKLSAgICAg
ICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb25b
MV0udS5vcGVyYW5kKTsKLSAgICAgICAgdW5zaWduZWQgbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0
ID0gYnl0ZWNvZGVPZmZzZXQgKyBpbnN0cnVjdGlvblszXS51Lm9wZXJhbmQ7Ci0gICAgICAgIEJ5
dGVjb2RlQmFzaWNCbG9jayogbWVyZ2VQb2ludEJsb2NrID0gbnVsbHB0cjsKLSAgICAgICAgZm9y
IChCeXRlY29kZUJhc2ljQmxvY2sqIHN1Y2Nlc3NvciA6IGJsb2NrLT5zdWNjZXNzb3JzKCkpIHsK
LSAgICAgICAgICAgIGlmIChzdWNjZXNzb3ItPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCkgPT0gbWVy
Z2VQb2ludEJ5dGVjb2RlT2Zmc2V0KSB7Ci0gICAgICAgICAgICAgICAgbWVyZ2VQb2ludEJsb2Nr
ID0gc3VjY2Vzc29yOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAg
ICAgICB9Ci0gICAgICAgIEFTU0VSVChtZXJnZVBvaW50QmxvY2spOwotICAgICAgICBtZXJnZVBv
aW50QmxvY2stPmluKCkuZm9yRWFjaFNldEJpdChbJl0odW5zaWduZWQgbG9jYWwpIHsKLSAgICAg
ICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIHZpcnR1YWxS
ZWdpc3RlckZvckxvY2FsKGxvY2FsKS5vZmZzZXQoKSk7Ci0gICAgICAgIH0pOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQogICAgIGRlZmF1bHQ6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgICAgIGJyZWFrOwpAQCAtMzA3LDEyICsyODIsNDEgQEAgdm9pZCBjb21w
dXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9y
Pgotdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2Nr
LCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgY29u
c3QgRnVuY3RvciYgZnVuY3RvcikKK3ZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldChD
b2RlQmxvY2sqIGNvZGVCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIGNvbnN0IEZ1bmN0
b3ImIGZ1bmN0b3IpCiB7CiAgICAgSW50ZXJwcmV0ZXIqIGludGVycHJldGVyID0gY29kZUJsb2Nr
LT52bSgpLT5pbnRlcnByZXRlcjsKICAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4g
PSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCk7CiAgICAgSW5zdHJ1Y3Rpb24qIGlu
c3RydWN0aW9uID0gJmluc3RydWN0aW9uc0JlZ2luW2J5dGVjb2RlT2Zmc2V0XTsKICAgICBPcGNv
ZGVJRCBvcGNvZGVJRCA9IGludGVycHJldGVyLT5nZXRPcGNvZGVJRChpbnN0cnVjdGlvbi0+dS5v
cGNvZGUpOworCisgICAgaWYgKG9wY29kZUlEICE9IG9wX2VudGVyICYmIGNvZGVCbG9jay0+d2Fz
Q29tcGlsZWRXaXRoRGVidWdnaW5nT3Bjb2RlcygpICYmIGNvZGVCbG9jay0+c2NvcGVSZWdpc3Rl
cigpLmlzVmFsaWQoKSkKKyAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBv
cGNvZGVJRCwgY29kZUJsb2NrLT5zY29wZVJlZ2lzdGVyKCkub2Zmc2V0KCkpOworCisgICAgLy8g
RklYTUU6IFRoZXNlIG9wX3NhdmUgLyBvcF9yZXN1bWUgd2lsbCBiZSByZW1vdmVkLgorICAgIHN3
aXRjaCAob3Bjb2RlSUQpIHsKKyAgICBjYXNlIG9wX3NhdmU6IHsKKyAgICAgICAgZnVuY3Rvcihj
b2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5k
KTsKKyAgICAgICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gaW5zdHJ1Y3Rpb25b
Ml0udS51bnNpZ25lZFZhbHVlOworICAgICAgICBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlbmVz
cyA9IGNvZGVCbG9jay0+bGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQobGl2ZUNhbGxlZUxvY2Fsc0lu
ZGV4KTsKKyAgICAgICAgbGl2ZW5lc3MuZm9yRWFjaFNldEJpdChbJl0odW5zaWduZWQgbG9jYWwp
IHsKKyAgICAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQs
IHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGxvY2FsKS5vZmZzZXQoKSk7CisgICAgICAgIH0pOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgY2FzZSBvcF9yZXN1bWU6CisgICAgICAgIGZ1
bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzFdLnUu
b3BlcmFuZCk7CisgICAgICAgIHJldHVybjsKKworICAgIGRlZmF1bHQ6CisgICAgICAgIGNvbXB1
dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoY29kZUJsb2NrLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb24s
IGZ1bmN0b3IpOworICAgICAgICByZXR1cm47CisgICAgfQorfQorCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBCbG9jaywgdHlwZW5hbWUgSW5zdHJ1Y3Rpb24sIHR5cGVuYW1lIEZ1bmN0b3I+Cit2b2lkIGNv
bXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQmxvY2sqIGNvZGVCbG9jaywgT3Bjb2RlSUQgb3Bj
b2RlSUQsIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikK
K3sKICAgICBzd2l0Y2ggKG9wY29kZUlEKSB7CiAgICAgLy8gVGhlc2UgZG9uJ3QgZGVmaW5lIGFu
eXRoaW5nLgogICAgIGNhc2Ugb3BfY29weV9yZXN0OgpAQCAtMzIwLDcgKzMyNCw2IEBAIHZvaWQg
Y29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNv
ZGVCYXNpY0Jsb2NrKiBibG9jCiAgICAgY2FzZSBvcF9lbmQ6CiAgICAgY2FzZSBvcF90aHJvdzoK
ICAgICBjYXNlIG9wX3Rocm93X3N0YXRpY19lcnJvcjoKLSAgICBjYXNlIG9wX3NhdmU6CiAgICAg
Y2FzZSBvcF9hc3NlcnQ6CiAgICAgY2FzZSBvcF9kZWJ1ZzoKICAgICBjYXNlIG9wX3JldDoKQEAg
LTQ1OSw4ICs0NjIsOSBAQCB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJs
b2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvYwogICAgIGNhc2Ugb3BfZGVs
X2J5X2lkOgogICAgIGNhc2Ugb3BfZGVsX2J5X3ZhbDoKICAgICBjYXNlIG9wX3Vuc2lnbmVkOgot
ICAgIGNhc2Ugb3BfZ2V0X2Zyb21fYXJndW1lbnRzOiAKLSAgICBjYXNlIG9wX2dldF9yZXN0X2xl
bmd0aDogeworICAgIGNhc2Ugb3BfZ2V0X2Zyb21fYXJndW1lbnRzOgorICAgIGNhc2Ugb3BfZ2V0
X3Jlc3RfbGVuZ3RoOgorICAgIGNhc2Ugb3BfbmV3X2dlbmVyYXRvcl9mcmFtZTogewogICAgICAg
ICBBU1NFUlQob3Bjb2RlTGVuZ3Roc1tvcGNvZGVJRF0gPiAxKTsKICAgICAgICAgZnVuY3Rvcihj
b2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5k
KTsKICAgICAgICAgcmV0dXJuOwpAQCAtNDc2LDE1ICs0ODAsMzggQEAgdm9pZCBjb21wdXRlRGVm
c0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29kZUJhc2ljQmxv
Y2sqIGJsb2MKICAgICAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bj
b2RlSUQsIHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGkpLm9mZnNldCgpKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KKyAgICBkZWZhdWx0OgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgICAgICByZXR1cm47CisgICAgfQorfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBG
dW5jdG9yPgordm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29k
ZUJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikK
K3sKKyAgICBJbnRlcnByZXRlciogaW50ZXJwcmV0ZXIgPSBjb2RlQmxvY2stPnZtKCktPmludGVy
cHJldGVyOworICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiA9IGNvZGVCbG9jay0+
aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsKKyAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSAm
aW5zdHJ1Y3Rpb25zQmVnaW5bYnl0ZWNvZGVPZmZzZXRdOworICAgIE9wY29kZUlEIG9wY29kZUlE
ID0gaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGluc3RydWN0aW9uLT51Lm9wY29kZSk7CisKKyAg
ICAvLyBGSVhNRTogVGhlc2Ugb3Bfc2F2ZSAvIG9wX3Jlc3VtZSB3aWxsIGJlIHJlbW92ZWQuCisg
ICAgc3dpdGNoIChvcGNvZGVJRCkgeworICAgIC8vIFRoZXNlIGRvbid0IGRlZmluZSBhbnl0aGlu
Zy4KKyAgICBjYXNlIG9wX3NhdmU6CisgICAgICAgIHJldHVybjsKKwogICAgIGNhc2Ugb3BfcmVz
dW1lOiB7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKGJsb2NrLT5zdWNjZXNzb3JzKCkuc2l6ZSgp
ID09IDEpOwotICAgICAgICAvLyBGSVhNRTogVGhpcyBpcyByZWFsbHkgZGlydHkuCi0gICAgICAg
IC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTkyODEKLSAgICAg
ICAgYmxvY2stPnN1Y2Nlc3NvcnMoKVswXS0+aW4oKS5mb3JFYWNoU2V0Qml0KFsmXSh1bnNpZ25l
ZCBsb2NhbCkgeworICAgICAgICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSBpbnN0
cnVjdGlvblsyXS51LnVuc2lnbmVkVmFsdWU7CisgICAgICAgIGNvbnN0IEZhc3RCaXRWZWN0b3Im
IGxpdmVuZXNzID0gY29kZUJsb2NrLT5saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZChsaXZlQ2FsbGVl
TG9jYWxzSW5kZXgpOworICAgICAgICBsaXZlbmVzcy5mb3JFYWNoU2V0Qml0KFsmXSh1bnNpZ25l
ZCBsb2NhbCkgewogICAgICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBv
cGNvZGVJRCwgdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwobG9jYWwpLm9mZnNldCgpKTsKICAgICAg
ICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CisKKyAgICBkZWZhdWx0OgorICAgICAgICBj
b21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9jaywgb3Bjb2RlSUQsIGluc3RydWN0
aW9uLCBmdW5jdG9yKTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCA4MDI5NGQyMWQ3MTEyOGQ2
ODZhYTBlOTBjNmFhY2VmMjhiODJjYjc5Li41Mjk5ODQ5ZjZhYmY4NjgzNGMxYjI3YTcwMjM0OWRi
NzBkMmQyMTY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmNwcApAQCAtMzIsNiArMzIsNyBAQAogCiAjaW5jbHVkZSAiQmFzaWNCbG9ja0xvY2F0aW9uLmgi
CiAjaW5jbHVkZSAiQnl0ZWNvZGVHZW5lcmF0b3IuaCIKKyNpbmNsdWRlICJCeXRlY29kZUdyYXBo
LmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVVc2VEZWYuaCIKICNpbmNsdWRlICJDYWxsTGlua1N0YXR1
cy5oIgogI2luY2x1ZGUgIkRGR0NhcGFiaWxpdGllcy5oIgpAQCAtMTY2MywzMCArMTY2NCwzNyBA
QCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKAogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KICAgICAgICAgY2FzZSBvcF9zYXZlOiB7Ci0gICAgICAgICAgICBpbnQgZ2VuZXJhdG9y
ID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBpbnQgZnJhbWUgPSAoKytpdCktPnUu
b3BlcmFuZDsKICAgICAgICAgICAgIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9ICgr
K2l0KS0+dS51bnNpZ25lZFZhbHVlOwogICAgICAgICAgICAgaW50IG9mZnNldCA9ICgrK2l0KS0+
dS5vcGVyYW5kOwogICAgICAgICAgICAgRmFzdEJpdFZlY3RvciBsaXZlbmVzczsKICAgICAgICAg
ICAgIGlmIChsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPCBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVM
b2NhbHNBdFlpZWxkLnNpemUoKSkKICAgICAgICAgICAgICAgICBsaXZlbmVzcyA9IG1fcmFyZURh
dGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGRbbGl2ZUNhbGxlZUxvY2Fsc0luZGV4XTsKICAg
ICAgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgInNh
dmUiKTsKLSAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAiLCByZWdpc3Rlck5hbWUoZ2VuZXJh
dG9yKS5kYXRhKCkpOworICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICIsIHJlZ2lzdGVyTmFt
ZShmcmFtZSkuZGF0YSgpKTsKICAgICAgICAgICAgIGxpdmVuZXNzLmR1bXAob3V0KTsKICAgICAg
ICAgICAgIG91dC5wcmludGYoIihAbGl2ZSUxdSksICVkKC0+JWQpIiwgbGl2ZUNhbGxlZUxvY2Fs
c0luZGV4LCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfcmVzdW1lOiB7Ci0gICAgICAgICAgICBpbnQgZ2Vu
ZXJhdG9yID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBpbnQgZnJhbWUgPSAoKytp
dCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRl
eCA9ICgrK2l0KS0+dS51bnNpZ25lZFZhbHVlOwogICAgICAgICAgICAgRmFzdEJpdFZlY3RvciBs
aXZlbmVzczsKICAgICAgICAgICAgIGlmIChsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPCBtX3JhcmVE
YXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkLnNpemUoKSkKICAgICAgICAgICAgICAgICBs
aXZlbmVzcyA9IG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGRbbGl2ZUNhbGxl
ZUxvY2Fsc0luZGV4XTsKICAgICAgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMs
IGxvY2F0aW9uLCBpdCwgInJlc3VtZSIpOwotICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICIs
IHJlZ2lzdGVyTmFtZShnZW5lcmF0b3IpLmRhdGEoKSk7CisgICAgICAgICAgICBvdXQucHJpbnRm
KCIlcywgIiwgcmVnaXN0ZXJOYW1lKGZyYW1lKS5kYXRhKCkpOwogICAgICAgICAgICAgbGl2ZW5l
c3MuZHVtcChvdXQpOwogICAgICAgICAgICAgb3V0LnByaW50ZigiKEBsaXZlJTF1KSIsIGxpdmVD
YWxsZWVMb2NhbHNJbmRleCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAgICAg
ICBjYXNlIG9wX25ld19nZW5lcmF0b3JfZnJhbWU6IHsKKyAgICAgICAgICAgIGludCBkc3QgPSAo
KytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIHVuc2lnbmVkIGdlbmVyYXRvckxvY2Fsc1Np
emUgPSAoKytpdCktPnUudW5zaWduZWRWYWx1ZTsKKyAgICAgICAgICAgIHByaW50TG9jYXRpb25P
cEFuZFJlZ2lzdGVyT3BlcmFuZChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgIm5ld19nZW5lcmF0
b3JfZnJhbWUiLCBkc3QpOworICAgICAgICAgICAgb3V0LnByaW50ZigiICV1IiwgZ2VuZXJhdG9y
TG9jYWxzU2l6ZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAgICBjYXNl
IG9wX2Fzc2VydDogewogICAgICAgICAgICAgaW50IGNvbmRpdGlvbiA9ICgrK2l0KS0+dS5vcGVy
YW5kOwogICAgICAgICAgICAgaW50IGxpbmUgPSAoKytpdCktPnUub3BlcmFuZDsKQEAgLTIwMjEs
NyArMjAyOSw3IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlw
dEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAgICAgICAgICAgICAgVW5s
aW5rZWRTdHJpbmdKdW1wVGFibGU6OlN0cmluZ09mZnNldFRhYmxlOjppdGVyYXRvciBlbmQgPSB1
bmxpbmtlZENvZGVCbG9jay0+c3RyaW5nU3dpdGNoSnVtcFRhYmxlKGkpLm9mZnNldFRhYmxlLmVu
ZCgpOwogICAgICAgICAgICAgICAgIGZvciAoOyBwdHIgIT0gZW5kOyArK3B0cikgewogICAgICAg
ICAgICAgICAgICAgICBPZmZzZXRMb2NhdGlvbiBvZmZzZXQ7Ci0gICAgICAgICAgICAgICAgICAg
IG9mZnNldC5icmFuY2hPZmZzZXQgPSBwdHItPnZhbHVlOworICAgICAgICAgICAgICAgICAgICBv
ZmZzZXQuYnJhbmNoT2Zmc2V0ID0gcHRyLT52YWx1ZS5icmFuY2hPZmZzZXQ7CiAgICAgICAgICAg
ICAgICAgICAgIG1fcmFyZURhdGEtPm1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlc1tpXS5vZmZzZXRU
YWJsZS5hZGQocHRyLT5rZXksIG9mZnNldCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgfQpAQCAtMjAzNiw2ICsyMDQ0LDggQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9u
KFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICAg
ICAgICAgICAgICBkZXN0VGFibGUubWluID0gc291cmNlVGFibGUubWluOwogICAgICAgICAgICAg
fQogICAgICAgICB9CisKKyAgICAgICAgbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZ
aWVsZCA9IHVubGlua2VkQ29kZUJsb2NrLT5saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZCgpOwogICAg
IH0KIAogICAgIC8vIEFsbG9jYXRlIG1ldGFkYXRhIGJ1ZmZlcnMgZm9yIHRoZSBieXRlY29kZQpA
QCAtMjA2MSw5ICsyMDcxLDYgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2
bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICAvLyBCb29r
a2VlcCB0aGUgc3Ryb25nbHkgcmVmZXJlbmNlZCBtb2R1bGUgZW52aXJvbm1lbnRzLgogICAgIEhh
c2hTZXQ8SlNNb2R1bGVFbnZpcm9ubWVudCo+IHN0cm9uZ2x5UmVmZXJlbmNlZE1vZHVsZUVudmly
b25tZW50czsKIAotICAgIC8vIEJvb2trZWVwIHRoZSBtZXJnZSBwb2ludCBieXRlY29kZSBvZmZz
ZXRzLgotICAgIFZlY3RvcjxzaXplX3Q+IG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldHM7Ci0KICAg
ICBSZWZDb3VudGVkQXJyYXk8SW5zdHJ1Y3Rpb24+IGluc3RydWN0aW9ucyhpbnN0cnVjdGlvbkNv
dW50KTsKIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7ICFpbnN0cnVjdGlvblJlYWRlci5hdEVu
ZCgpOyApIHsKQEAgLTIzNDYsMzkgKzIzNTMsMTYgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmlzaENy
ZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKLSAgICAgICAgY2FzZSBvcF9zYXZlOiB7
Ci0gICAgICAgICAgICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSBwY1syXS51Lmlu
ZGV4OwotICAgICAgICAgICAgaW50IG9mZnNldCA9IHBjWzNdLnUub3BlcmFuZDsKLSAgICAgICAg
ICAgIGlmIChsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPj0gbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0
cy5zaXplKCkpCi0gICAgICAgICAgICAgICAgbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0cy5yZXNp
emUobGl2ZUNhbGxlZUxvY2Fsc0luZGV4ICsgMSk7Ci0gICAgICAgICAgICBtZXJnZVBvaW50Qnl0
ZWNvZGVPZmZzZXRzW2xpdmVDYWxsZWVMb2NhbHNJbmRleF0gPSBpICsgb2Zmc2V0OwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLQogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgaSArPSBvcExlbmd0aDsKICAgICB9CiAKLSAgICBp
ZiAodm0uY29udHJvbEZsb3dQcm9maWxlcigpKQotICAgICAgICBpbnNlcnRCYXNpY0Jsb2NrQm91
bmRhcmllc0ZvckNvbnRyb2xGbG93UHJvZmlsZXIoaW5zdHJ1Y3Rpb25zKTsKLQogICAgIG1faW5z
dHJ1Y3Rpb25zID0gV1RGTW92ZShpbnN0cnVjdGlvbnMpOwogCi0gICAgLy8gUGVyZm9ybSBieXRl
Y29kZSBsaXZlbmVzcyBhbmFseXNpcyB0byBkZXRlcm1pbmUgd2hpY2ggbG9jYWxzIGFyZSBsaXZl
IGFuZCBzaG91bGQgYmUgcmVzdW1lZCB3aGVuIGV4ZWN1dGluZyBvcF9yZXN1bWUuCi0gICAgaWYg
KHVubGlua2VkQ29kZUJsb2NrLT5wYXJzZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVy
YXRvckJvZHlNb2RlKSB7Ci0gICAgICAgIGlmIChzaXplX3QgY291bnQgPSBtZXJnZVBvaW50Qnl0
ZWNvZGVPZmZzZXRzLnNpemUoKSkgewotICAgICAgICAgICAgY3JlYXRlUmFyZURhdGFJZk5lY2Vz
c2FyeSgpOwotICAgICAgICAgICAgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzIGxpdmVuZXNzKHRo
aXMpOwotICAgICAgICAgICAgbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZC5n
cm93KGNvdW50KTsKLSAgICAgICAgICAgIHNpemVfdCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSAw
OwotICAgICAgICAgICAgZm9yIChzaXplX3QgYnl0ZWNvZGVPZmZzZXQgOiBtZXJnZVBvaW50Qnl0
ZWNvZGVPZmZzZXRzKSB7Ci0gICAgICAgICAgICAgICAgbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVl
TG9jYWxzQXRZaWVsZFtsaXZlQ2FsbGVlTG9jYWxzSW5kZXhdID0gbGl2ZW5lc3MuZ2V0TGl2ZW5l
c3NJbmZvQXRCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCk7Ci0gICAgICAgICAgICAgICAg
KytsaXZlQ2FsbGVlTG9jYWxzSW5kZXg7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9
CisgICAgaWYgKHZtLmNvbnRyb2xGbG93UHJvZmlsZXIoKSkKKyAgICAgICAgaW5zZXJ0QmFzaWNC
bG9ja0JvdW5kYXJpZXNGb3JDb250cm9sRmxvd1Byb2ZpbGVyKG1faW5zdHJ1Y3Rpb25zKTsKIAog
ICAgIC8vIFNldCBvcHRpbWl6YXRpb24gdGhyZXNob2xkcyBvbmx5IGFmdGVyIG1faW5zdHJ1Y3Rp
b25zIGlzIGluaXRpYWxpemVkLCBzaW5jZSB0aGVzZQogICAgIC8vIHJlbHkgb24gdGhlIGluc3Ry
dWN0aW9uIGNvdW50IChhbmQgYXJlIGluIHRoZW9yeSBwZXJtaXR0ZWQgdG8gYWxzbyBpbnNwZWN0
IHRoZQpAQCAtNDI4Myw3ICs0MjY3LDggQEAgVmFsdWVQcm9maWxlKiBDb2RlQmxvY2s6OnZhbHVl
UHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KGludCBieXRlY29kZU9mZnNldCkKIAogdm9pZCBDb2Rl
QmxvY2s6OnZhbGlkYXRlKCkKIHsKLSAgICBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMgbGl2ZW5l
c3ModGhpcyk7IC8vIENvbXB1dGUgZGlyZWN0bHkgZnJvbSBzY3JhdGNoIHNvIGl0IGRvZXNuJ3Qg
ZWZmZWN0IENvZGVCbG9jayBmb290cHJpbnQuCisgICAgQnl0ZWNvZGVHcmFwaDxDb2RlQmxvY2s+
IGdyYXBoKHRoaXMsIGluc3RydWN0aW9ucygpLCBCeXRlY29kZUFuYWx5c2lzTW9kZTo6U3RhbmRh
cmQpOworICAgIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcyBsaXZlbmVzcyhncmFwaCk7IC8vIENv
bXB1dGUgZGlyZWN0bHkgZnJvbSBzY3JhdGNoIHNvIGl0IGRvZXNuJ3QgZWZmZWN0IENvZGVCbG9j
ayBmb290cHJpbnQuCiAgICAgCiAgICAgRmFzdEJpdFZlY3RvciBsaXZlQXRIZWFkID0gbGl2ZW5l
c3MuZ2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29kZU9mZnNldCgwKTsKICAgICAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAppbmRleCBiMjg4MzY1NGJlMzQ1ZTdhYjAx
MTBlYzFiNmY1ZDY5N2ExOGMyN2MyLi5iYzg5YjBhMmZkNzg5OGY5ZjI5NWVjNTQwMjgwZWJhYmIz
MDVmMmZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCkBA
IC0yMjAsMTAgKzIyMCw2IEBAIGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAg
ICAgICByZXR1cm4gaW5kZXggPj0gbV9udW1WYXJzOwogICAgIH0KIAotICAgIGVudW0gY2xhc3Mg
UmVxdWlyZWRIYW5kbGVyIHsKLSAgICAgICAgQ2F0Y2hIYW5kbGVyLAotICAgICAgICBBbnlIYW5k
bGVyCi0gICAgfTsKICAgICBIYW5kbGVySW5mbyogaGFuZGxlckZvckJ5dGVjb2RlT2Zmc2V0KHVu
c2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBSZXF1aXJlZEhhbmRsZXIgPSBSZXF1aXJlZEhhbmRsZXI6
OkFueUhhbmRsZXIpOwogICAgIEhhbmRsZXJJbmZvKiBoYW5kbGVyRm9ySW5kZXgodW5zaWduZWQs
IFJlcXVpcmVkSGFuZGxlciA9IFJlcXVpcmVkSGFuZGxlcjo6QW55SGFuZGxlcik7CiAgICAgdm9p
ZCByZW1vdmVFeGNlcHRpb25IYW5kbGVyRm9yQ2FsbFNpdGUoQ2FsbFNpdGVJbmRleCk7CkBAIC0y
OTUsNiArMjkxLDggQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgICAg
IHJldHVybiBzdGF0aWNfY2FzdDxJbnN0cnVjdGlvbio+KHJldHVybkFkZHJlc3MpIC0gaW5zdHJ1
Y3Rpb25zKCkuYmVnaW4oKTsKICAgICB9CiAKKyAgICB0eXBlZGVmIFJlZkNvdW50ZWRBcnJheTxJ
bnN0cnVjdGlvbj4mIFVucGFja2VkSW5zdHJ1Y3Rpb25zOworCiAgICAgdW5zaWduZWQgbnVtYmVy
T2ZJbnN0cnVjdGlvbnMoKSBjb25zdCB7IHJldHVybiBtX2luc3RydWN0aW9ucy5zaXplKCk7IH0K
ICAgICBSZWZDb3VudGVkQXJyYXk8SW5zdHJ1Y3Rpb24+JiBpbnN0cnVjdGlvbnMoKSB7IHJldHVy
biBtX2luc3RydWN0aW9uczsgfQogICAgIGNvbnN0IFJlZkNvdW50ZWRBcnJheTxJbnN0cnVjdGlv
bj4mIGluc3RydWN0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1faW5zdHJ1Y3Rpb25zOyB9CkBAIC01
ODgsMTIgKzU4NiwxNCBAQCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAg
ICAgICAgIGlmICghIW1fbGl2ZW5lc3NBbmFseXNpcykKICAgICAgICAgICAgICAgICByZXR1cm4g
Km1fbGl2ZW5lc3NBbmFseXNpczsKICAgICAgICAgfQotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8
Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzPiBhbmFseXNpcyA9Ci0gICAgICAgICAgICBzdGQ6Om1h
a2VfdW5pcXVlPEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcz4odGhpcyk7CisgICAgICAgIHN0ZDo6
dW5pcXVlX3B0cjxCeXRlY29kZUdyYXBoPENvZGVCbG9jaz4+IGdyYXBoID0gc3RkOjptYWtlX3Vu
aXF1ZTxCeXRlY29kZUdyYXBoPENvZGVCbG9jaz4+KHRoaXMsIGluc3RydWN0aW9ucygpLCBCeXRl
Y29kZUFuYWx5c2lzTW9kZTo6U3RhbmRhcmQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8Qnl0
ZWNvZGVMaXZlbmVzc0FuYWx5c2lzPiBhbmFseXNpcyA9IHN0ZDo6bWFrZV91bmlxdWU8Qnl0ZWNv
ZGVMaXZlbmVzc0FuYWx5c2lzPigqZ3JhcGgpOwogICAgICAgICB7CiAgICAgICAgICAgICBDb25j
dXJyZW50SklUTG9ja2VyIGxvY2tlcihtX2xvY2spOwotICAgICAgICAgICAgaWYgKCFtX2xpdmVu
ZXNzQW5hbHlzaXMpCisgICAgICAgICAgICBpZiAoIW1fbGl2ZW5lc3NBbmFseXNpcykgeworICAg
ICAgICAgICAgICAgIG1fYnl0ZWNvZGVHcmFwaCA9IFdURk1vdmUoZ3JhcGgpOwogICAgICAgICAg
ICAgICAgIG1fbGl2ZW5lc3NBbmFseXNpcyA9IFdURk1vdmUoYW5hbHlzaXMpOworICAgICAgICAg
ICAgfQogICAgICAgICAgICAgcmV0dXJuICptX2xpdmVuZXNzQW5hbHlzaXM7CiAgICAgICAgIH0K
ICAgICB9CkBAIC0xMDU2LDYgKzEwNTYsNyBAQCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlND
ZWxsIHsKIAogICAgIHN0ZDo6Y2hyb25vOjpzdGVhZHlfY2xvY2s6OnRpbWVfcG9pbnQgbV9jcmVh
dGlvblRpbWU7CiAKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVHcmFwaDxDb2RlQmxvY2s+
PiBtX2J5dGVjb2RlR3JhcGg7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlTGl2ZW5lc3NB
bmFseXNpcz4gbV9saXZlbmVzc0FuYWx5c2lzOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFJhcmVE
YXRhPiBtX3JhcmVEYXRhOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0hhbmRsZXJJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSGFuZGxl
ckluZm8uaAppbmRleCBhY2RkYTA4ZWQxNGNiZjlmMDk3MTI3NTA0MDVhNDE3NDFmNzZhMjEzLi40
MmQ4MThjOGFjNGNjYmFlY2E2MDU1ZjI2ZDY3YzNiOWVjMGFlN2IyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSGFuZGxlckluZm8uaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvSGFuZGxlckluZm8uaApAQCAtOTUsNiArOTUsMTEgQEAgc3Ry
dWN0IEhhbmRsZXJJbmZvIDogcHVibGljIEhhbmRsZXJJbmZvQmFzZSB7CiAjZW5kaWYKIH07CiAK
K2VudW0gY2xhc3MgUmVxdWlyZWRIYW5kbGVyIHsKKyAgICBDYXRjaEhhbmRsZXIsCisgICAgQW55
SGFuZGxlcgorfTsKKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBIYW5kbGVySW5m
b19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1
bXBUYXJnZXRzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVt
cFRhcmdldHMuY3BwCmluZGV4IGUyY2IwMDA0ODM3OTRiYTkyZDUxMGRjZjVmYTk5NDg4NWEyM2Rj
M2QuLjU2OGUzYjAwN2JkZmFmZmViMzc3OTVmMmQ1N2NmNzQ0Y2M3Y2JiOWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHMuY3Bw
CkBAIC0zMCwxMCArMzAsMjAgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLXRlbXBsYXRlIDxzaXpl
X3QgdmVjdG9yU2l6ZT4KLXN0YXRpYyB2b2lkIGdldEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZz
ZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEludGVycHJldGVyKiBpbnRlcnByZXRlciwgSW5zdHJ1
Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgVmVjdG9y
PHVuc2lnbmVkLCB2ZWN0b3JTaXplPiYgb3V0KQorc3RhdGljIE9wY29kZUlEIGdldE9wY29kZUlE
KEludGVycHJldGVyKiBpbnRlcnByZXRlciwgY29uc3QgSW5zdHJ1Y3Rpb24mIGluc3RydWN0aW9u
KQogewotICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGlu
c3RydWN0aW9uc0JlZ2luW2J5dGVjb2RlT2Zmc2V0XS51Lm9wY29kZSk7CisgICAgcmV0dXJuIGlu
dGVycHJldGVyLT5nZXRPcGNvZGVJRChpbnN0cnVjdGlvbi51Lm9wY29kZSk7Cit9CisKK3N0YXRp
YyBPcGNvZGVJRCBnZXRPcGNvZGVJRChJbnRlcnByZXRlciosIGNvbnN0IFVubGlua2VkSW5zdHJ1
Y3Rpb24mIGluc3RydWN0aW9uKQoreworICAgIHJldHVybiBpbnN0cnVjdGlvbi51Lm9wY29kZTsK
K30KKwordGVtcGxhdGUgPHNpemVfdCB2ZWN0b3JTaXplLCB0eXBlbmFtZSBCbG9jaywgdHlwZW5h
bWUgSW5zdHJ1Y3Rpb24+CitzdGF0aWMgdm9pZCBnZXRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zm
c2V0KEJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQW5hbHlzaXNNb2RlIGJ5dGVjb2RlQW5hbHlz
aXNNb2RlLCBJbnRlcnByZXRlciogaW50ZXJwcmV0ZXIsIEluc3RydWN0aW9uKiBpbnN0cnVjdGlv
bnNCZWdpbiwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIFZlY3Rvcjx1bnNpZ25lZCwgdmVjdG9y
U2l6ZT4mIG91dCkKK3sKKyAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGdldE9wY29kZUlEKGludGVy
cHJldGVyLCBpbnN0cnVjdGlvbnNCZWdpbltieXRlY29kZU9mZnNldF0pOwogICAgIEluc3RydWN0
aW9uKiBjdXJyZW50ID0gaW5zdHJ1Y3Rpb25zQmVnaW4gKyBieXRlY29kZU9mZnNldDsKICAgICBz
d2l0Y2ggKG9wY29kZUlEKSB7CiAgICAgY2FzZSBvcF9qbXA6CkBAIC01NCwyMSArNjQsMjYgQEAg
c3RhdGljIHZvaWQgZ2V0SnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNv
ZGVCbG9jaywgSW50ZXJwcmV0ZXIqIGkKICAgICBjYXNlIG9wX2pubGVzc2VxOgogICAgIGNhc2Ug
b3Bfam5ncmVhdGVyOgogICAgIGNhc2Ugb3Bfam5ncmVhdGVyZXE6Ci0gICAgY2FzZSBvcF9zYXZl
OiAvLyBUaGUganVtcCBvZiBvcF9zYXZlIGlzIHB1cmVseSBmb3IgY2FsY3VsYXRpbmcgbGl2ZW5l
c3MuCiAgICAgICAgIG91dC5hcHBlbmQoYnl0ZWNvZGVPZmZzZXQgKyBjdXJyZW50WzNdLnUub3Bl
cmFuZCk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2Ugb3Bfc2F2ZTogeworICAgICAgICAvLyBU
aGUganVtcCBvZiBvcF9zYXZlIHVuZGVyIEV4dHJhY3RHZW5lcmF0b3JMaXZlQ2FsbGVlTG9jYWxz
IG1vZGUgaXMgcHVyZWx5IGZvciBjYWxjdWxhdGluZyBsaXZlbmVzcy4KKyAgICAgICAgaWYgKGJ5
dGVjb2RlQW5hbHlzaXNNb2RlID09IEJ5dGVjb2RlQW5hbHlzaXNNb2RlOjpFeHRyYWN0R2VuZXJh
dG9yTGl2ZUNhbGxlZUxvY2FscykKKyAgICAgICAgICAgIG91dC5hcHBlbmQoYnl0ZWNvZGVPZmZz
ZXQgKyBjdXJyZW50WzNdLnUub3BlcmFuZCk7CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICBj
YXNlIG9wX3N3aXRjaF9pbW06CiAgICAgY2FzZSBvcF9zd2l0Y2hfY2hhcjogewotICAgICAgICBT
aW1wbGVKdW1wVGFibGUmIHRhYmxlID0gY29kZUJsb2NrLT5zd2l0Y2hKdW1wVGFibGUoY3VycmVu
dFsxXS51Lm9wZXJhbmQpOworICAgICAgICBhdXRvJiB0YWJsZSA9IGNvZGVCbG9jay0+c3dpdGNo
SnVtcFRhYmxlKGN1cnJlbnRbMV0udS5vcGVyYW5kKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gdGFibGUuYnJhbmNoT2Zmc2V0cy5zaXplKCk7IGktLTspCiAgICAgICAgICAgICBvdXQuYXBw
ZW5kKGJ5dGVjb2RlT2Zmc2V0ICsgdGFibGUuYnJhbmNoT2Zmc2V0c1tpXSk7CiAgICAgICAgIG91
dC5hcHBlbmQoYnl0ZWNvZGVPZmZzZXQgKyBjdXJyZW50WzJdLnUub3BlcmFuZCk7CiAgICAgICAg
IGJyZWFrOwogICAgIH0KICAgICBjYXNlIG9wX3N3aXRjaF9zdHJpbmc6IHsKLSAgICAgICAgU3Ry
aW5nSnVtcFRhYmxlJiB0YWJsZSA9IGNvZGVCbG9jay0+c3RyaW5nU3dpdGNoSnVtcFRhYmxlKGN1
cnJlbnRbMV0udS5vcGVyYW5kKTsKLSAgICAgICAgU3RyaW5nSnVtcFRhYmxlOjpTdHJpbmdPZmZz
ZXRUYWJsZTo6aXRlcmF0b3IgaXRlciA9IHRhYmxlLm9mZnNldFRhYmxlLmJlZ2luKCk7Ci0gICAg
ICAgIFN0cmluZ0p1bXBUYWJsZTo6U3RyaW5nT2Zmc2V0VGFibGU6Oml0ZXJhdG9yIGVuZCA9IHRh
YmxlLm9mZnNldFRhYmxlLmVuZCgpOworICAgICAgICBhdXRvJiB0YWJsZSA9IGNvZGVCbG9jay0+
c3RyaW5nU3dpdGNoSnVtcFRhYmxlKGN1cnJlbnRbMV0udS5vcGVyYW5kKTsKKyAgICAgICAgYXV0
byBpdGVyID0gdGFibGUub2Zmc2V0VGFibGUuYmVnaW4oKTsKKyAgICAgICAgYXV0byBlbmQgPSB0
YWJsZS5vZmZzZXRUYWJsZS5lbmQoKTsKICAgICAgICAgZm9yICg7IGl0ZXIgIT0gZW5kOyArK2l0
ZXIpCiAgICAgICAgICAgICBvdXQuYXBwZW5kKGJ5dGVjb2RlT2Zmc2V0ICsgaXRlci0+dmFsdWUu
YnJhbmNoT2Zmc2V0KTsKICAgICAgICAgb3V0LmFwcGVuZChieXRlY29kZU9mZnNldCArIGN1cnJl
bnRbMl0udS5vcGVyYW5kKTsKQEAgLTgyLDcgKzk3LDggQEAgc3RhdGljIHZvaWQgZ2V0SnVtcFRh
cmdldHNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgSW50ZXJwcmV0ZXIq
IGkKICAgICB9CiB9CiAKLXZvaWQgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhDb2RlQmxvY2sq
IGNvZGVCbG9jaywgVmVjdG9yPHVuc2lnbmVkLCAzMj4mIG91dCkKK3RlbXBsYXRlPHR5cGVuYW1l
IEJsb2NrLCB0eXBlbmFtZSBJbnN0cnVjdGlvbj4KK3ZvaWQgY29tcHV0ZVByZWNpc2VKdW1wVGFy
Z2V0c0ludGVybmFsKEJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQW5hbHlzaXNNb2RlIGJ5dGVj
b2RlQW5hbHlzaXNNb2RlLCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVk
IGluc3RydWN0aW9uQ291bnQsIFZlY3Rvcjx1bnNpZ25lZCwgMzI+JiBvdXQpCiB7CiAgICAgQVNT
RVJUKG91dC5pc0VtcHR5KCkpOwogICAgIApAQCAtOTgsMTEgKzExNCw5IEBAIHZvaWQgY29tcHV0
ZVByZWNpc2VKdW1wVGFyZ2V0cyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgVmVjdG9yPHVuc2lnbmVk
LCAzMj4mIG91dCkKICAgICB9CiAKICAgICBJbnRlcnByZXRlciogaW50ZXJwcmV0ZXIgPSBjb2Rl
QmxvY2stPnZtKCktPmludGVycHJldGVyOwotICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNC
ZWdpbiA9IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsKLSAgICB1bnNpZ25lZCBp
bnN0cnVjdGlvbkNvdW50ID0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5zaXplKCk7CiAgICAg
Zm9yICh1bnNpZ25lZCBieXRlY29kZU9mZnNldCA9IDA7IGJ5dGVjb2RlT2Zmc2V0IDwgaW5zdHJ1
Y3Rpb25Db3VudDspIHsKLSAgICAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnRlcnByZXRlci0+
Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25zQmVnaW5bYnl0ZWNvZGVPZmZzZXRdLnUub3Bjb2RlKTsK
LSAgICAgICAgZ2V0SnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChjb2RlQmxvY2ssIGludGVy
cHJldGVyLCBpbnN0cnVjdGlvbnNCZWdpbiwgYnl0ZWNvZGVPZmZzZXQsIG91dCk7CisgICAgICAg
IE9wY29kZUlEIG9wY29kZUlEID0gZ2V0T3Bjb2RlSUQoaW50ZXJwcmV0ZXIsIGluc3RydWN0aW9u
c0JlZ2luW2J5dGVjb2RlT2Zmc2V0XSk7CisgICAgICAgIGdldEp1bXBUYXJnZXRzRm9yQnl0ZWNv
ZGVPZmZzZXQoY29kZUJsb2NrLCBieXRlY29kZUFuYWx5c2lzTW9kZSwgaW50ZXJwcmV0ZXIsIGlu
c3RydWN0aW9uc0JlZ2luLCBieXRlY29kZU9mZnNldCwgb3V0KTsKICAgICAgICAgYnl0ZWNvZGVP
ZmZzZXQgKz0gb3Bjb2RlTGVuZ3Roc1tvcGNvZGVJRF07CiAgICAgfQogICAgIApAQCAtMTIzLDEx
ICsxMzcsMjkgQEAgdm9pZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKENvZGVCbG9jayogY29k
ZUJsb2NrLCBWZWN0b3I8dW5zaWduZWQsIDMyPiYgb3V0KQogICAgIG91dC5zaHJpbmtUb0ZpdCgp
OwogfQogCi12b2lkIGZpbmRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayog
Y29kZUJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgVmVjdG9yPHVuc2lnbmVkLCAxPiYg
b3V0KQordm9pZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKENvZGVCbG9jayogY29kZUJsb2Nr
LCBCeXRlY29kZUFuYWx5c2lzTW9kZSBieXRlY29kZUFuYWx5c2lzTW9kZSwgVmVjdG9yPHVuc2ln
bmVkLCAzMj4mIG91dCkKIHsKLSAgICBJbnRlcnByZXRlciogaW50ZXJwcmV0ZXIgPSBjb2RlQmxv
Y2stPnZtKCktPmludGVycHJldGVyOwotICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdp
biA9IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsKLSAgICBnZXRKdW1wVGFyZ2V0
c0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9jaywgaW50ZXJwcmV0ZXIsIGluc3RydWN0aW9uc0Jl
Z2luLCBieXRlY29kZU9mZnNldCwgb3V0KTsKKyAgICBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRz
SW50ZXJuYWwoY29kZUJsb2NrLCBieXRlY29kZUFuYWx5c2lzTW9kZSwgY29kZUJsb2NrLT5pbnN0
cnVjdGlvbnMoKS5iZWdpbigpLCBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLnNpemUoKSwgb3V0
KTsKK30KKwordm9pZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKENvZGVCbG9jayogY29kZUJs
b2NrLCBCeXRlY29kZUFuYWx5c2lzTW9kZSBieXRlY29kZUFuYWx5c2lzTW9kZSwgSW5zdHJ1Y3Rp
b24qIGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50LCBWZWN0b3I8
dW5zaWduZWQsIDMyPiYgb3V0KQoreworICAgIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHNJbnRl
cm5hbChjb2RlQmxvY2ssIGJ5dGVjb2RlQW5hbHlzaXNNb2RlLCBpbnN0cnVjdGlvbnNCZWdpbiwg
aW5zdHJ1Y3Rpb25Db3VudCwgb3V0KTsKK30KKwordm9pZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJn
ZXRzKFVubGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQW5hbHlzaXNNb2RlIGJ5
dGVjb2RlQW5hbHlzaXNNb2RlLCBVbmxpbmtlZEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdp
biwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCwgVmVjdG9yPHVuc2lnbmVkLCAzMj4mIG91dCkK
K3sKKyAgICBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzSW50ZXJuYWwoY29kZUJsb2NrLCBieXRl
Y29kZUFuYWx5c2lzTW9kZSwgaW5zdHJ1Y3Rpb25zQmVnaW4sIGluc3RydWN0aW9uQ291bnQsIG91
dCk7Cit9CisKK3ZvaWQgZmluZEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIEJ5dGVjb2RlQW5hbHlzaXNNb2RlIGJ5dGVjb2RlQW5hbHlzaXNNb2RlLCBJ
bnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBW
ZWN0b3I8dW5zaWduZWQsIDE+JiBvdXQpCit7CisgICAgZ2V0SnVtcFRhcmdldHNGb3JCeXRlY29k
ZU9mZnNldChjb2RlQmxvY2ssIGJ5dGVjb2RlQW5hbHlzaXNNb2RlLCBjb2RlQmxvY2stPnZtKCkt
PmludGVycHJldGVyLCBpbnN0cnVjdGlvbnNCZWdpbiwgYnl0ZWNvZGVPZmZzZXQsIG91dCk7Cit9
CisKK3ZvaWQgZmluZEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoVW5saW5rZWRDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVBbmFseXNpc01vZGUgYnl0ZWNvZGVBbmFseXNpc01vZGUs
IFVubGlua2VkSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBieXRlY29k
ZU9mZnNldCwgVmVjdG9yPHVuc2lnbmVkLCAxPiYgb3V0KQoreworICAgIGdldEp1bXBUYXJnZXRz
Rm9yQnl0ZWNvZGVPZmZzZXQoY29kZUJsb2NrLCBieXRlY29kZUFuYWx5c2lzTW9kZSwgY29kZUJs
b2NrLT52bSgpLT5pbnRlcnByZXRlciwgaW5zdHJ1Y3Rpb25zQmVnaW4sIGJ5dGVjb2RlT2Zmc2V0
LCBvdXQpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHMuaAppbmRleCA4NTI0MTNkNzdiNzk4
OTg0YjI3Y2VmMGVkNjJiYzk0YzY4OWUyMTJjLi5kZjAxMGM1NTI1NjdkNjJlOTU5Yzg2ZTIyNWVh
ZjViOWQ0YjU2Njc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
UHJlY2lzZUp1bXBUYXJnZXRzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1ByZWNpc2VKdW1wVGFyZ2V0cy5oCkBAIC0yNywxMyArMjcsMTcgQEAKICNkZWZpbmUgUHJlY2lz
ZUp1bXBUYXJnZXRzX2gKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIlVubGlu
a2VkQ29kZUJsb2NrLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCiAvLyBSZXR1cm4gYSBzb3J0ZWQg
bGlzdCBvZiBieXRlY29kZSBpbmRleCB0aGF0IGFyZSB0aGUgZGVzdGluYXRpb24gb2YgYSBqdW1w
Lgotdm9pZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKENvZGVCbG9jayosIFZlY3Rvcjx1bnNp
Z25lZCwgMzI+JiBvdXQpOwordm9pZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKENvZGVCbG9j
ayosIEJ5dGVjb2RlQW5hbHlzaXNNb2RlLCBWZWN0b3I8dW5zaWduZWQsIDMyPiYgb3V0KTsKK3Zv
aWQgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhDb2RlQmxvY2sqLCBCeXRlY29kZUFuYWx5c2lz
TW9kZSwgSW5zdHJ1Y3Rpb24qLCB1bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50LCBWZWN0b3I8dW5z
aWduZWQsIDMyPiYgb3V0KTsKK3ZvaWQgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhVbmxpbmtl
ZENvZGVCbG9jayosIEJ5dGVjb2RlQW5hbHlzaXNNb2RlLCBVbmxpbmtlZEluc3RydWN0aW9uKiwg
dW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCwgVmVjdG9yPHVuc2lnbmVkLCAzMj4mIG91dCk7CiAK
LXZvaWQgZmluZEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiwgdW5zaWdu
ZWQgYnl0ZWNvZGVPZmZzZXQsIFZlY3Rvcjx1bnNpZ25lZCwgMT4mIG91dCk7Cit2b2lkIGZpbmRK
dW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayosIEJ5dGVjb2RlQW5hbHlzaXNN
b2RlLCBJbnN0cnVjdGlvbiosIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBWZWN0b3I8dW5zaWdu
ZWQsIDE+JiBvdXQpOwordm9pZCBmaW5kSnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChVbmxp
bmtlZENvZGVCbG9jayosIEJ5dGVjb2RlQW5hbHlzaXNNb2RlLCBVbmxpbmtlZEluc3RydWN0aW9u
KiwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIFZlY3Rvcjx1bnNpZ25lZCwgMT4mIG91dCk7CiAK
IH0gLy8gbmFtZXNwYWNlIEpTQwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcAppbmRleCAyOTlhYzY4MGQ5YTFkMWU1YTkwZDlm
YWUxYTIyZjg0NGUyOTJlM2UyLi41ZjUyOWNjZmQ5OTE5MGVlZmFhZmY0M2U3MzdiM2Y4MjE1YTA0
ODU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRD
b2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Vbmxpbmtl
ZENvZGVCbG9jay5jcHAKQEAgLTM2Niw1ICszNjYsMzIgQEAgY29uc3QgVW5saW5rZWRJbnN0cnVj
dGlvblN0cmVhbSYgVW5saW5rZWRDb2RlQmxvY2s6Omluc3RydWN0aW9ucygpIGNvbnN0CiAgICAg
cmV0dXJuICptX3VubGlua2VkSW5zdHJ1Y3Rpb25zOwogfQogCitVbmxpbmtlZEhhbmRsZXJJbmZv
KiBVbmxpbmtlZENvZGVCbG9jazo6aGFuZGxlckZvckJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5
dGVjb2RlT2Zmc2V0LCBSZXF1aXJlZEhhbmRsZXIgcmVxdWlyZWRIYW5kbGVyKQoreworICAgIHJl
dHVybiBoYW5kbGVyRm9ySW5kZXgoYnl0ZWNvZGVPZmZzZXQsIHJlcXVpcmVkSGFuZGxlcik7Cit9
CisKKy8vIEZJWE1FOiBDb21wbGV0ZWx5IGR1cGxpY2F0ZS4KK1VubGlua2VkSGFuZGxlckluZm8q
IFVubGlua2VkQ29kZUJsb2NrOjpoYW5kbGVyRm9ySW5kZXgodW5zaWduZWQgaW5kZXgsIFJlcXVp
cmVkSGFuZGxlciByZXF1aXJlZEhhbmRsZXIpCit7CisgICAgaWYgKCFtX3JhcmVEYXRhKQorICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIFZlY3RvcjxVbmxpbmtlZEhhbmRsZXJJbmZvPiYg
ZXhjZXB0aW9uSGFuZGxlcnMgPSBtX3JhcmVEYXRhLT5tX2V4Y2VwdGlvbkhhbmRsZXJzOworICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZXhjZXB0aW9uSGFuZGxlcnMuc2l6ZSgpOyArK2kpIHsK
KyAgICAgICAgVW5saW5rZWRIYW5kbGVySW5mbyYgaGFuZGxlciA9IGV4Y2VwdGlvbkhhbmRsZXJz
W2ldOworICAgICAgICBpZiAoKHJlcXVpcmVkSGFuZGxlciA9PSBSZXF1aXJlZEhhbmRsZXI6OkNh
dGNoSGFuZGxlcikgJiYgIWhhbmRsZXIuaXNDYXRjaEhhbmRsZXIoKSkKKyAgICAgICAgICAgIGNv
bnRpbnVlOworCisgICAgICAgIC8vIEhhbmRsZXJzIGFyZSBvcmRlcmVkIGlubmVybW9zdCBmaXJz
dCwgc28gdGhlIGZpcnN0IGhhbmRsZXIgd2UgZW5jb3VudGVyCisgICAgICAgIC8vIHRoYXQgY29u
dGFpbnMgdGhlIHNvdXJjZSBhZGRyZXNzIGlzIHRoZSBjb3JyZWN0IGhhbmRsZXIgdG8gdXNlLgor
ICAgICAgICAvLyBUaGlzIGluZGV4IHVzZWQgaXMgZWl0aGVyIHRoZSBCeXRlY29kZU9mZnNldCBv
ciBhIENhbGxTaXRlSW5kZXguCisgICAgICAgIGlmIChoYW5kbGVyLnN0YXJ0IDw9IGluZGV4ICYm
IGhhbmRsZXIuZW5kID4gaW5kZXgpCisgICAgICAgICAgICByZXR1cm4gJmhhbmRsZXI7CisgICAg
fQorCisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAppbmRleCA5MWZkY2E0OGMxZTM5
ZThiZWZiMGM1ZmQ1NWZkOWJkOTFjMWYzNzA3Li4yMWY1MWRmZTIwYzZiN2M5NTdkZTViYjUyMGZi
YTQ4ZDUyMGM1MTUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
VW5saW5rZWRDb2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
VW5saW5rZWRDb2RlQmxvY2suaApAQCAtNjksNyArNjksMTEgQEAgdHlwZWRlZiB1bnNpZ25lZCBV
bmxpbmtlZE9iamVjdEFsbG9jYXRpb25Qcm9maWxlOwogdHlwZWRlZiB1bnNpZ25lZCBVbmxpbmtl
ZExMSW50Q2FsbExpbmtJbmZvOwogCiBzdHJ1Y3QgVW5saW5rZWRTdHJpbmdKdW1wVGFibGUgewot
ICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8U3RyaW5nSW1wbD4sIGludDMyX3Q+IFN0cmluZ09m
ZnNldFRhYmxlOworICAgIHN0cnVjdCBPZmZzZXRMb2NhdGlvbiB7CisgICAgICAgIGludDMyX3Qg
YnJhbmNoT2Zmc2V0OworICAgIH07CisKKyAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFN0cmlu
Z0ltcGw+LCBPZmZzZXRMb2NhdGlvbj4gU3RyaW5nT2Zmc2V0VGFibGU7CiAgICAgU3RyaW5nT2Zm
c2V0VGFibGUgb2Zmc2V0VGFibGU7CiAKICAgICBpbmxpbmUgaW50MzJfdCBvZmZzZXRGb3JWYWx1
ZShTdHJpbmdJbXBsKiB2YWx1ZSwgaW50MzJfdCBkZWZhdWx0T2Zmc2V0KQpAQCAtNzgsNyArODIs
NyBAQCBzdHJ1Y3QgVW5saW5rZWRTdHJpbmdKdW1wVGFibGUgewogICAgICAgICBTdHJpbmdPZmZz
ZXRUYWJsZTo6Y29uc3RfaXRlcmF0b3IgbG9jID0gb2Zmc2V0VGFibGUuZmluZCh2YWx1ZSk7CiAg
ICAgICAgIGlmIChsb2MgPT0gZW5kKQogICAgICAgICAgICAgcmV0dXJuIGRlZmF1bHRPZmZzZXQ7
Ci0gICAgICAgIHJldHVybiBsb2MtPnZhbHVlOworICAgICAgICByZXR1cm4gbG9jLT52YWx1ZS5i
cmFuY2hPZmZzZXQ7CiAgICAgfQogCiB9OwpAQCAtMTA2LDYgKzExMCw4IEBAIHN0cnVjdCBVbmxp
bmtlZEluc3RydWN0aW9uIHsKICAgICB9IHU7CiB9OwogCitjbGFzcyBCeXRlY29kZUdlbmVyYXRv
cmlmaWNhdGlvbjsKKwogY2xhc3MgVW5saW5rZWRDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsK
IHB1YmxpYzoKICAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOwpAQCAtMTE1LDYgKzEyMSw4IEBAIGNs
YXNzIFVubGlua2VkQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAKICAgICBlbnVtIHsgQ2Fs
bEZ1bmN0aW9uLCBBcHBseUZ1bmN0aW9uIH07CiAKKyAgICB0eXBlZGVmIFZlY3RvcjxVbmxpbmtl
ZEluc3RydWN0aW9uLCAwLCBVbnNhZmVWZWN0b3JPdmVyZmxvdz4gVW5wYWNrZWRJbnN0cnVjdGlv
bnM7CisKICAgICBib29sIGlzQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2lzQ29uc3Ry
dWN0b3I7IH0KICAgICBib29sIGlzU3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNTdHJp
Y3RNb2RlOyB9CiAgICAgYm9vbCB1c2VzRXZhbCgpIGNvbnN0IHsgcmV0dXJuIG1fdXNlc0V2YWw7
IH0KQEAgLTIwNCw2ICsyMTIsOSBAQCBjbGFzcyBVbmxpbmtlZENvZGVCbG9jayA6IHB1YmxpYyBK
U0NlbGwgewogICAgIHVuc2lnbmVkIGp1bXBUYXJnZXQoaW50IGluZGV4KSBjb25zdCB7IHJldHVy
biBtX2p1bXBUYXJnZXRzW2luZGV4XTsgfQogICAgIHVuc2lnbmVkIGxhc3RKdW1wVGFyZ2V0KCkg
Y29uc3QgeyByZXR1cm4gbV9qdW1wVGFyZ2V0cy5sYXN0KCk7IH0KIAorICAgIFVubGlua2VkSGFu
ZGxlckluZm8qIGhhbmRsZXJGb3JCeXRlY29kZU9mZnNldCh1bnNpZ25lZCBieXRlY29kZU9mZnNl
dCwgUmVxdWlyZWRIYW5kbGVyID0gUmVxdWlyZWRIYW5kbGVyOjpBbnlIYW5kbGVyKTsKKyAgICBV
bmxpbmtlZEhhbmRsZXJJbmZvKiBoYW5kbGVyRm9ySW5kZXgodW5zaWduZWQsIFJlcXVpcmVkSGFu
ZGxlciA9IFJlcXVpcmVkSGFuZGxlcjo6QW55SGFuZGxlcik7CisKICAgICBib29sIGlzQnVpbHRp
bkZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc0J1aWx0aW5GdW5jdGlvbjsgfQogCiAgICAg
Q29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19j
YXN0PENvbnN0cnVjdG9yS2luZD4obV9jb25zdHJ1Y3RvcktpbmQpOyB9CkBAIC0zNzQsNiArMzg1
LDEyIEBAIGNsYXNzIFVubGlua2VkQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgVHJp
U3RhdGUgZGlkT3B0aW1pemUoKSBjb25zdCB7IHJldHVybiBtX2RpZE9wdGltaXplOyB9CiAgICAg
dm9pZCBzZXREaWRPcHRpbWl6ZShUcmlTdGF0ZSBkaWRPcHRpbWl6ZSkgeyBtX2RpZE9wdGltaXpl
ID0gZGlkT3B0aW1pemU7IH0KIAorICAgIFZlY3RvcjxGYXN0Qml0VmVjdG9yPiYgbGl2ZUNhbGxl
ZUxvY2Fsc0F0WWllbGQoKQorICAgIHsKKyAgICAgICAgY3JlYXRlUmFyZURhdGFJZk5lY2Vzc2Fy
eSgpOworICAgICAgICByZXR1cm4gbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVs
ZDsKKyAgICB9CisKIHByb3RlY3RlZDoKICAgICBVbmxpbmtlZENvZGVCbG9jayhWTSosIFN0cnVj
dHVyZSosIENvZGVUeXBlLCBjb25zdCBFeGVjdXRhYmxlSW5mbyYsIERlYnVnZ2VyTW9kZSk7CiAg
ICAgflVubGlua2VkQ29kZUJsb2NrKCk7CkBAIC00NjAsNiArNDc3LDkgQEAgY2xhc3MgVW5saW5r
ZWRDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAgICAgVmVjdG9yPFVubGlua2VkU2lt
cGxlSnVtcFRhYmxlPiBtX3N3aXRjaEp1bXBUYWJsZXM7CiAgICAgICAgIFZlY3RvcjxVbmxpbmtl
ZFN0cmluZ0p1bXBUYWJsZT4gbV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzOwogCisgICAgICAgIC8v
IEZJWE1FOiBXZSB3aWxsIGRyb3AgdGhpcy4KKyAgICAgICAgVmVjdG9yPEZhc3RCaXRWZWN0b3I+
IG1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQ7CisKICAgICAgICAgVmVjdG9yPEV4cHJlc3Npb25S
YW5nZUluZm86OkZhdFBvc2l0aW9uPiBtX2V4cHJlc3Npb25JbmZvRmF0UG9zaXRpb25zOwogCiAg
ICAgICAgIHN0cnVjdCBUeXBlUHJvZmlsZXJFeHByZXNzaW9uUmFuZ2UgewpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNw
cAppbmRleCBiYzJhZmM2ZjhmYTFmYWZjOGIyYjZjMjU2NzEyY2IyN2YyNTA3OWJiLi4wMjA4ZWVj
YTczOWJjNmI5MTgzMGM0NDUyMTEwZTU2NjFjNDczZjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAt
MzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkJ5dGVjb2RlR2VuZXJhdG9yLmgiCiAKICNpbmNsdWRl
ICJCdWlsdGluRXhlY3V0YWJsZXMuaCIKKyNpbmNsdWRlICJCeXRlY29kZUdlbmVyYXRvcmlmaWNh
dGlvbi5oIgogI2luY2x1ZGUgIkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5oIgogI2luY2x1ZGUg
IkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgpAQCAtMTU0LDYgKzE1NSwx
MiBAQCBQYXJzZXJFcnJvciBCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUoKQogICAgICAgICBt
X2NvZGVCbG9jay0+YWRkRXhjZXB0aW9uSGFuZGxlcihpbmZvKTsKICAgICB9CiAgICAgCisKKyAg
ICBpZiAobV9jb2RlQmxvY2stPnBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJh
dG9yQm9keU1vZGUpIHsKKyAgICAgICAgQnl0ZWNvZGVHcmFwaDxVbmxpbmtlZENvZGVCbG9jaz4g
Z3JhcGgobV9jb2RlQmxvY2suZ2V0KCksIG1faW5zdHJ1Y3Rpb25zLCBCeXRlY29kZUFuYWx5c2lz
TW9kZTo6RXh0cmFjdEdlbmVyYXRvckxpdmVDYWxsZWVMb2NhbHMpOworICAgICAgICBwZXJmb3Jt
R2VuZXJhdG9yaWZpY2F0aW9uKGdyYXBoKTsKKyAgICB9CisKICAgICBtX2NvZGVCbG9jay0+c2V0
SW5zdHJ1Y3Rpb25zKHN0ZDo6bWFrZV91bmlxdWU8VW5saW5rZWRJbnN0cnVjdGlvblN0cmVhbT4o
bV9pbnN0cnVjdGlvbnMpKTsKIAogICAgIG1fY29kZUJsb2NrLT5zaHJpbmtUb0ZpdCgpOwpAQCAt
MjczLDcgKzI4MCw3IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYg
dm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtlCiAgICAgICAgIC8vICAgIGZ1
bmN0aW9uICpnZW4oYSwgYiA9IGhlbGxvKCkpCiAgICAgICAgIC8vICAgIHsKICAgICAgICAgLy8g
ICAgICAgIHJldHVybiB7Ci0gICAgICAgIC8vICAgICAgICAgICAgQGdlbmVyYXRvck5leHQ6IGZ1
bmN0aW9uIChAZ2VuZXJhdG9yLCBAZ2VuZXJhdG9yU3RhdGUsIEBnZW5lcmF0b3JWYWx1ZSwgQGdl
bmVyYXRvclJlc3VtZU1vZGUpCisgICAgICAgIC8vICAgICAgICAgICAgQGdlbmVyYXRvck5leHQ6
IGZ1bmN0aW9uIChAZ2VuZXJhdG9yLCBAZ2VuZXJhdG9yU3RhdGUsIEBnZW5lcmF0b3JWYWx1ZSwg
QGdlbmVyYXRvclJlc3VtZU1vZGUsIEBnZW5lcmF0b3JGcmFtZSkKICAgICAgICAgLy8gICAgICAg
ICAgICB7CiAgICAgICAgIC8vICAgICAgICAgICAgICAgIGFyZ3VtZW50czsgIC8vIFRoaXMgYGFy
Z3VtZW50c2Agc2hvdWxkIHJlZmVyZW5jZSB0byB0aGUgZ2VuJ3MgYXJndW1lbnRzLgogICAgICAg
ICAvLyAgICAgICAgICAgICAgICAuLi4KQEAgLTU1Miw2ICs1NTksOSBAQCBCeXRlY29kZUdlbmVy
YXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9k
ZSwgVW5saW5rZQogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JCb2R5TW9kZTog
ewogICAgICAgICAvLyB8dGhpc3wgaXMgYWxyZWFkeSBmaWxsZWQgY29ycmVjdGx5IGJlZm9yZSBo
ZXJlLgogICAgICAgICBlbWl0TG9hZChtX25ld1RhcmdldFJlZ2lzdGVyLCBqc1VuZGVmaW5lZCgp
KTsKKworICAgICAgICBlbWl0TmV3R2VuZXJhdG9yRnJhbWUoZ2VuZXJhdG9yRnJhbWVSZWdpc3Rl
cigpKTsKKyAgICAgICAgZW1pdFB1dEJ5SWQoZ2VuZXJhdG9yUmVnaXN0ZXIoKSwgcHJvcGVydHlO
YW1lcygpLmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvckZyYW1lUHJpdmF0ZU5hbWUoKSwgZ2VuZXJh
dG9yRnJhbWVSZWdpc3RlcigpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCkBAIC0zMDIxLDYg
KzMwMzEsMTQgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFNldEZ1bmN0aW9uTmFtZUlm
TmVlZGVkKEV4cHJlc3Npb25Ob2RlKiB2YWx1ZU5vZGUsIFIKICAgICBpbnN0cnVjdGlvbnMoKS5h
cHBlbmQobmFtZS0+aW5kZXgoKSk7CiB9CiAKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0TmV3R2VuZXJhdG9yRnJhbWUoUmVnaXN0ZXJJRCogZHN0KQoreworICAgIGVtaXRPcGNv
ZGUob3BfbmV3X2dlbmVyYXRvcl9mcmFtZSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGRz
dC0+aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDApOworICAgIHJldHVybiBk
c3Q7Cit9CisKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2FsbChSZWdpc3Rl
cklEKiBkc3QsIFJlZ2lzdGVySUQqIGZ1bmMsIEV4cGVjdGVkRnVuY3Rpb24gZXhwZWN0ZWRGdW5j
dGlvbiwgQ2FsbEFyZ3VtZW50cyYgY2FsbEFyZ3VtZW50cywgY29uc3QgSlNUZXh0UG9zaXRpb24m
IGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9z
aXRpb24mIGRpdm90RW5kKQogewogICAgIHJldHVybiBlbWl0Q2FsbChvcF9jYWxsLCBkc3QsIGZ1
bmMsIGV4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90LCBkaXZvdFN0YXJ0LCBk
aXZvdEVuZCk7CkBAIC0zOTQzLDcgKzM5NjEsNyBAQCBzdGF0aWMgdm9pZCBwcmVwYXJlSnVtcFRh
YmxlRm9yU3RyaW5nU3dpdGNoKFVubGlua2VkU3RyaW5nSnVtcFRhYmxlJiBqdW1wVGFibGUsCiAg
ICAgICAgIAogICAgICAgICBBU1NFUlQobm9kZXNbaV0tPmlzU3RyaW5nKCkpOwogICAgICAgICBT
dHJpbmdJbXBsKiBjbGF1c2UgPSBzdGF0aWNfY2FzdDxTdHJpbmdOb2RlKj4obm9kZXNbaV0pLT52
YWx1ZSgpLmltcGwoKTsKLSAgICAgICAganVtcFRhYmxlLm9mZnNldFRhYmxlLmFkZChjbGF1c2Us
IGxhYmVsc1tpXS0+YmluZChzd2l0Y2hBZGRyZXNzLCBzd2l0Y2hBZGRyZXNzICsgMykpOworICAg
ICAgICBqdW1wVGFibGUub2Zmc2V0VGFibGUuYWRkKGNsYXVzZSwgVW5saW5rZWRTdHJpbmdKdW1w
VGFibGU6Ok9mZnNldExvY2F0aW9uIHsgbGFiZWxzW2ldLT5iaW5kKHN3aXRjaEFkZHJlc3MsIHN3
aXRjaEFkZHJlc3MgKyAzKSB9KTsKICAgICB9CiB9CiAKQEAgLTQ0NjAsNyArNDQ3OCw3IEBAIHZv
aWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRTYXZlKExhYmVsKiBtZXJnZVBvaW50LCB1bnNpZ25l
ZCBsaXZlQ2FsbGVlTG9jYWxzSW5kCiB7CiAgICAgc2l6ZV90IGJlZ2luID0gaW5zdHJ1Y3Rpb25z
KCkuc2l6ZSgpOwogICAgIGVtaXRPcGNvZGUob3Bfc2F2ZSk7Ci0gICAgaW5zdHJ1Y3Rpb25zKCku
YXBwZW5kKG1fZ2VuZXJhdG9yUmVnaXN0ZXItPmluZGV4KCkpOworICAgIGluc3RydWN0aW9ucygp
LmFwcGVuZChnZW5lcmF0b3JGcmFtZVJlZ2lzdGVyKCktPmluZGV4KCkpOwogICAgIGluc3RydWN0
aW9ucygpLmFwcGVuZChsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpOwogICAgIGluc3RydWN0aW9ucygp
LmFwcGVuZChtZXJnZVBvaW50LT5iaW5kKGJlZ2luLCBpbnN0cnVjdGlvbnMoKS5zaXplKCkpKTsK
IH0KQEAgLTQ0NjksNyArNDQ4Nyw3IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXN1
bWUoTGFiZWwqIG1lcmdlUG9pbnQsIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJCiB7CiAgICAg
ZW1pdEdlbmVyYXRvclN0YXRlTGFiZWwoKTsKICAgICBlbWl0T3Bjb2RlKG9wX3Jlc3VtZSk7Ci0g
ICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fZ2VuZXJhdG9yUmVnaXN0ZXItPmluZGV4KCkpOwor
ICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChnZW5lcmF0b3JGcmFtZVJlZ2lzdGVyKCktPmluZGV4
KCkpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpOwog
ICAgIGVtaXRMYWJlbChtZXJnZVBvaW50KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAppbmRleCBkNzk5YjE4OTQw
YWQ4MjBjNmM4NGJkZjMyOGIxMzMyNjEzOTRiOGRkLi4yNTA2NzAzNGVkYjVhZDU1MTgwOWY4ZjJm
ZTc2ZTE4MzNkZWE2YzBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCkBAIC01MzMsNiArNTMzLDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdBcnJvd0Z1bmN0aW9uRXhwcmVz
c2lvbihSZWdpc3RlcklEKiwgQXJyb3dGdW5jRXhwck5vZGUqKTsKICAgICAgICAgUmVnaXN0ZXJJ
RCogZW1pdE5ld01ldGhvZERlZmluaXRpb24oUmVnaXN0ZXJJRCogZHN0LCBNZXRob2REZWZpbml0
aW9uTm9kZSopOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0TmV3UmVnRXhwKFJlZ2lzdGVySUQq
IGRzdCwgUmVnRXhwKik7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdHZW5lcmF0b3JGcmFt
ZShSZWdpc3RlcklEKiBkc3QpOwogCiAgICAgICAgIHZvaWQgZW1pdFNldEZ1bmN0aW9uTmFtZUlm
TmVlZGVkKEV4cHJlc3Npb25Ob2RlKiB2YWx1ZU5vZGUsIFJlZ2lzdGVySUQqIHZhbHVlLCBSZWdp
c3RlcklEKiBuYW1lKTsKIApAQCAtNzA1LDYgKzcwNiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICBSZWdpc3RlcklEKiBnZW5lcmF0b3JTdGF0ZVJlZ2lzdGVyKCkgeyByZXR1cm4gJm1fcGFy
YW1ldGVyc1syXTsgfQogICAgICAgICBSZWdpc3RlcklEKiBnZW5lcmF0b3JWYWx1ZVJlZ2lzdGVy
KCkgeyByZXR1cm4gJm1fcGFyYW1ldGVyc1szXTsgfQogICAgICAgICBSZWdpc3RlcklEKiBnZW5l
cmF0b3JSZXN1bWVNb2RlUmVnaXN0ZXIoKSB7IHJldHVybiAmbV9wYXJhbWV0ZXJzWzRdOyB9Cisg
ICAgICAgIFJlZ2lzdGVySUQqIGdlbmVyYXRvckZyYW1lUmVnaXN0ZXIoKSB7IHJldHVybiAmbV9w
YXJhbWV0ZXJzWzVdOyB9CiAKICAgICAgICAgQ29kZVR5cGUgY29kZVR5cGUoKSBjb25zdCB7IHJl
dHVybiBtX2NvZGVUeXBlOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQWJzdHJhY3RIZWFwLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3Ry
YWN0SGVhcC5oCmluZGV4IGFmZTEwYzQ5NjQzMTI5YzdiMTFlODIwYmU0OWU2MDZlZjczODkxNjUu
LjRkZWJmOTMyZTlhNGJhMmY3ZTVhNjg3MzRlYTJmOWU4MTAwMjA3ODQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RIZWFwLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEhlYXAuaApAQCAtNjksNiArNjksOCBAQCBuYW1l
c3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oU2NvcGVQcm9wZXJ0aWVzKSBc
CiAgICAgbWFjcm8oVHlwZWRBcnJheVByb3BlcnRpZXMpIFwKICAgICBtYWNybyhIZWFwT2JqZWN0
Q291bnQpIC8qIFVzZWQgdG8gcmVmbGVjdCB0aGUgZmFjdCB0aGF0IHNvbWUgYWxsb2NhdGlvbnMg
cmV2ZWFsIG9iamVjdCBpZGVudGl0eSAqL1wKKyAgICBtYWNybyhHZW5lcmF0b3JMb2NhbHMpIFwK
KyAgICBtYWNybyhHZW5lcmF0b3JMb2NhbENvdW50KSBcCiAgICAgbWFjcm8oUmVnRXhwU3RhdGUp
IFwKICAgICBtYWNybyhNYXRoRG90UmFuZG9tU3RhdGUpIFwKICAgICBtYWNybyhJbnRlcm5hbFN0
YXRlKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0
SW50ZXJwcmV0ZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3Ry
YWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKaW5kZXggZWJkYzc5YzYwZjZmMmY2ZDkwNjNlYTE2YzRj
Mjg2YzQ1NTNhMTAwMy4uYTNjZWZkZDNhZGI3ZTIxNTlmMjk4NDEzZmE0YWVmNTExY2ExNjkyMCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJl
dGVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJ
bnRlcnByZXRlcklubGluZXMuaApAQCAtMTkyNSw2ICsxOTI1LDEwIEBAIGJvb2wgQWJzdHJhY3RJ
bnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNs
b2JiZXJMaW1pCiAgICAgY2FzZSBOZXdSZWdleHA6CiAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0
KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYykt
PnJlZ0V4cFN0cnVjdHVyZSgpKTsKICAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIE5ld0dlbmVy
YXRvckZyYW1lOgorICAgICAgICBmb3JOb2RlKG5vZGUpLnNldChtX2dyYXBoLCBtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5nZW5lcmF0b3JGcmFtZVN0cnVj
dHVyZSgpKTsKKyAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICBjYXNlIFRvVGhpczog
ewogICAgICAgICBBYnN0cmFjdFZhbHVlJiBzb3VyY2UgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgp
KTsKQEAgLTI4MzksNiArMjg0MywxNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJh
Y3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAg
ICBmb3JOb2RlKG5vZGUpLm1ha2VIZWFwVG9wKCk7CiAgICAgICAgIGJyZWFrOwogCisgICAgY2Fz
ZSBTZXRHZW5lcmF0b3JMb2NhbDoKKyAgICBjYXNlIFJlc2l6ZUdlbmVyYXRvckxvY2FsczoKKyAg
ICAgICAgYnJlYWs7CisKKyAgICBjYXNlIEdldEdlbmVyYXRvckxvY2FsOiB7CisgICAgICAgIC8v
IEZJWE1FOiBXZSBzaG91bGQgYXR0ZW1wdCB0byBjb252ZXJ0IGl0IHRvIGNvbnN0YW50LgorICAg
ICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUzMTgzCisg
ICAgICAgIGZvck5vZGUobm9kZSkubWFrZUJ5dGVjb2RlVG9wKCk7CisgICAgICAgIGJyZWFrOwor
ICAgIH0KKwogICAgIGNhc2UgRm9yY2VPU1JFeGl0OgogICAgIGNhc2UgQ2hlY2tCYWRDZWxsOgog
ICAgICAgICBtX3N0YXRlLnNldElzVmFsaWQoZmFsc2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRleCBiYzIyNDQ3YzEwYTdjYjhhYjQ0
MDNlYmY1MWU3YTVlODJiYzgzYzdlLi40MDdlMzA4MTY1MWJlYTlkMGMzZDNmNTJmNmZhOTE3MzE0
MTFjODZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2Rl
UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFy
c2VyLmNwcApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIkRGR0NhcGFiaWxpdGllcy5oIgog
I2luY2x1ZGUgIkRGR0Nsb2JiZXJpemUuaCIKICNpbmNsdWRlICJERkdDbG9iYmVyc0V4aXRTdGF0
ZS5oIgorI2luY2x1ZGUgIkRGR0dlbmVyYXRvckxvY2FsRGF0YS5oIgogI2luY2x1ZGUgIkRGR0dy
YXBoLmgiCiAjaW5jbHVkZSAiREZHSklUQ29kZS5oIgogI2luY2x1ZGUgIkdldEJ5SWRTdGF0dXMu
aCIKQEAgLTEwMDQsNiArMTAwNSwxMSBAQCBjbGFzcyBCeXRlQ29kZVBhcnNlciB7CiAgICAgfQog
CiAgICAgYm9vbCBuZWVkc0R5bmFtaWNMb29rdXAoUmVzb2x2ZVR5cGUsIE9wY29kZUlEKTsKKwor
ICAgIEdlbmVyYXRvckxvY2FsRGF0YSogbmV3R2VuZXJhdG9yTG9jYWxEYXRhKCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBtX2dyYXBoLm1fZ2VuZXJhdG9yTG9jYWxEYXRhLmFkZCgpOworICAgIH0K
ICAgICAKICAgICBWTSogbV92bTsKICAgICBDb2RlQmxvY2sqIG1fY29kZUJsb2NrOwpAQCAtMTA5
Miw2ICsxMDk4LDExIEBAIGNsYXNzIEJ5dGVDb2RlUGFyc2VyIHsKICAgICAgICAgQ2FsbExpbmtJ
bmZvTWFwIG1fY2FsbExpbmtJbmZvczsKICAgICAgICAgU3R1YkluZm9NYXAgbV9zdHViSW5mb3M7
CiAgICAgICAgIEJ5VmFsSW5mb01hcCBtX2J5VmFsSW5mb3M7CisKKyAgICAgICAgLy8gU2luY2Ug
dGhlIG9wX3Jlc3VtZSBpcyBlbWl0dGVkIGFmdGVyIHRoZSBjb3JyZXNwb25kaW5nIG9wX3NhdmUK
KyAgICAgICAgLy8gYW5kIHRoZXJlIGlzIG5vIG90aGVyIG9wX3Jlc3VtZSBhbmQgb3Bfc2F2ZSBi
ZXR3ZWVuIHRoZW0sCisgICAgICAgIC8vIHdlIGNhbiB0cmFjayB0aGVzZSBjb3JyZXNwb25kZW5j
ZSBieSBqdXN0IHRyYWNraW5nIGN1cnJlbnRseSBmb2N1c2luZyBvcF9zYXZlLgorICAgICAgICBP
cGVyYW5kczxHZW5lcmF0b3JMb2NhbERhdGEqPiBtX2dlbmVyYXRvckxvY2FsczsKICAgICAgICAg
CiAgICAgICAgIC8vIERpZCB3ZSBzZWUgYW55IHJldHVybnM/IFdlIG5lZWQgdG8gaGFuZGxlIHRo
ZSAodW5jb21tb24gYnV0IG5lY2Vzc2FyeSkKICAgICAgICAgLy8gY2FzZSB3aGVyZSBhIHByb2Nl
ZHVyZSB0aGF0IGRvZXMgbm90IHJldHVybiB3YXMgaW5saW5lZC4KQEAgLTM2NzYsNiArMzY4Nywx
MSBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAg
ICAgICAgICAgTkVYVF9PUENPREUob3BfbmV3X3JlZ2V4cCk7CiAgICAgICAgIH0KIAorICAgICAg
ICBjYXNlIG9wX25ld19nZW5lcmF0b3JfZnJhbWU6IHsKKyAgICAgICAgICAgIHNldChWaXJ0dWFs
UmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCksIGFkZFRvR3JhcGgoTmV3
R2VuZXJhdG9yRnJhbWUsIE9wSW5mbyhjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS51bnNpZ25lZFZh
bHVlKSkpOworICAgICAgICAgICAgTkVYVF9PUENPREUob3BfbmV3X2dlbmVyYXRvcl9mcmFtZSk7
CisgICAgICAgIH0KKwogICAgICAgICBjYXNlIG9wX2dldF9yZXN0X2xlbmd0aDogewogICAgICAg
ICAgICAgSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUgPSB0aGlzLT5pbmxpbmVDYWxs
RnJhbWUoKTsKICAgICAgICAgICAgIE5vZGUqIGxlbmd0aDsKQEAgLTM3MDMsNiArMzcxOSw0MSBA
QCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAg
ICAgICAgICAgIGFycmF5LCBhcnJheUxlbmd0aCk7CiAgICAgICAgICAgICBORVhUX09QQ09ERShv
cF9jb3B5X3Jlc3QpOwogICAgICAgICB9CisKKyAgICAgICAgY2FzZSBvcF9zYXZlOiB7CisgICAg
ICAgICAgICBOb2RlKiBmcmFtZSA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0
aW9uWzFdLnUub3BlcmFuZCkpOworICAgICAgICAgICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fs
c0luZGV4ID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUudW5zaWduZWRWYWx1ZTsKKyAgICAgICAg
ICAgIGNvbnN0IEZhc3RCaXRWZWN0b3ImIGxpdmVuZXNzID0gbV9pbmxpbmVTdGFja1RvcC0+bV9j
b2RlQmxvY2stPmxpdmVDYWxsZWVMb2NhbHNBdFlpZWxkKGxpdmVDYWxsZWVMb2NhbHNJbmRleCk7
CisKKyAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fZ2VuZXJhdG9yTG9jYWxzID0gT3Bl
cmFuZHM8R2VuZXJhdG9yTG9jYWxEYXRhKj4obV9udW1Bcmd1bWVudHMsIG1fbnVtTG9jYWxzKTsK
KworICAgICAgICAgICAgYWRkVG9HcmFwaChSZXNpemVHZW5lcmF0b3JMb2NhbHMsIE9wSW5mbyhs
aXZlbmVzcy5iaXRDb3VudCgpKSwgZnJhbWUpOworICAgICAgICAgICAgdW5zaWduZWQgZ2VuZXJh
dG9yTG9jYWxJbmRleCA9IDA7CisgICAgICAgICAgICBsaXZlbmVzcy5mb3JFYWNoU2V0Qml0KFsm
XShzaXplX3QgaW5kZXgpIHsKKyAgICAgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFu
ZCA9IHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGluZGV4KTsKKyAgICAgICAgICAgICAgICBWaXJ0
dWFsUmVnaXN0ZXIgcmVtYXBwZWRPcGVyYW5kID0gbV9pbmxpbmVTdGFja1RvcC0+cmVtYXBPcGVy
YW5kKG9wZXJhbmQpOworICAgICAgICAgICAgICAgIE5vZGUqIGxvY2FsID0gZ2V0KG9wZXJhbmQp
OworICAgICAgICAgICAgICAgIEdlbmVyYXRvckxvY2FsRGF0YSogZ2VuZXJhdG9yTG9jYWxEYXRh
ID0gbmV3R2VuZXJhdG9yTG9jYWxEYXRhKCk7CisgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFj
a1RvcC0+bV9nZW5lcmF0b3JMb2NhbHMubG9jYWwocmVtYXBwZWRPcGVyYW5kLnRvTG9jYWwoKSkg
PSBnZW5lcmF0b3JMb2NhbERhdGE7CisgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChTZXRHZW5l
cmF0b3JMb2NhbCwgT3BJbmZvKGdlbmVyYXRvckxvY2FsSW5kZXgrKyksIE9wSW5mbyhnZW5lcmF0
b3JMb2NhbERhdGEpLCBmcmFtZSwgbG9jYWwpOworICAgICAgICAgICAgfSk7CisgICAgICAgICAg
ICBORVhUX09QQ09ERShvcF9zYXZlKTsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2Ugb3BfcmVz
dW1lOiB7CisgICAgICAgICAgICBOb2RlKiBmcmFtZSA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoY3Vy
cmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCkpOworICAgICAgICAgICAgdW5zaWduZWQgbGl2
ZUNhbGxlZUxvY2Fsc0luZGV4ID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUudW5zaWduZWRWYWx1
ZTsKKyAgICAgICAgICAgIGNvbnN0IEZhc3RCaXRWZWN0b3ImIGxpdmVuZXNzID0gbV9pbmxpbmVT
dGFja1RvcC0+bV9jb2RlQmxvY2stPmxpdmVDYWxsZWVMb2NhbHNBdFlpZWxkKGxpdmVDYWxsZWVM
b2NhbHNJbmRleCk7CisgICAgICAgICAgICB1bnNpZ25lZCBnZW5lcmF0b3JMb2NhbEluZGV4ID0g
MDsKKyAgICAgICAgICAgIGxpdmVuZXNzLmZvckVhY2hTZXRCaXQoWyZdKHNpemVfdCBpbmRleCkg
eworICAgICAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kID0gdmlydHVhbFJlZ2lz
dGVyRm9yTG9jYWwoaW5kZXgpOworICAgICAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciByZW1h
cHBlZE9wZXJhbmQgPSBtX2lubGluZVN0YWNrVG9wLT5yZW1hcE9wZXJhbmQob3BlcmFuZCk7Cisg
ICAgICAgICAgICAgICAgR2VuZXJhdG9yTG9jYWxEYXRhKiBnZW5lcmF0b3JMb2NhbERhdGEgPSBt
X2lubGluZVN0YWNrVG9wLT5tX2dlbmVyYXRvckxvY2Fscy5sb2NhbChyZW1hcHBlZE9wZXJhbmQu
dG9Mb2NhbCgpKTsKKyAgICAgICAgICAgICAgICBzZXQob3BlcmFuZCwgYWRkVG9HcmFwaChHZXRH
ZW5lcmF0b3JMb2NhbCwgT3BJbmZvKGdlbmVyYXRvckxvY2FsSW5kZXgrKyksIE9wSW5mbyhnZW5l
cmF0b3JMb2NhbERhdGEpLCBmcmFtZSkpOworICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBh
ZGRUb0dyYXBoKFJlc2l6ZUdlbmVyYXRvckxvY2FscywgT3BJbmZvKDApLCBmcmFtZSk7CisgICAg
ICAgICAgICBORVhUX09QQ09ERShvcF9yZXN1bWUpOworICAgICAgICB9CiAgICAgICAgICAgICAK
ICAgICAgICAgLy8gPT09IEJpdHdpc2Ugb3BlcmF0aW9ucyA9PT0KIApAQCAtNTM3OSw3ICs1NDMw
LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VDb2RlQmxvY2soKQogICAgIH0KICAgICAK
ICAgICBWZWN0b3I8dW5zaWduZWQsIDMyPiBqdW1wVGFyZ2V0czsKLSAgICBjb21wdXRlUHJlY2lz
ZUp1bXBUYXJnZXRzKGNvZGVCbG9jaywganVtcFRhcmdldHMpOworICAgIGNvbXB1dGVQcmVjaXNl
SnVtcFRhcmdldHMoY29kZUJsb2NrLCBCeXRlY29kZUFuYWx5c2lzTW9kZTo6U3RhbmRhcmQsIGp1
bXBUYXJnZXRzKTsKICAgICBpZiAoT3B0aW9uczo6ZHVtcEJ5dGVjb2RlQXRERkdUaW1lKCkpIHsK
ICAgICAgICAgZGF0YUxvZygiSnVtcCB0YXJnZXRzOiAiKTsKICAgICAgICAgQ29tbWFQcmludGVy
IGNvbW1hOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmls
aXRpZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3Bw
CmluZGV4IDFhMjM0ODI0MjgzYjBiOGNmNzM1YzUxMGFlMTI3MjQ1OTdkZTE1NzguLjljNWY0N2Rj
N2JmZTkxM2E1OGUxMDcxZTFkMWFiYTY5ZjEyMDE3NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKQEAgLTE5Miw2ICsxOTIsNyBAQCBDYXBhYmls
aXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVsKE9wY29kZUlEIG9wY29kZUlELCBDb2RlQmxvY2sqIGNv
ZGVCbG9jaywgSW5zdHJ1YwogICAgIGNhc2Ugb3BfbmV3X2FycmF5OgogICAgIGNhc2Ugb3BfbmV3
X2FycmF5X3dpdGhfc2l6ZToKICAgICBjYXNlIG9wX25ld19hcnJheV9idWZmZXI6CisgICAgY2Fz
ZSBvcF9uZXdfZ2VuZXJhdG9yX2ZyYW1lOgogICAgIGNhc2Ugb3Bfc3RyY2F0OgogICAgIGNhc2Ug
b3BfdG9fcHJpbWl0aXZlOgogICAgIGNhc2Ugb3BfdGhyb3c6CkBAIC0yNDAsNiArMjQxLDggQEAg
Q2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbChPcGNvZGVJRCBvcGNvZGVJRCwgQ29kZUJs
b2NrKiBjb2RlQmxvY2ssIEluc3RydWMKICAgICBjYXNlIG9wX2xvZ19zaGFkb3dfY2hpY2tlbl90
YWlsOgogICAgIGNhc2Ugb3BfcHV0X3RvX3Njb3BlOgogICAgIGNhc2Ugb3BfcmVzb2x2ZV9zY29w
ZToKKyAgICBjYXNlIG9wX3NhdmU6CisgICAgY2FzZSBvcF9yZXN1bWU6CiAgICAgICAgIHJldHVy
biBDYW5Db21waWxlQW5kSW5saW5lOwogCiAgICAgY2FzZSBvcF9uZXdfcmVnZXhwOgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAppbmRleCA2YWUyZGYyMWM2MjgwYTYy
NWQ0NjliYzU1YTEyMGIzYjE2NDM0ZDc3Li5kZTVlODE4NWY5ZTVhNjBkNzgyZWMzNWRmZWNkMDlj
MThlZDU0YmU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2Ji
ZXJpemUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaApA
QCAtMTA5OSw2ICsxMDk5LDcgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSog
bm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQsIGNvbnN0IFdyaXRlRnUKIAogICAgIGNhc2Ug
TmV3T2JqZWN0OgogICAgIGNhc2UgTmV3UmVnZXhwOgorICAgIGNhc2UgTmV3R2VuZXJhdG9yRnJh
bWU6CiAgICAgY2FzZSBOZXdTdHJpbmdPYmplY3Q6CiAgICAgY2FzZSBQaGFudG9tTmV3T2JqZWN0
OgogICAgIGNhc2UgTWF0ZXJpYWxpemVOZXdPYmplY3Q6CkBAIC0xMTk5LDYgKzEyMDAsMjMgQEAg
dm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0
b3ImIHJlYWQsIGNvbnN0IFdyaXRlRnUKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KKworICAgIGNhc2UgU2V0
R2VuZXJhdG9yTG9jYWw6IHsKKyAgICAgICAgcmVhZChHZW5lcmF0b3JMb2NhbENvdW50KTsKKyAg
ICAgICAgd3JpdGUoR2VuZXJhdG9yTG9jYWxzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIGNhc2UgR2V0R2VuZXJhdG9yTG9jYWw6IHsKKyAgICAgICAgcmVhZChHZW5lcmF0b3JMb2Nh
bENvdW50KTsKKyAgICAgICAgcmVhZChHZW5lcmF0b3JMb2NhbHMpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgY2FzZSBSZXNpemVHZW5lcmF0b3JMb2NhbHM6IHsKKyAgICAgICAgd3Jp
dGUoR2VuZXJhdG9yTG9jYWxDb3VudCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAgICAgICAg
IAogICAgIGNhc2UgVGhyb3dSZWZlcmVuY2VFcnJvcjoKICAgICAgICAgd3JpdGUoU2lkZVN0YXRl
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcnNFeGl0
U3RhdGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyc0V4aXRTdGF0
ZS5jcHAKaW5kZXggODA5YTQ1ZDZmMWE2NDAxNTgxOWQ3MmUzZmE0ODFlNGVhYjMzNDc4Mi4uNmFh
ZmNiZmRhMzZlMTY0NDZmZjc5NGVlODRjMzA5N2UyMjVhMGEyYSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyc0V4aXRTdGF0ZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyc0V4aXRTdGF0ZS5jcHAKQEAgLTUzLDEwICs1
MywxNiBAQCBib29sIGNsb2JiZXJzRXhpdFN0YXRlKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkK
ICAgICAgICAgLy8gZXhpdCBzdGF0ZS4KICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisgICAgY2Fz
ZSBSZXNpemVHZW5lcmF0b3JMb2NhbHM6CisgICAgY2FzZSBTZXRHZW5lcmF0b3JMb2NhbDoKKyAg
ICBjYXNlIEdldEdlbmVyYXRvckxvY2FsOgorICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICBj
YXNlIEFycmF5aWZ5VG9TdHJ1Y3R1cmU6CiAgICAgY2FzZSBBcnJheWlmeToKICAgICBjYXNlIE5l
d09iamVjdDoKICAgICBjYXNlIE5ld1JlZ2V4cDoKKyAgICBjYXNlIE5ld0dlbmVyYXRvckZyYW1l
OgogICAgIGNhc2UgTmV3U3RyaW5nT2JqZWN0OgogICAgIGNhc2UgUGhhbnRvbU5ld09iamVjdDoK
ICAgICBjYXNlIE1hdGVyaWFsaXplTmV3T2JqZWN0OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdEb2VzR0MuY3BwCmluZGV4IGNhZjMwZTM2YTI2MDA0NjA2ZTVlMWUxNWFjZGYyMTgyYzE4ODdk
MzYuLjQ5YjFkYzhmY2YyNmFmOTBiYjEwYzkzNWQwMzkxYzA5NDQzYzViYzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKQEAgLTI1MCw2ICsyNTAsOSBAQCBib29sIGRv
ZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBHZXREeW5hbWljVmFyOgog
ICAgIGNhc2UgUHV0RHluYW1pY1ZhcjoKICAgICBjYXNlIFJlc29sdmVTY29wZToKKyAgICBjYXNl
IFNldEdlbmVyYXRvckxvY2FsOgorICAgIGNhc2UgR2V0R2VuZXJhdG9yTG9jYWw6CisgICAgY2Fz
ZSBSZXNpemVHZW5lcmF0b3JMb2NhbHM6CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGNh
c2UgQ3JlYXRlQWN0aXZhdGlvbjoKQEAgLTI2OCw2ICsyNzEsNyBAQCBib29sIGRvZXNHQyhHcmFw
aCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBOZXdBcnJheVdpdGhTaXplOgogICAgIGNh
c2UgTmV3QXJyYXlCdWZmZXI6CiAgICAgY2FzZSBOZXdSZWdleHA6CisgICAgY2FzZSBOZXdHZW5l
cmF0b3JGcmFtZToKICAgICBjYXNlIE5ld1N0cmluZ09iamVjdDoKICAgICBjYXNlIE1ha2VSb3Bl
OgogICAgIGNhc2UgTmV3RnVuY3Rpb246CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdG
aXh1cFBoYXNlLmNwcAppbmRleCA5NzQ1OTBhODhlZGQ4ZmVhZDY3ZTkwNmIyYTFkYzNkNWZmYTNk
N2QwLi5mYmQyOWMxZDNjZTIwNzlkZDc2YTdjZTRjOTNmZWQ4Mjg5MjU2YTU1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKQEAgLTE1MTksNiArMTUxOSwy
NCBAQCBjbGFzcyBGaXh1cFBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAKKyAgICAgICAgY2FzZSBTZXRHZW5lcmF0b3JMb2NhbDogeworICAgICAg
ICAgICAgZml4RWRnZTxDZWxsVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBzcGVj
dWxhdGVGb3JCYXJyaWVyKG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CisKKyAgICAgICAgY2FzZSBHZXRHZW5lcmF0b3JMb2NhbDogeworICAgICAgICAgICAg
Zml4RWRnZTxDZWxsVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAvLyBDdXJyZW50
bHksIHdlIGFsd2F5cyBzdG9yZSB0aGUgdmFsdWUgYXMgSlNWYWx1ZSBpbiB0aGUgR2VuZXJhdG9y
RnJhbWUuCisgICAgICAgICAgICBub2RlLT5zZXRSZXN1bHQoTm9kZVJlc3VsdEpTKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBSZXNpemVHZW5lcmF0b3JM
b2NhbHM6IHsKKyAgICAgICAgICAgIGZpeEVkZ2U8Q2VsbFVzZT4obm9kZS0+Y2hpbGQxKCkpOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKwogI2lmICFBU1NFUlRfRElTQUJMRUQKICAg
ICAgICAgLy8gSGF2ZSB0aGVzZSBuby1vcCBjYXNlcyBoZXJlIHRvIGVuc3VyZSB0aGF0IG5vYm9k
eSBmb3JnZXRzIHRvIGFkZCBoYW5kbGVycyBmb3IgbmV3IG9wY29kZXMuCiAgICAgICAgIGNhc2Ug
U2V0QXJndW1lbnQ6CkBAIC0xNTUzLDYgKzE1NzEsNyBAQCBjbGFzcyBGaXh1cFBoYXNlIDogcHVi
bGljIFBoYXNlIHsKICAgICAgICAgY2FzZSBOZXdPYmplY3Q6CiAgICAgICAgIGNhc2UgTmV3QXJy
YXlCdWZmZXI6CiAgICAgICAgIGNhc2UgTmV3UmVnZXhwOgorICAgICAgICBjYXNlIE5ld0dlbmVy
YXRvckZyYW1lOgogICAgICAgICBjYXNlIERlbGV0ZUJ5SWQ6CiAgICAgICAgIGNhc2UgRGVsZXRl
QnlWYWw6CiAgICAgICAgIGNhc2UgSXNKU0FycmF5OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdHZW5lcmF0b3JMb2NhbERhdGEuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHR2VuZXJhdG9yTG9jYWxEYXRhLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2VhZjFhYmMwNWI3
ODM4NTQ3YzBiN2FlYmVkZmY2MDRjY2I1ZmQxMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHR2VuZXJhdG9yTG9jYWxEYXRhLmgKQEAgLTAsMCArMSw1OCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBn
bWFpbC5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIERGR0dlbmVyYXRvckxvY2FsRGF0YV9oCisjZGVmaW5lIERGR0dlbmVyYXRvckxvY2Fs
RGF0YV9oCisKKyNpZiBFTkFCTEUoREZHX0pJVCkKKworI2luY2x1ZGUgIkRGR0NvbW1vbi5oIgor
I2luY2x1ZGUgIlNwZWN1bGF0ZWRUeXBlLmgiCisjaW5jbHVkZSAiVmlydHVhbFJlZ2lzdGVyLmgi
CisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKKworCitjbGFzcyBHZW5lcmF0b3JM
b2NhbERhdGEgeworcHVibGljOgorICAgIGJvb2wgcHJlZGljdChTcGVjdWxhdGVkVHlwZSBwcmVk
aWN0aW9uKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1lcmdlU3BlY3VsYXRpb24obV9wcmVkaWN0
aW9uLCBwcmVkaWN0aW9uKTsKKyAgICB9CisKKyAgICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9u
KCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX3ByZWRpY3Rpb247CisgICAgfQorCitwcml2YXRl
OgorICAgIFNwZWN1bGF0ZWRUeXBlIG1fcHJlZGljdGlvbiB7IFNwZWNOb25lIH07Cit9OworCit9
IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCisKKyNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKKwor
I2VuZGlmIC8vIERGR1ZhcmlhYmxlQWNjZXNzRGF0YV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0dyYXBoLmgKaW5kZXggMDIxYjBlYzgzZTNmZWJmNWNjNTNkN2U5YjYyMWE0YTBjZjdhYWNmMC4u
MzFkZTJjMTA2NDEyNTVhNmRkOTk1ZjczYmQ5YzkyZDdlOTc0MGYxMCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHR3JhcGguaApAQCAtNjMsNiArNjMsNyBAQCBjbGFzcyBDb250cm9sRXF1aXZh
bGVuY2VBbmFseXNpczsKIGNsYXNzIERvbWluYXRvcnM7CiBjbGFzcyBOYXR1cmFsTG9vcHM7CiBj
bGFzcyBQcmVQb3N0TnVtYmVyaW5nOworY2xhc3MgR2VuZXJhdG9yTG9jYWxEYXRhOwogCiAjZGVm
aW5lIERGR19OT0RFX0RPX1RPX0NISUxEUkVOKGdyYXBoLCBub2RlLCB0aGluZ1RvRG8pIGRvIHsg
ICAgICAgICAgICBcCiAgICAgICAgIE5vZGUqIF9ub2RlID0gKG5vZGUpOyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCkBAIC04NzUsNiArODc2LDcgQEAgY2xhc3Mg
R3JhcGggOiBwdWJsaWMgdmlydHVhbCBTY2FubmFibGUgewogICAgIEJhZzxDYWxsVmFyYXJnc0Rh
dGE+IG1fY2FsbFZhcmFyZ3NEYXRhOwogICAgIEJhZzxMb2FkVmFyYXJnc0RhdGE+IG1fbG9hZFZh
cmFyZ3NEYXRhOwogICAgIEJhZzxTdGFja0FjY2Vzc0RhdGE+IG1fc3RhY2tBY2Nlc3NEYXRhOwor
ICAgIEJhZzxHZW5lcmF0b3JMb2NhbERhdGE+IG1fZ2VuZXJhdG9yTG9jYWxEYXRhOwogICAgIEJh
ZzxMYXp5SlNWYWx1ZT4gbV9sYXp5SlNWYWx1ZXM7CiAgICAgVmVjdG9yPElubGluZVZhcmlhYmxl
RGF0YSwgND4gbV9pbmxpbmVWYXJpYWJsZURhdGE7CiAgICAgSGFzaE1hcDxDb2RlQmxvY2sqLCBz
dGQ6OnVuaXF1ZV9wdHI8RnVsbEJ5dGVjb2RlTGl2ZW5lc3M+PiBtX2J5dGVjb2RlTGl2ZW5lc3M7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNwcAppbmRleCA1NzBiMTBhYzQz
MmM4NDQ3YjFjODIzNTVmMWIyOWRjZDMzOTU5NDVjLi5iMWQ1OWNiNWZiMGI4ZmMwMjIzMDAyMTgz
OTU2ZTE3NzkwZmEzNzQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R01heUV4aXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5j
cHAKQEAgLTkwLDYgKzkwLDkgQEAgRXhpdE1vZGUgbWF5RXhpdEltcGwoR3JhcGgmIGdyYXBoLCBO
b2RlKiBub2RlLCBTdGF0ZVR5cGUmIHN0YXRlKQogICAgIGNhc2UgUHV0QnlPZmZzZXQ6CiAgICAg
Y2FzZSBQdXRDbG9zdXJlVmFyOgogICAgIGNhc2UgUmVjb3JkUmVnRXhwQ2FjaGVkUmVzdWx0Ogor
ICAgIGNhc2UgUmVzaXplR2VuZXJhdG9yTG9jYWxzOgorICAgIGNhc2UgU2V0R2VuZXJhdG9yTG9j
YWw6CisgICAgY2FzZSBHZXRHZW5lcmF0b3JMb2NhbDoKICAgICAgICAgYnJlYWs7CiAKICAgICBj
YXNlIFN0ckNhdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKaW5kZXggM2JmM2IyYzcx
YWE0ZTZiNTBmODUxMGQzODAyNjBjYjk5YWFhN2Q5ZC4uZTFkZTA5NGRlYTJmZTdkZGNmNDA1ZWM1
YWE2NjI1ZDc1ZTRjOWE0NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdOb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKQEAgLTM2
LDYgKzM2LDcgQEAKICNpbmNsdWRlICJERkdBcnJheU1vZGUuaCIKICNpbmNsdWRlICJERkdDb21t
b24uaCIKICNpbmNsdWRlICJERkdFcG9jaC5oIgorI2luY2x1ZGUgIkRGR0dlbmVyYXRvckxvY2Fs
RGF0YS5oIgogI2luY2x1ZGUgIkRGR0xhenlKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiREZHTXVsdGlH
ZXRCeU9mZnNldERhdGEuaCIKICNpbmNsdWRlICJERkdOb2RlRmxhZ3MuaCIKQEAgLTk0NiwxMiAr
OTQ3LDc4IEBAIHN0cnVjdCBOb2RlIHsKICAgICAgICAgfQogICAgIH0KIAorICAgIGJvb2wgaGFz
R2VuZXJhdG9yTG9jYWxzU2l6ZSgpCisgICAgeworICAgICAgICBzd2l0Y2ggKG9wKCkpIHsKKyAg
ICAgICAgY2FzZSBOZXdHZW5lcmF0b3JGcmFtZToKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9Cisg
ICAgfQorCiAgICAgdW5zaWduZWQgZ2V0UHV0SW5mbygpCiAgICAgewogICAgICAgICBBU1NFUlQo
aGFzR2V0UHV0SW5mbygpKTsKICAgICAgICAgcmV0dXJuIG1fb3BJbmZvMjsKICAgICB9CiAKKyAg
ICB1bnNpZ25lZCBnZW5lcmF0b3JMb2NhbHNTaXplKCkKKyAgICB7CisgICAgICAgIEFTU0VSVCho
YXNHZW5lcmF0b3JMb2NhbHNTaXplKCkpOworICAgICAgICByZXR1cm4gbV9vcEluZm87CisgICAg
fQorCisgICAgYm9vbCBoYXNHZW5lcmF0b3JMb2NhbEluZGV4KCkKKyAgICB7CisgICAgICAgIHN3
aXRjaCAob3AoKSkgeworICAgICAgICBjYXNlIFNldEdlbmVyYXRvckxvY2FsOgorICAgICAgICBj
YXNlIEdldEdlbmVyYXRvckxvY2FsOgorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg
IGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICB1bnNpZ25lZCBnZW5lcmF0b3JMb2NhbEluZGV4KCkKKyAgICB7CisgICAgICAgIEFTU0VS
VChoYXNHZW5lcmF0b3JMb2NhbEluZGV4KCkpOworICAgICAgICByZXR1cm4gbV9vcEluZm87Cisg
ICAgfQorCisgICAgYm9vbCBoYXNHZW5lcmF0b3JMb2NhbERhdGEoKQorICAgIHsKKyAgICAgICAg
c3dpdGNoIChvcCgpKSB7CisgICAgICAgIGNhc2UgU2V0R2VuZXJhdG9yTG9jYWw6CisgICAgICAg
IGNhc2UgR2V0R2VuZXJhdG9yTG9jYWw6CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0K
KworICAgIEdlbmVyYXRvckxvY2FsRGF0YSogZ2VuZXJhdG9yTG9jYWxEYXRhKCkKKyAgICB7Cisg
ICAgICAgIEFTU0VSVChoYXNHZW5lcmF0b3JMb2NhbERhdGEoKSk7CisgICAgICAgIHJldHVybiBy
ZWludGVycHJldF9jYXN0PEdlbmVyYXRvckxvY2FsRGF0YSo+KG1fb3BJbmZvMik7CisgICAgfQor
CisgICAgYm9vbCBoYXNHZW5lcmF0b3JGcmFtZUxvY2FscygpCisgICAgeworICAgICAgICBzd2l0
Y2ggKG9wKCkpIHsKKyAgICAgICAgY2FzZSBSZXNpemVHZW5lcmF0b3JMb2NhbHM6CisgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHVuc2lnbmVkIGdlbmVyYXRvckZyYW1lTG9j
YWxzKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChoYXNHZW5lcmF0b3JGcmFtZUxvY2FscygpKTsK
KyAgICAgICAgcmV0dXJuIG1fb3BJbmZvOworICAgIH0KKwogICAgIGJvb2wgaGFzQWNjZXNzb3JB
dHRyaWJ1dGVzKCkKICAgICB7CiAgICAgICAgIHN3aXRjaCAob3AoKSkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCmluZGV4IGY5M2IzYmYxNDIwMGNmMDQ1ZTY4YTY0MWU3
ZDZiMDAxN2M3NGYxMzcuLjVkNDA1YzJmYzhmYzliZDdkNmNiMmU2OTM0NjczMDA5MzAxNWRmYTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKQEAgLTgyLDYgKzgyLDEw
IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhGbHVzaCwgTm9k
ZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKFBoYW50b21Mb2NhbCwgTm9kZU11c3RHZW5lcmF0
ZSkgXAogICAgIFwKKyAgICBtYWNybyhTZXRHZW5lcmF0b3JMb2NhbCwgTm9kZU11c3RHZW5lcmF0
ZSkgXAorICAgIG1hY3JvKEdldEdlbmVyYXRvckxvY2FsLCBOb2RlUmVzdWx0SlMpIFwKKyAgICBt
YWNybyhSZXNpemVHZW5lcmF0b3JMb2NhbHMsIE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBcCiAg
ICAgLyogSGludCB0aGF0IHRoaXMgaXMgd2hlcmUgYnl0ZWNvZGUgdGhpbmtzIGlzIGEgZ29vZCBw
bGFjZSB0byBPU1IuIE5vdGUgdGhhdCB0aGlzICovXAogICAgIC8qIHdpbGwgZXhpc3QgZXZlbiBp
biBpbmxpbmVkIGxvb3BzLiBUaGlzIGhhcyBubyBleGVjdXRpb24gc2VtYW50aWNzIGJ1dCBpdCBt
dXN0ICovXAogICAgIC8qIHN1cnZpdmUgYWxsIERDRS4gV2UgdHJlYXQgdGhpcyBhcyBiZWluZyBh
IGNhbi1leGl0IGJlY2F1c2UgdGllci11cCB0byBGVEwgbWF5ICovXApAQCAtMjg4LDYgKzI5Miw3
IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhOZXdBcnJheUJ1
ZmZlciwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oTmV3VHlwZWRBcnJheSwgTm9kZVJlc3Vs
dEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKE5ld1JlZ2V4cCwgTm9kZVJlc3Vs
dEpTKSBcCisgICAgbWFjcm8oTmV3R2VuZXJhdG9yRnJhbWUsIE5vZGVSZXN1bHRKUykgXAogICAg
IC8qIFJlc3QgUGFyYW1ldGVyICovXAogICAgIG1hY3JvKEdldFJlc3RMZW5ndGgsIE5vZGVSZXN1
bHRJbnQzMikgXAogICAgIG1hY3JvKENvcHlSZXN0LCBOb2RlTXVzdEdlbmVyYXRlKSBcCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAppbmRleCA2OWExNmViNWRh
NDM1NWJjNzkyNWM1ZGZkY2IwNjIwMjNlOTk2NTAyLi5kMGRmM2MyMWRmZjBjNjBlZWE2MWE0MWFj
YTY5Yjc0YmY5Y2M3ZWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0
aW9ucy5jcHAKQEAgLTQyLDggKzQyLDkgQEAKICNpbmNsdWRlICJEaXJlY3RBcmd1bWVudHMuaCIK
ICNpbmNsdWRlICJGVExGb3JPU1JFbnRyeUpJVENvZGUuaCIKICNpbmNsdWRlICJGVExPU1JFbnRy
eS5oIgotI2luY2x1ZGUgIkhvc3RDYWxsUmV0dXJuVmFsdWUuaCIKKyNpbmNsdWRlICJHZW5lcmF0
b3JGcmFtZS5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgorI2luY2x1ZGUgIkhvc3RDYWxs
UmV0dXJuVmFsdWUuaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpJVC5o
IgogI2luY2x1ZGUgIkpJVEV4Y2VwdGlvbnMuaCIKQEAgLTk4OSw2ICs5OTAsMTEgQEAgY2hhciog
SklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdGbG9hdDY0QXJyYXlXaXRoT25lQXJndW1lbnQoCiAg
ICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFy
cmF5Vmlld1dpdGhBcmd1bWVudHM8SlNGbG9hdDY0QXJyYXk+KGV4ZWMsIHN0cnVjdHVyZSwgZW5j
b2RlZFZhbHVlLCAwLCBOdWxsb3B0KSk7CiB9CiAKK2NoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uTmV3R2VuZXJhdG9yRnJhbWUoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgaW50MzJfdCBudW1iZXJPZkNhbGxlZUxvY2FscykKK3sKKyAgICByZXR1cm4gYml0d2lzZV9j
YXN0PGNoYXIqPihHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlKGV4ZWMtPnZtKCksIHN0cnVjdHVyZSwg
bnVtYmVyT2ZDYWxsZWVMb2NhbHMpKTsKK30KKwogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbkNyZWF0ZUFjdGl2YXRpb25EaXJlY3QoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgSlNTY29wZSogc2NvcGUsIFN5bWJvbFRhYmxlKiB0YWJsZSwgRW5jb2RlZEpTVmFs
dWUgaW5pdGlhbFZhbHVlRW5jb2RlZCkKIHsKICAgICBKU1ZhbHVlIGluaXRpYWxWYWx1ZSA9IEpT
VmFsdWU6OmRlY29kZShpbml0aWFsVmFsdWVFbmNvZGVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPcGVyYXRpb25zLmgKaW5kZXggZmJjODYyZmUxZWE4NDZkMmY3YzNmYTI3Mjc2ZTgz
ZDA2MWI4ZjIyYi4uMmY4ZmI0ZjZlZGU2YjIzMDAwNmUwZGIxZGY3NmQ2YjIzYmRkZTYzYSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKQEAgLTgzLDYgKzgzLDcg
QEAgY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdGbG9hdDMyQXJyYXlXaXRoU2l6ZShF
eGVjU3RhdGUqLCBTdHJ1Y3R1cmUqLCBpbnQKIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
TmV3RmxvYXQzMkFycmF5V2l0aE9uZUFyZ3VtZW50KEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSosIEVu
Y29kZWRKU1ZhbHVlKSBXVEZfSU5URVJOQUw7CiBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bk5ld0Zsb2F0NjRBcnJheVdpdGhTaXplKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSosIGludDMyX3Qp
IFdURl9JTlRFUk5BTDsKIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3RmxvYXQ2NEFy
cmF5V2l0aE9uZUFyZ3VtZW50KEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSosIEVuY29kZWRKU1ZhbHVl
KSBXVEZfSU5URVJOQUw7CitjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0dlbmVyYXRv
ckZyYW1lKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSosIGludDMyX3QpIFdURl9JTlRFUk5BTDsKIHZv
aWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbFN0cmljdChFeGVjU3RhdGUqLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFByb3BlcnR5LCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpIFdURl9JTlRFUk5BTDsKIHZvaWQgSklUX09QRVJB
VElPTiBvcGVyYXRpb25QdXRCeVZhbE5vblN0cmljdChFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFByb3BlcnR5LCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkVmFsdWUpIFdURl9JTlRFUk5BTDsKIHZvaWQgSklUX09QRVJBVElPTiBvcGVy
YXRpb25QdXRCeVZhbENlbGxTdHJpY3QoRXhlY1N0YXRlKiwgSlNDZWxsKiwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFByb3BlcnR5LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpIFdURl9JTlRF
Uk5BTDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlv
blByb3BhZ2F0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVk
aWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKaW5kZXggYTJkYmU0NDRiNmVkMzcxYjAwNTljMzgw
YTg3ZGRhOWM2MTY3YzNlOS4uY2MwMDc0MjU3YmVjYTg2M2EzMTQ3MmU0NGQyNDA3ZDM4NWVkYjI4
MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJv
cGFnYXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVk
aWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKQEAgLTE2OCw2ICsxNjgsMjQgQEAgY2xhc3MgUHJl
ZGljdGlvblByb3BhZ2F0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIFNldEdlbmVyYXRvckxvY2FsOiB7CisgICAg
ICAgICAgICBHZW5lcmF0b3JMb2NhbERhdGEqIGdlbmVyYXRvckxvY2FsRGF0YSA9IG5vZGUtPmdl
bmVyYXRvckxvY2FsRGF0YSgpOworICAgICAgICAgICAgY2hhbmdlZCB8PSBnZW5lcmF0b3JMb2Nh
bERhdGEtPnByZWRpY3Qobm9kZS0+Y2hpbGQyKCktPnByZWRpY3Rpb24oKSk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2UgR2V0R2VuZXJhdG9yTG9jYWw6IHsK
KyAgICAgICAgICAgIEdlbmVyYXRvckxvY2FsRGF0YSogdmFyaWFibGUgPSBub2RlLT5nZW5lcmF0
b3JMb2NhbERhdGEoKTsKKyAgICAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24gPSB2
YXJpYWJsZS0+cHJlZGljdGlvbigpOworICAgICAgICAgICAgLy8gV2UgYWx3YXlzIHN0b3JlIHRo
ZSB2YWx1ZSBpbiBHZW5lcmF0b3JMb2NhbCBhcyBGb3JtYXRKU1ZhbHVlLgorICAgICAgICAgICAg
Ly8gU28gZG91YmxlIHZhbHVlIGlzIGJldHRlciB0aGFuIEludDUyIHZhbHVlLgorICAgICAgICAg
ICAgaWYgKGVuYWJsZUludDUyKCkgJiYgKHByZWRpY3Rpb24gJiBTcGVjSW50NTJPbmx5KSkKKyAg
ICAgICAgICAgICAgICBwcmVkaWN0aW9uID0gKHByZWRpY3Rpb24gfCBTcGVjQW55SW50QXNEb3Vi
bGUpICYgflNwZWNJbnQ1Mk9ubHk7CisgICAgICAgICAgICBpZiAocHJlZGljdGlvbikKKyAgICAg
ICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihwcmVkaWN0aW9uKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CisKICAgICAgICAgY2FzZSBVSW50MzJUb051bWJlcjog
ewogICAgICAgICAgICAgaWYgKG5vZGUtPmNhblNwZWN1bGF0ZUludDMyKG1fcGFzcykpCiAgICAg
ICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oU3BlY0ludDMyT25seSk7CkBA
IC04NDksNyArODY3LDggQEAgY2xhc3MgUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UgOiBwdWJs
aWMgUGhhc2UgewogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIAot
ICAgICAgICBjYXNlIENyZWF0ZUFjdGl2YXRpb246IHsKKyAgICAgICAgY2FzZSBDcmVhdGVBY3Rp
dmF0aW9uOgorICAgICAgICBjYXNlIE5ld0dlbmVyYXRvckZyYW1lOiB7CiAgICAgICAgICAgICBz
ZXRQcmVkaWN0aW9uKFNwZWNPYmplY3RPdGhlcik7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQpAQCAtMTA2NCw2ICsxMDgzLDcgQEAgY2xhc3MgUHJlZGljdGlvblByb3BhZ2F0aW9uUGhh
c2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICBjYXNlIEZvcndhcmRWYXJhcmdzOgogICAgICAg
ICBjYXNlIENvcHlSZXN0OgogICAgICAgICBjYXNlIFB1dER5bmFtaWNWYXI6CisgICAgICAgIGNh
c2UgUmVzaXplR2VuZXJhdG9yTG9jYWxzOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICAKICAgICAgICAgLy8gVGhpcyBnZXRzIGlnbm9yZWQgYmVjYXVzZSBpdCBvbmx5IHByZXRlbmRz
IHRvIHByb2R1Y2UgYSB2YWx1ZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU2FmZVRvRXhlY3V0ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZl
VG9FeGVjdXRlLmgKaW5kZXggYzFhM2JiZTNmZmRhNzliYTA2N2JkNzA2ZGU2NGFjYTI2ZjA3YTE3
OC4uNmE2ZGY3Zjc4YzlmZWY2NTU3ZWJjODQ1MzNlZGRmM2RlYjFhNDcwYSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKQEAgLTI1MCw2ICsyNTAsNyBA
QCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0YXRlLCBHcmFwaCYgZ3Jh
cGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBOZXdBcnJheVdpdGhTaXplOgogICAgIGNhc2UgTmV3
QXJyYXlCdWZmZXI6CiAgICAgY2FzZSBOZXdSZWdleHA6CisgICAgY2FzZSBOZXdHZW5lcmF0b3JG
cmFtZToKICAgICBjYXNlIFByb2ZpbGVUeXBlOgogICAgIGNhc2UgUHJvZmlsZUNvbnRyb2xGbG93
OgogICAgIGNhc2UgQ2hlY2tUeXBlSW5mb0ZsYWdzOgpAQCAtMzQ2LDYgKzM0Nyw5IEBAIGJvb2wg
c2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3RhdGUsIEdyYXBoJiBncmFwaCwgTm9k
ZSogbm9kZSkKICAgICBjYXNlIEdldE15QXJndW1lbnRCeVZhbE91dE9mQm91bmRzOgogICAgIGNh
c2UgRm9yd2FyZFZhcmFyZ3M6CiAgICAgY2FzZSBDb3B5UmVzdDoKKyAgICBjYXNlIFNldEdlbmVy
YXRvckxvY2FsOgorICAgIGNhc2UgR2V0R2VuZXJhdG9yTG9jYWw6CisgICAgY2FzZSBSZXNpemVH
ZW5lcmF0b3JMb2NhbHM6CiAgICAgY2FzZSBTdHJpbmdSZXBsYWNlOgogICAgIGNhc2UgU3RyaW5n
UmVwbGFjZVJlZ0V4cDoKICAgICBjYXNlIEdldFJlZ0V4cE9iamVjdExhc3RJbmRleDoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggZjcz
OTFkYzI4MDMyYWQ0MjVlYWM4ODEwOGIwZjVkZTU1YjkxMWVkZi4uZjhjN2IyYmE0ZTYwODVkNzlh
ZjZmZjlhZTIzZThhNDgzNTdkZTQ1OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJERkdT
YW5lU3RyaW5nR2V0QnlWYWxTbG93UGF0aEdlbmVyYXRvci5oIgogI2luY2x1ZGUgIkRGR1Nsb3dQ
YXRoR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiRGlyZWN0QXJndW1lbnRzLmgiCisjaW5jbHVkZSAi
R2VuZXJhdG9yRnJhbWUuaCIKICNpbmNsdWRlICJKSVRBZGRHZW5lcmF0b3IuaCIKICNpbmNsdWRl
ICJKSVRCaXRBbmRHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJKSVRCaXRPckdlbmVyYXRvci5oIgpA
QCAtNjg3Niw2ICs2ODc3LDQyIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdTdHJp
bmdPYmplY3QoTm9kZSogbm9kZSkKICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiB9
CiAKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdHZW5lcmF0b3JGcmFtZShOb2RlKiBu
b2RlKQoreworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2ppdC5ncmFwaCgp
Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAgIFN0cnVjdHVyZSog
c3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT5nZW5lcmF0b3JGcmFtZVN0cnVjdHVyZSgpOworICAg
IHVuc2lnbmVkIGdlbmVyYXRvckxvY2Fsc1NpemUgPSBub2RlLT5nZW5lcmF0b3JMb2NhbHNTaXpl
KCk7CisKKyAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOworICAgIEdQUlRlbXBvcmFyeSBz
Y3JhdGNoMSh0aGlzKTsKKyAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaDIodGhpcyk7CisKKyAgICBH
UFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOworICAgIEdQUlJlZyBzY3JhdGNoMUdQUiA9
IHNjcmF0Y2gxLmdwcigpOworICAgIEdQUlJlZyBzY3JhdGNoMkdQUiA9IHNjcmF0Y2gyLmdwcigp
OworCisgICAgSklUQ29tcGlsZXI6Okp1bXBMaXN0IHNsb3dQYXRoOworCisgICAgZW1pdEFsbG9j
YXRlSlNPYmplY3RXaXRoS25vd25TaXplPEdlbmVyYXRvckZyYW1lPihyZXN1bHRHUFIsIFRydXN0
ZWRJbW1QdHIoc3RydWN0dXJlKSwgVHJ1c3RlZEltbVB0cihudWxscHRyKSwgc2NyYXRjaDFHUFIs
IHNjcmF0Y2gyR1BSLCBzbG93UGF0aCwgR2VuZXJhdG9yRnJhbWU6OmFsbG9jYXRpb25TaXplRm9y
TG9jYWxzKGdlbmVyYXRvckxvY2Fsc1NpemUpKTsKKyAgICBtX2ppdC5zdG9yZTMyKFRydXN0ZWRJ
bW0zMihnZW5lcmF0b3JMb2NhbHNTaXplKSwgSklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0R1BS
LCBHZW5lcmF0b3JGcmFtZTo6bnVtYmVyT2ZDYWxsZWVMb2NhbHNPZmZzZXQoKSkpOworICAgIG1f
aml0LnN0b3JlMzIoVHJ1c3RlZEltbTMyKDApLCBKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHRH
UFIsIEdlbmVyYXRvckZyYW1lOjpudW1iZXJPZlNhdmVkQ2FsbGVlTG9jYWxzT2Zmc2V0KCkpKTsK
KyAgICBKU1ZhbHVlIGVtcHR5VmFsdWU7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGdl
bmVyYXRvckxvY2Fsc1NpemU7ICsraSkKKyAgICAgICAgbV9qaXQuc3RvcmVUcnVzdGVkVmFsdWUo
ZW1wdHlWYWx1ZSwgSklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBHZW5lcmF0b3JGcmFt
ZTo6bG9jYWxPZmZzZXQoaSkpKTsKKworICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRo
Q2FsbChzbG93UGF0aCwgdGhpcywgb3BlcmF0aW9uTmV3R2VuZXJhdG9yRnJhbWUsIHJlc3VsdEdQ
Uiwgc3RydWN0dXJlLCBnZW5lcmF0b3JMb2NhbHNTaXplKSk7CisKKyAgICBjZWxsUmVzdWx0KHJl
c3VsdEdQUiwgbm9kZSk7Cit9CisKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVSZXNpemVH
ZW5lcmF0b3JMb2NhbHMoTm9kZSogbm9kZSkKK3sKKyAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBm
cmFtZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgR1BSUmVnIGZyYW1lR1BSID0gZnJhbWUu
Z3ByKCk7CisgICAgbV9qaXQuc3RvcmUzMihUcnVzdGVkSW1tMzIobm9kZS0+Z2VuZXJhdG9yRnJh
bWVMb2NhbHMoKSksIEpJVENvbXBpbGVyOjpBZGRyZXNzKGZyYW1lR1BSLCBHZW5lcmF0b3JGcmFt
ZTo6bnVtYmVyT2ZTYXZlZENhbGxlZUxvY2Fsc09mZnNldCgpKSk7CisgICAgbm9SZXN1bHQobm9k
ZSk7Cit9CisKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdUeXBlZEFycmF5KE5vZGUq
IG5vZGUpCiB7CiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1faml0LmdyYXBo
KCkuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKaW5kZXggYjc3ZWFkNmM4MWQyNTI2
YzNmMDQ3YWQwOGI4Y2ViNTJhMDZjZGM1My4uY2YwMmI4NjE5MWIwNGQ4NWMxMDIxNzg0ZTViNTVi
ZjViMzk1OGM5MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuaApAQCAtMjUyOSw2ICsyNTI5LDggQEAgY2xhc3MgU3BlY3VsYXRpdmVKSVQgewogICAg
IHZvaWQgY29tcGlsZVB1dEJ5VmFsRm9yRmxvYXRUeXBlZEFycmF5KEdQUlJlZyBiYXNlLCBHUFJS
ZWcgcHJvcGVydHksIE5vZGUqLCBUeXBlZEFycmF5VHlwZSk7CiAgICAgdGVtcGxhdGUgPHR5cGVu
YW1lIENsYXNzVHlwZT4gdm9pZCBjb21waWxlTmV3RnVuY3Rpb25Db21tb24oR1BSUmVnLCBTdHJ1
Y3R1cmUqLCBHUFJSZWcsIEdQUlJlZywgR1BSUmVnLCBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3Qm
LCBzaXplX3QsIEZ1bmN0aW9uRXhlY3V0YWJsZSosIHB0cmRpZmZfdCwgcHRyZGlmZl90LCBwdHJk
aWZmX3QpOwogICAgIHZvaWQgY29tcGlsZU5ld0Z1bmN0aW9uKE5vZGUqKTsKKyAgICB2b2lkIGNv
bXBpbGVOZXdHZW5lcmF0b3JGcmFtZShOb2RlKik7CisgICAgdm9pZCBjb21waWxlUmVzaXplR2Vu
ZXJhdG9yTG9jYWxzKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVTZXRGdW5jdGlvbk5hbWUoTm9k
ZSopOwogICAgIHZvaWQgY29tcGlsZUZvcndhcmRWYXJhcmdzKE5vZGUqKTsKICAgICB2b2lkIGNv
bXBpbGVDcmVhdGVBY3RpdmF0aW9uKE5vZGUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCmluZGV4IDc0NmM0MDk2MDU5NGY4
MTllZWRmNzQwOTFkM2M3YjM1Nzg2OTNjZDEuLjg3YzJiNDk0ZTExODA0NGZhNDVhNjM0ODcwOWRk
NmYxYTQ3ZTkwNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIkRGR1Ns
b3dQYXRoR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiRGVidWdnZXIuaCIKICNpbmNsdWRlICJEaXJl
Y3RBcmd1bWVudHMuaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JGcmFtZS5oIgogI2luY2x1ZGUgIkdl
dHRlclNldHRlci5oIgogI2luY2x1ZGUgIkpTRW52aXJvbm1lbnRSZWNvcmQuaCIKICNpbmNsdWRl
ICJKU0xleGljYWxFbnZpcm9ubWVudC5oIgpAQCAtNDAxNyw2ICs0MDE4LDExIEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgY29tcGlsZUNhbGxPYmpl
Y3RDb25zdHJ1Y3Rvcihub2RlKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQorCisgICAgY2FzZSBO
ZXdHZW5lcmF0b3JGcmFtZTogeworICAgICAgICBjb21waWxlTmV3R2VuZXJhdG9yRnJhbWUobm9k
ZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBUb1RoaXM6IHsK
ICAgICAgICAgQVNTRVJUKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKTsK
QEAgLTUxNzQsNiArNTE4MCw0MSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUq
IG5vZGUpCiAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKICAgICAgICAgYnJl
YWs7CiAgICAgfQorICAgIGNhc2UgU2V0R2VuZXJhdG9yTG9jYWw6IHsKKyAgICAgICAgU3BlY3Vs
YXRlQ2VsbE9wZXJhbmQgZnJhbWUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBKU1Zh
bHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisKKyAgICAgICAgR1BSUmVn
IGZyYW1lR1BSID0gZnJhbWUuZ3ByKCk7CisgICAgICAgIEdQUlJlZyB2YWx1ZVRhZ0dQUiA9IHZh
bHVlLnRhZ0dQUigpOworICAgICAgICBHUFJSZWcgdmFsdWVQYXlsb2FkR1BSID0gdmFsdWUucGF5
bG9hZEdQUigpOworICAgICAgICB1bnNpZ25lZCBnZW5lcmF0b3JMb2NhbEluZGV4ID0gbm9kZS0+
Z2VuZXJhdG9yTG9jYWxJbmRleCgpOworCisgICAgICAgIG1faml0LnN0b3JlMzIodmFsdWVUYWdH
UFIsIEpJVENvbXBpbGVyOjpBZGRyZXNzKGZyYW1lR1BSLCBHZW5lcmF0b3JGcmFtZTo6bG9jYWxP
ZmZzZXQoZ2VuZXJhdG9yTG9jYWxJbmRleCkgKyBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5h
c0JpdHMudGFnKSkpOworICAgICAgICBtX2ppdC5zdG9yZTMyKHZhbHVlUGF5bG9hZEdQUiwgSklU
Q29tcGlsZXI6OkFkZHJlc3MoZnJhbWVHUFIsIEdlbmVyYXRvckZyYW1lOjpsb2NhbE9mZnNldChn
ZW5lcmF0b3JMb2NhbEluZGV4KSArIE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy5w
YXlsb2FkKSkpOworCisgICAgICAgIG5vUmVzdWx0KG5vZGUpOworICAgICAgICBicmVhazsKKyAg
ICB9CisgICAgY2FzZSBHZXRHZW5lcmF0b3JMb2NhbDogeworICAgICAgICBTcGVjdWxhdGVDZWxs
T3BlcmFuZCBmcmFtZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIEdQUlRlbXBvcmFy
eSByZXN1bHRUYWcodGhpcyk7CisgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHRQYXlsb2FkKHRo
aXMpOworCisgICAgICAgIEdQUlJlZyBmcmFtZUdQUiA9IGZyYW1lLmdwcigpOworICAgICAgICBH
UFJSZWcgcmVzdWx0VGFnR1BSID0gcmVzdWx0VGFnLmdwcigpOworICAgICAgICBHUFJSZWcgcmVz
dWx0UGF5bG9hZEdQUiA9IHJlc3VsdFBheWxvYWQuZ3ByKCk7CisgICAgICAgIHVuc2lnbmVkIGdl
bmVyYXRvckxvY2FsSW5kZXggPSBub2RlLT5nZW5lcmF0b3JMb2NhbEluZGV4KCk7CisKKyAgICAg
ICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGZyYW1lR1BSLCBHZW5lcmF0b3JG
cmFtZTo6bG9jYWxPZmZzZXQoZ2VuZXJhdG9yTG9jYWxJbmRleCkgKyBPQkpFQ1RfT0ZGU0VUT0Yo
SlNWYWx1ZSwgdS5hc0JpdHMudGFnKSksIHJlc3VsdFRhZ0dQUik7CisgICAgICAgIG1faml0Lmxv
YWQzMihKSVRDb21waWxlcjo6QWRkcmVzcyhmcmFtZUdQUiwgR2VuZXJhdG9yRnJhbWU6OmxvY2Fs
T2Zmc2V0KGdlbmVyYXRvckxvY2FsSW5kZXgpICsgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUu
YXNCaXRzLnBheWxvYWQpKSwgcmVzdWx0UGF5bG9hZEdQUik7CisKKyAgICAgICAganNWYWx1ZVJl
c3VsdChyZXN1bHRUYWdHUFIsIHJlc3VsdFBheWxvYWRHUFIsIG5vZGUpOworICAgICAgICBicmVh
azsKKyAgICB9CisgICAgY2FzZSBSZXNpemVHZW5lcmF0b3JMb2NhbHM6IHsKKyAgICAgICAgY29t
cGlsZVJlc2l6ZUdlbmVyYXRvckxvY2Fscyhub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQog
ICAgIGNhc2UgUHJvZmlsZVR5cGU6IHsKICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhp
cywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaDEodGhpcyk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
NjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNw
cAppbmRleCAyNGQ2ZTMyNzgwYmQzMjQxYzNmZmJlNzVlOWRjZjRlYTdiMjY1MTVhLi4wNDcyMzUz
NGY1NWU5NjJkMDAxZjU1ZjkyYWQ2NWVlZDA4ZmI4NDM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKQEAgLTM2LDYgKzM2LDcgQEAK
ICNpbmNsdWRlICJERkdTbG93UGF0aEdlbmVyYXRvci5oIgogI2luY2x1ZGUgIkRlYnVnZ2VyLmgi
CiAjaW5jbHVkZSAiRGlyZWN0QXJndW1lbnRzLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yRnJhbWUu
aCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAj
aW5jbHVkZSAiSlNFbnZpcm9ubWVudFJlY29yZC5oIgpAQCAtMzk1NSw2ICszOTU2LDExIEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAg
ICAgfQogCisgICAgY2FzZSBOZXdHZW5lcmF0b3JGcmFtZTogeworICAgICAgICBjb21waWxlTmV3
R2VuZXJhdG9yRnJhbWUobm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICAgICAgCiAg
ICAgY2FzZSBUb1RoaXM6IHsKICAgICAgICAgQVNTRVJUKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQo
KSA9PSBVbnR5cGVkVXNlKTsKICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdGhpc1ZhbHVlKHRoaXMs
IG5vZGUtPmNoaWxkMSgpKTsKQEAgLTUwOTksNiArNTEwNSwzNSBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBu
b2RlKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQorICAgIGNhc2UgU2V0R2VuZXJhdG9yTG9jYWw6
IHsKKyAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgZnJhbWUodGhpcywgbm9kZS0+Y2hpbGQx
KCkpOworICAgICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7
CisKKyAgICAgICAgR1BSUmVnIGZyYW1lR1BSID0gZnJhbWUuZ3ByKCk7CisgICAgICAgIEdQUlJl
ZyB2YWx1ZUdQUiA9IHZhbHVlLmdwcigpOworICAgICAgICB1bnNpZ25lZCBnZW5lcmF0b3JMb2Nh
bEluZGV4ID0gbm9kZS0+Z2VuZXJhdG9yTG9jYWxJbmRleCgpOworCisgICAgICAgIG1faml0LnN0
b3JlNjQodmFsdWVHUFIsIEpJVENvbXBpbGVyOjpBZGRyZXNzKGZyYW1lR1BSLCBHZW5lcmF0b3JG
cmFtZTo6bG9jYWxPZmZzZXQoZ2VuZXJhdG9yTG9jYWxJbmRleCkpKTsKKworICAgICAgICBub1Jl
c3VsdChub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgR2V0R2VuZXJhdG9y
TG9jYWw6IHsKKyAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgZnJhbWUodGhpcywgbm9kZS0+
Y2hpbGQxKCkpOworICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOworCisgICAgICAg
IEdQUlJlZyBmcmFtZUdQUiA9IGZyYW1lLmdwcigpOworICAgICAgICBHUFJSZWcgcmVzdWx0R1BS
ID0gcmVzdWx0LmdwcigpOworICAgICAgICB1bnNpZ25lZCBnZW5lcmF0b3JMb2NhbEluZGV4ID0g
bm9kZS0+Z2VuZXJhdG9yTG9jYWxJbmRleCgpOworCisgICAgICAgIG1faml0LmxvYWQ2NChKSVRD
b21waWxlcjo6QWRkcmVzcyhmcmFtZUdQUiwgR2VuZXJhdG9yRnJhbWU6OmxvY2FsT2Zmc2V0KGdl
bmVyYXRvckxvY2FsSW5kZXgpKSwgcmVzdWx0R1BSKTsKKyAgICAgICAganNWYWx1ZVJlc3VsdChy
ZXN1bHRHUFIsIG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBSZXNpemVH
ZW5lcmF0b3JMb2NhbHM6IHsKKyAgICAgICAgY29tcGlsZVJlc2l6ZUdlbmVyYXRvckxvY2Fscyhu
b2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogICAgIGNhc2UgUHJvZmlsZVR5cGU6IHsKICAg
ICAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAg
ICBHUFJUZW1wb3Jhcnkgc2NyYXRjaDEodGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwCmluZGV4
IGI2MzEyMDllOGQxNzI2OGQwOWEzZTA3NzgyZDc4YzkzNDYyZDBiZmMuLmM5MzdiZDlkMjcxM2I0
ZTk4YTU0M2FiZWVmNzc3ZmEyMjcwYjdlZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwCkBAIC0y
ODMsNiArMjgzLDExIEBAIGNsYXNzIFN0b3JlQmFycmllckluc2VydGlvblBoYXNlIDogcHVibGlj
IFBoYXNlIHsKICAgICAgICAgICAgICAgICBjb25zaWRlckJhcnJpZXIobV9ub2RlLT5jaGlsZDEo
KSwgbV9ub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIGNhc2UgU2V0R2VuZXJhdG9yTG9jYWw6IHsKKyAgICAgICAgICAg
ICAgICBjb25zaWRlckJhcnJpZXIobV9ub2RlLT5jaGlsZDEoKSwgbV9ub2RlLT5jaGlsZDIoKSk7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
CiAgICAgICAgICAgICBjYXNlIFNldEZ1bmN0aW9uTmFtZTogewogICAgICAgICAgICAgICAgIGNv
bnNpZGVyQmFycmllcihtX25vZGUtPmNoaWxkMSgpLCBtX25vZGUtPmNoaWxkMigpKTsKQEAgLTMw
Myw2ICszMDgsNyBAQCBjbGFzcyBTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZSA6IHB1YmxpYyBQ
aGFzZSB7CiAgICAgICAgICAgICBjYXNlIE5ld0FycmF5QnVmZmVyOgogICAgICAgICAgICAgY2Fz
ZSBOZXdUeXBlZEFycmF5OgogICAgICAgICAgICAgY2FzZSBOZXdSZWdleHA6CisgICAgICAgICAg
ICBjYXNlIE5ld0dlbmVyYXRvckZyYW1lOgogICAgICAgICAgICAgY2FzZSBNYXRlcmlhbGl6ZU5l
d09iamVjdDoKICAgICAgICAgICAgIGNhc2UgTWF0ZXJpYWxpemVDcmVhdGVBY3RpdmF0aW9uOgog
ICAgICAgICAgICAgY2FzZSBOZXdTdHJpbmdPYmplY3Q6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2UuY3BwCmlu
ZGV4IDUxY2Y0ODk2MGE4YjFmZjU3MmE4NjllYWUxOGJmMGE5ZjVhMjc5ZGQuLjAwZDE5OGMzOTA5
NTM2NWNlNzg2MmY3NmIxN2Y1M2JlNDY1YjkyOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2UuY3BwCkBA
IC0xMzUsNiArMTM1LDkgQEAgY2xhc3MgU3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2UgOiBwdWJs
aWMgUGhhc2UgewogICAgICAgICAgICAgICAgIGNhc2UgQ3JlYXRlRGlyZWN0QXJndW1lbnRzOgog
ICAgICAgICAgICAgICAgICAgICByZWdpc3RlclN0cnVjdHVyZShtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5kaXJlY3RBcmd1bWVudHNTdHJ1Y3R1cmUoKSk7
CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgTmV3R2Vu
ZXJhdG9yRnJhbWU6CisgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyU3RydWN0dXJlKG1fZ3Jh
cGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyktPmdlbmVyYXRvckZyYW1l
U3RydWN0dXJlKCkpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAg
ICAgICAgCiAgICAgICAgICAgICAgICAgY2FzZSBDcmVhdGVTY29wZWRBcmd1bWVudHM6CiAgICAg
ICAgICAgICAgICAgICAgIHJlZ2lzdGVyU3RydWN0dXJlKG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9y
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYyktPnNjb3BlZEFyZ3VtZW50c1N0cnVjdHVyZSgpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3Np
dG9yeS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9z
aXRvcnkuY3BwCmluZGV4IGE0YjU0MzdlOTdjNDdmOGZmM2ZlZWRjMWVlOTBmNjA3N2FiNWZmMDUu
LmIxYjJmZWNjZTNhZjk5NDRhZmQxYzYzYTRiMzBlMGIwNzJlOTk3MjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNw
cApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkIzVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiRGlyZWN0QXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiRlRMU3RhdGUuaCIKKyNpbmNsdWRlICJH
ZW5lcmF0b3JGcmFtZS5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIkpT
RW52aXJvbm1lbnRSZWNvcmQuaCIKICNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3Iu
aCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFw
UmVwb3NpdG9yeS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBS
ZXBvc2l0b3J5LmgKaW5kZXggMjEyNTgwZmRhYjdhZGJiYzE1ZjU1ODhiNWU1M2MzNzJmMjg5YTUy
YS4uMmZlZWQ2YjY3MDhlNjM3OWY5MzI0NDU0NDJhYWQ1MjkyZTA2NzFlZCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgK
QEAgLTQ4LDYgKzQ4LDggQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgewogICAgIG1h
Y3JvKERpcmVjdEFyZ3VtZW50c19sZW5ndGgsIERpcmVjdEFyZ3VtZW50czo6b2Zmc2V0T2ZMZW5n
dGgoKSkgXAogICAgIG1hY3JvKERpcmVjdEFyZ3VtZW50c19taW5DYXBhY2l0eSwgRGlyZWN0QXJn
dW1lbnRzOjpvZmZzZXRPZk1pbkNhcGFjaXR5KCkpIFwKICAgICBtYWNybyhEaXJlY3RBcmd1bWVu
dHNfb3ZlcnJpZGVzLCBEaXJlY3RBcmd1bWVudHM6Om9mZnNldE9mT3ZlcnJpZGVzKCkpIFwKKyAg
ICBtYWNybyhHZW5lcmF0b3JGcmFtZV9udW1iZXJPZkNhbGxlZUxvY2FscywgR2VuZXJhdG9yRnJh
bWU6Om51bWJlck9mQ2FsbGVlTG9jYWxzT2Zmc2V0KCkpIFwKKyAgICBtYWNybyhHZW5lcmF0b3JG
cmFtZV9udW1iZXJPZlNhdmVkQ2FsbGVlTG9jYWxzLCBHZW5lcmF0b3JGcmFtZTo6bnVtYmVyT2ZT
YXZlZENhbGxlZUxvY2Fsc09mZnNldCgpKSBcCiAgICAgbWFjcm8oR2V0dGVyU2V0dGVyX2dldHRl
ciwgR2V0dGVyU2V0dGVyOjpvZmZzZXRPZkdldHRlcigpKSBcCiAgICAgbWFjcm8oR2V0dGVyU2V0
dGVyX3NldHRlciwgR2V0dGVyU2V0dGVyOjpvZmZzZXRPZlNldHRlcigpKSBcCiAgICAgbWFjcm8o
SlNBcnJheUJ1ZmZlclZpZXdfbGVuZ3RoLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5n
dGgoKSkgXApAQCAtMTA3LDYgKzEwOSw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRlRM
IHsKIAogI2RlZmluZSBGT1JfRUFDSF9JTkRFWEVEX0FCU1RSQUNUX0hFQVAobWFjcm8pIFwKICAg
ICBtYWNybyhEaXJlY3RBcmd1bWVudHNfc3RvcmFnZSwgRGlyZWN0QXJndW1lbnRzOjpzdG9yYWdl
T2Zmc2V0KCksIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkpIFwKKyAgICBtYWNybyhHZW5lcmF0b3JG
cmFtZV9jYWxsZWVMb2NhbHMsIEdlbmVyYXRvckZyYW1lOjpvZmZzZXRPZkxvY2FscygpLCBzaXpl
b2YoV3JpdGVCYXJyaWVyPFVua25vd24+KSkgXAogICAgIG1hY3JvKEpTRW52aXJvbm1lbnRSZWNv
cmRfdmFyaWFibGVzLCBKU0Vudmlyb25tZW50UmVjb3JkOjpvZmZzZXRPZlZhcmlhYmxlcygpLCBz
aXplb2YoRW5jb2RlZEpTVmFsdWUpKSBcCiAgICAgbWFjcm8oSlNQcm9wZXJ0eU5hbWVFbnVtZXJh
dG9yX2NhY2hlZFByb3BlcnR5TmFtZXNWZWN0b3JDb250ZW50cywgMCwgc2l6ZW9mKFdyaXRlQmFy
cmllcjxKU1N0cmluZz4pKSBcCiAgICAgbWFjcm8oSlNSb3BlU3RyaW5nX2ZpYmVycywgSlNSb3Bl
U3RyaW5nOjpvZmZzZXRPZkZpYmVycygpLCBzaXplb2YoV3JpdGVCYXJyaWVyPEpTU3RyaW5nPikp
IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVz
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAppbmRl
eCBlZDc4NGJmMTBlNTg4NzY3MjQ1YmRiZGYzYjUzMTM4MzA2NjA4NjUyLi5mOTY3OTBjODVmMjZk
N2Q1NzZkMmU0ZWIyMTAyODU3N2EwMTRlNWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCkBAIC03Miw2ICs3Miw3IEBAIGlubGluZSBDYXBhYmls
aXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgTmV3T2JqZWN0OgogICAg
IGNhc2UgTmV3QXJyYXk6CiAgICAgY2FzZSBOZXdBcnJheUJ1ZmZlcjoKKyAgICBjYXNlIE5ld0dl
bmVyYXRvckZyYW1lOgogICAgIGNhc2UgTmV3VHlwZWRBcnJheToKICAgICBjYXNlIEdldEJ5T2Zm
c2V0OgogICAgIGNhc2UgR2V0R2V0dGVyU2V0dGVyQnlPZmZzZXQ6CkBAIC0yMzAsNiArMjMxLDkg
QEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2Fz
ZSBQdXRTZXR0ZXJCeVZhbDoKICAgICBjYXNlIENvcHlSZXN0OgogICAgIGNhc2UgR2V0UmVzdExl
bmd0aDoKKyAgICBjYXNlIFNldEdlbmVyYXRvckxvY2FsOgorICAgIGNhc2UgR2V0R2VuZXJhdG9y
TG9jYWw6CisgICAgY2FzZSBSZXNpemVHZW5lcmF0b3JMb2NhbHM6CiAgICAgY2FzZSBSZWdFeHBF
eGVjOgogICAgIGNhc2UgUmVnRXhwVGVzdDoKICAgICBjYXNlIE5ld1JlZ2V4cDoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCmluZGV4IDc0
ZjhjNTNlMTIxYzU1MzhmYjU0ZTdkZjQ1OTY5YWM3MzQwODA2NzkuLjYzMmIyMjljZDhlMmZjZmNi
M2E2MmQxNDkxMTg4NzY4YmY5NDAyNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcApAQCAtNjA3LDcgKzYwNyw3IEBAIEpTU3RyaW5n
KiBJbnRlcnByZXRlcjo6c3RhY2tUcmFjZUFzU3RyaW5nKFZNJiB2bSwgY29uc3QgVmVjdG9yPFN0
YWNrRnJhbWU+JiBzdGFjCiAgICAgcmV0dXJuIGpzU3RyaW5nKCZ2bSwgYnVpbGRlci50b1N0cmlu
ZygpKTsKIH0KIAotQUxXQVlTX0lOTElORSBzdGF0aWMgSGFuZGxlckluZm8qIGZpbmRFeGNlcHRp
b25IYW5kbGVyKFN0YWNrVmlzaXRvciYgdmlzaXRvciwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENv
ZGVCbG9jazo6UmVxdWlyZWRIYW5kbGVyIHJlcXVpcmVkSGFuZGxlcikKK0FMV0FZU19JTkxJTkUg
c3RhdGljIEhhbmRsZXJJbmZvKiBmaW5kRXhjZXB0aW9uSGFuZGxlcihTdGFja1Zpc2l0b3ImIHZp
c2l0b3IsIENvZGVCbG9jayogY29kZUJsb2NrLCBSZXF1aXJlZEhhbmRsZXIgcmVxdWlyZWRIYW5k
bGVyKQogewogICAgIEFTU0VSVChjb2RlQmxvY2spOwogI2lmIEVOQUJMRShERkdfSklUKQpAQCAt
NjQxLDcgKzY0MSw3IEBAIGNsYXNzIEdldENhdGNoSGFuZGxlckZ1bmN0b3IgewogICAgICAgICBp
ZiAoIWNvZGVCbG9jaykKICAgICAgICAgICAgIHJldHVybiBTdGFja1Zpc2l0b3I6OkNvbnRpbnVl
OwogCi0gICAgICAgIG1faGFuZGxlciA9IGZpbmRFeGNlcHRpb25IYW5kbGVyKHZpc2l0b3IsIGNv
ZGVCbG9jaywgQ29kZUJsb2NrOjpSZXF1aXJlZEhhbmRsZXI6OkNhdGNoSGFuZGxlcik7CisgICAg
ICAgIG1faGFuZGxlciA9IGZpbmRFeGNlcHRpb25IYW5kbGVyKHZpc2l0b3IsIGNvZGVCbG9jaywg
UmVxdWlyZWRIYW5kbGVyOjpDYXRjaEhhbmRsZXIpOwogICAgICAgICBpZiAobV9oYW5kbGVyKQog
ICAgICAgICAgICAgcmV0dXJuIFN0YWNrVmlzaXRvcjo6RG9uZTsKIApAQCAtNjgzLDcgKzY4Myw3
IEBAIGNsYXNzIFVud2luZEZ1bmN0b3IgewogICAgICAgICBtX2hhbmRsZXIgPSBudWxscHRyOwog
ICAgICAgICBpZiAoIW1faXNUZXJtaW5hdGlvbikgewogICAgICAgICAgICAgaWYgKG1fY29kZUJs
b2NrICYmICFpc1dlYkFzc2VtYmx5RXhlY3V0YWJsZShtX2NvZGVCbG9jay0+b3duZXJFeGVjdXRh
YmxlKCkpKQotICAgICAgICAgICAgICAgIG1faGFuZGxlciA9IGZpbmRFeGNlcHRpb25IYW5kbGVy
KHZpc2l0b3IsIG1fY29kZUJsb2NrLCBDb2RlQmxvY2s6OlJlcXVpcmVkSGFuZGxlcjo6QW55SGFu
ZGxlcik7CisgICAgICAgICAgICAgICAgbV9oYW5kbGVyID0gZmluZEV4Y2VwdGlvbkhhbmRsZXIo
dmlzaXRvciwgbV9jb2RlQmxvY2ssIFJlcXVpcmVkSGFuZGxlcjo6QW55SGFuZGxlcik7CiAgICAg
ICAgIH0KIAogICAgICAgICBpZiAobV9oYW5kbGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3Bw
CmluZGV4IDU0NmUyYWUxNmY1NDExZDJhZTEwNWNjMDAwZjZmMTBkMjhmNzllZmQuLjM4Yzk5MTk4
NWU4MTgwMDRlYTAzZGI0MmQzY2UyMTRhYzFiMGZkNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VC5jcHAKQEAgLTIzNyw2ICsyMzcsNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFz
cygpCiAgICAgICAgIERFRklORV9PUChvcF9hc3NlcnQpCiAgICAgICAgIERFRklORV9PUChvcF9z
YXZlKQogICAgICAgICBERUZJTkVfT1Aob3BfcmVzdW1lKQorICAgICAgICBERUZJTkVfT1Aob3Bf
bmV3X2dlbmVyYXRvcl9mcmFtZSkKICAgICAgICAgREVGSU5FX09QKG9wX2RlYnVnKQogICAgICAg
ICBERUZJTkVfT1Aob3BfZGVsX2J5X2lkKQogICAgICAgICBERUZJTkVfT1Aob3BfZGVsX2J5X3Zh
bCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCmluZGV4IDM0NTFiMjNmZDg1NGMxYTU4ZmQ0Yzk4N2Ji
YzJiMmE3OWFjODNlNWMuLmE5NWI5NWMwZjQxYzliYzZhZTVmMTY3NWZkM2YwY2JjNTA5ZGEwMDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaApAQCAtMzM5LDYgKzMzOSw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICBlbnVtIFdyaXRlQmFycmllck1vZGUgeyBVbmNvbmRpdGlvbmFsV3JpdGVC
YXJyaWVyLCBTaG91bGRGaWx0ZXJCYXNlLCBTaG91bGRGaWx0ZXJWYWx1ZSwgU2hvdWxkRmlsdGVy
QmFzZUFuZFZhbHVlIH07CiAgICAgICAgIC8vIHZhbHVlIHJlZ2lzdGVyIGluIHdyaXRlIGJhcnJp
ZXIgaXMgdXNlZCBiZWZvcmUgYW55IHNjcmF0Y2ggcmVnaXN0ZXJzCiAgICAgICAgIC8vIHNvIG1h
eSBzYWZlbHkgYmUgdGhlIHNhbWUgYXMgZWl0aGVyIG9mIHRoZSBzY3JhdGNoIHJlZ2lzdGVycy4K
KyAgICAgICAgdm9pZCBlbWl0V3JpdGVCYXJyaWVyKHVuc2lnbmVkIG93bmVyLCBXcml0ZUJhcnJp
ZXJNb2RlKTsKICAgICAgICAgdm9pZCBlbWl0V3JpdGVCYXJyaWVyKHVuc2lnbmVkIG93bmVyLCB1
bnNpZ25lZCB2YWx1ZSwgV3JpdGVCYXJyaWVyTW9kZSk7CiAgICAgICAgIHZvaWQgZW1pdFdyaXRl
QmFycmllcihKU0NlbGwqIG93bmVyLCB1bnNpZ25lZCB2YWx1ZSwgV3JpdGVCYXJyaWVyTW9kZSk7
CiAgICAgICAgIHZvaWQgZW1pdFdyaXRlQmFycmllcihKU0NlbGwqIG93bmVyKTsKQEAgLTUwNCw2
ICs1MDUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0X29wX2Fzc2VydChJ
bnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3Bfc2F2ZShJbnN0cnVjdGlvbiopOwog
ICAgICAgICB2b2lkIGVtaXRfb3BfcmVzdW1lKEluc3RydWN0aW9uKik7CisgICAgICAgIHZvaWQg
ZW1pdF9vcF9uZXdfZ2VuZXJhdG9yX2ZyYW1lKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQg
ZW1pdF9vcF9kZWJ1ZyhJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZGVsX2J5
X2lkKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9kZWxfYnlfdmFsKEluc3Ry
dWN0aW9uKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29k
ZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAppbmRleCBj
NDQzOTFjMDkzMGU1NTFlMTlmZDM0NTdmYTFhNzhhZjBkOWUyYjVlLi43NTEyMWJkMzBmYmRjZGM0
NTg0ZmRmZmZjMWQxMTNlNDc4ZGVkY2Q3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wY29kZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3Bjb2Rlcy5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJDb3BpZWRTcGFjZUlubGlu
ZXMuaCIKICNpbmNsdWRlICJEZWJ1Z2dlci5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbi5oIgorI2lu
Y2x1ZGUgIkdlbmVyYXRvckZyYW1lLmgiCiAjaW5jbHVkZSAiSGVhcC5oIgogI2luY2x1ZGUgIkpJ
VElubGluZXMuaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCkBAIC05MjMsNiArOTI0LDQ5IEBAIHZv
aWQgSklUOjplbWl0U2xvd19vcF90b19zdHJpbmcoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbiwgVmVjdG9yPFNsb3dDYXNlCiAgICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKIH0KIAordm9p
ZCBKSVQ6OmVtaXRfb3Bfc2F2ZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQorewor
ICAgIGludCBmcmFtZSA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CisgICAgdW5z
aWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUudW5z
aWduZWRWYWx1ZTsKKyAgICBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlbmVzcyA9IG1fY29kZUJs
b2NrLT5saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZChsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpOworCisg
ICAgLy8gQSBmcmFtZSBpcyBhbHdheXMgYSBjZWxsLiBObyBuZWVkIHRvIGZpbHRlciBvdXQuCisg
ICAgZW1pdFdyaXRlQmFycmllcihmcmFtZSwgVW5jb25kaXRpb25hbFdyaXRlQmFycmllcik7CisK
KyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGZyYW1lLCByZWdUMSk7CisKKyAgICAvLyBBbGxv
Y2F0ZSBnZW5lcmF0b3IgZnJhbWUgbG9jYWxzLgorICAgIHN0b3JlMzIoVHJ1c3RlZEltbTMyKGxp
dmVuZXNzLmJpdENvdW50KCkpLCBBZGRyZXNzKHJlZ1QxLCBHZW5lcmF0b3JGcmFtZTo6bnVtYmVy
T2ZTYXZlZENhbGxlZUxvY2Fsc09mZnNldCgpKSk7CisKKyAgICB1bnNpZ25lZCBnZW5lcmF0b3JM
b2NhbEluZGV4ID0gMDsKKyAgICBsaXZlbmVzcy5mb3JFYWNoU2V0Qml0KFsmXShzaXplX3QgbG9j
YWwpIHsKKyAgICAgICAgVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQgPSB2aXJ0dWFsUmVnaXN0ZXJG
b3JMb2NhbChsb2NhbCk7CisgICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIob3BlcmFuZC5v
ZmZzZXQoKSwgcmVnVDApOworICAgICAgICBzdG9yZTY0KHJlZ1QwLCBBZGRyZXNzKHJlZ1QxLCBH
ZW5lcmF0b3JGcmFtZTo6bG9jYWxPZmZzZXQoZ2VuZXJhdG9yTG9jYWxJbmRleCkpKTsKKyAgICAg
ICAgZ2VuZXJhdG9yTG9jYWxJbmRleCsrOworICAgIH0pOworfQorCit2b2lkIEpJVDo6ZW1pdF9v
cF9yZXN1bWUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBpbnQgZnJh
bWUgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOworICAgIHVuc2lnbmVkIGxpdmVD
YWxsZWVMb2NhbHNJbmRleCA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51LnVuc2lnbmVkVmFsdWU7
CisgICAgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZW5lc3MgPSBtX2NvZGVCbG9jay0+bGl2ZUNh
bGxlZUxvY2Fsc0F0WWllbGQobGl2ZUNhbGxlZUxvY2Fsc0luZGV4KTsKKworICAgIGVtaXRHZXRW
aXJ0dWFsUmVnaXN0ZXIoZnJhbWUsIHJlZ1QxKTsKKworICAgIHVuc2lnbmVkIGdlbmVyYXRvckxv
Y2FsSW5kZXggPSAwOworICAgIGxpdmVuZXNzLmZvckVhY2hTZXRCaXQoWyZdKHNpemVfdCBsb2Nh
bCkgeworICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCA9IHZpcnR1YWxSZWdpc3RlckZv
ckxvY2FsKGxvY2FsKTsKKyAgICAgICAgbG9hZDY0KEFkZHJlc3MocmVnVDEsIEdlbmVyYXRvckZy
YW1lOjpsb2NhbE9mZnNldChnZW5lcmF0b3JMb2NhbEluZGV4KSksIHJlZ1QwKTsKKyAgICAgICAg
ZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihvcGVyYW5kLm9mZnNldCgpKTsKKyAgICAgICAgZ2VuZXJh
dG9yTG9jYWxJbmRleCsrOworICAgIH0pOworCisgICAgLy8gRGVhbGxvY2F0ZSBnZW5lcmF0b3Ig
ZnJhbWUgbG9jYWxzLgorICAgIHN0b3JlMzIoVHJ1c3RlZEltbTMyKDApLCBBZGRyZXNzKHJlZ1Qx
LCBHZW5lcmF0b3JGcmFtZTo6bnVtYmVyT2ZTYXZlZENhbGxlZUxvY2Fsc09mZnNldCgpKSk7Cit9
CisKICNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9sb29wX2hp
bnQoSW5zdHJ1Y3Rpb24qKQpAQCAtMTQ4NiwxNSArMTUzMCw5IEBAIHZvaWQgSklUOjplbWl0X29w
X2dldF9yZXN0X2xlbmd0aChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogI2VuZGlm
CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX3NhdmUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKLXsKLSAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJ
bnN0cnVjdGlvbiwgc2xvd19wYXRoX3NhdmUpOwotICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7Ci19
Ci0KLXZvaWQgSklUOjplbWl0X29wX3Jlc3VtZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQordm9pZCBKSVQ6OmVtaXRfb3BfbmV3X2dlbmVyYXRvcl9mcmFtZShJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQogewotICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwo
dGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfcmVzdW1lKTsKKyAgICBKSVRTbG93
UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRo
X25ld19nZW5lcmF0b3JfZnJhbWUpOwogICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAppbmRleCA1NWRi
NDE2NDZlYWFjNDgwMjlkMjk2MzMwZjAwZWRjNWUyN2ZiMTBlLi5hZGE1OTg2YjYzMGQxMmY3MjU5
OWE5NDY4N2ZkZTg5ODhmNDc0NTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wY29kZXMzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGNvZGVzMzJfNjQuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiQ0NhbGxIZWxw
ZXJzLmgiCiAjaW5jbHVkZSAiRGVidWdnZXIuaCIKICNpbmNsdWRlICJFeGNlcHRpb24uaCIKKyNp
bmNsdWRlICJHZW5lcmF0b3JGcmFtZS5oIgogI2luY2x1ZGUgIkpJVElubGluZXMuaCIKICNpbmNs
dWRlICJKU0FycmF5LmgiCiAjaW5jbHVkZSAiSlNDZWxsLmgiCkBAIC0xMzg1LDYgKzEzODYsNTEg
QEAgdm9pZCBKSVQ6OmVtaXRfb3BfbG9nX3NoYWRvd19jaGlja2VuX3RhaWwoSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBsb2dTaGFkb3dDaGlja2VuVGFpbFBhY2tldChzaGFk
b3dQYWNrZXRSZWcsIHRoaXNSZWdzLCByZWdUMywgbV9jb2RlQmxvY2ssIENhbGxTaXRlSW5kZXgo
Y3VycmVudEluc3RydWN0aW9uKSk7CiB9CiAKK3ZvaWQgSklUOjplbWl0X29wX3NhdmUoSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sKKyAgICBpbnQgZnJhbWUgPSBjdXJyZW50SW5z
dHJ1Y3Rpb25bMV0udS5vcGVyYW5kOworICAgIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRl
eCA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51LnVuc2lnbmVkVmFsdWU7CisgICAgY29uc3QgRmFz
dEJpdFZlY3RvciYgbGl2ZW5lc3MgPSBtX2NvZGVCbG9jay0+bGl2ZUNhbGxlZUxvY2Fsc0F0WWll
bGQobGl2ZUNhbGxlZUxvY2Fsc0luZGV4KTsKKworICAgIC8vIEEgZnJhbWUgaXMgYWx3YXlzIGEg
Y2VsbC4gTm8gbmVlZCB0byBmaWx0ZXIgb3V0LgorICAgIGVtaXRXcml0ZUJhcnJpZXIoZnJhbWUs
IFVuY29uZGl0aW9uYWxXcml0ZUJhcnJpZXIpOworCisgICAgZW1pdExvYWRQYXlsb2FkKGZyYW1l
LCByZWdUMik7CisKKyAgICAvLyBBbGxvY2F0ZSBnZW5lcmF0b3IgZnJhbWUgbG9jYWxzLgorICAg
IHN0b3JlMzIoVHJ1c3RlZEltbTMyKGxpdmVuZXNzLmJpdENvdW50KCkpLCBBZGRyZXNzKHJlZ1Qy
LCBHZW5lcmF0b3JGcmFtZTo6bnVtYmVyT2ZTYXZlZENhbGxlZUxvY2Fsc09mZnNldCgpKSk7CisK
KyAgICB1bnNpZ25lZCBnZW5lcmF0b3JMb2NhbEluZGV4ID0gMDsKKyAgICBsaXZlbmVzcy5mb3JF
YWNoU2V0Qml0KFsmXShzaXplX3QgbG9jYWwpIHsKKyAgICAgICAgVmlydHVhbFJlZ2lzdGVyIG9w
ZXJhbmQgPSB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChsb2NhbCk7CisgICAgICAgIGVtaXRHZXRW
aXJ0dWFsUmVnaXN0ZXIob3BlcmFuZC5vZmZzZXQoKSwgSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1Qw
KSk7CisgICAgICAgIHN0b3JlMzIocmVnVDEsIEFkZHJlc3MocmVnVDIsIEdlbmVyYXRvckZyYW1l
Ojpsb2NhbE9mZnNldChnZW5lcmF0b3JMb2NhbEluZGV4KSArIE9CSkVDVF9PRkZTRVRPRihKU1Zh
bHVlLCB1LmFzQml0cy50YWcpKSk7CisgICAgICAgIHN0b3JlMzIocmVnVDAsIEFkZHJlc3MocmVn
VDIsIEdlbmVyYXRvckZyYW1lOjpsb2NhbE9mZnNldChnZW5lcmF0b3JMb2NhbEluZGV4KSArIE9C
SkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy5wYXlsb2FkKSkpOworICAgICAgICBnZW5l
cmF0b3JMb2NhbEluZGV4Kys7CisgICAgfSk7Cit9CisKK3ZvaWQgSklUOjplbWl0X29wX3Jlc3Vt
ZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQoreworICAgIGludCBmcmFtZSA9IGN1
cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CisgICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxv
Y2Fsc0luZGV4ID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUudW5zaWduZWRWYWx1ZTsKKyAgICBj
b25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlbmVzcyA9IG1fY29kZUJsb2NrLT5saXZlQ2FsbGVlTG9j
YWxzQXRZaWVsZChsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpOworCisgICAgZW1pdExvYWRQYXlsb2Fk
KGZyYW1lLCByZWdUMik7CisKKyAgICB1bnNpZ25lZCBnZW5lcmF0b3JMb2NhbEluZGV4ID0gMDsK
KyAgICBsaXZlbmVzcy5mb3JFYWNoU2V0Qml0KFsmXShzaXplX3QgbG9jYWwpIHsKKyAgICAgICAg
VmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQgPSB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChsb2NhbCk7
CisgICAgICAgIGxvYWQzMihBZGRyZXNzKHJlZ1QyLCBHZW5lcmF0b3JGcmFtZTo6bG9jYWxPZmZz
ZXQoZ2VuZXJhdG9yTG9jYWxJbmRleCkgKyBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0Jp
dHMudGFnKSksIHJlZ1QxKTsKKyAgICAgICAgbG9hZDMyKEFkZHJlc3MocmVnVDIsIEdlbmVyYXRv
ckZyYW1lOjpsb2NhbE9mZnNldChnZW5lcmF0b3JMb2NhbEluZGV4KSArIE9CSkVDVF9PRkZTRVRP
RihKU1ZhbHVlLCB1LmFzQml0cy5wYXlsb2FkKSksIHJlZ1QwKTsKKyAgICAgICAgZW1pdFB1dFZp
cnR1YWxSZWdpc3RlcihvcGVyYW5kLm9mZnNldCgpLCBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDAp
KTsKKyAgICAgICAgZ2VuZXJhdG9yTG9jYWxJbmRleCsrOworICAgIH0pOworCisgICAgLy8gRGVh
bGxvY2F0ZSBnZW5lcmF0b3IgZnJhbWUgbG9jYWxzLgorICAgIHN0b3JlMzIoVHJ1c3RlZEltbTMy
KDApLCBBZGRyZXNzKHJlZ1QyLCBHZW5lcmF0b3JGcmFtZTo6bnVtYmVyT2ZTYXZlZENhbGxlZUxv
Y2Fsc09mZnNldCgpKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gVVNF
KEpTVkFMVUUzMl82NCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
UHJvcGVydHlBY2Nlc3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0
eUFjY2Vzcy5jcHAKaW5kZXggNDM4M2ExMzU5Nzk2ZTc1N2VkNWNjNmJkNTVlMDdkOWZkNDk0MWRm
My4uZWRmZTdiMDdhMWYwODM2NDg3NzQ3NDA5NWE1ZWMwZmNkYjI4YzY0NCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKQEAgLTExNjYsMTQg
KzExNjYsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfdG9fYXJndW1lbnRzKEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAjZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkKIAogI2lmIFVT
RShKU1ZBTFVFNjQpCi12b2lkIEpJVDo6ZW1pdFdyaXRlQmFycmllcih1bnNpZ25lZCBvd25lciwg
dW5zaWduZWQgdmFsdWUsIFdyaXRlQmFycmllck1vZGUgbW9kZSkKK3ZvaWQgSklUOjplbWl0V3Jp
dGVCYXJyaWVyKHVuc2lnbmVkIG93bmVyLCBXcml0ZUJhcnJpZXJNb2RlIG1vZGUpCiB7Ci0gICAg
SnVtcCB2YWx1ZU5vdENlbGw7Ci0gICAgaWYgKG1vZGUgPT0gU2hvdWxkRmlsdGVyVmFsdWUgfHwg
bW9kZSA9PSBTaG91bGRGaWx0ZXJCYXNlQW5kVmFsdWUpIHsKLSAgICAgICAgZW1pdEdldFZpcnR1
YWxSZWdpc3Rlcih2YWx1ZSwgcmVnVDApOwotICAgICAgICB2YWx1ZU5vdENlbGwgPSBicmFuY2hU
ZXN0NjQoTm9uWmVybywgcmVnVDAsIHRhZ01hc2tSZWdpc3Rlcik7Ci0gICAgfQotICAgIAogICAg
IGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIob3duZXIsIHJlZ1QwKTsKICAgICBKdW1wIG93bmVyTm90
Q2VsbDsKICAgICBpZiAobW9kZSA9PSBTaG91bGRGaWx0ZXJCYXNlQW5kVmFsdWUgfHwgbW9kZSA9
PSBTaG91bGRGaWx0ZXJCYXNlKQpAQCAtMTE4NSw2ICsxMTc5LDE4IEBAIHZvaWQgSklUOjplbWl0
V3JpdGVCYXJyaWVyKHVuc2lnbmVkIG93bmVyLCB1bnNpZ25lZCB2YWx1ZSwgV3JpdGVCYXJyaWVy
TW9kZSBtb2RlCiAKICAgICBpZiAobW9kZSA9PSBTaG91bGRGaWx0ZXJCYXNlQW5kVmFsdWUgfHwg
bW9kZSA9PSBTaG91bGRGaWx0ZXJCYXNlKQogICAgICAgICBvd25lck5vdENlbGwubGluayh0aGlz
KTsKK30KKwordm9pZCBKSVQ6OmVtaXRXcml0ZUJhcnJpZXIodW5zaWduZWQgb3duZXIsIHVuc2ln
bmVkIHZhbHVlLCBXcml0ZUJhcnJpZXJNb2RlIG1vZGUpCit7CisgICAgSnVtcCB2YWx1ZU5vdENl
bGw7CisgICAgaWYgKG1vZGUgPT0gU2hvdWxkRmlsdGVyVmFsdWUgfHwgbW9kZSA9PSBTaG91bGRG
aWx0ZXJCYXNlQW5kVmFsdWUpIHsKKyAgICAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcih2YWx1
ZSwgcmVnVDApOworICAgICAgICB2YWx1ZU5vdENlbGwgPSBicmFuY2hUZXN0NjQoTm9uWmVybywg
cmVnVDAsIHRhZ01hc2tSZWdpc3Rlcik7CisgICAgfQorCisgICAgZW1pdFdyaXRlQmFycmllcihv
d25lciwgbW9kZSk7CisKICAgICBpZiAobW9kZSA9PSBTaG91bGRGaWx0ZXJWYWx1ZSB8fCBtb2Rl
ID09IFNob3VsZEZpbHRlckJhc2VBbmRWYWx1ZSkgCiAgICAgICAgIHZhbHVlTm90Q2VsbC5saW5r
KHRoaXMpOwogfQpAQCAtMTIwNCwxNCArMTIxMCw4IEBAIHZvaWQgSklUOjplbWl0V3JpdGVCYXJy
aWVyKEpTQ2VsbCogb3duZXIsIHVuc2lnbmVkIHZhbHVlLCBXcml0ZUJhcnJpZXJNb2RlIG1vZGUp
CiAKICNlbHNlIC8vIFVTRShKU1ZBTFVFNjQpCiAKLXZvaWQgSklUOjplbWl0V3JpdGVCYXJyaWVy
KHVuc2lnbmVkIG93bmVyLCB1bnNpZ25lZCB2YWx1ZSwgV3JpdGVCYXJyaWVyTW9kZSBtb2RlKQor
dm9pZCBKSVQ6OmVtaXRXcml0ZUJhcnJpZXIodW5zaWduZWQgb3duZXIsIFdyaXRlQmFycmllck1v
ZGUgbW9kZSkKIHsKLSAgICBKdW1wIHZhbHVlTm90Q2VsbDsKLSAgICBpZiAobW9kZSA9PSBTaG91
bGRGaWx0ZXJWYWx1ZSB8fCBtb2RlID09IFNob3VsZEZpbHRlckJhc2VBbmRWYWx1ZSkgewotICAg
ICAgICBlbWl0TG9hZFRhZyh2YWx1ZSwgcmVnVDApOwotICAgICAgICB2YWx1ZU5vdENlbGwgPSBi
cmFuY2gzMihOb3RFcXVhbCwgcmVnVDAsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSk7
Ci0gICAgfQotICAgIAogICAgIGVtaXRMb2FkKG93bmVyLCByZWdUMCwgcmVnVDEpOwogICAgIEp1
bXAgb3duZXJOb3RDZWxsOwogICAgIGlmIChtb2RlID09IFNob3VsZEZpbHRlckJhc2UgfHwgbW9k
ZSA9PSBTaG91bGRGaWx0ZXJCYXNlQW5kVmFsdWUpCkBAIC0xMjIzLDcgKzEyMjMsMjAgQEAgdm9p
ZCBKSVQ6OmVtaXRXcml0ZUJhcnJpZXIodW5zaWduZWQgb3duZXIsIHVuc2lnbmVkIHZhbHVlLCBX
cml0ZUJhcnJpZXJNb2RlIG1vZGUKIAogICAgIGlmIChtb2RlID09IFNob3VsZEZpbHRlckJhc2Ug
fHwgbW9kZSA9PSBTaG91bGRGaWx0ZXJCYXNlQW5kVmFsdWUpCiAgICAgICAgIG93bmVyTm90Q2Vs
bC5saW5rKHRoaXMpOwotICAgIGlmIChtb2RlID09IFNob3VsZEZpbHRlclZhbHVlIHx8IG1vZGUg
PT0gU2hvdWxkRmlsdGVyQmFzZUFuZFZhbHVlKSAKK30KKworCit2b2lkIEpJVDo6ZW1pdFdyaXRl
QmFycmllcih1bnNpZ25lZCBvd25lciwgdW5zaWduZWQgdmFsdWUsIFdyaXRlQmFycmllck1vZGUg
bW9kZSkKK3sKKyAgICBKdW1wIHZhbHVlTm90Q2VsbDsKKyAgICBpZiAobW9kZSA9PSBTaG91bGRG
aWx0ZXJWYWx1ZSB8fCBtb2RlID09IFNob3VsZEZpbHRlckJhc2VBbmRWYWx1ZSkgeworICAgICAg
ICBlbWl0TG9hZFRhZyh2YWx1ZSwgcmVnVDApOworICAgICAgICB2YWx1ZU5vdENlbGwgPSBicmFu
Y2gzMihOb3RFcXVhbCwgcmVnVDAsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSk7Cisg
ICAgfQorCisgICAgZW1pdFdyaXRlQmFycmllcihvd25lciwgbW9kZSk7CisKKyAgICBpZiAobW9k
ZSA9PSBTaG91bGRGaWx0ZXJWYWx1ZSB8fCBtb2RlID09IFNob3VsZEZpbHRlckJhc2VBbmRWYWx1
ZSkKICAgICAgICAgdmFsdWVOb3RDZWxsLmxpbmsodGhpcyk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKaW5kZXgg
OGViOWE1MGVkZmY1NmRkYTZjM2M3NDY4NmNhNGQyNThmYzk3M2M5Yy4uZGQ2ZWEwMmQ2YzY5NDM0
NmU0MDA2NjEwZTM5MDIyNjRiZWQyYjc2YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKQEAgLTMyLDYgKzMyLDcgQEAK
ICNpbmNsdWRlICJEaXJlY3RBcmd1bWVudHMuaCIKICNpbmNsdWRlICJFeGNlcHRpb24uaCIKICNp
bmNsdWRlICJFeGVjdXRhYmxlLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yRnJhbWUuaCIKICNpbmNs
dWRlICJIZWFwLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKU0FycmF5
LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlci5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlci5hc20KaW5kZXggZGZhNmZkNWE0YTg0YTBhZjRiMDdlZjRjZDMwNTk5MTkwZjYyMjIyNi4u
YjdkMWYzZjM0MjY1Mjk2YTJjZjlkYjYwM2Q3NWQ1NTc4NTE5NzcyMyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQpAQCAtMTI4
Niw2ICsxMjg2LDEyIEBAIF9sbGludF9vcF9uZXdfcmVnZXhwOgogICAgIGRpc3BhdGNoKDMpCiAK
IAorX2xsaW50X29wX25ld19nZW5lcmF0b3JfZnJhbWU6CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGNhbGxTbG93UGF0aChfc2xvd19wYXRoX25ld19nZW5lcmF0b3JfZnJhbWUpCisgICAgZGlz
cGF0Y2goMykKKworCiBfbGxpbnRfb3BfbGVzczoKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAg
Y2FsbE9wY29kZVNsb3dQYXRoKF9zbG93X3BhdGhfbGVzcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvUGFyc2VyLmNwcAppbmRleCA3Zjk2YmE0ODAwZDI3Yzg1NGMzOTVmNGYyNjY3ZWExNTgw
YzA2N2Y4Li5hNjdjZmFlN2QzODQ0YTM4ODMyMTIzNjg3MzM5MmU4OTNiNThhMTYwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCkBAIC0yNTYsNyArMjU2LDcgQEAgU3Ry
aW5nIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUlubmVyKGNvbnN0IElkZW50aWZpZXImIGNhbGxl
ZU5hbWUsIFNvdXJjZVBhcnNlTW8KICAgICBpZiAobV9sZXhlci0+aXNSZXBhcnNpbmdGdW5jdGlv
bigpKSB7CiAgICAgICAgIFBhcnNlckZ1bmN0aW9uSW5mbzxBU1RCdWlsZGVyPiBmdW5jdGlvbklu
Zm87CiAgICAgICAgIGlmIChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JC
b2R5TW9kZSkKLSAgICAgICAgICAgIG1fcGFyYW1ldGVycyA9IGNyZWF0ZUdlbmVyYXRvclBhcmFt
ZXRlcnMoY29udGV4dCk7CisgICAgICAgICAgICBtX3BhcmFtZXRlcnMgPSBjcmVhdGVHZW5lcmF0
b3JQYXJhbWV0ZXJzKGNvbnRleHQsIGZ1bmN0aW9uSW5mby5wYXJhbWV0ZXJDb3VudCk7CiAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgIG1fcGFyYW1ldGVycyA9IHBhcnNlRnVuY3Rpb25QYXJhbWV0
ZXJzKGNvbnRleHQsIHBhcnNlTW9kZSwgZnVuY3Rpb25JbmZvKTsKIApAQCAtNDk5LDEwICs0OTks
OSBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTb3VyY2VFbGVtZW50cyBQYXJz
ZXI8TGV4ZXJUeXBlPjo6cGFyc2VHZW5lcmF0bwogCiAgICAgUGFyc2VyRnVuY3Rpb25JbmZvPFRy
ZWVCdWlsZGVyPiBpbmZvOwogICAgIGluZm8ubmFtZSA9ICZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5u
dWxsSWRlbnRpZmllcjsKLSAgICBjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKGNvbnRleHQpOwor
ICAgIGNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMoY29udGV4dCwgaW5mby5wYXJhbWV0ZXJDb3Vu
dCk7CiAgICAgaW5mby5zdGFydE9mZnNldCA9IHBhcmFtZXRlcnNTdGFydDsKICAgICBpbmZvLnN0
YXJ0TGluZSA9IHRva2VuTGluZSgpOwotICAgIGluZm8ucGFyYW1ldGVyQ291bnQgPSA0OyAvLyBn
ZW5lcmF0b3IsIHN0YXRlLCB2YWx1ZSwgcmVzdW1lIG1vZGUKIAogICAgIHsKICAgICAgICAgQXV0
b1BvcFNjb3BlUmVmIGdlbmVyYXRvckJvZHlTY29wZSh0aGlzLCBwdXNoU2NvcGUoKSk7CkBAIC0x
ODkxLDMyICsxODkwLDMwIEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+IHRlbXBsYXRl
IDxjbGFzcyBUcmVlQnVpbGRlciwgY2xhc3MgRnVuY3Rpb25JbmZvVHlwCiB9CiAKIHRlbXBsYXRl
IDx0eXBlbmFtZSBMZXhlclR5cGU+Ci10ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IHR5cGVu
YW1lIFRyZWVCdWlsZGVyOjpGb3JtYWxQYXJhbWV0ZXJMaXN0IFBhcnNlcjxMZXhlclR5cGU+Ojpj
cmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKFRyZWVCdWlsZGVyJiBjb250ZXh0KQordGVtcGxhdGUg
PGNsYXNzIFRyZWVCdWlsZGVyPiB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6Rm9ybWFsUGFyYW1ldGVy
TGlzdCBQYXJzZXI8TGV4ZXJUeXBlPjo6Y3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhUcmVlQnVp
bGRlciYgY29udGV4dCwgdW5zaWduZWQmIHBhcmFtZXRlckNvdW50KQogewogICAgIGF1dG8gcGFy
YW1ldGVycyA9IGNvbnRleHQuY3JlYXRlRm9ybWFsUGFyYW1ldGVyTGlzdCgpOwogCiAgICAgSlNU
b2tlbkxvY2F0aW9uIGxvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CiAgICAgSlNUZXh0UG9zaXRp
b24gcG9zaXRpb24gPSB0b2tlblN0YXJ0UG9zaXRpb24oKTsKIAotICAgIC8vIEBnZW5lcmF0b3IK
LSAgICBkZWNsYXJlUGFyYW1ldGVyKCZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMo
KS5nZW5lcmF0b3JQcml2YXRlTmFtZSgpKTsKLSAgICBhdXRvIGdlbmVyYXRvciA9IGNvbnRleHQu
Y3JlYXRlQmluZGluZ0xvY2F0aW9uKGxvY2F0aW9uLCBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5idWls
dGluTmFtZXMoKS5nZW5lcmF0b3JQcml2YXRlTmFtZSgpLCBwb3NpdGlvbiwgcG9zaXRpb24sIEFz
c2lnbm1lbnRDb250ZXh0OjpEZWNsYXJhdGlvblN0YXRlbWVudCk7Ci0gICAgY29udGV4dC5hcHBl
bmRQYXJhbWV0ZXIocGFyYW1ldGVycywgZ2VuZXJhdG9yLCAwKTsKKyAgICBhdXRvIGFkZFBhcmFt
ZXRlciA9IFsmXShjb25zdCBJZGVudGlmaWVyJiBuYW1lKSB7CisgICAgICAgIGRlY2xhcmVQYXJh
bWV0ZXIoJm5hbWUpOworICAgICAgICBhdXRvIGJpbmRpbmcgPSBjb250ZXh0LmNyZWF0ZUJpbmRp
bmdMb2NhdGlvbihsb2NhdGlvbiwgbmFtZSwgcG9zaXRpb24sIHBvc2l0aW9uLCBBc3NpZ25tZW50
Q29udGV4dDo6RGVjbGFyYXRpb25TdGF0ZW1lbnQpOworICAgICAgICBjb250ZXh0LmFwcGVuZFBh
cmFtZXRlcihwYXJhbWV0ZXJzLCBiaW5kaW5nLCAwKTsKKyAgICAgICAgKytwYXJhbWV0ZXJDb3Vu
dDsKKyAgICB9OwogCisgICAgLy8gQGdlbmVyYXRvcgorICAgIGFkZFBhcmFtZXRlcihtX3ZtLT5w
cm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JQcml2YXRlTmFtZSgpKTsKICAg
ICAvLyBAZ2VuZXJhdG9yU3RhdGUKLSAgICBkZWNsYXJlUGFyYW1ldGVyKCZtX3ZtLT5wcm9wZXJ0
eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JTdGF0ZVByaXZhdGVOYW1lKCkpOwotICAg
IGF1dG8gZ2VuZXJhdG9yU3RhdGUgPSBjb250ZXh0LmNyZWF0ZUJpbmRpbmdMb2NhdGlvbihsb2Nh
dGlvbiwgbV92bS0+cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yU3RhdGVQ
cml2YXRlTmFtZSgpLCBwb3NpdGlvbiwgcG9zaXRpb24sIEFzc2lnbm1lbnRDb250ZXh0OjpEZWNs
YXJhdGlvblN0YXRlbWVudCk7Ci0gICAgY29udGV4dC5hcHBlbmRQYXJhbWV0ZXIocGFyYW1ldGVy
cywgZ2VuZXJhdG9yU3RhdGUsIDApOwotCisgICAgYWRkUGFyYW1ldGVyKG1fdm0tPnByb3BlcnR5
TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclN0YXRlUHJpdmF0ZU5hbWUoKSk7CiAgICAg
Ly8gQGdlbmVyYXRvclZhbHVlCi0gICAgZGVjbGFyZVBhcmFtZXRlcigmbV92bS0+cHJvcGVydHlO
YW1lcy0+YnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yVmFsdWVQcml2YXRlTmFtZSgpKTsKLSAgICBh
dXRvIGdlbmVyYXRvclZhbHVlID0gY29udGV4dC5jcmVhdGVCaW5kaW5nTG9jYXRpb24obG9jYXRp
b24sIG1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclZhbHVlUHJp
dmF0ZU5hbWUoKSwgcG9zaXRpb24sIHBvc2l0aW9uLCBBc3NpZ25tZW50Q29udGV4dDo6RGVjbGFy
YXRpb25TdGF0ZW1lbnQpOwotICAgIGNvbnRleHQuYXBwZW5kUGFyYW1ldGVyKHBhcmFtZXRlcnMs
IGdlbmVyYXRvclZhbHVlLCAwKTsKLQorICAgIGFkZFBhcmFtZXRlcihtX3ZtLT5wcm9wZXJ0eU5h
bWVzLT5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JWYWx1ZVByaXZhdGVOYW1lKCkpOwogICAgIC8v
IEBnZW5lcmF0b3JSZXN1bWVNb2RlCi0gICAgZGVjbGFyZVBhcmFtZXRlcigmbV92bS0+cHJvcGVy
dHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yUmVzdW1lTW9kZVByaXZhdGVOYW1lKCkp
OwotICAgIGF1dG8gZ2VuZXJhdG9yUmVzdW1lTW9kZSA9IGNvbnRleHQuY3JlYXRlQmluZGluZ0xv
Y2F0aW9uKGxvY2F0aW9uLCBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZW5l
cmF0b3JSZXN1bWVNb2RlUHJpdmF0ZU5hbWUoKSwgcG9zaXRpb24sIHBvc2l0aW9uLCBBc3NpZ25t
ZW50Q29udGV4dDo6RGVjbGFyYXRpb25TdGF0ZW1lbnQpOwotICAgIGNvbnRleHQuYXBwZW5kUGFy
YW1ldGVyKHBhcmFtZXRlcnMsIGdlbmVyYXRvclJlc3VtZU1vZGUsIDApOworICAgIGFkZFBhcmFt
ZXRlcihtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JSZXN1bWVN
b2RlUHJpdmF0ZU5hbWUoKSk7CisgICAgLy8gQGdlbmVyYXRvckZyYW1lCisgICAgYWRkUGFyYW1l
dGVyKG1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvckZyYW1lUHJp
dmF0ZU5hbWUoKSk7CiAKICAgICByZXR1cm4gcGFyYW1ldGVyczsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL1BhcnNlci5oCmluZGV4IDA1ZDM0YTcxODVlN2I0ZmJjZDAxMTk3YzBmYTU0MzBj
ZWQ0NGQyYWEuLmQwY2M5OWYyN2Y1MDU3YmNkMGM3NWY4ODY0N2ZkZTdkZjg2NTgxNTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaApAQCAtMTQ0Miw3ICsxNDQyLDcgQEAgY2xh
c3MgUGFyc2VyIHsKICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNBcnJvd0Z1bmN0aW9uUGFyYW1l
dGVycygpOwogICAgIAogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlciwgY2xhc3MgRnVu
Y3Rpb25JbmZvVHlwZT4gTkVWRVJfSU5MSU5FIHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpGb3JtYWxQ
YXJhbWV0ZXJMaXN0IHBhcnNlRnVuY3Rpb25QYXJhbWV0ZXJzKFRyZWVCdWlsZGVyJiwgU291cmNl
UGFyc2VNb2RlLCBGdW5jdGlvbkluZm9UeXBlJik7Ci0gICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVC
dWlsZGVyPiBORVZFUl9JTkxJTkUgdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkZvcm1hbFBhcmFtZXRl
ckxpc3QgY3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhUcmVlQnVpbGRlciYpOworICAgIHRlbXBs
YXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gTkVWRVJfSU5MSU5FIHR5cGVuYW1lIFRyZWVCdWlsZGVy
OjpGb3JtYWxQYXJhbWV0ZXJMaXN0IGNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMoVHJlZUJ1aWxk
ZXImLCB1bnNpZ25lZCYgcGFyYW1ldGVyQ291bnQpOwogCiAgICAgdGVtcGxhdGUgPGNsYXNzIFRy
ZWVCdWlsZGVyPiBORVZFUl9JTkxJTkUgVHJlZUNsYXNzRXhwcmVzc2lvbiBwYXJzZUNsYXNzKFRy
ZWVCdWlsZGVyJiwgRnVuY3Rpb25SZXF1aXJlbWVudHMsIFBhcnNlckNsYXNzSW5mbzxUcmVlQnVp
bGRlcj4mKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
bW9uU2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNs
b3dQYXRocy5jcHAKaW5kZXggYTE1Nzg5MTdlZmI2MWQ0NTEwYjI1MTBhY2Y4MjU1NDc2NTY2OGVh
Zi4uYjE1MTI0YzljNTYyNDZkZmFhYTI0ZDgyZjJjMWU0NTNkMmU3ZWIxZiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCkBAIC03MTks
MTggKzcxOSw3IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9zYXZlKQogICAgIC8vIE9ubHkg
c2F2ZSB2YXJpYWJsZXMgYW5kIHRlbXBvcmFyeSByZWdpc3RlcnMuIFRoZSBzY29wZSByZWdpc3Rl
cnMgYXJlIGluY2x1ZGVkIGluIHRoZW0uCiAgICAgLy8gQnV0IHBhcmFtZXRlcnMgYXJlIG5vdCBp
bmNsdWRlZC4gQmVjYXVzZSB0aGUgZ2VuZXJhdG9yIGltcGxlbWVudGF0aW9uIHJlcGxhY2VzIHRo
ZSB2YWx1ZXMgb2YgcGFyYW1ldGVycyBvbiBlYWNoIGdlbmVyYXRvci5uZXh0KCkgY2FsbC4KICAg
ICBCRUdJTigpOwotICAgIEpTVmFsdWUgZ2VuZXJhdG9yID0gT1AoMSkuanNWYWx1ZSgpOwotICAg
IEdlbmVyYXRvckZyYW1lKiBmcmFtZSA9IG51bGxwdHI7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IGdl
bmVyYXRvci5nZXQoZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmdl
bmVyYXRvckZyYW1lUHJpdmF0ZU5hbWUoKSk7Ci0gICAgaWYgKCF2YWx1ZS5pc051bGwoKSkKLSAg
ICAgICAgZnJhbWUgPSBqc0Nhc3Q8R2VuZXJhdG9yRnJhbWUqPih2YWx1ZSk7Ci0gICAgZWxzZSB7
Ci0gICAgICAgIC8vIEZJWE1FOiBPbmNlIEpTR2VuZXJhdG9yIHNwZWNpYWxpemVkIG9iamVjdCBp
cyBpbnRyb2R1Y2VkLCB0aGlzIEdlbmVyYXRvckZyYW1lIHNob3VsZCBiZSBlbWJlZGVkIGludG8g
aXQgdG8gYXZvaWQgYWxsb2NhdGlvbnMuCi0gICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE1NDUKLSAgICAgICAgZnJhbWUgPSBHZW5lcmF0b3JGcmFt
ZTo6Y3JlYXRlKGV4ZWMtPnZtKCksICBleGVjLT5jb2RlQmxvY2soKS0+bnVtQ2FsbGVlTG9jYWxz
KCkpOwotICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChnZW5lcmF0b3IsIHRydWUsIFB1dFBy
b3BlcnR5U2xvdDo6UHV0QnlJZCk7Ci0gICAgICAgIGFzT2JqZWN0KGdlbmVyYXRvciktPm1ldGhv
ZFRhYmxlKGV4ZWMtPnZtKCkpLT5wdXQoYXNPYmplY3QoZ2VuZXJhdG9yKSwgZXhlYywgZXhlYy0+
cHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvckZyYW1lUHJpdmF0ZU5hbWUo
KSwgZnJhbWUsIHNsb3QpOwotICAgIH0KKyAgICBHZW5lcmF0b3JGcmFtZSogZnJhbWUgPSBqc0Nh
c3Q8R2VuZXJhdG9yRnJhbWUqPihPUCgxKS5qc1ZhbHVlKCkpOwogICAgIHVuc2lnbmVkIGxpdmVD
YWxsZWVMb2NhbHNJbmRleCA9IHBjWzJdLnUudW5zaWduZWRWYWx1ZTsKICAgICBmcmFtZS0+c2F2
ZShleGVjLCBleGVjLT5jb2RlQmxvY2soKS0+bGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQobGl2ZUNh
bGxlZUxvY2Fsc0luZGV4KSk7CiAgICAgRU5EKCk7CkBAIC03MzksOCArNzI4LDcgQEAgU0xPV19Q
QVRIX0RFQ0woc2xvd19wYXRoX3NhdmUpCiBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcmVzdW1l
KQogewogICAgIEJFR0lOKCk7Ci0gICAgSlNWYWx1ZSBnZW5lcmF0b3IgPSBPUCgxKS5qc1ZhbHVl
KCk7Ci0gICAgR2VuZXJhdG9yRnJhbWUqIGZyYW1lID0ganNDYXN0PEdlbmVyYXRvckZyYW1lKj4o
Z2VuZXJhdG9yLmdldChleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCku
Z2VuZXJhdG9yRnJhbWVQcml2YXRlTmFtZSgpKSk7CisgICAgR2VuZXJhdG9yRnJhbWUqIGZyYW1l
ID0ganNDYXN0PEdlbmVyYXRvckZyYW1lKj4oT1AoMSkuanNWYWx1ZSgpKTsKICAgICB1bnNpZ25l
ZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSBwY1syXS51LnVuc2lnbmVkVmFsdWU7CiAgICAgZnJh
bWUtPnJlc3VtZShleGVjLCBleGVjLT5jb2RlQmxvY2soKS0+bGl2ZUNhbGxlZUxvY2Fsc0F0WWll
bGQobGl2ZUNhbGxlZUxvY2Fsc0luZGV4KSk7CiAgICAgRU5EKCk7CkBAIC04OTksNCArODg3LDEy
IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRfYnlfdmFsX3dpdGhfdGhpcykKICAgICBF
TkQoKTsKIH0KIAorU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX25ld19nZW5lcmF0b3JfZnJhbWUp
Cit7CisgICAgQkVHSU4oKTsKKyAgICB1bnNpZ25lZCBnZW5lcmF0b3JMb2NhbHNTaXplID0gcGNb
Ml0udS51bnNpZ25lZFZhbHVlOworICAgIFJFVFVSTihHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlKGV4
ZWMsIGdlbmVyYXRvckxvY2Fsc1NpemUpKTsKK30KKworCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKaW5kZXgg
Nzg0MTA5YzU3ODIzNDY5ZmNmMTA1ZDU0MDNhZDA0ZjZlZTk5NTEzZi4uYzU5OTIzNGIyODY3YTEx
NDE5YzhhZDY0NzFhNzI4MDAzZjI3ZjBhOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKQEAgLTI1Niw2ICsyNTYsNyBAQCBTTE9XX1BBVEhf
SElEREVOX0RFQ0woc2xvd19wYXRoX2dldF9ieV9pZF93aXRoX3RoaXMpOwogU0xPV19QQVRIX0hJ
RERFTl9ERUNMKHNsb3dfcGF0aF9nZXRfYnlfdmFsX3dpdGhfdGhpcyk7CiBTTE9XX1BBVEhfSElE
REVOX0RFQ0woc2xvd19wYXRoX3B1dF9ieV9pZF93aXRoX3RoaXMpOwogU0xPV19QQVRIX0hJRERF
Tl9ERUNMKHNsb3dfcGF0aF9wdXRfYnlfdmFsX3dpdGhfdGhpcyk7CitTTE9XX1BBVEhfSElEREVO
X0RFQ0woc2xvd19wYXRoX25ld19nZW5lcmF0b3JfZnJhbWUpOwogCiB9IC8vIG5hbWVzcGFjZSBK
U0MKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9y
RnJhbWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJhbWUu
Y3BwCmluZGV4IGVmNmVhN2ExMDAyNThjM2VjZTA0ZGFhYjQzYmRhYTg1MWVjOGY3MTUuLjBkY2I1
MTRhNDIwOTk5ZmJmNTlkZjE4YmRkZjU3YzMwYWRhNzllOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZyYW1lLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGcmFtZS5jcHAKQEAgLTMwLDE1ICszMCwxNiBA
QAogI2luY2x1ZGUgIkhlYXBJdGVyYXRpb25TY29wZS5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWVJ
bmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTT2JqZWN0
SW5saW5lcy5oIgogI2luY2x1ZGUgIlNsb3RWaXNpdG9ySW5saW5lcy5oIgogI2luY2x1ZGUgIlN0
cnVjdHVyZUlubGluZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWNvbnN0IENsYXNzSW5mbyBH
ZW5lcmF0b3JGcmFtZTo6c19pbmZvID0geyAiR2VuZXJhdG9yRnJhbWUiLCBudWxscHRyLCBudWxs
cHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEdlbmVyYXRvckZyYW1lKSB9OworY29uc3QgQ2xhc3NJ
bmZvIEdlbmVyYXRvckZyYW1lOjpzX2luZm8gPSB7ICJHZW5lcmF0b3JGcmFtZSIsICZCYXNlOjpz
X2luZm8sIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoR2VuZXJhdG9yRnJhbWUpIH07CiAK
LUdlbmVyYXRvckZyYW1lOjpHZW5lcmF0b3JGcmFtZShWTSYgdm0sIHNpemVfdCBudW1iZXJPZkNh
bGxlZUxvY2FscykKLSAgICA6IEJhc2Uodm0sIHZtLmdlbmVyYXRvckZyYW1lU3RydWN0dXJlLmdl
dCgpKQorR2VuZXJhdG9yRnJhbWU6OkdlbmVyYXRvckZyYW1lKFZNJiB2bSwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIHVpbnQzMl90IG51bWJlck9mQ2FsbGVlTG9jYWxzKQorICAgIDogQmFzZSh2bSwg
c3RydWN0dXJlKQogICAgICwgbV9udW1iZXJPZkNhbGxlZUxvY2FscyhudW1iZXJPZkNhbGxlZUxv
Y2FscykKIHsKIH0KQEAgLTQ2LDMzICs0Nyw0MiBAQCBHZW5lcmF0b3JGcmFtZTo6R2VuZXJhdG9y
RnJhbWUoVk0mIHZtLCBzaXplX3QgbnVtYmVyT2ZDYWxsZWVMb2NhbHMpCiB2b2lkIEdlbmVyYXRv
ckZyYW1lOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRp
b24odm0pOworICAgIEpTVmFsdWUgZW1wdHlWYWx1ZTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IG1fbnVtYmVyT2ZDYWxsZWVMb2NhbHM7ICsraSkKLSAgICAgICAgbG9jYWxBdChpKS5jbGVh
cigpOworICAgICAgICBsb2NhbEF0KGkpLnNldFN0YXJ0aW5nVmFsdWUoZW1wdHlWYWx1ZSk7CiB9
CiAKIFN0cnVjdHVyZSogR2VuZXJhdG9yRnJhbWU6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQogewotICAgIHJl
dHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJ
bmZvKENlbGxUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgcmV0dXJuIFN0cnVj
dHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0
VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwogfQogCi1HZW5lcmF0b3JGcmFtZSogR2Vu
ZXJhdG9yRnJhbWU6OmNyZWF0ZShWTSYgdm0sIHNpemVfdCBudW1iZXJPZkxvY2FscykKK0dlbmVy
YXRvckZyYW1lKiBHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIHNpemVfdCBudW1iZXJPZkNhbGxlZUxvY2FscykKIHsKICAgICBHZW5lcmF0b3JGcmFt
ZSogcmVzdWx0ID0KICAgICAgICAgbmV3ICgKICAgICAgICAgICAgIE5vdE51bGwsCi0gICAgICAg
ICAgICBhbGxvY2F0ZUNlbGw8R2VuZXJhdG9yRnJhbWU+KHZtLmhlYXAsIGFsbG9jYXRpb25TaXpl
Rm9yTG9jYWxzKG51bWJlck9mTG9jYWxzKSkpCi0gICAgICAgIEdlbmVyYXRvckZyYW1lKHZtLCBu
dW1iZXJPZkxvY2Fscyk7CisgICAgICAgICAgICBhbGxvY2F0ZUNlbGw8R2VuZXJhdG9yRnJhbWU+
KHZtLmhlYXAsIGFsbG9jYXRpb25TaXplRm9yTG9jYWxzKG51bWJlck9mQ2FsbGVlTG9jYWxzKSkp
CisgICAgICAgIEdlbmVyYXRvckZyYW1lKHZtLCBzdHJ1Y3R1cmUsIG51bWJlck9mQ2FsbGVlTG9j
YWxzKTsKICAgICByZXN1bHQtPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICByZXR1cm4gcmVzdWx0
OwogfQogCitHZW5lcmF0b3JGcmFtZSogR2VuZXJhdG9yRnJhbWU6OmNyZWF0ZShFeGVjU3RhdGUq
IGV4ZWMsIHNpemVfdCBudW1iZXJPZkNhbGxlZUxvY2FscykKK3sKKyAgICByZXR1cm4gY3JlYXRl
KGV4ZWMtPnZtKCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+Z2VuZXJhdG9yRnJhbWVT
dHJ1Y3R1cmUoKSwgbnVtYmVyT2ZDYWxsZWVMb2NhbHMpOworfQorCiB2b2lkIEdlbmVyYXRvckZy
YW1lOjpzYXZlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZUNhbGxl
ZUxvY2FscykKIHsKKyAgICAvLyBBbGxvY2F0ZSB0aGUgZ2VuZXJhdG9yIGxvY2FsIHNwYWNlIGZp
cnN0LgorICAgIG1fbnVtYmVyT2ZTYXZlZENhbGxlZUxvY2FscyA9IGxpdmVDYWxsZWVMb2NhbHMu
Yml0Q291bnQoKTsKKwogICAgIC8vIE9ubHkgc2F2ZSBjYWxsZWUgbG9jYWxzLgogICAgIC8vIEV2
ZXJ5IHRpbWUgYSBnZW5lcmF0b3IgaXMgY2FsbGVkIChvciByZXN1bWVkKSwgcGFyYW1ldGVycyBz
aG91bGQgYmUgcmVwbGFjZWQuCi0gICAgQVNTRVJUKGxpdmVDYWxsZWVMb2NhbHMubnVtQml0cygp
IDw9IG1fbnVtYmVyT2ZDYWxsZWVMb2NhbHMpOworICAgIHVuc2lnbmVkIGdlbmVyYXRvckxvY2Fs
SW5kZXggPSAwOwogICAgIGxpdmVDYWxsZWVMb2NhbHMuZm9yRWFjaFNldEJpdChbJl0oc2l6ZV90
IGluZGV4KSB7Ci0gICAgICAgIGxvY2FsQXQoaW5kZXgpLnNldChleGVjLT52bSgpLCB0aGlzLCBl
eGVjLT51bmNoZWNrZWRSKHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGluZGV4KSkuanNWYWx1ZSgp
KTsKKyAgICAgICAgbG9jYWxBdChnZW5lcmF0b3JMb2NhbEluZGV4KyspLnNldChleGVjLT52bSgp
LCB0aGlzLCBleGVjLT51bmNoZWNrZWRSKHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGluZGV4KSku
anNWYWx1ZSgpKTsKICAgICB9KTsKIH0KIApAQCAtODAsMTAgKzkwLDExIEBAIHZvaWQgR2VuZXJh
dG9yRnJhbWU6OnJlc3VtZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEZhc3RCaXRWZWN0b3ImIGxp
dmVDYWxsZWVMb2NhCiB7CiAgICAgLy8gT25seSByZXN1bWUgY2FsbGVlIGxvY2Fscy4KICAgICAv
LyBFdmVyeSB0aW1lIGEgZ2VuZXJhdG9yIGlzIGNhbGxlZCAob3IgcmVzdW1lZCksIHBhcmFtZXRl
cnMgc2hvdWxkIGJlIHJlcGxhY2VkLgorICAgIHVuc2lnbmVkIGdlbmVyYXRvckxvY2FsSW5kZXgg
PSAwOwogICAgIGxpdmVDYWxsZWVMb2NhbHMuZm9yRWFjaFNldEJpdChbJl0oc2l6ZV90IGluZGV4
KSB7Ci0gICAgICAgIGV4ZWMtPnVuY2hlY2tlZFIodmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaW5k
ZXgpKSA9IGxvY2FsQXQoaW5kZXgpLmdldCgpOwotICAgICAgICBsb2NhbEF0KGluZGV4KS5jbGVh
cigpOworICAgICAgICBleGVjLT51bmNoZWNrZWRSKHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGlu
ZGV4KSkgPSBsb2NhbEF0KGdlbmVyYXRvckxvY2FsSW5kZXgrKykuZ2V0KCk7CiAgICAgfSk7Cisg
ICAgbV9udW1iZXJPZlNhdmVkQ2FsbGVlTG9jYWxzID0gMDsKIH0KIAogdm9pZCBHZW5lcmF0b3JG
cmFtZTo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQpA
QCAtOTEsNyArMTAyLDEyIEBAIHZvaWQgR2VuZXJhdG9yRnJhbWU6OnZpc2l0Q2hpbGRyZW4oSlND
ZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICBHZW5lcmF0b3JGcmFtZSogdGhp
c09iamVjdCA9IGpzQ2FzdDxHZW5lcmF0b3JGcmFtZSo+KGNlbGwpOwogICAgIEJhc2U6OnZpc2l0
Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CiAgICAgLy8gU2luY2Ugb25seSB0cnVlIGNl
bGwgcG9pbnRlcnMgYXJlIHN0b3JlZCBhcyBhIGNlbGwsIHdlIGNhbiBzYWZlbHkgbWFyayB0aGVt
LgotICAgIHZpc2l0b3IuYXBwZW5kVmFsdWVzKHRoaXNPYmplY3QtPmxvY2FscygpLCB0aGlzT2Jq
ZWN0LT5tX251bWJlck9mQ2FsbGVlTG9jYWxzKTsKKyAgICB2aXNpdG9yLmFwcGVuZFZhbHVlcyh0
aGlzT2JqZWN0LT5sb2NhbHMoKSwgdGhpc09iamVjdC0+bV9udW1iZXJPZlNhdmVkQ2FsbGVlTG9j
YWxzKTsKKyAgICAvLyBDbGVhciBub3QgdXNlZCBjYWxsZWUgbG9jYWxzIHdoZW4gbWFya2luZy4K
KyAgICAvLyBUaGlzIGVuc3VyZXMgdGhhdCwgImlmIGEgZ2l2ZW4gbG9jYWwgaGFzIGEgdmFsdWUs
IHRoaXMgdmFsdWUgaXMgY29ycmVjdGx5IG1hcmtlZCBpbiB0aGUgcHJldmlvdXMgbWFya2luZyBw
aGFzZSIuCisgICAgc2l6ZV90IHVudXNlZExvY2Fsc0NvdW50ID0gdGhpc09iamVjdC0+bV9udW1i
ZXJPZkNhbGxlZUxvY2FscyAtIHRoaXNPYmplY3QtPm1fbnVtYmVyT2ZTYXZlZENhbGxlZUxvY2Fs
czsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHVudXNlZExvY2Fsc0NvdW50OyArK2kpCisg
ICAgICAgIHRoaXNPYmplY3QtPmxvY2FsQXQodGhpc09iamVjdC0+bV9udW1iZXJPZlNhdmVkQ2Fs
bGVlTG9jYWxzICsgaSkuY2xlYXIoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGcmFtZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJhbWUuaAppbmRleCAzZDU0NWIx
NDdkZDRhYmZiMmJiYjliNWE3MTk0ZThmNzQ4NDFjNDlhLi5jZjFkYjdhMmJlZTYwZGEyOTQ2NGVj
NDE3YTBjNWZiOGMxZjBhZThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9HZW5lcmF0b3JGcmFtZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0dlbmVyYXRvckZyYW1lLmgKQEAgLTI3LDExICsyNywxNCBAQAogI2RlZmluZSBHZW5lcmF0b3JG
cmFtZV9oCiAKICNpbmNsdWRlICJKU0NlbGwuaCIKKyNpbmNsdWRlICJKU09iamVjdC5oIgogI2lu
Y2x1ZGUgPHd0Zi9GYXN0Qml0VmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCi1jbGFzcyBH
ZW5lcmF0b3JGcmFtZSA6IHB1YmxpYyBKU0NlbGwgeworY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFj
dG9yOworCitjbGFzcyBHZW5lcmF0b3JGcmFtZSA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsK
ICAgICBmcmllbmQgY2xhc3MgSklUOwogI2lmIEVOQUJMRShERkdfSklUKQogICAgIGZyaWVuZCBj
bGFzcyBERkc6OlNwZWN1bGF0aXZlSklUOwpAQCAtMzksMTIgKzQyLDEyIEBAIGNsYXNzIEdlbmVy
YXRvckZyYW1lIDogcHVibGljIEpTQ2VsbCB7CiAjZW5kaWYKICAgICBmcmllbmQgY2xhc3MgVk07
CiBwdWJsaWM6Ci0gICAgdHlwZWRlZiBKU0NlbGwgQmFzZTsKLSAgICBzdGF0aWMgY29uc3QgdW5z
aWduZWQgU3RydWN0dXJlRmxhZ3MgPSBTdHJ1Y3R1cmVJc0ltbW9ydGFsIHwgQmFzZTo6U3RydWN0
dXJlRmxhZ3M7CisgICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CiAKICAgICBERUNM
QVJFX0VYUE9SVF9JTkZPOwogCi0gICAgc3RhdGljIEdlbmVyYXRvckZyYW1lKiBjcmVhdGUoVk0m
LCBzaXplX3QgbnVtYmVyT2ZDYWxsZWVMb2NhbHMpOworICAgIHN0YXRpYyBHZW5lcmF0b3JGcmFt
ZSogY3JlYXRlKEV4ZWNTdGF0ZSosIHNpemVfdCBudW1iZXJPZkNhbGxlZUxvY2Fscyk7CisgICAg
c3RhdGljIEdlbmVyYXRvckZyYW1lKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqLCBzaXplX3QgbnVt
YmVyT2ZDYWxsZWVMb2NhbHMpOwogCiAgICAgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiogbG9j
YWxzKCkKICAgICB7CkBAIC01Myw3ICs1Niw2IEBAIGNsYXNzIEdlbmVyYXRvckZyYW1lIDogcHVi
bGljIEpTQ2VsbCB7CiAKICAgICBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+JiBsb2NhbEF0KHNp
emVfdCBpbmRleCkKICAgICB7Ci0gICAgICAgIEFTU0VSVChpbmRleCA8IG1fbnVtYmVyT2ZDYWxs
ZWVMb2NhbHMpOwogICAgICAgICByZXR1cm4gbG9jYWxzKClbaW5kZXhdOwogICAgIH0KIApAQCAt
NjIsNiArNjQsMjEgQEAgY2xhc3MgR2VuZXJhdG9yRnJhbWUgOiBwdWJsaWMgSlNDZWxsIHsKICAg
ICAgICAgcmV0dXJuIFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZjxzaXplb2YoV3JpdGVCYXJyaWVy
PFVua25vd24+KT4oc2l6ZW9mKEdlbmVyYXRvckZyYW1lKSk7CiAgICAgfQogCisgICAgc3RhdGlj
IHNpemVfdCBsb2NhbE9mZnNldCh1bnNpZ25lZCBpbmRleCkKKyAgICB7CisgICAgICAgIHJldHVy
biBvZmZzZXRPZkxvY2FscygpICsgaW5kZXggKiBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+
KTsKKyAgICB9CisKKyAgICBzdGF0aWMgc2l6ZV90IG51bWJlck9mQ2FsbGVlTG9jYWxzT2Zmc2V0
KCkKKyAgICB7CisgICAgICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoR2VuZXJhdG9yRnJhbWUs
IG1fbnVtYmVyT2ZDYWxsZWVMb2NhbHMpOworICAgIH0KKworICAgIHN0YXRpYyBzaXplX3QgbnVt
YmVyT2ZTYXZlZENhbGxlZUxvY2Fsc09mZnNldCgpCisgICAgeworICAgICAgICByZXR1cm4gT0JK
RUNUX09GRlNFVE9GKEdlbmVyYXRvckZyYW1lLCBtX251bWJlck9mU2F2ZWRDYWxsZWVMb2NhbHMp
OworICAgIH0KKwogICAgIHN0YXRpYyBzaXplX3QgYWxsb2NhdGlvblNpemVGb3JMb2NhbHModW5z
aWduZWQgbnVtYmVyT2ZMb2NhbHMpCiAgICAgewogICAgICAgICByZXR1cm4gb2Zmc2V0T2ZMb2Nh
bHMoKSArIG51bWJlck9mTG9jYWxzICogc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPik7CkBA
IC03MywxNiArOTAsMTYgQEAgY2xhc3MgR2VuZXJhdG9yRnJhbWUgOiBwdWJsaWMgSlNDZWxsIHsK
ICAgICB2b2lkIHJlc3VtZShFeGVjU3RhdGUqLCBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlQ2Fs
bGVlTG9jYWxzKTsKIAogcHJpdmF0ZToKLSAgICBHZW5lcmF0b3JGcmFtZShWTSYsIHNpemVfdCBu
dW1iZXJPZkNhbGxlZUxvY2Fscyk7CisgICAgR2VuZXJhdG9yRnJhbWUoVk0mLCBTdHJ1Y3R1cmUq
LCB1aW50MzJfdCBudW1iZXJPZkNhbGxlZUxvY2Fscyk7CiAKLSAgICBzaXplX3QgbV9udW1iZXJP
ZkNhbGxlZUxvY2FsczsKKyAgICB1aW50MzJfdCBtX251bWJlck9mQ2FsbGVlTG9jYWxzOworICAg
IHVpbnQzMl90IG1fbnVtYmVyT2ZTYXZlZENhbGxlZUxvY2FscyB7IDAgfTsKIAogICAgIGZyaWVu
ZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAKLSAgICB2b2lkIGZpbmlzaENyZWF0aW9u
KFZNJik7Ci0KIHByb3RlY3RlZDoKICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2Vs
bCosIFNsb3RWaXNpdG9yJik7CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5jcHAKaW5kZXggMzVjMTJhMzE3MGVmZTIzYTczODI2OTkwZWU4NmVmYWU5
NDQ0MGVkYi4uOTQ5NmZlY2U4MjNjOTBjMDg3M2MzNTA5YTg0NjM4YTliZWMwZWUzMyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAt
NTEsNiArNTEsNyBAQAogI2luY2x1ZGUgIkVycm9yUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiRnVu
Y3Rpb25Db25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkZ1bmN0aW9uUHJvdG90eXBlLmgiCisjaW5j
bHVkZSAiR2VuZXJhdG9yRnJhbWUuaCIKICNpbmNsdWRlICJHZW5lcmF0b3JGdW5jdGlvbkNvbnN0
cnVjdG9yLmgiCiAjaW5jbHVkZSAiR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuaCIKICNpbmNs
dWRlICJHZW5lcmF0b3JQcm90b3R5cGUuaCIKQEAgLTU1Myw2ICs1NTQsNyBAQCBtXyAjIyBwcm9w
ZXJOYW1lICMjIFN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIGluc3RhbmNlVHlwZTo6Y3JlYXRlU3Ry
dWN0dXJlKHZtLCB0aAogI3VuZGVmIENSRUFURV9QUk9UT1RZUEVfRk9SX0RFUklWRURfSVRFUkFU
T1JfVFlQRQogCiAgICAgbV9wcm9wZXJ0eU5hbWVJdGVyYXRvclN0cnVjdHVyZS5zZXQodm0sIHRo
aXMsIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9p
dGVyYXRvclByb3RvdHlwZS5nZXQoKSkpOworICAgIG1fZ2VuZXJhdG9yRnJhbWVTdHJ1Y3R1cmUu
c2V0KHZtLCB0aGlzLCBHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBq
c051bGwoKSkpOwogICAgIG1fZ2VuZXJhdG9yUHJvdG90eXBlLnNldCh2bSwgdGhpcywgR2VuZXJh
dG9yUHJvdG90eXBlOjpjcmVhdGUodm0sIHRoaXMsIEdlbmVyYXRvclByb3RvdHlwZTo6Y3JlYXRl
U3RydWN0dXJlKHZtLCB0aGlzLCBtX2l0ZXJhdG9yUHJvdG90eXBlLmdldCgpKSkpOwogICAgIAog
ICAgIC8vIENvbnN0cnVjdG9ycwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmgKaW5kZXggZjkwYzE5MTFjYmUyMzM3YjkyODA0YmQ3YzRjMjM3NmE1NzMw
OGEzZC4uODgyMTdiYzQ4YTg4NGQ2MGI1ZDI4NzZhZTc1OTAwNWRhMTBlYjZiMiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC0yODMsNiAr
MjgzLDcgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJs
ZU9iamVjdCB7CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1f
Y2FsbGJhY2tGdW5jdGlvblN0cnVjdHVyZTsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmpl
Y3QsIFN0cnVjdHVyZT4gbV9jYWxsYmFja09iamVjdFN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJp
ZXI8U3RydWN0dXJlPiBtX3Byb3BlcnR5TmFtZUl0ZXJhdG9yU3RydWN0dXJlOworICAgIFdyaXRl
QmFycmllcjxTdHJ1Y3R1cmU+IG1fZ2VuZXJhdG9yRnJhbWVTdHJ1Y3R1cmU7CiAjaWYgSlNDX09C
SkNfQVBJX0VOQUJMRUQKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVy
ZT4gbV9vYmpjQ2FsbGJhY2tGdW5jdGlvblN0cnVjdHVyZTsKICAgICBMYXp5UHJvcGVydHk8SlNH
bG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9vYmpjV3JhcHBlck9iamVjdFN0cnVjdHVyZTsKQEAg
LTU1NCw2ICs1NTUsNyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRl
ZFZhcmlhYmxlT2JqZWN0IHsKICAgICBTdHJ1Y3R1cmUqIGNhbGxiYWNrRnVuY3Rpb25TdHJ1Y3R1
cmUoKSBjb25zdCB7IHJldHVybiBtX2NhbGxiYWNrRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KHRoaXMp
OyB9CiAgICAgU3RydWN0dXJlKiBjYWxsYmFja09iamVjdFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0
dXJuIG1fY2FsbGJhY2tPYmplY3RTdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9CiAgICAgU3RydWN0dXJl
KiBwcm9wZXJ0eU5hbWVJdGVyYXRvclN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvcGVy
dHlOYW1lSXRlcmF0b3JTdHJ1Y3R1cmUuZ2V0KCk7IH0KKyAgICBTdHJ1Y3R1cmUqIGdlbmVyYXRv
ckZyYW1lU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9nZW5lcmF0b3JGcmFtZVN0cnVjdHVy
ZS5nZXQoKTsgfQogI2lmIEpTQ19PQkpDX0FQSV9FTkFCTEVECiAgICAgU3RydWN0dXJlKiBvYmpj
Q2FsbGJhY2tGdW5jdGlvblN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fb2JqY0NhbGxiYWNr
RnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9CiAgICAgU3RydWN0dXJlKiBvYmpjV3JhcHBl
ck9iamVjdFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fb2JqY1dyYXBwZXJPYmplY3RTdHJ1
Y3R1cmUuZ2V0KHRoaXMpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9WTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXgg
ZDU5ODk1MWUyMmYyZTI2YzllZWFmZjczZGZmZGUxNGYxNmE3MGFhZS4uZDM0YWRkM2ViNTI2Njhk
MmFhMTdiZDg0ZjllZjFhNGQ0MTk3MjFkNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZN
LmNwcApAQCAtMjQzLDcgKzI0Myw2IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBo
ZWFwVHlwZSkKICAgICBpbmZlcnJlZFR5cGVTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBJbmZlcnJlZFR5
cGU6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICBpbmZlcnJlZFR5
cGVUYWJsZVN0cnVjdHVyZS5zZXQoKnRoaXMsIEluZmVycmVkVHlwZVRhYmxlOjpjcmVhdGVTdHJ1
Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgZnVuY3Rpb25SYXJlRGF0YVN0cnVjdHVy
ZS5zZXQoKnRoaXMsIEZ1bmN0aW9uUmFyZURhdGE6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwg
anNOdWxsKCkpKTsKLSAgICBnZW5lcmF0b3JGcmFtZVN0cnVjdHVyZS5zZXQoKnRoaXMsIEdlbmVy
YXRvckZyYW1lOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgZXhj
ZXB0aW9uU3RydWN0dXJlLnNldCgqdGhpcywgRXhjZXB0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUoKnRo
aXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgcHJvbWlzZURlZmVycmVkU3RydWN0dXJlLnNldCgqdGhp
cywgSlNQcm9taXNlRGVmZXJyZWQ6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkp
KTsKICAgICBpbnRlcm5hbFByb21pc2VEZWZlcnJlZFN0cnVjdHVyZS5zZXQoKnRoaXMsIEpTSW50
ZXJuYWxQcm9taXNlRGVmZXJyZWQ6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCmluZGV4IDI5NzQxMjYzYmIxMTRiZWQwYjNj
NGVmYzlkNTJkNWViYWJkMzg0ZGMuLjFiY2RhZmE0NTExNmIwMDkyYzZjZTgxOWZlYWQ0M2RkNDNl
Y2Q3Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaApAQCAtMzE1LDcgKzMxNSw2IEBA
IGNsYXNzIFZNIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFZNPiB7CiAgICAgU3Ryb25n
PFN0cnVjdHVyZT4gaW5mZXJyZWRUeXBlU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+
IGluZmVycmVkVHlwZVRhYmxlU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGZ1bmN0
aW9uUmFyZURhdGFTdHJ1Y3R1cmU7Ci0gICAgU3Ryb25nPFN0cnVjdHVyZT4gZ2VuZXJhdG9yRnJh
bWVTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gZXhjZXB0aW9uU3RydWN0dXJlOwog
ICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHByb21pc2VEZWZlcnJlZFN0cnVjdHVyZTsKICAgICBTdHJv
bmc8U3RydWN0dXJlPiBpbnRlcm5hbFByb21pc2VEZWZlcnJlZFN0cnVjdHVyZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwt
YW5kLWFycmF5LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0
b3ItZmliLWZ0bC1hbmQtYXJyYXkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmU5Mzk4MTJmZGJhZWM2YjgzMmJm
ZDAwZjIxNTNkZWY4NGJiNzU5MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwtYW5kLWFycmF5LmpzCkBAIC0wLDAg
KzEsMjMgQEAKKyhmdW5jdGlvbiAoKSB7CisgICAgZnVuY3Rpb24gKmZpYigpCisgICAgeworICAg
ICAgICBsZXQgYSA9IDE7CisgICAgICAgIGxldCBiID0gMTsKKyAgICAgICAgbGV0IGMgPSBbIDAg
XTsKKyAgICAgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgICAgIGNbMF0gPSBhOworICAgICAg
ICAgICAgeWllbGQgYzsKKyAgICAgICAgICAgIFthLCBiXSA9IFtiLCBhICsgYl07CisgICAgICAg
IH0KKyAgICB9CisKKyAgICBsZXQgdmFsdWUgPSAwOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwg
MWU0OyArK2kpIHsKKyAgICAgICAgbGV0IGYgPSBmaWIoKTsKKyAgICAgICAgZm9yIChsZXQgaSA9
IDA7IGkgPCAxMDA7ICsraSkgeworICAgICAgICAgICAgdmFsdWUgPSBmLm5leHQoKS52YWx1ZTsK
KyAgICAgICAgfQorICAgICAgICBpZiAodmFsdWVbMF0gIT09IDM1NDIyNDg0ODE3OTI2MjAwMDAw
MCkKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIHZhbHVlOiR7cmVzdWx0fWApOwor
ICAgIH0KK30oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3Ry
ZXNzL2dlbmVyYXRvci1maWItZnRsLWFuZC1vYmplY3QuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLWFuZC1vYmplY3QuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNjY3MzQwZjJlYTRjNzQzOGEyZDIwOWFhNDBkMDY3N2U0YWI3ZDNmYgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1m
dGwtYW5kLW9iamVjdC5qcwpAQCAtMCwwICsxLDIzIEBACisoZnVuY3Rpb24gKCkgeworICAgIGZ1
bmN0aW9uICpmaWIoKQorICAgIHsKKyAgICAgICAgbGV0IGEgPSAxOworICAgICAgICBsZXQgYiA9
IDE7CisgICAgICAgIGxldCBjID0geyBmaWI6IDAgfTsKKyAgICAgICAgd2hpbGUgKHRydWUpIHsK
KyAgICAgICAgICAgIGMuZmliID0gYTsKKyAgICAgICAgICAgIHlpZWxkIGM7CisgICAgICAgICAg
ICBbYSwgYl0gPSBbYiwgYSArIGJdOworICAgICAgICB9CisgICAgfQorCisgICAgbGV0IHZhbHVl
ID0gMDsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDFlNDsgKytpKSB7CisgICAgICAgIGxldCBm
ID0gZmliKCk7CisgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwOyArK2kpIHsKKyAgICAg
ICAgICAgIHZhbHVlID0gZi5uZXh0KCkudmFsdWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHZh
bHVlLmZpYiAhPT0gMzU0MjI0ODQ4MTc5MjYyMDAwMDAwKQorICAgICAgICAgICAgdGhyb3cgbmV3
IEVycm9yKGBiYWQgdmFsdWU6JHtyZXN1bHR9YCk7CisgICAgfQorfSgpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwtYW5k
LXN0cmluZy5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9y
LWZpYi1mdGwtYW5kLXN0cmluZy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MzhhZTZhYjMzNDcwNDY4MjI4NDlm
NDMwMDRlYTVjNDAzZWVkYTI4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQtc3RyaW5nLmpzCkBAIC0wLDAg
KzEsMjIgQEAKKyhmdW5jdGlvbiAoKSB7CisgICAgZnVuY3Rpb24gKmZpYigpCisgICAgeworICAg
ICAgICBsZXQgYSA9IDE7CisgICAgICAgIGxldCBiID0gMTsKKyAgICAgICAgbGV0IGMgPSAiUmVz
dWx0ISAiOworICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAgeWllbGQgYyArIGE7
CisgICAgICAgICAgICBbYSwgYl0gPSBbYiwgYSArIGJdOworICAgICAgICB9CisgICAgfQorCisg
ICAgbGV0IHZhbHVlID0gMDsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDFlNDsgKytpKSB7Cisg
ICAgICAgIGxldCBmID0gZmliKCk7CisgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwOyAr
K2kpIHsKKyAgICAgICAgICAgIHZhbHVlID0gZi5uZXh0KCkudmFsdWU7CisgICAgICAgIH0KKyAg
ICAgICAgaWYgKHZhbHVlICE9PSBgUmVzdWx0ISAzNTQyMjQ4NDgxNzkyNjIwMDAwMDBgKQorICAg
ICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgdmFsdWU6JHtyZXN1bHR9YCk7CisgICAgfQor
fSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2Vu
ZXJhdG9yLWZpYi1mdGwuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dl
bmVyYXRvci1maWItZnRsLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM0MGUzM2RiYzg2OGJlYTdhODkzYzllYzE2
Yjc3OWVjMjZiZGIxOWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLmpzCkBAIC0wLDAgKzEsMjEgQEAKKyhmdW5j
dGlvbiAoKSB7CisgICAgZnVuY3Rpb24gKmZpYigpCisgICAgeworICAgICAgICBsZXQgYSA9IDE7
CisgICAgICAgIGxldCBiID0gMTsKKyAgICAgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgICAg
IHlpZWxkIGE7CisgICAgICAgICAgICBbYSwgYl0gPSBbYiwgYSArIGJdOworICAgICAgICB9Cisg
ICAgfQorCisgICAgbGV0IHZhbHVlID0gMDsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDFlNDsg
KytpKSB7CisgICAgICAgIGxldCBmID0gZmliKCk7CisgICAgICAgIGZvciAobGV0IGkgPSAwOyBp
IDwgMTAwOyArK2kpIHsKKyAgICAgICAgICAgIHZhbHVlID0gZi5uZXh0KCkudmFsdWU7CisgICAg
ICAgIH0KKyAgICAgICAgaWYgKHZhbHVlICE9PSAzNTQyMjQ4NDgxNzkyNjIwMDAwMDApCisgICAg
ICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCB2YWx1ZToke3Jlc3VsdH1gKTsKKyAgICB9Cit9
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5l
cmF0b3ItZnJhbWUtZW1wdHkuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNz
L2dlbmVyYXRvci1mcmFtZS1lbXB0eS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41OWU4ODU1YmZhYzNjNTZkZjky
NmFiZDQyOGMwMTNjMzM0MTYyNzQ2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZnJhbWUtZW1wdHkuanMKQEAgLTAsMCArMSwz
NCBAQAorZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVuYywgZXJyb3JNZXNzYWdlKSB7CisgICAgdmFy
IGVycm9yVGhyb3duID0gZmFsc2U7CisgICAgdmFyIGVycm9yID0gbnVsbDsKKyAgICB0cnkgewor
ICAgICAgICBmdW5jKCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBlcnJvclRocm93biA9
IHRydWU7CisgICAgICAgIGVycm9yID0gZTsKKyAgICB9CisgICAgaWYgKCFlcnJvclRocm93bikK
KyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdub3QgdGhyb3duJyk7CisgICAgaWYgKFN0cmluZyhl
cnJvcikgIT09IGVycm9yTWVzc2FnZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgZXJy
b3I6ICR7U3RyaW5nKGVycm9yKX1gKTsKK30KKworc2hvdWxkVGhyb3coZnVuY3Rpb24gKCkgewor
ICAgIGZ1bmN0aW9uICpmaWIoZmxhZykKKyAgICB7CisgICAgICAgIGxldCBhID0gMTsKKyAgICAg
ICAgbGV0IGIgPSAxOworICAgICAgICB5aWVsZCA0MjsKKyAgICAgICAgaWYgKGZsYWcpCisgICAg
ICAgICAgICByZXR1cm4gYzsKKyAgICAgICAgbGV0IGMgPSA1MDA7CisgICAgfQorCisgICAgbGV0
IHZhbHVlID0gMDsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDFlNDsgKytpKSB7CisgICAgICAg
IGZvciAobGV0IHYgb2YgZmliKGZhbHNlKSkgeworICAgICAgICB9CisgICAgfQorICAgIGZvciAo
bGV0IHYgb2YgZmliKHRydWUpKSB7CisgICAgfQorfSwgYFJlZmVyZW5jZUVycm9yOiBDYW5ub3Qg
YWNjZXNzIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUuYCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>282713</attachid>
            <date>2016-07-04 06:33:14 -0700</date>
            <delta_ts>2016-07-04 07:47:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-152723-20160704223245.patch</filename>
            <type>text/plain</type>
            <size>184334</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAyODA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
M2VmNGQ0ZDUwOWYyY2VhMmY2YzIzNzQ1NTQ3YTI2MjU5YjQzOWRhLi4xYmMzOTEyMzJiM2JkZjYy
YTFhZGIyZGYzYmYxNjU0Mzc1ZmE2MDc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyODcgQEAKKzIwMTYtMDctMDQgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0RGR10gRW1iZWQgZ2VuZXJhdG9yIGZyYW1lIGludG8gU2NvcGUg
YW5kIGVuYWJsZSBnZW5lcmF0b3IgaW4gREZHIC8gRlRMCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTI3MjMKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworCisgICAgICAgICEhISBXSVAgISEhIFRoZSBmb2xsb3dpbmcgZG9j
dW1lbnQgaXMgbm90IHVwZGF0ZWQgeWV0LgorCisKKworCisKKworCisKKyAgICAgICAgVGhpcyBw
YXRjaCBpcyBhbiBpbml0aWFsIGF0dGVtcHQgdG8gaW1wbGVtZW50IERGRyBhbmQgRlRMIGNhcGFi
bGUgRVM2IGdlbmVyYXRvcnMuCisgICAgICAgIFdlIGludHJvZHVjZSB0aGUgc2V2ZXJhbCBieXRl
Y29kZXMgYW5kIGNvbXBpbGUgdGhlbSBpbiBERkcgLyBGVEwuCisKKyAgICAgICAgLSBvcF9uZXdf
Z2VuZXJhdG9yX2ZyYW1lCisKKyAgICAgICAgICAgIEFsbG9jYXRlIEdlbmVyYXRvckZyYW1lIGlu
IHRoZSBieXRlY29kZSBpbnN0ZWFkIG9mIGFsbG9jYXRpbmcgaXQgaW4gdGhlIG9wX3NhdmUuCisK
KyAgICAgICAgLSBvcF9zYXZlCisKKyAgICAgICAgICAgIE5vdyBCeXRlY29kZUxpdmVuZXNzIGFu
YWx5c2lzIGFuZCBQcmVjaXNlSnVtcFRhcmdldCBhbmFseXNpcyBoYXZlIDIgbW9kZXM7IFN0YW5k
YXJkIGFuZCBFeHRyYWN0R2VuZXJhdG9yTGl2ZUNhbGxlZUxvY2Fscy4KKyAgICAgICAgICAgIFVu
ZGVyIEV4dHJhY3RHZW5lcmF0b3JMaXZlQ2FsbGVlTG9jYWxzIG1vZGUsIG9wX3NhdmUgaGFzIGp1
bXAgdG8gdGhlIG1lcmdlIHBvaW50LiBUaGlzIGp1bXAgaXMganVzdCB1c2VkIGZvciB1c2UtZGVm
IGFuYWx5c2lzIHRvIGV4dHJhY3QKKyAgICAgICAgICAgIGxpdmUgY2FsbGVlIGxvY2FscyBhdCB0
aGUgbWVyZ2UgcG9pbnQuIFRoZXNlIGxpdmUgY2FsbGVlIGxvY2FscyBzaG91bGQgYmUgc2F2ZWQg
YW5kIHJlc3VtZWQgdG8gc3VzcGVuZCBhbmQgcmVzdW1lIGdlbmVyYXRvcnMuCisgICAgICAgICAg
ICBUaGUgbWVyZ2UgcG9pbnQgaXMgdGhlIHBvaW50IHRoYXQgbWVyZ2luZyB0aGUgMiBiYXNpYyBi
bG9ja3MsIHNhdmluZyBsb2NhbHMgdG8gdGhlIGdlbmVyYXRvciBmcmFtZSBhbmQgcmVzdW1pbmcg
bG9jYWxzIGZyb20gdGhlIGdlbmVyYXRvciBmcmFtZS4KKworICAgICAgICAtIG9wX3Jlc3VtZQor
CisgICAgICAgICAgICBUaGlzIHJldHJpZXZlcyBsb2NhbCB2YXJpYWJsZSBmcm9tIHRoZSBnZW5l
cmF0b3IgZnJhbWUuIEV4dHJhY3RHZW5lcmF0b3JMaXZlQ2FsbGVlTG9jYWxzIGFuYWx5c2lzIHdp
bGwgZGlzY292ZXIgbGl2ZSBsb2NhbHMgYXQgdGhlIG1lcmdlIHBvaW50IGFuZCByZWNvcmQgbGl2
ZW5lc3MKKyAgICAgICAgICAgIGluZm9ybWF0aW9uIHRvIG9wX3NhdmUgYW5kIG9wX3Jlc3VtZS4g
T24gdGhlIGJhc2lzIG9mIHRoaXMgaW5mb3JtYXRpb24sIG9wX3Jlc3VtZSB3aWxsIHJldHJpZXZl
IHNhdmVkIGxvY2FscyBmcm9tIHRoZSBnZW5lcmF0b3IgZnJhbWUuCisKKyAgICAgICAgSGVyZSwg
d2UgZXhwbGFpbiBhYm91dCBob3cgdG8gcHJlcHJvY2VzcyBieXRlY29kZXMuCisgICAgICAgIEZp
cnN0LCB3ZSBlbWl0IG9wX3NhdmUsIG9wX3Jlc3VtZSBhbmQgcGVyZm9ybSBFeHRyYWN0R2VuZXJh
dG9yTGl2ZUNhbGxlZUxvY2FscyBhbmFseXNpcy4KKworICAgICAgICBbZW50cnldIC0rLS0+IFtz
YXZlIGJsb2NrXSAtPiBvcF9zYXZlIChpdCBpcyBicmFuY2hpbmcgYnl0ZWNvZGUpIC0tLS0tLT4g
W21lcmdlIGJsb2NrXSAtPiAuLi4KKyAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorICAg
ICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICstPiBvcF9y
ZXQgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgICAgICAgICAgICstLS0tLS0tLS0t
LS0tLS0tLS0+IG9wX3Jlc3VtZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LSsKKworICAgICAgICBUaGVuLCBkaXNjb3ZlciBsaXZlIGxvY2FscyBpbmZvcm1hdGlvbiAoYXMg
RmFzdEJpdFZlY3RvcikgYXQgdGhlIG1lcmdlIHBvaW50IGFuZCBzdG9yZSBpdCB0byBjb3JyZXNw
b25kaW5nIG9wX3NhdmUgYW5kIG9wX3Jlc3VtZS4KKyAgICAgICAgQWZ0ZXIgdGhhdCwgdW5kZXIg
U3RhbmRhcmQgYW5hbHlzaXMgbW9kZSwgdGhlIGFib3ZlIGJ5dGVjb2RlIHN0cmVhbSB3aWxsIGNv
bnN0cnVjdCB0aGUgZm9sbG93aW5nIENGRy4KKyAgICAgICAgSW4gdGhlIGZvbGxvd2luZyBDRkcs
IG9wX3NhdmUgbm8gbG9uZ2VyIGhhcyBqdW1wIHRvIHRoZSBtZXJnZSBwb2ludC4gVGhlIHJlbW92
ZWQganVtcCBlZGdlIHdhcyBqdXN0IHVzZWQgdG8gY2FsY3VsYXRlIGxpdmVuZXNzIGluZm9ybWF0
aW9uIGF0IHRoZSBtZXJnZSBwb2ludC4KKworICAgICAgICBbZW50cnldIC0rLS0+IFtzYXZlIGJs
b2NrXSAtPiBvcF9zYXZlIC0+IG9wX3JldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAr
LT4gW21lcmdlIGJsb2NrXSAtPiAuLi4KKyAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAor
ICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgICAgICAgICAgICstLS0tLS0t
LS0tLS0tLS0tLS0+IG9wX3Jlc3VtZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLSsKKworICAgICAgICBBbmQgd2UgaW50cm9kdWNlcyBzZXZlcmFsIERGRyBub2Rlcy4KKwor
ICAgICAgICAtIE5ld0dlbmVyYXRvckZyYW1lCisKKyAgICAgICAgICAgIFRoaXMganVzdCBhbGxv
Y2F0ZXMgR2VuZXJhdG9yRnJhbWUuCisKKyAgICAgICAgLSBSZXNpemVHZW5lcmF0b3JMb2NhbHMK
KworICAgICAgICAgICAgVGhpcyBzZXQgR2VuZXJhdG9yRnJhbWU6Om1fbnVtYmVyT2ZTYXZlZENh
bGxlZUxvY2FscyAqTiouIFRoaXMgbm9kZSBpcyB1c2VkIHRvICgxKSBhbGxvY2F0ZSBzcGFjZSBm
b3IgbG9jYWxzIGluIEdlbmVyYXRvckZyYW1lIGFuZCAoMikgZGVhbGxvY2F0ZSBzcGFjZSBpbgor
ICAgICAgICAgICAgR2VuZXJhdG9yRnJhbWUgYnkgc2V0dGluZyBpdCBhcyAwLgorCisgICAgICAg
IC0gR2V0R2VuZXJhdG9yTG9jYWwKKworICAgICAgICAgICAgR2V0IGEgc2F2ZWQgbG9jYWwgdmFy
aWFibGUgZnJvbSBhIGdlbmVyYXRvciBmcmFtZS4gR2V0R2VuZXJhdG9yTG9jYWwgYW5kIFNldEdl
bmVyYXRvckxvY2FsIGFyZSBsaW5rZWQgd2l0aCBHZW5lcmF0b3JMb2NhbERhdGEuIFNvIHR5cGUg
cHJlZGljYXRpb24gYW5kIGZsYWdzCisgICAgICAgICAgICBhcmUgY29ycmVjdGx5IHByb3BhZ2F0
ZWQgYmV5b25kIHRoZSBnZW5lcmF0b3IgZnJhbWUuCisKKyAgICAgICAgLSBTZXRHZW5lcmF0b3JM
b2NhbAorCisgICAgICAgICAgICBTdG9yZSBhIGxvY2FsIHZhcmlhYmxlIHRvIGEgZ2VuZXJhdG9y
IGZyYW1lLgorCisgICAgICAgIEZ1dHVyZSBwbGFucyBhcmUgdGhlIGZvbGxvd2luZ3MuCisKKyAg
ICAgICAgMS4gU3VwcG9ydCB0cmFuc2ZlcnJpbmcgQWJzdHJhY3RWYWx1ZSBiZXR3ZWVuIFNldEdl
bmVyYXRvckxvY2FsIGFuZCBHZXRHZW5lcmF0b3JMb2NhbC4gaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE1MzE4MworCisgICAgICAgIDIuIENyZWF0ZSBKU0dlbmVyYXRv
ciBhbmQgYWxsb2NhdGUgaXQgaW4gdGhlIGdlbmVyYXRvciB3cmFwcGVyIGZ1bmN0aW9uLiBUaGlz
IHNob3VsZCBiZSBjb21waWxlZCBpbiBERkcgLyBGVEwgYW5kCisgICAgICAgIHRoaXMgb2JqZWN0
IHNob3VsZCBiZSB0cmFja2VkIChieSBlc2NhcGUgYW5hbHlzaXMpIGFuZCBlbGltaW5hdGVkIGlm
IHBvc3NpYmxlIGJ5IG9iamVjdCBhbGxvY2F0aW9uIGVsaW1pbmF0aW9uLgorCisgICAgICAgIDMu
IEFuZCBvbmNlIHdlIGV4cGxvaXQgdGhhdCBHZW5lcmF0b3JGcmFtZSBpcyBub3QgZXNjYXBlZCBm
cm9tIHRoZSBnaXZlbiBGVEwtZWQgZnVuY3Rpb24sIHdlIHdpbGwgZWxpbWluYXRlIEdlbmVyYXRv
ckZyYW1lIGFsbG9jYXRpb24gYW5kCisgICAgICAgIGNvbnZlcnQgR2VuZXJhdG9yTG9jYWwgb3Bl
cmF0aW9ucyBpbnRvIGdldC9zZXQgbG9jYWwgb3BlcmF0aW9ucy4KKworICAgICAgICAqIENNYWtl
TGlzdHMudHh0OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogYnVpbHRpbnMvR2VuZXJhdG9yUHJvdG90eXBlLmpzOgorICAgICAg
ICAoZ2xvYmFsUHJpdmF0ZS5nZW5lcmF0b3JSZXN1bWUpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5
dGVjb2RlQmFzaWNCbG9jay5jcHA6CisgICAgICAgIChKU0M6OmlzQnJhbmNoKToKKyAgICAgICAg
KEpTQzo6Z2V0T3Bjb2RlSUQpOgorICAgICAgICAoSlNDOjpjb21wdXRlQnl0ZWNvZGVCYXNpY0Js
b2Nrc0ludGVybmFsKToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3Mp
OgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5oOgorICAgICAgICAqIGJ5
dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcDogQWRkZWQuCisgICAgICAgIChK
U0M6OmlzVmFsaWRSZWdpc3RlckZvckxpdmVuZXNzKToKKyAgICAgICAgKEpTQzo6Z2V0TGVhZGVy
T2Zmc2V0Rm9yQmFzaWNCbG9jayk6CisgICAgICAgIChKU0M6OmZpbmRCYXNpY0Jsb2NrV2l0aExl
YWRlck9mZnNldCk6CisgICAgICAgIChKU0M6OmJsb2NrQ29udGFpbnNCeXRlY29kZU9mZnNldCk6
CisgICAgICAgIChKU0M6OmZpbmRCYXNpY0Jsb2NrRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAg
ICAoSlNDOjpjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Y29t
cHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OnN0ZXBPdmVySW5zdHJ1
Y3Rpb24pOgorICAgICAgICAoSlNDOjpjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJ5dGVjb2RlT2Zm
c2V0KToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCbG9jayk6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uOjpCeXRlY29kZUdlbmVyYXRvcmlm
aWNhdGlvbik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uOjpnZXRM
aXZlbmVzc0luZm9BdEJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5l
cmF0b3JpZmljYXRpb246OnN0b3JhZ2VGb3JHZW5lcmF0b3JMb2NhbCk6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uOjpydW4pOgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUdlbmVyYXRvcmlmaWNhdGlvbjo6cnVuTGl2ZW5lc3NBbmFseXNpcyk6CisgICAgICAgIChKU0M6
OnBlcmZvcm1HZW5lcmF0b3JpZmljYXRpb24pOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2Rl
R2VuZXJhdG9yaWZpY2F0aW9uLmg6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuaC4KKyAgICAgICAgKiBieXRlY29kZS9C
eXRlY29kZUdyYXBoLmNwcDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5oLgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVj
b2RlR3JhcGguaDogQWRkZWQuCisgICAgICAgIChKU0M6OkJ5dGVjb2RlR3JhcGg6OmNvZGVCbG9j
ayk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR3JhcGg6OmJhc2ljQmxvY2tzKToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHcmFwaDo6aW5zdHJ1Y3Rpb25zKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNv
ZGVHcmFwaDo6UmV2ZXJzZUl0ZXJhYmxlOjpSZXZlcnNlSXRlcmFibGUpOgorICAgICAgICAoSlND
OjpCeXRlY29kZUdyYXBoOjpSZXZlcnNlSXRlcmFibGU6OmJlZ2luKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHcmFwaDo6UmV2ZXJzZUl0ZXJhYmxlOjplbmQpOgorICAgICAgICAoSlNDOjpCeXRl
Y29kZUdyYXBoOjpiYXNpY0Jsb2Nrc0luUmV2ZXJzZU9yZGVyKToKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVHcmFwaDxCbG9jaz46OkJ5dGVjb2RlR3JhcGgpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5
dGVjb2RlSW5zZXJ0aW9uU2V0LmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkJ5dGVjb2RlSW5z
ZXJ0aW9uU2V0OjpleGVjdXRlKToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUluc2VydGlv
blNldC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVMaXZlbmVzc0FuYWx5c2lzLmguCisgICAgICAgIChKU0M6OkJ5dGVjb2RlSW5zZXJ0aW9uU2V0
OjpCeXRlY29kZUluc2VydGlvblNldCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlSW5zZXJ0aW9u
U2V0OjppbnNlcnQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUluc2VydGlvblNldDo6cmVtb3Zl
Qnl0ZWNvZGUpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uOgorICAgICAg
ICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHA6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzKToKKyAg
ICAgICAgKEpTQzo6ZmluZEJhc2ljQmxvY2tXaXRoTGVhZGVyT2Zmc2V0KToKKyAgICAgICAgKEpT
Qzo6ZmluZEJhc2ljQmxvY2tGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OnN0ZXBP
dmVySW5zdHJ1Y3Rpb24pOgorICAgICAgICAoSlNDOjpjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJ5
dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCbG9j
ayk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6cnVuTGl2ZW5lc3NG
aXhwb2ludCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Z2V0TGl2
ZW5lc3NJbmZvQXRCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlTGl2ZW5l
c3NBbmFseXNpczo6Y29tcHV0ZUZ1bGxMaXZlbmVzcyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
TGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0ZUtpbGxzKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVM
aXZlbmVzc0FuYWx5c2lzOjpkdW1wUmVzdWx0cyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlTGl2
ZW5lc3NBbmFseXNpczo6Y29tcHV0ZSk6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUvQnl0
ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmg6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVVc2VE
ZWYuaDoKKyAgICAgICAgKEpTQzo6Y29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCk6CisgICAg
ICAgIChKU0M6OmNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAqIGJ5dGVj
b2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZHVtcEJ5dGVjb2Rl
KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChK
U0M6OkNvZGVCbG9jazo6dmFsaWRhdGUpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5o
OgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmxpdmVuZXNzQW5hbHlzaXMpOgorICAgICAgICAq
IGJ5dGVjb2RlL0hhbmRsZXJJbmZvLmg6CisgICAgICAgICogYnl0ZWNvZGUvUHJlY2lzZUp1bXBU
YXJnZXRzLmNwcDoKKyAgICAgICAgKEpTQzo6Z2V0T3Bjb2RlSUQpOgorICAgICAgICAoSlNDOjpn
ZXRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZVBy
ZWNpc2VKdW1wVGFyZ2V0c0ludGVybmFsKToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZVByZWNpc2VK
dW1wVGFyZ2V0cyk6CisgICAgICAgIChKU0M6OmZpbmRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zm
c2V0KToKKyAgICAgICAgKiBieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHMuaDoKKyAgICAgICAg
KiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OlVubGlua2Vk
Q29kZUJsb2NrOjpoYW5kbGVyRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpVbmxp
bmtlZENvZGVCbG9jazo6aGFuZGxlckZvckluZGV4KToKKyAgICAgICAgKiBieXRlY29kZS9Vbmxp
bmtlZENvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpVbmxpbmtlZFN0cmluZ0p1bXBUYWJsZTo6
b2Zmc2V0Rm9yVmFsdWUpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6bGl2ZUNh
bGxlZUxvY2Fsc0F0WWllbGQpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZSk6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcik6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3R2VuZXJhdG9yRnJhbWUpOgorICAg
ICAgICAoSlNDOjpwcmVwYXJlSnVtcFRhYmxlRm9yU3RyaW5nU3dpdGNoKToKKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRTYXZlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXRSZXN1bWUpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdl
bmVyYXRvci5oOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdG9yRnJh
bWVSZWdpc3Rlcik6CisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0SGVhcC5oOgorICAgICAgICAq
IGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6
OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6
CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpCeXRlQ29kZVBhcnNlcjo6bmV3R2VuZXJhdG9yTG9jYWxEYXRhKToKKyAgICAgICAgKEpTQzo6
REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RGR0NhcGFi
aWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Y2FwYWJpbGl0eUxldmVsKToKKyAgICAg
ICAgKiBkZmcvREZHQ2xvYmJlcml6ZS5oOgorICAgICAgICAoSlNDOjpERkc6OmNsb2JiZXJpemUp
OgorICAgICAgICAqIGRmZy9ERkdDbG9iYmVyc0V4aXRTdGF0ZS5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6Y2xvYmJlcnNFeGl0U3RhdGUpOgorICAgICAgICAqIGRmZy9ERkdEb2VzR0MuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OmRvZXNHQyk6CisgICAgICAgICogZGZnL0RGR0ZpeHVwUGhhc2Uu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwTm9kZSk6CisgICAgICAg
ICogZGZnL0RGR0dlbmVyYXRvckxvY2FsRGF0YS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmguCisgICAgICAgIChKU0M6OkRG
Rzo6R2VuZXJhdG9yTG9jYWxEYXRhOjpwcmVkaWN0KToKKyAgICAgICAgKEpTQzo6REZHOjpHZW5l
cmF0b3JMb2NhbERhdGE6OnByZWRpY3Rpb24pOgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5oOgor
ICAgICAgICAqIGRmZy9ERkdNYXlFeGl0LmNwcDoKKyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgor
ICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc0dlbmVyYXRvckxvY2Fsc1NpemUpOgorICAgICAg
ICAoSlNDOjpERkc6Ok5vZGU6OmdlbmVyYXRvckxvY2Fsc1NpemUpOgorICAgICAgICAoSlNDOjpE
Rkc6Ok5vZGU6Omhhc0dlbmVyYXRvckxvY2FsSW5kZXgpOgorICAgICAgICAoSlNDOjpERkc6Ok5v
ZGU6OmdlbmVyYXRvckxvY2FsSW5kZXgpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc0dl
bmVyYXRvckxvY2FsRGF0YSk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6Z2VuZXJhdG9yTG9j
YWxEYXRhKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNHZW5lcmF0b3JGcmFtZUxvY2Fs
cyk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6Z2VuZXJhdG9yRnJhbWVMb2NhbHMpOgorICAg
ICAgICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNw
cDoKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGRmZy9ERkdQcmVk
aWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1
dGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAgKiBkZmcv
REZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
Ojpjb21waWxlTmV3R2VuZXJhdG9yRnJhbWUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjpjb21waWxlUmVzaXplR2VuZXJhdG9yTG9jYWxzKToKKyAgICAgICAgKiBkZmcvREZH
U3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAg
ICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1N0b3JlQmFycmllckluc2Vy
dGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHU3RydWN0dXJlUmVnaXN0cmF0aW9uUGhh
c2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlN0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlOjpy
dW4pOgorICAgICAgICAqIGZ0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcDoKKyAgICAg
ICAgKiBmdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oOgorICAgICAgICAqIGZ0bC9GVExD
YXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmNhbkNvbXBpbGUpOgorICAgICAg
ICAqIGdlbmVyYXRlLWJ5dGVjb2RlLWZpbGVzOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVy
cHJldGVyLmNwcDoKKyAgICAgICAgKEpTQzo6ZmluZEV4Y2VwdGlvbkhhbmRsZXIpOgorICAgICAg
ICAoSlNDOjpHZXRDYXRjaEhhbmRsZXJGdW5jdG9yOjpvcGVyYXRvcigpKToKKyAgICAgICAgKEpT
Qzo6VW53aW5kRnVuY3Rvcjo6b3BlcmF0b3IoKSk6CisgICAgICAgICogaml0L0pJVC5jcHA6Cisg
ICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcyk6CisgICAgICAgICogaml0
L0pJVC5oOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX3NhdmUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcmVzdW1lKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0X29wX25ld19nZW5lcmF0b3JfZnJhbWUpOgorICAgICAgICAq
IGppdC9KSVRPcGNvZGVzMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bfc2F2
ZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9yZXN1bWUpOgorICAgICAgICAqIGppdC9K
SVRQcm9wZXJ0eUFjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFdyaXRlQmFycmll
cik6CisgICAgICAgICogbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcDoKKyAgICAgICAg
KiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2Vy
LmNwcDoKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlSW5uZXIpOgorICAg
ICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VHZW5lcmF0b3JGdW5jdGlvblNvdXJj
ZUVsZW1lbnRzKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OmNyZWF0ZUdlbmVy
YXRvclBhcmFtZXRlcnMpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuaDoKKyAgICAgICAgKiBy
dW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OlNMT1dfUEFUSF9ERUNM
KToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5oOgorICAgICAgICAqIHJ1bnRp
bWUvR2VuZXJhdG9yRnJhbWUuY3BwOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6R2Vu
ZXJhdG9yRnJhbWUpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6ZmluaXNoQ3JlYXRp
b24pOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlU3RydWN0dXJlKToKKyAg
ICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkdlbmVy
YXRvckZyYW1lOjpzYXZlKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OnJlc3VtZSk6
CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAg
KiBydW50aW1lL0dlbmVyYXRvckZyYW1lLmg6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1l
Ojpsb2NhbE9mZnNldCk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpudW1iZXJPZkNh
bGxlZUxvY2Fsc09mZnNldCk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpudW1iZXJP
ZlNhdmVkQ2FsbGVlTG9jYWxzT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6
OmxvY2FsQXQpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3Bw
OgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAgICAgICogcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6Z2VuZXJh
dG9yRnJhbWVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAo
SlNDOjpWTTo6Vk0pOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKyAgICAgICAg
KiB0ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwtYW5kLWFycmF5LmpzOiBBZGRlZC4KKyAg
ICAgICAgKGZpYik6CisgICAgICAgICogdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLWFu
ZC1vYmplY3QuanM6IEFkZGVkLgorICAgICAgICAoZmliKToKKyAgICAgICAgKiB0ZXN0cy9zdHJl
c3MvZ2VuZXJhdG9yLWZpYi1mdGwtYW5kLXN0cmluZy5qczogQWRkZWQuCisgICAgICAgIChmaWIp
OgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC5qczogQWRkZWQuCisg
ICAgICAgIChmaWIpOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZnJhbWUtZW1w
dHkuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkVGhyb3cpOgorICAgICAgICAoc2hvdWxkVGhy
b3cuZmliKToKKwogMjAxNi0wNy0wMyAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5j
b20+CiAKICAgICAgICAgW1dpbl0gRExMcyBhcmUgbWlzc2luZyB2ZXJzaW9uIGluZm9ybWF0aW9u
LgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDc2ZjY4YmVmMmY5NzY2ZWUz
Y2ZiMjU5ZjcyYTJiOTdjZjQyZDk2YmMuLjk0MjI5MTQyZTA4Y2MzNTIyYWNhNmU0ZGQ4ZDVlZmVh
MDU2NjVkODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4
dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTE3OCw2ICsx
NzgsOSBAQCBzZXQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIGJ5dGVjb2RlL0FycmF5QWxs
b2NhdGlvblByb2ZpbGUuY3BwCiAgICAgYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmNwcAogICAgIGJ5
dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5jcHAKKyAgICBieXRlY29kZS9CeXRlY29kZUdlbmVy
YXRvcmlmaWNhdGlvbi5jcHAKKyAgICBieXRlY29kZS9CeXRlY29kZUdyYXBoLmNwcAorICAgIGJ5
dGVjb2RlL0J5dGVjb2RlSW5zZXJ0aW9uU2V0LmNwcAogICAgIGJ5dGVjb2RlL0J5dGVjb2RlSW50
cmluc2ljUmVnaXN0cnkuY3BwCiAgICAgYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lz
LmNwcAogICAgIGJ5dGVjb2RlL0NhbGxFZGdlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCAyZDJiYzM0MDkzMmQxOGI2YTZkNjcxYzA1NWRhNjk3ZmRhNWNhNGU0Li4zN2U2NjFi
ODc4NjNhZTYzNjZmMGM2NDU5ODNiZjAyY2Y1Zjc5NmE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtNjI1Myw2ICs2MjUzLDcgQEAKIAkJCQkwRjY5Q0M4NjE5M0FDNjBBMDA0NTc1
OUUgLyogREZHRnJvemVuVmFsdWUuY3BwICovLAogCQkJCTBGNjlDQzg3MTkzQUM2MEEwMDQ1NzU5
RSAvKiBERkdGcm96ZW5WYWx1ZS5oICovLAogCQkJCTg2RUM5REI2MTMyOERGODIwMDJCMkFENyAv
KiBERkdHZW5lcmF0aW9uSW5mby5oICovLAorCQkJCTcwNzkxNDFDMUM0QUE4MDcwMEI4MkZGNyAv
KiBERkdHZW5lcmF0b3JMb2NhbERhdGEuaCAqLywKIAkJCQk4NkVDOURCNzEzMjhERjgyMDAyQjJB
RDcgLyogREZHR3JhcGguY3BwICovLAogCQkJCTg2RUM5REI4MTMyOERGODIwMDJCMkFENyAvKiBE
RkdHcmFwaC5oICovLAogCQkJCTBGMkZDQ0YyMThBNjAwNzAwMDFBMjdGOCAvKiBERkdHcmFwaFNh
ZmVwb2ludC5jcHAgKi8sCkBAIC04MDEyLDYgKzgwMTMsNyBAQAogCQkJCTBGRTA1MDI5MUFBOTA5
NTYwMEQzM0IzMyAvKiBTY29wZWRBcmd1bWVudHNUYWJsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEZFMDUwMkIxQUE5MDk1NjAwRDMzQjMzIC8qIFNjb3BlT2Zmc2V0LmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjI0RTU1MjE3RUUyNzQ5MDBBQkIyMTcgLyogU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9y
LmggaW4gSGVhZGVycyAqLywKKwkJCQk3MDc5MTQxRDFDNEFBODYwMDBCODJGRjcgLyogREZHR2Vu
ZXJhdG9yTG9jYWxEYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNUZEMDA2ODE4OUFGRTlDMDA2
MzMyMzEgLyogU2NyaXB0QXJndW1lbnRzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTAzRkEyMTE4
OEVGRjY4MDAxMTBGMTQgLyogU2NyaXB0QnJlYWtwb2ludC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QTVGRDAwNkUxODlCMDBBQTAwNjMzMjMxIC8qIFNjcmlwdENhbGxGcmFtZS5oIGluIEhlYWRlcnMg
Ki8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvR2VuZXJhdG9y
UHJvdG90eXBlLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0dlbmVyYXRvclBy
b3RvdHlwZS5qcwppbmRleCAzYzE0MDY4N2RmYzdlMDBlZmU5MWFlODBiMmFjNjc2ZmE5YmY0OGY0
Li40OTlkYmQzOTJlODMxM2RjZGQ4NmVjOGMxNjA1NjlkN2Q2ZjU0OWIxIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvR2VuZXJhdG9yUHJvdG90eXBlLmpzCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9HZW5lcmF0b3JQcm90b3R5cGUuanMKQEAg
LTUxLDcgKzUxLDcgQEAgZnVuY3Rpb24gZ2VuZXJhdG9yUmVzdW1lKGdlbmVyYXRvciwgc2VudFZh
bHVlLCByZXN1bWVNb2RlKQogICAgIH0gZWxzZSB7CiAgICAgICAgIHRyeSB7CiAgICAgICAgICAg
ICBnZW5lcmF0b3IuQGdlbmVyYXRvclN0YXRlID0gQEdlbmVyYXRvclN0YXRlRXhlY3V0aW5nOwot
ICAgICAgICAgICAgdmFsdWUgPSBnZW5lcmF0b3IuQGdlbmVyYXRvck5leHQuQGNhbGwoZ2VuZXJh
dG9yLkBnZW5lcmF0b3JUaGlzLCBnZW5lcmF0b3IsIHN0YXRlLCBzZW50VmFsdWUsIHJlc3VtZU1v
ZGUpOworICAgICAgICAgICAgdmFsdWUgPSBnZW5lcmF0b3IuQGdlbmVyYXRvck5leHQuQGNhbGwo
Z2VuZXJhdG9yLkBnZW5lcmF0b3JUaGlzLCBnZW5lcmF0b3IsIHN0YXRlLCBzZW50VmFsdWUsIHJl
c3VtZU1vZGUsIGdlbmVyYXRvci5AZ2VuZXJhdG9yRnJhbWUpOwogICAgICAgICAgICAgaWYgKGdl
bmVyYXRvci5AZ2VuZXJhdG9yU3RhdGUgPT09IEBHZW5lcmF0b3JTdGF0ZUV4ZWN1dGluZykgewog
ICAgICAgICAgICAgICAgIGdlbmVyYXRvci5AZ2VuZXJhdG9yU3RhdGUgPSBAR2VuZXJhdG9yU3Rh
dGVDb21wbGV0ZWQ7CiAgICAgICAgICAgICAgICAgZG9uZSA9IHRydWU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suY3BwCmluZGV4
IDdmMTdjMGVmMTBiNDMzZmFjOGY1OGNiM2I5Y2E1ZDRkMDE1YmJhMDguLjExY2ZjZTY0ZjBiMGU4
MjM0MGY1NGIzOThlYzVjM2M5ZDM5Njg1Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suY3BwCkBAIC0yOSw2ICsyOSw3IEBA
CiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1
ZGUgIlByZWNpc2VKdW1wVGFyZ2V0cy5oIgorI2luY2x1ZGUgIlVubGlua2VkSW5zdHJ1Y3Rpb25T
dHJlYW0uaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTYwLDYgKzYxLDcgQEAgc3RhdGljIGJv
b2wgaXNCcmFuY2goT3Bjb2RlSUQgb3Bjb2RlSUQpCiAgICAgY2FzZSBvcF9zd2l0Y2hfc3RyaW5n
OgogICAgIGNhc2Ugb3Bfc2F2ZToKICAgICAgICAgcmV0dXJuIHRydWU7CisKICAgICBkZWZhdWx0
OgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpAQCAtMTEwLDEwICsxMTIsMjEgQEAgc3Rh
dGljIHZvaWQgbGlua0Jsb2NrcyhCeXRlY29kZUJhc2ljQmxvY2sqIHByZWRlY2Vzc29yLCBCeXRl
Y29kZUJhc2ljQmxvY2sqIHN1Y2MKICAgICBwcmVkZWNlc3Nvci0+YWRkU3VjY2Vzc29yKHN1Y2Nl
c3Nvcik7CiB9CiAKLXZvaWQgY29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MoQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mIGJh
c2ljQmxvY2tzKQorc3RhdGljIE9wY29kZUlEIGdldE9wY29kZUlEKEludGVycHJldGVyKiBpbnRl
cnByZXRlciwgY29uc3QgSW5zdHJ1Y3Rpb24mIGluc3RydWN0aW9uKQoreworICAgIHJldHVybiBp
bnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb24udS5vcGNvZGUpOworfQorCitzdGF0
aWMgT3Bjb2RlSUQgZ2V0T3Bjb2RlSUQoSW50ZXJwcmV0ZXIqLCBjb25zdCBVbmxpbmtlZEluc3Ry
dWN0aW9uJiBpbnN0cnVjdGlvbikKK3sKKyAgICByZXR1cm4gaW5zdHJ1Y3Rpb24udS5vcGNvZGU7
Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIEJsb2NrLCB0eXBlbmFtZSBJbnN0cnVjdGlvbj4KK3N0
YXRpYyB2b2lkIGNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzSW50ZXJuYWwoQmxvY2sqIGNvZGVC
bG9jaywgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBpbnN0cnVjdGlv
bkNvdW50LCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+JiBiYXNp
Y0Jsb2NrcykKIHsKICAgICBWZWN0b3I8dW5zaWduZWQsIDMyPiBqdW1wVGFyZ2V0czsKLSAgICBj
b21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKGNvZGVCbG9jaywganVtcFRhcmdldHMpOworICAgIGNv
bXB1dGVQcmVjaXNlSnVtcFRhcmdldHMoY29kZUJsb2NrLCBpbnN0cnVjdGlvbnNCZWdpbiwgaW5z
dHJ1Y3Rpb25Db3VudCwganVtcFRhcmdldHMpOwogCiAgICAgLy8gQ3JlYXRlIHRoZSBlbnRyeSBh
bmQgZXhpdCBiYXNpYyBibG9ja3MuCiAgICAgYmFzaWNCbG9ja3MucmVzZXJ2ZUNhcGFjaXR5KGp1
bXBUYXJnZXRzLnNpemUoKSArIDIpOwpAQCAtMTMxLDEwICsxNDQsOCBAQCB2b2lkIGNvbXB1dGVC
eXRlY29kZUJhc2ljQmxvY2tzKENvZGVCbG9jayogY29kZUJsb2NrLCBWZWN0b3I8c3RkOjp1bmlx
dWVfcHRyPEJ5dAogICAgIGJvb2wgbmV4dEluc3RydWN0aW9uSXNMZWFkZXIgPSBmYWxzZTsKIAog
ICAgIEludGVycHJldGVyKiBpbnRlcnByZXRlciA9IGNvZGVCbG9jay0+dm0oKS0+aW50ZXJwcmV0
ZXI7Ci0gICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luID0gY29kZUJsb2NrLT5pbnN0
cnVjdGlvbnMoKS5iZWdpbigpOwotICAgIHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQgPSBjb2Rl
QmxvY2stPmluc3RydWN0aW9ucygpLnNpemUoKTsKICAgICBmb3IgKHVuc2lnbmVkIGJ5dGVjb2Rl
T2Zmc2V0ID0gMDsgYnl0ZWNvZGVPZmZzZXQgPCBpbnN0cnVjdGlvbkNvdW50OykgewotICAgICAg
ICBPcGNvZGVJRCBvcGNvZGVJRCA9IGludGVycHJldGVyLT5nZXRPcGNvZGVJRChpbnN0cnVjdGlv
bnNCZWdpbltieXRlY29kZU9mZnNldF0udS5vcGNvZGUpOworICAgICAgICBPcGNvZGVJRCBvcGNv
ZGVJRCA9IGdldE9wY29kZUlEKGludGVycHJldGVyLCBpbnN0cnVjdGlvbnNCZWdpbltieXRlY29k
ZU9mZnNldF0pOwogICAgICAgICB1bnNpZ25lZCBvcGNvZGVMZW5ndGggPSBvcGNvZGVMZW5ndGhz
W29wY29kZUlEXTsKIAogICAgICAgICBib29sIGNyZWF0ZWRCbG9jayA9IGZhbHNlOwpAQCAtMTY5
LDggKzE4MCw3IEBAIHZvaWQgY29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MoQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0CiAKICAgICAgICAgYm9vbCBmYWxs
c1Rocm91Z2ggPSB0cnVlOyAKICAgICAgICAgZm9yICh1bnNpZ25lZCBieXRlY29kZU9mZnNldCA9
IGJsb2NrLT5sZWFkZXJCeXRlY29kZU9mZnNldCgpOyBieXRlY29kZU9mZnNldCA8IGJsb2NrLT5s
ZWFkZXJCeXRlY29kZU9mZnNldCgpICsgYmxvY2stPnRvdGFsQnl0ZWNvZGVMZW5ndGgoKTspIHsK
LSAgICAgICAgICAgIGNvbnN0IEluc3RydWN0aW9uJiBjdXJyZW50SW5zdHJ1Y3Rpb24gPSBpbnN0
cnVjdGlvbnNCZWdpbltieXRlY29kZU9mZnNldF07Ci0gICAgICAgICAgICBPcGNvZGVJRCBvcGNv
ZGVJRCA9IGludGVycHJldGVyLT5nZXRPcGNvZGVJRChjdXJyZW50SW5zdHJ1Y3Rpb24udS5vcGNv
ZGUpOworICAgICAgICAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBnZXRPcGNvZGVJRChpbnRlcnBy
ZXRlciwgaW5zdHJ1Y3Rpb25zQmVnaW5bYnl0ZWNvZGVPZmZzZXRdKTsKICAgICAgICAgICAgIHVu
c2lnbmVkIG9wY29kZUxlbmd0aCA9IG9wY29kZUxlbmd0aHNbb3Bjb2RlSURdOwogICAgICAgICAg
ICAgLy8gSWYgd2UgZm91bmQgYSB0ZXJtaW5hbCBieXRlY29kZSwgbGluayB0byB0aGUgZXhpdCBi
bG9jay4KICAgICAgICAgICAgIGlmIChpc1Rlcm1pbmFsKG9wY29kZUlEKSkgewpAQCAtMTg1LDcg
KzE5NSw3IEBAIHZvaWQgY29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MoQ29kZUJsb2NrKiBjb2Rl
QmxvY2ssIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0CiAgICAgICAgICAgICAvLyBibG9jayBi
ZWNhdXNlIHRoZSBmaW5hbGx5IGJsb2NrIHdpbGwgY3JlYXRlIGl0cyBvd24gY2F0Y2gsIHdoaWNo
IHdpbGwgZ2VuZXJhdGUgYSBIYW5kbGVySW5mby4KICAgICAgICAgICAgIGlmIChpc1Rocm93KG9w
Y29kZUlEKSkgewogICAgICAgICAgICAgICAgIEFTU0VSVChieXRlY29kZU9mZnNldCArIG9wY29k
ZUxlbmd0aCA9PSBibG9jay0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKSArIGJsb2NrLT50b3RhbEJ5
dGVjb2RlTGVuZ3RoKCkpOwotICAgICAgICAgICAgICAgIEhhbmRsZXJJbmZvKiBoYW5kbGVyID0g
Y29kZUJsb2NrLT5oYW5kbGVyRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpOworICAg
ICAgICAgICAgICAgIGF1dG8qIGhhbmRsZXIgPSBjb2RlQmxvY2stPmhhbmRsZXJGb3JCeXRlY29k
ZU9mZnNldChieXRlY29kZU9mZnNldCk7CiAgICAgICAgICAgICAgICAgZmFsbHNUaHJvdWdoID0g
ZmFsc2U7CiAgICAgICAgICAgICAgICAgaWYgKCFoYW5kbGVyKSB7CiAgICAgICAgICAgICAgICAg
ICAgIGxpbmtCbG9ja3MoYmxvY2ssIGV4aXQuZ2V0KCkpOwpAQCAtMjA1LDcgKzIxNSw3IEBAIHZv
aWQgY29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFZlY3Rv
cjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0CiAgICAgICAgICAgICBpZiAoaXNCcmFuY2gob3Bjb2RlSUQp
KSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKGJ5dGVjb2RlT2Zmc2V0ICsgb3Bjb2RlTGVuZ3Ro
ID09IGJsb2NrLT5sZWFkZXJCeXRlY29kZU9mZnNldCgpICsgYmxvY2stPnRvdGFsQnl0ZWNvZGVM
ZW5ndGgoKSk7CiAgICAgICAgICAgICAgICAgVmVjdG9yPHVuc2lnbmVkLCAxPiBieXRlY29kZU9m
ZnNldHNKdW1wZWRUbzsKLSAgICAgICAgICAgICAgICBmaW5kSnVtcFRhcmdldHNGb3JCeXRlY29k
ZU9mZnNldChjb2RlQmxvY2ssIGJ5dGVjb2RlT2Zmc2V0LCBieXRlY29kZU9mZnNldHNKdW1wZWRU
byk7CisgICAgICAgICAgICAgICAgZmluZEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoY29k
ZUJsb2NrLCBpbnN0cnVjdGlvbnNCZWdpbiwgYnl0ZWNvZGVPZmZzZXQsIGJ5dGVjb2RlT2Zmc2V0
c0p1bXBlZFRvKTsKIAogICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBi
YXNpY0Jsb2Nrcy5zaXplKCk7IGkrKykgewogICAgICAgICAgICAgICAgICAgICBCeXRlY29kZUJh
c2ljQmxvY2sqIG90aGVyQmxvY2sgPSBiYXNpY0Jsb2Nrc1tpXS5nZXQoKTsKQEAgLTIzNSw0ICsy
NDUsMTQgQEAgdm9pZCBjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2NrcyhDb2RlQmxvY2sqIGNvZGVC
bG9jaywgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXQKICAgICAgICAgYmFzaWNCbG9jay0+c2hy
aW5rVG9GaXQoKTsKIH0KIAordm9pZCBjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2NrcyhDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBp
bnN0cnVjdGlvbkNvdW50LCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9j
az4+JiBiYXNpY0Jsb2NrcykKK3sKKyAgICBjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2Nrc0ludGVy
bmFsKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb25zQmVnaW4sIGluc3RydWN0aW9uQ291bnQsIGJhc2lj
QmxvY2tzKTsKK30KKwordm9pZCBjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2NrcyhVbmxpbmtlZENv
ZGVCbG9jayogY29kZUJsb2NrLCBVbmxpbmtlZEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdp
biwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCwgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRl
Y29kZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9ja3MpCit7CisgICAgY29tcHV0ZUJ5dGVjb2RlQmFz
aWNCbG9ja3NJbnRlcm5hbChjb2RlQmxvY2ssIGluc3RydWN0aW9uc0JlZ2luLCBpbnN0cnVjdGlv
bkNvdW50LCBiYXNpY0Jsb2Nrcyk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5oCmluZGV4
IGJkN2QzYWU5YmEzNDNlMWIwNzE3OWU5OGYxZWU4OWRhNjViYTdlMjAuLjY3MmJmM2RkYzhiNzJh
OTc1YWE1ZWIwOTM0MWUwMTI0Y2Y1MzlhOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmgKQEAgLTM1LDYgKzM1LDkgQEAKIG5h
bWVzcGFjZSBKU0MgewogCiBjbGFzcyBDb2RlQmxvY2s7CitjbGFzcyBVbmxpbmtlZENvZGVCbG9j
azsKK2NsYXNzIEluc3RydWN0aW9uOworY2xhc3MgVW5saW5rZWRJbnN0cnVjdGlvbjsKIAogY2xh
c3MgQnl0ZWNvZGVCYXNpY0Jsb2NrIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAg
LTcwLDcgKzczLDggQEAgY2xhc3MgQnl0ZWNvZGVCYXNpY0Jsb2NrIHsKICAgICBGYXN0Qml0VmVj
dG9yIG1fb3V0OwogfTsKIAotdm9pZCBjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2NrcyhDb2RlQmxv
Y2sqLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+Jik7Cit2b2lk
IGNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzKENvZGVCbG9jayosIEluc3RydWN0aW9uKiBpbnN0
cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCwgVmVjdG9yPHN0ZDo6dW5p
cXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYpOwordm9pZCBjb21wdXRlQnl0ZWNvZGVCYXNp
Y0Jsb2NrcyhVbmxpbmtlZENvZGVCbG9jayosIFVubGlua2VkSW5zdHJ1Y3Rpb24qIGluc3RydWN0
aW9uc0JlZ2luLCB1bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50LCBWZWN0b3I8c3RkOjp1bmlxdWVf
cHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+Jik7CiAKIGlubGluZSBCeXRlY29kZUJhc2ljQmxvY2s6
OkJ5dGVjb2RlQmFzaWNCbG9jayh1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgbGVuZ3RoKQogICAg
IDogbV9sZWFkZXJCeXRlY29kZU9mZnNldChzdGFydCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjJjMmUxYzAyYTM3NDdlZTQ1MGRlZDE3YjM4NDY2YjU2YTI0ZTNhOWUKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVH
ZW5lcmF0b3JpZmljYXRpb24uY3BwCkBAIC0wLDAgKzEsNDE3IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE2IFl1c3VrZSBTdXp1a2kgPHl1c3VrZS5zdXp1a2lAc3NsYWIuaWNzLmtlaW8uYWMu
anA+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJCeXRlY29kZUdl
bmVyYXRvcmlmaWNhdGlvbi5oIgorCisjaW5jbHVkZSAiSWRlbnRpZmllcklubGluZXMuaCIKKyNp
bmNsdWRlICJJbnRlcnByZXRlci5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCisj
aW5jbHVkZSAiQnl0ZWNvZGVJbnNlcnRpb25TZXQuaCIKKyNpbmNsdWRlICJCeXRlY29kZVVzZURl
Zi5oIgorI2luY2x1ZGUgIlN0cm9uZ0lubGluZXMuaCIKKyNpbmNsdWRlICJVbmxpbmtlZENvZGVC
bG9jay5oIgorCituYW1lc3BhY2UgSlNDIHsKKworc3RhdGljIGJvb2wgaXNWYWxpZFJlZ2lzdGVy
Rm9yTGl2ZW5lc3MoVW5saW5rZWRDb2RlQmxvY2sqIGNvZGVCbG9jaywgaW50IG9wZXJhbmQpCit7
CisgICAgaWYgKGNvZGVCbG9jay0+aXNDb25zdGFudFJlZ2lzdGVySW5kZXgob3BlcmFuZCkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJl
ZyhvcGVyYW5kKTsKKyAgICByZXR1cm4gdmlydHVhbFJlZy5pc0xvY2FsKCk7Cit9CisKK3N0YXRp
YyB1bnNpZ25lZCBnZXRMZWFkZXJPZmZzZXRGb3JCYXNpY0Jsb2NrKHN0ZDo6dW5pcXVlX3B0cjxC
eXRlY29kZUJhc2ljQmxvY2s+KiBiYXNpY0Jsb2NrKQoreworICAgIHJldHVybiAoKmJhc2ljQmxv
Y2spLT5sZWFkZXJCeXRlY29kZU9mZnNldCgpOworfQorCitzdGF0aWMgQnl0ZWNvZGVCYXNpY0Js
b2NrKiBmaW5kQmFzaWNCbG9ja1dpdGhMZWFkZXJPZmZzZXQoQnl0ZWNvZGVHcmFwaDxVbmxpbmtl
ZENvZGVCbG9jaz4mIGdyYXBoLCB1bnNpZ25lZCBsZWFkZXJPZmZzZXQpCit7CisgICAgcmV0dXJu
ICgqdHJ5QmluYXJ5U2VhcmNoPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+LCB1
bnNpZ25lZD4oZ3JhcGguYmFzaWNCbG9ja3MoKSwgZ3JhcGguYmFzaWNCbG9ja3MoKS5zaXplKCks
IGxlYWRlck9mZnNldCwgZ2V0TGVhZGVyT2Zmc2V0Rm9yQmFzaWNCbG9jaykpLmdldCgpOworfQor
CitzdGF0aWMgYm9vbCBibG9ja0NvbnRhaW5zQnl0ZWNvZGVPZmZzZXQoQnl0ZWNvZGVCYXNpY0Js
b2NrKiBibG9jaywgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpCit7CisgICAgdW5zaWduZWQgbGVh
ZGVyT2Zmc2V0ID0gYmxvY2stPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCk7CisgICAgcmV0dXJuIGJ5
dGVjb2RlT2Zmc2V0ID49IGxlYWRlck9mZnNldCAmJiBieXRlY29kZU9mZnNldCA8IGxlYWRlck9m
ZnNldCArIGJsb2NrLT50b3RhbEJ5dGVjb2RlTGVuZ3RoKCk7Cit9CisKK3N0YXRpYyBCeXRlY29k
ZUJhc2ljQmxvY2sqIGZpbmRCYXNpY0Jsb2NrRm9yQnl0ZWNvZGVPZmZzZXQoQnl0ZWNvZGVHcmFw
aDxVbmxpbmtlZENvZGVCbG9jaz4mIGdyYXBoLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCkKK3sK
Ky8qCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGJhc2ljQmxvY2tzLnNpemUoKTsgaSsr
KSB7CisgICAgICAgIGlmIChibG9ja0NvbnRhaW5zQnl0ZWNvZGVPZmZzZXQoYmFzaWNCbG9ja3Nb
aV0uZ2V0KCksIGJ5dGVjb2RlT2Zmc2V0KSkKKyAgICAgICAgICAgIHJldHVybiBiYXNpY0Jsb2Nr
c1tpXS5nZXQoKTsKKyAgICB9CisgICAgcmV0dXJuIDA7CisqLworICAgIEJ5dGVjb2RlR3JhcGg8
VW5saW5rZWRDb2RlQmxvY2s+OjpCYXNpY0Jsb2Nrc1ZlY3RvciYgYmFzaWNCbG9ja3MgPSBncmFw
aC5iYXNpY0Jsb2NrcygpOworCisgICAgc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9j
az4qIGJhc2ljQmxvY2sgPSBhcHByb3hpbWF0ZUJpbmFyeVNlYXJjaDxzdGQ6OnVuaXF1ZV9wdHI8
Qnl0ZWNvZGVCYXNpY0Jsb2NrPiwgdW5zaWduZWQ+KAorICAgICAgICBiYXNpY0Jsb2NrcywgYmFz
aWNCbG9ja3Muc2l6ZSgpLCBieXRlY29kZU9mZnNldCwgZ2V0TGVhZGVyT2Zmc2V0Rm9yQmFzaWNC
bG9jayk7CisgICAgLy8gV2UgZm91bmQgdGhlIGJsb2NrIHdlIHdlcmUgbG9va2luZyBmb3IuCisg
ICAgaWYgKGJsb2NrQ29udGFpbnNCeXRlY29kZU9mZnNldCgoKmJhc2ljQmxvY2spLmdldCgpLCBi
eXRlY29kZU9mZnNldCkpCisgICAgICAgIHJldHVybiAoKmJhc2ljQmxvY2spLmdldCgpOworCisg
ICAgLy8gQmFzaWMgYmxvY2sgaXMgdG8gdGhlIGxlZnQgb2YgdGhlIHJldHVybmVkIGJsb2NrLgor
ICAgIGlmIChieXRlY29kZU9mZnNldCA8ICgqYmFzaWNCbG9jayktPmxlYWRlckJ5dGVjb2RlT2Zm
c2V0KCkpIHsKKyAgICAgICAgQVNTRVJUKGJhc2ljQmxvY2sgLSAxID49IGJhc2ljQmxvY2tzLmRh
dGEoKSk7CisgICAgICAgIEFTU0VSVChibG9ja0NvbnRhaW5zQnl0ZWNvZGVPZmZzZXQoYmFzaWNC
bG9ja1stMV0uZ2V0KCksIGJ5dGVjb2RlT2Zmc2V0KSk7CisgICAgICAgIHJldHVybiBiYXNpY0Js
b2NrWy0xXS5nZXQoKTsKKyAgICB9CisKKyAgICAvLyBCYXNpYyBibG9jayBpcyB0byB0aGUgcmln
aHQgb2YgdGhlIHJldHVybmVkIGJsb2NrLgorICAgIEFTU0VSVCgmYmFzaWNCbG9ja1sxXSA8PSAm
YmFzaWNCbG9ja3MubGFzdCgpKTsKKyAgICBBU1NFUlQoYmxvY2tDb250YWluc0J5dGVjb2RlT2Zm
c2V0KGJhc2ljQmxvY2tbMV0uZ2V0KCksIGJ5dGVjb2RlT2Zmc2V0KSk7CisgICAgcmV0dXJuIGJh
c2ljQmxvY2tbMV0uZ2V0KCk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+Cit2b2lk
IGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoVW5saW5rZWRDb2RlQmxvY2sqIGNvZGVCbG9j
aywgT3Bjb2RlSUQgb3Bjb2RlSUQsIFVubGlua2VkSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBC
eXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgY29uc3Qg
RnVuY3RvciYgZnVuY3RvcikKK3sKKyAgICBVTlVTRURfUEFSQU0oYnl0ZWNvZGVPZmZzZXQpOwor
ICAgIHN3aXRjaCAob3Bjb2RlSUQpIHsKKyAgICBjYXNlIG9wX3NhdmU6CisgICAgICAgIGJyZWFr
OworCisgICAgY2FzZSBvcF9yZXN1bWU6IHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoYmxvY2st
PnN1Y2Nlc3NvcnMoKS5zaXplKCkgPT0gMSk7CisgICAgICAgIGJsb2NrLT5zdWNjZXNzb3JzKClb
MF0tPmluKCkuZm9yRWFjaFNldEJpdChbJl0odW5zaWduZWQgbG9jYWwpIHsKKyAgICAgICAgICAg
IGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIHZpcnR1YWxSZWdpc3Rl
ckZvckxvY2FsKGxvY2FsKS5vZmZzZXQoKSk7CisgICAgICAgIH0pOworICAgICAgICBicmVhazsK
KyAgICB9CisKKyAgICBkZWZhdWx0OgorICAgICAgICBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zm
c2V0KGNvZGVCbG9jaywgb3Bjb2RlSUQsIGluc3RydWN0aW9uLCBmdW5jdG9yKTsKKyAgICAgICAg
YnJlYWs7CisgICAgfQorfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgordm9pZCBjb21w
dXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KFVubGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2ssIE9w
Y29kZUlEIG9wY29kZUlELCBVbmxpbmtlZEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgQnl0ZWNv
ZGVCYXNpY0Jsb2NrKiBibG9jaywgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIGNvbnN0IEZ1bmN0
b3ImIGZ1bmN0b3IpCit7CisgICAgaWYgKG9wY29kZUlEICE9IG9wX2VudGVyICYmIGNvZGVCbG9j
ay0+d2FzQ29tcGlsZWRXaXRoRGVidWdnaW5nT3Bjb2RlcygpICYmIGNvZGVCbG9jay0+c2NvcGVS
ZWdpc3RlcigpLmlzVmFsaWQoKSkKKyAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0
aW9uLCBvcGNvZGVJRCwgY29kZUJsb2NrLT5zY29wZVJlZ2lzdGVyKCkub2Zmc2V0KCkpOworCisg
ICAgc3dpdGNoIChvcGNvZGVJRCkgeworICAgIGNhc2Ugb3Bfc2F2ZTogeworICAgICAgICBmdW5j
dG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBpbnN0cnVjdGlvblsxXS51Lm9w
ZXJhbmQpOworICAgICAgICB1bnNpZ25lZCBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXQgPSBieXRl
Y29kZU9mZnNldCArIGluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKKyAgICAgICAgQnl0ZWNvZGVC
YXNpY0Jsb2NrKiBtZXJnZVBvaW50QmxvY2sgPSBudWxscHRyOworICAgICAgICBmb3IgKEJ5dGVj
b2RlQmFzaWNCbG9jayogc3VjY2Vzc29yIDogYmxvY2stPnN1Y2Nlc3NvcnMoKSkgeworICAgICAg
ICAgICAgaWYgKHN1Y2Nlc3Nvci0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKSA9PSBtZXJnZVBvaW50
Qnl0ZWNvZGVPZmZzZXQpIHsKKyAgICAgICAgICAgICAgICBtZXJnZVBvaW50QmxvY2sgPSBzdWNj
ZXNzb3I7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICAgICAgQVNTRVJUKG1lcmdlUG9pbnRCbG9jayk7CisgICAgICAgIG1lcmdlUG9pbnRCbG9j
ay0+aW4oKS5mb3JFYWNoU2V0Qml0KFsmXSh1bnNpZ25lZCBsb2NhbCkgeworICAgICAgICAgICAg
ZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgdmlydHVhbFJlZ2lzdGVy
Rm9yTG9jYWwobG9jYWwpLm9mZnNldCgpKTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBjYXNlIG9wX3Jlc3VtZToKKyAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ss
IGluc3RydWN0aW9uLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKTsKKyAgICAg
ICAgcmV0dXJuOworCisgICAgZGVmYXVsdDoKKyAgICAgICAgY29tcHV0ZVVzZXNGb3JCeXRlY29k
ZU9mZnNldChjb2RlQmxvY2ssIG9wY29kZUlELCBpbnN0cnVjdGlvbiwgZnVuY3Rvcik7CisgICAg
ICAgIHJldHVybjsKKyAgICB9Cit9CisKKy8vIFNpbXBsaWZpZWQgaW50ZXJmYWNlIHRvIGJ5dGVj
b2RlIHVzZS9kZWYsIHdoaWNoIGRldGVybWluZXMgZGVmcyBmaXJzdCBhbmQgdGhlbiB1c2VzLCBh
bmQgaW5jbHVkZXMKKy8vIGV4Y2VwdGlvbiBoYW5kbGVycyBpbiB0aGUgdXNlcy4KK3RlbXBsYXRl
PHR5cGVuYW1lIFVzZUZ1bmN0b3IsIHR5cGVuYW1lIERlZkZ1bmN0b3I+CitzdGF0aWMgdm9pZCBz
dGVwT3Zlckluc3RydWN0aW9uKFVubGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2Rl
QmFzaWNCbG9jayogYmxvY2ssIEJ5dGVjb2RlR3JhcGg8VW5saW5rZWRDb2RlQmxvY2s+JiBncmFw
aCwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIGNvbnN0IFVzZUZ1bmN0b3ImIHVzZSwgY29uc3Qg
RGVmRnVuY3RvciYgZGVmKQoreworICAgIC8vIFRoaXMgYWJzdHJhY3RseSBleGVjdXRlIHRoZSBp
bnN0cnVjdGlvbiBpbiByZXZlcnNlLiBJbnN0cnVjdGlvbnMgbG9naWNhbGx5IGZpcnN0IHVzZSBv
cGVyYW5kcyBhbmQKKyAgICAvLyB0aGVuIGRlZmluZSBvcGVyYW5kcy4gVGhpcyBsb2dpY2FsIG9y
ZGVyaW5nIGlzIG5lY2Vzc2FyeSBmb3Igb3BlcmF0aW9ucyB0aGF0IHVzZSBhbmQgZGVmIHRoZSBz
YW1lCisgICAgLy8gb3BlcmFuZCwgbGlrZToKKyAgICAvLworICAgIC8vICAgICBvcF9hZGQgbG9j
MSwgbG9jMSwgbG9jMgorICAgIC8vCisgICAgLy8gVGhlIHVzZSBvZiBsb2MxIGhhcHBlbnMgYmVm
b3JlIHRoZSBkZWYgb2YgbG9jMS4gVGhhdCdzIGEgc2VtYW50aWMgcmVxdWlyZW1lbnQgc2luY2Ug
dGhlIGFkZAorICAgIC8vIG9wZXJhdGlvbiBjYW5ub3QgdHJhdmVsIGZvcndhcmQgaW4gdGltZSB0
byByZWFkIHRoZSB2YWx1ZSB0aGF0IGl0IHdpbGwgcHJvZHVjZSBhZnRlciByZWFkaW5nIHRoYXQK
KyAgICAvLyB2YWx1ZS4gU2luY2Ugd2UgYXJlIGV4ZWN1dGluZyBpbiByZXZlcnNlLCB0aGlzIG1l
YW5zIHRoYXQgd2UgbXVzdCBkbyBkZWZzIGJlZm9yZSB1c2VzIChyZXZlcnNlIG9mCisgICAgLy8g
dXNlcyBiZWZvcmUgZGVmcykuCisgICAgLy8KKyAgICAvLyBTaW5jZSB0aGlzIGlzIGEgbGl2ZW5l
c3MgYW5hbHlzaXMsIHRoaXMgb3JkZXJpbmcgZW5kcyB1cCBiZWluZyBwYXJ0aWN1bGFybHkgaW1w
b3J0YW50OiBpZiB3ZSBkaWQKKyAgICAvLyB1c2VzIGJlZm9yZSBkZWZzLCB0aGVuIHRoZSBhZGQg
b3BlcmF0aW9uIGFib3ZlIHdvdWxkIGFwcGVhciB0byBub3QgaGF2ZSBsb2MxIGxpdmUsIHNpbmNl
IHdlJ2QKKyAgICAvLyBmaXJzdCBhZGQgaXQgdG8gdGhlIG91dCBzZXQgKHRoZSB1c2UpLCBhbmQg
dGhlbiB3ZSdkIHJlbW92ZSBpdCAodGhlIGRlZikuCisKKyAgICBhdXRvJiBpbnN0cnVjdGlvbnMg
PSBncmFwaC5pbnN0cnVjdGlvbnMoKTsKKyAgICBVbmxpbmtlZEluc3RydWN0aW9uKiBpbnN0cnVj
dGlvbiA9ICZpbnN0cnVjdGlvbnNbYnl0ZWNvZGVPZmZzZXRdOworICAgIE9wY29kZUlEIG9wY29k
ZUlEID0gaW5zdHJ1Y3Rpb24tPnUub3Bjb2RlOworCisgICAgY29tcHV0ZURlZnNGb3JCeXRlY29k
ZU9mZnNldCgKKyAgICAgICAgY29kZUJsb2NrLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb24sIGJsb2Nr
LCBieXRlY29kZU9mZnNldCwKKyAgICAgICAgWyZdIChVbmxpbmtlZENvZGVCbG9jayogY29kZUJs
b2NrLCBVbmxpbmtlZEluc3RydWN0aW9uKiwgT3Bjb2RlSUQsIGludCBvcGVyYW5kKSB7CisgICAg
ICAgICAgICBpZiAoaXNWYWxpZFJlZ2lzdGVyRm9yTGl2ZW5lc3MoY29kZUJsb2NrLCBvcGVyYW5k
KSkKKyAgICAgICAgICAgICAgICBkZWYoVmlydHVhbFJlZ2lzdGVyKG9wZXJhbmQpLnRvTG9jYWwo
KSk7CisgICAgICAgIH0pOworCisgICAgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCgKKyAg
ICAgICAgY29kZUJsb2NrLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb24sIGJsb2NrLCBieXRlY29kZU9m
ZnNldCwKKyAgICAgICAgWyZdIChVbmxpbmtlZENvZGVCbG9jayogY29kZUJsb2NrLCBVbmxpbmtl
ZEluc3RydWN0aW9uKiwgT3Bjb2RlSUQsIGludCBvcGVyYW5kKSB7CisgICAgICAgICAgICBpZiAo
aXNWYWxpZFJlZ2lzdGVyRm9yTGl2ZW5lc3MoY29kZUJsb2NrLCBvcGVyYW5kKSkKKyAgICAgICAg
ICAgICAgICB1c2UoVmlydHVhbFJlZ2lzdGVyKG9wZXJhbmQpLnRvTG9jYWwoKSk7CisgICAgICAg
IH0pOworCisgICAgLy8gSWYgd2UgaGF2ZSBhbiBleGNlcHRpb24gaGFuZGxlciwgd2Ugd2FudCB0
aGUgbGl2ZS1pbiB2YXJpYWJsZXMgb2YgdGhlIAorICAgIC8vIGV4Y2VwdGlvbiBoYW5kbGVyIGJs
b2NrIHRvIGJlIGluY2x1ZGVkIGluIHRoZSBsaXZlLWluIG9mIHRoaXMgcGFydGljdWxhciBieXRl
Y29kZS4KKyAgICBpZiAoVW5saW5rZWRIYW5kbGVySW5mbyogaGFuZGxlciA9IGNvZGVCbG9jay0+
aGFuZGxlckZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KSkgeworICAgICAgICBpZiAo
b3Bjb2RlSUQgIT0gb3BfcmVzdW1lKSB7CisgICAgICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2sq
IGhhbmRsZXJCbG9jayA9IGZpbmRCYXNpY0Jsb2NrV2l0aExlYWRlck9mZnNldChncmFwaCwgaGFu
ZGxlci0+dGFyZ2V0KTsKKyAgICAgICAgICAgIEFTU0VSVChoYW5kbGVyQmxvY2spOworICAgICAg
ICAgICAgaGFuZGxlckJsb2NrLT5pbigpLmZvckVhY2hTZXRCaXQodXNlKTsKKyAgICAgICAgfQor
ICAgIH0KK30KKworc3RhdGljIHZvaWQgc3RlcE92ZXJJbnN0cnVjdGlvbihVbmxpbmtlZENvZGVC
bG9jayogY29kZUJsb2NrLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrLCBCeXRlY29kZUdyYXBo
PFVubGlua2VkQ29kZUJsb2NrPiYgZ3JhcGgsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBGYXN0
Qml0VmVjdG9yJiBvdXQpCit7CisgICAgc3RlcE92ZXJJbnN0cnVjdGlvbigKKyAgICAgICAgY29k
ZUJsb2NrLCBibG9jaywgZ3JhcGgsIGJ5dGVjb2RlT2Zmc2V0LAorICAgICAgICBbJl0gKHVuc2ln
bmVkIGJpdEluZGV4KSB7CisgICAgICAgICAgICAvLyBUaGlzIGlzIHRoZSB1c2UgZnVuY3Rvciwg
c28gd2Ugc2V0IHRoZSBiaXQuCisgICAgICAgICAgICBvdXQuc2V0KGJpdEluZGV4KTsKKyAgICAg
ICAgfSwKKyAgICAgICAgWyZdICh1bnNpZ25lZCBiaXRJbmRleCkgeworICAgICAgICAgICAgLy8g
VGhpcyBpcyB0aGUgZGVmIGZ1bmN0b3IsIHNvIHdlIGNsZWFyIHRoZSBiaXQuCisgICAgICAgICAg
ICBvdXQuY2xlYXIoYml0SW5kZXgpOworICAgICAgICB9KTsKK30KKworc3RhdGljIHZvaWQgY29t
cHV0ZUxvY2FsTGl2ZW5lc3NGb3JCeXRlY29kZU9mZnNldChVbmxpbmtlZENvZGVCbG9jayogY29k
ZUJsb2NrLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrLCBCeXRlY29kZUdyYXBoPFVubGlua2Vk
Q29kZUJsb2NrPiYgZ3JhcGgsIHVuc2lnbmVkIHRhcmdldE9mZnNldCwgRmFzdEJpdFZlY3RvciYg
cmVzdWx0KQoreworICAgIEFTU0VSVCghYmxvY2stPmlzRXhpdEJsb2NrKCkpOworICAgIEFTU0VS
VCghYmxvY2stPmlzRW50cnlCbG9jaygpKTsKKworICAgIEZhc3RCaXRWZWN0b3Igb3V0ID0gYmxv
Y2stPm91dCgpOworCisgICAgZm9yIChpbnQgaSA9IGJsb2NrLT5ieXRlY29kZU9mZnNldHMoKS5z
aXplKCkgLSAxOyBpID49IDA7IGktLSkgeworICAgICAgICB1bnNpZ25lZCBieXRlY29kZU9mZnNl
dCA9IGJsb2NrLT5ieXRlY29kZU9mZnNldHMoKVtpXTsKKyAgICAgICAgaWYgKHRhcmdldE9mZnNl
dCA+IGJ5dGVjb2RlT2Zmc2V0KQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgc3RlcE92
ZXJJbnN0cnVjdGlvbihjb2RlQmxvY2ssIGJsb2NrLCBncmFwaCwgYnl0ZWNvZGVPZmZzZXQsIG91
dCk7CisgICAgfQorCisgICAgcmVzdWx0LnNldChvdXQpOworfQorCitzdGF0aWMgdm9pZCBjb21w
dXRlTG9jYWxMaXZlbmVzc0ZvckJsb2NrKFVubGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5
dGVjb2RlQmFzaWNCbG9jayogYmxvY2ssIEJ5dGVjb2RlR3JhcGg8VW5saW5rZWRDb2RlQmxvY2s+
JiBncmFwaCkKK3sKKyAgICBpZiAoYmxvY2stPmlzRXhpdEJsb2NrKCkgfHwgYmxvY2stPmlzRW50
cnlCbG9jaygpKQorICAgICAgICByZXR1cm47CisgICAgY29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JC
eXRlY29kZU9mZnNldChjb2RlQmxvY2ssIGJsb2NrLCBncmFwaCwgYmxvY2stPmxlYWRlckJ5dGVj
b2RlT2Zmc2V0KCksIGJsb2NrLT5pbigpKTsKK30KKworY2xhc3MgQnl0ZWNvZGVHZW5lcmF0b3Jp
ZmljYXRpb24geworcHVibGljOgorICAgIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uKEJ5dGVj
b2RlR3JhcGg8VW5saW5rZWRDb2RlQmxvY2s+JiBncmFwaCwgU3ltYm9sVGFibGUqIGdlbmVyYXRv
ckZyYW1lU3ltYm9sVGFibGUsIGludCBnZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlSW5kZXgpCisg
ICAgICAgIDogbV92bSgqZ3JhcGguY29kZUJsb2NrKCktPnZtKCkpCisgICAgICAgICwgbV9ncmFw
aChncmFwaCkKKyAgICAgICAgLCBtX2luc2VydGlvblNldChncmFwaCkKKyAgICAgICAgLCBtX2dl
bmVyYXRvckZyYW1lU3ltYm9sVGFibGUobV92bSwgZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZSkK
KyAgICAgICAgLCBtX2dlbmVyYXRvckZyYW1lU3ltYm9sVGFibGVJbmRleChnZW5lcmF0b3JGcmFt
ZVN5bWJvbFRhYmxlSW5kZXgpCisgICAgeworICAgIH0KKworICAgIEZhc3RCaXRWZWN0b3IgZ2V0
TGl2ZW5lc3NJbmZvQXRCeXRlY29kZU9mZnNldCh1bnNpZ25lZCBieXRlY29kZU9mZnNldCkKKyAg
ICB7CisgICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2sgPSBmaW5kQmFzaWNCbG9ja0Zv
ckJ5dGVjb2RlT2Zmc2V0KG1fZ3JhcGgsIGJ5dGVjb2RlT2Zmc2V0KTsKKyAgICAgICAgQVNTRVJU
KGJsb2NrKTsKKyAgICAgICAgQVNTRVJUKCFibG9jay0+aXNFbnRyeUJsb2NrKCkpOworICAgICAg
ICBBU1NFUlQoIWJsb2NrLT5pc0V4aXRCbG9jaygpKTsKKyAgICAgICAgRmFzdEJpdFZlY3RvciBv
dXQ7CisgICAgICAgIG91dC5yZXNpemUoYmxvY2stPm91dCgpLm51bUJpdHMoKSk7CisgICAgICAg
IGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQnl0ZWNvZGVPZmZzZXQobV9ncmFwaC5jb2RlQmxvY2so
KSwgYmxvY2ssIG1fZ3JhcGgsIGJ5dGVjb2RlT2Zmc2V0LCBvdXQpOworICAgICAgICByZXR1cm4g
b3V0OworICAgIH0KKworICAgIHN0cnVjdCBTdG9yYWdlIHsKKyAgICAgICAgSWRlbnRpZmllciBp
ZGVudGlmaWVyOworICAgICAgICB1bnNpZ25lZCBpZGVudGlmaWVySW5kZXg7CisgICAgICAgIFNj
b3BlT2Zmc2V0IHNjb3BlT2Zmc2V0OworICAgIH07CisKKyAgICBTdG9yYWdlIHN0b3JhZ2VGb3JH
ZW5lcmF0b3JMb2NhbCh1bnNpZ25lZCBpbmRleCkKKyAgICB7CisgICAgICAgIGlmIChtX3N0b3Jh
Z2VzLnNpemUoKSA8PSBpbmRleCkgeworICAgICAgICAgICAgLy8gRklYTUU6IFN1cGVyIG5haXZl
IGltcGxlbWVudGF0aW9uLiBXZSBzaG91bGQgcmVjb25zaWRlciB0aGUgaW5kZXhlZCBnZW5lcmF0
b3IgbG9jYWxzIGluIHRoZSBzY29wZS4KKyAgICAgICAgICAgIFVubGlua2VkQ29kZUJsb2NrKiBj
b2RlQmxvY2sgPSBtX2dyYXBoLmNvZGVCbG9jaygpOworICAgICAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMCwgYWRkaXRpb24gPSBtX3N0b3JhZ2VzLnNpemUoKSAtIGluZGV4ICsgMTsgaSA8IGFk
ZGl0aW9uOyArK2kpIHsKKyAgICAgICAgICAgICAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIgPSBJ
ZGVudGlmaWVyOjpmcm9tVWlkKFByaXZhdGVOYW1lKCkpOworICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGlkZW50aWZpZXJJbmRleCA9IGNvZGVCbG9jay0+bnVtYmVyT2ZJZGVudGlmaWVycygpOwor
ICAgICAgICAgICAgICAgIGNvZGVCbG9jay0+YWRkSWRlbnRpZmllcihpZGVudGlmaWVyKTsKKyAg
ICAgICAgICAgICAgICBTY29wZU9mZnNldCBzY29wZU9mZnNldCA9IG1fZ2VuZXJhdG9yRnJhbWVT
eW1ib2xUYWJsZS0+dGFrZU5leHRTY29wZU9mZnNldChOb0xvY2tpbmdOZWNlc3NhcnkpOworICAg
ICAgICAgICAgICAgIG1fZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZS0+c2V0KE5vTG9ja2luZ05l
Y2Vzc2FyeSwgaWRlbnRpZmllci5pbXBsKCksIFN5bWJvbFRhYmxlRW50cnkoVmFyT2Zmc2V0KHNj
b3BlT2Zmc2V0KSkpOworICAgICAgICAgICAgICAgIG1fc3RvcmFnZXMuYXBwZW5kKFN0b3JhZ2Ug
eyBpZGVudGlmaWVyLCBpZGVudGlmaWVySW5kZXgsIHNjb3BlT2Zmc2V0IH0pOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiBtX3N0b3JhZ2VzW2luZGV4XTsKKyAgICB9
CisKKyAgICBzdHJ1Y3QgR2VuZXJhdG9yUG9pbnRzIHsKKyAgICAgICAgc2l6ZV90IHNhdmVQb2lu
dDsKKyAgICAgICAgc2l6ZV90IG1lcmdlUG9pbnQ7CisgICAgICAgIHNpemVfdCByZXN1bWVQb2lu
dDsKKyAgICB9OworCisgICAgdm9pZCBydW4oKQorICAgIHsKKyAgICAgICAgcnVuTGl2ZW5lc3NB
bmFseXNpcygpOworCisgICAgICAgIC8vIFdlIHdpbGwgaW1wbGVtZW50IHRoZSB0cmFuc2Zvcm1h
dGlvbiB0aGF0IGNoYW5nZXMgb3Bfc2F2ZSAvIG9wX3Jlc3VtZSB0byBzY29wZSBvcGVyYXRpb25z
IGhlcmUuCisKKyAgICAgICAgLy8gQm9va2tlZXAgdGhlIG1lcmdlIHBvaW50IGJ5dGVjb2RlIG9m
ZnNldHMuCisgICAgICAgIFZlY3RvcjxHZW5lcmF0b3JQb2ludHM+IGdlbmVyYXRvclBvaW50c1Zl
Y3RvcjsKKyAgICAgICAgZm9yIChzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiYg
YmxvY2sgOiBtX2dyYXBoLmJhc2ljQmxvY2tzKCkpIHsKKyAgICAgICAgICAgIGZvciAodW5zaWdu
ZWQgYnl0ZWNvZGVPZmZzZXQgOiBibG9jay0+Ynl0ZWNvZGVPZmZzZXRzKCkpIHsKKyAgICAgICAg
ICAgICAgICBjb25zdCBVbmxpbmtlZEluc3RydWN0aW9uKiBwYyA9ICZtX2dyYXBoLmluc3RydWN0
aW9ucygpW2J5dGVjb2RlT2Zmc2V0XTsKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKHBjLT51Lm9w
Y29kZSkgeworICAgICAgICAgICAgICAgIGNhc2Ugb3Bfc2F2ZTogeworICAgICAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSBwY1syXS51LmluZGV4OworICAg
ICAgICAgICAgICAgICAgICBpbnQgb2Zmc2V0ID0gcGNbM10udS5vcGVyYW5kOworICAgICAgICAg
ICAgICAgICAgICBpZiAobGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID49IGdlbmVyYXRvclBvaW50c1Zl
Y3Rvci5zaXplKCkpCisgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3JQb2ludHNWZWN0
b3IucmVzaXplKGxpdmVDYWxsZWVMb2NhbHNJbmRleCArIDEpOworICAgICAgICAgICAgICAgICAg
ICBnZW5lcmF0b3JQb2ludHNWZWN0b3JbbGl2ZUNhbGxlZUxvY2Fsc0luZGV4XS5zYXZlUG9pbnQg
PSBieXRlY29kZU9mZnNldDsKKyAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yUG9pbnRzVmVj
dG9yW2xpdmVDYWxsZWVMb2NhbHNJbmRleF0ubWVyZ2VQb2ludCA9IGJ5dGVjb2RlT2Zmc2V0ICsg
b2Zmc2V0OworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgICAgICBjYXNlIG9wX3Jlc3VtZTogeworICAgICAgICAgICAgICAgICAgICB1
bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSBwY1syXS51LmluZGV4OworICAgICAgICAg
ICAgICAgICAgICBpZiAobGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID49IGdlbmVyYXRvclBvaW50c1Zl
Y3Rvci5zaXplKCkpCisgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3JQb2ludHNWZWN0
b3IucmVzaXplKGxpdmVDYWxsZWVMb2NhbHNJbmRleCArIDEpOworICAgICAgICAgICAgICAgICAg
ICBnZW5lcmF0b3JQb2ludHNWZWN0b3JbbGl2ZUNhbGxlZUxvY2Fsc0luZGV4XS5yZXN1bWVQb2lu
dCA9IGJ5dGVjb2RlT2Zmc2V0OworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKwor
ICAgICAgICAvLyBQZXJmb3JtIGJ5dGVjb2RlIGxpdmVuZXNzIGFuYWx5c2lzIHRvIGRldGVybWlu
ZSB3aGljaCBsb2NhbHMgYXJlIGxpdmUgYW5kIHNob3VsZCBiZSByZXN1bWVkIHdoZW4gZXhlY3V0
aW5nIG9wX3Jlc3VtZS4KKyAgICAgICAgVW5saW5rZWRDb2RlQmxvY2sqIGNvZGVCbG9jayA9IG1f
Z3JhcGguY29kZUJsb2NrKCk7CisgICAgICAgIC8vIFZNJiB2bSA9ICpjb2RlQmxvY2stPnZtKCk7
CisgICAgICAgIGZvciAoc2l6ZV90IGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9IDA7IGxpdmVDYWxs
ZWVMb2NhbHNJbmRleCA8IGdlbmVyYXRvclBvaW50c1ZlY3Rvci5zaXplKCk7ICsrbGl2ZUNhbGxl
ZUxvY2Fsc0luZGV4KSB7CisgICAgICAgICAgICBjb25zdCBHZW5lcmF0b3JQb2ludHMmIHBvaW50
cyA9IGdlbmVyYXRvclBvaW50c1ZlY3RvcltsaXZlQ2FsbGVlTG9jYWxzSW5kZXhdOworICAgICAg
ICAgICAgc2l6ZV90IG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldCA9IHBvaW50cy5tZXJnZVBvaW50
OworICAgICAgICAgICAgRmFzdEJpdFZlY3RvciBsaXZlbmVzc1ZlY3RvciA9IGdldExpdmVuZXNz
SW5mb0F0Qnl0ZWNvZGVPZmZzZXQobWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0KTsKKworICAgICAg
ICAgICAgVmlydHVhbFJlZ2lzdGVyIHNjb3BlID0gdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQo
NSk7CisKKyAgICAgICAgICAgIHVuc2lnbmVkIGdlbmVyYXRvckxvY2FsSW5kZXggPSAwOworICAg
ICAgICAgICAgbGl2ZW5lc3NWZWN0b3IuZm9yRWFjaFNldEJpdChbJl0oc2l6ZV90IGluZGV4KSB7
CisgICAgICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQgPSB2aXJ0dWFsUmVnaXN0
ZXJGb3JMb2NhbChpbmRleCk7CisgICAgICAgICAgICAgICAgU3RvcmFnZSBzdG9yYWdlID0gc3Rv
cmFnZUZvckdlbmVyYXRvckxvY2FsKGdlbmVyYXRvckxvY2FsSW5kZXgrKyk7CisKKyAgICAgICAg
ICAgICAgICAvLyBvcF9zYXZlLgorICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2Vy
dChwb2ludHMuc2F2ZVBvaW50LCB7CisgICAgICAgICAgICAgICAgICAgIG9wX3B1dF90b19zY29w
ZSwKKyAgICAgICAgICAgICAgICAgICAgc2NvcGUub2Zmc2V0KCksICAgICAgICAgICAgICAgICAg
IC8vIHNjb3BlCisgICAgICAgICAgICAgICAgICAgIHN0b3JhZ2UuaWRlbnRpZmllckluZGV4LCAg
ICAgICAgICAvLyBpZGVudGlmaWVyCisgICAgICAgICAgICAgICAgICAgIG9wZXJhbmQub2Zmc2V0
KCksICAgICAgICAgICAgICAgICAvLyB2YWx1ZQorICAgICAgICAgICAgICAgICAgICBHZXRQdXRJ
bmZvKERvTm90VGhyb3dJZk5vdEZvdW5kLCBMb2NhbENsb3N1cmVWYXIsIEluaXRpYWxpemF0aW9u
TW9kZTo6Tm90SW5pdGlhbGl6YXRpb24pLm9wZXJhbmQoKSwKKyAgICAgICAgICAgICAgICAgICAg
bV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlSW5kZXgsIC8vIHN5bWJvbCB0YWJsZSBjb25zdGFu
dCBpbmRleAorICAgICAgICAgICAgICAgICAgICBzdG9yYWdlLnNjb3BlT2Zmc2V0Lm9mZnNldCgp
LCAgICAgLy8gc2NvcGUgb2Zmc2V0CisgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAg
ICAgICAvLyBvcF9yZXN1bWUuCisgICAgICAgICAgICAgICAgVW5saW5rZWRWYWx1ZVByb2ZpbGUg
cHJvZmlsZSA9IGNvZGVCbG9jay0+YWRkVmFsdWVQcm9maWxlKCk7CisgICAgICAgICAgICAgICAg
bV9pbnNlcnRpb25TZXQuaW5zZXJ0KHBvaW50cy5yZXN1bWVQb2ludCwgeworICAgICAgICAgICAg
ICAgICAgICBvcF9nZXRfZnJvbV9zY29wZSwKKyAgICAgICAgICAgICAgICAgICAgb3BlcmFuZC5v
ZmZzZXQoKSwgICAgICAgICAgICAgIC8vIGRzdAorICAgICAgICAgICAgICAgICAgICBzY29wZS5v
ZmZzZXQoKSwgICAgICAgICAgICAgICAgLy8gc2NvcGUKKyAgICAgICAgICAgICAgICAgICAgc3Rv
cmFnZS5pZGVudGlmaWVySW5kZXgsICAgICAgIC8vIGlkZW50aWZpZXIKKyAgICAgICAgICAgICAg
ICAgICAgR2V0UHV0SW5mbyhEb05vdFRocm93SWZOb3RGb3VuZCwgTG9jYWxDbG9zdXJlVmFyLCBJ
bml0aWFsaXphdGlvbk1vZGU6Ok5vdEluaXRpYWxpemF0aW9uKS5vcGVyYW5kKCksCisgICAgICAg
ICAgICAgICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb2NhbCBzY29w
ZSBkZXB0aAorICAgICAgICAgICAgICAgICAgICBzdG9yYWdlLnNjb3BlT2Zmc2V0Lm9mZnNldCgp
LCAgLy8gc2NvcGUgb2Zmc2V0CisgICAgICAgICAgICAgICAgICAgIHByb2ZpbGUgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBwcm9maWxlCisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAg
ICB9KTsKKworICAgICAgICAgICAgLy8gQ2xpcCB0aGUgdW5uZWNlc3NhcnkgYnl0ZWNvZGVzLgor
ICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQucmVtb3ZlQnl0ZWNvZGUocG9pbnRzLnNhdmVQb2lu
dCk7CisgICAgICAgICAgICBtX2luc2VydGlvblNldC5yZW1vdmVCeXRlY29kZShwb2ludHMucmVz
dW1lUG9pbnQpOworICAgICAgICB9CisKKyAgICAgICAgbV9pbnNlcnRpb25TZXQuZXhlY3V0ZSgp
OworICAgIH0KKworICAgIHZvaWQgcnVuTGl2ZW5lc3NBbmFseXNpcygpCisgICAgeworICAgICAg
ICBVbmxpbmtlZENvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2sgPSBtX2dyYXBoLmNvZGVCbG9j
aygpOworICAgICAgICB1bnNpZ25lZCBudW1iZXJPZlZhcmlhYmxlcyA9IHVubGlua2VkQ29kZUJs
b2NrLT5tX251bUNhbGxlZUxvY2FsczsKKyAgICAgICAgZm9yIChzdGQ6OnVuaXF1ZV9wdHI8Qnl0
ZWNvZGVCYXNpY0Jsb2NrPiYgYmxvY2sgOiBtX2dyYXBoLmJhc2ljQmxvY2tzKCkpIHsKKyAgICAg
ICAgICAgIGJsb2NrLT5pbigpLnJlc2l6ZShudW1iZXJPZlZhcmlhYmxlcyk7CisgICAgICAgICAg
ICBibG9jay0+b3V0KCkucmVzaXplKG51bWJlck9mVmFyaWFibGVzKTsKKyAgICAgICAgfQorCisg
ICAgICAgIGJvb2wgY2hhbmdlZDsKKyAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBsYXN0Qmxv
Y2sgPSBtX2dyYXBoLmJhc2ljQmxvY2tzKCkubGFzdCgpLmdldCgpOworICAgICAgICBsYXN0Qmxv
Y2stPmluKCkuY2xlYXJBbGwoKTsKKyAgICAgICAgbGFzdEJsb2NrLT5vdXQoKS5jbGVhckFsbCgp
OworICAgICAgICBGYXN0Qml0VmVjdG9yIG5ld091dDsKKyAgICAgICAgbmV3T3V0LnJlc2l6ZShs
YXN0QmxvY2stPm91dCgpLm51bUJpdHMoKSk7CisgICAgICAgIGRvIHsKKyAgICAgICAgICAgIGNo
YW5nZWQgPSBmYWxzZTsKKyAgICAgICAgICAgIGZvciAoc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2Rl
QmFzaWNCbG9jaz4mIGJsb2NrIDogbV9ncmFwaC5iYXNpY0Jsb2Nrc0luUmV2ZXJzZU9yZGVyKCkp
IHsKKyAgICAgICAgICAgICAgICBuZXdPdXQuY2xlYXJBbGwoKTsKKyAgICAgICAgICAgICAgICBm
b3IgKHVuc2lnbmVkIGogPSAwOyBqIDwgYmxvY2stPnN1Y2Nlc3NvcnMoKS5zaXplKCk7IGorKykK
KyAgICAgICAgICAgICAgICAgICAgbmV3T3V0Lm1lcmdlKGJsb2NrLT5zdWNjZXNzb3JzKClbal0t
PmluKCkpOworICAgICAgICAgICAgICAgIGJvb2wgb3V0RGlkQ2hhbmdlID0gYmxvY2stPm91dCgp
LnNldEFuZENoZWNrKG5ld091dCk7CisgICAgICAgICAgICAgICAgY29tcHV0ZUxvY2FsTGl2ZW5l
c3NGb3JCbG9jayh1bmxpbmtlZENvZGVCbG9jaywgYmxvY2suZ2V0KCksIG1fZ3JhcGgpOworICAg
ICAgICAgICAgICAgIGNoYW5nZWQgfD0gb3V0RGlkQ2hhbmdlOworICAgICAgICAgICAgfQorICAg
ICAgICB9IHdoaWxlIChjaGFuZ2VkKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgVk0mIG1fdm07
CisgICAgQnl0ZWNvZGVHcmFwaDxVbmxpbmtlZENvZGVCbG9jaz4mIG1fZ3JhcGg7CisgICAgQnl0
ZWNvZGVJbnNlcnRpb25TZXQgbV9pbnNlcnRpb25TZXQ7CisgICAgVmVjdG9yPFN0b3JhZ2U+IG1f
c3RvcmFnZXM7CisgICAgU3Ryb25nPFN5bWJvbFRhYmxlPiBtX2dlbmVyYXRvckZyYW1lU3ltYm9s
VGFibGU7CisgICAgaW50IG1fZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZUluZGV4OworfTsKKwor
dm9pZCBwZXJmb3JtR2VuZXJhdG9yaWZpY2F0aW9uKEJ5dGVjb2RlR3JhcGg8VW5saW5rZWRDb2Rl
QmxvY2s+JiBncmFwaCwgU3ltYm9sVGFibGUqIGdlbmVyYXRvckZyYW1lU3ltYm9sVGFibGUsIGlu
dCBnZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlSW5kZXgpCit7CisgICAgQnl0ZWNvZGVHZW5lcmF0
b3JpZmljYXRpb24gcGFzcyhncmFwaCwgZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZSwgZ2VuZXJh
dG9yRnJhbWVTeW1ib2xUYWJsZUluZGV4KTsKKyAgICBwYXNzLnJ1bigpOworfQorCit9IC8vIG5h
bWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzhlNzg2OTU2ZTk2
MTU2ZDM3Y2JmN2RkMDllNzhmMjRiMDdiNGJiMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5oCkBAIC0w
LDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgWXVzdWtlIFN1enVraSA8eXVz
dWtlLnN1enVraUBzc2xhYi5pY3Mua2Vpby5hYy5qcD4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpbmNsdWRlIDxCeXRlY29kZUdyYXBoLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFz
cyBTeW1ib2xUYWJsZTsKKwordm9pZCBwZXJmb3JtR2VuZXJhdG9yaWZpY2F0aW9uKEJ5dGVjb2Rl
R3JhcGg8VW5saW5rZWRDb2RlQmxvY2s+JiwgU3ltYm9sVGFibGUqIGdlbmVyYXRvckZyYW1lU3lt
Ym9sVGFibGUsIGludCBnZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlSW5kZXgpOworCit9IC8vIG5h
bWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZUdyYXBoLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZUdyYXBoLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MDVlZDRjZWJmN2VhMmU4NTk0MDYxODliZGUxMjJmN2Iz
ODc4OTU1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlR3JhcGguY3BwCkBAIC0wLDAgKzEsMzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTYgWXVzdWtlIFN1enVraSA8eXVzdWtlLnN1enVraUBzc2xhYi5pY3Mua2Vpby5hYy5qcD4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkJ5dGVjb2RlR3JhcGgu
aCIKKworI2luY2x1ZGUgIkJ5dGVjb2RlQmFzaWNCbG9jay5oIgorCituYW1lc3BhY2UgSlNDIHsK
KworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUdyYXBoLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVHcmFwaC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNiMzljMDdjYzMyYmNiMzVlZTZiZjRiZDA2
YzY1MTRlNjQyOWU0ZTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQnl0ZWNvZGVHcmFwaC5oCkBAIC0wLDAgKzEsOTggQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTYgWXVzdWtlIFN1enVraSA8eXVzdWtlLnN1enVraUBzc2xhYi5pY3Mua2Vpby5h
Yy5qcD4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBCeXRlY29kZUdyYXBoX2gKKyNkZWZpbmUgQnl0ZWNv
ZGVHcmFwaF9oCisKKyNpbmNsdWRlICJCeXRlY29kZUJhc2ljQmxvY2suaCIKKyNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBCeXRlY29kZUJhc2ljQmxv
Y2s7CisKK3RlbXBsYXRlPHR5cGVuYW1lIEJsb2NrPgorY2xhc3MgQnl0ZWNvZGVHcmFwaCB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQnl0
ZWNvZGVHcmFwaCk7CitwdWJsaWM6CisgICAgdHlwZWRlZiBWZWN0b3I8c3RkOjp1bmlxdWVfcHRy
PEJ5dGVjb2RlQmFzaWNCbG9jaz4+IEJhc2ljQmxvY2tzVmVjdG9yOworCisgICAgaW5saW5lIEJ5
dGVjb2RlR3JhcGgoQmxvY2sqLCB0eXBlbmFtZSBCbG9jazo6VW5wYWNrZWRJbnN0cnVjdGlvbnMm
KTsKKworICAgIEJsb2NrKiBjb2RlQmxvY2soKSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9jazsg
fQorCisgICAgQmFzaWNCbG9ja3NWZWN0b3ImIGJhc2ljQmxvY2tzKCkgeyByZXR1cm4gbV9iYXNp
Y0Jsb2NrczsgfQorCisgICAgdHlwZW5hbWUgQmxvY2s6OlVucGFja2VkSW5zdHJ1Y3Rpb25zJiBp
bnN0cnVjdGlvbnMoKSB7IHJldHVybiBtX2luc3RydWN0aW9uczsgfQorCisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgSXRlcmF0b3I+CisgICAgY2xhc3MgUmV2ZXJzZUl0ZXJhYmxlIHsKKyAgICBwdWJs
aWM6CisgICAgICAgIFJldmVyc2VJdGVyYWJsZShJdGVyYXRvciBiZWdpbiwgSXRlcmF0b3IgZW5k
KQorICAgICAgICAgICAgOiBtX2JlZ2luKGJlZ2luKQorICAgICAgICAgICAgLCBtX2VuZChlbmQp
CisgICAgICAgIHsKKyAgICAgICAgfQorCisgICAgICAgIHN0ZDo6cmV2ZXJzZV9pdGVyYXRvcjxJ
dGVyYXRvcj4gYmVnaW4oKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpyZXZl
cnNlX2l0ZXJhdG9yPEl0ZXJhdG9yPihtX2VuZCk7CisgICAgICAgIH0KKworICAgICAgICBzdGQ6
OnJldmVyc2VfaXRlcmF0b3I8SXRlcmF0b3I+IGVuZCgpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHJldHVybiBzdGQ6OnJldmVyc2VfaXRlcmF0b3I8SXRlcmF0b3I+KG1fYmVnaW4pOworICAgICAg
ICB9CisKKyAgICBwcml2YXRlOgorICAgICAgICBJdGVyYXRvciBtX2JlZ2luOworICAgICAgICBJ
dGVyYXRvciBtX2VuZDsKKyAgICB9OworCisgICAgUmV2ZXJzZUl0ZXJhYmxlPEJhc2ljQmxvY2tz
VmVjdG9yOjppdGVyYXRvcj4gYmFzaWNCbG9ja3NJblJldmVyc2VPcmRlcigpCisgICAgeworICAg
ICAgICByZXR1cm4geyBtX2Jhc2ljQmxvY2tzLmJlZ2luKCksIG1fYmFzaWNCbG9ja3MuZW5kKCkg
fTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQmxvY2sqIG1fY29kZUJsb2NrOworICAgIEJhc2lj
QmxvY2tzVmVjdG9yIG1fYmFzaWNCbG9ja3M7CisgICAgdHlwZW5hbWUgQmxvY2s6OlVucGFja2Vk
SW5zdHJ1Y3Rpb25zJiBtX2luc3RydWN0aW9uczsKK307CisKKwordGVtcGxhdGU8dHlwZW5hbWUg
QmxvY2s+CitCeXRlY29kZUdyYXBoPEJsb2NrPjo6Qnl0ZWNvZGVHcmFwaChCbG9jayogY29kZUJs
b2NrLCB0eXBlbmFtZSBCbG9jazo6VW5wYWNrZWRJbnN0cnVjdGlvbnMmIGluc3RydWN0aW9ucykK
KyAgICA6IG1fY29kZUJsb2NrKGNvZGVCbG9jaykKKyAgICAsIG1faW5zdHJ1Y3Rpb25zKGluc3Ry
dWN0aW9ucykKK3sKKyAgICBBU1NFUlQobV9jb2RlQmxvY2spOworICAgIGNvbXB1dGVCeXRlY29k
ZUJhc2ljQmxvY2tzKG1fY29kZUJsb2NrLCBpbnN0cnVjdGlvbnMuYmVnaW4oKSwgaW5zdHJ1Y3Rp
b25zLnNpemUoKSwgbV9iYXNpY0Jsb2Nrcyk7CisgICAgQVNTRVJUKG1fYmFzaWNCbG9ja3Muc2l6
ZSgpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisjZW5kaWYgLy8gQnl0ZWNvZGVHcmFwaF9o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnNl
cnRpb25TZXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW5z
ZXJ0aW9uU2V0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMzIxYWYzMmI4NDU3NGIxZjlmZDRhZDA2OTdiZTMz
NzE1OWJmNTJhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlSW5zZXJ0aW9uU2V0LmNwcApAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE2IFl1c3VrZSBTdXp1a2kgPHl1c3VrZS5zdXp1a2lAc3NsYWIuaWNzLmtl
aW8uYWMuanA+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJCeXRl
Y29kZUluc2VydGlvblNldC5oIgorCisjaW5jbHVkZSA8d3RmL0J1YmJsZVNvcnQuaD4KKworbmFt
ZXNwYWNlIEpTQyB7CisKK3ZvaWQgQnl0ZWNvZGVJbnNlcnRpb25TZXQ6OmV4ZWN1dGUoKQorewor
ICAgIFdURjo6YnViYmxlU29ydChtX2luc2VydGlvbnMuYmVnaW4oKSwgbV9pbnNlcnRpb25zLmVu
ZCgpLCBbXSAoY29uc3QgSW5zZXJ0aW9uJiBsaHMsIGNvbnN0IEluc2VydGlvbiYgcmhzKSB7Cisg
ICAgICAgIC8vIFdlIHdvdWxkIGxpa2UgdG8gcGVyZm9ybSByZW1vdmUgb3BlcmF0aW9uIGJlZm9y
ZSBpbnNlcnRpb24uCisgICAgICAgIGlmIChsaHMuaW5kZXgoKSA9PSByaHMuaW5kZXgoKSkKKyAg
ICAgICAgICAgIHJldHVybiByaHMuZWxlbWVudCgpLmlzUmVtb3ZlQ29tbWFuZDsKKyAgICAgICAg
cmV0dXJuIGxocyA8IHJoczsKKyAgICB9KTsKKworICAgIC8vIEZJWE1FOiBDcmF6aWx5IG5haXZl
ISBIZXJlLCB3ZSBzaG91bGQga25vdyB0aGUgbGVuZ3RoIG9mIHRoZSB0cmFuc2Zvcm1lZCBpbnN0
cnVjdGlvbnMgKHNpbmNlIGluc2VydGlvbiBhbmQgcmVtb3ZhbCBjb21tYW5kcyBjYW4gaGF2ZSB0
aGVpciBsZW5ndGgpLgorICAgIGZvciAoc2l6ZV90IGluc2VydGlvbkluZGV4ID0gbV9pbnNlcnRp
b25zLnNpemUoKTsgaW5zZXJ0aW9uSW5kZXgtLTspIHsKKyAgICAgICAgY29uc3QgSW5zZXJ0aW9u
JiBpbnNlcnRpb24gPSBtX2luc2VydGlvbnNbaW5zZXJ0aW9uSW5kZXhdOworICAgICAgICBpZiAo
aW5zZXJ0aW9uLmVsZW1lbnQoKS5pc1JlbW92ZUNvbW1hbmQpIHsKKyAgICAgICAgICAgIG1fZ3Jh
cGguaW5zdHJ1Y3Rpb25zKCkucmVtb3ZlKGluc2VydGlvbi5pbmRleCgpLCBpbnNlcnRpb24uZWxl
bWVudCgpLmxlbmd0aCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtX2dyYXBoLmlu
c3RydWN0aW9ucygpLmluc2VydChpbnNlcnRpb24uaW5kZXgoKSwgaW5zZXJ0aW9uLmVsZW1lbnQo
KS5ieXRlY29kZS5pbnN0cnVjdGlvbnMsIG9wY29kZUxlbmd0aChpbnNlcnRpb24uZWxlbWVudCgp
LmJ5dGVjb2RlLmluc3RydWN0aW9uc1swXS51Lm9wY29kZSkpOworICAgICAgICB9CisgICAgfQor
CisgICAgLy8gVE9ETzogV0lQLgorICAgIC8vIFN0YXJ0IGp1bXAgb2Zmc2V0IGFkanVzdG1lbnRz
LgorICAgIC8vIFdlIGFscmVhZHkgaGF2ZSB0aGUgc29ydGVkIGNvbW1hbmQgbGlzdHMgKG1faW5z
ZXJ0aW9ucykuIFNvLCBhZGp1c3RtZW50IHNob3VsZCBiZSBlYXN5LiAoZXh0cmFjdCB0aGUgY29y
cmVjdCBhZGp1c3RtZW50IGJ5IHVzaW5nIGJpbmFyeSBzZWFyY2ggZnJvbSB0aGUgbGlzdCBhbmQg
YXBwbHkgaXQgdG8gdGhlIGp1bXAgb2Zmc2V0cykuCit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW5zZXJ0
aW9uU2V0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnNlcnRp
b25TZXQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4wNzVmZTY0MjM2MWFlYTFhZDIzN2MwZTQ5ZmI0YTA3MGM3YTBk
ODQyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlSW5zZXJ0aW9uU2V0LmgKQEAgLTAsMCArMSw3MCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNiBZdXN1a2UgU3V6dWtpIDx5dXN1a2Uuc3V6dWtpQHNzbGFiLmljcy5rZWlvLmFjLmpw
PgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkJ5dGVjb2RlR3JhcGguaCIK
KyNpbmNsdWRlICJVbmxpbmtlZENvZGVCbG9jay5oIgorI2luY2x1ZGUgPHd0Zi9JbnNlcnRpb24u
aD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEJ5dGVjb2RlSW5zZXJ0aW9uU2V0IHsKK3B1
YmxpYzoKKyAgICBzdHJ1Y3QgSW5zZXJ0ZWRCeXRlY29kZSB7CisgICAgICAgIFVubGlua2VkSW5z
dHJ1Y3Rpb24gaW5zdHJ1Y3Rpb25zW01BWF9PUENPREVfTEVOR1RIX09GX0JZVEVDT0RFXTsKKyAg
ICB9OworCisgICAgc3RydWN0IENvbW1hbmQgeworICAgICAgICBib29sIGlzUmVtb3ZlQ29tbWFu
ZDsKKyAgICAgICAgc2l6ZV90IGxlbmd0aDsKKyAgICAgICAgSW5zZXJ0ZWRCeXRlY29kZSBieXRl
Y29kZTsKKyAgICB9OworCisgICAgdHlwZWRlZiBXVEY6Okluc2VydGlvbjxDb21tYW5kPiBJbnNl
cnRpb247CisKKyAgICBCeXRlY29kZUluc2VydGlvblNldChCeXRlY29kZUdyYXBoPFVubGlua2Vk
Q29kZUJsb2NrPiYgZ3JhcGgpCisgICAgICAgIDogbV9ncmFwaChncmFwaCkKKyAgICB7CisgICAg
fQorCisgICAgdm9pZCBpbnNlcnQodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIEluc2VydGVkQnl0
ZWNvZGUgYnl0ZWNvZGUpCisgICAgeworICAgICAgICBtX2luc2VydGlvbnMuYXBwZW5kKEluc2Vy
dGlvbihieXRlY29kZU9mZnNldCwgQ29tbWFuZCB7IGZhbHNlLCBvcGNvZGVMZW5ndGgoYnl0ZWNv
ZGUuaW5zdHJ1Y3Rpb25zWzBdLnUub3Bjb2RlKSwgYnl0ZWNvZGUgfSkpOworICAgIH0KKworICAg
IHZvaWQgcmVtb3ZlQnl0ZWNvZGUodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpCisgICAgeworICAg
ICAgICBtX2luc2VydGlvbnMuYXBwZW5kKEluc2VydGlvbihieXRlY29kZU9mZnNldCwgQ29tbWFu
ZCB7IHRydWUsIG9wY29kZUxlbmd0aChtX2dyYXBoLmluc3RydWN0aW9ucygpW2J5dGVjb2RlT2Zm
c2V0XS51Lm9wY29kZSksIEluc2VydGVkQnl0ZWNvZGUgeyB9IH0pKTsKKyAgICB9CisKKyAgICB2
b2lkIGV4ZWN1dGUoKTsKKworcHJpdmF0ZToKKyAgICBCeXRlY29kZUdyYXBoPFVubGlua2VkQ29k
ZUJsb2NrPiYgbV9ncmFwaDsKKyAgICBWZWN0b3I8SW5zZXJ0aW9uLCA4PiBtX2luc2VydGlvbnM7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgppbmRleCA4OGE3YzUyMzIwNTVjMzliNzdlOWUyZjVj
NjlhY2YxYjRjY2Y2OWFiLi41NTVlYzFiZWE4YzRlOWZkMmEzYzA0M2IwMTM0MTRjMGE0MDg3NWQ0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0
Lmpzb24KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5q
c29uCkBAIC0xNyw2ICsxNyw3IEBACiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXdfYXJy
YXlfd2l0aF9zaXplIiwgImxlbmd0aCIgOiA0IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJv
cF9uZXdfYXJyYXlfYnVmZmVyIiwgImxlbmd0aCIgOiA1IH0sCiAgICAgICAgICAgICB7ICJuYW1l
IiA6ICJvcF9uZXdfcmVnZXhwIiwgImxlbmd0aCIgOiAzIH0sCisgICAgICAgICAgICB7ICJuYW1l
IiA6ICJvcF9uZXdfZ2VuZXJhdG9yX2ZyYW1lIiwgImxlbmd0aCIgOiAzIH0sCiAgICAgICAgICAg
ICB7ICJuYW1lIiA6ICJvcF9tb3YiLCAibGVuZ3RoIiA6IDMgfSwKICAgICAgICAgICAgIHsgIm5h
bWUiIDogIm9wX25vdCIsICJsZW5ndGgiIDogMyB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAi
b3BfZXEiLCAibGVuZ3RoIiA6IDQgfSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAKaW5kZXggMTdlODJh
MmZiYmEwMTUwNDNlOTlkMzRlZDI1NjkzNzJiMzZmN2E4NS4uMDMxYjNmNmM3OTkwNDk4YTBlMjE5
MWM2ZjUzODA5ZTU1ZjExNTMwZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAKQEAgLTM1LDEwICsz
NSw5IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OkJ5
dGVjb2RlTGl2ZW5lc3NBbmFseXNpcyhDb2RlQmxvY2sqIGNvZGVCbG9jaykKLSAgICA6IG1fY29k
ZUJsb2NrKGNvZGVCbG9jaykKK0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Qnl0ZWNvZGVMaXZl
bmVzc0FuYWx5c2lzKEJ5dGVjb2RlR3JhcGg8Q29kZUJsb2NrPiYgZ3JhcGgpCisgICAgOiBtX2dy
YXBoKGdyYXBoKQogewotICAgIEFTU0VSVChtX2NvZGVCbG9jayk7CiAgICAgY29tcHV0ZSgpOwog
fQogCkBAIC01Niw5ICs1NSw5IEBAIHN0YXRpYyB1bnNpZ25lZCBnZXRMZWFkZXJPZmZzZXRGb3JC
YXNpY0Jsb2NrKHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+CiAgICAgcmV0dXJu
ICgqYmFzaWNCbG9jayktPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCk7CiB9CiAKLXN0YXRpYyBCeXRl
Y29kZUJhc2ljQmxvY2sqIGZpbmRCYXNpY0Jsb2NrV2l0aExlYWRlck9mZnNldChWZWN0b3I8c3Rk
Ojp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+JiBiYXNpY0Jsb2NrcywgdW5zaWduZWQg
bGVhZGVyT2Zmc2V0KQorc3RhdGljIEJ5dGVjb2RlQmFzaWNCbG9jayogZmluZEJhc2ljQmxvY2tX
aXRoTGVhZGVyT2Zmc2V0KEJ5dGVjb2RlR3JhcGg8Q29kZUJsb2NrPiYgZ3JhcGgsIHVuc2lnbmVk
IGxlYWRlck9mZnNldCkKIHsKLSAgICByZXR1cm4gKCp0cnlCaW5hcnlTZWFyY2g8c3RkOjp1bmlx
dWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4sIHVuc2lnbmVkPihiYXNpY0Jsb2NrcywgYmFzaWNC
bG9ja3Muc2l6ZSgpLCBsZWFkZXJPZmZzZXQsIGdldExlYWRlck9mZnNldEZvckJhc2ljQmxvY2sp
KS5nZXQoKTsKKyAgICByZXR1cm4gKCp0cnlCaW5hcnlTZWFyY2g8c3RkOjp1bmlxdWVfcHRyPEJ5
dGVjb2RlQmFzaWNCbG9jaz4sIHVuc2lnbmVkPihncmFwaC5iYXNpY0Jsb2NrcygpLCBncmFwaC5i
YXNpY0Jsb2NrcygpLnNpemUoKSwgbGVhZGVyT2Zmc2V0LCBnZXRMZWFkZXJPZmZzZXRGb3JCYXNp
Y0Jsb2NrKSkuZ2V0KCk7CiB9CiAKIHN0YXRpYyBib29sIGJsb2NrQ29udGFpbnNCeXRlY29kZU9m
ZnNldChCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCkK
QEAgLTY3LDcgKzY2LDcgQEAgc3RhdGljIGJvb2wgYmxvY2tDb250YWluc0J5dGVjb2RlT2Zmc2V0
KEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2ssIHVuc2lnbmVkIGJ5dGUKICAgICByZXR1cm4gYnl0
ZWNvZGVPZmZzZXQgPj0gbGVhZGVyT2Zmc2V0ICYmIGJ5dGVjb2RlT2Zmc2V0IDwgbGVhZGVyT2Zm
c2V0ICsgYmxvY2stPnRvdGFsQnl0ZWNvZGVMZW5ndGgoKTsKIH0KIAotc3RhdGljIEJ5dGVjb2Rl
QmFzaWNCbG9jayogZmluZEJhc2ljQmxvY2tGb3JCeXRlY29kZU9mZnNldChWZWN0b3I8c3RkOjp1
bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+JiBiYXNpY0Jsb2NrcywgdW5zaWduZWQgYnl0
ZWNvZGVPZmZzZXQpCitzdGF0aWMgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBmaW5kQmFzaWNCbG9ja0Zv
ckJ5dGVjb2RlT2Zmc2V0KEJ5dGVjb2RlR3JhcGg8Q29kZUJsb2NrPiYgZ3JhcGgsIHVuc2lnbmVk
IGJ5dGVjb2RlT2Zmc2V0KQogewogLyoKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYmFz
aWNCbG9ja3Muc2l6ZSgpOyBpKyspIHsKQEAgLTc2LDYgKzc1LDggQEAgc3RhdGljIEJ5dGVjb2Rl
QmFzaWNCbG9jayogZmluZEJhc2ljQmxvY2tGb3JCeXRlY29kZU9mZnNldChWZWN0b3I8c3RkOjp1
bmlxdWVfcHQKICAgICB9CiAgICAgcmV0dXJuIDA7CiAqLworICAgIEJ5dGVjb2RlR3JhcGg8Q29k
ZUJsb2NrPjo6QmFzaWNCbG9ja3NWZWN0b3ImIGJhc2ljQmxvY2tzID0gZ3JhcGguYmFzaWNCbG9j
a3MoKTsKKwogICAgIHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+KiBiYXNpY0Js
b2NrID0gYXBwcm94aW1hdGVCaW5hcnlTZWFyY2g8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFz
aWNCbG9jaz4sIHVuc2lnbmVkPigKICAgICAgICAgYmFzaWNCbG9ja3MsIGJhc2ljQmxvY2tzLnNp
emUoKSwgYnl0ZWNvZGVPZmZzZXQsIGdldExlYWRlck9mZnNldEZvckJhc2ljQmxvY2spOwogICAg
IC8vIFdlIGZvdW5kIHRoZSBibG9jayB3ZSB3ZXJlIGxvb2tpbmcgZm9yLgpAQCAtOTgsNyArOTks
NyBAQCBzdGF0aWMgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBmaW5kQmFzaWNCbG9ja0ZvckJ5dGVjb2Rl
T2Zmc2V0KFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdAogLy8gU2ltcGxpZmllZCBpbnRlcmZhY2UgdG8g
Ynl0ZWNvZGUgdXNlL2RlZiwgd2hpY2ggZGV0ZXJtaW5lcyBkZWZzIGZpcnN0IGFuZCB0aGVuIHVz
ZXMsIGFuZCBpbmNsdWRlcwogLy8gZXhjZXB0aW9uIGhhbmRsZXJzIGluIHRoZSB1c2VzLgogdGVt
cGxhdGU8dHlwZW5hbWUgVXNlRnVuY3RvciwgdHlwZW5hbWUgRGVmRnVuY3Rvcj4KLXN0YXRpYyB2
b2lkIHN0ZXBPdmVySW5zdHJ1Y3Rpb24oQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFz
aWNCbG9jayogYmxvY2ssIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2Nr
Pj4mIGJhc2ljQmxvY2tzLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgY29uc3QgVXNlRnVuY3Rv
ciYgdXNlLCBjb25zdCBEZWZGdW5jdG9yJiBkZWYpCitzdGF0aWMgdm9pZCBzdGVwT3Zlckluc3Ry
dWN0aW9uKENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29kZUdyYXBoPENvZGVCbG9jaz4mIGdy
YXBoLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgY29uc3QgVXNlRnVuY3RvciYgdXNlLCBjb25z
dCBEZWZGdW5jdG9yJiBkZWYpCiB7CiAgICAgLy8gVGhpcyBhYnN0cmFjdGx5IGV4ZWN1dGUgdGhl
IGluc3RydWN0aW9uIGluIHJldmVyc2UuIEluc3RydWN0aW9ucyBsb2dpY2FsbHkgZmlyc3QgdXNl
IG9wZXJhbmRzIGFuZAogICAgIC8vIHRoZW4gZGVmaW5lIG9wZXJhbmRzLiBUaGlzIGxvZ2ljYWwg
b3JkZXJpbmcgaXMgbmVjZXNzYXJ5IGZvciBvcGVyYXRpb25zIHRoYXQgdXNlIGFuZCBkZWYgdGhl
IHNhbWUKQEAgLTExNiwxNCArMTE3LDE0IEBAIHN0YXRpYyB2b2lkIHN0ZXBPdmVySW5zdHJ1Y3Rp
b24oQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2ssCiAgICAg
Ly8gZmlyc3QgYWRkIGl0IHRvIHRoZSBvdXQgc2V0ICh0aGUgdXNlKSwgYW5kIHRoZW4gd2UnZCBy
ZW1vdmUgaXQgKHRoZSBkZWYpLgogICAgIAogICAgIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZz
ZXQoCi0gICAgICAgIGNvZGVCbG9jaywgYmxvY2ssIGJ5dGVjb2RlT2Zmc2V0LAorICAgICAgICBj
b2RlQmxvY2ssIGJ5dGVjb2RlT2Zmc2V0LAogICAgICAgICBbJl0gKENvZGVCbG9jayogY29kZUJs
b2NrLCBJbnN0cnVjdGlvbiosIE9wY29kZUlELCBpbnQgb3BlcmFuZCkgewogICAgICAgICAgICAg
aWYgKGlzVmFsaWRSZWdpc3RlckZvckxpdmVuZXNzKGNvZGVCbG9jaywgb3BlcmFuZCkpCiAgICAg
ICAgICAgICAgICAgZGVmKFZpcnR1YWxSZWdpc3RlcihvcGVyYW5kKS50b0xvY2FsKCkpOwogICAg
ICAgICB9KTsKIAogICAgIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoCi0gICAgICAgIGNv
ZGVCbG9jaywgYmxvY2ssIGJ5dGVjb2RlT2Zmc2V0LAorICAgICAgICBjb2RlQmxvY2ssIGJ5dGVj
b2RlT2Zmc2V0LAogICAgICAgICBbJl0gKENvZGVCbG9jayogY29kZUJsb2NrLCBJbnN0cnVjdGlv
biosIE9wY29kZUlELCBpbnQgb3BlcmFuZCkgewogICAgICAgICAgICAgaWYgKGlzVmFsaWRSZWdp
c3RlckZvckxpdmVuZXNzKGNvZGVCbG9jaywgb3BlcmFuZCkpCiAgICAgICAgICAgICAgICAgdXNl
KFZpcnR1YWxSZWdpc3RlcihvcGVyYW5kKS50b0xvY2FsKCkpOwpAQCAtMTM5LDE3ICsxNDAsMTcg
QEAgc3RhdGljIHZvaWQgc3RlcE92ZXJJbnN0cnVjdGlvbihDb2RlQmxvY2sqIGNvZGVCbG9jaywg
Qnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaywKICAgICAgICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0
aW9uID0gJmluc3RydWN0aW9uc0JlZ2luW2J5dGVjb2RlT2Zmc2V0XTsKICAgICAgICAgT3Bjb2Rl
SUQgb3Bjb2RlSUQgPSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb24tPnUub3Bj
b2RlKTsKICAgICAgICAgaWYgKG9wY29kZUlEICE9IG9wX3Jlc3VtZSkgewotICAgICAgICAgICAg
Qnl0ZWNvZGVCYXNpY0Jsb2NrKiBoYW5kbGVyQmxvY2sgPSBmaW5kQmFzaWNCbG9ja1dpdGhMZWFk
ZXJPZmZzZXQoYmFzaWNCbG9ja3MsIGhhbmRsZXItPnRhcmdldCk7CisgICAgICAgICAgICBCeXRl
Y29kZUJhc2ljQmxvY2sqIGhhbmRsZXJCbG9jayA9IGZpbmRCYXNpY0Jsb2NrV2l0aExlYWRlck9m
ZnNldChncmFwaCwgaGFuZGxlci0+dGFyZ2V0KTsKICAgICAgICAgICAgIEFTU0VSVChoYW5kbGVy
QmxvY2spOwogICAgICAgICAgICAgaGFuZGxlckJsb2NrLT5pbigpLmZvckVhY2hTZXRCaXQodXNl
KTsKICAgICAgICAgfQogICAgIH0KIH0KIAotc3RhdGljIHZvaWQgc3RlcE92ZXJJbnN0cnVjdGlv
bihDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaywgVmVjdG9y
PHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9ja3MsIHVuc2ln
bmVkIGJ5dGVjb2RlT2Zmc2V0LCBGYXN0Qml0VmVjdG9yJiBvdXQpCitzdGF0aWMgdm9pZCBzdGVw
T3Zlckluc3RydWN0aW9uKENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29kZUdyYXBoPENvZGVC
bG9jaz4mIGdyYXBoLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgRmFzdEJpdFZlY3RvciYgb3V0
KQogewogICAgIHN0ZXBPdmVySW5zdHJ1Y3Rpb24oCi0gICAgICAgIGNvZGVCbG9jaywgYmxvY2ss
IGJhc2ljQmxvY2tzLCBieXRlY29kZU9mZnNldCwKKyAgICAgICAgY29kZUJsb2NrLCBncmFwaCwg
Ynl0ZWNvZGVPZmZzZXQsCiAgICAgICAgIFsmXSAodW5zaWduZWQgYml0SW5kZXgpIHsKICAgICAg
ICAgICAgIC8vIFRoaXMgaXMgdGhlIHVzZSBmdW5jdG9yLCBzbyB3ZSBzZXQgdGhlIGJpdC4KICAg
ICAgICAgICAgIG91dC5zZXQoYml0SW5kZXgpOwpAQCAtMTYwLDcgKzE2MSw3IEBAIHN0YXRpYyB2
b2lkIHN0ZXBPdmVySW5zdHJ1Y3Rpb24oQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFz
aWNCbG9jayogYmxvY2ssCiAgICAgICAgIH0pOwogfQogCi1zdGF0aWMgdm9pZCBjb21wdXRlTG9j
YWxMaXZlbmVzc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29k
ZUJhc2ljQmxvY2sqIGJsb2NrLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNC
bG9jaz4+JiBiYXNpY0Jsb2NrcywgdW5zaWduZWQgdGFyZ2V0T2Zmc2V0LCBGYXN0Qml0VmVjdG9y
JiByZXN1bHQpCitzdGF0aWMgdm9pZCBjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJ5dGVjb2RlT2Zm
c2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrLCBCeXRl
Y29kZUdyYXBoPENvZGVCbG9jaz4mIGdyYXBoLCB1bnNpZ25lZCB0YXJnZXRPZmZzZXQsIEZhc3RC
aXRWZWN0b3ImIHJlc3VsdCkKIHsKICAgICBBU1NFUlQoIWJsb2NrLT5pc0V4aXRCbG9jaygpKTsK
ICAgICBBU1NFUlQoIWJsb2NrLT5pc0VudHJ5QmxvY2soKSk7CkBAIC0xNzIsNDQgKzE3Myw0NCBA
QCBzdGF0aWMgdm9pZCBjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVC
bG9jayogY29kZUJsb2NrLCBCeXRlY29kZQogICAgICAgICBpZiAodGFyZ2V0T2Zmc2V0ID4gYnl0
ZWNvZGVPZmZzZXQpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgCi0gICAgICAgIHN0ZXBP
dmVySW5zdHJ1Y3Rpb24oY29kZUJsb2NrLCBibG9jaywgYmFzaWNCbG9ja3MsIGJ5dGVjb2RlT2Zm
c2V0LCBvdXQpOworICAgICAgICBzdGVwT3Zlckluc3RydWN0aW9uKGNvZGVCbG9jaywgZ3JhcGgs
IGJ5dGVjb2RlT2Zmc2V0LCBvdXQpOwogICAgIH0KIAogICAgIHJlc3VsdC5zZXQob3V0KTsKIH0K
IAotc3RhdGljIHZvaWQgY29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCbG9jayhDb2RlQmxvY2sqIGNv
ZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaywgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0
cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9ja3MpCitzdGF0aWMgdm9pZCBjb21wdXRl
TG9jYWxMaXZlbmVzc0ZvckJsb2NrKENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29kZUJhc2lj
QmxvY2sqIGJsb2NrLCBCeXRlY29kZUdyYXBoPENvZGVCbG9jaz4mIGdyYXBoKQogewogICAgIGlm
IChibG9jay0+aXNFeGl0QmxvY2soKSB8fCBibG9jay0+aXNFbnRyeUJsb2NrKCkpCiAgICAgICAg
IHJldHVybjsKLSAgICBjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVC
bG9jaywgYmxvY2ssIGJhc2ljQmxvY2tzLCBibG9jay0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKSwg
YmxvY2stPmluKCkpOworICAgIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQnl0ZWNvZGVPZmZzZXQo
Y29kZUJsb2NrLCBibG9jaywgZ3JhcGgsIGJsb2NrLT5sZWFkZXJCeXRlY29kZU9mZnNldCgpLCBi
bG9jay0+aW4oKSk7CiB9CiAKIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpydW5MaXZl
bmVzc0ZpeHBvaW50KCkKIHsKLSAgICBVbmxpbmtlZENvZGVCbG9jayogdW5saW5rZWRDb2RlQmxv
Y2sgPSBtX2NvZGVCbG9jay0+dW5saW5rZWRDb2RlQmxvY2soKTsKKyAgICBDb2RlQmxvY2sqIGNv
ZGVCbG9jayA9IG1fZ3JhcGguY29kZUJsb2NrKCk7CisgICAgVW5saW5rZWRDb2RlQmxvY2sqIHVu
bGlua2VkQ29kZUJsb2NrID0gY29kZUJsb2NrLT51bmxpbmtlZENvZGVCbG9jaygpOwogICAgIHVu
c2lnbmVkIG51bWJlck9mVmFyaWFibGVzID0gdW5saW5rZWRDb2RlQmxvY2stPm1fbnVtQ2FsbGVl
TG9jYWxzOwogCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fYmFzaWNCbG9ja3Muc2l6
ZSgpOyBpKyspIHsKLSAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jayA9IG1fYmFzaWNC
bG9ja3NbaV0uZ2V0KCk7CisgICAgZm9yIChzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Js
b2NrPiYgYmxvY2sgOiBtX2dyYXBoLmJhc2ljQmxvY2tzKCkpIHsKICAgICAgICAgYmxvY2stPmlu
KCkucmVzaXplKG51bWJlck9mVmFyaWFibGVzKTsKICAgICAgICAgYmxvY2stPm91dCgpLnJlc2l6
ZShudW1iZXJPZlZhcmlhYmxlcyk7CiAgICAgfQogCiAgICAgYm9vbCBjaGFuZ2VkOwotICAgIG1f
YmFzaWNCbG9ja3MubGFzdCgpLT5pbigpLmNsZWFyQWxsKCk7Ci0gICAgbV9iYXNpY0Jsb2Nrcy5s
YXN0KCktPm91dCgpLmNsZWFyQWxsKCk7CisgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBsYXN0Qmxv
Y2sgPSBtX2dyYXBoLmJhc2ljQmxvY2tzKCkubGFzdCgpLmdldCgpOworICAgIGxhc3RCbG9jay0+
aW4oKS5jbGVhckFsbCgpOworICAgIGxhc3RCbG9jay0+b3V0KCkuY2xlYXJBbGwoKTsKICAgICBG
YXN0Qml0VmVjdG9yIG5ld091dDsKLSAgICBuZXdPdXQucmVzaXplKG1fYmFzaWNCbG9ja3MubGFz
dCgpLT5vdXQoKS5udW1CaXRzKCkpOworICAgIG5ld091dC5yZXNpemUobGFzdEJsb2NrLT5vdXQo
KS5udW1CaXRzKCkpOwogICAgIGRvIHsKICAgICAgICAgY2hhbmdlZCA9IGZhbHNlOwotICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSBtX2Jhc2ljQmxvY2tzLnNpemUoKSAtIDE7IGktLTspIHsKLSAg
ICAgICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2sgPSBtX2Jhc2ljQmxvY2tzW2ldLmdl
dCgpOworICAgICAgICBmb3IgKHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+JiBi
bG9jayA6IG1fZ3JhcGguYmFzaWNCbG9ja3NJblJldmVyc2VPcmRlcigpKSB7CiAgICAgICAgICAg
ICBuZXdPdXQuY2xlYXJBbGwoKTsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaiA9IDA7IGog
PCBibG9jay0+c3VjY2Vzc29ycygpLnNpemUoKTsgaisrKQogICAgICAgICAgICAgICAgIG5ld091
dC5tZXJnZShibG9jay0+c3VjY2Vzc29ycygpW2pdLT5pbigpKTsKICAgICAgICAgICAgIGJvb2wg
b3V0RGlkQ2hhbmdlID0gYmxvY2stPm91dCgpLnNldEFuZENoZWNrKG5ld091dCk7Ci0gICAgICAg
ICAgICBjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJsb2NrKG1fY29kZUJsb2NrLCBibG9jaywgbV9i
YXNpY0Jsb2Nrcyk7CisgICAgICAgICAgICBjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJsb2NrKGNv
ZGVCbG9jaywgYmxvY2suZ2V0KCksIG1fZ3JhcGgpOwogICAgICAgICAgICAgY2hhbmdlZCB8PSBv
dXREaWRDaGFuZ2U7CiAgICAgICAgIH0KICAgICB9IHdoaWxlIChjaGFuZ2VkKTsKQEAgLTIxNywx
MiArMjE4LDEyIEBAIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpydW5MaXZlbmVzc0Zp
eHBvaW50KCkKIAogdm9pZCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmdldExpdmVuZXNzSW5m
b0F0Qnl0ZWNvZGVPZmZzZXQodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIEZhc3RCaXRWZWN0b3Im
IHJlc3VsdCkKIHsKLSAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrID0gZmluZEJhc2ljQmxv
Y2tGb3JCeXRlY29kZU9mZnNldChtX2Jhc2ljQmxvY2tzLCBieXRlY29kZU9mZnNldCk7CisgICAg
Qnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jayA9IGZpbmRCYXNpY0Jsb2NrRm9yQnl0ZWNvZGVPZmZz
ZXQobV9ncmFwaCwgYnl0ZWNvZGVPZmZzZXQpOwogICAgIEFTU0VSVChibG9jayk7CiAgICAgQVNT
RVJUKCFibG9jay0+aXNFbnRyeUJsb2NrKCkpOwogICAgIEFTU0VSVCghYmxvY2stPmlzRXhpdEJs
b2NrKCkpOwogICAgIHJlc3VsdC5yZXNpemUoYmxvY2stPm91dCgpLm51bUJpdHMoKSk7Ci0gICAg
Y29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCeXRlY29kZU9mZnNldChtX2NvZGVCbG9jaywgYmxvY2ss
IG1fYmFzaWNCbG9ja3MsIGJ5dGVjb2RlT2Zmc2V0LCByZXN1bHQpOworICAgIGNvbXB1dGVMb2Nh
bExpdmVuZXNzRm9yQnl0ZWNvZGVPZmZzZXQobV9ncmFwaC5jb2RlQmxvY2soKSwgYmxvY2ssIG1f
Z3JhcGgsIGJ5dGVjb2RlT2Zmc2V0LCByZXN1bHQpOwogfQogCiBib29sIEJ5dGVjb2RlTGl2ZW5l
c3NBbmFseXNpczo6b3BlcmFuZElzTGl2ZUF0Qnl0ZWNvZGVPZmZzZXQoaW50IG9wZXJhbmQsIHVu
c2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KQpAQCAtMjQ0LDExICsyNDUsMTEgQEAgRmFzdEJpdFZlY3Rv
ciBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVPZmZz
ZXQodW5zaWduZWQKIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlRnVsbExp
dmVuZXNzKEZ1bGxCeXRlY29kZUxpdmVuZXNzJiByZXN1bHQpCiB7CiAgICAgRmFzdEJpdFZlY3Rv
ciBvdXQ7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBtX2dyYXBoLmNvZGVCbG9jaygpOwog
ICAgIAotICAgIHJlc3VsdC5tX21hcC5yZXNpemUobV9jb2RlQmxvY2stPmluc3RydWN0aW9ucygp
LnNpemUoKSk7CisgICAgcmVzdWx0Lm1fbWFwLnJlc2l6ZShjb2RlQmxvY2stPmluc3RydWN0aW9u
cygpLnNpemUoKSk7CiAgICAgCi0gICAgZm9yICh1bnNpZ25lZCBpID0gbV9iYXNpY0Jsb2Nrcy5z
aXplKCk7IGktLTspIHsKLSAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jayA9IG1fYmFz
aWNCbG9ja3NbaV0uZ2V0KCk7CisgICAgZm9yIChzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNp
Y0Jsb2NrPiYgYmxvY2sgOiBtX2dyYXBoLmJhc2ljQmxvY2tzSW5SZXZlcnNlT3JkZXIoKSkgewog
ICAgICAgICBpZiAoYmxvY2stPmlzRW50cnlCbG9jaygpIHx8IGJsb2NrLT5pc0V4aXRCbG9jaygp
KQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIApAQCAtMjU2LDcgKzI1Nyw3IEBAIHZv
aWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlRnVsbExpdmVuZXNzKEZ1bGxCeXRl
Y29kZUxpdmVuZXNzJiByZXN1bHQpCiAgICAgICAgIAogICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSBibG9jay0+Ynl0ZWNvZGVPZmZzZXRzKCkuc2l6ZSgpOyBpLS07KSB7CiAgICAgICAgICAgICB1
bnNpZ25lZCBieXRlY29kZU9mZnNldCA9IGJsb2NrLT5ieXRlY29kZU9mZnNldHMoKVtpXTsKLSAg
ICAgICAgICAgIHN0ZXBPdmVySW5zdHJ1Y3Rpb24obV9jb2RlQmxvY2ssIGJsb2NrLCBtX2Jhc2lj
QmxvY2tzLCBieXRlY29kZU9mZnNldCwgb3V0KTsKKyAgICAgICAgICAgIHN0ZXBPdmVySW5zdHJ1
Y3Rpb24oY29kZUJsb2NrLCBtX2dyYXBoLCBieXRlY29kZU9mZnNldCwgb3V0KTsKICAgICAgICAg
ICAgIHJlc3VsdC5tX21hcFtieXRlY29kZU9mZnNldF0gPSBvdXQ7CiAgICAgICAgIH0KICAgICB9
CkBAIC0yNjYsMTEgKzI2NywxMSBAQCB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Y29t
cHV0ZUtpbGxzKEJ5dGVjb2RlS2lsbHMmIHJlc3VsdCkKIHsKICAgICBGYXN0Qml0VmVjdG9yIG91
dDsKICAgICAKLSAgICByZXN1bHQubV9jb2RlQmxvY2sgPSBtX2NvZGVCbG9jazsKLSAgICByZXN1
bHQubV9raWxsU2V0cyA9IHN0ZDo6bWFrZV91bmlxdWU8Qnl0ZWNvZGVLaWxsczo6S2lsbFNldFtd
PihtX2NvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKKyAgICBDb2RlQmxvY2sqIGNv
ZGVCbG9jayA9IG1fZ3JhcGguY29kZUJsb2NrKCk7CisgICAgcmVzdWx0Lm1fY29kZUJsb2NrID0g
Y29kZUJsb2NrOworICAgIHJlc3VsdC5tX2tpbGxTZXRzID0gc3RkOjptYWtlX3VuaXF1ZTxCeXRl
Y29kZUtpbGxzOjpLaWxsU2V0W10+KGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsK
ICAgICAKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2Jhc2ljQmxvY2tzLnNpemUoKTsgaS0tOykg
ewotICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrID0gbV9iYXNpY0Jsb2Nrc1tpXS5n
ZXQoKTsKKyAgICBmb3IgKHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+JiBibG9j
ayA6IG1fZ3JhcGguYmFzaWNCbG9ja3NJblJldmVyc2VPcmRlcigpKSB7CiAgICAgICAgIGlmIChi
bG9jay0+aXNFbnRyeUJsb2NrKCkgfHwgYmxvY2stPmlzRXhpdEJsb2NrKCkpCiAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgCkBAIC0yNzksNyArMjgwLDcgQEAgdm9pZCBCeXRlY29kZUxp
dmVuZXNzQW5hbHlzaXM6OmNvbXB1dGVLaWxscyhCeXRlY29kZUtpbGxzJiByZXN1bHQpCiAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IGJsb2NrLT5ieXRlY29kZU9mZnNldHMoKS5zaXplKCk7IGkt
LTspIHsKICAgICAgICAgICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0ID0gYmxvY2stPmJ5dGVj
b2RlT2Zmc2V0cygpW2ldOwogICAgICAgICAgICAgc3RlcE92ZXJJbnN0cnVjdGlvbigKLSAgICAg
ICAgICAgICAgICBtX2NvZGVCbG9jaywgYmxvY2ssIG1fYmFzaWNCbG9ja3MsIGJ5dGVjb2RlT2Zm
c2V0LAorICAgICAgICAgICAgICAgIGNvZGVCbG9jaywgbV9ncmFwaCwgYnl0ZWNvZGVPZmZzZXQs
CiAgICAgICAgICAgICAgICAgWyZdICh1bnNpZ25lZCBpbmRleCkgewogICAgICAgICAgICAgICAg
ICAgICAvLyBUaGlzIGlzIGZvciB1c2VzLgogICAgICAgICAgICAgICAgICAgICBpZiAob3V0Lmdl
dChpbmRleCkpCkBAIC0yOTcsMTIgKzI5OCwxMyBAQCB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFs
eXNpczo6Y29tcHV0ZUtpbGxzKEJ5dGVjb2RlS2lsbHMmIHJlc3VsdCkKIAogdm9pZCBCeXRlY29k
ZUxpdmVuZXNzQW5hbHlzaXM6OmR1bXBSZXN1bHRzKCkKIHsKLSAgICBkYXRhTG9nKCJcbkR1bXBp
bmcgYnl0ZWNvZGUgbGl2ZW5lc3MgZm9yICIsICptX2NvZGVCbG9jaywgIjpcbiIpOwotICAgIElu
dGVycHJldGVyKiBpbnRlcnByZXRlciA9IG1fY29kZUJsb2NrLT52bSgpLT5pbnRlcnByZXRlcjsK
LSAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4gPSBtX2NvZGVCbG9jay0+aW5zdHJ1
Y3Rpb25zKCkuYmVnaW4oKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9iYXNpY0Js
b2Nrcy5zaXplKCk7IGkrKykgewotICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrID0g
bV9iYXNpY0Jsb2Nrc1tpXS5nZXQoKTsKLSAgICAgICAgZGF0YUxvZ0YoIlxuQnl0ZWNvZGUgYmFz
aWMgYmxvY2sgJXU6ICVwIChvZmZzZXQ6ICV1LCBsZW5ndGg6ICV1KVxuIiwgaSwgYmxvY2ssIGJs
b2NrLT5sZWFkZXJCeXRlY29kZU9mZnNldCgpLCBibG9jay0+dG90YWxCeXRlY29kZUxlbmd0aCgp
KTsKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IG1fZ3JhcGguY29kZUJsb2NrKCk7CisgICAg
ZGF0YUxvZygiXG5EdW1waW5nIGJ5dGVjb2RlIGxpdmVuZXNzIGZvciAiLCAqY29kZUJsb2NrLCAi
OlxuIik7CisgICAgSW50ZXJwcmV0ZXIqIGludGVycHJldGVyID0gY29kZUJsb2NrLT52bSgpLT5p
bnRlcnByZXRlcjsKKyAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4gPSBjb2RlQmxv
Y2stPmluc3RydWN0aW9ucygpLmJlZ2luKCk7CisgICAgdW5zaWduZWQgaSA9IDA7CisgICAgZm9y
IChzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiYgYmxvY2sgOiBtX2dyYXBoLmJh
c2ljQmxvY2tzKCkpIHsKKyAgICAgICAgZGF0YUxvZ0YoIlxuQnl0ZWNvZGUgYmFzaWMgYmxvY2sg
JXU6ICVwIChvZmZzZXQ6ICV1LCBsZW5ndGg6ICV1KVxuIiwgaSsrLCBibG9jay5nZXQoKSwgYmxv
Y2stPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCksIGJsb2NrLT50b3RhbEJ5dGVjb2RlTGVuZ3RoKCkp
OwogICAgICAgICBkYXRhTG9nRigiU3VjY2Vzc29yczogIik7CiAgICAgICAgIGZvciAodW5zaWdu
ZWQgaiA9IDA7IGogPCBibG9jay0+c3VjY2Vzc29ycygpLnNpemUoKTsgaisrKSB7CiAgICAgICAg
ICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIHN1Y2Nlc3NvciA9IGJsb2NrLT5zdWNjZXNzb3JzKClb
al07CkBAIC0zMTAsMTEgKzMxMiwxMSBAQCB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6
ZHVtcFJlc3VsdHMoKQogICAgICAgICB9CiAgICAgICAgIGRhdGFMb2dGKCJcbiIpOwogICAgICAg
ICBpZiAoYmxvY2stPmlzRW50cnlCbG9jaygpKSB7Ci0gICAgICAgICAgICBkYXRhTG9nRigiRW50
cnkgYmxvY2sgJXBcbiIsIGJsb2NrKTsKKyAgICAgICAgICAgIGRhdGFMb2dGKCJFbnRyeSBibG9j
ayAlcFxuIiwgYmxvY2suZ2V0KCkpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0K
ICAgICAgICAgaWYgKGJsb2NrLT5pc0V4aXRCbG9jaygpKSB7Ci0gICAgICAgICAgICBkYXRhTG9n
RigiRXhpdCBibG9jazogJXBcbiIsIGJsb2NrKTsKKyAgICAgICAgICAgIGRhdGFMb2dGKCJFeGl0
IGJsb2NrOiAlcFxuIiwgYmxvY2suZ2V0KCkpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAg
ICAgIH0KICAgICAgICAgZm9yICh1bnNpZ25lZCBieXRlY29kZU9mZnNldCA9IGJsb2NrLT5sZWFk
ZXJCeXRlY29kZU9mZnNldCgpOyBieXRlY29kZU9mZnNldCA8IGJsb2NrLT5sZWFkZXJCeXRlY29k
ZU9mZnNldCgpICsgYmxvY2stPnRvdGFsQnl0ZWNvZGVMZW5ndGgoKTspIHsKQEAgLTMyNyw3ICsz
MjksNyBAQCB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6ZHVtcFJlc3VsdHMoKQogICAg
ICAgICAgICAgICAgICAgICBkYXRhTG9nRigiJXUgIiwgaik7CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICBkYXRhTG9nRigiXG4iKTsKLSAgICAgICAgICAgIG1fY29kZUJsb2NrLT5kdW1wQnl0
ZWNvZGUoV1RGOjpkYXRhRmlsZSgpLCBtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCktPmdsb2Jh
bEV4ZWMoKSwgaW5zdHJ1Y3Rpb25zQmVnaW4sIGN1cnJlbnRJbnN0cnVjdGlvbik7CisgICAgICAg
ICAgICBjb2RlQmxvY2stPmR1bXBCeXRlY29kZShXVEY6OmRhdGFGaWxlKCksIGNvZGVCbG9jay0+
Z2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKSwgaW5zdHJ1Y3Rpb25zQmVnaW4sIGN1cnJlbnRJ
bnN0cnVjdGlvbik7CiAKICAgICAgICAgICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0
ZXItPmdldE9wY29kZUlEKGluc3RydWN0aW9uc0JlZ2luW2J5dGVjb2RlT2Zmc2V0XS51Lm9wY29k
ZSk7CiAgICAgICAgICAgICB1bnNpZ25lZCBvcGNvZGVMZW5ndGggPSBvcGNvZGVMZW5ndGhzW29w
Y29kZUlEXTsKQEAgLTM0Niw4ICszNDgsNiBAQCB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNp
czo6ZHVtcFJlc3VsdHMoKQogCiB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0
ZSgpCiB7Ci0gICAgY29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MobV9jb2RlQmxvY2ssIG1fYmFz
aWNCbG9ja3MpOwotICAgIEFTU0VSVChtX2Jhc2ljQmxvY2tzLnNpemUoKSk7CiAgICAgcnVuTGl2
ZW5lc3NGaXhwb2ludCgpOwogCiAgICAgaWYgKE9wdGlvbnM6OmR1bXBCeXRlY29kZUxpdmVuZXNz
UmVzdWx0cygpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5oCmluZGV4IGVjZTE2ZjIxZjAxNTEwYTY0MjdmZDg0
MTE0MDc5YmVkODcwYzA4NzUuLjA2MGU5ZWE4ODcwMTM4MzQxYWJhYWFiMmQzNDhhNWQ1ZDQzM2Y3
MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxp
dmVuZXNzQW5hbHlzaXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmgKQEAgLTI3LDYgKzI3LDcgQEAKICNkZWZpbmUgQnl0ZWNv
ZGVMaXZlbmVzc0FuYWx5c2lzX2gKIAogI2luY2x1ZGUgIkJ5dGVjb2RlQmFzaWNCbG9jay5oIgor
I2luY2x1ZGUgIkJ5dGVjb2RlR3JhcGguaCIKICNpbmNsdWRlIDx3dGYvRmFzdEJpdFZlY3Rvci5o
PgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAt
MzQsMTQgKzM1LDEzIEBACiBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgQnl0ZWNvZGVLaWxsczsK
LWNsYXNzIENvZGVCbG9jazsKIGNsYXNzIEZ1bGxCeXRlY29kZUxpdmVuZXNzOwogCiBjbGFzcyBC
eXRlY29kZUxpdmVuZXNzQW5hbHlzaXMgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcyk7CiBwdWJs
aWM6Ci0gICAgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzKENvZGVCbG9jayopOworICAgIEJ5dGVj
b2RlTGl2ZW5lc3NBbmFseXNpcyhCeXRlY29kZUdyYXBoPENvZGVCbG9jaz4mKTsKICAgICAKICAg
ICBib29sIG9wZXJhbmRJc0xpdmVBdEJ5dGVjb2RlT2Zmc2V0KGludCBvcGVyYW5kLCB1bnNpZ25l
ZCBieXRlY29kZU9mZnNldCk7CiAgICAgRmFzdEJpdFZlY3RvciBnZXRMaXZlbmVzc0luZm9BdEJ5
dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KTsKQEAgLTU2LDggKzU2LDcgQEAg
Y2xhc3MgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzIHsKIAogICAgIHZvaWQgZ2V0TGl2ZW5lc3NJ
bmZvQXRCeXRlY29kZU9mZnNldCh1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgRmFzdEJpdFZlY3Rv
ciYpOwogCi0gICAgQ29kZUJsb2NrKiBtX2NvZGVCbG9jazsKLSAgICBWZWN0b3I8c3RkOjp1bmlx
dWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+IG1fYmFzaWNCbG9ja3M7CisgICAgQnl0ZWNvZGVH
cmFwaDxDb2RlQmxvY2s+JiBtX2dyYXBoOwogfTsKIAogaW5saW5lIGJvb2wgb3BlcmFuZElzQWx3
YXlzTGl2ZShpbnQgb3BlcmFuZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZVVzZURlZi5oCmluZGV4IDk4MWZiMWQwZmVjMDU3MDRkNWI3ZjY2ZWM0NDE4MjU3
ZTgzYWFjMzYuLjM1YzNmNjQwZGQ3YjdmZTg2MzJmNTAxYjg0YjRiYjY2NTY4Mzc2OTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCkBAIC0z
MCwxOCArMzAsOSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotdGVtcGxhdGU8dHlwZW5hbWUgRnVu
Y3Rvcj4KLXZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCgKLSAgICBDb2RlQmxvY2sq
IGNvZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaywgdW5zaWduZWQgYnl0ZWNvZGVP
ZmZzZXQsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCit0ZW1wbGF0ZTx0eXBlbmFtZSBCbG9jaywg
dHlwZW5hbWUgRnVuY3RvciwgdHlwZW5hbWUgSW5zdHJ1Y3Rpb24+Cit2b2lkIGNvbXB1dGVVc2Vz
Rm9yQnl0ZWNvZGVPZmZzZXQoQmxvY2sqIGNvZGVCbG9jaywgT3Bjb2RlSUQgb3Bjb2RlSUQsIElu
c3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikKIHsKLSAgICBJ
bnRlcnByZXRlciogaW50ZXJwcmV0ZXIgPSBjb2RlQmxvY2stPnZtKCktPmludGVycHJldGVyOwot
ICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiA9IGNvZGVCbG9jay0+aW5zdHJ1Y3Rp
b25zKCkuYmVnaW4oKTsKLSAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSAmaW5zdHJ1Y3Rp
b25zQmVnaW5bYnl0ZWNvZGVPZmZzZXRdOwotICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW50ZXJw
cmV0ZXItPmdldE9wY29kZUlEKGluc3RydWN0aW9uLT51Lm9wY29kZSk7Ci0KLSAgICBpZiAob3Bj
b2RlSUQgIT0gb3BfZW50ZXIgJiYgY29kZUJsb2NrLT53YXNDb21waWxlZFdpdGhEZWJ1Z2dpbmdP
cGNvZGVzKCkgJiYgY29kZUJsb2NrLT5zY29wZVJlZ2lzdGVyKCkuaXNWYWxpZCgpKQotICAgICAg
ICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBjb2RlQmxvY2stPnNj
b3BlUmVnaXN0ZXIoKS5vZmZzZXQoKSk7Ci0KICAgICBzd2l0Y2ggKG9wY29kZUlEKSB7CiAgICAg
Ly8gTm8gdXNlcy4KICAgICBjYXNlIG9wX25ld19yZWdleHA6CkBAIC02MCw2ICs1MSw3IEBAIHZv
aWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCgKICAgICBjYXNlIG9wX2NyZWF0ZV9jbG9u
ZWRfYXJndW1lbnRzOgogICAgIGNhc2Ugb3BfZ2V0X3Jlc3RfbGVuZ3RoOgogICAgIGNhc2Ugb3Bf
d2F0Y2hkb2c6CisgICAgY2FzZSBvcF9uZXdfZ2VuZXJhdG9yX2ZyYW1lOgogICAgICAgICByZXR1
cm47CiAgICAgY2FzZSBvcF9hc3NlcnQ6CiAgICAgY2FzZSBvcF9nZXRfc2NvcGU6CkBAIC03NSw4
ICs2Nyw3IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCgKICAgICBjYXNlIG9w
X2puZXFfbnVsbDoKICAgICBjYXNlIG9wX2RlYzoKICAgICBjYXNlIG9wX2luYzoKLSAgICBjYXNl
IG9wX2xvZ19zaGFkb3dfY2hpY2tlbl9wcm9sb2d1ZToKLSAgICBjYXNlIG9wX3Jlc3VtZTogewor
ICAgIGNhc2Ugb3BfbG9nX3NoYWRvd19jaGlja2VuX3Byb2xvZ3VlOiB7CiAgICAgICAgIEFTU0VS
VChvcGNvZGVMZW5ndGhzW29wY29kZUlEXSA+IDEpOwogICAgICAgICBmdW5jdG9yKGNvZGVCbG9j
aywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBpbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOwogICAg
ICAgICByZXR1cm47CkBAIC0yODQsMjIgKzI3NSw2IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRl
Y29kZU9mZnNldCgKICAgICAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwg
b3Bjb2RlSUQsIGxhc3RBcmcgKyBpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBjYXNl
IG9wX3NhdmU6IHsKLSAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNv
ZGVJRCwgaW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKTsKLSAgICAgICAgdW5zaWduZWQgbWVyZ2VQ
b2ludEJ5dGVjb2RlT2Zmc2V0ID0gYnl0ZWNvZGVPZmZzZXQgKyBpbnN0cnVjdGlvblszXS51Lm9w
ZXJhbmQ7Ci0gICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogbWVyZ2VQb2ludEJsb2NrID0gbnVs
bHB0cjsKLSAgICAgICAgZm9yIChCeXRlY29kZUJhc2ljQmxvY2sqIHN1Y2Nlc3NvciA6IGJsb2Nr
LT5zdWNjZXNzb3JzKCkpIHsKLSAgICAgICAgICAgIGlmIChzdWNjZXNzb3ItPmxlYWRlckJ5dGVj
b2RlT2Zmc2V0KCkgPT0gbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0KSB7Ci0gICAgICAgICAgICAg
ICAgbWVyZ2VQb2ludEJsb2NrID0gc3VjY2Vzc29yOwotICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIEFTU0VSVChtZXJnZVBvaW50QmxvY2sp
OwotICAgICAgICBtZXJnZVBvaW50QmxvY2stPmluKCkuZm9yRWFjaFNldEJpdChbJl0odW5zaWdu
ZWQgbG9jYWwpIHsKLSAgICAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwg
b3Bjb2RlSUQsIHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGxvY2FsKS5vZmZzZXQoKSk7Ci0gICAg
ICAgIH0pOwotICAgICAgICByZXR1cm47Ci0gICAgfQogICAgIGRlZmF1bHQ6CiAgICAgICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIGJyZWFrOwpAQCAtMzA3LDEyICsy
ODIsNDEgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAogfQogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBGdW5jdG9yPgotdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KENv
ZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrLCB1bnNpZ25lZCBi
eXRlY29kZU9mZnNldCwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikKK3ZvaWQgY29tcHV0ZVVzZXNG
b3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVP
ZmZzZXQsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiB7CiAgICAgSW50ZXJwcmV0ZXIqIGludGVy
cHJldGVyID0gY29kZUJsb2NrLT52bSgpLT5pbnRlcnByZXRlcjsKICAgICBJbnN0cnVjdGlvbiog
aW5zdHJ1Y3Rpb25zQmVnaW4gPSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCk7CiAg
ICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uID0gJmluc3RydWN0aW9uc0JlZ2luW2J5dGVjb2Rl
T2Zmc2V0XTsKICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGludGVycHJldGVyLT5nZXRPcGNvZGVJ
RChpbnN0cnVjdGlvbi0+dS5vcGNvZGUpOworCisgICAgaWYgKG9wY29kZUlEICE9IG9wX2VudGVy
ICYmIGNvZGVCbG9jay0+d2FzQ29tcGlsZWRXaXRoRGVidWdnaW5nT3Bjb2RlcygpICYmIGNvZGVC
bG9jay0+c2NvcGVSZWdpc3RlcigpLmlzVmFsaWQoKSkKKyAgICAgICAgZnVuY3Rvcihjb2RlQmxv
Y2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgY29kZUJsb2NrLT5zY29wZVJlZ2lzdGVyKCkub2Zm
c2V0KCkpOworCisgICAgLy8gRklYTUU6IFRoZXNlIG9wX3NhdmUgLyBvcF9yZXN1bWUgd2lsbCBi
ZSByZW1vdmVkLgorICAgIHN3aXRjaCAob3Bjb2RlSUQpIHsKKyAgICBjYXNlIG9wX3NhdmU6IHsK
KyAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgaW5zdHJ1
Y3Rpb25bMV0udS5vcGVyYW5kKTsKKyAgICAgICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0lu
ZGV4ID0gaW5zdHJ1Y3Rpb25bMl0udS51bnNpZ25lZFZhbHVlOworICAgICAgICBjb25zdCBGYXN0
Qml0VmVjdG9yJiBsaXZlbmVzcyA9IGNvZGVCbG9jay0+bGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQo
bGl2ZUNhbGxlZUxvY2Fsc0luZGV4KTsKKyAgICAgICAgbGl2ZW5lc3MuZm9yRWFjaFNldEJpdChb
Jl0odW5zaWduZWQgbG9jYWwpIHsKKyAgICAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0
cnVjdGlvbiwgb3Bjb2RlSUQsIHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGxvY2FsKS5vZmZzZXQo
KSk7CisgICAgICAgIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgY2FzZSBvcF9y
ZXN1bWU6CisgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQs
IGluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CisgICAgICAgIHJldHVybjsKKworICAgIGRlZmF1
bHQ6CisgICAgICAgIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoY29kZUJsb2NrLCBvcGNv
ZGVJRCwgaW5zdHJ1Y3Rpb24sIGZ1bmN0b3IpOworICAgICAgICByZXR1cm47CisgICAgfQorfQor
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBCbG9jaywgdHlwZW5hbWUgSW5zdHJ1Y3Rpb24sIHR5cGVuYW1l
IEZ1bmN0b3I+Cit2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQmxvY2sqIGNvZGVC
bG9jaywgT3Bjb2RlSUQgb3Bjb2RlSUQsIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgY29uc3Qg
RnVuY3RvciYgZnVuY3RvcikKK3sKICAgICBzd2l0Y2ggKG9wY29kZUlEKSB7CiAgICAgLy8gVGhl
c2UgZG9uJ3QgZGVmaW5lIGFueXRoaW5nLgogICAgIGNhc2Ugb3BfY29weV9yZXN0OgpAQCAtMzIw
LDcgKzMyNCw2IEBAIHZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sq
IGNvZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jCiAgICAgY2FzZSBvcF9lbmQ6CiAg
ICAgY2FzZSBvcF90aHJvdzoKICAgICBjYXNlIG9wX3Rocm93X3N0YXRpY19lcnJvcjoKLSAgICBj
YXNlIG9wX3NhdmU6CiAgICAgY2FzZSBvcF9hc3NlcnQ6CiAgICAgY2FzZSBvcF9kZWJ1ZzoKICAg
ICBjYXNlIG9wX3JldDoKQEAgLTQ1OSw4ICs0NjIsOSBAQCB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0
ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxv
YwogICAgIGNhc2Ugb3BfZGVsX2J5X2lkOgogICAgIGNhc2Ugb3BfZGVsX2J5X3ZhbDoKICAgICBj
YXNlIG9wX3Vuc2lnbmVkOgotICAgIGNhc2Ugb3BfZ2V0X2Zyb21fYXJndW1lbnRzOiAKLSAgICBj
YXNlIG9wX2dldF9yZXN0X2xlbmd0aDogeworICAgIGNhc2Ugb3BfZ2V0X2Zyb21fYXJndW1lbnRz
OgorICAgIGNhc2Ugb3BfZ2V0X3Jlc3RfbGVuZ3RoOgorICAgIGNhc2Ugb3BfbmV3X2dlbmVyYXRv
cl9mcmFtZTogewogICAgICAgICBBU1NFUlQob3Bjb2RlTGVuZ3Roc1tvcGNvZGVJRF0gPiAxKTsK
ICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgaW5zdHJ1
Y3Rpb25bMV0udS5vcGVyYW5kKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNDc2LDE1ICs0ODAsMzgg
QEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2Nr
LCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2MKICAgICAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2Nr
LCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGkpLm9mZnNl
dCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICBkZWZhdWx0OgorICAgICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm47CisgICAgfQorfQorCit0
ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgordm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zm
c2V0KENvZGVCbG9jayogY29kZUJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgY29uc3Qg
RnVuY3RvciYgZnVuY3RvcikKK3sKKyAgICBJbnRlcnByZXRlciogaW50ZXJwcmV0ZXIgPSBjb2Rl
QmxvY2stPnZtKCktPmludGVycHJldGVyOworICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNC
ZWdpbiA9IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsKKyAgICBJbnN0cnVjdGlv
biogaW5zdHJ1Y3Rpb24gPSAmaW5zdHJ1Y3Rpb25zQmVnaW5bYnl0ZWNvZGVPZmZzZXRdOworICAg
IE9wY29kZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGluc3RydWN0aW9u
LT51Lm9wY29kZSk7CisKKyAgICAvLyBGSVhNRTogVGhlc2Ugb3Bfc2F2ZSAvIG9wX3Jlc3VtZSB3
aWxsIGJlIHJlbW92ZWQuCisgICAgc3dpdGNoIChvcGNvZGVJRCkgeworICAgIC8vIFRoZXNlIGRv
bid0IGRlZmluZSBhbnl0aGluZy4KKyAgICBjYXNlIG9wX3NhdmU6CisgICAgICAgIHJldHVybjsK
KwogICAgIGNhc2Ugb3BfcmVzdW1lOiB7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKGJsb2NrLT5z
dWNjZXNzb3JzKCkuc2l6ZSgpID09IDEpOwotICAgICAgICAvLyBGSVhNRTogVGhpcyBpcyByZWFs
bHkgZGlydHkuCi0gICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNTkyODEKLSAgICAgICAgYmxvY2stPnN1Y2Nlc3NvcnMoKVswXS0+aW4oKS5mb3JFYWNo
U2V0Qml0KFsmXSh1bnNpZ25lZCBsb2NhbCkgeworICAgICAgICB1bnNpZ25lZCBsaXZlQ2FsbGVl
TG9jYWxzSW5kZXggPSBpbnN0cnVjdGlvblsyXS51LnVuc2lnbmVkVmFsdWU7CisgICAgICAgIGNv
bnN0IEZhc3RCaXRWZWN0b3ImIGxpdmVuZXNzID0gY29kZUJsb2NrLT5saXZlQ2FsbGVlTG9jYWxz
QXRZaWVsZChsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpOworICAgICAgICBsaXZlbmVzcy5mb3JFYWNo
U2V0Qml0KFsmXSh1bnNpZ25lZCBsb2NhbCkgewogICAgICAgICAgICAgZnVuY3Rvcihjb2RlQmxv
Y2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwobG9jYWwp
Lm9mZnNldCgpKTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CisKKyAgICBk
ZWZhdWx0OgorICAgICAgICBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9jaywg
b3Bjb2RlSUQsIGluc3RydWN0aW9uLCBmdW5jdG9yKTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0K
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
ay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRl
eCA4MDI5NGQyMWQ3MTEyOGQ2ODZhYTBlOTBjNmFhY2VmMjhiODJjYjc5Li42Yjc5YzYxM2QxYmYy
MTkyNDg2OWFkMjQxZmU0YTM5M2IzM2Y0MDAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrLmNwcApAQCAtMzIsNiArMzIsNyBAQAogCiAjaW5jbHVkZSAiQmFz
aWNCbG9ja0xvY2F0aW9uLmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVHZW5lcmF0b3IuaCIKKyNpbmNs
dWRlICJCeXRlY29kZUdyYXBoLmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVVc2VEZWYuaCIKICNpbmNs
dWRlICJDYWxsTGlua1N0YXR1cy5oIgogI2luY2x1ZGUgIkRGR0NhcGFiaWxpdGllcy5oIgpAQCAt
MTY2MywzMCArMTY2NCwzNyBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKAogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9zYXZlOiB7Ci0gICAgICAg
ICAgICBpbnQgZ2VuZXJhdG9yID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBpbnQg
ZnJhbWUgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIHVuc2lnbmVkIGxpdmVDYWxs
ZWVMb2NhbHNJbmRleCA9ICgrK2l0KS0+dS51bnNpZ25lZFZhbHVlOwogICAgICAgICAgICAgaW50
IG9mZnNldCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgRmFzdEJpdFZlY3RvciBs
aXZlbmVzczsKICAgICAgICAgICAgIGlmIChsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPCBtX3JhcmVE
YXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkLnNpemUoKSkKICAgICAgICAgICAgICAgICBs
aXZlbmVzcyA9IG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGRbbGl2ZUNhbGxl
ZUxvY2Fsc0luZGV4XTsKICAgICAgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMs
IGxvY2F0aW9uLCBpdCwgInNhdmUiKTsKLSAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAiLCBy
ZWdpc3Rlck5hbWUoZ2VuZXJhdG9yKS5kYXRhKCkpOworICAgICAgICAgICAgb3V0LnByaW50Zigi
JXMsICIsIHJlZ2lzdGVyTmFtZShmcmFtZSkuZGF0YSgpKTsKICAgICAgICAgICAgIGxpdmVuZXNz
LmR1bXAob3V0KTsKICAgICAgICAgICAgIG91dC5wcmludGYoIihAbGl2ZSUxdSksICVkKC0+JWQp
IiwgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4LCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfcmVzdW1lOiB7Ci0g
ICAgICAgICAgICBpbnQgZ2VuZXJhdG9yID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAg
ICBpbnQgZnJhbWUgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIHVuc2lnbmVkIGxp
dmVDYWxsZWVMb2NhbHNJbmRleCA9ICgrK2l0KS0+dS51bnNpZ25lZFZhbHVlOwogICAgICAgICAg
ICAgRmFzdEJpdFZlY3RvciBsaXZlbmVzczsKICAgICAgICAgICAgIGlmIChsaXZlQ2FsbGVlTG9j
YWxzSW5kZXggPCBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkLnNpemUoKSkK
ICAgICAgICAgICAgICAgICBsaXZlbmVzcyA9IG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fs
c0F0WWllbGRbbGl2ZUNhbGxlZUxvY2Fsc0luZGV4XTsKICAgICAgICAgICAgIHByaW50TG9jYXRp
b25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgInJlc3VtZSIpOwotICAgICAgICAgICAg
b3V0LnByaW50ZigiJXMsICIsIHJlZ2lzdGVyTmFtZShnZW5lcmF0b3IpLmRhdGEoKSk7CisgICAg
ICAgICAgICBvdXQucHJpbnRmKCIlcywgIiwgcmVnaXN0ZXJOYW1lKGZyYW1lKS5kYXRhKCkpOwog
ICAgICAgICAgICAgbGl2ZW5lc3MuZHVtcChvdXQpOwogICAgICAgICAgICAgb3V0LnByaW50Zigi
KEBsaXZlJTF1KSIsIGxpdmVDYWxsZWVMb2NhbHNJbmRleCk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQorICAgICAgICBjYXNlIG9wX25ld19nZW5lcmF0b3JfZnJhbWU6IHsKKyAgICAg
ICAgICAgIGludCBkc3QgPSAoKytpdCktPnUub3BlcmFuZDsKKyAgICAgICAgICAgIHVuc2lnbmVk
IGdlbmVyYXRvckxvY2Fsc1NpemUgPSAoKytpdCktPnUudW5zaWduZWRWYWx1ZTsKKyAgICAgICAg
ICAgIHByaW50TG9jYXRpb25PcEFuZFJlZ2lzdGVyT3BlcmFuZChvdXQsIGV4ZWMsIGxvY2F0aW9u
LCBpdCwgIm5ld19nZW5lcmF0b3JfZnJhbWUiLCBkc3QpOworICAgICAgICAgICAgb3V0LnByaW50
ZigiICV1IiwgZ2VuZXJhdG9yTG9jYWxzU2l6ZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgfQogICAgICAgICBjYXNlIG9wX2Fzc2VydDogewogICAgICAgICAgICAgaW50IGNvbmRpdGlv
biA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IGxpbmUgPSAoKytpdCktPnUu
b3BlcmFuZDsKQEAgLTIwMjEsNyArMjAyOSw3IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5pc2hDcmVh
dGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAg
ICAgICAgICAgICAgICAgVW5saW5rZWRTdHJpbmdKdW1wVGFibGU6OlN0cmluZ09mZnNldFRhYmxl
OjppdGVyYXRvciBlbmQgPSB1bmxpbmtlZENvZGVCbG9jay0+c3RyaW5nU3dpdGNoSnVtcFRhYmxl
KGkpLm9mZnNldFRhYmxlLmVuZCgpOwogICAgICAgICAgICAgICAgIGZvciAoOyBwdHIgIT0gZW5k
OyArK3B0cikgewogICAgICAgICAgICAgICAgICAgICBPZmZzZXRMb2NhdGlvbiBvZmZzZXQ7Ci0g
ICAgICAgICAgICAgICAgICAgIG9mZnNldC5icmFuY2hPZmZzZXQgPSBwdHItPnZhbHVlOworICAg
ICAgICAgICAgICAgICAgICBvZmZzZXQuYnJhbmNoT2Zmc2V0ID0gcHRyLT52YWx1ZS5icmFuY2hP
ZmZzZXQ7CiAgICAgICAgICAgICAgICAgICAgIG1fcmFyZURhdGEtPm1fc3RyaW5nU3dpdGNoSnVt
cFRhYmxlc1tpXS5vZmZzZXRUYWJsZS5hZGQocHRyLT5rZXksIG9mZnNldCk7CiAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgfQpAQCAtMjAzNiw2ICsyMDQ0LDggQEAgdm9pZCBDb2RlQmxv
Y2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRh
YmxlLCBVbmxpbmsKICAgICAgICAgICAgICAgICBkZXN0VGFibGUubWluID0gc291cmNlVGFibGUu
bWluOwogICAgICAgICAgICAgfQogICAgICAgICB9CisKKyAgICAgICAgbV9yYXJlRGF0YS0+bV9s
aXZlQ2FsbGVlTG9jYWxzQXRZaWVsZCA9IHVubGlua2VkQ29kZUJsb2NrLT5saXZlQ2FsbGVlTG9j
YWxzQXRZaWVsZCgpOwogICAgIH0KIAogICAgIC8vIEFsbG9jYXRlIG1ldGFkYXRhIGJ1ZmZlcnMg
Zm9yIHRoZSBieXRlY29kZQpAQCAtMjA2MSw5ICsyMDcxLDYgQEAgdm9pZCBDb2RlQmxvY2s6OmZp
bmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBV
bmxpbmsKICAgICAvLyBCb29ra2VlcCB0aGUgc3Ryb25nbHkgcmVmZXJlbmNlZCBtb2R1bGUgZW52
aXJvbm1lbnRzLgogICAgIEhhc2hTZXQ8SlNNb2R1bGVFbnZpcm9ubWVudCo+IHN0cm9uZ2x5UmVm
ZXJlbmNlZE1vZHVsZUVudmlyb25tZW50czsKIAotICAgIC8vIEJvb2trZWVwIHRoZSBtZXJnZSBw
b2ludCBieXRlY29kZSBvZmZzZXRzLgotICAgIFZlY3RvcjxzaXplX3Q+IG1lcmdlUG9pbnRCeXRl
Y29kZU9mZnNldHM7Ci0KICAgICBSZWZDb3VudGVkQXJyYXk8SW5zdHJ1Y3Rpb24+IGluc3RydWN0
aW9ucyhpbnN0cnVjdGlvbkNvdW50KTsKIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7ICFpbnN0
cnVjdGlvblJlYWRlci5hdEVuZCgpOyApIHsKQEAgLTIzNDYsMzkgKzIzNTMsMTYgQEAgdm9pZCBD
b2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJF
eGVjdXRhYmxlLCBVbmxpbmsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKLSAgICAg
ICAgY2FzZSBvcF9zYXZlOiB7Ci0gICAgICAgICAgICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxz
SW5kZXggPSBwY1syXS51LmluZGV4OwotICAgICAgICAgICAgaW50IG9mZnNldCA9IHBjWzNdLnUu
b3BlcmFuZDsKLSAgICAgICAgICAgIGlmIChsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPj0gbWVyZ2VQ
b2ludEJ5dGVjb2RlT2Zmc2V0cy5zaXplKCkpCi0gICAgICAgICAgICAgICAgbWVyZ2VQb2ludEJ5
dGVjb2RlT2Zmc2V0cy5yZXNpemUobGl2ZUNhbGxlZUxvY2Fsc0luZGV4ICsgMSk7Ci0gICAgICAg
ICAgICBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXRzW2xpdmVDYWxsZWVMb2NhbHNJbmRleF0gPSBp
ICsgb2Zmc2V0OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLQogICAgICAgICBkZWZh
dWx0OgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgaSArPSBvcExlbmd0
aDsKICAgICB9CiAKLSAgICBpZiAodm0uY29udHJvbEZsb3dQcm9maWxlcigpKQotICAgICAgICBp
bnNlcnRCYXNpY0Jsb2NrQm91bmRhcmllc0ZvckNvbnRyb2xGbG93UHJvZmlsZXIoaW5zdHJ1Y3Rp
b25zKTsKLQogICAgIG1faW5zdHJ1Y3Rpb25zID0gV1RGTW92ZShpbnN0cnVjdGlvbnMpOwogCi0g
ICAgLy8gUGVyZm9ybSBieXRlY29kZSBsaXZlbmVzcyBhbmFseXNpcyB0byBkZXRlcm1pbmUgd2hp
Y2ggbG9jYWxzIGFyZSBsaXZlIGFuZCBzaG91bGQgYmUgcmVzdW1lZCB3aGVuIGV4ZWN1dGluZyBv
cF9yZXN1bWUuCi0gICAgaWYgKHVubGlua2VkQ29kZUJsb2NrLT5wYXJzZU1vZGUoKSA9PSBTb3Vy
Y2VQYXJzZU1vZGU6OkdlbmVyYXRvckJvZHlNb2RlKSB7Ci0gICAgICAgIGlmIChzaXplX3QgY291
bnQgPSBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXRzLnNpemUoKSkgewotICAgICAgICAgICAgY3Jl
YXRlUmFyZURhdGFJZk5lY2Vzc2FyeSgpOwotICAgICAgICAgICAgQnl0ZWNvZGVMaXZlbmVzc0Fu
YWx5c2lzIGxpdmVuZXNzKHRoaXMpOwotICAgICAgICAgICAgbV9yYXJlRGF0YS0+bV9saXZlQ2Fs
bGVlTG9jYWxzQXRZaWVsZC5ncm93KGNvdW50KTsKLSAgICAgICAgICAgIHNpemVfdCBsaXZlQ2Fs
bGVlTG9jYWxzSW5kZXggPSAwOwotICAgICAgICAgICAgZm9yIChzaXplX3QgYnl0ZWNvZGVPZmZz
ZXQgOiBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXRzKSB7Ci0gICAgICAgICAgICAgICAgbV9yYXJl
RGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZFtsaXZlQ2FsbGVlTG9jYWxzSW5kZXhdID0g
bGl2ZW5lc3MuZ2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCk7
Ci0gICAgICAgICAgICAgICAgKytsaXZlQ2FsbGVlTG9jYWxzSW5kZXg7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIH0KLSAgICB9CisgICAgaWYgKHZtLmNvbnRyb2xGbG93UHJvZmlsZXIoKSkKKyAg
ICAgICAgaW5zZXJ0QmFzaWNCbG9ja0JvdW5kYXJpZXNGb3JDb250cm9sRmxvd1Byb2ZpbGVyKG1f
aW5zdHJ1Y3Rpb25zKTsKIAogICAgIC8vIFNldCBvcHRpbWl6YXRpb24gdGhyZXNob2xkcyBvbmx5
IGFmdGVyIG1faW5zdHJ1Y3Rpb25zIGlzIGluaXRpYWxpemVkLCBzaW5jZSB0aGVzZQogICAgIC8v
IHJlbHkgb24gdGhlIGluc3RydWN0aW9uIGNvdW50IChhbmQgYXJlIGluIHRoZW9yeSBwZXJtaXR0
ZWQgdG8gYWxzbyBpbnNwZWN0IHRoZQpAQCAtNDI4Myw3ICs0MjY3LDggQEAgVmFsdWVQcm9maWxl
KiBDb2RlQmxvY2s6OnZhbHVlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KGludCBieXRlY29kZU9m
ZnNldCkKIAogdm9pZCBDb2RlQmxvY2s6OnZhbGlkYXRlKCkKIHsKLSAgICBCeXRlY29kZUxpdmVu
ZXNzQW5hbHlzaXMgbGl2ZW5lc3ModGhpcyk7IC8vIENvbXB1dGUgZGlyZWN0bHkgZnJvbSBzY3Jh
dGNoIHNvIGl0IGRvZXNuJ3QgZWZmZWN0IENvZGVCbG9jayBmb290cHJpbnQuCisgICAgQnl0ZWNv
ZGVHcmFwaDxDb2RlQmxvY2s+IGdyYXBoKHRoaXMsIGluc3RydWN0aW9ucygpKTsKKyAgICBCeXRl
Y29kZUxpdmVuZXNzQW5hbHlzaXMgbGl2ZW5lc3MoZ3JhcGgpOyAvLyBDb21wdXRlIGRpcmVjdGx5
IGZyb20gc2NyYXRjaCBzbyBpdCBkb2Vzbid0IGVmZmVjdCBDb2RlQmxvY2sgZm9vdHByaW50Lgog
ICAgIAogICAgIEZhc3RCaXRWZWN0b3IgbGl2ZUF0SGVhZCA9IGxpdmVuZXNzLmdldExpdmVuZXNz
SW5mb0F0Qnl0ZWNvZGVPZmZzZXQoMCk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmgKaW5kZXggYjI4ODM2NTRiZTM0NWU3YWIwMTEwZWMxYjZmNWQ2OTdh
MThjMjdjMi4uOTkxYTQ1MzA5NWU2ZTZiYzg5YmM2MTBhN2I5NGFkMzkwNzFhYTA1YiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaApAQCAtMjIwLDEwICsyMjAs
NiBAQCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAgICAgcmV0dXJuIGlu
ZGV4ID49IG1fbnVtVmFyczsKICAgICB9CiAKLSAgICBlbnVtIGNsYXNzIFJlcXVpcmVkSGFuZGxl
ciB7Ci0gICAgICAgIENhdGNoSGFuZGxlciwKLSAgICAgICAgQW55SGFuZGxlcgotICAgIH07CiAg
ICAgSGFuZGxlckluZm8qIGhhbmRsZXJGb3JCeXRlY29kZU9mZnNldCh1bnNpZ25lZCBieXRlY29k
ZU9mZnNldCwgUmVxdWlyZWRIYW5kbGVyID0gUmVxdWlyZWRIYW5kbGVyOjpBbnlIYW5kbGVyKTsK
ICAgICBIYW5kbGVySW5mbyogaGFuZGxlckZvckluZGV4KHVuc2lnbmVkLCBSZXF1aXJlZEhhbmRs
ZXIgPSBSZXF1aXJlZEhhbmRsZXI6OkFueUhhbmRsZXIpOwogICAgIHZvaWQgcmVtb3ZlRXhjZXB0
aW9uSGFuZGxlckZvckNhbGxTaXRlKENhbGxTaXRlSW5kZXgpOwpAQCAtMjk1LDYgKzI5MSw4IEBA
IGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgICAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8SW5zdHJ1Y3Rpb24qPihyZXR1cm5BZGRyZXNzKSAtIGluc3RydWN0aW9ucygpLmJlZ2lu
KCk7CiAgICAgfQogCisgICAgdHlwZWRlZiBSZWZDb3VudGVkQXJyYXk8SW5zdHJ1Y3Rpb24+JiBV
bnBhY2tlZEluc3RydWN0aW9uczsKKwogICAgIHVuc2lnbmVkIG51bWJlck9mSW5zdHJ1Y3Rpb25z
KCkgY29uc3QgeyByZXR1cm4gbV9pbnN0cnVjdGlvbnMuc2l6ZSgpOyB9CiAgICAgUmVmQ291bnRl
ZEFycmF5PEluc3RydWN0aW9uPiYgaW5zdHJ1Y3Rpb25zKCkgeyByZXR1cm4gbV9pbnN0cnVjdGlv
bnM7IH0KICAgICBjb25zdCBSZWZDb3VudGVkQXJyYXk8SW5zdHJ1Y3Rpb24+JiBpbnN0cnVjdGlv
bnMoKSBjb25zdCB7IHJldHVybiBtX2luc3RydWN0aW9uczsgfQpAQCAtNTg4LDEyICs1ODYsMTQg
QEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgICAgICAgICBpZiAoISFt
X2xpdmVuZXNzQW5hbHlzaXMpCiAgICAgICAgICAgICAgICAgcmV0dXJuICptX2xpdmVuZXNzQW5h
bHlzaXM7CiAgICAgICAgIH0KLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlTGl2ZW5l
c3NBbmFseXNpcz4gYW5hbHlzaXMgPQotICAgICAgICAgICAgc3RkOjptYWtlX3VuaXF1ZTxCeXRl
Y29kZUxpdmVuZXNzQW5hbHlzaXM+KHRoaXMpOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8Qnl0
ZWNvZGVHcmFwaDxDb2RlQmxvY2s+PiBncmFwaCA9IHN0ZDo6bWFrZV91bmlxdWU8Qnl0ZWNvZGVH
cmFwaDxDb2RlQmxvY2s+Pih0aGlzLCBpbnN0cnVjdGlvbnMoKSk7CisgICAgICAgIHN0ZDo6dW5p
cXVlX3B0cjxCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM+IGFuYWx5c2lzID0gc3RkOjptYWtlX3Vu
aXF1ZTxCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM+KCpncmFwaCk7CiAgICAgICAgIHsKICAgICAg
ICAgICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKG1fbG9jayk7Ci0gICAgICAgICAgICBp
ZiAoIW1fbGl2ZW5lc3NBbmFseXNpcykKKyAgICAgICAgICAgIGlmICghbV9saXZlbmVzc0FuYWx5
c2lzKSB7CisgICAgICAgICAgICAgICAgbV9ieXRlY29kZUdyYXBoID0gV1RGTW92ZShncmFwaCk7
CiAgICAgICAgICAgICAgICAgbV9saXZlbmVzc0FuYWx5c2lzID0gV1RGTW92ZShhbmFseXNpcyk7
CisgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gKm1fbGl2ZW5lc3NBbmFseXNpczsK
ICAgICAgICAgfQogICAgIH0KQEAgLTEwNTYsNiArMTA1Niw3IEBAIGNsYXNzIENvZGVCbG9jayA6
IHB1YmxpYyBKU0NlbGwgewogCiAgICAgc3RkOjpjaHJvbm86OnN0ZWFkeV9jbG9jazo6dGltZV9w
b2ludCBtX2NyZWF0aW9uVGltZTsKIAorICAgIHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUdyYXBo
PENvZGVCbG9jaz4+IG1fYnl0ZWNvZGVHcmFwaDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNv
ZGVMaXZlbmVzc0FuYWx5c2lzPiBtX2xpdmVuZXNzQW5hbHlzaXM7CiAKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8UmFyZURhdGE+IG1fcmFyZURhdGE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvSGFuZGxlckluZm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9IYW5kbGVySW5mby5oCmluZGV4IGFjZGRhMDhlZDE0Y2JmOWYwOTcxMjc1MDQwNWE0MTc0
MWY3NmEyMTMuLjQyZDgxOGM4YWM0Y2NiYWVjYTYwNTVmMjZkNjdjM2I5ZWMwYWU3YjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9IYW5kbGVySW5mby5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9IYW5kbGVySW5mby5oCkBAIC05NSw2ICs5
NSwxMSBAQCBzdHJ1Y3QgSGFuZGxlckluZm8gOiBwdWJsaWMgSGFuZGxlckluZm9CYXNlIHsKICNl
bmRpZgogfTsKIAorZW51bSBjbGFzcyBSZXF1aXJlZEhhbmRsZXIgeworICAgIENhdGNoSGFuZGxl
ciwKKyAgICBBbnlIYW5kbGVyCit9OworCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8v
IEhhbmRsZXJJbmZvX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9QcmVjaXNlSnVtcFRhcmdldHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1ByZWNpc2VKdW1wVGFyZ2V0cy5jcHAKaW5kZXggZTJjYjAwMDQ4Mzc5NGJhOTJkNTEwZGNmNWZh
OTk0ODg1YTIzZGMzZC4uMjc2M2YxOGMxYzdhNDM2NTk2NzQ4NjlkNmFjZDgyOWQzNWIzOGZlNCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFy
Z2V0cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1w
VGFyZ2V0cy5jcHAKQEAgLTMwLDEwICszMCwyMCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotdGVt
cGxhdGUgPHNpemVfdCB2ZWN0b3JTaXplPgotc3RhdGljIHZvaWQgZ2V0SnVtcFRhcmdldHNGb3JC
eXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgSW50ZXJwcmV0ZXIqIGludGVycHJl
dGVyLCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGJ5dGVjb2RlT2Zm
c2V0LCBWZWN0b3I8dW5zaWduZWQsIHZlY3RvclNpemU+JiBvdXQpCitzdGF0aWMgT3Bjb2RlSUQg
Z2V0T3Bjb2RlSUQoSW50ZXJwcmV0ZXIqIGludGVycHJldGVyLCBjb25zdCBJbnN0cnVjdGlvbiYg
aW5zdHJ1Y3Rpb24pCiB7Ci0gICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnRlcnByZXRlci0+Z2V0
T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25zQmVnaW5bYnl0ZWNvZGVPZmZzZXRdLnUub3Bjb2RlKTsKKyAg
ICByZXR1cm4gaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGluc3RydWN0aW9uLnUub3Bjb2RlKTsK
K30KKworc3RhdGljIE9wY29kZUlEIGdldE9wY29kZUlEKEludGVycHJldGVyKiwgY29uc3QgVW5s
aW5rZWRJbnN0cnVjdGlvbiYgaW5zdHJ1Y3Rpb24pCit7CisgICAgcmV0dXJuIGluc3RydWN0aW9u
LnUub3Bjb2RlOworfQorCit0ZW1wbGF0ZSA8c2l6ZV90IHZlY3RvclNpemUsIHR5cGVuYW1lIEJs
b2NrLCB0eXBlbmFtZSBJbnN0cnVjdGlvbj4KK3N0YXRpYyB2b2lkIGdldEp1bXBUYXJnZXRzRm9y
Qnl0ZWNvZGVPZmZzZXQoQmxvY2sqIGNvZGVCbG9jaywgSW50ZXJwcmV0ZXIqIGludGVycHJldGVy
LCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0
LCBWZWN0b3I8dW5zaWduZWQsIHZlY3RvclNpemU+JiBvdXQpCit7CisgICAgT3Bjb2RlSUQgb3Bj
b2RlSUQgPSBnZXRPcGNvZGVJRChpbnRlcnByZXRlciwgaW5zdHJ1Y3Rpb25zQmVnaW5bYnl0ZWNv
ZGVPZmZzZXRdKTsKICAgICBJbnN0cnVjdGlvbiogY3VycmVudCA9IGluc3RydWN0aW9uc0JlZ2lu
ICsgYnl0ZWNvZGVPZmZzZXQ7CiAgICAgc3dpdGNoIChvcGNvZGVJRCkgewogICAgIGNhc2Ugb3Bf
am1wOgpAQCAtNTQsMjEgKzY0LDI1IEBAIHN0YXRpYyB2b2lkIGdldEp1bXBUYXJnZXRzRm9yQnl0
ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEludGVycHJldGVyKiBpCiAgICAgY2Fz
ZSBvcF9qbmxlc3NlcToKICAgICBjYXNlIG9wX2puZ3JlYXRlcjoKICAgICBjYXNlIG9wX2puZ3Jl
YXRlcmVxOgotICAgIGNhc2Ugb3Bfc2F2ZTogLy8gVGhlIGp1bXAgb2Ygb3Bfc2F2ZSBpcyBwdXJl
bHkgZm9yIGNhbGN1bGF0aW5nIGxpdmVuZXNzLgogICAgICAgICBvdXQuYXBwZW5kKGJ5dGVjb2Rl
T2Zmc2V0ICsgY3VycmVudFszXS51Lm9wZXJhbmQpOwogICAgICAgICBicmVhazsKKyAgICBjYXNl
IG9wX3NhdmU6IHsKKyAgICAgICAgLy8gVGhlIGp1bXAgb2Ygb3Bfc2F2ZSB1bmRlciBFeHRyYWN0
R2VuZXJhdG9yTGl2ZUNhbGxlZUxvY2FscyBtb2RlIGlzIHB1cmVseSBmb3IgY2FsY3VsYXRpbmcg
bGl2ZW5lc3MuCisgICAgICAgIG91dC5hcHBlbmQoYnl0ZWNvZGVPZmZzZXQgKyBjdXJyZW50WzNd
LnUub3BlcmFuZCk7CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICBjYXNlIG9wX3N3aXRjaF9p
bW06CiAgICAgY2FzZSBvcF9zd2l0Y2hfY2hhcjogewotICAgICAgICBTaW1wbGVKdW1wVGFibGUm
IHRhYmxlID0gY29kZUJsb2NrLT5zd2l0Y2hKdW1wVGFibGUoY3VycmVudFsxXS51Lm9wZXJhbmQp
OworICAgICAgICBhdXRvJiB0YWJsZSA9IGNvZGVCbG9jay0+c3dpdGNoSnVtcFRhYmxlKGN1cnJl
bnRbMV0udS5vcGVyYW5kKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gdGFibGUuYnJhbmNo
T2Zmc2V0cy5zaXplKCk7IGktLTspCiAgICAgICAgICAgICBvdXQuYXBwZW5kKGJ5dGVjb2RlT2Zm
c2V0ICsgdGFibGUuYnJhbmNoT2Zmc2V0c1tpXSk7CiAgICAgICAgIG91dC5hcHBlbmQoYnl0ZWNv
ZGVPZmZzZXQgKyBjdXJyZW50WzJdLnUub3BlcmFuZCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0K
ICAgICBjYXNlIG9wX3N3aXRjaF9zdHJpbmc6IHsKLSAgICAgICAgU3RyaW5nSnVtcFRhYmxlJiB0
YWJsZSA9IGNvZGVCbG9jay0+c3RyaW5nU3dpdGNoSnVtcFRhYmxlKGN1cnJlbnRbMV0udS5vcGVy
YW5kKTsKLSAgICAgICAgU3RyaW5nSnVtcFRhYmxlOjpTdHJpbmdPZmZzZXRUYWJsZTo6aXRlcmF0
b3IgaXRlciA9IHRhYmxlLm9mZnNldFRhYmxlLmJlZ2luKCk7Ci0gICAgICAgIFN0cmluZ0p1bXBU
YWJsZTo6U3RyaW5nT2Zmc2V0VGFibGU6Oml0ZXJhdG9yIGVuZCA9IHRhYmxlLm9mZnNldFRhYmxl
LmVuZCgpOworICAgICAgICBhdXRvJiB0YWJsZSA9IGNvZGVCbG9jay0+c3RyaW5nU3dpdGNoSnVt
cFRhYmxlKGN1cnJlbnRbMV0udS5vcGVyYW5kKTsKKyAgICAgICAgYXV0byBpdGVyID0gdGFibGUu
b2Zmc2V0VGFibGUuYmVnaW4oKTsKKyAgICAgICAgYXV0byBlbmQgPSB0YWJsZS5vZmZzZXRUYWJs
ZS5lbmQoKTsKICAgICAgICAgZm9yICg7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpCiAgICAgICAgICAg
ICBvdXQuYXBwZW5kKGJ5dGVjb2RlT2Zmc2V0ICsgaXRlci0+dmFsdWUuYnJhbmNoT2Zmc2V0KTsK
ICAgICAgICAgb3V0LmFwcGVuZChieXRlY29kZU9mZnNldCArIGN1cnJlbnRbMl0udS5vcGVyYW5k
KTsKQEAgLTgyLDcgKzk2LDggQEAgc3RhdGljIHZvaWQgZ2V0SnVtcFRhcmdldHNGb3JCeXRlY29k
ZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgSW50ZXJwcmV0ZXIqIGkKICAgICB9CiB9CiAK
LXZvaWQgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgVmVj
dG9yPHVuc2lnbmVkLCAzMj4mIG91dCkKK3RlbXBsYXRlPHR5cGVuYW1lIEJsb2NrLCB0eXBlbmFt
ZSBJbnN0cnVjdGlvbj4KK3ZvaWQgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0c0ludGVybmFsKEJs
b2NrKiBjb2RlQmxvY2ssIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQg
aW5zdHJ1Y3Rpb25Db3VudCwgVmVjdG9yPHVuc2lnbmVkLCAzMj4mIG91dCkKIHsKICAgICBBU1NF
UlQob3V0LmlzRW1wdHkoKSk7CiAgICAgCkBAIC05OCwxMCArMTEzLDggQEAgdm9pZCBjb21wdXRl
UHJlY2lzZUp1bXBUYXJnZXRzKENvZGVCbG9jayogY29kZUJsb2NrLCBWZWN0b3I8dW5zaWduZWQs
IDMyPiYgb3V0KQogICAgIH0KIAogICAgIEludGVycHJldGVyKiBpbnRlcnByZXRlciA9IGNvZGVC
bG9jay0+dm0oKS0+aW50ZXJwcmV0ZXI7Ci0gICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0Jl
Z2luID0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpOwotICAgIHVuc2lnbmVkIGlu
c3RydWN0aW9uQ291bnQgPSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLnNpemUoKTsKICAgICBm
b3IgKHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0ID0gMDsgYnl0ZWNvZGVPZmZzZXQgPCBpbnN0cnVj
dGlvbkNvdW50OykgewotICAgICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGludGVycHJldGVyLT5n
ZXRPcGNvZGVJRChpbnN0cnVjdGlvbnNCZWdpbltieXRlY29kZU9mZnNldF0udS5vcGNvZGUpOwor
ICAgICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGdldE9wY29kZUlEKGludGVycHJldGVyLCBpbnN0
cnVjdGlvbnNCZWdpbltieXRlY29kZU9mZnNldF0pOwogICAgICAgICBnZXRKdW1wVGFyZ2V0c0Zv
ckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9jaywgaW50ZXJwcmV0ZXIsIGluc3RydWN0aW9uc0JlZ2lu
LCBieXRlY29kZU9mZnNldCwgb3V0KTsKICAgICAgICAgYnl0ZWNvZGVPZmZzZXQgKz0gb3Bjb2Rl
TGVuZ3Roc1tvcGNvZGVJRF07CiAgICAgfQpAQCAtMTIzLDExICsxMzYsMjkgQEAgdm9pZCBjb21w
dXRlUHJlY2lzZUp1bXBUYXJnZXRzKENvZGVCbG9jayogY29kZUJsb2NrLCBWZWN0b3I8dW5zaWdu
ZWQsIDMyPiYgb3V0KQogICAgIG91dC5zaHJpbmtUb0ZpdCgpOwogfQogCi12b2lkIGZpbmRKdW1w
VGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCB1bnNpZ25lZCBi
eXRlY29kZU9mZnNldCwgVmVjdG9yPHVuc2lnbmVkLCAxPiYgb3V0KQordm9pZCBjb21wdXRlUHJl
Y2lzZUp1bXBUYXJnZXRzKENvZGVCbG9jayogY29kZUJsb2NrLCBWZWN0b3I8dW5zaWduZWQsIDMy
PiYgb3V0KQogewotICAgIEludGVycHJldGVyKiBpbnRlcnByZXRlciA9IGNvZGVCbG9jay0+dm0o
KS0+aW50ZXJwcmV0ZXI7Ci0gICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luID0gY29k
ZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpOwotICAgIGdldEp1bXBUYXJnZXRzRm9yQnl0
ZWNvZGVPZmZzZXQoY29kZUJsb2NrLCBpbnRlcnByZXRlciwgaW5zdHJ1Y3Rpb25zQmVnaW4sIGJ5
dGVjb2RlT2Zmc2V0LCBvdXQpOworICAgIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHNJbnRlcm5h
bChjb2RlQmxvY2ssIGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSwgY29kZUJsb2Nr
LT5pbnN0cnVjdGlvbnMoKS5zaXplKCksIG91dCk7Cit9CisKK3ZvaWQgY29tcHV0ZVByZWNpc2VK
dW1wVGFyZ2V0cyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9u
c0JlZ2luLCB1bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50LCBWZWN0b3I8dW5zaWduZWQsIDMyPiYg
b3V0KQoreworICAgIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHNJbnRlcm5hbChjb2RlQmxvY2ss
IGluc3RydWN0aW9uc0JlZ2luLCBpbnN0cnVjdGlvbkNvdW50LCBvdXQpOworfQorCit2b2lkIGNv
bXB1dGVQcmVjaXNlSnVtcFRhcmdldHMoVW5saW5rZWRDb2RlQmxvY2sqIGNvZGVCbG9jaywgVW5s
aW5rZWRJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGluc3RydWN0aW9u
Q291bnQsIFZlY3Rvcjx1bnNpZ25lZCwgMzI+JiBvdXQpCit7CisgICAgY29tcHV0ZVByZWNpc2VK
dW1wVGFyZ2V0c0ludGVybmFsKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb25zQmVnaW4sIGluc3RydWN0
aW9uQ291bnQsIG91dCk7Cit9CisKK3ZvaWQgZmluZEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZz
ZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwg
dW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIFZlY3Rvcjx1bnNpZ25lZCwgMT4mIG91dCkKK3sKKyAg
ICBnZXRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9jaywgY29kZUJsb2NrLT52
bSgpLT5pbnRlcnByZXRlciwgaW5zdHJ1Y3Rpb25zQmVnaW4sIGJ5dGVjb2RlT2Zmc2V0LCBvdXQp
OworfQorCit2b2lkIGZpbmRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KFVubGlua2VkQ29k
ZUJsb2NrKiBjb2RlQmxvY2ssIFVubGlua2VkSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2lu
LCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgVmVjdG9yPHVuc2lnbmVkLCAxPiYgb3V0KQorewor
ICAgIGdldEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoY29kZUJsb2NrLCBjb2RlQmxvY2st
PnZtKCktPmludGVycHJldGVyLCBpbnN0cnVjdGlvbnNCZWdpbiwgYnl0ZWNvZGVPZmZzZXQsIG91
dCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5oCmluZGV4IDg1MjQxM2Q3N2I3OTg5ODRi
MjdjZWYwZWQ2MmJjOTRjNjg5ZTIxMmMuLjZjOTRkMTJlNDUwNTE2NjdjNjU5YmY4MDQ1YWM3YzYy
ZTBmMjI0N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVj
aXNlSnVtcFRhcmdldHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJl
Y2lzZUp1bXBUYXJnZXRzLmgKQEAgLTI3LDEzICsyNywxNyBAQAogI2RlZmluZSBQcmVjaXNlSnVt
cFRhcmdldHNfaAogCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiVW5saW5rZWRD
b2RlQmxvY2suaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKIC8vIFJldHVybiBhIHNvcnRlZCBsaXN0
IG9mIGJ5dGVjb2RlIGluZGV4IHRoYXQgYXJlIHRoZSBkZXN0aW5hdGlvbiBvZiBhIGp1bXAuCiB2
b2lkIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMoQ29kZUJsb2NrKiwgVmVjdG9yPHVuc2lnbmVk
LCAzMj4mIG91dCk7Cit2b2lkIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMoQ29kZUJsb2NrKiwg
SW5zdHJ1Y3Rpb24qLCB1bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50LCBWZWN0b3I8dW5zaWduZWQs
IDMyPiYgb3V0KTsKK3ZvaWQgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhVbmxpbmtlZENvZGVC
bG9jayosIFVubGlua2VkSW5zdHJ1Y3Rpb24qLCB1bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50LCBW
ZWN0b3I8dW5zaWduZWQsIDMyPiYgb3V0KTsKIAotdm9pZCBmaW5kSnVtcFRhcmdldHNGb3JCeXRl
Y29kZU9mZnNldChDb2RlQmxvY2sqLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgVmVjdG9yPHVu
c2lnbmVkLCAxPiYgb3V0KTsKK3ZvaWQgZmluZEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQo
Q29kZUJsb2NrKiwgSW5zdHJ1Y3Rpb24qLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgVmVjdG9y
PHVuc2lnbmVkLCAxPiYgb3V0KTsKK3ZvaWQgZmluZEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZz
ZXQoVW5saW5rZWRDb2RlQmxvY2sqLCBVbmxpbmtlZEluc3RydWN0aW9uKiwgdW5zaWduZWQgYnl0
ZWNvZGVPZmZzZXQsIFZlY3Rvcjx1bnNpZ25lZCwgMT4mIG91dCk7CiAKIH0gLy8gbmFtZXNwYWNl
IEpTQwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5r
ZWRDb2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2Vk
Q29kZUJsb2NrLmNwcAppbmRleCAyOTlhYzY4MGQ5YTFkMWU1YTkwZDlmYWUxYTIyZjg0NGUyOTJl
M2UyLi41ZjUyOWNjZmQ5OTE5MGVlZmFhZmY0M2U3MzdiM2Y4MjE1YTA0ODU4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAK
QEAgLTM2Niw1ICszNjYsMzIgQEAgY29uc3QgVW5saW5rZWRJbnN0cnVjdGlvblN0cmVhbSYgVW5s
aW5rZWRDb2RlQmxvY2s6Omluc3RydWN0aW9ucygpIGNvbnN0CiAgICAgcmV0dXJuICptX3VubGlu
a2VkSW5zdHJ1Y3Rpb25zOwogfQogCitVbmxpbmtlZEhhbmRsZXJJbmZvKiBVbmxpbmtlZENvZGVC
bG9jazo6aGFuZGxlckZvckJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBS
ZXF1aXJlZEhhbmRsZXIgcmVxdWlyZWRIYW5kbGVyKQoreworICAgIHJldHVybiBoYW5kbGVyRm9y
SW5kZXgoYnl0ZWNvZGVPZmZzZXQsIHJlcXVpcmVkSGFuZGxlcik7Cit9CisKKy8vIEZJWE1FOiBD
b21wbGV0ZWx5IGR1cGxpY2F0ZS4KK1VubGlua2VkSGFuZGxlckluZm8qIFVubGlua2VkQ29kZUJs
b2NrOjpoYW5kbGVyRm9ySW5kZXgodW5zaWduZWQgaW5kZXgsIFJlcXVpcmVkSGFuZGxlciByZXF1
aXJlZEhhbmRsZXIpCit7CisgICAgaWYgKCFtX3JhcmVEYXRhKQorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKworICAgIFZlY3RvcjxVbmxpbmtlZEhhbmRsZXJJbmZvPiYgZXhjZXB0aW9uSGFuZGxl
cnMgPSBtX3JhcmVEYXRhLT5tX2V4Y2VwdGlvbkhhbmRsZXJzOworICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgZXhjZXB0aW9uSGFuZGxlcnMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgVW5saW5r
ZWRIYW5kbGVySW5mbyYgaGFuZGxlciA9IGV4Y2VwdGlvbkhhbmRsZXJzW2ldOworICAgICAgICBp
ZiAoKHJlcXVpcmVkSGFuZGxlciA9PSBSZXF1aXJlZEhhbmRsZXI6OkNhdGNoSGFuZGxlcikgJiYg
IWhhbmRsZXIuaXNDYXRjaEhhbmRsZXIoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAg
ICAgIC8vIEhhbmRsZXJzIGFyZSBvcmRlcmVkIGlubmVybW9zdCBmaXJzdCwgc28gdGhlIGZpcnN0
IGhhbmRsZXIgd2UgZW5jb3VudGVyCisgICAgICAgIC8vIHRoYXQgY29udGFpbnMgdGhlIHNvdXJj
ZSBhZGRyZXNzIGlzIHRoZSBjb3JyZWN0IGhhbmRsZXIgdG8gdXNlLgorICAgICAgICAvLyBUaGlz
IGluZGV4IHVzZWQgaXMgZWl0aGVyIHRoZSBCeXRlY29kZU9mZnNldCBvciBhIENhbGxTaXRlSW5k
ZXguCisgICAgICAgIGlmIChoYW5kbGVyLnN0YXJ0IDw9IGluZGV4ICYmIGhhbmRsZXIuZW5kID4g
aW5kZXgpCisgICAgICAgICAgICByZXR1cm4gJmhhbmRsZXI7CisgICAgfQorCisgICAgcmV0dXJu
IG51bGxwdHI7Cit9CisKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvVW5saW5rZWRDb2RlQmxvY2suaAppbmRleCA5MWZkY2E0OGMxZTM5ZThiZWZiMGM1ZmQ1NWZk
OWJkOTFjMWYzNzA3Li4yMWY1MWRmZTIwYzZiN2M5NTdkZTViYjUyMGZiYTQ4ZDUyMGM1MTUzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxv
Y2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxv
Y2suaApAQCAtNjksNyArNjksMTEgQEAgdHlwZWRlZiB1bnNpZ25lZCBVbmxpbmtlZE9iamVjdEFs
bG9jYXRpb25Qcm9maWxlOwogdHlwZWRlZiB1bnNpZ25lZCBVbmxpbmtlZExMSW50Q2FsbExpbmtJ
bmZvOwogCiBzdHJ1Y3QgVW5saW5rZWRTdHJpbmdKdW1wVGFibGUgewotICAgIHR5cGVkZWYgSGFz
aE1hcDxSZWZQdHI8U3RyaW5nSW1wbD4sIGludDMyX3Q+IFN0cmluZ09mZnNldFRhYmxlOworICAg
IHN0cnVjdCBPZmZzZXRMb2NhdGlvbiB7CisgICAgICAgIGludDMyX3QgYnJhbmNoT2Zmc2V0Owor
ICAgIH07CisKKyAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFN0cmluZ0ltcGw+LCBPZmZzZXRM
b2NhdGlvbj4gU3RyaW5nT2Zmc2V0VGFibGU7CiAgICAgU3RyaW5nT2Zmc2V0VGFibGUgb2Zmc2V0
VGFibGU7CiAKICAgICBpbmxpbmUgaW50MzJfdCBvZmZzZXRGb3JWYWx1ZShTdHJpbmdJbXBsKiB2
YWx1ZSwgaW50MzJfdCBkZWZhdWx0T2Zmc2V0KQpAQCAtNzgsNyArODIsNyBAQCBzdHJ1Y3QgVW5s
aW5rZWRTdHJpbmdKdW1wVGFibGUgewogICAgICAgICBTdHJpbmdPZmZzZXRUYWJsZTo6Y29uc3Rf
aXRlcmF0b3IgbG9jID0gb2Zmc2V0VGFibGUuZmluZCh2YWx1ZSk7CiAgICAgICAgIGlmIChsb2Mg
PT0gZW5kKQogICAgICAgICAgICAgcmV0dXJuIGRlZmF1bHRPZmZzZXQ7Ci0gICAgICAgIHJldHVy
biBsb2MtPnZhbHVlOworICAgICAgICByZXR1cm4gbG9jLT52YWx1ZS5icmFuY2hPZmZzZXQ7CiAg
ICAgfQogCiB9OwpAQCAtMTA2LDYgKzExMCw4IEBAIHN0cnVjdCBVbmxpbmtlZEluc3RydWN0aW9u
IHsKICAgICB9IHU7CiB9OwogCitjbGFzcyBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbjsKKwog
Y2xhc3MgVW5saW5rZWRDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKIHB1YmxpYzoKICAgICB0
eXBlZGVmIEpTQ2VsbCBCYXNlOwpAQCAtMTE1LDYgKzEyMSw4IEBAIGNsYXNzIFVubGlua2VkQ29k
ZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAKICAgICBlbnVtIHsgQ2FsbEZ1bmN0aW9uLCBBcHBs
eUZ1bmN0aW9uIH07CiAKKyAgICB0eXBlZGVmIFZlY3RvcjxVbmxpbmtlZEluc3RydWN0aW9uLCAw
LCBVbnNhZmVWZWN0b3JPdmVyZmxvdz4gVW5wYWNrZWRJbnN0cnVjdGlvbnM7CisKICAgICBib29s
IGlzQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2lzQ29uc3RydWN0b3I7IH0KICAgICBi
b29sIGlzU3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNTdHJpY3RNb2RlOyB9CiAgICAg
Ym9vbCB1c2VzRXZhbCgpIGNvbnN0IHsgcmV0dXJuIG1fdXNlc0V2YWw7IH0KQEAgLTIwNCw2ICsy
MTIsOSBAQCBjbGFzcyBVbmxpbmtlZENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgIHVu
c2lnbmVkIGp1bXBUYXJnZXQoaW50IGluZGV4KSBjb25zdCB7IHJldHVybiBtX2p1bXBUYXJnZXRz
W2luZGV4XTsgfQogICAgIHVuc2lnbmVkIGxhc3RKdW1wVGFyZ2V0KCkgY29uc3QgeyByZXR1cm4g
bV9qdW1wVGFyZ2V0cy5sYXN0KCk7IH0KIAorICAgIFVubGlua2VkSGFuZGxlckluZm8qIGhhbmRs
ZXJGb3JCeXRlY29kZU9mZnNldCh1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgUmVxdWlyZWRIYW5k
bGVyID0gUmVxdWlyZWRIYW5kbGVyOjpBbnlIYW5kbGVyKTsKKyAgICBVbmxpbmtlZEhhbmRsZXJJ
bmZvKiBoYW5kbGVyRm9ySW5kZXgodW5zaWduZWQsIFJlcXVpcmVkSGFuZGxlciA9IFJlcXVpcmVk
SGFuZGxlcjo6QW55SGFuZGxlcik7CisKICAgICBib29sIGlzQnVpbHRpbkZ1bmN0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9pc0J1aWx0aW5GdW5jdGlvbjsgfQogCiAgICAgQ29uc3RydWN0b3JLaW5k
IGNvbnN0cnVjdG9yS2luZCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PENvbnN0cnVjdG9y
S2luZD4obV9jb25zdHJ1Y3RvcktpbmQpOyB9CkBAIC0zNzQsNiArMzg1LDEyIEBAIGNsYXNzIFVu
bGlua2VkQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgVHJpU3RhdGUgZGlkT3B0aW1p
emUoKSBjb25zdCB7IHJldHVybiBtX2RpZE9wdGltaXplOyB9CiAgICAgdm9pZCBzZXREaWRPcHRp
bWl6ZShUcmlTdGF0ZSBkaWRPcHRpbWl6ZSkgeyBtX2RpZE9wdGltaXplID0gZGlkT3B0aW1pemU7
IH0KIAorICAgIFZlY3RvcjxGYXN0Qml0VmVjdG9yPiYgbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQo
KQorICAgIHsKKyAgICAgICAgY3JlYXRlUmFyZURhdGFJZk5lY2Vzc2FyeSgpOworICAgICAgICBy
ZXR1cm4gbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZDsKKyAgICB9CisKIHBy
b3RlY3RlZDoKICAgICBVbmxpbmtlZENvZGVCbG9jayhWTSosIFN0cnVjdHVyZSosIENvZGVUeXBl
LCBjb25zdCBFeGVjdXRhYmxlSW5mbyYsIERlYnVnZ2VyTW9kZSk7CiAgICAgflVubGlua2VkQ29k
ZUJsb2NrKCk7CkBAIC00NjAsNiArNDc3LDkgQEAgY2xhc3MgVW5saW5rZWRDb2RlQmxvY2sgOiBw
dWJsaWMgSlNDZWxsIHsKICAgICAgICAgVmVjdG9yPFVubGlua2VkU2ltcGxlSnVtcFRhYmxlPiBt
X3N3aXRjaEp1bXBUYWJsZXM7CiAgICAgICAgIFZlY3RvcjxVbmxpbmtlZFN0cmluZ0p1bXBUYWJs
ZT4gbV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzOwogCisgICAgICAgIC8vIEZJWE1FOiBXZSB3aWxs
IGRyb3AgdGhpcy4KKyAgICAgICAgVmVjdG9yPEZhc3RCaXRWZWN0b3I+IG1fbGl2ZUNhbGxlZUxv
Y2Fsc0F0WWllbGQ7CisKICAgICAgICAgVmVjdG9yPEV4cHJlc3Npb25SYW5nZUluZm86OkZhdFBv
c2l0aW9uPiBtX2V4cHJlc3Npb25JbmZvRmF0UG9zaXRpb25zOwogCiAgICAgICAgIHN0cnVjdCBU
eXBlUHJvZmlsZXJFeHByZXNzaW9uUmFuZ2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCBiYzJhZmM2
ZjhmYTFmYWZjOGIyYjZjMjU2NzEyY2IyN2YyNTA3OWJiLi43MGMyZDg0NDVhYTFlNTY5NmY1MzJl
YzBlZjdhNzQwNmU0ZWEzOWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAtMzIsNiArMzIsNyBAQAog
I2luY2x1ZGUgIkJ5dGVjb2RlR2VuZXJhdG9yLmgiCiAKICNpbmNsdWRlICJCdWlsdGluRXhlY3V0
YWJsZXMuaCIKKyNpbmNsdWRlICJCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5oIgogI2luY2x1
ZGUgIkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgi
CiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgpAQCAtMTU0LDYgKzE1NSwxMiBAQCBQYXJzZXJFcnJv
ciBCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUoKQogICAgICAgICBtX2NvZGVCbG9jay0+YWRk
RXhjZXB0aW9uSGFuZGxlcihpbmZvKTsKICAgICB9CiAgICAgCisKKyAgICBpZiAobV9jb2RlQmxv
Y2stPnBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yQm9keU1vZGUpIHsK
KyAgICAgICAgQnl0ZWNvZGVHcmFwaDxVbmxpbmtlZENvZGVCbG9jaz4gZ3JhcGgobV9jb2RlQmxv
Y2suZ2V0KCksIG1faW5zdHJ1Y3Rpb25zKTsKKyAgICAgICAgcGVyZm9ybUdlbmVyYXRvcmlmaWNh
dGlvbihncmFwaCwgbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlLmdldCgpLCBtX2dlbmVyYXRv
ckZyYW1lU3ltYm9sVGFibGVJbmRleCk7CisgICAgfQorCiAgICAgbV9jb2RlQmxvY2stPnNldElu
c3RydWN0aW9ucyhzdGQ6Om1ha2VfdW5pcXVlPFVubGlua2VkSW5zdHJ1Y3Rpb25TdHJlYW0+KG1f
aW5zdHJ1Y3Rpb25zKSk7CiAKICAgICBtX2NvZGVCbG9jay0+c2hyaW5rVG9GaXQoKTsKQEAgLTI3
Myw3ICsyODAsNyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZt
LCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAgICAgICAvLyAgICBmdW5j
dGlvbiAqZ2VuKGEsIGIgPSBoZWxsbygpKQogICAgICAgICAvLyAgICB7CiAgICAgICAgIC8vICAg
ICAgICByZXR1cm4gewotICAgICAgICAvLyAgICAgICAgICAgIEBnZW5lcmF0b3JOZXh0OiBmdW5j
dGlvbiAoQGdlbmVyYXRvciwgQGdlbmVyYXRvclN0YXRlLCBAZ2VuZXJhdG9yVmFsdWUsIEBnZW5l
cmF0b3JSZXN1bWVNb2RlKQorICAgICAgICAvLyAgICAgICAgICAgIEBnZW5lcmF0b3JOZXh0OiBm
dW5jdGlvbiAoQGdlbmVyYXRvciwgQGdlbmVyYXRvclN0YXRlLCBAZ2VuZXJhdG9yVmFsdWUsIEBn
ZW5lcmF0b3JSZXN1bWVNb2RlLCBAZ2VuZXJhdG9yRnJhbWUpCiAgICAgICAgIC8vICAgICAgICAg
ICAgewogICAgICAgICAvLyAgICAgICAgICAgICAgICBhcmd1bWVudHM7ICAvLyBUaGlzIGBhcmd1
bWVudHNgIHNob3VsZCByZWZlcmVuY2UgdG8gdGhlIGdlbidzIGFyZ3VtZW50cy4KICAgICAgICAg
Ly8gICAgICAgICAgICAgICAgLi4uCkBAIC01NTIsNiArNTU5LDkgQEAgQnl0ZWNvZGVHZW5lcmF0
b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25Ob2RlKiBmdW5jdGlvbk5vZGUs
IFVubGlua2UKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yQm9keU1vZGU6IHsK
ICAgICAgICAgLy8gfHRoaXN8IGlzIGFscmVhZHkgZmlsbGVkIGNvcnJlY3RseSBiZWZvcmUgaGVy
ZS4KICAgICAgICAgZW1pdExvYWQobV9uZXdUYXJnZXRSZWdpc3RlciwganNVbmRlZmluZWQoKSk7
CisKKyAgICAgICAgZW1pdE5ld0dlbmVyYXRvckZyYW1lKGdlbmVyYXRvckZyYW1lUmVnaXN0ZXIo
KSk7CisgICAgICAgIGVtaXRQdXRCeUlkKGdlbmVyYXRvclJlZ2lzdGVyKCksIHByb3BlcnR5TmFt
ZXMoKS5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JGcmFtZVByaXZhdGVOYW1lKCksIGdlbmVyYXRv
ckZyYW1lUmVnaXN0ZXIoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApAQCAtMzAyMSw2ICsz
MDMxLDIwIEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRTZXRGdW5jdGlvbk5hbWVJZk5l
ZWRlZChFeHByZXNzaW9uTm9kZSogdmFsdWVOb2RlLCBSCiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKG5hbWUtPmluZGV4KCkpOwogfQogCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdE5ld0dlbmVyYXRvckZyYW1lKFJlZ2lzdGVySUQqIGRzdCkKK3sKKyAgICBTeW1ib2xUYWJs
ZSogZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZSA9IFN5bWJvbFRhYmxlOjpjcmVhdGUoKm1fdm0p
OworICAgIFJlZ2lzdGVySUQqIGNvbnN0YW50U3ltYm9sVGFibGVSZWdpc3RlciA9IGFkZENvbnN0
YW50VmFsdWUoZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZSk7CisgICAgZW1pdE9wY29kZShvcF9j
cmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudCk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGRz
dC0+aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHNjb3BlUmVnaXN0ZXIoKS0+
aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGNvbnN0YW50U3ltYm9sVGFibGVS
ZWdpc3Rlci0+aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGFkZENvbnN0YW50
VmFsdWUoanNVbmRlZmluZWQoKSktPmluZGV4KCkpOworICAgIG1fZ2VuZXJhdG9yRnJhbWVTeW1i
b2xUYWJsZS5zZXQoKm1fdm0sIGdlbmVyYXRvckZyYW1lU3ltYm9sVGFibGUpOworICAgIG1fZ2Vu
ZXJhdG9yRnJhbWVTeW1ib2xUYWJsZUluZGV4ID0gY29uc3RhbnRTeW1ib2xUYWJsZVJlZ2lzdGVy
LT5pbmRleCgpOworICAgIHJldHVybiBkc3Q7Cit9CisKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0Q2FsbChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGZ1bmMsIEV4cGVj
dGVkRnVuY3Rpb24gZXhwZWN0ZWRGdW5jdGlvbiwgQ2FsbEFyZ3VtZW50cyYgY2FsbEFyZ3VtZW50
cywgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2
b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKQogewogICAgIHJldHVybiBl
bWl0Q2FsbChvcF9jYWxsLCBkc3QsIGZ1bmMsIGV4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVu
dHMsIGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCk7CkBAIC0zOTQzLDcgKzM5NjcsNyBAQCBz
dGF0aWMgdm9pZCBwcmVwYXJlSnVtcFRhYmxlRm9yU3RyaW5nU3dpdGNoKFVubGlua2VkU3RyaW5n
SnVtcFRhYmxlJiBqdW1wVGFibGUsCiAgICAgICAgIAogICAgICAgICBBU1NFUlQobm9kZXNbaV0t
PmlzU3RyaW5nKCkpOwogICAgICAgICBTdHJpbmdJbXBsKiBjbGF1c2UgPSBzdGF0aWNfY2FzdDxT
dHJpbmdOb2RlKj4obm9kZXNbaV0pLT52YWx1ZSgpLmltcGwoKTsKLSAgICAgICAganVtcFRhYmxl
Lm9mZnNldFRhYmxlLmFkZChjbGF1c2UsIGxhYmVsc1tpXS0+YmluZChzd2l0Y2hBZGRyZXNzLCBz
d2l0Y2hBZGRyZXNzICsgMykpOworICAgICAgICBqdW1wVGFibGUub2Zmc2V0VGFibGUuYWRkKGNs
YXVzZSwgVW5saW5rZWRTdHJpbmdKdW1wVGFibGU6Ok9mZnNldExvY2F0aW9uIHsgbGFiZWxzW2ld
LT5iaW5kKHN3aXRjaEFkZHJlc3MsIHN3aXRjaEFkZHJlc3MgKyAzKSB9KTsKICAgICB9CiB9CiAK
QEAgLTQ0NjAsNyArNDQ4NCw3IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRTYXZlKExh
YmVsKiBtZXJnZVBvaW50LCB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kCiB7CiAgICAgc2l6
ZV90IGJlZ2luID0gaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpOwogICAgIGVtaXRPcGNvZGUob3Bfc2F2
ZSk7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fZ2VuZXJhdG9yUmVnaXN0ZXItPmluZGV4
KCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChnZW5lcmF0b3JGcmFtZVJlZ2lzdGVyKCkt
PmluZGV4KCkpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChsaXZlQ2FsbGVlTG9jYWxzSW5k
ZXgpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChtZXJnZVBvaW50LT5iaW5kKGJlZ2luLCBp
bnN0cnVjdGlvbnMoKS5zaXplKCkpKTsKIH0KQEAgLTQ0NjksNyArNDQ5Myw3IEBAIHZvaWQgQnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXN1bWUoTGFiZWwqIG1lcmdlUG9pbnQsIHVuc2lnbmVkIGxp
dmVDYWxsZWVMb2NhbHNJCiB7CiAgICAgZW1pdEdlbmVyYXRvclN0YXRlTGFiZWwoKTsKICAgICBl
bWl0T3Bjb2RlKG9wX3Jlc3VtZSk7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fZ2VuZXJh
dG9yUmVnaXN0ZXItPmluZGV4KCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChnZW5lcmF0
b3JGcmFtZVJlZ2lzdGVyKCktPmluZGV4KCkpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChs
aXZlQ2FsbGVlTG9jYWxzSW5kZXgpOwogICAgIGVtaXRMYWJlbChtZXJnZVBvaW50KTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuaAppbmRleCBkNzk5YjE4OTQwYWQ4MjBjNmM4NGJkZjMyOGIxMzMyNjEzOTRiOGRkLi5l
YTlhNTZlZDUwODY2NDA4MTUxN2E0MjVjNTAwNTJmMTJjNmIzN2I1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCkBA
IC01MzMsNiArNTMzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVt
aXROZXdBcnJvd0Z1bmN0aW9uRXhwcmVzc2lvbihSZWdpc3RlcklEKiwgQXJyb3dGdW5jRXhwck5v
ZGUqKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdE5ld01ldGhvZERlZmluaXRpb24oUmVnaXN0
ZXJJRCogZHN0LCBNZXRob2REZWZpbml0aW9uTm9kZSopOwogICAgICAgICBSZWdpc3RlcklEKiBl
bWl0TmV3UmVnRXhwKFJlZ2lzdGVySUQqIGRzdCwgUmVnRXhwKik7CisgICAgICAgIFJlZ2lzdGVy
SUQqIGVtaXROZXdHZW5lcmF0b3JGcmFtZShSZWdpc3RlcklEKiBkc3QpOwogCiAgICAgICAgIHZv
aWQgZW1pdFNldEZ1bmN0aW9uTmFtZUlmTmVlZGVkKEV4cHJlc3Npb25Ob2RlKiB2YWx1ZU5vZGUs
IFJlZ2lzdGVySUQqIHZhbHVlLCBSZWdpc3RlcklEKiBuYW1lKTsKIApAQCAtNzA1LDYgKzcwNiw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBSZWdpc3RlcklEKiBnZW5lcmF0b3JTdGF0ZVJl
Z2lzdGVyKCkgeyByZXR1cm4gJm1fcGFyYW1ldGVyc1syXTsgfQogICAgICAgICBSZWdpc3RlcklE
KiBnZW5lcmF0b3JWYWx1ZVJlZ2lzdGVyKCkgeyByZXR1cm4gJm1fcGFyYW1ldGVyc1szXTsgfQog
ICAgICAgICBSZWdpc3RlcklEKiBnZW5lcmF0b3JSZXN1bWVNb2RlUmVnaXN0ZXIoKSB7IHJldHVy
biAmbV9wYXJhbWV0ZXJzWzRdOyB9CisgICAgICAgIFJlZ2lzdGVySUQqIGdlbmVyYXRvckZyYW1l
UmVnaXN0ZXIoKSB7IHJldHVybiAmbV9wYXJhbWV0ZXJzWzVdOyB9CiAKICAgICAgICAgQ29kZVR5
cGUgY29kZVR5cGUoKSBjb25zdCB7IHJldHVybiBtX2NvZGVUeXBlOyB9CiAKQEAgLTkzMiw2ICs5
MzQsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFZlY3RvcjxSZWZQdHI8Rm9ySW5Db250
ZXh0Pj4gbV9mb3JJbkNvbnRleHRTdGFjazsKICAgICAgICAgVmVjdG9yPFRyeUNvbnRleHQ+IG1f
dHJ5Q29udGV4dFN0YWNrOwogICAgICAgICBWZWN0b3I8UmVmUHRyPExhYmVsPj4gbV9nZW5lcmF0
b3JSZXN1bWVMYWJlbHM7CisKKyAgICAgICAgU3Ryb25nPFN5bWJvbFRhYmxlPiBtX2dlbmVyYXRv
ckZyYW1lU3ltYm9sVGFibGU7CisgICAgICAgIGludCBtX2dlbmVyYXRvckZyYW1lU3ltYm9sVGFi
bGVJbmRleCB7IDAgfTsKKwogICAgICAgICBlbnVtIEZ1bmN0aW9uVmFyaWFibGVUeXBlIDogdWlu
dDhfdCB7IE5vcm1hbEZ1bmN0aW9uVmFyaWFibGUsIEdsb2JhbEZ1bmN0aW9uVmFyaWFibGUgfTsK
ICAgICAgICAgVmVjdG9yPHN0ZDo6cGFpcjxGdW5jdGlvbk1ldGFkYXRhTm9kZSosIEZ1bmN0aW9u
VmFyaWFibGVUeXBlPj4gbV9mdW5jdGlvbnNUb0luaXRpYWxpemU7CiAgICAgICAgIGJvb2wgbV9u
ZWVkVG9Jbml0aWFsaXplQXJndW1lbnRzIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RIZWFwLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Fic3RyYWN0SGVhcC5oCmluZGV4IGFmZTEwYzQ5NjQzMTI5YzdiMTFlODIwYmU0
OWU2MDZlZjczODkxNjUuLjRkZWJmOTMyZTlhNGJhMmY3ZTVhNjg3MzRlYTJmOWU4MTAwMjA3ODQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RIZWFwLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEhlYXAuaApAQCAtNjks
NiArNjksOCBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oU2Nv
cGVQcm9wZXJ0aWVzKSBcCiAgICAgbWFjcm8oVHlwZWRBcnJheVByb3BlcnRpZXMpIFwKICAgICBt
YWNybyhIZWFwT2JqZWN0Q291bnQpIC8qIFVzZWQgdG8gcmVmbGVjdCB0aGUgZmFjdCB0aGF0IHNv
bWUgYWxsb2NhdGlvbnMgcmV2ZWFsIG9iamVjdCBpZGVudGl0eSAqL1wKKyAgICBtYWNybyhHZW5l
cmF0b3JMb2NhbHMpIFwKKyAgICBtYWNybyhHZW5lcmF0b3JMb2NhbENvdW50KSBcCiAgICAgbWFj
cm8oUmVnRXhwU3RhdGUpIFwKICAgICBtYWNybyhNYXRoRG90UmFuZG9tU3RhdGUpIFwKICAgICBt
YWNybyhJbnRlcm5hbFN0YXRlKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKaW5kZXggZWJkYzc5YzYwZjZm
MmY2ZDkwNjNlYTE2YzRjMjg2YzQ1NTNhMTAwMy4uYTNjZWZkZDNhZGI3ZTIxNTlmMjk4NDEzZmE0
YWVmNTExY2ExNjkyMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdB
YnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaApAQCAtMTkyNSw2ICsxOTI1LDEwIEBA
IGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZl
Y3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgY2FzZSBOZXdSZWdleHA6CiAgICAgICAgIGZv
ck5vZGUobm9kZSkuc2V0KG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYyktPnJlZ0V4cFN0cnVjdHVyZSgpKTsKICAgICAgICAgYnJlYWs7CisKKyAg
ICBjYXNlIE5ld0dlbmVyYXRvckZyYW1lOgorICAgICAgICBmb3JOb2RlKG5vZGUpLnNldChtX2dy
YXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5nZW5l
cmF0b3JGcmFtZVN0cnVjdHVyZSgpKTsKKyAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAg
ICBjYXNlIFRvVGhpczogewogICAgICAgICBBYnN0cmFjdFZhbHVlJiBzb3VyY2UgPSBmb3JOb2Rl
KG5vZGUtPmNoaWxkMSgpKTsKQEAgLTI4MzksNiArMjg0MywxNyBAQCBib29sIEFic3RyYWN0SW50
ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9i
YmVyTGltaQogICAgICAgICBmb3JOb2RlKG5vZGUpLm1ha2VIZWFwVG9wKCk7CiAgICAgICAgIGJy
ZWFrOwogCisgICAgY2FzZSBTZXRHZW5lcmF0b3JMb2NhbDoKKyAgICBjYXNlIFJlc2l6ZUdlbmVy
YXRvckxvY2FsczoKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIEdldEdlbmVyYXRvckxvY2Fs
OiB7CisgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYXR0ZW1wdCB0byBjb252ZXJ0IGl0IHRv
IGNvbnN0YW50LgorICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTUzMTgzCisgICAgICAgIGZvck5vZGUobm9kZSkubWFrZUJ5dGVjb2RlVG9wKCk7Cisg
ICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIGNhc2UgRm9yY2VPU1JFeGl0OgogICAgIGNhc2Ug
Q2hlY2tCYWRDZWxsOgogICAgICAgICBtX3N0YXRlLnNldElzVmFsaWQoZmFsc2UpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRleCBiYzIy
NDQ3YzEwYTdjYjhhYjQ0MDNlYmY1MWU3YTVlODJiYzgzYzdlLi5jZjlmMGVjZTE2OWMwZmUyNmQ3
NWI4NTYxOTNlOWNhZjliNTNiYWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIkRGR0Nh
cGFiaWxpdGllcy5oIgogI2luY2x1ZGUgIkRGR0Nsb2JiZXJpemUuaCIKICNpbmNsdWRlICJERkdD
bG9iYmVyc0V4aXRTdGF0ZS5oIgorI2luY2x1ZGUgIkRGR0dlbmVyYXRvckxvY2FsRGF0YS5oIgog
I2luY2x1ZGUgIkRGR0dyYXBoLmgiCiAjaW5jbHVkZSAiREZHSklUQ29kZS5oIgogI2luY2x1ZGUg
IkdldEJ5SWRTdGF0dXMuaCIKQEAgLTEwMDQsNiArMTAwNSwxMSBAQCBjbGFzcyBCeXRlQ29kZVBh
cnNlciB7CiAgICAgfQogCiAgICAgYm9vbCBuZWVkc0R5bmFtaWNMb29rdXAoUmVzb2x2ZVR5cGUs
IE9wY29kZUlEKTsKKworICAgIEdlbmVyYXRvckxvY2FsRGF0YSogbmV3R2VuZXJhdG9yTG9jYWxE
YXRhKCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX2dyYXBoLm1fZ2VuZXJhdG9yTG9jYWxEYXRh
LmFkZCgpOworICAgIH0KICAgICAKICAgICBWTSogbV92bTsKICAgICBDb2RlQmxvY2sqIG1fY29k
ZUJsb2NrOwpAQCAtMTA5Miw2ICsxMDk4LDExIEBAIGNsYXNzIEJ5dGVDb2RlUGFyc2VyIHsKICAg
ICAgICAgQ2FsbExpbmtJbmZvTWFwIG1fY2FsbExpbmtJbmZvczsKICAgICAgICAgU3R1YkluZm9N
YXAgbV9zdHViSW5mb3M7CiAgICAgICAgIEJ5VmFsSW5mb01hcCBtX2J5VmFsSW5mb3M7CisKKyAg
ICAgICAgLy8gU2luY2UgdGhlIG9wX3Jlc3VtZSBpcyBlbWl0dGVkIGFmdGVyIHRoZSBjb3JyZXNw
b25kaW5nIG9wX3NhdmUKKyAgICAgICAgLy8gYW5kIHRoZXJlIGlzIG5vIG90aGVyIG9wX3Jlc3Vt
ZSBhbmQgb3Bfc2F2ZSBiZXR3ZWVuIHRoZW0sCisgICAgICAgIC8vIHdlIGNhbiB0cmFjayB0aGVz
ZSBjb3JyZXNwb25kZW5jZSBieSBqdXN0IHRyYWNraW5nIGN1cnJlbnRseSBmb2N1c2luZyBvcF9z
YXZlLgorICAgICAgICBPcGVyYW5kczxHZW5lcmF0b3JMb2NhbERhdGEqPiBtX2dlbmVyYXRvckxv
Y2FsczsKICAgICAgICAgCiAgICAgICAgIC8vIERpZCB3ZSBzZWUgYW55IHJldHVybnM/IFdlIG5l
ZWQgdG8gaGFuZGxlIHRoZSAodW5jb21tb24gYnV0IG5lY2Vzc2FyeSkKICAgICAgICAgLy8gY2Fz
ZSB3aGVyZSBhIHByb2NlZHVyZSB0aGF0IGRvZXMgbm90IHJldHVybiB3YXMgaW5saW5lZC4KQEAg
LTM2NzYsNiArMzY4NywxMSBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2ln
bmVkIGxpbWl0KQogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfbmV3X3JlZ2V4cCk7CiAgICAg
ICAgIH0KIAorICAgICAgICBjYXNlIG9wX25ld19nZW5lcmF0b3JfZnJhbWU6IHsKKyAgICAgICAg
ICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCks
IGFkZFRvR3JhcGgoTmV3R2VuZXJhdG9yRnJhbWUsIE9wSW5mbyhjdXJyZW50SW5zdHJ1Y3Rpb25b
Ml0udS51bnNpZ25lZFZhbHVlKSkpOworICAgICAgICAgICAgTkVYVF9PUENPREUob3BfbmV3X2dl
bmVyYXRvcl9mcmFtZSk7CisgICAgICAgIH0KKwogICAgICAgICBjYXNlIG9wX2dldF9yZXN0X2xl
bmd0aDogewogICAgICAgICAgICAgSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUgPSB0
aGlzLT5pbmxpbmVDYWxsRnJhbWUoKTsKICAgICAgICAgICAgIE5vZGUqIGxlbmd0aDsKQEAgLTM3
MDMsNiArMzcxOSw0MSBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVk
IGxpbWl0KQogICAgICAgICAgICAgICAgIGFycmF5LCBhcnJheUxlbmd0aCk7CiAgICAgICAgICAg
ICBORVhUX09QQ09ERShvcF9jb3B5X3Jlc3QpOwogICAgICAgICB9CisKKyAgICAgICAgY2FzZSBv
cF9zYXZlOiB7CisgICAgICAgICAgICBOb2RlKiBmcmFtZSA9IGdldChWaXJ0dWFsUmVnaXN0ZXIo
Y3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCkpOworICAgICAgICAgICAgdW5zaWduZWQg
bGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUudW5zaWduZWRW
YWx1ZTsKKyAgICAgICAgICAgIGNvbnN0IEZhc3RCaXRWZWN0b3ImIGxpdmVuZXNzID0gbV9pbmxp
bmVTdGFja1RvcC0+bV9jb2RlQmxvY2stPmxpdmVDYWxsZWVMb2NhbHNBdFlpZWxkKGxpdmVDYWxs
ZWVMb2NhbHNJbmRleCk7CisKKyAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fZ2VuZXJh
dG9yTG9jYWxzID0gT3BlcmFuZHM8R2VuZXJhdG9yTG9jYWxEYXRhKj4obV9udW1Bcmd1bWVudHMs
IG1fbnVtTG9jYWxzKTsKKworICAgICAgICAgICAgYWRkVG9HcmFwaChSZXNpemVHZW5lcmF0b3JM
b2NhbHMsIE9wSW5mbyhsaXZlbmVzcy5iaXRDb3VudCgpKSwgZnJhbWUpOworICAgICAgICAgICAg
dW5zaWduZWQgZ2VuZXJhdG9yTG9jYWxJbmRleCA9IDA7CisgICAgICAgICAgICBsaXZlbmVzcy5m
b3JFYWNoU2V0Qml0KFsmXShzaXplX3QgaW5kZXgpIHsKKyAgICAgICAgICAgICAgICBWaXJ0dWFs
UmVnaXN0ZXIgb3BlcmFuZCA9IHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGluZGV4KTsKKyAgICAg
ICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgcmVtYXBwZWRPcGVyYW5kID0gbV9pbmxpbmVTdGFj
a1RvcC0+cmVtYXBPcGVyYW5kKG9wZXJhbmQpOworICAgICAgICAgICAgICAgIE5vZGUqIGxvY2Fs
ID0gZ2V0KG9wZXJhbmQpOworICAgICAgICAgICAgICAgIEdlbmVyYXRvckxvY2FsRGF0YSogZ2Vu
ZXJhdG9yTG9jYWxEYXRhID0gbmV3R2VuZXJhdG9yTG9jYWxEYXRhKCk7CisgICAgICAgICAgICAg
ICAgbV9pbmxpbmVTdGFja1RvcC0+bV9nZW5lcmF0b3JMb2NhbHMubG9jYWwocmVtYXBwZWRPcGVy
YW5kLnRvTG9jYWwoKSkgPSBnZW5lcmF0b3JMb2NhbERhdGE7CisgICAgICAgICAgICAgICAgYWRk
VG9HcmFwaChTZXRHZW5lcmF0b3JMb2NhbCwgT3BJbmZvKGdlbmVyYXRvckxvY2FsSW5kZXgrKyks
IE9wSW5mbyhnZW5lcmF0b3JMb2NhbERhdGEpLCBmcmFtZSwgbG9jYWwpOworICAgICAgICAgICAg
fSk7CisgICAgICAgICAgICBORVhUX09QQ09ERShvcF9zYXZlKTsKKyAgICAgICAgfQorCisgICAg
ICAgIGNhc2Ugb3BfcmVzdW1lOiB7CisgICAgICAgICAgICBOb2RlKiBmcmFtZSA9IGdldChWaXJ0
dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCkpOworICAgICAgICAg
ICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gY3VycmVudEluc3RydWN0aW9uWzJd
LnUudW5zaWduZWRWYWx1ZTsKKyAgICAgICAgICAgIGNvbnN0IEZhc3RCaXRWZWN0b3ImIGxpdmVu
ZXNzID0gbV9pbmxpbmVTdGFja1RvcC0+bV9jb2RlQmxvY2stPmxpdmVDYWxsZWVMb2NhbHNBdFlp
ZWxkKGxpdmVDYWxsZWVMb2NhbHNJbmRleCk7CisgICAgICAgICAgICB1bnNpZ25lZCBnZW5lcmF0
b3JMb2NhbEluZGV4ID0gMDsKKyAgICAgICAgICAgIGxpdmVuZXNzLmZvckVhY2hTZXRCaXQoWyZd
KHNpemVfdCBpbmRleCkgeworICAgICAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBvcGVyYW5k
ID0gdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaW5kZXgpOworICAgICAgICAgICAgICAgIFZpcnR1
YWxSZWdpc3RlciByZW1hcHBlZE9wZXJhbmQgPSBtX2lubGluZVN0YWNrVG9wLT5yZW1hcE9wZXJh
bmQob3BlcmFuZCk7CisgICAgICAgICAgICAgICAgR2VuZXJhdG9yTG9jYWxEYXRhKiBnZW5lcmF0
b3JMb2NhbERhdGEgPSBtX2lubGluZVN0YWNrVG9wLT5tX2dlbmVyYXRvckxvY2Fscy5sb2NhbChy
ZW1hcHBlZE9wZXJhbmQudG9Mb2NhbCgpKTsKKyAgICAgICAgICAgICAgICBzZXQob3BlcmFuZCwg
YWRkVG9HcmFwaChHZXRHZW5lcmF0b3JMb2NhbCwgT3BJbmZvKGdlbmVyYXRvckxvY2FsSW5kZXgr
KyksIE9wSW5mbyhnZW5lcmF0b3JMb2NhbERhdGEpLCBmcmFtZSkpOworICAgICAgICAgICAgfSk7
CisgICAgICAgICAgICBhZGRUb0dyYXBoKFJlc2l6ZUdlbmVyYXRvckxvY2FscywgT3BJbmZvKDAp
LCBmcmFtZSk7CisgICAgICAgICAgICBORVhUX09QQ09ERShvcF9yZXN1bWUpOworICAgICAgICB9
CiAgICAgICAgICAgICAKICAgICAgICAgLy8gPT09IEJpdHdpc2Ugb3BlcmF0aW9ucyA9PT0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCmluZGV4IDFh
MjM0ODI0MjgzYjBiOGNmNzM1YzUxMGFlMTI3MjQ1OTdkZTE1NzguLjljNWY0N2RjN2JmZTkxM2E1
OGUxMDcxZTFkMWFiYTY5ZjEyMDE3NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0NhcGFiaWxpdGllcy5jcHAKQEAgLTE5Miw2ICsxOTIsNyBAQCBDYXBhYmlsaXR5TGV2ZWwg
Y2FwYWJpbGl0eUxldmVsKE9wY29kZUlEIG9wY29kZUlELCBDb2RlQmxvY2sqIGNvZGVCbG9jaywg
SW5zdHJ1YwogICAgIGNhc2Ugb3BfbmV3X2FycmF5OgogICAgIGNhc2Ugb3BfbmV3X2FycmF5X3dp
dGhfc2l6ZToKICAgICBjYXNlIG9wX25ld19hcnJheV9idWZmZXI6CisgICAgY2FzZSBvcF9uZXdf
Z2VuZXJhdG9yX2ZyYW1lOgogICAgIGNhc2Ugb3Bfc3RyY2F0OgogICAgIGNhc2Ugb3BfdG9fcHJp
bWl0aXZlOgogICAgIGNhc2Ugb3BfdGhyb3c6CkBAIC0yNDAsNiArMjQxLDggQEAgQ2FwYWJpbGl0
eUxldmVsIGNhcGFiaWxpdHlMZXZlbChPcGNvZGVJRCBvcGNvZGVJRCwgQ29kZUJsb2NrKiBjb2Rl
QmxvY2ssIEluc3RydWMKICAgICBjYXNlIG9wX2xvZ19zaGFkb3dfY2hpY2tlbl90YWlsOgogICAg
IGNhc2Ugb3BfcHV0X3RvX3Njb3BlOgogICAgIGNhc2Ugb3BfcmVzb2x2ZV9zY29wZToKKyAgICBj
YXNlIG9wX3NhdmU6CisgICAgY2FzZSBvcF9yZXN1bWU6CiAgICAgICAgIHJldHVybiBDYW5Db21w
aWxlQW5kSW5saW5lOwogCiAgICAgY2FzZSBvcF9uZXdfcmVnZXhwOgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAppbmRleCA2YWUyZGYyMWM2MjgwYTYyNWQ0NjliYzU1
YTEyMGIzYjE2NDM0ZDc3Li5kZTVlODE4NWY5ZTVhNjBkNzgyZWMzNWRmZWNkMDljMThlZDU0YmU2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaApAQCAtMTA5OSw2
ICsxMDk5LDcgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgY29u
c3QgUmVhZEZ1bmN0b3ImIHJlYWQsIGNvbnN0IFdyaXRlRnUKIAogICAgIGNhc2UgTmV3T2JqZWN0
OgogICAgIGNhc2UgTmV3UmVnZXhwOgorICAgIGNhc2UgTmV3R2VuZXJhdG9yRnJhbWU6CiAgICAg
Y2FzZSBOZXdTdHJpbmdPYmplY3Q6CiAgICAgY2FzZSBQaGFudG9tTmV3T2JqZWN0OgogICAgIGNh
c2UgTWF0ZXJpYWxpemVOZXdPYmplY3Q6CkBAIC0xMTk5LDYgKzEyMDAsMjMgQEAgdm9pZCBjbG9i
YmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQs
IGNvbnN0IFdyaXRlRnUKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KKworICAgIGNhc2UgU2V0R2VuZXJhdG9y
TG9jYWw6IHsKKyAgICAgICAgcmVhZChHZW5lcmF0b3JMb2NhbENvdW50KTsKKyAgICAgICAgd3Jp
dGUoR2VuZXJhdG9yTG9jYWxzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGNhc2Ug
R2V0R2VuZXJhdG9yTG9jYWw6IHsKKyAgICAgICAgcmVhZChHZW5lcmF0b3JMb2NhbENvdW50KTsK
KyAgICAgICAgcmVhZChHZW5lcmF0b3JMb2NhbHMpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgY2FzZSBSZXNpemVHZW5lcmF0b3JMb2NhbHM6IHsKKyAgICAgICAgd3JpdGUoR2VuZXJh
dG9yTG9jYWxDb3VudCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAgICAgICAgIAogICAgIGNh
c2UgVGhyb3dSZWZlcmVuY2VFcnJvcjoKICAgICAgICAgd3JpdGUoU2lkZVN0YXRlKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcnNFeGl0U3RhdGUuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyc0V4aXRTdGF0ZS5jcHAKaW5k
ZXggODA5YTQ1ZDZmMWE2NDAxNTgxOWQ3MmUzZmE0ODFlNGVhYjMzNDc4Mi4uNmFhZmNiZmRhMzZl
MTY0NDZmZjc5NGVlODRjMzA5N2UyMjVhMGEyYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDbG9iYmVyc0V4aXRTdGF0ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDbG9iYmVyc0V4aXRTdGF0ZS5jcHAKQEAgLTUzLDEwICs1MywxNiBAQCBi
b29sIGNsb2JiZXJzRXhpdFN0YXRlKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICAgICAg
Ly8gZXhpdCBzdGF0ZS4KICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisgICAgY2FzZSBSZXNpemVH
ZW5lcmF0b3JMb2NhbHM6CisgICAgY2FzZSBTZXRHZW5lcmF0b3JMb2NhbDoKKyAgICBjYXNlIEdl
dEdlbmVyYXRvckxvY2FsOgorICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICBjYXNlIEFycmF5
aWZ5VG9TdHJ1Y3R1cmU6CiAgICAgY2FzZSBBcnJheWlmeToKICAgICBjYXNlIE5ld09iamVjdDoK
ICAgICBjYXNlIE5ld1JlZ2V4cDoKKyAgICBjYXNlIE5ld0dlbmVyYXRvckZyYW1lOgogICAgIGNh
c2UgTmV3U3RyaW5nT2JqZWN0OgogICAgIGNhc2UgUGhhbnRvbU5ld09iamVjdDoKICAgICBjYXNl
IE1hdGVyaWFsaXplTmV3T2JqZWN0OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdEb2VzR0MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0Mu
Y3BwCmluZGV4IGNhZjMwZTM2YTI2MDA0NjA2ZTVlMWUxNWFjZGYyMTgyYzE4ODdkMzYuLjQ5YjFk
YzhmY2YyNmFmOTBiYjEwYzkzNWQwMzkxYzA5NDQzYzViYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0RvZXNHQy5jcHAKQEAgLTI1MCw2ICsyNTAsOSBAQCBib29sIGRvZXNHQyhHcmFw
aCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBHZXREeW5hbWljVmFyOgogICAgIGNhc2Ug
UHV0RHluYW1pY1ZhcjoKICAgICBjYXNlIFJlc29sdmVTY29wZToKKyAgICBjYXNlIFNldEdlbmVy
YXRvckxvY2FsOgorICAgIGNhc2UgR2V0R2VuZXJhdG9yTG9jYWw6CisgICAgY2FzZSBSZXNpemVH
ZW5lcmF0b3JMb2NhbHM6CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGNhc2UgQ3JlYXRl
QWN0aXZhdGlvbjoKQEAgLTI2OCw2ICsyNzEsNyBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgs
IE5vZGUqIG5vZGUpCiAgICAgY2FzZSBOZXdBcnJheVdpdGhTaXplOgogICAgIGNhc2UgTmV3QXJy
YXlCdWZmZXI6CiAgICAgY2FzZSBOZXdSZWdleHA6CisgICAgY2FzZSBOZXdHZW5lcmF0b3JGcmFt
ZToKICAgICBjYXNlIE5ld1N0cmluZ09iamVjdDoKICAgICBjYXNlIE1ha2VSb3BlOgogICAgIGNh
c2UgTmV3RnVuY3Rpb246CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0ZpeHVwUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNl
LmNwcAppbmRleCA5NzQ1OTBhODhlZGQ4ZmVhZDY3ZTkwNmIyYTFkYzNkNWZmYTNkN2QwLi5mYmQy
OWMxZDNjZTIwNzlkZDc2YTdjZTRjOTNmZWQ4Mjg5MjU2YTU1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKQEAgLTE1MTksNiArMTUxOSwyNCBAQCBjbGFz
cyBGaXh1cFBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAKKyAgICAgICAgY2FzZSBTZXRHZW5lcmF0b3JMb2NhbDogeworICAgICAgICAgICAgZml4
RWRnZTxDZWxsVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBzcGVjdWxhdGVGb3JC
YXJyaWVyKG5vZGUtPmNoaWxkMigpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisK
KyAgICAgICAgY2FzZSBHZXRHZW5lcmF0b3JMb2NhbDogeworICAgICAgICAgICAgZml4RWRnZTxD
ZWxsVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAvLyBDdXJyZW50bHksIHdlIGFs
d2F5cyBzdG9yZSB0aGUgdmFsdWUgYXMgSlNWYWx1ZSBpbiB0aGUgR2VuZXJhdG9yRnJhbWUuCisg
ICAgICAgICAgICBub2RlLT5zZXRSZXN1bHQoTm9kZVJlc3VsdEpTKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBSZXNpemVHZW5lcmF0b3JMb2NhbHM6IHsK
KyAgICAgICAgICAgIGZpeEVkZ2U8Q2VsbFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KKwogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICAgICAgLy8g
SGF2ZSB0aGVzZSBuby1vcCBjYXNlcyBoZXJlIHRvIGVuc3VyZSB0aGF0IG5vYm9keSBmb3JnZXRz
IHRvIGFkZCBoYW5kbGVycyBmb3IgbmV3IG9wY29kZXMuCiAgICAgICAgIGNhc2UgU2V0QXJndW1l
bnQ6CkBAIC0xNTUzLDYgKzE1NzEsNyBAQCBjbGFzcyBGaXh1cFBoYXNlIDogcHVibGljIFBoYXNl
IHsKICAgICAgICAgY2FzZSBOZXdPYmplY3Q6CiAgICAgICAgIGNhc2UgTmV3QXJyYXlCdWZmZXI6
CiAgICAgICAgIGNhc2UgTmV3UmVnZXhwOgorICAgICAgICBjYXNlIE5ld0dlbmVyYXRvckZyYW1l
OgogICAgICAgICBjYXNlIERlbGV0ZUJ5SWQ6CiAgICAgICAgIGNhc2UgRGVsZXRlQnlWYWw6CiAg
ICAgICAgIGNhc2UgSXNKU0FycmF5OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdHZW5lcmF0b3JMb2NhbERhdGEuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHR2VuZXJhdG9yTG9jYWxEYXRhLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2VhZjFhYmMwNWI3ODM4NTQ3YzBi
N2FlYmVkZmY2MDRjY2I1ZmQxMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHR2VuZXJhdG9yTG9jYWxEYXRhLmgKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNiBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIERG
R0dlbmVyYXRvckxvY2FsRGF0YV9oCisjZGVmaW5lIERGR0dlbmVyYXRvckxvY2FsRGF0YV9oCisK
KyNpZiBFTkFCTEUoREZHX0pJVCkKKworI2luY2x1ZGUgIkRGR0NvbW1vbi5oIgorI2luY2x1ZGUg
IlNwZWN1bGF0ZWRUeXBlLmgiCisjaW5jbHVkZSAiVmlydHVhbFJlZ2lzdGVyLmgiCisKK25hbWVz
cGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKKworCitjbGFzcyBHZW5lcmF0b3JMb2NhbERhdGEg
eworcHVibGljOgorICAgIGJvb2wgcHJlZGljdChTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIG1lcmdlU3BlY3VsYXRpb24obV9wcmVkaWN0aW9uLCBwcmVk
aWN0aW9uKTsKKyAgICB9CisKKyAgICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uKCkKKyAgICB7
CisgICAgICAgIHJldHVybiBtX3ByZWRpY3Rpb247CisgICAgfQorCitwcml2YXRlOgorICAgIFNw
ZWN1bGF0ZWRUeXBlIG1fcHJlZGljdGlvbiB7IFNwZWNOb25lIH07Cit9OworCit9IH0gLy8gbmFt
ZXNwYWNlIEpTQzo6REZHCisKKyNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKKworI2VuZGlmIC8v
IERGR1ZhcmlhYmxlQWNjZXNzRGF0YV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0dyYXBoLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgK
aW5kZXggMDIxYjBlYzgzZTNmZWJmNWNjNTNkN2U5YjYyMWE0YTBjZjdhYWNmMC4uMzFkZTJjMTA2
NDEyNTVhNmRkOTk1ZjczYmQ5YzkyZDdlOTc0MGYxMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHR3JhcGguaApAQCAtNjMsNiArNjMsNyBAQCBjbGFzcyBDb250cm9sRXF1aXZhbGVuY2VBbmFs
eXNpczsKIGNsYXNzIERvbWluYXRvcnM7CiBjbGFzcyBOYXR1cmFsTG9vcHM7CiBjbGFzcyBQcmVQ
b3N0TnVtYmVyaW5nOworY2xhc3MgR2VuZXJhdG9yTG9jYWxEYXRhOwogCiAjZGVmaW5lIERGR19O
T0RFX0RPX1RPX0NISUxEUkVOKGdyYXBoLCBub2RlLCB0aGluZ1RvRG8pIGRvIHsgICAgICAgICAg
ICBcCiAgICAgICAgIE5vZGUqIF9ub2RlID0gKG5vZGUpOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCkBAIC04NzUsNiArODc2LDcgQEAgY2xhc3MgR3JhcGggOiBw
dWJsaWMgdmlydHVhbCBTY2FubmFibGUgewogICAgIEJhZzxDYWxsVmFyYXJnc0RhdGE+IG1fY2Fs
bFZhcmFyZ3NEYXRhOwogICAgIEJhZzxMb2FkVmFyYXJnc0RhdGE+IG1fbG9hZFZhcmFyZ3NEYXRh
OwogICAgIEJhZzxTdGFja0FjY2Vzc0RhdGE+IG1fc3RhY2tBY2Nlc3NEYXRhOworICAgIEJhZzxH
ZW5lcmF0b3JMb2NhbERhdGE+IG1fZ2VuZXJhdG9yTG9jYWxEYXRhOwogICAgIEJhZzxMYXp5SlNW
YWx1ZT4gbV9sYXp5SlNWYWx1ZXM7CiAgICAgVmVjdG9yPElubGluZVZhcmlhYmxlRGF0YSwgND4g
bV9pbmxpbmVWYXJpYWJsZURhdGE7CiAgICAgSGFzaE1hcDxDb2RlQmxvY2sqLCBzdGQ6OnVuaXF1
ZV9wdHI8RnVsbEJ5dGVjb2RlTGl2ZW5lc3M+PiBtX2J5dGVjb2RlTGl2ZW5lc3M7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNwcAppbmRleCA1NzBiMTBhYzQzMmM4NDQ3YjFj
ODIzNTVmMWIyOWRjZDMzOTU5NDVjLi5iMWQ1OWNiNWZiMGI4ZmMwMjIzMDAyMTgzOTU2ZTE3Nzkw
ZmEzNzQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAKQEAgLTkw
LDYgKzkwLDkgQEAgRXhpdE1vZGUgbWF5RXhpdEltcGwoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2Rl
LCBTdGF0ZVR5cGUmIHN0YXRlKQogICAgIGNhc2UgUHV0QnlPZmZzZXQ6CiAgICAgY2FzZSBQdXRD
bG9zdXJlVmFyOgogICAgIGNhc2UgUmVjb3JkUmVnRXhwQ2FjaGVkUmVzdWx0OgorICAgIGNhc2Ug
UmVzaXplR2VuZXJhdG9yTG9jYWxzOgorICAgIGNhc2UgU2V0R2VuZXJhdG9yTG9jYWw6CisgICAg
Y2FzZSBHZXRHZW5lcmF0b3JMb2NhbDoKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIFN0ckNh
dDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKaW5kZXggM2JmM2IyYzcxYWE0ZTZiNTBm
ODUxMGQzODAyNjBjYjk5YWFhN2Q5ZC4uZTFkZTA5NGRlYTJmZTdkZGNmNDA1ZWM1YWE2NjI1ZDc1
ZTRjOWE0NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKQEAgLTM2LDYgKzM2LDcg
QEAKICNpbmNsdWRlICJERkdBcnJheU1vZGUuaCIKICNpbmNsdWRlICJERkdDb21tb24uaCIKICNp
bmNsdWRlICJERkdFcG9jaC5oIgorI2luY2x1ZGUgIkRGR0dlbmVyYXRvckxvY2FsRGF0YS5oIgog
I2luY2x1ZGUgIkRGR0xhenlKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiREZHTXVsdGlHZXRCeU9mZnNl
dERhdGEuaCIKICNpbmNsdWRlICJERkdOb2RlRmxhZ3MuaCIKQEAgLTk0NiwxMiArOTQ3LDc4IEBA
IHN0cnVjdCBOb2RlIHsKICAgICAgICAgfQogICAgIH0KIAorICAgIGJvb2wgaGFzR2VuZXJhdG9y
TG9jYWxzU2l6ZSgpCisgICAgeworICAgICAgICBzd2l0Y2ggKG9wKCkpIHsKKyAgICAgICAgY2Fz
ZSBOZXdHZW5lcmF0b3JGcmFtZToKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorCiAg
ICAgdW5zaWduZWQgZ2V0UHV0SW5mbygpCiAgICAgewogICAgICAgICBBU1NFUlQoaGFzR2V0UHV0
SW5mbygpKTsKICAgICAgICAgcmV0dXJuIG1fb3BJbmZvMjsKICAgICB9CiAKKyAgICB1bnNpZ25l
ZCBnZW5lcmF0b3JMb2NhbHNTaXplKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChoYXNHZW5lcmF0
b3JMb2NhbHNTaXplKCkpOworICAgICAgICByZXR1cm4gbV9vcEluZm87CisgICAgfQorCisgICAg
Ym9vbCBoYXNHZW5lcmF0b3JMb2NhbEluZGV4KCkKKyAgICB7CisgICAgICAgIHN3aXRjaCAob3Ao
KSkgeworICAgICAgICBjYXNlIFNldEdlbmVyYXRvckxvY2FsOgorICAgICAgICBjYXNlIEdldEdl
bmVyYXRvckxvY2FsOgorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB1bnNp
Z25lZCBnZW5lcmF0b3JMb2NhbEluZGV4KCkKKyAgICB7CisgICAgICAgIEFTU0VSVChoYXNHZW5l
cmF0b3JMb2NhbEluZGV4KCkpOworICAgICAgICByZXR1cm4gbV9vcEluZm87CisgICAgfQorCisg
ICAgYm9vbCBoYXNHZW5lcmF0b3JMb2NhbERhdGEoKQorICAgIHsKKyAgICAgICAgc3dpdGNoIChv
cCgpKSB7CisgICAgICAgIGNhc2UgU2V0R2VuZXJhdG9yTG9jYWw6CisgICAgICAgIGNhc2UgR2V0
R2VuZXJhdG9yTG9jYWw6CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIEdl
bmVyYXRvckxvY2FsRGF0YSogZ2VuZXJhdG9yTG9jYWxEYXRhKCkKKyAgICB7CisgICAgICAgIEFT
U0VSVChoYXNHZW5lcmF0b3JMb2NhbERhdGEoKSk7CisgICAgICAgIHJldHVybiByZWludGVycHJl
dF9jYXN0PEdlbmVyYXRvckxvY2FsRGF0YSo+KG1fb3BJbmZvMik7CisgICAgfQorCisgICAgYm9v
bCBoYXNHZW5lcmF0b3JGcmFtZUxvY2FscygpCisgICAgeworICAgICAgICBzd2l0Y2ggKG9wKCkp
IHsKKyAgICAgICAgY2FzZSBSZXNpemVHZW5lcmF0b3JMb2NhbHM6CisgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIHVuc2lnbmVkIGdlbmVyYXRvckZyYW1lTG9jYWxzKCkKKyAg
ICB7CisgICAgICAgIEFTU0VSVChoYXNHZW5lcmF0b3JGcmFtZUxvY2FscygpKTsKKyAgICAgICAg
cmV0dXJuIG1fb3BJbmZvOworICAgIH0KKwogICAgIGJvb2wgaGFzQWNjZXNzb3JBdHRyaWJ1dGVz
KCkKICAgICB7CiAgICAgICAgIHN3aXRjaCAob3AoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdOb2RlVHlwZS5oCmluZGV4IGY5M2IzYmYxNDIwMGNmMDQ1ZTY4YTY0MWU3ZDZiMDAxN2M3
NGYxMzcuLjVkNDA1YzJmYzhmYzliZDdkNmNiMmU2OTM0NjczMDA5MzAxNWRmYTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKQEAgLTgyLDYgKzgyLDEwIEBAIG5hbWVz
cGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhGbHVzaCwgTm9kZU11c3RHZW5l
cmF0ZSkgXAogICAgIG1hY3JvKFBoYW50b21Mb2NhbCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAg
IFwKKyAgICBtYWNybyhTZXRHZW5lcmF0b3JMb2NhbCwgTm9kZU11c3RHZW5lcmF0ZSkgXAorICAg
IG1hY3JvKEdldEdlbmVyYXRvckxvY2FsLCBOb2RlUmVzdWx0SlMpIFwKKyAgICBtYWNybyhSZXNp
emVHZW5lcmF0b3JMb2NhbHMsIE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBcCiAgICAgLyogSGlu
dCB0aGF0IHRoaXMgaXMgd2hlcmUgYnl0ZWNvZGUgdGhpbmtzIGlzIGEgZ29vZCBwbGFjZSB0byBP
U1IuIE5vdGUgdGhhdCB0aGlzICovXAogICAgIC8qIHdpbGwgZXhpc3QgZXZlbiBpbiBpbmxpbmVk
IGxvb3BzLiBUaGlzIGhhcyBubyBleGVjdXRpb24gc2VtYW50aWNzIGJ1dCBpdCBtdXN0ICovXAog
ICAgIC8qIHN1cnZpdmUgYWxsIERDRS4gV2UgdHJlYXQgdGhpcyBhcyBiZWluZyBhIGNhbi1leGl0
IGJlY2F1c2UgdGllci11cCB0byBGVEwgbWF5ICovXApAQCAtMjg4LDYgKzI5Miw3IEBAIG5hbWVz
cGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhOZXdBcnJheUJ1ZmZlciwgTm9k
ZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oTmV3VHlwZWRBcnJheSwgTm9kZVJlc3VsdEpTIHwgTm9k
ZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKE5ld1JlZ2V4cCwgTm9kZVJlc3VsdEpTKSBcCisg
ICAgbWFjcm8oTmV3R2VuZXJhdG9yRnJhbWUsIE5vZGVSZXN1bHRKUykgXAogICAgIC8qIFJlc3Qg
UGFyYW1ldGVyICovXAogICAgIG1hY3JvKEdldFJlc3RMZW5ndGgsIE5vZGVSZXN1bHRJbnQzMikg
XAogICAgIG1hY3JvKENvcHlSZXN0LCBOb2RlTXVzdEdlbmVyYXRlKSBcCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAppbmRleCA2OWExNmViNWRhNDM1NWJjNzky
NWM1ZGZkY2IwNjIwMjNlOTk2NTAyLi5kMGRmM2MyMWRmZjBjNjBlZWE2MWE0MWFjYTY5Yjc0YmY5
Y2M3ZWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlv
bnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAK
QEAgLTQyLDggKzQyLDkgQEAKICNpbmNsdWRlICJEaXJlY3RBcmd1bWVudHMuaCIKICNpbmNsdWRl
ICJGVExGb3JPU1JFbnRyeUpJVENvZGUuaCIKICNpbmNsdWRlICJGVExPU1JFbnRyeS5oIgotI2lu
Y2x1ZGUgIkhvc3RDYWxsUmV0dXJuVmFsdWUuaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JGcmFtZS5o
IgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgorI2luY2x1ZGUgIkhvc3RDYWxsUmV0dXJuVmFs
dWUuaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1
ZGUgIkpJVEV4Y2VwdGlvbnMuaCIKQEAgLTk4OSw2ICs5OTAsMTEgQEAgY2hhciogSklUX09QRVJB
VElPTiBvcGVyYXRpb25OZXdGbG9hdDY0QXJyYXlXaXRoT25lQXJndW1lbnQoCiAgICAgcmV0dXJu
IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dp
dGhBcmd1bWVudHM8SlNGbG9hdDY0QXJyYXk+KGV4ZWMsIHN0cnVjdHVyZSwgZW5jb2RlZFZhbHVl
LCAwLCBOdWxsb3B0KSk7CiB9CiAKK2NoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3R2Vu
ZXJhdG9yRnJhbWUoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgaW50MzJf
dCBudW1iZXJPZkNhbGxlZUxvY2FscykKK3sKKyAgICByZXR1cm4gYml0d2lzZV9jYXN0PGNoYXIq
PihHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlKGV4ZWMtPnZtKCksIHN0cnVjdHVyZSwgbnVtYmVyT2ZD
YWxsZWVMb2NhbHMpKTsKK30KKwogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0
ZUFjdGl2YXRpb25EaXJlY3QoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
SlNTY29wZSogc2NvcGUsIFN5bWJvbFRhYmxlKiB0YWJsZSwgRW5jb2RlZEpTVmFsdWUgaW5pdGlh
bFZhbHVlRW5jb2RlZCkKIHsKICAgICBKU1ZhbHVlIGluaXRpYWxWYWx1ZSA9IEpTVmFsdWU6OmRl
Y29kZShpbml0aWFsVmFsdWVFbmNvZGVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
cGVyYXRpb25zLmgKaW5kZXggZmJjODYyZmUxZWE4NDZkMmY3YzNmYTI3Mjc2ZTgzZDA2MWI4ZjIy
Yi4uMmY4ZmI0ZjZlZGU2YjIzMDAwNmUwZGIxZGY3NmQ2YjIzYmRkZTYzYSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKQEAgLTgzLDYgKzgzLDcgQEAgY2hhciog
SklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdGbG9hdDMyQXJyYXlXaXRoU2l6ZShFeGVjU3RhdGUq
LCBTdHJ1Y3R1cmUqLCBpbnQKIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3RmxvYXQz
MkFycmF5V2l0aE9uZUFyZ3VtZW50KEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSosIEVuY29kZWRKU1Zh
bHVlKSBXVEZfSU5URVJOQUw7CiBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Zsb2F0
NjRBcnJheVdpdGhTaXplKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSosIGludDMyX3QpIFdURl9JTlRF
Uk5BTDsKIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3RmxvYXQ2NEFycmF5V2l0aE9u
ZUFyZ3VtZW50KEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSosIEVuY29kZWRKU1ZhbHVlKSBXVEZfSU5U
RVJOQUw7CitjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0dlbmVyYXRvckZyYW1lKEV4
ZWNTdGF0ZSosIFN0cnVjdHVyZSosIGludDMyX3QpIFdURl9JTlRFUk5BTDsKIHZvaWQgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbFN0cmljdChFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkQmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFByb3BlcnR5LCBFbmNvZGVkSlNW
YWx1ZSBlbmNvZGVkVmFsdWUpIFdURl9JTlRFUk5BTDsKIHZvaWQgSklUX09QRVJBVElPTiBvcGVy
YXRpb25QdXRCeVZhbE5vblN0cmljdChFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
QmFzZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFByb3BlcnR5LCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpIFdURl9JTlRFUk5BTDsKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRC
eVZhbENlbGxTdHJpY3QoRXhlY1N0YXRlKiwgSlNDZWxsKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFByb3BlcnR5LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpIFdURl9JTlRFUk5BTDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0
aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJv
cGFnYXRpb25QaGFzZS5jcHAKaW5kZXggYTJkYmU0NDRiNmVkMzcxYjAwNTljMzgwYTg3ZGRhOWM2
MTY3YzNlOS4uY2MwMDc0MjU3YmVjYTg2M2EzMTQ3MmU0NGQyNDA3ZDM4NWVkYjI4MSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25Q
aGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJv
cGFnYXRpb25QaGFzZS5jcHAKQEAgLTE2OCw2ICsxNjgsMjQgQEAgY2xhc3MgUHJlZGljdGlvblBy
b3BhZ2F0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KIAorICAgICAgICBjYXNlIFNldEdlbmVyYXRvckxvY2FsOiB7CisgICAgICAgICAgICBH
ZW5lcmF0b3JMb2NhbERhdGEqIGdlbmVyYXRvckxvY2FsRGF0YSA9IG5vZGUtPmdlbmVyYXRvckxv
Y2FsRGF0YSgpOworICAgICAgICAgICAgY2hhbmdlZCB8PSBnZW5lcmF0b3JMb2NhbERhdGEtPnBy
ZWRpY3Qobm9kZS0+Y2hpbGQyKCktPnByZWRpY3Rpb24oKSk7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorCisgICAgICAgIGNhc2UgR2V0R2VuZXJhdG9yTG9jYWw6IHsKKyAgICAgICAg
ICAgIEdlbmVyYXRvckxvY2FsRGF0YSogdmFyaWFibGUgPSBub2RlLT5nZW5lcmF0b3JMb2NhbERh
dGEoKTsKKyAgICAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24gPSB2YXJpYWJsZS0+
cHJlZGljdGlvbigpOworICAgICAgICAgICAgLy8gV2UgYWx3YXlzIHN0b3JlIHRoZSB2YWx1ZSBp
biBHZW5lcmF0b3JMb2NhbCBhcyBGb3JtYXRKU1ZhbHVlLgorICAgICAgICAgICAgLy8gU28gZG91
YmxlIHZhbHVlIGlzIGJldHRlciB0aGFuIEludDUyIHZhbHVlLgorICAgICAgICAgICAgaWYgKGVu
YWJsZUludDUyKCkgJiYgKHByZWRpY3Rpb24gJiBTcGVjSW50NTJPbmx5KSkKKyAgICAgICAgICAg
ICAgICBwcmVkaWN0aW9uID0gKHByZWRpY3Rpb24gfCBTcGVjQW55SW50QXNEb3VibGUpICYgflNw
ZWNJbnQ1Mk9ubHk7CisgICAgICAgICAgICBpZiAocHJlZGljdGlvbikKKyAgICAgICAgICAgICAg
ICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihwcmVkaWN0aW9uKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICB9CisKICAgICAgICAgY2FzZSBVSW50MzJUb051bWJlcjogewogICAgICAg
ICAgICAgaWYgKG5vZGUtPmNhblNwZWN1bGF0ZUludDMyKG1fcGFzcykpCiAgICAgICAgICAgICAg
ICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oU3BlY0ludDMyT25seSk7CkBAIC04NDksNyAr
ODY3LDggQEAgY2xhc3MgUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2Ug
ewogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIAotICAgICAgICBj
YXNlIENyZWF0ZUFjdGl2YXRpb246IHsKKyAgICAgICAgY2FzZSBDcmVhdGVBY3RpdmF0aW9uOgor
ICAgICAgICBjYXNlIE5ld0dlbmVyYXRvckZyYW1lOiB7CiAgICAgICAgICAgICBzZXRQcmVkaWN0
aW9uKFNwZWNPYmplY3RPdGhlcik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAt
MTA2NCw2ICsxMDgzLDcgQEAgY2xhc3MgUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UgOiBwdWJs
aWMgUGhhc2UgewogICAgICAgICBjYXNlIEZvcndhcmRWYXJhcmdzOgogICAgICAgICBjYXNlIENv
cHlSZXN0OgogICAgICAgICBjYXNlIFB1dER5bmFtaWNWYXI6CisgICAgICAgIGNhc2UgUmVzaXpl
R2VuZXJhdG9yTG9jYWxzOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICAg
ICAgLy8gVGhpcyBnZXRzIGlnbm9yZWQgYmVjYXVzZSBpdCBvbmx5IHByZXRlbmRzIHRvIHByb2R1
Y2UgYSB2YWx1ZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2Fm
ZVRvRXhlY3V0ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRl
LmgKaW5kZXggYzFhM2JiZTNmZmRhNzliYTA2N2JkNzA2ZGU2NGFjYTI2ZjA3YTE3OC4uNmE2ZGY3
Zjc4YzlmZWY2NTU3ZWJjODQ1MzNlZGRmM2RlYjFhNDcwYSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKQEAgLTI1MCw2ICsyNTAsNyBAQCBib29sIHNh
ZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgsIE5vZGUq
IG5vZGUpCiAgICAgY2FzZSBOZXdBcnJheVdpdGhTaXplOgogICAgIGNhc2UgTmV3QXJyYXlCdWZm
ZXI6CiAgICAgY2FzZSBOZXdSZWdleHA6CisgICAgY2FzZSBOZXdHZW5lcmF0b3JGcmFtZToKICAg
ICBjYXNlIFByb2ZpbGVUeXBlOgogICAgIGNhc2UgUHJvZmlsZUNvbnRyb2xGbG93OgogICAgIGNh
c2UgQ2hlY2tUeXBlSW5mb0ZsYWdzOgpAQCAtMzQ2LDYgKzM0Nyw5IEBAIGJvb2wgc2FmZVRvRXhl
Y3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3RhdGUsIEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkK
ICAgICBjYXNlIEdldE15QXJndW1lbnRCeVZhbE91dE9mQm91bmRzOgogICAgIGNhc2UgRm9yd2Fy
ZFZhcmFyZ3M6CiAgICAgY2FzZSBDb3B5UmVzdDoKKyAgICBjYXNlIFNldEdlbmVyYXRvckxvY2Fs
OgorICAgIGNhc2UgR2V0R2VuZXJhdG9yTG9jYWw6CisgICAgY2FzZSBSZXNpemVHZW5lcmF0b3JM
b2NhbHM6CiAgICAgY2FzZSBTdHJpbmdSZXBsYWNlOgogICAgIGNhc2UgU3RyaW5nUmVwbGFjZVJl
Z0V4cDoKICAgICBjYXNlIEdldFJlZ0V4cE9iamVjdExhc3RJbmRleDoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggZjczOTFkYzI4MDMy
YWQ0MjVlYWM4ODEwOGIwZjVkZTU1YjkxMWVkZi4uZjhjN2IyYmE0ZTYwODVkNzlhZjZmZjlhZTIz
ZThhNDgzNTdkZTQ1OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5jcHAKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJERkdTYW5lU3RyaW5n
R2V0QnlWYWxTbG93UGF0aEdlbmVyYXRvci5oIgogI2luY2x1ZGUgIkRGR1Nsb3dQYXRoR2VuZXJh
dG9yLmgiCiAjaW5jbHVkZSAiRGlyZWN0QXJndW1lbnRzLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9y
RnJhbWUuaCIKICNpbmNsdWRlICJKSVRBZGRHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJKSVRCaXRB
bmRHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJKSVRCaXRPckdlbmVyYXRvci5oIgpAQCAtNjg3Niw2
ICs2ODc3LDQyIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdTdHJpbmdPYmplY3Qo
Tm9kZSogbm9kZSkKICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiB9CiAKK3ZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdHZW5lcmF0b3JGcmFtZShOb2RlKiBub2RlKQorewor
ICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2ppdC5ncmFwaCgpLmdsb2JhbE9i
amVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAgIFN0cnVjdHVyZSogc3RydWN0dXJl
ID0gZ2xvYmFsT2JqZWN0LT5nZW5lcmF0b3JGcmFtZVN0cnVjdHVyZSgpOworICAgIHVuc2lnbmVk
IGdlbmVyYXRvckxvY2Fsc1NpemUgPSBub2RlLT5nZW5lcmF0b3JMb2NhbHNTaXplKCk7CisKKyAg
ICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOworICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoMSh0
aGlzKTsKKyAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaDIodGhpcyk7CisKKyAgICBHUFJSZWcgcmVz
dWx0R1BSID0gcmVzdWx0LmdwcigpOworICAgIEdQUlJlZyBzY3JhdGNoMUdQUiA9IHNjcmF0Y2gx
LmdwcigpOworICAgIEdQUlJlZyBzY3JhdGNoMkdQUiA9IHNjcmF0Y2gyLmdwcigpOworCisgICAg
SklUQ29tcGlsZXI6Okp1bXBMaXN0IHNsb3dQYXRoOworCisgICAgZW1pdEFsbG9jYXRlSlNPYmpl
Y3RXaXRoS25vd25TaXplPEdlbmVyYXRvckZyYW1lPihyZXN1bHRHUFIsIFRydXN0ZWRJbW1QdHIo
c3RydWN0dXJlKSwgVHJ1c3RlZEltbVB0cihudWxscHRyKSwgc2NyYXRjaDFHUFIsIHNjcmF0Y2gy
R1BSLCBzbG93UGF0aCwgR2VuZXJhdG9yRnJhbWU6OmFsbG9jYXRpb25TaXplRm9yTG9jYWxzKGdl
bmVyYXRvckxvY2Fsc1NpemUpKTsKKyAgICBtX2ppdC5zdG9yZTMyKFRydXN0ZWRJbW0zMihnZW5l
cmF0b3JMb2NhbHNTaXplKSwgSklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBHZW5lcmF0
b3JGcmFtZTo6bnVtYmVyT2ZDYWxsZWVMb2NhbHNPZmZzZXQoKSkpOworICAgIG1faml0LnN0b3Jl
MzIoVHJ1c3RlZEltbTMyKDApLCBKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIEdlbmVy
YXRvckZyYW1lOjpudW1iZXJPZlNhdmVkQ2FsbGVlTG9jYWxzT2Zmc2V0KCkpKTsKKyAgICBKU1Zh
bHVlIGVtcHR5VmFsdWU7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGdlbmVyYXRvckxv
Y2Fsc1NpemU7ICsraSkKKyAgICAgICAgbV9qaXQuc3RvcmVUcnVzdGVkVmFsdWUoZW1wdHlWYWx1
ZSwgSklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBHZW5lcmF0b3JGcmFtZTo6bG9jYWxP
ZmZzZXQoaSkpKTsKKworICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93
UGF0aCwgdGhpcywgb3BlcmF0aW9uTmV3R2VuZXJhdG9yRnJhbWUsIHJlc3VsdEdQUiwgc3RydWN0
dXJlLCBnZW5lcmF0b3JMb2NhbHNTaXplKSk7CisKKyAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwg
bm9kZSk7Cit9CisKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVSZXNpemVHZW5lcmF0b3JM
b2NhbHMoTm9kZSogbm9kZSkKK3sKKyAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBmcmFtZSh0aGlz
LCBub2RlLT5jaGlsZDEoKSk7CisgICAgR1BSUmVnIGZyYW1lR1BSID0gZnJhbWUuZ3ByKCk7Cisg
ICAgbV9qaXQuc3RvcmUzMihUcnVzdGVkSW1tMzIobm9kZS0+Z2VuZXJhdG9yRnJhbWVMb2NhbHMo
KSksIEpJVENvbXBpbGVyOjpBZGRyZXNzKGZyYW1lR1BSLCBHZW5lcmF0b3JGcmFtZTo6bnVtYmVy
T2ZTYXZlZENhbGxlZUxvY2Fsc09mZnNldCgpKSk7CisgICAgbm9SZXN1bHQobm9kZSk7Cit9CisK
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdUeXBlZEFycmF5KE5vZGUqIG5vZGUpCiB7
CiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1faml0LmdyYXBoKCkuZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKaW5kZXggYjc3ZWFkNmM4MWQyNTI2YzNmMDQ3YWQw
OGI4Y2ViNTJhMDZjZGM1My4uY2YwMmI4NjE5MWIwNGQ4NWMxMDIxNzg0ZTViNTViZjViMzk1OGM5
MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaApA
QCAtMjUyOSw2ICsyNTI5LDggQEAgY2xhc3MgU3BlY3VsYXRpdmVKSVQgewogICAgIHZvaWQgY29t
cGlsZVB1dEJ5VmFsRm9yRmxvYXRUeXBlZEFycmF5KEdQUlJlZyBiYXNlLCBHUFJSZWcgcHJvcGVy
dHksIE5vZGUqLCBUeXBlZEFycmF5VHlwZSk7CiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIENsYXNz
VHlwZT4gdm9pZCBjb21waWxlTmV3RnVuY3Rpb25Db21tb24oR1BSUmVnLCBTdHJ1Y3R1cmUqLCBH
UFJSZWcsIEdQUlJlZywgR1BSUmVnLCBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QmLCBzaXplX3Qs
IEZ1bmN0aW9uRXhlY3V0YWJsZSosIHB0cmRpZmZfdCwgcHRyZGlmZl90LCBwdHJkaWZmX3QpOwog
ICAgIHZvaWQgY29tcGlsZU5ld0Z1bmN0aW9uKE5vZGUqKTsKKyAgICB2b2lkIGNvbXBpbGVOZXdH
ZW5lcmF0b3JGcmFtZShOb2RlKik7CisgICAgdm9pZCBjb21waWxlUmVzaXplR2VuZXJhdG9yTG9j
YWxzKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVTZXRGdW5jdGlvbk5hbWUoTm9kZSopOwogICAg
IHZvaWQgY29tcGlsZUZvcndhcmRWYXJhcmdzKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVDcmVh
dGVBY3RpdmF0aW9uKE5vZGUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCmluZGV4IDc0NmM0MDk2MDU5NGY4MTllZWRmNzQw
OTFkM2M3YjM1Nzg2OTNjZDEuLjg3YzJiNDk0ZTExODA0NGZhNDVhNjM0ODcwOWRkNmYxYTQ3ZTkw
NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVDMyXzY0LmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIkRGR1Nsb3dQYXRoR2Vu
ZXJhdG9yLmgiCiAjaW5jbHVkZSAiRGVidWdnZXIuaCIKICNpbmNsdWRlICJEaXJlY3RBcmd1bWVu
dHMuaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JGcmFtZS5oIgogI2luY2x1ZGUgIkdldHRlclNldHRl
ci5oIgogI2luY2x1ZGUgIkpTRW52aXJvbm1lbnRSZWNvcmQuaCIKICNpbmNsdWRlICJKU0xleGlj
YWxFbnZpcm9ubWVudC5oIgpAQCAtNDAxNyw2ICs0MDE4LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgY29tcGlsZUNhbGxPYmplY3RDb25zdHJ1
Y3Rvcihub2RlKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQorCisgICAgY2FzZSBOZXdHZW5lcmF0
b3JGcmFtZTogeworICAgICAgICBjb21waWxlTmV3R2VuZXJhdG9yRnJhbWUobm9kZSk7CisgICAg
ICAgIGJyZWFrOworICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBUb1RoaXM6IHsKICAgICAgICAg
QVNTRVJUKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKTsKQEAgLTUxNzQs
NiArNTE4MCw0MSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAg
ICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKICAgICAgICAgYnJlYWs7CiAgICAg
fQorICAgIGNhc2UgU2V0R2VuZXJhdG9yTG9jYWw6IHsKKyAgICAgICAgU3BlY3VsYXRlQ2VsbE9w
ZXJhbmQgZnJhbWUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBKU1ZhbHVlT3BlcmFu
ZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisKKyAgICAgICAgR1BSUmVnIGZyYW1lR1BS
ID0gZnJhbWUuZ3ByKCk7CisgICAgICAgIEdQUlJlZyB2YWx1ZVRhZ0dQUiA9IHZhbHVlLnRhZ0dQ
UigpOworICAgICAgICBHUFJSZWcgdmFsdWVQYXlsb2FkR1BSID0gdmFsdWUucGF5bG9hZEdQUigp
OworICAgICAgICB1bnNpZ25lZCBnZW5lcmF0b3JMb2NhbEluZGV4ID0gbm9kZS0+Z2VuZXJhdG9y
TG9jYWxJbmRleCgpOworCisgICAgICAgIG1faml0LnN0b3JlMzIodmFsdWVUYWdHUFIsIEpJVENv
bXBpbGVyOjpBZGRyZXNzKGZyYW1lR1BSLCBHZW5lcmF0b3JGcmFtZTo6bG9jYWxPZmZzZXQoZ2Vu
ZXJhdG9yTG9jYWxJbmRleCkgKyBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMudGFn
KSkpOworICAgICAgICBtX2ppdC5zdG9yZTMyKHZhbHVlUGF5bG9hZEdQUiwgSklUQ29tcGlsZXI6
OkFkZHJlc3MoZnJhbWVHUFIsIEdlbmVyYXRvckZyYW1lOjpsb2NhbE9mZnNldChnZW5lcmF0b3JM
b2NhbEluZGV4KSArIE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy5wYXlsb2FkKSkp
OworCisgICAgICAgIG5vUmVzdWx0KG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAg
Y2FzZSBHZXRHZW5lcmF0b3JMb2NhbDogeworICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBm
cmFtZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHRU
YWcodGhpcyk7CisgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHRQYXlsb2FkKHRoaXMpOworCisg
ICAgICAgIEdQUlJlZyBmcmFtZUdQUiA9IGZyYW1lLmdwcigpOworICAgICAgICBHUFJSZWcgcmVz
dWx0VGFnR1BSID0gcmVzdWx0VGFnLmdwcigpOworICAgICAgICBHUFJSZWcgcmVzdWx0UGF5bG9h
ZEdQUiA9IHJlc3VsdFBheWxvYWQuZ3ByKCk7CisgICAgICAgIHVuc2lnbmVkIGdlbmVyYXRvckxv
Y2FsSW5kZXggPSBub2RlLT5nZW5lcmF0b3JMb2NhbEluZGV4KCk7CisKKyAgICAgICAgbV9qaXQu
bG9hZDMyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGZyYW1lR1BSLCBHZW5lcmF0b3JGcmFtZTo6bG9j
YWxPZmZzZXQoZ2VuZXJhdG9yTG9jYWxJbmRleCkgKyBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwg
dS5hc0JpdHMudGFnKSksIHJlc3VsdFRhZ0dQUik7CisgICAgICAgIG1faml0LmxvYWQzMihKSVRD
b21waWxlcjo6QWRkcmVzcyhmcmFtZUdQUiwgR2VuZXJhdG9yRnJhbWU6OmxvY2FsT2Zmc2V0KGdl
bmVyYXRvckxvY2FsSW5kZXgpICsgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnBh
eWxvYWQpKSwgcmVzdWx0UGF5bG9hZEdQUik7CisKKyAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1
bHRUYWdHUFIsIHJlc3VsdFBheWxvYWRHUFIsIG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9
CisgICAgY2FzZSBSZXNpemVHZW5lcmF0b3JMb2NhbHM6IHsKKyAgICAgICAgY29tcGlsZVJlc2l6
ZUdlbmVyYXRvckxvY2Fscyhub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogICAgIGNhc2Ug
UHJvZmlsZVR5cGU6IHsKICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+
Y2hpbGQxKCkpOwogICAgICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaDEodGhpcyk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAppbmRleCAy
NGQ2ZTMyNzgwYmQzMjQxYzNmZmJlNzVlOWRjZjRlYTdiMjY1MTVhLi4wNDcyMzUzNGY1NWU5NjJk
MDAxZjU1ZjkyYWQ2NWVlZDA4ZmI4NDM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRl
ICJERkdTbG93UGF0aEdlbmVyYXRvci5oIgogI2luY2x1ZGUgIkRlYnVnZ2VyLmgiCiAjaW5jbHVk
ZSAiRGlyZWN0QXJndW1lbnRzLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yRnJhbWUuaCIKICNpbmNs
dWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAi
SlNFbnZpcm9ubWVudFJlY29yZC5oIgpAQCAtMzk1NSw2ICszOTU2LDExIEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisg
ICAgY2FzZSBOZXdHZW5lcmF0b3JGcmFtZTogeworICAgICAgICBjb21waWxlTmV3R2VuZXJhdG9y
RnJhbWUobm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICAgICAgCiAgICAgY2FzZSBU
b1RoaXM6IHsKICAgICAgICAgQVNTRVJUKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBVbnR5
cGVkVXNlKTsKICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdGhpc1ZhbHVlKHRoaXMsIG5vZGUtPmNo
aWxkMSgpKTsKQEAgLTUwOTksNiArNTEwNSwzNSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgfQorICAgIGNhc2UgU2V0R2VuZXJhdG9yTG9jYWw6IHsKKyAgICAg
ICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgZnJhbWUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAg
ICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisKKyAgICAg
ICAgR1BSUmVnIGZyYW1lR1BSID0gZnJhbWUuZ3ByKCk7CisgICAgICAgIEdQUlJlZyB2YWx1ZUdQ
UiA9IHZhbHVlLmdwcigpOworICAgICAgICB1bnNpZ25lZCBnZW5lcmF0b3JMb2NhbEluZGV4ID0g
bm9kZS0+Z2VuZXJhdG9yTG9jYWxJbmRleCgpOworCisgICAgICAgIG1faml0LnN0b3JlNjQodmFs
dWVHUFIsIEpJVENvbXBpbGVyOjpBZGRyZXNzKGZyYW1lR1BSLCBHZW5lcmF0b3JGcmFtZTo6bG9j
YWxPZmZzZXQoZ2VuZXJhdG9yTG9jYWxJbmRleCkpKTsKKworICAgICAgICBub1Jlc3VsdChub2Rl
KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgR2V0R2VuZXJhdG9yTG9jYWw6IHsK
KyAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgZnJhbWUodGhpcywgbm9kZS0+Y2hpbGQxKCkp
OworICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOworCisgICAgICAgIEdQUlJlZyBm
cmFtZUdQUiA9IGZyYW1lLmdwcigpOworICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0
LmdwcigpOworICAgICAgICB1bnNpZ25lZCBnZW5lcmF0b3JMb2NhbEluZGV4ID0gbm9kZS0+Z2Vu
ZXJhdG9yTG9jYWxJbmRleCgpOworCisgICAgICAgIG1faml0LmxvYWQ2NChKSVRDb21waWxlcjo6
QWRkcmVzcyhmcmFtZUdQUiwgR2VuZXJhdG9yRnJhbWU6OmxvY2FsT2Zmc2V0KGdlbmVyYXRvckxv
Y2FsSW5kZXgpKSwgcmVzdWx0R1BSKTsKKyAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRHUFIs
IG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBSZXNpemVHZW5lcmF0b3JM
b2NhbHM6IHsKKyAgICAgICAgY29tcGlsZVJlc2l6ZUdlbmVyYXRvckxvY2Fscyhub2RlKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgfQogICAgIGNhc2UgUHJvZmlsZVR5cGU6IHsKICAgICAgICAgSlNW
YWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBHUFJUZW1w
b3Jhcnkgc2NyYXRjaDEodGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwCmluZGV4IGI2MzEyMDll
OGQxNzI2OGQwOWEzZTA3NzgyZDc4YzkzNDYyZDBiZmMuLmM5MzdiZDlkMjcxM2I0ZTk4YTU0M2Fi
ZWVmNzc3ZmEyMjcwYjdlZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwCkBAIC0yODMsNiArMjgz
LDExIEBAIGNsYXNzIFN0b3JlQmFycmllckluc2VydGlvblBoYXNlIDogcHVibGljIFBoYXNlIHsK
ICAgICAgICAgICAgICAgICBjb25zaWRlckJhcnJpZXIobV9ub2RlLT5jaGlsZDEoKSwgbV9ub2Rl
LT5jaGlsZDIoKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIGNhc2UgU2V0R2VuZXJhdG9yTG9jYWw6IHsKKyAgICAgICAgICAgICAgICBjb25z
aWRlckJhcnJpZXIobV9ub2RlLT5jaGlsZDEoKSwgbV9ub2RlLT5jaGlsZDIoKSk7CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgCiAgICAgICAg
ICAgICBjYXNlIFNldEZ1bmN0aW9uTmFtZTogewogICAgICAgICAgICAgICAgIGNvbnNpZGVyQmFy
cmllcihtX25vZGUtPmNoaWxkMSgpLCBtX25vZGUtPmNoaWxkMigpKTsKQEAgLTMwMyw2ICszMDgs
NyBAQCBjbGFzcyBTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAg
ICAgICAgICAgICBjYXNlIE5ld0FycmF5QnVmZmVyOgogICAgICAgICAgICAgY2FzZSBOZXdUeXBl
ZEFycmF5OgogICAgICAgICAgICAgY2FzZSBOZXdSZWdleHA6CisgICAgICAgICAgICBjYXNlIE5l
d0dlbmVyYXRvckZyYW1lOgogICAgICAgICAgICAgY2FzZSBNYXRlcmlhbGl6ZU5ld09iamVjdDoK
ICAgICAgICAgICAgIGNhc2UgTWF0ZXJpYWxpemVDcmVhdGVBY3RpdmF0aW9uOgogICAgICAgICAg
ICAgY2FzZSBOZXdTdHJpbmdPYmplY3Q6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2UuY3BwCmluZGV4IDUxY2Y0
ODk2MGE4YjFmZjU3MmE4NjllYWUxOGJmMGE5ZjVhMjc5ZGQuLjAwZDE5OGMzOTA5NTM2NWNlNzg2
MmY3NmIxN2Y1M2JlNDY1YjkyOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2UuY3BwCkBAIC0xMzUsNiAr
MTM1LDkgQEAgY2xhc3MgU3RydWN0dXJlUmVnaXN0cmF0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2Ug
ewogICAgICAgICAgICAgICAgIGNhc2UgQ3JlYXRlRGlyZWN0QXJndW1lbnRzOgogICAgICAgICAg
ICAgICAgICAgICByZWdpc3RlclN0cnVjdHVyZShtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpLT5kaXJlY3RBcmd1bWVudHNTdHJ1Y3R1cmUoKSk7CiAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgTmV3R2VuZXJhdG9yRnJh
bWU6CisgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyU3RydWN0dXJlKG1fZ3JhcGguZ2xvYmFs
T2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyktPmdlbmVyYXRvckZyYW1lU3RydWN0dXJl
KCkpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgCiAg
ICAgICAgICAgICAgICAgY2FzZSBDcmVhdGVTY29wZWRBcmd1bWVudHM6CiAgICAgICAgICAgICAg
ICAgICAgIHJlZ2lzdGVyU3RydWN0dXJlKG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYyktPnNjb3BlZEFyZ3VtZW50c1N0cnVjdHVyZSgpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3Bw
CmluZGV4IGE0YjU0MzdlOTdjNDdmOGZmM2ZlZWRjMWVlOTBmNjA3N2FiNWZmMDUuLmIxYjJmZWNj
ZTNhZjk5NDRhZmQxYzYzYTRiMzBlMGIwNzJlOTk3MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcApAQCAtMzQs
NiArMzQsNyBAQAogI2luY2x1ZGUgIkIzVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiRGlyZWN0
QXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiRlRMU3RhdGUuaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JG
cmFtZS5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIkpTRW52aXJvbm1l
bnRSZWNvcmQuaCIKICNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuaCIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9y
eS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5
LmgKaW5kZXggMjEyNTgwZmRhYjdhZGJiYzE1ZjU1ODhiNWU1M2MzNzJmMjg5YTUyYS4uMmZlZWQ2
YjY3MDhlNjM3OWY5MzI0NDU0NDJhYWQ1MjkyZTA2NzFlZCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgKQEAgLTQ4LDYg
KzQ4LDggQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgewogICAgIG1hY3JvKERpcmVj
dEFyZ3VtZW50c19sZW5ndGgsIERpcmVjdEFyZ3VtZW50czo6b2Zmc2V0T2ZMZW5ndGgoKSkgXAog
ICAgIG1hY3JvKERpcmVjdEFyZ3VtZW50c19taW5DYXBhY2l0eSwgRGlyZWN0QXJndW1lbnRzOjpv
ZmZzZXRPZk1pbkNhcGFjaXR5KCkpIFwKICAgICBtYWNybyhEaXJlY3RBcmd1bWVudHNfb3ZlcnJp
ZGVzLCBEaXJlY3RBcmd1bWVudHM6Om9mZnNldE9mT3ZlcnJpZGVzKCkpIFwKKyAgICBtYWNybyhH
ZW5lcmF0b3JGcmFtZV9udW1iZXJPZkNhbGxlZUxvY2FscywgR2VuZXJhdG9yRnJhbWU6Om51bWJl
ck9mQ2FsbGVlTG9jYWxzT2Zmc2V0KCkpIFwKKyAgICBtYWNybyhHZW5lcmF0b3JGcmFtZV9udW1i
ZXJPZlNhdmVkQ2FsbGVlTG9jYWxzLCBHZW5lcmF0b3JGcmFtZTo6bnVtYmVyT2ZTYXZlZENhbGxl
ZUxvY2Fsc09mZnNldCgpKSBcCiAgICAgbWFjcm8oR2V0dGVyU2V0dGVyX2dldHRlciwgR2V0dGVy
U2V0dGVyOjpvZmZzZXRPZkdldHRlcigpKSBcCiAgICAgbWFjcm8oR2V0dGVyU2V0dGVyX3NldHRl
ciwgR2V0dGVyU2V0dGVyOjpvZmZzZXRPZlNldHRlcigpKSBcCiAgICAgbWFjcm8oSlNBcnJheUJ1
ZmZlclZpZXdfbGVuZ3RoLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSkgXApA
QCAtMTA3LDYgKzEwOSw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRlRMIHsKIAogI2Rl
ZmluZSBGT1JfRUFDSF9JTkRFWEVEX0FCU1RSQUNUX0hFQVAobWFjcm8pIFwKICAgICBtYWNybyhE
aXJlY3RBcmd1bWVudHNfc3RvcmFnZSwgRGlyZWN0QXJndW1lbnRzOjpzdG9yYWdlT2Zmc2V0KCks
IHNpemVvZihFbmNvZGVkSlNWYWx1ZSkpIFwKKyAgICBtYWNybyhHZW5lcmF0b3JGcmFtZV9jYWxs
ZWVMb2NhbHMsIEdlbmVyYXRvckZyYW1lOjpvZmZzZXRPZkxvY2FscygpLCBzaXplb2YoV3JpdGVC
YXJyaWVyPFVua25vd24+KSkgXAogICAgIG1hY3JvKEpTRW52aXJvbm1lbnRSZWNvcmRfdmFyaWFi
bGVzLCBKU0Vudmlyb25tZW50UmVjb3JkOjpvZmZzZXRPZlZhcmlhYmxlcygpLCBzaXplb2YoRW5j
b2RlZEpTVmFsdWUpKSBcCiAgICAgbWFjcm8oSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yX2NhY2hl
ZFByb3BlcnR5TmFtZXNWZWN0b3JDb250ZW50cywgMCwgc2l6ZW9mKFdyaXRlQmFycmllcjxKU1N0
cmluZz4pKSBcCiAgICAgbWFjcm8oSlNSb3BlU3RyaW5nX2ZpYmVycywgSlNSb3BlU3RyaW5nOjpv
ZmZzZXRPZkZpYmVycygpLCBzaXplb2YoV3JpdGVCYXJyaWVyPEpTU3RyaW5nPikpIFwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAppbmRleCBlZDc4NGJm
MTBlNTg4NzY3MjQ1YmRiZGYzYjUzMTM4MzA2NjA4NjUyLi5mOTY3OTBjODVmMjZkN2Q1NzZkMmU0
ZWIyMTAyODU3N2EwMTRlNWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTENhcGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExD
YXBhYmlsaXRpZXMuY3BwCkBAIC03Miw2ICs3Miw3IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwg
Y2FuQ29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgTmV3T2JqZWN0OgogICAgIGNhc2UgTmV3
QXJyYXk6CiAgICAgY2FzZSBOZXdBcnJheUJ1ZmZlcjoKKyAgICBjYXNlIE5ld0dlbmVyYXRvckZy
YW1lOgogICAgIGNhc2UgTmV3VHlwZWRBcnJheToKICAgICBjYXNlIEdldEJ5T2Zmc2V0OgogICAg
IGNhc2UgR2V0R2V0dGVyU2V0dGVyQnlPZmZzZXQ6CkBAIC0yMzAsNiArMjMxLDkgQEAgaW5saW5l
IENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBQdXRTZXR0
ZXJCeVZhbDoKICAgICBjYXNlIENvcHlSZXN0OgogICAgIGNhc2UgR2V0UmVzdExlbmd0aDoKKyAg
ICBjYXNlIFNldEdlbmVyYXRvckxvY2FsOgorICAgIGNhc2UgR2V0R2VuZXJhdG9yTG9jYWw6Cisg
ICAgY2FzZSBSZXNpemVHZW5lcmF0b3JMb2NhbHM6CiAgICAgY2FzZSBSZWdFeHBFeGVjOgogICAg
IGNhc2UgUmVnRXhwVGVzdDoKICAgICBjYXNlIE5ld1JlZ2V4cDoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0ZS1ieXRlY29kZS1maWxlcyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9nZW5lcmF0ZS1ieXRlY29kZS1maWxlcwppbmRleCA1NjY2YTNmOTI0YzExOWIyMTZk
M2ZmMGZmZTljNjcyYjdjNzFiYjc5Li5mYWNmZGYxMzMxNDg3MDdhMzMzNTM1NzYyYmU3ODMwNGM0
YjUwYjFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdGUtYnl0ZWNv
ZGUtZmlsZXMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRlLWJ5dGVjb2RlLWZp
bGVzCkBAIC0xODcsNiArMTg3LDcgQEAgaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgICAg
ICAgICAgICAgICBkZWZhdWx0TGVuZ3RoID0gc2VjdGlvblsiZGVmYXVsdExlbmd0aCJdCiAKICAg
ICAgICAgICAgIGJ5dGVjb2RlTnVtID0gMAorICAgICAgICAgICAgbWF4TGVuZ3RoID0gMAogICAg
ICAgICAgICAgZm9yIGJ5dGVjb2RlIGluIHNlY3Rpb25bImJ5dGVjb2RlcyJdOgogICAgICAgICAg
ICAgICAgIGlmIG5vdCBmaXJzdE1hY3JvOgogICAgICAgICAgICAgICAgICAgICBieXRlY29kZUhG
aWxlLndyaXRlKCIgXFxcbiIpCkBAIC0xOTQsNiArMTk1LDcgQEAgaWYgX19uYW1lX18gPT0gIl9f
bWFpbl9fIjoKICAgICAgICAgICAgICAgICBsZW5ndGggPSBkZWZhdWx0TGVuZ3RoCiAgICAgICAg
ICAgICAgICAgaWYgImxlbmd0aCIgaW4gYnl0ZWNvZGU6CiAgICAgICAgICAgICAgICAgICAgIGxl
bmd0aCA9IGJ5dGVjb2RlWyJsZW5ndGgiXQorICAgICAgICAgICAgICAgICAgICBtYXhMZW5ndGgg
PSBtYXgoW2xlbmd0aCwgbWF4TGVuZ3RoXSkKIAogICAgICAgICAgICAgICAgIGJ5dGVjb2RlSEZp
bGUud3JpdGUoIiAgICBtYWNybyh7MH0sIHsxfSkiLmZvcm1hdChieXRlY29kZVsibmFtZSJdLCBs
ZW5ndGgpKQogICAgICAgICAgICAgICAgIGZpcnN0TWFjcm8gPSBGYWxzZQpAQCAtMjAxLDYgKzIw
Myw3IEBAIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAKICAgICAgICAgICAgIGJ5dGVjb2Rl
SEZpbGUud3JpdGUoIlxuXG4iKQogICAgICAgICAgICAgYnl0ZWNvZGVIRmlsZS53cml0ZSgiI2Rl
ZmluZSBOVU1CRVJfT0ZfezB9X0lEUyB7MX1cblxuIi5mb3JtYXQoc2VjdGlvblsibWFjcm9OYW1l
Q29tcG9uZW50Il0sIGJ5dGVjb2RlTnVtKSkKKyAgICAgICAgICAgIGJ5dGVjb2RlSEZpbGUud3Jp
dGUoIiNkZWZpbmUgTUFYX09QQ09ERV9MRU5HVEhfT0ZfezB9IHsxfVxuXG4iLmZvcm1hdChzZWN0
aW9uWyJtYWNyb05hbWVDb21wb25lbnQiXSwgbWF4TGVuZ3RoKSkKIAogICAgICAgICBpZiBpbml0
QVNNRmlsZU5hbWUgYW5kIHNlY3Rpb25bJ2VtaXRJbkFTTUZpbGUnXToKICAgICAgICAgICAgIHBy
ZWZpeCA9ICIiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIv
SW50ZXJwcmV0ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVy
cHJldGVyLmNwcAppbmRleCA3NGY4YzUzZTEyMWM1NTM4ZmI1NGU3ZGY0NTk2OWFjNzM0MDgwNjc5
Li42MzJiMjI5Y2Q4ZTJmY2ZjYjNhNjJkMTQ5MTE4ODc2OGJmOTQwMjQyIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKQEAgLTYwNyw3
ICs2MDcsNyBAQCBKU1N0cmluZyogSW50ZXJwcmV0ZXI6OnN0YWNrVHJhY2VBc1N0cmluZyhWTSYg
dm0sIGNvbnN0IFZlY3RvcjxTdGFja0ZyYW1lPiYgc3RhYwogICAgIHJldHVybiBqc1N0cmluZygm
dm0sIGJ1aWxkZXIudG9TdHJpbmcoKSk7CiB9CiAKLUFMV0FZU19JTkxJTkUgc3RhdGljIEhhbmRs
ZXJJbmZvKiBmaW5kRXhjZXB0aW9uSGFuZGxlcihTdGFja1Zpc2l0b3ImIHZpc2l0b3IsIENvZGVC
bG9jayogY29kZUJsb2NrLCBDb2RlQmxvY2s6OlJlcXVpcmVkSGFuZGxlciByZXF1aXJlZEhhbmRs
ZXIpCitBTFdBWVNfSU5MSU5FIHN0YXRpYyBIYW5kbGVySW5mbyogZmluZEV4Y2VwdGlvbkhhbmRs
ZXIoU3RhY2tWaXNpdG9yJiB2aXNpdG9yLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgUmVxdWlyZWRI
YW5kbGVyIHJlcXVpcmVkSGFuZGxlcikKIHsKICAgICBBU1NFUlQoY29kZUJsb2NrKTsKICNpZiBF
TkFCTEUoREZHX0pJVCkKQEAgLTY0MSw3ICs2NDEsNyBAQCBjbGFzcyBHZXRDYXRjaEhhbmRsZXJG
dW5jdG9yIHsKICAgICAgICAgaWYgKCFjb2RlQmxvY2spCiAgICAgICAgICAgICByZXR1cm4gU3Rh
Y2tWaXNpdG9yOjpDb250aW51ZTsKIAotICAgICAgICBtX2hhbmRsZXIgPSBmaW5kRXhjZXB0aW9u
SGFuZGxlcih2aXNpdG9yLCBjb2RlQmxvY2ssIENvZGVCbG9jazo6UmVxdWlyZWRIYW5kbGVyOjpD
YXRjaEhhbmRsZXIpOworICAgICAgICBtX2hhbmRsZXIgPSBmaW5kRXhjZXB0aW9uSGFuZGxlcih2
aXNpdG9yLCBjb2RlQmxvY2ssIFJlcXVpcmVkSGFuZGxlcjo6Q2F0Y2hIYW5kbGVyKTsKICAgICAg
ICAgaWYgKG1faGFuZGxlcikKICAgICAgICAgICAgIHJldHVybiBTdGFja1Zpc2l0b3I6OkRvbmU7
CiAKQEAgLTY4Myw3ICs2ODMsNyBAQCBjbGFzcyBVbndpbmRGdW5jdG9yIHsKICAgICAgICAgbV9o
YW5kbGVyID0gbnVsbHB0cjsKICAgICAgICAgaWYgKCFtX2lzVGVybWluYXRpb24pIHsKICAgICAg
ICAgICAgIGlmIChtX2NvZGVCbG9jayAmJiAhaXNXZWJBc3NlbWJseUV4ZWN1dGFibGUobV9jb2Rl
QmxvY2stPm93bmVyRXhlY3V0YWJsZSgpKSkKLSAgICAgICAgICAgICAgICBtX2hhbmRsZXIgPSBm
aW5kRXhjZXB0aW9uSGFuZGxlcih2aXNpdG9yLCBtX2NvZGVCbG9jaywgQ29kZUJsb2NrOjpSZXF1
aXJlZEhhbmRsZXI6OkFueUhhbmRsZXIpOworICAgICAgICAgICAgICAgIG1faGFuZGxlciA9IGZp
bmRFeGNlcHRpb25IYW5kbGVyKHZpc2l0b3IsIG1fY29kZUJsb2NrLCBSZXF1aXJlZEhhbmRsZXI6
OkFueUhhbmRsZXIpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKG1faGFuZGxlcikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklULmNwcAppbmRleCA1NDZlMmFlMTZmNTQxMWQyYWUxMDVjYzAwMGY2ZjEw
ZDI4Zjc5ZWZkLi4zOGM5OTE5ODVlODE4MDA0ZWEwM2RiNDJkM2NlMjE0YWMxYjBmZDY0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCkBAIC0yMzcsNiArMjM3LDcgQEAgdm9pZCBKSVQ6OnBy
aXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBERUZJTkVfT1Aob3BfYXNzZXJ0KQogICAg
ICAgICBERUZJTkVfT1Aob3Bfc2F2ZSkKICAgICAgICAgREVGSU5FX09QKG9wX3Jlc3VtZSkKKyAg
ICAgICAgREVGSU5FX09QKG9wX25ld19nZW5lcmF0b3JfZnJhbWUpCiAgICAgICAgIERFRklORV9P
UChvcF9kZWJ1ZykKICAgICAgICAgREVGSU5FX09QKG9wX2RlbF9ieV9pZCkKICAgICAgICAgREVG
SU5FX09QKG9wX2RlbF9ieV92YWwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAppbmRleCAzNDUxYjIz
ZmQ4NTRjMWE1OGZkNGM5ODdiYmMyYjJhNzlhYzgzZTVjLi5hOTViOTVjMGY0MWM5YmM2YWU1ZjE2
NzVmZDNmMGNiYzUwOWRhMDAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKQEAgLTMzOSw2ICsz
MzksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgZW51bSBXcml0ZUJhcnJpZXJNb2RlIHsg
VW5jb25kaXRpb25hbFdyaXRlQmFycmllciwgU2hvdWxkRmlsdGVyQmFzZSwgU2hvdWxkRmlsdGVy
VmFsdWUsIFNob3VsZEZpbHRlckJhc2VBbmRWYWx1ZSB9OwogICAgICAgICAvLyB2YWx1ZSByZWdp
c3RlciBpbiB3cml0ZSBiYXJyaWVyIGlzIHVzZWQgYmVmb3JlIGFueSBzY3JhdGNoIHJlZ2lzdGVy
cwogICAgICAgICAvLyBzbyBtYXkgc2FmZWx5IGJlIHRoZSBzYW1lIGFzIGVpdGhlciBvZiB0aGUg
c2NyYXRjaCByZWdpc3RlcnMuCisgICAgICAgIHZvaWQgZW1pdFdyaXRlQmFycmllcih1bnNpZ25l
ZCBvd25lciwgV3JpdGVCYXJyaWVyTW9kZSk7CiAgICAgICAgIHZvaWQgZW1pdFdyaXRlQmFycmll
cih1bnNpZ25lZCBvd25lciwgdW5zaWduZWQgdmFsdWUsIFdyaXRlQmFycmllck1vZGUpOwogICAg
ICAgICB2b2lkIGVtaXRXcml0ZUJhcnJpZXIoSlNDZWxsKiBvd25lciwgdW5zaWduZWQgdmFsdWUs
IFdyaXRlQmFycmllck1vZGUpOwogICAgICAgICB2b2lkIGVtaXRXcml0ZUJhcnJpZXIoSlNDZWxs
KiBvd25lcik7CkBAIC01MDQsNiArNTA1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZv
aWQgZW1pdF9vcF9hc3NlcnQoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX3Nh
dmUoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX3Jlc3VtZShJbnN0cnVjdGlv
biopOworICAgICAgICB2b2lkIGVtaXRfb3BfbmV3X2dlbmVyYXRvcl9mcmFtZShJbnN0cnVjdGlv
biopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZGVidWcoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAg
dm9pZCBlbWl0X29wX2RlbF9ieV9pZChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRf
b3BfZGVsX2J5X3ZhbChJbnN0cnVjdGlvbiopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3Bjb2Rlcy5jcHAKaW5kZXggYzQ0MzkxYzA5MzBlNTUxZTE5ZmQzNDU3ZmExYTc4YWYwZDllMmI1
ZS4uNzUxMjFiZDMwZmJkY2RjNDU4NGZkZmZmYzFkMTEzZTQ3OGRlZGNkNyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVk
ZSAiQ29waWVkU3BhY2VJbmxpbmVzLmgiCiAjaW5jbHVkZSAiRGVidWdnZXIuaCIKICNpbmNsdWRl
ICJFeGNlcHRpb24uaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JGcmFtZS5oIgogI2luY2x1ZGUgIkhl
YXAuaCIKICNpbmNsdWRlICJKSVRJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgpAQCAt
OTIzLDYgKzkyNCw0OSBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfdG9fc3RyaW5nKEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZQogICAgIHNsb3dQYXRoQ2Fs
bC5jYWxsKCk7CiB9CiAKK3ZvaWQgSklUOjplbWl0X29wX3NhdmUoSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKK3sKKyAgICBpbnQgZnJhbWUgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0u
dS5vcGVyYW5kOworICAgIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9IGN1cnJlbnRJ
bnN0cnVjdGlvblsyXS51LnVuc2lnbmVkVmFsdWU7CisgICAgY29uc3QgRmFzdEJpdFZlY3RvciYg
bGl2ZW5lc3MgPSBtX2NvZGVCbG9jay0+bGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQobGl2ZUNhbGxl
ZUxvY2Fsc0luZGV4KTsKKworICAgIC8vIEEgZnJhbWUgaXMgYWx3YXlzIGEgY2VsbC4gTm8gbmVl
ZCB0byBmaWx0ZXIgb3V0LgorICAgIGVtaXRXcml0ZUJhcnJpZXIoZnJhbWUsIFVuY29uZGl0aW9u
YWxXcml0ZUJhcnJpZXIpOworCisgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihmcmFtZSwgcmVn
VDEpOworCisgICAgLy8gQWxsb2NhdGUgZ2VuZXJhdG9yIGZyYW1lIGxvY2Fscy4KKyAgICBzdG9y
ZTMyKFRydXN0ZWRJbW0zMihsaXZlbmVzcy5iaXRDb3VudCgpKSwgQWRkcmVzcyhyZWdUMSwgR2Vu
ZXJhdG9yRnJhbWU6Om51bWJlck9mU2F2ZWRDYWxsZWVMb2NhbHNPZmZzZXQoKSkpOworCisgICAg
dW5zaWduZWQgZ2VuZXJhdG9yTG9jYWxJbmRleCA9IDA7CisgICAgbGl2ZW5lc3MuZm9yRWFjaFNl
dEJpdChbJl0oc2l6ZV90IGxvY2FsKSB7CisgICAgICAgIFZpcnR1YWxSZWdpc3RlciBvcGVyYW5k
ID0gdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwobG9jYWwpOworICAgICAgICBlbWl0R2V0VmlydHVh
bFJlZ2lzdGVyKG9wZXJhbmQub2Zmc2V0KCksIHJlZ1QwKTsKKyAgICAgICAgc3RvcmU2NChyZWdU
MCwgQWRkcmVzcyhyZWdUMSwgR2VuZXJhdG9yRnJhbWU6OmxvY2FsT2Zmc2V0KGdlbmVyYXRvckxv
Y2FsSW5kZXgpKSk7CisgICAgICAgIGdlbmVyYXRvckxvY2FsSW5kZXgrKzsKKyAgICB9KTsKK30K
Kwordm9pZCBKSVQ6OmVtaXRfb3BfcmVzdW1lKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCit7CisgICAgaW50IGZyYW1lID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsK
KyAgICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSBjdXJyZW50SW5zdHJ1Y3Rpb25b
Ml0udS51bnNpZ25lZFZhbHVlOworICAgIGNvbnN0IEZhc3RCaXRWZWN0b3ImIGxpdmVuZXNzID0g
bV9jb2RlQmxvY2stPmxpdmVDYWxsZWVMb2NhbHNBdFlpZWxkKGxpdmVDYWxsZWVMb2NhbHNJbmRl
eCk7CisKKyAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGZyYW1lLCByZWdUMSk7CisKKyAgICB1
bnNpZ25lZCBnZW5lcmF0b3JMb2NhbEluZGV4ID0gMDsKKyAgICBsaXZlbmVzcy5mb3JFYWNoU2V0
Qml0KFsmXShzaXplX3QgbG9jYWwpIHsKKyAgICAgICAgVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQg
PSB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChsb2NhbCk7CisgICAgICAgIGxvYWQ2NChBZGRyZXNz
KHJlZ1QxLCBHZW5lcmF0b3JGcmFtZTo6bG9jYWxPZmZzZXQoZ2VuZXJhdG9yTG9jYWxJbmRleCkp
LCByZWdUMCk7CisgICAgICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIob3BlcmFuZC5vZmZzZXQo
KSk7CisgICAgICAgIGdlbmVyYXRvckxvY2FsSW5kZXgrKzsKKyAgICB9KTsKKworICAgIC8vIERl
YWxsb2NhdGUgZ2VuZXJhdG9yIGZyYW1lIGxvY2Fscy4KKyAgICBzdG9yZTMyKFRydXN0ZWRJbW0z
MigwKSwgQWRkcmVzcyhyZWdUMSwgR2VuZXJhdG9yRnJhbWU6Om51bWJlck9mU2F2ZWRDYWxsZWVM
b2NhbHNPZmZzZXQoKSkpOworfQorCiAjZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkKIAogdm9pZCBK
SVQ6OmVtaXRfb3BfbG9vcF9oaW50KEluc3RydWN0aW9uKikKQEAgLTE0ODYsMTUgKzE1MzAsOSBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfcmVzdF9sZW5ndGgoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKICNlbmRpZgogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9zYXZlKEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCi17Ci0gICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRo
Q2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9zYXZlKTsKLSAgICBzbG93
UGF0aENhbGwuY2FsbCgpOwotfQotCi12b2lkIEpJVDo6ZW1pdF9vcF9yZXN1bWUoSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3ZvaWQgSklUOjplbWl0X29wX25ld19nZW5lcmF0b3Jf
ZnJhbWUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKLSAgICBKSVRTbG93UGF0
aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX3Jl
c3VtZSk7CisgICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5z
dHJ1Y3Rpb24sIHNsb3dfcGF0aF9uZXdfZ2VuZXJhdG9yX2ZyYW1lKTsKICAgICBzbG93UGF0aENh
bGwuY2FsbCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wY29kZXMzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMz
Ml82NC5jcHAKaW5kZXggNTVkYjQxNjQ2ZWFhYzQ4MDI5ZDI5NjMzMGYwMGVkYzVlMjdmYjEwZS4u
YWRhNTk4NmI2MzBkMTJmNzI1OTlhOTQ2ODdmZGU4OTg4ZjQ3NDU5YiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcApAQCAtMzMsNiArMzMsNyBAQAog
I2luY2x1ZGUgIkNDYWxsSGVscGVycy5oIgogI2luY2x1ZGUgIkRlYnVnZ2VyLmgiCiAjaW5jbHVk
ZSAiRXhjZXB0aW9uLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yRnJhbWUuaCIKICNpbmNsdWRlICJK
SVRJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgogI2luY2x1ZGUgIkpTQ2VsbC5oIgpA
QCAtMTM4NSw2ICsxMzg2LDUxIEBAIHZvaWQgSklUOjplbWl0X29wX2xvZ19zaGFkb3dfY2hpY2tl
bl90YWlsKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgbG9nU2hhZG93Q2hp
Y2tlblRhaWxQYWNrZXQoc2hhZG93UGFja2V0UmVnLCB0aGlzUmVncywgcmVnVDMsIG1fY29kZUJs
b2NrLCBDYWxsU2l0ZUluZGV4KGN1cnJlbnRJbnN0cnVjdGlvbikpOwogfQogCit2b2lkIEpJVDo6
ZW1pdF9vcF9zYXZlKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgaW50
IGZyYW1lID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKKyAgICB1bnNpZ25lZCBs
aXZlQ2FsbGVlTG9jYWxzSW5kZXggPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS51bnNpZ25lZFZh
bHVlOworICAgIGNvbnN0IEZhc3RCaXRWZWN0b3ImIGxpdmVuZXNzID0gbV9jb2RlQmxvY2stPmxp
dmVDYWxsZWVMb2NhbHNBdFlpZWxkKGxpdmVDYWxsZWVMb2NhbHNJbmRleCk7CisKKyAgICAvLyBB
IGZyYW1lIGlzIGFsd2F5cyBhIGNlbGwuIE5vIG5lZWQgdG8gZmlsdGVyIG91dC4KKyAgICBlbWl0
V3JpdGVCYXJyaWVyKGZyYW1lLCBVbmNvbmRpdGlvbmFsV3JpdGVCYXJyaWVyKTsKKworICAgIGVt
aXRMb2FkUGF5bG9hZChmcmFtZSwgcmVnVDIpOworCisgICAgLy8gQWxsb2NhdGUgZ2VuZXJhdG9y
IGZyYW1lIGxvY2Fscy4KKyAgICBzdG9yZTMyKFRydXN0ZWRJbW0zMihsaXZlbmVzcy5iaXRDb3Vu
dCgpKSwgQWRkcmVzcyhyZWdUMiwgR2VuZXJhdG9yRnJhbWU6Om51bWJlck9mU2F2ZWRDYWxsZWVM
b2NhbHNPZmZzZXQoKSkpOworCisgICAgdW5zaWduZWQgZ2VuZXJhdG9yTG9jYWxJbmRleCA9IDA7
CisgICAgbGl2ZW5lc3MuZm9yRWFjaFNldEJpdChbJl0oc2l6ZV90IGxvY2FsKSB7CisgICAgICAg
IFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kID0gdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwobG9jYWwp
OworICAgICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKG9wZXJhbmQub2Zmc2V0KCksIEpTVmFs
dWVSZWdzKHJlZ1QxLCByZWdUMCkpOworICAgICAgICBzdG9yZTMyKHJlZ1QxLCBBZGRyZXNzKHJl
Z1QyLCBHZW5lcmF0b3JGcmFtZTo6bG9jYWxPZmZzZXQoZ2VuZXJhdG9yTG9jYWxJbmRleCkgKyBP
QkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMudGFnKSkpOworICAgICAgICBzdG9yZTMy
KHJlZ1QwLCBBZGRyZXNzKHJlZ1QyLCBHZW5lcmF0b3JGcmFtZTo6bG9jYWxPZmZzZXQoZ2VuZXJh
dG9yTG9jYWxJbmRleCkgKyBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMucGF5bG9h
ZCkpKTsKKyAgICAgICAgZ2VuZXJhdG9yTG9jYWxJbmRleCsrOworICAgIH0pOworfQorCit2b2lk
IEpJVDo6ZW1pdF9vcF9yZXN1bWUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKK3sK
KyAgICBpbnQgZnJhbWUgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOworICAgIHVu
c2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51LnVu
c2lnbmVkVmFsdWU7CisgICAgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZW5lc3MgPSBtX2NvZGVC
bG9jay0+bGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQobGl2ZUNhbGxlZUxvY2Fsc0luZGV4KTsKKwor
ICAgIGVtaXRMb2FkUGF5bG9hZChmcmFtZSwgcmVnVDIpOworCisgICAgdW5zaWduZWQgZ2VuZXJh
dG9yTG9jYWxJbmRleCA9IDA7CisgICAgbGl2ZW5lc3MuZm9yRWFjaFNldEJpdChbJl0oc2l6ZV90
IGxvY2FsKSB7CisgICAgICAgIFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kID0gdmlydHVhbFJlZ2lz
dGVyRm9yTG9jYWwobG9jYWwpOworICAgICAgICBsb2FkMzIoQWRkcmVzcyhyZWdUMiwgR2VuZXJh
dG9yRnJhbWU6OmxvY2FsT2Zmc2V0KGdlbmVyYXRvckxvY2FsSW5kZXgpICsgT0JKRUNUX09GRlNF
VE9GKEpTVmFsdWUsIHUuYXNCaXRzLnRhZykpLCByZWdUMSk7CisgICAgICAgIGxvYWQzMihBZGRy
ZXNzKHJlZ1QyLCBHZW5lcmF0b3JGcmFtZTo6bG9jYWxPZmZzZXQoZ2VuZXJhdG9yTG9jYWxJbmRl
eCkgKyBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMucGF5bG9hZCkpLCByZWdUMCk7
CisgICAgICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIob3BlcmFuZC5vZmZzZXQoKSwgSlNWYWx1
ZVJlZ3MocmVnVDEsIHJlZ1QwKSk7CisgICAgICAgIGdlbmVyYXRvckxvY2FsSW5kZXgrKzsKKyAg
ICB9KTsKKworICAgIC8vIERlYWxsb2NhdGUgZ2VuZXJhdG9yIGZyYW1lIGxvY2Fscy4KKyAgICBz
dG9yZTMyKFRydXN0ZWRJbW0zMigwKSwgQWRkcmVzcyhyZWdUMiwgR2VuZXJhdG9yRnJhbWU6Om51
bWJlck9mU2F2ZWRDYWxsZWVMb2NhbHNPZmZzZXQoKSkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBK
U0MKIAogI2VuZGlmIC8vIFVTRShKU1ZBTFVFMzJfNjQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCmluZGV4IDQzODNhMTM1OTc5NmU3NTdlZDVj
YzZiZDU1ZTA3ZDlmZDQ5NDFkZjMuLmVkZmU3YjA3YTFmMDgzNjQ4Nzc0NzQwOTVhNWVjMGZjZGIy
OGM2NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlB
Y2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nl
c3MuY3BwCkBAIC0xMTY2LDE0ICsxMTY2LDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X3RvX2Fy
Z3VtZW50cyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogI2VuZGlmIC8vIFVTRShK
U1ZBTFVFNjQpCiAKICNpZiBVU0UoSlNWQUxVRTY0KQotdm9pZCBKSVQ6OmVtaXRXcml0ZUJhcnJp
ZXIodW5zaWduZWQgb3duZXIsIHVuc2lnbmVkIHZhbHVlLCBXcml0ZUJhcnJpZXJNb2RlIG1vZGUp
Cit2b2lkIEpJVDo6ZW1pdFdyaXRlQmFycmllcih1bnNpZ25lZCBvd25lciwgV3JpdGVCYXJyaWVy
TW9kZSBtb2RlKQogewotICAgIEp1bXAgdmFsdWVOb3RDZWxsOwotICAgIGlmIChtb2RlID09IFNo
b3VsZEZpbHRlclZhbHVlIHx8IG1vZGUgPT0gU2hvdWxkRmlsdGVyQmFzZUFuZFZhbHVlKSB7Ci0g
ICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIodmFsdWUsIHJlZ1QwKTsKLSAgICAgICAgdmFs
dWVOb3RDZWxsID0gYnJhbmNoVGVzdDY0KE5vblplcm8sIHJlZ1QwLCB0YWdNYXNrUmVnaXN0ZXIp
OwotICAgIH0KLSAgICAKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKG93bmVyLCByZWdUMCk7
CiAgICAgSnVtcCBvd25lck5vdENlbGw7CiAgICAgaWYgKG1vZGUgPT0gU2hvdWxkRmlsdGVyQmFz
ZUFuZFZhbHVlIHx8IG1vZGUgPT0gU2hvdWxkRmlsdGVyQmFzZSkKQEAgLTExODUsNiArMTE3OSwx
OCBAQCB2b2lkIEpJVDo6ZW1pdFdyaXRlQmFycmllcih1bnNpZ25lZCBvd25lciwgdW5zaWduZWQg
dmFsdWUsIFdyaXRlQmFycmllck1vZGUgbW9kZQogCiAgICAgaWYgKG1vZGUgPT0gU2hvdWxkRmls
dGVyQmFzZUFuZFZhbHVlIHx8IG1vZGUgPT0gU2hvdWxkRmlsdGVyQmFzZSkKICAgICAgICAgb3du
ZXJOb3RDZWxsLmxpbmsodGhpcyk7Cit9CisKK3ZvaWQgSklUOjplbWl0V3JpdGVCYXJyaWVyKHVu
c2lnbmVkIG93bmVyLCB1bnNpZ25lZCB2YWx1ZSwgV3JpdGVCYXJyaWVyTW9kZSBtb2RlKQorewor
ICAgIEp1bXAgdmFsdWVOb3RDZWxsOworICAgIGlmIChtb2RlID09IFNob3VsZEZpbHRlclZhbHVl
IHx8IG1vZGUgPT0gU2hvdWxkRmlsdGVyQmFzZUFuZFZhbHVlKSB7CisgICAgICAgIGVtaXRHZXRW
aXJ0dWFsUmVnaXN0ZXIodmFsdWUsIHJlZ1QwKTsKKyAgICAgICAgdmFsdWVOb3RDZWxsID0gYnJh
bmNoVGVzdDY0KE5vblplcm8sIHJlZ1QwLCB0YWdNYXNrUmVnaXN0ZXIpOworICAgIH0KKworICAg
IGVtaXRXcml0ZUJhcnJpZXIob3duZXIsIG1vZGUpOworCiAgICAgaWYgKG1vZGUgPT0gU2hvdWxk
RmlsdGVyVmFsdWUgfHwgbW9kZSA9PSBTaG91bGRGaWx0ZXJCYXNlQW5kVmFsdWUpIAogICAgICAg
ICB2YWx1ZU5vdENlbGwubGluayh0aGlzKTsKIH0KQEAgLTEyMDQsMTQgKzEyMTAsOCBAQCB2b2lk
IEpJVDo6ZW1pdFdyaXRlQmFycmllcihKU0NlbGwqIG93bmVyLCB1bnNpZ25lZCB2YWx1ZSwgV3Jp
dGVCYXJyaWVyTW9kZSBtb2RlKQogCiAjZWxzZSAvLyBVU0UoSlNWQUxVRTY0KQogCi12b2lkIEpJ
VDo6ZW1pdFdyaXRlQmFycmllcih1bnNpZ25lZCBvd25lciwgdW5zaWduZWQgdmFsdWUsIFdyaXRl
QmFycmllck1vZGUgbW9kZSkKK3ZvaWQgSklUOjplbWl0V3JpdGVCYXJyaWVyKHVuc2lnbmVkIG93
bmVyLCBXcml0ZUJhcnJpZXJNb2RlIG1vZGUpCiB7Ci0gICAgSnVtcCB2YWx1ZU5vdENlbGw7Ci0g
ICAgaWYgKG1vZGUgPT0gU2hvdWxkRmlsdGVyVmFsdWUgfHwgbW9kZSA9PSBTaG91bGRGaWx0ZXJC
YXNlQW5kVmFsdWUpIHsKLSAgICAgICAgZW1pdExvYWRUYWcodmFsdWUsIHJlZ1QwKTsKLSAgICAg
ICAgdmFsdWVOb3RDZWxsID0gYnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QwLCBUcnVzdGVkSW1tMzIo
SlNWYWx1ZTo6Q2VsbFRhZykpOwotICAgIH0KLSAgICAKICAgICBlbWl0TG9hZChvd25lciwgcmVn
VDAsIHJlZ1QxKTsKICAgICBKdW1wIG93bmVyTm90Q2VsbDsKICAgICBpZiAobW9kZSA9PSBTaG91
bGRGaWx0ZXJCYXNlIHx8IG1vZGUgPT0gU2hvdWxkRmlsdGVyQmFzZUFuZFZhbHVlKQpAQCAtMTIy
Myw3ICsxMjIzLDIwIEBAIHZvaWQgSklUOjplbWl0V3JpdGVCYXJyaWVyKHVuc2lnbmVkIG93bmVy
LCB1bnNpZ25lZCB2YWx1ZSwgV3JpdGVCYXJyaWVyTW9kZSBtb2RlCiAKICAgICBpZiAobW9kZSA9
PSBTaG91bGRGaWx0ZXJCYXNlIHx8IG1vZGUgPT0gU2hvdWxkRmlsdGVyQmFzZUFuZFZhbHVlKQog
ICAgICAgICBvd25lck5vdENlbGwubGluayh0aGlzKTsKLSAgICBpZiAobW9kZSA9PSBTaG91bGRG
aWx0ZXJWYWx1ZSB8fCBtb2RlID09IFNob3VsZEZpbHRlckJhc2VBbmRWYWx1ZSkgCit9CisKKwor
dm9pZCBKSVQ6OmVtaXRXcml0ZUJhcnJpZXIodW5zaWduZWQgb3duZXIsIHVuc2lnbmVkIHZhbHVl
LCBXcml0ZUJhcnJpZXJNb2RlIG1vZGUpCit7CisgICAgSnVtcCB2YWx1ZU5vdENlbGw7CisgICAg
aWYgKG1vZGUgPT0gU2hvdWxkRmlsdGVyVmFsdWUgfHwgbW9kZSA9PSBTaG91bGRGaWx0ZXJCYXNl
QW5kVmFsdWUpIHsKKyAgICAgICAgZW1pdExvYWRUYWcodmFsdWUsIHJlZ1QwKTsKKyAgICAgICAg
dmFsdWVOb3RDZWxsID0gYnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QwLCBUcnVzdGVkSW1tMzIoSlNW
YWx1ZTo6Q2VsbFRhZykpOworICAgIH0KKworICAgIGVtaXRXcml0ZUJhcnJpZXIob3duZXIsIG1v
ZGUpOworCisgICAgaWYgKG1vZGUgPT0gU2hvdWxkRmlsdGVyVmFsdWUgfHwgbW9kZSA9PSBTaG91
bGRGaWx0ZXJCYXNlQW5kVmFsdWUpCiAgICAgICAgIHZhbHVlTm90Q2VsbC5saW5rKHRoaXMpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRz
RXh0cmFjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNF
eHRyYWN0b3IuY3BwCmluZGV4IDhlYjlhNTBlZGZmNTZkZGE2YzNjNzQ2ODZjYTRkMjU4ZmM5NzNj
OWMuLmRkNmVhMDJkNmM2OTQzNDZlNDAwNjYxMGUzOTAyMjY0YmVkMmI3NmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3Bw
CkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiRGlyZWN0QXJndW1lbnRzLmgiCiAjaW5jbHVk
ZSAiRXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAiRXhlY3V0YWJsZS5oIgorI2luY2x1ZGUgIkdlbmVy
YXRvckZyYW1lLmgiCiAjaW5jbHVkZSAiSGVhcC5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgi
CiAjaW5jbHVkZSAiSlNBcnJheS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCmluZGV4IGRmYTZmZDVhNGE4NGEwYWY0YjA3ZWY0
Y2QzMDU5OTE5MGY2MjIyMjYuLmI3ZDFmM2YzNDI2NTI5NmEyY2Y5ZGI2MDNkNzVkNTU3ODUxOTc3
MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVy
cHJldGVyLmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlci5hc20KQEAgLTEyODYsNiArMTI4NiwxMiBAQCBfbGxpbnRfb3BfbmV3X3JlZ2V4cDoK
ICAgICBkaXNwYXRjaCgzKQogCiAKK19sbGludF9vcF9uZXdfZ2VuZXJhdG9yX2ZyYW1lOgorICAg
IHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsU2xvd1BhdGgoX3Nsb3dfcGF0aF9uZXdfZ2VuZXJh
dG9yX2ZyYW1lKQorICAgIGRpc3BhdGNoKDMpCisKKwogX2xsaW50X29wX2xlc3M6CiAgICAgdHJh
Y2VFeGVjdXRpb24oKQogICAgIGNhbGxPcGNvZGVTbG93UGF0aChfc2xvd19wYXRoX2xlc3MpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKaW5kZXggN2Y5NmJhNDgwMGQyN2M4
NTRjMzk1ZjRmMjY2N2VhMTU4MGMwNjdmOC4uYTY3Y2ZhZTdkMzg0NGEzODgzMjEyMzY4NzMzOTJl
ODkzYjU4YTE2MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJz
ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcApAQCAt
MjU2LDcgKzI1Niw3IEBAIFN0cmluZyBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJbm5lcihjb25z
dCBJZGVudGlmaWVyJiBjYWxsZWVOYW1lLCBTb3VyY2VQYXJzZU1vCiAgICAgaWYgKG1fbGV4ZXIt
PmlzUmVwYXJzaW5nRnVuY3Rpb24oKSkgewogICAgICAgICBQYXJzZXJGdW5jdGlvbkluZm88QVNU
QnVpbGRlcj4gZnVuY3Rpb25JbmZvOwogICAgICAgICBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBh
cnNlTW9kZTo6R2VuZXJhdG9yQm9keU1vZGUpCi0gICAgICAgICAgICBtX3BhcmFtZXRlcnMgPSBj
cmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKGNvbnRleHQpOworICAgICAgICAgICAgbV9wYXJhbWV0
ZXJzID0gY3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhjb250ZXh0LCBmdW5jdGlvbkluZm8ucGFy
YW1ldGVyQ291bnQpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBtX3BhcmFtZXRlcnMgPSBw
YXJzZUZ1bmN0aW9uUGFyYW1ldGVycyhjb250ZXh0LCBwYXJzZU1vZGUsIGZ1bmN0aW9uSW5mbyk7
CiAKQEAgLTQ5OSwxMCArNDk5LDkgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVl
U291cmNlRWxlbWVudHMgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlR2VuZXJhdG8KIAogICAgIFBh
cnNlckZ1bmN0aW9uSW5mbzxUcmVlQnVpbGRlcj4gaW5mbzsKICAgICBpbmZvLm5hbWUgPSAmbV92
bS0+cHJvcGVydHlOYW1lcy0+bnVsbElkZW50aWZpZXI7Ci0gICAgY3JlYXRlR2VuZXJhdG9yUGFy
YW1ldGVycyhjb250ZXh0KTsKKyAgICBjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKGNvbnRleHQs
IGluZm8ucGFyYW1ldGVyQ291bnQpOwogICAgIGluZm8uc3RhcnRPZmZzZXQgPSBwYXJhbWV0ZXJz
U3RhcnQ7CiAgICAgaW5mby5zdGFydExpbmUgPSB0b2tlbkxpbmUoKTsKLSAgICBpbmZvLnBhcmFt
ZXRlckNvdW50ID0gNDsgLy8gZ2VuZXJhdG9yLCBzdGF0ZSwgdmFsdWUsIHJlc3VtZSBtb2RlCiAK
ICAgICB7CiAgICAgICAgIEF1dG9Qb3BTY29wZVJlZiBnZW5lcmF0b3JCb2R5U2NvcGUodGhpcywg
cHVzaFNjb3BlKCkpOwpAQCAtMTg5MSwzMiArMTg5MCwzMCBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUg
TGV4ZXJUeXBlPiB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXIsIGNsYXNzIEZ1bmN0aW9uSW5m
b1R5cAogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgotdGVtcGxhdGUgPGNsYXNz
IFRyZWVCdWlsZGVyPiB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6Rm9ybWFsUGFyYW1ldGVyTGlzdCBQ
YXJzZXI8TGV4ZXJUeXBlPjo6Y3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhUcmVlQnVpbGRlciYg
Y29udGV4dCkKK3RlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gdHlwZW5hbWUgVHJlZUJ1aWxk
ZXI6OkZvcm1hbFBhcmFtZXRlckxpc3QgUGFyc2VyPExleGVyVHlwZT46OmNyZWF0ZUdlbmVyYXRv
clBhcmFtZXRlcnMoVHJlZUJ1aWxkZXImIGNvbnRleHQsIHVuc2lnbmVkJiBwYXJhbWV0ZXJDb3Vu
dCkKIHsKICAgICBhdXRvIHBhcmFtZXRlcnMgPSBjb250ZXh0LmNyZWF0ZUZvcm1hbFBhcmFtZXRl
ckxpc3QoKTsKIAogICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkp
OwogICAgIEpTVGV4dFBvc2l0aW9uIHBvc2l0aW9uID0gdG9rZW5TdGFydFBvc2l0aW9uKCk7CiAK
LSAgICAvLyBAZ2VuZXJhdG9yCi0gICAgZGVjbGFyZVBhcmFtZXRlcigmbV92bS0+cHJvcGVydHlO
YW1lcy0+YnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yUHJpdmF0ZU5hbWUoKSk7Ci0gICAgYXV0byBn
ZW5lcmF0b3IgPSBjb250ZXh0LmNyZWF0ZUJpbmRpbmdMb2NhdGlvbihsb2NhdGlvbiwgbV92bS0+
cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yUHJpdmF0ZU5hbWUoKSwgcG9z
aXRpb24sIHBvc2l0aW9uLCBBc3NpZ25tZW50Q29udGV4dDo6RGVjbGFyYXRpb25TdGF0ZW1lbnQp
OwotICAgIGNvbnRleHQuYXBwZW5kUGFyYW1ldGVyKHBhcmFtZXRlcnMsIGdlbmVyYXRvciwgMCk7
CisgICAgYXV0byBhZGRQYXJhbWV0ZXIgPSBbJl0oY29uc3QgSWRlbnRpZmllciYgbmFtZSkgewor
ICAgICAgICBkZWNsYXJlUGFyYW1ldGVyKCZuYW1lKTsKKyAgICAgICAgYXV0byBiaW5kaW5nID0g
Y29udGV4dC5jcmVhdGVCaW5kaW5nTG9jYXRpb24obG9jYXRpb24sIG5hbWUsIHBvc2l0aW9uLCBw
b3NpdGlvbiwgQXNzaWdubWVudENvbnRleHQ6OkRlY2xhcmF0aW9uU3RhdGVtZW50KTsKKyAgICAg
ICAgY29udGV4dC5hcHBlbmRQYXJhbWV0ZXIocGFyYW1ldGVycywgYmluZGluZywgMCk7CisgICAg
ICAgICsrcGFyYW1ldGVyQ291bnQ7CisgICAgfTsKIAorICAgIC8vIEBnZW5lcmF0b3IKKyAgICBh
ZGRQYXJhbWV0ZXIobV92bS0+cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9y
UHJpdmF0ZU5hbWUoKSk7CiAgICAgLy8gQGdlbmVyYXRvclN0YXRlCi0gICAgZGVjbGFyZVBhcmFt
ZXRlcigmbV92bS0+cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yU3RhdGVQ
cml2YXRlTmFtZSgpKTsKLSAgICBhdXRvIGdlbmVyYXRvclN0YXRlID0gY29udGV4dC5jcmVhdGVC
aW5kaW5nTG9jYXRpb24obG9jYXRpb24sIG1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1l
cygpLmdlbmVyYXRvclN0YXRlUHJpdmF0ZU5hbWUoKSwgcG9zaXRpb24sIHBvc2l0aW9uLCBBc3Np
Z25tZW50Q29udGV4dDo6RGVjbGFyYXRpb25TdGF0ZW1lbnQpOwotICAgIGNvbnRleHQuYXBwZW5k
UGFyYW1ldGVyKHBhcmFtZXRlcnMsIGdlbmVyYXRvclN0YXRlLCAwKTsKLQorICAgIGFkZFBhcmFt
ZXRlcihtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JTdGF0ZVBy
aXZhdGVOYW1lKCkpOwogICAgIC8vIEBnZW5lcmF0b3JWYWx1ZQotICAgIGRlY2xhcmVQYXJhbWV0
ZXIoJm1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclZhbHVlUHJp
dmF0ZU5hbWUoKSk7Ci0gICAgYXV0byBnZW5lcmF0b3JWYWx1ZSA9IGNvbnRleHQuY3JlYXRlQmlu
ZGluZ0xvY2F0aW9uKGxvY2F0aW9uLCBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMo
KS5nZW5lcmF0b3JWYWx1ZVByaXZhdGVOYW1lKCksIHBvc2l0aW9uLCBwb3NpdGlvbiwgQXNzaWdu
bWVudENvbnRleHQ6OkRlY2xhcmF0aW9uU3RhdGVtZW50KTsKLSAgICBjb250ZXh0LmFwcGVuZFBh
cmFtZXRlcihwYXJhbWV0ZXJzLCBnZW5lcmF0b3JWYWx1ZSwgMCk7Ci0KKyAgICBhZGRQYXJhbWV0
ZXIobV92bS0+cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yVmFsdWVQcml2
YXRlTmFtZSgpKTsKICAgICAvLyBAZ2VuZXJhdG9yUmVzdW1lTW9kZQotICAgIGRlY2xhcmVQYXJh
bWV0ZXIoJm1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclJlc3Vt
ZU1vZGVQcml2YXRlTmFtZSgpKTsKLSAgICBhdXRvIGdlbmVyYXRvclJlc3VtZU1vZGUgPSBjb250
ZXh0LmNyZWF0ZUJpbmRpbmdMb2NhdGlvbihsb2NhdGlvbiwgbV92bS0+cHJvcGVydHlOYW1lcy0+
YnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yUmVzdW1lTW9kZVByaXZhdGVOYW1lKCksIHBvc2l0aW9u
LCBwb3NpdGlvbiwgQXNzaWdubWVudENvbnRleHQ6OkRlY2xhcmF0aW9uU3RhdGVtZW50KTsKLSAg
ICBjb250ZXh0LmFwcGVuZFBhcmFtZXRlcihwYXJhbWV0ZXJzLCBnZW5lcmF0b3JSZXN1bWVNb2Rl
LCAwKTsKKyAgICBhZGRQYXJhbWV0ZXIobV92bS0+cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVz
KCkuZ2VuZXJhdG9yUmVzdW1lTW9kZVByaXZhdGVOYW1lKCkpOworICAgIC8vIEBnZW5lcmF0b3JG
cmFtZQorICAgIGFkZFBhcmFtZXRlcihtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMo
KS5nZW5lcmF0b3JGcmFtZVByaXZhdGVOYW1lKCkpOwogCiAgICAgcmV0dXJuIHBhcmFtZXRlcnM7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAppbmRleCAwNWQzNGE3MTg1ZTdi
NGZiY2QwMTE5N2MwZmE1NDMwY2VkNDRkMmFhLi5kMGNjOTlmMjdmNTA1N2JjZDBjNzVmODg2NDdm
ZGU3ZGY4NjU4MTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Bh
cnNlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKQEAgLTE0
NDIsNyArMTQ0Miw3IEBAIGNsYXNzIFBhcnNlciB7CiAgICAgQUxXQVlTX0lOTElORSBib29sIGlz
QXJyb3dGdW5jdGlvblBhcmFtZXRlcnMoKTsKICAgICAKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJl
ZUJ1aWxkZXIsIGNsYXNzIEZ1bmN0aW9uSW5mb1R5cGU+IE5FVkVSX0lOTElORSB0eXBlbmFtZSBU
cmVlQnVpbGRlcjo6Rm9ybWFsUGFyYW1ldGVyTGlzdCBwYXJzZUZ1bmN0aW9uUGFyYW1ldGVycyhU
cmVlQnVpbGRlciYsIFNvdXJjZVBhcnNlTW9kZSwgRnVuY3Rpb25JbmZvVHlwZSYpOwotICAgIHRl
bXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gTkVWRVJfSU5MSU5FIHR5cGVuYW1lIFRyZWVCdWls
ZGVyOjpGb3JtYWxQYXJhbWV0ZXJMaXN0IGNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMoVHJlZUJ1
aWxkZXImKTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElORSB0
eXBlbmFtZSBUcmVlQnVpbGRlcjo6Rm9ybWFsUGFyYW1ldGVyTGlzdCBjcmVhdGVHZW5lcmF0b3JQ
YXJhbWV0ZXJzKFRyZWVCdWlsZGVyJiwgdW5zaWduZWQmIHBhcmFtZXRlckNvdW50KTsKIAogICAg
IHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gTkVWRVJfSU5MSU5FIFRyZWVDbGFzc0V4cHJl
c3Npb24gcGFyc2VDbGFzcyhUcmVlQnVpbGRlciYsIEZ1bmN0aW9uUmVxdWlyZW1lbnRzLCBQYXJz
ZXJDbGFzc0luZm88VHJlZUJ1aWxkZXI+Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCmluZGV4IGExNTc4OTE3ZWZiNjFkNDUxMGIy
NTEwYWNmODI1NTQ3NjU2NjhlYWYuLmIxNTEyNGM5YzU2MjQ2ZGZhYWEyNGQ4MmYyYzFlNDUzZDJl
N2ViMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNs
b3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xv
d1BhdGhzLmNwcApAQCAtNzE5LDE4ICs3MTksNyBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhf
c2F2ZSkKICAgICAvLyBPbmx5IHNhdmUgdmFyaWFibGVzIGFuZCB0ZW1wb3JhcnkgcmVnaXN0ZXJz
LiBUaGUgc2NvcGUgcmVnaXN0ZXJzIGFyZSBpbmNsdWRlZCBpbiB0aGVtLgogICAgIC8vIEJ1dCBw
YXJhbWV0ZXJzIGFyZSBub3QgaW5jbHVkZWQuIEJlY2F1c2UgdGhlIGdlbmVyYXRvciBpbXBsZW1l
bnRhdGlvbiByZXBsYWNlcyB0aGUgdmFsdWVzIG9mIHBhcmFtZXRlcnMgb24gZWFjaCBnZW5lcmF0
b3IubmV4dCgpIGNhbGwuCiAgICAgQkVHSU4oKTsKLSAgICBKU1ZhbHVlIGdlbmVyYXRvciA9IE9Q
KDEpLmpzVmFsdWUoKTsKLSAgICBHZW5lcmF0b3JGcmFtZSogZnJhbWUgPSBudWxscHRyOwotICAg
IEpTVmFsdWUgdmFsdWUgPSBnZW5lcmF0b3IuZ2V0KGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMo
KS5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JGcmFtZVByaXZhdGVOYW1lKCkpOwotICAgIGlmICgh
dmFsdWUuaXNOdWxsKCkpCi0gICAgICAgIGZyYW1lID0ganNDYXN0PEdlbmVyYXRvckZyYW1lKj4o
dmFsdWUpOwotICAgIGVsc2UgewotICAgICAgICAvLyBGSVhNRTogT25jZSBKU0dlbmVyYXRvciBz
cGVjaWFsaXplZCBvYmplY3QgaXMgaW50cm9kdWNlZCwgdGhpcyBHZW5lcmF0b3JGcmFtZSBzaG91
bGQgYmUgZW1iZWRlZCBpbnRvIGl0IHRvIGF2b2lkIGFsbG9jYXRpb25zLgotICAgICAgICAvLyBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNTQ1Ci0gICAgICAgIGZy
YW1lID0gR2VuZXJhdG9yRnJhbWU6OmNyZWF0ZShleGVjLT52bSgpLCAgZXhlYy0+Y29kZUJsb2Nr
KCktPm51bUNhbGxlZUxvY2FscygpKTsKLSAgICAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoZ2Vu
ZXJhdG9yLCB0cnVlLCBQdXRQcm9wZXJ0eVNsb3Q6OlB1dEJ5SWQpOwotICAgICAgICBhc09iamVj
dChnZW5lcmF0b3IpLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+cHV0KGFzT2JqZWN0KGdlbmVy
YXRvciksIGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5nZW5lcmF0
b3JGcmFtZVByaXZhdGVOYW1lKCksIGZyYW1lLCBzbG90KTsKLSAgICB9CisgICAgR2VuZXJhdG9y
RnJhbWUqIGZyYW1lID0ganNDYXN0PEdlbmVyYXRvckZyYW1lKj4oT1AoMSkuanNWYWx1ZSgpKTsK
ICAgICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSBwY1syXS51LnVuc2lnbmVkVmFs
dWU7CiAgICAgZnJhbWUtPnNhdmUoZXhlYywgZXhlYy0+Y29kZUJsb2NrKCktPmxpdmVDYWxsZWVM
b2NhbHNBdFlpZWxkKGxpdmVDYWxsZWVMb2NhbHNJbmRleCkpOwogICAgIEVORCgpOwpAQCAtNzM5
LDggKzcyOCw3IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9zYXZlKQogU0xPV19QQVRIX0RF
Q0woc2xvd19wYXRoX3Jlc3VtZSkKIHsKICAgICBCRUdJTigpOwotICAgIEpTVmFsdWUgZ2VuZXJh
dG9yID0gT1AoMSkuanNWYWx1ZSgpOwotICAgIEdlbmVyYXRvckZyYW1lKiBmcmFtZSA9IGpzQ2Fz
dDxHZW5lcmF0b3JGcmFtZSo+KGdlbmVyYXRvci5nZXQoZXhlYywgZXhlYy0+cHJvcGVydHlOYW1l
cygpLmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvckZyYW1lUHJpdmF0ZU5hbWUoKSkpOworICAgIEdl
bmVyYXRvckZyYW1lKiBmcmFtZSA9IGpzQ2FzdDxHZW5lcmF0b3JGcmFtZSo+KE9QKDEpLmpzVmFs
dWUoKSk7CiAgICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gcGNbMl0udS51bnNp
Z25lZFZhbHVlOwogICAgIGZyYW1lLT5yZXN1bWUoZXhlYywgZXhlYy0+Y29kZUJsb2NrKCktPmxp
dmVDYWxsZWVMb2NhbHNBdFlpZWxkKGxpdmVDYWxsZWVMb2NhbHNJbmRleCkpOwogICAgIEVORCgp
OwpAQCAtODk5LDQgKzg4NywxMiBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHV0X2J5X3Zh
bF93aXRoX3RoaXMpCiAgICAgRU5EKCk7CiB9CiAKK1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9u
ZXdfZ2VuZXJhdG9yX2ZyYW1lKQoreworICAgIEJFR0lOKCk7CisgICAgdW5zaWduZWQgZ2VuZXJh
dG9yTG9jYWxzU2l6ZSA9IHBjWzJdLnUudW5zaWduZWRWYWx1ZTsKKyAgICBSRVRVUk4oR2VuZXJh
dG9yRnJhbWU6OmNyZWF0ZShleGVjLCBnZW5lcmF0b3JMb2NhbHNTaXplKSk7Cit9CisKKwogfSAv
LyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21tb25TbG93UGF0aHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1v
blNsb3dQYXRocy5oCmluZGV4IDc4NDEwOWM1NzgyMzQ2OWZjZjEwNWQ1NDAzYWQwNGY2ZWU5OTUx
M2YuLmM1OTkyMzRiMjg2N2ExMTQxOWM4YWQ2NDcxYTcyODAwM2YyN2YwYTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCkBAIC0yNTYsNiAr
MjU2LDcgQEAgU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9nZXRfYnlfaWRfd2l0aF90
aGlzKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfZ2V0X2J5X3ZhbF93aXRoX3Ro
aXMpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9wdXRfYnlfaWRfd2l0aF90aGlz
KTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcHV0X2J5X3ZhbF93aXRoX3RoaXMp
OworU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9uZXdfZ2VuZXJhdG9yX2ZyYW1lKTsK
IAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0dlbmVyYXRvckZyYW1lLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0dlbmVyYXRvckZyYW1lLmNwcAppbmRleCBlZjZlYTdhMTAwMjU4YzNlY2UwNGRhYWI0M2Jk
YWE4NTFlYzhmNzE1Li4wZGNiNTE0YTQyMDk5OWZiZjU5ZGYxOGJkZGY1N2MzMGFkYTc5ZTkxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGcmFtZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJhbWUuY3Bw
CkBAIC0zMCwxNSArMzAsMTYgQEAKICNpbmNsdWRlICJIZWFwSXRlcmF0aW9uU2NvcGUuaCIKICNp
bmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIK
KyNpbmNsdWRlICJKU09iamVjdElubGluZXMuaCIKICNpbmNsdWRlICJTbG90VmlzaXRvcklubGlu
ZXMuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCiAKIG5hbWVzcGFjZSBKU0Mgewog
Ci1jb25zdCBDbGFzc0luZm8gR2VuZXJhdG9yRnJhbWU6OnNfaW5mbyA9IHsgIkdlbmVyYXRvckZy
YW1lIiwgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShHZW5lcmF0b3JGcmFt
ZSkgfTsKK2NvbnN0IENsYXNzSW5mbyBHZW5lcmF0b3JGcmFtZTo6c19pbmZvID0geyAiR2VuZXJh
dG9yRnJhbWUiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEdl
bmVyYXRvckZyYW1lKSB9OwogCi1HZW5lcmF0b3JGcmFtZTo6R2VuZXJhdG9yRnJhbWUoVk0mIHZt
LCBzaXplX3QgbnVtYmVyT2ZDYWxsZWVMb2NhbHMpCi0gICAgOiBCYXNlKHZtLCB2bS5nZW5lcmF0
b3JGcmFtZVN0cnVjdHVyZS5nZXQoKSkKK0dlbmVyYXRvckZyYW1lOjpHZW5lcmF0b3JGcmFtZShW
TSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCB1aW50MzJfdCBudW1iZXJPZkNhbGxlZUxvY2Fs
cykKKyAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkKICAgICAsIG1fbnVtYmVyT2ZDYWxsZWVMb2Nh
bHMobnVtYmVyT2ZDYWxsZWVMb2NhbHMpCiB7CiB9CkBAIC00NiwzMyArNDcsNDIgQEAgR2VuZXJh
dG9yRnJhbWU6OkdlbmVyYXRvckZyYW1lKFZNJiB2bSwgc2l6ZV90IG51bWJlck9mQ2FsbGVlTG9j
YWxzKQogdm9pZCBHZW5lcmF0b3JGcmFtZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogewogICAg
IEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBKU1ZhbHVlIGVtcHR5VmFsdWU7CiAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX251bWJlck9mQ2FsbGVlTG9jYWxzOyArK2kpCi0gICAg
ICAgIGxvY2FsQXQoaSkuY2xlYXIoKTsKKyAgICAgICAgbG9jYWxBdChpKS5zZXRTdGFydGluZ1Zh
bHVlKGVtcHR5VmFsdWUpOwogfQogCiBTdHJ1Y3R1cmUqIEdlbmVyYXRvckZyYW1lOjpjcmVhdGVT
dHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHBy
b3RvdHlwZSkKIHsKLSAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVj
dCwgcHJvdG90eXBlLCBUeXBlSW5mbyhDZWxsVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkp
OworICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5
cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKIH0KIAot
R2VuZXJhdG9yRnJhbWUqIEdlbmVyYXRvckZyYW1lOjpjcmVhdGUoVk0mIHZtLCBzaXplX3QgbnVt
YmVyT2ZMb2NhbHMpCitHZW5lcmF0b3JGcmFtZSogR2VuZXJhdG9yRnJhbWU6OmNyZWF0ZShWTSYg
dm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBzaXplX3QgbnVtYmVyT2ZDYWxsZWVMb2NhbHMpCiB7
CiAgICAgR2VuZXJhdG9yRnJhbWUqIHJlc3VsdCA9CiAgICAgICAgIG5ldyAoCiAgICAgICAgICAg
ICBOb3ROdWxsLAotICAgICAgICAgICAgYWxsb2NhdGVDZWxsPEdlbmVyYXRvckZyYW1lPih2bS5o
ZWFwLCBhbGxvY2F0aW9uU2l6ZUZvckxvY2FscyhudW1iZXJPZkxvY2FscykpKQotICAgICAgICBH
ZW5lcmF0b3JGcmFtZSh2bSwgbnVtYmVyT2ZMb2NhbHMpOworICAgICAgICAgICAgYWxsb2NhdGVD
ZWxsPEdlbmVyYXRvckZyYW1lPih2bS5oZWFwLCBhbGxvY2F0aW9uU2l6ZUZvckxvY2FscyhudW1i
ZXJPZkNhbGxlZUxvY2FscykpKQorICAgICAgICBHZW5lcmF0b3JGcmFtZSh2bSwgc3RydWN0dXJl
LCBudW1iZXJPZkNhbGxlZUxvY2Fscyk7CiAgICAgcmVzdWx0LT5maW5pc2hDcmVhdGlvbih2bSk7
CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorR2VuZXJhdG9yRnJhbWUqIEdlbmVyYXRvckZyYW1l
OjpjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBzaXplX3QgbnVtYmVyT2ZDYWxsZWVMb2NhbHMpCit7
CisgICAgcmV0dXJuIGNyZWF0ZShleGVjLT52bSgpLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0
KCktPmdlbmVyYXRvckZyYW1lU3RydWN0dXJlKCksIG51bWJlck9mQ2FsbGVlTG9jYWxzKTsKK30K
Kwogdm9pZCBHZW5lcmF0b3JGcmFtZTo6c2F2ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEZhc3RC
aXRWZWN0b3ImIGxpdmVDYWxsZWVMb2NhbHMpCiB7CisgICAgLy8gQWxsb2NhdGUgdGhlIGdlbmVy
YXRvciBsb2NhbCBzcGFjZSBmaXJzdC4KKyAgICBtX251bWJlck9mU2F2ZWRDYWxsZWVMb2NhbHMg
PSBsaXZlQ2FsbGVlTG9jYWxzLmJpdENvdW50KCk7CisKICAgICAvLyBPbmx5IHNhdmUgY2FsbGVl
IGxvY2Fscy4KICAgICAvLyBFdmVyeSB0aW1lIGEgZ2VuZXJhdG9yIGlzIGNhbGxlZCAob3IgcmVz
dW1lZCksIHBhcmFtZXRlcnMgc2hvdWxkIGJlIHJlcGxhY2VkLgotICAgIEFTU0VSVChsaXZlQ2Fs
bGVlTG9jYWxzLm51bUJpdHMoKSA8PSBtX251bWJlck9mQ2FsbGVlTG9jYWxzKTsKKyAgICB1bnNp
Z25lZCBnZW5lcmF0b3JMb2NhbEluZGV4ID0gMDsKICAgICBsaXZlQ2FsbGVlTG9jYWxzLmZvckVh
Y2hTZXRCaXQoWyZdKHNpemVfdCBpbmRleCkgewotICAgICAgICBsb2NhbEF0KGluZGV4KS5zZXQo
ZXhlYy0+dm0oKSwgdGhpcywgZXhlYy0+dW5jaGVja2VkUih2aXJ0dWFsUmVnaXN0ZXJGb3JMb2Nh
bChpbmRleCkpLmpzVmFsdWUoKSk7CisgICAgICAgIGxvY2FsQXQoZ2VuZXJhdG9yTG9jYWxJbmRl
eCsrKS5zZXQoZXhlYy0+dm0oKSwgdGhpcywgZXhlYy0+dW5jaGVja2VkUih2aXJ0dWFsUmVnaXN0
ZXJGb3JMb2NhbChpbmRleCkpLmpzVmFsdWUoKSk7CiAgICAgfSk7CiB9CiAKQEAgLTgwLDEwICs5
MCwxMSBAQCB2b2lkIEdlbmVyYXRvckZyYW1lOjpyZXN1bWUoRXhlY1N0YXRlKiBleGVjLCBjb25z
dCBGYXN0Qml0VmVjdG9yJiBsaXZlQ2FsbGVlTG9jYQogewogICAgIC8vIE9ubHkgcmVzdW1lIGNh
bGxlZSBsb2NhbHMuCiAgICAgLy8gRXZlcnkgdGltZSBhIGdlbmVyYXRvciBpcyBjYWxsZWQgKG9y
IHJlc3VtZWQpLCBwYXJhbWV0ZXJzIHNob3VsZCBiZSByZXBsYWNlZC4KKyAgICB1bnNpZ25lZCBn
ZW5lcmF0b3JMb2NhbEluZGV4ID0gMDsKICAgICBsaXZlQ2FsbGVlTG9jYWxzLmZvckVhY2hTZXRC
aXQoWyZdKHNpemVfdCBpbmRleCkgewotICAgICAgICBleGVjLT51bmNoZWNrZWRSKHZpcnR1YWxS
ZWdpc3RlckZvckxvY2FsKGluZGV4KSkgPSBsb2NhbEF0KGluZGV4KS5nZXQoKTsKLSAgICAgICAg
bG9jYWxBdChpbmRleCkuY2xlYXIoKTsKKyAgICAgICAgZXhlYy0+dW5jaGVja2VkUih2aXJ0dWFs
UmVnaXN0ZXJGb3JMb2NhbChpbmRleCkpID0gbG9jYWxBdChnZW5lcmF0b3JMb2NhbEluZGV4Kysp
LmdldCgpOwogICAgIH0pOworICAgIG1fbnVtYmVyT2ZTYXZlZENhbGxlZUxvY2FscyA9IDA7CiB9
CiAKIHZvaWQgR2VuZXJhdG9yRnJhbWU6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90
VmlzaXRvciYgdmlzaXRvcikKQEAgLTkxLDcgKzEwMiwxMiBAQCB2b2lkIEdlbmVyYXRvckZyYW1l
Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAg
R2VuZXJhdG9yRnJhbWUqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8R2VuZXJhdG9yRnJhbWUqPihjZWxs
KTsKICAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwogICAgIC8v
IFNpbmNlIG9ubHkgdHJ1ZSBjZWxsIHBvaW50ZXJzIGFyZSBzdG9yZWQgYXMgYSBjZWxsLCB3ZSBj
YW4gc2FmZWx5IG1hcmsgdGhlbS4KLSAgICB2aXNpdG9yLmFwcGVuZFZhbHVlcyh0aGlzT2JqZWN0
LT5sb2NhbHMoKSwgdGhpc09iamVjdC0+bV9udW1iZXJPZkNhbGxlZUxvY2Fscyk7CisgICAgdmlz
aXRvci5hcHBlbmRWYWx1ZXModGhpc09iamVjdC0+bG9jYWxzKCksIHRoaXNPYmplY3QtPm1fbnVt
YmVyT2ZTYXZlZENhbGxlZUxvY2Fscyk7CisgICAgLy8gQ2xlYXIgbm90IHVzZWQgY2FsbGVlIGxv
Y2FscyB3aGVuIG1hcmtpbmcuCisgICAgLy8gVGhpcyBlbnN1cmVzIHRoYXQsICJpZiBhIGdpdmVu
IGxvY2FsIGhhcyBhIHZhbHVlLCB0aGlzIHZhbHVlIGlzIGNvcnJlY3RseSBtYXJrZWQgaW4gdGhl
IHByZXZpb3VzIG1hcmtpbmcgcGhhc2UiLgorICAgIHNpemVfdCB1bnVzZWRMb2NhbHNDb3VudCA9
IHRoaXNPYmplY3QtPm1fbnVtYmVyT2ZDYWxsZWVMb2NhbHMgLSB0aGlzT2JqZWN0LT5tX251bWJl
ck9mU2F2ZWRDYWxsZWVMb2NhbHM7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB1bnVzZWRM
b2NhbHNDb3VudDsgKytpKQorICAgICAgICB0aGlzT2JqZWN0LT5sb2NhbEF0KHRoaXNPYmplY3Qt
Pm1fbnVtYmVyT2ZTYXZlZENhbGxlZUxvY2FscyArIGkpLmNsZWFyKCk7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2Vu
ZXJhdG9yRnJhbWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZy
YW1lLmgKaW5kZXggM2Q1NDViMTQ3ZGQ0YWJmYjJiYmI5YjVhNzE5NGU4Zjc0ODQxYzQ5YS4uY2Yx
ZGI3YTJiZWU2MGRhMjk0NjRlYzQxN2EwYzVmYjhjMWYwYWU4YSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJhbWUuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGcmFtZS5oCkBAIC0yNywxMSArMjcsMTQgQEAK
ICNkZWZpbmUgR2VuZXJhdG9yRnJhbWVfaAogCiAjaW5jbHVkZSAiSlNDZWxsLmgiCisjaW5jbHVk
ZSAiSlNPYmplY3QuaCIKICNpbmNsdWRlIDx3dGYvRmFzdEJpdFZlY3Rvci5oPgogCiBuYW1lc3Bh
Y2UgSlNDIHsKIAotY2xhc3MgR2VuZXJhdG9yRnJhbWUgOiBwdWJsaWMgSlNDZWxsIHsKK2NsYXNz
IExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKworY2xhc3MgR2VuZXJhdG9yRnJhbWUgOiBwdWJsaWMg
SlNOb25GaW5hbE9iamVjdCB7CiAgICAgZnJpZW5kIGNsYXNzIEpJVDsKICNpZiBFTkFCTEUoREZH
X0pJVCkKICAgICBmcmllbmQgY2xhc3MgREZHOjpTcGVjdWxhdGl2ZUpJVDsKQEAgLTM5LDEyICs0
MiwxMiBAQCBjbGFzcyBHZW5lcmF0b3JGcmFtZSA6IHB1YmxpYyBKU0NlbGwgewogI2VuZGlmCiAg
ICAgZnJpZW5kIGNsYXNzIFZNOwogcHVibGljOgotICAgIHR5cGVkZWYgSlNDZWxsIEJhc2U7Ci0g
ICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gU3RydWN0dXJlSXNJbW1v
cnRhbCB8IEJhc2U6OlN0cnVjdHVyZUZsYWdzOworICAgIHR5cGVkZWYgSlNOb25GaW5hbE9iamVj
dCBCYXNlOwogCiAgICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKIAotICAgIHN0YXRpYyBHZW5lcmF0
b3JGcmFtZSogY3JlYXRlKFZNJiwgc2l6ZV90IG51bWJlck9mQ2FsbGVlTG9jYWxzKTsKKyAgICBz
dGF0aWMgR2VuZXJhdG9yRnJhbWUqIGNyZWF0ZShFeGVjU3RhdGUqLCBzaXplX3QgbnVtYmVyT2ZD
YWxsZWVMb2NhbHMpOworICAgIHN0YXRpYyBHZW5lcmF0b3JGcmFtZSogY3JlYXRlKFZNJiwgU3Ry
dWN0dXJlKiwgc2l6ZV90IG51bWJlck9mQ2FsbGVlTG9jYWxzKTsKIAogICAgIFdyaXRlQmFycmll
ckJhc2U8VW5rbm93bj4qIGxvY2FscygpCiAgICAgewpAQCAtNTMsNyArNTYsNiBAQCBjbGFzcyBH
ZW5lcmF0b3JGcmFtZSA6IHB1YmxpYyBKU0NlbGwgewogCiAgICAgV3JpdGVCYXJyaWVyQmFzZTxV
bmtub3duPiYgbG9jYWxBdChzaXplX3QgaW5kZXgpCiAgICAgewotICAgICAgICBBU1NFUlQoaW5k
ZXggPCBtX251bWJlck9mQ2FsbGVlTG9jYWxzKTsKICAgICAgICAgcmV0dXJuIGxvY2FscygpW2lu
ZGV4XTsKICAgICB9CiAKQEAgLTYyLDYgKzY0LDIxIEBAIGNsYXNzIEdlbmVyYXRvckZyYW1lIDog
cHVibGljIEpTQ2VsbCB7CiAgICAgICAgIHJldHVybiBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Y8
c2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPik+KHNpemVvZihHZW5lcmF0b3JGcmFtZSkpOwog
ICAgIH0KIAorICAgIHN0YXRpYyBzaXplX3QgbG9jYWxPZmZzZXQodW5zaWduZWQgaW5kZXgpCisg
ICAgeworICAgICAgICByZXR1cm4gb2Zmc2V0T2ZMb2NhbHMoKSArIGluZGV4ICogc2l6ZW9mKFdy
aXRlQmFycmllcjxVbmtub3duPik7CisgICAgfQorCisgICAgc3RhdGljIHNpemVfdCBudW1iZXJP
ZkNhbGxlZUxvY2Fsc09mZnNldCgpCisgICAgeworICAgICAgICByZXR1cm4gT0JKRUNUX09GRlNF
VE9GKEdlbmVyYXRvckZyYW1lLCBtX251bWJlck9mQ2FsbGVlTG9jYWxzKTsKKyAgICB9CisKKyAg
ICBzdGF0aWMgc2l6ZV90IG51bWJlck9mU2F2ZWRDYWxsZWVMb2NhbHNPZmZzZXQoKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihHZW5lcmF0b3JGcmFtZSwgbV9udW1iZXJP
ZlNhdmVkQ2FsbGVlTG9jYWxzKTsKKyAgICB9CisKICAgICBzdGF0aWMgc2l6ZV90IGFsbG9jYXRp
b25TaXplRm9yTG9jYWxzKHVuc2lnbmVkIG51bWJlck9mTG9jYWxzKQogICAgIHsKICAgICAgICAg
cmV0dXJuIG9mZnNldE9mTG9jYWxzKCkgKyBudW1iZXJPZkxvY2FscyAqIHNpemVvZihXcml0ZUJh
cnJpZXI8VW5rbm93bj4pOwpAQCAtNzMsMTYgKzkwLDE2IEBAIGNsYXNzIEdlbmVyYXRvckZyYW1l
IDogcHVibGljIEpTQ2VsbCB7CiAgICAgdm9pZCByZXN1bWUoRXhlY1N0YXRlKiwgY29uc3QgRmFz
dEJpdFZlY3RvciYgbGl2ZUNhbGxlZUxvY2Fscyk7CiAKIHByaXZhdGU6Ci0gICAgR2VuZXJhdG9y
RnJhbWUoVk0mLCBzaXplX3QgbnVtYmVyT2ZDYWxsZWVMb2NhbHMpOworICAgIEdlbmVyYXRvckZy
YW1lKFZNJiwgU3RydWN0dXJlKiwgdWludDMyX3QgbnVtYmVyT2ZDYWxsZWVMb2NhbHMpOwogCi0g
ICAgc2l6ZV90IG1fbnVtYmVyT2ZDYWxsZWVMb2NhbHM7CisgICAgdWludDMyX3QgbV9udW1iZXJP
ZkNhbGxlZUxvY2FsczsKKyAgICB1aW50MzJfdCBtX251bWJlck9mU2F2ZWRDYWxsZWVMb2NhbHMg
eyAwIH07CiAKICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogCi0gICAg
dm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOwotCiBwcm90ZWN0ZWQ6CiAgICAgc3RhdGljIHZvaWQg
dmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOworICAgIHZvaWQgZmluaXNoQ3Jl
YXRpb24oVk0mKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IDM1YzEyYTMxNzBlZmUy
M2E3MzgyNjk5MGVlODZlZmFlOTQ0NDBlZGIuLjk0OTZmZWNlODIzYzkwYzA4NzNjMzUwOWE4NDYz
OGE5YmVjMGVlMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5jcHAKQEAgLTUxLDYgKzUxLDcgQEAKICNpbmNsdWRlICJFcnJvclByb3RvdHlw
ZS5oIgogI2luY2x1ZGUgIkZ1bmN0aW9uQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJGdW5jdGlv
blByb3RvdHlwZS5oIgorI2luY2x1ZGUgIkdlbmVyYXRvckZyYW1lLmgiCiAjaW5jbHVkZSAiR2Vu
ZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkdlbmVyYXRvckZ1bmN0aW9u
UHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiR2VuZXJhdG9yUHJvdG90eXBlLmgiCkBAIC01NTMsNiAr
NTU0LDcgQEAgbV8gIyMgcHJvcGVyTmFtZSAjIyBTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBpbnN0
YW5jZVR5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGgKICN1bmRlZiBDUkVBVEVfUFJPVE9UWVBF
X0ZPUl9ERVJJVkVEX0lURVJBVE9SX1RZUEUKIAogICAgIG1fcHJvcGVydHlOYW1lSXRlcmF0b3JT
dHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpjcmVhdGVTdHJ1
Y3R1cmUodm0sIHRoaXMsIG1faXRlcmF0b3JQcm90b3R5cGUuZ2V0KCkpKTsKKyAgICBtX2dlbmVy
YXRvckZyYW1lU3RydWN0dXJlLnNldCh2bSwgdGhpcywgR2VuZXJhdG9yRnJhbWU6OmNyZWF0ZVN0
cnVjdHVyZSh2bSwgdGhpcywganNOdWxsKCkpKTsKICAgICBtX2dlbmVyYXRvclByb3RvdHlwZS5z
ZXQodm0sIHRoaXMsIEdlbmVyYXRvclByb3RvdHlwZTo6Y3JlYXRlKHZtLCB0aGlzLCBHZW5lcmF0
b3JQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9pdGVyYXRvclByb3RvdHlw
ZS5nZXQoKSkpKTsKICAgICAKICAgICAvLyBDb25zdHJ1Y3RvcnMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IGY5MGMxOTExY2JlMjMzN2I5
MjgwNGJkN2M0YzIzNzZhNTczMDhhM2QuLjg4MjE3YmM0OGE4ODRkNjBiNWQyODc2YWU3NTkwMDVk
YTEwZWI2YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuaApAQCAtMjgzLDYgKzI4Myw3IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGlj
IEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9i
amVjdCwgU3RydWN0dXJlPiBtX2NhbGxiYWNrRnVuY3Rpb25TdHJ1Y3R1cmU7CiAgICAgTGF6eVBy
b3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fY2FsbGJhY2tPYmplY3RTdHJ1Y3R1
cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9wcm9wZXJ0eU5hbWVJdGVyYXRvclN0
cnVjdHVyZTsKKyAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2dlbmVyYXRvckZyYW1lU3Ry
dWN0dXJlOwogI2lmIEpTQ19PQkpDX0FQSV9FTkFCTEVECiAgICAgTGF6eVByb3BlcnR5PEpTR2xv
YmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fb2JqY0NhbGxiYWNrRnVuY3Rpb25TdHJ1Y3R1cmU7CiAg
ICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fb2JqY1dyYXBwZXJP
YmplY3RTdHJ1Y3R1cmU7CkBAIC01NTQsNiArNTU1LDcgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3Qg
OiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgU3RydWN0dXJlKiBjYWxs
YmFja0Z1bmN0aW9uU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9jYWxsYmFja0Z1bmN0aW9u
U3RydWN0dXJlLmdldCh0aGlzKTsgfQogICAgIFN0cnVjdHVyZSogY2FsbGJhY2tPYmplY3RTdHJ1
Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2NhbGxiYWNrT2JqZWN0U3RydWN0dXJlLmdldCh0aGlz
KTsgfQogICAgIFN0cnVjdHVyZSogcHJvcGVydHlOYW1lSXRlcmF0b3JTdHJ1Y3R1cmUoKSBjb25z
dCB7IHJldHVybiBtX3Byb3BlcnR5TmFtZUl0ZXJhdG9yU3RydWN0dXJlLmdldCgpOyB9CisgICAg
U3RydWN0dXJlKiBnZW5lcmF0b3JGcmFtZVN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fZ2Vu
ZXJhdG9yRnJhbWVTdHJ1Y3R1cmUuZ2V0KCk7IH0KICNpZiBKU0NfT0JKQ19BUElfRU5BQkxFRAog
ICAgIFN0cnVjdHVyZSogb2JqY0NhbGxiYWNrRnVuY3Rpb25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJl
dHVybiBtX29iamNDYWxsYmFja0Z1bmN0aW9uU3RydWN0dXJlLmdldCh0aGlzKTsgfQogICAgIFN0
cnVjdHVyZSogb2JqY1dyYXBwZXJPYmplY3RTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX29i
amNXcmFwcGVyT2JqZWN0U3RydWN0dXJlLmdldCh0aGlzKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVk0uY3BwCmluZGV4IGQ1OTg5NTFlMjJmMmUyNmM5ZWVhZmY3M2RmZmRlMTRmMTZhNzBh
YWUuLmQzNGFkZDNlYjUyNjY4ZDJhYTE3YmQ4NGY5ZWYxYTRkNDE5NzIxZDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9WTS5jcHAKQEAgLTI0Myw3ICsyNDMsNiBAQCBWTTo6Vk0oVk1UeXBl
IHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgaW5mZXJyZWRUeXBlU3RydWN0dXJlLnNl
dCgqdGhpcywgSW5mZXJyZWRUeXBlOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgp
KSk7CiAgICAgaW5mZXJyZWRUeXBlVGFibGVTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBJbmZlcnJlZFR5
cGVUYWJsZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIGZ1bmN0
aW9uUmFyZURhdGFTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBGdW5jdGlvblJhcmVEYXRhOjpjcmVhdGVT
dHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7Ci0gICAgZ2VuZXJhdG9yRnJhbWVTdHJ1Y3R1
cmUuc2V0KCp0aGlzLCBHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBq
c051bGwoKSkpOwogICAgIGV4Y2VwdGlvblN0cnVjdHVyZS5zZXQoKnRoaXMsIEV4Y2VwdGlvbjo6
Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIHByb21pc2VEZWZlcnJl
ZFN0cnVjdHVyZS5zZXQoKnRoaXMsIEpTUHJvbWlzZURlZmVycmVkOjpjcmVhdGVTdHJ1Y3R1cmUo
KnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgaW50ZXJuYWxQcm9taXNlRGVmZXJyZWRTdHJ1Y3R1
cmUuc2V0KCp0aGlzLCBKU0ludGVybmFsUHJvbWlzZURlZmVycmVkOjpjcmVhdGVTdHJ1Y3R1cmUo
KnRoaXMsIDAsIGpzTnVsbCgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAppbmRleCAy
OTc0MTI2M2JiMTE0YmVkMGIzYzRlZmM5ZDUyZDVlYmFiZDM4NGRjLi4xYmNkYWZhNDUxMTZiMDA5
MmM2Y2U4MTlmZWFkNDNkZDQzZWNkN2NmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgK
QEAgLTMxNSw3ICszMTUsNiBAQCBjbGFzcyBWTSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRl
ZDxWTT4gewogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGluZmVycmVkVHlwZVN0cnVjdHVyZTsKICAg
ICBTdHJvbmc8U3RydWN0dXJlPiBpbmZlcnJlZFR5cGVUYWJsZVN0cnVjdHVyZTsKICAgICBTdHJv
bmc8U3RydWN0dXJlPiBmdW5jdGlvblJhcmVEYXRhU3RydWN0dXJlOwotICAgIFN0cm9uZzxTdHJ1
Y3R1cmU+IGdlbmVyYXRvckZyYW1lU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGV4
Y2VwdGlvblN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBwcm9taXNlRGVmZXJyZWRT
dHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gaW50ZXJuYWxQcm9taXNlRGVmZXJyZWRT
dHJ1Y3R1cmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNz
L2dlbmVyYXRvci1maWItZnRsLWFuZC1hcnJheS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwtYW5kLWFycmF5LmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZl
OTM5ODEyZmRiYWVjNmI4MzJiZmQwMGYyMTUzZGVmODRiYjc1OTIKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLWFu
ZC1hcnJheS5qcwpAQCAtMCwwICsxLDIzIEBACisoZnVuY3Rpb24gKCkgeworICAgIGZ1bmN0aW9u
ICpmaWIoKQorICAgIHsKKyAgICAgICAgbGV0IGEgPSAxOworICAgICAgICBsZXQgYiA9IDE7Cisg
ICAgICAgIGxldCBjID0gWyAwIF07CisgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAg
ICBjWzBdID0gYTsKKyAgICAgICAgICAgIHlpZWxkIGM7CisgICAgICAgICAgICBbYSwgYl0gPSBb
YiwgYSArIGJdOworICAgICAgICB9CisgICAgfQorCisgICAgbGV0IHZhbHVlID0gMDsKKyAgICBm
b3IgKGxldCBpID0gMDsgaSA8IDFlNDsgKytpKSB7CisgICAgICAgIGxldCBmID0gZmliKCk7Cisg
ICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwOyArK2kpIHsKKyAgICAgICAgICAgIHZhbHVl
ID0gZi5uZXh0KCkudmFsdWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHZhbHVlWzBdICE9PSAz
NTQyMjQ4NDgxNzkyNjIwMDAwMDApCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCB2
YWx1ZToke3Jlc3VsdH1gKTsKKyAgICB9Cit9KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQtb2JqZWN0LmpzIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQt
b2JqZWN0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY2NzM0MGYyZWE0Yzc0MzhhMmQyMDlhYTQwZDA2NzdlNGFi
N2QzZmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3Ry
ZXNzL2dlbmVyYXRvci1maWItZnRsLWFuZC1vYmplY3QuanMKQEAgLTAsMCArMSwyMyBAQAorKGZ1
bmN0aW9uICgpIHsKKyAgICBmdW5jdGlvbiAqZmliKCkKKyAgICB7CisgICAgICAgIGxldCBhID0g
MTsKKyAgICAgICAgbGV0IGIgPSAxOworICAgICAgICBsZXQgYyA9IHsgZmliOiAwIH07CisgICAg
ICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICBjLmZpYiA9IGE7CisgICAgICAgICAgICB5
aWVsZCBjOworICAgICAgICAgICAgW2EsIGJdID0gW2IsIGEgKyBiXTsKKyAgICAgICAgfQorICAg
IH0KKworICAgIGxldCB2YWx1ZSA9IDA7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxZTQ7ICsr
aSkgeworICAgICAgICBsZXQgZiA9IGZpYigpOworICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8
IDEwMDsgKytpKSB7CisgICAgICAgICAgICB2YWx1ZSA9IGYubmV4dCgpLnZhbHVlOworICAgICAg
ICB9CisgICAgICAgIGlmICh2YWx1ZS5maWIgIT09IDM1NDIyNDg0ODE3OTI2MjAwMDAwMCkKKyAg
ICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIHZhbHVlOiR7cmVzdWx0fWApOworICAgIH0K
K30oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dl
bmVyYXRvci1maWItZnRsLWFuZC1zdHJpbmcuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLWFuZC1zdHJpbmcuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDM4
YWU2YWIzMzQ3MDQ2ODIyODQ5ZjQzMDA0ZWE1YzQwM2VlZGEyOAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwtYW5k
LXN0cmluZy5qcwpAQCAtMCwwICsxLDIyIEBACisoZnVuY3Rpb24gKCkgeworICAgIGZ1bmN0aW9u
ICpmaWIoKQorICAgIHsKKyAgICAgICAgbGV0IGEgPSAxOworICAgICAgICBsZXQgYiA9IDE7Cisg
ICAgICAgIGxldCBjID0gIlJlc3VsdCEgIjsKKyAgICAgICAgd2hpbGUgKHRydWUpIHsKKyAgICAg
ICAgICAgIHlpZWxkIGMgKyBhOworICAgICAgICAgICAgW2EsIGJdID0gW2IsIGEgKyBiXTsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIGxldCB2YWx1ZSA9IDA7CisgICAgZm9yIChsZXQgaSA9IDA7
IGkgPCAxZTQ7ICsraSkgeworICAgICAgICBsZXQgZiA9IGZpYigpOworICAgICAgICBmb3IgKGxl
dCBpID0gMDsgaSA8IDEwMDsgKytpKSB7CisgICAgICAgICAgICB2YWx1ZSA9IGYubmV4dCgpLnZh
bHVlOworICAgICAgICB9CisgICAgICAgIGlmICh2YWx1ZSAhPT0gYFJlc3VsdCEgMzU0MjI0ODQ4
MTc5MjYyMDAwMDAwYCkKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIHZhbHVlOiR7
cmVzdWx0fWApOworICAgIH0KK30oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLmpzIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNDBlMzNk
YmM4NjhiZWE3YTg5M2M5ZWMxNmI3NzllYzI2YmRiMTljCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC5qcwpAQCAt
MCwwICsxLDIxIEBACisoZnVuY3Rpb24gKCkgeworICAgIGZ1bmN0aW9uICpmaWIoKQorICAgIHsK
KyAgICAgICAgbGV0IGEgPSAxOworICAgICAgICBsZXQgYiA9IDE7CisgICAgICAgIHdoaWxlICh0
cnVlKSB7CisgICAgICAgICAgICB5aWVsZCBhOworICAgICAgICAgICAgW2EsIGJdID0gW2IsIGEg
KyBiXTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGxldCB2YWx1ZSA9IDA7CisgICAgZm9yIChs
ZXQgaSA9IDA7IGkgPCAxZTQ7ICsraSkgeworICAgICAgICBsZXQgZiA9IGZpYigpOworICAgICAg
ICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDsgKytpKSB7CisgICAgICAgICAgICB2YWx1ZSA9IGYu
bmV4dCgpLnZhbHVlOworICAgICAgICB9CisgICAgICAgIGlmICh2YWx1ZSAhPT0gMzU0MjI0ODQ4
MTc5MjYyMDAwMDAwKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgdmFsdWU6JHty
ZXN1bHR9YCk7CisgICAgfQorfSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZyYW1lLWVtcHR5LmpzIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZnJhbWUtZW1wdHkuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NTllODg1NWJmYWMzYzU2ZGY5MjZhYmQ0MjhjMDEzYzMzNDE2Mjc0NgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZyYW1lLWVt
cHR5LmpzCkBAIC0wLDAgKzEsMzQgQEAKK2Z1bmN0aW9uIHNob3VsZFRocm93KGZ1bmMsIGVycm9y
TWVzc2FnZSkgeworICAgIHZhciBlcnJvclRocm93biA9IGZhbHNlOworICAgIHZhciBlcnJvciA9
IG51bGw7CisgICAgdHJ5IHsKKyAgICAgICAgZnVuYygpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAg
ICAgICAgZXJyb3JUaHJvd24gPSB0cnVlOworICAgICAgICBlcnJvciA9IGU7CisgICAgfQorICAg
IGlmICghZXJyb3JUaHJvd24pCisgICAgICAgIHRocm93IG5ldyBFcnJvcignbm90IHRocm93bicp
OworICAgIGlmIChTdHJpbmcoZXJyb3IpICE9PSBlcnJvck1lc3NhZ2UpCisgICAgICAgIHRocm93
IG5ldyBFcnJvcihgYmFkIGVycm9yOiAke1N0cmluZyhlcnJvcil9YCk7Cit9CisKK3Nob3VsZFRo
cm93KGZ1bmN0aW9uICgpIHsKKyAgICBmdW5jdGlvbiAqZmliKGZsYWcpCisgICAgeworICAgICAg
ICBsZXQgYSA9IDE7CisgICAgICAgIGxldCBiID0gMTsKKyAgICAgICAgeWllbGQgNDI7CisgICAg
ICAgIGlmIChmbGFnKQorICAgICAgICAgICAgcmV0dXJuIGM7CisgICAgICAgIGxldCBjID0gNTAw
OworICAgIH0KKworICAgIGxldCB2YWx1ZSA9IDA7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAx
ZTQ7ICsraSkgeworICAgICAgICBmb3IgKGxldCB2IG9mIGZpYihmYWxzZSkpIHsKKyAgICAgICAg
fQorICAgIH0KKyAgICBmb3IgKGxldCB2IG9mIGZpYih0cnVlKSkgeworICAgIH0KK30sIGBSZWZl
cmVuY2VFcnJvcjogQ2Fubm90IGFjY2VzcyB1bmluaXRpYWxpemVkIHZhcmlhYmxlLmApOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>282719</attachid>
            <date>2016-07-04 07:47:59 -0700</date>
            <delta_ts>2016-07-11 05:14:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-152723-20160704234730.patch</filename>
            <type>text/plain</type>
            <size>187302</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAyODA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
M2VmNGQ0ZDUwOWYyY2VhMmY2YzIzNzQ1NTQ3YTI2MjU5YjQzOWRhLi4wMDA0MDdkOTE5YWVlMzU1
ZWQ2MTY0ODFjNmNlYmRkYTQ4ODliOTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyODggQEAKKzIwMTYtMDctMDQgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0RGR11bRlRMXSBJbXBsZW1lbnQgRVM2IEdlbmVyYXRvcnMgaW4g
REZHIC8gRlRMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNTI3MjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworCisgICAg
ICAgICEhISBXSVAgISEhIFRoZSBmb2xsb3dpbmcgZG9jdW1lbnQgaXMgbm90IHVwZGF0ZWQgeWV0
LgorCisKKworCisKKworCisKKyAgICAgICAgVGhpcyBwYXRjaCBpcyBhbiBpbml0aWFsIGF0dGVt
cHQgdG8gaW1wbGVtZW50IERGRyBhbmQgRlRMIGNhcGFibGUgRVM2IGdlbmVyYXRvcnMuCisgICAg
ICAgIFdlIGludHJvZHVjZSB0aGUgc2V2ZXJhbCBieXRlY29kZXMgYW5kIGNvbXBpbGUgdGhlbSBp
biBERkcgLyBGVEwuCisKKyAgICAgICAgLSBvcF9uZXdfZ2VuZXJhdG9yX2ZyYW1lCisKKyAgICAg
ICAgICAgIEFsbG9jYXRlIEdlbmVyYXRvckZyYW1lIGluIHRoZSBieXRlY29kZSBpbnN0ZWFkIG9m
IGFsbG9jYXRpbmcgaXQgaW4gdGhlIG9wX3NhdmUuCisKKyAgICAgICAgLSBvcF9zYXZlCisKKyAg
ICAgICAgICAgIE5vdyBCeXRlY29kZUxpdmVuZXNzIGFuYWx5c2lzIGFuZCBQcmVjaXNlSnVtcFRh
cmdldCBhbmFseXNpcyBoYXZlIDIgbW9kZXM7IFN0YW5kYXJkIGFuZCBFeHRyYWN0R2VuZXJhdG9y
TGl2ZUNhbGxlZUxvY2Fscy4KKyAgICAgICAgICAgIFVuZGVyIEV4dHJhY3RHZW5lcmF0b3JMaXZl
Q2FsbGVlTG9jYWxzIG1vZGUsIG9wX3NhdmUgaGFzIGp1bXAgdG8gdGhlIG1lcmdlIHBvaW50LiBU
aGlzIGp1bXAgaXMganVzdCB1c2VkIGZvciB1c2UtZGVmIGFuYWx5c2lzIHRvIGV4dHJhY3QKKyAg
ICAgICAgICAgIGxpdmUgY2FsbGVlIGxvY2FscyBhdCB0aGUgbWVyZ2UgcG9pbnQuIFRoZXNlIGxp
dmUgY2FsbGVlIGxvY2FscyBzaG91bGQgYmUgc2F2ZWQgYW5kIHJlc3VtZWQgdG8gc3VzcGVuZCBh
bmQgcmVzdW1lIGdlbmVyYXRvcnMuCisgICAgICAgICAgICBUaGUgbWVyZ2UgcG9pbnQgaXMgdGhl
IHBvaW50IHRoYXQgbWVyZ2luZyB0aGUgMiBiYXNpYyBibG9ja3MsIHNhdmluZyBsb2NhbHMgdG8g
dGhlIGdlbmVyYXRvciBmcmFtZSBhbmQgcmVzdW1pbmcgbG9jYWxzIGZyb20gdGhlIGdlbmVyYXRv
ciBmcmFtZS4KKworICAgICAgICAtIG9wX3Jlc3VtZQorCisgICAgICAgICAgICBUaGlzIHJldHJp
ZXZlcyBsb2NhbCB2YXJpYWJsZSBmcm9tIHRoZSBnZW5lcmF0b3IgZnJhbWUuIEV4dHJhY3RHZW5l
cmF0b3JMaXZlQ2FsbGVlTG9jYWxzIGFuYWx5c2lzIHdpbGwgZGlzY292ZXIgbGl2ZSBsb2NhbHMg
YXQgdGhlIG1lcmdlIHBvaW50IGFuZCByZWNvcmQgbGl2ZW5lc3MKKyAgICAgICAgICAgIGluZm9y
bWF0aW9uIHRvIG9wX3NhdmUgYW5kIG9wX3Jlc3VtZS4gT24gdGhlIGJhc2lzIG9mIHRoaXMgaW5m
b3JtYXRpb24sIG9wX3Jlc3VtZSB3aWxsIHJldHJpZXZlIHNhdmVkIGxvY2FscyBmcm9tIHRoZSBn
ZW5lcmF0b3IgZnJhbWUuCisKKyAgICAgICAgSGVyZSwgd2UgZXhwbGFpbiBhYm91dCBob3cgdG8g
cHJlcHJvY2VzcyBieXRlY29kZXMuCisgICAgICAgIEZpcnN0LCB3ZSBlbWl0IG9wX3NhdmUsIG9w
X3Jlc3VtZSBhbmQgcGVyZm9ybSBFeHRyYWN0R2VuZXJhdG9yTGl2ZUNhbGxlZUxvY2FscyBhbmFs
eXNpcy4KKworICAgICAgICBbZW50cnldIC0rLS0+IFtzYXZlIGJsb2NrXSAtPiBvcF9zYXZlIChp
dCBpcyBicmFuY2hpbmcgYnl0ZWNvZGUpIC0tLS0tLT4gW21lcmdlIGJsb2NrXSAtPiAuLi4KKyAg
ICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorICAgICAgICAgICAgICAgICB8ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICstPiBvcF9yZXQgICAgICAgICAgICAgICAgICAgICAg
ICB8CisgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0+IG9wX3Jlc3VtZSAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKworICAgICAgICBUaGVuLCBkaXNj
b3ZlciBsaXZlIGxvY2FscyBpbmZvcm1hdGlvbiAoYXMgRmFzdEJpdFZlY3RvcikgYXQgdGhlIG1l
cmdlIHBvaW50IGFuZCBzdG9yZSBpdCB0byBjb3JyZXNwb25kaW5nIG9wX3NhdmUgYW5kIG9wX3Jl
c3VtZS4KKyAgICAgICAgQWZ0ZXIgdGhhdCwgdW5kZXIgU3RhbmRhcmQgYW5hbHlzaXMgbW9kZSwg
dGhlIGFib3ZlIGJ5dGVjb2RlIHN0cmVhbSB3aWxsIGNvbnN0cnVjdCB0aGUgZm9sbG93aW5nIENG
Ry4KKyAgICAgICAgSW4gdGhlIGZvbGxvd2luZyBDRkcsIG9wX3NhdmUgbm8gbG9uZ2VyIGhhcyBq
dW1wIHRvIHRoZSBtZXJnZSBwb2ludC4gVGhlIHJlbW92ZWQganVtcCBlZGdlIHdhcyBqdXN0IHVz
ZWQgdG8gY2FsY3VsYXRlIGxpdmVuZXNzIGluZm9ybWF0aW9uIGF0IHRoZSBtZXJnZSBwb2ludC4K
KworICAgICAgICBbZW50cnldIC0rLS0+IFtzYXZlIGJsb2NrXSAtPiBvcF9zYXZlIC0+IG9wX3Jl
dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArLT4gW21lcmdlIGJsb2NrXSAtPiAuLi4K
KyAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgICAgICB8ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8CisgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0+IG9wX3Jlc3VtZSAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKworICAgICAgICBBbmQgd2Ug
aW50cm9kdWNlcyBzZXZlcmFsIERGRyBub2Rlcy4KKworICAgICAgICAtIE5ld0dlbmVyYXRvckZy
YW1lCisKKyAgICAgICAgICAgIFRoaXMganVzdCBhbGxvY2F0ZXMgR2VuZXJhdG9yRnJhbWUuCisK
KyAgICAgICAgLSBSZXNpemVHZW5lcmF0b3JMb2NhbHMKKworICAgICAgICAgICAgVGhpcyBzZXQg
R2VuZXJhdG9yRnJhbWU6Om1fbnVtYmVyT2ZTYXZlZENhbGxlZUxvY2FscyAqTiouIFRoaXMgbm9k
ZSBpcyB1c2VkIHRvICgxKSBhbGxvY2F0ZSBzcGFjZSBmb3IgbG9jYWxzIGluIEdlbmVyYXRvckZy
YW1lIGFuZCAoMikgZGVhbGxvY2F0ZSBzcGFjZSBpbgorICAgICAgICAgICAgR2VuZXJhdG9yRnJh
bWUgYnkgc2V0dGluZyBpdCBhcyAwLgorCisgICAgICAgIC0gR2V0R2VuZXJhdG9yTG9jYWwKKwor
ICAgICAgICAgICAgR2V0IGEgc2F2ZWQgbG9jYWwgdmFyaWFibGUgZnJvbSBhIGdlbmVyYXRvciBm
cmFtZS4gR2V0R2VuZXJhdG9yTG9jYWwgYW5kIFNldEdlbmVyYXRvckxvY2FsIGFyZSBsaW5rZWQg
d2l0aCBHZW5lcmF0b3JMb2NhbERhdGEuIFNvIHR5cGUgcHJlZGljYXRpb24gYW5kIGZsYWdzCisg
ICAgICAgICAgICBhcmUgY29ycmVjdGx5IHByb3BhZ2F0ZWQgYmV5b25kIHRoZSBnZW5lcmF0b3Ig
ZnJhbWUuCisKKyAgICAgICAgLSBTZXRHZW5lcmF0b3JMb2NhbAorCisgICAgICAgICAgICBTdG9y
ZSBhIGxvY2FsIHZhcmlhYmxlIHRvIGEgZ2VuZXJhdG9yIGZyYW1lLgorCisgICAgICAgIEZ1dHVy
ZSBwbGFucyBhcmUgdGhlIGZvbGxvd2luZ3MuCisKKyAgICAgICAgMS4gU3VwcG9ydCB0cmFuc2Zl
cnJpbmcgQWJzdHJhY3RWYWx1ZSBiZXR3ZWVuIFNldEdlbmVyYXRvckxvY2FsIGFuZCBHZXRHZW5l
cmF0b3JMb2NhbC4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MzE4
MworCisgICAgICAgIDIuIENyZWF0ZSBKU0dlbmVyYXRvciBhbmQgYWxsb2NhdGUgaXQgaW4gdGhl
IGdlbmVyYXRvciB3cmFwcGVyIGZ1bmN0aW9uLiBUaGlzIHNob3VsZCBiZSBjb21waWxlZCBpbiBE
RkcgLyBGVEwgYW5kCisgICAgICAgIHRoaXMgb2JqZWN0IHNob3VsZCBiZSB0cmFja2VkIChieSBl
c2NhcGUgYW5hbHlzaXMpIGFuZCBlbGltaW5hdGVkIGlmIHBvc3NpYmxlIGJ5IG9iamVjdCBhbGxv
Y2F0aW9uIGVsaW1pbmF0aW9uLgorCisgICAgICAgIDMuIEFuZCBvbmNlIHdlIGV4cGxvaXQgdGhh
dCBHZW5lcmF0b3JGcmFtZSBpcyBub3QgZXNjYXBlZCBmcm9tIHRoZSBnaXZlbiBGVEwtZWQgZnVu
Y3Rpb24sIHdlIHdpbGwgZWxpbWluYXRlIEdlbmVyYXRvckZyYW1lIGFsbG9jYXRpb24gYW5kCisg
ICAgICAgIGNvbnZlcnQgR2VuZXJhdG9yTG9jYWwgb3BlcmF0aW9ucyBpbnRvIGdldC9zZXQgbG9j
YWwgb3BlcmF0aW9ucy4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYnVpbHRp
bnMvR2VuZXJhdG9yUHJvdG90eXBlLmpzOgorICAgICAgICAoZ2xvYmFsUHJpdmF0ZS5nZW5lcmF0
b3JSZXN1bWUpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5jcHA6Cisg
ICAgICAgIChKU0M6OmlzQnJhbmNoKToKKyAgICAgICAgKEpTQzo6Z2V0T3Bjb2RlSUQpOgorICAg
ICAgICAoSlNDOjpjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2Nrc0ludGVybmFsKToKKyAgICAgICAg
KEpTQzo6Y29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5
dGVjb2RlQmFzaWNCbG9jay5oOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9y
aWZpY2F0aW9uLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OmlzVmFsaWRSZWdpc3RlckZvckxp
dmVuZXNzKToKKyAgICAgICAgKEpTQzo6Z2V0TGVhZGVyT2Zmc2V0Rm9yQmFzaWNCbG9jayk6Cisg
ICAgICAgIChKU0M6OmZpbmRCYXNpY0Jsb2NrV2l0aExlYWRlck9mZnNldCk6CisgICAgICAgIChK
U0M6OmJsb2NrQ29udGFpbnNCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OmZpbmRCYXNp
Y0Jsb2NrRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpjb21wdXRlRGVmc0ZvckJ5
dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNl
dCk6CisgICAgICAgIChKU0M6OnN0ZXBPdmVySW5zdHJ1Y3Rpb24pOgorICAgICAgICAoSlNDOjpj
b21wdXRlTG9jYWxMaXZlbmVzc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Y29t
cHV0ZUxvY2FsTGl2ZW5lc3NGb3JCbG9jayk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJh
dG9yaWZpY2F0aW9uOjpCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbik6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uOjpnZXRMaXZlbmVzc0luZm9BdEJ5dGVjb2RlT2Zm
c2V0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb246OnN0b3JhZ2VG
b3JHZW5lcmF0b3JMb2NhbCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0
aW9uOjpydW4pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbjo6cnVu
TGl2ZW5lc3NBbmFseXNpcyk6CisgICAgICAgIChKU0M6OnBlcmZvcm1HZW5lcmF0b3JpZmljYXRp
b24pOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmg6IENv
cGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNz
QW5hbHlzaXMuaC4KKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUdyYXBoLmNwcDogQ29waWVk
IGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFs
eXNpcy5oLgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlR3JhcGguaDogQWRkZWQuCisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR3JhcGg6OmNvZGVCbG9jayk6CisgICAgICAgIChKU0M6OkJ5dGVj
b2RlR3JhcGg6OmJhc2ljQmxvY2tzKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHcmFwaDo6aW5z
dHJ1Y3Rpb25zKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHcmFwaDo6UmV2ZXJzZUl0ZXJhYmxl
OjpSZXZlcnNlSXRlcmFibGUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdyYXBoOjpSZXZlcnNl
SXRlcmFibGU6OmJlZ2luKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHcmFwaDo6UmV2ZXJzZUl0
ZXJhYmxlOjplbmQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdyYXBoOjpiYXNpY0Jsb2Nrc0lu
UmV2ZXJzZU9yZGVyKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHcmFwaDxCbG9jaz46OkJ5dGVj
b2RlR3JhcGgpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlSW5zZXJ0aW9uU2V0LmNwcDog
QWRkZWQuCisgICAgICAgIChKU0M6OkJ5dGVjb2RlSW5zZXJ0aW9uU2V0OjphZGp1c3RPZmZzZXQp
OgorICAgICAgICAoSlNDOjpCeXRlY29kZUluc2VydGlvblNldDo6ZXhlY3V0ZSk6CisgICAgICAg
ICogYnl0ZWNvZGUvQnl0ZWNvZGVJbnNlcnRpb25TZXQuaDogQ29waWVkIGZyb20gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5oLgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUluc2VydGlvblNldDo6Qnl0ZWNvZGVJbnNlcnRpb25TZXQpOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUluc2VydGlvblNldDo6aW5zZXJ0KToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVJbnNlcnRpb25TZXQ6OnJlbW92ZUJ5dGVjb2RlKToKKyAgICAgICAgKiBieXRlY29k
ZS9CeXRlY29kZUxpc3QuanNvbjoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpdmVuZXNz
QW5hbHlzaXMuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OkJ5
dGVjb2RlTGl2ZW5lc3NBbmFseXNpcyk6CisgICAgICAgIChKU0M6OmZpbmRCYXNpY0Jsb2NrV2l0
aExlYWRlck9mZnNldCk6CisgICAgICAgIChKU0M6OmZpbmRCYXNpY0Jsb2NrRm9yQnl0ZWNvZGVP
ZmZzZXQpOgorICAgICAgICAoSlNDOjpzdGVwT3Zlckluc3RydWN0aW9uKToKKyAgICAgICAgKEpT
Qzo6Y29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6
OmNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQmxvY2spOgorICAgICAgICAoSlNDOjpCeXRlY29kZUxp
dmVuZXNzQW5hbHlzaXM6OnJ1bkxpdmVuZXNzRml4cG9pbnQpOgorICAgICAgICAoSlNDOjpCeXRl
Y29kZUxpdmVuZXNzQW5hbHlzaXM6OmdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGVGdWxsTGl2ZW5l
c3MpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGVLaWxs
cyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6ZHVtcFJlc3VsdHMp
OgorICAgICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGUpOiBEZWxl
dGVkLgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5oOgorICAg
ICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmg6CisgICAgICAgIChKU0M6OmNvbXB1dGVV
c2VzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpjb21wdXRlRGVmc0ZvckJ5dGVj
b2RlT2Zmc2V0KToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAo
SlNDOjpDb2RlQmxvY2s6OmR1bXBCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6
ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnZhbGlkYXRlKToKKyAg
ICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjps
aXZlbmVzc0FuYWx5c2lzKToKKyAgICAgICAgKiBieXRlY29kZS9IYW5kbGVySW5mby5oOgorICAg
ICAgICAqIGJ5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5jcHA6CisgICAgICAgIChKU0M6Omdl
dE9wY29kZUlEKToKKyAgICAgICAgKEpTQzo6Z2V0SnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNl
dCk6CisgICAgICAgIChKU0M6OmNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHNJbnRlcm5hbCk6Cisg
ICAgICAgIChKU0M6OmNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMpOgorICAgICAgICAoSlNDOjpm
aW5kSnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgICogYnl0ZWNvZGUvUHJl
Y2lzZUp1bXBUYXJnZXRzLmg6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2su
Y3BwOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6aGFuZGxlckZvckJ5dGVjb2Rl
T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OmhhbmRsZXJGb3JJbmRl
eCk6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaDoKKyAgICAgICAgKEpT
Qzo6VW5saW5rZWRTdHJpbmdKdW1wVGFibGU6Om9mZnNldEZvclZhbHVlKToKKyAgICAgICAgKEpT
Qzo6VW5saW5rZWRDb2RlQmxvY2s6OmxpdmVDYWxsZWVMb2NhbHNBdFlpZWxkKToKKyAgICAgICAg
KiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRl
Y29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRv
cjo6Qnl0ZWNvZGVHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdE5ld0dlbmVyYXRvckZyYW1lKToKKyAgICAgICAgKEpTQzo6cHJlcGFyZUp1bXBUYWJsZUZv
clN0cmluZ1N3aXRjaCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0U2F2
ZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzdW1lKToKKyAgICAg
ICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRvckZyYW1lUmVnaXN0ZXIpOgorICAgICAgICAqIGRmZy9E
RkdBYnN0cmFjdEhlYXAuaDoKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklu
bGluZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0
U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6Om5ld0dlbmVyYXRv
ckxvY2FsRGF0YSk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxv
Y2spOgorICAgICAgICAqIGRmZy9ERkdDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OmNhcGFiaWxpdHlMZXZlbCk6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJpemUuaDoKKyAg
ICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAgICAgICAgKiBkZmcvREZHQ2xvYmJlcnNF
eGl0U3RhdGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmNsb2JiZXJzRXhpdFN0YXRlKToKKyAg
ICAgICAgKiBkZmcvREZHRG9lc0dDLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpkb2VzR0MpOgor
ICAgICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1
cFBoYXNlOjpmaXh1cE5vZGUpOgorICAgICAgICAqIGRmZy9ERkdHZW5lcmF0b3JMb2NhbERhdGEu
aDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1w
VGFyZ2V0cy5oLgorICAgICAgICAoSlNDOjpERkc6OkdlbmVyYXRvckxvY2FsRGF0YTo6cHJlZGlj
dCk6CisgICAgICAgIChKU0M6OkRGRzo6R2VuZXJhdG9yTG9jYWxEYXRhOjpwcmVkaWN0aW9uKToK
KyAgICAgICAgKiBkZmcvREZHR3JhcGguaDoKKyAgICAgICAgKiBkZmcvREZHTWF5RXhpdC5jcHA6
CisgICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNH
ZW5lcmF0b3JMb2NhbHNTaXplKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpnZW5lcmF0b3JM
b2NhbHNTaXplKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNHZW5lcmF0b3JMb2NhbElu
ZGV4KToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpnZW5lcmF0b3JMb2NhbEluZGV4KToKKyAg
ICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNHZW5lcmF0b3JMb2NhbERhdGEpOgorICAgICAgICAo
SlNDOjpERkc6Ok5vZGU6OmdlbmVyYXRvckxvY2FsRGF0YSk6CisgICAgICAgIChKU0M6OkRGRzo6
Tm9kZTo6aGFzR2VuZXJhdG9yRnJhbWVMb2NhbHMpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6
OmdlbmVyYXRvckZyYW1lTG9jYWxzKToKKyAgICAgICAgKiBkZmcvREZHTm9kZVR5cGUuaDoKKyAg
ICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlv
bnMuaDoKKyAgICAgICAgKiBkZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwOgor
ICAgICAgICAqIGRmZy9ERkdTYWZlVG9FeGVjdXRlLmg6CisgICAgICAgIChKU0M6OkRGRzo6c2Fm
ZVRvRXhlY3V0ZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU5ld0dlbmVyYXRvckZyYW1lKToK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVJlc2l6ZUdlbmVyYXRv
ckxvY2Fscyk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgICog
ZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAg
ICAqIGRmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZn
L0RGR1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpT
dHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFzZTo6cnVuKToKKyAgICAgICAgKiBmdGwvRlRMQWJzdHJh
Y3RIZWFwUmVwb3NpdG9yeS5jcHA6CisgICAgICAgICogZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9z
aXRvcnkuaDoKKyAgICAgICAgKiBmdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpT
Qzo6RlRMOjpjYW5Db21waWxlKToKKyAgICAgICAgKiBnZW5lcmF0ZS1ieXRlY29kZS1maWxlczoK
KyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6OmZp
bmRFeGNlcHRpb25IYW5kbGVyKToKKyAgICAgICAgKEpTQzo6R2V0Q2F0Y2hIYW5kbGVyRnVuY3Rv
cjo6b3BlcmF0b3IoKSk6CisgICAgICAgIChKU0M6OlVud2luZEZ1bmN0b3I6Om9wZXJhdG9yKCkp
OgorICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21w
aWxlTWFpblBhc3MpOgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUT3Bj
b2Rlcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9zYXZlKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX3Jlc3VtZSk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9uZXdf
Z2VuZXJhdG9yX2ZyYW1lKToKKyAgICAgICAgKiBqaXQvSklUT3Bjb2RlczMyXzY0LmNwcDoKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0X29wX3NhdmUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRf
b3BfcmVzdW1lKToKKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRXcml0ZUJhcnJpZXIpOgorICAgICAgICAqIGxsaW50L0xMSW50T2Zm
c2V0c0V4dHJhY3Rvci5jcHA6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5h
c206CisgICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6CisgICAgICAgIChKU0M6OlBhcnNlcjxM
ZXhlclR5cGU+OjpwYXJzZUlubmVyKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46
OnBhcnNlR2VuZXJhdG9yRnVuY3Rpb25Tb3VyY2VFbGVtZW50cyk6CisgICAgICAgIChKU0M6OlBh
cnNlcjxMZXhlclR5cGU+OjpjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKToKKyAgICAgICAgKiBw
YXJzZXIvUGFyc2VyLmg6CisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwOgor
ICAgICAgICAoSlNDOjpTTE9XX1BBVEhfREVDTCk6CisgICAgICAgICogcnVudGltZS9Db21tb25T
bG93UGF0aHMuaDoKKyAgICAgICAgKiBydW50aW1lL0dlbmVyYXRvckZyYW1lLmNwcDoKKyAgICAg
ICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OkdlbmVyYXRvckZyYW1lKToKKyAgICAgICAgKEpTQzo6
R2VuZXJhdG9yRnJhbWU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9y
RnJhbWU6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpj
cmVhdGUpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6c2F2ZSk6CisgICAgICAgIChK
U0M6OkdlbmVyYXRvckZyYW1lOjpyZXN1bWUpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFt
ZTo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9HZW5lcmF0b3JGcmFtZS5oOgor
ICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6bG9jYWxPZmZzZXQpOgorICAgICAgICAoSlND
OjpHZW5lcmF0b3JGcmFtZTo6bnVtYmVyT2ZDYWxsZWVMb2NhbHNPZmZzZXQpOgorICAgICAgICAo
SlNDOjpHZW5lcmF0b3JGcmFtZTo6bnVtYmVyT2ZTYXZlZENhbGxlZUxvY2Fsc09mZnNldCk6Cisg
ICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpsb2NhbEF0KTogRGVsZXRlZC4KKyAgICAgICAg
KiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmpl
Y3Q6OmluaXQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAg
KEpTQzo6SlNHbG9iYWxPYmplY3Q6OmdlbmVyYXRvckZyYW1lU3RydWN0dXJlKToKKyAgICAgICAg
KiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OlZNKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBydW50aW1lL1ZNLmg6CisgICAgICAgICogdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWIt
ZnRsLWFuZC1hcnJheS5qczogQWRkZWQuCisgICAgICAgIChmaWIpOgorICAgICAgICAqIHRlc3Rz
L3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQtb2JqZWN0LmpzOiBBZGRlZC4KKyAgICAgICAg
KGZpYik6CisgICAgICAgICogdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLWFuZC1zdHJp
bmcuanM6IEFkZGVkLgorICAgICAgICAoZmliKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvZ2Vu
ZXJhdG9yLWZpYi1mdGwuanM6IEFkZGVkLgorICAgICAgICAoZmliKToKKyAgICAgICAgKiB0ZXN0
cy9zdHJlc3MvZ2VuZXJhdG9yLWZyYW1lLWVtcHR5LmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3Vs
ZFRocm93KToKKyAgICAgICAgKHNob3VsZFRocm93LmZpYik6CisKIDIwMTYtMDctMDMgIFBlciBB
cm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtXaW5dIERMTHMgYXJl
IG1pc3NpbmcgdmVyc2lvbiBpbmZvcm1hdGlvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3Rz
LnR4dAppbmRleCA3NmY2OGJlZjJmOTc2NmVlM2NmYjI1OWY3MmEyYjk3Y2Y0MmQ5NmJjLi45NDIy
OTE0MmUwOGNjMzUyMmFjYTZlNGRkOGQ1ZWZlYTA1NjY1ZDgzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NNYWtlTGlzdHMudHh0CkBAIC0xNzgsNiArMTc4LDkgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NP
VVJDRVMKICAgICBieXRlY29kZS9BcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcAogICAgIGJ5dGVj
b2RlL0FycmF5UHJvZmlsZS5jcHAKICAgICBieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suY3Bw
CisgICAgYnl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwCisgICAgYnl0ZWNv
ZGUvQnl0ZWNvZGVHcmFwaC5jcHAKKyAgICBieXRlY29kZS9CeXRlY29kZUluc2VydGlvblNldC5j
cHAKICAgICBieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmNwcAogICAgIGJ5dGVj
b2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAKICAgICBieXRlY29kZS9DYWxsRWRnZS5j
cHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMmQyYmMzNDA5MzJkMThiNmE2ZDY3
MWMwNTVkYTY5N2ZkYTVjYTRlNC4uMzdlNjYxYjg3ODYzYWU2MzY2ZjBjNjQ1OTgzYmYwMmNmNWY3
OTZhNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTYyNTMsNiArNjI1Myw3IEBA
CiAJCQkJMEY2OUNDODYxOTNBQzYwQTAwNDU3NTlFIC8qIERGR0Zyb3plblZhbHVlLmNwcCAqLywK
IAkJCQkwRjY5Q0M4NzE5M0FDNjBBMDA0NTc1OUUgLyogREZHRnJvemVuVmFsdWUuaCAqLywKIAkJ
CQk4NkVDOURCNjEzMjhERjgyMDAyQjJBRDcgLyogREZHR2VuZXJhdGlvbkluZm8uaCAqLywKKwkJ
CQk3MDc5MTQxQzFDNEFBODA3MDBCODJGRjcgLyogREZHR2VuZXJhdG9yTG9jYWxEYXRhLmggKi8s
CiAJCQkJODZFQzlEQjcxMzI4REY4MjAwMkIyQUQ3IC8qIERGR0dyYXBoLmNwcCAqLywKIAkJCQk4
NkVDOURCODEzMjhERjgyMDAyQjJBRDcgLyogREZHR3JhcGguaCAqLywKIAkJCQkwRjJGQ0NGMjE4
QTYwMDcwMDAxQTI3RjggLyogREZHR3JhcGhTYWZlcG9pbnQuY3BwICovLApAQCAtODAxMiw2ICs4
MDEzLDcgQEAKIAkJCQkwRkUwNTAyOTFBQTkwOTU2MDBEMzNCMzMgLyogU2NvcGVkQXJndW1lbnRz
VGFibGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRTA1MDJCMUFBOTA5NTYwMEQzM0IzMyAvKiBT
Y29wZU9mZnNldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyNEU1NTIxN0VFMjc0OTAwQUJCMjE3
IC8qIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzA3OTE0
MUQxQzRBQTg2MDAwQjgyRkY3IC8qIERGR0dlbmVyYXRvckxvY2FsRGF0YS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTVGRDAwNjgxODlBRkU5QzAwNjMzMjMxIC8qIFNjcmlwdEFyZ3VtZW50cy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQTUwM0ZBMjExODhFRkY2ODAwMTEwRjE0IC8qIFNjcmlwdEJyZWFr
cG9pbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1RkQwMDZFMTg5QjAwQUEwMDYzMzIzMSAvKiBT
Y3JpcHRDYWxsRnJhbWUuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J1aWx0aW5zL0dlbmVyYXRvclByb3RvdHlwZS5qcyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9idWlsdGlucy9HZW5lcmF0b3JQcm90b3R5cGUuanMKaW5kZXggM2MxNDA2ODdkZmM3
ZTAwZWZlOTFhZTgwYjJhYzY3NmZhOWJmNDhmNC4uNDk5ZGJkMzkyZTgzMTNkY2RkODZlYzhjMTYw
NTY5ZDdkNmY1NDliMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5z
L0dlbmVyYXRvclByb3RvdHlwZS5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRp
bnMvR2VuZXJhdG9yUHJvdG90eXBlLmpzCkBAIC01MSw3ICs1MSw3IEBAIGZ1bmN0aW9uIGdlbmVy
YXRvclJlc3VtZShnZW5lcmF0b3IsIHNlbnRWYWx1ZSwgcmVzdW1lTW9kZSkKICAgICB9IGVsc2Ug
ewogICAgICAgICB0cnkgewogICAgICAgICAgICAgZ2VuZXJhdG9yLkBnZW5lcmF0b3JTdGF0ZSA9
IEBHZW5lcmF0b3JTdGF0ZUV4ZWN1dGluZzsKLSAgICAgICAgICAgIHZhbHVlID0gZ2VuZXJhdG9y
LkBnZW5lcmF0b3JOZXh0LkBjYWxsKGdlbmVyYXRvci5AZ2VuZXJhdG9yVGhpcywgZ2VuZXJhdG9y
LCBzdGF0ZSwgc2VudFZhbHVlLCByZXN1bWVNb2RlKTsKKyAgICAgICAgICAgIHZhbHVlID0gZ2Vu
ZXJhdG9yLkBnZW5lcmF0b3JOZXh0LkBjYWxsKGdlbmVyYXRvci5AZ2VuZXJhdG9yVGhpcywgZ2Vu
ZXJhdG9yLCBzdGF0ZSwgc2VudFZhbHVlLCByZXN1bWVNb2RlLCBnZW5lcmF0b3IuQGdlbmVyYXRv
ckZyYW1lKTsKICAgICAgICAgICAgIGlmIChnZW5lcmF0b3IuQGdlbmVyYXRvclN0YXRlID09PSBA
R2VuZXJhdG9yU3RhdGVFeGVjdXRpbmcpIHsKICAgICAgICAgICAgICAgICBnZW5lcmF0b3IuQGdl
bmVyYXRvclN0YXRlID0gQEdlbmVyYXRvclN0YXRlQ29tcGxldGVkOwogICAgICAgICAgICAgICAg
IGRvbmUgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlQmFzaWNCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Qnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcAppbmRleCA3ZjE3YzBlZjEwYjQzM2ZhYzhmNThjYjNiOWNh
NWQ0ZDAxNWJiYTA4Li4xMWNmY2U2NGYwYjBlODIzNDBmNTRiMzk4ZWM1YzNjOWQzOTY4NWNhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Js
b2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVCYXNp
Y0Jsb2NrLmNwcApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2lu
Y2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJQcmVjaXNlSnVtcFRhcmdldHMuaCIKKyNp
bmNsdWRlICJVbmxpbmtlZEluc3RydWN0aW9uU3RyZWFtLmgiCiAKIG5hbWVzcGFjZSBKU0Mgewog
CkBAIC02MCw2ICs2MSw3IEBAIHN0YXRpYyBib29sIGlzQnJhbmNoKE9wY29kZUlEIG9wY29kZUlE
KQogICAgIGNhc2Ugb3Bfc3dpdGNoX3N0cmluZzoKICAgICBjYXNlIG9wX3NhdmU6CiAgICAgICAg
IHJldHVybiB0cnVlOworCiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KQEAgLTExMCwxMCArMTEyLDIxIEBAIHN0YXRpYyB2b2lkIGxpbmtCbG9ja3MoQnl0ZWNvZGVC
YXNpY0Jsb2NrKiBwcmVkZWNlc3NvciwgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBzdWNjCiAgICAgcHJl
ZGVjZXNzb3ItPmFkZFN1Y2Nlc3NvcihzdWNjZXNzb3IpOwogfQogCi12b2lkIGNvbXB1dGVCeXRl
Y29kZUJhc2ljQmxvY2tzKENvZGVCbG9jayogY29kZUJsb2NrLCBWZWN0b3I8c3RkOjp1bmlxdWVf
cHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+JiBiYXNpY0Jsb2NrcykKK3N0YXRpYyBPcGNvZGVJRCBn
ZXRPcGNvZGVJRChJbnRlcnByZXRlciogaW50ZXJwcmV0ZXIsIGNvbnN0IEluc3RydWN0aW9uJiBp
bnN0cnVjdGlvbikKK3sKKyAgICByZXR1cm4gaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGluc3Ry
dWN0aW9uLnUub3Bjb2RlKTsKK30KKworc3RhdGljIE9wY29kZUlEIGdldE9wY29kZUlEKEludGVy
cHJldGVyKiwgY29uc3QgVW5saW5rZWRJbnN0cnVjdGlvbiYgaW5zdHJ1Y3Rpb24pCit7CisgICAg
cmV0dXJuIGluc3RydWN0aW9uLnUub3Bjb2RlOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBCbG9j
aywgdHlwZW5hbWUgSW5zdHJ1Y3Rpb24+CitzdGF0aWMgdm9pZCBjb21wdXRlQnl0ZWNvZGVCYXNp
Y0Jsb2Nrc0ludGVybmFsKEJsb2NrKiBjb2RlQmxvY2ssIEluc3RydWN0aW9uKiBpbnN0cnVjdGlv
bnNCZWdpbiwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCwgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0
cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9ja3MpCiB7CiAgICAgVmVjdG9yPHVuc2ln
bmVkLCAzMj4ganVtcFRhcmdldHM7Ci0gICAgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhjb2Rl
QmxvY2ssIGp1bXBUYXJnZXRzKTsKKyAgICBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKGNvZGVC
bG9jaywgaW5zdHJ1Y3Rpb25zQmVnaW4sIGluc3RydWN0aW9uQ291bnQsIGp1bXBUYXJnZXRzKTsK
IAogICAgIC8vIENyZWF0ZSB0aGUgZW50cnkgYW5kIGV4aXQgYmFzaWMgYmxvY2tzLgogICAgIGJh
c2ljQmxvY2tzLnJlc2VydmVDYXBhY2l0eShqdW1wVGFyZ2V0cy5zaXplKCkgKyAyKTsKQEAgLTEz
MSwxMCArMTQ0LDggQEAgdm9pZCBjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2NrcyhDb2RlQmxvY2sq
IGNvZGVCbG9jaywgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXQKICAgICBib29sIG5leHRJbnN0
cnVjdGlvbklzTGVhZGVyID0gZmFsc2U7CiAKICAgICBJbnRlcnByZXRlciogaW50ZXJwcmV0ZXIg
PSBjb2RlQmxvY2stPnZtKCktPmludGVycHJldGVyOwotICAgIEluc3RydWN0aW9uKiBpbnN0cnVj
dGlvbnNCZWdpbiA9IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsKLSAgICB1bnNp
Z25lZCBpbnN0cnVjdGlvbkNvdW50ID0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5zaXplKCk7
CiAgICAgZm9yICh1bnNpZ25lZCBieXRlY29kZU9mZnNldCA9IDA7IGJ5dGVjb2RlT2Zmc2V0IDwg
aW5zdHJ1Y3Rpb25Db3VudDspIHsKLSAgICAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnRlcnBy
ZXRlci0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25zQmVnaW5bYnl0ZWNvZGVPZmZzZXRdLnUub3Bj
b2RlKTsKKyAgICAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBnZXRPcGNvZGVJRChpbnRlcnByZXRl
ciwgaW5zdHJ1Y3Rpb25zQmVnaW5bYnl0ZWNvZGVPZmZzZXRdKTsKICAgICAgICAgdW5zaWduZWQg
b3Bjb2RlTGVuZ3RoID0gb3Bjb2RlTGVuZ3Roc1tvcGNvZGVJRF07CiAKICAgICAgICAgYm9vbCBj
cmVhdGVkQmxvY2sgPSBmYWxzZTsKQEAgLTE2OSw4ICsxODAsNyBAQCB2b2lkIGNvbXB1dGVCeXRl
Y29kZUJhc2ljQmxvY2tzKENvZGVCbG9jayogY29kZUJsb2NrLCBWZWN0b3I8c3RkOjp1bmlxdWVf
cHRyPEJ5dAogCiAgICAgICAgIGJvb2wgZmFsbHNUaHJvdWdoID0gdHJ1ZTsgCiAgICAgICAgIGZv
ciAodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQgPSBibG9jay0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQo
KTsgYnl0ZWNvZGVPZmZzZXQgPCBibG9jay0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKSArIGJsb2Nr
LT50b3RhbEJ5dGVjb2RlTGVuZ3RoKCk7KSB7Ci0gICAgICAgICAgICBjb25zdCBJbnN0cnVjdGlv
biYgY3VycmVudEluc3RydWN0aW9uID0gaW5zdHJ1Y3Rpb25zQmVnaW5bYnl0ZWNvZGVPZmZzZXRd
OwotICAgICAgICAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnRlcnByZXRlci0+Z2V0T3Bjb2Rl
SUQoY3VycmVudEluc3RydWN0aW9uLnUub3Bjb2RlKTsKKyAgICAgICAgICAgIE9wY29kZUlEIG9w
Y29kZUlEID0gZ2V0T3Bjb2RlSUQoaW50ZXJwcmV0ZXIsIGluc3RydWN0aW9uc0JlZ2luW2J5dGVj
b2RlT2Zmc2V0XSk7CiAgICAgICAgICAgICB1bnNpZ25lZCBvcGNvZGVMZW5ndGggPSBvcGNvZGVM
ZW5ndGhzW29wY29kZUlEXTsKICAgICAgICAgICAgIC8vIElmIHdlIGZvdW5kIGEgdGVybWluYWwg
Ynl0ZWNvZGUsIGxpbmsgdG8gdGhlIGV4aXQgYmxvY2suCiAgICAgICAgICAgICBpZiAoaXNUZXJt
aW5hbChvcGNvZGVJRCkpIHsKQEAgLTE4NSw3ICsxOTUsNyBAQCB2b2lkIGNvbXB1dGVCeXRlY29k
ZUJhc2ljQmxvY2tzKENvZGVCbG9jayogY29kZUJsb2NrLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRy
PEJ5dAogICAgICAgICAgICAgLy8gYmxvY2sgYmVjYXVzZSB0aGUgZmluYWxseSBibG9jayB3aWxs
IGNyZWF0ZSBpdHMgb3duIGNhdGNoLCB3aGljaCB3aWxsIGdlbmVyYXRlIGEgSGFuZGxlckluZm8u
CiAgICAgICAgICAgICBpZiAoaXNUaHJvdyhvcGNvZGVJRCkpIHsKICAgICAgICAgICAgICAgICBB
U1NFUlQoYnl0ZWNvZGVPZmZzZXQgKyBvcGNvZGVMZW5ndGggPT0gYmxvY2stPmxlYWRlckJ5dGVj
b2RlT2Zmc2V0KCkgKyBibG9jay0+dG90YWxCeXRlY29kZUxlbmd0aCgpKTsKLSAgICAgICAgICAg
ICAgICBIYW5kbGVySW5mbyogaGFuZGxlciA9IGNvZGVCbG9jay0+aGFuZGxlckZvckJ5dGVjb2Rl
T2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KTsKKyAgICAgICAgICAgICAgICBhdXRvKiBoYW5kbGVyID0g
Y29kZUJsb2NrLT5oYW5kbGVyRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpOwogICAg
ICAgICAgICAgICAgIGZhbGxzVGhyb3VnaCA9IGZhbHNlOwogICAgICAgICAgICAgICAgIGlmICgh
aGFuZGxlcikgewogICAgICAgICAgICAgICAgICAgICBsaW5rQmxvY2tzKGJsb2NrLCBleGl0Lmdl
dCgpKTsKQEAgLTIwNSw3ICsyMTUsNyBAQCB2b2lkIGNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tz
KENvZGVCbG9jayogY29kZUJsb2NrLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dAogICAgICAg
ICAgICAgaWYgKGlzQnJhbmNoKG9wY29kZUlEKSkgewogICAgICAgICAgICAgICAgIEFTU0VSVChi
eXRlY29kZU9mZnNldCArIG9wY29kZUxlbmd0aCA9PSBibG9jay0+bGVhZGVyQnl0ZWNvZGVPZmZz
ZXQoKSArIGJsb2NrLT50b3RhbEJ5dGVjb2RlTGVuZ3RoKCkpOwogICAgICAgICAgICAgICAgIFZl
Y3Rvcjx1bnNpZ25lZCwgMT4gYnl0ZWNvZGVPZmZzZXRzSnVtcGVkVG87Ci0gICAgICAgICAgICAg
ICAgZmluZEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoY29kZUJsb2NrLCBieXRlY29kZU9m
ZnNldCwgYnl0ZWNvZGVPZmZzZXRzSnVtcGVkVG8pOworICAgICAgICAgICAgICAgIGZpbmRKdW1w
VGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb25zQmVnaW4sIGJ5
dGVjb2RlT2Zmc2V0LCBieXRlY29kZU9mZnNldHNKdW1wZWRUbyk7CiAKICAgICAgICAgICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYmFzaWNCbG9ja3Muc2l6ZSgpOyBpKyspIHsKICAg
ICAgICAgICAgICAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBvdGhlckJsb2NrID0gYmFzaWNC
bG9ja3NbaV0uZ2V0KCk7CkBAIC0yMzUsNCArMjQ1LDE0IEBAIHZvaWQgY29tcHV0ZUJ5dGVjb2Rl
QmFzaWNCbG9ja3MoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8
Qnl0CiAgICAgICAgIGJhc2ljQmxvY2stPnNocmlua1RvRml0KCk7CiB9CiAKK3ZvaWQgY29tcHV0
ZUJ5dGVjb2RlQmFzaWNCbG9ja3MoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEluc3RydWN0aW9uKiBp
bnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCwgVmVjdG9yPHN0ZDo6
dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9ja3MpCit7CisgICAgY29t
cHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3NJbnRlcm5hbChjb2RlQmxvY2ssIGluc3RydWN0aW9uc0Jl
Z2luLCBpbnN0cnVjdGlvbkNvdW50LCBiYXNpY0Jsb2Nrcyk7Cit9CisKK3ZvaWQgY29tcHV0ZUJ5
dGVjb2RlQmFzaWNCbG9ja3MoVW5saW5rZWRDb2RlQmxvY2sqIGNvZGVCbG9jaywgVW5saW5rZWRJ
bnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQs
IFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mIGJhc2ljQmxvY2tz
KQoreworICAgIGNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzSW50ZXJuYWwoY29kZUJsb2NrLCBp
bnN0cnVjdGlvbnNCZWdpbiwgaW5zdHJ1Y3Rpb25Db3VudCwgYmFzaWNCbG9ja3MpOworfQorCiB9
IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZUJhc2ljQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZUJhc2ljQmxvY2suaAppbmRleCBiZDdkM2FlOWJhMzQzZTFiMDcxNzllOThmMWVl
ODlkYTY1YmE3ZTIwLi42NzJiZjNkZGM4YjcyYTk3NWFhNWViMDkzNDFlMDEyNGNmNTM5YThhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Js
b2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNC
bG9jay5oCkBAIC0zNSw2ICszNSw5IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgQ29kZUJs
b2NrOworY2xhc3MgVW5saW5rZWRDb2RlQmxvY2s7CitjbGFzcyBJbnN0cnVjdGlvbjsKK2NsYXNz
IFVubGlua2VkSW5zdHJ1Y3Rpb247CiAKIGNsYXNzIEJ5dGVjb2RlQmFzaWNCbG9jayB7CiAgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC03MCw3ICs3Myw4IEBAIGNsYXNzIEJ5dGVjb2Rl
QmFzaWNCbG9jayB7CiAgICAgRmFzdEJpdFZlY3RvciBtX291dDsKIH07CiAKLXZvaWQgY29tcHV0
ZUJ5dGVjb2RlQmFzaWNCbG9ja3MoQ29kZUJsb2NrKiwgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxC
eXRlY29kZUJhc2ljQmxvY2s+PiYpOwordm9pZCBjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2NrcyhD
b2RlQmxvY2sqLCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGluc3Ry
dWN0aW9uQ291bnQsIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4m
KTsKK3ZvaWQgY29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MoVW5saW5rZWRDb2RlQmxvY2sqLCBV
bmxpbmtlZEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgaW5zdHJ1Y3Rp
b25Db3VudCwgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYpOwog
CiBpbmxpbmUgQnl0ZWNvZGVCYXNpY0Jsb2NrOjpCeXRlY29kZUJhc2ljQmxvY2sodW5zaWduZWQg
c3RhcnQsIHVuc2lnbmVkIGxlbmd0aCkKICAgICA6IG1fbGVhZGVyQnl0ZWNvZGVPZmZzZXQoc3Rh
cnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVH
ZW5lcmF0b3JpZmljYXRpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYWE3YTgwOTZjNDZmY2Rj
ZmVhYmNmZDE5ZjE3YTAxNWVkOGZhMzYwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcApAQCAtMCww
ICsxLDQxNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBZdXN1a2UgU3V6dWtpIDx5dXN1
a2Uuc3V6dWtpQHNzbGFiLmljcy5rZWlvLmFjLmpwPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uaCIKKworI2luY2x1
ZGUgIklkZW50aWZpZXJJbmxpbmVzLmgiCisjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKKyNpbmNs
dWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgorI2luY2x1ZGUgIkJ5dGVjb2RlSW5zZXJ0aW9uU2V0
LmgiCisjaW5jbHVkZSAiQnl0ZWNvZGVVc2VEZWYuaCIKKyNpbmNsdWRlICJTdHJvbmdJbmxpbmVz
LmgiCisjaW5jbHVkZSAiVW5saW5rZWRDb2RlQmxvY2suaCIKKworbmFtZXNwYWNlIEpTQyB7CisK
K3N0YXRpYyBib29sIGlzVmFsaWRSZWdpc3RlckZvckxpdmVuZXNzKFVubGlua2VkQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIGludCBvcGVyYW5kKQoreworICAgIGlmIChjb2RlQmxvY2stPmlzQ29uc3Rh
bnRSZWdpc3RlckluZGV4KG9wZXJhbmQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBW
aXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZyhvcGVyYW5kKTsKKyAgICByZXR1cm4gdmlydHVhbFJl
Zy5pc0xvY2FsKCk7Cit9CisKK3N0YXRpYyB1bnNpZ25lZCBnZXRMZWFkZXJPZmZzZXRGb3JCYXNp
Y0Jsb2NrKHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+KiBiYXNpY0Jsb2NrKQor
eworICAgIHJldHVybiAoKmJhc2ljQmxvY2spLT5sZWFkZXJCeXRlY29kZU9mZnNldCgpOworfQor
CitzdGF0aWMgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBmaW5kQmFzaWNCbG9ja1dpdGhMZWFkZXJPZmZz
ZXQoQnl0ZWNvZGVHcmFwaDxVbmxpbmtlZENvZGVCbG9jaz4mIGdyYXBoLCB1bnNpZ25lZCBsZWFk
ZXJPZmZzZXQpCit7CisgICAgcmV0dXJuICgqdHJ5QmluYXJ5U2VhcmNoPHN0ZDo6dW5pcXVlX3B0
cjxCeXRlY29kZUJhc2ljQmxvY2s+LCB1bnNpZ25lZD4oZ3JhcGguYmFzaWNCbG9ja3MoKSwgZ3Jh
cGguYmFzaWNCbG9ja3MoKS5zaXplKCksIGxlYWRlck9mZnNldCwgZ2V0TGVhZGVyT2Zmc2V0Rm9y
QmFzaWNCbG9jaykpLmdldCgpOworfQorCitzdGF0aWMgYm9vbCBibG9ja0NvbnRhaW5zQnl0ZWNv
ZGVPZmZzZXQoQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaywgdW5zaWduZWQgYnl0ZWNvZGVPZmZz
ZXQpCit7CisgICAgdW5zaWduZWQgbGVhZGVyT2Zmc2V0ID0gYmxvY2stPmxlYWRlckJ5dGVjb2Rl
T2Zmc2V0KCk7CisgICAgcmV0dXJuIGJ5dGVjb2RlT2Zmc2V0ID49IGxlYWRlck9mZnNldCAmJiBi
eXRlY29kZU9mZnNldCA8IGxlYWRlck9mZnNldCArIGJsb2NrLT50b3RhbEJ5dGVjb2RlTGVuZ3Ro
KCk7Cit9CisKK3N0YXRpYyBCeXRlY29kZUJhc2ljQmxvY2sqIGZpbmRCYXNpY0Jsb2NrRm9yQnl0
ZWNvZGVPZmZzZXQoQnl0ZWNvZGVHcmFwaDxVbmxpbmtlZENvZGVCbG9jaz4mIGdyYXBoLCB1bnNp
Z25lZCBieXRlY29kZU9mZnNldCkKK3sKKy8qCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IGJhc2ljQmxvY2tzLnNpemUoKTsgaSsrKSB7CisgICAgICAgIGlmIChibG9ja0NvbnRhaW5zQnl0
ZWNvZGVPZmZzZXQoYmFzaWNCbG9ja3NbaV0uZ2V0KCksIGJ5dGVjb2RlT2Zmc2V0KSkKKyAgICAg
ICAgICAgIHJldHVybiBiYXNpY0Jsb2Nrc1tpXS5nZXQoKTsKKyAgICB9CisgICAgcmV0dXJuIDA7
CisqLworICAgIEJ5dGVjb2RlR3JhcGg8VW5saW5rZWRDb2RlQmxvY2s+OjpCYXNpY0Jsb2Nrc1Zl
Y3RvciYgYmFzaWNCbG9ja3MgPSBncmFwaC5iYXNpY0Jsb2NrcygpOworCisgICAgc3RkOjp1bmlx
dWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4qIGJhc2ljQmxvY2sgPSBhcHByb3hpbWF0ZUJpbmFy
eVNlYXJjaDxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiwgdW5zaWduZWQ+KAor
ICAgICAgICBiYXNpY0Jsb2NrcywgYmFzaWNCbG9ja3Muc2l6ZSgpLCBieXRlY29kZU9mZnNldCwg
Z2V0TGVhZGVyT2Zmc2V0Rm9yQmFzaWNCbG9jayk7CisgICAgLy8gV2UgZm91bmQgdGhlIGJsb2Nr
IHdlIHdlcmUgbG9va2luZyBmb3IuCisgICAgaWYgKGJsb2NrQ29udGFpbnNCeXRlY29kZU9mZnNl
dCgoKmJhc2ljQmxvY2spLmdldCgpLCBieXRlY29kZU9mZnNldCkpCisgICAgICAgIHJldHVybiAo
KmJhc2ljQmxvY2spLmdldCgpOworCisgICAgLy8gQmFzaWMgYmxvY2sgaXMgdG8gdGhlIGxlZnQg
b2YgdGhlIHJldHVybmVkIGJsb2NrLgorICAgIGlmIChieXRlY29kZU9mZnNldCA8ICgqYmFzaWNC
bG9jayktPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCkpIHsKKyAgICAgICAgQVNTRVJUKGJhc2ljQmxv
Y2sgLSAxID49IGJhc2ljQmxvY2tzLmRhdGEoKSk7CisgICAgICAgIEFTU0VSVChibG9ja0NvbnRh
aW5zQnl0ZWNvZGVPZmZzZXQoYmFzaWNCbG9ja1stMV0uZ2V0KCksIGJ5dGVjb2RlT2Zmc2V0KSk7
CisgICAgICAgIHJldHVybiBiYXNpY0Jsb2NrWy0xXS5nZXQoKTsKKyAgICB9CisKKyAgICAvLyBC
YXNpYyBibG9jayBpcyB0byB0aGUgcmlnaHQgb2YgdGhlIHJldHVybmVkIGJsb2NrLgorICAgIEFT
U0VSVCgmYmFzaWNCbG9ja1sxXSA8PSAmYmFzaWNCbG9ja3MubGFzdCgpKTsKKyAgICBBU1NFUlQo
YmxvY2tDb250YWluc0J5dGVjb2RlT2Zmc2V0KGJhc2ljQmxvY2tbMV0uZ2V0KCksIGJ5dGVjb2Rl
T2Zmc2V0KSk7CisgICAgcmV0dXJuIGJhc2ljQmxvY2tbMV0uZ2V0KCk7Cit9CisKK3RlbXBsYXRl
PHR5cGVuYW1lIEZ1bmN0b3I+Cit2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoVW5s
aW5rZWRDb2RlQmxvY2sqIGNvZGVCbG9jaywgT3Bjb2RlSUQgb3Bjb2RlSUQsIFVubGlua2VkSW5z
dHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrLCB1bnNpZ25l
ZCBieXRlY29kZU9mZnNldCwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikKK3sKKyAgICBVTlVTRURf
UEFSQU0oYnl0ZWNvZGVPZmZzZXQpOworICAgIHN3aXRjaCAob3Bjb2RlSUQpIHsKKyAgICBjYXNl
IG9wX3NhdmU6CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBvcF9yZXN1bWU6IHsKKyAgICAg
ICAgUkVMRUFTRV9BU1NFUlQoYmxvY2stPnN1Y2Nlc3NvcnMoKS5zaXplKCkgPT0gMSk7CisgICAg
ICAgIGJsb2NrLT5zdWNjZXNzb3JzKClbMF0tPmluKCkuZm9yRWFjaFNldEJpdChbJl0odW5zaWdu
ZWQgbG9jYWwpIHsKKyAgICAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwg
b3Bjb2RlSUQsIHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGxvY2FsKS5vZmZzZXQoKSk7CisgICAg
ICAgIH0pOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBkZWZhdWx0OgorICAgICAgICBj
b21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9jaywgb3Bjb2RlSUQsIGluc3RydWN0
aW9uLCBmdW5jdG9yKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCit0ZW1wbGF0ZTx0eXBl
bmFtZSBGdW5jdG9yPgordm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KFVubGlua2Vk
Q29kZUJsb2NrKiBjb2RlQmxvY2ssIE9wY29kZUlEIG9wY29kZUlELCBVbmxpbmtlZEluc3RydWN0
aW9uKiBpbnN0cnVjdGlvbiwgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaywgdW5zaWduZWQgYnl0
ZWNvZGVPZmZzZXQsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCit7CisgICAgaWYgKG9wY29kZUlE
ICE9IG9wX2VudGVyICYmIGNvZGVCbG9jay0+d2FzQ29tcGlsZWRXaXRoRGVidWdnaW5nT3Bjb2Rl
cygpICYmIGNvZGVCbG9jay0+c2NvcGVSZWdpc3RlcigpLmlzVmFsaWQoKSkKKyAgICAgICAgZnVu
Y3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgY29kZUJsb2NrLT5zY29wZVJl
Z2lzdGVyKCkub2Zmc2V0KCkpOworCisgICAgc3dpdGNoIChvcGNvZGVJRCkgeworICAgIGNhc2Ug
b3Bfc2F2ZTogeworICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29k
ZUlELCBpbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOworICAgICAgICB1bnNpZ25lZCBtZXJnZVBv
aW50Qnl0ZWNvZGVPZmZzZXQgPSBieXRlY29kZU9mZnNldCArIGluc3RydWN0aW9uWzNdLnUub3Bl
cmFuZDsKKyAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBtZXJnZVBvaW50QmxvY2sgPSBudWxs
cHRyOworICAgICAgICBmb3IgKEJ5dGVjb2RlQmFzaWNCbG9jayogc3VjY2Vzc29yIDogYmxvY2st
PnN1Y2Nlc3NvcnMoKSkgeworICAgICAgICAgICAgaWYgKHN1Y2Nlc3Nvci0+bGVhZGVyQnl0ZWNv
ZGVPZmZzZXQoKSA9PSBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXQpIHsKKyAgICAgICAgICAgICAg
ICBtZXJnZVBvaW50QmxvY2sgPSBzdWNjZXNzb3I7CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUKG1lcmdlUG9pbnRCbG9jayk7
CisgICAgICAgIG1lcmdlUG9pbnRCbG9jay0+aW4oKS5mb3JFYWNoU2V0Qml0KFsmXSh1bnNpZ25l
ZCBsb2NhbCkgeworICAgICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBv
cGNvZGVJRCwgdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwobG9jYWwpLm9mZnNldCgpKTsKKyAgICAg
ICAgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBjYXNlIG9wX3Jlc3VtZToKKyAg
ICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rp
b25bMV0udS5vcGVyYW5kKTsKKyAgICAgICAgcmV0dXJuOworCisgICAgZGVmYXVsdDoKKyAgICAg
ICAgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldChjb2RlQmxvY2ssIG9wY29kZUlELCBpbnN0
cnVjdGlvbiwgZnVuY3Rvcik7CisgICAgICAgIHJldHVybjsKKyAgICB9Cit9CisKKy8vIFNpbXBs
aWZpZWQgaW50ZXJmYWNlIHRvIGJ5dGVjb2RlIHVzZS9kZWYsIHdoaWNoIGRldGVybWluZXMgZGVm
cyBmaXJzdCBhbmQgdGhlbiB1c2VzLCBhbmQgaW5jbHVkZXMKKy8vIGV4Y2VwdGlvbiBoYW5kbGVy
cyBpbiB0aGUgdXNlcy4KK3RlbXBsYXRlPHR5cGVuYW1lIFVzZUZ1bmN0b3IsIHR5cGVuYW1lIERl
ZkZ1bmN0b3I+CitzdGF0aWMgdm9pZCBzdGVwT3Zlckluc3RydWN0aW9uKFVubGlua2VkQ29kZUJs
b2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2ssIEJ5dGVjb2RlR3JhcGg8
VW5saW5rZWRDb2RlQmxvY2s+JiBncmFwaCwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIGNvbnN0
IFVzZUZ1bmN0b3ImIHVzZSwgY29uc3QgRGVmRnVuY3RvciYgZGVmKQoreworICAgIC8vIFRoaXMg
YWJzdHJhY3RseSBleGVjdXRlIHRoZSBpbnN0cnVjdGlvbiBpbiByZXZlcnNlLiBJbnN0cnVjdGlv
bnMgbG9naWNhbGx5IGZpcnN0IHVzZSBvcGVyYW5kcyBhbmQKKyAgICAvLyB0aGVuIGRlZmluZSBv
cGVyYW5kcy4gVGhpcyBsb2dpY2FsIG9yZGVyaW5nIGlzIG5lY2Vzc2FyeSBmb3Igb3BlcmF0aW9u
cyB0aGF0IHVzZSBhbmQgZGVmIHRoZSBzYW1lCisgICAgLy8gb3BlcmFuZCwgbGlrZToKKyAgICAv
LworICAgIC8vICAgICBvcF9hZGQgbG9jMSwgbG9jMSwgbG9jMgorICAgIC8vCisgICAgLy8gVGhl
IHVzZSBvZiBsb2MxIGhhcHBlbnMgYmVmb3JlIHRoZSBkZWYgb2YgbG9jMS4gVGhhdCdzIGEgc2Vt
YW50aWMgcmVxdWlyZW1lbnQgc2luY2UgdGhlIGFkZAorICAgIC8vIG9wZXJhdGlvbiBjYW5ub3Qg
dHJhdmVsIGZvcndhcmQgaW4gdGltZSB0byByZWFkIHRoZSB2YWx1ZSB0aGF0IGl0IHdpbGwgcHJv
ZHVjZSBhZnRlciByZWFkaW5nIHRoYXQKKyAgICAvLyB2YWx1ZS4gU2luY2Ugd2UgYXJlIGV4ZWN1
dGluZyBpbiByZXZlcnNlLCB0aGlzIG1lYW5zIHRoYXQgd2UgbXVzdCBkbyBkZWZzIGJlZm9yZSB1
c2VzIChyZXZlcnNlIG9mCisgICAgLy8gdXNlcyBiZWZvcmUgZGVmcykuCisgICAgLy8KKyAgICAv
LyBTaW5jZSB0aGlzIGlzIGEgbGl2ZW5lc3MgYW5hbHlzaXMsIHRoaXMgb3JkZXJpbmcgZW5kcyB1
cCBiZWluZyBwYXJ0aWN1bGFybHkgaW1wb3J0YW50OiBpZiB3ZSBkaWQKKyAgICAvLyB1c2VzIGJl
Zm9yZSBkZWZzLCB0aGVuIHRoZSBhZGQgb3BlcmF0aW9uIGFib3ZlIHdvdWxkIGFwcGVhciB0byBu
b3QgaGF2ZSBsb2MxIGxpdmUsIHNpbmNlIHdlJ2QKKyAgICAvLyBmaXJzdCBhZGQgaXQgdG8gdGhl
IG91dCBzZXQgKHRoZSB1c2UpLCBhbmQgdGhlbiB3ZSdkIHJlbW92ZSBpdCAodGhlIGRlZikuCisK
KyAgICBhdXRvJiBpbnN0cnVjdGlvbnMgPSBncmFwaC5pbnN0cnVjdGlvbnMoKTsKKyAgICBVbmxp
bmtlZEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9ICZpbnN0cnVjdGlvbnNbYnl0ZWNvZGVPZmZz
ZXRdOworICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW5zdHJ1Y3Rpb24tPnUub3Bjb2RlOworCisg
ICAgY29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldCgKKyAgICAgICAgY29kZUJsb2NrLCBvcGNv
ZGVJRCwgaW5zdHJ1Y3Rpb24sIGJsb2NrLCBieXRlY29kZU9mZnNldCwKKyAgICAgICAgWyZdIChV
bmxpbmtlZENvZGVCbG9jayogY29kZUJsb2NrLCBVbmxpbmtlZEluc3RydWN0aW9uKiwgT3Bjb2Rl
SUQsIGludCBvcGVyYW5kKSB7CisgICAgICAgICAgICBpZiAoaXNWYWxpZFJlZ2lzdGVyRm9yTGl2
ZW5lc3MoY29kZUJsb2NrLCBvcGVyYW5kKSkKKyAgICAgICAgICAgICAgICBkZWYoVmlydHVhbFJl
Z2lzdGVyKG9wZXJhbmQpLnRvTG9jYWwoKSk7CisgICAgICAgIH0pOworCisgICAgY29tcHV0ZVVz
ZXNGb3JCeXRlY29kZU9mZnNldCgKKyAgICAgICAgY29kZUJsb2NrLCBvcGNvZGVJRCwgaW5zdHJ1
Y3Rpb24sIGJsb2NrLCBieXRlY29kZU9mZnNldCwKKyAgICAgICAgWyZdIChVbmxpbmtlZENvZGVC
bG9jayogY29kZUJsb2NrLCBVbmxpbmtlZEluc3RydWN0aW9uKiwgT3Bjb2RlSUQsIGludCBvcGVy
YW5kKSB7CisgICAgICAgICAgICBpZiAoaXNWYWxpZFJlZ2lzdGVyRm9yTGl2ZW5lc3MoY29kZUJs
b2NrLCBvcGVyYW5kKSkKKyAgICAgICAgICAgICAgICB1c2UoVmlydHVhbFJlZ2lzdGVyKG9wZXJh
bmQpLnRvTG9jYWwoKSk7CisgICAgICAgIH0pOworCisgICAgLy8gSWYgd2UgaGF2ZSBhbiBleGNl
cHRpb24gaGFuZGxlciwgd2Ugd2FudCB0aGUgbGl2ZS1pbiB2YXJpYWJsZXMgb2YgdGhlCisgICAg
Ly8gZXhjZXB0aW9uIGhhbmRsZXIgYmxvY2sgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIGxpdmUtaW4g
b2YgdGhpcyBwYXJ0aWN1bGFyIGJ5dGVjb2RlLgorICAgIGlmIChVbmxpbmtlZEhhbmRsZXJJbmZv
KiBoYW5kbGVyID0gY29kZUJsb2NrLT5oYW5kbGVyRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVP
ZmZzZXQpKSB7CisgICAgICAgIGlmIChvcGNvZGVJRCAhPSBvcF9yZXN1bWUpIHsKKyAgICAgICAg
ICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogaGFuZGxlckJsb2NrID0gZmluZEJhc2ljQmxvY2tXaXRo
TGVhZGVyT2Zmc2V0KGdyYXBoLCBoYW5kbGVyLT50YXJnZXQpOworICAgICAgICAgICAgQVNTRVJU
KGhhbmRsZXJCbG9jayk7CisgICAgICAgICAgICBoYW5kbGVyQmxvY2stPmluKCkuZm9yRWFjaFNl
dEJpdCh1c2UpOworICAgICAgICB9CisgICAgfQorfQorCitzdGF0aWMgdm9pZCBzdGVwT3Zlcklu
c3RydWN0aW9uKFVubGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFzaWNCbG9j
ayogYmxvY2ssIEJ5dGVjb2RlR3JhcGg8VW5saW5rZWRDb2RlQmxvY2s+JiBncmFwaCwgdW5zaWdu
ZWQgYnl0ZWNvZGVPZmZzZXQsIEZhc3RCaXRWZWN0b3ImIG91dCkKK3sKKyAgICBzdGVwT3Zlcklu
c3RydWN0aW9uKAorICAgICAgICBjb2RlQmxvY2ssIGJsb2NrLCBncmFwaCwgYnl0ZWNvZGVPZmZz
ZXQsCisgICAgICAgIFsmXSAodW5zaWduZWQgYml0SW5kZXgpIHsKKyAgICAgICAgICAgIC8vIFRo
aXMgaXMgdGhlIHVzZSBmdW5jdG9yLCBzbyB3ZSBzZXQgdGhlIGJpdC4KKyAgICAgICAgICAgIG91
dC5zZXQoYml0SW5kZXgpOworICAgICAgICB9LAorICAgICAgICBbJl0gKHVuc2lnbmVkIGJpdElu
ZGV4KSB7CisgICAgICAgICAgICAvLyBUaGlzIGlzIHRoZSBkZWYgZnVuY3Rvciwgc28gd2UgY2xl
YXIgdGhlIGJpdC4KKyAgICAgICAgICAgIG91dC5jbGVhcihiaXRJbmRleCk7CisgICAgICAgIH0p
OworfQorCitzdGF0aWMgdm9pZCBjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJ5dGVjb2RlT2Zmc2V0
KFVubGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2ss
IEJ5dGVjb2RlR3JhcGg8VW5saW5rZWRDb2RlQmxvY2s+JiBncmFwaCwgdW5zaWduZWQgdGFyZ2V0
T2Zmc2V0LCBGYXN0Qml0VmVjdG9yJiByZXN1bHQpCit7CisgICAgQVNTRVJUKCFibG9jay0+aXNF
eGl0QmxvY2soKSk7CisgICAgQVNTRVJUKCFibG9jay0+aXNFbnRyeUJsb2NrKCkpOworCisgICAg
RmFzdEJpdFZlY3RvciBvdXQgPSBibG9jay0+b3V0KCk7CisKKyAgICBmb3IgKGludCBpID0gYmxv
Y2stPmJ5dGVjb2RlT2Zmc2V0cygpLnNpemUoKSAtIDE7IGkgPj0gMDsgaS0tKSB7CisgICAgICAg
IHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0ID0gYmxvY2stPmJ5dGVjb2RlT2Zmc2V0cygpW2ldOwor
ICAgICAgICBpZiAodGFyZ2V0T2Zmc2V0ID4gYnl0ZWNvZGVPZmZzZXQpCisgICAgICAgICAgICBi
cmVhazsKKworICAgICAgICBzdGVwT3Zlckluc3RydWN0aW9uKGNvZGVCbG9jaywgYmxvY2ssIGdy
YXBoLCBieXRlY29kZU9mZnNldCwgb3V0KTsKKyAgICB9CisKKyAgICByZXN1bHQuc2V0KG91dCk7
Cit9CisKK3N0YXRpYyB2b2lkIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQmxvY2soVW5saW5rZWRD
b2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaywgQnl0ZWNvZGVH
cmFwaDxVbmxpbmtlZENvZGVCbG9jaz4mIGdyYXBoKQoreworICAgIGlmIChibG9jay0+aXNFeGl0
QmxvY2soKSB8fCBibG9jay0+aXNFbnRyeUJsb2NrKCkpCisgICAgICAgIHJldHVybjsKKyAgICBj
b21wdXRlTG9jYWxMaXZlbmVzc0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9jaywgYmxvY2ssIGdy
YXBoLCBibG9jay0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKSwgYmxvY2stPmluKCkpOworfQorCitj
bGFzcyBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbiB7CitwdWJsaWM6CisgICAgQnl0ZWNvZGVH
ZW5lcmF0b3JpZmljYXRpb24oQnl0ZWNvZGVHcmFwaDxVbmxpbmtlZENvZGVCbG9jaz4mIGdyYXBo
LCBTeW1ib2xUYWJsZSogZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZSwgaW50IGdlbmVyYXRvckZy
YW1lU3ltYm9sVGFibGVJbmRleCkKKyAgICAgICAgOiBtX3ZtKCpncmFwaC5jb2RlQmxvY2soKS0+
dm0oKSkKKyAgICAgICAgLCBtX2dyYXBoKGdyYXBoKQorICAgICAgICAsIG1faW5zZXJ0aW9uU2V0
KGdyYXBoKQorICAgICAgICAsIG1fZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZShtX3ZtLCBnZW5l
cmF0b3JGcmFtZVN5bWJvbFRhYmxlKQorICAgICAgICAsIG1fZ2VuZXJhdG9yRnJhbWVTeW1ib2xU
YWJsZUluZGV4KGdlbmVyYXRvckZyYW1lU3ltYm9sVGFibGVJbmRleCkKKyAgICB7CisgICAgfQor
CisgICAgRmFzdEJpdFZlY3RvciBnZXRMaXZlbmVzc0luZm9BdEJ5dGVjb2RlT2Zmc2V0KHVuc2ln
bmVkIGJ5dGVjb2RlT2Zmc2V0KQorICAgIHsKKyAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBi
bG9jayA9IGZpbmRCYXNpY0Jsb2NrRm9yQnl0ZWNvZGVPZmZzZXQobV9ncmFwaCwgYnl0ZWNvZGVP
ZmZzZXQpOworICAgICAgICBBU1NFUlQoYmxvY2spOworICAgICAgICBBU1NFUlQoIWJsb2NrLT5p
c0VudHJ5QmxvY2soKSk7CisgICAgICAgIEFTU0VSVCghYmxvY2stPmlzRXhpdEJsb2NrKCkpOwor
ICAgICAgICBGYXN0Qml0VmVjdG9yIG91dDsKKyAgICAgICAgb3V0LnJlc2l6ZShibG9jay0+b3V0
KCkubnVtQml0cygpKTsKKyAgICAgICAgY29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCeXRlY29kZU9m
ZnNldChtX2dyYXBoLmNvZGVCbG9jaygpLCBibG9jaywgbV9ncmFwaCwgYnl0ZWNvZGVPZmZzZXQs
IG91dCk7CisgICAgICAgIHJldHVybiBvdXQ7CisgICAgfQorCisgICAgc3RydWN0IFN0b3JhZ2Ug
eworICAgICAgICBJZGVudGlmaWVyIGlkZW50aWZpZXI7CisgICAgICAgIHVuc2lnbmVkIGlkZW50
aWZpZXJJbmRleDsKKyAgICAgICAgU2NvcGVPZmZzZXQgc2NvcGVPZmZzZXQ7CisgICAgfTsKKwor
ICAgIFN0b3JhZ2Ugc3RvcmFnZUZvckdlbmVyYXRvckxvY2FsKHVuc2lnbmVkIGluZGV4KQorICAg
IHsKKyAgICAgICAgaWYgKG1fc3RvcmFnZXMuc2l6ZSgpIDw9IGluZGV4KSB7CisgICAgICAgICAg
ICAvLyBGSVhNRTogU3VwZXIgbmFpdmUgaW1wbGVtZW50YXRpb24uIFdlIHNob3VsZCByZWNvbnNp
ZGVyIHRoZSBpbmRleGVkIGdlbmVyYXRvciBsb2NhbHMgaW4gdGhlIHNjb3BlLgorICAgICAgICAg
ICAgVW5saW5rZWRDb2RlQmxvY2sqIGNvZGVCbG9jayA9IG1fZ3JhcGguY29kZUJsb2NrKCk7Cisg
ICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwLCBhZGRpdGlvbiA9IG1fc3RvcmFnZXMuc2l6
ZSgpIC0gaW5kZXggKyAxOyBpIDwgYWRkaXRpb247ICsraSkgeworICAgICAgICAgICAgICAgIElk
ZW50aWZpZXIgaWRlbnRpZmllciA9IElkZW50aWZpZXI6OmZyb21VaWQoUHJpdmF0ZU5hbWUoKSk7
CisgICAgICAgICAgICAgICAgdW5zaWduZWQgaWRlbnRpZmllckluZGV4ID0gY29kZUJsb2NrLT5u
dW1iZXJPZklkZW50aWZpZXJzKCk7CisgICAgICAgICAgICAgICAgY29kZUJsb2NrLT5hZGRJZGVu
dGlmaWVyKGlkZW50aWZpZXIpOworICAgICAgICAgICAgICAgIFNjb3BlT2Zmc2V0IHNjb3BlT2Zm
c2V0ID0gbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlLT50YWtlTmV4dFNjb3BlT2Zmc2V0KE5v
TG9ja2luZ05lY2Vzc2FyeSk7CisgICAgICAgICAgICAgICAgbV9nZW5lcmF0b3JGcmFtZVN5bWJv
bFRhYmxlLT5zZXQoTm9Mb2NraW5nTmVjZXNzYXJ5LCBpZGVudGlmaWVyLmltcGwoKSwgU3ltYm9s
VGFibGVFbnRyeShWYXJPZmZzZXQoc2NvcGVPZmZzZXQpKSk7CisgICAgICAgICAgICAgICAgbV9z
dG9yYWdlcy5hcHBlbmQoU3RvcmFnZSB7IGlkZW50aWZpZXIsIGlkZW50aWZpZXJJbmRleCwgc2Nv
cGVPZmZzZXQgfSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG1f
c3RvcmFnZXNbaW5kZXhdOworICAgIH0KKworICAgIHN0cnVjdCBHZW5lcmF0b3JQb2ludHMgewor
ICAgICAgICBzaXplX3Qgc2F2ZVBvaW50OworICAgICAgICBzaXplX3QgbWVyZ2VQb2ludDsKKyAg
ICAgICAgc2l6ZV90IHJlc3VtZVBvaW50OworICAgIH07CisKKyAgICB2b2lkIHJ1bigpCisgICAg
eworICAgICAgICBydW5MaXZlbmVzc0FuYWx5c2lzKCk7CisKKyAgICAgICAgLy8gV2Ugd2lsbCBp
bXBsZW1lbnQgdGhlIHRyYW5zZm9ybWF0aW9uIHRoYXQgY2hhbmdlcyBvcF9zYXZlIC8gb3BfcmVz
dW1lIHRvIHNjb3BlIG9wZXJhdGlvbnMgaGVyZS4KKworICAgICAgICAvLyBCb29ra2VlcCB0aGUg
bWVyZ2UgcG9pbnQgYnl0ZWNvZGUgb2Zmc2V0cy4KKyAgICAgICAgVmVjdG9yPEdlbmVyYXRvclBv
aW50cz4gZ2VuZXJhdG9yUG9pbnRzVmVjdG9yOworICAgICAgICBmb3IgKHN0ZDo6dW5pcXVlX3B0
cjxCeXRlY29kZUJhc2ljQmxvY2s+JiBibG9jayA6IG1fZ3JhcGguYmFzaWNCbG9ja3MoKSkgewor
ICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBieXRlY29kZU9mZnNldCA6IGJsb2NrLT5ieXRlY29k
ZU9mZnNldHMoKSkgeworICAgICAgICAgICAgICAgIGNvbnN0IFVubGlua2VkSW5zdHJ1Y3Rpb24q
IHBjID0gJm1fZ3JhcGguaW5zdHJ1Y3Rpb25zKClbYnl0ZWNvZGVPZmZzZXRdOworICAgICAgICAg
ICAgICAgIHN3aXRjaCAocGMtPnUub3Bjb2RlKSB7CisgICAgICAgICAgICAgICAgY2FzZSBvcF9z
YXZlOiB7CisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRl
eCA9IHBjWzJdLnUuaW5kZXg7CisgICAgICAgICAgICAgICAgICAgIGludCBvZmZzZXQgPSBwY1sz
XS51Lm9wZXJhbmQ7CisgICAgICAgICAgICAgICAgICAgIGlmIChsaXZlQ2FsbGVlTG9jYWxzSW5k
ZXggPj0gZ2VuZXJhdG9yUG9pbnRzVmVjdG9yLnNpemUoKSkKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGdlbmVyYXRvclBvaW50c1ZlY3Rvci5yZXNpemUobGl2ZUNhbGxlZUxvY2Fsc0luZGV4ICsg
MSk7CisgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvclBvaW50c1ZlY3RvcltsaXZlQ2FsbGVl
TG9jYWxzSW5kZXhdLnNhdmVQb2ludCA9IGJ5dGVjb2RlT2Zmc2V0OworICAgICAgICAgICAgICAg
ICAgICBnZW5lcmF0b3JQb2ludHNWZWN0b3JbbGl2ZUNhbGxlZUxvY2Fsc0luZGV4XS5tZXJnZVBv
aW50ID0gYnl0ZWNvZGVPZmZzZXQgKyBvZmZzZXQ7CisgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGNhc2Ugb3BfcmVzdW1lOiB7
CisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9IHBj
WzJdLnUuaW5kZXg7CisgICAgICAgICAgICAgICAgICAgIGlmIChsaXZlQ2FsbGVlTG9jYWxzSW5k
ZXggPj0gZ2VuZXJhdG9yUG9pbnRzVmVjdG9yLnNpemUoKSkKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGdlbmVyYXRvclBvaW50c1ZlY3Rvci5yZXNpemUobGl2ZUNhbGxlZUxvY2Fsc0luZGV4ICsg
MSk7CisgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvclBvaW50c1ZlY3RvcltsaXZlQ2FsbGVl
TG9jYWxzSW5kZXhdLnJlc3VtZVBvaW50ID0gYnl0ZWNvZGVPZmZzZXQ7CisgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGRlZmF1
bHQ6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8vIFBlcmZvcm0gYnl0ZWNvZGUgbGl2ZW5l
c3MgYW5hbHlzaXMgdG8gZGV0ZXJtaW5lIHdoaWNoIGxvY2FscyBhcmUgbGl2ZSBhbmQgc2hvdWxk
IGJlIHJlc3VtZWQgd2hlbiBleGVjdXRpbmcgb3BfcmVzdW1lLgorICAgICAgICBVbmxpbmtlZENv
ZGVCbG9jayogY29kZUJsb2NrID0gbV9ncmFwaC5jb2RlQmxvY2soKTsKKyAgICAgICAgLy8gVk0m
IHZtID0gKmNvZGVCbG9jay0+dm0oKTsKKyAgICAgICAgZm9yIChzaXplX3QgbGl2ZUNhbGxlZUxv
Y2Fsc0luZGV4ID0gMDsgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4IDwgZ2VuZXJhdG9yUG9pbnRzVmVj
dG9yLnNpemUoKTsgKytsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpIHsKKyAgICAgICAgICAgIGNvbnN0
IEdlbmVyYXRvclBvaW50cyYgcG9pbnRzID0gZ2VuZXJhdG9yUG9pbnRzVmVjdG9yW2xpdmVDYWxs
ZWVMb2NhbHNJbmRleF07CisgICAgICAgICAgICBzaXplX3QgbWVyZ2VQb2ludEJ5dGVjb2RlT2Zm
c2V0ID0gcG9pbnRzLm1lcmdlUG9pbnQ7CisgICAgICAgICAgICBGYXN0Qml0VmVjdG9yIGxpdmVu
ZXNzVmVjdG9yID0gZ2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29kZU9mZnNldChtZXJnZVBvaW50Qnl0
ZWNvZGVPZmZzZXQpOworCisgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgc2NvcGUgPSB2aXJ0
dWFsUmVnaXN0ZXJGb3JBcmd1bWVudCg1KTsKKworICAgICAgICAgICAgdW5zaWduZWQgZ2VuZXJh
dG9yTG9jYWxJbmRleCA9IDA7CisgICAgICAgICAgICBsaXZlbmVzc1ZlY3Rvci5mb3JFYWNoU2V0
Qml0KFsmXShzaXplX3QgaW5kZXgpIHsKKyAgICAgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIg
b3BlcmFuZCA9IHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGluZGV4KTsKKyAgICAgICAgICAgICAg
ICBTdG9yYWdlIHN0b3JhZ2UgPSBzdG9yYWdlRm9yR2VuZXJhdG9yTG9jYWwoZ2VuZXJhdG9yTG9j
YWxJbmRleCsrKTsKKworICAgICAgICAgICAgICAgIC8vIG9wX3NhdmUuCisgICAgICAgICAgICAg
ICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0KHBvaW50cy5zYXZlUG9pbnQsIHsKKyAgICAgICAgICAg
ICAgICAgICAgb3BfcHV0X3RvX3Njb3BlLAorICAgICAgICAgICAgICAgICAgICBzY29wZS5vZmZz
ZXQoKSwgICAgICAgICAgICAgICAgICAgLy8gc2NvcGUKKyAgICAgICAgICAgICAgICAgICAgc3Rv
cmFnZS5pZGVudGlmaWVySW5kZXgsICAgICAgICAgIC8vIGlkZW50aWZpZXIKKyAgICAgICAgICAg
ICAgICAgICAgb3BlcmFuZC5vZmZzZXQoKSwgICAgICAgICAgICAgICAgIC8vIHZhbHVlCisgICAg
ICAgICAgICAgICAgICAgIEdldFB1dEluZm8oRG9Ob3RUaHJvd0lmTm90Rm91bmQsIExvY2FsQ2xv
c3VyZVZhciwgSW5pdGlhbGl6YXRpb25Nb2RlOjpOb3RJbml0aWFsaXphdGlvbikub3BlcmFuZCgp
LAorICAgICAgICAgICAgICAgICAgICBtX2dlbmVyYXRvckZyYW1lU3ltYm9sVGFibGVJbmRleCwg
Ly8gc3ltYm9sIHRhYmxlIGNvbnN0YW50IGluZGV4CisgICAgICAgICAgICAgICAgICAgIHN0b3Jh
Z2Uuc2NvcGVPZmZzZXQub2Zmc2V0KCksICAgICAvLyBzY29wZSBvZmZzZXQKKyAgICAgICAgICAg
ICAgICB9KTsKKworICAgICAgICAgICAgICAgIC8vIG9wX3Jlc3VtZS4KKyAgICAgICAgICAgICAg
ICBVbmxpbmtlZFZhbHVlUHJvZmlsZSBwcm9maWxlID0gY29kZUJsb2NrLT5hZGRWYWx1ZVByb2Zp
bGUoKTsKKyAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnQocG9pbnRzLnJlc3Vt
ZVBvaW50LCB7CisgICAgICAgICAgICAgICAgICAgIG9wX2dldF9mcm9tX3Njb3BlLAorICAgICAg
ICAgICAgICAgICAgICBvcGVyYW5kLm9mZnNldCgpLCAgICAgICAgICAgICAgLy8gZHN0CisgICAg
ICAgICAgICAgICAgICAgIHNjb3BlLm9mZnNldCgpLCAgICAgICAgICAgICAgICAvLyBzY29wZQor
ICAgICAgICAgICAgICAgICAgICBzdG9yYWdlLmlkZW50aWZpZXJJbmRleCwgICAgICAgLy8gaWRl
bnRpZmllcgorICAgICAgICAgICAgICAgICAgICBHZXRQdXRJbmZvKERvTm90VGhyb3dJZk5vdEZv
dW5kLCBMb2NhbENsb3N1cmVWYXIsIEluaXRpYWxpemF0aW9uTW9kZTo6Tm90SW5pdGlhbGl6YXRp
b24pLm9wZXJhbmQoKSwKKyAgICAgICAgICAgICAgICAgICAgMCwgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIGxvY2FsIHNjb3BlIGRlcHRoCisgICAgICAgICAgICAgICAgICAgIHN0b3Jh
Z2Uuc2NvcGVPZmZzZXQub2Zmc2V0KCksICAvLyBzY29wZSBvZmZzZXQKKyAgICAgICAgICAgICAg
ICAgICAgcHJvZmlsZSAgICAgICAgICAgICAgICAgICAgICAgIC8vIHByb2ZpbGUKKyAgICAgICAg
ICAgICAgICB9KTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICAvLyBDbGlwIHRoZSB1
bm5lY2Vzc2FyeSBieXRlY29kZXMuCisgICAgICAgICAgICBtX2luc2VydGlvblNldC5yZW1vdmVC
eXRlY29kZShwb2ludHMuc2F2ZVBvaW50KTsKKyAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0LnJl
bW92ZUJ5dGVjb2RlKHBvaW50cy5yZXN1bWVQb2ludCk7CisgICAgICAgIH0KKworICAgICAgICBt
X2luc2VydGlvblNldC5leGVjdXRlKCk7CisgICAgfQorCisgICAgdm9pZCBydW5MaXZlbmVzc0Fu
YWx5c2lzKCkKKyAgICB7CisgICAgICAgIFVubGlua2VkQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVC
bG9jayA9IG1fZ3JhcGguY29kZUJsb2NrKCk7CisgICAgICAgIHVuc2lnbmVkIG51bWJlck9mVmFy
aWFibGVzID0gdW5saW5rZWRDb2RlQmxvY2stPm1fbnVtQ2FsbGVlTG9jYWxzOworICAgICAgICBm
b3IgKHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+JiBibG9jayA6IG1fZ3JhcGgu
YmFzaWNCbG9ja3MoKSkgeworICAgICAgICAgICAgYmxvY2stPmluKCkucmVzaXplKG51bWJlck9m
VmFyaWFibGVzKTsKKyAgICAgICAgICAgIGJsb2NrLT5vdXQoKS5yZXNpemUobnVtYmVyT2ZWYXJp
YWJsZXMpOworICAgICAgICB9CisKKyAgICAgICAgYm9vbCBjaGFuZ2VkOworICAgICAgICBCeXRl
Y29kZUJhc2ljQmxvY2sqIGxhc3RCbG9jayA9IG1fZ3JhcGguYmFzaWNCbG9ja3MoKS5sYXN0KCku
Z2V0KCk7CisgICAgICAgIGxhc3RCbG9jay0+aW4oKS5jbGVhckFsbCgpOworICAgICAgICBsYXN0
QmxvY2stPm91dCgpLmNsZWFyQWxsKCk7CisgICAgICAgIEZhc3RCaXRWZWN0b3IgbmV3T3V0Owor
ICAgICAgICBuZXdPdXQucmVzaXplKGxhc3RCbG9jay0+b3V0KCkubnVtQml0cygpKTsKKyAgICAg
ICAgZG8geworICAgICAgICAgICAgY2hhbmdlZCA9IGZhbHNlOworICAgICAgICAgICAgZm9yIChz
dGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiYgYmxvY2sgOiBtX2dyYXBoLmJhc2lj
QmxvY2tzSW5SZXZlcnNlT3JkZXIoKSkgeworICAgICAgICAgICAgICAgIG5ld091dC5jbGVhckFs
bCgpOworICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaiA9IDA7IGogPCBibG9jay0+c3Vj
Y2Vzc29ycygpLnNpemUoKTsgaisrKQorICAgICAgICAgICAgICAgICAgICBuZXdPdXQubWVyZ2Uo
YmxvY2stPnN1Y2Nlc3NvcnMoKVtqXS0+aW4oKSk7CisgICAgICAgICAgICAgICAgYm9vbCBvdXRE
aWRDaGFuZ2UgPSBibG9jay0+b3V0KCkuc2V0QW5kQ2hlY2sobmV3T3V0KTsKKyAgICAgICAgICAg
ICAgICBjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJsb2NrKHVubGlua2VkQ29kZUJsb2NrLCBibG9j
ay5nZXQoKSwgbV9ncmFwaCk7CisgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBvdXREaWRDaGFu
Z2U7CisgICAgICAgICAgICB9CisgICAgICAgIH0gd2hpbGUgKGNoYW5nZWQpOworICAgIH0KKwor
cHJpdmF0ZToKKyAgICBWTSYgbV92bTsKKyAgICBCeXRlY29kZUdyYXBoPFVubGlua2VkQ29kZUJs
b2NrPiYgbV9ncmFwaDsKKyAgICBCeXRlY29kZUluc2VydGlvblNldCBtX2luc2VydGlvblNldDsK
KyAgICBWZWN0b3I8U3RvcmFnZT4gbV9zdG9yYWdlczsKKyAgICBTdHJvbmc8U3ltYm9sVGFibGU+
IG1fZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZTsKKyAgICBpbnQgbV9nZW5lcmF0b3JGcmFtZVN5
bWJvbFRhYmxlSW5kZXg7Cit9OworCit2b2lkIHBlcmZvcm1HZW5lcmF0b3JpZmljYXRpb24oQnl0
ZWNvZGVHcmFwaDxVbmxpbmtlZENvZGVCbG9jaz4mIGdyYXBoLCBTeW1ib2xUYWJsZSogZ2VuZXJh
dG9yRnJhbWVTeW1ib2xUYWJsZSwgaW50IGdlbmVyYXRvckZyYW1lU3ltYm9sVGFibGVJbmRleCkK
K3sKKyAgICBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbiBwYXNzKGdyYXBoLCBnZW5lcmF0b3JG
cmFtZVN5bWJvbFRhYmxlLCBnZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlSW5kZXgpOworICAgIHBh
c3MucnVuKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi43OGU3ODY5NTZlOTYxNTZkMzdjYmY3ZGQwOWU3OGYyNGIwN2I0YmIzCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlR2Vu
ZXJhdG9yaWZpY2F0aW9uLmgKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNiBZdXN1a2UgU3V6dWtpIDx5dXN1a2Uuc3V6dWtpQHNzbGFiLmljcy5rZWlvLmFjLmpwPgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPEJ5dGVjb2RlR3JhcGguaD4KKwor
bmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIFN5bWJvbFRhYmxlOworCit2b2lkIHBlcmZvcm1HZW5l
cmF0b3JpZmljYXRpb24oQnl0ZWNvZGVHcmFwaDxVbmxpbmtlZENvZGVCbG9jaz4mLCBTeW1ib2xU
YWJsZSogZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZSwgaW50IGdlbmVyYXRvckZyYW1lU3ltYm9s
VGFibGVJbmRleCk7CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlR3JhcGguY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlR3JhcGguY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkwNWVkNGNlYmY3
ZWEyZTg1OTQwNjE4OWJkZTEyMmY3YjM4Nzg5NTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVHcmFwaC5jcHAKQEAgLTAsMCArMSwzNCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBZdXN1a2UgU3V6dWtpIDx5dXN1a2Uuc3V6dWtp
QHNzbGFiLmljcy5rZWlvLmFjLmpwPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiQnl0ZWNvZGVHcmFwaC5oIgorCisjaW5jbHVkZSAiQnl0ZWNvZGVCYXNpY0Jsb2Nr
LmgiCisKK25hbWVzcGFjZSBKU0MgeworCisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlR3JhcGguaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUdyYXBoLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2Iz
OWMwN2NjMzJiY2IzNWVlNmJmNGJkMDZjNjUxNGU2NDI5ZTRlMAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUdyYXBoLmgKQEAgLTAsMCAr
MSw5OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBZdXN1a2UgU3V6dWtpIDx5dXN1a2Uu
c3V6dWtpQHNzbGFiLmljcy5rZWlvLmFjLmpwPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEJ5dGVjb2Rl
R3JhcGhfaAorI2RlZmluZSBCeXRlY29kZUdyYXBoX2gKKworI2luY2x1ZGUgIkJ5dGVjb2RlQmFz
aWNCbG9jay5oIgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIEpTQyB7CisK
K2NsYXNzIEJ5dGVjb2RlQmFzaWNCbG9jazsKKwordGVtcGxhdGU8dHlwZW5hbWUgQmxvY2s+Citj
bGFzcyBCeXRlY29kZUdyYXBoIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShCeXRlY29kZUdyYXBoKTsKK3B1YmxpYzoKKyAgICB0eXBlZGVm
IFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4gQmFzaWNCbG9ja3NW
ZWN0b3I7CisKKyAgICBpbmxpbmUgQnl0ZWNvZGVHcmFwaChCbG9jayosIHR5cGVuYW1lIEJsb2Nr
OjpVbnBhY2tlZEluc3RydWN0aW9ucyYpOworCisgICAgQmxvY2sqIGNvZGVCbG9jaygpIGNvbnN0
IHsgcmV0dXJuIG1fY29kZUJsb2NrOyB9CisKKyAgICBCYXNpY0Jsb2Nrc1ZlY3RvciYgYmFzaWNC
bG9ja3MoKSB7IHJldHVybiBtX2Jhc2ljQmxvY2tzOyB9CisKKyAgICB0eXBlbmFtZSBCbG9jazo6
VW5wYWNrZWRJbnN0cnVjdGlvbnMmIGluc3RydWN0aW9ucygpIHsgcmV0dXJuIG1faW5zdHJ1Y3Rp
b25zOyB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJdGVyYXRvcj4KKyAgICBjbGFzcyBSZXZl
cnNlSXRlcmFibGUgeworICAgIHB1YmxpYzoKKyAgICAgICAgUmV2ZXJzZUl0ZXJhYmxlKEl0ZXJh
dG9yIGJlZ2luLCBJdGVyYXRvciBlbmQpCisgICAgICAgICAgICA6IG1fYmVnaW4oYmVnaW4pCisg
ICAgICAgICAgICAsIG1fZW5kKGVuZCkKKyAgICAgICAgeworICAgICAgICB9CisKKyAgICAgICAg
c3RkOjpyZXZlcnNlX2l0ZXJhdG9yPEl0ZXJhdG9yPiBiZWdpbigpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHJldHVybiBzdGQ6OnJldmVyc2VfaXRlcmF0b3I8SXRlcmF0b3I+KG1fZW5kKTsKKyAg
ICAgICAgfQorCisgICAgICAgIHN0ZDo6cmV2ZXJzZV9pdGVyYXRvcjxJdGVyYXRvcj4gZW5kKCkK
KyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6cmV2ZXJzZV9pdGVyYXRvcjxJdGVy
YXRvcj4obV9iZWdpbik7CisgICAgICAgIH0KKworICAgIHByaXZhdGU6CisgICAgICAgIEl0ZXJh
dG9yIG1fYmVnaW47CisgICAgICAgIEl0ZXJhdG9yIG1fZW5kOworICAgIH07CisKKyAgICBSZXZl
cnNlSXRlcmFibGU8QmFzaWNCbG9ja3NWZWN0b3I6Oml0ZXJhdG9yPiBiYXNpY0Jsb2Nrc0luUmV2
ZXJzZU9yZGVyKCkKKyAgICB7CisgICAgICAgIHJldHVybiB7IG1fYmFzaWNCbG9ja3MuYmVnaW4o
KSwgbV9iYXNpY0Jsb2Nrcy5lbmQoKSB9OworICAgIH0KKworcHJpdmF0ZToKKyAgICBCbG9jayog
bV9jb2RlQmxvY2s7CisgICAgQmFzaWNCbG9ja3NWZWN0b3IgbV9iYXNpY0Jsb2NrczsKKyAgICB0
eXBlbmFtZSBCbG9jazo6VW5wYWNrZWRJbnN0cnVjdGlvbnMmIG1faW5zdHJ1Y3Rpb25zOworfTsK
KworCit0ZW1wbGF0ZTx0eXBlbmFtZSBCbG9jaz4KK0J5dGVjb2RlR3JhcGg8QmxvY2s+OjpCeXRl
Y29kZUdyYXBoKEJsb2NrKiBjb2RlQmxvY2ssIHR5cGVuYW1lIEJsb2NrOjpVbnBhY2tlZEluc3Ry
dWN0aW9ucyYgaW5zdHJ1Y3Rpb25zKQorICAgIDogbV9jb2RlQmxvY2soY29kZUJsb2NrKQorICAg
ICwgbV9pbnN0cnVjdGlvbnMoaW5zdHJ1Y3Rpb25zKQoreworICAgIEFTU0VSVChtX2NvZGVCbG9j
ayk7CisgICAgY29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MobV9jb2RlQmxvY2ssIGluc3RydWN0
aW9ucy5iZWdpbigpLCBpbnN0cnVjdGlvbnMuc2l6ZSgpLCBtX2Jhc2ljQmxvY2tzKTsKKyAgICBB
U1NFUlQobV9iYXNpY0Jsb2Nrcy5zaXplKCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKyNl
bmRpZiAvLyBCeXRlY29kZUdyYXBoX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUluc2VydGlvblNldC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnNlcnRpb25TZXQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIxN2QxYjY2
ZWUyNmIzYzJiNzU1ZTE5OGE4ZjA3ZmEzM2RlNDlmZGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnNlcnRpb25TZXQuY3BwCkBAIC0w
LDAgKzEsMTQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IFl1c3VrZSBTdXp1a2kgPHl1
c3VrZS5zdXp1a2lAc3NsYWIuaWNzLmtlaW8uYWMuanA+CisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJCeXRlY29kZUluc2VydGlvblNldC5oIgorCisjaW5jbHVkZSAi
UHJlY2lzZUp1bXBUYXJnZXRzLmgiCisjaW5jbHVkZSA8d3RmL0J1YmJsZVNvcnQuaD4KKworbmFt
ZXNwYWNlIEpTQyB7CisKK2ludCBCeXRlY29kZUluc2VydGlvblNldDo6YWRqdXN0T2Zmc2V0KGlu
dCBieXRlY29kZU9mZnNldCwgaW50IGp1bXBUYXJnZXQpCit7CisgICAgLy8gVE9ETzogU3VwZXIg
cm91Z2ggaW1wbGVtZW50YXRpb24uIFdlIHNob3VsZCBsb29rIGludG8gaXQgY2FyZWZ1bGx5Lgor
ICAgIGlmIChieXRlY29kZU9mZnNldCA8IGp1bXBUYXJnZXQpIHsKKyAgICAgICAgYXV0byBzdGFy
dCA9IHN0ZDo6bG93ZXJfYm91bmQobV9pbnNlcnRpb25zLmJlZ2luKCksIG1faW5zZXJ0aW9ucy5l
bmQoKSwgYnl0ZWNvZGVPZmZzZXQsIFsmXSAoY29uc3QgSW5zZXJ0aW9uJiBpbnNlcnRpb24sIGlu
dCBieXRlY29kZU9mZnNldCkgeworICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4o
aW5zZXJ0aW9uLmluZGV4KCkpIDwgYnl0ZWNvZGVPZmZzZXQ7CisgICAgICAgIH0pOworICAgICAg
ICBpZiAoc3RhcnQgIT0gbV9pbnNlcnRpb25zLmVuZCgpKSB7CisgICAgICAgICAgICBhdXRvIGVu
ZCA9IHN0ZDo6bG93ZXJfYm91bmQobV9pbnNlcnRpb25zLmJlZ2luKCksIG1faW5zZXJ0aW9ucy5l
bmQoKSwganVtcFRhcmdldCwgWyZdIChjb25zdCBJbnNlcnRpb24mIGluc2VydGlvbiwgaW50IGp1
bXBUYXJnZXQpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihpbnNl
cnRpb24uaW5kZXgoKSkgPCBqdW1wVGFyZ2V0OworICAgICAgICAgICAgfSk7CisgICAgICAgICAg
ICBmb3IgKDsgc3RhcnQgIT0gZW5kOyArK3N0YXJ0KSB7CisgICAgICAgICAgICAgICAgaWYgKHN0
YXJ0LT5lbGVtZW50KCkuaXNSZW1vdmVDb21tYW5kKSB7CisgICAgICAgICAgICAgICAgICAgIGp1
bXBUYXJnZXQgLT0gc3RhcnQtPmVsZW1lbnQoKS5sZW5ndGg7CisgICAgICAgICAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgICAgICAgICAganVtcFRhcmdldCArPSBzdGFydC0+ZWxlbWVudCgp
Lmxlbmd0aDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICAgICAgcmV0dXJuIGp1bXBUYXJnZXQgLSBieXRlY29kZU9mZnNldDsKKyAgICB9CisKKyAgICBp
ZiAoYnl0ZWNvZGVPZmZzZXQgPT0ganVtcFRhcmdldCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAg
ICByZXR1cm4gLWFkanVzdE9mZnNldChqdW1wVGFyZ2V0LCBieXRlY29kZU9mZnNldCk7Cit9CisK
K3ZvaWQgQnl0ZWNvZGVJbnNlcnRpb25TZXQ6OmV4ZWN1dGUoKQoreworICAgIFdURjo6YnViYmxl
U29ydChtX2luc2VydGlvbnMuYmVnaW4oKSwgbV9pbnNlcnRpb25zLmVuZCgpLCBbXSAoY29uc3Qg
SW5zZXJ0aW9uJiBsaHMsIGNvbnN0IEluc2VydGlvbiYgcmhzKSB7CisgICAgICAgIC8vIFdlIHdv
dWxkIGxpa2UgdG8gcGVyZm9ybSByZW1vdmUgb3BlcmF0aW9uIGJlZm9yZSBpbnNlcnRpb24uCisg
ICAgICAgIGlmIChsaHMuaW5kZXgoKSA9PSByaHMuaW5kZXgoKSkKKyAgICAgICAgICAgIHJldHVy
biByaHMuZWxlbWVudCgpLmlzUmVtb3ZlQ29tbWFuZDsKKyAgICAgICAgcmV0dXJuIGxocyA8IHJo
czsKKyAgICB9KTsKKworICAgIC8vIEJlZm9yZSBhcHBseWluZyB0aGUgY2hhbmdlcywgd2UgYWRq
dXN0IHRoZSBqdW1wcyBiYXNlZCBvbiB0aGUgb3JpZ2luYWwgYnl0ZWNvZGUgb2Zmc2V0LCB0aGUg
b2Zmc2V0IHRvIHRoZSBqdW1wIHRhcmdldCwgYW5kCisgICAgLy8gdGhlIGluc2VydGlvbiBpbmZv
cm1hdGlvbi4KKyAgICBVbmxpbmtlZENvZGVCbG9jayogY29kZUJsb2NrID0gbV9ncmFwaC5jb2Rl
QmxvY2soKTsKKyAgICBVbmxpbmtlZEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiA9IG1f
Z3JhcGguaW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsKKyAgICBmb3IgKGludCBieXRlY29kZU9mZnNl
dCA9IDAsIGluc3RydWN0aW9uQ291bnQgPSBtX2dyYXBoLmluc3RydWN0aW9ucygpLnNpemUoKTsg
Ynl0ZWNvZGVPZmZzZXQgPCBpbnN0cnVjdGlvbkNvdW50OykgeworICAgICAgICBVbmxpbmtlZElu
c3RydWN0aW9uKiBjdXJyZW50ID0gaW5zdHJ1Y3Rpb25zQmVnaW4gKyBieXRlY29kZU9mZnNldDsK
KyAgICAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBjdXJyZW50WzBdLnUub3Bjb2RlOworCisgICAg
ICAgIHN3aXRjaCAob3Bjb2RlSUQpIHsKKyAgICAgICAgY2FzZSBvcF9qbXA6CisgICAgICAgICAg
ICBjdXJyZW50WzFdLnUub3BlcmFuZCA9IGFkanVzdE9mZnNldChieXRlY29kZU9mZnNldCwgYnl0
ZWNvZGVPZmZzZXQgKyBjdXJyZW50WzFdLnUub3BlcmFuZCk7CisgICAgICAgICAgICBicmVhazsK
KworICAgICAgICBjYXNlIG9wX2p0cnVlOgorICAgICAgICBjYXNlIG9wX2pmYWxzZToKKyAgICAg
ICAgY2FzZSBvcF9qZXFfbnVsbDoKKyAgICAgICAgY2FzZSBvcF9qbmVxX251bGw6CisgICAgICAg
ICAgICBjdXJyZW50WzJdLnUub3BlcmFuZCA9IGFkanVzdE9mZnNldChieXRlY29kZU9mZnNldCwg
Ynl0ZWNvZGVPZmZzZXQgKyBjdXJyZW50WzJdLnUub3BlcmFuZCk7CisgICAgICAgICAgICBicmVh
azsKKworICAgICAgICBjYXNlIG9wX2puZXFfcHRyOgorICAgICAgICBjYXNlIG9wX2psZXNzOgor
ICAgICAgICBjYXNlIG9wX2psZXNzZXE6CisgICAgICAgIGNhc2Ugb3BfamdyZWF0ZXI6CisgICAg
ICAgIGNhc2Ugb3BfamdyZWF0ZXJlcToKKyAgICAgICAgY2FzZSBvcF9qbmxlc3M6CisgICAgICAg
IGNhc2Ugb3Bfam5sZXNzZXE6CisgICAgICAgIGNhc2Ugb3Bfam5ncmVhdGVyOgorICAgICAgICBj
YXNlIG9wX2puZ3JlYXRlcmVxOgorICAgICAgICAgICAgY3VycmVudFszXS51Lm9wZXJhbmQgPSBh
ZGp1c3RPZmZzZXQoYnl0ZWNvZGVPZmZzZXQsIGJ5dGVjb2RlT2Zmc2V0ICsgY3VycmVudFszXS51
Lm9wZXJhbmQpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBvcF9zd2l0Y2hf
aW1tOgorICAgICAgICBjYXNlIG9wX3N3aXRjaF9jaGFyOiB7CisgICAgICAgICAgICBhdXRvJiB0
YWJsZSA9IGNvZGVCbG9jay0+c3dpdGNoSnVtcFRhYmxlKGN1cnJlbnRbMV0udS5vcGVyYW5kKTsK
KyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IHRhYmxlLmJyYW5jaE9mZnNldHMuc2l6ZSgp
OyBpLS07KQorICAgICAgICAgICAgICAgIHRhYmxlLmJyYW5jaE9mZnNldHNbaV0gPSBhZGp1c3RP
ZmZzZXQoYnl0ZWNvZGVPZmZzZXQsIGJ5dGVjb2RlT2Zmc2V0ICsgdGFibGUuYnJhbmNoT2Zmc2V0
c1tpXSk7CisgICAgICAgICAgICBjdXJyZW50WzJdLnUub3BlcmFuZCA9IGFkanVzdE9mZnNldChi
eXRlY29kZU9mZnNldCwgYnl0ZWNvZGVPZmZzZXQgKyBjdXJyZW50WzJdLnUub3BlcmFuZCk7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2Ugb3Bfc3dpdGNoX3N0
cmluZzogeworICAgICAgICAgICAgYXV0byYgdGFibGUgPSBjb2RlQmxvY2stPnN0cmluZ1N3aXRj
aEp1bXBUYWJsZShjdXJyZW50WzFdLnUub3BlcmFuZCk7CisgICAgICAgICAgICBhdXRvIGl0ZXIg
PSB0YWJsZS5vZmZzZXRUYWJsZS5iZWdpbigpOworICAgICAgICAgICAgYXV0byBlbmQgPSB0YWJs
ZS5vZmZzZXRUYWJsZS5lbmQoKTsKKyAgICAgICAgICAgIGZvciAoOyBpdGVyICE9IGVuZDsgKytp
dGVyKQorICAgICAgICAgICAgICAgIGl0ZXItPnZhbHVlLmJyYW5jaE9mZnNldCA9IGFkanVzdE9m
ZnNldChieXRlY29kZU9mZnNldCwgYnl0ZWNvZGVPZmZzZXQgKyBpdGVyLT52YWx1ZS5icmFuY2hP
ZmZzZXQpOworICAgICAgICAgICAgY3VycmVudFsyXS51Lm9wZXJhbmQgPSBhZGp1c3RPZmZzZXQo
Ynl0ZWNvZGVPZmZzZXQsIGJ5dGVjb2RlT2Zmc2V0ICsgY3VycmVudFsyXS51Lm9wZXJhbmQpOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBieXRlY29kZU9mZnNldCArPSBvcGNv
ZGVMZW5ndGgob3Bjb2RlSUQpOworICAgIH0KKworICAgIC8vIFRPRE86IFRoZW4sIGV4Y2VwdGlv
biBoYW5kbGVycyBzaG91bGQgYmUgYWRqdXN0ZWQuCisKKyAgICAvLyBGSVhNRTogQ3JhemlseSBu
YWl2ZSEgSGVyZSwgd2Ugc2hvdWxkIGtub3cgdGhlIGxlbmd0aCBvZiB0aGUgdHJhbnNmb3JtZWQg
aW5zdHJ1Y3Rpb25zIChzaW5jZSBpbnNlcnRpb24gYW5kIHJlbW92YWwgY29tbWFuZHMgY2FuIGhh
dmUgdGhlaXIgbGVuZ3RoKS4KKyAgICBmb3IgKHNpemVfdCBpbnNlcnRpb25JbmRleCA9IG1faW5z
ZXJ0aW9ucy5zaXplKCk7IGluc2VydGlvbkluZGV4LS07KSB7CisgICAgICAgIGNvbnN0IEluc2Vy
dGlvbiYgaW5zZXJ0aW9uID0gbV9pbnNlcnRpb25zW2luc2VydGlvbkluZGV4XTsKKyAgICAgICAg
aWYgKGluc2VydGlvbi5lbGVtZW50KCkuaXNSZW1vdmVDb21tYW5kKSB7CisgICAgICAgICAgICBt
X2dyYXBoLmluc3RydWN0aW9ucygpLnJlbW92ZShpbnNlcnRpb24uaW5kZXgoKSwgaW5zZXJ0aW9u
LmVsZW1lbnQoKS5sZW5ndGgpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbV9ncmFw
aC5pbnN0cnVjdGlvbnMoKS5pbnNlcnQoaW5zZXJ0aW9uLmluZGV4KCksIGluc2VydGlvbi5lbGVt
ZW50KCkuYnl0ZWNvZGUuaW5zdHJ1Y3Rpb25zLCBvcGNvZGVMZW5ndGgoaW5zZXJ0aW9uLmVsZW1l
bnQoKS5ieXRlY29kZS5pbnN0cnVjdGlvbnNbMF0udS5vcGNvZGUpKTsKKyAgICAgICAgfQorICAg
IH0KK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnNlcnRpb25TZXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9CeXRlY29kZUluc2VydGlvblNldC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAyNTFiYjVh
NWFmMGVmYTU5OGMyNDFkNmU5MGU0MWY2NTZjZDdjODYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnNlcnRpb25TZXQuaApAQCAtMCww
ICsxLDcyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IFl1c3VrZSBTdXp1a2kgPHl1c3Vr
ZS5zdXp1a2lAc3NsYWIuaWNzLmtlaW8uYWMuanA+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaW5jbHVkZSAiQnl0ZWNvZGVHcmFwaC5oIgorI2luY2x1ZGUgIlVubGlua2VkQ29kZUJsb2Nr
LmgiCisjaW5jbHVkZSA8d3RmL0luc2VydGlvbi5oPgorCituYW1lc3BhY2UgSlNDIHsKKworY2xh
c3MgQnl0ZWNvZGVJbnNlcnRpb25TZXQgeworcHVibGljOgorICAgIHN0cnVjdCBJbnNlcnRlZEJ5
dGVjb2RlIHsKKyAgICAgICAgVW5saW5rZWRJbnN0cnVjdGlvbiBpbnN0cnVjdGlvbnNbTUFYX09Q
Q09ERV9MRU5HVEhfT0ZfQllURUNPREVdOworICAgIH07CisKKyAgICBzdHJ1Y3QgQ29tbWFuZCB7
CisgICAgICAgIGJvb2wgaXNSZW1vdmVDb21tYW5kOworICAgICAgICBzaXplX3QgbGVuZ3RoOwor
ICAgICAgICBJbnNlcnRlZEJ5dGVjb2RlIGJ5dGVjb2RlOworICAgIH07CisKKyAgICB0eXBlZGVm
IFdURjo6SW5zZXJ0aW9uPENvbW1hbmQ+IEluc2VydGlvbjsKKworICAgIEJ5dGVjb2RlSW5zZXJ0
aW9uU2V0KEJ5dGVjb2RlR3JhcGg8VW5saW5rZWRDb2RlQmxvY2s+JiBncmFwaCkKKyAgICAgICAg
OiBtX2dyYXBoKGdyYXBoKQorICAgIHsKKyAgICB9CisKKyAgICB2b2lkIGluc2VydCh1bnNpZ25l
ZCBieXRlY29kZU9mZnNldCwgSW5zZXJ0ZWRCeXRlY29kZSBieXRlY29kZSkKKyAgICB7CisgICAg
ICAgIG1faW5zZXJ0aW9ucy5hcHBlbmQoSW5zZXJ0aW9uKGJ5dGVjb2RlT2Zmc2V0LCBDb21tYW5k
IHsgZmFsc2UsIG9wY29kZUxlbmd0aChieXRlY29kZS5pbnN0cnVjdGlvbnNbMF0udS5vcGNvZGUp
LCBieXRlY29kZSB9KSk7CisgICAgfQorCisgICAgdm9pZCByZW1vdmVCeXRlY29kZSh1bnNpZ25l
ZCBieXRlY29kZU9mZnNldCkKKyAgICB7CisgICAgICAgIG1faW5zZXJ0aW9ucy5hcHBlbmQoSW5z
ZXJ0aW9uKGJ5dGVjb2RlT2Zmc2V0LCBDb21tYW5kIHsgdHJ1ZSwgb3Bjb2RlTGVuZ3RoKG1fZ3Jh
cGguaW5zdHJ1Y3Rpb25zKClbYnl0ZWNvZGVPZmZzZXRdLnUub3Bjb2RlKSwgSW5zZXJ0ZWRCeXRl
Y29kZSB7IH0gfSkpOworICAgIH0KKworICAgIHZvaWQgZXhlY3V0ZSgpOworCitwcml2YXRlOgor
ICAgIGludCBhZGp1c3RPZmZzZXQoaW50IGJ5dGVjb2RlT2Zmc2V0LCBpbnQganVtcFRhcmdldCk7
CisKKyAgICBCeXRlY29kZUdyYXBoPFVubGlua2VkQ29kZUJsb2NrPiYgbV9ncmFwaDsKKyAgICBW
ZWN0b3I8SW5zZXJ0aW9uLCA4PiBtX2luc2VydGlvbnM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBK
U0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxp
c3QuanNvbiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNv
bgppbmRleCA4OGE3YzUyMzIwNTVjMzliNzdlOWUyZjVjNjlhY2YxYjRjY2Y2OWFiLi41NTVlYzFi
ZWE4YzRlOWZkMmEzYzA0M2IwMTM0MTRjMGE0MDg3NWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24KKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCkBAIC0xNyw2ICsxNyw3IEBACiAg
ICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXdfYXJyYXlfd2l0aF9zaXplIiwgImxlbmd0aCIg
OiA0IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXdfYXJyYXlfYnVmZmVyIiwgImxl
bmd0aCIgOiA1IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXdfcmVnZXhwIiwgImxl
bmd0aCIgOiAzIH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXdfZ2VuZXJhdG9yX2Zy
YW1lIiwgImxlbmd0aCIgOiAzIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9tb3YiLCAi
bGVuZ3RoIiA6IDMgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX25vdCIsICJsZW5ndGgi
IDogMyB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfZXEiLCAibGVuZ3RoIiA6IDQgfSwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVu
ZXNzQW5hbHlzaXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
TGl2ZW5lc3NBbmFseXNpcy5jcHAKaW5kZXggMTdlODJhMmZiYmEwMTUwNDNlOTlkMzRlZDI1Njkz
NzJiMzZmN2E4NS4uMDM4OTc5ODdhMjdiY2Y5OTI2YTc3MDllMzIwODIzYjQyZTkxZjM1OCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NB
bmFseXNpcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
TGl2ZW5lc3NBbmFseXNpcy5jcHAKQEAgLTM1LDEwICszNSw5IEBACiAKIG5hbWVzcGFjZSBKU0Mg
ewogCi1CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcyhD
b2RlQmxvY2sqIGNvZGVCbG9jaykKLSAgICA6IG1fY29kZUJsb2NrKGNvZGVCbG9jaykKK0J5dGVj
b2RlTGl2ZW5lc3NBbmFseXNpczo6Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzKEJ5dGVjb2RlR3Jh
cGg8Q29kZUJsb2NrPiYgZ3JhcGgpCisgICAgOiBtX2dyYXBoKGdyYXBoKQogewotICAgIEFTU0VS
VChtX2NvZGVCbG9jayk7CiAgICAgY29tcHV0ZSgpOwogfQogCkBAIC01Niw5ICs1NSw5IEBAIHN0
YXRpYyB1bnNpZ25lZCBnZXRMZWFkZXJPZmZzZXRGb3JCYXNpY0Jsb2NrKHN0ZDo6dW5pcXVlX3B0
cjxCeXRlY29kZUJhc2ljQmxvY2s+CiAgICAgcmV0dXJuICgqYmFzaWNCbG9jayktPmxlYWRlckJ5
dGVjb2RlT2Zmc2V0KCk7CiB9CiAKLXN0YXRpYyBCeXRlY29kZUJhc2ljQmxvY2sqIGZpbmRCYXNp
Y0Jsb2NrV2l0aExlYWRlck9mZnNldChWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFz
aWNCbG9jaz4+JiBiYXNpY0Jsb2NrcywgdW5zaWduZWQgbGVhZGVyT2Zmc2V0KQorc3RhdGljIEJ5
dGVjb2RlQmFzaWNCbG9jayogZmluZEJhc2ljQmxvY2tXaXRoTGVhZGVyT2Zmc2V0KEJ5dGVjb2Rl
R3JhcGg8Q29kZUJsb2NrPiYgZ3JhcGgsIHVuc2lnbmVkIGxlYWRlck9mZnNldCkKIHsKLSAgICBy
ZXR1cm4gKCp0cnlCaW5hcnlTZWFyY2g8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9j
az4sIHVuc2lnbmVkPihiYXNpY0Jsb2NrcywgYmFzaWNCbG9ja3Muc2l6ZSgpLCBsZWFkZXJPZmZz
ZXQsIGdldExlYWRlck9mZnNldEZvckJhc2ljQmxvY2spKS5nZXQoKTsKKyAgICByZXR1cm4gKCp0
cnlCaW5hcnlTZWFyY2g8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4sIHVuc2ln
bmVkPihncmFwaC5iYXNpY0Jsb2NrcygpLCBncmFwaC5iYXNpY0Jsb2NrcygpLnNpemUoKSwgbGVh
ZGVyT2Zmc2V0LCBnZXRMZWFkZXJPZmZzZXRGb3JCYXNpY0Jsb2NrKSkuZ2V0KCk7CiB9CiAKIHN0
YXRpYyBib29sIGJsb2NrQ29udGFpbnNCeXRlY29kZU9mZnNldChCeXRlY29kZUJhc2ljQmxvY2sq
IGJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCkKQEAgLTY3LDcgKzY2LDcgQEAgc3RhdGlj
IGJvb2wgYmxvY2tDb250YWluc0J5dGVjb2RlT2Zmc2V0KEJ5dGVjb2RlQmFzaWNCbG9jayogYmxv
Y2ssIHVuc2lnbmVkIGJ5dGUKICAgICByZXR1cm4gYnl0ZWNvZGVPZmZzZXQgPj0gbGVhZGVyT2Zm
c2V0ICYmIGJ5dGVjb2RlT2Zmc2V0IDwgbGVhZGVyT2Zmc2V0ICsgYmxvY2stPnRvdGFsQnl0ZWNv
ZGVMZW5ndGgoKTsKIH0KIAotc3RhdGljIEJ5dGVjb2RlQmFzaWNCbG9jayogZmluZEJhc2ljQmxv
Y2tGb3JCeXRlY29kZU9mZnNldChWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNC
bG9jaz4+JiBiYXNpY0Jsb2NrcywgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpCitzdGF0aWMgQnl0
ZWNvZGVCYXNpY0Jsb2NrKiBmaW5kQmFzaWNCbG9ja0ZvckJ5dGVjb2RlT2Zmc2V0KEJ5dGVjb2Rl
R3JhcGg8Q29kZUJsb2NrPiYgZ3JhcGgsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KQogewogLyoK
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYmFzaWNCbG9ja3Muc2l6ZSgpOyBpKyspIHsK
QEAgLTc2LDYgKzc1LDggQEAgc3RhdGljIEJ5dGVjb2RlQmFzaWNCbG9jayogZmluZEJhc2ljQmxv
Y2tGb3JCeXRlY29kZU9mZnNldChWZWN0b3I8c3RkOjp1bmlxdWVfcHQKICAgICB9CiAgICAgcmV0
dXJuIDA7CiAqLworICAgIEJ5dGVjb2RlR3JhcGg8Q29kZUJsb2NrPjo6QmFzaWNCbG9ja3NWZWN0
b3ImIGJhc2ljQmxvY2tzID0gZ3JhcGguYmFzaWNCbG9ja3MoKTsKKwogICAgIHN0ZDo6dW5pcXVl
X3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+KiBiYXNpY0Jsb2NrID0gYXBwcm94aW1hdGVCaW5hcnlT
ZWFyY2g8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4sIHVuc2lnbmVkPigKICAg
ICAgICAgYmFzaWNCbG9ja3MsIGJhc2ljQmxvY2tzLnNpemUoKSwgYnl0ZWNvZGVPZmZzZXQsIGdl
dExlYWRlck9mZnNldEZvckJhc2ljQmxvY2spOwogICAgIC8vIFdlIGZvdW5kIHRoZSBibG9jayB3
ZSB3ZXJlIGxvb2tpbmcgZm9yLgpAQCAtOTgsNyArOTksNyBAQCBzdGF0aWMgQnl0ZWNvZGVCYXNp
Y0Jsb2NrKiBmaW5kQmFzaWNCbG9ja0ZvckJ5dGVjb2RlT2Zmc2V0KFZlY3RvcjxzdGQ6OnVuaXF1
ZV9wdAogLy8gU2ltcGxpZmllZCBpbnRlcmZhY2UgdG8gYnl0ZWNvZGUgdXNlL2RlZiwgd2hpY2gg
ZGV0ZXJtaW5lcyBkZWZzIGZpcnN0IGFuZCB0aGVuIHVzZXMsIGFuZCBpbmNsdWRlcwogLy8gZXhj
ZXB0aW9uIGhhbmRsZXJzIGluIHRoZSB1c2VzLgogdGVtcGxhdGU8dHlwZW5hbWUgVXNlRnVuY3Rv
ciwgdHlwZW5hbWUgRGVmRnVuY3Rvcj4KLXN0YXRpYyB2b2lkIHN0ZXBPdmVySW5zdHJ1Y3Rpb24o
Q29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2ssIFZlY3Rvcjxz
dGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mIGJhc2ljQmxvY2tzLCB1bnNpZ25l
ZCBieXRlY29kZU9mZnNldCwgY29uc3QgVXNlRnVuY3RvciYgdXNlLCBjb25zdCBEZWZGdW5jdG9y
JiBkZWYpCitzdGF0aWMgdm9pZCBzdGVwT3Zlckluc3RydWN0aW9uKENvZGVCbG9jayogY29kZUJs
b2NrLCBCeXRlY29kZUdyYXBoPENvZGVCbG9jaz4mIGdyYXBoLCB1bnNpZ25lZCBieXRlY29kZU9m
ZnNldCwgY29uc3QgVXNlRnVuY3RvciYgdXNlLCBjb25zdCBEZWZGdW5jdG9yJiBkZWYpCiB7CiAg
ICAgLy8gVGhpcyBhYnN0cmFjdGx5IGV4ZWN1dGUgdGhlIGluc3RydWN0aW9uIGluIHJldmVyc2Uu
IEluc3RydWN0aW9ucyBsb2dpY2FsbHkgZmlyc3QgdXNlIG9wZXJhbmRzIGFuZAogICAgIC8vIHRo
ZW4gZGVmaW5lIG9wZXJhbmRzLiBUaGlzIGxvZ2ljYWwgb3JkZXJpbmcgaXMgbmVjZXNzYXJ5IGZv
ciBvcGVyYXRpb25zIHRoYXQgdXNlIGFuZCBkZWYgdGhlIHNhbWUKQEAgLTExNiwxNCArMTE3LDE0
IEBAIHN0YXRpYyB2b2lkIHN0ZXBPdmVySW5zdHJ1Y3Rpb24oQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2ssCiAgICAgLy8gZmlyc3QgYWRkIGl0IHRvIHRoZSBv
dXQgc2V0ICh0aGUgdXNlKSwgYW5kIHRoZW4gd2UnZCByZW1vdmUgaXQgKHRoZSBkZWYpLgogICAg
IAogICAgIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoCi0gICAgICAgIGNvZGVCbG9jaywg
YmxvY2ssIGJ5dGVjb2RlT2Zmc2V0LAorICAgICAgICBjb2RlQmxvY2ssIGJ5dGVjb2RlT2Zmc2V0
LAogICAgICAgICBbJl0gKENvZGVCbG9jayogY29kZUJsb2NrLCBJbnN0cnVjdGlvbiosIE9wY29k
ZUlELCBpbnQgb3BlcmFuZCkgewogICAgICAgICAgICAgaWYgKGlzVmFsaWRSZWdpc3RlckZvckxp
dmVuZXNzKGNvZGVCbG9jaywgb3BlcmFuZCkpCiAgICAgICAgICAgICAgICAgZGVmKFZpcnR1YWxS
ZWdpc3RlcihvcGVyYW5kKS50b0xvY2FsKCkpOwogICAgICAgICB9KTsKIAogICAgIGNvbXB1dGVV
c2VzRm9yQnl0ZWNvZGVPZmZzZXQoCi0gICAgICAgIGNvZGVCbG9jaywgYmxvY2ssIGJ5dGVjb2Rl
T2Zmc2V0LAorICAgICAgICBjb2RlQmxvY2ssIGJ5dGVjb2RlT2Zmc2V0LAogICAgICAgICBbJl0g
KENvZGVCbG9jayogY29kZUJsb2NrLCBJbnN0cnVjdGlvbiosIE9wY29kZUlELCBpbnQgb3BlcmFu
ZCkgewogICAgICAgICAgICAgaWYgKGlzVmFsaWRSZWdpc3RlckZvckxpdmVuZXNzKGNvZGVCbG9j
aywgb3BlcmFuZCkpCiAgICAgICAgICAgICAgICAgdXNlKFZpcnR1YWxSZWdpc3RlcihvcGVyYW5k
KS50b0xvY2FsKCkpOwpAQCAtMTMyLDI0ICsxMzMsMTYgQEAgc3RhdGljIHZvaWQgc3RlcE92ZXJJ
bnN0cnVjdGlvbihDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9j
aywKICAgICAvLyBJZiB3ZSBoYXZlIGFuIGV4Y2VwdGlvbiBoYW5kbGVyLCB3ZSB3YW50IHRoZSBs
aXZlLWluIHZhcmlhYmxlcyBvZiB0aGUgCiAgICAgLy8gZXhjZXB0aW9uIGhhbmRsZXIgYmxvY2sg
dG8gYmUgaW5jbHVkZWQgaW4gdGhlIGxpdmUtaW4gb2YgdGhpcyBwYXJ0aWN1bGFyIGJ5dGVjb2Rl
LgogICAgIGlmIChIYW5kbGVySW5mbyogaGFuZGxlciA9IGNvZGVCbG9jay0+aGFuZGxlckZvckJ5
dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KSkgewotICAgICAgICAvLyBGSVhNRTogVGhpcyBy
ZXN1bWUgY2hlY2sgc2hvdWxkIG5vdCBiZSBuZWVkZWQuCi0gICAgICAgIC8vIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTkyODEKLSAgICAgICAgSW50ZXJwcmV0ZXIq
IGludGVycHJldGVyID0gY29kZUJsb2NrLT52bSgpLT5pbnRlcnByZXRlcjsKLSAgICAgICAgSW5z
dHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luID0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5i
ZWdpbigpOwotICAgICAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSAmaW5zdHJ1Y3Rpb25z
QmVnaW5bYnl0ZWNvZGVPZmZzZXRdOwotICAgICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGludGVy
cHJldGVyLT5nZXRPcGNvZGVJRChpbnN0cnVjdGlvbi0+dS5vcGNvZGUpOwotICAgICAgICBpZiAo
b3Bjb2RlSUQgIT0gb3BfcmVzdW1lKSB7Ci0gICAgICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2sq
IGhhbmRsZXJCbG9jayA9IGZpbmRCYXNpY0Jsb2NrV2l0aExlYWRlck9mZnNldChiYXNpY0Jsb2Nr
cywgaGFuZGxlci0+dGFyZ2V0KTsKLSAgICAgICAgICAgIEFTU0VSVChoYW5kbGVyQmxvY2spOwot
ICAgICAgICAgICAgaGFuZGxlckJsb2NrLT5pbigpLmZvckVhY2hTZXRCaXQodXNlKTsKLSAgICAg
ICAgfQorICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGhhbmRsZXJCbG9jayA9IGZpbmRCYXNp
Y0Jsb2NrV2l0aExlYWRlck9mZnNldChncmFwaCwgaGFuZGxlci0+dGFyZ2V0KTsKKyAgICAgICAg
QVNTRVJUKGhhbmRsZXJCbG9jayk7CisgICAgICAgIGhhbmRsZXJCbG9jay0+aW4oKS5mb3JFYWNo
U2V0Qml0KHVzZSk7CiAgICAgfQogfQogCi1zdGF0aWMgdm9pZCBzdGVwT3Zlckluc3RydWN0aW9u
KENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrLCBWZWN0b3I8
c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+JiBiYXNpY0Jsb2NrcywgdW5zaWdu
ZWQgYnl0ZWNvZGVPZmZzZXQsIEZhc3RCaXRWZWN0b3ImIG91dCkKK3N0YXRpYyB2b2lkIHN0ZXBP
dmVySW5zdHJ1Y3Rpb24oQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlR3JhcGg8Q29kZUJs
b2NrPiYgZ3JhcGgsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBGYXN0Qml0VmVjdG9yJiBvdXQp
CiB7CiAgICAgc3RlcE92ZXJJbnN0cnVjdGlvbigKLSAgICAgICAgY29kZUJsb2NrLCBibG9jaywg
YmFzaWNCbG9ja3MsIGJ5dGVjb2RlT2Zmc2V0LAorICAgICAgICBjb2RlQmxvY2ssIGdyYXBoLCBi
eXRlY29kZU9mZnNldCwKICAgICAgICAgWyZdICh1bnNpZ25lZCBiaXRJbmRleCkgewogICAgICAg
ICAgICAgLy8gVGhpcyBpcyB0aGUgdXNlIGZ1bmN0b3IsIHNvIHdlIHNldCB0aGUgYml0LgogICAg
ICAgICAgICAgb3V0LnNldChiaXRJbmRleCk7CkBAIC0xNjAsNyArMTUzLDcgQEAgc3RhdGljIHZv
aWQgc3RlcE92ZXJJbnN0cnVjdGlvbihDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVCYXNp
Y0Jsb2NrKiBibG9jaywKICAgICAgICAgfSk7CiB9CiAKLXN0YXRpYyB2b2lkIGNvbXB1dGVMb2Nh
bExpdmVuZXNzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2Rl
QmFzaWNCbG9jayogYmxvY2ssIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Js
b2NrPj4mIGJhc2ljQmxvY2tzLCB1bnNpZ25lZCB0YXJnZXRPZmZzZXQsIEZhc3RCaXRWZWN0b3Im
IHJlc3VsdCkKK3N0YXRpYyB2b2lkIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQnl0ZWNvZGVPZmZz
ZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2ssIEJ5dGVj
b2RlR3JhcGg8Q29kZUJsb2NrPiYgZ3JhcGgsIHVuc2lnbmVkIHRhcmdldE9mZnNldCwgRmFzdEJp
dFZlY3RvciYgcmVzdWx0KQogewogICAgIEFTU0VSVCghYmxvY2stPmlzRXhpdEJsb2NrKCkpOwog
ICAgIEFTU0VSVCghYmxvY2stPmlzRW50cnlCbG9jaygpKTsKQEAgLTE3Miw0NCArMTY1LDQ0IEBA
IHN0YXRpYyB2b2lkIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJs
b2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlCiAgICAgICAgIGlmICh0YXJnZXRPZmZzZXQgPiBieXRl
Y29kZU9mZnNldCkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAKLSAgICAgICAgc3RlcE92
ZXJJbnN0cnVjdGlvbihjb2RlQmxvY2ssIGJsb2NrLCBiYXNpY0Jsb2NrcywgYnl0ZWNvZGVPZmZz
ZXQsIG91dCk7CisgICAgICAgIHN0ZXBPdmVySW5zdHJ1Y3Rpb24oY29kZUJsb2NrLCBncmFwaCwg
Ynl0ZWNvZGVPZmZzZXQsIG91dCk7CiAgICAgfQogCiAgICAgcmVzdWx0LnNldChvdXQpOwogfQog
Ci1zdGF0aWMgdm9pZCBjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJsb2NrKENvZGVCbG9jayogY29k
ZUJsb2NrLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRy
PEJ5dGVjb2RlQmFzaWNCbG9jaz4+JiBiYXNpY0Jsb2NrcykKK3N0YXRpYyB2b2lkIGNvbXB1dGVM
b2NhbExpdmVuZXNzRm9yQmxvY2soQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFzaWNC
bG9jayogYmxvY2ssIEJ5dGVjb2RlR3JhcGg8Q29kZUJsb2NrPiYgZ3JhcGgpCiB7CiAgICAgaWYg
KGJsb2NrLT5pc0V4aXRCbG9jaygpIHx8IGJsb2NrLT5pc0VudHJ5QmxvY2soKSkKICAgICAgICAg
cmV0dXJuOwotICAgIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQnl0ZWNvZGVPZmZzZXQoY29kZUJs
b2NrLCBibG9jaywgYmFzaWNCbG9ja3MsIGJsb2NrLT5sZWFkZXJCeXRlY29kZU9mZnNldCgpLCBi
bG9jay0+aW4oKSk7CisgICAgY29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCeXRlY29kZU9mZnNldChj
b2RlQmxvY2ssIGJsb2NrLCBncmFwaCwgYmxvY2stPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCksIGJs
b2NrLT5pbigpKTsKIH0KIAogdm9pZCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OnJ1bkxpdmVu
ZXNzRml4cG9pbnQoKQogewotICAgIFVubGlua2VkQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9j
ayA9IG1fY29kZUJsb2NrLT51bmxpbmtlZENvZGVCbG9jaygpOworICAgIENvZGVCbG9jayogY29k
ZUJsb2NrID0gbV9ncmFwaC5jb2RlQmxvY2soKTsKKyAgICBVbmxpbmtlZENvZGVCbG9jayogdW5s
aW5rZWRDb2RlQmxvY2sgPSBjb2RlQmxvY2stPnVubGlua2VkQ29kZUJsb2NrKCk7CiAgICAgdW5z
aWduZWQgbnVtYmVyT2ZWYXJpYWJsZXMgPSB1bmxpbmtlZENvZGVCbG9jay0+bV9udW1DYWxsZWVM
b2NhbHM7CiAKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9iYXNpY0Jsb2Nrcy5zaXpl
KCk7IGkrKykgewotICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrID0gbV9iYXNpY0Js
b2Nrc1tpXS5nZXQoKTsKKyAgICBmb3IgKHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxv
Y2s+JiBibG9jayA6IG1fZ3JhcGguYmFzaWNCbG9ja3MoKSkgewogICAgICAgICBibG9jay0+aW4o
KS5yZXNpemUobnVtYmVyT2ZWYXJpYWJsZXMpOwogICAgICAgICBibG9jay0+b3V0KCkucmVzaXpl
KG51bWJlck9mVmFyaWFibGVzKTsKICAgICB9CiAKICAgICBib29sIGNoYW5nZWQ7Ci0gICAgbV9i
YXNpY0Jsb2Nrcy5sYXN0KCktPmluKCkuY2xlYXJBbGwoKTsKLSAgICBtX2Jhc2ljQmxvY2tzLmxh
c3QoKS0+b3V0KCkuY2xlYXJBbGwoKTsKKyAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGxhc3RCbG9j
ayA9IG1fZ3JhcGguYmFzaWNCbG9ja3MoKS5sYXN0KCkuZ2V0KCk7CisgICAgbGFzdEJsb2NrLT5p
bigpLmNsZWFyQWxsKCk7CisgICAgbGFzdEJsb2NrLT5vdXQoKS5jbGVhckFsbCgpOwogICAgIEZh
c3RCaXRWZWN0b3IgbmV3T3V0OwotICAgIG5ld091dC5yZXNpemUobV9iYXNpY0Jsb2Nrcy5sYXN0
KCktPm91dCgpLm51bUJpdHMoKSk7CisgICAgbmV3T3V0LnJlc2l6ZShsYXN0QmxvY2stPm91dCgp
Lm51bUJpdHMoKSk7CiAgICAgZG8gewogICAgICAgICBjaGFuZ2VkID0gZmFsc2U7Ci0gICAgICAg
IGZvciAodW5zaWduZWQgaSA9IG1fYmFzaWNCbG9ja3Muc2l6ZSgpIC0gMTsgaS0tOykgewotICAg
ICAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jayA9IG1fYmFzaWNCbG9ja3NbaV0uZ2V0
KCk7CisgICAgICAgIGZvciAoc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4mIGJs
b2NrIDogbV9ncmFwaC5iYXNpY0Jsb2Nrc0luUmV2ZXJzZU9yZGVyKCkpIHsKICAgICAgICAgICAg
IG5ld091dC5jbGVhckFsbCgpOwogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8
IGJsb2NrLT5zdWNjZXNzb3JzKCkuc2l6ZSgpOyBqKyspCiAgICAgICAgICAgICAgICAgbmV3T3V0
Lm1lcmdlKGJsb2NrLT5zdWNjZXNzb3JzKClbal0tPmluKCkpOwogICAgICAgICAgICAgYm9vbCBv
dXREaWRDaGFuZ2UgPSBibG9jay0+b3V0KCkuc2V0QW5kQ2hlY2sobmV3T3V0KTsKLSAgICAgICAg
ICAgIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQmxvY2sobV9jb2RlQmxvY2ssIGJsb2NrLCBtX2Jh
c2ljQmxvY2tzKTsKKyAgICAgICAgICAgIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQmxvY2soY29k
ZUJsb2NrLCBibG9jay5nZXQoKSwgbV9ncmFwaCk7CiAgICAgICAgICAgICBjaGFuZ2VkIHw9IG91
dERpZENoYW5nZTsKICAgICAgICAgfQogICAgIH0gd2hpbGUgKGNoYW5nZWQpOwpAQCAtMjE3LDEy
ICsyMTAsMTIgQEAgdm9pZCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OnJ1bkxpdmVuZXNzRml4
cG9pbnQoKQogCiB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Z2V0TGl2ZW5lc3NJbmZv
QXRCeXRlY29kZU9mZnNldCh1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgRmFzdEJpdFZlY3RvciYg
cmVzdWx0KQogewotICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2sgPSBmaW5kQmFzaWNCbG9j
a0ZvckJ5dGVjb2RlT2Zmc2V0KG1fYmFzaWNCbG9ja3MsIGJ5dGVjb2RlT2Zmc2V0KTsKKyAgICBC
eXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrID0gZmluZEJhc2ljQmxvY2tGb3JCeXRlY29kZU9mZnNl
dChtX2dyYXBoLCBieXRlY29kZU9mZnNldCk7CiAgICAgQVNTRVJUKGJsb2NrKTsKICAgICBBU1NF
UlQoIWJsb2NrLT5pc0VudHJ5QmxvY2soKSk7CiAgICAgQVNTRVJUKCFibG9jay0+aXNFeGl0Qmxv
Y2soKSk7CiAgICAgcmVzdWx0LnJlc2l6ZShibG9jay0+b3V0KCkubnVtQml0cygpKTsKLSAgICBj
b21wdXRlTG9jYWxMaXZlbmVzc0ZvckJ5dGVjb2RlT2Zmc2V0KG1fY29kZUJsb2NrLCBibG9jaywg
bV9iYXNpY0Jsb2NrcywgYnl0ZWNvZGVPZmZzZXQsIHJlc3VsdCk7CisgICAgY29tcHV0ZUxvY2Fs
TGl2ZW5lc3NGb3JCeXRlY29kZU9mZnNldChtX2dyYXBoLmNvZGVCbG9jaygpLCBibG9jaywgbV9n
cmFwaCwgYnl0ZWNvZGVPZmZzZXQsIHJlc3VsdCk7CiB9CiAKIGJvb2wgQnl0ZWNvZGVMaXZlbmVz
c0FuYWx5c2lzOjpvcGVyYW5kSXNMaXZlQXRCeXRlY29kZU9mZnNldChpbnQgb3BlcmFuZCwgdW5z
aWduZWQgYnl0ZWNvZGVPZmZzZXQpCkBAIC0yNDQsMTEgKzIzNywxMSBAQCBGYXN0Qml0VmVjdG9y
IEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Z2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29kZU9mZnNl
dCh1bnNpZ25lZAogdm9pZCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGVGdWxsTGl2
ZW5lc3MoRnVsbEJ5dGVjb2RlTGl2ZW5lc3MmIHJlc3VsdCkKIHsKICAgICBGYXN0Qml0VmVjdG9y
IG91dDsKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IG1fZ3JhcGguY29kZUJsb2NrKCk7CiAg
ICAgCi0gICAgcmVzdWx0Lm1fbWFwLnJlc2l6ZShtX2NvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCku
c2l6ZSgpKTsKKyAgICByZXN1bHQubV9tYXAucmVzaXplKGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25z
KCkuc2l6ZSgpKTsKICAgICAKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2Jhc2ljQmxvY2tzLnNp
emUoKTsgaS0tOykgewotICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrID0gbV9iYXNp
Y0Jsb2Nrc1tpXS5nZXQoKTsKKyAgICBmb3IgKHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2lj
QmxvY2s+JiBibG9jayA6IG1fZ3JhcGguYmFzaWNCbG9ja3NJblJldmVyc2VPcmRlcigpKSB7CiAg
ICAgICAgIGlmIChibG9jay0+aXNFbnRyeUJsb2NrKCkgfHwgYmxvY2stPmlzRXhpdEJsb2NrKCkp
CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgCkBAIC0yNTYsNyArMjQ5LDcgQEAgdm9p
ZCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGVGdWxsTGl2ZW5lc3MoRnVsbEJ5dGVj
b2RlTGl2ZW5lc3MmIHJlc3VsdCkKICAgICAgICAgCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IGJsb2NrLT5ieXRlY29kZU9mZnNldHMoKS5zaXplKCk7IGktLTspIHsKICAgICAgICAgICAgIHVu
c2lnbmVkIGJ5dGVjb2RlT2Zmc2V0ID0gYmxvY2stPmJ5dGVjb2RlT2Zmc2V0cygpW2ldOwotICAg
ICAgICAgICAgc3RlcE92ZXJJbnN0cnVjdGlvbihtX2NvZGVCbG9jaywgYmxvY2ssIG1fYmFzaWNC
bG9ja3MsIGJ5dGVjb2RlT2Zmc2V0LCBvdXQpOworICAgICAgICAgICAgc3RlcE92ZXJJbnN0cnVj
dGlvbihjb2RlQmxvY2ssIG1fZ3JhcGgsIGJ5dGVjb2RlT2Zmc2V0LCBvdXQpOwogICAgICAgICAg
ICAgcmVzdWx0Lm1fbWFwW2J5dGVjb2RlT2Zmc2V0XSA9IG91dDsKICAgICAgICAgfQogICAgIH0K
QEAgLTI2NiwxMSArMjU5LDExIEBAIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpjb21w
dXRlS2lsbHMoQnl0ZWNvZGVLaWxscyYgcmVzdWx0KQogewogICAgIEZhc3RCaXRWZWN0b3Igb3V0
OwogICAgIAotICAgIHJlc3VsdC5tX2NvZGVCbG9jayA9IG1fY29kZUJsb2NrOwotICAgIHJlc3Vs
dC5tX2tpbGxTZXRzID0gc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZUtpbGxzOjpLaWxsU2V0W10+
KG1fY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5zaXplKCkpOworICAgIENvZGVCbG9jayogY29k
ZUJsb2NrID0gbV9ncmFwaC5jb2RlQmxvY2soKTsKKyAgICByZXN1bHQubV9jb2RlQmxvY2sgPSBj
b2RlQmxvY2s7CisgICAgcmVzdWx0Lm1fa2lsbFNldHMgPSBzdGQ6Om1ha2VfdW5pcXVlPEJ5dGVj
b2RlS2lsbHM6OktpbGxTZXRbXT4oY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5zaXplKCkpOwog
ICAgIAotICAgIGZvciAodW5zaWduZWQgaSA9IG1fYmFzaWNCbG9ja3Muc2l6ZSgpOyBpLS07KSB7
Ci0gICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2sgPSBtX2Jhc2ljQmxvY2tzW2ldLmdl
dCgpOworICAgIGZvciAoc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4mIGJsb2Nr
IDogbV9ncmFwaC5iYXNpY0Jsb2Nrc0luUmV2ZXJzZU9yZGVyKCkpIHsKICAgICAgICAgaWYgKGJs
b2NrLT5pc0VudHJ5QmxvY2soKSB8fCBibG9jay0+aXNFeGl0QmxvY2soKSkKICAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICAKQEAgLTI3OSw3ICsyNzIsNyBAQCB2b2lkIEJ5dGVjb2RlTGl2
ZW5lc3NBbmFseXNpczo6Y29tcHV0ZUtpbGxzKEJ5dGVjb2RlS2lsbHMmIHJlc3VsdCkKICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gYmxvY2stPmJ5dGVjb2RlT2Zmc2V0cygpLnNpemUoKTsgaS0t
OykgewogICAgICAgICAgICAgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQgPSBibG9jay0+Ynl0ZWNv
ZGVPZmZzZXRzKClbaV07CiAgICAgICAgICAgICBzdGVwT3Zlckluc3RydWN0aW9uKAotICAgICAg
ICAgICAgICAgIG1fY29kZUJsb2NrLCBibG9jaywgbV9iYXNpY0Jsb2NrcywgYnl0ZWNvZGVPZmZz
ZXQsCisgICAgICAgICAgICAgICAgY29kZUJsb2NrLCBtX2dyYXBoLCBieXRlY29kZU9mZnNldCwK
ICAgICAgICAgICAgICAgICBbJl0gKHVuc2lnbmVkIGluZGV4KSB7CiAgICAgICAgICAgICAgICAg
ICAgIC8vIFRoaXMgaXMgZm9yIHVzZXMuCiAgICAgICAgICAgICAgICAgICAgIGlmIChvdXQuZ2V0
KGluZGV4KSkKQEAgLTI5NywxMiArMjkwLDEzIEBAIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5
c2lzOjpjb21wdXRlS2lsbHMoQnl0ZWNvZGVLaWxscyYgcmVzdWx0KQogCiB2b2lkIEJ5dGVjb2Rl
TGl2ZW5lc3NBbmFseXNpczo6ZHVtcFJlc3VsdHMoKQogewotICAgIGRhdGFMb2coIlxuRHVtcGlu
ZyBieXRlY29kZSBsaXZlbmVzcyBmb3IgIiwgKm1fY29kZUJsb2NrLCAiOlxuIik7Ci0gICAgSW50
ZXJwcmV0ZXIqIGludGVycHJldGVyID0gbV9jb2RlQmxvY2stPnZtKCktPmludGVycHJldGVyOwot
ICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiA9IG1fY29kZUJsb2NrLT5pbnN0cnVj
dGlvbnMoKS5iZWdpbigpOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2Jhc2ljQmxv
Y2tzLnNpemUoKTsgaSsrKSB7Ci0gICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2sgPSBt
X2Jhc2ljQmxvY2tzW2ldLmdldCgpOwotICAgICAgICBkYXRhTG9nRigiXG5CeXRlY29kZSBiYXNp
YyBibG9jayAldTogJXAgKG9mZnNldDogJXUsIGxlbmd0aDogJXUpXG4iLCBpLCBibG9jaywgYmxv
Y2stPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCksIGJsb2NrLT50b3RhbEJ5dGVjb2RlTGVuZ3RoKCkp
OworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gbV9ncmFwaC5jb2RlQmxvY2soKTsKKyAgICBk
YXRhTG9nKCJcbkR1bXBpbmcgYnl0ZWNvZGUgbGl2ZW5lc3MgZm9yICIsICpjb2RlQmxvY2ssICI6
XG4iKTsKKyAgICBJbnRlcnByZXRlciogaW50ZXJwcmV0ZXIgPSBjb2RlQmxvY2stPnZtKCktPmlu
dGVycHJldGVyOworICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiA9IGNvZGVCbG9j
ay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsKKyAgICB1bnNpZ25lZCBpID0gMDsKKyAgICBmb3Ig
KHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+JiBibG9jayA6IG1fZ3JhcGguYmFz
aWNCbG9ja3MoKSkgeworICAgICAgICBkYXRhTG9nRigiXG5CeXRlY29kZSBiYXNpYyBibG9jayAl
dTogJXAgKG9mZnNldDogJXUsIGxlbmd0aDogJXUpXG4iLCBpKyssIGJsb2NrLmdldCgpLCBibG9j
ay0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKSwgYmxvY2stPnRvdGFsQnl0ZWNvZGVMZW5ndGgoKSk7
CiAgICAgICAgIGRhdGFMb2dGKCJTdWNjZXNzb3JzOiAiKTsKICAgICAgICAgZm9yICh1bnNpZ25l
ZCBqID0gMDsgaiA8IGJsb2NrLT5zdWNjZXNzb3JzKCkuc2l6ZSgpOyBqKyspIHsKICAgICAgICAg
ICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogc3VjY2Vzc29yID0gYmxvY2stPnN1Y2Nlc3NvcnMoKVtq
XTsKQEAgLTMxMCwxMSArMzA0LDExIEBAIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpk
dW1wUmVzdWx0cygpCiAgICAgICAgIH0KICAgICAgICAgZGF0YUxvZ0YoIlxuIik7CiAgICAgICAg
IGlmIChibG9jay0+aXNFbnRyeUJsb2NrKCkpIHsKLSAgICAgICAgICAgIGRhdGFMb2dGKCJFbnRy
eSBibG9jayAlcFxuIiwgYmxvY2spOworICAgICAgICAgICAgZGF0YUxvZ0YoIkVudHJ5IGJsb2Nr
ICVwXG4iLCBibG9jay5nZXQoKSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQog
ICAgICAgICBpZiAoYmxvY2stPmlzRXhpdEJsb2NrKCkpIHsKLSAgICAgICAgICAgIGRhdGFMb2dG
KCJFeGl0IGJsb2NrOiAlcFxuIiwgYmxvY2spOworICAgICAgICAgICAgZGF0YUxvZ0YoIkV4aXQg
YmxvY2s6ICVwXG4iLCBibG9jay5nZXQoKSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAg
ICAgfQogICAgICAgICBmb3IgKHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0ID0gYmxvY2stPmxlYWRl
ckJ5dGVjb2RlT2Zmc2V0KCk7IGJ5dGVjb2RlT2Zmc2V0IDwgYmxvY2stPmxlYWRlckJ5dGVjb2Rl
T2Zmc2V0KCkgKyBibG9jay0+dG90YWxCeXRlY29kZUxlbmd0aCgpOykgewpAQCAtMzI3LDcgKzMy
MSw3IEBAIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpkdW1wUmVzdWx0cygpCiAgICAg
ICAgICAgICAgICAgICAgIGRhdGFMb2dGKCIldSAiLCBqKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIGRhdGFMb2dGKCJcbiIpOwotICAgICAgICAgICAgbV9jb2RlQmxvY2stPmR1bXBCeXRl
Y29kZShXVEY6OmRhdGFGaWxlKCksIG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFs
RXhlYygpLCBpbnN0cnVjdGlvbnNCZWdpbiwgY3VycmVudEluc3RydWN0aW9uKTsKKyAgICAgICAg
ICAgIGNvZGVCbG9jay0+ZHVtcEJ5dGVjb2RlKFdURjo6ZGF0YUZpbGUoKSwgY29kZUJsb2NrLT5n
bG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpLCBpbnN0cnVjdGlvbnNCZWdpbiwgY3VycmVudElu
c3RydWN0aW9uKTsKIAogICAgICAgICAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnRlcnByZXRl
ci0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25zQmVnaW5bYnl0ZWNvZGVPZmZzZXRdLnUub3Bjb2Rl
KTsKICAgICAgICAgICAgIHVuc2lnbmVkIG9wY29kZUxlbmd0aCA9IG9wY29kZUxlbmd0aHNbb3Bj
b2RlSURdOwpAQCAtMzQ2LDggKzM0MCw2IEBAIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lz
OjpkdW1wUmVzdWx0cygpCiAKIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpjb21wdXRl
KCkKIHsKLSAgICBjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2NrcyhtX2NvZGVCbG9jaywgbV9iYXNp
Y0Jsb2Nrcyk7Ci0gICAgQVNTRVJUKG1fYmFzaWNCbG9ja3Muc2l6ZSgpKTsKICAgICBydW5MaXZl
bmVzc0ZpeHBvaW50KCk7CiAKICAgICBpZiAoT3B0aW9uczo6ZHVtcEJ5dGVjb2RlTGl2ZW5lc3NS
ZXN1bHRzKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmgKaW5kZXggZWNlMTZmMjFmMDE1MTBhNjQyN2ZkODQx
MTQwNzliZWQ4NzBjMDg3NS4uMDYwZTllYTg4NzAxMzgzNDFhYmFhYWIyZDM0OGE1ZDVkNDMzZjcy
YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2
ZW5lc3NBbmFseXNpcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZUxpdmVuZXNzQW5hbHlzaXMuaApAQCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBCeXRlY29k
ZUxpdmVuZXNzQW5hbHlzaXNfaAogCiAjaW5jbHVkZSAiQnl0ZWNvZGVCYXNpY0Jsb2NrLmgiCisj
aW5jbHVkZSAiQnl0ZWNvZGVHcmFwaC5oIgogI2luY2x1ZGUgPHd0Zi9GYXN0Qml0VmVjdG9yLmg+
CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC0z
NCwxNCArMzUsMTMgQEAKIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBCeXRlY29kZUtpbGxzOwot
Y2xhc3MgQ29kZUJsb2NrOwogY2xhc3MgRnVsbEJ5dGVjb2RlTGl2ZW5lc3M7CiAKIGNsYXNzIEJ5
dGVjb2RlTGl2ZW5lc3NBbmFseXNpcyB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzKTsKIHB1Ymxp
YzoKLSAgICBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMoQ29kZUJsb2NrKik7CisgICAgQnl0ZWNv
ZGVMaXZlbmVzc0FuYWx5c2lzKEJ5dGVjb2RlR3JhcGg8Q29kZUJsb2NrPiYpOwogICAgIAogICAg
IGJvb2wgb3BlcmFuZElzTGl2ZUF0Qnl0ZWNvZGVPZmZzZXQoaW50IG9wZXJhbmQsIHVuc2lnbmVk
IGJ5dGVjb2RlT2Zmc2V0KTsKICAgICBGYXN0Qml0VmVjdG9yIGdldExpdmVuZXNzSW5mb0F0Qnl0
ZWNvZGVPZmZzZXQodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpOwpAQCAtNTYsOCArNTYsNyBAQCBj
bGFzcyBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMgewogCiAgICAgdm9pZCBnZXRMaXZlbmVzc0lu
Zm9BdEJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBGYXN0Qml0VmVjdG9y
Jik7CiAKLSAgICBDb2RlQmxvY2sqIG1fY29kZUJsb2NrOwotICAgIFZlY3RvcjxzdGQ6OnVuaXF1
ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4gbV9iYXNpY0Jsb2NrczsKKyAgICBCeXRlY29kZUdy
YXBoPENvZGVCbG9jaz4mIG1fZ3JhcGg7CiB9OwogCiBpbmxpbmUgYm9vbCBvcGVyYW5kSXNBbHdh
eXNMaXZlKGludCBvcGVyYW5kKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZVVzZURlZi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlVXNlRGVmLmgKaW5kZXggOTgxZmIxZDBmZWMwNTcwNGQ1YjdmNjZlYzQ0MTgyNTdl
ODNhYWMzNi4uZDBkMjBiZmE5ZGFlM2E3MmYxNTBmOGQ4ZTA0NzJmMmZlY2JjZjBjNiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKQEAgLTMw
LDE4ICszMCw5IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi10ZW1wbGF0ZTx0eXBlbmFtZSBGdW5j
dG9yPgotdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAotICAgIENvZGVCbG9jayog
Y29kZUJsb2NrLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9m
ZnNldCwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikKK3RlbXBsYXRlPHR5cGVuYW1lIEJsb2NrLCB0
eXBlbmFtZSBGdW5jdG9yLCB0eXBlbmFtZSBJbnN0cnVjdGlvbj4KK3ZvaWQgY29tcHV0ZVVzZXNG
b3JCeXRlY29kZU9mZnNldChCbG9jayogY29kZUJsb2NrLCBPcGNvZGVJRCBvcGNvZGVJRCwgSW5z
dHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQogewotICAgIElu
dGVycHJldGVyKiBpbnRlcnByZXRlciA9IGNvZGVCbG9jay0+dm0oKS0+aW50ZXJwcmV0ZXI7Ci0g
ICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luID0gY29kZUJsb2NrLT5pbnN0cnVjdGlv
bnMoKS5iZWdpbigpOwotICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9ICZpbnN0cnVjdGlv
bnNCZWdpbltieXRlY29kZU9mZnNldF07Ci0gICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnRlcnBy
ZXRlci0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb24tPnUub3Bjb2RlKTsKLQotICAgIGlmIChvcGNv
ZGVJRCAhPSBvcF9lbnRlciAmJiBjb2RlQmxvY2stPndhc0NvbXBpbGVkV2l0aERlYnVnZ2luZ09w
Y29kZXMoKSAmJiBjb2RlQmxvY2stPnNjb3BlUmVnaXN0ZXIoKS5pc1ZhbGlkKCkpCi0gICAgICAg
IGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGNvZGVCbG9jay0+c2Nv
cGVSZWdpc3RlcigpLm9mZnNldCgpKTsKLQogICAgIHN3aXRjaCAob3Bjb2RlSUQpIHsKICAgICAv
LyBObyB1c2VzLgogICAgIGNhc2Ugb3BfbmV3X3JlZ2V4cDoKQEAgLTYwLDYgKzUxLDcgQEAgdm9p
ZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAogICAgIGNhc2Ugb3BfY3JlYXRlX2Nsb25l
ZF9hcmd1bWVudHM6CiAgICAgY2FzZSBvcF9nZXRfcmVzdF9sZW5ndGg6CiAgICAgY2FzZSBvcF93
YXRjaGRvZzoKKyAgICBjYXNlIG9wX25ld19nZW5lcmF0b3JfZnJhbWU6CiAgICAgICAgIHJldHVy
bjsKICAgICBjYXNlIG9wX2Fzc2VydDoKICAgICBjYXNlIG9wX2dldF9zY29wZToKQEAgLTc1LDgg
KzY3LDcgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAogICAgIGNhc2Ugb3Bf
am5lcV9udWxsOgogICAgIGNhc2Ugb3BfZGVjOgogICAgIGNhc2Ugb3BfaW5jOgotICAgIGNhc2Ug
b3BfbG9nX3NoYWRvd19jaGlja2VuX3Byb2xvZ3VlOgotICAgIGNhc2Ugb3BfcmVzdW1lOiB7Cisg
ICAgY2FzZSBvcF9sb2dfc2hhZG93X2NoaWNrZW5fcHJvbG9ndWU6IHsKICAgICAgICAgQVNTRVJU
KG9wY29kZUxlbmd0aHNbb3Bjb2RlSURdID4gMSk7CiAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2Nr
LCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CiAgICAg
ICAgIHJldHVybjsKQEAgLTI4NCwyMiArMjc1LDYgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVj
b2RlT2Zmc2V0KAogICAgICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBv
cGNvZGVJRCwgbGFzdEFyZyArIGkpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGNhc2Ug
b3Bfc2F2ZTogewotICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29k
ZUlELCBpbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOwotICAgICAgICB1bnNpZ25lZCBtZXJnZVBv
aW50Qnl0ZWNvZGVPZmZzZXQgPSBieXRlY29kZU9mZnNldCArIGluc3RydWN0aW9uWzNdLnUub3Bl
cmFuZDsKLSAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBtZXJnZVBvaW50QmxvY2sgPSBudWxs
cHRyOwotICAgICAgICBmb3IgKEJ5dGVjb2RlQmFzaWNCbG9jayogc3VjY2Vzc29yIDogYmxvY2st
PnN1Y2Nlc3NvcnMoKSkgewotICAgICAgICAgICAgaWYgKHN1Y2Nlc3Nvci0+bGVhZGVyQnl0ZWNv
ZGVPZmZzZXQoKSA9PSBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXQpIHsKLSAgICAgICAgICAgICAg
ICBtZXJnZVBvaW50QmxvY2sgPSBzdWNjZXNzb3I7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgQVNTRVJUKG1lcmdlUG9pbnRCbG9jayk7
Ci0gICAgICAgIG1lcmdlUG9pbnRCbG9jay0+aW4oKS5mb3JFYWNoU2V0Qml0KFsmXSh1bnNpZ25l
ZCBsb2NhbCkgewotICAgICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBv
cGNvZGVJRCwgdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwobG9jYWwpLm9mZnNldCgpKTsKLSAgICAg
ICAgfSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CiAgICAgZGVmYXVsdDoKICAgICAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgYnJlYWs7CkBAIC0zMDcsMTIgKzI4
MiwyMiBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoCiB9CiAKIHRlbXBsYXRl
PHR5cGVuYW1lIEZ1bmN0b3I+Ci12b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQ29k
ZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2ssIHVuc2lnbmVkIGJ5
dGVjb2RlT2Zmc2V0LCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQordm9pZCBjb21wdXRlVXNlc0Zv
ckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9m
ZnNldCwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikKIHsKICAgICBJbnRlcnByZXRlciogaW50ZXJw
cmV0ZXIgPSBjb2RlQmxvY2stPnZtKCktPmludGVycHJldGVyOwogICAgIEluc3RydWN0aW9uKiBp
bnN0cnVjdGlvbnNCZWdpbiA9IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsKICAg
ICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSAmaW5zdHJ1Y3Rpb25zQmVnaW5bYnl0ZWNvZGVP
ZmZzZXRdOwogICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0ZXItPmdldE9wY29kZUlE
KGluc3RydWN0aW9uLT51Lm9wY29kZSk7CisKKyAgICBpZiAob3Bjb2RlSUQgIT0gb3BfZW50ZXIg
JiYgY29kZUJsb2NrLT53YXNDb21waWxlZFdpdGhEZWJ1Z2dpbmdPcGNvZGVzKCkgJiYgY29kZUJs
b2NrLT5zY29wZVJlZ2lzdGVyKCkuaXNWYWxpZCgpKQorICAgICAgICBmdW5jdG9yKGNvZGVCbG9j
aywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBjb2RlQmxvY2stPnNjb3BlUmVnaXN0ZXIoKS5vZmZz
ZXQoKSk7CisKKyAgICBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9jaywgb3Bj
b2RlSUQsIGluc3RydWN0aW9uLCBmdW5jdG9yKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQmxv
Y2ssIHR5cGVuYW1lIEluc3RydWN0aW9uLCB0eXBlbmFtZSBGdW5jdG9yPgordm9pZCBjb21wdXRl
RGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KEJsb2NrKiBjb2RlQmxvY2ssIE9wY29kZUlEIG9wY29kZUlE
LCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCit7CiAg
ICAgc3dpdGNoIChvcGNvZGVJRCkgewogICAgIC8vIFRoZXNlIGRvbid0IGRlZmluZSBhbnl0aGlu
Zy4KICAgICBjYXNlIG9wX2NvcHlfcmVzdDoKQEAgLTMyMCw3ICszMDUsNiBAQCB2b2lkIGNvbXB1
dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFz
aWNCbG9jayogYmxvYwogICAgIGNhc2Ugb3BfZW5kOgogICAgIGNhc2Ugb3BfdGhyb3c6CiAgICAg
Y2FzZSBvcF90aHJvd19zdGF0aWNfZXJyb3I6Ci0gICAgY2FzZSBvcF9zYXZlOgogICAgIGNhc2Ug
b3BfYXNzZXJ0OgogICAgIGNhc2Ugb3BfZGVidWc6CiAgICAgY2FzZSBvcF9yZXQ6CkBAIC00NTks
OCArNDQzLDkgQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayog
Y29kZUJsb2NrLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2MKICAgICBjYXNlIG9wX2RlbF9ieV9p
ZDoKICAgICBjYXNlIG9wX2RlbF9ieV92YWw6CiAgICAgY2FzZSBvcF91bnNpZ25lZDoKLSAgICBj
YXNlIG9wX2dldF9mcm9tX2FyZ3VtZW50czogCi0gICAgY2FzZSBvcF9nZXRfcmVzdF9sZW5ndGg6
IHsKKyAgICBjYXNlIG9wX2dldF9mcm9tX2FyZ3VtZW50czoKKyAgICBjYXNlIG9wX2dldF9yZXN0
X2xlbmd0aDoKKyAgICBjYXNlIG9wX25ld19nZW5lcmF0b3JfZnJhbWU6IHsKICAgICAgICAgQVNT
RVJUKG9wY29kZUxlbmd0aHNbb3Bjb2RlSURdID4gMSk7CiAgICAgICAgIGZ1bmN0b3IoY29kZUJs
b2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CiAg
ICAgICAgIHJldHVybjsKQEAgLTQ3NiwxNiArNDYxLDIwIEBAIHZvaWQgY29tcHV0ZURlZnNGb3JC
eXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBi
bG9jCiAgICAgICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlE
LCB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChpKS5vZmZzZXQoKSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9Ci0gICAgY2FzZSBvcF9yZXN1bWU6IHsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoYmxv
Y2stPnN1Y2Nlc3NvcnMoKS5zaXplKCkgPT0gMSk7Ci0gICAgICAgIC8vIEZJWE1FOiBUaGlzIGlz
IHJlYWxseSBkaXJ0eS4KLSAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE1OTI4MQotICAgICAgICBibG9jay0+c3VjY2Vzc29ycygpWzBdLT5pbigpLmZv
ckVhY2hTZXRCaXQoWyZdKHVuc2lnbmVkIGxvY2FsKSB7Ci0gICAgICAgICAgICBmdW5jdG9yKGNv
ZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChs
b2NhbCkub2Zmc2V0KCkpOwotICAgICAgICB9KTsKKyAgICBkZWZhdWx0OgorICAgICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIH0K
K30KKwordGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KK3ZvaWQgY29tcHV0ZURlZnNGb3JCeXRl
Y29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQs
IGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCit7CisgICAgSW50ZXJwcmV0ZXIqIGludGVycHJldGVy
ID0gY29kZUJsb2NrLT52bSgpLT5pbnRlcnByZXRlcjsKKyAgICBJbnN0cnVjdGlvbiogaW5zdHJ1
Y3Rpb25zQmVnaW4gPSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCk7CisgICAgSW5z
dHJ1Y3Rpb24qIGluc3RydWN0aW9uID0gJmluc3RydWN0aW9uc0JlZ2luW2J5dGVjb2RlT2Zmc2V0
XTsKKyAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGludGVycHJldGVyLT5nZXRPcGNvZGVJRChpbnN0
cnVjdGlvbi0+dS5vcGNvZGUpOworICAgIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoY29k
ZUJsb2NrLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb24sIGZ1bmN0b3IpOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAK
aW5kZXggODAyOTRkMjFkNzExMjhkNjg2YWEwZTkwYzZhYWNlZjI4YjgyY2I3OS4uNmI3OWM2MTNk
MWJmMjE5MjQ4NjlhZDI0MWZlNGEzOTNiMzNmNDAwMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKIAogI2luY2x1ZGUg
IkJhc2ljQmxvY2tMb2NhdGlvbi5oIgogI2luY2x1ZGUgIkJ5dGVjb2RlR2VuZXJhdG9yLmgiCisj
aW5jbHVkZSAiQnl0ZWNvZGVHcmFwaC5oIgogI2luY2x1ZGUgIkJ5dGVjb2RlVXNlRGVmLmgiCiAj
aW5jbHVkZSAiQ2FsbExpbmtTdGF0dXMuaCIKICNpbmNsdWRlICJERkdDYXBhYmlsaXRpZXMuaCIK
QEAgLTE2NjMsMzAgKzE2NjQsMzcgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZSgKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3Bfc2F2ZTogewotICAg
ICAgICAgICAgaW50IGdlbmVyYXRvciA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAg
aW50IGZyYW1lID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICB1bnNpZ25lZCBsaXZl
Q2FsbGVlTG9jYWxzSW5kZXggPSAoKytpdCktPnUudW5zaWduZWRWYWx1ZTsKICAgICAgICAgICAg
IGludCBvZmZzZXQgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIEZhc3RCaXRWZWN0
b3IgbGl2ZW5lc3M7CiAgICAgICAgICAgICBpZiAobGl2ZUNhbGxlZUxvY2Fsc0luZGV4IDwgbV9y
YXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZC5zaXplKCkpCiAgICAgICAgICAgICAg
ICAgbGl2ZW5lc3MgPSBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkW2xpdmVD
YWxsZWVMb2NhbHNJbmRleF07CiAgICAgICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBl
eGVjLCBsb2NhdGlvbiwgaXQsICJzYXZlIik7Ci0gICAgICAgICAgICBvdXQucHJpbnRmKCIlcywg
IiwgcmVnaXN0ZXJOYW1lKGdlbmVyYXRvcikuZGF0YSgpKTsKKyAgICAgICAgICAgIG91dC5wcmlu
dGYoIiVzLCAiLCByZWdpc3Rlck5hbWUoZnJhbWUpLmRhdGEoKSk7CiAgICAgICAgICAgICBsaXZl
bmVzcy5kdW1wKG91dCk7CiAgICAgICAgICAgICBvdXQucHJpbnRmKCIoQGxpdmUlMXUpLCAlZCgt
PiVkKSIsIGxpdmVDYWxsZWVMb2NhbHNJbmRleCwgb2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNldCk7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX3Jlc3VtZTog
ewotICAgICAgICAgICAgaW50IGdlbmVyYXRvciA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAg
ICAgICAgaW50IGZyYW1lID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICB1bnNpZ25l
ZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSAoKytpdCktPnUudW5zaWduZWRWYWx1ZTsKICAgICAg
ICAgICAgIEZhc3RCaXRWZWN0b3IgbGl2ZW5lc3M7CiAgICAgICAgICAgICBpZiAobGl2ZUNhbGxl
ZUxvY2Fsc0luZGV4IDwgbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZC5zaXpl
KCkpCiAgICAgICAgICAgICAgICAgbGl2ZW5lc3MgPSBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVM
b2NhbHNBdFlpZWxkW2xpdmVDYWxsZWVMb2NhbHNJbmRleF07CiAgICAgICAgICAgICBwcmludExv
Y2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJyZXN1bWUiKTsKLSAgICAgICAg
ICAgIG91dC5wcmludGYoIiVzLCAiLCByZWdpc3Rlck5hbWUoZ2VuZXJhdG9yKS5kYXRhKCkpOwor
ICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICIsIHJlZ2lzdGVyTmFtZShmcmFtZSkuZGF0YSgp
KTsKICAgICAgICAgICAgIGxpdmVuZXNzLmR1bXAob3V0KTsKICAgICAgICAgICAgIG91dC5wcmlu
dGYoIihAbGl2ZSUxdSkiLCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9uZXdfZ2VuZXJhdG9yX2ZyYW1lOiB7Cisg
ICAgICAgICAgICBpbnQgZHN0ID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICB1bnNp
Z25lZCBnZW5lcmF0b3JMb2NhbHNTaXplID0gKCsraXQpLT51LnVuc2lnbmVkVmFsdWU7CisgICAg
ICAgICAgICBwcmludExvY2F0aW9uT3BBbmRSZWdpc3Rlck9wZXJhbmQob3V0LCBleGVjLCBsb2Nh
dGlvbiwgaXQsICJuZXdfZ2VuZXJhdG9yX2ZyYW1lIiwgZHN0KTsKKyAgICAgICAgICAgIG91dC5w
cmludGYoIiAldSIsIGdlbmVyYXRvckxvY2Fsc1NpemUpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9hc3NlcnQ6IHsKICAgICAgICAgICAgIGludCBjb25k
aXRpb24gPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBsaW5lID0gKCsraXQp
LT51Lm9wZXJhbmQ7CkBAIC0yMDIxLDcgKzIwMjksNyBAQCB2b2lkIENvZGVCbG9jazo6ZmluaXNo
Q3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGlu
awogICAgICAgICAgICAgICAgIFVubGlua2VkU3RyaW5nSnVtcFRhYmxlOjpTdHJpbmdPZmZzZXRU
YWJsZTo6aXRlcmF0b3IgZW5kID0gdW5saW5rZWRDb2RlQmxvY2stPnN0cmluZ1N3aXRjaEp1bXBU
YWJsZShpKS5vZmZzZXRUYWJsZS5lbmQoKTsKICAgICAgICAgICAgICAgICBmb3IgKDsgcHRyICE9
IGVuZDsgKytwdHIpIHsKICAgICAgICAgICAgICAgICAgICAgT2Zmc2V0TG9jYXRpb24gb2Zmc2V0
OwotICAgICAgICAgICAgICAgICAgICBvZmZzZXQuYnJhbmNoT2Zmc2V0ID0gcHRyLT52YWx1ZTsK
KyAgICAgICAgICAgICAgICAgICAgb2Zmc2V0LmJyYW5jaE9mZnNldCA9IHB0ci0+dmFsdWUuYnJh
bmNoT2Zmc2V0OwogICAgICAgICAgICAgICAgICAgICBtX3JhcmVEYXRhLT5tX3N0cmluZ1N3aXRj
aEp1bXBUYWJsZXNbaV0ub2Zmc2V0VGFibGUuYWRkKHB0ci0+a2V5LCBvZmZzZXQpOwogICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIH0KQEAgLTIwMzYsNiArMjA0NCw4IEBAIHZvaWQgQ29k
ZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhl
Y3V0YWJsZSwgVW5saW5rCiAgICAgICAgICAgICAgICAgZGVzdFRhYmxlLm1pbiA9IHNvdXJjZVRh
YmxlLm1pbjsKICAgICAgICAgICAgIH0KICAgICAgICAgfQorCisgICAgICAgIG1fcmFyZURhdGEt
Pm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQgPSB1bmxpbmtlZENvZGVCbG9jay0+bGl2ZUNhbGxl
ZUxvY2Fsc0F0WWllbGQoKTsKICAgICB9CiAKICAgICAvLyBBbGxvY2F0ZSBtZXRhZGF0YSBidWZm
ZXJzIGZvciB0aGUgYnl0ZWNvZGUKQEAgLTIwNjEsOSArMjA3MSw2IEBAIHZvaWQgQ29kZUJsb2Nr
OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJs
ZSwgVW5saW5rCiAgICAgLy8gQm9va2tlZXAgdGhlIHN0cm9uZ2x5IHJlZmVyZW5jZWQgbW9kdWxl
IGVudmlyb25tZW50cy4KICAgICBIYXNoU2V0PEpTTW9kdWxlRW52aXJvbm1lbnQqPiBzdHJvbmds
eVJlZmVyZW5jZWRNb2R1bGVFbnZpcm9ubWVudHM7CiAKLSAgICAvLyBCb29ra2VlcCB0aGUgbWVy
Z2UgcG9pbnQgYnl0ZWNvZGUgb2Zmc2V0cy4KLSAgICBWZWN0b3I8c2l6ZV90PiBtZXJnZVBvaW50
Qnl0ZWNvZGVPZmZzZXRzOwotCiAgICAgUmVmQ291bnRlZEFycmF5PEluc3RydWN0aW9uPiBpbnN0
cnVjdGlvbnMoaW5zdHJ1Y3Rpb25Db3VudCk7CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyAh
aW5zdHJ1Y3Rpb25SZWFkZXIuYXRFbmQoKTsgKSB7CkBAIC0yMzQ2LDM5ICsyMzUzLDE2IEBAIHZv
aWQgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93
bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCi0g
ICAgICAgIGNhc2Ugb3Bfc2F2ZTogewotICAgICAgICAgICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxv
Y2Fsc0luZGV4ID0gcGNbMl0udS5pbmRleDsKLSAgICAgICAgICAgIGludCBvZmZzZXQgPSBwY1sz
XS51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBpZiAobGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID49IG1l
cmdlUG9pbnRCeXRlY29kZU9mZnNldHMuc2l6ZSgpKQotICAgICAgICAgICAgICAgIG1lcmdlUG9p
bnRCeXRlY29kZU9mZnNldHMucmVzaXplKGxpdmVDYWxsZWVMb2NhbHNJbmRleCArIDEpOwotICAg
ICAgICAgICAgbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0c1tsaXZlQ2FsbGVlTG9jYWxzSW5kZXhd
ID0gaSArIG9mZnNldDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0KICAgICAgICAg
ZGVmYXVsdDoKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGkgKz0gb3BM
ZW5ndGg7CiAgICAgfQogCi0gICAgaWYgKHZtLmNvbnRyb2xGbG93UHJvZmlsZXIoKSkKLSAgICAg
ICAgaW5zZXJ0QmFzaWNCbG9ja0JvdW5kYXJpZXNGb3JDb250cm9sRmxvd1Byb2ZpbGVyKGluc3Ry
dWN0aW9ucyk7Ci0KICAgICBtX2luc3RydWN0aW9ucyA9IFdURk1vdmUoaW5zdHJ1Y3Rpb25zKTsK
IAotICAgIC8vIFBlcmZvcm0gYnl0ZWNvZGUgbGl2ZW5lc3MgYW5hbHlzaXMgdG8gZGV0ZXJtaW5l
IHdoaWNoIGxvY2FscyBhcmUgbGl2ZSBhbmQgc2hvdWxkIGJlIHJlc3VtZWQgd2hlbiBleGVjdXRp
bmcgb3BfcmVzdW1lLgotICAgIGlmICh1bmxpbmtlZENvZGVCbG9jay0+cGFyc2VNb2RlKCkgPT0g
U291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JCb2R5TW9kZSkgewotICAgICAgICBpZiAoc2l6ZV90
IGNvdW50ID0gbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0cy5zaXplKCkpIHsKLSAgICAgICAgICAg
IGNyZWF0ZVJhcmVEYXRhSWZOZWNlc3NhcnkoKTsKLSAgICAgICAgICAgIEJ5dGVjb2RlTGl2ZW5l
c3NBbmFseXNpcyBsaXZlbmVzcyh0aGlzKTsKLSAgICAgICAgICAgIG1fcmFyZURhdGEtPm1fbGl2
ZUNhbGxlZUxvY2Fsc0F0WWllbGQuZ3Jvdyhjb3VudCk7Ci0gICAgICAgICAgICBzaXplX3QgbGl2
ZUNhbGxlZUxvY2Fsc0luZGV4ID0gMDsKLSAgICAgICAgICAgIGZvciAoc2l6ZV90IGJ5dGVjb2Rl
T2Zmc2V0IDogbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0cykgewotICAgICAgICAgICAgICAgIG1f
cmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGRbbGl2ZUNhbGxlZUxvY2Fsc0luZGV4
XSA9IGxpdmVuZXNzLmdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZz
ZXQpOwotICAgICAgICAgICAgICAgICsrbGl2ZUNhbGxlZUxvY2Fsc0luZGV4OwotICAgICAgICAg
ICAgfQotICAgICAgICB9Ci0gICAgfQorICAgIGlmICh2bS5jb250cm9sRmxvd1Byb2ZpbGVyKCkp
CisgICAgICAgIGluc2VydEJhc2ljQmxvY2tCb3VuZGFyaWVzRm9yQ29udHJvbEZsb3dQcm9maWxl
cihtX2luc3RydWN0aW9ucyk7CiAKICAgICAvLyBTZXQgb3B0aW1pemF0aW9uIHRocmVzaG9sZHMg
b25seSBhZnRlciBtX2luc3RydWN0aW9ucyBpcyBpbml0aWFsaXplZCwgc2luY2UgdGhlc2UKICAg
ICAvLyByZWx5IG9uIHRoZSBpbnN0cnVjdGlvbiBjb3VudCAoYW5kIGFyZSBpbiB0aGVvcnkgcGVy
bWl0dGVkIHRvIGFsc28gaW5zcGVjdCB0aGUKQEAgLTQyODMsNyArNDI2Nyw4IEBAIFZhbHVlUHJv
ZmlsZSogQ29kZUJsb2NrOjp2YWx1ZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChpbnQgYnl0ZWNv
ZGVPZmZzZXQpCiAKIHZvaWQgQ29kZUJsb2NrOjp2YWxpZGF0ZSgpCiB7Ci0gICAgQnl0ZWNvZGVM
aXZlbmVzc0FuYWx5c2lzIGxpdmVuZXNzKHRoaXMpOyAvLyBDb21wdXRlIGRpcmVjdGx5IGZyb20g
c2NyYXRjaCBzbyBpdCBkb2Vzbid0IGVmZmVjdCBDb2RlQmxvY2sgZm9vdHByaW50LgorICAgIEJ5
dGVjb2RlR3JhcGg8Q29kZUJsb2NrPiBncmFwaCh0aGlzLCBpbnN0cnVjdGlvbnMoKSk7CisgICAg
Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzIGxpdmVuZXNzKGdyYXBoKTsgLy8gQ29tcHV0ZSBkaXJl
Y3RseSBmcm9tIHNjcmF0Y2ggc28gaXQgZG9lc24ndCBlZmZlY3QgQ29kZUJsb2NrIGZvb3Rwcmlu
dC4KICAgICAKICAgICBGYXN0Qml0VmVjdG9yIGxpdmVBdEhlYWQgPSBsaXZlbmVzcy5nZXRMaXZl
bmVzc0luZm9BdEJ5dGVjb2RlT2Zmc2V0KDApOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5oCmluZGV4IGIyODgzNjU0YmUzNDVlN2FiMDExMGVjMWI2ZjVk
Njk3YTE4YzI3YzIuLjk5MWE0NTMwOTVlNmU2YmM4OWJjNjEwYTdiOTRhZDM5MDcxYWEwNWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKQEAgLTIyMCwxMCAr
MjIwLDYgQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgICAgIHJldHVy
biBpbmRleCA+PSBtX251bVZhcnM7CiAgICAgfQogCi0gICAgZW51bSBjbGFzcyBSZXF1aXJlZEhh
bmRsZXIgewotICAgICAgICBDYXRjaEhhbmRsZXIsCi0gICAgICAgIEFueUhhbmRsZXIKLSAgICB9
OwogICAgIEhhbmRsZXJJbmZvKiBoYW5kbGVyRm9yQnl0ZWNvZGVPZmZzZXQodW5zaWduZWQgYnl0
ZWNvZGVPZmZzZXQsIFJlcXVpcmVkSGFuZGxlciA9IFJlcXVpcmVkSGFuZGxlcjo6QW55SGFuZGxl
cik7CiAgICAgSGFuZGxlckluZm8qIGhhbmRsZXJGb3JJbmRleCh1bnNpZ25lZCwgUmVxdWlyZWRI
YW5kbGVyID0gUmVxdWlyZWRIYW5kbGVyOjpBbnlIYW5kbGVyKTsKICAgICB2b2lkIHJlbW92ZUV4
Y2VwdGlvbkhhbmRsZXJGb3JDYWxsU2l0ZShDYWxsU2l0ZUluZGV4KTsKQEAgLTI5NSw2ICsyOTEs
OCBAQCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PEluc3RydWN0aW9uKj4ocmV0dXJuQWRkcmVzcykgLSBpbnN0cnVjdGlvbnMoKS5i
ZWdpbigpOwogICAgIH0KIAorICAgIHR5cGVkZWYgUmVmQ291bnRlZEFycmF5PEluc3RydWN0aW9u
PiYgVW5wYWNrZWRJbnN0cnVjdGlvbnM7CisKICAgICB1bnNpZ25lZCBudW1iZXJPZkluc3RydWN0
aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1faW5zdHJ1Y3Rpb25zLnNpemUoKTsgfQogICAgIFJlZkNv
dW50ZWRBcnJheTxJbnN0cnVjdGlvbj4mIGluc3RydWN0aW9ucygpIHsgcmV0dXJuIG1faW5zdHJ1
Y3Rpb25zOyB9CiAgICAgY29uc3QgUmVmQ291bnRlZEFycmF5PEluc3RydWN0aW9uPiYgaW5zdHJ1
Y3Rpb25zKCkgY29uc3QgeyByZXR1cm4gbV9pbnN0cnVjdGlvbnM7IH0KQEAgLTU4OCwxMiArNTg2
LDE0IEBAIGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgICAgICAgICAgaWYg
KCEhbV9saXZlbmVzc0FuYWx5c2lzKQogICAgICAgICAgICAgICAgIHJldHVybiAqbV9saXZlbmVz
c0FuYWx5c2lzOwogICAgICAgICB9Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUxp
dmVuZXNzQW5hbHlzaXM+IGFuYWx5c2lzID0KLSAgICAgICAgICAgIHN0ZDo6bWFrZV91bmlxdWU8
Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzPih0aGlzKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRy
PEJ5dGVjb2RlR3JhcGg8Q29kZUJsb2NrPj4gZ3JhcGggPSBzdGQ6Om1ha2VfdW5pcXVlPEJ5dGVj
b2RlR3JhcGg8Q29kZUJsb2NrPj4odGhpcywgaW5zdHJ1Y3Rpb25zKCkpOworICAgICAgICBzdGQ6
OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzPiBhbmFseXNpcyA9IHN0ZDo6bWFr
ZV91bmlxdWU8Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzPigqZ3JhcGgpOwogICAgICAgICB7CiAg
ICAgICAgICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihtX2xvY2spOwotICAgICAgICAg
ICAgaWYgKCFtX2xpdmVuZXNzQW5hbHlzaXMpCisgICAgICAgICAgICBpZiAoIW1fbGl2ZW5lc3NB
bmFseXNpcykgeworICAgICAgICAgICAgICAgIG1fYnl0ZWNvZGVHcmFwaCA9IFdURk1vdmUoZ3Jh
cGgpOwogICAgICAgICAgICAgICAgIG1fbGl2ZW5lc3NBbmFseXNpcyA9IFdURk1vdmUoYW5hbHlz
aXMpOworICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuICptX2xpdmVuZXNzQW5hbHlz
aXM7CiAgICAgICAgIH0KICAgICB9CkBAIC0xMDU2LDYgKzEwNTYsNyBAQCBjbGFzcyBDb2RlQmxv
Y2sgOiBwdWJsaWMgSlNDZWxsIHsKIAogICAgIHN0ZDo6Y2hyb25vOjpzdGVhZHlfY2xvY2s6OnRp
bWVfcG9pbnQgbV9jcmVhdGlvblRpbWU7CiAKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVH
cmFwaDxDb2RlQmxvY2s+PiBtX2J5dGVjb2RlR3JhcGg7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEJ5
dGVjb2RlTGl2ZW5lc3NBbmFseXNpcz4gbV9saXZlbmVzc0FuYWx5c2lzOwogCiAgICAgc3RkOjp1
bmlxdWVfcHRyPFJhcmVEYXRhPiBtX3JhcmVEYXRhOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0hhbmRsZXJJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvSGFuZGxlckluZm8uaAppbmRleCBhY2RkYTA4ZWQxNGNiZjlmMDk3MTI3NTA0MDVh
NDE3NDFmNzZhMjEzLi40MmQ4MThjOGFjNGNjYmFlY2E2MDU1ZjI2ZDY3YzNiOWVjMGFlN2IyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSGFuZGxlckluZm8uaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSGFuZGxlckluZm8uaApAQCAtOTUs
NiArOTUsMTEgQEAgc3RydWN0IEhhbmRsZXJJbmZvIDogcHVibGljIEhhbmRsZXJJbmZvQmFzZSB7
CiAjZW5kaWYKIH07CiAKK2VudW0gY2xhc3MgUmVxdWlyZWRIYW5kbGVyIHsKKyAgICBDYXRjaEhh
bmRsZXIsCisgICAgQW55SGFuZGxlcgorfTsKKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRp
ZiAvLyBIYW5kbGVySW5mb19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9QcmVjaXNlSnVtcFRhcmdldHMuY3BwCmluZGV4IGUyY2IwMDA0ODM3OTRiYTkyZDUxMGRj
ZjVmYTk5NDg4NWEyM2RjM2QuLjI3NjNmMThjMWM3YTQzNjU5Njc0ODY5ZDZhY2Q4MjlkMzViMzhm
ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVt
cFRhcmdldHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVjaXNl
SnVtcFRhcmdldHMuY3BwCkBAIC0zMCwxMCArMzAsMjAgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAK
LXRlbXBsYXRlIDxzaXplX3QgdmVjdG9yU2l6ZT4KLXN0YXRpYyB2b2lkIGdldEp1bXBUYXJnZXRz
Rm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEludGVycHJldGVyKiBpbnRl
cnByZXRlciwgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBieXRlY29k
ZU9mZnNldCwgVmVjdG9yPHVuc2lnbmVkLCB2ZWN0b3JTaXplPiYgb3V0KQorc3RhdGljIE9wY29k
ZUlEIGdldE9wY29kZUlEKEludGVycHJldGVyKiBpbnRlcnByZXRlciwgY29uc3QgSW5zdHJ1Y3Rp
b24mIGluc3RydWN0aW9uKQogewotICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0ZXIt
PmdldE9wY29kZUlEKGluc3RydWN0aW9uc0JlZ2luW2J5dGVjb2RlT2Zmc2V0XS51Lm9wY29kZSk7
CisgICAgcmV0dXJuIGludGVycHJldGVyLT5nZXRPcGNvZGVJRChpbnN0cnVjdGlvbi51Lm9wY29k
ZSk7Cit9CisKK3N0YXRpYyBPcGNvZGVJRCBnZXRPcGNvZGVJRChJbnRlcnByZXRlciosIGNvbnN0
IFVubGlua2VkSW5zdHJ1Y3Rpb24mIGluc3RydWN0aW9uKQoreworICAgIHJldHVybiBpbnN0cnVj
dGlvbi51Lm9wY29kZTsKK30KKwordGVtcGxhdGUgPHNpemVfdCB2ZWN0b3JTaXplLCB0eXBlbmFt
ZSBCbG9jaywgdHlwZW5hbWUgSW5zdHJ1Y3Rpb24+CitzdGF0aWMgdm9pZCBnZXRKdW1wVGFyZ2V0
c0ZvckJ5dGVjb2RlT2Zmc2V0KEJsb2NrKiBjb2RlQmxvY2ssIEludGVycHJldGVyKiBpbnRlcnBy
ZXRlciwgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBieXRlY29kZU9m
ZnNldCwgVmVjdG9yPHVuc2lnbmVkLCB2ZWN0b3JTaXplPiYgb3V0KQoreworICAgIE9wY29kZUlE
IG9wY29kZUlEID0gZ2V0T3Bjb2RlSUQoaW50ZXJwcmV0ZXIsIGluc3RydWN0aW9uc0JlZ2luW2J5
dGVjb2RlT2Zmc2V0XSk7CiAgICAgSW5zdHJ1Y3Rpb24qIGN1cnJlbnQgPSBpbnN0cnVjdGlvbnNC
ZWdpbiArIGJ5dGVjb2RlT2Zmc2V0OwogICAgIHN3aXRjaCAob3Bjb2RlSUQpIHsKICAgICBjYXNl
IG9wX2ptcDoKQEAgLTU0LDIxICs2NCwyNSBAQCBzdGF0aWMgdm9pZCBnZXRKdW1wVGFyZ2V0c0Zv
ckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBJbnRlcnByZXRlciogaQogICAg
IGNhc2Ugb3Bfam5sZXNzZXE6CiAgICAgY2FzZSBvcF9qbmdyZWF0ZXI6CiAgICAgY2FzZSBvcF9q
bmdyZWF0ZXJlcToKLSAgICBjYXNlIG9wX3NhdmU6IC8vIFRoZSBqdW1wIG9mIG9wX3NhdmUgaXMg
cHVyZWx5IGZvciBjYWxjdWxhdGluZyBsaXZlbmVzcy4KICAgICAgICAgb3V0LmFwcGVuZChieXRl
Y29kZU9mZnNldCArIGN1cnJlbnRbM10udS5vcGVyYW5kKTsKICAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBvcF9zYXZlOiB7CisgICAgICAgIC8vIFRoZSBqdW1wIG9mIG9wX3NhdmUgdW5kZXIgRXh0
cmFjdEdlbmVyYXRvckxpdmVDYWxsZWVMb2NhbHMgbW9kZSBpcyBwdXJlbHkgZm9yIGNhbGN1bGF0
aW5nIGxpdmVuZXNzLgorICAgICAgICBvdXQuYXBwZW5kKGJ5dGVjb2RlT2Zmc2V0ICsgY3VycmVu
dFszXS51Lm9wZXJhbmQpOworICAgICAgICBicmVhazsKKyAgICB9CiAgICAgY2FzZSBvcF9zd2l0
Y2hfaW1tOgogICAgIGNhc2Ugb3Bfc3dpdGNoX2NoYXI6IHsKLSAgICAgICAgU2ltcGxlSnVtcFRh
YmxlJiB0YWJsZSA9IGNvZGVCbG9jay0+c3dpdGNoSnVtcFRhYmxlKGN1cnJlbnRbMV0udS5vcGVy
YW5kKTsKKyAgICAgICAgYXV0byYgdGFibGUgPSBjb2RlQmxvY2stPnN3aXRjaEp1bXBUYWJsZShj
dXJyZW50WzFdLnUub3BlcmFuZCk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IHRhYmxlLmJy
YW5jaE9mZnNldHMuc2l6ZSgpOyBpLS07KQogICAgICAgICAgICAgb3V0LmFwcGVuZChieXRlY29k
ZU9mZnNldCArIHRhYmxlLmJyYW5jaE9mZnNldHNbaV0pOwogICAgICAgICBvdXQuYXBwZW5kKGJ5
dGVjb2RlT2Zmc2V0ICsgY3VycmVudFsyXS51Lm9wZXJhbmQpOwogICAgICAgICBicmVhazsKICAg
ICB9CiAgICAgY2FzZSBvcF9zd2l0Y2hfc3RyaW5nOiB7Ci0gICAgICAgIFN0cmluZ0p1bXBUYWJs
ZSYgdGFibGUgPSBjb2RlQmxvY2stPnN0cmluZ1N3aXRjaEp1bXBUYWJsZShjdXJyZW50WzFdLnUu
b3BlcmFuZCk7Ci0gICAgICAgIFN0cmluZ0p1bXBUYWJsZTo6U3RyaW5nT2Zmc2V0VGFibGU6Oml0
ZXJhdG9yIGl0ZXIgPSB0YWJsZS5vZmZzZXRUYWJsZS5iZWdpbigpOwotICAgICAgICBTdHJpbmdK
dW1wVGFibGU6OlN0cmluZ09mZnNldFRhYmxlOjppdGVyYXRvciBlbmQgPSB0YWJsZS5vZmZzZXRU
YWJsZS5lbmQoKTsKKyAgICAgICAgYXV0byYgdGFibGUgPSBjb2RlQmxvY2stPnN0cmluZ1N3aXRj
aEp1bXBUYWJsZShjdXJyZW50WzFdLnUub3BlcmFuZCk7CisgICAgICAgIGF1dG8gaXRlciA9IHRh
YmxlLm9mZnNldFRhYmxlLmJlZ2luKCk7CisgICAgICAgIGF1dG8gZW5kID0gdGFibGUub2Zmc2V0
VGFibGUuZW5kKCk7CiAgICAgICAgIGZvciAoOyBpdGVyICE9IGVuZDsgKytpdGVyKQogICAgICAg
ICAgICAgb3V0LmFwcGVuZChieXRlY29kZU9mZnNldCArIGl0ZXItPnZhbHVlLmJyYW5jaE9mZnNl
dCk7CiAgICAgICAgIG91dC5hcHBlbmQoYnl0ZWNvZGVPZmZzZXQgKyBjdXJyZW50WzJdLnUub3Bl
cmFuZCk7CkBAIC04Miw3ICs5Niw4IEBAIHN0YXRpYyB2b2lkIGdldEp1bXBUYXJnZXRzRm9yQnl0
ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEludGVycHJldGVyKiBpCiAgICAgfQog
fQogCi12b2lkIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMoQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IFZlY3Rvcjx1bnNpZ25lZCwgMzI+JiBvdXQpCit0ZW1wbGF0ZTx0eXBlbmFtZSBCbG9jaywgdHlw
ZW5hbWUgSW5zdHJ1Y3Rpb24+Cit2b2lkIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHNJbnRlcm5h
bChCbG9jayogY29kZUJsb2NrLCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2ln
bmVkIGluc3RydWN0aW9uQ291bnQsIFZlY3Rvcjx1bnNpZ25lZCwgMzI+JiBvdXQpCiB7CiAgICAg
QVNTRVJUKG91dC5pc0VtcHR5KCkpOwogICAgIApAQCAtOTgsMTAgKzExMyw4IEBAIHZvaWQgY29t
cHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgVmVjdG9yPHVuc2ln
bmVkLCAzMj4mIG91dCkKICAgICB9CiAKICAgICBJbnRlcnByZXRlciogaW50ZXJwcmV0ZXIgPSBj
b2RlQmxvY2stPnZtKCktPmludGVycHJldGVyOwotICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlv
bnNCZWdpbiA9IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsKLSAgICB1bnNpZ25l
ZCBpbnN0cnVjdGlvbkNvdW50ID0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5zaXplKCk7CiAg
ICAgZm9yICh1bnNpZ25lZCBieXRlY29kZU9mZnNldCA9IDA7IGJ5dGVjb2RlT2Zmc2V0IDwgaW5z
dHJ1Y3Rpb25Db3VudDspIHsKLSAgICAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnRlcnByZXRl
ci0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25zQmVnaW5bYnl0ZWNvZGVPZmZzZXRdLnUub3Bjb2Rl
KTsKKyAgICAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBnZXRPcGNvZGVJRChpbnRlcnByZXRlciwg
aW5zdHJ1Y3Rpb25zQmVnaW5bYnl0ZWNvZGVPZmZzZXRdKTsKICAgICAgICAgZ2V0SnVtcFRhcmdl
dHNGb3JCeXRlY29kZU9mZnNldChjb2RlQmxvY2ssIGludGVycHJldGVyLCBpbnN0cnVjdGlvbnNC
ZWdpbiwgYnl0ZWNvZGVPZmZzZXQsIG91dCk7CiAgICAgICAgIGJ5dGVjb2RlT2Zmc2V0ICs9IG9w
Y29kZUxlbmd0aHNbb3Bjb2RlSURdOwogICAgIH0KQEAgLTEyMywxMSArMTM2LDI5IEBAIHZvaWQg
Y29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgVmVjdG9yPHVu
c2lnbmVkLCAzMj4mIG91dCkKICAgICBvdXQuc2hyaW5rVG9GaXQoKTsKIH0KIAotdm9pZCBmaW5k
SnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgdW5zaWdu
ZWQgYnl0ZWNvZGVPZmZzZXQsIFZlY3Rvcjx1bnNpZ25lZCwgMT4mIG91dCkKK3ZvaWQgY29tcHV0
ZVByZWNpc2VKdW1wVGFyZ2V0cyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgVmVjdG9yPHVuc2lnbmVk
LCAzMj4mIG91dCkKIHsKLSAgICBJbnRlcnByZXRlciogaW50ZXJwcmV0ZXIgPSBjb2RlQmxvY2st
PnZtKCktPmludGVycHJldGVyOwotICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiA9
IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsKLSAgICBnZXRKdW1wVGFyZ2V0c0Zv
ckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9jaywgaW50ZXJwcmV0ZXIsIGluc3RydWN0aW9uc0JlZ2lu
LCBieXRlY29kZU9mZnNldCwgb3V0KTsKKyAgICBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzSW50
ZXJuYWwoY29kZUJsb2NrLCBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCksIGNvZGVC
bG9jay0+aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpLCBvdXQpOworfQorCit2b2lkIGNvbXB1dGVQcmVj
aXNlSnVtcFRhcmdldHMoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEluc3RydWN0aW9uKiBpbnN0cnVj
dGlvbnNCZWdpbiwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCwgVmVjdG9yPHVuc2lnbmVkLCAz
Mj4mIG91dCkKK3sKKyAgICBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzSW50ZXJuYWwoY29kZUJs
b2NrLCBpbnN0cnVjdGlvbnNCZWdpbiwgaW5zdHJ1Y3Rpb25Db3VudCwgb3V0KTsKK30KKwordm9p
ZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKFVubGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IFVubGlua2VkSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBpbnN0cnVj
dGlvbkNvdW50LCBWZWN0b3I8dW5zaWduZWQsIDMyPiYgb3V0KQoreworICAgIGNvbXB1dGVQcmVj
aXNlSnVtcFRhcmdldHNJbnRlcm5hbChjb2RlQmxvY2ssIGluc3RydWN0aW9uc0JlZ2luLCBpbnN0
cnVjdGlvbkNvdW50LCBvdXQpOworfQorCit2b2lkIGZpbmRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2Rl
T2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVn
aW4sIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBWZWN0b3I8dW5zaWduZWQsIDE+JiBvdXQpCit7
CisgICAgZ2V0SnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChjb2RlQmxvY2ssIGNvZGVCbG9j
ay0+dm0oKS0+aW50ZXJwcmV0ZXIsIGluc3RydWN0aW9uc0JlZ2luLCBieXRlY29kZU9mZnNldCwg
b3V0KTsKK30KKwordm9pZCBmaW5kSnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChVbmxpbmtl
ZENvZGVCbG9jayogY29kZUJsb2NrLCBVbmxpbmtlZEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNC
ZWdpbiwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIFZlY3Rvcjx1bnNpZ25lZCwgMT4mIG91dCkK
K3sKKyAgICBnZXRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9jaywgY29kZUJs
b2NrLT52bSgpLT5pbnRlcnByZXRlciwgaW5zdHJ1Y3Rpb25zQmVnaW4sIGJ5dGVjb2RlT2Zmc2V0
LCBvdXQpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHMuaAppbmRleCA4NTI0MTNkNzdiNzk4
OTg0YjI3Y2VmMGVkNjJiYzk0YzY4OWUyMTJjLi42Yzk0ZDEyZTQ1MDUxNjY3YzY1OWJmODA0NWFj
N2M2MmUwZjIyNDdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
UHJlY2lzZUp1bXBUYXJnZXRzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1ByZWNpc2VKdW1wVGFyZ2V0cy5oCkBAIC0yNywxMyArMjcsMTcgQEAKICNkZWZpbmUgUHJlY2lz
ZUp1bXBUYXJnZXRzX2gKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIlVubGlu
a2VkQ29kZUJsb2NrLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCiAvLyBSZXR1cm4gYSBzb3J0ZWQg
bGlzdCBvZiBieXRlY29kZSBpbmRleCB0aGF0IGFyZSB0aGUgZGVzdGluYXRpb24gb2YgYSBqdW1w
Lgogdm9pZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKENvZGVCbG9jayosIFZlY3Rvcjx1bnNp
Z25lZCwgMzI+JiBvdXQpOwordm9pZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKENvZGVCbG9j
ayosIEluc3RydWN0aW9uKiwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCwgVmVjdG9yPHVuc2ln
bmVkLCAzMj4mIG91dCk7Cit2b2lkIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMoVW5saW5rZWRD
b2RlQmxvY2sqLCBVbmxpbmtlZEluc3RydWN0aW9uKiwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3Vu
dCwgVmVjdG9yPHVuc2lnbmVkLCAzMj4mIG91dCk7CiAKLXZvaWQgZmluZEp1bXBUYXJnZXRzRm9y
Qnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIFZlY3Rv
cjx1bnNpZ25lZCwgMT4mIG91dCk7Cit2b2lkIGZpbmRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zm
c2V0KENvZGVCbG9jayosIEluc3RydWN0aW9uKiwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIFZl
Y3Rvcjx1bnNpZ25lZCwgMT4mIG91dCk7Cit2b2lkIGZpbmRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2Rl
T2Zmc2V0KFVubGlua2VkQ29kZUJsb2NrKiwgVW5saW5rZWRJbnN0cnVjdGlvbiosIHVuc2lnbmVk
IGJ5dGVjb2RlT2Zmc2V0LCBWZWN0b3I8dW5zaWduZWQsIDE+JiBvdXQpOwogCiB9IC8vIG5hbWVz
cGFjZSBKU0MKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Vu
bGlua2VkQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Vbmxp
bmtlZENvZGVCbG9jay5jcHAKaW5kZXggMjk5YWM2ODBkOWExZDFlNWE5MGQ5ZmFlMWEyMmY4NDRl
MjkyZTNlMi4uNWY1MjljY2ZkOTkxOTBlZWZhYWZmNDNlNzM3YjNmODIxNWEwNDg1OCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2su
Y3BwCkBAIC0zNjYsNSArMzY2LDMyIEBAIGNvbnN0IFVubGlua2VkSW5zdHJ1Y3Rpb25TdHJlYW0m
IFVubGlua2VkQ29kZUJsb2NrOjppbnN0cnVjdGlvbnMoKSBjb25zdAogICAgIHJldHVybiAqbV91
bmxpbmtlZEluc3RydWN0aW9uczsKIH0KIAorVW5saW5rZWRIYW5kbGVySW5mbyogVW5saW5rZWRD
b2RlQmxvY2s6OmhhbmRsZXJGb3JCeXRlY29kZU9mZnNldCh1bnNpZ25lZCBieXRlY29kZU9mZnNl
dCwgUmVxdWlyZWRIYW5kbGVyIHJlcXVpcmVkSGFuZGxlcikKK3sKKyAgICByZXR1cm4gaGFuZGxl
ckZvckluZGV4KGJ5dGVjb2RlT2Zmc2V0LCByZXF1aXJlZEhhbmRsZXIpOworfQorCisvLyBGSVhN
RTogQ29tcGxldGVseSBkdXBsaWNhdGUuCitVbmxpbmtlZEhhbmRsZXJJbmZvKiBVbmxpbmtlZENv
ZGVCbG9jazo6aGFuZGxlckZvckluZGV4KHVuc2lnbmVkIGluZGV4LCBSZXF1aXJlZEhhbmRsZXIg
cmVxdWlyZWRIYW5kbGVyKQoreworICAgIGlmICghbV9yYXJlRGF0YSkKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisKKyAgICBWZWN0b3I8VW5saW5rZWRIYW5kbGVySW5mbz4mIGV4Y2VwdGlvbkhh
bmRsZXJzID0gbV9yYXJlRGF0YS0+bV9leGNlcHRpb25IYW5kbGVyczsKKyAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IGV4Y2VwdGlvbkhhbmRsZXJzLnNpemUoKTsgKytpKSB7CisgICAgICAgIFVu
bGlua2VkSGFuZGxlckluZm8mIGhhbmRsZXIgPSBleGNlcHRpb25IYW5kbGVyc1tpXTsKKyAgICAg
ICAgaWYgKChyZXF1aXJlZEhhbmRsZXIgPT0gUmVxdWlyZWRIYW5kbGVyOjpDYXRjaEhhbmRsZXIp
ICYmICFoYW5kbGVyLmlzQ2F0Y2hIYW5kbGVyKCkpCisgICAgICAgICAgICBjb250aW51ZTsKKwor
ICAgICAgICAvLyBIYW5kbGVycyBhcmUgb3JkZXJlZCBpbm5lcm1vc3QgZmlyc3QsIHNvIHRoZSBm
aXJzdCBoYW5kbGVyIHdlIGVuY291bnRlcgorICAgICAgICAvLyB0aGF0IGNvbnRhaW5zIHRoZSBz
b3VyY2UgYWRkcmVzcyBpcyB0aGUgY29ycmVjdCBoYW5kbGVyIHRvIHVzZS4KKyAgICAgICAgLy8g
VGhpcyBpbmRleCB1c2VkIGlzIGVpdGhlciB0aGUgQnl0ZWNvZGVPZmZzZXQgb3IgYSBDYWxsU2l0
ZUluZGV4LgorICAgICAgICBpZiAoaGFuZGxlci5zdGFydCA8PSBpbmRleCAmJiBoYW5kbGVyLmVu
ZCA+IGluZGV4KQorICAgICAgICAgICAgcmV0dXJuICZoYW5kbGVyOworICAgIH0KKworICAgIHJl
dHVybiBudWxscHRyOworfQorCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKaW5kZXggOTFmZGNhNDhjMWUzOWU4YmVmYjBjNWZk
NTVmZDliZDkxYzFmMzcwNy4uMjFmNTFkZmUyMGM2YjdjOTU3ZGU1YmI1MjBmYmE0OGQ1MjBjNTE1
MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29k
ZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29k
ZUJsb2NrLmgKQEAgLTY5LDcgKzY5LDExIEBAIHR5cGVkZWYgdW5zaWduZWQgVW5saW5rZWRPYmpl
Y3RBbGxvY2F0aW9uUHJvZmlsZTsKIHR5cGVkZWYgdW5zaWduZWQgVW5saW5rZWRMTEludENhbGxM
aW5rSW5mbzsKIAogc3RydWN0IFVubGlua2VkU3RyaW5nSnVtcFRhYmxlIHsKLSAgICB0eXBlZGVm
IEhhc2hNYXA8UmVmUHRyPFN0cmluZ0ltcGw+LCBpbnQzMl90PiBTdHJpbmdPZmZzZXRUYWJsZTsK
KyAgICBzdHJ1Y3QgT2Zmc2V0TG9jYXRpb24geworICAgICAgICBpbnQzMl90IGJyYW5jaE9mZnNl
dDsKKyAgICB9OworCisgICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxTdHJpbmdJbXBsPiwgT2Zm
c2V0TG9jYXRpb24+IFN0cmluZ09mZnNldFRhYmxlOwogICAgIFN0cmluZ09mZnNldFRhYmxlIG9m
ZnNldFRhYmxlOwogCiAgICAgaW5saW5lIGludDMyX3Qgb2Zmc2V0Rm9yVmFsdWUoU3RyaW5nSW1w
bCogdmFsdWUsIGludDMyX3QgZGVmYXVsdE9mZnNldCkKQEAgLTc4LDcgKzgyLDcgQEAgc3RydWN0
IFVubGlua2VkU3RyaW5nSnVtcFRhYmxlIHsKICAgICAgICAgU3RyaW5nT2Zmc2V0VGFibGU6OmNv
bnN0X2l0ZXJhdG9yIGxvYyA9IG9mZnNldFRhYmxlLmZpbmQodmFsdWUpOwogICAgICAgICBpZiAo
bG9jID09IGVuZCkKICAgICAgICAgICAgIHJldHVybiBkZWZhdWx0T2Zmc2V0OwotICAgICAgICBy
ZXR1cm4gbG9jLT52YWx1ZTsKKyAgICAgICAgcmV0dXJuIGxvYy0+dmFsdWUuYnJhbmNoT2Zmc2V0
OwogICAgIH0KIAogfTsKQEAgLTEwNiw2ICsxMTAsOCBAQCBzdHJ1Y3QgVW5saW5rZWRJbnN0cnVj
dGlvbiB7CiAgICAgfSB1OwogfTsKIAorY2xhc3MgQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb247
CisKIGNsYXNzIFVubGlua2VkQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiBwdWJsaWM6CiAg
ICAgdHlwZWRlZiBKU0NlbGwgQmFzZTsKQEAgLTExNSw2ICsxMjEsOCBAQCBjbGFzcyBVbmxpbmtl
ZENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogCiAgICAgZW51bSB7IENhbGxGdW5jdGlvbiwg
QXBwbHlGdW5jdGlvbiB9OwogCisgICAgdHlwZWRlZiBWZWN0b3I8VW5saW5rZWRJbnN0cnVjdGlv
biwgMCwgVW5zYWZlVmVjdG9yT3ZlcmZsb3c+IFVucGFja2VkSW5zdHJ1Y3Rpb25zOworCiAgICAg
Ym9vbCBpc0NvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9pc0NvbnN0cnVjdG9yOyB9CiAg
ICAgYm9vbCBpc1N0cmljdE1vZGUoKSBjb25zdCB7IHJldHVybiBtX2lzU3RyaWN0TW9kZTsgfQog
ICAgIGJvb2wgdXNlc0V2YWwoKSBjb25zdCB7IHJldHVybiBtX3VzZXNFdmFsOyB9CkBAIC0yMDQs
NiArMjEyLDkgQEAgY2xhc3MgVW5saW5rZWRDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAg
ICB1bnNpZ25lZCBqdW1wVGFyZ2V0KGludCBpbmRleCkgY29uc3QgeyByZXR1cm4gbV9qdW1wVGFy
Z2V0c1tpbmRleF07IH0KICAgICB1bnNpZ25lZCBsYXN0SnVtcFRhcmdldCgpIGNvbnN0IHsgcmV0
dXJuIG1fanVtcFRhcmdldHMubGFzdCgpOyB9CiAKKyAgICBVbmxpbmtlZEhhbmRsZXJJbmZvKiBo
YW5kbGVyRm9yQnl0ZWNvZGVPZmZzZXQodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIFJlcXVpcmVk
SGFuZGxlciA9IFJlcXVpcmVkSGFuZGxlcjo6QW55SGFuZGxlcik7CisgICAgVW5saW5rZWRIYW5k
bGVySW5mbyogaGFuZGxlckZvckluZGV4KHVuc2lnbmVkLCBSZXF1aXJlZEhhbmRsZXIgPSBSZXF1
aXJlZEhhbmRsZXI6OkFueUhhbmRsZXIpOworCiAgICAgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbigp
IGNvbnN0IHsgcmV0dXJuIG1faXNCdWlsdGluRnVuY3Rpb247IH0KIAogICAgIENvbnN0cnVjdG9y
S2luZCBjb25zdHJ1Y3RvcktpbmQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxDb25zdHJ1
Y3RvcktpbmQ+KG1fY29uc3RydWN0b3JLaW5kKTsgfQpAQCAtMzc0LDYgKzM4NSwxMiBAQCBjbGFz
cyBVbmxpbmtlZENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgIFRyaVN0YXRlIGRpZE9w
dGltaXplKCkgY29uc3QgeyByZXR1cm4gbV9kaWRPcHRpbWl6ZTsgfQogICAgIHZvaWQgc2V0RGlk
T3B0aW1pemUoVHJpU3RhdGUgZGlkT3B0aW1pemUpIHsgbV9kaWRPcHRpbWl6ZSA9IGRpZE9wdGlt
aXplOyB9CiAKKyAgICBWZWN0b3I8RmFzdEJpdFZlY3Rvcj4mIGxpdmVDYWxsZWVMb2NhbHNBdFlp
ZWxkKCkKKyAgICB7CisgICAgICAgIGNyZWF0ZVJhcmVEYXRhSWZOZWNlc3NhcnkoKTsKKyAgICAg
ICAgcmV0dXJuIG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQ7CisgICAgfQor
CiBwcm90ZWN0ZWQ6CiAgICAgVW5saW5rZWRDb2RlQmxvY2soVk0qLCBTdHJ1Y3R1cmUqLCBDb2Rl
VHlwZSwgY29uc3QgRXhlY3V0YWJsZUluZm8mLCBEZWJ1Z2dlck1vZGUpOwogICAgIH5Vbmxpbmtl
ZENvZGVCbG9jaygpOwpAQCAtNDYwLDYgKzQ3Nyw5IEBAIGNsYXNzIFVubGlua2VkQ29kZUJsb2Nr
IDogcHVibGljIEpTQ2VsbCB7CiAgICAgICAgIFZlY3RvcjxVbmxpbmtlZFNpbXBsZUp1bXBUYWJs
ZT4gbV9zd2l0Y2hKdW1wVGFibGVzOwogICAgICAgICBWZWN0b3I8VW5saW5rZWRTdHJpbmdKdW1w
VGFibGU+IG1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlczsKIAorICAgICAgICAvLyBGSVhNRTogV2Ug
d2lsbCBkcm9wIHRoaXMuCisgICAgICAgIFZlY3RvcjxGYXN0Qml0VmVjdG9yPiBtX2xpdmVDYWxs
ZWVMb2NhbHNBdFlpZWxkOworCiAgICAgICAgIFZlY3RvcjxFeHByZXNzaW9uUmFuZ2VJbmZvOjpG
YXRQb3NpdGlvbj4gbV9leHByZXNzaW9uSW5mb0ZhdFBvc2l0aW9uczsKIAogICAgICAgICBzdHJ1
Y3QgVHlwZVByb2ZpbGVyRXhwcmVzc2lvblJhbmdlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXggYmMy
YWZjNmY4ZmExZmFmYzhiMmI2YzI1NjcxMmNiMjdmMjUwNzliYi4uNzBjMmQ4NDQ1YWExZTU2OTZm
NTMyZWMwZWY3YTc0MDZlNGVhMzliOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTMyLDYgKzMyLDcg
QEAKICNpbmNsdWRlICJCeXRlY29kZUdlbmVyYXRvci5oIgogCiAjaW5jbHVkZSAiQnVpbHRpbkV4
ZWN1dGFibGVzLmgiCisjaW5jbHVkZSAiQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uaCIKICNp
bmNsdWRlICJCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuaCIKICNpbmNsdWRlICJJbnRlcnByZXRl
ci5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKQEAgLTE1NCw2ICsxNTUsMTIgQEAgUGFyc2Vy
RXJyb3IgQnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKCkKICAgICAgICAgbV9jb2RlQmxvY2st
PmFkZEV4Y2VwdGlvbkhhbmRsZXIoaW5mbyk7CiAgICAgfQogICAgIAorCisgICAgaWYgKG1fY29k
ZUJsb2NrLT5wYXJzZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckJvZHlNb2Rl
KSB7CisgICAgICAgIEJ5dGVjb2RlR3JhcGg8VW5saW5rZWRDb2RlQmxvY2s+IGdyYXBoKG1fY29k
ZUJsb2NrLmdldCgpLCBtX2luc3RydWN0aW9ucyk7CisgICAgICAgIHBlcmZvcm1HZW5lcmF0b3Jp
ZmljYXRpb24oZ3JhcGgsIG1fZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZS5nZXQoKSwgbV9nZW5l
cmF0b3JGcmFtZVN5bWJvbFRhYmxlSW5kZXgpOworICAgIH0KKwogICAgIG1fY29kZUJsb2NrLT5z
ZXRJbnN0cnVjdGlvbnMoc3RkOjptYWtlX3VuaXF1ZTxVbmxpbmtlZEluc3RydWN0aW9uU3RyZWFt
PihtX2luc3RydWN0aW9ucykpOwogCiAgICAgbV9jb2RlQmxvY2stPnNocmlua1RvRml0KCk7CkBA
IC0yNzMsNyArMjgwLDcgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZN
JiB2bSwgRnVuY3Rpb25Ob2RlKiBmdW5jdGlvbk5vZGUsIFVubGlua2UKICAgICAgICAgLy8gICAg
ZnVuY3Rpb24gKmdlbihhLCBiID0gaGVsbG8oKSkKICAgICAgICAgLy8gICAgewogICAgICAgICAv
LyAgICAgICAgcmV0dXJuIHsKLSAgICAgICAgLy8gICAgICAgICAgICBAZ2VuZXJhdG9yTmV4dDog
ZnVuY3Rpb24gKEBnZW5lcmF0b3IsIEBnZW5lcmF0b3JTdGF0ZSwgQGdlbmVyYXRvclZhbHVlLCBA
Z2VuZXJhdG9yUmVzdW1lTW9kZSkKKyAgICAgICAgLy8gICAgICAgICAgICBAZ2VuZXJhdG9yTmV4
dDogZnVuY3Rpb24gKEBnZW5lcmF0b3IsIEBnZW5lcmF0b3JTdGF0ZSwgQGdlbmVyYXRvclZhbHVl
LCBAZ2VuZXJhdG9yUmVzdW1lTW9kZSwgQGdlbmVyYXRvckZyYW1lKQogICAgICAgICAvLyAgICAg
ICAgICAgIHsKICAgICAgICAgLy8gICAgICAgICAgICAgICAgYXJndW1lbnRzOyAgLy8gVGhpcyBg
YXJndW1lbnRzYCBzaG91bGQgcmVmZXJlbmNlIHRvIHRoZSBnZW4ncyBhcmd1bWVudHMuCiAgICAg
ICAgIC8vICAgICAgICAgICAgICAgIC4uLgpAQCAtNTUyLDYgKzU1OSw5IEBAIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25O
b2RlLCBVbmxpbmtlCiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckJvZHlNb2Rl
OiB7CiAgICAgICAgIC8vIHx0aGlzfCBpcyBhbHJlYWR5IGZpbGxlZCBjb3JyZWN0bHkgYmVmb3Jl
IGhlcmUuCiAgICAgICAgIGVtaXRMb2FkKG1fbmV3VGFyZ2V0UmVnaXN0ZXIsIGpzVW5kZWZpbmVk
KCkpOworCisgICAgICAgIGVtaXROZXdHZW5lcmF0b3JGcmFtZShnZW5lcmF0b3JGcmFtZVJlZ2lz
dGVyKCkpOworICAgICAgICBlbWl0UHV0QnlJZChnZW5lcmF0b3JSZWdpc3RlcigpLCBwcm9wZXJ0
eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yRnJhbWVQcml2YXRlTmFtZSgpLCBnZW5l
cmF0b3JGcmFtZVJlZ2lzdGVyKCkpOwogICAgICAgICBicmVhazsKICAgICB9CiAKQEAgLTMwMjEs
NiArMzAzMSwyMCBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0U2V0RnVuY3Rpb25OYW1l
SWZOZWVkZWQoRXhwcmVzc2lvbk5vZGUqIHZhbHVlTm9kZSwgUgogICAgIGluc3RydWN0aW9ucygp
LmFwcGVuZChuYW1lLT5pbmRleCgpKTsKIH0KIAorUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXROZXdHZW5lcmF0b3JGcmFtZShSZWdpc3RlcklEKiBkc3QpCit7CisgICAgU3ltYm9s
VGFibGUqIGdlbmVyYXRvckZyYW1lU3ltYm9sVGFibGUgPSBTeW1ib2xUYWJsZTo6Y3JlYXRlKCpt
X3ZtKTsKKyAgICBSZWdpc3RlcklEKiBjb25zdGFudFN5bWJvbFRhYmxlUmVnaXN0ZXIgPSBhZGRD
b25zdGFudFZhbHVlKGdlbmVyYXRvckZyYW1lU3ltYm9sVGFibGUpOworICAgIGVtaXRPcGNvZGUo
b3BfY3JlYXRlX2xleGljYWxfZW52aXJvbm1lbnQpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVu
ZChkc3QtPmluZGV4KCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChzY29wZVJlZ2lzdGVy
KCktPmluZGV4KCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChjb25zdGFudFN5bWJvbFRh
YmxlUmVnaXN0ZXItPmluZGV4KCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChhZGRDb25z
dGFudFZhbHVlKGpzVW5kZWZpbmVkKCkpLT5pbmRleCgpKTsKKyAgICBtX2dlbmVyYXRvckZyYW1l
U3ltYm9sVGFibGUuc2V0KCptX3ZtLCBnZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlKTsKKyAgICBt
X2dlbmVyYXRvckZyYW1lU3ltYm9sVGFibGVJbmRleCA9IGNvbnN0YW50U3ltYm9sVGFibGVSZWdp
c3Rlci0+aW5kZXgoKTsKKyAgICByZXR1cm4gZHN0OworfQorCiBSZWdpc3RlcklEKiBCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdENhbGwoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBmdW5jLCBF
eHBlY3RlZEZ1bmN0aW9uIGV4cGVjdGVkRnVuY3Rpb24sIENhbGxBcmd1bWVudHMmIGNhbGxBcmd1
bWVudHMsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24m
IGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCkKIHsKICAgICByZXR1
cm4gZW1pdENhbGwob3BfY2FsbCwgZHN0LCBmdW5jLCBleHBlY3RlZEZ1bmN0aW9uLCBjYWxsQXJn
dW1lbnRzLCBkaXZvdCwgZGl2b3RTdGFydCwgZGl2b3RFbmQpOwpAQCAtMzk0Myw3ICszOTY3LDcg
QEAgc3RhdGljIHZvaWQgcHJlcGFyZUp1bXBUYWJsZUZvclN0cmluZ1N3aXRjaChVbmxpbmtlZFN0
cmluZ0p1bXBUYWJsZSYganVtcFRhYmxlLAogICAgICAgICAKICAgICAgICAgQVNTRVJUKG5vZGVz
W2ldLT5pc1N0cmluZygpKTsKICAgICAgICAgU3RyaW5nSW1wbCogY2xhdXNlID0gc3RhdGljX2Nh
c3Q8U3RyaW5nTm9kZSo+KG5vZGVzW2ldKS0+dmFsdWUoKS5pbXBsKCk7Ci0gICAgICAgIGp1bXBU
YWJsZS5vZmZzZXRUYWJsZS5hZGQoY2xhdXNlLCBsYWJlbHNbaV0tPmJpbmQoc3dpdGNoQWRkcmVz
cywgc3dpdGNoQWRkcmVzcyArIDMpKTsKKyAgICAgICAganVtcFRhYmxlLm9mZnNldFRhYmxlLmFk
ZChjbGF1c2UsIFVubGlua2VkU3RyaW5nSnVtcFRhYmxlOjpPZmZzZXRMb2NhdGlvbiB7IGxhYmVs
c1tpXS0+YmluZChzd2l0Y2hBZGRyZXNzLCBzd2l0Y2hBZGRyZXNzICsgMykgfSk7CiAgICAgfQog
fQogCkBAIC00NDYwLDcgKzQ0ODQsNyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0U2F2
ZShMYWJlbCogbWVyZ2VQb2ludCwgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZAogewogICAg
IHNpemVfdCBiZWdpbiA9IGluc3RydWN0aW9ucygpLnNpemUoKTsKICAgICBlbWl0T3Bjb2RlKG9w
X3NhdmUpOwotICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChtX2dlbmVyYXRvclJlZ2lzdGVyLT5p
bmRleCgpKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZ2VuZXJhdG9yRnJhbWVSZWdpc3Rl
cigpLT5pbmRleCgpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobGl2ZUNhbGxlZUxvY2Fs
c0luZGV4KTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobWVyZ2VQb2ludC0+YmluZChiZWdp
biwgaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKSk7CiB9CkBAIC00NDY5LDcgKzQ0OTMsNyBAQCB2b2lk
IEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzdW1lKExhYmVsKiBtZXJnZVBvaW50LCB1bnNpZ25l
ZCBsaXZlQ2FsbGVlTG9jYWxzSQogewogICAgIGVtaXRHZW5lcmF0b3JTdGF0ZUxhYmVsKCk7CiAg
ICAgZW1pdE9wY29kZShvcF9yZXN1bWUpOwotICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChtX2dl
bmVyYXRvclJlZ2lzdGVyLT5pbmRleCgpKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZ2Vu
ZXJhdG9yRnJhbWVSZWdpc3RlcigpLT5pbmRleCgpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBl
bmQobGl2ZUNhbGxlZUxvY2Fsc0luZGV4KTsKICAgICBlbWl0TGFiZWwobWVyZ2VQb2ludCk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmgKaW5kZXggZDc5OWIxODk0MGFkODIwYzZjODRiZGYzMjhiMTMzMjYxMzk0Yjhk
ZC4uZWE5YTU2ZWQ1MDg2NjQwODE1MTdhNDI1YzUwMDUyZjEyYzZiMzdiNSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3Iu
aApAQCAtNTMzLDYgKzUzMyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBSZWdpc3RlcklE
KiBlbWl0TmV3QXJyb3dGdW5jdGlvbkV4cHJlc3Npb24oUmVnaXN0ZXJJRCosIEFycm93RnVuY0V4
cHJOb2RlKik7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdNZXRob2REZWZpbml0aW9uKFJl
Z2lzdGVySUQqIGRzdCwgTWV0aG9kRGVmaW5pdGlvbk5vZGUqKTsKICAgICAgICAgUmVnaXN0ZXJJ
RCogZW1pdE5ld1JlZ0V4cChSZWdpc3RlcklEKiBkc3QsIFJlZ0V4cCopOworICAgICAgICBSZWdp
c3RlcklEKiBlbWl0TmV3R2VuZXJhdG9yRnJhbWUoUmVnaXN0ZXJJRCogZHN0KTsKIAogICAgICAg
ICB2b2lkIGVtaXRTZXRGdW5jdGlvbk5hbWVJZk5lZWRlZChFeHByZXNzaW9uTm9kZSogdmFsdWVO
b2RlLCBSZWdpc3RlcklEKiB2YWx1ZSwgUmVnaXN0ZXJJRCogbmFtZSk7CiAKQEAgLTcwNSw2ICs3
MDYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9yU3Rh
dGVSZWdpc3RlcigpIHsgcmV0dXJuICZtX3BhcmFtZXRlcnNbMl07IH0KICAgICAgICAgUmVnaXN0
ZXJJRCogZ2VuZXJhdG9yVmFsdWVSZWdpc3RlcigpIHsgcmV0dXJuICZtX3BhcmFtZXRlcnNbM107
IH0KICAgICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKCkgeyBy
ZXR1cm4gJm1fcGFyYW1ldGVyc1s0XTsgfQorICAgICAgICBSZWdpc3RlcklEKiBnZW5lcmF0b3JG
cmFtZVJlZ2lzdGVyKCkgeyByZXR1cm4gJm1fcGFyYW1ldGVyc1s1XTsgfQogCiAgICAgICAgIENv
ZGVUeXBlIGNvZGVUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlVHlwZTsgfQogCkBAIC05MzIs
NiArOTM0LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBWZWN0b3I8UmVmUHRyPEZvcklu
Q29udGV4dD4+IG1fZm9ySW5Db250ZXh0U3RhY2s7CiAgICAgICAgIFZlY3RvcjxUcnlDb250ZXh0
PiBtX3RyeUNvbnRleHRTdGFjazsKICAgICAgICAgVmVjdG9yPFJlZlB0cjxMYWJlbD4+IG1fZ2Vu
ZXJhdG9yUmVzdW1lTGFiZWxzOworCisgICAgICAgIFN0cm9uZzxTeW1ib2xUYWJsZT4gbV9nZW5l
cmF0b3JGcmFtZVN5bWJvbFRhYmxlOworICAgICAgICBpbnQgbV9nZW5lcmF0b3JGcmFtZVN5bWJv
bFRhYmxlSW5kZXggeyAwIH07CisKICAgICAgICAgZW51bSBGdW5jdGlvblZhcmlhYmxlVHlwZSA6
IHVpbnQ4X3QgeyBOb3JtYWxGdW5jdGlvblZhcmlhYmxlLCBHbG9iYWxGdW5jdGlvblZhcmlhYmxl
IH07CiAgICAgICAgIFZlY3RvcjxzdGQ6OnBhaXI8RnVuY3Rpb25NZXRhZGF0YU5vZGUqLCBGdW5j
dGlvblZhcmlhYmxlVHlwZT4+IG1fZnVuY3Rpb25zVG9Jbml0aWFsaXplOwogICAgICAgICBib29s
IG1fbmVlZFRvSW5pdGlhbGl6ZUFyZ3VtZW50cyB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SGVhcC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBYnN0cmFjdEhlYXAuaAppbmRleCBhZmUxMGM0OTY0MzEyOWM3YjExZTgy
MGJlNDllNjA2ZWY3Mzg5MTY1Li40ZGViZjkzMmU5YTRiYTJmN2U1YTY4NzM0ZWEyZjllODEwMDIw
Nzg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SGVh
cC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RIZWFwLmgKQEAg
LTY5LDYgKzY5LDggQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3Jv
KFNjb3BlUHJvcGVydGllcykgXAogICAgIG1hY3JvKFR5cGVkQXJyYXlQcm9wZXJ0aWVzKSBcCiAg
ICAgbWFjcm8oSGVhcE9iamVjdENvdW50KSAvKiBVc2VkIHRvIHJlZmxlY3QgdGhlIGZhY3QgdGhh
dCBzb21lIGFsbG9jYXRpb25zIHJldmVhbCBvYmplY3QgaWRlbnRpdHkgKi9cCisgICAgbWFjcm8o
R2VuZXJhdG9yTG9jYWxzKSBcCisgICAgbWFjcm8oR2VuZXJhdG9yTG9jYWxDb3VudCkgXAogICAg
IG1hY3JvKFJlZ0V4cFN0YXRlKSBcCiAgICAgbWFjcm8oTWF0aERvdFJhbmRvbVN0YXRlKSBcCiAg
ICAgbWFjcm8oSW50ZXJuYWxTdGF0ZSkgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCmluZGV4IGViZGM3OWM2
MGY2ZjJmNmQ5MDYzZWExNmM0YzI4NmM0NTUzYTEwMDMuLmEzY2VmZGQzYWRiN2UyMTU5ZjI5ODQx
M2ZhNGFlZjUxMWNhMTY5MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKQEAgLTE5MjUsNiArMTkyNSwx
MCBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRl
RWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgIGNhc2UgTmV3UmVnZXhwOgogICAgICAg
ICBmb3JOb2RlKG5vZGUpLnNldChtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpLT5yZWdFeHBTdHJ1Y3R1cmUoKSk7CiAgICAgICAgIGJyZWFrOwor
CisgICAgY2FzZSBOZXdHZW5lcmF0b3JGcmFtZToKKyAgICAgICAgZm9yTm9kZShub2RlKS5zZXQo
bV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKS0+
Z2VuZXJhdG9yRnJhbWVTdHJ1Y3R1cmUoKSk7CisgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
CiAgICAgY2FzZSBUb1RoaXM6IHsKICAgICAgICAgQWJzdHJhY3RWYWx1ZSYgc291cmNlID0gZm9y
Tm9kZShub2RlLT5jaGlsZDEoKSk7CkBAIC0yODM5LDYgKzI4NDMsMTcgQEAgYm9vbCBBYnN0cmFj
dEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQg
Y2xvYmJlckxpbWkKICAgICAgICAgZm9yTm9kZShub2RlKS5tYWtlSGVhcFRvcCgpOwogICAgICAg
ICBicmVhazsKIAorICAgIGNhc2UgU2V0R2VuZXJhdG9yTG9jYWw6CisgICAgY2FzZSBSZXNpemVH
ZW5lcmF0b3JMb2NhbHM6CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBHZXRHZW5lcmF0b3JM
b2NhbDogeworICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGF0dGVtcHQgdG8gY29udmVydCBp
dCB0byBjb25zdGFudC4KKyAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE1MzE4MworICAgICAgICBmb3JOb2RlKG5vZGUpLm1ha2VCeXRlY29kZVRvcCgp
OworICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBjYXNlIEZvcmNlT1NSRXhpdDoKICAgICBj
YXNlIENoZWNrQmFkQ2VsbDoKICAgICAgICAgbV9zdGF0ZS5zZXRJc1ZhbGlkKGZhbHNlKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKaW5kZXgg
YmMyMjQ0N2MxMGE3Y2I4YWI0NDAzZWJmNTFlN2E1ZTgyYmM4M2M3ZS4uY2Y5ZjBlY2UxNjljMGZl
MjZkNzViODU2MTkzZTljYWY5YjUzYmFlNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJE
RkdDYXBhYmlsaXRpZXMuaCIKICNpbmNsdWRlICJERkdDbG9iYmVyaXplLmgiCiAjaW5jbHVkZSAi
REZHQ2xvYmJlcnNFeGl0U3RhdGUuaCIKKyNpbmNsdWRlICJERkdHZW5lcmF0b3JMb2NhbERhdGEu
aCIKICNpbmNsdWRlICJERkdHcmFwaC5oIgogI2luY2x1ZGUgIkRGR0pJVENvZGUuaCIKICNpbmNs
dWRlICJHZXRCeUlkU3RhdHVzLmgiCkBAIC0xMDA0LDYgKzEwMDUsMTEgQEAgY2xhc3MgQnl0ZUNv
ZGVQYXJzZXIgewogICAgIH0KIAogICAgIGJvb2wgbmVlZHNEeW5hbWljTG9va3VwKFJlc29sdmVU
eXBlLCBPcGNvZGVJRCk7CisKKyAgICBHZW5lcmF0b3JMb2NhbERhdGEqIG5ld0dlbmVyYXRvckxv
Y2FsRGF0YSgpCisgICAgeworICAgICAgICByZXR1cm4gbV9ncmFwaC5tX2dlbmVyYXRvckxvY2Fs
RGF0YS5hZGQoKTsKKyAgICB9CiAgICAgCiAgICAgVk0qIG1fdm07CiAgICAgQ29kZUJsb2NrKiBt
X2NvZGVCbG9jazsKQEAgLTEwOTIsNiArMTA5OCwxMSBAQCBjbGFzcyBCeXRlQ29kZVBhcnNlciB7
CiAgICAgICAgIENhbGxMaW5rSW5mb01hcCBtX2NhbGxMaW5rSW5mb3M7CiAgICAgICAgIFN0dWJJ
bmZvTWFwIG1fc3R1YkluZm9zOwogICAgICAgICBCeVZhbEluZm9NYXAgbV9ieVZhbEluZm9zOwor
CisgICAgICAgIC8vIFNpbmNlIHRoZSBvcF9yZXN1bWUgaXMgZW1pdHRlZCBhZnRlciB0aGUgY29y
cmVzcG9uZGluZyBvcF9zYXZlCisgICAgICAgIC8vIGFuZCB0aGVyZSBpcyBubyBvdGhlciBvcF9y
ZXN1bWUgYW5kIG9wX3NhdmUgYmV0d2VlbiB0aGVtLAorICAgICAgICAvLyB3ZSBjYW4gdHJhY2sg
dGhlc2UgY29ycmVzcG9uZGVuY2UgYnkganVzdCB0cmFja2luZyBjdXJyZW50bHkgZm9jdXNpbmcg
b3Bfc2F2ZS4KKyAgICAgICAgT3BlcmFuZHM8R2VuZXJhdG9yTG9jYWxEYXRhKj4gbV9nZW5lcmF0
b3JMb2NhbHM7CiAgICAgICAgIAogICAgICAgICAvLyBEaWQgd2Ugc2VlIGFueSByZXR1cm5zPyBX
ZSBuZWVkIHRvIGhhbmRsZSB0aGUgKHVuY29tbW9uIGJ1dCBuZWNlc3NhcnkpCiAgICAgICAgIC8v
IGNhc2Ugd2hlcmUgYSBwcm9jZWR1cmUgdGhhdCBkb2VzIG5vdCByZXR1cm4gd2FzIGlubGluZWQu
CkBAIC0zNjc2LDYgKzM2ODcsMTEgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1
bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX25ld19yZWdleHApOwog
ICAgICAgICB9CiAKKyAgICAgICAgY2FzZSBvcF9uZXdfZ2VuZXJhdG9yX2ZyYW1lOiB7CisgICAg
ICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJh
bmQpLCBhZGRUb0dyYXBoKE5ld0dlbmVyYXRvckZyYW1lLCBPcEluZm8oY3VycmVudEluc3RydWN0
aW9uWzJdLnUudW5zaWduZWRWYWx1ZSkpKTsKKyAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX25l
d19nZW5lcmF0b3JfZnJhbWUpOworICAgICAgICB9CisKICAgICAgICAgY2FzZSBvcF9nZXRfcmVz
dF9sZW5ndGg6IHsKICAgICAgICAgICAgIElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1l
ID0gdGhpcy0+aW5saW5lQ2FsbEZyYW1lKCk7CiAgICAgICAgICAgICBOb2RlKiBsZW5ndGg7CkBA
IC0zNzAzLDYgKzM3MTksNDEgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNp
Z25lZCBsaW1pdCkKICAgICAgICAgICAgICAgICBhcnJheSwgYXJyYXlMZW5ndGgpOwogICAgICAg
ICAgICAgTkVYVF9PUENPREUob3BfY29weV9yZXN0KTsKICAgICAgICAgfQorCisgICAgICAgIGNh
c2Ugb3Bfc2F2ZTogeworICAgICAgICAgICAgTm9kZSogZnJhbWUgPSBnZXQoVmlydHVhbFJlZ2lz
dGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpKTsKKyAgICAgICAgICAgIHVuc2ln
bmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51LnVuc2ln
bmVkVmFsdWU7CisgICAgICAgICAgICBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlbmVzcyA9IG1f
aW5saW5lU3RhY2tUb3AtPm1fY29kZUJsb2NrLT5saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZChsaXZl
Q2FsbGVlTG9jYWxzSW5kZXgpOworCisgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX2dl
bmVyYXRvckxvY2FscyA9IE9wZXJhbmRzPEdlbmVyYXRvckxvY2FsRGF0YSo+KG1fbnVtQXJndW1l
bnRzLCBtX251bUxvY2Fscyk7CisKKyAgICAgICAgICAgIGFkZFRvR3JhcGgoUmVzaXplR2VuZXJh
dG9yTG9jYWxzLCBPcEluZm8obGl2ZW5lc3MuYml0Q291bnQoKSksIGZyYW1lKTsKKyAgICAgICAg
ICAgIHVuc2lnbmVkIGdlbmVyYXRvckxvY2FsSW5kZXggPSAwOworICAgICAgICAgICAgbGl2ZW5l
c3MuZm9yRWFjaFNldEJpdChbJl0oc2l6ZV90IGluZGV4KSB7CisgICAgICAgICAgICAgICAgVmly
dHVhbFJlZ2lzdGVyIG9wZXJhbmQgPSB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChpbmRleCk7Cisg
ICAgICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHJlbWFwcGVkT3BlcmFuZCA9IG1faW5saW5l
U3RhY2tUb3AtPnJlbWFwT3BlcmFuZChvcGVyYW5kKTsKKyAgICAgICAgICAgICAgICBOb2RlKiBs
b2NhbCA9IGdldChvcGVyYW5kKTsKKyAgICAgICAgICAgICAgICBHZW5lcmF0b3JMb2NhbERhdGEq
IGdlbmVyYXRvckxvY2FsRGF0YSA9IG5ld0dlbmVyYXRvckxvY2FsRGF0YSgpOworICAgICAgICAg
ICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fZ2VuZXJhdG9yTG9jYWxzLmxvY2FsKHJlbWFwcGVk
T3BlcmFuZC50b0xvY2FsKCkpID0gZ2VuZXJhdG9yTG9jYWxEYXRhOworICAgICAgICAgICAgICAg
IGFkZFRvR3JhcGgoU2V0R2VuZXJhdG9yTG9jYWwsIE9wSW5mbyhnZW5lcmF0b3JMb2NhbEluZGV4
KyspLCBPcEluZm8oZ2VuZXJhdG9yTG9jYWxEYXRhKSwgZnJhbWUsIGxvY2FsKTsKKyAgICAgICAg
ICAgIH0pOworICAgICAgICAgICAgTkVYVF9PUENPREUob3Bfc2F2ZSk7CisgICAgICAgIH0KKwor
ICAgICAgICBjYXNlIG9wX3Jlc3VtZTogeworICAgICAgICAgICAgTm9kZSogZnJhbWUgPSBnZXQo
VmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpKTsKKyAgICAg
ICAgICAgIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9IGN1cnJlbnRJbnN0cnVjdGlv
blsyXS51LnVuc2lnbmVkVmFsdWU7CisgICAgICAgICAgICBjb25zdCBGYXN0Qml0VmVjdG9yJiBs
aXZlbmVzcyA9IG1faW5saW5lU3RhY2tUb3AtPm1fY29kZUJsb2NrLT5saXZlQ2FsbGVlTG9jYWxz
QXRZaWVsZChsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpOworICAgICAgICAgICAgdW5zaWduZWQgZ2Vu
ZXJhdG9yTG9jYWxJbmRleCA9IDA7CisgICAgICAgICAgICBsaXZlbmVzcy5mb3JFYWNoU2V0Qml0
KFsmXShzaXplX3QgaW5kZXgpIHsKKyAgICAgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgb3Bl
cmFuZCA9IHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGluZGV4KTsKKyAgICAgICAgICAgICAgICBW
aXJ0dWFsUmVnaXN0ZXIgcmVtYXBwZWRPcGVyYW5kID0gbV9pbmxpbmVTdGFja1RvcC0+cmVtYXBP
cGVyYW5kKG9wZXJhbmQpOworICAgICAgICAgICAgICAgIEdlbmVyYXRvckxvY2FsRGF0YSogZ2Vu
ZXJhdG9yTG9jYWxEYXRhID0gbV9pbmxpbmVTdGFja1RvcC0+bV9nZW5lcmF0b3JMb2NhbHMubG9j
YWwocmVtYXBwZWRPcGVyYW5kLnRvTG9jYWwoKSk7CisgICAgICAgICAgICAgICAgc2V0KG9wZXJh
bmQsIGFkZFRvR3JhcGgoR2V0R2VuZXJhdG9yTG9jYWwsIE9wSW5mbyhnZW5lcmF0b3JMb2NhbElu
ZGV4KyspLCBPcEluZm8oZ2VuZXJhdG9yTG9jYWxEYXRhKSwgZnJhbWUpKTsKKyAgICAgICAgICAg
IH0pOworICAgICAgICAgICAgYWRkVG9HcmFwaChSZXNpemVHZW5lcmF0b3JMb2NhbHMsIE9wSW5m
bygwKSwgZnJhbWUpOworICAgICAgICAgICAgTkVYVF9PUENPREUob3BfcmVzdW1lKTsKKyAgICAg
ICAgfQogICAgICAgICAgICAgCiAgICAgICAgIC8vID09PSBCaXR3aXNlIG9wZXJhdGlvbnMgPT09
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVz
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAppbmRl
eCAxYTIzNDgyNDI4M2IwYjhjZjczNWM1MTBhZTEyNzI0NTk3ZGUxNTc4Li45YzVmNDdkYzdiZmU5
MTNhNThlMTA3MWUxZDFhYmE2OWYxMjAxNzRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCkBAIC0xOTIsNiArMTkyLDcgQEAgQ2FwYWJpbGl0eUxl
dmVsIGNhcGFiaWxpdHlMZXZlbChPcGNvZGVJRCBvcGNvZGVJRCwgQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssIEluc3RydWMKICAgICBjYXNlIG9wX25ld19hcnJheToKICAgICBjYXNlIG9wX25ld19hcnJh
eV93aXRoX3NpemU6CiAgICAgY2FzZSBvcF9uZXdfYXJyYXlfYnVmZmVyOgorICAgIGNhc2Ugb3Bf
bmV3X2dlbmVyYXRvcl9mcmFtZToKICAgICBjYXNlIG9wX3N0cmNhdDoKICAgICBjYXNlIG9wX3Rv
X3ByaW1pdGl2ZToKICAgICBjYXNlIG9wX3Rocm93OgpAQCAtMjQwLDYgKzI0MSw4IEBAIENhcGFi
aWxpdHlMZXZlbCBjYXBhYmlsaXR5TGV2ZWwoT3Bjb2RlSUQgb3Bjb2RlSUQsIENvZGVCbG9jayog
Y29kZUJsb2NrLCBJbnN0cnVjCiAgICAgY2FzZSBvcF9sb2dfc2hhZG93X2NoaWNrZW5fdGFpbDoK
ICAgICBjYXNlIG9wX3B1dF90b19zY29wZToKICAgICBjYXNlIG9wX3Jlc29sdmVfc2NvcGU6Cisg
ICAgY2FzZSBvcF9zYXZlOgorICAgIGNhc2Ugb3BfcmVzdW1lOgogICAgICAgICByZXR1cm4gQ2Fu
Q29tcGlsZUFuZElubGluZTsKIAogICAgIGNhc2Ugb3BfbmV3X3JlZ2V4cDoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKaW5kZXggNmFlMmRmMjFjNjI4MGE2MjVkNDY5
YmM1NWExMjBiM2IxNjQzNGQ3Ny4uZGU1ZTgxODVmOWU1YTYwZDc4MmVjMzVkZmVjZDA5YzE4ZWQ1
NGJlNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXpl
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKQEAgLTEw
OTksNiArMTA5OSw3IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUs
IGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAKICAgICBjYXNlIE5ld09i
amVjdDoKICAgICBjYXNlIE5ld1JlZ2V4cDoKKyAgICBjYXNlIE5ld0dlbmVyYXRvckZyYW1lOgog
ICAgIGNhc2UgTmV3U3RyaW5nT2JqZWN0OgogICAgIGNhc2UgUGhhbnRvbU5ld09iamVjdDoKICAg
ICBjYXNlIE1hdGVyaWFsaXplTmV3T2JqZWN0OgpAQCAtMTE5OSw2ICsxMjAwLDIzIEBAIHZvaWQg
Y2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiBy
ZWFkLCBjb25zdCBXcml0ZUZ1CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CisKKyAgICBjYXNlIFNldEdlbmVy
YXRvckxvY2FsOiB7CisgICAgICAgIHJlYWQoR2VuZXJhdG9yTG9jYWxDb3VudCk7CisgICAgICAg
IHdyaXRlKEdlbmVyYXRvckxvY2Fscyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBj
YXNlIEdldEdlbmVyYXRvckxvY2FsOiB7CisgICAgICAgIHJlYWQoR2VuZXJhdG9yTG9jYWxDb3Vu
dCk7CisgICAgICAgIHJlYWQoR2VuZXJhdG9yTG9jYWxzKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIGNhc2UgUmVzaXplR2VuZXJhdG9yTG9jYWxzOiB7CisgICAgICAgIHdyaXRlKEdl
bmVyYXRvckxvY2FsQ291bnQpOworICAgICAgICByZXR1cm47CisgICAgfQogICAgICAgICAKICAg
ICBjYXNlIFRocm93UmVmZXJlbmNlRXJyb3I6CiAgICAgICAgIHdyaXRlKFNpZGVTdGF0ZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJzRXhpdFN0YXRl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcnNFeGl0U3RhdGUuY3Bw
CmluZGV4IDgwOWE0NWQ2ZjFhNjQwMTU4MTlkNzJlM2ZhNDgxZTRlYWIzMzQ3ODIuLjZhYWZjYmZk
YTM2ZTE2NDQ2ZmY3OTRlZTg0YzMwOTdlMjI1YTBhMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcnNFeGl0U3RhdGUuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcnNFeGl0U3RhdGUuY3BwCkBAIC01MywxMCArNTMsMTYg
QEAgYm9vbCBjbG9iYmVyc0V4aXRTdGF0ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAg
ICAgIC8vIGV4aXQgc3RhdGUuCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAorICAgIGNhc2UgUmVz
aXplR2VuZXJhdG9yTG9jYWxzOgorICAgIGNhc2UgU2V0R2VuZXJhdG9yTG9jYWw6CisgICAgY2Fz
ZSBHZXRHZW5lcmF0b3JMb2NhbDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgY2FzZSBB
cnJheWlmeVRvU3RydWN0dXJlOgogICAgIGNhc2UgQXJyYXlpZnk6CiAgICAgY2FzZSBOZXdPYmpl
Y3Q6CiAgICAgY2FzZSBOZXdSZWdleHA6CisgICAgY2FzZSBOZXdHZW5lcmF0b3JGcmFtZToKICAg
ICBjYXNlIE5ld1N0cmluZ09iamVjdDoKICAgICBjYXNlIFBoYW50b21OZXdPYmplY3Q6CiAgICAg
Y2FzZSBNYXRlcmlhbGl6ZU5ld09iamVjdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHRG9lc0dDLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9l
c0dDLmNwcAppbmRleCBjYWYzMGUzNmEyNjAwNDYwNmU1ZTFlMTVhY2RmMjE4MmMxODg3ZDM2Li40
OWIxZGM4ZmNmMjZhZjkwYmIxMGM5MzVkMDM5MWMwOTQ0M2M1YmM2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCkBAIC0yNTAsNiArMjUwLDkgQEAgYm9vbCBkb2VzR0Mo
R3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgR2V0RHluYW1pY1ZhcjoKICAgICBj
YXNlIFB1dER5bmFtaWNWYXI6CiAgICAgY2FzZSBSZXNvbHZlU2NvcGU6CisgICAgY2FzZSBTZXRH
ZW5lcmF0b3JMb2NhbDoKKyAgICBjYXNlIEdldEdlbmVyYXRvckxvY2FsOgorICAgIGNhc2UgUmVz
aXplR2VuZXJhdG9yTG9jYWxzOgogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBjYXNlIENy
ZWF0ZUFjdGl2YXRpb246CkBAIC0yNjgsNiArMjcxLDcgQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdy
YXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgTmV3QXJyYXlXaXRoU2l6ZToKICAgICBjYXNlIE5l
d0FycmF5QnVmZmVyOgogICAgIGNhc2UgTmV3UmVnZXhwOgorICAgIGNhc2UgTmV3R2VuZXJhdG9y
RnJhbWU6CiAgICAgY2FzZSBOZXdTdHJpbmdPYmplY3Q6CiAgICAgY2FzZSBNYWtlUm9wZToKICAg
ICBjYXNlIE5ld0Z1bmN0aW9uOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdGaXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQ
aGFzZS5jcHAKaW5kZXggOTc0NTkwYTg4ZWRkOGZlYWQ2N2U5MDZiMmExZGMzZDVmZmEzZDdkMC4u
ZmJkMjljMWQzY2UyMDc5ZGQ3NmE3Y2U0YzkzZmVkODI4OTI1NmE1NSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCkBAIC0xNTE5LDYgKzE1MTksMjQgQEAg
Y2xhc3MgRml4dXBQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogCisgICAgICAgIGNhc2UgU2V0R2VuZXJhdG9yTG9jYWw6IHsKKyAgICAgICAgICAg
IGZpeEVkZ2U8Q2VsbFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgc3BlY3VsYXRl
Rm9yQmFycmllcihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
fQorCisgICAgICAgIGNhc2UgR2V0R2VuZXJhdG9yTG9jYWw6IHsKKyAgICAgICAgICAgIGZpeEVk
Z2U8Q2VsbFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgLy8gQ3VycmVudGx5LCB3
ZSBhbHdheXMgc3RvcmUgdGhlIHZhbHVlIGFzIEpTVmFsdWUgaW4gdGhlIEdlbmVyYXRvckZyYW1l
LgorICAgICAgICAgICAgbm9kZS0+c2V0UmVzdWx0KE5vZGVSZXN1bHRKUyk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2UgUmVzaXplR2VuZXJhdG9yTG9jYWxz
OiB7CisgICAgICAgICAgICBmaXhFZGdlPENlbGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CisKICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgICAg
IC8vIEhhdmUgdGhlc2Ugbm8tb3AgY2FzZXMgaGVyZSB0byBlbnN1cmUgdGhhdCBub2JvZHkgZm9y
Z2V0cyB0byBhZGQgaGFuZGxlcnMgZm9yIG5ldyBvcGNvZGVzLgogICAgICAgICBjYXNlIFNldEFy
Z3VtZW50OgpAQCAtMTU1Myw2ICsxNTcxLDcgQEAgY2xhc3MgRml4dXBQaGFzZSA6IHB1YmxpYyBQ
aGFzZSB7CiAgICAgICAgIGNhc2UgTmV3T2JqZWN0OgogICAgICAgICBjYXNlIE5ld0FycmF5QnVm
ZmVyOgogICAgICAgICBjYXNlIE5ld1JlZ2V4cDoKKyAgICAgICAgY2FzZSBOZXdHZW5lcmF0b3JG
cmFtZToKICAgICAgICAgY2FzZSBEZWxldGVCeUlkOgogICAgICAgICBjYXNlIERlbGV0ZUJ5VmFs
OgogICAgICAgICBjYXNlIElzSlNBcnJheToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHR2VuZXJhdG9yTG9jYWxEYXRhLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0dlbmVyYXRvckxvY2FsRGF0YS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNlYWYxYWJjMDViNzgzODU0
N2MwYjdhZWJlZGZmNjA0Y2NiNWZkMTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0dlbmVyYXRvckxvY2FsRGF0YS5oCkBAIC0wLDAgKzEsNTggQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwu
Y29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRl
ZiBERkdHZW5lcmF0b3JMb2NhbERhdGFfaAorI2RlZmluZSBERkdHZW5lcmF0b3JMb2NhbERhdGFf
aAorCisjaWYgRU5BQkxFKERGR19KSVQpCisKKyNpbmNsdWRlICJERkdDb21tb24uaCIKKyNpbmNs
dWRlICJTcGVjdWxhdGVkVHlwZS5oIgorI2luY2x1ZGUgIlZpcnR1YWxSZWdpc3Rlci5oIgorCitu
YW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CisKKworY2xhc3MgR2VuZXJhdG9yTG9jYWxE
YXRhIHsKK3B1YmxpYzoKKyAgICBib29sIHByZWRpY3QoU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlv
bikKKyAgICB7CisgICAgICAgIHJldHVybiBtZXJnZVNwZWN1bGF0aW9uKG1fcHJlZGljdGlvbiwg
cHJlZGljdGlvbik7CisgICAgfQorCisgICAgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbigpCisg
ICAgeworICAgICAgICByZXR1cm4gbV9wcmVkaWN0aW9uOworICAgIH0KKworcHJpdmF0ZToKKyAg
ICBTcGVjdWxhdGVkVHlwZSBtX3ByZWRpY3Rpb24geyBTcGVjTm9uZSB9OworfTsKKworfSB9IC8v
IG5hbWVzcGFjZSBKU0M6OkRGRworCisjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCisKKyNlbmRp
ZiAvLyBERkdWYXJpYWJsZUFjY2Vzc0RhdGFfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdHcmFwaC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFw
aC5oCmluZGV4IDAyMWIwZWM4M2UzZmViZjVjYzUzZDdlOWI2MjFhNGEwY2Y3YWFjZjAuLjMxZGUy
YzEwNjQxMjU1YTZkZDk5NWY3M2JkOWM5MmQ3ZTk3NDBmMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0dyYXBoLmgKQEAgLTYzLDYgKzYzLDcgQEAgY2xhc3MgQ29udHJvbEVxdWl2YWxlbmNl
QW5hbHlzaXM7CiBjbGFzcyBEb21pbmF0b3JzOwogY2xhc3MgTmF0dXJhbExvb3BzOwogY2xhc3Mg
UHJlUG9zdE51bWJlcmluZzsKK2NsYXNzIEdlbmVyYXRvckxvY2FsRGF0YTsKIAogI2RlZmluZSBE
RkdfTk9ERV9ET19UT19DSElMRFJFTihncmFwaCwgbm9kZSwgdGhpbmdUb0RvKSBkbyB7ICAgICAg
ICAgICAgXAogICAgICAgICBOb2RlKiBfbm9kZSA9IChub2RlKTsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXApAQCAtODc1LDYgKzg3Niw3IEBAIGNsYXNzIEdyYXBo
IDogcHVibGljIHZpcnR1YWwgU2Nhbm5hYmxlIHsKICAgICBCYWc8Q2FsbFZhcmFyZ3NEYXRhPiBt
X2NhbGxWYXJhcmdzRGF0YTsKICAgICBCYWc8TG9hZFZhcmFyZ3NEYXRhPiBtX2xvYWRWYXJhcmdz
RGF0YTsKICAgICBCYWc8U3RhY2tBY2Nlc3NEYXRhPiBtX3N0YWNrQWNjZXNzRGF0YTsKKyAgICBC
YWc8R2VuZXJhdG9yTG9jYWxEYXRhPiBtX2dlbmVyYXRvckxvY2FsRGF0YTsKICAgICBCYWc8TGF6
eUpTVmFsdWU+IG1fbGF6eUpTVmFsdWVzOwogICAgIFZlY3RvcjxJbmxpbmVWYXJpYWJsZURhdGEs
IDQ+IG1faW5saW5lVmFyaWFibGVEYXRhOwogICAgIEhhc2hNYXA8Q29kZUJsb2NrKiwgc3RkOjp1
bmlxdWVfcHRyPEZ1bGxCeXRlY29kZUxpdmVuZXNzPj4gbV9ieXRlY29kZUxpdmVuZXNzOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAKaW5kZXggNTcwYjEwYWM0MzJjODQ0
N2IxYzgyMzU1ZjFiMjlkY2QzMzk1OTQ1Yy4uYjFkNTljYjVmYjBiOGZjMDIyMzAwMjE4Mzk1NmUx
Nzc5MGZhMzc0MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlF
eGl0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3BwCkBA
IC05MCw2ICs5MCw5IEBAIEV4aXRNb2RlIG1heUV4aXRJbXBsKEdyYXBoJiBncmFwaCwgTm9kZSog
bm9kZSwgU3RhdGVUeXBlJiBzdGF0ZSkKICAgICBjYXNlIFB1dEJ5T2Zmc2V0OgogICAgIGNhc2Ug
UHV0Q2xvc3VyZVZhcjoKICAgICBjYXNlIFJlY29yZFJlZ0V4cENhY2hlZFJlc3VsdDoKKyAgICBj
YXNlIFJlc2l6ZUdlbmVyYXRvckxvY2FsczoKKyAgICBjYXNlIFNldEdlbmVyYXRvckxvY2FsOgor
ICAgIGNhc2UgR2V0R2VuZXJhdG9yTG9jYWw6CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBT
dHJDYXQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCmluZGV4IDNiZjNiMmM3MWFhNGU2
YjUwZjg1MTBkMzgwMjYwY2I5OWFhYTdkOWQuLmUxZGUwOTRkZWEyZmU3ZGRjZjQwNWVjNWFhNjYy
NWQ3NWU0YzlhNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCkBAIC0zNiw2ICsz
Niw3IEBACiAjaW5jbHVkZSAiREZHQXJyYXlNb2RlLmgiCiAjaW5jbHVkZSAiREZHQ29tbW9uLmgi
CiAjaW5jbHVkZSAiREZHRXBvY2guaCIKKyNpbmNsdWRlICJERkdHZW5lcmF0b3JMb2NhbERhdGEu
aCIKICNpbmNsdWRlICJERkdMYXp5SlNWYWx1ZS5oIgogI2luY2x1ZGUgIkRGR011bHRpR2V0QnlP
ZmZzZXREYXRhLmgiCiAjaW5jbHVkZSAiREZHTm9kZUZsYWdzLmgiCkBAIC05NDYsMTIgKzk0Nyw3
OCBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgICAgIH0KICAgICB9CiAKKyAgICBib29sIGhhc0dlbmVy
YXRvckxvY2Fsc1NpemUoKQorICAgIHsKKyAgICAgICAgc3dpdGNoIChvcCgpKSB7CisgICAgICAg
IGNhc2UgTmV3R2VuZXJhdG9yRnJhbWU6CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0K
KwogICAgIHVuc2lnbmVkIGdldFB1dEluZm8oKQogICAgIHsKICAgICAgICAgQVNTRVJUKGhhc0dl
dFB1dEluZm8oKSk7CiAgICAgICAgIHJldHVybiBtX29wSW5mbzI7CiAgICAgfQogCisgICAgdW5z
aWduZWQgZ2VuZXJhdG9yTG9jYWxzU2l6ZSgpCisgICAgeworICAgICAgICBBU1NFUlQoaGFzR2Vu
ZXJhdG9yTG9jYWxzU2l6ZSgpKTsKKyAgICAgICAgcmV0dXJuIG1fb3BJbmZvOworICAgIH0KKwor
ICAgIGJvb2wgaGFzR2VuZXJhdG9yTG9jYWxJbmRleCgpCisgICAgeworICAgICAgICBzd2l0Y2gg
KG9wKCkpIHsKKyAgICAgICAgY2FzZSBTZXRHZW5lcmF0b3JMb2NhbDoKKyAgICAgICAgY2FzZSBH
ZXRHZW5lcmF0b3JMb2NhbDoKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorCisgICAg
dW5zaWduZWQgZ2VuZXJhdG9yTG9jYWxJbmRleCgpCisgICAgeworICAgICAgICBBU1NFUlQoaGFz
R2VuZXJhdG9yTG9jYWxJbmRleCgpKTsKKyAgICAgICAgcmV0dXJuIG1fb3BJbmZvOworICAgIH0K
KworICAgIGJvb2wgaGFzR2VuZXJhdG9yTG9jYWxEYXRhKCkKKyAgICB7CisgICAgICAgIHN3aXRj
aCAob3AoKSkgeworICAgICAgICBjYXNlIFNldEdlbmVyYXRvckxvY2FsOgorICAgICAgICBjYXNl
IEdldEdlbmVyYXRvckxvY2FsOgorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICBHZW5lcmF0b3JMb2NhbERhdGEqIGdlbmVyYXRvckxvY2FsRGF0YSgpCisgICAgeworICAgICAg
ICBBU1NFUlQoaGFzR2VuZXJhdG9yTG9jYWxEYXRhKCkpOworICAgICAgICByZXR1cm4gcmVpbnRl
cnByZXRfY2FzdDxHZW5lcmF0b3JMb2NhbERhdGEqPihtX29wSW5mbzIpOworICAgIH0KKworICAg
IGJvb2wgaGFzR2VuZXJhdG9yRnJhbWVMb2NhbHMoKQorICAgIHsKKyAgICAgICAgc3dpdGNoIChv
cCgpKSB7CisgICAgICAgIGNhc2UgUmVzaXplR2VuZXJhdG9yTG9jYWxzOgorICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICB1bnNpZ25lZCBnZW5lcmF0b3JGcmFtZUxvY2Fscygp
CisgICAgeworICAgICAgICBBU1NFUlQoaGFzR2VuZXJhdG9yRnJhbWVMb2NhbHMoKSk7CisgICAg
ICAgIHJldHVybiBtX29wSW5mbzsKKyAgICB9CisKICAgICBib29sIGhhc0FjY2Vzc29yQXR0cmli
dXRlcygpCiAgICAgewogICAgICAgICBzd2l0Y2ggKG9wKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTm9kZVR5cGUuaAppbmRleCBmOTNiM2JmMTQyMDBjZjA0NWU2OGE2NDFlN2Q2YjAw
MTdjNzRmMTM3Li41ZDQwNWMyZmM4ZmM5YmQ3ZDZjYjJlNjkzNDY3MzAwOTMwMTVkZmE3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCkBAIC04Miw2ICs4MiwxMCBAQCBu
YW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oRmx1c2gsIE5vZGVNdXN0
R2VuZXJhdGUpIFwKICAgICBtYWNybyhQaGFudG9tTG9jYWwsIE5vZGVNdXN0R2VuZXJhdGUpIFwK
ICAgICBcCisgICAgbWFjcm8oU2V0R2VuZXJhdG9yTG9jYWwsIE5vZGVNdXN0R2VuZXJhdGUpIFwK
KyAgICBtYWNybyhHZXRHZW5lcmF0b3JMb2NhbCwgTm9kZVJlc3VsdEpTKSBcCisgICAgbWFjcm8o
UmVzaXplR2VuZXJhdG9yTG9jYWxzLCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgXAogICAgIC8q
IEhpbnQgdGhhdCB0aGlzIGlzIHdoZXJlIGJ5dGVjb2RlIHRoaW5rcyBpcyBhIGdvb2QgcGxhY2Ug
dG8gT1NSLiBOb3RlIHRoYXQgdGhpcyAqL1wKICAgICAvKiB3aWxsIGV4aXN0IGV2ZW4gaW4gaW5s
aW5lZCBsb29wcy4gVGhpcyBoYXMgbm8gZXhlY3V0aW9uIHNlbWFudGljcyBidXQgaXQgbXVzdCAq
L1wKICAgICAvKiBzdXJ2aXZlIGFsbCBEQ0UuIFdlIHRyZWF0IHRoaXMgYXMgYmVpbmcgYSBjYW4t
ZXhpdCBiZWNhdXNlIHRpZXItdXAgdG8gRlRMIG1heSAqL1wKQEAgLTI4OCw2ICsyOTIsNyBAQCBu
YW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oTmV3QXJyYXlCdWZmZXIs
IE5vZGVSZXN1bHRKUykgXAogICAgIG1hY3JvKE5ld1R5cGVkQXJyYXksIE5vZGVSZXN1bHRKUyB8
IE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhOZXdSZWdleHAsIE5vZGVSZXN1bHRKUykg
XAorICAgIG1hY3JvKE5ld0dlbmVyYXRvckZyYW1lLCBOb2RlUmVzdWx0SlMpIFwKICAgICAvKiBS
ZXN0IFBhcmFtZXRlciAqL1wKICAgICBtYWNybyhHZXRSZXN0TGVuZ3RoLCBOb2RlUmVzdWx0SW50
MzIpIFwKICAgICBtYWNybyhDb3B5UmVzdCwgTm9kZU11c3RHZW5lcmF0ZSkgXApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKaW5kZXggNjlhMTZlYjVkYTQzNTVi
Yzc5MjVjNWRmZGNiMDYyMDIzZTk5NjUwMi4uZDBkZjNjMjFkZmYwYzYwZWVhNjFhNDFhY2E2OWI3
NGJmOWNjN2VmMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVy
YXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMu
Y3BwCkBAIC00Miw4ICs0Miw5IEBACiAjaW5jbHVkZSAiRGlyZWN0QXJndW1lbnRzLmgiCiAjaW5j
bHVkZSAiRlRMRm9yT1NSRW50cnlKSVRDb2RlLmgiCiAjaW5jbHVkZSAiRlRMT1NSRW50cnkuaCIK
LSNpbmNsdWRlICJIb3N0Q2FsbFJldHVyblZhbHVlLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yRnJh
bWUuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKKyNpbmNsdWRlICJIb3N0Q2FsbFJldHVy
blZhbHVlLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKSVQuaCIKICNp
bmNsdWRlICJKSVRFeGNlcHRpb25zLmgiCkBAIC05ODksNiArOTkwLDExIEBAIGNoYXIqIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uTmV3RmxvYXQ2NEFycmF5V2l0aE9uZUFyZ3VtZW50KAogICAgIHJl
dHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZp
ZXdXaXRoQXJndW1lbnRzPEpTRmxvYXQ2NEFycmF5PihleGVjLCBzdHJ1Y3R1cmUsIGVuY29kZWRW
YWx1ZSwgMCwgTnVsbG9wdCkpOwogfQogCitjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5l
d0dlbmVyYXRvckZyYW1lKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGlu
dDMyX3QgbnVtYmVyT2ZDYWxsZWVMb2NhbHMpCit7CisgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxj
aGFyKj4oR2VuZXJhdG9yRnJhbWU6OmNyZWF0ZShleGVjLT52bSgpLCBzdHJ1Y3R1cmUsIG51bWJl
ck9mQ2FsbGVlTG9jYWxzKSk7Cit9CisKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25D
cmVhdGVBY3RpdmF0aW9uRGlyZWN0KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIEpTU2NvcGUqIHNjb3BlLCBTeW1ib2xUYWJsZSogdGFibGUsIEVuY29kZWRKU1ZhbHVlIGlu
aXRpYWxWYWx1ZUVuY29kZWQpCiB7CiAgICAgSlNWYWx1ZSBpbml0aWFsVmFsdWUgPSBKU1ZhbHVl
OjpkZWNvZGUoaW5pdGlhbFZhbHVlRW5jb2RlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT3BlcmF0aW9ucy5oCmluZGV4IGZiYzg2MmZlMWVhODQ2ZDJmN2MzZmEyNzI3NmU4M2QwNjFi
OGYyMmIuLjJmOGZiNGY2ZWRlNmIyMzAwMDZlMGRiMWRmNzZkNmIyM2JkZGU2M2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCkBAIC04Myw2ICs4Myw3IEBAIGNo
YXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3RmxvYXQzMkFycmF5V2l0aFNpemUoRXhlY1N0
YXRlKiwgU3RydWN0dXJlKiwgaW50CiBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Zs
b2F0MzJBcnJheVdpdGhPbmVBcmd1bWVudChFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqLCBFbmNvZGVk
SlNWYWx1ZSkgV1RGX0lOVEVSTkFMOwogY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdG
bG9hdDY0QXJyYXlXaXRoU2l6ZShFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90KSBXVEZf
SU5URVJOQUw7CiBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Zsb2F0NjRBcnJheVdp
dGhPbmVBcmd1bWVudChFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqLCBFbmNvZGVkSlNWYWx1ZSkgV1RG
X0lOVEVSTkFMOworY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdHZW5lcmF0b3JGcmFt
ZShFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqLCBpbnQzMl90KSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxTdHJpY3QoRXhlY1N0YXRlKiwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRQcm9wZXJ0eSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uUHV0QnlWYWxOb25TdHJpY3QoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRQcm9wZXJ0eSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlKSBXVEZfSU5URVJOQUw7CiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
UHV0QnlWYWxDZWxsU3RyaWN0KEV4ZWNTdGF0ZSosIEpTQ2VsbCosIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRQcm9wZXJ0eSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKSBXVEZfSU5URVJOQUw7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9w
YWdhdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlv
blByb3BhZ2F0aW9uUGhhc2UuY3BwCmluZGV4IGEyZGJlNDQ0YjZlZDM3MWIwMDU5YzM4MGE4N2Rk
YTljNjE2N2MzZTkuLmNjMDA3NDI1N2JlY2E4NjNhMzE0NzJlNDRkMjQwN2QzODVlZGIyODEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0
aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlv
blByb3BhZ2F0aW9uUGhhc2UuY3BwCkBAIC0xNjgsNiArMTY4LDI0IEBAIGNsYXNzIFByZWRpY3Rp
b25Qcm9wYWdhdGlvblBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAKKyAgICAgICAgY2FzZSBTZXRHZW5lcmF0b3JMb2NhbDogeworICAgICAgICAg
ICAgR2VuZXJhdG9yTG9jYWxEYXRhKiBnZW5lcmF0b3JMb2NhbERhdGEgPSBub2RlLT5nZW5lcmF0
b3JMb2NhbERhdGEoKTsKKyAgICAgICAgICAgIGNoYW5nZWQgfD0gZ2VuZXJhdG9yTG9jYWxEYXRh
LT5wcmVkaWN0KG5vZGUtPmNoaWxkMigpLT5wcmVkaWN0aW9uKCkpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKworICAgICAgICBjYXNlIEdldEdlbmVyYXRvckxvY2FsOiB7CisgICAg
ICAgICAgICBHZW5lcmF0b3JMb2NhbERhdGEqIHZhcmlhYmxlID0gbm9kZS0+Z2VuZXJhdG9yTG9j
YWxEYXRhKCk7CisgICAgICAgICAgICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uID0gdmFyaWFi
bGUtPnByZWRpY3Rpb24oKTsKKyAgICAgICAgICAgIC8vIFdlIGFsd2F5cyBzdG9yZSB0aGUgdmFs
dWUgaW4gR2VuZXJhdG9yTG9jYWwgYXMgRm9ybWF0SlNWYWx1ZS4KKyAgICAgICAgICAgIC8vIFNv
IGRvdWJsZSB2YWx1ZSBpcyBiZXR0ZXIgdGhhbiBJbnQ1MiB2YWx1ZS4KKyAgICAgICAgICAgIGlm
IChlbmFibGVJbnQ1MigpICYmIChwcmVkaWN0aW9uICYgU3BlY0ludDUyT25seSkpCisgICAgICAg
ICAgICAgICAgcHJlZGljdGlvbiA9IChwcmVkaWN0aW9uIHwgU3BlY0FueUludEFzRG91YmxlKSAm
IH5TcGVjSW50NTJPbmx5OworICAgICAgICAgICAgaWYgKHByZWRpY3Rpb24pCisgICAgICAgICAg
ICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24ocHJlZGljdGlvbik7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQorCiAgICAgICAgIGNhc2UgVUludDMyVG9OdW1iZXI6IHsKICAg
ICAgICAgICAgIGlmIChub2RlLT5jYW5TcGVjdWxhdGVJbnQzMihtX3Bhc3MpKQogICAgICAgICAg
ICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNJbnQzMk9ubHkpOwpAQCAtODQ5
LDcgKzg2Nyw4IEBAIGNsYXNzIFByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlIDogcHVibGljIFBo
YXNlIHsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAKLSAgICAg
ICAgY2FzZSBDcmVhdGVBY3RpdmF0aW9uOiB7CisgICAgICAgIGNhc2UgQ3JlYXRlQWN0aXZhdGlv
bjoKKyAgICAgICAgY2FzZSBOZXdHZW5lcmF0b3JGcmFtZTogewogICAgICAgICAgICAgc2V0UHJl
ZGljdGlvbihTcGVjT2JqZWN0T3RoZXIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
QEAgLTEwNjQsNiArMTA4Myw3IEBAIGNsYXNzIFByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlIDog
cHVibGljIFBoYXNlIHsKICAgICAgICAgY2FzZSBGb3J3YXJkVmFyYXJnczoKICAgICAgICAgY2Fz
ZSBDb3B5UmVzdDoKICAgICAgICAgY2FzZSBQdXREeW5hbWljVmFyOgorICAgICAgICBjYXNlIFJl
c2l6ZUdlbmVyYXRvckxvY2FsczoKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCiAg
ICAgICAgIC8vIFRoaXMgZ2V0cyBpZ25vcmVkIGJlY2F1c2UgaXQgb25seSBwcmV0ZW5kcyB0byBw
cm9kdWNlIGEgdmFsdWUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NhZmVUb0V4ZWN1dGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhl
Y3V0ZS5oCmluZGV4IGMxYTNiYmUzZmZkYTc5YmEwNjdiZDcwNmRlNjRhY2EyNmYwN2ExNzguLjZh
NmRmN2Y3OGM5ZmVmNjU1N2ViYzg0NTMzZWRkZjNkZWIxYTQ3MGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCkBAIC0yNTAsNiArMjUwLDcgQEAgYm9v
bCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBoLCBO
b2RlKiBub2RlKQogICAgIGNhc2UgTmV3QXJyYXlXaXRoU2l6ZToKICAgICBjYXNlIE5ld0FycmF5
QnVmZmVyOgogICAgIGNhc2UgTmV3UmVnZXhwOgorICAgIGNhc2UgTmV3R2VuZXJhdG9yRnJhbWU6
CiAgICAgY2FzZSBQcm9maWxlVHlwZToKICAgICBjYXNlIFByb2ZpbGVDb250cm9sRmxvdzoKICAg
ICBjYXNlIENoZWNrVHlwZUluZm9GbGFnczoKQEAgLTM0Niw2ICszNDcsOSBAQCBib29sIHNhZmVU
b0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgsIE5vZGUqIG5v
ZGUpCiAgICAgY2FzZSBHZXRNeUFyZ3VtZW50QnlWYWxPdXRPZkJvdW5kczoKICAgICBjYXNlIEZv
cndhcmRWYXJhcmdzOgogICAgIGNhc2UgQ29weVJlc3Q6CisgICAgY2FzZSBTZXRHZW5lcmF0b3JM
b2NhbDoKKyAgICBjYXNlIEdldEdlbmVyYXRvckxvY2FsOgorICAgIGNhc2UgUmVzaXplR2VuZXJh
dG9yTG9jYWxzOgogICAgIGNhc2UgU3RyaW5nUmVwbGFjZToKICAgICBjYXNlIFN0cmluZ1JlcGxh
Y2VSZWdFeHA6CiAgICAgY2FzZSBHZXRSZWdFeHBPYmplY3RMYXN0SW5kZXg6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4IGY3MzkxZGMy
ODAzMmFkNDI1ZWFjODgxMDhiMGY1ZGU1NWI5MTFlZGYuLmY4YzdiMmJhNGU2MDg1ZDc5YWY2ZmY5
YWUyM2U4YTQ4MzU3ZGU0NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuY3BwCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSAiREZHU2FuZVN0
cmluZ0dldEJ5VmFsU2xvd1BhdGhHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJERkdTbG93UGF0aEdl
bmVyYXRvci5oIgogI2luY2x1ZGUgIkRpcmVjdEFyZ3VtZW50cy5oIgorI2luY2x1ZGUgIkdlbmVy
YXRvckZyYW1lLmgiCiAjaW5jbHVkZSAiSklUQWRkR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiSklU
Qml0QW5kR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiSklUQml0T3JHZW5lcmF0b3IuaCIKQEAgLTY4
NzYsNiArNjg3Nyw0MiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3U3RyaW5nT2Jq
ZWN0KE5vZGUqIG5vZGUpCiAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogfQogCit2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3R2VuZXJhdG9yRnJhbWUoTm9kZSogbm9kZSkK
K3sKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9qaXQuZ3JhcGgoKS5nbG9i
YWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSA9IGdsb2JhbE9iamVjdC0+Z2VuZXJhdG9yRnJhbWVTdHJ1Y3R1cmUoKTsKKyAgICB1bnNp
Z25lZCBnZW5lcmF0b3JMb2NhbHNTaXplID0gbm9kZS0+Z2VuZXJhdG9yTG9jYWxzU2l6ZSgpOwor
CisgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKyAgICBHUFJUZW1wb3Jhcnkgc2NyYXRj
aDEodGhpcyk7CisgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2gyKHRoaXMpOworCisgICAgR1BSUmVn
IHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKyAgICBHUFJSZWcgc2NyYXRjaDFHUFIgPSBzY3Jh
dGNoMS5ncHIoKTsKKyAgICBHUFJSZWcgc2NyYXRjaDJHUFIgPSBzY3JhdGNoMi5ncHIoKTsKKwor
ICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBzbG93UGF0aDsKKworICAgIGVtaXRBbGxvY2F0ZUpT
T2JqZWN0V2l0aEtub3duU2l6ZTxHZW5lcmF0b3JGcmFtZT4ocmVzdWx0R1BSLCBUcnVzdGVkSW1t
UHRyKHN0cnVjdHVyZSksIFRydXN0ZWRJbW1QdHIobnVsbHB0ciksIHNjcmF0Y2gxR1BSLCBzY3Jh
dGNoMkdQUiwgc2xvd1BhdGgsIEdlbmVyYXRvckZyYW1lOjphbGxvY2F0aW9uU2l6ZUZvckxvY2Fs
cyhnZW5lcmF0b3JMb2NhbHNTaXplKSk7CisgICAgbV9qaXQuc3RvcmUzMihUcnVzdGVkSW1tMzIo
Z2VuZXJhdG9yTG9jYWxzU2l6ZSksIEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgR2Vu
ZXJhdG9yRnJhbWU6Om51bWJlck9mQ2FsbGVlTG9jYWxzT2Zmc2V0KCkpKTsKKyAgICBtX2ppdC5z
dG9yZTMyKFRydXN0ZWRJbW0zMigwKSwgSklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBH
ZW5lcmF0b3JGcmFtZTo6bnVtYmVyT2ZTYXZlZENhbGxlZUxvY2Fsc09mZnNldCgpKSk7CisgICAg
SlNWYWx1ZSBlbXB0eVZhbHVlOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBnZW5lcmF0
b3JMb2NhbHNTaXplOyArK2kpCisgICAgICAgIG1faml0LnN0b3JlVHJ1c3RlZFZhbHVlKGVtcHR5
VmFsdWUsIEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgR2VuZXJhdG9yRnJhbWU6Omxv
Y2FsT2Zmc2V0KGkpKSk7CisKKyAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwo
c2xvd1BhdGgsIHRoaXMsIG9wZXJhdGlvbk5ld0dlbmVyYXRvckZyYW1lLCByZXN1bHRHUFIsIHN0
cnVjdHVyZSwgZ2VuZXJhdG9yTG9jYWxzU2l6ZSkpOworCisgICAgY2VsbFJlc3VsdChyZXN1bHRH
UFIsIG5vZGUpOworfQorCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUmVzaXplR2VuZXJh
dG9yTG9jYWxzKE5vZGUqIG5vZGUpCit7CisgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgZnJhbWUo
dGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgIEdQUlJlZyBmcmFtZUdQUiA9IGZyYW1lLmdwcigp
OworICAgIG1faml0LnN0b3JlMzIoVHJ1c3RlZEltbTMyKG5vZGUtPmdlbmVyYXRvckZyYW1lTG9j
YWxzKCkpLCBKSVRDb21waWxlcjo6QWRkcmVzcyhmcmFtZUdQUiwgR2VuZXJhdG9yRnJhbWU6Om51
bWJlck9mU2F2ZWRDYWxsZWVMb2NhbHNPZmZzZXQoKSkpOworICAgIG5vUmVzdWx0KG5vZGUpOwor
fQorCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3VHlwZWRBcnJheShOb2RlKiBub2Rl
KQogewogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2ppdC5ncmFwaCgpLmds
b2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCmluZGV4IGI3N2VhZDZjODFkMjUyNmMzZjA0
N2FkMDhiOGNlYjUyYTA2Y2RjNTMuLmNmMDJiODYxOTFiMDRkODVjMTAyMTc4NGU1YjU1YmY1YjM5
NThjOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmgKQEAgLTI1MjksNiArMjUyOSw4IEBAIGNsYXNzIFNwZWN1bGF0aXZlSklUIHsKICAgICB2b2lk
IGNvbXBpbGVQdXRCeVZhbEZvckZsb2F0VHlwZWRBcnJheShHUFJSZWcgYmFzZSwgR1BSUmVnIHBy
b3BlcnR5LCBOb2RlKiwgVHlwZWRBcnJheVR5cGUpOwogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBD
bGFzc1R5cGU+IHZvaWQgY29tcGlsZU5ld0Z1bmN0aW9uQ29tbW9uKEdQUlJlZywgU3RydWN0dXJl
KiwgR1BSUmVnLCBHUFJSZWcsIEdQUlJlZywgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0Jiwgc2l6
ZV90LCBGdW5jdGlvbkV4ZWN1dGFibGUqLCBwdHJkaWZmX3QsIHB0cmRpZmZfdCwgcHRyZGlmZl90
KTsKICAgICB2b2lkIGNvbXBpbGVOZXdGdW5jdGlvbihOb2RlKik7CisgICAgdm9pZCBjb21waWxl
TmV3R2VuZXJhdG9yRnJhbWUoTm9kZSopOworICAgIHZvaWQgY29tcGlsZVJlc2l6ZUdlbmVyYXRv
ckxvY2FscyhOb2RlKik7CiAgICAgdm9pZCBjb21waWxlU2V0RnVuY3Rpb25OYW1lKE5vZGUqKTsK
ICAgICB2b2lkIGNvbXBpbGVGb3J3YXJkVmFyYXJncyhOb2RlKik7CiAgICAgdm9pZCBjb21waWxl
Q3JlYXRlQWN0aXZhdGlvbihOb2RlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAppbmRleCA3NDZjNDA5NjA1OTRmODE5ZWVk
Zjc0MDkxZDNjN2IzNTc4NjkzY2QxLi44N2MyYjQ5NGUxMTgwNDRmYTQ1YTYzNDg3MDlkZDZmMWE0
N2U5MDY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklUMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQzMl82NC5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJERkdTbG93UGF0
aEdlbmVyYXRvci5oIgogI2luY2x1ZGUgIkRlYnVnZ2VyLmgiCiAjaW5jbHVkZSAiRGlyZWN0QXJn
dW1lbnRzLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yRnJhbWUuaCIKICNpbmNsdWRlICJHZXR0ZXJT
ZXR0ZXIuaCIKICNpbmNsdWRlICJKU0Vudmlyb25tZW50UmVjb3JkLmgiCiAjaW5jbHVkZSAiSlNM
ZXhpY2FsRW52aXJvbm1lbnQuaCIKQEAgLTQwMTcsNiArNDAxOCwxMSBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGNvbXBpbGVDYWxsT2JqZWN0Q29u
c3RydWN0b3Iobm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KKworICAgIGNhc2UgTmV3R2Vu
ZXJhdG9yRnJhbWU6IHsKKyAgICAgICAgY29tcGlsZU5ld0dlbmVyYXRvckZyYW1lKG5vZGUpOwor
ICAgICAgICBicmVhazsKKyAgICB9CiAgICAgICAgIAogICAgIGNhc2UgVG9UaGlzOiB7CiAgICAg
ICAgIEFTU0VSVChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSk7CkBAIC01
MTc0LDYgKzUxODAsNDEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2Rl
KQogICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiAgICAgICAgIGJyZWFrOwog
ICAgIH0KKyAgICBjYXNlIFNldEdlbmVyYXRvckxvY2FsOiB7CisgICAgICAgIFNwZWN1bGF0ZUNl
bGxPcGVyYW5kIGZyYW1lKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgSlNWYWx1ZU9w
ZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQyKCkpOworCisgICAgICAgIEdQUlJlZyBmcmFt
ZUdQUiA9IGZyYW1lLmdwcigpOworICAgICAgICBHUFJSZWcgdmFsdWVUYWdHUFIgPSB2YWx1ZS50
YWdHUFIoKTsKKyAgICAgICAgR1BSUmVnIHZhbHVlUGF5bG9hZEdQUiA9IHZhbHVlLnBheWxvYWRH
UFIoKTsKKyAgICAgICAgdW5zaWduZWQgZ2VuZXJhdG9yTG9jYWxJbmRleCA9IG5vZGUtPmdlbmVy
YXRvckxvY2FsSW5kZXgoKTsKKworICAgICAgICBtX2ppdC5zdG9yZTMyKHZhbHVlVGFnR1BSLCBK
SVRDb21waWxlcjo6QWRkcmVzcyhmcmFtZUdQUiwgR2VuZXJhdG9yRnJhbWU6OmxvY2FsT2Zmc2V0
KGdlbmVyYXRvckxvY2FsSW5kZXgpICsgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRz
LnRhZykpKTsKKyAgICAgICAgbV9qaXQuc3RvcmUzMih2YWx1ZVBheWxvYWRHUFIsIEpJVENvbXBp
bGVyOjpBZGRyZXNzKGZyYW1lR1BSLCBHZW5lcmF0b3JGcmFtZTo6bG9jYWxPZmZzZXQoZ2VuZXJh
dG9yTG9jYWxJbmRleCkgKyBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMucGF5bG9h
ZCkpKTsKKworICAgICAgICBub1Jlc3VsdChub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQor
ICAgIGNhc2UgR2V0R2VuZXJhdG9yTG9jYWw6IHsKKyAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJh
bmQgZnJhbWUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBHUFJUZW1wb3JhcnkgcmVz
dWx0VGFnKHRoaXMpOworICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0UGF5bG9hZCh0aGlzKTsK
KworICAgICAgICBHUFJSZWcgZnJhbWVHUFIgPSBmcmFtZS5ncHIoKTsKKyAgICAgICAgR1BSUmVn
IHJlc3VsdFRhZ0dQUiA9IHJlc3VsdFRhZy5ncHIoKTsKKyAgICAgICAgR1BSUmVnIHJlc3VsdFBh
eWxvYWRHUFIgPSByZXN1bHRQYXlsb2FkLmdwcigpOworICAgICAgICB1bnNpZ25lZCBnZW5lcmF0
b3JMb2NhbEluZGV4ID0gbm9kZS0+Z2VuZXJhdG9yTG9jYWxJbmRleCgpOworCisgICAgICAgIG1f
aml0LmxvYWQzMihKSVRDb21waWxlcjo6QWRkcmVzcyhmcmFtZUdQUiwgR2VuZXJhdG9yRnJhbWU6
OmxvY2FsT2Zmc2V0KGdlbmVyYXRvckxvY2FsSW5kZXgpICsgT0JKRUNUX09GRlNFVE9GKEpTVmFs
dWUsIHUuYXNCaXRzLnRhZykpLCByZXN1bHRUYWdHUFIpOworICAgICAgICBtX2ppdC5sb2FkMzIo
SklUQ29tcGlsZXI6OkFkZHJlc3MoZnJhbWVHUFIsIEdlbmVyYXRvckZyYW1lOjpsb2NhbE9mZnNl
dChnZW5lcmF0b3JMb2NhbEluZGV4KSArIE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0
cy5wYXlsb2FkKSksIHJlc3VsdFBheWxvYWRHUFIpOworCisgICAgICAgIGpzVmFsdWVSZXN1bHQo
cmVzdWx0VGFnR1BSLCByZXN1bHRQYXlsb2FkR1BSLCBub2RlKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQorICAgIGNhc2UgUmVzaXplR2VuZXJhdG9yTG9jYWxzOiB7CisgICAgICAgIGNvbXBpbGVS
ZXNpemVHZW5lcmF0b3JMb2NhbHMobm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICBj
YXNlIFByb2ZpbGVUeXBlOiB7CiAgICAgICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5v
ZGUtPmNoaWxkMSgpKTsKICAgICAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2gxKHRoaXMpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKaW5k
ZXggMjRkNmUzMjc4MGJkMzI0MWMzZmZiZTc1ZTlkY2Y0ZWE3YjI2NTE1YS4uMDQ3MjM1MzRmNTVl
OTYyZDAwMWY1NWY5MmFkNjVlZWQwOGZiODQzOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5j
bHVkZSAiREZHU2xvd1BhdGhHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJEZWJ1Z2dlci5oIgogI2lu
Y2x1ZGUgIkRpcmVjdEFyZ3VtZW50cy5oIgorI2luY2x1ZGUgIkdlbmVyYXRvckZyYW1lLmgiCiAj
aW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1
ZGUgIkpTRW52aXJvbm1lbnRSZWNvcmQuaCIKQEAgLTM5NTUsNiArMzk1NiwxMSBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGJyZWFrOwogICAgIH0K
IAorICAgIGNhc2UgTmV3R2VuZXJhdG9yRnJhbWU6IHsKKyAgICAgICAgY29tcGlsZU5ld0dlbmVy
YXRvckZyYW1lKG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgICAgIAogICAgIGNh
c2UgVG9UaGlzOiB7CiAgICAgICAgIEFTU0VSVChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0g
VW50eXBlZFVzZSk7CiAgICAgICAgIEpTVmFsdWVPcGVyYW5kIHRoaXNWYWx1ZSh0aGlzLCBub2Rl
LT5jaGlsZDEoKSk7CkBAIC01MDk5LDYgKzUxMDUsMzUgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7
CiAgICAgICAgIGJyZWFrOwogICAgIH0KKyAgICBjYXNlIFNldEdlbmVyYXRvckxvY2FsOiB7Cisg
ICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGZyYW1lKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsK
KyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQyKCkpOworCisg
ICAgICAgIEdQUlJlZyBmcmFtZUdQUiA9IGZyYW1lLmdwcigpOworICAgICAgICBHUFJSZWcgdmFs
dWVHUFIgPSB2YWx1ZS5ncHIoKTsKKyAgICAgICAgdW5zaWduZWQgZ2VuZXJhdG9yTG9jYWxJbmRl
eCA9IG5vZGUtPmdlbmVyYXRvckxvY2FsSW5kZXgoKTsKKworICAgICAgICBtX2ppdC5zdG9yZTY0
KHZhbHVlR1BSLCBKSVRDb21waWxlcjo6QWRkcmVzcyhmcmFtZUdQUiwgR2VuZXJhdG9yRnJhbWU6
OmxvY2FsT2Zmc2V0KGdlbmVyYXRvckxvY2FsSW5kZXgpKSk7CisKKyAgICAgICAgbm9SZXN1bHQo
bm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIEdldEdlbmVyYXRvckxvY2Fs
OiB7CisgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGZyYW1lKHRoaXMsIG5vZGUtPmNoaWxk
MSgpKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKworICAgICAgICBHUFJS
ZWcgZnJhbWVHUFIgPSBmcmFtZS5ncHIoKTsKKyAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJl
c3VsdC5ncHIoKTsKKyAgICAgICAgdW5zaWduZWQgZ2VuZXJhdG9yTG9jYWxJbmRleCA9IG5vZGUt
PmdlbmVyYXRvckxvY2FsSW5kZXgoKTsKKworICAgICAgICBtX2ppdC5sb2FkNjQoSklUQ29tcGls
ZXI6OkFkZHJlc3MoZnJhbWVHUFIsIEdlbmVyYXRvckZyYW1lOjpsb2NhbE9mZnNldChnZW5lcmF0
b3JMb2NhbEluZGV4KSksIHJlc3VsdEdQUik7CisgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0
R1BSLCBub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgUmVzaXplR2VuZXJh
dG9yTG9jYWxzOiB7CisgICAgICAgIGNvbXBpbGVSZXNpemVHZW5lcmF0b3JMb2NhbHMobm9kZSk7
CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICBjYXNlIFByb2ZpbGVUeXBlOiB7CiAgICAgICAg
IEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgR1BS
VGVtcG9yYXJ5IHNjcmF0Y2gxKHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcAppbmRleCBiNjMx
MjA5ZThkMTcyNjhkMDlhM2UwNzc4MmQ3OGM5MzQ2MmQwYmZjLi5jOTM3YmQ5ZDI3MTNiNGU5OGE1
NDNhYmVlZjc3N2ZhMjI3MGI3ZWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1N0b3JlQmFycmllckluc2VydGlvblBoYXNlLmNwcApAQCAtMjgzLDYg
KzI4MywxMSBAQCBjbGFzcyBTdG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZSA6IHB1YmxpYyBQaGFz
ZSB7CiAgICAgICAgICAgICAgICAgY29uc2lkZXJCYXJyaWVyKG1fbm9kZS0+Y2hpbGQxKCksIG1f
bm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQor
CisgICAgICAgICAgICBjYXNlIFNldEdlbmVyYXRvckxvY2FsOiB7CisgICAgICAgICAgICAgICAg
Y29uc2lkZXJCYXJyaWVyKG1fbm9kZS0+Y2hpbGQxKCksIG1fbm9kZS0+Y2hpbGQyKCkpOworICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIAogICAg
ICAgICAgICAgY2FzZSBTZXRGdW5jdGlvbk5hbWU6IHsKICAgICAgICAgICAgICAgICBjb25zaWRl
ckJhcnJpZXIobV9ub2RlLT5jaGlsZDEoKSwgbV9ub2RlLT5jaGlsZDIoKSk7CkBAIC0zMDMsNiAr
MzA4LDcgQEAgY2xhc3MgU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2Ug
ewogICAgICAgICAgICAgY2FzZSBOZXdBcnJheUJ1ZmZlcjoKICAgICAgICAgICAgIGNhc2UgTmV3
VHlwZWRBcnJheToKICAgICAgICAgICAgIGNhc2UgTmV3UmVnZXhwOgorICAgICAgICAgICAgY2Fz
ZSBOZXdHZW5lcmF0b3JGcmFtZToKICAgICAgICAgICAgIGNhc2UgTWF0ZXJpYWxpemVOZXdPYmpl
Y3Q6CiAgICAgICAgICAgICBjYXNlIE1hdGVyaWFsaXplQ3JlYXRlQWN0aXZhdGlvbjoKICAgICAg
ICAgICAgIGNhc2UgTmV3U3RyaW5nT2JqZWN0OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVSZWdpc3RyYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlLmNwcAppbmRleCA1
MWNmNDg5NjBhOGIxZmY1NzJhODY5ZWFlMThiZjBhOWY1YTI3OWRkLi4wMGQxOThjMzkwOTUzNjVj
ZTc4NjJmNzZiMTdmNTNiZTQ2NWI5MjhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlLmNwcApAQCAtMTM1
LDYgKzEzNSw5IEBAIGNsYXNzIFN0cnVjdHVyZVJlZ2lzdHJhdGlvblBoYXNlIDogcHVibGljIFBo
YXNlIHsKICAgICAgICAgICAgICAgICBjYXNlIENyZWF0ZURpcmVjdEFyZ3VtZW50czoKICAgICAg
ICAgICAgICAgICAgICAgcmVnaXN0ZXJTdHJ1Y3R1cmUobV9ncmFwaC5nbG9iYWxPYmplY3RGb3Io
bm9kZS0+b3JpZ2luLnNlbWFudGljKS0+ZGlyZWN0QXJndW1lbnRzU3RydWN0dXJlKCkpOwogICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIE5ld0dlbmVyYXRv
ckZyYW1lOgorICAgICAgICAgICAgICAgICAgICByZWdpc3RlclN0cnVjdHVyZShtX2dyYXBoLmds
b2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5nZW5lcmF0b3JGcmFtZVN0cnVj
dHVyZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAg
IAogICAgICAgICAgICAgICAgIGNhc2UgQ3JlYXRlU2NvcGVkQXJndW1lbnRzOgogICAgICAgICAg
ICAgICAgICAgICByZWdpc3RlclN0cnVjdHVyZShtX2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2Rl
LT5vcmlnaW4uc2VtYW50aWMpLT5zY29wZWRBcmd1bWVudHNTdHJ1Y3R1cmUoKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnku
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5
LmNwcAppbmRleCBhNGI1NDM3ZTk3YzQ3ZjhmZjNmZWVkYzFlZTkwZjYwNzdhYjVmZjA1Li5iMWIy
ZmVjY2UzYWY5OTQ0YWZkMWM2M2E0YjMwZTBiMDcyZTk5NzI3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAKQEAg
LTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJCM1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkRp
cmVjdEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIkZUTFN0YXRlLmgiCisjaW5jbHVkZSAiR2VuZXJh
dG9yRnJhbWUuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJKU0Vudmly
b25tZW50UmVjb3JkLmgiCiAjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmgiCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9z
aXRvcnkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3Np
dG9yeS5oCmluZGV4IDIxMjU4MGZkYWI3YWRiYmMxNWY1NTg4YjVlNTNjMzcyZjI4OWE1MmEuLjJm
ZWVkNmI2NzA4ZTYzNzlmOTMyNDQ1NDQyYWFkNTI5MmUwNjcxZWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCkBAIC00
OCw2ICs0OCw4IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRlRMIHsKICAgICBtYWNybyhE
aXJlY3RBcmd1bWVudHNfbGVuZ3RoLCBEaXJlY3RBcmd1bWVudHM6Om9mZnNldE9mTGVuZ3RoKCkp
IFwKICAgICBtYWNybyhEaXJlY3RBcmd1bWVudHNfbWluQ2FwYWNpdHksIERpcmVjdEFyZ3VtZW50
czo6b2Zmc2V0T2ZNaW5DYXBhY2l0eSgpKSBcCiAgICAgbWFjcm8oRGlyZWN0QXJndW1lbnRzX292
ZXJyaWRlcywgRGlyZWN0QXJndW1lbnRzOjpvZmZzZXRPZk92ZXJyaWRlcygpKSBcCisgICAgbWFj
cm8oR2VuZXJhdG9yRnJhbWVfbnVtYmVyT2ZDYWxsZWVMb2NhbHMsIEdlbmVyYXRvckZyYW1lOjpu
dW1iZXJPZkNhbGxlZUxvY2Fsc09mZnNldCgpKSBcCisgICAgbWFjcm8oR2VuZXJhdG9yRnJhbWVf
bnVtYmVyT2ZTYXZlZENhbGxlZUxvY2FscywgR2VuZXJhdG9yRnJhbWU6Om51bWJlck9mU2F2ZWRD
YWxsZWVMb2NhbHNPZmZzZXQoKSkgXAogICAgIG1hY3JvKEdldHRlclNldHRlcl9nZXR0ZXIsIEdl
dHRlclNldHRlcjo6b2Zmc2V0T2ZHZXR0ZXIoKSkgXAogICAgIG1hY3JvKEdldHRlclNldHRlcl9z
ZXR0ZXIsIEdldHRlclNldHRlcjo6b2Zmc2V0T2ZTZXR0ZXIoKSkgXAogICAgIG1hY3JvKEpTQXJy
YXlCdWZmZXJWaWV3X2xlbmd0aCwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkp
IFwKQEAgLTEwNyw2ICsxMDksNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEZUTCB7CiAK
ICNkZWZpbmUgRk9SX0VBQ0hfSU5ERVhFRF9BQlNUUkFDVF9IRUFQKG1hY3JvKSBcCiAgICAgbWFj
cm8oRGlyZWN0QXJndW1lbnRzX3N0b3JhZ2UsIERpcmVjdEFyZ3VtZW50czo6c3RvcmFnZU9mZnNl
dCgpLCBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKSBcCisgICAgbWFjcm8oR2VuZXJhdG9yRnJhbWVf
Y2FsbGVlTG9jYWxzLCBHZW5lcmF0b3JGcmFtZTo6b2Zmc2V0T2ZMb2NhbHMoKSwgc2l6ZW9mKFdy
aXRlQmFycmllcjxVbmtub3duPikpIFwKICAgICBtYWNybyhKU0Vudmlyb25tZW50UmVjb3JkX3Zh
cmlhYmxlcywgSlNFbnZpcm9ubWVudFJlY29yZDo6b2Zmc2V0T2ZWYXJpYWJsZXMoKSwgc2l6ZW9m
KEVuY29kZWRKU1ZhbHVlKSkgXAogICAgIG1hY3JvKEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcl9j
YWNoZWRQcm9wZXJ0eU5hbWVzVmVjdG9yQ29udGVudHMsIDAsIHNpemVvZihXcml0ZUJhcnJpZXI8
SlNTdHJpbmc+KSkgXAogICAgIG1hY3JvKEpTUm9wZVN0cmluZ19maWJlcnMsIEpTUm9wZVN0cmlu
Zzo6b2Zmc2V0T2ZGaWJlcnMoKSwgc2l6ZW9mKFdyaXRlQmFycmllcjxKU1N0cmluZz4pKSBcCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKaW5kZXggZWQ3
ODRiZjEwZTU4ODc2NzI0NWJkYmRmM2I1MzEzODMwNjYwODY1Mi4uZjk2NzkwYzg1ZjI2ZDdkNTc2
ZDJlNGViMjEwMjg1NzdhMDE0ZTVkNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMQ2FwYWJpbGl0aWVzLmNwcApAQCAtNzIsNiArNzIsNyBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxl
dmVsIGNhbkNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNlIE5ld09iamVjdDoKICAgICBjYXNl
IE5ld0FycmF5OgogICAgIGNhc2UgTmV3QXJyYXlCdWZmZXI6CisgICAgY2FzZSBOZXdHZW5lcmF0
b3JGcmFtZToKICAgICBjYXNlIE5ld1R5cGVkQXJyYXk6CiAgICAgY2FzZSBHZXRCeU9mZnNldDoK
ICAgICBjYXNlIEdldEdldHRlclNldHRlckJ5T2Zmc2V0OgpAQCAtMjMwLDYgKzIzMSw5IEBAIGlu
bGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgUHV0
U2V0dGVyQnlWYWw6CiAgICAgY2FzZSBDb3B5UmVzdDoKICAgICBjYXNlIEdldFJlc3RMZW5ndGg6
CisgICAgY2FzZSBTZXRHZW5lcmF0b3JMb2NhbDoKKyAgICBjYXNlIEdldEdlbmVyYXRvckxvY2Fs
OgorICAgIGNhc2UgUmVzaXplR2VuZXJhdG9yTG9jYWxzOgogICAgIGNhc2UgUmVnRXhwRXhlYzoK
ICAgICBjYXNlIFJlZ0V4cFRlc3Q6CiAgICAgY2FzZSBOZXdSZWdleHA6CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdGUtYnl0ZWNvZGUtZmlsZXMgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZ2VuZXJhdGUtYnl0ZWNvZGUtZmlsZXMKaW5kZXggNTY2NmEzZjkyNGMxMTli
MjE2ZDNmZjBmZmU5YzY3MmI3YzcxYmI3OS4uZmFjZmRmMTMzMTQ4NzA3YTMzMzUzNTc2MmJlNzgz
MDRjNGI1MGIxZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRlLWJ5
dGVjb2RlLWZpbGVzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0ZS1ieXRlY29k
ZS1maWxlcwpAQCAtMTg3LDYgKzE4Nyw3IEBAIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAg
ICAgICAgICAgICAgICAgZGVmYXVsdExlbmd0aCA9IHNlY3Rpb25bImRlZmF1bHRMZW5ndGgiXQog
CiAgICAgICAgICAgICBieXRlY29kZU51bSA9IDAKKyAgICAgICAgICAgIG1heExlbmd0aCA9IDAK
ICAgICAgICAgICAgIGZvciBieXRlY29kZSBpbiBzZWN0aW9uWyJieXRlY29kZXMiXToKICAgICAg
ICAgICAgICAgICBpZiBub3QgZmlyc3RNYWNybzoKICAgICAgICAgICAgICAgICAgICAgYnl0ZWNv
ZGVIRmlsZS53cml0ZSgiIFxcXG4iKQpAQCAtMTk0LDYgKzE5NSw3IEBAIGlmIF9fbmFtZV9fID09
ICJfX21haW5fXyI6CiAgICAgICAgICAgICAgICAgbGVuZ3RoID0gZGVmYXVsdExlbmd0aAogICAg
ICAgICAgICAgICAgIGlmICJsZW5ndGgiIGluIGJ5dGVjb2RlOgogICAgICAgICAgICAgICAgICAg
ICBsZW5ndGggPSBieXRlY29kZVsibGVuZ3RoIl0KKyAgICAgICAgICAgICAgICAgICAgbWF4TGVu
Z3RoID0gbWF4KFtsZW5ndGgsIG1heExlbmd0aF0pCiAKICAgICAgICAgICAgICAgICBieXRlY29k
ZUhGaWxlLndyaXRlKCIgICAgbWFjcm8oezB9LCB7MX0pIi5mb3JtYXQoYnl0ZWNvZGVbIm5hbWUi
XSwgbGVuZ3RoKSkKICAgICAgICAgICAgICAgICBmaXJzdE1hY3JvID0gRmFsc2UKQEAgLTIwMSw2
ICsyMDMsNyBAQCBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogCiAgICAgICAgICAgICBieXRl
Y29kZUhGaWxlLndyaXRlKCJcblxuIikKICAgICAgICAgICAgIGJ5dGVjb2RlSEZpbGUud3JpdGUo
IiNkZWZpbmUgTlVNQkVSX09GX3swfV9JRFMgezF9XG5cbiIuZm9ybWF0KHNlY3Rpb25bIm1hY3Jv
TmFtZUNvbXBvbmVudCJdLCBieXRlY29kZU51bSkpCisgICAgICAgICAgICBieXRlY29kZUhGaWxl
LndyaXRlKCIjZGVmaW5lIE1BWF9PUENPREVfTEVOR1RIX09GX3swfSB7MX1cblxuIi5mb3JtYXQo
c2VjdGlvblsibWFjcm9OYW1lQ29tcG9uZW50Il0sIG1heExlbmd0aCkpCiAKICAgICAgICAgaWYg
aW5pdEFTTUZpbGVOYW1lIGFuZCBzZWN0aW9uWydlbWl0SW5BU01GaWxlJ106CiAgICAgICAgICAg
ICBwcmVmaXggPSAiIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL0ludGVycHJldGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9J
bnRlcnByZXRlci5jcHAKaW5kZXggNzRmOGM1M2UxMjFjNTUzOGZiNTRlN2RmNDU5NjlhYzczNDA4
MDY3OS4uNjMyYjIyOWNkOGUyZmNmY2IzYTYyZDE0OTExODg3NjhiZjk0MDI0MiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCkBAIC02
MDcsNyArNjA3LDcgQEAgSlNTdHJpbmcqIEludGVycHJldGVyOjpzdGFja1RyYWNlQXNTdHJpbmco
Vk0mIHZtLCBjb25zdCBWZWN0b3I8U3RhY2tGcmFtZT4mIHN0YWMKICAgICByZXR1cm4ganNTdHJp
bmcoJnZtLCBidWlsZGVyLnRvU3RyaW5nKCkpOwogfQogCi1BTFdBWVNfSU5MSU5FIHN0YXRpYyBI
YW5kbGVySW5mbyogZmluZEV4Y2VwdGlvbkhhbmRsZXIoU3RhY2tWaXNpdG9yJiB2aXNpdG9yLCBD
b2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZUJsb2NrOjpSZXF1aXJlZEhhbmRsZXIgcmVxdWlyZWRI
YW5kbGVyKQorQUxXQVlTX0lOTElORSBzdGF0aWMgSGFuZGxlckluZm8qIGZpbmRFeGNlcHRpb25I
YW5kbGVyKFN0YWNrVmlzaXRvciYgdmlzaXRvciwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFJlcXVp
cmVkSGFuZGxlciByZXF1aXJlZEhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKGNvZGVCbG9jayk7CiAj
aWYgRU5BQkxFKERGR19KSVQpCkBAIC02NDEsNyArNjQxLDcgQEAgY2xhc3MgR2V0Q2F0Y2hIYW5k
bGVyRnVuY3RvciB7CiAgICAgICAgIGlmICghY29kZUJsb2NrKQogICAgICAgICAgICAgcmV0dXJu
IFN0YWNrVmlzaXRvcjo6Q29udGludWU7CiAKLSAgICAgICAgbV9oYW5kbGVyID0gZmluZEV4Y2Vw
dGlvbkhhbmRsZXIodmlzaXRvciwgY29kZUJsb2NrLCBDb2RlQmxvY2s6OlJlcXVpcmVkSGFuZGxl
cjo6Q2F0Y2hIYW5kbGVyKTsKKyAgICAgICAgbV9oYW5kbGVyID0gZmluZEV4Y2VwdGlvbkhhbmRs
ZXIodmlzaXRvciwgY29kZUJsb2NrLCBSZXF1aXJlZEhhbmRsZXI6OkNhdGNoSGFuZGxlcik7CiAg
ICAgICAgIGlmIChtX2hhbmRsZXIpCiAgICAgICAgICAgICByZXR1cm4gU3RhY2tWaXNpdG9yOjpE
b25lOwogCkBAIC02ODMsNyArNjgzLDcgQEAgY2xhc3MgVW53aW5kRnVuY3RvciB7CiAgICAgICAg
IG1faGFuZGxlciA9IG51bGxwdHI7CiAgICAgICAgIGlmICghbV9pc1Rlcm1pbmF0aW9uKSB7CiAg
ICAgICAgICAgICBpZiAobV9jb2RlQmxvY2sgJiYgIWlzV2ViQXNzZW1ibHlFeGVjdXRhYmxlKG1f
Y29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSkpCi0gICAgICAgICAgICAgICAgbV9oYW5kbGVy
ID0gZmluZEV4Y2VwdGlvbkhhbmRsZXIodmlzaXRvciwgbV9jb2RlQmxvY2ssIENvZGVCbG9jazo6
UmVxdWlyZWRIYW5kbGVyOjpBbnlIYW5kbGVyKTsKKyAgICAgICAgICAgICAgICBtX2hhbmRsZXIg
PSBmaW5kRXhjZXB0aW9uSGFuZGxlcih2aXNpdG9yLCBtX2NvZGVCbG9jaywgUmVxdWlyZWRIYW5k
bGVyOjpBbnlIYW5kbGVyKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChtX2hhbmRsZXIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKaW5kZXggNTQ2ZTJhZTE2ZjU0MTFkMmFlMTA1Y2MwMDBm
NmYxMGQyOGY3OWVmZC4uMzhjOTkxOTg1ZTgxODAwNGVhMDNkYjQyZDNjZTIxNGFjMWIwZmQ2NCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcApAQCAtMjM3LDYgKzIzNyw3IEBAIHZvaWQgSklU
Ojpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgREVGSU5FX09QKG9wX2Fzc2VydCkK
ICAgICAgICAgREVGSU5FX09QKG9wX3NhdmUpCiAgICAgICAgIERFRklORV9PUChvcF9yZXN1bWUp
CisgICAgICAgIERFRklORV9PUChvcF9uZXdfZ2VuZXJhdG9yX2ZyYW1lKQogICAgICAgICBERUZJ
TkVfT1Aob3BfZGVidWcpCiAgICAgICAgIERFRklORV9PUChvcF9kZWxfYnlfaWQpCiAgICAgICAg
IERFRklORV9PUChvcF9kZWxfYnlfdmFsKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKaW5kZXggMzQ1
MWIyM2ZkODU0YzFhNThmZDRjOTg3YmJjMmIyYTc5YWM4M2U1Yy4uYTk1Yjk1YzBmNDFjOWJjNmFl
NWYxNjc1ZmQzZjBjYmM1MDlkYTAwMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCkBAIC0zMzks
NiArMzM5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGVudW0gV3JpdGVCYXJyaWVyTW9k
ZSB7IFVuY29uZGl0aW9uYWxXcml0ZUJhcnJpZXIsIFNob3VsZEZpbHRlckJhc2UsIFNob3VsZEZp
bHRlclZhbHVlLCBTaG91bGRGaWx0ZXJCYXNlQW5kVmFsdWUgfTsKICAgICAgICAgLy8gdmFsdWUg
cmVnaXN0ZXIgaW4gd3JpdGUgYmFycmllciBpcyB1c2VkIGJlZm9yZSBhbnkgc2NyYXRjaCByZWdp
c3RlcnMKICAgICAgICAgLy8gc28gbWF5IHNhZmVseSBiZSB0aGUgc2FtZSBhcyBlaXRoZXIgb2Yg
dGhlIHNjcmF0Y2ggcmVnaXN0ZXJzLgorICAgICAgICB2b2lkIGVtaXRXcml0ZUJhcnJpZXIodW5z
aWduZWQgb3duZXIsIFdyaXRlQmFycmllck1vZGUpOwogICAgICAgICB2b2lkIGVtaXRXcml0ZUJh
cnJpZXIodW5zaWduZWQgb3duZXIsIHVuc2lnbmVkIHZhbHVlLCBXcml0ZUJhcnJpZXJNb2RlKTsK
ICAgICAgICAgdm9pZCBlbWl0V3JpdGVCYXJyaWVyKEpTQ2VsbCogb3duZXIsIHVuc2lnbmVkIHZh
bHVlLCBXcml0ZUJhcnJpZXJNb2RlKTsKICAgICAgICAgdm9pZCBlbWl0V3JpdGVCYXJyaWVyKEpT
Q2VsbCogb3duZXIpOwpAQCAtNTA0LDYgKzUwNSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICB2b2lkIGVtaXRfb3BfYXNzZXJ0KEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9v
cF9zYXZlKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9yZXN1bWUoSW5zdHJ1
Y3Rpb24qKTsKKyAgICAgICAgdm9pZCBlbWl0X29wX25ld19nZW5lcmF0b3JfZnJhbWUoSW5zdHJ1
Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2RlYnVnKEluc3RydWN0aW9uKik7CiAgICAg
ICAgIHZvaWQgZW1pdF9vcF9kZWxfYnlfaWQoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBl
bWl0X29wX2RlbF9ieV92YWwoSW5zdHJ1Y3Rpb24qKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wY29kZXMuY3BwCmluZGV4IGM0NDM5MWMwOTMwZTU1MWUxOWZkMzQ1N2ZhMWE3OGFmMGQ5
ZTJiNWUuLjc1MTIxYmQzMGZiZGNkYzQ1ODRmZGZmZmMxZDExM2U0NzhkZWRjZDcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2lu
Y2x1ZGUgIkNvcGllZFNwYWNlSW5saW5lcy5oIgogI2luY2x1ZGUgIkRlYnVnZ2VyLmgiCiAjaW5j
bHVkZSAiRXhjZXB0aW9uLmgiCisjaW5jbHVkZSAiR2VuZXJhdG9yRnJhbWUuaCIKICNpbmNsdWRl
ICJIZWFwLmgiCiAjaW5jbHVkZSAiSklUSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIK
QEAgLTkyMyw2ICs5MjQsNDkgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3RvX3N0cmluZyhJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2UKICAgICBzbG93UGF0
aENhbGwuY2FsbCgpOwogfQogCit2b2lkIEpJVDo6ZW1pdF9vcF9zYXZlKEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCit7CisgICAgaW50IGZyYW1lID0gY3VycmVudEluc3RydWN0aW9u
WzFdLnUub3BlcmFuZDsKKyAgICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSBjdXJy
ZW50SW5zdHJ1Y3Rpb25bMl0udS51bnNpZ25lZFZhbHVlOworICAgIGNvbnN0IEZhc3RCaXRWZWN0
b3ImIGxpdmVuZXNzID0gbV9jb2RlQmxvY2stPmxpdmVDYWxsZWVMb2NhbHNBdFlpZWxkKGxpdmVD
YWxsZWVMb2NhbHNJbmRleCk7CisKKyAgICAvLyBBIGZyYW1lIGlzIGFsd2F5cyBhIGNlbGwuIE5v
IG5lZWQgdG8gZmlsdGVyIG91dC4KKyAgICBlbWl0V3JpdGVCYXJyaWVyKGZyYW1lLCBVbmNvbmRp
dGlvbmFsV3JpdGVCYXJyaWVyKTsKKworICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoZnJhbWUs
IHJlZ1QxKTsKKworICAgIC8vIEFsbG9jYXRlIGdlbmVyYXRvciBmcmFtZSBsb2NhbHMuCisgICAg
c3RvcmUzMihUcnVzdGVkSW1tMzIobGl2ZW5lc3MuYml0Q291bnQoKSksIEFkZHJlc3MocmVnVDEs
IEdlbmVyYXRvckZyYW1lOjpudW1iZXJPZlNhdmVkQ2FsbGVlTG9jYWxzT2Zmc2V0KCkpKTsKKwor
ICAgIHVuc2lnbmVkIGdlbmVyYXRvckxvY2FsSW5kZXggPSAwOworICAgIGxpdmVuZXNzLmZvckVh
Y2hTZXRCaXQoWyZdKHNpemVfdCBsb2NhbCkgeworICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgb3Bl
cmFuZCA9IHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGxvY2FsKTsKKyAgICAgICAgZW1pdEdldFZp
cnR1YWxSZWdpc3RlcihvcGVyYW5kLm9mZnNldCgpLCByZWdUMCk7CisgICAgICAgIHN0b3JlNjQo
cmVnVDAsIEFkZHJlc3MocmVnVDEsIEdlbmVyYXRvckZyYW1lOjpsb2NhbE9mZnNldChnZW5lcmF0
b3JMb2NhbEluZGV4KSkpOworICAgICAgICBnZW5lcmF0b3JMb2NhbEluZGV4Kys7CisgICAgfSk7
Cit9CisKK3ZvaWQgSklUOjplbWl0X29wX3Jlc3VtZShJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQoreworICAgIGludCBmcmFtZSA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJh
bmQ7CisgICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gY3VycmVudEluc3RydWN0
aW9uWzJdLnUudW5zaWduZWRWYWx1ZTsKKyAgICBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlbmVz
cyA9IG1fY29kZUJsb2NrLT5saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZChsaXZlQ2FsbGVlTG9jYWxz
SW5kZXgpOworCisgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihmcmFtZSwgcmVnVDEpOworCisg
ICAgdW5zaWduZWQgZ2VuZXJhdG9yTG9jYWxJbmRleCA9IDA7CisgICAgbGl2ZW5lc3MuZm9yRWFj
aFNldEJpdChbJl0oc2l6ZV90IGxvY2FsKSB7CisgICAgICAgIFZpcnR1YWxSZWdpc3RlciBvcGVy
YW5kID0gdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwobG9jYWwpOworICAgICAgICBsb2FkNjQoQWRk
cmVzcyhyZWdUMSwgR2VuZXJhdG9yRnJhbWU6OmxvY2FsT2Zmc2V0KGdlbmVyYXRvckxvY2FsSW5k
ZXgpKSwgcmVnVDApOworICAgICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKG9wZXJhbmQub2Zm
c2V0KCkpOworICAgICAgICBnZW5lcmF0b3JMb2NhbEluZGV4Kys7CisgICAgfSk7CisKKyAgICAv
LyBEZWFsbG9jYXRlIGdlbmVyYXRvciBmcmFtZSBsb2NhbHMuCisgICAgc3RvcmUzMihUcnVzdGVk
SW1tMzIoMCksIEFkZHJlc3MocmVnVDEsIEdlbmVyYXRvckZyYW1lOjpudW1iZXJPZlNhdmVkQ2Fs
bGVlTG9jYWxzT2Zmc2V0KCkpKTsKK30KKwogI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQpCiAKIHZv
aWQgSklUOjplbWl0X29wX2xvb3BfaGludChJbnN0cnVjdGlvbiopCkBAIC0xNDg2LDE1ICsxNTMw
LDkgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X3Jlc3RfbGVuZ3RoKEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCiAjZW5kaWYKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3Bfc2F2ZShJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQotewotICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93
UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfc2F2ZSk7Ci0gICAg
c2xvd1BhdGhDYWxsLmNhbGwoKTsKLX0KLQotdm9pZCBKSVQ6OmVtaXRfb3BfcmVzdW1lKEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCit2b2lkIEpJVDo6ZW1pdF9vcF9uZXdfZ2VuZXJh
dG9yX2ZyYW1lKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7Ci0gICAgSklUU2xv
d1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0
aF9yZXN1bWUpOworICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVu
dEluc3RydWN0aW9uLCBzbG93X3BhdGhfbmV3X2dlbmVyYXRvcl9mcmFtZSk7CiAgICAgc2xvd1Bh
dGhDYWxsLmNhbGwoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGNvZGVzMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNv
ZGVzMzJfNjQuY3BwCmluZGV4IDU1ZGI0MTY0NmVhYWM0ODAyOWQyOTYzMzBmMDBlZGM1ZTI3ZmIx
MGUuLmFkYTU5ODZiNjMwZDEyZjcyNTk5YTk0Njg3ZmRlODk4OGY0NzQ1OWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKQEAgLTMzLDYgKzMzLDcg
QEAKICNpbmNsdWRlICJDQ2FsbEhlbHBlcnMuaCIKICNpbmNsdWRlICJEZWJ1Z2dlci5oIgogI2lu
Y2x1ZGUgIkV4Y2VwdGlvbi5oIgorI2luY2x1ZGUgIkdlbmVyYXRvckZyYW1lLmgiCiAjaW5jbHVk
ZSAiSklUSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKICNpbmNsdWRlICJKU0NlbGwu
aCIKQEAgLTEzODUsNiArMTM4Niw1MSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9sb2dfc2hhZG93X2No
aWNrZW5fdGFpbChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGxvZ1NoYWRv
d0NoaWNrZW5UYWlsUGFja2V0KHNoYWRvd1BhY2tldFJlZywgdGhpc1JlZ3MsIHJlZ1QzLCBtX2Nv
ZGVCbG9jaywgQ2FsbFNpdGVJbmRleChjdXJyZW50SW5zdHJ1Y3Rpb24pKTsKIH0KIAordm9pZCBK
SVQ6OmVtaXRfb3Bfc2F2ZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQoreworICAg
IGludCBmcmFtZSA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CisgICAgdW5zaWdu
ZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUudW5zaWdu
ZWRWYWx1ZTsKKyAgICBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlbmVzcyA9IG1fY29kZUJsb2Nr
LT5saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZChsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpOworCisgICAg
Ly8gQSBmcmFtZSBpcyBhbHdheXMgYSBjZWxsLiBObyBuZWVkIHRvIGZpbHRlciBvdXQuCisgICAg
ZW1pdFdyaXRlQmFycmllcihmcmFtZSwgVW5jb25kaXRpb25hbFdyaXRlQmFycmllcik7CisKKyAg
ICBlbWl0TG9hZFBheWxvYWQoZnJhbWUsIHJlZ1QyKTsKKworICAgIC8vIEFsbG9jYXRlIGdlbmVy
YXRvciBmcmFtZSBsb2NhbHMuCisgICAgc3RvcmUzMihUcnVzdGVkSW1tMzIobGl2ZW5lc3MuYml0
Q291bnQoKSksIEFkZHJlc3MocmVnVDIsIEdlbmVyYXRvckZyYW1lOjpudW1iZXJPZlNhdmVkQ2Fs
bGVlTG9jYWxzT2Zmc2V0KCkpKTsKKworICAgIHVuc2lnbmVkIGdlbmVyYXRvckxvY2FsSW5kZXgg
PSAwOworICAgIGxpdmVuZXNzLmZvckVhY2hTZXRCaXQoWyZdKHNpemVfdCBsb2NhbCkgeworICAg
ICAgICBWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCA9IHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGxv
Y2FsKTsKKyAgICAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihvcGVyYW5kLm9mZnNldCgpLCBK
U1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApKTsKKyAgICAgICAgc3RvcmUzMihyZWdUMSwgQWRkcmVz
cyhyZWdUMiwgR2VuZXJhdG9yRnJhbWU6OmxvY2FsT2Zmc2V0KGdlbmVyYXRvckxvY2FsSW5kZXgp
ICsgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnRhZykpKTsKKyAgICAgICAgc3Rv
cmUzMihyZWdUMCwgQWRkcmVzcyhyZWdUMiwgR2VuZXJhdG9yRnJhbWU6OmxvY2FsT2Zmc2V0KGdl
bmVyYXRvckxvY2FsSW5kZXgpICsgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnBh
eWxvYWQpKSk7CisgICAgICAgIGdlbmVyYXRvckxvY2FsSW5kZXgrKzsKKyAgICB9KTsKK30KKwor
dm9pZCBKSVQ6OmVtaXRfb3BfcmVzdW1lKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24p
Cit7CisgICAgaW50IGZyYW1lID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKKyAg
ICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0u
dS51bnNpZ25lZFZhbHVlOworICAgIGNvbnN0IEZhc3RCaXRWZWN0b3ImIGxpdmVuZXNzID0gbV9j
b2RlQmxvY2stPmxpdmVDYWxsZWVMb2NhbHNBdFlpZWxkKGxpdmVDYWxsZWVMb2NhbHNJbmRleCk7
CisKKyAgICBlbWl0TG9hZFBheWxvYWQoZnJhbWUsIHJlZ1QyKTsKKworICAgIHVuc2lnbmVkIGdl
bmVyYXRvckxvY2FsSW5kZXggPSAwOworICAgIGxpdmVuZXNzLmZvckVhY2hTZXRCaXQoWyZdKHNp
emVfdCBsb2NhbCkgeworICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCA9IHZpcnR1YWxS
ZWdpc3RlckZvckxvY2FsKGxvY2FsKTsKKyAgICAgICAgbG9hZDMyKEFkZHJlc3MocmVnVDIsIEdl
bmVyYXRvckZyYW1lOjpsb2NhbE9mZnNldChnZW5lcmF0b3JMb2NhbEluZGV4KSArIE9CSkVDVF9P
RkZTRVRPRihKU1ZhbHVlLCB1LmFzQml0cy50YWcpKSwgcmVnVDEpOworICAgICAgICBsb2FkMzIo
QWRkcmVzcyhyZWdUMiwgR2VuZXJhdG9yRnJhbWU6OmxvY2FsT2Zmc2V0KGdlbmVyYXRvckxvY2Fs
SW5kZXgpICsgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnBheWxvYWQpKSwgcmVn
VDApOworICAgICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKG9wZXJhbmQub2Zmc2V0KCksIEpT
VmFsdWVSZWdzKHJlZ1QxLCByZWdUMCkpOworICAgICAgICBnZW5lcmF0b3JMb2NhbEluZGV4Kys7
CisgICAgfSk7CisKKyAgICAvLyBEZWFsbG9jYXRlIGdlbmVyYXRvciBmcmFtZSBsb2NhbHMuCisg
ICAgc3RvcmUzMihUcnVzdGVkSW1tMzIoMCksIEFkZHJlc3MocmVnVDIsIEdlbmVyYXRvckZyYW1l
OjpudW1iZXJPZlNhdmVkQ2FsbGVlTG9jYWxzT2Zmc2V0KCkpKTsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgSlNDCiAKICNlbmRpZiAvLyBVU0UoSlNWQUxVRTMyXzY0KQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAppbmRleCA0MzgzYTEzNTk3OTZlNzU3
ZWQ1Y2M2YmQ1NWUwN2Q5ZmQ0OTQxZGYzLi5lZGZlN2IwN2ExZjA4MzY0ODc3NDc0MDk1YTVlYzBm
Y2RiMjhjNjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3Bl
cnR5QWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5
QWNjZXNzLmNwcApAQCAtMTE2NiwxNCArMTE2Niw4IEBAIHZvaWQgSklUOjplbWl0X29wX3B1dF90
b19hcmd1bWVudHMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICNlbmRpZiAvLyBV
U0UoSlNWQUxVRTY0KQogCiAjaWYgVVNFKEpTVkFMVUU2NCkKLXZvaWQgSklUOjplbWl0V3JpdGVC
YXJyaWVyKHVuc2lnbmVkIG93bmVyLCB1bnNpZ25lZCB2YWx1ZSwgV3JpdGVCYXJyaWVyTW9kZSBt
b2RlKQordm9pZCBKSVQ6OmVtaXRXcml0ZUJhcnJpZXIodW5zaWduZWQgb3duZXIsIFdyaXRlQmFy
cmllck1vZGUgbW9kZSkKIHsKLSAgICBKdW1wIHZhbHVlTm90Q2VsbDsKLSAgICBpZiAobW9kZSA9
PSBTaG91bGRGaWx0ZXJWYWx1ZSB8fCBtb2RlID09IFNob3VsZEZpbHRlckJhc2VBbmRWYWx1ZSkg
ewotICAgICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHZhbHVlLCByZWdUMCk7Ci0gICAgICAg
IHZhbHVlTm90Q2VsbCA9IGJyYW5jaFRlc3Q2NChOb25aZXJvLCByZWdUMCwgdGFnTWFza1JlZ2lz
dGVyKTsKLSAgICB9Ci0gICAgCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihvd25lciwgcmVn
VDApOwogICAgIEp1bXAgb3duZXJOb3RDZWxsOwogICAgIGlmIChtb2RlID09IFNob3VsZEZpbHRl
ckJhc2VBbmRWYWx1ZSB8fCBtb2RlID09IFNob3VsZEZpbHRlckJhc2UpCkBAIC0xMTg1LDYgKzEx
NzksMTggQEAgdm9pZCBKSVQ6OmVtaXRXcml0ZUJhcnJpZXIodW5zaWduZWQgb3duZXIsIHVuc2ln
bmVkIHZhbHVlLCBXcml0ZUJhcnJpZXJNb2RlIG1vZGUKIAogICAgIGlmIChtb2RlID09IFNob3Vs
ZEZpbHRlckJhc2VBbmRWYWx1ZSB8fCBtb2RlID09IFNob3VsZEZpbHRlckJhc2UpCiAgICAgICAg
IG93bmVyTm90Q2VsbC5saW5rKHRoaXMpOworfQorCit2b2lkIEpJVDo6ZW1pdFdyaXRlQmFycmll
cih1bnNpZ25lZCBvd25lciwgdW5zaWduZWQgdmFsdWUsIFdyaXRlQmFycmllck1vZGUgbW9kZSkK
K3sKKyAgICBKdW1wIHZhbHVlTm90Q2VsbDsKKyAgICBpZiAobW9kZSA9PSBTaG91bGRGaWx0ZXJW
YWx1ZSB8fCBtb2RlID09IFNob3VsZEZpbHRlckJhc2VBbmRWYWx1ZSkgeworICAgICAgICBlbWl0
R2V0VmlydHVhbFJlZ2lzdGVyKHZhbHVlLCByZWdUMCk7CisgICAgICAgIHZhbHVlTm90Q2VsbCA9
IGJyYW5jaFRlc3Q2NChOb25aZXJvLCByZWdUMCwgdGFnTWFza1JlZ2lzdGVyKTsKKyAgICB9CisK
KyAgICBlbWl0V3JpdGVCYXJyaWVyKG93bmVyLCBtb2RlKTsKKwogICAgIGlmIChtb2RlID09IFNo
b3VsZEZpbHRlclZhbHVlIHx8IG1vZGUgPT0gU2hvdWxkRmlsdGVyQmFzZUFuZFZhbHVlKSAKICAg
ICAgICAgdmFsdWVOb3RDZWxsLmxpbmsodGhpcyk7CiB9CkBAIC0xMjA0LDE0ICsxMjEwLDggQEAg
dm9pZCBKSVQ6OmVtaXRXcml0ZUJhcnJpZXIoSlNDZWxsKiBvd25lciwgdW5zaWduZWQgdmFsdWUs
IFdyaXRlQmFycmllck1vZGUgbW9kZSkKIAogI2Vsc2UgLy8gVVNFKEpTVkFMVUU2NCkKIAotdm9p
ZCBKSVQ6OmVtaXRXcml0ZUJhcnJpZXIodW5zaWduZWQgb3duZXIsIHVuc2lnbmVkIHZhbHVlLCBX
cml0ZUJhcnJpZXJNb2RlIG1vZGUpCit2b2lkIEpJVDo6ZW1pdFdyaXRlQmFycmllcih1bnNpZ25l
ZCBvd25lciwgV3JpdGVCYXJyaWVyTW9kZSBtb2RlKQogewotICAgIEp1bXAgdmFsdWVOb3RDZWxs
OwotICAgIGlmIChtb2RlID09IFNob3VsZEZpbHRlclZhbHVlIHx8IG1vZGUgPT0gU2hvdWxkRmls
dGVyQmFzZUFuZFZhbHVlKSB7Ci0gICAgICAgIGVtaXRMb2FkVGFnKHZhbHVlLCByZWdUMCk7Ci0g
ICAgICAgIHZhbHVlTm90Q2VsbCA9IGJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMCwgVHJ1c3RlZElt
bTMyKEpTVmFsdWU6OkNlbGxUYWcpKTsKLSAgICB9Ci0gICAgCiAgICAgZW1pdExvYWQob3duZXIs
IHJlZ1QwLCByZWdUMSk7CiAgICAgSnVtcCBvd25lck5vdENlbGw7CiAgICAgaWYgKG1vZGUgPT0g
U2hvdWxkRmlsdGVyQmFzZSB8fCBtb2RlID09IFNob3VsZEZpbHRlckJhc2VBbmRWYWx1ZSkKQEAg
LTEyMjMsNyArMTIyMywyMCBAQCB2b2lkIEpJVDo6ZW1pdFdyaXRlQmFycmllcih1bnNpZ25lZCBv
d25lciwgdW5zaWduZWQgdmFsdWUsIFdyaXRlQmFycmllck1vZGUgbW9kZQogCiAgICAgaWYgKG1v
ZGUgPT0gU2hvdWxkRmlsdGVyQmFzZSB8fCBtb2RlID09IFNob3VsZEZpbHRlckJhc2VBbmRWYWx1
ZSkKICAgICAgICAgb3duZXJOb3RDZWxsLmxpbmsodGhpcyk7Ci0gICAgaWYgKG1vZGUgPT0gU2hv
dWxkRmlsdGVyVmFsdWUgfHwgbW9kZSA9PSBTaG91bGRGaWx0ZXJCYXNlQW5kVmFsdWUpIAorfQor
CisKK3ZvaWQgSklUOjplbWl0V3JpdGVCYXJyaWVyKHVuc2lnbmVkIG93bmVyLCB1bnNpZ25lZCB2
YWx1ZSwgV3JpdGVCYXJyaWVyTW9kZSBtb2RlKQoreworICAgIEp1bXAgdmFsdWVOb3RDZWxsOwor
ICAgIGlmIChtb2RlID09IFNob3VsZEZpbHRlclZhbHVlIHx8IG1vZGUgPT0gU2hvdWxkRmlsdGVy
QmFzZUFuZFZhbHVlKSB7CisgICAgICAgIGVtaXRMb2FkVGFnKHZhbHVlLCByZWdUMCk7CisgICAg
ICAgIHZhbHVlTm90Q2VsbCA9IGJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMCwgVHJ1c3RlZEltbTMy
KEpTVmFsdWU6OkNlbGxUYWcpKTsKKyAgICB9CisKKyAgICBlbWl0V3JpdGVCYXJyaWVyKG93bmVy
LCBtb2RlKTsKKworICAgIGlmIChtb2RlID09IFNob3VsZEZpbHRlclZhbHVlIHx8IG1vZGUgPT0g
U2hvdWxkRmlsdGVyQmFzZUFuZFZhbHVlKQogICAgICAgICB2YWx1ZU5vdENlbGwubGluayh0aGlz
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zm
c2V0c0V4dHJhY3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZz
ZXRzRXh0cmFjdG9yLmNwcAppbmRleCA4ZWI5YTUwZWRmZjU2ZGRhNmMzYzc0Njg2Y2E0ZDI1OGZj
OTczYzljLi5kZDZlYTAyZDZjNjk0MzQ2ZTQwMDY2MTBlMzkwMjI2NGJlZDJiNzZjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9y
LmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkRpcmVjdEFyZ3VtZW50cy5oIgogI2lu
Y2x1ZGUgIkV4Y2VwdGlvbi5oIgogI2luY2x1ZGUgIkV4ZWN1dGFibGUuaCIKKyNpbmNsdWRlICJH
ZW5lcmF0b3JGcmFtZS5oIgogI2luY2x1ZGUgIkhlYXAuaCIKICNpbmNsdWRlICJJbnRlcnByZXRl
ci5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQppbmRleCBkZmE2ZmQ1YTRhODRhMGFmNGIw
N2VmNGNkMzA1OTkxOTBmNjIyMjI2Li5iN2QxZjNmMzQyNjUyOTZhMmNmOWRiNjAzZDc1ZDU1Nzg1
MTk3NzIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlci5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXIuYXNtCkBAIC0xMjg2LDYgKzEyODYsMTIgQEAgX2xsaW50X29wX25ld19yZWdl
eHA6CiAgICAgZGlzcGF0Y2goMykKIAogCitfbGxpbnRfb3BfbmV3X2dlbmVyYXRvcl9mcmFtZToK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbFNsb3dQYXRoKF9zbG93X3BhdGhfbmV3X2dl
bmVyYXRvcl9mcmFtZSkKKyAgICBkaXNwYXRjaCgzKQorCisKIF9sbGludF9vcF9sZXNzOgogICAg
IHRyYWNlRXhlY3V0aW9uKCkKICAgICBjYWxsT3Bjb2RlU2xvd1BhdGgoX3Nsb3dfcGF0aF9sZXNz
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCmluZGV4IDdmOTZiYTQ4MDBk
MjdjODU0YzM5NWY0ZjI2NjdlYTE1ODBjMDY3ZjguLmE2N2NmYWU3ZDM4NDRhMzg4MzIxMjM2ODcz
MzkyZTg5M2I1OGExNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAK
QEAgLTI1Niw3ICsyNTYsNyBAQCBTdHJpbmcgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlSW5uZXIo
Y29uc3QgSWRlbnRpZmllciYgY2FsbGVlTmFtZSwgU291cmNlUGFyc2VNbwogICAgIGlmIChtX2xl
eGVyLT5pc1JlcGFyc2luZ0Z1bmN0aW9uKCkpIHsKICAgICAgICAgUGFyc2VyRnVuY3Rpb25JbmZv
PEFTVEJ1aWxkZXI+IGZ1bmN0aW9uSW5mbzsKICAgICAgICAgaWYgKHBhcnNlTW9kZSA9PSBTb3Vy
Y2VQYXJzZU1vZGU6OkdlbmVyYXRvckJvZHlNb2RlKQotICAgICAgICAgICAgbV9wYXJhbWV0ZXJz
ID0gY3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhjb250ZXh0KTsKKyAgICAgICAgICAgIG1fcGFy
YW1ldGVycyA9IGNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMoY29udGV4dCwgZnVuY3Rpb25JbmZv
LnBhcmFtZXRlckNvdW50KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbV9wYXJhbWV0ZXJz
ID0gcGFyc2VGdW5jdGlvblBhcmFtZXRlcnMoY29udGV4dCwgcGFyc2VNb2RlLCBmdW5jdGlvbklu
Zm8pOwogCkBAIC00OTksMTAgKzQ5OSw5IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4g
VHJlZVNvdXJjZUVsZW1lbnRzIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUdlbmVyYXRvCiAKICAg
ICBQYXJzZXJGdW5jdGlvbkluZm88VHJlZUJ1aWxkZXI+IGluZm87CiAgICAgaW5mby5uYW1lID0g
Jm1fdm0tPnByb3BlcnR5TmFtZXMtPm51bGxJZGVudGlmaWVyOwotICAgIGNyZWF0ZUdlbmVyYXRv
clBhcmFtZXRlcnMoY29udGV4dCk7CisgICAgY3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhjb250
ZXh0LCBpbmZvLnBhcmFtZXRlckNvdW50KTsKICAgICBpbmZvLnN0YXJ0T2Zmc2V0ID0gcGFyYW1l
dGVyc1N0YXJ0OwogICAgIGluZm8uc3RhcnRMaW5lID0gdG9rZW5MaW5lKCk7Ci0gICAgaW5mby5w
YXJhbWV0ZXJDb3VudCA9IDQ7IC8vIGdlbmVyYXRvciwgc3RhdGUsIHZhbHVlLCByZXN1bWUgbW9k
ZQogCiAgICAgewogICAgICAgICBBdXRvUG9wU2NvcGVSZWYgZ2VuZXJhdG9yQm9keVNjb3BlKHRo
aXMsIHB1c2hTY29wZSgpKTsKQEAgLTE4OTEsMzIgKzE4OTAsMzAgQEAgdGVtcGxhdGUgPHR5cGVu
YW1lIExleGVyVHlwZT4gdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyLCBjbGFzcyBGdW5jdGlv
bkluZm9UeXAKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KLXRlbXBsYXRlIDxj
bGFzcyBUcmVlQnVpbGRlcj4gdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkZvcm1hbFBhcmFtZXRlckxp
c3QgUGFyc2VyPExleGVyVHlwZT46OmNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMoVHJlZUJ1aWxk
ZXImIGNvbnRleHQpCit0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IHR5cGVuYW1lIFRyZWVC
dWlsZGVyOjpGb3JtYWxQYXJhbWV0ZXJMaXN0IFBhcnNlcjxMZXhlclR5cGU+OjpjcmVhdGVHZW5l
cmF0b3JQYXJhbWV0ZXJzKFRyZWVCdWlsZGVyJiBjb250ZXh0LCB1bnNpZ25lZCYgcGFyYW1ldGVy
Q291bnQpCiB7CiAgICAgYXV0byBwYXJhbWV0ZXJzID0gY29udGV4dC5jcmVhdGVGb3JtYWxQYXJh
bWV0ZXJMaXN0KCk7CiAKICAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb24odG9rZW5Mb2NhdGlv
bigpKTsKICAgICBKU1RleHRQb3NpdGlvbiBwb3NpdGlvbiA9IHRva2VuU3RhcnRQb3NpdGlvbigp
OwogCi0gICAgLy8gQGdlbmVyYXRvcgotICAgIGRlY2xhcmVQYXJhbWV0ZXIoJm1fdm0tPnByb3Bl
cnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclByaXZhdGVOYW1lKCkpOwotICAgIGF1
dG8gZ2VuZXJhdG9yID0gY29udGV4dC5jcmVhdGVCaW5kaW5nTG9jYXRpb24obG9jYXRpb24sIG1f
dm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclByaXZhdGVOYW1lKCks
IHBvc2l0aW9uLCBwb3NpdGlvbiwgQXNzaWdubWVudENvbnRleHQ6OkRlY2xhcmF0aW9uU3RhdGVt
ZW50KTsKLSAgICBjb250ZXh0LmFwcGVuZFBhcmFtZXRlcihwYXJhbWV0ZXJzLCBnZW5lcmF0b3Is
IDApOworICAgIGF1dG8gYWRkUGFyYW1ldGVyID0gWyZdKGNvbnN0IElkZW50aWZpZXImIG5hbWUp
IHsKKyAgICAgICAgZGVjbGFyZVBhcmFtZXRlcigmbmFtZSk7CisgICAgICAgIGF1dG8gYmluZGlu
ZyA9IGNvbnRleHQuY3JlYXRlQmluZGluZ0xvY2F0aW9uKGxvY2F0aW9uLCBuYW1lLCBwb3NpdGlv
biwgcG9zaXRpb24sIEFzc2lnbm1lbnRDb250ZXh0OjpEZWNsYXJhdGlvblN0YXRlbWVudCk7Cisg
ICAgICAgIGNvbnRleHQuYXBwZW5kUGFyYW1ldGVyKHBhcmFtZXRlcnMsIGJpbmRpbmcsIDApOwor
ICAgICAgICArK3BhcmFtZXRlckNvdW50OworICAgIH07CiAKKyAgICAvLyBAZ2VuZXJhdG9yCisg
ICAgYWRkUGFyYW1ldGVyKG1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdlbmVy
YXRvclByaXZhdGVOYW1lKCkpOwogICAgIC8vIEBnZW5lcmF0b3JTdGF0ZQotICAgIGRlY2xhcmVQ
YXJhbWV0ZXIoJm1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclN0
YXRlUHJpdmF0ZU5hbWUoKSk7Ci0gICAgYXV0byBnZW5lcmF0b3JTdGF0ZSA9IGNvbnRleHQuY3Jl
YXRlQmluZGluZ0xvY2F0aW9uKGxvY2F0aW9uLCBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5idWlsdGlu
TmFtZXMoKS5nZW5lcmF0b3JTdGF0ZVByaXZhdGVOYW1lKCksIHBvc2l0aW9uLCBwb3NpdGlvbiwg
QXNzaWdubWVudENvbnRleHQ6OkRlY2xhcmF0aW9uU3RhdGVtZW50KTsKLSAgICBjb250ZXh0LmFw
cGVuZFBhcmFtZXRlcihwYXJhbWV0ZXJzLCBnZW5lcmF0b3JTdGF0ZSwgMCk7Ci0KKyAgICBhZGRQ
YXJhbWV0ZXIobV92bS0+cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yU3Rh
dGVQcml2YXRlTmFtZSgpKTsKICAgICAvLyBAZ2VuZXJhdG9yVmFsdWUKLSAgICBkZWNsYXJlUGFy
YW1ldGVyKCZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JWYWx1
ZVByaXZhdGVOYW1lKCkpOwotICAgIGF1dG8gZ2VuZXJhdG9yVmFsdWUgPSBjb250ZXh0LmNyZWF0
ZUJpbmRpbmdMb2NhdGlvbihsb2NhdGlvbiwgbV92bS0+cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5h
bWVzKCkuZ2VuZXJhdG9yVmFsdWVQcml2YXRlTmFtZSgpLCBwb3NpdGlvbiwgcG9zaXRpb24sIEFz
c2lnbm1lbnRDb250ZXh0OjpEZWNsYXJhdGlvblN0YXRlbWVudCk7Ci0gICAgY29udGV4dC5hcHBl
bmRQYXJhbWV0ZXIocGFyYW1ldGVycywgZ2VuZXJhdG9yVmFsdWUsIDApOwotCisgICAgYWRkUGFy
YW1ldGVyKG1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclZhbHVl
UHJpdmF0ZU5hbWUoKSk7CiAgICAgLy8gQGdlbmVyYXRvclJlc3VtZU1vZGUKLSAgICBkZWNsYXJl
UGFyYW1ldGVyKCZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JS
ZXN1bWVNb2RlUHJpdmF0ZU5hbWUoKSk7Ci0gICAgYXV0byBnZW5lcmF0b3JSZXN1bWVNb2RlID0g
Y29udGV4dC5jcmVhdGVCaW5kaW5nTG9jYXRpb24obG9jYXRpb24sIG1fdm0tPnByb3BlcnR5TmFt
ZXMtPmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclJlc3VtZU1vZGVQcml2YXRlTmFtZSgpLCBwb3Np
dGlvbiwgcG9zaXRpb24sIEFzc2lnbm1lbnRDb250ZXh0OjpEZWNsYXJhdGlvblN0YXRlbWVudCk7
Ci0gICAgY29udGV4dC5hcHBlbmRQYXJhbWV0ZXIocGFyYW1ldGVycywgZ2VuZXJhdG9yUmVzdW1l
TW9kZSwgMCk7CisgICAgYWRkUGFyYW1ldGVyKG1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5O
YW1lcygpLmdlbmVyYXRvclJlc3VtZU1vZGVQcml2YXRlTmFtZSgpKTsKKyAgICAvLyBAZ2VuZXJh
dG9yRnJhbWUKKyAgICBhZGRQYXJhbWV0ZXIobV92bS0+cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5h
bWVzKCkuZ2VuZXJhdG9yRnJhbWVQcml2YXRlTmFtZSgpKTsKIAogICAgIHJldHVybiBwYXJhbWV0
ZXJzOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKaW5kZXggMDVkMzRhNzE4
NWU3YjRmYmNkMDExOTdjMGZhNTQzMGNlZDQ0ZDJhYS4uZDBjYzk5ZjI3ZjUwNTdiY2QwYzc1Zjg4
NjQ3ZmRlN2RmODY1ODE1MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9QYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCkBA
IC0xNDQyLDcgKzE0NDIsNyBAQCBjbGFzcyBQYXJzZXIgewogICAgIEFMV0FZU19JTkxJTkUgYm9v
bCBpc0Fycm93RnVuY3Rpb25QYXJhbWV0ZXJzKCk7CiAgICAgCiAgICAgdGVtcGxhdGUgPGNsYXNz
IFRyZWVCdWlsZGVyLCBjbGFzcyBGdW5jdGlvbkluZm9UeXBlPiBORVZFUl9JTkxJTkUgdHlwZW5h
bWUgVHJlZUJ1aWxkZXI6OkZvcm1hbFBhcmFtZXRlckxpc3QgcGFyc2VGdW5jdGlvblBhcmFtZXRl
cnMoVHJlZUJ1aWxkZXImLCBTb3VyY2VQYXJzZU1vZGUsIEZ1bmN0aW9uSW5mb1R5cGUmKTsKLSAg
ICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElORSB0eXBlbmFtZSBUcmVl
QnVpbGRlcjo6Rm9ybWFsUGFyYW1ldGVyTGlzdCBjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKFRy
ZWVCdWlsZGVyJik7CisgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBORVZFUl9JTkxJ
TkUgdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkZvcm1hbFBhcmFtZXRlckxpc3QgY3JlYXRlR2VuZXJh
dG9yUGFyYW1ldGVycyhUcmVlQnVpbGRlciYsIHVuc2lnbmVkJiBwYXJhbWV0ZXJDb3VudCk7CiAK
ICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElORSBUcmVlQ2xhc3NF
eHByZXNzaW9uIHBhcnNlQ2xhc3MoVHJlZUJ1aWxkZXImLCBGdW5jdGlvblJlcXVpcmVtZW50cywg
UGFyc2VyQ2xhc3NJbmZvPFRyZWVCdWlsZGVyPiYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAppbmRleCBhMTU3ODkxN2VmYjYxZDQ1
MTBiMjUxMGFjZjgyNTU0NzY1NjY4ZWFmLi5iMTUxMjRjOWM1NjI0NmRmYWFhMjRkODJmMmMxZTQ1
M2QyZTdlYjFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21t
b25TbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1v
blNsb3dQYXRocy5jcHAKQEAgLTcxOSwxOCArNzE5LDcgQEAgU0xPV19QQVRIX0RFQ0woc2xvd19w
YXRoX3NhdmUpCiAgICAgLy8gT25seSBzYXZlIHZhcmlhYmxlcyBhbmQgdGVtcG9yYXJ5IHJlZ2lz
dGVycy4gVGhlIHNjb3BlIHJlZ2lzdGVycyBhcmUgaW5jbHVkZWQgaW4gdGhlbS4KICAgICAvLyBC
dXQgcGFyYW1ldGVycyBhcmUgbm90IGluY2x1ZGVkLiBCZWNhdXNlIHRoZSBnZW5lcmF0b3IgaW1w
bGVtZW50YXRpb24gcmVwbGFjZXMgdGhlIHZhbHVlcyBvZiBwYXJhbWV0ZXJzIG9uIGVhY2ggZ2Vu
ZXJhdG9yLm5leHQoKSBjYWxsLgogICAgIEJFR0lOKCk7Ci0gICAgSlNWYWx1ZSBnZW5lcmF0b3Ig
PSBPUCgxKS5qc1ZhbHVlKCk7Ci0gICAgR2VuZXJhdG9yRnJhbWUqIGZyYW1lID0gbnVsbHB0cjsK
LSAgICBKU1ZhbHVlIHZhbHVlID0gZ2VuZXJhdG9yLmdldChleGVjLCBleGVjLT5wcm9wZXJ0eU5h
bWVzKCkuYnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yRnJhbWVQcml2YXRlTmFtZSgpKTsKLSAgICBp
ZiAoIXZhbHVlLmlzTnVsbCgpKQotICAgICAgICBmcmFtZSA9IGpzQ2FzdDxHZW5lcmF0b3JGcmFt
ZSo+KHZhbHVlKTsKLSAgICBlbHNlIHsKLSAgICAgICAgLy8gRklYTUU6IE9uY2UgSlNHZW5lcmF0
b3Igc3BlY2lhbGl6ZWQgb2JqZWN0IGlzIGludHJvZHVjZWQsIHRoaXMgR2VuZXJhdG9yRnJhbWUg
c2hvdWxkIGJlIGVtYmVkZWQgaW50byBpdCB0byBhdm9pZCBhbGxvY2F0aW9ucy4KLSAgICAgICAg
Ly8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTU0NQotICAgICAg
ICBmcmFtZSA9IEdlbmVyYXRvckZyYW1lOjpjcmVhdGUoZXhlYy0+dm0oKSwgIGV4ZWMtPmNvZGVC
bG9jaygpLT5udW1DYWxsZWVMb2NhbHMoKSk7Ci0gICAgICAgIFB1dFByb3BlcnR5U2xvdCBzbG90
KGdlbmVyYXRvciwgdHJ1ZSwgUHV0UHJvcGVydHlTbG90OjpQdXRCeUlkKTsKLSAgICAgICAgYXNP
YmplY3QoZ2VuZXJhdG9yKS0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPnB1dChhc09iamVjdChn
ZW5lcmF0b3IpLCBleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCkuZ2Vu
ZXJhdG9yRnJhbWVQcml2YXRlTmFtZSgpLCBmcmFtZSwgc2xvdCk7Ci0gICAgfQorICAgIEdlbmVy
YXRvckZyYW1lKiBmcmFtZSA9IGpzQ2FzdDxHZW5lcmF0b3JGcmFtZSo+KE9QKDEpLmpzVmFsdWUo
KSk7CiAgICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gcGNbMl0udS51bnNpZ25l
ZFZhbHVlOwogICAgIGZyYW1lLT5zYXZlKGV4ZWMsIGV4ZWMtPmNvZGVCbG9jaygpLT5saXZlQ2Fs
bGVlTG9jYWxzQXRZaWVsZChsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpKTsKICAgICBFTkQoKTsKQEAg
LTczOSw4ICs3MjgsNyBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfc2F2ZSkKIFNMT1dfUEFU
SF9ERUNMKHNsb3dfcGF0aF9yZXN1bWUpCiB7CiAgICAgQkVHSU4oKTsKLSAgICBKU1ZhbHVlIGdl
bmVyYXRvciA9IE9QKDEpLmpzVmFsdWUoKTsKLSAgICBHZW5lcmF0b3JGcmFtZSogZnJhbWUgPSBq
c0Nhc3Q8R2VuZXJhdG9yRnJhbWUqPihnZW5lcmF0b3IuZ2V0KGV4ZWMsIGV4ZWMtPnByb3BlcnR5
TmFtZXMoKS5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JGcmFtZVByaXZhdGVOYW1lKCkpKTsKKyAg
ICBHZW5lcmF0b3JGcmFtZSogZnJhbWUgPSBqc0Nhc3Q8R2VuZXJhdG9yRnJhbWUqPihPUCgxKS5q
c1ZhbHVlKCkpOwogICAgIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9IHBjWzJdLnUu
dW5zaWduZWRWYWx1ZTsKICAgICBmcmFtZS0+cmVzdW1lKGV4ZWMsIGV4ZWMtPmNvZGVCbG9jaygp
LT5saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZChsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpKTsKICAgICBF
TkQoKTsKQEAgLTg5OSw0ICs4ODcsMTIgQEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3B1dF9i
eV92YWxfd2l0aF90aGlzKQogICAgIEVORCgpOwogfQogCitTTE9XX1BBVEhfREVDTChzbG93X3Bh
dGhfbmV3X2dlbmVyYXRvcl9mcmFtZSkKK3sKKyAgICBCRUdJTigpOworICAgIHVuc2lnbmVkIGdl
bmVyYXRvckxvY2Fsc1NpemUgPSBwY1syXS51LnVuc2lnbmVkVmFsdWU7CisgICAgUkVUVVJOKEdl
bmVyYXRvckZyYW1lOjpjcmVhdGUoZXhlYywgZ2VuZXJhdG9yTG9jYWxzU2l6ZSkpOworfQorCisK
IH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21tb25TbG93UGF0aHMuaAppbmRleCA3ODQxMDljNTc4MjM0NjlmY2YxMDVkNTQwM2FkMDRmNmVl
OTk1MTNmLi5jNTk5MjM0YjI4NjdhMTE0MTljOGFkNjQ3MWE3MjgwMDNmMjdmMGE5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaApAQCAtMjU2
LDYgKzI1Niw3IEBAIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfZ2V0X2J5X2lkX3dp
dGhfdGhpcyk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2dldF9ieV92YWxfd2l0
aF90aGlzKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcHV0X2J5X2lkX3dpdGhf
dGhpcyk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3B1dF9ieV92YWxfd2l0aF90
aGlzKTsKK1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfbmV3X2dlbmVyYXRvcl9mcmFt
ZSk7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9HZW5lcmF0b3JGcmFtZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9HZW5lcmF0b3JGcmFtZS5jcHAKaW5kZXggZWY2ZWE3YTEwMDI1OGMzZWNlMDRkYWFi
NDNiZGFhODUxZWM4ZjcxNS4uMGRjYjUxNGE0MjA5OTlmYmY1OWRmMThiZGRmNTdjMzBhZGE3OWU5
MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJh
bWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZyYW1l
LmNwcApAQCAtMzAsMTUgKzMwLDE2IEBACiAjaW5jbHVkZSAiSGVhcEl0ZXJhdGlvblNjb3BlLmgi
CiAjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJKU0NlbGxJbmxpbmVz
LmgiCisjaW5jbHVkZSAiSlNPYmplY3RJbmxpbmVzLmgiCiAjaW5jbHVkZSAiU2xvdFZpc2l0b3JJ
bmxpbmVzLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlSW5saW5lcy5oIgogCiBuYW1lc3BhY2UgSlND
IHsKIAotY29uc3QgQ2xhc3NJbmZvIEdlbmVyYXRvckZyYW1lOjpzX2luZm8gPSB7ICJHZW5lcmF0
b3JGcmFtZSIsIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoR2VuZXJhdG9y
RnJhbWUpIH07Citjb25zdCBDbGFzc0luZm8gR2VuZXJhdG9yRnJhbWU6OnNfaW5mbyA9IHsgIkdl
bmVyYXRvckZyYW1lIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJM
RShHZW5lcmF0b3JGcmFtZSkgfTsKIAotR2VuZXJhdG9yRnJhbWU6OkdlbmVyYXRvckZyYW1lKFZN
JiB2bSwgc2l6ZV90IG51bWJlck9mQ2FsbGVlTG9jYWxzKQotICAgIDogQmFzZSh2bSwgdm0uZ2Vu
ZXJhdG9yRnJhbWVTdHJ1Y3R1cmUuZ2V0KCkpCitHZW5lcmF0b3JGcmFtZTo6R2VuZXJhdG9yRnJh
bWUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgdWludDMyX3QgbnVtYmVyT2ZDYWxsZWVM
b2NhbHMpCisgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCiAgICAgLCBtX251bWJlck9mQ2FsbGVl
TG9jYWxzKG51bWJlck9mQ2FsbGVlTG9jYWxzKQogewogfQpAQCAtNDYsMzMgKzQ3LDQyIEBAIEdl
bmVyYXRvckZyYW1lOjpHZW5lcmF0b3JGcmFtZShWTSYgdm0sIHNpemVfdCBudW1iZXJPZkNhbGxl
ZUxvY2FscykKIHZvaWQgR2VuZXJhdG9yRnJhbWU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKIHsK
ICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgSlNWYWx1ZSBlbXB0eVZhbHVlOwog
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9udW1iZXJPZkNhbGxlZUxvY2FsczsgKytpKQot
ICAgICAgICBsb2NhbEF0KGkpLmNsZWFyKCk7CisgICAgICAgIGxvY2FsQXQoaSkuc2V0U3RhcnRp
bmdWYWx1ZShlbXB0eVZhbHVlKTsKIH0KIAogU3RydWN0dXJlKiBHZW5lcmF0b3JGcmFtZTo6Y3Jl
YXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1
ZSBwcm90b3R5cGUpCiB7Ci0gICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxP
YmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oQ2VsbFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5m
bygpKTsKKyAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJv
dG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiB9
CiAKLUdlbmVyYXRvckZyYW1lKiBHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlKFZNJiB2bSwgc2l6ZV90
IG51bWJlck9mTG9jYWxzKQorR2VuZXJhdG9yRnJhbWUqIEdlbmVyYXRvckZyYW1lOjpjcmVhdGUo
Vk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgc2l6ZV90IG51bWJlck9mQ2FsbGVlTG9jYWxz
KQogewogICAgIEdlbmVyYXRvckZyYW1lKiByZXN1bHQgPQogICAgICAgICBuZXcgKAogICAgICAg
ICAgICAgTm90TnVsbCwKLSAgICAgICAgICAgIGFsbG9jYXRlQ2VsbDxHZW5lcmF0b3JGcmFtZT4o
dm0uaGVhcCwgYWxsb2NhdGlvblNpemVGb3JMb2NhbHMobnVtYmVyT2ZMb2NhbHMpKSkKLSAgICAg
ICAgR2VuZXJhdG9yRnJhbWUodm0sIG51bWJlck9mTG9jYWxzKTsKKyAgICAgICAgICAgIGFsbG9j
YXRlQ2VsbDxHZW5lcmF0b3JGcmFtZT4odm0uaGVhcCwgYWxsb2NhdGlvblNpemVGb3JMb2NhbHMo
bnVtYmVyT2ZDYWxsZWVMb2NhbHMpKSkKKyAgICAgICAgR2VuZXJhdG9yRnJhbWUodm0sIHN0cnVj
dHVyZSwgbnVtYmVyT2ZDYWxsZWVMb2NhbHMpOwogICAgIHJlc3VsdC0+ZmluaXNoQ3JlYXRpb24o
dm0pOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK0dlbmVyYXRvckZyYW1lKiBHZW5lcmF0b3JG
cmFtZTo6Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgc2l6ZV90IG51bWJlck9mQ2FsbGVlTG9jYWxz
KQoreworICAgIHJldHVybiBjcmVhdGUoZXhlYy0+dm0oKSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9i
amVjdCgpLT5nZW5lcmF0b3JGcmFtZVN0cnVjdHVyZSgpLCBudW1iZXJPZkNhbGxlZUxvY2Fscyk7
Cit9CisKIHZvaWQgR2VuZXJhdG9yRnJhbWU6OnNhdmUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBG
YXN0Qml0VmVjdG9yJiBsaXZlQ2FsbGVlTG9jYWxzKQogeworICAgIC8vIEFsbG9jYXRlIHRoZSBn
ZW5lcmF0b3IgbG9jYWwgc3BhY2UgZmlyc3QuCisgICAgbV9udW1iZXJPZlNhdmVkQ2FsbGVlTG9j
YWxzID0gbGl2ZUNhbGxlZUxvY2Fscy5iaXRDb3VudCgpOworCiAgICAgLy8gT25seSBzYXZlIGNh
bGxlZSBsb2NhbHMuCiAgICAgLy8gRXZlcnkgdGltZSBhIGdlbmVyYXRvciBpcyBjYWxsZWQgKG9y
IHJlc3VtZWQpLCBwYXJhbWV0ZXJzIHNob3VsZCBiZSByZXBsYWNlZC4KLSAgICBBU1NFUlQobGl2
ZUNhbGxlZUxvY2Fscy5udW1CaXRzKCkgPD0gbV9udW1iZXJPZkNhbGxlZUxvY2Fscyk7CisgICAg
dW5zaWduZWQgZ2VuZXJhdG9yTG9jYWxJbmRleCA9IDA7CiAgICAgbGl2ZUNhbGxlZUxvY2Fscy5m
b3JFYWNoU2V0Qml0KFsmXShzaXplX3QgaW5kZXgpIHsKLSAgICAgICAgbG9jYWxBdChpbmRleCku
c2V0KGV4ZWMtPnZtKCksIHRoaXMsIGV4ZWMtPnVuY2hlY2tlZFIodmlydHVhbFJlZ2lzdGVyRm9y
TG9jYWwoaW5kZXgpKS5qc1ZhbHVlKCkpOworICAgICAgICBsb2NhbEF0KGdlbmVyYXRvckxvY2Fs
SW5kZXgrKykuc2V0KGV4ZWMtPnZtKCksIHRoaXMsIGV4ZWMtPnVuY2hlY2tlZFIodmlydHVhbFJl
Z2lzdGVyRm9yTG9jYWwoaW5kZXgpKS5qc1ZhbHVlKCkpOwogICAgIH0pOwogfQogCkBAIC04MCwx
MCArOTAsMTEgQEAgdm9pZCBHZW5lcmF0b3JGcmFtZTo6cmVzdW1lKEV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZUNhbGxlZUxvY2EKIHsKICAgICAvLyBPbmx5IHJlc3Vt
ZSBjYWxsZWUgbG9jYWxzLgogICAgIC8vIEV2ZXJ5IHRpbWUgYSBnZW5lcmF0b3IgaXMgY2FsbGVk
IChvciByZXN1bWVkKSwgcGFyYW1ldGVycyBzaG91bGQgYmUgcmVwbGFjZWQuCisgICAgdW5zaWdu
ZWQgZ2VuZXJhdG9yTG9jYWxJbmRleCA9IDA7CiAgICAgbGl2ZUNhbGxlZUxvY2Fscy5mb3JFYWNo
U2V0Qml0KFsmXShzaXplX3QgaW5kZXgpIHsKLSAgICAgICAgZXhlYy0+dW5jaGVja2VkUih2aXJ0
dWFsUmVnaXN0ZXJGb3JMb2NhbChpbmRleCkpID0gbG9jYWxBdChpbmRleCkuZ2V0KCk7Ci0gICAg
ICAgIGxvY2FsQXQoaW5kZXgpLmNsZWFyKCk7CisgICAgICAgIGV4ZWMtPnVuY2hlY2tlZFIodmly
dHVhbFJlZ2lzdGVyRm9yTG9jYWwoaW5kZXgpKSA9IGxvY2FsQXQoZ2VuZXJhdG9yTG9jYWxJbmRl
eCsrKS5nZXQoKTsKICAgICB9KTsKKyAgICBtX251bWJlck9mU2F2ZWRDYWxsZWVMb2NhbHMgPSAw
OwogfQogCiB2b2lkIEdlbmVyYXRvckZyYW1lOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwg
U2xvdFZpc2l0b3ImIHZpc2l0b3IpCkBAIC05MSw3ICsxMDIsMTIgQEAgdm9pZCBHZW5lcmF0b3JG
cmFtZTo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQog
ICAgIEdlbmVyYXRvckZyYW1lKiB0aGlzT2JqZWN0ID0ganNDYXN0PEdlbmVyYXRvckZyYW1lKj4o
Y2VsbCk7CiAgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKICAg
ICAvLyBTaW5jZSBvbmx5IHRydWUgY2VsbCBwb2ludGVycyBhcmUgc3RvcmVkIGFzIGEgY2VsbCwg
d2UgY2FuIHNhZmVseSBtYXJrIHRoZW0uCi0gICAgdmlzaXRvci5hcHBlbmRWYWx1ZXModGhpc09i
amVjdC0+bG9jYWxzKCksIHRoaXNPYmplY3QtPm1fbnVtYmVyT2ZDYWxsZWVMb2NhbHMpOworICAg
IHZpc2l0b3IuYXBwZW5kVmFsdWVzKHRoaXNPYmplY3QtPmxvY2FscygpLCB0aGlzT2JqZWN0LT5t
X251bWJlck9mU2F2ZWRDYWxsZWVMb2NhbHMpOworICAgIC8vIENsZWFyIG5vdCB1c2VkIGNhbGxl
ZSBsb2NhbHMgd2hlbiBtYXJraW5nLgorICAgIC8vIFRoaXMgZW5zdXJlcyB0aGF0LCAiaWYgYSBn
aXZlbiBsb2NhbCBoYXMgYSB2YWx1ZSwgdGhpcyB2YWx1ZSBpcyBjb3JyZWN0bHkgbWFya2VkIGlu
IHRoZSBwcmV2aW91cyBtYXJraW5nIHBoYXNlIi4KKyAgICBzaXplX3QgdW51c2VkTG9jYWxzQ291
bnQgPSB0aGlzT2JqZWN0LT5tX251bWJlck9mQ2FsbGVlTG9jYWxzIC0gdGhpc09iamVjdC0+bV9u
dW1iZXJPZlNhdmVkQ2FsbGVlTG9jYWxzOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdW51
c2VkTG9jYWxzQ291bnQ7ICsraSkKKyAgICAgICAgdGhpc09iamVjdC0+bG9jYWxBdCh0aGlzT2Jq
ZWN0LT5tX251bWJlck9mU2F2ZWRDYWxsZWVMb2NhbHMgKyBpKS5jbGVhcigpOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0dlbmVyYXRvckZyYW1lLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0
b3JGcmFtZS5oCmluZGV4IDNkNTQ1YjE0N2RkNGFiZmIyYmJiOWI1YTcxOTRlOGY3NDg0MWM0OWEu
LmNmMWRiN2EyYmVlNjBkYTI5NDY0ZWM0MTdhMGM1ZmI4YzFmMGFlOGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZyYW1lLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJhbWUuaApAQCAtMjcsMTEgKzI3LDE0
IEBACiAjZGVmaW5lIEdlbmVyYXRvckZyYW1lX2gKIAogI2luY2x1ZGUgIkpTQ2VsbC5oIgorI2lu
Y2x1ZGUgIkpTT2JqZWN0LmgiCiAjaW5jbHVkZSA8d3RmL0Zhc3RCaXRWZWN0b3IuaD4KIAogbmFt
ZXNwYWNlIEpTQyB7CiAKLWNsYXNzIEdlbmVyYXRvckZyYW1lIDogcHVibGljIEpTQ2VsbCB7Citj
bGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisKK2NsYXNzIEdlbmVyYXRvckZyYW1lIDogcHVi
bGljIEpTTm9uRmluYWxPYmplY3QgewogICAgIGZyaWVuZCBjbGFzcyBKSVQ7CiAjaWYgRU5BQkxF
KERGR19KSVQpCiAgICAgZnJpZW5kIGNsYXNzIERGRzo6U3BlY3VsYXRpdmVKSVQ7CkBAIC0zOSwx
MiArNDIsMTIgQEAgY2xhc3MgR2VuZXJhdG9yRnJhbWUgOiBwdWJsaWMgSlNDZWxsIHsKICNlbmRp
ZgogICAgIGZyaWVuZCBjbGFzcyBWTTsKIHB1YmxpYzoKLSAgICB0eXBlZGVmIEpTQ2VsbCBCYXNl
OwotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IFN0cnVjdHVyZUlz
SW1tb3J0YWwgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKKyAgICB0eXBlZGVmIEpTTm9uRmluYWxP
YmplY3QgQmFzZTsKIAogICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CiAKLSAgICBzdGF0aWMgR2Vu
ZXJhdG9yRnJhbWUqIGNyZWF0ZShWTSYsIHNpemVfdCBudW1iZXJPZkNhbGxlZUxvY2Fscyk7Cisg
ICAgc3RhdGljIEdlbmVyYXRvckZyYW1lKiBjcmVhdGUoRXhlY1N0YXRlKiwgc2l6ZV90IG51bWJl
ck9mQ2FsbGVlTG9jYWxzKTsKKyAgICBzdGF0aWMgR2VuZXJhdG9yRnJhbWUqIGNyZWF0ZShWTSYs
IFN0cnVjdHVyZSosIHNpemVfdCBudW1iZXJPZkNhbGxlZUxvY2Fscyk7CiAKICAgICBXcml0ZUJh
cnJpZXJCYXNlPFVua25vd24+KiBsb2NhbHMoKQogICAgIHsKQEAgLTUzLDcgKzU2LDYgQEAgY2xh
c3MgR2VuZXJhdG9yRnJhbWUgOiBwdWJsaWMgSlNDZWxsIHsKIAogICAgIFdyaXRlQmFycmllckJh
c2U8VW5rbm93bj4mIGxvY2FsQXQoc2l6ZV90IGluZGV4KQogICAgIHsKLSAgICAgICAgQVNTRVJU
KGluZGV4IDwgbV9udW1iZXJPZkNhbGxlZUxvY2Fscyk7CiAgICAgICAgIHJldHVybiBsb2NhbHMo
KVtpbmRleF07CiAgICAgfQogCkBAIC02Miw2ICs2NCwyMSBAQCBjbGFzcyBHZW5lcmF0b3JGcmFt
ZSA6IHB1YmxpYyBKU0NlbGwgewogICAgICAgICByZXR1cm4gV1RGOjpyb3VuZFVwVG9NdWx0aXBs
ZU9mPHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pPihzaXplb2YoR2VuZXJhdG9yRnJhbWUp
KTsKICAgICB9CiAKKyAgICBzdGF0aWMgc2l6ZV90IGxvY2FsT2Zmc2V0KHVuc2lnbmVkIGluZGV4
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIG9mZnNldE9mTG9jYWxzKCkgKyBpbmRleCAqIHNpemVv
ZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pOworICAgIH0KKworICAgIHN0YXRpYyBzaXplX3QgbnVt
YmVyT2ZDYWxsZWVMb2NhbHNPZmZzZXQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIE9CSkVDVF9P
RkZTRVRPRihHZW5lcmF0b3JGcmFtZSwgbV9udW1iZXJPZkNhbGxlZUxvY2Fscyk7CisgICAgfQor
CisgICAgc3RhdGljIHNpemVfdCBudW1iZXJPZlNhdmVkQ2FsbGVlTG9jYWxzT2Zmc2V0KCkKKyAg
ICB7CisgICAgICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoR2VuZXJhdG9yRnJhbWUsIG1fbnVt
YmVyT2ZTYXZlZENhbGxlZUxvY2Fscyk7CisgICAgfQorCiAgICAgc3RhdGljIHNpemVfdCBhbGxv
Y2F0aW9uU2l6ZUZvckxvY2Fscyh1bnNpZ25lZCBudW1iZXJPZkxvY2FscykKICAgICB7CiAgICAg
ICAgIHJldHVybiBvZmZzZXRPZkxvY2FscygpICsgbnVtYmVyT2ZMb2NhbHMgKiBzaXplb2YoV3Jp
dGVCYXJyaWVyPFVua25vd24+KTsKQEAgLTczLDE2ICs5MCwxNiBAQCBjbGFzcyBHZW5lcmF0b3JG
cmFtZSA6IHB1YmxpYyBKU0NlbGwgewogICAgIHZvaWQgcmVzdW1lKEV4ZWNTdGF0ZSosIGNvbnN0
IEZhc3RCaXRWZWN0b3ImIGxpdmVDYWxsZWVMb2NhbHMpOwogCiBwcml2YXRlOgotICAgIEdlbmVy
YXRvckZyYW1lKFZNJiwgc2l6ZV90IG51bWJlck9mQ2FsbGVlTG9jYWxzKTsKKyAgICBHZW5lcmF0
b3JGcmFtZShWTSYsIFN0cnVjdHVyZSosIHVpbnQzMl90IG51bWJlck9mQ2FsbGVlTG9jYWxzKTsK
IAotICAgIHNpemVfdCBtX251bWJlck9mQ2FsbGVlTG9jYWxzOworICAgIHVpbnQzMl90IG1fbnVt
YmVyT2ZDYWxsZWVMb2NhbHM7CisgICAgdWludDMyX3QgbV9udW1iZXJPZlNhdmVkQ2FsbGVlTG9j
YWxzIHsgMCB9OwogCiAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIAot
ICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKLQogcHJvdGVjdGVkOgogICAgIHN0YXRpYyB2
b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKKyAgICB2b2lkIGZpbmlz
aENyZWF0aW9uKFZNJik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCAzNWMxMmEzMTcw
ZWZlMjNhNzM4MjY5OTBlZTg2ZWZhZTk0NDQwZWRiLi45NDk2ZmVjZTgyM2M5MGMwODczYzM1MDlh
ODQ2MzhhOWJlYzBlZTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuY3BwCkBAIC01MSw2ICs1MSw3IEBACiAjaW5jbHVkZSAiRXJyb3JQcm90
b3R5cGUuaCIKICNpbmNsdWRlICJGdW5jdGlvbkNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiRnVu
Y3Rpb25Qcm90b3R5cGUuaCIKKyNpbmNsdWRlICJHZW5lcmF0b3JGcmFtZS5oIgogI2luY2x1ZGUg
IkdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJHZW5lcmF0b3JGdW5j
dGlvblByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkdlbmVyYXRvclByb3RvdHlwZS5oIgpAQCAtNTUz
LDYgKzU1NCw3IEBAIG1fICMjIHByb3Blck5hbWUgIyMgU3RydWN0dXJlLnNldCh2bSwgdGhpcywg
aW5zdGFuY2VUeXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoCiAjdW5kZWYgQ1JFQVRFX1BST1RP
VFlQRV9GT1JfREVSSVZFRF9JVEVSQVRPUl9UWVBFCiAKICAgICBtX3Byb3BlcnR5TmFtZUl0ZXJh
dG9yU3RydWN0dXJlLnNldCh2bSwgdGhpcywgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6Y3JlYXRl
U3RydWN0dXJlKHZtLCB0aGlzLCBtX2l0ZXJhdG9yUHJvdG90eXBlLmdldCgpKSk7CisgICAgbV9n
ZW5lcmF0b3JGcmFtZVN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIEdlbmVyYXRvckZyYW1lOjpjcmVh
dGVTdHJ1Y3R1cmUodm0sIHRoaXMsIGpzTnVsbCgpKSk7CiAgICAgbV9nZW5lcmF0b3JQcm90b3R5
cGUuc2V0KHZtLCB0aGlzLCBHZW5lcmF0b3JQcm90b3R5cGU6OmNyZWF0ZSh2bSwgdGhpcywgR2Vu
ZXJhdG9yUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1faXRlcmF0b3JQcm90
b3R5cGUuZ2V0KCkpKSk7CiAgICAgCiAgICAgLy8gQ29uc3RydWN0b3JzCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCBmOTBjMTkxMWNiZTIz
MzdiOTI4MDRiZDdjNGMyMzc2YTU3MzA4YTNkLi44ODIxN2JjNDhhODg0ZDYwYjVkMjg3NmFlNzU5
MDA1ZGExMGViNmIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmgKQEAgLTI4Myw2ICsyODMsNyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1
YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9i
YWxPYmplY3QsIFN0cnVjdHVyZT4gbV9jYWxsYmFja0Z1bmN0aW9uU3RydWN0dXJlOwogICAgIExh
enlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0dXJlPiBtX2NhbGxiYWNrT2JqZWN0U3Ry
dWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fcHJvcGVydHlOYW1lSXRlcmF0
b3JTdHJ1Y3R1cmU7CisgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9nZW5lcmF0b3JGcmFt
ZVN0cnVjdHVyZTsKICNpZiBKU0NfT0JKQ19BUElfRU5BQkxFRAogICAgIExhenlQcm9wZXJ0eTxK
U0dsb2JhbE9iamVjdCwgU3RydWN0dXJlPiBtX29iamNDYWxsYmFja0Z1bmN0aW9uU3RydWN0dXJl
OwogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0dXJlPiBtX29iamNXcmFw
cGVyT2JqZWN0U3RydWN0dXJlOwpAQCAtNTU0LDYgKzU1NSw3IEBAIGNsYXNzIEpTR2xvYmFsT2Jq
ZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIFN0cnVjdHVyZSog
Y2FsbGJhY2tGdW5jdGlvblN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FsbGJhY2tGdW5j
dGlvblN0cnVjdHVyZS5nZXQodGhpcyk7IH0KICAgICBTdHJ1Y3R1cmUqIGNhbGxiYWNrT2JqZWN0
U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9jYWxsYmFja09iamVjdFN0cnVjdHVyZS5nZXQo
dGhpcyk7IH0KICAgICBTdHJ1Y3R1cmUqIHByb3BlcnR5TmFtZUl0ZXJhdG9yU3RydWN0dXJlKCkg
Y29uc3QgeyByZXR1cm4gbV9wcm9wZXJ0eU5hbWVJdGVyYXRvclN0cnVjdHVyZS5nZXQoKTsgfQor
ICAgIFN0cnVjdHVyZSogZ2VuZXJhdG9yRnJhbWVTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBt
X2dlbmVyYXRvckZyYW1lU3RydWN0dXJlLmdldCgpOyB9CiAjaWYgSlNDX09CSkNfQVBJX0VOQUJM
RUQKICAgICBTdHJ1Y3R1cmUqIG9iamNDYWxsYmFja0Z1bmN0aW9uU3RydWN0dXJlKCkgY29uc3Qg
eyByZXR1cm4gbV9vYmpjQ2FsbGJhY2tGdW5jdGlvblN0cnVjdHVyZS5nZXQodGhpcyk7IH0KICAg
ICBTdHJ1Y3R1cmUqIG9iamNXcmFwcGVyT2JqZWN0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4g
bV9vYmpjV3JhcHBlck9iamVjdFN0cnVjdHVyZS5nZXQodGhpcyk7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNLmNwcAppbmRleCBkNTk4OTUxZTIyZjJlMjZjOWVlYWZmNzNkZmZkZTE0ZjE2
YTcwYWFlLi5kMzRhZGQzZWI1MjY2OGQyYWExN2JkODRmOWVmMWE0ZDQxOTcyMWQ1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC0yNDMsNyArMjQzLDYgQEAgVk06OlZNKFZN
VHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgIGluZmVycmVkVHlwZVN0cnVjdHVy
ZS5zZXQoKnRoaXMsIEluZmVycmVkVHlwZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051
bGwoKSkpOwogICAgIGluZmVycmVkVHlwZVRhYmxlU3RydWN0dXJlLnNldCgqdGhpcywgSW5mZXJy
ZWRUeXBlVGFibGU6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICBm
dW5jdGlvblJhcmVEYXRhU3RydWN0dXJlLnNldCgqdGhpcywgRnVuY3Rpb25SYXJlRGF0YTo6Y3Jl
YXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwotICAgIGdlbmVyYXRvckZyYW1lU3Ry
dWN0dXJlLnNldCgqdGhpcywgR2VuZXJhdG9yRnJhbWU6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywg
MCwganNOdWxsKCkpKTsKICAgICBleGNlcHRpb25TdHJ1Y3R1cmUuc2V0KCp0aGlzLCBFeGNlcHRp
b246OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICBwcm9taXNlRGVm
ZXJyZWRTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBKU1Byb21pc2VEZWZlcnJlZDo6Y3JlYXRlU3RydWN0
dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIGludGVybmFsUHJvbWlzZURlZmVycmVkU3Ry
dWN0dXJlLnNldCgqdGhpcywgSlNJbnRlcm5hbFByb21pc2VEZWZlcnJlZDo6Y3JlYXRlU3RydWN0
dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVk0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKaW5k
ZXggMjk3NDEyNjNiYjExNGJlZDBiM2M0ZWZjOWQ1MmQ1ZWJhYmQzODRkYy4uMWJjZGFmYTQ1MTE2
YjAwOTJjNmNlODE5ZmVhZDQzZGQ0M2VjZDdjZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVk0uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5oCkBAIC0zMTUsNyArMzE1LDYgQEAgY2xhc3MgVk0gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNv
dW50ZWQ8Vk0+IHsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBpbmZlcnJlZFR5cGVTdHJ1Y3R1cmU7
CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gaW5mZXJyZWRUeXBlVGFibGVTdHJ1Y3R1cmU7CiAgICAg
U3Ryb25nPFN0cnVjdHVyZT4gZnVuY3Rpb25SYXJlRGF0YVN0cnVjdHVyZTsKLSAgICBTdHJvbmc8
U3RydWN0dXJlPiBnZW5lcmF0b3JGcmFtZVN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJl
PiBleGNlcHRpb25TdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gcHJvbWlzZURlZmVy
cmVkU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGludGVybmFsUHJvbWlzZURlZmVy
cmVkU3RydWN0dXJlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0
cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQtYXJyYXkuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLWFuZC1hcnJheS5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5mZTkzOTgxMmZkYmFlYzZiODMyYmZkMDBmMjE1M2RlZjg0YmI3NTkyCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0
bC1hbmQtYXJyYXkuanMKQEAgLTAsMCArMSwyMyBAQAorKGZ1bmN0aW9uICgpIHsKKyAgICBmdW5j
dGlvbiAqZmliKCkKKyAgICB7CisgICAgICAgIGxldCBhID0gMTsKKyAgICAgICAgbGV0IGIgPSAx
OworICAgICAgICBsZXQgYyA9IFsgMCBdOworICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAg
ICAgICAgY1swXSA9IGE7CisgICAgICAgICAgICB5aWVsZCBjOworICAgICAgICAgICAgW2EsIGJd
ID0gW2IsIGEgKyBiXTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGxldCB2YWx1ZSA9IDA7Cisg
ICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxZTQ7ICsraSkgeworICAgICAgICBsZXQgZiA9IGZpYigp
OworICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDsgKytpKSB7CisgICAgICAgICAgICB2
YWx1ZSA9IGYubmV4dCgpLnZhbHVlOworICAgICAgICB9CisgICAgICAgIGlmICh2YWx1ZVswXSAh
PT0gMzU0MjI0ODQ4MTc5MjYyMDAwMDAwKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBi
YWQgdmFsdWU6JHtyZXN1bHR9YCk7CisgICAgfQorfSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwtYW5kLW9iamVjdC5q
cyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwt
YW5kLW9iamVjdC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NjczNDBmMmVhNGM3NDM4YTJkMjA5YWE0MGQwNjc3
ZTRhYjdkM2ZiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3Rz
L3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQtb2JqZWN0LmpzCkBAIC0wLDAgKzEsMjMgQEAK
KyhmdW5jdGlvbiAoKSB7CisgICAgZnVuY3Rpb24gKmZpYigpCisgICAgeworICAgICAgICBsZXQg
YSA9IDE7CisgICAgICAgIGxldCBiID0gMTsKKyAgICAgICAgbGV0IGMgPSB7IGZpYjogMCB9Owor
ICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAgYy5maWIgPSBhOworICAgICAgICAg
ICAgeWllbGQgYzsKKyAgICAgICAgICAgIFthLCBiXSA9IFtiLCBhICsgYl07CisgICAgICAgIH0K
KyAgICB9CisKKyAgICBsZXQgdmFsdWUgPSAwOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMWU0
OyArK2kpIHsKKyAgICAgICAgbGV0IGYgPSBmaWIoKTsKKyAgICAgICAgZm9yIChsZXQgaSA9IDA7
IGkgPCAxMDA7ICsraSkgeworICAgICAgICAgICAgdmFsdWUgPSBmLm5leHQoKS52YWx1ZTsKKyAg
ICAgICAgfQorICAgICAgICBpZiAodmFsdWUuZmliICE9PSAzNTQyMjQ4NDgxNzkyNjIwMDAwMDAp
CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCB2YWx1ZToke3Jlc3VsdH1gKTsKKyAg
ICB9Cit9KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVz
cy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQtc3RyaW5nLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQtc3RyaW5nLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjQzOGFlNmFiMzM0NzA0NjgyMjg0OWY0MzAwNGVhNWM0MDNlZWRhMjgKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRs
LWFuZC1zdHJpbmcuanMKQEAgLTAsMCArMSwyMiBAQAorKGZ1bmN0aW9uICgpIHsKKyAgICBmdW5j
dGlvbiAqZmliKCkKKyAgICB7CisgICAgICAgIGxldCBhID0gMTsKKyAgICAgICAgbGV0IGIgPSAx
OworICAgICAgICBsZXQgYyA9ICJSZXN1bHQhICI7CisgICAgICAgIHdoaWxlICh0cnVlKSB7Cisg
ICAgICAgICAgICB5aWVsZCBjICsgYTsKKyAgICAgICAgICAgIFthLCBiXSA9IFtiLCBhICsgYl07
CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQgdmFsdWUgPSAwOworICAgIGZvciAobGV0IGkg
PSAwOyBpIDwgMWU0OyArK2kpIHsKKyAgICAgICAgbGV0IGYgPSBmaWIoKTsKKyAgICAgICAgZm9y
IChsZXQgaSA9IDA7IGkgPCAxMDA7ICsraSkgeworICAgICAgICAgICAgdmFsdWUgPSBmLm5leHQo
KS52YWx1ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAodmFsdWUgIT09IGBSZXN1bHQhIDM1NDIy
NDg0ODE3OTI2MjAwMDAwMGApCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCB2YWx1
ZToke3Jlc3VsdH1gKTsKKyAgICB9Cit9KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC5qcyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzQw
ZTMzZGJjODY4YmVhN2E4OTNjOWVjMTZiNzc5ZWMyNmJkYjE5YwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwuanMK
QEAgLTAsMCArMSwyMSBAQAorKGZ1bmN0aW9uICgpIHsKKyAgICBmdW5jdGlvbiAqZmliKCkKKyAg
ICB7CisgICAgICAgIGxldCBhID0gMTsKKyAgICAgICAgbGV0IGIgPSAxOworICAgICAgICB3aGls
ZSAodHJ1ZSkgeworICAgICAgICAgICAgeWllbGQgYTsKKyAgICAgICAgICAgIFthLCBiXSA9IFti
LCBhICsgYl07CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQgdmFsdWUgPSAwOworICAgIGZv
ciAobGV0IGkgPSAwOyBpIDwgMWU0OyArK2kpIHsKKyAgICAgICAgbGV0IGYgPSBmaWIoKTsKKyAg
ICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDA7ICsraSkgeworICAgICAgICAgICAgdmFsdWUg
PSBmLm5leHQoKS52YWx1ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAodmFsdWUgIT09IDM1NDIy
NDg0ODE3OTI2MjAwMDAwMCkKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIHZhbHVl
OiR7cmVzdWx0fWApOworICAgIH0KK30oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1mcmFtZS1lbXB0eS5qcyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZyYW1lLWVtcHR5LmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjU5ZTg4NTViZmFjM2M1NmRmOTI2YWJkNDI4YzAxM2MzMzQxNjI3NDYKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1mcmFt
ZS1lbXB0eS5qcwpAQCAtMCwwICsxLDM0IEBACitmdW5jdGlvbiBzaG91bGRUaHJvdyhmdW5jLCBl
cnJvck1lc3NhZ2UpIHsKKyAgICB2YXIgZXJyb3JUaHJvd24gPSBmYWxzZTsKKyAgICB2YXIgZXJy
b3IgPSBudWxsOworICAgIHRyeSB7CisgICAgICAgIGZ1bmMoKTsKKyAgICB9IGNhdGNoIChlKSB7
CisgICAgICAgIGVycm9yVGhyb3duID0gdHJ1ZTsKKyAgICAgICAgZXJyb3IgPSBlOworICAgIH0K
KyAgICBpZiAoIWVycm9yVGhyb3duKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ25vdCB0aHJv
d24nKTsKKyAgICBpZiAoU3RyaW5nKGVycm9yKSAhPT0gZXJyb3JNZXNzYWdlKQorICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoYGJhZCBlcnJvcjogJHtTdHJpbmcoZXJyb3IpfWApOworfQorCitzaG91
bGRUaHJvdyhmdW5jdGlvbiAoKSB7CisgICAgZnVuY3Rpb24gKmZpYihmbGFnKQorICAgIHsKKyAg
ICAgICAgbGV0IGEgPSAxOworICAgICAgICBsZXQgYiA9IDE7CisgICAgICAgIHlpZWxkIDQyOwor
ICAgICAgICBpZiAoZmxhZykKKyAgICAgICAgICAgIHJldHVybiBjOworICAgICAgICBsZXQgYyA9
IDUwMDsKKyAgICB9CisKKyAgICBsZXQgdmFsdWUgPSAwOworICAgIGZvciAobGV0IGkgPSAwOyBp
IDwgMWU0OyArK2kpIHsKKyAgICAgICAgZm9yIChsZXQgdiBvZiBmaWIoZmFsc2UpKSB7CisgICAg
ICAgIH0KKyAgICB9CisgICAgZm9yIChsZXQgdiBvZiBmaWIodHJ1ZSkpIHsKKyAgICB9Cit9LCBg
UmVmZXJlbmNlRXJyb3I6IENhbm5vdCBhY2Nlc3MgdW5pbml0aWFsaXplZCB2YXJpYWJsZS5gKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>283310</attachid>
            <date>2016-07-11 05:14:50 -0700</date>
            <delta_ts>2016-07-12 12:21:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-152723-20160711211408.patch</filename>
            <type>text/plain</type>
            <size>148688</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAzMDUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
MmYyMTdhN2Q5NDg4YTdjYmQzNDMxNzM0N2ViNzM4MmFhYTEyZmUyLi5mYzY2MGIzMzdlMjVlNTc3
MjQ5ZDFjYzIyMjkzNTJhMTk5ZTU2MzE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSwyMzggQEAKIDIwMTYtMDctMTEgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CiAKKyAgICAgICAgW0RGR11bRlRMXSBJbXBsZW1lbnQgRVM2IEdlbmVyYXRvcnMgaW4g
REZHIC8gRlRMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNTI3MjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworCisgICAg
ICAgICEhISBXSVAgISEhIFRoZSBmb2xsb3dpbmcgZG9jdW1lbnQgaXMgbm90IHVwZGF0ZWQgeWV0
LgorCisKKworCisKKworCisKKyAgICAgICAgVGhpcyBwYXRjaCBpcyBhbiBpbml0aWFsIGF0dGVt
cHQgdG8gaW1wbGVtZW50IERGRyBhbmQgRlRMIGNhcGFibGUgRVM2IGdlbmVyYXRvcnMuCisgICAg
ICAgIFdlIGludHJvZHVjZSB0aGUgc2V2ZXJhbCBieXRlY29kZXMgYW5kIGNvbXBpbGUgdGhlbSBp
biBERkcgLyBGVEwuCisKKyAgICAgICAgLSBvcF9uZXdfZ2VuZXJhdG9yX2ZyYW1lCisKKyAgICAg
ICAgICAgIEFsbG9jYXRlIEdlbmVyYXRvckZyYW1lIGluIHRoZSBieXRlY29kZSBpbnN0ZWFkIG9m
IGFsbG9jYXRpbmcgaXQgaW4gdGhlIG9wX3NhdmUuCisKKyAgICAgICAgLSBvcF9zYXZlCisKKyAg
ICAgICAgICAgIE5vdyBCeXRlY29kZUxpdmVuZXNzIGFuYWx5c2lzIGFuZCBQcmVjaXNlSnVtcFRh
cmdldCBhbmFseXNpcyBoYXZlIDIgbW9kZXM7IFN0YW5kYXJkIGFuZCBFeHRyYWN0R2VuZXJhdG9y
TGl2ZUNhbGxlZUxvY2Fscy4KKyAgICAgICAgICAgIFVuZGVyIEV4dHJhY3RHZW5lcmF0b3JMaXZl
Q2FsbGVlTG9jYWxzIG1vZGUsIG9wX3NhdmUgaGFzIGp1bXAgdG8gdGhlIG1lcmdlIHBvaW50LiBU
aGlzIGp1bXAgaXMganVzdCB1c2VkIGZvciB1c2UtZGVmIGFuYWx5c2lzIHRvIGV4dHJhY3QKKyAg
ICAgICAgICAgIGxpdmUgY2FsbGVlIGxvY2FscyBhdCB0aGUgbWVyZ2UgcG9pbnQuIFRoZXNlIGxp
dmUgY2FsbGVlIGxvY2FscyBzaG91bGQgYmUgc2F2ZWQgYW5kIHJlc3VtZWQgdG8gc3VzcGVuZCBh
bmQgcmVzdW1lIGdlbmVyYXRvcnMuCisgICAgICAgICAgICBUaGUgbWVyZ2UgcG9pbnQgaXMgdGhl
IHBvaW50IHRoYXQgbWVyZ2luZyB0aGUgMiBiYXNpYyBibG9ja3MsIHNhdmluZyBsb2NhbHMgdG8g
dGhlIGdlbmVyYXRvciBmcmFtZSBhbmQgcmVzdW1pbmcgbG9jYWxzIGZyb20gdGhlIGdlbmVyYXRv
ciBmcmFtZS4KKworICAgICAgICAtIG9wX3Jlc3VtZQorCisgICAgICAgICAgICBUaGlzIHJldHJp
ZXZlcyBsb2NhbCB2YXJpYWJsZSBmcm9tIHRoZSBnZW5lcmF0b3IgZnJhbWUuIEV4dHJhY3RHZW5l
cmF0b3JMaXZlQ2FsbGVlTG9jYWxzIGFuYWx5c2lzIHdpbGwgZGlzY292ZXIgbGl2ZSBsb2NhbHMg
YXQgdGhlIG1lcmdlIHBvaW50IGFuZCByZWNvcmQgbGl2ZW5lc3MKKyAgICAgICAgICAgIGluZm9y
bWF0aW9uIHRvIG9wX3NhdmUgYW5kIG9wX3Jlc3VtZS4gT24gdGhlIGJhc2lzIG9mIHRoaXMgaW5m
b3JtYXRpb24sIG9wX3Jlc3VtZSB3aWxsIHJldHJpZXZlIHNhdmVkIGxvY2FscyBmcm9tIHRoZSBn
ZW5lcmF0b3IgZnJhbWUuCisKKyAgICAgICAgSGVyZSwgd2UgZXhwbGFpbiBhYm91dCBob3cgdG8g
cHJlcHJvY2VzcyBieXRlY29kZXMuCisgICAgICAgIEZpcnN0LCB3ZSBlbWl0IG9wX3NhdmUsIG9w
X3Jlc3VtZSBhbmQgcGVyZm9ybSBFeHRyYWN0R2VuZXJhdG9yTGl2ZUNhbGxlZUxvY2FscyBhbmFs
eXNpcy4KKworICAgICAgICBbZW50cnldIC0rLS0+IFtzYXZlIGJsb2NrXSAtPiBvcF9zYXZlIChp
dCBpcyBicmFuY2hpbmcgYnl0ZWNvZGUpIC0tLS0tLT4gW21lcmdlIGJsb2NrXSAtPiAuLi4KKyAg
ICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorICAgICAgICAgICAgICAgICB8ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICstPiBvcF9yZXQgICAgICAgICAgICAgICAgICAgICAg
ICB8CisgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0+IG9wX3Jlc3VtZSAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKworICAgICAgICBUaGVuLCBkaXNj
b3ZlciBsaXZlIGxvY2FscyBpbmZvcm1hdGlvbiAoYXMgRmFzdEJpdFZlY3RvcikgYXQgdGhlIG1l
cmdlIHBvaW50IGFuZCBzdG9yZSBpdCB0byBjb3JyZXNwb25kaW5nIG9wX3NhdmUgYW5kIG9wX3Jl
c3VtZS4KKyAgICAgICAgQWZ0ZXIgdGhhdCwgdW5kZXIgU3RhbmRhcmQgYW5hbHlzaXMgbW9kZSwg
dGhlIGFib3ZlIGJ5dGVjb2RlIHN0cmVhbSB3aWxsIGNvbnN0cnVjdCB0aGUgZm9sbG93aW5nIENG
Ry4KKyAgICAgICAgSW4gdGhlIGZvbGxvd2luZyBDRkcsIG9wX3NhdmUgbm8gbG9uZ2VyIGhhcyBq
dW1wIHRvIHRoZSBtZXJnZSBwb2ludC4gVGhlIHJlbW92ZWQganVtcCBlZGdlIHdhcyBqdXN0IHVz
ZWQgdG8gY2FsY3VsYXRlIGxpdmVuZXNzIGluZm9ybWF0aW9uIGF0IHRoZSBtZXJnZSBwb2ludC4K
KworICAgICAgICBbZW50cnldIC0rLS0+IFtzYXZlIGJsb2NrXSAtPiBvcF9zYXZlIC0+IG9wX3Jl
dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArLT4gW21lcmdlIGJsb2NrXSAtPiAuLi4K
KyAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgICAgICB8ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8CisgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0+IG9wX3Jlc3VtZSAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKworICAgICAgICBBbmQgd2Ug
aW50cm9kdWNlcyBzZXZlcmFsIERGRyBub2Rlcy4KKworICAgICAgICAtIE5ld0dlbmVyYXRvckZy
YW1lCisKKyAgICAgICAgICAgIFRoaXMganVzdCBhbGxvY2F0ZXMgR2VuZXJhdG9yRnJhbWUuCisK
KyAgICAgICAgLSBSZXNpemVHZW5lcmF0b3JMb2NhbHMKKworICAgICAgICAgICAgVGhpcyBzZXQg
R2VuZXJhdG9yRnJhbWU6Om1fbnVtYmVyT2ZTYXZlZENhbGxlZUxvY2FscyAqTiouIFRoaXMgbm9k
ZSBpcyB1c2VkIHRvICgxKSBhbGxvY2F0ZSBzcGFjZSBmb3IgbG9jYWxzIGluIEdlbmVyYXRvckZy
YW1lIGFuZCAoMikgZGVhbGxvY2F0ZSBzcGFjZSBpbgorICAgICAgICAgICAgR2VuZXJhdG9yRnJh
bWUgYnkgc2V0dGluZyBpdCBhcyAwLgorCisgICAgICAgIC0gR2V0R2VuZXJhdG9yTG9jYWwKKwor
ICAgICAgICAgICAgR2V0IGEgc2F2ZWQgbG9jYWwgdmFyaWFibGUgZnJvbSBhIGdlbmVyYXRvciBm
cmFtZS4gR2V0R2VuZXJhdG9yTG9jYWwgYW5kIFNldEdlbmVyYXRvckxvY2FsIGFyZSBsaW5rZWQg
d2l0aCBHZW5lcmF0b3JMb2NhbERhdGEuIFNvIHR5cGUgcHJlZGljYXRpb24gYW5kIGZsYWdzCisg
ICAgICAgICAgICBhcmUgY29ycmVjdGx5IHByb3BhZ2F0ZWQgYmV5b25kIHRoZSBnZW5lcmF0b3Ig
ZnJhbWUuCisKKyAgICAgICAgLSBTZXRHZW5lcmF0b3JMb2NhbAorCisgICAgICAgICAgICBTdG9y
ZSBhIGxvY2FsIHZhcmlhYmxlIHRvIGEgZ2VuZXJhdG9yIGZyYW1lLgorCisgICAgICAgIEZ1dHVy
ZSBwbGFucyBhcmUgdGhlIGZvbGxvd2luZ3MuCisKKyAgICAgICAgMS4gU3VwcG9ydCB0cmFuc2Zl
cnJpbmcgQWJzdHJhY3RWYWx1ZSBiZXR3ZWVuIFNldEdlbmVyYXRvckxvY2FsIGFuZCBHZXRHZW5l
cmF0b3JMb2NhbC4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MzE4
MworCisgICAgICAgIDIuIENyZWF0ZSBKU0dlbmVyYXRvciBhbmQgYWxsb2NhdGUgaXQgaW4gdGhl
IGdlbmVyYXRvciB3cmFwcGVyIGZ1bmN0aW9uLiBUaGlzIHNob3VsZCBiZSBjb21waWxlZCBpbiBE
RkcgLyBGVEwgYW5kCisgICAgICAgIHRoaXMgb2JqZWN0IHNob3VsZCBiZSB0cmFja2VkIChieSBl
c2NhcGUgYW5hbHlzaXMpIGFuZCBlbGltaW5hdGVkIGlmIHBvc3NpYmxlIGJ5IG9iamVjdCBhbGxv
Y2F0aW9uIGVsaW1pbmF0aW9uLgorCisgICAgICAgIDMuIEFuZCBvbmNlIHdlIGV4cGxvaXQgdGhh
dCBHZW5lcmF0b3JGcmFtZSBpcyBub3QgZXNjYXBlZCBmcm9tIHRoZSBnaXZlbiBGVEwtZWQgZnVu
Y3Rpb24sIHdlIHdpbGwgZWxpbWluYXRlIEdlbmVyYXRvckZyYW1lIGFsbG9jYXRpb24gYW5kCisg
ICAgICAgIGNvbnZlcnQgR2VuZXJhdG9yTG9jYWwgb3BlcmF0aW9ucyBpbnRvIGdldC9zZXQgbG9j
YWwgb3BlcmF0aW9ucy4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYnVpbHRp
bnMvR2VuZXJhdG9yUHJvdG90eXBlLmpzOgorICAgICAgICAoZ2xvYmFsUHJpdmF0ZS5nZW5lcmF0
b3JSZXN1bWUpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5jcHA6Cisg
ICAgICAgIChKU0M6OmlzQnJhbmNoKToKKyAgICAgICAgKEpTQzo6Z2V0T3Bjb2RlSUQpOgorICAg
ICAgICAoSlNDOjpjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2Nrc0ludGVybmFsKToKKyAgICAgICAg
KEpTQzo6Y29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5
dGVjb2RlQmFzaWNCbG9jay5oOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9y
aWZpY2F0aW9uLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OmlzVmFsaWRSZWdpc3RlckZvckxp
dmVuZXNzKToKKyAgICAgICAgKEpTQzo6Z2V0TGVhZGVyT2Zmc2V0Rm9yQmFzaWNCbG9jayk6Cisg
ICAgICAgIChKU0M6OmZpbmRCYXNpY0Jsb2NrV2l0aExlYWRlck9mZnNldCk6CisgICAgICAgIChK
U0M6OmJsb2NrQ29udGFpbnNCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OmZpbmRCYXNp
Y0Jsb2NrRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpjb21wdXRlRGVmc0ZvckJ5
dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNl
dCk6CisgICAgICAgIChKU0M6OnN0ZXBPdmVySW5zdHJ1Y3Rpb24pOgorICAgICAgICAoSlNDOjpj
b21wdXRlTG9jYWxMaXZlbmVzc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Y29t
cHV0ZUxvY2FsTGl2ZW5lc3NGb3JCbG9jayk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJh
dG9yaWZpY2F0aW9uOjpCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbik6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uOjpnZXRMaXZlbmVzc0luZm9BdEJ5dGVjb2RlT2Zm
c2V0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb246OnN0b3JhZ2VG
b3JHZW5lcmF0b3JMb2NhbCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0
aW9uOjpydW4pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbjo6cnVu
TGl2ZW5lc3NBbmFseXNpcyk6CisgICAgICAgIChKU0M6OnBlcmZvcm1HZW5lcmF0b3JpZmljYXRp
b24pOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmg6IENv
cGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNz
QW5hbHlzaXMuaC4KKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUdyYXBoLmNwcDogQ29waWVk
IGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFs
eXNpcy5oLgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlR3JhcGguaDogQWRkZWQuCisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR3JhcGg6OmNvZGVCbG9jayk6CisgICAgICAgIChKU0M6OkJ5dGVj
b2RlR3JhcGg6OmJhc2ljQmxvY2tzKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHcmFwaDo6aW5z
dHJ1Y3Rpb25zKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHcmFwaDo6UmV2ZXJzZUl0ZXJhYmxl
OjpSZXZlcnNlSXRlcmFibGUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdyYXBoOjpSZXZlcnNl
SXRlcmFibGU6OmJlZ2luKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHcmFwaDo6UmV2ZXJzZUl0
ZXJhYmxlOjplbmQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdyYXBoOjpiYXNpY0Jsb2Nrc0lu
UmV2ZXJzZU9yZGVyKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHcmFwaDxCbG9jaz46OkJ5dGVj
b2RlR3JhcGgpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlSW5zZXJ0aW9uU2V0LmNwcDog
QWRkZWQuCisgICAgICAgIChKU0M6OkJ5dGVjb2RlSW5zZXJ0aW9uU2V0OjphZGp1c3RPZmZzZXQp
OgorICAgICAgICAoSlNDOjpCeXRlY29kZUluc2VydGlvblNldDo6ZXhlY3V0ZSk6CisgICAgICAg
ICogYnl0ZWNvZGUvQnl0ZWNvZGVJbnNlcnRpb25TZXQuaDogQ29waWVkIGZyb20gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5oLgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUluc2VydGlvblNldDo6Qnl0ZWNvZGVJbnNlcnRpb25TZXQpOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUluc2VydGlvblNldDo6aW5zZXJ0KToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVJbnNlcnRpb25TZXQ6OnJlbW92ZUJ5dGVjb2RlKToKKyAgICAgICAgKiBieXRlY29k
ZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUxp
dmVuZXNzQW5hbHlzaXM6OkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcyk6CisgICAgICAgIChKU0M6
OmZpbmRCYXNpY0Jsb2NrV2l0aExlYWRlck9mZnNldCk6CisgICAgICAgIChKU0M6OmZpbmRCYXNp
Y0Jsb2NrRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpzdGVwT3Zlckluc3RydWN0
aW9uKToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCeXRlY29kZU9mZnNl
dCk6CisgICAgICAgIChKU0M6OmNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQmxvY2spOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OnJ1bkxpdmVuZXNzRml4cG9pbnQpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmdldExpdmVuZXNzSW5mb0F0
Qnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6
OmNvbXB1dGVGdWxsTGl2ZW5lc3MpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzQW5h
bHlzaXM6OmNvbXB1dGVLaWxscyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlTGl2ZW5lc3NBbmFs
eXNpczo6ZHVtcFJlc3VsdHMpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlz
aXM6OmNvbXB1dGUpOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGl2ZW5l
c3NBbmFseXNpcy5oOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmg6CisgICAg
ICAgIChKU0M6OmNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpj
b21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxv
Y2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKToKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjp2YWxpZGF0ZSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6
ZHVtcEJ5dGVjb2RlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpzaHJpbmtU
b0ZpdCk6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAg
IChKU0M6OkNvZGVCbG9jazo6bGl2ZW5lc3NBbmFseXNpcyk6CisgICAgICAgIChKU0M6OkNvZGVC
bG9jazo6bGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQpOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVj
b2RlL0hhbmRsZXJJbmZvLmg6CisgICAgICAgICogYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRz
LmNwcDoKKyAgICAgICAgKEpTQzo6Z2V0T3Bjb2RlSUQpOgorICAgICAgICAoSlNDOjpnZXRKdW1w
VGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZVByZWNpc2VK
dW1wVGFyZ2V0c0ludGVybmFsKToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZVByZWNpc2VKdW1wVGFy
Z2V0cyk6CisgICAgICAgIChKU0M6OmZpbmRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KToK
KyAgICAgICAgKEpTQzo6cmVjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKToKKyAgICAgICAgKiBi
eXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHMuaDoKKyAgICAgICAgKiBieXRlY29kZS9Vbmxpbmtl
ZENvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjpoYW5kbGVy
Rm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6aGFu
ZGxlckZvckluZGV4KToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oOgor
ICAgICAgICAoSlNDOjpVbmxpbmtlZFN0cmluZ0p1bXBUYWJsZTo6b2Zmc2V0Rm9yVmFsdWUpOgor
ICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6anVtcFRhcmdldHMpOgorICAgICAgICAo
SlNDOjpVbmxpbmtlZENvZGVCbG9jazo6cHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnMpOgorICAg
ICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2Vu
ZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0TmV3R2VuZXJhdG9yRnJhbWUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdENvbXBsZXhQb3BTY29wZXMpOgorICAgICAgICAoSlNDOjpwcmVwYXJlSnVtcFRh
YmxlRm9yU3RyaW5nU3dpdGNoKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRZaWVsZFBvaW50KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRTYXZl
KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXN1bWUpOgorICAgICAg
ICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpCeXRl
Y29kZUdlbmVyYXRvcjo6Z2VuZXJhdG9yRnJhbWVSZWdpc3Rlcik6CisgICAgICAgICogZGZnL0RG
R09wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGdlbmVyYXRlLWJ5dGVjb2RlLWZpbGVzOgorICAg
ICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpTQzo6ZmluZEV4
Y2VwdGlvbkhhbmRsZXIpOgorICAgICAgICAoSlNDOjpHZXRDYXRjaEhhbmRsZXJGdW5jdG9yOjpv
cGVyYXRvcigpKToKKyAgICAgICAgKEpTQzo6VW53aW5kRnVuY3Rvcjo6b3BlcmF0b3IoKSk6Cisg
ICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVN
YWluUGFzcyk6IERlbGV0ZWQuCisgICAgICAgICogaml0L0pJVC5oOgorICAgICAgICAqIGppdC9K
SVRPcGNvZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3NhdmUpOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcmVzdW1lKTogRGVsZXRlZC4KKyAgICAgICAg
KiBqaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRXcml0
ZUJhcnJpZXIpOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAg
ICAgICAqIHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBl
Pjo6cGFyc2VJbm5lcik6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUdl
bmVyYXRvckZ1bmN0aW9uU291cmNlRWxlbWVudHMpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4
ZXJUeXBlPjo6Y3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyk6CisgICAgICAgICogcGFyc2VyL1Bh
cnNlci5oOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcDoKKyAgICAgICAg
KEpTQzo6U0xPV19QQVRIX0RFQ0wpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9u
U2xvd1BhdGhzLmg6CisgICAgICAgICogcnVudGltZS9HZW5lcmF0b3JGcmFtZS5jcHA6IFJlbW92
ZWQuCisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpHZW5lcmF0b3JGcmFtZSk6IERlbGV0
ZWQuCisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpmaW5pc2hDcmVhdGlvbik6IERlbGV0
ZWQuCisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpjcmVhdGVTdHJ1Y3R1cmUpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlKTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OnNhdmUpOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpHZW5lcmF0b3JGcmFtZTo6cmVzdW1lKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJh
dG9yRnJhbWU6OnZpc2l0Q2hpbGRyZW4pOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvR2Vu
ZXJhdG9yRnJhbWUuaDogUmVtb3ZlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6Omxv
Y2Fscyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpsb2NhbEF0KTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6Om9mZnNldE9mTG9jYWxzKTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OmFsbG9jYXRpb25TaXplRm9y
TG9jYWxzKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6Cisg
ICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpnZW5lcmF0b3JGcmFtZVN0cnVjdHVyZSk6Cisg
ICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpWTSk6IERlbGV0ZWQu
CisgICAgICAgICogcnVudGltZS9WTS5oOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9nZW5lcmF0
b3ItZmliLWZ0bC1hbmQtYXJyYXkuanM6IEFkZGVkLgorICAgICAgICAoZmliKToKKyAgICAgICAg
KiB0ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwtYW5kLW9iamVjdC5qczogQWRkZWQuCisg
ICAgICAgIChmaWIpOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC1h
bmQtc3RyaW5nLmpzOiBBZGRlZC4KKyAgICAgICAgKGZpYik6CisgICAgICAgICogdGVzdHMvc3Ry
ZXNzL2dlbmVyYXRvci1maWItZnRsLmpzOiBBZGRlZC4KKyAgICAgICAgKGZpYik6CisgICAgICAg
ICogdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1mcmFtZS1lbXB0eS5qczogQWRkZWQuCisgICAgICAg
IChzaG91bGRUaHJvdyk6CisgICAgICAgIChzaG91bGRUaHJvdy5maWIpOgorCisyMDE2LTA3LTEx
ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCiAgICAgICAgIFJFR1JF
U1NJT04ocjIwMjk5Mik6IEpTQyB2YXJhcmdzIHRlc3RzIGFyZSBicm9rZW4KICAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1OTYxNgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggZWI0ZWQwNTBiYWFlOGEyNTNiYzljOWUzYjU3MmJi
OGZmZmFlOWFmZC4uZmU2YTYxNjgzNWZmMjc0OTNhNjcwZWRmNTMzZjVmNzk2MjA0YWM1NyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTc4LDYgKzE3OCw5IEBAIHNldChK
YXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgYnl0ZWNvZGUvQXJyYXlBbGxvY2F0aW9uUHJvZmls
ZS5jcHAKICAgICBieXRlY29kZS9BcnJheVByb2ZpbGUuY3BwCiAgICAgYnl0ZWNvZGUvQnl0ZWNv
ZGVCYXNpY0Jsb2NrLmNwcAorICAgIGJ5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9u
LmNwcAorICAgIGJ5dGVjb2RlL0J5dGVjb2RlR3JhcGguY3BwCisgICAgYnl0ZWNvZGUvQnl0ZWNv
ZGVJbnNlcnRpb25TZXQuY3BwCiAgICAgYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3Ry
eS5jcHAKICAgICBieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwCiAgICAgYnl0
ZWNvZGUvQ2FsbEVkZ2UuY3BwCkBAIC02NTUsNyArNjU4LDYgQEAgc2V0KEphdmFTY3JpcHRDb3Jl
X1NPVVJDRVMKICAgICBydW50aW1lL0Z1bmN0aW9uSGFzRXhlY3V0ZWRDYWNoZS5jcHAKICAgICBy
dW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcAogICAgIHJ1bnRpbWUvRnVuY3Rpb25SYXJlRGF0
YS5jcHAKLSAgICBydW50aW1lL0dlbmVyYXRvckZyYW1lLmNwcAogICAgIHJ1bnRpbWUvR2VuZXJh
dG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKICAgICBydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9u
UHJvdG90eXBlLmNwcAogICAgIHJ1bnRpbWUvR2VuZXJhdG9yUHJvdG90eXBlLmNwcApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA0OTM4Zjc0MWRjNzFiNmUyYzMzYTg3N2I5MDBjMzFk
OTNmYjg0NzQ3Li43ZDI0YjE1ZmJjNGU3MDhlMjUwNGZmMDI1ZGM2MWQwYzEzMTM4ZjA1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTI0OCw4ICsxMjQ4LDYgQEAKIAkJNzA5RkI4
NkMxQUUzMzVDNjAwMzlEMDY5IC8qIFdlYWtTZXRQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwOUZCODY2MUFFMzM1QzYwMDM5RDA2OSAv
KiBXZWFrU2V0UHJvdG90eXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJNzBCMEE5RDExQTlCNjY0NjAwMDEzMDZBIC8qIFJ1bnRpbWVGbGFncy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBCMEE5RDAx
QTlCNjYyMDAwMDEzMDZBIC8qIFJ1bnRpbWVGbGFncy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcwQjc5MTkxMUMwMjRBMTMwMDI0ODFFMiAvKiBT
b3VyY2VDb2RlS2V5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3MEI3OTE4RTFDMDI0NEM5MDAyNDgxRTIgLyogU291cmNlQ29kZUtleS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTcwQjc5MTkyMUMwMjRB
MjMwMDI0ODFFMiAvKiBHZW5lcmF0b3JGcmFtZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEI3OTE4MzFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJh
dG9yRnJhbWUuY3BwICovOyB9OwotCQk3MEI3OTE5MzFDMDI0QTI4MDAyNDgxRTIgLyogR2VuZXJh
dG9yRnJhbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDcwQjc5MTg0MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGcmFtZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcwQjc5MTk0MUMwMjRBMjgw
MDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwQjc5MTg1MUMwMjQ0MzIwMDI0ODFF
MiAvKiBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCAqLzsgfTsKIAkJNzBCNzkxOTUx
QzAyNEEyODAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwQjc5MTg2MUMwMjQ0MzIw
MDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzBCNzkxOTYxQzAyNEEyODAwMjQ4
MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwQjc5MTg3MUMwMjQ0MzIwMDI0ODFFMiAvKiBH
ZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5jcHAgKi87IH07CkBAIC0zNDQ1LDggKzM0NDMsNiBA
QAogCQk3MDlGQjg2NTFBRTMzNUM2MDAzOUQwNjkgLyogV2Vha1NldFByb3RvdHlwZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWFrU2V0UHJvdG90eXBlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzA5RkI4NjYxQUUzMzVDNjAwMzlEMDY5IC8q
IFdlYWtTZXRQcm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vh
a1NldFByb3RvdHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MEIwQTlEMDFB
OUI2NjIwMDAwMTMwNkEgLyogUnVudGltZUZsYWdzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFJ1bnRpbWVGbGFncy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3
MEI3OTE4MzFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnJhbWUuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR2VuZXJhdG9yRnJhbWUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQk3MEI3OTE4NDFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9y
RnJhbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2VuZXJhdG9yRnJhbWUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzBCNzkxODUxQzAyNDQzMjAwMjQ4MUUy
IC8qIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcwQjc5MTg2MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5l
cmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNzBCNzkxODcxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uUHJv
dG90eXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdlbmVyYXRv
ckZ1bmN0aW9uUHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTU2
NjcsOCArNTY2Myw2IEBACiAJCQkJRjY5MkE4NUQwMjU1NTk3RDAxRkY2MEY3IC8qIEZ1bmN0aW9u
UHJvdG90eXBlLmggKi8sCiAJCQkJNjJEMkQzOEQxQURGMTAzRjAwMDIwNkMxIC8qIEZ1bmN0aW9u
UmFyZURhdGEuY3BwICovLAogCQkJCTYyRDJEMzhFMUFERjEwM0YwMDAyMDZDMSAvKiBGdW5jdGlv
blJhcmVEYXRhLmggKi8sCi0JCQkJNzBCNzkxODMxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRv
ckZyYW1lLmNwcCAqLywKLQkJCQk3MEI3OTE4NDFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9y
RnJhbWUuaCAqLywKIAkJCQk3MEI3OTE4NTFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnVu
Y3Rpb25Db25zdHJ1Y3Rvci5jcHAgKi8sCiAJCQkJNzBCNzkxODYxQzAyNDQzMjAwMjQ4MUUyIC8q
IEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaCAqLywKIAkJCQk3MEI3OTE4NzFDMDI0NDMy
MDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3BwICovLApAQCAtNjI2MSw2
ICs2MjU1LDcgQEAKIAkJCQkwRjY5Q0M4NjE5M0FDNjBBMDA0NTc1OUUgLyogREZHRnJvemVuVmFs
dWUuY3BwICovLAogCQkJCTBGNjlDQzg3MTkzQUM2MEEwMDQ1NzU5RSAvKiBERkdGcm96ZW5WYWx1
ZS5oICovLAogCQkJCTg2RUM5REI2MTMyOERGODIwMDJCMkFENyAvKiBERkdHZW5lcmF0aW9uSW5m
by5oICovLAorCQkJCTcwNzkxNDFDMUM0QUE4MDcwMEI4MkZGNyAvKiBERkdHZW5lcmF0b3JMb2Nh
bERhdGEuaCAqLywKIAkJCQk4NkVDOURCNzEzMjhERjgyMDAyQjJBRDcgLyogREZHR3JhcGguY3Bw
ICovLAogCQkJCTg2RUM5REI4MTMyOERGODIwMDJCMkFENyAvKiBERkdHcmFwaC5oICovLAogCQkJ
CTBGMkZDQ0YyMThBNjAwNzAwMDFBMjdGOCAvKiBERkdHcmFwaFNhZmVwb2ludC5jcHAgKi8sCkBA
IC03MzY0LDcgKzczNTksNiBAQAogCQkJCUE3Mzc4MTBFMTc5OUVBMkUwMDgxNzUzMyAvKiBERkdO
YXR1cmFsTG9vcHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2RUNBM0VBMTMyREVGMUMwMDJCMkFE
NyAvKiBERkdOb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkZCOTIxQjE2RDAyRjAxMDA1NUE1
REIgLyogREZHTm9kZUFsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNzBCNzkxOTMxQzAy
NEEyODAwMjQ4MUUyIC8qIEdlbmVyYXRvckZyYW1lLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkE1
ODFCQjE1MEU5NTMwMDBCOUEyRDkgLyogREZHTm9kZUZsYWdzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRjMwMEI3ODE4QUIwNTExMDBBNkQ3MkUgLyogREZHTm9kZU9yaWdpbi5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEZBNTgxQkMxNTBFOTUzMDAwQjlBMkQ5IC8qIERGR05vZGVUeXBlLmggaW4gSGVh
ZGVycyAqLywKQEAgLTgwMjgsNiArODAyMiw3IEBACiAJCQkJMEZFMDUwMjkxQUE5MDk1NjAwRDMz
QjMzIC8qIFNjb3BlZEFyZ3VtZW50c1RhYmxlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkUwNTAy
QjFBQTkwOTU2MDBEMzNCMzMgLyogU2NvcGVPZmZzZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
MjRFNTUyMTdFRTI3NDkwMEFCQjIxNyAvKiBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3IuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTcwNzkxNDFEMUM0QUE4NjAwMEI4MkZGNyAvKiBERkdHZW5lcmF0b3JM
b2NhbERhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1RkQwMDY4MTg5QUZFOUMwMDYzMzIzMSAv
KiBTY3JpcHRBcmd1bWVudHMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1MDNGQTIxMTg4RUZGNjgw
MDExMEYxNCAvKiBTY3JpcHRCcmVha3BvaW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNUZEMDA2
RTE4OUIwMEFBMDA2MzMyMzEgLyogU2NyaXB0Q2FsbEZyYW1lLmggaW4gSGVhZGVycyAqLywKQEAg
LTk0NDAsNyArOTQzNSw2IEBACiAJCQkJNzlFRTBCRkYxQjRBRkI4NTAwMDM4NUM5IC8qIFZhcmlh
YmxlRW52aXJvbm1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY2QzczNTAxQUM5Rjk5RjAw
QkUxNjgyIC8qIFZhcmlhYmxlV3JpdGVGaXJlRGV0YWlsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTBGRTA1MDJDMUFBOTA5NTYwMEQzM0IzMyAvKiBWYXJPZmZzZXQuY3BwIGluIFNvdXJjZXMgKi8s
Ci0JCQkJNzBCNzkxOTIxQzAyNEEyMzAwMjQ4MUUyIC8qIEdlbmVyYXRvckZyYW1lLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTBGMjBDMjU5MUE4MDEzQUIwMERBMzIyOSAvKiBWaXJ0dWFsUmVnaXN0
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTE4RTNBNTkwREY5Mjc4QzAwRDkwQjM0IC8qIFZN
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZFNTkzMkE3MTgzQzVBMjYwMEExRUNDQyAvKiBWTUVu
dHJ5U2NvcGUuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnVpbHRpbnMvR2VuZXJhdG9yUHJvdG90eXBlLmpzIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J1aWx0aW5zL0dlbmVyYXRvclByb3RvdHlwZS5qcwppbmRleCAzYzE0MDY4N2RmYzdlMDBl
ZmU5MWFlODBiMmFjNjc2ZmE5YmY0OGY0Li40OTlkYmQzOTJlODMxM2RjZGQ4NmVjOGMxNjA1Njlk
N2Q2ZjU0OWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvR2Vu
ZXJhdG9yUHJvdG90eXBlLmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9H
ZW5lcmF0b3JQcm90b3R5cGUuanMKQEAgLTUxLDcgKzUxLDcgQEAgZnVuY3Rpb24gZ2VuZXJhdG9y
UmVzdW1lKGdlbmVyYXRvciwgc2VudFZhbHVlLCByZXN1bWVNb2RlKQogICAgIH0gZWxzZSB7CiAg
ICAgICAgIHRyeSB7CiAgICAgICAgICAgICBnZW5lcmF0b3IuQGdlbmVyYXRvclN0YXRlID0gQEdl
bmVyYXRvclN0YXRlRXhlY3V0aW5nOwotICAgICAgICAgICAgdmFsdWUgPSBnZW5lcmF0b3IuQGdl
bmVyYXRvck5leHQuQGNhbGwoZ2VuZXJhdG9yLkBnZW5lcmF0b3JUaGlzLCBnZW5lcmF0b3IsIHN0
YXRlLCBzZW50VmFsdWUsIHJlc3VtZU1vZGUpOworICAgICAgICAgICAgdmFsdWUgPSBnZW5lcmF0
b3IuQGdlbmVyYXRvck5leHQuQGNhbGwoZ2VuZXJhdG9yLkBnZW5lcmF0b3JUaGlzLCBnZW5lcmF0
b3IsIHN0YXRlLCBzZW50VmFsdWUsIHJlc3VtZU1vZGUsIGdlbmVyYXRvci5AZ2VuZXJhdG9yRnJh
bWUpOwogICAgICAgICAgICAgaWYgKGdlbmVyYXRvci5AZ2VuZXJhdG9yU3RhdGUgPT09IEBHZW5l
cmF0b3JTdGF0ZUV4ZWN1dGluZykgewogICAgICAgICAgICAgICAgIGdlbmVyYXRvci5AZ2VuZXJh
dG9yU3RhdGUgPSBAR2VuZXJhdG9yU3RhdGVDb21wbGV0ZWQ7CiAgICAgICAgICAgICAgICAgZG9u
ZSA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVCYXNpY0Jsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZUJhc2ljQmxvY2suY3BwCmluZGV4IDdmMTdjMGVmMTBiNDMzZmFjOGY1OGNiM2I5Y2E1ZDRk
MDE1YmJhMDguLmU3ZmU3NThmODQ4MzNhYjVjNmY2ZDkyODI3MmVlZDQxODUzMzUwZjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2su
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxv
Y2suY3BwCkBAIC02MCw2ICs2MCw3IEBAIHN0YXRpYyBib29sIGlzQnJhbmNoKE9wY29kZUlEIG9w
Y29kZUlEKQogICAgIGNhc2Ugb3Bfc3dpdGNoX3N0cmluZzoKICAgICBjYXNlIG9wX3NhdmU6CiAg
ICAgICAgIHJldHVybiB0cnVlOworCiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KQEAgLTExMCwxMCArMTExLDIxIEBAIHN0YXRpYyB2b2lkIGxpbmtCbG9ja3MoQnl0
ZWNvZGVCYXNpY0Jsb2NrKiBwcmVkZWNlc3NvciwgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBzdWNjCiAg
ICAgcHJlZGVjZXNzb3ItPmFkZFN1Y2Nlc3NvcihzdWNjZXNzb3IpOwogfQogCi12b2lkIGNvbXB1
dGVCeXRlY29kZUJhc2ljQmxvY2tzKENvZGVCbG9jayogY29kZUJsb2NrLCBWZWN0b3I8c3RkOjp1
bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+JiBiYXNpY0Jsb2NrcykKK3N0YXRpYyBPcGNv
ZGVJRCBnZXRPcGNvZGVJRChJbnRlcnByZXRlciogaW50ZXJwcmV0ZXIsIGNvbnN0IEluc3RydWN0
aW9uJiBpbnN0cnVjdGlvbikKK3sKKyAgICByZXR1cm4gaW50ZXJwcmV0ZXItPmdldE9wY29kZUlE
KGluc3RydWN0aW9uLnUub3Bjb2RlKTsKK30KKworc3RhdGljIE9wY29kZUlEIGdldE9wY29kZUlE
KEludGVycHJldGVyKiwgY29uc3QgVW5saW5rZWRJbnN0cnVjdGlvbiYgaW5zdHJ1Y3Rpb24pCit7
CisgICAgcmV0dXJuIGluc3RydWN0aW9uLnUub3Bjb2RlOworfQorCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBCbG9jaywgdHlwZW5hbWUgSW5zdHJ1Y3Rpb24+CitzdGF0aWMgdm9pZCBjb21wdXRlQnl0ZWNv
ZGVCYXNpY0Jsb2Nrc0ludGVybmFsKEJsb2NrKiBjb2RlQmxvY2ssIEluc3RydWN0aW9uKiBpbnN0
cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCwgVmVjdG9yPHN0ZDo6dW5p
cXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9ja3MpCiB7CiAgICAgVmVjdG9y
PHVuc2lnbmVkLCAzMj4ganVtcFRhcmdldHM7Ci0gICAgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0
cyhjb2RlQmxvY2ssIGp1bXBUYXJnZXRzKTsKKyAgICBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRz
KGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb25zQmVnaW4sIGluc3RydWN0aW9uQ291bnQsIGp1bXBUYXJn
ZXRzKTsKIAogICAgIC8vIENyZWF0ZSB0aGUgZW50cnkgYW5kIGV4aXQgYmFzaWMgYmxvY2tzLgog
ICAgIGJhc2ljQmxvY2tzLnJlc2VydmVDYXBhY2l0eShqdW1wVGFyZ2V0cy5zaXplKCkgKyAyKTsK
QEAgLTEzMSwxMCArMTQzLDggQEAgdm9pZCBjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2NrcyhDb2Rl
QmxvY2sqIGNvZGVCbG9jaywgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXQKICAgICBib29sIG5l
eHRJbnN0cnVjdGlvbklzTGVhZGVyID0gZmFsc2U7CiAKICAgICBJbnRlcnByZXRlciogaW50ZXJw
cmV0ZXIgPSBjb2RlQmxvY2stPnZtKCktPmludGVycHJldGVyOwotICAgIEluc3RydWN0aW9uKiBp
bnN0cnVjdGlvbnNCZWdpbiA9IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsKLSAg
ICB1bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50ID0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5z
aXplKCk7CiAgICAgZm9yICh1bnNpZ25lZCBieXRlY29kZU9mZnNldCA9IDA7IGJ5dGVjb2RlT2Zm
c2V0IDwgaW5zdHJ1Y3Rpb25Db3VudDspIHsKLSAgICAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBp
bnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25zQmVnaW5bYnl0ZWNvZGVPZmZzZXRd
LnUub3Bjb2RlKTsKKyAgICAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBnZXRPcGNvZGVJRChpbnRl
cnByZXRlciwgaW5zdHJ1Y3Rpb25zQmVnaW5bYnl0ZWNvZGVPZmZzZXRdKTsKICAgICAgICAgdW5z
aWduZWQgb3Bjb2RlTGVuZ3RoID0gb3Bjb2RlTGVuZ3Roc1tvcGNvZGVJRF07CiAKICAgICAgICAg
Ym9vbCBjcmVhdGVkQmxvY2sgPSBmYWxzZTsKQEAgLTE2OSw4ICsxNzksNyBAQCB2b2lkIGNvbXB1
dGVCeXRlY29kZUJhc2ljQmxvY2tzKENvZGVCbG9jayogY29kZUJsb2NrLCBWZWN0b3I8c3RkOjp1
bmlxdWVfcHRyPEJ5dAogCiAgICAgICAgIGJvb2wgZmFsbHNUaHJvdWdoID0gdHJ1ZTsgCiAgICAg
ICAgIGZvciAodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQgPSBibG9jay0+bGVhZGVyQnl0ZWNvZGVP
ZmZzZXQoKTsgYnl0ZWNvZGVPZmZzZXQgPCBibG9jay0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKSAr
IGJsb2NrLT50b3RhbEJ5dGVjb2RlTGVuZ3RoKCk7KSB7Ci0gICAgICAgICAgICBjb25zdCBJbnN0
cnVjdGlvbiYgY3VycmVudEluc3RydWN0aW9uID0gaW5zdHJ1Y3Rpb25zQmVnaW5bYnl0ZWNvZGVP
ZmZzZXRdOwotICAgICAgICAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnRlcnByZXRlci0+Z2V0
T3Bjb2RlSUQoY3VycmVudEluc3RydWN0aW9uLnUub3Bjb2RlKTsKKyAgICAgICAgICAgIE9wY29k
ZUlEIG9wY29kZUlEID0gZ2V0T3Bjb2RlSUQoaW50ZXJwcmV0ZXIsIGluc3RydWN0aW9uc0JlZ2lu
W2J5dGVjb2RlT2Zmc2V0XSk7CiAgICAgICAgICAgICB1bnNpZ25lZCBvcGNvZGVMZW5ndGggPSBv
cGNvZGVMZW5ndGhzW29wY29kZUlEXTsKICAgICAgICAgICAgIC8vIElmIHdlIGZvdW5kIGEgdGVy
bWluYWwgYnl0ZWNvZGUsIGxpbmsgdG8gdGhlIGV4aXQgYmxvY2suCiAgICAgICAgICAgICBpZiAo
aXNUZXJtaW5hbChvcGNvZGVJRCkpIHsKQEAgLTE4NSw3ICsxOTQsNyBAQCB2b2lkIGNvbXB1dGVC
eXRlY29kZUJhc2ljQmxvY2tzKENvZGVCbG9jayogY29kZUJsb2NrLCBWZWN0b3I8c3RkOjp1bmlx
dWVfcHRyPEJ5dAogICAgICAgICAgICAgLy8gYmxvY2sgYmVjYXVzZSB0aGUgZmluYWxseSBibG9j
ayB3aWxsIGNyZWF0ZSBpdHMgb3duIGNhdGNoLCB3aGljaCB3aWxsIGdlbmVyYXRlIGEgSGFuZGxl
ckluZm8uCiAgICAgICAgICAgICBpZiAoaXNUaHJvdyhvcGNvZGVJRCkpIHsKICAgICAgICAgICAg
ICAgICBBU1NFUlQoYnl0ZWNvZGVPZmZzZXQgKyBvcGNvZGVMZW5ndGggPT0gYmxvY2stPmxlYWRl
ckJ5dGVjb2RlT2Zmc2V0KCkgKyBibG9jay0+dG90YWxCeXRlY29kZUxlbmd0aCgpKTsKLSAgICAg
ICAgICAgICAgICBIYW5kbGVySW5mbyogaGFuZGxlciA9IGNvZGVCbG9jay0+aGFuZGxlckZvckJ5
dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KTsKKyAgICAgICAgICAgICAgICBhdXRvKiBoYW5k
bGVyID0gY29kZUJsb2NrLT5oYW5kbGVyRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQp
OwogICAgICAgICAgICAgICAgIGZhbGxzVGhyb3VnaCA9IGZhbHNlOwogICAgICAgICAgICAgICAg
IGlmICghaGFuZGxlcikgewogICAgICAgICAgICAgICAgICAgICBsaW5rQmxvY2tzKGJsb2NrLCBl
eGl0LmdldCgpKTsKQEAgLTIwNSw3ICsyMTQsNyBAQCB2b2lkIGNvbXB1dGVCeXRlY29kZUJhc2lj
QmxvY2tzKENvZGVCbG9jayogY29kZUJsb2NrLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dAog
ICAgICAgICAgICAgaWYgKGlzQnJhbmNoKG9wY29kZUlEKSkgewogICAgICAgICAgICAgICAgIEFT
U0VSVChieXRlY29kZU9mZnNldCArIG9wY29kZUxlbmd0aCA9PSBibG9jay0+bGVhZGVyQnl0ZWNv
ZGVPZmZzZXQoKSArIGJsb2NrLT50b3RhbEJ5dGVjb2RlTGVuZ3RoKCkpOwogICAgICAgICAgICAg
ICAgIFZlY3Rvcjx1bnNpZ25lZCwgMT4gYnl0ZWNvZGVPZmZzZXRzSnVtcGVkVG87Ci0gICAgICAg
ICAgICAgICAgZmluZEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoY29kZUJsb2NrLCBieXRl
Y29kZU9mZnNldCwgYnl0ZWNvZGVPZmZzZXRzSnVtcGVkVG8pOworICAgICAgICAgICAgICAgIGZp
bmRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb25zQmVn
aW4sIGJ5dGVjb2RlT2Zmc2V0LCBieXRlY29kZU9mZnNldHNKdW1wZWRUbyk7CiAKICAgICAgICAg
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYmFzaWNCbG9ja3Muc2l6ZSgpOyBpKysp
IHsKICAgICAgICAgICAgICAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBvdGhlckJsb2NrID0g
YmFzaWNCbG9ja3NbaV0uZ2V0KCk7CkBAIC0yMzUsNCArMjQ0LDE0IEBAIHZvaWQgY29tcHV0ZUJ5
dGVjb2RlQmFzaWNCbG9ja3MoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFZlY3RvcjxzdGQ6OnVuaXF1
ZV9wdHI8Qnl0CiAgICAgICAgIGJhc2ljQmxvY2stPnNocmlua1RvRml0KCk7CiB9CiAKK3ZvaWQg
Y29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEluc3RydWN0
aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCwgVmVjdG9y
PHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9ja3MpCit7Cisg
ICAgY29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3NJbnRlcm5hbChjb2RlQmxvY2ssIGluc3RydWN0
aW9uc0JlZ2luLCBpbnN0cnVjdGlvbkNvdW50LCBiYXNpY0Jsb2Nrcyk7Cit9CisKK3ZvaWQgY29t
cHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MoVW5saW5rZWRDb2RlQmxvY2sqIGNvZGVCbG9jaywgVW5s
aW5rZWRJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGluc3RydWN0aW9u
Q291bnQsIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mIGJhc2lj
QmxvY2tzKQoreworICAgIGNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzSW50ZXJuYWwoY29kZUJs
b2NrLCBpbnN0cnVjdGlvbnNCZWdpbiwgaW5zdHJ1Y3Rpb25Db3VudCwgYmFzaWNCbG9ja3MpOwor
fQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suaAppbmRleCBiZDdkM2FlOWJhMzQzZTFiMDcxNzll
OThmMWVlODlkYTY1YmE3ZTIwLi42NzJiZjNkZGM4YjcyYTk3NWFhNWViMDkzNDFlMDEyNGNmNTM5
YThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVC
YXNpY0Jsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
QmFzaWNCbG9jay5oCkBAIC0zNSw2ICszNSw5IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3Mg
Q29kZUJsb2NrOworY2xhc3MgVW5saW5rZWRDb2RlQmxvY2s7CitjbGFzcyBJbnN0cnVjdGlvbjsK
K2NsYXNzIFVubGlua2VkSW5zdHJ1Y3Rpb247CiAKIGNsYXNzIEJ5dGVjb2RlQmFzaWNCbG9jayB7
CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC03MCw3ICs3Myw4IEBAIGNsYXNzIEJ5
dGVjb2RlQmFzaWNCbG9jayB7CiAgICAgRmFzdEJpdFZlY3RvciBtX291dDsKIH07CiAKLXZvaWQg
Y29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MoQ29kZUJsb2NrKiwgVmVjdG9yPHN0ZDo6dW5pcXVl
X3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYpOwordm9pZCBjb21wdXRlQnl0ZWNvZGVCYXNpY0Js
b2NrcyhDb2RlQmxvY2sqLCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVk
IGluc3RydWN0aW9uQ291bnQsIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Js
b2NrPj4mKTsKK3ZvaWQgY29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MoVW5saW5rZWRDb2RlQmxv
Y2sqLCBVbmxpbmtlZEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgaW5z
dHJ1Y3Rpb25Db3VudCwgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+
PiYpOwogCiBpbmxpbmUgQnl0ZWNvZGVCYXNpY0Jsb2NrOjpCeXRlY29kZUJhc2ljQmxvY2sodW5z
aWduZWQgc3RhcnQsIHVuc2lnbmVkIGxlbmd0aCkKICAgICA6IG1fbGVhZGVyQnl0ZWNvZGVPZmZz
ZXQoc3RhcnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YjNlZmUyMTYz
NjliMjk5NmM3M2UwYjA4MzA2ODI2NWU4NGYzZDdjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcApA
QCAtMCwwICsxLDQxNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBZdXN1a2UgU3V6dWtp
IDx5dXN1a2Uuc3V6dWtpQHNzbGFiLmljcy5rZWlvLmFjLmpwPgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uaCIKKwor
I2luY2x1ZGUgIklkZW50aWZpZXJJbmxpbmVzLmgiCisjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIK
KyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgorI2luY2x1ZGUgIkJ5dGVjb2RlSW5zZXJ0
aW9uU2V0LmgiCisjaW5jbHVkZSAiQnl0ZWNvZGVVc2VEZWYuaCIKKyNpbmNsdWRlICJTdHJvbmdJ
bmxpbmVzLmgiCisjaW5jbHVkZSAiVW5saW5rZWRDb2RlQmxvY2suaCIKKworbmFtZXNwYWNlIEpT
QyB7CisKK3N0YXRpYyBib29sIGlzVmFsaWRSZWdpc3RlckZvckxpdmVuZXNzKFVubGlua2VkQ29k
ZUJsb2NrKiBjb2RlQmxvY2ssIGludCBvcGVyYW5kKQoreworICAgIGlmIChjb2RlQmxvY2stPmlz
Q29uc3RhbnRSZWdpc3RlckluZGV4KG9wZXJhbmQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZyhvcGVyYW5kKTsKKyAgICByZXR1cm4gdmly
dHVhbFJlZy5pc0xvY2FsKCk7Cit9CisKK3N0YXRpYyB1bnNpZ25lZCBnZXRMZWFkZXJPZmZzZXRG
b3JCYXNpY0Jsb2NrKHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+KiBiYXNpY0Js
b2NrKQoreworICAgIHJldHVybiAoKmJhc2ljQmxvY2spLT5sZWFkZXJCeXRlY29kZU9mZnNldCgp
OworfQorCitzdGF0aWMgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBmaW5kQmFzaWNCbG9ja1dpdGhMZWFk
ZXJPZmZzZXQoQnl0ZWNvZGVHcmFwaDxVbmxpbmtlZENvZGVCbG9jaz4mIGdyYXBoLCB1bnNpZ25l
ZCBsZWFkZXJPZmZzZXQpCit7CisgICAgcmV0dXJuICgqdHJ5QmluYXJ5U2VhcmNoPHN0ZDo6dW5p
cXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+LCB1bnNpZ25lZD4oZ3JhcGguYmFzaWNCbG9ja3Mo
KSwgZ3JhcGguYmFzaWNCbG9ja3MoKS5zaXplKCksIGxlYWRlck9mZnNldCwgZ2V0TGVhZGVyT2Zm
c2V0Rm9yQmFzaWNCbG9jaykpLmdldCgpOworfQorCitzdGF0aWMgYm9vbCBibG9ja0NvbnRhaW5z
Qnl0ZWNvZGVPZmZzZXQoQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaywgdW5zaWduZWQgYnl0ZWNv
ZGVPZmZzZXQpCit7CisgICAgdW5zaWduZWQgbGVhZGVyT2Zmc2V0ID0gYmxvY2stPmxlYWRlckJ5
dGVjb2RlT2Zmc2V0KCk7CisgICAgcmV0dXJuIGJ5dGVjb2RlT2Zmc2V0ID49IGxlYWRlck9mZnNl
dCAmJiBieXRlY29kZU9mZnNldCA8IGxlYWRlck9mZnNldCArIGJsb2NrLT50b3RhbEJ5dGVjb2Rl
TGVuZ3RoKCk7Cit9CisKK3N0YXRpYyBCeXRlY29kZUJhc2ljQmxvY2sqIGZpbmRCYXNpY0Jsb2Nr
Rm9yQnl0ZWNvZGVPZmZzZXQoQnl0ZWNvZGVHcmFwaDxVbmxpbmtlZENvZGVCbG9jaz4mIGdyYXBo
LCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCkKK3sKKy8qCisgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IGJhc2ljQmxvY2tzLnNpemUoKTsgaSsrKSB7CisgICAgICAgIGlmIChibG9ja0NvbnRh
aW5zQnl0ZWNvZGVPZmZzZXQoYmFzaWNCbG9ja3NbaV0uZ2V0KCksIGJ5dGVjb2RlT2Zmc2V0KSkK
KyAgICAgICAgICAgIHJldHVybiBiYXNpY0Jsb2Nrc1tpXS5nZXQoKTsKKyAgICB9CisgICAgcmV0
dXJuIDA7CisqLworICAgIEJ5dGVjb2RlR3JhcGg8VW5saW5rZWRDb2RlQmxvY2s+OjpCYXNpY0Js
b2Nrc1ZlY3RvciYgYmFzaWNCbG9ja3MgPSBncmFwaC5iYXNpY0Jsb2NrcygpOworCisgICAgc3Rk
Ojp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4qIGJhc2ljQmxvY2sgPSBhcHByb3hpbWF0
ZUJpbmFyeVNlYXJjaDxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiwgdW5zaWdu
ZWQ+KAorICAgICAgICBiYXNpY0Jsb2NrcywgYmFzaWNCbG9ja3Muc2l6ZSgpLCBieXRlY29kZU9m
ZnNldCwgZ2V0TGVhZGVyT2Zmc2V0Rm9yQmFzaWNCbG9jayk7CisgICAgLy8gV2UgZm91bmQgdGhl
IGJsb2NrIHdlIHdlcmUgbG9va2luZyBmb3IuCisgICAgaWYgKGJsb2NrQ29udGFpbnNCeXRlY29k
ZU9mZnNldCgoKmJhc2ljQmxvY2spLmdldCgpLCBieXRlY29kZU9mZnNldCkpCisgICAgICAgIHJl
dHVybiAoKmJhc2ljQmxvY2spLmdldCgpOworCisgICAgLy8gQmFzaWMgYmxvY2sgaXMgdG8gdGhl
IGxlZnQgb2YgdGhlIHJldHVybmVkIGJsb2NrLgorICAgIGlmIChieXRlY29kZU9mZnNldCA8ICgq
YmFzaWNCbG9jayktPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCkpIHsKKyAgICAgICAgQVNTRVJUKGJh
c2ljQmxvY2sgLSAxID49IGJhc2ljQmxvY2tzLmRhdGEoKSk7CisgICAgICAgIEFTU0VSVChibG9j
a0NvbnRhaW5zQnl0ZWNvZGVPZmZzZXQoYmFzaWNCbG9ja1stMV0uZ2V0KCksIGJ5dGVjb2RlT2Zm
c2V0KSk7CisgICAgICAgIHJldHVybiBiYXNpY0Jsb2NrWy0xXS5nZXQoKTsKKyAgICB9CisKKyAg
ICAvLyBCYXNpYyBibG9jayBpcyB0byB0aGUgcmlnaHQgb2YgdGhlIHJldHVybmVkIGJsb2NrLgor
ICAgIEFTU0VSVCgmYmFzaWNCbG9ja1sxXSA8PSAmYmFzaWNCbG9ja3MubGFzdCgpKTsKKyAgICBB
U1NFUlQoYmxvY2tDb250YWluc0J5dGVjb2RlT2Zmc2V0KGJhc2ljQmxvY2tbMV0uZ2V0KCksIGJ5
dGVjb2RlT2Zmc2V0KSk7CisgICAgcmV0dXJuIGJhc2ljQmxvY2tbMV0uZ2V0KCk7Cit9CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+Cit2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZz
ZXQoVW5saW5rZWRDb2RlQmxvY2sqIGNvZGVCbG9jaywgT3Bjb2RlSUQgb3Bjb2RlSUQsIFVubGlu
a2VkSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrLCB1
bnNpZ25lZCBieXRlY29kZU9mZnNldCwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikKK3sKKyAgICBV
TlVTRURfUEFSQU0oYnl0ZWNvZGVPZmZzZXQpOworICAgIHN3aXRjaCAob3Bjb2RlSUQpIHsKKyAg
ICBjYXNlIG9wX3NhdmU6CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBvcF9yZXN1bWU6IHsK
KyAgICAgICAgUkVMRUFTRV9BU1NFUlQoYmxvY2stPnN1Y2Nlc3NvcnMoKS5zaXplKCkgPT0gMSk7
CisgICAgICAgIGJsb2NrLT5zdWNjZXNzb3JzKClbMF0tPmluKCkuZm9yRWFjaFNldEJpdChbJl0o
dW5zaWduZWQgbG9jYWwpIHsKKyAgICAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVj
dGlvbiwgb3Bjb2RlSUQsIHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGxvY2FsKS5vZmZzZXQoKSk7
CisgICAgICAgIH0pOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBkZWZhdWx0OgorICAg
ICAgICBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9jaywgb3Bjb2RlSUQsIGlu
c3RydWN0aW9uLCBmdW5jdG9yKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCit0ZW1wbGF0
ZTx0eXBlbmFtZSBGdW5jdG9yPgordm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KFVu
bGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2ssIE9wY29kZUlEIG9wY29kZUlELCBVbmxpbmtlZElu
c3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaywgdW5zaWdu
ZWQgYnl0ZWNvZGVPZmZzZXQsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCit7CisgICAgaWYgKG9w
Y29kZUlEICE9IG9wX2VudGVyICYmIGNvZGVCbG9jay0+d2FzQ29tcGlsZWRXaXRoRGVidWdnaW5n
T3Bjb2RlcygpICYmIGNvZGVCbG9jay0+c2NvcGVSZWdpc3RlcigpLmlzVmFsaWQoKSkKKyAgICAg
ICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgY29kZUJsb2NrLT5z
Y29wZVJlZ2lzdGVyKCkub2Zmc2V0KCkpOworCisgICAgc3dpdGNoIChvcGNvZGVJRCkgeworICAg
IGNhc2Ugb3Bfc2F2ZTogeworICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24s
IG9wY29kZUlELCBpbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOworICAgICAgICB1bnNpZ25lZCBt
ZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXQgPSBieXRlY29kZU9mZnNldCArIGluc3RydWN0aW9uWzNd
LnUub3BlcmFuZDsKKyAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBtZXJnZVBvaW50QmxvY2sg
PSBudWxscHRyOworICAgICAgICBmb3IgKEJ5dGVjb2RlQmFzaWNCbG9jayogc3VjY2Vzc29yIDog
YmxvY2stPnN1Y2Nlc3NvcnMoKSkgeworICAgICAgICAgICAgaWYgKHN1Y2Nlc3Nvci0+bGVhZGVy
Qnl0ZWNvZGVPZmZzZXQoKSA9PSBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXQpIHsKKyAgICAgICAg
ICAgICAgICBtZXJnZVBvaW50QmxvY2sgPSBzdWNjZXNzb3I7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUKG1lcmdlUG9pbnRC
bG9jayk7CisgICAgICAgIG1lcmdlUG9pbnRCbG9jay0+aW4oKS5mb3JFYWNoU2V0Qml0KFsmXSh1
bnNpZ25lZCBsb2NhbCkgeworICAgICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0
aW9uLCBvcGNvZGVJRCwgdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwobG9jYWwpLm9mZnNldCgpKTsK
KyAgICAgICAgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBjYXNlIG9wX3Jlc3Vt
ZToKKyAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgaW5z
dHJ1Y3Rpb25bMV0udS5vcGVyYW5kKTsKKyAgICAgICAgcmV0dXJuOworCisgICAgZGVmYXVsdDoK
KyAgICAgICAgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldChjb2RlQmxvY2ssIG9wY29kZUlE
LCBpbnN0cnVjdGlvbiwgZnVuY3Rvcik7CisgICAgICAgIHJldHVybjsKKyAgICB9Cit9CisKKy8v
IFNpbXBsaWZpZWQgaW50ZXJmYWNlIHRvIGJ5dGVjb2RlIHVzZS9kZWYsIHdoaWNoIGRldGVybWlu
ZXMgZGVmcyBmaXJzdCBhbmQgdGhlbiB1c2VzLCBhbmQgaW5jbHVkZXMKKy8vIGV4Y2VwdGlvbiBo
YW5kbGVycyBpbiB0aGUgdXNlcy4KK3RlbXBsYXRlPHR5cGVuYW1lIFVzZUZ1bmN0b3IsIHR5cGVu
YW1lIERlZkZ1bmN0b3I+CitzdGF0aWMgdm9pZCBzdGVwT3Zlckluc3RydWN0aW9uKFVubGlua2Vk
Q29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2ssIEJ5dGVjb2Rl
R3JhcGg8VW5saW5rZWRDb2RlQmxvY2s+JiBncmFwaCwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQs
IGNvbnN0IFVzZUZ1bmN0b3ImIHVzZSwgY29uc3QgRGVmRnVuY3RvciYgZGVmKQoreworICAgIC8v
IFRoaXMgYWJzdHJhY3RseSBleGVjdXRlIHRoZSBpbnN0cnVjdGlvbiBpbiByZXZlcnNlLiBJbnN0
cnVjdGlvbnMgbG9naWNhbGx5IGZpcnN0IHVzZSBvcGVyYW5kcyBhbmQKKyAgICAvLyB0aGVuIGRl
ZmluZSBvcGVyYW5kcy4gVGhpcyBsb2dpY2FsIG9yZGVyaW5nIGlzIG5lY2Vzc2FyeSBmb3Igb3Bl
cmF0aW9ucyB0aGF0IHVzZSBhbmQgZGVmIHRoZSBzYW1lCisgICAgLy8gb3BlcmFuZCwgbGlrZToK
KyAgICAvLworICAgIC8vICAgICBvcF9hZGQgbG9jMSwgbG9jMSwgbG9jMgorICAgIC8vCisgICAg
Ly8gVGhlIHVzZSBvZiBsb2MxIGhhcHBlbnMgYmVmb3JlIHRoZSBkZWYgb2YgbG9jMS4gVGhhdCdz
IGEgc2VtYW50aWMgcmVxdWlyZW1lbnQgc2luY2UgdGhlIGFkZAorICAgIC8vIG9wZXJhdGlvbiBj
YW5ub3QgdHJhdmVsIGZvcndhcmQgaW4gdGltZSB0byByZWFkIHRoZSB2YWx1ZSB0aGF0IGl0IHdp
bGwgcHJvZHVjZSBhZnRlciByZWFkaW5nIHRoYXQKKyAgICAvLyB2YWx1ZS4gU2luY2Ugd2UgYXJl
IGV4ZWN1dGluZyBpbiByZXZlcnNlLCB0aGlzIG1lYW5zIHRoYXQgd2UgbXVzdCBkbyBkZWZzIGJl
Zm9yZSB1c2VzIChyZXZlcnNlIG9mCisgICAgLy8gdXNlcyBiZWZvcmUgZGVmcykuCisgICAgLy8K
KyAgICAvLyBTaW5jZSB0aGlzIGlzIGEgbGl2ZW5lc3MgYW5hbHlzaXMsIHRoaXMgb3JkZXJpbmcg
ZW5kcyB1cCBiZWluZyBwYXJ0aWN1bGFybHkgaW1wb3J0YW50OiBpZiB3ZSBkaWQKKyAgICAvLyB1
c2VzIGJlZm9yZSBkZWZzLCB0aGVuIHRoZSBhZGQgb3BlcmF0aW9uIGFib3ZlIHdvdWxkIGFwcGVh
ciB0byBub3QgaGF2ZSBsb2MxIGxpdmUsIHNpbmNlIHdlJ2QKKyAgICAvLyBmaXJzdCBhZGQgaXQg
dG8gdGhlIG91dCBzZXQgKHRoZSB1c2UpLCBhbmQgdGhlbiB3ZSdkIHJlbW92ZSBpdCAodGhlIGRl
ZikuCisKKyAgICBhdXRvJiBpbnN0cnVjdGlvbnMgPSBncmFwaC5pbnN0cnVjdGlvbnMoKTsKKyAg
ICBVbmxpbmtlZEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9ICZpbnN0cnVjdGlvbnNbYnl0ZWNv
ZGVPZmZzZXRdOworICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW5zdHJ1Y3Rpb24tPnUub3Bjb2Rl
OworCisgICAgY29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldCgKKyAgICAgICAgY29kZUJsb2Nr
LCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb24sIGJsb2NrLCBieXRlY29kZU9mZnNldCwKKyAgICAgICAg
WyZdIChVbmxpbmtlZENvZGVCbG9jayogY29kZUJsb2NrLCBVbmxpbmtlZEluc3RydWN0aW9uKiwg
T3Bjb2RlSUQsIGludCBvcGVyYW5kKSB7CisgICAgICAgICAgICBpZiAoaXNWYWxpZFJlZ2lzdGVy
Rm9yTGl2ZW5lc3MoY29kZUJsb2NrLCBvcGVyYW5kKSkKKyAgICAgICAgICAgICAgICBkZWYoVmly
dHVhbFJlZ2lzdGVyKG9wZXJhbmQpLnRvTG9jYWwoKSk7CisgICAgICAgIH0pOworCisgICAgY29t
cHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCgKKyAgICAgICAgY29kZUJsb2NrLCBvcGNvZGVJRCwg
aW5zdHJ1Y3Rpb24sIGJsb2NrLCBieXRlY29kZU9mZnNldCwKKyAgICAgICAgWyZdIChVbmxpbmtl
ZENvZGVCbG9jayogY29kZUJsb2NrLCBVbmxpbmtlZEluc3RydWN0aW9uKiwgT3Bjb2RlSUQsIGlu
dCBvcGVyYW5kKSB7CisgICAgICAgICAgICBpZiAoaXNWYWxpZFJlZ2lzdGVyRm9yTGl2ZW5lc3Mo
Y29kZUJsb2NrLCBvcGVyYW5kKSkKKyAgICAgICAgICAgICAgICB1c2UoVmlydHVhbFJlZ2lzdGVy
KG9wZXJhbmQpLnRvTG9jYWwoKSk7CisgICAgICAgIH0pOworCisgICAgLy8gSWYgd2UgaGF2ZSBh
biBleGNlcHRpb24gaGFuZGxlciwgd2Ugd2FudCB0aGUgbGl2ZS1pbiB2YXJpYWJsZXMgb2YgdGhl
CisgICAgLy8gZXhjZXB0aW9uIGhhbmRsZXIgYmxvY2sgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIGxp
dmUtaW4gb2YgdGhpcyBwYXJ0aWN1bGFyIGJ5dGVjb2RlLgorICAgIGlmIChVbmxpbmtlZEhhbmRs
ZXJJbmZvKiBoYW5kbGVyID0gY29kZUJsb2NrLT5oYW5kbGVyRm9yQnl0ZWNvZGVPZmZzZXQoYnl0
ZWNvZGVPZmZzZXQpKSB7CisgICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogaGFuZGxlckJsb2Nr
ID0gZmluZEJhc2ljQmxvY2tXaXRoTGVhZGVyT2Zmc2V0KGdyYXBoLCBoYW5kbGVyLT50YXJnZXQp
OworICAgICAgICBBU1NFUlQoaGFuZGxlckJsb2NrKTsKKyAgICAgICAgaGFuZGxlckJsb2NrLT5p
bigpLmZvckVhY2hTZXRCaXQodXNlKTsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIHN0ZXBPdmVy
SW5zdHJ1Y3Rpb24oVW5saW5rZWRDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Js
b2NrKiBibG9jaywgQnl0ZWNvZGVHcmFwaDxVbmxpbmtlZENvZGVCbG9jaz4mIGdyYXBoLCB1bnNp
Z25lZCBieXRlY29kZU9mZnNldCwgRmFzdEJpdFZlY3RvciYgb3V0KQoreworICAgIHN0ZXBPdmVy
SW5zdHJ1Y3Rpb24oCisgICAgICAgIGNvZGVCbG9jaywgYmxvY2ssIGdyYXBoLCBieXRlY29kZU9m
ZnNldCwKKyAgICAgICAgWyZdICh1bnNpZ25lZCBiaXRJbmRleCkgeworICAgICAgICAgICAgLy8g
VGhpcyBpcyB0aGUgdXNlIGZ1bmN0b3IsIHNvIHdlIHNldCB0aGUgYml0LgorICAgICAgICAgICAg
b3V0LnNldChiaXRJbmRleCk7CisgICAgICAgIH0sCisgICAgICAgIFsmXSAodW5zaWduZWQgYml0
SW5kZXgpIHsKKyAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIGRlZiBmdW5jdG9yLCBzbyB3ZSBj
bGVhciB0aGUgYml0LgorICAgICAgICAgICAgb3V0LmNsZWFyKGJpdEluZGV4KTsKKyAgICAgICAg
fSk7Cit9CisKK3N0YXRpYyB2b2lkIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQnl0ZWNvZGVPZmZz
ZXQoVW5saW5rZWRDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9j
aywgQnl0ZWNvZGVHcmFwaDxVbmxpbmtlZENvZGVCbG9jaz4mIGdyYXBoLCB1bnNpZ25lZCB0YXJn
ZXRPZmZzZXQsIEZhc3RCaXRWZWN0b3ImIHJlc3VsdCkKK3sKKyAgICBBU1NFUlQoIWJsb2NrLT5p
c0V4aXRCbG9jaygpKTsKKyAgICBBU1NFUlQoIWJsb2NrLT5pc0VudHJ5QmxvY2soKSk7CisKKyAg
ICBGYXN0Qml0VmVjdG9yIG91dCA9IGJsb2NrLT5vdXQoKTsKKworICAgIGZvciAoaW50IGkgPSBi
bG9jay0+Ynl0ZWNvZGVPZmZzZXRzKCkuc2l6ZSgpIC0gMTsgaSA+PSAwOyBpLS0pIHsKKyAgICAg
ICAgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQgPSBibG9jay0+Ynl0ZWNvZGVPZmZzZXRzKClbaV07
CisgICAgICAgIGlmICh0YXJnZXRPZmZzZXQgPiBieXRlY29kZU9mZnNldCkKKyAgICAgICAgICAg
IGJyZWFrOworCisgICAgICAgIHN0ZXBPdmVySW5zdHJ1Y3Rpb24oY29kZUJsb2NrLCBibG9jaywg
Z3JhcGgsIGJ5dGVjb2RlT2Zmc2V0LCBvdXQpOworICAgIH0KKworICAgIHJlc3VsdC5zZXQob3V0
KTsKK30KKworc3RhdGljIHZvaWQgY29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCbG9jayhVbmxpbmtl
ZENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrLCBCeXRlY29k
ZUdyYXBoPFVubGlua2VkQ29kZUJsb2NrPiYgZ3JhcGgpCit7CisgICAgaWYgKGJsb2NrLT5pc0V4
aXRCbG9jaygpIHx8IGJsb2NrLT5pc0VudHJ5QmxvY2soKSkKKyAgICAgICAgcmV0dXJuOworICAg
IGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQnl0ZWNvZGVPZmZzZXQoY29kZUJsb2NrLCBibG9jaywg
Z3JhcGgsIGJsb2NrLT5sZWFkZXJCeXRlY29kZU9mZnNldCgpLCBibG9jay0+aW4oKSk7Cit9CisK
K2NsYXNzIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uIHsKK3B1YmxpYzoKKyAgICBCeXRlY29k
ZUdlbmVyYXRvcmlmaWNhdGlvbihCeXRlY29kZUdyYXBoPFVubGlua2VkQ29kZUJsb2NrPiYgZ3Jh
cGgsIFN5bWJvbFRhYmxlKiBnZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlLCBpbnQgZ2VuZXJhdG9y
RnJhbWVTeW1ib2xUYWJsZUluZGV4KQorICAgICAgICA6IG1fdm0oKmdyYXBoLmNvZGVCbG9jaygp
LT52bSgpKQorICAgICAgICAsIG1fZ3JhcGgoZ3JhcGgpCisgICAgICAgICwgbV9pbnNlcnRpb25T
ZXQoZ3JhcGgpCisgICAgICAgICwgbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlKG1fdm0sIGdl
bmVyYXRvckZyYW1lU3ltYm9sVGFibGUpCisgICAgICAgICwgbV9nZW5lcmF0b3JGcmFtZVN5bWJv
bFRhYmxlSW5kZXgoZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZUluZGV4KQorICAgIHsKKyAgICB9
CisKKyAgICBGYXN0Qml0VmVjdG9yIGdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQodW5z
aWduZWQgYnl0ZWNvZGVPZmZzZXQpCisgICAgeworICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2sq
IGJsb2NrID0gZmluZEJhc2ljQmxvY2tGb3JCeXRlY29kZU9mZnNldChtX2dyYXBoLCBieXRlY29k
ZU9mZnNldCk7CisgICAgICAgIEFTU0VSVChibG9jayk7CisgICAgICAgIEFTU0VSVCghYmxvY2st
PmlzRW50cnlCbG9jaygpKTsKKyAgICAgICAgQVNTRVJUKCFibG9jay0+aXNFeGl0QmxvY2soKSk7
CisgICAgICAgIEZhc3RCaXRWZWN0b3Igb3V0OworICAgICAgICBvdXQucmVzaXplKGJsb2NrLT5v
dXQoKS5udW1CaXRzKCkpOworICAgICAgICBjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJ5dGVjb2Rl
T2Zmc2V0KG1fZ3JhcGguY29kZUJsb2NrKCksIGJsb2NrLCBtX2dyYXBoLCBieXRlY29kZU9mZnNl
dCwgb3V0KTsKKyAgICAgICAgcmV0dXJuIG91dDsKKyAgICB9CisKKyAgICBzdHJ1Y3QgU3RvcmFn
ZSB7CisgICAgICAgIElkZW50aWZpZXIgaWRlbnRpZmllcjsKKyAgICAgICAgdW5zaWduZWQgaWRl
bnRpZmllckluZGV4OworICAgICAgICBTY29wZU9mZnNldCBzY29wZU9mZnNldDsKKyAgICB9Owor
CisgICAgU3RvcmFnZSBzdG9yYWdlRm9yR2VuZXJhdG9yTG9jYWwodW5zaWduZWQgaW5kZXgpCisg
ICAgeworICAgICAgICBpZiAobV9zdG9yYWdlcy5zaXplKCkgPD0gaW5kZXgpIHsKKyAgICAgICAg
ICAgIC8vIEZJWE1FOiBTdXBlciBuYWl2ZSBpbXBsZW1lbnRhdGlvbi4gV2Ugc2hvdWxkIHJlY29u
c2lkZXIgdGhlIGluZGV4ZWQgZ2VuZXJhdG9yIGxvY2FscyBpbiB0aGUgc2NvcGUuCisgICAgICAg
ICAgICBVbmxpbmtlZENvZGVCbG9jayogY29kZUJsb2NrID0gbV9ncmFwaC5jb2RlQmxvY2soKTsK
KyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDAsIGFkZGl0aW9uID0gbV9zdG9yYWdlcy5z
aXplKCkgLSBpbmRleCArIDE7IGkgPCBhZGRpdGlvbjsgKytpKSB7CisgICAgICAgICAgICAgICAg
SWRlbnRpZmllciBpZGVudGlmaWVyID0gSWRlbnRpZmllcjo6ZnJvbVVpZChQcml2YXRlTmFtZSgp
KTsKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBpZGVudGlmaWVySW5kZXggPSBjb2RlQmxvY2st
Pm51bWJlck9mSWRlbnRpZmllcnMoKTsKKyAgICAgICAgICAgICAgICBjb2RlQmxvY2stPmFkZElk
ZW50aWZpZXIoaWRlbnRpZmllcik7CisgICAgICAgICAgICAgICAgU2NvcGVPZmZzZXQgc2NvcGVP
ZmZzZXQgPSBtX2dlbmVyYXRvckZyYW1lU3ltYm9sVGFibGUtPnRha2VOZXh0U2NvcGVPZmZzZXQo
Tm9Mb2NraW5nTmVjZXNzYXJ5KTsKKyAgICAgICAgICAgICAgICBtX2dlbmVyYXRvckZyYW1lU3lt
Ym9sVGFibGUtPnNldChOb0xvY2tpbmdOZWNlc3NhcnksIGlkZW50aWZpZXIuaW1wbCgpLCBTeW1i
b2xUYWJsZUVudHJ5KFZhck9mZnNldChzY29wZU9mZnNldCkpKTsKKyAgICAgICAgICAgICAgICBt
X3N0b3JhZ2VzLmFwcGVuZChTdG9yYWdlIHsgaWRlbnRpZmllciwgaWRlbnRpZmllckluZGV4LCBz
Y29wZU9mZnNldCB9KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4g
bV9zdG9yYWdlc1tpbmRleF07CisgICAgfQorCisgICAgc3RydWN0IEdlbmVyYXRvclBvaW50cyB7
CisgICAgICAgIHNpemVfdCBzYXZlUG9pbnQ7CisgICAgICAgIHNpemVfdCBtZXJnZVBvaW50Owor
ICAgICAgICBzaXplX3QgcmVzdW1lUG9pbnQ7CisgICAgfTsKKworICAgIHZvaWQgcnVuKCkKKyAg
ICB7CisgICAgICAgIHJ1bkxpdmVuZXNzQW5hbHlzaXMoKTsKKworICAgICAgICAvLyBXZSB3aWxs
IGltcGxlbWVudCB0aGUgdHJhbnNmb3JtYXRpb24gdGhhdCBjaGFuZ2VzIG9wX3NhdmUgLyBvcF9y
ZXN1bWUgdG8gc2NvcGUgb3BlcmF0aW9ucyBoZXJlLgorCisgICAgICAgIC8vIEJvb2trZWVwIHRo
ZSBtZXJnZSBwb2ludCBieXRlY29kZSBvZmZzZXRzLgorICAgICAgICBWZWN0b3I8R2VuZXJhdG9y
UG9pbnRzPiBnZW5lcmF0b3JQb2ludHNWZWN0b3I7CisgICAgICAgIGZvciAoc3RkOjp1bmlxdWVf
cHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4mIGJsb2NrIDogbV9ncmFwaC5iYXNpY0Jsb2NrcygpKSB7
CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0IDogYmxvY2stPmJ5dGVj
b2RlT2Zmc2V0cygpKSB7CisgICAgICAgICAgICAgICAgY29uc3QgVW5saW5rZWRJbnN0cnVjdGlv
biogcGMgPSAmbV9ncmFwaC5pbnN0cnVjdGlvbnMoKVtieXRlY29kZU9mZnNldF07CisgICAgICAg
ICAgICAgICAgc3dpdGNoIChwYy0+dS5vcGNvZGUpIHsKKyAgICAgICAgICAgICAgICBjYXNlIG9w
X3NhdmU6IHsKKyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0lu
ZGV4ID0gcGNbMl0udS5pbmRleDsKKyAgICAgICAgICAgICAgICAgICAgaW50IG9mZnNldCA9IHBj
WzNdLnUub3BlcmFuZDsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxpdmVDYWxsZWVMb2NhbHNJ
bmRleCA+PSBnZW5lcmF0b3JQb2ludHNWZWN0b3Iuc2l6ZSgpKQorICAgICAgICAgICAgICAgICAg
ICAgICAgZ2VuZXJhdG9yUG9pbnRzVmVjdG9yLnJlc2l6ZShsaXZlQ2FsbGVlTG9jYWxzSW5kZXgg
KyAxKTsKKyAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yUG9pbnRzVmVjdG9yW2xpdmVDYWxs
ZWVMb2NhbHNJbmRleF0uc2F2ZVBvaW50ID0gYnl0ZWNvZGVPZmZzZXQ7CisgICAgICAgICAgICAg
ICAgICAgIGdlbmVyYXRvclBvaW50c1ZlY3RvcltsaXZlQ2FsbGVlTG9jYWxzSW5kZXhdLm1lcmdl
UG9pbnQgPSBieXRlY29kZU9mZnNldCArIG9mZnNldDsKKyAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgY2FzZSBvcF9yZXN1bWU6
IHsKKyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0g
cGNbMl0udS5pbmRleDsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxpdmVDYWxsZWVMb2NhbHNJ
bmRleCA+PSBnZW5lcmF0b3JQb2ludHNWZWN0b3Iuc2l6ZSgpKQorICAgICAgICAgICAgICAgICAg
ICAgICAgZ2VuZXJhdG9yUG9pbnRzVmVjdG9yLnJlc2l6ZShsaXZlQ2FsbGVlTG9jYWxzSW5kZXgg
KyAxKTsKKyAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yUG9pbnRzVmVjdG9yW2xpdmVDYWxs
ZWVMb2NhbHNJbmRleF0ucmVzdW1lUG9pbnQgPSBieXRlY29kZU9mZnNldDsKKyAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gUGVyZm9ybSBieXRlY29kZSBsaXZl
bmVzcyBhbmFseXNpcyB0byBkZXRlcm1pbmUgd2hpY2ggbG9jYWxzIGFyZSBsaXZlIGFuZCBzaG91
bGQgYmUgcmVzdW1lZCB3aGVuIGV4ZWN1dGluZyBvcF9yZXN1bWUuCisgICAgICAgIFVubGlua2Vk
Q29kZUJsb2NrKiBjb2RlQmxvY2sgPSBtX2dyYXBoLmNvZGVCbG9jaygpOworICAgICAgICAvLyBW
TSYgdm0gPSAqY29kZUJsb2NrLT52bSgpOworICAgICAgICBmb3IgKHNpemVfdCBsaXZlQ2FsbGVl
TG9jYWxzSW5kZXggPSAwOyBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPCBnZW5lcmF0b3JQb2ludHNW
ZWN0b3Iuc2l6ZSgpOyArK2xpdmVDYWxsZWVMb2NhbHNJbmRleCkgeworICAgICAgICAgICAgY29u
c3QgR2VuZXJhdG9yUG9pbnRzJiBwb2ludHMgPSBnZW5lcmF0b3JQb2ludHNWZWN0b3JbbGl2ZUNh
bGxlZUxvY2Fsc0luZGV4XTsKKyAgICAgICAgICAgIHNpemVfdCBtZXJnZVBvaW50Qnl0ZWNvZGVP
ZmZzZXQgPSBwb2ludHMubWVyZ2VQb2ludDsKKyAgICAgICAgICAgIEZhc3RCaXRWZWN0b3IgbGl2
ZW5lc3NWZWN0b3IgPSBnZXRMaXZlbmVzc0luZm9BdEJ5dGVjb2RlT2Zmc2V0KG1lcmdlUG9pbnRC
eXRlY29kZU9mZnNldCk7CisKKyAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBzY29wZSA9IHZp
cnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KDUpOworCisgICAgICAgICAgICB1bnNpZ25lZCBnZW5l
cmF0b3JMb2NhbEluZGV4ID0gMDsKKyAgICAgICAgICAgIGxpdmVuZXNzVmVjdG9yLmZvckVhY2hT
ZXRCaXQoWyZdKHNpemVfdCBpbmRleCkgeworICAgICAgICAgICAgICAgIFZpcnR1YWxSZWdpc3Rl
ciBvcGVyYW5kID0gdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaW5kZXgpOworICAgICAgICAgICAg
ICAgIFN0b3JhZ2Ugc3RvcmFnZSA9IHN0b3JhZ2VGb3JHZW5lcmF0b3JMb2NhbChnZW5lcmF0b3JM
b2NhbEluZGV4KyspOworCisgICAgICAgICAgICAgICAgLy8gb3Bfc2F2ZS4KKyAgICAgICAgICAg
ICAgICBtX2luc2VydGlvblNldC5pbnNlcnQocG9pbnRzLnNhdmVQb2ludCwgeworICAgICAgICAg
ICAgICAgICAgICBvcF9wdXRfdG9fc2NvcGUsCisgICAgICAgICAgICAgICAgICAgIHNjb3BlLm9m
ZnNldCgpLCAgICAgICAgICAgICAgICAgICAvLyBzY29wZQorICAgICAgICAgICAgICAgICAgICBz
dG9yYWdlLmlkZW50aWZpZXJJbmRleCwgICAgICAgICAgLy8gaWRlbnRpZmllcgorICAgICAgICAg
ICAgICAgICAgICBvcGVyYW5kLm9mZnNldCgpLCAgICAgICAgICAgICAgICAgLy8gdmFsdWUKKyAg
ICAgICAgICAgICAgICAgICAgR2V0UHV0SW5mbyhEb05vdFRocm93SWZOb3RGb3VuZCwgTG9jYWxD
bG9zdXJlVmFyLCBJbml0aWFsaXphdGlvbk1vZGU6Ok5vdEluaXRpYWxpemF0aW9uKS5vcGVyYW5k
KCksCisgICAgICAgICAgICAgICAgICAgIG1fZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZUluZGV4
LCAvLyBzeW1ib2wgdGFibGUgY29uc3RhbnQgaW5kZXgKKyAgICAgICAgICAgICAgICAgICAgc3Rv
cmFnZS5zY29wZU9mZnNldC5vZmZzZXQoKSwgICAgIC8vIHNjb3BlIG9mZnNldAorICAgICAgICAg
ICAgICAgIH0pOworCisgICAgICAgICAgICAgICAgLy8gb3BfcmVzdW1lLgorICAgICAgICAgICAg
ICAgIFVubGlua2VkVmFsdWVQcm9maWxlIHByb2ZpbGUgPSBjb2RlQmxvY2stPmFkZFZhbHVlUHJv
ZmlsZSgpOworICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydChwb2ludHMucmVz
dW1lUG9pbnQsIHsKKyAgICAgICAgICAgICAgICAgICAgb3BfZ2V0X2Zyb21fc2NvcGUsCisgICAg
ICAgICAgICAgICAgICAgIG9wZXJhbmQub2Zmc2V0KCksICAgICAgICAgICAgICAvLyBkc3QKKyAg
ICAgICAgICAgICAgICAgICAgc2NvcGUub2Zmc2V0KCksICAgICAgICAgICAgICAgIC8vIHNjb3Bl
CisgICAgICAgICAgICAgICAgICAgIHN0b3JhZ2UuaWRlbnRpZmllckluZGV4LCAgICAgICAvLyBp
ZGVudGlmaWVyCisgICAgICAgICAgICAgICAgICAgIEdldFB1dEluZm8oRG9Ob3RUaHJvd0lmTm90
Rm91bmQsIExvY2FsQ2xvc3VyZVZhciwgSW5pdGlhbGl6YXRpb25Nb2RlOjpOb3RJbml0aWFsaXph
dGlvbikub3BlcmFuZCgpLAorICAgICAgICAgICAgICAgICAgICAwLCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gbG9jYWwgc2NvcGUgZGVwdGgKKyAgICAgICAgICAgICAgICAgICAgc3Rv
cmFnZS5zY29wZU9mZnNldC5vZmZzZXQoKSwgIC8vIHNjb3BlIG9mZnNldAorICAgICAgICAgICAg
ICAgICAgICBwcm9maWxlICAgICAgICAgICAgICAgICAgICAgICAgLy8gcHJvZmlsZQorICAgICAg
ICAgICAgICAgIH0pOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIC8vIENsaXAgdGhl
IHVubmVjZXNzYXJ5IGJ5dGVjb2Rlcy4KKyAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0LnJlbW92
ZUJ5dGVjb2RlKHBvaW50cy5zYXZlUG9pbnQpOworICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQu
cmVtb3ZlQnl0ZWNvZGUocG9pbnRzLnJlc3VtZVBvaW50KTsKKyAgICAgICAgfQorCisgICAgICAg
IG1faW5zZXJ0aW9uU2V0LmV4ZWN1dGUoKTsKKyAgICB9CisKKyAgICB2b2lkIHJ1bkxpdmVuZXNz
QW5hbHlzaXMoKQorICAgIHsKKyAgICAgICAgVW5saW5rZWRDb2RlQmxvY2sqIHVubGlua2VkQ29k
ZUJsb2NrID0gbV9ncmFwaC5jb2RlQmxvY2soKTsKKyAgICAgICAgdW5zaWduZWQgbnVtYmVyT2ZW
YXJpYWJsZXMgPSB1bmxpbmtlZENvZGVCbG9jay0+bV9udW1DYWxsZWVMb2NhbHM7CisgICAgICAg
IGZvciAoc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4mIGJsb2NrIDogbV9ncmFw
aC5iYXNpY0Jsb2NrcygpKSB7CisgICAgICAgICAgICBibG9jay0+aW4oKS5yZXNpemUobnVtYmVy
T2ZWYXJpYWJsZXMpOworICAgICAgICAgICAgYmxvY2stPm91dCgpLnJlc2l6ZShudW1iZXJPZlZh
cmlhYmxlcyk7CisgICAgICAgIH0KKworICAgICAgICBib29sIGNoYW5nZWQ7CisgICAgICAgIEJ5
dGVjb2RlQmFzaWNCbG9jayogbGFzdEJsb2NrID0gbV9ncmFwaC5iYXNpY0Jsb2NrcygpLmxhc3Qo
KS5nZXQoKTsKKyAgICAgICAgbGFzdEJsb2NrLT5pbigpLmNsZWFyQWxsKCk7CisgICAgICAgIGxh
c3RCbG9jay0+b3V0KCkuY2xlYXJBbGwoKTsKKyAgICAgICAgRmFzdEJpdFZlY3RvciBuZXdPdXQ7
CisgICAgICAgIG5ld091dC5yZXNpemUobGFzdEJsb2NrLT5vdXQoKS5udW1CaXRzKCkpOworICAg
ICAgICBkbyB7CisgICAgICAgICAgICBjaGFuZ2VkID0gZmFsc2U7CisgICAgICAgICAgICBmb3Ig
KHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+JiBibG9jayA6IG1fZ3JhcGguYmFz
aWNCbG9ja3NJblJldmVyc2VPcmRlcigpKSB7CisgICAgICAgICAgICAgICAgbmV3T3V0LmNsZWFy
QWxsKCk7CisgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8IGJsb2NrLT5z
dWNjZXNzb3JzKCkuc2l6ZSgpOyBqKyspCisgICAgICAgICAgICAgICAgICAgIG5ld091dC5tZXJn
ZShibG9jay0+c3VjY2Vzc29ycygpW2pdLT5pbigpKTsKKyAgICAgICAgICAgICAgICBib29sIG91
dERpZENoYW5nZSA9IGJsb2NrLT5vdXQoKS5zZXRBbmRDaGVjayhuZXdPdXQpOworICAgICAgICAg
ICAgICAgIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQmxvY2sodW5saW5rZWRDb2RlQmxvY2ssIGJs
b2NrLmdldCgpLCBtX2dyYXBoKTsKKyAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG91dERpZENo
YW5nZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSB3aGlsZSAoY2hhbmdlZCk7CisgICAgfQor
Citwcml2YXRlOgorICAgIFZNJiBtX3ZtOworICAgIEJ5dGVjb2RlR3JhcGg8VW5saW5rZWRDb2Rl
QmxvY2s+JiBtX2dyYXBoOworICAgIEJ5dGVjb2RlSW5zZXJ0aW9uU2V0IG1faW5zZXJ0aW9uU2V0
OworICAgIFZlY3RvcjxTdG9yYWdlPiBtX3N0b3JhZ2VzOworICAgIFN0cm9uZzxTeW1ib2xUYWJs
ZT4gbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlOworICAgIGludCBtX2dlbmVyYXRvckZyYW1l
U3ltYm9sVGFibGVJbmRleDsKK307CisKK3ZvaWQgcGVyZm9ybUdlbmVyYXRvcmlmaWNhdGlvbihC
eXRlY29kZUdyYXBoPFVubGlua2VkQ29kZUJsb2NrPiYgZ3JhcGgsIFN5bWJvbFRhYmxlKiBnZW5l
cmF0b3JGcmFtZVN5bWJvbFRhYmxlLCBpbnQgZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZUluZGV4
KQoreworICAgIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uIHBhc3MoZ3JhcGgsIGdlbmVyYXRv
ckZyYW1lU3ltYm9sVGFibGUsIGdlbmVyYXRvckZyYW1lU3ltYm9sVGFibGVJbmRleCk7CisgICAg
cGFzcy5ydW4oKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjc4ZTc4Njk1NmU5NjE1NmQzN2NiZjdkZDA5ZTc4ZjI0YjA3YjRiYjMKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVH
ZW5lcmF0b3JpZmljYXRpb24uaApAQCAtMCwwICsxLDM2IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE2IFl1c3VrZSBTdXp1a2kgPHl1c3VrZS5zdXp1a2lAc3NsYWIuaWNzLmtlaW8uYWMuanA+
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8Qnl0ZWNvZGVHcmFwaC5oPgor
CituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgU3ltYm9sVGFibGU7CisKK3ZvaWQgcGVyZm9ybUdl
bmVyYXRvcmlmaWNhdGlvbihCeXRlY29kZUdyYXBoPFVubGlua2VkQ29kZUJsb2NrPiYsIFN5bWJv
bFRhYmxlKiBnZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlLCBpbnQgZ2VuZXJhdG9yRnJhbWVTeW1i
b2xUYWJsZUluZGV4KTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVHcmFwaC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVHcmFwaC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTA1ZWQ0Y2Vi
ZjdlYTJlODU5NDA2MTg5YmRlMTIyZjdiMzg3ODk1NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUdyYXBoLmNwcApAQCAtMCwwICsxLDM0
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IFl1c3VrZSBTdXp1a2kgPHl1c3VrZS5zdXp1
a2lAc3NsYWIuaWNzLmtlaW8uYWMuanA+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJCeXRlY29kZUdyYXBoLmgiCisKKyNpbmNsdWRlICJCeXRlY29kZUJhc2ljQmxv
Y2suaCIKKworbmFtZXNwYWNlIEpTQyB7CisKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVHcmFwaC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlR3JhcGguaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5j
YjM5YzA3Y2MzMmJjYjM1ZWU2YmY0YmQwNmM2NTE0ZTY0MjllNGUwCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlR3JhcGguaApAQCAtMCww
ICsxLDk4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IFl1c3VrZSBTdXp1a2kgPHl1c3Vr
ZS5zdXp1a2lAc3NsYWIuaWNzLmtlaW8uYWMuanA+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQnl0ZWNv
ZGVHcmFwaF9oCisjZGVmaW5lIEJ5dGVjb2RlR3JhcGhfaAorCisjaW5jbHVkZSAiQnl0ZWNvZGVC
YXNpY0Jsb2NrLmgiCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgSlNDIHsK
KworY2xhc3MgQnl0ZWNvZGVCYXNpY0Jsb2NrOworCit0ZW1wbGF0ZTx0eXBlbmFtZSBCbG9jaz4K
K2NsYXNzIEJ5dGVjb2RlR3JhcGggeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKEJ5dGVjb2RlR3JhcGgpOworcHVibGljOgorICAgIHR5cGVk
ZWYgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiBCYXNpY0Jsb2Nr
c1ZlY3RvcjsKKworICAgIGlubGluZSBCeXRlY29kZUdyYXBoKEJsb2NrKiwgdHlwZW5hbWUgQmxv
Y2s6OlVucGFja2VkSW5zdHJ1Y3Rpb25zJik7CisKKyAgICBCbG9jayogY29kZUJsb2NrKCkgY29u
c3QgeyByZXR1cm4gbV9jb2RlQmxvY2s7IH0KKworICAgIEJhc2ljQmxvY2tzVmVjdG9yJiBiYXNp
Y0Jsb2NrcygpIHsgcmV0dXJuIG1fYmFzaWNCbG9ja3M7IH0KKworICAgIHR5cGVuYW1lIEJsb2Nr
OjpVbnBhY2tlZEluc3RydWN0aW9ucyYgaW5zdHJ1Y3Rpb25zKCkgeyByZXR1cm4gbV9pbnN0cnVj
dGlvbnM7IH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEl0ZXJhdG9yPgorICAgIGNsYXNzIFJl
dmVyc2VJdGVyYWJsZSB7CisgICAgcHVibGljOgorICAgICAgICBSZXZlcnNlSXRlcmFibGUoSXRl
cmF0b3IgYmVnaW4sIEl0ZXJhdG9yIGVuZCkKKyAgICAgICAgICAgIDogbV9iZWdpbihiZWdpbikK
KyAgICAgICAgICAgICwgbV9lbmQoZW5kKQorICAgICAgICB7CisgICAgICAgIH0KKworICAgICAg
ICBzdGQ6OnJldmVyc2VfaXRlcmF0b3I8SXRlcmF0b3I+IGJlZ2luKCkKKyAgICAgICAgeworICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6cmV2ZXJzZV9pdGVyYXRvcjxJdGVyYXRvcj4obV9lbmQpOwor
ICAgICAgICB9CisKKyAgICAgICAgc3RkOjpyZXZlcnNlX2l0ZXJhdG9yPEl0ZXJhdG9yPiBlbmQo
KQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpyZXZlcnNlX2l0ZXJhdG9yPEl0
ZXJhdG9yPihtX2JlZ2luKTsKKyAgICAgICAgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgSXRl
cmF0b3IgbV9iZWdpbjsKKyAgICAgICAgSXRlcmF0b3IgbV9lbmQ7CisgICAgfTsKKworICAgIFJl
dmVyc2VJdGVyYWJsZTxCYXNpY0Jsb2Nrc1ZlY3Rvcjo6aXRlcmF0b3I+IGJhc2ljQmxvY2tzSW5S
ZXZlcnNlT3JkZXIoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHsgbV9iYXNpY0Jsb2Nrcy5iZWdp
bigpLCBtX2Jhc2ljQmxvY2tzLmVuZCgpIH07CisgICAgfQorCitwcml2YXRlOgorICAgIEJsb2Nr
KiBtX2NvZGVCbG9jazsKKyAgICBCYXNpY0Jsb2Nrc1ZlY3RvciBtX2Jhc2ljQmxvY2tzOworICAg
IHR5cGVuYW1lIEJsb2NrOjpVbnBhY2tlZEluc3RydWN0aW9ucyYgbV9pbnN0cnVjdGlvbnM7Cit9
OworCisKK3RlbXBsYXRlPHR5cGVuYW1lIEJsb2NrPgorQnl0ZWNvZGVHcmFwaDxCbG9jaz46OkJ5
dGVjb2RlR3JhcGgoQmxvY2sqIGNvZGVCbG9jaywgdHlwZW5hbWUgQmxvY2s6OlVucGFja2VkSW5z
dHJ1Y3Rpb25zJiBpbnN0cnVjdGlvbnMpCisgICAgOiBtX2NvZGVCbG9jayhjb2RlQmxvY2spCisg
ICAgLCBtX2luc3RydWN0aW9ucyhpbnN0cnVjdGlvbnMpCit7CisgICAgQVNTRVJUKG1fY29kZUJs
b2NrKTsKKyAgICBjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2NrcyhtX2NvZGVCbG9jaywgaW5zdHJ1
Y3Rpb25zLmJlZ2luKCksIGluc3RydWN0aW9ucy5zaXplKCksIG1fYmFzaWNCbG9ja3MpOworICAg
IEFTU0VSVChtX2Jhc2ljQmxvY2tzLnNpemUoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwor
I2VuZGlmIC8vIEJ5dGVjb2RlR3JhcGhfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlSW5zZXJ0aW9uU2V0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9CeXRlY29kZUluc2VydGlvblNldC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWI2MWM1
ZTBmMDA1YzdiYTI4Yzc3YWEzZDM2Y2NjZmNmODM4OWUzMQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUluc2VydGlvblNldC5jcHAKQEAg
LTAsMCArMSwxNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgWXVzdWtlIFN1enVraSA8
eXVzdWtlLnN1enVraUBzc2xhYi5pY3Mua2Vpby5hYy5qcD4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIkJ5dGVjb2RlSW5zZXJ0aW9uU2V0LmgiCisKKyNpbmNsdWRl
ICJQcmVjaXNlSnVtcFRhcmdldHMuaCIKKyNpbmNsdWRlIDx3dGYvQnViYmxlU29ydC5oPgorCitu
YW1lc3BhY2UgSlNDIHsKKworaW50IEJ5dGVjb2RlSW5zZXJ0aW9uU2V0OjphZGp1c3RPZmZzZXQo
aW50IGJ5dGVjb2RlT2Zmc2V0LCBpbnQganVtcFRhcmdldCkKK3sKKyAgICAvLyBUT0RPOiBTdXBl
ciByb3VnaCBpbXBsZW1lbnRhdGlvbi4gV2Ugc2hvdWxkIGxvb2sgaW50byBpdCBjYXJlZnVsbHku
CisgICAgaWYgKGJ5dGVjb2RlT2Zmc2V0IDwganVtcFRhcmdldCkgeworICAgICAgICBhdXRvIHN0
YXJ0ID0gc3RkOjpsb3dlcl9ib3VuZChtX2luc2VydGlvbnMuYmVnaW4oKSwgbV9pbnNlcnRpb25z
LmVuZCgpLCBieXRlY29kZU9mZnNldCwgWyZdIChjb25zdCBJbnNlcnRpb24mIGluc2VydGlvbiwg
aW50IGJ5dGVjb2RlT2Zmc2V0KSB7CisgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50
PihpbnNlcnRpb24uaW5kZXgoKSkgPCBieXRlY29kZU9mZnNldDsKKyAgICAgICAgfSk7CisgICAg
ICAgIGlmIChzdGFydCAhPSBtX2luc2VydGlvbnMuZW5kKCkpIHsKKyAgICAgICAgICAgIGF1dG8g
ZW5kID0gc3RkOjpsb3dlcl9ib3VuZChtX2luc2VydGlvbnMuYmVnaW4oKSwgbV9pbnNlcnRpb25z
LmVuZCgpLCBqdW1wVGFyZ2V0LCBbJl0gKGNvbnN0IEluc2VydGlvbiYgaW5zZXJ0aW9uLCBpbnQg
anVtcFRhcmdldCkgeworICAgICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KGlu
c2VydGlvbi5pbmRleCgpKSA8IGp1bXBUYXJnZXQ7CisgICAgICAgICAgICB9KTsKKyAgICAgICAg
ICAgIGZvciAoOyBzdGFydCAhPSBlbmQ7ICsrc3RhcnQpIHsKKyAgICAgICAgICAgICAgICBpZiAo
c3RhcnQtPmVsZW1lbnQoKS50eXBlID09IENvbW1hbmQ6OlR5cGU6OlJlbW92ZSkKKyAgICAgICAg
ICAgICAgICAgICAganVtcFRhcmdldCAtPSBzdGFydC0+ZWxlbWVudCgpLmxlbmd0aDsKKyAgICAg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGp1bXBUYXJnZXQgKz0gc3RhcnQt
PmVsZW1lbnQoKS5sZW5ndGg7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0
dXJuIGp1bXBUYXJnZXQgLSBieXRlY29kZU9mZnNldDsKKyAgICB9CisKKyAgICBpZiAoYnl0ZWNv
ZGVPZmZzZXQgPT0ganVtcFRhcmdldCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4g
LWFkanVzdE9mZnNldChqdW1wVGFyZ2V0LCBieXRlY29kZU9mZnNldCk7Cit9CisKK3ZvaWQgQnl0
ZWNvZGVJbnNlcnRpb25TZXQ6OmV4ZWN1dGUoKQoreworICAgIFdURjo6YnViYmxlU29ydChtX2lu
c2VydGlvbnMuYmVnaW4oKSwgbV9pbnNlcnRpb25zLmVuZCgpLCBbXSAoY29uc3QgSW5zZXJ0aW9u
JiBsaHMsIGNvbnN0IEluc2VydGlvbiYgcmhzKSB7CisgICAgICAgIC8vIFdlIHdvdWxkIGxpa2Ug
dG8gcGVyZm9ybSByZW1vdmUgb3BlcmF0aW9uIGJlZm9yZSBpbnNlcnRpb24uCisgICAgICAgIGlm
IChsaHMuaW5kZXgoKSA9PSByaHMuaW5kZXgoKSkKKyAgICAgICAgICAgIHJldHVybiByaHMuZWxl
bWVudCgpLnR5cGUgPT0gQ29tbWFuZDo6VHlwZTo6UmVtb3ZlOworICAgICAgICByZXR1cm4gbGhz
IDwgcmhzOworICAgIH0pOworCisgICAgLy8gQmVmb3JlIGFwcGx5aW5nIHRoZSBjaGFuZ2VzLCB3
ZSBhZGp1c3QgdGhlIGp1bXBzIGJhc2VkIG9uIHRoZSBvcmlnaW5hbCBieXRlY29kZSBvZmZzZXQs
IHRoZSBvZmZzZXQgdG8gdGhlIGp1bXAgdGFyZ2V0LCBhbmQKKyAgICAvLyB0aGUgaW5zZXJ0aW9u
IGluZm9ybWF0aW9uLgorICAgIFVubGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBtX2dyYXBo
LmNvZGVCbG9jaygpOworICAgIFVubGlua2VkSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2lu
ID0gbV9ncmFwaC5pbnN0cnVjdGlvbnMoKS5iZWdpbigpOworICAgIGZvciAoaW50IGJ5dGVjb2Rl
T2Zmc2V0ID0gMCwgaW5zdHJ1Y3Rpb25Db3VudCA9IG1fZ3JhcGguaW5zdHJ1Y3Rpb25zKCkuc2l6
ZSgpOyBieXRlY29kZU9mZnNldCA8IGluc3RydWN0aW9uQ291bnQ7KSB7CisgICAgICAgIFVubGlu
a2VkSW5zdHJ1Y3Rpb24qIGN1cnJlbnQgPSBpbnN0cnVjdGlvbnNCZWdpbiArIGJ5dGVjb2RlT2Zm
c2V0OworICAgICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGN1cnJlbnRbMF0udS5vcGNvZGU7CisK
KyAgICAgICAgc3dpdGNoIChvcGNvZGVJRCkgeworICAgICAgICBjYXNlIG9wX2ptcDoKKyAgICAg
ICAgICAgIGN1cnJlbnRbMV0udS5vcGVyYW5kID0gYWRqdXN0T2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0
LCBieXRlY29kZU9mZnNldCArIGN1cnJlbnRbMV0udS5vcGVyYW5kKTsKKyAgICAgICAgICAgIGJy
ZWFrOworCisgICAgICAgIGNhc2Ugb3BfanRydWU6CisgICAgICAgIGNhc2Ugb3BfamZhbHNlOgor
ICAgICAgICBjYXNlIG9wX2plcV9udWxsOgorICAgICAgICBjYXNlIG9wX2puZXFfbnVsbDoKKyAg
ICAgICAgICAgIGN1cnJlbnRbMl0udS5vcGVyYW5kID0gYWRqdXN0T2Zmc2V0KGJ5dGVjb2RlT2Zm
c2V0LCBieXRlY29kZU9mZnNldCArIGN1cnJlbnRbMl0udS5vcGVyYW5kKTsKKyAgICAgICAgICAg
IGJyZWFrOworCisgICAgICAgIGNhc2Ugb3Bfam5lcV9wdHI6CisgICAgICAgIGNhc2Ugb3Bfamxl
c3M6CisgICAgICAgIGNhc2Ugb3Bfamxlc3NlcToKKyAgICAgICAgY2FzZSBvcF9qZ3JlYXRlcjoK
KyAgICAgICAgY2FzZSBvcF9qZ3JlYXRlcmVxOgorICAgICAgICBjYXNlIG9wX2pubGVzczoKKyAg
ICAgICAgY2FzZSBvcF9qbmxlc3NlcToKKyAgICAgICAgY2FzZSBvcF9qbmdyZWF0ZXI6CisgICAg
ICAgIGNhc2Ugb3Bfam5ncmVhdGVyZXE6CisgICAgICAgICAgICBjdXJyZW50WzNdLnUub3BlcmFu
ZCA9IGFkanVzdE9mZnNldChieXRlY29kZU9mZnNldCwgYnl0ZWNvZGVPZmZzZXQgKyBjdXJyZW50
WzNdLnUub3BlcmFuZCk7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIG9wX3N3
aXRjaF9pbW06CisgICAgICAgIGNhc2Ugb3Bfc3dpdGNoX2NoYXI6IHsKKyAgICAgICAgICAgIGF1
dG8mIHRhYmxlID0gY29kZUJsb2NrLT5zd2l0Y2hKdW1wVGFibGUoY3VycmVudFsxXS51Lm9wZXJh
bmQpOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gdGFibGUuYnJhbmNoT2Zmc2V0cy5z
aXplKCk7IGktLTspCisgICAgICAgICAgICAgICAgdGFibGUuYnJhbmNoT2Zmc2V0c1tpXSA9IGFk
anVzdE9mZnNldChieXRlY29kZU9mZnNldCwgYnl0ZWNvZGVPZmZzZXQgKyB0YWJsZS5icmFuY2hP
ZmZzZXRzW2ldKTsKKyAgICAgICAgICAgIGN1cnJlbnRbMl0udS5vcGVyYW5kID0gYWRqdXN0T2Zm
c2V0KGJ5dGVjb2RlT2Zmc2V0LCBieXRlY29kZU9mZnNldCArIGN1cnJlbnRbMl0udS5vcGVyYW5k
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBvcF9zd2l0
Y2hfc3RyaW5nOiB7CisgICAgICAgICAgICBhdXRvJiB0YWJsZSA9IGNvZGVCbG9jay0+c3RyaW5n
U3dpdGNoSnVtcFRhYmxlKGN1cnJlbnRbMV0udS5vcGVyYW5kKTsKKyAgICAgICAgICAgIGF1dG8g
aXRlciA9IHRhYmxlLm9mZnNldFRhYmxlLmJlZ2luKCk7CisgICAgICAgICAgICBhdXRvIGVuZCA9
IHRhYmxlLm9mZnNldFRhYmxlLmVuZCgpOworICAgICAgICAgICAgZm9yICg7IGl0ZXIgIT0gZW5k
OyArK2l0ZXIpCisgICAgICAgICAgICAgICAgaXRlci0+dmFsdWUuYnJhbmNoT2Zmc2V0ID0gYWRq
dXN0T2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0LCBieXRlY29kZU9mZnNldCArIGl0ZXItPnZhbHVlLmJy
YW5jaE9mZnNldCk7CisgICAgICAgICAgICBjdXJyZW50WzJdLnUub3BlcmFuZCA9IGFkanVzdE9m
ZnNldChieXRlY29kZU9mZnNldCwgYnl0ZWNvZGVPZmZzZXQgKyBjdXJyZW50WzJdLnUub3BlcmFu
ZCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGJ5dGVjb2RlT2Zmc2V0ICs9
IG9wY29kZUxlbmd0aChvcGNvZGVJRCk7CisgICAgfQorCisgICAgLy8gVGhlbiwgZXhjZXB0aW9u
IGhhbmRsZXJzIHNob3VsZCBiZSBhZGp1c3RlZC4KKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IGNvZGVCbG9jay0+bnVtYmVyT2ZFeGNlcHRpb25IYW5kbGVycygpOyArK2kpIHsKKyAgICAgICAg
VW5saW5rZWRIYW5kbGVySW5mbyYgaGFuZGxlciA9IGNvZGVCbG9jay0+ZXhjZXB0aW9uSGFuZGxl
cihpKTsKKyAgICAgICAgaGFuZGxlci50YXJnZXQgPSBhZGp1c3RPZmZzZXQoMCwgaGFuZGxlci50
YXJnZXQpOworICAgICAgICBoYW5kbGVyLnN0YXJ0ID0gYWRqdXN0T2Zmc2V0KDAsIGhhbmRsZXIu
c3RhcnQpOworICAgICAgICBoYW5kbGVyLmVuZCA9IGFkanVzdE9mZnNldCgwLCBoYW5kbGVyLmVu
ZCk7CisgICAgfQorCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb2RlQmxvY2stPm51bWJl
ck9mUHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnMoKTsgKytpKQorICAgICAgICBjb2RlQmxvY2st
PnByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zKClbaV0gPSBhZGp1c3RPZmZzZXQoMCwgY29kZUJs
b2NrLT5wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9ucygpW2ldKTsKKworICAgIC8vIEZJWE1FOiBB
ZGp1c3QgZXhwcmVzc2lvbiB0ZXh0IGluZm8uCisKKyAgICAvLyBGSVhNRTogb3AgcHJvZmlsZSBi
eXRlY29kZSBvZmZzZXRzLgorCisgICAgLy8gRklYTUU6IE1vdmUgYWxsIG9mIHRoZW0gdG8gVW5s
aW5rZWRDb2RlQmxvY2suCisKKyAgICAvLyBGSVhNRTogQ3JhemlseSBuYWl2ZSEgSGVyZSwgd2Ug
c2hvdWxkIGtub3cgdGhlIGxlbmd0aCBvZiB0aGUgdHJhbnNmb3JtZWQgaW5zdHJ1Y3Rpb25zIChz
aW5jZSBpbnNlcnRpb24gYW5kIHJlbW92YWwgY29tbWFuZHMgY2FuIGhhdmUgdGhlaXIgbGVuZ3Ro
KS4KKyAgICBmb3IgKHNpemVfdCBpbnNlcnRpb25JbmRleCA9IG1faW5zZXJ0aW9ucy5zaXplKCk7
IGluc2VydGlvbkluZGV4LS07KSB7CisgICAgICAgIGNvbnN0IEluc2VydGlvbiYgaW5zZXJ0aW9u
ID0gbV9pbnNlcnRpb25zW2luc2VydGlvbkluZGV4XTsKKyAgICAgICAgaWYgKGluc2VydGlvbi5l
bGVtZW50KCkudHlwZSA9PSBDb21tYW5kOjpUeXBlOjpSZW1vdmUpCisgICAgICAgICAgICBtX2dy
YXBoLmluc3RydWN0aW9ucygpLnJlbW92ZShpbnNlcnRpb24uaW5kZXgoKSwgaW5zZXJ0aW9uLmVs
ZW1lbnQoKS5sZW5ndGgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX2dyYXBoLmluc3Ry
dWN0aW9ucygpLmluc2VydChpbnNlcnRpb24uaW5kZXgoKSwgaW5zZXJ0aW9uLmVsZW1lbnQoKS5i
eXRlY29kZS5pbnN0cnVjdGlvbnMsIG9wY29kZUxlbmd0aChpbnNlcnRpb24uZWxlbWVudCgpLmJ5
dGVjb2RlLmluc3RydWN0aW9uc1swXS51Lm9wY29kZSkpOworICAgIH0KKworICAgIHJlY29tcHV0
ZVByZWNpc2VKdW1wVGFyZ2V0cyhtX2dyYXBoLmNvZGVCbG9jaygpLCBtX2dyYXBoLmluc3RydWN0
aW9ucygpLmJlZ2luKCksIG1fZ3JhcGguaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKK30KKworfSAv
LyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVJbnNlcnRpb25TZXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZUluc2VydGlvblNldC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIxNWI3MmU3ZTYyMzM1YzM3ZTVm
Zjg3Yzk0NDRiYTBlOGRhMDA3ZjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnNlcnRpb25TZXQuaApAQCAtMCwwICsxLDc3IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE2IFl1c3VrZSBTdXp1a2kgPHl1c3VrZS5zdXp1a2lAc3Ns
YWIuaWNzLmtlaW8uYWMuanA+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAi
Qnl0ZWNvZGVHcmFwaC5oIgorI2luY2x1ZGUgIlVubGlua2VkQ29kZUJsb2NrLmgiCisjaW5jbHVk
ZSA8d3RmL0luc2VydGlvbi5oPgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgQnl0ZWNvZGVJ
bnNlcnRpb25TZXQgeworcHVibGljOgorICAgIHN0cnVjdCBJbnNlcnRlZEJ5dGVjb2RlIHsKKyAg
ICAgICAgVW5saW5rZWRJbnN0cnVjdGlvbiBpbnN0cnVjdGlvbnNbTUFYX09QQ09ERV9MRU5HVEhf
T0ZfQllURUNPREVdOworICAgIH07CisKKyAgICBzdHJ1Y3QgQ29tbWFuZCB7CisgICAgICAgIGVu
dW0gY2xhc3MgVHlwZSB7CisgICAgICAgICAgICBJbnNlcnQsCisgICAgICAgICAgICBSZW1vdmUs
CisgICAgICAgIH07CisKKyAgICAgICAgVHlwZSB0eXBlOworICAgICAgICBzaXplX3QgbGVuZ3Ro
OworICAgICAgICBJbnNlcnRlZEJ5dGVjb2RlIGJ5dGVjb2RlOworICAgIH07CisKKyAgICB0eXBl
ZGVmIFdURjo6SW5zZXJ0aW9uPENvbW1hbmQ+IEluc2VydGlvbjsKKworICAgIEJ5dGVjb2RlSW5z
ZXJ0aW9uU2V0KEJ5dGVjb2RlR3JhcGg8VW5saW5rZWRDb2RlQmxvY2s+JiBncmFwaCkKKyAgICAg
ICAgOiBtX2dyYXBoKGdyYXBoKQorICAgIHsKKyAgICB9CisKKyAgICB2b2lkIGluc2VydCh1bnNp
Z25lZCBieXRlY29kZU9mZnNldCwgSW5zZXJ0ZWRCeXRlY29kZSBieXRlY29kZSkKKyAgICB7Cisg
ICAgICAgIG1faW5zZXJ0aW9ucy5hcHBlbmQoSW5zZXJ0aW9uKGJ5dGVjb2RlT2Zmc2V0LCBDb21t
YW5kIHsgQ29tbWFuZDo6VHlwZTo6SW5zZXJ0LCBvcGNvZGVMZW5ndGgoYnl0ZWNvZGUuaW5zdHJ1
Y3Rpb25zWzBdLnUub3Bjb2RlKSwgYnl0ZWNvZGUgfSkpOworICAgIH0KKworICAgIHZvaWQgcmVt
b3ZlQnl0ZWNvZGUodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpCisgICAgeworICAgICAgICBtX2lu
c2VydGlvbnMuYXBwZW5kKEluc2VydGlvbihieXRlY29kZU9mZnNldCwgQ29tbWFuZCB7IENvbW1h
bmQ6OlR5cGU6OlJlbW92ZSwgb3Bjb2RlTGVuZ3RoKG1fZ3JhcGguaW5zdHJ1Y3Rpb25zKClbYnl0
ZWNvZGVPZmZzZXRdLnUub3Bjb2RlKSwgSW5zZXJ0ZWRCeXRlY29kZSB7IH0gfSkpOworICAgIH0K
KworICAgIHZvaWQgZXhlY3V0ZSgpOworCitwcml2YXRlOgorICAgIGludCBhZGp1c3RPZmZzZXQo
aW50IGJ5dGVjb2RlT2Zmc2V0LCBpbnQganVtcFRhcmdldCk7CisKKyAgICBCeXRlY29kZUdyYXBo
PFVubGlua2VkQ29kZUJsb2NrPiYgbV9ncmFwaDsKKyAgICBWZWN0b3I8SW5zZXJ0aW9uLCA4PiBt
X2luc2VydGlvbnM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5j
cHAKaW5kZXggMTdlODJhMmZiYmEwMTUwNDNlOTlkMzRlZDI1NjkzNzJiMzZmN2E4NS4uMDM4OTc5
ODdhMjdiY2Y5OTI2YTc3MDllMzIwODIzYjQyZTkxZjM1OCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5j
cHAKQEAgLTM1LDEwICszNSw5IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1CeXRlY29kZUxpdmVu
ZXNzQW5hbHlzaXM6OkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcyhDb2RlQmxvY2sqIGNvZGVCbG9j
aykKLSAgICA6IG1fY29kZUJsb2NrKGNvZGVCbG9jaykKK0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNp
czo6Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzKEJ5dGVjb2RlR3JhcGg8Q29kZUJsb2NrPiYgZ3Jh
cGgpCisgICAgOiBtX2dyYXBoKGdyYXBoKQogewotICAgIEFTU0VSVChtX2NvZGVCbG9jayk7CiAg
ICAgY29tcHV0ZSgpOwogfQogCkBAIC01Niw5ICs1NSw5IEBAIHN0YXRpYyB1bnNpZ25lZCBnZXRM
ZWFkZXJPZmZzZXRGb3JCYXNpY0Jsb2NrKHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxv
Y2s+CiAgICAgcmV0dXJuICgqYmFzaWNCbG9jayktPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCk7CiB9
CiAKLXN0YXRpYyBCeXRlY29kZUJhc2ljQmxvY2sqIGZpbmRCYXNpY0Jsb2NrV2l0aExlYWRlck9m
ZnNldChWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+JiBiYXNpY0Js
b2NrcywgdW5zaWduZWQgbGVhZGVyT2Zmc2V0KQorc3RhdGljIEJ5dGVjb2RlQmFzaWNCbG9jayog
ZmluZEJhc2ljQmxvY2tXaXRoTGVhZGVyT2Zmc2V0KEJ5dGVjb2RlR3JhcGg8Q29kZUJsb2NrPiYg
Z3JhcGgsIHVuc2lnbmVkIGxlYWRlck9mZnNldCkKIHsKLSAgICByZXR1cm4gKCp0cnlCaW5hcnlT
ZWFyY2g8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4sIHVuc2lnbmVkPihiYXNp
Y0Jsb2NrcywgYmFzaWNCbG9ja3Muc2l6ZSgpLCBsZWFkZXJPZmZzZXQsIGdldExlYWRlck9mZnNl
dEZvckJhc2ljQmxvY2spKS5nZXQoKTsKKyAgICByZXR1cm4gKCp0cnlCaW5hcnlTZWFyY2g8c3Rk
Ojp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4sIHVuc2lnbmVkPihncmFwaC5iYXNpY0Js
b2NrcygpLCBncmFwaC5iYXNpY0Jsb2NrcygpLnNpemUoKSwgbGVhZGVyT2Zmc2V0LCBnZXRMZWFk
ZXJPZmZzZXRGb3JCYXNpY0Jsb2NrKSkuZ2V0KCk7CiB9CiAKIHN0YXRpYyBib29sIGJsb2NrQ29u
dGFpbnNCeXRlY29kZU9mZnNldChCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrLCB1bnNpZ25lZCBi
eXRlY29kZU9mZnNldCkKQEAgLTY3LDcgKzY2LDcgQEAgc3RhdGljIGJvb2wgYmxvY2tDb250YWlu
c0J5dGVjb2RlT2Zmc2V0KEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2ssIHVuc2lnbmVkIGJ5dGUK
ICAgICByZXR1cm4gYnl0ZWNvZGVPZmZzZXQgPj0gbGVhZGVyT2Zmc2V0ICYmIGJ5dGVjb2RlT2Zm
c2V0IDwgbGVhZGVyT2Zmc2V0ICsgYmxvY2stPnRvdGFsQnl0ZWNvZGVMZW5ndGgoKTsKIH0KIAot
c3RhdGljIEJ5dGVjb2RlQmFzaWNCbG9jayogZmluZEJhc2ljQmxvY2tGb3JCeXRlY29kZU9mZnNl
dChWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+JiBiYXNpY0Jsb2Nr
cywgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpCitzdGF0aWMgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBm
aW5kQmFzaWNCbG9ja0ZvckJ5dGVjb2RlT2Zmc2V0KEJ5dGVjb2RlR3JhcGg8Q29kZUJsb2NrPiYg
Z3JhcGgsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KQogewogLyoKICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgYmFzaWNCbG9ja3Muc2l6ZSgpOyBpKyspIHsKQEAgLTc2LDYgKzc1LDggQEAg
c3RhdGljIEJ5dGVjb2RlQmFzaWNCbG9jayogZmluZEJhc2ljQmxvY2tGb3JCeXRlY29kZU9mZnNl
dChWZWN0b3I8c3RkOjp1bmlxdWVfcHQKICAgICB9CiAgICAgcmV0dXJuIDA7CiAqLworICAgIEJ5
dGVjb2RlR3JhcGg8Q29kZUJsb2NrPjo6QmFzaWNCbG9ja3NWZWN0b3ImIGJhc2ljQmxvY2tzID0g
Z3JhcGguYmFzaWNCbG9ja3MoKTsKKwogICAgIHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2lj
QmxvY2s+KiBiYXNpY0Jsb2NrID0gYXBwcm94aW1hdGVCaW5hcnlTZWFyY2g8c3RkOjp1bmlxdWVf
cHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4sIHVuc2lnbmVkPigKICAgICAgICAgYmFzaWNCbG9ja3Ms
IGJhc2ljQmxvY2tzLnNpemUoKSwgYnl0ZWNvZGVPZmZzZXQsIGdldExlYWRlck9mZnNldEZvckJh
c2ljQmxvY2spOwogICAgIC8vIFdlIGZvdW5kIHRoZSBibG9jayB3ZSB3ZXJlIGxvb2tpbmcgZm9y
LgpAQCAtOTgsNyArOTksNyBAQCBzdGF0aWMgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBmaW5kQmFzaWNC
bG9ja0ZvckJ5dGVjb2RlT2Zmc2V0KFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdAogLy8gU2ltcGxpZmll
ZCBpbnRlcmZhY2UgdG8gYnl0ZWNvZGUgdXNlL2RlZiwgd2hpY2ggZGV0ZXJtaW5lcyBkZWZzIGZp
cnN0IGFuZCB0aGVuIHVzZXMsIGFuZCBpbmNsdWRlcwogLy8gZXhjZXB0aW9uIGhhbmRsZXJzIGlu
IHRoZSB1c2VzLgogdGVtcGxhdGU8dHlwZW5hbWUgVXNlRnVuY3RvciwgdHlwZW5hbWUgRGVmRnVu
Y3Rvcj4KLXN0YXRpYyB2b2lkIHN0ZXBPdmVySW5zdHJ1Y3Rpb24oQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2ssIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0
ZWNvZGVCYXNpY0Jsb2NrPj4mIGJhc2ljQmxvY2tzLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwg
Y29uc3QgVXNlRnVuY3RvciYgdXNlLCBjb25zdCBEZWZGdW5jdG9yJiBkZWYpCitzdGF0aWMgdm9p
ZCBzdGVwT3Zlckluc3RydWN0aW9uKENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29kZUdyYXBo
PENvZGVCbG9jaz4mIGdyYXBoLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgY29uc3QgVXNlRnVu
Y3RvciYgdXNlLCBjb25zdCBEZWZGdW5jdG9yJiBkZWYpCiB7CiAgICAgLy8gVGhpcyBhYnN0cmFj
dGx5IGV4ZWN1dGUgdGhlIGluc3RydWN0aW9uIGluIHJldmVyc2UuIEluc3RydWN0aW9ucyBsb2dp
Y2FsbHkgZmlyc3QgdXNlIG9wZXJhbmRzIGFuZAogICAgIC8vIHRoZW4gZGVmaW5lIG9wZXJhbmRz
LiBUaGlzIGxvZ2ljYWwgb3JkZXJpbmcgaXMgbmVjZXNzYXJ5IGZvciBvcGVyYXRpb25zIHRoYXQg
dXNlIGFuZCBkZWYgdGhlIHNhbWUKQEAgLTExNiwxNCArMTE3LDE0IEBAIHN0YXRpYyB2b2lkIHN0
ZXBPdmVySW5zdHJ1Y3Rpb24oQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFzaWNCbG9j
ayogYmxvY2ssCiAgICAgLy8gZmlyc3QgYWRkIGl0IHRvIHRoZSBvdXQgc2V0ICh0aGUgdXNlKSwg
YW5kIHRoZW4gd2UnZCByZW1vdmUgaXQgKHRoZSBkZWYpLgogICAgIAogICAgIGNvbXB1dGVEZWZz
Rm9yQnl0ZWNvZGVPZmZzZXQoCi0gICAgICAgIGNvZGVCbG9jaywgYmxvY2ssIGJ5dGVjb2RlT2Zm
c2V0LAorICAgICAgICBjb2RlQmxvY2ssIGJ5dGVjb2RlT2Zmc2V0LAogICAgICAgICBbJl0gKENv
ZGVCbG9jayogY29kZUJsb2NrLCBJbnN0cnVjdGlvbiosIE9wY29kZUlELCBpbnQgb3BlcmFuZCkg
ewogICAgICAgICAgICAgaWYgKGlzVmFsaWRSZWdpc3RlckZvckxpdmVuZXNzKGNvZGVCbG9jaywg
b3BlcmFuZCkpCiAgICAgICAgICAgICAgICAgZGVmKFZpcnR1YWxSZWdpc3RlcihvcGVyYW5kKS50
b0xvY2FsKCkpOwogICAgICAgICB9KTsKIAogICAgIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZz
ZXQoCi0gICAgICAgIGNvZGVCbG9jaywgYmxvY2ssIGJ5dGVjb2RlT2Zmc2V0LAorICAgICAgICBj
b2RlQmxvY2ssIGJ5dGVjb2RlT2Zmc2V0LAogICAgICAgICBbJl0gKENvZGVCbG9jayogY29kZUJs
b2NrLCBJbnN0cnVjdGlvbiosIE9wY29kZUlELCBpbnQgb3BlcmFuZCkgewogICAgICAgICAgICAg
aWYgKGlzVmFsaWRSZWdpc3RlckZvckxpdmVuZXNzKGNvZGVCbG9jaywgb3BlcmFuZCkpCiAgICAg
ICAgICAgICAgICAgdXNlKFZpcnR1YWxSZWdpc3RlcihvcGVyYW5kKS50b0xvY2FsKCkpOwpAQCAt
MTMyLDI0ICsxMzMsMTYgQEAgc3RhdGljIHZvaWQgc3RlcE92ZXJJbnN0cnVjdGlvbihDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaywKICAgICAvLyBJZiB3ZSBo
YXZlIGFuIGV4Y2VwdGlvbiBoYW5kbGVyLCB3ZSB3YW50IHRoZSBsaXZlLWluIHZhcmlhYmxlcyBv
ZiB0aGUgCiAgICAgLy8gZXhjZXB0aW9uIGhhbmRsZXIgYmxvY2sgdG8gYmUgaW5jbHVkZWQgaW4g
dGhlIGxpdmUtaW4gb2YgdGhpcyBwYXJ0aWN1bGFyIGJ5dGVjb2RlLgogICAgIGlmIChIYW5kbGVy
SW5mbyogaGFuZGxlciA9IGNvZGVCbG9jay0+aGFuZGxlckZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVj
b2RlT2Zmc2V0KSkgewotICAgICAgICAvLyBGSVhNRTogVGhpcyByZXN1bWUgY2hlY2sgc2hvdWxk
IG5vdCBiZSBuZWVkZWQuCi0gICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNTkyODEKLSAgICAgICAgSW50ZXJwcmV0ZXIqIGludGVycHJldGVyID0gY29k
ZUJsb2NrLT52bSgpLT5pbnRlcnByZXRlcjsKLSAgICAgICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0
aW9uc0JlZ2luID0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpOwotICAgICAgICBJ
bnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSAmaW5zdHJ1Y3Rpb25zQmVnaW5bYnl0ZWNvZGVPZmZz
ZXRdOwotICAgICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGludGVycHJldGVyLT5nZXRPcGNvZGVJ
RChpbnN0cnVjdGlvbi0+dS5vcGNvZGUpOwotICAgICAgICBpZiAob3Bjb2RlSUQgIT0gb3BfcmVz
dW1lKSB7Ci0gICAgICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGhhbmRsZXJCbG9jayA9IGZp
bmRCYXNpY0Jsb2NrV2l0aExlYWRlck9mZnNldChiYXNpY0Jsb2NrcywgaGFuZGxlci0+dGFyZ2V0
KTsKLSAgICAgICAgICAgIEFTU0VSVChoYW5kbGVyQmxvY2spOwotICAgICAgICAgICAgaGFuZGxl
ckJsb2NrLT5pbigpLmZvckVhY2hTZXRCaXQodXNlKTsKLSAgICAgICAgfQorICAgICAgICBCeXRl
Y29kZUJhc2ljQmxvY2sqIGhhbmRsZXJCbG9jayA9IGZpbmRCYXNpY0Jsb2NrV2l0aExlYWRlck9m
ZnNldChncmFwaCwgaGFuZGxlci0+dGFyZ2V0KTsKKyAgICAgICAgQVNTRVJUKGhhbmRsZXJCbG9j
ayk7CisgICAgICAgIGhhbmRsZXJCbG9jay0+aW4oKS5mb3JFYWNoU2V0Qml0KHVzZSk7CiAgICAg
fQogfQogCi1zdGF0aWMgdm9pZCBzdGVwT3Zlckluc3RydWN0aW9uKENvZGVCbG9jayogY29kZUJs
b2NrLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5
dGVjb2RlQmFzaWNCbG9jaz4+JiBiYXNpY0Jsb2NrcywgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQs
IEZhc3RCaXRWZWN0b3ImIG91dCkKK3N0YXRpYyB2b2lkIHN0ZXBPdmVySW5zdHJ1Y3Rpb24oQ29k
ZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlR3JhcGg8Q29kZUJsb2NrPiYgZ3JhcGgsIHVuc2ln
bmVkIGJ5dGVjb2RlT2Zmc2V0LCBGYXN0Qml0VmVjdG9yJiBvdXQpCiB7CiAgICAgc3RlcE92ZXJJ
bnN0cnVjdGlvbigKLSAgICAgICAgY29kZUJsb2NrLCBibG9jaywgYmFzaWNCbG9ja3MsIGJ5dGVj
b2RlT2Zmc2V0LAorICAgICAgICBjb2RlQmxvY2ssIGdyYXBoLCBieXRlY29kZU9mZnNldCwKICAg
ICAgICAgWyZdICh1bnNpZ25lZCBiaXRJbmRleCkgewogICAgICAgICAgICAgLy8gVGhpcyBpcyB0
aGUgdXNlIGZ1bmN0b3IsIHNvIHdlIHNldCB0aGUgYml0LgogICAgICAgICAgICAgb3V0LnNldChi
aXRJbmRleCk7CkBAIC0xNjAsNyArMTUzLDcgQEAgc3RhdGljIHZvaWQgc3RlcE92ZXJJbnN0cnVj
dGlvbihDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaywKICAg
ICAgICAgfSk7CiB9CiAKLXN0YXRpYyB2b2lkIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQnl0ZWNv
ZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2ss
IFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mIGJhc2ljQmxvY2tz
LCB1bnNpZ25lZCB0YXJnZXRPZmZzZXQsIEZhc3RCaXRWZWN0b3ImIHJlc3VsdCkKK3N0YXRpYyB2
b2lkIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2Rl
QmxvY2ssIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2ssIEJ5dGVjb2RlR3JhcGg8Q29kZUJsb2Nr
PiYgZ3JhcGgsIHVuc2lnbmVkIHRhcmdldE9mZnNldCwgRmFzdEJpdFZlY3RvciYgcmVzdWx0KQog
ewogICAgIEFTU0VSVCghYmxvY2stPmlzRXhpdEJsb2NrKCkpOwogICAgIEFTU0VSVCghYmxvY2st
PmlzRW50cnlCbG9jaygpKTsKQEAgLTE3Miw0NCArMTY1LDQ0IEBAIHN0YXRpYyB2b2lkIGNvbXB1
dGVMb2NhbExpdmVuZXNzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5
dGVjb2RlCiAgICAgICAgIGlmICh0YXJnZXRPZmZzZXQgPiBieXRlY29kZU9mZnNldCkKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAKLSAgICAgICAgc3RlcE92ZXJJbnN0cnVjdGlvbihjb2Rl
QmxvY2ssIGJsb2NrLCBiYXNpY0Jsb2NrcywgYnl0ZWNvZGVPZmZzZXQsIG91dCk7CisgICAgICAg
IHN0ZXBPdmVySW5zdHJ1Y3Rpb24oY29kZUJsb2NrLCBncmFwaCwgYnl0ZWNvZGVPZmZzZXQsIG91
dCk7CiAgICAgfQogCiAgICAgcmVzdWx0LnNldChvdXQpOwogfQogCi1zdGF0aWMgdm9pZCBjb21w
dXRlTG9jYWxMaXZlbmVzc0ZvckJsb2NrKENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29kZUJh
c2ljQmxvY2sqIGJsb2NrLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9j
az4+JiBiYXNpY0Jsb2NrcykKK3N0YXRpYyB2b2lkIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQmxv
Y2soQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2ssIEJ5dGVj
b2RlR3JhcGg8Q29kZUJsb2NrPiYgZ3JhcGgpCiB7CiAgICAgaWYgKGJsb2NrLT5pc0V4aXRCbG9j
aygpIHx8IGJsb2NrLT5pc0VudHJ5QmxvY2soKSkKICAgICAgICAgcmV0dXJuOwotICAgIGNvbXB1
dGVMb2NhbExpdmVuZXNzRm9yQnl0ZWNvZGVPZmZzZXQoY29kZUJsb2NrLCBibG9jaywgYmFzaWNC
bG9ja3MsIGJsb2NrLT5sZWFkZXJCeXRlY29kZU9mZnNldCgpLCBibG9jay0+aW4oKSk7CisgICAg
Y29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCeXRlY29kZU9mZnNldChjb2RlQmxvY2ssIGJsb2NrLCBn
cmFwaCwgYmxvY2stPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCksIGJsb2NrLT5pbigpKTsKIH0KIAog
dm9pZCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OnJ1bkxpdmVuZXNzRml4cG9pbnQoKQogewot
ICAgIFVubGlua2VkQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jayA9IG1fY29kZUJsb2NrLT51
bmxpbmtlZENvZGVCbG9jaygpOworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gbV9ncmFwaC5j
b2RlQmxvY2soKTsKKyAgICBVbmxpbmtlZENvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2sgPSBj
b2RlQmxvY2stPnVubGlua2VkQ29kZUJsb2NrKCk7CiAgICAgdW5zaWduZWQgbnVtYmVyT2ZWYXJp
YWJsZXMgPSB1bmxpbmtlZENvZGVCbG9jay0+bV9udW1DYWxsZWVMb2NhbHM7CiAKLSAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9iYXNpY0Jsb2Nrcy5zaXplKCk7IGkrKykgewotICAgICAg
ICBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrID0gbV9iYXNpY0Jsb2Nrc1tpXS5nZXQoKTsKKyAg
ICBmb3IgKHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+JiBibG9jayA6IG1fZ3Jh
cGguYmFzaWNCbG9ja3MoKSkgewogICAgICAgICBibG9jay0+aW4oKS5yZXNpemUobnVtYmVyT2ZW
YXJpYWJsZXMpOwogICAgICAgICBibG9jay0+b3V0KCkucmVzaXplKG51bWJlck9mVmFyaWFibGVz
KTsKICAgICB9CiAKICAgICBib29sIGNoYW5nZWQ7Ci0gICAgbV9iYXNpY0Jsb2Nrcy5sYXN0KCkt
PmluKCkuY2xlYXJBbGwoKTsKLSAgICBtX2Jhc2ljQmxvY2tzLmxhc3QoKS0+b3V0KCkuY2xlYXJB
bGwoKTsKKyAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGxhc3RCbG9jayA9IG1fZ3JhcGguYmFzaWNC
bG9ja3MoKS5sYXN0KCkuZ2V0KCk7CisgICAgbGFzdEJsb2NrLT5pbigpLmNsZWFyQWxsKCk7Cisg
ICAgbGFzdEJsb2NrLT5vdXQoKS5jbGVhckFsbCgpOwogICAgIEZhc3RCaXRWZWN0b3IgbmV3T3V0
OwotICAgIG5ld091dC5yZXNpemUobV9iYXNpY0Jsb2Nrcy5sYXN0KCktPm91dCgpLm51bUJpdHMo
KSk7CisgICAgbmV3T3V0LnJlc2l6ZShsYXN0QmxvY2stPm91dCgpLm51bUJpdHMoKSk7CiAgICAg
ZG8gewogICAgICAgICBjaGFuZ2VkID0gZmFsc2U7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9
IG1fYmFzaWNCbG9ja3Muc2l6ZSgpIC0gMTsgaS0tOykgewotICAgICAgICAgICAgQnl0ZWNvZGVC
YXNpY0Jsb2NrKiBibG9jayA9IG1fYmFzaWNCbG9ja3NbaV0uZ2V0KCk7CisgICAgICAgIGZvciAo
c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4mIGJsb2NrIDogbV9ncmFwaC5iYXNp
Y0Jsb2Nrc0luUmV2ZXJzZU9yZGVyKCkpIHsKICAgICAgICAgICAgIG5ld091dC5jbGVhckFsbCgp
OwogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8IGJsb2NrLT5zdWNjZXNzb3Jz
KCkuc2l6ZSgpOyBqKyspCiAgICAgICAgICAgICAgICAgbmV3T3V0Lm1lcmdlKGJsb2NrLT5zdWNj
ZXNzb3JzKClbal0tPmluKCkpOwogICAgICAgICAgICAgYm9vbCBvdXREaWRDaGFuZ2UgPSBibG9j
ay0+b3V0KCkuc2V0QW5kQ2hlY2sobmV3T3V0KTsKLSAgICAgICAgICAgIGNvbXB1dGVMb2NhbExp
dmVuZXNzRm9yQmxvY2sobV9jb2RlQmxvY2ssIGJsb2NrLCBtX2Jhc2ljQmxvY2tzKTsKKyAgICAg
ICAgICAgIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQmxvY2soY29kZUJsb2NrLCBibG9jay5nZXQo
KSwgbV9ncmFwaCk7CiAgICAgICAgICAgICBjaGFuZ2VkIHw9IG91dERpZENoYW5nZTsKICAgICAg
ICAgfQogICAgIH0gd2hpbGUgKGNoYW5nZWQpOwpAQCAtMjE3LDEyICsyMTAsMTIgQEAgdm9pZCBC
eXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OnJ1bkxpdmVuZXNzRml4cG9pbnQoKQogCiB2b2lkIEJ5
dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Z2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29kZU9mZnNldCh1
bnNpZ25lZCBieXRlY29kZU9mZnNldCwgRmFzdEJpdFZlY3RvciYgcmVzdWx0KQogewotICAgIEJ5
dGVjb2RlQmFzaWNCbG9jayogYmxvY2sgPSBmaW5kQmFzaWNCbG9ja0ZvckJ5dGVjb2RlT2Zmc2V0
KG1fYmFzaWNCbG9ja3MsIGJ5dGVjb2RlT2Zmc2V0KTsKKyAgICBCeXRlY29kZUJhc2ljQmxvY2sq
IGJsb2NrID0gZmluZEJhc2ljQmxvY2tGb3JCeXRlY29kZU9mZnNldChtX2dyYXBoLCBieXRlY29k
ZU9mZnNldCk7CiAgICAgQVNTRVJUKGJsb2NrKTsKICAgICBBU1NFUlQoIWJsb2NrLT5pc0VudHJ5
QmxvY2soKSk7CiAgICAgQVNTRVJUKCFibG9jay0+aXNFeGl0QmxvY2soKSk7CiAgICAgcmVzdWx0
LnJlc2l6ZShibG9jay0+b3V0KCkubnVtQml0cygpKTsKLSAgICBjb21wdXRlTG9jYWxMaXZlbmVz
c0ZvckJ5dGVjb2RlT2Zmc2V0KG1fY29kZUJsb2NrLCBibG9jaywgbV9iYXNpY0Jsb2NrcywgYnl0
ZWNvZGVPZmZzZXQsIHJlc3VsdCk7CisgICAgY29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCeXRlY29k
ZU9mZnNldChtX2dyYXBoLmNvZGVCbG9jaygpLCBibG9jaywgbV9ncmFwaCwgYnl0ZWNvZGVPZmZz
ZXQsIHJlc3VsdCk7CiB9CiAKIGJvb2wgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpvcGVyYW5k
SXNMaXZlQXRCeXRlY29kZU9mZnNldChpbnQgb3BlcmFuZCwgdW5zaWduZWQgYnl0ZWNvZGVPZmZz
ZXQpCkBAIC0yNDQsMTEgKzIzNywxMSBAQCBGYXN0Qml0VmVjdG9yIEJ5dGVjb2RlTGl2ZW5lc3NB
bmFseXNpczo6Z2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29kZU9mZnNldCh1bnNpZ25lZAogdm9pZCBC
eXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGVGdWxsTGl2ZW5lc3MoRnVsbEJ5dGVjb2Rl
TGl2ZW5lc3MmIHJlc3VsdCkKIHsKICAgICBGYXN0Qml0VmVjdG9yIG91dDsKKyAgICBDb2RlQmxv
Y2sqIGNvZGVCbG9jayA9IG1fZ3JhcGguY29kZUJsb2NrKCk7CiAgICAgCi0gICAgcmVzdWx0Lm1f
bWFwLnJlc2l6ZShtX2NvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKKyAgICByZXN1
bHQubV9tYXAucmVzaXplKGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKICAgICAK
LSAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2Jhc2ljQmxvY2tzLnNpemUoKTsgaS0tOykgewotICAg
ICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrID0gbV9iYXNpY0Jsb2Nrc1tpXS5nZXQoKTsK
KyAgICBmb3IgKHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+JiBibG9jayA6IG1f
Z3JhcGguYmFzaWNCbG9ja3NJblJldmVyc2VPcmRlcigpKSB7CiAgICAgICAgIGlmIChibG9jay0+
aXNFbnRyeUJsb2NrKCkgfHwgYmxvY2stPmlzRXhpdEJsb2NrKCkpCiAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgCkBAIC0yNTYsNyArMjQ5LDcgQEAgdm9pZCBCeXRlY29kZUxpdmVuZXNz
QW5hbHlzaXM6OmNvbXB1dGVGdWxsTGl2ZW5lc3MoRnVsbEJ5dGVjb2RlTGl2ZW5lc3MmIHJlc3Vs
dCkKICAgICAgICAgCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGJsb2NrLT5ieXRlY29kZU9m
ZnNldHMoKS5zaXplKCk7IGktLTspIHsKICAgICAgICAgICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zm
c2V0ID0gYmxvY2stPmJ5dGVjb2RlT2Zmc2V0cygpW2ldOwotICAgICAgICAgICAgc3RlcE92ZXJJ
bnN0cnVjdGlvbihtX2NvZGVCbG9jaywgYmxvY2ssIG1fYmFzaWNCbG9ja3MsIGJ5dGVjb2RlT2Zm
c2V0LCBvdXQpOworICAgICAgICAgICAgc3RlcE92ZXJJbnN0cnVjdGlvbihjb2RlQmxvY2ssIG1f
Z3JhcGgsIGJ5dGVjb2RlT2Zmc2V0LCBvdXQpOwogICAgICAgICAgICAgcmVzdWx0Lm1fbWFwW2J5
dGVjb2RlT2Zmc2V0XSA9IG91dDsKICAgICAgICAgfQogICAgIH0KQEAgLTI2NiwxMSArMjU5LDEx
IEBAIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlS2lsbHMoQnl0ZWNvZGVL
aWxscyYgcmVzdWx0KQogewogICAgIEZhc3RCaXRWZWN0b3Igb3V0OwogICAgIAotICAgIHJlc3Vs
dC5tX2NvZGVCbG9jayA9IG1fY29kZUJsb2NrOwotICAgIHJlc3VsdC5tX2tpbGxTZXRzID0gc3Rk
OjptYWtlX3VuaXF1ZTxCeXRlY29kZUtpbGxzOjpLaWxsU2V0W10+KG1fY29kZUJsb2NrLT5pbnN0
cnVjdGlvbnMoKS5zaXplKCkpOworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gbV9ncmFwaC5j
b2RlQmxvY2soKTsKKyAgICByZXN1bHQubV9jb2RlQmxvY2sgPSBjb2RlQmxvY2s7CisgICAgcmVz
dWx0Lm1fa2lsbFNldHMgPSBzdGQ6Om1ha2VfdW5pcXVlPEJ5dGVjb2RlS2lsbHM6OktpbGxTZXRb
XT4oY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5zaXplKCkpOwogICAgIAotICAgIGZvciAodW5z
aWduZWQgaSA9IG1fYmFzaWNCbG9ja3Muc2l6ZSgpOyBpLS07KSB7Ci0gICAgICAgIEJ5dGVjb2Rl
QmFzaWNCbG9jayogYmxvY2sgPSBtX2Jhc2ljQmxvY2tzW2ldLmdldCgpOworICAgIGZvciAoc3Rk
Ojp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4mIGJsb2NrIDogbV9ncmFwaC5iYXNpY0Js
b2Nrc0luUmV2ZXJzZU9yZGVyKCkpIHsKICAgICAgICAgaWYgKGJsb2NrLT5pc0VudHJ5QmxvY2so
KSB8fCBibG9jay0+aXNFeGl0QmxvY2soKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICAKQEAgLTI3OSw3ICsyNzIsNyBAQCB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Y29t
cHV0ZUtpbGxzKEJ5dGVjb2RlS2lsbHMmIHJlc3VsdCkKICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gYmxvY2stPmJ5dGVjb2RlT2Zmc2V0cygpLnNpemUoKTsgaS0tOykgewogICAgICAgICAgICAg
dW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQgPSBibG9jay0+Ynl0ZWNvZGVPZmZzZXRzKClbaV07CiAg
ICAgICAgICAgICBzdGVwT3Zlckluc3RydWN0aW9uKAotICAgICAgICAgICAgICAgIG1fY29kZUJs
b2NrLCBibG9jaywgbV9iYXNpY0Jsb2NrcywgYnl0ZWNvZGVPZmZzZXQsCisgICAgICAgICAgICAg
ICAgY29kZUJsb2NrLCBtX2dyYXBoLCBieXRlY29kZU9mZnNldCwKICAgICAgICAgICAgICAgICBb
Jl0gKHVuc2lnbmVkIGluZGV4KSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgZm9y
IHVzZXMuCiAgICAgICAgICAgICAgICAgICAgIGlmIChvdXQuZ2V0KGluZGV4KSkKQEAgLTI5Nywx
MiArMjkwLDEzIEBAIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlS2lsbHMo
Qnl0ZWNvZGVLaWxscyYgcmVzdWx0KQogCiB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6
ZHVtcFJlc3VsdHMoKQogewotICAgIGRhdGFMb2coIlxuRHVtcGluZyBieXRlY29kZSBsaXZlbmVz
cyBmb3IgIiwgKm1fY29kZUJsb2NrLCAiOlxuIik7Ci0gICAgSW50ZXJwcmV0ZXIqIGludGVycHJl
dGVyID0gbV9jb2RlQmxvY2stPnZtKCktPmludGVycHJldGVyOwotICAgIEluc3RydWN0aW9uKiBp
bnN0cnVjdGlvbnNCZWdpbiA9IG1fY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpOwot
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2Jhc2ljQmxvY2tzLnNpemUoKTsgaSsrKSB7
Ci0gICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2sgPSBtX2Jhc2ljQmxvY2tzW2ldLmdl
dCgpOwotICAgICAgICBkYXRhTG9nRigiXG5CeXRlY29kZSBiYXNpYyBibG9jayAldTogJXAgKG9m
ZnNldDogJXUsIGxlbmd0aDogJXUpXG4iLCBpLCBibG9jaywgYmxvY2stPmxlYWRlckJ5dGVjb2Rl
T2Zmc2V0KCksIGJsb2NrLT50b3RhbEJ5dGVjb2RlTGVuZ3RoKCkpOworICAgIENvZGVCbG9jayog
Y29kZUJsb2NrID0gbV9ncmFwaC5jb2RlQmxvY2soKTsKKyAgICBkYXRhTG9nKCJcbkR1bXBpbmcg
Ynl0ZWNvZGUgbGl2ZW5lc3MgZm9yICIsICpjb2RlQmxvY2ssICI6XG4iKTsKKyAgICBJbnRlcnBy
ZXRlciogaW50ZXJwcmV0ZXIgPSBjb2RlQmxvY2stPnZtKCktPmludGVycHJldGVyOworICAgIElu
c3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiA9IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCku
YmVnaW4oKTsKKyAgICB1bnNpZ25lZCBpID0gMDsKKyAgICBmb3IgKHN0ZDo6dW5pcXVlX3B0cjxC
eXRlY29kZUJhc2ljQmxvY2s+JiBibG9jayA6IG1fZ3JhcGguYmFzaWNCbG9ja3MoKSkgeworICAg
ICAgICBkYXRhTG9nRigiXG5CeXRlY29kZSBiYXNpYyBibG9jayAldTogJXAgKG9mZnNldDogJXUs
IGxlbmd0aDogJXUpXG4iLCBpKyssIGJsb2NrLmdldCgpLCBibG9jay0+bGVhZGVyQnl0ZWNvZGVP
ZmZzZXQoKSwgYmxvY2stPnRvdGFsQnl0ZWNvZGVMZW5ndGgoKSk7CiAgICAgICAgIGRhdGFMb2dG
KCJTdWNjZXNzb3JzOiAiKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8IGJsb2Nr
LT5zdWNjZXNzb3JzKCkuc2l6ZSgpOyBqKyspIHsKICAgICAgICAgICAgIEJ5dGVjb2RlQmFzaWNC
bG9jayogc3VjY2Vzc29yID0gYmxvY2stPnN1Y2Nlc3NvcnMoKVtqXTsKQEAgLTMxMCwxMSArMzA0
LDExIEBAIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpkdW1wUmVzdWx0cygpCiAgICAg
ICAgIH0KICAgICAgICAgZGF0YUxvZ0YoIlxuIik7CiAgICAgICAgIGlmIChibG9jay0+aXNFbnRy
eUJsb2NrKCkpIHsKLSAgICAgICAgICAgIGRhdGFMb2dGKCJFbnRyeSBibG9jayAlcFxuIiwgYmxv
Y2spOworICAgICAgICAgICAgZGF0YUxvZ0YoIkVudHJ5IGJsb2NrICVwXG4iLCBibG9jay5nZXQo
KSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogICAgICAgICBpZiAoYmxvY2st
PmlzRXhpdEJsb2NrKCkpIHsKLSAgICAgICAgICAgIGRhdGFMb2dGKCJFeGl0IGJsb2NrOiAlcFxu
IiwgYmxvY2spOworICAgICAgICAgICAgZGF0YUxvZ0YoIkV4aXQgYmxvY2s6ICVwXG4iLCBibG9j
ay5nZXQoKSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogICAgICAgICBmb3Ig
KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0ID0gYmxvY2stPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCk7
IGJ5dGVjb2RlT2Zmc2V0IDwgYmxvY2stPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCkgKyBibG9jay0+
dG90YWxCeXRlY29kZUxlbmd0aCgpOykgewpAQCAtMzI3LDcgKzMyMSw3IEBAIHZvaWQgQnl0ZWNv
ZGVMaXZlbmVzc0FuYWx5c2lzOjpkdW1wUmVzdWx0cygpCiAgICAgICAgICAgICAgICAgICAgIGRh
dGFMb2dGKCIldSAiLCBqKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGRhdGFMb2dGKCJc
biIpOwotICAgICAgICAgICAgbV9jb2RlQmxvY2stPmR1bXBCeXRlY29kZShXVEY6OmRhdGFGaWxl
KCksIG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpLCBpbnN0cnVjdGlv
bnNCZWdpbiwgY3VycmVudEluc3RydWN0aW9uKTsKKyAgICAgICAgICAgIGNvZGVCbG9jay0+ZHVt
cEJ5dGVjb2RlKFdURjo6ZGF0YUZpbGUoKSwgY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKS0+Z2xv
YmFsRXhlYygpLCBpbnN0cnVjdGlvbnNCZWdpbiwgY3VycmVudEluc3RydWN0aW9uKTsKIAogICAg
ICAgICAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoaW5z
dHJ1Y3Rpb25zQmVnaW5bYnl0ZWNvZGVPZmZzZXRdLnUub3Bjb2RlKTsKICAgICAgICAgICAgIHVu
c2lnbmVkIG9wY29kZUxlbmd0aCA9IG9wY29kZUxlbmd0aHNbb3Bjb2RlSURdOwpAQCAtMzQ2LDgg
KzM0MCw2IEBAIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpkdW1wUmVzdWx0cygpCiAK
IHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlKCkKIHsKLSAgICBjb21wdXRl
Qnl0ZWNvZGVCYXNpY0Jsb2NrcyhtX2NvZGVCbG9jaywgbV9iYXNpY0Jsb2Nrcyk7Ci0gICAgQVNT
RVJUKG1fYmFzaWNCbG9ja3Muc2l6ZSgpKTsKICAgICBydW5MaXZlbmVzc0ZpeHBvaW50KCk7CiAK
ICAgICBpZiAoT3B0aW9uczo6ZHVtcEJ5dGVjb2RlTGl2ZW5lc3NSZXN1bHRzKCkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5
c2lzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0Fu
YWx5c2lzLmgKaW5kZXggZWNlMTZmMjFmMDE1MTBhNjQyN2ZkODQxMTQwNzliZWQ4NzBjMDg3NS4u
MDYwZTllYTg4NzAxMzgzNDFhYmFhYWIyZDM0OGE1ZDVkNDMzZjcyYyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlz
aXMuaApAQCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNf
aAogCiAjaW5jbHVkZSAiQnl0ZWNvZGVCYXNpY0Jsb2NrLmgiCisjaW5jbHVkZSAiQnl0ZWNvZGVH
cmFwaC5oIgogI2luY2x1ZGUgPHd0Zi9GYXN0Qml0VmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL0hh
c2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC0zNCwxNCArMzUsMTMgQEAKIG5h
bWVzcGFjZSBKU0MgewogCiBjbGFzcyBCeXRlY29kZUtpbGxzOwotY2xhc3MgQ29kZUJsb2NrOwog
Y2xhc3MgRnVsbEJ5dGVjb2RlTGl2ZW5lc3M7CiAKIGNsYXNzIEJ5dGVjb2RlTGl2ZW5lc3NBbmFs
eXNpcyB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzKTsKIHB1YmxpYzoKLSAgICBCeXRlY29kZUxp
dmVuZXNzQW5hbHlzaXMoQ29kZUJsb2NrKik7CisgICAgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lz
KEJ5dGVjb2RlR3JhcGg8Q29kZUJsb2NrPiYpOwogICAgIAogICAgIGJvb2wgb3BlcmFuZElzTGl2
ZUF0Qnl0ZWNvZGVPZmZzZXQoaW50IG9wZXJhbmQsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KTsK
ICAgICBGYXN0Qml0VmVjdG9yIGdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQodW5zaWdu
ZWQgYnl0ZWNvZGVPZmZzZXQpOwpAQCAtNTYsOCArNTYsNyBAQCBjbGFzcyBCeXRlY29kZUxpdmVu
ZXNzQW5hbHlzaXMgewogCiAgICAgdm9pZCBnZXRMaXZlbmVzc0luZm9BdEJ5dGVjb2RlT2Zmc2V0
KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBGYXN0Qml0VmVjdG9yJik7CiAKLSAgICBDb2RlQmxv
Y2sqIG1fY29kZUJsb2NrOwotICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNp
Y0Jsb2NrPj4gbV9iYXNpY0Jsb2NrczsKKyAgICBCeXRlY29kZUdyYXBoPENvZGVCbG9jaz4mIG1f
Z3JhcGg7CiB9OwogCiBpbmxpbmUgYm9vbCBvcGVyYW5kSXNBbHdheXNMaXZlKGludCBvcGVyYW5k
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVz
ZURlZi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgK
aW5kZXggOTgxZmIxZDBmZWMwNTcwNGQ1YjdmNjZlYzQ0MTgyNTdlODNhYWMzNi4uNzYyZjdiZjU1
ZjNiOGI1MWUwMWU5NjYxOGEzOWU2OTMyNmFmYjJkZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKQEAgLTMwLDE4ICszMCw5IEBACiAKIG5h
bWVzcGFjZSBKU0MgewogCi10ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgotdm9pZCBjb21wdXRl
VXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAotICAgIENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29k
ZUJhc2ljQmxvY2sqIGJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgY29uc3QgRnVuY3Rv
ciYgZnVuY3RvcikKK3RlbXBsYXRlPHR5cGVuYW1lIEJsb2NrLCB0eXBlbmFtZSBGdW5jdG9yLCB0
eXBlbmFtZSBJbnN0cnVjdGlvbj4KK3ZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldChC
bG9jayogY29kZUJsb2NrLCBPcGNvZGVJRCBvcGNvZGVJRCwgSW5zdHJ1Y3Rpb24qIGluc3RydWN0
aW9uLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQogewotICAgIEludGVycHJldGVyKiBpbnRlcnBy
ZXRlciA9IGNvZGVCbG9jay0+dm0oKS0+aW50ZXJwcmV0ZXI7Ci0gICAgSW5zdHJ1Y3Rpb24qIGlu
c3RydWN0aW9uc0JlZ2luID0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpOwotICAg
IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9ICZpbnN0cnVjdGlvbnNCZWdpbltieXRlY29kZU9m
ZnNldF07Ci0gICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQo
aW5zdHJ1Y3Rpb24tPnUub3Bjb2RlKTsKLQotICAgIGlmIChvcGNvZGVJRCAhPSBvcF9lbnRlciAm
JiBjb2RlQmxvY2stPndhc0NvbXBpbGVkV2l0aERlYnVnZ2luZ09wY29kZXMoKSAmJiBjb2RlQmxv
Y2stPnNjb3BlUmVnaXN0ZXIoKS5pc1ZhbGlkKCkpCi0gICAgICAgIGZ1bmN0b3IoY29kZUJsb2Nr
LCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGNvZGVCbG9jay0+c2NvcGVSZWdpc3RlcigpLm9mZnNl
dCgpKTsKLQogICAgIHN3aXRjaCAob3Bjb2RlSUQpIHsKICAgICAvLyBObyB1c2VzLgogICAgIGNh
c2Ugb3BfbmV3X3JlZ2V4cDoKQEAgLTc1LDggKzY2LDcgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5
dGVjb2RlT2Zmc2V0KAogICAgIGNhc2Ugb3Bfam5lcV9udWxsOgogICAgIGNhc2Ugb3BfZGVjOgog
ICAgIGNhc2Ugb3BfaW5jOgotICAgIGNhc2Ugb3BfbG9nX3NoYWRvd19jaGlja2VuX3Byb2xvZ3Vl
OgotICAgIGNhc2Ugb3BfcmVzdW1lOiB7CisgICAgY2FzZSBvcF9sb2dfc2hhZG93X2NoaWNrZW5f
cHJvbG9ndWU6IHsKICAgICAgICAgQVNTRVJUKG9wY29kZUxlbmd0aHNbb3Bjb2RlSURdID4gMSk7
CiAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3Ry
dWN0aW9uWzFdLnUub3BlcmFuZCk7CiAgICAgICAgIHJldHVybjsKQEAgLTI4NCwyMiArMjc0LDYg
QEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAogICAgICAgICAgICAgZnVuY3Rv
cihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgbGFzdEFyZyArIGkpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQotICAgIGNhc2Ugb3Bfc2F2ZTogewotICAgICAgICBmdW5jdG9yKGNv
ZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBpbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQp
OwotICAgICAgICB1bnNpZ25lZCBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXQgPSBieXRlY29kZU9m
ZnNldCArIGluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKLSAgICAgICAgQnl0ZWNvZGVCYXNpY0Js
b2NrKiBtZXJnZVBvaW50QmxvY2sgPSBudWxscHRyOwotICAgICAgICBmb3IgKEJ5dGVjb2RlQmFz
aWNCbG9jayogc3VjY2Vzc29yIDogYmxvY2stPnN1Y2Nlc3NvcnMoKSkgewotICAgICAgICAgICAg
aWYgKHN1Y2Nlc3Nvci0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKSA9PSBtZXJnZVBvaW50Qnl0ZWNv
ZGVPZmZzZXQpIHsKLSAgICAgICAgICAgICAgICBtZXJnZVBvaW50QmxvY2sgPSBzdWNjZXNzb3I7
Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAg
ICAgQVNTRVJUKG1lcmdlUG9pbnRCbG9jayk7Ci0gICAgICAgIG1lcmdlUG9pbnRCbG9jay0+aW4o
KS5mb3JFYWNoU2V0Qml0KFsmXSh1bnNpZ25lZCBsb2NhbCkgewotICAgICAgICAgICAgZnVuY3Rv
cihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgdmlydHVhbFJlZ2lzdGVyRm9yTG9j
YWwobG9jYWwpLm9mZnNldCgpKTsKLSAgICAgICAgfSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
CiAgICAgZGVmYXVsdDoKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICAgICAgYnJlYWs7CkBAIC0zMDcsMTIgKzI4MSwyMiBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0
ZWNvZGVPZmZzZXQoCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+Ci12b2lkIGNvbXB1
dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFz
aWNCbG9jayogYmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBjb25zdCBGdW5jdG9yJiBm
dW5jdG9yKQordm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29k
ZUJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikK
IHsKICAgICBJbnRlcnByZXRlciogaW50ZXJwcmV0ZXIgPSBjb2RlQmxvY2stPnZtKCktPmludGVy
cHJldGVyOwogICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiA9IGNvZGVCbG9jay0+
aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsKICAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSAm
aW5zdHJ1Y3Rpb25zQmVnaW5bYnl0ZWNvZGVPZmZzZXRdOwogICAgIE9wY29kZUlEIG9wY29kZUlE
ID0gaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGluc3RydWN0aW9uLT51Lm9wY29kZSk7CisKKyAg
ICBpZiAob3Bjb2RlSUQgIT0gb3BfZW50ZXIgJiYgY29kZUJsb2NrLT53YXNDb21waWxlZFdpdGhE
ZWJ1Z2dpbmdPcGNvZGVzKCkgJiYgY29kZUJsb2NrLT5zY29wZVJlZ2lzdGVyKCkuaXNWYWxpZCgp
KQorICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBjb2Rl
QmxvY2stPnNjb3BlUmVnaXN0ZXIoKS5vZmZzZXQoKSk7CisKKyAgICBjb21wdXRlVXNlc0ZvckJ5
dGVjb2RlT2Zmc2V0KGNvZGVCbG9jaywgb3Bjb2RlSUQsIGluc3RydWN0aW9uLCBmdW5jdG9yKTsK
K30KKwordGVtcGxhdGU8dHlwZW5hbWUgQmxvY2ssIHR5cGVuYW1lIEluc3RydWN0aW9uLCB0eXBl
bmFtZSBGdW5jdG9yPgordm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KEJsb2NrKiBj
b2RlQmxvY2ssIE9wY29kZUlEIG9wY29kZUlELCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIGNv
bnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCit7CiAgICAgc3dpdGNoIChvcGNvZGVJRCkgewogICAgIC8v
IFRoZXNlIGRvbid0IGRlZmluZSBhbnl0aGluZy4KICAgICBjYXNlIG9wX2NvcHlfcmVzdDoKQEAg
LTMyMCw3ICszMDQsNiBAQCB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJs
b2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvYwogICAgIGNhc2Ugb3BfZW5k
OgogICAgIGNhc2Ugb3BfdGhyb3c6CiAgICAgY2FzZSBvcF90aHJvd19zdGF0aWNfZXJyb3I6Ci0g
ICAgY2FzZSBvcF9zYXZlOgogICAgIGNhc2Ugb3BfYXNzZXJ0OgogICAgIGNhc2Ugb3BfZGVidWc6
CiAgICAgY2FzZSBvcF9yZXQ6CkBAIC00NTksNyArNDQyLDcgQEAgdm9pZCBjb21wdXRlRGVmc0Zv
ckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29kZUJhc2ljQmxvY2sq
IGJsb2MKICAgICBjYXNlIG9wX2RlbF9ieV9pZDoKICAgICBjYXNlIG9wX2RlbF9ieV92YWw6CiAg
ICAgY2FzZSBvcF91bnNpZ25lZDoKLSAgICBjYXNlIG9wX2dldF9mcm9tX2FyZ3VtZW50czogCisg
ICAgY2FzZSBvcF9nZXRfZnJvbV9hcmd1bWVudHM6CiAgICAgY2FzZSBvcF9nZXRfcmVzdF9sZW5n
dGg6IHsKICAgICAgICAgQVNTRVJUKG9wY29kZUxlbmd0aHNbb3Bjb2RlSURdID4gMSk7CiAgICAg
ICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9u
WzFdLnUub3BlcmFuZCk7CkBAIC00NzYsMTYgKzQ1OSwyMCBAQCB2b2lkIGNvbXB1dGVEZWZzRm9y
Qnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFzaWNCbG9jayog
YmxvYwogICAgICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJ
RCwgdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaSkub2Zmc2V0KCkpOwogICAgICAgICByZXR1cm47
CiAgICAgfQotICAgIGNhc2Ugb3BfcmVzdW1lOiB7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKGJs
b2NrLT5zdWNjZXNzb3JzKCkuc2l6ZSgpID09IDEpOwotICAgICAgICAvLyBGSVhNRTogVGhpcyBp
cyByZWFsbHkgZGlydHkuCi0gICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNTkyODEKLSAgICAgICAgYmxvY2stPnN1Y2Nlc3NvcnMoKVswXS0+aW4oKS5m
b3JFYWNoU2V0Qml0KFsmXSh1bnNpZ25lZCBsb2NhbCkgewotICAgICAgICAgICAgZnVuY3Rvcihj
b2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwo
bG9jYWwpLm9mZnNldCgpKTsKLSAgICAgICAgfSk7CisgICAgZGVmYXVsdDoKKyAgICAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICB9
Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+Cit2b2lkIGNvbXB1dGVEZWZzRm9yQnl0
ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0
LCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQoreworICAgIEludGVycHJldGVyKiBpbnRlcnByZXRl
ciA9IGNvZGVCbG9jay0+dm0oKS0+aW50ZXJwcmV0ZXI7CisgICAgSW5zdHJ1Y3Rpb24qIGluc3Ry
dWN0aW9uc0JlZ2luID0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpOworICAgIElu
c3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9ICZpbnN0cnVjdGlvbnNCZWdpbltieXRlY29kZU9mZnNl
dF07CisgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoaW5z
dHJ1Y3Rpb24tPnUub3Bjb2RlKTsKKyAgICBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KGNv
ZGVCbG9jaywgb3Bjb2RlSUQsIGluc3RydWN0aW9uLCBmdW5jdG9yKTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3Bw
CmluZGV4IDk5ZGE1ZjM3MWQyZjQ1YWMyYzhkYWY2NTEwMmJmZWU0Njk0NDU5NzAuLjBkYzM4ZGM4
YzA0MjU0NWE5MTNkNjJmNmQ0MDkyZDIwMGI3NjMxODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC0zMiw2ICszMiw3IEBACiAKICNpbmNsdWRl
ICJCYXNpY0Jsb2NrTG9jYXRpb24uaCIKICNpbmNsdWRlICJCeXRlY29kZUdlbmVyYXRvci5oIgor
I2luY2x1ZGUgIkJ5dGVjb2RlR3JhcGguaCIKICNpbmNsdWRlICJCeXRlY29kZVVzZURlZi5oIgog
I2luY2x1ZGUgIkNhbGxMaW5rU3RhdHVzLmgiCiAjaW5jbHVkZSAiREZHQ2FwYWJpbGl0aWVzLmgi
CkBAIC02OTIsMTggKzY5Myw2IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoUHJpbnRT
dHJlYW0mIG91dCkKICAgICAgICAgfSB3aGlsZSAoaSA8IG1fcmFyZURhdGEtPm1fc3RyaW5nU3dp
dGNoSnVtcFRhYmxlcy5zaXplKCkpOwogICAgIH0KIAotICAgIGlmIChtX3JhcmVEYXRhICYmICFt
X3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkLmlzRW1wdHkoKSkgewotICAgICAg
ICBvdXQucHJpbnRmKCJcbkxpdmUgQ2FsbGVlIExvY2FsczpcbiIpOwotICAgICAgICB1bnNpZ25l
ZCBpID0gMDsKLSAgICAgICAgZG8gewotICAgICAgICAgICAgY29uc3QgRmFzdEJpdFZlY3RvciYg
bGl2ZW5lc3MgPSBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkW2ldOwotICAg
ICAgICAgICAgb3V0LnByaW50ZigiICBsaXZlJTF1ID0gIiwgaSk7Ci0gICAgICAgICAgICBsaXZl
bmVzcy5kdW1wKG91dCk7Ci0gICAgICAgICAgICBvdXQucHJpbnRmKCJcbiIpOwotICAgICAgICAg
ICAgKytpOwotICAgICAgICB9IHdoaWxlIChpIDwgbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9j
YWxzQXRZaWVsZC5zaXplKCkpOwotICAgIH0KLQogICAgIG91dC5wcmludGYoIlxuIik7CiB9CiAK
QEAgLTE2NjIsMzEgKzE2NTEsNiBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKAogICAg
ICAgICAgICAgb3V0LnByaW50ZigiJXMsICVkIiwgZGVidWdIb29rTmFtZShkZWJ1Z0hvb2tJRCks
IGhhc0JyZWFrcG9pbnRGbGFnKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAg
ICAgIGNhc2Ugb3Bfc2F2ZTogewotICAgICAgICAgICAgaW50IGdlbmVyYXRvciA9ICgrK2l0KS0+
dS5vcGVyYW5kOwotICAgICAgICAgICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0g
KCsraXQpLT51LnVuc2lnbmVkVmFsdWU7Ci0gICAgICAgICAgICBpbnQgb2Zmc2V0ID0gKCsraXQp
LT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBGYXN0Qml0VmVjdG9yIGxpdmVuZXNzOwotICAgICAg
ICAgICAgaWYgKGxpdmVDYWxsZWVMb2NhbHNJbmRleCA8IG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxl
ZUxvY2Fsc0F0WWllbGQuc2l6ZSgpKQotICAgICAgICAgICAgICAgIGxpdmVuZXNzID0gbV9yYXJl
RGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZFtsaXZlQ2FsbGVlTG9jYWxzSW5kZXhdOwot
ICAgICAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAi
c2F2ZSIpOwotICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICIsIHJlZ2lzdGVyTmFtZShnZW5l
cmF0b3IpLmRhdGEoKSk7Ci0gICAgICAgICAgICBsaXZlbmVzcy5kdW1wKG91dCk7Ci0gICAgICAg
ICAgICBvdXQucHJpbnRmKCIoQGxpdmUlMXUpLCAlZCgtPiVkKSIsIGxpdmVDYWxsZWVMb2NhbHNJ
bmRleCwgb2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNldCk7Ci0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgfQotICAgICAgICBjYXNlIG9wX3Jlc3VtZTogewotICAgICAgICAgICAgaW50IGdlbmVy
YXRvciA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgdW5zaWduZWQgbGl2ZUNhbGxl
ZUxvY2Fsc0luZGV4ID0gKCsraXQpLT51LnVuc2lnbmVkVmFsdWU7Ci0gICAgICAgICAgICBGYXN0
Qml0VmVjdG9yIGxpdmVuZXNzOwotICAgICAgICAgICAgaWYgKGxpdmVDYWxsZWVMb2NhbHNJbmRl
eCA8IG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQuc2l6ZSgpKQotICAgICAg
ICAgICAgICAgIGxpdmVuZXNzID0gbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVs
ZFtsaXZlQ2FsbGVlTG9jYWxzSW5kZXhdOwotICAgICAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9w
KG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAicmVzdW1lIik7Ci0gICAgICAgICAgICBvdXQucHJp
bnRmKCIlcywgIiwgcmVnaXN0ZXJOYW1lKGdlbmVyYXRvcikuZGF0YSgpKTsKLSAgICAgICAgICAg
IGxpdmVuZXNzLmR1bXAob3V0KTsKLSAgICAgICAgICAgIG91dC5wcmludGYoIihAbGl2ZSUxdSki
LCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0K
ICAgICAgICAgY2FzZSBvcF9hc3NlcnQ6IHsKICAgICAgICAgICAgIGludCBjb25kaXRpb24gPSAo
KytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBsaW5lID0gKCsraXQpLT51Lm9wZXJh
bmQ7CkBAIC0xODk5LDcgKzE4NjMsNiBAQCB2b2lkIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24o
Vk0mIHZtLCBDb3B5UGFyc2VkQmxvY2tUYWcsIENvZGVCbG9jayYgb3RoZXIpCiAgICAgICAgIG1f
cmFyZURhdGEtPm1fY29uc3RhbnRCdWZmZXJzID0gb3RoZXIubV9yYXJlRGF0YS0+bV9jb25zdGFu
dEJ1ZmZlcnM7CiAgICAgICAgIG1fcmFyZURhdGEtPm1fc3dpdGNoSnVtcFRhYmxlcyA9IG90aGVy
Lm1fcmFyZURhdGEtPm1fc3dpdGNoSnVtcFRhYmxlczsKICAgICAgICAgbV9yYXJlRGF0YS0+bV9z
dHJpbmdTd2l0Y2hKdW1wVGFibGVzID0gb3RoZXIubV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hK
dW1wVGFibGVzOwotICAgICAgICBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxk
ID0gb3RoZXIubV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZDsKICAgICB9CiAg
ICAgCiAgICAgaGVhcCgpLT5tX2NvZGVCbG9ja3MuYWRkKHRoaXMpOwpAQCAtMjAyMSw3ICsxOTg0
LDcgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0
YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICAgICAgICAgICAgICBVbmxpbmtlZFN0
cmluZ0p1bXBUYWJsZTo6U3RyaW5nT2Zmc2V0VGFibGU6Oml0ZXJhdG9yIGVuZCA9IHVubGlua2Vk
Q29kZUJsb2NrLT5zdHJpbmdTd2l0Y2hKdW1wVGFibGUoaSkub2Zmc2V0VGFibGUuZW5kKCk7CiAg
ICAgICAgICAgICAgICAgZm9yICg7IHB0ciAhPSBlbmQ7ICsrcHRyKSB7CiAgICAgICAgICAgICAg
ICAgICAgIE9mZnNldExvY2F0aW9uIG9mZnNldDsKLSAgICAgICAgICAgICAgICAgICAgb2Zmc2V0
LmJyYW5jaE9mZnNldCA9IHB0ci0+dmFsdWU7CisgICAgICAgICAgICAgICAgICAgIG9mZnNldC5i
cmFuY2hPZmZzZXQgPSBwdHItPnZhbHVlLmJyYW5jaE9mZnNldDsKICAgICAgICAgICAgICAgICAg
ICAgbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzW2ldLm9mZnNldFRhYmxlLmFk
ZChwdHItPmtleSwgb2Zmc2V0KTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CkBA
IC0yMDYxLDkgKzIwMjQsNiBAQCB2b2lkIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZt
LCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGluawogICAgIC8vIEJvb2tr
ZWVwIHRoZSBzdHJvbmdseSByZWZlcmVuY2VkIG1vZHVsZSBlbnZpcm9ubWVudHMuCiAgICAgSGFz
aFNldDxKU01vZHVsZUVudmlyb25tZW50Kj4gc3Ryb25nbHlSZWZlcmVuY2VkTW9kdWxlRW52aXJv
bm1lbnRzOwogCi0gICAgLy8gQm9va2tlZXAgdGhlIG1lcmdlIHBvaW50IGJ5dGVjb2RlIG9mZnNl
dHMuCi0gICAgVmVjdG9yPHNpemVfdD4gbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0czsKLQogICAg
IFJlZkNvdW50ZWRBcnJheTxJbnN0cnVjdGlvbj4gaW5zdHJ1Y3Rpb25zKGluc3RydWN0aW9uQ291
bnQpOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgIWluc3RydWN0aW9uUmVhZGVyLmF0RW5k
KCk7ICkgewpAQCAtMjM0NiwxNSArMjMwNiw2IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5pc2hDcmVh
dGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCi0gICAgICAgIGNhc2Ugb3Bfc2F2ZTogewot
ICAgICAgICAgICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gcGNbMl0udS5pbmRl
eDsKLSAgICAgICAgICAgIGludCBvZmZzZXQgPSBwY1szXS51Lm9wZXJhbmQ7Ci0gICAgICAgICAg
ICBpZiAobGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID49IG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldHMu
c2l6ZSgpKQotICAgICAgICAgICAgICAgIG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldHMucmVzaXpl
KGxpdmVDYWxsZWVMb2NhbHNJbmRleCArIDEpOwotICAgICAgICAgICAgbWVyZ2VQb2ludEJ5dGVj
b2RlT2Zmc2V0c1tsaXZlQ2FsbGVlTG9jYWxzSW5kZXhdID0gaSArIG9mZnNldDsKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICB9Ci0KICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CkBAIC0yMzY2LDIwICsyMzE3LDYgQEAgdm9pZCBDb2RlQmxvY2s6OmZp
bmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBV
bmxpbmsKIAogICAgIG1faW5zdHJ1Y3Rpb25zID0gV1RGTW92ZShpbnN0cnVjdGlvbnMpOwogCi0g
ICAgLy8gUGVyZm9ybSBieXRlY29kZSBsaXZlbmVzcyBhbmFseXNpcyB0byBkZXRlcm1pbmUgd2hp
Y2ggbG9jYWxzIGFyZSBsaXZlIGFuZCBzaG91bGQgYmUgcmVzdW1lZCB3aGVuIGV4ZWN1dGluZyBv
cF9yZXN1bWUuCi0gICAgaWYgKHVubGlua2VkQ29kZUJsb2NrLT5wYXJzZU1vZGUoKSA9PSBTb3Vy
Y2VQYXJzZU1vZGU6OkdlbmVyYXRvckJvZHlNb2RlKSB7Ci0gICAgICAgIGlmIChzaXplX3QgY291
bnQgPSBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXRzLnNpemUoKSkgewotICAgICAgICAgICAgY3Jl
YXRlUmFyZURhdGFJZk5lY2Vzc2FyeSgpOwotICAgICAgICAgICAgQnl0ZWNvZGVMaXZlbmVzc0Fu
YWx5c2lzIGxpdmVuZXNzKHRoaXMpOwotICAgICAgICAgICAgbV9yYXJlRGF0YS0+bV9saXZlQ2Fs
bGVlTG9jYWxzQXRZaWVsZC5ncm93KGNvdW50KTsKLSAgICAgICAgICAgIHNpemVfdCBsaXZlQ2Fs
bGVlTG9jYWxzSW5kZXggPSAwOwotICAgICAgICAgICAgZm9yIChzaXplX3QgYnl0ZWNvZGVPZmZz
ZXQgOiBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXRzKSB7Ci0gICAgICAgICAgICAgICAgbV9yYXJl
RGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZFtsaXZlQ2FsbGVlTG9jYWxzSW5kZXhdID0g
bGl2ZW5lc3MuZ2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCk7
Ci0gICAgICAgICAgICAgICAgKytsaXZlQ2FsbGVlTG9jYWxzSW5kZXg7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIH0KLSAgICB9Ci0KICAgICAvLyBTZXQgb3B0aW1pemF0aW9uIHRocmVzaG9sZHMg
b25seSBhZnRlciBtX2luc3RydWN0aW9ucyBpcyBpbml0aWFsaXplZCwgc2luY2UgdGhlc2UKICAg
ICAvLyByZWx5IG9uIHRoZSBpbnN0cnVjdGlvbiBjb3VudCAoYW5kIGFyZSBpbiB0aGVvcnkgcGVy
bWl0dGVkIHRvIGFsc28gaW5zcGVjdCB0aGUKICAgICAvLyBpbnN0cnVjdGlvbiBzdHJlYW0gdG8g
bW9yZSBhY2N1cmF0ZSBhc3Nlc3MgdGhlIGNvc3Qgb2YgdGllci11cCkuCkBAIC0zMjg5LDcgKzMy
MjYsNiBAQCB2b2lkIENvZGVCbG9jazo6c2hyaW5rVG9GaXQoU2hyaW5rTW9kZSBzaHJpbmtNb2Rl
KQogICAgICAgICBpZiAobV9yYXJlRGF0YSkgewogICAgICAgICAgICAgbV9yYXJlRGF0YS0+bV9z
d2l0Y2hKdW1wVGFibGVzLnNocmlua1RvRml0KCk7CiAgICAgICAgICAgICBtX3JhcmVEYXRhLT5t
X3N0cmluZ1N3aXRjaEp1bXBUYWJsZXMuc2hyaW5rVG9GaXQoKTsKLSAgICAgICAgICAgIG1fcmFy
ZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQuc2hyaW5rVG9GaXQoKTsKICAgICAgICAg
fQogICAgIH0gLy8gZWxzZSBkb24ndCBzaHJpbmsgdGhlc2UsIGJlY2F1c2Ugd2Ugd291bGQgaGF2
ZSBhbHJlYWR5IHBvaW50ZWQgcG9pbnRlcnMgaW50byB0aGVzZSB0YWJsZXMuCiB9CkBAIC00Mjg4
LDcgKzQyMjQsOCBAQCBWYWx1ZVByb2ZpbGUqIENvZGVCbG9jazo6dmFsdWVQcm9maWxlRm9yQnl0
ZWNvZGVPZmZzZXQoaW50IGJ5dGVjb2RlT2Zmc2V0KQogCiB2b2lkIENvZGVCbG9jazo6dmFsaWRh
dGUoKQogewotICAgIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcyBsaXZlbmVzcyh0aGlzKTsgLy8g
Q29tcHV0ZSBkaXJlY3RseSBmcm9tIHNjcmF0Y2ggc28gaXQgZG9lc24ndCBlZmZlY3QgQ29kZUJs
b2NrIGZvb3RwcmludC4KKyAgICBCeXRlY29kZUdyYXBoPENvZGVCbG9jaz4gZ3JhcGgodGhpcywg
aW5zdHJ1Y3Rpb25zKCkpOworICAgIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcyBsaXZlbmVzcyhn
cmFwaCk7IC8vIENvbXB1dGUgZGlyZWN0bHkgZnJvbSBzY3JhdGNoIHNvIGl0IGRvZXNuJ3QgZWZm
ZWN0IENvZGVCbG9jayBmb290cHJpbnQuCiAgICAgCiAgICAgRmFzdEJpdFZlY3RvciBsaXZlQXRI
ZWFkID0gbGl2ZW5lc3MuZ2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29kZU9mZnNldCgwKTsKICAgICAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAppbmRleCBiMjg4MzY1
NGJlMzQ1ZTdhYjAxMTBlYzFiNmY1ZDY5N2ExOGMyN2MyLi4xOGJiNjcyMTc1NjQ4MGU1MzZkZTYw
NTc1ZTY4MzJkNzliMTQzZDkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5oCkBAIC0yMjAsMTAgKzIyMCw2IEBAIGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBK
U0NlbGwgewogICAgICAgICByZXR1cm4gaW5kZXggPj0gbV9udW1WYXJzOwogICAgIH0KIAotICAg
IGVudW0gY2xhc3MgUmVxdWlyZWRIYW5kbGVyIHsKLSAgICAgICAgQ2F0Y2hIYW5kbGVyLAotICAg
ICAgICBBbnlIYW5kbGVyCi0gICAgfTsKICAgICBIYW5kbGVySW5mbyogaGFuZGxlckZvckJ5dGVj
b2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBSZXF1aXJlZEhhbmRsZXIgPSBSZXF1
aXJlZEhhbmRsZXI6OkFueUhhbmRsZXIpOwogICAgIEhhbmRsZXJJbmZvKiBoYW5kbGVyRm9ySW5k
ZXgodW5zaWduZWQsIFJlcXVpcmVkSGFuZGxlciA9IFJlcXVpcmVkSGFuZGxlcjo6QW55SGFuZGxl
cik7CiAgICAgdm9pZCByZW1vdmVFeGNlcHRpb25IYW5kbGVyRm9yQ2FsbFNpdGUoQ2FsbFNpdGVJ
bmRleCk7CkBAIC0yOTUsNiArMjkxLDggQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2Vs
bCB7CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxJbnN0cnVjdGlvbio+KHJldHVybkFkZHJl
c3MpIC0gaW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsKICAgICB9CiAKKyAgICB0eXBlZGVmIFJlZkNv
dW50ZWRBcnJheTxJbnN0cnVjdGlvbj4mIFVucGFja2VkSW5zdHJ1Y3Rpb25zOworCiAgICAgdW5z
aWduZWQgbnVtYmVyT2ZJbnN0cnVjdGlvbnMoKSBjb25zdCB7IHJldHVybiBtX2luc3RydWN0aW9u
cy5zaXplKCk7IH0KICAgICBSZWZDb3VudGVkQXJyYXk8SW5zdHJ1Y3Rpb24+JiBpbnN0cnVjdGlv
bnMoKSB7IHJldHVybiBtX2luc3RydWN0aW9uczsgfQogICAgIGNvbnN0IFJlZkNvdW50ZWRBcnJh
eTxJbnN0cnVjdGlvbj4mIGluc3RydWN0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1faW5zdHJ1Y3Rp
b25zOyB9CkBAIC01ODgsMTIgKzU4NiwxNCBAQCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlND
ZWxsIHsKICAgICAgICAgICAgIGlmICghIW1fbGl2ZW5lc3NBbmFseXNpcykKICAgICAgICAgICAg
ICAgICByZXR1cm4gKm1fbGl2ZW5lc3NBbmFseXNpczsKICAgICAgICAgfQotICAgICAgICBzdGQ6
OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzPiBhbmFseXNpcyA9Ci0gICAgICAg
ICAgICBzdGQ6Om1ha2VfdW5pcXVlPEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcz4odGhpcyk7Cisg
ICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUdyYXBoPENvZGVCbG9jaz4+IGdyYXBoID0g
c3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZUdyYXBoPENvZGVCbG9jaz4+KHRoaXMsIGluc3RydWN0
aW9ucygpKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNp
cz4gYW5hbHlzaXMgPSBzdGQ6Om1ha2VfdW5pcXVlPEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcz4o
KmdyYXBoKTsKICAgICAgICAgewogICAgICAgICAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2Nr
ZXIobV9sb2NrKTsKLSAgICAgICAgICAgIGlmICghbV9saXZlbmVzc0FuYWx5c2lzKQorICAgICAg
ICAgICAgaWYgKCFtX2xpdmVuZXNzQW5hbHlzaXMpIHsKKyAgICAgICAgICAgICAgICBtX2J5dGVj
b2RlR3JhcGggPSBXVEZNb3ZlKGdyYXBoKTsKICAgICAgICAgICAgICAgICBtX2xpdmVuZXNzQW5h
bHlzaXMgPSBXVEZNb3ZlKGFuYWx5c2lzKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJl
dHVybiAqbV9saXZlbmVzc0FuYWx5c2lzOwogICAgICAgICB9CiAgICAgfQpAQCAtNjE2LDE4ICs2
MTYsNiBAQCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICBTdHJpbmdKdW1w
VGFibGUmIGFkZFN0cmluZ1N3aXRjaEp1bXBUYWJsZSgpIHsgY3JlYXRlUmFyZURhdGFJZk5lY2Vz
c2FyeSgpOyBtX3JhcmVEYXRhLT5tX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXMuYXBwZW5kKFN0cmlu
Z0p1bXBUYWJsZSgpKTsgcmV0dXJuIG1fcmFyZURhdGEtPm1fc3RyaW5nU3dpdGNoSnVtcFRhYmxl
cy5sYXN0KCk7IH0KICAgICBTdHJpbmdKdW1wVGFibGUmIHN0cmluZ1N3aXRjaEp1bXBUYWJsZShp
bnQgdGFibGVJbmRleCkgeyBSRUxFQVNFX0FTU0VSVChtX3JhcmVEYXRhKTsgcmV0dXJuIG1fcmFy
ZURhdGEtPm1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlc1t0YWJsZUluZGV4XTsgfQogCi0gICAgLy8g
TGl2ZSBjYWxsZWUgcmVnaXN0ZXJzIGF0IHlpZWxkIHBvaW50cy4KLSAgICBjb25zdCBGYXN0Qml0
VmVjdG9yJiBsaXZlQ2FsbGVlTG9jYWxzQXRZaWVsZCh1bnNpZ25lZCBpbmRleCkgY29uc3QKLSAg
ICB7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fcmFyZURhdGEpOwotICAgICAgICByZXR1cm4g
bV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZFtpbmRleF07Ci0gICAgfQotICAg
IEZhc3RCaXRWZWN0b3ImIGxpdmVDYWxsZWVMb2NhbHNBdFlpZWxkKHVuc2lnbmVkIGluZGV4KQot
ICAgIHsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9yYXJlRGF0YSk7Ci0gICAgICAgIHJldHVy
biBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkW2luZGV4XTsKLSAgICB9Ci0K
ICAgICBFdmFsQ29kZUNhY2hlJiBldmFsQ29kZUNhY2hlKCkgeyBjcmVhdGVSYXJlRGF0YUlmTmVj
ZXNzYXJ5KCk7IHJldHVybiBtX3JhcmVEYXRhLT5tX2V2YWxDb2RlQ2FjaGU7IH0KIAogICAgIGVu
dW0gU2hyaW5rTW9kZSB7CkBAIC04ODIsOCArODcwLDYgQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVi
bGljIEpTQ2VsbCB7CiAgICAgICAgIFZlY3RvcjxTaW1wbGVKdW1wVGFibGU+IG1fc3dpdGNoSnVt
cFRhYmxlczsKICAgICAgICAgVmVjdG9yPFN0cmluZ0p1bXBUYWJsZT4gbV9zdHJpbmdTd2l0Y2hK
dW1wVGFibGVzOwogCi0gICAgICAgIFZlY3RvcjxGYXN0Qml0VmVjdG9yPiBtX2xpdmVDYWxsZWVM
b2NhbHNBdFlpZWxkOwotCiAgICAgICAgIEV2YWxDb2RlQ2FjaGUgbV9ldmFsQ29kZUNhY2hlOwog
ICAgIH07CiAKQEAgLTEwNTYsNiArMTA0Miw3IEBAIGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBK
U0NlbGwgewogCiAgICAgc3RkOjpjaHJvbm86OnN0ZWFkeV9jbG9jazo6dGltZV9wb2ludCBtX2Ny
ZWF0aW9uVGltZTsKIAorICAgIHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUdyYXBoPENvZGVCbG9j
az4+IG1fYnl0ZWNvZGVHcmFwaDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVMaXZlbmVz
c0FuYWx5c2lzPiBtX2xpdmVuZXNzQW5hbHlzaXM7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmFy
ZURhdGE+IG1fcmFyZURhdGE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvSGFuZGxlckluZm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9IYW5k
bGVySW5mby5oCmluZGV4IGFjZGRhMDhlZDE0Y2JmOWYwOTcxMjc1MDQwNWE0MTc0MWY3NmEyMTMu
LjQyZDgxOGM4YWM0Y2NiYWVjYTYwNTVmMjZkNjdjM2I5ZWMwYWU3YjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9IYW5kbGVySW5mby5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9IYW5kbGVySW5mby5oCkBAIC05NSw2ICs5NSwxMSBAQCBz
dHJ1Y3QgSGFuZGxlckluZm8gOiBwdWJsaWMgSGFuZGxlckluZm9CYXNlIHsKICNlbmRpZgogfTsK
IAorZW51bSBjbGFzcyBSZXF1aXJlZEhhbmRsZXIgeworICAgIENhdGNoSGFuZGxlciwKKyAgICBB
bnlIYW5kbGVyCit9OworCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEhhbmRsZXJJ
bmZvX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVjaXNl
SnVtcFRhcmdldHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VK
dW1wVGFyZ2V0cy5jcHAKaW5kZXggZTJjYjAwMDQ4Mzc5NGJhOTJkNTEwZGNmNWZhOTk0ODg1YTIz
ZGMzZC4uMzk4ZTQ2N2M4YWEwNjVjZmZjYzg5NGViNmFiZThlMTQ5NTY4ODE0NCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5j
cHAKQEAgLTMwLDEwICszMCwyMCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotdGVtcGxhdGUgPHNp
emVfdCB2ZWN0b3JTaXplPgotc3RhdGljIHZvaWQgZ2V0SnVtcFRhcmdldHNGb3JCeXRlY29kZU9m
ZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgSW50ZXJwcmV0ZXIqIGludGVycHJldGVyLCBJbnN0
cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBWZWN0
b3I8dW5zaWduZWQsIHZlY3RvclNpemU+JiBvdXQpCitzdGF0aWMgT3Bjb2RlSUQgZ2V0T3Bjb2Rl
SUQoSW50ZXJwcmV0ZXIqIGludGVycHJldGVyLCBjb25zdCBJbnN0cnVjdGlvbiYgaW5zdHJ1Y3Rp
b24pCiB7Ci0gICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQo
aW5zdHJ1Y3Rpb25zQmVnaW5bYnl0ZWNvZGVPZmZzZXRdLnUub3Bjb2RlKTsKKyAgICByZXR1cm4g
aW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGluc3RydWN0aW9uLnUub3Bjb2RlKTsKK30KKworc3Rh
dGljIE9wY29kZUlEIGdldE9wY29kZUlEKEludGVycHJldGVyKiwgY29uc3QgVW5saW5rZWRJbnN0
cnVjdGlvbiYgaW5zdHJ1Y3Rpb24pCit7CisgICAgcmV0dXJuIGluc3RydWN0aW9uLnUub3Bjb2Rl
OworfQorCit0ZW1wbGF0ZSA8c2l6ZV90IHZlY3RvclNpemUsIHR5cGVuYW1lIEJsb2NrLCB0eXBl
bmFtZSBJbnN0cnVjdGlvbj4KK3N0YXRpYyB2b2lkIGdldEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVP
ZmZzZXQoQmxvY2sqIGNvZGVCbG9jaywgSW50ZXJwcmV0ZXIqIGludGVycHJldGVyLCBJbnN0cnVj
dGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBWZWN0b3I8
dW5zaWduZWQsIHZlY3RvclNpemU+JiBvdXQpCit7CisgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBn
ZXRPcGNvZGVJRChpbnRlcnByZXRlciwgaW5zdHJ1Y3Rpb25zQmVnaW5bYnl0ZWNvZGVPZmZzZXRd
KTsKICAgICBJbnN0cnVjdGlvbiogY3VycmVudCA9IGluc3RydWN0aW9uc0JlZ2luICsgYnl0ZWNv
ZGVPZmZzZXQ7CiAgICAgc3dpdGNoIChvcGNvZGVJRCkgewogICAgIGNhc2Ugb3Bfam1wOgpAQCAt
NTQsMjEgKzY0LDI1IEBAIHN0YXRpYyB2b2lkIGdldEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZz
ZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEludGVycHJldGVyKiBpCiAgICAgY2FzZSBvcF9qbmxl
c3NlcToKICAgICBjYXNlIG9wX2puZ3JlYXRlcjoKICAgICBjYXNlIG9wX2puZ3JlYXRlcmVxOgot
ICAgIGNhc2Ugb3Bfc2F2ZTogLy8gVGhlIGp1bXAgb2Ygb3Bfc2F2ZSBpcyBwdXJlbHkgZm9yIGNh
bGN1bGF0aW5nIGxpdmVuZXNzLgogICAgICAgICBvdXQuYXBwZW5kKGJ5dGVjb2RlT2Zmc2V0ICsg
Y3VycmVudFszXS51Lm9wZXJhbmQpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIG9wX3NhdmU6
IHsKKyAgICAgICAgLy8gVGhlIGp1bXAgb2Ygb3Bfc2F2ZSB1bmRlciBFeHRyYWN0R2VuZXJhdG9y
TGl2ZUNhbGxlZUxvY2FscyBtb2RlIGlzIHB1cmVseSBmb3IgY2FsY3VsYXRpbmcgbGl2ZW5lc3Mu
CisgICAgICAgIG91dC5hcHBlbmQoYnl0ZWNvZGVPZmZzZXQgKyBjdXJyZW50WzNdLnUub3BlcmFu
ZCk7CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICBjYXNlIG9wX3N3aXRjaF9pbW06CiAgICAg
Y2FzZSBvcF9zd2l0Y2hfY2hhcjogewotICAgICAgICBTaW1wbGVKdW1wVGFibGUmIHRhYmxlID0g
Y29kZUJsb2NrLT5zd2l0Y2hKdW1wVGFibGUoY3VycmVudFsxXS51Lm9wZXJhbmQpOworICAgICAg
ICBhdXRvJiB0YWJsZSA9IGNvZGVCbG9jay0+c3dpdGNoSnVtcFRhYmxlKGN1cnJlbnRbMV0udS5v
cGVyYW5kKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gdGFibGUuYnJhbmNoT2Zmc2V0cy5z
aXplKCk7IGktLTspCiAgICAgICAgICAgICBvdXQuYXBwZW5kKGJ5dGVjb2RlT2Zmc2V0ICsgdGFi
bGUuYnJhbmNoT2Zmc2V0c1tpXSk7CiAgICAgICAgIG91dC5hcHBlbmQoYnl0ZWNvZGVPZmZzZXQg
KyBjdXJyZW50WzJdLnUub3BlcmFuZCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNl
IG9wX3N3aXRjaF9zdHJpbmc6IHsKLSAgICAgICAgU3RyaW5nSnVtcFRhYmxlJiB0YWJsZSA9IGNv
ZGVCbG9jay0+c3RyaW5nU3dpdGNoSnVtcFRhYmxlKGN1cnJlbnRbMV0udS5vcGVyYW5kKTsKLSAg
ICAgICAgU3RyaW5nSnVtcFRhYmxlOjpTdHJpbmdPZmZzZXRUYWJsZTo6aXRlcmF0b3IgaXRlciA9
IHRhYmxlLm9mZnNldFRhYmxlLmJlZ2luKCk7Ci0gICAgICAgIFN0cmluZ0p1bXBUYWJsZTo6U3Ry
aW5nT2Zmc2V0VGFibGU6Oml0ZXJhdG9yIGVuZCA9IHRhYmxlLm9mZnNldFRhYmxlLmVuZCgpOwor
ICAgICAgICBhdXRvJiB0YWJsZSA9IGNvZGVCbG9jay0+c3RyaW5nU3dpdGNoSnVtcFRhYmxlKGN1
cnJlbnRbMV0udS5vcGVyYW5kKTsKKyAgICAgICAgYXV0byBpdGVyID0gdGFibGUub2Zmc2V0VGFi
bGUuYmVnaW4oKTsKKyAgICAgICAgYXV0byBlbmQgPSB0YWJsZS5vZmZzZXRUYWJsZS5lbmQoKTsK
ICAgICAgICAgZm9yICg7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpCiAgICAgICAgICAgICBvdXQuYXBw
ZW5kKGJ5dGVjb2RlT2Zmc2V0ICsgaXRlci0+dmFsdWUuYnJhbmNoT2Zmc2V0KTsKICAgICAgICAg
b3V0LmFwcGVuZChieXRlY29kZU9mZnNldCArIGN1cnJlbnRbMl0udS5vcGVyYW5kKTsKQEAgLTgy
LDEzICs5NiwxOSBAQCBzdGF0aWMgdm9pZCBnZXRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0
KENvZGVCbG9jayogY29kZUJsb2NrLCBJbnRlcnByZXRlciogaQogICAgIH0KIH0KIAotdm9pZCBj
b21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKENvZGVCbG9jayogY29kZUJsb2NrLCBWZWN0b3I8dW5z
aWduZWQsIDMyPiYgb3V0KQorZW51bSBjbGFzcyBDb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzTW9k
ZSB7CisgICAgRm9sbG93Q29kZUJsb2NrQ2xhaW0sCisgICAgRm9yY2VDb21wdXRlLAorfTsKKwor
dGVtcGxhdGU8dHlwZW5hbWUgQmxvY2ssIHR5cGVuYW1lIEluc3RydWN0aW9uLCBzaXplX3QgdmVj
dG9yU2l6ZT4KK3ZvaWQgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0c0ludGVybmFsKENvbXB1dGVQ
cmVjaXNlSnVtcFRhcmdldHNNb2RlIG1vZGUsIEJsb2NrKiBjb2RlQmxvY2ssIEluc3RydWN0aW9u
KiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCwgVmVjdG9yPHVu
c2lnbmVkLCB2ZWN0b3JTaXplPiYgb3V0KQogewogICAgIEFTU0VSVChvdXQuaXNFbXB0eSgpKTsK
ICAgICAKICAgICAvLyBXZSB3aWxsIGRlcml2ZSBhIHN1cGVyc2V0IG9mIHRoZSBqdW1wIHRhcmdl
dHMgdGhhdCB0aGUgY29kZSBibG9jayB0aGlua3MgaXQgaGFzLgogICAgIC8vIFNvLCBpZiB0aGUg
Y29kZSBibG9jayBjbGFpbXMgdGhlcmUgYXJlIG5vbmUsIHRoZW4gd2UgYXJlIGRvbmUuCi0gICAg
aWYgKCFjb2RlQmxvY2stPm51bWJlck9mSnVtcFRhcmdldHMoKSkKKyAgICBpZiAobW9kZSA9PSBD
b21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzTW9kZTo6Rm9sbG93Q29kZUJsb2NrQ2xhaW0gJiYgIWNv
ZGVCbG9jay0+bnVtYmVyT2ZKdW1wVGFyZ2V0cygpKQogICAgICAgICByZXR1cm47CiAgICAgCiAg
ICAgZm9yICh1bnNpZ25lZCBpID0gY29kZUJsb2NrLT5udW1iZXJPZkV4Y2VwdGlvbkhhbmRsZXJz
KCk7IGktLTspIHsKQEAgLTk4LDEwICsxMTgsOCBAQCB2b2lkIGNvbXB1dGVQcmVjaXNlSnVtcFRh
cmdldHMoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFZlY3Rvcjx1bnNpZ25lZCwgMzI+JiBvdXQpCiAg
ICAgfQogCiAgICAgSW50ZXJwcmV0ZXIqIGludGVycHJldGVyID0gY29kZUJsb2NrLT52bSgpLT5p
bnRlcnByZXRlcjsKLSAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4gPSBjb2RlQmxv
Y2stPmluc3RydWN0aW9ucygpLmJlZ2luKCk7Ci0gICAgdW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3Vu
dCA9IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpOwogICAgIGZvciAodW5zaWduZWQg
Ynl0ZWNvZGVPZmZzZXQgPSAwOyBieXRlY29kZU9mZnNldCA8IGluc3RydWN0aW9uQ291bnQ7KSB7
Ci0gICAgICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGlu
c3RydWN0aW9uc0JlZ2luW2J5dGVjb2RlT2Zmc2V0XS51Lm9wY29kZSk7CisgICAgICAgIE9wY29k
ZUlEIG9wY29kZUlEID0gZ2V0T3Bjb2RlSUQoaW50ZXJwcmV0ZXIsIGluc3RydWN0aW9uc0JlZ2lu
W2J5dGVjb2RlT2Zmc2V0XSk7CiAgICAgICAgIGdldEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZz
ZXQoY29kZUJsb2NrLCBpbnRlcnByZXRlciwgaW5zdHJ1Y3Rpb25zQmVnaW4sIGJ5dGVjb2RlT2Zm
c2V0LCBvdXQpOwogICAgICAgICBieXRlY29kZU9mZnNldCArPSBvcGNvZGVMZW5ndGhzW29wY29k
ZUlEXTsKICAgICB9CkBAIC0xMjMsMTEgKzE0MSwzNSBAQCB2b2lkIGNvbXB1dGVQcmVjaXNlSnVt
cFRhcmdldHMoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFZlY3Rvcjx1bnNpZ25lZCwgMzI+JiBvdXQp
CiAgICAgb3V0LnNocmlua1RvRml0KCk7CiB9CiAKLXZvaWQgZmluZEp1bXBUYXJnZXRzRm9yQnl0
ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0
LCBWZWN0b3I8dW5zaWduZWQsIDE+JiBvdXQpCit2b2lkIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdl
dHMoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFZlY3Rvcjx1bnNpZ25lZCwgMzI+JiBvdXQpCiB7Ci0g
ICAgSW50ZXJwcmV0ZXIqIGludGVycHJldGVyID0gY29kZUJsb2NrLT52bSgpLT5pbnRlcnByZXRl
cjsKLSAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4gPSBjb2RlQmxvY2stPmluc3Ry
dWN0aW9ucygpLmJlZ2luKCk7Ci0gICAgZ2V0SnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChj
b2RlQmxvY2ssIGludGVycHJldGVyLCBpbnN0cnVjdGlvbnNCZWdpbiwgYnl0ZWNvZGVPZmZzZXQs
IG91dCk7CisgICAgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0c0ludGVybmFsKENvbXB1dGVQcmVj
aXNlSnVtcFRhcmdldHNNb2RlOjpGb2xsb3dDb2RlQmxvY2tDbGFpbSwgY29kZUJsb2NrLCBjb2Rl
QmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCksIGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCku
c2l6ZSgpLCBvdXQpOworfQorCit2b2lkIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMoQ29kZUJs
b2NrKiBjb2RlQmxvY2ssIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQg
aW5zdHJ1Y3Rpb25Db3VudCwgVmVjdG9yPHVuc2lnbmVkLCAzMj4mIG91dCkKK3sKKyAgICBjb21w
dXRlUHJlY2lzZUp1bXBUYXJnZXRzSW50ZXJuYWwoQ29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0c01v
ZGU6OkZvbGxvd0NvZGVCbG9ja0NsYWltLCBjb2RlQmxvY2ssIGluc3RydWN0aW9uc0JlZ2luLCBp
bnN0cnVjdGlvbkNvdW50LCBvdXQpOworfQorCit2b2lkIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdl
dHMoVW5saW5rZWRDb2RlQmxvY2sqIGNvZGVCbG9jaywgVW5saW5rZWRJbnN0cnVjdGlvbiogaW5z
dHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQsIFZlY3Rvcjx1bnNpZ25l
ZCwgMzI+JiBvdXQpCit7CisgICAgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0c0ludGVybmFsKENv
bXB1dGVQcmVjaXNlSnVtcFRhcmdldHNNb2RlOjpGb2xsb3dDb2RlQmxvY2tDbGFpbSwgY29kZUJs
b2NrLCBpbnN0cnVjdGlvbnNCZWdpbiwgaW5zdHJ1Y3Rpb25Db3VudCwgb3V0KTsKK30KKwordm9p
ZCBmaW5kSnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywg
SW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwg
VmVjdG9yPHVuc2lnbmVkLCAxPiYgb3V0KQoreworICAgIGdldEp1bXBUYXJnZXRzRm9yQnl0ZWNv
ZGVPZmZzZXQoY29kZUJsb2NrLCBjb2RlQmxvY2stPnZtKCktPmludGVycHJldGVyLCBpbnN0cnVj
dGlvbnNCZWdpbiwgYnl0ZWNvZGVPZmZzZXQsIG91dCk7Cit9CisKK3ZvaWQgZmluZEp1bXBUYXJn
ZXRzRm9yQnl0ZWNvZGVPZmZzZXQoVW5saW5rZWRDb2RlQmxvY2sqIGNvZGVCbG9jaywgVW5saW5r
ZWRJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0
LCBWZWN0b3I8dW5zaWduZWQsIDE+JiBvdXQpCit7CisgICAgZ2V0SnVtcFRhcmdldHNGb3JCeXRl
Y29kZU9mZnNldChjb2RlQmxvY2ssIGNvZGVCbG9jay0+dm0oKS0+aW50ZXJwcmV0ZXIsIGluc3Ry
dWN0aW9uc0JlZ2luLCBieXRlY29kZU9mZnNldCwgb3V0KTsKK30KKwordm9pZCByZWNvbXB1dGVQ
cmVjaXNlSnVtcFRhcmdldHMoVW5saW5rZWRDb2RlQmxvY2sqIGNvZGVCbG9jaywgVW5saW5rZWRJ
bnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQp
Cit7CisgICAgY29kZUJsb2NrLT5qdW1wVGFyZ2V0cygpLmNsZWFyKCk7CisgICAgY29tcHV0ZVBy
ZWNpc2VKdW1wVGFyZ2V0c0ludGVybmFsKENvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHNNb2RlOjpG
b3JjZUNvbXB1dGUsIGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb25zQmVnaW4sIGluc3RydWN0aW9uQ291
bnQsIGNvZGVCbG9jay0+anVtcFRhcmdldHMoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFy
Z2V0cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0
cy5oCmluZGV4IDg1MjQxM2Q3N2I3OTg5ODRiMjdjZWYwZWQ2MmJjOTRjNjg5ZTIxMmMuLjY4YTlj
ZDM5ZGVmYTMzNGJmMTM1MDAzN2JiZGRiNTkyODQ5OTFjNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHMuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmgKQEAgLTI3LDEzICsy
NywxOSBAQAogI2RlZmluZSBQcmVjaXNlSnVtcFRhcmdldHNfaAogCiAjaW5jbHVkZSAiQ29kZUJs
b2NrLmgiCisjaW5jbHVkZSAiVW5saW5rZWRDb2RlQmxvY2suaCIKIAogbmFtZXNwYWNlIEpTQyB7
CiAKIC8vIFJldHVybiBhIHNvcnRlZCBsaXN0IG9mIGJ5dGVjb2RlIGluZGV4IHRoYXQgYXJlIHRo
ZSBkZXN0aW5hdGlvbiBvZiBhIGp1bXAuCiB2b2lkIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMo
Q29kZUJsb2NrKiwgVmVjdG9yPHVuc2lnbmVkLCAzMj4mIG91dCk7Cit2b2lkIGNvbXB1dGVQcmVj
aXNlSnVtcFRhcmdldHMoQ29kZUJsb2NrKiwgSW5zdHJ1Y3Rpb24qLCB1bnNpZ25lZCBpbnN0cnVj
dGlvbkNvdW50LCBWZWN0b3I8dW5zaWduZWQsIDMyPiYgb3V0KTsKK3ZvaWQgY29tcHV0ZVByZWNp
c2VKdW1wVGFyZ2V0cyhVbmxpbmtlZENvZGVCbG9jayosIFVubGlua2VkSW5zdHJ1Y3Rpb24qLCB1
bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50LCBWZWN0b3I8dW5zaWduZWQsIDMyPiYgb3V0KTsKIAot
dm9pZCBmaW5kSnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqLCB1bnNpZ25l
ZCBieXRlY29kZU9mZnNldCwgVmVjdG9yPHVuc2lnbmVkLCAxPiYgb3V0KTsKK3ZvaWQgcmVjb21w
dXRlUHJlY2lzZUp1bXBUYXJnZXRzKFVubGlua2VkQ29kZUJsb2NrKiwgVW5saW5rZWRJbnN0cnVj
dGlvbiosIHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQpOworCit2b2lkIGZpbmRKdW1wVGFyZ2V0
c0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayosIEluc3RydWN0aW9uKiwgdW5zaWduZWQgYnl0
ZWNvZGVPZmZzZXQsIFZlY3Rvcjx1bnNpZ25lZCwgMT4mIG91dCk7Cit2b2lkIGZpbmRKdW1wVGFy
Z2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KFVubGlua2VkQ29kZUJsb2NrKiwgVW5saW5rZWRJbnN0cnVj
dGlvbiosIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBWZWN0b3I8dW5zaWduZWQsIDE+JiBvdXQp
OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKaW5kZXggMjk5YWM2ODBkOWExZDFlNWE5
MGQ5ZmFlMWEyMmY4NDRlMjkyZTNlMi4uNWY1MjljY2ZkOTkxOTBlZWZhYWZmNDNlNzM3YjNmODIx
NWEwNDg1OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlu
a2VkQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRDb2RlQmxvY2suY3BwCkBAIC0zNjYsNSArMzY2LDMyIEBAIGNvbnN0IFVubGlua2VkSW5z
dHJ1Y3Rpb25TdHJlYW0mIFVubGlua2VkQ29kZUJsb2NrOjppbnN0cnVjdGlvbnMoKSBjb25zdAog
ICAgIHJldHVybiAqbV91bmxpbmtlZEluc3RydWN0aW9uczsKIH0KIAorVW5saW5rZWRIYW5kbGVy
SW5mbyogVW5saW5rZWRDb2RlQmxvY2s6OmhhbmRsZXJGb3JCeXRlY29kZU9mZnNldCh1bnNpZ25l
ZCBieXRlY29kZU9mZnNldCwgUmVxdWlyZWRIYW5kbGVyIHJlcXVpcmVkSGFuZGxlcikKK3sKKyAg
ICByZXR1cm4gaGFuZGxlckZvckluZGV4KGJ5dGVjb2RlT2Zmc2V0LCByZXF1aXJlZEhhbmRsZXIp
OworfQorCisvLyBGSVhNRTogQ29tcGxldGVseSBkdXBsaWNhdGUuCitVbmxpbmtlZEhhbmRsZXJJ
bmZvKiBVbmxpbmtlZENvZGVCbG9jazo6aGFuZGxlckZvckluZGV4KHVuc2lnbmVkIGluZGV4LCBS
ZXF1aXJlZEhhbmRsZXIgcmVxdWlyZWRIYW5kbGVyKQoreworICAgIGlmICghbV9yYXJlRGF0YSkK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBWZWN0b3I8VW5saW5rZWRIYW5kbGVySW5m
bz4mIGV4Y2VwdGlvbkhhbmRsZXJzID0gbV9yYXJlRGF0YS0+bV9leGNlcHRpb25IYW5kbGVyczsK
KyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGV4Y2VwdGlvbkhhbmRsZXJzLnNpemUoKTsgKytp
KSB7CisgICAgICAgIFVubGlua2VkSGFuZGxlckluZm8mIGhhbmRsZXIgPSBleGNlcHRpb25IYW5k
bGVyc1tpXTsKKyAgICAgICAgaWYgKChyZXF1aXJlZEhhbmRsZXIgPT0gUmVxdWlyZWRIYW5kbGVy
OjpDYXRjaEhhbmRsZXIpICYmICFoYW5kbGVyLmlzQ2F0Y2hIYW5kbGVyKCkpCisgICAgICAgICAg
ICBjb250aW51ZTsKKworICAgICAgICAvLyBIYW5kbGVycyBhcmUgb3JkZXJlZCBpbm5lcm1vc3Qg
Zmlyc3QsIHNvIHRoZSBmaXJzdCBoYW5kbGVyIHdlIGVuY291bnRlcgorICAgICAgICAvLyB0aGF0
IGNvbnRhaW5zIHRoZSBzb3VyY2UgYWRkcmVzcyBpcyB0aGUgY29ycmVjdCBoYW5kbGVyIHRvIHVz
ZS4KKyAgICAgICAgLy8gVGhpcyBpbmRleCB1c2VkIGlzIGVpdGhlciB0aGUgQnl0ZWNvZGVPZmZz
ZXQgb3IgYSBDYWxsU2l0ZUluZGV4LgorICAgICAgICBpZiAoaGFuZGxlci5zdGFydCA8PSBpbmRl
eCAmJiBoYW5kbGVyLmVuZCA+IGluZGV4KQorICAgICAgICAgICAgcmV0dXJuICZoYW5kbGVyOwor
ICAgIH0KKworICAgIHJldHVybiBudWxscHRyOworfQorCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKaW5kZXggOTFmZGNhNDhj
MWUzOWU4YmVmYjBjNWZkNTVmZDliZDkxYzFmMzcwNy4uZWJmYTY0ZmUwMzAzNjRiZTczYjkxNTVm
NjAyMDhmODUxMzJhYjRkMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1VubGlua2VkQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1VubGlua2VkQ29kZUJsb2NrLmgKQEAgLTY5LDcgKzY5LDExIEBAIHR5cGVkZWYgdW5zaWdu
ZWQgVW5saW5rZWRPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTsKIHR5cGVkZWYgdW5zaWduZWQgVW5s
aW5rZWRMTEludENhbGxMaW5rSW5mbzsKIAogc3RydWN0IFVubGlua2VkU3RyaW5nSnVtcFRhYmxl
IHsKLSAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFN0cmluZ0ltcGw+LCBpbnQzMl90PiBTdHJp
bmdPZmZzZXRUYWJsZTsKKyAgICBzdHJ1Y3QgT2Zmc2V0TG9jYXRpb24geworICAgICAgICBpbnQz
Ml90IGJyYW5jaE9mZnNldDsKKyAgICB9OworCisgICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxT
dHJpbmdJbXBsPiwgT2Zmc2V0TG9jYXRpb24+IFN0cmluZ09mZnNldFRhYmxlOwogICAgIFN0cmlu
Z09mZnNldFRhYmxlIG9mZnNldFRhYmxlOwogCiAgICAgaW5saW5lIGludDMyX3Qgb2Zmc2V0Rm9y
VmFsdWUoU3RyaW5nSW1wbCogdmFsdWUsIGludDMyX3QgZGVmYXVsdE9mZnNldCkKQEAgLTc4LDcg
KzgyLDcgQEAgc3RydWN0IFVubGlua2VkU3RyaW5nSnVtcFRhYmxlIHsKICAgICAgICAgU3RyaW5n
T2Zmc2V0VGFibGU6OmNvbnN0X2l0ZXJhdG9yIGxvYyA9IG9mZnNldFRhYmxlLmZpbmQodmFsdWUp
OwogICAgICAgICBpZiAobG9jID09IGVuZCkKICAgICAgICAgICAgIHJldHVybiBkZWZhdWx0T2Zm
c2V0OwotICAgICAgICByZXR1cm4gbG9jLT52YWx1ZTsKKyAgICAgICAgcmV0dXJuIGxvYy0+dmFs
dWUuYnJhbmNoT2Zmc2V0OwogICAgIH0KIAogfTsKQEAgLTEwNiw2ICsxMTAsOCBAQCBzdHJ1Y3Qg
VW5saW5rZWRJbnN0cnVjdGlvbiB7CiAgICAgfSB1OwogfTsKIAorY2xhc3MgQnl0ZWNvZGVHZW5l
cmF0b3JpZmljYXRpb247CisKIGNsYXNzIFVubGlua2VkQ29kZUJsb2NrIDogcHVibGljIEpTQ2Vs
bCB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBKU0NlbGwgQmFzZTsKQEAgLTExNSw2ICsxMjEsOCBA
QCBjbGFzcyBVbmxpbmtlZENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogCiAgICAgZW51bSB7
IENhbGxGdW5jdGlvbiwgQXBwbHlGdW5jdGlvbiB9OwogCisgICAgdHlwZWRlZiBWZWN0b3I8VW5s
aW5rZWRJbnN0cnVjdGlvbiwgMCwgVW5zYWZlVmVjdG9yT3ZlcmZsb3c+IFVucGFja2VkSW5zdHJ1
Y3Rpb25zOworCiAgICAgYm9vbCBpc0NvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9pc0Nv
bnN0cnVjdG9yOyB9CiAgICAgYm9vbCBpc1N0cmljdE1vZGUoKSBjb25zdCB7IHJldHVybiBtX2lz
U3RyaWN0TW9kZTsgfQogICAgIGJvb2wgdXNlc0V2YWwoKSBjb25zdCB7IHJldHVybiBtX3VzZXNF
dmFsOyB9CkBAIC0yMDMsNiArMjExLDEwIEBAIGNsYXNzIFVubGlua2VkQ29kZUJsb2NrIDogcHVi
bGljIEpTQ2VsbCB7CiAgICAgdm9pZCBhZGRKdW1wVGFyZ2V0KHVuc2lnbmVkIGp1bXBUYXJnZXQp
IHsgbV9qdW1wVGFyZ2V0cy5hcHBlbmQoanVtcFRhcmdldCk7IH0KICAgICB1bnNpZ25lZCBqdW1w
VGFyZ2V0KGludCBpbmRleCkgY29uc3QgeyByZXR1cm4gbV9qdW1wVGFyZ2V0c1tpbmRleF07IH0K
ICAgICB1bnNpZ25lZCBsYXN0SnVtcFRhcmdldCgpIGNvbnN0IHsgcmV0dXJuIG1fanVtcFRhcmdl
dHMubGFzdCgpOyB9CisgICAgVmVjdG9yPHVuc2lnbmVkPiYganVtcFRhcmdldHMoKSB7IHJldHVy
biBtX2p1bXBUYXJnZXRzOyB9CisKKyAgICBVbmxpbmtlZEhhbmRsZXJJbmZvKiBoYW5kbGVyRm9y
Qnl0ZWNvZGVPZmZzZXQodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIFJlcXVpcmVkSGFuZGxlciA9
IFJlcXVpcmVkSGFuZGxlcjo6QW55SGFuZGxlcik7CisgICAgVW5saW5rZWRIYW5kbGVySW5mbyog
aGFuZGxlckZvckluZGV4KHVuc2lnbmVkLCBSZXF1aXJlZEhhbmRsZXIgPSBSZXF1aXJlZEhhbmRs
ZXI6OkFueUhhbmRsZXIpOwogCiAgICAgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbigpIGNvbnN0IHsg
cmV0dXJuIG1faXNCdWlsdGluRnVuY3Rpb247IH0KIApAQCAtMjk3LDYgKzMwOSw3IEBAIGNsYXNz
IFVubGlua2VkQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAKICAgICBzaXplX3QgbnVtYmVy
T2ZQcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fcHJvcGVydHlB
Y2Nlc3NJbnN0cnVjdGlvbnMuc2l6ZSgpOyB9CiAgICAgY29uc3QgVmVjdG9yPHVuc2lnbmVkPiYg
cHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnMoKSBjb25zdCB7IHJldHVybiBtX3Byb3BlcnR5QWNj
ZXNzSW5zdHJ1Y3Rpb25zOyB9CisgICAgVmVjdG9yPHVuc2lnbmVkPiYgcHJvcGVydHlBY2Nlc3NJ
bnN0cnVjdGlvbnMoKSB7IHJldHVybiBtX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zOyB9CiAK
ICAgICB0eXBlZGVmIFZlY3RvcjxKU1ZhbHVlPiBDb25zdGFudEJ1ZmZlcjsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmNwcAppbmRleCA1MDBiNGJiYmQyMDI4ODI2MmE5ZjlmNjBiMzNiNTM5YWFlOTRmMDJkLi5jMTE5
YWMxMzg2M2EzOTk1MzhhMzI2YjI4ZmUwY2FjNGQ1YjhlNGRmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApA
QCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkJ5dGVjb2RlR2VuZXJhdG9yLmgiCiAKICNpbmNs
dWRlICJCdWlsdGluRXhlY3V0YWJsZXMuaCIKKyNpbmNsdWRlICJCeXRlY29kZUdlbmVyYXRvcmlm
aWNhdGlvbi5oIgogI2luY2x1ZGUgIkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5oIgogI2luY2x1
ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgpAQCAtMTU0LDYgKzE1
NSwxMiBAQCBQYXJzZXJFcnJvciBCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUoKQogICAgICAg
ICBtX2NvZGVCbG9jay0+YWRkRXhjZXB0aW9uSGFuZGxlcihpbmZvKTsKICAgICB9CiAgICAgCisK
KyAgICBpZiAobV9jb2RlQmxvY2stPnBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6R2Vu
ZXJhdG9yQm9keU1vZGUpIHsKKyAgICAgICAgQnl0ZWNvZGVHcmFwaDxVbmxpbmtlZENvZGVCbG9j
az4gZ3JhcGgobV9jb2RlQmxvY2suZ2V0KCksIG1faW5zdHJ1Y3Rpb25zKTsKKyAgICAgICAgcGVy
Zm9ybUdlbmVyYXRvcmlmaWNhdGlvbihncmFwaCwgbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxl
LmdldCgpLCBtX2dlbmVyYXRvckZyYW1lU3ltYm9sVGFibGVJbmRleCk7CisgICAgfQorCiAgICAg
bV9jb2RlQmxvY2stPnNldEluc3RydWN0aW9ucyhzdGQ6Om1ha2VfdW5pcXVlPFVubGlua2VkSW5z
dHJ1Y3Rpb25TdHJlYW0+KG1faW5zdHJ1Y3Rpb25zKSk7CiAKICAgICBtX2NvZGVCbG9jay0+c2hy
aW5rVG9GaXQoKTsKQEAgLTI3Myw3ICsyODAsNyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNv
ZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQog
ICAgICAgICAvLyAgICBmdW5jdGlvbiAqZ2VuKGEsIGIgPSBoZWxsbygpKQogICAgICAgICAvLyAg
ICB7CiAgICAgICAgIC8vICAgICAgICByZXR1cm4gewotICAgICAgICAvLyAgICAgICAgICAgIEBn
ZW5lcmF0b3JOZXh0OiBmdW5jdGlvbiAoQGdlbmVyYXRvciwgQGdlbmVyYXRvclN0YXRlLCBAZ2Vu
ZXJhdG9yVmFsdWUsIEBnZW5lcmF0b3JSZXN1bWVNb2RlKQorICAgICAgICAvLyAgICAgICAgICAg
IEBnZW5lcmF0b3JOZXh0OiBmdW5jdGlvbiAoQGdlbmVyYXRvciwgQGdlbmVyYXRvclN0YXRlLCBA
Z2VuZXJhdG9yVmFsdWUsIEBnZW5lcmF0b3JSZXN1bWVNb2RlLCBAZ2VuZXJhdG9yRnJhbWUpCiAg
ICAgICAgIC8vICAgICAgICAgICAgewogICAgICAgICAvLyAgICAgICAgICAgICAgICBhcmd1bWVu
dHM7ICAvLyBUaGlzIGBhcmd1bWVudHNgIHNob3VsZCByZWZlcmVuY2UgdG8gdGhlIGdlbidzIGFy
Z3VtZW50cy4KICAgICAgICAgLy8gICAgICAgICAgICAgICAgLi4uCkBAIC01NTIsNiArNTU5LDkg
QEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25O
b2RlKiBmdW5jdGlvbk5vZGUsIFVubGlua2UKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2Vu
ZXJhdG9yQm9keU1vZGU6IHsKICAgICAgICAgLy8gfHRoaXN8IGlzIGFscmVhZHkgZmlsbGVkIGNv
cnJlY3RseSBiZWZvcmUgaGVyZS4KICAgICAgICAgZW1pdExvYWQobV9uZXdUYXJnZXRSZWdpc3Rl
ciwganNVbmRlZmluZWQoKSk7CisKKyAgICAgICAgZW1pdE5ld0dlbmVyYXRvckZyYW1lKGdlbmVy
YXRvckZyYW1lUmVnaXN0ZXIoKSk7CisgICAgICAgIGVtaXRQdXRCeUlkKGdlbmVyYXRvclJlZ2lz
dGVyKCksIHByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JGcmFtZVByaXZh
dGVOYW1lKCksIGdlbmVyYXRvckZyYW1lUmVnaXN0ZXIoKSk7CiAgICAgICAgIGJyZWFrOwogICAg
IH0KIApAQCAtMzAyMSw2ICszMDMxLDIwIEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRT
ZXRGdW5jdGlvbk5hbWVJZk5lZWRlZChFeHByZXNzaW9uTm9kZSogdmFsdWVOb2RlLCBSCiAgICAg
aW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG5hbWUtPmluZGV4KCkpOwogfQogCitSZWdpc3RlcklEKiBC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0dlbmVyYXRvckZyYW1lKFJlZ2lzdGVySUQqIGRzdCkK
K3sKKyAgICBTeW1ib2xUYWJsZSogZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZSA9IFN5bWJvbFRh
YmxlOjpjcmVhdGUoKm1fdm0pOworICAgIFJlZ2lzdGVySUQqIGNvbnN0YW50U3ltYm9sVGFibGVS
ZWdpc3RlciA9IGFkZENvbnN0YW50VmFsdWUoZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZSk7Cisg
ICAgZW1pdE9wY29kZShvcF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudCk7CisgICAgaW5zdHJ1
Y3Rpb25zKCkuYXBwZW5kKGRzdC0+aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5k
KHNjb3BlUmVnaXN0ZXIoKS0+aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGNv
bnN0YW50U3ltYm9sVGFibGVSZWdpc3Rlci0+aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCku
YXBwZW5kKGFkZENvbnN0YW50VmFsdWUoanNVbmRlZmluZWQoKSktPmluZGV4KCkpOworICAgIG1f
Z2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZS5zZXQoKm1fdm0sIGdlbmVyYXRvckZyYW1lU3ltYm9s
VGFibGUpOworICAgIG1fZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZUluZGV4ID0gY29uc3RhbnRT
eW1ib2xUYWJsZVJlZ2lzdGVyLT5pbmRleCgpOworICAgIHJldHVybiBkc3Q7Cit9CisKIFJlZ2lz
dGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2FsbChSZWdpc3RlcklEKiBkc3QsIFJlZ2lz
dGVySUQqIGZ1bmMsIEV4cGVjdGVkRnVuY3Rpb24gZXhwZWN0ZWRGdW5jdGlvbiwgQ2FsbEFyZ3Vt
ZW50cyYgY2FsbEFyZ3VtZW50cywgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBK
U1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5k
KQogewogICAgIHJldHVybiBlbWl0Q2FsbChvcF9jYWxsLCBkc3QsIGZ1bmMsIGV4cGVjdGVkRnVu
Y3Rpb24sIGNhbGxBcmd1bWVudHMsIGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCk7CkBAIC0z
NjU4LDggKzM2ODIsNyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q29tcGxleFBvcFNj
b3BlcyhSZWdpc3RlcklEKiBzY29wZSwgQ29udHJvbEZsb3dDb250ZQogICAgICAgICAgICAgaWYg
KGZsaXBUcmllcykgewogICAgICAgICAgICAgICAgIHdoaWxlIChtX3RyeUNvbnRleHRTdGFjay5z
aXplKCkgIT0gZmluYWxseUNvbnRleHQudHJ5Q29udGV4dFN0YWNrU2l6ZSkgewogICAgICAgICAg
ICAgICAgICAgICBBU1NFUlQobV90cnlDb250ZXh0U3RhY2suc2l6ZSgpID4gZmluYWxseUNvbnRl
eHQudHJ5Q29udGV4dFN0YWNrU2l6ZSk7Ci0gICAgICAgICAgICAgICAgICAgIFRyeUNvbnRleHQg
Y29udGV4dCA9IG1fdHJ5Q29udGV4dFN0YWNrLmxhc3QoKTsKLSAgICAgICAgICAgICAgICAgICAg
bV90cnlDb250ZXh0U3RhY2sucmVtb3ZlTGFzdCgpOworICAgICAgICAgICAgICAgICAgICBUcnlD
b250ZXh0IGNvbnRleHQgPSBtX3RyeUNvbnRleHRTdGFjay50YWtlTGFzdCgpOwogICAgICAgICAg
ICAgICAgICAgICBUcnlSYW5nZSByYW5nZTsKICAgICAgICAgICAgICAgICAgICAgcmFuZ2Uuc3Rh
cnQgPSBjb250ZXh0LnN0YXJ0OwogICAgICAgICAgICAgICAgICAgICByYW5nZS5lbmQgPSBiZWZv
cmVGaW5hbGx5OwpAQCAtMzk0Myw3ICszOTY2LDcgQEAgc3RhdGljIHZvaWQgcHJlcGFyZUp1bXBU
YWJsZUZvclN0cmluZ1N3aXRjaChVbmxpbmtlZFN0cmluZ0p1bXBUYWJsZSYganVtcFRhYmxlLAog
ICAgICAgICAKICAgICAgICAgQVNTRVJUKG5vZGVzW2ldLT5pc1N0cmluZygpKTsKICAgICAgICAg
U3RyaW5nSW1wbCogY2xhdXNlID0gc3RhdGljX2Nhc3Q8U3RyaW5nTm9kZSo+KG5vZGVzW2ldKS0+
dmFsdWUoKS5pbXBsKCk7Ci0gICAgICAgIGp1bXBUYWJsZS5vZmZzZXRUYWJsZS5hZGQoY2xhdXNl
LCBsYWJlbHNbaV0tPmJpbmQoc3dpdGNoQWRkcmVzcywgc3dpdGNoQWRkcmVzcyArIDMpKTsKKyAg
ICAgICAganVtcFRhYmxlLm9mZnNldFRhYmxlLmFkZChjbGF1c2UsIFVubGlua2VkU3RyaW5nSnVt
cFRhYmxlOjpPZmZzZXRMb2NhdGlvbiB7IGxhYmVsc1tpXS0+YmluZChzd2l0Y2hBZGRyZXNzLCBz
d2l0Y2hBZGRyZXNzICsgMykgfSk7CiAgICAgfQogfQogCkBAIC00NDUxLDE2ICs0NDc0LDM2IEBA
IHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRZaWVsZFBvaW50KFJlZ2lzdGVySUQqIGFyZ3Vt
ZW50KQogICAgIGVtaXRHZW5lcmF0b3JTdGF0ZUNoYW5nZSh5aWVsZFBvaW50SW5kZXgpOwogICAg
IC8vIEZpcnN0IHlpZWxkIHBvaW50IGlzIHVzZWQgZm9yIGluaXRpYWwgc2VxdWVuY2UuCiAgICAg
dW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0geWllbGRQb2ludEluZGV4IC0gMTsKKwor
ICAgIC8vIFNwbGl0IHRoZSB0cnkgcmFuZ2UgaGVyZS4KKyAgICBSZWZQdHI8TGFiZWw+IHNhdmVQ
b2ludCA9IGVtaXRMYWJlbChuZXdMYWJlbCgpLmdldCgpKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkg
PSBtX3RyeUNvbnRleHRTdGFjay5zaXplKCk7IGktLTspIHsKKyAgICAgICAgVHJ5Q29udGV4dCYg
Y29udGV4dCA9IG1fdHJ5Q29udGV4dFN0YWNrW2ldOworICAgICAgICBUcnlSYW5nZSByYW5nZTsK
KyAgICAgICAgcmFuZ2Uuc3RhcnQgPSBjb250ZXh0LnN0YXJ0OworICAgICAgICByYW5nZS5lbmQg
PSBzYXZlUG9pbnQ7CisgICAgICAgIHJhbmdlLnRyeURhdGEgPSBjb250ZXh0LnRyeURhdGE7Cisg
ICAgICAgIG1fdHJ5UmFuZ2VzLmFwcGVuZChyYW5nZSk7CisKKyAgICAgICAgLy8gVHJ5IHJhbmdl
IHdpbGwgYmUgcmVzdGFyZWQgYXQgdGhlIG1lcmdlIHBvaW50LgorICAgICAgICBjb250ZXh0LnN0
YXJ0ID0gbWVyZ2VQb2ludDsKKyAgICB9CisgICAgVmVjdG9yPFRyeUNvbnRleHQ+IHNhdmVkVHJ5
Q29udGV4dFN0YWNrOworICAgIG1fdHJ5Q29udGV4dFN0YWNrLnN3YXAoc2F2ZWRUcnlDb250ZXh0
U3RhY2spOworCiAgICAgZW1pdFNhdmUobWVyZ2VQb2ludC5nZXQoKSwgbGl2ZUNhbGxlZUxvY2Fs
c0luZGV4KTsKICAgICBlbWl0UmV0dXJuKGFyZ3VtZW50KTsKICAgICBlbWl0UmVzdW1lKG1lcmdl
UG9pbnQuZ2V0KCksIGxpdmVDYWxsZWVMb2NhbHNJbmRleCk7CisKKyAgICAvLyBSZXN0b3JlIHRo
ZSB0cnkgY29udGV4dHMsIHdoaWNoIHN0YXJ0IG9mZnNldCBpcyB1cGRhdGVkIHRvIHRoZSBtZXJn
ZSBwb2ludC4KKyAgICBtX3RyeUNvbnRleHRTdGFjay5zd2FwKHNhdmVkVHJ5Q29udGV4dFN0YWNr
KTsKIH0KIAogdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFNhdmUoTGFiZWwqIG1lcmdlUG9p
bnQsIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCkKIHsKICAgICBzaXplX3QgYmVnaW4g
PSBpbnN0cnVjdGlvbnMoKS5zaXplKCk7CiAgICAgZW1pdE9wY29kZShvcF9zYXZlKTsKLSAgICBp
bnN0cnVjdGlvbnMoKS5hcHBlbmQobV9nZW5lcmF0b3JSZWdpc3Rlci0+aW5kZXgoKSk7CisgICAg
aW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGdlbmVyYXRvckZyYW1lUmVnaXN0ZXIoKS0+aW5kZXgoKSk7
CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGxpdmVDYWxsZWVMb2NhbHNJbmRleCk7CiAgICAg
aW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1lcmdlUG9pbnQtPmJpbmQoYmVnaW4sIGluc3RydWN0aW9u
cygpLnNpemUoKSkpOwogfQpAQCAtNDQ2OSw3ICs0NTEyLDcgQEAgdm9pZCBCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdFJlc3VtZShMYWJlbCogbWVyZ2VQb2ludCwgdW5zaWduZWQgbGl2ZUNhbGxlZUxv
Y2Fsc0kKIHsKICAgICBlbWl0R2VuZXJhdG9yU3RhdGVMYWJlbCgpOwogICAgIGVtaXRPcGNvZGUo
b3BfcmVzdW1lKTsKLSAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobV9nZW5lcmF0b3JSZWdpc3Rl
ci0+aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGdlbmVyYXRvckZyYW1lUmVn
aXN0ZXIoKS0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGxpdmVDYWxsZWVM
b2NhbHNJbmRleCk7CiAgICAgZW1pdExhYmVsKG1lcmdlUG9pbnQpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmlu
ZGV4IDUyYjMxYzFiNzZhYzAzN2U1NTJlYWZkNjlkOTQxNjJiODM5NGY1NWQuLmNiZGNjYzk1OGE4
MDkzMWUxN2Y3NWE0MGYxN2EyYTgxYzhmZjAzMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTUzMyw2ICs1
MzMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdE5ld0Fycm93
RnVuY3Rpb25FeHByZXNzaW9uKFJlZ2lzdGVySUQqLCBBcnJvd0Z1bmNFeHByTm9kZSopOwogICAg
ICAgICBSZWdpc3RlcklEKiBlbWl0TmV3TWV0aG9kRGVmaW5pdGlvbihSZWdpc3RlcklEKiBkc3Qs
IE1ldGhvZERlZmluaXRpb25Ob2RlKik7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdSZWdF
eHAoUmVnaXN0ZXJJRCogZHN0LCBSZWdFeHAqKTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdE5l
d0dlbmVyYXRvckZyYW1lKFJlZ2lzdGVySUQqIGRzdCk7CiAKICAgICAgICAgdm9pZCBlbWl0U2V0
RnVuY3Rpb25OYW1lSWZOZWVkZWQoRXhwcmVzc2lvbk5vZGUqIHZhbHVlTm9kZSwgUmVnaXN0ZXJJ
RCogdmFsdWUsIFJlZ2lzdGVySUQqIG5hbWUpOwogCkBAIC03MDUsNiArNzA2LDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIFJlZ2lzdGVySUQqIGdlbmVyYXRvclN0YXRlUmVnaXN0ZXIoKSB7
IHJldHVybiAmbV9wYXJhbWV0ZXJzWzJdOyB9CiAgICAgICAgIFJlZ2lzdGVySUQqIGdlbmVyYXRv
clZhbHVlUmVnaXN0ZXIoKSB7IHJldHVybiAmbV9wYXJhbWV0ZXJzWzNdOyB9CiAgICAgICAgIFJl
Z2lzdGVySUQqIGdlbmVyYXRvclJlc3VtZU1vZGVSZWdpc3RlcigpIHsgcmV0dXJuICZtX3BhcmFt
ZXRlcnNbNF07IH0KKyAgICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9yRnJhbWVSZWdpc3Rlcigp
IHsgcmV0dXJuICZtX3BhcmFtZXRlcnNbNV07IH0KIAogICAgICAgICBDb2RlVHlwZSBjb2RlVHlw
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZVR5cGU7IH0KIApAQCAtOTMyLDYgKzkzNCwxMCBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgVmVjdG9yPFJlZlB0cjxGb3JJbkNvbnRleHQ+PiBtX2Zv
ckluQ29udGV4dFN0YWNrOwogICAgICAgICBWZWN0b3I8VHJ5Q29udGV4dD4gbV90cnlDb250ZXh0
U3RhY2s7CiAgICAgICAgIFZlY3RvcjxSZWZQdHI8TGFiZWw+PiBtX2dlbmVyYXRvclJlc3VtZUxh
YmVsczsKKworICAgICAgICBTdHJvbmc8U3ltYm9sVGFibGU+IG1fZ2VuZXJhdG9yRnJhbWVTeW1i
b2xUYWJsZTsKKyAgICAgICAgaW50IG1fZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZUluZGV4IHsg
MCB9OworCiAgICAgICAgIGVudW0gRnVuY3Rpb25WYXJpYWJsZVR5cGUgOiB1aW50OF90IHsgTm9y
bWFsRnVuY3Rpb25WYXJpYWJsZSwgR2xvYmFsRnVuY3Rpb25WYXJpYWJsZSB9OwogICAgICAgICBW
ZWN0b3I8c3RkOjpwYWlyPEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiwgRnVuY3Rpb25WYXJpYWJsZVR5
cGU+PiBtX2Z1bmN0aW9uc1RvSW5pdGlhbGl6ZTsKICAgICAgICAgYm9vbCBtX25lZWRUb0luaXRp
YWxpemVBcmd1bWVudHMgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T3BlcmF0aW9ucy5jcHAKaW5kZXggNjlhMTZlYjVkYTQzNTViYzc5MjVjNWRmZGNiMDYyMDIzZTk5
NjUwMi4uYzQ1NzIzYjE5MDEzMjAyNWRmY2UzMjZmNjAxNWVjYTZjZTU4ZDcxYSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCkBAIC00Miw4ICs0Miw4IEBA
CiAjaW5jbHVkZSAiRGlyZWN0QXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiRlRMRm9yT1NSRW50cnlK
SVRDb2RlLmgiCiAjaW5jbHVkZSAiRlRMT1NSRW50cnkuaCIKLSNpbmNsdWRlICJIb3N0Q2FsbFJl
dHVyblZhbHVlLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCisjaW5jbHVkZSAiSG9zdENh
bGxSZXR1cm5WYWx1ZS5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSklU
LmgiCiAjaW5jbHVkZSAiSklURXhjZXB0aW9ucy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2dlbmVyYXRlLWJ5dGVjb2RlLWZpbGVzIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2dlbmVyYXRlLWJ5dGVjb2RlLWZpbGVzCmluZGV4IDU2NjZhM2Y5MjRjMTE5YjIxNmQzZmYwZmZl
OWM2NzJiN2M3MWJiNzkuLmZhY2ZkZjEzMzE0ODcwN2EzMzM1MzU3NjJiZTc4MzA0YzRiNTBiMWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0ZS1ieXRlY29kZS1maWxl
cworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdGUtYnl0ZWNvZGUtZmlsZXMKQEAg
LTE4Nyw2ICsxODcsNyBAQCBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgICAgICAgICAg
ICAgIGRlZmF1bHRMZW5ndGggPSBzZWN0aW9uWyJkZWZhdWx0TGVuZ3RoIl0KIAogICAgICAgICAg
ICAgYnl0ZWNvZGVOdW0gPSAwCisgICAgICAgICAgICBtYXhMZW5ndGggPSAwCiAgICAgICAgICAg
ICBmb3IgYnl0ZWNvZGUgaW4gc2VjdGlvblsiYnl0ZWNvZGVzIl06CiAgICAgICAgICAgICAgICAg
aWYgbm90IGZpcnN0TWFjcm86CiAgICAgICAgICAgICAgICAgICAgIGJ5dGVjb2RlSEZpbGUud3Jp
dGUoIiBcXFxuIikKQEAgLTE5NCw2ICsxOTUsNyBAQCBpZiBfX25hbWVfXyA9PSAiX19tYWluX18i
OgogICAgICAgICAgICAgICAgIGxlbmd0aCA9IGRlZmF1bHRMZW5ndGgKICAgICAgICAgICAgICAg
ICBpZiAibGVuZ3RoIiBpbiBieXRlY29kZToKICAgICAgICAgICAgICAgICAgICAgbGVuZ3RoID0g
Ynl0ZWNvZGVbImxlbmd0aCJdCisgICAgICAgICAgICAgICAgICAgIG1heExlbmd0aCA9IG1heChb
bGVuZ3RoLCBtYXhMZW5ndGhdKQogCiAgICAgICAgICAgICAgICAgYnl0ZWNvZGVIRmlsZS53cml0
ZSgiICAgIG1hY3JvKHswfSwgezF9KSIuZm9ybWF0KGJ5dGVjb2RlWyJuYW1lIl0sIGxlbmd0aCkp
CiAgICAgICAgICAgICAgICAgZmlyc3RNYWNybyA9IEZhbHNlCkBAIC0yMDEsNiArMjAzLDcgQEAg
aWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKIAogICAgICAgICAgICAgYnl0ZWNvZGVIRmlsZS53
cml0ZSgiXG5cbiIpCiAgICAgICAgICAgICBieXRlY29kZUhGaWxlLndyaXRlKCIjZGVmaW5lIE5V
TUJFUl9PRl97MH1fSURTIHsxfVxuXG4iLmZvcm1hdChzZWN0aW9uWyJtYWNyb05hbWVDb21wb25l
bnQiXSwgYnl0ZWNvZGVOdW0pKQorICAgICAgICAgICAgYnl0ZWNvZGVIRmlsZS53cml0ZSgiI2Rl
ZmluZSBNQVhfT1BDT0RFX0xFTkdUSF9PRl97MH0gezF9XG5cbiIuZm9ybWF0KHNlY3Rpb25bIm1h
Y3JvTmFtZUNvbXBvbmVudCJdLCBtYXhMZW5ndGgpKQogCiAgICAgICAgIGlmIGluaXRBU01GaWxl
TmFtZSBhbmQgc2VjdGlvblsnZW1pdEluQVNNRmlsZSddOgogICAgICAgICAgICAgcHJlZml4ID0g
IiIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnBy
ZXRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIu
Y3BwCmluZGV4IDdkNDdlY2RjM2Q2MGZjMWE4YzQyMTZiM2QzYTgxNDIyNGMxOWMyNjcuLmYzOWRi
ZTMwMzQwMWJjNDIyYTAwYmI3ZjRjNjFjOWY1NWU1ZTUzNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcApAQCAtNjA3LDcgKzYwNyw3
IEBAIEpTU3RyaW5nKiBJbnRlcnByZXRlcjo6c3RhY2tUcmFjZUFzU3RyaW5nKFZNJiB2bSwgY29u
c3QgVmVjdG9yPFN0YWNrRnJhbWU+JiBzdGFjCiAgICAgcmV0dXJuIGpzU3RyaW5nKCZ2bSwgYnVp
bGRlci50b1N0cmluZygpKTsKIH0KIAotQUxXQVlTX0lOTElORSBzdGF0aWMgSGFuZGxlckluZm8q
IGZpbmRFeGNlcHRpb25IYW5kbGVyKFN0YWNrVmlzaXRvciYgdmlzaXRvciwgQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIENvZGVCbG9jazo6UmVxdWlyZWRIYW5kbGVyIHJlcXVpcmVkSGFuZGxlcikKK0FM
V0FZU19JTkxJTkUgc3RhdGljIEhhbmRsZXJJbmZvKiBmaW5kRXhjZXB0aW9uSGFuZGxlcihTdGFj
a1Zpc2l0b3ImIHZpc2l0b3IsIENvZGVCbG9jayogY29kZUJsb2NrLCBSZXF1aXJlZEhhbmRsZXIg
cmVxdWlyZWRIYW5kbGVyKQogewogICAgIEFTU0VSVChjb2RlQmxvY2spOwogI2lmIEVOQUJMRShE
RkdfSklUKQpAQCAtNjQxLDcgKzY0MSw3IEBAIGNsYXNzIEdldENhdGNoSGFuZGxlckZ1bmN0b3Ig
ewogICAgICAgICBpZiAoIWNvZGVCbG9jaykKICAgICAgICAgICAgIHJldHVybiBTdGFja1Zpc2l0
b3I6OkNvbnRpbnVlOwogCi0gICAgICAgIG1faGFuZGxlciA9IGZpbmRFeGNlcHRpb25IYW5kbGVy
KHZpc2l0b3IsIGNvZGVCbG9jaywgQ29kZUJsb2NrOjpSZXF1aXJlZEhhbmRsZXI6OkNhdGNoSGFu
ZGxlcik7CisgICAgICAgIG1faGFuZGxlciA9IGZpbmRFeGNlcHRpb25IYW5kbGVyKHZpc2l0b3Is
IGNvZGVCbG9jaywgUmVxdWlyZWRIYW5kbGVyOjpDYXRjaEhhbmRsZXIpOwogICAgICAgICBpZiAo
bV9oYW5kbGVyKQogICAgICAgICAgICAgcmV0dXJuIFN0YWNrVmlzaXRvcjo6RG9uZTsKIApAQCAt
NjgzLDcgKzY4Myw3IEBAIGNsYXNzIFVud2luZEZ1bmN0b3IgewogICAgICAgICBtX2hhbmRsZXIg
PSBudWxscHRyOwogICAgICAgICBpZiAoIW1faXNUZXJtaW5hdGlvbikgewogICAgICAgICAgICAg
aWYgKG1fY29kZUJsb2NrICYmICFpc1dlYkFzc2VtYmx5RXhlY3V0YWJsZShtX2NvZGVCbG9jay0+
b3duZXJFeGVjdXRhYmxlKCkpKQotICAgICAgICAgICAgICAgIG1faGFuZGxlciA9IGZpbmRFeGNl
cHRpb25IYW5kbGVyKHZpc2l0b3IsIG1fY29kZUJsb2NrLCBDb2RlQmxvY2s6OlJlcXVpcmVkSGFu
ZGxlcjo6QW55SGFuZGxlcik7CisgICAgICAgICAgICAgICAgbV9oYW5kbGVyID0gZmluZEV4Y2Vw
dGlvbkhhbmRsZXIodmlzaXRvciwgbV9jb2RlQmxvY2ssIFJlcXVpcmVkSGFuZGxlcjo6QW55SGFu
ZGxlcik7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAobV9oYW5kbGVyKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVQuY3BwCmluZGV4IGJlMzQ4NWNhOTk1NzE3MTEyNzIzYjE4NTUwNDM4YWNiMjcwMDQw
ZTEuLjcxMzliMzNhYTUyNDFhMTkzNWNiMjE0NTUyYWUwZDkwOWIyMmVjMWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVC5jcHAKQEAgLTIzNSw4ICsyMzUsNiBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNv
bXBpbGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9PUChvcF9nZXRfcmVzdF9sZW5ndGgpCiAg
ICAgICAgIERFRklORV9PUChvcF9jaGVja190ZHopCiAgICAgICAgIERFRklORV9PUChvcF9hc3Nl
cnQpCi0gICAgICAgIERFRklORV9PUChvcF9zYXZlKQotICAgICAgICBERUZJTkVfT1Aob3BfcmVz
dW1lKQogICAgICAgICBERUZJTkVfT1Aob3BfZGVidWcpCiAgICAgICAgIERFRklORV9PUChvcF9k
ZWxfYnlfaWQpCiAgICAgICAgIERFRklORV9PUChvcF9kZWxfYnlfdmFsKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklULmgKaW5kZXggYzEzMzczNDA2YTkxNWVjMTcwOTIzYzgxNDViZWZiOTk4ZDQxYTA4NS4u
NTlmMmRjNGIzNjU1MTQ2OTg1ODcyMmRkZTViNzYwY2ViZjFiMDZlZCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVC5oCkBAIC01MDIsOCArNTAyLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZv
aWQgZW1pdF9vcF9nZXRfcmVzdF9sZW5ndGgoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBl
bWl0X29wX2NoZWNrX3RkeihJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfYXNz
ZXJ0KEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9zYXZlKEluc3RydWN0aW9u
Kik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9yZXN1bWUoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAg
dm9pZCBlbWl0X29wX2RlYnVnKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9k
ZWxfYnlfaWQoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2RlbF9ieV92YWwo
SW5zdHJ1Y3Rpb24qKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3Bjb2Rlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCmlu
ZGV4IGQ1NTc3OGQyNTg2ZmExN2NmNDU0ZjMwMjQ1ZjQ3MzI3ZDA2MTU5MmEuLjI4MTNlY2IxYzA3
YmFjNWFmY2RlM2M3ODk3NWEwN2ZmYzc0MTM0NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGNvZGVzLmNwcApAQCAtMTQ4NiwxOCArMTQ4Niw2IEBAIHZvaWQgSklUOjplbWl0X29w
X2dldF9yZXN0X2xlbmd0aChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogI2VuZGlm
CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX3NhdmUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKLXsKLSAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJ
bnN0cnVjdGlvbiwgc2xvd19wYXRoX3NhdmUpOwotICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7Ci19
Ci0KLXZvaWQgSklUOjplbWl0X29wX3Jlc3VtZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQotewotICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudElu
c3RydWN0aW9uLCBzbG93X3BhdGhfcmVzdW1lKTsKLSAgICBzbG93UGF0aENhbGwuY2FsbCgpOwot
fQotCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEVOQUJMRShKSVQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCmluZGV4IDlkMTM0
NGUxNWNjZTY1NDFkZGMzZTUyYWE5NTdmNjhhMjE4MDZlMTMuLjhmZmFiOTdmZTQ2YTJiZTI1YzM5
NzdiODRhOGY3OTU4MjQ1MjMxNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUUHJvcGVydHlBY2Nlc3MuY3BwCkBAIC0xMTczLDcgKzExNzMsNyBAQCB2b2lkIEpJVDo6ZW1p
dFdyaXRlQmFycmllcih1bnNpZ25lZCBvd25lciwgdW5zaWduZWQgdmFsdWUsIFdyaXRlQmFycmll
ck1vZGUgbW9kZQogICAgICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHZhbHVlLCByZWdUMCk7
CiAgICAgICAgIHZhbHVlTm90Q2VsbCA9IGJyYW5jaFRlc3Q2NChOb25aZXJvLCByZWdUMCwgdGFn
TWFza1JlZ2lzdGVyKTsKICAgICB9Ci0gICAgCisKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVy
KG93bmVyLCByZWdUMCk7CiAgICAgSnVtcCBvd25lck5vdENlbGw7CiAgICAgaWYgKG1vZGUgPT0g
U2hvdWxkRmlsdGVyQmFzZUFuZFZhbHVlIHx8IG1vZGUgPT0gU2hvdWxkRmlsdGVyQmFzZSkKQEAg
LTExODUsNiArMTE4NSw3IEBAIHZvaWQgSklUOjplbWl0V3JpdGVCYXJyaWVyKHVuc2lnbmVkIG93
bmVyLCB1bnNpZ25lZCB2YWx1ZSwgV3JpdGVCYXJyaWVyTW9kZSBtb2RlCiAKICAgICBpZiAobW9k
ZSA9PSBTaG91bGRGaWx0ZXJCYXNlQW5kVmFsdWUgfHwgbW9kZSA9PSBTaG91bGRGaWx0ZXJCYXNl
KQogICAgICAgICBvd25lck5vdENlbGwubGluayh0aGlzKTsKKwogICAgIGlmIChtb2RlID09IFNo
b3VsZEZpbHRlclZhbHVlIHx8IG1vZGUgPT0gU2hvdWxkRmlsdGVyQmFzZUFuZFZhbHVlKSAKICAg
ICAgICAgdmFsdWVOb3RDZWxsLmxpbmsodGhpcyk7CiB9CkBAIC0xMjExLDcgKzEyMTIsNyBAQCB2
b2lkIEpJVDo6ZW1pdFdyaXRlQmFycmllcih1bnNpZ25lZCBvd25lciwgdW5zaWduZWQgdmFsdWUs
IFdyaXRlQmFycmllck1vZGUgbW9kZQogICAgICAgICBlbWl0TG9hZFRhZyh2YWx1ZSwgcmVnVDAp
OwogICAgICAgICB2YWx1ZU5vdENlbGwgPSBicmFuY2gzMihOb3RFcXVhbCwgcmVnVDAsIFRydXN0
ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSk7CiAgICAgfQotICAgIAorCiAgICAgZW1pdExvYWQo
b3duZXIsIHJlZ1QwLCByZWdUMSk7CiAgICAgSnVtcCBvd25lck5vdENlbGw7CiAgICAgaWYgKG1v
ZGUgPT0gU2hvdWxkRmlsdGVyQmFzZSB8fCBtb2RlID09IFNob3VsZEZpbHRlckJhc2VBbmRWYWx1
ZSkKQEAgLTEyMjMsNyArMTIyNCw3IEBAIHZvaWQgSklUOjplbWl0V3JpdGVCYXJyaWVyKHVuc2ln
bmVkIG93bmVyLCB1bnNpZ25lZCB2YWx1ZSwgV3JpdGVCYXJyaWVyTW9kZSBtb2RlCiAKICAgICBp
ZiAobW9kZSA9PSBTaG91bGRGaWx0ZXJCYXNlIHx8IG1vZGUgPT0gU2hvdWxkRmlsdGVyQmFzZUFu
ZFZhbHVlKQogICAgICAgICBvd25lck5vdENlbGwubGluayh0aGlzKTsKLSAgICBpZiAobW9kZSA9
PSBTaG91bGRGaWx0ZXJWYWx1ZSB8fCBtb2RlID09IFNob3VsZEZpbHRlckJhc2VBbmRWYWx1ZSkg
CisgICAgaWYgKG1vZGUgPT0gU2hvdWxkRmlsdGVyVmFsdWUgfHwgbW9kZSA9PSBTaG91bGRGaWx0
ZXJCYXNlQW5kVmFsdWUpCiAgICAgICAgIHZhbHVlTm90Q2VsbC5saW5rKHRoaXMpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
ci5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5h
c20KaW5kZXggMmE3NWM4MzdjODU4ZWY4ODgwYTk5ODEzOTE4ZjcyZjgxNjFjZWM2NS4uNjk4NmY4
MTEyNjYyNjMxY2M0N2QwNTUyYzgzZmM3OWQ5OGI4MTBmZCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQpAQCAtMTY1MSwxNSAr
MTY1MSwxMSBAQCBfbGxpbnRfb3BfYXNzZXJ0OgogCiAKIF9sbGludF9vcF9zYXZlOgotICAgIHRy
YWNlRXhlY3V0aW9uKCkKLSAgICBjYWxsT3Bjb2RlU2xvd1BhdGgoX3Nsb3dfcGF0aF9zYXZlKQot
ICAgIGRpc3BhdGNoKDQpCisgICAgbm90U3VwcG9ydGVkKCkKIAogCiBfbGxpbnRfb3BfcmVzdW1l
OgotICAgIHRyYWNlRXhlY3V0aW9uKCkKLSAgICBjYWxsT3Bjb2RlU2xvd1BhdGgoX3Nsb3dfcGF0
aF9yZXN1bWUpCi0gICAgZGlzcGF0Y2goMykKKyAgICBub3RTdXBwb3J0ZWQoKQogCiAKIF9sbGlu
dF9vcF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvUGFyc2VyLmNwcAppbmRleCAzYWQwZDJmZmVmZWE2YWEwMGUyNzcxYmY5ODE2M2I1ZDRkOGEy
MDhmLi5hMzE5NTM3ZjgzZTYzZWM0NDFkYzU4MzZkZWNlMzhkYmVkNDIyMjRjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCkBAIC0yNTYsNyArMjU2LDcgQEAgU3RyaW5n
IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUlubmVyKGNvbnN0IElkZW50aWZpZXImIGNhbGxlZU5h
bWUsIFNvdXJjZVBhcnNlTW8KICAgICBpZiAobV9sZXhlci0+aXNSZXBhcnNpbmdGdW5jdGlvbigp
KSB7CiAgICAgICAgIFBhcnNlckZ1bmN0aW9uSW5mbzxBU1RCdWlsZGVyPiBmdW5jdGlvbkluZm87
CiAgICAgICAgIGlmIChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JCb2R5
TW9kZSkKLSAgICAgICAgICAgIG1fcGFyYW1ldGVycyA9IGNyZWF0ZUdlbmVyYXRvclBhcmFtZXRl
cnMoY29udGV4dCk7CisgICAgICAgICAgICBtX3BhcmFtZXRlcnMgPSBjcmVhdGVHZW5lcmF0b3JQ
YXJhbWV0ZXJzKGNvbnRleHQsIGZ1bmN0aW9uSW5mby5wYXJhbWV0ZXJDb3VudCk7CiAgICAgICAg
IGVsc2UKICAgICAgICAgICAgIG1fcGFyYW1ldGVycyA9IHBhcnNlRnVuY3Rpb25QYXJhbWV0ZXJz
KGNvbnRleHQsIHBhcnNlTW9kZSwgZnVuY3Rpb25JbmZvKTsKIApAQCAtNTA2LDEwICs1MDYsOSBA
QCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTb3VyY2VFbGVtZW50cyBQYXJzZXI8
TGV4ZXJUeXBlPjo6cGFyc2VHZW5lcmF0bwogCiAgICAgUGFyc2VyRnVuY3Rpb25JbmZvPFRyZWVC
dWlsZGVyPiBpbmZvOwogICAgIGluZm8ubmFtZSA9ICZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5udWxs
SWRlbnRpZmllcjsKLSAgICBjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKGNvbnRleHQpOworICAg
IGNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMoY29udGV4dCwgaW5mby5wYXJhbWV0ZXJDb3VudCk7
CiAgICAgaW5mby5zdGFydE9mZnNldCA9IHBhcmFtZXRlcnNTdGFydDsKICAgICBpbmZvLnN0YXJ0
TGluZSA9IHRva2VuTGluZSgpOwotICAgIGluZm8ucGFyYW1ldGVyQ291bnQgPSA0OyAvLyBnZW5l
cmF0b3IsIHN0YXRlLCB2YWx1ZSwgcmVzdW1lIG1vZGUKIAogICAgIHsKICAgICAgICAgQXV0b1Bv
cFNjb3BlUmVmIGdlbmVyYXRvckJvZHlTY29wZSh0aGlzLCBwdXNoU2NvcGUoKSk7CkBAIC0xODk4
LDMyICsxODk3LDMwIEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+IHRlbXBsYXRlIDxj
bGFzcyBUcmVlQnVpbGRlciwgY2xhc3MgRnVuY3Rpb25JbmZvVHlwCiB9CiAKIHRlbXBsYXRlIDx0
eXBlbmFtZSBMZXhlclR5cGU+Ci10ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IHR5cGVuYW1l
IFRyZWVCdWlsZGVyOjpGb3JtYWxQYXJhbWV0ZXJMaXN0IFBhcnNlcjxMZXhlclR5cGU+OjpjcmVh
dGVHZW5lcmF0b3JQYXJhbWV0ZXJzKFRyZWVCdWlsZGVyJiBjb250ZXh0KQordGVtcGxhdGUgPGNs
YXNzIFRyZWVCdWlsZGVyPiB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6Rm9ybWFsUGFyYW1ldGVyTGlz
dCBQYXJzZXI8TGV4ZXJUeXBlPjo6Y3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhUcmVlQnVpbGRl
ciYgY29udGV4dCwgdW5zaWduZWQmIHBhcmFtZXRlckNvdW50KQogewogICAgIGF1dG8gcGFyYW1l
dGVycyA9IGNvbnRleHQuY3JlYXRlRm9ybWFsUGFyYW1ldGVyTGlzdCgpOwogCiAgICAgSlNUb2tl
bkxvY2F0aW9uIGxvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CiAgICAgSlNUZXh0UG9zaXRpb24g
cG9zaXRpb24gPSB0b2tlblN0YXJ0UG9zaXRpb24oKTsKIAotICAgIC8vIEBnZW5lcmF0b3IKLSAg
ICBkZWNsYXJlUGFyYW1ldGVyKCZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5n
ZW5lcmF0b3JQcml2YXRlTmFtZSgpKTsKLSAgICBhdXRvIGdlbmVyYXRvciA9IGNvbnRleHQuY3Jl
YXRlQmluZGluZ0xvY2F0aW9uKGxvY2F0aW9uLCBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5idWlsdGlu
TmFtZXMoKS5nZW5lcmF0b3JQcml2YXRlTmFtZSgpLCBwb3NpdGlvbiwgcG9zaXRpb24sIEFzc2ln
bm1lbnRDb250ZXh0OjpEZWNsYXJhdGlvblN0YXRlbWVudCk7Ci0gICAgY29udGV4dC5hcHBlbmRQ
YXJhbWV0ZXIocGFyYW1ldGVycywgZ2VuZXJhdG9yLCAwKTsKKyAgICBhdXRvIGFkZFBhcmFtZXRl
ciA9IFsmXShjb25zdCBJZGVudGlmaWVyJiBuYW1lKSB7CisgICAgICAgIGRlY2xhcmVQYXJhbWV0
ZXIoJm5hbWUpOworICAgICAgICBhdXRvIGJpbmRpbmcgPSBjb250ZXh0LmNyZWF0ZUJpbmRpbmdM
b2NhdGlvbihsb2NhdGlvbiwgbmFtZSwgcG9zaXRpb24sIHBvc2l0aW9uLCBBc3NpZ25tZW50Q29u
dGV4dDo6RGVjbGFyYXRpb25TdGF0ZW1lbnQpOworICAgICAgICBjb250ZXh0LmFwcGVuZFBhcmFt
ZXRlcihwYXJhbWV0ZXJzLCBiaW5kaW5nLCAwKTsKKyAgICAgICAgKytwYXJhbWV0ZXJDb3VudDsK
KyAgICB9OwogCisgICAgLy8gQGdlbmVyYXRvcgorICAgIGFkZFBhcmFtZXRlcihtX3ZtLT5wcm9w
ZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JQcml2YXRlTmFtZSgpKTsKICAgICAv
LyBAZ2VuZXJhdG9yU3RhdGUKLSAgICBkZWNsYXJlUGFyYW1ldGVyKCZtX3ZtLT5wcm9wZXJ0eU5h
bWVzLT5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JTdGF0ZVByaXZhdGVOYW1lKCkpOwotICAgIGF1
dG8gZ2VuZXJhdG9yU3RhdGUgPSBjb250ZXh0LmNyZWF0ZUJpbmRpbmdMb2NhdGlvbihsb2NhdGlv
biwgbV92bS0+cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yU3RhdGVQcml2
YXRlTmFtZSgpLCBwb3NpdGlvbiwgcG9zaXRpb24sIEFzc2lnbm1lbnRDb250ZXh0OjpEZWNsYXJh
dGlvblN0YXRlbWVudCk7Ci0gICAgY29udGV4dC5hcHBlbmRQYXJhbWV0ZXIocGFyYW1ldGVycywg
Z2VuZXJhdG9yU3RhdGUsIDApOwotCisgICAgYWRkUGFyYW1ldGVyKG1fdm0tPnByb3BlcnR5TmFt
ZXMtPmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclN0YXRlUHJpdmF0ZU5hbWUoKSk7CiAgICAgLy8g
QGdlbmVyYXRvclZhbHVlCi0gICAgZGVjbGFyZVBhcmFtZXRlcigmbV92bS0+cHJvcGVydHlOYW1l
cy0+YnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yVmFsdWVQcml2YXRlTmFtZSgpKTsKLSAgICBhdXRv
IGdlbmVyYXRvclZhbHVlID0gY29udGV4dC5jcmVhdGVCaW5kaW5nTG9jYXRpb24obG9jYXRpb24s
IG1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclZhbHVlUHJpdmF0
ZU5hbWUoKSwgcG9zaXRpb24sIHBvc2l0aW9uLCBBc3NpZ25tZW50Q29udGV4dDo6RGVjbGFyYXRp
b25TdGF0ZW1lbnQpOwotICAgIGNvbnRleHQuYXBwZW5kUGFyYW1ldGVyKHBhcmFtZXRlcnMsIGdl
bmVyYXRvclZhbHVlLCAwKTsKLQorICAgIGFkZFBhcmFtZXRlcihtX3ZtLT5wcm9wZXJ0eU5hbWVz
LT5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JWYWx1ZVByaXZhdGVOYW1lKCkpOwogICAgIC8vIEBn
ZW5lcmF0b3JSZXN1bWVNb2RlCi0gICAgZGVjbGFyZVBhcmFtZXRlcigmbV92bS0+cHJvcGVydHlO
YW1lcy0+YnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yUmVzdW1lTW9kZVByaXZhdGVOYW1lKCkpOwot
ICAgIGF1dG8gZ2VuZXJhdG9yUmVzdW1lTW9kZSA9IGNvbnRleHQuY3JlYXRlQmluZGluZ0xvY2F0
aW9uKGxvY2F0aW9uLCBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZW5lcmF0
b3JSZXN1bWVNb2RlUHJpdmF0ZU5hbWUoKSwgcG9zaXRpb24sIHBvc2l0aW9uLCBBc3NpZ25tZW50
Q29udGV4dDo6RGVjbGFyYXRpb25TdGF0ZW1lbnQpOwotICAgIGNvbnRleHQuYXBwZW5kUGFyYW1l
dGVyKHBhcmFtZXRlcnMsIGdlbmVyYXRvclJlc3VtZU1vZGUsIDApOworICAgIGFkZFBhcmFtZXRl
cihtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JSZXN1bWVNb2Rl
UHJpdmF0ZU5hbWUoKSk7CisgICAgLy8gQGdlbmVyYXRvckZyYW1lCisgICAgYWRkUGFyYW1ldGVy
KG1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvckZyYW1lUHJpdmF0
ZU5hbWUoKSk7CiAKICAgICByZXR1cm4gcGFyYW1ldGVyczsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1BhcnNlci5oCmluZGV4IDA1ZDM0YTcxODVlN2I0ZmJjZDAxMTk3YzBmYTU0MzBjZWQ0
NGQyYWEuLmQwY2M5OWYyN2Y1MDU3YmNkMGM3NWY4ODY0N2ZkZTdkZjg2NTgxNTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaApAQCAtMTQ0Miw3ICsxNDQyLDcgQEAgY2xhc3Mg
UGFyc2VyIHsKICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNBcnJvd0Z1bmN0aW9uUGFyYW1ldGVy
cygpOwogICAgIAogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlciwgY2xhc3MgRnVuY3Rp
b25JbmZvVHlwZT4gTkVWRVJfSU5MSU5FIHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpGb3JtYWxQYXJh
bWV0ZXJMaXN0IHBhcnNlRnVuY3Rpb25QYXJhbWV0ZXJzKFRyZWVCdWlsZGVyJiwgU291cmNlUGFy
c2VNb2RlLCBGdW5jdGlvbkluZm9UeXBlJik7Ci0gICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWls
ZGVyPiBORVZFUl9JTkxJTkUgdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkZvcm1hbFBhcmFtZXRlckxp
c3QgY3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhUcmVlQnVpbGRlciYpOworICAgIHRlbXBsYXRl
IDxjbGFzcyBUcmVlQnVpbGRlcj4gTkVWRVJfSU5MSU5FIHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpG
b3JtYWxQYXJhbWV0ZXJMaXN0IGNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMoVHJlZUJ1aWxkZXIm
LCB1bnNpZ25lZCYgcGFyYW1ldGVyQ291bnQpOwogCiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVC
dWlsZGVyPiBORVZFUl9JTkxJTkUgVHJlZUNsYXNzRXhwcmVzc2lvbiBwYXJzZUNsYXNzKFRyZWVC
dWlsZGVyJiwgRnVuY3Rpb25SZXF1aXJlbWVudHMsIFBhcnNlckNsYXNzSW5mbzxUcmVlQnVpbGRl
cj4mKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9u
U2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQ
YXRocy5jcHAKaW5kZXggYTE1Nzg5MTdlZmI2MWQ0NTEwYjI1MTBhY2Y4MjU1NDc2NTY2OGVhZi4u
NzQzNGEwZDBmZjFjZTc2MDgyMTE2NjVmNGU4NWY1ZmQxODRiMmM5ZSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCkBAIC0zNiw3ICsz
Niw2IEBACiAjaW5jbHVkZSAiRXJyb3IuaCIKICNpbmNsdWRlICJFcnJvckhhbmRsaW5nU2NvcGUu
aCIKICNpbmNsdWRlICJFeGNlcHRpb25GdXp6LmgiCi0jaW5jbHVkZSAiR2VuZXJhdG9yRnJhbWUu
aCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJIb3N0Q2FsbFJldHVyblZh
bHVlLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKQEAgLTcxNCwzOCArNzEzLDYgQEAgU0xP
V19QQVRIX0RFQ0woc2xvd19wYXRoX2Fzc2VydCkKICAgICBFTkQoKTsKIH0KIAotU0xPV19QQVRI
X0RFQ0woc2xvd19wYXRoX3NhdmUpCi17Ci0gICAgLy8gT25seSBzYXZlIHZhcmlhYmxlcyBhbmQg
dGVtcG9yYXJ5IHJlZ2lzdGVycy4gVGhlIHNjb3BlIHJlZ2lzdGVycyBhcmUgaW5jbHVkZWQgaW4g
dGhlbS4KLSAgICAvLyBCdXQgcGFyYW1ldGVycyBhcmUgbm90IGluY2x1ZGVkLiBCZWNhdXNlIHRo
ZSBnZW5lcmF0b3IgaW1wbGVtZW50YXRpb24gcmVwbGFjZXMgdGhlIHZhbHVlcyBvZiBwYXJhbWV0
ZXJzIG9uIGVhY2ggZ2VuZXJhdG9yLm5leHQoKSBjYWxsLgotICAgIEJFR0lOKCk7Ci0gICAgSlNW
YWx1ZSBnZW5lcmF0b3IgPSBPUCgxKS5qc1ZhbHVlKCk7Ci0gICAgR2VuZXJhdG9yRnJhbWUqIGZy
YW1lID0gbnVsbHB0cjsKLSAgICBKU1ZhbHVlIHZhbHVlID0gZ2VuZXJhdG9yLmdldChleGVjLCBl
eGVjLT5wcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yRnJhbWVQcml2YXRl
TmFtZSgpKTsKLSAgICBpZiAoIXZhbHVlLmlzTnVsbCgpKQotICAgICAgICBmcmFtZSA9IGpzQ2Fz
dDxHZW5lcmF0b3JGcmFtZSo+KHZhbHVlKTsKLSAgICBlbHNlIHsKLSAgICAgICAgLy8gRklYTUU6
IE9uY2UgSlNHZW5lcmF0b3Igc3BlY2lhbGl6ZWQgb2JqZWN0IGlzIGludHJvZHVjZWQsIHRoaXMg
R2VuZXJhdG9yRnJhbWUgc2hvdWxkIGJlIGVtYmVkZWQgaW50byBpdCB0byBhdm9pZCBhbGxvY2F0
aW9ucy4KLSAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE1MTU0NQotICAgICAgICBmcmFtZSA9IEdlbmVyYXRvckZyYW1lOjpjcmVhdGUoZXhlYy0+dm0o
KSwgIGV4ZWMtPmNvZGVCbG9jaygpLT5udW1DYWxsZWVMb2NhbHMoKSk7Ci0gICAgICAgIFB1dFBy
b3BlcnR5U2xvdCBzbG90KGdlbmVyYXRvciwgdHJ1ZSwgUHV0UHJvcGVydHlTbG90OjpQdXRCeUlk
KTsKLSAgICAgICAgYXNPYmplY3QoZ2VuZXJhdG9yKS0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSkt
PnB1dChhc09iamVjdChnZW5lcmF0b3IpLCBleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuYnVp
bHRpbk5hbWVzKCkuZ2VuZXJhdG9yRnJhbWVQcml2YXRlTmFtZSgpLCBmcmFtZSwgc2xvdCk7Ci0g
ICAgfQotICAgIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9IHBjWzJdLnUudW5zaWdu
ZWRWYWx1ZTsKLSAgICBmcmFtZS0+c2F2ZShleGVjLCBleGVjLT5jb2RlQmxvY2soKS0+bGl2ZUNh
bGxlZUxvY2Fsc0F0WWllbGQobGl2ZUNhbGxlZUxvY2Fsc0luZGV4KSk7Ci0gICAgRU5EKCk7Ci19
Ci0KLVNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9yZXN1bWUpCi17Ci0gICAgQkVHSU4oKTsKLSAg
ICBKU1ZhbHVlIGdlbmVyYXRvciA9IE9QKDEpLmpzVmFsdWUoKTsKLSAgICBHZW5lcmF0b3JGcmFt
ZSogZnJhbWUgPSBqc0Nhc3Q8R2VuZXJhdG9yRnJhbWUqPihnZW5lcmF0b3IuZ2V0KGV4ZWMsIGV4
ZWMtPnByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JGcmFtZVByaXZhdGVO
YW1lKCkpKTsKLSAgICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSBwY1syXS51LnVu
c2lnbmVkVmFsdWU7Ci0gICAgZnJhbWUtPnJlc3VtZShleGVjLCBleGVjLT5jb2RlQmxvY2soKS0+
bGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQobGl2ZUNhbGxlZUxvY2Fsc0luZGV4KSk7Ci0gICAgRU5E
KCk7Ci19Ci0KIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9u
bWVudCkKIHsKICAgICBCRUdJTigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21tb25TbG93UGF0aHMuaAppbmRleCA1MGI1ZTFlZTQ0ZGJlYWYwOWZlZmY4MzBlYzRjOTRh
MGQyMDA3MmJlLi45OGU1NWRhZjAzNGQyZGM4MjA1YzUyN2RlMGRkMjIyZTU2OTkwOGU4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaApAQCAt
MjQ2LDggKzI0Niw2IEBAIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfbmV4dF9nZW5l
cmljX2VudW1lcmF0b3JfcG5hbWUpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF90
b19pbmRleF9zdHJpbmcpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9wcm9maWxl
X3R5cGVfY2xlYXJfbG9nKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfYXNzZXJ0
KTsKLVNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfc2F2ZSk7Ci1TTE9XX1BBVEhfSElE
REVOX0RFQ0woc2xvd19wYXRoX3Jlc3VtZSk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19w
YXRoX2NyZWF0ZV9sZXhpY2FsX2Vudmlyb25tZW50KTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChz
bG93X3BhdGhfcHVzaF93aXRoX3Njb3BlKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3Bh
dGhfcmVzb2x2ZV9zY29wZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9HZW5lcmF0b3JGcmFtZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9H
ZW5lcmF0b3JGcmFtZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVmNmVhN2Ex
MDAyNThjM2VjZTA0ZGFhYjQzYmRhYTg1MWVjOGY3MTUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2Vu
ZXJhdG9yRnJhbWUuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsOTcgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+Lgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiR2VuZXJhdG9yRnJhbWUu
aCIKLQotI2luY2x1ZGUgIkNvZGVCbG9jay5oIgotI2luY2x1ZGUgIkhlYXBJdGVyYXRpb25TY29w
ZS5oIgotI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCi0jaW5jbHVkZSAiSlNDZWxsSW5s
aW5lcy5oIgotI2luY2x1ZGUgIlNsb3RWaXNpdG9ySW5saW5lcy5oIgotI2luY2x1ZGUgIlN0cnVj
dHVyZUlubGluZXMuaCIKLQotbmFtZXNwYWNlIEpTQyB7Ci0KLWNvbnN0IENsYXNzSW5mbyBHZW5l
cmF0b3JGcmFtZTo6c19pbmZvID0geyAiR2VuZXJhdG9yRnJhbWUiLCBudWxscHRyLCBudWxscHRy
LCBDUkVBVEVfTUVUSE9EX1RBQkxFKEdlbmVyYXRvckZyYW1lKSB9OwotCi1HZW5lcmF0b3JGcmFt
ZTo6R2VuZXJhdG9yRnJhbWUoVk0mIHZtLCBzaXplX3QgbnVtYmVyT2ZDYWxsZWVMb2NhbHMpCi0g
ICAgOiBCYXNlKHZtLCB2bS5nZW5lcmF0b3JGcmFtZVN0cnVjdHVyZS5nZXQoKSkKLSAgICAsIG1f
bnVtYmVyT2ZDYWxsZWVMb2NhbHMobnVtYmVyT2ZDYWxsZWVMb2NhbHMpCi17Ci19Ci0KLXZvaWQg
R2VuZXJhdG9yRnJhbWU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKLXsKLSAgICBCYXNlOjpmaW5p
c2hDcmVhdGlvbih2bSk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX251bWJlck9mQ2Fs
bGVlTG9jYWxzOyArK2kpCi0gICAgICAgIGxvY2FsQXQoaSkuY2xlYXIoKTsKLX0KLQotU3RydWN0
dXJlKiBHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCi17Ci0gICAgcmV0dXJuIFN0cnVj
dHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oQ2VsbFR5
cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKLX0KLQotR2VuZXJhdG9yRnJhbWUqIEdlbmVy
YXRvckZyYW1lOjpjcmVhdGUoVk0mIHZtLCBzaXplX3QgbnVtYmVyT2ZMb2NhbHMpCi17Ci0gICAg
R2VuZXJhdG9yRnJhbWUqIHJlc3VsdCA9Ci0gICAgICAgIG5ldyAoCi0gICAgICAgICAgICBOb3RO
dWxsLAotICAgICAgICAgICAgYWxsb2NhdGVDZWxsPEdlbmVyYXRvckZyYW1lPih2bS5oZWFwLCBh
bGxvY2F0aW9uU2l6ZUZvckxvY2FscyhudW1iZXJPZkxvY2FscykpKQotICAgICAgICBHZW5lcmF0
b3JGcmFtZSh2bSwgbnVtYmVyT2ZMb2NhbHMpOwotICAgIHJlc3VsdC0+ZmluaXNoQ3JlYXRpb24o
dm0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLXZvaWQgR2VuZXJhdG9yRnJhbWU6OnNhdmUo
RXhlY1N0YXRlKiBleGVjLCBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlQ2FsbGVlTG9jYWxzKQot
ewotICAgIC8vIE9ubHkgc2F2ZSBjYWxsZWUgbG9jYWxzLgotICAgIC8vIEV2ZXJ5IHRpbWUgYSBn
ZW5lcmF0b3IgaXMgY2FsbGVkIChvciByZXN1bWVkKSwgcGFyYW1ldGVycyBzaG91bGQgYmUgcmVw
bGFjZWQuCi0gICAgQVNTRVJUKGxpdmVDYWxsZWVMb2NhbHMubnVtQml0cygpIDw9IG1fbnVtYmVy
T2ZDYWxsZWVMb2NhbHMpOwotICAgIGxpdmVDYWxsZWVMb2NhbHMuZm9yRWFjaFNldEJpdChbJl0o
c2l6ZV90IGluZGV4KSB7Ci0gICAgICAgIGxvY2FsQXQoaW5kZXgpLnNldChleGVjLT52bSgpLCB0
aGlzLCBleGVjLT51bmNoZWNrZWRSKHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGluZGV4KSkuanNW
YWx1ZSgpKTsKLSAgICB9KTsKLX0KLQotdm9pZCBHZW5lcmF0b3JGcmFtZTo6cmVzdW1lKEV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZUNhbGxlZUxvY2FscykKLXsKLSAg
ICAvLyBPbmx5IHJlc3VtZSBjYWxsZWUgbG9jYWxzLgotICAgIC8vIEV2ZXJ5IHRpbWUgYSBnZW5l
cmF0b3IgaXMgY2FsbGVkIChvciByZXN1bWVkKSwgcGFyYW1ldGVycyBzaG91bGQgYmUgcmVwbGFj
ZWQuCi0gICAgbGl2ZUNhbGxlZUxvY2Fscy5mb3JFYWNoU2V0Qml0KFsmXShzaXplX3QgaW5kZXgp
IHsKLSAgICAgICAgZXhlYy0+dW5jaGVja2VkUih2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChpbmRl
eCkpID0gbG9jYWxBdChpbmRleCkuZ2V0KCk7Ci0gICAgICAgIGxvY2FsQXQoaW5kZXgpLmNsZWFy
KCk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgR2VuZXJhdG9yRnJhbWU6OnZpc2l0Q2hpbGRyZW4oSlND
ZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKLXsKLSAgICBHZW5lcmF0b3JGcmFtZSog
dGhpc09iamVjdCA9IGpzQ2FzdDxHZW5lcmF0b3JGcmFtZSo+KGNlbGwpOwotICAgIEJhc2U6OnZp
c2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7Ci0gICAgLy8gU2luY2Ugb25seSB0cnVl
IGNlbGwgcG9pbnRlcnMgYXJlIHN0b3JlZCBhcyBhIGNlbGwsIHdlIGNhbiBzYWZlbHkgbWFyayB0
aGVtLgotICAgIHZpc2l0b3IuYXBwZW5kVmFsdWVzKHRoaXNPYmplY3QtPmxvY2FscygpLCB0aGlz
T2JqZWN0LT5tX251bWJlck9mQ2FsbGVlTG9jYWxzKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgSlND
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGcmFt
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJhbWUuaApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2Q1NDViMTQ3ZGQ0YWJmYjJiYmI5YjVhNzE5NGU4
Zjc0ODQxYzQ5YS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGcmFtZS5oCisrKyAvZGV2
L251bGwKQEAgLTEsOTAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2Ug
U3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIEdlbmVy
YXRvckZyYW1lX2gKLSNkZWZpbmUgR2VuZXJhdG9yRnJhbWVfaAotCi0jaW5jbHVkZSAiSlNDZWxs
LmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RCaXRWZWN0b3IuaD4KLQotbmFtZXNwYWNlIEpTQyB7Ci0K
LWNsYXNzIEdlbmVyYXRvckZyYW1lIDogcHVibGljIEpTQ2VsbCB7Ci0gICAgZnJpZW5kIGNsYXNz
IEpJVDsKLSNpZiBFTkFCTEUoREZHX0pJVCkKLSAgICBmcmllbmQgY2xhc3MgREZHOjpTcGVjdWxh
dGl2ZUpJVDsKLSAgICBmcmllbmQgY2xhc3MgREZHOjpKSVRDb21waWxlcjsKLSNlbmRpZgotICAg
IGZyaWVuZCBjbGFzcyBWTTsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOwotICAg
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IFN0cnVjdHVyZUlzSW1tb3J0
YWwgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKLQotICAgIERFQ0xBUkVfRVhQT1JUX0lORk87Ci0K
LSAgICBzdGF0aWMgR2VuZXJhdG9yRnJhbWUqIGNyZWF0ZShWTSYsIHNpemVfdCBudW1iZXJPZkNh
bGxlZUxvY2Fscyk7Ci0KLSAgICBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiBsb2NhbHMoKQot
ICAgIHsKLSAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxXcml0ZUJhcnJpZXJCYXNlPFVua25v
d24+Kj4oYml0d2lzZV9jYXN0PGNoYXIqPih0aGlzKSArIG9mZnNldE9mTG9jYWxzKCkpOwotICAg
IH0KLQotICAgIFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4mIGxvY2FsQXQoc2l6ZV90IGluZGV4
KQotICAgIHsKLSAgICAgICAgQVNTRVJUKGluZGV4IDwgbV9udW1iZXJPZkNhbGxlZUxvY2Fscyk7
Ci0gICAgICAgIHJldHVybiBsb2NhbHMoKVtpbmRleF07Ci0gICAgfQotCi0gICAgc3RhdGljIHNp
emVfdCBvZmZzZXRPZkxvY2FscygpCi0gICAgewotICAgICAgICByZXR1cm4gV1RGOjpyb3VuZFVw
VG9NdWx0aXBsZU9mPHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pPihzaXplb2YoR2VuZXJh
dG9yRnJhbWUpKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgc2l6ZV90IGFsbG9jYXRpb25TaXplRm9y
TG9jYWxzKHVuc2lnbmVkIG51bWJlck9mTG9jYWxzKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG9m
ZnNldE9mTG9jYWxzKCkgKyBudW1iZXJPZkxvY2FscyAqIHNpemVvZihXcml0ZUJhcnJpZXI8VW5r
bm93bj4pOwotICAgIH0KLQotICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShW
TSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBwcm90b3R5cGUpOwotCi0gICAgdm9pZCBzYXZl
KEV4ZWNTdGF0ZSosIGNvbnN0IEZhc3RCaXRWZWN0b3ImIGxpdmVDYWxsZWVMb2NhbHMpOwotICAg
IHZvaWQgcmVzdW1lKEV4ZWNTdGF0ZSosIGNvbnN0IEZhc3RCaXRWZWN0b3ImIGxpdmVDYWxsZWVM
b2NhbHMpOwotCi1wcml2YXRlOgotICAgIEdlbmVyYXRvckZyYW1lKFZNJiwgc2l6ZV90IG51bWJl
ck9mQ2FsbGVlTG9jYWxzKTsKLQotICAgIHNpemVfdCBtX251bWJlck9mQ2FsbGVlTG9jYWxzOwot
Ci0gICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKLQotICAgIHZvaWQgZmlu
aXNoQ3JlYXRpb24oVk0mKTsKLQotcHJvdGVjdGVkOgotICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hp
bGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEpTQwot
Ci0jZW5kaWYgLy8gR2VuZXJhdG9yRnJhbWVfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5kZXggOWI5YmZmN2JlYTliOGQxZGZiNWZiZDdiMzVj
NDM0NDc0YTkxNTZhOC4uYzY3YmFmYjJlZjk2MGE0ZTdhMGNmYWNhZjZlZGVkMTY3ZGU4YmUxYyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBA
IC0yODMsNiArMjgzLDcgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50
ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1
Y3R1cmU+IG1fY2FsbGJhY2tGdW5jdGlvblN0cnVjdHVyZTsKICAgICBMYXp5UHJvcGVydHk8SlNH
bG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9jYWxsYmFja09iamVjdFN0cnVjdHVyZTsKICAgICBX
cml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3Byb3BlcnR5TmFtZUl0ZXJhdG9yU3RydWN0dXJlOwor
ICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fZ2VuZXJhdG9yRnJhbWVTdHJ1Y3R1cmU7CiAj
aWYgSlNDX09CSkNfQVBJX0VOQUJMRUQKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3Qs
IFN0cnVjdHVyZT4gbV9vYmpjQ2FsbGJhY2tGdW5jdGlvblN0cnVjdHVyZTsKICAgICBMYXp5UHJv
cGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9vYmpjV3JhcHBlck9iamVjdFN0cnVj
dHVyZTsKQEAgLTU1NCw2ICs1NTUsNyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBK
U1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBTdHJ1Y3R1cmUqIGNhbGxiYWNrRnVuY3Rp
b25TdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2NhbGxiYWNrRnVuY3Rpb25TdHJ1Y3R1cmUu
Z2V0KHRoaXMpOyB9CiAgICAgU3RydWN0dXJlKiBjYWxsYmFja09iamVjdFN0cnVjdHVyZSgpIGNv
bnN0IHsgcmV0dXJuIG1fY2FsbGJhY2tPYmplY3RTdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9CiAgICAg
U3RydWN0dXJlKiBwcm9wZXJ0eU5hbWVJdGVyYXRvclN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJu
IG1fcHJvcGVydHlOYW1lSXRlcmF0b3JTdHJ1Y3R1cmUuZ2V0KCk7IH0KKyAgICBTdHJ1Y3R1cmUq
IGdlbmVyYXRvckZyYW1lU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9nZW5lcmF0b3JGcmFt
ZVN0cnVjdHVyZS5nZXQoKTsgfQogI2lmIEpTQ19PQkpDX0FQSV9FTkFCTEVECiAgICAgU3RydWN0
dXJlKiBvYmpjQ2FsbGJhY2tGdW5jdGlvblN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fb2Jq
Y0NhbGxiYWNrRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9CiAgICAgU3RydWN0dXJlKiBv
YmpjV3JhcHBlck9iamVjdFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fb2JqY1dyYXBwZXJP
YmplY3RTdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9WTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5j
cHAKaW5kZXggNmY0NmRkNGE1YjEyNzU5YWNhYTdhNjIzOTVjZmIyYzZiYTU5MGZjZi4uYzZmYmRj
NWVjZGNmMTMzODhiZWUyNjI2MDU0YTkyZGFlNzU2ZWI0MSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ZNLmNwcApAQCAtNDYsNyArNDYsNiBAQAogI2luY2x1ZGUgIkZUTFRodW5rcy5oIgog
I2luY2x1ZGUgIkZ1bmN0aW9uQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJHQ0FjdGl2aXR5Q2Fs
bGJhY2suaCIKLSNpbmNsdWRlICJHZW5lcmF0b3JGcmFtZS5oIgogI2luY2x1ZGUgIkdldHRlclNl
dHRlci5oIgogI2luY2x1ZGUgIkhlYXAuaCIKICNpbmNsdWRlICJIZWFwSXRlcmF0aW9uU2NvcGUu
aCIKQEAgLTIzOSw3ICsyMzgsNiBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVh
cFR5cGUpCiAgICAgaW5mZXJyZWRUeXBlU3RydWN0dXJlLnNldCgqdGhpcywgSW5mZXJyZWRUeXBl
OjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgaW5mZXJyZWRUeXBl
VGFibGVTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBJbmZlcnJlZFR5cGVUYWJsZTo6Y3JlYXRlU3RydWN0
dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIGZ1bmN0aW9uUmFyZURhdGFTdHJ1Y3R1cmUu
c2V0KCp0aGlzLCBGdW5jdGlvblJhcmVEYXRhOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpz
TnVsbCgpKSk7Ci0gICAgZ2VuZXJhdG9yRnJhbWVTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBHZW5lcmF0
b3JGcmFtZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIGV4Y2Vw
dGlvblN0cnVjdHVyZS5zZXQoKnRoaXMsIEV4Y2VwdGlvbjo6Y3JlYXRlU3RydWN0dXJlKCp0aGlz
LCAwLCBqc051bGwoKSkpOwogICAgIHByb21pc2VEZWZlcnJlZFN0cnVjdHVyZS5zZXQoKnRoaXMs
IEpTUHJvbWlzZURlZmVycmVkOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7
CiAgICAgaW50ZXJuYWxQcm9taXNlRGVmZXJyZWRTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBKU0ludGVy
bmFsUHJvbWlzZURlZmVycmVkOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAppbmRleCBhOGM0Njg4ZDExYWRlOTQ5ZTBmZjEz
ODkzZGQ1ZjMyMTdkMjg0MzgyLi4xNWQ0YjIwYjFiYmMyMWE5MDJhZjkwOTM3NWU4NmFlZTg5YzZl
MmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKQEAgLTMxNSw3ICszMTUsNiBAQCBj
bGFzcyBWTSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxWTT4gewogICAgIFN0cm9uZzxT
dHJ1Y3R1cmU+IGluZmVycmVkVHlwZVN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBp
bmZlcnJlZFR5cGVUYWJsZVN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBmdW5jdGlv
blJhcmVEYXRhU3RydWN0dXJlOwotICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGdlbmVyYXRvckZyYW1l
U3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGV4Y2VwdGlvblN0cnVjdHVyZTsKICAg
ICBTdHJvbmc8U3RydWN0dXJlPiBwcm9taXNlRGVmZXJyZWRTdHJ1Y3R1cmU7CiAgICAgU3Ryb25n
PFN0cnVjdHVyZT4gaW50ZXJuYWxQcm9taXNlRGVmZXJyZWRTdHJ1Y3R1cmU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLWFu
ZC1hcnJheS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9y
LWZpYi1mdGwtYW5kLWFycmF5LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZlOTM5ODEyZmRiYWVjNmI4MzJiZmQw
MGYyMTUzZGVmODRiYjc1OTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLWFuZC1hcnJheS5qcwpAQCAtMCwwICsx
LDIzIEBACisoZnVuY3Rpb24gKCkgeworICAgIGZ1bmN0aW9uICpmaWIoKQorICAgIHsKKyAgICAg
ICAgbGV0IGEgPSAxOworICAgICAgICBsZXQgYiA9IDE7CisgICAgICAgIGxldCBjID0gWyAwIF07
CisgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICBjWzBdID0gYTsKKyAgICAgICAg
ICAgIHlpZWxkIGM7CisgICAgICAgICAgICBbYSwgYl0gPSBbYiwgYSArIGJdOworICAgICAgICB9
CisgICAgfQorCisgICAgbGV0IHZhbHVlID0gMDsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDFl
NDsgKytpKSB7CisgICAgICAgIGxldCBmID0gZmliKCk7CisgICAgICAgIGZvciAobGV0IGkgPSAw
OyBpIDwgMTAwOyArK2kpIHsKKyAgICAgICAgICAgIHZhbHVlID0gZi5uZXh0KCkudmFsdWU7Cisg
ICAgICAgIH0KKyAgICAgICAgaWYgKHZhbHVlWzBdICE9PSAzNTQyMjQ4NDgxNzkyNjIwMDAwMDAp
CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCB2YWx1ZToke3Jlc3VsdH1gKTsKKyAg
ICB9Cit9KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVz
cy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQtb2JqZWN0LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQtb2JqZWN0LmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjY2NzM0MGYyZWE0Yzc0MzhhMmQyMDlhYTQwZDA2NzdlNGFiN2QzZmIKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRs
LWFuZC1vYmplY3QuanMKQEAgLTAsMCArMSwyMyBAQAorKGZ1bmN0aW9uICgpIHsKKyAgICBmdW5j
dGlvbiAqZmliKCkKKyAgICB7CisgICAgICAgIGxldCBhID0gMTsKKyAgICAgICAgbGV0IGIgPSAx
OworICAgICAgICBsZXQgYyA9IHsgZmliOiAwIH07CisgICAgICAgIHdoaWxlICh0cnVlKSB7Cisg
ICAgICAgICAgICBjLmZpYiA9IGE7CisgICAgICAgICAgICB5aWVsZCBjOworICAgICAgICAgICAg
W2EsIGJdID0gW2IsIGEgKyBiXTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGxldCB2YWx1ZSA9
IDA7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxZTQ7ICsraSkgeworICAgICAgICBsZXQgZiA9
IGZpYigpOworICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDsgKytpKSB7CisgICAgICAg
ICAgICB2YWx1ZSA9IGYubmV4dCgpLnZhbHVlOworICAgICAgICB9CisgICAgICAgIGlmICh2YWx1
ZS5maWIgIT09IDM1NDIyNDg0ODE3OTI2MjAwMDAwMCkKKyAgICAgICAgICAgIHRocm93IG5ldyBF
cnJvcihgYmFkIHZhbHVlOiR7cmVzdWx0fWApOworICAgIH0KK30oKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLWFuZC1z
dHJpbmcuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1m
aWItZnRsLWFuZC1zdHJpbmcuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDM4YWU2YWIzMzQ3MDQ2ODIyODQ5ZjQz
MDA0ZWE1YzQwM2VlZGEyOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwtYW5kLXN0cmluZy5qcwpAQCAtMCwwICsx
LDIyIEBACisoZnVuY3Rpb24gKCkgeworICAgIGZ1bmN0aW9uICpmaWIoKQorICAgIHsKKyAgICAg
ICAgbGV0IGEgPSAxOworICAgICAgICBsZXQgYiA9IDE7CisgICAgICAgIGxldCBjID0gIlJlc3Vs
dCEgIjsKKyAgICAgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgICAgIHlpZWxkIGMgKyBhOwor
ICAgICAgICAgICAgW2EsIGJdID0gW2IsIGEgKyBiXTsKKyAgICAgICAgfQorICAgIH0KKworICAg
IGxldCB2YWx1ZSA9IDA7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxZTQ7ICsraSkgeworICAg
ICAgICBsZXQgZiA9IGZpYigpOworICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDsgKytp
KSB7CisgICAgICAgICAgICB2YWx1ZSA9IGYubmV4dCgpLnZhbHVlOworICAgICAgICB9CisgICAg
ICAgIGlmICh2YWx1ZSAhPT0gYFJlc3VsdCEgMzU0MjI0ODQ4MTc5MjYyMDAwMDAwYCkKKyAgICAg
ICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIHZhbHVlOiR7cmVzdWx0fWApOworICAgIH0KK30o
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVy
YXRvci1maWItZnRsLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5l
cmF0b3ItZmliLWZ0bC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNDBlMzNkYmM4NjhiZWE3YTg5M2M5ZWMxNmI3
NzllYzI2YmRiMTljCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC5qcwpAQCAtMCwwICsxLDIxIEBACisoZnVuY3Rp
b24gKCkgeworICAgIGZ1bmN0aW9uICpmaWIoKQorICAgIHsKKyAgICAgICAgbGV0IGEgPSAxOwor
ICAgICAgICBsZXQgYiA9IDE7CisgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICB5
aWVsZCBhOworICAgICAgICAgICAgW2EsIGJdID0gW2IsIGEgKyBiXTsKKyAgICAgICAgfQorICAg
IH0KKworICAgIGxldCB2YWx1ZSA9IDA7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxZTQ7ICsr
aSkgeworICAgICAgICBsZXQgZiA9IGZpYigpOworICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8
IDEwMDsgKytpKSB7CisgICAgICAgICAgICB2YWx1ZSA9IGYubmV4dCgpLnZhbHVlOworICAgICAg
ICB9CisgICAgICAgIGlmICh2YWx1ZSAhPT0gMzU0MjI0ODQ4MTc5MjYyMDAwMDAwKQorICAgICAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgdmFsdWU6JHtyZXN1bHR9YCk7CisgICAgfQorfSgp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJh
dG9yLWZyYW1lLWVtcHR5LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9n
ZW5lcmF0b3ItZnJhbWUtZW1wdHkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTllODg1NWJmYWMzYzU2ZGY5MjZh
YmQ0MjhjMDEzYzMzNDE2Mjc0NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZyYW1lLWVtcHR5LmpzCkBAIC0wLDAgKzEsMzQg
QEAKK2Z1bmN0aW9uIHNob3VsZFRocm93KGZ1bmMsIGVycm9yTWVzc2FnZSkgeworICAgIHZhciBl
cnJvclRocm93biA9IGZhbHNlOworICAgIHZhciBlcnJvciA9IG51bGw7CisgICAgdHJ5IHsKKyAg
ICAgICAgZnVuYygpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgZXJyb3JUaHJvd24gPSB0
cnVlOworICAgICAgICBlcnJvciA9IGU7CisgICAgfQorICAgIGlmICghZXJyb3JUaHJvd24pCisg
ICAgICAgIHRocm93IG5ldyBFcnJvcignbm90IHRocm93bicpOworICAgIGlmIChTdHJpbmcoZXJy
b3IpICE9PSBlcnJvck1lc3NhZ2UpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIGVycm9y
OiAke1N0cmluZyhlcnJvcil9YCk7Cit9CisKK3Nob3VsZFRocm93KGZ1bmN0aW9uICgpIHsKKyAg
ICBmdW5jdGlvbiAqZmliKGZsYWcpCisgICAgeworICAgICAgICBsZXQgYSA9IDE7CisgICAgICAg
IGxldCBiID0gMTsKKyAgICAgICAgeWllbGQgNDI7CisgICAgICAgIGlmIChmbGFnKQorICAgICAg
ICAgICAgcmV0dXJuIGM7CisgICAgICAgIGxldCBjID0gNTAwOworICAgIH0KKworICAgIGxldCB2
YWx1ZSA9IDA7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxZTQ7ICsraSkgeworICAgICAgICBm
b3IgKGxldCB2IG9mIGZpYihmYWxzZSkpIHsKKyAgICAgICAgfQorICAgIH0KKyAgICBmb3IgKGxl
dCB2IG9mIGZpYih0cnVlKSkgeworICAgIH0KK30sIGBSZWZlcmVuY2VFcnJvcjogQ2Fubm90IGFj
Y2VzcyB1bmluaXRpYWxpemVkIHZhcmlhYmxlLmApOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>283438</attachid>
            <date>2016-07-12 12:21:22 -0700</date>
            <delta_ts>2016-07-14 23:33:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-152723-20160713042037.patch</filename>
            <type>text/plain</type>
            <size>153678</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAzMTE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
OWZiZDhlMjYwOThkOWJlMjU2YWJmYWNkNmMyMDIzZTczMWJiNDIxLi4yNzMxMGQzM2U1YWU4NDAz
MGNhNWM3NDQzMDI2ZDU0MWE5YzNhMGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzODQgQEAKKzIwMTYtMDctMTIgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0RGR11bRlRMXSBJbXBsZW1lbnQgRVM2IEdlbmVyYXRvcnMgaW4g
REZHIC8gRlRMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNTI3MjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworCisgICAg
ICAgICEhISBXSVAgISEhIFRoZSBmb2xsb3dpbmcgZG9jdW1lbnQgaXMgbm90IHVwZGF0ZWQgeWV0
LgorCisKKworCisKKworCisKKyAgICAgICAgVGhpcyBwYXRjaCBpcyBhbiBpbml0aWFsIGF0dGVt
cHQgdG8gaW1wbGVtZW50IERGRyBhbmQgRlRMIGNhcGFibGUgRVM2IGdlbmVyYXRvcnMuCisgICAg
ICAgIFdlIGludHJvZHVjZSB0aGUgc2V2ZXJhbCBieXRlY29kZXMgYW5kIGNvbXBpbGUgdGhlbSBp
biBERkcgLyBGVEwuCisKKyAgICAgICAgLSBvcF9uZXdfZ2VuZXJhdG9yX2ZyYW1lCisKKyAgICAg
ICAgICAgIEFsbG9jYXRlIEdlbmVyYXRvckZyYW1lIGluIHRoZSBieXRlY29kZSBpbnN0ZWFkIG9m
IGFsbG9jYXRpbmcgaXQgaW4gdGhlIG9wX3NhdmUuCisKKyAgICAgICAgLSBvcF9zYXZlCisKKyAg
ICAgICAgICAgIE5vdyBCeXRlY29kZUxpdmVuZXNzIGFuYWx5c2lzIGFuZCBQcmVjaXNlSnVtcFRh
cmdldCBhbmFseXNpcyBoYXZlIDIgbW9kZXM7IFN0YW5kYXJkIGFuZCBFeHRyYWN0R2VuZXJhdG9y
TGl2ZUNhbGxlZUxvY2Fscy4KKyAgICAgICAgICAgIFVuZGVyIEV4dHJhY3RHZW5lcmF0b3JMaXZl
Q2FsbGVlTG9jYWxzIG1vZGUsIG9wX3NhdmUgaGFzIGp1bXAgdG8gdGhlIG1lcmdlIHBvaW50LiBU
aGlzIGp1bXAgaXMganVzdCB1c2VkIGZvciB1c2UtZGVmIGFuYWx5c2lzIHRvIGV4dHJhY3QKKyAg
ICAgICAgICAgIGxpdmUgY2FsbGVlIGxvY2FscyBhdCB0aGUgbWVyZ2UgcG9pbnQuIFRoZXNlIGxp
dmUgY2FsbGVlIGxvY2FscyBzaG91bGQgYmUgc2F2ZWQgYW5kIHJlc3VtZWQgdG8gc3VzcGVuZCBh
bmQgcmVzdW1lIGdlbmVyYXRvcnMuCisgICAgICAgICAgICBUaGUgbWVyZ2UgcG9pbnQgaXMgdGhl
IHBvaW50IHRoYXQgbWVyZ2luZyB0aGUgMiBiYXNpYyBibG9ja3MsIHNhdmluZyBsb2NhbHMgdG8g
dGhlIGdlbmVyYXRvciBmcmFtZSBhbmQgcmVzdW1pbmcgbG9jYWxzIGZyb20gdGhlIGdlbmVyYXRv
ciBmcmFtZS4KKworICAgICAgICAtIG9wX3Jlc3VtZQorCisgICAgICAgICAgICBUaGlzIHJldHJp
ZXZlcyBsb2NhbCB2YXJpYWJsZSBmcm9tIHRoZSBnZW5lcmF0b3IgZnJhbWUuIEV4dHJhY3RHZW5l
cmF0b3JMaXZlQ2FsbGVlTG9jYWxzIGFuYWx5c2lzIHdpbGwgZGlzY292ZXIgbGl2ZSBsb2NhbHMg
YXQgdGhlIG1lcmdlIHBvaW50IGFuZCByZWNvcmQgbGl2ZW5lc3MKKyAgICAgICAgICAgIGluZm9y
bWF0aW9uIHRvIG9wX3NhdmUgYW5kIG9wX3Jlc3VtZS4gT24gdGhlIGJhc2lzIG9mIHRoaXMgaW5m
b3JtYXRpb24sIG9wX3Jlc3VtZSB3aWxsIHJldHJpZXZlIHNhdmVkIGxvY2FscyBmcm9tIHRoZSBn
ZW5lcmF0b3IgZnJhbWUuCisKKyAgICAgICAgSGVyZSwgd2UgZXhwbGFpbiBhYm91dCBob3cgdG8g
cHJlcHJvY2VzcyBieXRlY29kZXMuCisgICAgICAgIEZpcnN0LCB3ZSBlbWl0IG9wX3NhdmUsIG9w
X3Jlc3VtZSBhbmQgcGVyZm9ybSBFeHRyYWN0R2VuZXJhdG9yTGl2ZUNhbGxlZUxvY2FscyBhbmFs
eXNpcy4KKworICAgICAgICBbZW50cnldIC0rLS0+IFtzYXZlIGJsb2NrXSAtPiBvcF9zYXZlIChp
dCBpcyBicmFuY2hpbmcgYnl0ZWNvZGUpIC0tLS0tLT4gW21lcmdlIGJsb2NrXSAtPiAuLi4KKyAg
ICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorICAgICAgICAgICAgICAgICB8ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICstPiBvcF9yZXQgICAgICAgICAgICAgICAgICAgICAg
ICB8CisgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0+IG9wX3Jlc3VtZSAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKworICAgICAgICBUaGVuLCBkaXNj
b3ZlciBsaXZlIGxvY2FscyBpbmZvcm1hdGlvbiAoYXMgRmFzdEJpdFZlY3RvcikgYXQgdGhlIG1l
cmdlIHBvaW50IGFuZCBzdG9yZSBpdCB0byBjb3JyZXNwb25kaW5nIG9wX3NhdmUgYW5kIG9wX3Jl
c3VtZS4KKyAgICAgICAgQWZ0ZXIgdGhhdCwgdW5kZXIgU3RhbmRhcmQgYW5hbHlzaXMgbW9kZSwg
dGhlIGFib3ZlIGJ5dGVjb2RlIHN0cmVhbSB3aWxsIGNvbnN0cnVjdCB0aGUgZm9sbG93aW5nIENG
Ry4KKyAgICAgICAgSW4gdGhlIGZvbGxvd2luZyBDRkcsIG9wX3NhdmUgbm8gbG9uZ2VyIGhhcyBq
dW1wIHRvIHRoZSBtZXJnZSBwb2ludC4gVGhlIHJlbW92ZWQganVtcCBlZGdlIHdhcyBqdXN0IHVz
ZWQgdG8gY2FsY3VsYXRlIGxpdmVuZXNzIGluZm9ybWF0aW9uIGF0IHRoZSBtZXJnZSBwb2ludC4K
KworICAgICAgICBbZW50cnldIC0rLS0+IFtzYXZlIGJsb2NrXSAtPiBvcF9zYXZlIC0+IG9wX3Jl
dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArLT4gW21lcmdlIGJsb2NrXSAtPiAuLi4K
KyAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgICAgICB8ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8CisgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0+IG9wX3Jlc3VtZSAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKworICAgICAgICBBbmQgd2Ug
aW50cm9kdWNlcyBzZXZlcmFsIERGRyBub2Rlcy4KKworICAgICAgICAtIE5ld0dlbmVyYXRvckZy
YW1lCisKKyAgICAgICAgICAgIFRoaXMganVzdCBhbGxvY2F0ZXMgR2VuZXJhdG9yRnJhbWUuCisK
KyAgICAgICAgLSBSZXNpemVHZW5lcmF0b3JMb2NhbHMKKworICAgICAgICAgICAgVGhpcyBzZXQg
R2VuZXJhdG9yRnJhbWU6Om1fbnVtYmVyT2ZTYXZlZENhbGxlZUxvY2FscyAqTiouIFRoaXMgbm9k
ZSBpcyB1c2VkIHRvICgxKSBhbGxvY2F0ZSBzcGFjZSBmb3IgbG9jYWxzIGluIEdlbmVyYXRvckZy
YW1lIGFuZCAoMikgZGVhbGxvY2F0ZSBzcGFjZSBpbgorICAgICAgICAgICAgR2VuZXJhdG9yRnJh
bWUgYnkgc2V0dGluZyBpdCBhcyAwLgorCisgICAgICAgIC0gR2V0R2VuZXJhdG9yTG9jYWwKKwor
ICAgICAgICAgICAgR2V0IGEgc2F2ZWQgbG9jYWwgdmFyaWFibGUgZnJvbSBhIGdlbmVyYXRvciBm
cmFtZS4gR2V0R2VuZXJhdG9yTG9jYWwgYW5kIFNldEdlbmVyYXRvckxvY2FsIGFyZSBsaW5rZWQg
d2l0aCBHZW5lcmF0b3JMb2NhbERhdGEuIFNvIHR5cGUgcHJlZGljYXRpb24gYW5kIGZsYWdzCisg
ICAgICAgICAgICBhcmUgY29ycmVjdGx5IHByb3BhZ2F0ZWQgYmV5b25kIHRoZSBnZW5lcmF0b3Ig
ZnJhbWUuCisKKyAgICAgICAgLSBTZXRHZW5lcmF0b3JMb2NhbAorCisgICAgICAgICAgICBTdG9y
ZSBhIGxvY2FsIHZhcmlhYmxlIHRvIGEgZ2VuZXJhdG9yIGZyYW1lLgorCisgICAgICAgIEZ1dHVy
ZSBwbGFucyBhcmUgdGhlIGZvbGxvd2luZ3MuCisKKyAgICAgICAgMS4gU3VwcG9ydCB0cmFuc2Zl
cnJpbmcgQWJzdHJhY3RWYWx1ZSBiZXR3ZWVuIFNldEdlbmVyYXRvckxvY2FsIGFuZCBHZXRHZW5l
cmF0b3JMb2NhbC4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MzE4
MworCisgICAgICAgIDIuIENyZWF0ZSBKU0dlbmVyYXRvciBhbmQgYWxsb2NhdGUgaXQgaW4gdGhl
IGdlbmVyYXRvciB3cmFwcGVyIGZ1bmN0aW9uLiBUaGlzIHNob3VsZCBiZSBjb21waWxlZCBpbiBE
RkcgLyBGVEwgYW5kCisgICAgICAgIHRoaXMgb2JqZWN0IHNob3VsZCBiZSB0cmFja2VkIChieSBl
c2NhcGUgYW5hbHlzaXMpIGFuZCBlbGltaW5hdGVkIGlmIHBvc3NpYmxlIGJ5IG9iamVjdCBhbGxv
Y2F0aW9uIGVsaW1pbmF0aW9uLgorCisgICAgICAgIDMuIEFuZCBvbmNlIHdlIGV4cGxvaXQgdGhh
dCBHZW5lcmF0b3JGcmFtZSBpcyBub3QgZXNjYXBlZCBmcm9tIHRoZSBnaXZlbiBGVEwtZWQgZnVu
Y3Rpb24sIHdlIHdpbGwgZWxpbWluYXRlIEdlbmVyYXRvckZyYW1lIGFsbG9jYXRpb24gYW5kCisg
ICAgICAgIGNvbnZlcnQgR2VuZXJhdG9yTG9jYWwgb3BlcmF0aW9ucyBpbnRvIGdldC9zZXQgbG9j
YWwgb3BlcmF0aW9ucy4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYnVpbHRp
bnMvR2VuZXJhdG9yUHJvdG90eXBlLmpzOgorICAgICAgICAoZ2xvYmFsUHJpdmF0ZS5nZW5lcmF0
b3JSZXN1bWUpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5jcHA6Cisg
ICAgICAgIChKU0M6OmlzQnJhbmNoKToKKyAgICAgICAgKEpTQzo6Z2V0T3Bjb2RlSUQpOgorICAg
ICAgICAoSlNDOjpjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2Nrc0ludGVybmFsKToKKyAgICAgICAg
KEpTQzo6Y29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5
dGVjb2RlQmFzaWNCbG9jay5oOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9y
aWZpY2F0aW9uLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OmlzVmFsaWRSZWdpc3RlckZvckxp
dmVuZXNzKToKKyAgICAgICAgKEpTQzo6Z2V0TGVhZGVyT2Zmc2V0Rm9yQmFzaWNCbG9jayk6Cisg
ICAgICAgIChKU0M6OmZpbmRCYXNpY0Jsb2NrV2l0aExlYWRlck9mZnNldCk6CisgICAgICAgIChK
U0M6OmJsb2NrQ29udGFpbnNCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OmZpbmRCYXNp
Y0Jsb2NrRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpjb21wdXRlRGVmc0ZvckJ5
dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNl
dCk6CisgICAgICAgIChKU0M6OnN0ZXBPdmVySW5zdHJ1Y3Rpb24pOgorICAgICAgICAoSlNDOjpj
b21wdXRlTG9jYWxMaXZlbmVzc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Y29t
cHV0ZUxvY2FsTGl2ZW5lc3NGb3JCbG9jayk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJh
dG9yaWZpY2F0aW9uOjpCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbik6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uOjpnZXRMaXZlbmVzc0luZm9BdEJ5dGVjb2RlT2Zm
c2V0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb246OnN0b3JhZ2VG
b3JHZW5lcmF0b3JMb2NhbCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0
aW9uOjpydW4pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbjo6cnVu
TGl2ZW5lc3NBbmFseXNpcyk6CisgICAgICAgIChKU0M6OnBlcmZvcm1HZW5lcmF0b3JpZmljYXRp
b24pOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmg6IENv
cGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNz
QW5hbHlzaXMuaC4KKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUdyYXBoLmNwcDogQ29waWVk
IGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFs
eXNpcy5oLgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlR3JhcGguaDogQWRkZWQuCisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR3JhcGg6OmNvZGVCbG9jayk6CisgICAgICAgIChKU0M6OkJ5dGVj
b2RlR3JhcGg6OmJhc2ljQmxvY2tzKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHcmFwaDo6aW5z
dHJ1Y3Rpb25zKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHcmFwaDo6UmV2ZXJzZUl0ZXJhYmxl
OjpSZXZlcnNlSXRlcmFibGUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdyYXBoOjpSZXZlcnNl
SXRlcmFibGU6OmJlZ2luKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHcmFwaDo6UmV2ZXJzZUl0
ZXJhYmxlOjplbmQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdyYXBoOjpiYXNpY0Jsb2Nrc0lu
UmV2ZXJzZU9yZGVyKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHcmFwaDxCbG9jaz46OkJ5dGVj
b2RlR3JhcGgpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlSW5zZXJ0aW9uU2V0LmNwcDog
QWRkZWQuCisgICAgICAgIChKU0M6OkJ5dGVjb2RlSW5zZXJ0aW9uU2V0OjphZGp1c3RPZmZzZXQp
OgorICAgICAgICAoSlNDOjpCeXRlY29kZUluc2VydGlvblNldDo6ZXhlY3V0ZSk6CisgICAgICAg
ICogYnl0ZWNvZGUvQnl0ZWNvZGVJbnNlcnRpb25TZXQuaDogQ29waWVkIGZyb20gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5oLgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUluc2VydGlvblNldDo6Qnl0ZWNvZGVJbnNlcnRpb25TZXQpOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUluc2VydGlvblNldDo6aW5zZXJ0KToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVJbnNlcnRpb25TZXQ6OnJlbW92ZUJ5dGVjb2RlKToKKyAgICAgICAgKiBieXRlY29k
ZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUxp
dmVuZXNzQW5hbHlzaXM6OkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcyk6CisgICAgICAgIChKU0M6
OmZpbmRCYXNpY0Jsb2NrV2l0aExlYWRlck9mZnNldCk6CisgICAgICAgIChKU0M6OmZpbmRCYXNp
Y0Jsb2NrRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpzdGVwT3Zlckluc3RydWN0
aW9uKToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCeXRlY29kZU9mZnNl
dCk6CisgICAgICAgIChKU0M6OmNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQmxvY2spOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OnJ1bkxpdmVuZXNzRml4cG9pbnQpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmdldExpdmVuZXNzSW5mb0F0
Qnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6
OmNvbXB1dGVGdWxsTGl2ZW5lc3MpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzQW5h
bHlzaXM6OmNvbXB1dGVLaWxscyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlTGl2ZW5lc3NBbmFs
eXNpczo6ZHVtcFJlc3VsdHMpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlz
aXM6OmNvbXB1dGUpOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGl2ZW5l
c3NBbmFseXNpcy5oOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmg6CisgICAg
ICAgIChKU0M6OmNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpj
b21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxv
Y2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKToKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjp2YWxpZGF0ZSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6
ZHVtcEJ5dGVjb2RlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpzaHJpbmtU
b0ZpdCk6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAg
IChKU0M6OkNvZGVCbG9jazo6bGl2ZW5lc3NBbmFseXNpcyk6CisgICAgICAgIChKU0M6OkNvZGVC
bG9jazo6bGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQpOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVj
b2RlL0hhbmRsZXJJbmZvLmg6CisgICAgICAgICogYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRz
LmNwcDoKKyAgICAgICAgKEpTQzo6Z2V0T3Bjb2RlSUQpOgorICAgICAgICAoSlNDOjpnZXRKdW1w
VGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZVByZWNpc2VK
dW1wVGFyZ2V0c0ludGVybmFsKToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZVByZWNpc2VKdW1wVGFy
Z2V0cyk6CisgICAgICAgIChKU0M6OmZpbmRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KToK
KyAgICAgICAgKEpTQzo6cmVjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKToKKyAgICAgICAgKiBi
eXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHMuaDoKKyAgICAgICAgKiBieXRlY29kZS9Vbmxpbmtl
ZENvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjpoYW5kbGVy
Rm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6aGFu
ZGxlckZvckluZGV4KToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oOgor
ICAgICAgICAoSlNDOjpVbmxpbmtlZFN0cmluZ0p1bXBUYWJsZTo6b2Zmc2V0Rm9yVmFsdWUpOgor
ICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6anVtcFRhcmdldHMpOgorICAgICAgICAo
SlNDOjpVbmxpbmtlZENvZGVCbG9jazo6cHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnMpOgorICAg
ICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2Vu
ZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0TmV3R2VuZXJhdG9yRnJhbWUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdENvbXBsZXhQb3BTY29wZXMpOgorICAgICAgICAoSlNDOjpwcmVwYXJlSnVtcFRh
YmxlRm9yU3RyaW5nU3dpdGNoKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRZaWVsZFBvaW50KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRTYXZl
KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXN1bWUpOgorICAgICAg
ICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpCeXRl
Y29kZUdlbmVyYXRvcjo6Z2VuZXJhdG9yRnJhbWVSZWdpc3Rlcik6CisgICAgICAgICogZGZnL0RG
R09wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGdlbmVyYXRlLWJ5dGVjb2RlLWZpbGVzOgorICAg
ICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpTQzo6ZmluZEV4
Y2VwdGlvbkhhbmRsZXIpOgorICAgICAgICAoSlNDOjpHZXRDYXRjaEhhbmRsZXJGdW5jdG9yOjpv
cGVyYXRvcigpKToKKyAgICAgICAgKEpTQzo6VW53aW5kRnVuY3Rvcjo6b3BlcmF0b3IoKSk6Cisg
ICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVN
YWluUGFzcyk6IERlbGV0ZWQuCisgICAgICAgICogaml0L0pJVC5oOgorICAgICAgICAqIGppdC9K
SVRPcGNvZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3NhdmUpOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcmVzdW1lKTogRGVsZXRlZC4KKyAgICAgICAg
KiBqaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRXcml0
ZUJhcnJpZXIpOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAg
ICAgICAqIHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBl
Pjo6cGFyc2VJbm5lcik6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUdl
bmVyYXRvckZ1bmN0aW9uU291cmNlRWxlbWVudHMpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4
ZXJUeXBlPjo6Y3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyk6CisgICAgICAgICogcGFyc2VyL1Bh
cnNlci5oOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcDoKKyAgICAgICAg
KEpTQzo6U0xPV19QQVRIX0RFQ0wpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9u
U2xvd1BhdGhzLmg6CisgICAgICAgICogcnVudGltZS9HZW5lcmF0b3JGcmFtZS5jcHA6IFJlbW92
ZWQuCisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpHZW5lcmF0b3JGcmFtZSk6IERlbGV0
ZWQuCisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpmaW5pc2hDcmVhdGlvbik6IERlbGV0
ZWQuCisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpjcmVhdGVTdHJ1Y3R1cmUpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlKTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OnNhdmUpOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpHZW5lcmF0b3JGcmFtZTo6cmVzdW1lKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJh
dG9yRnJhbWU6OnZpc2l0Q2hpbGRyZW4pOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvR2Vu
ZXJhdG9yRnJhbWUuaDogUmVtb3ZlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6Omxv
Y2Fscyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpsb2NhbEF0KTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6Om9mZnNldE9mTG9jYWxzKTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OmFsbG9jYXRpb25TaXplRm9y
TG9jYWxzKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6Cisg
ICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpnZW5lcmF0b3JGcmFtZVN0cnVjdHVyZSk6Cisg
ICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpWTSk6IERlbGV0ZWQu
CisgICAgICAgICogcnVudGltZS9WTS5oOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9nZW5lcmF0
b3ItZmliLWZ0bC1hbmQtYXJyYXkuanM6IEFkZGVkLgorICAgICAgICAoZmliKToKKyAgICAgICAg
KiB0ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwtYW5kLW9iamVjdC5qczogQWRkZWQuCisg
ICAgICAgIChmaWIpOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC1h
bmQtc3RyaW5nLmpzOiBBZGRlZC4KKyAgICAgICAgKGZpYik6CisgICAgICAgICogdGVzdHMvc3Ry
ZXNzL2dlbmVyYXRvci1maWItZnRsLmpzOiBBZGRlZC4KKyAgICAgICAgKGZpYik6CisgICAgICAg
ICogdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1mcmFtZS1lbXB0eS5qczogQWRkZWQuCisgICAgICAg
IChzaG91bGRUaHJvdyk6CisgICAgICAgIChzaG91bGRUaHJvdy5maWIpOgorCisgICAgICAgICog
Q01ha2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBidWlsdGlucy9HZW5lcmF0b3JQcm90b3R5cGUuanM6Cisg
ICAgICAgIChnbG9iYWxQcml2YXRlLmdlbmVyYXRvclJlc3VtZSk6CisgICAgICAgICogYnl0ZWNv
ZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6aXNCcmFuY2gpOgorICAg
ICAgICAoSlNDOjpjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2Nrc0ludGVybmFsKToKKyAgICAgICAg
KEpTQzo6Y29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5
dGVjb2RlQmFzaWNCbG9jay5oOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9y
aWZpY2F0aW9uLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OmlzVmFsaWRSZWdpc3RlckZvckxp
dmVuZXNzKToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZUdlbmVyYXRvckRlZnNGb3JCeXRlY29kZU9m
ZnNldCk6CisgICAgICAgIChKU0M6OmNvbXB1dGVHZW5lcmF0b3JVc2VzRm9yQnl0ZWNvZGVPZmZz
ZXQpOgorICAgICAgICAoSlNDOjpzdGVwT3Zlckluc3RydWN0aW9uKToKKyAgICAgICAgKEpTQzo6
Y29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OmNv
bXB1dGVMb2NhbExpdmVuZXNzRm9yQmxvY2spOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVy
YXRvcmlmaWNhdGlvbjo6Qnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24pOgorICAgICAgICAoSlND
OjpCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbjo6Z2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29kZU9m
ZnNldCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uOjpzdG9yYWdl
Rm9yR2VuZXJhdG9yTG9jYWwpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcmlmaWNh
dGlvbjo6cnVuKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb246OnJ1
bkxpdmVuZXNzQW5hbHlzaXMpOgorICAgICAgICAoSlNDOjpwZXJmb3JtR2VuZXJhdG9yaWZpY2F0
aW9uKToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5oOiBD
b3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVz
c0FuYWx5c2lzLmguCisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVHcmFwaC5oOiBBZGRlZC4K
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHcmFwaDo6Y29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHcmFwaDo6YmFzaWNCbG9ja3MpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdyYXBo
OjppbnN0cnVjdGlvbnMpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdyYXBoOjpiYXNpY0Jsb2Nr
c0luUmV2ZXJzZU9yZGVyKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHcmFwaDo6YmxvY2tDb250
YWluc0J5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHcmFwaDo6ZmluZEJh
c2ljQmxvY2tGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR3JhcGg6
OmZpbmRCYXNpY0Jsb2NrV2l0aExlYWRlck9mZnNldCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
R3JhcGg8QmxvY2s+OjpCeXRlY29kZUdyYXBoKToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29k
ZUluc2VydGlvblNldC5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpCeXRlY29kZUluc2VydGlv
blNldDo6YWRqdXN0T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVJbnNlcnRpb25TZXQ6
OmV4ZWN1dGUpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlSW5zZXJ0aW9uU2V0Lmg6IENv
cGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNz
QW5hbHlzaXMuaC4KKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVJbnNlcnRpb25TZXQ6OkJ5dGVjb2Rl
SW5zZXJ0aW9uU2V0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVJbnNlcnRpb25TZXQ6Omluc2Vy
dCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlSW5zZXJ0aW9uU2V0OjpyZW1vdmVCeXRlY29kZSk6
CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNwcDoKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlz
aXMpOgorICAgICAgICAoSlNDOjppc1ZhbGlkUmVnaXN0ZXJGb3JMaXZlbmVzcyk6CisgICAgICAg
IChKU0M6OnN0ZXBPdmVySW5zdHJ1Y3Rpb24pOgorICAgICAgICAoSlNDOjpjb21wdXRlTG9jYWxM
aXZlbmVzc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZUxvY2FsTGl2
ZW5lc3NGb3JCbG9jayk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6
cnVuTGl2ZW5lc3NGaXhwb2ludCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlTGl2ZW5lc3NBbmFs
eXNpczo6Z2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0ZUZ1bGxMaXZlbmVzcyk6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0ZUtpbGxzKToKKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpkdW1wUmVzdWx0cyk6CisgICAgICAgIChKU0M6
OmdldExlYWRlck9mZnNldEZvckJhc2ljQmxvY2spOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpm
aW5kQmFzaWNCbG9ja1dpdGhMZWFkZXJPZmZzZXQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpi
bG9ja0NvbnRhaW5zQnl0ZWNvZGVPZmZzZXQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpmaW5k
QmFzaWNCbG9ja0ZvckJ5dGVjb2RlT2Zmc2V0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlKTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRl
Y29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuaDoKKyAgICAgICAgKiBieXRlY29kZS9CeXRl
Y29kZVVzZURlZi5oOgorICAgICAgICAoSlNDOjpjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0
KToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAg
ICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpmaW5p
c2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6aGFuZGxlckZvckluZGV4KToK
KyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjp2YWxpZGF0ZSk6CisgICAgICAgIChKU0M6OkNvZGVC
bG9jazo6ZHVtcEJ5dGVjb2RlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpz
aHJpbmtUb0ZpdCk6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6aXNDb25zdGFudFJlZ2lzdGVySW5kZXgpOgorICAgICAg
ICAoSlNDOjpDb2RlQmxvY2s6OmxpdmVuZXNzQW5hbHlzaXMpOgorICAgICAgICAoSlNDOjpDb2Rl
QmxvY2s6OmxpdmVDYWxsZWVMb2NhbHNBdFlpZWxkKTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRl
Y29kZS9IYW5kbGVySW5mby5oOgorICAgICAgICAoSlNDOjpIYW5kbGVySW5mb0Jhc2U6OmhhbmRs
ZXJGb3JJbmRleCk6CisgICAgICAgICogYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmNwcDoK
KyAgICAgICAgKEpTQzo6Z2V0SnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAg
IChKU0M6OmNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHNJbnRlcm5hbCk6CisgICAgICAgIChKU0M6
OmNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMpOgorICAgICAgICAoSlNDOjpmaW5kSnVtcFRhcmdl
dHNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OnJlY29tcHV0ZVByZWNpc2VKdW1w
VGFyZ2V0cyk6CisgICAgICAgICogYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmg6CisgICAg
ICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpVbmxp
bmtlZENvZGVCbG9jazo6aGFuZGxlckZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6
VW5saW5rZWRDb2RlQmxvY2s6OmhhbmRsZXJGb3JJbmRleCk6CisgICAgICAgICogYnl0ZWNvZGUv
VW5saW5rZWRDb2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRTdHJpbmdKdW1wVGFi
bGU6Om9mZnNldEZvclZhbHVlKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6Omp1
bXBUYXJnZXRzKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OnByb3BlcnR5QWNj
ZXNzSW5zdHJ1Y3Rpb25zKToKKyAgICAgICAgKiBieXRlY29kZS9WaXJ0dWFsUmVnaXN0ZXIuaDoK
KyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUpOgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdE5ld0dlbmVyYXRvckZyYW1lKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXRDb21wbGV4UG9wU2NvcGVzKToKKyAgICAgICAgKEpTQzo6cHJlcGFyZUp1
bXBUYWJsZUZvclN0cmluZ1N3aXRjaCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0WWllbGRQb2ludCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
U2F2ZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzdW1lKToKKyAg
ICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRvckZyYW1lUmVnaXN0ZXIpOgorICAgICAgICAqIGRm
Zy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBnZW5lcmF0ZS1ieXRlY29kZS1maWxlczoK
KyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6OmZp
bmRFeGNlcHRpb25IYW5kbGVyKToKKyAgICAgICAgKEpTQzo6R2V0Q2F0Y2hIYW5kbGVyRnVuY3Rv
cjo6b3BlcmF0b3IoKSk6CisgICAgICAgIChKU0M6OlVud2luZEZ1bmN0b3I6Om9wZXJhdG9yKCkp
OgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmg6CisgICAgICAgIChKU0M6Oklu
dGVycHJldGVyOjpnZXRPcGNvZGVJRCk6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAg
IChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcyk6IERlbGV0ZWQuCisgICAgICAgICog
aml0L0pJVC5oOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0X29wX3NhdmUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bf
cmVzdW1lKTogRGVsZXRlZC4KKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFz
bToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6UGFyc2VyPExl
eGVyVHlwZT46OnBhcnNlSW5uZXIpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6
cGFyc2VHZW5lcmF0b3JGdW5jdGlvblNvdXJjZUVsZW1lbnRzKToKKyAgICAgICAgKEpTQzo6UGFy
c2VyPExleGVyVHlwZT46OmNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMpOgorICAgICAgICAqIHBh
cnNlci9QYXJzZXIuaDoKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHA6Cisg
ICAgICAgIChKU0M6OlNMT1dfUEFUSF9ERUNMKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1l
L0NvbW1vblNsb3dQYXRocy5oOgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJhdG9yRnJhbWUuY3Bw
OiBSZW1vdmVkLgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6R2VuZXJhdG9yRnJhbWUp
OiBEZWxldGVkLgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6ZmluaXNoQ3JlYXRpb24p
OiBEZWxldGVkLgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlU3RydWN0dXJl
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OmNyZWF0ZSk6IERlbGV0
ZWQuCisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpzYXZlKTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OnJlc3VtZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
OkdlbmVyYXRvckZyYW1lOjp2aXNpdENoaWxkcmVuKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50
aW1lL0dlbmVyYXRvckZyYW1lLmg6IFJlbW92ZWQuCisgICAgICAgIChKU0M6OkdlbmVyYXRvckZy
YW1lOjpsb2NhbHMpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6bG9j
YWxBdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpvZmZzZXRPZkxv
Y2Fscyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjphbGxvY2F0aW9u
U2l6ZUZvckxvY2Fscyk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAg
ICAgIChKU0M6OlZNOjpWTSk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9WTS5oOgorICAg
ICAgICAqIHRlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQtYXJyYXkuanM6IEFkZGVk
LgorICAgICAgICAoZmliKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1m
dGwtYW5kLW9iamVjdC5qczogQWRkZWQuCisgICAgICAgIChmaWIpOgorICAgICAgICAqIHRlc3Rz
L3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQtc3RyaW5nLmpzOiBBZGRlZC4KKyAgICAgICAg
KGZpYik6CisgICAgICAgICogdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLmpzOiBBZGRl
ZC4KKyAgICAgICAgKGZpYik6CisgICAgICAgICogdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1mcmFt
ZS1lbXB0eS5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRUaHJvdyk6CisgICAgICAgIChzaG91
bGRUaHJvdy5maWIpOgorCiAyMDE2LTA3LTEyICBHeXV5b3VuZyBLaW0gIDxneXV5b3VuZy5raW1A
d2Via2l0Lm9yZz4KIAogICAgICAgICBSZW1vdmUgRU5BQkxFX0NTUzNfVEVYVF9MSU5FX0JSRUFL
IGZsYWcKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA1NzQ4MmYwZGJjZjc3
MDdjMzA3NzA3ZGZjY2IxZjJiNTVjZmQwOGM0Li5mOWEzNGRkNmY0M2M3ZTE4MTA3M2FlZjBkZDc4
ZmFjOWJkY2Q4M2E0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0
cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0xNzgs
NiArMTc4LDggQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBieXRlY29kZS9BcnJh
eUFsbG9jYXRpb25Qcm9maWxlLmNwcAogICAgIGJ5dGVjb2RlL0FycmF5UHJvZmlsZS5jcHAKICAg
ICBieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suY3BwCisgICAgYnl0ZWNvZGUvQnl0ZWNvZGVH
ZW5lcmF0b3JpZmljYXRpb24uY3BwCisgICAgYnl0ZWNvZGUvQnl0ZWNvZGVJbnNlcnRpb25TZXQu
Y3BwCiAgICAgYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5jcHAKICAgICBieXRl
Y29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwCiAgICAgYnl0ZWNvZGUvQ2FsbEVkZ2Uu
Y3BwCkBAIC02NTUsNyArNjU3LDYgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBy
dW50aW1lL0Z1bmN0aW9uSGFzRXhlY3V0ZWRDYWNoZS5jcHAKICAgICBydW50aW1lL0Z1bmN0aW9u
UHJvdG90eXBlLmNwcAogICAgIHJ1bnRpbWUvRnVuY3Rpb25SYXJlRGF0YS5jcHAKLSAgICBydW50
aW1lL0dlbmVyYXRvckZyYW1lLmNwcAogICAgIHJ1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Db25z
dHJ1Y3Rvci5jcHAKICAgICBydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcAog
ICAgIHJ1bnRpbWUvR2VuZXJhdG9yUHJvdG90eXBlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagppbmRleCA1OTE3YWViMDAwZTkwMjIzMmE5M2ZkNjkyZjAwM2YxNTM1YTk0MjQ5Li5iZmU5
YmRkMjNjMjc3MmRiNDM5MmZjYmRkODg1YjhjOTI4YmUyYThmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtMTI1Miw4ICsxMjUyLDYgQEAKIAkJNzA5RkI4NkMxQUUzMzVDNjAwMzlE
MDY5IC8qIFdlYWtTZXRQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDcwOUZCODY2MUFFMzM1QzYwMDM5RDA2OSAvKiBXZWFrU2V0UHJvdG90
eXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
NzBCMEE5RDExQTlCNjY0NjAwMDEzMDZBIC8qIFJ1bnRpbWVGbGFncy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBCMEE5RDAxQTlCNjYyMDAwMDEzMDZB
IC8qIFJ1bnRpbWVGbGFncy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTcwQjc5MTkxMUMwMjRBMTMwMDI0ODFFMiAvKiBTb3VyY2VDb2RlS2V5Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEI3OTE4RTFD
MDI0NEM5MDAyNDgxRTIgLyogU291cmNlQ29kZUtleS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTcwQjc5MTkyMUMwMjRBMjMwMDI0ODFFMiAvKiBH
ZW5lcmF0b3JGcmFtZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3MEI3OTE4MzFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnJhbWUuY3BwICov
OyB9OwotCQk3MEI3OTE5MzFDMDI0QTI4MDAyNDgxRTIgLyogR2VuZXJhdG9yRnJhbWUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwQjc5MTg0MUMwMjQ0
MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGcmFtZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcwQjc5MTk0MUMwMjRBMjgwMDI0ODFFMiAvKiBHZW5l
cmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDcwQjc5MTg1MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JG
dW5jdGlvbkNvbnN0cnVjdG9yLmNwcCAqLzsgfTsKIAkJNzBCNzkxOTUxQzAyNEEyODAwMjQ4MUUy
IC8qIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwQjc5MTg2MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5l
cmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzBCNzkxOTYxQzAyNEEyODAwMjQ4MUUyIC8qIEdlbmVyYXRv
ckZ1bmN0aW9uUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDcwQjc5MTg3MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlv
blByb3RvdHlwZS5jcHAgKi87IH07CkBAIC0zNDQ1LDggKzM0NDMsNiBAQAogCQk3MDlGQjg2NTFB
RTMzNUM2MDAzOUQwNjkgLyogV2Vha1NldFByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBXZWFrU2V0UHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNzA5RkI4NjYxQUUzMzVDNjAwMzlEMDY5IC8qIFdlYWtTZXRQcm90b3R5
cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vha1NldFByb3RvdHlwZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MEIwQTlEMDFBOUI2NjIwMDAwMTMwNkEg
LyogUnVudGltZUZsYWdzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJ1bnRp
bWVGbGFncy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3MEI3OTE4MzFDMDI0NDMy
MDAyNDgxRTIgLyogR2VuZXJhdG9yRnJhbWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gR2VuZXJhdG9yRnJhbWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQk3MEI3OTE4NDFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnJhbWUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2VuZXJhdG9yRnJhbWUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNzBCNzkxODUxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1
bmN0aW9uQ29uc3RydWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTcwQjc5MTg2MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvbkNv
bnN0cnVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdlbmVyYXRvckZ1
bmN0aW9uQ29uc3RydWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzBCNzkx
ODcxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90
eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTU2NjcsOCArNTY2Myw2IEBA
CiAJCQkJRjY5MkE4NUQwMjU1NTk3RDAxRkY2MEY3IC8qIEZ1bmN0aW9uUHJvdG90eXBlLmggKi8s
CiAJCQkJNjJEMkQzOEQxQURGMTAzRjAwMDIwNkMxIC8qIEZ1bmN0aW9uUmFyZURhdGEuY3BwICov
LAogCQkJCTYyRDJEMzhFMUFERjEwM0YwMDAyMDZDMSAvKiBGdW5jdGlvblJhcmVEYXRhLmggKi8s
Ci0JCQkJNzBCNzkxODMxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZyYW1lLmNwcCAqLywK
LQkJCQk3MEI3OTE4NDFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnJhbWUuaCAqLywKIAkJ
CQk3MEI3OTE4NTFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rv
ci5jcHAgKi8sCiAJCQkJNzBCNzkxODYxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0
aW9uQ29uc3RydWN0b3IuaCAqLywKIAkJCQk3MEI3OTE4NzFDMDI0NDMyMDAyNDgxRTIgLyogR2Vu
ZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3BwICovLApAQCAtNjI2MSw2ICs2MjU1LDcgQEAKIAkJ
CQkwRjY5Q0M4NjE5M0FDNjBBMDA0NTc1OUUgLyogREZHRnJvemVuVmFsdWUuY3BwICovLAogCQkJ
CTBGNjlDQzg3MTkzQUM2MEEwMDQ1NzU5RSAvKiBERkdGcm96ZW5WYWx1ZS5oICovLAogCQkJCTg2
RUM5REI2MTMyOERGODIwMDJCMkFENyAvKiBERkdHZW5lcmF0aW9uSW5mby5oICovLAorCQkJCTcw
NzkxNDFDMUM0QUE4MDcwMEI4MkZGNyAvKiBERkdHZW5lcmF0b3JMb2NhbERhdGEuaCAqLywKIAkJ
CQk4NkVDOURCNzEzMjhERjgyMDAyQjJBRDcgLyogREZHR3JhcGguY3BwICovLAogCQkJCTg2RUM5
REI4MTMyOERGODIwMDJCMkFENyAvKiBERkdHcmFwaC5oICovLAogCQkJCTBGMkZDQ0YyMThBNjAw
NzAwMDFBMjdGOCAvKiBERkdHcmFwaFNhZmVwb2ludC5jcHAgKi8sCkBAIC03MzY0LDcgKzczNTks
NiBAQAogCQkJCUE3Mzc4MTBFMTc5OUVBMkUwMDgxNzUzMyAvKiBERkdOYXR1cmFsTG9vcHMuaCBp
biBIZWFkZXJzICovLAogCQkJCTg2RUNBM0VBMTMyREVGMUMwMDJCMkFENyAvKiBERkdOb2RlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRkZCOTIxQjE2RDAyRjAxMDA1NUE1REIgLyogREZHTm9kZUFs
bG9jYXRvci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNzBCNzkxOTMxQzAyNEEyODAwMjQ4MUUyIC8q
IEdlbmVyYXRvckZyYW1lLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkE1ODFCQjE1MEU5NTMwMDBC
OUEyRDkgLyogREZHTm9kZUZsYWdzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjMwMEI3ODE4QUIw
NTExMDBBNkQ3MkUgLyogREZHTm9kZU9yaWdpbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZBNTgx
QkMxNTBFOTUzMDAwQjlBMkQ5IC8qIERGR05vZGVUeXBlLmggaW4gSGVhZGVycyAqLywKQEAgLTgw
MjgsNiArODAyMiw3IEBACiAJCQkJMEZFMDUwMjkxQUE5MDk1NjAwRDMzQjMzIC8qIFNjb3BlZEFy
Z3VtZW50c1RhYmxlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkUwNTAyQjFBQTkwOTU2MDBEMzNC
MzMgLyogU2NvcGVPZmZzZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjRFNTUyMTdFRTI3NDkw
MEFCQjIxNyAvKiBTY3JhdGNoUmVnaXN0ZXJBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTcwNzkxNDFEMUM0QUE4NjAwMEI4MkZGNyAvKiBERkdHZW5lcmF0b3JMb2NhbERhdGEuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE1RkQwMDY4MTg5QUZFOUMwMDYzMzIzMSAvKiBTY3JpcHRBcmd1bWVu
dHMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1MDNGQTIxMTg4RUZGNjgwMDExMEYxNCAvKiBTY3Jp
cHRCcmVha3BvaW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNUZEMDA2RTE4OUIwMEFBMDA2MzMy
MzEgLyogU2NyaXB0Q2FsbEZyYW1lLmggaW4gSGVhZGVycyAqLywKQEAgLTk0NDAsNyArOTQzNSw2
IEBACiAJCQkJNzlFRTBCRkYxQjRBRkI4NTAwMDM4NUM5IC8qIFZhcmlhYmxlRW52aXJvbm1lbnQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY2QzczNTAxQUM5Rjk5RjAwQkUxNjgyIC8qIFZhcmlh
YmxlV3JpdGVGaXJlRGV0YWlsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRTA1MDJDMUFBOTA5
NTYwMEQzM0IzMyAvKiBWYXJPZmZzZXQuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNzBCNzkxOTIx
QzAyNEEyMzAwMjQ4MUUyIC8qIEdlbmVyYXRvckZyYW1lLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTBGMjBDMjU5MUE4MDEzQUIwMERBMzIyOSAvKiBWaXJ0dWFsUmVnaXN0ZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJRTE4RTNBNTkwREY5Mjc4QzAwRDkwQjM0IC8qIFZNLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUZFNTkzMkE3MTgzQzVBMjYwMEExRUNDQyAvKiBWTUVudHJ5U2NvcGUuY3BwIGlu
IFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMv
R2VuZXJhdG9yUHJvdG90eXBlLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0dl
bmVyYXRvclByb3RvdHlwZS5qcwppbmRleCAzYzE0MDY4N2RmYzdlMDBlZmU5MWFlODBiMmFjNjc2
ZmE5YmY0OGY0Li40OTlkYmQzOTJlODMxM2RjZGQ4NmVjOGMxNjA1NjlkN2Q2ZjU0OWIxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvR2VuZXJhdG9yUHJvdG90eXBl
LmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9HZW5lcmF0b3JQcm90b3R5
cGUuanMKQEAgLTUxLDcgKzUxLDcgQEAgZnVuY3Rpb24gZ2VuZXJhdG9yUmVzdW1lKGdlbmVyYXRv
ciwgc2VudFZhbHVlLCByZXN1bWVNb2RlKQogICAgIH0gZWxzZSB7CiAgICAgICAgIHRyeSB7CiAg
ICAgICAgICAgICBnZW5lcmF0b3IuQGdlbmVyYXRvclN0YXRlID0gQEdlbmVyYXRvclN0YXRlRXhl
Y3V0aW5nOwotICAgICAgICAgICAgdmFsdWUgPSBnZW5lcmF0b3IuQGdlbmVyYXRvck5leHQuQGNh
bGwoZ2VuZXJhdG9yLkBnZW5lcmF0b3JUaGlzLCBnZW5lcmF0b3IsIHN0YXRlLCBzZW50VmFsdWUs
IHJlc3VtZU1vZGUpOworICAgICAgICAgICAgdmFsdWUgPSBnZW5lcmF0b3IuQGdlbmVyYXRvck5l
eHQuQGNhbGwoZ2VuZXJhdG9yLkBnZW5lcmF0b3JUaGlzLCBnZW5lcmF0b3IsIHN0YXRlLCBzZW50
VmFsdWUsIHJlc3VtZU1vZGUsIGdlbmVyYXRvci5AZ2VuZXJhdG9yRnJhbWUpOwogICAgICAgICAg
ICAgaWYgKGdlbmVyYXRvci5AZ2VuZXJhdG9yU3RhdGUgPT09IEBHZW5lcmF0b3JTdGF0ZUV4ZWN1
dGluZykgewogICAgICAgICAgICAgICAgIGdlbmVyYXRvci5AZ2VuZXJhdG9yU3RhdGUgPSBAR2Vu
ZXJhdG9yU3RhdGVDb21wbGV0ZWQ7CiAgICAgICAgICAgICAgICAgZG9uZSA9IHRydWU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2Nr
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2su
Y3BwCmluZGV4IDdmMTdjMGVmMTBiNDMzZmFjOGY1OGNiM2I5Y2E1ZDRkMDE1YmJhMDguLjJjMDBi
MzM1MDE4MDIxMmU3Mzk3YmFlMzU3M2I5YTZmZTlhYTI3OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suY3BwCkBAIC02MCw2
ICs2MCw3IEBAIHN0YXRpYyBib29sIGlzQnJhbmNoKE9wY29kZUlEIG9wY29kZUlEKQogICAgIGNh
c2Ugb3Bfc3dpdGNoX3N0cmluZzoKICAgICBjYXNlIG9wX3NhdmU6CiAgICAgICAgIHJldHVybiB0
cnVlOworCiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KQEAgLTEx
MCwxMCArMTExLDExIEBAIHN0YXRpYyB2b2lkIGxpbmtCbG9ja3MoQnl0ZWNvZGVCYXNpY0Jsb2Nr
KiBwcmVkZWNlc3NvciwgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBzdWNjCiAgICAgcHJlZGVjZXNzb3It
PmFkZFN1Y2Nlc3NvcihzdWNjZXNzb3IpOwogfQogCi12b2lkIGNvbXB1dGVCeXRlY29kZUJhc2lj
QmxvY2tzKENvZGVCbG9jayogY29kZUJsb2NrLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVj
b2RlQmFzaWNCbG9jaz4+JiBiYXNpY0Jsb2NrcykKK3RlbXBsYXRlPHR5cGVuYW1lIEJsb2NrLCB0
eXBlbmFtZSBJbnN0cnVjdGlvbj4KK3N0YXRpYyB2b2lkIGNvbXB1dGVCeXRlY29kZUJhc2ljQmxv
Y2tzSW50ZXJuYWwoQmxvY2sqIGNvZGVCbG9jaywgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0Jl
Z2luLCB1bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50LCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5
dGVjb2RlQmFzaWNCbG9jaz4+JiBiYXNpY0Jsb2NrcykKIHsKICAgICBWZWN0b3I8dW5zaWduZWQs
IDMyPiBqdW1wVGFyZ2V0czsKLSAgICBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKGNvZGVCbG9j
aywganVtcFRhcmdldHMpOworICAgIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMoY29kZUJsb2Nr
LCBpbnN0cnVjdGlvbnNCZWdpbiwgaW5zdHJ1Y3Rpb25Db3VudCwganVtcFRhcmdldHMpOwogCiAg
ICAgLy8gQ3JlYXRlIHRoZSBlbnRyeSBhbmQgZXhpdCBiYXNpYyBibG9ja3MuCiAgICAgYmFzaWNC
bG9ja3MucmVzZXJ2ZUNhcGFjaXR5KGp1bXBUYXJnZXRzLnNpemUoKSArIDIpOwpAQCAtMTMxLDEw
ICsxMzMsOCBAQCB2b2lkIGNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzKENvZGVCbG9jayogY29k
ZUJsb2NrLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dAogICAgIGJvb2wgbmV4dEluc3RydWN0
aW9uSXNMZWFkZXIgPSBmYWxzZTsKIAogICAgIEludGVycHJldGVyKiBpbnRlcnByZXRlciA9IGNv
ZGVCbG9jay0+dm0oKS0+aW50ZXJwcmV0ZXI7Ci0gICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9u
c0JlZ2luID0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpOwotICAgIHVuc2lnbmVk
IGluc3RydWN0aW9uQ291bnQgPSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLnNpemUoKTsKICAg
ICBmb3IgKHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0ID0gMDsgYnl0ZWNvZGVPZmZzZXQgPCBpbnN0
cnVjdGlvbkNvdW50OykgewotICAgICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGludGVycHJldGVy
LT5nZXRPcGNvZGVJRChpbnN0cnVjdGlvbnNCZWdpbltieXRlY29kZU9mZnNldF0udS5vcGNvZGUp
OworICAgICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGludGVycHJldGVyLT5nZXRPcGNvZGVJRChp
bnN0cnVjdGlvbnNCZWdpbltieXRlY29kZU9mZnNldF0pOwogICAgICAgICB1bnNpZ25lZCBvcGNv
ZGVMZW5ndGggPSBvcGNvZGVMZW5ndGhzW29wY29kZUlEXTsKIAogICAgICAgICBib29sIGNyZWF0
ZWRCbG9jayA9IGZhbHNlOwpAQCAtMTY5LDggKzE2OSw3IEBAIHZvaWQgY29tcHV0ZUJ5dGVjb2Rl
QmFzaWNCbG9ja3MoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8
Qnl0CiAKICAgICAgICAgYm9vbCBmYWxsc1Rocm91Z2ggPSB0cnVlOyAKICAgICAgICAgZm9yICh1
bnNpZ25lZCBieXRlY29kZU9mZnNldCA9IGJsb2NrLT5sZWFkZXJCeXRlY29kZU9mZnNldCgpOyBi
eXRlY29kZU9mZnNldCA8IGJsb2NrLT5sZWFkZXJCeXRlY29kZU9mZnNldCgpICsgYmxvY2stPnRv
dGFsQnl0ZWNvZGVMZW5ndGgoKTspIHsKLSAgICAgICAgICAgIGNvbnN0IEluc3RydWN0aW9uJiBj
dXJyZW50SW5zdHJ1Y3Rpb24gPSBpbnN0cnVjdGlvbnNCZWdpbltieXRlY29kZU9mZnNldF07Ci0g
ICAgICAgICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGludGVycHJldGVyLT5nZXRPcGNvZGVJRChj
dXJyZW50SW5zdHJ1Y3Rpb24udS5vcGNvZGUpOworICAgICAgICAgICAgT3Bjb2RlSUQgb3Bjb2Rl
SUQgPSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25zQmVnaW5bYnl0ZWNvZGVP
ZmZzZXRdKTsKICAgICAgICAgICAgIHVuc2lnbmVkIG9wY29kZUxlbmd0aCA9IG9wY29kZUxlbmd0
aHNbb3Bjb2RlSURdOwogICAgICAgICAgICAgLy8gSWYgd2UgZm91bmQgYSB0ZXJtaW5hbCBieXRl
Y29kZSwgbGluayB0byB0aGUgZXhpdCBibG9jay4KICAgICAgICAgICAgIGlmIChpc1Rlcm1pbmFs
KG9wY29kZUlEKSkgewpAQCAtMTg1LDcgKzE4NCw3IEBAIHZvaWQgY29tcHV0ZUJ5dGVjb2RlQmFz
aWNCbG9ja3MoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0
CiAgICAgICAgICAgICAvLyBibG9jayBiZWNhdXNlIHRoZSBmaW5hbGx5IGJsb2NrIHdpbGwgY3Jl
YXRlIGl0cyBvd24gY2F0Y2gsIHdoaWNoIHdpbGwgZ2VuZXJhdGUgYSBIYW5kbGVySW5mby4KICAg
ICAgICAgICAgIGlmIChpc1Rocm93KG9wY29kZUlEKSkgewogICAgICAgICAgICAgICAgIEFTU0VS
VChieXRlY29kZU9mZnNldCArIG9wY29kZUxlbmd0aCA9PSBibG9jay0+bGVhZGVyQnl0ZWNvZGVP
ZmZzZXQoKSArIGJsb2NrLT50b3RhbEJ5dGVjb2RlTGVuZ3RoKCkpOwotICAgICAgICAgICAgICAg
IEhhbmRsZXJJbmZvKiBoYW5kbGVyID0gY29kZUJsb2NrLT5oYW5kbGVyRm9yQnl0ZWNvZGVPZmZz
ZXQoYnl0ZWNvZGVPZmZzZXQpOworICAgICAgICAgICAgICAgIGF1dG8qIGhhbmRsZXIgPSBjb2Rl
QmxvY2stPmhhbmRsZXJGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCk7CiAgICAgICAg
ICAgICAgICAgZmFsbHNUaHJvdWdoID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgaWYgKCFoYW5k
bGVyKSB7CiAgICAgICAgICAgICAgICAgICAgIGxpbmtCbG9ja3MoYmxvY2ssIGV4aXQuZ2V0KCkp
OwpAQCAtMjA1LDcgKzIwNCw3IEBAIHZvaWQgY29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MoQ29k
ZUJsb2NrKiBjb2RlQmxvY2ssIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0CiAgICAgICAgICAg
ICBpZiAoaXNCcmFuY2gob3Bjb2RlSUQpKSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKGJ5dGVj
b2RlT2Zmc2V0ICsgb3Bjb2RlTGVuZ3RoID09IGJsb2NrLT5sZWFkZXJCeXRlY29kZU9mZnNldCgp
ICsgYmxvY2stPnRvdGFsQnl0ZWNvZGVMZW5ndGgoKSk7CiAgICAgICAgICAgICAgICAgVmVjdG9y
PHVuc2lnbmVkLCAxPiBieXRlY29kZU9mZnNldHNKdW1wZWRUbzsKLSAgICAgICAgICAgICAgICBm
aW5kSnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChjb2RlQmxvY2ssIGJ5dGVjb2RlT2Zmc2V0
LCBieXRlY29kZU9mZnNldHNKdW1wZWRUbyk7CisgICAgICAgICAgICAgICAgZmluZEp1bXBUYXJn
ZXRzRm9yQnl0ZWNvZGVPZmZzZXQoY29kZUJsb2NrLCBpbnN0cnVjdGlvbnNCZWdpbiwgYnl0ZWNv
ZGVPZmZzZXQsIGJ5dGVjb2RlT2Zmc2V0c0p1bXBlZFRvKTsKIAogICAgICAgICAgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBiYXNpY0Jsb2Nrcy5zaXplKCk7IGkrKykgewogICAgICAg
ICAgICAgICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIG90aGVyQmxvY2sgPSBiYXNpY0Jsb2Nr
c1tpXS5nZXQoKTsKQEAgLTIzNSw0ICsyMzQsMTQgQEAgdm9pZCBjb21wdXRlQnl0ZWNvZGVCYXNp
Y0Jsb2NrcyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXQK
ICAgICAgICAgYmFzaWNCbG9jay0+c2hyaW5rVG9GaXQoKTsKIH0KIAordm9pZCBjb21wdXRlQnl0
ZWNvZGVCYXNpY0Jsb2NrcyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgSW5zdHJ1Y3Rpb24qIGluc3Ry
dWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50LCBWZWN0b3I8c3RkOjp1bmlx
dWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+JiBiYXNpY0Jsb2NrcykKK3sKKyAgICBjb21wdXRl
Qnl0ZWNvZGVCYXNpY0Jsb2Nrc0ludGVybmFsKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb25zQmVnaW4s
IGluc3RydWN0aW9uQ291bnQsIGJhc2ljQmxvY2tzKTsKK30KKwordm9pZCBjb21wdXRlQnl0ZWNv
ZGVCYXNpY0Jsb2NrcyhVbmxpbmtlZENvZGVCbG9jayogY29kZUJsb2NrLCBVbmxpbmtlZEluc3Ry
dWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCwgVmVj
dG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9ja3MpCit7
CisgICAgY29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3NJbnRlcm5hbChjb2RlQmxvY2ssIGluc3Ry
dWN0aW9uc0JlZ2luLCBpbnN0cnVjdGlvbkNvdW50LCBiYXNpY0Jsb2Nrcyk7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlQmFzaWNCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlQmFzaWNCbG9jay5oCmluZGV4IGJkN2QzYWU5YmEzNDNlMWIwNzE3OWU5OGYxZWU4OWRh
NjViYTdlMjAuLjY3MmJmM2RkYzhiNzJhOTc1YWE1ZWIwOTM0MWUwMTI0Y2Y1MzlhOGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2su
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2Nr
LmgKQEAgLTM1LDYgKzM1LDkgQEAKIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBDb2RlQmxvY2s7
CitjbGFzcyBVbmxpbmtlZENvZGVCbG9jazsKK2NsYXNzIEluc3RydWN0aW9uOworY2xhc3MgVW5s
aW5rZWRJbnN0cnVjdGlvbjsKIAogY2xhc3MgQnl0ZWNvZGVCYXNpY0Jsb2NrIHsKICAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTcwLDcgKzczLDggQEAgY2xhc3MgQnl0ZWNvZGVCYXNp
Y0Jsb2NrIHsKICAgICBGYXN0Qml0VmVjdG9yIG1fb3V0OwogfTsKIAotdm9pZCBjb21wdXRlQnl0
ZWNvZGVCYXNpY0Jsb2NrcyhDb2RlQmxvY2sqLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVj
b2RlQmFzaWNCbG9jaz4+Jik7Cit2b2lkIGNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzKENvZGVC
bG9jayosIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgaW5zdHJ1Y3Rp
b25Db3VudCwgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYpOwor
dm9pZCBjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2NrcyhVbmxpbmtlZENvZGVCbG9jayosIFVubGlu
a2VkSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBpbnN0cnVjdGlvbkNv
dW50LCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+Jik7CiAKIGlu
bGluZSBCeXRlY29kZUJhc2ljQmxvY2s6OkJ5dGVjb2RlQmFzaWNCbG9jayh1bnNpZ25lZCBzdGFy
dCwgdW5zaWduZWQgbGVuZ3RoKQogICAgIDogbV9sZWFkZXJCeXRlY29kZU9mZnNldChzdGFydCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUdlbmVy
YXRvcmlmaWNhdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA5MzUxZmRkYTA0MGQ1N2Q3M2Fh
MjBkOTJiOTM3ZjUwY2U3NmNjZGQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwCkBAIC0wLDAgKzEs
MzY3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IFl1c3VrZSBTdXp1a2kgPHl1c3VrZS5z
dXp1a2lAc3NsYWIuaWNzLmtlaW8uYWMuanA+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5oIgorCisjaW5jbHVkZSAi
SWRlbnRpZmllcklubGluZXMuaCIKKyNpbmNsdWRlICJJbnRlcnByZXRlci5oIgorI2luY2x1ZGUg
IkpTQ0pTVmFsdWVJbmxpbmVzLmgiCisjaW5jbHVkZSAiQnl0ZWNvZGVJbnNlcnRpb25TZXQuaCIK
KyNpbmNsdWRlICJCeXRlY29kZVVzZURlZi5oIgorI2luY2x1ZGUgIlN0cm9uZ0lubGluZXMuaCIK
KyNpbmNsdWRlICJVbmxpbmtlZENvZGVCbG9jay5oIgorCituYW1lc3BhY2UgSlNDIHsKKworc3Rh
dGljIGJvb2wgaXNWYWxpZFJlZ2lzdGVyRm9yTGl2ZW5lc3MoaW50IG9wZXJhbmQpCit7CisgICAg
VmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWcob3BlcmFuZCk7CisgICAgaWYgKHZpcnR1YWxSZWcu
aXNDb25zdGFudCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHZpcnR1YWxS
ZWcuaXNMb2NhbCgpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgordm9pZCBjb21w
dXRlR2VuZXJhdG9yRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KFVubGlua2VkQ29kZUJsb2NrKiBjb2Rl
QmxvY2ssIE9wY29kZUlEIG9wY29kZUlELCBVbmxpbmtlZEluc3RydWN0aW9uKiBpbnN0cnVjdGlv
biwgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaywgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIGNv
bnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCit7CisgICAgVU5VU0VEX1BBUkFNKGJ5dGVjb2RlT2Zmc2V0
KTsKKyAgICBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9jaywgb3Bjb2RlSUQs
IGluc3RydWN0aW9uLCBmdW5jdG9yKTsKKworICAgIHN3aXRjaCAob3Bjb2RlSUQpIHsKKyAgICBj
YXNlIG9wX3NhdmU6CisgICAgICAgIHJldHVybjsKKworICAgIGNhc2Ugb3BfcmVzdW1lOiB7Cisg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKGJsb2NrLT5zdWNjZXNzb3JzKCkuc2l6ZSgpID09IDEpOwor
ICAgICAgICBibG9jay0+c3VjY2Vzc29ycygpWzBdLT5pbigpLmZvckVhY2hTZXRCaXQoWyZdKHVu
c2lnbmVkIGxvY2FsKSB7CisgICAgICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rp
b24sIG9wY29kZUlELCB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChsb2NhbCkub2Zmc2V0KCkpOwor
ICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGRlZmF1bHQ6CisgICAg
ICAgIHJldHVybjsKKyAgICB9Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+Cit2b2lk
IGNvbXB1dGVHZW5lcmF0b3JVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoVW5saW5rZWRDb2RlQmxvY2sq
IGNvZGVCbG9jaywgT3Bjb2RlSUQgb3Bjb2RlSUQsIFVubGlua2VkSW5zdHJ1Y3Rpb24qIGluc3Ry
dWN0aW9uLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9mZnNl
dCwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikKK3sKKyAgICBjb21wdXRlVXNlc0ZvckJ5dGVjb2Rl
T2Zmc2V0KGNvZGVCbG9jaywgb3Bjb2RlSUQsIGluc3RydWN0aW9uLCBmdW5jdG9yKTsKKworICAg
IHN3aXRjaCAob3Bjb2RlSUQpIHsKKyAgICBjYXNlIG9wX3NhdmU6IHsKKyAgICAgICAgZnVuY3Rv
cihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb25bMV0udS5vcGVy
YW5kKTsKKyAgICAgICAgdW5zaWduZWQgbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0ID0gYnl0ZWNv
ZGVPZmZzZXQgKyBpbnN0cnVjdGlvblszXS51Lm9wZXJhbmQ7CisgICAgICAgIEJ5dGVjb2RlQmFz
aWNCbG9jayogbWVyZ2VQb2ludEJsb2NrID0gbnVsbHB0cjsKKyAgICAgICAgZm9yIChCeXRlY29k
ZUJhc2ljQmxvY2sqIHN1Y2Nlc3NvciA6IGJsb2NrLT5zdWNjZXNzb3JzKCkpIHsKKyAgICAgICAg
ICAgIGlmIChzdWNjZXNzb3ItPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCkgPT0gbWVyZ2VQb2ludEJ5
dGVjb2RlT2Zmc2V0KSB7CisgICAgICAgICAgICAgICAgbWVyZ2VQb2ludEJsb2NrID0gc3VjY2Vz
c29yOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgICAgIEFTU0VSVChtZXJnZVBvaW50QmxvY2spOworICAgICAgICBtZXJnZVBvaW50QmxvY2st
PmluKCkuZm9yRWFjaFNldEJpdChbJl0odW5zaWduZWQgbG9jYWwpIHsKKyAgICAgICAgICAgIGZ1
bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIHZpcnR1YWxSZWdpc3RlckZv
ckxvY2FsKGxvY2FsKS5vZmZzZXQoKSk7CisgICAgICAgIH0pOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgY2FzZSBvcF9yZXN1bWU6CisgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBp
bnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CisgICAgICAg
IHJldHVybjsKKworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybjsKKyAgICB9Cit9CisKKy8v
IFNpbXBsaWZpZWQgaW50ZXJmYWNlIHRvIGJ5dGVjb2RlIHVzZS9kZWYsIHdoaWNoIGRldGVybWlu
ZXMgZGVmcyBmaXJzdCBhbmQgdGhlbiB1c2VzLCBhbmQgaW5jbHVkZXMKKy8vIGV4Y2VwdGlvbiBo
YW5kbGVycyBpbiB0aGUgdXNlcy4KK3RlbXBsYXRlPHR5cGVuYW1lIFVzZUZ1bmN0b3IsIHR5cGVu
YW1lIERlZkZ1bmN0b3I+CitzdGF0aWMgdm9pZCBzdGVwT3Zlckluc3RydWN0aW9uKEJ5dGVjb2Rl
R3JhcGg8VW5saW5rZWRDb2RlQmxvY2s+JiBncmFwaCwgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9j
aywgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIGNvbnN0IFVzZUZ1bmN0b3ImIHVzZSwgY29uc3Qg
RGVmRnVuY3RvciYgZGVmKQoreworICAgIC8vIFRoaXMgYWJzdHJhY3RseSBleGVjdXRlIHRoZSBp
bnN0cnVjdGlvbiBpbiByZXZlcnNlLiBJbnN0cnVjdGlvbnMgbG9naWNhbGx5IGZpcnN0IHVzZSBv
cGVyYW5kcyBhbmQKKyAgICAvLyB0aGVuIGRlZmluZSBvcGVyYW5kcy4gVGhpcyBsb2dpY2FsIG9y
ZGVyaW5nIGlzIG5lY2Vzc2FyeSBmb3Igb3BlcmF0aW9ucyB0aGF0IHVzZSBhbmQgZGVmIHRoZSBz
YW1lCisgICAgLy8gb3BlcmFuZCwgbGlrZToKKyAgICAvLworICAgIC8vICAgICBvcF9hZGQgbG9j
MSwgbG9jMSwgbG9jMgorICAgIC8vCisgICAgLy8gVGhlIHVzZSBvZiBsb2MxIGhhcHBlbnMgYmVm
b3JlIHRoZSBkZWYgb2YgbG9jMS4gVGhhdCdzIGEgc2VtYW50aWMgcmVxdWlyZW1lbnQgc2luY2Ug
dGhlIGFkZAorICAgIC8vIG9wZXJhdGlvbiBjYW5ub3QgdHJhdmVsIGZvcndhcmQgaW4gdGltZSB0
byByZWFkIHRoZSB2YWx1ZSB0aGF0IGl0IHdpbGwgcHJvZHVjZSBhZnRlciByZWFkaW5nIHRoYXQK
KyAgICAvLyB2YWx1ZS4gU2luY2Ugd2UgYXJlIGV4ZWN1dGluZyBpbiByZXZlcnNlLCB0aGlzIG1l
YW5zIHRoYXQgd2UgbXVzdCBkbyBkZWZzIGJlZm9yZSB1c2VzIChyZXZlcnNlIG9mCisgICAgLy8g
dXNlcyBiZWZvcmUgZGVmcykuCisgICAgLy8KKyAgICAvLyBTaW5jZSB0aGlzIGlzIGEgbGl2ZW5l
c3MgYW5hbHlzaXMsIHRoaXMgb3JkZXJpbmcgZW5kcyB1cCBiZWluZyBwYXJ0aWN1bGFybHkgaW1w
b3J0YW50OiBpZiB3ZSBkaWQKKyAgICAvLyB1c2VzIGJlZm9yZSBkZWZzLCB0aGVuIHRoZSBhZGQg
b3BlcmF0aW9uIGFib3ZlIHdvdWxkIGFwcGVhciB0byBub3QgaGF2ZSBsb2MxIGxpdmUsIHNpbmNl
IHdlJ2QKKyAgICAvLyBmaXJzdCBhZGQgaXQgdG8gdGhlIG91dCBzZXQgKHRoZSB1c2UpLCBhbmQg
dGhlbiB3ZSdkIHJlbW92ZSBpdCAodGhlIGRlZikuCisKKyAgICBhdXRvJiBpbnN0cnVjdGlvbnMg
PSBncmFwaC5pbnN0cnVjdGlvbnMoKTsKKyAgICBVbmxpbmtlZEluc3RydWN0aW9uKiBpbnN0cnVj
dGlvbiA9ICZpbnN0cnVjdGlvbnNbYnl0ZWNvZGVPZmZzZXRdOworICAgIE9wY29kZUlEIG9wY29k
ZUlEID0gaW5zdHJ1Y3Rpb24tPnUub3Bjb2RlOworICAgIFVubGlua2VkQ29kZUJsb2NrKiBjb2Rl
QmxvY2sgPSBncmFwaC5jb2RlQmxvY2soKTsKKworICAgIGNvbXB1dGVHZW5lcmF0b3JEZWZzRm9y
Qnl0ZWNvZGVPZmZzZXQoCisgICAgICAgIGNvZGVCbG9jaywgb3Bjb2RlSUQsIGluc3RydWN0aW9u
LCBibG9jaywgYnl0ZWNvZGVPZmZzZXQsCisgICAgICAgIFsmXSAoVW5saW5rZWRDb2RlQmxvY2sq
LCBVbmxpbmtlZEluc3RydWN0aW9uKiwgT3Bjb2RlSUQsIGludCBvcGVyYW5kKSB7CisgICAgICAg
ICAgICBpZiAoaXNWYWxpZFJlZ2lzdGVyRm9yTGl2ZW5lc3Mob3BlcmFuZCkpCisgICAgICAgICAg
ICAgICAgZGVmKFZpcnR1YWxSZWdpc3RlcihvcGVyYW5kKS50b0xvY2FsKCkpOworICAgICAgICB9
KTsKKworICAgIGNvbXB1dGVHZW5lcmF0b3JVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoCisgICAgICAg
IGNvZGVCbG9jaywgb3Bjb2RlSUQsIGluc3RydWN0aW9uLCBibG9jaywgYnl0ZWNvZGVPZmZzZXQs
CisgICAgICAgIFsmXSAoVW5saW5rZWRDb2RlQmxvY2sqLCBVbmxpbmtlZEluc3RydWN0aW9uKiwg
T3Bjb2RlSUQsIGludCBvcGVyYW5kKSB7CisgICAgICAgICAgICBpZiAoaXNWYWxpZFJlZ2lzdGVy
Rm9yTGl2ZW5lc3Mob3BlcmFuZCkpCisgICAgICAgICAgICAgICAgdXNlKFZpcnR1YWxSZWdpc3Rl
cihvcGVyYW5kKS50b0xvY2FsKCkpOworICAgICAgICB9KTsKKworICAgIC8vIElmIHdlIGhhdmUg
YW4gZXhjZXB0aW9uIGhhbmRsZXIsIHdlIHdhbnQgdGhlIGxpdmUtaW4gdmFyaWFibGVzIG9mIHRo
ZQorICAgIC8vIGV4Y2VwdGlvbiBoYW5kbGVyIGJsb2NrIHRvIGJlIGluY2x1ZGVkIGluIHRoZSBs
aXZlLWluIG9mIHRoaXMgcGFydGljdWxhciBieXRlY29kZS4KKyAgICBpZiAoVW5saW5rZWRIYW5k
bGVySW5mbyogaGFuZGxlciA9IGNvZGVCbG9jay0+aGFuZGxlckZvckJ5dGVjb2RlT2Zmc2V0KGJ5
dGVjb2RlT2Zmc2V0KSkgeworICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGhhbmRsZXJCbG9j
ayA9IGdyYXBoLmZpbmRCYXNpY0Jsb2NrV2l0aExlYWRlck9mZnNldChoYW5kbGVyLT50YXJnZXQp
OworICAgICAgICBBU1NFUlQoaGFuZGxlckJsb2NrKTsKKyAgICAgICAgaGFuZGxlckJsb2NrLT5p
bigpLmZvckVhY2hTZXRCaXQodXNlKTsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIHN0ZXBPdmVy
SW5zdHJ1Y3Rpb24oQnl0ZWNvZGVHcmFwaDxVbmxpbmtlZENvZGVCbG9jaz4mIGdyYXBoLCBCeXRl
Y29kZUJhc2ljQmxvY2sqIGJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgRmFzdEJpdFZl
Y3RvciYgb3V0KQoreworICAgIHN0ZXBPdmVySW5zdHJ1Y3Rpb24oCisgICAgICAgIGdyYXBoLCBi
bG9jaywgYnl0ZWNvZGVPZmZzZXQsCisgICAgICAgIFsmXSAodW5zaWduZWQgYml0SW5kZXgpIHsK
KyAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIHVzZSBmdW5jdG9yLCBzbyB3ZSBzZXQgdGhlIGJp
dC4KKyAgICAgICAgICAgIG91dC5zZXQoYml0SW5kZXgpOworICAgICAgICB9LAorICAgICAgICBb
Jl0gKHVuc2lnbmVkIGJpdEluZGV4KSB7CisgICAgICAgICAgICAvLyBUaGlzIGlzIHRoZSBkZWYg
ZnVuY3Rvciwgc28gd2UgY2xlYXIgdGhlIGJpdC4KKyAgICAgICAgICAgIG91dC5jbGVhcihiaXRJ
bmRleCk7CisgICAgICAgIH0pOworfQorCitzdGF0aWMgdm9pZCBjb21wdXRlTG9jYWxMaXZlbmVz
c0ZvckJ5dGVjb2RlT2Zmc2V0KEJ5dGVjb2RlR3JhcGg8VW5saW5rZWRDb2RlQmxvY2s+JiBncmFw
aCwgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaywgdW5zaWduZWQgdGFyZ2V0T2Zmc2V0LCBGYXN0
Qml0VmVjdG9yJiByZXN1bHQpCit7CisgICAgQVNTRVJUKCFibG9jay0+aXNFeGl0QmxvY2soKSk7
CisgICAgQVNTRVJUKCFibG9jay0+aXNFbnRyeUJsb2NrKCkpOworCisgICAgRmFzdEJpdFZlY3Rv
ciBvdXQgPSBibG9jay0+b3V0KCk7CisKKyAgICBmb3IgKGludCBpID0gYmxvY2stPmJ5dGVjb2Rl
T2Zmc2V0cygpLnNpemUoKSAtIDE7IGkgPj0gMDsgaS0tKSB7CisgICAgICAgIHVuc2lnbmVkIGJ5
dGVjb2RlT2Zmc2V0ID0gYmxvY2stPmJ5dGVjb2RlT2Zmc2V0cygpW2ldOworICAgICAgICBpZiAo
dGFyZ2V0T2Zmc2V0ID4gYnl0ZWNvZGVPZmZzZXQpCisgICAgICAgICAgICBicmVhazsKKworICAg
ICAgICBzdGVwT3Zlckluc3RydWN0aW9uKGdyYXBoLCBibG9jaywgYnl0ZWNvZGVPZmZzZXQsIG91
dCk7CisgICAgfQorCisgICAgcmVzdWx0LnNldChvdXQpOworfQorCitzdGF0aWMgdm9pZCBjb21w
dXRlTG9jYWxMaXZlbmVzc0ZvckJsb2NrKEJ5dGVjb2RlR3JhcGg8VW5saW5rZWRDb2RlQmxvY2s+
JiBncmFwaCwgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaykKK3sKKyAgICBpZiAoYmxvY2stPmlz
RXhpdEJsb2NrKCkgfHwgYmxvY2stPmlzRW50cnlCbG9jaygpKQorICAgICAgICByZXR1cm47Cisg
ICAgY29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCeXRlY29kZU9mZnNldChncmFwaCwgYmxvY2ssIGJs
b2NrLT5sZWFkZXJCeXRlY29kZU9mZnNldCgpLCBibG9jay0+aW4oKSk7Cit9CisKK2NsYXNzIEJ5
dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uIHsKK3B1YmxpYzoKKyAgICBCeXRlY29kZUdlbmVyYXRv
cmlmaWNhdGlvbihCeXRlY29kZUdyYXBoPFVubGlua2VkQ29kZUJsb2NrPiYgZ3JhcGgsIFN5bWJv
bFRhYmxlKiBnZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlLCBpbnQgZ2VuZXJhdG9yRnJhbWVTeW1i
b2xUYWJsZUluZGV4KQorICAgICAgICA6IG1fdm0oKmdyYXBoLmNvZGVCbG9jaygpLT52bSgpKQor
ICAgICAgICAsIG1fZ3JhcGgoZ3JhcGgpCisgICAgICAgICwgbV9pbnNlcnRpb25TZXQoZ3JhcGgp
CisgICAgICAgICwgbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlKG1fdm0sIGdlbmVyYXRvckZy
YW1lU3ltYm9sVGFibGUpCisgICAgICAgICwgbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlSW5k
ZXgoZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZUluZGV4KQorICAgIHsKKyAgICB9CisKKyAgICBG
YXN0Qml0VmVjdG9yIGdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQodW5zaWduZWQgYnl0
ZWNvZGVPZmZzZXQpCisgICAgeworICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrID0g
bV9ncmFwaC5maW5kQmFzaWNCbG9ja0ZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KTsK
KyAgICAgICAgQVNTRVJUKGJsb2NrKTsKKyAgICAgICAgQVNTRVJUKCFibG9jay0+aXNFbnRyeUJs
b2NrKCkpOworICAgICAgICBBU1NFUlQoIWJsb2NrLT5pc0V4aXRCbG9jaygpKTsKKyAgICAgICAg
RmFzdEJpdFZlY3RvciBvdXQ7CisgICAgICAgIG91dC5yZXNpemUoYmxvY2stPm91dCgpLm51bUJp
dHMoKSk7CisgICAgICAgIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQnl0ZWNvZGVPZmZzZXQobV9n
cmFwaCwgYmxvY2ssIGJ5dGVjb2RlT2Zmc2V0LCBvdXQpOworICAgICAgICByZXR1cm4gb3V0Owor
ICAgIH0KKworICAgIHN0cnVjdCBTdG9yYWdlIHsKKyAgICAgICAgSWRlbnRpZmllciBpZGVudGlm
aWVyOworICAgICAgICB1bnNpZ25lZCBpZGVudGlmaWVySW5kZXg7CisgICAgICAgIFNjb3BlT2Zm
c2V0IHNjb3BlT2Zmc2V0OworICAgIH07CisKKyAgICBTdG9yYWdlIHN0b3JhZ2VGb3JHZW5lcmF0
b3JMb2NhbCh1bnNpZ25lZCBpbmRleCkKKyAgICB7CisgICAgICAgIGlmIChtX3N0b3JhZ2VzLnNp
emUoKSA8PSBpbmRleCkgeworICAgICAgICAgICAgLy8gRklYTUU6IFN1cGVyIG5haXZlIGltcGxl
bWVudGF0aW9uLiBXZSBzaG91bGQgcmVjb25zaWRlciB0aGUgaW5kZXhlZCBnZW5lcmF0b3IgbG9j
YWxzIGluIHRoZSBzY29wZS4KKyAgICAgICAgICAgIFVubGlua2VkQ29kZUJsb2NrKiBjb2RlQmxv
Y2sgPSBtX2dyYXBoLmNvZGVCbG9jaygpOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MCwgYWRkaXRpb24gPSBtX3N0b3JhZ2VzLnNpemUoKSAtIGluZGV4ICsgMTsgaSA8IGFkZGl0aW9u
OyArK2kpIHsKKyAgICAgICAgICAgICAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIgPSBJZGVudGlm
aWVyOjpmcm9tVWlkKFByaXZhdGVOYW1lKCkpOworICAgICAgICAgICAgICAgIHVuc2lnbmVkIGlk
ZW50aWZpZXJJbmRleCA9IGNvZGVCbG9jay0+bnVtYmVyT2ZJZGVudGlmaWVycygpOworICAgICAg
ICAgICAgICAgIGNvZGVCbG9jay0+YWRkSWRlbnRpZmllcihpZGVudGlmaWVyKTsKKyAgICAgICAg
ICAgICAgICBTY29wZU9mZnNldCBzY29wZU9mZnNldCA9IG1fZ2VuZXJhdG9yRnJhbWVTeW1ib2xU
YWJsZS0+dGFrZU5leHRTY29wZU9mZnNldChOb0xvY2tpbmdOZWNlc3NhcnkpOworICAgICAgICAg
ICAgICAgIG1fZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZS0+c2V0KE5vTG9ja2luZ05lY2Vzc2Fy
eSwgaWRlbnRpZmllci5pbXBsKCksIFN5bWJvbFRhYmxlRW50cnkoVmFyT2Zmc2V0KHNjb3BlT2Zm
c2V0KSkpOworICAgICAgICAgICAgICAgIG1fc3RvcmFnZXMuYXBwZW5kKFN0b3JhZ2UgeyBpZGVu
dGlmaWVyLCBpZGVudGlmaWVySW5kZXgsIHNjb3BlT2Zmc2V0IH0pOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgICAgIHJldHVybiBtX3N0b3JhZ2VzW2luZGV4XTsKKyAgICB9CisKKyAg
ICBzdHJ1Y3QgR2VuZXJhdG9yUG9pbnRzIHsKKyAgICAgICAgc2l6ZV90IHNhdmVQb2ludDsKKyAg
ICAgICAgc2l6ZV90IG1lcmdlUG9pbnQ7CisgICAgICAgIHNpemVfdCByZXN1bWVQb2ludDsKKyAg
ICB9OworCisgICAgdm9pZCBydW4oKQorICAgIHsKKyAgICAgICAgcnVuTGl2ZW5lc3NBbmFseXNp
cygpOworCisgICAgICAgIC8vIFdlIHdpbGwgaW1wbGVtZW50IHRoZSB0cmFuc2Zvcm1hdGlvbiB0
aGF0IGNoYW5nZXMgb3Bfc2F2ZSAvIG9wX3Jlc3VtZSB0byBzY29wZSBvcGVyYXRpb25zIGhlcmUu
CisKKyAgICAgICAgLy8gQm9va2tlZXAgdGhlIG1lcmdlIHBvaW50IGJ5dGVjb2RlIG9mZnNldHMu
CisgICAgICAgIFZlY3RvcjxHZW5lcmF0b3JQb2ludHM+IGdlbmVyYXRvclBvaW50c1ZlY3RvcjsK
KyAgICAgICAgZm9yIChzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiYgYmxvY2sg
OiBtX2dyYXBoLmJhc2ljQmxvY2tzKCkpIHsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgYnl0
ZWNvZGVPZmZzZXQgOiBibG9jay0+Ynl0ZWNvZGVPZmZzZXRzKCkpIHsKKyAgICAgICAgICAgICAg
ICBjb25zdCBVbmxpbmtlZEluc3RydWN0aW9uKiBwYyA9ICZtX2dyYXBoLmluc3RydWN0aW9ucygp
W2J5dGVjb2RlT2Zmc2V0XTsKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKHBjLT51Lm9wY29kZSkg
eworICAgICAgICAgICAgICAgIGNhc2Ugb3Bfc2F2ZTogeworICAgICAgICAgICAgICAgICAgICB1
bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSBwY1syXS51LmluZGV4OworICAgICAgICAg
ICAgICAgICAgICBpbnQgb2Zmc2V0ID0gcGNbM10udS5vcGVyYW5kOworICAgICAgICAgICAgICAg
ICAgICBpZiAobGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID49IGdlbmVyYXRvclBvaW50c1ZlY3Rvci5z
aXplKCkpCisgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3JQb2ludHNWZWN0b3IucmVz
aXplKGxpdmVDYWxsZWVMb2NhbHNJbmRleCArIDEpOworICAgICAgICAgICAgICAgICAgICBnZW5l
cmF0b3JQb2ludHNWZWN0b3JbbGl2ZUNhbGxlZUxvY2Fsc0luZGV4XS5zYXZlUG9pbnQgPSBieXRl
Y29kZU9mZnNldDsKKyAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yUG9pbnRzVmVjdG9yW2xp
dmVDYWxsZWVMb2NhbHNJbmRleF0ubWVyZ2VQb2ludCA9IGJ5dGVjb2RlT2Zmc2V0ICsgb2Zmc2V0
OworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgICAgICBjYXNlIG9wX3Jlc3VtZTogeworICAgICAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSBwY1syXS51LmluZGV4OworICAgICAgICAgICAgICAg
ICAgICBpZiAobGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID49IGdlbmVyYXRvclBvaW50c1ZlY3Rvci5z
aXplKCkpCisgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3JQb2ludHNWZWN0b3IucmVz
aXplKGxpdmVDYWxsZWVMb2NhbHNJbmRleCArIDEpOworICAgICAgICAgICAgICAgICAgICBnZW5l
cmF0b3JQb2ludHNWZWN0b3JbbGl2ZUNhbGxlZUxvY2Fsc0luZGV4XS5yZXN1bWVQb2ludCA9IGJ5
dGVjb2RlT2Zmc2V0OworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAg
ICAvLyBQZXJmb3JtIGJ5dGVjb2RlIGxpdmVuZXNzIGFuYWx5c2lzIHRvIGRldGVybWluZSB3aGlj
aCBsb2NhbHMgYXJlIGxpdmUgYW5kIHNob3VsZCBiZSByZXN1bWVkIHdoZW4gZXhlY3V0aW5nIG9w
X3Jlc3VtZS4KKyAgICAgICAgVW5saW5rZWRDb2RlQmxvY2sqIGNvZGVCbG9jayA9IG1fZ3JhcGgu
Y29kZUJsb2NrKCk7CisgICAgICAgIGZvciAoc2l6ZV90IGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9
IDA7IGxpdmVDYWxsZWVMb2NhbHNJbmRleCA8IGdlbmVyYXRvclBvaW50c1ZlY3Rvci5zaXplKCk7
ICsrbGl2ZUNhbGxlZUxvY2Fsc0luZGV4KSB7CisgICAgICAgICAgICBjb25zdCBHZW5lcmF0b3JQ
b2ludHMmIHBvaW50cyA9IGdlbmVyYXRvclBvaW50c1ZlY3RvcltsaXZlQ2FsbGVlTG9jYWxzSW5k
ZXhdOworICAgICAgICAgICAgc2l6ZV90IG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldCA9IHBvaW50
cy5tZXJnZVBvaW50OworICAgICAgICAgICAgRmFzdEJpdFZlY3RvciBsaXZlbmVzc1ZlY3RvciA9
IGdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQobWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0
KTsKKworICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHNjb3BlID0gdmlydHVhbFJlZ2lzdGVy
Rm9yQXJndW1lbnQoNSk7CisKKyAgICAgICAgICAgIHVuc2lnbmVkIGdlbmVyYXRvckxvY2FsSW5k
ZXggPSAwOworICAgICAgICAgICAgbGl2ZW5lc3NWZWN0b3IuZm9yRWFjaFNldEJpdChbJl0oc2l6
ZV90IGluZGV4KSB7CisgICAgICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQgPSB2
aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChpbmRleCk7CisgICAgICAgICAgICAgICAgU3RvcmFnZSBz
dG9yYWdlID0gc3RvcmFnZUZvckdlbmVyYXRvckxvY2FsKGdlbmVyYXRvckxvY2FsSW5kZXgrKyk7
CisKKyAgICAgICAgICAgICAgICAvLyBvcF9zYXZlLgorICAgICAgICAgICAgICAgIG1faW5zZXJ0
aW9uU2V0Lmluc2VydChwb2ludHMuc2F2ZVBvaW50LCB7CisgICAgICAgICAgICAgICAgICAgIG9w
X3B1dF90b19zY29wZSwKKyAgICAgICAgICAgICAgICAgICAgc2NvcGUub2Zmc2V0KCksICAgICAg
ICAgICAgICAgICAgIC8vIHNjb3BlCisgICAgICAgICAgICAgICAgICAgIHN0b3JhZ2UuaWRlbnRp
ZmllckluZGV4LCAgICAgICAgICAvLyBpZGVudGlmaWVyCisgICAgICAgICAgICAgICAgICAgIG9w
ZXJhbmQub2Zmc2V0KCksICAgICAgICAgICAgICAgICAvLyB2YWx1ZQorICAgICAgICAgICAgICAg
ICAgICBHZXRQdXRJbmZvKERvTm90VGhyb3dJZk5vdEZvdW5kLCBMb2NhbENsb3N1cmVWYXIsIElu
aXRpYWxpemF0aW9uTW9kZTo6Tm90SW5pdGlhbGl6YXRpb24pLm9wZXJhbmQoKSwKKyAgICAgICAg
ICAgICAgICAgICAgbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlSW5kZXgsIC8vIHN5bWJvbCB0
YWJsZSBjb25zdGFudCBpbmRleAorICAgICAgICAgICAgICAgICAgICBzdG9yYWdlLnNjb3BlT2Zm
c2V0Lm9mZnNldCgpLCAgICAgLy8gc2NvcGUgb2Zmc2V0CisgICAgICAgICAgICAgICAgfSk7CisK
KyAgICAgICAgICAgICAgICAvLyBvcF9yZXN1bWUuCisgICAgICAgICAgICAgICAgVW5saW5rZWRW
YWx1ZVByb2ZpbGUgcHJvZmlsZSA9IGNvZGVCbG9jay0+YWRkVmFsdWVQcm9maWxlKCk7CisgICAg
ICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0KHBvaW50cy5yZXN1bWVQb2ludCwgewor
ICAgICAgICAgICAgICAgICAgICBvcF9nZXRfZnJvbV9zY29wZSwKKyAgICAgICAgICAgICAgICAg
ICAgb3BlcmFuZC5vZmZzZXQoKSwgICAgICAgICAgICAgIC8vIGRzdAorICAgICAgICAgICAgICAg
ICAgICBzY29wZS5vZmZzZXQoKSwgICAgICAgICAgICAgICAgLy8gc2NvcGUKKyAgICAgICAgICAg
ICAgICAgICAgc3RvcmFnZS5pZGVudGlmaWVySW5kZXgsICAgICAgIC8vIGlkZW50aWZpZXIKKyAg
ICAgICAgICAgICAgICAgICAgR2V0UHV0SW5mbyhEb05vdFRocm93SWZOb3RGb3VuZCwgTG9jYWxD
bG9zdXJlVmFyLCBJbml0aWFsaXphdGlvbk1vZGU6Ok5vdEluaXRpYWxpemF0aW9uKS5vcGVyYW5k
KCksCisgICAgICAgICAgICAgICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
LyBsb2NhbCBzY29wZSBkZXB0aAorICAgICAgICAgICAgICAgICAgICBzdG9yYWdlLnNjb3BlT2Zm
c2V0Lm9mZnNldCgpLCAgLy8gc2NvcGUgb2Zmc2V0CisgICAgICAgICAgICAgICAgICAgIHByb2Zp
bGUgICAgICAgICAgICAgICAgICAgICAgICAvLyBwcm9maWxlCisgICAgICAgICAgICAgICAgfSk7
CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgLy8gQ2xpcCB0aGUgdW5uZWNlc3Nhcnkg
Ynl0ZWNvZGVzLgorICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQucmVtb3ZlQnl0ZWNvZGUocG9p
bnRzLnNhdmVQb2ludCk7CisgICAgICAgICAgICBtX2luc2VydGlvblNldC5yZW1vdmVCeXRlY29k
ZShwb2ludHMucmVzdW1lUG9pbnQpOworICAgICAgICB9CisKKyAgICAgICAgbV9pbnNlcnRpb25T
ZXQuZXhlY3V0ZSgpOworICAgIH0KKworICAgIHZvaWQgcnVuTGl2ZW5lc3NBbmFseXNpcygpCisg
ICAgeworICAgICAgICBVbmxpbmtlZENvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2sgPSBtX2dy
YXBoLmNvZGVCbG9jaygpOworICAgICAgICB1bnNpZ25lZCBudW1iZXJPZlZhcmlhYmxlcyA9IHVu
bGlua2VkQ29kZUJsb2NrLT5tX251bUNhbGxlZUxvY2FsczsKKyAgICAgICAgZm9yIChzdGQ6OnVu
aXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiYgYmxvY2sgOiBtX2dyYXBoLmJhc2ljQmxvY2tz
KCkpIHsKKyAgICAgICAgICAgIGJsb2NrLT5pbigpLnJlc2l6ZShudW1iZXJPZlZhcmlhYmxlcyk7
CisgICAgICAgICAgICBibG9jay0+b3V0KCkucmVzaXplKG51bWJlck9mVmFyaWFibGVzKTsKKyAg
ICAgICAgfQorCisgICAgICAgIGJvb2wgY2hhbmdlZDsKKyAgICAgICAgQnl0ZWNvZGVCYXNpY0Js
b2NrKiBsYXN0QmxvY2sgPSBtX2dyYXBoLmJhc2ljQmxvY2tzKCkubGFzdCgpLmdldCgpOworICAg
ICAgICBsYXN0QmxvY2stPmluKCkuY2xlYXJBbGwoKTsKKyAgICAgICAgbGFzdEJsb2NrLT5vdXQo
KS5jbGVhckFsbCgpOworICAgICAgICBGYXN0Qml0VmVjdG9yIG5ld091dDsKKyAgICAgICAgbmV3
T3V0LnJlc2l6ZShsYXN0QmxvY2stPm91dCgpLm51bUJpdHMoKSk7CisgICAgICAgIGRvIHsKKyAg
ICAgICAgICAgIGNoYW5nZWQgPSBmYWxzZTsKKyAgICAgICAgICAgIGZvciAoc3RkOjp1bmlxdWVf
cHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4mIGJsb2NrIDogbV9ncmFwaC5iYXNpY0Jsb2Nrc0luUmV2
ZXJzZU9yZGVyKCkpIHsKKyAgICAgICAgICAgICAgICBuZXdPdXQuY2xlYXJBbGwoKTsKKyAgICAg
ICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSAwOyBqIDwgYmxvY2stPnN1Y2Nlc3NvcnMoKS5z
aXplKCk7IGorKykKKyAgICAgICAgICAgICAgICAgICAgbmV3T3V0Lm1lcmdlKGJsb2NrLT5zdWNj
ZXNzb3JzKClbal0tPmluKCkpOworICAgICAgICAgICAgICAgIGJvb2wgb3V0RGlkQ2hhbmdlID0g
YmxvY2stPm91dCgpLnNldEFuZENoZWNrKG5ld091dCk7CisgICAgICAgICAgICAgICAgY29tcHV0
ZUxvY2FsTGl2ZW5lc3NGb3JCbG9jayhtX2dyYXBoLCBibG9jay5nZXQoKSk7CisgICAgICAgICAg
ICAgICAgY2hhbmdlZCB8PSBvdXREaWRDaGFuZ2U7CisgICAgICAgICAgICB9CisgICAgICAgIH0g
d2hpbGUgKGNoYW5nZWQpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBWTSYgbV92bTsKKyAgICBC
eXRlY29kZUdyYXBoPFVubGlua2VkQ29kZUJsb2NrPiYgbV9ncmFwaDsKKyAgICBCeXRlY29kZUlu
c2VydGlvblNldCBtX2luc2VydGlvblNldDsKKyAgICBWZWN0b3I8U3RvcmFnZT4gbV9zdG9yYWdl
czsKKyAgICBTdHJvbmc8U3ltYm9sVGFibGU+IG1fZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZTsK
KyAgICBpbnQgbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlSW5kZXg7Cit9OworCit2b2lkIHBl
cmZvcm1HZW5lcmF0b3JpZmljYXRpb24oQnl0ZWNvZGVHcmFwaDxVbmxpbmtlZENvZGVCbG9jaz4m
IGdyYXBoLCBTeW1ib2xUYWJsZSogZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZSwgaW50IGdlbmVy
YXRvckZyYW1lU3ltYm9sVGFibGVJbmRleCkKK3sKKyAgICBCeXRlY29kZUdlbmVyYXRvcmlmaWNh
dGlvbiBwYXNzKGdyYXBoLCBnZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlLCBnZW5lcmF0b3JGcmFt
ZVN5bWJvbFRhYmxlSW5kZXgpOworICAgIHBhc3MucnVuKCk7Cit9CisKK30gLy8gbmFtZXNwYWNl
IEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
R2VuZXJhdG9yaWZpY2F0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43OGU3ODY5NTZlOTYxNTZkMzdj
YmY3ZGQwOWU3OGYyNGIwN2I0YmIzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmgKQEAgLTAsMCArMSwz
NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBZdXN1a2UgU3V6dWtpIDx5dXN1a2Uuc3V6
dWtpQHNzbGFiLmljcy5rZWlvLmFjLmpwPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lu
Y2x1ZGUgPEJ5dGVjb2RlR3JhcGguaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIFN5bWJv
bFRhYmxlOworCit2b2lkIHBlcmZvcm1HZW5lcmF0b3JpZmljYXRpb24oQnl0ZWNvZGVHcmFwaDxV
bmxpbmtlZENvZGVCbG9jaz4mLCBTeW1ib2xUYWJsZSogZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJs
ZSwgaW50IGdlbmVyYXRvckZyYW1lU3ltYm9sVGFibGVJbmRleCk7CisKK30gLy8gbmFtZXNwYWNl
IEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
R3JhcGguaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUdyYXBoLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYmVkN2EzNzEwZmJiN2ZiY2FiMTgzNDY2NzRkMGQxOWFlNmZjMmI3NQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUdy
YXBoLmgKQEAgLTAsMCArMSwxMTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgWXVzdWtl
IFN1enVraSA8eXVzdWtlLnN1enVraUBzc2xhYi5pY3Mua2Vpby5hYy5qcD4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBCeXRlY29kZUdyYXBoX2gKKyNkZWZpbmUgQnl0ZWNvZGVHcmFwaF9oCisKKyNpbmNs
dWRlICJCeXRlY29kZUJhc2ljQmxvY2suaCIKKyNpbmNsdWRlIDx3dGYvSXRlcmF0b3JSYW5nZS5o
PgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEJ5
dGVjb2RlQmFzaWNCbG9jazsKKwordGVtcGxhdGU8dHlwZW5hbWUgQmxvY2s+CitjbGFzcyBCeXRl
Y29kZUdyYXBoIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShCeXRlY29kZUdyYXBoKTsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIFZlY3Rvcjxz
dGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4gQmFzaWNCbG9ja3NWZWN0b3I7CisK
KyAgICBpbmxpbmUgQnl0ZWNvZGVHcmFwaChCbG9jayosIHR5cGVuYW1lIEJsb2NrOjpVbnBhY2tl
ZEluc3RydWN0aW9ucyYpOworCisgICAgQmxvY2sqIGNvZGVCbG9jaygpIGNvbnN0IHsgcmV0dXJu
IG1fY29kZUJsb2NrOyB9CisKKyAgICBCYXNpY0Jsb2Nrc1ZlY3RvciYgYmFzaWNCbG9ja3MoKSB7
IHJldHVybiBtX2Jhc2ljQmxvY2tzOyB9CisKKyAgICB0eXBlbmFtZSBCbG9jazo6VW5wYWNrZWRJ
bnN0cnVjdGlvbnMmIGluc3RydWN0aW9ucygpIHsgcmV0dXJuIG1faW5zdHJ1Y3Rpb25zOyB9CisK
KyAgICBXVEY6Okl0ZXJhdG9yUmFuZ2U8QmFzaWNCbG9ja3NWZWN0b3I6OnJldmVyc2VfaXRlcmF0
b3I+IGJhc2ljQmxvY2tzSW5SZXZlcnNlT3JkZXIoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFdU
Rjo6bWFrZUl0ZXJhdG9yUmFuZ2UobV9iYXNpY0Jsb2Nrcy5yYmVnaW4oKSwgbV9iYXNpY0Jsb2Nr
cy5yZW5kKCkpOworICAgIH0KKworICAgIHN0YXRpYyBib29sIGJsb2NrQ29udGFpbnNCeXRlY29k
ZU9mZnNldChCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9mZnNl
dCkKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIGxlYWRlck9mZnNldCA9IGJsb2NrLT5sZWFkZXJC
eXRlY29kZU9mZnNldCgpOworICAgICAgICByZXR1cm4gYnl0ZWNvZGVPZmZzZXQgPj0gbGVhZGVy
T2Zmc2V0ICYmIGJ5dGVjb2RlT2Zmc2V0IDwgbGVhZGVyT2Zmc2V0ICsgYmxvY2stPnRvdGFsQnl0
ZWNvZGVMZW5ndGgoKTsKKyAgICB9CisKKyAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGZpbmRCYXNp
Y0Jsb2NrRm9yQnl0ZWNvZGVPZmZzZXQodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpCisgICAgewor
ICAgICAgICAvKgorICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fYmFzaWNC
bG9ja3Muc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgICAgICAgICBpZiAoYmxvY2tDb250YWluc0J5
dGVjb2RlT2Zmc2V0KG1fYmFzaWNCbG9ja3NbaV0uZ2V0KCksIGJ5dGVjb2RlT2Zmc2V0KSkKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIG1fYmFzaWNCbG9ja3NbaV0uZ2V0KCk7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgKi8KKworICAgICAgICBzdGQ6
OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiogYmFzaWNCbG9jayA9IGFwcHJveGltYXRl
QmluYXJ5U2VhcmNoPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+LCB1bnNpZ25l
ZD4oCisgICAgICAgICAgICAgICAgbV9iYXNpY0Jsb2NrcywgbV9iYXNpY0Jsb2Nrcy5zaXplKCks
IGJ5dGVjb2RlT2Zmc2V0LCBbXSAoc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4q
IGJhc2ljQmxvY2spIHsgcmV0dXJuICgqYmFzaWNCbG9jayktPmxlYWRlckJ5dGVjb2RlT2Zmc2V0
KCk7IH0pOworICAgICAgICAvLyBXZSBmb3VuZCB0aGUgYmxvY2sgd2Ugd2VyZSBsb29raW5nIGZv
ci4KKyAgICAgICAgaWYgKGJsb2NrQ29udGFpbnNCeXRlY29kZU9mZnNldCgoKmJhc2ljQmxvY2sp
LmdldCgpLCBieXRlY29kZU9mZnNldCkpCisgICAgICAgICAgICByZXR1cm4gKCpiYXNpY0Jsb2Nr
KS5nZXQoKTsKKworICAgICAgICAvLyBCYXNpYyBibG9jayBpcyB0byB0aGUgbGVmdCBvZiB0aGUg
cmV0dXJuZWQgYmxvY2suCisgICAgICAgIGlmIChieXRlY29kZU9mZnNldCA8ICgqYmFzaWNCbG9j
ayktPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCkpIHsKKyAgICAgICAgICAgIEFTU0VSVChiYXNpY0Js
b2NrIC0gMSA+PSBtX2Jhc2ljQmxvY2tzLmRhdGEoKSk7CisgICAgICAgICAgICBBU1NFUlQoYmxv
Y2tDb250YWluc0J5dGVjb2RlT2Zmc2V0KGJhc2ljQmxvY2tbLTFdLmdldCgpLCBieXRlY29kZU9m
ZnNldCkpOworICAgICAgICAgICAgcmV0dXJuIGJhc2ljQmxvY2tbLTFdLmdldCgpOworICAgICAg
ICB9CisKKyAgICAgICAgLy8gQmFzaWMgYmxvY2sgaXMgdG8gdGhlIHJpZ2h0IG9mIHRoZSByZXR1
cm5lZCBibG9jay4KKyAgICAgICAgQVNTRVJUKCZiYXNpY0Jsb2NrWzFdIDw9ICZtX2Jhc2ljQmxv
Y2tzLmxhc3QoKSk7CisgICAgICAgIEFTU0VSVChibG9ja0NvbnRhaW5zQnl0ZWNvZGVPZmZzZXQo
YmFzaWNCbG9ja1sxXS5nZXQoKSwgYnl0ZWNvZGVPZmZzZXQpKTsKKyAgICAgICAgcmV0dXJuIGJh
c2ljQmxvY2tbMV0uZ2V0KCk7CisgICAgfQorCisgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBmaW5k
QmFzaWNCbG9ja1dpdGhMZWFkZXJPZmZzZXQodW5zaWduZWQgbGVhZGVyT2Zmc2V0KQorICAgIHsK
KyAgICAgICAgcmV0dXJuICgqdHJ5QmluYXJ5U2VhcmNoPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29k
ZUJhc2ljQmxvY2s+LCB1bnNpZ25lZD4obV9iYXNpY0Jsb2NrcywgbV9iYXNpY0Jsb2Nrcy5zaXpl
KCksIGxlYWRlck9mZnNldCwgW10gKHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+
KiBiYXNpY0Jsb2NrKSB7IHJldHVybiAoKmJhc2ljQmxvY2spLT5sZWFkZXJCeXRlY29kZU9mZnNl
dCgpOyB9KSkuZ2V0KCk7CisgICAgfQorCitwcml2YXRlOgorICAgIEJsb2NrKiBtX2NvZGVCbG9j
azsKKyAgICBCYXNpY0Jsb2Nrc1ZlY3RvciBtX2Jhc2ljQmxvY2tzOworICAgIHR5cGVuYW1lIEJs
b2NrOjpVbnBhY2tlZEluc3RydWN0aW9ucyYgbV9pbnN0cnVjdGlvbnM7Cit9OworCisKK3RlbXBs
YXRlPHR5cGVuYW1lIEJsb2NrPgorQnl0ZWNvZGVHcmFwaDxCbG9jaz46OkJ5dGVjb2RlR3JhcGgo
QmxvY2sqIGNvZGVCbG9jaywgdHlwZW5hbWUgQmxvY2s6OlVucGFja2VkSW5zdHJ1Y3Rpb25zJiBp
bnN0cnVjdGlvbnMpCisgICAgOiBtX2NvZGVCbG9jayhjb2RlQmxvY2spCisgICAgLCBtX2luc3Ry
dWN0aW9ucyhpbnN0cnVjdGlvbnMpCit7CisgICAgQVNTRVJUKG1fY29kZUJsb2NrKTsKKyAgICBj
b21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2NrcyhtX2NvZGVCbG9jaywgaW5zdHJ1Y3Rpb25zLmJlZ2lu
KCksIGluc3RydWN0aW9ucy5zaXplKCksIG1fYmFzaWNCbG9ja3MpOworICAgIEFTU0VSVChtX2Jh
c2ljQmxvY2tzLnNpemUoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworI2VuZGlmIC8vIEJ5
dGVjb2RlR3JhcGhfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlSW5zZXJ0aW9uU2V0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZUluc2VydGlvblNldC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWI2MWM1ZTBmMDA1YzdiYTI4
Yzc3YWEzZDM2Y2NjZmNmODM4OWUzMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUluc2VydGlvblNldC5jcHAKQEAgLTAsMCArMSwxNTcg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgWXVzdWtlIFN1enVraSA8eXVzdWtlLnN1enVr
aUBzc2xhYi5pY3Mua2Vpby5hYy5qcD4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIkJ5dGVjb2RlSW5zZXJ0aW9uU2V0LmgiCisKKyNpbmNsdWRlICJQcmVjaXNlSnVt
cFRhcmdldHMuaCIKKyNpbmNsdWRlIDx3dGYvQnViYmxlU29ydC5oPgorCituYW1lc3BhY2UgSlND
IHsKKworaW50IEJ5dGVjb2RlSW5zZXJ0aW9uU2V0OjphZGp1c3RPZmZzZXQoaW50IGJ5dGVjb2Rl
T2Zmc2V0LCBpbnQganVtcFRhcmdldCkKK3sKKyAgICAvLyBUT0RPOiBTdXBlciByb3VnaCBpbXBs
ZW1lbnRhdGlvbi4gV2Ugc2hvdWxkIGxvb2sgaW50byBpdCBjYXJlZnVsbHkuCisgICAgaWYgKGJ5
dGVjb2RlT2Zmc2V0IDwganVtcFRhcmdldCkgeworICAgICAgICBhdXRvIHN0YXJ0ID0gc3RkOjps
b3dlcl9ib3VuZChtX2luc2VydGlvbnMuYmVnaW4oKSwgbV9pbnNlcnRpb25zLmVuZCgpLCBieXRl
Y29kZU9mZnNldCwgWyZdIChjb25zdCBJbnNlcnRpb24mIGluc2VydGlvbiwgaW50IGJ5dGVjb2Rl
T2Zmc2V0KSB7CisgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihpbnNlcnRpb24u
aW5kZXgoKSkgPCBieXRlY29kZU9mZnNldDsKKyAgICAgICAgfSk7CisgICAgICAgIGlmIChzdGFy
dCAhPSBtX2luc2VydGlvbnMuZW5kKCkpIHsKKyAgICAgICAgICAgIGF1dG8gZW5kID0gc3RkOjps
b3dlcl9ib3VuZChtX2luc2VydGlvbnMuYmVnaW4oKSwgbV9pbnNlcnRpb25zLmVuZCgpLCBqdW1w
VGFyZ2V0LCBbJl0gKGNvbnN0IEluc2VydGlvbiYgaW5zZXJ0aW9uLCBpbnQganVtcFRhcmdldCkg
eworICAgICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KGluc2VydGlvbi5pbmRl
eCgpKSA8IGp1bXBUYXJnZXQ7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIGZvciAoOyBz
dGFydCAhPSBlbmQ7ICsrc3RhcnQpIHsKKyAgICAgICAgICAgICAgICBpZiAoc3RhcnQtPmVsZW1l
bnQoKS50eXBlID09IENvbW1hbmQ6OlR5cGU6OlJlbW92ZSkKKyAgICAgICAgICAgICAgICAgICAg
anVtcFRhcmdldCAtPSBzdGFydC0+ZWxlbWVudCgpLmxlbmd0aDsKKyAgICAgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgICAgIGp1bXBUYXJnZXQgKz0gc3RhcnQtPmVsZW1lbnQoKS5s
ZW5ndGg7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGp1bXBUYXJn
ZXQgLSBieXRlY29kZU9mZnNldDsKKyAgICB9CisKKyAgICBpZiAoYnl0ZWNvZGVPZmZzZXQgPT0g
anVtcFRhcmdldCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4gLWFkanVzdE9mZnNl
dChqdW1wVGFyZ2V0LCBieXRlY29kZU9mZnNldCk7Cit9CisKK3ZvaWQgQnl0ZWNvZGVJbnNlcnRp
b25TZXQ6OmV4ZWN1dGUoKQoreworICAgIFdURjo6YnViYmxlU29ydChtX2luc2VydGlvbnMuYmVn
aW4oKSwgbV9pbnNlcnRpb25zLmVuZCgpLCBbXSAoY29uc3QgSW5zZXJ0aW9uJiBsaHMsIGNvbnN0
IEluc2VydGlvbiYgcmhzKSB7CisgICAgICAgIC8vIFdlIHdvdWxkIGxpa2UgdG8gcGVyZm9ybSBy
ZW1vdmUgb3BlcmF0aW9uIGJlZm9yZSBpbnNlcnRpb24uCisgICAgICAgIGlmIChsaHMuaW5kZXgo
KSA9PSByaHMuaW5kZXgoKSkKKyAgICAgICAgICAgIHJldHVybiByaHMuZWxlbWVudCgpLnR5cGUg
PT0gQ29tbWFuZDo6VHlwZTo6UmVtb3ZlOworICAgICAgICByZXR1cm4gbGhzIDwgcmhzOworICAg
IH0pOworCisgICAgLy8gQmVmb3JlIGFwcGx5aW5nIHRoZSBjaGFuZ2VzLCB3ZSBhZGp1c3QgdGhl
IGp1bXBzIGJhc2VkIG9uIHRoZSBvcmlnaW5hbCBieXRlY29kZSBvZmZzZXQsIHRoZSBvZmZzZXQg
dG8gdGhlIGp1bXAgdGFyZ2V0LCBhbmQKKyAgICAvLyB0aGUgaW5zZXJ0aW9uIGluZm9ybWF0aW9u
LgorICAgIFVubGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBtX2dyYXBoLmNvZGVCbG9jaygp
OworICAgIFVubGlua2VkSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luID0gbV9ncmFwaC5p
bnN0cnVjdGlvbnMoKS5iZWdpbigpOworICAgIGZvciAoaW50IGJ5dGVjb2RlT2Zmc2V0ID0gMCwg
aW5zdHJ1Y3Rpb25Db3VudCA9IG1fZ3JhcGguaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpOyBieXRlY29k
ZU9mZnNldCA8IGluc3RydWN0aW9uQ291bnQ7KSB7CisgICAgICAgIFVubGlua2VkSW5zdHJ1Y3Rp
b24qIGN1cnJlbnQgPSBpbnN0cnVjdGlvbnNCZWdpbiArIGJ5dGVjb2RlT2Zmc2V0OworICAgICAg
ICBPcGNvZGVJRCBvcGNvZGVJRCA9IGN1cnJlbnRbMF0udS5vcGNvZGU7CisKKyAgICAgICAgc3dp
dGNoIChvcGNvZGVJRCkgeworICAgICAgICBjYXNlIG9wX2ptcDoKKyAgICAgICAgICAgIGN1cnJl
bnRbMV0udS5vcGVyYW5kID0gYWRqdXN0T2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0LCBieXRlY29kZU9m
ZnNldCArIGN1cnJlbnRbMV0udS5vcGVyYW5kKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAg
ICAgIGNhc2Ugb3BfanRydWU6CisgICAgICAgIGNhc2Ugb3BfamZhbHNlOgorICAgICAgICBjYXNl
IG9wX2plcV9udWxsOgorICAgICAgICBjYXNlIG9wX2puZXFfbnVsbDoKKyAgICAgICAgICAgIGN1
cnJlbnRbMl0udS5vcGVyYW5kID0gYWRqdXN0T2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0LCBieXRlY29k
ZU9mZnNldCArIGN1cnJlbnRbMl0udS5vcGVyYW5kKTsKKyAgICAgICAgICAgIGJyZWFrOworCisg
ICAgICAgIGNhc2Ugb3Bfam5lcV9wdHI6CisgICAgICAgIGNhc2Ugb3Bfamxlc3M6CisgICAgICAg
IGNhc2Ugb3Bfamxlc3NlcToKKyAgICAgICAgY2FzZSBvcF9qZ3JlYXRlcjoKKyAgICAgICAgY2Fz
ZSBvcF9qZ3JlYXRlcmVxOgorICAgICAgICBjYXNlIG9wX2pubGVzczoKKyAgICAgICAgY2FzZSBv
cF9qbmxlc3NlcToKKyAgICAgICAgY2FzZSBvcF9qbmdyZWF0ZXI6CisgICAgICAgIGNhc2Ugb3Bf
am5ncmVhdGVyZXE6CisgICAgICAgICAgICBjdXJyZW50WzNdLnUub3BlcmFuZCA9IGFkanVzdE9m
ZnNldChieXRlY29kZU9mZnNldCwgYnl0ZWNvZGVPZmZzZXQgKyBjdXJyZW50WzNdLnUub3BlcmFu
ZCk7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIG9wX3N3aXRjaF9pbW06Cisg
ICAgICAgIGNhc2Ugb3Bfc3dpdGNoX2NoYXI6IHsKKyAgICAgICAgICAgIGF1dG8mIHRhYmxlID0g
Y29kZUJsb2NrLT5zd2l0Y2hKdW1wVGFibGUoY3VycmVudFsxXS51Lm9wZXJhbmQpOworICAgICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gdGFibGUuYnJhbmNoT2Zmc2V0cy5zaXplKCk7IGktLTsp
CisgICAgICAgICAgICAgICAgdGFibGUuYnJhbmNoT2Zmc2V0c1tpXSA9IGFkanVzdE9mZnNldChi
eXRlY29kZU9mZnNldCwgYnl0ZWNvZGVPZmZzZXQgKyB0YWJsZS5icmFuY2hPZmZzZXRzW2ldKTsK
KyAgICAgICAgICAgIGN1cnJlbnRbMl0udS5vcGVyYW5kID0gYWRqdXN0T2Zmc2V0KGJ5dGVjb2Rl
T2Zmc2V0LCBieXRlY29kZU9mZnNldCArIGN1cnJlbnRbMl0udS5vcGVyYW5kKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBvcF9zd2l0Y2hfc3RyaW5nOiB7
CisgICAgICAgICAgICBhdXRvJiB0YWJsZSA9IGNvZGVCbG9jay0+c3RyaW5nU3dpdGNoSnVtcFRh
YmxlKGN1cnJlbnRbMV0udS5vcGVyYW5kKTsKKyAgICAgICAgICAgIGF1dG8gaXRlciA9IHRhYmxl
Lm9mZnNldFRhYmxlLmJlZ2luKCk7CisgICAgICAgICAgICBhdXRvIGVuZCA9IHRhYmxlLm9mZnNl
dFRhYmxlLmVuZCgpOworICAgICAgICAgICAgZm9yICg7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpCisg
ICAgICAgICAgICAgICAgaXRlci0+dmFsdWUuYnJhbmNoT2Zmc2V0ID0gYWRqdXN0T2Zmc2V0KGJ5
dGVjb2RlT2Zmc2V0LCBieXRlY29kZU9mZnNldCArIGl0ZXItPnZhbHVlLmJyYW5jaE9mZnNldCk7
CisgICAgICAgICAgICBjdXJyZW50WzJdLnUub3BlcmFuZCA9IGFkanVzdE9mZnNldChieXRlY29k
ZU9mZnNldCwgYnl0ZWNvZGVPZmZzZXQgKyBjdXJyZW50WzJdLnUub3BlcmFuZCk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGJ5dGVjb2RlT2Zmc2V0ICs9IG9wY29kZUxlbmd0
aChvcGNvZGVJRCk7CisgICAgfQorCisgICAgLy8gVGhlbiwgZXhjZXB0aW9uIGhhbmRsZXJzIHNo
b3VsZCBiZSBhZGp1c3RlZC4KKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvZGVCbG9jay0+
bnVtYmVyT2ZFeGNlcHRpb25IYW5kbGVycygpOyArK2kpIHsKKyAgICAgICAgVW5saW5rZWRIYW5k
bGVySW5mbyYgaGFuZGxlciA9IGNvZGVCbG9jay0+ZXhjZXB0aW9uSGFuZGxlcihpKTsKKyAgICAg
ICAgaGFuZGxlci50YXJnZXQgPSBhZGp1c3RPZmZzZXQoMCwgaGFuZGxlci50YXJnZXQpOworICAg
ICAgICBoYW5kbGVyLnN0YXJ0ID0gYWRqdXN0T2Zmc2V0KDAsIGhhbmRsZXIuc3RhcnQpOworICAg
ICAgICBoYW5kbGVyLmVuZCA9IGFkanVzdE9mZnNldCgwLCBoYW5kbGVyLmVuZCk7CisgICAgfQor
CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb2RlQmxvY2stPm51bWJlck9mUHJvcGVydHlB
Y2Nlc3NJbnN0cnVjdGlvbnMoKTsgKytpKQorICAgICAgICBjb2RlQmxvY2stPnByb3BlcnR5QWNj
ZXNzSW5zdHJ1Y3Rpb25zKClbaV0gPSBhZGp1c3RPZmZzZXQoMCwgY29kZUJsb2NrLT5wcm9wZXJ0
eUFjY2Vzc0luc3RydWN0aW9ucygpW2ldKTsKKworICAgIC8vIEZJWE1FOiBBZGp1c3QgZXhwcmVz
c2lvbiB0ZXh0IGluZm8uCisKKyAgICAvLyBGSVhNRTogb3AgcHJvZmlsZSBieXRlY29kZSBvZmZz
ZXRzLgorCisgICAgLy8gRklYTUU6IE1vdmUgYWxsIG9mIHRoZW0gdG8gVW5saW5rZWRDb2RlQmxv
Y2suCisKKyAgICAvLyBGSVhNRTogQ3JhemlseSBuYWl2ZSEgSGVyZSwgd2Ugc2hvdWxkIGtub3cg
dGhlIGxlbmd0aCBvZiB0aGUgdHJhbnNmb3JtZWQgaW5zdHJ1Y3Rpb25zIChzaW5jZSBpbnNlcnRp
b24gYW5kIHJlbW92YWwgY29tbWFuZHMgY2FuIGhhdmUgdGhlaXIgbGVuZ3RoKS4KKyAgICBmb3Ig
KHNpemVfdCBpbnNlcnRpb25JbmRleCA9IG1faW5zZXJ0aW9ucy5zaXplKCk7IGluc2VydGlvbklu
ZGV4LS07KSB7CisgICAgICAgIGNvbnN0IEluc2VydGlvbiYgaW5zZXJ0aW9uID0gbV9pbnNlcnRp
b25zW2luc2VydGlvbkluZGV4XTsKKyAgICAgICAgaWYgKGluc2VydGlvbi5lbGVtZW50KCkudHlw
ZSA9PSBDb21tYW5kOjpUeXBlOjpSZW1vdmUpCisgICAgICAgICAgICBtX2dyYXBoLmluc3RydWN0
aW9ucygpLnJlbW92ZShpbnNlcnRpb24uaW5kZXgoKSwgaW5zZXJ0aW9uLmVsZW1lbnQoKS5sZW5n
dGgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX2dyYXBoLmluc3RydWN0aW9ucygpLmlu
c2VydChpbnNlcnRpb24uaW5kZXgoKSwgaW5zZXJ0aW9uLmVsZW1lbnQoKS5ieXRlY29kZS5pbnN0
cnVjdGlvbnMsIG9wY29kZUxlbmd0aChpbnNlcnRpb24uZWxlbWVudCgpLmJ5dGVjb2RlLmluc3Ry
dWN0aW9uc1swXS51Lm9wY29kZSkpOworICAgIH0KKworICAgIHJlY29tcHV0ZVByZWNpc2VKdW1w
VGFyZ2V0cyhtX2dyYXBoLmNvZGVCbG9jaygpLCBtX2dyYXBoLmluc3RydWN0aW9ucygpLmJlZ2lu
KCksIG1fZ3JhcGguaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
SlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJ
bnNlcnRpb25TZXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUlu
c2VydGlvblNldC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIxNWI3MmU3ZTYyMzM1YzM3ZTVmZjg3Yzk0NDRiYTBl
OGRhMDA3ZjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVJbnNlcnRpb25TZXQuaApAQCAtMCwwICsxLDc3IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE2IFl1c3VrZSBTdXp1a2kgPHl1c3VrZS5zdXp1a2lAc3NsYWIuaWNzLmtlaW8u
YWMuanA+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQnl0ZWNvZGVHcmFw
aC5oIgorI2luY2x1ZGUgIlVubGlua2VkQ29kZUJsb2NrLmgiCisjaW5jbHVkZSA8d3RmL0luc2Vy
dGlvbi5oPgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgQnl0ZWNvZGVJbnNlcnRpb25TZXQg
eworcHVibGljOgorICAgIHN0cnVjdCBJbnNlcnRlZEJ5dGVjb2RlIHsKKyAgICAgICAgVW5saW5r
ZWRJbnN0cnVjdGlvbiBpbnN0cnVjdGlvbnNbTUFYX09QQ09ERV9MRU5HVEhfT0ZfQllURUNPREVd
OworICAgIH07CisKKyAgICBzdHJ1Y3QgQ29tbWFuZCB7CisgICAgICAgIGVudW0gY2xhc3MgVHlw
ZSB7CisgICAgICAgICAgICBJbnNlcnQsCisgICAgICAgICAgICBSZW1vdmUsCisgICAgICAgIH07
CisKKyAgICAgICAgVHlwZSB0eXBlOworICAgICAgICBzaXplX3QgbGVuZ3RoOworICAgICAgICBJ
bnNlcnRlZEJ5dGVjb2RlIGJ5dGVjb2RlOworICAgIH07CisKKyAgICB0eXBlZGVmIFdURjo6SW5z
ZXJ0aW9uPENvbW1hbmQ+IEluc2VydGlvbjsKKworICAgIEJ5dGVjb2RlSW5zZXJ0aW9uU2V0KEJ5
dGVjb2RlR3JhcGg8VW5saW5rZWRDb2RlQmxvY2s+JiBncmFwaCkKKyAgICAgICAgOiBtX2dyYXBo
KGdyYXBoKQorICAgIHsKKyAgICB9CisKKyAgICB2b2lkIGluc2VydCh1bnNpZ25lZCBieXRlY29k
ZU9mZnNldCwgSW5zZXJ0ZWRCeXRlY29kZSBieXRlY29kZSkKKyAgICB7CisgICAgICAgIG1faW5z
ZXJ0aW9ucy5hcHBlbmQoSW5zZXJ0aW9uKGJ5dGVjb2RlT2Zmc2V0LCBDb21tYW5kIHsgQ29tbWFu
ZDo6VHlwZTo6SW5zZXJ0LCBvcGNvZGVMZW5ndGgoYnl0ZWNvZGUuaW5zdHJ1Y3Rpb25zWzBdLnUu
b3Bjb2RlKSwgYnl0ZWNvZGUgfSkpOworICAgIH0KKworICAgIHZvaWQgcmVtb3ZlQnl0ZWNvZGUo
dW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpCisgICAgeworICAgICAgICBtX2luc2VydGlvbnMuYXBw
ZW5kKEluc2VydGlvbihieXRlY29kZU9mZnNldCwgQ29tbWFuZCB7IENvbW1hbmQ6OlR5cGU6OlJl
bW92ZSwgb3Bjb2RlTGVuZ3RoKG1fZ3JhcGguaW5zdHJ1Y3Rpb25zKClbYnl0ZWNvZGVPZmZzZXRd
LnUub3Bjb2RlKSwgSW5zZXJ0ZWRCeXRlY29kZSB7IH0gfSkpOworICAgIH0KKworICAgIHZvaWQg
ZXhlY3V0ZSgpOworCitwcml2YXRlOgorICAgIGludCBhZGp1c3RPZmZzZXQoaW50IGJ5dGVjb2Rl
T2Zmc2V0LCBpbnQganVtcFRhcmdldCk7CisKKyAgICBCeXRlY29kZUdyYXBoPFVubGlua2VkQ29k
ZUJsb2NrPiYgbV9ncmFwaDsKKyAgICBWZWN0b3I8SW5zZXJ0aW9uLCA4PiBtX2luc2VydGlvbnM7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAKaW5kZXggMTdl
ODJhMmZiYmEwMTUwNDNlOTlkMzRlZDI1NjkzNzJiMzZmN2E4NS4uYzRmNzNhZTI4MTU3ZGIzNTAx
MmQ3MTZkMGJhMWU2MmQzODQ2MDMxNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAKQEAgLTM1LDcw
ICszNSwyNCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lz
OjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMoQ29kZUJsb2NrKiBjb2RlQmxvY2spCi0gICAgOiBt
X2NvZGVCbG9jayhjb2RlQmxvY2spCitCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OkJ5dGVjb2Rl
TGl2ZW5lc3NBbmFseXNpcyhCeXRlY29kZUdyYXBoPENvZGVCbG9jaz4mIGdyYXBoKQorICAgIDog
bV9ncmFwaChncmFwaCkKIHsKLSAgICBBU1NFUlQobV9jb2RlQmxvY2spOwogICAgIGNvbXB1dGUo
KTsKIH0KIAotc3RhdGljIGJvb2wgaXNWYWxpZFJlZ2lzdGVyRm9yTGl2ZW5lc3MoQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIGludCBvcGVyYW5kKQorc3RhdGljIGJvb2wgaXNWYWxpZFJlZ2lzdGVyRm9y
TGl2ZW5lc3MoaW50IG9wZXJhbmQpCiB7Ci0gICAgaWYgKGNvZGVCbG9jay0+aXNDb25zdGFudFJl
Z2lzdGVySW5kZXgob3BlcmFuZCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKICAgICBW
aXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZyhvcGVyYW5kKTsKKyAgICBpZiAodmlydHVhbFJlZy5p
c0NvbnN0YW50KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1cm4gdmlydHVhbFJl
Zy5pc0xvY2FsKCk7CiB9CiAKLXN0YXRpYyB1bnNpZ25lZCBnZXRMZWFkZXJPZmZzZXRGb3JCYXNp
Y0Jsb2NrKHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+KiBiYXNpY0Jsb2NrKQot
ewotICAgIHJldHVybiAoKmJhc2ljQmxvY2spLT5sZWFkZXJCeXRlY29kZU9mZnNldCgpOwotfQot
Ci1zdGF0aWMgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBmaW5kQmFzaWNCbG9ja1dpdGhMZWFkZXJPZmZz
ZXQoVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9j
a3MsIHVuc2lnbmVkIGxlYWRlck9mZnNldCkKLXsKLSAgICByZXR1cm4gKCp0cnlCaW5hcnlTZWFy
Y2g8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4sIHVuc2lnbmVkPihiYXNpY0Js
b2NrcywgYmFzaWNCbG9ja3Muc2l6ZSgpLCBsZWFkZXJPZmZzZXQsIGdldExlYWRlck9mZnNldEZv
ckJhc2ljQmxvY2spKS5nZXQoKTsKLX0KLQotc3RhdGljIGJvb2wgYmxvY2tDb250YWluc0J5dGVj
b2RlT2Zmc2V0KEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlT2Zm
c2V0KQotewotICAgIHVuc2lnbmVkIGxlYWRlck9mZnNldCA9IGJsb2NrLT5sZWFkZXJCeXRlY29k
ZU9mZnNldCgpOwotICAgIHJldHVybiBieXRlY29kZU9mZnNldCA+PSBsZWFkZXJPZmZzZXQgJiYg
Ynl0ZWNvZGVPZmZzZXQgPCBsZWFkZXJPZmZzZXQgKyBibG9jay0+dG90YWxCeXRlY29kZUxlbmd0
aCgpOwotfQotCi1zdGF0aWMgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBmaW5kQmFzaWNCbG9ja0ZvckJ5
dGVjb2RlT2Zmc2V0KFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4m
IGJhc2ljQmxvY2tzLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCkKLXsKLS8qCi0gICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IGJhc2ljQmxvY2tzLnNpemUoKTsgaSsrKSB7Ci0gICAgICAgIGlm
IChibG9ja0NvbnRhaW5zQnl0ZWNvZGVPZmZzZXQoYmFzaWNCbG9ja3NbaV0uZ2V0KCksIGJ5dGVj
b2RlT2Zmc2V0KSkKLSAgICAgICAgICAgIHJldHVybiBiYXNpY0Jsb2Nrc1tpXS5nZXQoKTsKLSAg
ICB9Ci0gICAgcmV0dXJuIDA7Ci0qLwotICAgIHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2lj
QmxvY2s+KiBiYXNpY0Jsb2NrID0gYXBwcm94aW1hdGVCaW5hcnlTZWFyY2g8c3RkOjp1bmlxdWVf
cHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4sIHVuc2lnbmVkPigKLSAgICAgICAgYmFzaWNCbG9ja3Ms
IGJhc2ljQmxvY2tzLnNpemUoKSwgYnl0ZWNvZGVPZmZzZXQsIGdldExlYWRlck9mZnNldEZvckJh
c2ljQmxvY2spOwotICAgIC8vIFdlIGZvdW5kIHRoZSBibG9jayB3ZSB3ZXJlIGxvb2tpbmcgZm9y
LgotICAgIGlmIChibG9ja0NvbnRhaW5zQnl0ZWNvZGVPZmZzZXQoKCpiYXNpY0Jsb2NrKS5nZXQo
KSwgYnl0ZWNvZGVPZmZzZXQpKQotICAgICAgICByZXR1cm4gKCpiYXNpY0Jsb2NrKS5nZXQoKTsK
LQotICAgIC8vIEJhc2ljIGJsb2NrIGlzIHRvIHRoZSBsZWZ0IG9mIHRoZSByZXR1cm5lZCBibG9j
ay4KLSAgICBpZiAoYnl0ZWNvZGVPZmZzZXQgPCAoKmJhc2ljQmxvY2spLT5sZWFkZXJCeXRlY29k
ZU9mZnNldCgpKSB7Ci0gICAgICAgIEFTU0VSVChiYXNpY0Jsb2NrIC0gMSA+PSBiYXNpY0Jsb2Nr
cy5kYXRhKCkpOwotICAgICAgICBBU1NFUlQoYmxvY2tDb250YWluc0J5dGVjb2RlT2Zmc2V0KGJh
c2ljQmxvY2tbLTFdLmdldCgpLCBieXRlY29kZU9mZnNldCkpOwotICAgICAgICByZXR1cm4gYmFz
aWNCbG9ja1stMV0uZ2V0KCk7Ci0gICAgfQotCi0gICAgLy8gQmFzaWMgYmxvY2sgaXMgdG8gdGhl
IHJpZ2h0IG9mIHRoZSByZXR1cm5lZCBibG9jay4KLSAgICBBU1NFUlQoJmJhc2ljQmxvY2tbMV0g
PD0gJmJhc2ljQmxvY2tzLmxhc3QoKSk7Ci0gICAgQVNTRVJUKGJsb2NrQ29udGFpbnNCeXRlY29k
ZU9mZnNldChiYXNpY0Jsb2NrWzFdLmdldCgpLCBieXRlY29kZU9mZnNldCkpOwotICAgIHJldHVy
biBiYXNpY0Jsb2NrWzFdLmdldCgpOwotfQotCiAvLyBTaW1wbGlmaWVkIGludGVyZmFjZSB0byBi
eXRlY29kZSB1c2UvZGVmLCB3aGljaCBkZXRlcm1pbmVzIGRlZnMgZmlyc3QgYW5kIHRoZW4gdXNl
cywgYW5kIGluY2x1ZGVzCiAvLyBleGNlcHRpb24gaGFuZGxlcnMgaW4gdGhlIHVzZXMuCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBVc2VGdW5jdG9yLCB0eXBlbmFtZSBEZWZGdW5jdG9yPgotc3RhdGljIHZv
aWQgc3RlcE92ZXJJbnN0cnVjdGlvbihDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVCYXNp
Y0Jsb2NrKiBibG9jaywgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+
PiYgYmFzaWNCbG9ja3MsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBjb25zdCBVc2VGdW5jdG9y
JiB1c2UsIGNvbnN0IERlZkZ1bmN0b3ImIGRlZikKK3N0YXRpYyB2b2lkIHN0ZXBPdmVySW5zdHJ1
Y3Rpb24oQnl0ZWNvZGVHcmFwaDxDb2RlQmxvY2s+JiBncmFwaCwgdW5zaWduZWQgYnl0ZWNvZGVP
ZmZzZXQsIGNvbnN0IFVzZUZ1bmN0b3ImIHVzZSwgY29uc3QgRGVmRnVuY3RvciYgZGVmKQogewog
ICAgIC8vIFRoaXMgYWJzdHJhY3RseSBleGVjdXRlIHRoZSBpbnN0cnVjdGlvbiBpbiByZXZlcnNl
LiBJbnN0cnVjdGlvbnMgbG9naWNhbGx5IGZpcnN0IHVzZSBvcGVyYW5kcyBhbmQKICAgICAvLyB0
aGVuIGRlZmluZSBvcGVyYW5kcy4gVGhpcyBsb2dpY2FsIG9yZGVyaW5nIGlzIG5lY2Vzc2FyeSBm
b3Igb3BlcmF0aW9ucyB0aGF0IHVzZSBhbmQgZGVmIHRoZSBzYW1lCkBAIC0xMTUsNDEgKzY5LDM1
IEBAIHN0YXRpYyB2b2lkIHN0ZXBPdmVySW5zdHJ1Y3Rpb24oQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2ssCiAgICAgLy8gdXNlcyBiZWZvcmUgZGVmcywgdGhl
biB0aGUgYWRkIG9wZXJhdGlvbiBhYm92ZSB3b3VsZCBhcHBlYXIgdG8gbm90IGhhdmUgbG9jMSBs
aXZlLCBzaW5jZSB3ZSdkCiAgICAgLy8gZmlyc3QgYWRkIGl0IHRvIHRoZSBvdXQgc2V0ICh0aGUg
dXNlKSwgYW5kIHRoZW4gd2UnZCByZW1vdmUgaXQgKHRoZSBkZWYpLgogICAgIAorICAgIENvZGVC
bG9jayogY29kZUJsb2NrID0gZ3JhcGguY29kZUJsb2NrKCk7CisKICAgICBjb21wdXRlRGVmc0Zv
ckJ5dGVjb2RlT2Zmc2V0KAotICAgICAgICBjb2RlQmxvY2ssIGJsb2NrLCBieXRlY29kZU9mZnNl
dCwKLSAgICAgICAgWyZdIChDb2RlQmxvY2sqIGNvZGVCbG9jaywgSW5zdHJ1Y3Rpb24qLCBPcGNv
ZGVJRCwgaW50IG9wZXJhbmQpIHsKLSAgICAgICAgICAgIGlmIChpc1ZhbGlkUmVnaXN0ZXJGb3JM
aXZlbmVzcyhjb2RlQmxvY2ssIG9wZXJhbmQpKQorICAgICAgICBjb2RlQmxvY2ssIGJ5dGVjb2Rl
T2Zmc2V0LAorICAgICAgICBbJl0gKENvZGVCbG9jayosIEluc3RydWN0aW9uKiwgT3Bjb2RlSUQs
IGludCBvcGVyYW5kKSB7CisgICAgICAgICAgICBpZiAoaXNWYWxpZFJlZ2lzdGVyRm9yTGl2ZW5l
c3Mob3BlcmFuZCkpCiAgICAgICAgICAgICAgICAgZGVmKFZpcnR1YWxSZWdpc3RlcihvcGVyYW5k
KS50b0xvY2FsKCkpOwogICAgICAgICB9KTsKIAogICAgIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVP
ZmZzZXQoCi0gICAgICAgIGNvZGVCbG9jaywgYmxvY2ssIGJ5dGVjb2RlT2Zmc2V0LAotICAgICAg
ICBbJl0gKENvZGVCbG9jayogY29kZUJsb2NrLCBJbnN0cnVjdGlvbiosIE9wY29kZUlELCBpbnQg
b3BlcmFuZCkgewotICAgICAgICAgICAgaWYgKGlzVmFsaWRSZWdpc3RlckZvckxpdmVuZXNzKGNv
ZGVCbG9jaywgb3BlcmFuZCkpCisgICAgICAgIGNvZGVCbG9jaywgYnl0ZWNvZGVPZmZzZXQsCisg
ICAgICAgIFsmXSAoQ29kZUJsb2NrKiwgSW5zdHJ1Y3Rpb24qLCBPcGNvZGVJRCwgaW50IG9wZXJh
bmQpIHsKKyAgICAgICAgICAgIGlmIChpc1ZhbGlkUmVnaXN0ZXJGb3JMaXZlbmVzcyhvcGVyYW5k
KSkKICAgICAgICAgICAgICAgICB1c2UoVmlydHVhbFJlZ2lzdGVyKG9wZXJhbmQpLnRvTG9jYWwo
KSk7CiAgICAgICAgIH0pOwogCiAgICAgLy8gSWYgd2UgaGF2ZSBhbiBleGNlcHRpb24gaGFuZGxl
ciwgd2Ugd2FudCB0aGUgbGl2ZS1pbiB2YXJpYWJsZXMgb2YgdGhlIAogICAgIC8vIGV4Y2VwdGlv
biBoYW5kbGVyIGJsb2NrIHRvIGJlIGluY2x1ZGVkIGluIHRoZSBsaXZlLWluIG9mIHRoaXMgcGFy
dGljdWxhciBieXRlY29kZS4KICAgICBpZiAoSGFuZGxlckluZm8qIGhhbmRsZXIgPSBjb2RlQmxv
Y2stPmhhbmRsZXJGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCkpIHsKLSAgICAgICAg
Ly8gRklYTUU6IFRoaXMgcmVzdW1lIGNoZWNrIHNob3VsZCBub3QgYmUgbmVlZGVkLgotICAgICAg
ICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU5MjgxCi0gICAg
ICAgIEludGVycHJldGVyKiBpbnRlcnByZXRlciA9IGNvZGVCbG9jay0+dm0oKS0+aW50ZXJwcmV0
ZXI7Ci0gICAgICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiA9IGNvZGVCbG9jay0+
aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsKLSAgICAgICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9u
ID0gJmluc3RydWN0aW9uc0JlZ2luW2J5dGVjb2RlT2Zmc2V0XTsKLSAgICAgICAgT3Bjb2RlSUQg
b3Bjb2RlSUQgPSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb24tPnUub3Bjb2Rl
KTsKLSAgICAgICAgaWYgKG9wY29kZUlEICE9IG9wX3Jlc3VtZSkgewotICAgICAgICAgICAgQnl0
ZWNvZGVCYXNpY0Jsb2NrKiBoYW5kbGVyQmxvY2sgPSBmaW5kQmFzaWNCbG9ja1dpdGhMZWFkZXJP
ZmZzZXQoYmFzaWNCbG9ja3MsIGhhbmRsZXItPnRhcmdldCk7Ci0gICAgICAgICAgICBBU1NFUlQo
aGFuZGxlckJsb2NrKTsKLSAgICAgICAgICAgIGhhbmRsZXJCbG9jay0+aW4oKS5mb3JFYWNoU2V0
Qml0KHVzZSk7Ci0gICAgICAgIH0KKyAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBoYW5kbGVy
QmxvY2sgPSBncmFwaC5maW5kQmFzaWNCbG9ja1dpdGhMZWFkZXJPZmZzZXQoaGFuZGxlci0+dGFy
Z2V0KTsKKyAgICAgICAgQVNTRVJUKGhhbmRsZXJCbG9jayk7CisgICAgICAgIGhhbmRsZXJCbG9j
ay0+aW4oKS5mb3JFYWNoU2V0Qml0KHVzZSk7CiAgICAgfQogfQogCi1zdGF0aWMgdm9pZCBzdGVw
T3Zlckluc3RydWN0aW9uKENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29kZUJhc2ljQmxvY2sq
IGJsb2NrLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+JiBiYXNp
Y0Jsb2NrcywgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIEZhc3RCaXRWZWN0b3ImIG91dCkKK3N0
YXRpYyB2b2lkIHN0ZXBPdmVySW5zdHJ1Y3Rpb24oQnl0ZWNvZGVHcmFwaDxDb2RlQmxvY2s+JiBn
cmFwaCwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIEZhc3RCaXRWZWN0b3ImIG91dCkKIHsKICAg
ICBzdGVwT3Zlckluc3RydWN0aW9uKAotICAgICAgICBjb2RlQmxvY2ssIGJsb2NrLCBiYXNpY0Js
b2NrcywgYnl0ZWNvZGVPZmZzZXQsCisgICAgICAgIGdyYXBoLCBieXRlY29kZU9mZnNldCwKICAg
ICAgICAgWyZdICh1bnNpZ25lZCBiaXRJbmRleCkgewogICAgICAgICAgICAgLy8gVGhpcyBpcyB0
aGUgdXNlIGZ1bmN0b3IsIHNvIHdlIHNldCB0aGUgYml0LgogICAgICAgICAgICAgb3V0LnNldChi
aXRJbmRleCk7CkBAIC0xNjAsNyArMTA4LDcgQEAgc3RhdGljIHZvaWQgc3RlcE92ZXJJbnN0cnVj
dGlvbihDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaywKICAg
ICAgICAgfSk7CiB9CiAKLXN0YXRpYyB2b2lkIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQnl0ZWNv
ZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2ss
IFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mIGJhc2ljQmxvY2tz
LCB1bnNpZ25lZCB0YXJnZXRPZmZzZXQsIEZhc3RCaXRWZWN0b3ImIHJlc3VsdCkKK3N0YXRpYyB2
b2lkIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQnl0ZWNvZGVPZmZzZXQoQnl0ZWNvZGVHcmFwaDxD
b2RlQmxvY2s+JiBncmFwaCwgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaywgdW5zaWduZWQgdGFy
Z2V0T2Zmc2V0LCBGYXN0Qml0VmVjdG9yJiByZXN1bHQpCiB7CiAgICAgQVNTRVJUKCFibG9jay0+
aXNFeGl0QmxvY2soKSk7CiAgICAgQVNTRVJUKCFibG9jay0+aXNFbnRyeUJsb2NrKCkpOwpAQCAt
MTcyLDQ0ICsxMjAsNDQgQEAgc3RhdGljIHZvaWQgY29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCeXRl
Y29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGUKICAgICAgICAgaWYgKHRh
cmdldE9mZnNldCA+IGJ5dGVjb2RlT2Zmc2V0KQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IAotICAgICAgICBzdGVwT3Zlckluc3RydWN0aW9uKGNvZGVCbG9jaywgYmxvY2ssIGJhc2ljQmxv
Y2tzLCBieXRlY29kZU9mZnNldCwgb3V0KTsKKyAgICAgICAgc3RlcE92ZXJJbnN0cnVjdGlvbihn
cmFwaCwgYnl0ZWNvZGVPZmZzZXQsIG91dCk7CiAgICAgfQogCiAgICAgcmVzdWx0LnNldChvdXQp
OwogfQogCi1zdGF0aWMgdm9pZCBjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJsb2NrKENvZGVCbG9j
ayogY29kZUJsb2NrLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrLCBWZWN0b3I8c3RkOjp1bmlx
dWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+JiBiYXNpY0Jsb2NrcykKK3N0YXRpYyB2b2lkIGNv
bXB1dGVMb2NhbExpdmVuZXNzRm9yQmxvY2soQnl0ZWNvZGVHcmFwaDxDb2RlQmxvY2s+JiBncmFw
aCwgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaykKIHsKICAgICBpZiAoYmxvY2stPmlzRXhpdEJs
b2NrKCkgfHwgYmxvY2stPmlzRW50cnlCbG9jaygpKQogICAgICAgICByZXR1cm47Ci0gICAgY29t
cHV0ZUxvY2FsTGl2ZW5lc3NGb3JCeXRlY29kZU9mZnNldChjb2RlQmxvY2ssIGJsb2NrLCBiYXNp
Y0Jsb2NrcywgYmxvY2stPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCksIGJsb2NrLT5pbigpKTsKKyAg
ICBjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJ5dGVjb2RlT2Zmc2V0KGdyYXBoLCBibG9jaywgYmxv
Y2stPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCksIGJsb2NrLT5pbigpKTsKIH0KIAogdm9pZCBCeXRl
Y29kZUxpdmVuZXNzQW5hbHlzaXM6OnJ1bkxpdmVuZXNzRml4cG9pbnQoKQogewotICAgIFVubGlu
a2VkQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jayA9IG1fY29kZUJsb2NrLT51bmxpbmtlZENv
ZGVCbG9jaygpOworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gbV9ncmFwaC5jb2RlQmxvY2so
KTsKKyAgICBVbmxpbmtlZENvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2sgPSBjb2RlQmxvY2st
PnVubGlua2VkQ29kZUJsb2NrKCk7CiAgICAgdW5zaWduZWQgbnVtYmVyT2ZWYXJpYWJsZXMgPSB1
bmxpbmtlZENvZGVCbG9jay0+bV9udW1DYWxsZWVMb2NhbHM7CiAKLSAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgbV9iYXNpY0Jsb2Nrcy5zaXplKCk7IGkrKykgewotICAgICAgICBCeXRlY29k
ZUJhc2ljQmxvY2sqIGJsb2NrID0gbV9iYXNpY0Jsb2Nrc1tpXS5nZXQoKTsKKyAgICBmb3IgKHN0
ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+JiBibG9jayA6IG1fZ3JhcGguYmFzaWNC
bG9ja3MoKSkgewogICAgICAgICBibG9jay0+aW4oKS5yZXNpemUobnVtYmVyT2ZWYXJpYWJsZXMp
OwogICAgICAgICBibG9jay0+b3V0KCkucmVzaXplKG51bWJlck9mVmFyaWFibGVzKTsKICAgICB9
CiAKICAgICBib29sIGNoYW5nZWQ7Ci0gICAgbV9iYXNpY0Jsb2Nrcy5sYXN0KCktPmluKCkuY2xl
YXJBbGwoKTsKLSAgICBtX2Jhc2ljQmxvY2tzLmxhc3QoKS0+b3V0KCkuY2xlYXJBbGwoKTsKKyAg
ICBCeXRlY29kZUJhc2ljQmxvY2sqIGxhc3RCbG9jayA9IG1fZ3JhcGguYmFzaWNCbG9ja3MoKS5s
YXN0KCkuZ2V0KCk7CisgICAgbGFzdEJsb2NrLT5pbigpLmNsZWFyQWxsKCk7CisgICAgbGFzdEJs
b2NrLT5vdXQoKS5jbGVhckFsbCgpOwogICAgIEZhc3RCaXRWZWN0b3IgbmV3T3V0OwotICAgIG5l
d091dC5yZXNpemUobV9iYXNpY0Jsb2Nrcy5sYXN0KCktPm91dCgpLm51bUJpdHMoKSk7CisgICAg
bmV3T3V0LnJlc2l6ZShsYXN0QmxvY2stPm91dCgpLm51bUJpdHMoKSk7CiAgICAgZG8gewogICAg
ICAgICBjaGFuZ2VkID0gZmFsc2U7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1fYmFzaWNC
bG9ja3Muc2l6ZSgpIC0gMTsgaS0tOykgewotICAgICAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2Nr
KiBibG9jayA9IG1fYmFzaWNCbG9ja3NbaV0uZ2V0KCk7CisgICAgICAgIGZvciAoc3RkOjp1bmlx
dWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4mIGJsb2NrIDogbV9ncmFwaC5iYXNpY0Jsb2Nrc0lu
UmV2ZXJzZU9yZGVyKCkpIHsKICAgICAgICAgICAgIG5ld091dC5jbGVhckFsbCgpOwogICAgICAg
ICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8IGJsb2NrLT5zdWNjZXNzb3JzKCkuc2l6ZSgp
OyBqKyspCiAgICAgICAgICAgICAgICAgbmV3T3V0Lm1lcmdlKGJsb2NrLT5zdWNjZXNzb3JzKClb
al0tPmluKCkpOwogICAgICAgICAgICAgYm9vbCBvdXREaWRDaGFuZ2UgPSBibG9jay0+b3V0KCku
c2V0QW5kQ2hlY2sobmV3T3V0KTsKLSAgICAgICAgICAgIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9y
QmxvY2sobV9jb2RlQmxvY2ssIGJsb2NrLCBtX2Jhc2ljQmxvY2tzKTsKKyAgICAgICAgICAgIGNv
bXB1dGVMb2NhbExpdmVuZXNzRm9yQmxvY2sobV9ncmFwaCwgYmxvY2suZ2V0KCkpOwogICAgICAg
ICAgICAgY2hhbmdlZCB8PSBvdXREaWRDaGFuZ2U7CiAgICAgICAgIH0KICAgICB9IHdoaWxlIChj
aGFuZ2VkKTsKQEAgLTIxNywxMiArMTY1LDEyIEBAIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5
c2lzOjpydW5MaXZlbmVzc0ZpeHBvaW50KCkKIAogdm9pZCBCeXRlY29kZUxpdmVuZXNzQW5hbHlz
aXM6OmdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQodW5zaWduZWQgYnl0ZWNvZGVPZmZz
ZXQsIEZhc3RCaXRWZWN0b3ImIHJlc3VsdCkKIHsKLSAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGJs
b2NrID0gZmluZEJhc2ljQmxvY2tGb3JCeXRlY29kZU9mZnNldChtX2Jhc2ljQmxvY2tzLCBieXRl
Y29kZU9mZnNldCk7CisgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jayA9IG1fZ3JhcGguZmlu
ZEJhc2ljQmxvY2tGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCk7CiAgICAgQVNTRVJU
KGJsb2NrKTsKICAgICBBU1NFUlQoIWJsb2NrLT5pc0VudHJ5QmxvY2soKSk7CiAgICAgQVNTRVJU
KCFibG9jay0+aXNFeGl0QmxvY2soKSk7CiAgICAgcmVzdWx0LnJlc2l6ZShibG9jay0+b3V0KCku
bnVtQml0cygpKTsKLSAgICBjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJ5dGVjb2RlT2Zmc2V0KG1f
Y29kZUJsb2NrLCBibG9jaywgbV9iYXNpY0Jsb2NrcywgYnl0ZWNvZGVPZmZzZXQsIHJlc3VsdCk7
CisgICAgY29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCeXRlY29kZU9mZnNldChtX2dyYXBoLCBibG9j
aywgYnl0ZWNvZGVPZmZzZXQsIHJlc3VsdCk7CiB9CiAKIGJvb2wgQnl0ZWNvZGVMaXZlbmVzc0Fu
YWx5c2lzOjpvcGVyYW5kSXNMaXZlQXRCeXRlY29kZU9mZnNldChpbnQgb3BlcmFuZCwgdW5zaWdu
ZWQgYnl0ZWNvZGVPZmZzZXQpCkBAIC0yNDQsMTEgKzE5MiwxMSBAQCBGYXN0Qml0VmVjdG9yIEJ5
dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Z2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29kZU9mZnNldCh1
bnNpZ25lZAogdm9pZCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGVGdWxsTGl2ZW5l
c3MoRnVsbEJ5dGVjb2RlTGl2ZW5lc3MmIHJlc3VsdCkKIHsKICAgICBGYXN0Qml0VmVjdG9yIG91
dDsKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IG1fZ3JhcGguY29kZUJsb2NrKCk7CiAgICAg
Ci0gICAgcmVzdWx0Lm1fbWFwLnJlc2l6ZShtX2NvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuc2l6
ZSgpKTsKKyAgICByZXN1bHQubV9tYXAucmVzaXplKGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCku
c2l6ZSgpKTsKICAgICAKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2Jhc2ljQmxvY2tzLnNpemUo
KTsgaS0tOykgewotICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrID0gbV9iYXNpY0Js
b2Nrc1tpXS5nZXQoKTsKKyAgICBmb3IgKHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxv
Y2s+JiBibG9jayA6IG1fZ3JhcGguYmFzaWNCbG9ja3NJblJldmVyc2VPcmRlcigpKSB7CiAgICAg
ICAgIGlmIChibG9jay0+aXNFbnRyeUJsb2NrKCkgfHwgYmxvY2stPmlzRXhpdEJsb2NrKCkpCiAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgCkBAIC0yNTYsNyArMjA0LDcgQEAgdm9pZCBC
eXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGVGdWxsTGl2ZW5lc3MoRnVsbEJ5dGVjb2Rl
TGl2ZW5lc3MmIHJlc3VsdCkKICAgICAgICAgCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGJs
b2NrLT5ieXRlY29kZU9mZnNldHMoKS5zaXplKCk7IGktLTspIHsKICAgICAgICAgICAgIHVuc2ln
bmVkIGJ5dGVjb2RlT2Zmc2V0ID0gYmxvY2stPmJ5dGVjb2RlT2Zmc2V0cygpW2ldOwotICAgICAg
ICAgICAgc3RlcE92ZXJJbnN0cnVjdGlvbihtX2NvZGVCbG9jaywgYmxvY2ssIG1fYmFzaWNCbG9j
a3MsIGJ5dGVjb2RlT2Zmc2V0LCBvdXQpOworICAgICAgICAgICAgc3RlcE92ZXJJbnN0cnVjdGlv
bihtX2dyYXBoLCBieXRlY29kZU9mZnNldCwgb3V0KTsKICAgICAgICAgICAgIHJlc3VsdC5tX21h
cFtieXRlY29kZU9mZnNldF0gPSBvdXQ7CiAgICAgICAgIH0KICAgICB9CkBAIC0yNjYsMTEgKzIx
NCwxMSBAQCB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0ZUtpbGxzKEJ5dGVj
b2RlS2lsbHMmIHJlc3VsdCkKIHsKICAgICBGYXN0Qml0VmVjdG9yIG91dDsKICAgICAKLSAgICBy
ZXN1bHQubV9jb2RlQmxvY2sgPSBtX2NvZGVCbG9jazsKLSAgICByZXN1bHQubV9raWxsU2V0cyA9
IHN0ZDo6bWFrZV91bmlxdWU8Qnl0ZWNvZGVLaWxsczo6S2lsbFNldFtdPihtX2NvZGVCbG9jay0+
aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IG1fZ3Jh
cGguY29kZUJsb2NrKCk7CisgICAgcmVzdWx0Lm1fY29kZUJsb2NrID0gY29kZUJsb2NrOworICAg
IHJlc3VsdC5tX2tpbGxTZXRzID0gc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZUtpbGxzOjpLaWxs
U2V0W10+KGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKICAgICAKLSAgICBmb3Ig
KHVuc2lnbmVkIGkgPSBtX2Jhc2ljQmxvY2tzLnNpemUoKTsgaS0tOykgewotICAgICAgICBCeXRl
Y29kZUJhc2ljQmxvY2sqIGJsb2NrID0gbV9iYXNpY0Jsb2Nrc1tpXS5nZXQoKTsKKyAgICBmb3Ig
KHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+JiBibG9jayA6IG1fZ3JhcGguYmFz
aWNCbG9ja3NJblJldmVyc2VPcmRlcigpKSB7CiAgICAgICAgIGlmIChibG9jay0+aXNFbnRyeUJs
b2NrKCkgfHwgYmxvY2stPmlzRXhpdEJsb2NrKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgCkBAIC0yNzksNyArMjI3LDcgQEAgdm9pZCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6
OmNvbXB1dGVLaWxscyhCeXRlY29kZUtpbGxzJiByZXN1bHQpCiAgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IGJsb2NrLT5ieXRlY29kZU9mZnNldHMoKS5zaXplKCk7IGktLTspIHsKICAgICAgICAg
ICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0ID0gYmxvY2stPmJ5dGVjb2RlT2Zmc2V0cygpW2ld
OwogICAgICAgICAgICAgc3RlcE92ZXJJbnN0cnVjdGlvbigKLSAgICAgICAgICAgICAgICBtX2Nv
ZGVCbG9jaywgYmxvY2ssIG1fYmFzaWNCbG9ja3MsIGJ5dGVjb2RlT2Zmc2V0LAorICAgICAgICAg
ICAgICAgIG1fZ3JhcGgsIGJ5dGVjb2RlT2Zmc2V0LAogICAgICAgICAgICAgICAgIFsmXSAodW5z
aWduZWQgaW5kZXgpIHsKICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyBmb3IgdXNlcy4K
ICAgICAgICAgICAgICAgICAgICAgaWYgKG91dC5nZXQoaW5kZXgpKQpAQCAtMjk3LDEyICsyNDUs
MTMgQEAgdm9pZCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGVLaWxscyhCeXRlY29k
ZUtpbGxzJiByZXN1bHQpCiAKIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpkdW1wUmVz
dWx0cygpCiB7Ci0gICAgZGF0YUxvZygiXG5EdW1waW5nIGJ5dGVjb2RlIGxpdmVuZXNzIGZvciAi
LCAqbV9jb2RlQmxvY2ssICI6XG4iKTsKLSAgICBJbnRlcnByZXRlciogaW50ZXJwcmV0ZXIgPSBt
X2NvZGVCbG9jay0+dm0oKS0+aW50ZXJwcmV0ZXI7Ci0gICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0
aW9uc0JlZ2luID0gbV9jb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCk7Ci0gICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fYmFzaWNCbG9ja3Muc2l6ZSgpOyBpKyspIHsKLSAgICAg
ICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jayA9IG1fYmFzaWNCbG9ja3NbaV0uZ2V0KCk7Ci0g
ICAgICAgIGRhdGFMb2dGKCJcbkJ5dGVjb2RlIGJhc2ljIGJsb2NrICV1OiAlcCAob2Zmc2V0OiAl
dSwgbGVuZ3RoOiAldSlcbiIsIGksIGJsb2NrLCBibG9jay0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQo
KSwgYmxvY2stPnRvdGFsQnl0ZWNvZGVMZW5ndGgoKSk7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxv
Y2sgPSBtX2dyYXBoLmNvZGVCbG9jaygpOworICAgIGRhdGFMb2coIlxuRHVtcGluZyBieXRlY29k
ZSBsaXZlbmVzcyBmb3IgIiwgKmNvZGVCbG9jaywgIjpcbiIpOworICAgIEludGVycHJldGVyKiBp
bnRlcnByZXRlciA9IGNvZGVCbG9jay0+dm0oKS0+aW50ZXJwcmV0ZXI7CisgICAgSW5zdHJ1Y3Rp
b24qIGluc3RydWN0aW9uc0JlZ2luID0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigp
OworICAgIHVuc2lnbmVkIGkgPSAwOworICAgIGZvciAoc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2Rl
QmFzaWNCbG9jaz4mIGJsb2NrIDogbV9ncmFwaC5iYXNpY0Jsb2NrcygpKSB7CisgICAgICAgIGRh
dGFMb2dGKCJcbkJ5dGVjb2RlIGJhc2ljIGJsb2NrICV1OiAlcCAob2Zmc2V0OiAldSwgbGVuZ3Ro
OiAldSlcbiIsIGkrKywgYmxvY2suZ2V0KCksIGJsb2NrLT5sZWFkZXJCeXRlY29kZU9mZnNldCgp
LCBibG9jay0+dG90YWxCeXRlY29kZUxlbmd0aCgpKTsKICAgICAgICAgZGF0YUxvZ0YoIlN1Y2Nl
c3NvcnM6ICIpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSAwOyBqIDwgYmxvY2stPnN1Y2Nl
c3NvcnMoKS5zaXplKCk7IGorKykgewogICAgICAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBz
dWNjZXNzb3IgPSBibG9jay0+c3VjY2Vzc29ycygpW2pdOwpAQCAtMzEwLDExICsyNTksMTEgQEAg
dm9pZCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmR1bXBSZXN1bHRzKCkKICAgICAgICAgfQog
ICAgICAgICBkYXRhTG9nRigiXG4iKTsKICAgICAgICAgaWYgKGJsb2NrLT5pc0VudHJ5QmxvY2so
KSkgewotICAgICAgICAgICAgZGF0YUxvZ0YoIkVudHJ5IGJsb2NrICVwXG4iLCBibG9jayk7Cisg
ICAgICAgICAgICBkYXRhTG9nRigiRW50cnkgYmxvY2sgJXBcbiIsIGJsb2NrLmdldCgpKTsKICAg
ICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAgICAgICAgIGlmIChibG9jay0+aXNFeGl0
QmxvY2soKSkgewotICAgICAgICAgICAgZGF0YUxvZ0YoIkV4aXQgYmxvY2s6ICVwXG4iLCBibG9j
ayk7CisgICAgICAgICAgICBkYXRhTG9nRigiRXhpdCBibG9jazogJXBcbiIsIGJsb2NrLmdldCgp
KTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAgICAgICAgIGZvciAodW5zaWdu
ZWQgYnl0ZWNvZGVPZmZzZXQgPSBibG9jay0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKTsgYnl0ZWNv
ZGVPZmZzZXQgPCBibG9jay0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKSArIGJsb2NrLT50b3RhbEJ5
dGVjb2RlTGVuZ3RoKCk7KSB7CkBAIC0zMjcsNyArMjc2LDcgQEAgdm9pZCBCeXRlY29kZUxpdmVu
ZXNzQW5hbHlzaXM6OmR1bXBSZXN1bHRzKCkKICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZ0Yo
IiV1ICIsIGopOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZGF0YUxvZ0YoIlxuIik7Ci0g
ICAgICAgICAgICBtX2NvZGVCbG9jay0+ZHVtcEJ5dGVjb2RlKFdURjo6ZGF0YUZpbGUoKSwgbV9j
b2RlQmxvY2stPmdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVjKCksIGluc3RydWN0aW9uc0JlZ2lu
LCBjdXJyZW50SW5zdHJ1Y3Rpb24pOworICAgICAgICAgICAgY29kZUJsb2NrLT5kdW1wQnl0ZWNv
ZGUoV1RGOjpkYXRhRmlsZSgpLCBjb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVj
KCksIGluc3RydWN0aW9uc0JlZ2luLCBjdXJyZW50SW5zdHJ1Y3Rpb24pOwogCiAgICAgICAgICAg
ICBPcGNvZGVJRCBvcGNvZGVJRCA9IGludGVycHJldGVyLT5nZXRPcGNvZGVJRChpbnN0cnVjdGlv
bnNCZWdpbltieXRlY29kZU9mZnNldF0udS5vcGNvZGUpOwogICAgICAgICAgICAgdW5zaWduZWQg
b3Bjb2RlTGVuZ3RoID0gb3Bjb2RlTGVuZ3Roc1tvcGNvZGVJRF07CkBAIC0zNDYsOCArMjk1LDYg
QEAgdm9pZCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmR1bXBSZXN1bHRzKCkKIAogdm9pZCBC
eXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGUoKQogewotICAgIGNvbXB1dGVCeXRlY29k
ZUJhc2ljQmxvY2tzKG1fY29kZUJsb2NrLCBtX2Jhc2ljQmxvY2tzKTsKLSAgICBBU1NFUlQobV9i
YXNpY0Jsb2Nrcy5zaXplKCkpOwogICAgIHJ1bkxpdmVuZXNzRml4cG9pbnQoKTsKIAogICAgIGlm
IChPcHRpb25zOjpkdW1wQnl0ZWNvZGVMaXZlbmVzc1Jlc3VsdHMoKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMu
aAppbmRleCBlY2UxNmYyMWYwMTUxMGE2NDI3ZmQ4NDExNDA3OWJlZDg3MGMwODc1Li4wNjBlOWVh
ODg3MDEzODM0MWFiYWFhYjJkMzQ4YTVkNWQ0MzNmNzJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5oCkBA
IC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc19oCiAKICNp
bmNsdWRlICJCeXRlY29kZUJhc2ljQmxvY2suaCIKKyNpbmNsdWRlICJCeXRlY29kZUdyYXBoLmgi
CiAjaW5jbHVkZSA8d3RmL0Zhc3RCaXRWZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5o
PgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTM0LDE0ICszNSwxMyBAQAogbmFtZXNwYWNl
IEpTQyB7CiAKIGNsYXNzIEJ5dGVjb2RlS2lsbHM7Ci1jbGFzcyBDb2RlQmxvY2s7CiBjbGFzcyBG
dWxsQnl0ZWNvZGVMaXZlbmVzczsKIAogY2xhc3MgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzIHsK
ICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShC
eXRlY29kZUxpdmVuZXNzQW5hbHlzaXMpOwogcHVibGljOgotICAgIEJ5dGVjb2RlTGl2ZW5lc3NB
bmFseXNpcyhDb2RlQmxvY2sqKTsKKyAgICBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMoQnl0ZWNv
ZGVHcmFwaDxDb2RlQmxvY2s+Jik7CiAgICAgCiAgICAgYm9vbCBvcGVyYW5kSXNMaXZlQXRCeXRl
Y29kZU9mZnNldChpbnQgb3BlcmFuZCwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpOwogICAgIEZh
c3RCaXRWZWN0b3IgZ2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29kZU9mZnNldCh1bnNpZ25lZCBieXRl
Y29kZU9mZnNldCk7CkBAIC01Niw4ICs1Niw3IEBAIGNsYXNzIEJ5dGVjb2RlTGl2ZW5lc3NBbmFs
eXNpcyB7CiAKICAgICB2b2lkIGdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQodW5zaWdu
ZWQgYnl0ZWNvZGVPZmZzZXQsIEZhc3RCaXRWZWN0b3ImKTsKIAotICAgIENvZGVCbG9jayogbV9j
b2RlQmxvY2s7Ci0gICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+
PiBtX2Jhc2ljQmxvY2tzOworICAgIEJ5dGVjb2RlR3JhcGg8Q29kZUJsb2NrPiYgbV9ncmFwaDsK
IH07CiAKIGlubGluZSBib29sIG9wZXJhbmRJc0Fsd2F5c0xpdmUoaW50IG9wZXJhbmQpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaAppbmRleCA5
ODFmYjFkMGZlYzA1NzA0ZDViN2Y2NmVjNDQxODI1N2U4M2FhYzM2Li45YjhhMjE2ZWYzMWU2NDRk
ZGRkZDQ1ZjZhYjRlNWI5NGM2YzNjYjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaApAQCAtMzAsMTUgKzMwLDkgQEAKIAogbmFtZXNwYWNl
IEpTQyB7CiAKLXRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+Ci12b2lkIGNvbXB1dGVVc2VzRm9y
Qnl0ZWNvZGVPZmZzZXQoCi0gICAgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFzaWNC
bG9jayogYmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBjb25zdCBGdW5jdG9yJiBmdW5j
dG9yKQordGVtcGxhdGU8dHlwZW5hbWUgQmxvY2ssIHR5cGVuYW1lIEZ1bmN0b3IsIHR5cGVuYW1l
IEluc3RydWN0aW9uPgordm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KEJsb2NrKiBj
b2RlQmxvY2ssIE9wY29kZUlEIG9wY29kZUlELCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIGNv
bnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiB7Ci0gICAgSW50ZXJwcmV0ZXIqIGludGVycHJldGVyID0g
Y29kZUJsb2NrLT52bSgpLT5pbnRlcnByZXRlcjsKLSAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rp
b25zQmVnaW4gPSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCk7Ci0gICAgSW5zdHJ1
Y3Rpb24qIGluc3RydWN0aW9uID0gJmluc3RydWN0aW9uc0JlZ2luW2J5dGVjb2RlT2Zmc2V0XTsK
LSAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGludGVycHJldGVyLT5nZXRPcGNvZGVJRChpbnN0cnVj
dGlvbi0+dS5vcGNvZGUpOwotCiAgICAgaWYgKG9wY29kZUlEICE9IG9wX2VudGVyICYmIGNvZGVC
bG9jay0+d2FzQ29tcGlsZWRXaXRoRGVidWdnaW5nT3Bjb2RlcygpICYmIGNvZGVCbG9jay0+c2Nv
cGVSZWdpc3RlcigpLmlzVmFsaWQoKSkKICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3Ry
dWN0aW9uLCBvcGNvZGVJRCwgY29kZUJsb2NrLT5zY29wZVJlZ2lzdGVyKCkub2Zmc2V0KCkpOwog
CkBAIC03NSw4ICs2OSw3IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCgKICAg
ICBjYXNlIG9wX2puZXFfbnVsbDoKICAgICBjYXNlIG9wX2RlYzoKICAgICBjYXNlIG9wX2luYzoK
LSAgICBjYXNlIG9wX2xvZ19zaGFkb3dfY2hpY2tlbl9wcm9sb2d1ZToKLSAgICBjYXNlIG9wX3Jl
c3VtZTogeworICAgIGNhc2Ugb3BfbG9nX3NoYWRvd19jaGlja2VuX3Byb2xvZ3VlOiB7CiAgICAg
ICAgIEFTU0VSVChvcGNvZGVMZW5ndGhzW29wY29kZUlEXSA+IDEpOwogICAgICAgICBmdW5jdG9y
KGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBpbnN0cnVjdGlvblsxXS51Lm9wZXJh
bmQpOwogICAgICAgICByZXR1cm47CkBAIC0yODQsMjIgKzI3NywxMyBAQCB2b2lkIGNvbXB1dGVV
c2VzRm9yQnl0ZWNvZGVPZmZzZXQoCiAgICAgICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5z
dHJ1Y3Rpb24sIG9wY29kZUlELCBsYXN0QXJnICsgaSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
Ci0gICAgY2FzZSBvcF9zYXZlOiB7Ci0gICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVj
dGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7Ci0gICAgICAgIHVuc2ln
bmVkIG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldCA9IGJ5dGVjb2RlT2Zmc2V0ICsgaW5zdHJ1Y3Rp
b25bM10udS5vcGVyYW5kOwotICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIG1lcmdlUG9pbnRC
bG9jayA9IG51bGxwdHI7Ci0gICAgICAgIGZvciAoQnl0ZWNvZGVCYXNpY0Jsb2NrKiBzdWNjZXNz
b3IgOiBibG9jay0+c3VjY2Vzc29ycygpKSB7Ci0gICAgICAgICAgICBpZiAoc3VjY2Vzc29yLT5s
ZWFkZXJCeXRlY29kZU9mZnNldCgpID09IG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldCkgewotICAg
ICAgICAgICAgICAgIG1lcmdlUG9pbnRCbG9jayA9IHN1Y2Nlc3NvcjsKLSAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBBU1NFUlQobWVyZ2VQ
b2ludEJsb2NrKTsKLSAgICAgICAgbWVyZ2VQb2ludEJsb2NrLT5pbigpLmZvckVhY2hTZXRCaXQo
WyZdKHVuc2lnbmVkIGxvY2FsKSB7Ci0gICAgICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5z
dHJ1Y3Rpb24sIG9wY29kZUlELCB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChsb2NhbCkub2Zmc2V0
KCkpOwotICAgICAgICB9KTsKKworICAgIGNhc2Ugb3Bfc2F2ZToKKyAgICBjYXNlIG9wX3Jlc3Vt
ZTogeworICAgICAgICAvLyBEbyBub3RoaW5nIGluIGxpdmVuZXNzIGFuYWx5c2lzLgogICAgICAg
ICByZXR1cm47CiAgICAgfQorCiAgICAgZGVmYXVsdDoKICAgICAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKICAgICAgICAgYnJlYWs7CkBAIC0zMDcsMTIgKzI5MSwxOCBAQCB2b2lk
IGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEZ1
bmN0b3I+Ci12b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2Rl
QmxvY2ssIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0
LCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQordm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zm
c2V0KENvZGVCbG9jayogY29kZUJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgY29uc3Qg
RnVuY3RvciYgZnVuY3RvcikKIHsKICAgICBJbnRlcnByZXRlciogaW50ZXJwcmV0ZXIgPSBjb2Rl
QmxvY2stPnZtKCktPmludGVycHJldGVyOwogICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNC
ZWdpbiA9IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsKICAgICBJbnN0cnVjdGlv
biogaW5zdHJ1Y3Rpb24gPSAmaW5zdHJ1Y3Rpb25zQmVnaW5bYnl0ZWNvZGVPZmZzZXRdOwogICAg
IE9wY29kZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGluc3RydWN0aW9u
LT51Lm9wY29kZSk7CisgICAgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldChjb2RlQmxvY2ss
IG9wY29kZUlELCBpbnN0cnVjdGlvbiwgZnVuY3Rvcik7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1l
IEJsb2NrLCB0eXBlbmFtZSBJbnN0cnVjdGlvbiwgdHlwZW5hbWUgRnVuY3Rvcj4KK3ZvaWQgY29t
cHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChCbG9jayogY29kZUJsb2NrLCBPcGNvZGVJRCBvcGNv
ZGVJRCwgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQor
ewogICAgIHN3aXRjaCAob3Bjb2RlSUQpIHsKICAgICAvLyBUaGVzZSBkb24ndCBkZWZpbmUgYW55
dGhpbmcuCiAgICAgY2FzZSBvcF9jb3B5X3Jlc3Q6CkBAIC0zMjAsNyArMzEwLDYgQEAgdm9pZCBj
b21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29k
ZUJhc2ljQmxvY2sqIGJsb2MKICAgICBjYXNlIG9wX2VuZDoKICAgICBjYXNlIG9wX3Rocm93Ogog
ICAgIGNhc2Ugb3BfdGhyb3dfc3RhdGljX2Vycm9yOgotICAgIGNhc2Ugb3Bfc2F2ZToKICAgICBj
YXNlIG9wX2Fzc2VydDoKICAgICBjYXNlIG9wX2RlYnVnOgogICAgIGNhc2Ugb3BfcmV0OgpAQCAt
NDU5LDcgKzQ0OCw3IEBAIHZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jCiAgICAgY2FzZSBvcF9kZWxf
YnlfaWQ6CiAgICAgY2FzZSBvcF9kZWxfYnlfdmFsOgogICAgIGNhc2Ugb3BfdW5zaWduZWQ6Ci0g
ICAgY2FzZSBvcF9nZXRfZnJvbV9hcmd1bWVudHM6IAorICAgIGNhc2Ugb3BfZ2V0X2Zyb21fYXJn
dW1lbnRzOgogICAgIGNhc2Ugb3BfZ2V0X3Jlc3RfbGVuZ3RoOiB7CiAgICAgICAgIEFTU0VSVChv
cGNvZGVMZW5ndGhzW29wY29kZUlEXSA+IDEpOwogICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywg
aW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBpbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOwpAQCAtNDc2
LDE4ICs0NjUsMjcgQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9j
ayogY29kZUJsb2NrLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2MKICAgICAgICAgICAgIGZ1bmN0
b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIHZpcnR1YWxSZWdpc3RlckZvckxv
Y2FsKGkpLm9mZnNldCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICBjYXNlIG9wX3Nh
dmU6CiAgICAgY2FzZSBvcF9yZXN1bWU6IHsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoYmxvY2st
PnN1Y2Nlc3NvcnMoKS5zaXplKCkgPT0gMSk7Ci0gICAgICAgIC8vIEZJWE1FOiBUaGlzIGlzIHJl
YWxseSBkaXJ0eS4KLSAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE1OTI4MQotICAgICAgICBibG9jay0+c3VjY2Vzc29ycygpWzBdLT5pbigpLmZvckVh
Y2hTZXRCaXQoWyZdKHVuc2lnbmVkIGxvY2FsKSB7Ci0gICAgICAgICAgICBmdW5jdG9yKGNvZGVC
bG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChsb2Nh
bCkub2Zmc2V0KCkpOwotICAgICAgICB9KTsKKyAgICAgICAgLy8gRG8gbm90aGluZyBpbiBsaXZl
bmVzcyBhbmFseXNpcy4KICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICBkZWZhdWx0OgorICAg
ICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm47CiAgICAg
fQogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgordm9pZCBjb21wdXRlRGVmc0ZvckJ5
dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9mZnNl
dCwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikKK3sKKyAgICBJbnRlcnByZXRlciogaW50ZXJwcmV0
ZXIgPSBjb2RlQmxvY2stPnZtKCktPmludGVycHJldGVyOworICAgIEluc3RydWN0aW9uKiBpbnN0
cnVjdGlvbnNCZWdpbiA9IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsKKyAgICBJ
bnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSAmaW5zdHJ1Y3Rpb25zQmVnaW5bYnl0ZWNvZGVPZmZz
ZXRdOworICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGlu
c3RydWN0aW9uLT51Lm9wY29kZSk7CisgICAgY29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChj
b2RlQmxvY2ssIG9wY29kZUlELCBpbnN0cnVjdGlvbiwgZnVuY3Rvcik7Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gQnl0ZWNvZGVVc2VEZWZfaApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCA5OWRhNWYzNzFkMmY0NWFjMmM4
ZGFmNjUxMDJiZmVlNDY5NDQ1OTcwLi5mZjIzYWI3NTU3NzU1NmE5NjliMmQyMzhjNzJmZTlhZjQz
YTk1MmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNw
cApAQCAtMzIsNiArMzIsNyBAQAogCiAjaW5jbHVkZSAiQmFzaWNCbG9ja0xvY2F0aW9uLmgiCiAj
aW5jbHVkZSAiQnl0ZWNvZGVHZW5lcmF0b3IuaCIKKyNpbmNsdWRlICJCeXRlY29kZUdyYXBoLmgi
CiAjaW5jbHVkZSAiQnl0ZWNvZGVVc2VEZWYuaCIKICNpbmNsdWRlICJDYWxsTGlua1N0YXR1cy5o
IgogI2luY2x1ZGUgIkRGR0NhcGFiaWxpdGllcy5oIgpAQCAtNjkyLDE4ICs2OTMsNiBAQCB2b2lk
IENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKFByaW50U3RyZWFtJiBvdXQpCiAgICAgICAgIH0gd2hp
bGUgKGkgPCBtX3JhcmVEYXRhLT5tX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXMuc2l6ZSgpKTsKICAg
ICB9CiAKLSAgICBpZiAobV9yYXJlRGF0YSAmJiAhbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9j
YWxzQXRZaWVsZC5pc0VtcHR5KCkpIHsKLSAgICAgICAgb3V0LnByaW50ZigiXG5MaXZlIENhbGxl
ZSBMb2NhbHM6XG4iKTsKLSAgICAgICAgdW5zaWduZWQgaSA9IDA7Ci0gICAgICAgIGRvIHsKLSAg
ICAgICAgICAgIGNvbnN0IEZhc3RCaXRWZWN0b3ImIGxpdmVuZXNzID0gbV9yYXJlRGF0YS0+bV9s
aXZlQ2FsbGVlTG9jYWxzQXRZaWVsZFtpXTsKLSAgICAgICAgICAgIG91dC5wcmludGYoIiAgbGl2
ZSUxdSA9ICIsIGkpOwotICAgICAgICAgICAgbGl2ZW5lc3MuZHVtcChvdXQpOwotICAgICAgICAg
ICAgb3V0LnByaW50ZigiXG4iKTsKLSAgICAgICAgICAgICsraTsKLSAgICAgICAgfSB3aGlsZSAo
aSA8IG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQuc2l6ZSgpKTsKLSAgICB9
Ci0KICAgICBvdXQucHJpbnRmKCJcbiIpOwogfQogCkBAIC0xNjYyLDMxICsxNjUxLDYgQEAgdm9p
ZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZSgKICAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAl
ZCIsIGRlYnVnSG9va05hbWUoZGVidWdIb29rSUQpLCBoYXNCcmVha3BvaW50RmxhZyk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBjYXNlIG9wX3NhdmU6IHsKLSAgICAg
ICAgICAgIGludCBnZW5lcmF0b3IgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIHVu
c2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9ICgrK2l0KS0+dS51bnNpZ25lZFZhbHVlOwot
ICAgICAgICAgICAgaW50IG9mZnNldCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAg
RmFzdEJpdFZlY3RvciBsaXZlbmVzczsKLSAgICAgICAgICAgIGlmIChsaXZlQ2FsbGVlTG9jYWxz
SW5kZXggPCBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkLnNpemUoKSkKLSAg
ICAgICAgICAgICAgICBsaXZlbmVzcyA9IG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0
WWllbGRbbGl2ZUNhbGxlZUxvY2Fsc0luZGV4XTsKLSAgICAgICAgICAgIHByaW50TG9jYXRpb25B
bmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgInNhdmUiKTsKLSAgICAgICAgICAgIG91dC5w
cmludGYoIiVzLCAiLCByZWdpc3Rlck5hbWUoZ2VuZXJhdG9yKS5kYXRhKCkpOwotICAgICAgICAg
ICAgbGl2ZW5lc3MuZHVtcChvdXQpOwotICAgICAgICAgICAgb3V0LnByaW50ZigiKEBsaXZlJTF1
KSwgJWQoLT4lZCkiLCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXgsIG9mZnNldCwgbG9jYXRpb24gKyBv
ZmZzZXQpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBvcF9y
ZXN1bWU6IHsKLSAgICAgICAgICAgIGludCBnZW5lcmF0b3IgPSAoKytpdCktPnUub3BlcmFuZDsK
LSAgICAgICAgICAgIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9ICgrK2l0KS0+dS51
bnNpZ25lZFZhbHVlOwotICAgICAgICAgICAgRmFzdEJpdFZlY3RvciBsaXZlbmVzczsKLSAgICAg
ICAgICAgIGlmIChsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPCBtX3JhcmVEYXRhLT5tX2xpdmVDYWxs
ZWVMb2NhbHNBdFlpZWxkLnNpemUoKSkKLSAgICAgICAgICAgICAgICBsaXZlbmVzcyA9IG1fcmFy
ZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGRbbGl2ZUNhbGxlZUxvY2Fsc0luZGV4XTsK
LSAgICAgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwg
InJlc3VtZSIpOwotICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICIsIHJlZ2lzdGVyTmFtZShn
ZW5lcmF0b3IpLmRhdGEoKSk7Ci0gICAgICAgICAgICBsaXZlbmVzcy5kdW1wKG91dCk7Ci0gICAg
ICAgICAgICBvdXQucHJpbnRmKCIoQGxpdmUlMXUpIiwgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4KTsK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfYXNzZXJ0OiB7
CiAgICAgICAgICAgICBpbnQgY29uZGl0aW9uID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAg
ICAgICBpbnQgbGluZSA9ICgrK2l0KS0+dS5vcGVyYW5kOwpAQCAtMTg5OSw3ICsxODYzLDYgQEAg
dm9pZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgQ29weVBhcnNlZEJsb2NrVGFn
LCBDb2RlQmxvY2smIG90aGVyKQogICAgICAgICBtX3JhcmVEYXRhLT5tX2NvbnN0YW50QnVmZmVy
cyA9IG90aGVyLm1fcmFyZURhdGEtPm1fY29uc3RhbnRCdWZmZXJzOwogICAgICAgICBtX3JhcmVE
YXRhLT5tX3N3aXRjaEp1bXBUYWJsZXMgPSBvdGhlci5tX3JhcmVEYXRhLT5tX3N3aXRjaEp1bXBU
YWJsZXM7CiAgICAgICAgIG1fcmFyZURhdGEtPm1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlcyA9IG90
aGVyLm1fcmFyZURhdGEtPm1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlczsKLSAgICAgICAgbV9yYXJl
RGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZCA9IG90aGVyLm1fcmFyZURhdGEtPm1fbGl2
ZUNhbGxlZUxvY2Fsc0F0WWllbGQ7CiAgICAgfQogICAgIAogICAgIGhlYXAoKS0+bV9jb2RlQmxv
Y2tzLmFkZCh0aGlzKTsKQEAgLTIwMjEsNyArMTk4NCw3IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5p
c2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5s
aW5rCiAgICAgICAgICAgICAgICAgVW5saW5rZWRTdHJpbmdKdW1wVGFibGU6OlN0cmluZ09mZnNl
dFRhYmxlOjppdGVyYXRvciBlbmQgPSB1bmxpbmtlZENvZGVCbG9jay0+c3RyaW5nU3dpdGNoSnVt
cFRhYmxlKGkpLm9mZnNldFRhYmxlLmVuZCgpOwogICAgICAgICAgICAgICAgIGZvciAoOyBwdHIg
IT0gZW5kOyArK3B0cikgewogICAgICAgICAgICAgICAgICAgICBPZmZzZXRMb2NhdGlvbiBvZmZz
ZXQ7Ci0gICAgICAgICAgICAgICAgICAgIG9mZnNldC5icmFuY2hPZmZzZXQgPSBwdHItPnZhbHVl
OworICAgICAgICAgICAgICAgICAgICBvZmZzZXQuYnJhbmNoT2Zmc2V0ID0gcHRyLT52YWx1ZS5i
cmFuY2hPZmZzZXQ7CiAgICAgICAgICAgICAgICAgICAgIG1fcmFyZURhdGEtPm1fc3RyaW5nU3dp
dGNoSnVtcFRhYmxlc1tpXS5vZmZzZXRUYWJsZS5hZGQocHRyLT5rZXksIG9mZnNldCk7CiAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpAQCAtMjA2MSw5ICsyMDI0LDYgQEAgdm9pZCBD
b2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJF
eGVjdXRhYmxlLCBVbmxpbmsKICAgICAvLyBCb29ra2VlcCB0aGUgc3Ryb25nbHkgcmVmZXJlbmNl
ZCBtb2R1bGUgZW52aXJvbm1lbnRzLgogICAgIEhhc2hTZXQ8SlNNb2R1bGVFbnZpcm9ubWVudCo+
IHN0cm9uZ2x5UmVmZXJlbmNlZE1vZHVsZUVudmlyb25tZW50czsKIAotICAgIC8vIEJvb2trZWVw
IHRoZSBtZXJnZSBwb2ludCBieXRlY29kZSBvZmZzZXRzLgotICAgIFZlY3RvcjxzaXplX3Q+IG1l
cmdlUG9pbnRCeXRlY29kZU9mZnNldHM7Ci0KICAgICBSZWZDb3VudGVkQXJyYXk8SW5zdHJ1Y3Rp
b24+IGluc3RydWN0aW9ucyhpbnN0cnVjdGlvbkNvdW50KTsKIAogICAgIGZvciAodW5zaWduZWQg
aSA9IDA7ICFpbnN0cnVjdGlvblJlYWRlci5hdEVuZCgpOyApIHsKQEAgLTIzNDYsMTUgKzIzMDYs
NiBAQCB2b2lkIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRh
YmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGluawogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KIAotICAgICAgICBjYXNlIG9wX3NhdmU6IHsKLSAgICAgICAgICAgIHVuc2lnbmVkIGxpdmVD
YWxsZWVMb2NhbHNJbmRleCA9IHBjWzJdLnUuaW5kZXg7Ci0gICAgICAgICAgICBpbnQgb2Zmc2V0
ID0gcGNbM10udS5vcGVyYW5kOwotICAgICAgICAgICAgaWYgKGxpdmVDYWxsZWVMb2NhbHNJbmRl
eCA+PSBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXRzLnNpemUoKSkKLSAgICAgICAgICAgICAgICBt
ZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXRzLnJlc2l6ZShsaXZlQ2FsbGVlTG9jYWxzSW5kZXggKyAx
KTsKLSAgICAgICAgICAgIG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldHNbbGl2ZUNhbGxlZUxvY2Fs
c0luZGV4XSA9IGkgKyBvZmZzZXQ7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotCiAg
ICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMjM2Niwy
MCArMjMxNyw2IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlw
dEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAKICAgICBtX2luc3RydWN0aW9u
cyA9IFdURk1vdmUoaW5zdHJ1Y3Rpb25zKTsKIAotICAgIC8vIFBlcmZvcm0gYnl0ZWNvZGUgbGl2
ZW5lc3MgYW5hbHlzaXMgdG8gZGV0ZXJtaW5lIHdoaWNoIGxvY2FscyBhcmUgbGl2ZSBhbmQgc2hv
dWxkIGJlIHJlc3VtZWQgd2hlbiBleGVjdXRpbmcgb3BfcmVzdW1lLgotICAgIGlmICh1bmxpbmtl
ZENvZGVCbG9jay0+cGFyc2VNb2RlKCkgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JCb2R5
TW9kZSkgewotICAgICAgICBpZiAoc2l6ZV90IGNvdW50ID0gbWVyZ2VQb2ludEJ5dGVjb2RlT2Zm
c2V0cy5zaXplKCkpIHsKLSAgICAgICAgICAgIGNyZWF0ZVJhcmVEYXRhSWZOZWNlc3NhcnkoKTsK
LSAgICAgICAgICAgIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcyBsaXZlbmVzcyh0aGlzKTsKLSAg
ICAgICAgICAgIG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQuZ3Jvdyhjb3Vu
dCk7Ci0gICAgICAgICAgICBzaXplX3QgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gMDsKLSAgICAg
ICAgICAgIGZvciAoc2l6ZV90IGJ5dGVjb2RlT2Zmc2V0IDogbWVyZ2VQb2ludEJ5dGVjb2RlT2Zm
c2V0cykgewotICAgICAgICAgICAgICAgIG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0
WWllbGRbbGl2ZUNhbGxlZUxvY2Fsc0luZGV4XSA9IGxpdmVuZXNzLmdldExpdmVuZXNzSW5mb0F0
Qnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpOwotICAgICAgICAgICAgICAgICsrbGl2ZUNh
bGxlZUxvY2Fsc0luZGV4OwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCiAgICAg
Ly8gU2V0IG9wdGltaXphdGlvbiB0aHJlc2hvbGRzIG9ubHkgYWZ0ZXIgbV9pbnN0cnVjdGlvbnMg
aXMgaW5pdGlhbGl6ZWQsIHNpbmNlIHRoZXNlCiAgICAgLy8gcmVseSBvbiB0aGUgaW5zdHJ1Y3Rp
b24gY291bnQgKGFuZCBhcmUgaW4gdGhlb3J5IHBlcm1pdHRlZCB0byBhbHNvIGluc3BlY3QgdGhl
CiAgICAgLy8gaW5zdHJ1Y3Rpb24gc3RyZWFtIHRvIG1vcmUgYWNjdXJhdGUgYXNzZXNzIHRoZSBj
b3N0IG9mIHRpZXItdXApLgpAQCAtMzE3OSwyMSArMzExNiw3IEBAIEhhbmRsZXJJbmZvKiBDb2Rl
QmxvY2s6OmhhbmRsZXJGb3JJbmRleCh1bnNpZ25lZCBpbmRleCwgUmVxdWlyZWRIYW5kbGVyIHJl
cXVpcmVkCiB7CiAgICAgaWYgKCFtX3JhcmVEYXRhKQogICAgICAgICByZXR1cm4gMDsKLSAgICAK
LSAgICBWZWN0b3I8SGFuZGxlckluZm8+JiBleGNlcHRpb25IYW5kbGVycyA9IG1fcmFyZURhdGEt
Pm1fZXhjZXB0aW9uSGFuZGxlcnM7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBleGNlcHRp
b25IYW5kbGVycy5zaXplKCk7ICsraSkgewotICAgICAgICBIYW5kbGVySW5mbyYgaGFuZGxlciA9
IGV4Y2VwdGlvbkhhbmRsZXJzW2ldOwotICAgICAgICBpZiAoKHJlcXVpcmVkSGFuZGxlciA9PSBS
ZXF1aXJlZEhhbmRsZXI6OkNhdGNoSGFuZGxlcikgJiYgIWhhbmRsZXIuaXNDYXRjaEhhbmRsZXIo
KSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIC8vIEhhbmRsZXJzIGFyZSBvcmRl
cmVkIGlubmVybW9zdCBmaXJzdCwgc28gdGhlIGZpcnN0IGhhbmRsZXIgd2UgZW5jb3VudGVyCi0g
ICAgICAgIC8vIHRoYXQgY29udGFpbnMgdGhlIHNvdXJjZSBhZGRyZXNzIGlzIHRoZSBjb3JyZWN0
IGhhbmRsZXIgdG8gdXNlLgotICAgICAgICAvLyBUaGlzIGluZGV4IHVzZWQgaXMgZWl0aGVyIHRo
ZSBCeXRlY29kZU9mZnNldCBvciBhIENhbGxTaXRlSW5kZXguCi0gICAgICAgIGlmIChoYW5kbGVy
LnN0YXJ0IDw9IGluZGV4ICYmIGhhbmRsZXIuZW5kID4gaW5kZXgpCi0gICAgICAgICAgICByZXR1
cm4gJmhhbmRsZXI7Ci0gICAgfQotCi0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIEhhbmRsZXJJ
bmZvOjpoYW5kbGVyRm9ySW5kZXgobV9yYXJlRGF0YS0+bV9leGNlcHRpb25IYW5kbGVycywgaW5k
ZXgsIHJlcXVpcmVkSGFuZGxlcik7CiB9CiAKIENhbGxTaXRlSW5kZXggQ29kZUJsb2NrOjpuZXdF
eGNlcHRpb25IYW5kbGluZ0NhbGxTaXRlSW5kZXgoQ2FsbFNpdGVJbmRleCBvcmlnaW5hbENhbGxT
aXRlKQpAQCAtMzI4OSw3ICszMjEyLDYgQEAgdm9pZCBDb2RlQmxvY2s6OnNocmlua1RvRml0KFNo
cmlua01vZGUgc2hyaW5rTW9kZSkKICAgICAgICAgaWYgKG1fcmFyZURhdGEpIHsKICAgICAgICAg
ICAgIG1fcmFyZURhdGEtPm1fc3dpdGNoSnVtcFRhYmxlcy5zaHJpbmtUb0ZpdCgpOwogICAgICAg
ICAgICAgbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzLnNocmlua1RvRml0KCk7
Ci0gICAgICAgICAgICBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkLnNocmlu
a1RvRml0KCk7CiAgICAgICAgIH0KICAgICB9IC8vIGVsc2UgZG9uJ3Qgc2hyaW5rIHRoZXNlLCBi
ZWNhdXNlIHdlIHdvdWxkIGhhdmUgYWxyZWFkeSBwb2ludGVkIHBvaW50ZXJzIGludG8gdGhlc2Ug
dGFibGVzLgogfQpAQCAtNDI4OCw3ICs0MjEwLDggQEAgVmFsdWVQcm9maWxlKiBDb2RlQmxvY2s6
OnZhbHVlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KGludCBieXRlY29kZU9mZnNldCkKIAogdm9p
ZCBDb2RlQmxvY2s6OnZhbGlkYXRlKCkKIHsKLSAgICBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMg
bGl2ZW5lc3ModGhpcyk7IC8vIENvbXB1dGUgZGlyZWN0bHkgZnJvbSBzY3JhdGNoIHNvIGl0IGRv
ZXNuJ3QgZWZmZWN0IENvZGVCbG9jayBmb290cHJpbnQuCisgICAgQnl0ZWNvZGVHcmFwaDxDb2Rl
QmxvY2s+IGdyYXBoKHRoaXMsIGluc3RydWN0aW9ucygpKTsKKyAgICBCeXRlY29kZUxpdmVuZXNz
QW5hbHlzaXMgbGl2ZW5lc3MoZ3JhcGgpOyAvLyBDb21wdXRlIGRpcmVjdGx5IGZyb20gc2NyYXRj
aCBzbyBpdCBkb2Vzbid0IGVmZmVjdCBDb2RlQmxvY2sgZm9vdHByaW50LgogICAgIAogICAgIEZh
c3RCaXRWZWN0b3IgbGl2ZUF0SGVhZCA9IGxpdmVuZXNzLmdldExpdmVuZXNzSW5mb0F0Qnl0ZWNv
ZGVPZmZzZXQoMCk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrLmgKaW5kZXggYjI4ODM2NTRiZTM0NWU3YWIwMTEwZWMxYjZmNWQ2OTdhMThjMjdjMi4uODgx
NzJiYzlhNzFkYWM3MGI4MDIyZTZjZWRmMGQ1MTY5OWFlNWRkNSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaApAQCAtMjIwLDEwICsyMjAsNiBAQCBjbGFzcyBD
b2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAgICAgcmV0dXJuIGluZGV4ID49IG1fbnVt
VmFyczsKICAgICB9CiAKLSAgICBlbnVtIGNsYXNzIFJlcXVpcmVkSGFuZGxlciB7Ci0gICAgICAg
IENhdGNoSGFuZGxlciwKLSAgICAgICAgQW55SGFuZGxlcgotICAgIH07CiAgICAgSGFuZGxlcklu
Zm8qIGhhbmRsZXJGb3JCeXRlY29kZU9mZnNldCh1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgUmVx
dWlyZWRIYW5kbGVyID0gUmVxdWlyZWRIYW5kbGVyOjpBbnlIYW5kbGVyKTsKICAgICBIYW5kbGVy
SW5mbyogaGFuZGxlckZvckluZGV4KHVuc2lnbmVkLCBSZXF1aXJlZEhhbmRsZXIgPSBSZXF1aXJl
ZEhhbmRsZXI6OkFueUhhbmRsZXIpOwogICAgIHZvaWQgcmVtb3ZlRXhjZXB0aW9uSGFuZGxlckZv
ckNhbGxTaXRlKENhbGxTaXRlSW5kZXgpOwpAQCAtMjk1LDYgKzI5MSw4IEBAIGNsYXNzIENvZGVC
bG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SW5zdHJ1
Y3Rpb24qPihyZXR1cm5BZGRyZXNzKSAtIGluc3RydWN0aW9ucygpLmJlZ2luKCk7CiAgICAgfQog
CisgICAgdHlwZWRlZiBSZWZDb3VudGVkQXJyYXk8SW5zdHJ1Y3Rpb24+JiBVbnBhY2tlZEluc3Ry
dWN0aW9uczsKKwogICAgIHVuc2lnbmVkIG51bWJlck9mSW5zdHJ1Y3Rpb25zKCkgY29uc3QgeyBy
ZXR1cm4gbV9pbnN0cnVjdGlvbnMuc2l6ZSgpOyB9CiAgICAgUmVmQ291bnRlZEFycmF5PEluc3Ry
dWN0aW9uPiYgaW5zdHJ1Y3Rpb25zKCkgeyByZXR1cm4gbV9pbnN0cnVjdGlvbnM7IH0KICAgICBj
b25zdCBSZWZDb3VudGVkQXJyYXk8SW5zdHJ1Y3Rpb24+JiBpbnN0cnVjdGlvbnMoKSBjb25zdCB7
IHJldHVybiBtX2luc3RydWN0aW9uczsgfQpAQCAtNTQyLDcgKzU0MCw3IEBAIGNsYXNzIENvZGVC
bG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgIH0KIAogICAgIFdyaXRlQmFycmllcjxVbmtub3du
PiYgY29uc3RhbnRSZWdpc3RlcihpbnQgaW5kZXgpIHsgcmV0dXJuIG1fY29uc3RhbnRSZWdpc3Rl
cnNbaW5kZXggLSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleF07IH0KLSAgICBBTFdBWVNfSU5M
SU5FIGJvb2wgaXNDb25zdGFudFJlZ2lzdGVySW5kZXgoaW50IGluZGV4KSBjb25zdCB7IHJldHVy
biBpbmRleCA+PSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleDsgfQorICAgIHN0YXRpYyBBTFdB
WVNfSU5MSU5FIGJvb2wgaXNDb25zdGFudFJlZ2lzdGVySW5kZXgoaW50IGluZGV4KSB7IHJldHVy
biBpbmRleCA+PSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleDsgfQogICAgIEFMV0FZU19JTkxJ
TkUgSlNWYWx1ZSBnZXRDb25zdGFudChpbnQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIG1fY29uc3Rh
bnRSZWdpc3RlcnNbaW5kZXggLSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleF0uZ2V0KCk7IH0K
ICAgICBBTFdBWVNfSU5MSU5FIFNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbiBjb25zdGFudFNvdXJj
ZUNvZGVSZXByZXNlbnRhdGlvbihpbnQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIG1fY29uc3RhbnRz
U291cmNlQ29kZVJlcHJlc2VudGF0aW9uW2luZGV4IC0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5k
ZXhdOyB9CiAKQEAgLTU4OCwxMiArNTg2LDE0IEBAIGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBK
U0NlbGwgewogICAgICAgICAgICAgaWYgKCEhbV9saXZlbmVzc0FuYWx5c2lzKQogICAgICAgICAg
ICAgICAgIHJldHVybiAqbV9saXZlbmVzc0FuYWx5c2lzOwogICAgICAgICB9Ci0gICAgICAgIHN0
ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM+IGFuYWx5c2lzID0KLSAgICAg
ICAgICAgIHN0ZDo6bWFrZV91bmlxdWU8Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzPih0aGlzKTsK
KyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlR3JhcGg8Q29kZUJsb2NrPj4gZ3JhcGgg
PSBzdGQ6Om1ha2VfdW5pcXVlPEJ5dGVjb2RlR3JhcGg8Q29kZUJsb2NrPj4odGhpcywgaW5zdHJ1
Y3Rpb25zKCkpOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5
c2lzPiBhbmFseXNpcyA9IHN0ZDo6bWFrZV91bmlxdWU8Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lz
PigqZ3JhcGgpOwogICAgICAgICB7CiAgICAgICAgICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxv
Y2tlcihtX2xvY2spOwotICAgICAgICAgICAgaWYgKCFtX2xpdmVuZXNzQW5hbHlzaXMpCisgICAg
ICAgICAgICBpZiAoIW1fbGl2ZW5lc3NBbmFseXNpcykgeworICAgICAgICAgICAgICAgIG1fYnl0
ZWNvZGVHcmFwaCA9IFdURk1vdmUoZ3JhcGgpOwogICAgICAgICAgICAgICAgIG1fbGl2ZW5lc3NB
bmFseXNpcyA9IFdURk1vdmUoYW5hbHlzaXMpOworICAgICAgICAgICAgfQogICAgICAgICAgICAg
cmV0dXJuICptX2xpdmVuZXNzQW5hbHlzaXM7CiAgICAgICAgIH0KICAgICB9CkBAIC02MTYsMTgg
KzYxNiw2IEBAIGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgIFN0cmluZ0p1
bXBUYWJsZSYgYWRkU3RyaW5nU3dpdGNoSnVtcFRhYmxlKCkgeyBjcmVhdGVSYXJlRGF0YUlmTmVj
ZXNzYXJ5KCk7IG1fcmFyZURhdGEtPm1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlcy5hcHBlbmQoU3Ry
aW5nSnVtcFRhYmxlKCkpOyByZXR1cm4gbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFi
bGVzLmxhc3QoKTsgfQogICAgIFN0cmluZ0p1bXBUYWJsZSYgc3RyaW5nU3dpdGNoSnVtcFRhYmxl
KGludCB0YWJsZUluZGV4KSB7IFJFTEVBU0VfQVNTRVJUKG1fcmFyZURhdGEpOyByZXR1cm4gbV9y
YXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzW3RhYmxlSW5kZXhdOyB9CiAKLSAgICAv
LyBMaXZlIGNhbGxlZSByZWdpc3RlcnMgYXQgeWllbGQgcG9pbnRzLgotICAgIGNvbnN0IEZhc3RC
aXRWZWN0b3ImIGxpdmVDYWxsZWVMb2NhbHNBdFlpZWxkKHVuc2lnbmVkIGluZGV4KSBjb25zdAot
ICAgIHsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9yYXJlRGF0YSk7Ci0gICAgICAgIHJldHVy
biBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkW2luZGV4XTsKLSAgICB9Ci0g
ICAgRmFzdEJpdFZlY3RvciYgbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQodW5zaWduZWQgaW5kZXgp
Ci0gICAgewotICAgICAgICBSRUxFQVNFX0FTU0VSVChtX3JhcmVEYXRhKTsKLSAgICAgICAgcmV0
dXJuIG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGRbaW5kZXhdOwotICAgIH0K
LQogICAgIEV2YWxDb2RlQ2FjaGUmIGV2YWxDb2RlQ2FjaGUoKSB7IGNyZWF0ZVJhcmVEYXRhSWZO
ZWNlc3NhcnkoKTsgcmV0dXJuIG1fcmFyZURhdGEtPm1fZXZhbENvZGVDYWNoZTsgfQogCiAgICAg
ZW51bSBTaHJpbmtNb2RlIHsKQEAgLTg4Miw4ICs4NzAsNiBAQCBjbGFzcyBDb2RlQmxvY2sgOiBw
dWJsaWMgSlNDZWxsIHsKICAgICAgICAgVmVjdG9yPFNpbXBsZUp1bXBUYWJsZT4gbV9zd2l0Y2hK
dW1wVGFibGVzOwogICAgICAgICBWZWN0b3I8U3RyaW5nSnVtcFRhYmxlPiBtX3N0cmluZ1N3aXRj
aEp1bXBUYWJsZXM7CiAKLSAgICAgICAgVmVjdG9yPEZhc3RCaXRWZWN0b3I+IG1fbGl2ZUNhbGxl
ZUxvY2Fsc0F0WWllbGQ7Ci0KICAgICAgICAgRXZhbENvZGVDYWNoZSBtX2V2YWxDb2RlQ2FjaGU7
CiAgICAgfTsKIApAQCAtMTA1Niw2ICsxMDQyLDcgQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGlj
IEpTQ2VsbCB7CiAKICAgICBzdGQ6OmNocm9ubzo6c3RlYWR5X2Nsb2NrOjp0aW1lX3BvaW50IG1f
Y3JlYXRpb25UaW1lOwogCisgICAgc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlR3JhcGg8Q29kZUJs
b2NrPj4gbV9ieXRlY29kZUdyYXBoOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUxpdmVu
ZXNzQW5hbHlzaXM+IG1fbGl2ZW5lc3NBbmFseXNpczsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxS
YXJlRGF0YT4gbV9yYXJlRGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9IYW5kbGVySW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0hh
bmRsZXJJbmZvLmgKaW5kZXggYWNkZGEwOGVkMTRjYmY5ZjA5NzEyNzUwNDA1YTQxNzQxZjc2YTIx
My4uYmI2OTJiOWRjMTcwYjA5ZjQzY2U4NjdmOTQxZjc1MzVhY2ZlY2Y2MyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0hhbmRsZXJJbmZvLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0hhbmRsZXJJbmZvLmgKQEAgLTM3LDYgKzM3LDExIEBA
IGVudW0gY2xhc3MgSGFuZGxlclR5cGUgewogICAgIFN5bnRoZXNpemVkRmluYWxseSA9IDMKIH07
CiAKK2VudW0gY2xhc3MgUmVxdWlyZWRIYW5kbGVyIHsKKyAgICBDYXRjaEhhbmRsZXIsCisgICAg
QW55SGFuZGxlcgorfTsKKwogc3RydWN0IEhhbmRsZXJJbmZvQmFzZSB7CiAgICAgSGFuZGxlclR5
cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEhhbmRsZXJUeXBlPih0eXBlQml0
cyk7IH0KICAgICB2b2lkIHNldFR5cGUoSGFuZGxlclR5cGUgdHlwZSkgeyB0eXBlQml0cyA9IHN0
YXRpY19jYXN0PHVpbnQzMl90Pih0eXBlKTsgfQpAQCAtNTgsNiArNjMsMjMgQEAgc3RydWN0IEhh
bmRsZXJJbmZvQmFzZSB7CiAKICAgICBib29sIGlzQ2F0Y2hIYW5kbGVyKCkgY29uc3QgeyByZXR1
cm4gdHlwZSgpID09IEhhbmRsZXJUeXBlOjpDYXRjaDsgfQogCisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgSGFuZGxlcj4KKyAgICBzdGF0aWMgSGFuZGxlciogaGFuZGxlckZvckluZGV4KFZlY3RvcjxI
YW5kbGVyPiYgZXhlcHRpb25IYW5kbGVycywgdW5zaWduZWQgaW5kZXgsIFJlcXVpcmVkSGFuZGxl
ciByZXF1aXJlZEhhbmRsZXIpCisgICAgeworICAgICAgICBmb3IgKEhhbmRsZXImIGhhbmRsZXIg
OiBleGVwdGlvbkhhbmRsZXJzKSB7CisgICAgICAgICAgICBpZiAoKHJlcXVpcmVkSGFuZGxlciA9
PSBSZXF1aXJlZEhhbmRsZXI6OkNhdGNoSGFuZGxlcikgJiYgIWhhbmRsZXIuaXNDYXRjaEhhbmRs
ZXIoKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgLy8gSGFuZGxl
cnMgYXJlIG9yZGVyZWQgaW5uZXJtb3N0IGZpcnN0LCBzbyB0aGUgZmlyc3QgaGFuZGxlciB3ZSBl
bmNvdW50ZXIKKyAgICAgICAgICAgIC8vIHRoYXQgY29udGFpbnMgdGhlIHNvdXJjZSBhZGRyZXNz
IGlzIHRoZSBjb3JyZWN0IGhhbmRsZXIgdG8gdXNlLgorICAgICAgICAgICAgLy8gVGhpcyBpbmRl
eCB1c2VkIGlzIGVpdGhlciB0aGUgQnl0ZWNvZGVPZmZzZXQgb3IgYSBDYWxsU2l0ZUluZGV4Lgor
ICAgICAgICAgICAgaWYgKGhhbmRsZXIuc3RhcnQgPD0gaW5kZXggJiYgaGFuZGxlci5lbmQgPiBp
bmRleCkKKyAgICAgICAgICAgICAgICByZXR1cm4gJmhhbmRsZXI7CisgICAgICAgIH0KKworICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKICAgICB1aW50MzJfdCBzdGFydDsKICAgICB1
aW50MzJfdCBlbmQ7CiAgICAgdWludDMyX3QgdGFyZ2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmNwcAppbmRleCBlMmNiMDAw
NDgzNzk0YmE5MmQ1MTBkY2Y1ZmE5OTQ4ODVhMjNkYzNkLi4wOWZjODYxZWFiZTlhOWFhNmZkNjYx
MjlmMTg5ZWRmMjk2YTQyZTgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmNwcApAQCAtMzAsMTAgKzMwLDEwIEBACiAKIG5h
bWVzcGFjZSBKU0MgewogCi10ZW1wbGF0ZSA8c2l6ZV90IHZlY3RvclNpemU+Ci1zdGF0aWMgdm9p
ZCBnZXRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBJ
bnRlcnByZXRlciogaW50ZXJwcmV0ZXIsIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwg
dW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIFZlY3Rvcjx1bnNpZ25lZCwgdmVjdG9yU2l6ZT4mIG91
dCkKK3RlbXBsYXRlIDxzaXplX3QgdmVjdG9yU2l6ZSwgdHlwZW5hbWUgQmxvY2ssIHR5cGVuYW1l
IEluc3RydWN0aW9uPgorc3RhdGljIHZvaWQgZ2V0SnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNl
dChCbG9jayogY29kZUJsb2NrLCBJbnRlcnByZXRlciogaW50ZXJwcmV0ZXIsIEluc3RydWN0aW9u
KiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIFZlY3Rvcjx1bnNp
Z25lZCwgdmVjdG9yU2l6ZT4mIG91dCkKIHsKLSAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGludGVy
cHJldGVyLT5nZXRPcGNvZGVJRChpbnN0cnVjdGlvbnNCZWdpbltieXRlY29kZU9mZnNldF0udS5v
cGNvZGUpOworICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0ZXItPmdldE9wY29kZUlE
KGluc3RydWN0aW9uc0JlZ2luW2J5dGVjb2RlT2Zmc2V0XSk7CiAgICAgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnQgPSBpbnN0cnVjdGlvbnNCZWdpbiArIGJ5dGVjb2RlT2Zmc2V0OwogICAgIHN3aXRjaCAo
b3Bjb2RlSUQpIHsKICAgICBjYXNlIG9wX2ptcDoKQEAgLTU0LDIxICs1NCwyNSBAQCBzdGF0aWMg
dm9pZCBnZXRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2Nr
LCBJbnRlcnByZXRlciogaQogICAgIGNhc2Ugb3Bfam5sZXNzZXE6CiAgICAgY2FzZSBvcF9qbmdy
ZWF0ZXI6CiAgICAgY2FzZSBvcF9qbmdyZWF0ZXJlcToKLSAgICBjYXNlIG9wX3NhdmU6IC8vIFRo
ZSBqdW1wIG9mIG9wX3NhdmUgaXMgcHVyZWx5IGZvciBjYWxjdWxhdGluZyBsaXZlbmVzcy4KICAg
ICAgICAgb3V0LmFwcGVuZChieXRlY29kZU9mZnNldCArIGN1cnJlbnRbM10udS5vcGVyYW5kKTsK
ICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBvcF9zYXZlOiB7CisgICAgICAgIC8vIFRoZSBqdW1w
IG9mIG9wX3NhdmUgdW5kZXIgRXh0cmFjdEdlbmVyYXRvckxpdmVDYWxsZWVMb2NhbHMgbW9kZSBp
cyBwdXJlbHkgZm9yIGNhbGN1bGF0aW5nIGxpdmVuZXNzLgorICAgICAgICBvdXQuYXBwZW5kKGJ5
dGVjb2RlT2Zmc2V0ICsgY3VycmVudFszXS51Lm9wZXJhbmQpOworICAgICAgICBicmVhazsKKyAg
ICB9CiAgICAgY2FzZSBvcF9zd2l0Y2hfaW1tOgogICAgIGNhc2Ugb3Bfc3dpdGNoX2NoYXI6IHsK
LSAgICAgICAgU2ltcGxlSnVtcFRhYmxlJiB0YWJsZSA9IGNvZGVCbG9jay0+c3dpdGNoSnVtcFRh
YmxlKGN1cnJlbnRbMV0udS5vcGVyYW5kKTsKKyAgICAgICAgYXV0byYgdGFibGUgPSBjb2RlQmxv
Y2stPnN3aXRjaEp1bXBUYWJsZShjdXJyZW50WzFdLnUub3BlcmFuZCk7CiAgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IHRhYmxlLmJyYW5jaE9mZnNldHMuc2l6ZSgpOyBpLS07KQogICAgICAgICAg
ICAgb3V0LmFwcGVuZChieXRlY29kZU9mZnNldCArIHRhYmxlLmJyYW5jaE9mZnNldHNbaV0pOwog
ICAgICAgICBvdXQuYXBwZW5kKGJ5dGVjb2RlT2Zmc2V0ICsgY3VycmVudFsyXS51Lm9wZXJhbmQp
OwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBvcF9zd2l0Y2hfc3RyaW5nOiB7Ci0g
ICAgICAgIFN0cmluZ0p1bXBUYWJsZSYgdGFibGUgPSBjb2RlQmxvY2stPnN0cmluZ1N3aXRjaEp1
bXBUYWJsZShjdXJyZW50WzFdLnUub3BlcmFuZCk7Ci0gICAgICAgIFN0cmluZ0p1bXBUYWJsZTo6
U3RyaW5nT2Zmc2V0VGFibGU6Oml0ZXJhdG9yIGl0ZXIgPSB0YWJsZS5vZmZzZXRUYWJsZS5iZWdp
bigpOwotICAgICAgICBTdHJpbmdKdW1wVGFibGU6OlN0cmluZ09mZnNldFRhYmxlOjppdGVyYXRv
ciBlbmQgPSB0YWJsZS5vZmZzZXRUYWJsZS5lbmQoKTsKKyAgICAgICAgYXV0byYgdGFibGUgPSBj
b2RlQmxvY2stPnN0cmluZ1N3aXRjaEp1bXBUYWJsZShjdXJyZW50WzFdLnUub3BlcmFuZCk7Cisg
ICAgICAgIGF1dG8gaXRlciA9IHRhYmxlLm9mZnNldFRhYmxlLmJlZ2luKCk7CisgICAgICAgIGF1
dG8gZW5kID0gdGFibGUub2Zmc2V0VGFibGUuZW5kKCk7CiAgICAgICAgIGZvciAoOyBpdGVyICE9
IGVuZDsgKytpdGVyKQogICAgICAgICAgICAgb3V0LmFwcGVuZChieXRlY29kZU9mZnNldCArIGl0
ZXItPnZhbHVlLmJyYW5jaE9mZnNldCk7CiAgICAgICAgIG91dC5hcHBlbmQoYnl0ZWNvZGVPZmZz
ZXQgKyBjdXJyZW50WzJdLnUub3BlcmFuZCk7CkBAIC04MiwxMyArODYsMTkgQEAgc3RhdGljIHZv
aWQgZ2V0SnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywg
SW50ZXJwcmV0ZXIqIGkKICAgICB9CiB9CiAKLXZvaWQgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0
cyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgVmVjdG9yPHVuc2lnbmVkLCAzMj4mIG91dCkKK2VudW0g
Y2xhc3MgQ29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0c01vZGUgeworICAgIEZvbGxvd0NvZGVCbG9j
a0NsYWltLAorICAgIEZvcmNlQ29tcHV0ZSwKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIEJsb2Nr
LCB0eXBlbmFtZSBJbnN0cnVjdGlvbiwgc2l6ZV90IHZlY3RvclNpemU+Cit2b2lkIGNvbXB1dGVQ
cmVjaXNlSnVtcFRhcmdldHNJbnRlcm5hbChDb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzTW9kZSBt
b2RlLCBCbG9jayogY29kZUJsb2NrLCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVu
c2lnbmVkIGluc3RydWN0aW9uQ291bnQsIFZlY3Rvcjx1bnNpZ25lZCwgdmVjdG9yU2l6ZT4mIG91
dCkKIHsKICAgICBBU1NFUlQob3V0LmlzRW1wdHkoKSk7CiAgICAgCiAgICAgLy8gV2Ugd2lsbCBk
ZXJpdmUgYSBzdXBlcnNldCBvZiB0aGUganVtcCB0YXJnZXRzIHRoYXQgdGhlIGNvZGUgYmxvY2sg
dGhpbmtzIGl0IGhhcy4KICAgICAvLyBTbywgaWYgdGhlIGNvZGUgYmxvY2sgY2xhaW1zIHRoZXJl
IGFyZSBub25lLCB0aGVuIHdlIGFyZSBkb25lLgotICAgIGlmICghY29kZUJsb2NrLT5udW1iZXJP
Zkp1bXBUYXJnZXRzKCkpCisgICAgaWYgKG1vZGUgPT0gQ29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0
c01vZGU6OkZvbGxvd0NvZGVCbG9ja0NsYWltICYmICFjb2RlQmxvY2stPm51bWJlck9mSnVtcFRh
cmdldHMoKSkKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIGZvciAodW5zaWduZWQgaSA9IGNv
ZGVCbG9jay0+bnVtYmVyT2ZFeGNlcHRpb25IYW5kbGVycygpOyBpLS07KSB7CkBAIC05OCwxMCAr
MTA4LDggQEAgdm9pZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKENvZGVCbG9jayogY29kZUJs
b2NrLCBWZWN0b3I8dW5zaWduZWQsIDMyPiYgb3V0KQogICAgIH0KIAogICAgIEludGVycHJldGVy
KiBpbnRlcnByZXRlciA9IGNvZGVCbG9jay0+dm0oKS0+aW50ZXJwcmV0ZXI7Ci0gICAgSW5zdHJ1
Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luID0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdp
bigpOwotICAgIHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQgPSBjb2RlQmxvY2stPmluc3RydWN0
aW9ucygpLnNpemUoKTsKICAgICBmb3IgKHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0ID0gMDsgYnl0
ZWNvZGVPZmZzZXQgPCBpbnN0cnVjdGlvbkNvdW50OykgewotICAgICAgICBPcGNvZGVJRCBvcGNv
ZGVJRCA9IGludGVycHJldGVyLT5nZXRPcGNvZGVJRChpbnN0cnVjdGlvbnNCZWdpbltieXRlY29k
ZU9mZnNldF0udS5vcGNvZGUpOworICAgICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGludGVycHJl
dGVyLT5nZXRPcGNvZGVJRChpbnN0cnVjdGlvbnNCZWdpbltieXRlY29kZU9mZnNldF0pOwogICAg
ICAgICBnZXRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9jaywgaW50ZXJwcmV0
ZXIsIGluc3RydWN0aW9uc0JlZ2luLCBieXRlY29kZU9mZnNldCwgb3V0KTsKICAgICAgICAgYnl0
ZWNvZGVPZmZzZXQgKz0gb3Bjb2RlTGVuZ3Roc1tvcGNvZGVJRF07CiAgICAgfQpAQCAtMTIzLDEx
ICsxMzEsMzUgQEAgdm9pZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKENvZGVCbG9jayogY29k
ZUJsb2NrLCBWZWN0b3I8dW5zaWduZWQsIDMyPiYgb3V0KQogICAgIG91dC5zaHJpbmtUb0ZpdCgp
OwogfQogCi12b2lkIGZpbmRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayog
Y29kZUJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgVmVjdG9yPHVuc2lnbmVkLCAxPiYg
b3V0KQordm9pZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKENvZGVCbG9jayogY29kZUJsb2Nr
LCBWZWN0b3I8dW5zaWduZWQsIDMyPiYgb3V0KQogewotICAgIEludGVycHJldGVyKiBpbnRlcnBy
ZXRlciA9IGNvZGVCbG9jay0+dm0oKS0+aW50ZXJwcmV0ZXI7Ci0gICAgSW5zdHJ1Y3Rpb24qIGlu
c3RydWN0aW9uc0JlZ2luID0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpOwotICAg
IGdldEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoY29kZUJsb2NrLCBpbnRlcnByZXRlciwg
aW5zdHJ1Y3Rpb25zQmVnaW4sIGJ5dGVjb2RlT2Zmc2V0LCBvdXQpOworICAgIGNvbXB1dGVQcmVj
aXNlSnVtcFRhcmdldHNJbnRlcm5hbChDb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzTW9kZTo6Rm9s
bG93Q29kZUJsb2NrQ2xhaW0sIGNvZGVCbG9jaywgY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5i
ZWdpbigpLCBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLnNpemUoKSwgb3V0KTsKK30KKwordm9p
ZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKENvZGVCbG9jayogY29kZUJsb2NrLCBJbnN0cnVj
dGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQsIFZlY3Rv
cjx1bnNpZ25lZCwgMzI+JiBvdXQpCit7CisgICAgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0c0lu
dGVybmFsKENvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHNNb2RlOjpGb2xsb3dDb2RlQmxvY2tDbGFp
bSwgY29kZUJsb2NrLCBpbnN0cnVjdGlvbnNCZWdpbiwgaW5zdHJ1Y3Rpb25Db3VudCwgb3V0KTsK
K30KKwordm9pZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKFVubGlua2VkQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIFVubGlua2VkSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25l
ZCBpbnN0cnVjdGlvbkNvdW50LCBWZWN0b3I8dW5zaWduZWQsIDMyPiYgb3V0KQoreworICAgIGNv
bXB1dGVQcmVjaXNlSnVtcFRhcmdldHNJbnRlcm5hbChDb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRz
TW9kZTo6Rm9sbG93Q29kZUJsb2NrQ2xhaW0sIGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb25zQmVnaW4s
IGluc3RydWN0aW9uQ291bnQsIG91dCk7Cit9CisKK3ZvaWQgZmluZEp1bXBUYXJnZXRzRm9yQnl0
ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEluc3RydWN0aW9uKiBpbnN0cnVjdGlv
bnNCZWdpbiwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIFZlY3Rvcjx1bnNpZ25lZCwgMT4mIG91
dCkKK3sKKyAgICBnZXRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9jaywgY29k
ZUJsb2NrLT52bSgpLT5pbnRlcnByZXRlciwgaW5zdHJ1Y3Rpb25zQmVnaW4sIGJ5dGVjb2RlT2Zm
c2V0LCBvdXQpOworfQorCit2b2lkIGZpbmRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KFVu
bGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFVubGlua2VkSW5zdHJ1Y3Rpb24qIGluc3RydWN0
aW9uc0JlZ2luLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgVmVjdG9yPHVuc2lnbmVkLCAxPiYg
b3V0KQoreworICAgIGdldEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoY29kZUJsb2NrLCBj
b2RlQmxvY2stPnZtKCktPmludGVycHJldGVyLCBpbnN0cnVjdGlvbnNCZWdpbiwgYnl0ZWNvZGVP
ZmZzZXQsIG91dCk7Cit9CisKK3ZvaWQgcmVjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKFVubGlu
a2VkQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFVubGlua2VkSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9u
c0JlZ2luLCB1bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50KQoreworICAgIGNvZGVCbG9jay0+anVt
cFRhcmdldHMoKS5jbGVhcigpOworICAgIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHNJbnRlcm5h
bChDb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzTW9kZTo6Rm9yY2VDb21wdXRlLCBjb2RlQmxvY2ss
IGluc3RydWN0aW9uc0JlZ2luLCBpbnN0cnVjdGlvbkNvdW50LCBjb2RlQmxvY2stPmp1bXBUYXJn
ZXRzKCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHMuaAppbmRleCA4NTI0MTNkNzdiNzk4
OTg0YjI3Y2VmMGVkNjJiYzk0YzY4OWUyMTJjLi42OGE5Y2QzOWRlZmEzMzRiZjEzNTAwMzdiYmRk
YjU5Mjg0OTkxYzc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
UHJlY2lzZUp1bXBUYXJnZXRzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1ByZWNpc2VKdW1wVGFyZ2V0cy5oCkBAIC0yNywxMyArMjcsMTkgQEAKICNkZWZpbmUgUHJlY2lz
ZUp1bXBUYXJnZXRzX2gKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIlVubGlu
a2VkQ29kZUJsb2NrLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCiAvLyBSZXR1cm4gYSBzb3J0ZWQg
bGlzdCBvZiBieXRlY29kZSBpbmRleCB0aGF0IGFyZSB0aGUgZGVzdGluYXRpb24gb2YgYSBqdW1w
Lgogdm9pZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKENvZGVCbG9jayosIFZlY3Rvcjx1bnNp
Z25lZCwgMzI+JiBvdXQpOwordm9pZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKENvZGVCbG9j
ayosIEluc3RydWN0aW9uKiwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCwgVmVjdG9yPHVuc2ln
bmVkLCAzMj4mIG91dCk7Cit2b2lkIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMoVW5saW5rZWRD
b2RlQmxvY2sqLCBVbmxpbmtlZEluc3RydWN0aW9uKiwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3Vu
dCwgVmVjdG9yPHVuc2lnbmVkLCAzMj4mIG91dCk7CiAKLXZvaWQgZmluZEp1bXBUYXJnZXRzRm9y
Qnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIFZlY3Rv
cjx1bnNpZ25lZCwgMT4mIG91dCk7Cit2b2lkIHJlY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhV
bmxpbmtlZENvZGVCbG9jayosIFVubGlua2VkSW5zdHJ1Y3Rpb24qLCB1bnNpZ25lZCBpbnN0cnVj
dGlvbkNvdW50KTsKKwordm9pZCBmaW5kSnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChDb2Rl
QmxvY2sqLCBJbnN0cnVjdGlvbiosIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBWZWN0b3I8dW5z
aWduZWQsIDE+JiBvdXQpOwordm9pZCBmaW5kSnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChV
bmxpbmtlZENvZGVCbG9jayosIFVubGlua2VkSW5zdHJ1Y3Rpb24qLCB1bnNpZ25lZCBieXRlY29k
ZU9mZnNldCwgVmVjdG9yPHVuc2lnbmVkLCAxPiYgb3V0KTsKIAogfSAvLyBuYW1lc3BhY2UgSlND
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENv
ZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2Rl
QmxvY2suY3BwCmluZGV4IDI5OWFjNjgwZDlhMWQxZTVhOTBkOWZhZTFhMjJmODQ0ZTI5MmUzZTIu
LjkyZDg4MDhkOGU3YTViZjZhMzc0NTY0ZDk3NGQwOGVkZjFiYjUwODEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcApAQCAt
MzY2LDUgKzM2NiwxNyBAQCBjb25zdCBVbmxpbmtlZEluc3RydWN0aW9uU3RyZWFtJiBVbmxpbmtl
ZENvZGVCbG9jazo6aW5zdHJ1Y3Rpb25zKCkgY29uc3QKICAgICByZXR1cm4gKm1fdW5saW5rZWRJ
bnN0cnVjdGlvbnM7CiB9CiAKK1VubGlua2VkSGFuZGxlckluZm8qIFVubGlua2VkQ29kZUJsb2Nr
OjpoYW5kbGVyRm9yQnl0ZWNvZGVPZmZzZXQodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIFJlcXVp
cmVkSGFuZGxlciByZXF1aXJlZEhhbmRsZXIpCit7CisgICAgcmV0dXJuIGhhbmRsZXJGb3JJbmRl
eChieXRlY29kZU9mZnNldCwgcmVxdWlyZWRIYW5kbGVyKTsKK30KKworVW5saW5rZWRIYW5kbGVy
SW5mbyogVW5saW5rZWRDb2RlQmxvY2s6OmhhbmRsZXJGb3JJbmRleCh1bnNpZ25lZCBpbmRleCwg
UmVxdWlyZWRIYW5kbGVyIHJlcXVpcmVkSGFuZGxlcikKK3sKKyAgICBpZiAoIW1fcmFyZURhdGEp
CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBVbmxpbmtlZEhhbmRsZXJJbmZv
OjpoYW5kbGVyRm9ySW5kZXgobV9yYXJlRGF0YS0+bV9leGNlcHRpb25IYW5kbGVycywgaW5kZXgs
IHJlcXVpcmVkSGFuZGxlcik7Cit9CisKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAppbmRleCA5MWZkY2E0OGMxZTM5ZThiZWZi
MGM1ZmQ1NWZkOWJkOTFjMWYzNzA3Li5lYmZhNjRmZTAzMDM2NGJlNzNiOTE1NWY2MDIwOGY4NTEz
MmFiNGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5r
ZWRDb2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5r
ZWRDb2RlQmxvY2suaApAQCAtNjksNyArNjksMTEgQEAgdHlwZWRlZiB1bnNpZ25lZCBVbmxpbmtl
ZE9iamVjdEFsbG9jYXRpb25Qcm9maWxlOwogdHlwZWRlZiB1bnNpZ25lZCBVbmxpbmtlZExMSW50
Q2FsbExpbmtJbmZvOwogCiBzdHJ1Y3QgVW5saW5rZWRTdHJpbmdKdW1wVGFibGUgewotICAgIHR5
cGVkZWYgSGFzaE1hcDxSZWZQdHI8U3RyaW5nSW1wbD4sIGludDMyX3Q+IFN0cmluZ09mZnNldFRh
YmxlOworICAgIHN0cnVjdCBPZmZzZXRMb2NhdGlvbiB7CisgICAgICAgIGludDMyX3QgYnJhbmNo
T2Zmc2V0OworICAgIH07CisKKyAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFN0cmluZ0ltcGw+
LCBPZmZzZXRMb2NhdGlvbj4gU3RyaW5nT2Zmc2V0VGFibGU7CiAgICAgU3RyaW5nT2Zmc2V0VGFi
bGUgb2Zmc2V0VGFibGU7CiAKICAgICBpbmxpbmUgaW50MzJfdCBvZmZzZXRGb3JWYWx1ZShTdHJp
bmdJbXBsKiB2YWx1ZSwgaW50MzJfdCBkZWZhdWx0T2Zmc2V0KQpAQCAtNzgsNyArODIsNyBAQCBz
dHJ1Y3QgVW5saW5rZWRTdHJpbmdKdW1wVGFibGUgewogICAgICAgICBTdHJpbmdPZmZzZXRUYWJs
ZTo6Y29uc3RfaXRlcmF0b3IgbG9jID0gb2Zmc2V0VGFibGUuZmluZCh2YWx1ZSk7CiAgICAgICAg
IGlmIChsb2MgPT0gZW5kKQogICAgICAgICAgICAgcmV0dXJuIGRlZmF1bHRPZmZzZXQ7Ci0gICAg
ICAgIHJldHVybiBsb2MtPnZhbHVlOworICAgICAgICByZXR1cm4gbG9jLT52YWx1ZS5icmFuY2hP
ZmZzZXQ7CiAgICAgfQogCiB9OwpAQCAtMTA2LDYgKzExMCw4IEBAIHN0cnVjdCBVbmxpbmtlZElu
c3RydWN0aW9uIHsKICAgICB9IHU7CiB9OwogCitjbGFzcyBCeXRlY29kZUdlbmVyYXRvcmlmaWNh
dGlvbjsKKwogY2xhc3MgVW5saW5rZWRDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKIHB1Ymxp
YzoKICAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOwpAQCAtMTE1LDYgKzEyMSw4IEBAIGNsYXNzIFVu
bGlua2VkQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAKICAgICBlbnVtIHsgQ2FsbEZ1bmN0
aW9uLCBBcHBseUZ1bmN0aW9uIH07CiAKKyAgICB0eXBlZGVmIFZlY3RvcjxVbmxpbmtlZEluc3Ry
dWN0aW9uLCAwLCBVbnNhZmVWZWN0b3JPdmVyZmxvdz4gVW5wYWNrZWRJbnN0cnVjdGlvbnM7CisK
ICAgICBib29sIGlzQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2lzQ29uc3RydWN0b3I7
IH0KICAgICBib29sIGlzU3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNTdHJpY3RNb2Rl
OyB9CiAgICAgYm9vbCB1c2VzRXZhbCgpIGNvbnN0IHsgcmV0dXJuIG1fdXNlc0V2YWw7IH0KQEAg
LTIwMyw2ICsyMTEsMTAgQEAgY2xhc3MgVW5saW5rZWRDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxs
IHsKICAgICB2b2lkIGFkZEp1bXBUYXJnZXQodW5zaWduZWQganVtcFRhcmdldCkgeyBtX2p1bXBU
YXJnZXRzLmFwcGVuZChqdW1wVGFyZ2V0KTsgfQogICAgIHVuc2lnbmVkIGp1bXBUYXJnZXQoaW50
IGluZGV4KSBjb25zdCB7IHJldHVybiBtX2p1bXBUYXJnZXRzW2luZGV4XTsgfQogICAgIHVuc2ln
bmVkIGxhc3RKdW1wVGFyZ2V0KCkgY29uc3QgeyByZXR1cm4gbV9qdW1wVGFyZ2V0cy5sYXN0KCk7
IH0KKyAgICBWZWN0b3I8dW5zaWduZWQ+JiBqdW1wVGFyZ2V0cygpIHsgcmV0dXJuIG1fanVtcFRh
cmdldHM7IH0KKworICAgIFVubGlua2VkSGFuZGxlckluZm8qIGhhbmRsZXJGb3JCeXRlY29kZU9m
ZnNldCh1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgUmVxdWlyZWRIYW5kbGVyID0gUmVxdWlyZWRI
YW5kbGVyOjpBbnlIYW5kbGVyKTsKKyAgICBVbmxpbmtlZEhhbmRsZXJJbmZvKiBoYW5kbGVyRm9y
SW5kZXgodW5zaWduZWQsIFJlcXVpcmVkSGFuZGxlciA9IFJlcXVpcmVkSGFuZGxlcjo6QW55SGFu
ZGxlcik7CiAKICAgICBib29sIGlzQnVpbHRpbkZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9p
c0J1aWx0aW5GdW5jdGlvbjsgfQogCkBAIC0yOTcsNiArMzA5LDcgQEAgY2xhc3MgVW5saW5rZWRD
b2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKIAogICAgIHNpemVfdCBudW1iZXJPZlByb3BlcnR5
QWNjZXNzSW5zdHJ1Y3Rpb25zKCkgY29uc3QgeyByZXR1cm4gbV9wcm9wZXJ0eUFjY2Vzc0luc3Ry
dWN0aW9ucy5zaXplKCk7IH0KICAgICBjb25zdCBWZWN0b3I8dW5zaWduZWQ+JiBwcm9wZXJ0eUFj
Y2Vzc0luc3RydWN0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fcHJvcGVydHlBY2Nlc3NJbnN0cnVj
dGlvbnM7IH0KKyAgICBWZWN0b3I8dW5zaWduZWQ+JiBwcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9u
cygpIHsgcmV0dXJuIG1fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnM7IH0KIAogICAgIHR5cGVk
ZWYgVmVjdG9yPEpTVmFsdWU+IENvbnN0YW50QnVmZmVyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmlydHVhbFJlZ2lzdGVyLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvVmlydHVhbFJlZ2lzdGVyLmgKaW5kZXggZDNkZjQwOTU3YjUxNzU2
OGUzYWVmYmUzYTFhNjA5ZmQ4NzhiYWFjMy4uZDUyMzkzZWJiYzNjOGU0OTI2ZGY5ZWYxNjNlZTNh
ODE1MWEyMTYxOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Zp
cnR1YWxSZWdpc3Rlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WaXJ0
dWFsUmVnaXN0ZXIuaApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiQ2FsbEZyYW1lLmgi
CiAKKyNpbmNsdWRlICJCeXRlY29kZUNvbnZlbnRpb25zLmgiCiAjaW5jbHVkZSA8d3RmL1ByaW50
U3RyZWFtLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtMTAzLDcgKzEwNCw3IEBAIGNsYXNzIFZp
cnR1YWxSZWdpc3RlciB7CiAKIHByaXZhdGU6CiAgICAgc3RhdGljIGNvbnN0IGludCBzX2ludmFs
aWRWaXJ0dWFsUmVnaXN0ZXIgPSAweDNmZmZmZmZmOwotICAgIHN0YXRpYyBjb25zdCBpbnQgc19m
aXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCA9IDB4NDAwMDAwMDA7CisgICAgc3RhdGljIGNvbnN0
IGludCBzX2ZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4ID0gRmlyc3RDb25zdGFudFJlZ2lzdGVy
SW5kZXg7CiAKICAgICBzdGF0aWMgaW50IGxvY2FsVG9PcGVyYW5kKGludCBsb2NhbCkgeyByZXR1
cm4gLTEgLSBsb2NhbDsgfQogICAgIHN0YXRpYyBpbnQgb3BlcmFuZFRvTG9jYWwoaW50IG9wZXJh
bmQpIHsgcmV0dXJuIC0xIC0gb3BlcmFuZDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCA1MDBiNGJi
YmQyMDI4ODI2MmE5ZjlmNjBiMzNiNTM5YWFlOTRmMDJkLi5jMTE5YWMxMzg2M2EzOTk1MzhhMzI2
YjI4ZmUwY2FjNGQ1YjhlNGRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAtMzIsNiArMzIsNyBAQAog
I2luY2x1ZGUgIkJ5dGVjb2RlR2VuZXJhdG9yLmgiCiAKICNpbmNsdWRlICJCdWlsdGluRXhlY3V0
YWJsZXMuaCIKKyNpbmNsdWRlICJCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5oIgogI2luY2x1
ZGUgIkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgi
CiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgpAQCAtMTU0LDYgKzE1NSwxMiBAQCBQYXJzZXJFcnJv
ciBCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUoKQogICAgICAgICBtX2NvZGVCbG9jay0+YWRk
RXhjZXB0aW9uSGFuZGxlcihpbmZvKTsKICAgICB9CiAgICAgCisKKyAgICBpZiAobV9jb2RlQmxv
Y2stPnBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yQm9keU1vZGUpIHsK
KyAgICAgICAgQnl0ZWNvZGVHcmFwaDxVbmxpbmtlZENvZGVCbG9jaz4gZ3JhcGgobV9jb2RlQmxv
Y2suZ2V0KCksIG1faW5zdHJ1Y3Rpb25zKTsKKyAgICAgICAgcGVyZm9ybUdlbmVyYXRvcmlmaWNh
dGlvbihncmFwaCwgbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlLmdldCgpLCBtX2dlbmVyYXRv
ckZyYW1lU3ltYm9sVGFibGVJbmRleCk7CisgICAgfQorCiAgICAgbV9jb2RlQmxvY2stPnNldElu
c3RydWN0aW9ucyhzdGQ6Om1ha2VfdW5pcXVlPFVubGlua2VkSW5zdHJ1Y3Rpb25TdHJlYW0+KG1f
aW5zdHJ1Y3Rpb25zKSk7CiAKICAgICBtX2NvZGVCbG9jay0+c2hyaW5rVG9GaXQoKTsKQEAgLTI3
Myw3ICsyODAsNyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZt
LCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAgICAgICAvLyAgICBmdW5j
dGlvbiAqZ2VuKGEsIGIgPSBoZWxsbygpKQogICAgICAgICAvLyAgICB7CiAgICAgICAgIC8vICAg
ICAgICByZXR1cm4gewotICAgICAgICAvLyAgICAgICAgICAgIEBnZW5lcmF0b3JOZXh0OiBmdW5j
dGlvbiAoQGdlbmVyYXRvciwgQGdlbmVyYXRvclN0YXRlLCBAZ2VuZXJhdG9yVmFsdWUsIEBnZW5l
cmF0b3JSZXN1bWVNb2RlKQorICAgICAgICAvLyAgICAgICAgICAgIEBnZW5lcmF0b3JOZXh0OiBm
dW5jdGlvbiAoQGdlbmVyYXRvciwgQGdlbmVyYXRvclN0YXRlLCBAZ2VuZXJhdG9yVmFsdWUsIEBn
ZW5lcmF0b3JSZXN1bWVNb2RlLCBAZ2VuZXJhdG9yRnJhbWUpCiAgICAgICAgIC8vICAgICAgICAg
ICAgewogICAgICAgICAvLyAgICAgICAgICAgICAgICBhcmd1bWVudHM7ICAvLyBUaGlzIGBhcmd1
bWVudHNgIHNob3VsZCByZWZlcmVuY2UgdG8gdGhlIGdlbidzIGFyZ3VtZW50cy4KICAgICAgICAg
Ly8gICAgICAgICAgICAgICAgLi4uCkBAIC01NTIsNiArNTU5LDkgQEAgQnl0ZWNvZGVHZW5lcmF0
b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25Ob2RlKiBmdW5jdGlvbk5vZGUs
IFVubGlua2UKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yQm9keU1vZGU6IHsK
ICAgICAgICAgLy8gfHRoaXN8IGlzIGFscmVhZHkgZmlsbGVkIGNvcnJlY3RseSBiZWZvcmUgaGVy
ZS4KICAgICAgICAgZW1pdExvYWQobV9uZXdUYXJnZXRSZWdpc3RlciwganNVbmRlZmluZWQoKSk7
CisKKyAgICAgICAgZW1pdE5ld0dlbmVyYXRvckZyYW1lKGdlbmVyYXRvckZyYW1lUmVnaXN0ZXIo
KSk7CisgICAgICAgIGVtaXRQdXRCeUlkKGdlbmVyYXRvclJlZ2lzdGVyKCksIHByb3BlcnR5TmFt
ZXMoKS5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JGcmFtZVByaXZhdGVOYW1lKCksIGdlbmVyYXRv
ckZyYW1lUmVnaXN0ZXIoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApAQCAtMzAyMSw2ICsz
MDMxLDIwIEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRTZXRGdW5jdGlvbk5hbWVJZk5l
ZWRlZChFeHByZXNzaW9uTm9kZSogdmFsdWVOb2RlLCBSCiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKG5hbWUtPmluZGV4KCkpOwogfQogCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdE5ld0dlbmVyYXRvckZyYW1lKFJlZ2lzdGVySUQqIGRzdCkKK3sKKyAgICBTeW1ib2xUYWJs
ZSogZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZSA9IFN5bWJvbFRhYmxlOjpjcmVhdGUoKm1fdm0p
OworICAgIFJlZ2lzdGVySUQqIGNvbnN0YW50U3ltYm9sVGFibGVSZWdpc3RlciA9IGFkZENvbnN0
YW50VmFsdWUoZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZSk7CisgICAgZW1pdE9wY29kZShvcF9j
cmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudCk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGRz
dC0+aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHNjb3BlUmVnaXN0ZXIoKS0+
aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGNvbnN0YW50U3ltYm9sVGFibGVS
ZWdpc3Rlci0+aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGFkZENvbnN0YW50
VmFsdWUoanNVbmRlZmluZWQoKSktPmluZGV4KCkpOworICAgIG1fZ2VuZXJhdG9yRnJhbWVTeW1i
b2xUYWJsZS5zZXQoKm1fdm0sIGdlbmVyYXRvckZyYW1lU3ltYm9sVGFibGUpOworICAgIG1fZ2Vu
ZXJhdG9yRnJhbWVTeW1ib2xUYWJsZUluZGV4ID0gY29uc3RhbnRTeW1ib2xUYWJsZVJlZ2lzdGVy
LT5pbmRleCgpOworICAgIHJldHVybiBkc3Q7Cit9CisKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0Q2FsbChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGZ1bmMsIEV4cGVj
dGVkRnVuY3Rpb24gZXhwZWN0ZWRGdW5jdGlvbiwgQ2FsbEFyZ3VtZW50cyYgY2FsbEFyZ3VtZW50
cywgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2
b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKQogewogICAgIHJldHVybiBl
bWl0Q2FsbChvcF9jYWxsLCBkc3QsIGZ1bmMsIGV4cGVjdGVkRnVuY3Rpb24sIGNhbGxBcmd1bWVu
dHMsIGRpdm90LCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCk7CkBAIC0zNjU4LDggKzM2ODIsNyBAQCB2
b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q29tcGxleFBvcFNjb3BlcyhSZWdpc3RlcklEKiBz
Y29wZSwgQ29udHJvbEZsb3dDb250ZQogICAgICAgICAgICAgaWYgKGZsaXBUcmllcykgewogICAg
ICAgICAgICAgICAgIHdoaWxlIChtX3RyeUNvbnRleHRTdGFjay5zaXplKCkgIT0gZmluYWxseUNv
bnRleHQudHJ5Q29udGV4dFN0YWNrU2l6ZSkgewogICAgICAgICAgICAgICAgICAgICBBU1NFUlQo
bV90cnlDb250ZXh0U3RhY2suc2l6ZSgpID4gZmluYWxseUNvbnRleHQudHJ5Q29udGV4dFN0YWNr
U2l6ZSk7Ci0gICAgICAgICAgICAgICAgICAgIFRyeUNvbnRleHQgY29udGV4dCA9IG1fdHJ5Q29u
dGV4dFN0YWNrLmxhc3QoKTsKLSAgICAgICAgICAgICAgICAgICAgbV90cnlDb250ZXh0U3RhY2su
cmVtb3ZlTGFzdCgpOworICAgICAgICAgICAgICAgICAgICBUcnlDb250ZXh0IGNvbnRleHQgPSBt
X3RyeUNvbnRleHRTdGFjay50YWtlTGFzdCgpOwogICAgICAgICAgICAgICAgICAgICBUcnlSYW5n
ZSByYW5nZTsKICAgICAgICAgICAgICAgICAgICAgcmFuZ2Uuc3RhcnQgPSBjb250ZXh0LnN0YXJ0
OwogICAgICAgICAgICAgICAgICAgICByYW5nZS5lbmQgPSBiZWZvcmVGaW5hbGx5OwpAQCAtMzk0
Myw3ICszOTY2LDcgQEAgc3RhdGljIHZvaWQgcHJlcGFyZUp1bXBUYWJsZUZvclN0cmluZ1N3aXRj
aChVbmxpbmtlZFN0cmluZ0p1bXBUYWJsZSYganVtcFRhYmxlLAogICAgICAgICAKICAgICAgICAg
QVNTRVJUKG5vZGVzW2ldLT5pc1N0cmluZygpKTsKICAgICAgICAgU3RyaW5nSW1wbCogY2xhdXNl
ID0gc3RhdGljX2Nhc3Q8U3RyaW5nTm9kZSo+KG5vZGVzW2ldKS0+dmFsdWUoKS5pbXBsKCk7Ci0g
ICAgICAgIGp1bXBUYWJsZS5vZmZzZXRUYWJsZS5hZGQoY2xhdXNlLCBsYWJlbHNbaV0tPmJpbmQo
c3dpdGNoQWRkcmVzcywgc3dpdGNoQWRkcmVzcyArIDMpKTsKKyAgICAgICAganVtcFRhYmxlLm9m
ZnNldFRhYmxlLmFkZChjbGF1c2UsIFVubGlua2VkU3RyaW5nSnVtcFRhYmxlOjpPZmZzZXRMb2Nh
dGlvbiB7IGxhYmVsc1tpXS0+YmluZChzd2l0Y2hBZGRyZXNzLCBzd2l0Y2hBZGRyZXNzICsgMykg
fSk7CiAgICAgfQogfQogCkBAIC00NDUxLDE2ICs0NDc0LDM2IEBAIHZvaWQgQnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXRZaWVsZFBvaW50KFJlZ2lzdGVySUQqIGFyZ3VtZW50KQogICAgIGVtaXRHZW5l
cmF0b3JTdGF0ZUNoYW5nZSh5aWVsZFBvaW50SW5kZXgpOwogICAgIC8vIEZpcnN0IHlpZWxkIHBv
aW50IGlzIHVzZWQgZm9yIGluaXRpYWwgc2VxdWVuY2UuCiAgICAgdW5zaWduZWQgbGl2ZUNhbGxl
ZUxvY2Fsc0luZGV4ID0geWllbGRQb2ludEluZGV4IC0gMTsKKworICAgIC8vIFNwbGl0IHRoZSB0
cnkgcmFuZ2UgaGVyZS4KKyAgICBSZWZQdHI8TGFiZWw+IHNhdmVQb2ludCA9IGVtaXRMYWJlbChu
ZXdMYWJlbCgpLmdldCgpKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX3RyeUNvbnRleHRTdGFj
ay5zaXplKCk7IGktLTspIHsKKyAgICAgICAgVHJ5Q29udGV4dCYgY29udGV4dCA9IG1fdHJ5Q29u
dGV4dFN0YWNrW2ldOworICAgICAgICBUcnlSYW5nZSByYW5nZTsKKyAgICAgICAgcmFuZ2Uuc3Rh
cnQgPSBjb250ZXh0LnN0YXJ0OworICAgICAgICByYW5nZS5lbmQgPSBzYXZlUG9pbnQ7CisgICAg
ICAgIHJhbmdlLnRyeURhdGEgPSBjb250ZXh0LnRyeURhdGE7CisgICAgICAgIG1fdHJ5UmFuZ2Vz
LmFwcGVuZChyYW5nZSk7CisKKyAgICAgICAgLy8gVHJ5IHJhbmdlIHdpbGwgYmUgcmVzdGFyZWQg
YXQgdGhlIG1lcmdlIHBvaW50LgorICAgICAgICBjb250ZXh0LnN0YXJ0ID0gbWVyZ2VQb2ludDsK
KyAgICB9CisgICAgVmVjdG9yPFRyeUNvbnRleHQ+IHNhdmVkVHJ5Q29udGV4dFN0YWNrOworICAg
IG1fdHJ5Q29udGV4dFN0YWNrLnN3YXAoc2F2ZWRUcnlDb250ZXh0U3RhY2spOworCiAgICAgZW1p
dFNhdmUobWVyZ2VQb2ludC5nZXQoKSwgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4KTsKICAgICBlbWl0
UmV0dXJuKGFyZ3VtZW50KTsKICAgICBlbWl0UmVzdW1lKG1lcmdlUG9pbnQuZ2V0KCksIGxpdmVD
YWxsZWVMb2NhbHNJbmRleCk7CisKKyAgICAvLyBSZXN0b3JlIHRoZSB0cnkgY29udGV4dHMsIHdo
aWNoIHN0YXJ0IG9mZnNldCBpcyB1cGRhdGVkIHRvIHRoZSBtZXJnZSBwb2ludC4KKyAgICBtX3Ry
eUNvbnRleHRTdGFjay5zd2FwKHNhdmVkVHJ5Q29udGV4dFN0YWNrKTsKIH0KIAogdm9pZCBCeXRl
Y29kZUdlbmVyYXRvcjo6ZW1pdFNhdmUoTGFiZWwqIG1lcmdlUG9pbnQsIHVuc2lnbmVkIGxpdmVD
YWxsZWVMb2NhbHNJbmRleCkKIHsKICAgICBzaXplX3QgYmVnaW4gPSBpbnN0cnVjdGlvbnMoKS5z
aXplKCk7CiAgICAgZW1pdE9wY29kZShvcF9zYXZlKTsKLSAgICBpbnN0cnVjdGlvbnMoKS5hcHBl
bmQobV9nZW5lcmF0b3JSZWdpc3Rlci0+aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKGdlbmVyYXRvckZyYW1lUmVnaXN0ZXIoKS0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25z
KCkuYXBwZW5kKGxpdmVDYWxsZWVMb2NhbHNJbmRleCk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKG1lcmdlUG9pbnQtPmJpbmQoYmVnaW4sIGluc3RydWN0aW9ucygpLnNpemUoKSkpOwogfQpA
QCAtNDQ2OSw3ICs0NTEyLDcgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlc3VtZShM
YWJlbCogbWVyZ2VQb2ludCwgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0kKIHsKICAgICBlbWl0
R2VuZXJhdG9yU3RhdGVMYWJlbCgpOwogICAgIGVtaXRPcGNvZGUob3BfcmVzdW1lKTsKLSAgICBp
bnN0cnVjdGlvbnMoKS5hcHBlbmQobV9nZW5lcmF0b3JSZWdpc3Rlci0+aW5kZXgoKSk7CisgICAg
aW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGdlbmVyYXRvckZyYW1lUmVnaXN0ZXIoKS0+aW5kZXgoKSk7
CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGxpdmVDYWxsZWVMb2NhbHNJbmRleCk7CiAgICAg
ZW1pdExhYmVsKG1lcmdlUG9pbnQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmluZGV4IDUyYjMxYzFiNzZhYzAz
N2U1NTJlYWZkNjlkOTQxNjJiODM5NGY1NWQuLmNiZGNjYzk1OGE4MDkzMWUxN2Y3NWE0MGYxN2Ey
YTgxYzhmZjAzMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTUzMyw2ICs1MzMsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdE5ld0Fycm93RnVuY3Rpb25FeHByZXNzaW9u
KFJlZ2lzdGVySUQqLCBBcnJvd0Z1bmNFeHByTm9kZSopOwogICAgICAgICBSZWdpc3RlcklEKiBl
bWl0TmV3TWV0aG9kRGVmaW5pdGlvbihSZWdpc3RlcklEKiBkc3QsIE1ldGhvZERlZmluaXRpb25O
b2RlKik7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdSZWdFeHAoUmVnaXN0ZXJJRCogZHN0
LCBSZWdFeHAqKTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdE5ld0dlbmVyYXRvckZyYW1lKFJl
Z2lzdGVySUQqIGRzdCk7CiAKICAgICAgICAgdm9pZCBlbWl0U2V0RnVuY3Rpb25OYW1lSWZOZWVk
ZWQoRXhwcmVzc2lvbk5vZGUqIHZhbHVlTm9kZSwgUmVnaXN0ZXJJRCogdmFsdWUsIFJlZ2lzdGVy
SUQqIG5hbWUpOwogCkBAIC03MDUsNiArNzA2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IFJlZ2lzdGVySUQqIGdlbmVyYXRvclN0YXRlUmVnaXN0ZXIoKSB7IHJldHVybiAmbV9wYXJhbWV0
ZXJzWzJdOyB9CiAgICAgICAgIFJlZ2lzdGVySUQqIGdlbmVyYXRvclZhbHVlUmVnaXN0ZXIoKSB7
IHJldHVybiAmbV9wYXJhbWV0ZXJzWzNdOyB9CiAgICAgICAgIFJlZ2lzdGVySUQqIGdlbmVyYXRv
clJlc3VtZU1vZGVSZWdpc3RlcigpIHsgcmV0dXJuICZtX3BhcmFtZXRlcnNbNF07IH0KKyAgICAg
ICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9yRnJhbWVSZWdpc3RlcigpIHsgcmV0dXJuICZtX3BhcmFt
ZXRlcnNbNV07IH0KIAogICAgICAgICBDb2RlVHlwZSBjb2RlVHlwZSgpIGNvbnN0IHsgcmV0dXJu
IG1fY29kZVR5cGU7IH0KIApAQCAtOTMyLDYgKzkzNCwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgVmVjdG9yPFJlZlB0cjxGb3JJbkNvbnRleHQ+PiBtX2ZvckluQ29udGV4dFN0YWNrOwog
ICAgICAgICBWZWN0b3I8VHJ5Q29udGV4dD4gbV90cnlDb250ZXh0U3RhY2s7CiAgICAgICAgIFZl
Y3RvcjxSZWZQdHI8TGFiZWw+PiBtX2dlbmVyYXRvclJlc3VtZUxhYmVsczsKKworICAgICAgICBT
dHJvbmc8U3ltYm9sVGFibGU+IG1fZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZTsKKyAgICAgICAg
aW50IG1fZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZUluZGV4IHsgMCB9OworCiAgICAgICAgIGVu
dW0gRnVuY3Rpb25WYXJpYWJsZVR5cGUgOiB1aW50OF90IHsgTm9ybWFsRnVuY3Rpb25WYXJpYWJs
ZSwgR2xvYmFsRnVuY3Rpb25WYXJpYWJsZSB9OwogICAgICAgICBWZWN0b3I8c3RkOjpwYWlyPEZ1
bmN0aW9uTWV0YWRhdGFOb2RlKiwgRnVuY3Rpb25WYXJpYWJsZVR5cGU+PiBtX2Z1bmN0aW9uc1Rv
SW5pdGlhbGl6ZTsKICAgICAgICAgYm9vbCBtX25lZWRUb0luaXRpYWxpemVBcmd1bWVudHMgeyBm
YWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRp
b25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKaW5k
ZXggNjlhMTZlYjVkYTQzNTViYzc5MjVjNWRmZGNiMDYyMDIzZTk5NjUwMi4uYzQ1NzIzYjE5MDEz
MjAyNWRmY2UzMjZmNjAxNWVjYTZjZTU4ZDcxYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09wZXJhdGlvbnMuY3BwCkBAIC00Miw4ICs0Miw4IEBACiAjaW5jbHVkZSAiRGlyZWN0
QXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiRlRMRm9yT1NSRW50cnlKSVRDb2RlLmgiCiAjaW5jbHVk
ZSAiRlRMT1NSRW50cnkuaCIKLSNpbmNsdWRlICJIb3N0Q2FsbFJldHVyblZhbHVlLmgiCiAjaW5j
bHVkZSAiR2V0dGVyU2V0dGVyLmgiCisjaW5jbHVkZSAiSG9zdENhbGxSZXR1cm5WYWx1ZS5oIgog
I2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSklU
RXhjZXB0aW9ucy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRl
LWJ5dGVjb2RlLWZpbGVzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRlLWJ5dGVjb2Rl
LWZpbGVzCmluZGV4IDU2NjZhM2Y5MjRjMTE5YjIxNmQzZmYwZmZlOWM2NzJiN2M3MWJiNzkuLmZh
Y2ZkZjEzMzE0ODcwN2EzMzM1MzU3NjJiZTc4MzA0YzRiNTBiMWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0ZS1ieXRlY29kZS1maWxlcworKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZ2VuZXJhdGUtYnl0ZWNvZGUtZmlsZXMKQEAgLTE4Nyw2ICsxODcsNyBAQCBp
ZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgICAgICAgICAgICAgIGRlZmF1bHRMZW5ndGgg
PSBzZWN0aW9uWyJkZWZhdWx0TGVuZ3RoIl0KIAogICAgICAgICAgICAgYnl0ZWNvZGVOdW0gPSAw
CisgICAgICAgICAgICBtYXhMZW5ndGggPSAwCiAgICAgICAgICAgICBmb3IgYnl0ZWNvZGUgaW4g
c2VjdGlvblsiYnl0ZWNvZGVzIl06CiAgICAgICAgICAgICAgICAgaWYgbm90IGZpcnN0TWFjcm86
CiAgICAgICAgICAgICAgICAgICAgIGJ5dGVjb2RlSEZpbGUud3JpdGUoIiBcXFxuIikKQEAgLTE5
NCw2ICsxOTUsNyBAQCBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgICAgICAgICAgICAg
IGxlbmd0aCA9IGRlZmF1bHRMZW5ndGgKICAgICAgICAgICAgICAgICBpZiAibGVuZ3RoIiBpbiBi
eXRlY29kZToKICAgICAgICAgICAgICAgICAgICAgbGVuZ3RoID0gYnl0ZWNvZGVbImxlbmd0aCJd
CisgICAgICAgICAgICAgICAgICAgIG1heExlbmd0aCA9IG1heChbbGVuZ3RoLCBtYXhMZW5ndGhd
KQogCiAgICAgICAgICAgICAgICAgYnl0ZWNvZGVIRmlsZS53cml0ZSgiICAgIG1hY3JvKHswfSwg
ezF9KSIuZm9ybWF0KGJ5dGVjb2RlWyJuYW1lIl0sIGxlbmd0aCkpCiAgICAgICAgICAgICAgICAg
Zmlyc3RNYWNybyA9IEZhbHNlCkBAIC0yMDEsNiArMjAzLDcgQEAgaWYgX19uYW1lX18gPT0gIl9f
bWFpbl9fIjoKIAogICAgICAgICAgICAgYnl0ZWNvZGVIRmlsZS53cml0ZSgiXG5cbiIpCiAgICAg
ICAgICAgICBieXRlY29kZUhGaWxlLndyaXRlKCIjZGVmaW5lIE5VTUJFUl9PRl97MH1fSURTIHsx
fVxuXG4iLmZvcm1hdChzZWN0aW9uWyJtYWNyb05hbWVDb21wb25lbnQiXSwgYnl0ZWNvZGVOdW0p
KQorICAgICAgICAgICAgYnl0ZWNvZGVIRmlsZS53cml0ZSgiI2RlZmluZSBNQVhfT1BDT0RFX0xF
TkdUSF9PRl97MH0gezF9XG5cbiIuZm9ybWF0KHNlY3Rpb25bIm1hY3JvTmFtZUNvbXBvbmVudCJd
LCBtYXhMZW5ndGgpKQogCiAgICAgICAgIGlmIGluaXRBU01GaWxlTmFtZSBhbmQgc2VjdGlvblsn
ZW1pdEluQVNNRmlsZSddOgogICAgICAgICAgICAgcHJlZml4ID0gIiIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCmluZGV4IGMxZDFkZTMz
MjIwMDBjOTNmNmNhYjQ3NjM0NzA5MzZlYzhmMjVjZjMuLjk2N2MxMGNiOGMwODdkNTllMDllNjVm
ZGZlMTY5ODAyMTc3ODVjY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRl
cnByZXRlci9JbnRlcnByZXRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL0ludGVycHJldGVyLmNwcApAQCAtNjA4LDcgKzYwOCw3IEBAIEpTU3RyaW5nKiBJbnRl
cnByZXRlcjo6c3RhY2tUcmFjZUFzU3RyaW5nKFZNJiB2bSwgY29uc3QgVmVjdG9yPFN0YWNrRnJh
bWU+JiBzdGFjCiAgICAgcmV0dXJuIGpzU3RyaW5nKCZ2bSwgYnVpbGRlci50b1N0cmluZygpKTsK
IH0KIAotQUxXQVlTX0lOTElORSBzdGF0aWMgSGFuZGxlckluZm8qIGZpbmRFeGNlcHRpb25IYW5k
bGVyKFN0YWNrVmlzaXRvciYgdmlzaXRvciwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVCbG9j
azo6UmVxdWlyZWRIYW5kbGVyIHJlcXVpcmVkSGFuZGxlcikKK0FMV0FZU19JTkxJTkUgc3RhdGlj
IEhhbmRsZXJJbmZvKiBmaW5kRXhjZXB0aW9uSGFuZGxlcihTdGFja1Zpc2l0b3ImIHZpc2l0b3Is
IENvZGVCbG9jayogY29kZUJsb2NrLCBSZXF1aXJlZEhhbmRsZXIgcmVxdWlyZWRIYW5kbGVyKQog
ewogICAgIEFTU0VSVChjb2RlQmxvY2spOwogI2lmIEVOQUJMRShERkdfSklUKQpAQCAtNjQyLDcg
KzY0Miw3IEBAIGNsYXNzIEdldENhdGNoSGFuZGxlckZ1bmN0b3IgewogICAgICAgICBpZiAoIWNv
ZGVCbG9jaykKICAgICAgICAgICAgIHJldHVybiBTdGFja1Zpc2l0b3I6OkNvbnRpbnVlOwogCi0g
ICAgICAgIG1faGFuZGxlciA9IGZpbmRFeGNlcHRpb25IYW5kbGVyKHZpc2l0b3IsIGNvZGVCbG9j
aywgQ29kZUJsb2NrOjpSZXF1aXJlZEhhbmRsZXI6OkNhdGNoSGFuZGxlcik7CisgICAgICAgIG1f
aGFuZGxlciA9IGZpbmRFeGNlcHRpb25IYW5kbGVyKHZpc2l0b3IsIGNvZGVCbG9jaywgUmVxdWly
ZWRIYW5kbGVyOjpDYXRjaEhhbmRsZXIpOwogICAgICAgICBpZiAobV9oYW5kbGVyKQogICAgICAg
ICAgICAgcmV0dXJuIFN0YWNrVmlzaXRvcjo6RG9uZTsKIApAQCAtNjg0LDcgKzY4NCw3IEBAIGNs
YXNzIFVud2luZEZ1bmN0b3IgewogICAgICAgICBtX2hhbmRsZXIgPSBudWxscHRyOwogICAgICAg
ICBpZiAoIW1faXNUZXJtaW5hdGlvbikgewogICAgICAgICAgICAgaWYgKG1fY29kZUJsb2NrICYm
ICFpc1dlYkFzc2VtYmx5RXhlY3V0YWJsZShtX2NvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCkp
KQotICAgICAgICAgICAgICAgIG1faGFuZGxlciA9IGZpbmRFeGNlcHRpb25IYW5kbGVyKHZpc2l0
b3IsIG1fY29kZUJsb2NrLCBDb2RlQmxvY2s6OlJlcXVpcmVkSGFuZGxlcjo6QW55SGFuZGxlcik7
CisgICAgICAgICAgICAgICAgbV9oYW5kbGVyID0gZmluZEV4Y2VwdGlvbkhhbmRsZXIodmlzaXRv
ciwgbV9jb2RlQmxvY2ssIFJlcXVpcmVkSGFuZGxlcjo6QW55SGFuZGxlcik7CiAgICAgICAgIH0K
IAogICAgICAgICBpZiAobV9oYW5kbGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50
ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAppbmRleCBkMjA5NGRlZTdkMjg1YWM0OTViMTU0MTcyYTIz
Yjk0ZmZlODU3ZjFlLi5lNGNlNmZhZTkxODk1M2Y3M2Y4N2VkZTkxYTU2OWVmYWJhYzFhMDcxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaApA
QCAtMzEsMTIgKzMxLDE0IEBACiAjZGVmaW5lIEludGVycHJldGVyX2gKIAogI2luY2x1ZGUgIkFy
Z0xpc3QuaCIKKyNpbmNsdWRlICJJbnN0cnVjdGlvbi5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWUu
aCIKICNpbmNsdWRlICJKU0NlbGwuaCIKICNpbmNsdWRlICJKU09iamVjdC5oIgogI2luY2x1ZGUg
Ik9wY29kZS5oIgogI2luY2x1ZGUgIlNvdXJjZVByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiU3RhY2tB
bGlnbm1lbnQuaCIKKyNpbmNsdWRlICJVbmxpbmtlZENvZGVCbG9jay5oIgogCiAjaW5jbHVkZSA8
d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CkBAIC0y
MDgsNyArMjEwLDE3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIG9wY29k
ZTsKICNlbmRpZgogICAgICAgICB9Ci0gICAgICAgIAorCisgICAgICAgIE9wY29kZUlEIGdldE9w
Y29kZUlEKGNvbnN0IEluc3RydWN0aW9uJiBpbnN0cnVjdGlvbikKKyAgICAgICAgeworICAgICAg
ICAgICAgcmV0dXJuIGdldE9wY29kZUlEKGluc3RydWN0aW9uLnUub3Bjb2RlKTsKKyAgICAgICAg
fQorCisgICAgICAgIE9wY29kZUlEIGdldE9wY29kZUlEKGNvbnN0IFVubGlua2VkSW5zdHJ1Y3Rp
b24mIGluc3RydWN0aW9uKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gaW5zdHJ1Y3Rp
b24udS5vcGNvZGU7CisgICAgICAgIH0KKwogICAgICAgICBib29sIGlzT3Bjb2RlKE9wY29kZSk7
CiAKICAgICAgICAgSlNWYWx1ZSBleGVjdXRlKFByb2dyYW1FeGVjdXRhYmxlKiwgQ2FsbEZyYW1l
KiwgSlNPYmplY3QqIHRoaXNPYmopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCmluZGV4IGJl
MzQ4NWNhOTk1NzE3MTEyNzIzYjE4NTUwNDM4YWNiMjcwMDQwZTEuLjcxMzliMzNhYTUyNDFhMTkz
NWNiMjE0NTUyYWUwZDkwOWIyMmVjMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKQEAg
LTIzNSw4ICsyMzUsNiBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAg
ICAgIERFRklORV9PUChvcF9nZXRfcmVzdF9sZW5ndGgpCiAgICAgICAgIERFRklORV9PUChvcF9j
aGVja190ZHopCiAgICAgICAgIERFRklORV9PUChvcF9hc3NlcnQpCi0gICAgICAgIERFRklORV9P
UChvcF9zYXZlKQotICAgICAgICBERUZJTkVfT1Aob3BfcmVzdW1lKQogICAgICAgICBERUZJTkVf
T1Aob3BfZGVidWcpCiAgICAgICAgIERFRklORV9PUChvcF9kZWxfYnlfaWQpCiAgICAgICAgIERF
RklORV9PUChvcF9kZWxfYnlfdmFsKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKaW5kZXggNzMxMWRm
YTE2YjlhNGQ4ZjljMTc1Y2VkZWQ3Mzc1OWUyYjJjYjEzYy4uMTMwMjdjZWRmNGQwNmMzN2FmM2Mz
MmI5NDNmMWI0YWI1Y2NiNzBlYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCkBAIC01MDEsOCAr
NTAxLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9nZXRfcmVzdF9s
ZW5ndGgoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2NoZWNrX3RkeihJbnN0
cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfYXNzZXJ0KEluc3RydWN0aW9uKik7Ci0g
ICAgICAgIHZvaWQgZW1pdF9vcF9zYXZlKEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1p
dF9vcF9yZXN1bWUoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2RlYnVnKElu
c3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9kZWxfYnlfaWQoSW5zdHJ1Y3Rpb24q
KTsKICAgICAgICAgdm9pZCBlbWl0X29wX2RlbF9ieV92YWwoSW5zdHJ1Y3Rpb24qKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCmluZGV4IGQ1NTc3OGQyNTg2ZmExN2Nm
NDU0ZjMwMjQ1ZjQ3MzI3ZDA2MTU5MmEuLjI4MTNlY2IxYzA3YmFjNWFmY2RlM2M3ODk3NWEwN2Zm
Yzc0MTM0NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rl
cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcApAQCAt
MTQ4NiwxOCArMTQ4Niw2IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9yZXN0X2xlbmd0aChJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogI2VuZGlmCiB9CiAKLXZvaWQgSklUOjplbWl0
X29wX3NhdmUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKLXsKLSAgICBKSVRTbG93
UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRo
X3NhdmUpOwotICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7Ci19Ci0KLXZvaWQgSklUOjplbWl0X29w
X3Jlc3VtZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQotewotICAgIEpJVFNsb3dQ
YXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhf
cmVzdW1lKTsKLSAgICBzbG93UGF0aENhbGwuY2FsbCgpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBK
U0MKIAogI2VuZGlmIC8vIEVOQUJMRShKSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KaW5kZXggMmE3NWM4MzdjODU4ZWY4ODgw
YTk5ODEzOTE4ZjcyZjgxNjFjZWM2NS4uNjk4NmY4MTEyNjYyNjMxY2M0N2QwNTUyYzgzZmM3OWQ5
OGI4MTBmZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXIuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyLmFzbQpAQCAtMTY1MSwxNSArMTY1MSwxMSBAQCBfbGxpbnRfb3BfYXNzZXJ0
OgogCiAKIF9sbGludF9vcF9zYXZlOgotICAgIHRyYWNlRXhlY3V0aW9uKCkKLSAgICBjYWxsT3Bj
b2RlU2xvd1BhdGgoX3Nsb3dfcGF0aF9zYXZlKQotICAgIGRpc3BhdGNoKDQpCisgICAgbm90U3Vw
cG9ydGVkKCkKIAogCiBfbGxpbnRfb3BfcmVzdW1lOgotICAgIHRyYWNlRXhlY3V0aW9uKCkKLSAg
ICBjYWxsT3Bjb2RlU2xvd1BhdGgoX3Nsb3dfcGF0aF9yZXN1bWUpCi0gICAgZGlzcGF0Y2goMykK
KyAgICBub3RTdXBwb3J0ZWQoKQogCiAKIF9sbGludF9vcF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9u
bWVudDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAppbmRleCAzYWQwZDJm
ZmVmZWE2YWEwMGUyNzcxYmY5ODE2M2I1ZDRkOGEyMDhmLi5hMzE5NTM3ZjgzZTYzZWM0NDFkYzU4
MzZkZWNlMzhkYmVkNDIyMjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1BhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIu
Y3BwCkBAIC0yNTYsNyArMjU2LDcgQEAgU3RyaW5nIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUlu
bmVyKGNvbnN0IElkZW50aWZpZXImIGNhbGxlZU5hbWUsIFNvdXJjZVBhcnNlTW8KICAgICBpZiAo
bV9sZXhlci0+aXNSZXBhcnNpbmdGdW5jdGlvbigpKSB7CiAgICAgICAgIFBhcnNlckZ1bmN0aW9u
SW5mbzxBU1RCdWlsZGVyPiBmdW5jdGlvbkluZm87CiAgICAgICAgIGlmIChwYXJzZU1vZGUgPT0g
U291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JCb2R5TW9kZSkKLSAgICAgICAgICAgIG1fcGFyYW1l
dGVycyA9IGNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMoY29udGV4dCk7CisgICAgICAgICAgICBt
X3BhcmFtZXRlcnMgPSBjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKGNvbnRleHQsIGZ1bmN0aW9u
SW5mby5wYXJhbWV0ZXJDb3VudCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG1fcGFyYW1l
dGVycyA9IHBhcnNlRnVuY3Rpb25QYXJhbWV0ZXJzKGNvbnRleHQsIHBhcnNlTW9kZSwgZnVuY3Rp
b25JbmZvKTsKIApAQCAtNTA2LDEwICs1MDYsOSBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxk
ZXI+IFRyZWVTb3VyY2VFbGVtZW50cyBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VHZW5lcmF0bwog
CiAgICAgUGFyc2VyRnVuY3Rpb25JbmZvPFRyZWVCdWlsZGVyPiBpbmZvOwogICAgIGluZm8ubmFt
ZSA9ICZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5udWxsSWRlbnRpZmllcjsKLSAgICBjcmVhdGVHZW5l
cmF0b3JQYXJhbWV0ZXJzKGNvbnRleHQpOworICAgIGNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMo
Y29udGV4dCwgaW5mby5wYXJhbWV0ZXJDb3VudCk7CiAgICAgaW5mby5zdGFydE9mZnNldCA9IHBh
cmFtZXRlcnNTdGFydDsKICAgICBpbmZvLnN0YXJ0TGluZSA9IHRva2VuTGluZSgpOwotICAgIGlu
Zm8ucGFyYW1ldGVyQ291bnQgPSA0OyAvLyBnZW5lcmF0b3IsIHN0YXRlLCB2YWx1ZSwgcmVzdW1l
IG1vZGUKIAogICAgIHsKICAgICAgICAgQXV0b1BvcFNjb3BlUmVmIGdlbmVyYXRvckJvZHlTY29w
ZSh0aGlzLCBwdXNoU2NvcGUoKSk7CkBAIC0xODk4LDMyICsxODk3LDMwIEBAIHRlbXBsYXRlIDx0
eXBlbmFtZSBMZXhlclR5cGU+IHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlciwgY2xhc3MgRnVu
Y3Rpb25JbmZvVHlwCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+Ci10ZW1wbGF0
ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpGb3JtYWxQYXJhbWV0
ZXJMaXN0IFBhcnNlcjxMZXhlclR5cGU+OjpjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKFRyZWVC
dWlsZGVyJiBjb250ZXh0KQordGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiB0eXBlbmFtZSBU
cmVlQnVpbGRlcjo6Rm9ybWFsUGFyYW1ldGVyTGlzdCBQYXJzZXI8TGV4ZXJUeXBlPjo6Y3JlYXRl
R2VuZXJhdG9yUGFyYW1ldGVycyhUcmVlQnVpbGRlciYgY29udGV4dCwgdW5zaWduZWQmIHBhcmFt
ZXRlckNvdW50KQogewogICAgIGF1dG8gcGFyYW1ldGVycyA9IGNvbnRleHQuY3JlYXRlRm9ybWFs
UGFyYW1ldGVyTGlzdCgpOwogCiAgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uKHRva2VuTG9j
YXRpb24oKSk7CiAgICAgSlNUZXh0UG9zaXRpb24gcG9zaXRpb24gPSB0b2tlblN0YXJ0UG9zaXRp
b24oKTsKIAotICAgIC8vIEBnZW5lcmF0b3IKLSAgICBkZWNsYXJlUGFyYW1ldGVyKCZtX3ZtLT5w
cm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JQcml2YXRlTmFtZSgpKTsKLSAg
ICBhdXRvIGdlbmVyYXRvciA9IGNvbnRleHQuY3JlYXRlQmluZGluZ0xvY2F0aW9uKGxvY2F0aW9u
LCBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JQcml2YXRlTmFt
ZSgpLCBwb3NpdGlvbiwgcG9zaXRpb24sIEFzc2lnbm1lbnRDb250ZXh0OjpEZWNsYXJhdGlvblN0
YXRlbWVudCk7Ci0gICAgY29udGV4dC5hcHBlbmRQYXJhbWV0ZXIocGFyYW1ldGVycywgZ2VuZXJh
dG9yLCAwKTsKKyAgICBhdXRvIGFkZFBhcmFtZXRlciA9IFsmXShjb25zdCBJZGVudGlmaWVyJiBu
YW1lKSB7CisgICAgICAgIGRlY2xhcmVQYXJhbWV0ZXIoJm5hbWUpOworICAgICAgICBhdXRvIGJp
bmRpbmcgPSBjb250ZXh0LmNyZWF0ZUJpbmRpbmdMb2NhdGlvbihsb2NhdGlvbiwgbmFtZSwgcG9z
aXRpb24sIHBvc2l0aW9uLCBBc3NpZ25tZW50Q29udGV4dDo6RGVjbGFyYXRpb25TdGF0ZW1lbnQp
OworICAgICAgICBjb250ZXh0LmFwcGVuZFBhcmFtZXRlcihwYXJhbWV0ZXJzLCBiaW5kaW5nLCAw
KTsKKyAgICAgICAgKytwYXJhbWV0ZXJDb3VudDsKKyAgICB9OwogCisgICAgLy8gQGdlbmVyYXRv
cgorICAgIGFkZFBhcmFtZXRlcihtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5n
ZW5lcmF0b3JQcml2YXRlTmFtZSgpKTsKICAgICAvLyBAZ2VuZXJhdG9yU3RhdGUKLSAgICBkZWNs
YXJlUGFyYW1ldGVyKCZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZW5lcmF0
b3JTdGF0ZVByaXZhdGVOYW1lKCkpOwotICAgIGF1dG8gZ2VuZXJhdG9yU3RhdGUgPSBjb250ZXh0
LmNyZWF0ZUJpbmRpbmdMb2NhdGlvbihsb2NhdGlvbiwgbV92bS0+cHJvcGVydHlOYW1lcy0+YnVp
bHRpbk5hbWVzKCkuZ2VuZXJhdG9yU3RhdGVQcml2YXRlTmFtZSgpLCBwb3NpdGlvbiwgcG9zaXRp
b24sIEFzc2lnbm1lbnRDb250ZXh0OjpEZWNsYXJhdGlvblN0YXRlbWVudCk7Ci0gICAgY29udGV4
dC5hcHBlbmRQYXJhbWV0ZXIocGFyYW1ldGVycywgZ2VuZXJhdG9yU3RhdGUsIDApOwotCisgICAg
YWRkUGFyYW1ldGVyKG1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRv
clN0YXRlUHJpdmF0ZU5hbWUoKSk7CiAgICAgLy8gQGdlbmVyYXRvclZhbHVlCi0gICAgZGVjbGFy
ZVBhcmFtZXRlcigmbV92bS0+cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9y
VmFsdWVQcml2YXRlTmFtZSgpKTsKLSAgICBhdXRvIGdlbmVyYXRvclZhbHVlID0gY29udGV4dC5j
cmVhdGVCaW5kaW5nTG9jYXRpb24obG9jYXRpb24sIG1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0
aW5OYW1lcygpLmdlbmVyYXRvclZhbHVlUHJpdmF0ZU5hbWUoKSwgcG9zaXRpb24sIHBvc2l0aW9u
LCBBc3NpZ25tZW50Q29udGV4dDo6RGVjbGFyYXRpb25TdGF0ZW1lbnQpOwotICAgIGNvbnRleHQu
YXBwZW5kUGFyYW1ldGVyKHBhcmFtZXRlcnMsIGdlbmVyYXRvclZhbHVlLCAwKTsKLQorICAgIGFk
ZFBhcmFtZXRlcihtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JW
YWx1ZVByaXZhdGVOYW1lKCkpOwogICAgIC8vIEBnZW5lcmF0b3JSZXN1bWVNb2RlCi0gICAgZGVj
bGFyZVBhcmFtZXRlcigmbV92bS0+cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZ2VuZXJh
dG9yUmVzdW1lTW9kZVByaXZhdGVOYW1lKCkpOwotICAgIGF1dG8gZ2VuZXJhdG9yUmVzdW1lTW9k
ZSA9IGNvbnRleHQuY3JlYXRlQmluZGluZ0xvY2F0aW9uKGxvY2F0aW9uLCBtX3ZtLT5wcm9wZXJ0
eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JSZXN1bWVNb2RlUHJpdmF0ZU5hbWUoKSwg
cG9zaXRpb24sIHBvc2l0aW9uLCBBc3NpZ25tZW50Q29udGV4dDo6RGVjbGFyYXRpb25TdGF0ZW1l
bnQpOwotICAgIGNvbnRleHQuYXBwZW5kUGFyYW1ldGVyKHBhcmFtZXRlcnMsIGdlbmVyYXRvclJl
c3VtZU1vZGUsIDApOworICAgIGFkZFBhcmFtZXRlcihtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5idWls
dGluTmFtZXMoKS5nZW5lcmF0b3JSZXN1bWVNb2RlUHJpdmF0ZU5hbWUoKSk7CisgICAgLy8gQGdl
bmVyYXRvckZyYW1lCisgICAgYWRkUGFyYW1ldGVyKG1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0
aW5OYW1lcygpLmdlbmVyYXRvckZyYW1lUHJpdmF0ZU5hbWUoKSk7CiAKICAgICByZXR1cm4gcGFy
YW1ldGVyczsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFy
c2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCmluZGV4IDA1ZDM0
YTcxODVlN2I0ZmJjZDAxMTk3YzBmYTU0MzBjZWQ0NGQyYWEuLmQwY2M5OWYyN2Y1MDU3YmNkMGM3
NWY4ODY0N2ZkZTdkZjg2NTgxNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIu
aApAQCAtMTQ0Miw3ICsxNDQyLDcgQEAgY2xhc3MgUGFyc2VyIHsKICAgICBBTFdBWVNfSU5MSU5F
IGJvb2wgaXNBcnJvd0Z1bmN0aW9uUGFyYW1ldGVycygpOwogICAgIAogICAgIHRlbXBsYXRlIDxj
bGFzcyBUcmVlQnVpbGRlciwgY2xhc3MgRnVuY3Rpb25JbmZvVHlwZT4gTkVWRVJfSU5MSU5FIHR5
cGVuYW1lIFRyZWVCdWlsZGVyOjpGb3JtYWxQYXJhbWV0ZXJMaXN0IHBhcnNlRnVuY3Rpb25QYXJh
bWV0ZXJzKFRyZWVCdWlsZGVyJiwgU291cmNlUGFyc2VNb2RlLCBGdW5jdGlvbkluZm9UeXBlJik7
Ci0gICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBORVZFUl9JTkxJTkUgdHlwZW5hbWUg
VHJlZUJ1aWxkZXI6OkZvcm1hbFBhcmFtZXRlckxpc3QgY3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVy
cyhUcmVlQnVpbGRlciYpOworICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gTkVWRVJf
SU5MSU5FIHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpGb3JtYWxQYXJhbWV0ZXJMaXN0IGNyZWF0ZUdl
bmVyYXRvclBhcmFtZXRlcnMoVHJlZUJ1aWxkZXImLCB1bnNpZ25lZCYgcGFyYW1ldGVyQ291bnQp
OwogCiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBORVZFUl9JTkxJTkUgVHJlZUNs
YXNzRXhwcmVzc2lvbiBwYXJzZUNsYXNzKFRyZWVCdWlsZGVyJiwgRnVuY3Rpb25SZXF1aXJlbWVu
dHMsIFBhcnNlckNsYXNzSW5mbzxUcmVlQnVpbGRlcj4mKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKaW5kZXggMDA2MTI0NWM1YjUy
ZDI1ZmQ1YzM1NGZhYmU2YzViNzZjOTEwOTQyMy4uYjhkOTc4MDM5MmRhZWY3OWZlMjE0YjBkMmM3
YTYzYzIzM2U5YWI0MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29tbW9uU2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21tb25TbG93UGF0aHMuY3BwCkBAIC0zNiw3ICszNiw2IEBACiAjaW5jbHVkZSAiRXJyb3IuaCIK
ICNpbmNsdWRlICJFcnJvckhhbmRsaW5nU2NvcGUuaCIKICNpbmNsdWRlICJFeGNlcHRpb25GdXp6
LmgiCi0jaW5jbHVkZSAiR2VuZXJhdG9yRnJhbWUuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIu
aCIKICNpbmNsdWRlICJIb3N0Q2FsbFJldHVyblZhbHVlLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0
ZXIuaCIKQEAgLTcxNCwzOCArNzEzLDYgQEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2Fzc2Vy
dCkKICAgICBFTkQoKTsKIH0KIAotU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3NhdmUpCi17Ci0g
ICAgLy8gT25seSBzYXZlIHZhcmlhYmxlcyBhbmQgdGVtcG9yYXJ5IHJlZ2lzdGVycy4gVGhlIHNj
b3BlIHJlZ2lzdGVycyBhcmUgaW5jbHVkZWQgaW4gdGhlbS4KLSAgICAvLyBCdXQgcGFyYW1ldGVy
cyBhcmUgbm90IGluY2x1ZGVkLiBCZWNhdXNlIHRoZSBnZW5lcmF0b3IgaW1wbGVtZW50YXRpb24g
cmVwbGFjZXMgdGhlIHZhbHVlcyBvZiBwYXJhbWV0ZXJzIG9uIGVhY2ggZ2VuZXJhdG9yLm5leHQo
KSBjYWxsLgotICAgIEJFR0lOKCk7Ci0gICAgSlNWYWx1ZSBnZW5lcmF0b3IgPSBPUCgxKS5qc1Zh
bHVlKCk7Ci0gICAgR2VuZXJhdG9yRnJhbWUqIGZyYW1lID0gbnVsbHB0cjsKLSAgICBKU1ZhbHVl
IHZhbHVlID0gZ2VuZXJhdG9yLmdldChleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuYnVpbHRp
bk5hbWVzKCkuZ2VuZXJhdG9yRnJhbWVQcml2YXRlTmFtZSgpKTsKLSAgICBpZiAoIXZhbHVlLmlz
TnVsbCgpKQotICAgICAgICBmcmFtZSA9IGpzQ2FzdDxHZW5lcmF0b3JGcmFtZSo+KHZhbHVlKTsK
LSAgICBlbHNlIHsKLSAgICAgICAgLy8gRklYTUU6IE9uY2UgSlNHZW5lcmF0b3Igc3BlY2lhbGl6
ZWQgb2JqZWN0IGlzIGludHJvZHVjZWQsIHRoaXMgR2VuZXJhdG9yRnJhbWUgc2hvdWxkIGJlIGVt
YmVkZWQgaW50byBpdCB0byBhdm9pZCBhbGxvY2F0aW9ucy4KLSAgICAgICAgLy8gaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTU0NQotICAgICAgICBmcmFtZSA9IEdl
bmVyYXRvckZyYW1lOjpjcmVhdGUoZXhlYy0+dm0oKSwgIGV4ZWMtPmNvZGVCbG9jaygpLT5udW1D
YWxsZWVMb2NhbHMoKSk7Ci0gICAgICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGdlbmVyYXRvciwg
dHJ1ZSwgUHV0UHJvcGVydHlTbG90OjpQdXRCeUlkKTsKLSAgICAgICAgYXNPYmplY3QoZ2VuZXJh
dG9yKS0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPnB1dChhc09iamVjdChnZW5lcmF0b3IpLCBl
eGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yRnJhbWVQ
cml2YXRlTmFtZSgpLCBmcmFtZSwgc2xvdCk7Ci0gICAgfQotICAgIHVuc2lnbmVkIGxpdmVDYWxs
ZWVMb2NhbHNJbmRleCA9IHBjWzJdLnUudW5zaWduZWRWYWx1ZTsKLSAgICBmcmFtZS0+c2F2ZShl
eGVjLCBleGVjLT5jb2RlQmxvY2soKS0+bGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQobGl2ZUNhbGxl
ZUxvY2Fsc0luZGV4KSk7Ci0gICAgRU5EKCk7Ci19Ci0KLVNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0
aF9yZXN1bWUpCi17Ci0gICAgQkVHSU4oKTsKLSAgICBKU1ZhbHVlIGdlbmVyYXRvciA9IE9QKDEp
LmpzVmFsdWUoKTsKLSAgICBHZW5lcmF0b3JGcmFtZSogZnJhbWUgPSBqc0Nhc3Q8R2VuZXJhdG9y
RnJhbWUqPihnZW5lcmF0b3IuZ2V0KGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5idWlsdGlu
TmFtZXMoKS5nZW5lcmF0b3JGcmFtZVByaXZhdGVOYW1lKCkpKTsKLSAgICB1bnNpZ25lZCBsaXZl
Q2FsbGVlTG9jYWxzSW5kZXggPSBwY1syXS51LnVuc2lnbmVkVmFsdWU7Ci0gICAgZnJhbWUtPnJl
c3VtZShleGVjLCBleGVjLT5jb2RlQmxvY2soKS0+bGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQobGl2
ZUNhbGxlZUxvY2Fsc0luZGV4KSk7Ci0gICAgRU5EKCk7Ci19Ci0KIFNMT1dfUEFUSF9ERUNMKHNs
b3dfcGF0aF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudCkKIHsKICAgICBCRUdJTigpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAppbmRleCBl
YmM5MTMwNmY4M2E4MWI3YWEyZWUwZTNiM2ZiZTI5MjdlOWZhZDYyLi43NTM0ZjU2NTNhZjJlY2U0
MTgyMWQwNTFkZTY5ODE0MzE4NmQyNDU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21tb25TbG93UGF0aHMuaApAQCAtMjQ1LDggKzI0NSw2IEBAIFNMT1dfUEFUSF9I
SURERU5fREVDTChzbG93X3BhdGhfbmV4dF9nZW5lcmljX2VudW1lcmF0b3JfcG5hbWUpOwogU0xP
V19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF90b19pbmRleF9zdHJpbmcpOwogU0xPV19QQVRI
X0hJRERFTl9ERUNMKHNsb3dfcGF0aF9wcm9maWxlX3R5cGVfY2xlYXJfbG9nKTsKIFNMT1dfUEFU
SF9ISURERU5fREVDTChzbG93X3BhdGhfYXNzZXJ0KTsKLVNMT1dfUEFUSF9ISURERU5fREVDTChz
bG93X3BhdGhfc2F2ZSk7Ci1TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3Jlc3VtZSk7
CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2NyZWF0ZV9sZXhpY2FsX2Vudmlyb25t
ZW50KTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcHVzaF93aXRoX3Njb3BlKTsK
IFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcmVzb2x2ZV9zY29wZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGcmFtZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGcmFtZS5jcHAKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVmNmVhN2ExMDAyNThjM2VjZTA0ZGFhYjQzYmRhYTg1MWVj
OGY3MTUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJhbWUuY3BwCisrKyAvZGV2L251
bGwKQEAgLTEsOTcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6
dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
Ci0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0g
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmln
LmgiCi0jaW5jbHVkZSAiR2VuZXJhdG9yRnJhbWUuaCIKLQotI2luY2x1ZGUgIkNvZGVCbG9jay5o
IgotI2luY2x1ZGUgIkhlYXBJdGVyYXRpb25TY29wZS5oIgotI2luY2x1ZGUgIkpTQ0pTVmFsdWVJ
bmxpbmVzLmgiCi0jaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgotI2luY2x1ZGUgIlNsb3RWaXNp
dG9ySW5saW5lcy5oIgotI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKLQotbmFtZXNwYWNl
IEpTQyB7Ci0KLWNvbnN0IENsYXNzSW5mbyBHZW5lcmF0b3JGcmFtZTo6c19pbmZvID0geyAiR2Vu
ZXJhdG9yRnJhbWUiLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEdlbmVy
YXRvckZyYW1lKSB9OwotCi1HZW5lcmF0b3JGcmFtZTo6R2VuZXJhdG9yRnJhbWUoVk0mIHZtLCBz
aXplX3QgbnVtYmVyT2ZDYWxsZWVMb2NhbHMpCi0gICAgOiBCYXNlKHZtLCB2bS5nZW5lcmF0b3JG
cmFtZVN0cnVjdHVyZS5nZXQoKSkKLSAgICAsIG1fbnVtYmVyT2ZDYWxsZWVMb2NhbHMobnVtYmVy
T2ZDYWxsZWVMb2NhbHMpCi17Ci19Ci0KLXZvaWQgR2VuZXJhdG9yRnJhbWU6OmZpbmlzaENyZWF0
aW9uKFZNJiB2bSkKLXsKLSAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7Ci0gICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBtX251bWJlck9mQ2FsbGVlTG9jYWxzOyArK2kpCi0gICAgICAgIGxv
Y2FsQXQoaSkuY2xlYXIoKTsKLX0KLQotU3RydWN0dXJlKiBHZW5lcmF0b3JGcmFtZTo6Y3JlYXRl
U3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBw
cm90b3R5cGUpCi17Ci0gICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmpl
Y3QsIHByb3RvdHlwZSwgVHlwZUluZm8oQ2VsbFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygp
KTsKLX0KLQotR2VuZXJhdG9yRnJhbWUqIEdlbmVyYXRvckZyYW1lOjpjcmVhdGUoVk0mIHZtLCBz
aXplX3QgbnVtYmVyT2ZMb2NhbHMpCi17Ci0gICAgR2VuZXJhdG9yRnJhbWUqIHJlc3VsdCA9Ci0g
ICAgICAgIG5ldyAoCi0gICAgICAgICAgICBOb3ROdWxsLAotICAgICAgICAgICAgYWxsb2NhdGVD
ZWxsPEdlbmVyYXRvckZyYW1lPih2bS5oZWFwLCBhbGxvY2F0aW9uU2l6ZUZvckxvY2FscyhudW1i
ZXJPZkxvY2FscykpKQotICAgICAgICBHZW5lcmF0b3JGcmFtZSh2bSwgbnVtYmVyT2ZMb2NhbHMp
OwotICAgIHJlc3VsdC0+ZmluaXNoQ3JlYXRpb24odm0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci0KLXZvaWQgR2VuZXJhdG9yRnJhbWU6OnNhdmUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBGYXN0
Qml0VmVjdG9yJiBsaXZlQ2FsbGVlTG9jYWxzKQotewotICAgIC8vIE9ubHkgc2F2ZSBjYWxsZWUg
bG9jYWxzLgotICAgIC8vIEV2ZXJ5IHRpbWUgYSBnZW5lcmF0b3IgaXMgY2FsbGVkIChvciByZXN1
bWVkKSwgcGFyYW1ldGVycyBzaG91bGQgYmUgcmVwbGFjZWQuCi0gICAgQVNTRVJUKGxpdmVDYWxs
ZWVMb2NhbHMubnVtQml0cygpIDw9IG1fbnVtYmVyT2ZDYWxsZWVMb2NhbHMpOwotICAgIGxpdmVD
YWxsZWVMb2NhbHMuZm9yRWFjaFNldEJpdChbJl0oc2l6ZV90IGluZGV4KSB7Ci0gICAgICAgIGxv
Y2FsQXQoaW5kZXgpLnNldChleGVjLT52bSgpLCB0aGlzLCBleGVjLT51bmNoZWNrZWRSKHZpcnR1
YWxSZWdpc3RlckZvckxvY2FsKGluZGV4KSkuanNWYWx1ZSgpKTsKLSAgICB9KTsKLX0KLQotdm9p
ZCBHZW5lcmF0b3JGcmFtZTo6cmVzdW1lKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgRmFzdEJpdFZl
Y3RvciYgbGl2ZUNhbGxlZUxvY2FscykKLXsKLSAgICAvLyBPbmx5IHJlc3VtZSBjYWxsZWUgbG9j
YWxzLgotICAgIC8vIEV2ZXJ5IHRpbWUgYSBnZW5lcmF0b3IgaXMgY2FsbGVkIChvciByZXN1bWVk
KSwgcGFyYW1ldGVycyBzaG91bGQgYmUgcmVwbGFjZWQuCi0gICAgbGl2ZUNhbGxlZUxvY2Fscy5m
b3JFYWNoU2V0Qml0KFsmXShzaXplX3QgaW5kZXgpIHsKLSAgICAgICAgZXhlYy0+dW5jaGVja2Vk
Uih2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChpbmRleCkpID0gbG9jYWxBdChpbmRleCkuZ2V0KCk7
Ci0gICAgICAgIGxvY2FsQXQoaW5kZXgpLmNsZWFyKCk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgR2Vu
ZXJhdG9yRnJhbWU6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlz
aXRvcikKLXsKLSAgICBHZW5lcmF0b3JGcmFtZSogdGhpc09iamVjdCA9IGpzQ2FzdDxHZW5lcmF0
b3JGcmFtZSo+KGNlbGwpOwotICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlz
aXRvcik7Ci0gICAgLy8gU2luY2Ugb25seSB0cnVlIGNlbGwgcG9pbnRlcnMgYXJlIHN0b3JlZCBh
cyBhIGNlbGwsIHdlIGNhbiBzYWZlbHkgbWFyayB0aGVtLgotICAgIHZpc2l0b3IuYXBwZW5kVmFs
dWVzKHRoaXNPYmplY3QtPmxvY2FscygpLCB0aGlzT2JqZWN0LT5tX251bWJlck9mQ2FsbGVlTG9j
YWxzKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGcmFtZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvR2VuZXJhdG9yRnJhbWUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
M2Q1NDViMTQ3ZGQ0YWJmYjJiYmI5YjVhNzE5NGU4Zjc0ODQxYzQ5YS4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9HZW5lcmF0b3JGcmFtZS5oCisrKyAvZGV2L251bGwKQEAgLTEsOTAgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5j
b20+LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIEdlbmVyYXRvckZyYW1lX2gKLSNkZWZpbmUgR2VuZXJh
dG9yRnJhbWVfaAotCi0jaW5jbHVkZSAiSlNDZWxsLmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RCaXRW
ZWN0b3IuaD4KLQotbmFtZXNwYWNlIEpTQyB7Ci0KLWNsYXNzIEdlbmVyYXRvckZyYW1lIDogcHVi
bGljIEpTQ2VsbCB7Ci0gICAgZnJpZW5kIGNsYXNzIEpJVDsKLSNpZiBFTkFCTEUoREZHX0pJVCkK
LSAgICBmcmllbmQgY2xhc3MgREZHOjpTcGVjdWxhdGl2ZUpJVDsKLSAgICBmcmllbmQgY2xhc3Mg
REZHOjpKSVRDb21waWxlcjsKLSNlbmRpZgotICAgIGZyaWVuZCBjbGFzcyBWTTsKLXB1YmxpYzoK
LSAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOwotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1
Y3R1cmVGbGFncyA9IFN0cnVjdHVyZUlzSW1tb3J0YWwgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsK
LQotICAgIERFQ0xBUkVfRVhQT1JUX0lORk87Ci0KLSAgICBzdGF0aWMgR2VuZXJhdG9yRnJhbWUq
IGNyZWF0ZShWTSYsIHNpemVfdCBudW1iZXJPZkNhbGxlZUxvY2Fscyk7Ci0KLSAgICBXcml0ZUJh
cnJpZXJCYXNlPFVua25vd24+KiBsb2NhbHMoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGJpdHdp
c2VfY2FzdDxXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+Kj4oYml0d2lzZV9jYXN0PGNoYXIqPih0
aGlzKSArIG9mZnNldE9mTG9jYWxzKCkpOwotICAgIH0KLQotICAgIFdyaXRlQmFycmllckJhc2U8
VW5rbm93bj4mIGxvY2FsQXQoc2l6ZV90IGluZGV4KQotICAgIHsKLSAgICAgICAgQVNTRVJUKGlu
ZGV4IDwgbV9udW1iZXJPZkNhbGxlZUxvY2Fscyk7Ci0gICAgICAgIHJldHVybiBsb2NhbHMoKVtp
bmRleF07Ci0gICAgfQotCi0gICAgc3RhdGljIHNpemVfdCBvZmZzZXRPZkxvY2FscygpCi0gICAg
ewotICAgICAgICByZXR1cm4gV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mPHNpemVvZihXcml0ZUJh
cnJpZXI8VW5rbm93bj4pPihzaXplb2YoR2VuZXJhdG9yRnJhbWUpKTsKLSAgICB9Ci0KLSAgICBz
dGF0aWMgc2l6ZV90IGFsbG9jYXRpb25TaXplRm9yTG9jYWxzKHVuc2lnbmVkIG51bWJlck9mTG9j
YWxzKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG9mZnNldE9mTG9jYWxzKCkgKyBudW1iZXJPZkxv
Y2FscyAqIHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pOwotICAgIH0KLQotICAgIHN0YXRp
YyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1
ZSBwcm90b3R5cGUpOwotCi0gICAgdm9pZCBzYXZlKEV4ZWNTdGF0ZSosIGNvbnN0IEZhc3RCaXRW
ZWN0b3ImIGxpdmVDYWxsZWVMb2NhbHMpOwotICAgIHZvaWQgcmVzdW1lKEV4ZWNTdGF0ZSosIGNv
bnN0IEZhc3RCaXRWZWN0b3ImIGxpdmVDYWxsZWVMb2NhbHMpOwotCi1wcml2YXRlOgotICAgIEdl
bmVyYXRvckZyYW1lKFZNJiwgc2l6ZV90IG51bWJlck9mQ2FsbGVlTG9jYWxzKTsKLQotICAgIHNp
emVfdCBtX251bWJlck9mQ2FsbGVlTG9jYWxzOwotCi0gICAgZnJpZW5kIGNsYXNzIExMSW50T2Zm
c2V0c0V4dHJhY3RvcjsKLQotICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKLQotcHJvdGVj
dGVkOgotICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3Im
KTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEpTQwotCi0jZW5kaWYgLy8gR2VuZXJhdG9yRnJhbWVf
aApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCmluZGV4IGQ0ZTdmOWRiMjdhNzRjNDRm
NDcxZDM2NWU0YzVkOTBlOTMwNWFhMzMuLmQ1NTE4YWE3NjkxM2MxZTQ0YjRmYzdjOGRhN2Q0NTQw
YjgzNmIyY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKQEAgLTQ2LDcgKzQ2
LDYgQEAKICNpbmNsdWRlICJGVExUaHVua3MuaCIKICNpbmNsdWRlICJGdW5jdGlvbkNvbnN0cnVj
dG9yLmgiCiAjaW5jbHVkZSAiR0NBY3Rpdml0eUNhbGxiYWNrLmgiCi0jaW5jbHVkZSAiR2VuZXJh
dG9yRnJhbWUuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJIZWFwLmgi
CiAjaW5jbHVkZSAiSGVhcEl0ZXJhdGlvblNjb3BlLmgiCkBAIC0yNDAsNyArMjM5LDYgQEAgVk06
OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgIGluZmVycmVkVHlwZVN0
cnVjdHVyZS5zZXQoKnRoaXMsIEluZmVycmVkVHlwZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAw
LCBqc051bGwoKSkpOwogICAgIGluZmVycmVkVHlwZVRhYmxlU3RydWN0dXJlLnNldCgqdGhpcywg
SW5mZXJyZWRUeXBlVGFibGU6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsK
ICAgICBmdW5jdGlvblJhcmVEYXRhU3RydWN0dXJlLnNldCgqdGhpcywgRnVuY3Rpb25SYXJlRGF0
YTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwotICAgIGdlbmVyYXRvckZy
YW1lU3RydWN0dXJlLnNldCgqdGhpcywgR2VuZXJhdG9yRnJhbWU6OmNyZWF0ZVN0cnVjdHVyZSgq
dGhpcywgMCwganNOdWxsKCkpKTsKICAgICBleGNlcHRpb25TdHJ1Y3R1cmUuc2V0KCp0aGlzLCBF
eGNlcHRpb246OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICBwcm9t
aXNlRGVmZXJyZWRTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBKU1Byb21pc2VEZWZlcnJlZDo6Y3JlYXRl
U3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIGludGVybmFsUHJvbWlzZURlZmVy
cmVkU3RydWN0dXJlLnNldCgqdGhpcywgSlNJbnRlcm5hbFByb21pc2VEZWZlcnJlZDo6Y3JlYXRl
U3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVk0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZN
LmgKaW5kZXggN2RkMTIzMzViZTc2N2VjMjljNGNmN2ZkN2YzMDYyMDg5MzYyYTZlNi4uNWFhOGRj
NzM0ZTUyNmI1YjE5ZDVlZjdkODUxNGRjMTRmOGQxMThjZiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9WTS5oCkBAIC0zMTYsNyArMzE2LDYgQEAgY2xhc3MgVk0gOiBwdWJsaWMgVGhyZWFkU2Fm
ZVJlZkNvdW50ZWQ8Vk0+IHsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBpbmZlcnJlZFR5cGVTdHJ1
Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gaW5mZXJyZWRUeXBlVGFibGVTdHJ1Y3R1cmU7
CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gZnVuY3Rpb25SYXJlRGF0YVN0cnVjdHVyZTsKLSAgICBT
dHJvbmc8U3RydWN0dXJlPiBnZW5lcmF0b3JGcmFtZVN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3Ry
dWN0dXJlPiBleGNlcHRpb25TdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gcHJvbWlz
ZURlZmVycmVkU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGludGVybmFsUHJvbWlz
ZURlZmVycmVkU3RydWN0dXJlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQtYXJyYXkuanMgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLWFuZC1hcnJheS5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5mZTkzOTgxMmZkYmFlYzZiODMyYmZkMDBmMjE1M2RlZjg0YmI3NTkyCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3It
ZmliLWZ0bC1hbmQtYXJyYXkuanMKQEAgLTAsMCArMSwyMyBAQAorKGZ1bmN0aW9uICgpIHsKKyAg
ICBmdW5jdGlvbiAqZmliKCkKKyAgICB7CisgICAgICAgIGxldCBhID0gMTsKKyAgICAgICAgbGV0
IGIgPSAxOworICAgICAgICBsZXQgYyA9IFsgMCBdOworICAgICAgICB3aGlsZSAodHJ1ZSkgewor
ICAgICAgICAgICAgY1swXSA9IGE7CisgICAgICAgICAgICB5aWVsZCBjOworICAgICAgICAgICAg
W2EsIGJdID0gW2IsIGEgKyBiXTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGxldCB2YWx1ZSA9
IDA7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxZTQ7ICsraSkgeworICAgICAgICBsZXQgZiA9
IGZpYigpOworICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDsgKytpKSB7CisgICAgICAg
ICAgICB2YWx1ZSA9IGYubmV4dCgpLnZhbHVlOworICAgICAgICB9CisgICAgICAgIGlmICh2YWx1
ZVswXSAhPT0gMzU0MjI0ODQ4MTc5MjYyMDAwMDAwKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKGBiYWQgdmFsdWU6JHtyZXN1bHR9YCk7CisgICAgfQorfSgpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwtYW5kLW9i
amVjdC5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZp
Yi1mdGwtYW5kLW9iamVjdC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NjczNDBmMmVhNGM3NDM4YTJkMjA5YWE0
MGQwNjc3ZTRhYjdkM2ZiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQtb2JqZWN0LmpzCkBAIC0wLDAgKzEs
MjMgQEAKKyhmdW5jdGlvbiAoKSB7CisgICAgZnVuY3Rpb24gKmZpYigpCisgICAgeworICAgICAg
ICBsZXQgYSA9IDE7CisgICAgICAgIGxldCBiID0gMTsKKyAgICAgICAgbGV0IGMgPSB7IGZpYjog
MCB9OworICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAgYy5maWIgPSBhOworICAg
ICAgICAgICAgeWllbGQgYzsKKyAgICAgICAgICAgIFthLCBiXSA9IFtiLCBhICsgYl07CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICBsZXQgdmFsdWUgPSAwOworICAgIGZvciAobGV0IGkgPSAwOyBp
IDwgMWU0OyArK2kpIHsKKyAgICAgICAgbGV0IGYgPSBmaWIoKTsKKyAgICAgICAgZm9yIChsZXQg
aSA9IDA7IGkgPCAxMDA7ICsraSkgeworICAgICAgICAgICAgdmFsdWUgPSBmLm5leHQoKS52YWx1
ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAodmFsdWUuZmliICE9PSAzNTQyMjQ4NDgxNzkyNjIw
MDAwMDApCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCB2YWx1ZToke3Jlc3VsdH1g
KTsKKyAgICB9Cit9KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3Rz
L3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQtc3RyaW5nLmpzIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQtc3RyaW5nLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjQzOGFlNmFiMzM0NzA0NjgyMjg0OWY0MzAwNGVhNWM0MDNlZWRhMjgKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1m
aWItZnRsLWFuZC1zdHJpbmcuanMKQEAgLTAsMCArMSwyMiBAQAorKGZ1bmN0aW9uICgpIHsKKyAg
ICBmdW5jdGlvbiAqZmliKCkKKyAgICB7CisgICAgICAgIGxldCBhID0gMTsKKyAgICAgICAgbGV0
IGIgPSAxOworICAgICAgICBsZXQgYyA9ICJSZXN1bHQhICI7CisgICAgICAgIHdoaWxlICh0cnVl
KSB7CisgICAgICAgICAgICB5aWVsZCBjICsgYTsKKyAgICAgICAgICAgIFthLCBiXSA9IFtiLCBh
ICsgYl07CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQgdmFsdWUgPSAwOworICAgIGZvciAo
bGV0IGkgPSAwOyBpIDwgMWU0OyArK2kpIHsKKyAgICAgICAgbGV0IGYgPSBmaWIoKTsKKyAgICAg
ICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDA7ICsraSkgeworICAgICAgICAgICAgdmFsdWUgPSBm
Lm5leHQoKS52YWx1ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAodmFsdWUgIT09IGBSZXN1bHQh
IDM1NDIyNDg0ODE3OTI2MjAwMDAwMGApCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJh
ZCB2YWx1ZToke3Jlc3VsdH1gKTsKKyAgICB9Cit9KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC5qcyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMzQwZTMzZGJjODY4YmVhN2E4OTNjOWVjMTZiNzc5ZWMyNmJkYjE5YwotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1m
dGwuanMKQEAgLTAsMCArMSwyMSBAQAorKGZ1bmN0aW9uICgpIHsKKyAgICBmdW5jdGlvbiAqZmli
KCkKKyAgICB7CisgICAgICAgIGxldCBhID0gMTsKKyAgICAgICAgbGV0IGIgPSAxOworICAgICAg
ICB3aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAgeWllbGQgYTsKKyAgICAgICAgICAgIFthLCBi
XSA9IFtiLCBhICsgYl07CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQgdmFsdWUgPSAwOwor
ICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMWU0OyArK2kpIHsKKyAgICAgICAgbGV0IGYgPSBmaWIo
KTsKKyAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDA7ICsraSkgeworICAgICAgICAgICAg
dmFsdWUgPSBmLm5leHQoKS52YWx1ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAodmFsdWUgIT09
IDM1NDIyNDg0ODE3OTI2MjAwMDAwMCkKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFk
IHZhbHVlOiR7cmVzdWx0fWApOworICAgIH0KK30oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1mcmFtZS1lbXB0eS5qcyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZyYW1lLWVtcHR5LmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjU5ZTg4NTViZmFjM2M1NmRmOTI2YWJkNDI4YzAxM2MzMzQxNjI3NDYKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRv
ci1mcmFtZS1lbXB0eS5qcwpAQCAtMCwwICsxLDM0IEBACitmdW5jdGlvbiBzaG91bGRUaHJvdyhm
dW5jLCBlcnJvck1lc3NhZ2UpIHsKKyAgICB2YXIgZXJyb3JUaHJvd24gPSBmYWxzZTsKKyAgICB2
YXIgZXJyb3IgPSBudWxsOworICAgIHRyeSB7CisgICAgICAgIGZ1bmMoKTsKKyAgICB9IGNhdGNo
IChlKSB7CisgICAgICAgIGVycm9yVGhyb3duID0gdHJ1ZTsKKyAgICAgICAgZXJyb3IgPSBlOwor
ICAgIH0KKyAgICBpZiAoIWVycm9yVGhyb3duKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ25v
dCB0aHJvd24nKTsKKyAgICBpZiAoU3RyaW5nKGVycm9yKSAhPT0gZXJyb3JNZXNzYWdlKQorICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCBlcnJvcjogJHtTdHJpbmcoZXJyb3IpfWApOworfQor
CitzaG91bGRUaHJvdyhmdW5jdGlvbiAoKSB7CisgICAgZnVuY3Rpb24gKmZpYihmbGFnKQorICAg
IHsKKyAgICAgICAgbGV0IGEgPSAxOworICAgICAgICBsZXQgYiA9IDE7CisgICAgICAgIHlpZWxk
IDQyOworICAgICAgICBpZiAoZmxhZykKKyAgICAgICAgICAgIHJldHVybiBjOworICAgICAgICBs
ZXQgYyA9IDUwMDsKKyAgICB9CisKKyAgICBsZXQgdmFsdWUgPSAwOworICAgIGZvciAobGV0IGkg
PSAwOyBpIDwgMWU0OyArK2kpIHsKKyAgICAgICAgZm9yIChsZXQgdiBvZiBmaWIoZmFsc2UpKSB7
CisgICAgICAgIH0KKyAgICB9CisgICAgZm9yIChsZXQgdiBvZiBmaWIodHJ1ZSkpIHsKKyAgICB9
Cit9LCBgUmVmZXJlbmNlRXJyb3I6IENhbm5vdCBhY2Nlc3MgdW5pbml0aWFsaXplZCB2YXJpYWJs
ZS5gKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>283739</attachid>
            <date>2016-07-14 23:33:33 -0700</date>
            <delta_ts>2016-07-15 04:47:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-152723-20160715153244.patch</filename>
            <type>text/plain</type>
            <size>157351</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAzMjIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
ZWM5M2I2MTEyM2IyNzk4NWI2MjNhOTVhOGFhY2JkN2I5NzUwNGIzLi45NjIwOTMyMDNjYmYxNTA0
NTkxZGE3YzVlMDc3NDExNDc0N2M4MjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMTYgQEAKKzIwMTYtMDctMTQgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0RGR11bRlRMXSBJbXBsZW1lbnQgRVM2IEdlbmVyYXRvcnMgaW4g
REZHIC8gRlRMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNTI3MjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAhISEgV0lQICEhISBUaGUgZm9sbG93aW5nIGlzIG5vdCB3ZWxsIGRvY3VtZW50ZWQgeWV0Lgor
CisgICAgICAgIFRoaXMgcGF0Y2ggaW50cm9kdWNlcyBERkcgYW5kIEZUTCBzdXBwb3J0IGZvciBF
UzYgZ2VuZXJhdG9ycy4KKyAgICAgICAgRVM2IGdlbmVyYXRvciBpcyBjb21waWxlZCBieSB0aGUg
Qnl0ZWNvZGVHZW5lcmF0b3IuIEJ1dCBhdCB0aGUgbGFzdCBwaGFzZSwgQnl0ZWNvZGVHZW5lcmF0
b3IgcGVyZm9ybXMgImdlbmVyYXRvcmlmaWNhdGlvbiIgb250byB0aGUgdW5saW5rZWQgY29kZS4K
KyAgICAgICAgSW4gQnl0ZWNvZGVHZW5lcmF0b3IgcGhhc2UsIHdlIGluc2VydGVkIHNldmVyYWwg
c3BlY2lhbCBtYXJrZXJzIGZvciB0aGUgZ2VuZXJhdG9ycy4gb3Bfc2F2ZSBhbmQgb3BfcmVzdW1l
LgorICAgICAgICBUaGUgb3Bfc2F2ZSwgb3BfcmVzdW1lIGFuZCB0aGUgbWVyZ2UgcG9pbnQgYmxv
Y2sgYXJlIGNvbm5lY3RlZCBhcyBmb2xsb3dzLgorCisgICAgICAgIGVudHJ5IC0+IGdlbmVyYXRv
ciBzd2l0Y2ggLS0tLT4gb3Bfc2F2ZSAtPiBtZXJnZSBwb2ludCAtPiAuLi4KKyAgICAgICAgICAg
ICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCisgICAgICAgICAg
ICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLT4gb3BfcmVzdW1lIC0tLS0tKworCisgICAgICAg
IEluIHRoZSBnZW5lcmF0b3JpZmljYXRpb24gcGhhc2UsIHdlIHR1cm4gb3V0IHdoaWNoIHZhcmlh
YmxlcyBzaG91bGQgYmUgc2F2ZWQgYW5kIHJlc3VtZWQgYXQgZWFjaCBvcF9zYXZlIGFuZCBvcF9y
ZXN1bWUsIGFuZCBjb252ZXJ0IHRoZXNlIGJ5dGVjb2RlcworICAgICAgICB0byB0aGUgc2VxdWVu
Y2VzIG9mIHRoZSBnZXRfZnJvbV9zY29wZSBhbmQgcHV0X3RvX3Njb3BlLiBUaGUgcmVnaXN0ZXJz
IGFyZSBzYXZlZCBhbmQgcmVzdW1lZCBvdmVyIHRoZSBnZW5lcmF0b3IncyBuZXh0KCkgY2FsbHMg
YnkgdXNpbmcgdGhpcyBzcGVjaWFsCisgICAgICAgIGdlbmVyYXRvciBmcmFtZSBzY29wZS4KKwor
ICAgICAgICBJbiB0aGUgZ2VuZXJhdG9yaWZpY2F0aW9uIHBoYXNlLAorCisgICAgICAgIDEuIEZp
cnN0LCB3ZSBjb25zdHJ1Y3QgdGhlIEJ5dGVjb2RlR3JhcGggZnJvbSB0aGUgdW5pbmtlZCBpbnN0
cnVjdGlvbnMuIFRoaXMgY29ycmVjdGx5IGNvbnN0cnVjdHMgdGhlIGJhc2ljIGJsb2NrcywgYW5k
IGl0IGlzIHVzZWQgaW4gdGhlIHN1YnNlcXVlbnQKKyAgICAgICAgICAgYW5hbHlzaXMuCisgICAg
ICAgIDIuIFdlIHBlcmZvcm0gdGhlIGFuYWx5c2lzIG9udG8gdGhlIHVubGlua2VkIGNvZGUuIFdl
IGhhdmUgMiBhbmFseXNpczogbGl2ZW5lc3MgYW5hbHlzaXMgYW5kIGdlbmVyYXRvciBkZWZzIGFu
YWx5c2lzLgorICAgICAgICAgICBJbiBsaXZlbmVzcyBhbmFseXNpcywgd2UgZXh0cmFjdCB0aGUg
bGl2ZSB2YXJpYWJsZXMgYXQgdGhlIGVhY2ggbWVyZ2UgcG9pbnQuIFRoZXNlIHZhcmlhYmxlcyBz
aG91bGQgYmUgcmVzdW1lZCBzaW5jZSB0aGV5CisgICAgICAgICAgIGFyZSB1c2VkIGFmdGVyIHRo
ZSBtZXJnZSBwb2ludC4KKyAgICAgICAgICAgQW5kIHdlIGFsc28gZHJpdmUgdGhlIGZvcndhcmQg
YW5hbHlzaXMsIGNhbGxlZCB0aGUgZ2VuZXJhdG9yIGRlZnMgYW5hbHlzaXMuIEF0IG9wX3NhdmUs
IHdlIHNob3VsZCBzYXZlIHRoZSB2YXJpYWJsZXMgdGhhdCAoMSkgd2lsbCBiZSB1c2VkIGFmdGVy
CisgICAgICAgICAgIHRoZSBtZXJnZSBwb2ludCBhbmQgKDIpIG5ld2x5IGRlZmluZWQgdmFyaWFi
bGVzIGZyb20gdGhlIHByZXZpb3VzIG9wX3Jlc3VtZS4gU28gd2UgcHJvcGFnYXRlIHRoZSBkZWZz
IChleGNlcHQgZm9yIG9wX3Jlc3VtZSBvbmVzKSBhbmQgY29sbGVjdCB0aGUKKyAgICAgICAgICAg
bmV3bHkgZGVmaW5lZCB2YXJpYWJsZXMgYXQgdGhlIG9wX3NhdmUgcG9pbnQuIEJ5IHVzaW5nIHRo
aXMgYml0IG1hc2ssIHdlIGZpbHRlciB0aGUgbGl2ZSB2YXJpYWJsZXMgYXQgdGhlIG1lcmdlIHBv
aW50IHRvIHJlZHVjZSB0aGUgbnVtYmVyIG9mIHRoZQorICAgICAgICAgICBzYXZlZCByZWdpc3Rl
cnMuIFdpdGhvdXQgdGhpcywgd2UgcmVwZWF0ZWRseSBzYXZlIHRoZSByZWdpc3RlciB0aGF0IGlz
IGRlZmluZWQgYnkgb3BfcmVzdW1lLgorICAgICAgICAzLiBUaGVuLCB3ZSBpbnNlcnQgdGhlIGdl
dF9mcm9tX3Njb3BlIGFuZCBwdXRfdG9fc2NvcGUgYXQgZWFjaCBvcF9zYXZlIGFuZCBvcF9yZXN1
bWUuIFRoZW4sIGNsaXAgdGhlIG9wX3NhdmUgYW5kIG9wX3Jlc3VtZSB0aGVtc2VsdmVzLiBUaGV5
IGFyZSBleGVjdXRlZAorICAgICAgICAgICBpbiBhIGJhdGNoIG1hbm5lciBieSBCeXRlY29kZUlu
c2VydGlvblNldC4gU2luY2UgdGhlc2UgbW9kaWZpY2F0aW9uIGNoYW5nZXMgdGhlIGJhc2ljIGJs
b2NrcyBhbmQgc2l6ZSBvZiB1bmxpbmtlZCBpbnN0cnVjdGlvbnMsIEJ5dGVjb2RlSW5zZXJ0aW9u
U2V0CisgICAgICAgICAgIGFsc28gcGVyZm9ybXMgdGhlIG9mZnNldCBhZGp1c3RtZW50IGZvciBV
bmxpbmtlZENvZGVCbG9jay4gU28sIHRoaXMgQnl0ZWNvZGVJbnNlcnRpb25TZXQgaXMgcGVyZm9y
bWVkIG9udG8gdGhlIEJ5dGVjb2RlR3JhcGggaW5zdGVhZCBvZiBCeXRlY29kZUJhc2ljQmxvY2su
CisgICAgICAgICAgIFRoZSByZWFzb24gd2h5IHdlIHRha2UgdGhpcyBkZXNpZ24gaXMgc2ltcGxl
LCB3ZSBkb24ndCB3YW50IHRvIG5ld2x5IGNyZWF0ZSB0aGUgYmFzaWMgYmxvY2tzIGFuZCBvcGNv
ZGVzIGZvciB0aGlzIGVhcmx5IHBoYXNlIGxpa2UgREZHLiBJbnN0ZWFkLAorICAgICAgICAgICB3
ZSBwZXJmb3JtIHRoZSBtb2RpZmljYXRpb24gYW5kIGFkanVzdG1lbnQgdG8gdGhlIHVubGlua2Vk
IGluc3RydWN0aW9ucyBhbmQgVW5saW5rZWRDb2RlQmxvY2sgaW4gYSBpbi1wbGFjZSBtYW5uZXIu
CisKKyAgICAgICAgQWZ0ZXIgdGhhdCBwaGFzZSwgdGhlIGRhdGEgZmxvdyBvZiB0aGUgZ2VuZXJh
dG9yLXNhdmVkLWFuZC1yZXN1bWVkLXJlZ2lzdGVycyBhcmUgZXhwbGljaXRseSByZXByZXNlbnRl
ZCBieSB0aGUgZ2V0X2Zyb21fc2NvcGUgYW5kIHB1dF90b19zY29wZS4KKyAgICAgICAgQW5kIG9w
X3NhdmUgYW5kIG9wX3Jlc3VtZSBhcmUgcmVtb3ZlZC4gU2luY2Ugd2UgdXNlIHRoZSBleGlzdGlu
ZyBieXRlY29kZXMsIERGRyBhbmQgRlRMIGNoYW5nZXMgYXJlIG5vdCBuZWNlc3NhcnkuCisKKyAg
ICAgICAgQ29tcGlsaW5nIEVTNiBnZW5lcmF0b3JzIGluIERGRyBhbmQgRlRMIGdpdmVzIHVzIHNp
Z25pZmljYW50IHBlcmZvcm1hbmNlIGltcHJvdmVtZW50cy4KKworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZWxpbmUgICAgICAgICAgICAgICAg
ICAgcGF0Y2hlZAorCisgICAgICAgIGdlbmVyYXRvci1maWIgICAgICAgICAgICAgICAgICAgICAg
ICAgIDEwNC45MDU1Ky0xLjgxODkgICAgIF4gICAgIDM3LjExNzArLTEuMTE5NiAgICAgICAgXiBk
ZWZpbml0ZWx5IDIuODI2M3ggZmFzdGVyCisgICAgICAgIGdlbmVyYXRvci13aXRoLXNldmVyYWwt
dHlwZXMgICAgICAgICAgIDM1MS45NzYwKy0xNC4yNDMwICAgIF4gICAgMTMzLjg4OTErLTE3LjYw
ODMgICAgICAgXiBkZWZpbml0ZWx5IDIuNjI4OXggZmFzdGVyCisgICAgICAgIGdlbmVyYXRvci1z
dW5zcGlkZXItYWNjZXNzLW5zaWV2ZSAgICAgICAgNS45NTU1Ky0wLjA2NjcgICAgIF4gICAgICA1
LjA3NjArLTAuMDY0OCAgICAgICAgXiBkZWZpbml0ZWx5IDEuMTczM3ggZmFzdGVyCisKKworICAg
ICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYnVpbHRpbnMvR2VuZXJhdG9yUHJvdG90eXBl
LmpzOgorICAgICAgICAoZ2xvYmFsUHJpdmF0ZS5nZW5lcmF0b3JSZXN1bWUpOgorICAgICAgICAq
IGJ5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5jcHA6CisgICAgICAgIChKU0M6OmlzQnJhbmNo
KToKKyAgICAgICAgKEpTQzo6bGlua0Jsb2Nrcyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlQmFz
aWNCbG9jazo6Y29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3NJbnRlcm5hbCk6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlQmFzaWNCbG9jazo6Y29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MpOgorICAg
ICAgICAoSlNDOjpjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2Nrcyk6IERlbGV0ZWQuCisgICAgICAg
ICogYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmg6CisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
QmFzaWNCbG9jazo6cHJlZGVjZXNzb3JzKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVCYXNpY0Js
b2NrOjphZGRQcmVkZWNlc3Nvcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlQmFzaWNCbG9jazo6
aW5kZXgpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNw
cDogQWRkZWQuCisgICAgICAgIChKU0M6OmlzVmFsaWRSZWdpc3RlckZvckxpdmVuZXNzKToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb246OkJ5dGVjb2RlR2VuZXJhdG9y
aWZpY2F0aW9uKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb246OnN0
b3JhZ2VGb3JHZW5lcmF0b3JMb2NhbCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9y
aWZpY2F0aW9uOjpjb21wdXRlR2VuZXJhdG9yRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb246OmNvbXB1dGVHZW5lcmF0b3JVc2Vz
Rm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcmlmaWNh
dGlvbjo6c3RlcE92ZXJJbnN0cnVjdGlvbik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJh
dG9yaWZpY2F0aW9uOjpjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb246OmNvbXB1dGVMb2NhbExpdmVu
ZXNzRm9yQmxvY2spOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbjo6
Z2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
R2VuZXJhdG9yaWZpY2F0aW9uOjpydW5MaXZlbmVzc0FuYWx5c2lzKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb246OnN0ZXBPdmVySW5zdHJ1Y3Rpb25Gb3JOb25HZW5l
cmF0b3JEZWZzKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb246OmNv
bXB1dGVMb2NhbE5vbkdlbmVyYXRvckRlZnNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uOjpjb21wdXRlTG9jYWxOb25HZW5lcmF0b3JE
ZWZzRm9yQmxvY2spOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbjo6
Z2V0Tm9uR2VuZXJhdG9yRGVmc0luZm9BdEJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb246OnJ1bk5vbkdlbmVyYXRvckRlZnNBbmFseXNpcyk6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uOjpydW4pOgorICAgICAg
ICAoSlNDOjpwZXJmb3JtR2VuZXJhdG9yaWZpY2F0aW9uKToKKyAgICAgICAgKiBieXRlY29kZS9C
eXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmguCisgICAgICAgICogYnl0
ZWNvZGUvQnl0ZWNvZGVHcmFwaC5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHcmFw
aDo6Y29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHcmFwaDo6YmFzaWNCbG9ja3Mp
OgorICAgICAgICAoSlNDOjpCeXRlY29kZUdyYXBoOjppbnN0cnVjdGlvbnMpOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUdyYXBoOjpiYXNpY0Jsb2Nrc0luUmV2ZXJzZU9yZGVyKToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHcmFwaDo6YmxvY2tDb250YWluc0J5dGVjb2RlT2Zmc2V0KToKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVHcmFwaDo6ZmluZEJhc2ljQmxvY2tGb3JCeXRlY29kZU9mZnNldCk6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR3JhcGg6OmZpbmRCYXNpY0Jsb2NrV2l0aExlYWRlck9m
ZnNldCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR3JhcGg8QmxvY2s+OjpCeXRlY29kZUdyYXBo
KToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUluc2VydGlvblNldC5jcHA6IEFkZGVkLgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUluc2VydGlvblNldDo6YWRqdXN0T2Zmc2V0KToKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVJbnNlcnRpb25TZXQ6OmFwcGx5TW9kaWZpY2F0aW9uKToKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVJbnNlcnRpb25TZXQ6OmV4ZWN1dGUpOgorICAgICAgICAqIGJ5dGVj
b2RlL0J5dGVjb2RlSW5zZXJ0aW9uU2V0Lmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUluc2VydGlvblNldDo6Qnl0ZWNvZGVJbnNlcnRpb25TZXQpOgorICAgICAgICAoSlNDOjpCeXRl
Y29kZUluc2VydGlvblNldDo6aW5zZXJ0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVJbnNlcnRp
b25TZXQ6OnJlbW92ZUJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVJbnNlcnRpb25T
ZXQ6OmdyYXBoKToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMu
Y3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OkJ5dGVjb2RlTGl2
ZW5lc3NBbmFseXNpcyk6CisgICAgICAgIChKU0M6OmlzVmFsaWRSZWdpc3RlckZvckxpdmVuZXNz
KToKKyAgICAgICAgKEpTQzo6c3RlcE92ZXJJbnN0cnVjdGlvbik6CisgICAgICAgIChKU0M6OmNv
bXB1dGVMb2NhbExpdmVuZXNzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpjb21w
dXRlTG9jYWxMaXZlbmVzc0ZvckJsb2NrKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVz
c0FuYWx5c2lzOjpydW5MaXZlbmVzc0ZpeHBvaW50KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVM
aXZlbmVzc0FuYWx5c2lzOjpnZXRMaXZlbmVzc0luZm9BdEJ5dGVjb2RlT2Zmc2V0KToKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlRnVsbExpdmVuZXNzKToK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlS2lsbHMpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmR1bXBSZXN1bHRzKToKKyAg
ICAgICAgKEpTQzo6Z2V0TGVhZGVyT2Zmc2V0Rm9yQmFzaWNCbG9jayk6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OmZpbmRCYXNpY0Jsb2NrV2l0aExlYWRlck9mZnNldCk6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OmJsb2NrQ29udGFpbnNCeXRlY29kZU9mZnNldCk6IERlbGV0ZWQuCisgICAgICAg
IChKU0M6OmZpbmRCYXNpY0Jsb2NrRm9yQnl0ZWNvZGVPZmZzZXQpOiBEZWxldGVkLgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGUpOiBEZWxldGVkLgorICAg
ICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5oOgorICAgICAgICAqIGJ5
dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmg6CisgICAgICAgIChKU0M6OmNvbXB1dGVVc2VzRm9yQnl0
ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0
KToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2Rl
QmxvY2s6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpoYW5kbGVy
Rm9ySW5kZXgpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmxpdmVuZXNzQW5hbHlzaXNTbG93
KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2s6OnNocmlua1RvRml0KTogRGVsZXRlZC4KKyAgICAgICAgKiBi
eXRlY29kZS9Db2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjppc0NvbnN0YW50
UmVnaXN0ZXJJbmRleCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bGl2ZW5lc3NBbmFseXNp
cyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQpOiBE
ZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2RlL0hhbmRsZXJJbmZvLmg6CisgICAgICAgIChKU0M6
OkhhbmRsZXJJbmZvQmFzZTo6aGFuZGxlckZvckluZGV4KToKKyAgICAgICAgKiBieXRlY29kZS9Q
cmVjaXNlSnVtcFRhcmdldHMuY3BwOgorICAgICAgICAoSlNDOjpnZXRKdW1wVGFyZ2V0c0ZvckJ5
dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0c0lu
dGVybmFsKToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyk6CisgICAg
ICAgIChKU0M6OnJlY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyk6CisgICAgICAgIChKU0M6OmZp
bmRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKiBieXRlY29kZS9QcmVj
aXNlSnVtcFRhcmdldHMuaDoKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5j
cHA6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjpoYW5kbGVyRm9yQnl0ZWNvZGVP
ZmZzZXQpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6aGFuZGxlckZvckluZGV4
KToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OmFwcGx5TW9kaWZpY2F0aW9uKToK
KyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpV
bmxpbmtlZFN0cmluZ0p1bXBUYWJsZTo6b2Zmc2V0Rm9yVmFsdWUpOgorICAgICAgICAqIGJ5dGVj
b2RlL1ZpcnR1YWxSZWdpc3Rlci5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdl
bmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZSk6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcik6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3R2VuZXJhdG9yRnJhbWUpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENvbXBsZXhQb3BTY29wZXMpOgor
ICAgICAgICAoSlNDOjpwcmVwYXJlSnVtcFRhYmxlRm9yU3RyaW5nU3dpdGNoKToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRZaWVsZFBvaW50KToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRTYXZlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXRSZXN1bWUpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5oOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdG9yRnJhbWVS
ZWdpc3Rlcik6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGdl
bmVyYXRlLWJ5dGVjb2RlLWZpbGVzOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVy
LmNwcDoKKyAgICAgICAgKEpTQzo6ZmluZEV4Y2VwdGlvbkhhbmRsZXIpOgorICAgICAgICAoSlND
OjpHZXRDYXRjaEhhbmRsZXJGdW5jdG9yOjpvcGVyYXRvcigpKToKKyAgICAgICAgKEpTQzo6VW53
aW5kRnVuY3Rvcjo6b3BlcmF0b3IoKSk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0
ZXIuaDoKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmdldE9wY29kZUlEKToKKyAgICAgICAg
KiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNz
KTogRGVsZXRlZC4KKyAgICAgICAgKiBqaXQvSklULmg6CisgICAgICAgICogaml0L0pJVE9wY29k
ZXMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bfc2F2ZSk6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9yZXN1bWUpOiBEZWxldGVkLgorICAgICAgICAqIGxsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuY3BwOgor
ICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJbm5lcik6CisgICAgICAgIChK
U0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUdlbmVyYXRvckZ1bmN0aW9uU291cmNlRWxlbWVu
dHMpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6Y3JlYXRlR2VuZXJhdG9yUGFy
YW1ldGVycyk6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5oOgorICAgICAgICAqIHJ1bnRpbWUv
Q29tbW9uU2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6U0xPV19QQVRIX0RFQ0wpOiBEZWxl
dGVkLgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmg6CisgICAgICAgICogcnVu
dGltZS9HZW5lcmF0b3JGcmFtZS5jcHA6IFJlbW92ZWQuCisgICAgICAgIChKU0M6OkdlbmVyYXRv
ckZyYW1lOjpHZW5lcmF0b3JGcmFtZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkdlbmVyYXRv
ckZyYW1lOjpmaW5pc2hDcmVhdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkdlbmVyYXRv
ckZyYW1lOjpjcmVhdGVTdHJ1Y3R1cmUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpHZW5lcmF0
b3JGcmFtZTo6Y3JlYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6
OnNhdmUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6cmVzdW1lKTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OnZpc2l0Q2hpbGRyZW4pOiBE
ZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJhdG9yRnJhbWUuaDogUmVtb3ZlZC4KKyAg
ICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OmxvY2Fscyk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OkdlbmVyYXRvckZyYW1lOjpsb2NhbEF0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6R2Vu
ZXJhdG9yRnJhbWU6Om9mZnNldE9mTG9jYWxzKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6R2Vu
ZXJhdG9yRnJhbWU6OmFsbG9jYXRpb25TaXplRm9yTG9jYWxzKTogRGVsZXRlZC4KKyAgICAgICAg
KiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OlZNKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBydW50aW1lL1ZNLmg6CisgICAgICAgICogdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWIt
ZnRsLWFuZC1hcnJheS5qczogQWRkZWQuCisgICAgICAgIChmaWIpOgorICAgICAgICAqIHRlc3Rz
L3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQtb2JqZWN0LmpzOiBBZGRlZC4KKyAgICAgICAg
KGZpYik6CisgICAgICAgICogdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLWFuZC1zdHJp
bmcuanM6IEFkZGVkLgorICAgICAgICAoZmliKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvZ2Vu
ZXJhdG9yLWZpYi1mdGwuanM6IEFkZGVkLgorICAgICAgICAoZmliKToKKyAgICAgICAgKiB0ZXN0
cy9zdHJlc3MvZ2VuZXJhdG9yLWZyYW1lLWVtcHR5LmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3Vs
ZFRocm93KToKKyAgICAgICAgKHNob3VsZFRocm93LmZpYik6CisgICAgICAgICogdGVzdHMvc3Ry
ZXNzL2dlbmVyYXRvci1yZWR1Y2VkLXNhdmUtcG9pbnQtcHV0LXRvLXNjb3BlLmpzOiBBZGRlZC4K
KyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKGdlbik6CisKIDIwMTYtMDctMTQgIFlvdWVu
biBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIERPTSB2YWx1ZSBpdGVyYWJs
ZSBpbnRlcmZhY2VzIHNob3VsZCB1c2UgQXJyYXkgcHJvdG90eXBlIG1ldGhvZHMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBjNDk3N2RhZmUyYWU1OGQxNzQ1MjgwNTlhZGM5
NzkyNzJkMTg5MzdlLi4wNjRlMTRkMDEwMzk2MzdlNzY2MTBkNmUzOTlmOWIyNmJhMzJjYThjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0xNzgsNiArMTc4LDggQEAgc2V0
KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBieXRlY29kZS9BcnJheUFsbG9jYXRpb25Qcm9m
aWxlLmNwcAogICAgIGJ5dGVjb2RlL0FycmF5UHJvZmlsZS5jcHAKICAgICBieXRlY29kZS9CeXRl
Y29kZUJhc2ljQmxvY2suY3BwCisgICAgYnl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRp
b24uY3BwCisgICAgYnl0ZWNvZGUvQnl0ZWNvZGVJbnNlcnRpb25TZXQuY3BwCiAgICAgYnl0ZWNv
ZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5jcHAKICAgICBieXRlY29kZS9CeXRlY29kZUxp
dmVuZXNzQW5hbHlzaXMuY3BwCiAgICAgYnl0ZWNvZGUvQ2FsbEVkZ2UuY3BwCkBAIC02NTUsNyAr
NjU3LDYgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBydW50aW1lL0Z1bmN0aW9u
SGFzRXhlY3V0ZWRDYWNoZS5jcHAKICAgICBydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcAog
ICAgIHJ1bnRpbWUvRnVuY3Rpb25SYXJlRGF0YS5jcHAKLSAgICBydW50aW1lL0dlbmVyYXRvckZy
YW1lLmNwcAogICAgIHJ1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKICAg
ICBydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcAogICAgIHJ1bnRpbWUvR2Vu
ZXJhdG9yUHJvdG90eXBlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBiNjhh
OTZiMWI0ZjY5MzgxODI4YjE2YThmOThjNDVhOWRkYWJmMWU5Li5hNjNlOGJiMTAzNjAyZWEwYjE5
NzIxMjY2NzA1MmU2MzZjNzM1MDUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
MTI1Miw4ICsxMjUyLDYgQEAKIAkJNzA5RkI4NkMxQUUzMzVDNjAwMzlEMDY5IC8qIFdlYWtTZXRQ
cm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDcwOUZCODY2MUFFMzM1QzYwMDM5RDA2OSAvKiBXZWFrU2V0UHJvdG90eXBlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzBCMEE5RDExQTlCNjY0
NjAwMDEzMDZBIC8qIFJ1bnRpbWVGbGFncy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNzBCMEE5RDAxQTlCNjYyMDAwMDEzMDZBIC8qIFJ1bnRpbWVGbGFn
cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcw
Qjc5MTkxMUMwMjRBMTMwMDI0ODFFMiAvKiBTb3VyY2VDb2RlS2V5LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEI3OTE4RTFDMDI0NEM5MDAyNDgxRTIg
LyogU291cmNlQ29kZUtleS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07Ci0JCTcwQjc5MTkyMUMwMjRBMjMwMDI0ODFFMiAvKiBHZW5lcmF0b3JGcmFtZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEI3OTE4
MzFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnJhbWUuY3BwICovOyB9OwotCQk3MEI3OTE5
MzFDMDI0QTI4MDAyNDgxRTIgLyogR2VuZXJhdG9yRnJhbWUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwQjc5MTg0MUMwMjQ0MzIwMDI0ODFFMiAvKiBH
ZW5lcmF0b3JGcmFtZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTcwQjc5MTk0MUMwMjRBMjgwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvbkNv
bnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDcwQjc5MTg1MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVj
dG9yLmNwcCAqLzsgfTsKIAkJNzBCNzkxOTUxQzAyNEEyODAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1
bmN0aW9uQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDcwQjc5MTg2MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvbkNv
bnN0cnVjdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJNzBCNzkxOTYxQzAyNEEyODAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90
eXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcw
Qjc5MTg3MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5jcHAg
Ki87IH07CkBAIC0zNDQ1LDggKzM0NDMsNiBAQAogCQk3MDlGQjg2NTFBRTMzNUM2MDAzOUQwNjkg
LyogV2Vha1NldFByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBXZWFrU2V0UHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NzA5RkI4NjYxQUUzMzVDNjAwMzlEMDY5IC8qIFdlYWtTZXRQcm90b3R5cGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vha1NldFByb3RvdHlwZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3MEIwQTlEMDFBOUI2NjIwMDAwMTMwNkEgLyogUnVudGltZUZsYWdz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJ1bnRpbWVGbGFncy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3MEI3OTE4MzFDMDI0NDMyMDAyNDgxRTIgLyogR2Vu
ZXJhdG9yRnJhbWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR2Vu
ZXJhdG9yRnJhbWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3MEI3OTE4NDFD
MDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnJhbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gR2VuZXJhdG9yRnJhbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNzBCNzkxODUxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0
b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR2VuZXJhdG9yRnVu
Y3Rpb25Db25zdHJ1Y3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcwQjc5
MTg2MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0
b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzBCNzkxODcxQzAyNDQzMjAwMjQ4
MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTU2NjcsOCArNTY2Myw2IEBACiAJCQkJRjY5MkE4NUQw
MjU1NTk3RDAxRkY2MEY3IC8qIEZ1bmN0aW9uUHJvdG90eXBlLmggKi8sCiAJCQkJNjJEMkQzOEQx
QURGMTAzRjAwMDIwNkMxIC8qIEZ1bmN0aW9uUmFyZURhdGEuY3BwICovLAogCQkJCTYyRDJEMzhF
MUFERjEwM0YwMDAyMDZDMSAvKiBGdW5jdGlvblJhcmVEYXRhLmggKi8sCi0JCQkJNzBCNzkxODMx
QzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZyYW1lLmNwcCAqLywKLQkJCQk3MEI3OTE4NDFD
MDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnJhbWUuaCAqLywKIAkJCQk3MEI3OTE4NTFDMDI0
NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAgKi8sCiAJCQkJ
NzBCNzkxODYxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3Iu
aCAqLywKIAkJCQk3MEI3OTE4NzFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Q
cm90b3R5cGUuY3BwICovLApAQCAtNjI2MSw2ICs2MjU1LDcgQEAKIAkJCQkwRjY5Q0M4NjE5M0FD
NjBBMDA0NTc1OUUgLyogREZHRnJvemVuVmFsdWUuY3BwICovLAogCQkJCTBGNjlDQzg3MTkzQUM2
MEEwMDQ1NzU5RSAvKiBERkdGcm96ZW5WYWx1ZS5oICovLAogCQkJCTg2RUM5REI2MTMyOERGODIw
MDJCMkFENyAvKiBERkdHZW5lcmF0aW9uSW5mby5oICovLAorCQkJCTcwNzkxNDFDMUM0QUE4MDcw
MEI4MkZGNyAvKiBERkdHZW5lcmF0b3JMb2NhbERhdGEuaCAqLywKIAkJCQk4NkVDOURCNzEzMjhE
RjgyMDAyQjJBRDcgLyogREZHR3JhcGguY3BwICovLAogCQkJCTg2RUM5REI4MTMyOERGODIwMDJC
MkFENyAvKiBERkdHcmFwaC5oICovLAogCQkJCTBGMkZDQ0YyMThBNjAwNzAwMDFBMjdGOCAvKiBE
RkdHcmFwaFNhZmVwb2ludC5jcHAgKi8sCkBAIC03MzY0LDcgKzczNTksNiBAQAogCQkJCUE3Mzc4
MTBFMTc5OUVBMkUwMDgxNzUzMyAvKiBERkdOYXR1cmFsTG9vcHMuaCBpbiBIZWFkZXJzICovLAog
CQkJCTg2RUNBM0VBMTMyREVGMUMwMDJCMkFENyAvKiBERkdOb2RlLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRkZCOTIxQjE2RDAyRjAxMDA1NUE1REIgLyogREZHTm9kZUFsbG9jYXRvci5oIGluIEhl
YWRlcnMgKi8sCi0JCQkJNzBCNzkxOTMxQzAyNEEyODAwMjQ4MUUyIC8qIEdlbmVyYXRvckZyYW1l
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkE1ODFCQjE1MEU5NTMwMDBCOUEyRDkgLyogREZHTm9k
ZUZsYWdzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjMwMEI3ODE4QUIwNTExMDBBNkQ3MkUgLyog
REZHTm9kZU9yaWdpbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZBNTgxQkMxNTBFOTUzMDAwQjlB
MkQ5IC8qIERGR05vZGVUeXBlLmggaW4gSGVhZGVycyAqLywKQEAgLTgwMjgsNiArODAyMiw3IEBA
CiAJCQkJMEZFMDUwMjkxQUE5MDk1NjAwRDMzQjMzIC8qIFNjb3BlZEFyZ3VtZW50c1RhYmxlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRkUwNTAyQjFBQTkwOTU2MDBEMzNCMzMgLyogU2NvcGVPZmZz
ZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjRFNTUyMTdFRTI3NDkwMEFCQjIxNyAvKiBTY3Jh
dGNoUmVnaXN0ZXJBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCTcwNzkxNDFEMUM0QUE4
NjAwMEI4MkZGNyAvKiBERkdHZW5lcmF0b3JMb2NhbERhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUE1RkQwMDY4MTg5QUZFOUMwMDYzMzIzMSAvKiBTY3JpcHRBcmd1bWVudHMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUE1MDNGQTIxMTg4RUZGNjgwMDExMEYxNCAvKiBTY3JpcHRCcmVha3BvaW50Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBNUZEMDA2RTE4OUIwMEFBMDA2MzMyMzEgLyogU2NyaXB0Q2Fs
bEZyYW1lLmggaW4gSGVhZGVycyAqLywKQEAgLTk0NDAsNyArOTQzNSw2IEBACiAJCQkJNzlFRTBC
RkYxQjRBRkI4NTAwMDM4NUM5IC8qIFZhcmlhYmxlRW52aXJvbm1lbnQuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMEY2QzczNTAxQUM5Rjk5RjAwQkUxNjgyIC8qIFZhcmlhYmxlV3JpdGVGaXJlRGV0
YWlsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRTA1MDJDMUFBOTA5NTYwMEQzM0IzMyAvKiBW
YXJPZmZzZXQuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNzBCNzkxOTIxQzAyNEEyMzAwMjQ4MUUy
IC8qIEdlbmVyYXRvckZyYW1lLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMjBDMjU5MUE4MDEz
QUIwMERBMzIyOSAvKiBWaXJ0dWFsUmVnaXN0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTE4
RTNBNTkwREY5Mjc4QzAwRDkwQjM0IC8qIFZNLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZFNTkz
MkE3MTgzQzVBMjYwMEExRUNDQyAvKiBWTUVudHJ5U2NvcGUuY3BwIGluIFNvdXJjZXMgKi8sCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvR2VuZXJhdG9yUHJvdG90
eXBlLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0dlbmVyYXRvclByb3RvdHlw
ZS5qcwppbmRleCAzYzE0MDY4N2RmYzdlMDBlZmU5MWFlODBiMmFjNjc2ZmE5YmY0OGY0Li40OTlk
YmQzOTJlODMxM2RjZGQ4NmVjOGMxNjA1NjlkN2Q2ZjU0OWIxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvR2VuZXJhdG9yUHJvdG90eXBlLmpzCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9HZW5lcmF0b3JQcm90b3R5cGUuanMKQEAgLTUxLDcg
KzUxLDcgQEAgZnVuY3Rpb24gZ2VuZXJhdG9yUmVzdW1lKGdlbmVyYXRvciwgc2VudFZhbHVlLCBy
ZXN1bWVNb2RlKQogICAgIH0gZWxzZSB7CiAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICBnZW5l
cmF0b3IuQGdlbmVyYXRvclN0YXRlID0gQEdlbmVyYXRvclN0YXRlRXhlY3V0aW5nOwotICAgICAg
ICAgICAgdmFsdWUgPSBnZW5lcmF0b3IuQGdlbmVyYXRvck5leHQuQGNhbGwoZ2VuZXJhdG9yLkBn
ZW5lcmF0b3JUaGlzLCBnZW5lcmF0b3IsIHN0YXRlLCBzZW50VmFsdWUsIHJlc3VtZU1vZGUpOwor
ICAgICAgICAgICAgdmFsdWUgPSBnZW5lcmF0b3IuQGdlbmVyYXRvck5leHQuQGNhbGwoZ2VuZXJh
dG9yLkBnZW5lcmF0b3JUaGlzLCBnZW5lcmF0b3IsIHN0YXRlLCBzZW50VmFsdWUsIHJlc3VtZU1v
ZGUsIGdlbmVyYXRvci5AZ2VuZXJhdG9yRnJhbWUpOwogICAgICAgICAgICAgaWYgKGdlbmVyYXRv
ci5AZ2VuZXJhdG9yU3RhdGUgPT09IEBHZW5lcmF0b3JTdGF0ZUV4ZWN1dGluZykgewogICAgICAg
ICAgICAgICAgIGdlbmVyYXRvci5AZ2VuZXJhdG9yU3RhdGUgPSBAR2VuZXJhdG9yU3RhdGVDb21w
bGV0ZWQ7CiAgICAgICAgICAgICAgICAgZG9uZSA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suY3BwCmluZGV4IDdmMTdj
MGVmMTBiNDMzZmFjOGY1OGNiM2I5Y2E1ZDRkMDE1YmJhMDguLjk5N2E5NTgwMTM1MzRkYTRlN2Uw
ZWUwNTgxODViN2FkMzZhY2I1NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suY3BwCkBAIC02MCw2ICs2MCw3IEBAIHN0YXRp
YyBib29sIGlzQnJhbmNoKE9wY29kZUlEIG9wY29kZUlEKQogICAgIGNhc2Ugb3Bfc3dpdGNoX3N0
cmluZzoKICAgICBjYXNlIG9wX3NhdmU6CiAgICAgICAgIHJldHVybiB0cnVlOworCiAgICAgZGVm
YXVsdDoKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KQEAgLTEwOCwxMiArMTA5LDIwIEBA
IHN0YXRpYyBib29sIGlzSnVtcFRhcmdldChPcGNvZGVJRCBvcGNvZGVJRCwgY29uc3QgVmVjdG9y
PHVuc2lnbmVkLCAzMj4mIGp1bXBUYXJnCiBzdGF0aWMgdm9pZCBsaW5rQmxvY2tzKEJ5dGVjb2Rl
QmFzaWNCbG9jayogcHJlZGVjZXNzb3IsIEJ5dGVjb2RlQmFzaWNCbG9jayogc3VjY2Vzc29yKQog
ewogICAgIHByZWRlY2Vzc29yLT5hZGRTdWNjZXNzb3Ioc3VjY2Vzc29yKTsKKyAgICBzdWNjZXNz
b3ItPmFkZFByZWRlY2Vzc29yKHByZWRlY2Vzc29yKTsKIH0KIAotdm9pZCBjb21wdXRlQnl0ZWNv
ZGVCYXNpY0Jsb2NrcyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0
cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9ja3MpCit0ZW1wbGF0ZTx0eXBlbmFtZSBC
bG9jaywgdHlwZW5hbWUgSW5zdHJ1Y3Rpb24+Cit2b2lkIEJ5dGVjb2RlQmFzaWNCbG9jazo6Y29t
cHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3NJbnRlcm5hbChCbG9jayogY29kZUJsb2NrLCBJbnN0cnVj
dGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQsIFZlY3Rv
cjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mIGJhc2ljQmxvY2tzKQogewog
ICAgIFZlY3Rvcjx1bnNpZ25lZCwgMzI+IGp1bXBUYXJnZXRzOwotICAgIGNvbXB1dGVQcmVjaXNl
SnVtcFRhcmdldHMoY29kZUJsb2NrLCBqdW1wVGFyZ2V0cyk7CisgICAgY29tcHV0ZVByZWNpc2VK
dW1wVGFyZ2V0cyhjb2RlQmxvY2ssIGluc3RydWN0aW9uc0JlZ2luLCBpbnN0cnVjdGlvbkNvdW50
LCBqdW1wVGFyZ2V0cyk7CisKKyAgICBhdXRvIGFwcGVuZEJsb2NrID0gWyZdIChzdGQ6OnVuaXF1
ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiYmIGJsb2NrKQorICAgIHsKKyAgICAgICAgYmxvY2st
Pm1faW5kZXggPSBiYXNpY0Jsb2Nrcy5zaXplKCk7CisgICAgICAgIGJhc2ljQmxvY2tzLmFwcGVu
ZChXVEZNb3ZlKGJsb2NrKSk7CisgICAgfTsKIAogICAgIC8vIENyZWF0ZSB0aGUgZW50cnkgYW5k
IGV4aXQgYmFzaWMgYmxvY2tzLgogICAgIGJhc2ljQmxvY2tzLnJlc2VydmVDYXBhY2l0eShqdW1w
VGFyZ2V0cy5zaXplKCkgKyAyKTsKQEAgLTEyMiwxOSArMTMxLDE3IEBAIHZvaWQgY29tcHV0ZUJ5
dGVjb2RlQmFzaWNCbG9ja3MoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFZlY3RvcjxzdGQ6OnVuaXF1
ZV9wdHI8Qnl0CiAgICAgYXV0byBmaXJzdEJsb2NrID0gc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29k
ZUJhc2ljQmxvY2s+KDAsIDApOwogICAgIGxpbmtCbG9ja3MoZW50cnkuZ2V0KCksIGZpcnN0Qmxv
Y2suZ2V0KCkpOwogCi0gICAgYmFzaWNCbG9ja3MuYXBwZW5kKFdURk1vdmUoZW50cnkpKTsKKyAg
ICBhcHBlbmRCbG9jayhXVEZNb3ZlKGVudHJ5KSk7CiAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBj
dXJyZW50ID0gZmlyc3RCbG9jay5nZXQoKTsKLSAgICBiYXNpY0Jsb2Nrcy5hcHBlbmQoV1RGTW92
ZShmaXJzdEJsb2NrKSk7CisgICAgYXBwZW5kQmxvY2soV1RGTW92ZShmaXJzdEJsb2NrKSk7CiAK
ICAgICBhdXRvIGV4aXQgPSBzdGQ6Om1ha2VfdW5pcXVlPEJ5dGVjb2RlQmFzaWNCbG9jaz4oQnl0
ZWNvZGVCYXNpY0Jsb2NrOjpFeGl0QmxvY2spOwogCiAgICAgYm9vbCBuZXh0SW5zdHJ1Y3Rpb25J
c0xlYWRlciA9IGZhbHNlOwogCiAgICAgSW50ZXJwcmV0ZXIqIGludGVycHJldGVyID0gY29kZUJs
b2NrLT52bSgpLT5pbnRlcnByZXRlcjsKLSAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVn
aW4gPSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCk7Ci0gICAgdW5zaWduZWQgaW5z
dHJ1Y3Rpb25Db3VudCA9IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpOwogICAgIGZv
ciAodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQgPSAwOyBieXRlY29kZU9mZnNldCA8IGluc3RydWN0
aW9uQ291bnQ7KSB7Ci0gICAgICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0ZXItPmdl
dE9wY29kZUlEKGluc3RydWN0aW9uc0JlZ2luW2J5dGVjb2RlT2Zmc2V0XS51Lm9wY29kZSk7Cisg
ICAgICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGluc3Ry
dWN0aW9uc0JlZ2luW2J5dGVjb2RlT2Zmc2V0XSk7CiAgICAgICAgIHVuc2lnbmVkIG9wY29kZUxl
bmd0aCA9IG9wY29kZUxlbmd0aHNbb3Bjb2RlSURdOwogCiAgICAgICAgIGJvb2wgY3JlYXRlZEJs
b2NrID0gZmFsc2U7CkBAIC0xNDIsNyArMTQ5LDcgQEAgdm9pZCBjb21wdXRlQnl0ZWNvZGVCYXNp
Y0Jsb2NrcyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXQK
ICAgICAgICAgaWYgKGlzSnVtcFRhcmdldChvcGNvZGVJRCwganVtcFRhcmdldHMsIGJ5dGVjb2Rl
T2Zmc2V0KSB8fCBuZXh0SW5zdHJ1Y3Rpb25Jc0xlYWRlcikgewogICAgICAgICAgICAgYXV0byBu
ZXdCbG9jayA9IHN0ZDo6bWFrZV91bmlxdWU8Qnl0ZWNvZGVCYXNpY0Jsb2NrPihieXRlY29kZU9m
ZnNldCwgb3Bjb2RlTGVuZ3RoKTsKICAgICAgICAgICAgIGN1cnJlbnQgPSBuZXdCbG9jay5nZXQo
KTsKLSAgICAgICAgICAgIGJhc2ljQmxvY2tzLmFwcGVuZChXVEZNb3ZlKG5ld0Jsb2NrKSk7Cisg
ICAgICAgICAgICBhcHBlbmRCbG9jayhXVEZNb3ZlKG5ld0Jsb2NrKSk7CiAgICAgICAgICAgICBj
cmVhdGVkQmxvY2sgPSB0cnVlOwogICAgICAgICAgICAgbmV4dEluc3RydWN0aW9uSXNMZWFkZXIg
PSBmYWxzZTsKICAgICAgICAgICAgIGJ5dGVjb2RlT2Zmc2V0ICs9IG9wY29kZUxlbmd0aDsKQEAg
LTE2OSw4ICsxNzYsNyBAQCB2b2lkIGNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzKENvZGVCbG9j
ayogY29kZUJsb2NrLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dAogCiAgICAgICAgIGJvb2wg
ZmFsbHNUaHJvdWdoID0gdHJ1ZTsgCiAgICAgICAgIGZvciAodW5zaWduZWQgYnl0ZWNvZGVPZmZz
ZXQgPSBibG9jay0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKTsgYnl0ZWNvZGVPZmZzZXQgPCBibG9j
ay0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKSArIGJsb2NrLT50b3RhbEJ5dGVjb2RlTGVuZ3RoKCk7
KSB7Ci0gICAgICAgICAgICBjb25zdCBJbnN0cnVjdGlvbiYgY3VycmVudEluc3RydWN0aW9uID0g
aW5zdHJ1Y3Rpb25zQmVnaW5bYnl0ZWNvZGVPZmZzZXRdOwotICAgICAgICAgICAgT3Bjb2RlSUQg
b3Bjb2RlSUQgPSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoY3VycmVudEluc3RydWN0aW9uLnUu
b3Bjb2RlKTsKKyAgICAgICAgICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0ZXItPmdl
dE9wY29kZUlEKGluc3RydWN0aW9uc0JlZ2luW2J5dGVjb2RlT2Zmc2V0XSk7CiAgICAgICAgICAg
ICB1bnNpZ25lZCBvcGNvZGVMZW5ndGggPSBvcGNvZGVMZW5ndGhzW29wY29kZUlEXTsKICAgICAg
ICAgICAgIC8vIElmIHdlIGZvdW5kIGEgdGVybWluYWwgYnl0ZWNvZGUsIGxpbmsgdG8gdGhlIGV4
aXQgYmxvY2suCiAgICAgICAgICAgICBpZiAoaXNUZXJtaW5hbChvcGNvZGVJRCkpIHsKQEAgLTE4
NSw3ICsxOTEsNyBAQCB2b2lkIGNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzKENvZGVCbG9jayog
Y29kZUJsb2NrLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dAogICAgICAgICAgICAgLy8gYmxv
Y2sgYmVjYXVzZSB0aGUgZmluYWxseSBibG9jayB3aWxsIGNyZWF0ZSBpdHMgb3duIGNhdGNoLCB3
aGljaCB3aWxsIGdlbmVyYXRlIGEgSGFuZGxlckluZm8uCiAgICAgICAgICAgICBpZiAoaXNUaHJv
dyhvcGNvZGVJRCkpIHsKICAgICAgICAgICAgICAgICBBU1NFUlQoYnl0ZWNvZGVPZmZzZXQgKyBv
cGNvZGVMZW5ndGggPT0gYmxvY2stPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCkgKyBibG9jay0+dG90
YWxCeXRlY29kZUxlbmd0aCgpKTsKLSAgICAgICAgICAgICAgICBIYW5kbGVySW5mbyogaGFuZGxl
ciA9IGNvZGVCbG9jay0+aGFuZGxlckZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KTsK
KyAgICAgICAgICAgICAgICBhdXRvKiBoYW5kbGVyID0gY29kZUJsb2NrLT5oYW5kbGVyRm9yQnl0
ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpOwogICAgICAgICAgICAgICAgIGZhbGxzVGhyb3Vn
aCA9IGZhbHNlOwogICAgICAgICAgICAgICAgIGlmICghaGFuZGxlcikgewogICAgICAgICAgICAg
ICAgICAgICBsaW5rQmxvY2tzKGJsb2NrLCBleGl0LmdldCgpKTsKQEAgLTIwNSw3ICsyMTEsNyBA
QCB2b2lkIGNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzKENvZGVCbG9jayogY29kZUJsb2NrLCBW
ZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dAogICAgICAgICAgICAgaWYgKGlzQnJhbmNoKG9wY29k
ZUlEKSkgewogICAgICAgICAgICAgICAgIEFTU0VSVChieXRlY29kZU9mZnNldCArIG9wY29kZUxl
bmd0aCA9PSBibG9jay0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKSArIGJsb2NrLT50b3RhbEJ5dGVj
b2RlTGVuZ3RoKCkpOwogICAgICAgICAgICAgICAgIFZlY3Rvcjx1bnNpZ25lZCwgMT4gYnl0ZWNv
ZGVPZmZzZXRzSnVtcGVkVG87Ci0gICAgICAgICAgICAgICAgZmluZEp1bXBUYXJnZXRzRm9yQnl0
ZWNvZGVPZmZzZXQoY29kZUJsb2NrLCBieXRlY29kZU9mZnNldCwgYnl0ZWNvZGVPZmZzZXRzSnVt
cGVkVG8pOworICAgICAgICAgICAgICAgIGZpbmRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0
KGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb25zQmVnaW4sIGJ5dGVjb2RlT2Zmc2V0LCBieXRlY29kZU9m
ZnNldHNKdW1wZWRUbyk7CiAKICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgYmFzaWNCbG9ja3Muc2l6ZSgpOyBpKyspIHsKICAgICAgICAgICAgICAgICAgICAgQnl0ZWNv
ZGVCYXNpY0Jsb2NrKiBvdGhlckJsb2NrID0gYmFzaWNCbG9ja3NbaV0uZ2V0KCk7CkBAIC0yMjks
MTAgKzIzNSwyMCBAQCB2b2lkIGNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzKENvZGVCbG9jayog
Y29kZUJsb2NrLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dAogICAgICAgICB9CiAgICAgfQog
Ci0gICAgYmFzaWNCbG9ja3MuYXBwZW5kKFdURk1vdmUoZXhpdCkpOworICAgIGFwcGVuZEJsb2Nr
KFdURk1vdmUoZXhpdCkpOwogICAgIAogICAgIGZvciAoYXV0byYgYmFzaWNCbG9jayA6IGJhc2lj
QmxvY2tzKQogICAgICAgICBiYXNpY0Jsb2NrLT5zaHJpbmtUb0ZpdCgpOwogfQogCit2b2lkIEJ5
dGVjb2RlQmFzaWNCbG9jazo6Y29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MoQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgaW5zdHJ1
Y3Rpb25Db3VudCwgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYg
YmFzaWNCbG9ja3MpCit7CisgICAgY29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3NJbnRlcm5hbChj
b2RlQmxvY2ssIGluc3RydWN0aW9uc0JlZ2luLCBpbnN0cnVjdGlvbkNvdW50LCBiYXNpY0Jsb2Nr
cyk7Cit9CisKK3ZvaWQgQnl0ZWNvZGVCYXNpY0Jsb2NrOjpjb21wdXRlQnl0ZWNvZGVCYXNpY0Js
b2NrcyhVbmxpbmtlZENvZGVCbG9jayogY29kZUJsb2NrLCBVbmxpbmtlZEluc3RydWN0aW9uKiBp
bnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCwgVmVjdG9yPHN0ZDo6
dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9ja3MpCit7CisgICAgQnl0
ZWNvZGVCYXNpY0Jsb2NrOjpjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2Nrc0ludGVybmFsKGNvZGVC
bG9jaywgaW5zdHJ1Y3Rpb25zQmVnaW4sIGluc3RydWN0aW9uQ291bnQsIGJhc2ljQmxvY2tzKTsK
K30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmgKaW5kZXggYmQ3ZDNhZTliYTM0M2UxYjA3MTc5
ZTk4ZjFlZTg5ZGE2NWJhN2UyMC4uNjlkNzUyZjFmNjhjNzVkNGY4Mzc3ZmNjNWE0Y2Q1YWY1NzA3
MDhhZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
QmFzaWNCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZUJhc2ljQmxvY2suaApAQCAtMzUsNiArMzUsOSBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNz
IENvZGVCbG9jazsKK2NsYXNzIFVubGlua2VkQ29kZUJsb2NrOworY2xhc3MgSW5zdHJ1Y3Rpb247
CitjbGFzcyBVbmxpbmtlZEluc3RydWN0aW9uOwogCiBjbGFzcyBCeXRlY29kZUJhc2ljQmxvY2sg
ewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtNTYsMjIgKzU5LDMzIEBAIGNsYXNz
IEJ5dGVjb2RlQmFzaWNCbG9jayB7CiAgICAgVmVjdG9yPEJ5dGVjb2RlQmFzaWNCbG9jayo+JiBz
dWNjZXNzb3JzKCkgeyByZXR1cm4gbV9zdWNjZXNzb3JzOyB9CiAgICAgdm9pZCBhZGRTdWNjZXNz
b3IoQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaykgeyBtX3N1Y2Nlc3NvcnMuYXBwZW5kKGJsb2Nr
KTsgfQogCisgICAgVmVjdG9yPEJ5dGVjb2RlQmFzaWNCbG9jayo+JiBwcmVkZWNlc3NvcnMoKSB7
IHJldHVybiBtX3ByZWRlY2Vzc29yczsgfQorICAgIHZvaWQgYWRkUHJlZGVjZXNzb3IoQnl0ZWNv
ZGVCYXNpY0Jsb2NrKiBibG9jaykgeyBtX3ByZWRlY2Vzc29ycy5hcHBlbmQoYmxvY2spOyB9CisK
ICAgICBGYXN0Qml0VmVjdG9yJiBpbigpIHsgcmV0dXJuIG1faW47IH0KICAgICBGYXN0Qml0VmVj
dG9yJiBvdXQoKSB7IHJldHVybiBtX291dDsgfQogCisgICAgdW5zaWduZWQgaW5kZXgoKSBjb25z
dCB7IHJldHVybiBtX2luZGV4OyB9CisKKyAgICBzdGF0aWMgdm9pZCBjb21wdXRlQnl0ZWNvZGVC
YXNpY0Jsb2NrcyhDb2RlQmxvY2sqLCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVu
c2lnbmVkIGluc3RydWN0aW9uQ291bnQsIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVC
YXNpY0Jsb2NrPj4mKTsKKyAgICBzdGF0aWMgdm9pZCBjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2Nr
cyhVbmxpbmtlZENvZGVCbG9jayosIFVubGlua2VkSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0Jl
Z2luLCB1bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50LCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5
dGVjb2RlQmFzaWNCbG9jaz4+Jik7CisKIHByaXZhdGU6CisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
QmxvY2ssIHR5cGVuYW1lIEluc3RydWN0aW9uPiBzdGF0aWMgdm9pZCBjb21wdXRlQnl0ZWNvZGVC
YXNpY0Jsb2Nrc0ludGVybmFsKEJsb2NrKiBjb2RlQmxvY2ssIEluc3RydWN0aW9uKiBpbnN0cnVj
dGlvbnNCZWdpbiwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCwgVmVjdG9yPHN0ZDo6dW5pcXVl
X3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9ja3MpOworCisKICAgICB1bnNpZ25l
ZCBtX2xlYWRlckJ5dGVjb2RlT2Zmc2V0OwogICAgIHVuc2lnbmVkIG1fdG90YWxCeXRlY29kZUxl
bmd0aDsKKyAgICB1bnNpZ25lZCBtX2luZGV4OwogCiAgICAgVmVjdG9yPHVuc2lnbmVkPiBtX2J5
dGVjb2RlT2Zmc2V0czsKICAgICBWZWN0b3I8Qnl0ZWNvZGVCYXNpY0Jsb2NrKj4gbV9zdWNjZXNz
b3JzOworICAgIFZlY3RvcjxCeXRlY29kZUJhc2ljQmxvY2sqPiBtX3ByZWRlY2Vzc29yczsKIAog
ICAgIEZhc3RCaXRWZWN0b3IgbV9pbjsKICAgICBGYXN0Qml0VmVjdG9yIG1fb3V0OwogfTsKIAot
dm9pZCBjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2NrcyhDb2RlQmxvY2sqLCBWZWN0b3I8c3RkOjp1
bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+Jik7Ci0KIGlubGluZSBCeXRlY29kZUJhc2lj
QmxvY2s6OkJ5dGVjb2RlQmFzaWNCbG9jayh1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgbGVuZ3Ro
KQogICAgIDogbV9sZWFkZXJCeXRlY29kZU9mZnNldChzdGFydCkKICAgICAsIG1fdG90YWxCeXRl
Y29kZUxlbmd0aChsZW5ndGgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43
MzIwODk1YTU2YzliZDAxOWY5OWEwNDc4YWRjZGRkMzlkM2E4MWUyCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0
aW9uLmNwcApAQCAtMCwwICsxLDQ5MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBZdXN1
a2UgU3V6dWtpIDx5dXN1a2Uuc3V6dWtpQHNzbGFiLmljcy5rZWlvLmFjLmpwPgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRp
b24uaCIKKworI2luY2x1ZGUgIkJ5dGVjb2RlSW5zZXJ0aW9uU2V0LmgiCisjaW5jbHVkZSAiQnl0
ZWNvZGVVc2VEZWYuaCIKKyNpbmNsdWRlICJJZGVudGlmaWVySW5saW5lcy5oIgorI2luY2x1ZGUg
IkludGVycHJldGVyLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRl
ICJTdHJvbmdJbmxpbmVzLmgiCisjaW5jbHVkZSAiVW5saW5rZWRDb2RlQmxvY2suaCIKKyNpbmNs
dWRlIDx3dGYvT3B0aW9uYWwuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK3N0YXRpYyBib29sIGlz
VmFsaWRSZWdpc3RlckZvckxpdmVuZXNzKGludCBvcGVyYW5kKQoreworICAgIFZpcnR1YWxSZWdp
c3RlciB2aXJ0dWFsUmVnKG9wZXJhbmQpOworICAgIGlmICh2aXJ0dWFsUmVnLmlzQ29uc3RhbnQo
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiB2aXJ0dWFsUmVnLmlzTG9jYWwo
KTsKK30KKworY2xhc3MgQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24geworcHVibGljOgorICAg
IEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uKFVubGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IFVubGlua2VkQ29kZUJsb2NrOjpVbnBhY2tlZEluc3RydWN0aW9ucyYgaW5zdHJ1Y3Rpb25zLCBT
eW1ib2xUYWJsZSogZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZSwgaW50IGdlbmVyYXRvckZyYW1l
U3ltYm9sVGFibGVJbmRleCkKKyAgICAgICAgOiBtX2dyYXBoKGNvZGVCbG9jaywgaW5zdHJ1Y3Rp
b25zKQorICAgICAgICAsIG1faW5zZXJ0aW9uU2V0KG1fZ3JhcGgpCisgICAgICAgICwgbV9nZW5l
cmF0b3JGcmFtZVN5bWJvbFRhYmxlKCpjb2RlQmxvY2stPnZtKCksIGdlbmVyYXRvckZyYW1lU3lt
Ym9sVGFibGUpCisgICAgICAgICwgbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlSW5kZXgoZ2Vu
ZXJhdG9yRnJhbWVTeW1ib2xUYWJsZUluZGV4KQorICAgIHsKKyAgICB9CisKKyAgICBzdHJ1Y3Qg
U3RvcmFnZSB7CisgICAgICAgIElkZW50aWZpZXIgaWRlbnRpZmllcjsKKyAgICAgICAgdW5zaWdu
ZWQgaWRlbnRpZmllckluZGV4OworICAgICAgICBTY29wZU9mZnNldCBzY29wZU9mZnNldDsKKyAg
ICB9OworCisgICAgU3RvcmFnZSBzdG9yYWdlRm9yR2VuZXJhdG9yTG9jYWwodW5zaWduZWQgaW5k
ZXgpCisgICAgeworICAgICAgICAvLyBGSVhNRTogU3VwZXIgbmFpdmUgaW1wbGVtZW50YXRpb24u
IFdlIHNob3VsZCByZWNvbnNpZGVyIHRoZSBpbmRleGVkIGdlbmVyYXRvciBsb2NhbHMgaW4gdGhl
IHNjb3BlLgorICAgICAgICBpZiAobV9zdG9yYWdlcy5zaXplKCkgPD0gaW5kZXgpCisgICAgICAg
ICAgICBtX3N0b3JhZ2VzLnJlc2l6ZShpbmRleCArIDEpOworICAgICAgICBpZiAoT3B0aW9uYWw8
U3RvcmFnZT4gc3RvcmFnZSA9IG1fc3RvcmFnZXNbaW5kZXhdKQorICAgICAgICAgICAgcmV0dXJu
ICpzdG9yYWdlOworCisgICAgICAgIFVubGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBtX2dy
YXBoLmNvZGVCbG9jaygpOworICAgICAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIgPSBJZGVudGlm
aWVyOjpmcm9tVWlkKFByaXZhdGVOYW1lKCkpOworICAgICAgICB1bnNpZ25lZCBpZGVudGlmaWVy
SW5kZXggPSBjb2RlQmxvY2stPm51bWJlck9mSWRlbnRpZmllcnMoKTsKKyAgICAgICAgY29kZUJs
b2NrLT5hZGRJZGVudGlmaWVyKGlkZW50aWZpZXIpOworICAgICAgICBTY29wZU9mZnNldCBzY29w
ZU9mZnNldCA9IG1fZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZS0+dGFrZU5leHRTY29wZU9mZnNl
dChOb0xvY2tpbmdOZWNlc3NhcnkpOworICAgICAgICBtX2dlbmVyYXRvckZyYW1lU3ltYm9sVGFi
bGUtPnNldChOb0xvY2tpbmdOZWNlc3NhcnksIGlkZW50aWZpZXIuaW1wbCgpLCBTeW1ib2xUYWJs
ZUVudHJ5KFZhck9mZnNldChzY29wZU9mZnNldCkpKTsKKworICAgICAgICBTdG9yYWdlIHN0b3Jh
Z2UgPSB7CisgICAgICAgICAgICBpZGVudGlmaWVyLAorICAgICAgICAgICAgaWRlbnRpZmllcklu
ZGV4LAorICAgICAgICAgICAgc2NvcGVPZmZzZXQKKyAgICAgICAgfTsKKyAgICAgICAgbV9zdG9y
YWdlc1tpbmRleF0gPSBzdG9yYWdlOworICAgICAgICByZXR1cm4gc3RvcmFnZTsKKyAgICB9CisK
KyAgICBzdHJ1Y3QgR2VuZXJhdG9yUG9pbnRzIHsKKyAgICAgICAgc2l6ZV90IHNhdmVQb2ludDsK
KyAgICAgICAgc2l6ZV90IG1lcmdlUG9pbnQ7CisgICAgICAgIHNpemVfdCByZXN1bWVQb2ludDsK
KyAgICAgICAgRmFzdEJpdFZlY3RvciBsaXZlbmVzczsKKyAgICAgICAgRmFzdEJpdFZlY3RvciBj
aGFuZ2VkOworICAgIH07CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgorICAgIHZv
aWQgY29tcHV0ZUdlbmVyYXRvckRlZnNGb3JCeXRlY29kZU9mZnNldChVbmxpbmtlZENvZGVCbG9j
ayogY29kZUJsb2NrLCBPcGNvZGVJRCBvcGNvZGVJRCwgVW5saW5rZWRJbnN0cnVjdGlvbiogaW5z
dHJ1Y3Rpb24sIEZhc3RCaXRWZWN0b3ImIG91dCwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikKKyAg
ICB7CisgICAgICAgIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoY29kZUJsb2NrLCBvcGNv
ZGVJRCwgaW5zdHJ1Y3Rpb24sIGZ1bmN0b3IpOworCisgICAgICAgIHN3aXRjaCAob3Bjb2RlSUQp
IHsKKyAgICAgICAgY2FzZSBvcF9zYXZlOgorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAg
IGNhc2Ugb3BfcmVzdW1lOiB7CisgICAgICAgICAgICBvdXQuY2xlYXJBbGwoKTsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9y
PgorICAgIHZvaWQgY29tcHV0ZUdlbmVyYXRvclVzZXNGb3JCeXRlY29kZU9mZnNldChVbmxpbmtl
ZENvZGVCbG9jayogY29kZUJsb2NrLCBPcGNvZGVJRCBvcGNvZGVJRCwgVW5saW5rZWRJbnN0cnVj
dGlvbiogaW5zdHJ1Y3Rpb24sIEZhc3RCaXRWZWN0b3ImLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9y
KQorICAgIHsKKyAgICAgICAgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldChjb2RlQmxvY2ss
IG9wY29kZUlELCBpbnN0cnVjdGlvbiwgZnVuY3Rvcik7CisKKyAgICAgICAgc3dpdGNoIChvcGNv
ZGVJRCkgeworICAgICAgICBjYXNlIG9wX3NhdmU6CisgICAgICAgIGNhc2Ugb3BfcmVzdW1lOiB7
CisgICAgICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBp
bnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAg
IH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFVzZUZ1bmN0b3IsIHR5cGVuYW1lIERlZkZ1bmN0
b3I+CisgICAgdm9pZCBzdGVwT3Zlckluc3RydWN0aW9uKEJ5dGVjb2RlR3JhcGg8VW5saW5rZWRD
b2RlQmxvY2s+JiBncmFwaCwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIEZhc3RCaXRWZWN0b3Im
IG91dCwgY29uc3QgVXNlRnVuY3RvciYgdXNlLCBjb25zdCBEZWZGdW5jdG9yJiBkZWYpCisgICAg
eworICAgICAgICBhdXRvJiBpbnN0cnVjdGlvbnMgPSBncmFwaC5pbnN0cnVjdGlvbnMoKTsKKyAg
ICAgICAgVW5saW5rZWRJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSAmaW5zdHJ1Y3Rpb25zW2J5
dGVjb2RlT2Zmc2V0XTsKKyAgICAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnN0cnVjdGlvbi0+
dS5vcGNvZGU7CisgICAgICAgIFVubGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBncmFwaC5j
b2RlQmxvY2soKTsKKworICAgICAgICBjb21wdXRlR2VuZXJhdG9yRGVmc0ZvckJ5dGVjb2RlT2Zm
c2V0KAorICAgICAgICAgICAgY29kZUJsb2NrLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb24sIG91dCwK
KyAgICAgICAgICAgIFsmXSAoVW5saW5rZWRDb2RlQmxvY2sqLCBVbmxpbmtlZEluc3RydWN0aW9u
KiwgT3Bjb2RlSUQsIGludCBvcGVyYW5kKSB7CisgICAgICAgICAgICAgICAgaWYgKGlzVmFsaWRS
ZWdpc3RlckZvckxpdmVuZXNzKG9wZXJhbmQpKQorICAgICAgICAgICAgICAgICAgICBkZWYoVmly
dHVhbFJlZ2lzdGVyKG9wZXJhbmQpLnRvTG9jYWwoKSk7CisgICAgICAgICAgICB9KTsKKworICAg
ICAgICBjb21wdXRlR2VuZXJhdG9yVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAorICAgICAgICAgICAg
Y29kZUJsb2NrLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb24sIG91dCwKKyAgICAgICAgICAgIFsmXSAo
VW5saW5rZWRDb2RlQmxvY2sqLCBVbmxpbmtlZEluc3RydWN0aW9uKiwgT3Bjb2RlSUQsIGludCBv
cGVyYW5kKSB7CisgICAgICAgICAgICAgICAgaWYgKGlzVmFsaWRSZWdpc3RlckZvckxpdmVuZXNz
KG9wZXJhbmQpKQorICAgICAgICAgICAgICAgICAgICB1c2UoVmlydHVhbFJlZ2lzdGVyKG9wZXJh
bmQpLnRvTG9jYWwoKSk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAvLyBJZiB3ZSBoYXZl
IGFuIGV4Y2VwdGlvbiBoYW5kbGVyLCB3ZSB3YW50IHRoZSBsaXZlLWluIHZhcmlhYmxlcyBvZiB0
aGUKKyAgICAgICAgLy8gZXhjZXB0aW9uIGhhbmRsZXIgYmxvY2sgdG8gYmUgaW5jbHVkZWQgaW4g
dGhlIGxpdmUtaW4gb2YgdGhpcyBwYXJ0aWN1bGFyIGJ5dGVjb2RlLgorICAgICAgICBpZiAoVW5s
aW5rZWRIYW5kbGVySW5mbyogaGFuZGxlciA9IGNvZGVCbG9jay0+aGFuZGxlckZvckJ5dGVjb2Rl
T2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KSkgeworICAgICAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2Nr
KiBoYW5kbGVyQmxvY2sgPSBncmFwaC5maW5kQmFzaWNCbG9ja1dpdGhMZWFkZXJPZmZzZXQoaGFu
ZGxlci0+dGFyZ2V0KTsKKyAgICAgICAgICAgIEFTU0VSVChoYW5kbGVyQmxvY2spOworICAgICAg
ICAgICAgaGFuZGxlckJsb2NrLT5pbigpLmZvckVhY2hTZXRCaXQodXNlKTsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIHZvaWQgY29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCeXRlY29kZU9mZnNldChC
eXRlY29kZUdyYXBoPFVubGlua2VkQ29kZUJsb2NrPiYgZ3JhcGgsIEJ5dGVjb2RlQmFzaWNCbG9j
ayogYmxvY2ssIHVuc2lnbmVkIHRhcmdldE9mZnNldCwgRmFzdEJpdFZlY3RvciYgcmVzdWx0KQor
ICAgIHsKKyAgICAgICAgQVNTRVJUKCFibG9jay0+aXNFeGl0QmxvY2soKSk7CisgICAgICAgIEFT
U0VSVCghYmxvY2stPmlzRW50cnlCbG9jaygpKTsKKworICAgICAgICBGYXN0Qml0VmVjdG9yIG91
dCA9IGJsb2NrLT5vdXQoKTsKKworICAgICAgICBmb3IgKGludCBpID0gYmxvY2stPmJ5dGVjb2Rl
T2Zmc2V0cygpLnNpemUoKSAtIDE7IGkgPj0gMDsgaS0tKSB7CisgICAgICAgICAgICB1bnNpZ25l
ZCBieXRlY29kZU9mZnNldCA9IGJsb2NrLT5ieXRlY29kZU9mZnNldHMoKVtpXTsKKyAgICAgICAg
ICAgIGlmICh0YXJnZXRPZmZzZXQgPiBieXRlY29kZU9mZnNldCkKKyAgICAgICAgICAgICAgICBi
cmVhazsKKworICAgICAgICAgICAgc3RlcE92ZXJJbnN0cnVjdGlvbigKKyAgICAgICAgICAgICAg
ICBncmFwaCwgYnl0ZWNvZGVPZmZzZXQsIG91dCwKKyAgICAgICAgICAgICAgICBbJl0gKHVuc2ln
bmVkIGJpdEluZGV4KSB7CisgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIHVzZSBm
dW5jdG9yLCBzbyB3ZSBzZXQgdGhlIGJpdC4KKyAgICAgICAgICAgICAgICAgICAgb3V0LnNldChi
aXRJbmRleCk7CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICBbJl0gKHVuc2ln
bmVkIGJpdEluZGV4KSB7CisgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIGRlZiBm
dW5jdG9yLCBzbyB3ZSBjbGVhciB0aGUgYml0LgorICAgICAgICAgICAgICAgICAgICBvdXQuY2xl
YXIoYml0SW5kZXgpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICB9CisKKyAgICAgICAg
cmVzdWx0LnNldChvdXQpOworICAgIH0KKworICAgIHZvaWQgY29tcHV0ZUxvY2FsTGl2ZW5lc3NG
b3JCbG9jayhCeXRlY29kZUdyYXBoPFVubGlua2VkQ29kZUJsb2NrPiYgZ3JhcGgsIEJ5dGVjb2Rl
QmFzaWNCbG9jayogYmxvY2spCisgICAgeworICAgICAgICBpZiAoYmxvY2stPmlzRXhpdEJsb2Nr
KCkgfHwgYmxvY2stPmlzRW50cnlCbG9jaygpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICBjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJ5dGVjb2RlT2Zmc2V0KGdyYXBoLCBibG9jaywgYmxv
Y2stPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCksIGJsb2NrLT5pbigpKTsKKyAgICB9CisKKyAgICBG
YXN0Qml0VmVjdG9yIGdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQodW5zaWduZWQgYnl0
ZWNvZGVPZmZzZXQpCisgICAgeworICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrID0g
bV9ncmFwaC5maW5kQmFzaWNCbG9ja0ZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KTsK
KyAgICAgICAgQVNTRVJUKGJsb2NrKTsKKyAgICAgICAgQVNTRVJUKCFibG9jay0+aXNFbnRyeUJs
b2NrKCkpOworICAgICAgICBBU1NFUlQoIWJsb2NrLT5pc0V4aXRCbG9jaygpKTsKKyAgICAgICAg
RmFzdEJpdFZlY3RvciBvdXQ7CisgICAgICAgIG91dC5yZXNpemUoYmxvY2stPm91dCgpLm51bUJp
dHMoKSk7CisgICAgICAgIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQnl0ZWNvZGVPZmZzZXQobV9n
cmFwaCwgYmxvY2ssIGJ5dGVjb2RlT2Zmc2V0LCBvdXQpOworICAgICAgICByZXR1cm4gb3V0Owor
ICAgIH0KKworICAgIHZvaWQgcnVuTGl2ZW5lc3NBbmFseXNpcygpCisgICAgeworICAgICAgICAv
LyBQZXJmb3JtIG1vZGlmaWVkIGxpdmVuZXNzIGFuYWx5c2lzIHRvIGRldGVybWluZSB3aGljaCBs
b2NhbHMgYXJlIGxpdmUgYW5kIHNob3VsZCBiZSByZXN1bWVkIHdoZW4gZXhlY3V0aW5nIG9wX3Jl
c3VtZS4KKworICAgICAgICBVbmxpbmtlZENvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2sgPSBt
X2dyYXBoLmNvZGVCbG9jaygpOworICAgICAgICB1bnNpZ25lZCBudW1iZXJPZlZhcmlhYmxlcyA9
IHVubGlua2VkQ29kZUJsb2NrLT5tX251bUNhbGxlZUxvY2FsczsKKyAgICAgICAgZm9yIChzdGQ6
OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiYgYmxvY2sgOiBtX2dyYXBoLmJhc2ljQmxv
Y2tzKCkpIHsKKyAgICAgICAgICAgIGJsb2NrLT5pbigpLnJlc2l6ZShudW1iZXJPZlZhcmlhYmxl
cyk7CisgICAgICAgICAgICBibG9jay0+b3V0KCkucmVzaXplKG51bWJlck9mVmFyaWFibGVzKTsK
KyAgICAgICAgICAgIGJsb2NrLT5pbigpLmNsZWFyQWxsKCk7CisgICAgICAgICAgICBibG9jay0+
b3V0KCkuY2xlYXJBbGwoKTsKKyAgICAgICAgfQorCisgICAgICAgIGJvb2wgY2hhbmdlZDsKKyAg
ICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBsYXN0QmxvY2sgPSBtX2dyYXBoLmJhc2ljQmxvY2tz
KCkubGFzdCgpLmdldCgpOworICAgICAgICBsYXN0QmxvY2stPmluKCkuY2xlYXJBbGwoKTsKKyAg
ICAgICAgbGFzdEJsb2NrLT5vdXQoKS5jbGVhckFsbCgpOworICAgICAgICBGYXN0Qml0VmVjdG9y
IG5ld091dDsKKyAgICAgICAgbmV3T3V0LnJlc2l6ZShsYXN0QmxvY2stPm91dCgpLm51bUJpdHMo
KSk7CisgICAgICAgIGRvIHsKKyAgICAgICAgICAgIGNoYW5nZWQgPSBmYWxzZTsKKyAgICAgICAg
ICAgIGZvciAoc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4mIGJsb2NrIDogbV9n
cmFwaC5iYXNpY0Jsb2Nrc0luUmV2ZXJzZU9yZGVyKCkpIHsKKyAgICAgICAgICAgICAgICBuZXdP
dXQuY2xlYXJBbGwoKTsKKyAgICAgICAgICAgICAgICBmb3IgKEJ5dGVjb2RlQmFzaWNCbG9jayog
c3VjY2Vzc29yIDogYmxvY2stPnN1Y2Nlc3NvcnMoKSkKKyAgICAgICAgICAgICAgICAgICAgbmV3
T3V0Lm1lcmdlKHN1Y2Nlc3Nvci0+aW4oKSk7CisgICAgICAgICAgICAgICAgYm9vbCBvdXREaWRD
aGFuZ2UgPSBibG9jay0+b3V0KCkuc2V0QW5kQ2hlY2sobmV3T3V0KTsKKyAgICAgICAgICAgICAg
ICBjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJsb2NrKG1fZ3JhcGgsIGJsb2NrLmdldCgpKTsKKyAg
ICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG91dERpZENoYW5nZTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfSB3aGlsZSAoY2hhbmdlZCk7CisKKyAgICAgICAgZm9yIChHZW5lcmF0b3JQb2ludHMm
IHBvaW50cyA6IG1feWllbGRzKQorICAgICAgICAgICAgcG9pbnRzLmxpdmVuZXNzID0gZ2V0TGl2
ZW5lc3NJbmZvQXRCeXRlY29kZU9mZnNldChwb2ludHMubWVyZ2VQb2ludCk7CisgICAgfQorCisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgRGVmRnVuY3Rvcj4KKyAgICB2b2lkIHN0ZXBPdmVySW5zdHJ1
Y3Rpb25Gb3JOb25HZW5lcmF0b3JEZWZzKEJ5dGVjb2RlR3JhcGg8VW5saW5rZWRDb2RlQmxvY2s+
JiBncmFwaCwgQnl0ZWNvZGVCYXNpY0Jsb2NrKiwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIEZh
c3RCaXRWZWN0b3ImIGluLCBjb25zdCBEZWZGdW5jdG9yJiBkZWYpCisgICAgeworICAgICAgICBh
dXRvJiBpbnN0cnVjdGlvbnMgPSBncmFwaC5pbnN0cnVjdGlvbnMoKTsKKyAgICAgICAgVW5saW5r
ZWRJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSAmaW5zdHJ1Y3Rpb25zW2J5dGVjb2RlT2Zmc2V0
XTsKKyAgICAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnN0cnVjdGlvbi0+dS5vcGNvZGU7Cisg
ICAgICAgIFVubGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBncmFwaC5jb2RlQmxvY2soKTsK
KworICAgICAgICAvLyBHZW5lcmF0b3IgZGVmcyBmb3IgdGhlIHJlc3VtZSBibG9ja3Mgc2hvdWxk
IGJlIGNvbnNpZGVyZWQgbnVsbC4KKyAgICAgICAgLy8gV2hpbGUgd2UgY2xlYXIgdGhlIGRlZnMg
aW4gdGhlIHJlc3VtZSBibG9jaywgY291bnQgdGhlIGRlZnMgaW4gdGhlIHNhdmUgYmxvY2sgZm9y
IHRoZSBleGNlcHRpb24gaGFuZGxlciBibG9jay4KKyAgICAgICAgaWYgKG9wY29kZUlEID09IG9w
X3Jlc3VtZSkgeworICAgICAgICAgICAgaW4uY2xlYXJBbGwoKTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQorCisgICAgICAgIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoY29k
ZUJsb2NrLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb24sIFsmXSAoVW5saW5rZWRDb2RlQmxvY2sqLCBV
bmxpbmtlZEluc3RydWN0aW9uKiwgT3Bjb2RlSUQsIGludCBvcGVyYW5kKSB7CisgICAgICAgICAg
ICBpZiAoaXNWYWxpZFJlZ2lzdGVyRm9yTGl2ZW5lc3Mob3BlcmFuZCkpCisgICAgICAgICAgICAg
ICAgZGVmKFZpcnR1YWxSZWdpc3RlcihvcGVyYW5kKS50b0xvY2FsKCkpOworICAgICAgICB9KTsK
KyAgICB9CisKKyAgICB2b2lkIGNvbXB1dGVMb2NhbE5vbkdlbmVyYXRvckRlZnNGb3JCeXRlY29k
ZU9mZnNldChCeXRlY29kZUdyYXBoPFVubGlua2VkQ29kZUJsb2NrPiYgZ3JhcGgsIEJ5dGVjb2Rl
QmFzaWNCbG9jayogYmxvY2ssIHVuc2lnbmVkIHRhcmdldE9mZnNldCwgRmFzdEJpdFZlY3RvciYg
cmVzdWx0KQorICAgIHsKKyAgICAgICAgQVNTRVJUKCFibG9jay0+aXNFeGl0QmxvY2soKSk7Cisg
ICAgICAgIEFTU0VSVCghYmxvY2stPmlzRW50cnlCbG9jaygpKTsKKworICAgICAgICBGYXN0Qml0
VmVjdG9yIGluID0gYmxvY2stPmluKCk7CisKKyAgICAgICAgZm9yICh1bnNpZ25lZCBieXRlY29k
ZU9mZnNldCA6IGJsb2NrLT5ieXRlY29kZU9mZnNldHMoKSkgeworICAgICAgICAgICAgaWYgKHRh
cmdldE9mZnNldCA8PSBieXRlY29kZU9mZnNldCkKKyAgICAgICAgICAgICAgICBicmVhazsKKwor
ICAgICAgICAgICAgc3RlcE92ZXJJbnN0cnVjdGlvbkZvck5vbkdlbmVyYXRvckRlZnMoCisgICAg
ICAgICAgICAgICAgZ3JhcGgsIGJsb2NrLCBieXRlY29kZU9mZnNldCwgaW4sCisgICAgICAgICAg
ICAgICAgWyZdICh1bnNpZ25lZCBiaXRJbmRleCkgeworICAgICAgICAgICAgICAgICAgICAvLyBU
aGlzIGlzIHRoZSBkZWYgZnVuY3Rvciwgc28gd2Ugc2V0IHRoZSBiaXQuCisgICAgICAgICAgICAg
ICAgICAgIGluLnNldChiaXRJbmRleCk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgIH0K
KworICAgICAgICByZXN1bHQuc2V0KGluKTsKKyAgICB9CisKKyAgICB2b2lkIGNvbXB1dGVMb2Nh
bE5vbkdlbmVyYXRvckRlZnNGb3JCbG9jayhCeXRlY29kZUdyYXBoPFVubGlua2VkQ29kZUJsb2Nr
PiYgZ3JhcGgsIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2spCisgICAgeworICAgICAgICBpZiAo
YmxvY2stPmlzRXhpdEJsb2NrKCkgfHwgYmxvY2stPmlzRW50cnlCbG9jaygpKQorICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICBjb21wdXRlTG9jYWxOb25HZW5lcmF0b3JEZWZzRm9yQnl0ZWNv
ZGVPZmZzZXQoZ3JhcGgsIGJsb2NrLCBibG9jay0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKSArIGJs
b2NrLT50b3RhbEJ5dGVjb2RlTGVuZ3RoKCksIGJsb2NrLT5vdXQoKSk7CisgICAgfQorCisgICAg
RmFzdEJpdFZlY3RvciBnZXROb25HZW5lcmF0b3JEZWZzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQodW5z
aWduZWQgYnl0ZWNvZGVPZmZzZXQpCisgICAgeworICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2sq
IGJsb2NrID0gbV9ncmFwaC5maW5kQmFzaWNCbG9ja0ZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2Rl
T2Zmc2V0KTsKKyAgICAgICAgQVNTRVJUKGJsb2NrKTsKKyAgICAgICAgQVNTRVJUKCFibG9jay0+
aXNFbnRyeUJsb2NrKCkpOworICAgICAgICBBU1NFUlQoIWJsb2NrLT5pc0V4aXRCbG9jaygpKTsK
KyAgICAgICAgRmFzdEJpdFZlY3RvciBpbjsKKyAgICAgICAgaW4ucmVzaXplKGJsb2NrLT5pbigp
Lm51bUJpdHMoKSk7CisgICAgICAgIGNvbXB1dGVMb2NhbE5vbkdlbmVyYXRvckRlZnNGb3JCeXRl
Y29kZU9mZnNldChtX2dyYXBoLCBibG9jaywgYnl0ZWNvZGVPZmZzZXQsIGluKTsKKyAgICAgICAg
cmV0dXJuIGluOworICAgIH0KKworICAgIHZvaWQgcnVuTm9uR2VuZXJhdG9yRGVmc0FuYWx5c2lz
KCkKKyAgICB7CisgICAgICAgIC8vIFBlcmZvcm0gZm9yd2FyZCBhbmFseXNpcyB0byBleHRyYWN0
IHdoaWNoIHZhcmlhYmxlcyBuZWVkIHRvIGJlIG5ld2x5IHNhdmVkIHdoZW4gZXhlY3V0aW5nIG9w
X3NhdmUuCisgICAgICAgIC8vIEl0IHJlZHVjZXMgdGhlIGFtb3VudCBvZiB0aGUgc2F2ZWQgdmFy
aWFibGVzLgorICAgICAgICAvLworICAgICAgICAvLyBvcF9yZXN1bWUsIGRlZmluZSByMQorICAg
ICAgICAvLyAuLi4KKyAgICAgICAgLy8gLi4uCisgICAgICAgIC8vIG5vLWp1bXBzICYgbm8gcjEg
ZGVmcy4KKyAgICAgICAgLy8gLi4uCisgICAgICAgIC8vIG9wX3NhdmUgICMgSGVyZSwgaXQgaXMg
bm90IG5lY2Vzc2FyeSB0byBzYXZlIHIxLgorCisgICAgICAgIFVubGlua2VkQ29kZUJsb2NrKiB1
bmxpbmtlZENvZGVCbG9jayA9IG1fZ3JhcGguY29kZUJsb2NrKCk7CisKKyAgICAgICAgLy8gV2Ug
Y29uc2lkZXIgdGhlIHJhbmdlIG9mIHRoZSB0cnkgc3RhdGVtZW50IGFzIHRoZSBwb3NzaWJsZSBw
cmVkZWNlc3NvcnMgZm9yIHRoZSBnaXZlbiBleGNlcHRpb24gaGFuZGxlci4KKyAgICAgICAgVmVj
dG9yPE9wdGlvbmFsPEZhc3RCaXRWZWN0b3I+PiBwb3NzaWJsZVByZWRlY2Vzc29yc0ZvckhhbmRs
ZXJzOworICAgICAgICBwb3NzaWJsZVByZWRlY2Vzc29yc0ZvckhhbmRsZXJzLnJlc2l6ZShtX2dy
YXBoLmJhc2ljQmxvY2tzKCkuc2l6ZSgpKTsKKyAgICAgICAgeworICAgICAgICAgICAgYXV0byYg
aW5zdHJ1Y3Rpb25zID0gbV9ncmFwaC5pbnN0cnVjdGlvbnMoKTsKKyAgICAgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCB1bmxpbmtlZENvZGVCbG9jay0+bnVtYmVyT2ZFeGNlcHRpb25I
YW5kbGVycygpOyArK2kpIHsKKyAgICAgICAgICAgICAgICBhdXRvJiBoYW5kbGVyID0gdW5saW5r
ZWRDb2RlQmxvY2stPmV4Y2VwdGlvbkhhbmRsZXIoaSk7CisKKyAgICAgICAgICAgICAgICBGYXN0
Qml0VmVjdG9yIHByZWRlY2Vzc29yczsKKyAgICAgICAgICAgICAgICBwcmVkZWNlc3NvcnMucmVz
aXplKG1fZ3JhcGguYmFzaWNCbG9ja3MoKS5zaXplKCkpOworICAgICAgICAgICAgICAgIGZvciAo
dW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQgPSBoYW5kbGVyLnN0YXJ0OyBieXRlY29kZU9mZnNldCA8
IGhhbmRsZXIuZW5kOykgeworICAgICAgICAgICAgICAgICAgICBVbmxpbmtlZEluc3RydWN0aW9u
KiBpbnN0cnVjdGlvbiA9ICZpbnN0cnVjdGlvbnNbYnl0ZWNvZGVPZmZzZXRdOworICAgICAgICAg
ICAgICAgICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGluc3RydWN0aW9uLT51Lm9wY29kZTsKKyAg
ICAgICAgICAgICAgICAgICAgdW5zaWduZWQgb3Bjb2RlTGVuZ3RoID0gb3Bjb2RlTGVuZ3Roc1tv
cGNvZGVJRF07CisKKyAgICAgICAgICAgICAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBwb3Nz
aWJsZVByZWRlY2Vzc29yID0gbV9ncmFwaC5maW5kQmFzaWNCbG9ja0ZvckJ5dGVjb2RlT2Zmc2V0
KGJ5dGVjb2RlT2Zmc2V0KTsKKyAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQocG9z
c2libGVQcmVkZWNlc3Nvcik7CisgICAgICAgICAgICAgICAgICAgIHByZWRlY2Vzc29ycy5zZXQo
cG9zc2libGVQcmVkZWNlc3Nvci0+aW5kZXgoKSk7CisKKyAgICAgICAgICAgICAgICAgICAgYnl0
ZWNvZGVPZmZzZXQgKz0gb3Bjb2RlTGVuZ3RoOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGhhbmRsZXJCbG9jayA9IG1fZ3JhcGguZmluZEJh
c2ljQmxvY2tXaXRoTGVhZGVyT2Zmc2V0KGhhbmRsZXIudGFyZ2V0KTsKKyAgICAgICAgICAgICAg
ICBwb3NzaWJsZVByZWRlY2Vzc29yc0ZvckhhbmRsZXJzW2hhbmRsZXJCbG9jay0+aW5kZXgoKV0g
PSBXVEZNb3ZlKHByZWRlY2Vzc29ycyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAg
ICAgICB1bnNpZ25lZCBudW1iZXJPZlZhcmlhYmxlcyA9IHVubGlua2VkQ29kZUJsb2NrLT5tX251
bUNhbGxlZUxvY2FsczsKKyAgICAgICAgZm9yIChzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNp
Y0Jsb2NrPiYgYmxvY2sgOiBtX2dyYXBoLmJhc2ljQmxvY2tzKCkpIHsKKyAgICAgICAgICAgIGJs
b2NrLT5pbigpLnJlc2l6ZShudW1iZXJPZlZhcmlhYmxlcyk7CisgICAgICAgICAgICBibG9jay0+
b3V0KCkucmVzaXplKG51bWJlck9mVmFyaWFibGVzKTsKKyAgICAgICAgICAgIGJsb2NrLT5pbigp
LmNsZWFyQWxsKCk7CisgICAgICAgICAgICBibG9jay0+b3V0KCkuY2xlYXJBbGwoKTsKKyAgICAg
ICAgfQorCisgICAgICAgIGJvb2wgY2hhbmdlZDsKKyAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2Nr
KiBmaXJzdEJsb2NrID0gbV9ncmFwaC5iYXNpY0Jsb2NrcygpLmZpcnN0KCkuZ2V0KCk7CisgICAg
ICAgIEZhc3RCaXRWZWN0b3IgbmV3SW47CisgICAgICAgIG5ld0luLnJlc2l6ZShmaXJzdEJsb2Nr
LT5pbigpLm51bUJpdHMoKSk7CisgICAgICAgIGRvIHsKKyAgICAgICAgICAgIGNoYW5nZWQgPSBm
YWxzZTsKKyAgICAgICAgICAgIGZvciAoc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9j
az4mIGJsb2NrIDogbV9ncmFwaC5iYXNpY0Jsb2NrcygpKSB7CisgICAgICAgICAgICAgICAgbmV3
SW4uY2xlYXJBbGwoKTsKKyAgICAgICAgICAgICAgICBib29sIG1lcmdlQmxvY2sgPSBtX21lcmdl
QmxvY2tzLmdldChibG9jay0+aW5kZXgoKSk7CisgICAgICAgICAgICAgICAgZm9yIChCeXRlY29k
ZUJhc2ljQmxvY2sqIHByZWRlY2Vzc29yIDogYmxvY2stPnByZWRlY2Vzc29ycygpKSB7CisgICAg
ICAgICAgICAgICAgICAgIC8vIE1lcmdlIHRoZSBvdXQgc2V0IG9mIHRoZSBpbmNvbW1pbmcgcHJl
ZGVjZXNzb3JzIHVubGVzcyB0aGUgY3VycmVudCBibG9jayBpcyB0aGUgbWVyZ2UgYmxvY2sgYW5k
IHRoZSBwcmVkZWNlc3NvciBpcyB0aGUgc2F2ZSBibG9jay4KKyAgICAgICAgICAgICAgICAgICAg
Ly8gV2Ugd291bGQgbGlrZSB0byByZWNvcmQgdGhlIG91dCBzZXQgb2YgdGhlIHNhdmUgYmxvY2sg
c2luY2UgdGhpcyBvdXQgc2V0IHdvdWxkIGJlIGxhdGVyIHVzZWQgYXMgdGhlIGRlZnMgZm9yIHRo
ZSBleGNlcHRpb24gaGFuZGxlcnMuCisgICAgICAgICAgICAgICAgICAgIC8vIEJ1dCB3ZSBkb24n
dCB3YW50IHRvIG1lcmdlIHRoZSBkZWZzIGZyb20gdGhlIHNhdmUgYmxvY2sgYXQgdGhlIG1lcmdl
IGJsb2NrLCBzaW5jZSB0aGVzZSBkZWZzIHNob3VsZCBiZSBzYXZlZCBpbiB0aGUgc2F2ZSBibG9j
ayBhbmQKKyAgICAgICAgICAgICAgICAgICAgLy8gbm90IHJlbGF0ZWQgdG8gdGhlIG1lcmdlIGJs
b2NrLgorICAgICAgICAgICAgICAgICAgICBpZiAoIShtZXJnZUJsb2NrICYmIG1fc2F2ZUJsb2Nr
cy5nZXQocHJlZGVjZXNzb3ItPmluZGV4KCkpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIG5l
d0luLm1lcmdlKHByZWRlY2Vzc29yLT5vdXQoKSk7CisgICAgICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAgICAgaWYgKGF1dG8mIG9wdGlvbmFsUHJlZGVjZXNzb3JTZXQgPSBwb3NzaWJsZVBy
ZWRlY2Vzc29yc0ZvckhhbmRsZXJzW2Jsb2NrLT5pbmRleCgpXSkgeworICAgICAgICAgICAgICAg
ICAgICBvcHRpb25hbFByZWRlY2Vzc29yU2V0LT5mb3JFYWNoU2V0Qml0KFsmXSAodW5zaWduZWQg
YmxvY2tJbmRleCkgeworICAgICAgICAgICAgICAgICAgICAgICAgbmV3SW4ubWVyZ2UobV9ncmFw
aC5iYXNpY0Jsb2NrcygpW2Jsb2NrSW5kZXhdLT5vdXQoKSk7CisgICAgICAgICAgICAgICAgICAg
IH0pOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGJvb2wgaW5EaWRDaGFu
Z2UgPSBibG9jay0+aW4oKS5zZXRBbmRDaGVjayhuZXdJbik7CisgICAgICAgICAgICAgICAgY29t
cHV0ZUxvY2FsTm9uR2VuZXJhdG9yRGVmc0ZvckJsb2NrKG1fZ3JhcGgsIGJsb2NrLmdldCgpKTsK
KyAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IGluRGlkQ2hhbmdlOworICAgICAgICAgICAgfQor
ICAgICAgICB9IHdoaWxlIChjaGFuZ2VkKTsKKworICAgICAgICBmb3IgKEdlbmVyYXRvclBvaW50
cyYgcG9pbnRzIDogbV95aWVsZHMpIHsKKyAgICAgICAgICAgIHBvaW50cy5jaGFuZ2VkID0gcG9p
bnRzLmxpdmVuZXNzOworICAgICAgICAgICAgcG9pbnRzLmNoYW5nZWQuZmlsdGVyKGdldE5vbkdl
bmVyYXRvckRlZnNJbmZvQXRCeXRlY29kZU9mZnNldChwb2ludHMuc2F2ZVBvaW50KSk7CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICB2b2lkIHJ1bigpCisgICAgeworICAgICAgICBtX21lcmdlQmxv
Y2tzLnJlc2l6ZShtX2dyYXBoLmJhc2ljQmxvY2tzKCkuc2l6ZSgpKTsKKyAgICAgICAgbV9zYXZl
QmxvY2tzLnJlc2l6ZShtX2dyYXBoLmJhc2ljQmxvY2tzKCkuc2l6ZSgpKTsKKworICAgICAgICBm
b3IgKHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+JiBibG9jayA6IG1fZ3JhcGgu
YmFzaWNCbG9ja3MoKSkgeworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBieXRlY29kZU9mZnNl
dCA6IGJsb2NrLT5ieXRlY29kZU9mZnNldHMoKSkgeworICAgICAgICAgICAgICAgIGNvbnN0IFVu
bGlua2VkSW5zdHJ1Y3Rpb24qIHBjID0gJm1fZ3JhcGguaW5zdHJ1Y3Rpb25zKClbYnl0ZWNvZGVP
ZmZzZXRdOworICAgICAgICAgICAgICAgIHN3aXRjaCAocGMtPnUub3Bjb2RlKSB7CisgICAgICAg
ICAgICAgICAgY2FzZSBvcF9zYXZlOiB7CisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxp
dmVDYWxsZWVMb2NhbHNJbmRleCA9IHBjWzJdLnUuaW5kZXg7CisgICAgICAgICAgICAgICAgICAg
IGludCBvZmZzZXQgPSBwY1szXS51Lm9wZXJhbmQ7CisgICAgICAgICAgICAgICAgICAgIGlmIChs
aXZlQ2FsbGVlTG9jYWxzSW5kZXggPj0gbV95aWVsZHMuc2l6ZSgpKQorICAgICAgICAgICAgICAg
ICAgICAgICAgbV95aWVsZHMucmVzaXplKGxpdmVDYWxsZWVMb2NhbHNJbmRleCArIDEpOworICAg
ICAgICAgICAgICAgICAgICBtX3lpZWxkc1tsaXZlQ2FsbGVlTG9jYWxzSW5kZXhdLnNhdmVQb2lu
dCA9IGJ5dGVjb2RlT2Zmc2V0OworICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBtZXJnZVBv
aW50ID0gYnl0ZWNvZGVPZmZzZXQgKyBvZmZzZXQ7CisgICAgICAgICAgICAgICAgICAgIG1feWll
bGRzW2xpdmVDYWxsZWVMb2NhbHNJbmRleF0ubWVyZ2VQb2ludCA9IG1lcmdlUG9pbnQ7CisgICAg
ICAgICAgICAgICAgICAgIG1fbWVyZ2VCbG9ja3Muc2V0KG1fZ3JhcGguZmluZEJhc2ljQmxvY2tG
b3JCeXRlY29kZU9mZnNldChtZXJnZVBvaW50KS0+aW5kZXgoKSk7CisgICAgICAgICAgICAgICAg
ICAgIG1fc2F2ZUJsb2Nrcy5zZXQoYmxvY2stPmluZGV4KCkpOworICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBjYXNlIG9wX3Jl
c3VtZTogeworICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5k
ZXggPSBwY1syXS51LmluZGV4OworICAgICAgICAgICAgICAgICAgICBpZiAobGl2ZUNhbGxlZUxv
Y2Fsc0luZGV4ID49IG1feWllbGRzLnNpemUoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIG1f
eWllbGRzLnJlc2l6ZShsaXZlQ2FsbGVlTG9jYWxzSW5kZXggKyAxKTsKKyAgICAgICAgICAgICAg
ICAgICAgbV95aWVsZHNbbGl2ZUNhbGxlZUxvY2Fsc0luZGV4XS5yZXN1bWVQb2ludCA9IGJ5dGVj
b2RlT2Zmc2V0OworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBy
dW5MaXZlbmVzc0FuYWx5c2lzKCk7CisKKyAgICAgICAgcnVuTm9uR2VuZXJhdG9yRGVmc0FuYWx5
c2lzKCk7CisKKyAgICAgICAgVW5saW5rZWRDb2RlQmxvY2sqIGNvZGVCbG9jayA9IG1fZ3JhcGgu
Y29kZUJsb2NrKCk7CisgICAgICAgIGZvciAoY29uc3QgR2VuZXJhdG9yUG9pbnRzJiBwb2ludHMg
OiBtX3lpZWxkcykgeworICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHNjb3BlID0gdmlydHVh
bFJlZ2lzdGVyRm9yQXJndW1lbnQoNSk7CisKKyAgICAgICAgICAgIC8vIG9wX3NhdmUuCisgICAg
ICAgICAgICBwb2ludHMuY2hhbmdlZC5mb3JFYWNoU2V0Qml0KFsmXShzaXplX3QgaW5kZXgpIHsK
KyAgICAgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCA9IHZpcnR1YWxSZWdpc3Rl
ckZvckxvY2FsKGluZGV4KTsKKyAgICAgICAgICAgICAgICBTdG9yYWdlIHN0b3JhZ2UgPSBzdG9y
YWdlRm9yR2VuZXJhdG9yTG9jYWwoaW5kZXgpOworCisgICAgICAgICAgICAgICAgbV9pbnNlcnRp
b25TZXQuaW5zZXJ0KHBvaW50cy5zYXZlUG9pbnQsIHsKKyAgICAgICAgICAgICAgICAgICAgb3Bf
cHV0X3RvX3Njb3BlLAorICAgICAgICAgICAgICAgICAgICBzY29wZS5vZmZzZXQoKSwgLy8gc2Nv
cGUKKyAgICAgICAgICAgICAgICAgICAgc3RvcmFnZS5pZGVudGlmaWVySW5kZXgsIC8vIGlkZW50
aWZpZXIKKyAgICAgICAgICAgICAgICAgICAgb3BlcmFuZC5vZmZzZXQoKSwgLy8gdmFsdWUKKyAg
ICAgICAgICAgICAgICAgICAgR2V0UHV0SW5mbyhEb05vdFRocm93SWZOb3RGb3VuZCwgTG9jYWxD
bG9zdXJlVmFyLCBJbml0aWFsaXphdGlvbk1vZGU6Ok5vdEluaXRpYWxpemF0aW9uKS5vcGVyYW5k
KCksIC8vIGluZm8KKyAgICAgICAgICAgICAgICAgICAgbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRh
YmxlSW5kZXgsIC8vIHN5bWJvbCB0YWJsZSBjb25zdGFudCBpbmRleAorICAgICAgICAgICAgICAg
ICAgICBzdG9yYWdlLnNjb3BlT2Zmc2V0Lm9mZnNldCgpLCAvLyBzY29wZSBvZmZzZXQKKyAgICAg
ICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICAvLyBvcF9yZXN1
bWUuCisgICAgICAgICAgICBwb2ludHMubGl2ZW5lc3MuZm9yRWFjaFNldEJpdChbJl0oc2l6ZV90
IGluZGV4KSB7CisgICAgICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQgPSB2aXJ0
dWFsUmVnaXN0ZXJGb3JMb2NhbChpbmRleCk7CisgICAgICAgICAgICAgICAgU3RvcmFnZSBzdG9y
YWdlID0gc3RvcmFnZUZvckdlbmVyYXRvckxvY2FsKGluZGV4KTsKKworICAgICAgICAgICAgICAg
IFVubGlua2VkVmFsdWVQcm9maWxlIHByb2ZpbGUgPSBjb2RlQmxvY2stPmFkZFZhbHVlUHJvZmls
ZSgpOworICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydChwb2ludHMucmVzdW1l
UG9pbnQsIHsKKyAgICAgICAgICAgICAgICAgICAgb3BfZ2V0X2Zyb21fc2NvcGUsCisgICAgICAg
ICAgICAgICAgICAgIG9wZXJhbmQub2Zmc2V0KCksIC8vIGRzdAorICAgICAgICAgICAgICAgICAg
ICBzY29wZS5vZmZzZXQoKSwgLy8gc2NvcGUKKyAgICAgICAgICAgICAgICAgICAgc3RvcmFnZS5p
ZGVudGlmaWVySW5kZXgsIC8vIGlkZW50aWZpZXIKKyAgICAgICAgICAgICAgICAgICAgR2V0UHV0
SW5mbyhEb05vdFRocm93SWZOb3RGb3VuZCwgTG9jYWxDbG9zdXJlVmFyLCBJbml0aWFsaXphdGlv
bk1vZGU6Ok5vdEluaXRpYWxpemF0aW9uKS5vcGVyYW5kKCksIC8vIGluZm8KKyAgICAgICAgICAg
ICAgICAgICAgMCwgLy8gbG9jYWwgc2NvcGUgZGVwdGgKKyAgICAgICAgICAgICAgICAgICAgc3Rv
cmFnZS5zY29wZU9mZnNldC5vZmZzZXQoKSwgLy8gc2NvcGUgb2Zmc2V0CisgICAgICAgICAgICAg
ICAgICAgIHByb2ZpbGUgLy8gcHJvZmlsZQorICAgICAgICAgICAgICAgIH0pOworICAgICAgICAg
ICAgfSk7CisKKyAgICAgICAgICAgIC8vIENsaXAgdGhlIHVubmVjZXNzYXJ5IGJ5dGVjb2Rlcy4K
KyAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0LnJlbW92ZUJ5dGVjb2RlKHBvaW50cy5zYXZlUG9p
bnQpOworICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQucmVtb3ZlQnl0ZWNvZGUocG9pbnRzLnJl
c3VtZVBvaW50KTsKKyAgICAgICAgfQorCisgICAgICAgIG1faW5zZXJ0aW9uU2V0LmV4ZWN1dGUo
KTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQnl0ZWNvZGVHcmFwaDxVbmxpbmtlZENvZGVCbG9j
az4gbV9ncmFwaDsKKyAgICBCeXRlY29kZUluc2VydGlvblNldCBtX2luc2VydGlvblNldDsKKyAg
ICBWZWN0b3I8T3B0aW9uYWw8U3RvcmFnZT4+IG1fc3RvcmFnZXM7CisgICAgVmVjdG9yPEdlbmVy
YXRvclBvaW50cz4gbV95aWVsZHM7CisgICAgRmFzdEJpdFZlY3RvciBtX21lcmdlQmxvY2tzOwor
ICAgIEZhc3RCaXRWZWN0b3IgbV9zYXZlQmxvY2tzOworICAgIFN0cm9uZzxTeW1ib2xUYWJsZT4g
bV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlOworICAgIGludCBtX2dlbmVyYXRvckZyYW1lU3lt
Ym9sVGFibGVJbmRleDsKK307CisKK3ZvaWQgcGVyZm9ybUdlbmVyYXRvcmlmaWNhdGlvbihVbmxp
bmtlZENvZGVCbG9jayogY29kZUJsb2NrLCBVbmxpbmtlZENvZGVCbG9jazo6VW5wYWNrZWRJbnN0
cnVjdGlvbnMmIGluc3RydWN0aW9ucywgU3ltYm9sVGFibGUqIGdlbmVyYXRvckZyYW1lU3ltYm9s
VGFibGUsIGludCBnZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlSW5kZXgpCit7CisgICAgQnl0ZWNv
ZGVHZW5lcmF0b3JpZmljYXRpb24gcGFzcyhjb2RlQmxvY2ssIGluc3RydWN0aW9ucywgZ2VuZXJh
dG9yRnJhbWVTeW1ib2xUYWJsZSwgZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZUluZGV4KTsKKyAg
ICBwYXNzLnJ1bigpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9u
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNDFhNmQyNWE0NmE2MzhkZjc1NWI5MTZjZGJhYjIyZGZhYWEyZWE5Mgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZUdlbmVyYXRvcmlmaWNhdGlvbi5oCkBAIC0wLDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTYgWXVzdWtlIFN1enVraSA8eXVzdWtlLnN1enVraUBzc2xhYi5pY3Mua2Vpby5hYy5q
cD4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJVbmxpbmtlZENvZGVCbG9j
ay5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgU3ltYm9sVGFibGU7CisKK3ZvaWQgcGVy
Zm9ybUdlbmVyYXRvcmlmaWNhdGlvbihVbmxpbmtlZENvZGVCbG9jayosIFVubGlua2VkQ29kZUJs
b2NrOjpVbnBhY2tlZEluc3RydWN0aW9ucyYsIFN5bWJvbFRhYmxlKiBnZW5lcmF0b3JGcmFtZVN5
bWJvbFRhYmxlLCBpbnQgZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZUluZGV4KTsKKworfSAvLyBu
YW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Qnl0ZWNvZGVHcmFwaC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
R3JhcGguaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4xOGJmYmFkNGQ3M2NmZTg5NzM1NGIzMjdmYmQ2ZjNjZmUxOTI0
NjkxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlR3JhcGguaApAQCAtMCwwICsxLDExNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NiBZdXN1a2UgU3V6dWtpIDx5dXN1a2Uuc3V6dWtpQHNzbGFiLmljcy5rZWlvLmFjLmpwPgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWZuZGVmIEJ5dGVjb2RlR3JhcGhfaAorI2RlZmluZSBCeXRlY29kZUdyYXBoX2gK
KworI2luY2x1ZGUgIkJ5dGVjb2RlQmFzaWNCbG9jay5oIgorI2luY2x1ZGUgPHd0Zi9JdGVyYXRv
clJhbmdlLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgSlNDIHsKKwor
Y2xhc3MgQnl0ZWNvZGVCYXNpY0Jsb2NrOworCit0ZW1wbGF0ZTx0eXBlbmFtZSBCbG9jaz4KK2Ns
YXNzIEJ5dGVjb2RlR3JhcGggeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKEJ5dGVjb2RlR3JhcGgpOworcHVibGljOgorICAgIHR5cGVkZWYg
VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiBCYXNpY0Jsb2Nrc1Zl
Y3RvcjsKKworICAgIGlubGluZSBCeXRlY29kZUdyYXBoKEJsb2NrKiwgdHlwZW5hbWUgQmxvY2s6
OlVucGFja2VkSW5zdHJ1Y3Rpb25zJik7CisKKyAgICBCbG9jayogY29kZUJsb2NrKCkgY29uc3Qg
eyByZXR1cm4gbV9jb2RlQmxvY2s7IH0KKworICAgIEJhc2ljQmxvY2tzVmVjdG9yJiBiYXNpY0Js
b2NrcygpIHsgcmV0dXJuIG1fYmFzaWNCbG9ja3M7IH0KKworICAgIHR5cGVuYW1lIEJsb2NrOjpV
bnBhY2tlZEluc3RydWN0aW9ucyYgaW5zdHJ1Y3Rpb25zKCkgeyByZXR1cm4gbV9pbnN0cnVjdGlv
bnM7IH0KKworICAgIFdURjo6SXRlcmF0b3JSYW5nZTxCYXNpY0Jsb2Nrc1ZlY3Rvcjo6cmV2ZXJz
ZV9pdGVyYXRvcj4gYmFzaWNCbG9ja3NJblJldmVyc2VPcmRlcigpCisgICAgeworICAgICAgICBy
ZXR1cm4gV1RGOjptYWtlSXRlcmF0b3JSYW5nZShtX2Jhc2ljQmxvY2tzLnJiZWdpbigpLCBtX2Jh
c2ljQmxvY2tzLnJlbmQoKSk7CisgICAgfQorCisgICAgc3RhdGljIGJvb2wgYmxvY2tDb250YWlu
c0J5dGVjb2RlT2Zmc2V0KEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2ssIHVuc2lnbmVkIGJ5dGVj
b2RlT2Zmc2V0KQorICAgIHsKKyAgICAgICAgdW5zaWduZWQgbGVhZGVyT2Zmc2V0ID0gYmxvY2st
PmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCk7CisgICAgICAgIHJldHVybiBieXRlY29kZU9mZnNldCA+
PSBsZWFkZXJPZmZzZXQgJiYgYnl0ZWNvZGVPZmZzZXQgPCBsZWFkZXJPZmZzZXQgKyBibG9jay0+
dG90YWxCeXRlY29kZUxlbmd0aCgpOworICAgIH0KKworICAgIEJ5dGVjb2RlQmFzaWNCbG9jayog
ZmluZEJhc2ljQmxvY2tGb3JCeXRlY29kZU9mZnNldCh1bnNpZ25lZCBieXRlY29kZU9mZnNldCkK
KyAgICB7CisgICAgICAgIC8qCisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bV9iYXNpY0Jsb2Nrcy5zaXplKCk7IGkrKykgeworICAgICAgICAgICAgICAgIGlmIChibG9ja0Nv
bnRhaW5zQnl0ZWNvZGVPZmZzZXQobV9iYXNpY0Jsb2Nrc1tpXS5nZXQoKSwgYnl0ZWNvZGVPZmZz
ZXQpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbV9iYXNpY0Jsb2Nrc1tpXS5nZXQoKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAqLworCisgICAg
ICAgIHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+KiBiYXNpY0Jsb2NrID0gYXBw
cm94aW1hdGVCaW5hcnlTZWFyY2g8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4s
IHVuc2lnbmVkPihtX2Jhc2ljQmxvY2tzLCBtX2Jhc2ljQmxvY2tzLnNpemUoKSwgYnl0ZWNvZGVP
ZmZzZXQsIFtdIChzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiogYmFzaWNCbG9j
aykgeyByZXR1cm4gKCpiYXNpY0Jsb2NrKS0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKTsgfSk7Cisg
ICAgICAgIC8vIFdlIGZvdW5kIHRoZSBibG9jayB3ZSB3ZXJlIGxvb2tpbmcgZm9yLgorICAgICAg
ICBpZiAoYmxvY2tDb250YWluc0J5dGVjb2RlT2Zmc2V0KCgqYmFzaWNCbG9jaykuZ2V0KCksIGJ5
dGVjb2RlT2Zmc2V0KSkKKyAgICAgICAgICAgIHJldHVybiAoKmJhc2ljQmxvY2spLmdldCgpOwor
CisgICAgICAgIC8vIEJhc2ljIGJsb2NrIGlzIHRvIHRoZSBsZWZ0IG9mIHRoZSByZXR1cm5lZCBi
bG9jay4KKyAgICAgICAgaWYgKGJ5dGVjb2RlT2Zmc2V0IDwgKCpiYXNpY0Jsb2NrKS0+bGVhZGVy
Qnl0ZWNvZGVPZmZzZXQoKSkgeworICAgICAgICAgICAgQVNTRVJUKGJhc2ljQmxvY2sgLSAxID49
IG1fYmFzaWNCbG9ja3MuZGF0YSgpKTsKKyAgICAgICAgICAgIEFTU0VSVChibG9ja0NvbnRhaW5z
Qnl0ZWNvZGVPZmZzZXQoYmFzaWNCbG9ja1stMV0uZ2V0KCksIGJ5dGVjb2RlT2Zmc2V0KSk7Cisg
ICAgICAgICAgICByZXR1cm4gYmFzaWNCbG9ja1stMV0uZ2V0KCk7CisgICAgICAgIH0KKworICAg
ICAgICAvLyBCYXNpYyBibG9jayBpcyB0byB0aGUgcmlnaHQgb2YgdGhlIHJldHVybmVkIGJsb2Nr
LgorICAgICAgICBBU1NFUlQoJmJhc2ljQmxvY2tbMV0gPD0gJm1fYmFzaWNCbG9ja3MubGFzdCgp
KTsKKyAgICAgICAgQVNTRVJUKGJsb2NrQ29udGFpbnNCeXRlY29kZU9mZnNldChiYXNpY0Jsb2Nr
WzFdLmdldCgpLCBieXRlY29kZU9mZnNldCkpOworICAgICAgICByZXR1cm4gYmFzaWNCbG9ja1sx
XS5nZXQoKTsKKyAgICB9CisKKyAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGZpbmRCYXNpY0Jsb2Nr
V2l0aExlYWRlck9mZnNldCh1bnNpZ25lZCBsZWFkZXJPZmZzZXQpCisgICAgeworICAgICAgICBy
ZXR1cm4gKCp0cnlCaW5hcnlTZWFyY2g8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9j
az4sIHVuc2lnbmVkPihtX2Jhc2ljQmxvY2tzLCBtX2Jhc2ljQmxvY2tzLnNpemUoKSwgbGVhZGVy
T2Zmc2V0LCBbXSAoc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4qIGJhc2ljQmxv
Y2spIHsgcmV0dXJuICgqYmFzaWNCbG9jayktPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCk7IH0pKS5n
ZXQoKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQmxvY2sqIG1fY29kZUJsb2NrOworICAgIEJh
c2ljQmxvY2tzVmVjdG9yIG1fYmFzaWNCbG9ja3M7CisgICAgdHlwZW5hbWUgQmxvY2s6OlVucGFj
a2VkSW5zdHJ1Y3Rpb25zJiBtX2luc3RydWN0aW9uczsKK307CisKKwordGVtcGxhdGU8dHlwZW5h
bWUgQmxvY2s+CitCeXRlY29kZUdyYXBoPEJsb2NrPjo6Qnl0ZWNvZGVHcmFwaChCbG9jayogY29k
ZUJsb2NrLCB0eXBlbmFtZSBCbG9jazo6VW5wYWNrZWRJbnN0cnVjdGlvbnMmIGluc3RydWN0aW9u
cykKKyAgICA6IG1fY29kZUJsb2NrKGNvZGVCbG9jaykKKyAgICAsIG1faW5zdHJ1Y3Rpb25zKGlu
c3RydWN0aW9ucykKK3sKKyAgICBBU1NFUlQobV9jb2RlQmxvY2spOworICAgIEJ5dGVjb2RlQmFz
aWNCbG9jazo6Y29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MobV9jb2RlQmxvY2ssIGluc3RydWN0
aW9ucy5iZWdpbigpLCBpbnN0cnVjdGlvbnMuc2l6ZSgpLCBtX2Jhc2ljQmxvY2tzKTsKKyAgICBB
U1NFUlQobV9iYXNpY0Jsb2Nrcy5zaXplKCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKyNl
bmRpZiAvLyBCeXRlY29kZUdyYXBoX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUluc2VydGlvblNldC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnNlcnRpb25TZXQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgwNDFkNWU5
MGQ0YTM1MzRiMGM1MzEyMzRiNGVkZmZmOGYwODVkYjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnNlcnRpb25TZXQuY3BwCkBAIC0w
LDAgKzEsODYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgWXVzdWtlIFN1enVraSA8eXVz
dWtlLnN1enVraUBzc2xhYi5pY3Mua2Vpby5hYy5qcD4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIkJ5dGVjb2RlSW5zZXJ0aW9uU2V0LmgiCisKKyNpbmNsdWRlIDx3
dGYvQnViYmxlU29ydC5oPgorCituYW1lc3BhY2UgSlNDIHsKKworaW50IEJ5dGVjb2RlSW5zZXJ0
aW9uU2V0OjphZGp1c3RPZmZzZXQoaW50IGJ5dGVjb2RlT2Zmc2V0LCBpbnQganVtcFRhcmdldCkK
K3sKKyAgICAvLyBUT0RPOiBTdXBlciByb3VnaCBpbXBsZW1lbnRhdGlvbi4gV2Ugc2hvdWxkIGxv
b2sgaW50byBpdCBjYXJlZnVsbHkuCisgICAgaWYgKGJ5dGVjb2RlT2Zmc2V0IDwganVtcFRhcmdl
dCkgeworICAgICAgICBhdXRvIHN0YXJ0ID0gc3RkOjpsb3dlcl9ib3VuZChtX2luc2VydGlvbnMu
YmVnaW4oKSwgbV9pbnNlcnRpb25zLmVuZCgpLCBieXRlY29kZU9mZnNldCwgWyZdIChjb25zdCBJ
bnNlcnRpb24mIGluc2VydGlvbiwgaW50IGJ5dGVjb2RlT2Zmc2V0KSB7CisgICAgICAgICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihpbnNlcnRpb24uaW5kZXgoKSkgPCBieXRlY29kZU9mZnNl
dDsKKyAgICAgICAgfSk7CisgICAgICAgIGlmIChzdGFydCAhPSBtX2luc2VydGlvbnMuZW5kKCkp
IHsKKyAgICAgICAgICAgIGF1dG8gZW5kID0gc3RkOjpsb3dlcl9ib3VuZChtX2luc2VydGlvbnMu
YmVnaW4oKSwgbV9pbnNlcnRpb25zLmVuZCgpLCBqdW1wVGFyZ2V0LCBbJl0gKGNvbnN0IEluc2Vy
dGlvbiYgaW5zZXJ0aW9uLCBpbnQganVtcFRhcmdldCkgeworICAgICAgICAgICAgICAgIHJldHVy
biBzdGF0aWNfY2FzdDxpbnQ+KGluc2VydGlvbi5pbmRleCgpKSA8IGp1bXBUYXJnZXQ7CisgICAg
ICAgICAgICB9KTsKKyAgICAgICAgICAgIGZvciAoOyBzdGFydCAhPSBlbmQ7ICsrc3RhcnQpIHsK
KyAgICAgICAgICAgICAgICBpZiAoc3RhcnQtPmVsZW1lbnQoKS50eXBlID09IENvbW1hbmQ6OlR5
cGU6OlJlbW92ZSkKKyAgICAgICAgICAgICAgICAgICAganVtcFRhcmdldCAtPSBzdGFydC0+ZWxl
bWVudCgpLmxlbmd0aDsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAg
IGp1bXBUYXJnZXQgKz0gc3RhcnQtPmVsZW1lbnQoKS5sZW5ndGg7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGp1bXBUYXJnZXQgLSBieXRlY29kZU9mZnNldDsKKyAg
ICB9CisKKyAgICBpZiAoYnl0ZWNvZGVPZmZzZXQgPT0ganVtcFRhcmdldCkKKyAgICAgICAgcmV0
dXJuIDA7CisKKyAgICByZXR1cm4gLWFkanVzdE9mZnNldChqdW1wVGFyZ2V0LCBieXRlY29kZU9m
ZnNldCk7Cit9CisKK3ZvaWQgQnl0ZWNvZGVJbnNlcnRpb25TZXQ6OmFwcGx5TW9kaWZpY2F0aW9u
KCkKK3sKKyAgICAvLyBGSVhNRTogQ3JhemlseSBuYWl2ZSEgSGVyZSwgd2Ugc2hvdWxkIGtub3cg
dGhlIGxlbmd0aCBvZiB0aGUgdHJhbnNmb3JtZWQgaW5zdHJ1Y3Rpb25zIChzaW5jZSBpbnNlcnRp
b24gYW5kIHJlbW92YWwgY29tbWFuZHMgY2FuIGhhdmUgdGhlaXIgbGVuZ3RoKS4KKyAgICBmb3Ig
KHNpemVfdCBpbnNlcnRpb25JbmRleCA9IG1faW5zZXJ0aW9ucy5zaXplKCk7IGluc2VydGlvbklu
ZGV4LS07KSB7CisgICAgICAgIGNvbnN0IEluc2VydGlvbiYgaW5zZXJ0aW9uID0gbV9pbnNlcnRp
b25zW2luc2VydGlvbkluZGV4XTsKKyAgICAgICAgaWYgKGluc2VydGlvbi5lbGVtZW50KCkudHlw
ZSA9PSBDb21tYW5kOjpUeXBlOjpSZW1vdmUpCisgICAgICAgICAgICBtX2dyYXBoLmluc3RydWN0
aW9ucygpLnJlbW92ZShpbnNlcnRpb24uaW5kZXgoKSwgaW5zZXJ0aW9uLmVsZW1lbnQoKS5sZW5n
dGgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX2dyYXBoLmluc3RydWN0aW9ucygpLmlu
c2VydChpbnNlcnRpb24uaW5kZXgoKSwgaW5zZXJ0aW9uLmVsZW1lbnQoKS5ieXRlY29kZS5pbnN0
cnVjdGlvbnMsIG9wY29kZUxlbmd0aChpbnNlcnRpb24uZWxlbWVudCgpLmJ5dGVjb2RlLmluc3Ry
dWN0aW9uc1swXS51Lm9wY29kZSkpOworICAgIH0KKyAgICBtX2luc2VydGlvbnMuY2xlYXIoKTsK
K30KKwordm9pZCBCeXRlY29kZUluc2VydGlvblNldDo6ZXhlY3V0ZSgpCit7CisgICAgV1RGOjpi
dWJibGVTb3J0KG1faW5zZXJ0aW9ucy5iZWdpbigpLCBtX2luc2VydGlvbnMuZW5kKCksIFtdIChj
b25zdCBJbnNlcnRpb24mIGxocywgY29uc3QgSW5zZXJ0aW9uJiByaHMpIHsKKyAgICAgICAgLy8g
V2Ugd291bGQgbGlrZSB0byBwZXJmb3JtIHJlbW92ZSBvcGVyYXRpb24gYmVmb3JlIGluc2VydGlv
bi4KKyAgICAgICAgaWYgKGxocy5pbmRleCgpID09IHJocy5pbmRleCgpKQorICAgICAgICAgICAg
cmV0dXJuIHJocy5lbGVtZW50KCkudHlwZSA9PSBDb21tYW5kOjpUeXBlOjpSZW1vdmU7CisgICAg
ICAgIHJldHVybiBsaHMgPCByaHM7CisgICAgfSk7CisKKyAgICBVbmxpbmtlZENvZGVCbG9jayog
Y29kZUJsb2NrID0gbV9ncmFwaC5jb2RlQmxvY2soKTsKKyAgICBjb2RlQmxvY2stPmFwcGx5TW9k
aWZpY2F0aW9uKCp0aGlzKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnNlcnRpb25TZXQuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUluc2VydGlvblNldC5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmZhYmVhZmRmNmNmMWM3N2VkYzM5OTRlOTFlNTg2OWYxNDQ4Njc1NzMKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnNlcnRp
b25TZXQuaApAQCAtMCwwICsxLDgyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IFl1c3Vr
ZSBTdXp1a2kgPHl1c3VrZS5zdXp1a2lAc3NsYWIuaWNzLmtlaW8uYWMuanA+CisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQnl0ZWNvZGVHcmFwaC5oIgorI2luY2x1ZGUgIlVu
bGlua2VkQ29kZUJsb2NrLmgiCisjaW5jbHVkZSA8d3RmL0luc2VydGlvbi5oPgorCituYW1lc3Bh
Y2UgSlNDIHsKKworY2xhc3MgQnl0ZWNvZGVJbnNlcnRpb25TZXQgeworcHVibGljOgorICAgIHN0
cnVjdCBJbnNlcnRlZEJ5dGVjb2RlIHsKKyAgICAgICAgVW5saW5rZWRJbnN0cnVjdGlvbiBpbnN0
cnVjdGlvbnNbTUFYX09QQ09ERV9MRU5HVEhfT0ZfQllURUNPREVdOworICAgIH07CisKKyAgICBz
dHJ1Y3QgQ29tbWFuZCB7CisgICAgICAgIGVudW0gY2xhc3MgVHlwZSB7CisgICAgICAgICAgICBJ
bnNlcnQsCisgICAgICAgICAgICBSZW1vdmUsCisgICAgICAgIH07CisKKyAgICAgICAgVHlwZSB0
eXBlOworICAgICAgICBzaXplX3QgbGVuZ3RoOworICAgICAgICBJbnNlcnRlZEJ5dGVjb2RlIGJ5
dGVjb2RlOworICAgIH07CisKKyAgICB0eXBlZGVmIFdURjo6SW5zZXJ0aW9uPENvbW1hbmQ+IElu
c2VydGlvbjsKKworICAgIEJ5dGVjb2RlSW5zZXJ0aW9uU2V0KEJ5dGVjb2RlR3JhcGg8VW5saW5r
ZWRDb2RlQmxvY2s+JiBncmFwaCkKKyAgICAgICAgOiBtX2dyYXBoKGdyYXBoKQorICAgIHsKKyAg
ICB9CisKKyAgICB2b2lkIGluc2VydCh1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgSW5zZXJ0ZWRC
eXRlY29kZSBieXRlY29kZSkKKyAgICB7CisgICAgICAgIG1faW5zZXJ0aW9ucy5hcHBlbmQoSW5z
ZXJ0aW9uKGJ5dGVjb2RlT2Zmc2V0LCBDb21tYW5kIHsgQ29tbWFuZDo6VHlwZTo6SW5zZXJ0LCBv
cGNvZGVMZW5ndGgoYnl0ZWNvZGUuaW5zdHJ1Y3Rpb25zWzBdLnUub3Bjb2RlKSwgYnl0ZWNvZGUg
fSkpOworICAgIH0KKworICAgIHZvaWQgcmVtb3ZlQnl0ZWNvZGUodW5zaWduZWQgYnl0ZWNvZGVP
ZmZzZXQpCisgICAgeworICAgICAgICBtX2luc2VydGlvbnMuYXBwZW5kKEluc2VydGlvbihieXRl
Y29kZU9mZnNldCwgQ29tbWFuZCB7IENvbW1hbmQ6OlR5cGU6OlJlbW92ZSwgb3Bjb2RlTGVuZ3Ro
KG1fZ3JhcGguaW5zdHJ1Y3Rpb25zKClbYnl0ZWNvZGVPZmZzZXRdLnUub3Bjb2RlKSwgSW5zZXJ0
ZWRCeXRlY29kZSB7IH0gfSkpOworICAgIH0KKworICAgIHZvaWQgZXhlY3V0ZSgpOworCisgICAg
Qnl0ZWNvZGVHcmFwaDxVbmxpbmtlZENvZGVCbG9jaz4mIGdyYXBoKCkgeyByZXR1cm4gbV9ncmFw
aDsgfQorCisgICAgaW50IGFkanVzdE9mZnNldChpbnQgYnl0ZWNvZGVPZmZzZXQsIGludCBqdW1w
VGFyZ2V0KTsKKworcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgVW5saW5rZWRDb2RlQmxvY2s7
CisgICAgdm9pZCBhcHBseU1vZGlmaWNhdGlvbigpOworCisgICAgQnl0ZWNvZGVHcmFwaDxVbmxp
bmtlZENvZGVCbG9jaz4mIG1fZ3JhcGg7CisgICAgVmVjdG9yPEluc2VydGlvbiwgOD4gbV9pbnNl
cnRpb25zOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwCmlu
ZGV4IDE3ZTgyYTJmYmJhMDE1MDQzZTk5ZDM0ZWQyNTY5MzcyYjM2ZjdhODUuLmE1OGI1NzRlZThm
MGMzMTU3YTA4NDRhNTljNGU5YjU1YjJmYzYxODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwCkBA
IC0zNiw2OSArMzYsMjMgQEAKIG5hbWVzcGFjZSBKU0MgewogCiBCeXRlY29kZUxpdmVuZXNzQW5h
bHlzaXM6OkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcyhDb2RlQmxvY2sqIGNvZGVCbG9jaykKLSAg
ICA6IG1fY29kZUJsb2NrKGNvZGVCbG9jaykKKyAgICA6IG1fZ3JhcGgoY29kZUJsb2NrLCBjb2Rl
QmxvY2stPmluc3RydWN0aW9ucygpKQogewotICAgIEFTU0VSVChtX2NvZGVCbG9jayk7CiAgICAg
Y29tcHV0ZSgpOwogfQogCi1zdGF0aWMgYm9vbCBpc1ZhbGlkUmVnaXN0ZXJGb3JMaXZlbmVzcyhD
b2RlQmxvY2sqIGNvZGVCbG9jaywgaW50IG9wZXJhbmQpCitzdGF0aWMgYm9vbCBpc1ZhbGlkUmVn
aXN0ZXJGb3JMaXZlbmVzcyhpbnQgb3BlcmFuZCkKIHsKLSAgICBpZiAoY29kZUJsb2NrLT5pc0Nv
bnN0YW50UmVnaXN0ZXJJbmRleChvcGVyYW5kKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IAogICAgIFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnKG9wZXJhbmQpOworICAgIGlmICh2aXJ0
dWFsUmVnLmlzQ29uc3RhbnQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiB2
aXJ0dWFsUmVnLmlzTG9jYWwoKTsKIH0KIAotc3RhdGljIHVuc2lnbmVkIGdldExlYWRlck9mZnNl
dEZvckJhc2ljQmxvY2soc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4qIGJhc2lj
QmxvY2spCi17Ci0gICAgcmV0dXJuICgqYmFzaWNCbG9jayktPmxlYWRlckJ5dGVjb2RlT2Zmc2V0
KCk7Ci19Ci0KLXN0YXRpYyBCeXRlY29kZUJhc2ljQmxvY2sqIGZpbmRCYXNpY0Jsb2NrV2l0aExl
YWRlck9mZnNldChWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+JiBi
YXNpY0Jsb2NrcywgdW5zaWduZWQgbGVhZGVyT2Zmc2V0KQotewotICAgIHJldHVybiAoKnRyeUJp
bmFyeVNlYXJjaDxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiwgdW5zaWduZWQ+
KGJhc2ljQmxvY2tzLCBiYXNpY0Jsb2Nrcy5zaXplKCksIGxlYWRlck9mZnNldCwgZ2V0TGVhZGVy
T2Zmc2V0Rm9yQmFzaWNCbG9jaykpLmdldCgpOwotfQotCi1zdGF0aWMgYm9vbCBibG9ja0NvbnRh
aW5zQnl0ZWNvZGVPZmZzZXQoQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaywgdW5zaWduZWQgYnl0
ZWNvZGVPZmZzZXQpCi17Ci0gICAgdW5zaWduZWQgbGVhZGVyT2Zmc2V0ID0gYmxvY2stPmxlYWRl
ckJ5dGVjb2RlT2Zmc2V0KCk7Ci0gICAgcmV0dXJuIGJ5dGVjb2RlT2Zmc2V0ID49IGxlYWRlck9m
ZnNldCAmJiBieXRlY29kZU9mZnNldCA8IGxlYWRlck9mZnNldCArIGJsb2NrLT50b3RhbEJ5dGVj
b2RlTGVuZ3RoKCk7Ci19Ci0KLXN0YXRpYyBCeXRlY29kZUJhc2ljQmxvY2sqIGZpbmRCYXNpY0Js
b2NrRm9yQnl0ZWNvZGVPZmZzZXQoVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2lj
QmxvY2s+PiYgYmFzaWNCbG9ja3MsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KQotewotLyoKLSAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYmFzaWNCbG9ja3Muc2l6ZSgpOyBpKyspIHsKLSAg
ICAgICAgaWYgKGJsb2NrQ29udGFpbnNCeXRlY29kZU9mZnNldChiYXNpY0Jsb2Nrc1tpXS5nZXQo
KSwgYnl0ZWNvZGVPZmZzZXQpKQotICAgICAgICAgICAgcmV0dXJuIGJhc2ljQmxvY2tzW2ldLmdl
dCgpOwotICAgIH0KLSAgICByZXR1cm4gMDsKLSovCi0gICAgc3RkOjp1bmlxdWVfcHRyPEJ5dGVj
b2RlQmFzaWNCbG9jaz4qIGJhc2ljQmxvY2sgPSBhcHByb3hpbWF0ZUJpbmFyeVNlYXJjaDxzdGQ6
OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiwgdW5zaWduZWQ+KAotICAgICAgICBiYXNp
Y0Jsb2NrcywgYmFzaWNCbG9ja3Muc2l6ZSgpLCBieXRlY29kZU9mZnNldCwgZ2V0TGVhZGVyT2Zm
c2V0Rm9yQmFzaWNCbG9jayk7Ci0gICAgLy8gV2UgZm91bmQgdGhlIGJsb2NrIHdlIHdlcmUgbG9v
a2luZyBmb3IuCi0gICAgaWYgKGJsb2NrQ29udGFpbnNCeXRlY29kZU9mZnNldCgoKmJhc2ljQmxv
Y2spLmdldCgpLCBieXRlY29kZU9mZnNldCkpCi0gICAgICAgIHJldHVybiAoKmJhc2ljQmxvY2sp
LmdldCgpOwotCi0gICAgLy8gQmFzaWMgYmxvY2sgaXMgdG8gdGhlIGxlZnQgb2YgdGhlIHJldHVy
bmVkIGJsb2NrLgotICAgIGlmIChieXRlY29kZU9mZnNldCA8ICgqYmFzaWNCbG9jayktPmxlYWRl
ckJ5dGVjb2RlT2Zmc2V0KCkpIHsKLSAgICAgICAgQVNTRVJUKGJhc2ljQmxvY2sgLSAxID49IGJh
c2ljQmxvY2tzLmRhdGEoKSk7Ci0gICAgICAgIEFTU0VSVChibG9ja0NvbnRhaW5zQnl0ZWNvZGVP
ZmZzZXQoYmFzaWNCbG9ja1stMV0uZ2V0KCksIGJ5dGVjb2RlT2Zmc2V0KSk7Ci0gICAgICAgIHJl
dHVybiBiYXNpY0Jsb2NrWy0xXS5nZXQoKTsKLSAgICB9Ci0KLSAgICAvLyBCYXNpYyBibG9jayBp
cyB0byB0aGUgcmlnaHQgb2YgdGhlIHJldHVybmVkIGJsb2NrLgotICAgIEFTU0VSVCgmYmFzaWNC
bG9ja1sxXSA8PSAmYmFzaWNCbG9ja3MubGFzdCgpKTsKLSAgICBBU1NFUlQoYmxvY2tDb250YWlu
c0J5dGVjb2RlT2Zmc2V0KGJhc2ljQmxvY2tbMV0uZ2V0KCksIGJ5dGVjb2RlT2Zmc2V0KSk7Ci0g
ICAgcmV0dXJuIGJhc2ljQmxvY2tbMV0uZ2V0KCk7Ci19Ci0KIC8vIFNpbXBsaWZpZWQgaW50ZXJm
YWNlIHRvIGJ5dGVjb2RlIHVzZS9kZWYsIHdoaWNoIGRldGVybWluZXMgZGVmcyBmaXJzdCBhbmQg
dGhlbiB1c2VzLCBhbmQgaW5jbHVkZXMKIC8vIGV4Y2VwdGlvbiBoYW5kbGVycyBpbiB0aGUgdXNl
cy4KIHRlbXBsYXRlPHR5cGVuYW1lIFVzZUZ1bmN0b3IsIHR5cGVuYW1lIERlZkZ1bmN0b3I+Ci1z
dGF0aWMgdm9pZCBzdGVwT3Zlckluc3RydWN0aW9uKENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRl
Y29kZUJhc2ljQmxvY2sqIGJsb2NrLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFz
aWNCbG9jaz4+JiBiYXNpY0Jsb2NrcywgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIGNvbnN0IFVz
ZUZ1bmN0b3ImIHVzZSwgY29uc3QgRGVmRnVuY3RvciYgZGVmKQorc3RhdGljIHZvaWQgc3RlcE92
ZXJJbnN0cnVjdGlvbihCeXRlY29kZUdyYXBoPENvZGVCbG9jaz4mIGdyYXBoLCB1bnNpZ25lZCBi
eXRlY29kZU9mZnNldCwgY29uc3QgVXNlRnVuY3RvciYgdXNlLCBjb25zdCBEZWZGdW5jdG9yJiBk
ZWYpCiB7CiAgICAgLy8gVGhpcyBhYnN0cmFjdGx5IGV4ZWN1dGUgdGhlIGluc3RydWN0aW9uIGlu
IHJldmVyc2UuIEluc3RydWN0aW9ucyBsb2dpY2FsbHkgZmlyc3QgdXNlIG9wZXJhbmRzIGFuZAog
ICAgIC8vIHRoZW4gZGVmaW5lIG9wZXJhbmRzLiBUaGlzIGxvZ2ljYWwgb3JkZXJpbmcgaXMgbmVj
ZXNzYXJ5IGZvciBvcGVyYXRpb25zIHRoYXQgdXNlIGFuZCBkZWYgdGhlIHNhbWUKQEAgLTExNSw0
MSArNjksMzUgQEAgc3RhdGljIHZvaWQgc3RlcE92ZXJJbnN0cnVjdGlvbihDb2RlQmxvY2sqIGNv
ZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaywKICAgICAvLyB1c2VzIGJlZm9yZSBk
ZWZzLCB0aGVuIHRoZSBhZGQgb3BlcmF0aW9uIGFib3ZlIHdvdWxkIGFwcGVhciB0byBub3QgaGF2
ZSBsb2MxIGxpdmUsIHNpbmNlIHdlJ2QKICAgICAvLyBmaXJzdCBhZGQgaXQgdG8gdGhlIG91dCBz
ZXQgKHRoZSB1c2UpLCBhbmQgdGhlbiB3ZSdkIHJlbW92ZSBpdCAodGhlIGRlZikuCiAgICAgCisg
ICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBncmFwaC5jb2RlQmxvY2soKTsKKwogICAgIGNvbXB1
dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoCi0gICAgICAgIGNvZGVCbG9jaywgYmxvY2ssIGJ5dGVj
b2RlT2Zmc2V0LAotICAgICAgICBbJl0gKENvZGVCbG9jayogY29kZUJsb2NrLCBJbnN0cnVjdGlv
biosIE9wY29kZUlELCBpbnQgb3BlcmFuZCkgewotICAgICAgICAgICAgaWYgKGlzVmFsaWRSZWdp
c3RlckZvckxpdmVuZXNzKGNvZGVCbG9jaywgb3BlcmFuZCkpCisgICAgICAgIGNvZGVCbG9jaywg
Ynl0ZWNvZGVPZmZzZXQsCisgICAgICAgIFsmXSAoQ29kZUJsb2NrKiwgSW5zdHJ1Y3Rpb24qLCBP
cGNvZGVJRCwgaW50IG9wZXJhbmQpIHsKKyAgICAgICAgICAgIGlmIChpc1ZhbGlkUmVnaXN0ZXJG
b3JMaXZlbmVzcyhvcGVyYW5kKSkKICAgICAgICAgICAgICAgICBkZWYoVmlydHVhbFJlZ2lzdGVy
KG9wZXJhbmQpLnRvTG9jYWwoKSk7CiAgICAgICAgIH0pOwogCiAgICAgY29tcHV0ZVVzZXNGb3JC
eXRlY29kZU9mZnNldCgKLSAgICAgICAgY29kZUJsb2NrLCBibG9jaywgYnl0ZWNvZGVPZmZzZXQs
Ci0gICAgICAgIFsmXSAoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEluc3RydWN0aW9uKiwgT3Bjb2Rl
SUQsIGludCBvcGVyYW5kKSB7Ci0gICAgICAgICAgICBpZiAoaXNWYWxpZFJlZ2lzdGVyRm9yTGl2
ZW5lc3MoY29kZUJsb2NrLCBvcGVyYW5kKSkKKyAgICAgICAgY29kZUJsb2NrLCBieXRlY29kZU9m
ZnNldCwKKyAgICAgICAgWyZdIChDb2RlQmxvY2sqLCBJbnN0cnVjdGlvbiosIE9wY29kZUlELCBp
bnQgb3BlcmFuZCkgeworICAgICAgICAgICAgaWYgKGlzVmFsaWRSZWdpc3RlckZvckxpdmVuZXNz
KG9wZXJhbmQpKQogICAgICAgICAgICAgICAgIHVzZShWaXJ0dWFsUmVnaXN0ZXIob3BlcmFuZCku
dG9Mb2NhbCgpKTsKICAgICAgICAgfSk7CiAKICAgICAvLyBJZiB3ZSBoYXZlIGFuIGV4Y2VwdGlv
biBoYW5kbGVyLCB3ZSB3YW50IHRoZSBsaXZlLWluIHZhcmlhYmxlcyBvZiB0aGUgCiAgICAgLy8g
ZXhjZXB0aW9uIGhhbmRsZXIgYmxvY2sgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIGxpdmUtaW4gb2Yg
dGhpcyBwYXJ0aWN1bGFyIGJ5dGVjb2RlLgogICAgIGlmIChIYW5kbGVySW5mbyogaGFuZGxlciA9
IGNvZGVCbG9jay0+aGFuZGxlckZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KSkgewot
ICAgICAgICAvLyBGSVhNRTogVGhpcyByZXN1bWUgY2hlY2sgc2hvdWxkIG5vdCBiZSBuZWVkZWQu
Ci0gICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTky
ODEKLSAgICAgICAgSW50ZXJwcmV0ZXIqIGludGVycHJldGVyID0gY29kZUJsb2NrLT52bSgpLT5p
bnRlcnByZXRlcjsKLSAgICAgICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luID0gY29k
ZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpOwotICAgICAgICBJbnN0cnVjdGlvbiogaW5z
dHJ1Y3Rpb24gPSAmaW5zdHJ1Y3Rpb25zQmVnaW5bYnl0ZWNvZGVPZmZzZXRdOwotICAgICAgICBP
cGNvZGVJRCBvcGNvZGVJRCA9IGludGVycHJldGVyLT5nZXRPcGNvZGVJRChpbnN0cnVjdGlvbi0+
dS5vcGNvZGUpOwotICAgICAgICBpZiAob3Bjb2RlSUQgIT0gb3BfcmVzdW1lKSB7Ci0gICAgICAg
ICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGhhbmRsZXJCbG9jayA9IGZpbmRCYXNpY0Jsb2NrV2l0
aExlYWRlck9mZnNldChiYXNpY0Jsb2NrcywgaGFuZGxlci0+dGFyZ2V0KTsKLSAgICAgICAgICAg
IEFTU0VSVChoYW5kbGVyQmxvY2spOwotICAgICAgICAgICAgaGFuZGxlckJsb2NrLT5pbigpLmZv
ckVhY2hTZXRCaXQodXNlKTsKLSAgICAgICAgfQorICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2sq
IGhhbmRsZXJCbG9jayA9IGdyYXBoLmZpbmRCYXNpY0Jsb2NrV2l0aExlYWRlck9mZnNldChoYW5k
bGVyLT50YXJnZXQpOworICAgICAgICBBU1NFUlQoaGFuZGxlckJsb2NrKTsKKyAgICAgICAgaGFu
ZGxlckJsb2NrLT5pbigpLmZvckVhY2hTZXRCaXQodXNlKTsKICAgICB9CiB9CiAKLXN0YXRpYyB2
b2lkIHN0ZXBPdmVySW5zdHJ1Y3Rpb24oQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFz
aWNCbG9jayogYmxvY2ssIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2Nr
Pj4mIGJhc2ljQmxvY2tzLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgRmFzdEJpdFZlY3RvciYg
b3V0KQorc3RhdGljIHZvaWQgc3RlcE92ZXJJbnN0cnVjdGlvbihCeXRlY29kZUdyYXBoPENvZGVC
bG9jaz4mIGdyYXBoLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgRmFzdEJpdFZlY3RvciYgb3V0
KQogewogICAgIHN0ZXBPdmVySW5zdHJ1Y3Rpb24oCi0gICAgICAgIGNvZGVCbG9jaywgYmxvY2ss
IGJhc2ljQmxvY2tzLCBieXRlY29kZU9mZnNldCwKKyAgICAgICAgZ3JhcGgsIGJ5dGVjb2RlT2Zm
c2V0LAogICAgICAgICBbJl0gKHVuc2lnbmVkIGJpdEluZGV4KSB7CiAgICAgICAgICAgICAvLyBU
aGlzIGlzIHRoZSB1c2UgZnVuY3Rvciwgc28gd2Ugc2V0IHRoZSBiaXQuCiAgICAgICAgICAgICBv
dXQuc2V0KGJpdEluZGV4KTsKQEAgLTE2MCw3ICsxMDgsNyBAQCBzdGF0aWMgdm9pZCBzdGVwT3Zl
ckluc3RydWN0aW9uKENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJs
b2NrLAogICAgICAgICB9KTsKIH0KIAotc3RhdGljIHZvaWQgY29tcHV0ZUxvY2FsTGl2ZW5lc3NG
b3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Jsb2Nr
KiBibG9jaywgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYgYmFz
aWNCbG9ja3MsIHVuc2lnbmVkIHRhcmdldE9mZnNldCwgRmFzdEJpdFZlY3RvciYgcmVzdWx0KQor
c3RhdGljIHZvaWQgY29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCeXRlY29kZU9mZnNldChCeXRlY29k
ZUdyYXBoPENvZGVCbG9jaz4mIGdyYXBoLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrLCB1bnNp
Z25lZCB0YXJnZXRPZmZzZXQsIEZhc3RCaXRWZWN0b3ImIHJlc3VsdCkKIHsKICAgICBBU1NFUlQo
IWJsb2NrLT5pc0V4aXRCbG9jaygpKTsKICAgICBBU1NFUlQoIWJsb2NrLT5pc0VudHJ5QmxvY2so
KSk7CkBAIC0xNzIsNDQgKzEyMCw0NCBAQCBzdGF0aWMgdm9pZCBjb21wdXRlTG9jYWxMaXZlbmVz
c0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29kZQogICAgICAg
ICBpZiAodGFyZ2V0T2Zmc2V0ID4gYnl0ZWNvZGVPZmZzZXQpCiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgCi0gICAgICAgIHN0ZXBPdmVySW5zdHJ1Y3Rpb24oY29kZUJsb2NrLCBibG9jaywg
YmFzaWNCbG9ja3MsIGJ5dGVjb2RlT2Zmc2V0LCBvdXQpOworICAgICAgICBzdGVwT3Zlckluc3Ry
dWN0aW9uKGdyYXBoLCBieXRlY29kZU9mZnNldCwgb3V0KTsKICAgICB9CiAKICAgICByZXN1bHQu
c2V0KG91dCk7CiB9CiAKLXN0YXRpYyB2b2lkIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQmxvY2so
Q29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2ssIFZlY3Rvcjxz
dGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mIGJhc2ljQmxvY2tzKQorc3RhdGlj
IHZvaWQgY29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCbG9jayhCeXRlY29kZUdyYXBoPENvZGVCbG9j
az4mIGdyYXBoLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrKQogewogICAgIGlmIChibG9jay0+
aXNFeGl0QmxvY2soKSB8fCBibG9jay0+aXNFbnRyeUJsb2NrKCkpCiAgICAgICAgIHJldHVybjsK
LSAgICBjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9jaywgYmxv
Y2ssIGJhc2ljQmxvY2tzLCBibG9jay0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKSwgYmxvY2stPmlu
KCkpOworICAgIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQnl0ZWNvZGVPZmZzZXQoZ3JhcGgsIGJs
b2NrLCBibG9jay0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKSwgYmxvY2stPmluKCkpOwogfQogCiB2
b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6cnVuTGl2ZW5lc3NGaXhwb2ludCgpCiB7Ci0g
ICAgVW5saW5rZWRDb2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrID0gbV9jb2RlQmxvY2stPnVu
bGlua2VkQ29kZUJsb2NrKCk7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBtX2dyYXBoLmNv
ZGVCbG9jaygpOworICAgIFVubGlua2VkQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jayA9IGNv
ZGVCbG9jay0+dW5saW5rZWRDb2RlQmxvY2soKTsKICAgICB1bnNpZ25lZCBudW1iZXJPZlZhcmlh
YmxlcyA9IHVubGlua2VkQ29kZUJsb2NrLT5tX251bUNhbGxlZUxvY2FsczsKIAotICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBtX2Jhc2ljQmxvY2tzLnNpemUoKTsgaSsrKSB7Ci0gICAgICAg
IEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2sgPSBtX2Jhc2ljQmxvY2tzW2ldLmdldCgpOworICAg
IGZvciAoc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4mIGJsb2NrIDogbV9ncmFw
aC5iYXNpY0Jsb2NrcygpKSB7CiAgICAgICAgIGJsb2NrLT5pbigpLnJlc2l6ZShudW1iZXJPZlZh
cmlhYmxlcyk7CiAgICAgICAgIGJsb2NrLT5vdXQoKS5yZXNpemUobnVtYmVyT2ZWYXJpYWJsZXMp
OwogICAgIH0KIAogICAgIGJvb2wgY2hhbmdlZDsKLSAgICBtX2Jhc2ljQmxvY2tzLmxhc3QoKS0+
aW4oKS5jbGVhckFsbCgpOwotICAgIG1fYmFzaWNCbG9ja3MubGFzdCgpLT5vdXQoKS5jbGVhckFs
bCgpOworICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogbGFzdEJsb2NrID0gbV9ncmFwaC5iYXNpY0Js
b2NrcygpLmxhc3QoKS5nZXQoKTsKKyAgICBsYXN0QmxvY2stPmluKCkuY2xlYXJBbGwoKTsKKyAg
ICBsYXN0QmxvY2stPm91dCgpLmNsZWFyQWxsKCk7CiAgICAgRmFzdEJpdFZlY3RvciBuZXdPdXQ7
Ci0gICAgbmV3T3V0LnJlc2l6ZShtX2Jhc2ljQmxvY2tzLmxhc3QoKS0+b3V0KCkubnVtQml0cygp
KTsKKyAgICBuZXdPdXQucmVzaXplKGxhc3RCbG9jay0+b3V0KCkubnVtQml0cygpKTsKICAgICBk
byB7CiAgICAgICAgIGNoYW5nZWQgPSBmYWxzZTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
bV9iYXNpY0Jsb2Nrcy5zaXplKCkgLSAxOyBpLS07KSB7Ci0gICAgICAgICAgICBCeXRlY29kZUJh
c2ljQmxvY2sqIGJsb2NrID0gbV9iYXNpY0Jsb2Nrc1tpXS5nZXQoKTsKKyAgICAgICAgZm9yIChz
dGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiYgYmxvY2sgOiBtX2dyYXBoLmJhc2lj
QmxvY2tzSW5SZXZlcnNlT3JkZXIoKSkgewogICAgICAgICAgICAgbmV3T3V0LmNsZWFyQWxsKCk7
Ci0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSAwOyBqIDwgYmxvY2stPnN1Y2Nlc3NvcnMo
KS5zaXplKCk7IGorKykKLSAgICAgICAgICAgICAgICBuZXdPdXQubWVyZ2UoYmxvY2stPnN1Y2Nl
c3NvcnMoKVtqXS0+aW4oKSk7CisgICAgICAgICAgICBmb3IgKEJ5dGVjb2RlQmFzaWNCbG9jayog
c3VjY2Vzc29yIDogYmxvY2stPnN1Y2Nlc3NvcnMoKSkKKyAgICAgICAgICAgICAgICBuZXdPdXQu
bWVyZ2Uoc3VjY2Vzc29yLT5pbigpKTsKICAgICAgICAgICAgIGJvb2wgb3V0RGlkQ2hhbmdlID0g
YmxvY2stPm91dCgpLnNldEFuZENoZWNrKG5ld091dCk7Ci0gICAgICAgICAgICBjb21wdXRlTG9j
YWxMaXZlbmVzc0ZvckJsb2NrKG1fY29kZUJsb2NrLCBibG9jaywgbV9iYXNpY0Jsb2Nrcyk7Cisg
ICAgICAgICAgICBjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJsb2NrKG1fZ3JhcGgsIGJsb2NrLmdl
dCgpKTsKICAgICAgICAgICAgIGNoYW5nZWQgfD0gb3V0RGlkQ2hhbmdlOwogICAgICAgICB9CiAg
ICAgfSB3aGlsZSAoY2hhbmdlZCk7CkBAIC0yMTcsMTIgKzE2NSwxMiBAQCB2b2lkIEJ5dGVjb2Rl
TGl2ZW5lc3NBbmFseXNpczo6cnVuTGl2ZW5lc3NGaXhwb2ludCgpCiAKIHZvaWQgQnl0ZWNvZGVM
aXZlbmVzc0FuYWx5c2lzOjpnZXRMaXZlbmVzc0luZm9BdEJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVk
IGJ5dGVjb2RlT2Zmc2V0LCBGYXN0Qml0VmVjdG9yJiByZXN1bHQpCiB7Ci0gICAgQnl0ZWNvZGVC
YXNpY0Jsb2NrKiBibG9jayA9IGZpbmRCYXNpY0Jsb2NrRm9yQnl0ZWNvZGVPZmZzZXQobV9iYXNp
Y0Jsb2NrcywgYnl0ZWNvZGVPZmZzZXQpOworICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2sg
PSBtX2dyYXBoLmZpbmRCYXNpY0Jsb2NrRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQp
OwogICAgIEFTU0VSVChibG9jayk7CiAgICAgQVNTRVJUKCFibG9jay0+aXNFbnRyeUJsb2NrKCkp
OwogICAgIEFTU0VSVCghYmxvY2stPmlzRXhpdEJsb2NrKCkpOwogICAgIHJlc3VsdC5yZXNpemUo
YmxvY2stPm91dCgpLm51bUJpdHMoKSk7Ci0gICAgY29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCeXRl
Y29kZU9mZnNldChtX2NvZGVCbG9jaywgYmxvY2ssIG1fYmFzaWNCbG9ja3MsIGJ5dGVjb2RlT2Zm
c2V0LCByZXN1bHQpOworICAgIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQnl0ZWNvZGVPZmZzZXQo
bV9ncmFwaCwgYmxvY2ssIGJ5dGVjb2RlT2Zmc2V0LCByZXN1bHQpOwogfQogCiBib29sIEJ5dGVj
b2RlTGl2ZW5lc3NBbmFseXNpczo6b3BlcmFuZElzTGl2ZUF0Qnl0ZWNvZGVPZmZzZXQoaW50IG9w
ZXJhbmQsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KQpAQCAtMjQ0LDExICsxOTIsMTEgQEAgRmFz
dEJpdFZlY3RvciBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmdldExpdmVuZXNzSW5mb0F0Qnl0
ZWNvZGVPZmZzZXQodW5zaWduZWQKIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpjb21w
dXRlRnVsbExpdmVuZXNzKEZ1bGxCeXRlY29kZUxpdmVuZXNzJiByZXN1bHQpCiB7CiAgICAgRmFz
dEJpdFZlY3RvciBvdXQ7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBtX2dyYXBoLmNvZGVC
bG9jaygpOwogICAgIAotICAgIHJlc3VsdC5tX21hcC5yZXNpemUobV9jb2RlQmxvY2stPmluc3Ry
dWN0aW9ucygpLnNpemUoKSk7CisgICAgcmVzdWx0Lm1fbWFwLnJlc2l6ZShjb2RlQmxvY2stPmlu
c3RydWN0aW9ucygpLnNpemUoKSk7CiAgICAgCi0gICAgZm9yICh1bnNpZ25lZCBpID0gbV9iYXNp
Y0Jsb2Nrcy5zaXplKCk7IGktLTspIHsKLSAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9j
ayA9IG1fYmFzaWNCbG9ja3NbaV0uZ2V0KCk7CisgICAgZm9yIChzdGQ6OnVuaXF1ZV9wdHI8Qnl0
ZWNvZGVCYXNpY0Jsb2NrPiYgYmxvY2sgOiBtX2dyYXBoLmJhc2ljQmxvY2tzSW5SZXZlcnNlT3Jk
ZXIoKSkgewogICAgICAgICBpZiAoYmxvY2stPmlzRW50cnlCbG9jaygpIHx8IGJsb2NrLT5pc0V4
aXRCbG9jaygpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIApAQCAtMjU2LDcgKzIw
NCw3IEBAIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlRnVsbExpdmVuZXNz
KEZ1bGxCeXRlY29kZUxpdmVuZXNzJiByZXN1bHQpCiAgICAgICAgIAogICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSBibG9jay0+Ynl0ZWNvZGVPZmZzZXRzKCkuc2l6ZSgpOyBpLS07KSB7CiAgICAg
ICAgICAgICB1bnNpZ25lZCBieXRlY29kZU9mZnNldCA9IGJsb2NrLT5ieXRlY29kZU9mZnNldHMo
KVtpXTsKLSAgICAgICAgICAgIHN0ZXBPdmVySW5zdHJ1Y3Rpb24obV9jb2RlQmxvY2ssIGJsb2Nr
LCBtX2Jhc2ljQmxvY2tzLCBieXRlY29kZU9mZnNldCwgb3V0KTsKKyAgICAgICAgICAgIHN0ZXBP
dmVySW5zdHJ1Y3Rpb24obV9ncmFwaCwgYnl0ZWNvZGVPZmZzZXQsIG91dCk7CiAgICAgICAgICAg
ICByZXN1bHQubV9tYXBbYnl0ZWNvZGVPZmZzZXRdID0gb3V0OwogICAgICAgICB9CiAgICAgfQpA
QCAtMjY2LDExICsyMTQsMTEgQEAgdm9pZCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1
dGVLaWxscyhCeXRlY29kZUtpbGxzJiByZXN1bHQpCiB7CiAgICAgRmFzdEJpdFZlY3RvciBvdXQ7
CiAgICAgCi0gICAgcmVzdWx0Lm1fY29kZUJsb2NrID0gbV9jb2RlQmxvY2s7Ci0gICAgcmVzdWx0
Lm1fa2lsbFNldHMgPSBzdGQ6Om1ha2VfdW5pcXVlPEJ5dGVjb2RlS2lsbHM6OktpbGxTZXRbXT4o
bV9jb2RlQmxvY2stPmluc3RydWN0aW9ucygpLnNpemUoKSk7CisgICAgQ29kZUJsb2NrKiBjb2Rl
QmxvY2sgPSBtX2dyYXBoLmNvZGVCbG9jaygpOworICAgIHJlc3VsdC5tX2NvZGVCbG9jayA9IGNv
ZGVCbG9jazsKKyAgICByZXN1bHQubV9raWxsU2V0cyA9IHN0ZDo6bWFrZV91bmlxdWU8Qnl0ZWNv
ZGVLaWxsczo6S2lsbFNldFtdPihjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLnNpemUoKSk7CiAg
ICAgCi0gICAgZm9yICh1bnNpZ25lZCBpID0gbV9iYXNpY0Jsb2Nrcy5zaXplKCk7IGktLTspIHsK
LSAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jayA9IG1fYmFzaWNCbG9ja3NbaV0uZ2V0
KCk7CisgICAgZm9yIChzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiYgYmxvY2sg
OiBtX2dyYXBoLmJhc2ljQmxvY2tzSW5SZXZlcnNlT3JkZXIoKSkgewogICAgICAgICBpZiAoYmxv
Y2stPmlzRW50cnlCbG9jaygpIHx8IGJsb2NrLT5pc0V4aXRCbG9jaygpKQogICAgICAgICAgICAg
Y29udGludWU7CiAgICAgICAgIApAQCAtMjc5LDcgKzIyNyw3IEBAIHZvaWQgQnl0ZWNvZGVMaXZl
bmVzc0FuYWx5c2lzOjpjb21wdXRlS2lsbHMoQnl0ZWNvZGVLaWxscyYgcmVzdWx0KQogICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSBibG9jay0+Ynl0ZWNvZGVPZmZzZXRzKCkuc2l6ZSgpOyBpLS07
KSB7CiAgICAgICAgICAgICB1bnNpZ25lZCBieXRlY29kZU9mZnNldCA9IGJsb2NrLT5ieXRlY29k
ZU9mZnNldHMoKVtpXTsKICAgICAgICAgICAgIHN0ZXBPdmVySW5zdHJ1Y3Rpb24oCi0gICAgICAg
ICAgICAgICAgbV9jb2RlQmxvY2ssIGJsb2NrLCBtX2Jhc2ljQmxvY2tzLCBieXRlY29kZU9mZnNl
dCwKKyAgICAgICAgICAgICAgICBtX2dyYXBoLCBieXRlY29kZU9mZnNldCwKICAgICAgICAgICAg
ICAgICBbJl0gKHVuc2lnbmVkIGluZGV4KSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMg
aXMgZm9yIHVzZXMuCiAgICAgICAgICAgICAgICAgICAgIGlmIChvdXQuZ2V0KGluZGV4KSkKQEAg
LTI5NywxMiArMjQ1LDEzIEBAIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpjb21wdXRl
S2lsbHMoQnl0ZWNvZGVLaWxscyYgcmVzdWx0KQogCiB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFs
eXNpczo6ZHVtcFJlc3VsdHMoKQogewotICAgIGRhdGFMb2coIlxuRHVtcGluZyBieXRlY29kZSBs
aXZlbmVzcyBmb3IgIiwgKm1fY29kZUJsb2NrLCAiOlxuIik7Ci0gICAgSW50ZXJwcmV0ZXIqIGlu
dGVycHJldGVyID0gbV9jb2RlQmxvY2stPnZtKCktPmludGVycHJldGVyOwotICAgIEluc3RydWN0
aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiA9IG1fY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdp
bigpOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2Jhc2ljQmxvY2tzLnNpemUoKTsg
aSsrKSB7Ci0gICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2sgPSBtX2Jhc2ljQmxvY2tz
W2ldLmdldCgpOwotICAgICAgICBkYXRhTG9nRigiXG5CeXRlY29kZSBiYXNpYyBibG9jayAldTog
JXAgKG9mZnNldDogJXUsIGxlbmd0aDogJXUpXG4iLCBpLCBibG9jaywgYmxvY2stPmxlYWRlckJ5
dGVjb2RlT2Zmc2V0KCksIGJsb2NrLT50b3RhbEJ5dGVjb2RlTGVuZ3RoKCkpOworICAgIENvZGVC
bG9jayogY29kZUJsb2NrID0gbV9ncmFwaC5jb2RlQmxvY2soKTsKKyAgICBkYXRhTG9nKCJcbkR1
bXBpbmcgYnl0ZWNvZGUgbGl2ZW5lc3MgZm9yICIsICpjb2RlQmxvY2ssICI6XG4iKTsKKyAgICBJ
bnRlcnByZXRlciogaW50ZXJwcmV0ZXIgPSBjb2RlQmxvY2stPnZtKCktPmludGVycHJldGVyOwor
ICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiA9IGNvZGVCbG9jay0+aW5zdHJ1Y3Rp
b25zKCkuYmVnaW4oKTsKKyAgICB1bnNpZ25lZCBpID0gMDsKKyAgICBmb3IgKHN0ZDo6dW5pcXVl
X3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+JiBibG9jayA6IG1fZ3JhcGguYmFzaWNCbG9ja3MoKSkg
eworICAgICAgICBkYXRhTG9nRigiXG5CeXRlY29kZSBiYXNpYyBibG9jayAldTogJXAgKG9mZnNl
dDogJXUsIGxlbmd0aDogJXUpXG4iLCBpKyssIGJsb2NrLmdldCgpLCBibG9jay0+bGVhZGVyQnl0
ZWNvZGVPZmZzZXQoKSwgYmxvY2stPnRvdGFsQnl0ZWNvZGVMZW5ndGgoKSk7CiAgICAgICAgIGRh
dGFMb2dGKCJTdWNjZXNzb3JzOiAiKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8
IGJsb2NrLT5zdWNjZXNzb3JzKCkuc2l6ZSgpOyBqKyspIHsKICAgICAgICAgICAgIEJ5dGVjb2Rl
QmFzaWNCbG9jayogc3VjY2Vzc29yID0gYmxvY2stPnN1Y2Nlc3NvcnMoKVtqXTsKQEAgLTMxMCwx
MSArMjU5LDExIEBAIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpkdW1wUmVzdWx0cygp
CiAgICAgICAgIH0KICAgICAgICAgZGF0YUxvZ0YoIlxuIik7CiAgICAgICAgIGlmIChibG9jay0+
aXNFbnRyeUJsb2NrKCkpIHsKLSAgICAgICAgICAgIGRhdGFMb2dGKCJFbnRyeSBibG9jayAlcFxu
IiwgYmxvY2spOworICAgICAgICAgICAgZGF0YUxvZ0YoIkVudHJ5IGJsb2NrICVwXG4iLCBibG9j
ay5nZXQoKSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogICAgICAgICBpZiAo
YmxvY2stPmlzRXhpdEJsb2NrKCkpIHsKLSAgICAgICAgICAgIGRhdGFMb2dGKCJFeGl0IGJsb2Nr
OiAlcFxuIiwgYmxvY2spOworICAgICAgICAgICAgZGF0YUxvZ0YoIkV4aXQgYmxvY2s6ICVwXG4i
LCBibG9jay5nZXQoKSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogICAgICAg
ICBmb3IgKHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0ID0gYmxvY2stPmxlYWRlckJ5dGVjb2RlT2Zm
c2V0KCk7IGJ5dGVjb2RlT2Zmc2V0IDwgYmxvY2stPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCkgKyBi
bG9jay0+dG90YWxCeXRlY29kZUxlbmd0aCgpOykgewpAQCAtMzI3LDcgKzI3Niw3IEBAIHZvaWQg
Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpkdW1wUmVzdWx0cygpCiAgICAgICAgICAgICAgICAg
ICAgIGRhdGFMb2dGKCIldSAiLCBqKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGRhdGFM
b2dGKCJcbiIpOwotICAgICAgICAgICAgbV9jb2RlQmxvY2stPmR1bXBCeXRlY29kZShXVEY6OmRh
dGFGaWxlKCksIG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpLCBpbnN0
cnVjdGlvbnNCZWdpbiwgY3VycmVudEluc3RydWN0aW9uKTsKKyAgICAgICAgICAgIGNvZGVCbG9j
ay0+ZHVtcEJ5dGVjb2RlKFdURjo6ZGF0YUZpbGUoKSwgY29kZUJsb2NrLT5nbG9iYWxPYmplY3Qo
KS0+Z2xvYmFsRXhlYygpLCBpbnN0cnVjdGlvbnNCZWdpbiwgY3VycmVudEluc3RydWN0aW9uKTsK
IAogICAgICAgICAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnRlcnByZXRlci0+Z2V0T3Bjb2Rl
SUQoaW5zdHJ1Y3Rpb25zQmVnaW5bYnl0ZWNvZGVPZmZzZXRdLnUub3Bjb2RlKTsKICAgICAgICAg
ICAgIHVuc2lnbmVkIG9wY29kZUxlbmd0aCA9IG9wY29kZUxlbmd0aHNbb3Bjb2RlSURdOwpAQCAt
MzQ2LDggKzI5NSw2IEBAIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpkdW1wUmVzdWx0
cygpCiAKIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlKCkKIHsKLSAgICBj
b21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2NrcyhtX2NvZGVCbG9jaywgbV9iYXNpY0Jsb2Nrcyk7Ci0g
ICAgQVNTRVJUKG1fYmFzaWNCbG9ja3Muc2l6ZSgpKTsKICAgICBydW5MaXZlbmVzc0ZpeHBvaW50
KCk7CiAKICAgICBpZiAoT3B0aW9uczo6ZHVtcEJ5dGVjb2RlTGl2ZW5lc3NSZXN1bHRzKCkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVz
c0FuYWx5c2lzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZl
bmVzc0FuYWx5c2lzLmgKaW5kZXggZWNlMTZmMjFmMDE1MTBhNjQyN2ZkODQxMTQwNzliZWQ4NzBj
MDg3NS4uMTk0ZWE0ZTM4NjNmODNkOGYxZDc0ZTU0OGI3N2I5Y2Q1NWUwMDc0MyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNp
cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNz
QW5hbHlzaXMuaApAQCAtMjcsNiArMjcsOCBAQAogI2RlZmluZSBCeXRlY29kZUxpdmVuZXNzQW5h
bHlzaXNfaAogCiAjaW5jbHVkZSAiQnl0ZWNvZGVCYXNpY0Jsb2NrLmgiCisjaW5jbHVkZSAiQnl0
ZWNvZGVHcmFwaC5oIgorI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgPHd0Zi9GYXN0
Qml0VmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CkBAIC0zNCw3ICszNiw2IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgQnl0ZWNv
ZGVLaWxsczsKLWNsYXNzIENvZGVCbG9jazsKIGNsYXNzIEZ1bGxCeXRlY29kZUxpdmVuZXNzOwog
CiBjbGFzcyBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMgewpAQCAtNTYsOCArNTcsNyBAQCBjbGFz
cyBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMgewogCiAgICAgdm9pZCBnZXRMaXZlbmVzc0luZm9B
dEJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBGYXN0Qml0VmVjdG9yJik7
CiAKLSAgICBDb2RlQmxvY2sqIG1fY29kZUJsb2NrOwotICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9w
dHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4gbV9iYXNpY0Jsb2NrczsKKyAgICBCeXRlY29kZUdyYXBo
PENvZGVCbG9jaz4gbV9ncmFwaDsKIH07CiAKIGlubGluZSBib29sIG9wZXJhbmRJc0Fsd2F5c0xp
dmUoaW50IG9wZXJhbmQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlVXNlRGVmLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVVc2VEZWYuaAppbmRleCA5ODFmYjFkMGZlYzA1NzA0ZDViN2Y2NmVjNDQxODI1N2U4M2Fh
YzM2Li5lZDJlNmJkYzA0NTQzYWI2ZTdhNWQxZjIyM2MwOGE4ZWJmNzRmOGYyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaApAQCAtMjcsMTgg
KzI3LDEzIEBACiAjZGVmaW5lIEJ5dGVjb2RlVXNlRGVmX2gKIAogI2luY2x1ZGUgIkNvZGVCbG9j
ay5oIgorI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCi10ZW1w
bGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgotdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0
KAotICAgIENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrLCB1
bnNpZ25lZCBieXRlY29kZU9mZnNldCwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikKK3RlbXBsYXRl
PHR5cGVuYW1lIEJsb2NrLCB0eXBlbmFtZSBGdW5jdG9yLCB0eXBlbmFtZSBJbnN0cnVjdGlvbj4K
K3ZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldChCbG9jayogY29kZUJsb2NrLCBPcGNv
ZGVJRCBvcGNvZGVJRCwgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBjb25zdCBGdW5jdG9yJiBm
dW5jdG9yKQogewotICAgIEludGVycHJldGVyKiBpbnRlcnByZXRlciA9IGNvZGVCbG9jay0+dm0o
KS0+aW50ZXJwcmV0ZXI7Ci0gICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luID0gY29k
ZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpOwotICAgIEluc3RydWN0aW9uKiBpbnN0cnVj
dGlvbiA9ICZpbnN0cnVjdGlvbnNCZWdpbltieXRlY29kZU9mZnNldF07Ci0gICAgT3Bjb2RlSUQg
b3Bjb2RlSUQgPSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb24tPnUub3Bjb2Rl
KTsKLQogICAgIGlmIChvcGNvZGVJRCAhPSBvcF9lbnRlciAmJiBjb2RlQmxvY2stPndhc0NvbXBp
bGVkV2l0aERlYnVnZ2luZ09wY29kZXMoKSAmJiBjb2RlQmxvY2stPnNjb3BlUmVnaXN0ZXIoKS5p
c1ZhbGlkKCkpCiAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2Rl
SUQsIGNvZGVCbG9jay0+c2NvcGVSZWdpc3RlcigpLm9mZnNldCgpKTsKIApAQCAtNzUsOCArNzAs
NyBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoCiAgICAgY2FzZSBvcF9qbmVx
X251bGw6CiAgICAgY2FzZSBvcF9kZWM6CiAgICAgY2FzZSBvcF9pbmM6Ci0gICAgY2FzZSBvcF9s
b2dfc2hhZG93X2NoaWNrZW5fcHJvbG9ndWU6Ci0gICAgY2FzZSBvcF9yZXN1bWU6IHsKKyAgICBj
YXNlIG9wX2xvZ19zaGFkb3dfY2hpY2tlbl9wcm9sb2d1ZTogewogICAgICAgICBBU1NFUlQob3Bj
b2RlTGVuZ3Roc1tvcGNvZGVJRF0gPiAxKTsKICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGlu
c3RydWN0aW9uLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKTsKICAgICAgICAg
cmV0dXJuOwpAQCAtMjg0LDIyICsyNzgsMTMgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2Rl
T2Zmc2V0KAogICAgICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNv
ZGVJRCwgbGFzdEFyZyArIGkpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGNhc2Ugb3Bf
c2F2ZTogewotICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlE
LCBpbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOwotICAgICAgICB1bnNpZ25lZCBtZXJnZVBvaW50
Qnl0ZWNvZGVPZmZzZXQgPSBieXRlY29kZU9mZnNldCArIGluc3RydWN0aW9uWzNdLnUub3BlcmFu
ZDsKLSAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBtZXJnZVBvaW50QmxvY2sgPSBudWxscHRy
OwotICAgICAgICBmb3IgKEJ5dGVjb2RlQmFzaWNCbG9jayogc3VjY2Vzc29yIDogYmxvY2stPnN1
Y2Nlc3NvcnMoKSkgewotICAgICAgICAgICAgaWYgKHN1Y2Nlc3Nvci0+bGVhZGVyQnl0ZWNvZGVP
ZmZzZXQoKSA9PSBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXQpIHsKLSAgICAgICAgICAgICAgICBt
ZXJnZVBvaW50QmxvY2sgPSBzdWNjZXNzb3I7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgQVNTRVJUKG1lcmdlUG9pbnRCbG9jayk7Ci0g
ICAgICAgIG1lcmdlUG9pbnRCbG9jay0+aW4oKS5mb3JFYWNoU2V0Qml0KFsmXSh1bnNpZ25lZCBs
b2NhbCkgewotICAgICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNv
ZGVJRCwgdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwobG9jYWwpLm9mZnNldCgpKTsKLSAgICAgICAg
fSk7CisKKyAgICBjYXNlIG9wX3NhdmU6CisgICAgY2FzZSBvcF9yZXN1bWU6IHsKKyAgICAgICAg
Ly8gRG8gbm90aGluZyBpbiBsaXZlbmVzcyBhbmFseXNpcy4KICAgICAgICAgcmV0dXJuOwogICAg
IH0KKwogICAgIGRlZmF1bHQ6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAgICAgICAgIGJyZWFrOwpAQCAtMzA3LDEyICsyOTIsMTggQEAgdm9pZCBjb21wdXRlVXNlc0Zv
ckJ5dGVjb2RlT2Zmc2V0KAogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgotdm9pZCBj
b21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29k
ZUJhc2ljQmxvY2sqIGJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgY29uc3QgRnVuY3Rv
ciYgZnVuY3RvcikKK3ZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sq
IGNvZGVCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0
b3IpCiB7CiAgICAgSW50ZXJwcmV0ZXIqIGludGVycHJldGVyID0gY29kZUJsb2NrLT52bSgpLT5p
bnRlcnByZXRlcjsKICAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4gPSBjb2RlQmxv
Y2stPmluc3RydWN0aW9ucygpLmJlZ2luKCk7CiAgICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9u
ID0gJmluc3RydWN0aW9uc0JlZ2luW2J5dGVjb2RlT2Zmc2V0XTsKICAgICBPcGNvZGVJRCBvcGNv
ZGVJRCA9IGludGVycHJldGVyLT5nZXRPcGNvZGVJRChpbnN0cnVjdGlvbi0+dS5vcGNvZGUpOwor
ICAgIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoY29kZUJsb2NrLCBvcGNvZGVJRCwgaW5z
dHJ1Y3Rpb24sIGZ1bmN0b3IpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBCbG9jaywgdHlwZW5h
bWUgSW5zdHJ1Y3Rpb24sIHR5cGVuYW1lIEZ1bmN0b3I+Cit2b2lkIGNvbXB1dGVEZWZzRm9yQnl0
ZWNvZGVPZmZzZXQoQmxvY2sqIGNvZGVCbG9jaywgT3Bjb2RlSUQgb3Bjb2RlSUQsIEluc3RydWN0
aW9uKiBpbnN0cnVjdGlvbiwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikKK3sKICAgICBzd2l0Y2gg
KG9wY29kZUlEKSB7CiAgICAgLy8gVGhlc2UgZG9uJ3QgZGVmaW5lIGFueXRoaW5nLgogICAgIGNh
c2Ugb3BfY29weV9yZXN0OgpAQCAtMzIwLDcgKzMxMSw2IEBAIHZvaWQgY29tcHV0ZURlZnNGb3JC
eXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBi
bG9jCiAgICAgY2FzZSBvcF9lbmQ6CiAgICAgY2FzZSBvcF90aHJvdzoKICAgICBjYXNlIG9wX3Ro
cm93X3N0YXRpY19lcnJvcjoKLSAgICBjYXNlIG9wX3NhdmU6CiAgICAgY2FzZSBvcF9hc3NlcnQ6
CiAgICAgY2FzZSBvcF9kZWJ1ZzoKICAgICBjYXNlIG9wX3JldDoKQEAgLTQ1OSw3ICs0NDksNyBA
QCB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvYwogICAgIGNhc2Ugb3BfZGVsX2J5X2lkOgogICAgIGNh
c2Ugb3BfZGVsX2J5X3ZhbDoKICAgICBjYXNlIG9wX3Vuc2lnbmVkOgotICAgIGNhc2Ugb3BfZ2V0
X2Zyb21fYXJndW1lbnRzOiAKKyAgICBjYXNlIG9wX2dldF9mcm9tX2FyZ3VtZW50czoKICAgICBj
YXNlIG9wX2dldF9yZXN0X2xlbmd0aDogewogICAgICAgICBBU1NFUlQob3Bjb2RlTGVuZ3Roc1tv
cGNvZGVJRF0gPiAxKTsKICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBv
cGNvZGVJRCwgaW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKTsKQEAgLTQ3NiwxOCArNDY2LDI3IEBA
IHZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywg
Qnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jCiAgICAgICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywg
aW5zdHJ1Y3Rpb24sIG9wY29kZUlELCB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChpKS5vZmZzZXQo
KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CisgICAgY2FzZSBvcF9zYXZlOgogICAgIGNhc2Ug
b3BfcmVzdW1lOiB7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKGJsb2NrLT5zdWNjZXNzb3JzKCku
c2l6ZSgpID09IDEpOwotICAgICAgICAvLyBGSVhNRTogVGhpcyBpcyByZWFsbHkgZGlydHkuCi0g
ICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTkyODEK
LSAgICAgICAgYmxvY2stPnN1Y2Nlc3NvcnMoKVswXS0+aW4oKS5mb3JFYWNoU2V0Qml0KFsmXSh1
bnNpZ25lZCBsb2NhbCkgewotICAgICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0
aW9uLCBvcGNvZGVJRCwgdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwobG9jYWwpLm9mZnNldCgpKTsK
LSAgICAgICAgfSk7CisgICAgICAgIC8vIERvIG5vdGhpbmcgaW4gbGl2ZW5lc3MgYW5hbHlzaXMu
CiAgICAgICAgIHJldHVybjsKICAgICB9CisgICAgZGVmYXVsdDoKKyAgICAgICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KIH0KIAordGVtcGxh
dGU8dHlwZW5hbWUgRnVuY3Rvcj4KK3ZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChD
b2RlQmxvY2sqIGNvZGVCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIGNvbnN0IEZ1bmN0
b3ImIGZ1bmN0b3IpCit7CisgICAgSW50ZXJwcmV0ZXIqIGludGVycHJldGVyID0gY29kZUJsb2Nr
LT52bSgpLT5pbnRlcnByZXRlcjsKKyAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4g
PSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCk7CisgICAgSW5zdHJ1Y3Rpb24qIGlu
c3RydWN0aW9uID0gJmluc3RydWN0aW9uc0JlZ2luW2J5dGVjb2RlT2Zmc2V0XTsKKyAgICBPcGNv
ZGVJRCBvcGNvZGVJRCA9IGludGVycHJldGVyLT5nZXRPcGNvZGVJRChpbnN0cnVjdGlvbi0+dS5v
cGNvZGUpOworICAgIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoY29kZUJsb2NrLCBvcGNv
ZGVJRCwgaW5zdHJ1Y3Rpb24sIGZ1bmN0b3IpOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAog
I2VuZGlmIC8vIEJ5dGVjb2RlVXNlRGVmX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5jcHAKaW5kZXggOTlkYTVmMzcxZDJmNDVhYzJjOGRhZjY1MTAyYmZlZTQ2
OTQ0NTk3MC4uZTA1N2U4YzAzZjNiNDdhODUyODRkNDZmMTAzOTU5ZGIzYjk5MzM4MiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTMyLDYgKzMy
LDcgQEAKIAogI2luY2x1ZGUgIkJhc2ljQmxvY2tMb2NhdGlvbi5oIgogI2luY2x1ZGUgIkJ5dGVj
b2RlR2VuZXJhdG9yLmgiCisjaW5jbHVkZSAiQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmgiCiAj
aW5jbHVkZSAiQnl0ZWNvZGVVc2VEZWYuaCIKICNpbmNsdWRlICJDYWxsTGlua1N0YXR1cy5oIgog
I2luY2x1ZGUgIkRGR0NhcGFiaWxpdGllcy5oIgpAQCAtNjkyLDE4ICs2OTMsNiBAQCB2b2lkIENv
ZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKFByaW50U3RyZWFtJiBvdXQpCiAgICAgICAgIH0gd2hpbGUg
KGkgPCBtX3JhcmVEYXRhLT5tX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXMuc2l6ZSgpKTsKICAgICB9
CiAKLSAgICBpZiAobV9yYXJlRGF0YSAmJiAhbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxz
QXRZaWVsZC5pc0VtcHR5KCkpIHsKLSAgICAgICAgb3V0LnByaW50ZigiXG5MaXZlIENhbGxlZSBM
b2NhbHM6XG4iKTsKLSAgICAgICAgdW5zaWduZWQgaSA9IDA7Ci0gICAgICAgIGRvIHsKLSAgICAg
ICAgICAgIGNvbnN0IEZhc3RCaXRWZWN0b3ImIGxpdmVuZXNzID0gbV9yYXJlRGF0YS0+bV9saXZl
Q2FsbGVlTG9jYWxzQXRZaWVsZFtpXTsKLSAgICAgICAgICAgIG91dC5wcmludGYoIiAgbGl2ZSUx
dSA9ICIsIGkpOwotICAgICAgICAgICAgbGl2ZW5lc3MuZHVtcChvdXQpOwotICAgICAgICAgICAg
b3V0LnByaW50ZigiXG4iKTsKLSAgICAgICAgICAgICsraTsKLSAgICAgICAgfSB3aGlsZSAoaSA8
IG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQuc2l6ZSgpKTsKLSAgICB9Ci0K
ICAgICBvdXQucHJpbnRmKCJcbiIpOwogfQogCkBAIC0xNjYyLDMxICsxNjUxLDYgQEAgdm9pZCBD
b2RlQmxvY2s6OmR1bXBCeXRlY29kZSgKICAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAlZCIs
IGRlYnVnSG9va05hbWUoZGVidWdIb29rSUQpLCBoYXNCcmVha3BvaW50RmxhZyk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBjYXNlIG9wX3NhdmU6IHsKLSAgICAgICAg
ICAgIGludCBnZW5lcmF0b3IgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIHVuc2ln
bmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9ICgrK2l0KS0+dS51bnNpZ25lZFZhbHVlOwotICAg
ICAgICAgICAgaW50IG9mZnNldCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgRmFz
dEJpdFZlY3RvciBsaXZlbmVzczsKLSAgICAgICAgICAgIGlmIChsaXZlQ2FsbGVlTG9jYWxzSW5k
ZXggPCBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkLnNpemUoKSkKLSAgICAg
ICAgICAgICAgICBsaXZlbmVzcyA9IG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWll
bGRbbGl2ZUNhbGxlZUxvY2Fsc0luZGV4XTsKLSAgICAgICAgICAgIHByaW50TG9jYXRpb25BbmRP
cChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgInNhdmUiKTsKLSAgICAgICAgICAgIG91dC5wcmlu
dGYoIiVzLCAiLCByZWdpc3Rlck5hbWUoZ2VuZXJhdG9yKS5kYXRhKCkpOwotICAgICAgICAgICAg
bGl2ZW5lc3MuZHVtcChvdXQpOwotICAgICAgICAgICAgb3V0LnByaW50ZigiKEBsaXZlJTF1KSwg
JWQoLT4lZCkiLCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXgsIG9mZnNldCwgbG9jYXRpb24gKyBvZmZz
ZXQpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBvcF9yZXN1
bWU6IHsKLSAgICAgICAgICAgIGludCBnZW5lcmF0b3IgPSAoKytpdCktPnUub3BlcmFuZDsKLSAg
ICAgICAgICAgIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9ICgrK2l0KS0+dS51bnNp
Z25lZFZhbHVlOwotICAgICAgICAgICAgRmFzdEJpdFZlY3RvciBsaXZlbmVzczsKLSAgICAgICAg
ICAgIGlmIChsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPCBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVM
b2NhbHNBdFlpZWxkLnNpemUoKSkKLSAgICAgICAgICAgICAgICBsaXZlbmVzcyA9IG1fcmFyZURh
dGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGRbbGl2ZUNhbGxlZUxvY2Fsc0luZGV4XTsKLSAg
ICAgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgInJl
c3VtZSIpOwotICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICIsIHJlZ2lzdGVyTmFtZShnZW5l
cmF0b3IpLmRhdGEoKSk7Ci0gICAgICAgICAgICBsaXZlbmVzcy5kdW1wKG91dCk7Ci0gICAgICAg
ICAgICBvdXQucHJpbnRmKCIoQGxpdmUlMXUpIiwgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4KTsKLSAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfYXNzZXJ0OiB7CiAg
ICAgICAgICAgICBpbnQgY29uZGl0aW9uID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAg
ICBpbnQgbGluZSA9ICgrK2l0KS0+dS5vcGVyYW5kOwpAQCAtMTg5OSw3ICsxODYzLDYgQEAgdm9p
ZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgQ29weVBhcnNlZEJsb2NrVGFnLCBD
b2RlQmxvY2smIG90aGVyKQogICAgICAgICBtX3JhcmVEYXRhLT5tX2NvbnN0YW50QnVmZmVycyA9
IG90aGVyLm1fcmFyZURhdGEtPm1fY29uc3RhbnRCdWZmZXJzOwogICAgICAgICBtX3JhcmVEYXRh
LT5tX3N3aXRjaEp1bXBUYWJsZXMgPSBvdGhlci5tX3JhcmVEYXRhLT5tX3N3aXRjaEp1bXBUYWJs
ZXM7CiAgICAgICAgIG1fcmFyZURhdGEtPm1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlcyA9IG90aGVy
Lm1fcmFyZURhdGEtPm1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlczsKLSAgICAgICAgbV9yYXJlRGF0
YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZCA9IG90aGVyLm1fcmFyZURhdGEtPm1fbGl2ZUNh
bGxlZUxvY2Fsc0F0WWllbGQ7CiAgICAgfQogICAgIAogICAgIGhlYXAoKS0+bV9jb2RlQmxvY2tz
LmFkZCh0aGlzKTsKQEAgLTIwMjEsNyArMTk4NCw3IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5pc2hD
cmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5r
CiAgICAgICAgICAgICAgICAgVW5saW5rZWRTdHJpbmdKdW1wVGFibGU6OlN0cmluZ09mZnNldFRh
YmxlOjppdGVyYXRvciBlbmQgPSB1bmxpbmtlZENvZGVCbG9jay0+c3RyaW5nU3dpdGNoSnVtcFRh
YmxlKGkpLm9mZnNldFRhYmxlLmVuZCgpOwogICAgICAgICAgICAgICAgIGZvciAoOyBwdHIgIT0g
ZW5kOyArK3B0cikgewogICAgICAgICAgICAgICAgICAgICBPZmZzZXRMb2NhdGlvbiBvZmZzZXQ7
Ci0gICAgICAgICAgICAgICAgICAgIG9mZnNldC5icmFuY2hPZmZzZXQgPSBwdHItPnZhbHVlOwor
ICAgICAgICAgICAgICAgICAgICBvZmZzZXQuYnJhbmNoT2Zmc2V0ID0gcHRyLT52YWx1ZS5icmFu
Y2hPZmZzZXQ7CiAgICAgICAgICAgICAgICAgICAgIG1fcmFyZURhdGEtPm1fc3RyaW5nU3dpdGNo
SnVtcFRhYmxlc1tpXS5vZmZzZXRUYWJsZS5hZGQocHRyLT5rZXksIG9mZnNldCk7CiAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgfQpAQCAtMjA2MSw5ICsyMDI0LDYgQEAgdm9pZCBDb2Rl
QmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVj
dXRhYmxlLCBVbmxpbmsKICAgICAvLyBCb29ra2VlcCB0aGUgc3Ryb25nbHkgcmVmZXJlbmNlZCBt
b2R1bGUgZW52aXJvbm1lbnRzLgogICAgIEhhc2hTZXQ8SlNNb2R1bGVFbnZpcm9ubWVudCo+IHN0
cm9uZ2x5UmVmZXJlbmNlZE1vZHVsZUVudmlyb25tZW50czsKIAotICAgIC8vIEJvb2trZWVwIHRo
ZSBtZXJnZSBwb2ludCBieXRlY29kZSBvZmZzZXRzLgotICAgIFZlY3RvcjxzaXplX3Q+IG1lcmdl
UG9pbnRCeXRlY29kZU9mZnNldHM7Ci0KICAgICBSZWZDb3VudGVkQXJyYXk8SW5zdHJ1Y3Rpb24+
IGluc3RydWN0aW9ucyhpbnN0cnVjdGlvbkNvdW50KTsKIAogICAgIGZvciAodW5zaWduZWQgaSA9
IDA7ICFpbnN0cnVjdGlvblJlYWRlci5hdEVuZCgpOyApIHsKQEAgLTIzNDYsMTUgKzIzMDYsNiBA
QCB2b2lkIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxl
KiBvd25lckV4ZWN1dGFibGUsIFVubGluawogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
IAotICAgICAgICBjYXNlIG9wX3NhdmU6IHsKLSAgICAgICAgICAgIHVuc2lnbmVkIGxpdmVDYWxs
ZWVMb2NhbHNJbmRleCA9IHBjWzJdLnUuaW5kZXg7Ci0gICAgICAgICAgICBpbnQgb2Zmc2V0ID0g
cGNbM10udS5vcGVyYW5kOwotICAgICAgICAgICAgaWYgKGxpdmVDYWxsZWVMb2NhbHNJbmRleCA+
PSBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXRzLnNpemUoKSkKLSAgICAgICAgICAgICAgICBtZXJn
ZVBvaW50Qnl0ZWNvZGVPZmZzZXRzLnJlc2l6ZShsaXZlQ2FsbGVlTG9jYWxzSW5kZXggKyAxKTsK
LSAgICAgICAgICAgIG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldHNbbGl2ZUNhbGxlZUxvY2Fsc0lu
ZGV4XSA9IGkgKyBvZmZzZXQ7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotCiAgICAg
ICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMjM2NiwyMCAr
MjMxNyw2IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4
ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAKICAgICBtX2luc3RydWN0aW9ucyA9
IFdURk1vdmUoaW5zdHJ1Y3Rpb25zKTsKIAotICAgIC8vIFBlcmZvcm0gYnl0ZWNvZGUgbGl2ZW5l
c3MgYW5hbHlzaXMgdG8gZGV0ZXJtaW5lIHdoaWNoIGxvY2FscyBhcmUgbGl2ZSBhbmQgc2hvdWxk
IGJlIHJlc3VtZWQgd2hlbiBleGVjdXRpbmcgb3BfcmVzdW1lLgotICAgIGlmICh1bmxpbmtlZENv
ZGVCbG9jay0+cGFyc2VNb2RlKCkgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JCb2R5TW9k
ZSkgewotICAgICAgICBpZiAoc2l6ZV90IGNvdW50ID0gbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0
cy5zaXplKCkpIHsKLSAgICAgICAgICAgIGNyZWF0ZVJhcmVEYXRhSWZOZWNlc3NhcnkoKTsKLSAg
ICAgICAgICAgIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcyBsaXZlbmVzcyh0aGlzKTsKLSAgICAg
ICAgICAgIG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQuZ3Jvdyhjb3VudCk7
Ci0gICAgICAgICAgICBzaXplX3QgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gMDsKLSAgICAgICAg
ICAgIGZvciAoc2l6ZV90IGJ5dGVjb2RlT2Zmc2V0IDogbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0
cykgewotICAgICAgICAgICAgICAgIG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWll
bGRbbGl2ZUNhbGxlZUxvY2Fsc0luZGV4XSA9IGxpdmVuZXNzLmdldExpdmVuZXNzSW5mb0F0Qnl0
ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpOwotICAgICAgICAgICAgICAgICsrbGl2ZUNhbGxl
ZUxvY2Fsc0luZGV4OwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCiAgICAgLy8g
U2V0IG9wdGltaXphdGlvbiB0aHJlc2hvbGRzIG9ubHkgYWZ0ZXIgbV9pbnN0cnVjdGlvbnMgaXMg
aW5pdGlhbGl6ZWQsIHNpbmNlIHRoZXNlCiAgICAgLy8gcmVseSBvbiB0aGUgaW5zdHJ1Y3Rpb24g
Y291bnQgKGFuZCBhcmUgaW4gdGhlb3J5IHBlcm1pdHRlZCB0byBhbHNvIGluc3BlY3QgdGhlCiAg
ICAgLy8gaW5zdHJ1Y3Rpb24gc3RyZWFtIHRvIG1vcmUgYWNjdXJhdGUgYXNzZXNzIHRoZSBjb3N0
IG9mIHRpZXItdXApLgpAQCAtMzE3OSwyMSArMzExNiw3IEBAIEhhbmRsZXJJbmZvKiBDb2RlQmxv
Y2s6OmhhbmRsZXJGb3JJbmRleCh1bnNpZ25lZCBpbmRleCwgUmVxdWlyZWRIYW5kbGVyIHJlcXVp
cmVkCiB7CiAgICAgaWYgKCFtX3JhcmVEYXRhKQogICAgICAgICByZXR1cm4gMDsKLSAgICAKLSAg
ICBWZWN0b3I8SGFuZGxlckluZm8+JiBleGNlcHRpb25IYW5kbGVycyA9IG1fcmFyZURhdGEtPm1f
ZXhjZXB0aW9uSGFuZGxlcnM7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBleGNlcHRpb25I
YW5kbGVycy5zaXplKCk7ICsraSkgewotICAgICAgICBIYW5kbGVySW5mbyYgaGFuZGxlciA9IGV4
Y2VwdGlvbkhhbmRsZXJzW2ldOwotICAgICAgICBpZiAoKHJlcXVpcmVkSGFuZGxlciA9PSBSZXF1
aXJlZEhhbmRsZXI6OkNhdGNoSGFuZGxlcikgJiYgIWhhbmRsZXIuaXNDYXRjaEhhbmRsZXIoKSkK
LSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIC8vIEhhbmRsZXJzIGFyZSBvcmRlcmVk
IGlubmVybW9zdCBmaXJzdCwgc28gdGhlIGZpcnN0IGhhbmRsZXIgd2UgZW5jb3VudGVyCi0gICAg
ICAgIC8vIHRoYXQgY29udGFpbnMgdGhlIHNvdXJjZSBhZGRyZXNzIGlzIHRoZSBjb3JyZWN0IGhh
bmRsZXIgdG8gdXNlLgotICAgICAgICAvLyBUaGlzIGluZGV4IHVzZWQgaXMgZWl0aGVyIHRoZSBC
eXRlY29kZU9mZnNldCBvciBhIENhbGxTaXRlSW5kZXguCi0gICAgICAgIGlmIChoYW5kbGVyLnN0
YXJ0IDw9IGluZGV4ICYmIGhhbmRsZXIuZW5kID4gaW5kZXgpCi0gICAgICAgICAgICByZXR1cm4g
JmhhbmRsZXI7Ci0gICAgfQotCi0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIEhhbmRsZXJJbmZv
OjpoYW5kbGVyRm9ySW5kZXgobV9yYXJlRGF0YS0+bV9leGNlcHRpb25IYW5kbGVycywgaW5kZXgs
IHJlcXVpcmVkSGFuZGxlcik7CiB9CiAKIENhbGxTaXRlSW5kZXggQ29kZUJsb2NrOjpuZXdFeGNl
cHRpb25IYW5kbGluZ0NhbGxTaXRlSW5kZXgoQ2FsbFNpdGVJbmRleCBvcmlnaW5hbENhbGxTaXRl
KQpAQCAtMzI4OSw3ICszMjEyLDYgQEAgdm9pZCBDb2RlQmxvY2s6OnNocmlua1RvRml0KFNocmlu
a01vZGUgc2hyaW5rTW9kZSkKICAgICAgICAgaWYgKG1fcmFyZURhdGEpIHsKICAgICAgICAgICAg
IG1fcmFyZURhdGEtPm1fc3dpdGNoSnVtcFRhYmxlcy5zaHJpbmtUb0ZpdCgpOwogICAgICAgICAg
ICAgbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzLnNocmlua1RvRml0KCk7Ci0g
ICAgICAgICAgICBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkLnNocmlua1Rv
Rml0KCk7CiAgICAgICAgIH0KICAgICB9IC8vIGVsc2UgZG9uJ3Qgc2hyaW5rIHRoZXNlLCBiZWNh
dXNlIHdlIHdvdWxkIGhhdmUgYWxyZWFkeSBwb2ludGVkIHBvaW50ZXJzIGludG8gdGhlc2UgdGFi
bGVzLgogfQpAQCAtNDU2Nyw0ICs0NDg5LDE2IEBAIHZvaWQgQ29kZUJsb2NrOjpqaXRTb29uKCkK
ICAgICBtX2xsaW50RXhlY3V0ZUNvdW50ZXIuc2V0TmV3VGhyZXNob2xkKHRocmVzaG9sZEZvckpJ
VChPcHRpb25zOjp0aHJlc2hvbGRGb3JKSVRTb29uKCkpLCB0aGlzKTsKIH0KIAorQnl0ZWNvZGVM
aXZlbmVzc0FuYWx5c2lzJiBDb2RlQmxvY2s6OmxpdmVuZXNzQW5hbHlzaXNTbG93KCkKK3sKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzPiBhbmFseXNpcyA9IHN0
ZDo6bWFrZV91bmlxdWU8Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzPih0aGlzKTsKKyAgICB7Cisg
ICAgICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKG1fbG9jayk7CisgICAgICAgIGlmICgh
bV9saXZlbmVzc0FuYWx5c2lzKQorICAgICAgICAgICAgbV9saXZlbmVzc0FuYWx5c2lzID0gV1RG
TW92ZShhbmFseXNpcyk7CisgICAgICAgIHJldHVybiAqbV9saXZlbmVzc0FuYWx5c2lzOworICAg
IH0KK30KKworCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suaAppbmRleCBiMjg4MzY1NGJlMzQ1ZTdhYjAxMTBlYzFiNmY1ZDY5N2Ex
OGMyN2MyLi4wYjkwYjdlYmQ3Y2I2YTM2YzUxMDhmY2UyYzY5NmY3OWM1NGM1ZTA4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCkBAIC0zMyw3ICszMyw2IEBA
CiAjaW5jbHVkZSAiQXJyYXlQcm9maWxlLmgiCiAjaW5jbHVkZSAiQnlWYWxJbmZvLmgiCiAjaW5j
bHVkZSAiQnl0ZWNvZGVDb252ZW50aW9ucy5oIgotI2luY2x1ZGUgIkJ5dGVjb2RlTGl2ZW5lc3NB
bmFseXNpcy5oIgogI2luY2x1ZGUgIkNhbGxMaW5rSW5mby5oIgogI2luY2x1ZGUgIkNhbGxSZXR1
cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0LmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrSGFzaC5oIgpA
QCAtNzgsNiArNzcsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorY2xhc3MgQnl0ZWNvZGVMaXZl
bmVzc0FuYWx5c2lzOwogY2xhc3MgRXhlY1N0YXRlOwogY2xhc3MgSlNNb2R1bGVFbnZpcm9ubWVu
dDsKIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKQEAgLTIyMCwxMCArMjIwLDYgQEAgY2xh
c3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgICAgIHJldHVybiBpbmRleCA+PSBt
X251bVZhcnM7CiAgICAgfQogCi0gICAgZW51bSBjbGFzcyBSZXF1aXJlZEhhbmRsZXIgewotICAg
ICAgICBDYXRjaEhhbmRsZXIsCi0gICAgICAgIEFueUhhbmRsZXIKLSAgICB9OwogICAgIEhhbmRs
ZXJJbmZvKiBoYW5kbGVyRm9yQnl0ZWNvZGVPZmZzZXQodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQs
IFJlcXVpcmVkSGFuZGxlciA9IFJlcXVpcmVkSGFuZGxlcjo6QW55SGFuZGxlcik7CiAgICAgSGFu
ZGxlckluZm8qIGhhbmRsZXJGb3JJbmRleCh1bnNpZ25lZCwgUmVxdWlyZWRIYW5kbGVyID0gUmVx
dWlyZWRIYW5kbGVyOjpBbnlIYW5kbGVyKTsKICAgICB2b2lkIHJlbW92ZUV4Y2VwdGlvbkhhbmRs
ZXJGb3JDYWxsU2l0ZShDYWxsU2l0ZUluZGV4KTsKQEAgLTI5NSw2ICsyOTEsOCBAQCBjbGFzcyBD
b2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PElu
c3RydWN0aW9uKj4ocmV0dXJuQWRkcmVzcykgLSBpbnN0cnVjdGlvbnMoKS5iZWdpbigpOwogICAg
IH0KIAorICAgIHR5cGVkZWYgUmVmQ291bnRlZEFycmF5PEluc3RydWN0aW9uPiYgVW5wYWNrZWRJ
bnN0cnVjdGlvbnM7CisKICAgICB1bnNpZ25lZCBudW1iZXJPZkluc3RydWN0aW9ucygpIGNvbnN0
IHsgcmV0dXJuIG1faW5zdHJ1Y3Rpb25zLnNpemUoKTsgfQogICAgIFJlZkNvdW50ZWRBcnJheTxJ
bnN0cnVjdGlvbj4mIGluc3RydWN0aW9ucygpIHsgcmV0dXJuIG1faW5zdHJ1Y3Rpb25zOyB9CiAg
ICAgY29uc3QgUmVmQ291bnRlZEFycmF5PEluc3RydWN0aW9uPiYgaW5zdHJ1Y3Rpb25zKCkgY29u
c3QgeyByZXR1cm4gbV9pbnN0cnVjdGlvbnM7IH0KQEAgLTU0Miw3ICs1NDAsNyBAQCBjbGFzcyBD
b2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICB9CiAKICAgICBXcml0ZUJhcnJpZXI8VW5r
bm93bj4mIGNvbnN0YW50UmVnaXN0ZXIoaW50IGluZGV4KSB7IHJldHVybiBtX2NvbnN0YW50UmVn
aXN0ZXJzW2luZGV4IC0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXhdOyB9Ci0gICAgQUxXQVlT
X0lOTElORSBib29sIGlzQ29uc3RhbnRSZWdpc3RlckluZGV4KGludCBpbmRleCkgY29uc3QgeyBy
ZXR1cm4gaW5kZXggPj0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXg7IH0KKyAgICBzdGF0aWMg
QUxXQVlTX0lOTElORSBib29sIGlzQ29uc3RhbnRSZWdpc3RlckluZGV4KGludCBpbmRleCkgeyBy
ZXR1cm4gaW5kZXggPj0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXg7IH0KICAgICBBTFdBWVNf
SU5MSU5FIEpTVmFsdWUgZ2V0Q29uc3RhbnQoaW50IGluZGV4KSBjb25zdCB7IHJldHVybiBtX2Nv
bnN0YW50UmVnaXN0ZXJzW2luZGV4IC0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXhdLmdldCgp
OyB9CiAgICAgQUxXQVlTX0lOTElORSBTb3VyY2VDb2RlUmVwcmVzZW50YXRpb24gY29uc3RhbnRT
b3VyY2VDb2RlUmVwcmVzZW50YXRpb24oaW50IGluZGV4KSBjb25zdCB7IHJldHVybiBtX2NvbnN0
YW50c1NvdXJjZUNvZGVSZXByZXNlbnRhdGlvbltpbmRleCAtIEZpcnN0Q29uc3RhbnRSZWdpc3Rl
ckluZGV4XTsgfQogCkBAIC01ODgsMTQgKzU4Niw3IEBAIGNsYXNzIENvZGVCbG9jayA6IHB1Ymxp
YyBKU0NlbGwgewogICAgICAgICAgICAgaWYgKCEhbV9saXZlbmVzc0FuYWx5c2lzKQogICAgICAg
ICAgICAgICAgIHJldHVybiAqbV9saXZlbmVzc0FuYWx5c2lzOwogICAgICAgICB9Ci0gICAgICAg
IHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM+IGFuYWx5c2lzID0KLSAg
ICAgICAgICAgIHN0ZDo6bWFrZV91bmlxdWU8Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzPih0aGlz
KTsKLSAgICAgICAgewotICAgICAgICAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIobV9s
b2NrKTsKLSAgICAgICAgICAgIGlmICghbV9saXZlbmVzc0FuYWx5c2lzKQotICAgICAgICAgICAg
ICAgIG1fbGl2ZW5lc3NBbmFseXNpcyA9IFdURk1vdmUoYW5hbHlzaXMpOwotICAgICAgICAgICAg
cmV0dXJuICptX2xpdmVuZXNzQW5hbHlzaXM7Ci0gICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGxp
dmVuZXNzQW5hbHlzaXNTbG93KCk7CiAgICAgfQogICAgIAogICAgIHZvaWQgdmFsaWRhdGUoKTsK
QEAgLTYxNiwxOCArNjA3LDYgQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAg
ICAgU3RyaW5nSnVtcFRhYmxlJiBhZGRTdHJpbmdTd2l0Y2hKdW1wVGFibGUoKSB7IGNyZWF0ZVJh
cmVEYXRhSWZOZWNlc3NhcnkoKTsgbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVz
LmFwcGVuZChTdHJpbmdKdW1wVGFibGUoKSk7IHJldHVybiBtX3JhcmVEYXRhLT5tX3N0cmluZ1N3
aXRjaEp1bXBUYWJsZXMubGFzdCgpOyB9CiAgICAgU3RyaW5nSnVtcFRhYmxlJiBzdHJpbmdTd2l0
Y2hKdW1wVGFibGUoaW50IHRhYmxlSW5kZXgpIHsgUkVMRUFTRV9BU1NFUlQobV9yYXJlRGF0YSk7
IHJldHVybiBtX3JhcmVEYXRhLT5tX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXNbdGFibGVJbmRleF07
IH0KIAotICAgIC8vIExpdmUgY2FsbGVlIHJlZ2lzdGVycyBhdCB5aWVsZCBwb2ludHMuCi0gICAg
Y29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQodW5zaWduZWQgaW5k
ZXgpIGNvbnN0Ci0gICAgewotICAgICAgICBSRUxFQVNFX0FTU0VSVChtX3JhcmVEYXRhKTsKLSAg
ICAgICAgcmV0dXJuIG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGRbaW5kZXhd
OwotICAgIH0KLSAgICBGYXN0Qml0VmVjdG9yJiBsaXZlQ2FsbGVlTG9jYWxzQXRZaWVsZCh1bnNp
Z25lZCBpbmRleCkKLSAgICB7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fcmFyZURhdGEpOwot
ICAgICAgICByZXR1cm4gbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZFtpbmRl
eF07Ci0gICAgfQotCiAgICAgRXZhbENvZGVDYWNoZSYgZXZhbENvZGVDYWNoZSgpIHsgY3JlYXRl
UmFyZURhdGFJZk5lY2Vzc2FyeSgpOyByZXR1cm4gbV9yYXJlRGF0YS0+bV9ldmFsQ29kZUNhY2hl
OyB9CiAKICAgICBlbnVtIFNocmlua01vZGUgewpAQCAtODgyLDggKzg2MSw2IEBAIGNsYXNzIENv
ZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgICAgICBWZWN0b3I8U2ltcGxlSnVtcFRhYmxl
PiBtX3N3aXRjaEp1bXBUYWJsZXM7CiAgICAgICAgIFZlY3RvcjxTdHJpbmdKdW1wVGFibGU+IG1f
c3RyaW5nU3dpdGNoSnVtcFRhYmxlczsKIAotICAgICAgICBWZWN0b3I8RmFzdEJpdFZlY3Rvcj4g
bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZDsKLQogICAgICAgICBFdmFsQ29kZUNhY2hlIG1fZXZh
bENvZGVDYWNoZTsKICAgICB9OwogCkBAIC05MTgsNiArODk1LDggQEAgY2xhc3MgQ29kZUJsb2Nr
IDogcHVibGljIEpTQ2VsbCB7CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIENvZGVCbG9j
a1NldDsKKworICAgIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcyYgbGl2ZW5lc3NBbmFseXNpc1Ns
b3coKTsKICAgICAKICAgICBDb2RlQmxvY2sqIHNwZWNpYWxPU1JFbnRyeUJsb2NrT3JOdWxsKCk7
CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSGFuZGxl
ckluZm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9IYW5kbGVySW5mby5oCmlu
ZGV4IGFjZGRhMDhlZDE0Y2JmOWYwOTcxMjc1MDQwNWE0MTc0MWY3NmEyMTMuLmJiNjkyYjlkYzE3
MGIwOWY0M2NlODY3Zjk0MWY3NTM1YWNmZWNmNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9IYW5kbGVySW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9IYW5kbGVySW5mby5oCkBAIC0zNyw2ICszNywxMSBAQCBlbnVtIGNsYXNzIEhh
bmRsZXJUeXBlIHsKICAgICBTeW50aGVzaXplZEZpbmFsbHkgPSAzCiB9OwogCitlbnVtIGNsYXNz
IFJlcXVpcmVkSGFuZGxlciB7CisgICAgQ2F0Y2hIYW5kbGVyLAorICAgIEFueUhhbmRsZXIKK307
CisKIHN0cnVjdCBIYW5kbGVySW5mb0Jhc2UgewogICAgIEhhbmRsZXJUeXBlIHR5cGUoKSBjb25z
dCB7IHJldHVybiBzdGF0aWNfY2FzdDxIYW5kbGVyVHlwZT4odHlwZUJpdHMpOyB9CiAgICAgdm9p
ZCBzZXRUeXBlKEhhbmRsZXJUeXBlIHR5cGUpIHsgdHlwZUJpdHMgPSBzdGF0aWNfY2FzdDx1aW50
MzJfdD4odHlwZSk7IH0KQEAgLTU4LDYgKzYzLDIzIEBAIHN0cnVjdCBIYW5kbGVySW5mb0Jhc2Ug
ewogCiAgICAgYm9vbCBpc0NhdGNoSGFuZGxlcigpIGNvbnN0IHsgcmV0dXJuIHR5cGUoKSA9PSBI
YW5kbGVyVHlwZTo6Q2F0Y2g7IH0KIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhhbmRsZXI+Cisg
ICAgc3RhdGljIEhhbmRsZXIqIGhhbmRsZXJGb3JJbmRleChWZWN0b3I8SGFuZGxlcj4mIGV4ZXB0
aW9uSGFuZGxlcnMsIHVuc2lnbmVkIGluZGV4LCBSZXF1aXJlZEhhbmRsZXIgcmVxdWlyZWRIYW5k
bGVyKQorICAgIHsKKyAgICAgICAgZm9yIChIYW5kbGVyJiBoYW5kbGVyIDogZXhlcHRpb25IYW5k
bGVycykgeworICAgICAgICAgICAgaWYgKChyZXF1aXJlZEhhbmRsZXIgPT0gUmVxdWlyZWRIYW5k
bGVyOjpDYXRjaEhhbmRsZXIpICYmICFoYW5kbGVyLmlzQ2F0Y2hIYW5kbGVyKCkpCisgICAgICAg
ICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIC8vIEhhbmRsZXJzIGFyZSBvcmRlcmVk
IGlubmVybW9zdCBmaXJzdCwgc28gdGhlIGZpcnN0IGhhbmRsZXIgd2UgZW5jb3VudGVyCisgICAg
ICAgICAgICAvLyB0aGF0IGNvbnRhaW5zIHRoZSBzb3VyY2UgYWRkcmVzcyBpcyB0aGUgY29ycmVj
dCBoYW5kbGVyIHRvIHVzZS4KKyAgICAgICAgICAgIC8vIFRoaXMgaW5kZXggdXNlZCBpcyBlaXRo
ZXIgdGhlIEJ5dGVjb2RlT2Zmc2V0IG9yIGEgQ2FsbFNpdGVJbmRleC4KKyAgICAgICAgICAgIGlm
IChoYW5kbGVyLnN0YXJ0IDw9IGluZGV4ICYmIGhhbmRsZXIuZW5kID4gaW5kZXgpCisgICAgICAg
ICAgICAgICAgcmV0dXJuICZoYW5kbGVyOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgfQorCiAgICAgdWludDMyX3Qgc3RhcnQ7CiAgICAgdWludDMyX3QgZW5kOwog
ICAgIHVpbnQzMl90IHRhcmdldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5jcHAKaW5kZXggZTJjYjAwMDQ4Mzc5NGJhOTJkNTEw
ZGNmNWZhOTk0ODg1YTIzZGMzZC4uMGIwOWY3OTg3MTg5MTI1YjBjMDU0OTRiMGY4MDc3YzNkNmY0
ZjFhMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VK
dW1wVGFyZ2V0cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNp
c2VKdW1wVGFyZ2V0cy5jcHAKQEAgLTMwLDEwICszMCwxMCBAQAogCiBuYW1lc3BhY2UgSlNDIHsK
IAotdGVtcGxhdGUgPHNpemVfdCB2ZWN0b3JTaXplPgotc3RhdGljIHZvaWQgZ2V0SnVtcFRhcmdl
dHNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgSW50ZXJwcmV0ZXIqIGlu
dGVycHJldGVyLCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGJ5dGVj
b2RlT2Zmc2V0LCBWZWN0b3I8dW5zaWduZWQsIHZlY3RvclNpemU+JiBvdXQpCit0ZW1wbGF0ZSA8
c2l6ZV90IHZlY3RvclNpemUsIHR5cGVuYW1lIEJsb2NrLCB0eXBlbmFtZSBJbnN0cnVjdGlvbj4K
K3N0YXRpYyB2b2lkIGdldEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoQmxvY2sqIGNvZGVC
bG9jaywgSW50ZXJwcmV0ZXIqIGludGVycHJldGVyLCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25z
QmVnaW4sIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBWZWN0b3I8dW5zaWduZWQsIHZlY3RvclNp
emU+JiBvdXQpCiB7Ci0gICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnRlcnByZXRlci0+Z2V0T3Bj
b2RlSUQoaW5zdHJ1Y3Rpb25zQmVnaW5bYnl0ZWNvZGVPZmZzZXRdLnUub3Bjb2RlKTsKKyAgICBP
cGNvZGVJRCBvcGNvZGVJRCA9IGludGVycHJldGVyLT5nZXRPcGNvZGVJRChpbnN0cnVjdGlvbnNC
ZWdpbltieXRlY29kZU9mZnNldF0pOwogICAgIEluc3RydWN0aW9uKiBjdXJyZW50ID0gaW5zdHJ1
Y3Rpb25zQmVnaW4gKyBieXRlY29kZU9mZnNldDsKICAgICBzd2l0Y2ggKG9wY29kZUlEKSB7CiAg
ICAgY2FzZSBvcF9qbXA6CkBAIC01NCwyMSArNTQsMjUgQEAgc3RhdGljIHZvaWQgZ2V0SnVtcFRh
cmdldHNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgSW50ZXJwcmV0ZXIq
IGkKICAgICBjYXNlIG9wX2pubGVzc2VxOgogICAgIGNhc2Ugb3Bfam5ncmVhdGVyOgogICAgIGNh
c2Ugb3Bfam5ncmVhdGVyZXE6Ci0gICAgY2FzZSBvcF9zYXZlOiAvLyBUaGUganVtcCBvZiBvcF9z
YXZlIGlzIHB1cmVseSBmb3IgY2FsY3VsYXRpbmcgbGl2ZW5lc3MuCiAgICAgICAgIG91dC5hcHBl
bmQoYnl0ZWNvZGVPZmZzZXQgKyBjdXJyZW50WzNdLnUub3BlcmFuZCk7CiAgICAgICAgIGJyZWFr
OworICAgIGNhc2Ugb3Bfc2F2ZTogeworICAgICAgICAvLyBUaGUganVtcCBvZiBvcF9zYXZlIHVu
ZGVyIEV4dHJhY3RHZW5lcmF0b3JMaXZlQ2FsbGVlTG9jYWxzIG1vZGUgaXMgcHVyZWx5IGZvciBj
YWxjdWxhdGluZyBsaXZlbmVzcy4KKyAgICAgICAgb3V0LmFwcGVuZChieXRlY29kZU9mZnNldCAr
IGN1cnJlbnRbM10udS5vcGVyYW5kKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogICAgIGNhc2Ug
b3Bfc3dpdGNoX2ltbToKICAgICBjYXNlIG9wX3N3aXRjaF9jaGFyOiB7Ci0gICAgICAgIFNpbXBs
ZUp1bXBUYWJsZSYgdGFibGUgPSBjb2RlQmxvY2stPnN3aXRjaEp1bXBUYWJsZShjdXJyZW50WzFd
LnUub3BlcmFuZCk7CisgICAgICAgIGF1dG8mIHRhYmxlID0gY29kZUJsb2NrLT5zd2l0Y2hKdW1w
VGFibGUoY3VycmVudFsxXS51Lm9wZXJhbmQpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSB0
YWJsZS5icmFuY2hPZmZzZXRzLnNpemUoKTsgaS0tOykKICAgICAgICAgICAgIG91dC5hcHBlbmQo
Ynl0ZWNvZGVPZmZzZXQgKyB0YWJsZS5icmFuY2hPZmZzZXRzW2ldKTsKICAgICAgICAgb3V0LmFw
cGVuZChieXRlY29kZU9mZnNldCArIGN1cnJlbnRbMl0udS5vcGVyYW5kKTsKICAgICAgICAgYnJl
YWs7CiAgICAgfQogICAgIGNhc2Ugb3Bfc3dpdGNoX3N0cmluZzogewotICAgICAgICBTdHJpbmdK
dW1wVGFibGUmIHRhYmxlID0gY29kZUJsb2NrLT5zdHJpbmdTd2l0Y2hKdW1wVGFibGUoY3VycmVu
dFsxXS51Lm9wZXJhbmQpOwotICAgICAgICBTdHJpbmdKdW1wVGFibGU6OlN0cmluZ09mZnNldFRh
YmxlOjppdGVyYXRvciBpdGVyID0gdGFibGUub2Zmc2V0VGFibGUuYmVnaW4oKTsKLSAgICAgICAg
U3RyaW5nSnVtcFRhYmxlOjpTdHJpbmdPZmZzZXRUYWJsZTo6aXRlcmF0b3IgZW5kID0gdGFibGUu
b2Zmc2V0VGFibGUuZW5kKCk7CisgICAgICAgIGF1dG8mIHRhYmxlID0gY29kZUJsb2NrLT5zdHJp
bmdTd2l0Y2hKdW1wVGFibGUoY3VycmVudFsxXS51Lm9wZXJhbmQpOworICAgICAgICBhdXRvIGl0
ZXIgPSB0YWJsZS5vZmZzZXRUYWJsZS5iZWdpbigpOworICAgICAgICBhdXRvIGVuZCA9IHRhYmxl
Lm9mZnNldFRhYmxlLmVuZCgpOwogICAgICAgICBmb3IgKDsgaXRlciAhPSBlbmQ7ICsraXRlcikK
ICAgICAgICAgICAgIG91dC5hcHBlbmQoYnl0ZWNvZGVPZmZzZXQgKyBpdGVyLT52YWx1ZS5icmFu
Y2hPZmZzZXQpOwogICAgICAgICBvdXQuYXBwZW5kKGJ5dGVjb2RlT2Zmc2V0ICsgY3VycmVudFsy
XS51Lm9wZXJhbmQpOwpAQCAtODIsMTMgKzg2LDE5IEBAIHN0YXRpYyB2b2lkIGdldEp1bXBUYXJn
ZXRzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEludGVycHJldGVyKiBp
CiAgICAgfQogfQogCi12b2lkIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMoQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIFZlY3Rvcjx1bnNpZ25lZCwgMzI+JiBvdXQpCitlbnVtIGNsYXNzIENvbXB1dGVQ
cmVjaXNlSnVtcFRhcmdldHNNb2RlIHsKKyAgICBGb2xsb3dDb2RlQmxvY2tDbGFpbSwKKyAgICBG
b3JjZUNvbXB1dGUsCit9OworCit0ZW1wbGF0ZTxDb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzTW9k
ZSBNb2RlLCB0eXBlbmFtZSBCbG9jaywgdHlwZW5hbWUgSW5zdHJ1Y3Rpb24sIHNpemVfdCB2ZWN0
b3JTaXplPgordm9pZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzSW50ZXJuYWwoQmxvY2sqIGNv
ZGVCbG9jaywgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBpbnN0cnVj
dGlvbkNvdW50LCBWZWN0b3I8dW5zaWduZWQsIHZlY3RvclNpemU+JiBvdXQpCiB7CiAgICAgQVNT
RVJUKG91dC5pc0VtcHR5KCkpOwogICAgIAogICAgIC8vIFdlIHdpbGwgZGVyaXZlIGEgc3VwZXJz
ZXQgb2YgdGhlIGp1bXAgdGFyZ2V0cyB0aGF0IHRoZSBjb2RlIGJsb2NrIHRoaW5rcyBpdCBoYXMu
CiAgICAgLy8gU28sIGlmIHRoZSBjb2RlIGJsb2NrIGNsYWltcyB0aGVyZSBhcmUgbm9uZSwgdGhl
biB3ZSBhcmUgZG9uZS4KLSAgICBpZiAoIWNvZGVCbG9jay0+bnVtYmVyT2ZKdW1wVGFyZ2V0cygp
KQorICAgIGlmIChNb2RlID09IENvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHNNb2RlOjpGb2xsb3dD
b2RlQmxvY2tDbGFpbSAmJiAhY29kZUJsb2NrLT5udW1iZXJPZkp1bXBUYXJnZXRzKCkpCiAgICAg
ICAgIHJldHVybjsKICAgICAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSBjb2RlQmxvY2stPm51bWJl
ck9mRXhjZXB0aW9uSGFuZGxlcnMoKTsgaS0tOykgewpAQCAtOTgsMTAgKzEwOCw4IEBAIHZvaWQg
Y29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgVmVjdG9yPHVu
c2lnbmVkLCAzMj4mIG91dCkKICAgICB9CiAKICAgICBJbnRlcnByZXRlciogaW50ZXJwcmV0ZXIg
PSBjb2RlQmxvY2stPnZtKCktPmludGVycHJldGVyOwotICAgIEluc3RydWN0aW9uKiBpbnN0cnVj
dGlvbnNCZWdpbiA9IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsKLSAgICB1bnNp
Z25lZCBpbnN0cnVjdGlvbkNvdW50ID0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5zaXplKCk7
CiAgICAgZm9yICh1bnNpZ25lZCBieXRlY29kZU9mZnNldCA9IDA7IGJ5dGVjb2RlT2Zmc2V0IDwg
aW5zdHJ1Y3Rpb25Db3VudDspIHsKLSAgICAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnRlcnBy
ZXRlci0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25zQmVnaW5bYnl0ZWNvZGVPZmZzZXRdLnUub3Bj
b2RlKTsKKyAgICAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnRlcnByZXRlci0+Z2V0T3Bjb2Rl
SUQoaW5zdHJ1Y3Rpb25zQmVnaW5bYnl0ZWNvZGVPZmZzZXRdKTsKICAgICAgICAgZ2V0SnVtcFRh
cmdldHNGb3JCeXRlY29kZU9mZnNldChjb2RlQmxvY2ssIGludGVycHJldGVyLCBpbnN0cnVjdGlv
bnNCZWdpbiwgYnl0ZWNvZGVPZmZzZXQsIG91dCk7CiAgICAgICAgIGJ5dGVjb2RlT2Zmc2V0ICs9
IG9wY29kZUxlbmd0aHNbb3Bjb2RlSURdOwogICAgIH0KQEAgLTEyMywxMSArMTMxLDM0IEBAIHZv
aWQgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgVmVjdG9y
PHVuc2lnbmVkLCAzMj4mIG91dCkKICAgICBvdXQuc2hyaW5rVG9GaXQoKTsKIH0KIAotdm9pZCBm
aW5kSnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgdW5z
aWduZWQgYnl0ZWNvZGVPZmZzZXQsIFZlY3Rvcjx1bnNpZ25lZCwgMT4mIG91dCkKK3ZvaWQgY29t
cHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgVmVjdG9yPHVuc2ln
bmVkLCAzMj4mIG91dCkKIHsKLSAgICBJbnRlcnByZXRlciogaW50ZXJwcmV0ZXIgPSBjb2RlQmxv
Y2stPnZtKCktPmludGVycHJldGVyOwotICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdp
biA9IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsKLSAgICBnZXRKdW1wVGFyZ2V0
c0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9jaywgaW50ZXJwcmV0ZXIsIGluc3RydWN0aW9uc0Jl
Z2luLCBieXRlY29kZU9mZnNldCwgb3V0KTsKKyAgICBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRz
SW50ZXJuYWw8Q29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0c01vZGU6OkZvbGxvd0NvZGVCbG9ja0Ns
YWltPihjb2RlQmxvY2ssIGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSwgY29kZUJs
b2NrLT5pbnN0cnVjdGlvbnMoKS5zaXplKCksIG91dCk7Cit9CisKK3ZvaWQgY29tcHV0ZVByZWNp
c2VKdW1wVGFyZ2V0cyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgSW5zdHJ1Y3Rpb24qIGluc3RydWN0
aW9uc0JlZ2luLCB1bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50LCBWZWN0b3I8dW5zaWduZWQsIDMy
PiYgb3V0KQoreworICAgIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHNJbnRlcm5hbDxDb21wdXRl
UHJlY2lzZUp1bXBUYXJnZXRzTW9kZTo6Rm9sbG93Q29kZUJsb2NrQ2xhaW0+KGNvZGVCbG9jaywg
aW5zdHJ1Y3Rpb25zQmVnaW4sIGluc3RydWN0aW9uQ291bnQsIG91dCk7Cit9CisKK3ZvaWQgY29t
cHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhVbmxpbmtlZENvZGVCbG9jayogY29kZUJsb2NrLCBVbmxp
bmtlZEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25D
b3VudCwgVmVjdG9yPHVuc2lnbmVkLCAzMj4mIG91dCkKK3sKKyAgICBjb21wdXRlUHJlY2lzZUp1
bXBUYXJnZXRzSW50ZXJuYWw8Q29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0c01vZGU6OkZvbGxvd0Nv
ZGVCbG9ja0NsYWltPihjb2RlQmxvY2ssIGluc3RydWN0aW9uc0JlZ2luLCBpbnN0cnVjdGlvbkNv
dW50LCBvdXQpOworfQorCit2b2lkIHJlY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhVbmxpbmtl
ZENvZGVCbG9jayogY29kZUJsb2NrLCBVbmxpbmtlZEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNC
ZWdpbiwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCwgVmVjdG9yPHVuc2lnbmVkPiYgb3V0KQor
eworICAgIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHNJbnRlcm5hbDxDb21wdXRlUHJlY2lzZUp1
bXBUYXJnZXRzTW9kZTo6Rm9yY2VDb21wdXRlPihjb2RlQmxvY2ssIGluc3RydWN0aW9uc0JlZ2lu
LCBpbnN0cnVjdGlvbkNvdW50LCBvdXQpOworfQorCit2b2lkIGZpbmRKdW1wVGFyZ2V0c0ZvckJ5
dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rp
b25zQmVnaW4sIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBWZWN0b3I8dW5zaWduZWQsIDE+JiBv
dXQpCit7CisgICAgZ2V0SnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChjb2RlQmxvY2ssIGNv
ZGVCbG9jay0+dm0oKS0+aW50ZXJwcmV0ZXIsIGluc3RydWN0aW9uc0JlZ2luLCBieXRlY29kZU9m
ZnNldCwgb3V0KTsKK30KKwordm9pZCBmaW5kSnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChV
bmxpbmtlZENvZGVCbG9jayogY29kZUJsb2NrLCBVbmxpbmtlZEluc3RydWN0aW9uKiBpbnN0cnVj
dGlvbnNCZWdpbiwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIFZlY3Rvcjx1bnNpZ25lZCwgMT4m
IG91dCkKK3sKKyAgICBnZXRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9jaywg
Y29kZUJsb2NrLT52bSgpLT5pbnRlcnByZXRlciwgaW5zdHJ1Y3Rpb25zQmVnaW4sIGJ5dGVjb2Rl
T2Zmc2V0LCBvdXQpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHMuaAppbmRleCA4NTI0MTNk
NzdiNzk4OTg0YjI3Y2VmMGVkNjJiYzk0YzY4OWUyMTJjLi5lMGZiY2I5YjgxMmVjNGU3MWM3MGYz
OTYyZWIxZjY5NDNmNDcwZjBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5oCkBAIC0yNywxMyArMjcsMTkgQEAKICNkZWZpbmUg
UHJlY2lzZUp1bXBUYXJnZXRzX2gKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUg
IlVubGlua2VkQ29kZUJsb2NrLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCiAvLyBSZXR1cm4gYSBz
b3J0ZWQgbGlzdCBvZiBieXRlY29kZSBpbmRleCB0aGF0IGFyZSB0aGUgZGVzdGluYXRpb24gb2Yg
YSBqdW1wLgogdm9pZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKENvZGVCbG9jayosIFZlY3Rv
cjx1bnNpZ25lZCwgMzI+JiBvdXQpOwordm9pZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKENv
ZGVCbG9jayosIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgaW5zdHJ1
Y3Rpb25Db3VudCwgVmVjdG9yPHVuc2lnbmVkLCAzMj4mIG91dCk7Cit2b2lkIGNvbXB1dGVQcmVj
aXNlSnVtcFRhcmdldHMoVW5saW5rZWRDb2RlQmxvY2sqLCBVbmxpbmtlZEluc3RydWN0aW9uKiBp
bnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCwgVmVjdG9yPHVuc2ln
bmVkLCAzMj4mIG91dCk7CiAKLXZvaWQgZmluZEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQo
Q29kZUJsb2NrKiwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIFZlY3Rvcjx1bnNpZ25lZCwgMT4m
IG91dCk7Cit2b2lkIHJlY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhVbmxpbmtlZENvZGVCbG9j
ayosIFVubGlua2VkSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBpbnN0
cnVjdGlvbkNvdW50LCBWZWN0b3I8dW5zaWduZWQ+JiBvdXQpOworCit2b2lkIGZpbmRKdW1wVGFy
Z2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayosIEluc3RydWN0aW9uKiBpbnN0cnVjdGlv
bnNCZWdpbiwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIFZlY3Rvcjx1bnNpZ25lZCwgMT4mIG91
dCk7Cit2b2lkIGZpbmRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KFVubGlua2VkQ29kZUJs
b2NrKiwgVW5saW5rZWRJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGJ5
dGVjb2RlT2Zmc2V0LCBWZWN0b3I8dW5zaWduZWQsIDE+JiBvdXQpOwogCiB9IC8vIG5hbWVzcGFj
ZSBKU0MKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlu
a2VkQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Vbmxpbmtl
ZENvZGVCbG9jay5jcHAKaW5kZXggMjk5YWM2ODBkOWExZDFlNWE5MGQ5ZmFlMWEyMmY4NDRlMjky
ZTNlMi4uN2ZlNGE4ZDc4NTQyZWQ4MjJjOGQ4NmU5ZDgzYjEwNTgyYTg0NTc4YSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3Bw
CkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiVW5saW5rZWRDb2RlQmxvY2suaCIKIAogI2lu
Y2x1ZGUgIkJ5dGVjb2RlR2VuZXJhdG9yLmgiCisjaW5jbHVkZSAiQnl0ZWNvZGVJbnNlcnRpb25T
ZXQuaCIKICNpbmNsdWRlICJDbGFzc0luZm8uaCIKICNpbmNsdWRlICJDb2RlQ2FjaGUuaCIKICNp
bmNsdWRlICJFeGVjdXRhYmxlLmgiCkBAIC0zNiw2ICszNyw3IEBACiAjaW5jbHVkZSAiSlNTdHJp
bmcuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiUGFyc2VyLmgiCisjaW5j
bHVkZSAiUHJlY2lzZUp1bXBUYXJnZXRzLmgiCiAjaW5jbHVkZSAiU291cmNlUHJvdmlkZXIuaCIK
ICNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIKICNpbmNsdWRlICJTeW1ib2xUYWJsZS5oIgpAQCAtMzY2
LDUgKzM2OCwxMTEgQEAgY29uc3QgVW5saW5rZWRJbnN0cnVjdGlvblN0cmVhbSYgVW5saW5rZWRD
b2RlQmxvY2s6Omluc3RydWN0aW9ucygpIGNvbnN0CiAgICAgcmV0dXJuICptX3VubGlua2VkSW5z
dHJ1Y3Rpb25zOwogfQogCitVbmxpbmtlZEhhbmRsZXJJbmZvKiBVbmxpbmtlZENvZGVCbG9jazo6
aGFuZGxlckZvckJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBSZXF1aXJl
ZEhhbmRsZXIgcmVxdWlyZWRIYW5kbGVyKQoreworICAgIHJldHVybiBoYW5kbGVyRm9ySW5kZXgo
Ynl0ZWNvZGVPZmZzZXQsIHJlcXVpcmVkSGFuZGxlcik7Cit9CisKK1VubGlua2VkSGFuZGxlcklu
Zm8qIFVubGlua2VkQ29kZUJsb2NrOjpoYW5kbGVyRm9ySW5kZXgodW5zaWduZWQgaW5kZXgsIFJl
cXVpcmVkSGFuZGxlciByZXF1aXJlZEhhbmRsZXIpCit7CisgICAgaWYgKCFtX3JhcmVEYXRhKQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gVW5saW5rZWRIYW5kbGVySW5mbzo6
aGFuZGxlckZvckluZGV4KG1fcmFyZURhdGEtPm1fZXhjZXB0aW9uSGFuZGxlcnMsIGluZGV4LCBy
ZXF1aXJlZEhhbmRsZXIpOworfQorCit2b2lkIFVubGlua2VkQ29kZUJsb2NrOjphcHBseU1vZGlm
aWNhdGlvbihCeXRlY29kZUluc2VydGlvblNldCYgaW5zZXJ0aW9uU2V0KQoreworICAgIC8vIEJl
Zm9yZSBhcHBseWluZyB0aGUgY2hhbmdlcywgd2UgYWRqdXN0IHRoZSBqdW1wcyBiYXNlZCBvbiB0
aGUgb3JpZ2luYWwgYnl0ZWNvZGUgb2Zmc2V0LCB0aGUgb2Zmc2V0IHRvIHRoZSBqdW1wIHRhcmdl
dCwgYW5kCisgICAgLy8gdGhlIGluc2VydGlvbiBpbmZvcm1hdGlvbi4KKworICAgIEJ5dGVjb2Rl
R3JhcGg8VW5saW5rZWRDb2RlQmxvY2s+JiBncmFwaCA9IGluc2VydGlvblNldC5ncmFwaCgpOwor
ICAgIFVubGlua2VkSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luID0gZ3JhcGguaW5zdHJ1
Y3Rpb25zKCkuYmVnaW4oKTsKKyAgICBmb3IgKGludCBieXRlY29kZU9mZnNldCA9IDAsIGluc3Ry
dWN0aW9uQ291bnQgPSBncmFwaC5pbnN0cnVjdGlvbnMoKS5zaXplKCk7IGJ5dGVjb2RlT2Zmc2V0
IDwgaW5zdHJ1Y3Rpb25Db3VudDspIHsKKyAgICAgICAgVW5saW5rZWRJbnN0cnVjdGlvbiogY3Vy
cmVudCA9IGluc3RydWN0aW9uc0JlZ2luICsgYnl0ZWNvZGVPZmZzZXQ7CisgICAgICAgIE9wY29k
ZUlEIG9wY29kZUlEID0gY3VycmVudFswXS51Lm9wY29kZTsKKworICAgICAgICBzd2l0Y2ggKG9w
Y29kZUlEKSB7CisgICAgICAgIGNhc2Ugb3Bfam1wOgorICAgICAgICAgICAgY3VycmVudFsxXS51
Lm9wZXJhbmQgPSBpbnNlcnRpb25TZXQuYWRqdXN0T2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0LCBieXRl
Y29kZU9mZnNldCArIGN1cnJlbnRbMV0udS5vcGVyYW5kKTsKKyAgICAgICAgICAgIGJyZWFrOwor
CisgICAgICAgIGNhc2Ugb3BfanRydWU6CisgICAgICAgIGNhc2Ugb3BfamZhbHNlOgorICAgICAg
ICBjYXNlIG9wX2plcV9udWxsOgorICAgICAgICBjYXNlIG9wX2puZXFfbnVsbDoKKyAgICAgICAg
ICAgIGN1cnJlbnRbMl0udS5vcGVyYW5kID0gaW5zZXJ0aW9uU2V0LmFkanVzdE9mZnNldChieXRl
Y29kZU9mZnNldCwgYnl0ZWNvZGVPZmZzZXQgKyBjdXJyZW50WzJdLnUub3BlcmFuZCk7CisgICAg
ICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIG9wX2puZXFfcHRyOgorICAgICAgICBjYXNl
IG9wX2psZXNzOgorICAgICAgICBjYXNlIG9wX2psZXNzZXE6CisgICAgICAgIGNhc2Ugb3Bfamdy
ZWF0ZXI6CisgICAgICAgIGNhc2Ugb3BfamdyZWF0ZXJlcToKKyAgICAgICAgY2FzZSBvcF9qbmxl
c3M6CisgICAgICAgIGNhc2Ugb3Bfam5sZXNzZXE6CisgICAgICAgIGNhc2Ugb3Bfam5ncmVhdGVy
OgorICAgICAgICBjYXNlIG9wX2puZ3JlYXRlcmVxOgorICAgICAgICAgICAgY3VycmVudFszXS51
Lm9wZXJhbmQgPSBpbnNlcnRpb25TZXQuYWRqdXN0T2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0LCBieXRl
Y29kZU9mZnNldCArIGN1cnJlbnRbM10udS5vcGVyYW5kKTsKKyAgICAgICAgICAgIGJyZWFrOwor
CisgICAgICAgIGNhc2Ugb3Bfc3dpdGNoX2ltbToKKyAgICAgICAgY2FzZSBvcF9zd2l0Y2hfY2hh
cjogeworICAgICAgICAgICAgYXV0byYgdGFibGUgPSBzd2l0Y2hKdW1wVGFibGUoY3VycmVudFsx
XS51Lm9wZXJhbmQpOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gdGFibGUuYnJhbmNo
T2Zmc2V0cy5zaXplKCk7IGktLTspCisgICAgICAgICAgICAgICAgdGFibGUuYnJhbmNoT2Zmc2V0
c1tpXSA9IGluc2VydGlvblNldC5hZGp1c3RPZmZzZXQoYnl0ZWNvZGVPZmZzZXQsIGJ5dGVjb2Rl
T2Zmc2V0ICsgdGFibGUuYnJhbmNoT2Zmc2V0c1tpXSk7CisgICAgICAgICAgICBjdXJyZW50WzJd
LnUub3BlcmFuZCA9IGluc2VydGlvblNldC5hZGp1c3RPZmZzZXQoYnl0ZWNvZGVPZmZzZXQsIGJ5
dGVjb2RlT2Zmc2V0ICsgY3VycmVudFsyXS51Lm9wZXJhbmQpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KKworICAgICAgICBjYXNlIG9wX3N3aXRjaF9zdHJpbmc6IHsKKyAgICAgICAg
ICAgIGF1dG8mIHRhYmxlID0gc3RyaW5nU3dpdGNoSnVtcFRhYmxlKGN1cnJlbnRbMV0udS5vcGVy
YW5kKTsKKyAgICAgICAgICAgIGF1dG8gaXRlciA9IHRhYmxlLm9mZnNldFRhYmxlLmJlZ2luKCk7
CisgICAgICAgICAgICBhdXRvIGVuZCA9IHRhYmxlLm9mZnNldFRhYmxlLmVuZCgpOworICAgICAg
ICAgICAgZm9yICg7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpCisgICAgICAgICAgICAgICAgaXRlci0+
dmFsdWUuYnJhbmNoT2Zmc2V0ID0gaW5zZXJ0aW9uU2V0LmFkanVzdE9mZnNldChieXRlY29kZU9m
ZnNldCwgYnl0ZWNvZGVPZmZzZXQgKyBpdGVyLT52YWx1ZS5icmFuY2hPZmZzZXQpOworICAgICAg
ICAgICAgY3VycmVudFsyXS51Lm9wZXJhbmQgPSBpbnNlcnRpb25TZXQuYWRqdXN0T2Zmc2V0KGJ5
dGVjb2RlT2Zmc2V0LCBieXRlY29kZU9mZnNldCArIGN1cnJlbnRbMl0udS5vcGVyYW5kKTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgYnl0ZWNvZGVPZmZzZXQgKz0gb3Bjb2Rl
TGVuZ3RoKG9wY29kZUlEKTsKKyAgICB9CisKKyAgICAvLyBUaGVuLCBleGNlcHRpb24gaGFuZGxl
cnMgc2hvdWxkIGJlIGFkanVzdGVkLgorICAgIGlmIChtX3JhcmVEYXRhKSB7CisgICAgICAgIGZv
ciAoVW5saW5rZWRIYW5kbGVySW5mbyYgaGFuZGxlciA6IG1fcmFyZURhdGEtPm1fZXhjZXB0aW9u
SGFuZGxlcnMpIHsKKyAgICAgICAgICAgIGhhbmRsZXIudGFyZ2V0ID0gaW5zZXJ0aW9uU2V0LmFk
anVzdE9mZnNldCgwLCBoYW5kbGVyLnRhcmdldCk7CisgICAgICAgICAgICBoYW5kbGVyLnN0YXJ0
ID0gaW5zZXJ0aW9uU2V0LmFkanVzdE9mZnNldCgwLCBoYW5kbGVyLnN0YXJ0KTsKKyAgICAgICAg
ICAgIGhhbmRsZXIuZW5kID0gaW5zZXJ0aW9uU2V0LmFkanVzdE9mZnNldCgwLCBoYW5kbGVyLmVu
ZCk7CisgICAgICAgIH0KKworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fcmFyZURh
dGEtPm1fb3BQcm9maWxlQ29udHJvbEZsb3dCeXRlY29kZU9mZnNldHMuc2l6ZSgpOyArK2kpCisg
ICAgICAgICAgICBtX3JhcmVEYXRhLT5tX29wUHJvZmlsZUNvbnRyb2xGbG93Qnl0ZWNvZGVPZmZz
ZXRzW2ldID0gaW5zZXJ0aW9uU2V0LmFkanVzdE9mZnNldCgwLCBtX3JhcmVEYXRhLT5tX29wUHJv
ZmlsZUNvbnRyb2xGbG93Qnl0ZWNvZGVPZmZzZXRzW2ldKTsKKworICAgICAgICBpZiAoIW1fcmFy
ZURhdGEtPm1fdHlwZVByb2ZpbGVySW5mb01hcC5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIEhh
c2hNYXA8dW5zaWduZWQsIFJhcmVEYXRhOjpUeXBlUHJvZmlsZXJFeHByZXNzaW9uUmFuZ2U+IGFk
anVzdGVkVHlwZVByb2ZpbGVySW5mb01hcDsKKyAgICAgICAgICAgIGZvciAoYXV0byYgZW50cnkg
OiBtX3JhcmVEYXRhLT5tX3R5cGVQcm9maWxlckluZm9NYXApCisgICAgICAgICAgICAgICAgYWRq
dXN0ZWRUeXBlUHJvZmlsZXJJbmZvTWFwLnNldChpbnNlcnRpb25TZXQuYWRqdXN0T2Zmc2V0KDAs
IGVudHJ5LmtleSksIGVudHJ5LnZhbHVlKTsKKyAgICAgICAgICAgIG1fcmFyZURhdGEtPm1fdHlw
ZVByb2ZpbGVySW5mb01hcC5zd2FwKGFkanVzdGVkVHlwZVByb2ZpbGVySW5mb01hcCk7CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fcHJvcGVydHlBY2Nl
c3NJbnN0cnVjdGlvbnMuc2l6ZSgpOyArK2kpCisgICAgICAgIG1fcHJvcGVydHlBY2Nlc3NJbnN0
cnVjdGlvbnNbaV0gPSBpbnNlcnRpb25TZXQuYWRqdXN0T2Zmc2V0KDAsIG1fcHJvcGVydHlBY2Nl
c3NJbnN0cnVjdGlvbnNbaV0pOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2V4cHJl
c3Npb25JbmZvLnNpemUoKTsgKytpKQorICAgICAgICBtX2V4cHJlc3Npb25JbmZvW2ldLmluc3Ry
dWN0aW9uT2Zmc2V0ID0gaW5zZXJ0aW9uU2V0LmFkanVzdE9mZnNldCgwLCBtX2V4cHJlc3Npb25J
bmZvW2ldLmluc3RydWN0aW9uT2Zmc2V0KTsKKworICAgIC8vIFRoZW4sIG1vZGlmeSB0aGUgdW5s
aW5rZWQgaW5zdHJ1Y3Rpb25zLgorICAgIGluc2VydGlvblNldC5hcHBseU1vZGlmaWNhdGlvbigp
OworCisgICAgLy8gQW5kIHJlY29tcHV0ZSB0aGUganVtcCB0YXJnZXQgYmFzZWQgb24gdGhlIG1v
ZGlmaWVkIHVubGlua2VkIGluc3RydWN0aW9ucy4KKyAgICBtX2p1bXBUYXJnZXRzLmNsZWFyKCk7
CisgICAgcmVjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKHRoaXMsIGdyYXBoLmluc3RydWN0aW9u
cygpLmJlZ2luKCksIGdyYXBoLmluc3RydWN0aW9ucygpLnNpemUoKSwgbV9qdW1wVGFyZ2V0cyk7
Cit9CisKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Vu
bGlua2VkQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5r
ZWRDb2RlQmxvY2suaAppbmRleCA5MWZkY2E0OGMxZTM5ZThiZWZiMGM1ZmQ1NWZkOWJkOTFjMWYz
NzA3Li5hY2NiN2I1OTY4ZGQxMThlNDk4NjA2YmZlMDA5YzUxZWM1ZGNkMzFhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaApAQCAt
NDgsNiArNDgsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorY2xhc3MgQnl0ZWNvZGVJbnNlcnRp
b25TZXQ7CiBjbGFzcyBEZWJ1Z2dlcjsKIGNsYXNzIEZ1bmN0aW9uTWV0YWRhdGFOb2RlOwogY2xh
c3MgRnVuY3Rpb25FeGVjdXRhYmxlOwpAQCAtNjksNyArNzAsMTEgQEAgdHlwZWRlZiB1bnNpZ25l
ZCBVbmxpbmtlZE9iamVjdEFsbG9jYXRpb25Qcm9maWxlOwogdHlwZWRlZiB1bnNpZ25lZCBVbmxp
bmtlZExMSW50Q2FsbExpbmtJbmZvOwogCiBzdHJ1Y3QgVW5saW5rZWRTdHJpbmdKdW1wVGFibGUg
ewotICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8U3RyaW5nSW1wbD4sIGludDMyX3Q+IFN0cmlu
Z09mZnNldFRhYmxlOworICAgIHN0cnVjdCBPZmZzZXRMb2NhdGlvbiB7CisgICAgICAgIGludDMy
X3QgYnJhbmNoT2Zmc2V0OworICAgIH07CisKKyAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFN0
cmluZ0ltcGw+LCBPZmZzZXRMb2NhdGlvbj4gU3RyaW5nT2Zmc2V0VGFibGU7CiAgICAgU3RyaW5n
T2Zmc2V0VGFibGUgb2Zmc2V0VGFibGU7CiAKICAgICBpbmxpbmUgaW50MzJfdCBvZmZzZXRGb3JW
YWx1ZShTdHJpbmdJbXBsKiB2YWx1ZSwgaW50MzJfdCBkZWZhdWx0T2Zmc2V0KQpAQCAtNzgsNyAr
ODMsNyBAQCBzdHJ1Y3QgVW5saW5rZWRTdHJpbmdKdW1wVGFibGUgewogICAgICAgICBTdHJpbmdP
ZmZzZXRUYWJsZTo6Y29uc3RfaXRlcmF0b3IgbG9jID0gb2Zmc2V0VGFibGUuZmluZCh2YWx1ZSk7
CiAgICAgICAgIGlmIChsb2MgPT0gZW5kKQogICAgICAgICAgICAgcmV0dXJuIGRlZmF1bHRPZmZz
ZXQ7Ci0gICAgICAgIHJldHVybiBsb2MtPnZhbHVlOworICAgICAgICByZXR1cm4gbG9jLT52YWx1
ZS5icmFuY2hPZmZzZXQ7CiAgICAgfQogCiB9OwpAQCAtMTA2LDYgKzExMSw4IEBAIHN0cnVjdCBV
bmxpbmtlZEluc3RydWN0aW9uIHsKICAgICB9IHU7CiB9OwogCitjbGFzcyBCeXRlY29kZUdlbmVy
YXRvcmlmaWNhdGlvbjsKKwogY2xhc3MgVW5saW5rZWRDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxs
IHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOwpAQCAtMTE1LDYgKzEyMiw4IEBA
IGNsYXNzIFVubGlua2VkQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAKICAgICBlbnVtIHsg
Q2FsbEZ1bmN0aW9uLCBBcHBseUZ1bmN0aW9uIH07CiAKKyAgICB0eXBlZGVmIFZlY3RvcjxVbmxp
bmtlZEluc3RydWN0aW9uLCAwLCBVbnNhZmVWZWN0b3JPdmVyZmxvdz4gVW5wYWNrZWRJbnN0cnVj
dGlvbnM7CisKICAgICBib29sIGlzQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2lzQ29u
c3RydWN0b3I7IH0KICAgICBib29sIGlzU3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNT
dHJpY3RNb2RlOyB9CiAgICAgYm9vbCB1c2VzRXZhbCgpIGNvbnN0IHsgcmV0dXJuIG1fdXNlc0V2
YWw7IH0KQEAgLTIwNCw2ICsyMTMsOSBAQCBjbGFzcyBVbmxpbmtlZENvZGVCbG9jayA6IHB1Ymxp
YyBKU0NlbGwgewogICAgIHVuc2lnbmVkIGp1bXBUYXJnZXQoaW50IGluZGV4KSBjb25zdCB7IHJl
dHVybiBtX2p1bXBUYXJnZXRzW2luZGV4XTsgfQogICAgIHVuc2lnbmVkIGxhc3RKdW1wVGFyZ2V0
KCkgY29uc3QgeyByZXR1cm4gbV9qdW1wVGFyZ2V0cy5sYXN0KCk7IH0KIAorICAgIFVubGlua2Vk
SGFuZGxlckluZm8qIGhhbmRsZXJGb3JCeXRlY29kZU9mZnNldCh1bnNpZ25lZCBieXRlY29kZU9m
ZnNldCwgUmVxdWlyZWRIYW5kbGVyID0gUmVxdWlyZWRIYW5kbGVyOjpBbnlIYW5kbGVyKTsKKyAg
ICBVbmxpbmtlZEhhbmRsZXJJbmZvKiBoYW5kbGVyRm9ySW5kZXgodW5zaWduZWQsIFJlcXVpcmVk
SGFuZGxlciA9IFJlcXVpcmVkSGFuZGxlcjo6QW55SGFuZGxlcik7CisKICAgICBib29sIGlzQnVp
bHRpbkZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc0J1aWx0aW5GdW5jdGlvbjsgfQogCiAg
ICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRp
Y19jYXN0PENvbnN0cnVjdG9yS2luZD4obV9jb25zdHJ1Y3RvcktpbmQpOyB9CkBAIC0zODQsNiAr
Mzk2LDggQEAgY2xhc3MgVW5saW5rZWRDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICB9
CiAKIHByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIEJ5dGVjb2RlSW5zZXJ0aW9uU2V0OworICAg
IHZvaWQgYXBwbHlNb2RpZmljYXRpb24oQnl0ZWNvZGVJbnNlcnRpb25TZXQmKTsKIAogICAgIHZv
aWQgY3JlYXRlUmFyZURhdGFJZk5lY2Vzc2FyeSgpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZpcnR1YWxSZWdpc3Rlci5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1ZpcnR1YWxSZWdpc3Rlci5oCmluZGV4IGQzZGY0MDk1N2I1MTc1
NjhlM2FlZmJlM2ExYTYwOWZkODc4YmFhYzMuLmRhZjUwOWY2YzdkMTE1ZTQ1YmNiMTA3YzY3ZDNk
MzhkODA0ZjI4OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9W
aXJ0dWFsUmVnaXN0ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmly
dHVhbFJlZ2lzdGVyLmgKQEAgLTI2LDggKzI2LDggQEAKICNpZm5kZWYgVmlydHVhbFJlZ2lzdGVy
X2gKICNkZWZpbmUgVmlydHVhbFJlZ2lzdGVyX2gKIAorI2luY2x1ZGUgIkJ5dGVjb2RlQ29udmVu
dGlvbnMuaCIKICNpbmNsdWRlICJDYWxsRnJhbWUuaCIKLQogI2luY2x1ZGUgPHd0Zi9QcmludFN0
cmVhbS5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTEwMyw3ICsxMDMsNyBAQCBjbGFzcyBWaXJ0
dWFsUmVnaXN0ZXIgewogCiBwcml2YXRlOgogICAgIHN0YXRpYyBjb25zdCBpbnQgc19pbnZhbGlk
VmlydHVhbFJlZ2lzdGVyID0gMHgzZmZmZmZmZjsKLSAgICBzdGF0aWMgY29uc3QgaW50IHNfZmly
c3RDb25zdGFudFJlZ2lzdGVySW5kZXggPSAweDQwMDAwMDAwOworICAgIHN0YXRpYyBjb25zdCBp
bnQgc19maXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCA9IEZpcnN0Q29uc3RhbnRSZWdpc3Rlcklu
ZGV4OwogCiAgICAgc3RhdGljIGludCBsb2NhbFRvT3BlcmFuZChpbnQgbG9jYWwpIHsgcmV0dXJu
IC0xIC0gbG9jYWw7IH0KICAgICBzdGF0aWMgaW50IG9wZXJhbmRUb0xvY2FsKGludCBvcGVyYW5k
KSB7IHJldHVybiAtMSAtIG9wZXJhbmQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXggNTAwYjRiYmJk
MjAyODgyNjJhOWY5ZjYwYjMzYjUzOWFhZTk0ZjAyZC4uYjRkNjlhNmIwOTY2ZjkyZDdkZTM2MjFj
YmRlZWY0OTI3Y2JmYWJmOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNp
bmNsdWRlICJCeXRlY29kZUdlbmVyYXRvci5oIgogCiAjaW5jbHVkZSAiQnVpbHRpbkV4ZWN1dGFi
bGVzLmgiCisjaW5jbHVkZSAiQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uaCIKICNpbmNsdWRl
ICJCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgog
I2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKQEAgLTE1NCw2ICsxNTUsMTAgQEAgUGFyc2VyRXJyb3Ig
Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKCkKICAgICAgICAgbV9jb2RlQmxvY2stPmFkZEV4
Y2VwdGlvbkhhbmRsZXIoaW5mbyk7CiAgICAgfQogICAgIAorCisgICAgaWYgKG1fY29kZUJsb2Nr
LT5wYXJzZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckJvZHlNb2RlKQorICAg
ICAgICBwZXJmb3JtR2VuZXJhdG9yaWZpY2F0aW9uKG1fY29kZUJsb2NrLmdldCgpLCBtX2luc3Ry
dWN0aW9ucywgbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlLmdldCgpLCBtX2dlbmVyYXRvckZy
YW1lU3ltYm9sVGFibGVJbmRleCk7CisKICAgICBtX2NvZGVCbG9jay0+c2V0SW5zdHJ1Y3Rpb25z
KHN0ZDo6bWFrZV91bmlxdWU8VW5saW5rZWRJbnN0cnVjdGlvblN0cmVhbT4obV9pbnN0cnVjdGlv
bnMpKTsKIAogICAgIG1fY29kZUJsb2NrLT5zaHJpbmtUb0ZpdCgpOwpAQCAtMjczLDcgKzI3OCw3
IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9u
Tm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtlCiAgICAgICAgIC8vICAgIGZ1bmN0aW9uICpnZW4o
YSwgYiA9IGhlbGxvKCkpCiAgICAgICAgIC8vICAgIHsKICAgICAgICAgLy8gICAgICAgIHJldHVy
biB7Ci0gICAgICAgIC8vICAgICAgICAgICAgQGdlbmVyYXRvck5leHQ6IGZ1bmN0aW9uIChAZ2Vu
ZXJhdG9yLCBAZ2VuZXJhdG9yU3RhdGUsIEBnZW5lcmF0b3JWYWx1ZSwgQGdlbmVyYXRvclJlc3Vt
ZU1vZGUpCisgICAgICAgIC8vICAgICAgICAgICAgQGdlbmVyYXRvck5leHQ6IGZ1bmN0aW9uIChA
Z2VuZXJhdG9yLCBAZ2VuZXJhdG9yU3RhdGUsIEBnZW5lcmF0b3JWYWx1ZSwgQGdlbmVyYXRvclJl
c3VtZU1vZGUsIEBnZW5lcmF0b3JGcmFtZSkKICAgICAgICAgLy8gICAgICAgICAgICB7CiAgICAg
ICAgIC8vICAgICAgICAgICAgICAgIGFyZ3VtZW50czsgIC8vIFRoaXMgYGFyZ3VtZW50c2Agc2hv
dWxkIHJlZmVyZW5jZSB0byB0aGUgZ2VuJ3MgYXJndW1lbnRzLgogICAgICAgICAvLyAgICAgICAg
ICAgICAgICAuLi4KQEAgLTU1Miw2ICs1NTcsOSBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNv
ZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQog
ICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JCb2R5TW9kZTogewogICAgICAgICAv
LyB8dGhpc3wgaXMgYWxyZWFkeSBmaWxsZWQgY29ycmVjdGx5IGJlZm9yZSBoZXJlLgogICAgICAg
ICBlbWl0TG9hZChtX25ld1RhcmdldFJlZ2lzdGVyLCBqc1VuZGVmaW5lZCgpKTsKKworICAgICAg
ICBlbWl0TmV3R2VuZXJhdG9yRnJhbWUoZ2VuZXJhdG9yRnJhbWVSZWdpc3RlcigpKTsKKyAgICAg
ICAgZW1pdFB1dEJ5SWQoZ2VuZXJhdG9yUmVnaXN0ZXIoKSwgcHJvcGVydHlOYW1lcygpLmJ1aWx0
aW5OYW1lcygpLmdlbmVyYXRvckZyYW1lUHJpdmF0ZU5hbWUoKSwgZ2VuZXJhdG9yRnJhbWVSZWdp
c3RlcigpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCkBAIC0zMDIxLDYgKzMwMjksMjAgQEAg
dm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFNldEZ1bmN0aW9uTmFtZUlmTmVlZGVkKEV4cHJl
c3Npb25Ob2RlKiB2YWx1ZU5vZGUsIFIKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobmFtZS0+
aW5kZXgoKSk7CiB9CiAKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3R2Vu
ZXJhdG9yRnJhbWUoUmVnaXN0ZXJJRCogZHN0KQoreworICAgIFN5bWJvbFRhYmxlKiBnZW5lcmF0
b3JGcmFtZVN5bWJvbFRhYmxlID0gU3ltYm9sVGFibGU6OmNyZWF0ZSgqbV92bSk7CisgICAgUmVn
aXN0ZXJJRCogY29uc3RhbnRTeW1ib2xUYWJsZVJlZ2lzdGVyID0gYWRkQ29uc3RhbnRWYWx1ZShn
ZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlKTsKKyAgICBlbWl0T3Bjb2RlKG9wX2NyZWF0ZV9sZXhp
Y2FsX2Vudmlyb25tZW50KTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZHN0LT5pbmRleCgp
KTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoc2NvcGVSZWdpc3RlcigpLT5pbmRleCgpKTsK
KyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoY29uc3RhbnRTeW1ib2xUYWJsZVJlZ2lzdGVyLT5p
bmRleCgpKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYWRkQ29uc3RhbnRWYWx1ZShqc1Vu
ZGVmaW5lZCgpKS0+aW5kZXgoKSk7CisgICAgbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlLnNl
dCgqbV92bSwgZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZSk7CisgICAgbV9nZW5lcmF0b3JGcmFt
ZVN5bWJvbFRhYmxlSW5kZXggPSBjb25zdGFudFN5bWJvbFRhYmxlUmVnaXN0ZXItPmluZGV4KCk7
CisgICAgcmV0dXJuIGRzdDsKK30KKwogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRDYWxsKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogZnVuYywgRXhwZWN0ZWRGdW5jdGlv
biBleHBlY3RlZEZ1bmN0aW9uLCBDYWxsQXJndW1lbnRzJiBjYWxsQXJndW1lbnRzLCBjb25zdCBK
U1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBj
b25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpCiB7CiAgICAgcmV0dXJuIGVtaXRDYWxsKG9w
X2NhbGwsIGRzdCwgZnVuYywgZXhwZWN0ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3Qs
IGRpdm90U3RhcnQsIGRpdm90RW5kKTsKQEAgLTM2NTgsOCArMzY4MCw3IEBAIHZvaWQgQnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXRDb21wbGV4UG9wU2NvcGVzKFJlZ2lzdGVySUQqIHNjb3BlLCBDb250
cm9sRmxvd0NvbnRlCiAgICAgICAgICAgICBpZiAoZmxpcFRyaWVzKSB7CiAgICAgICAgICAgICAg
ICAgd2hpbGUgKG1fdHJ5Q29udGV4dFN0YWNrLnNpemUoKSAhPSBmaW5hbGx5Q29udGV4dC50cnlD
b250ZXh0U3RhY2tTaXplKSB7CiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChtX3RyeUNvbnRl
eHRTdGFjay5zaXplKCkgPiBmaW5hbGx5Q29udGV4dC50cnlDb250ZXh0U3RhY2tTaXplKTsKLSAg
ICAgICAgICAgICAgICAgICAgVHJ5Q29udGV4dCBjb250ZXh0ID0gbV90cnlDb250ZXh0U3RhY2su
bGFzdCgpOwotICAgICAgICAgICAgICAgICAgICBtX3RyeUNvbnRleHRTdGFjay5yZW1vdmVMYXN0
KCk7CisgICAgICAgICAgICAgICAgICAgIFRyeUNvbnRleHQgY29udGV4dCA9IG1fdHJ5Q29udGV4
dFN0YWNrLnRha2VMYXN0KCk7CiAgICAgICAgICAgICAgICAgICAgIFRyeVJhbmdlIHJhbmdlOwog
ICAgICAgICAgICAgICAgICAgICByYW5nZS5zdGFydCA9IGNvbnRleHQuc3RhcnQ7CiAgICAgICAg
ICAgICAgICAgICAgIHJhbmdlLmVuZCA9IGJlZm9yZUZpbmFsbHk7CkBAIC0zOTQzLDcgKzM5NjQs
NyBAQCBzdGF0aWMgdm9pZCBwcmVwYXJlSnVtcFRhYmxlRm9yU3RyaW5nU3dpdGNoKFVubGlua2Vk
U3RyaW5nSnVtcFRhYmxlJiBqdW1wVGFibGUsCiAgICAgICAgIAogICAgICAgICBBU1NFUlQobm9k
ZXNbaV0tPmlzU3RyaW5nKCkpOwogICAgICAgICBTdHJpbmdJbXBsKiBjbGF1c2UgPSBzdGF0aWNf
Y2FzdDxTdHJpbmdOb2RlKj4obm9kZXNbaV0pLT52YWx1ZSgpLmltcGwoKTsKLSAgICAgICAganVt
cFRhYmxlLm9mZnNldFRhYmxlLmFkZChjbGF1c2UsIGxhYmVsc1tpXS0+YmluZChzd2l0Y2hBZGRy
ZXNzLCBzd2l0Y2hBZGRyZXNzICsgMykpOworICAgICAgICBqdW1wVGFibGUub2Zmc2V0VGFibGUu
YWRkKGNsYXVzZSwgVW5saW5rZWRTdHJpbmdKdW1wVGFibGU6Ok9mZnNldExvY2F0aW9uIHsgbGFi
ZWxzW2ldLT5iaW5kKHN3aXRjaEFkZHJlc3MsIHN3aXRjaEFkZHJlc3MgKyAzKSB9KTsKICAgICB9
CiB9CiAKQEAgLTQ0NTEsMTYgKzQ0NzIsMzYgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dFlpZWxkUG9pbnQoUmVnaXN0ZXJJRCogYXJndW1lbnQpCiAgICAgZW1pdEdlbmVyYXRvclN0YXRl
Q2hhbmdlKHlpZWxkUG9pbnRJbmRleCk7CiAgICAgLy8gRmlyc3QgeWllbGQgcG9pbnQgaXMgdXNl
ZCBmb3IgaW5pdGlhbCBzZXF1ZW5jZS4KICAgICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5k
ZXggPSB5aWVsZFBvaW50SW5kZXggLSAxOworCisgICAgLy8gU3BsaXQgdGhlIHRyeSByYW5nZSBo
ZXJlLgorICAgIFJlZlB0cjxMYWJlbD4gc2F2ZVBvaW50ID0gZW1pdExhYmVsKG5ld0xhYmVsKCku
Z2V0KCkpOworICAgIGZvciAodW5zaWduZWQgaSA9IG1fdHJ5Q29udGV4dFN0YWNrLnNpemUoKTsg
aS0tOykgeworICAgICAgICBUcnlDb250ZXh0JiBjb250ZXh0ID0gbV90cnlDb250ZXh0U3RhY2tb
aV07CisgICAgICAgIFRyeVJhbmdlIHJhbmdlOworICAgICAgICByYW5nZS5zdGFydCA9IGNvbnRl
eHQuc3RhcnQ7CisgICAgICAgIHJhbmdlLmVuZCA9IHNhdmVQb2ludDsKKyAgICAgICAgcmFuZ2Uu
dHJ5RGF0YSA9IGNvbnRleHQudHJ5RGF0YTsKKyAgICAgICAgbV90cnlSYW5nZXMuYXBwZW5kKHJh
bmdlKTsKKworICAgICAgICAvLyBUcnkgcmFuZ2Ugd2lsbCBiZSByZXN0YXJlZCBhdCB0aGUgbWVy
Z2UgcG9pbnQuCisgICAgICAgIGNvbnRleHQuc3RhcnQgPSBtZXJnZVBvaW50OworICAgIH0KKyAg
ICBWZWN0b3I8VHJ5Q29udGV4dD4gc2F2ZWRUcnlDb250ZXh0U3RhY2s7CisgICAgbV90cnlDb250
ZXh0U3RhY2suc3dhcChzYXZlZFRyeUNvbnRleHRTdGFjayk7CisKICAgICBlbWl0U2F2ZShtZXJn
ZVBvaW50LmdldCgpLCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpOwogICAgIGVtaXRSZXR1cm4oYXJn
dW1lbnQpOwogICAgIGVtaXRSZXN1bWUobWVyZ2VQb2ludC5nZXQoKSwgbGl2ZUNhbGxlZUxvY2Fs
c0luZGV4KTsKKworICAgIC8vIFJlc3RvcmUgdGhlIHRyeSBjb250ZXh0cywgd2hpY2ggc3RhcnQg
b2Zmc2V0IGlzIHVwZGF0ZWQgdG8gdGhlIG1lcmdlIHBvaW50LgorICAgIG1fdHJ5Q29udGV4dFN0
YWNrLnN3YXAoc2F2ZWRUcnlDb250ZXh0U3RhY2spOwogfQogCiB2b2lkIEJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0U2F2ZShMYWJlbCogbWVyZ2VQb2ludCwgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fs
c0luZGV4KQogewogICAgIHNpemVfdCBiZWdpbiA9IGluc3RydWN0aW9ucygpLnNpemUoKTsKICAg
ICBlbWl0T3Bjb2RlKG9wX3NhdmUpOwotICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChtX2dlbmVy
YXRvclJlZ2lzdGVyLT5pbmRleCgpKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZ2VuZXJh
dG9yRnJhbWVSZWdpc3RlcigpLT5pbmRleCgpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQo
bGl2ZUNhbGxlZUxvY2Fsc0luZGV4KTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobWVyZ2VQ
b2ludC0+YmluZChiZWdpbiwgaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKSk7CiB9CkBAIC00NDY5LDcg
KzQ1MTAsNyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzdW1lKExhYmVsKiBtZXJn
ZVBvaW50LCB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSQogewogICAgIGVtaXRHZW5lcmF0b3JT
dGF0ZUxhYmVsKCk7CiAgICAgZW1pdE9wY29kZShvcF9yZXN1bWUpOwotICAgIGluc3RydWN0aW9u
cygpLmFwcGVuZChtX2dlbmVyYXRvclJlZ2lzdGVyLT5pbmRleCgpKTsKKyAgICBpbnN0cnVjdGlv
bnMoKS5hcHBlbmQoZ2VuZXJhdG9yRnJhbWVSZWdpc3RlcigpLT5pbmRleCgpKTsKICAgICBpbnN0
cnVjdGlvbnMoKS5hcHBlbmQobGl2ZUNhbGxlZUxvY2Fsc0luZGV4KTsKICAgICBlbWl0TGFiZWwo
bWVyZ2VQb2ludCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5kZXggNWZhZjA0ZjJmM2RiYTE4YWRiMDc4OWUz
MjNlOWRhYWU2MWFiMTE2Yi4uMjVjZTllM2VhNDFlNjM1MTM5MWUxMTc5YWVlMzNlMzY1MjhiMGQy
NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0
ZWNvZGVHZW5lcmF0b3IuaApAQCAtNTMzLDYgKzUzMyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICBSZWdpc3RlcklEKiBlbWl0TmV3QXJyb3dGdW5jdGlvbkV4cHJlc3Npb24oUmVnaXN0ZXJJ
RCosIEFycm93RnVuY0V4cHJOb2RlKik7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdNZXRo
b2REZWZpbml0aW9uKFJlZ2lzdGVySUQqIGRzdCwgTWV0aG9kRGVmaW5pdGlvbk5vZGUqKTsKICAg
ICAgICAgUmVnaXN0ZXJJRCogZW1pdE5ld1JlZ0V4cChSZWdpc3RlcklEKiBkc3QsIFJlZ0V4cCop
OworICAgICAgICBSZWdpc3RlcklEKiBlbWl0TmV3R2VuZXJhdG9yRnJhbWUoUmVnaXN0ZXJJRCog
ZHN0KTsKIAogICAgICAgICB2b2lkIGVtaXRTZXRGdW5jdGlvbk5hbWVJZk5lZWRlZChFeHByZXNz
aW9uTm9kZSogdmFsdWVOb2RlLCBSZWdpc3RlcklEKiB2YWx1ZSwgUmVnaXN0ZXJJRCogbmFtZSk7
CiAKQEAgLTcwNSw2ICs3MDYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVnaXN0ZXJJ
RCogZ2VuZXJhdG9yU3RhdGVSZWdpc3RlcigpIHsgcmV0dXJuICZtX3BhcmFtZXRlcnNbMl07IH0K
ICAgICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9yVmFsdWVSZWdpc3RlcigpIHsgcmV0dXJuICZt
X3BhcmFtZXRlcnNbM107IH0KICAgICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9yUmVzdW1lTW9k
ZVJlZ2lzdGVyKCkgeyByZXR1cm4gJm1fcGFyYW1ldGVyc1s0XTsgfQorICAgICAgICBSZWdpc3Rl
cklEKiBnZW5lcmF0b3JGcmFtZVJlZ2lzdGVyKCkgeyByZXR1cm4gJm1fcGFyYW1ldGVyc1s1XTsg
fQogCiAgICAgICAgIENvZGVUeXBlIGNvZGVUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlVHlw
ZTsgfQogCkBAIC05MzIsNiArOTM0LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBWZWN0
b3I8UmVmUHRyPEZvckluQ29udGV4dD4+IG1fZm9ySW5Db250ZXh0U3RhY2s7CiAgICAgICAgIFZl
Y3RvcjxUcnlDb250ZXh0PiBtX3RyeUNvbnRleHRTdGFjazsKICAgICAgICAgVmVjdG9yPFJlZlB0
cjxMYWJlbD4+IG1fZ2VuZXJhdG9yUmVzdW1lTGFiZWxzOworCisgICAgICAgIFN0cm9uZzxTeW1i
b2xUYWJsZT4gbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlOworICAgICAgICBpbnQgbV9nZW5l
cmF0b3JGcmFtZVN5bWJvbFRhYmxlSW5kZXggeyAwIH07CisKICAgICAgICAgZW51bSBGdW5jdGlv
blZhcmlhYmxlVHlwZSA6IHVpbnQ4X3QgeyBOb3JtYWxGdW5jdGlvblZhcmlhYmxlLCBHbG9iYWxG
dW5jdGlvblZhcmlhYmxlIH07CiAgICAgICAgIFZlY3RvcjxzdGQ6OnBhaXI8RnVuY3Rpb25NZXRh
ZGF0YU5vZGUqLCBGdW5jdGlvblZhcmlhYmxlVHlwZT4+IG1fZnVuY3Rpb25zVG9Jbml0aWFsaXpl
OwogICAgICAgICBib29sIG1fbmVlZFRvSW5pdGlhbGl6ZUFyZ3VtZW50cyB7IGZhbHNlIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAppbmRleCA2OWExNmVi
NWRhNDM1NWJjNzkyNWM1ZGZkY2IwNjIwMjNlOTk2NTAyLi5jNDU3MjNiMTkwMTMyMDI1ZGZjZTMy
NmY2MDE1ZWNhNmNlNThkNzFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3Bl
cmF0aW9ucy5jcHAKQEAgLTQyLDggKzQyLDggQEAKICNpbmNsdWRlICJEaXJlY3RBcmd1bWVudHMu
aCIKICNpbmNsdWRlICJGVExGb3JPU1JFbnRyeUpJVENvZGUuaCIKICNpbmNsdWRlICJGVExPU1JF
bnRyeS5oIgotI2luY2x1ZGUgIkhvc3RDYWxsUmV0dXJuVmFsdWUuaCIKICNpbmNsdWRlICJHZXR0
ZXJTZXR0ZXIuaCIKKyNpbmNsdWRlICJIb3N0Q2FsbFJldHVyblZhbHVlLmgiCiAjaW5jbHVkZSAi
SW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKSVQuaCIKICNpbmNsdWRlICJKSVRFeGNlcHRpb25z
LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdGUtYnl0ZWNvZGUt
ZmlsZXMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdGUtYnl0ZWNvZGUtZmlsZXMKaW5k
ZXggNTY2NmEzZjkyNGMxMTliMjE2ZDNmZjBmZmU5YzY3MmI3YzcxYmI3OS4uZmFjZmRmMTMzMTQ4
NzA3YTMzMzUzNTc2MmJlNzgzMDRjNGI1MGIxZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2dlbmVyYXRlLWJ5dGVjb2RlLWZpbGVzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9nZW5lcmF0ZS1ieXRlY29kZS1maWxlcwpAQCAtMTg3LDYgKzE4Nyw3IEBAIGlmIF9fbmFtZV9f
ID09ICJfX21haW5fXyI6CiAgICAgICAgICAgICAgICAgZGVmYXVsdExlbmd0aCA9IHNlY3Rpb25b
ImRlZmF1bHRMZW5ndGgiXQogCiAgICAgICAgICAgICBieXRlY29kZU51bSA9IDAKKyAgICAgICAg
ICAgIG1heExlbmd0aCA9IDAKICAgICAgICAgICAgIGZvciBieXRlY29kZSBpbiBzZWN0aW9uWyJi
eXRlY29kZXMiXToKICAgICAgICAgICAgICAgICBpZiBub3QgZmlyc3RNYWNybzoKICAgICAgICAg
ICAgICAgICAgICAgYnl0ZWNvZGVIRmlsZS53cml0ZSgiIFxcXG4iKQpAQCAtMTk0LDYgKzE5NSw3
IEBAIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgICAgICAgICAgICAgbGVuZ3RoID0g
ZGVmYXVsdExlbmd0aAogICAgICAgICAgICAgICAgIGlmICJsZW5ndGgiIGluIGJ5dGVjb2RlOgog
ICAgICAgICAgICAgICAgICAgICBsZW5ndGggPSBieXRlY29kZVsibGVuZ3RoIl0KKyAgICAgICAg
ICAgICAgICAgICAgbWF4TGVuZ3RoID0gbWF4KFtsZW5ndGgsIG1heExlbmd0aF0pCiAKICAgICAg
ICAgICAgICAgICBieXRlY29kZUhGaWxlLndyaXRlKCIgICAgbWFjcm8oezB9LCB7MX0pIi5mb3Jt
YXQoYnl0ZWNvZGVbIm5hbWUiXSwgbGVuZ3RoKSkKICAgICAgICAgICAgICAgICBmaXJzdE1hY3Jv
ID0gRmFsc2UKQEAgLTIwMSw2ICsyMDMsNyBAQCBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgog
CiAgICAgICAgICAgICBieXRlY29kZUhGaWxlLndyaXRlKCJcblxuIikKICAgICAgICAgICAgIGJ5
dGVjb2RlSEZpbGUud3JpdGUoIiNkZWZpbmUgTlVNQkVSX09GX3swfV9JRFMgezF9XG5cbiIuZm9y
bWF0KHNlY3Rpb25bIm1hY3JvTmFtZUNvbXBvbmVudCJdLCBieXRlY29kZU51bSkpCisgICAgICAg
ICAgICBieXRlY29kZUhGaWxlLndyaXRlKCIjZGVmaW5lIE1BWF9PUENPREVfTEVOR1RIX09GX3sw
fSB7MX1cblxuIi5mb3JtYXQoc2VjdGlvblsibWFjcm9OYW1lQ29tcG9uZW50Il0sIG1heExlbmd0
aCkpCiAKICAgICAgICAgaWYgaW5pdEFTTUZpbGVOYW1lIGFuZCBzZWN0aW9uWydlbWl0SW5BU01G
aWxlJ106CiAgICAgICAgICAgICBwcmVmaXggPSAiIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKaW5kZXggMmI0YzdjOWIzZWIzNmQ2MzA2
ZWE4NDRlODUzNzZmZmE3ZmQwZjFmNy4uZmUzNjhmMzkxY2MyN2MxYTA1YjhiZDkwZmY5MWFjMTYy
MWI2MjQ3MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0lu
dGVycHJldGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50
ZXJwcmV0ZXIuY3BwCkBAIC02MDgsNyArNjA4LDcgQEAgSlNTdHJpbmcqIEludGVycHJldGVyOjpz
dGFja1RyYWNlQXNTdHJpbmcoVk0mIHZtLCBjb25zdCBWZWN0b3I8U3RhY2tGcmFtZT4mIHN0YWMK
ICAgICByZXR1cm4ganNTdHJpbmcoJnZtLCBidWlsZGVyLnRvU3RyaW5nKCkpOwogfQogCi1BTFdB
WVNfSU5MSU5FIHN0YXRpYyBIYW5kbGVySW5mbyogZmluZEV4Y2VwdGlvbkhhbmRsZXIoU3RhY2tW
aXNpdG9yJiB2aXNpdG9yLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZUJsb2NrOjpSZXF1aXJl
ZEhhbmRsZXIgcmVxdWlyZWRIYW5kbGVyKQorQUxXQVlTX0lOTElORSBzdGF0aWMgSGFuZGxlcklu
Zm8qIGZpbmRFeGNlcHRpb25IYW5kbGVyKFN0YWNrVmlzaXRvciYgdmlzaXRvciwgQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIFJlcXVpcmVkSGFuZGxlciByZXF1aXJlZEhhbmRsZXIpCiB7CiAgICAgQVNT
RVJUKGNvZGVCbG9jayk7CiAjaWYgRU5BQkxFKERGR19KSVQpCkBAIC02NDIsNyArNjQyLDcgQEAg
Y2xhc3MgR2V0Q2F0Y2hIYW5kbGVyRnVuY3RvciB7CiAgICAgICAgIGlmICghY29kZUJsb2NrKQog
ICAgICAgICAgICAgcmV0dXJuIFN0YWNrVmlzaXRvcjo6Q29udGludWU7CiAKLSAgICAgICAgbV9o
YW5kbGVyID0gZmluZEV4Y2VwdGlvbkhhbmRsZXIodmlzaXRvciwgY29kZUJsb2NrLCBDb2RlQmxv
Y2s6OlJlcXVpcmVkSGFuZGxlcjo6Q2F0Y2hIYW5kbGVyKTsKKyAgICAgICAgbV9oYW5kbGVyID0g
ZmluZEV4Y2VwdGlvbkhhbmRsZXIodmlzaXRvciwgY29kZUJsb2NrLCBSZXF1aXJlZEhhbmRsZXI6
OkNhdGNoSGFuZGxlcik7CiAgICAgICAgIGlmIChtX2hhbmRsZXIpCiAgICAgICAgICAgICByZXR1
cm4gU3RhY2tWaXNpdG9yOjpEb25lOwogCkBAIC02ODQsNyArNjg0LDcgQEAgY2xhc3MgVW53aW5k
RnVuY3RvciB7CiAgICAgICAgIG1faGFuZGxlciA9IG51bGxwdHI7CiAgICAgICAgIGlmICghbV9p
c1Rlcm1pbmF0aW9uKSB7CiAgICAgICAgICAgICBpZiAobV9jb2RlQmxvY2sgJiYgIWlzV2ViQXNz
ZW1ibHlFeGVjdXRhYmxlKG1fY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSkpCi0gICAgICAg
ICAgICAgICAgbV9oYW5kbGVyID0gZmluZEV4Y2VwdGlvbkhhbmRsZXIodmlzaXRvciwgbV9jb2Rl
QmxvY2ssIENvZGVCbG9jazo6UmVxdWlyZWRIYW5kbGVyOjpBbnlIYW5kbGVyKTsKKyAgICAgICAg
ICAgICAgICBtX2hhbmRsZXIgPSBmaW5kRXhjZXB0aW9uSGFuZGxlcih2aXNpdG9yLCBtX2NvZGVC
bG9jaywgUmVxdWlyZWRIYW5kbGVyOjpBbnlIYW5kbGVyKTsKICAgICAgICAgfQogCiAgICAgICAg
IGlmIChtX2hhbmRsZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJw
cmV0ZXIvSW50ZXJwcmV0ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9J
bnRlcnByZXRlci5oCmluZGV4IGQyMDk0ZGVlN2QyODVhYzQ5NWIxNTQxNzJhMjNiOTRmZmU4NTdm
MWUuLmU0Y2U2ZmFlOTE4OTUzZjczZjg3ZWRlOTFhNTY5ZWZhYmFjMWEwNzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCkBAIC0zMSwxMiAr
MzEsMTQgQEAKICNkZWZpbmUgSW50ZXJwcmV0ZXJfaAogCiAjaW5jbHVkZSAiQXJnTGlzdC5oIgor
I2luY2x1ZGUgIkluc3RydWN0aW9uLmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgogI2luY2x1
ZGUgIkpTQ2VsbC5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAjaW5jbHVkZSAiT3Bjb2RlLmgi
CiAjaW5jbHVkZSAiU291cmNlUHJvdmlkZXIuaCIKICNpbmNsdWRlICJTdGFja0FsaWdubWVudC5o
IgorI2luY2x1ZGUgIlVubGlua2VkQ29kZUJsb2NrLmgiCiAKICNpbmNsdWRlIDx3dGYvSGFzaE1h
cC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KQEAgLTIwOCw3ICsyMTAs
MTcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gb3Bjb2RlOwogI2VuZGlm
CiAgICAgICAgIH0KLSAgICAgICAgCisKKyAgICAgICAgT3Bjb2RlSUQgZ2V0T3Bjb2RlSUQoY29u
c3QgSW5zdHJ1Y3Rpb24mIGluc3RydWN0aW9uKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1
cm4gZ2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb24udS5vcGNvZGUpOworICAgICAgICB9CisKKyAgICAg
ICAgT3Bjb2RlSUQgZ2V0T3Bjb2RlSUQoY29uc3QgVW5saW5rZWRJbnN0cnVjdGlvbiYgaW5zdHJ1
Y3Rpb24pCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBpbnN0cnVjdGlvbi51Lm9wY29k
ZTsKKyAgICAgICAgfQorCiAgICAgICAgIGJvb2wgaXNPcGNvZGUoT3Bjb2RlKTsKIAogICAgICAg
ICBKU1ZhbHVlIGV4ZWN1dGUoUHJvZ3JhbUV4ZWN1dGFibGUqLCBDYWxsRnJhbWUqLCBKU09iamVj
dCogdGhpc09iaik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKaW5kZXggZjI3ZDM5YTZlYThk
OTQzYjRiZTg2MmNkZDBjZGI3ZWFlZDVhMTM0Ny4uNjk5MTQyNDJlNjY0MzBmZThhZTFmYjc3YjU4
OWY2OWY4N2MwN2M1MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcApAQCAtMjM1LDggKzIz
NSw2IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgREVGSU5F
X09QKG9wX2dldF9yZXN0X2xlbmd0aCkKICAgICAgICAgREVGSU5FX09QKG9wX2NoZWNrX3RkeikK
ICAgICAgICAgREVGSU5FX09QKG9wX2Fzc2VydCkKLSAgICAgICAgREVGSU5FX09QKG9wX3NhdmUp
Ci0gICAgICAgIERFRklORV9PUChvcF9yZXN1bWUpCiAgICAgICAgIERFRklORV9PUChvcF9kZWJ1
ZykKICAgICAgICAgREVGSU5FX09QKG9wX2RlbF9ieV9pZCkKICAgICAgICAgREVGSU5FX09QKG9w
X2RlbF9ieV92YWwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAppbmRleCA3MzExZGZhMTZiOWE0ZDhm
OWMxNzVjZWRlZDczNzU5ZTJiMmNiMTNjLi4xMzAyN2NlZGY0ZDA2YzM3YWYzYzMyYjk0M2YxYjRh
YjVjY2I3MGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKQEAgLTUwMSw4ICs1MDEsNiBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0X29wX2dldF9yZXN0X2xlbmd0aChJbnN0
cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfY2hlY2tfdGR6KEluc3RydWN0aW9uKik7
CiAgICAgICAgIHZvaWQgZW1pdF9vcF9hc3NlcnQoSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9p
ZCBlbWl0X29wX3NhdmUoSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX3Jlc3Vt
ZShJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZGVidWcoSW5zdHJ1Y3Rpb24q
KTsKICAgICAgICAgdm9pZCBlbWl0X29wX2RlbF9ieV9pZChJbnN0cnVjdGlvbiopOwogICAgICAg
ICB2b2lkIGVtaXRfb3BfZGVsX2J5X3ZhbChJbnN0cnVjdGlvbiopOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKaW5kZXggZDU1Nzc4ZDI1ODZmYTE3Y2Y0NTRmMzAyNDVm
NDczMjdkMDYxNTkyYS4uMjgxM2VjYjFjMDdiYWM1YWZjZGUzYzc4OTc1YTA3ZmZjNzQxMzQ0NyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCkBAIC0xNDg2LDE4ICsx
NDg2LDYgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X3Jlc3RfbGVuZ3RoKEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCiAjZW5kaWYKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3Bfc2F2ZShJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQotewotICAgIEpJVFNsb3dQYXRoQ2FsbCBz
bG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfc2F2ZSk7Ci0g
ICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKLX0KLQotdm9pZCBKSVQ6OmVtaXRfb3BfcmVzdW1lKElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCi17Ci0gICAgSklUU2xvd1BhdGhDYWxsIHNs
b3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9yZXN1bWUpOwot
ICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5k
aWYgLy8gRU5BQkxFKEpJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyLmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyLmFzbQppbmRleCAwMTk5MzE1NDU4ZWExNTIzMTg4NzExY2JhODJh
NjhjMzMzZjdhNjNjLi42YzYwYWJjYTY4N2ViYjk1YTAwMzE5MTE3MzI4M2IxZjBlNTY2ZmVhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
ci5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIuYXNtCkBAIC0xNjUxLDE1ICsxNjUxLDExIEBAIF9sbGludF9vcF9hc3NlcnQ6CiAKIAogX2xs
aW50X29wX3NhdmU6Ci0gICAgdHJhY2VFeGVjdXRpb24oKQotICAgIGNhbGxPcGNvZGVTbG93UGF0
aChfc2xvd19wYXRoX3NhdmUpCi0gICAgZGlzcGF0Y2goNCkKKyAgICBub3RTdXBwb3J0ZWQoKQog
CiAKIF9sbGludF9vcF9yZXN1bWU6Ci0gICAgdHJhY2VFeGVjdXRpb24oKQotICAgIGNhbGxPcGNv
ZGVTbG93UGF0aChfc2xvd19wYXRoX3Jlc3VtZSkKLSAgICBkaXNwYXRjaCgzKQorICAgIG5vdFN1
cHBvcnRlZCgpCiAKIAogX2xsaW50X29wX2NyZWF0ZV9sZXhpY2FsX2Vudmlyb25tZW50OgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCmluZGV4IGRjY2FiMmM4NjMxMTQyNTE4
OTQ2NWU1MTIyNDMyMDdkNmYzYmY1ZGMuLmNlODdiYmFkMTU1ZDk3MDI1MTgwNmI5NGM5NmFlMDli
ZjBiNmQ4NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2Vy
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKQEAgLTI1
Niw3ICsyNTYsNyBAQCBTdHJpbmcgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlSW5uZXIoY29uc3Qg
SWRlbnRpZmllciYgY2FsbGVlTmFtZSwgU291cmNlUGFyc2VNbwogICAgIGlmIChtX2xleGVyLT5p
c1JlcGFyc2luZ0Z1bmN0aW9uKCkpIHsKICAgICAgICAgUGFyc2VyRnVuY3Rpb25JbmZvPEFTVEJ1
aWxkZXI+IGZ1bmN0aW9uSW5mbzsKICAgICAgICAgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJz
ZU1vZGU6OkdlbmVyYXRvckJvZHlNb2RlKQotICAgICAgICAgICAgbV9wYXJhbWV0ZXJzID0gY3Jl
YXRlR2VuZXJhdG9yUGFyYW1ldGVycyhjb250ZXh0KTsKKyAgICAgICAgICAgIG1fcGFyYW1ldGVy
cyA9IGNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMoY29udGV4dCwgZnVuY3Rpb25JbmZvLnBhcmFt
ZXRlckNvdW50KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbV9wYXJhbWV0ZXJzID0gcGFy
c2VGdW5jdGlvblBhcmFtZXRlcnMoY29udGV4dCwgcGFyc2VNb2RlLCBmdW5jdGlvbkluZm8pOwog
CkBAIC01MDYsMTAgKzUwNiw5IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVNv
dXJjZUVsZW1lbnRzIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUdlbmVyYXRvCiAKICAgICBQYXJz
ZXJGdW5jdGlvbkluZm88VHJlZUJ1aWxkZXI+IGluZm87CiAgICAgaW5mby5uYW1lID0gJm1fdm0t
PnByb3BlcnR5TmFtZXMtPm51bGxJZGVudGlmaWVyOwotICAgIGNyZWF0ZUdlbmVyYXRvclBhcmFt
ZXRlcnMoY29udGV4dCk7CisgICAgY3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhjb250ZXh0LCBp
bmZvLnBhcmFtZXRlckNvdW50KTsKICAgICBpbmZvLnN0YXJ0T2Zmc2V0ID0gcGFyYW1ldGVyc1N0
YXJ0OwogICAgIGluZm8uc3RhcnRMaW5lID0gdG9rZW5MaW5lKCk7Ci0gICAgaW5mby5wYXJhbWV0
ZXJDb3VudCA9IDQ7IC8vIGdlbmVyYXRvciwgc3RhdGUsIHZhbHVlLCByZXN1bWUgbW9kZQogCiAg
ICAgewogICAgICAgICBBdXRvUG9wU2NvcGVSZWYgZ2VuZXJhdG9yQm9keVNjb3BlKHRoaXMsIHB1
c2hTY29wZSgpKTsKQEAgLTE4OTgsMzIgKzE4OTcsMzAgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIExl
eGVyVHlwZT4gdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyLCBjbGFzcyBGdW5jdGlvbkluZm9U
eXAKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KLXRlbXBsYXRlIDxjbGFzcyBU
cmVlQnVpbGRlcj4gdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkZvcm1hbFBhcmFtZXRlckxpc3QgUGFy
c2VyPExleGVyVHlwZT46OmNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMoVHJlZUJ1aWxkZXImIGNv
bnRleHQpCit0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IHR5cGVuYW1lIFRyZWVCdWlsZGVy
OjpGb3JtYWxQYXJhbWV0ZXJMaXN0IFBhcnNlcjxMZXhlclR5cGU+OjpjcmVhdGVHZW5lcmF0b3JQ
YXJhbWV0ZXJzKFRyZWVCdWlsZGVyJiBjb250ZXh0LCB1bnNpZ25lZCYgcGFyYW1ldGVyQ291bnQp
CiB7CiAgICAgYXV0byBwYXJhbWV0ZXJzID0gY29udGV4dC5jcmVhdGVGb3JtYWxQYXJhbWV0ZXJM
aXN0KCk7CiAKICAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsK
ICAgICBKU1RleHRQb3NpdGlvbiBwb3NpdGlvbiA9IHRva2VuU3RhcnRQb3NpdGlvbigpOwogCi0g
ICAgLy8gQGdlbmVyYXRvcgotICAgIGRlY2xhcmVQYXJhbWV0ZXIoJm1fdm0tPnByb3BlcnR5TmFt
ZXMtPmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclByaXZhdGVOYW1lKCkpOwotICAgIGF1dG8gZ2Vu
ZXJhdG9yID0gY29udGV4dC5jcmVhdGVCaW5kaW5nTG9jYXRpb24obG9jYXRpb24sIG1fdm0tPnBy
b3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclByaXZhdGVOYW1lKCksIHBvc2l0
aW9uLCBwb3NpdGlvbiwgQXNzaWdubWVudENvbnRleHQ6OkRlY2xhcmF0aW9uU3RhdGVtZW50KTsK
LSAgICBjb250ZXh0LmFwcGVuZFBhcmFtZXRlcihwYXJhbWV0ZXJzLCBnZW5lcmF0b3IsIDApOwor
ICAgIGF1dG8gYWRkUGFyYW1ldGVyID0gWyZdKGNvbnN0IElkZW50aWZpZXImIG5hbWUpIHsKKyAg
ICAgICAgZGVjbGFyZVBhcmFtZXRlcigmbmFtZSk7CisgICAgICAgIGF1dG8gYmluZGluZyA9IGNv
bnRleHQuY3JlYXRlQmluZGluZ0xvY2F0aW9uKGxvY2F0aW9uLCBuYW1lLCBwb3NpdGlvbiwgcG9z
aXRpb24sIEFzc2lnbm1lbnRDb250ZXh0OjpEZWNsYXJhdGlvblN0YXRlbWVudCk7CisgICAgICAg
IGNvbnRleHQuYXBwZW5kUGFyYW1ldGVyKHBhcmFtZXRlcnMsIGJpbmRpbmcsIDApOworICAgICAg
ICArK3BhcmFtZXRlckNvdW50OworICAgIH07CiAKKyAgICAvLyBAZ2VuZXJhdG9yCisgICAgYWRk
UGFyYW1ldGVyKG1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclBy
aXZhdGVOYW1lKCkpOwogICAgIC8vIEBnZW5lcmF0b3JTdGF0ZQotICAgIGRlY2xhcmVQYXJhbWV0
ZXIoJm1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclN0YXRlUHJp
dmF0ZU5hbWUoKSk7Ci0gICAgYXV0byBnZW5lcmF0b3JTdGF0ZSA9IGNvbnRleHQuY3JlYXRlQmlu
ZGluZ0xvY2F0aW9uKGxvY2F0aW9uLCBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMo
KS5nZW5lcmF0b3JTdGF0ZVByaXZhdGVOYW1lKCksIHBvc2l0aW9uLCBwb3NpdGlvbiwgQXNzaWdu
bWVudENvbnRleHQ6OkRlY2xhcmF0aW9uU3RhdGVtZW50KTsKLSAgICBjb250ZXh0LmFwcGVuZFBh
cmFtZXRlcihwYXJhbWV0ZXJzLCBnZW5lcmF0b3JTdGF0ZSwgMCk7Ci0KKyAgICBhZGRQYXJhbWV0
ZXIobV92bS0+cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yU3RhdGVQcml2
YXRlTmFtZSgpKTsKICAgICAvLyBAZ2VuZXJhdG9yVmFsdWUKLSAgICBkZWNsYXJlUGFyYW1ldGVy
KCZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JWYWx1ZVByaXZh
dGVOYW1lKCkpOwotICAgIGF1dG8gZ2VuZXJhdG9yVmFsdWUgPSBjb250ZXh0LmNyZWF0ZUJpbmRp
bmdMb2NhdGlvbihsb2NhdGlvbiwgbV92bS0+cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCku
Z2VuZXJhdG9yVmFsdWVQcml2YXRlTmFtZSgpLCBwb3NpdGlvbiwgcG9zaXRpb24sIEFzc2lnbm1l
bnRDb250ZXh0OjpEZWNsYXJhdGlvblN0YXRlbWVudCk7Ci0gICAgY29udGV4dC5hcHBlbmRQYXJh
bWV0ZXIocGFyYW1ldGVycywgZ2VuZXJhdG9yVmFsdWUsIDApOwotCisgICAgYWRkUGFyYW1ldGVy
KG1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclZhbHVlUHJpdmF0
ZU5hbWUoKSk7CiAgICAgLy8gQGdlbmVyYXRvclJlc3VtZU1vZGUKLSAgICBkZWNsYXJlUGFyYW1l
dGVyKCZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JSZXN1bWVN
b2RlUHJpdmF0ZU5hbWUoKSk7Ci0gICAgYXV0byBnZW5lcmF0b3JSZXN1bWVNb2RlID0gY29udGV4
dC5jcmVhdGVCaW5kaW5nTG9jYXRpb24obG9jYXRpb24sIG1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1
aWx0aW5OYW1lcygpLmdlbmVyYXRvclJlc3VtZU1vZGVQcml2YXRlTmFtZSgpLCBwb3NpdGlvbiwg
cG9zaXRpb24sIEFzc2lnbm1lbnRDb250ZXh0OjpEZWNsYXJhdGlvblN0YXRlbWVudCk7Ci0gICAg
Y29udGV4dC5hcHBlbmRQYXJhbWV0ZXIocGFyYW1ldGVycywgZ2VuZXJhdG9yUmVzdW1lTW9kZSwg
MCk7CisgICAgYWRkUGFyYW1ldGVyKG1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygp
LmdlbmVyYXRvclJlc3VtZU1vZGVQcml2YXRlTmFtZSgpKTsKKyAgICAvLyBAZ2VuZXJhdG9yRnJh
bWUKKyAgICBhZGRQYXJhbWV0ZXIobV92bS0+cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCku
Z2VuZXJhdG9yRnJhbWVQcml2YXRlTmFtZSgpKTsKIAogICAgIHJldHVybiBwYXJhbWV0ZXJzOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKaW5kZXggMDVkMzRhNzE4NWU3YjRm
YmNkMDExOTdjMGZhNTQzMGNlZDQ0ZDJhYS4uZDBjYzk5ZjI3ZjUwNTdiY2QwYzc1Zjg4NjQ3ZmRl
N2RmODY1ODE1MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJz
ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCkBAIC0xNDQy
LDcgKzE0NDIsNyBAQCBjbGFzcyBQYXJzZXIgewogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc0Fy
cm93RnVuY3Rpb25QYXJhbWV0ZXJzKCk7CiAgICAgCiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVC
dWlsZGVyLCBjbGFzcyBGdW5jdGlvbkluZm9UeXBlPiBORVZFUl9JTkxJTkUgdHlwZW5hbWUgVHJl
ZUJ1aWxkZXI6OkZvcm1hbFBhcmFtZXRlckxpc3QgcGFyc2VGdW5jdGlvblBhcmFtZXRlcnMoVHJl
ZUJ1aWxkZXImLCBTb3VyY2VQYXJzZU1vZGUsIEZ1bmN0aW9uSW5mb1R5cGUmKTsKLSAgICB0ZW1w
bGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElORSB0eXBlbmFtZSBUcmVlQnVpbGRl
cjo6Rm9ybWFsUGFyYW1ldGVyTGlzdCBjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKFRyZWVCdWls
ZGVyJik7CisgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBORVZFUl9JTkxJTkUgdHlw
ZW5hbWUgVHJlZUJ1aWxkZXI6OkZvcm1hbFBhcmFtZXRlckxpc3QgY3JlYXRlR2VuZXJhdG9yUGFy
YW1ldGVycyhUcmVlQnVpbGRlciYsIHVuc2lnbmVkJiBwYXJhbWV0ZXJDb3VudCk7CiAKICAgICB0
ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElORSBUcmVlQ2xhc3NFeHByZXNz
aW9uIHBhcnNlQ2xhc3MoVHJlZUJ1aWxkZXImLCBGdW5jdGlvblJlcXVpcmVtZW50cywgUGFyc2Vy
Q2xhc3NJbmZvPFRyZWVCdWlsZGVyPiYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAppbmRleCAwMDYxMjQ1YzViNTJkMjVmZDVjMzU0
ZmFiZTZjNWI3NmM5MTA5NDIzLi5iOGQ5NzgwMzkyZGFlZjc5ZmUyMTRiMGQyYzdhNjNjMjMzZTlh
YjQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93
UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQ
YXRocy5jcHAKQEAgLTM2LDcgKzM2LDYgQEAKICNpbmNsdWRlICJFcnJvci5oIgogI2luY2x1ZGUg
IkVycm9ySGFuZGxpbmdTY29wZS5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkZ1enouaCIKLSNpbmNs
dWRlICJHZW5lcmF0b3JGcmFtZS5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgogI2luY2x1
ZGUgIkhvc3RDYWxsUmV0dXJuVmFsdWUuaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgpAQCAt
NzE0LDM4ICs3MTMsNiBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfYXNzZXJ0KQogICAgIEVO
RCgpOwogfQogCi1TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfc2F2ZSkKLXsKLSAgICAvLyBPbmx5
IHNhdmUgdmFyaWFibGVzIGFuZCB0ZW1wb3JhcnkgcmVnaXN0ZXJzLiBUaGUgc2NvcGUgcmVnaXN0
ZXJzIGFyZSBpbmNsdWRlZCBpbiB0aGVtLgotICAgIC8vIEJ1dCBwYXJhbWV0ZXJzIGFyZSBub3Qg
aW5jbHVkZWQuIEJlY2F1c2UgdGhlIGdlbmVyYXRvciBpbXBsZW1lbnRhdGlvbiByZXBsYWNlcyB0
aGUgdmFsdWVzIG9mIHBhcmFtZXRlcnMgb24gZWFjaCBnZW5lcmF0b3IubmV4dCgpIGNhbGwuCi0g
ICAgQkVHSU4oKTsKLSAgICBKU1ZhbHVlIGdlbmVyYXRvciA9IE9QKDEpLmpzVmFsdWUoKTsKLSAg
ICBHZW5lcmF0b3JGcmFtZSogZnJhbWUgPSBudWxscHRyOwotICAgIEpTVmFsdWUgdmFsdWUgPSBn
ZW5lcmF0b3IuZ2V0KGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5n
ZW5lcmF0b3JGcmFtZVByaXZhdGVOYW1lKCkpOwotICAgIGlmICghdmFsdWUuaXNOdWxsKCkpCi0g
ICAgICAgIGZyYW1lID0ganNDYXN0PEdlbmVyYXRvckZyYW1lKj4odmFsdWUpOwotICAgIGVsc2Ug
ewotICAgICAgICAvLyBGSVhNRTogT25jZSBKU0dlbmVyYXRvciBzcGVjaWFsaXplZCBvYmplY3Qg
aXMgaW50cm9kdWNlZCwgdGhpcyBHZW5lcmF0b3JGcmFtZSBzaG91bGQgYmUgZW1iZWRlZCBpbnRv
IGl0IHRvIGF2b2lkIGFsbG9jYXRpb25zLgotICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNTQ1Ci0gICAgICAgIGZyYW1lID0gR2VuZXJhdG9yRnJh
bWU6OmNyZWF0ZShleGVjLT52bSgpLCAgZXhlYy0+Y29kZUJsb2NrKCktPm51bUNhbGxlZUxvY2Fs
cygpKTsKLSAgICAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoZ2VuZXJhdG9yLCB0cnVlLCBQdXRQ
cm9wZXJ0eVNsb3Q6OlB1dEJ5SWQpOwotICAgICAgICBhc09iamVjdChnZW5lcmF0b3IpLT5tZXRo
b2RUYWJsZShleGVjLT52bSgpKS0+cHV0KGFzT2JqZWN0KGdlbmVyYXRvciksIGV4ZWMsIGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JGcmFtZVByaXZhdGVOYW1l
KCksIGZyYW1lLCBzbG90KTsKLSAgICB9Ci0gICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0lu
ZGV4ID0gcGNbMl0udS51bnNpZ25lZFZhbHVlOwotICAgIGZyYW1lLT5zYXZlKGV4ZWMsIGV4ZWMt
PmNvZGVCbG9jaygpLT5saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZChsaXZlQ2FsbGVlTG9jYWxzSW5k
ZXgpKTsKLSAgICBFTkQoKTsKLX0KLQotU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3Jlc3VtZSkK
LXsKLSAgICBCRUdJTigpOwotICAgIEpTVmFsdWUgZ2VuZXJhdG9yID0gT1AoMSkuanNWYWx1ZSgp
OwotICAgIEdlbmVyYXRvckZyYW1lKiBmcmFtZSA9IGpzQ2FzdDxHZW5lcmF0b3JGcmFtZSo+KGdl
bmVyYXRvci5nZXQoZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmdl
bmVyYXRvckZyYW1lUHJpdmF0ZU5hbWUoKSkpOwotICAgIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2Nh
bHNJbmRleCA9IHBjWzJdLnUudW5zaWduZWRWYWx1ZTsKLSAgICBmcmFtZS0+cmVzdW1lKGV4ZWMs
IGV4ZWMtPmNvZGVCbG9jaygpLT5saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZChsaXZlQ2FsbGVlTG9j
YWxzSW5kZXgpKTsKLSAgICBFTkQoKTsKLX0KLQogU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2Ny
ZWF0ZV9sZXhpY2FsX2Vudmlyb25tZW50KQogewogICAgIEJFR0lOKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCmluZGV4IGViYzkxMzA2Zjgz
YTgxYjdhYTJlZTBlM2IzZmJlMjkyN2U5ZmFkNjIuLjc1MzRmNTY1M2FmMmVjZTQxODIxZDA1MWRl
Njk4MTQzMTg2ZDI0NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbW1vblNsb3dQYXRocy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bW1vblNsb3dQYXRocy5oCkBAIC0yNDUsOCArMjQ1LDYgQEAgU0xPV19QQVRIX0hJRERFTl9ERUNM
KHNsb3dfcGF0aF9uZXh0X2dlbmVyaWNfZW51bWVyYXRvcl9wbmFtZSk7CiBTTE9XX1BBVEhfSElE
REVOX0RFQ0woc2xvd19wYXRoX3RvX2luZGV4X3N0cmluZyk7CiBTTE9XX1BBVEhfSElEREVOX0RF
Q0woc2xvd19wYXRoX3Byb2ZpbGVfdHlwZV9jbGVhcl9sb2cpOwogU0xPV19QQVRIX0hJRERFTl9E
RUNMKHNsb3dfcGF0aF9hc3NlcnQpOwotU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9z
YXZlKTsKLVNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcmVzdW1lKTsKIFNMT1dfUEFU
SF9ISURERU5fREVDTChzbG93X3BhdGhfY3JlYXRlX2xleGljYWxfZW52aXJvbm1lbnQpOwogU0xP
V19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9wdXNoX3dpdGhfc2NvcGUpOwogU0xPV19QQVRI
X0hJRERFTl9ERUNMKHNsb3dfcGF0aF9yZXNvbHZlX3Njb3BlKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZyYW1lLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZyYW1lLmNwcApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggZWY2ZWE3YTEwMDI1OGMzZWNlMDRkYWFiNDNiZGFhODUxZWM4ZjcxNS4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGcmFtZS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw5
NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRh
bmUudGVhQGdtYWlsLmNvbT4uCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNs
dWRlICJHZW5lcmF0b3JGcmFtZS5oIgotCi0jaW5jbHVkZSAiQ29kZUJsb2NrLmgiCi0jaW5jbHVk
ZSAiSGVhcEl0ZXJhdGlvblNjb3BlLmgiCi0jaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIK
LSNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCi0jaW5jbHVkZSAiU2xvdFZpc2l0b3JJbmxpbmVz
LmgiCi0jaW5jbHVkZSAiU3RydWN0dXJlSW5saW5lcy5oIgotCi1uYW1lc3BhY2UgSlNDIHsKLQot
Y29uc3QgQ2xhc3NJbmZvIEdlbmVyYXRvckZyYW1lOjpzX2luZm8gPSB7ICJHZW5lcmF0b3JGcmFt
ZSIsIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoR2VuZXJhdG9yRnJhbWUp
IH07Ci0KLUdlbmVyYXRvckZyYW1lOjpHZW5lcmF0b3JGcmFtZShWTSYgdm0sIHNpemVfdCBudW1i
ZXJPZkNhbGxlZUxvY2FscykKLSAgICA6IEJhc2Uodm0sIHZtLmdlbmVyYXRvckZyYW1lU3RydWN0
dXJlLmdldCgpKQotICAgICwgbV9udW1iZXJPZkNhbGxlZUxvY2FscyhudW1iZXJPZkNhbGxlZUxv
Y2FscykKLXsKLX0KLQotdm9pZCBHZW5lcmF0b3JGcmFtZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZt
KQotewotICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKLSAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IG1fbnVtYmVyT2ZDYWxsZWVMb2NhbHM7ICsraSkKLSAgICAgICAgbG9jYWxBdChpKS5j
bGVhcigpOwotfQotCi1TdHJ1Y3R1cmUqIEdlbmVyYXRvckZyYW1lOjpjcmVhdGVTdHJ1Y3R1cmUo
Vk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkK
LXsKLSAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90
eXBlLCBUeXBlSW5mbyhDZWxsVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwotfQotCi1H
ZW5lcmF0b3JGcmFtZSogR2VuZXJhdG9yRnJhbWU6OmNyZWF0ZShWTSYgdm0sIHNpemVfdCBudW1i
ZXJPZkxvY2FscykKLXsKLSAgICBHZW5lcmF0b3JGcmFtZSogcmVzdWx0ID0KLSAgICAgICAgbmV3
ICgKLSAgICAgICAgICAgIE5vdE51bGwsCi0gICAgICAgICAgICBhbGxvY2F0ZUNlbGw8R2VuZXJh
dG9yRnJhbWU+KHZtLmhlYXAsIGFsbG9jYXRpb25TaXplRm9yTG9jYWxzKG51bWJlck9mTG9jYWxz
KSkpCi0gICAgICAgIEdlbmVyYXRvckZyYW1lKHZtLCBudW1iZXJPZkxvY2Fscyk7Ci0gICAgcmVz
dWx0LT5maW5pc2hDcmVhdGlvbih2bSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotdm9pZCBH
ZW5lcmF0b3JGcmFtZTo6c2F2ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEZhc3RCaXRWZWN0b3Im
IGxpdmVDYWxsZWVMb2NhbHMpCi17Ci0gICAgLy8gT25seSBzYXZlIGNhbGxlZSBsb2NhbHMuCi0g
ICAgLy8gRXZlcnkgdGltZSBhIGdlbmVyYXRvciBpcyBjYWxsZWQgKG9yIHJlc3VtZWQpLCBwYXJh
bWV0ZXJzIHNob3VsZCBiZSByZXBsYWNlZC4KLSAgICBBU1NFUlQobGl2ZUNhbGxlZUxvY2Fscy5u
dW1CaXRzKCkgPD0gbV9udW1iZXJPZkNhbGxlZUxvY2Fscyk7Ci0gICAgbGl2ZUNhbGxlZUxvY2Fs
cy5mb3JFYWNoU2V0Qml0KFsmXShzaXplX3QgaW5kZXgpIHsKLSAgICAgICAgbG9jYWxBdChpbmRl
eCkuc2V0KGV4ZWMtPnZtKCksIHRoaXMsIGV4ZWMtPnVuY2hlY2tlZFIodmlydHVhbFJlZ2lzdGVy
Rm9yTG9jYWwoaW5kZXgpKS5qc1ZhbHVlKCkpOwotICAgIH0pOwotfQotCi12b2lkIEdlbmVyYXRv
ckZyYW1lOjpyZXN1bWUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZl
Q2FsbGVlTG9jYWxzKQotewotICAgIC8vIE9ubHkgcmVzdW1lIGNhbGxlZSBsb2NhbHMuCi0gICAg
Ly8gRXZlcnkgdGltZSBhIGdlbmVyYXRvciBpcyBjYWxsZWQgKG9yIHJlc3VtZWQpLCBwYXJhbWV0
ZXJzIHNob3VsZCBiZSByZXBsYWNlZC4KLSAgICBsaXZlQ2FsbGVlTG9jYWxzLmZvckVhY2hTZXRC
aXQoWyZdKHNpemVfdCBpbmRleCkgewotICAgICAgICBleGVjLT51bmNoZWNrZWRSKHZpcnR1YWxS
ZWdpc3RlckZvckxvY2FsKGluZGV4KSkgPSBsb2NhbEF0KGluZGV4KS5nZXQoKTsKLSAgICAgICAg
bG9jYWxBdChpbmRleCkuY2xlYXIoKTsKLSAgICB9KTsKLX0KLQotdm9pZCBHZW5lcmF0b3JGcmFt
ZTo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQotewot
ICAgIEdlbmVyYXRvckZyYW1lKiB0aGlzT2JqZWN0ID0ganNDYXN0PEdlbmVyYXRvckZyYW1lKj4o
Y2VsbCk7Ci0gICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKLSAg
ICAvLyBTaW5jZSBvbmx5IHRydWUgY2VsbCBwb2ludGVycyBhcmUgc3RvcmVkIGFzIGEgY2VsbCwg
d2UgY2FuIHNhZmVseSBtYXJrIHRoZW0uCi0gICAgdmlzaXRvci5hcHBlbmRWYWx1ZXModGhpc09i
amVjdC0+bG9jYWxzKCksIHRoaXNPYmplY3QtPm1fbnVtYmVyT2ZDYWxsZWVMb2NhbHMpOwotfQot
Ci19IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0dlbmVyYXRvckZyYW1lLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9H
ZW5lcmF0b3JGcmFtZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZDU0NWIxNDdk
ZDRhYmZiMmJiYjliNWE3MTk0ZThmNzQ4NDFjNDlhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVy
YXRvckZyYW1lLmgKKysrIC9kZXYvbnVsbApAQCAtMSw5MCArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpZm5kZWYgR2VuZXJhdG9yRnJhbWVfaAotI2RlZmluZSBHZW5lcmF0b3JGcmFtZV9o
Ci0KLSNpbmNsdWRlICJKU0NlbGwuaCIKLSNpbmNsdWRlIDx3dGYvRmFzdEJpdFZlY3Rvci5oPgot
Ci1uYW1lc3BhY2UgSlNDIHsKLQotY2xhc3MgR2VuZXJhdG9yRnJhbWUgOiBwdWJsaWMgSlNDZWxs
IHsKLSAgICBmcmllbmQgY2xhc3MgSklUOwotI2lmIEVOQUJMRShERkdfSklUKQotICAgIGZyaWVu
ZCBjbGFzcyBERkc6OlNwZWN1bGF0aXZlSklUOwotICAgIGZyaWVuZCBjbGFzcyBERkc6OkpJVENv
bXBpbGVyOwotI2VuZGlmCi0gICAgZnJpZW5kIGNsYXNzIFZNOwotcHVibGljOgotICAgIHR5cGVk
ZWYgSlNDZWxsIEJhc2U7Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdz
ID0gU3RydWN0dXJlSXNJbW1vcnRhbCB8IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwotCi0gICAgREVD
TEFSRV9FWFBPUlRfSU5GTzsKLQotICAgIHN0YXRpYyBHZW5lcmF0b3JGcmFtZSogY3JlYXRlKFZN
Jiwgc2l6ZV90IG51bWJlck9mQ2FsbGVlTG9jYWxzKTsKLQotICAgIFdyaXRlQmFycmllckJhc2U8
VW5rbm93bj4qIGxvY2FscygpCi0gICAgewotICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PFdy
aXRlQmFycmllckJhc2U8VW5rbm93bj4qPihiaXR3aXNlX2Nhc3Q8Y2hhcio+KHRoaXMpICsgb2Zm
c2V0T2ZMb2NhbHMoKSk7Ci0gICAgfQotCi0gICAgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiYg
bG9jYWxBdChzaXplX3QgaW5kZXgpCi0gICAgewotICAgICAgICBBU1NFUlQoaW5kZXggPCBtX251
bWJlck9mQ2FsbGVlTG9jYWxzKTsKLSAgICAgICAgcmV0dXJuIGxvY2FscygpW2luZGV4XTsKLSAg
ICB9Ci0KLSAgICBzdGF0aWMgc2l6ZV90IG9mZnNldE9mTG9jYWxzKCkKLSAgICB7Ci0gICAgICAg
IHJldHVybiBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Y8c2l6ZW9mKFdyaXRlQmFycmllcjxVbmtu
b3duPik+KHNpemVvZihHZW5lcmF0b3JGcmFtZSkpOwotICAgIH0KLQotICAgIHN0YXRpYyBzaXpl
X3QgYWxsb2NhdGlvblNpemVGb3JMb2NhbHModW5zaWduZWQgbnVtYmVyT2ZMb2NhbHMpCi0gICAg
ewotICAgICAgICByZXR1cm4gb2Zmc2V0T2ZMb2NhbHMoKSArIG51bWJlck9mTG9jYWxzICogc2l6
ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPik7Ci0gICAgfQotCi0gICAgc3RhdGljIFN0cnVjdHVy
ZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHByb3RvdHlw
ZSk7Ci0KLSAgICB2b2lkIHNhdmUoRXhlY1N0YXRlKiwgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2
ZUNhbGxlZUxvY2Fscyk7Ci0gICAgdm9pZCByZXN1bWUoRXhlY1N0YXRlKiwgY29uc3QgRmFzdEJp
dFZlY3RvciYgbGl2ZUNhbGxlZUxvY2Fscyk7Ci0KLXByaXZhdGU6Ci0gICAgR2VuZXJhdG9yRnJh
bWUoVk0mLCBzaXplX3QgbnVtYmVyT2ZDYWxsZWVMb2NhbHMpOwotCi0gICAgc2l6ZV90IG1fbnVt
YmVyT2ZDYWxsZWVMb2NhbHM7Ci0KLSAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFj
dG9yOwotCi0gICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOwotCi1wcm90ZWN0ZWQ6Ci0gICAg
c3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwotfTsKLQot
fSAvLyBuYW1lc3BhY2UgSlNDCi0KLSNlbmRpZiAvLyBHZW5lcmF0b3JGcmFtZV9oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXggMWJkZGNlZWRkMDkwY2EwOWRkNTFjYTA3OTZh
MDRkZmQ4NmJlNDQyYy4uNWYzMWI5Nzg1ZTY2YWNlNmI5OGJiNjUyY2QyMTcyM2QyMTVmYTkyMiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtNDYsNyArNDYsNiBAQAogI2lu
Y2x1ZGUgIkZUTFRodW5rcy5oIgogI2luY2x1ZGUgIkZ1bmN0aW9uQ29uc3RydWN0b3IuaCIKICNp
bmNsdWRlICJHQ0FjdGl2aXR5Q2FsbGJhY2suaCIKLSNpbmNsdWRlICJHZW5lcmF0b3JGcmFtZS5o
IgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIkhlYXAuaCIKICNpbmNsdWRl
ICJIZWFwSXRlcmF0aW9uU2NvcGUuaCIKQEAgLTI0MCw3ICsyMzksNiBAQCBWTTo6Vk0oVk1UeXBl
IHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgaW5mZXJyZWRUeXBlU3RydWN0dXJlLnNl
dCgqdGhpcywgSW5mZXJyZWRUeXBlOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgp
KSk7CiAgICAgaW5mZXJyZWRUeXBlVGFibGVTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBJbmZlcnJlZFR5
cGVUYWJsZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIGZ1bmN0
aW9uUmFyZURhdGFTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBGdW5jdGlvblJhcmVEYXRhOjpjcmVhdGVT
dHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7Ci0gICAgZ2VuZXJhdG9yRnJhbWVTdHJ1Y3R1
cmUuc2V0KCp0aGlzLCBHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBq
c051bGwoKSkpOwogICAgIGV4Y2VwdGlvblN0cnVjdHVyZS5zZXQoKnRoaXMsIEV4Y2VwdGlvbjo6
Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIHByb21pc2VEZWZlcnJl
ZFN0cnVjdHVyZS5zZXQoKnRoaXMsIEpTUHJvbWlzZURlZmVycmVkOjpjcmVhdGVTdHJ1Y3R1cmUo
KnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgaW50ZXJuYWxQcm9taXNlRGVmZXJyZWRTdHJ1Y3R1
cmUuc2V0KCp0aGlzLCBKU0ludGVybmFsUHJvbWlzZURlZmVycmVkOjpjcmVhdGVTdHJ1Y3R1cmUo
KnRoaXMsIDAsIGpzTnVsbCgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAppbmRleCBm
MGRlMTUxMzVhOTA3ODc4YjQ3YTFkMzQzNGY2ODI5MWNiNWRjNzNlLi40ZmY5ZWRkMGE3NzQ2YzI5
ZTVlNjdjMzgxZmNlM2IyMDc0Nzk5NTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgK
QEAgLTMxNiw3ICszMTYsNiBAQCBjbGFzcyBWTSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRl
ZDxWTT4gewogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGluZmVycmVkVHlwZVN0cnVjdHVyZTsKICAg
ICBTdHJvbmc8U3RydWN0dXJlPiBpbmZlcnJlZFR5cGVUYWJsZVN0cnVjdHVyZTsKICAgICBTdHJv
bmc8U3RydWN0dXJlPiBmdW5jdGlvblJhcmVEYXRhU3RydWN0dXJlOwotICAgIFN0cm9uZzxTdHJ1
Y3R1cmU+IGdlbmVyYXRvckZyYW1lU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGV4
Y2VwdGlvblN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBwcm9taXNlRGVmZXJyZWRT
dHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gaW50ZXJuYWxQcm9taXNlRGVmZXJyZWRT
dHJ1Y3R1cmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNz
L2dlbmVyYXRvci1maWItZnRsLWFuZC1hcnJheS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwtYW5kLWFycmF5LmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZl
OTM5ODEyZmRiYWVjNmI4MzJiZmQwMGYyMTUzZGVmODRiYjc1OTIKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLWFu
ZC1hcnJheS5qcwpAQCAtMCwwICsxLDIzIEBACisoZnVuY3Rpb24gKCkgeworICAgIGZ1bmN0aW9u
ICpmaWIoKQorICAgIHsKKyAgICAgICAgbGV0IGEgPSAxOworICAgICAgICBsZXQgYiA9IDE7Cisg
ICAgICAgIGxldCBjID0gWyAwIF07CisgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAg
ICBjWzBdID0gYTsKKyAgICAgICAgICAgIHlpZWxkIGM7CisgICAgICAgICAgICBbYSwgYl0gPSBb
YiwgYSArIGJdOworICAgICAgICB9CisgICAgfQorCisgICAgbGV0IHZhbHVlID0gMDsKKyAgICBm
b3IgKGxldCBpID0gMDsgaSA8IDFlNDsgKytpKSB7CisgICAgICAgIGxldCBmID0gZmliKCk7Cisg
ICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwOyArK2kpIHsKKyAgICAgICAgICAgIHZhbHVl
ID0gZi5uZXh0KCkudmFsdWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHZhbHVlWzBdICE9PSAz
NTQyMjQ4NDgxNzkyNjIwMDAwMDApCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCB2
YWx1ZToke3Jlc3VsdH1gKTsKKyAgICB9Cit9KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQtb2JqZWN0LmpzIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQt
b2JqZWN0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY2NzM0MGYyZWE0Yzc0MzhhMmQyMDlhYTQwZDA2NzdlNGFi
N2QzZmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3Ry
ZXNzL2dlbmVyYXRvci1maWItZnRsLWFuZC1vYmplY3QuanMKQEAgLTAsMCArMSwyMyBAQAorKGZ1
bmN0aW9uICgpIHsKKyAgICBmdW5jdGlvbiAqZmliKCkKKyAgICB7CisgICAgICAgIGxldCBhID0g
MTsKKyAgICAgICAgbGV0IGIgPSAxOworICAgICAgICBsZXQgYyA9IHsgZmliOiAwIH07CisgICAg
ICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICBjLmZpYiA9IGE7CisgICAgICAgICAgICB5
aWVsZCBjOworICAgICAgICAgICAgW2EsIGJdID0gW2IsIGEgKyBiXTsKKyAgICAgICAgfQorICAg
IH0KKworICAgIGxldCB2YWx1ZSA9IDA7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxZTQ7ICsr
aSkgeworICAgICAgICBsZXQgZiA9IGZpYigpOworICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8
IDEwMDsgKytpKSB7CisgICAgICAgICAgICB2YWx1ZSA9IGYubmV4dCgpLnZhbHVlOworICAgICAg
ICB9CisgICAgICAgIGlmICh2YWx1ZS5maWIgIT09IDM1NDIyNDg0ODE3OTI2MjAwMDAwMCkKKyAg
ICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIHZhbHVlOiR7cmVzdWx0fWApOworICAgIH0K
K30oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dl
bmVyYXRvci1maWItZnRsLWFuZC1zdHJpbmcuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLWFuZC1zdHJpbmcuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDM4
YWU2YWIzMzQ3MDQ2ODIyODQ5ZjQzMDA0ZWE1YzQwM2VlZGEyOAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwtYW5k
LXN0cmluZy5qcwpAQCAtMCwwICsxLDIyIEBACisoZnVuY3Rpb24gKCkgeworICAgIGZ1bmN0aW9u
ICpmaWIoKQorICAgIHsKKyAgICAgICAgbGV0IGEgPSAxOworICAgICAgICBsZXQgYiA9IDE7Cisg
ICAgICAgIGxldCBjID0gIlJlc3VsdCEgIjsKKyAgICAgICAgd2hpbGUgKHRydWUpIHsKKyAgICAg
ICAgICAgIHlpZWxkIGMgKyBhOworICAgICAgICAgICAgW2EsIGJdID0gW2IsIGEgKyBiXTsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIGxldCB2YWx1ZSA9IDA7CisgICAgZm9yIChsZXQgaSA9IDA7
IGkgPCAxZTQ7ICsraSkgeworICAgICAgICBsZXQgZiA9IGZpYigpOworICAgICAgICBmb3IgKGxl
dCBpID0gMDsgaSA8IDEwMDsgKytpKSB7CisgICAgICAgICAgICB2YWx1ZSA9IGYubmV4dCgpLnZh
bHVlOworICAgICAgICB9CisgICAgICAgIGlmICh2YWx1ZSAhPT0gYFJlc3VsdCEgMzU0MjI0ODQ4
MTc5MjYyMDAwMDAwYCkKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIHZhbHVlOiR7
cmVzdWx0fWApOworICAgIH0KK30oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLmpzIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNDBlMzNk
YmM4NjhiZWE3YTg5M2M5ZWMxNmI3NzllYzI2YmRiMTljCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC5qcwpAQCAt
MCwwICsxLDIxIEBACisoZnVuY3Rpb24gKCkgeworICAgIGZ1bmN0aW9uICpmaWIoKQorICAgIHsK
KyAgICAgICAgbGV0IGEgPSAxOworICAgICAgICBsZXQgYiA9IDE7CisgICAgICAgIHdoaWxlICh0
cnVlKSB7CisgICAgICAgICAgICB5aWVsZCBhOworICAgICAgICAgICAgW2EsIGJdID0gW2IsIGEg
KyBiXTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGxldCB2YWx1ZSA9IDA7CisgICAgZm9yIChs
ZXQgaSA9IDA7IGkgPCAxZTQ7ICsraSkgeworICAgICAgICBsZXQgZiA9IGZpYigpOworICAgICAg
ICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDsgKytpKSB7CisgICAgICAgICAgICB2YWx1ZSA9IGYu
bmV4dCgpLnZhbHVlOworICAgICAgICB9CisgICAgICAgIGlmICh2YWx1ZSAhPT0gMzU0MjI0ODQ4
MTc5MjYyMDAwMDAwKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgdmFsdWU6JHty
ZXN1bHR9YCk7CisgICAgfQorfSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZyYW1lLWVtcHR5LmpzIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZnJhbWUtZW1wdHkuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NTllODg1NWJmYWMzYzU2ZGY5MjZhYmQ0MjhjMDEzYzMzNDE2Mjc0NgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZyYW1lLWVt
cHR5LmpzCkBAIC0wLDAgKzEsMzQgQEAKK2Z1bmN0aW9uIHNob3VsZFRocm93KGZ1bmMsIGVycm9y
TWVzc2FnZSkgeworICAgIHZhciBlcnJvclRocm93biA9IGZhbHNlOworICAgIHZhciBlcnJvciA9
IG51bGw7CisgICAgdHJ5IHsKKyAgICAgICAgZnVuYygpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAg
ICAgICAgZXJyb3JUaHJvd24gPSB0cnVlOworICAgICAgICBlcnJvciA9IGU7CisgICAgfQorICAg
IGlmICghZXJyb3JUaHJvd24pCisgICAgICAgIHRocm93IG5ldyBFcnJvcignbm90IHRocm93bicp
OworICAgIGlmIChTdHJpbmcoZXJyb3IpICE9PSBlcnJvck1lc3NhZ2UpCisgICAgICAgIHRocm93
IG5ldyBFcnJvcihgYmFkIGVycm9yOiAke1N0cmluZyhlcnJvcil9YCk7Cit9CisKK3Nob3VsZFRo
cm93KGZ1bmN0aW9uICgpIHsKKyAgICBmdW5jdGlvbiAqZmliKGZsYWcpCisgICAgeworICAgICAg
ICBsZXQgYSA9IDE7CisgICAgICAgIGxldCBiID0gMTsKKyAgICAgICAgeWllbGQgNDI7CisgICAg
ICAgIGlmIChmbGFnKQorICAgICAgICAgICAgcmV0dXJuIGM7CisgICAgICAgIGxldCBjID0gNTAw
OworICAgIH0KKworICAgIGxldCB2YWx1ZSA9IDA7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAx
ZTQ7ICsraSkgeworICAgICAgICBmb3IgKGxldCB2IG9mIGZpYihmYWxzZSkpIHsKKyAgICAgICAg
fQorICAgIH0KKyAgICBmb3IgKGxldCB2IG9mIGZpYih0cnVlKSkgeworICAgIH0KK30sIGBSZWZl
cmVuY2VFcnJvcjogQ2Fubm90IGFjY2VzcyB1bmluaXRpYWxpemVkIHZhcmlhYmxlLmApOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItcmVk
dWNlZC1zYXZlLXBvaW50LXB1dC10by1zY29wZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXJlZHVjZWQtc2F2ZS1wb2ludC1wdXQtdG8tc2NvcGUuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYzBjNzVmYTQ5MTQzYzE3YmUxNGYzMjgxZTNmNjU0MzRmMzUxMzllOAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJh
dG9yLXJlZHVjZWQtc2F2ZS1wb2ludC1wdXQtdG8tc2NvcGUuanMKQEAgLTAsMCArMSwyOCBAQAor
ZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09
IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCB2YWx1ZTogJHtTdHJpbmco
YWN0dWFsKX1gKTsKK30KKworZnVuY3Rpb24gZXJyb3IoKQoreworICAgIHRocm93ICJvayI7Cit9
CisKK2Z1bmN0aW9uKiBnZW4oKQoreworICAgIHZhciB2YWx1ZSA9IDQyOworICAgIHRyeSB7Cisg
ICAgICAgIHlpZWxkIDMwMDsKKyAgICAgICAgdmFsdWUgPSA1MDA7CisgICAgICAgIGVycm9yKCk7
CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICB5aWVsZCA0MjsKKyAgICAgICAgcmV0dXJuIHZh
bHVlOworICAgIH0KKyAgICByZXR1cm4gMjAwOworfQorCit2YXIgZyA9IGdlbigpOworc2hvdWxk
QmUoZy5uZXh0KCkudmFsdWUsIDMwMCk7CitzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgNDIpOwor
c2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIDUwMCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>283753</attachid>
            <date>2016-07-15 04:47:46 -0700</date>
            <delta_ts>2016-07-15 09:36:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-152723-20160715204656.patch</filename>
            <type>text/plain</type>
            <size>169447</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAzMjcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
NDM0ODNmNGY2NWE0NjdhYWQ4MTY1MTAzMWYwZmFmNDVhMDUxYjQ2Li5iYjA3ZDZmOTEwNzk4YzY3
Njk1MzEzNTA5ZDFlMmFmMzVhNGIxMDQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMTYgQEAKKzIwMTYtMDctMTQgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0RGR11bRlRMXSBJbXBsZW1lbnQgRVM2IEdlbmVyYXRvcnMgaW4g
REZHIC8gRlRMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNTI3MjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUaGlzIHBhdGNoIGludHJvZHVjZXMgREZHIGFuZCBGVEwgc3VwcG9ydCBmb3IgRVM2IGdlbmVy
YXRvcnMuCisgICAgICAgIEVTNiBnZW5lcmF0b3IgaXMgY29tcGlsZWQgYnkgdGhlIEJ5dGVjb2Rl
R2VuZXJhdG9yLiBCdXQgYXQgdGhlIGxhc3QgcGhhc2UsIEJ5dGVjb2RlR2VuZXJhdG9yIHBlcmZv
cm1zICJnZW5lcmF0b3JpZmljYXRpb24iIG9udG8gdGhlIHVubGlua2VkIGNvZGUuCisgICAgICAg
IEluIEJ5dGVjb2RlR2VuZXJhdG9yIHBoYXNlLCB3ZSBpbnNlcnRlZCBzZXZlcmFsIHNwZWNpYWwg
bWFya2VycyBmb3IgdGhlIGdlbmVyYXRvcnMuIG9wX3NhdmUgYW5kIG9wX3Jlc3VtZS4KKyAgICAg
ICAgVGhlIG9wX3NhdmUsIG9wX3Jlc3VtZSBhbmQgdGhlIG1lcmdlIHBvaW50IGJsb2NrIGFyZSBj
b25uZWN0ZWQgYXMgZm9sbG93cy4KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG9wX3JldAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IF4KKyAgICAgICAgZW50cnkgLT4gZ2VuZXJhdG9yIHN3aXRjaCAtLS0tPiBvcF9zYXZlIC0+IG1l
cmdlIHBvaW50IC0+IC4uLgorICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIF4KKyAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0t
PiBvcF9yZXN1bWUgLS0tLS0rCisKKyAgICAgICAgSW4gdGhlIGdlbmVyYXRvcmlmaWNhdGlvbiBw
aGFzZSwgd2UgdHVybiBvdXQgd2hpY2ggdmFyaWFibGVzIHNob3VsZCBiZSBzYXZlZCBhbmQgcmVz
dW1lZCBhdCBlYWNoIG9wX3NhdmUgYW5kIG9wX3Jlc3VtZSwgYW5kIGNvbnZlcnQgdGhlc2UgYnl0
ZWNvZGVzCisgICAgICAgIHRvIHRoZSBzZXF1ZW5jZXMgb2YgdGhlIGdldF9mcm9tX3Njb3BlIGFu
ZCBwdXRfdG9fc2NvcGUuIFRoZSByZWdpc3RlcnMgYXJlIHNhdmVkIGFuZCByZXN1bWVkIG92ZXIg
dGhlIGdlbmVyYXRvcidzIG5leHQoKSBjYWxscyBieSB1c2luZyB0aGlzIHNwZWNpYWwKKyAgICAg
ICAgZ2VuZXJhdG9yIGZyYW1lIHNjb3BlLgorCisgICAgICAgIEluIHRoZSBnZW5lcmF0b3JpZmlj
YXRpb24gcGhhc2UsCisKKyAgICAgICAgMS4gRmlyc3QsIHdlIGNvbnN0cnVjdCB0aGUgQnl0ZWNv
ZGVHcmFwaCBmcm9tIHRoZSB1bmlua2VkIGluc3RydWN0aW9ucy4gVGhpcyBjb3JyZWN0bHkgY29u
c3RydWN0cyB0aGUgYmFzaWMgYmxvY2tzLCBhbmQgaXQgaXMgdXNlZCBpbiB0aGUgc3Vic2VxdWVu
dAorICAgICAgICAgICBhbmFseXNpcy4KKyAgICAgICAgMi4gV2UgcGVyZm9ybSB0aGUgYW5hbHlz
aXMgb250byB0aGUgdW5saW5rZWQgY29kZS4gV2UgaGF2ZSAyIGFuYWx5c2lzOiBsaXZlbmVzcyBh
bmFseXNpcyBhbmQgZ2VuZXJhdG9yIGRlZnMgYW5hbHlzaXMuCisgICAgICAgICAgIEluIGxpdmVu
ZXNzIGFuYWx5c2lzLCB3ZSBleHRyYWN0IHRoZSBsaXZlIHZhcmlhYmxlcyBhdCB0aGUgZWFjaCBt
ZXJnZSBwb2ludC4gVGhlc2UgdmFyaWFibGVzIHNob3VsZCBiZSByZXN1bWVkIHNpbmNlIHRoZXkK
KyAgICAgICAgICAgYXJlIHVzZWQgYWZ0ZXIgdGhlIG1lcmdlIHBvaW50LgorICAgICAgICAgICBB
bmQgd2UgYWxzbyBkcml2ZSB0aGUgZm9yd2FyZCBhbmFseXNpcywgY2FsbGVkIHRoZSBnZW5lcmF0
b3IgZGVmcyBhbmFseXNpcy4gQXQgb3Bfc2F2ZSwgd2Ugc2hvdWxkIHNhdmUgdGhlIHZhcmlhYmxl
cyB0aGF0ICgxKSB3aWxsIGJlIHVzZWQgYWZ0ZXIKKyAgICAgICAgICAgdGhlIG1lcmdlIHBvaW50
IGFuZCAoMikgbmV3bHkgZGVmaW5lZCB2YXJpYWJsZXMgZnJvbSB0aGUgcHJldmlvdXMgb3BfcmVz
dW1lLiBTbyB3ZSBwcm9wYWdhdGUgdGhlIGRlZnMgKGV4Y2VwdCBmb3Igb3BfcmVzdW1lIG9uZXMp
IGFuZCBjb2xsZWN0IHRoZQorICAgICAgICAgICBuZXdseSBkZWZpbmVkIHZhcmlhYmxlcyBhdCB0
aGUgb3Bfc2F2ZSBwb2ludC4gQnkgdXNpbmcgdGhpcyBiaXQgbWFzaywgd2UgZmlsdGVyIHRoZSBs
aXZlIHZhcmlhYmxlcyBhdCB0aGUgbWVyZ2UgcG9pbnQgdG8gcmVkdWNlIHRoZSBudW1iZXIgb2Yg
dGhlCisgICAgICAgICAgIHNhdmVkIHJlZ2lzdGVycy4gV2l0aG91dCB0aGlzLCB3ZSByZXBlYXRl
ZGx5IHNhdmUgdGhlIHJlZ2lzdGVyIHRoYXQgaXMgZGVmaW5lZCBieSBvcF9yZXN1bWUuCisgICAg
ICAgIDMuIFRoZW4sIHdlIGluc2VydCB0aGUgZ2V0X2Zyb21fc2NvcGUgYW5kIHB1dF90b19zY29w
ZSBhdCBlYWNoIG9wX3NhdmUgYW5kIG9wX3Jlc3VtZS4gVGhlbiwgY2xpcCB0aGUgb3Bfc2F2ZSBh
bmQgb3BfcmVzdW1lIHRoZW1zZWx2ZXMuIFRoZXkgYXJlIGV4ZWN1dGVkCisgICAgICAgICAgIGlu
IGEgYmF0Y2ggbWFubmVyIGJ5IEJ5dGVjb2RlSW5zZXJ0aW9uU2V0LiBTaW5jZSB0aGVzZSBtb2Rp
ZmljYXRpb24gY2hhbmdlcyB0aGUgYmFzaWMgYmxvY2tzIGFuZCBzaXplIG9mIHVubGlua2VkIGlu
c3RydWN0aW9ucywgQnl0ZWNvZGVJbnNlcnRpb25TZXQKKyAgICAgICAgICAgYWxzbyBwZXJmb3Jt
cyB0aGUgb2Zmc2V0IGFkanVzdG1lbnQgZm9yIFVubGlua2VkQ29kZUJsb2NrLiBTbywgdGhpcyBC
eXRlY29kZUluc2VydGlvblNldCBpcyBwZXJmb3JtZWQgb250byB0aGUgQnl0ZWNvZGVHcmFwaCBp
bnN0ZWFkIG9mIEJ5dGVjb2RlQmFzaWNCbG9jay4KKyAgICAgICAgICAgVGhlIHJlYXNvbiB3aHkg
d2UgdGFrZSB0aGlzIGRlc2lnbiBpcyBzaW1wbGUsIHdlIGRvbid0IHdhbnQgdG8gbmV3bHkgY3Jl
YXRlIHRoZSBiYXNpYyBibG9ja3MgYW5kIG9wY29kZXMgZm9yIHRoaXMgZWFybHkgcGhhc2UgbGlr
ZSBERkcuIEluc3RlYWQsCisgICAgICAgICAgIHdlIHBlcmZvcm0gdGhlIG1vZGlmaWNhdGlvbiBh
bmQgYWRqdXN0bWVudCB0byB0aGUgdW5saW5rZWQgaW5zdHJ1Y3Rpb25zIGFuZCBVbmxpbmtlZENv
ZGVCbG9jayBpbiBhIGluLXBsYWNlIG1hbm5lci4KKworICAgICAgICBBZnRlciB0aGF0IHBoYXNl
LCB0aGUgZGF0YSBmbG93IG9mIHRoZSBnZW5lcmF0b3Itc2F2ZWQtYW5kLXJlc3VtZWQtcmVnaXN0
ZXJzIGFyZSBleHBsaWNpdGx5IHJlcHJlc2VudGVkIGJ5IHRoZSBnZXRfZnJvbV9zY29wZSBhbmQg
cHV0X3RvX3Njb3BlLgorICAgICAgICBBbmQgb3Bfc2F2ZSBhbmQgb3BfcmVzdW1lIGFyZSByZW1v
dmVkLiBTaW5jZSB3ZSB1c2UgdGhlIGV4aXN0aW5nIGJ5dGVjb2RlcywgREZHIGFuZCBGVEwgY2hh
bmdlcyBhcmUgbm90IG5lY2Vzc2FyeS4KKworICAgICAgICBDb21waWxpbmcgRVM2IGdlbmVyYXRv
cnMgaW4gREZHIGFuZCBGVEwgZ2l2ZXMgdXMgc2lnbmlmaWNhbnQgcGVyZm9ybWFuY2UgaW1wcm92
ZW1lbnRzLgorICAgICAgICBJbiBteSB4NjQgTGludXggYm94IChoYW5heWFtYXRhKSwgdGhlIHJl
c3VsdCBvZiBKU0NPbmx5IHBvcnQgaXMgdGhlIGZvbGxvd2luZ3MuCisKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2VsaW5lICAgICAgICAgICAg
ICAgICAgIHBhdGNoZWQKKworICAgICAgICBnZW5lcmF0b3ItZmliICAgICAgICAgICAgICAgICAg
ICAgICAgICAxMDQuOTA1NSstMS44MTg5ICAgICBeICAgICAzNy4xMTcwKy0xLjExOTYgICAgICAg
IF4gZGVmaW5pdGVseSAyLjgyNjN4IGZhc3RlcgorICAgICAgICBnZW5lcmF0b3Itd2l0aC1zZXZl
cmFsLXR5cGVzICAgICAgICAgICAzNTEuOTc2MCstMTQuMjQzMCAgICBeICAgIDEzMy44ODkxKy0x
Ny42MDgzICAgICAgIF4gZGVmaW5pdGVseSAyLjYyODl4IGZhc3RlcgorICAgICAgICBnZW5lcmF0
b3Itc3Vuc3BpZGVyLWFjY2Vzcy1uc2lldmUgICAgICAgIDUuOTU1NSstMC4wNjY3ICAgICBeICAg
ICAgNS4wNzYwKy0wLjA2NDggICAgICAgIF4gZGVmaW5pdGVseSAxLjE3MzN4IGZhc3RlcgorCisg
ICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBidWlsdGlucy9HZW5lcmF0b3JQcm90b3R5
cGUuanM6CisgICAgICAgIChnbG9iYWxQcml2YXRlLmdlbmVyYXRvclJlc3VtZSk6CisgICAgICAg
ICogYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6aXNCcmFu
Y2gpOgorICAgICAgICAoSlNDOjpsaW5rQmxvY2tzKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVC
YXNpY0Jsb2NrOjpjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2Nrc0ludGVybmFsKToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVCYXNpY0Jsb2NrOjpjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2Nrcyk6Cisg
ICAgICAgIChKU0M6OmNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suaDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNv
ZGVCYXNpY0Jsb2NrOjpwcmVkZWNlc3NvcnMpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUJhc2lj
QmxvY2s6OmFkZFByZWRlY2Vzc29yKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVCYXNpY0Jsb2Nr
OjppbmRleCk6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24u
Y3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6aXNWYWxpZFJlZ2lzdGVyRm9yTGl2ZW5lc3MpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbjo6Qnl0ZWNvZGVHZW5lcmF0
b3JpZmljYXRpb24pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbjo6
c3RvcmFnZUZvckdlbmVyYXRvckxvY2FsKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0
b3JpZmljYXRpb246OmNvbXB1dGVHZW5lcmF0b3JEZWZzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbjo6Y29tcHV0ZUdlbmVyYXRvclVz
ZXNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yaWZp
Y2F0aW9uOjpzdGVwT3Zlckluc3RydWN0aW9uKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5l
cmF0b3JpZmljYXRpb246OmNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQnl0ZWNvZGVPZmZzZXQpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbjo6Y29tcHV0ZUxvY2FsTGl2
ZW5lc3NGb3JCbG9jayk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9u
OjpnZXRMaXZlbmVzc0luZm9BdEJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNv
ZGVHZW5lcmF0b3JpZmljYXRpb246OnJ1bkxpdmVuZXNzQW5hbHlzaXMpOgorICAgICAgICAoSlND
OjpCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbjo6c3RlcE92ZXJJbnN0cnVjdGlvbkZvck5vbkdl
bmVyYXRvckRlZnMpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbjo6
Y29tcHV0ZUxvY2FsTm9uR2VuZXJhdG9yRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb246OmNvbXB1dGVMb2NhbE5vbkdlbmVyYXRv
ckRlZnNGb3JCbG9jayk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9u
OjpnZXROb25HZW5lcmF0b3JEZWZzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlND
OjpCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbjo6cnVuTm9uR2VuZXJhdG9yRGVmc0FuYWx5c2lz
KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb246OnJ1bik6CisgICAg
ICAgIChKU0M6OnBlcmZvcm1HZW5lcmF0b3JpZmljYXRpb24pOgorICAgICAgICAqIGJ5dGVjb2Rl
L0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmg6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuaC4KKyAgICAgICAgKiBi
eXRlY29kZS9CeXRlY29kZUdyYXBoLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpCeXRlY29kZUdy
YXBoOjpjb2RlQmxvY2spOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdyYXBoOjpiYXNpY0Jsb2Nr
cyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR3JhcGg6Omluc3RydWN0aW9ucyk6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlR3JhcGg6OmJhc2ljQmxvY2tzSW5SZXZlcnNlT3JkZXIpOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUdyYXBoOjpibG9ja0NvbnRhaW5zQnl0ZWNvZGVPZmZzZXQpOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUdyYXBoOjpmaW5kQmFzaWNCbG9ja0ZvckJ5dGVjb2RlT2Zmc2V0
KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHcmFwaDo6ZmluZEJhc2ljQmxvY2tXaXRoTGVhZGVy
T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHcmFwaDxCbG9jaz46OkJ5dGVjb2RlR3Jh
cGgpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlSW5zZXJ0aW9uU2V0LmNwcDogQWRkZWQu
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlSW5zZXJ0aW9uU2V0OjphZGp1c3RPZmZzZXQpOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUluc2VydGlvblNldDo6YXBwbHlNb2RpZmljYXRpb24pOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUluc2VydGlvblNldDo6ZXhlY3V0ZSk6CisgICAgICAgICogYnl0
ZWNvZGUvQnl0ZWNvZGVJbnNlcnRpb25TZXQuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkJ5dGVj
b2RlSW5zZXJ0aW9uU2V0OjpCeXRlY29kZUluc2VydGlvblNldCk6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlSW5zZXJ0aW9uU2V0OjppbnNlcnQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUluc2Vy
dGlvblNldDo6cmVtb3ZlQnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUluc2VydGlv
blNldDo6Z3JhcGgpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNp
cy5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Qnl0ZWNvZGVM
aXZlbmVzc0FuYWx5c2lzKToKKyAgICAgICAgKEpTQzo6aXNWYWxpZFJlZ2lzdGVyRm9yTGl2ZW5l
c3MpOgorICAgICAgICAoSlNDOjpzdGVwT3Zlckluc3RydWN0aW9uKToKKyAgICAgICAgKEpTQzo6
Y29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OmNv
bXB1dGVMb2NhbExpdmVuZXNzRm9yQmxvY2spOgorICAgICAgICAoSlNDOjpCeXRlY29kZUxpdmVu
ZXNzQW5hbHlzaXM6OnJ1bkxpdmVuZXNzRml4cG9pbnQpOgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUxpdmVuZXNzQW5hbHlzaXM6OmdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQpOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGVGdWxsTGl2ZW5lc3Mp
OgorICAgICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGVLaWxscyk6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6ZHVtcFJlc3VsdHMpOgor
ICAgICAgICAoSlNDOjpnZXRMZWFkZXJPZmZzZXRGb3JCYXNpY0Jsb2NrKTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6ZmluZEJhc2ljQmxvY2tXaXRoTGVhZGVyT2Zmc2V0KTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6YmxvY2tDb250YWluc0J5dGVjb2RlT2Zmc2V0KTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6ZmluZEJhc2ljQmxvY2tGb3JCeXRlY29kZU9mZnNldCk6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0ZSk6IERlbGV0ZWQuCisg
ICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmg6CisgICAgICAgICog
Ynl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaDoKKyAgICAgICAgKEpTQzo6Y29tcHV0ZVVzZXNGb3JC
eXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OmNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZz
ZXQpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNv
ZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmhhbmRs
ZXJGb3JJbmRleCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bGl2ZW5lc3NBbmFseXNpc1Ns
b3cpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmR1bXBCeXRlY29kZSk6IERlbGV0ZWQuCisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6c2hyaW5rVG9GaXQpOiBEZWxldGVkLgorICAgICAgICAq
IGJ5dGVjb2RlL0NvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmlzQ29uc3Rh
bnRSZWdpc3RlckluZGV4KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpsaXZlbmVzc0FuYWx5
c2lzKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpsaXZlQ2FsbGVlTG9jYWxzQXRZaWVsZCk6
IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUvSGFuZGxlckluZm8uaDoKKyAgICAgICAgKEpT
Qzo6SGFuZGxlckluZm9CYXNlOjpoYW5kbGVyRm9ySW5kZXgpOgorICAgICAgICAqIGJ5dGVjb2Rl
L1ByZWNpc2VKdW1wVGFyZ2V0cy5jcHA6CisgICAgICAgIChKU0M6OmdldEp1bXBUYXJnZXRzRm9y
Qnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRz
SW50ZXJuYWwpOgorICAgICAgICAoSlNDOjpjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKToKKyAg
ICAgICAgKEpTQzo6cmVjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKToKKyAgICAgICAgKEpTQzo6
ZmluZEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAqIGJ5dGVjb2RlL1By
ZWNpc2VKdW1wVGFyZ2V0cy5oOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2Nr
LmNwcDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OmhhbmRsZXJGb3JCeXRlY29k
ZU9mZnNldCk6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjpoYW5kbGVyRm9ySW5k
ZXgpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6YXBwbHlNb2RpZmljYXRpb24p
OgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6
OlVubGlua2VkU3RyaW5nSnVtcFRhYmxlOjpvZmZzZXRGb3JWYWx1ZSk6CisgICAgICAgICogYnl0
ZWNvZGUvVmlydHVhbFJlZ2lzdGVyLmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRl
KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKToK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROZXdHZW5lcmF0b3JGcmFtZSk6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q29tcGxleFBvcFNjb3Blcyk6
CisgICAgICAgIChKU0M6OnByZXBhcmVKdW1wVGFibGVGb3JTdHJpbmdTd2l0Y2gpOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFlpZWxkUG9pbnQpOgorICAgICAgICAoSlND
OjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFNhdmUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdFJlc3VtZSk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0b3JGcmFt
ZVJlZ2lzdGVyKToKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICog
Z2VuZXJhdGUtYnl0ZWNvZGUtZmlsZXM6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0
ZXIuY3BwOgorICAgICAgICAoSlNDOjpmaW5kRXhjZXB0aW9uSGFuZGxlcik6CisgICAgICAgIChK
U0M6OkdldENhdGNoSGFuZGxlckZ1bmN0b3I6Om9wZXJhdG9yKCkpOgorICAgICAgICAoSlNDOjpV
bndpbmRGdW5jdG9yOjpvcGVyYXRvcigpKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnBy
ZXRlci5oOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6Z2V0T3Bjb2RlSUQpOgorICAgICAg
ICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlTWFpblBh
c3MpOiBEZWxldGVkLgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUT3Bj
b2Rlcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9zYXZlKTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0X29wX3Jlc3VtZSk6IERlbGV0ZWQuCisgICAgICAgICogbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc206CisgICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6
CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUlubmVyKToKKyAgICAgICAg
KEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlR2VuZXJhdG9yRnVuY3Rpb25Tb3VyY2VFbGVt
ZW50cyk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpjcmVhdGVHZW5lcmF0b3JQ
YXJhbWV0ZXJzKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmg6CisgICAgICAgICogcnVudGlt
ZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpTTE9XX1BBVEhfREVDTCk6IERl
bGV0ZWQuCisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuaDoKKyAgICAgICAgKiBy
dW50aW1lL0dlbmVyYXRvckZyYW1lLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJh
dG9yRnJhbWU6OkdlbmVyYXRvckZyYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJh
dG9yRnJhbWU6OmZpbmlzaENyZWF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJh
dG9yRnJhbWU6OmNyZWF0ZVN0cnVjdHVyZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkdlbmVy
YXRvckZyYW1lOjpjcmVhdGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFt
ZTo6c2F2ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpyZXN1bWUp
OiBEZWxldGVkLgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6dmlzaXRDaGlsZHJlbik6
IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9HZW5lcmF0b3JGcmFtZS5oOiBSZW1vdmVkLgor
ICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6bG9jYWxzKTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6R2VuZXJhdG9yRnJhbWU6OmxvY2FsQXQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpH
ZW5lcmF0b3JGcmFtZTo6b2Zmc2V0T2ZMb2NhbHMpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpH
ZW5lcmF0b3JGcmFtZTo6YWxsb2NhdGlvblNpemVGb3JMb2NhbHMpOiBEZWxldGVkLgorICAgICAg
ICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6Vk0pOiBEZWxldGVkLgorICAg
ICAgICAqIHJ1bnRpbWUvVk0uaDoKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZp
Yi1mdGwtYW5kLWFycmF5LmpzOiBBZGRlZC4KKyAgICAgICAgKGZpYik6CisgICAgICAgICogdGVz
dHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLWFuZC1vYmplY3QuanM6IEFkZGVkLgorICAgICAg
ICAoZmliKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwtYW5kLXN0
cmluZy5qczogQWRkZWQuCisgICAgICAgIChmaWIpOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9n
ZW5lcmF0b3ItZmliLWZ0bC5qczogQWRkZWQuCisgICAgICAgIChmaWIpOgorICAgICAgICAqIHRl
c3RzL3N0cmVzcy9nZW5lcmF0b3ItZnJhbWUtZW1wdHkuanM6IEFkZGVkLgorICAgICAgICAoc2hv
dWxkVGhyb3cpOgorICAgICAgICAoc2hvdWxkVGhyb3cuZmliKToKKyAgICAgICAgKiB0ZXN0cy9z
dHJlc3MvZ2VuZXJhdG9yLXJlZHVjZWQtc2F2ZS1wb2ludC1wdXQtdG8tc2NvcGUuanM6IEFkZGVk
LgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoZ2VuKToKKwogMjAxNi0wNy0xNCAgS2Vp
dGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgVGVzdDI2
MiB0ZXN0IGZpbGVzIGFuZCB5YW1sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5k
ZXggYzQ5NzdkYWZlMmFlNThkMTc0NTI4MDU5YWRjOTc5MjcyZDE4OTM3ZS4uMDY0ZTE0ZDAxMDM5
NjM3ZTc2NjEwZDZlMzk5ZjliMjZiYTMyY2E4YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxp
c3RzLnR4dApAQCAtMTc4LDYgKzE3OCw4IEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAg
ICAgYnl0ZWNvZGUvQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAKICAgICBieXRlY29kZS9BcnJh
eVByb2ZpbGUuY3BwCiAgICAgYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcAorICAgIGJ5
dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcAorICAgIGJ5dGVjb2RlL0J5dGVj
b2RlSW5zZXJ0aW9uU2V0LmNwcAogICAgIGJ5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0
cnkuY3BwCiAgICAgYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNwcAogICAgIGJ5
dGVjb2RlL0NhbGxFZGdlLmNwcApAQCAtNjU1LDcgKzY1Nyw2IEBAIHNldChKYXZhU2NyaXB0Q29y
ZV9TT1VSQ0VTCiAgICAgcnVudGltZS9GdW5jdGlvbkhhc0V4ZWN1dGVkQ2FjaGUuY3BwCiAgICAg
cnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAKICAgICBydW50aW1lL0Z1bmN0aW9uUmFyZURh
dGEuY3BwCi0gICAgcnVudGltZS9HZW5lcmF0b3JGcmFtZS5jcHAKICAgICBydW50aW1lL0dlbmVy
YXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwCiAgICAgcnVudGltZS9HZW5lcmF0b3JGdW5jdGlv
blByb3RvdHlwZS5jcHAKICAgICBydW50aW1lL0dlbmVyYXRvclByb3RvdHlwZS5jcHAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYjY4YTk2YjFiNGY2OTM4MTgyOGIxNmE4Zjk4YzQ1
YTlkZGFiZjFlOS4uYzAxNzVkNzBiYWU1M2JlN2FlMTMxZjZhNDA1YzU3YzRmNWMxNzc1OSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEyNTIsOCArMTI1Miw2IEBACiAJCTcwOUZC
ODZDMUFFMzM1QzYwMDM5RDA2OSAvKiBXZWFrU2V0UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MDlGQjg2NjFBRTMzNUM2MDAzOUQwNjkg
LyogV2Vha1NldFByb3RvdHlwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTcwQjBBOUQxMUE5QjY2NDYwMDAxMzA2QSAvKiBSdW50aW1lRmxhZ3Mu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwQjBBOUQw
MUE5QjY2MjAwMDAxMzA2QSAvKiBSdW50aW1lRmxhZ3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MEI3OTE5MTFDMDI0QTEzMDAyNDgxRTIgLyog
U291cmNlQ29kZUtleS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNzBCNzkxOEUxQzAyNDRDOTAwMjQ4MUUyIC8qIFNvdXJjZUNvZGVLZXkuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk3MEI3OTE5MjFDMDI0
QTIzMDAyNDgxRTIgLyogR2VuZXJhdG9yRnJhbWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBCNzkxODMxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVy
YXRvckZyYW1lLmNwcCAqLzsgfTsKLQkJNzBCNzkxOTMxQzAyNEEyODAwMjQ4MUUyIC8qIEdlbmVy
YXRvckZyYW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3MEI3OTE4NDFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnJhbWUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MEI3OTE5NDFDMDI0QTI4
MDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEI3OTE4NTFDMDI0NDMyMDAyNDgx
RTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAgKi87IH07CiAJCTcwQjc5MTk1
MUMwMjRBMjgwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEI3OTE4NjFDMDI0NDMy
MDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcwQjc5MTk2MUMwMjRBMjgwMDI0
ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEI3OTE4NzFDMDI0NDMyMDAyNDgxRTIgLyog
R2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3BwICovOyB9OwpAQCAtMjAyMiw2ICsyMDIwLDEx
IEBACiAJCUUxOEUzQTU5MERGOTI3OEMwMEQ5MEIzNCAvKiBWTS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMThFM0E1NzBERjkyNzhDMDBEOTBCMzQg
LyogVk0uY3BwICovOyB9OwogCQlFMzE4Q0JDMDFCOEFFRjUxMDBBMjkyOUQgLyogSlNNb2R1bGVO
YW1lc3BhY2VPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTMxOENCQkUxQjhBRUY1MTAwQTI5MjlEIC8qIEpTTW9kdWxlTmFtZXNwYWNlT2Jq
ZWN0LmNwcCAqLzsgfTsKIAkJRTMxOENCQzExQjhBRUY1MTAwQTI5MjlEIC8qIEpTTW9kdWxlTmFt
ZXNwYWNlT2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFMzE4Q0JCRjFCOEFFRjUxMDBBMjkyOUQgLyogSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Qu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFMzI4
REFFNzFEMzhEMDA0MDAxQTI1MjkgLyogQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNEMjY0MjYxRDM4
QzA0MjAwMEJFMTc0IC8qIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcCAqLzsgfTsKKwkJ
RTMyOERBRTgxRDM4RDAwNTAwMUEyNTI5IC8qIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0QyNjQyNzFE
MzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFMzI4REFFOTFEMzhEMDA1
MDAxQTI1MjkgLyogQnl0ZWNvZGVHcmFwaC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTNEMjY0MjgxRDM4QzA0MjAwMEJFMTc0IC8qIEJ5dGVjb2RlR3Jh
cGguaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlF
MzI4REFFQTFEMzhEMDA1MDAxQTI1MjkgLyogQnl0ZWNvZGVJbnNlcnRpb25TZXQuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNEMjY0MjkxRDM4QzA0
MjAwMEJFMTc0IC8qIEJ5dGVjb2RlSW5zZXJ0aW9uU2V0LmNwcCAqLzsgfTsKKwkJRTMyOERBRUIx
RDM4RDAwNTAwMUEyNTI5IC8qIEJ5dGVjb2RlSW5zZXJ0aW9uU2V0LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0QyNjQyQTFEMzhDMDQyMDAwQkUxNzQg
LyogQnl0ZWNvZGVJbnNlcnRpb25TZXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQlFMzM2MzdBNTFCNjMyMjAyMDBFRTA4NDAgLyogUmVmbGVjdE9i
amVjdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
MzM2MzdBMzFCNjMyMjAyMDBFRTA4NDAgLyogUmVmbGVjdE9iamVjdC5jcHAgKi87IH07CiAJCUUz
MzYzN0E2MUI2MzIyMDIwMEVFMDg0MCAvKiBSZWZsZWN0T2JqZWN0LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzM2MzdBNDFCNjMyMjAyMDBFRTA4NDAg
LyogUmVmbGVjdE9iamVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUUzM0IzRTI2MUI3QUJENzUwMDQ4REIyRSAvKiBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb25PYmplY3QubHV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFMzNCM0UyNTFCN0FCRDc1MDA0OERCMkUgLyogSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uT2JqZWN0Lmx1dC5oICovOyB9OwpAQCAtMjA0Niw2ICsyMDQ5LDcgQEAKIAkJRTM3OTRF
NzUxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNzk0RTczMUI3N0VCOTcwMDU1NDNBRSAv
KiBNb2R1bGVBbmFseXplci5jcHAgKi87IH07CiAJCUUzNzk0RTc2MUI3N0VCOTcwMDU1NDNBRSAv
KiBNb2R1bGVBbmFseXplci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTM3OTRFNzQxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM5NjNDRUUx
QjczRjc1MDAwRUI0Q0U1IC8qIE5vZGVzQW5hbHl6ZU1vZHVsZS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzk2M0NFQzFCNzNGNzUwMDBFQjRDRTUg
LyogTm9kZXNBbmFseXplTW9kdWxlLmNwcCAqLzsgfTsKKwkJRTM5RDQ1RjUxRDM5MDA1NjAwQjNC
Mzc3IC8qIEludGVycHJldGVySW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTM5RDlEODQxRDM5MDAwNjAwNjY3MjgyIC8qIEludGVycHJldGVy
SW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUUzOURBNEE2MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29yZC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzlEQTRBNDFCN0U4QjdD
MDA4NEYzM0EgLyogSlNNb2R1bGVSZWNvcmQuY3BwICovOyB9OwogCQlFMzlEQTRBNzFCN0U4QjdD
MDA4NEYzM0EgLyogSlNNb2R1bGVSZWNvcmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEUzOURBNEE1MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJl
Y29yZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CUUzRDIzOUM4MUI4MjlDMUMwMEJCRUY2NyAvKiBKU01vZHVsZUVudmlyb25tZW50LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzRDIzOUM2MUI4MjlD
MUMwMEJCRUY2NyAvKiBKU01vZHVsZUVudmlyb25tZW50LmNwcCAqLzsgfTsKQEAgLTM0NDUsOCAr
MzQ0OSw2IEBACiAJCTcwOUZCODY1MUFFMzM1QzYwMDM5RDA2OSAvKiBXZWFrU2V0UHJvdG90eXBl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYWtTZXRQcm90b3R5
cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MDlGQjg2NjFBRTMzNUM2MDAz
OUQwNjkgLyogV2Vha1NldFByb3RvdHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXZWFrU2V0UHJvdG90eXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcw
QjBBOUQwMUE5QjY2MjAwMDAxMzA2QSAvKiBSdW50aW1lRmxhZ3MuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUnVudGltZUZsYWdzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCTcwQjc5MTgzMUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGcmFtZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHZW5lcmF0b3JGcmFtZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTcwQjc5MTg0MUMwMjQ0MzIwMDI0ODFFMiAvKiBH
ZW5lcmF0b3JGcmFtZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHZW5lcmF0
b3JGcmFtZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MEI3OTE4NTFDMDI0NDMy
MDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzBCNzkxODYxQzAyNDQzMjAwMjQ4MUUy
IC8qIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3MEI3OTE4NzFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnVu
Y3Rpb25Qcm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
R2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtNDI4MiwxMCArNDI4NCwxNiBAQAogCQlFMzc5NEU3MzFCNzdFQjk3MDA1NTQzQUUgLyog
TW9kdWxlQW5hbHl6ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
TW9kdWxlQW5hbHl6ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzc5NEU3
NDFCNzdFQjk3MDA1NTQzQUUgLyogTW9kdWxlQW5hbHl6ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gTW9kdWxlQW5hbHl6ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRTM5NjNDRUMxQjczRjc1MDAwRUI0Q0U1IC8qIE5vZGVzQW5hbHl6ZU1vZHVsZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOb2Rlc0FuYWx5emVNb2R1bGUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzlEOUQ4NDFEMzkwMDA2MDA2Njcy
ODIgLyogSW50ZXJwcmV0ZXJJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEludGVycHJldGVySW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlF
MzlEQTRBNDFCN0U4QjdDMDA4NEYzM0EgLyogSlNNb2R1bGVSZWNvcmQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNNb2R1bGVSZWNvcmQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlFMzlEQTRBNTFCN0U4QjdDMDA4NEYzM0EgLyogSlNNb2R1bGVS
ZWNvcmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNNb2R1bGVSZWNvcmQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNEMjM5QzYxQjgyOUMxQzAwQkJFRjY3
IC8qIEpTTW9kdWxlRW52aXJvbm1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSlNNb2R1bGVFbnZpcm9ubWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUUzRDIzOUM3MUI4MjlDMUMwMEJCRUY2NyAvKiBKU01vZHVsZUVudmlyb25tZW50Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTW9kdWxlRW52aXJvbm1lbnQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTNEMjY0MjYxRDM4QzA0MjAwMEJFMTc0IC8q
IEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJRTNEMjY0MjcxRDM4QzA0MjAwMEJFMTc0IC8qIEJ5dGVjb2RlR2Vu
ZXJhdG9yaWZpY2F0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJ5dGVj
b2RlR2VuZXJhdG9yaWZpY2F0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUz
RDI2NDI4MUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRlY29kZUdyYXBoLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEJ5dGVjb2RlR3JhcGguaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJRTNEMjY0MjkxRDM4QzA0MjAwMEJFMTc0IC8qIEJ5dGVjb2RlSW5zZXJ0aW9uU2V0
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJ5dGVjb2RlSW5zZXJ0
aW9uU2V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTNEMjY0MkExRDM4QzA0
MjAwMEJFMTc0IC8qIEJ5dGVjb2RlSW5zZXJ0aW9uU2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEJ5dGVjb2RlSW5zZXJ0aW9uU2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUUzRUY4ODcyMUI2NkRGMjMwMDNGMjZDQiAvKiBKU1Byb3BlcnR5TmFtZUl0ZXJh
dG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUHJvcGVydHlO
YW1lSXRlcmF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0VGODg3MzFC
NjZERjIzMDAzRjI2Q0IgLyogSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUU0OURDMTQ5MTJFRjI2MUEwMDE4NEExRiAvKiBTb3VyY2VQcm92
aWRlckNhY2hlSXRlbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTb3VyY2VQ
cm92aWRlckNhY2hlSXRlbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDk5OCw2
ICs1MDA2LDcgQEAKIAkJMTQyOUQ3N0EwRUQyMEQ3MzAwQjg5NjE5IC8qIGludGVycHJldGVyICov
ID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlFMzlEOUQ4NDFE
MzkwMDA2MDA2NjcyODIgLyogSW50ZXJwcmV0ZXJJbmxpbmVzLmggKi8sCiAJCQkJMEY1NUYwRjEx
NEQxMDYzNjAwQUM3NjQ5IC8qIEFic3RyYWN0UEMuY3BwICovLAogCQkJCTBGNTVGMEYyMTREMTA2
MzYwMEFDNzY0OSAvKiBBYnN0cmFjdFBDLmggKi8sCiAJCQkJMTQyOUQ4NUIwRUQyMThFOTAwQjg5
NjE5IC8qIENMb29wU3RhY2suY3BwICovLApAQCAtNTY2Nyw4ICs1Njc2LDYgQEAKIAkJCQlGNjky
QTg1RDAyNTU1OTdEMDFGRjYwRjcgLyogRnVuY3Rpb25Qcm90b3R5cGUuaCAqLywKIAkJCQk2MkQy
RDM4RDFBREYxMDNGMDAwMjA2QzEgLyogRnVuY3Rpb25SYXJlRGF0YS5jcHAgKi8sCiAJCQkJNjJE
MkQzOEUxQURGMTAzRjAwMDIwNkMxIC8qIEZ1bmN0aW9uUmFyZURhdGEuaCAqLywKLQkJCQk3MEI3
OTE4MzFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnJhbWUuY3BwICovLAotCQkJCTcwQjc5
MTg0MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGcmFtZS5oICovLAogCQkJCTcwQjc5MTg1
MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCAqLywK
IAkJCQk3MEI3OTE4NjFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1
Y3Rvci5oICovLAogCQkJCTcwQjc5MTg3MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5j
dGlvblByb3RvdHlwZS5jcHAgKi8sCkBAIC02NTUwLDYgKzY1NTcsMTEgQEAKIAkJOTY5QTA3OEYw
RUQxRDNBRTAwRjFGNjgxIC8qIGJ5dGVjb2RlICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJ
CQljaGlsZHJlbiA9ICgKKwkJCQlFM0QyNjQyNjFEMzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNvZGVH
ZW5lcmF0b3JpZmljYXRpb24uY3BwICovLAorCQkJCUUzRDI2NDI3MUQzOEMwNDIwMDBCRTE3NCAv
KiBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5oICovLAorCQkJCUUzRDI2NDI4MUQzOEMwNDIw
MDBCRTE3NCAvKiBCeXRlY29kZUdyYXBoLmggKi8sCisJCQkJRTNEMjY0MjkxRDM4QzA0MjAwMEJF
MTc0IC8qIEJ5dGVjb2RlSW5zZXJ0aW9uU2V0LmNwcCAqLywKKwkJCQlFM0QyNjQyQTFEMzhDMDQy
MDAwQkUxNzQgLyogQnl0ZWNvZGVJbnNlcnRpb25TZXQuaCAqLywKIAkJCQk1MzcwQjRGMzFCRjI1
RUEyMDA1QzQwRkMgLyogQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50QmFz
ZS5jcHAgKi8sCiAJCQkJNTM3MEI0RjQxQkYyNUVBMjAwNUM0MEZDIC8qIEFkYXB0aXZlSW5mZXJy
ZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2UuaCAqLywKIAkJCQkwRjgzMzVCNDE2MzlDMUUz
MDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAgKi8sCkBAIC03MTA0LDYgKzcx
MTYsNyBAQAogCQkJCTBGRUM4NTJEMUJEQUNEQUMwMDgwRkY3NCAvKiBCM1Byb2NlZHVyZUlubGlu
ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUM4NUJEMUJFMTQ2MkYwMDgwRkY3NCAvKiBCM1Jl
ZHVjZVN0cmVuZ3RoLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVDODUzMTFCREFDREFDMDA4MEZG
NzQgLyogQjNTdGFja21hcFNwZWNpYWwuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzMjhEQUU4MUQz
OEQwMDUwMDFBMjUyOSAvKiBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEZFQzg1MzUxQkRBQ0RBQzAwODBGRjc0IC8qIEIzU2xvdEJhc2VWYWx1ZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEZFQzg1MzYxQkRBQ0RBQzAwODBGRjc0IC8qIEIzU3VjY2Vzc29y
Q29sbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQzg1MzgxQkRBQ0RBQzAwODBGRjc0
IC8qIEIzU3dpdGNoQ2FzZS5oIGluIEhlYWRlcnMgKi8sCkBAIC03MzY0LDcgKzczNzcsNiBAQAog
CQkJCUE3Mzc4MTBFMTc5OUVBMkUwMDgxNzUzMyAvKiBERkdOYXR1cmFsTG9vcHMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTg2RUNBM0VBMTMyREVGMUMwMDJCMkFENyAvKiBERkdOb2RlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRkZCOTIxQjE2RDAyRjAxMDA1NUE1REIgLyogREZHTm9kZUFsbG9jYXRv
ci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNzBCNzkxOTMxQzAyNEEyODAwMjQ4MUUyIC8qIEdlbmVy
YXRvckZyYW1lLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkE1ODFCQjE1MEU5NTMwMDBCOUEyRDkg
LyogREZHTm9kZUZsYWdzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjMwMEI3ODE4QUIwNTExMDBB
NkQ3MkUgLyogREZHTm9kZU9yaWdpbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZBNTgxQkMxNTBF
OTUzMDAwQjlBMkQ5IC8qIERGR05vZGVUeXBlLmggaW4gSGVhZGVycyAqLywKQEAgLTczNzksNiAr
NzM5MSw3IEBACiAJCQkJMEZEOEEzMjYxN0Q1MUY1NzAwQ0EyQzQwIC8qIERGR09TUkVudHJ5cG9p
bnRDcmVhdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkMwOTc2QTE0NjhBNkY3MDBD
RjI0NDIgLyogREZHT1NSRXhpdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyMzVCRUMxNzE3OEU3
MzAwNjkwQzdGIC8qIERGR09TUkV4aXRCYXNlLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzlENDVG
NTFEMzkwMDU2MDBCM0IzNzcgLyogSW50ZXJwcmV0ZXJJbmxpbmVzLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRkZCOTIxQzE2RDAyRjExMDA1NUE1REIgLyogREZHT1NSRXhpdENvbXBpbGF0aW9uSW5m
by5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDMDk3NzExNDY5M0FGNTAwQ0YyNDQyIC8qIERGR09T
UkV4aXRDb21waWxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY3MDI1QUExNzE0QjBGQzAwMzgy
QzBFIC8qIERGR09TUkV4aXRDb21waWxlckNvbW1vbi5oIGluIEhlYWRlcnMgKi8sCkBAIC03NjM2
LDYgKzc2NDksNyBAQAogCQkJCUUzM0IzRTI2MUI3QUJENzUwMDQ4REIyRSAvKiBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb25PYmplY3QubHV0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTMyNDM4QzE4
NTY4MzM1MDAyRUQ2OTIgLyogSW5zcGVjdG9yUHJvdG9jb2xPYmplY3RzLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBNTVEOTNBQzE4NTE0Rjc5MDA0MDBERUQgLyogSW5zcGVjdG9yUHJvdG9jb2xUeXBl
cy5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTMyOERBRUIxRDM4RDAwNTAwMUEyNTI5IC8qIEJ5dGVj
b2RlSW5zZXJ0aW9uU2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTBFNEI2MjE4ODA5REQ1MDA2
OEE0NkQgLyogSW5zcGVjdG9yUnVudGltZUFnZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTkz
Q0Y4MzE4NDAzNzcxMDBCRkNFMjcgLyogSW5zcGVjdG9yVmFsdWVzLmggaW4gSGVhZGVycyAqLywK
IAkJCQk5NjlBMDc5OTBFRDFEM0FFMDBGMUY2ODEgLyogSW5zdHJ1Y3Rpb24uaCBpbiBIZWFkZXJz
ICovLApAQCAtNzc2NCw2ICs3Nzc4LDcgQEAKIAkJCQlFMzNGNTA4MTFCODQyOUE0MDA0MTM4NTYg
LyogSlNJbnRlcm5hbFByb21pc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNjE4MzJBMUM0NUJG
MDcwMDcyNDUwQiAvKiBBaXJDQ2FsbGluZ0NvbnZlbnRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJ
CUUzM0Y1MDc5MUI4NDIyNTcwMDQxMzg1NiAvKiBKU0ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9y
LmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzI4REFFOTFEMzhEMDA1MDAxQTI1MjkgLyogQnl0ZWNv
ZGVHcmFwaC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTMzRjUwODcxQjg0NDlFRjAwNDEzODU2IC8q
IEpTSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IubHV0LmggaW4gSGVhZGVycyAqLywKIAkJCQlF
MzNGNTA4NTFCODQzN0EwMDA0MTM4NTYgLyogSlNJbnRlcm5hbFByb21pc2VEZWZlcnJlZC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRTMzRjUwNzUxQjg0MjFDMDAwNDEzODU2IC8qIEpTSW50ZXJuYWxQ
cm9taXNlUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKQEAgLTg3MDUsNiArODcyMCw3IEBACiAJ
CQkJMTQ3RjM5QkQxMDdFQzM3NjAwNDI3QTQ4IC8qIEFyZ0xpc3QuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMEY3NDNCQUExNkI4ODI0OTAwOUY5Mjc3IC8qIEFSTTY0RGlzYXNzZW1ibGVyLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTg2RDNCMkMzMTAxNTZCREUwMDI4NjVFNyAvKiBBUk1Bc3NlbWJs
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTMyOERBRTcxRDM4RDAwNDAwMUEyNTI5IC8qIEJ5
dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTY1QzAyODUw
MTcxNzk1RTIwMDM1MUUzNSAvKiBBUk12N0Rpc2Fzc2VtYmxlci5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk2NUMwMjg1QzE3MTc5NjY4MDAzNTFFMzUgLyogQVJNdjdET3Bjb2RlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTBGODMzNUI3MTYzOUMxRTYwMDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Q
cm9maWxlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtOTAzOSw2ICs5MDU1LDcgQEAKIAkJCQkwRjI1
RjFCMTE4MTYzNUYzMDA1MjJGMzkgLyogRlRMU2xvd1BhdGhDYWxsLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGMzM4REYxMUJFOTNBRDEwMDEzQzg4RiAvKiBCM1N0YWNrbWFwVmFsdWUuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMEYyNUYxQjMxODE2MzVGMzAwNTIyRjM5IC8qIEZUTFNsb3dQYXRo
Q2FsbEtleS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFMzI4REFFQTFEMzhEMDA1MDAxQTI1Mjkg
LyogQnl0ZWNvZGVJbnNlcnRpb25TZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDMxOURBMDMx
QzFCRTQwQTAwMUQyNjBCIC8qIEIzTG93ZXJNYWNyb3NBZnRlck9wdGltaXphdGlvbnMuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMEZFQTBBMTYxNzA2QkI5MDAwQkI3MjJDIC8qIEZUTFN0YXRlLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTBGMjM1QkUxMTcxNzhFMUMwMDY5MEM3RiAvKiBGVExUaHVu
a3MuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC05NDQwLDcgKzk0NTcsNiBAQAogCQkJCTc5RUUwQkZG
MUI0QUZCODUwMDAzODVDOSAvKiBWYXJpYWJsZUVudmlyb25tZW50LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGNkM3MzUwMUFDOUY5OUYwMEJFMTY4MiAvKiBWYXJpYWJsZVdyaXRlRmlyZURldGFp
bC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkUwNTAyQzFBQTkwOTU2MDBEMzNCMzMgLyogVmFy
T2Zmc2V0LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTcwQjc5MTkyMUMwMjRBMjMwMDI0ODFFMiAv
KiBHZW5lcmF0b3JGcmFtZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjIwQzI1OTFBODAxM0FC
MDBEQTMyMjkgLyogVmlydHVhbFJlZ2lzdGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxOEUz
QTU5MERGOTI3OEMwMEQ5MEIzNCAvKiBWTS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRTU5MzJB
NzE4M0M1QTI2MDBBMUVDQ0MgLyogVk1FbnRyeVNjb3BlLmNwcCBpbiBTb3VyY2VzICovLApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0dlbmVyYXRvclByb3RvdHlw
ZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9HZW5lcmF0b3JQcm90b3R5cGUu
anMKaW5kZXggM2MxNDA2ODdkZmM3ZTAwZWZlOTFhZTgwYjJhYzY3NmZhOWJmNDhmNC4uNDk5ZGJk
MzkyZTgzMTNkY2RkODZlYzhjMTYwNTY5ZDdkNmY1NDliMSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J1aWx0aW5zL0dlbmVyYXRvclByb3RvdHlwZS5qcworKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvR2VuZXJhdG9yUHJvdG90eXBlLmpzCkBAIC01MSw3ICs1
MSw3IEBAIGZ1bmN0aW9uIGdlbmVyYXRvclJlc3VtZShnZW5lcmF0b3IsIHNlbnRWYWx1ZSwgcmVz
dW1lTW9kZSkKICAgICB9IGVsc2UgewogICAgICAgICB0cnkgewogICAgICAgICAgICAgZ2VuZXJh
dG9yLkBnZW5lcmF0b3JTdGF0ZSA9IEBHZW5lcmF0b3JTdGF0ZUV4ZWN1dGluZzsKLSAgICAgICAg
ICAgIHZhbHVlID0gZ2VuZXJhdG9yLkBnZW5lcmF0b3JOZXh0LkBjYWxsKGdlbmVyYXRvci5AZ2Vu
ZXJhdG9yVGhpcywgZ2VuZXJhdG9yLCBzdGF0ZSwgc2VudFZhbHVlLCByZXN1bWVNb2RlKTsKKyAg
ICAgICAgICAgIHZhbHVlID0gZ2VuZXJhdG9yLkBnZW5lcmF0b3JOZXh0LkBjYWxsKGdlbmVyYXRv
ci5AZ2VuZXJhdG9yVGhpcywgZ2VuZXJhdG9yLCBzdGF0ZSwgc2VudFZhbHVlLCByZXN1bWVNb2Rl
LCBnZW5lcmF0b3IuQGdlbmVyYXRvckZyYW1lKTsKICAgICAgICAgICAgIGlmIChnZW5lcmF0b3Iu
QGdlbmVyYXRvclN0YXRlID09PSBAR2VuZXJhdG9yU3RhdGVFeGVjdXRpbmcpIHsKICAgICAgICAg
ICAgICAgICBnZW5lcmF0b3IuQGdlbmVyYXRvclN0YXRlID0gQEdlbmVyYXRvclN0YXRlQ29tcGxl
dGVkOwogICAgICAgICAgICAgICAgIGRvbmUgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcAppbmRleCA3ZjE3YzBl
ZjEwYjQzM2ZhYzhmNThjYjNiOWNhNWQ0ZDAxNWJiYTA4Li43YmZmNmRkZTMzNzljODE1ZjY2ZjEy
OTEyMmRjYzg1MTdkNjI1ZjdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1
ZGUgIkJ5dGVjb2RlQmFzaWNCbG9jay5oIgogCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5j
bHVkZSAiSW50ZXJwcmV0ZXJJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2lu
Y2x1ZGUgIlByZWNpc2VKdW1wVGFyZ2V0cy5oIgogCkBAIC02MCw2ICs2MSw3IEBAIHN0YXRpYyBi
b29sIGlzQnJhbmNoKE9wY29kZUlEIG9wY29kZUlEKQogICAgIGNhc2Ugb3Bfc3dpdGNoX3N0cmlu
ZzoKICAgICBjYXNlIG9wX3NhdmU6CiAgICAgICAgIHJldHVybiB0cnVlOworCiAgICAgZGVmYXVs
dDoKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KQEAgLTEwOCwxMiArMTEwLDE5IEBAIHN0
YXRpYyBib29sIGlzSnVtcFRhcmdldChPcGNvZGVJRCBvcGNvZGVJRCwgY29uc3QgVmVjdG9yPHVu
c2lnbmVkLCAzMj4mIGp1bXBUYXJnCiBzdGF0aWMgdm9pZCBsaW5rQmxvY2tzKEJ5dGVjb2RlQmFz
aWNCbG9jayogcHJlZGVjZXNzb3IsIEJ5dGVjb2RlQmFzaWNCbG9jayogc3VjY2Vzc29yKQogewog
ICAgIHByZWRlY2Vzc29yLT5hZGRTdWNjZXNzb3Ioc3VjY2Vzc29yKTsKKyAgICBzdWNjZXNzb3It
PmFkZFByZWRlY2Vzc29yKHByZWRlY2Vzc29yKTsKIH0KIAotdm9pZCBjb21wdXRlQnl0ZWNvZGVC
YXNpY0Jsb2NrcyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxC
eXRlY29kZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9ja3MpCit0ZW1wbGF0ZTx0eXBlbmFtZSBCbG9j
aywgdHlwZW5hbWUgSW5zdHJ1Y3Rpb24+Cit2b2lkIEJ5dGVjb2RlQmFzaWNCbG9jazo6Y29tcHV0
ZUJ5dGVjb2RlQmFzaWNCbG9ja3NJbnRlcm5hbChCbG9jayogY29kZUJsb2NrLCBJbnN0cnVjdGlv
biogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQsIFZlY3Rvcjxz
dGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mIGJhc2ljQmxvY2tzKQogewogICAg
IFZlY3Rvcjx1bnNpZ25lZCwgMzI+IGp1bXBUYXJnZXRzOwotICAgIGNvbXB1dGVQcmVjaXNlSnVt
cFRhcmdldHMoY29kZUJsb2NrLCBqdW1wVGFyZ2V0cyk7CisgICAgY29tcHV0ZVByZWNpc2VKdW1w
VGFyZ2V0cyhjb2RlQmxvY2ssIGluc3RydWN0aW9uc0JlZ2luLCBpbnN0cnVjdGlvbkNvdW50LCBq
dW1wVGFyZ2V0cyk7CisKKyAgICBhdXRvIGFwcGVuZEJsb2NrID0gWyZdIChzdGQ6OnVuaXF1ZV9w
dHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiYmIGJsb2NrKSB7CisgICAgICAgIGJsb2NrLT5tX2luZGV4
ID0gYmFzaWNCbG9ja3Muc2l6ZSgpOworICAgICAgICBiYXNpY0Jsb2Nrcy5hcHBlbmQoV1RGTW92
ZShibG9jaykpOworICAgIH07CiAKICAgICAvLyBDcmVhdGUgdGhlIGVudHJ5IGFuZCBleGl0IGJh
c2ljIGJsb2Nrcy4KICAgICBiYXNpY0Jsb2Nrcy5yZXNlcnZlQ2FwYWNpdHkoanVtcFRhcmdldHMu
c2l6ZSgpICsgMik7CkBAIC0xMjIsMTkgKzEzMSwxNyBAQCB2b2lkIGNvbXB1dGVCeXRlY29kZUJh
c2ljQmxvY2tzKENvZGVCbG9jayogY29kZUJsb2NrLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5
dAogICAgIGF1dG8gZmlyc3RCbG9jayA9IHN0ZDo6bWFrZV91bmlxdWU8Qnl0ZWNvZGVCYXNpY0Js
b2NrPigwLCAwKTsKICAgICBsaW5rQmxvY2tzKGVudHJ5LmdldCgpLCBmaXJzdEJsb2NrLmdldCgp
KTsKIAotICAgIGJhc2ljQmxvY2tzLmFwcGVuZChXVEZNb3ZlKGVudHJ5KSk7CisgICAgYXBwZW5k
QmxvY2soV1RGTW92ZShlbnRyeSkpOwogICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogY3VycmVudCA9
IGZpcnN0QmxvY2suZ2V0KCk7Ci0gICAgYmFzaWNCbG9ja3MuYXBwZW5kKFdURk1vdmUoZmlyc3RC
bG9jaykpOworICAgIGFwcGVuZEJsb2NrKFdURk1vdmUoZmlyc3RCbG9jaykpOwogCiAgICAgYXV0
byBleGl0ID0gc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZUJhc2ljQmxvY2s+KEJ5dGVjb2RlQmFz
aWNCbG9jazo6RXhpdEJsb2NrKTsKIAogICAgIGJvb2wgbmV4dEluc3RydWN0aW9uSXNMZWFkZXIg
PSBmYWxzZTsKIAogICAgIEludGVycHJldGVyKiBpbnRlcnByZXRlciA9IGNvZGVCbG9jay0+dm0o
KS0+aW50ZXJwcmV0ZXI7Ci0gICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luID0gY29k
ZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpOwotICAgIHVuc2lnbmVkIGluc3RydWN0aW9u
Q291bnQgPSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLnNpemUoKTsKICAgICBmb3IgKHVuc2ln
bmVkIGJ5dGVjb2RlT2Zmc2V0ID0gMDsgYnl0ZWNvZGVPZmZzZXQgPCBpbnN0cnVjdGlvbkNvdW50
OykgewotICAgICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGludGVycHJldGVyLT5nZXRPcGNvZGVJ
RChpbnN0cnVjdGlvbnNCZWdpbltieXRlY29kZU9mZnNldF0udS5vcGNvZGUpOworICAgICAgICBP
cGNvZGVJRCBvcGNvZGVJRCA9IGludGVycHJldGVyLT5nZXRPcGNvZGVJRChpbnN0cnVjdGlvbnNC
ZWdpbltieXRlY29kZU9mZnNldF0pOwogICAgICAgICB1bnNpZ25lZCBvcGNvZGVMZW5ndGggPSBv
cGNvZGVMZW5ndGhzW29wY29kZUlEXTsKIAogICAgICAgICBib29sIGNyZWF0ZWRCbG9jayA9IGZh
bHNlOwpAQCAtMTQyLDcgKzE0OSw3IEBAIHZvaWQgY29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3Mo
Q29kZUJsb2NrKiBjb2RlQmxvY2ssIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0CiAgICAgICAg
IGlmIChpc0p1bXBUYXJnZXQob3Bjb2RlSUQsIGp1bXBUYXJnZXRzLCBieXRlY29kZU9mZnNldCkg
fHwgbmV4dEluc3RydWN0aW9uSXNMZWFkZXIpIHsKICAgICAgICAgICAgIGF1dG8gbmV3QmxvY2sg
PSBzdGQ6Om1ha2VfdW5pcXVlPEJ5dGVjb2RlQmFzaWNCbG9jaz4oYnl0ZWNvZGVPZmZzZXQsIG9w
Y29kZUxlbmd0aCk7CiAgICAgICAgICAgICBjdXJyZW50ID0gbmV3QmxvY2suZ2V0KCk7Ci0gICAg
ICAgICAgICBiYXNpY0Jsb2Nrcy5hcHBlbmQoV1RGTW92ZShuZXdCbG9jaykpOworICAgICAgICAg
ICAgYXBwZW5kQmxvY2soV1RGTW92ZShuZXdCbG9jaykpOwogICAgICAgICAgICAgY3JlYXRlZEJs
b2NrID0gdHJ1ZTsKICAgICAgICAgICAgIG5leHRJbnN0cnVjdGlvbklzTGVhZGVyID0gZmFsc2U7
CiAgICAgICAgICAgICBieXRlY29kZU9mZnNldCArPSBvcGNvZGVMZW5ndGg7CkBAIC0xNjksOCAr
MTc2LDcgQEAgdm9pZCBjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2NrcyhDb2RlQmxvY2sqIGNvZGVC
bG9jaywgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXQKIAogICAgICAgICBib29sIGZhbGxzVGhy
b3VnaCA9IHRydWU7IAogICAgICAgICBmb3IgKHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0ID0gYmxv
Y2stPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCk7IGJ5dGVjb2RlT2Zmc2V0IDwgYmxvY2stPmxlYWRl
ckJ5dGVjb2RlT2Zmc2V0KCkgKyBibG9jay0+dG90YWxCeXRlY29kZUxlbmd0aCgpOykgewotICAg
ICAgICAgICAgY29uc3QgSW5zdHJ1Y3Rpb24mIGN1cnJlbnRJbnN0cnVjdGlvbiA9IGluc3RydWN0
aW9uc0JlZ2luW2J5dGVjb2RlT2Zmc2V0XTsKLSAgICAgICAgICAgIE9wY29kZUlEIG9wY29kZUlE
ID0gaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGN1cnJlbnRJbnN0cnVjdGlvbi51Lm9wY29kZSk7
CisgICAgICAgICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGludGVycHJldGVyLT5nZXRPcGNvZGVJ
RChpbnN0cnVjdGlvbnNCZWdpbltieXRlY29kZU9mZnNldF0pOwogICAgICAgICAgICAgdW5zaWdu
ZWQgb3Bjb2RlTGVuZ3RoID0gb3Bjb2RlTGVuZ3Roc1tvcGNvZGVJRF07CiAgICAgICAgICAgICAv
LyBJZiB3ZSBmb3VuZCBhIHRlcm1pbmFsIGJ5dGVjb2RlLCBsaW5rIHRvIHRoZSBleGl0IGJsb2Nr
LgogICAgICAgICAgICAgaWYgKGlzVGVybWluYWwob3Bjb2RlSUQpKSB7CkBAIC0xODUsNyArMTkx
LDcgQEAgdm9pZCBjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2NrcyhDb2RlQmxvY2sqIGNvZGVCbG9j
aywgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXQKICAgICAgICAgICAgIC8vIGJsb2NrIGJlY2F1
c2UgdGhlIGZpbmFsbHkgYmxvY2sgd2lsbCBjcmVhdGUgaXRzIG93biBjYXRjaCwgd2hpY2ggd2ls
bCBnZW5lcmF0ZSBhIEhhbmRsZXJJbmZvLgogICAgICAgICAgICAgaWYgKGlzVGhyb3cob3Bjb2Rl
SUQpKSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKGJ5dGVjb2RlT2Zmc2V0ICsgb3Bjb2RlTGVu
Z3RoID09IGJsb2NrLT5sZWFkZXJCeXRlY29kZU9mZnNldCgpICsgYmxvY2stPnRvdGFsQnl0ZWNv
ZGVMZW5ndGgoKSk7Ci0gICAgICAgICAgICAgICAgSGFuZGxlckluZm8qIGhhbmRsZXIgPSBjb2Rl
QmxvY2stPmhhbmRsZXJGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCk7CisgICAgICAg
ICAgICAgICAgYXV0byogaGFuZGxlciA9IGNvZGVCbG9jay0+aGFuZGxlckZvckJ5dGVjb2RlT2Zm
c2V0KGJ5dGVjb2RlT2Zmc2V0KTsKICAgICAgICAgICAgICAgICBmYWxsc1Rocm91Z2ggPSBmYWxz
ZTsKICAgICAgICAgICAgICAgICBpZiAoIWhhbmRsZXIpIHsKICAgICAgICAgICAgICAgICAgICAg
bGlua0Jsb2NrcyhibG9jaywgZXhpdC5nZXQoKSk7CkBAIC0yMDUsNyArMjExLDcgQEAgdm9pZCBj
b21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2NrcyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgVmVjdG9yPHN0
ZDo6dW5pcXVlX3B0cjxCeXQKICAgICAgICAgICAgIGlmIChpc0JyYW5jaChvcGNvZGVJRCkpIHsK
ICAgICAgICAgICAgICAgICBBU1NFUlQoYnl0ZWNvZGVPZmZzZXQgKyBvcGNvZGVMZW5ndGggPT0g
YmxvY2stPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCkgKyBibG9jay0+dG90YWxCeXRlY29kZUxlbmd0
aCgpKTsKICAgICAgICAgICAgICAgICBWZWN0b3I8dW5zaWduZWQsIDE+IGJ5dGVjb2RlT2Zmc2V0
c0p1bXBlZFRvOwotICAgICAgICAgICAgICAgIGZpbmRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zm
c2V0KGNvZGVCbG9jaywgYnl0ZWNvZGVPZmZzZXQsIGJ5dGVjb2RlT2Zmc2V0c0p1bXBlZFRvKTsK
KyAgICAgICAgICAgICAgICBmaW5kSnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChjb2RlQmxv
Y2ssIGluc3RydWN0aW9uc0JlZ2luLCBieXRlY29kZU9mZnNldCwgYnl0ZWNvZGVPZmZzZXRzSnVt
cGVkVG8pOwogCiAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGJhc2lj
QmxvY2tzLnNpemUoKTsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgIEJ5dGVjb2RlQmFzaWNC
bG9jayogb3RoZXJCbG9jayA9IGJhc2ljQmxvY2tzW2ldLmdldCgpOwpAQCAtMjI5LDEwICsyMzUs
MjAgQEAgdm9pZCBjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2NrcyhDb2RlQmxvY2sqIGNvZGVCbG9j
aywgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXQKICAgICAgICAgfQogICAgIH0KIAotICAgIGJh
c2ljQmxvY2tzLmFwcGVuZChXVEZNb3ZlKGV4aXQpKTsKKyAgICBhcHBlbmRCbG9jayhXVEZNb3Zl
KGV4aXQpKTsKICAgICAKICAgICBmb3IgKGF1dG8mIGJhc2ljQmxvY2sgOiBiYXNpY0Jsb2NrcykK
ICAgICAgICAgYmFzaWNCbG9jay0+c2hyaW5rVG9GaXQoKTsKIH0KIAordm9pZCBCeXRlY29kZUJh
c2ljQmxvY2s6OmNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzKENvZGVCbG9jayogY29kZUJsb2Nr
LCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGluc3RydWN0aW9uQ291
bnQsIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mIGJhc2ljQmxv
Y2tzKQoreworICAgIGNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzSW50ZXJuYWwoY29kZUJsb2Nr
LCBpbnN0cnVjdGlvbnNCZWdpbiwgaW5zdHJ1Y3Rpb25Db3VudCwgYmFzaWNCbG9ja3MpOworfQor
Cit2b2lkIEJ5dGVjb2RlQmFzaWNCbG9jazo6Y29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MoVW5s
aW5rZWRDb2RlQmxvY2sqIGNvZGVCbG9jaywgVW5saW5rZWRJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rp
b25zQmVnaW4sIHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQsIFZlY3RvcjxzdGQ6OnVuaXF1ZV9w
dHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mIGJhc2ljQmxvY2tzKQoreworICAgIEJ5dGVjb2RlQmFz
aWNCbG9jazo6Y29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3NJbnRlcm5hbChjb2RlQmxvY2ssIGlu
c3RydWN0aW9uc0JlZ2luLCBpbnN0cnVjdGlvbkNvdW50LCBiYXNpY0Jsb2Nrcyk7Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlQmFzaWNCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlQmFzaWNCbG9jay5oCmluZGV4IGJkN2QzYWU5YmEzNDNlMWIwNzE3OWU5OGYxZWU4
OWRhNjViYTdlMjAuLjZhZGZhMmZmNmNlYjQ3NDdmODc4N2U3MThmZjI3NmE3ZGU3YTFmODIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxv
Y2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Js
b2NrLmgKQEAgLTM1LDYgKzM1LDkgQEAKIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBDb2RlQmxv
Y2s7CitjbGFzcyBVbmxpbmtlZENvZGVCbG9jazsKK3N0cnVjdCBJbnN0cnVjdGlvbjsKK3N0cnVj
dCBVbmxpbmtlZEluc3RydWN0aW9uOwogCiBjbGFzcyBCeXRlY29kZUJhc2ljQmxvY2sgewogICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtNTYsMjIgKzU5LDMzIEBAIGNsYXNzIEJ5dGVj
b2RlQmFzaWNCbG9jayB7CiAgICAgVmVjdG9yPEJ5dGVjb2RlQmFzaWNCbG9jayo+JiBzdWNjZXNz
b3JzKCkgeyByZXR1cm4gbV9zdWNjZXNzb3JzOyB9CiAgICAgdm9pZCBhZGRTdWNjZXNzb3IoQnl0
ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaykgeyBtX3N1Y2Nlc3NvcnMuYXBwZW5kKGJsb2NrKTsgfQog
CisgICAgVmVjdG9yPEJ5dGVjb2RlQmFzaWNCbG9jayo+JiBwcmVkZWNlc3NvcnMoKSB7IHJldHVy
biBtX3ByZWRlY2Vzc29yczsgfQorICAgIHZvaWQgYWRkUHJlZGVjZXNzb3IoQnl0ZWNvZGVCYXNp
Y0Jsb2NrKiBibG9jaykgeyBtX3ByZWRlY2Vzc29ycy5hcHBlbmQoYmxvY2spOyB9CisKICAgICBG
YXN0Qml0VmVjdG9yJiBpbigpIHsgcmV0dXJuIG1faW47IH0KICAgICBGYXN0Qml0VmVjdG9yJiBv
dXQoKSB7IHJldHVybiBtX291dDsgfQogCisgICAgdW5zaWduZWQgaW5kZXgoKSBjb25zdCB7IHJl
dHVybiBtX2luZGV4OyB9CisKKyAgICBzdGF0aWMgdm9pZCBjb21wdXRlQnl0ZWNvZGVCYXNpY0Js
b2NrcyhDb2RlQmxvY2sqLCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVk
IGluc3RydWN0aW9uQ291bnQsIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Js
b2NrPj4mKTsKKyAgICBzdGF0aWMgdm9pZCBjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2NrcyhVbmxp
bmtlZENvZGVCbG9jayosIFVubGlua2VkSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1
bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50LCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2Rl
QmFzaWNCbG9jaz4+Jik7CisKIHByaXZhdGU6CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQmxvY2ss
IHR5cGVuYW1lIEluc3RydWN0aW9uPiBzdGF0aWMgdm9pZCBjb21wdXRlQnl0ZWNvZGVCYXNpY0Js
b2Nrc0ludGVybmFsKEJsb2NrKiBjb2RlQmxvY2ssIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNC
ZWdpbiwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCwgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxC
eXRlY29kZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9ja3MpOworCisKICAgICB1bnNpZ25lZCBtX2xl
YWRlckJ5dGVjb2RlT2Zmc2V0OwogICAgIHVuc2lnbmVkIG1fdG90YWxCeXRlY29kZUxlbmd0aDsK
KyAgICB1bnNpZ25lZCBtX2luZGV4OwogCiAgICAgVmVjdG9yPHVuc2lnbmVkPiBtX2J5dGVjb2Rl
T2Zmc2V0czsKICAgICBWZWN0b3I8Qnl0ZWNvZGVCYXNpY0Jsb2NrKj4gbV9zdWNjZXNzb3JzOwor
ICAgIFZlY3RvcjxCeXRlY29kZUJhc2ljQmxvY2sqPiBtX3ByZWRlY2Vzc29yczsKIAogICAgIEZh
c3RCaXRWZWN0b3IgbV9pbjsKICAgICBGYXN0Qml0VmVjdG9yIG1fb3V0OwogfTsKIAotdm9pZCBj
b21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2NrcyhDb2RlQmxvY2sqLCBWZWN0b3I8c3RkOjp1bmlxdWVf
cHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+Jik7Ci0KIGlubGluZSBCeXRlY29kZUJhc2ljQmxvY2s6
OkJ5dGVjb2RlQmFzaWNCbG9jayh1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgbGVuZ3RoKQogICAg
IDogbV9sZWFkZXJCeXRlY29kZU9mZnNldChzdGFydCkKICAgICAsIG1fdG90YWxCeXRlY29kZUxl
bmd0aChsZW5ndGgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Qnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZTkyZmFk
N2M4Y2UzNDQxMzI5Y2IwNjE1YjEzZDQ4NGZkODRiODlhCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNw
cApAQCAtMCwwICsxLDQ5NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBZdXN1a2UgU3V6
dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5oIgorCisjaW5jbHVkZSAi
Qnl0ZWNvZGVJbnNlcnRpb25TZXQuaCIKKyNpbmNsdWRlICJCeXRlY29kZVVzZURlZi5oIgorI2lu
Y2x1ZGUgIklkZW50aWZpZXJJbmxpbmVzLmgiCisjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKKyNp
bmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgorI2luY2x1ZGUgIlN0cm9uZ0lubGluZXMuaCIK
KyNpbmNsdWRlICJVbmxpbmtlZENvZGVCbG9jay5oIgorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5o
PgorCituYW1lc3BhY2UgSlNDIHsKKworc3RhdGljIGJvb2wgaXNWYWxpZFJlZ2lzdGVyRm9yTGl2
ZW5lc3MoaW50IG9wZXJhbmQpCit7CisgICAgVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWcob3Bl
cmFuZCk7CisgICAgaWYgKHZpcnR1YWxSZWcuaXNDb25zdGFudCgpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgcmV0dXJuIHZpcnR1YWxSZWcuaXNMb2NhbCgpOworfQorCitjbGFzcyBCeXRl
Y29kZUdlbmVyYXRvcmlmaWNhdGlvbiB7CitwdWJsaWM6CisgICAgQnl0ZWNvZGVHZW5lcmF0b3Jp
ZmljYXRpb24oVW5saW5rZWRDb2RlQmxvY2sqIGNvZGVCbG9jaywgVW5saW5rZWRDb2RlQmxvY2s6
OlVucGFja2VkSW5zdHJ1Y3Rpb25zJiBpbnN0cnVjdGlvbnMsIFN5bWJvbFRhYmxlKiBnZW5lcmF0
b3JGcmFtZVN5bWJvbFRhYmxlLCBpbnQgZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZUluZGV4KQor
ICAgICAgICA6IG1fZ3JhcGgoY29kZUJsb2NrLCBpbnN0cnVjdGlvbnMpCisgICAgICAgICwgbV9p
bnNlcnRpb25TZXQobV9ncmFwaCkKKyAgICAgICAgLCBtX2dlbmVyYXRvckZyYW1lU3ltYm9sVGFi
bGUoKmNvZGVCbG9jay0+dm0oKSwgZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZSkKKyAgICAgICAg
LCBtX2dlbmVyYXRvckZyYW1lU3ltYm9sVGFibGVJbmRleChnZW5lcmF0b3JGcmFtZVN5bWJvbFRh
YmxlSW5kZXgpCisgICAgeworICAgIH0KKworICAgIHN0cnVjdCBTdG9yYWdlIHsKKyAgICAgICAg
SWRlbnRpZmllciBpZGVudGlmaWVyOworICAgICAgICB1bnNpZ25lZCBpZGVudGlmaWVySW5kZXg7
CisgICAgICAgIFNjb3BlT2Zmc2V0IHNjb3BlT2Zmc2V0OworICAgIH07CisKKyAgICBTdG9yYWdl
IHN0b3JhZ2VGb3JHZW5lcmF0b3JMb2NhbCh1bnNpZ25lZCBpbmRleCkKKyAgICB7CisgICAgICAg
IC8vIEZJWE1FOiBTdXBlciBuYWl2ZSBpbXBsZW1lbnRhdGlvbi4gV2Ugc2hvdWxkIHJlY29uc2lk
ZXIgdGhlIGluZGV4ZWQgZ2VuZXJhdG9yIGxvY2FscyBpbiB0aGUgc2NvcGUuCisgICAgICAgIGlm
IChtX3N0b3JhZ2VzLnNpemUoKSA8PSBpbmRleCkKKyAgICAgICAgICAgIG1fc3RvcmFnZXMucmVz
aXplKGluZGV4ICsgMSk7CisgICAgICAgIGlmIChPcHRpb25hbDxTdG9yYWdlPiBzdG9yYWdlID0g
bV9zdG9yYWdlc1tpbmRleF0pCisgICAgICAgICAgICByZXR1cm4gKnN0b3JhZ2U7CisKKyAgICAg
ICAgVW5saW5rZWRDb2RlQmxvY2sqIGNvZGVCbG9jayA9IG1fZ3JhcGguY29kZUJsb2NrKCk7Cisg
ICAgICAgIElkZW50aWZpZXIgaWRlbnRpZmllciA9IElkZW50aWZpZXI6OmZyb21VaWQoUHJpdmF0
ZU5hbWUoKSk7CisgICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXJJbmRleCA9IGNvZGVCbG9jay0+
bnVtYmVyT2ZJZGVudGlmaWVycygpOworICAgICAgICBjb2RlQmxvY2stPmFkZElkZW50aWZpZXIo
aWRlbnRpZmllcik7CisgICAgICAgIFNjb3BlT2Zmc2V0IHNjb3BlT2Zmc2V0ID0gbV9nZW5lcmF0
b3JGcmFtZVN5bWJvbFRhYmxlLT50YWtlTmV4dFNjb3BlT2Zmc2V0KE5vTG9ja2luZ05lY2Vzc2Fy
eSk7CisgICAgICAgIG1fZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZS0+c2V0KE5vTG9ja2luZ05l
Y2Vzc2FyeSwgaWRlbnRpZmllci5pbXBsKCksIFN5bWJvbFRhYmxlRW50cnkoVmFyT2Zmc2V0KHNj
b3BlT2Zmc2V0KSkpOworCisgICAgICAgIFN0b3JhZ2Ugc3RvcmFnZSA9IHsKKyAgICAgICAgICAg
IGlkZW50aWZpZXIsCisgICAgICAgICAgICBpZGVudGlmaWVySW5kZXgsCisgICAgICAgICAgICBz
Y29wZU9mZnNldAorICAgICAgICB9OworICAgICAgICBtX3N0b3JhZ2VzW2luZGV4XSA9IHN0b3Jh
Z2U7CisgICAgICAgIHJldHVybiBzdG9yYWdlOworICAgIH0KKworICAgIHN0cnVjdCBHZW5lcmF0
b3JQb2ludHMgeworICAgICAgICBzaXplX3Qgc2F2ZVBvaW50OworICAgICAgICBzaXplX3QgbWVy
Z2VQb2ludDsKKyAgICAgICAgc2l6ZV90IHJlc3VtZVBvaW50OworICAgICAgICBGYXN0Qml0VmVj
dG9yIGxpdmVuZXNzOworICAgICAgICBGYXN0Qml0VmVjdG9yIGNoYW5nZWQ7CisgICAgfTsKKwor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+CisgICAgdm9pZCBjb21wdXRlR2VuZXJhdG9y
RGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KFVubGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2ssIE9wY29k
ZUlEIG9wY29kZUlELCBVbmxpbmtlZEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgRmFzdEJpdFZl
Y3RvciYgb3V0LCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQorICAgIHsKKyAgICAgICAgY29tcHV0
ZURlZnNGb3JCeXRlY29kZU9mZnNldChjb2RlQmxvY2ssIG9wY29kZUlELCBpbnN0cnVjdGlvbiwg
ZnVuY3Rvcik7CisKKyAgICAgICAgc3dpdGNoIChvcGNvZGVJRCkgeworICAgICAgICBjYXNlIG9w
X3NhdmU6CisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgY2FzZSBvcF9yZXN1bWU6IHsK
KyAgICAgICAgICAgIG91dC5jbGVhckFsbCgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+CisgICAgdm9pZCBjb21wdXRl
R2VuZXJhdG9yVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KFVubGlua2VkQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssIE9wY29kZUlEIG9wY29kZUlELCBVbmxpbmtlZEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwg
RmFzdEJpdFZlY3RvciYsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCisgICAgeworICAgICAgICBj
b21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9jaywgb3Bjb2RlSUQsIGluc3RydWN0
aW9uLCBmdW5jdG9yKTsKKworICAgICAgICBzd2l0Y2ggKG9wY29kZUlEKSB7CisgICAgICAgIGNh
c2Ugb3Bfc2F2ZToKKyAgICAgICAgY2FzZSBvcF9yZXN1bWU6IHsKKyAgICAgICAgICAgIGZ1bmN0
b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzFdLnUub3Bl
cmFuZCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorCisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVXNlRnVuY3RvciwgdHlwZW5hbWUgRGVmRnVuY3Rvcj4KKyAgICB2b2lkIHN0ZXBP
dmVySW5zdHJ1Y3Rpb24oQnl0ZWNvZGVHcmFwaDxVbmxpbmtlZENvZGVCbG9jaz4mIGdyYXBoLCB1
bnNpZ25lZCBieXRlY29kZU9mZnNldCwgRmFzdEJpdFZlY3RvciYgb3V0LCBjb25zdCBVc2VGdW5j
dG9yJiB1c2UsIGNvbnN0IERlZkZ1bmN0b3ImIGRlZikKKyAgICB7CisgICAgICAgIGF1dG8mIGlu
c3RydWN0aW9ucyA9IGdyYXBoLmluc3RydWN0aW9ucygpOworICAgICAgICBVbmxpbmtlZEluc3Ry
dWN0aW9uKiBpbnN0cnVjdGlvbiA9ICZpbnN0cnVjdGlvbnNbYnl0ZWNvZGVPZmZzZXRdOworICAg
ICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGluc3RydWN0aW9uLT51Lm9wY29kZTsKKyAgICAgICAg
VW5saW5rZWRDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGdyYXBoLmNvZGVCbG9jaygpOworCisgICAg
ICAgIGNvbXB1dGVHZW5lcmF0b3JEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoCisgICAgICAgICAgICBj
b2RlQmxvY2ssIG9wY29kZUlELCBpbnN0cnVjdGlvbiwgb3V0LAorICAgICAgICAgICAgWyZdIChV
bmxpbmtlZENvZGVCbG9jayosIFVubGlua2VkSW5zdHJ1Y3Rpb24qLCBPcGNvZGVJRCwgaW50IG9w
ZXJhbmQpIHsKKyAgICAgICAgICAgICAgICBpZiAoaXNWYWxpZFJlZ2lzdGVyRm9yTGl2ZW5lc3Mo
b3BlcmFuZCkpCisgICAgICAgICAgICAgICAgICAgIGRlZihWaXJ0dWFsUmVnaXN0ZXIob3BlcmFu
ZCkudG9Mb2NhbCgpKTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgIGNvbXB1dGVHZW5lcmF0
b3JVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoCisgICAgICAgICAgICBjb2RlQmxvY2ssIG9wY29kZUlE
LCBpbnN0cnVjdGlvbiwgb3V0LAorICAgICAgICAgICAgWyZdIChVbmxpbmtlZENvZGVCbG9jayos
IFVubGlua2VkSW5zdHJ1Y3Rpb24qLCBPcGNvZGVJRCwgaW50IG9wZXJhbmQpIHsKKyAgICAgICAg
ICAgICAgICBpZiAoaXNWYWxpZFJlZ2lzdGVyRm9yTGl2ZW5lc3Mob3BlcmFuZCkpCisgICAgICAg
ICAgICAgICAgICAgIHVzZShWaXJ0dWFsUmVnaXN0ZXIob3BlcmFuZCkudG9Mb2NhbCgpKTsKKyAg
ICAgICAgICAgIH0pOworCisgICAgICAgIC8vIElmIHdlIGhhdmUgYW4gZXhjZXB0aW9uIGhhbmRs
ZXIsIHdlIHdhbnQgdGhlIGxpdmUtaW4gdmFyaWFibGVzIG9mIHRoZQorICAgICAgICAvLyBleGNl
cHRpb24gaGFuZGxlciBibG9jayB0byBiZSBpbmNsdWRlZCBpbiB0aGUgbGl2ZS1pbiBvZiB0aGlz
IHBhcnRpY3VsYXIgYnl0ZWNvZGUuCisgICAgICAgIGlmIChVbmxpbmtlZEhhbmRsZXJJbmZvKiBo
YW5kbGVyID0gY29kZUJsb2NrLT5oYW5kbGVyRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZz
ZXQpKSB7CisgICAgICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGhhbmRsZXJCbG9jayA9IGdy
YXBoLmZpbmRCYXNpY0Jsb2NrV2l0aExlYWRlck9mZnNldChoYW5kbGVyLT50YXJnZXQpOworICAg
ICAgICAgICAgQVNTRVJUKGhhbmRsZXJCbG9jayk7CisgICAgICAgICAgICBoYW5kbGVyQmxvY2st
PmluKCkuZm9yRWFjaFNldEJpdCh1c2UpOworICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCBj
b21wdXRlTG9jYWxMaXZlbmVzc0ZvckJ5dGVjb2RlT2Zmc2V0KEJ5dGVjb2RlR3JhcGg8VW5saW5r
ZWRDb2RlQmxvY2s+JiBncmFwaCwgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaywgdW5zaWduZWQg
dGFyZ2V0T2Zmc2V0LCBGYXN0Qml0VmVjdG9yJiByZXN1bHQpCisgICAgeworICAgICAgICBBU1NF
UlQoIWJsb2NrLT5pc0V4aXRCbG9jaygpKTsKKyAgICAgICAgQVNTRVJUKCFibG9jay0+aXNFbnRy
eUJsb2NrKCkpOworCisgICAgICAgIEZhc3RCaXRWZWN0b3Igb3V0ID0gYmxvY2stPm91dCgpOwor
CisgICAgICAgIGZvciAoaW50IGkgPSBibG9jay0+Ynl0ZWNvZGVPZmZzZXRzKCkuc2l6ZSgpIC0g
MTsgaSA+PSAwOyBpLS0pIHsKKyAgICAgICAgICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0ID0g
YmxvY2stPmJ5dGVjb2RlT2Zmc2V0cygpW2ldOworICAgICAgICAgICAgaWYgKHRhcmdldE9mZnNl
dCA+IGJ5dGVjb2RlT2Zmc2V0KQorICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAg
ICBzdGVwT3Zlckluc3RydWN0aW9uKAorICAgICAgICAgICAgICAgIGdyYXBoLCBieXRlY29kZU9m
ZnNldCwgb3V0LAorICAgICAgICAgICAgICAgIFsmXSAodW5zaWduZWQgYml0SW5kZXgpIHsKKyAg
ICAgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyB0aGUgdXNlIGZ1bmN0b3IsIHNvIHdlIHNldCB0
aGUgYml0LgorICAgICAgICAgICAgICAgICAgICBvdXQuc2V0KGJpdEluZGV4KTsKKyAgICAgICAg
ICAgICAgICB9LAorICAgICAgICAgICAgICAgIFsmXSAodW5zaWduZWQgYml0SW5kZXgpIHsKKyAg
ICAgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyB0aGUgZGVmIGZ1bmN0b3IsIHNvIHdlIGNsZWFy
IHRoZSBiaXQuCisgICAgICAgICAgICAgICAgICAgIG91dC5jbGVhcihiaXRJbmRleCk7CisgICAg
ICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKworICAgICAgICByZXN1bHQuc2V0KG91dCk7Cisg
ICAgfQorCisgICAgdm9pZCBjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJsb2NrKEJ5dGVjb2RlR3Jh
cGg8VW5saW5rZWRDb2RlQmxvY2s+JiBncmFwaCwgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaykK
KyAgICB7CisgICAgICAgIGlmIChibG9jay0+aXNFeGl0QmxvY2soKSB8fCBibG9jay0+aXNFbnRy
eUJsb2NrKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGNvbXB1dGVMb2NhbExpdmVu
ZXNzRm9yQnl0ZWNvZGVPZmZzZXQoZ3JhcGgsIGJsb2NrLCBibG9jay0+bGVhZGVyQnl0ZWNvZGVP
ZmZzZXQoKSwgYmxvY2stPmluKCkpOworICAgIH0KKworICAgIEZhc3RCaXRWZWN0b3IgZ2V0TGl2
ZW5lc3NJbmZvQXRCeXRlY29kZU9mZnNldCh1bnNpZ25lZCBieXRlY29kZU9mZnNldCkKKyAgICB7
CisgICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2sgPSBtX2dyYXBoLmZpbmRCYXNpY0Js
b2NrRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpOworICAgICAgICBBU1NFUlQoYmxv
Y2spOworICAgICAgICBBU1NFUlQoIWJsb2NrLT5pc0VudHJ5QmxvY2soKSk7CisgICAgICAgIEFT
U0VSVCghYmxvY2stPmlzRXhpdEJsb2NrKCkpOworICAgICAgICBGYXN0Qml0VmVjdG9yIG91dDsK
KyAgICAgICAgb3V0LnJlc2l6ZShibG9jay0+b3V0KCkubnVtQml0cygpKTsKKyAgICAgICAgY29t
cHV0ZUxvY2FsTGl2ZW5lc3NGb3JCeXRlY29kZU9mZnNldChtX2dyYXBoLCBibG9jaywgYnl0ZWNv
ZGVPZmZzZXQsIG91dCk7CisgICAgICAgIHJldHVybiBvdXQ7CisgICAgfQorCisgICAgdm9pZCBy
dW5HZW5lcmF0b3JWYXJpYWJsZUxpdmVuZXNzQW5hbHlzaXMoKQorICAgIHsKKyAgICAgICAgLy8g
UGVyZm9ybSBtb2RpZmllZCBsaXZlbmVzcyBhbmFseXNpcyB0byBkZXRlcm1pbmUgd2hpY2ggbG9j
YWxzIGFyZSBsaXZlIGFuZCBzaG91bGQgYmUgcmVzdW1lZCB3aGVuIGV4ZWN1dGluZyBvcF9yZXN1
bWUuCisKKyAgICAgICAgVW5saW5rZWRDb2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrID0gbV9n
cmFwaC5jb2RlQmxvY2soKTsKKyAgICAgICAgdW5zaWduZWQgbnVtYmVyT2ZWYXJpYWJsZXMgPSB1
bmxpbmtlZENvZGVCbG9jay0+bV9udW1DYWxsZWVMb2NhbHM7CisgICAgICAgIGZvciAoc3RkOjp1
bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4mIGJsb2NrIDogbV9ncmFwaC5iYXNpY0Jsb2Nr
cygpKSB7CisgICAgICAgICAgICBibG9jay0+aW4oKS5yZXNpemUobnVtYmVyT2ZWYXJpYWJsZXMp
OworICAgICAgICAgICAgYmxvY2stPm91dCgpLnJlc2l6ZShudW1iZXJPZlZhcmlhYmxlcyk7Cisg
ICAgICAgICAgICBibG9jay0+aW4oKS5jbGVhckFsbCgpOworICAgICAgICAgICAgYmxvY2stPm91
dCgpLmNsZWFyQWxsKCk7CisgICAgICAgIH0KKworICAgICAgICBib29sIGNoYW5nZWQ7CisgICAg
ICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogbGFzdEJsb2NrID0gbV9ncmFwaC5iYXNpY0Jsb2Nrcygp
Lmxhc3QoKS5nZXQoKTsKKyAgICAgICAgbGFzdEJsb2NrLT5pbigpLmNsZWFyQWxsKCk7CisgICAg
ICAgIGxhc3RCbG9jay0+b3V0KCkuY2xlYXJBbGwoKTsKKyAgICAgICAgRmFzdEJpdFZlY3RvciBu
ZXdPdXQ7CisgICAgICAgIG5ld091dC5yZXNpemUobGFzdEJsb2NrLT5vdXQoKS5udW1CaXRzKCkp
OworICAgICAgICBkbyB7CisgICAgICAgICAgICBjaGFuZ2VkID0gZmFsc2U7CisgICAgICAgICAg
ICBmb3IgKHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+JiBibG9jayA6IG1fZ3Jh
cGguYmFzaWNCbG9ja3NJblJldmVyc2VPcmRlcigpKSB7CisgICAgICAgICAgICAgICAgbmV3T3V0
LmNsZWFyQWxsKCk7CisgICAgICAgICAgICAgICAgZm9yIChCeXRlY29kZUJhc2ljQmxvY2sqIHN1
Y2Nlc3NvciA6IGJsb2NrLT5zdWNjZXNzb3JzKCkpCisgICAgICAgICAgICAgICAgICAgIG5ld091
dC5tZXJnZShzdWNjZXNzb3ItPmluKCkpOworICAgICAgICAgICAgICAgIGJvb2wgb3V0RGlkQ2hh
bmdlID0gYmxvY2stPm91dCgpLnNldEFuZENoZWNrKG5ld091dCk7CisgICAgICAgICAgICAgICAg
Y29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCbG9jayhtX2dyYXBoLCBibG9jay5nZXQoKSk7CisgICAg
ICAgICAgICAgICAgY2hhbmdlZCB8PSBvdXREaWRDaGFuZ2U7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0gd2hpbGUgKGNoYW5nZWQpOworCisgICAgICAgIGZvciAoR2VuZXJhdG9yUG9pbnRzJiBw
b2ludHMgOiBtX3lpZWxkcykKKyAgICAgICAgICAgIHBvaW50cy5saXZlbmVzcyA9IGdldExpdmVu
ZXNzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQocG9pbnRzLm1lcmdlUG9pbnQpOworICAgIH0KKworICAg
IHRlbXBsYXRlPHR5cGVuYW1lIERlZkZ1bmN0b3I+CisgICAgdm9pZCBzdGVwT3Zlckluc3RydWN0
aW9uRm9yU2F2ZWRWYXJpYWJsZShCeXRlY29kZUdyYXBoPFVubGlua2VkQ29kZUJsb2NrPiYgZ3Jh
cGgsIEJ5dGVjb2RlQmFzaWNCbG9jayosIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBGYXN0Qml0
VmVjdG9yJiBpbiwgY29uc3QgRGVmRnVuY3RvciYgZGVmKQorICAgIHsKKyAgICAgICAgYXV0byYg
aW5zdHJ1Y3Rpb25zID0gZ3JhcGguaW5zdHJ1Y3Rpb25zKCk7CisgICAgICAgIFVubGlua2VkSW5z
dHJ1Y3Rpb24qIGluc3RydWN0aW9uID0gJmluc3RydWN0aW9uc1tieXRlY29kZU9mZnNldF07Cisg
ICAgICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW5zdHJ1Y3Rpb24tPnUub3Bjb2RlOworICAgICAg
ICBVbmxpbmtlZENvZGVCbG9jayogY29kZUJsb2NrID0gZ3JhcGguY29kZUJsb2NrKCk7CisKKyAg
ICAgICAgLy8gR2VuZXJhdG9yIGRlZnMgZm9yIHRoZSByZXN1bWUgYmxvY2tzIHNob3VsZCBiZSBj
b25zaWRlcmVkIG51bGwuCisgICAgICAgIC8vIFdoaWxlIHdlIGNsZWFyIHRoZSBkZWZzIGluIHRo
ZSByZXN1bWUgYmxvY2ssIGNvdW50IHRoZSBkZWZzIGluIHRoZSBzYXZlIGJsb2NrIGZvciB0aGUg
ZXhjZXB0aW9uIGhhbmRsZXIgYmxvY2suCisgICAgICAgIGlmIChvcGNvZGVJRCA9PSBvcF9yZXN1
bWUpIHsKKyAgICAgICAgICAgIGluLmNsZWFyQWxsKCk7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKworICAgICAgICBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9j
aywgb3Bjb2RlSUQsIGluc3RydWN0aW9uLCBbJl0gKFVubGlua2VkQ29kZUJsb2NrKiwgVW5saW5r
ZWRJbnN0cnVjdGlvbiosIE9wY29kZUlELCBpbnQgb3BlcmFuZCkgeworICAgICAgICAgICAgaWYg
KGlzVmFsaWRSZWdpc3RlckZvckxpdmVuZXNzKG9wZXJhbmQpKQorICAgICAgICAgICAgICAgIGRl
ZihWaXJ0dWFsUmVnaXN0ZXIob3BlcmFuZCkudG9Mb2NhbCgpKTsKKyAgICAgICAgfSk7CisgICAg
fQorCisgICAgdm9pZCBjb21wdXRlTG9jYWxTYXZlZFZhcmlhYmxlRm9yQnl0ZWNvZGVPZmZzZXQo
Qnl0ZWNvZGVHcmFwaDxVbmxpbmtlZENvZGVCbG9jaz4mIGdyYXBoLCBCeXRlY29kZUJhc2ljQmxv
Y2sqIGJsb2NrLCB1bnNpZ25lZCB0YXJnZXRPZmZzZXQsIEZhc3RCaXRWZWN0b3ImIHJlc3VsdCkK
KyAgICB7CisgICAgICAgIEFTU0VSVCghYmxvY2stPmlzRXhpdEJsb2NrKCkpOworICAgICAgICBB
U1NFUlQoIWJsb2NrLT5pc0VudHJ5QmxvY2soKSk7CisKKyAgICAgICAgRmFzdEJpdFZlY3RvciBp
biA9IGJsb2NrLT5pbigpOworCisgICAgICAgIGZvciAodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQg
OiBibG9jay0+Ynl0ZWNvZGVPZmZzZXRzKCkpIHsKKyAgICAgICAgICAgIGlmICh0YXJnZXRPZmZz
ZXQgPD0gYnl0ZWNvZGVPZmZzZXQpCisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAg
ICAgIHN0ZXBPdmVySW5zdHJ1Y3Rpb25Gb3JTYXZlZFZhcmlhYmxlKAorICAgICAgICAgICAgICAg
IGdyYXBoLCBibG9jaywgYnl0ZWNvZGVPZmZzZXQsIGluLAorICAgICAgICAgICAgICAgIFsmXSAo
dW5zaWduZWQgYml0SW5kZXgpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyB0aGUg
ZGVmIGZ1bmN0b3IsIHNvIHdlIHNldCB0aGUgYml0LgorICAgICAgICAgICAgICAgICAgICBpbi5z
ZXQoYml0SW5kZXgpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICB9CisKKyAgICAgICAg
cmVzdWx0LnNldChpbik7CisgICAgfQorCisgICAgdm9pZCBjb21wdXRlTG9jYWxTYXZlZFZhcmlh
YmxlRm9yQmxvY2soQnl0ZWNvZGVHcmFwaDxVbmxpbmtlZENvZGVCbG9jaz4mIGdyYXBoLCBCeXRl
Y29kZUJhc2ljQmxvY2sqIGJsb2NrKQorICAgIHsKKyAgICAgICAgaWYgKGJsb2NrLT5pc0V4aXRC
bG9jaygpIHx8IGJsb2NrLT5pc0VudHJ5QmxvY2soKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgY29tcHV0ZUxvY2FsU2F2ZWRWYXJpYWJsZUZvckJ5dGVjb2RlT2Zmc2V0KGdyYXBoLCBi
bG9jaywgYmxvY2stPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCkgKyBibG9jay0+dG90YWxCeXRlY29k
ZUxlbmd0aCgpLCBibG9jay0+b3V0KCkpOworICAgIH0KKworICAgIEZhc3RCaXRWZWN0b3IgZ2V0
U2F2ZWRWYXJpYWJsZUluZm9BdEJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0
KQorICAgIHsKKyAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jayA9IG1fZ3JhcGguZmlu
ZEJhc2ljQmxvY2tGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCk7CisgICAgICAgIEFT
U0VSVChibG9jayk7CisgICAgICAgIEFTU0VSVCghYmxvY2stPmlzRW50cnlCbG9jaygpKTsKKyAg
ICAgICAgQVNTRVJUKCFibG9jay0+aXNFeGl0QmxvY2soKSk7CisgICAgICAgIEZhc3RCaXRWZWN0
b3IgaW47CisgICAgICAgIGluLnJlc2l6ZShibG9jay0+aW4oKS5udW1CaXRzKCkpOworICAgICAg
ICBjb21wdXRlTG9jYWxTYXZlZFZhcmlhYmxlRm9yQnl0ZWNvZGVPZmZzZXQobV9ncmFwaCwgYmxv
Y2ssIGJ5dGVjb2RlT2Zmc2V0LCBpbik7CisgICAgICAgIHJldHVybiBpbjsKKyAgICB9CisKKyAg
ICB2b2lkIHJ1blNhdmVkVmFyaWFibGVBbmFseXNpcygpCisgICAgeworICAgICAgICAvLyBJbiBw
cmluY2lwbGUsIGlmIHdlIHNhdmUgYWxsIHRoZSB2YXJpYWJsZSB0aGF0IHdpbGwgYmUgcmVzdW1l
ZCwgaXQncyBPSy4KKyAgICAgICAgLy8gQnV0IHdlIGNhbiBhdm9pZCBzb21lIHNhdmVkIHZhcmlh
YmxlcyB0aGF0IGFyZSBvbmx5IGRlZmluZWQgYnkgdGhlIHByZXZpb3VzIG9wX3Jlc3VtZS4KKyAg
ICAgICAgLy8KKyAgICAgICAgLy8gSW4gdGhpcyBwaGFzZSwgd2UgcGVyZm9ybSBmb3J3YXJkIGFu
YWx5c2lzIHRvIGV4dHJhY3Qgd2hpY2ggdmFyaWFibGVzIG5lZWQgdG8gYmUgbmV3bHkgc2F2ZWQg
d2hlbiBleGVjdXRpbmcgb3Bfc2F2ZS4KKyAgICAgICAgLy8gV2UgcHJvcGFnYXRlIGRlZnMgdGhh
dCBhcmUgbm90IGlzc3VlZCBmcm9tIG9wX3Jlc3VtZS4KKyAgICAgICAgLy8KKyAgICAgICAgLy8g
ICBvcF9yZXN1bWUsIGRlZmluZSByMQorICAgICAgICAvLyAgIC4uLgorICAgICAgICAvLyAgIC4u
LgorICAgICAgICAvLyAgIG5vLWp1bXBzICYgbm8gcjEgZGVmcy4KKyAgICAgICAgLy8gICAuLi4K
KyAgICAgICAgLy8gICBvcF9zYXZlICAjIEhlcmUsIGl0IGlzIG5vdCBuZWNlc3NhcnkgdG8gc2F2
ZSByMS4KKworICAgICAgICBVbmxpbmtlZENvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2sgPSBt
X2dyYXBoLmNvZGVCbG9jaygpOworCisgICAgICAgIC8vIFdlIGNvbnNpZGVyIHRoZSByYW5nZSBv
ZiB0aGUgdHJ5IHN0YXRlbWVudCBhcyB0aGUgcG9zc2libGUgcHJlZGVjZXNzb3JzIGZvciB0aGUg
Z2l2ZW4gZXhjZXB0aW9uIGhhbmRsZXIuCisgICAgICAgIFZlY3RvcjxPcHRpb25hbDxGYXN0Qml0
VmVjdG9yPj4gcG9zc2libGVQcmVkZWNlc3NvcnNGb3JIYW5kbGVyczsKKyAgICAgICAgcG9zc2li
bGVQcmVkZWNlc3NvcnNGb3JIYW5kbGVycy5yZXNpemUobV9ncmFwaC5iYXNpY0Jsb2NrcygpLnNp
emUoKSk7CisgICAgICAgIHsKKyAgICAgICAgICAgIGF1dG8mIGluc3RydWN0aW9ucyA9IG1fZ3Jh
cGguaW5zdHJ1Y3Rpb25zKCk7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
dW5saW5rZWRDb2RlQmxvY2stPm51bWJlck9mRXhjZXB0aW9uSGFuZGxlcnMoKTsgKytpKSB7Cisg
ICAgICAgICAgICAgICAgYXV0byYgaGFuZGxlciA9IHVubGlua2VkQ29kZUJsb2NrLT5leGNlcHRp
b25IYW5kbGVyKGkpOworCisgICAgICAgICAgICAgICAgRmFzdEJpdFZlY3RvciBwcmVkZWNlc3Nv
cnM7CisgICAgICAgICAgICAgICAgcHJlZGVjZXNzb3JzLnJlc2l6ZShtX2dyYXBoLmJhc2ljQmxv
Y2tzKCkuc2l6ZSgpKTsKKyAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGJ5dGVjb2RlT2Zm
c2V0ID0gaGFuZGxlci5zdGFydDsgYnl0ZWNvZGVPZmZzZXQgPCBoYW5kbGVyLmVuZDspIHsKKyAg
ICAgICAgICAgICAgICAgICAgVW5saW5rZWRJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSAmaW5z
dHJ1Y3Rpb25zW2J5dGVjb2RlT2Zmc2V0XTsKKyAgICAgICAgICAgICAgICAgICAgT3Bjb2RlSUQg
b3Bjb2RlSUQgPSBpbnN0cnVjdGlvbi0+dS5vcGNvZGU7CisgICAgICAgICAgICAgICAgICAgIHVu
c2lnbmVkIG9wY29kZUxlbmd0aCA9IG9wY29kZUxlbmd0aHNbb3Bjb2RlSURdOworCisgICAgICAg
ICAgICAgICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogcG9zc2libGVQcmVkZWNlc3NvciA9IG1f
Z3JhcGguZmluZEJhc2ljQmxvY2tGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCk7Cisg
ICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHBvc3NpYmxlUHJlZGVjZXNzb3IpOwor
ICAgICAgICAgICAgICAgICAgICBwcmVkZWNlc3NvcnMuc2V0KHBvc3NpYmxlUHJlZGVjZXNzb3It
PmluZGV4KCkpOworCisgICAgICAgICAgICAgICAgICAgIGJ5dGVjb2RlT2Zmc2V0ICs9IG9wY29k
ZUxlbmd0aDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgQnl0ZWNvZGVCYXNp
Y0Jsb2NrKiBoYW5kbGVyQmxvY2sgPSBtX2dyYXBoLmZpbmRCYXNpY0Jsb2NrV2l0aExlYWRlck9m
ZnNldChoYW5kbGVyLnRhcmdldCk7CisgICAgICAgICAgICAgICAgcG9zc2libGVQcmVkZWNlc3Nv
cnNGb3JIYW5kbGVyc1toYW5kbGVyQmxvY2stPmluZGV4KCldID0gV1RGTW92ZShwcmVkZWNlc3Nv
cnMpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgdW5zaWduZWQgbnVtYmVy
T2ZWYXJpYWJsZXMgPSB1bmxpbmtlZENvZGVCbG9jay0+bV9udW1DYWxsZWVMb2NhbHM7CisgICAg
ICAgIGZvciAoc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4mIGJsb2NrIDogbV9n
cmFwaC5iYXNpY0Jsb2NrcygpKSB7CisgICAgICAgICAgICBibG9jay0+aW4oKS5yZXNpemUobnVt
YmVyT2ZWYXJpYWJsZXMpOworICAgICAgICAgICAgYmxvY2stPm91dCgpLnJlc2l6ZShudW1iZXJP
ZlZhcmlhYmxlcyk7CisgICAgICAgICAgICBibG9jay0+aW4oKS5jbGVhckFsbCgpOworICAgICAg
ICAgICAgYmxvY2stPm91dCgpLmNsZWFyQWxsKCk7CisgICAgICAgIH0KKworICAgICAgICBib29s
IGNoYW5nZWQ7CisgICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogZmlyc3RCbG9jayA9IG1fZ3Jh
cGguYmFzaWNCbG9ja3MoKS5maXJzdCgpLmdldCgpOworICAgICAgICBGYXN0Qml0VmVjdG9yIG5l
d0luOworICAgICAgICBuZXdJbi5yZXNpemUoZmlyc3RCbG9jay0+aW4oKS5udW1CaXRzKCkpOwor
ICAgICAgICBkbyB7CisgICAgICAgICAgICBjaGFuZ2VkID0gZmFsc2U7CisgICAgICAgICAgICBm
b3IgKHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+JiBibG9jayA6IG1fZ3JhcGgu
YmFzaWNCbG9ja3MoKSkgeworICAgICAgICAgICAgICAgIG5ld0luLmNsZWFyQWxsKCk7CisgICAg
ICAgICAgICAgICAgYm9vbCBtZXJnZUJsb2NrID0gbV9tZXJnZUJsb2Nrcy5nZXQoYmxvY2stPmlu
ZGV4KCkpOworICAgICAgICAgICAgICAgIGZvciAoQnl0ZWNvZGVCYXNpY0Jsb2NrKiBwcmVkZWNl
c3NvciA6IGJsb2NrLT5wcmVkZWNlc3NvcnMoKSkgeworICAgICAgICAgICAgICAgICAgICAvLyBN
ZXJnZSB0aGUgb3V0IHNldCBvZiB0aGUgaW5jb21taW5nIHByZWRlY2Vzc29ycyB1bmxlc3MgdGhl
IGN1cnJlbnQgYmxvY2sgaXMgdGhlIG1lcmdlIGJsb2NrIGFuZCB0aGUgcHJlZGVjZXNzb3IgaXMg
dGhlIHNhdmUgYmxvY2suCisgICAgICAgICAgICAgICAgICAgIC8vIFdlIHdvdWxkIGxpa2UgdG8g
cmVjb3JkIHRoZSBvdXQgc2V0IG9mIHRoZSBzYXZlIGJsb2NrIHNpbmNlIHRoaXMgb3V0IHNldCB3
b3VsZCBiZSBsYXRlciB1c2VkIGFzIHRoZSBkZWZzIGZvciB0aGUgZXhjZXB0aW9uIGhhbmRsZXJz
LgorICAgICAgICAgICAgICAgICAgICAvLyBCdXQgd2UgZG9uJ3Qgd2FudCB0byBtZXJnZSB0aGUg
ZGVmcyBmcm9tIHRoZSBzYXZlIGJsb2NrIGF0IHRoZSBtZXJnZSBibG9jaywgc2luY2UgdGhlc2Ug
ZGVmcyBzaG91bGQgYmUgc2F2ZWQgaW4gdGhlIHNhdmUgYmxvY2sgYW5kCisgICAgICAgICAgICAg
ICAgICAgIC8vIG5vdCByZWxhdGVkIHRvIHRoZSBtZXJnZSBibG9jay4KKyAgICAgICAgICAgICAg
ICAgICAgaWYgKCEobWVyZ2VCbG9jayAmJiBtX3NhdmVCbG9ja3MuZ2V0KHByZWRlY2Vzc29yLT5p
bmRleCgpKSkpCisgICAgICAgICAgICAgICAgICAgICAgICBuZXdJbi5tZXJnZShwcmVkZWNlc3Nv
ci0+b3V0KCkpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmIChhdXRv
JiBvcHRpb25hbFByZWRlY2Vzc29yU2V0ID0gcG9zc2libGVQcmVkZWNlc3NvcnNGb3JIYW5kbGVy
c1tibG9jay0+aW5kZXgoKV0pIHsKKyAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWxQcmVkZWNl
c3NvclNldC0+Zm9yRWFjaFNldEJpdChbJl0gKHVuc2lnbmVkIGJsb2NrSW5kZXgpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIG5ld0luLm1lcmdlKG1fZ3JhcGguYmFzaWNCbG9ja3MoKVtibG9j
a0luZGV4XS0+b3V0KCkpOworICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgICAgICBib29sIGluRGlkQ2hhbmdlID0gYmxvY2stPmluKCkuc2V0
QW5kQ2hlY2sobmV3SW4pOworICAgICAgICAgICAgICAgIGNvbXB1dGVMb2NhbFNhdmVkVmFyaWFi
bGVGb3JCbG9jayhtX2dyYXBoLCBibG9jay5nZXQoKSk7CisgICAgICAgICAgICAgICAgY2hhbmdl
ZCB8PSBpbkRpZENoYW5nZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSB3aGlsZSAoY2hhbmdl
ZCk7CisKKyAgICAgICAgZm9yIChHZW5lcmF0b3JQb2ludHMmIHBvaW50cyA6IG1feWllbGRzKSB7
CisgICAgICAgICAgICBwb2ludHMuY2hhbmdlZCA9IHBvaW50cy5saXZlbmVzczsKKyAgICAgICAg
ICAgIHBvaW50cy5jaGFuZ2VkLmZpbHRlcihnZXRTYXZlZFZhcmlhYmxlSW5mb0F0Qnl0ZWNvZGVP
ZmZzZXQocG9pbnRzLnNhdmVQb2ludCkpOworICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCBy
dW4oKQorICAgIHsKKyAgICAgICAgbV9tZXJnZUJsb2Nrcy5yZXNpemUobV9ncmFwaC5iYXNpY0Js
b2NrcygpLnNpemUoKSk7CisgICAgICAgIG1fc2F2ZUJsb2Nrcy5yZXNpemUobV9ncmFwaC5iYXNp
Y0Jsb2NrcygpLnNpemUoKSk7CisKKyAgICAgICAgZm9yIChzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNv
ZGVCYXNpY0Jsb2NrPiYgYmxvY2sgOiBtX2dyYXBoLmJhc2ljQmxvY2tzKCkpIHsKKyAgICAgICAg
ICAgIGZvciAodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQgOiBibG9jay0+Ynl0ZWNvZGVPZmZzZXRz
KCkpIHsKKyAgICAgICAgICAgICAgICBjb25zdCBVbmxpbmtlZEluc3RydWN0aW9uKiBwYyA9ICZt
X2dyYXBoLmluc3RydWN0aW9ucygpW2J5dGVjb2RlT2Zmc2V0XTsKKyAgICAgICAgICAgICAgICBz
d2l0Y2ggKHBjLT51Lm9wY29kZSkgeworICAgICAgICAgICAgICAgIGNhc2Ugb3Bfc2F2ZTogewor
ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSBwY1sy
XS51LmluZGV4OworICAgICAgICAgICAgICAgICAgICBpbnQgb2Zmc2V0ID0gcGNbM10udS5vcGVy
YW5kOworICAgICAgICAgICAgICAgICAgICBpZiAobGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID49IG1f
eWllbGRzLnNpemUoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIG1feWllbGRzLnJlc2l6ZShs
aXZlQ2FsbGVlTG9jYWxzSW5kZXggKyAxKTsKKyAgICAgICAgICAgICAgICAgICAgbV95aWVsZHNb
bGl2ZUNhbGxlZUxvY2Fsc0luZGV4XS5zYXZlUG9pbnQgPSBieXRlY29kZU9mZnNldDsKKyAgICAg
ICAgICAgICAgICAgICAgdW5zaWduZWQgbWVyZ2VQb2ludCA9IGJ5dGVjb2RlT2Zmc2V0ICsgb2Zm
c2V0OworICAgICAgICAgICAgICAgICAgICBtX3lpZWxkc1tsaXZlQ2FsbGVlTG9jYWxzSW5kZXhd
Lm1lcmdlUG9pbnQgPSBtZXJnZVBvaW50OworICAgICAgICAgICAgICAgICAgICBtX21lcmdlQmxv
Y2tzLnNldChtX2dyYXBoLmZpbmRCYXNpY0Jsb2NrRm9yQnl0ZWNvZGVPZmZzZXQobWVyZ2VQb2lu
dCktPmluZGV4KCkpOworICAgICAgICAgICAgICAgICAgICBtX3NhdmVCbG9ja3Muc2V0KGJsb2Nr
LT5pbmRleCgpKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAg
fQorCisgICAgICAgICAgICAgICAgY2FzZSBvcF9yZXN1bWU6IHsKKyAgICAgICAgICAgICAgICAg
ICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gcGNbMl0udS5pbmRleDsKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKGxpdmVDYWxsZWVMb2NhbHNJbmRleCA+PSBtX3lpZWxkcy5zaXpl
KCkpCisgICAgICAgICAgICAgICAgICAgICAgICBtX3lpZWxkcy5yZXNpemUobGl2ZUNhbGxlZUxv
Y2Fsc0luZGV4ICsgMSk7CisgICAgICAgICAgICAgICAgICAgIG1feWllbGRzW2xpdmVDYWxsZWVM
b2NhbHNJbmRleF0ucmVzdW1lUG9pbnQgPSBieXRlY29kZU9mZnNldDsKKyAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcnVuR2VuZXJhdG9yVmFyaWFibGVMaXZlbmVz
c0FuYWx5c2lzKCk7CisKKyAgICAgICAgcnVuU2F2ZWRWYXJpYWJsZUFuYWx5c2lzKCk7CisKKyAg
ICAgICAgVW5saW5rZWRDb2RlQmxvY2sqIGNvZGVCbG9jayA9IG1fZ3JhcGguY29kZUJsb2NrKCk7
CisgICAgICAgIGZvciAoY29uc3QgR2VuZXJhdG9yUG9pbnRzJiBwb2ludHMgOiBtX3lpZWxkcykg
eworICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHNjb3BlID0gdmlydHVhbFJlZ2lzdGVyRm9y
QXJndW1lbnQoNSk7CisKKyAgICAgICAgICAgIC8vIG9wX3NhdmUuCisgICAgICAgICAgICBwb2lu
dHMuY2hhbmdlZC5mb3JFYWNoU2V0Qml0KFsmXShzaXplX3QgaW5kZXgpIHsKKyAgICAgICAgICAg
ICAgICBWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCA9IHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGlu
ZGV4KTsKKyAgICAgICAgICAgICAgICBTdG9yYWdlIHN0b3JhZ2UgPSBzdG9yYWdlRm9yR2VuZXJh
dG9yTG9jYWwoaW5kZXgpOworCisgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0
KHBvaW50cy5zYXZlUG9pbnQsIEJ5dGVjb2RlSW5zZXJ0aW9uU2V0OjpJbnNlcnRlZEJ5dGVjb2Rl
IHsgeworICAgICAgICAgICAgICAgICAgICBvcF9wdXRfdG9fc2NvcGUsCisgICAgICAgICAgICAg
ICAgICAgIHNjb3BlLm9mZnNldCgpLCAvLyBzY29wZQorICAgICAgICAgICAgICAgICAgICBzdG9y
YWdlLmlkZW50aWZpZXJJbmRleCwgLy8gaWRlbnRpZmllcgorICAgICAgICAgICAgICAgICAgICBv
cGVyYW5kLm9mZnNldCgpLCAvLyB2YWx1ZQorICAgICAgICAgICAgICAgICAgICBHZXRQdXRJbmZv
KERvTm90VGhyb3dJZk5vdEZvdW5kLCBMb2NhbENsb3N1cmVWYXIsIEluaXRpYWxpemF0aW9uTW9k
ZTo6Tm90SW5pdGlhbGl6YXRpb24pLm9wZXJhbmQoKSwgLy8gaW5mbworICAgICAgICAgICAgICAg
ICAgICBtX2dlbmVyYXRvckZyYW1lU3ltYm9sVGFibGVJbmRleCwgLy8gc3ltYm9sIHRhYmxlIGNv
bnN0YW50IGluZGV4CisgICAgICAgICAgICAgICAgICAgIHN0b3JhZ2Uuc2NvcGVPZmZzZXQub2Zm
c2V0KCksIC8vIHNjb3BlIG9mZnNldAorICAgICAgICAgICAgICAgIH0gfSk7CisgICAgICAgICAg
ICB9KTsKKworICAgICAgICAgICAgLy8gb3BfcmVzdW1lLgorICAgICAgICAgICAgcG9pbnRzLmxp
dmVuZXNzLmZvckVhY2hTZXRCaXQoWyZdKHNpemVfdCBpbmRleCkgeworICAgICAgICAgICAgICAg
IFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kID0gdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaW5kZXgp
OworICAgICAgICAgICAgICAgIFN0b3JhZ2Ugc3RvcmFnZSA9IHN0b3JhZ2VGb3JHZW5lcmF0b3JM
b2NhbChpbmRleCk7CisKKyAgICAgICAgICAgICAgICBVbmxpbmtlZFZhbHVlUHJvZmlsZSBwcm9m
aWxlID0gY29kZUJsb2NrLT5hZGRWYWx1ZVByb2ZpbGUoKTsKKyAgICAgICAgICAgICAgICBtX2lu
c2VydGlvblNldC5pbnNlcnQocG9pbnRzLnJlc3VtZVBvaW50LCBCeXRlY29kZUluc2VydGlvblNl
dDo6SW5zZXJ0ZWRCeXRlY29kZSB7IHsKKyAgICAgICAgICAgICAgICAgICAgb3BfZ2V0X2Zyb21f
c2NvcGUsCisgICAgICAgICAgICAgICAgICAgIG9wZXJhbmQub2Zmc2V0KCksIC8vIGRzdAorICAg
ICAgICAgICAgICAgICAgICBzY29wZS5vZmZzZXQoKSwgLy8gc2NvcGUKKyAgICAgICAgICAgICAg
ICAgICAgc3RvcmFnZS5pZGVudGlmaWVySW5kZXgsIC8vIGlkZW50aWZpZXIKKyAgICAgICAgICAg
ICAgICAgICAgR2V0UHV0SW5mbyhEb05vdFRocm93SWZOb3RGb3VuZCwgTG9jYWxDbG9zdXJlVmFy
LCBJbml0aWFsaXphdGlvbk1vZGU6Ok5vdEluaXRpYWxpemF0aW9uKS5vcGVyYW5kKCksIC8vIGlu
Zm8KKyAgICAgICAgICAgICAgICAgICAgMCwgLy8gbG9jYWwgc2NvcGUgZGVwdGgKKyAgICAgICAg
ICAgICAgICAgICAgc3RvcmFnZS5zY29wZU9mZnNldC5vZmZzZXQoKSwgLy8gc2NvcGUgb2Zmc2V0
CisgICAgICAgICAgICAgICAgICAgIHByb2ZpbGUgLy8gcHJvZmlsZQorICAgICAgICAgICAgICAg
IH0gfSk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgLy8gQ2xpcCB0aGUgdW5uZWNl
c3NhcnkgYnl0ZWNvZGVzLgorICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQucmVtb3ZlQnl0ZWNv
ZGUocG9pbnRzLnNhdmVQb2ludCk7CisgICAgICAgICAgICBtX2luc2VydGlvblNldC5yZW1vdmVC
eXRlY29kZShwb2ludHMucmVzdW1lUG9pbnQpOworICAgICAgICB9CisKKyAgICAgICAgbV9pbnNl
cnRpb25TZXQuZXhlY3V0ZSgpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBCeXRlY29kZUdyYXBo
PFVubGlua2VkQ29kZUJsb2NrPiBtX2dyYXBoOworICAgIEJ5dGVjb2RlSW5zZXJ0aW9uU2V0IG1f
aW5zZXJ0aW9uU2V0OworICAgIFZlY3RvcjxPcHRpb25hbDxTdG9yYWdlPj4gbV9zdG9yYWdlczsK
KyAgICBWZWN0b3I8R2VuZXJhdG9yUG9pbnRzPiBtX3lpZWxkczsKKyAgICBGYXN0Qml0VmVjdG9y
IG1fbWVyZ2VCbG9ja3M7CisgICAgRmFzdEJpdFZlY3RvciBtX3NhdmVCbG9ja3M7CisgICAgU3Ry
b25nPFN5bWJvbFRhYmxlPiBtX2dlbmVyYXRvckZyYW1lU3ltYm9sVGFibGU7CisgICAgaW50IG1f
Z2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZUluZGV4OworfTsKKwordm9pZCBwZXJmb3JtR2VuZXJh
dG9yaWZpY2F0aW9uKFVubGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFVubGlua2VkQ29kZUJs
b2NrOjpVbnBhY2tlZEluc3RydWN0aW9ucyYgaW5zdHJ1Y3Rpb25zLCBTeW1ib2xUYWJsZSogZ2Vu
ZXJhdG9yRnJhbWVTeW1ib2xUYWJsZSwgaW50IGdlbmVyYXRvckZyYW1lU3ltYm9sVGFibGVJbmRl
eCkKK3sKKyAgICBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbiBwYXNzKGNvZGVCbG9jaywgaW5z
dHJ1Y3Rpb25zLCBnZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlLCBnZW5lcmF0b3JGcmFtZVN5bWJv
bFRhYmxlSW5kZXgpOworICAgIHBhc3MucnVuKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlR2VuZXJh
dG9yaWZpY2F0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVH
ZW5lcmF0b3JpZmljYXRpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYjdlYzk2ZWQ3MGRiYmEyMjExMWViMTM3
NzMzZmIyMDA1NWIxMTFhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmgKQEAgLTAsMCArMSwzNiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiVW5saW5rZWRDb2Rl
QmxvY2suaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIFN5bWJvbFRhYmxlOworCit2b2lk
IHBlcmZvcm1HZW5lcmF0b3JpZmljYXRpb24oVW5saW5rZWRDb2RlQmxvY2sqLCBVbmxpbmtlZENv
ZGVCbG9jazo6VW5wYWNrZWRJbnN0cnVjdGlvbnMmLCBTeW1ib2xUYWJsZSogZ2VuZXJhdG9yRnJh
bWVTeW1ib2xUYWJsZSwgaW50IGdlbmVyYXRvckZyYW1lU3ltYm9sVGFibGVJbmRleCk7CisKK30g
Ly8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlR3JhcGguaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZUdyYXBoLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjc1NTg0YjBmYTk0NzNlYjExMzI5Yzg5YTA3OTljMDFk
ZTU1YjI4MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZUdyYXBoLmgKQEAgLTAsMCArMSwxMTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTYgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIEJ5dGVjb2RlR3JhcGhfaAorI2RlZmluZSBCeXRlY29kZUdyYXBoX2gKKworI2luY2x1
ZGUgIkJ5dGVjb2RlQmFzaWNCbG9jay5oIgorI2luY2x1ZGUgPHd0Zi9JdGVyYXRvclJhbmdlLmg+
CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgQnl0
ZWNvZGVCYXNpY0Jsb2NrOworCit0ZW1wbGF0ZTx0eXBlbmFtZSBCbG9jaz4KK2NsYXNzIEJ5dGVj
b2RlR3JhcGggeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKEJ5dGVjb2RlR3JhcGgpOworcHVibGljOgorICAgIHR5cGVkZWYgVmVjdG9yPHN0
ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiBCYXNpY0Jsb2Nrc1ZlY3RvcjsKKwor
ICAgIGlubGluZSBCeXRlY29kZUdyYXBoKEJsb2NrKiwgdHlwZW5hbWUgQmxvY2s6OlVucGFja2Vk
SW5zdHJ1Y3Rpb25zJik7CisKKyAgICBCbG9jayogY29kZUJsb2NrKCkgY29uc3QgeyByZXR1cm4g
bV9jb2RlQmxvY2s7IH0KKworICAgIEJhc2ljQmxvY2tzVmVjdG9yJiBiYXNpY0Jsb2NrcygpIHsg
cmV0dXJuIG1fYmFzaWNCbG9ja3M7IH0KKworICAgIHR5cGVuYW1lIEJsb2NrOjpVbnBhY2tlZElu
c3RydWN0aW9ucyYgaW5zdHJ1Y3Rpb25zKCkgeyByZXR1cm4gbV9pbnN0cnVjdGlvbnM7IH0KKwor
ICAgIFdURjo6SXRlcmF0b3JSYW5nZTxCYXNpY0Jsb2Nrc1ZlY3Rvcjo6cmV2ZXJzZV9pdGVyYXRv
cj4gYmFzaWNCbG9ja3NJblJldmVyc2VPcmRlcigpCisgICAgeworICAgICAgICByZXR1cm4gV1RG
OjptYWtlSXRlcmF0b3JSYW5nZShtX2Jhc2ljQmxvY2tzLnJiZWdpbigpLCBtX2Jhc2ljQmxvY2tz
LnJlbmQoKSk7CisgICAgfQorCisgICAgc3RhdGljIGJvb2wgYmxvY2tDb250YWluc0J5dGVjb2Rl
T2Zmc2V0KEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0
KQorICAgIHsKKyAgICAgICAgdW5zaWduZWQgbGVhZGVyT2Zmc2V0ID0gYmxvY2stPmxlYWRlckJ5
dGVjb2RlT2Zmc2V0KCk7CisgICAgICAgIHJldHVybiBieXRlY29kZU9mZnNldCA+PSBsZWFkZXJP
ZmZzZXQgJiYgYnl0ZWNvZGVPZmZzZXQgPCBsZWFkZXJPZmZzZXQgKyBibG9jay0+dG90YWxCeXRl
Y29kZUxlbmd0aCgpOworICAgIH0KKworICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogZmluZEJhc2lj
QmxvY2tGb3JCeXRlY29kZU9mZnNldCh1bnNpZ25lZCBieXRlY29kZU9mZnNldCkKKyAgICB7Cisg
ICAgICAgIC8qCisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9iYXNpY0Js
b2Nrcy5zaXplKCk7IGkrKykgeworICAgICAgICAgICAgICAgIGlmIChibG9ja0NvbnRhaW5zQnl0
ZWNvZGVPZmZzZXQobV9iYXNpY0Jsb2Nrc1tpXS5nZXQoKSwgYnl0ZWNvZGVPZmZzZXQpKQorICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gbV9iYXNpY0Jsb2Nrc1tpXS5nZXQoKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAqLworCisgICAgICAgIHN0ZDo6
dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+KiBiYXNpY0Jsb2NrID0gYXBwcm94aW1hdGVC
aW5hcnlTZWFyY2g8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4sIHVuc2lnbmVk
PihtX2Jhc2ljQmxvY2tzLCBtX2Jhc2ljQmxvY2tzLnNpemUoKSwgYnl0ZWNvZGVPZmZzZXQsIFtd
IChzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiogYmFzaWNCbG9jaykgeyByZXR1
cm4gKCpiYXNpY0Jsb2NrKS0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKTsgfSk7CisgICAgICAgIC8v
IFdlIGZvdW5kIHRoZSBibG9jayB3ZSB3ZXJlIGxvb2tpbmcgZm9yLgorICAgICAgICBpZiAoYmxv
Y2tDb250YWluc0J5dGVjb2RlT2Zmc2V0KCgqYmFzaWNCbG9jaykuZ2V0KCksIGJ5dGVjb2RlT2Zm
c2V0KSkKKyAgICAgICAgICAgIHJldHVybiAoKmJhc2ljQmxvY2spLmdldCgpOworCisgICAgICAg
IC8vIEJhc2ljIGJsb2NrIGlzIHRvIHRoZSBsZWZ0IG9mIHRoZSByZXR1cm5lZCBibG9jay4KKyAg
ICAgICAgaWYgKGJ5dGVjb2RlT2Zmc2V0IDwgKCpiYXNpY0Jsb2NrKS0+bGVhZGVyQnl0ZWNvZGVP
ZmZzZXQoKSkgeworICAgICAgICAgICAgQVNTRVJUKGJhc2ljQmxvY2sgLSAxID49IG1fYmFzaWNC
bG9ja3MuZGF0YSgpKTsKKyAgICAgICAgICAgIEFTU0VSVChibG9ja0NvbnRhaW5zQnl0ZWNvZGVP
ZmZzZXQoYmFzaWNCbG9ja1stMV0uZ2V0KCksIGJ5dGVjb2RlT2Zmc2V0KSk7CisgICAgICAgICAg
ICByZXR1cm4gYmFzaWNCbG9ja1stMV0uZ2V0KCk7CisgICAgICAgIH0KKworICAgICAgICAvLyBC
YXNpYyBibG9jayBpcyB0byB0aGUgcmlnaHQgb2YgdGhlIHJldHVybmVkIGJsb2NrLgorICAgICAg
ICBBU1NFUlQoJmJhc2ljQmxvY2tbMV0gPD0gJm1fYmFzaWNCbG9ja3MubGFzdCgpKTsKKyAgICAg
ICAgQVNTRVJUKGJsb2NrQ29udGFpbnNCeXRlY29kZU9mZnNldChiYXNpY0Jsb2NrWzFdLmdldCgp
LCBieXRlY29kZU9mZnNldCkpOworICAgICAgICByZXR1cm4gYmFzaWNCbG9ja1sxXS5nZXQoKTsK
KyAgICB9CisKKyAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGZpbmRCYXNpY0Jsb2NrV2l0aExlYWRl
ck9mZnNldCh1bnNpZ25lZCBsZWFkZXJPZmZzZXQpCisgICAgeworICAgICAgICByZXR1cm4gKCp0
cnlCaW5hcnlTZWFyY2g8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4sIHVuc2ln
bmVkPihtX2Jhc2ljQmxvY2tzLCBtX2Jhc2ljQmxvY2tzLnNpemUoKSwgbGVhZGVyT2Zmc2V0LCBb
XSAoc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4qIGJhc2ljQmxvY2spIHsgcmV0
dXJuICgqYmFzaWNCbG9jayktPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCk7IH0pKS5nZXQoKTsKKyAg
ICB9CisKK3ByaXZhdGU6CisgICAgQmxvY2sqIG1fY29kZUJsb2NrOworICAgIEJhc2ljQmxvY2tz
VmVjdG9yIG1fYmFzaWNCbG9ja3M7CisgICAgdHlwZW5hbWUgQmxvY2s6OlVucGFja2VkSW5zdHJ1
Y3Rpb25zJiBtX2luc3RydWN0aW9uczsKK307CisKKwordGVtcGxhdGU8dHlwZW5hbWUgQmxvY2s+
CitCeXRlY29kZUdyYXBoPEJsb2NrPjo6Qnl0ZWNvZGVHcmFwaChCbG9jayogY29kZUJsb2NrLCB0
eXBlbmFtZSBCbG9jazo6VW5wYWNrZWRJbnN0cnVjdGlvbnMmIGluc3RydWN0aW9ucykKKyAgICA6
IG1fY29kZUJsb2NrKGNvZGVCbG9jaykKKyAgICAsIG1faW5zdHJ1Y3Rpb25zKGluc3RydWN0aW9u
cykKK3sKKyAgICBBU1NFUlQobV9jb2RlQmxvY2spOworICAgIEJ5dGVjb2RlQmFzaWNCbG9jazo6
Y29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MobV9jb2RlQmxvY2ssIGluc3RydWN0aW9ucy5iZWdp
bigpLCBpbnN0cnVjdGlvbnMuc2l6ZSgpLCBtX2Jhc2ljQmxvY2tzKTsKKyAgICBBU1NFUlQobV9i
YXNpY0Jsb2Nrcy5zaXplKCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKyNlbmRpZiAvLyBC
eXRlY29kZUdyYXBoX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZUluc2VydGlvblNldC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVJbnNlcnRpb25TZXQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1YzgyYTMzMjY3YWZjMWRl
YWVlNzY3YTQ0NTIwYTliMWY0Y2QyMWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnNlcnRpb25TZXQuY3BwCkBAIC0wLDAgKzEsODYg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFA
Z21haWwuY29tPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQnl0
ZWNvZGVJbnNlcnRpb25TZXQuaCIKKworI2luY2x1ZGUgPHd0Zi9CdWJibGVTb3J0Lmg+CisKK25h
bWVzcGFjZSBKU0MgeworCitpbnQgQnl0ZWNvZGVJbnNlcnRpb25TZXQ6OmFkanVzdE9mZnNldChp
bnQgYnl0ZWNvZGVPZmZzZXQsIGludCBqdW1wVGFyZ2V0KQoreworICAgIC8vIFRPRE86IFN1cGVy
IHJvdWdoIGltcGxlbWVudGF0aW9uLiBXZSBzaG91bGQgbG9vayBpbnRvIGl0IGNhcmVmdWxseS4K
KyAgICBpZiAoYnl0ZWNvZGVPZmZzZXQgPCBqdW1wVGFyZ2V0KSB7CisgICAgICAgIGF1dG8gc3Rh
cnQgPSBzdGQ6Omxvd2VyX2JvdW5kKG1faW5zZXJ0aW9ucy5iZWdpbigpLCBtX2luc2VydGlvbnMu
ZW5kKCksIGJ5dGVjb2RlT2Zmc2V0LCBbJl0gKGNvbnN0IEluc2VydGlvbiYgaW5zZXJ0aW9uLCBp
bnQgYnl0ZWNvZGVPZmZzZXQpIHsKKyAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+
KGluc2VydGlvbi5pbmRleCgpKSA8IGJ5dGVjb2RlT2Zmc2V0OworICAgICAgICB9KTsKKyAgICAg
ICAgaWYgKHN0YXJ0ICE9IG1faW5zZXJ0aW9ucy5lbmQoKSkgeworICAgICAgICAgICAgYXV0byBl
bmQgPSBzdGQ6Omxvd2VyX2JvdW5kKG1faW5zZXJ0aW9ucy5iZWdpbigpLCBtX2luc2VydGlvbnMu
ZW5kKCksIGp1bXBUYXJnZXQsIFsmXSAoY29uc3QgSW5zZXJ0aW9uJiBpbnNlcnRpb24sIGludCBq
dW1wVGFyZ2V0KSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oaW5z
ZXJ0aW9uLmluZGV4KCkpIDwganVtcFRhcmdldDsKKyAgICAgICAgICAgIH0pOworICAgICAgICAg
ICAgZm9yICg7IHN0YXJ0ICE9IGVuZDsgKytzdGFydCkgeworICAgICAgICAgICAgICAgIGlmIChz
dGFydC0+ZWxlbWVudCgpLnR5cGUgPT0gQ29tbWFuZDo6VHlwZTo6UmVtb3ZlKQorICAgICAgICAg
ICAgICAgICAgICBqdW1wVGFyZ2V0IC09IHN0YXJ0LT5lbGVtZW50KCkubGVuZ3RoOworICAgICAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAganVtcFRhcmdldCArPSBzdGFydC0+
ZWxlbWVudCgpLmxlbmd0aDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1
cm4ganVtcFRhcmdldCAtIGJ5dGVjb2RlT2Zmc2V0OworICAgIH0KKworICAgIGlmIChieXRlY29k
ZU9mZnNldCA9PSBqdW1wVGFyZ2V0KQorICAgICAgICByZXR1cm4gMDsKKworICAgIHJldHVybiAt
YWRqdXN0T2Zmc2V0KGp1bXBUYXJnZXQsIGJ5dGVjb2RlT2Zmc2V0KTsKK30KKwordm9pZCBCeXRl
Y29kZUluc2VydGlvblNldDo6YXBwbHlNb2RpZmljYXRpb24oKQoreworICAgIC8vIEZJWE1FOiBD
cmF6aWx5IG5haXZlISBIZXJlLCB3ZSBzaG91bGQga25vdyB0aGUgbGVuZ3RoIG9mIHRoZSB0cmFu
c2Zvcm1lZCBpbnN0cnVjdGlvbnMgKHNpbmNlIGluc2VydGlvbiBhbmQgcmVtb3ZhbCBjb21tYW5k
cyBjYW4gaGF2ZSB0aGVpciBsZW5ndGgpLgorICAgIGZvciAoc2l6ZV90IGluc2VydGlvbkluZGV4
ID0gbV9pbnNlcnRpb25zLnNpemUoKTsgaW5zZXJ0aW9uSW5kZXgtLTspIHsKKyAgICAgICAgY29u
c3QgSW5zZXJ0aW9uJiBpbnNlcnRpb24gPSBtX2luc2VydGlvbnNbaW5zZXJ0aW9uSW5kZXhdOwor
ICAgICAgICBpZiAoaW5zZXJ0aW9uLmVsZW1lbnQoKS50eXBlID09IENvbW1hbmQ6OlR5cGU6OlJl
bW92ZSkKKyAgICAgICAgICAgIG1fZ3JhcGguaW5zdHJ1Y3Rpb25zKCkucmVtb3ZlKGluc2VydGlv
bi5pbmRleCgpLCBpbnNlcnRpb24uZWxlbWVudCgpLmxlbmd0aCk7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIG1fZ3JhcGguaW5zdHJ1Y3Rpb25zKCkuaW5zZXJ0KGluc2VydGlvbi5pbmRleCgp
LCBpbnNlcnRpb24uZWxlbWVudCgpLmJ5dGVjb2RlLmluc3RydWN0aW9ucywgb3Bjb2RlTGVuZ3Ro
KGluc2VydGlvbi5lbGVtZW50KCkuYnl0ZWNvZGUuaW5zdHJ1Y3Rpb25zWzBdLnUub3Bjb2RlKSk7
CisgICAgfQorICAgIG1faW5zZXJ0aW9ucy5jbGVhcigpOworfQorCit2b2lkIEJ5dGVjb2RlSW5z
ZXJ0aW9uU2V0OjpleGVjdXRlKCkKK3sKKyAgICBXVEY6OmJ1YmJsZVNvcnQobV9pbnNlcnRpb25z
LmJlZ2luKCksIG1faW5zZXJ0aW9ucy5lbmQoKSwgW10gKGNvbnN0IEluc2VydGlvbiYgbGhzLCBj
b25zdCBJbnNlcnRpb24mIHJocykgeworICAgICAgICAvLyBXZSB3b3VsZCBsaWtlIHRvIHBlcmZv
cm0gcmVtb3ZlIG9wZXJhdGlvbiBiZWZvcmUgaW5zZXJ0aW9uLgorICAgICAgICBpZiAobGhzLmlu
ZGV4KCkgPT0gcmhzLmluZGV4KCkpCisgICAgICAgICAgICByZXR1cm4gcmhzLmVsZW1lbnQoKS50
eXBlID09IENvbW1hbmQ6OlR5cGU6OlJlbW92ZTsKKyAgICAgICAgcmV0dXJuIGxocyA8IHJoczsK
KyAgICB9KTsKKworICAgIFVubGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBtX2dyYXBoLmNv
ZGVCbG9jaygpOworICAgIGNvZGVCbG9jay0+YXBwbHlNb2RpZmljYXRpb24oKnRoaXMpOworfQor
Cit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZUluc2VydGlvblNldC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlSW5zZXJ0aW9uU2V0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTAzMGRiNWRhMGNhMzg1
Y2E5YzZiZTViODQ4ODZjMjQ3NzgxNzZjMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUluc2VydGlvblNldC5oCkBAIC0wLDAgKzEsODIg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFA
Z21haWwuY29tPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkJ5dGVjb2Rl
R3JhcGguaCIKKyNpbmNsdWRlICJVbmxpbmtlZENvZGVCbG9jay5oIgorI2luY2x1ZGUgPHd0Zi9J
bnNlcnRpb24uaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEJ5dGVjb2RlSW5zZXJ0aW9u
U2V0IHsKK3B1YmxpYzoKKyAgICBzdHJ1Y3QgSW5zZXJ0ZWRCeXRlY29kZSB7CisgICAgICAgIFVu
bGlua2VkSW5zdHJ1Y3Rpb24gaW5zdHJ1Y3Rpb25zW01BWF9PUENPREVfTEVOR1RIX09GX0JZVEVD
T0RFXTsKKyAgICB9OworCisgICAgc3RydWN0IENvbW1hbmQgeworICAgICAgICBlbnVtIGNsYXNz
IFR5cGUgeworICAgICAgICAgICAgSW5zZXJ0LAorICAgICAgICAgICAgUmVtb3ZlLAorICAgICAg
ICB9OworCisgICAgICAgIFR5cGUgdHlwZTsKKyAgICAgICAgc2l6ZV90IGxlbmd0aDsKKyAgICAg
ICAgSW5zZXJ0ZWRCeXRlY29kZSBieXRlY29kZTsKKyAgICB9OworCisgICAgdHlwZWRlZiBXVEY6
Okluc2VydGlvbjxDb21tYW5kPiBJbnNlcnRpb247CisKKyAgICBCeXRlY29kZUluc2VydGlvblNl
dChCeXRlY29kZUdyYXBoPFVubGlua2VkQ29kZUJsb2NrPiYgZ3JhcGgpCisgICAgICAgIDogbV9n
cmFwaChncmFwaCkKKyAgICB7CisgICAgfQorCisgICAgdm9pZCBpbnNlcnQodW5zaWduZWQgYnl0
ZWNvZGVPZmZzZXQsIEluc2VydGVkQnl0ZWNvZGUgYnl0ZWNvZGUpCisgICAgeworICAgICAgICBt
X2luc2VydGlvbnMuYXBwZW5kKEluc2VydGlvbihieXRlY29kZU9mZnNldCwgQ29tbWFuZCB7IENv
bW1hbmQ6OlR5cGU6Okluc2VydCwgb3Bjb2RlTGVuZ3RoKGJ5dGVjb2RlLmluc3RydWN0aW9uc1sw
XS51Lm9wY29kZSksIGJ5dGVjb2RlIH0pKTsKKyAgICB9CisKKyAgICB2b2lkIHJlbW92ZUJ5dGVj
b2RlKHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KQorICAgIHsKKyAgICAgICAgbV9pbnNlcnRpb25z
LmFwcGVuZChJbnNlcnRpb24oYnl0ZWNvZGVPZmZzZXQsIENvbW1hbmQgeyBDb21tYW5kOjpUeXBl
OjpSZW1vdmUsIG9wY29kZUxlbmd0aChtX2dyYXBoLmluc3RydWN0aW9ucygpW2J5dGVjb2RlT2Zm
c2V0XS51Lm9wY29kZSksIEluc2VydGVkQnl0ZWNvZGUgeyB9IH0pKTsKKyAgICB9CisKKyAgICB2
b2lkIGV4ZWN1dGUoKTsKKworICAgIEJ5dGVjb2RlR3JhcGg8VW5saW5rZWRDb2RlQmxvY2s+JiBn
cmFwaCgpIHsgcmV0dXJuIG1fZ3JhcGg7IH0KKworICAgIGludCBhZGp1c3RPZmZzZXQoaW50IGJ5
dGVjb2RlT2Zmc2V0LCBpbnQganVtcFRhcmdldCk7CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNs
YXNzIFVubGlua2VkQ29kZUJsb2NrOworICAgIHZvaWQgYXBwbHlNb2RpZmljYXRpb24oKTsKKwor
ICAgIEJ5dGVjb2RlR3JhcGg8VW5saW5rZWRDb2RlQmxvY2s+JiBtX2dyYXBoOworICAgIFZlY3Rv
cjxJbnNlcnRpb24sIDg+IG1faW5zZXJ0aW9uczsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5l
c3NBbmFseXNpcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVM
aXZlbmVzc0FuYWx5c2lzLmNwcAppbmRleCAxN2U4MmEyZmJiYTAxNTA0M2U5OWQzNGVkMjU2OTM3
MmIzNmY3YTg1Li41ZmFkYzdiOWJjZTBmYzhhODU4NDg5YjI2MGI5M2Y5YzlhMzU2NzgzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0Fu
YWx5c2lzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVM
aXZlbmVzc0FuYWx5c2lzLmNwcApAQCAtMzEsNzQgKzMxLDI5IEBACiAjaW5jbHVkZSAiQnl0ZWNv
ZGVVc2VEZWYuaCIKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJGdWxsQnl0ZWNv
ZGVMaXZlbmVzcy5oIgorI2luY2x1ZGUgIkludGVycHJldGVySW5saW5lcy5oIgogI2luY2x1ZGUg
IlByZWNpc2VKdW1wVGFyZ2V0cy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAogQnl0ZWNvZGVMaXZl
bmVzc0FuYWx5c2lzOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMoQ29kZUJsb2NrKiBjb2RlQmxv
Y2spCi0gICAgOiBtX2NvZGVCbG9jayhjb2RlQmxvY2spCisgICAgOiBtX2dyYXBoKGNvZGVCbG9j
aywgY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKSkKIHsKLSAgICBBU1NFUlQobV9jb2RlQmxvY2sp
OwogICAgIGNvbXB1dGUoKTsKIH0KIAotc3RhdGljIGJvb2wgaXNWYWxpZFJlZ2lzdGVyRm9yTGl2
ZW5lc3MoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGludCBvcGVyYW5kKQorc3RhdGljIGJvb2wgaXNW
YWxpZFJlZ2lzdGVyRm9yTGl2ZW5lc3MoaW50IG9wZXJhbmQpCiB7Ci0gICAgaWYgKGNvZGVCbG9j
ay0+aXNDb25zdGFudFJlZ2lzdGVySW5kZXgob3BlcmFuZCkpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAKICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZyhvcGVyYW5kKTsKKyAgICBp
ZiAodmlydHVhbFJlZy5pc0NvbnN0YW50KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBy
ZXR1cm4gdmlydHVhbFJlZy5pc0xvY2FsKCk7CiB9CiAKLXN0YXRpYyB1bnNpZ25lZCBnZXRMZWFk
ZXJPZmZzZXRGb3JCYXNpY0Jsb2NrKHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+
KiBiYXNpY0Jsb2NrKQotewotICAgIHJldHVybiAoKmJhc2ljQmxvY2spLT5sZWFkZXJCeXRlY29k
ZU9mZnNldCgpOwotfQotCi1zdGF0aWMgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBmaW5kQmFzaWNCbG9j
a1dpdGhMZWFkZXJPZmZzZXQoVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxv
Y2s+PiYgYmFzaWNCbG9ja3MsIHVuc2lnbmVkIGxlYWRlck9mZnNldCkKLXsKLSAgICByZXR1cm4g
KCp0cnlCaW5hcnlTZWFyY2g8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4sIHVu
c2lnbmVkPihiYXNpY0Jsb2NrcywgYmFzaWNCbG9ja3Muc2l6ZSgpLCBsZWFkZXJPZmZzZXQsIGdl
dExlYWRlck9mZnNldEZvckJhc2ljQmxvY2spKS5nZXQoKTsKLX0KLQotc3RhdGljIGJvb2wgYmxv
Y2tDb250YWluc0J5dGVjb2RlT2Zmc2V0KEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2ssIHVuc2ln
bmVkIGJ5dGVjb2RlT2Zmc2V0KQotewotICAgIHVuc2lnbmVkIGxlYWRlck9mZnNldCA9IGJsb2Nr
LT5sZWFkZXJCeXRlY29kZU9mZnNldCgpOwotICAgIHJldHVybiBieXRlY29kZU9mZnNldCA+PSBs
ZWFkZXJPZmZzZXQgJiYgYnl0ZWNvZGVPZmZzZXQgPCBsZWFkZXJPZmZzZXQgKyBibG9jay0+dG90
YWxCeXRlY29kZUxlbmd0aCgpOwotfQotCi1zdGF0aWMgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBmaW5k
QmFzaWNCbG9ja0ZvckJ5dGVjb2RlT2Zmc2V0KFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNv
ZGVCYXNpY0Jsb2NrPj4mIGJhc2ljQmxvY2tzLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCkKLXsK
LS8qCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGJhc2ljQmxvY2tzLnNpemUoKTsgaSsr
KSB7Ci0gICAgICAgIGlmIChibG9ja0NvbnRhaW5zQnl0ZWNvZGVPZmZzZXQoYmFzaWNCbG9ja3Nb
aV0uZ2V0KCksIGJ5dGVjb2RlT2Zmc2V0KSkKLSAgICAgICAgICAgIHJldHVybiBiYXNpY0Jsb2Nr
c1tpXS5nZXQoKTsKLSAgICB9Ci0gICAgcmV0dXJuIDA7Ci0qLwotICAgIHN0ZDo6dW5pcXVlX3B0
cjxCeXRlY29kZUJhc2ljQmxvY2s+KiBiYXNpY0Jsb2NrID0gYXBwcm94aW1hdGVCaW5hcnlTZWFy
Y2g8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4sIHVuc2lnbmVkPigKLSAgICAg
ICAgYmFzaWNCbG9ja3MsIGJhc2ljQmxvY2tzLnNpemUoKSwgYnl0ZWNvZGVPZmZzZXQsIGdldExl
YWRlck9mZnNldEZvckJhc2ljQmxvY2spOwotICAgIC8vIFdlIGZvdW5kIHRoZSBibG9jayB3ZSB3
ZXJlIGxvb2tpbmcgZm9yLgotICAgIGlmIChibG9ja0NvbnRhaW5zQnl0ZWNvZGVPZmZzZXQoKCpi
YXNpY0Jsb2NrKS5nZXQoKSwgYnl0ZWNvZGVPZmZzZXQpKQotICAgICAgICByZXR1cm4gKCpiYXNp
Y0Jsb2NrKS5nZXQoKTsKLQotICAgIC8vIEJhc2ljIGJsb2NrIGlzIHRvIHRoZSBsZWZ0IG9mIHRo
ZSByZXR1cm5lZCBibG9jay4KLSAgICBpZiAoYnl0ZWNvZGVPZmZzZXQgPCAoKmJhc2ljQmxvY2sp
LT5sZWFkZXJCeXRlY29kZU9mZnNldCgpKSB7Ci0gICAgICAgIEFTU0VSVChiYXNpY0Jsb2NrIC0g
MSA+PSBiYXNpY0Jsb2Nrcy5kYXRhKCkpOwotICAgICAgICBBU1NFUlQoYmxvY2tDb250YWluc0J5
dGVjb2RlT2Zmc2V0KGJhc2ljQmxvY2tbLTFdLmdldCgpLCBieXRlY29kZU9mZnNldCkpOwotICAg
ICAgICByZXR1cm4gYmFzaWNCbG9ja1stMV0uZ2V0KCk7Ci0gICAgfQotCi0gICAgLy8gQmFzaWMg
YmxvY2sgaXMgdG8gdGhlIHJpZ2h0IG9mIHRoZSByZXR1cm5lZCBibG9jay4KLSAgICBBU1NFUlQo
JmJhc2ljQmxvY2tbMV0gPD0gJmJhc2ljQmxvY2tzLmxhc3QoKSk7Ci0gICAgQVNTRVJUKGJsb2Nr
Q29udGFpbnNCeXRlY29kZU9mZnNldChiYXNpY0Jsb2NrWzFdLmdldCgpLCBieXRlY29kZU9mZnNl
dCkpOwotICAgIHJldHVybiBiYXNpY0Jsb2NrWzFdLmdldCgpOwotfQotCiAvLyBTaW1wbGlmaWVk
IGludGVyZmFjZSB0byBieXRlY29kZSB1c2UvZGVmLCB3aGljaCBkZXRlcm1pbmVzIGRlZnMgZmly
c3QgYW5kIHRoZW4gdXNlcywgYW5kIGluY2x1ZGVzCiAvLyBleGNlcHRpb24gaGFuZGxlcnMgaW4g
dGhlIHVzZXMuCiB0ZW1wbGF0ZTx0eXBlbmFtZSBVc2VGdW5jdG9yLCB0eXBlbmFtZSBEZWZGdW5j
dG9yPgotc3RhdGljIHZvaWQgc3RlcE92ZXJJbnN0cnVjdGlvbihDb2RlQmxvY2sqIGNvZGVCbG9j
aywgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaywgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRl
Y29kZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9ja3MsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBj
b25zdCBVc2VGdW5jdG9yJiB1c2UsIGNvbnN0IERlZkZ1bmN0b3ImIGRlZikKK3N0YXRpYyB2b2lk
IHN0ZXBPdmVySW5zdHJ1Y3Rpb24oQnl0ZWNvZGVHcmFwaDxDb2RlQmxvY2s+JiBncmFwaCwgdW5z
aWduZWQgYnl0ZWNvZGVPZmZzZXQsIGNvbnN0IFVzZUZ1bmN0b3ImIHVzZSwgY29uc3QgRGVmRnVu
Y3RvciYgZGVmKQogewogICAgIC8vIFRoaXMgYWJzdHJhY3RseSBleGVjdXRlIHRoZSBpbnN0cnVj
dGlvbiBpbiByZXZlcnNlLiBJbnN0cnVjdGlvbnMgbG9naWNhbGx5IGZpcnN0IHVzZSBvcGVyYW5k
cyBhbmQKICAgICAvLyB0aGVuIGRlZmluZSBvcGVyYW5kcy4gVGhpcyBsb2dpY2FsIG9yZGVyaW5n
IGlzIG5lY2Vzc2FyeSBmb3Igb3BlcmF0aW9ucyB0aGF0IHVzZSBhbmQgZGVmIHRoZSBzYW1lCkBA
IC0xMTUsNDEgKzcwLDM1IEBAIHN0YXRpYyB2b2lkIHN0ZXBPdmVySW5zdHJ1Y3Rpb24oQ29kZUJs
b2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2ssCiAgICAgLy8gdXNlcyBi
ZWZvcmUgZGVmcywgdGhlbiB0aGUgYWRkIG9wZXJhdGlvbiBhYm92ZSB3b3VsZCBhcHBlYXIgdG8g
bm90IGhhdmUgbG9jMSBsaXZlLCBzaW5jZSB3ZSdkCiAgICAgLy8gZmlyc3QgYWRkIGl0IHRvIHRo
ZSBvdXQgc2V0ICh0aGUgdXNlKSwgYW5kIHRoZW4gd2UnZCByZW1vdmUgaXQgKHRoZSBkZWYpLgog
ICAgIAorICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZ3JhcGguY29kZUJsb2NrKCk7CisKICAg
ICBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KAotICAgICAgICBjb2RlQmxvY2ssIGJsb2Nr
LCBieXRlY29kZU9mZnNldCwKLSAgICAgICAgWyZdIChDb2RlQmxvY2sqIGNvZGVCbG9jaywgSW5z
dHJ1Y3Rpb24qLCBPcGNvZGVJRCwgaW50IG9wZXJhbmQpIHsKLSAgICAgICAgICAgIGlmIChpc1Zh
bGlkUmVnaXN0ZXJGb3JMaXZlbmVzcyhjb2RlQmxvY2ssIG9wZXJhbmQpKQorICAgICAgICBjb2Rl
QmxvY2ssIGJ5dGVjb2RlT2Zmc2V0LAorICAgICAgICBbJl0gKENvZGVCbG9jayosIEluc3RydWN0
aW9uKiwgT3Bjb2RlSUQsIGludCBvcGVyYW5kKSB7CisgICAgICAgICAgICBpZiAoaXNWYWxpZFJl
Z2lzdGVyRm9yTGl2ZW5lc3Mob3BlcmFuZCkpCiAgICAgICAgICAgICAgICAgZGVmKFZpcnR1YWxS
ZWdpc3RlcihvcGVyYW5kKS50b0xvY2FsKCkpOwogICAgICAgICB9KTsKIAogICAgIGNvbXB1dGVV
c2VzRm9yQnl0ZWNvZGVPZmZzZXQoCi0gICAgICAgIGNvZGVCbG9jaywgYmxvY2ssIGJ5dGVjb2Rl
T2Zmc2V0LAotICAgICAgICBbJl0gKENvZGVCbG9jayogY29kZUJsb2NrLCBJbnN0cnVjdGlvbios
IE9wY29kZUlELCBpbnQgb3BlcmFuZCkgewotICAgICAgICAgICAgaWYgKGlzVmFsaWRSZWdpc3Rl
ckZvckxpdmVuZXNzKGNvZGVCbG9jaywgb3BlcmFuZCkpCisgICAgICAgIGNvZGVCbG9jaywgYnl0
ZWNvZGVPZmZzZXQsCisgICAgICAgIFsmXSAoQ29kZUJsb2NrKiwgSW5zdHJ1Y3Rpb24qLCBPcGNv
ZGVJRCwgaW50IG9wZXJhbmQpIHsKKyAgICAgICAgICAgIGlmIChpc1ZhbGlkUmVnaXN0ZXJGb3JM
aXZlbmVzcyhvcGVyYW5kKSkKICAgICAgICAgICAgICAgICB1c2UoVmlydHVhbFJlZ2lzdGVyKG9w
ZXJhbmQpLnRvTG9jYWwoKSk7CiAgICAgICAgIH0pOwogCiAgICAgLy8gSWYgd2UgaGF2ZSBhbiBl
eGNlcHRpb24gaGFuZGxlciwgd2Ugd2FudCB0aGUgbGl2ZS1pbiB2YXJpYWJsZXMgb2YgdGhlIAog
ICAgIC8vIGV4Y2VwdGlvbiBoYW5kbGVyIGJsb2NrIHRvIGJlIGluY2x1ZGVkIGluIHRoZSBsaXZl
LWluIG9mIHRoaXMgcGFydGljdWxhciBieXRlY29kZS4KICAgICBpZiAoSGFuZGxlckluZm8qIGhh
bmRsZXIgPSBjb2RlQmxvY2stPmhhbmRsZXJGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNl
dCkpIHsKLSAgICAgICAgLy8gRklYTUU6IFRoaXMgcmVzdW1lIGNoZWNrIHNob3VsZCBub3QgYmUg
bmVlZGVkLgotICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTU5MjgxCi0gICAgICAgIEludGVycHJldGVyKiBpbnRlcnByZXRlciA9IGNvZGVCbG9jay0+
dm0oKS0+aW50ZXJwcmV0ZXI7Ci0gICAgICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdp
biA9IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsKLSAgICAgICAgSW5zdHJ1Y3Rp
b24qIGluc3RydWN0aW9uID0gJmluc3RydWN0aW9uc0JlZ2luW2J5dGVjb2RlT2Zmc2V0XTsKLSAg
ICAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoaW5zdHJ1
Y3Rpb24tPnUub3Bjb2RlKTsKLSAgICAgICAgaWYgKG9wY29kZUlEICE9IG9wX3Jlc3VtZSkgewot
ICAgICAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBoYW5kbGVyQmxvY2sgPSBmaW5kQmFzaWNC
bG9ja1dpdGhMZWFkZXJPZmZzZXQoYmFzaWNCbG9ja3MsIGhhbmRsZXItPnRhcmdldCk7Ci0gICAg
ICAgICAgICBBU1NFUlQoaGFuZGxlckJsb2NrKTsKLSAgICAgICAgICAgIGhhbmRsZXJCbG9jay0+
aW4oKS5mb3JFYWNoU2V0Qml0KHVzZSk7Ci0gICAgICAgIH0KKyAgICAgICAgQnl0ZWNvZGVCYXNp
Y0Jsb2NrKiBoYW5kbGVyQmxvY2sgPSBncmFwaC5maW5kQmFzaWNCbG9ja1dpdGhMZWFkZXJPZmZz
ZXQoaGFuZGxlci0+dGFyZ2V0KTsKKyAgICAgICAgQVNTRVJUKGhhbmRsZXJCbG9jayk7CisgICAg
ICAgIGhhbmRsZXJCbG9jay0+aW4oKS5mb3JFYWNoU2V0Qml0KHVzZSk7CiAgICAgfQogfQogCi1z
dGF0aWMgdm9pZCBzdGVwT3Zlckluc3RydWN0aW9uKENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRl
Y29kZUJhc2ljQmxvY2sqIGJsb2NrLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFz
aWNCbG9jaz4+JiBiYXNpY0Jsb2NrcywgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIEZhc3RCaXRW
ZWN0b3ImIG91dCkKK3N0YXRpYyB2b2lkIHN0ZXBPdmVySW5zdHJ1Y3Rpb24oQnl0ZWNvZGVHcmFw
aDxDb2RlQmxvY2s+JiBncmFwaCwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIEZhc3RCaXRWZWN0
b3ImIG91dCkKIHsKICAgICBzdGVwT3Zlckluc3RydWN0aW9uKAotICAgICAgICBjb2RlQmxvY2ss
IGJsb2NrLCBiYXNpY0Jsb2NrcywgYnl0ZWNvZGVPZmZzZXQsCisgICAgICAgIGdyYXBoLCBieXRl
Y29kZU9mZnNldCwKICAgICAgICAgWyZdICh1bnNpZ25lZCBiaXRJbmRleCkgewogICAgICAgICAg
ICAgLy8gVGhpcyBpcyB0aGUgdXNlIGZ1bmN0b3IsIHNvIHdlIHNldCB0aGUgYml0LgogICAgICAg
ICAgICAgb3V0LnNldChiaXRJbmRleCk7CkBAIC0xNjAsNyArMTA5LDcgQEAgc3RhdGljIHZvaWQg
c3RlcE92ZXJJbnN0cnVjdGlvbihDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Js
b2NrKiBibG9jaywKICAgICAgICAgfSk7CiB9CiAKLXN0YXRpYyB2b2lkIGNvbXB1dGVMb2NhbExp
dmVuZXNzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFz
aWNCbG9jayogYmxvY2ssIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2Nr
Pj4mIGJhc2ljQmxvY2tzLCB1bnNpZ25lZCB0YXJnZXRPZmZzZXQsIEZhc3RCaXRWZWN0b3ImIHJl
c3VsdCkKK3N0YXRpYyB2b2lkIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQnl0ZWNvZGVPZmZzZXQo
Qnl0ZWNvZGVHcmFwaDxDb2RlQmxvY2s+JiBncmFwaCwgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9j
aywgdW5zaWduZWQgdGFyZ2V0T2Zmc2V0LCBGYXN0Qml0VmVjdG9yJiByZXN1bHQpCiB7CiAgICAg
QVNTRVJUKCFibG9jay0+aXNFeGl0QmxvY2soKSk7CiAgICAgQVNTRVJUKCFibG9jay0+aXNFbnRy
eUJsb2NrKCkpOwpAQCAtMTcyLDQ0ICsxMjEsNDQgQEAgc3RhdGljIHZvaWQgY29tcHV0ZUxvY2Fs
TGl2ZW5lc3NGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGUK
ICAgICAgICAgaWYgKHRhcmdldE9mZnNldCA+IGJ5dGVjb2RlT2Zmc2V0KQogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIAotICAgICAgICBzdGVwT3Zlckluc3RydWN0aW9uKGNvZGVCbG9jaywg
YmxvY2ssIGJhc2ljQmxvY2tzLCBieXRlY29kZU9mZnNldCwgb3V0KTsKKyAgICAgICAgc3RlcE92
ZXJJbnN0cnVjdGlvbihncmFwaCwgYnl0ZWNvZGVPZmZzZXQsIG91dCk7CiAgICAgfQogCiAgICAg
cmVzdWx0LnNldChvdXQpOwogfQogCi1zdGF0aWMgdm9pZCBjb21wdXRlTG9jYWxMaXZlbmVzc0Zv
ckJsb2NrKENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrLCBW
ZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+JiBiYXNpY0Jsb2NrcykK
K3N0YXRpYyB2b2lkIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQmxvY2soQnl0ZWNvZGVHcmFwaDxD
b2RlQmxvY2s+JiBncmFwaCwgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaykKIHsKICAgICBpZiAo
YmxvY2stPmlzRXhpdEJsb2NrKCkgfHwgYmxvY2stPmlzRW50cnlCbG9jaygpKQogICAgICAgICBy
ZXR1cm47Ci0gICAgY29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCeXRlY29kZU9mZnNldChjb2RlQmxv
Y2ssIGJsb2NrLCBiYXNpY0Jsb2NrcywgYmxvY2stPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCksIGJs
b2NrLT5pbigpKTsKKyAgICBjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJ5dGVjb2RlT2Zmc2V0KGdy
YXBoLCBibG9jaywgYmxvY2stPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCksIGJsb2NrLT5pbigpKTsK
IH0KIAogdm9pZCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OnJ1bkxpdmVuZXNzRml4cG9pbnQo
KQogewotICAgIFVubGlua2VkQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jayA9IG1fY29kZUJs
b2NrLT51bmxpbmtlZENvZGVCbG9jaygpOworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gbV9n
cmFwaC5jb2RlQmxvY2soKTsKKyAgICBVbmxpbmtlZENvZGVCbG9jayogdW5saW5rZWRDb2RlQmxv
Y2sgPSBjb2RlQmxvY2stPnVubGlua2VkQ29kZUJsb2NrKCk7CiAgICAgdW5zaWduZWQgbnVtYmVy
T2ZWYXJpYWJsZXMgPSB1bmxpbmtlZENvZGVCbG9jay0+bV9udW1DYWxsZWVMb2NhbHM7CiAKLSAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9iYXNpY0Jsb2Nrcy5zaXplKCk7IGkrKykgewot
ICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrID0gbV9iYXNpY0Jsb2Nrc1tpXS5nZXQo
KTsKKyAgICBmb3IgKHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+JiBibG9jayA6
IG1fZ3JhcGguYmFzaWNCbG9ja3MoKSkgewogICAgICAgICBibG9jay0+aW4oKS5yZXNpemUobnVt
YmVyT2ZWYXJpYWJsZXMpOwogICAgICAgICBibG9jay0+b3V0KCkucmVzaXplKG51bWJlck9mVmFy
aWFibGVzKTsKICAgICB9CiAKICAgICBib29sIGNoYW5nZWQ7Ci0gICAgbV9iYXNpY0Jsb2Nrcy5s
YXN0KCktPmluKCkuY2xlYXJBbGwoKTsKLSAgICBtX2Jhc2ljQmxvY2tzLmxhc3QoKS0+b3V0KCku
Y2xlYXJBbGwoKTsKKyAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGxhc3RCbG9jayA9IG1fZ3JhcGgu
YmFzaWNCbG9ja3MoKS5sYXN0KCkuZ2V0KCk7CisgICAgbGFzdEJsb2NrLT5pbigpLmNsZWFyQWxs
KCk7CisgICAgbGFzdEJsb2NrLT5vdXQoKS5jbGVhckFsbCgpOwogICAgIEZhc3RCaXRWZWN0b3Ig
bmV3T3V0OwotICAgIG5ld091dC5yZXNpemUobV9iYXNpY0Jsb2Nrcy5sYXN0KCktPm91dCgpLm51
bUJpdHMoKSk7CisgICAgbmV3T3V0LnJlc2l6ZShsYXN0QmxvY2stPm91dCgpLm51bUJpdHMoKSk7
CiAgICAgZG8gewogICAgICAgICBjaGFuZ2VkID0gZmFsc2U7Ci0gICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IG1fYmFzaWNCbG9ja3Muc2l6ZSgpIC0gMTsgaS0tOykgewotICAgICAgICAgICAgQnl0
ZWNvZGVCYXNpY0Jsb2NrKiBibG9jayA9IG1fYmFzaWNCbG9ja3NbaV0uZ2V0KCk7CisgICAgICAg
IGZvciAoc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4mIGJsb2NrIDogbV9ncmFw
aC5iYXNpY0Jsb2Nrc0luUmV2ZXJzZU9yZGVyKCkpIHsKICAgICAgICAgICAgIG5ld091dC5jbGVh
ckFsbCgpOwotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8IGJsb2NrLT5zdWNj
ZXNzb3JzKCkuc2l6ZSgpOyBqKyspCi0gICAgICAgICAgICAgICAgbmV3T3V0Lm1lcmdlKGJsb2Nr
LT5zdWNjZXNzb3JzKClbal0tPmluKCkpOworICAgICAgICAgICAgZm9yIChCeXRlY29kZUJhc2lj
QmxvY2sqIHN1Y2Nlc3NvciA6IGJsb2NrLT5zdWNjZXNzb3JzKCkpCisgICAgICAgICAgICAgICAg
bmV3T3V0Lm1lcmdlKHN1Y2Nlc3Nvci0+aW4oKSk7CiAgICAgICAgICAgICBib29sIG91dERpZENo
YW5nZSA9IGJsb2NrLT5vdXQoKS5zZXRBbmRDaGVjayhuZXdPdXQpOwotICAgICAgICAgICAgY29t
cHV0ZUxvY2FsTGl2ZW5lc3NGb3JCbG9jayhtX2NvZGVCbG9jaywgYmxvY2ssIG1fYmFzaWNCbG9j
a3MpOworICAgICAgICAgICAgY29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCbG9jayhtX2dyYXBoLCBi
bG9jay5nZXQoKSk7CiAgICAgICAgICAgICBjaGFuZ2VkIHw9IG91dERpZENoYW5nZTsKICAgICAg
ICAgfQogICAgIH0gd2hpbGUgKGNoYW5nZWQpOwpAQCAtMjE3LDEyICsxNjYsMTIgQEAgdm9pZCBC
eXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OnJ1bkxpdmVuZXNzRml4cG9pbnQoKQogCiB2b2lkIEJ5
dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Z2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29kZU9mZnNldCh1
bnNpZ25lZCBieXRlY29kZU9mZnNldCwgRmFzdEJpdFZlY3RvciYgcmVzdWx0KQogewotICAgIEJ5
dGVjb2RlQmFzaWNCbG9jayogYmxvY2sgPSBmaW5kQmFzaWNCbG9ja0ZvckJ5dGVjb2RlT2Zmc2V0
KG1fYmFzaWNCbG9ja3MsIGJ5dGVjb2RlT2Zmc2V0KTsKKyAgICBCeXRlY29kZUJhc2ljQmxvY2sq
IGJsb2NrID0gbV9ncmFwaC5maW5kQmFzaWNCbG9ja0ZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2Rl
T2Zmc2V0KTsKICAgICBBU1NFUlQoYmxvY2spOwogICAgIEFTU0VSVCghYmxvY2stPmlzRW50cnlC
bG9jaygpKTsKICAgICBBU1NFUlQoIWJsb2NrLT5pc0V4aXRCbG9jaygpKTsKICAgICByZXN1bHQu
cmVzaXplKGJsb2NrLT5vdXQoKS5udW1CaXRzKCkpOwotICAgIGNvbXB1dGVMb2NhbExpdmVuZXNz
Rm9yQnl0ZWNvZGVPZmZzZXQobV9jb2RlQmxvY2ssIGJsb2NrLCBtX2Jhc2ljQmxvY2tzLCBieXRl
Y29kZU9mZnNldCwgcmVzdWx0KTsKKyAgICBjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJ5dGVjb2Rl
T2Zmc2V0KG1fZ3JhcGgsIGJsb2NrLCBieXRlY29kZU9mZnNldCwgcmVzdWx0KTsKIH0KIAogYm9v
bCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6Om9wZXJhbmRJc0xpdmVBdEJ5dGVjb2RlT2Zmc2V0
KGludCBvcGVyYW5kLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCkKQEAgLTI0NCwxMSArMTkzLDEx
IEBAIEZhc3RCaXRWZWN0b3IgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpnZXRMaXZlbmVzc0lu
Zm9BdEJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkCiB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNp
czo6Y29tcHV0ZUZ1bGxMaXZlbmVzcyhGdWxsQnl0ZWNvZGVMaXZlbmVzcyYgcmVzdWx0KQogewog
ICAgIEZhc3RCaXRWZWN0b3Igb3V0OworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gbV9ncmFw
aC5jb2RlQmxvY2soKTsKICAgICAKLSAgICByZXN1bHQubV9tYXAucmVzaXplKG1fY29kZUJsb2Nr
LT5pbnN0cnVjdGlvbnMoKS5zaXplKCkpOworICAgIHJlc3VsdC5tX21hcC5yZXNpemUoY29kZUJs
b2NrLT5pbnN0cnVjdGlvbnMoKS5zaXplKCkpOwogICAgIAotICAgIGZvciAodW5zaWduZWQgaSA9
IG1fYmFzaWNCbG9ja3Muc2l6ZSgpOyBpLS07KSB7Ci0gICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9j
ayogYmxvY2sgPSBtX2Jhc2ljQmxvY2tzW2ldLmdldCgpOworICAgIGZvciAoc3RkOjp1bmlxdWVf
cHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4mIGJsb2NrIDogbV9ncmFwaC5iYXNpY0Jsb2Nrc0luUmV2
ZXJzZU9yZGVyKCkpIHsKICAgICAgICAgaWYgKGJsb2NrLT5pc0VudHJ5QmxvY2soKSB8fCBibG9j
ay0+aXNFeGl0QmxvY2soKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAKQEAgLTI1
Niw3ICsyMDUsNyBAQCB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0ZUZ1bGxM
aXZlbmVzcyhGdWxsQnl0ZWNvZGVMaXZlbmVzcyYgcmVzdWx0KQogICAgICAgICAKICAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gYmxvY2stPmJ5dGVjb2RlT2Zmc2V0cygpLnNpemUoKTsgaS0tOykg
ewogICAgICAgICAgICAgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQgPSBibG9jay0+Ynl0ZWNvZGVP
ZmZzZXRzKClbaV07Ci0gICAgICAgICAgICBzdGVwT3Zlckluc3RydWN0aW9uKG1fY29kZUJsb2Nr
LCBibG9jaywgbV9iYXNpY0Jsb2NrcywgYnl0ZWNvZGVPZmZzZXQsIG91dCk7CisgICAgICAgICAg
ICBzdGVwT3Zlckluc3RydWN0aW9uKG1fZ3JhcGgsIGJ5dGVjb2RlT2Zmc2V0LCBvdXQpOwogICAg
ICAgICAgICAgcmVzdWx0Lm1fbWFwW2J5dGVjb2RlT2Zmc2V0XSA9IG91dDsKICAgICAgICAgfQog
ICAgIH0KQEAgLTI2NiwxMSArMjE1LDExIEBAIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lz
Ojpjb21wdXRlS2lsbHMoQnl0ZWNvZGVLaWxscyYgcmVzdWx0KQogewogICAgIEZhc3RCaXRWZWN0
b3Igb3V0OwogICAgIAotICAgIHJlc3VsdC5tX2NvZGVCbG9jayA9IG1fY29kZUJsb2NrOwotICAg
IHJlc3VsdC5tX2tpbGxTZXRzID0gc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZUtpbGxzOjpLaWxs
U2V0W10+KG1fY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5zaXplKCkpOworICAgIENvZGVCbG9j
ayogY29kZUJsb2NrID0gbV9ncmFwaC5jb2RlQmxvY2soKTsKKyAgICByZXN1bHQubV9jb2RlQmxv
Y2sgPSBjb2RlQmxvY2s7CisgICAgcmVzdWx0Lm1fa2lsbFNldHMgPSBzdGQ6Om1ha2VfdW5pcXVl
PEJ5dGVjb2RlS2lsbHM6OktpbGxTZXRbXT4oY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5zaXpl
KCkpOwogICAgIAotICAgIGZvciAodW5zaWduZWQgaSA9IG1fYmFzaWNCbG9ja3Muc2l6ZSgpOyBp
LS07KSB7Ci0gICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2sgPSBtX2Jhc2ljQmxvY2tz
W2ldLmdldCgpOworICAgIGZvciAoc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4m
IGJsb2NrIDogbV9ncmFwaC5iYXNpY0Jsb2Nrc0luUmV2ZXJzZU9yZGVyKCkpIHsKICAgICAgICAg
aWYgKGJsb2NrLT5pc0VudHJ5QmxvY2soKSB8fCBibG9jay0+aXNFeGl0QmxvY2soKSkKICAgICAg
ICAgICAgIGNvbnRpbnVlOwogICAgICAgICAKQEAgLTI3OSw3ICsyMjgsNyBAQCB2b2lkIEJ5dGVj
b2RlTGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0ZUtpbGxzKEJ5dGVjb2RlS2lsbHMmIHJlc3VsdCkK
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gYmxvY2stPmJ5dGVjb2RlT2Zmc2V0cygpLnNpemUo
KTsgaS0tOykgewogICAgICAgICAgICAgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQgPSBibG9jay0+
Ynl0ZWNvZGVPZmZzZXRzKClbaV07CiAgICAgICAgICAgICBzdGVwT3Zlckluc3RydWN0aW9uKAot
ICAgICAgICAgICAgICAgIG1fY29kZUJsb2NrLCBibG9jaywgbV9iYXNpY0Jsb2NrcywgYnl0ZWNv
ZGVPZmZzZXQsCisgICAgICAgICAgICAgICAgbV9ncmFwaCwgYnl0ZWNvZGVPZmZzZXQsCiAgICAg
ICAgICAgICAgICAgWyZdICh1bnNpZ25lZCBpbmRleCkgewogICAgICAgICAgICAgICAgICAgICAv
LyBUaGlzIGlzIGZvciB1c2VzLgogICAgICAgICAgICAgICAgICAgICBpZiAob3V0LmdldChpbmRl
eCkpCkBAIC0yOTcsMTIgKzI0NiwxMyBAQCB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6
Y29tcHV0ZUtpbGxzKEJ5dGVjb2RlS2lsbHMmIHJlc3VsdCkKIAogdm9pZCBCeXRlY29kZUxpdmVu
ZXNzQW5hbHlzaXM6OmR1bXBSZXN1bHRzKCkKIHsKLSAgICBkYXRhTG9nKCJcbkR1bXBpbmcgYnl0
ZWNvZGUgbGl2ZW5lc3MgZm9yICIsICptX2NvZGVCbG9jaywgIjpcbiIpOwotICAgIEludGVycHJl
dGVyKiBpbnRlcnByZXRlciA9IG1fY29kZUJsb2NrLT52bSgpLT5pbnRlcnByZXRlcjsKLSAgICBJ
bnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4gPSBtX2NvZGVCbG9jay0+aW5zdHJ1Y3Rpb25z
KCkuYmVnaW4oKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9iYXNpY0Jsb2Nrcy5z
aXplKCk7IGkrKykgewotICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrID0gbV9iYXNp
Y0Jsb2Nrc1tpXS5nZXQoKTsKLSAgICAgICAgZGF0YUxvZ0YoIlxuQnl0ZWNvZGUgYmFzaWMgYmxv
Y2sgJXU6ICVwIChvZmZzZXQ6ICV1LCBsZW5ndGg6ICV1KVxuIiwgaSwgYmxvY2ssIGJsb2NrLT5s
ZWFkZXJCeXRlY29kZU9mZnNldCgpLCBibG9jay0+dG90YWxCeXRlY29kZUxlbmd0aCgpKTsKKyAg
ICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IG1fZ3JhcGguY29kZUJsb2NrKCk7CisgICAgZGF0YUxv
ZygiXG5EdW1waW5nIGJ5dGVjb2RlIGxpdmVuZXNzIGZvciAiLCAqY29kZUJsb2NrLCAiOlxuIik7
CisgICAgSW50ZXJwcmV0ZXIqIGludGVycHJldGVyID0gY29kZUJsb2NrLT52bSgpLT5pbnRlcnBy
ZXRlcjsKKyAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4gPSBjb2RlQmxvY2stPmlu
c3RydWN0aW9ucygpLmJlZ2luKCk7CisgICAgdW5zaWduZWQgaSA9IDA7CisgICAgZm9yIChzdGQ6
OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiYgYmxvY2sgOiBtX2dyYXBoLmJhc2ljQmxv
Y2tzKCkpIHsKKyAgICAgICAgZGF0YUxvZ0YoIlxuQnl0ZWNvZGUgYmFzaWMgYmxvY2sgJXU6ICVw
IChvZmZzZXQ6ICV1LCBsZW5ndGg6ICV1KVxuIiwgaSsrLCBibG9jay5nZXQoKSwgYmxvY2stPmxl
YWRlckJ5dGVjb2RlT2Zmc2V0KCksIGJsb2NrLT50b3RhbEJ5dGVjb2RlTGVuZ3RoKCkpOwogICAg
ICAgICBkYXRhTG9nRigiU3VjY2Vzc29yczogIik7CiAgICAgICAgIGZvciAodW5zaWduZWQgaiA9
IDA7IGogPCBibG9jay0+c3VjY2Vzc29ycygpLnNpemUoKTsgaisrKSB7CiAgICAgICAgICAgICBC
eXRlY29kZUJhc2ljQmxvY2sqIHN1Y2Nlc3NvciA9IGJsb2NrLT5zdWNjZXNzb3JzKClbal07CkBA
IC0zMTAsMTEgKzI2MCwxMSBAQCB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6ZHVtcFJl
c3VsdHMoKQogICAgICAgICB9CiAgICAgICAgIGRhdGFMb2dGKCJcbiIpOwogICAgICAgICBpZiAo
YmxvY2stPmlzRW50cnlCbG9jaygpKSB7Ci0gICAgICAgICAgICBkYXRhTG9nRigiRW50cnkgYmxv
Y2sgJXBcbiIsIGJsb2NrKTsKKyAgICAgICAgICAgIGRhdGFMb2dGKCJFbnRyeSBibG9jayAlcFxu
IiwgYmxvY2suZ2V0KCkpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICAgICAg
ICAgaWYgKGJsb2NrLT5pc0V4aXRCbG9jaygpKSB7Ci0gICAgICAgICAgICBkYXRhTG9nRigiRXhp
dCBibG9jazogJXBcbiIsIGJsb2NrKTsKKyAgICAgICAgICAgIGRhdGFMb2dGKCJFeGl0IGJsb2Nr
OiAlcFxuIiwgYmxvY2suZ2V0KCkpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0K
ICAgICAgICAgZm9yICh1bnNpZ25lZCBieXRlY29kZU9mZnNldCA9IGJsb2NrLT5sZWFkZXJCeXRl
Y29kZU9mZnNldCgpOyBieXRlY29kZU9mZnNldCA8IGJsb2NrLT5sZWFkZXJCeXRlY29kZU9mZnNl
dCgpICsgYmxvY2stPnRvdGFsQnl0ZWNvZGVMZW5ndGgoKTspIHsKQEAgLTMyNyw3ICsyNzcsNyBA
QCB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6ZHVtcFJlc3VsdHMoKQogICAgICAgICAg
ICAgICAgICAgICBkYXRhTG9nRigiJXUgIiwgaik7CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICBkYXRhTG9nRigiXG4iKTsKLSAgICAgICAgICAgIG1fY29kZUJsb2NrLT5kdW1wQnl0ZWNvZGUo
V1RGOjpkYXRhRmlsZSgpLCBtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMo
KSwgaW5zdHJ1Y3Rpb25zQmVnaW4sIGN1cnJlbnRJbnN0cnVjdGlvbik7CisgICAgICAgICAgICBj
b2RlQmxvY2stPmR1bXBCeXRlY29kZShXVEY6OmRhdGFGaWxlKCksIGNvZGVCbG9jay0+Z2xvYmFs
T2JqZWN0KCktPmdsb2JhbEV4ZWMoKSwgaW5zdHJ1Y3Rpb25zQmVnaW4sIGN1cnJlbnRJbnN0cnVj
dGlvbik7CiAKICAgICAgICAgICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0ZXItPmdl
dE9wY29kZUlEKGluc3RydWN0aW9uc0JlZ2luW2J5dGVjb2RlT2Zmc2V0XS51Lm9wY29kZSk7CiAg
ICAgICAgICAgICB1bnNpZ25lZCBvcGNvZGVMZW5ndGggPSBvcGNvZGVMZW5ndGhzW29wY29kZUlE
XTsKQEAgLTM0Niw4ICsyOTYsNiBAQCB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6ZHVt
cFJlc3VsdHMoKQogCiB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0ZSgpCiB7
Ci0gICAgY29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MobV9jb2RlQmxvY2ssIG1fYmFzaWNCbG9j
a3MpOwotICAgIEFTU0VSVChtX2Jhc2ljQmxvY2tzLnNpemUoKSk7CiAgICAgcnVuTGl2ZW5lc3NG
aXhwb2ludCgpOwogCiAgICAgaWYgKE9wdGlvbnM6OmR1bXBCeXRlY29kZUxpdmVuZXNzUmVzdWx0
cygpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
TGl2ZW5lc3NBbmFseXNpcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVj
b2RlTGl2ZW5lc3NBbmFseXNpcy5oCmluZGV4IGVjZTE2ZjIxZjAxNTEwYTY0MjdmZDg0MTE0MDc5
YmVkODcwYzA4NzUuLjE5NGVhNGUzODYzZjgzZDhmMWQ3NGU1NDhiNzdiOWNkNTVlMDA3NDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNz
QW5hbHlzaXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVM
aXZlbmVzc0FuYWx5c2lzLmgKQEAgLTI3LDYgKzI3LDggQEAKICNkZWZpbmUgQnl0ZWNvZGVMaXZl
bmVzc0FuYWx5c2lzX2gKIAogI2luY2x1ZGUgIkJ5dGVjb2RlQmFzaWNCbG9jay5oIgorI2luY2x1
ZGUgIkJ5dGVjb2RlR3JhcGguaCIKKyNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlIDx3
dGYvRmFzdEJpdFZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgpAQCAtMzQsNyArMzYsNiBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNz
IEJ5dGVjb2RlS2lsbHM7Ci1jbGFzcyBDb2RlQmxvY2s7CiBjbGFzcyBGdWxsQnl0ZWNvZGVMaXZl
bmVzczsKIAogY2xhc3MgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzIHsKQEAgLTU2LDggKzU3LDcg
QEAgY2xhc3MgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzIHsKIAogICAgIHZvaWQgZ2V0TGl2ZW5l
c3NJbmZvQXRCeXRlY29kZU9mZnNldCh1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgRmFzdEJpdFZl
Y3RvciYpOwogCi0gICAgQ29kZUJsb2NrKiBtX2NvZGVCbG9jazsKLSAgICBWZWN0b3I8c3RkOjp1
bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+IG1fYmFzaWNCbG9ja3M7CisgICAgQnl0ZWNv
ZGVHcmFwaDxDb2RlQmxvY2s+IG1fZ3JhcGg7CiB9OwogCiBpbmxpbmUgYm9vbCBvcGVyYW5kSXNB
bHdheXNMaXZlKGludCBvcGVyYW5kKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlVXNlRGVmLmgKaW5kZXggOTgxZmIxZDBmZWMwNTcwNGQ1YjdmNjZlYzQ0MTgy
NTdlODNhYWMzNi4uZWQyZTZiZGMwNDU0M2FiNmU3YTVkMWYyMjNjMDhhOGViZjc0ZjhmMiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKQEAg
LTI3LDE4ICsyNywxMyBAQAogI2RlZmluZSBCeXRlY29kZVVzZURlZl9oCiAKICNpbmNsdWRlICJD
b2RlQmxvY2suaCIKKyNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogCiBuYW1lc3BhY2UgSlNDIHsK
IAotdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KLXZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29k
ZU9mZnNldCgKLSAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBi
bG9jaywgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCit0
ZW1wbGF0ZTx0eXBlbmFtZSBCbG9jaywgdHlwZW5hbWUgRnVuY3RvciwgdHlwZW5hbWUgSW5zdHJ1
Y3Rpb24+Cit2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoQmxvY2sqIGNvZGVCbG9j
aywgT3Bjb2RlSUQgb3Bjb2RlSUQsIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgY29uc3QgRnVu
Y3RvciYgZnVuY3RvcikKIHsKLSAgICBJbnRlcnByZXRlciogaW50ZXJwcmV0ZXIgPSBjb2RlQmxv
Y2stPnZtKCktPmludGVycHJldGVyOwotICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdp
biA9IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsKLSAgICBJbnN0cnVjdGlvbiog
aW5zdHJ1Y3Rpb24gPSAmaW5zdHJ1Y3Rpb25zQmVnaW5bYnl0ZWNvZGVPZmZzZXRdOwotICAgIE9w
Y29kZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGluc3RydWN0aW9uLT51
Lm9wY29kZSk7Ci0KICAgICBpZiAob3Bjb2RlSUQgIT0gb3BfZW50ZXIgJiYgY29kZUJsb2NrLT53
YXNDb21waWxlZFdpdGhEZWJ1Z2dpbmdPcGNvZGVzKCkgJiYgY29kZUJsb2NrLT5zY29wZVJlZ2lz
dGVyKCkuaXNWYWxpZCgpKQogICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24s
IG9wY29kZUlELCBjb2RlQmxvY2stPnNjb3BlUmVnaXN0ZXIoKS5vZmZzZXQoKSk7CiAKQEAgLTc1
LDggKzcwLDcgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAogICAgIGNhc2Ug
b3Bfam5lcV9udWxsOgogICAgIGNhc2Ugb3BfZGVjOgogICAgIGNhc2Ugb3BfaW5jOgotICAgIGNh
c2Ugb3BfbG9nX3NoYWRvd19jaGlja2VuX3Byb2xvZ3VlOgotICAgIGNhc2Ugb3BfcmVzdW1lOiB7
CisgICAgY2FzZSBvcF9sb2dfc2hhZG93X2NoaWNrZW5fcHJvbG9ndWU6IHsKICAgICAgICAgQVNT
RVJUKG9wY29kZUxlbmd0aHNbb3Bjb2RlSURdID4gMSk7CiAgICAgICAgIGZ1bmN0b3IoY29kZUJs
b2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CiAg
ICAgICAgIHJldHVybjsKQEAgLTI4NCwyMiArMjc4LDEzIEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JC
eXRlY29kZU9mZnNldCgKICAgICAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlv
biwgb3Bjb2RlSUQsIGxhc3RBcmcgKyBpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBj
YXNlIG9wX3NhdmU6IHsKLSAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBv
cGNvZGVJRCwgaW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKTsKLSAgICAgICAgdW5zaWduZWQgbWVy
Z2VQb2ludEJ5dGVjb2RlT2Zmc2V0ID0gYnl0ZWNvZGVPZmZzZXQgKyBpbnN0cnVjdGlvblszXS51
Lm9wZXJhbmQ7Ci0gICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogbWVyZ2VQb2ludEJsb2NrID0g
bnVsbHB0cjsKLSAgICAgICAgZm9yIChCeXRlY29kZUJhc2ljQmxvY2sqIHN1Y2Nlc3NvciA6IGJs
b2NrLT5zdWNjZXNzb3JzKCkpIHsKLSAgICAgICAgICAgIGlmIChzdWNjZXNzb3ItPmxlYWRlckJ5
dGVjb2RlT2Zmc2V0KCkgPT0gbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0KSB7Ci0gICAgICAgICAg
ICAgICAgbWVyZ2VQb2ludEJsb2NrID0gc3VjY2Vzc29yOwotICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIEFTU0VSVChtZXJnZVBvaW50Qmxv
Y2spOwotICAgICAgICBtZXJnZVBvaW50QmxvY2stPmluKCkuZm9yRWFjaFNldEJpdChbJl0odW5z
aWduZWQgbG9jYWwpIHsKLSAgICAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlv
biwgb3Bjb2RlSUQsIHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGxvY2FsKS5vZmZzZXQoKSk7Ci0g
ICAgICAgIH0pOworCisgICAgY2FzZSBvcF9zYXZlOgorICAgIGNhc2Ugb3BfcmVzdW1lOiB7Cisg
ICAgICAgIC8vIERvIG5vdGhpbmcgaW4gbGl2ZW5lc3MgYW5hbHlzaXMuCiAgICAgICAgIHJldHVy
bjsKICAgICB9CisKICAgICBkZWZhdWx0OgogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogICAgICAgICBicmVhazsKQEAgLTMwNywxMiArMjkyLDE4IEBAIHZvaWQgY29tcHV0
ZVVzZXNGb3JCeXRlY29kZU9mZnNldCgKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4K
LXZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywg
Qnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaywgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIGNvbnN0
IEZ1bmN0b3ImIGZ1bmN0b3IpCit2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoQ29k
ZUJsb2NrKiBjb2RlQmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBjb25zdCBGdW5jdG9y
JiBmdW5jdG9yKQogewogICAgIEludGVycHJldGVyKiBpbnRlcnByZXRlciA9IGNvZGVCbG9jay0+
dm0oKS0+aW50ZXJwcmV0ZXI7CiAgICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luID0g
Y29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpOwogICAgIEluc3RydWN0aW9uKiBpbnN0
cnVjdGlvbiA9ICZpbnN0cnVjdGlvbnNCZWdpbltieXRlY29kZU9mZnNldF07CiAgICAgT3Bjb2Rl
SUQgb3Bjb2RlSUQgPSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb24tPnUub3Bj
b2RlKTsKKyAgICBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9jaywgb3Bjb2Rl
SUQsIGluc3RydWN0aW9uLCBmdW5jdG9yKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQmxvY2ss
IHR5cGVuYW1lIEluc3RydWN0aW9uLCB0eXBlbmFtZSBGdW5jdG9yPgordm9pZCBjb21wdXRlRGVm
c0ZvckJ5dGVjb2RlT2Zmc2V0KEJsb2NrKiBjb2RlQmxvY2ssIE9wY29kZUlEIG9wY29kZUlELCBJ
bnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCit7CiAgICAg
c3dpdGNoIChvcGNvZGVJRCkgewogICAgIC8vIFRoZXNlIGRvbid0IGRlZmluZSBhbnl0aGluZy4K
ICAgICBjYXNlIG9wX2NvcHlfcmVzdDoKQEAgLTMyMCw3ICszMTEsNiBAQCB2b2lkIGNvbXB1dGVE
ZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFzaWNC
bG9jayogYmxvYwogICAgIGNhc2Ugb3BfZW5kOgogICAgIGNhc2Ugb3BfdGhyb3c6CiAgICAgY2Fz
ZSBvcF90aHJvd19zdGF0aWNfZXJyb3I6Ci0gICAgY2FzZSBvcF9zYXZlOgogICAgIGNhc2Ugb3Bf
YXNzZXJ0OgogICAgIGNhc2Ugb3BfZGVidWc6CiAgICAgY2FzZSBvcF9yZXQ6CkBAIC00NTksNyAr
NDQ5LDcgQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29k
ZUJsb2NrLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2MKICAgICBjYXNlIG9wX2RlbF9ieV9pZDoK
ICAgICBjYXNlIG9wX2RlbF9ieV92YWw6CiAgICAgY2FzZSBvcF91bnNpZ25lZDoKLSAgICBjYXNl
IG9wX2dldF9mcm9tX2FyZ3VtZW50czogCisgICAgY2FzZSBvcF9nZXRfZnJvbV9hcmd1bWVudHM6
CiAgICAgY2FzZSBvcF9nZXRfcmVzdF9sZW5ndGg6IHsKICAgICAgICAgQVNTRVJUKG9wY29kZUxl
bmd0aHNbb3Bjb2RlSURdID4gMSk7CiAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVj
dGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CkBAIC00NzYsMTggKzQ2
NiwyNyBAQCB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2Rl
QmxvY2ssIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvYwogICAgICAgICAgICAgZnVuY3Rvcihjb2Rl
QmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaSku
b2Zmc2V0KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQorICAgIGNhc2Ugb3Bfc2F2ZToKICAg
ICBjYXNlIG9wX3Jlc3VtZTogewotICAgICAgICBSRUxFQVNFX0FTU0VSVChibG9jay0+c3VjY2Vz
c29ycygpLnNpemUoKSA9PSAxKTsKLSAgICAgICAgLy8gRklYTUU6IFRoaXMgaXMgcmVhbGx5IGRp
cnR5LgotICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTU5MjgxCi0gICAgICAgIGJsb2NrLT5zdWNjZXNzb3JzKClbMF0tPmluKCkuZm9yRWFjaFNldEJp
dChbJl0odW5zaWduZWQgbG9jYWwpIHsKLSAgICAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBp
bnN0cnVjdGlvbiwgb3Bjb2RlSUQsIHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGxvY2FsKS5vZmZz
ZXQoKSk7Ci0gICAgICAgIH0pOworICAgICAgICAvLyBEbyBub3RoaW5nIGluIGxpdmVuZXNzIGFu
YWx5c2lzLgogICAgICAgICByZXR1cm47CiAgICAgfQorICAgIGRlZmF1bHQ6CisgICAgICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybjsKICAgICB9CiB9CiAK
K3RlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+Cit2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVP
ZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBjb25z
dCBGdW5jdG9yJiBmdW5jdG9yKQoreworICAgIEludGVycHJldGVyKiBpbnRlcnByZXRlciA9IGNv
ZGVCbG9jay0+dm0oKS0+aW50ZXJwcmV0ZXI7CisgICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9u
c0JlZ2luID0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpOworICAgIEluc3RydWN0
aW9uKiBpbnN0cnVjdGlvbiA9ICZpbnN0cnVjdGlvbnNCZWdpbltieXRlY29kZU9mZnNldF07Cisg
ICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rp
b24tPnUub3Bjb2RlKTsKKyAgICBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9j
aywgb3Bjb2RlSUQsIGluc3RydWN0aW9uLCBmdW5jdG9yKTsKK30KKwogfSAvLyBuYW1lc3BhY2Ug
SlNDCiAKICNlbmRpZiAvLyBCeXRlY29kZVVzZURlZl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IDEzYjE1MGYxNGJiNTVlYWE5NzZmNzFiNDhl
Y2RmN2ZlMDE1Nzk1YWEuLjBiZjY3YjQ0Y2IwNzU0OGJkNTE4Njc2MTg5NjQ4YmNiMjYzZGU2OTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC0z
Miw2ICszMiw3IEBACiAKICNpbmNsdWRlICJCYXNpY0Jsb2NrTG9jYXRpb24uaCIKICNpbmNsdWRl
ICJCeXRlY29kZUdlbmVyYXRvci5oIgorI2luY2x1ZGUgIkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNp
cy5oIgogI2luY2x1ZGUgIkJ5dGVjb2RlVXNlRGVmLmgiCiAjaW5jbHVkZSAiQ2FsbExpbmtTdGF0
dXMuaCIKICNpbmNsdWRlICJERkdDYXBhYmlsaXRpZXMuaCIKQEAgLTY5MiwxOCArNjkzLDYgQEAg
dm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZShQcmludFN0cmVhbSYgb3V0KQogICAgICAgICB9
IHdoaWxlIChpIDwgbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzLnNpemUoKSk7
CiAgICAgfQogCi0gICAgaWYgKG1fcmFyZURhdGEgJiYgIW1fcmFyZURhdGEtPm1fbGl2ZUNhbGxl
ZUxvY2Fsc0F0WWllbGQuaXNFbXB0eSgpKSB7Ci0gICAgICAgIG91dC5wcmludGYoIlxuTGl2ZSBD
YWxsZWUgTG9jYWxzOlxuIik7Ci0gICAgICAgIHVuc2lnbmVkIGkgPSAwOwotICAgICAgICBkbyB7
Ci0gICAgICAgICAgICBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlbmVzcyA9IG1fcmFyZURhdGEt
Pm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGRbaV07Ci0gICAgICAgICAgICBvdXQucHJpbnRmKCIg
IGxpdmUlMXUgPSAiLCBpKTsKLSAgICAgICAgICAgIGxpdmVuZXNzLmR1bXAob3V0KTsKLSAgICAg
ICAgICAgIG91dC5wcmludGYoIlxuIik7Ci0gICAgICAgICAgICArK2k7Ci0gICAgICAgIH0gd2hp
bGUgKGkgPCBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkLnNpemUoKSk7Ci0g
ICAgfQotCiAgICAgb3V0LnByaW50ZigiXG4iKTsKIH0KIApAQCAtMTY2MiwzMSArMTY1MSw2IEBA
IHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoCiAgICAgICAgICAgICBvdXQucHJpbnRmKCIl
cywgJWQiLCBkZWJ1Z0hvb2tOYW1lKGRlYnVnSG9va0lEKSwgaGFzQnJlYWtwb2ludEZsYWcpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgY2FzZSBvcF9zYXZlOiB7Ci0g
ICAgICAgICAgICBpbnQgZ2VuZXJhdG9yID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAg
ICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSAoKytpdCktPnUudW5zaWduZWRWYWx1
ZTsKLSAgICAgICAgICAgIGludCBvZmZzZXQgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAg
ICAgIEZhc3RCaXRWZWN0b3IgbGl2ZW5lc3M7Ci0gICAgICAgICAgICBpZiAobGl2ZUNhbGxlZUxv
Y2Fsc0luZGV4IDwgbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZC5zaXplKCkp
Ci0gICAgICAgICAgICAgICAgbGl2ZW5lc3MgPSBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2Nh
bHNBdFlpZWxkW2xpdmVDYWxsZWVMb2NhbHNJbmRleF07Ci0gICAgICAgICAgICBwcmludExvY2F0
aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJzYXZlIik7Ci0gICAgICAgICAgICBv
dXQucHJpbnRmKCIlcywgIiwgcmVnaXN0ZXJOYW1lKGdlbmVyYXRvcikuZGF0YSgpKTsKLSAgICAg
ICAgICAgIGxpdmVuZXNzLmR1bXAob3V0KTsKLSAgICAgICAgICAgIG91dC5wcmludGYoIihAbGl2
ZSUxdSksICVkKC0+JWQpIiwgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4LCBvZmZzZXQsIGxvY2F0aW9u
ICsgb2Zmc2V0KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2Ug
b3BfcmVzdW1lOiB7Ci0gICAgICAgICAgICBpbnQgZ2VuZXJhdG9yID0gKCsraXQpLT51Lm9wZXJh
bmQ7Ci0gICAgICAgICAgICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSAoKytpdCkt
PnUudW5zaWduZWRWYWx1ZTsKLSAgICAgICAgICAgIEZhc3RCaXRWZWN0b3IgbGl2ZW5lc3M7Ci0g
ICAgICAgICAgICBpZiAobGl2ZUNhbGxlZUxvY2Fsc0luZGV4IDwgbV9yYXJlRGF0YS0+bV9saXZl
Q2FsbGVlTG9jYWxzQXRZaWVsZC5zaXplKCkpCi0gICAgICAgICAgICAgICAgbGl2ZW5lc3MgPSBt
X3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkW2xpdmVDYWxsZWVMb2NhbHNJbmRl
eF07Ci0gICAgICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwg
aXQsICJyZXN1bWUiKTsKLSAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAiLCByZWdpc3Rlck5h
bWUoZ2VuZXJhdG9yKS5kYXRhKCkpOwotICAgICAgICAgICAgbGl2ZW5lc3MuZHVtcChvdXQpOwot
ICAgICAgICAgICAgb3V0LnByaW50ZigiKEBsaXZlJTF1KSIsIGxpdmVDYWxsZWVMb2NhbHNJbmRl
eCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2Fzc2Vy
dDogewogICAgICAgICAgICAgaW50IGNvbmRpdGlvbiA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAg
ICAgICAgICAgaW50IGxpbmUgPSAoKytpdCktPnUub3BlcmFuZDsKQEAgLTE4OTksNyArMTg2Myw2
IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIENvcHlQYXJzZWRCbG9j
a1RhZywgQ29kZUJsb2NrJiBvdGhlcikKICAgICAgICAgbV9yYXJlRGF0YS0+bV9jb25zdGFudEJ1
ZmZlcnMgPSBvdGhlci5tX3JhcmVEYXRhLT5tX2NvbnN0YW50QnVmZmVyczsKICAgICAgICAgbV9y
YXJlRGF0YS0+bV9zd2l0Y2hKdW1wVGFibGVzID0gb3RoZXIubV9yYXJlRGF0YS0+bV9zd2l0Y2hK
dW1wVGFibGVzOwogICAgICAgICBtX3JhcmVEYXRhLT5tX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXMg
PSBvdGhlci5tX3JhcmVEYXRhLT5tX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXM7Ci0gICAgICAgIG1f
cmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQgPSBvdGhlci5tX3JhcmVEYXRhLT5t
X2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkOwogICAgIH0KICAgICAKICAgICBoZWFwKCktPm1fY29k
ZUJsb2Nrcy5hZGQodGhpcyk7CkBAIC0yMDIxLDcgKzE5ODQsNyBAQCB2b2lkIENvZGVCbG9jazo6
ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUs
IFVubGluawogICAgICAgICAgICAgICAgIFVubGlua2VkU3RyaW5nSnVtcFRhYmxlOjpTdHJpbmdP
ZmZzZXRUYWJsZTo6aXRlcmF0b3IgZW5kID0gdW5saW5rZWRDb2RlQmxvY2stPnN0cmluZ1N3aXRj
aEp1bXBUYWJsZShpKS5vZmZzZXRUYWJsZS5lbmQoKTsKICAgICAgICAgICAgICAgICBmb3IgKDsg
cHRyICE9IGVuZDsgKytwdHIpIHsKICAgICAgICAgICAgICAgICAgICAgT2Zmc2V0TG9jYXRpb24g
b2Zmc2V0OwotICAgICAgICAgICAgICAgICAgICBvZmZzZXQuYnJhbmNoT2Zmc2V0ID0gcHRyLT52
YWx1ZTsKKyAgICAgICAgICAgICAgICAgICAgb2Zmc2V0LmJyYW5jaE9mZnNldCA9IHB0ci0+dmFs
dWUuYnJhbmNoT2Zmc2V0OwogICAgICAgICAgICAgICAgICAgICBtX3JhcmVEYXRhLT5tX3N0cmlu
Z1N3aXRjaEp1bXBUYWJsZXNbaV0ub2Zmc2V0VGFibGUuYWRkKHB0ci0+a2V5LCBvZmZzZXQpOwog
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KQEAgLTIwNjEsOSArMjAyNCw2IEBAIHZv
aWQgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93
bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAgLy8gQm9va2tlZXAgdGhlIHN0cm9uZ2x5IHJlZmVy
ZW5jZWQgbW9kdWxlIGVudmlyb25tZW50cy4KICAgICBIYXNoU2V0PEpTTW9kdWxlRW52aXJvbm1l
bnQqPiBzdHJvbmdseVJlZmVyZW5jZWRNb2R1bGVFbnZpcm9ubWVudHM7CiAKLSAgICAvLyBCb29r
a2VlcCB0aGUgbWVyZ2UgcG9pbnQgYnl0ZWNvZGUgb2Zmc2V0cy4KLSAgICBWZWN0b3I8c2l6ZV90
PiBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXRzOwotCiAgICAgUmVmQ291bnRlZEFycmF5PEluc3Ry
dWN0aW9uPiBpbnN0cnVjdGlvbnMoaW5zdHJ1Y3Rpb25Db3VudCk7CiAKICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyAhaW5zdHJ1Y3Rpb25SZWFkZXIuYXRFbmQoKTsgKSB7CkBAIC0yMzQ2LDE1ICsy
MzA2LDYgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhl
Y3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CiAKLSAgICAgICAgY2FzZSBvcF9zYXZlOiB7Ci0gICAgICAgICAgICB1bnNpZ25lZCBs
aXZlQ2FsbGVlTG9jYWxzSW5kZXggPSBwY1syXS51LmluZGV4OwotICAgICAgICAgICAgaW50IG9m
ZnNldCA9IHBjWzNdLnUub3BlcmFuZDsKLSAgICAgICAgICAgIGlmIChsaXZlQ2FsbGVlTG9jYWxz
SW5kZXggPj0gbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0cy5zaXplKCkpCi0gICAgICAgICAgICAg
ICAgbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0cy5yZXNpemUobGl2ZUNhbGxlZUxvY2Fsc0luZGV4
ICsgMSk7Ci0gICAgICAgICAgICBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXRzW2xpdmVDYWxsZWVM
b2NhbHNJbmRleF0gPSBpICsgb2Zmc2V0OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0K
LQogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTIz
NjYsMjAgKzIzMTcsNiBAQCB2b2lkIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBT
Y3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGluawogCiAgICAgbV9pbnN0cnVj
dGlvbnMgPSBXVEZNb3ZlKGluc3RydWN0aW9ucyk7CiAKLSAgICAvLyBQZXJmb3JtIGJ5dGVjb2Rl
IGxpdmVuZXNzIGFuYWx5c2lzIHRvIGRldGVybWluZSB3aGljaCBsb2NhbHMgYXJlIGxpdmUgYW5k
IHNob3VsZCBiZSByZXN1bWVkIHdoZW4gZXhlY3V0aW5nIG9wX3Jlc3VtZS4KLSAgICBpZiAodW5s
aW5rZWRDb2RlQmxvY2stPnBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9y
Qm9keU1vZGUpIHsKLSAgICAgICAgaWYgKHNpemVfdCBjb3VudCA9IG1lcmdlUG9pbnRCeXRlY29k
ZU9mZnNldHMuc2l6ZSgpKSB7Ci0gICAgICAgICAgICBjcmVhdGVSYXJlRGF0YUlmTmVjZXNzYXJ5
KCk7Ci0gICAgICAgICAgICBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMgbGl2ZW5lc3ModGhpcyk7
Ci0gICAgICAgICAgICBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkLmdyb3co
Y291bnQpOwotICAgICAgICAgICAgc2l6ZV90IGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9IDA7Ci0g
ICAgICAgICAgICBmb3IgKHNpemVfdCBieXRlY29kZU9mZnNldCA6IG1lcmdlUG9pbnRCeXRlY29k
ZU9mZnNldHMpIHsKLSAgICAgICAgICAgICAgICBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2Nh
bHNBdFlpZWxkW2xpdmVDYWxsZWVMb2NhbHNJbmRleF0gPSBsaXZlbmVzcy5nZXRMaXZlbmVzc0lu
Zm9BdEJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KTsKLSAgICAgICAgICAgICAgICArK2xp
dmVDYWxsZWVMb2NhbHNJbmRleDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQog
ICAgIC8vIFNldCBvcHRpbWl6YXRpb24gdGhyZXNob2xkcyBvbmx5IGFmdGVyIG1faW5zdHJ1Y3Rp
b25zIGlzIGluaXRpYWxpemVkLCBzaW5jZSB0aGVzZQogICAgIC8vIHJlbHkgb24gdGhlIGluc3Ry
dWN0aW9uIGNvdW50IChhbmQgYXJlIGluIHRoZW9yeSBwZXJtaXR0ZWQgdG8gYWxzbyBpbnNwZWN0
IHRoZQogICAgIC8vIGluc3RydWN0aW9uIHN0cmVhbSB0byBtb3JlIGFjY3VyYXRlIGFzc2VzcyB0
aGUgY29zdCBvZiB0aWVyLXVwKS4KQEAgLTMxNzksMjEgKzMxMTYsNyBAQCBIYW5kbGVySW5mbyog
Q29kZUJsb2NrOjpoYW5kbGVyRm9ySW5kZXgodW5zaWduZWQgaW5kZXgsIFJlcXVpcmVkSGFuZGxl
ciByZXF1aXJlZAogewogICAgIGlmICghbV9yYXJlRGF0YSkKICAgICAgICAgcmV0dXJuIDA7Ci0g
ICAgCi0gICAgVmVjdG9yPEhhbmRsZXJJbmZvPiYgZXhjZXB0aW9uSGFuZGxlcnMgPSBtX3JhcmVE
YXRhLT5tX2V4Y2VwdGlvbkhhbmRsZXJzOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZXhj
ZXB0aW9uSGFuZGxlcnMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgSGFuZGxlckluZm8mIGhhbmRs
ZXIgPSBleGNlcHRpb25IYW5kbGVyc1tpXTsKLSAgICAgICAgaWYgKChyZXF1aXJlZEhhbmRsZXIg
PT0gUmVxdWlyZWRIYW5kbGVyOjpDYXRjaEhhbmRsZXIpICYmICFoYW5kbGVyLmlzQ2F0Y2hIYW5k
bGVyKCkpCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAvLyBIYW5kbGVycyBhcmUg
b3JkZXJlZCBpbm5lcm1vc3QgZmlyc3QsIHNvIHRoZSBmaXJzdCBoYW5kbGVyIHdlIGVuY291bnRl
cgotICAgICAgICAvLyB0aGF0IGNvbnRhaW5zIHRoZSBzb3VyY2UgYWRkcmVzcyBpcyB0aGUgY29y
cmVjdCBoYW5kbGVyIHRvIHVzZS4KLSAgICAgICAgLy8gVGhpcyBpbmRleCB1c2VkIGlzIGVpdGhl
ciB0aGUgQnl0ZWNvZGVPZmZzZXQgb3IgYSBDYWxsU2l0ZUluZGV4LgotICAgICAgICBpZiAoaGFu
ZGxlci5zdGFydCA8PSBpbmRleCAmJiBoYW5kbGVyLmVuZCA+IGluZGV4KQotICAgICAgICAgICAg
cmV0dXJuICZoYW5kbGVyOwotICAgIH0KLQotICAgIHJldHVybiAwOworICAgIHJldHVybiBIYW5k
bGVySW5mbzo6aGFuZGxlckZvckluZGV4KG1fcmFyZURhdGEtPm1fZXhjZXB0aW9uSGFuZGxlcnMs
IGluZGV4LCByZXF1aXJlZEhhbmRsZXIpOwogfQogCiBDYWxsU2l0ZUluZGV4IENvZGVCbG9jazo6
bmV3RXhjZXB0aW9uSGFuZGxpbmdDYWxsU2l0ZUluZGV4KENhbGxTaXRlSW5kZXggb3JpZ2luYWxD
YWxsU2l0ZSkKQEAgLTMyODksNyArMzIxMiw2IEBAIHZvaWQgQ29kZUJsb2NrOjpzaHJpbmtUb0Zp
dChTaHJpbmtNb2RlIHNocmlua01vZGUpCiAgICAgICAgIGlmIChtX3JhcmVEYXRhKSB7CiAgICAg
ICAgICAgICBtX3JhcmVEYXRhLT5tX3N3aXRjaEp1bXBUYWJsZXMuc2hyaW5rVG9GaXQoKTsKICAg
ICAgICAgICAgIG1fcmFyZURhdGEtPm1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlcy5zaHJpbmtUb0Zp
dCgpOwotICAgICAgICAgICAgbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZC5z
aHJpbmtUb0ZpdCgpOwogICAgICAgICB9CiAgICAgfSAvLyBlbHNlIGRvbid0IHNocmluayB0aGVz
ZSwgYmVjYXVzZSB3ZSB3b3VsZCBoYXZlIGFscmVhZHkgcG9pbnRlZCBwb2ludGVycyBpbnRvIHRo
ZXNlIHRhYmxlcy4KIH0KQEAgLTQ1NjcsNCArNDQ4OSwxNiBAQCB2b2lkIENvZGVCbG9jazo6aml0
U29vbigpCiAgICAgbV9sbGludEV4ZWN1dGVDb3VudGVyLnNldE5ld1RocmVzaG9sZCh0aHJlc2hv
bGRGb3JKSVQoT3B0aW9uczo6dGhyZXNob2xkRm9ySklUU29vbigpKSwgdGhpcyk7CiB9CiAKK0J5
dGVjb2RlTGl2ZW5lc3NBbmFseXNpcyYgQ29kZUJsb2NrOjpsaXZlbmVzc0FuYWx5c2lzU2xvdygp
Cit7CisgICAgc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcz4gYW5hbHlz
aXMgPSBzdGQ6Om1ha2VfdW5pcXVlPEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcz4odGhpcyk7Cisg
ICAgeworICAgICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihtX2xvY2spOworICAgICAg
ICBpZiAoIW1fbGl2ZW5lc3NBbmFseXNpcykKKyAgICAgICAgICAgIG1fbGl2ZW5lc3NBbmFseXNp
cyA9IFdURk1vdmUoYW5hbHlzaXMpOworICAgICAgICByZXR1cm4gKm1fbGl2ZW5lc3NBbmFseXNp
czsKKyAgICB9Cit9CisKKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKaW5kZXggYjI4ODM2NTRiZTM0NWU3YWIwMTEwZWMxYjZm
NWQ2OTdhMThjMjdjMi4uMGI5MGI3ZWJkN2NiNmEzNmM1MTA4ZmNlMmM2OTZmNzljNTRjNWUwOCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaApAQCAtMzMsNyAr
MzMsNiBAQAogI2luY2x1ZGUgIkFycmF5UHJvZmlsZS5oIgogI2luY2x1ZGUgIkJ5VmFsSW5mby5o
IgogI2luY2x1ZGUgIkJ5dGVjb2RlQ29udmVudGlvbnMuaCIKLSNpbmNsdWRlICJCeXRlY29kZUxp
dmVuZXNzQW5hbHlzaXMuaCIKICNpbmNsdWRlICJDYWxsTGlua0luZm8uaCIKICNpbmNsdWRlICJD
YWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldC5oIgogI2luY2x1ZGUgIkNvZGVCbG9ja0hh
c2guaCIKQEAgLTc4LDYgKzc3LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKK2NsYXNzIEJ5dGVj
b2RlTGl2ZW5lc3NBbmFseXNpczsKIGNsYXNzIEV4ZWNTdGF0ZTsKIGNsYXNzIEpTTW9kdWxlRW52
aXJvbm1lbnQ7CiBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CkBAIC0yMjAsMTAgKzIyMCw2
IEBAIGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgICAgICByZXR1cm4gaW5k
ZXggPj0gbV9udW1WYXJzOwogICAgIH0KIAotICAgIGVudW0gY2xhc3MgUmVxdWlyZWRIYW5kbGVy
IHsKLSAgICAgICAgQ2F0Y2hIYW5kbGVyLAotICAgICAgICBBbnlIYW5kbGVyCi0gICAgfTsKICAg
ICBIYW5kbGVySW5mbyogaGFuZGxlckZvckJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2Rl
T2Zmc2V0LCBSZXF1aXJlZEhhbmRsZXIgPSBSZXF1aXJlZEhhbmRsZXI6OkFueUhhbmRsZXIpOwog
ICAgIEhhbmRsZXJJbmZvKiBoYW5kbGVyRm9ySW5kZXgodW5zaWduZWQsIFJlcXVpcmVkSGFuZGxl
ciA9IFJlcXVpcmVkSGFuZGxlcjo6QW55SGFuZGxlcik7CiAgICAgdm9pZCByZW1vdmVFeGNlcHRp
b25IYW5kbGVyRm9yQ2FsbFNpdGUoQ2FsbFNpdGVJbmRleCk7CkBAIC0yOTUsNiArMjkxLDggQEAg
Y2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxJbnN0cnVjdGlvbio+KHJldHVybkFkZHJlc3MpIC0gaW5zdHJ1Y3Rpb25zKCkuYmVnaW4o
KTsKICAgICB9CiAKKyAgICB0eXBlZGVmIFJlZkNvdW50ZWRBcnJheTxJbnN0cnVjdGlvbj4mIFVu
cGFja2VkSW5zdHJ1Y3Rpb25zOworCiAgICAgdW5zaWduZWQgbnVtYmVyT2ZJbnN0cnVjdGlvbnMo
KSBjb25zdCB7IHJldHVybiBtX2luc3RydWN0aW9ucy5zaXplKCk7IH0KICAgICBSZWZDb3VudGVk
QXJyYXk8SW5zdHJ1Y3Rpb24+JiBpbnN0cnVjdGlvbnMoKSB7IHJldHVybiBtX2luc3RydWN0aW9u
czsgfQogICAgIGNvbnN0IFJlZkNvdW50ZWRBcnJheTxJbnN0cnVjdGlvbj4mIGluc3RydWN0aW9u
cygpIGNvbnN0IHsgcmV0dXJuIG1faW5zdHJ1Y3Rpb25zOyB9CkBAIC01NDIsNyArNTQwLDcgQEAg
Y2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgfQogCiAgICAgV3JpdGVCYXJy
aWVyPFVua25vd24+JiBjb25zdGFudFJlZ2lzdGVyKGludCBpbmRleCkgeyByZXR1cm4gbV9jb25z
dGFudFJlZ2lzdGVyc1tpbmRleCAtIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4XTsgfQotICAg
IEFMV0FZU19JTkxJTkUgYm9vbCBpc0NvbnN0YW50UmVnaXN0ZXJJbmRleChpbnQgaW5kZXgpIGNv
bnN0IHsgcmV0dXJuIGluZGV4ID49IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4OyB9CisgICAg
c3RhdGljIEFMV0FZU19JTkxJTkUgYm9vbCBpc0NvbnN0YW50UmVnaXN0ZXJJbmRleChpbnQgaW5k
ZXgpIHsgcmV0dXJuIGluZGV4ID49IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4OyB9CiAgICAg
QUxXQVlTX0lOTElORSBKU1ZhbHVlIGdldENvbnN0YW50KGludCBpbmRleCkgY29uc3QgeyByZXR1
cm4gbV9jb25zdGFudFJlZ2lzdGVyc1tpbmRleCAtIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4
XS5nZXQoKTsgfQogICAgIEFMV0FZU19JTkxJTkUgU291cmNlQ29kZVJlcHJlc2VudGF0aW9uIGNv
bnN0YW50U291cmNlQ29kZVJlcHJlc2VudGF0aW9uKGludCBpbmRleCkgY29uc3QgeyByZXR1cm4g
bV9jb25zdGFudHNTb3VyY2VDb2RlUmVwcmVzZW50YXRpb25baW5kZXggLSBGaXJzdENvbnN0YW50
UmVnaXN0ZXJJbmRleF07IH0KIApAQCAtNTg4LDE0ICs1ODYsNyBAQCBjbGFzcyBDb2RlQmxvY2sg
OiBwdWJsaWMgSlNDZWxsIHsKICAgICAgICAgICAgIGlmICghIW1fbGl2ZW5lc3NBbmFseXNpcykK
ICAgICAgICAgICAgICAgICByZXR1cm4gKm1fbGl2ZW5lc3NBbmFseXNpczsKICAgICAgICAgfQot
ICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzPiBhbmFseXNp
cyA9Ci0gICAgICAgICAgICBzdGQ6Om1ha2VfdW5pcXVlPEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNp
cz4odGhpcyk7Ci0gICAgICAgIHsKLSAgICAgICAgICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9j
a2VyKG1fbG9jayk7Ci0gICAgICAgICAgICBpZiAoIW1fbGl2ZW5lc3NBbmFseXNpcykKLSAgICAg
ICAgICAgICAgICBtX2xpdmVuZXNzQW5hbHlzaXMgPSBXVEZNb3ZlKGFuYWx5c2lzKTsKLSAgICAg
ICAgICAgIHJldHVybiAqbV9saXZlbmVzc0FuYWx5c2lzOwotICAgICAgICB9CisgICAgICAgIHJl
dHVybiBsaXZlbmVzc0FuYWx5c2lzU2xvdygpOwogICAgIH0KICAgICAKICAgICB2b2lkIHZhbGlk
YXRlKCk7CkBAIC02MTYsMTggKzYwNyw2IEBAIGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBKU0Nl
bGwgewogICAgIFN0cmluZ0p1bXBUYWJsZSYgYWRkU3RyaW5nU3dpdGNoSnVtcFRhYmxlKCkgeyBj
cmVhdGVSYXJlRGF0YUlmTmVjZXNzYXJ5KCk7IG1fcmFyZURhdGEtPm1fc3RyaW5nU3dpdGNoSnVt
cFRhYmxlcy5hcHBlbmQoU3RyaW5nSnVtcFRhYmxlKCkpOyByZXR1cm4gbV9yYXJlRGF0YS0+bV9z
dHJpbmdTd2l0Y2hKdW1wVGFibGVzLmxhc3QoKTsgfQogICAgIFN0cmluZ0p1bXBUYWJsZSYgc3Ry
aW5nU3dpdGNoSnVtcFRhYmxlKGludCB0YWJsZUluZGV4KSB7IFJFTEVBU0VfQVNTRVJUKG1fcmFy
ZURhdGEpOyByZXR1cm4gbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzW3RhYmxl
SW5kZXhdOyB9CiAKLSAgICAvLyBMaXZlIGNhbGxlZSByZWdpc3RlcnMgYXQgeWllbGQgcG9pbnRz
LgotICAgIGNvbnN0IEZhc3RCaXRWZWN0b3ImIGxpdmVDYWxsZWVMb2NhbHNBdFlpZWxkKHVuc2ln
bmVkIGluZGV4KSBjb25zdAotICAgIHsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9yYXJlRGF0
YSk7Ci0gICAgICAgIHJldHVybiBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxk
W2luZGV4XTsKLSAgICB9Ci0gICAgRmFzdEJpdFZlY3RvciYgbGl2ZUNhbGxlZUxvY2Fsc0F0WWll
bGQodW5zaWduZWQgaW5kZXgpCi0gICAgewotICAgICAgICBSRUxFQVNFX0FTU0VSVChtX3JhcmVE
YXRhKTsKLSAgICAgICAgcmV0dXJuIG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWll
bGRbaW5kZXhdOwotICAgIH0KLQogICAgIEV2YWxDb2RlQ2FjaGUmIGV2YWxDb2RlQ2FjaGUoKSB7
IGNyZWF0ZVJhcmVEYXRhSWZOZWNlc3NhcnkoKTsgcmV0dXJuIG1fcmFyZURhdGEtPm1fZXZhbENv
ZGVDYWNoZTsgfQogCiAgICAgZW51bSBTaHJpbmtNb2RlIHsKQEAgLTg4Miw4ICs4NjEsNiBAQCBj
bGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAgICAgVmVjdG9yPFNpbXBsZUp1
bXBUYWJsZT4gbV9zd2l0Y2hKdW1wVGFibGVzOwogICAgICAgICBWZWN0b3I8U3RyaW5nSnVtcFRh
YmxlPiBtX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXM7CiAKLSAgICAgICAgVmVjdG9yPEZhc3RCaXRW
ZWN0b3I+IG1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQ7Ci0KICAgICAgICAgRXZhbENvZGVDYWNo
ZSBtX2V2YWxDb2RlQ2FjaGU7CiAgICAgfTsKIApAQCAtOTE4LDYgKzg5NSw4IEBAIGNsYXNzIENv
ZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBD
b2RlQmxvY2tTZXQ7CisKKyAgICBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMmIGxpdmVuZXNzQW5h
bHlzaXNTbG93KCk7CiAgICAgCiAgICAgQ29kZUJsb2NrKiBzcGVjaWFsT1NSRW50cnlCbG9ja09y
TnVsbCgpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0hhbmRsZXJJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSGFuZGxlcklu
Zm8uaAppbmRleCBhY2RkYTA4ZWQxNGNiZjlmMDk3MTI3NTA0MDVhNDE3NDFmNzZhMjEzLi5iYjY5
MmI5ZGMxNzBiMDlmNDNjZTg2N2Y5NDFmNzUzNWFjZmVjZjYzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSGFuZGxlckluZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvSGFuZGxlckluZm8uaApAQCAtMzcsNiArMzcsMTEgQEAgZW51bSBj
bGFzcyBIYW5kbGVyVHlwZSB7CiAgICAgU3ludGhlc2l6ZWRGaW5hbGx5ID0gMwogfTsKIAorZW51
bSBjbGFzcyBSZXF1aXJlZEhhbmRsZXIgeworICAgIENhdGNoSGFuZGxlciwKKyAgICBBbnlIYW5k
bGVyCit9OworCiBzdHJ1Y3QgSGFuZGxlckluZm9CYXNlIHsKICAgICBIYW5kbGVyVHlwZSB0eXBl
KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8SGFuZGxlclR5cGU+KHR5cGVCaXRzKTsgfQog
ICAgIHZvaWQgc2V0VHlwZShIYW5kbGVyVHlwZSB0eXBlKSB7IHR5cGVCaXRzID0gc3RhdGljX2Nh
c3Q8dWludDMyX3Q+KHR5cGUpOyB9CkBAIC01OCw2ICs2MywyMyBAQCBzdHJ1Y3QgSGFuZGxlcklu
Zm9CYXNlIHsKIAogICAgIGJvb2wgaXNDYXRjaEhhbmRsZXIoKSBjb25zdCB7IHJldHVybiB0eXBl
KCkgPT0gSGFuZGxlclR5cGU6OkNhdGNoOyB9CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIYW5k
bGVyPgorICAgIHN0YXRpYyBIYW5kbGVyKiBoYW5kbGVyRm9ySW5kZXgoVmVjdG9yPEhhbmRsZXI+
JiBleGVwdGlvbkhhbmRsZXJzLCB1bnNpZ25lZCBpbmRleCwgUmVxdWlyZWRIYW5kbGVyIHJlcXVp
cmVkSGFuZGxlcikKKyAgICB7CisgICAgICAgIGZvciAoSGFuZGxlciYgaGFuZGxlciA6IGV4ZXB0
aW9uSGFuZGxlcnMpIHsKKyAgICAgICAgICAgIGlmICgocmVxdWlyZWRIYW5kbGVyID09IFJlcXVp
cmVkSGFuZGxlcjo6Q2F0Y2hIYW5kbGVyKSAmJiAhaGFuZGxlci5pc0NhdGNoSGFuZGxlcigpKQor
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICAvLyBIYW5kbGVycyBhcmUg
b3JkZXJlZCBpbm5lcm1vc3QgZmlyc3QsIHNvIHRoZSBmaXJzdCBoYW5kbGVyIHdlIGVuY291bnRl
cgorICAgICAgICAgICAgLy8gdGhhdCBjb250YWlucyB0aGUgc291cmNlIGFkZHJlc3MgaXMgdGhl
IGNvcnJlY3QgaGFuZGxlciB0byB1c2UuCisgICAgICAgICAgICAvLyBUaGlzIGluZGV4IHVzZWQg
aXMgZWl0aGVyIHRoZSBCeXRlY29kZU9mZnNldCBvciBhIENhbGxTaXRlSW5kZXguCisgICAgICAg
ICAgICBpZiAoaGFuZGxlci5zdGFydCA8PSBpbmRleCAmJiBoYW5kbGVyLmVuZCA+IGluZGV4KQor
ICAgICAgICAgICAgICAgIHJldHVybiAmaGFuZGxlcjsKKyAgICAgICAgfQorCisgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgIH0KKwogICAgIHVpbnQzMl90IHN0YXJ0OwogICAgIHVpbnQzMl90
IGVuZDsKICAgICB1aW50MzJfdCB0YXJnZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHMuY3BwCmluZGV4IGUyY2IwMDA0ODM3OTRi
YTkyZDUxMGRjZjVmYTk5NDg4NWEyM2RjM2QuLmNhYjlmYmRjNGU4MzlmYmI4OWE2OTMzNTYyMjJk
YjAwZTEwMjIzY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Q
cmVjaXNlSnVtcFRhcmdldHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9QcmVjaXNlSnVtcFRhcmdldHMuY3BwCkBAIC0yNiwxNCArMjYsMTUgQEAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJQcmVjaXNlSnVtcFRhcmdldHMuaCIKIAorI2luY2x1ZGUgIklu
dGVycHJldGVySW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKIAogbmFtZXNwYWNl
IEpTQyB7CiAKLXRlbXBsYXRlIDxzaXplX3QgdmVjdG9yU2l6ZT4KLXN0YXRpYyB2b2lkIGdldEp1
bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEludGVycHJl
dGVyKiBpbnRlcnByZXRlciwgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25l
ZCBieXRlY29kZU9mZnNldCwgVmVjdG9yPHVuc2lnbmVkLCB2ZWN0b3JTaXplPiYgb3V0KQordGVt
cGxhdGUgPHNpemVfdCB2ZWN0b3JTaXplLCB0eXBlbmFtZSBCbG9jaywgdHlwZW5hbWUgSW5zdHJ1
Y3Rpb24+CitzdGF0aWMgdm9pZCBnZXRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KEJsb2Nr
KiBjb2RlQmxvY2ssIEludGVycHJldGVyKiBpbnRlcnByZXRlciwgSW5zdHJ1Y3Rpb24qIGluc3Ry
dWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgVmVjdG9yPHVuc2lnbmVkLCB2
ZWN0b3JTaXplPiYgb3V0KQogewotICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0ZXIt
PmdldE9wY29kZUlEKGluc3RydWN0aW9uc0JlZ2luW2J5dGVjb2RlT2Zmc2V0XS51Lm9wY29kZSk7
CisgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoaW5zdHJ1
Y3Rpb25zQmVnaW5bYnl0ZWNvZGVPZmZzZXRdKTsKICAgICBJbnN0cnVjdGlvbiogY3VycmVudCA9
IGluc3RydWN0aW9uc0JlZ2luICsgYnl0ZWNvZGVPZmZzZXQ7CiAgICAgc3dpdGNoIChvcGNvZGVJ
RCkgewogICAgIGNhc2Ugb3Bfam1wOgpAQCAtNTQsMjEgKzU1LDI1IEBAIHN0YXRpYyB2b2lkIGdl
dEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEludGVy
cHJldGVyKiBpCiAgICAgY2FzZSBvcF9qbmxlc3NlcToKICAgICBjYXNlIG9wX2puZ3JlYXRlcjoK
ICAgICBjYXNlIG9wX2puZ3JlYXRlcmVxOgotICAgIGNhc2Ugb3Bfc2F2ZTogLy8gVGhlIGp1bXAg
b2Ygb3Bfc2F2ZSBpcyBwdXJlbHkgZm9yIGNhbGN1bGF0aW5nIGxpdmVuZXNzLgogICAgICAgICBv
dXQuYXBwZW5kKGJ5dGVjb2RlT2Zmc2V0ICsgY3VycmVudFszXS51Lm9wZXJhbmQpOwogICAgICAg
ICBicmVhazsKKyAgICBjYXNlIG9wX3NhdmU6IHsKKyAgICAgICAgLy8gVGhlIGp1bXAgb2Ygb3Bf
c2F2ZSB1bmRlciBFeHRyYWN0R2VuZXJhdG9yTGl2ZUNhbGxlZUxvY2FscyBtb2RlIGlzIHB1cmVs
eSBmb3IgY2FsY3VsYXRpbmcgbGl2ZW5lc3MuCisgICAgICAgIG91dC5hcHBlbmQoYnl0ZWNvZGVP
ZmZzZXQgKyBjdXJyZW50WzNdLnUub3BlcmFuZCk7CisgICAgICAgIGJyZWFrOworICAgIH0KICAg
ICBjYXNlIG9wX3N3aXRjaF9pbW06CiAgICAgY2FzZSBvcF9zd2l0Y2hfY2hhcjogewotICAgICAg
ICBTaW1wbGVKdW1wVGFibGUmIHRhYmxlID0gY29kZUJsb2NrLT5zd2l0Y2hKdW1wVGFibGUoY3Vy
cmVudFsxXS51Lm9wZXJhbmQpOworICAgICAgICBhdXRvJiB0YWJsZSA9IGNvZGVCbG9jay0+c3dp
dGNoSnVtcFRhYmxlKGN1cnJlbnRbMV0udS5vcGVyYW5kKTsKICAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gdGFibGUuYnJhbmNoT2Zmc2V0cy5zaXplKCk7IGktLTspCiAgICAgICAgICAgICBvdXQu
YXBwZW5kKGJ5dGVjb2RlT2Zmc2V0ICsgdGFibGUuYnJhbmNoT2Zmc2V0c1tpXSk7CiAgICAgICAg
IG91dC5hcHBlbmQoYnl0ZWNvZGVPZmZzZXQgKyBjdXJyZW50WzJdLnUub3BlcmFuZCk7CiAgICAg
ICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIG9wX3N3aXRjaF9zdHJpbmc6IHsKLSAgICAgICAg
U3RyaW5nSnVtcFRhYmxlJiB0YWJsZSA9IGNvZGVCbG9jay0+c3RyaW5nU3dpdGNoSnVtcFRhYmxl
KGN1cnJlbnRbMV0udS5vcGVyYW5kKTsKLSAgICAgICAgU3RyaW5nSnVtcFRhYmxlOjpTdHJpbmdP
ZmZzZXRUYWJsZTo6aXRlcmF0b3IgaXRlciA9IHRhYmxlLm9mZnNldFRhYmxlLmJlZ2luKCk7Ci0g
ICAgICAgIFN0cmluZ0p1bXBUYWJsZTo6U3RyaW5nT2Zmc2V0VGFibGU6Oml0ZXJhdG9yIGVuZCA9
IHRhYmxlLm9mZnNldFRhYmxlLmVuZCgpOworICAgICAgICBhdXRvJiB0YWJsZSA9IGNvZGVCbG9j
ay0+c3RyaW5nU3dpdGNoSnVtcFRhYmxlKGN1cnJlbnRbMV0udS5vcGVyYW5kKTsKKyAgICAgICAg
YXV0byBpdGVyID0gdGFibGUub2Zmc2V0VGFibGUuYmVnaW4oKTsKKyAgICAgICAgYXV0byBlbmQg
PSB0YWJsZS5vZmZzZXRUYWJsZS5lbmQoKTsKICAgICAgICAgZm9yICg7IGl0ZXIgIT0gZW5kOyAr
K2l0ZXIpCiAgICAgICAgICAgICBvdXQuYXBwZW5kKGJ5dGVjb2RlT2Zmc2V0ICsgaXRlci0+dmFs
dWUuYnJhbmNoT2Zmc2V0KTsKICAgICAgICAgb3V0LmFwcGVuZChieXRlY29kZU9mZnNldCArIGN1
cnJlbnRbMl0udS5vcGVyYW5kKTsKQEAgLTgyLDEzICs4NywxOSBAQCBzdGF0aWMgdm9pZCBnZXRK
dW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBJbnRlcnBy
ZXRlciogaQogICAgIH0KIH0KIAotdm9pZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKENvZGVC
bG9jayogY29kZUJsb2NrLCBWZWN0b3I8dW5zaWduZWQsIDMyPiYgb3V0KQorZW51bSBjbGFzcyBD
b21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzTW9kZSB7CisgICAgRm9sbG93Q29kZUJsb2NrQ2xhaW0s
CisgICAgRm9yY2VDb21wdXRlLAorfTsKKwordGVtcGxhdGU8Q29tcHV0ZVByZWNpc2VKdW1wVGFy
Z2V0c01vZGUgTW9kZSwgdHlwZW5hbWUgQmxvY2ssIHR5cGVuYW1lIEluc3RydWN0aW9uLCBzaXpl
X3QgdmVjdG9yU2l6ZT4KK3ZvaWQgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0c0ludGVybmFsKEJs
b2NrKiBjb2RlQmxvY2ssIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQg
aW5zdHJ1Y3Rpb25Db3VudCwgVmVjdG9yPHVuc2lnbmVkLCB2ZWN0b3JTaXplPiYgb3V0KQogewog
ICAgIEFTU0VSVChvdXQuaXNFbXB0eSgpKTsKICAgICAKICAgICAvLyBXZSB3aWxsIGRlcml2ZSBh
IHN1cGVyc2V0IG9mIHRoZSBqdW1wIHRhcmdldHMgdGhhdCB0aGUgY29kZSBibG9jayB0aGlua3Mg
aXQgaGFzLgogICAgIC8vIFNvLCBpZiB0aGUgY29kZSBibG9jayBjbGFpbXMgdGhlcmUgYXJlIG5v
bmUsIHRoZW4gd2UgYXJlIGRvbmUuCi0gICAgaWYgKCFjb2RlQmxvY2stPm51bWJlck9mSnVtcFRh
cmdldHMoKSkKKyAgICBpZiAoTW9kZSA9PSBDb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzTW9kZTo6
Rm9sbG93Q29kZUJsb2NrQ2xhaW0gJiYgIWNvZGVCbG9jay0+bnVtYmVyT2ZKdW1wVGFyZ2V0cygp
KQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgZm9yICh1bnNpZ25lZCBpID0gY29kZUJsb2Nr
LT5udW1iZXJPZkV4Y2VwdGlvbkhhbmRsZXJzKCk7IGktLTspIHsKQEAgLTk4LDEwICsxMDksOCBA
QCB2b2lkIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFZl
Y3Rvcjx1bnNpZ25lZCwgMzI+JiBvdXQpCiAgICAgfQogCiAgICAgSW50ZXJwcmV0ZXIqIGludGVy
cHJldGVyID0gY29kZUJsb2NrLT52bSgpLT5pbnRlcnByZXRlcjsKLSAgICBJbnN0cnVjdGlvbiog
aW5zdHJ1Y3Rpb25zQmVnaW4gPSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCk7Ci0g
ICAgdW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCA9IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCku
c2l6ZSgpOwogICAgIGZvciAodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQgPSAwOyBieXRlY29kZU9m
ZnNldCA8IGluc3RydWN0aW9uQ291bnQ7KSB7Ci0gICAgICAgIE9wY29kZUlEIG9wY29kZUlEID0g
aW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGluc3RydWN0aW9uc0JlZ2luW2J5dGVjb2RlT2Zmc2V0
XS51Lm9wY29kZSk7CisgICAgICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0ZXItPmdl
dE9wY29kZUlEKGluc3RydWN0aW9uc0JlZ2luW2J5dGVjb2RlT2Zmc2V0XSk7CiAgICAgICAgIGdl
dEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoY29kZUJsb2NrLCBpbnRlcnByZXRlciwgaW5z
dHJ1Y3Rpb25zQmVnaW4sIGJ5dGVjb2RlT2Zmc2V0LCBvdXQpOwogICAgICAgICBieXRlY29kZU9m
ZnNldCArPSBvcGNvZGVMZW5ndGhzW29wY29kZUlEXTsKICAgICB9CkBAIC0xMjMsMTEgKzEzMiwz
NCBAQCB2b2lkIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMoQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IFZlY3Rvcjx1bnNpZ25lZCwgMzI+JiBvdXQpCiAgICAgb3V0LnNocmlua1RvRml0KCk7CiB9CiAK
LXZvaWQgZmluZEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBWZWN0b3I8dW5zaWduZWQsIDE+JiBvdXQpCit2
b2lkIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFZlY3Rv
cjx1bnNpZ25lZCwgMzI+JiBvdXQpCiB7Ci0gICAgSW50ZXJwcmV0ZXIqIGludGVycHJldGVyID0g
Y29kZUJsb2NrLT52bSgpLT5pbnRlcnByZXRlcjsKLSAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rp
b25zQmVnaW4gPSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCk7Ci0gICAgZ2V0SnVt
cFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChjb2RlQmxvY2ssIGludGVycHJldGVyLCBpbnN0cnVj
dGlvbnNCZWdpbiwgYnl0ZWNvZGVPZmZzZXQsIG91dCk7CisgICAgY29tcHV0ZVByZWNpc2VKdW1w
VGFyZ2V0c0ludGVybmFsPENvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHNNb2RlOjpGb2xsb3dDb2Rl
QmxvY2tDbGFpbT4oY29kZUJsb2NrLCBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCks
IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpLCBvdXQpOworfQorCit2b2lkIGNvbXB1
dGVQcmVjaXNlSnVtcFRhcmdldHMoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEluc3RydWN0aW9uKiBp
bnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCwgVmVjdG9yPHVuc2ln
bmVkLCAzMj4mIG91dCkKK3sKKyAgICBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzSW50ZXJuYWw8
Q29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0c01vZGU6OkZvbGxvd0NvZGVCbG9ja0NsYWltPihjb2Rl
QmxvY2ssIGluc3RydWN0aW9uc0JlZ2luLCBpbnN0cnVjdGlvbkNvdW50LCBvdXQpOworfQorCit2
b2lkIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMoVW5saW5rZWRDb2RlQmxvY2sqIGNvZGVCbG9j
aywgVW5saW5rZWRJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGluc3Ry
dWN0aW9uQ291bnQsIFZlY3Rvcjx1bnNpZ25lZCwgMzI+JiBvdXQpCit7CisgICAgY29tcHV0ZVBy
ZWNpc2VKdW1wVGFyZ2V0c0ludGVybmFsPENvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHNNb2RlOjpG
b2xsb3dDb2RlQmxvY2tDbGFpbT4oY29kZUJsb2NrLCBpbnN0cnVjdGlvbnNCZWdpbiwgaW5zdHJ1
Y3Rpb25Db3VudCwgb3V0KTsKK30KKwordm9pZCByZWNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMo
VW5saW5rZWRDb2RlQmxvY2sqIGNvZGVCbG9jaywgVW5saW5rZWRJbnN0cnVjdGlvbiogaW5zdHJ1
Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQsIFZlY3Rvcjx1bnNpZ25lZD4m
IG91dCkKK3sKKyAgICBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzSW50ZXJuYWw8Q29tcHV0ZVBy
ZWNpc2VKdW1wVGFyZ2V0c01vZGU6OkZvcmNlQ29tcHV0ZT4oY29kZUJsb2NrLCBpbnN0cnVjdGlv
bnNCZWdpbiwgaW5zdHJ1Y3Rpb25Db3VudCwgb3V0KTsKK30KKwordm9pZCBmaW5kSnVtcFRhcmdl
dHNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgSW5zdHJ1Y3Rpb24qIGlu
c3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgVmVjdG9yPHVuc2lnbmVk
LCAxPiYgb3V0KQoreworICAgIGdldEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoY29kZUJs
b2NrLCBjb2RlQmxvY2stPnZtKCktPmludGVycHJldGVyLCBpbnN0cnVjdGlvbnNCZWdpbiwgYnl0
ZWNvZGVPZmZzZXQsIG91dCk7Cit9CisKK3ZvaWQgZmluZEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVP
ZmZzZXQoVW5saW5rZWRDb2RlQmxvY2sqIGNvZGVCbG9jaywgVW5saW5rZWRJbnN0cnVjdGlvbiog
aW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBWZWN0b3I8dW5zaWdu
ZWQsIDE+JiBvdXQpCit7CisgICAgZ2V0SnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChjb2Rl
QmxvY2ssIGNvZGVCbG9jay0+dm0oKS0+aW50ZXJwcmV0ZXIsIGluc3RydWN0aW9uc0JlZ2luLCBi
eXRlY29kZU9mZnNldCwgb3V0KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmgKaW5kZXgg
ODUyNDEzZDc3Yjc5ODk4NGIyN2NlZjBlZDYyYmM5NGM2ODllMjEyYy4uZGI5YmQzODNiOGFjNDU1
N2QzMjY3MTdiNzJkNGIwZjUwYjFkMTgzOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHMuaApAQCAtMzAsMTAgKzMwLDE4IEBACiAK
IG5hbWVzcGFjZSBKU0MgewogCitjbGFzcyBVbmxpbmtlZENvZGVCbG9jazsKK3N0cnVjdCBVbmxp
bmtlZEluc3RydWN0aW9uOworCiAvLyBSZXR1cm4gYSBzb3J0ZWQgbGlzdCBvZiBieXRlY29kZSBp
bmRleCB0aGF0IGFyZSB0aGUgZGVzdGluYXRpb24gb2YgYSBqdW1wLgogdm9pZCBjb21wdXRlUHJl
Y2lzZUp1bXBUYXJnZXRzKENvZGVCbG9jayosIFZlY3Rvcjx1bnNpZ25lZCwgMzI+JiBvdXQpOwor
dm9pZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKENvZGVCbG9jayosIEluc3RydWN0aW9uKiBp
bnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCwgVmVjdG9yPHVuc2ln
bmVkLCAzMj4mIG91dCk7Cit2b2lkIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMoVW5saW5rZWRD
b2RlQmxvY2sqLCBVbmxpbmtlZEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWdu
ZWQgaW5zdHJ1Y3Rpb25Db3VudCwgVmVjdG9yPHVuc2lnbmVkLCAzMj4mIG91dCk7CisKK3ZvaWQg
cmVjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKFVubGlua2VkQ29kZUJsb2NrKiwgVW5saW5rZWRJ
bnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQs
IFZlY3Rvcjx1bnNpZ25lZD4mIG91dCk7CiAKLXZvaWQgZmluZEp1bXBUYXJnZXRzRm9yQnl0ZWNv
ZGVPZmZzZXQoQ29kZUJsb2NrKiwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIFZlY3Rvcjx1bnNp
Z25lZCwgMT4mIG91dCk7Cit2b2lkIGZpbmRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KENv
ZGVCbG9jayosIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgYnl0ZWNv
ZGVPZmZzZXQsIFZlY3Rvcjx1bnNpZ25lZCwgMT4mIG91dCk7Cit2b2lkIGZpbmRKdW1wVGFyZ2V0
c0ZvckJ5dGVjb2RlT2Zmc2V0KFVubGlua2VkQ29kZUJsb2NrKiwgVW5saW5rZWRJbnN0cnVjdGlv
biogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBWZWN0b3I8dW5z
aWduZWQsIDE+JiBvdXQpOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKaW5kZXggMjk5
YWM2ODBkOWExZDFlNWE5MGQ5ZmFlMWEyMmY4NDRlMjkyZTNlMi4uN2ZlNGE4ZDc4NTQyZWQ4MjJj
OGQ4NmU5ZDgzYjEwNTgyYTg0NTc4YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5j
bHVkZSAiVW5saW5rZWRDb2RlQmxvY2suaCIKIAogI2luY2x1ZGUgIkJ5dGVjb2RlR2VuZXJhdG9y
LmgiCisjaW5jbHVkZSAiQnl0ZWNvZGVJbnNlcnRpb25TZXQuaCIKICNpbmNsdWRlICJDbGFzc0lu
Zm8uaCIKICNpbmNsdWRlICJDb2RlQ2FjaGUuaCIKICNpbmNsdWRlICJFeGVjdXRhYmxlLmgiCkBA
IC0zNiw2ICszNyw3IEBACiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIKICNpbmNsdWRlICJKU0NJbmxp
bmVzLmgiCiAjaW5jbHVkZSAiUGFyc2VyLmgiCisjaW5jbHVkZSAiUHJlY2lzZUp1bXBUYXJnZXRz
LmgiCiAjaW5jbHVkZSAiU291cmNlUHJvdmlkZXIuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIK
ICNpbmNsdWRlICJTeW1ib2xUYWJsZS5oIgpAQCAtMzY2LDUgKzM2OCwxMTEgQEAgY29uc3QgVW5s
aW5rZWRJbnN0cnVjdGlvblN0cmVhbSYgVW5saW5rZWRDb2RlQmxvY2s6Omluc3RydWN0aW9ucygp
IGNvbnN0CiAgICAgcmV0dXJuICptX3VubGlua2VkSW5zdHJ1Y3Rpb25zOwogfQogCitVbmxpbmtl
ZEhhbmRsZXJJbmZvKiBVbmxpbmtlZENvZGVCbG9jazo6aGFuZGxlckZvckJ5dGVjb2RlT2Zmc2V0
KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBSZXF1aXJlZEhhbmRsZXIgcmVxdWlyZWRIYW5kbGVy
KQoreworICAgIHJldHVybiBoYW5kbGVyRm9ySW5kZXgoYnl0ZWNvZGVPZmZzZXQsIHJlcXVpcmVk
SGFuZGxlcik7Cit9CisKK1VubGlua2VkSGFuZGxlckluZm8qIFVubGlua2VkQ29kZUJsb2NrOjpo
YW5kbGVyRm9ySW5kZXgodW5zaWduZWQgaW5kZXgsIFJlcXVpcmVkSGFuZGxlciByZXF1aXJlZEhh
bmRsZXIpCit7CisgICAgaWYgKCFtX3JhcmVEYXRhKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICByZXR1cm4gVW5saW5rZWRIYW5kbGVySW5mbzo6aGFuZGxlckZvckluZGV4KG1fcmFyZURh
dGEtPm1fZXhjZXB0aW9uSGFuZGxlcnMsIGluZGV4LCByZXF1aXJlZEhhbmRsZXIpOworfQorCit2
b2lkIFVubGlua2VkQ29kZUJsb2NrOjphcHBseU1vZGlmaWNhdGlvbihCeXRlY29kZUluc2VydGlv
blNldCYgaW5zZXJ0aW9uU2V0KQoreworICAgIC8vIEJlZm9yZSBhcHBseWluZyB0aGUgY2hhbmdl
cywgd2UgYWRqdXN0IHRoZSBqdW1wcyBiYXNlZCBvbiB0aGUgb3JpZ2luYWwgYnl0ZWNvZGUgb2Zm
c2V0LCB0aGUgb2Zmc2V0IHRvIHRoZSBqdW1wIHRhcmdldCwgYW5kCisgICAgLy8gdGhlIGluc2Vy
dGlvbiBpbmZvcm1hdGlvbi4KKworICAgIEJ5dGVjb2RlR3JhcGg8VW5saW5rZWRDb2RlQmxvY2s+
JiBncmFwaCA9IGluc2VydGlvblNldC5ncmFwaCgpOworICAgIFVubGlua2VkSW5zdHJ1Y3Rpb24q
IGluc3RydWN0aW9uc0JlZ2luID0gZ3JhcGguaW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsKKyAgICBm
b3IgKGludCBieXRlY29kZU9mZnNldCA9IDAsIGluc3RydWN0aW9uQ291bnQgPSBncmFwaC5pbnN0
cnVjdGlvbnMoKS5zaXplKCk7IGJ5dGVjb2RlT2Zmc2V0IDwgaW5zdHJ1Y3Rpb25Db3VudDspIHsK
KyAgICAgICAgVW5saW5rZWRJbnN0cnVjdGlvbiogY3VycmVudCA9IGluc3RydWN0aW9uc0JlZ2lu
ICsgYnl0ZWNvZGVPZmZzZXQ7CisgICAgICAgIE9wY29kZUlEIG9wY29kZUlEID0gY3VycmVudFsw
XS51Lm9wY29kZTsKKworICAgICAgICBzd2l0Y2ggKG9wY29kZUlEKSB7CisgICAgICAgIGNhc2Ug
b3Bfam1wOgorICAgICAgICAgICAgY3VycmVudFsxXS51Lm9wZXJhbmQgPSBpbnNlcnRpb25TZXQu
YWRqdXN0T2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0LCBieXRlY29kZU9mZnNldCArIGN1cnJlbnRbMV0u
dS5vcGVyYW5kKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2Ugb3BfanRydWU6
CisgICAgICAgIGNhc2Ugb3BfamZhbHNlOgorICAgICAgICBjYXNlIG9wX2plcV9udWxsOgorICAg
ICAgICBjYXNlIG9wX2puZXFfbnVsbDoKKyAgICAgICAgICAgIGN1cnJlbnRbMl0udS5vcGVyYW5k
ID0gaW5zZXJ0aW9uU2V0LmFkanVzdE9mZnNldChieXRlY29kZU9mZnNldCwgYnl0ZWNvZGVPZmZz
ZXQgKyBjdXJyZW50WzJdLnUub3BlcmFuZCk7CisgICAgICAgICAgICBicmVhazsKKworICAgICAg
ICBjYXNlIG9wX2puZXFfcHRyOgorICAgICAgICBjYXNlIG9wX2psZXNzOgorICAgICAgICBjYXNl
IG9wX2psZXNzZXE6CisgICAgICAgIGNhc2Ugb3BfamdyZWF0ZXI6CisgICAgICAgIGNhc2Ugb3Bf
amdyZWF0ZXJlcToKKyAgICAgICAgY2FzZSBvcF9qbmxlc3M6CisgICAgICAgIGNhc2Ugb3Bfam5s
ZXNzZXE6CisgICAgICAgIGNhc2Ugb3Bfam5ncmVhdGVyOgorICAgICAgICBjYXNlIG9wX2puZ3Jl
YXRlcmVxOgorICAgICAgICAgICAgY3VycmVudFszXS51Lm9wZXJhbmQgPSBpbnNlcnRpb25TZXQu
YWRqdXN0T2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0LCBieXRlY29kZU9mZnNldCArIGN1cnJlbnRbM10u
dS5vcGVyYW5kKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2Ugb3Bfc3dpdGNo
X2ltbToKKyAgICAgICAgY2FzZSBvcF9zd2l0Y2hfY2hhcjogeworICAgICAgICAgICAgYXV0byYg
dGFibGUgPSBzd2l0Y2hKdW1wVGFibGUoY3VycmVudFsxXS51Lm9wZXJhbmQpOworICAgICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gdGFibGUuYnJhbmNoT2Zmc2V0cy5zaXplKCk7IGktLTspCisg
ICAgICAgICAgICAgICAgdGFibGUuYnJhbmNoT2Zmc2V0c1tpXSA9IGluc2VydGlvblNldC5hZGp1
c3RPZmZzZXQoYnl0ZWNvZGVPZmZzZXQsIGJ5dGVjb2RlT2Zmc2V0ICsgdGFibGUuYnJhbmNoT2Zm
c2V0c1tpXSk7CisgICAgICAgICAgICBjdXJyZW50WzJdLnUub3BlcmFuZCA9IGluc2VydGlvblNl
dC5hZGp1c3RPZmZzZXQoYnl0ZWNvZGVPZmZzZXQsIGJ5dGVjb2RlT2Zmc2V0ICsgY3VycmVudFsy
XS51Lm9wZXJhbmQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBj
YXNlIG9wX3N3aXRjaF9zdHJpbmc6IHsKKyAgICAgICAgICAgIGF1dG8mIHRhYmxlID0gc3RyaW5n
U3dpdGNoSnVtcFRhYmxlKGN1cnJlbnRbMV0udS5vcGVyYW5kKTsKKyAgICAgICAgICAgIGF1dG8g
aXRlciA9IHRhYmxlLm9mZnNldFRhYmxlLmJlZ2luKCk7CisgICAgICAgICAgICBhdXRvIGVuZCA9
IHRhYmxlLm9mZnNldFRhYmxlLmVuZCgpOworICAgICAgICAgICAgZm9yICg7IGl0ZXIgIT0gZW5k
OyArK2l0ZXIpCisgICAgICAgICAgICAgICAgaXRlci0+dmFsdWUuYnJhbmNoT2Zmc2V0ID0gaW5z
ZXJ0aW9uU2V0LmFkanVzdE9mZnNldChieXRlY29kZU9mZnNldCwgYnl0ZWNvZGVPZmZzZXQgKyBp
dGVyLT52YWx1ZS5icmFuY2hPZmZzZXQpOworICAgICAgICAgICAgY3VycmVudFsyXS51Lm9wZXJh
bmQgPSBpbnNlcnRpb25TZXQuYWRqdXN0T2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0LCBieXRlY29kZU9m
ZnNldCArIGN1cnJlbnRbMl0udS5vcGVyYW5kKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisK
KyAgICAgICAgYnl0ZWNvZGVPZmZzZXQgKz0gb3Bjb2RlTGVuZ3RoKG9wY29kZUlEKTsKKyAgICB9
CisKKyAgICAvLyBUaGVuLCBleGNlcHRpb24gaGFuZGxlcnMgc2hvdWxkIGJlIGFkanVzdGVkLgor
ICAgIGlmIChtX3JhcmVEYXRhKSB7CisgICAgICAgIGZvciAoVW5saW5rZWRIYW5kbGVySW5mbyYg
aGFuZGxlciA6IG1fcmFyZURhdGEtPm1fZXhjZXB0aW9uSGFuZGxlcnMpIHsKKyAgICAgICAgICAg
IGhhbmRsZXIudGFyZ2V0ID0gaW5zZXJ0aW9uU2V0LmFkanVzdE9mZnNldCgwLCBoYW5kbGVyLnRh
cmdldCk7CisgICAgICAgICAgICBoYW5kbGVyLnN0YXJ0ID0gaW5zZXJ0aW9uU2V0LmFkanVzdE9m
ZnNldCgwLCBoYW5kbGVyLnN0YXJ0KTsKKyAgICAgICAgICAgIGhhbmRsZXIuZW5kID0gaW5zZXJ0
aW9uU2V0LmFkanVzdE9mZnNldCgwLCBoYW5kbGVyLmVuZCk7CisgICAgICAgIH0KKworICAgICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fcmFyZURhdGEtPm1fb3BQcm9maWxlQ29udHJvbEZs
b3dCeXRlY29kZU9mZnNldHMuc2l6ZSgpOyArK2kpCisgICAgICAgICAgICBtX3JhcmVEYXRhLT5t
X29wUHJvZmlsZUNvbnRyb2xGbG93Qnl0ZWNvZGVPZmZzZXRzW2ldID0gaW5zZXJ0aW9uU2V0LmFk
anVzdE9mZnNldCgwLCBtX3JhcmVEYXRhLT5tX29wUHJvZmlsZUNvbnRyb2xGbG93Qnl0ZWNvZGVP
ZmZzZXRzW2ldKTsKKworICAgICAgICBpZiAoIW1fcmFyZURhdGEtPm1fdHlwZVByb2ZpbGVySW5m
b01hcC5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIEhhc2hNYXA8dW5zaWduZWQsIFJhcmVEYXRh
OjpUeXBlUHJvZmlsZXJFeHByZXNzaW9uUmFuZ2U+IGFkanVzdGVkVHlwZVByb2ZpbGVySW5mb01h
cDsKKyAgICAgICAgICAgIGZvciAoYXV0byYgZW50cnkgOiBtX3JhcmVEYXRhLT5tX3R5cGVQcm9m
aWxlckluZm9NYXApCisgICAgICAgICAgICAgICAgYWRqdXN0ZWRUeXBlUHJvZmlsZXJJbmZvTWFw
LnNldChpbnNlcnRpb25TZXQuYWRqdXN0T2Zmc2V0KDAsIGVudHJ5LmtleSksIGVudHJ5LnZhbHVl
KTsKKyAgICAgICAgICAgIG1fcmFyZURhdGEtPm1fdHlwZVByb2ZpbGVySW5mb01hcC5zd2FwKGFk
anVzdGVkVHlwZVByb2ZpbGVySW5mb01hcCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IG1fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnMuc2l6ZSgpOyAr
K2kpCisgICAgICAgIG1fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnNbaV0gPSBpbnNlcnRpb25T
ZXQuYWRqdXN0T2Zmc2V0KDAsIG1fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnNbaV0pOworCisg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2V4cHJlc3Npb25JbmZvLnNpemUoKTsgKytpKQor
ICAgICAgICBtX2V4cHJlc3Npb25JbmZvW2ldLmluc3RydWN0aW9uT2Zmc2V0ID0gaW5zZXJ0aW9u
U2V0LmFkanVzdE9mZnNldCgwLCBtX2V4cHJlc3Npb25JbmZvW2ldLmluc3RydWN0aW9uT2Zmc2V0
KTsKKworICAgIC8vIFRoZW4sIG1vZGlmeSB0aGUgdW5saW5rZWQgaW5zdHJ1Y3Rpb25zLgorICAg
IGluc2VydGlvblNldC5hcHBseU1vZGlmaWNhdGlvbigpOworCisgICAgLy8gQW5kIHJlY29tcHV0
ZSB0aGUganVtcCB0YXJnZXQgYmFzZWQgb24gdGhlIG1vZGlmaWVkIHVubGlua2VkIGluc3RydWN0
aW9ucy4KKyAgICBtX2p1bXBUYXJnZXRzLmNsZWFyKCk7CisgICAgcmVjb21wdXRlUHJlY2lzZUp1
bXBUYXJnZXRzKHRoaXMsIGdyYXBoLmluc3RydWN0aW9ucygpLmJlZ2luKCksIGdyYXBoLmluc3Ry
dWN0aW9ucygpLnNpemUoKSwgbV9qdW1wVGFyZ2V0cyk7Cit9CisKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAppbmRleCA5MWZk
Y2E0OGMxZTM5ZThiZWZiMGM1ZmQ1NWZkOWJkOTFjMWYzNzA3Li5hY2NiN2I1OTY4ZGQxMThlNDk4
NjA2YmZlMDA5YzUxZWM1ZGNkMzFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaApAQCAtNDgsNiArNDgsNyBAQAogCiBuYW1lc3Bh
Y2UgSlNDIHsKIAorY2xhc3MgQnl0ZWNvZGVJbnNlcnRpb25TZXQ7CiBjbGFzcyBEZWJ1Z2dlcjsK
IGNsYXNzIEZ1bmN0aW9uTWV0YWRhdGFOb2RlOwogY2xhc3MgRnVuY3Rpb25FeGVjdXRhYmxlOwpA
QCAtNjksNyArNzAsMTEgQEAgdHlwZWRlZiB1bnNpZ25lZCBVbmxpbmtlZE9iamVjdEFsbG9jYXRp
b25Qcm9maWxlOwogdHlwZWRlZiB1bnNpZ25lZCBVbmxpbmtlZExMSW50Q2FsbExpbmtJbmZvOwog
CiBzdHJ1Y3QgVW5saW5rZWRTdHJpbmdKdW1wVGFibGUgewotICAgIHR5cGVkZWYgSGFzaE1hcDxS
ZWZQdHI8U3RyaW5nSW1wbD4sIGludDMyX3Q+IFN0cmluZ09mZnNldFRhYmxlOworICAgIHN0cnVj
dCBPZmZzZXRMb2NhdGlvbiB7CisgICAgICAgIGludDMyX3QgYnJhbmNoT2Zmc2V0OworICAgIH07
CisKKyAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFN0cmluZ0ltcGw+LCBPZmZzZXRMb2NhdGlv
bj4gU3RyaW5nT2Zmc2V0VGFibGU7CiAgICAgU3RyaW5nT2Zmc2V0VGFibGUgb2Zmc2V0VGFibGU7
CiAKICAgICBpbmxpbmUgaW50MzJfdCBvZmZzZXRGb3JWYWx1ZShTdHJpbmdJbXBsKiB2YWx1ZSwg
aW50MzJfdCBkZWZhdWx0T2Zmc2V0KQpAQCAtNzgsNyArODMsNyBAQCBzdHJ1Y3QgVW5saW5rZWRT
dHJpbmdKdW1wVGFibGUgewogICAgICAgICBTdHJpbmdPZmZzZXRUYWJsZTo6Y29uc3RfaXRlcmF0
b3IgbG9jID0gb2Zmc2V0VGFibGUuZmluZCh2YWx1ZSk7CiAgICAgICAgIGlmIChsb2MgPT0gZW5k
KQogICAgICAgICAgICAgcmV0dXJuIGRlZmF1bHRPZmZzZXQ7Ci0gICAgICAgIHJldHVybiBsb2Mt
PnZhbHVlOworICAgICAgICByZXR1cm4gbG9jLT52YWx1ZS5icmFuY2hPZmZzZXQ7CiAgICAgfQog
CiB9OwpAQCAtMTA2LDYgKzExMSw4IEBAIHN0cnVjdCBVbmxpbmtlZEluc3RydWN0aW9uIHsKICAg
ICB9IHU7CiB9OwogCitjbGFzcyBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbjsKKwogY2xhc3Mg
VW5saW5rZWRDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKIHB1YmxpYzoKICAgICB0eXBlZGVm
IEpTQ2VsbCBCYXNlOwpAQCAtMTE1LDYgKzEyMiw4IEBAIGNsYXNzIFVubGlua2VkQ29kZUJsb2Nr
IDogcHVibGljIEpTQ2VsbCB7CiAKICAgICBlbnVtIHsgQ2FsbEZ1bmN0aW9uLCBBcHBseUZ1bmN0
aW9uIH07CiAKKyAgICB0eXBlZGVmIFZlY3RvcjxVbmxpbmtlZEluc3RydWN0aW9uLCAwLCBVbnNh
ZmVWZWN0b3JPdmVyZmxvdz4gVW5wYWNrZWRJbnN0cnVjdGlvbnM7CisKICAgICBib29sIGlzQ29u
c3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2lzQ29uc3RydWN0b3I7IH0KICAgICBib29sIGlz
U3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNTdHJpY3RNb2RlOyB9CiAgICAgYm9vbCB1
c2VzRXZhbCgpIGNvbnN0IHsgcmV0dXJuIG1fdXNlc0V2YWw7IH0KQEAgLTIwNCw2ICsyMTMsOSBA
QCBjbGFzcyBVbmxpbmtlZENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgIHVuc2lnbmVk
IGp1bXBUYXJnZXQoaW50IGluZGV4KSBjb25zdCB7IHJldHVybiBtX2p1bXBUYXJnZXRzW2luZGV4
XTsgfQogICAgIHVuc2lnbmVkIGxhc3RKdW1wVGFyZ2V0KCkgY29uc3QgeyByZXR1cm4gbV9qdW1w
VGFyZ2V0cy5sYXN0KCk7IH0KIAorICAgIFVubGlua2VkSGFuZGxlckluZm8qIGhhbmRsZXJGb3JC
eXRlY29kZU9mZnNldCh1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgUmVxdWlyZWRIYW5kbGVyID0g
UmVxdWlyZWRIYW5kbGVyOjpBbnlIYW5kbGVyKTsKKyAgICBVbmxpbmtlZEhhbmRsZXJJbmZvKiBo
YW5kbGVyRm9ySW5kZXgodW5zaWduZWQsIFJlcXVpcmVkSGFuZGxlciA9IFJlcXVpcmVkSGFuZGxl
cjo6QW55SGFuZGxlcik7CisKICAgICBib29sIGlzQnVpbHRpbkZ1bmN0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV9pc0J1aWx0aW5GdW5jdGlvbjsgfQogCiAgICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0
cnVjdG9yS2luZCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PENvbnN0cnVjdG9yS2luZD4o
bV9jb25zdHJ1Y3RvcktpbmQpOyB9CkBAIC0zODQsNiArMzk2LDggQEAgY2xhc3MgVW5saW5rZWRD
b2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICB9CiAKIHByaXZhdGU6CisgICAgZnJpZW5k
IGNsYXNzIEJ5dGVjb2RlSW5zZXJ0aW9uU2V0OworICAgIHZvaWQgYXBwbHlNb2RpZmljYXRpb24o
Qnl0ZWNvZGVJbnNlcnRpb25TZXQmKTsKIAogICAgIHZvaWQgY3JlYXRlUmFyZURhdGFJZk5lY2Vz
c2FyeSgpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1ZpcnR1YWxSZWdpc3Rlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZpcnR1
YWxSZWdpc3Rlci5oCmluZGV4IGQzZGY0MDk1N2I1MTc1NjhlM2FlZmJlM2ExYTYwOWZkODc4YmFh
YzMuLmRhZjUwOWY2YzdkMTE1ZTQ1YmNiMTA3YzY3ZDNkMzhkODA0ZjI4OTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WaXJ0dWFsUmVnaXN0ZXIuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmlydHVhbFJlZ2lzdGVyLmgKQEAgLTI2LDgg
KzI2LDggQEAKICNpZm5kZWYgVmlydHVhbFJlZ2lzdGVyX2gKICNkZWZpbmUgVmlydHVhbFJlZ2lz
dGVyX2gKIAorI2luY2x1ZGUgIkJ5dGVjb2RlQ29udmVudGlvbnMuaCIKICNpbmNsdWRlICJDYWxs
RnJhbWUuaCIKLQogI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgogCiBuYW1lc3BhY2UgSlND
IHsKQEAgLTEwMyw3ICsxMDMsNyBAQCBjbGFzcyBWaXJ0dWFsUmVnaXN0ZXIgewogCiBwcml2YXRl
OgogICAgIHN0YXRpYyBjb25zdCBpbnQgc19pbnZhbGlkVmlydHVhbFJlZ2lzdGVyID0gMHgzZmZm
ZmZmZjsKLSAgICBzdGF0aWMgY29uc3QgaW50IHNfZmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgg
PSAweDQwMDAwMDAwOworICAgIHN0YXRpYyBjb25zdCBpbnQgc19maXJzdENvbnN0YW50UmVnaXN0
ZXJJbmRleCA9IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4OwogCiAgICAgc3RhdGljIGludCBs
b2NhbFRvT3BlcmFuZChpbnQgbG9jYWwpIHsgcmV0dXJuIC0xIC0gbG9jYWw7IH0KICAgICBzdGF0
aWMgaW50IG9wZXJhbmRUb0xvY2FsKGludCBvcGVyYW5kKSB7IHJldHVybiAtMSAtIG9wZXJhbmQ7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5jcHAKaW5kZXggNTAwYjRiYmJkMjAyODgyNjJhOWY5ZjYwYjMzYjUzOWFh
ZTk0ZjAyZC4uYjRkNjlhNmIwOTY2ZjkyZDdkZTM2MjFjYmRlZWY0OTI3Y2JmYWJmOSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdl
bmVyYXRvci5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJCeXRlY29kZUdlbmVyYXRv
ci5oIgogCiAjaW5jbHVkZSAiQnVpbHRpbkV4ZWN1dGFibGVzLmgiCisjaW5jbHVkZSAiQnl0ZWNv
ZGVHZW5lcmF0b3JpZmljYXRpb24uaCIKICNpbmNsdWRlICJCeXRlY29kZUxpdmVuZXNzQW5hbHlz
aXMuaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIK
QEAgLTE1NCw2ICsxNTUsMTAgQEAgUGFyc2VyRXJyb3IgQnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVy
YXRlKCkKICAgICAgICAgbV9jb2RlQmxvY2stPmFkZEV4Y2VwdGlvbkhhbmRsZXIoaW5mbyk7CiAg
ICAgfQogICAgIAorCisgICAgaWYgKG1fY29kZUJsb2NrLT5wYXJzZU1vZGUoKSA9PSBTb3VyY2VQ
YXJzZU1vZGU6OkdlbmVyYXRvckJvZHlNb2RlKQorICAgICAgICBwZXJmb3JtR2VuZXJhdG9yaWZp
Y2F0aW9uKG1fY29kZUJsb2NrLmdldCgpLCBtX2luc3RydWN0aW9ucywgbV9nZW5lcmF0b3JGcmFt
ZVN5bWJvbFRhYmxlLmdldCgpLCBtX2dlbmVyYXRvckZyYW1lU3ltYm9sVGFibGVJbmRleCk7CisK
ICAgICBtX2NvZGVCbG9jay0+c2V0SW5zdHJ1Y3Rpb25zKHN0ZDo6bWFrZV91bmlxdWU8VW5saW5r
ZWRJbnN0cnVjdGlvblN0cmVhbT4obV9pbnN0cnVjdGlvbnMpKTsKIAogICAgIG1fY29kZUJsb2Nr
LT5zaHJpbmtUb0ZpdCgpOwpAQCAtMjczLDcgKzI3OCw3IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpC
eXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxp
bmtlCiAgICAgICAgIC8vICAgIGZ1bmN0aW9uICpnZW4oYSwgYiA9IGhlbGxvKCkpCiAgICAgICAg
IC8vICAgIHsKICAgICAgICAgLy8gICAgICAgIHJldHVybiB7Ci0gICAgICAgIC8vICAgICAgICAg
ICAgQGdlbmVyYXRvck5leHQ6IGZ1bmN0aW9uIChAZ2VuZXJhdG9yLCBAZ2VuZXJhdG9yU3RhdGUs
IEBnZW5lcmF0b3JWYWx1ZSwgQGdlbmVyYXRvclJlc3VtZU1vZGUpCisgICAgICAgIC8vICAgICAg
ICAgICAgQGdlbmVyYXRvck5leHQ6IGZ1bmN0aW9uIChAZ2VuZXJhdG9yLCBAZ2VuZXJhdG9yU3Rh
dGUsIEBnZW5lcmF0b3JWYWx1ZSwgQGdlbmVyYXRvclJlc3VtZU1vZGUsIEBnZW5lcmF0b3JGcmFt
ZSkKICAgICAgICAgLy8gICAgICAgICAgICB7CiAgICAgICAgIC8vICAgICAgICAgICAgICAgIGFy
Z3VtZW50czsgIC8vIFRoaXMgYGFyZ3VtZW50c2Agc2hvdWxkIHJlZmVyZW5jZSB0byB0aGUgZ2Vu
J3MgYXJndW1lbnRzLgogICAgICAgICAvLyAgICAgICAgICAgICAgICAuLi4KQEAgLTU1Miw2ICs1
NTcsOSBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5j
dGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAgIGNhc2UgU291cmNlUGFyc2VNb2Rl
OjpHZW5lcmF0b3JCb2R5TW9kZTogewogICAgICAgICAvLyB8dGhpc3wgaXMgYWxyZWFkeSBmaWxs
ZWQgY29ycmVjdGx5IGJlZm9yZSBoZXJlLgogICAgICAgICBlbWl0TG9hZChtX25ld1RhcmdldFJl
Z2lzdGVyLCBqc1VuZGVmaW5lZCgpKTsKKworICAgICAgICBlbWl0TmV3R2VuZXJhdG9yRnJhbWUo
Z2VuZXJhdG9yRnJhbWVSZWdpc3RlcigpKTsKKyAgICAgICAgZW1pdFB1dEJ5SWQoZ2VuZXJhdG9y
UmVnaXN0ZXIoKSwgcHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvckZyYW1l
UHJpdmF0ZU5hbWUoKSwgZ2VuZXJhdG9yRnJhbWVSZWdpc3RlcigpKTsKICAgICAgICAgYnJlYWs7
CiAgICAgfQogCkBAIC0zMDIxLDYgKzMwMjksMjAgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdFNldEZ1bmN0aW9uTmFtZUlmTmVlZGVkKEV4cHJlc3Npb25Ob2RlKiB2YWx1ZU5vZGUsIFIK
ICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobmFtZS0+aW5kZXgoKSk7CiB9CiAKK1JlZ2lzdGVy
SUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3R2VuZXJhdG9yRnJhbWUoUmVnaXN0ZXJJRCog
ZHN0KQoreworICAgIFN5bWJvbFRhYmxlKiBnZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlID0gU3lt
Ym9sVGFibGU6OmNyZWF0ZSgqbV92bSk7CisgICAgUmVnaXN0ZXJJRCogY29uc3RhbnRTeW1ib2xU
YWJsZVJlZ2lzdGVyID0gYWRkQ29uc3RhbnRWYWx1ZShnZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxl
KTsKKyAgICBlbWl0T3Bjb2RlKG9wX2NyZWF0ZV9sZXhpY2FsX2Vudmlyb25tZW50KTsKKyAgICBp
bnN0cnVjdGlvbnMoKS5hcHBlbmQoZHN0LT5pbmRleCgpKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5h
cHBlbmQoc2NvcGVSZWdpc3RlcigpLT5pbmRleCgpKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBl
bmQoY29uc3RhbnRTeW1ib2xUYWJsZVJlZ2lzdGVyLT5pbmRleCgpKTsKKyAgICBpbnN0cnVjdGlv
bnMoKS5hcHBlbmQoYWRkQ29uc3RhbnRWYWx1ZShqc1VuZGVmaW5lZCgpKS0+aW5kZXgoKSk7Cisg
ICAgbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlLnNldCgqbV92bSwgZ2VuZXJhdG9yRnJhbWVT
eW1ib2xUYWJsZSk7CisgICAgbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlSW5kZXggPSBjb25z
dGFudFN5bWJvbFRhYmxlUmVnaXN0ZXItPmluZGV4KCk7CisgICAgcmV0dXJuIGRzdDsKK30KKwog
UmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYWxsKFJlZ2lzdGVySUQqIGRzdCwg
UmVnaXN0ZXJJRCogZnVuYywgRXhwZWN0ZWRGdW5jdGlvbiBleHBlY3RlZEZ1bmN0aW9uLCBDYWxs
QXJndW1lbnRzJiBjYWxsQXJndW1lbnRzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNv
bnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2
b3RFbmQpCiB7CiAgICAgcmV0dXJuIGVtaXRDYWxsKG9wX2NhbGwsIGRzdCwgZnVuYywgZXhwZWN0
ZWRGdW5jdGlvbiwgY2FsbEFyZ3VtZW50cywgZGl2b3QsIGRpdm90U3RhcnQsIGRpdm90RW5kKTsK
QEAgLTM2NTgsOCArMzY4MCw3IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDb21wbGV4
UG9wU2NvcGVzKFJlZ2lzdGVySUQqIHNjb3BlLCBDb250cm9sRmxvd0NvbnRlCiAgICAgICAgICAg
ICBpZiAoZmxpcFRyaWVzKSB7CiAgICAgICAgICAgICAgICAgd2hpbGUgKG1fdHJ5Q29udGV4dFN0
YWNrLnNpemUoKSAhPSBmaW5hbGx5Q29udGV4dC50cnlDb250ZXh0U3RhY2tTaXplKSB7CiAgICAg
ICAgICAgICAgICAgICAgIEFTU0VSVChtX3RyeUNvbnRleHRTdGFjay5zaXplKCkgPiBmaW5hbGx5
Q29udGV4dC50cnlDb250ZXh0U3RhY2tTaXplKTsKLSAgICAgICAgICAgICAgICAgICAgVHJ5Q29u
dGV4dCBjb250ZXh0ID0gbV90cnlDb250ZXh0U3RhY2subGFzdCgpOwotICAgICAgICAgICAgICAg
ICAgICBtX3RyeUNvbnRleHRTdGFjay5yZW1vdmVMYXN0KCk7CisgICAgICAgICAgICAgICAgICAg
IFRyeUNvbnRleHQgY29udGV4dCA9IG1fdHJ5Q29udGV4dFN0YWNrLnRha2VMYXN0KCk7CiAgICAg
ICAgICAgICAgICAgICAgIFRyeVJhbmdlIHJhbmdlOwogICAgICAgICAgICAgICAgICAgICByYW5n
ZS5zdGFydCA9IGNvbnRleHQuc3RhcnQ7CiAgICAgICAgICAgICAgICAgICAgIHJhbmdlLmVuZCA9
IGJlZm9yZUZpbmFsbHk7CkBAIC0zOTQzLDcgKzM5NjQsNyBAQCBzdGF0aWMgdm9pZCBwcmVwYXJl
SnVtcFRhYmxlRm9yU3RyaW5nU3dpdGNoKFVubGlua2VkU3RyaW5nSnVtcFRhYmxlJiBqdW1wVGFi
bGUsCiAgICAgICAgIAogICAgICAgICBBU1NFUlQobm9kZXNbaV0tPmlzU3RyaW5nKCkpOwogICAg
ICAgICBTdHJpbmdJbXBsKiBjbGF1c2UgPSBzdGF0aWNfY2FzdDxTdHJpbmdOb2RlKj4obm9kZXNb
aV0pLT52YWx1ZSgpLmltcGwoKTsKLSAgICAgICAganVtcFRhYmxlLm9mZnNldFRhYmxlLmFkZChj
bGF1c2UsIGxhYmVsc1tpXS0+YmluZChzd2l0Y2hBZGRyZXNzLCBzd2l0Y2hBZGRyZXNzICsgMykp
OworICAgICAgICBqdW1wVGFibGUub2Zmc2V0VGFibGUuYWRkKGNsYXVzZSwgVW5saW5rZWRTdHJp
bmdKdW1wVGFibGU6Ok9mZnNldExvY2F0aW9uIHsgbGFiZWxzW2ldLT5iaW5kKHN3aXRjaEFkZHJl
c3MsIHN3aXRjaEFkZHJlc3MgKyAzKSB9KTsKICAgICB9CiB9CiAKQEAgLTQ0NTEsMTYgKzQ0NzIs
MzYgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFlpZWxkUG9pbnQoUmVnaXN0ZXJJRCog
YXJndW1lbnQpCiAgICAgZW1pdEdlbmVyYXRvclN0YXRlQ2hhbmdlKHlpZWxkUG9pbnRJbmRleCk7
CiAgICAgLy8gRmlyc3QgeWllbGQgcG9pbnQgaXMgdXNlZCBmb3IgaW5pdGlhbCBzZXF1ZW5jZS4K
ICAgICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSB5aWVsZFBvaW50SW5kZXggLSAx
OworCisgICAgLy8gU3BsaXQgdGhlIHRyeSByYW5nZSBoZXJlLgorICAgIFJlZlB0cjxMYWJlbD4g
c2F2ZVBvaW50ID0gZW1pdExhYmVsKG5ld0xhYmVsKCkuZ2V0KCkpOworICAgIGZvciAodW5zaWdu
ZWQgaSA9IG1fdHJ5Q29udGV4dFN0YWNrLnNpemUoKTsgaS0tOykgeworICAgICAgICBUcnlDb250
ZXh0JiBjb250ZXh0ID0gbV90cnlDb250ZXh0U3RhY2tbaV07CisgICAgICAgIFRyeVJhbmdlIHJh
bmdlOworICAgICAgICByYW5nZS5zdGFydCA9IGNvbnRleHQuc3RhcnQ7CisgICAgICAgIHJhbmdl
LmVuZCA9IHNhdmVQb2ludDsKKyAgICAgICAgcmFuZ2UudHJ5RGF0YSA9IGNvbnRleHQudHJ5RGF0
YTsKKyAgICAgICAgbV90cnlSYW5nZXMuYXBwZW5kKHJhbmdlKTsKKworICAgICAgICAvLyBUcnkg
cmFuZ2Ugd2lsbCBiZSByZXN0YXJlZCBhdCB0aGUgbWVyZ2UgcG9pbnQuCisgICAgICAgIGNvbnRl
eHQuc3RhcnQgPSBtZXJnZVBvaW50OworICAgIH0KKyAgICBWZWN0b3I8VHJ5Q29udGV4dD4gc2F2
ZWRUcnlDb250ZXh0U3RhY2s7CisgICAgbV90cnlDb250ZXh0U3RhY2suc3dhcChzYXZlZFRyeUNv
bnRleHRTdGFjayk7CisKICAgICBlbWl0U2F2ZShtZXJnZVBvaW50LmdldCgpLCBsaXZlQ2FsbGVl
TG9jYWxzSW5kZXgpOwogICAgIGVtaXRSZXR1cm4oYXJndW1lbnQpOwogICAgIGVtaXRSZXN1bWUo
bWVyZ2VQb2ludC5nZXQoKSwgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4KTsKKworICAgIC8vIFJlc3Rv
cmUgdGhlIHRyeSBjb250ZXh0cywgd2hpY2ggc3RhcnQgb2Zmc2V0IGlzIHVwZGF0ZWQgdG8gdGhl
IG1lcmdlIHBvaW50LgorICAgIG1fdHJ5Q29udGV4dFN0YWNrLnN3YXAoc2F2ZWRUcnlDb250ZXh0
U3RhY2spOwogfQogCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0U2F2ZShMYWJlbCogbWVy
Z2VQb2ludCwgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4KQogewogICAgIHNpemVfdCBi
ZWdpbiA9IGluc3RydWN0aW9ucygpLnNpemUoKTsKICAgICBlbWl0T3Bjb2RlKG9wX3NhdmUpOwot
ICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChtX2dlbmVyYXRvclJlZ2lzdGVyLT5pbmRleCgpKTsK
KyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZ2VuZXJhdG9yRnJhbWVSZWdpc3RlcigpLT5pbmRl
eCgpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobGl2ZUNhbGxlZUxvY2Fsc0luZGV4KTsK
ICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobWVyZ2VQb2ludC0+YmluZChiZWdpbiwgaW5zdHJ1
Y3Rpb25zKCkuc2l6ZSgpKSk7CiB9CkBAIC00NDY5LDcgKzQ1MTAsNyBAQCB2b2lkIEJ5dGVjb2Rl
R2VuZXJhdG9yOjplbWl0UmVzdW1lKExhYmVsKiBtZXJnZVBvaW50LCB1bnNpZ25lZCBsaXZlQ2Fs
bGVlTG9jYWxzSQogewogICAgIGVtaXRHZW5lcmF0b3JTdGF0ZUxhYmVsKCk7CiAgICAgZW1pdE9w
Y29kZShvcF9yZXN1bWUpOwotICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChtX2dlbmVyYXRvclJl
Z2lzdGVyLT5pbmRleCgpKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZ2VuZXJhdG9yRnJh
bWVSZWdpc3RlcigpLT5pbmRleCgpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobGl2ZUNh
bGxlZUxvY2Fsc0luZGV4KTsKICAgICBlbWl0TGFiZWwobWVyZ2VQb2ludCk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmgKaW5kZXggNWZhZjA0ZjJmM2RiYTE4YWRiMDc4OWUzMjNlOWRhYWU2MWFiMTE2Yi4uMjVjZTll
M2VhNDFlNjM1MTM5MWUxMTc5YWVlMzNlMzY1MjhiMGQyNyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAtNTMz
LDYgKzUzMyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBSZWdpc3RlcklEKiBlbWl0TmV3
QXJyb3dGdW5jdGlvbkV4cHJlc3Npb24oUmVnaXN0ZXJJRCosIEFycm93RnVuY0V4cHJOb2RlKik7
CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXROZXdNZXRob2REZWZpbml0aW9uKFJlZ2lzdGVySUQq
IGRzdCwgTWV0aG9kRGVmaW5pdGlvbk5vZGUqKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdE5l
d1JlZ0V4cChSZWdpc3RlcklEKiBkc3QsIFJlZ0V4cCopOworICAgICAgICBSZWdpc3RlcklEKiBl
bWl0TmV3R2VuZXJhdG9yRnJhbWUoUmVnaXN0ZXJJRCogZHN0KTsKIAogICAgICAgICB2b2lkIGVt
aXRTZXRGdW5jdGlvbk5hbWVJZk5lZWRlZChFeHByZXNzaW9uTm9kZSogdmFsdWVOb2RlLCBSZWdp
c3RlcklEKiB2YWx1ZSwgUmVnaXN0ZXJJRCogbmFtZSk7CiAKQEAgLTcwNSw2ICs3MDYsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9yU3RhdGVSZWdpc3Rl
cigpIHsgcmV0dXJuICZtX3BhcmFtZXRlcnNbMl07IH0KICAgICAgICAgUmVnaXN0ZXJJRCogZ2Vu
ZXJhdG9yVmFsdWVSZWdpc3RlcigpIHsgcmV0dXJuICZtX3BhcmFtZXRlcnNbM107IH0KICAgICAg
ICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKCkgeyByZXR1cm4gJm1f
cGFyYW1ldGVyc1s0XTsgfQorICAgICAgICBSZWdpc3RlcklEKiBnZW5lcmF0b3JGcmFtZVJlZ2lz
dGVyKCkgeyByZXR1cm4gJm1fcGFyYW1ldGVyc1s1XTsgfQogCiAgICAgICAgIENvZGVUeXBlIGNv
ZGVUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlVHlwZTsgfQogCkBAIC05MzIsNiArOTM0LDEw
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBWZWN0b3I8UmVmUHRyPEZvckluQ29udGV4dD4+
IG1fZm9ySW5Db250ZXh0U3RhY2s7CiAgICAgICAgIFZlY3RvcjxUcnlDb250ZXh0PiBtX3RyeUNv
bnRleHRTdGFjazsKICAgICAgICAgVmVjdG9yPFJlZlB0cjxMYWJlbD4+IG1fZ2VuZXJhdG9yUmVz
dW1lTGFiZWxzOworCisgICAgICAgIFN0cm9uZzxTeW1ib2xUYWJsZT4gbV9nZW5lcmF0b3JGcmFt
ZVN5bWJvbFRhYmxlOworICAgICAgICBpbnQgbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlSW5k
ZXggeyAwIH07CisKICAgICAgICAgZW51bSBGdW5jdGlvblZhcmlhYmxlVHlwZSA6IHVpbnQ4X3Qg
eyBOb3JtYWxGdW5jdGlvblZhcmlhYmxlLCBHbG9iYWxGdW5jdGlvblZhcmlhYmxlIH07CiAgICAg
ICAgIFZlY3RvcjxzdGQ6OnBhaXI8RnVuY3Rpb25NZXRhZGF0YU5vZGUqLCBGdW5jdGlvblZhcmlh
YmxlVHlwZT4+IG1fZnVuY3Rpb25zVG9Jbml0aWFsaXplOwogICAgICAgICBib29sIG1fbmVlZFRv
SW5pdGlhbGl6ZUFyZ3VtZW50cyB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPcGVyYXRpb25zLmNwcAppbmRleCA2OWExNmViNWRhNDM1NWJjNzkyNWM1ZGZkY2IwNjIw
MjNlOTk2NTAyLi5jNDU3MjNiMTkwMTMyMDI1ZGZjZTMyNmY2MDE1ZWNhNmNlNThkNzFhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKQEAgLTQyLDggKzQy
LDggQEAKICNpbmNsdWRlICJEaXJlY3RBcmd1bWVudHMuaCIKICNpbmNsdWRlICJGVExGb3JPU1JF
bnRyeUpJVENvZGUuaCIKICNpbmNsdWRlICJGVExPU1JFbnRyeS5oIgotI2luY2x1ZGUgIkhvc3RD
YWxsUmV0dXJuVmFsdWUuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKKyNpbmNsdWRlICJI
b3N0Q2FsbFJldHVyblZhbHVlLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRl
ICJKSVQuaCIKICNpbmNsdWRlICJKSVRFeGNlcHRpb25zLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZ2VuZXJhdGUtYnl0ZWNvZGUtZmlsZXMgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZ2VuZXJhdGUtYnl0ZWNvZGUtZmlsZXMKaW5kZXggNTY2NmEzZjkyNGMxMTliMjE2ZDNm
ZjBmZmU5YzY3MmI3YzcxYmI3OS4uZmFjZmRmMTMzMTQ4NzA3YTMzMzUzNTc2MmJlNzgzMDRjNGI1
MGIxZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRlLWJ5dGVjb2Rl
LWZpbGVzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0ZS1ieXRlY29kZS1maWxl
cwpAQCAtMTg3LDYgKzE4Nyw3IEBAIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgICAg
ICAgICAgICAgZGVmYXVsdExlbmd0aCA9IHNlY3Rpb25bImRlZmF1bHRMZW5ndGgiXQogCiAgICAg
ICAgICAgICBieXRlY29kZU51bSA9IDAKKyAgICAgICAgICAgIG1heExlbmd0aCA9IDAKICAgICAg
ICAgICAgIGZvciBieXRlY29kZSBpbiBzZWN0aW9uWyJieXRlY29kZXMiXToKICAgICAgICAgICAg
ICAgICBpZiBub3QgZmlyc3RNYWNybzoKICAgICAgICAgICAgICAgICAgICAgYnl0ZWNvZGVIRmls
ZS53cml0ZSgiIFxcXG4iKQpAQCAtMTk0LDYgKzE5NSw3IEBAIGlmIF9fbmFtZV9fID09ICJfX21h
aW5fXyI6CiAgICAgICAgICAgICAgICAgbGVuZ3RoID0gZGVmYXVsdExlbmd0aAogICAgICAgICAg
ICAgICAgIGlmICJsZW5ndGgiIGluIGJ5dGVjb2RlOgogICAgICAgICAgICAgICAgICAgICBsZW5n
dGggPSBieXRlY29kZVsibGVuZ3RoIl0KKyAgICAgICAgICAgICAgICAgICAgbWF4TGVuZ3RoID0g
bWF4KFtsZW5ndGgsIG1heExlbmd0aF0pCiAKICAgICAgICAgICAgICAgICBieXRlY29kZUhGaWxl
LndyaXRlKCIgICAgbWFjcm8oezB9LCB7MX0pIi5mb3JtYXQoYnl0ZWNvZGVbIm5hbWUiXSwgbGVu
Z3RoKSkKICAgICAgICAgICAgICAgICBmaXJzdE1hY3JvID0gRmFsc2UKQEAgLTIwMSw2ICsyMDMs
NyBAQCBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogCiAgICAgICAgICAgICBieXRlY29kZUhG
aWxlLndyaXRlKCJcblxuIikKICAgICAgICAgICAgIGJ5dGVjb2RlSEZpbGUud3JpdGUoIiNkZWZp
bmUgTlVNQkVSX09GX3swfV9JRFMgezF9XG5cbiIuZm9ybWF0KHNlY3Rpb25bIm1hY3JvTmFtZUNv
bXBvbmVudCJdLCBieXRlY29kZU51bSkpCisgICAgICAgICAgICBieXRlY29kZUhGaWxlLndyaXRl
KCIjZGVmaW5lIE1BWF9PUENPREVfTEVOR1RIX09GX3swfSB7MX1cblxuIi5mb3JtYXQoc2VjdGlv
blsibWFjcm9OYW1lQ29tcG9uZW50Il0sIG1heExlbmd0aCkpCiAKICAgICAgICAgaWYgaW5pdEFT
TUZpbGVOYW1lIGFuZCBzZWN0aW9uWydlbWl0SW5BU01GaWxlJ106CiAgICAgICAgICAgICBwcmVm
aXggPSAiIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0lu
dGVycHJldGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnBy
ZXRlci5jcHAKaW5kZXggMmI0YzdjOWIzZWIzNmQ2MzA2ZWE4NDRlODUzNzZmZmE3ZmQwZjFmNy4u
ZmUzNjhmMzkxY2MyN2MxYTA1YjhiZDkwZmY5MWFjMTYyMWI2MjQ3MCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCkBAIC02MDgsNyAr
NjA4LDcgQEAgSlNTdHJpbmcqIEludGVycHJldGVyOjpzdGFja1RyYWNlQXNTdHJpbmcoVk0mIHZt
LCBjb25zdCBWZWN0b3I8U3RhY2tGcmFtZT4mIHN0YWMKICAgICByZXR1cm4ganNTdHJpbmcoJnZt
LCBidWlsZGVyLnRvU3RyaW5nKCkpOwogfQogCi1BTFdBWVNfSU5MSU5FIHN0YXRpYyBIYW5kbGVy
SW5mbyogZmluZEV4Y2VwdGlvbkhhbmRsZXIoU3RhY2tWaXNpdG9yJiB2aXNpdG9yLCBDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgQ29kZUJsb2NrOjpSZXF1aXJlZEhhbmRsZXIgcmVxdWlyZWRIYW5kbGVy
KQorQUxXQVlTX0lOTElORSBzdGF0aWMgSGFuZGxlckluZm8qIGZpbmRFeGNlcHRpb25IYW5kbGVy
KFN0YWNrVmlzaXRvciYgdmlzaXRvciwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFJlcXVpcmVkSGFu
ZGxlciByZXF1aXJlZEhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKGNvZGVCbG9jayk7CiAjaWYgRU5B
QkxFKERGR19KSVQpCkBAIC02NDIsNyArNjQyLDcgQEAgY2xhc3MgR2V0Q2F0Y2hIYW5kbGVyRnVu
Y3RvciB7CiAgICAgICAgIGlmICghY29kZUJsb2NrKQogICAgICAgICAgICAgcmV0dXJuIFN0YWNr
VmlzaXRvcjo6Q29udGludWU7CiAKLSAgICAgICAgbV9oYW5kbGVyID0gZmluZEV4Y2VwdGlvbkhh
bmRsZXIodmlzaXRvciwgY29kZUJsb2NrLCBDb2RlQmxvY2s6OlJlcXVpcmVkSGFuZGxlcjo6Q2F0
Y2hIYW5kbGVyKTsKKyAgICAgICAgbV9oYW5kbGVyID0gZmluZEV4Y2VwdGlvbkhhbmRsZXIodmlz
aXRvciwgY29kZUJsb2NrLCBSZXF1aXJlZEhhbmRsZXI6OkNhdGNoSGFuZGxlcik7CiAgICAgICAg
IGlmIChtX2hhbmRsZXIpCiAgICAgICAgICAgICByZXR1cm4gU3RhY2tWaXNpdG9yOjpEb25lOwog
CkBAIC02ODQsNyArNjg0LDcgQEAgY2xhc3MgVW53aW5kRnVuY3RvciB7CiAgICAgICAgIG1faGFu
ZGxlciA9IG51bGxwdHI7CiAgICAgICAgIGlmICghbV9pc1Rlcm1pbmF0aW9uKSB7CiAgICAgICAg
ICAgICBpZiAobV9jb2RlQmxvY2sgJiYgIWlzV2ViQXNzZW1ibHlFeGVjdXRhYmxlKG1fY29kZUJs
b2NrLT5vd25lckV4ZWN1dGFibGUoKSkpCi0gICAgICAgICAgICAgICAgbV9oYW5kbGVyID0gZmlu
ZEV4Y2VwdGlvbkhhbmRsZXIodmlzaXRvciwgbV9jb2RlQmxvY2ssIENvZGVCbG9jazo6UmVxdWly
ZWRIYW5kbGVyOjpBbnlIYW5kbGVyKTsKKyAgICAgICAgICAgICAgICBtX2hhbmRsZXIgPSBmaW5k
RXhjZXB0aW9uSGFuZGxlcih2aXNpdG9yLCBtX2NvZGVCbG9jaywgUmVxdWlyZWRIYW5kbGVyOjpB
bnlIYW5kbGVyKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChtX2hhbmRsZXIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCmluZGV4IGQyMDk0
ZGVlN2QyODVhYzQ5NWIxNTQxNzJhMjNiOTRmZmU4NTdmMWUuLjA3MzJiM2ViYmQ5YWRmZDIyMzM2
MmVjOWE2YmFhYWZkODYxZjUyNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlci9JbnRlcnByZXRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRl
cnByZXRlci9JbnRlcnByZXRlci5oCkBAIC02Niw2ICs2Niw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgIHN0cnVjdCBIYW5kbGVySW5mbzsKICAgICBzdHJ1Y3QgSW5zdHJ1Y3Rpb247CiAgICAgc3Ry
dWN0IFByb3RvQ2FsbEZyYW1lOworICAgIHN0cnVjdCBVbmxpbmtlZEluc3RydWN0aW9uOwogCiAg
ICAgZW51bSBVbndpbmRTdGFydCB7IFVud2luZEZyb21DdXJyZW50RnJhbWUsIFVud2luZEZyb21D
YWxsZXJGcmFtZSB9OwogCkBAIC0yMDgsNyArMjA5LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICAgICAgcmV0dXJuIG9wY29kZTsKICNlbmRpZgogICAgICAgICB9Ci0gICAgICAgIAorCisg
ICAgICAgIE9wY29kZUlEIGdldE9wY29kZUlEKGNvbnN0IEluc3RydWN0aW9uJik7CisgICAgICAg
IE9wY29kZUlEIGdldE9wY29kZUlEKGNvbnN0IFVubGlua2VkSW5zdHJ1Y3Rpb24mKTsKKwogICAg
ICAgICBib29sIGlzT3Bjb2RlKE9wY29kZSk7CiAKICAgICAgICAgSlNWYWx1ZSBleGVjdXRlKFBy
b2dyYW1FeGVjdXRhYmxlKiwgQ2FsbEZyYW1lKiwgSlNPYmplY3QqIHRoaXNPYmopOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVySW5saW5l
cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVySW5saW5l
cy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjg2ZDA3MTQ4YTUyZTY1ZTM3NWY5N2U2ZWJiOTFhZGJlMWRkNDU2MGQK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50
ZXJwcmV0ZXJJbmxpbmVzLmgKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNiBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAi
SW5zdHJ1Y3Rpb24uaCIKKyNpbmNsdWRlICJJbnRlcnByZXRlci5oIgorI2luY2x1ZGUgIlVubGlu
a2VkQ29kZUJsb2NrLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitpbmxpbmUgT3Bjb2RlSUQgSW50
ZXJwcmV0ZXI6OmdldE9wY29kZUlEKGNvbnN0IEluc3RydWN0aW9uJiBpbnN0cnVjdGlvbikKK3sK
KyAgICByZXR1cm4gZ2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb24udS5vcGNvZGUpOworfQorCitpbmxp
bmUgT3Bjb2RlSUQgSW50ZXJwcmV0ZXI6OmdldE9wY29kZUlEKGNvbnN0IFVubGlua2VkSW5zdHJ1
Y3Rpb24mIGluc3RydWN0aW9uKQoreworICAgIHJldHVybiBpbnN0cnVjdGlvbi51Lm9wY29kZTsK
K30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKaW5kZXgg
ZjI3ZDM5YTZlYThkOTQzYjRiZTg2MmNkZDBjZGI3ZWFlZDVhMTM0Ny4uNjk5MTQyNDJlNjY0MzBm
ZThhZTFmYjc3YjU4OWY2OWY4N2MwN2M1MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcApA
QCAtMjM1LDggKzIzNSw2IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAg
ICAgICAgREVGSU5FX09QKG9wX2dldF9yZXN0X2xlbmd0aCkKICAgICAgICAgREVGSU5FX09QKG9w
X2NoZWNrX3RkeikKICAgICAgICAgREVGSU5FX09QKG9wX2Fzc2VydCkKLSAgICAgICAgREVGSU5F
X09QKG9wX3NhdmUpCi0gICAgICAgIERFRklORV9PUChvcF9yZXN1bWUpCiAgICAgICAgIERFRklO
RV9PUChvcF9kZWJ1ZykKICAgICAgICAgREVGSU5FX09QKG9wX2RlbF9ieV9pZCkKICAgICAgICAg
REVGSU5FX09QKG9wX2RlbF9ieV92YWwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAppbmRleCA3MzEx
ZGZhMTZiOWE0ZDhmOWMxNzVjZWRlZDczNzU5ZTJiMmNiMTNjLi4xMzAyN2NlZGY0ZDA2YzM3YWYz
YzMyYjk0M2YxYjRhYjVjY2I3MGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKQEAgLTUwMSw4
ICs1MDEsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0X29wX2dldF9yZXN0
X2xlbmd0aChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfY2hlY2tfdGR6KElu
c3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9hc3NlcnQoSW5zdHJ1Y3Rpb24qKTsK
LSAgICAgICAgdm9pZCBlbWl0X29wX3NhdmUoSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBl
bWl0X29wX3Jlc3VtZShJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZGVidWco
SW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2RlbF9ieV9pZChJbnN0cnVjdGlv
biopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZGVsX2J5X3ZhbChJbnN0cnVjdGlvbiopOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKaW5kZXggZDU1Nzc4ZDI1ODZmYTE3
Y2Y0NTRmMzAyNDVmNDczMjdkMDYxNTkyYS4uMjgxM2VjYjFjMDdiYWM1YWZjZGUzYzc4OTc1YTA3
ZmZjNzQxMzQ0NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNv
ZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCkBA
IC0xNDg2LDE4ICsxNDg2LDYgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X3Jlc3RfbGVuZ3RoKElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAjZW5kaWYKIH0KIAotdm9pZCBKSVQ6OmVt
aXRfb3Bfc2F2ZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQotewotICAgIEpJVFNs
b3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3Bh
dGhfc2F2ZSk7Ci0gICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKLX0KLQotdm9pZCBKSVQ6OmVtaXRf
b3BfcmVzdW1lKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCi17Ci0gICAgSklUU2xv
d1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0
aF9yZXN1bWUpOwotICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNl
IEpTQwogCiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQppbmRleCAwMTk5MzE1NDU4ZWExNTIz
MTg4NzExY2JhODJhNjhjMzMzZjdhNjNjLi42YzYwYWJjYTY4N2ViYjk1YTAwMzE5MTE3MzI4M2Ix
ZjBlNTY2ZmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlci5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXIuYXNtCkBAIC0xNjUxLDE1ICsxNjUxLDExIEBAIF9sbGludF9vcF9hc3Nl
cnQ6CiAKIAogX2xsaW50X29wX3NhdmU6Ci0gICAgdHJhY2VFeGVjdXRpb24oKQotICAgIGNhbGxP
cGNvZGVTbG93UGF0aChfc2xvd19wYXRoX3NhdmUpCi0gICAgZGlzcGF0Y2goNCkKKyAgICBub3RT
dXBwb3J0ZWQoKQogCiAKIF9sbGludF9vcF9yZXN1bWU6Ci0gICAgdHJhY2VFeGVjdXRpb24oKQot
ICAgIGNhbGxPcGNvZGVTbG93UGF0aChfc2xvd19wYXRoX3Jlc3VtZSkKLSAgICBkaXNwYXRjaCgz
KQorICAgIG5vdFN1cHBvcnRlZCgpCiAKIAogX2xsaW50X29wX2NyZWF0ZV9sZXhpY2FsX2Vudmly
b25tZW50OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCmluZGV4IDRlZWFl
MTQ4MDA0NjUzNmNmMjI4ZTBkNzgyODZjOGY1NGY5MTk2YjIuLjc1NmYxMmVkMjU1MTU3ZGVmYmVm
NjE1MDlmNDdiOTkxNjQ2ZjgwZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNl
ci5jcHAKQEAgLTI1Niw3ICsyNTYsNyBAQCBTdHJpbmcgUGFyc2VyPExleGVyVHlwZT46OnBhcnNl
SW5uZXIoY29uc3QgSWRlbnRpZmllciYgY2FsbGVlTmFtZSwgU291cmNlUGFyc2VNbwogICAgIGlm
IChtX2xleGVyLT5pc1JlcGFyc2luZ0Z1bmN0aW9uKCkpIHsKICAgICAgICAgUGFyc2VyRnVuY3Rp
b25JbmZvPEFTVEJ1aWxkZXI+IGZ1bmN0aW9uSW5mbzsKICAgICAgICAgaWYgKHBhcnNlTW9kZSA9
PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckJvZHlNb2RlKQotICAgICAgICAgICAgbV9wYXJh
bWV0ZXJzID0gY3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhjb250ZXh0KTsKKyAgICAgICAgICAg
IG1fcGFyYW1ldGVycyA9IGNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMoY29udGV4dCwgZnVuY3Rp
b25JbmZvLnBhcmFtZXRlckNvdW50KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbV9wYXJh
bWV0ZXJzID0gcGFyc2VGdW5jdGlvblBhcmFtZXRlcnMoY29udGV4dCwgcGFyc2VNb2RlLCBmdW5j
dGlvbkluZm8pOwogCkBAIC01MDcsMTAgKzUwNyw5IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVp
bGRlcj4gVHJlZVNvdXJjZUVsZW1lbnRzIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUdlbmVyYXRv
CiAKICAgICBQYXJzZXJGdW5jdGlvbkluZm88VHJlZUJ1aWxkZXI+IGluZm87CiAgICAgaW5mby5u
YW1lID0gJm1fdm0tPnByb3BlcnR5TmFtZXMtPm51bGxJZGVudGlmaWVyOwotICAgIGNyZWF0ZUdl
bmVyYXRvclBhcmFtZXRlcnMoY29udGV4dCk7CisgICAgY3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVy
cyhjb250ZXh0LCBpbmZvLnBhcmFtZXRlckNvdW50KTsKICAgICBpbmZvLnN0YXJ0T2Zmc2V0ID0g
cGFyYW1ldGVyc1N0YXJ0OwogICAgIGluZm8uc3RhcnRMaW5lID0gdG9rZW5MaW5lKCk7Ci0gICAg
aW5mby5wYXJhbWV0ZXJDb3VudCA9IDQ7IC8vIGdlbmVyYXRvciwgc3RhdGUsIHZhbHVlLCByZXN1
bWUgbW9kZQogCiAgICAgewogICAgICAgICBBdXRvUG9wU2NvcGVSZWYgZ2VuZXJhdG9yQm9keVNj
b3BlKHRoaXMsIHB1c2hTY29wZSgpKTsKQEAgLTE5MDEsMzIgKzE5MDAsMzAgQEAgdGVtcGxhdGUg
PHR5cGVuYW1lIExleGVyVHlwZT4gdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyLCBjbGFzcyBG
dW5jdGlvbkluZm9UeXAKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KLXRlbXBs
YXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkZvcm1hbFBhcmFt
ZXRlckxpc3QgUGFyc2VyPExleGVyVHlwZT46OmNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMoVHJl
ZUJ1aWxkZXImIGNvbnRleHQpCit0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IHR5cGVuYW1l
IFRyZWVCdWlsZGVyOjpGb3JtYWxQYXJhbWV0ZXJMaXN0IFBhcnNlcjxMZXhlclR5cGU+OjpjcmVh
dGVHZW5lcmF0b3JQYXJhbWV0ZXJzKFRyZWVCdWlsZGVyJiBjb250ZXh0LCB1bnNpZ25lZCYgcGFy
YW1ldGVyQ291bnQpCiB7CiAgICAgYXV0byBwYXJhbWV0ZXJzID0gY29udGV4dC5jcmVhdGVGb3Jt
YWxQYXJhbWV0ZXJMaXN0KCk7CiAKICAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb24odG9rZW5M
b2NhdGlvbigpKTsKICAgICBKU1RleHRQb3NpdGlvbiBwb3NpdGlvbiA9IHRva2VuU3RhcnRQb3Np
dGlvbigpOwogCi0gICAgLy8gQGdlbmVyYXRvcgotICAgIGRlY2xhcmVQYXJhbWV0ZXIoJm1fdm0t
PnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclByaXZhdGVOYW1lKCkpOwot
ICAgIGF1dG8gZ2VuZXJhdG9yID0gY29udGV4dC5jcmVhdGVCaW5kaW5nTG9jYXRpb24obG9jYXRp
b24sIG1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclByaXZhdGVO
YW1lKCksIHBvc2l0aW9uLCBwb3NpdGlvbiwgQXNzaWdubWVudENvbnRleHQ6OkRlY2xhcmF0aW9u
U3RhdGVtZW50KTsKLSAgICBjb250ZXh0LmFwcGVuZFBhcmFtZXRlcihwYXJhbWV0ZXJzLCBnZW5l
cmF0b3IsIDApOworICAgIGF1dG8gYWRkUGFyYW1ldGVyID0gWyZdKGNvbnN0IElkZW50aWZpZXIm
IG5hbWUpIHsKKyAgICAgICAgZGVjbGFyZVBhcmFtZXRlcigmbmFtZSk7CisgICAgICAgIGF1dG8g
YmluZGluZyA9IGNvbnRleHQuY3JlYXRlQmluZGluZ0xvY2F0aW9uKGxvY2F0aW9uLCBuYW1lLCBw
b3NpdGlvbiwgcG9zaXRpb24sIEFzc2lnbm1lbnRDb250ZXh0OjpEZWNsYXJhdGlvblN0YXRlbWVu
dCk7CisgICAgICAgIGNvbnRleHQuYXBwZW5kUGFyYW1ldGVyKHBhcmFtZXRlcnMsIGJpbmRpbmcs
IDApOworICAgICAgICArK3BhcmFtZXRlckNvdW50OworICAgIH07CiAKKyAgICAvLyBAZ2VuZXJh
dG9yCisgICAgYWRkUGFyYW1ldGVyKG1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygp
LmdlbmVyYXRvclByaXZhdGVOYW1lKCkpOwogICAgIC8vIEBnZW5lcmF0b3JTdGF0ZQotICAgIGRl
Y2xhcmVQYXJhbWV0ZXIoJm1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdlbmVy
YXRvclN0YXRlUHJpdmF0ZU5hbWUoKSk7Ci0gICAgYXV0byBnZW5lcmF0b3JTdGF0ZSA9IGNvbnRl
eHQuY3JlYXRlQmluZGluZ0xvY2F0aW9uKGxvY2F0aW9uLCBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5i
dWlsdGluTmFtZXMoKS5nZW5lcmF0b3JTdGF0ZVByaXZhdGVOYW1lKCksIHBvc2l0aW9uLCBwb3Np
dGlvbiwgQXNzaWdubWVudENvbnRleHQ6OkRlY2xhcmF0aW9uU3RhdGVtZW50KTsKLSAgICBjb250
ZXh0LmFwcGVuZFBhcmFtZXRlcihwYXJhbWV0ZXJzLCBnZW5lcmF0b3JTdGF0ZSwgMCk7Ci0KKyAg
ICBhZGRQYXJhbWV0ZXIobV92bS0+cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZ2VuZXJh
dG9yU3RhdGVQcml2YXRlTmFtZSgpKTsKICAgICAvLyBAZ2VuZXJhdG9yVmFsdWUKLSAgICBkZWNs
YXJlUGFyYW1ldGVyKCZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZW5lcmF0
b3JWYWx1ZVByaXZhdGVOYW1lKCkpOwotICAgIGF1dG8gZ2VuZXJhdG9yVmFsdWUgPSBjb250ZXh0
LmNyZWF0ZUJpbmRpbmdMb2NhdGlvbihsb2NhdGlvbiwgbV92bS0+cHJvcGVydHlOYW1lcy0+YnVp
bHRpbk5hbWVzKCkuZ2VuZXJhdG9yVmFsdWVQcml2YXRlTmFtZSgpLCBwb3NpdGlvbiwgcG9zaXRp
b24sIEFzc2lnbm1lbnRDb250ZXh0OjpEZWNsYXJhdGlvblN0YXRlbWVudCk7Ci0gICAgY29udGV4
dC5hcHBlbmRQYXJhbWV0ZXIocGFyYW1ldGVycywgZ2VuZXJhdG9yVmFsdWUsIDApOwotCisgICAg
YWRkUGFyYW1ldGVyKG1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRv
clZhbHVlUHJpdmF0ZU5hbWUoKSk7CiAgICAgLy8gQGdlbmVyYXRvclJlc3VtZU1vZGUKLSAgICBk
ZWNsYXJlUGFyYW1ldGVyKCZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZW5l
cmF0b3JSZXN1bWVNb2RlUHJpdmF0ZU5hbWUoKSk7Ci0gICAgYXV0byBnZW5lcmF0b3JSZXN1bWVN
b2RlID0gY29udGV4dC5jcmVhdGVCaW5kaW5nTG9jYXRpb24obG9jYXRpb24sIG1fdm0tPnByb3Bl
cnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclJlc3VtZU1vZGVQcml2YXRlTmFtZSgp
LCBwb3NpdGlvbiwgcG9zaXRpb24sIEFzc2lnbm1lbnRDb250ZXh0OjpEZWNsYXJhdGlvblN0YXRl
bWVudCk7Ci0gICAgY29udGV4dC5hcHBlbmRQYXJhbWV0ZXIocGFyYW1ldGVycywgZ2VuZXJhdG9y
UmVzdW1lTW9kZSwgMCk7CisgICAgYWRkUGFyYW1ldGVyKG1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1
aWx0aW5OYW1lcygpLmdlbmVyYXRvclJlc3VtZU1vZGVQcml2YXRlTmFtZSgpKTsKKyAgICAvLyBA
Z2VuZXJhdG9yRnJhbWUKKyAgICBhZGRQYXJhbWV0ZXIobV92bS0+cHJvcGVydHlOYW1lcy0+YnVp
bHRpbk5hbWVzKCkuZ2VuZXJhdG9yRnJhbWVQcml2YXRlTmFtZSgpKTsKIAogICAgIHJldHVybiBw
YXJhbWV0ZXJzOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Q
YXJzZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKaW5kZXggMjVj
ZWM5NWE3NjFjY2Q4YzI2MzM4MzczMGViMDRlMTU2OTcyMGJhMi4uZGVkNjI0ZjYxN2ZiNmQyNGQw
MGJmMWFjNDZjNDVjMjJkOTliNzIxZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9QYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNl
ci5oCkBAIC0xNDUxLDcgKzE0NTEsNyBAQCBjbGFzcyBQYXJzZXIgewogICAgIEFMV0FZU19JTkxJ
TkUgYm9vbCBpc0Fycm93RnVuY3Rpb25QYXJhbWV0ZXJzKCk7CiAgICAgCiAgICAgdGVtcGxhdGUg
PGNsYXNzIFRyZWVCdWlsZGVyLCBjbGFzcyBGdW5jdGlvbkluZm9UeXBlPiBORVZFUl9JTkxJTkUg
dHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkZvcm1hbFBhcmFtZXRlckxpc3QgcGFyc2VGdW5jdGlvblBh
cmFtZXRlcnMoVHJlZUJ1aWxkZXImLCBTb3VyY2VQYXJzZU1vZGUsIEZ1bmN0aW9uSW5mb1R5cGUm
KTsKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElORSB0eXBlbmFt
ZSBUcmVlQnVpbGRlcjo6Rm9ybWFsUGFyYW1ldGVyTGlzdCBjcmVhdGVHZW5lcmF0b3JQYXJhbWV0
ZXJzKFRyZWVCdWlsZGVyJik7CisgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBORVZF
Ul9JTkxJTkUgdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkZvcm1hbFBhcmFtZXRlckxpc3QgY3JlYXRl
R2VuZXJhdG9yUGFyYW1ldGVycyhUcmVlQnVpbGRlciYsIHVuc2lnbmVkJiBwYXJhbWV0ZXJDb3Vu
dCk7CiAKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElORSBUcmVl
Q2xhc3NFeHByZXNzaW9uIHBhcnNlQ2xhc3MoVHJlZUJ1aWxkZXImLCBGdW5jdGlvblJlcXVpcmVt
ZW50cywgUGFyc2VyQ2xhc3NJbmZvPFRyZWVCdWlsZGVyPiYpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAppbmRleCAwMDYxMjQ1YzVi
NTJkMjVmZDVjMzU0ZmFiZTZjNWI3NmM5MTA5NDIzLi5iOGQ5NzgwMzkyZGFlZjc5ZmUyMTRiMGQy
YzdhNjNjMjMzZTlhYjQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21tb25TbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbW1vblNsb3dQYXRocy5jcHAKQEAgLTM2LDcgKzM2LDYgQEAKICNpbmNsdWRlICJFcnJvci5o
IgogI2luY2x1ZGUgIkVycm9ySGFuZGxpbmdTY29wZS5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkZ1
enouaCIKLSNpbmNsdWRlICJHZW5lcmF0b3JGcmFtZS5oIgogI2luY2x1ZGUgIkdldHRlclNldHRl
ci5oIgogI2luY2x1ZGUgIkhvc3RDYWxsUmV0dXJuVmFsdWUuaCIKICNpbmNsdWRlICJJbnRlcnBy
ZXRlci5oIgpAQCAtNzE0LDM4ICs3MTMsNiBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfYXNz
ZXJ0KQogICAgIEVORCgpOwogfQogCi1TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfc2F2ZSkKLXsK
LSAgICAvLyBPbmx5IHNhdmUgdmFyaWFibGVzIGFuZCB0ZW1wb3JhcnkgcmVnaXN0ZXJzLiBUaGUg
c2NvcGUgcmVnaXN0ZXJzIGFyZSBpbmNsdWRlZCBpbiB0aGVtLgotICAgIC8vIEJ1dCBwYXJhbWV0
ZXJzIGFyZSBub3QgaW5jbHVkZWQuIEJlY2F1c2UgdGhlIGdlbmVyYXRvciBpbXBsZW1lbnRhdGlv
biByZXBsYWNlcyB0aGUgdmFsdWVzIG9mIHBhcmFtZXRlcnMgb24gZWFjaCBnZW5lcmF0b3IubmV4
dCgpIGNhbGwuCi0gICAgQkVHSU4oKTsKLSAgICBKU1ZhbHVlIGdlbmVyYXRvciA9IE9QKDEpLmpz
VmFsdWUoKTsKLSAgICBHZW5lcmF0b3JGcmFtZSogZnJhbWUgPSBudWxscHRyOwotICAgIEpTVmFs
dWUgdmFsdWUgPSBnZW5lcmF0b3IuZ2V0KGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5idWls
dGluTmFtZXMoKS5nZW5lcmF0b3JGcmFtZVByaXZhdGVOYW1lKCkpOwotICAgIGlmICghdmFsdWUu
aXNOdWxsKCkpCi0gICAgICAgIGZyYW1lID0ganNDYXN0PEdlbmVyYXRvckZyYW1lKj4odmFsdWUp
OwotICAgIGVsc2UgewotICAgICAgICAvLyBGSVhNRTogT25jZSBKU0dlbmVyYXRvciBzcGVjaWFs
aXplZCBvYmplY3QgaXMgaW50cm9kdWNlZCwgdGhpcyBHZW5lcmF0b3JGcmFtZSBzaG91bGQgYmUg
ZW1iZWRlZCBpbnRvIGl0IHRvIGF2b2lkIGFsbG9jYXRpb25zLgotICAgICAgICAvLyBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNTQ1Ci0gICAgICAgIGZyYW1lID0g
R2VuZXJhdG9yRnJhbWU6OmNyZWF0ZShleGVjLT52bSgpLCAgZXhlYy0+Y29kZUJsb2NrKCktPm51
bUNhbGxlZUxvY2FscygpKTsKLSAgICAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoZ2VuZXJhdG9y
LCB0cnVlLCBQdXRQcm9wZXJ0eVNsb3Q6OlB1dEJ5SWQpOwotICAgICAgICBhc09iamVjdChnZW5l
cmF0b3IpLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+cHV0KGFzT2JqZWN0KGdlbmVyYXRvciks
IGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JGcmFt
ZVByaXZhdGVOYW1lKCksIGZyYW1lLCBzbG90KTsKLSAgICB9Ci0gICAgdW5zaWduZWQgbGl2ZUNh
bGxlZUxvY2Fsc0luZGV4ID0gcGNbMl0udS51bnNpZ25lZFZhbHVlOwotICAgIGZyYW1lLT5zYXZl
KGV4ZWMsIGV4ZWMtPmNvZGVCbG9jaygpLT5saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZChsaXZlQ2Fs
bGVlTG9jYWxzSW5kZXgpKTsKLSAgICBFTkQoKTsKLX0KLQotU0xPV19QQVRIX0RFQ0woc2xvd19w
YXRoX3Jlc3VtZSkKLXsKLSAgICBCRUdJTigpOwotICAgIEpTVmFsdWUgZ2VuZXJhdG9yID0gT1Ao
MSkuanNWYWx1ZSgpOwotICAgIEdlbmVyYXRvckZyYW1lKiBmcmFtZSA9IGpzQ2FzdDxHZW5lcmF0
b3JGcmFtZSo+KGdlbmVyYXRvci5nZXQoZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLmJ1aWx0
aW5OYW1lcygpLmdlbmVyYXRvckZyYW1lUHJpdmF0ZU5hbWUoKSkpOwotICAgIHVuc2lnbmVkIGxp
dmVDYWxsZWVMb2NhbHNJbmRleCA9IHBjWzJdLnUudW5zaWduZWRWYWx1ZTsKLSAgICBmcmFtZS0+
cmVzdW1lKGV4ZWMsIGV4ZWMtPmNvZGVCbG9jaygpLT5saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZChs
aXZlQ2FsbGVlTG9jYWxzSW5kZXgpKTsKLSAgICBFTkQoKTsKLX0KLQogU0xPV19QQVRIX0RFQ0wo
c2xvd19wYXRoX2NyZWF0ZV9sZXhpY2FsX2Vudmlyb25tZW50KQogewogICAgIEJFR0lOKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCmluZGV4
IGViYzkxMzA2ZjgzYTgxYjdhYTJlZTBlM2IzZmJlMjkyN2U5ZmFkNjIuLjc1MzRmNTY1M2FmMmVj
ZTQxODIxZDA1MWRlNjk4MTQzMTg2ZDI0NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCkBAIC0yNDUsOCArMjQ1LDYgQEAgU0xPV19QQVRI
X0hJRERFTl9ERUNMKHNsb3dfcGF0aF9uZXh0X2dlbmVyaWNfZW51bWVyYXRvcl9wbmFtZSk7CiBT
TE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3RvX2luZGV4X3N0cmluZyk7CiBTTE9XX1BB
VEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3Byb2ZpbGVfdHlwZV9jbGVhcl9sb2cpOwogU0xPV19Q
QVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9hc3NlcnQpOwotU0xPV19QQVRIX0hJRERFTl9ERUNM
KHNsb3dfcGF0aF9zYXZlKTsKLVNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcmVzdW1l
KTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfY3JlYXRlX2xleGljYWxfZW52aXJv
bm1lbnQpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9wdXNoX3dpdGhfc2NvcGUp
OwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9yZXNvbHZlX3Njb3BlKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZyYW1lLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZyYW1lLmNwcApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWY2ZWE3YTEwMDI1OGMzZWNlMDRkYWFiNDNiZGFhODUx
ZWM4ZjcxNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGcmFtZS5jcHAKKysrIC9kZXYv
bnVsbApAQCAtMSw5NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBT
dXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgot
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25m
aWcuaCIKLSNpbmNsdWRlICJHZW5lcmF0b3JGcmFtZS5oIgotCi0jaW5jbHVkZSAiQ29kZUJsb2Nr
LmgiCi0jaW5jbHVkZSAiSGVhcEl0ZXJhdGlvblNjb3BlLmgiCi0jaW5jbHVkZSAiSlNDSlNWYWx1
ZUlubGluZXMuaCIKLSNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCi0jaW5jbHVkZSAiU2xvdFZp
c2l0b3JJbmxpbmVzLmgiCi0jaW5jbHVkZSAiU3RydWN0dXJlSW5saW5lcy5oIgotCi1uYW1lc3Bh
Y2UgSlNDIHsKLQotY29uc3QgQ2xhc3NJbmZvIEdlbmVyYXRvckZyYW1lOjpzX2luZm8gPSB7ICJH
ZW5lcmF0b3JGcmFtZSIsIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoR2Vu
ZXJhdG9yRnJhbWUpIH07Ci0KLUdlbmVyYXRvckZyYW1lOjpHZW5lcmF0b3JGcmFtZShWTSYgdm0s
IHNpemVfdCBudW1iZXJPZkNhbGxlZUxvY2FscykKLSAgICA6IEJhc2Uodm0sIHZtLmdlbmVyYXRv
ckZyYW1lU3RydWN0dXJlLmdldCgpKQotICAgICwgbV9udW1iZXJPZkNhbGxlZUxvY2FscyhudW1i
ZXJPZkNhbGxlZUxvY2FscykKLXsKLX0KLQotdm9pZCBHZW5lcmF0b3JGcmFtZTo6ZmluaXNoQ3Jl
YXRpb24oVk0mIHZtKQotewotICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKLSAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IG1fbnVtYmVyT2ZDYWxsZWVMb2NhbHM7ICsraSkKLSAgICAgICAg
bG9jYWxBdChpKS5jbGVhcigpOwotfQotCi1TdHJ1Y3R1cmUqIEdlbmVyYXRvckZyYW1lOjpjcmVh
dGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVl
IHByb3RvdHlwZSkKLXsKLSAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9i
amVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhDZWxsVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZv
KCkpOwotfQotCi1HZW5lcmF0b3JGcmFtZSogR2VuZXJhdG9yRnJhbWU6OmNyZWF0ZShWTSYgdm0s
IHNpemVfdCBudW1iZXJPZkxvY2FscykKLXsKLSAgICBHZW5lcmF0b3JGcmFtZSogcmVzdWx0ID0K
LSAgICAgICAgbmV3ICgKLSAgICAgICAgICAgIE5vdE51bGwsCi0gICAgICAgICAgICBhbGxvY2F0
ZUNlbGw8R2VuZXJhdG9yRnJhbWU+KHZtLmhlYXAsIGFsbG9jYXRpb25TaXplRm9yTG9jYWxzKG51
bWJlck9mTG9jYWxzKSkpCi0gICAgICAgIEdlbmVyYXRvckZyYW1lKHZtLCBudW1iZXJPZkxvY2Fs
cyk7Ci0gICAgcmVzdWx0LT5maW5pc2hDcmVhdGlvbih2bSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLQotdm9pZCBHZW5lcmF0b3JGcmFtZTo6c2F2ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEZh
c3RCaXRWZWN0b3ImIGxpdmVDYWxsZWVMb2NhbHMpCi17Ci0gICAgLy8gT25seSBzYXZlIGNhbGxl
ZSBsb2NhbHMuCi0gICAgLy8gRXZlcnkgdGltZSBhIGdlbmVyYXRvciBpcyBjYWxsZWQgKG9yIHJl
c3VtZWQpLCBwYXJhbWV0ZXJzIHNob3VsZCBiZSByZXBsYWNlZC4KLSAgICBBU1NFUlQobGl2ZUNh
bGxlZUxvY2Fscy5udW1CaXRzKCkgPD0gbV9udW1iZXJPZkNhbGxlZUxvY2Fscyk7Ci0gICAgbGl2
ZUNhbGxlZUxvY2Fscy5mb3JFYWNoU2V0Qml0KFsmXShzaXplX3QgaW5kZXgpIHsKLSAgICAgICAg
bG9jYWxBdChpbmRleCkuc2V0KGV4ZWMtPnZtKCksIHRoaXMsIGV4ZWMtPnVuY2hlY2tlZFIodmly
dHVhbFJlZ2lzdGVyRm9yTG9jYWwoaW5kZXgpKS5qc1ZhbHVlKCkpOwotICAgIH0pOwotfQotCi12
b2lkIEdlbmVyYXRvckZyYW1lOjpyZXN1bWUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBGYXN0Qml0
VmVjdG9yJiBsaXZlQ2FsbGVlTG9jYWxzKQotewotICAgIC8vIE9ubHkgcmVzdW1lIGNhbGxlZSBs
b2NhbHMuCi0gICAgLy8gRXZlcnkgdGltZSBhIGdlbmVyYXRvciBpcyBjYWxsZWQgKG9yIHJlc3Vt
ZWQpLCBwYXJhbWV0ZXJzIHNob3VsZCBiZSByZXBsYWNlZC4KLSAgICBsaXZlQ2FsbGVlTG9jYWxz
LmZvckVhY2hTZXRCaXQoWyZdKHNpemVfdCBpbmRleCkgewotICAgICAgICBleGVjLT51bmNoZWNr
ZWRSKHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGluZGV4KSkgPSBsb2NhbEF0KGluZGV4KS5nZXQo
KTsKLSAgICAgICAgbG9jYWxBdChpbmRleCkuY2xlYXIoKTsKLSAgICB9KTsKLX0KLQotdm9pZCBH
ZW5lcmF0b3JGcmFtZTo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2
aXNpdG9yKQotewotICAgIEdlbmVyYXRvckZyYW1lKiB0aGlzT2JqZWN0ID0ganNDYXN0PEdlbmVy
YXRvckZyYW1lKj4oY2VsbCk7Ci0gICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2
aXNpdG9yKTsKLSAgICAvLyBTaW5jZSBvbmx5IHRydWUgY2VsbCBwb2ludGVycyBhcmUgc3RvcmVk
IGFzIGEgY2VsbCwgd2UgY2FuIHNhZmVseSBtYXJrIHRoZW0uCi0gICAgdmlzaXRvci5hcHBlbmRW
YWx1ZXModGhpc09iamVjdC0+bG9jYWxzKCksIHRoaXNPYmplY3QtPm1fbnVtYmVyT2ZDYWxsZWVM
b2NhbHMpOwotfQotCi19IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZyYW1lLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9HZW5lcmF0b3JGcmFtZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAzZDU0NWIxNDdkZDRhYmZiMmJiYjliNWE3MTk0ZThmNzQ4NDFjNDlhLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0dlbmVyYXRvckZyYW1lLmgKKysrIC9kZXYvbnVsbApAQCAtMSw5MCArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4uCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgR2VuZXJhdG9yRnJhbWVfaAotI2RlZmluZSBHZW5l
cmF0b3JGcmFtZV9oCi0KLSNpbmNsdWRlICJKU0NlbGwuaCIKLSNpbmNsdWRlIDx3dGYvRmFzdEJp
dFZlY3Rvci5oPgotCi1uYW1lc3BhY2UgSlNDIHsKLQotY2xhc3MgR2VuZXJhdG9yRnJhbWUgOiBw
dWJsaWMgSlNDZWxsIHsKLSAgICBmcmllbmQgY2xhc3MgSklUOwotI2lmIEVOQUJMRShERkdfSklU
KQotICAgIGZyaWVuZCBjbGFzcyBERkc6OlNwZWN1bGF0aXZlSklUOwotICAgIGZyaWVuZCBjbGFz
cyBERkc6OkpJVENvbXBpbGVyOwotI2VuZGlmCi0gICAgZnJpZW5kIGNsYXNzIFZNOwotcHVibGlj
OgotICAgIHR5cGVkZWYgSlNDZWxsIEJhc2U7Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0
cnVjdHVyZUZsYWdzID0gU3RydWN0dXJlSXNJbW1vcnRhbCB8IEJhc2U6OlN0cnVjdHVyZUZsYWdz
OwotCi0gICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKLQotICAgIHN0YXRpYyBHZW5lcmF0b3JGcmFt
ZSogY3JlYXRlKFZNJiwgc2l6ZV90IG51bWJlck9mQ2FsbGVlTG9jYWxzKTsKLQotICAgIFdyaXRl
QmFycmllckJhc2U8VW5rbm93bj4qIGxvY2FscygpCi0gICAgewotICAgICAgICByZXR1cm4gYml0
d2lzZV9jYXN0PFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qPihiaXR3aXNlX2Nhc3Q8Y2hhcio+
KHRoaXMpICsgb2Zmc2V0T2ZMb2NhbHMoKSk7Ci0gICAgfQotCi0gICAgV3JpdGVCYXJyaWVyQmFz
ZTxVbmtub3duPiYgbG9jYWxBdChzaXplX3QgaW5kZXgpCi0gICAgewotICAgICAgICBBU1NFUlQo
aW5kZXggPCBtX251bWJlck9mQ2FsbGVlTG9jYWxzKTsKLSAgICAgICAgcmV0dXJuIGxvY2Fscygp
W2luZGV4XTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgc2l6ZV90IG9mZnNldE9mTG9jYWxzKCkKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Y8c2l6ZW9mKFdyaXRl
QmFycmllcjxVbmtub3duPik+KHNpemVvZihHZW5lcmF0b3JGcmFtZSkpOwotICAgIH0KLQotICAg
IHN0YXRpYyBzaXplX3QgYWxsb2NhdGlvblNpemVGb3JMb2NhbHModW5zaWduZWQgbnVtYmVyT2ZM
b2NhbHMpCi0gICAgewotICAgICAgICByZXR1cm4gb2Zmc2V0T2ZMb2NhbHMoKSArIG51bWJlck9m
TG9jYWxzICogc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPik7Ci0gICAgfQotCi0gICAgc3Rh
dGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1Zh
bHVlIHByb3RvdHlwZSk7Ci0KLSAgICB2b2lkIHNhdmUoRXhlY1N0YXRlKiwgY29uc3QgRmFzdEJp
dFZlY3RvciYgbGl2ZUNhbGxlZUxvY2Fscyk7Ci0gICAgdm9pZCByZXN1bWUoRXhlY1N0YXRlKiwg
Y29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZUNhbGxlZUxvY2Fscyk7Ci0KLXByaXZhdGU6Ci0gICAg
R2VuZXJhdG9yRnJhbWUoVk0mLCBzaXplX3QgbnVtYmVyT2ZDYWxsZWVMb2NhbHMpOwotCi0gICAg
c2l6ZV90IG1fbnVtYmVyT2ZDYWxsZWVMb2NhbHM7Ci0KLSAgICBmcmllbmQgY2xhc3MgTExJbnRP
ZmZzZXRzRXh0cmFjdG9yOwotCi0gICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOwotCi1wcm90
ZWN0ZWQ6Ci0gICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRv
ciYpOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgSlNDCi0KLSNlbmRpZiAvLyBHZW5lcmF0b3JGcmFt
ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXggMWJkZGNlZWRkMDkwY2Ew
OWRkNTFjYTA3OTZhMDRkZmQ4NmJlNDQyYy4uNWYzMWI5Nzg1ZTY2YWNlNmI5OGJiNjUyY2QyMTcy
M2QyMTVmYTkyMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0u
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtNDYsNyAr
NDYsNiBAQAogI2luY2x1ZGUgIkZUTFRodW5rcy5oIgogI2luY2x1ZGUgIkZ1bmN0aW9uQ29uc3Ry
dWN0b3IuaCIKICNpbmNsdWRlICJHQ0FjdGl2aXR5Q2FsbGJhY2suaCIKLSNpbmNsdWRlICJHZW5l
cmF0b3JGcmFtZS5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIkhlYXAu
aCIKICNpbmNsdWRlICJIZWFwSXRlcmF0aW9uU2NvcGUuaCIKQEAgLTI0MCw3ICsyMzksNiBAQCBW
TTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgaW5mZXJyZWRUeXBl
U3RydWN0dXJlLnNldCgqdGhpcywgSW5mZXJyZWRUeXBlOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMs
IDAsIGpzTnVsbCgpKSk7CiAgICAgaW5mZXJyZWRUeXBlVGFibGVTdHJ1Y3R1cmUuc2V0KCp0aGlz
LCBJbmZlcnJlZFR5cGVUYWJsZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkp
OwogICAgIGZ1bmN0aW9uUmFyZURhdGFTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBGdW5jdGlvblJhcmVE
YXRhOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7Ci0gICAgZ2VuZXJhdG9y
RnJhbWVTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlU3RydWN0dXJl
KCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIGV4Y2VwdGlvblN0cnVjdHVyZS5zZXQoKnRoaXMs
IEV4Y2VwdGlvbjo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIHBy
b21pc2VEZWZlcnJlZFN0cnVjdHVyZS5zZXQoKnRoaXMsIEpTUHJvbWlzZURlZmVycmVkOjpjcmVh
dGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgaW50ZXJuYWxQcm9taXNlRGVm
ZXJyZWRTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBKU0ludGVybmFsUHJvbWlzZURlZmVycmVkOjpjcmVh
dGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk0uaAppbmRleCBmMGRlMTUxMzVhOTA3ODc4YjQ3YTFkMzQzNGY2ODI5MWNiNWRjNzNlLi40ZmY5
ZWRkMGE3NzQ2YzI5ZTVlNjdjMzgxZmNlM2IyMDc0Nzk5NTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ZNLmgKQEAgLTMxNiw3ICszMTYsNiBAQCBjbGFzcyBWTSA6IHB1YmxpYyBUaHJlYWRT
YWZlUmVmQ291bnRlZDxWTT4gewogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGluZmVycmVkVHlwZVN0
cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBpbmZlcnJlZFR5cGVUYWJsZVN0cnVjdHVy
ZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBmdW5jdGlvblJhcmVEYXRhU3RydWN0dXJlOwotICAg
IFN0cm9uZzxTdHJ1Y3R1cmU+IGdlbmVyYXRvckZyYW1lU3RydWN0dXJlOwogICAgIFN0cm9uZzxT
dHJ1Y3R1cmU+IGV4Y2VwdGlvblN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBwcm9t
aXNlRGVmZXJyZWRTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gaW50ZXJuYWxQcm9t
aXNlRGVmZXJyZWRTdHJ1Y3R1cmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLWFuZC1hcnJheS5qcyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwtYW5kLWFycmF5LmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmZlOTM5ODEyZmRiYWVjNmI4MzJiZmQwMGYyMTUzZGVmODRiYjc1OTIKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRv
ci1maWItZnRsLWFuZC1hcnJheS5qcwpAQCAtMCwwICsxLDIzIEBACisoZnVuY3Rpb24gKCkgewor
ICAgIGZ1bmN0aW9uICpmaWIoKQorICAgIHsKKyAgICAgICAgbGV0IGEgPSAxOworICAgICAgICBs
ZXQgYiA9IDE7CisgICAgICAgIGxldCBjID0gWyAwIF07CisgICAgICAgIHdoaWxlICh0cnVlKSB7
CisgICAgICAgICAgICBjWzBdID0gYTsKKyAgICAgICAgICAgIHlpZWxkIGM7CisgICAgICAgICAg
ICBbYSwgYl0gPSBbYiwgYSArIGJdOworICAgICAgICB9CisgICAgfQorCisgICAgbGV0IHZhbHVl
ID0gMDsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDFlNDsgKytpKSB7CisgICAgICAgIGxldCBm
ID0gZmliKCk7CisgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwOyArK2kpIHsKKyAgICAg
ICAgICAgIHZhbHVlID0gZi5uZXh0KCkudmFsdWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHZh
bHVlWzBdICE9PSAzNTQyMjQ4NDgxNzkyNjIwMDAwMDApCisgICAgICAgICAgICB0aHJvdyBuZXcg
RXJyb3IoYGJhZCB2YWx1ZToke3Jlc3VsdH1gKTsKKyAgICB9Cit9KCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQt
b2JqZWN0LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3It
ZmliLWZ0bC1hbmQtb2JqZWN0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY2NzM0MGYyZWE0Yzc0MzhhMmQyMDlh
YTQwZDA2NzdlNGFiN2QzZmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLWFuZC1vYmplY3QuanMKQEAgLTAsMCAr
MSwyMyBAQAorKGZ1bmN0aW9uICgpIHsKKyAgICBmdW5jdGlvbiAqZmliKCkKKyAgICB7CisgICAg
ICAgIGxldCBhID0gMTsKKyAgICAgICAgbGV0IGIgPSAxOworICAgICAgICBsZXQgYyA9IHsgZmli
OiAwIH07CisgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICBjLmZpYiA9IGE7Cisg
ICAgICAgICAgICB5aWVsZCBjOworICAgICAgICAgICAgW2EsIGJdID0gW2IsIGEgKyBiXTsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIGxldCB2YWx1ZSA9IDA7CisgICAgZm9yIChsZXQgaSA9IDA7
IGkgPCAxZTQ7ICsraSkgeworICAgICAgICBsZXQgZiA9IGZpYigpOworICAgICAgICBmb3IgKGxl
dCBpID0gMDsgaSA8IDEwMDsgKytpKSB7CisgICAgICAgICAgICB2YWx1ZSA9IGYubmV4dCgpLnZh
bHVlOworICAgICAgICB9CisgICAgICAgIGlmICh2YWx1ZS5maWIgIT09IDM1NDIyNDg0ODE3OTI2
MjAwMDAwMCkKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIHZhbHVlOiR7cmVzdWx0
fWApOworICAgIH0KK30oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLWFuZC1zdHJpbmcuanMgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLWFuZC1zdHJpbmcuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNDM4YWU2YWIzMzQ3MDQ2ODIyODQ5ZjQzMDA0ZWE1YzQwM2VlZGEyOAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9y
LWZpYi1mdGwtYW5kLXN0cmluZy5qcwpAQCAtMCwwICsxLDIyIEBACisoZnVuY3Rpb24gKCkgewor
ICAgIGZ1bmN0aW9uICpmaWIoKQorICAgIHsKKyAgICAgICAgbGV0IGEgPSAxOworICAgICAgICBs
ZXQgYiA9IDE7CisgICAgICAgIGxldCBjID0gIlJlc3VsdCEgIjsKKyAgICAgICAgd2hpbGUgKHRy
dWUpIHsKKyAgICAgICAgICAgIHlpZWxkIGMgKyBhOworICAgICAgICAgICAgW2EsIGJdID0gW2Is
IGEgKyBiXTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGxldCB2YWx1ZSA9IDA7CisgICAgZm9y
IChsZXQgaSA9IDA7IGkgPCAxZTQ7ICsraSkgeworICAgICAgICBsZXQgZiA9IGZpYigpOworICAg
ICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDsgKytpKSB7CisgICAgICAgICAgICB2YWx1ZSA9
IGYubmV4dCgpLnZhbHVlOworICAgICAgICB9CisgICAgICAgIGlmICh2YWx1ZSAhPT0gYFJlc3Vs
dCEgMzU0MjI0ODQ4MTc5MjYyMDAwMDAwYCkKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihg
YmFkIHZhbHVlOiR7cmVzdWx0fWApOworICAgIH0KK30oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLmpzIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4zNDBlMzNkYmM4NjhiZWE3YTg5M2M5ZWMxNmI3NzllYzI2YmRiMTljCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmli
LWZ0bC5qcwpAQCAtMCwwICsxLDIxIEBACisoZnVuY3Rpb24gKCkgeworICAgIGZ1bmN0aW9uICpm
aWIoKQorICAgIHsKKyAgICAgICAgbGV0IGEgPSAxOworICAgICAgICBsZXQgYiA9IDE7CisgICAg
ICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICB5aWVsZCBhOworICAgICAgICAgICAgW2Es
IGJdID0gW2IsIGEgKyBiXTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGxldCB2YWx1ZSA9IDA7
CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxZTQ7ICsraSkgeworICAgICAgICBsZXQgZiA9IGZp
YigpOworICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDsgKytpKSB7CisgICAgICAgICAg
ICB2YWx1ZSA9IGYubmV4dCgpLnZhbHVlOworICAgICAgICB9CisgICAgICAgIGlmICh2YWx1ZSAh
PT0gMzU0MjI0ODQ4MTc5MjYyMDAwMDAwKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBi
YWQgdmFsdWU6JHtyZXN1bHR9YCk7CisgICAgfQorfSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZyYW1lLWVtcHR5LmpzIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZnJhbWUtZW1wdHkuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNTllODg1NWJmYWMzYzU2ZGY5MjZhYmQ0MjhjMDEzYzMzNDE2Mjc0NgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJh
dG9yLWZyYW1lLWVtcHR5LmpzCkBAIC0wLDAgKzEsMzQgQEAKK2Z1bmN0aW9uIHNob3VsZFRocm93
KGZ1bmMsIGVycm9yTWVzc2FnZSkgeworICAgIHZhciBlcnJvclRocm93biA9IGZhbHNlOworICAg
IHZhciBlcnJvciA9IG51bGw7CisgICAgdHJ5IHsKKyAgICAgICAgZnVuYygpOworICAgIH0gY2F0
Y2ggKGUpIHsKKyAgICAgICAgZXJyb3JUaHJvd24gPSB0cnVlOworICAgICAgICBlcnJvciA9IGU7
CisgICAgfQorICAgIGlmICghZXJyb3JUaHJvd24pCisgICAgICAgIHRocm93IG5ldyBFcnJvcign
bm90IHRocm93bicpOworICAgIGlmIChTdHJpbmcoZXJyb3IpICE9PSBlcnJvck1lc3NhZ2UpCisg
ICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIGVycm9yOiAke1N0cmluZyhlcnJvcil9YCk7Cit9
CisKK3Nob3VsZFRocm93KGZ1bmN0aW9uICgpIHsKKyAgICBmdW5jdGlvbiAqZmliKGZsYWcpCisg
ICAgeworICAgICAgICBsZXQgYSA9IDE7CisgICAgICAgIGxldCBiID0gMTsKKyAgICAgICAgeWll
bGQgNDI7CisgICAgICAgIGlmIChmbGFnKQorICAgICAgICAgICAgcmV0dXJuIGM7CisgICAgICAg
IGxldCBjID0gNTAwOworICAgIH0KKworICAgIGxldCB2YWx1ZSA9IDA7CisgICAgZm9yIChsZXQg
aSA9IDA7IGkgPCAxZTQ7ICsraSkgeworICAgICAgICBmb3IgKGxldCB2IG9mIGZpYihmYWxzZSkp
IHsKKyAgICAgICAgfQorICAgIH0KKyAgICBmb3IgKGxldCB2IG9mIGZpYih0cnVlKSkgeworICAg
IH0KK30sIGBSZWZlcmVuY2VFcnJvcjogQ2Fubm90IGFjY2VzcyB1bmluaXRpYWxpemVkIHZhcmlh
YmxlLmApOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9n
ZW5lcmF0b3ItcmVkdWNlZC1zYXZlLXBvaW50LXB1dC10by1zY29wZS5qcyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXJlZHVjZWQtc2F2ZS1wb2ludC1wdXQt
dG8tc2NvcGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzBjNzVmYTQ5MTQzYzE3YmUxNGYzMjgxZTNmNjU0MzRm
MzUxMzllOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9z
dHJlc3MvZ2VuZXJhdG9yLXJlZHVjZWQtc2F2ZS1wb2ludC1wdXQtdG8tc2NvcGUuanMKQEAgLTAs
MCArMSwyOCBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlm
IChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCB2YWx1
ZTogJHtTdHJpbmcoYWN0dWFsKX1gKTsKK30KKworZnVuY3Rpb24gZXJyb3IoKQoreworICAgIHRo
cm93ICJvayI7Cit9CisKK2Z1bmN0aW9uKiBnZW4oKQoreworICAgIHZhciB2YWx1ZSA9IDQyOwor
ICAgIHRyeSB7CisgICAgICAgIHlpZWxkIDMwMDsKKyAgICAgICAgdmFsdWUgPSA1MDA7CisgICAg
ICAgIGVycm9yKCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICB5aWVsZCA0MjsKKyAgICAg
ICAgcmV0dXJuIHZhbHVlOworICAgIH0KKyAgICByZXR1cm4gMjAwOworfQorCit2YXIgZyA9IGdl
bigpOworc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIDMwMCk7CitzaG91bGRCZShnLm5leHQoKS52
YWx1ZSwgNDIpOworc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIDUwMCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>283754</attachid>
            <date>2016-07-15 06:01:09 -0700</date>
            <delta_ts>2016-07-21 06:50:22 -0700</delta_ts>
            <desc>Archive of layout-test-results from ews112 for mac-yosemite</desc>
            <filename>layout-test-results.zip</filename>
            <type>application/zip</type>
            <size>1381892</size>
            <attacher name="Build Bot">buildbot</attacher>
            
              <data encoding="base64">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
b21wb3NpdGluZy9VVAkAA7HSiFe21YhXdXgLAAEE9QEAAAQUAAAAUEsDBAoAAAAAAEQp70gAAAAA
AAAAAAAAAAAUABwAY29tcG9zaXRpbmcvcmVnaW9ucy9VVAkAA5/SiFe21YhXdXgLAAEE9QEAAAQU
AAAAUEsDBBQAAgAIAEQp70hYniWwrQAAABQDAABFABwAY29tcG9zaXRpbmcvcmVnaW9ucy93ZWJr
aXQtZmxvdy1yZW5kZXJlci1sYXllci1jb21wb3NpdGluZy1zdGRlcnIudHh0VVQJAAOf0ohXn9KI
V3V4CwABBPUBAAAEFAAAAO2PsQrCMBRFd78iow5t0mjVFhy0KDiIBUeR8kwfNRqT8hqF/L2Kg+6u
budO5569SPNE5GISy0wcmPZ4hS5YVe3Ql+RaJB9YpxsLxmDNkGgWJXIyTVn/stLNAjrcHs+o/JLI
UbW2dzC6Bo/1gPX19wLP+M7dSGEB6oS8cIQbrDV8KErSsYzlSPCn2jsfWux4aSAg8afsTdX89S9W
zGiLTMps2Nt/RST/iH/EbxEPUEsDBBQAAgAIAE0p70i2JxcBxAAAAPIGAAA8ABwAY29tcG9zaXRp
bmcvc2hvdy1jb21wb3NpdGVkLWlmcmFtZS1vbi1iYWNrLWJ1dHRvbi1zdGRlcnIudHh0VVQJAAOx
0ohXsdKIV3V4CwABBPUBAAAEFAAAAO3PvYrCQBQF4H6fYkotkvnRcaNgoUFhC1GwlCVcJ5c4OmbC
zbgwb69ioS8guwvpzqnO+XZCT6SYKJ0O5fib2YBnaGNtii2GDfkGKUTW2qoG57BkSDRNpPrMNOud
lraaQ4vr/RFNWBB5Kr7qH3C2hIBln/Xsa4PA+NZfyGAO5oA894QrLC08UyL1SKVqKPhtOvgQG2z5
xkFE4rexRypm93+pYc7WyJQaDz52HaJDvAWhxSsi9038FwqRZZ3ijypkp/hVxRVQSwMECgAAAAAA
QinvSAAAAAAAAAAAAAAAABIAHABjb21wb3NpdGluZy92aWRlby9VVAkAA5zSiFe21YhXdXgLAAEE
9QEAAAQUAAAAUEsDBBQAAgAIAEIp70iI2g1ivgAAAPIGAAAyABwAY29tcG9zaXRpbmcvdmlkZW8v
dmlkZW8tY2xpcC1jaGFuZ2Utc3JjLXN0ZGVyci50eHRVVAkAA5zSiFec0ohXdXgLAAEE9QEAAAQU
AAAA7c8xC8IwFATg3V+RUQebNFptBQctCg6i4ChSnulDo7Epr1HIv1dx0MHVQch2N919W5GMYjES
vUimgx3TDi/Q+EoVG3RrsjWS86zRhwqMwZIh0bgby2GasPZ5rg9TaHC1P6FyMyJLxaK6gdElOCw7
rK0/GzjGN/ZKCnNQR+S5JVxiqeGdunEykJHsC/6Ydtb5Ghu+NuCR+GPslYrJ81+kmNEVMimzXmsb
EAHxG0T2icht7f9CIdI0KIIiKL4o7lBLAwQKAAAAAABKKe9IAAAAAAAAAAAAAAAADQAcAGRpc3Bs
YXlsaXN0cy9VVAkAA6zSiFe21YhXdXgLAAEE9QEAAAQUAAAAUEsDBBQAAgAIAEop70ijV/3oUAAA
AI4AAAAyABwAZGlzcGxheWxpc3RzL2V4dGVudC1pbmNsdWRlcy10cmFuc2Zvcm1zLXN0ZGVyci50
eHRVVAkAA6zSiFes0ohXdXgLAAEE9QEAAAQUAAAAcy9KLMjITC52zs8rSa0osbJKTy1xDvHV0FTI
LFbIyy9RqEwtUUjOzy1ILMlMyklVKM8syVAoSk3OL0rJzEsHyoC1FetxuaMbVIxmEDGGAABQSwME
FAACAAgASinvSPKWldVHAAAASQAAACkAHABkaXNwbGF5bGlzdHMvbGF5ZXItZGlzcGF5LWxpc3Qt
c3RkZXJyLnR4dFVUCQADrNKIV6zSiFd1eAsAAQT1AQAABBQAAABzL0osyMhMLnbOzytJrSixskpP
LXEO8dXQVMgsVsjLL1GoTC1RSM7PLUgsyUzKSVUozyzJUChKTc4vSsnMSwfKgLUV63EBAFBLAwQU
AAIACADoKu9IoPLxYltbAADmRQIAIgAcAER1bXBSZW5kZXJUcmVlLTMxNTE2LWNyYXNoLWxvZy50
eHRVVAkAA7PViFez1YhXdXgLAAEE9QEAAAQUAAAA7J3rc9u2ssA/H/0V/HDHR0pjh+CbHF+f8bN1
61ctJ+6cTocDkaDFE4nUJSnHPn/9XYCURL1swZaSNF5P48oitVgsFsD+VgRwlaUBy3NPmf45GvYH
1ywJWXaTMab8qROTWH81rmjRnb0Vfj58SnvDPss/fLo8+3h+/OHdh+nPN05DlhRxFLPMW15K4xPL
8jhNZgv417/+1ThMQ6bcPA7Y9MU/HGvbMpTmBS3ie9YC/TIoSLmaqdTVY9FNk7IW5l+Na5YP0iSP
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
jW8x7+lSgb6pW3rA2MJ5r/YyrGx/PUzO0nRQft9pG0pzfI+Y3wybj6eWpALEpsaqCtQ2ZZnsxuHM
K2JxRezvZvsk3Xlz2yfp7lvePslQv9r2SQbZ0PZJhra57ZMMfV3b3hjG2ra9Mcw1b3tje55ycnOG
W7bilq24ZStu2YpbtuKWrbhlK27Zilu24patuGUrbtm6kS1bHWQOZA5kDmQOZA5kDmQOZA5kDmQO
ZA5kjg0yh4vMgcyBzIHMgcyBzIHMgcyBzIHMgcyBzLE55tBUZA5kDmQOZA5kDmQOZA5kDmQOZA5k
DmSODTIHQeZA5kDmQOZA5kDmQOZA5kDmQOZA5kDm2CBzaMgcyBzIHMgcyBzIHMgcyBzIHMgcyBzI
HBtkDh2ZA5kDmQOZA5kDmQOZA5kDmQOZA5kDmWODzGEAc0wseHjShkGXFTuDLL4Hl3sBc+gRGMHP
WY8F07CxBkNqytoMqStrNqQJhhztpq7sc+Q6iXusXcDVPqIbotuT6Pbs2QiW6VgBohuiG6Lba9FN
aU76zk7Xs7TWDMyt1BnJjwNzSnOsP9jDNlozdLeKPQzrNXQ3rQFIbM3w3ioq6Fr4dJOcpFmb8ekv
L4/pWtw2YTqEOVEoZpBpxTQNfMWWVcx27HAFX7mFgfuQt3Cl4/P62faM3XSrNUOUz6tnOUYQKXNz
/6Co0GPuIJ66a4UsosNe4YcQ7RVsyQe4p5VVP2d5Tu/Y70M2XH7zuK2quyGKKljGwtu46N5AL0mH
lS+9SFqzPrEs+VB1wl9l9noxtyDrmuVQ5VHQsWkltqZaXOfHHdWL5K1uQm9xpVudRNGrasD9b4Ey
OihDVMke0glVd3ISEc8OXCY8eK6Ad7FSW1vLMxpPHPU1olITOs9MlC6OMHLU1gwZr1KBoPOqVMiG
qr5VOwhs3aJHSRSlOcmC0J4vTgozDNKaYf6VjGg+l1zZUGWWZF42VNrTaRmlObGmRwzVbkkmOV6X
qDE2lagxN5iosdaWqLHXl6hx1pxfsKYSNQHYrc/CmO5QPojF6bpTDLWcEBR1zotanGJwTdW1DBsa
Cz5/mYwDEi6KzKQJVhGl2Uw5ie/arE8HXbi/nHN7EMTeM+FM1gw7C4E3EF910odFQm2dmIHTUdSH
8k+NmXBJZPldh7gzwf8qKrLI/H/2rqy5jRxJv+tX8NG9HaBwH46J6cDp9qw81lhuz7x1FItFmWGJ
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
AwQKAAAAAADGKe9IAAAAAAAAAAAAAAAABQAcAGZhc3QvVVQJAAOT04hXttWIV3V4CwABBPUBAAAE
FAAAAFBLAwQKAAAAAAB1Ke9IAAAAAAAAAAAAAAAADAAcAGZhc3QvY2FudmFzL1VUCQAD/tKIV7bV
iFd1eAsAAQT1AQAABBQAAABQSwMEFAACAAgAcCnvSIJH/VatAAAA3gMAAEwAHABmYXN0L2NhbnZh
cy9jYW52YXMtY3NzLXNpemUtYWZ0ZXItaGVpZ2h0LWNoYW5nZS13aXRoLWRpc3BsYXktZmxleC1z
dGRlcnIudHh0VVQJAAP00ohX9NKIV3V4CwABBPUBAAAEFAAAAO2PsQrCMBRFd78iYx3aNNHaIjho
UXAQC45FyjN9aDQ25TUK+XsrDgr+Qrdzp3NPGSdzIeYTGYk0OTLt8A6db1SV29YXZFsk51mnzw0Y
gzVDokUoZJolLLht9HkFHe5PV1RuTWSp2jZPMLoGh/WYBfp3gWP8YB+kMAd1QZ5bwh3WGr4UimQm
IzmNea921vkWO14Y8Ei8l32oWr4PRooZ3SCTcZaNyqFiqBgq/ipeUEsDBBQAAgAIAHUp70jUFt7q
hQAAABoBAAAmABwAZmFzdC9jYW52YXMvY2FudmFzLWxpbmVEYXNoLXN0ZGVyci50eHRVVAkAA/7S
iFf+0ohXdXgLAAEE9QEAAAQUAAAAzc49CsJAFEXh3lXcDRgy0YAMYpOIEKzUTiye5oKByRt5mfi3
erMMy/NVpxkDXIm89M75ZQG+BueKLMSbBNRj/zhQW9rJyPPClfnqgvXWLNrGo9pVURPf6ci075S1
DHePTp8SuhbtVBAz+XhIQqAMCVEJBvbUhH6c4Epo1PmXFrNZ808zP1BLAwQKAAAAAADGKe9IAAAA
AAAAAAAAAAAACQAcAGZhc3QvY3NzL1VUCQADk9OIV7bViFd1eAsAAQT1AQAABBQAAABQSwMEFAAC
AAgAxinvSAxnvQGxAAAAzgEAADYAHABmYXN0L2Nzcy9wZXJzcGVjdGl2ZS1vcmlnaW4taW5pdGlh
bC1pbmhlcml0LXN0ZGVyci50eHRVVAkAA5PTiFeT04hXdXgLAAEE9QEAAAQUAAAAzY8xD4IwFIR3
fsXbxAEaJw0rMBgHDY06Y3mSJm1f0z6I/Hs1Goy7g+Nd7r7c1U2zbwo442WnGTrCCI4YJmTQ1hu0
6Bh65JKsHxg7yZNBuFKAhccQPSrWI2YUdK9ddlvkiTiRGSxGUbXcivosxQsuJA1B4VOVFFCoGEUp
5Re4QmXa0LImlyvv09VmvV5CASPpDt7FojDUH928DrtDoMcWnrZVOmce5I+9TOqf3pz+9eYdUEsD
BAoAAAAAAHAp70gAAAAAAAAAAAAAAAAJABwAZmFzdC9kb20vVVQJAAPz0ohXttWIV3V4CwABBPUB
AAAEFAAAAFBLAwQKAAAAAABwKe9IAAAAAAAAAAAAAAAAGgAcAGZhc3QvZG9tL011dGF0aW9uT2Jz
ZXJ2ZXIvVVQJAAPz0ohXttWIV3V4CwABBPUBAAAEFAAAAFBLAwQUAAIACABwKe9I3v266a8AAADu
AAAAPwAcAGZhc3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIvZGF0YWJhc2UtY2FsbGJhY2stZGVsaXZl
cnktc3RkZXJyLnR4dFVUCQAD89KIV/PSiFd1eAsAAQT1AQAABBQAAABlzkELgkAQBeC7v2JOolBt
4CX2FmWXCEFLz7s6hbDOyLRb9O/TqFO3ebzvweRlWZQaLmSsQ/AMPggBE/TUCg5I3jgwwfPyYdoQ
BkjWQOzBEKAISxqpml0Y8K72xhuVN5Vq0B57ryoO0uKcdiyoTtwFN7En2m6S1tzxM5mPVTuOSbbJ
UtBgmR18R1r/hNYjypVlKEakLXU1Sn99JTNe/Ot8fg3iqTkftK689HSDOI3eUEsDBAoAAAAAAHUp
70gAAAAAAAAAAAAAAAALABwAZmFzdC9mb3Jtcy9VVAkAA/3SiFe21YhXdXgLAAEE9QEAAAQUAAAA
UEsDBBQAAgAIAHUp70guX9jvewEAAPg5AAAzABwAZmFzdC9mb3Jtcy9WYWxpZGl0eVN0YXRlLXBh
dHRlcm5NaXNtYXRjaC1zdGRlcnIudHh0VVQJAAP90ohX/dKIV3V4CwABBPUBAAAEFAAAAO3YTUsD
MRAG4Lu/Yk62grjehCCC1gpWirJbLIIiY3baBnaTNZmt7b83fhwKXvTm4b2EfM1u5jkkIeOyvC0N
lbLsG47jTRclJRe8oYfzsiQb2s41QgvOZU1vTlc0uPZrblxN8SuIZCeq9y2rXeW5HUfxupIkabBX
3IembyUVl6xcjOdVMZeXG6dFFfpopZjwmisbXaejEKXYcozFjzUd2a4bnhwfkKGktTG9d6+9PHca
TyfVyJiHHGXMxVbFhlruWFWiP6OdsZ9pmrvo1qxizHeqQxt8UprProypNDq/pP3Dr+ZMNjriJJX4
5NStnW4Pd78+7Rt1jfMyzb8/2BuDFrSgBS1oQQta0IIWtKAFLWhBC1rQgha0oP0F7SOxkviawiLj
fiYHWMACFrCABez/hm1druTl5Kxa51k/6k+0CJHsiiPb3E+24YS7ArjBDW5wgxvc4AY3uMENbnCD
G6/NoAUtaPF+h4MN3ODGjgxa0IIW9wgcbOAG99+53wFQSwMECgAAAAAAsCnvSAAAAAAAAAAAAAAA
AAwAHABmYXN0L2ZyYW1lcy9VVAkAA2vTiFe21YhXdXgLAAEE9QEAAAQUAAAAUEsDBBQAAgAIALAp
70je/brprwAAAO4AAAAvABwAZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1zdG9yYWdlLXN0
ZGVyci50eHRVVAkAA2vTiFdr04hXdXgLAAEE9QEAAAQUAAAAZc5BC4JAEAXgu79iTqJQbeAl9hZl
lwhBS8+7OoWwzsi0W/Tv06hTt3m878HkZVmUGi5krEPwDD4IARP01AoOSN44MMHz8mHaEAZI1kDs
wRCgCEsaqZpdGPCu9sYblTeVatAee68qDtLinHYsqE7cBTexJ9puktbc8TOZj1U7jkm2yVLQYJkd
fEda/4TWI8qVZShGpC11NUp/fSUzXvzrfH4N4qk5H7SuvPR0gziN3lBLAwQKAAAAAAB8Ke9IAAAA
AAAAAAAAAAAADQAcAGZhc3QvaGlzdG9yeS9VVAkAAwvTiFe21YhXdXgLAAEE9QEAAAQUAAAAUEsD
BBQAAgAIAHwp70je/brprwAAAO4AAABAABwAZmFzdC9oaXN0b3J5L3BhZ2UtY2FjaGUtd2ViZGF0
YWJhc2Utbm8tdHJhbnNhY3Rpb24tZGItc3RkZXJyLnR4dFVUCQADC9OIVwvTiFd1eAsAAQT1AQAA
BBQAAABlzkELgkAQBeC7v2JOolBt4CX2FmWXCEFLz7s6hbDOyLRb9O/TqFO3ebzvweRlWZQaLmSs
Q/AMPggBE/TUCg5I3jgwwfPyYdoQBkjWQOzBEKAISxqpml0Y8K72xhuVN5Vq0B57ryoO0uKcdiyo
TtwFN7En2m6S1tzxM5mPVTuOSbbJUtBgmR18R1r/hNYjypVlKEakLXU1Sn99JTNe/Ot8fg3iqTkf
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
AAAAlinvSAAAAAAAAAAAAAAAABQAHABodHRwL3Rlc3RzL2FwcGNhY2hlL1VUCQADO9OIV7bViFd1
eAsAAQT1AQAABBQAAABQSwMEFAACAAgAlinvSMJNyB10AAAAmwAAAEMAHABodHRwL3Rlc3RzL2Fw
cGNhY2hlLzQwNC1yZXNvdXJjZS13aXRoLXNsb3ctbWFpbi1yZXNvdXJjZS1hY3R1YWwudHh0VVQJ
AAM704hXO9OIV3V4CwABBPUBAAAEFAAAACWM0RHCMAxD/zuFJmCJHhMEBjDBIT7SmLNTuj5O+dGd
pCfdqjgG+witNEDYqEuJ4O+z9kHSfRbiLv2FIo1xSGvoGoCR12AZD9PD2cBf7pByZltsYey6W2a8
mT+OpvScP1RG0JNiMzVozrv5ZUn3db2mtPwAUEsDBBQAAgAIAJYp70gm5dOrQQEAAEoCAABBABwA
aHR0cC90ZXN0cy9hcHBjYWNoZS80MDQtcmVzb3VyY2Utd2l0aC1zbG93LW1haW4tcmVzb3VyY2Ut
ZGlmZi50eHRVVAkAAzvTiFc704hXdXgLAAEE9QEAAAQUAAAAxZDPbsIwDMbvPIXvJaQwpE2cYFDt
sD8cuo2zSV0aLTRV7Az29kvY0B5hyiHK5y+ff7ZSCvS7d/FIrDcoqKtdrXe0f7Tye91H6xq9oX08
aIdfPooSYlGBODph3YkMOiuscRgMmo70vJznuo/BkDpZ6RQ7f1JHtP2fTueBjFAzkbOMiqL4NxA0
EtFdMJZLUNPxDRTT8QyWy5Fab1/q7VMFz1Vdrx6qBayGwVmDYn0P69wD4tCgELRoHTVj2JPByAQZ
Z6H1dHY7KdOZLu7Ksvwju3Zn3Xhi1XtJC7EsGQOMj66BpKU0aEnSh2YygtfOMlwmBOlQAOGIvW2T
8PM2vpc0GeeCZbb9AdoEBSfr3CXNBOQueQn2wZ+YAtAn9WDbi5a3Alcu+CAaGJzHJudgK8mdXRSC
D+CNiYETU/22XqfdjL4BUEsDBBQAAgAIAJYp70go0xV22AAAACcBAABFABwAaHR0cC90ZXN0cy9h
cHBjYWNoZS80MDQtcmVzb3VyY2Utd2l0aC1zbG93LW1haW4tcmVzb3VyY2UtZXhwZWN0ZWQudHh0
VVQJAAM704hXO9OIV3V4CwABBPUBAAAEFAAAADVQzWrDMAy+5yn0AGuS9rKRWwlhl609ZHsA1ZYX
Mdc2lrL28ad0DIFA3x8fGs+n+fw2wfs0z8fXaYBjKZEdKucEI7qFYC0elSAgR/JPcCGHqxAsqmXo
uv3hue1t9sNL3/cdluI2V1dJ8lodSeczyS5l3dGdRVu9K7i8Rg+GWRoEUjP4tvlYWEBJ1PaCCghX
TBwM+LtdToqcZCNYhNMXBOsEN47xEeYqymJagkvNN6EK9EMJODywq3nhvxZ8ExWBmNFvORjU1JuK
as0VsnNrlbaZP8fRPtP8AlBLAwQUAAIACACWKe9INvpWUQgIAAC9GAAASQAcAGh0dHAvdGVzdHMv
YXBwY2FjaGUvNDA0LXJlc291cmNlLXdpdGgtc2xvdy1tYWluLXJlc291cmNlLXByZXR0eS1kaWZm
Lmh0bWxVVAkAAzvTiFc704hXdXgLAAEE9QEAAAQUAAAApVlrb+O4Ff2eX0EkaAMsIsmO7Vk/ZlzM
JE4LdB8FPO1+LCiJsjihRJWkEmfa/vdevmRJlpIUu4MdS+QleR/nnnup+Zirgm0vPuYEp/BTEIVR
kmMhifp0XassWF7DsFQvjGwv1oyWjzdo/UQlVSRF/75A8J8iRxWkJOECK8rLNSp5STZmKuYiJSKI
uVK8WKNpdUQpPJN0c/HfC7ud2yThjIs1uprMVmYufKCM3NMsc/MxTh4PgtdlGnjRbKn/tA+yJ0jO
aIqu0jS1cxkvVZDhgrKXNSp4yWWFE6dggcWBgspTUqCJHao4GGfsEISBRU/EKJRPe5rOZrOB/SUu
ZSCJoFlrUtLvxJzRPjRgJFNrNAkXfjylsmIYNqEleMZp+ExTlcPiyeQPTj+cprQ8NCutbi40+qkb
HacuLXNQSjXiOX8iomfRYrHYjDmbEOuGUMfkJzhLusUZ4xjMEPSQq27ktNQdmI/BFn8UB9dTBSZO
eiYrHDMSJISxjpWB2bfjpeccrAtMDDXUngWuTprtSaJjNwoas7gLmT5cHGa93wFQk+poT9gdKwgv
7A+mkRsU6p++haPqSZqS+EX/jYyqXxhPHv+GhQrB1HVGhVRBklOWjjpWH7eH9TevbSZIAaG9eeM8
d4Z3vwVcEGuRDuwWHnWAFkUTzALM6AFyQ/EBswTRSP8LLlNGvDvcPtqF+j0nNqAnPCe1kDo0Wu1+
BuIYolP7iMGZDXBs8hj1XtOig/NzOBwEedn0gBku3oqXdTEKFX/TzWEmeNFztuNHfYb2+i91ERMB
aCJtdNlRr/g5jTrUrlYdAvTpMkSDPpPn8/kg3bSj33CM3mhhU8CmQUP4DgcOnkMQsep24DRzhNUy
3Jg4SDi2SIy65RWSqoTOTq2mc6BnE4cab0gnV2FRYLPVTIE/zSvYIQh+DPSAVYgW+EA6kVmj28bh
McPai1owAWoAHUAV94T6dp+ispyvRrk3I9mJADSsYMemPLayeWBpmqXdpRBsOS6+IqvNazW92cmx
TFsPlxXj5TpNzzZAKWHjK8jqTW2iH9C+riouFFRa4ZAMTi0KUiqJfojgPFyrnFt/22qsmxlAvQKc
Jj5SZoGRGan/jYxWBgMkjLCnsw8e2JpuMGN3XoNB6Vtbywp8DHrlvYC+wA3dTpq60z8a/P7qOU1m
NyndOWZIz5BXxJbN4JnEj1QFSui0s56wiqPwVm5aZsyd0VdSYVXLL3UMNbyph6HOnkF19BLFOYux
6M77ozNGTIaeJgr+vRltyGlm89j1UfrRdwv6ebwlHGOOV1u5EywyeiR2H8fHk65JITY9iE2z8yr+
TIELRA9qzZ7fA1qm5Agk9Yppp0LYUmHILkdGnfK2dCxWajVdwg6WJjgv5sc3Ff1wUnRqQeyLkH0z
yrrnpoK510bhpjPrHE0zgQurYS9Pum1EK0fuRpj23Dcv0GvyZ1frCYPGEXrmdxSmD6uHE7xcTR6Z
NI7ozjVtZHreHnebY7eHdd85hkdbgtTzrD3msycFf9WZtGe/+hrZu5N8+NET2rmaryRJ67YjC2x7
+TbnllzA8GaEZZz9ugWTQ4dbO3xeT4ZEGI4JW+MMMuzmbLkdN5uYglyCqZfoP+hyc9EU4lb57q9m
GDp0ngXqpSKDW12OauQEe1fcnDBDkE0zinUzOlKjrgoipW88Rv08FJZWduwNUb+nFEKJgYboifJa
3jUj0Mx+J+Vdq1gO1XnfcvRLTLu4aC4H1BokeG537w6JjkRmvga+SxsHDehxiNI50SkXru0bafra
dTauIavKNu/4+p7Sp3XGE+dDXivNF+30i1ltKombArxkoAtUsKk3pF0szS7Qw3zNiT0pcpX2APpr
GxRHCuZiK+2gJtETxZqT1c8OE6BsLPgzBBw6gRzDWtcUURXqJqixY75wXXzTirh3zw66kdX/T7pF
1H/S6ff4BU3hlmUN0wGS/vI9UFGgD+MSP4HvwQOkV1faN72zUhdMw5ltmU4fP3z1H4jB1f39fSul
r5YP9w+Lh0F+guZyGMW73W5I6zUpKmCoTvBdm9aTDOERNO1k/m61nCwdbyWMYPFP0x74q4AeMdem
XIt8jNxXt48yEbSCmIrk02WuVCXXUYS/4WN44PwAiyoqNXTNWMRoLKNv/6qJeImm4Ty8dS8htJbh
N3m5hX3NflvU3TnhKQl0DMkzyP0JIq2D+Wm+bC0BpdyHwpinL/AD+QB6Yyk/XfubgP5emE+30T8g
nsBZ0T1WONr9to9+I/FfqXI/X2rK0uiexPUhApyAMwNFgF/h8l4zJSNtZ6RHZISrKsFJTqL5ZK7n
eS0SyFqq8kBCBQ8KrOnCj0NXU2MWqqMCXaddFVtfiK7PZ8zNfWxc3+iRvbT0RPR1BnW/BJ3kgGZK
L2g+BZz6i+vtFPwK89uOFGR8W+aPZSyrzaAglO7r7d2vv+x//WmHft7t95//vFujz1UFXG7uSehO
uw3VVarzLcMQILg6xiTBtSRIexiANL39MZzAn+l6OZlMTs72DpVRyokMSq4CcqRSac8CoGuWQmoD
VcLGRMGCNHRKAkbAO/6n7akW5K+3btrJ/t+hkDncdtI3Q/FmDG7fEYPpuPu/5lTfvaRyvIuBSEua
wYB9T6wiUk9QKTUhZBAGoGPGjP8SgWVuOd4SOCJPcBGjmRnT0EY+EuiRkEoicJ+mQGQ7EC1FhID7
LU/0l7SzKPw+98ze4Z7bcffs/353B8D8Pcjo/Rjegcw2/2rxP1BLAwQKAAAAAACaKe9IAAAAAAAA
AAAAAAAAEQAcAGh0dHAvdGVzdHMvY2FjaGUvVVQJAANE04hXttWIV3V4CwABBPUBAAAEFAAAAFBL
AwQUAAIACACaKe9ISjxkhO0AAACJBAAAMAAcAGh0dHAvdGVzdHMvY2FjaGUvbWVtb3J5LWNhY2hl
LXBydW5pbmctc3RkZXJyLnR4dFVUCQADQ9OIV0PTiFd1eAsAAQT1AQAABBQAAADt0jFLQzEQB/DZ
9ylurMujafuWIA6+DrYoCCIK4pCXXNPQ66Uk9xS/vYm6OUkFl44JuV9y/9x6JFAdTDutZrpTgG9Z
qVlL0RqCJDbhISYJ7J/nqlssXuBixZt4qYGi92UbspgkuW3bZv1raonD6IuVUW4xZ+Px5ku9KkU7
DaWQ0B0D18f1kTfBj8lIiPwYZNvH/YGwrq4NO8KkoTd2iw6mgGyGcicMxu6QXT6uq4eMqea1DFb0
D1vDpDk7P+X2D7mx+w7usy8j6GN6Ly6PRCf5r+TAQSp5X/QyNfVHNTzd9WAjM9o6SeXMq6Hgmg9Q
SwMEFAACAAgAminvSNGLTcKCAAAAwAAAAD0AHABodHRwL3Rlc3RzL2NhY2hlL25ldHdvcmstZXJy
b3ItZHVyaW5nLXJldmFsaWRhdGlvbi1zdGRlcnIudHh0VVQJAANE04hXRNOIV3V4CwABBPUBAAAE
FAAAAJ3MsQrCMBCA4b1PcaMuYmqzBHGpiwVBcFAQh5ieMXDcSXJRfHvrK7j+/HxDJTAWltaZ1lkD
+C7GtAuS4AmyhoxPyZo4XlbGdt0V1lu81bhxUJDHPZbiI56SPnqvGCV/HMy4Es2b4W85cdIfeZz0
JLzjuzg4H3oIwoxBpzY9L09pbL5QSwMECgAAAAAAlinvSAAAAAAAAAAAAAAAABIAHABodHRwL3Rl
c3RzL2NhbnZhcy9VVAkAAzzTiFe21YhXdXgLAAEE9QEAAAQUAAAAUEsDBAoAAAAAAJYp70gAAAAA
AAAAAAAAAAAYABwAaHR0cC90ZXN0cy9jYW52YXMvd2ViZ2wvVVQJAAM804hXttWIV3V4CwABBPUB
AAAEFAAAAFBLAwQUAAIACACWKe9IDCxlNm8AAACkAAAAOwAcAGh0dHAvdGVzdHMvY2FudmFzL3dl
YmdsL29yaWdpbi1jbGVhbi1jb25mb3JtYW5jZS1zdGRlcnIudHh0VVQJAAM804hXPNOIV3V4CwAB
BPUBAAAEFAAAAPMqzVEwNFUwMLUyNLIyMVFILS82NDTSy8lPTsxRKCpJLkotyC8qycxLjzY2NDU2
ilWw8cxLy7ezUsjJT08HCisUlyQWlRTr6elxeZFslEtqUmk60Kzi1BLf1OLixPRUH4ipTkBN2VYK
QI05qSlcAFBLAwQKAAAAAACXKe9IAAAAAAAAAAAAAAAADwAcAGh0dHAvdGVzdHMvZG9tL1VUCQAD
PdOIV7bViFd1eAsAAQT1AQAABBQAAABQSwMEFAACAAgAlynvSBLl1l7HAAAAUwIAADMAHABodHRw
L3Rlc3RzL2RvbS9kb2N1bWVudC1jb250ZW50VHlwZS1tZXRhLXN0ZGVyci50eHRVVAkAAz3TiFc9
04hXdXgLAAEE9QEAAAQUAAAA5ZGxagMxEERr31dsmTTBOvsaEdycC9sQCASTQEixJ61l4c3KSHs2
/vvo0qZLynQ7sLxhZnYjg+lg3lnT2uUS6FqMaR84OWTI6jKdU9Yo4X1hukX7AY9rGsawslAUs/ZJ
DjGMGTUmeY167NPnmWlSGxTPlC306I7kYQ4kOHC9BnQnEl+a3e/NSfeF8lYOaR2d2h9sC3fN7P5P
DuKfqBQM9J0LlULKt8qVkfm/kaNEnZAvlV63nXq38Pbcg0si5Ka9688FOfrmC1BLAwQKAAAAAACn
Ke9IAAAAAAAAAAAAAAAAEQAcAGh0dHAvdGVzdHMvbWVkaWEvVVQJAANZ04hXttWIV3V4CwABBPUB
AAAEFAAAAFBLAwQKAAAAAACcKe9IAAAAAAAAAAAAAAAAGgAcAGh0dHAvdGVzdHMvbWVkaWEvY2xl
YXJrZXkvVVQJAANH04hXttWIV3V4CwABBPUBAAAEFAAAAFBLAwQUAAIACACcKe9ImSPguVMBAAB/
AwAAOQAcAGh0dHAvdGVzdHMvbWVkaWEvY2xlYXJrZXkvY2xlYXIta2V5LWhscy1hZXMxMjgtc3Rk
ZXJyLnR4dFVUCQADR9OIV0fTiFd1eAsAAQT1AQAABBQAAADNkk1LAzEQhs/2V8zRXpbdttvSKIV+
iB9YKZTioXhIk9ltaDZZkonFf2+2q1LwpiAek5l5532fZJvmLOuxPE/S8fgFrtc3t6vNcjWBKRFW
NT0hHa07LK1RZN0aKdQMjCXwSKRMCaEG0/ZA1TZdAZfSofegPGgruO5s/2TLQ9CQ5fC5C/Dos6yX
nIrgSDisrWvktv0sHwyjj3tT2AmL42XZbPHEHfkkSX4gtcBdKKNWdLyMrniJj63qLA4dGMRBjfKM
RH+U/SMSX/YbBHNrClUGx0lZ86xoP7dVrbE53XEjNToGcy72KCEFNHwXk8GOiwMa6X/HbuPRNa+y
UILYN20Gl52L7hnEwXB4DtFjuQpVvUCtXtFNhQhV0JxQzkJRNK5TBrItglTNlYfC2Qoc8iaLpX2s
CGsMCorn0Tgf9nu/SmTkx3c4cYxeSuveYg4TtO523gFQSwMECgAAAAAAoCnvSAAAAAAAAAAAAAAA
ABUAHABodHRwL3Rlc3RzL21lZGlhL2hscy9VVAkAA0zTiFe21YhXdXgLAAEE9QEAAAQUAAAAUEsD
BBQAAgAIAJwp70gI1yZzwQEAANAEAABAABwAaHR0cC90ZXN0cy9tZWRpYS9obHMvaGxzLWFjY2Vz
c2libGl0eS1kZXNjcmliZXMtdmlkZW8tc3RkZXJyLnR4dFVUCQADSNOIV0jTiFd1eAsAAQT1AQAA
BBQAAADNk81u2zAQhM/NU+yxuQiWLdmNWhhwlKY/iAoDRpCDERS0uKIIU6RKrmrk7bO00yBubkkD
lDeSu7ODb8j1KC/ScZFnyXQ8vYVPq89fltfVcg4LIux6+oG0c35bOavJ+RXS0BdgHUFAIm0VDD3Y
Qw10h6KPIKT0GALoAMbVwpysn0yZvdmU74OBNIeHWTngLqTpONlfgqfaY+98lFtP0jwdsY9vtnHz
gtuVilMCCU8hSZIXSF3gZlCsxY4rdiUUXh1Uz7lpWwA3GpSPJPJkMsu4jRdcarUij6JbGnGHHua8
oOmb8HNhCL0VhFc6UNkKq1CyVOtciH41k9BsSPwp4xMwXPpszP8C/JFSJF0622g1eEHa2RtNbem6
3mDcfRVWGvQFlKJuUcII0IoNA4SNqLdoZXhdRNcBfQz/QtdUPNMu4P3Ju9MjiEd/o0KpxaU2WApT
D4bBn98srCxbrLelYJIVijD4vaKVOy2pjdAUZ8xBAXGQkQBxAQf2W3gtLMVcOeAI3+OvQR+3N951
MJ1kWZ4COZhmZx/O8iOHsxe+pnLwHi09eUQ9p8wnryJs5cMv2OfKqsr5O+ZqB2NO/1Ke/kPle1BL
AwQUAAIACACcKe9IErcXAccBAABFBQAAOgAcAGh0dHAvdGVzdHMvbWVkaWEvaGxzL2hscy1hdWRp
by10cmFja3MtaGFzLWF1ZGlvLXN0ZGVyci50eHRVVAkAA0jTiFdI04hXdXgLAAEE9QEAAAQUAAAA
zVTBahsxED3XXzHH9hK8ide1t8XgbJq2IVsMJiQQShmvZrXCsrSVZmPy9xk5DdjNLSEQ3Va8eTPv
vVld9BayHIZ5kR0X+RhoG7Ps+Mj6Gi0ErgN1PrBx+vYky7Phb/h6RqtezwqI5FRFMaKma8NtiUza
h/sCPrre2k+Di3fIbJzhRLkUduPdT9f4Am4WJdTeOapZ7gRzh9aowe0T/1E+ngjH8tv3xVW1mMGc
mTYd/yLe+rCuvHD6sCTuuwKcZxmfU3PoO3CPGNg8gr4AKhWkN5gIu3EPukzfrMtrsuB/UVx6rQVx
KkXrAqTQ0oFJn5NJcuDc6CUHws3C4j0FmMmBpmvin7llCk7ivDSRyxadJiVUrfcxSUnpGBkIn2By
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
bltSzdNedZ8pDZktg1P7g13uM9ubT1IYc/e/I5/+c/KYX/ABUEsDBAoAAAAAAK8p70gAAAAAAAAA
AAAAAAAeABwAaHR0cC90ZXN0cy9tZWRpYS9tZWRpYS1zb3VyY2UvVVQJAANp04hXttWIV3V4CwAB
BPUBAAAEFAAAAFBLAwQUAAIACAClKe9IDJKcNlIBAACSBAAAQgAcAGh0dHAvdGVzdHMvbWVkaWEv
bWVkaWEtc291cmNlL21lZGlhc291cmNlLWFwcGVuZC1idWZmZXItc3RkZXJyLnR4dFVUCQADVdOI
V1XTiFd1eAsAAQT1AQAABBQAAADN0DtPAzEMB/CdT+ENGNpL7tWHxACUCiQqIQosqKrcxNdG5JKT
kwOOT88h8VhgpptlWfbv70dRTGU2FcUwG2crqBi3C3Sm8lavb9qwO+siBQhm69Ba0kDMJwNZiryE
o6e5+R6+YPa8vnf02pCKpK+ciTOMeAxHS1LeaTisYtccAkZfAznlWxeJSR/3HUiWvmVF56h2lJx7
pgVpgz/VQBZlOkxzkdywj75fRCGZe64xXqLTljgkC/9sKPkgfRTzPkhNLn75hgqscQSyzMRBKmQ5
EKN+K3zGHw+LUQGztm5uyWniOyZ6zGSRZlMpZCrlCq62zrNxW+jTRPb2ztS0wUAQKMKmA2VNfw82
pLDtu6cPS6wbS2dtVRHPTGgsdtfYEcMLBkCt+29GDwihc2rH3pk34j9ok99pk0meZ/8qG8s/ZONc
lP8ry/f2Z6N9lU3EHsjeAVBLAwQUAAIACACmKe9I1Yze7zwBAAB5AwAAUAAcAGh0dHAvdGVzdHMv
bWVkaWEvbWVkaWEtc291cmNlL21lZGlhc291cmNlLWNvbmZpZy1jaGFuZ2UtbXA0LXYtYml0cmF0
ZS1zdGRlcnIudHh0VVQJAANX04hXV9OIV3V4CwABBPUBAAAEFAAAAOWQQU/CQBCF7/6KuQEHaLct
RUg8CEgkkYQIeiGEDLtT2LjdbWa3av31lhj1R3B7eZm8ed/bxcOJSCfxeJDG4z0UjKcVWl04ow7r
2p+nTSAPXp8sGkMKiPmuL/I4y6H7ttB/xw/Mjg8vlj4rkoHU0uowx4A96G5IOqugU4Sm6gAGVwJZ
6WobiEn1WgeijatZ0gzlmaKZY1qR0viv+mKYJ4Mki6M1u+DaIPLRwnGJ4RGtMsQ+Wrl3TdGl0kUs
WpCSbPjtN5BgtCUQeRrf7P6hk+wKoTNxLdBJLPJ+PGpT4QdfiEF6m8K8Lqtnsop4y0S7VAyTdDIe
Z9loD8uTdaztCVqYwM5sdUlH9ASeAhwbkEa37+BIEuvWvX/dYFkZmtZFQTzXvjLYPGFDDB/oAZVq
xwwOEHxj5Zmd1V/EN99QSwMEFAACAAgApynvSNPFJUY8AQAAeQMAAFIAHABodHRwL3Rlc3RzL21l
ZGlhL21lZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1jb25maWctY2hhbmdlLW1wNC12LWZyYW1lcmF0
ZS1zdGRlcnIudHh0VVQJAANZ04hXWdOIV3V4CwABBPUBAAAEFAAAAOWQzU7DMBCE7zzF3loOTeL8
FSpxgJYKJCpVFLhUqNram9TCsaO1A4SnJ5WgPAS30Wg1O99sk2ImspkQUXFRvELFWK/Q6soZtVt3
/nDTB/LgdW3RGFJAzFcTUSZ5CeO3pT4d3zI73j1b+mxJBlL3VocFBjyH8YakswpGVejbEWBwDZCV
rrOBmNT54EC8cR1LmqM8UDx3TCtSGv/URBRlGqV5Eq/ZBTcEkY+XjhsMd2iVIfbxyr1rio+VjmI5
gDRkw2+/SILRlkCUWXK2PUGXSfIPoUX+X6DTRJSTZDqkwg9+FpVFDouuaR/JKuInJtpmokiz2eVl
nk9f4b62jrWtYYAJ7MyTbmiPnsBTgH0P0ujhHexJYje41y8bbFpDN11VES+0bw32D9gTwwd6QKWG
MYMDBN9beWBn9Rfx2TdQSwMEFAACAAgAqynvSG4hd2CLAAAAmgAAADkAHABodHRwL3Rlc3RzL21l
ZGlhL21lZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1wbGF5LXN0ZGVyci50eHRVVAkAA2LTiFdi04hX
dXgLAAEE9QEAAAQUAAAADci9DoIwEADg3ae4F8D0BySwaVhMnJS4GIejPbBJackVYurTy/blU0Ke
ClEXsgJRtVK3Sh2FqqHb5uVOwRL3TPTSslK6bZqy1G+4TiGyCxOYGFaOvnczDZgIEq0wZDDeUdhF
Brd9z88HzounyzaOxJ1Li8d8w0wMX0yA1pKFNQJCysF8OAb3Iz78AVBLAwQUAAIACACtKe9IZCAV
e6UAAAACAwAAOwAcAGh0dHAvdGVzdHMvbWVkaWEvbWVkaWEtc291cmNlL21lZGlhc291cmNlLXJl
bW92ZS1zdGRlcnIudHh0VVQJAANl04hXZdOIV3V4CwABBPUBAAAEFAAAAM2RvQ6CMBRGd5/ivgCm
vyJsGhYTJyUuxqGUCzYpLWkhpj69PIDOsn35ppNzGKG7jOQZlUBkSXnJ5FYUe6jmYbygazHUAfHO
qWS8LAoh+ANOvfPBuB60d1PwtjYDNioiRJygSaCtQbcs1Gpe3sPtqobR4nHuOgyViaNV6awSBnip
CKptsYXJg4KYnH4G78wbw4Z9IZOE/ibL/0smVutstTUpW0HND1BLAwQUAAIACACvKe9INY8wjaQA
AADPAQAARgAcAGh0dHAvdGVzdHMvbWVkaWEvbWVkaWEtc291cmNlL21lZGlhc291cmNlLXNvdXJj
ZWJ1ZmZlci1tb2RlLXN0ZGVyci50eHRVVAkAA2nTiFdp04hXdXgLAAEE9QEAAAQUAAAAxdC9DoIw
FIbh3as4N4DpD4WUTcNi4qTExTgUOGCT0pJTiMGrlwsgjrp9eacnn2A8S1iecAVMFVwWQu9TlUM5
D+MFfYtUEeJdciVkoXWa5g849T6Q9T00wU8UXGUHrE1EiDhBvUDjLPp1YWPmtR5uVzOMDo9z1yGV
No7OLGezIMHLRDBtiy1MAQzExTdPCt6+kXZiS5aJbRlnQub6v7Qvp8lfyT5QSwMEFAACAAgAoCnv
SBDrkbLtAAAAXwEAAC0AHABodHRwL3Rlc3RzL21lZGlhL3BkZi1zZXJ2ZWQtYXMtcGRmLXN0ZGVy
ci50eHRVVAkAA0vTiFdL04hXdXgLAAEE9QEAAAQUAAAAhY9Pa8MwDMXv/RQ69ZY4CQ1tDGGUrmOH
HUboTmUHN1YTg//Nlgf99nPY2uuky3v8noR0rlpeN7ztyrZpP+H1dHof8CthJLiqabHPyfgXZYX+
GN72Vg5oHOFeyoAxchC/AupmW1a56zyWs5CChpnIc8YeiO+qqmIGpRLsW0l0Bc3BEWmUhXZCluOk
nqww2OeVLoURI6N8SenldX2P9t1Sa7p57IX3Wo2ClLMsZ1bnf5/5s4eAgvAYggsHZwxa4oB2dMkS
BpQgLOACOVxuhBCEnRA02olmMCoaQeMMBcTZJS3h8mANqHjX2263Wf0AUEsDBBQAAgAIAKAp70gr
hbHquwAAAOwBAAAvABwAaHR0cC90ZXN0cy9tZWRpYS9yZWxvYWQtYWZ0ZXItZGlhbG9nLXN0ZGVy
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
W5hKzzybbH9NDhJ0QN4VeohyI4do4fG2ARdFyGnplZlX5NCN2PL//euX/V30vkysiuhkoQiZRoEV
kzZRDsH3CQe3n/nElzPTUG1QOqZkoUF3pA4qIMG27IQW3amkmsdddZ8pDZmtg1P7jV3+M7mY/cm/
/0T+AFBLAwQUAAIACACmKe9ITVYz9IMAAADAAAAAPQAcAGh0dHAvdGVzdHMvbWVkaWEvdmlkZW8t
cGxheS1zdGFsbC1iZWZvcmUtbWV0YS1kYXRhLXN0ZGVyci50eHRVVAkAA1jTiFdY04hXdXgLAAEE
9QEAAAQUAAAAncy/CsIwEIDxvU9xoy7StARKEJe6WBAEBwVxiOkZA8ed5I/i2xtfwfXj4zcVAqWh
1Ub1ph0A30mpbkXiLEHMLuJTYg7sL73S3XCF9RZvxW8MJOR5jylZj6eQH6PN6CV+DCy4EC2b6W85
cMg/8lj1ILzjuxg4H0Zwwowu11afl6UwN19QSwMEFAACAAgApinvSB7y3Ai6AAAAkgEAACsAHABo
dHRwL3Rlc3RzL21lZGlhL3ZpZGVvLXF1ZXJ5LXVybC1zdGRlcnIudHh0VVQJAANY04hXWNOIV3V4
CwABBPUBAAAEFAAAAKWQMYsCMRCF69tfMaU2YnZZkCBX3FqoaCkWcsVsMsZgbrIks4j/3nhcZ3eW
D+Z9H/O2YwDVwrzVqtGqBrplpepZiAYDJDGJhpjEszs1qq0X37BcUT+6Tw2ZZE85o6NddK5cfJXS
VUMpBrLV9v9gwSRd5LN3Y0LxkY9eLl38GQI90xrZBkoaOjQXsjAHYuyLE3o0V2Kb35GTHDKlDZ/j
yhvRL2wNk+pj+paB7d9wv3+hkIvpXrg8hjCtHlBLAwQUAAIACACnKe9I1XBVB/MAAAAMBgAAKgAc
AGh0dHAvdGVzdHMvbWVkaWEvdmlkZW8tcmVkaXJlY3Qtc3RkZXJyLnR4dFVUCQADWdOIV1nTiFd1
eAsAAQT1AQAABBQAAADtk0FLA0EMhc/2V+TYXqSzy4IM4qHbQ1sUBBEF8ZCdTadDx0yZySr9950V
T3pq9yKlx4Tke+GFt+o8qAqmlValVgXQV1KquPbBoIcoJtIuRHFs30pVFTfvcDunprN3GhJx+0Ap
oaUXJ5sahWyIew1j7ryfjFYnkx076ZFPme4CL3kdNLw+1mACMxnJvTzzid61A1QSyc/598HaPDHL
S1sNedHTb3B5DFgwSh147WwXsb/225/wsfPUVwvk1lPUUKPZUAtTIMYma0KDZptdTUPESZ4Txd6z
uTOi/7Dzf0ZXk0EKx/z9Qv5/5NPzVV7ydcb5OgBQSwMEFAACAAgApynvSKwbnaLaAAAABgMAACsA
HABodHRwL3Rlc3RzL21lZGlhL3ZpZGVvLXVzZXJhZ2VudC1zdGRlcnIudHh0VVQJAANZ04hXWdOI
V3V4CwABBPUBAAAEFAAAAOWRwUoDQQyGz/YpctSLdFoWZBAP3R5sURBEFMRDdjadDp0mZSar+PZm
xZvHxZOQS0Ly5c+f7ZDBNTBvvFtaAH1U5xaXWQJmKBoKnaRo4vi6dM3i6g2u19QN8cZDJe7vqVaM
9Jx036JSlPLp4ZyHnC9m239FTpx0RD4aPQlveCceXh5aCMJMQa1mPe+YUz9Jv/7Iv5MYrWNlQwcP
NphpElixaCu8S3EoOKr99keOp0xjdovcZyoeWgx76mEOxNjZTugwHMzVOu2qp0pl9GydgvpfbPvP
7Owv//4FUEsDBAoAAAAAAJwp70gAAAAAAAAAAAAAAAAVABwAaHR0cC90ZXN0cy9tZXNzYWdpbmcv
VVQJAANH04hXttWIV3V4CwABBPUBAAAEFAAAAFBLAwQUAAIACACcKe9IpOiOHIMAAADAAAAAQwAc
AGh0dHAvdGVzdHMvbWVzc2FnaW5nL2Nyb3NzLWRvbWFpbi1tZXNzYWdlLWV2ZW50LWRpc3BhdGNo
LXN0ZGVyci50eHRVVAkAA0fTiFdH04hXdXgLAAEE9QEAAAQUAAAAncw9CgIxEEDhfk8xpTZiVmMR
xGZtXBAECwWxiNkxDgwzkh/F27tewfbx+PrKYCzMrTOtsxbwnY1pZ6zBM6QSEj41FZJ4WRi7XF1h
vcVbjRsHGWXYY84+4onKo/MFo6aPg4lU5mnT/y2TUPmRx1EnlZ3c1cH50EFQEQxlbOPz8kxD8wVQ
SwMECgAAAAAAyCnvSAAAAAAAAAAAAAAAABAAHABodHRwL3Rlc3RzL21pc2MvVVQJAAOY04hXttWI
V3V4CwABBPUBAAAEFAAAAFBLAwQUAAIACACnKe9IXoT0aeYAAABiAQAALQAcAGh0dHAvdGVzdHMv
bWlzYy9jb3B5LXJlc29sdmVzLXVybHMtc3RkZXJyLnR4dFVUCQADWdOIV1nTiFd1eAsAAQT1AQAA
BBQAAAB1jUFLw0AQhe/9FXOSRKSTiqIMJSDaXBSVRNrzdjNJV5JM2J0I/nsTG1EKMqf33vfmbfL8
JSfIjGu4BBUw3h7cB0MY9p6DDN4yVOLhoNoT4uryZpmMt6LbJEmwdcHiDxfQStubEJbvfb3ArTRD
O5oPRg1udgXueP/oFItveFL34hkbMSV7nHfRVvjEtbGfY3539Ja276PrqyQGgqBGnYWcq1f16/kH
0WklhX8jIuvZKEdWuqCwe8uICvWuq+Hs4reWedPy5ByxLVuVP4PPUjKcpxMQtCSqhs6qk269F2kg
mttxGi++AFBLAwQUAAIACACoKe9I4nWPMcMAAAD9AAAAPwAcAGh0dHAvdGVzdHMvbWlzYy9kZWxl
dGUtZnJhbWUtZHVyaW5nLXJlYWR5c3RhdGVjaGFuZ2Utc3RkZXJyLnR4dFVUCQADXNOIV1zTiFd1
eAsAAQT1AQAABBQAAABNjk1Lw0AURff9FXepYGWmMbEZxE1jV0GKH6tSypC81ofJTHh5qeivdwoK
vXAXFw7cszC2mJv7uc1hcmczZ4vbRRrV1A8vFFqSNyHaZjbPlq7My/Juh43EgUS/0fGo4HDyHbc4
RDm39+pgjcHVcImNaHwIUdHEoJ4Dnt/r+nq2vTgtdnhIwbpabfY196zU4jEFaz7+7YrHz5VvPig5
nDjZ7V9J/30cnkSSxZewcjgiTunuDOPAHd1AZQqNV4JG/JDE2S9QSwMEFAACAAgAqCnvSHGNJ2PE
AAAA/QAAAFsAHABodHRwL3Rlc3RzL21pc2MvZGVsZXRlLWZyYW1lLWR1cmluZy1yZWFkeXN0YXRl
Y2hhbmdlLXdpdGgtZ2MtYWZ0ZXItdmlkZW8tcmVtb3ZhbC1zdGRlcnIudHh0VVQJAANb04hXW9OI
V3V4CwABBPUBAAAEFAAAAE2OTWvCQBRF9/6Ku2yhlpnG0SYUN6auQpF+rERkSJ72YTITXl4s7a/v
CC144S4uHLjnwdj51Cym1sG4wmaFdfdmNkc5dv0rhYbkXYi2mXXZY5G7PJ/tsJHYk+g3Wh4UHM6+
5QaHKJd2XgtYY3DTX2MDah9CVNQxqOeAl4+qup1sr04XOzylYF2uNvuKO1ZqsEzBmo9/u+ThtPL1
JyWHMye7/Rvpv0+BZ5Fk8SWsHI6IY7q7wDhwS3dQGUPtlaARPyRx8gtQSwMEFAACAAgAyCnvSBU1
NZJ6AAAAvAAAACoAHABodHRwL3Rlc3RzL21pc2MveHNsdC1iYWQtaW1wb3J0LXN0ZGVyci50eHRV
VAkAA5jTiFeY04hXdXgLAAEE9QEAAAQUAAAAjY5BDsMgDATveYU/QCDtoRW/IcRVLBmMjJH6/BLl
A9VeVjuH2SylEScjqYCqohE+xAinWYveb4/XGma2+A4h+EI9e8UuQzN2/+1sbk+Ho9JEzQ2ldW7A
VBGegIwFq8FNl0niXSHCqGmfGhNgScd/uip95PO6lywxLz9QSwMECgAAAAAAoCnvSAAAAAAAAAAA
AAAAABMAHABodHRwL3Rlc3RzL3BsdWdpbnMvVVQJAANM04hXttWIV3V4CwABBPUBAAAEFAAAAFBL
AwQUAAIACACgKe9I/oSpf4IAAADAAAAANgAcAGh0dHAvdGVzdHMvcGx1Z2lucy9jcmVhdGUtdjgt
c2NyaXB0LW9iamVjdHMtc3RkZXJyLnR4dFVUCQADTNOIV0zTiFd1eAsAAQT1AQAABBQAAACdzD0K
AjEQQOF+TzGlNpK4pAliszYuCIKFgljE7JgdGCaSH8XbG69g+3h8Y2XQBpSxurdKAb6z1usVR+8Y
UvEJnzEVknDttdHqBpsd3mvYWsgo0wFzdgHPVObBFQwxfSwspDIvu/FvmYTKjzw1naLs5REtXI4D
+CiCvrTWnpdjmrovUEsDBAoAAAAAAL0p70gAAAAAAAAAAAAAAAAUABwAaHR0cC90ZXN0cy9zZWN1
cml0eS9VVAkAA4XTiFe21YhXdXgLAAEE9QEAAAQUAAAAUEsDBBQAAgAIAKIp70ij5BrgyAAAAN0B
AABVABwAaHR0cC90ZXN0cy9zZWN1cml0eS9jYW52YXMtcmVtb3RlLXJlYWQtcmVtb3RlLXZpZGVv
LWJsb2NrZWQtbm8tY3Jvc3NvcmlnaW4tc3RkZXJyLnR4dFVUCQADUNOIV1DTiFd1eAsAAQT1AQAA
BBQAAAClkDFPwzAQhWfyK26kSxQ3ymIhBtIBqnZEDIjhYl9dq8e5si9C/HscYGNCGe9J73v33n5m
MAN0gzW97Xqgj2LMtuXkkCGry3RNWaOE194MW/MGd09ySvcWOIVQZSiKWUvbts3+36gdTXOorEJ6
pFIw0OGH+lBNFwvVyOTXgJfnxiSnGOaMGpO8RD2P6f3KtFyPKJ4pWxjRnclDByQ41UyY0F1IfFnX
6rlQXvbaRaf2D9vCbXOzWZUg/ne4716oFFL+rFyZmTfNF1BLAwQUAAIACACiKe9Iw6OSWyUBAAC7
AgAASAAcAGh0dHAvdGVzdHMvc2VjdXJpdHkvY2FudmFzLXJlbW90ZS1yZWFkLXJlbW90ZS12aWRl
by1sb2NhbGhvc3Qtc3RkZXJyLnR4dFVUCQADUNOIV1DTiFd1eAsAAQT1AQAABBQAAAClkk1PwzAM
hs/sV/jIDkzttmoiQpNYd4AJpGkTGlK1Q5a4abTgTEnK16/HneDCgQP1LZH9vPZrr1oHeQFZIfKJ
yKaAbzHPxyPnlXQQkgp48iFZMtUkL8b5Hm6WeGjNXEBE0o8YozS4s6kpZULjw4eAS2qdGw5W/yZb
sqlDbpluPd1T7QU8r0tQnghV4j/OeZXO6kH1wx8V2YQZHFBubhdbmHNA7drYrLlT1tmgQxlxi0lA
lb3PaoVyOrsea53tYcF9HSGDRkYgT1efGDwErFmzpQTTHuNETN8+PXhjOOOsJYALHeo+4CRDKj3V
1rRBdracF+FfTg67150k7TAIKKVqUPN0SPLAmnCQ6simxH5TPUUM3XKWVrGlv9l8CIOLYS+Fvw/s
C1BLAwQUAAIACACjKe9IiuHwQ+QAAAAGAwAARwAcAGh0dHAvdGVzdHMvc2VjdXJpdHkvY2FudmFz
LXJlbW90ZS1yZWFkLXJlbW90ZS12aWRlby1yZWRpcmVjdC1zdGRlcnIudHh0VVQJAANR04hXUdOI
V3V4CwABBPUBAAAEFAAAAM2RMU8DMQyFZ/orPLYLurTcEiGGXodStRISQiAhBl/OTaMap0p8IP49
OcQEU3UMjLbs7z0/b3oGU0NVW7Ow1RXQezZmfsnRIUNSl+gUkwbxzwtTz80LXK+o7f2NhUzS7Shn
9PQY9NCgko/pw8JUeubZZPMPyUGCDsj7Qg9RbmUfLTzdNeCiCDktvTLzhhy6Hyr1Wf712/42el8m
lmXpaKEsMo0CKyZtouyD7xMObr/yia8npqFao3RMyUKD7kAdVECCbdGEFt2xpJrHXfWQKQ2ZrYJT
+4td/jO5mI1SOOfvf0n+BFBLAwQKAAAAAAC1Ke9IAAAAAAAAAAAAAAAAKgAcAGh0dHAvdGVzdHMv
c2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L1VUCQADddOIV7bViFd1eAsAAQT1AQAABBQA
AABQSwMEFAACAAgAoinvSLmI35rWAAAA+AEAAEsAHABodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRl
bnRTZWN1cml0eVBvbGljeS9hdWRpby1yZWRpcmVjdC1hbGxvd2VkLXN0ZGVyci50eHRVVAkAA0/T
iFdP04hXdXgLAAEE9QEAAAQUAAAApZAxSwQxEIVr91dMqY1sbtkmiIV7xXmcIIgoiMVsMpcLNzc5
klnFf29W7Ozc8sF73+O97cRgemh7azrbdkCfxZjVNSeHDFldpnPKGiW8daY3q3e4WdM4hVsLhfSB
SsFAuxRCddzV0NFCDTL5Zvt/sGLWIck+himjxiQvUQ9DOp2ZZrVB8UzZwoDuQB5aIMGxdsKI7kji
y5Jy0udC+V72aR2d2j9sC5fNxdWiBvG/x/3sQqWQ8lflysS8hBwl6ox8qvT607zBwuvjAC6JkJu/
q54P5Oibb1BLAwQUAAIACAChKe9I/Eq18eYAAACdAgAATAAcAGh0dHAvdGVzdHMvc2VjdXJpdHkv
Y29udGVudFNlY3VyaXR5UG9saWN5L2F1ZGlvLXJlZGlyZWN0LWFsbG93ZWQyLXN0ZGVyci50eHRV
VAkAA07TiFdO04hXdXgLAAEE9QEAAAQUAAAAzdGxSgQxEAbg2n2KKbVZNntsE8TCvUKPOxBEFMRi
NpnLhYuTI5lVfHsTtbOSbSwTMt9k/tnMAdQA3aDVSnc90HtWqm9DNBggiUl0ikk8u+eVGlT/Ape3
vI9XGkJ0rlxDFkyS27ZtNn+m1jTNrliZZEc5o6Ptt3pdio4aSmEguwSunxsj772bE4qP/OjlMMbX
U6B6ukG2gZKGEc2BLHRAjFPpCROaI7HNy6Z6yJRqXmtvRP+yNZw3ZxeLOrD9Ce5rLhRyMX0Ul+cQ
/qfs2Usl74teNlDT0fB0N4KJzGTqVsqbNwzeNp9QSwMEFAACAAgAoinvSB/90eCnAAAAigEAAFgA
HABodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9ibG9iLXVybC1kb2Vz
LW5vdC1tYXRjaC1zb3VyY2Utc2VsZi1zdGRlcnIudHh0VVQJAANP04hXT9OIV3V4CwABBPUBAAAE
FAAAAN2PvQ6CMBRGd5+iIw5QKOAPiYMSTRyMJIzEkGu5wWql5Laa8PZiHPQZ3M43nfNVYZpFcRbG
QZLGJ6Yc3sEOnaxLdAWZHskNzKq2A62xYUi08iMxX6TMu+1UuwGLx/MVpdsSGar33RO0asBhM2We
+l3gGC/NgyTmIC/Ic0N4wEbBl/wonYlAJCEf1c64oUfLCw0DEh9lH6rX775AMq06ZEIs40n1Dyde
UEsDBAoAAAAAAKQp70gAAAAAAAAAAAAAAABEABwAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50
U2VjdXJpdHlQb2xpY3kvdXBncmFkZS1pbnNlY3VyZS1yZXF1ZXN0cy9VVAkAA1PTiFe21YhXdXgL
AAEE9QEAAAQUAAAAUEsDBBQAAgAIAKQp70gL5fml6AAAACYDAAB5ABwAaHR0cC90ZXN0cy9zZWN1
cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvdXBncmFkZS1pbnNlY3VyZS1yZXF1ZXN0cy91cGdy
YWRlLWluc2VjdXJlLWF1ZGlvLXZpZGVvLWluLW1haW4tZnJhbWUtc3RkZXJyLnR4dFVUCQADU9OI
V1PTiFd1eAsAAQT1AQAABBQAAADNUTtPwzAQ3vkVN8JAYrdpg7xVKYiBoYraqWIwzrVYxOfgB0N/
fa8PIQYEEgMgL3e+7yV9azFRcqxEXdRCPML9crlo8TVjTLCx2w9rE1AnvA3Bh8Y7h5QUIBmfKWHA
DjQBHo4KMgU0fkt2x9/PKQ0QMA6eIkIlxMX6a0fGn9e57Vo0aN+wPfMb3fdP2rwoVjwePtGHy2MM
uJaj6bS+gg3PB5AqSzmqC8FPqpuqGpfM8jkYjGVit8IN1XfZeJ1nN9xZ0v2qfZgRB3Q+4azrWCwq
0KcB3p2YxljIof9ZCPnrlch/XIn8q0r2UEsDBAoAAAAAAKQp70gAAAAAAAAAAAAAAAA9ABwAaHR0
cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvdXNlckFnZW50U2hhZG93RE9N
L1VUCQADVNOIV7bViFd1eAsAAQT1AQAABBQAAABQSwMEFAACAAgAoynvSEyUzj/WAAAA+AEAAFMA
HABodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS91c2VyQWdlbnRTaGFk
b3dET00vYWxsb3ctYXVkaW8tc3RkZXJyLnR4dFVUCQADUdOIV1HTiFd1eAsAAQT1AQAABBQAAACl
kDFLA0EQhWvvV0ypjdwarlnEwkuRhAQCIgpiMbc72SzZzITdOcV/757Y2Xnlg/e+x3ubMYHpoO2s
Wdi2A/osxtzdJnGYIKvLdJGskcPbwnSmfYf7JQ1jeLBQSHdUCgbaSgjV8VhDJws1mMg3m/+DFbP2
wocYxowahV+iHns5XxJNaoXsE2ULPbojeWiBGIfaCQO6E7Evc8pJnwvlNR9kGZ3aP2wL183VzawG
9r/H/exCpSD5q3J5TGkOOXLUCflU6fWnaYOF130PTpjJTd9Vzwem6JtvUEsDBBQAAgAIAKQp70ij
/3ImuwAAAJIBAABTABwAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kv
dXNlckFnZW50U2hhZG93RE9NL2FsbG93LXZpZGVvLXN0ZGVyci50eHRVVAkAA1PTiFdT04hXdXgL
AAEE9QEAAAQUAAAApZAxa8MwEIXn+lfcmCzFijEFUTrEGZKQjqVD6XCWzrKIcjLSiZJ/H7V069aM
D+59H/eOJYDqoe216nT7BPSVldo8hmgwQBKTaIlJPLuPTvWq/YTnHY3FvWjIJK+UMzo6RefqxbaW
zhpqMZBtjv8HCyYZIk/elYTiI797mYd4WQJ9pz2yDZQ0DGhmstACMY7VCSOaM7HN98hJ3jKlA09x
543oP2wNq+ZhfZeB7e9wP3+hkIvpWrlcQlg3N1BLAwQUAAIACACkKe9ImQVfM4MAAADAAAAAawAc
AGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3VzZXJBZ2VudFNoYWRv
d0RPTS9kZWZhdWx0LXNyYy1vYmplY3QtZGF0YS11cmwtYWxsb3dlZC1zdGRlcnIudHh0VVQJAANU
04hXVNOIV3V4CwABBPUBAAAEFAAAAJ3MMQoCMRBA0X5PMaU2krgEIYjN2rggCBYKYhGzYxwIE0km
irc3XsH283ljjaANKGN1b9UK8F20Xi5i8i5CFp/xmbIQh0uvjVZXWG/xVsPGQkGe9liKC3gieQxO
MKT8sTDjGuO8G/+WiUl+5LHplHjH92ThfBjAJ2b00lp7Xi7S1H0BUEsDBBQAAgAIALMp70iKSu78
3QAAAFICAABLABwAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvdmlk
ZW8tcmVkaXJlY3QtYWxsb3dlZC1zdGRlcnIudHh0VVQJAANx04hXcdOIV3V4CwABBPUBAAAEFAAA
AKWRMUsEQQyFa+9XpPQaubllLQaxcK/QQ0EQURCL7GxubrgxOWayiv/erNgJFm6ZkPe95GU7ZnAt
rFrvGt+cA31U59ZnWQJmKBoKHaVo4vjSuNatX+FiQ/0YLz1U4uGOasVIT0n3HSpFKZ8eTnnMebnY
/pucOOmEfDB6Er7hnXh4vu8gCDMFtZ7NvGNOwwyXSvqz/q3EaBNXJjp4MGGmWWDFop3wLsWx4LTt
dz7ydsw0VdfIQ6biocOwpwFWQIy9eUKP4WCp1nlXPVYqU2abFNT/Ytt/FifLWQ5///0LUEsDBBQA
AgAIALIp70iWdX+ouwAAAJIBAABMABwAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJp
dHlQb2xpY3kvdmlkZW8tcmVkaXJlY3QtYWxsb3dlZDItc3RkZXJyLnR4dFVUCQADcNOIV3DTiFd1
eAsAAQT1AQAABBQAAAClkDFvwjAQhWfyK25slgoTpYNVMRCGNipj1aFiuNgXx8KckX0R4t/jIrZu
MD7p3vfpXj8HUC0sW60a3bwBnbNSq9cQDQZIYhKdYhLP7rdRrVrt4X1Lw+zWGjLJjnJGR1/RuXKx
KaWDhlIMZKv+cbBgki7y6N2cUHzkHy9TF4+nQH/pA9kGSho6NBNZWAIxDsUJA5oDsc3PyEm+M6VP
HuPWG9H/2BpeqkX9lIHtfbjbXyjkYroULs8h1NUVUEsDBBQAAgAIALMp70jsYljo3QAAAFICAABm
ABwAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvdmlkZW8td2l0aC1o
dHRwLXVybC1hbGxvd2VkLWJ5LWNzcC1tZWRpYS1zcmMtc3Rhci1zdGRlcnIudHh0VVQJAANx04hX
cdOIV3V4CwABBPUBAAAEFAAAAKWRQUsDQQyFz/ZX5Ggv0umyCIN4cHvQoiCIKIiH7Gw6HTomZSar
+O/NijfBg3tMyPte8rIdM7gWVq13jW/OgT6qc+uzLAEzFA2FjlI0cXxpXOvWr3CxoX6Mlx4q8XBH
tWKkp6T7DpWilE8PpzzmvFxs/01OnHRCPhg9Cd/wTjw833cQhJmCWs9m3jGnYYZLJf1Z/1ZitIkr
Ex08mDDTLLBi0U54l+JYcNr2Ox95O2aaqmvkIVPx0GHY0wArIMbePKHHcLBU67yrHiuVKbNNCup/
se0/i5PlLIe///4FUEsDBBQAAgAIALMp70jcv8B9gwAAAMAAAABZABwAaHR0cC90ZXN0cy9zZWN1
cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvd29ya2VyLWJsb2ItaW5oZXJpdHMtY3NwLWJsb2Nr
cy1ldmFsLXN0ZGVyci50eHRVVAkAA3HTiFdx04hXdXgLAAEE9QEAAAQUAAAAncw9CgIxEEDhfk8x
pTZiNgQhiM3auCAIFgpiEbNjHAgzkh/F2xuvYPt4fGONoAwsjVXa6hXgOyvVL6J4FyEVn/ApqRCH
i1ZG9VdYb/FWw8ZCRp72mLMLeKLyGFzBIOljYcY1xnk3/i0TU/mRx6aT8I7vYuF8GMALM/rSWnte
LtLUfQFQSwMEFAACAAgAtCnvSGOqrGyCAAAAqAAAAEAAHABodHRwL3Rlc3RzL3NlY3VyaXR5L2Nv
bnRlbnRTZWN1cml0eVBvbGljeS94c2wtYWxsb3dlZC1zdGRlcnIudHh0VVQJAAN004hXdNOIV3V4
CwABBPUBAAAEFAAAAC2NQQrDMAwE73mFXhA7vaT4FYW+ILgbYlAsIyml/n1NKXtahtnNcrbCmxep
BFXRRHth0OHeUgjLbZ3jyJLuMcZgyJcW7yFLdVR//vtDuOQeFCaXZlgw74z5Y0xcKmglMM4h0A/Y
Afg0aHpDbVwnksqdljnSjs2vMUSbguxqTdTxmr5QSwMEFAACAAgAtSnvSGOqrGyCAAAAqAAAAFIA
HABodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS94c2wtdW5hZmZlY3Rl
ZC1ieS1zdHlsZS1zcmMtMi1zdGRlcnIudHh0VVQJAAN104hXddOIV3V4CwABBPUBAAAEFAAAAC2N
QQrDMAwE73mFXhA7vaT4FYW+ILgbYlAsIyml/n1NKXtahtnNcrbCmxepBFXRRHth0OHeUgjLbZ3j
yJLuMcZgyJcW7yFLdVR//vtDuOQeFCaXZlgw74z5Y0xcKmglMM4h0A/YAfg0aHpDbVwnksqdljnS
js2vMUSbguxqTdTxmr5QSwMEFAACAAgAoynvSKRnDTyCAAAAwAAAADUAHABodHRwL3Rlc3RzL3Nl
Y3VyaXR5L2NvcnMtcG9zdC1yZWRpcmVjdC0zMDEtc3RkZXJyLnR4dFVUCQADUdOIV1HTiFd1eAsA
AQT1AQAABBQAAACdzLEKwjAQgOG9T3GjLtJryRLEpS4WBMFBQRxiesbAcZHkovj21ldw/fn5xsqA
BlpjsbetAXoXxG7FyTuGrD7TM2WNEi49mg6vsN7SrYaNhUIy7akUF+gU9TE4pZDyx8JCKvOyGf+W
o0T9kcdZj0l2ck8WzocBfBIhr3Obn5fjODVfUEsDBBQAAgAIAKsp70irePuhtQAAANwBAAA6ABwA
aHR0cC90ZXN0cy9zZWN1cml0eS9jcm9zcy1vcmlnaW4td2Vic3FsLWFsbG93ZWQtc3RkZXJyLnR4
dFVUCQADYdOIV2HTiFd1eAsAAQT1AQAABBQAAADlz7EKwkAMBuDdp8gkLagndJHbROsiUmi1zndt
KoVrUtI7xbe3FZ18BLf85PshSfM8yzVcyFiH4Bl8EAImaKkS7JC8cWCC5+XdVCF0EK2B2IMhQBGW
eKZKdqHDQe2NNyq9FuqK9th6VXCQCqe0Y0F14jq4kT3Q1qO0ZsB3ZRpWVd9HySaJQYNldvApaf0V
WvcoDUuX9UhbqkuUtnlGE1786nQ6Debj5nzQuvDS0g3m8Sz9q29fUEsDBBQAAgAIAKsp70je/brp
rwAAAO4AAAAyABwAaHR0cC90ZXN0cy9zZWN1cml0eS9jcm9zcy1vcmlnaW4td2Vic3FsLXN0ZGVy
ci50eHRVVAkAA2LTiFdi04hXdXgLAAEE9QEAAAQUAAAAZc5BC4JAEAXgu79iTqJQbeAl9hZllwhB
S8+7OoWwzsi0W/Tv06hTt3m878HkZVmUGi5krEPwDD4IARP01AoOSN44MMHz8mHaEAZI1kDswRCg
CEsaqZpdGPCu9sYblTeVatAee68qDtLinHYsqE7cBTexJ9puktbc8TOZj1U7jkm2yVLQYJkdfEda
/4TWI8qVZShGpC11NUp/fSUzXvzrfH4N4qk5H7SuvPR0gziN3lBLAwQUAAIACACuKe9IgCltjroA
AACSAQAAPQAcAGh0dHAvdGVzdHMvc2VjdXJpdHkvbG9jYWwtdmlkZW8tc291cmNlLWZyb20tcmVt
b3RlLXN0ZGVyci50eHRVVAkAA2fTiFdn04hXdXgLAAEE9QEAAAQUAAAApZAxiwIxEIXr218xpTZi
dlmEIFfcWqhoKRZyxWwyxmBusiSziP/eeFxnd5YP5n0f87ZjANXCvNWq0fUC6JaVqmchGgyQxCQa
YhLP7tSotlbfsFxRP7pPDZlkTzmjo110rlx8ldJVQykGstX2/2DBJF3ks3djQvGRj14uXfwZAj3T
GtkGSho6NBeyMAdi7IsTejRXYpvfkZMcMqUNn+PKG9EvbA2T6mP6loHt33C/f6GQi+leuDyGMK0e
UEsDBBQAAgAIAK4p70hYirIXgwAAAMAAAAA6ABwAaHR0cC90ZXN0cy9zZWN1cml0eS9sb2NhbC12
aWRlby1zcmMtZnJvbS1yZW1vdGUtc3RkZXJyLnR4dFVUCQADaNOIV2jTiFd1eAsAAQT1AQAABBQA
AACdzDEKAjEQQNF+TzGlNmKyBCSIzdq4IAgWCmIRs2McCBNJJoq3N17B9vN5Y42gDCyNVb3VK8B3
UUovYvIuQhaf8ZmyEIdLr4xWV1hv8VbDxkJBnvZYigt4InkMTjCk/LEw4xrjvBv/lolJfuSx6ZR4
x/dk4XwYwCdm9NJae14u0tR9AVBLAwQKAAAAAAClKe9IAAAAAAAAAAAAAAAAIQAcAGh0dHAvdGVz
dHMvc2VjdXJpdHkvbWl4ZWRDb250ZW50L1VUCQADVtOIV7bViFd1eAsAAQT1AQAABBQAAABQSwME
FAACAAgApSnvSER6YZLgAAAAPgQAAE4AHABodHRwL3Rlc3RzL3NlY3VyaXR5L21peGVkQ29udGVu
dC9pbnNlY3VyZS1hdWRpby12aWRlby1pbi1tYWluLWZyYW1lLXN0ZGVyci50eHRVVAkAA1bTiFdW
04hXdXgLAAEE9QEAAAQUAAAA7ZIxSwNBEIVr71dMqY1kc1yziIWXIoYIgoiCWMztTjZLNrNhd07x
3zsndnaJZcqB977HvJnVmMB0MOusaa2ZAX1WY+bXKTtMUMQVOuQikcNba7p2/g43CxrGcGuhkjxQ
rRhonUNQxZ2adhbUmMg3q+PBgkX6zJsYxoISM79E2fZ5f0g0TUtkn6hY6NFtyYOyGQfNhAHdjtjX
U8JJniuVe97kRXRi/7AtXDYXV6clnHs7KoH9b3E/e6FQyOVLuTymdCb/FzlylAn5pHT9mumiFl4f
e3CZmdz0Sar5wBR98w1QSwMEFAACAAgApSnvSHTN5ayCAAAAwAAAAEIAHABodHRwL3Rlc3RzL3Nl
Y3VyaXR5L21peGVkQ29udGVudC9pbnNlY3VyZS1jc3MtaW4taWZyYW1lLXN0ZGVyci50eHRVVAkA
A1bTiFdW04hXdXgLAAEE9QEAAAQUAAAAncw9CgIxEEDhfk8xpTaysyFNEJu1cUEQLBTEImbHGAgz
kh/F2xuvYPt4fFONgBp6bVAZ7IHeGXFYRXE2Qiou0VNSCewvCrUarrDe0q36jYFMPO8pZ+vpFMpj
tIW8pI+BBdcYl930txw4lB95bHoQ3vFdDJwPIzhhJldaa8/LxjB3X1BLAwQUAAIACAC2Ke9I3v26
6a8AAADuAAAAPwAcAGh0dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1sb29zZW5l
ZC13ZWJzcWwtc3RkZXJyLnR4dFVUCQADeNOIV3jTiFd1eAsAAQT1AQAABBQAAABlzkELgkAQBeC7
v2JOolBt4CX2FmWXCEFLz7s6hbDOyLRb9O/TqFO3ebzvweRlWZQaLmSsQ/AMPggBE/TUCg5I3jgw
wfPyYdoQBkjWQOzBEKAISxqpml0Y8K72xhuVN5Vq0B57ryoO0uKcdiyoTtwFN7En2m6S1tzxM5mP
VTuOSbbJUtBgmR18R1r/hNYjypVlKEakLXU1Sn99JTNe/Ot8fg3iqTkftK689HSDOI3eUEsDBBQA
AgAIALcp70je/brprwAAAO4AAABDABwAaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJsb2Nr
aW5nLXN0cmVuZ3RoZW5lZC13ZWJzcWwtc3RkZXJyLnR4dFVUCQADedOIV3nTiFd1eAsAAQT1AQAA
BBQAAABlzkELgkAQBeC7v2JOolBt4CX2FmWXCEFLz7s6hbDOyLRb9O/TqFO3ebzvweRlWZQaLmSs
Q/AMPggBE/TUCg5I3jgwwfPyYdoQBkjWQOzBEKAISxqpml0Y8K72xhuVN5Vq0B57ryoO0uKcdiyo
TtwFN7En2m6S1tzxM5mPVTuOSbbJUtBgmR18R1r/hNYjypVlKEakLXU1Sn99JTNe/Ot8fg3iqTkf
tK689HSDOI3eUEsDBBQAAgAIALgp70hpcwEx7gAAAJgEAAA5ABwAaHR0cC90ZXN0cy9zZWN1cml0
eS92aWRlby1jcm9zcy1vcmlnaW4tY2FjaGluZy1zdGRlcnIudHh0VVQJAAN704hXe9OIV3V4CwAB
BPUBAAAEFAAAAO2SMU8DMQyFZ/orPNIFNS3HSRFi4DqUqkhICBUJMfgSN42aOlXiA/HvyVWdYCod
GGC0ZH/Pfn7zLoCqYFRpNdGXV0DvWanxRYgGAyQxiXYxiWf3MlHVWL3C9ZTazt1oyCT3lDM6WkTn
SsdtGdpoKIOB7GD+c7BgkibyyrsuofjISy/rJm53gfpqhmwDJQ0NmjVZGAExtkUTWjQbYptPESd5
ypTueBWn3oj+xtZwPjgbflGoj1JgezBufxcKuZg+Cpe7EP4a2bOXHvlY6OW3ve8anh8aMJGZTP/v
0vOGwduT9j8iq/VvZrX+z+qe/AlQSwMEFAACAAgAuCnvSKL1sBAUAQAA5wEAAD8AHABodHRwL3Rl
c3RzL3NlY3VyaXR5L3ZpZGVvLXBvc3Rlci1jcm9zcy1vcmlnaW4tY3Jhc2gyLXN0ZGVyci50eHRV
VAkAA3vTiFd704hXdXgLAAEE9QEAAAQUAAAAnY5PT8JAEMXvfIo5wsG2W4rAxpiQEoNEE1IwmhAP
y3ZoNy67df9g+PYOQb0azVzmzbz5zVtGDWwE2YizIS/GgB+esTzRVgoNLkiHnXVBmWY7ZKOcvcLN
HHexueXg0dSP6L1o8FmFthQBG+tOHPomaj3oLf9NVkaFM3JNdGXNvdlbDi+rEqQ1BmWgGXmOQqu6
t/3mJ9dTYiw2m1WF7xF9gL1qFiF0X3Ku6golqiNW6DtrPJZC652QbxzcZVFDS35Slz0UWQF9dM46
uGL5dDgZwJ76s4mnKcvHSUbF+CTLstSjjE6FU2qsQR9lmxy64rd4JOfx0N0pI/RT9TAzlPFgA87q
mlJ4DuLSwM8zOiMvRKf/lOMTUEsDBBQAAgAIAL0p70hgS2YQkQAAAPsBAABFABwAaHR0cC90ZXN0
cy9zZWN1cml0eS94c3MtREVOSUVELXhzbC1kb2N1bWVudC1zZWN1cml0eU9yaWdpbi1zdGRlcnIu
dHh0VVQJAAOF04hXhdOIV3V4CwABBPUBAAAEFAAAAO2OMQ6DMAxFd07hC4QEllaZYejSngEFUyKZ
JLKdCm5fOvQGHau/vq/3Qt5KpEljToDMmT0skRBW1eKt7fpL6851/uqcs4KhctTD7iJmGO+3cTC7
kJlzqBsmNV/gwfEZU7tvBBQTQg9I+CFA9CCUFVGb8+lfyHK6PeREB3StgwUnrYwCEyNILSWz4tyE
f+iPQ99QSwMECgAAAAAApynvSAAAAAAAAAAAAAAAABMAHABodHRwL3Rlc3RzL3N0b3JhZ2UvVVQJ
AANZ04hXttWIV3V4CwABBPUBAAAEFAAAAFBLAwQUAAIACACnKe9I3v266a8AAADuAAAARQAcAGh0
dHAvdGVzdHMvc3RvcmFnZS9jYWxsYmFja3MtYXJlLWNhbGxlZC1pbi1jb3JyZWN0LWNvbnRleHQt
c3RkZXJyLnR4dFVUCQADWdOIV1nTiFd1eAsAAQT1AQAABBQAAABlzkELgkAQBeC7v2JOolBt4CX2
FmWXCEFLz7s6hbDOyLRb9O/TqFO3ebzvweRlWZQaLmSsQ/AMPggBE/TUCg5I3jgwwfPyYdoQBkjW
QOzBEKAISxqpml0Y8K72xhuVN5Vq0B57ryoO0uKcdiyoTtwFN7En2m6S1tzxM5mPVTuOSbbJUtBg
mR18R1r/hNYjypVlKEakLXU1Sn99JTNe/Ot8fg3iqTkftK689HSDOI3eUEsDBAoAAAAAALUp70gA
AAAAAAAAAAAAAAAaABwAaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9VVAkAA3bTiFe21YhXdXgL
AAEE9QEAAAQUAAAAUEsDBBQAAgAIALUp70h+f+0XsQAAAAEBAABBABwAaHR0cC90ZXN0cy94bWxo
dHRwcmVxdWVzdC9wb3N0LWJsb2ItY29udGVudC10eXBlLWFzeW5jLXN0ZGVyci50eHRVVAkAA3XT
iFd104hXdXgLAAEE9QEAAAQUAAAAZY2xCsJAEET7fMVWoqAeNoIHViaCWCiJmEIsLskqh7nbY7NR
/HsNBFQsZ3gzL0nTXaph4++mthWsyAt6mRyeAcdg+zYYNg4FGd65xWmkjlS3DhsVGzEqyTOVY7G1
ojJqucQurYhRhdrIhdgpj/Igvqm94Qar3tJJpmUIw9liPgINBVEN/VTr0KFf5LAk3wjkh7XWmbD1
VxiMIcUS7R25I2AwgtNPsfzcxa1zzz/9OXoBUEsDBBQAAgAIALUp70h+f+0XsQAAAAEBAABAABwA
aHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9wb3N0LWJsb2ItY29udGVudC10eXBlLXN5bmMtc3Rk
ZXJyLnR4dFVUCQADdtOIV3bTiFd1eAsAAQT1AQAABBQAAABljbEKwkAQRPt8xVaioB42ggdWJoJY
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
oLcfukdH73LDe1s4M+Febbw5bm3xQd0b6w3qwZYQW6bEowH1zJuyXEhFEpQKrvI3SAeQq96qIaTw
/o8Waqu91A2b8/bBeXB0/+QH8CL7Xyxs9Yr/AFBLAwQKAAAAAADJKe9IAAAAAAAAAAAAAAAACQAc
AGltcG9ydGVkL1VUCQADmdOIV7bViFd1eAsAAQT1AQAABBQAAABQSwMECgAAAAAAySnvSAAAAAAA
AAAAAAAAAA0AHABpbXBvcnRlZC93M2MvVVQJAAOZ04hXttWIV3V4CwABBPUBAAAEFAAAAFBLAwQK
AAAAAADNKe9IAAAAAAAAAAAAAAAAIAAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
VVQJAAOh04hXttWIV3V4CwABBPUBAAAEFAAAAFBLAwQKAAAAAADJKe9IAAAAAAAAAAAAAAAAJQAc
AGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9VVAkAA5nTiFe21YhXdXgLAAEE
9QEAAAQUAAAAUEsDBAoAAAAAAMkp70gAAAAAAAAAAAAAAAAvABwAaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9VVAkAA5nTiFe21YhXdXgLAAEE9QEAAAQUAAAA
UEsDBAoAAAAAAMsp70gAAAAAAAAAAAAAAABAABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L1VUCQADndOIV7bViFd1eAsAAQT1
AQAABBQAAABQSwMECgAAAAAA3SnvSAAAAAAAAAAAAAAAAE8AHABpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVu
dHMvVVQJAAPC04hXttWIV3V4CwABBPUBAAAEFAAAAFBLAwQUAAIACADJKe9IKbcRp+YAAABMBQAA
ZwAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRk
ZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9ldmVudF9jYW5wbGF5LXN0ZGVyci50eHRVVAkAA5rT
iFea04hXdXgLAAEE9QEAAAQUAAAA7ZMxSwNBEIVr71dMqY1k9Q5lEQsvhQYFQURBLOZ2J5sl60zY
nVP89+6JnV3SiKQceO97zGNmMSYwHcw6a1przoA+ijEnx0kcJsjqMm0ka+Twcmq6tn2FizkNY7i0
UEjvqBQMdCshVMVVNa0tVGMi3yy2Bytm7YWXMYwZNQo/RV318rZJNE3XyD5RttCjW5GHGRDjUDNh
QLcm9mWXcNLHQvmGlzKPTu0vtoXD5uBot4R9b1slsP8p7nsvVAqSPyuXx5T25P9GPv8T5MhRJ+RD
pdcfmu7bwvN9D06YyU1/VTXvmKJvvgBQSwMEFAACAAgAyinvSF1vLOPoAAAA/gQAAHIAHABpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRl
bnQvbWVkaWEtZWxlbWVudHMvZXZlbnRfY2FucGxheV9ub2F1dG9wbGF5LXN0ZGVyci50eHRVVAkA
A5vTiFeb04hXdXgLAAEE9QEAAAQUAAAA5ZPBSgNBDIbP9ilytBfp6C7oIB7cHmxpQRBRkB6ys+l0
6DRTZrKKb29WvHmSIhQ9JiRf8ucn8z6CqWFSW1NZcwn0Vow5P4vJYYQsLtM+ZQnsXy5MXVUruJ5S
2/sbC4W4W1Ip6OkpyKZBIZ/yu4VT7mMcj+ZHSA4cZEA+KD0knvE6WXi+b8AlZnKiOa15xRi6g/aX
r/UXyXutuNWmrQVtjHScYMEsTeJ18H3G4Qyfh0+7faQhukPuImULDboNdTABYmx1JrTotmpXOUzV
Y6E8mDENTuw3tho/Ohn/L3lXv/Yvf538kx//AFBLAwQUAAIACADKKe9IRYYp6fMAAAAMBgAAbgAc
AGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQt
Y29udGVudC9tZWRpYS1lbGVtZW50cy9ldmVudF9jYW5wbGF5dGhyb3VnaC1zdGRlcnIudHh0VVQJ
AAOc04hXnNOIV3V4CwABBPUBAAAEFAAAAO2UTUsEMQyGz+6vyNG9yHadOVjEg7MHXRQEEQXxkOlk
u2VrurQZxX9vRryIp/EDFPaYkjx584Zm2UcwNcxqayprjoCeizHzg5gcRsjiMm1TlsD+/tDUVfUA
xwtqe39ioRB3l1QKeroNsm5QyKf8YmGf+xink+WXyYGDDMhrpYfE57xKFu6uGnCJmZzom+Y8YQzd
xy7z2Sj98i7/InmvGadatLGghZG+BRbM0iReBd9nHNS++ZMet5GG6Ay5i5QtNOjW1IGyGVvtCS26
jbpa/uRUJDeF8rCMRXBiP4nWxU/2pv/Yt98eb8x/2ZF35B8hj7mlr1BLAwQUAAIACADLKe9ImUi0
AesAAACkBAAAeQAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRp
Y3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9ldmVudF9jYW5wbGF5dGhyb3VnaF9u
b2F1dG9wbGF5LXN0ZGVyci50eHRVVAkAA53TiFed04hXdXgLAAEE9QEAAAQUAAAA7ZPBSgMxEIbP
9inmaC/S1N1LEA9uD7YoCCIK4mE2O01D00lJZhXf3lnxpKe1B6F4TJj55s8XZtVHMDXMamsqO58B
vRVj5mcxOYyQxWXapyyB/fO5qavqBS4W1Pb+0kIh7m6pFPT0GGTToJBP+d3CKfcxTierX5MDBxmQ
90oPiZe8Thae7hpwiZmc6J3WvGIM3bcpZlR++Yp/k7zXiitt2lrQxkgHgQWzNInXwfcZh7SfftJu
H2k4XSN3kbKFBt2GOlA1jK3OhBbdVq2Ww171UCgPzhbBif3B1v+ZnEz/vf2BtzH7cuzkMTv+AVBL
AwQUAAIACADMKe9ILpH57+kAAAAMBgAAagAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9ldmVudF9s
b2FkZWRkYXRhLXN0ZGVyci50eHRVVAkAA5/TiFef04hXdXgLAAEE9QEAAAQUAAAA7ZSxTsQwDEBn
7is8cgu6lHaJEAO9AU4gISEEEmJwU18uOuOcEhfE35MiNjYKYukYy352XuRsBgbTwKqxprZVBfSW
jalOODpkSOoSHWLSIP7p1DR1/Qxna+oGf24hk/Q3lDN6egi6a1HJx/Ru4VgG5uVi82NykKAj8q7Q
Q5Qr2UYLj7ctuChCTkus5Lwih35Cl0z6Nf519L5kXJSivYVSyDQJrJi0jbINfkg4TvvpJ74cmMbT
JUrPlCy06HbUwwpIsCs9oUO3L1bztFvdZ0qjs3Vwar+xy/ssjpazt3/w9lf7MpNn8m/8pR9QSwME
FAACAAgAzCnvSOoyhrvuAAAApAQAAHUAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvZXZlbnRfbG9h
ZGVkZGF0YV9ub2F1dG9wbGF5LXN0ZGVyci50eHRVVAkAA6DTiFeg04hXdXgLAAEE9QEAAAQUAAAA
1ZPBSgNBDIbP9ilybC/SaXcvg3hwe7BFQRBREA/Z2XQ6dMyUmazi25sVb55qKbTHhOTLnz9k1Ucw
NUxrayo7mwN9FmNmlzE5jJDFZdqlLIH969zUVfUGVwtqe39toRB391QKenoOsmlQyKf8ZWHMfYyT
0erf5MBBBuSj0kPiJa+ThZeHBlxiJiea05oPjKE7YEoh+ZV/l7zXihtt2lrQxkgHgQWzNInXwfcZ
B7U//qT3XaQhukXuImULDboNdTAFYmx1JrTotupqOcmtSJ4K5eEYi+DE/hGthx9dTM7Yt2Ovd7R/
2Y9cnQR5nx//BlBLAwQUAAIACADNKe9I9aXNgO0AAACkBAAAbgAcAGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVt
ZW50cy9ldmVudF9sb2FkZWRtZXRhZGF0YS1zdGRlcnIudHh0VVQJAAOh04hXodOIV3V4CwABBPUB
AAAEFAAAAO2TMUsEMRCFa+9XTOk1cjl3myAW7hV6KAgiCmIxm53LhYuTI5lV/PfOipVW62JxYJkw
872X98i6j2BqWNTWVHZZAb0VY5YnMTmMkMVl2qcsgf3Tqamr6hnOVtT2/txCIe5uqBT09BBk26CQ
T/ndwjH3Mc5n61+TAwcZkHdKD4mveJMsPN424BIzOdE7nXnFGLpvKvUo//Jl/zp5rxMXurSzoIuR
JoEFszSJN8H3GQe3n/mkl32k4XSJ3EXKFhp0W+pgAcTYqia06Haaapn2qvtCechsFZzYH2ztZ3Y0
n6Qwpvf/Rg67kb8ij/njH1BLAwQUAAIACADNKe9IKgxqU+4AAACkBAAAeQAcAGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRp
YS1lbGVtZW50cy9ldmVudF9sb2FkZWRtZXRhZGF0YV9ub2F1dG9wbGF5LXN0ZGVyci50eHRVVAkA
A6LTiFei04hXdXgLAAEE9QEAAAQUAAAA7ZMxSwQxEIVr71dM6TVyOXctgli4V+ihIIgoiMVsdi4X
Ls4cyazivzcrVlqti4VgmTDzvZf3yLqPYGpY1NZUdlkDvWZjlkdRHEZI6hLtJWlg/3hs6qp6gtMV
tb0/s5CJu2vKGT3dB902qOQlvVk45D7G+Wz9Y3LgoAPyttCD8CVvxMLDTQNOmMlpuSszLxhD90Xl
ZJR//bR/Jd6XifOytLNQFiNNAismbYQ3wfcJB7cf+cjzPtJwukDuIiULDbotdbAAYmyLJrTodiXV
PO1Vd5nSkNkqOLXf2KWf2cF8ksKY3v8b+duN/BZ5zB9/B1BLAwQUAAIACADOKe9Idgoibe4AAACk
BAAAaQAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1i
ZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9ldmVudF9sb2Fkc3RhcnQtc3RkZXJyLnR4dFVU
CQADo9OIV6PTiFd1eAsAAQT1AQAABBQAAADdk8FKA0EMhs/2KXK0F+nUXYVBPLg9aFEQRBSkh+xs
Oh06ZspMVvHtzYonPa0iqMeE5MufP2TZRzA1zGprKjs/AnouxswPYnIYIYvLtEtZAvuHQ1NX1QpO
FtT2/tRCIe6uqBT0dBdk06CQT/nFwj73MU4nyy+TAwcZkDdKD4kveJ0s3F834BIzOdGc1jxhDN2H
Kcej9Mu7/MvkvVacadPWgjZG+hZYMEuTeB18n3FQ++ZPetxFGqJz5C5SttCg21AHMyDGVmdCi26r
rpZfuRXJbaE8HGMRnNhPovXwk73pH/btp9cb9S//nTzmx18BUEsDBBQAAgAIAM4p70g67pVt7AAA
AKQEAAB0ABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9l
bWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL2V2ZW50X2xvYWRzdGFydF9ub2F1dG9wbGF5
LXN0ZGVyci50eHRVVAkAA6TTiFek04hXdXgLAAEE9QEAAAQUAAAA7ZPBSgMxEIbP9inmaC/S1F2U
IB7cHrQoCCIK0sNsdpqGxklJZhXf3lnxpKe1B0E8Jsx88+cLs+wjmBpmtTWVnZ8AvRZj5kcxOYyQ
xWXapSyB/dOxqatqBWcLant/bqEQdzdUCnp6CLJpUMin/GbhkPsYp5Plj8mBgwzIO6WHxFe8ThYe
bxtwiZmc6J3WvGAM3Zcpp6Pyy2f86+S9Vlxo09aCNkbaCyyYpUm8Dr7POKT98JOed5GG0yVyFylb
aNBtqIMZEGOrM6FFt1WrZb9X3RfKg7NFcGK/sfV/JgfTf2+/4G3Mvvx18pgdfwdQSwMEFAACAAgA
zynvSCa50zvqAAAADAYAAHwAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwv
c2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvZXZlbnRfb3JkZXJfY2Fu
cGxheV9jYW5wbGF5dGhyb3VnaC1zdGRlcnIudHh0VVQJAAOm04hXptOIV3V4CwABBPUBAAAEFAAA
AO2UsU4DMQxAZ/oVHumCmnI3ECEGrgNUICEhBBJi8OXcNKpxqsQH4u/JITY2DtTlxlj2s/MiZ90z
mBoWtTWVXZ4BvWdjliccHTIkdYn2MWkQ/3xq6qp6gfMVtb2/sJBJulvKGT09Bt02qORj+rBwLD3z
fLb+NTlI0AF5X+ghyrVsooWnuwZcFCGnJVZy3pBDN6JLJv0e/yZ6XzIuS9HOQilkGgVWTNpE2QTf
Jxym/fITX/dMw+kKpWNKFhp0W+pgASTYlp7QotsVq3ncrR4ypcHZKji1P9jlfWZH88nbAbz9175M
5In8F3/pJ1BLAwQUAAIACADQKe9IacxsD/AAAAAMBgAAdQAcAGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50
cy9ldmVudF9vcmRlcl9jYW5wbGF5X3BsYXlpbmctc3RkZXJyLnR4dFVUCQADp9OIV6fTiFd1eAsA
AQT1AQAABBQAAADtlEFLA0EMhc/2V+RoL9Kxu5dBPLg9aFEQRBSkh+xsOh06ZspMVvHfmxVvnupS
6KHHhOR7mfdgln0EU8Ostqay8xnQZzHm8iImhxGyuEy7lCWwf5ubuqpWcLWgtvfXFgpx90CloKeX
IJsGhXzKXxbOuY9xOln+mxw4yIB8UnpIfMfrZOH1sQGXmMmJ9nTmA2PoRqgUkt/z75P3OnGjS1sL
uhhpFFgwS5N4HXyfcbj2x5/0vos0VLfIXaRsoUG3oQ6UzdiqJrTotupqGfeq50J58GwRnNg/bM1n
cjYdpXCo3E+JHF8i+5DNiXx05H3+0m9QSwMEFAACAAgA0CnvSGwKz1PyAAAADAYAAH8AHABpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRl
bnQvbWVkaWEtZWxlbWVudHMvZXZlbnRfb3JkZXJfbG9hZGVkbWV0YWRhdGFfbG9hZGVkZGF0YS1z
dGRlcnIudHh0VVQJAAOo04hXqNOIV3V4CwABBPUBAAAEFAAAAO2UQUsDQQyFz/ZX5Ggv0tnuXgbx
0O1BSwsFEQXxkJ1Np0PHTJnJVvz3zoonPa17KvSYkHwvvAdZdR5UBbNKq1LPFdBHUqq48cGghygm
0jFEcWxf56oqyze4XVLT2TsNibjdUEpo6dnJvkYhG+KnhmvuvJ9OVv8mO3bSIx8z3QV+4F3Q8LKt
wQRmMpJ7eeaE3rUjVBLJz/nrYG2eWOSlg4a86Ok3uBgCFoxSB94520Xsr/32J7wfPfXVPXLrKWqo
0eyphRkQY5M1oUFzyK6mMeIkT4li79nSGdF/2DmfydV0lMKQ3ItLImedyIV83uQhv/QLUEsDBBQA
AgAIANEp70jF+u5V8AAAAAwGAAB4ABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9o
dG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL2V2ZW50X29yZGVy
X2xvYWRzdGFydF9wcm9ncmVzcy1zdGRlcnIudHh0VVQJAAOp04hXqdOIV3V4CwABBPUBAAAEFAAA
AO2UsU7DMBCGZ/oUN9IF1U2yWIih6VAqKlVCCCTEcHGurlVzruwLiLfHQUwwhSJ1yWjr7rvfn2Wv
Ow+qglmlVamLOdB7Ump+5YNBD1FMpGOI4tg+F6oqyxe4XlLT2RsNibjdUEpo6dHJvkYhG+KHhkvu
vJ9O1n8mO3bSI+8z3QW+5V3Q8LStwQRmMpL3cs0betf+mFIMyi/f8e+CtblikZsOGnKjp5PAglHq
wDtnu4h92i8/4fXoqV+tkFtPUUONZk8tzIAYmzwTGjSHbDWddqqHRLF3tnRG9C92vp/JxXT0dgZv
Q97LSB7J/0Ee8pd+AlBLAwQUAAIACADRKe9II8nCwvAAAAAMBgAAZQAcAGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1l
bGVtZW50cy9ldmVudF9wYXVzZS1zdGRlcnIudHh0VVQJAAOq04hXqtOIV3V4CwABBPUBAAAEFAAA
AO2UsU7DMBCGZ/oUN7YLqkmyWBUD6UArKlVCCCTEcHGurlVzruwLiLfHQUwwpUViyWjr7rvfn2Wv
Ow+qgnmlVamLAug9KXV16YNBD1FMpGOI4tg+F6oqyxdYLKnp7LWGRNxuKCW09OhkX6OQDfFDw5Q7
72eT9clkx0565H2mu8Ar3gUNT9saTGAmI3kv17yhd+2PKeWg/PId/y5YmytuctNBQ270dBZYMEod
eOdsF7FP++UnvB499atb5NZT1FCj2VMLcyDGJs+EBs0hW03nneohUeydLZ0R/Yud72dyMRu9/YO3
Ie9lJI/kvyAP+Us/AVBLAwQUAAIACADSKe9IN7MKXe0AAACkBAAAcAAcAGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1l
bGVtZW50cy9ldmVudF9wYXVzZV9ub2F1dG9wbGF5LXN0ZGVyci50eHRVVAkAA6vTiFer04hXdXgL
AAEE9QEAAAQUAAAA7ZMxSwQxEIVr71dM6TVy8XabIBbuFXooCCIKYjGbncuFGydHMqv4782KlVbr
YnFgmTDzvZf3yLpnMDUsamsqu6yA3rIxpyccHTIkdYn2MWkQ/7Q0dVU9w9mK2t6fW8gk3Q3ljJ4e
gm4bVPIxvVs4lp55Plv/mhwk6IC8K/QQ5Uo20cLjbQMuipDTcldmXpFD902lHuVfv+xfR+/LxEVZ
2lkoi0yTwIpJmyib4PuEg9vPfOLLnmk4XaJ0TMlCg25LHSyABNuiCS26XUk1T3vVfaY0ZLYKTu0P
dulndjSfpDCm9/9GDruRvyKP+eMfUEsDBBQAAgAIANIp70hEhBAH8AAAAAwGAABkABwAaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50
L21lZGlhLWVsZW1lbnRzL2V2ZW50X3BsYXktc3RkZXJyLnR4dFVUCQADrNOIV6zTiFd1eAsAAQT1
AQAABBQAAADtlMFKAzEQhs/2KeZoL9LYXQ9Beuj20JYKgoiCeJjNTtPQdFKSWcW3Nyue9LRW6GWP
CTPf/PlCsm49qBImpVaFnpZA70mp6ysfDHqIYiIdQxTH9mWqyqJ4hdsF1a2daUjEzR2lhJaenOwq
FLIhfmi45Nb78Wj9Z7JjJx3yIdNd4BVvg4bn+wpMYCYjeS/XvKF3zY8pN73yy3f8TbA2V8xz015D
bvR0ElgwShV462wbsUv75Sccjp661RK58RQ1VGh21MAEiLHOM6FGs89W02mnekwUO2cLZ0T/Yuf7
GV2MB29n8NbnvQzkgfwf5D5/6SdQSwMEFAACAAgA0ynvSNkf59fsAAAApAQAAG8AHABpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQv
bWVkaWEtZWxlbWVudHMvZXZlbnRfcGxheV9ub2F1dG9wbGF5LXN0ZGVyci50eHRVVAkAA63TiFet
04hXdXgLAAEE9QEAAAQUAAAA7ZPBSgMxEIbP9inmaC/S2F2FIB7cHrQoCCIK0sNsdpqGxklJZhXf
3lnxpKe1B0E8Jsx88+cLs+wjmBpmtTWVnZ8AvRZjjo9ichghi8u0S1kC+6e5qatqBWcLant/bqEQ
dzdUCnp6CLJpUMin/GbhkPsYp5Plj8mBgwzIO6WHxFe8ThYebxtwiZmc6J3WvGAM3Zcpp6Pyy2f8
6+S9Vlxo09aCNkbaCyyYpUm8Dr7POKT98JOed5GG0yVyFylbaNBtqIMZEGOrM6FFt1WrZb9X3RfK
g7NFcGK/sfV/JgfTf2+/4G3Mvvx18pgdfwdQSwMEFAACAAgA1CnvSEG7DNXvAAAADAYAAGcAHABp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNv
bnRlbnQvbWVkaWEtZWxlbWVudHMvZXZlbnRfcGxheWluZy1zdGRlcnIudHh0VVQJAAOv04hXr9OI
V3V4CwABBPUBAAAEFAAAAO2UwUoDMRBAz/Yr5mgv0thd0CAe3B60KAgiCuJhNjtNQ+OkJLOKf++s
ePOki9hDjxlm3kxemCz7CKaGWW1NZecnQG/FmOOjmBxGyOIybVOWwP5pbuqqeoazBbW9P7dQiLsb
KgU9PQRZNyjkU363cMh9jNPJ8tfkwEEG5J3SQ+IrXiULj7cNuMRMTjSmOa8YQzeiSyH5Gv86ea8Z
F1q0saCFkUaBBbM0iVfB9xmHaT/9pJdtpOF0idxFyhYadGvqYAbE2GpPaNFt1GoZd6v7QnlwtghO
7De2vs/kYLr39g/e/mpf9uRdJJ/uBPknf+kHUEsDBBQAAgAIANQp70jkdaRg9AAAAAwGAAByABwA
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1j
b250ZW50L21lZGlhLWVsZW1lbnRzL2V2ZW50X3BsYXlpbmdfbm9hdXRvcGxheS1zdGRlcnIudHh0
VVQJAAOw04hXsNOIV3V4CwABBPUBAAAEFAAAAO2UwUoDQQyGz/YpcmwvsmN3Dw7Sg9tDLS0IIgri
ITubToeOmTKTVXx7Z8WbJy2FLfSYIfny5w+TZedBVVBUWpV6eg30kZS6uvTBoIcoJtI+RHFsX6aq
KstXuJlT09mZhkTcrikltPTkZFujkA3xU8OYO+8no+W/yY6d9MiHTHeB73gTNDzf12ACMxnJbznn
Hb1rD+iSSH7kr4K1OeM2F+005EJPB4EFo9SBN852EXu13/6Et72nPlogt56ihhrNlloogBib3BMa
NLvsahrkVCSPiWK/jLkzon+JzosfXUxO2Ldjj3e0/3ImD5BcFoMg/+WWfgFQSwMEFAACAAgA1Snv
SMsiXVjuAAAADAYAAGgAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2Vt
YW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvZXZlbnRfcHJvZ3Jlc3Mtc3Rk
ZXJyLnR4dFVUCQADsdOIV7HTiFd1eAsAAQT1AQAABBQAAADtlDFPAzEMhWf6KzzSBTX0bokQA9cB
KpCQEAIJMfhybho1darEB+Lf40NsTHBqFzrasr/nvCdl2UcwNcxqaypbzYDeizHnZzE5jJDFZdql
LIH9y9zUVfUKFwtqe39poRB3d1QKenoKsm5QyKf8YeGU+xink+WfyYGDDMgHpYfEN7xKFp7vG3CJ
mZxoT2feMIZuhEoh+T7/NnmvE1e6tLGgi5FGgQWzNIlXwfcZh2u//EnbXaShukbuImULDbo1daBs
xlY1oUW3UVfLuFc9FsqDZ4vgxP5gaz6Tk+kohX3lfkzkEImYI/kfkX/zl34CUEsDBBQAAgAIANUp
70jiO2qr7QAAAKQEAABzABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3Nl
bWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL2V2ZW50X3Byb2dyZXNzX25v
YXV0b3BsYXktc3RkZXJyLnR4dFVUCQADstOIV7LTiFd1eAsAAQT1AQAABBQAAADdk8FKA0EMhs/2
KXK0F+nU3csgHtwebFEQRBTEQ3Y2nQ6dJmUmq/j2zoonPa0iWI8JyZc/f8iqj2BqmNXWVLYyQC/Z
mPlJFIcRkrpEe0ka2D+emrqqnuBsQW3vzy1k4u6ackZP90E3DSp5Sa8WjrmPcTpZfZscOOiAvC30
ILzktVh4uGnACTM5LblS84wxdJ+mzEfp1w/5V+J9qbgoTVsLpTHSj8CKSRvhdfB9wkHtuz+y20ca
okvkLlKy0KDbUAczIMa2zIQW3ba4mv/kVqR3mdJwjEVwar+ILoefHE0P2LffXm/Uv/x38pgffwNQ
SwMEFAACAAgA1invSONyZa70AAAAZgYAAGoAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvZXZlbnRf
dGltZXVwZGF0ZS1zdGRlcnIudHh0VVQJAAOz04hXs9OIV3V4CwABBPUBAAAEFAAAAO2UQUsDMRCF
z/ZXzLG9SNPuXoJ46PbQFgVBioJ4mM1O09A4Kcms4r9vVjwpCHWhUOgxYeZ7L+9BVq0HVcK41KrQ
xQToIyk1ufbBoIcoJtI+RHFsX6aqLIpXuJlT3dpbDYm4uaeU0NKTk22FQjbETw1Dbr0fDVb/Jjt2
0iEfM90FXvImaHh+qMAEZjKS7/LMO3rX/FCZHuVfvu3fBWvzxCwv7TTkRU+9wIJRqsAbZ9uInduv
fMLb3lN3WiA3nqKGCs2WGhgDMdZZE2o0u5xq6veqdaLYZTZ3RvQvdu5ncDXqpXBM75dGzruRC/m8
yaf6S//2fwBQSwMEFAACAAgA1ynvSD7yS8rzAAAADAYAAHUAHABpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVu
dHMvZXZlbnRfdGltZXVwZGF0ZV9ub2F1dG9wbGF5LXN0ZGVyci50eHRVVAkAA7XTiFe104hXdXgL
AAEE9QEAAAQUAAAA7ZRBSwMxEIXP9lfM0V6ksdlLEA9uD1oUBBEL4mE2O01D46Qks4r/3qz0pKd1
Lwt6TJj53st7kHUXQFWwqIzSRi+B3rNS52chWgyQxCY6xCSe3fNSVVq/wMWKms5dGsjE7R3ljI6e
vOxqFHIxfRg45S6E+Wz9a7JnLz3yodB95BveRgOb+xpsZCYr5a7MvGHw7TcVPci/HO3fRufKxFVZ
2hsoi4FGgQWT1JG33nUJe7df+cTXQ6D+dI3cBkoGarQ7amEBxNgUTWjQ7kuqedyrHjOlPrOVt2J+
sEs/s5P5KIUhvU+F/N/13+l6GuRqEuQhf+knUEsDBBQAAgAIANcp70jUyLH5ggAAAMAAAABsABwA
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1j
b250ZW50L21lZGlhLWVsZW1lbnRzL2V2ZW50X3ZvbHVtZWNoYW5nZS1zdGRlcnIudHh0VVQJAAO1
04hXtdOIV3V4CwABBPUBAAAEFAAAAJ3MMQoCMRBA0X5PMaU2YjRpgtisjQuCYKEgFjE7ZgfCRJKJ
4u2NV7D9fN5QIygDS2OVttoAvotSq0VM3kXI4jM+UxbicF0ro/UNNju817C1UJDHA5biAp5Jpt4J
hpQ/FmZcY5x3w98yMcmPPDWdEu/5kSxcjj34xIxeWmvPy0Uauy9QSwMECgAAAAAAySnvSAAAAAAA
AAAAAAAAAFoAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNz
L2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvaW50ZXJmYWNlcy9VVAkAA5nTiFe21YhX
dXgLAAEE9QEAAAQUAAAAUEsDBAoAAAAAAMkp70gAAAAAAAAAAAAAAABkABwAaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlh
LWVsZW1lbnRzL2ludGVyZmFjZXMvVGV4dFRyYWNrL1VUCQADmtOIV7bViFd1eAsAAQT1AQAABBQA
AABQSwMEFAACAAgAySnvSExBisPKAAAA3QEAAHkAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvaW50
ZXJmYWNlcy9UZXh0VHJhY2svYWN0aXZlQ3Vlcy1zdGRlcnIudHh0VVQJAAOZ04hXmdOIV3V4CwAB
BPUBAAAEFAAAAKWQsU4DMRBEa+4rtiTNKSacQBai4FJABGWUAlHs2RvHyrKO7D0h/h5fQkeFrtyR
5s3ObEYG08Gys+bWmjugr2LMTcvJIUNWl+mUskYJ7yvTre4/4OFF9unRAqcQqgxFMWtp27bZ/Bu1
pmEMlVVI36gUDPR6oT5V09FCNTL5OeDpuT7JPoYxo8Yku6iHPn2emKbrGcUzZQs9ugN5WAIJDjUT
BnRHEl/mtdoWytNe6+jU/mFbuG6uFrMSxP8Od+6FSiHl78qVkXnR/ABQSwMEFAACAAgAySnvSBmP
4GaDAAAAwAAAAHUAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50
aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvaW50ZXJmYWNlcy9UZXh0VHJhY2sv
YWRkQ3VlLXN0ZGVyci50eHRVVAkAA5rTiFea04hXdXgLAAEE9QEAAAQUAAAAncwxCgIxEEDRfk8x
pTZiXIMSxGZtXBAECwWxiNnZGBgmkkwUb2+8gu3n8/pCoDTMtVFLo1aA76zUYkbRWYIkLuEzJgns
r63S7foGmx3ei98ayMjDAXO2Hs9BHp0V9DF9DEy4EE2b/m85cJAfeap6iLznMRq4HDtwkRmd1Faf
l6UwNF9QSwMEFAACAAgA2CnvSHvCuq7eAAAA5AMAAHcAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMv
bmV0d29ya1N0YXRlX2R1cmluZ19sb2Fkc3RhcnQtc3RkZXJyLnR4dFVUCQADt9OIV7fTiFd1eAsA
AQT1AQAABBQAAADtkTFLA0EQhWvvV0wZG8nqHcIiKbwUMSgIIgpiMbc72SwZZ8PunOK/d0/s7JJS
y4H3vse8tx4ZTAfzzprWtpdAH8WY8zNODhmyukz7lDVKeLkwXdu+wtWShjEsLBTSOyoFA92mEKri
upp2FqqRyTfrw8GKWfskmxjGjBqTPEXd9ultzzRdKxTPlC306LbkYQ4kONRMGNDtSHw5Jpz0sVC+
kU1aRqf2F9vCrDk5PS7hv7eDEsT/FPf9FyqFlD8rV0bmv0aOEnVCPlR63Xbq3cLzfQ8uiZCb9q6a
d+Tomy9QSwMEFAACAAgA2CnvSLvLowWDAAAAwAAAAG4AHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMv
bmV0d29ya1N0YXRlX2luaXRpYWwtc3RkZXJyLnR4dFVUCQADt9OIV7fTiFd1eAsAAQT1AQAABBQA
AACdzD0KAjEQQOF+TzGlNmI0QQhiszYuCIKFgljE7BgDw4zkR/H2xivYPh7fUAmUgbmxSlu9Anxn
pRYzEu8IUvEJn5JK5HBZKqP1FdZbvNWwsZCRxz3m7AKeYnn0rmCQ9LEw4Uo07Ya/5cix/Mhj06Pw
ju9i4XzowQsz+tJae16O4th9AVBLAwQUAAIACADYKe9IDrLkx+UAAABMBQAAcgAcAGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9t
ZWRpYS1lbGVtZW50cy9wYXVzZWRfZmFsc2VfZHVyaW5nX3BsYXktc3RkZXJyLnR4dFVUCQADuNOI
V7jTiFd1eAsAAQT1AQAABBQAAADtkjFLA0EQhWvvV0ypjWT1DmQRCy+FBgVBREEs5nYnmyXrTNid
U/z37olgYWcaISkH3nyPmfcWYwLTwayzprXtGdB7MebkOInDBFldpo1kjRyeT03Xti9wPqdhDBcW
CuktlYKBbiSEqrisS2sLdTGRbxZ/Bytm7YWXMYwZNQo/Rl318rpJNE1XyD5RttCjW5GHGRDjUD1h
QLcm9mUbc9KHQvmalzKPTu0vtoXD5uBoKwf234/7uguVguSPyuUxpf9K3me9O1nvyT/kyFEn5H2l
1z5OXbHwdNeDE2ZyU0er5g1T9M0nUEsDBBQAAgAIANkp70hGPnXZ6QAAAKQEAAByABwAaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50
L21lZGlhLWVsZW1lbnRzL3BhdXNlZF90cnVlX2R1cmluZ19wYXVzZS1zdGRlcnIudHh0VVQJAAO6
04hXutOIV3V4CwABBPUBAAAEFAAAAO2TwUoDQQxAz/YrcrQX6djdg4N4cHuwRUEooiAesrPpdGjM
lJms4t93Vrx50kVE8JiQvGTekFXPYGqY1dZUtjoDes3GnJ5wdMiQ1CXax6RB/OPc1FX1BOcLant/
YSGTdDeUM3q6D7ptUMnH9GbhWHrm6WT1bXKQoANyXeghylI20cLDbQMuipDTkis1L8ihGzElk36s
fx29LxWXpWlnoTQyjQIrJm2ibILvEw7bvvuJz3umIbpC6ZiShQbdljqYAQm2ZSa06HbFah73qrtM
aXC2CE7tJ3b5n8nR9N/bL3j7qXv5i+Sv3PgBUEsDBAoAAAAAAMop70gAAAAAAAAAAAAAAABqABwA
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1j
b250ZW50L21lZGlhLWVsZW1lbnRzL3BsYXlpbmctdGhlLW1lZGlhLXJlc291cmNlL1VUCQADnNOI
V7bViFd1eAsAAQT1AQAABBQAAABQSwMEFAACAAgAyinvSLUhqo4PAQAARgIAAJEAHABpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQv
bWVkaWEtZWxlbWVudHMvcGxheWluZy10aGUtbWVkaWEtcmVzb3VyY2UvcGF1c2UtbW92ZS10by1v
dGhlci1kb2N1bWVudC1zdGRlcnIudHh0VVQJAAOb04hXm9OIV3V4CwABBPUBAAAEFAAAAKWRT0/D
MAzFz/RT+MgOVE27Di1Ck1h3AAQS2jRxqHZwWzetFpIpScWfT4874MKR+mZL/r3n5zLJpZhLsYwX
6fIAN1xQbG/XO1hxQasH3z2TaXqjtqQJPe0oSCiT9+u2wSwTVYp5coC1tvUREujQg7Hm6pOcBUct
1HYwAebRw6BB5PArB/TmhUhjXkMNLtSOTtYFlikzkYsFW7k3rV1J0FYpHoMP6IKP4/gfqA1Vg2KW
p/BE3qOix2/q2bYEXtTUTAGP5gpr2l4NDkNvzUsfusK+njSN3R2aRpOTUGDdUcNBkcGKNaHC+sj5
+mlX7T25Ma9NX/N3/rIlXEYXs0kKpvkJ7nwXBlLWfTDXDFrPoi9QSwMEFAACAAgAyinvSHsYinTf
AAAArAIAAI8AHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNz
L2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvcGxheWluZy10aGUtbWVkaWEtcmVzb3Vy
Y2UvcGF1c2UtbW92ZS13aXRoaW4tZG9jdW1lbnQtc3RkZXJyLnR4dFVUCQADnNOIV5zTiFd1eAsA
AQT1AQAABBQAAADNkUFLA0EMhc/2V+SoF9lpXcGh9OD2UEsLgoiC9JCdTadDx6TMZBX/vbPiSY/r
wWNC8uXlvXUfwdRQ1dZcWXMD9J6NmV5GcRghqUt0kqSB/cvM1OZ6B/Mltb1fWMjE3ZZyRk9PQQ8N
KnlJHxbOuY/xYrL+h+TAQQfkQ6EH4Tvei4Xn+wacMJPT0iszbxhDN0q/fsvfiPdl4rYsHS2UxUij
wIpJG+F98H3CQe2XP/J6ijRUK+QuUrLQoDtQBxUQY1tuQovuWFzN4756zJQGz5bBqf3FLvlMzn6k
M63+MPdPUEsDBBQAAgAIAMop70gt8NyfKAEAABUDAACPABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRz
L3BsYXlpbmctdGhlLW1lZGlhLXJlc291cmNlL3BhdXNlLXJlbW92ZS1mcm9tLWRvY3VtZW50LXN0
ZGVyci50eHRVVAkAA5zTiFec04hXdXgLAAEE9QEAAAQUAAAAtZJNSwMxEIbP9lfM0R4sm26rEKRg
twctCqVFKpQeZncn2dCYlCTr1693tujFi+Di3BJmnnfmnVm2FsQUsqkUEznOgF6jEOOR9RVaCKkK
dPQhGad3uZiKyz1cL6hs9UxCJFc/UIyoaWtSU2Ai7cO7hHPXWjscLP9MNs6kDrlhuvHuzikv4WlV
QOWdoyrxH+e8oDX1YPfNH40nghkcUKxv5huYcYCybWxW3CnrrMkSRtpQkrDL3q5UjXmmSpVjtoc5
93WADBqM4Ly7+KDgIZBizdYlyHuMEyl9+XTvteaMk5YELrRU9wEnDKnwThndBuxsOS3CPx8tda9b
dLWlIKHAqqGapyOHJWtCidWBTYn9pnqMFLrlLEzFlv5k8yEMzoa9FP7rwH4jfwJQSwMEFAACAAgA
yinvSB2YSemDAAAAGgEAAIEAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwv
c2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvcGxheWluZy10aGUtbWVk
aWEtcmVzb3VyY2UvcGxheWJhY2tSYXRlLXN0ZGVyci50eHRVVAkAA5zTiFec04hXdXgLAAEE9QEA
AAQUAAAAzcyxCsIwEIDhvU9xoy7SVOMQxKUuFgTBQUEcYnqNB+EiyUXx7Y1v4frz8w0lgNLQaqNW
pmsB31mpbhGiswGSuITPmITYX5dKq/UNNju8F781kJHHA+ZsPZ5JHr0V9DF9DMy4hDBvhj+UiUl+
5KnqFHnPUzRwOfbgIjM6qa0+LxtobL5QSwMEFAACAAgA2SnvSLn9rSeCAAAAwAAAAHgAHABpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRl
bnQvbWVkaWEtZWxlbWVudHMvcHJlbG9hZF9yZWZsZWN0c19ub25lX2F1dG9wbGF5LXN0ZGVyci50
eHRVVAkAA7rTiFe604hXdXgLAAEE9QEAAAQUAAAAncwxCgIxEEDRfk8xpTay0aQJYrM2LgiChYJY
xOwYA8NEkoni7Y1XsP183lgJlIHeWKWt6QHfRanlgpJ3BFl8xmfKEjlcVspofYX1Fm81bCwU5GmP
pbiApyiPwQmGlD8WZlyJ5t34txw5yo88Nj0m3vE9WTgfBvCJGb201p6Xozh1X1BLAwQUAAIACADa
Ke9IPmXPVOIAAABMBQAAcwAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9z
ZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9yZWFkeVN0YXRlX2R1cmlu
Z19jYW5wbGF5LXN0ZGVyci50eHRVVAkAA7vTiFe704hXdXgLAAEE9QEAAAQUAAAA7ZMxSwRBDIVr
91ek1EZudLcZxOL2Cj0UBBEFscjO5OaGG5NjJqv4750VO7s77LYMvPc98kjWYwLTwaKzprWdAfos
xlycJ3GYIKvLtJeskcPrpena9g2uVjSM4dpCIb2nUjDQnYRQFctq2lmoxkS+WR8OVszaC29iGDNq
FH6Ouu3lfZ9omm6QfaJsoUe3JQ8LIMahZsKAbkfsyzHhpE+F8i1vZBWd2j9sC6fNydlxCXNvByWw
/y3uZy9UCpK/KpfHlGbyTP4PcuSoE/Kx0usPTfdt4eWhByfM5Ka/qpoPTNE331BLAwQUAAIACADa
Ke9IrG3Rve8AAAAMBgAAegAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9z
ZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9yZWFkeVN0YXRlX2R1cmlu
Z19jYW5wbGF5dGhyb3VnaC1zdGRlcnIudHh0VVQJAAO804hXvNOIV3V4CwABBPUBAAAEFAAAAO2U
sUoEMRCGa+8ppvQauZy7TRAL9wo9FAQRBbGYzc7lwsXJkcwqvr2zYqXVeoLNlgkz3/z5QrLuI5ga
FrU1la0N0FsxZnkSk8MIWVymfcoS2D+dmrqqnuFsRW3vzy0U4u6GSkFPD0G2DQr5lN8tHHMf43y2
/jU5cJABeaf0kPiKN8nC420DLjGTE93TmleMofs2ZTkqv3zFv07ea8WFNu0saGOkg8CCWZrEm+D7
jEPaTz/pZR9pWF0id5GyhQbdljpYADG2OhNadDu1Wg471X2hPDhbBSf2B1vvZ3Y0n7z9g7cx72Ui
T+S/II/5Sz8AUEsDBBQAAgAIANsp70hYSXZ+8QAAAAwGAAB2ABwAaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1l
bnRzL3JlYWR5U3RhdGVfZHVyaW5nX2xvYWRlZGRhdGEtc3RkZXJyLnR4dFVUCQADvtOIV77TiFd1
eAsAAQT1AQAABBQAAADtlMFKAzEQhs/2KeZoL9K0u5cgHtwetCgIIgriYTY7TUPjpCSzim/vrHjS
09qDCj0mzHzz5wvJqo9gapjV1lS2ngO9FmPmJzE5jJDFZdqlLIH948LUVfUEp0tqe39moRB311QK
eroPsmlQyKf8ZuGY+xink9WPyYGDDMhbpYfEl7xOFh5uGnCJmZzonta8YAzdlymLUfnlM/5V8l4r
zrVpa0EbI+0FFszSJF4H32cc0n74Sc+7SMPqArmLlC006DbUwQyIsdWZ0KLbqtWy36nuCuXB2TI4
sd/Yej+To+nB2y94G/NeDuT/Tq7+BHnMX/oOUEsDBBQAAgAIANwp70ipeNBB7gAAAP4EAAB6ABwA
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1j
b250ZW50L21lZGlhLWVsZW1lbnRzL3JlYWR5U3RhdGVfZHVyaW5nX2xvYWRlZG1ldGFkYXRhLXN0
ZGVyci50eHRVVAkAA7/TiFe/04hXdXgLAAEE9QEAAAQUAAAA7ZNBSwMxEIXP9lfMsb1I024uQTy4
PWhpoSCiIB5ms9M0NE5KMqv4782KJz0ti6DgMWHmey/vkXUXQGmYa6Mqoyug16zU4jxEiwGS2ESn
mMSze1wqXVVPcLGipnOXBjJxu6Wc0dG9l0ONQi6mNwNT7kKYTda/kOzZS4+8LXQf+Yb30cDDrgYb
mclKuSszLxh8+0VFD/Ivn/Y30bkycVWWjgbKYqBRYMEkdeS9d13C3u1HPvH5FKg/XSO3gZKBGu2B
WpgDMTZFExq0x5JqHvequ0ypz2zlrZhv7NLP5Gw2SmFI7/+N/O1Gfoo85I+/A1BLAwQUAAIACADc
Ke9IvrZ+YO8AAAAMBgAAcwAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9z
ZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9yZWFkeVN0YXRlX2R1cmlu
Z19wbGF5aW5nLXN0ZGVyci50eHRVVAkAA8DTiFfA04hXdXgLAAEE9QEAAAQUAAAA7ZTBSgMxEIbP
9inmaC/S1I2HIB66PWixIIgoiIfZ7DQNjZOSzFZ8e7PiSU9rBS97TJj55s8XklUXQGmYaaMqozXQ
W1ZqfhaixQBJbKJ9TOLZPZ8rXVUvcLmkpnNXBjJxu6ac0dGjl22NQi6mdwOn3IUwnax+TfbspUfe
F7qPfMObaODprgYbmclK2Ss1Bwy+/TblYlB++Yp/G50rFYvStDNQGgMdBRZMUkfeeNcl7NN++omv
+0D96hq5DZQM1Gi31MIMiLEpM6FBuytW83GnesiUemdLb8X8YJf7mZxMR2//4G3IexnJI/kvyEP+
0g9QSwMEFAACAAgA3SnvSEn+6viDAAAAwAAAAGwAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvcmVh
ZHlTdGF0ZV9pbml0aWFsLXN0ZGVyci50eHRVVAkAA8HTiFfB04hXdXgLAAEE9QEAAAQUAAAAncw9
CgIxEEDhfk8xpTZiNLEIYrM2LgiChYJYxOwYA8OM5Efx9sYr2D4e31AJlIG5sUpbswJ8Z6UWMxLv
CFLxCZ+SSuRwWSqj9RXWW7zVsLGQkcc95uwCnmJ59K5gkPSxMOFKNO2Gv+XIsfzIY9Oj8I7vYuF8
6MELM/rSWntejuLYfQFQSwMEFAACAAgA3SnvSLCz6MTdAAAAwgIAAIQAHABpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEt
ZWxlbWVudHMvc3JjX3JlZmxlY3RzX2F0dHJpYnV0ZV9ub3Rfc291cmNlX2VsZW1lbnRzLXN0ZGVy
ci50eHRVVAkAA8HTiFfB04hXdXgLAAEE9QEAAAQUAAAA1ZA/b8IwEMX3foob2yHYgdAEbwiEGDpU
EZ1QB2NfiFX/SW2nn59DYUBq10qtbnlP7530uzvypSgrsaxni+b5HfaHw2uLnyOmDJ0573MebnZr
dIsKzRe2mIbgE26ktSepPgTEKdDQU5/clEPFK3jEGEOEopyvFs0TdKSvJcGYDUraPqQsmoZz1mdn
WUInfTYqMXQn1Bp1oYLP6DNzqI0s0KIjl1gXwsPxjr3+zk52O7phZ7y0b+3L2tMBLmRca02ISYCc
BJTzesZpSlqjLozR/grkiv/fB//E/jcefAFQSwMECgAAAAAAyinvSAAAAAAAAAAAAAAAAFUAHABp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNv
bnRlbnQvbWVkaWEtZWxlbWVudHMvdHJhY2svVVQJAAOc04hXttWIV3V4CwABBPUBAAAEFAAAAFBL
AwQKAAAAAADKKe9IAAAAAAAAAAAAAAAAYwAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy90cmFjay90
cmFjay1lbGVtZW50L1VUCQADnNOIV7bViFd1eAsAAQT1AQAABBQAAABQSwMEFAACAAgAyinvSE7e
VrKzAAAAgwEAAIIAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50
aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvdHJhY2svdHJhY2stZWxlbWVudC90
cmFjay1hcGktdGV4dHRyYWNrcy1zdGRlcnIudHh0VVQJAAOc04hXnNOIV3V4CwABBPUBAAAEFAAA
AKXQPQ/CIBAG4Nn+iht1IaXKQoyD7aCNjsbBOFB6paQIDdD496VxdDId75L3uY96MkAZ5IzTHS9y
wHegtCDGSWHAR+lxdD5qqx5bygr2hP3Zdu7AwTilUhtCFD4GQkhW/01V2EwqWQHjFUMQCi9f9ZhC
A4cUNNgugeflSmc7rSYvonb2rmNfutdocK5OwrYGPYdSyB5bSLYVTZoJjZAD2jYsu+oW0M//qrSM
/MfmsM5Wm+wDUEsDBBQAAgAIAN0p70h6MHTXvAAAAOwBAABjABwAaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1l
bnRzL3ZpZGVvXzAwOC1zdGRlcnIudHh0VVQJAAPB04hXwdOIV3V4CwABBPUBAAAEFAAAALWQMYsC
MRCF6/NXTKmNGN1FCIeFa6HilYeFXDGbzMZgnEgyi/jvLyd2dsqVD+Z9H/O2fQBVw6TWqtL1HOia
lZqOQzQYIIlJdIlJPLvDTNVV9QOfK2p7t9CQSb4oZ3S0i86Vi2UpnTSUYiA72L4OFkzSRO686xOK
j7z3cmzi+RLoL62RbaCkoUFzJAsTIMa2OKFFcyK2+R05yXemtOEurrwR/cTWMBx8jN4ysH0Md/8L
hVxMt8LlPoT/JP8CUEsDBBQAAgAIAN0p70jbyMnEhgAAAMAAAABsABwAaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVs
ZW1lbnRzL3ZpZGVvX3ZvbHVtZV9jaGVjay1zdGRlcnIudHh0VVQJAAPC04hXwtOIV3V4CwABBPUB
AAAEFAAAAJXMMQoCMRBA0X5PMaU2YjRBCWKzNi4IgoWCWMTsGANhRpKJ4u1dS0vbz+d1NYEyMDVW
aWsWgK+i1GyS2LsEWXzGB2eJFM5zZbS+wGqD1xrWFgpSv8NSXMBjlHvrBAPnt4UR1ZTGTfcjL/+Q
I0X5kodBj0xburGF074Fz0ToZWjD83Qp9s0HUEsDBAoAAAAAAMop70gAAAAAAAAAAAAAAABRABwA
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1j
b250ZW50L3RoZS1hcmVhLWVsZW1lbnQvVVQJAAOc04hXttWIV3V4CwABBPUBAAAEFAAAAFBLAwQU
AAIACADKKe9IOWmbSoIAAADAAAAAawAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
aHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC90aGUtYXJlYS1lbGVtZW50L2FyZWEtcHJv
Y2Vzc2luZy1zdGRlcnIudHh0VVQJAAOc04hXnNOIV3V4CwABBPUBAAAEFAAAAJ3MPQoCMRBA4X5P
MaU2sommCWKzNi4IgoWCWMTsGAPDjORH8fbGK9g+Ht9YCZSB3li1sroHfGel9ILEO4JUfMKnpBI5
XJbKaHOF9RZvNWwsZORpjzm7gKdYHoMrGCR9LMy4Es278W85ciw/8tj0KLzju1g4Hwbwwoy+tNae
l6M4dV9QSwMECgAAAAAAyynvSAAAAAAAAAAAAAAAAFIAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvdGhlLWF1ZGlvLWVsZW1l
bnQvVVQJAAOd04hXttWIV3V4CwABBPUBAAAEFAAAAFBLAwQUAAIACADLKe9IsRVasd4AAADQAgAA
bgAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRk
ZWQtY29udGVudC90aGUtYXVkaW8tZWxlbWVudC9hdWRpb19jb25zdHJ1Y3Rvci1zdGRlcnIudHh0
VVQJAAOd04hXndOIV3V4CwABBPUBAAAEFAAAANWQP08DMQzFdz6FRzpck1wPcc1WUVUdGNCpTBVD
mri9CCc58ofPT8oxw4QE8vKe/Sz97CO/k6KTrViu1uIF9ofD04BvBVOGs73sc56+7NaaATXadxww
TcEnfFBEJ6VfJcR5YGCs+ermOXS8g1uMMURoRLte9Qs4V30NScYoaEVjSFn2PedszI5YQqd8tjox
dCc0Bk2jg8/oM8sjNqoYGxokdNdOivrm+D1+tdvipp31ip6Hx42vN7iQcWNMpUwS1CxAtPdLXkvU
tZqFEunXONv/9WZfiH7i/xN//gT9AFBLAwQKAAAAAADhKe9IAAAAAAAAAAAAAAAAKgAcAGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvSW5kZXhlZERCL1VUCQADxtOIV7bViFd1eAsAAQT1
AQAABBQAAABQSwMEFAACAAgAzSnvSMIX9RWiAAAATwIAAEYAHABpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL0luZGV4ZWREQi9pZGJmYWN0b3J5X29wZW4xMS1zdGRlcnIudHh0VVQJAAOh
04hXodOIV3V4CwABBPUBAAAEFAAAAO2PsQrCMBRF937FG9vFgIiUbNp2EBWxBTtKmrwhkPaF9KX4
+dbSyS9wcLxwzuXeqq5vtYQDM/aegQmUmdSgERRo6r1DRgM6hpFCIh7kYo+jKBUrUbWNaLE7WxYN
xaDxkwoKKK5kopsxOxh8oTGdGDFMGERzv1jGU3kslsKN9j7d5nkGEjoiB2uBlDPSLIqUX46U68A0
2oH3uydnSfU/8SMn3lBLAwQUAAIACADOKe9IvHFs1ZkAAADFAAAAQwAcAGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvSW5kZXhlZERCL2lkYmluZGV4X2NvdW50LXN0ZGVyci50eHRVVAkA
A6PTiFej04hXdXgLAAEE9QEAAAQUAAAAXY6xCsIwFEX3fsUb28WAiJRs2nYQFbEBO0qavCGQ9oX0
pfj51tLJ8cI5h9u07aOVcGLGITAwgbazHg2CBkND8MhowaQ4UczEi3wacBK1Zi2aTokO+6tjoShF
g79VUURxJ5v8grnR4get7cWEccYo1PPmGC/1uVqDOxNCvi/LAiT0RB62gJQLolZFyj9Hyu1gntzI
x8Obi+wLUEsDBBQAAgAIAM4p70i8cWzVmQAAAMUAAABEABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9JbmRleGVkREIvaWRiaW5kZXhfY291bnQyLXN0ZGVyci50eHRVVAkAA6PTiFej
04hXdXgLAAEE9QEAAAQUAAAAXY6xCsIwFEX3fsUb28WAiJRs2nYQFbEBO0qavCGQ9oX0pfj51tLJ
8cI5h9u07aOVcGLGITAwgbazHg2CBkND8MhowaQ4UczEi3wacBK1Zi2aTokO+6tjoShFg79VUURx
J5v8grnR4get7cWEccYo1PPmGC/1uVqDOxNCvi/LAiT0RB62gJQLolZFyj9Hyu1gntzIx8Obi+wL
UEsDBBQAAgAIAM4p70i8cWzVmQAAAMUAAABEABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9JbmRleGVkREIvaWRiaW5kZXhfY291bnQzLXN0ZGVyci50eHRVVAkAA6PTiFej04hXdXgL
AAEE9QEAAAQUAAAAXY6xCsIwFEX3fsUb28WAiJRs2nYQFbEBO0qavCGQ9oX0pfj51tLJ8cI5h9u0
7aOVcGLGITAwgbazHg2CBkND8MhowaQ4UczEi3wacBK1Zi2aTokO+6tjoShFg79VUURxJ5v8grnR
4get7cWEccYo1PPmGC/1uVqDOxNCvi/LAiT0RB62gJQLolZFyj9Hyu1gntzIx8Obi+wLUEsDBBQA
AgAIANMp70i8cWzVmQAAAMUAAABJABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9J
bmRleGVkREIvaWRib2JqZWN0c3RvcmVfY291bnQtc3RkZXJyLnR4dFVUCQADrtOIV67TiFd1eAsA
AQT1AQAABBQAAABdjrEKwjAURfd+xRvbxYCIlGzadhAVsQE7Spq8IZD2hfSl+PnW0snxwjmH27Tt
o5VwYsYhMDCBtrMeDYIGQ0PwyGjBpDhRzMSLfBpwErVmLZpOiQ77q2OhKEWDv1VRRHEnm/yCudHi
B63txYRxxijU8+YYL/W5WoM7E0K+L8sCJPREHraAlAuiVkXKP0fK7WCe3MjHw5uL7AtQSwMEFAAC
AAgA0ynvSLxxbNWZAAAAxQAAAEoAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL0lu
ZGV4ZWREQi9pZGJvYmplY3RzdG9yZV9jb3VudDItc3RkZXJyLnR4dFVUCQADrdOIV63TiFd1eAsA
AQT1AQAABBQAAABdjrEKwjAURfd+xRvbxYCIlGzadhAVsQE7Spq8IZD2hfSl+PnW0snxwjmH27Tt
o5VwYsYhMDCBtrMeDYIGQ0PwyGjBpDhRzMSLfBpwErVmLZpOiQ77q2OhKEWDv1VRRHEnm/yCudHi
B63txYRxxijU8+YYL/W5WoM7E0K+L8sCJPREHraAlAuiVkXKP0fK7WCe3MjHw5uL7AtQSwMEFAAC
AAgA0ynvSASK6QOfAAAAigEAAEoAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL0lu
ZGV4ZWREQi9pZGJvYmplY3RzdG9yZV9jb3VudDMtc3RkZXJyLnR4dFVUCQADrtOIV67TiFd1eAsA
AQT1AQAABBQAAADdj7EKwjAURfd+xRvtYkBESjZtO4iK2IAdJU3eEEj7QvpS/Hxr6eQnOF4493Bv
3TT3RsKRGfvAwATaTnowCBoM9cEjowWT4kgxE0/yqcdRVJq1qFslWuwujoWiFA1+U0kRxY1s8jPm
BotvtLYTI8YJo1CPq2M8V6dyEW5NCJtdUeQgoSPysAqknBG1VKT86Ui5DtwkN/Bh/+I8q//hxAdQ
SwMEFAACAAgA1invSLxxbNWZAAAAxQAAAEsAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL0luZGV4ZWREQi9pZGJvYmplY3RzdG9yZV9kZWxldGU1LXN0ZGVyci50eHRVVAkAA7PTiFez
04hXdXgLAAEE9QEAAAQUAAAAXY6xCsIwFEX3fsUb28WAiJRs2nYQFbEBO0qavCGQ9oX0pfj51tLJ
8cI5h9u07aOVcGLGITAwgbazHg2CBkND8MhowaQ4UczEi3wacBK1Zi2aTokO+6tjoShFg79VUURx
J5v8grnR4get7cWEccYo1PPmGC/1uVqDOxNCvi/LAiT0RB62gJQLolZFyj9Hyu1gntzIx8Obi+wL
UEsDBBQAAgAIANkp70i8cWzVmQAAAMUAAABOABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9JbmRleGVkREIvaWRidHJhbnNhY3Rpb24tb25jb21wbGV0ZS1zdGRlcnIudHh0VVQJAAO6
04hXutOIV3V4CwABBPUBAAAEFAAAAF2OsQrCMBRF937FG9vFgIiUbNp2EBWxATtKmrwhkPaF9KX4
+dbSyfHCOYfbtO2jlXBixiEwMIG2sx4NggZDQ/DIaMGkOFHMxIt8GnAStWYtmk6JDvurY6EoRYO/
VVFEcSeb/IK50eIHre3FhHHGKNTz5hgv9blagzsTQr4vywIk9EQetoCUC6JWRco/R8rtYJ7cyMfD
m4vsC1BLAwQUAAIACADgKe9IBIrpA58AAACKAQAAWAAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvSW5kZXhlZERCL3RyYW5zYWN0aW9uLWNyZWF0ZV9pbl92ZXJzaW9uY2hhbmdlLXN0
ZGVyci50eHRVVAkAA8TTiFfE04hXdXgLAAEE9QEAAAQUAAAA3Y+xCsIwFEX3fsUb7WJAREo2bTuI
itiAHSVN3hBI+0L6Uvx8a+nkJzheOPdwb90090bCkRn7wMAE2k56MAgaDPXBI6MFk+JIMRNP8qnH
UVSatahbJVrsLo6FohQNflNJEcWNbPIz5gaLb7S2EyPGCaNQj6tjPFenchFuTQibXVHkIKEj8rAK
pJwRtVSk/OlIuQ7cJDfwYf/iPKv/4cQHUEsDBBQAAgAIAOEp70i8cWzVmQAAAMUAAABGABwAaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9JbmRleGVkREIvd3JpdGVyLXN0YXJ2YXRpb24t
c3RkZXJyLnR4dFVUCQADxtOIV8bTiFd1eAsAAQT1AQAABBQAAABdjrEKwjAURfd+xRvbxYCIlGza
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
AAAAIirvSAAAAAAAAAAAAAAAAAgAHABzdG9yYWdlL1VUCQADQNSIV7bViFd1eAsAAQT1AQAABBQA
AABQSwMECgAAAAAAdSrvSAAAAAAAAAAAAAAAABIAHABzdG9yYWdlL2luZGV4ZWRkYi9VVAkAA93U
iFe21YhXdXgLAAEE9QEAAAQUAAAAUEsDBBQAAgAIADwq70jCF/UVogAAAE8CAAApABwAc3RvcmFn
ZS9pbmRleGVkZGIvaW5kZXgtYmFzaWNzLXN0ZGVyci50eHRVVAkAA3PUiFdz1IhXdXgLAAEE9QEA
AAQUAAAA7Y+xCsIwFEX3fsUb28WAiJRs2nYQFbEFO0qavCGQ9oX0pfj51tLJL3BwvHDO5d6qrm+1
hAMz9p6BCZSZ1KARFGjqvUNGAzqGkUIiHuRij6MoFStRtY1osTtbFg3FoPGTCgoormSimzE7GHyh
MZ0YMUwYRHO/WMZTeSyWwo32Pt3meQYSOiIHa4GUM9IsipRfjpTrwDTagfe7J2dJ9T/xIyfeUEsD
BBQAAgAIADwq70jCF/UVogAAAE8CAAAxABwAc3RvcmFnZS9pbmRleGVkZGIvaW5kZXgtYmFzaWNz
LXdvcmtlcnMtc3RkZXJyLnR4dFVUCQADc9SIV3PUiFd1eAsAAQT1AQAABBQAAADtj7EKwjAURfd+
xRvbxYCIlGzadhAVsQU7Spq8IZD2hfSl+PnW0skvcHC8cM7l3qqub7WEAzP2noEJlJnUoBEUaOq9
Q0YDOoaRQiIe5GKPoygVK1G1jWixO1sWDcWg8ZMKCiiuZKKbMTsYfKExnRgxTBhEc79YxlN5LJbC
jfY+3eZ5BhI6IgdrgZQz0iyKlF+OlOvANNqB97snZ0n1P/EjJ95QSwMEFAACAAgAPSrvSLYLDNuv
AAAAAQoAACgAHABzdG9yYWdlL2luZGV4ZWRkYi9pbmRleC1jb3VudC1zdGRlcnIudHh0VVQJAAN1
1IhXddSIV3V4CwABBPUBAAAEFAAAAO3PwQqCQBAG4LtPMce8tBARsrdSD1ERKeQx1t05COrIOis9
fiaeOvUAcxz4/5/58qK4FxqOzNgNDExg3GR6i2DAUje0yOjABj+Sj9ST2tDhqDLDRuVVqSqsLw2r
koK3+L1S8qhu5EI7x5re4Rudq9WIfkKvyse1YTxnp3QZ3Nph2OySJAYNNVEL64DWc6RcKlr/dLRe
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
vAeoWypkJqWWuOxKJ4iull+dZ0PbGqIfQZIkI5gEY2eM7M1Bb2VGLn5KQkIKBezsdzjsqXbPa+pq
LXt+1VR4oMDAI1WBZuRWmJEU5lWyw2bb/2te5rKu+xUIsLD8c0aT0dQbBVPXkk0klD0MTgv1ia/X
steYWXVD31iMP1tFX45DVYePQsjhqzP1OEiThIts67FBpfbbcJBEWs9Nu25w/E2WdCep0IcmoWTe
tb8MRZNgR1EtB3eV1Dmk4VIdwdlMbGeRZ+vSkmhMOGtGuXuMY8hzWcpbK96Aacl8eYkizVUt9UbI
LwPWoQjN17iIV++easFUTuNFyG6MWykXpsNVUqIMkDW8ktj4fjCe+I7rT84cSWf8RzMLVcdM2ti5
vM40thM0ufjYqjkuNrYlN/dD20DWQ+ZOmSa7NFLntIzo+Akh09EU2Wdpk5zCZSvLeZrqBe7fBHwc
ORIhc5i8wKL4utGFUBbxAMrlfWBfE4ALMPl2dzY0clxjiyN4oExxXzRb8QEyqRDSQ33a9XrJHmfQ
5qVK0OOUeZ9b+UdiEZaAyeKt3cYsEXqmxarWZVWUpaRZ+zXW2gtd2d2pixCGaeAjh0SJ49uD45u6
uYmUB1WZrc5pL5gv6weBCXwEIECOuVh8H0kVgmfN8xdtkmcZTEdiWA/m6ddfA8C65H2RDSc/1jjF
PMto0ezcM03TsHre37EXJFyyDbtNnI/b6RtbUefHThN0Z+x7U2sftm/F24me1smgEXGPsWqpqXto
998Yn/rKOQYYaxjjNI1kFXa/1spk2ixNhXXkTn4BCQx1jGicpjYatCEykFljsxTXERcHeJ9Ipi/Z
Tm1fn4i0UFGERKOo5WG2a/p1UoBoKHa4ZeBOjU+UJ0Mrbymj+ep9eUBZsfHeV1+Cj3XSk75F4p5Q
XTp70/GkfwB7wr1kDk6X2tdFxAu9OzRy/IVV1vGQ/To2vM5qVL9tn23/k2ifsv/96+uUurzydUMH
HDdwUdOm+jjTMhoHbtMowz8jqL7/LrYrT9vD9Y20MHzT7v060f24erL1fwtDQ1K3Z7sa/AZQSwME
FAACAAgASCrvSJPDJIcRBAAA/RkAAD0AHABzdG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9uLXR3
by1vcGVucy1uby12ZXJzaW9ucy1zdGRlcnIudHh0VVQJAAOI1IhXiNSIV3V4CwABBPUBAAAEFAAA
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
CAwCg8AgMAgMAoPAIDAIDAKDwCAwCAwCg8AgMAgMAoPAIDAIDAKDwCAwCAwCg8AgMAgMAoPAIDAI
DAKDwCAwCAwCg8AgMAgMAoPAIDAIDAKDwCAwCAwCg8AgMAgMAoPAIDAIDAKDwCAwCAwCg8AgMAgM
AoPAIDAIDAKDwCDwNxN45+RLvM1YcBsl8/sw2rvMAG1AG9D+0aH9dn35yXodlmKuk/oaRpFb3udM
td4lA3ap2T8Oz6u6/VBd8v0a5SpqOSwS3iVzVzhIInlfbXzedGvRi+dwSjZ49bfs64qUwYRR6GfY
umPZjjOxTMOZmFeCqYbxS/LMZgeh3MQB56aUTX+gWGmiGFjqTTF25cVBxA7X1RQymvjTihFgPPoZ
w/FwYhmmrmsbFgdUMAULXJEoj5ngCjaUMIc9iQ0dX/Mk7dh6C1r8LKYBm+KEF8yDo0czTq6YfvO6
1NKxCcHJm0dhturawZXhUb6EM6FQdGYTPorLF6blau7UR7Gyc8WD7/KgUSs6yzdCIXmFyNvnzgna
l7rkH9Re93drWBmmQy1z8wCIkowdGY0cs2m09r7OmVtYTvfaPx5h2lJ6tMhaOgqu/gVQSwMEFAAC
AAgATSrvSOz0LtDqBAAAOiQAADQAHABzdG9yYWdlL2luZGV4ZWRkYi9rZXktdHlwZS1iaW5hcnkt
cHJpdmF0ZS1zdGRlcnIudHh0VVQJAAOR1IhXkdSIV3V4CwABBPUBAAAEFAAAAO1azXPaOhC/55Q/
wUeYeZnxF9hwI6aZcnil80h7F5YIao3Ms01oL+9vfysbG9mWZELINO1wyEyw93v3t9oVzKb3C5I8
k2Q8JmmGlhFN148JYikKMxqzmy+M/rsjs+n9FMFblJIgZozk7+Qcxp1xC3+Wa3qO63kjx3Z832/L
AW4GT3akwSujpOw5/k7mW5IgTjZhWGB6pBuS9Po3s6MnuGVrEMUpwXW7XNM39f6FDf6HJN4EESUs
a3vpmo5909sgyvqGxIUOUT0xXo43zN0RnByP49L73N8HmoA7PfOHt1qtBsT3hm5o9jX6Y03wcmEa
3jViOCLl5yoNKVj+uCYJMRD8WQN/MHIs2zSNLWGYsifuwgOoiZOfkBISkaySkScaXh+D/RhXyZNS
at5KLG496vXFYHkONvvA2elyruwykRl4I7uKzMtEfY63W8g2YkaVxb8MFu+NTKejy+pglyRQfpUm
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
pI2uaW4cx51MHdNypnqHqCWJ7u00KPIsIvYOBV+o2abG9NObjd3j05otR1Tdao3M2rTmor7Lk8t2
Ue5pOpswnI1nhi7vQb/le5mS2K71f6Zrsjal504zRLK/yl5c0CCegLkwezQDAZSByLerG4yxab3/
shcUfA1PUcLYL5sl/BO2lBeoBzva9fqQlrgITEzLMCqYiNnZZ2lpGDfX4TBfaASLvHx0N+2kIWm9
DlH2XDEzS8uUHrVa2Gk1aeZYm9HYEcxcxzDD9cZ09KvhECvvImagCLOFI+4V8333RFAI3wBCCIdc
LY5jUEaDA2f8HVcOI3iLPvDXf9PklKRzQ68W7VrvnKxjWRys/kq7ep/55EsYdlyPlb0XzVcwrYHZ
CNsJjAHx+EmJNRECuQcQT3ZaoicbkoeKrq2AEE682HEQUAGveijM21DzV6eWWHraeGI70+nMmjjH
ldhlGuei3t/gwKxI6avf5euPKM3bsRtyAyAHEmWs7ypvLikJUda4F+XkzAJpowDF8ZqeQpdfDXTP
BQ8qAlbj2jZC4RmxYP14L5w6r68F2A7tjMnzWZlJbvXKRA7vigcEqH6BtwJQ6TIZ0APl08pDTs08
zA2bhgATYTwU4A2DxgL15BAU35+XbBazYgQKeZWZY5HB3EPHh5szrhDHLPHXSEKuXKmYSzERcb8v
tngX4usd+zDfjI0zKi8FYyjVWZWRHPtMHgRow20LJtPl+HwumKBig4PQVxTv4Q6TP+BtEEb981Mz
DKcSDDRmGxU9njiF7HfIHiDdxxmjlihVlArrIphu/wQiJXWexa+gqzoH62swbibEk3JMde0lkO3a
ypvP6zhI75SBUVSN4330rOdIFI+XdenPYj0SxZPVXcl1JdeVXFdyXcl1JdeVXFdyXcl1JdeVXFdy
Xcl1JdeVXFdyXcl1JdeVXFdyXcl1JdeVXFdyXcl1JdeVXFdyXcl1JdeVXP8p5foFRAnebqOsqdwP
URwvinH5/6jTDO9kL5wJ3kVs/Xe7WKP+u7RpuZbRepLI305qGU1cq2m0RW9rKF4IXB6r0fawHGGp
BS85nnmw/wBQSwMEFAACAAgAUCrvSE3PiCfSBQAAYz4AAC4AHABzdG9yYWdlL2luZGV4ZWRkYi9r
ZXlwYXRoLWZldGNoLWtleS1zdGRlcnIudHh0VVQJAAOY1IhXmNSIV3V4CwABBPUBAAAEFAAAAO1b
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
IJqsp4qFJLjaRUERh6ziNo5NkU2cz1Bt2J5ChTynITzlacfvBHoQs5vmWyXqgZ48nJzFCgppydbb
cvVpqZinjyYe0mmmVib2WwETfHMrIGLuFcmMQ7wl9okP8F/41/12bcF0OMD0MOqR7LxZDG1Xje0g
5A4FyFgClBqoViYLC7MMgxeX7NORBzNNCmEmrWj8cNha0ATmk/KBt7eg6mjiUF9FsvOtA75F6BqD
npLTktOS05LTktOS05LTktOS05LTktOS05LTktOS05LTktOS05LTktOS0+/EaclXyVepwZLTktOS
05LTktOS05LTktOS05LTktOS0/Lnnyf5+aeYXhLzGTHyJ70f9ZNeO1iv3bh8IWvnet4kKRdfNHtD
h41SVu2+JGi1yoaFS+coULTaZEV303NtYxrxVE4A5vI5NSp4L7xukb4e0fa+BXM0bZx4EPFZvZSv
tGrGqHf03VRBMLHYUwspBvOZo77kYGDHYAVhQ4wsXHIfJL9Qen73ZCteofY0jEujZDLZXuh6EeOw
dCl1krE1v3B69H3QWLBu7LutJQj0iSwPgqFJYwpghSjMkUBXsD8kF/zh4wtWYrEyCq6ournGZ4nR
Draps1kX8iakUunk6O7pW+OEULvXaGhVZrpTqBEsi7pG9E3TZGkE9qFkixtVrL2aHPcYT5MMCppi
THY0NMUSLmjuLXN/e2JvZXRe+sdvMYlyVMqwlRcVGnYH140NtH1a4dhFbbMRaB7lsb2LNxMwgrzr
Wds3Q87rIYnkemvDDiPB1DYPVctTbayXONX3prSX42jFK8rEy1bA+J7eQ8TxcZfjuIdfpfrymQCp
uA1C+P5In2rRGZCuTcp/IG+LM3sv2EHqgfp/3HiVHl3N/MdckCX+g/FthOvuMMK2OyG8oyKjGst3
jOg6kxNCGfgy8GXgf8HAl2d3n+Ds7uucx32Wrfv5ng42nseVaqM42IgexOU/yXsYmn6JLulxTxit
Z/TUymtu5K3VCmho9MqgNfpl4QlBzjIxqVr0dO4K1tidNOTw/fM/UEsDBBQAAgAIAFMq70gf4pyC
bwcAAGFkAAAtABwAc3RvcmFnZS9pbmRleGVkZGIvbGF6eS1pbmRleC10eXBlcy1zdGRlcnIudHh0
VVQJAAOd1IhXndSIV3V4CwABBPUBAAAEFAAAAO1dS3PaSBCu2iMnfsJULoEqe5GQQMDNxo+lshu8
xkmOW3oMttZCYiVhx5f97dsjITFIMyPJxhu7ModUilG/pru/nta4aGZnpwscPuBwMgnW2D87vcb/
bHAUT03fxp6HndYX34WV2dnpmRmblhlhHiU6Ru3W7PXkOVv6aeD72I7dwJ96QZTQqbpiaLphjLW+
royUso4dz2RiF/gvwmA19Vzsx0RjUZrWb3VWput3EcPwClEdSpKmGcMua/Ou/xDc4/kahyYRdOI7
N6HpR2Yi9sZd4bDTFZgQCBgv3BAczue9M33Hw9nn3IQIjL+5wyFGJvxTB6PBWFP7ioIgTI7r35Kg
XICaIHyCqGAPx7mMLGY7f98EefyYlIKnDItLS50u6ijfjeVyOcAjw9AcpQuclVtOlB3GMwNj3M89
00zUVbBeQ/6aPsqjeIT84BHFIh1VVk83YQgZmGsSMADJMghXW47UKzlfEoOOYzE503CdmvY9mLSA
VMCtxZ+/uzGholcnk1scz8PzCBg9N7rLJMz8ZQAKMkyDJg57WRFKluATWroeRh/bHxEY67jRvWCn
juuclU2m8s8mAC4xsgL6b0USDpdGkoQ8GGSW5DqAcE5XwMkk3JbCYLUmlA6DJPD3pSw2to2jCEw5
RnYaTwT6IhJIN6JrmjZQdCIwFwWuW5uxfXf+kBcuajeapXT3EE+qNW9zSSWnMIw6bfCNrhvDka72
9VG3dEAIHF0Jdpz4mXeglEr/gfA+Ukavjndax6vhnWTUDu17ntUg5jzoE+fu4RE41b45GOLBGNhe
WAaEEJ4XVB8moprR/5HeHlqqIjrhwWdh/DWF8hSMuMXUOV/R6oTYjDGPt9zuKAO1//wehZMvFr51
fYp+5hdrMKdMzun6wEmrovCsrahRUHcWUh+Af0qcRo6XXVaiRze+y8spXUuhpqFdF4h2lY5EeAxN
k4nHhq6ojrVU9W6rfmDTbVALiZnVOw38L+vb0HTwZ4wd7NQ5D3RdgTKEHxnrb6/xbHhqUb16goW5
9TeEKq1bx3A6oXa35OcSZeLm3ceMYuY7+DsjTtTTEud6A2XwxHFKTNsMvaKeS0bJ+HMxNsLV3rO8
Gu3qz1490G2lBtDnfnr88A4lZmXgPyxVvooyI7hoKNNyTtus6SgxcA5QVlk0HVJt0XyRnXyzMzRQ
lIGmDJTBUNyiXfH0N3QG6tim51lga1fc44DOKSssnKaCSbtnCouIToxD5V2SyPUyLs951nIdx6aU
Vfm1paqTWSmpMKdSGB8jOqhpFunD0egIpc93K6288YJ+JQrCNPVABQJL4MUTfWh/aE3TR9CpWG7S
EyAveMQhusdPyU0ANBZoA29Z+UqDbG3ozuYZmodRmJvsArf/+LD5mNXrqmSk63ppTey3nEzwupST
iBMwPz24b5o+8QH+hJ8+b1YWbEd4tXRNGm9I0zD5v32EgiRfUUQlrKYNlQop2A5CchVN0o4tBF4W
uEKg4taRMDaGPAkb377D9j12wD1JisD2SYe75VTUYZdI/aU2f24PcLVroeiqWSrQ+OFj4orXS1DP
6LylXoS2V2IN3hp0lYEOCSkJKQkpCSkJKQkpCSkJKQkpCSkJKQkpCSkJKQkpCSkJKQkpCSkJKQkp
CSkJKQmpnxRSMrllcsvzQp4XElISUhJSElISUhJSElISUhJSElISUhJSElLvClLyOwr/43cUngUJ
XVX7L4KE1Cq1Sq1Sq9T6Y7XKb6hVdyPBauXG+1/of3Q9b5qsi8cmvEBhZedTVL/X/5QeVgQu3aNo
2lhxs6IJTVkrxGTiNUVi4mbmUsnLFFvHG40ymKVlf76JaoyfP99EgApWGpSwwUhhptVtDg28KVhB
WJHsS5d8WTmbc/L2xncUvEK9yzBmmZDNbN+BTpYxDvdmpaROSeabtF80GCQWxI09cmWPBGczjaqK
RU5YSBSmJaAK3gvJsCj4+IBRLC5xglklblask7JMgLVJnc2azDAlD1Eno+4eXhoHQheuD575jSQW
ZAp32hFVXpnuFNYIFke5RmgjeM1jJD32YWWDK6tY/WrSePtshYUyKBDF2Ox4OBKXcIG4l+z95Sd0
Laa3Vf/4EhOUQ+vEH5N16Klc2/bgpFJxk8Fb78Xdu9bk5NUcL25vwIJM9azuSLsfdGRzKvaCTC+r
6HkSmlI7U+Q8VM9+i9MTp+ogzujoGpyvicOWk/E9vSMRI+8yo+MPTEzPz2PWTfpAHemvdBl5fn09
v56gkzjGq3WM4gCZzgMZyoxMZGcD9LYqW72vgbdZ4ahH9tc7/7bofcPWJzfuLYJNaGPyaQpW9/4I
nI0HZEn/gB3H6kWJ53v57lNDf7XX605/NOqiCbKCwENbAUkrlgWrwEP++pAY2Nm4fjzU/4q7tbB/
2Szm9a77L6nkKsLhkpGgb+S6X2JHYkdiR15Oycup93k59V66xrd7VVZ5OcWdd17+jYuiLDh91szL
I/oBPRg4Wd3lhto3+kphnC2ZV18gGhr9faKV+WTh5KcpZttiUeTo69xgcX5uo6Er/gNQSwMEFAAC
AAgAUyrvSGxmKBrWAAAAQAIAADUAHABzdG9yYWdlL2luZGV4ZWRkYi9sZWdhY3ktY29uc3RhbnRz
LXByaXZhdGUtc3RkZXJyLnR4dFVUCQADndSIV53UiFd1eAsAAQT1AQAABBQAAACtkLsOgjAUhncm
H4GxHUyKRapsAiFhMvHyABUOSSOcakHi5LMLxkQiqIvryX++/5JEwRZMA8b39QkwCjZwvkBVhxJT
KArIrD2q9pJEQSRreZAVfFLaU3tiJS9e9tSHGhHSWmkMC109dI7LBHeFWPKZyxZs6PH68f307T82
ugwLBVh3ju80PrNIKRVSeyT4DxTpkTgXHh0rr7DRR1ifwMgOtMJsZyRW8oHdqRIMof0Z/jLr50r6
S5BYmdaplyXtWg8gY1lugxuhNmFXkef5HBbCczxG22B3UEsDBBQAAgAIAFMq70jfZJeWHQUAAE+E
AAAyABwAc3RvcmFnZS9pbmRleGVkZGIvbGlzdC1vcmRlcmluZy1wcml2YXRlLXN0ZGVyci50eHRV
VAkAA57UiFee1IhXdXgLAAEE9QEAAAQUAAAA7Z1Nc+I4EIbvOfETdISqTZVtDAZuiZnUcthhasns
XVgi8Q7IrO2EzGV/+8o2NjKWjMlmaj/qPaQqyN0tqfW8Levg0mJ+/0CDNIq/z2aMb3nK5zSla5pw
ckt6N4v5vR8JwYM0jMRjtOLxK49Nli1Pv4rwjxcubcrW2azR1B+QvvXmbTabEZ943pBZA+nZ39FQ
DIgmwDMVbMvneWeXzY6/l3se02wyiRzX4zOPOaHyzx5NRtPhyJs6ZM8FC8XTzXWhvkT7PWeEChKV
zT8RER1I2tbHpVH7L3HMRVr11OIgTTZRvDt6FFmp/PI16LO11rNYrnsafJNDWkkU2rLJQjZv2iuL
H2yjhDccddn88wIB442XE2BisBxJ1Yc0lDMW8/tfuYybpLNZXPzjR7t9Zsk0JpGoR1m9BAFPEjmU
WxIUySSyvyTLYpgQ27W8oet506EzHFluFrAKxcJkT9Pg+dNr5iRTXpvNcG0NMvNKbhIUYZpc9kwV
EOn3ZG5c1xtPXNtxJwM15arxu5TG8zxrPNXIp2F+kNgm1uSHi03t44eJLSPqJLVaZodyzU26y5Kr
qijztN0NY9PRNHNr0+DyzPdjlmToOf9kusZru3XeSUrj9LdCi74cxBN/jKlIaAFlw+EErKxKMacp
N/nmCrtVtW2NbEcHZSheo2+nJN4JpoR5DHc87psXfM2fQqHYL+pL+AvfybogPdTWpldLgqKWcT2E
sax/H4KJ7VhWhYm5Oi/VstStNp+Go/yQI/Cz5ZO9EVa29cghTJ+ryqyWZVkeSVANiZyKZsbaVI6d
8qnnWjZbb2x3cNMdsWIvUhryYZ5xpN1ivu6fYsr4Z84ZZ122Fte1ZEXjB037O7ac0/wKHSzXv8vk
FEXnVm4tpDdozKxhiUAIhEAIhEBtgZSfpcVCMP6m2TuUp/CEJzz/r561Z9U7+umtvPbO5gZWh1Kz
FMWLtun1W1ubzA8b54ELhc58jNDYGk5D5aGw4WA4B+kKM2XZGYQsV+V5YDEno/HQnUymztg9RlLD
1OYlvT/zgxJRnt0uu3x6C5PsLNIcco2QQxymqu8qO1m0nsDkkemLKSdXLhDpB3S7XctZDNrPxbJP
X4eK4Uinta0NRWekwgotQAvQArQALUAL0AK0AC1AC9ACtAAtQAvQArQALUAL0AK0AC1AC9ACtAAt
QAvQArQALUAL0AK0AC1AC9ACtAAtQAvQArQALUAL0AK0AC1AC9ACtAAtQAvQArQALUAL/0Ut5B+N
dlNB9X2prrlLYgvLS8wfrbrQXpi2cq6amL6o7cZ3bnoV2Zfmew7qlZm8Hs5qBVux1H9HXH8MFIEi
UASKQBEoAkWgCBSBIlAEikARKAJFoAgUgSJQBIpAESgCRaAIFIEiUASKQBEoAkWgCBSBIlAEikAR
KAJFoAgUgSJQfA+K0W4XpvUrxQ7hduvn7e2XSf6NDi9if959Df7GwwsLV8yxhf7GZNvuny51oHUy
KaLF2Mhz4VRx3/pZw0MowuSZM9jCFrYa2057gValXYrLVRuCrpf6dc62N33/dc4tm4yuqja2Gs2O
oB11z2CzjO/WUXxh79iE2fdI5WXK/747os+yotxarLkwOZvM6iUIeJLcbVIe1y5k9o9VvLxs+cq7
kA1LWXD9czZBOWLjJeOGAJE6fp+KgG+35zdaJ2m0r1FpO55jnV0+uo3y+65Vo7Hn1I129Pua+5nl
4rjrn3s4rnGmDQnlgdj1E6st6HFuvZu/AFBLAwQUAAIACABTKu9IH5wZlYsFAACKegAAKgAcAHN0
b3JhZ2UvaW5kZXhlZGRiL2xpc3Qtb3JkZXJpbmctc3RkZXJyLnR4dFVUCQADntSIV57UiFd1eAsA
AQT1AQAABBQAAADtnc9zozYUx+8++U/Q7GXtmc0MxmBs3xJ7M/VMp97W2d4xyDENFq4gyebSv70C
bCyMEGaTTDOd7yEH4P2Q3vvoSWTDvsX8ZkX5E+XTqR/4twEL4u0vLvPDgN3/SXkcRGy2ddk9veMu
i10vETfIFel2vrPg70e6mN/M3cRduzGdRYzR7HmTqVRf/AwswxlajjMZmsPJaNzp7dyA9UnFcJO5
jkIjYE/RA13uKXfTEV0zXxr/XbCjvNfvLE5zj/aUzW/+oMJOnMxc5tEwpL7KsloyC4lkz68EZRZG
cSYnTdsyxoY+kN6Z/i2PdrMwoCypBtEyhqYmiA2menI6hs6o/5HCKnnJRHP3mcPbgAu5nvHD2Ww2
Nh07I8sz+po4RJrRZ8Y0utuUP3q8LuIQi3HebSmnxBU/A3tsT4YD0zCImJQvcE2ncCvcRPxFoEFD
mhQ2jjM8Jf0uKiBSSmqeKkZcudXry8Fyhr7RF5qNU86cvU1kbGdiFpFpZ+pbtN+LbLuMFFn8Qlj0
TBKdj6ZRzx45F8ug8KRRECKbiO8OGnlUCr0sBz1/ra5hmeyN6z2IIa0ECrSz+v3XIEml5LvT6T1N
lvxrLBRDUfKOFhZsEwkHx8IiPNWoVx2R7Ja4IpsgpORz9zMRg/WD+EFfc+fVIUv8eWkVqSiqEvpP
A4SjjZNBWLcMjiMpfAjBpVwvplN+KBzRbp9K+gqRiJWtrB49j8axGMoV8fJ8kqd8XyFBXNqdbMNK
DRamROj2buJtvz4V1VOazXBt9EsrPq1tdZPL6p60hkmvK2JjWc5obA1Ma1wtp5pANy52msW5rvxW
9p83Wu9jY/zu61328W7rPSXqtNpLkR2me07N0k+DW1qPQnNguvaI2hOh9soyoF3CyzPXb5PRoWP+
l9EerQfaHV7EjCd1h9eG8xanbkJ1B9/ymcuwB2Zt3tf0PmCS+qKcip89X9Xwcu5Ne7LIyWhZUE/j
lC6Em1katHR7OVFJnoNkW5RTuZaKmkZOR1FyqnRphifi0OTSiWMZA3+9GVj9zuWJVZwUy9fHgFT2
he/7e+769DdKfepfsh9YliHKEH1W3P94B8+Wu5b0wpCtheX6L5GqvG5did2JdPuVOFckYQiGYAiG
YEhnSLo8SiyYT38odjLpKTShCc3/q2b733Q2lpoly4/9dS8DytpU/7ByOm0odJrfSFdla96kji+G
FYWadyFVYXb99ERMlqvj28liTmzDsIeGbdgj/Wv0tzr/LYNBep4bhmsx1n7jP6DMVGmpeZlTypaG
ohKSwQB34A7cgTtwB+7AHbgDd+AO3IE7cAfuwB24A3fgDtyBO3AH7sAduAN34A7cgTtwB+7AHbgD
d+AO3IE7cAfuwB24A3fgDtyBu/fmLvvD+cuIK/7GXnX7ksDmkk18HaQuISsX1TKVfzZwReSk5hRZ
o/H4C8mfn+50io9xvUceRzxHT7ggYiT8ZUo+dT91ZvmjICbrIPtOlITRM+Xkgb5k/zuEy3zyuN+f
7rSgtWU42xNapFHLpvqDivJj8AgewSN4BI/gETyCR/AIHsEjeASP4BE8gkfwCB7BI3gEj+ARPIJH
8AgewSN4BI/gETyCR/AIHsEjeASP4BE8gkfwCB7B44fhMdrtgqTcsOE5CMNZdl/fOOgVDhvZP3df
WgGVhw2Jy+eoa/p5Plldj8LjYlAq1S0LvXC74UrwKs1eEo1WBKu8lDt8DZyJ+ZpWqHWrQoVBZW0o
EFaOulsjs+TX64g3wL4J0k8zjp2+Pl4Dq7OoSE2sFN280skcOjtebxLKS93C8qBkHb66P9EaqyaV
lzVN1jaArLbIbS0td0mL9iWGB6ZjGmeda9LmnWdCI8csC+3clzXNmgUvDkXtXMO0auNS0wC5ktDD
aLudfwFQSwMEFAACAAgAVCrvSDrxJdgLBgAAUlEAAC0AHABzdG9yYWdlL2luZGV4ZWRkYi9tZXRh
ZGF0YS1wcml2YXRlLXN0ZGVyci50eHRVVAkAA5/UiFef1IhXdXgLAAEE9QEAAAQUAAAA7VxLc+I4
EL5z4if4CFWbKr/wIzcCSS2HHaaWzN6FLYJ3wGZlJ2Qu+9tXsrGRbUm2eUzIrA45YLekVvfXre4P
kdn0YQHRG0T3937gPwVhEK9/B6G/CcKXvyCKgyicrEH4Ap8RCGPgJfiBcqf0e9/C4J9XOJs+TEEC
liCGkygMYfq+aSoyHv9ppmobpm27hm64ltMbbEEQDpXaxE3T9RgjgvAt+g7nO4gA0Wgc+pT+z8EW
osGwNzvuPdrBcPrwJ8TzxMkEhB7cbKDPmpktmZrkivP5NSNPNlGcylFmNFVHFTvGq4x/QtF2sglg
mNSdYqqGLnBKw1QD2r2GbQ3PcRP1NLVYJp4KPAUIm2Ggvtur1WoEHdsyPXUo0DsSrJZORtvdI1ur
TcLayr+1Z4NhSS3NUoeZU5/wihH6gb0KNzCBuXzu86O/nqPC/0xJwVuGhg0K2oafKsi33JpEH5ym
izWLHT4Xzo2xXs9riKAC8J82ckauMbJdXcEB4OOY7nWb6mu022HHg1ApHPqbEkZ7JRGt0aT15BUh
jOBiJcEALLKK0PYwIrNKMS71wcBfstNZKvsAvO9YpQWGAhTnvmld/joQXdk5RJkYzDUp1sCCczp9
3d+jQx6Ltjsi6TNEorA8y+LV82AcY1XuFC8zpvKW5XcliEunxEg1yYTFVH4Q70DirR/fiqxD7cZY
qsNSuJFUy9tcmoapAFIGfWwb07Qtx9R006mfFgJDN0YaTO3MOw1qeftCweaoztWDjV7jasFGEHUM
tZJlDZL7OXFHjEtHERmpmSvfd0eu8MjAyJ9Xxl7GJYatf6S5rKUm3HecAJTwqsCGQgNBkEBRBVku
NtSRpnMdt4QvQUgNn5VdcWph8Qfc4ryAx9Gz1Vc7q5a4CEw0XVULmPCz85xOS+1y81Ed6gPWYELc
h1dT8sIT+2sfJOsiM9NpGadH5VgNKsekSbDmYt0BdG1T1fzlSjOHvfYQy86iUvFX/pwXQrUj5tvu
BQEffoHQh36bo8U0VZzR4J7x/IQjh6qS0ziYL//GxsmSzh0+WpR+vaytSaYbO37MJWahD98ZlqHe
nlYyNyo0DzOw8SDI3AH/ZS0mGswhaEXqspxMkifG2gBOLmC5D/gkDpX5Io+J2VQZWYbpOK5umYeZ
6GlK+8Kjv8A9NWORiERDHt+DmMRjXeUSQvYoSOixCxJdwiyE08ZXnk06OkgZeGCzWeJdDBvZgQkL
Kpy0xpQtqcISosF6qVhIg6tdFBRxyHrcxrCZZBPmD1Jt0J6JCnFOi/AyTzt8p6KdkN203ypQO1qy
OzgLDwphyc635dcXhmK03QZJ+ZTZB5vNJH0uPj3PWLAR9tXlS+CvvWxwXLZHEflU3ayo4c7jgDmI
FxECYS6es0EF7oW5OWM02yZnpjZtjNgJ+KxVynW6Zrv6OUweL5hY6KmFFAP5TK37HJk5Gi8j1BAj
q4AcHnmVfHvFf8UqVDnKqITJZg4Ey3iVQFSqtCcHtOZV9OlFLqGgSjhRXdewykJb8GMJU6p4dkgl
lRGO43ARwqG/L0vvcLDZ7ksRydazv1QR0GSS7LoE2XUL7I0+ck9mb9qyMFdvki6A+G5fof70L7Yk
GSXJqDPIqDJYJVEliSpJVEmiShJVkqiSRNX/gaiSpJYktSSpJUktSWpJUkuSWp+D1JKsmWTNJGv2
i7NmgBSA9UarRV14Up+VLpe3WThssl+tHOwb89ANKtqcR47wG1fueuLGIrMhP9ar07Xp48asMZyj
AfBl+dmbjLliE3fhVHvs/JiGaeGfLn0fa41K26e71snn12c5UcYtwm5czx8sA/Y79T66MdLVU3qf
Dj1uB2UMS+V0xcXuGW3mI0IRYjaZ5ADGn4+NpuyThs2d/G1047fSXd9cDpFNrmxyb+d3Nye3iKc1
vS27sqs33y3avg46yA6xdYf4C9AK8mqIvBoir4bIqyHyaoi8GiKvhsirIbd4NUReI5HXSOQ1kp9y
jeTsyx9cYqz+v80qHV+0K21B0+2MDRZZRtMtW+9kGTxCNz946RLoDqv3hS8+jVW7KXpN6e5G/iiz
/QdQSwMEFAACAAgAVCrvSN15JFn1BAAA4R4AADIAHABzdG9yYWdlL2luZGV4ZWRkYi9tZXRhZGF0
YS1yYWNlLXByaXZhdGUtc3RkZXJyLnR4dFVUCQADn9SIV5/UiFd1eAsAAQT1AQAABBQAAADtWUuT
4jYQvs9pfoKPuCpT5RfYcGNgp8Ihy1aYzV22xKCskYnsgdlLfnskGxvZetjMspWpSg4cjLtb/fi+
VkteLR83iB4Rnc0gKEAMcrTICEFJgTOySLMcQevBcgMn9IMwnPpe4ETO3VeC/3pFq+XjUtKZzZKO
/hPN9osUI1IwS/dda753N9oDTGxLMtpraiRY8v1wYt8pbGByzL6h9QFRwA3NCXymgOSgNPuM94iO
7LuVkAYMnzDB+e5XQGCKycsfiObcgx0gL0jQ5S6IitkBkeXj74g5kBcLQBKUpgiqXFJL/m/vNvaE
EpWiVd3LSj9hyuRGzlu43W7HKAonQeLYBgBmBtiUxgy6O44fVD83AMyZn887RJEF2M8dR+Op73qO
Y7GgIIMbD+GJLZPR7wyMKEVFY6OO8MK256yBrVLS8FbhsfTXyBaTFfrQsZlmb8jlYrfJzDicek1m
rjP1JTscWLUBsZoq/mKR7GQVpjX6vF68Usr6T7OSQYGJbDO6P2tUWWn0yhqMYKzUrMr1CJJvzKUN
g4Ipm6xhLWV5ofgJ752Soiqbf/cgYLINSwToMFh70qzBBNciWWczemZttj9wSagQyUjbyuY1SVCe
M1cerKRKpnWsmrKFc3E78cdOwA02piDOD6BIdp+OzZ4hROPHjt2iG28suuDKpiMQyBrds9wEQTiJ
AtcLIlvqZYZE9zINlXnW9T5p170R2SIn+ulkE9f4aWTjiLpQrZVZnzd8De94ckUWcU032EI4HU+N
+wRD/rqje5uS+KH3b6ZrErvGuPMC0EI3IPWMiRSBApmGq/ao6IxdT1u4GL1gIqiv2qV471j4G9qz
vsD0RGvyah9vgNB057XYlob15os7wgPzYMHLx1az6mMDq9cJF7umM4ttmbVH6zLLW5emybE2Zb4D
NA0Dx4Xx1g3su+EQU0x87ed6EJK2mK+HFwog+owQRHDI1hIEDuto6KT4/x1bjnDGKXmwjv9kyama
zgPbWqx7W4pMkiwDuzzWEisC0ZsiM8JbeU42WMVqjSGTdW8Ia1LBUwdaZcz6lxKLehJoOHrKspre
U7dSSUHTPVQFB5Az11pvahatltZ44gdRNPUmwdmSaKYVF9P+jE6CxaZ1mVQ+veGcM1h2uVX9E8WF
qLvhfDT2LdZovuhycmWBrFEC0jRmUdjm3YStuVBBRdMIlbItV1RCIlhvxYWSjsNY0DBX9feQxFaS
fZg/Sw1BeyVqxLkooutVw/Bdil6F7L54u0C9MpPXg7OpoBGW6g7dfn1jKGb7PS7a+9IJp+mi/N+8
3/7Agr2w7y7fAr/0sqdwVYymy8ZusKYjes0DpZKOEQZhLZ4rpQb3xt5cXVwObc5Kb4Yk8Srgq1Zp
T/ZuOPV+5OZWRyYVeiRKKZCv9PpeI7Om8zijPRzZYr551HP1xzsudLIiDLDtqAtDMtVzd0uEzccg
ThlC+4jfCHaqp/SELTWHkF8+sMcjsgpzuxoy6HZOC7x850uo+bZAtHUaWZz52b1yVcZgZItKQ2aL
H0WRii2IsH9eUS+fh/PqXW3+3eeg/wq2NN1q2DenD9Y69BbLfIHW5nSjO5meDXneu/DQS51udfMi
OyihB/gGIA9PA/aF25gU70pKe5du4Xqh53TuG/jXgI7QJPTaQnvwPUblN9fVmU5dDS/QglnzHdl4
sS5/9zPl6goz/wBQSwMEFAACAAgAVCrvSHSlnf6nBQAALCMAACoAHABzdG9yYWdlL2luZGV4ZWRk
Yi9tZXRhZGF0YS1yYWNlLXN0ZGVyci50eHRVVAkAA5/UiFef1IhXdXgLAAEE9QEAAAQUAAAA5VpL
c+JGEL5z4idM7WWhal0lhECCmy3WFaqS4ARvchaoMYrFiIyEvb7kt6clITHSPIRsXOtKDhwkdU+/
vu7pnqG38wLaJ99o8PcB5rObmZd4Ky+G6dQP/Dtgm4jtrtdJ8OQlcM88Gnv4ENE5vfHWjwF9WCYR
g46EPaBP0SMs9sC8lOGa+hz7fbAD1uuLfBxNpkEhuiYPOZbAnoBNpxAjZxjEW45VXNeNKIXjsjIO
ckW6+BtYhj20bHsyNIeO48jsAopvDlDjfbUHOEvQ3NuAol4/edQP0dY/gMVI6m49+tAskDdRv5TE
2MnY6fR0UNAsdxHbBSPcMIrBr6ppGY6hN3xd479l0c4NA6CJaLRlDE2N0Q1L9Xj3De1xE5i9VcSS
P4NkGx0S1wvDFeJZIz0jr8ecc1i0Bzq7+R2QL8b16BrCEPxOz19Jl9sfM1m2qoRcvnpG/QvsIvaC
1HxCKvTNaXlC0SVVHCjMaqci0p0wcR9x+bVMvIqWKWm95GQ0nTr+65y5mApvVKA9w/dtwFCdnvHd
3mw2I3DssbU2+q9jUsMk0mRYtpiGd5smMxTPZa7G6MP7LTAgHv4GI2c0GQ5MwyDocB/jeBm7s9gv
aB4bVD6P4DGcsSqEdZTpa9ZdO9C3rVktlPlBYbpFMZiA6AwIISnX0CaJlFLzVaKx8KrX5wFhD32j
j5yNJmfCLuOZkT0xS8+0W+ou2u8R0R4lZRS/EBo9k0Qno0lr98AYbiWlJA3DsXYfOXKvlHxZDFRV
Pw9XpXNa/vZzkIBQvh8gWbCvRWNUrDCnmwgFFJszSlKwi4JI9gqfyCYIgXzufiaorB/Ej/qcnYkq
c/hbpzuxwCgL6D8NIBxv7AyE6r1iVsF6Srjgt5zplB33nmi3Tyl9CUlEq6ssD+s1xDGqckXWeTzJ
U95LkSCudGQjw0oXLJdC1+29ZL39+lR2IJw1w1VeY8uMT7dHlXHZ1snlMOl10TeWZY8da2Bajrgj
axzdmOyQ+Vm1gws93IXy3TGcd893Xsa75XuKqFO2Vzw7TFsDReqnzq3kI3IOTG80htEE2d5YBrQp
vKiJvkxEh7b5I709Xg20jVic9oeqga1hZmGAE65u2KvOLcZoYCrjvoKHgF5+UFfgpS6tof1e8LXk
vIJ60pN7QDFu6rR0ezmhkjzjdFWWU76WYk0jp3GOnCpdGuEJNk0eTGzLGPirzcDqd84PrGQKqD4X
DhH2hW/7B+b58CuAD/45+4FlGViG4Fny/uM1ni13LW7oznJhsfoLQ5XXrSvcnUhXHCAEyszNp8eC
Yk59+C6JE/dVnGg0qwZyjtfMQIIJxTykSiGpzeqP+gMJkV5zFiLS6g8aXIFBUUFkAff8FEdksSxy
ej4jI8MYDY2RMRqfNfO5b3UG6a2PhzT9xqM2VxYWRQmU0taPIFwdMC6Fuwz65yGuzBLZ63Mcm1M2
4etIdQ6yclItpvLEvyJ8UHMUWWPH+ULy76c3nXJLwUocRyyHHoogqAm21ORT91PHzT9hDV4FWbUj
YfQMjDzCSzbjYMkkB+wfyzct0NrSne0RWoZRi015Sax+vjAeo90uqB25PQdh6Gbv3+HQLRfYiP26
+EoGCB8bApfbqDturhurm+yLZJAyqdJCT9xOXQ680mXP8UYrBMukVPvigT0x33Kup8oKGQyE3JBA
WKp1V0GzYMIxpQj2TZBuBUV//MGPhSutX9XqRONMef9cISkv8JoyWHo3qNIERV37fjr5p3eOQBJ9
3TmnRax1/Wn4jidA15sEWGWqyGGQTQLd/9b95qvq9asniP8LthTV6rwb5A9WOjTXoO/214Omm9JG
wS2PRCoRjpNoL/2Q3SmJndAZewO/pPLQV7xZfR/N+OOTbL1T4RmYtmnUhv70VL9GNLbNKtHOe1lB
dhM/P2ZmncO0lHmh+HdBS1/9C1BLAwQUAAIACABUKu9IC1JxHosGAACxUgAAJQAcAHN0b3JhZ2Uv
aW5kZXhlZGRiL21ldGFkYXRhLXN0ZGVyci50eHRVVAkAA6DUiFeg1IhXdXgLAAEE9QEAAAQUAAAA
7VxLc+M2DL775J/A2cvaM5sZvR++JfJm6plOndbZ9ixbdKxGllxKSTaX/vZSlCXrQVKWrayzKQ85
WAIIEvgAAhCZ0db1wzH4Fvr/PMHZ9GbqJu7SjeFk4vneHUTrCG2vV4n/7CbwHrlh7OIfUTgLb9zV
ox8+LJIIwQGF3Q+fo0c430HkpgzXoVdiv/e3EI3GTb4SDZlBLromD3MsIHqGaDKBMeYM/HhTYm2O
60RhCPfD0jjAFRjiP1mTTFUzTVtVVMuyaOuCIX7yBGu8J2ugtBK83Fs/xPP6xQ29AK/1T4hiTOps
3PChXWB5ifyhKIu1DWsw4kGBM1wfa492MJze/AHxOHHiuOEKBgH0aCPTKYlKyrpsKMUJopjQlZat
SZbEV+Sqxn+Loq0T+DBMmkrUJFXhKLFlqFHZHKpptDmHu4xQ8pefbKInrIYgWGL/4Egn5HUMtRtg
5C2pw+32kYE2ajejLX7/1U9S6rKDs+d7MM59VHKcReJWyFPSeiwhNIM6sOucmZgKb5TDmAD31kd4
6iPpu7ler3VomYa2ksanMbHtFXFchwzG4d2kXgrz34UTxliH9xuIIHDxn6xbuq3KiiQBbBwPa76f
dRPDzcPMNnjymbX3po9ZJqybmx+M7rqhr2sw6jCZC5npFouJ0CtWBgxgUozBdRIqJectZcaNR6Nx
GRCm6kljzNm6ZCKsH83opq0Umuk21F2022FEuyEorPgFhNELSHgy2mbtPCGEY3ohicOwD6J7jkwr
BR+xASv8ZuaqpESMOPoAkzn6mmc8+QizcB1hAfkuyQ7DTUGAPMK/wNoPIPg8/AzwZD0/fuT77LQ5
5RL+VumW2GCkGfTfFhAaa5OAkL1XTCtYTwnn5e1pMkH7fSra7lJKj0IShdVRFk+rFYxjPJUrsMrs
CZ6zJAn4cSXV0iUtHbAYCqtu5yarzdfnIhUorUZdZjG28Ph0K2UtjmyzJR8GoyHWjaaZhqXJimY1
Uy6OoludHRI9s3b7RjLVk79bkvXm/l6W8Wb+niLq4O0VzappasBw/VS5FX/EnLLi6gbUbcx2Zhjg
uvC8Jrofi6qmckltG0uZm4jFaX7IqsRaigcEcenKq+KqBYSkywrT7kv44If9V+AMvNSltaTf83Is
OS6gHuZZ+oHFOKnS0u3lgErwgsucIpyWYymOaeBQV4FDpEstbOOkyYW2qUmyt1zL2nhwvGEpVUD1
d66Qxr7wbfeAXA/+BqEHvWP2A02TcBiCL5Tn7y/x7Lhrlapf4gvz5d/YVFncusK7Exg2C4gGJVHz
4WdOMQs9+J1ip9LbfiqaxoTy6oblENQVsF/y6/wmPafF0KTl1+9Og4ERD2jmc70UFWC+yD10NgW6
JOmqpEu6cVQF55yrDDBa7Xsf49aOmEMzCyOgUWnrDQWHB4y+cEeAfBziCszTHh+j2IyyDV97qmOQ
lZFyMZW58RUoGzVDkWZY1heQvT88GRQbBI6rcYQy6GERAM8EJ8jg0/DTwMle4Yi69EnsAkH0AhF4
hK+kYsEBEDzhbLB40gGtHdXZHaGFGbnYpAe46uue8Rhtt36tgfbiB4FDnr9BCy0T2Ir9uviKBzRe
thguWyOvi1tfLK9Oz52BysRyCz5xt+mWwEsd9hhtdEIwTUo1y5VNWzmnS8fyChoMGr5BgTB11kMG
zRw1mo5NsK/9dCvIs9133uStJHKUjDZdzL67cb1OIKpkzJlSSJY7PC89TPs/FZxItq0aVaKt+7qE
5OPJbB8TahzpJzsWQhgfhPrtrTCwedxnvQ///erEz4KcHpXoNPXRaXoPvQ9Ft0/ufXTpYfzw7/Qf
47ug6Pv80L7PBTstVbCKLozowogujOjCiC6M6MKILozowogujOjCiC6M6MKILozowlzmBIrowogu
jOjC9NCFIafcm3XEEZnVJe8FnNUAYNdlTHlHXMLpeuvmlDs1HW/J9Bnrut63aCqoS+lCk1GrXBTb
OHmz+VlC+vURuL9uOjBNgcNO6bui6op0SvreoUzrMBnVkBiFXbF6SqX0FaEIUeukdAfEvw+1kkj1
x+3F6PsoKN9LgXhODHmbKy+ykV95EZc7fopi7+Q65jK3QvrPKMRVkv/3VRJRWovSWhxwEAccxAEH
ccBBHHAQBxzEAQdxwEEccBAHHD7yAYezjyVUFBon0Y53K5/xD71qlQIZ47A2WTGz7i9PZbJimEon
lWEORROiLyC6GzKYAOv+opvgDtT/AVBLAwQKAAAAAABZKu9IAAAAAAAAAAAAAAAAGQAcAHN0b3Jh
Z2UvaW5kZXhlZGRiL21vZGVybi9VVAkAA6rUiFe21YhXdXgLAAEE9QEAAAQUAAAAUEsDBBQAAgAI
ACIq70hyrilZfQYAAKhGAABEABwAc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2Fib3J0LXJlcXVl
c3RzLWNhbmNlbGxlZC1wcml2YXRlLXN0ZGVyci50eHRVVAkAAz/UiFc/1IhXdXgLAAEE9QEAAAQU
AAAA7RvLcqM48J6TP4GjqdpU8TLGvjk42c1hx6lJZu4C5IQdG7xA4pnLfvtKYGMJPXjEnjgJh6mM
pW51q9Vvidv51Q3wszj5NZ0GcAUzOAcZ8EAKlUtlcHE7v3LjKIJ+FsbRQ3wPkxeYiCAls9+i8N9n
iGD2o9MpMzRUlaH2c7xcLkc6CDwz0FSEOVyDMFIVzgJPIApWcJ4Tqwfb/V5sYALwZlLE18MTTKAC
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
cnIudHh0VVQJAAOU1IhXlNSIV3V4CwABBPUBAAAEFAAAAN2PsQrCMBRF937FG+1iQERKNm07iIrY
gB0lTd4QSPtC+lL8fGvp5Cc4Xjj3cG/dNPdGwpEZ+8DABNpOejAIGgz1wSOjBZPiSDETT/Kpx1FU
mrWoWyVa7C6OhaIUDX5TSRHFjWzyM+YGi2+0thMjxgmjUI+rYzxXp3IRbk0Im11R5CChI/KwCqSc
EbVUpPzpSLkO3CQ38GH/4jyr/+HEB1BLAwQUAAIACABTKu9IYkJd8dYAAAB6JgAAOgAcAHN0b3Jh
Z2UvaW5kZXhlZGRiL21vZGVybi9pZGJvYmplY3RzdG9yZS1jb3VudC0xLXN0ZGVyci50eHRVVAkA
A53UiFed1IhXdXgLAAEE9QEAAAQUAAAA7c+xasMwFIXhPU+hMVkiKCEEbW3iISSl1IZmLLJ0B4Nt
Gfkq9PGbhkx5gE7/eOGcw/2quv6onXlVlWFSo8n4ePVjEONNSMPUi0o0oeQ55YX9Sn0ZZLYHr95W
l8ZepD11aptUcpC/a5+y2PcUS3+LdWOUH4mxtbPkq2TbfJ47lePhbX8fXIdpWr7sdivjTJtSbx4D
zt0izb3i3FPHuceDy9KNut1862pRgQABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBA
gAABAgSI/0P8AlBLAwQUAAIACABUKu9Iirgoj6sAAACyBwAAOwAcAHN0b3JhZ2UvaW5kZXhlZGRi
L21vZGVybi9pZGJvYmplY3RzdG9yZS1kZWxldGUtMS1zdGRlcnIudHh0VVQJAAOf1IhXn9SIV3V4
CwABBPUBAAAEFAAAAO3PsQrCMBAG4L1PcaNdDIhIyaZtB1ERG7CjpMkNhbYX0kvx8a2lk48gGQ/+
/+e+sqrulYQjM/aOgQm0nfRgEDQY6l2HjBZM8CP5RDypCz2OotCsRVkrUWNzaVkoCt7g98rJo7iR
Dd0caweLb7S2ESP6Cb1Qj2vLeC5O+TK4Nc5tdlmWgoSGqIN1QMo5opaKlD8dKdcHN6Ed+LB/cZqU
ERERERERERER/474AFBLAwQUAAIACABVKu9I/P1/XqMAAAAUAwAAKwAcAHN0b3JhZ2UvaW5kZXhl
ZGRiL21vZGVybi9pbmRleC0xLXN0ZGVyci50eHRVVAkAA6LUiFei1IhXdXgLAAEE9QEAAAQUAAAA
7Y+xCsIwFEX3fsUb7WJAREo2bTuIitiCHSVN3hBI+0L6Uvx8a+nk7Njxwr2He8qqulcSjszYeQYm
UGZUvUZQoKnzDhkN6BgGCol4kosdDqJQrETZ1KLB9mJZ1BSDxm/KKaC4kYluqtne4BuNacWAYcQg
6sfVMp6LUz4Dt9r7zS7LUpDQEjlYAFJOlXqeSPmzkXI5uIm258P+xWlSrhKrxP8kPlBLAwQUAAIA
CABWKu9IHRlKJK4AAAA8CQAAKwAcAHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pbmRleC0yLXN0
ZGVyci50eHRVVAkAA6PUiFej1IhXdXgLAAEE9QEAAAQUAAAA7c+xCsIwEAbgvU9xo10MiEjJpm0H
UREbsKOkyQ2FthfSS/HxraWTD+CU8eD/f+4rq+peSTgyY+8YmEDbSQ8GQYOh3nXIaMEEP5JPxJO6
0OMoCs1alLUSNTaXloWi4A1+r5w8ihvZ0M2xdrD4RmsbMaKf0Av1uLaM5+KUL4Nb49xml2UpSGiI
OlgHpJwjaqlI+dORcn1wE9qBD/sXp0kZERERERERERERERHxH8QHUEsDBBQAAgAIAFYq70h7uZhS
pgAAAJ4EAAArABwAc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2luZGV4LTMtc3RkZXJyLnR4dFVU
CQADpNSIV6TUiFd1eAsAAQT1AQAABBQAAADtj7EKwjAURfd+xRvtYkBESjZtO4iK2IAdJU3eEEj7
SvpS/Hxr6eQnSMcL9x7uKavqXkk4MmPbMzCBtqPuDIIGQ23vkdGCiWGgkIgn+djiIArNWpS1EjU2
F8dCUQwGvymngOJGNvqp5jqLb7S2EQOGEYNQj6tjPBenfAZuTd9vdlmWgoSGyMMCkHKqqHki5c9G
yuXgJrqOD/sXp0m5SqwSq8T/SXwAUEsDBBQAAgAIAFYq70i8cWzVmQAAAMUAAAArABwAc3RvcmFn
ZS9pbmRleGVkZGIvbW9kZXJuL2luZGV4LTQtc3RkZXJyLnR4dFVUCQADpNSIV6TUiFd1eAsAAQT1
AQAABBQAAABdjrEKwjAURfd+xRvbxYCIlGzadhAVsQE7Spq8IZD2hfSl+PnW0snxwjmH27Tto5Vw
YsYhMDCBtrMeDYIGQ0PwyGjBpDhRzMSLfBpwErVmLZpOiQ77q2OhKEWDv1VRRHEnm/yCudHiB63t
xYRxxijU8+YYL/W5WoM7E0K+L8sCJPREHraAlAuiVkXKP0fK7WCe3MjHw5uL7AtQSwMEFAACAAgA
VyrvSASK6QOfAAAAigEAADIAHABzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaW5kZXgtY3Vyc29y
LTEtc3RkZXJyLnR4dFVUCQADptSIV6bUiFd1eAsAAQT1AQAABBQAAADdj7EKwjAURfd+xRvtYkBE
SjZtO4iK2IAdJU3eEEj7QvpS/Hxr6eQnOF4493Bv3TT3RsKRGfvAwATaTnowCBoM9cEjowWT4kgx
E0/yqcdRVJq1qFslWuwujoWiFA1+U0kRxY1s8jPmBotvtLYTI8YJo1CPq2M8V6dyEW5NCJtdUeQg
oSPysAqknBG1VKT86Ui5DtwkN/Bh/+I8q//hxAdQSwMEFAACAAgAWCrvSLxxbNWZAAAAxQAAADIA
HABzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaW5kZXgtY3Vyc29yLTItc3RkZXJyLnR4dFVUCQAD
qNSIV6jUiFd1eAsAAQT1AQAABBQAAABdjrEKwjAURfd+xRvbxYCIlGzadhAVsQE7Spq8IZD2hfSl
+PnW0snxwjmH27Tto5VwYsYhMDCBtrMeDYIGQ0PwyGjBpDhRzMSLfBpwErVmLZpOiQ77q2OhKEWD
v1VRRHEnm/yCudHiB63txYRxxijU8+YYL/W5WoM7E0K+L8sCJPREHraAlAuiVkXKP0fK7WCe3MjH
w5uL7AtQSwMEFAACAAgAWSrvSPz9f16jAAAAFAMAADIAHABzdG9yYWdlL2luZGV4ZWRkYi9tb2Rl
cm4vaW5kZXgtY3Vyc29yLTMtc3RkZXJyLnR4dFVUCQADqtSIV6rUiFd1eAsAAQT1AQAABBQAAADt
j7EKwjAURfd+xRvtYkBESjZtO4iK2IIdJU3eEEj7QvpS/Hxr6eTs2PHCvYd7yqq6VxKOzNh5BiZQ
ZlS9RlCgqfMOGQ3oGAYKiXiSix0OolCsRNnUosH2YlnUFIPGb8opoLiRiW6q2d7gG41pxYBhxCDq
x9UynotTPgO32vvNLstSkNASOVgAUk6Vep5I+bORcjm4ibbnw/7FaVKuEqvE/yQ+UEsDBBQAAgAI
AFkq70i8cWzVmQAAAMUAAAA5ABwAc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2luZGV4LWdldC1j
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
DQAA4asFADcAHABzdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1jdXJzb3ItcHJpdmF0ZS1z
dGRlcnIudHh0VVQJAAOv1IhXr9SIV3V4CwABBPUBAAAEFAAAAO3bS1PbaBoG0D0rfoKWUDWp8g0M
7DqmM0VNTZMK6dkL6yPxxEiMbUJnM7995Au2jC6GhFRPzZxFLxpLsiwdPX6+15WL87dXYfI1TM7O
kngWX8fTMMjSNAxnoywdjLNpSKI3UbvX6nd7/f5pt9NrnbT2fk9H/7oPF+dvz0v7nJ0Nn+z/bpLd
DsajkM7yI+0/PVq3s3dwG4/Sw6h00J2HOigcqdvtHx/uVRxjlH7NvoTLuzCJ5wf6JU0+TuJ0Gi8O
+3F0GyYHh3sXm8uQ3YX0/O2HkB9nOhvE6TCMxyGpOnL1lvMza/hIWcOJvBtN8ncqnMtw/qlLB6k6
l3+X/nZwGB20/ujf3NwchZP+cfu4dZifWL7Bu/wds8m3/IaHcZiFx+0X552/vLmVH7M1jcotG16t
OMMdJ9jvJosTrL9yn+M0GYfzxZvt3mz1/+v7Ps3P6+PnMAlRnP/XPjo5Ou0e9U87UX4Tk1H6ae9l
h3qf3d3l9zpOo/UN/UuUZg/RrOk9dp314H4yyXGv36lhh3yTm2xyu9pjeVXW+y0NJteVey5v19t4
+CU/paucQtPVTEbJeXn7n0P0pv9ItNLg45ms3yPf8LL4CJ6dTVbPYnZ7N98yqdgkS7ePcnU/HIbp
ND+VN9FweTGj/P2m86s4mhazqnvU6s0PuD5UMprexbPh51+/rgOp8Gm6163DrcdtHhd1H24RJYUH
KDrYz69Nr9c/Pum1O72TckI1XOidT1pYXOe6RCtF+is9bCetk5/+sBXf46c9bHNRm0dt68p283te
99zNL27xKZrv2e7dJMnp0el8t6Zn8PLJvq9zS7r9zp95uY6v242fezqLJ7N/LJ/FQX4Sn0LhC3NH
B5mEeBbq9i33kNZRu1N7467Dp1Fa2P1i+1b8Pdzmz3e+R/Gv5b2+u5v8SJd4FSbtTqu1ZlKfzpfF
WHpeNm9Op/A/+RkM5rcvf7fosZPm9+thNPu8TuZiLOfxGG2KYrQJzbm10/zc43Da77XayfVNu3e4
93xiy++iwh8Wp/nEUeVXzO93nyZxEn4LIQnJc75aer1WnmjhoeLv3/GVUyjQi+fg8vqf+cVZhs6b
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
3jRMbhkjHAiuUKmkr51q4cvgYuM/VGE4JxpSyyGeN0OQcjWZorNCL2kKVa2O9poxuITfcp5vj8FS
sY0hN7IJK2mmApmxuJtxcaLv5nihMTsQewGOBGkUsFSoPnl2HPD9u3kAIsWCEYwdczUvpaLcuHw5
W1w9YJfU0JAyHL0+hRnGlJVOFPWE/q9M6Mmt+dz0FvNihucqTOUZT++07WqOrjB3/ap8Y9vJe5Bu
vSu996701tV7Ysc6c/+5ZKW6uTHi1OZW70r1rlTvSvWudMmuVL6dvPIX95ObzR/+rej/2JXeZjW6
aMNJEjpfI6w9kRoRkSa6PPwvJfHcUNLPV+RlBru/hUZ7djoK61je2evt3TUrH/w1dL8BUEsDBBQA
AgAIAGQq70irwHwomwcAAKmJAAAzABwAc3RvcmFnZS9pbmRleGVkZGIvb3BlbmN1cnNvci1rZXkt
cHJpdmF0ZS1zdGRlcnIudHh0VVQJAAO81IhXvNSIV3V4CwABBPUBAAAEFAAAAO1dzXPaOBS/55Q/
wUeYaWdsYzDOjZJml+lsyTTp3o0tEm+MzMqGNJf92yvb2Ei2PgwhTbJ9h8wE6T3pSfq9Dz0kMbv8
NE0wRkEWJfg2uUFki8jFRehn/sJP0b5uGicpCs9mp6FP1ghffvqG/t2gNJv6OEBxfAx13X8UXkU4
Su//9HEYR/jub0TSXIp7H9+hW+Lj1C8aNT4a52ffcUSbouyXLbF1TeX89M9yTHfguK43sAfeaHzW
W/kR7huthnXNnQk4IrxNHtB8jYifSzTBISP/bbRCpNfnxi6Ze15Mxxyb6oEHDf4rkqymcYRw1h60
Yw5sxaA1TfXY6Ru4oz5Mw8mmQaIrgpbFlIWCnLo9+RQlioFdRYTX8iCfxVYjIln+a5X1+kbP/OEu
l8shGrsja2T237JglOCK9piQJ4psFKMMVfTVAgnNsJBSUSuQUCOgOwg1M3efGzp0WXSmJ9t9rgGe
Urlu7xFBhk//rOF46A2GrmcbFF0hNZ9nhzV1nazXFIQ+NuoF/WDg5NHIVH3opJ5uCKFaXPekYKAk
y4SsdhzlrNR8pXKEC7HnKGg/+cEDFemGQgGp3cxlm/5lILp0K4gKMVhJUvdBCeesbbi4IDsjkazW
OWUoIEkw38rNJghQmlJRPhpBOZnGtnSlRpRyDnloOnmDdVNhlK79LLj/vK0tLzOawcLsc+qW2zFl
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
iCGGGGKIIYYYYoghhhhiiCGGGGKIIYYYYoghhhhiiCGGGGKIIYYYYoghhhhiiCGGGGKIIYYYYogh
hhhiiCGGGGKIIYYYYoghhhhiiCGGGGKIIYYYYoghhhhiiCGGGGKIIYYYYoghhhhiiCGGGGKIIYYY
YoghhhhiiCGGGGKIIYYYYoghhhhiiCGGGGKIIYYYYoghhhhiiCGGGGKIIYYYYoghhhhiiCGGGGKI
IYYYYoghhhhiiCGGGGKIIYYYYoghhhhiiCGGGGKIIYYYYoghhhhiiCGGGGKIIYYYYoghhhhiiCGG
GGKIIYYYYoghhhhiiCGGGGKIIYYYYoghhhhiiCGGGGKIIYYYYoghhhhiiCGGGGKIIYYYYoghhhhi
iCGGGGKIIYYYYoghhhhiiCGGGGKIIYYYYoghhhhiiCGGGGKIIYYYYoghhhhiiCGGGGKIIYYYYogh
hhhiiCGGGGKIIYYYYoghhhhiiCGGGGKIIYYYYoghhhhiiCGGGGKIIYYYYoghhhhiiCGGGGKIIYYY
YoghhhhiiCGGGGKIIYYYYoghhhhiiCGGGGKIIYYYYoghhhhiiCGGGGKIIYYYYoghhhhiiCGGGGKI
IYYYYoghhhhiiCGGGGKIIYYYYoghhhhiiCGGGGL44gzTpKg3SyZxsg/iNjJLMXO1fjQzgdVzlA2q
B9nfRlaAiXcjMmKW1y8vKwoab8uQfRuMZ8G7OPl78P0gZv2nD81h1Pq5mdjF1i+f0dUdT4LpX4Pp
h2AyG89ZDWdJMgf2Nfie3vRLsVw3NoyjaRilgzaLFv1rHE3jZVNFiOF0rjeouK9n2c5VuY93of3y
gvqZzMdWI9mJq6d+kwuu0B6WBJWAX4U11vPwEs5vnjtAh2m/qYWxG8A888wzzzzzzDPPPPPMM888
88wzzzzzzDPPPPPMM88888wzzzzzzDPPPPPMM88888wzzzzzzDPPPPPMM88888wzzzzzzDPPPPPM
M88888wzzzzzzDPPPPPMM88888wzzzzzzDPPPPPMM88888wzzzzzzDPPPPPMM88888wzzzzzzDPP
PPPMM88888wzzzzzzDPPPPPMM88888wzzzzzzDPPPPPMM88888wzzzzzzDPPPPPMM88888wzzzzz
zDPPPPPMM88888wzzzzzzDPPPPPMM88888wzzzzzzDPPPPPMM88888wzzzzzzDPPPPPMM88888wz
zzzzzDPPPPPMM88888wzzzzzzDPPPPPMM88888wzzzzzzDPPPPPMM88888wzzzzzzDPPPPPMM888
88wzzzzzzDPPPPPMM88888wzzzzzzDPPPPPMM88888wzzzzzzDPPPPPMM88888wzzzzzzDPPPPPM
/wnM54ZwFIyD6YZ9odPJsurrRdSHYBgno1e0bEaZbu1bNaOdWyi9Xk8iF1rjLRdWv2JyA1uxYFb1
DaLPQdkiOKw424Jy5cqVK1euXLly5cqVK1euXLly5cqVK1euXPmfp/yQLwGvn/eFz2FfAe5+Ubb7
DeB1xTdWL/LFnu+h/4jvoX3RfKjH7chMt/0rdDf/97yyQkja5uB2HE6+7CO5CfyUb7C0J2lTV6NR
uizmf35LZzhTVOxDvKVR+BL9YTbtJ2ldVV+fv8+US5QoUaJEiRIlSpQoUaJEiRIlSpQoUaJEiRIl
SpQoUaJEiRIlSpQoUaJEiRIlSpQoUeI8MX4Iooofha9S+9URzzowMIzv78Np/ifWj+F43Ftc/7T7
i+ra32kXfia//YV3ecbih+e/NFqdZrfd6XYv2ift8/PzNyW/zA+i9Mos2P2dedk5g+hb/DXor8fi
KhplkhYjc/RCZy1+YLz3/Qx+uDv6NYcW4ppbXXSqJvfLIBqNg/Xfm0GbpIP76UuQBI1B+q91en56
0W6dNJuNFN8ojD5nJRS7Wn9aYgWuuk+FChczvefASK80qeLgyLAmOBtZ0u/UTskRpscknGaj34VR
Cj047DhTedcPGcTsWZPatZc2VtpKfu21uhcnz15Rr8tndY2LoyKD3GzdRNlJf/4I1Au92ttwhdbb
4HMY7RyHqThWVJjkfagHo9Fvv4eTaVqYAX0I8Y/TQTINSo/I9UoeKaUC31bEpM/G2zgphuYaukvp
9KM04WF+IO+glXb10+Z+zynEcLRueqe9V7er7/Q7c0isht3CwqeaE2LrmMJ872aWHdt6zlN2/QK2
7zmbfVErXKuf1E1Y9TxsQ+q3hs3r4B/1/4cWWkj3geoDutvCQxbZ+6cN32HnJd9XvVBnyl7haVwM
McQQQwwxxBBDDDHEEEMMMcQQQwwxxBBDDDHEEEMMMcQQQwwxxBBDDDHEEEMMMcQQQwwxxBBDDDHE
EEMMMcQQQwwxxBBDDDHEEEMMMcQQQwwxxBBDDDHEEEMMMcQQQwwxxBBDDDHEEEMMMcQQQwwxxBBD
DDHEEEMMMcQQQwwxxBBDDDHEEEMMMcQQQwwxxBBDDDHEEEMMMcQQQwwxxBBDDDHEEEMMMcQQQwwx
xBBDDDHEEEMMMcQQQwwxxBBDDDHEEEMMMcQQQwwxxBBDDDHEEEMMMcQQQwwxxBBDDDHEEEMMMcQQ
QwwxxBBDDDHEEEMMMcQQQwwxxBBDDDHEEEMMMcQQQwwxxBBDDDHEEEMMMcQQQwwxxBBDDDHEEEMM
McQQQwwxxBBDDDHEEEMMMcQQQwwxxBBDDDHEEEMMMcQQQwwxxBBDDDHEEEMMMcQQQwwxxBBDDDHE
EEMMMcQQQwwxxBBDDDHEEEMMMcQQQwwxxBBDDDHEEEMMMcQQQwwxxBBDDDHEEEMMMcQQQwwxxBBD
DDHEEEMMMcQQQwwxxBBDDDHEEEMMMcQQQwwxxBBDDDHEEEMMMcQQQwwxxBBDDDHEEEMMMcQQQwwx
xBBDDDHEEEMMMcQQQwwxxBBDDDHEEEMMMcQQQwwxxBBDDDHEEEMMMcQQQwwxxBBDDDHEEEMMMcQQ
QwwxxBBDDDHEEEMMMcQQQwwxxBBDDDHEEEMMMcQQQwwxxBBDDDHEEEMMMcQQQwwxxBBDDDHEEEMM
McQQQwwxxBBDDDHEEEMMMcQQQwwxxBBDDDHEEEMMMcQQQwwxxBBDDDHEEEMMMcQQQwwxxDCfFPVm
ySRO9kHcRmYpZq7Wj2YmsHqOskH1IPvbyAow8W5ERszy+uVlRUHjbRmyb4PxLHgXJ38Pvh/ErP/0
oTmMWj83E7vY+uUzurrjSTD9azD9EExm4zmr4SxJ5sC+Bt/Tm34pluvGhnE0DaN00GbRon+No2m8
bKoIMZzO9QYV9/Us27kq9/EutF9eUD+T+dhqJDtx9dRvcsEV2sOSoBLwq7DGeh5ewvnNcwfoMO03
tTB2A5hnnnnmmWeeeeaZZ5555plnnnnmmWeeeeaZZ5555plnnnnmmWeeeeaZZ5555plnnnnmmWee
eeaZZ5555plnnnnmmWeeeeaZZ5555plnnnnmmWeeeeaZZ5555plnnnnmmWeeeeaZZ5555plnnnnm
mWeeeeaZZ5555plnnnnmmWeeeeaZZ5555plnnnnmmWeeeeaZZ5555plnnnnmmWeeeeaZZ5555pln
nnnmmWeeeeaZZ5555plnnnnmmWeeeeaZZ5555plnnnnmmWeeeeaZZ5555plnnnnmmWeeeeaZZ555
5plnnnnmmWeeeeaZZ5555plnnnnmmWeeeeaZZ5555plnnnnmmWeeeeaZZ5555plnnnnmmWeeeeaZ
Z5555plnnnnmmWeeeeaZZ5555plnnnnmmWeeeeaZZ5555plnnnnmmWeeeeaZZ5555plnnnnmmWee
eeaZZ5555plnnnnmmWeeeeaZZ575P4H53BAOx8Gg2NdkWWNvXpgJf0UrZrjTtX2LZlhyK5Vl9TIK
4dX0iqH1C6gw4BVraFgeVzKzhyyL3o/df3ZxFDK3c7FosVRU+WoqC91dUL0aBS+yVmztf8TWbu/+
4zwO4/v7cPomN8qP4XjcW1zPhC57XTZcabvRpue9QTQMxuNglK9yMo0f0rtodZrddqfbvWi3Tron
zTc7u2M8CXaCzron+aD7wffboDePvFkN+m7GSadyXgub0KKiUWFQVr19xh1XVlNe8P9QSwMEFAAC
AAgAairvSIulkKG1FAAAK2oHADIAHABzdG9yYWdlL2luZGV4ZWRkYi9wcmVmZXRjaC1pbnZhbGlk
YXRpb24tc3RkZXJyLnR4dFVUCQADyNSIV8jUiFd1eAsAAQT1AQAABBQAAADt3V9z2liaB+B7X/kj
qHITu6q7Chvb2L5Lk8msq3aHbJLevcZItplgiRUQT27ms68Q2Aj0B+y4ZzI1z0VXN3B+5z0cPRK4
ixeu3v/2OUq/RenlZTKO4ve/fYr+bxZNpt1+PIhGoyjc+z0eZvdcvf/tfX/av+5PorqRwa/B/t7V
ar5wOb6bxHE0mA6TuDtKJvm4o5NWp33S6Vy0j09a561yjVXm8nKwkf+QJvfd0TCKp/OKm7O1j/cO
7vvD+DCoWPiWqQ4KM7XbnbPD8sK+pP140l+urH+dpNP/HU7vklm2DaPRdX/wtaF6PrwwweaG1RyA
g/C6crpxlN4k6f27qln/K7pP0u/Z8N+yJQ3j28/TJK1bwfMO8GLm4rTlLTk4nD+ttfuzGdP+/D+/
DO+j9MMwzaY7aP2tc3Nzcxqdd85OBq3D5dy9679mx2i54jAaRdPoUzRI0rA06SC5vx9Oe/FiA+cP
r9x8SR63dTGqEKyq0w/DZZFti2gMF47mTmXXZm7GtpivuXyT/I3VFA7mC5+rsLCwsLCwsLCwsLCw
sLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCw8D8w/JAOp8VP2n8YxsPJXdT0YfpwGH5s
aL6oSAzjb8nXqPfYBPEuDguhvCXi4LChYNIQzHspGrJ3/TgcRY+3n5YwyZb65S5Ko6Cf/XN0en56
0T46brWCcRSHw/h23srwISuTbdfjBj/O8di3UtVsUT2y4dGKFZfuOjgs9op02mHrMEtufcp5sdfZ
mdPOxfHTzjxvqo/JeByFQT8Ono7iL0GcPATTphrbVt2dpWkUT58qNQSWfULLxGJXnnL5MajrMFoc
rmKvz97n//7P7HQpNRbdRtNe+qdJFhxlJ8/jDFfxTZIVeGwEyyrVxMuFgvyu7FZwMxxFwdv9t0G2
2HA4+dp8Xr4vL7nYkzPv+ioFqw7o37cgPLvp5AjrToPHlTzVyAb2il1Vl5fpsr0quR/PR4YVQ5J4
fZbPs8EgmkyypfwaDBbHM8jqTeYHcjgpNsK1T1sn8wmfpsq2btyfDu7+9O2p263wbNrXrcO1M37e
AVb35PLusMI5HBzsZ3tzctI5Oz85Oj45Pyw1tTVs9NaTPcr3ua5JrdQv+Ern+3nr/A8/34s1/rDz
fS5qdbav7Ww7O+Z1p/58c9fOxyx5dNw/PYtOL7LYD14GGk/h3kbp1zmi7c7xP3O3z66PWk2v8Nme
pdP/WZzK3WwRt8W3JFv6Y9OoP43qsuUe2dbp0XHtcb+ObodxIX61fihe+tamxstmtcZ3FgsZz7yg
rtZZuJGV6c43bf7yslIZPAynd0+X0+K1NLumBavW4WB1pZsf4YvsTVM/uuictI7C65ujk8O93Q/s
4tmutXmu337ckNLrwu/j27QfRn+JojAKd3k9ODlpZZeh6KHi/p/vjeczX7UKba75uVB4f59lDvaD
/XJDcmnky1qWt067tTu5ah31D27pES6Nb+gILo9tbjTvlgI1Z3XVQcj+BJufbb3Pj+fZ1fvgtNU6
bbdOW6dnO/2t1f3RzQgOBssm/cPmK2pWs1t1WGouS92tlKoGFWG8grtFd/ja1j0MR6Nuqe97/zUL
Pr/3vrFDfqcO+Oc2uW9jXRmqo908+HnLLdCunHaX3XiW6aoq6+8NjrK/QV/8It9whlQxKJ0hFYQr
V71fM6aXlv53TBn7zXB+6j2+R/j5Xvo2dqXw8lfxPmD+ZJZ/E767mUbp2vuMxabk7w32f+hFddpw
3KrfrqwNiR7/Hth2sXgauAGlciVZqXdhOP9DK7v5LQqmzZe49Yvz2v8AHM/mcsLy14ss309+LDwu
KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKJguWy67s3SSpHXR3tqI
ms/aL76/4D/mn0Afxre1LYWFPozKz103NhNUJcrNBO3z8/OqZoIozu6ZRa/1tQnF7xfY9elXF9zo
l2iYquLJXpydN/d6NEz3I8/9x1t5dgr9XI0SDT+yOm8H6K99o8cr9bBu+x3WrYWf0wT7r7Ldha9C
+cM2vrkPKlvBY+mrXfvG/0m9PTVX7M/zFuEtzVH5mFLf02bytZr7Hl/DtnXsFF/rSvc1H7anYQ2t
9U9Dms+8p1fUxm8X+bS8bqf5v/d/CRY9QcEkbw1d9KK222etLbPk3yOUTfM1+l4zyXH7uHaSp28i
ap7horNbS+zH5+11sVmwnuPHujcwhceKMApd6ctetGd0m50ctQ6ZZZZZZplllllmmWWWWWaZZZZZ
ZplllllmmWWWWWaZZZZZZplllllmmWWWWWaZZZZZZplllllmmWWWWWaZZZZZZplllllmmWWWWWaZ
ZZZZZplllllmmWWWWWaZZZZZZplllllmmWWWWWaZZZZZZplllllmmWWWWWaZZZZZZplllllmmWWW
WWaZZZZZZplllllmmWWWWWaZZZZZZplllllmmWWWWWaZZZZZZplllllmmWWWWWaZZZZZZplllllm
mWWWWWaZZZZZZplllllmmWWWWWaZZZZZZplllllmmWWWWWaZZZZZZplllllmmWWWWWaZZZZZZpll
lllmmWWWWWaZZZZZZplllllmmWWWWWaZZZZZZplllllmmWWWWWaZZZZZZplllllmmWWWWWaZZZZZ
ZplllllmmWWWWWaZZZZZZplllllmmWWWWWaZZZZZZplllllmmWWWWWaZZZZZZplllllmmWWWWWaZ
ZZZZZplllllmmWWWWWaZZZZZZplllllmmWWWWWaZZZZZZplllllmmWWWWWaZZZZZZplllllmmWWW
WWaZZZZZZplllllmmWWWWWaZZZZZZplllllmmWWWWWaZZZZZZplllllmmWWWWWaZZZZZZplllllm
mWWWWWaZZZZZZplllllmmWWWWWaZZZZZZplllllmmWWWWWaZZZZZZplllllmmWWWWWaZZZZZZpll
lllmmWWWWWaZZZZZZplllllmmWWWWWaZZZZZZplllllmmWWWWWaZZZZZZplllllmmWWWWWaZZZZZ
ZplllllmmWWWWWaZZZZZZplllllmmWWWWWaZZZZZZplllllmmWWWWWaZZZZZZplllllmmWWWWWaZ
ZZZZZplllllmmWWWWWaZZZZZZpll9ikUd2fpJEm3qV2NLLot3Nu8m4WB9ceoOKhZb281sptG2dOO
b4NBfjt4GE7vgkxSkEXT75fBm/03e4uhwXASXA/jcD54lDxEaa7p7f7boB+HwWw8Xt2zE6Te85/8
bph6a3u9yalXfczyey4vJ9H0z9H0UzSZjeZwsk1J54Ty8+bV4D0WGyRxtvWz6MMsztcXHEyTRaky
tezMznxGNc/rRXrXptwGuFS/+oHmI7k+th7JxrhmzFdrg2sugrtWXvG8eunz2g3pVePx3ByAKqqo
oooqqqiiiiqqqKKKKqqooooqqqiiiiqqqKKKKqqooooqqqiiiiqqqKKKKqqooooqqqiiiiqqqKKK
KqqooooqqqiiiiqqqKKKKqqooooqqqiiiiqqqKKKKqqooooqqqiiiiqqqKKKKqqooooqqqiiiiqq
qKKKKqqooooqqqiiiiqqqKKKKqqooooqqqiiiiqqqKKKKqqooooqqqiiiiqqqKKKKqqooooqqqii
iiqqqKKKKqqooooqqqiiiiqqqKKKKqqooooqqqiiiiqqqKKKKqqooooqqqiiiiqqqKKKKqqooooq
qqiiiiqqqKKKKqqooooqqqiiiiqqqKKKKqqooooqqqiiiiqqqKKKKqqooooqqqiiiiqqqKKKKqqo
oooqqqiiiiqqqKKKKqqooooqqqiiiiqqqKKKKqqooooqqqj+21DtXf81W/xyE8NoFE2ftJYWnS6m
fp+P+hQNkjT8ibSHhWVtwx5uPIXK+5tJrA1t8LY2rBn62sbWOF/O149vo+yYpvm/938JkvwwBpP5
oOC01Tptt05bxyd73TTKNjK+neuZ030YTu+CbOogW0L6/TJ4s/9mb6l6OAmuh3E4HzxKHqI0P3Rv
998G/TgMZuPx6p4ta8vXny0uP/SVS2tfnJ80T/J7PJtE4W+j5PrDcLSccqKuuuqqq6666qqrrrrq
qquuuuqqq6666qqrrrrqqquuuuqqq6666qqrrrrqqquuuuqqq6666qqrrrrqqquuuuqqq6666qqr
rrrqqquuuuqqq6666qqrrrrqqquuuuqqq6666qqrrrrqqquuuuqqq6666qr709Xd5ecR3r/sq/B3
+3GEzZ8Q2PxthPc13+X/Kj954Ic1Xv7DGn/M7wk8P+EHPnbVvtqZ6Wp9peWu355PVhqS1exfj4aT
u23gnwZ+WS9YuZKs1LswzE66+c1vUVB8qLyGZPVrJaUfLxnPpr00m6vuZ0s+Fh4XFBQUFBQUFBQU
FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFJwHk3EU13wofBnt1Y94UTvCILm/H07X
P2L9MByNuvn9XzY/Ud34Oe3Sx+RXn/CuTuQfPP81ODppddonnc5F+7h9fn6+V/HJ/CjO7plFm58z
r+piiL8lX6Pe4168i8NCKN+Zg1fq5PiB/d72MfjB5u43NC0kDU81X1RD9q4fh6Po8fbTpk2yzf1y
F6VR0M/+OTo9P71oHx23WkGGb95iUbXv0/7X6C/R36afZnGcHeiNQ7XsC1l2ICXx6HswmY3HSTqd
BEfFD+7/kjdsPGSVR2nUD78Hd/1v2RKK9sqb09yfsSRevwulCXNbWxpgupWhmkaYQfPg5y131aVS
vYZddqPYptJ42mbFKqusn7ZHnYvjF5+MPxft+hnzLpP+tLidV3HxOL98B5qpvdtauIbddXQ7jCt6
c2q6kkoHuqozqVvxglGJZL9mTPbKd52d918am3VusqPbi7PAeN7Mt9PJ8O4POzxbOhiH4WPpjXo/
F+zysSy0gDWo+Dztp9tQ5GNKx3szWdWU9ZLX0Me3V9teRYtvw0r3NR/Up2H1x2E1pPnsfXqz19yx
249vo+wQpvm/a1p222etH+77PW4f107SD8NdZrjonO10Rn583l7v1jr5se69deGxn7Dtl1lmmWWW
WWaZZZZZZplllllmmWWWWWaZZZZZZplllllmmWWWWWaZZZZZZplllllmmWWWWWaZZZZZZplllllm
mWWWWWaZZZZZZplllllmmWWWWWaZZZZZZplllllmmWWWWWaZZZZZZplllllmmWWWWWaZZZZZZpll
lllmmWWWWWaZZZZZZplllllmmWWWWWaZZZZZZplllllmmWWWWWaZZZZZZplllllmmWWWWWaZZZZZ
ZplllllmmWWWWWaZZZZZZplllllmmWWWWWaZZZZZZplllllmmWWWWWaZZZZZZplllllmmWWWWWaZ
ZZZZZplllllmmWWWWWaZZZZZZplllllmmWWWWWaZZZZZZplllllmmWWWWWaZZZZZZplllllmmWWW
WWaZZZZZZplllllmmWWWWWaZZZZZZplllllmmWWWWWaZZZZZZplllllmmWWWWWaZZZZZZplllllm
mWWWWWaZZZZZZplllllmmWWWWWaZZZZZZplllllmmWWWWWaZZZZZZplllllmmWWWWWaZZZZZZpll
lllmmWWWWWaZZZZZZplllllmmWWWWWaZZZZZZplllllmmWWWWWaZZZZZZplllllmmWWWWWaZZZZZ
ZplllllmmWWWWWaZZZZZZplllllmmWWWWWaZZZZZZplllllmmWWWWWaZZZZZZplllllmmWWWWWaZ
ZZZZZplllllmmWWWWWaZZZZZZplllllmmWWWWWaZZZZZZplllllmmWWWWWaZZZZZZplllllmmWWW
WWaZZZZZZplllllmmWWWWWaZZZZZZplllllmmWWWWWaZZZZZZplllllmmWWWWWaZZZZZZplllllm
mWWWWWaZZZZZZplllllmmWWWWWaZZZZZZplllllmmWWW2X99s1ko7s7SSZJuU7saWXRbuLd5NwsD
649RcVCz3t5qZDeNsqcd3waD/HbwMJzeBZmkIIum3y+DN/tv9hZDg+EkuB7G4XzwKHmI0lzT2/23
QT8Og9l4vLpnJ0i95z/53TD11vZ6k1Ov+pjl91xeTqLpn6Ppp2gyG83hZJuSzgnl582rwXssNkji
bOtn0YdZnK8vOJgmi1JlatmZnfmMap7Xi/SuTbkNcKl+9QPNR3J9bD2SjXHNmK/WBtdcBHetvOJ5
9dLntRvSq8bjuTkAVVRRRRVVVFFFFVVUUUUVVVRRRRVVVFFFFVVUUUUVVVRRRRVVVFFFFVVUUUUV
VVRRRRVVVFFFFVVUUUUVVVRRRRVVVFFFFVVUUUUVVVRRRRVVVFFFFVVUUUUVVVRRRRVVVFFFFVVU
UUUVVVRRRRVVVFFFFVVUUUUVVVRRRRVVVFFFFVVUUUUVVVRRRRVVVFFFFVVUUUUVVVRRRRVVVFFF
FVVUUUUVVVRRRRVVVFFFFVVUUUUVVVRRRRVVVFFFFVVUUUUVVVRRRRVVVFFFFVVUUUUVVVRRRRVV
VFFFFVVUUUUVVVRRRRVVVFFFFVVUUUUVVVRRRRVVVFFFFVVUUUUVVVRRRRVVVFFFFVVUUUUVVVRR
RRVVVFFFFVVUUUUVVVRRRRVVVFFFFVVUUUUVVVRRRRVVVFFFFVVUUUUVVVRRRRVVVFH9t6Hau/5r
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
7ddxLx7TBLMtDpq9fuIewvY+l2BuAw8LszSjr/myLzqgT65hX5PGLJFl0bKO3Du9Hy/mGBHWKpMa
NZcJl8EwacD0czC8z59C6u7ldHOrKu9ldL/LP6bn/0O65EKNpEmvwA85kFC/LhcSzGXtXaNzG3zp
9f8V/JWphv2c9xSz1bHkYowujK1lg9HSwW1nGG5w2L9tDm/Dkj7u9LpBYZURT2J48uS3n14PZ55o
SF/U3betGwq5F+heYBRu6LopXfPcTn1c5ibfrM0B4G25rwu4hd2Nxt9Xwt9RGHM0oLzu3QWfu8N+
Oxj8pz28+n0EkZFCKJmSKZmSKZmSKZmSKZmSi5FSHuQWIepUx672cxbEPnoomZIpmZIpmZIpmZIp
mZIpmZIpmZIp+cUoOQdiiwlaL9D3xU7dTvfmyxT9Eyl5uwuS2Zmd2Zmd2Zmd2Zmd2Zmd2T26nEHb
OeeJP25sesvf6yGyLbJNyZRMyZRMyZRMyZRMyZRMySLb5n9TMiVTMiVTMiVTMiVTMiVTMiVTsneJ
LVs4VdNrTNjOaGtKpmRKpmRKpmRKpmRKpmRKpmRKpuTt/VhUfoObcU3JlEzJlEzJlEzJlEzJlEzJ
lEzJL2PG9eax5MebcZ37DWRrcZySKZmSKZmSKZmSKZmSKZmSKZmSzbg245qSKZmSKZmSKZmSKZmS
KZmSKZmSxZJf0tu7xJIpmZIpmZIpmZIpmZIpmZIpmZIpmZIpmZIpmZIpmZIpmZIpmZIpmZIpmZLN
uDbjmpIpmZIpmZIpmZIpmZIpmZIpmZK949o7rimZkimZkimZkimZkimZkimZkilZLFksmZIpmZIp
mZIpmZIpmZIpmZIpmZLFksWSKZmSKZmSKZmSKZmSKZmSKZmSKVksWSyZkimZkimZkimZkimZkimZ
kimZkil5XSV7xzUlUzIlUzIlUzIlUzIlUzIlUzIlU7JYMiVTMiVTMiVTMiVTMiVTMiVTMiU//XPJ
+TW9hoVTbb2BgD2XTMmUTMmUTMmUTMmUTMmUTMmU/DaUnAevRcSdUx2bydoZo8LFxJvNuKZkSqZk
SqZkSqZkSqZkSqZkSqZkSqZkSqZkSqZkSqZkSqZkSqZkSqZkSn4dSs7t3U2ndi/QNweiX5I3X6bo
n0jJ212QzM7szM7szM7szM7szM7szO5dYt4l5ilpkW1KpmRKpmRKpmRKpmRKpmRKpmTvEqNkSqZk
SqZkSqZkSqZkSqZkSqZkSn6eWLKnpCmZkimZkimZkimZkimZkimZkilZLFksmZIpmZIpmZIpmZIp
mZIpmZIpmZLFkj2XTMmUTMmUTMmUTMmUTMmUTMmUTMmUvNUzrr1x2xu3vXGb2Zmd2Zmd2Zmd2Zmd
2Zmd2ZldZFtkW2SbkimZkimZkimZkimZkimZkj0lvZaFN3jFV77QOSVTMiVTMiVTMiVTMiVTMiVT
MiVT8oZKXjsKnNPWlEzJlEzJlEzJlEzJlEzJlEzJlEzJryuWbMY1JVMyJVMyJVMyJVMyJVMyJVMy
JT+LkvPgtYhnmFP1m8navt7s/VzbiHFKpmRKpmRKpmRKpmRKpmRKpmRKfptKFksWS6ZkSqZkSqZk
SqZkSqZkSjbj2juuzbimZEqmZEqmZEqmZEqmZEqmZEoWSxZL9vVmX2/29WZmZ3ZmZ3ZmZ3ZmZ3Zm
Z3Zmf9Nmz27xdV2fMpN7Dd4/utlFtkW2KZmSKZmSKZmSKZmSKZmSKdn8b/O/KZmSKZmSKZmSKZmS
KZmSKZmSKZmSMyvZu8QomZIpmZIpmZIpmZIpmZIpmZIp+bXMuKZkSqZkSqZkSqZkSqZkSqZkSqZk
SqZk36WiZEqmZEqmZEqmZEqmZEqmZEqmZEqmZEqmZEqmZEqmZEqmZEqmZEqmZEp+W88l5/BtzueX
N3319KLBN3gz19IVxdu7KJmSKZmSKZmSKZmSKZmSKZmSKdnbu8SSKZmSKZmSKZmSKZmSKZmSKZmS
KfmplSyWTMmUTMmUTMmUTMmUTMmUTMmUTMlmXFMyJVMyJVMyJVMyJVMyJVMyJVMyJYslZ59xXeRs
6k2mUVMyJVMyJVMyJVMyJVMyJVMyJVMyJVMyJVMyJVMyJVMyJVMyJVMyJVMyJVOyGddmXFMyJVMy
JVMyJVMyJVMyJVMyJVOyWLJYMiVTMiVTMiVTMiVTMiVTMiVT8ptSch7kFiHqVP1m8rMvQVEyJVMy
JVMyJVMyJVMyJVMyJVOyGddmXFMyJVMyJVMyJVMyJVMyJVMyJVOyGddmXFMyJVMyJVMyJVMyJVMy
JVMyJVPym44lUzIlUzIlUzIlUzIlUzIlUzIlUzIliyVTMiVTMiVTMiVTMiVTMiVTMiVTMiUXouQn
iwmv59QcBi2+LLdZnMWE2J/2aeonkucLwzglUzIlUzIlUzIlUzIlUzIliyVv2du7Nnj19HN5UyxZ
LJmSKZmSKZmSKZmSKZmSKZmS36iS154rndPWlEzJlEzJlEzJlEzJlEzJlEzJlEzJYsm+BEXJlEzJ
lEzJlEzJlEzJlEzJlEzJlEzJlEzJlEzJlEzJlEzJlEzJlEzJlEzJlEzJlEzJlEzJlEzJlEzJlEzJ
lEzJvgTlS1CUTMmUTMmUTMmUTMmUTMmUTMmU/LZiyZRMyZRMyZRMyZRMyZRMyZRMyZRMyWLJz6nk
HPTd4GXalEzJlEzJlEzJlEzJlEzJlEzJlPwkSt5Yu+tm4eN+CSofSAsIVnsumZIpmZIpmZIpmZIp
mZIpmZIpWSzZ27u8vYuSKZmSKZmSKZmSKZmSKZmSKZmSKZmSKZmSKZmSKZmSKZmSKZmSKZmSKXmu
T8mM1yKeYU51bCZrZ3wPVzHPLnsumZIpmZIpmZIpmZIpmZIpmZIpmZIpmZIpmZIpmZIpmZIpmZIp
mZIpmZLNuH6tX4Iy45qSKZmSKZmSKZmSt0LJT7GAtEmbtEmbtMWjHyEenTuyvOlD1At8zuH6l2TW
l3lX4Imkvd0F+RRjrOcbZLisu6yvf1Hb/k8mvJjbl+GBdmfKPm50m0GnEzMnazDs3cQ6efsXPGTs
/a8PNbZSrVfL82mand4gWEh0UK/OJ7pu/HUeHI9Snt73fItrVGuJFXqpeY039Kqy3AILLLDgeRa8
zctcUQv+D1BLAwQUAAIACABuKu9IQmtuxSYOAAA9ZwQALQAcAHN0b3JhZ2UvaW5kZXhlZGRiL3N0
cnVjdHVyZWQtY2xvbmUtc3RkZXJyLnR4dFVUCQADz9SIV8/UiFd1eAsAAQT1AQAABBQAAADt3U1z
2zYaAOB7Tv4JnF5qzyQz+rJl+5Y4TdczO+tsk+5dlmBHG5nySnLSXPa3L/RNWSQlrZ3UTZ5DpxMS
BEjgBYiHIOXz16/ehcGnMDg97d+G9PWr38J/7sJwdNZK26HXC51nv6fduOX89avXrVHrsjUMRSmT
F8nes/Nlfp1Z+rN+mob2qNtPz3r94SRdtVFp1hvN5km91qgcV9bLWB5zetq+d/ybQf/mrNcN6Whc
4v3c6rVn+zetbnqQ5Jz4hqz2MznV682jg7yL76af+h/DxW0YtMYZvUw77wetdNiaZPu+exMG+wfZ
aniUai2+pH7JibzpDmJJxcd+aKWdXpj/e3FJw1jk+w9hEJJW/K96eHx4Uq/WKpUknl+nm16Pr+5N
LKY/+BJbOfTCaJHHPAaW7fe+v4iH3JQle3POeG3T/kGyX/mjeXV1dRiOm816p3JQWl2zS54U9jg1
c9g8qS1qZres3vZvb2MDt9Jk0YrPk7T/ORmVlbHprM/uBoMY0YuSSg6ISa76g5vZEdNaWRw3DbzO
Ze6R0+Z61Wp/jKf0LoZCePbun3/vjsapsltPT6/D6GLwyzAe2OsOP8xzOE+v+rGA+RgRSyo4fL2g
ZLIp/iu56vZC8vPez0k82U53+LHkSjvdzuv1U87EX3s8IKwdmNeg/90QhEdXzUkQFnWD+ZksyogJ
L7Jd//R0MBsD+je345SdnCT9dDWXd3ftdhgO46m8SNrT9kxiecNxQ3aH2TGyflhpjDNcZBWr7rY1
an/45dNiIMxcTf2ycrDS48fDVNHFTYawTB9O9vdi3TQazaPjRrXWOF4fGUsqemNnD5N6LhpJ124l
j9TfjyvHX72/Z8v4av19HFHL3r5Ss/XY5kVdf1y5K/0xHlmttQ6PwuFJPOyBw0BpF764V/TjtGi9
Wfsza/vosjqu7cJsYp0NRv+aduWzeBLXIXOf3zB1GoTWKBQduz59qhxWa4Xtfhmuu2nm8PPVpvh/
p0oF8XK/tNKZxTQydhxQl+eZ+Ucs5mxcaePbyzIqk8/d0YfFcJodS+OYlixnlclypBu38EmcNLXC
SbNRqXYur6qNg2fbN+z0ajMbJqeZUyFr94Xfb68HrU74Rwid0NnmftBoVOIwFD7nbH96E88d71qZ
uf+kL1xc/js21XTcehHvTsnewVo9r6WcVPPyn/MU52kn/JHTTpm9a/sWtbasp5XzbrQrW5zQRToN
/aIOkXsFxTvXWmhDdZQAaz1twWgyHxzXDigYD/Kar9UZR0Vy8W7eQ89fJ4eVymG9clg5PCq/lbwt
Kn/Hykj2261e7zKe60H5WBzLPMtrloIBLTftyqnkJcoGxmPF3SSQt4u4Rcznbd6mYqcpN8XXLNU2
kTVNWhpT0278Isk26jSKGkfHx8+T6f7llmeLG0QcV4f9wTT0YhFJPJM4QU5+2vvp2dl0VxxRL7uT
sSvp9T+HQfIxfJmIJQ6AyV2cDS627BCtO1bn7hG6aMbS2Mwf4FZ3P3I89m9uuqPVYf1zt9c7m2wv
v3k+oMCNsX+/+JUesLZzQ8NNr7HsGdb9iy1z+rwz5B5U1C3KE+92upngzc12m9rYKYLzSlmd5Vab
J7WHPNkr6hV5YbDWN3JCOPes9wrSXAxeXvYHG4L9qju+Fcxnu09vEnevVjITuZwZ7fhiZk83Xl6N
wmBlxjytlMksd+9B08NRSbvlT7xXkoS5bDcNFouE9wIl90xiUS87nfEjg/jPTyEZlQ9xJTPW27tx
5HQ6awfNZPQ2s78gvt9003jafxu3emzGQpBmxr7cay3twHlHrHfg+nG8C+dEZEjjlruwcYjZ/SH+
1pefX+C9Maokq5yLPTk6Lh9fS7J7yLU//Pa51UFPa3AqznHSBeO85vGfgGy4d7/cWPAuj1D+KtW9
nDe8/GoVXz73iGcwL/p826eOf9L9tGDEfjd+wLRhQjJJszbXuH/kY02o57ehTXfJ7O1qbVt5sy2S
lTyYXSQp73mLm2Lp2tRvs3F7MPn/3vNkeh9OhhlJ1utHlQ25hHZ/MF7sHXswP5NavVaYSavT2SaH
k+Z2j0Xe7lbX2Ql6cTi+LZqDZPZlAyPzTHM2/9thhteoTsNvZRZ0HUZFE6Bfw2hagY8T6Nfz7DZF
+nW23PWN5fW/TFfcqJk05dG+rIHiJZyVGCsL+Eajul2k/brrpW4Xa8XNmd2ZG23D8d7hXW8UMxwN
7tqju9jiZ71+Gh4tKLEjhx3f/PnQ98OUbzRVf6zHY09r/pST1aj1Mfwj/DH67S5NY0Pfa6rZqDgb
7/pp70syvLu97Q9Gw6Sa7SzPJ495P8eSe4PQ6nxJPrRib6p6PPj9Ph6k2QdrdpcnrDu+PPDEn8Yy
76M9QybiH13E00x+T++GofOq17980+3NshxCNERDNERDNERDNERDNET/wEvC39crTRAN0RAN0RAN
0RAN0RAN0RAN0RAN0RAN0RAN0RAN0RAN0RAN0RAN0RAN0RAN0RAN0RAN0RAN0RAN0RAN0RAN0RAN
0Q9R2i6ufYzvpwtgvCPFIRqiIRqiIRqiIRqiIRqiIRqiIRqi/bCYHxaDaIiGaIiGaIiGaIiGaIiG
aIiGaCvRVqIhGqIhGqIhGqIhGqIhGqIhGqIhGqIhGqIhGqIhGqIhGqIhGqIhGqIhGqK9zu11boiG
aIiGaIiGaIiGaIiGaIiGaIiGaL/ODdEQDdEQDdEQDdEQDdEQDdEQDdEQDdEQDdEQDdEQDdEQDdEQ
DdEQDdEQDdFe54ZoiIZoiIZoiIZoiIZoiIZoiIZoiLYSbSUaoiEaoiEaoiEaoiEaoiEaoiEaoiEa
oiEaoiEaoiEaoiEaoiEaoiEaoiEaor3ODdEQDdEQDdEQDdEQDdEQDdEQDdEQbSUaoiEaoiEaoiEa
oiEaoiEaoiEaoiHaSjREQzREQzREQzREQzREQzREQzREQzREQzREQzREQzREQzREQzREQzREQzRE
fztE72LgxwB3AYx35DVEQzREQzREQzREQzREQzREQzREQ7Rvon0TDdEQDdEQDdEQDdEQDdEQDdEQ
DdFe5/Y6N0RDNERDNERDNERDNERDNERDNERDtJVoiIZoiIZoiIZoiIZoiIZoiIZoiPZNtG+iIRqi
IRqiIRqiIRqiIRqiIRqiIRqirURDNERDNERDNERDNERDNERDNERDNERbiYZoiIZoiIZoiIZoiIZo
iIZoiIZoiIZoiIZoiIZoiIZoiIZoiIZoiIZoiIZov87t17khGqIhGqIhGqIhGqIhGqIhGqIhGqIh
GqIhGqIhGqIhGqIhGqIhGqIhGqIhGqIhGqIhGqIhGqIhGqIhGqIhGqIh2jfRvomGaIiGaIiGaIiG
aIiGaIiGaIiGaIj2J64gGqIhGqIhGqIhGqIhGqIhGqIhGqK9zg3REA3REA3REA3REA3REA3REA3R
EA3REA3REA3REA3REA3REA3REA3REA3Rvon2TTREQzREQzREQzREQzREQzREQzREQzREQzREQzRE
QzREQzREQzREQzREQ7TXub3ODdEQDdEQDdEQDdEQDdEQDdEQDdEQ7de5IRqiIRqiIRqiIRqiIRqi
IRqiIRqirURDNERDNERDNERDNERDNERDNERDNET7JvoJfRP99Dj61wT/N0L0025IpEd6pEd6pEd6
pEd6pEd6pEd6L5dbF7cubl0coiEaoiEaoiEaoiEaoiEaoiEaoiEaoiEaoiEaoiEaoiEaoiEaoiHa
F9q+0IZoiIZoiIZoiIZoiIZoiIZoiIZoX2j7q9UQDdEQDdEQDdEQDdEQDdEQDdEQbSXaSjREQzRE
QzREQzREQzREQzREQzREQ7RvoiEaoiEaoiEaoiEaoiEaoiEaoiEaoiEaoiEaoiEaoiEaoiEaoiEa
oiEaoiHaN9EQDdEQDdEQDdEQDdEQDdEQDdEQDdFWoq1EQzREQzREQzREQzREQzREQzREQ7QfFvPD
YhAN0RAN0RAN0RAN0RAN0RAN0RBtJdpKNERDNERDNERDNERDNERDNERDNERDNERDNERDNERDNERD
NERDNERDNERDNERDNERDNERDNERDNERDNERDNERDNERDtG+iIRqiIRqiIRqiIRqiIRqiIRqiIRqi
/Ykrf+IKoiEaoiEaoiEaoiEaoiEaoiEaor3O7XVuiIZoiIZoiIZoiIZoiIZoiIZoiPY6t9e5IRqi
IRqiIRqiIRqiIRqiIRqiIRqirURDNERDNERDNERDNERDNERDNERDtG+iv9Y30VaiIRqiIRqiIRqi
IRqiIRqiIRqiIdrr3F7nhmiIhmiIhmiIhmiIhmiIhmiIhmiIhmiIhmiIhmiIhmiIhmiIhmiIhmiI
hmiIhmiIhmiIhmiIhmiIhmiIhmiIhmiIhmiIhmiIhmiIhmiIhmiIhmiIhmiIhmi/zg3REA3REA3R
EA3REA3REA3REA3REG0l2ko0REM0REM0REM0REM0REM0REM0RPsTV+vgLoDxjryGaIiGaIiGaIiG
aIiGaIiGaIiGaIj2OrfXuSEaoiEaoiEaoiEaoiEaoiEaoiHa69xe54ZoiIZoiIZoiIZoiIZoiIZo
iIZoiLYSDdEQDdEQDdEQDdEQDdEQDdEQDdEQbSUaoiEaoiEaoiEaoiEaoiEaoiEaoiHaD4tBNERD
NERDNERDNER/NUR/ix0gDuIgDuIg7pVwr4SD+I8B8R3nLH/eTdtN67u9aX1fo+iTHI9W9saJ420u
Cb/HHXmRFZsoXcD7rJW2Q68XOq76x4sOO+x44juWd4fZ1uVtt1pr1iqradq9/jDcS3TUrK0muml9
uQxn45Tns3nY/SNqjcK78tocYZKRceSvv+N/UEsDBBQAAgAIAG4q70htRiS4vgUAADolAAAuABwA
c3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tYWJvcnQtc3RkZXJyLnR4dFVUCQAD0NSIV9DU
iFd1eAsAAQT1AQAABBQAAADVWktzozgQvvvkn6Db2FWTKt5g3xw7qXXV1jo7zuxdBtlhg8ErSDK5
7G+fBgwWIAmI7c3sIZVC9Ev9+LolvFzcrgl9JXQ6jQ4kXNx+I/+8kDiZ49AlQUC8wffQh5Xl4naB
E7zBMRFRohs0HCyvJ8870s+jMCRu4kfhPIjijE41FFs3bHuia4biKE0dJ57p1K3x39NoPw98Eiap
xro0XRuM9tgPx4hjeIuoESNJ121rzNu8H75Gz2R1IBSngmah90hxGONM7KO/J3Q0lpgQSRjvfQoO
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
FAACAAgAIirvSN79uumvAAAA7gAAAEYAHABzdG9yYWdlL3dlYnNxbC9jaGFuZ2UtdmVyc2lvbi1u
by1jcmFzaC1vbi1wcmVmbGlnaHQtZmFpbHVyZS1zdGRlcnIudHh0VVQJAANA1IhXQNSIV3V4CwAB
BPUBAAAEFAAAAGXOQQuCQBAF4Lu/Yk6iUG3gJfYWZZcIQUvPuzqFsM7ItFv079OoU7d5vO/B5GVZ
lBouZKxD8Aw+CAET9NQKDkjeODDB8/Jh2hAGSNZA7MEQoAhLGqmaXRjwrvbGG5U3lWrQHnuvKg7S
4px2LKhO3AU3sSfabpLW3PEzmY9VO45JtslS0GCZHXxHWv+E1iPKlWUoRqQtdTVKf30lM17863x+
DeKpOR+0rrz0dIM4jd5QSwMEFAACAAgAIirvSPlHdNi6AAAAuAMAACgAHABzdG9yYWdlL3dlYnNx
bC9jaGFuZ2UtdmVyc2lvbi1zdGRlcnIudHh0VVQJAANA1IhXQNSIV3V4CwABBPUBAAAEFAAAAO2P
uwrCQBBF+3zFVJKAuoKNbCcaGxEh8VHvJhMJbGbCZFfx701EK/9A0s1lzoV70iw7ZhrOZKxD8Aw+
CAET1FQINkjeODDB8+xuihAaiBdA7MEQoAhLEqkLu9Bgp7bGG5Vec3VFu6+9yjlIgUPasKA6cBlc
jz3Qlj1pTYfvynDMi7aNl6tlAhoss4NPSesvoXWLUrE0xxZpTeUFpa6e8QBPf+l0mAaT/nPaaZ17
qekGkyRKR9vR9i9sX1BLAwQUAAIACAAjKu9I3v266a8AAADuAAAAMgAcAHN0b3JhZ2Uvd2Vic3Fs
L2Nsb3NlLWR1cmluZy1zdHJlc3MtdGVzdC1zdGRlcnIudHh0VVQJAANB1IhXQdSIV3V4CwABBPUB
AAAEFAAAAGXOQQuCQBAF4Lu/Yk6iUG3gJfYWZZcIQUvPuzqFsM7ItFv079OoU7d5vO/B5GVZlBou
ZKxD8Aw+CAET9NQKDkjeODDB8/Jh2hAGSNZA7MEQoAhLGqmaXRjwrvbGG5U3lWrQHnuvKg7S4px2
LKhO3AU3sSfabpLW3PEzmY9VO45JtslS0GCZHXxHWv+E1iPKlWUoRqQtdTVKf30lM17863x+DeKp
OR+0rrz0dIM4jd5QSwMEFAACAAgAIyrvSKt4+6G1AAAA3AEAADQAHABzdG9yYWdlL3dlYnNxbC9k
YXRhYmFzZS1sb2NrLWFmdGVyLXJlbG9hZC1zdGRlcnIudHh0VVQJAANB1IhXQdSIV3V4CwABBPUB
AAAEFAAAAOXPsQrCQAwG4N2nyCQtqCd0kdtE6yJSaLXOd20qhWtS0jvFt7cVnXwEt/zk+yFJ8zzL
NVzIWIfgGXwQAiZoqRLskLxxYILn5d1UIXQQrYHYgyFAEZZ4pkp2ocNB7Y03Kr0W6or22HpVcJAK
p7RjQXXiOriRPdDWo7RmwHdlGlZV30fJJolBg2V28Clp/RVa9ygNS5f1SFuqS5S2eUYTXvzqdDoN
5uPmfNC68NLSDebxLP2rb19QSwMEFAACAAgAIyrvSN79uumvAAAA7gAAACkAHABzdG9yYWdlL3dl
YnNxbC9lbXB0eS1zdGF0ZW1lbnQtc3RkZXJyLnR4dFVUCQADQtSIV0LUiFd1eAsAAQT1AQAABBQA
AABlzkELgkAQBeC7v2JOolBt4CX2FmWXCEFLz7s6hbDOyLRb9O/TqFO3ebzvweRlWZQaLmSsQ/AM
PggBE/TUCg5I3jgwwfPyYdoQBkjWQOzBEKAISxqpml0Y8K72xhuVN5Vq0B57ryoO0uKcdiyoTtwF
N7En2m6S1tzxM5mPVTuOSbbJUtBgmR18R1r/hNYjypVlKEakLXU1Sn99JTNe/Ot8fg3iqTkftK68
9HSDOI3eUEsDBBQAAgAIACMq70je/brprwAAAO4AAAAqABwAc3RvcmFnZS93ZWJzcWwvZXhlY3V0
ZS1zcWwtYXJncy1zdGRlcnIudHh0VVQJAANC1IhXQtSIV3V4CwABBPUBAAAEFAAAAGXOQQuCQBAF
4Lu/Yk6iUG3gJfYWZZcIQUvPuzqFsM7ItFv079OoU7d5vO/B5GVZlBouZKxD8Aw+CAET9NQKDkje
ODDB8/Jh2hAGSNZA7MEQoAhLGqmaXRjwrvbGG5U3lWrQHnuvKg7S4px2LKhO3AU3sSfabpLW3PEz
mY9VO45JtslS0GCZHXxHWv+E1iPKlWUoRqQtdTVKf30lM17863x+DeKpOR+0rrz0dIM4jd5QSwME
FAACAAgAIyrvSN79uumvAAAA7gAAADIAHABzdG9yYWdlL3dlYnNxbC9leGVjdXRlLXNxbC1yb3dz
QWZmZWN0ZWQtc3RkZXJyLnR4dFVUCQADQtSIV0LUiFd1eAsAAQT1AQAABBQAAABlzkELgkAQBeC7
v2JOolBt4CX2FmWXCEFLz7s6hbDOyLRb9O/TqFO3ebzvweRlWZQaLmSsQ/AMPggBE/TUCg5I3jgw
wfPyYdoQBkjWQOzBEKAISxqpml0Y8K72xhuVN5Vq0B57ryoO0uKcdiyoTtwFN7En2m6S1tzxM5mP
VTuOSbbJUtBgmR18R1r/hNYjypVlKEakLXU1Sn99JTNe/Ot8fg3iqTkftK689HSDOI3eUEsDBBQA
AgAIACMq70je/brprwAAAO4AAAA/ABwAc3RvcmFnZS93ZWJzcWwvZXhlY3V0ZXNxbC1hY2NlcHRz
LW9ubHktb25lLXN0YXRlbWVudC1zdGRlcnIudHh0VVQJAANC1IhXQtSIV3V4CwABBPUBAAAEFAAA
AGXOQQuCQBAF4Lu/Yk6iUG3gJfYWZZcIQUvPuzqFsM7ItFv079OoU7d5vO/B5GVZlBouZKxD8Aw+
CAET9NQKDkjeODDB8/Jh2hAGSNZA7MEQoAhLGqmaXRjwrvbGG5U3lWrQHnuvKg7S4px2LKhO3AU3
sSfabpLW3PEzmY9VO45JtslS0GCZHXxHWv+E1iPKlWUoRqQtdTVKf30lM17863x+DeKpOR+0rrz0
dIM4jd5QSwMEFAACAAgAJCrvSN79uumvAAAA7gAAAC4AHABzdG9yYWdlL3dlYnNxbC9oYXNoLWNo
YW5nZS13aXRoLXhoci1zdGRlcnIudHh0VVQJAANE1IhXRNSIV3V4CwABBPUBAAAEFAAAAGXOQQuC
QBAF4Lu/Yk6iUG3gJfYWZZcIQUvPuzqFsM7ItFv079OoU7d5vO/B5GVZlBouZKxD8Aw+CAET9NQK
DkjeODDB8/Jh2hAGSNZA7MEQoAhLGqmaXRjwrvbGG5U3lWrQHnuvKg7S4px2LKhO3AU3sSfabpLW
3PEzmY9VO45JtslS0GCZHXxHWv+E1iPKlWUoRqQtdTVKf30lM17863x+DeKpOR+0rrz0dIM4jd5Q
SwMEFAACAAgAJSrvSKt4+6G1AAAA3AEAAD8AHABzdG9yYWdlL3dlYnNxbC9tdWx0aXBsZS1kYXRh
YmFzZXMtZ2FyYmFnZS1jb2xsZWN0aW9uLXN0ZGVyci50eHRVVAkAA0XUiFdF1IhXdXgLAAEE9QEA
AAQUAAAA5c+xCsJADAbg3afIJC2oJ3SR20TrIlJotc53bSqFa1LSO8W3txWdfAS3/OT7IUnzPMs1
XMhYh+AZfBACJmipEuyQvHFggufl3VQhdBCtgdiDIUARlnimSnahw0HtjTcqvRbqivbYelVwkAqn
tGNBdeI6uJE90NajtGbAd2UaVlXfR8kmiUGDZXbwKWn9FVr3KA1Ll/VIW6pLlLZ5RhNe/Op0Og3m
4+Z80Lrw0tIN5vEs/atvX1BLAwQUAAIACAAlKu9IPGb0jLkAAADKAgAARAAcAHN0b3JhZ2Uvd2Vi
c3FsL211bHRpcGxlLXRyYW5zYWN0aW9ucy1vbi1kaWZmZXJlbnQtaGFuZGxlcy1zdGRlcnIudHh0
VVQJAANF1IhXRdSIV3V4CwABBPUBAAAEFAAAAO3PvwrCQAwG8L1Pkam0oJ7gIreJ1kVEaP0z37Wp
FK5JSe8U395WdPINxC0hvw/yZXl+yDWcyFiH4Bl8EAImaKgUbJG8cWCC5+nNlCG0kMyB2IMhQBGW
NFJndqHFXm2MNyq7FOqCdtd4VXCQEsdtzYJqz1VwA7ujrQZpTY+vyDjMyq5LFstFChoss4N3SOuP
0LpDqVnaQ4e0ouqM0tSPZMSTb52Nr0E8XI5brQsvDV0hTqPs3/Zn2z4BUEsDBBQAAgAIACUq70je
/brprwAAAO4AAAAvABwAc3RvcmFnZS93ZWJzcWwvbXVsdGlwbGUtdHJhbnNhY3Rpb25zLXN0ZGVy
ci50eHRVVAkAA0XUiFdF1IhXdXgLAAEE9QEAAAQUAAAAZc5BC4JAEAXgu79iTqJQbeAl9hZllwhB
S8+7OoWwzsi0W/Tv06hTt3m878HkZVmUGi5krEPwDD4IARP01AoOSN44MMHz8mHaEAZI1kDswRCg
CEsaqZpdGPCu9sYblTeVatAee68qDtLinHYsqE7cBTexJ9puktbc8TOZj1U7jkm2yVLQYJkdfEda
/4TWI8qVZShGpC11NUp/fSUzXvzrfH4N4qk5H7SuvPR0gziN3lBLAwQUAAIACAAlKu9I3v266a8A
AADuAAAAKAAcAHN0b3JhZ2Uvd2Vic3FsL251bGwtY2FsbGJhY2tzLXN0ZGVyci50eHRVVAkAA0XU
iFdF1IhXdXgLAAEE9QEAAAQUAAAAZc5BC4JAEAXgu79iTqJQbeAl9hZllwhBS8+7OoWwzsi0W/Tv
06hTt3m878HkZVmUGi5krEPwDD4IARP01AoOSN44MMHz8mHaEAZI1kDswRCgCEsaqZpdGPCu9sYb
lTeVatAee68qDtLinHYsqE7cBTexJ9puktbc8TOZj1U7jkm2yVLQYJkdfEda/4TWI8qVZShGpC11
NUp/fSUzXvzrfH4N4qk5H7SuvPR0gziN3lBLAwQUAAIACAAlKu9Iq3j7obUAAADcAQAASAAcAHN0
b3JhZ2Uvd2Vic3FsL29wZW4tZGF0YWJhc2UtY3JlYXRpb24tY2FsbGJhY2staXNvbGF0ZWQtd29y
bGQtc3RkZXJyLnR4dFVUCQADRdSIV0XUiFd1eAsAAQT1AQAABBQAAADlz7EKwkAMBuDdp8gkLagn
dJHbROsiUmi1zndtKoVrUtI7xbe3FZ18BLf85PshSfM8yzVcyFiH4Bl8EAImaKkS7JC8cWCC5+Xd
VCF0EK2B2IMhQBGWeKZKdqHDQe2NNyq9FuqK9th6VXCQCqe0Y0F14jq4kT3Q1qO0ZsB3ZRpWVd9H
ySaJQYNldvApaf0VWvcoDUuX9UhbqkuUtnlGE1786nQ6Debj5nzQuvDS0g3m8Sz9q29fUEsDBBQA
AgAIACUq70j5R3TYugAAALgDAAA5ABwAc3RvcmFnZS93ZWJzcWwvb3Blbi1kYXRhYmFzZS1jcmVh
dGlvbi1jYWxsYmFjay1zdGRlcnIudHh0VVQJAANG1IhXRtSIV3V4CwABBPUBAAAEFAAAAO2PuwrC
QBBF+3zFVJKAuoKNbCcaGxEh8VHvJhMJbGbCZFfx701EK/9A0s1lzoV70iw7ZhrOZKxD8Aw+CAET
1FQINkjeODDB8+xuihAaiBdA7MEQoAhLEqkLu9Bgp7bGG5Vec3VFu6+9yjlIgUPasKA6cBlcjz3Q
lj1pTYfvynDMi7aNl6tlAhoss4NPSesvoXWLUrE0xxZpTeUFpa6e8QBPf+l0mAaT/nPaaZ17qekG
kyRKR9vR9i9sX1BLAwQUAAIACAAlKu9I3v266a8AAADuAAAANQAcAHN0b3JhZ2Uvd2Vic3FsL29w
ZW4tZGF0YWJhc2UtZW1wdHktdmVyc2lvbi1zdGRlcnIudHh0VVQJAANG1IhXRtSIV3V4CwABBPUB
AAAEFAAAAGXOQQuCQBAF4Lu/Yk6iUG3gJfYWZZcIQUvPuzqFsM7ItFv079OoU7d5vO/B5GVZlBou
ZKxD8Aw+CAET9NQKDkjeODDB8/Jh2hAGSNZA7MEQoAhLGqmaXRjwrvbGG5U3lWrQHnuvKg7S4px2
LKhO3AU3sSfabpLW3PEzmY9VO45JtslS0GCZHXxHWv+E1iPKlWUoRqQtdTVKf30lM17863x+DeKp
OR+0rrz0dIM4jd5QSwMEFAACAAgAJSrvSN79uumvAAAA7gAAADQAHABzdG9yYWdlL3dlYnNxbC9v
cGVuLWRhdGFiYXNlLWV4cGFuZC1xdW90YS1zdGRlcnIudHh0VVQJAANG1IhXRtSIV3V4CwABBPUB
AAAEFAAAAGXOQQuCQBAF4Lu/Yk6iUG3gJfYWZZcIQUvPuzqFsM7ItFv079OoU7d5vO/B5GVZlBou
ZKxD8Aw+CAET9NQKDkjeODDB8/Jh2hAGSNZA7MEQoAhLGqmaXRjwrvbGG5U3lWrQHnuvKg7S4px2
LKhO3AU3sSfabpLW3PEzmY9VO45JtslS0GCZHXxHWv+E1iPKlWUoRqQtdTVKf30lM17863x+DeKp
OR+0rrz0dIM4jd5QSwMEFAACAAgAJSrvSKt4+6G1AAAA3AEAADkAHABzdG9yYWdlL3dlYnNxbC9v
cGVuLWRhdGFiYXNlLXNldC1lbXB0eS12ZXJzaW9uLXN0ZGVyci50eHRVVAkAA0bUiFdG1IhXdXgL
AAEE9QEAAAQUAAAA5c+xCsJADAbg3afIJC2oJ3SR20TrIlJotc53bSqFa1LSO8W3txWdfAS3/OT7
IUnzPMs1XMhYh+AZfBACJmipEuyQvHFggufl3VQhdBCtgdiDIUARlnimSnahw0HtjTcqvRbqivbY
elVwkAqntGNBdeI6uJE90NajtGbAd2UaVlXfR8kmiUGDZXbwKWn9FVr3KA1Ll/VIW6pLlLZ5RhNe
/Op0Og3m4+Z80Lrw0tIN5vEs/atvX1BLAwQUAAIACAAmKu9Iq3j7obUAAADcAQAARQAcAHN0b3Jh
Z2Uvd2Vic3FsL29wZW4tZGF0YWJhc2Utd2hpbGUtdHJhbnNhY3Rpb24taW4tcHJvZ3Jlc3Mtc3Rk
ZXJyLnR4dFVUCQADR9SIV0fUiFd1eAsAAQT1AQAABBQAAADlz7EKwkAMBuDdp8gkLagndJHbROsi
Umi1zndtKoVrUtI7xbe3FZ18BLf85PshSfM8yzVcyFiH4Bl8EAImaKkS7JC8cWCC5+XdVCF0EK2B
2IMhQBGWeKZKdqHDQe2NNyq9FuqK9th6VXCQCqe0Y0F14jq4kT3Q1qO0ZsB3ZRpWVd9HySaJQYNl
dvApaf0VWvcoDUuX9UhbqkuUtnlGE1786nQ6Debj5nzQuvDS0g3m8Sz9q29fUEsDBBQAAgAIACYq
70je/brprwAAAO4AAAA5ABwAc3RvcmFnZS93ZWJzcWwvcHJpdmF0ZS1icm93c2luZy1ub3JlYWQt
bm93cml0ZS1zdGRlcnIudHh0VVQJAANH1IhXR9SIV3V4CwABBPUBAAAEFAAAAGXOQQuCQBAF4Lu/
Yk6iUG3gJfYWZZcIQUvPuzqFsM7ItFv079OoU7d5vO/B5GVZlBouZKxD8Aw+CAET9NQKDkjeODDB
8/Jh2hAGSNZA7MEQoAhLGqmaXRjwrvbGG5U3lWrQHnuvKg7S4px2LKhO3AU3sSfabpLW3PEzmY9V
O45JtslS0GCZHXxHWv+E1iPKlWUoRqQtdTVKf30lM17863x+DeKpOR+0rrz0dIM4jd5QSwMEFAAC
AAgAJirvSDxm9Iy5AAAAygIAAEcAHABzdG9yYWdlL3dlYnNxbC9yZWFkLWFuZC13cml0ZS10cmFu
c2FjdGlvbnMtZG9udC1ydW4tdG9nZXRoZXItc3RkZXJyLnR4dFVUCQADR9SIV0fUiFd1eAsAAQT1
AQAABBQAAADtz78KwkAMBvC9T5GptKCe4CK3idZFRGj9M9+1qRSuSUnvFN/eVnTyDcQtIb8P8mV5
fsg1nMhYh+AZfBACJmioFGyRvHFggufpzZQhtJDMgdiDIUARljRSZ3ahxV5tjDcquxTqgnbXeFVw
kBLHbc2Cas9VcAO7o60GaU2Pr8g4zMquSxbLRQoaLLODd0jrj9C6Q6lZ2kOHtKLqjNLUj2TEk2+d
ja9BPFyOW60LLw1dIU6j7N/2Z9s+AVBLAwQUAAIACAAmKu9Iq3j7obUAAADcAQAAQAAcAHN0b3Jh
Z2Uvd2Vic3FsL3JlYWQtdHJhbnNhY3Rpb25zLXJ1bm5pbmctY29uY3VycmVudGx5LXN0ZGVyci50
eHRVVAkAA0fUiFdH1IhXdXgLAAEE9QEAAAQUAAAA5c+xCsJADAbg3afIJC2oJ3SR20TrIlJotc53
bSqFa1LSO8W3txWdfAS3/OT7IUnzPMs1XMhYh+AZfBACJmipEuyQvHFggufl3VQhdBCtgdiDIUAR
lnimSnahw0HtjTcqvRbqivbYelVwkAqntGNBdeI6uJE90NajtGbAd2UaVlXfR8kmiUGDZXbwKWn9
FVr3KA1Ll/VIW6pLlLZ5RhNe/Op0Og3m4+Z80Lrw0tIN5vEs/atvX1BLAwQUAAIACAAmKu9I3v26
6a8AAADuAAAAKAAcAHN0b3JhZ2Uvd2Vic3FsL3NxbC1kYXRhLXR5cGVzLXN0ZGVyci50eHRVVAkA
A0fUiFdH1IhXdXgLAAEE9QEAAAQUAAAAZc5BC4JAEAXgu79iTqJQbeAl9hZllwhBS8+7OoWwzsi0
W/Tv06hTt3m878HkZVmUGi5krEPwDD4IARP01AoOSN44MMHz8mHaEAZI1kDswRCgCEsaqZpdGPCu
9sYblTeVatAee68qDtLinHYsqE7cBTexJ9puktbc8TOZj1U7jkm2yVLQYJkdfEda/4TWI8qVZShG
pC11NUp/fSUzXvzrfH4N4qk5H7SuvPR0gziN3lBLAwQUAAIACAAmKu9Iq3j7obUAAADcAQAAQQAc
AHN0b3JhZ2Uvd2Vic3FsL3N0YXRlbWVudC1lcnJvci1jYWxsYmFjay1pc29sYXRlZC13b3JsZC1z
dGRlcnIudHh0VVQJAANI1IhXSNSIV3V4CwABBPUBAAAEFAAAAOXPsQrCQAwG4N2nyCQtqCd0kdtE
6yJSaLXOd20qhWtS0jvFt7cVnXwEt/zk+yFJ8zzLNVzIWIfgGXwQAiZoqRLskLxxYILn5d1UIXQQ
rYHYgyFAEZZ4pkp2ocNB7Y03Kr0W6or22HpVcJAKp7RjQXXiOriRPdDWo7RmwHdlGlZV30fJJolB
g2V28Clp/RVa9ygNS5f1SFuqS5S2eUYTXvzqdDoN5uPmfNC68NLSDebxLP2rb19QSwMEFAACAAgA
JirvSN79uumvAAAA7gAAADIAHABzdG9yYWdlL3dlYnNxbC9zdGF0ZW1lbnQtZXJyb3ItY2FsbGJh
Y2stc3RkZXJyLnR4dFVUCQADSNSIV0jUiFd1eAsAAQT1AQAABBQAAABlzkELgkAQBeC7v2JOolBt
4CX2FmWXCEFLz7s6hbDOyLRb9O/TqFO3ebzvweRlWZQaLmSsQ/AMPggBE/TUCg5I3jgwwfPyYdoQ
BkjWQOzBEKAISxqpml0Y8K72xhuVN5Vq0B57ryoO0uKcdiyoTtwFN7En2m6S1tzxM5mPVTuOSbbJ
UtBgmR18R1r/hNYjypVlKEakLXU1Sn99JTNe/Ot8fg3iqTkftK689HSDOI3eUEsDBBQAAgAIACYq
70irePuhtQAAANwBAABDABwAc3RvcmFnZS93ZWJzcWwvc3RhdGVtZW50LXN1Y2Nlc3MtY2FsbGJh
Y2staXNvbGF0ZWQtd29ybGQtc3RkZXJyLnR4dFVUCQADSNSIV0jUiFd1eAsAAQT1AQAABBQAAADl
z7EKwkAMBuDdp8gkLagndJHbROsiUmi1zndtKoVrUtI7xbe3FZ18BLf85PshSfM8yzVcyFiH4Bl8
EAImaKkS7JC8cWCC5+XdVCF0EK2B2IMhQBGWeKZKdqHDQe2NNyq9FuqK9th6VXCQCqe0Y0F14jq4
kT3Q1qO0ZsB3ZRpWVd9HySaJQYNldvApaf0VWvcoDUuX9UhbqkuUtnlGE1786nQ6Debj5nzQuvDS
0g3m8Sz9q29fUEsDBBQAAgAIACcq70je/brprwAAAO4AAAAqABwAc3RvcmFnZS93ZWJzcWwvc3Vj
Y2Vzcy1jYWxsYmFjay1zdGRlcnIudHh0VVQJAANJ1IhXSdSIV3V4CwABBPUBAAAEFAAAAGXOQQuC
QBAF4Lu/Yk6iUG3gJfYWZZcIQUvPuzqFsM7ItFv079OoU7d5vO/B5GVZlBouZKxD8Aw+CAET9NQK
DkjeODDB8/Jh2hAGSNZA7MEQoAhLGqmaXRjwrvbGG5U3lWrQHnuvKg7S4px2LKhO3AU3sSfabpLW
3PEzmY9VO45JtslS0GCZHXxHWv+E1iPKlWUoRqQtdTVKf30lM17863x+DeKpOR+0rrz0dIM4jd5Q
SwMEFAACAAgAJyrvSN79uumvAAAA7gAAAEMAHABzdG9yYWdlL3dlYnNxbC9zdWNjZXNzLWNhbGxi
YWNrLXdoZW4tcGFnZS1kZWZlcnMtbG9hZGluZy1zdGRlcnIudHh0VVQJAANJ1IhXSdSIV3V4CwAB
BPUBAAAEFAAAAGXOQQuCQBAF4Lu/Yk6iUG3gJfYWZZcIQUvPuzqFsM7ItFv079OoU7d5vO/B5GVZ
lBouZKxD8Aw+CAET9NQKDkjeODDB8/Jh2hAGSNZA7MEQoAhLGqmaXRjwrvbGG5U3lWrQHnuvKg7S
4px2LKhO3AU3sSfabpLW3PEzmY9VO45JtslS0GCZHXxHWv+E1iPKlWUoRqQtdTVKf30lM17863x+
DeKpOR+0rrz0dIM4jd5QSwMEFAACAAgAJyrvSN79uumvAAAA7gAAACkAHABzdG9yYWdlL3dlYnNx
bC90ZXN0LWF1dGhvcml6ZXItc3RkZXJyLnR4dFVUCQADSdSIV0nUiFd1eAsAAQT1AQAABBQAAABl
zkELgkAQBeC7v2JOolBt4CX2FmWXCEFLz7s6hbDOyLRb9O/TqFO3ebzvweRlWZQaLmSsQ/AMPggB
E/TUCg5I3jgwwfPyYdoQBkjWQOzBEKAISxqpml0Y8K72xhuVN5Vq0B57ryoO0uKcdiyoTtwFN7En
2m6S1tzxM5mPVTuOSbbJUtBgmR18R1r/hNYjypVlKEakLXU1Sn99JTNe/Ot8fg3iqTkftK689HSD
OI3eUEsDBBQAAgAIACcq70je/brprwAAAO4AAAA+ABwAc3RvcmFnZS93ZWJzcWwvdHJhbnNhY3Rp
b24tY2FsbGJhY2stZXhjZXB0aW9uLWNyYXNoLXN0ZGVyci50eHRVVAkAA0rUiFdK1IhXdXgLAAEE
9QEAAAQUAAAAZc5BC4JAEAXgu79iTqJQbeAl9hZllwhBS8+7OoWwzsi0W/Tv06hTt3m878HkZVmU
Gi5krEPwDD4IARP01AoOSN44MMHz8mHaEAZI1kDswRCgCEsaqZpdGPCu9sYblTeVatAee68qDtLi
nHYsqE7cBTexJ9puktbc8TOZj1U7jkm2yVLQYJkdfEda/4TWI8qVZShGpC11NUp/fSUzXvzrfH4N
4qk5H7SuvPR0gziN3lBLAwQUAAIACAAnKu9Iq3j7obUAAADcAQAAPQAcAHN0b3JhZ2Uvd2Vic3Fs
L3RyYW5zYWN0aW9uLWNhbGxiYWNrLWlzb2xhdGVkLXdvcmxkLXN0ZGVyci50eHRVVAkAA0rUiFdK
1IhXdXgLAAEE9QEAAAQUAAAA5c+xCsJADAbg3afIJC2oJ3SR20TrIlJotc53bSqFa1LSO8W3txWd
fAS3/OT7IUnzPMs1XMhYh+AZfBACJmipEuyQvHFggufl3VQhdBCtgdiDIUARlnimSnahw0HtjTcq
vRbqivbYelVwkAqntGNBdeI6uJE90NajtGbAd2UaVlXfR8kmiUGDZXbwKWn9FVr3KA1Ll/VIW6pL
lLZ5RhNe/Op0Og3m4+Z80Lrw0tIN5vEs/atvX1BLAwQUAAIACAAnKu9Iq3j7obUAAADcAQAAQwAc
AHN0b3JhZ2Uvd2Vic3FsL3RyYW5zYWN0aW9uLWVycm9yLWNhbGxiYWNrLWlzb2xhdGVkLXdvcmxk
LXN0ZGVyci50eHRVVAkAA0rUiFdK1IhXdXgLAAEE9QEAAAQUAAAA5c+xCsJADAbg3afIJC2oJ3SR
20TrIlJotc53bSqFa1LSO8W3txWdfAS3/OT7IUnzPMs1XMhYh+AZfBACJmipEuyQvHFggufl3VQh
dBCtgdiDIUARlnimSnahw0HtjTcqvRbqivbYelVwkAqntGNBdeI6uJE90NajtGbAd2UaVlXfR8km
iUGDZXbwKWn9FVr3KA1Ll/VIW6pLlLZ5RhNe/Op0Og3m4+Z80Lrw0tIN5vEs/atvX1BLAwQUAAIA
CAAoKu9I3v266a8AAADuAAAANAAcAHN0b3JhZ2Uvd2Vic3FsL3RyYW5zYWN0aW9uLWVycm9yLWNh
bGxiYWNrLXN0ZGVyci50eHRVVAkAA0vUiFdL1IhXdXgLAAEE9QEAAAQUAAAAZc5BC4JAEAXgu79i
TqJQbeAl9hZllwhBS8+7OoWwzsi0W/Tv06hTt3m878HkZVmUGi5krEPwDD4IARP01AoOSN44MMHz
8mHaEAZI1kDswRCgCEsaqZpdGPCu9sYblTeVatAee68qDtLinHYsqE7cBTexJ9puktbc8TOZj1U7
jkm2yVLQYJkdfEda/4TWI8qVZShGpC11NUp/fSUzXvzrfH4N4qk5H7SuvPR0gziN3lBLAwQUAAIA
CAAoKu9I3v266a8AAADuAAAALwAcAHN0b3JhZ2Uvd2Vic3FsL3RyYW5zYWN0aW9uLXByb3RvdHlw
ZS1zdGRlcnIudHh0VVQJAANL1IhXS9SIV3V4CwABBPUBAAAEFAAAAGXOQQuCQBAF4Lu/Yk6iUG3g
JfYWZZcIQUvPuzqFsM7ItFv079OoU7d5vO/B5GVZlBouZKxD8Aw+CAET9NQKDkjeODDB8/Jh2hAG
SNZA7MEQoAhLGqmaXRjwrvbGG5U3lWrQHnuvKg7S4px2LKhO3AU3sSfabpLW3PEzmY9VO45JtslS
0GCZHXxHWv+E1iPKlWUoRqQtdTVKf30lM17863x+DeKpOR+0rrz0dIM4jd5QSwMEFAACAAgAKCrv
SKt4+6G1AAAA3AEAAEUAHABzdG9yYWdlL3dlYnNxbC90cmFuc2FjdGlvbi1zdWNjZXNzLWNhbGxi
YWNrLWlzb2xhdGVkLXdvcmxkLXN0ZGVyci50eHRVVAkAA0vUiFdL1IhXdXgLAAEE9QEAAAQUAAAA
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
BAoAAAAAAHQq70gAAAAAAAAAAAAAAAAMABwAd2ViZ2wvMS4wLjIvVVQJAAPb1IhXttWIV3V4CwAB
BPUBAAAEFAAAAFBLAwQKAAAAAAB0Ku9IAAAAAAAAAAAAAAAAGAAcAHdlYmdsLzEuMC4yL2NvbmZv
cm1hbmNlL1VUCQAD29SIV7bViFd1eAsAAQT1AQAABBQAAABQSwMECgAAAAAAdCrvSAAAAAAAAAAA
AAAAACEAHAB3ZWJnbC8xLjAuMi9jb25mb3JtYW5jZS90ZXh0dXJlcy9VVAkAA9vUiFe21YhXdXgL
AAEE9QEAAAQUAAAAUEsDBBQAAgAIAHQq70jGkroudwAAAHQBAAA4ABwAd2ViZ2wvMS4wLjIvY29u
Zm9ybWFuY2UvdGV4dHVyZXMvdGV4dHVyZS1ucG90LXN0ZGVyci50eHRVVAkAA9vUiFfb1IhXdXgL
AAEE9QEAAAQUAAAAizYwtTK0tDK20LMwMY9VsAECBaf84mIFOyBQSMtMD8hJrExKTM4GCQaXJBaV
BBSlFuXn5DjmpQSnloBkgaIlqVYKVUBhhZIioNJiHYXifIWC/OKSzLx0hUSFtMTsVIUCiDaF5Pzc
gpzUksz8PK7oQWK3BZ3tBgBQSwMEFAACAAgAhirvSD5NP8I0MgEAqYocABkAHAB3cHR3a19wcm9j
ZXNzX2xvZy5vdXQudHh0VVQJAAP81IhXk9KIV3V4CwABBPUBAAAEFAAAAOz9eXPcSJIviv4/n4J3
7KqP6rwCiTUXvadXr0pSdVWPqkomqafHbM65NCQQSaKEBLIBpES2nQ//AsiFmclcYvMIBxI2PSqS
EjM8PCJ8+fn29t1Pf//rq29kYs3TsJrmxcyqSFmVr/6aJ9ndVZVfLUpyNc+L6iqwxyP3397y/YJ3
/BeyvPpxWpHi9d8W6ZVnX9mDV37wyhtcubYzuPrrb5//7d9+/f3nPw796t/Lei3ykJRV/cV9XlZX
ESmqI79gpeEii+5J8eq+qubfN9S9Go1sm36ZxK88xx/7nL/qPP1qcPZXv5Xl6jcbljz9qsfwq6vf
9Mf29qIuE73rXx77/taqg+XvzvL4dv5IP6HMoy+kui6rMIvDNM/I9T/I5FPzw0+k+Eo/601Bwopc
Lf/hVZ69unrpUeZRev7H/1j//3cqPtWV/tCfkiw+SuHRu/gxX1BK5mFF7yP93f/n5uX1//zu/5ZY
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
AxQAAgAIAE0p70i2JxcBxAAAAPIGAAA8ABgAAAAAAAEAAACkgZFwAQBjb21wb3NpdGluZy9zaG93
LWNvbXBvc2l0ZWQtaWZyYW1lLW9uLWJhY2stYnV0dG9uLXN0ZGVyci50eHRVVAUAA7HSiFd1eAsA
AQT1AQAABBQAAABQSwECHgMKAAAAAABCKe9IAAAAAAAAAAAAAAAAEgAYAAAAAAAAABAA7UHLcQEA
Y29tcG9zaXRpbmcvdmlkZW8vVVQFAAOc0ohXdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAQinv
SIjaDWK+AAAA8gYAADIAGAAAAAAAAQAAAKSBF3IBAGNvbXBvc2l0aW5nL3ZpZGVvL3ZpZGVvLWNs
aXAtY2hhbmdlLXNyYy1zdGRlcnIudHh0VVQFAAOc0ohXdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAA
AAAASinvSAAAAAAAAAAAAAAAAA0AGAAAAAAAAAAQAO1BQXMBAGRpc3BsYXlsaXN0cy9VVAUAA6zS
iFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABKKe9Io1f96FAAAACOAAAAMgAYAAAAAAABAAAA
pIGIcwEAZGlzcGxheWxpc3RzL2V4dGVudC1pbmNsdWRlcy10cmFuc2Zvcm1zLXN0ZGVyci50eHRV
VAUAA6zSiFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABKKe9I8paV1UcAAABJAAAAKQAYAAAA
AAABAAAApIFEdAEAZGlzcGxheWxpc3RzL2xheWVyLWRpc3BheS1saXN0LXN0ZGVyci50eHRVVAUA
A6zSiFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADoKu9IoPLxYltbAADmRQIAIgAYAAAAAAAB
AAAApIHudAEARHVtcFJlbmRlclRyZWUtMzE1MTYtY3Jhc2gtbG9nLnR4dFVUBQADs9WIV3V4CwAB
BPUBAAAEFAAAAFBLAQIeAxQAAgAIAOgq70gc0DCfTkoAAN6uAQAiABgAAAAAAAEAAACkgaXQAQBE
dW1wUmVuZGVyVHJlZS0zMTU0Mi1jcmFzaC1sb2cudHh0VVQFAAOz1YhXdXgLAAEE9QEAAAQUAAAA
UEsBAh4DFAACAAgA6CrvSHyV1DbZQQAA7ykBACIAGAAAAAAAAQAAAKSBTxsCAER1bXBSZW5kZXJU
cmVlLTMyNzkxLWNyYXNoLWxvZy50eHRVVAUAA7PViFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIA
CADoKu9IdsKBDDA/AAAxKAEAIgAYAAAAAAABAAAApIGEXQIARHVtcFJlbmRlclRyZWUtMzI3OTYt
Y3Jhc2gtbG9nLnR4dFVUBQADs9WIV3V4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAFwp70gAAAAA
AAAAAAAAAAAIABgAAAAAAAAAEADtQRCdAgBlZGl0aW5nL1VUBQADz9KIV3V4CwABBPUBAAAEFAAA
AFBLAQIeAwoAAAAAAGop70gAAAAAAAAAAAAAAAATABgAAAAAAAAAEADtQVKdAgBlZGl0aW5nL3Bh
c3RlYm9hcmQvVVQFAAPo0ohXdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAXCnvSH6p8SDpAAAA
ggEAADAAGAAAAAAAAQAAAKSBn50CAGVkaXRpbmcvcGFzdGVib2FyZC9jb3B5LXJlc29sdmVzLXVy
bHMtc3RkZXJyLnR4dFVUBQADz9KIV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAGop70hXGBNJ
2gAAAFABAAAsABgAAAAAAAEAAACkgfKeAgBlZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtbm9wbHVn
aW4tc3RkZXJyLnR4dFVUBQAD59KIV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAGop70hXGBNJ
2gAAAFABAAAyABgAAAAAAAEAAACkgTKgAgBlZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtbm9wbHVn
aW4teGh0bWwtc3RkZXJyLnR4dFVUBQAD59KIV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAGop
70h3TYsd4wAAAHcBAAAsABgAAAAAAAEAAACkgXihAgBlZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUt
bm9zY3JpcHQtc3RkZXJyLnR4dFVUBQAD6NKIV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAGop
70hKLj4w4gAAAHsBAAAyABgAAAAAAAEAAACkgcGiAgBlZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUt
bm9zY3JpcHQteGh0bWwtc3RkZXJyLnR4dFVUBQAD6NKIV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQA
AgAIAOcq70gZW+uyOAsAAMFIAAANABgAAAAAAAEAAACkgQ+kAgBlcnJvcl9sb2cudHh0VVQFAAOy
1YhXdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAxinvSAAAAAAAAAAAAAAAAAUAGAAAAAAAAAAQ
AO1Bjq8CAGZhc3QvVVQFAAOT04hXdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAdSnvSAAAAAAA
AAAAAAAAAAwAGAAAAAAAAAAQAO1Bza8CAGZhc3QvY2FudmFzL1VUBQAD/tKIV3V4CwABBPUBAAAE
FAAAAFBLAQIeAxQAAgAIAHAp70iCR/1WrQAAAN4DAABMABgAAAAAAAEAAACkgROwAgBmYXN0L2Nh
bnZhcy9jYW52YXMtY3NzLXNpemUtYWZ0ZXItaGVpZ2h0LWNoYW5nZS13aXRoLWRpc3BsYXktZmxl
eC1zdGRlcnIudHh0VVQFAAP00ohXdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAdSnvSNQW3uqF
AAAAGgEAACYAGAAAAAAAAQAAAKSBRrECAGZhc3QvY2FudmFzL2NhbnZhcy1saW5lRGFzaC1zdGRl
cnIudHh0VVQFAAP+0ohXdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAxinvSAAAAAAAAAAAAAAA
AAkAGAAAAAAAAAAQAO1BK7ICAGZhc3QvY3NzL1VUBQADk9OIV3V4CwABBPUBAAAEFAAAAFBLAQIe
AxQAAgAIAMYp70gMZ70BsQAAAM4BAAA2ABgAAAAAAAEAAACkgW6yAgBmYXN0L2Nzcy9wZXJzcGVj
dGl2ZS1vcmlnaW4taW5pdGlhbC1pbmhlcml0LXN0ZGVyci50eHRVVAUAA5PTiFd1eAsAAQT1AQAA
BBQAAABQSwECHgMKAAAAAABwKe9IAAAAAAAAAAAAAAAACQAYAAAAAAAAABAA7UGPswIAZmFzdC9k
b20vVVQFAAPz0ohXdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAcCnvSAAAAAAAAAAAAAAAABoA
GAAAAAAAAAAQAO1B0rMCAGZhc3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIvVVQFAAPz0ohXdXgLAAEE
9QEAAAQUAAAAUEsBAh4DFAACAAgAcCnvSN79uumvAAAA7gAAAD8AGAAAAAAAAQAAAKSBJrQCAGZh
c3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIvZGF0YWJhc2UtY2FsbGJhY2stZGVsaXZlcnktc3RkZXJy
LnR4dFVUBQAD89KIV3V4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAHUp70gAAAAAAAAAAAAAAAAL
ABgAAAAAAAAAEADtQU61AgBmYXN0L2Zvcm1zL1VUBQAD/dKIV3V4CwABBPUBAAAEFAAAAFBLAQIe
AxQAAgAIAHUp70guX9jvewEAAPg5AAAzABgAAAAAAAEAAACkgZO1AgBmYXN0L2Zvcm1zL1ZhbGlk
aXR5U3RhdGUtcGF0dGVybk1pc21hdGNoLXN0ZGVyci50eHRVVAUAA/3SiFd1eAsAAQT1AQAABBQA
AABQSwECHgMKAAAAAACwKe9IAAAAAAAAAAAAAAAADAAYAAAAAAAAABAA7UF7twIAZmFzdC9mcmFt
ZXMvVVQFAANr04hXdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAsCnvSN79uumvAAAA7gAAAC8A
GAAAAAAAAQAAAKSBwbcCAGZhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtc3RvcmFnZS1zdGRl
cnIudHh0VVQFAANr04hXdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAfCnvSAAAAAAAAAAAAAAA
AA0AGAAAAAAAAAAQAO1B2bgCAGZhc3QvaGlzdG9yeS9VVAUAAwvTiFd1eAsAAQT1AQAABBQAAABQ
SwECHgMUAAIACAB8Ke9I3v266a8AAADuAAAAQAAYAAAAAAABAAAApIEguQIAZmFzdC9oaXN0b3J5
L3BhZ2UtY2FjaGUtd2ViZGF0YWJhc2Utbm8tdHJhbnNhY3Rpb24tZGItc3RkZXJyLnR4dFVUBQAD
C9OIV3V4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAIQp70gAAAAAAAAAAAAAAAAMABgAAAAAAAAA
EADtQUm6AgBmYXN0L2ltYWdlcy9VVAUAAxfTiFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACE
Ke9IIY+9ODIAAAAzAAAALAAYAAAAAAABAAAApIGPugIAZmFzdC9pbWFnZXMvcGRmLWFzLWltYWdl
LWNyb3AtYm94LXN0ZGVyci50eHRVVAUAAxfTiFd1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAACV
Ke9IAAAAAAAAAAAAAAAACQAYAAAAAAAAABAA7UEnuwIAZmFzdC94c2wvVVQFAAM504hXdXgLAAEE
9QEAAAQUAAAAUEsBAh4DFAACAAgAkynvSHL9ZfKFAAAA6QAAACUAGAAAAAAAAQAAAKSBarsCAGZh
c3QveHNsL3RyYW5zZm9ybS14aHItZG9jLXN0ZGVyci50eHRVVAUAAzbTiFd1eAsAAQT1AQAABBQA
AABQSwECHgMUAAIACACTKe9IzgkoAo0AAADwAAAAJwAYAAAAAAABAAAApIFOvAIAZmFzdC94c2wv
eHNsdC1iYWQtaW1wb3J0LXVyaS1zdGRlcnIudHh0VVQFAAM204hXdXgLAAEE9QEAAAQUAAAAUEsB
Ah4DFAACAAgAkynvSM+PZg5QAAAAoAAAACQAGAAAAAAAAQAAAKSBPL0CAGZhc3QveHNsL3hzbHQt
Y29udGVudFR5cGUtc3RkZXJyLnR4dFVUBQADNtOIV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAI
AJUp70iBSnetSwAAAKwAAAA0ABgAAAAAAAEAAACkgeq9AgBmYXN0L3hzbC94c2x0LXRyYW5zZm9y
bS10by1mcmFnbWVudC1jcmFzaC1zdGRlcnIudHh0VVQFAAM504hXdXgLAAEE9QEAAAQUAAAAUEsB
Ah4DFAACAAgA6CrvSO2ngafnAQAAmAMAABEAGAAAAAAAAQAAAKSBo74CAGZ1bGxfcmVzdWx0cy5q
c29uVVQFAAO01YhXdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAlinvSAAAAAAAAAAAAAAAAAUA
GAAAAAAAAAAQAO1B1cACAGh0dHAvVVQFAAM704hXdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAA
qCnvSAAAAAAAAAAAAAAAAAsAGAAAAAAAAAAQAO1BFMECAGh0dHAvdGVzdHMvVVQFAANc04hXdXgL
AAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAlinvSAAAAAAAAAAAAAAAABQAGAAAAAAAAAAQAO1BWcEC
AGh0dHAvdGVzdHMvYXBwY2FjaGUvVVQFAAM704hXdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA
linvSMJNyB10AAAAmwAAAEMAGAAAAAAAAQAAAKSBp8ECAGh0dHAvdGVzdHMvYXBwY2FjaGUvNDA0
LXJlc291cmNlLXdpdGgtc2xvdy1tYWluLXJlc291cmNlLWFjdHVhbC50eHRVVAUAAzvTiFd1eAsA
AQT1AQAABBQAAABQSwECHgMUAAIACACWKe9IJuXTq0EBAABKAgAAQQAYAAAAAAABAAAApIGYwgIA
aHR0cC90ZXN0cy9hcHBjYWNoZS80MDQtcmVzb3VyY2Utd2l0aC1zbG93LW1haW4tcmVzb3VyY2Ut
ZGlmZi50eHRVVAUAAzvTiFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACWKe9IKNMVdtgAAAAn
AQAARQAYAAAAAAABAAAApIFUxAIAaHR0cC90ZXN0cy9hcHBjYWNoZS80MDQtcmVzb3VyY2Utd2l0
aC1zbG93LW1haW4tcmVzb3VyY2UtZXhwZWN0ZWQudHh0VVQFAAM704hXdXgLAAEE9QEAAAQUAAAA
UEsBAh4DFAACAAgAlinvSDb6VlEICAAAvRgAAEkAGAAAAAAAAQAAAKSBq8UCAGh0dHAvdGVzdHMv
YXBwY2FjaGUvNDA0LXJlc291cmNlLXdpdGgtc2xvdy1tYWluLXJlc291cmNlLXByZXR0eS1kaWZm
Lmh0bWxVVAUAAzvTiFd1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAACaKe9IAAAAAAAAAAAAAAAA
EQAYAAAAAAAAABAA7UE2zgIAaHR0cC90ZXN0cy9jYWNoZS9VVAUAA0TTiFd1eAsAAQT1AQAABBQA
AABQSwECHgMUAAIACACaKe9ISjxkhO0AAACJBAAAMAAYAAAAAAABAAAApIGBzgIAaHR0cC90ZXN0
cy9jYWNoZS9tZW1vcnktY2FjaGUtcHJ1bmluZy1zdGRlcnIudHh0VVQFAAND04hXdXgLAAEE9QEA
AAQUAAAAUEsBAh4DFAACAAgAminvSNGLTcKCAAAAwAAAAD0AGAAAAAAAAQAAAKSB2M8CAGh0dHAv
dGVzdHMvY2FjaGUvbmV0d29yay1lcnJvci1kdXJpbmctcmV2YWxpZGF0aW9uLXN0ZGVyci50eHRV
VAUAA0TTiFd1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAACWKe9IAAAAAAAAAAAAAAAAEgAYAAAA
AAAAABAA7UHR0AIAaHR0cC90ZXN0cy9jYW52YXMvVVQFAAM804hXdXgLAAEE9QEAAAQUAAAAUEsB
Ah4DCgAAAAAAlinvSAAAAAAAAAAAAAAAABgAGAAAAAAAAAAQAO1BHdECAGh0dHAvdGVzdHMvY2Fu
dmFzL3dlYmdsL1VUBQADPNOIV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAJYp70gMLGU2bwAA
AKQAAAA7ABgAAAAAAAEAAACkgW/RAgBodHRwL3Rlc3RzL2NhbnZhcy93ZWJnbC9vcmlnaW4tY2xl
YW4tY29uZm9ybWFuY2Utc3RkZXJyLnR4dFVUBQADPNOIV3V4CwABBPUBAAAEFAAAAFBLAQIeAwoA
AAAAAJcp70gAAAAAAAAAAAAAAAAPABgAAAAAAAAAEADtQVPSAgBodHRwL3Rlc3RzL2RvbS9VVAUA
Az3TiFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACXKe9IEuXWXscAAABTAgAAMwAYAAAAAAAB
AAAApIGc0gIAaHR0cC90ZXN0cy9kb20vZG9jdW1lbnQtY29udGVudFR5cGUtbWV0YS1zdGRlcnIu
dHh0VVQFAAM904hXdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAApynvSAAAAAAAAAAAAAAAABEA
GAAAAAAAAAAQAO1B0NMCAGh0dHAvdGVzdHMvbWVkaWEvVVQFAANZ04hXdXgLAAEE9QEAAAQUAAAA
UEsBAh4DCgAAAAAAnCnvSAAAAAAAAAAAAAAAABoAGAAAAAAAAAAQAO1BG9QCAGh0dHAvdGVzdHMv
bWVkaWEvY2xlYXJrZXkvVVQFAANH04hXdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAnCnvSJkj
4LlTAQAAfwMAADkAGAAAAAAAAQAAAKSBb9QCAGh0dHAvdGVzdHMvbWVkaWEvY2xlYXJrZXkvY2xl
YXIta2V5LWhscy1hZXMxMjgtc3RkZXJyLnR4dFVUBQADR9OIV3V4CwABBPUBAAAEFAAAAFBLAQIe
AwoAAAAAAKAp70gAAAAAAAAAAAAAAAAVABgAAAAAAAAAEADtQTXWAgBodHRwL3Rlc3RzL21lZGlh
L2hscy9VVAUAA0zTiFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACcKe9ICNcmc8EBAADQBAAA
QAAYAAAAAAABAAAApIGE1gIAaHR0cC90ZXN0cy9tZWRpYS9obHMvaGxzLWFjY2Vzc2libGl0eS1k
ZXNjcmliZXMtdmlkZW8tc3RkZXJyLnR4dFVUBQADSNOIV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQA
AgAIAJwp70gStxcBxwEAAEUFAAA6ABgAAAAAAAEAAACkgb/YAgBodHRwL3Rlc3RzL21lZGlhL2hs
cy9obHMtYXVkaW8tdHJhY2tzLWhhcy1hdWRpby1zdGRlcnIudHh0VVQFAANI04hXdXgLAAEE9QEA
AAQUAAAAUEsBAh4DFAACAAgAnSnvSIEYKB3QAQAAnwUAAEEAGAAAAAAAAQAAAKSB+toCAGh0dHAv
dGVzdHMvbWVkaWEvaGxzL2hscy1hdWRpby10cmFja3MtbG9jYWxlLXNlbGVjdGlvbi1zdGRlcnIu
dHh0VVQFAANJ04hXdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAnSnvSG5o8E3IAQAARQUAADAA
GAAAAAAAAQAAAKSBRd0CAGh0dHAvdGVzdHMvbWVkaWEvaGxzL2hscy1hdWRpby10cmFja3Mtc3Rk
ZXJyLnR4dFVUBQADStOIV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAJ0p70hxdP14JQEAAN4D
AAAsABgAAAAAAAEAAACkgXffAgBodHRwL3Rlc3RzL21lZGlhL2hscy9obHMtcHJvZ3Jlc3Mtc3Rk
ZXJyLnR4dFVUBQADStOIV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAKAp70gbePcQLgEAAIQD
AAAwABgAAAAAAAEAAACkgQLhAgBodHRwL3Rlc3RzL21lZGlhL2hscy9obHMtdmlkZW8tcmVzaXpl
LXN0ZGVyci50eHRVVAUAA0vTiFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACgKe9IV8B8hHsB
AAAqBgAAOgAYAAAAAAABAAAApIGa4gIAaHR0cC90ZXN0cy9tZWRpYS9obHMvdmlkZW8tY29udHJv
bHMtbGl2ZS1zdHJlYW0tc3RkZXJyLnR4dFVUBQADTNOIV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQA
AgAIAJsp70iuIUriywAAADcCAAAyABgAAAAAAAEAAACkgYnkAgBodHRwL3Rlc3RzL21lZGlhL21l
ZGlhLWRvY3VtZW50LXJlZmVyZXItc3RkZXJyLnR4dFVUBQADRtOIV3V4CwABBPUBAAAEFAAAAFBL
AQIeAxQAAgAIAJwp70glp4GBMQEAADQDAAAqABgAAAAAAAEAAACkgcDlAgBodHRwL3Rlc3RzL21l
ZGlhL21lZGlhLWRvY3VtZW50LXN0ZGVyci50eHRVVAUAA0jTiFd1eAsAAQT1AQAABBQAAABQSwEC
HgMUAAIACACgKe9I2KJ3fOwAAADGAwAAOQAYAAAAAAABAAAApIFV5wIAaHR0cC90ZXN0cy9tZWRp
YS9tZWRpYS1wbGF5LXN0cmVhbS1jaHVua2VkLWljeS1zdGRlcnIudHh0VVQFAANL04hXdXgLAAEE
9QEAAAQUAAAAUEsBAh4DCgAAAAAArynvSAAAAAAAAAAAAAAAAB4AGAAAAAAAAAAQAO1BtOgCAGh0
dHAvdGVzdHMvbWVkaWEvbWVkaWEtc291cmNlL1VUBQADadOIV3V4CwABBPUBAAAEFAAAAFBLAQIe
AxQAAgAIAKUp70gMkpw2UgEAAJIEAABCABgAAAAAAAEAAACkgQzpAgBodHRwL3Rlc3RzL21lZGlh
L21lZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1hcHBlbmQtYnVmZmVyLXN0ZGVyci50eHRVVAUAA1XT
iFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACmKe9I1Yze7zwBAAB5AwAAUAAYAAAAAAABAAAA
pIHa6gIAaHR0cC90ZXN0cy9tZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2UtY29uZmlnLWNo
YW5nZS1tcDQtdi1iaXRyYXRlLXN0ZGVyci50eHRVVAUAA1fTiFd1eAsAAQT1AQAABBQAAABQSwEC
HgMUAAIACACnKe9I08UlRjwBAAB5AwAAUgAYAAAAAAABAAAApIGg7AIAaHR0cC90ZXN0cy9tZWRp
YS9tZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2UtY29uZmlnLWNoYW5nZS1tcDQtdi1mcmFtZXJhdGUt
c3RkZXJyLnR4dFVUBQADWdOIV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAKsp70huIXdgiwAA
AJoAAAA5ABgAAAAAAAEAAACkgWjuAgBodHRwL3Rlc3RzL21lZGlhL21lZGlhLXNvdXJjZS9tZWRp
YXNvdXJjZS1wbGF5LXN0ZGVyci50eHRVVAUAA2LTiFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIA
CACtKe9IZCAVe6UAAAACAwAAOwAYAAAAAAABAAAApIFm7wIAaHR0cC90ZXN0cy9tZWRpYS9tZWRp
YS1zb3VyY2UvbWVkaWFzb3VyY2UtcmVtb3ZlLXN0ZGVyci50eHRVVAUAA2XTiFd1eAsAAQT1AQAA
BBQAAABQSwECHgMUAAIACACvKe9INY8wjaQAAADPAQAARgAYAAAAAAABAAAApIGA8AIAaHR0cC90
ZXN0cy9tZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2Utc291cmNlYnVmZmVyLW1vZGUtc3Rk
ZXJyLnR4dFVUBQADadOIV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAKAp70gQ65Gy7QAAAF8B
AAAtABgAAAAAAAEAAACkgaTxAgBodHRwL3Rlc3RzL21lZGlhL3BkZi1zZXJ2ZWQtYXMtcGRmLXN0
ZGVyci50eHRVVAUAA0vTiFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACgKe9IK4Wx6rsAAADs
AQAALwAYAAAAAAABAAAApIH48gIAaHR0cC90ZXN0cy9tZWRpYS9yZWxvYWQtYWZ0ZXItZGlhbG9n
LXN0ZGVyci50eHRVVAUAA0zTiFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAChKe9IuO72I0oB
AAAoAwAALwAYAAAAAAABAAAApIEc9AIAaHR0cC90ZXN0cy9tZWRpYS90ZXh0LXNlcnZlZC1hcy10
ZXh0LXN0ZGVyci50eHRVVAUAA03TiFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACiKe9I8l7B
DQ0BAAB4AwAANgAYAAAAAAABAAAApIHP9QIAaHR0cC90ZXN0cy9tZWRpYS90cmFjay1pbi1iYW5k
LWhscy1tZXRhZGF0YS1zdGRlcnIudHh0VVQFAANQ04hXdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAAC
AAgAoynvSL5qqCF5AQAAaAcAACYAGAAAAAAAAQAAAKSBTPcCAGh0dHAvdGVzdHMvbWVkaWEvdmlk
ZW8tYXV0aC1zdGRlcnIudHh0VVQFAANR04hXdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgApCnv
SNk0oSbkAAAArAIAAC0AGAAAAAAAAQAAAKSBJfkCAGh0dHAvdGVzdHMvbWVkaWEvdmlkZW8tZXJy
b3ItYWJvcnQtc3RkZXJyLnR4dFVUBQADU9OIV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAKQp
70hmUCSWEwEAAOMBAAA2ABgAAAAAAAEAAACkgXD6AgBodHRwL3Rlc3RzL21lZGlhL3ZpZGVvLWVy
cm9yLWRvZXMtbm90LWV4aXN0LXN0ZGVyci50eHRVVAUAA1PTiFd1eAsAAQT1AQAABBQAAABQSwEC
HgMUAAIACACkKe9IfSfXc8IAAAAkAwAALAAYAAAAAAABAAAApIHz+wIAaHR0cC90ZXN0cy9tZWRp
YS92aWRlby1sb2FkLXR3aWNlLXN0ZGVyci50eHRVVAUAA1TTiFd1eAsAAQT1AQAABBQAAABQSwEC
HgMUAAIACACkKe9Ia/5ay+IAAABsAwAALwAYAAAAAAABAAAApIEb/QIAaHR0cC90ZXN0cy9tZWRp
YS92aWRlby1wbGF5LXByb2dyZXNzLXN0ZGVyci50eHRVVAUAA1TTiFd1eAsAAQT1AQAABBQAAABQ
SwECHgMUAAIACACmKe9ITVYz9IMAAADAAAAAPQAYAAAAAAABAAAApIFm/gIAaHR0cC90ZXN0cy9t
ZWRpYS92aWRlby1wbGF5LXN0YWxsLWJlZm9yZS1tZXRhLWRhdGEtc3RkZXJyLnR4dFVUBQADWNOI
V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAKYp70ge8twIugAAAJIBAAArABgAAAAAAAEAAACk
gWD/AgBodHRwL3Rlc3RzL21lZGlhL3ZpZGVvLXF1ZXJ5LXVybC1zdGRlcnIudHh0VVQFAANY04hX
dXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgApynvSNVwVQfzAAAADAYAACoAGAAAAAAAAQAAAKSB
fwADAGh0dHAvdGVzdHMvbWVkaWEvdmlkZW8tcmVkaXJlY3Qtc3RkZXJyLnR4dFVUBQADWdOIV3V4
CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAKcp70isG52i2gAAAAYDAAArABgAAAAAAAEAAACkgdYB
AwBodHRwL3Rlc3RzL21lZGlhL3ZpZGVvLXVzZXJhZ2VudC1zdGRlcnIudHh0VVQFAANZ04hXdXgL
AAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAnCnvSAAAAAAAAAAAAAAAABUAGAAAAAAAAAAQAO1BFQMD
AGh0dHAvdGVzdHMvbWVzc2FnaW5nL1VUBQADR9OIV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAI
AJwp70ik6I4cgwAAAMAAAABDABgAAAAAAAEAAACkgWQDAwBodHRwL3Rlc3RzL21lc3NhZ2luZy9j
cm9zcy1kb21haW4tbWVzc2FnZS1ldmVudC1kaXNwYXRjaC1zdGRlcnIudHh0VVQFAANH04hXdXgL
AAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAyCnvSAAAAAAAAAAAAAAAABAAGAAAAAAAAAAQAO1BZAQD
AGh0dHAvdGVzdHMvbWlzYy9VVAUAA5jTiFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACnKe9I
XoT0aeYAAABiAQAALQAYAAAAAAABAAAApIGuBAMAaHR0cC90ZXN0cy9taXNjL2NvcHktcmVzb2x2
ZXMtdXJscy1zdGRlcnIudHh0VVQFAANZ04hXdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAqCnv
SOJ1jzHDAAAA/QAAAD8AGAAAAAAAAQAAAKSB+wUDAGh0dHAvdGVzdHMvbWlzYy9kZWxldGUtZnJh
bWUtZHVyaW5nLXJlYWR5c3RhdGVjaGFuZ2Utc3RkZXJyLnR4dFVUBQADXNOIV3V4CwABBPUBAAAE
FAAAAFBLAQIeAxQAAgAIAKgp70hxjSdjxAAAAP0AAABbABgAAAAAAAEAAACkgTcHAwBodHRwL3Rl
c3RzL21pc2MvZGVsZXRlLWZyYW1lLWR1cmluZy1yZWFkeXN0YXRlY2hhbmdlLXdpdGgtZ2MtYWZ0
ZXItdmlkZW8tcmVtb3ZhbC1zdGRlcnIudHh0VVQFAANb04hXdXgLAAEE9QEAAAQUAAAAUEsBAh4D
FAACAAgAyCnvSBU1NZJ6AAAAvAAAACoAGAAAAAAAAQAAAKSBkAgDAGh0dHAvdGVzdHMvbWlzYy94
c2x0LWJhZC1pbXBvcnQtc3RkZXJyLnR4dFVUBQADmNOIV3V4CwABBPUBAAAEFAAAAFBLAQIeAwoA
AAAAAKAp70gAAAAAAAAAAAAAAAATABgAAAAAAAAAEADtQW4JAwBodHRwL3Rlc3RzL3BsdWdpbnMv
VVQFAANM04hXdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAoCnvSP6EqX+CAAAAwAAAADYAGAAA
AAAAAQAAAKSBuwkDAGh0dHAvdGVzdHMvcGx1Z2lucy9jcmVhdGUtdjgtc2NyaXB0LW9iamVjdHMt
c3RkZXJyLnR4dFVUBQADTNOIV3V4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAL0p70gAAAAAAAAA
AAAAAAAUABgAAAAAAAAAEADtQa0KAwBodHRwL3Rlc3RzL3NlY3VyaXR5L1VUBQADhdOIV3V4CwAB
BPUBAAAEFAAAAFBLAQIeAxQAAgAIAKIp70ij5BrgyAAAAN0BAABVABgAAAAAAAEAAACkgfsKAwBo
dHRwL3Rlc3RzL3NlY3VyaXR5L2NhbnZhcy1yZW1vdGUtcmVhZC1yZW1vdGUtdmlkZW8tYmxvY2tl
ZC1uby1jcm9zc29yaWdpbi1zdGRlcnIudHh0VVQFAANQ04hXdXgLAAEE9QEAAAQUAAAAUEsBAh4D
FAACAAgAoinvSMOjklslAQAAuwIAAEgAGAAAAAAAAQAAAKSBUgwDAGh0dHAvdGVzdHMvc2VjdXJp
dHkvY2FudmFzLXJlbW90ZS1yZWFkLXJlbW90ZS12aWRlby1sb2NhbGhvc3Qtc3RkZXJyLnR4dFVU
BQADUNOIV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAKMp70iK4fBD5AAAAAYDAABHABgAAAAA
AAEAAACkgfkNAwBodHRwL3Rlc3RzL3NlY3VyaXR5L2NhbnZhcy1yZW1vdGUtcmVhZC1yZW1vdGUt
dmlkZW8tcmVkaXJlY3Qtc3RkZXJyLnR4dFVUBQADUdOIV3V4CwABBPUBAAAEFAAAAFBLAQIeAwoA
AAAAALUp70gAAAAAAAAAAAAAAAAqABgAAAAAAAAAEADtQV4PAwBodHRwL3Rlc3RzL3NlY3VyaXR5
L2NvbnRlbnRTZWN1cml0eVBvbGljeS9VVAUAA3XTiFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIA
CACiKe9IuYjfmtYAAAD4AQAASwAYAAAAAAABAAAApIHCDwMAaHR0cC90ZXN0cy9zZWN1cml0eS9j
b250ZW50U2VjdXJpdHlQb2xpY3kvYXVkaW8tcmVkaXJlY3QtYWxsb3dlZC1zdGRlcnIudHh0VVQF
AANP04hXdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAoSnvSPxKtfHmAAAAnQIAAEwAGAAAAAAA
AQAAAKSBHREDAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L2F1ZGlv
LXJlZGlyZWN0LWFsbG93ZWQyLXN0ZGVyci50eHRVVAUAA07TiFd1eAsAAQT1AQAABBQAAABQSwEC
HgMUAAIACACiKe9IH/3R4KcAAACKAQAAWAAYAAAAAAABAAAApIGJEgMAaHR0cC90ZXN0cy9zZWN1
cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvYmxvYi11cmwtZG9lcy1ub3QtbWF0Y2gtc291cmNl
LXNlbGYtc3RkZXJyLnR4dFVUBQADT9OIV3V4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAKQp70gA
AAAAAAAAAAAAAABEABgAAAAAAAAAEADtQcITAwBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRT
ZWN1cml0eVBvbGljeS91cGdyYWRlLWluc2VjdXJlLXJlcXVlc3RzL1VUBQADU9OIV3V4CwABBPUB
AAAEFAAAAFBLAQIeAxQAAgAIAKQp70gL5fml6AAAACYDAAB5ABgAAAAAAAEAAACkgUAUAwBodHRw
L3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS91cGdyYWRlLWluc2VjdXJlLXJl
cXVlc3RzL3VwZ3JhZGUtaW5zZWN1cmUtYXVkaW8tdmlkZW8taW4tbWFpbi1mcmFtZS1zdGRlcnIu
dHh0VVQFAANT04hXdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAApCnvSAAAAAAAAAAAAAAAAD0A
GAAAAAAAAAAQAO1B2xUDAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5
L3VzZXJBZ2VudFNoYWRvd0RPTS9VVAUAA1TTiFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACj
Ke9ITJTOP9YAAAD4AQAAUwAYAAAAAAABAAAApIFSFgMAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250
ZW50U2VjdXJpdHlQb2xpY3kvdXNlckFnZW50U2hhZG93RE9NL2FsbG93LWF1ZGlvLXN0ZGVyci50
eHRVVAUAA1HTiFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACkKe9Io/9yJrsAAACSAQAAUwAY
AAAAAAABAAAApIG1FwMAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kv
dXNlckFnZW50U2hhZG93RE9NL2FsbG93LXZpZGVvLXN0ZGVyci50eHRVVAUAA1PTiFd1eAsAAQT1
AQAABBQAAABQSwECHgMUAAIACACkKe9ImQVfM4MAAADAAAAAawAYAAAAAAABAAAApIH9GAMAaHR0
cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvdXNlckFnZW50U2hhZG93RE9N
L2RlZmF1bHQtc3JjLW9iamVjdC1kYXRhLXVybC1hbGxvd2VkLXN0ZGVyci50eHRVVAUAA1TTiFd1
eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACzKe9Iikru/N0AAABSAgAASwAYAAAAAAABAAAApIEl
GgMAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvdmlkZW8tcmVkaXJl
Y3QtYWxsb3dlZC1zdGRlcnIudHh0VVQFAANx04hXdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA
sinvSJZ1f6i7AAAAkgEAAEwAGAAAAAAAAQAAAKSBhxsDAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29u
dGVudFNlY3VyaXR5UG9saWN5L3ZpZGVvLXJlZGlyZWN0LWFsbG93ZWQyLXN0ZGVyci50eHRVVAUA
A3DTiFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACzKe9I7GJY6N0AAABSAgAAZgAYAAAAAAAB
AAAApIHIHAMAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvdmlkZW8t
d2l0aC1odHRwLXVybC1hbGxvd2VkLWJ5LWNzcC1tZWRpYS1zcmMtc3Rhci1zdGRlcnIudHh0VVQF
AANx04hXdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAsynvSNy/wH2DAAAAwAAAAFkAGAAAAAAA
AQAAAKSBRR4DAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3dvcmtl
ci1ibG9iLWluaGVyaXRzLWNzcC1ibG9ja3MtZXZhbC1zdGRlcnIudHh0VVQFAANx04hXdXgLAAEE
9QEAAAQUAAAAUEsBAh4DFAACAAgAtCnvSGOqrGyCAAAAqAAAAEAAGAAAAAAAAQAAAKSBWx8DAGh0
dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3hzbC1hbGxvd2VkLXN0ZGVy
ci50eHRVVAUAA3TTiFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAC1Ke9IY6qsbIIAAACoAAAA
UgAYAAAAAAABAAAApIFXIAMAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xp
Y3kveHNsLXVuYWZmZWN0ZWQtYnktc3R5bGUtc3JjLTItc3RkZXJyLnR4dFVUBQADddOIV3V4CwAB
BPUBAAAEFAAAAFBLAQIeAxQAAgAIAKMp70ikZw08ggAAAMAAAAA1ABgAAAAAAAEAAACkgWUhAwBo
dHRwL3Rlc3RzL3NlY3VyaXR5L2NvcnMtcG9zdC1yZWRpcmVjdC0zMDEtc3RkZXJyLnR4dFVUBQAD
UdOIV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAKsp70irePuhtQAAANwBAAA6ABgAAAAAAAEA
AACkgVYiAwBodHRwL3Rlc3RzL3NlY3VyaXR5L2Nyb3NzLW9yaWdpbi13ZWJzcWwtYWxsb3dlZC1z
dGRlcnIudHh0VVQFAANh04hXdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAqynvSN79uumvAAAA
7gAAADIAGAAAAAAAAQAAAKSBfyMDAGh0dHAvdGVzdHMvc2VjdXJpdHkvY3Jvc3Mtb3JpZ2luLXdl
YnNxbC1zdGRlcnIudHh0VVQFAANi04hXdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgArinvSIAp
bY66AAAAkgEAAD0AGAAAAAAAAQAAAKSBmiQDAGh0dHAvdGVzdHMvc2VjdXJpdHkvbG9jYWwtdmlk
ZW8tc291cmNlLWZyb20tcmVtb3RlLXN0ZGVyci50eHRVVAUAA2fTiFd1eAsAAQT1AQAABBQAAABQ
SwECHgMUAAIACACuKe9IWIqyF4MAAADAAAAAOgAYAAAAAAABAAAApIHLJQMAaHR0cC90ZXN0cy9z
ZWN1cml0eS9sb2NhbC12aWRlby1zcmMtZnJvbS1yZW1vdGUtc3RkZXJyLnR4dFVUBQADaNOIV3V4
CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAKUp70gAAAAAAAAAAAAAAAAhABgAAAAAAAAAEADtQcIm
AwBodHRwL3Rlc3RzL3NlY3VyaXR5L21peGVkQ29udGVudC9VVAUAA1bTiFd1eAsAAQT1AQAABBQA
AABQSwECHgMUAAIACAClKe9IRHphkuAAAAA+BAAATgAYAAAAAAABAAAApIEdJwMAaHR0cC90ZXN0
cy9zZWN1cml0eS9taXhlZENvbnRlbnQvaW5zZWN1cmUtYXVkaW8tdmlkZW8taW4tbWFpbi1mcmFt
ZS1zdGRlcnIudHh0VVQFAANW04hXdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgApSnvSHTN5ayC
AAAAwAAAAEIAGAAAAAAAAQAAAKSBhSgDAGh0dHAvdGVzdHMvc2VjdXJpdHkvbWl4ZWRDb250ZW50
L2luc2VjdXJlLWNzcy1pbi1pZnJhbWUtc3RkZXJyLnR4dFVUBQADVtOIV3V4CwABBPUBAAAEFAAA
AFBLAQIeAxQAAgAIALYp70je/brprwAAAO4AAAA/ABgAAAAAAAEAAACkgYMpAwBodHRwL3Rlc3Rz
L3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmctbG9vc2VuZWQtd2Vic3FsLXN0ZGVyci50eHRVVAUA
A3jTiFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAC3Ke9I3v266a8AAADuAAAAQwAYAAAAAAAB
AAAApIGrKgMAaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJsb2NraW5nLXN0cmVuZ3RoZW5l
ZC13ZWJzcWwtc3RkZXJyLnR4dFVUBQADedOIV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIALgp
70hpcwEx7gAAAJgEAAA5ABgAAAAAAAEAAACkgdcrAwBodHRwL3Rlc3RzL3NlY3VyaXR5L3ZpZGVv
LWNyb3NzLW9yaWdpbi1jYWNoaW5nLXN0ZGVyci50eHRVVAUAA3vTiFd1eAsAAQT1AQAABBQAAABQ
SwECHgMUAAIACAC4Ke9IovWwEBQBAADnAQAAPwAYAAAAAAABAAAApIE4LQMAaHR0cC90ZXN0cy9z
ZWN1cml0eS92aWRlby1wb3N0ZXItY3Jvc3Mtb3JpZ2luLWNyYXNoMi1zdGRlcnIudHh0VVQFAAN7
04hXdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAvSnvSGBLZhCRAAAA+wEAAEUAGAAAAAAAAQAA
AKSBxS4DAGh0dHAvdGVzdHMvc2VjdXJpdHkveHNzLURFTklFRC14c2wtZG9jdW1lbnQtc2VjdXJp
dHlPcmlnaW4tc3RkZXJyLnR4dFVUBQADhdOIV3V4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAKcp
70gAAAAAAAAAAAAAAAATABgAAAAAAAAAEADtQdUvAwBodHRwL3Rlc3RzL3N0b3JhZ2UvVVQFAANZ
04hXdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgApynvSN79uumvAAAA7gAAAEUAGAAAAAAAAQAA
AKSBIjADAGh0dHAvdGVzdHMvc3RvcmFnZS9jYWxsYmFja3MtYXJlLWNhbGxlZC1pbi1jb3JyZWN0
LWNvbnRleHQtc3RkZXJyLnR4dFVUBQADWdOIV3V4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAALUp
70gAAAAAAAAAAAAAAAAaABgAAAAAAAAAEADtQVAxAwBodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0
L1VUBQADdtOIV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIALUp70h+f+0XsQAAAAEBAABBABgA
AAAAAAEAAACkgaQxAwBodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3Bvc3QtYmxvYi1jb250ZW50
LXR5cGUtYXN5bmMtc3RkZXJyLnR4dFVUBQADddOIV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAI
ALUp70h+f+0XsQAAAAEBAABAABgAAAAAAAEAAACkgdAyAwBodHRwL3Rlc3RzL3htbGh0dHByZXF1
ZXN0L3Bvc3QtYmxvYi1jb250ZW50LXR5cGUtc3luYy1zdGRlcnIudHh0VVQFAAN204hXdXgLAAEE
9QEAAAQUAAAAUEsBAh4DFAACAAgAqCnvSOCf6c+HAAAAwAAAADwAGAAAAAAAAQAAAKSB+zMDAGh0
dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvWE1MSHR0cFJlcXVlc3RFeGNlcHRpb24tc3RkZXJyLnR4
dFVUBQADXNOIV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAMEq70g1E8aamQUAABEQAAAKABgA
AAAAAAEAAACkgfg0AwBodHRwZC5jb25mVVQFAANp1YhXdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAA
AAAAySnvSAAAAAAAAAAAAAAAAAkAGAAAAAAAAAAQAO1B1ToDAGltcG9ydGVkL1VUBQADmdOIV3V4
CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAMkp70gAAAAAAAAAAAAAAAANABgAAAAAAAAAEADtQRg7
AwBpbXBvcnRlZC93M2MvVVQFAAOZ04hXdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAzSnvSAAA
AAAAAAAAAAAAACAAGAAAAAAAAAAQAO1BXzsDAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvVVQFAAOh04hXdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAySnvSAAAAAAAAAAAAAAAACUA
GAAAAAAAAAAQAO1BuTsDAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9VVAUA
A5nTiFd1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAADJKe9IAAAAAAAAAAAAAAAALwAYAAAAAAAA
ABAA7UEYPAMAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9V
VAUAA5nTiFd1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAADLKe9IAAAAAAAAAAAAAAAAQAAYAAAA
AAAAABAA7UGBPAMAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGlj
cy9lbWJlZGRlZC1jb250ZW50L1VUBQADndOIV3V4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAN0p
70gAAAAAAAAAAAAAAABPABgAAAAAAAAAEADtQfs8AwBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvVVQF
AAPC04hXdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAySnvSCm3EafmAAAATAUAAGcAGAAAAAAA
AQAAAKSBhD0DAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3Mv
ZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9ldmVudF9jYW5wbGF5LXN0ZGVyci50eHRV
VAUAA5rTiFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADKKe9IXW8s4+gAAAD+BAAAcgAYAAAA
AAABAAAApIELPwMAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGlj
cy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL2V2ZW50X2NhbnBsYXlfbm9hdXRvcGxh
eS1zdGRlcnIudHh0VVQFAAOb04hXdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAyinvSEWGKenz
AAAADAYAAG4AGAAAAAAAAQAAAKSBn0ADAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
aHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9ldmVudF9jYW5w
bGF5dGhyb3VnaC1zdGRlcnIudHh0VVQFAAOc04hXdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA
yynvSJlItAHrAAAApAQAAHkAGAAAAAAAAQAAAKSBOkIDAGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9l
dmVudF9jYW5wbGF5dGhyb3VnaF9ub2F1dG9wbGF5LXN0ZGVyci50eHRVVAUAA53TiFd1eAsAAQT1
AQAABBQAAABQSwECHgMUAAIACADMKe9ILpH57+kAAAAMBgAAagAYAAAAAAABAAAApIHYQwMAaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250
ZW50L21lZGlhLWVsZW1lbnRzL2V2ZW50X2xvYWRlZGRhdGEtc3RkZXJyLnR4dFVUBQADn9OIV3V4
CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAMwp70jqMoa77gAAAKQEAAB1ABgAAAAAAAEAAACkgWVF
AwBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVk
LWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvZXZlbnRfbG9hZGVkZGF0YV9ub2F1dG9wbGF5LXN0ZGVy
ci50eHRVVAUAA6DTiFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADNKe9I9aXNgO0AAACkBAAA
bgAYAAAAAAABAAAApIECRwMAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3Nl
bWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL2V2ZW50X2xvYWRlZG1ldGFk
YXRhLXN0ZGVyci50eHRVVAUAA6HTiFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADNKe9IKgxq
U+4AAACkBAAAeQAYAAAAAAABAAAApIGXSAMAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL2V2ZW50X2xv
YWRlZG1ldGFkYXRhX25vYXV0b3BsYXktc3RkZXJyLnR4dFVUBQADotOIV3V4CwABBPUBAAAEFAAA
AFBLAQIeAxQAAgAIAM4p70h2CiJt7gAAAKQEAABpABgAAAAAAAEAAACkgThKAwBpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVk
aWEtZWxlbWVudHMvZXZlbnRfbG9hZHN0YXJ0LXN0ZGVyci50eHRVVAUAA6PTiFd1eAsAAQT1AQAA
BBQAAABQSwECHgMUAAIACADOKe9IOu6VbewAAACkBAAAdAAYAAAAAAABAAAApIHJSwMAaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50
L21lZGlhLWVsZW1lbnRzL2V2ZW50X2xvYWRzdGFydF9ub2F1dG9wbGF5LXN0ZGVyci50eHRVVAUA
A6TTiFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADPKe9IJrnTO+oAAAAMBgAAfAAYAAAAAAAB
AAAApIFjTQMAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9l
bWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL2V2ZW50X29yZGVyX2NhbnBsYXlfY2FucGxh
eXRocm91Z2gtc3RkZXJyLnR4dFVUBQADptOIV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIANAp
70hpzGwP8AAAAAwGAAB1ABgAAAAAAAEAAACkgQNPAwBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvZXZl
bnRfb3JkZXJfY2FucGxheV9wbGF5aW5nLXN0ZGVyci50eHRVVAUAA6fTiFd1eAsAAQT1AQAABBQA
AABQSwECHgMUAAIACADQKe9IbArPU/IAAAAMBgAAfwAYAAAAAAABAAAApIGiUAMAaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21l
ZGlhLWVsZW1lbnRzL2V2ZW50X29yZGVyX2xvYWRlZG1ldGFkYXRhX2xvYWRlZGRhdGEtc3RkZXJy
LnR4dFVUBQADqNOIV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIANEp70jF+u5V8AAAAAwGAAB4
ABgAAAAAAAEAAACkgU1SAwBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2Vt
YW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvZXZlbnRfb3JkZXJfbG9hZHN0
YXJ0X3Byb2dyZXNzLXN0ZGVyci50eHRVVAUAA6nTiFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIA
CADRKe9II8nCwvAAAAAMBgAAZQAYAAAAAAABAAAApIHvUwMAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRz
L2V2ZW50X3BhdXNlLXN0ZGVyci50eHRVVAUAA6rTiFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIA
CADSKe9IN7MKXe0AAACkBAAAcAAYAAAAAAABAAAApIF+VQMAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRz
L2V2ZW50X3BhdXNlX25vYXV0b3BsYXktc3RkZXJyLnR4dFVUBQADq9OIV3V4CwABBPUBAAAEFAAA
AFBLAQIeAxQAAgAIANIp70hEhBAH8AAAAAwGAABkABgAAAAAAAEAAACkgRVXAwBpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVk
aWEtZWxlbWVudHMvZXZlbnRfcGxheS1zdGRlcnIudHh0VVQFAAOs04hXdXgLAAEE9QEAAAQUAAAA
UEsBAh4DFAACAAgA0ynvSNkf59fsAAAApAQAAG8AGAAAAAAAAQAAAKSBo1gDAGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRp
YS1lbGVtZW50cy9ldmVudF9wbGF5X25vYXV0b3BsYXktc3RkZXJyLnR4dFVUBQADrdOIV3V4CwAB
BPUBAAAEFAAAAFBLAQIeAxQAAgAIANQp70hBuwzV7wAAAAwGAABnABgAAAAAAAEAAACkgThaAwBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNv
bnRlbnQvbWVkaWEtZWxlbWVudHMvZXZlbnRfcGxheWluZy1zdGRlcnIudHh0VVQFAAOv04hXdXgL
AAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA1CnvSOR1pGD0AAAADAYAAHIAGAAAAAAAAQAAAKSByFsD
AGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQt
Y29udGVudC9tZWRpYS1lbGVtZW50cy9ldmVudF9wbGF5aW5nX25vYXV0b3BsYXktc3RkZXJyLnR4
dFVUBQADsNOIV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIANUp70jLIl1Y7gAAAAwGAABoABgA
AAAAAAEAAACkgWhdAwBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50
aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvZXZlbnRfcHJvZ3Jlc3Mtc3RkZXJy
LnR4dFVUBQADsdOIV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIANUp70jiO2qr7QAAAKQEAABz
ABgAAAAAAAEAAACkgfheAwBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2Vt
YW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvZXZlbnRfcHJvZ3Jlc3Nfbm9h
dXRvcGxheS1zdGRlcnIudHh0VVQFAAOy04hXdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA1inv
SONyZa70AAAAZgYAAGoAGAAAAAAAAQAAAKSBkmADAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9ldmVu
dF90aW1ldXBkYXRlLXN0ZGVyci50eHRVVAUAA7PTiFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIA
CADXKe9IPvJLyvMAAAAMBgAAdQAYAAAAAAABAAAApIEqYgMAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRz
L2V2ZW50X3RpbWV1cGRhdGVfbm9hdXRvcGxheS1zdGRlcnIudHh0VVQFAAO104hXdXgLAAEE9QEA
AAQUAAAAUEsBAh4DFAACAAgA1ynvSNTIsfmCAAAAwAAAAGwAGAAAAAAAAQAAAKSBzGMDAGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVu
dC9tZWRpYS1lbGVtZW50cy9ldmVudF92b2x1bWVjaGFuZ2Utc3RkZXJyLnR4dFVUBQADtdOIV3V4
CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAMkp70gAAAAAAAAAAAAAAABaABgAAAAAAAAAEADtQfRk
AwBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVk
LWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvaW50ZXJmYWNlcy9VVAUAA5nTiFd1eAsAAQT1AQAABBQA
AABQSwECHgMKAAAAAADJKe9IAAAAAAAAAAAAAAAAZAAYAAAAAAAAABAA7UGIZQMAaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21l
ZGlhLWVsZW1lbnRzL2ludGVyZmFjZXMvVGV4dFRyYWNrL1VUBQADmtOIV3V4CwABBPUBAAAEFAAA
AFBLAQIeAxQAAgAIAMkp70hMQYrDygAAAN0BAAB5ABgAAAAAAAEAAACkgSZmAwBpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVk
aWEtZWxlbWVudHMvaW50ZXJmYWNlcy9UZXh0VHJhY2svYWN0aXZlQ3Vlcy1zdGRlcnIudHh0VVQF
AAOZ04hXdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAySnvSBmP4GaDAAAAwAAAAHUAGAAAAAAA
AQAAAKSBo2cDAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3Mv
ZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9pbnRlcmZhY2VzL1RleHRUcmFjay9hZGRD
dWUtc3RkZXJyLnR4dFVUBQADmtOIV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIANgp70h7wrqu
3gAAAOQDAAB3ABgAAAAAAAEAAACkgdVoAwBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvbmV0d29ya1N0
YXRlX2R1cmluZ19sb2Fkc3RhcnQtc3RkZXJyLnR4dFVUBQADt9OIV3V4CwABBPUBAAAEFAAAAFBL
AQIeAxQAAgAIANgp70i7y6MFgwAAAMAAAABuABgAAAAAAAEAAACkgWRqAwBpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEt
ZWxlbWVudHMvbmV0d29ya1N0YXRlX2luaXRpYWwtc3RkZXJyLnR4dFVUBQADt9OIV3V4CwABBPUB
AAAEFAAAAFBLAQIeAxQAAgAIANgp70gOsuTH5QAAAEwFAAByABgAAAAAAAEAAACkgY9rAwBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRl
bnQvbWVkaWEtZWxlbWVudHMvcGF1c2VkX2ZhbHNlX2R1cmluZ19wbGF5LXN0ZGVyci50eHRVVAUA
A7jTiFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADZKe9IRj512ekAAACkBAAAcgAYAAAAAAAB
AAAApIEgbQMAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9l
bWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL3BhdXNlZF90cnVlX2R1cmluZ19wYXVzZS1z
dGRlcnIudHh0VVQFAAO604hXdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAyinvSAAAAAAAAAAA
AAAAAGoAGAAAAAAAAAAQAO1BtW4DAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRt
bC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9wbGF5aW5nLXRoZS1t
ZWRpYS1yZXNvdXJjZS9VVAUAA5zTiFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADKKe9ItSGq
jg8BAABGAgAAkQAYAAAAAAABAAAApIFZbwMAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL3BsYXlpbmct
dGhlLW1lZGlhLXJlc291cmNlL3BhdXNlLW1vdmUtdG8tb3RoZXItZG9jdW1lbnQtc3RkZXJyLnR4
dFVUBQADm9OIV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAMop70h7GIp03wAAAKwCAACPABgA
AAAAAAEAAACkgTNxAwBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50
aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvcGxheWluZy10aGUtbWVkaWEtcmVz
b3VyY2UvcGF1c2UtbW92ZS13aXRoaW4tZG9jdW1lbnQtc3RkZXJyLnR4dFVUBQADnNOIV3V4CwAB
BPUBAAAEFAAAAFBLAQIeAxQAAgAIAMop70gt8NyfKAEAABUDAACPABgAAAAAAAEAAACkgdtyAwBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNv
bnRlbnQvbWVkaWEtZWxlbWVudHMvcGxheWluZy10aGUtbWVkaWEtcmVzb3VyY2UvcGF1c2UtcmVt
b3ZlLWZyb20tZG9jdW1lbnQtc3RkZXJyLnR4dFVUBQADnNOIV3V4CwABBPUBAAAEFAAAAFBLAQIe
AxQAAgAIAMop70gdmEnpgwAAABoBAACBABgAAAAAAAEAAACkgcx0AwBpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxl
bWVudHMvcGxheWluZy10aGUtbWVkaWEtcmVzb3VyY2UvcGxheWJhY2tSYXRlLXN0ZGVyci50eHRV
VAUAA5zTiFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADZKe9Iuf2tJ4IAAADAAAAAeAAYAAAA
AAABAAAApIEKdgMAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGlj
cy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL3ByZWxvYWRfcmVmbGVjdHNfbm9uZV9h
dXRvcGxheS1zdGRlcnIudHh0VVQFAAO604hXdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA2inv
SD5lz1TiAAAATAUAAHMAGAAAAAAAAQAAAKSBPncDAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9yZWFk
eVN0YXRlX2R1cmluZ19jYW5wbGF5LXN0ZGVyci50eHRVVAUAA7vTiFd1eAsAAQT1AQAABBQAAABQ
SwECHgMUAAIACADaKe9IrG3Rve8AAAAMBgAAegAYAAAAAAABAAAApIHNeAMAaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlh
LWVsZW1lbnRzL3JlYWR5U3RhdGVfZHVyaW5nX2NhbnBsYXl0aHJvdWdoLXN0ZGVyci50eHRVVAUA
A7zTiFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADbKe9IWEl2fvEAAAAMBgAAdgAYAAAAAAAB
AAAApIFwegMAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9l
bWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL3JlYWR5U3RhdGVfZHVyaW5nX2xvYWRlZGRh
dGEtc3RkZXJyLnR4dFVUBQADvtOIV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIANwp70ipeNBB
7gAAAP4EAAB6ABgAAAAAAAEAAACkgRF8AwBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvcmVhZHlTdGF0
ZV9kdXJpbmdfbG9hZGVkbWV0YWRhdGEtc3RkZXJyLnR4dFVUBQADv9OIV3V4CwABBPUBAAAEFAAA
AFBLAQIeAxQAAgAIANwp70i+tn5g7wAAAAwGAABzABgAAAAAAAEAAACkgbN9AwBpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVk
aWEtZWxlbWVudHMvcmVhZHlTdGF0ZV9kdXJpbmdfcGxheWluZy1zdGRlcnIudHh0VVQFAAPA04hX
dXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA3SnvSEn+6viDAAAAwAAAAGwAGAAAAAAAAQAAAKSB
T38DAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRk
ZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9yZWFkeVN0YXRlX2luaXRpYWwtc3RkZXJyLnR4dFVU
BQADwdOIV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAN0p70iws+jE3QAAAMICAACEABgAAAAA
AAEAAACkgXiAAwBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNz
L2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvc3JjX3JlZmxlY3RzX2F0dHJpYnV0ZV9u
b3Rfc291cmNlX2VsZW1lbnRzLXN0ZGVyci50eHRVVAUAA8HTiFd1eAsAAQT1AQAABBQAAABQSwEC
HgMKAAAAAADKKe9IAAAAAAAAAAAAAAAAVQAYAAAAAAAAABAA7UETggMAaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVs
ZW1lbnRzL3RyYWNrL1VUBQADnNOIV3V4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAMop70gAAAAA
AAAAAAAAAABjABgAAAAAAAAAEADtQaKCAwBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvdHJhY2svdHJh
Y2stZWxlbWVudC9VVAUAA5zTiFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADKKe9ITt5WsrMA
AACDAQAAggAYAAAAAAABAAAApIE/gwMAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9o
dG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL3RyYWNrL3RyYWNr
LWVsZW1lbnQvdHJhY2stYXBpLXRleHR0cmFja3Mtc3RkZXJyLnR4dFVUBQADnNOIV3V4CwABBPUB
AAAEFAAAAFBLAQIeAxQAAgAIAN0p70h6MHTXvAAAAOwBAABjABgAAAAAAAEAAACkga6EAwBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRl
bnQvbWVkaWEtZWxlbWVudHMvdmlkZW9fMDA4LXN0ZGVyci50eHRVVAUAA8HTiFd1eAsAAQT1AQAA
BBQAAABQSwECHgMUAAIACADdKe9I28jJxIYAAADAAAAAbAAYAAAAAAABAAAApIEHhgMAaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50
L21lZGlhLWVsZW1lbnRzL3ZpZGVvX3ZvbHVtZV9jaGVjay1zdGRlcnIudHh0VVQFAAPC04hXdXgL
AAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAyinvSAAAAAAAAAAAAAAAAFEAGAAAAAAAAAAQAO1BM4cD
AGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQt
Y29udGVudC90aGUtYXJlYS1lbGVtZW50L1VUBQADnNOIV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQA
AgAIAMop70g5aZtKggAAAMAAAABrABgAAAAAAAEAAACkgb6HAwBpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvdGhlLWFyZWEtZWxl
bWVudC9hcmVhLXByb2Nlc3Npbmctc3RkZXJyLnR4dFVUBQADnNOIV3V4CwABBPUBAAAEFAAAAFBL
AQIeAwoAAAAAAMsp70gAAAAAAAAAAAAAAABSABgAAAAAAAAAEADtQeWIAwBpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvdGhlLWF1
ZGlvLWVsZW1lbnQvVVQFAAOd04hXdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAyynvSLEVWrHe
AAAA0AIAAG4AGAAAAAAAAQAAAKSBcYkDAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
aHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC90aGUtYXVkaW8tZWxlbWVudC9hdWRpb19j
b25zdHJ1Y3Rvci1zdGRlcnIudHh0VVQFAAOd04hXdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAA
4SnvSAAAAAAAAAAAAAAAACoAGAAAAAAAAAAQAO1B94oDAGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvSW5kZXhlZERCL1VUBQADxtOIV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAM0p
70jCF/UVogAAAE8CAABGABgAAAAAAAEAAACkgVuLAwBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL0luZGV4ZWREQi9pZGJmYWN0b3J5X29wZW4xMS1zdGRlcnIudHh0VVQFAAOh04hXdXgL
AAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAzinvSLxxbNWZAAAAxQAAAEMAGAAAAAAAAQAAAKSBfYwD
AGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvSW5kZXhlZERCL2lkYmluZGV4X2NvdW50
LXN0ZGVyci50eHRVVAUAA6PTiFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADOKe9IvHFs1ZkA
AADFAAAARAAYAAAAAAABAAAApIGTjQMAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9J
bmRleGVkREIvaWRiaW5kZXhfY291bnQyLXN0ZGVyci50eHRVVAUAA6PTiFd1eAsAAQT1AQAABBQA
AABQSwECHgMUAAIACADOKe9IvHFs1ZkAAADFAAAARAAYAAAAAAABAAAApIGqjgMAaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9JbmRleGVkREIvaWRiaW5kZXhfY291bnQzLXN0ZGVyci50
eHRVVAUAA6PTiFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADTKe9IvHFs1ZkAAADFAAAASQAY
AAAAAAABAAAApIHBjwMAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9JbmRleGVkREIv
aWRib2JqZWN0c3RvcmVfY291bnQtc3RkZXJyLnR4dFVUBQADrtOIV3V4CwABBPUBAAAEFAAAAFBL
AQIeAxQAAgAIANMp70i8cWzVmQAAAMUAAABKABgAAAAAAAEAAACkgd2QAwBpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL0luZGV4ZWREQi9pZGJvYmplY3RzdG9yZV9jb3VudDItc3RkZXJy
LnR4dFVUBQADrdOIV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIANMp70gEiukDnwAAAIoBAABK
ABgAAAAAAAEAAACkgfqRAwBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL0luZGV4ZWRE
Qi9pZGJvYmplY3RzdG9yZV9jb3VudDMtc3RkZXJyLnR4dFVUBQADrtOIV3V4CwABBPUBAAAEFAAA
AFBLAQIeAxQAAgAIANYp70i8cWzVmQAAAMUAAABLABgAAAAAAAEAAACkgR2TAwBpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL0luZGV4ZWREQi9pZGJvYmplY3RzdG9yZV9kZWxldGU1LXN0
ZGVyci50eHRVVAUAA7PTiFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADZKe9IvHFs1ZkAAADF
AAAATgAYAAAAAAABAAAApIE7lAMAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9JbmRl
eGVkREIvaWRidHJhbnNhY3Rpb24tb25jb21wbGV0ZS1zdGRlcnIudHh0VVQFAAO604hXdXgLAAEE
9QEAAAQUAAAAUEsBAh4DFAACAAgA4CnvSASK6QOfAAAAigEAAFgAGAAAAAAAAQAAAKSBXJUDAGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvSW5kZXhlZERCL3RyYW5zYWN0aW9uLWNyZWF0
ZV9pbl92ZXJzaW9uY2hhbmdlLXN0ZGVyci50eHRVVAUAA8TTiFd1eAsAAQT1AQAABBQAAABQSwEC
HgMUAAIACADhKe9IvHFs1ZkAAADFAAAARgAYAAAAAAABAAAApIGNlgMAaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9JbmRleGVkREIvd3JpdGVyLXN0YXJ2YXRpb24tc3RkZXJyLnR4dFVU
BQADxtOIV3V4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAOEp70gAAAAAAAAAAAAAAAAKABgAAAAA
AAAAEADtQaaXAwBpbnNwZWN0b3IvVVQFAAPF04hXdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAA
4SnvSAAAAAAAAAAAAAAAABMAGAAAAAAAAAAQAO1B6pcDAGluc3BlY3Rvci9kZWJ1Z2dlci9VVAUA
A8XTiFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADhKe9IYb/VpkMLAADi3wAAQQAYAAAAAAAB
AAAApIE3mAMAaW5zcGVjdG9yL2RlYnVnZ2VyL2JyZWFrLW9uLWV4Y2VwdGlvbi10aHJvdy1pbi1w
cm9taXNlLXN0ZGVyci50eHRVVAUAA8XTiFd1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAABYKu9I
AAAAAAAAAAAAAAAAAwAYAAAAAAAAABAA7UH1owMAanMvVVQFAAOn1IhXdXgLAAEE9QEAAAQUAAAA
UEsBAh4DCgAAAAAABCrvSAAAAAAAAAAAAAAAAAcAGAAAAAAAAAAQAO1BMqQDAGpzL2RvbS9VVAUA
AwfUiFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADnKe9I3v266a8AAADuAAAANQAYAAAAAAAB
AAAApIFzpAMAanMvZG9tL2NhbGxiYWNrLWZ1bmN0aW9uLXdpdGgtaGFuZGxlLWV2ZW50LXN0ZGVy
ci50eHRVVAUAA9LTiFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAEKu9I3v266a8AAADuAAAA
MAAYAAAAAAABAAAApIGRpQMAanMvZG9tL2V4Y2VwdGlvbnMtdGhyb3duLWluLWNhbGxiYWNrcy1z
dGRlcnIudHh0VVQFAAMH1IhXdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAWCrvSAAAAAAAAAAA
AAAAAAsAGAAAAAAAAAAQAO1BqqYDAGpzL3JlZ3Jlc3MvVVQFAAOn1IhXdXgLAAEE9QEAAAQUAAAA
UEsBAh4DFAACAAgA6CrvSHyV1DbZQQAA7ykBADoAGAAAAAAAAQAAAKSB76YDAGpzL3JlZ3Jlc3Mv
Z2VuZXJhdG9yLXN1bnNwaWRlci1hY2Nlc3MtbnNpZXZlLWNyYXNoLWxvZy50eHRVVAUAA7PViFd1
eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABYKu9IFmRr8TcDAAD6BwAANwAYAAAAAAABAAAApIE8
6QMAanMvcmVncmVzcy9nZW5lcmF0b3Itc3Vuc3BpZGVyLWFjY2Vzcy1uc2lldmUtc3RkZXJyLnR4
dFVUBQADp9SIV3V4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAGAq70gAAAAAAAAAAAAAAAAGABgA
AAAAAAAAEADtQeTsAwBtZWRpYS9VVAUAA7PUiFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADr
Ke9IZqQUMdkAAABSAgAAHwAYAAAAAAABAAAApIEk7QMAbWVkaWEvYXVkaW8tZGF0YS11cmwtc3Rk
ZXJyLnR4dFVUBQAD2dOIV3V4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAPQp70gAAAAAAAAAAAAA
AAATABgAAAAAAAAAEADtQVbuAwBtZWRpYS9tZWRpYS1zb3VyY2UvVVQFAAPr04hXdXgLAAEE9QEA
AAQUAAAAUEsBAh4DFAACAAgA9CnvSB4vVQ6LAAAAmwAAAEgAGAAAAAAAAQAAAKSBo+4DAG1lZGlh
L21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2Utc3RhbGxlZC1ob2xkcy1zbGVlcC1hc3NlcnRpb24t
c3RkZXJyLnR4dFVUBQAD69OIV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIABcq70hCcoClwQAA
ACQDAAAoABgAAAAAAAEAAACkgbDvAwBtZWRpYS9zb3VyY2VzLWZhbGxiYWNrLWNvZGVjcy1zdGRl
cnIudHh0VVQFAAMu1IhXdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAGCrvSMID3HaKAAAAgAEA
ADAAGAAAAAAAAQAAAKSB0/ADAG1lZGlhL3N2Zy1hcy1pbWFnZS13aXRoLW1lZGlhLWJsb2NrZWQt
c3RkZXJyLnR4dFVUBQADL9SIV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIABkq70jPTinSkAAA
AL0AAAAhABgAAAAAAAEAAACkgcfxAwBtZWRpYS91bnN1cHBvcnRlZC1ydHNwLXN0ZGVyci50eHRV
VAUAAzHUiFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABdKu9IpfwskLsAAACSAQAAHwAYAAAA
AAABAAAApIGy8gMAbWVkaWEvdmlkZW8tc3JjLWJsb2Itc3RkZXJyLnR4dFVUBQADstSIV3V4CwAB
BPUBAAAEFAAAAFBLAQIeAxQAAgAIAGAq70gWQlUTgwAAAMAAAAAhABgAAAAAAAEAAACkgcbzAwBt
ZWRpYS92aWRlby1zcmMtY2hhbmdlLXN0ZGVyci50eHRVVAUAA7PUiFd1eAsAAQT1AQAABBQAAABQ
SwECHgMKAAAAAAD4Ke9IAAAAAAAAAAAAAAAACAAYAAAAAAAAABAA7UGk9AMAcGx1Z2lucy9VVAUA
A/PTiFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAD4Ke9IfFC2mq4AAADxAAAALwAYAAAAAAAB
AAAApIHm9AMAcGx1Z2lucy9tb3VzZS1jbGljay1pZnJhbWUtdG8tcGx1Z2luLXN0ZGVyci50eHRV
VAUAA/PTiFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAC1Ke9I/yN/8WcCAACiFQAAGgAYAAAA
AAABAAAApIH99QMAcHl3ZWJzb2NrZXQud3MubG9nLWVyci50eHRVVAUAA3bTiFd1eAsAAQT1AQAA
BBQAAABQSwECHgMUAAIACAC1Ke9IqHb0TQgBAACPAgAAGgAYAAAAAAABAAAApIG4+AMAcHl3ZWJz
b2NrZXQud3MubG9nLW91dC50eHRVVAUAA3bTiFd1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAAA7
Ke9IAAAAAAAAAAAAAAAAGwAYAAAAAAAAAAAApIEU+gMAcHl3ZWJzb2NrZXQud3NzLmxvZy1lcnIu
dHh0VVQFAAOS0ohXdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAOynvSAAAAAAAAAAAAAAAABsA
GAAAAAAAAAAAAKSBafoDAHB5d2Vic29ja2V0Lndzcy5sb2ctb3V0LnR4dFVUBQADktKIV3V4CwAB
BPUBAAAEFAAAAFBLAQIeAxQAAgAIAOkq70i+eo+yTicAAMepAAAMABgAAAAAAAEAAACkgb76AwBy
ZXN1bHRzLmh0bWxVVAUAA7XViFd1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAADnKu9IAAAAAAAA
AAAAAAAACAAYAAAAAAAAABAA7UFSIgQAcmV0cmllcy9VVAUAA7LViFd1eAsAAQT1AQAABBQAAABQ
SwECHgMKAAAAAADUKu9IAAAAAAAAAAAAAAAACwAYAAAAAAAAABAA7UGUIgQAcmV0cmllcy9qcy9V
VAUAA5DViFd1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAADUKu9IAAAAAAAAAAAAAAAAEwAYAAAA
AAAAABAA7UHZIgQAcmV0cmllcy9qcy9yZWdyZXNzL1VUBQADkNWIV3V4CwABBPUBAAAEFAAAAFBL
AQIeAxQAAgAIANQq70h8ldQ22UEAAO8pAQBCABgAAAAAAAEAAACkgSYjBAByZXRyaWVzL2pzL3Jl
Z3Jlc3MvZ2VuZXJhdG9yLXN1bnNwaWRlci1hY2Nlc3MtbnNpZXZlLWNyYXNoLWxvZy50eHRVVAUA
A5DViFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADUKu9I8WrqkzcDAAD6BwAAPwAYAAAAAAAB
AAAApIF7ZQQAcmV0cmllcy9qcy9yZWdyZXNzL2dlbmVyYXRvci1zdW5zcGlkZXItYWNjZXNzLW5z
aWV2ZS1zdGRlcnIudHh0VVQFAAOQ1YhXdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAA5yrvSAAA
AAAAAAAAAAAAABAAGAAAAAAAAAAQAO1BK2kEAHJldHJpZXMvc3RvcmFnZS9VVAUAA7LViFd1eAsA
AQT1AQAABBQAAABQSwECHgMKAAAAAADnKu9IAAAAAAAAAAAAAAAAGgAYAAAAAAAAABAA7UF1aQQA
cmV0cmllcy9zdG9yYWdlL2luZGV4ZWRkYi9VVAUAA7LViFd1eAsAAQT1AQAABBQAAABQSwECHgMK
AAAAAADnKu9IAAAAAAAAAAAAAAAAIQAYAAAAAAAAABAA7UHJaQQAcmV0cmllcy9zdG9yYWdlL2lu
ZGV4ZWRkYi9tb2Rlcm4vVVQFAAOy1YhXdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA5yrvSHbC
gQwwPwAAMSgBADoAGAAAAAAAAQAAAKSBJGoEAHJldHJpZXMvc3RvcmFnZS9pbmRleGVkZGIvbW9k
ZXJuL2Jsb2ItY3Vyc29yLWNyYXNoLWxvZy50eHRVVAUAA7LViFd1eAsAAQT1AQAABBQAAABQSwEC
HgMUAAIACADnKu9Ig8vGPDcDAAD6BwAANwAYAAAAAAABAAAApIHIqQQAcmV0cmllcy9zdG9yYWdl
L2luZGV4ZWRkYi9tb2Rlcm4vYmxvYi1jdXJzb3Itc3RkZXJyLnR4dFVUBQADstWIV3V4CwABBPUB
AAAEFAAAAFBLAQIeAxQAAgAIAOgq70jxcmI7hbwIABKoLgAKABgAAAAAAAEAAACkgXCtBABzdGF0
cy5qc29uVVQFAAO01YhXdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAIirvSAAAAAAAAAAAAAAA
AAgAGAAAAAAAAAAQAO1BOWoNAHN0b3JhZ2UvVVQFAANA1IhXdXgLAAEE9QEAAAQUAAAAUEsBAh4D
CgAAAAAAdSrvSAAAAAAAAAAAAAAAABIAGAAAAAAAAAAQAO1Be2oNAHN0b3JhZ2UvaW5kZXhlZGRi
L1VUBQAD3dSIV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIADwq70jCF/UVogAAAE8CAAApABgA
AAAAAAEAAACkgcdqDQBzdG9yYWdlL2luZGV4ZWRkYi9pbmRleC1iYXNpY3Mtc3RkZXJyLnR4dFVU
BQADc9SIV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIADwq70jCF/UVogAAAE8CAAAxABgAAAAA
AAEAAACkgcxrDQBzdG9yYWdlL2luZGV4ZWRkYi9pbmRleC1iYXNpY3Mtd29ya2Vycy1zdGRlcnIu
dHh0VVQFAANz1IhXdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAPSrvSLYLDNuvAAAAAQoAACgA
GAAAAAAAAQAAAKSB2WwNAHN0b3JhZ2UvaW5kZXhlZGRiL2luZGV4LWNvdW50LXN0ZGVyci50eHRV
VAUAA3XUiFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABCKu9I/P1/XqMAAAAUAwAALQAYAAAA
AAABAAAApIHqbQ0Ac3RvcmFnZS9pbmRleGVkZGIvaW5kZXgtbXVsdGllbnRyeS1zdGRlcnIudHh0
VVQFAAN81IhXdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAQyrvSLxxbNWZAAAAxQAAAC0AGAAA
AAAAAQAAAKSB9G4NAHN0b3JhZ2UvaW5kZXhlZGRiL2luZGV4LXBvcHVsYXRpb24tc3RkZXJyLnR4
dFVUBQADfdSIV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAEYq70gRw4Y4tgUAAEwwAABFABgA
AAAAAAAAAACkgfRvDQBzdG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9uLW9wZW4taW4tdXBncmFk
ZW5lZWRlZC1wcml2YXRlLXN0ZGVyci50eHRVVAUAA4PUiFd1eAsAAQT1AQAABBQAAABQSwECHgMU
AAIACABGKu9Iivhg6NIFAABiMwAAPQAYAAAAAAAAAAAApIEpdg0Ac3RvcmFnZS9pbmRleGVkZGIv
aW50dmVyc2lvbi1vcGVuLWluLXVwZ3JhZGVuZWVkZWQtc3RkZXJyLnR4dFVUBQADg9SIV3V4CwAB
BPUBAAAEFAAAAFBLAQIeAxQAAgAIAEYq70hA58ZKQQQAACQXAABBABgAAAAAAAAAAACkgXJ8DQBz
dG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9uLW9wZW4td2l0aC12ZXJzaW9uLXByaXZhdGUtc3Rk
ZXJyLnR4dFVUBQADhNSIV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAEYq70jLVZQuOwQAAMQW
AAA5ABgAAAAAAAAAAACkgS6BDQBzdG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9uLW9wZW4td2l0
aC12ZXJzaW9uLXN0ZGVyci50eHRVVAUAA4TUiFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABG
Ku9I+L8vawAFAAB/OAAAUQAYAAAAAAAAAAAApIHchQ0Ac3RvcmFnZS9pbmRleGVkZGIvaW50dmVy
c2lvbi1wZW5kaW5nLXZlcnNpb24tY2hhbmdlcy1hc2NlbmRpbmctcHJpdmF0ZS1zdGRlcnIudHh0
VVQFAAOE1IhXdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgARyrvSCwO5SYaBQAAwTkAAEkAGAAA
AAAAAAAAAKSBZ4sNAHN0b3JhZ2UvaW5kZXhlZGRiL2ludHZlcnNpb24tcGVuZGluZy12ZXJzaW9u
LWNoYW5nZXMtYXNjZW5kaW5nLXN0ZGVyci50eHRVVAUAA4XUiFd1eAsAAQT1AQAABBQAAABQSwEC
HgMUAAIACABHKu9I9wqNR9sEAAAKLAAAUgAYAAAAAAAAAAAApIEEkQ0Ac3RvcmFnZS9pbmRleGVk
ZGIvaW50dmVyc2lvbi1wZW5kaW5nLXZlcnNpb24tY2hhbmdlcy1kZXNjZW5kaW5nLXByaXZhdGUt
c3RkZXJyLnR4dFVUBQADhdSIV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAEcq70grLWHOAwUA
APgpAABKABgAAAAAAAAAAACkgWuWDQBzdG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9uLXBlbmRp
bmctdmVyc2lvbi1jaGFuZ2VzLWRlc2NlbmRpbmctc3RkZXJyLnR4dFVUBQADhdSIV3V4CwABBPUB
AAAEFAAAAFBLAQIeAxQAAgAIAEcq70jNZvMIvwQAACYpAABMABgAAAAAAAAAAACkgfKbDQBzdG9y
YWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9uLXBlbmRpbmctdmVyc2lvbi1jaGFuZ2VzLXNhbWUtcHJp
dmF0ZS1zdGRlcnIudHh0VVQFAAOF1IhXdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgARyrvSJA3
d1YABQAALi0AAEQAGAAAAAAAAAAAAKSBN6ENAHN0b3JhZ2UvaW5kZXhlZGRiL2ludHZlcnNpb24t
cGVuZGluZy12ZXJzaW9uLWNoYW5nZXMtc2FtZS1zdGRlcnIudHh0VVQFAAOG1IhXdXgLAAEE9QEA
AAQUAAAAUEsBAh4DFAACAAgARyrvSMM8BIQPBAAANxoAADsAGAAAAAAAAAAAAKSBtaYNAHN0b3Jh
Z2UvaW5kZXhlZGRiL2ludHZlcnNpb24tcGVyc2lzdGVuY2UtcHJpdmF0ZS1zdGRlcnIudHh0VVQF
AAOG1IhXdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgARyrvSP53NIzjAwAA/RcAADMAGAAAAAAA
AAAAAKSBOasNAHN0b3JhZ2UvaW5kZXhlZGRiL2ludHZlcnNpb24tcGVyc2lzdGVuY2Utc3RkZXJy
LnR4dFVUBQADhtSIV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAEgq70gN1+aNOwUAABwqAAA/
ABgAAAAAAAAAAACkgYmvDQBzdG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJzaW9uLXJldmVydC1vbi1h
Ym9ydC1wcml2YXRlLXN0ZGVyci50eHRVVAUAA4fUiFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIA
CABIKu9IoBBDsTYFAACvKwAANwAYAAAAAAAAAAAApIE9tQ0Ac3RvcmFnZS9pbmRleGVkZGIvaW50
dmVyc2lvbi1yZXZlcnQtb24tYWJvcnQtc3RkZXJyLnR4dFVUBQADh9SIV3V4CwABBPUBAAAEFAAA
AFBLAQIeAxQAAgAIAEgq70jhvU2S5wMAAJYYAABFABgAAAAAAAAAAACkgeS6DQBzdG9yYWdlL2lu
ZGV4ZWRkYi9pbnR2ZXJzaW9uLXR3by1vcGVucy1uby12ZXJzaW9ucy1wcml2YXRlLXN0ZGVyci50
eHRVVAUAA4fUiFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABIKu9Ik8MkhxEEAAD9GQAAPQAY
AAAAAAAAAAAApIFKvw0Ac3RvcmFnZS9pbmRleGVkZGIvaW50dmVyc2lvbi10d28tb3BlbnMtbm8t
dmVyc2lvbnMtc3RkZXJyLnR4dFVUBQADiNSIV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAEgq
70jp8paTIAUAAM9BAAA4ABgAAAAAAAAAAACkgdLDDQBzdG9yYWdlL2luZGV4ZWRkYi9pbnR2ZXJz
aW9uLXVwZ3JhZGVzLXByaXZhdGUtc3RkZXJyLnR4dFVUBQADiNSIV3V4CwABBPUBAAAEFAAAAFBL
AQIeAxQAAgAIAEkq70ipOLWqSAUAAF1EAAAwABgAAAAAAAAAAACkgWTJDQBzdG9yYWdlL2luZGV4
ZWRkYi9pbnR2ZXJzaW9uLXVwZ3JhZGVzLXN0ZGVyci50eHRVVAUAA4nUiFd1eAsAAQT1AQAABBQA
AABQSwECHgMUAAIACABJKu9ItgSf2igDAADlEAAAMQAYAAAAAAAAAAAApIEWzw0Ac3RvcmFnZS9p
bmRleGVkZGIvaW52YWxpZC1rZXlzLXByaXZhdGUtc3RkZXJyLnR4dFVUBQADidSIV3V4CwABBPUB
AAAEFAAAAFBLAQIeAxQAAgAIAEkq70jeNC4TtAMAAKcSAAApABgAAAAAAAAAAACkganSDQBzdG9y
YWdlL2luZGV4ZWRkYi9pbnZhbGlkLWtleXMtc3RkZXJyLnR4dFVUBQADitSIV3V4CwABBPUBAAAE
FAAAAFBLAQIeAxQAAgAIAEoq70h4aWH70QsAAKeZAQAyABgAAAAAAAAAAACkgcDWDQBzdG9yYWdl
L2luZGV4ZWRkYi9rZXktZ2VuZXJhdG9yLXByaXZhdGUtc3RkZXJyLnR4dFVUBQADi9SIV3V4CwAB
BPUBAAAEFAAAAFBLAQIeAxQAAgAIAEoq70h5GFnxCAwAADWeAQAqABgAAAAAAAAAAACkgf3iDQBz
dG9yYWdlL2luZGV4ZWRkYi9rZXktZ2VuZXJhdG9yLXN0ZGVyci50eHRVVAUAA4zUiFd1eAsAAQT1
AQAABBQAAABQSwECHgMUAAIACABKKu9I3GOrFPwEAAA3NQAAQAAYAAAAAAAAAAAApIFp7w0Ac3Rv
cmFnZS9pbmRleGVkZGIva2V5LXNvcnQtb3JkZXItYWNyb3NzLXR5cGVzLXByaXZhdGUtc3RkZXJy
LnR4dFVUBQADjNSIV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAEsq70ibZJ27uAUAACw1AAA4
ABgAAAAAAAAAAACkgd/0DQBzdG9yYWdlL2luZGV4ZWRkYi9rZXktc29ydC1vcmRlci1hY3Jvc3Mt
dHlwZXMtc3RkZXJyLnR4dFVUBQADjdSIV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAEsq70hS
VGKYNgUAAEctAAA4ABgAAAAAAAAAAACkgQn7DQBzdG9yYWdlL2luZGV4ZWRkYi9rZXktc29ydC1v
cmRlci1kYXRlLXByaXZhdGUtc3RkZXJyLnR4dFVUBQADjdSIV3V4CwABBPUBAAAEFAAAAFBLAQIe
AxQAAgAIAEsq70ioSGlXoQUAAAgvAAAwABgAAAAAAAAAAACkgbEADgBzdG9yYWdlL2luZGV4ZWRk
Yi9rZXktc29ydC1vcmRlci1kYXRlLXN0ZGVyci50eHRVVAUAA43UiFd1eAsAAQT1AQAABBQAAABQ
SwECHgMUAAIACABMKu9I9Y+eM8sHAADCtAAAMwAYAAAAAAAAAAAApIG8Bg4Ac3RvcmFnZS9pbmRl
eGVkZGIva2V5LXR5cGUtYXJyYXktcHJpdmF0ZS1zdGRlcnIudHh0VVQFAAOP1IhXdXgLAAEE9QEA
AAQUAAAAUEsBAh4DFAACAAgATSrvSNG7j6KoBwAAnLgAACsAGAAAAAAAAAAAAKSB9A4OAHN0b3Jh
Z2UvaW5kZXhlZGRiL2tleS10eXBlLWFycmF5LXN0ZGVyci50eHRVVAUAA5HUiFd1eAsAAQT1AQAA
BBQAAABQSwECHgMUAAIACABNKu9I7PQu0OoEAAA6JAAANAAYAAAAAAAAAAAApIEBFw4Ac3RvcmFn
ZS9pbmRleGVkZGIva2V5LXR5cGUtYmluYXJ5LXByaXZhdGUtc3RkZXJyLnR4dFVUBQADkdSIV3V4
CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAE0q70iuxzpY8AQAAFokAAAsABgAAAAAAAAAAACkgVkc
DgBzdG9yYWdlL2luZGV4ZWRkYi9rZXktdHlwZS1iaW5hcnktc3RkZXJyLnR4dFVUBQADktSIV3V4
CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAE0q70gT8+hGLQQAAKAXAAA2ABgAAAAAAAAAAACkga8h
DgBzdG9yYWdlL2luZGV4ZWRkYi9rZXktdHlwZS1pbmZpbml0eS1wcml2YXRlLXN0ZGVyci50eHRV
VAUAA5LUiFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABNKu9IIcJSMr8EAAC0GgAALgAYAAAA
AAAAAAAApIFMJg4Ac3RvcmFnZS9pbmRleGVkZGIva2V5LXR5cGUtaW5maW5pdHktc3RkZXJyLnR4
dFVUBQADktSIV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAE0q70gLsogRwQYAAF03AAAzABgA
AAAAAAAAAACkgXMrDgBzdG9yYWdlL2luZGV4ZWRkYi9rZXlwYXRoLWFycmF5cy1wcml2YXRlLXN0
ZGVyci50eHRVVAUAA5LUiFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABOKu9I9rG+ga0GAAB1
NQAAKwAYAAAAAAAAAAAApIGhMg4Ac3RvcmFnZS9pbmRleGVkZGIva2V5cGF0aC1hcnJheXMtc3Rk
ZXJyLnR4dFVUBQADk9SIV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAE8q70iBZsZtqAMAAKBP
AAAzABgAAAAAAAAAAACkgbM5DgBzdG9yYWdlL2luZGV4ZWRkYi9rZXlwYXRoLWJhc2ljcy1wcml2
YXRlLXN0ZGVyci50eHRVVAUAA5XUiFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABPKu9IrjP2
vYQEAADecwAAKwAYAAAAAAAAAAAApIHIPQ4Ac3RvcmFnZS9pbmRleGVkZGIva2V5cGF0aC1iYXNp
Y3Mtc3RkZXJyLnR4dFVUBQADltSIV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAFAq70hZXCcX
UAYAAGVbAAAyABgAAAAAAAAAAACkgbFCDgBzdG9yYWdlL2luZGV4ZWRkYi9rZXlwYXRoLWVkZ2Vz
LXByaXZhdGUtc3RkZXJyLnR4dFVUBQADl9SIV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAFAq
70jPXSequgUAALE2AAAqABgAAAAAAAAAAACkgW1JDgBzdG9yYWdlL2luZGV4ZWRkYi9rZXlwYXRo
LWVkZ2VzLXN0ZGVyci50eHRVVAUAA5jUiFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABQKu9I
xmde3vsEAADXOQAANgAYAAAAAAAAAAAApIGLTw4Ac3RvcmFnZS9pbmRleGVkZGIva2V5cGF0aC1m
ZXRjaC1rZXktcHJpdmF0ZS1zdGRlcnIudHh0VVQFAAOY1IhXdXgLAAEE9QEAAAQUAAAAUEsBAh4D
FAACAAgAUCrvSE3PiCfSBQAAYz4AAC4AGAAAAAAAAAAAAKSB9lQOAHN0b3JhZ2UvaW5kZXhlZGRi
L2tleXBhdGgtZmV0Y2gta2V5LXN0ZGVyci50eHRVVAUAA5jUiFd1eAsAAQT1AQAABBQAAABQSwEC
HgMUAAIACABRKu9ID/q81uUGAADSWQAAQQAYAAAAAAAAAAAApIEwWw4Ac3RvcmFnZS9pbmRleGVk
ZGIva2V5cGF0aC1pbnRyaW5zaWMtcHJvcGVydGllcy1wcml2YXRlLXN0ZGVyci50eHRVVAUAA5nU
iFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABRKu9IxYYZ9fQGAACUWQAAOQAYAAAAAAAAAAAA
pIGQYg4Ac3RvcmFnZS9pbmRleGVkZGIva2V5cGF0aC1pbnRyaW5zaWMtcHJvcGVydGllcy1zdGRl
cnIudHh0VVQFAAOZ1IhXdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAUSrvSGxmKBrWAAAAQAIA
AC0AGAAAAAAAAAAAAKSB92kOAHN0b3JhZ2UvaW5kZXhlZGRiL2tleXJhbmdlLXByaXZhdGUtc3Rk
ZXJyLnR4dFVUBQADmtSIV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAFIq70hxKIPV+QcAAJ2A
AAA6ABgAAAAAAAAAAACkgTRrDgBzdG9yYWdlL2luZGV4ZWRkYi9sYXp5LWluZGV4LXBvcHVsYXRp
b24tcHJpdmF0ZS1zdGRlcnIudHh0VVQFAAOb1IhXdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA
UirvSL8OGL44CAAA1H8AADIAGAAAAAAAAAAAAKSBoXMOAHN0b3JhZ2UvaW5kZXhlZGRiL2xhenkt
aW5kZXgtcG9wdWxhdGlvbi1zdGRlcnIudHh0VVQFAAOc1IhXdXgLAAEE9QEAAAQUAAAAUEsBAh4D
FAACAAgAUirvSB5cVGt4BgAAaFkAADUAGAAAAAAAAAAAAKSBRXwOAHN0b3JhZ2UvaW5kZXhlZGRi
L2xhenktaW5kZXgtdHlwZXMtcHJpdmF0ZS1zdGRlcnIudHh0VVQFAAOc1IhXdXgLAAEE9QEAAAQU
AAAAUEsBAh4DFAACAAgAUyrvSB/inIJvBwAAYWQAAC0AGAAAAAAAAAAAAKSBLIMOAHN0b3JhZ2Uv
aW5kZXhlZGRiL2xhenktaW5kZXgtdHlwZXMtc3RkZXJyLnR4dFVUBQADndSIV3V4CwABBPUBAAAE
FAAAAFBLAQIeAxQAAgAIAFMq70hsZiga1gAAAEACAAA1ABgAAAAAAAAAAACkgQKLDgBzdG9yYWdl
L2luZGV4ZWRkYi9sZWdhY3ktY29uc3RhbnRzLXByaXZhdGUtc3RkZXJyLnR4dFVUBQADndSIV3V4
CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAFMq70jfZJeWHQUAAE+EAAAyABgAAAAAAAAAAACkgUeM
DgBzdG9yYWdlL2luZGV4ZWRkYi9saXN0LW9yZGVyaW5nLXByaXZhdGUtc3RkZXJyLnR4dFVUBQAD
ntSIV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAFMq70gfnBmViwUAAIp6AAAqABgAAAAAAAAA
AACkgdCRDgBzdG9yYWdlL2luZGV4ZWRkYi9saXN0LW9yZGVyaW5nLXN0ZGVyci50eHRVVAUAA57U
iFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABUKu9IOvEl2AsGAABSUQAALQAYAAAAAAAAAAAA
pIG/lw4Ac3RvcmFnZS9pbmRleGVkZGIvbWV0YWRhdGEtcHJpdmF0ZS1zdGRlcnIudHh0VVQFAAOf
1IhXdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAVCrvSN15JFn1BAAA4R4AADIAGAAAAAAAAAAA
AKSBMZ4OAHN0b3JhZ2UvaW5kZXhlZGRiL21ldGFkYXRhLXJhY2UtcHJpdmF0ZS1zdGRlcnIudHh0
VVQFAAOf1IhXdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAVCrvSHSlnf6nBQAALCMAACoAGAAA
AAAAAAAAAKSBkqMOAHN0b3JhZ2UvaW5kZXhlZGRiL21ldGFkYXRhLXJhY2Utc3RkZXJyLnR4dFVU
BQADn9SIV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAFQq70gLUnEeiwYAALFSAAAlABgAAAAA
AAAAAACkgZ2pDgBzdG9yYWdlL2luZGV4ZWRkYi9tZXRhZGF0YS1zdGRlcnIudHh0VVQFAAOg1IhX
dXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAWSrvSAAAAAAAAAAAAAAAABkAGAAAAAAAAAAQAO1B
h7AOAHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9VVAUAA6rUiFd1eAsAAQT1AQAABBQAAABQSwEC
HgMUAAIACAAiKu9Icq4pWX0GAACoRgAARAAYAAAAAAAAAAAApIHasA4Ac3RvcmFnZS9pbmRleGVk
ZGIvbW9kZXJuL2Fib3J0LXJlcXVlc3RzLWNhbmNlbGxlZC1wcml2YXRlLXN0ZGVyci50eHRVVAUA
Az/UiFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAiKu9I/WOAQrIGAABsSgAAPAAYAAAAAAAA
AAAApIHVtw4Ac3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2Fib3J0LXJlcXVlc3RzLWNhbmNlbGxl
ZC1zdGRlcnIudHh0VVQFAANA1IhXdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAIyrvSI7iKq1l
BgAAcU0AADcAGAAAAAAAAAAAAKSB/b4OAHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9hYm9ydGVk
LXB1dC1wcml2YXRlLXN0ZGVyci50eHRVVAUAA0HUiFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIA
CAAjKu9IMXmoL3wGAABoTAAALwAYAAAAAAAAAAAApIHTxQ4Ac3RvcmFnZS9pbmRleGVkZGIvbW9k
ZXJuL2Fib3J0ZWQtcHV0LXN0ZGVyci50eHRVVAUAA0HUiFd1eAsAAQT1AQAABBQAAABQSwECHgMU
AAIACAAjKu9I2u2E/m8GAAA0awAANwAYAAAAAAAAAAAApIG4zA4Ac3RvcmFnZS9pbmRleGVkZGIv
bW9kZXJuL2F1dG9pbmNyZW1lbnQtYWJvcnQtc3RkZXJyLnR4dFVUBQADQtSIV3V4CwABBPUBAAAE
FAAAAFBLAQIeAxQAAgAIACQq70j9yjum5QQAAFocAAA1ABgAAAAAAAAAAACkgZjTDgBzdG9yYWdl
L2luZGV4ZWRkYi9tb2Rlcm4vYmFzaWMtYWRkLXByaXZhdGUtc3RkZXJyLnR4dFVUBQADQ9SIV3V4
CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIACQq70ifBJzDBAUAAGEdAAAtABgAAAAAAAAAAACkgezY
DgBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vYmFzaWMtYWRkLXN0ZGVyci50eHRVVAUAA0PUiFd1
eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAkKu9IW9J8Lc8EAAAyGgAANQAYAAAAAAAAAAAApIFX
3g4Ac3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2Jhc2ljLXB1dC1wcml2YXRlLXN0ZGVyci50eHRV
VAUAA0TUiFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAkKu9IGVLYTtwEAAClGgAALQAYAAAA
AAAAAAAApIGV4w4Ac3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2Jhc2ljLXB1dC1zdGRlcnIudHh0
VVQFAANE1IhXdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA6CrvSHbCgQwwPwAAMSgBADIAGAAA
AAAAAQAAAKSB2OgOAHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9ibG9iLWN1cnNvci1jcmFzaC1s
b2cudHh0VVQFAAOz1YhXdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgASSrvSC3+WoQWCAAALyUA
AC8AGAAAAAAAAAAAAKSBdCgPAHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9ibG9iLWN1cnNvci1z
dGRlcnIudHh0VVQFAAOJ1IhXdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgATirvSLxxbNWZAAAA
xQAAADEAGAAAAAAAAQAAAKSB8zAPAHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9kZWxldGVpbmRl
eC0xLXN0ZGVyci50eHRVVAUAA5PUiFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABOKu9IBIrp
A58AAACKAQAAMQAYAAAAAAABAAAApIH3MQ8Ac3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2RlbGV0
ZWluZGV4LTItc3RkZXJyLnR4dFVUBQADlNSIV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAFMq
70hiQl3x1gAAAHomAAA6ABgAAAAAAAEAAACkgQEzDwBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4v
aWRib2JqZWN0c3RvcmUtY291bnQtMS1zdGRlcnIudHh0VVQFAAOd1IhXdXgLAAEE9QEAAAQUAAAA
UEsBAh4DFAACAAgAVCrvSIq4KI+rAAAAsgcAADsAGAAAAAAAAQAAAKSBSzQPAHN0b3JhZ2UvaW5k
ZXhlZGRiL21vZGVybi9pZGJvYmplY3RzdG9yZS1kZWxldGUtMS1zdGRlcnIudHh0VVQFAAOf1IhX
dXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAVSrvSPz9f16jAAAAFAMAACsAGAAAAAAAAQAAAKSB
azUPAHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pbmRleC0xLXN0ZGVyci50eHRVVAUAA6LUiFd1
eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABWKu9IHRlKJK4AAAA8CQAAKwAYAAAAAAABAAAApIFz
Ng8Ac3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2luZGV4LTItc3RkZXJyLnR4dFVUBQADo9SIV3V4
CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAFYq70h7uZhSpgAAAJ4EAAArABgAAAAAAAEAAACkgYY3
DwBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vaW5kZXgtMy1zdGRlcnIudHh0VVQFAAOk1IhXdXgL
AAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAVirvSLxxbNWZAAAAxQAAACsAGAAAAAAAAQAAAKSBkTgP
AHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9pbmRleC00LXN0ZGVyci50eHRVVAUAA6TUiFd1eAsA
AQT1AQAABBQAAABQSwECHgMUAAIACABXKu9IBIrpA58AAACKAQAAMgAYAAAAAAABAAAApIGPOQ8A
c3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2luZGV4LWN1cnNvci0xLXN0ZGVyci50eHRVVAUAA6bU
iFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABYKu9IvHFs1ZkAAADFAAAAMgAYAAAAAAABAAAA
pIGaOg8Ac3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2luZGV4LWN1cnNvci0yLXN0ZGVyci50eHRV
VAUAA6jUiFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABZKu9I/P1/XqMAAAAUAwAAMgAYAAAA
AAABAAAApIGfOw8Ac3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2luZGV4LWN1cnNvci0zLXN0ZGVy
ci50eHRVVAUAA6rUiFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABZKu9IvHFs1ZkAAADFAAAA
OQAYAAAAAAABAAAApIGuPA8Ac3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL2luZGV4LWdldC1jb3Vu
dC1iYXNpYy1zdGRlcnIudHh0VVQFAAOq1IhXdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAWSrv
SLxxbNWZAAAAxQAAADwAGAAAAAAAAQAAAKSBuj0PAHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9p
bmRleC1nZXQtY291bnQtZmFpbHVyZXMtc3RkZXJyLnR4dFVUBQADqtSIV3V4CwABBPUBAAAEFAAA
AFBLAQIeAxQAAgAIAFQq70jPIxAuvgYAAA5kAAA0ABgAAAAAAAAAAACkgck+DwBzdG9yYWdlL2lu
ZGV4ZWRkYi9tdXRhdGluZy1jdXJzb3ItcHJpdmF0ZS1zdGRlcnIudHh0VVQFAAOg1IhXdXgLAAEE
9QEAAAQUAAAAUEsBAh4DFAACAAgAVSrvSPuQFJPaBgAAi2EAACwAGAAAAAAAAAAAAKSB9UUPAHN0
b3JhZ2UvaW5kZXhlZGRiL211dGF0aW5nLWN1cnNvci1zdGRlcnIudHh0VVQFAAOh1IhXdXgLAAEE
9QEAAAQUAAAAUEsBAh4DFAACAAgAVSrvSPus0CwxBAAA1RUAAEQAGAAAAAAAAAAAAKSBNU0PAHN0
b3JhZ2UvaW5kZXhlZGRiL29iamVjdC1sb29rdXBzLWluLXZlcnNpb25jaGFuZ2UtcHJpdmF0ZS1z
dGRlcnIudHh0VVQFAAOh1IhXdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAVSrvSJlGt+tIBAAA
9hYAADwAGAAAAAAAAAAAAKSB5FEPAHN0b3JhZ2UvaW5kZXhlZGRiL29iamVjdC1sb29rdXBzLWlu
LXZlcnNpb25jaGFuZ2Utc3RkZXJyLnR4dFVUBQADodSIV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQA
AgAIAFUq70jsOCuMigcAAOFrAAA+ABgAAAAAAAAAAACkgaJWDwBzdG9yYWdlL2luZGV4ZWRkYi9v
YmplY3RzdG9yZS1hdXRvaW5jcmVtZW50LXByaXZhdGUtc3RkZXJyLnR4dFVUBQADotSIV3V4CwAB
BPUBAAAEFAAAAFBLAQIeAxQAAgAIAFYq70glwVKMWQcAALxmAAA2ABgAAAAAAAAAAACkgaReDwBz
dG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1hdXRvaW5jcmVtZW50LXN0ZGVyci50eHRVVAUA
A6PUiFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABWKu9Id8xthWcJAAC2jAAANwAYAAAAAAAA
AAAApIFtZg8Ac3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtYmFzaWNzLXByaXZhdGUtc3Rk
ZXJyLnR4dFVUBQADo9SIV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAFcq70itIZk6+wkAAAOS
AAAvABgAAAAAAAAAAACkgUVwDwBzdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1iYXNpY3Mt
c3RkZXJyLnR4dFVUBQADpdSIV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAFYq70ivVG7sdAoA
ALOOAAA3ABgAAAAAAAAAAACkgal6DwBzdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1iYXNp
Y3Mtd29ya2Vycy1zdGRlcnIudHh0VVQFAAOk1IhXdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA
VyrvSHGdQhgMBwAA6TcAADYAGAAAAAAAAAAAAKSBjoUPAHN0b3JhZ2UvaW5kZXhlZGRiL29iamVj
dHN0b3JlLWNsZWFyLXByaXZhdGUtc3RkZXJyLnR4dFVUBQADpdSIV3V4CwABBPUBAAAEFAAAAFBL
AQIeAxQAAgAIAFcq70jZmipSOgcAAFc2AAAuABgAAAAAAAAAAACkgQqNDwBzdG9yYWdlL2luZGV4
ZWRkYi9vYmplY3RzdG9yZS1jbGVhci1zdGRlcnIudHh0VVQFAAOm1IhXdXgLAAEE9QEAAAQUAAAA
UEsBAh4DFAACAAgAWCrvSE77hDjCCAAAcXoBADYAGAAAAAAAAAAAAKSBrJQPAHN0b3JhZ2UvaW5k
ZXhlZGRiL29iamVjdHN0b3JlLWNvdW50LXByaXZhdGUtc3RkZXJyLnR4dFVUBQADp9SIV3V4CwAB
BPUBAAAEFAAAAFBLAQIeAxQAAgAIAFkq70ih6oqRdwkAAImkAQAuABgAAAAAAAAAAACkgd6dDwBz
dG9yYWdlL2luZGV4ZWRkYi9vYmplY3RzdG9yZS1jb3VudC1zdGRlcnIudHh0VVQFAAOp1IhXdXgL
AAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAXCrvSKO/IpX5DQAA4asFADcAGAAAAAAAAAAAAKSBvacP
AHN0b3JhZ2UvaW5kZXhlZGRiL29iamVjdHN0b3JlLWN1cnNvci1wcml2YXRlLXN0ZGVyci50eHRV
VAUAA6/UiFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABhKu9IDLxvjP8NAACaRgUALwAYAAAA
AAAAAAAApIEntg8Ac3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtY3Vyc29yLXN0ZGVyci50
eHRVVAUAA7XUiFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABhKu9ITZGJHucGAAAKRwAAQgAY
AAAAAAAAAAAApIGPxA8Ac3RvcmFnZS9pbmRleGVkZGIvb2JqZWN0c3RvcmUtcmVtb3Zlb2JqZWN0
c3RvcmUtcHJpdmF0ZS1zdGRlcnIudHh0VVQFAAO21IhXdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAAC
AAgAYSrvSKAo24thBwAAgEcAADoAGAAAAAAAAAAAAKSB8ssPAHN0b3JhZ2UvaW5kZXhlZGRiL29i
amVjdHN0b3JlLXJlbW92ZW9iamVjdHN0b3JlLXN0ZGVyci50eHRVVAUAA7bUiFd1eAsAAQT1AQAA
BBQAAABQSwECHgMUAAIACABVKu9IVGjKijwDAAD2DgAAQwAYAAAAAAAAAAAApIHH0w8Ac3RvcmFn
ZS9pbmRleGVkZGIvb2JqZWN0U3RvcmUtcmVxdWlyZWQtYXJndW1lbnRzLXByaXZhdGUtc3RkZXJy
LnR4dFVUBQADodSIV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAFUq70jbmCBFoAMAADARAAA7
ABgAAAAAAAAAAACkgYDXDwBzdG9yYWdlL2luZGV4ZWRkYi9vYmplY3RTdG9yZS1yZXF1aXJlZC1h
cmd1bWVudHMtc3RkZXJyLnR4dFVUBQADodSIV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAGEq
70jZGm/JUggAAM/wAAAwABgAAAAAAAAAAACkgZXbDwBzdG9yYWdlL2luZGV4ZWRkYi9vZGQtc3Ry
aW5ncy1wcml2YXRlLXN0ZGVyci50eHRVVAUAA7bUiFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIA
CABiKu9IyvqzMTEEAACRMAAANgAYAAAAAAAAAAAApIFR5A8Ac3RvcmFnZS9pbmRleGVkZGIvb3Bl
bi1iYWQtdmVyc2lvbnMtcHJpdmF0ZS1zdGRlcnIudHh0VVQFAAO41IhXdXgLAAEE9QEAAAQUAAAA
UEsBAh4DFAACAAgAYyrvSGtFHLi9AwAATSAAAC4AGAAAAAAAAAAAAKSB8ugPAHN0b3JhZ2UvaW5k
ZXhlZGRiL29wZW4tYmFkLXZlcnNpb25zLXN0ZGVyci50eHRVVAUAA7nUiFd1eAsAAQT1AQAABBQA
AABQSwECHgMUAAIACABjKu9IsL3eTZoEAAAGHwAAMAAYAAAAAAAAAAAApIEX7Q8Ac3RvcmFnZS9p
bmRleGVkZGIvb3Blbi1jdXJzb3ItcHJpdmF0ZS1zdGRlcnIudHh0VVQFAAO51IhXdXgLAAEE9QEA
AAQUAAAAUEsBAh4DFAACAAgAYyrvSDJ7arJQBQAAYSIAACgAGAAAAAAAAAAAAKSBG/IPAHN0b3Jh
Z2UvaW5kZXhlZGRiL29wZW4tY3Vyc29yLXN0ZGVyci50eHRVVAUAA7rUiFd1eAsAAQT1AQAABBQA
AABQSwECHgMUAAIACABjKu9I5GMRlyEGAAAaOgAAPAAYAAAAAAAAAAAApIHN9w8Ac3RvcmFnZS9p
bmRleGVkZGIvb3Blbi1kdXJpbmctdHJhbnNhY3Rpb24tcHJpdmF0ZS1zdGRlcnIudHh0VVQFAAO6
1IhXdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAYyrvSCbohxgaBgAAAzwAADQAGAAAAAAAAAAA
AKSBZP4PAHN0b3JhZ2UvaW5kZXhlZGRiL29wZW4tZHVyaW5nLXRyYW5zYWN0aW9uLXN0ZGVyci50
eHRVVAUAA7rUiFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABjKu9IgbHA1+IEAAAmNQAAMgAY
AAAAAAAAAAAApIHsBBAAc3RvcmFnZS9pbmRleGVkZGIvb3Blbi1vcmRlcmluZy1wcml2YXRlLXN0
ZGVyci50eHRVVAUAA7rUiFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABkKu9IqHLBkvgEAABZ
NgAAKgAYAAAAAAAAAAAApIE6ChAAc3RvcmFnZS9pbmRleGVkZGIvb3Blbi1vcmRlcmluZy1zdGRl
cnIudHh0VVQFAAO71IhXdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAZCrvSKfAqF/IAwAAZh8A
AC8AGAAAAAAAAAAAAKSBlg8QAHN0b3JhZ2UvaW5kZXhlZGRiL29wZW4tdHdpY2Utd29ya2Vycy1z
dGRlcnIudHh0VVQFAAO71IhXdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAZCrvSKvAfCibBwAA
qYkAADMAGAAAAAAAAAAAAKSBxxMQAHN0b3JhZ2UvaW5kZXhlZGRiL29wZW5jdXJzb3Ita2V5LXBy
aXZhdGUtc3RkZXJyLnR4dFVUBQADvNSIV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAGQq70hO
OQY3tgcAAJaTAAArABgAAAAAAAAAAACkgc8bEABzdG9yYWdlL2luZGV4ZWRkYi9vcGVuY3Vyc29y
LWtleS1zdGRlcnIudHh0VVQFAAO81IhXdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAZSrvSLIk
7fdPCQAAWecAADcAGAAAAAAAAAAAAKSB6iMQAHN0b3JhZ2UvaW5kZXhlZGRiL29wdGlvbmFsLWFy
Z3VtZW50cy1wcml2YXRlLXN0ZGVyci50eHRVVAUAA73UiFd1eAsAAQT1AQAABBQAAABQSwECHgMU
AAIACABlKu9IcShTBKYJAAAt4gAALwAYAAAAAAAAAAAApIGqLRAAc3RvcmFnZS9pbmRleGVkZGIv
b3B0aW9uYWwtYXJndW1lbnRzLXN0ZGVyci50eHRVVAUAA73UiFd1eAsAAQT1AQAABBQAAABQSwEC
HgMUAAIACABmKu9If/jywHgGAABhOgAANQAYAAAAAAAAAAAApIG5NxAAc3RvcmFnZS9pbmRleGVk
ZGIvcGVuZGluZy1hY3Rpdml0eS1wcml2YXRlLXN0ZGVyci50eHRVVAUAA7/UiFd1eAsAAQT1AQAA
BBQAAABQSwECHgMUAAIACABnKu9Ijrr4CN0GAACOPAAALQAYAAAAAAAAAAAApIGgPhAAc3RvcmFn
ZS9pbmRleGVkZGIvcGVuZGluZy1hY3Rpdml0eS1zdGRlcnIudHh0VVQFAAPB1IhXdXgLAAEE9QEA
AAQUAAAAUEsBAh4DFAACAAgAZirvSGp+IAY0BwAABT0AADUAGAAAAAAAAAAAAKSB5EUQAHN0b3Jh
Z2UvaW5kZXhlZGRiL3BlbmRpbmctYWN0aXZpdHktd29ya2Vycy1zdGRlcnIudHh0VVQFAAPA1IhX
dXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAZyrvSFSB5zumBAAA/x0AAEMAGAAAAAAAAAAAAKSB
h00QAHN0b3JhZ2UvaW5kZXhlZGRiL3BlbmRpbmctdmVyc2lvbi1jaGFuZ2Utb24tZXhpdC1wcml2
YXRlLXN0ZGVyci50eHRVVAUAA8HUiFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABnKu9IbE+R
+IoEAADrGgAAOwAYAAAAAAAAAAAApIGqUhAAc3RvcmFnZS9pbmRleGVkZGIvcGVuZGluZy12ZXJz
aW9uLWNoYW5nZS1vbi1leGl0LXN0ZGVyci50eHRVVAUAA8LUiFd1eAsAAQT1AQAABBQAAABQSwEC
HgMUAAIACABnKu9I/Ei10SoEAACfGgAAQQAYAAAAAAAAAAAApIGpVxAAc3RvcmFnZS9pbmRleGVk
ZGIvcGVuZGluZy12ZXJzaW9uLWNoYW5nZS1zdHVjay1wcml2YXRlLXN0ZGVyci50eHRVVAUAA8LU
iFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABoKu9IPXd281wEAAB6HgAAOQAYAAAAAAAAAAAA
pIFOXBAAc3RvcmFnZS9pbmRleGVkZGIvcGVuZGluZy12ZXJzaW9uLWNoYW5nZS1zdHVjay1zdGRl
cnIudHh0VVQFAAPD1IhXdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAZyrvSK1kd7CcBAAAZCAA
AFYAGAAAAAAAAAAAAKSBHWEQAHN0b3JhZ2UvaW5kZXhlZGRiL3BlbmRpbmctdmVyc2lvbi1jaGFu
Z2Utc3R1Y2std29ya3Mtd2l0aC10ZXJtaW5hdGUtcHJpdmF0ZS1zdGRlcnIudHh0VVQFAAPC1IhX
dXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAaCrvSIyO14jSBAAA0iIAAE4AGAAAAAAAAAAAAKSB
SWYQAHN0b3JhZ2UvaW5kZXhlZGRiL3BlbmRpbmctdmVyc2lvbi1jaGFuZ2Utc3R1Y2std29ya3Mt
d2l0aC10ZXJtaW5hdGUtc3RkZXJyLnR4dFVUBQADw9SIV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQA
AgAIAGgq70gzibmFDAYAAAZgAAAwABgAAAAAAAAAAACkgaNrEABzdG9yYWdlL2luZGV4ZWRkYi9w
ZXJzaXN0ZW5jZS1wcml2YXRlLXN0ZGVyci50eHRVVAUAA8PUiFd1eAsAAQT1AQAABBQAAABQSwEC
HgMUAAIACABoKu9IivmW/w0GAACrXwAAKAAYAAAAAAAAAAAApIEZchAAc3RvcmFnZS9pbmRleGVk
ZGIvcGVyc2lzdGVuY2Utc3RkZXJyLnR4dFVUBQADw9SIV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQA
AgAIAGgq70gPo0L5iQcAAJhmAAA7ABgAAAAAAAAAAACkgYh4EABzdG9yYWdlL2luZGV4ZWRkYi9w
cmVmZXRjaC1idWdmaXgtMTA4MDcxLXByaXZhdGUtc3RkZXJyLnR4dFVUBQADxNSIV3V4CwABBPUB
AAAEFAAAAFBLAQIeAxQAAgAIAGgq70j86VO0oQcAAKJkAAAzABgAAAAAAAAAAACkgYaAEABzdG9y
YWdlL2luZGV4ZWRkYi9wcmVmZXRjaC1idWdmaXgtMTA4MDcxLXN0ZGVyci50eHRVVAUAA8TUiFd1
eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABpKu9I9MAyWFcSAACO5QYAOgAYAAAAAAAAAAAApIGU
iBAAc3RvcmFnZS9pbmRleGVkZGIvcHJlZmV0Y2gtaW52YWxpZGF0aW9uLXByaXZhdGUtc3RkZXJy
LnR4dFVUBQADxtSIV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAGoq70iLpZChtRQAACtqBwAy
ABgAAAAAAAAAAACkgV+bEABzdG9yYWdlL2luZGV4ZWRkYi9wcmVmZXRjaC1pbnZhbGlkYXRpb24t
c3RkZXJyLnR4dFVUBQADyNSIV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAGoq70iA3LyPqQYA
AKhVAAAyABgAAAAAAAAAAACkgYCwEABzdG9yYWdlL2luZGV4ZWRkYi9wcmVmZXRjaC1yYWNlLXBy
aXZhdGUtc3RkZXJyLnR4dFVUBQADyNSIV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAGoq70jc
qjddkAYAALZTAAAqABgAAAAAAAAAAACkgZW3EABzdG9yYWdlL2luZGV4ZWRkYi9wcmVmZXRjaC1y
YWNlLXN0ZGVyci50eHRVVAUAA8jUiFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABrKu9Ib07D
LPwFAABSPwAARgAYAAAAAAAAAAAApIGJvhAAc3RvcmFnZS9pbmRleGVkZGIvcHJpbWFyeS1rZXkt
dW5pcXVlLXRvLW9iamVjdHN0b3JlLXByaXZhdGUtc3RkZXJyLnR4dFVUBQADydSIV3V4CwABBPUB
AAAEFAAAAFBLAQIeAxQAAgAIAGsq70gV0r7DQgYAAFVGAAA+ABgAAAAAAAAAAACkgQXFEABzdG9y
YWdlL2luZGV4ZWRkYi9wcmltYXJ5LWtleS11bmlxdWUtdG8tb2JqZWN0c3RvcmUtc3RkZXJyLnR4
dFVUBQADydSIV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAGsq70g8Ay9GwwQAAG8eAAA0ABgA
AAAAAAAAAACkgb/LEABzdG9yYWdlL2luZGV4ZWRkYi9xdWV1ZWQtY29tbWFuZHMtcHJpdmF0ZS1z
dGRlcnIudHh0VVQFAAPJ1IhXdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAayrvSEyoif1+BQAA
NCIAACwAGAAAAAAAAAAAAKSB8NAQAHN0b3JhZ2UvaW5kZXhlZGRiL3F1ZXVlZC1jb21tYW5kcy1z
dGRlcnIudHh0VVQFAAPJ1IhXdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAayrvSMLBqnlyBQAA
4R8AAC0AGAAAAAAAAAAAAKSB1NYQAHN0b3JhZ2UvaW5kZXhlZGRiL3JlYWRvbmx5LXByaXZhdGUt
c3RkZXJyLnR4dFVUBQADydSIV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAGsq70gs8bL0OQMA
AAQPAAA4ABgAAAAAAAAAAACkga3cEABzdG9yYWdlL2luZGV4ZWRkYi9yZWFkb25seS1wcm9wZXJ0
aWVzLXByaXZhdGUtc3RkZXJyLnR4dFVUBQADydSIV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAI
AGsq70iAC3J4nQMAABcRAAAwABgAAAAAAAAAAACkgVjgEABzdG9yYWdlL2luZGV4ZWRkYi9yZWFk
b25seS1wcm9wZXJ0aWVzLXN0ZGVyci50eHRVVAUAA8rUiFd1eAsAAQT1AQAABBQAAABQSwECHgMU
AAIACABrKu9IIXcxycUFAADKIAAAJQAYAAAAAAAAAAAApIFf5BAAc3RvcmFnZS9pbmRleGVkZGIv
cmVhZG9ubHktc3RkZXJyLnR4dFVUBQADytSIV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAGsq
70jNJhdbSwYAADcsAAA7ABgAAAAAAAAAAACkgYPqEABzdG9yYWdlL2luZGV4ZWRkYi9yZXF1ZXN0
LWNvbnRpbnVlLWFib3J0LXByaXZhdGUtc3RkZXJyLnR4dFVUBQADytSIV3V4CwABBPUBAAAEFAAA
AFBLAQIeAxQAAgAIAGsq70hr4Z/oSgYAAEoqAAAzABgAAAAAAAAAAACkgUPxEABzdG9yYWdlL2lu
ZGV4ZWRkYi9yZXF1ZXN0LWNvbnRpbnVlLWFib3J0LXN0ZGVyci50eHRVVAUAA8rUiFd1eAsAAQT1
AQAABBQAAABQSwECHgMUAAIACABrKu9I6uUFSAcGAAA1QAAAPgAYAAAAAAAAAAAApIH69xAAc3Rv
cmFnZS9pbmRleGVkZGIvcmVxdWVzdC1ldmVudC1wcm9wYWdhdGlvbi1wcml2YXRlLXN0ZGVyci50
eHRVVAUAA8rUiFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABsKu9IUF3RixwGAAAPPwAANgAY
AAAAAAAAAAAApIF5/hAAc3RvcmFnZS9pbmRleGVkZGIvcmVxdWVzdC1ldmVudC1wcm9wYWdhdGlv
bi1zdGRlcnIudHh0VVQFAAPL1IhXdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAbCrvSK5Ct5T3
BQAACSkAADkAGAAAAAAAAAAAAKSBBQURAHN0b3JhZ2UvaW5kZXhlZGRiL3JlcXVlc3QtcmVzdWx0
LWNhY2hlLXByaXZhdGUtc3RkZXJyLnR4dFVUBQADy9SIV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQA
AgAIAGwq70gJQcWICQYAANcoAAAxABgAAAAAAAAAAACkgW8LEQBzdG9yYWdlL2luZGV4ZWRkYi9y
ZXF1ZXN0LXJlc3VsdC1jYWNoZS1zdGRlcnIudHh0VVQFAAPL1IhXdXgLAAEE9QEAAAQUAAAAUEsB
Ah4DFAACAAgAbCrvSDQF/KKpBAAAKyAAADgAGAAAAAAAAAAAAKSB4xERAHN0b3JhZ2UvaW5kZXhl
ZGRiL3NldF92ZXJzaW9uX2Jsb2NrZWQtcHJpdmF0ZS1zdGRlcnIudHh0VVQFAAPL1IhXdXgLAAEE
9QEAAAQUAAAAUEsBAh4DFAACAAgAbCrvSHC9Ps4TBQAAGSMAADAAGAAAAAAAAAAAAKSB/hYRAHN0
b3JhZ2UvaW5kZXhlZGRiL3NldF92ZXJzaW9uX2Jsb2NrZWQtc3RkZXJyLnR4dFVUBQADy9SIV3V4
CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAGwq70gyOziRkQQAANwnAABOABgAAAAAAAAAAACkgXsc
EQBzdG9yYWdlL2luZGV4ZWRkYi9zZXR2ZXJzaW9uLWJsb2NrZWQtYnktdmVyc2lvbmNoYW5nZS1j
bG9zZS1wcml2YXRlLXN0ZGVyci50eHRVVAUAA8vUiFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIA
CABsKu9IWOe7FGwEAADOJwAARgAYAAAAAAAAAAAApIGUIREAc3RvcmFnZS9pbmRleGVkZGIvc2V0
dmVyc2lvbi1ibG9ja2VkLWJ5LXZlcnNpb25jaGFuZ2UtY2xvc2Utc3RkZXJyLnR4dFVUBQADzNSI
V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAGwq70jz7D9xigQAAAclAAA7ABgAAAAAAAAAAACk
gYAmEQBzdG9yYWdlL2luZGV4ZWRkYi9zZXR2ZXJzaW9uLW5vdC1ibG9ja2VkLXByaXZhdGUtc3Rk
ZXJyLnR4dFVUBQADzNSIV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAGwq70it0JaBqQQAAIol
AAAzABgAAAAAAAAAAACkgX8rEQBzdG9yYWdlL2luZGV4ZWRkYi9zZXR2ZXJzaW9uLW5vdC1ibG9j
a2VkLXN0ZGVyci50eHRVVAUAA8zUiFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABtKu9Iu4ZZ
EfQOAAAIYwQANQAYAAAAAAAAAAAApIGVMBEAc3RvcmFnZS9pbmRleGVkZGIvc3RydWN0dXJlZC1j
bG9uZS1wcml2YXRlLXN0ZGVyci50eHRVVAUAA87UiFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIA
CABuKu9IQmtuxSYOAAA9ZwQALQAYAAAAAAAAAAAApIH4PxEAc3RvcmFnZS9pbmRleGVkZGIvc3Ry
dWN0dXJlZC1jbG9uZS1zdGRlcnIudHh0VVQFAAPP1IhXdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAAC
AAgAbirvSG1GJLi+BQAAOiUAAC4AGAAAAAAAAAAAAKSBhU4RAHN0b3JhZ2UvaW5kZXhlZGRiL3Ry
YW5zYWN0aW9uLWFib3J0LXN0ZGVyci50eHRVVAUAA9DUiFd1eAsAAQT1AQAABBQAAABQSwECHgMU
AAIACABuKu9ISQ8bGtIJAAB61AAAPAAYAAAAAAAAAAAApIGrVBEAc3RvcmFnZS9pbmRleGVkZGIv
dHJhbnNhY3Rpb24tYWN0aXZlLWZsYWctcHJpdmF0ZS1zdGRlcnIudHh0VVQFAAPQ1IhXdXgLAAEE
9QEAAAQUAAAAUEsBAh4DFAACAAgAbyrvSJ1AUAiBCgAATeMAADQAGAAAAAAAAAAAAKSB814RAHN0
b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWFjdGl2ZS1mbGFnLXN0ZGVyci50eHRVVAUAA9HU
iFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABvKu9I/Mn2Jr8FAACkOQAAPAAYAAAAAAAAAAAA
pIHiaREAc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tYWZ0ZXItY2xvc2UtcHJpdmF0ZS1z
dGRlcnIudHh0VVQFAAPR1IhXdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAbyrvSCm/NxLLBQAA
QzkAADQAGAAAAAAAAAAAAKSBF3ARAHN0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWFmdGVy
LWNsb3NlLXN0ZGVyci50eHRVVAUAA9HUiFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABvKu9I
PpX7leQGAABxcAAARgAYAAAAAAAAAAAApIFQdhEAc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rp
b24tYW5kLW9iamVjdHN0b3JlLWNhbGxzLXByaXZhdGUtc3RkZXJyLnR4dFVUBQAD0dSIV3V4CwAB
BPUBAAAEFAAAAFBLAQIeAxQAAgAIAG8q70jKlnDh+gYAAF99AAA+ABgAAAAAAAAAAACkgbR9EQBz
dG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1hbmQtb2JqZWN0c3RvcmUtY2FsbHMtc3RkZXJy
LnR4dFVUBQAD0tSIV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAG8q70jYwZpgTggAAJagAAA3
ABgAAAAAAAAAAACkgSaFEQBzdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1iYXNpY3MtcHJp
dmF0ZS1zdGRlcnIudHh0VVQFAAPS1IhXdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAbyrvSI3F
/W6cCAAA6KcAAC8AGAAAAAAAAAAAAKSB5Y0RAHN0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9u
LWJhc2ljcy1zdGRlcnIudHh0VVQFAAPS1IhXdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAcCrv
SBIvJykEBQAAsygAAFcAGAAAAAAAAAAAAKSB6pYRAHN0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0
aW9uLWNvbXBsZXRlLXdpdGgtanMtcmVjdXJzaW9uLWNyb3NzLWZyYW1lLXByaXZhdGUtc3RkZXJy
LnR4dFVUBQAD09SIV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAHAq70hh+Gf0hwUAAAEoAABP
ABgAAAAAAAAAAACkgX+cEQBzdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1jb21wbGV0ZS13
aXRoLWpzLXJlY3Vyc2lvbi1jcm9zcy1mcmFtZS1zdGRlcnIudHh0VVQFAAPT1IhXdXgLAAEE9QEA
AAQUAAAAUEsBAh4DFAACAAgAcCrvSKzr8/RGBQAAPScAAEsAGAAAAAAAAAAAAKSBj6IRAHN0b3Jh
Z2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWNvbXBsZXRlLXdpdGgtanMtcmVjdXJzaW9uLXByaXZh
dGUtc3RkZXJyLnR4dFVUBQAD09SIV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAHAq70guR/LJ
hgUAAHMnAABDABgAAAAAAAAAAACkgVqoEQBzdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1j
b21wbGV0ZS13aXRoLWpzLXJlY3Vyc2lvbi1zdGRlcnIudHh0VVQFAAPT1IhXdXgLAAEE9QEAAAQU
AAAAUEsBAh4DFAACAAgAcCrvSEvif4UyBgAAzFAAAEEAGAAAAAAAAAAAAKSBXa4RAHN0b3JhZ2Uv
aW5kZXhlZGRiL3RyYW5zYWN0aW9uLWNvbXBsZXRlLXdvcmtlcnMtcHJpdmF0ZS1zdGRlcnIudHh0
VVQFAAPT1IhXdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAcCrvSIkQQmDjBQAAiE0AADkAGAAA
AAAAAAAAAKSBCrURAHN0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLWNvbXBsZXRlLXdvcmtl
cnMtc3RkZXJyLnR4dFVUBQAD1NSIV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAHAq70jfDSFo
RgYAAOJLAABOABgAAAAAAAAAAACkgWC7EQBzdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1j
b29yZGluYXRpb24tYWNyb3NzLWRhdGFiYXNlcy1wcml2YXRlLXN0ZGVyci50eHRVVAUAA9TUiFd1
eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABwKu9IsXfRGEoGAABoTQAARgAYAAAAAAAAAAAApIEu
whEAc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tY29vcmRpbmF0aW9uLWFjcm9zcy1kYXRh
YmFzZXMtc3RkZXJyLnR4dFVUBQAD1NSIV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAHAq70jH
0qwfCwYAANw1AABNABgAAAAAAAAAAACkgfjIEQBzdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlv
bi1jb29yZGluYXRpb24td2l0aGluLWRhdGFiYXNlLXByaXZhdGUtc3RkZXJyLnR4dFVUBQAD1NSI
V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAHAq70grlc1PBwEAACUDAAA/ABgAAAAAAAAAAACk
gYrPEQBzdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1jcmFzaC1pbi10YXNrcy1wcml2YXRl
LXN0ZGVyci50eHRVVAUAA9TUiFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABxKu9Imo4jDiYB
AAAzBAAANwAYAAAAAAAAAAAApIEK0REAc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tY3Jh
c2gtaW4tdGFza3Mtc3RkZXJyLnR4dFVUBQAD1dSIV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAI
AHEq70hg0spcUwQAAMoXAAA/ABgAAAAAAAAAAACkgaHSEQBzdG9yYWdlL2luZGV4ZWRkYi90cmFu
c2FjdGlvbi1jcmFzaC1vbi1hYm9ydC1wcml2YXRlLXN0ZGVyci50eHRVVAUAA9XUiFd1eAsAAQT1
AQAABBQAAABQSwECHgMUAAIACABxKu9Isibs1XoEAAA5GAAANwAYAAAAAAAAAAAApIFt1xEAc3Rv
cmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tY3Jhc2gtb24tYWJvcnQtc3RkZXJyLnR4dFVUBQAD
1dSIV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAHEq70iZWzdjMwcAAGteAAA2ABgAAAAAAAAA
AACkgVjcEQBzdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1lcnJvci1wcml2YXRlLXN0ZGVy
ci50eHRVVAUAA9bUiFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABxKu9Ih3Epm4UHAACxXAAA
LgAYAAAAAAAAAAAApIH74xEAc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tZXJyb3Itc3Rk
ZXJyLnR4dFVUBQAD1tSIV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAHEq70hhXDtl8AUAAF00
AABCABgAAAAAAAAAAACkgejrEQBzdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1ldmVudC1w
cm9wYWdhdGlvbi1wcml2YXRlLXN0ZGVyci50eHRVVAUAA9bUiFd1eAsAAQT1AQAABBQAAABQSwEC
HgMUAAIACABxKu9IQTsZHPIFAAAIMwAAOgAYAAAAAAAAAAAApIFU8hEAc3RvcmFnZS9pbmRleGVk
ZGIvdHJhbnNhY3Rpb24tZXZlbnQtcHJvcGFnYXRpb24tc3RkZXJyLnR4dFVUBQAD1tSIV3V4CwAB
BPUBAAAEFAAAAFBLAQIeAxQAAgAIAHIq70g6R1mnZgUAADYvAAA5ABgAAAAAAAAAAACkgbr4EQBz
dG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1vcmRlcmluZy1wcml2YXRlLXN0ZGVyci50eHRV
VAUAA9fUiFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAByKu9I1pq4P5kFAADyLgAAMQAYAAAA
AAAAAAAApIGT/hEAc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tb3JkZXJpbmctc3RkZXJy
LnR4dFVUBQAD19SIV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAHIq70jA+qdyGAYAAJwzAAA8
ABgAAAAAAAAAAACkgZcEEgBzdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1vdmVybGFwcGlu
Zy1wcml2YXRlLXN0ZGVyci50eHRVVAUAA9fUiFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABy
Ku9IPWJsyVoGAAC9SgAANAAYAAAAAAAAAAAApIElCxIAc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNh
Y3Rpb24tb3ZlcmxhcHBpbmctc3RkZXJyLnR4dFVUBQAD19SIV3V4CwABBPUBAAAEFAAAAFBLAQIe
AxQAAgAIAHIq70jPKMYrCQYAAAczAAA6ABgAAAAAAAAAAACkge0REgBzdG9yYWdlL2luZGV4ZWRk
Yi90cmFuc2FjdGlvbi1yZWFkLW9ubHktcHJpdmF0ZS1zdGRlcnIudHh0VVQFAAPX1IhXdXgLAAEE
9QEAAAQUAAAAUEsBAh4DFAACAAgAcirvSHT49hqGBgAAfzgAADIAGAAAAAAAAAAAAKSBahgSAHN0
b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLXJlYWQtb25seS1zdGRlcnIudHh0VVQFAAPX1IhX
dXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAcirvSF0NsqUIBgAAOUIAAEQAGAAAAAAAAAAAAKSB
XB8SAHN0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9uLXJlYWR3cml0ZS1leGNsdXNpdmUtcHJp
dmF0ZS1zdGRlcnIudHh0VVQFAAPY1IhXdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAcirvSCxc
rUYSBgAAk0IAADwAGAAAAAAAAAAAAKSB4iUSAHN0b3JhZ2UvaW5kZXhlZGRiL3RyYW5zYWN0aW9u
LXJlYWR3cml0ZS1leGNsdXNpdmUtc3RkZXJyLnR4dFVUBQAD2NSIV3V4CwABBPUBAAAEFAAAAFBL
AQIeAxQAAgAIAHIq70jTEh4PYwYAALswAAA5ABgAAAAAAAAAAACkgWosEgBzdG9yYWdlL2luZGV4
ZWRkYi90cmFuc2FjdGlvbi1yb2xsYmFjay1wcml2YXRlLXN0ZGVyci50eHRVVAUAA9jUiFd1eAsA
AQT1AQAABBQAAABQSwECHgMUAAIACAByKu9IRtvBjrQGAAC0MAAAMQAYAAAAAAAAAAAApIFAMxIA
c3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tcm9sbGJhY2stc3RkZXJyLnR4dFVUBQAD2NSI
V3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAHIq70gaA0iWAwYAAN9EAABBABgAAAAAAAAAAACk
gV86EgBzdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1zY29wZS1zZXF1ZW5jaW5nLXByaXZh
dGUtc3RkZXJyLnR4dFVUBQAD2NSIV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAHMq70iwRlO7
0gUAAP0/AAA5ABgAAAAAAAAAAACkgd1AEgBzdG9yYWdlL2luZGV4ZWRkYi90cmFuc2FjdGlvbi1z
Y29wZS1zZXF1ZW5jaW5nLXN0ZGVyci50eHRVVAUAA9nUiFd1eAsAAQT1AQAABBQAAABQSwECHgMU
AAIACABzKu9IcssENPoCAACVDQAARAAYAAAAAAAAAAAApIEiRxIAc3RvcmFnZS9pbmRleGVkZGIv
dHJhbnNhY3Rpb24tc3RvcmVOYW1lcy1yZXF1aXJlZC1wcml2YXRlLXN0ZGVyci50eHRVVAUAA9nU
iFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABzKu9IuhIwFn8DAABsEAAAPAAYAAAAAAAAAAAA
pIGaShIAc3RvcmFnZS9pbmRleGVkZGIvdHJhbnNhY3Rpb24tc3RvcmVOYW1lcy1yZXF1aXJlZC1z
dGRlcnIudHh0VVQFAAPZ1IhXdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAcyrvSEwwyLydBAAA
PiEAAD4AGAAAAAAAAAAAAKSBj04SAHN0b3JhZ2UvaW5kZXhlZGRiL3VuYmxvY2tlZC12ZXJzaW9u
LWNoYW5nZXMtcHJpdmF0ZS1zdGRlcnIudHh0VVQFAAPZ1IhXdXgLAAEE9QEAAAQUAAAAUEsBAh4D
FAACAAgAcyrvSC21alKmBAAAPiEAADYAGAAAAAAAAAAAAKSBpFMSAHN0b3JhZ2UvaW5kZXhlZGRi
L3VuYmxvY2tlZC12ZXJzaW9uLWNoYW5nZXMtc3RkZXJyLnR4dFVUBQAD2dSIV3V4CwABBPUBAAAE
FAAAAFBLAQIeAxQAAgAIAHMq70j6HMsbEgEAAMEDAAAtABgAAAAAAAAAAACkgbpYEgBzdG9yYWdl
L2luZGV4ZWRkYi91bnByZWZpeC1wcml2YXRlLXN0ZGVyci50eHRVVAUAA9nUiFd1eAsAAQT1AQAA
BBQAAABQSwECHgMUAAIACABzKu9IzXmbOHQEAAAXFwAANAAYAAAAAAAAAAAApIEzWhIAc3RvcmFn
ZS9pbmRleGVkZGIvdmFsdWUtdW5kZWZpbmVkLXByaXZhdGUtc3RkZXJyLnR4dFVUBQAD2tSIV3V4
CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAHMq70iLm+zlbAUAAIYcAAAsABgAAAAAAAAAAACkgRVf
EgBzdG9yYWdlL2luZGV4ZWRkYi92YWx1ZS11bmRlZmluZWQtc3RkZXJyLnR4dFVUBQAD2tSIV3V4
CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAHMq70hNIJBJOgUAAKAtAAA1ABgAAAAAAAAAAACkgedk
EgBzdG9yYWdlL2luZGV4ZWRkYi92YWx1ZXMtb2RkLXR5cGVzLXByaXZhdGUtc3RkZXJyLnR4dFVU
BQAD2tSIV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAHMq70gNqtqAqgUAAKwvAAAtABgAAAAA
AAAAAACkgZBqEgBzdG9yYWdlL2luZGV4ZWRkYi92YWx1ZXMtb2RkLXR5cGVzLXN0ZGVyci50eHRV
VAUAA9rUiFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABzKu9IvXjpDJcFAAA3LQAAOQAYAAAA
AAAAAAAApIGhcBIAc3RvcmFnZS9pbmRleGVkZGIvdmVyc2lvbi1jaGFuZ2UtYWJvcnQtcHJpdmF0
ZS1zdGRlcnIudHh0VVQFAAPa1IhXdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAcyrvSEBDyZdo
BQAAyCwAADEAGAAAAAAAAAAAAKSBq3YSAHN0b3JhZ2UvaW5kZXhlZGRiL3ZlcnNpb24tY2hhbmdl
LWFib3J0LXN0ZGVyci50eHRVVAUAA9rUiFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAB0Ku9I
bq7GH9sCAAAAGgAAPwAYAAAAAAAAAAAApIF+fBIAc3RvcmFnZS9pbmRleGVkZGIvdmVyc2lvbi1j
aGFuZ2UtZXZlbnQtYmFzaWMtcHJpdmF0ZS1zdGRlcnIudHh0VVQFAAPb1IhXdXgLAAEE9QEAAAQU
AAAAUEsBAh4DFAACAAgAdCrvSJb6XcfCAwAAuSYAADcAGAAAAAAAAAAAAKSB0n8SAHN0b3JhZ2Uv
aW5kZXhlZGRiL3ZlcnNpb24tY2hhbmdlLWV2ZW50LWJhc2ljLXN0ZGVyci50eHRVVAUAA9vUiFd1
eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAB0Ku9IiZNfOH8FAABZMAAAOQAYAAAAAAAAAAAApIEF
hBIAc3RvcmFnZS9pbmRleGVkZGIvdmVyc2lvbi1jaGFuZ2UtZXZlbnQtcHJpdmF0ZS1zdGRlcnIu
dHh0VVQFAAPb1IhXdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAdCrvSOi7aSgIBQAASygAADEA
GAAAAAAAAAAAAKSB94kSAHN0b3JhZ2UvaW5kZXhlZGRiL3ZlcnNpb24tY2hhbmdlLWV2ZW50LXN0
ZGVyci50eHRVVAUAA9vUiFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAB0Ku9I2MRwujIFAACR
OAAAPQAYAAAAAAAAAAAApIFqjxIAc3RvcmFnZS9pbmRleGVkZGIvdmVyc2lvbi1jaGFuZ2UtZXhj
bHVzaXZlLXByaXZhdGUtc3RkZXJyLnR4dFVUBQAD29SIV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQA
AgAIAHQq70gojXTiPwUAABk6AAA1ABgAAAAAAAAAAACkgROVEgBzdG9yYWdlL2luZGV4ZWRkYi92
ZXJzaW9uLWNoYW5nZS1leGNsdXNpdmUtc3RkZXJyLnR4dFVUBQAD29SIV3V4CwABBPUBAAAEFAAA
AFBLAQIeAxQAAgAIAHQq70h8ICpKoAMAAHkTAABJABgAAAAAAAAAAACkgcGaEgBzdG9yYWdlL2lu
ZGV4ZWRkYi92ZXJzaW9uY2hhbmdlcmVxdWVzdC1hY3RpdmVkb21vYmplY3QtcHJpdmF0ZS1zdGRl
cnIudHh0VVQFAAPc1IhXdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAdSrvSBFMqCngAwAAAxQA
AEEAGAAAAAAAAAAAAKSB5J4SAHN0b3JhZ2UvaW5kZXhlZGRiL3ZlcnNpb25jaGFuZ2VyZXF1ZXN0
LWFjdGl2ZWRvbW9iamVjdC1zdGRlcnIudHh0VVQFAAPd1IhXdXgLAAEE9QEAAAQUAAAAUEsBAh4D
CgAAAAAAKCrvSAAAAAAAAAAAAAAAAA8AGAAAAAAAAAAQAO1BP6MSAHN0b3JhZ2Uvd2Vic3FsL1VU
BQADS9SIV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIACIq70je/brprwAAAO4AAAAtABgAAAAA
AAEAAACkgYijEgBzdG9yYWdlL3dlYnNxbC9hbHRlci10by1pbmZvLXRhYmxlLXN0ZGVyci50eHRV
VAUAA0DUiFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAiKu9I3v266a8AAADuAAAANQAYAAAA
AAABAAAApIGepBIAc3RvcmFnZS93ZWJzcWwvY2hhbmdlLXZlcnNpb24taGFuZGxlLXJldXNlLXN0
ZGVyci50eHRVVAUAA0DUiFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAiKu9I3v266a8AAADu
AAAARgAYAAAAAAABAAAApIG8pRIAc3RvcmFnZS93ZWJzcWwvY2hhbmdlLXZlcnNpb24tbm8tY3Jh
c2gtb24tcHJlZmxpZ2h0LWZhaWx1cmUtc3RkZXJyLnR4dFVUBQADQNSIV3V4CwABBPUBAAAEFAAA
AFBLAQIeAxQAAgAIACIq70j5R3TYugAAALgDAAAoABgAAAAAAAEAAACkgeumEgBzdG9yYWdlL3dl
YnNxbC9jaGFuZ2UtdmVyc2lvbi1zdGRlcnIudHh0VVQFAANA1IhXdXgLAAEE9QEAAAQUAAAAUEsB
Ah4DFAACAAgAIyrvSN79uumvAAAA7gAAADIAGAAAAAAAAQAAAKSBB6gSAHN0b3JhZ2Uvd2Vic3Fs
L2Nsb3NlLWR1cmluZy1zdHJlc3MtdGVzdC1zdGRlcnIudHh0VVQFAANB1IhXdXgLAAEE9QEAAAQU
AAAAUEsBAh4DFAACAAgAIyrvSKt4+6G1AAAA3AEAADQAGAAAAAAAAQAAAKSBIqkSAHN0b3JhZ2Uv
d2Vic3FsL2RhdGFiYXNlLWxvY2stYWZ0ZXItcmVsb2FkLXN0ZGVyci50eHRVVAUAA0HUiFd1eAsA
AQT1AQAABBQAAABQSwECHgMUAAIACAAjKu9I3v266a8AAADuAAAAKQAYAAAAAAABAAAApIFFqhIA
c3RvcmFnZS93ZWJzcWwvZW1wdHktc3RhdGVtZW50LXN0ZGVyci50eHRVVAUAA0LUiFd1eAsAAQT1
AQAABBQAAABQSwECHgMUAAIACAAjKu9I3v266a8AAADuAAAAKgAYAAAAAAABAAAApIFXqxIAc3Rv
cmFnZS93ZWJzcWwvZXhlY3V0ZS1zcWwtYXJncy1zdGRlcnIudHh0VVQFAANC1IhXdXgLAAEE9QEA
AAQUAAAAUEsBAh4DFAACAAgAIyrvSN79uumvAAAA7gAAADIAGAAAAAAAAQAAAKSBaqwSAHN0b3Jh
Z2Uvd2Vic3FsL2V4ZWN1dGUtc3FsLXJvd3NBZmZlY3RlZC1zdGRlcnIudHh0VVQFAANC1IhXdXgL
AAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAIyrvSN79uumvAAAA7gAAAD8AGAAAAAAAAQAAAKSBha0S
AHN0b3JhZ2Uvd2Vic3FsL2V4ZWN1dGVzcWwtYWNjZXB0cy1vbmx5LW9uZS1zdGF0ZW1lbnQtc3Rk
ZXJyLnR4dFVUBQADQtSIV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIACQq70je/brprwAAAO4A
AAAuABgAAAAAAAEAAACkga2uEgBzdG9yYWdlL3dlYnNxbC9oYXNoLWNoYW5nZS13aXRoLXhoci1z
dGRlcnIudHh0VVQFAANE1IhXdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAJSrvSKt4+6G1AAAA
3AEAAD8AGAAAAAAAAQAAAKSBxK8SAHN0b3JhZ2Uvd2Vic3FsL211bHRpcGxlLWRhdGFiYXNlcy1n
YXJiYWdlLWNvbGxlY3Rpb24tc3RkZXJyLnR4dFVUBQADRdSIV3V4CwABBPUBAAAEFAAAAFBLAQIe
AxQAAgAIACUq70g8ZvSMuQAAAMoCAABEABgAAAAAAAEAAACkgfKwEgBzdG9yYWdlL3dlYnNxbC9t
dWx0aXBsZS10cmFuc2FjdGlvbnMtb24tZGlmZmVyZW50LWhhbmRsZXMtc3RkZXJyLnR4dFVUBQAD
RdSIV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIACUq70je/brprwAAAO4AAAAvABgAAAAAAAEA
AACkgSmyEgBzdG9yYWdlL3dlYnNxbC9tdWx0aXBsZS10cmFuc2FjdGlvbnMtc3RkZXJyLnR4dFVU
BQADRdSIV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIACUq70je/brprwAAAO4AAAAoABgAAAAA
AAEAAACkgUGzEgBzdG9yYWdlL3dlYnNxbC9udWxsLWNhbGxiYWNrcy1zdGRlcnIudHh0VVQFAANF
1IhXdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAJSrvSKt4+6G1AAAA3AEAAEgAGAAAAAAAAQAA
AKSBUrQSAHN0b3JhZ2Uvd2Vic3FsL29wZW4tZGF0YWJhc2UtY3JlYXRpb24tY2FsbGJhY2staXNv
bGF0ZWQtd29ybGQtc3RkZXJyLnR4dFVUBQADRdSIV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAI
ACUq70j5R3TYugAAALgDAAA5ABgAAAAAAAEAAACkgYm1EgBzdG9yYWdlL3dlYnNxbC9vcGVuLWRh
dGFiYXNlLWNyZWF0aW9uLWNhbGxiYWNrLXN0ZGVyci50eHRVVAUAA0bUiFd1eAsAAQT1AQAABBQA
AABQSwECHgMUAAIACAAlKu9I3v266a8AAADuAAAANQAYAAAAAAABAAAApIG2thIAc3RvcmFnZS93
ZWJzcWwvb3Blbi1kYXRhYmFzZS1lbXB0eS12ZXJzaW9uLXN0ZGVyci50eHRVVAUAA0bUiFd1eAsA
AQT1AQAABBQAAABQSwECHgMUAAIACAAlKu9I3v266a8AAADuAAAANAAYAAAAAAABAAAApIHUtxIA
c3RvcmFnZS93ZWJzcWwvb3Blbi1kYXRhYmFzZS1leHBhbmQtcXVvdGEtc3RkZXJyLnR4dFVUBQAD
RtSIV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIACUq70irePuhtQAAANwBAAA5ABgAAAAAAAEA
AACkgfG4EgBzdG9yYWdlL3dlYnNxbC9vcGVuLWRhdGFiYXNlLXNldC1lbXB0eS12ZXJzaW9uLXN0
ZGVyci50eHRVVAUAA0bUiFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAmKu9Iq3j7obUAAADc
AQAARQAYAAAAAAABAAAApIEZuhIAc3RvcmFnZS93ZWJzcWwvb3Blbi1kYXRhYmFzZS13aGlsZS10
cmFuc2FjdGlvbi1pbi1wcm9ncmVzcy1zdGRlcnIudHh0VVQFAANH1IhXdXgLAAEE9QEAAAQUAAAA
UEsBAh4DFAACAAgAJirvSN79uumvAAAA7gAAADkAGAAAAAAAAQAAAKSBTbsSAHN0b3JhZ2Uvd2Vi
c3FsL3ByaXZhdGUtYnJvd3Npbmctbm9yZWFkLW5vd3JpdGUtc3RkZXJyLnR4dFVUBQADR9SIV3V4
CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIACYq70g8ZvSMuQAAAMoCAABHABgAAAAAAAEAAACkgW+8
EgBzdG9yYWdlL3dlYnNxbC9yZWFkLWFuZC13cml0ZS10cmFuc2FjdGlvbnMtZG9udC1ydW4tdG9n
ZXRoZXItc3RkZXJyLnR4dFVUBQADR9SIV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIACYq70ir
ePuhtQAAANwBAABAABgAAAAAAAEAAACkgam9EgBzdG9yYWdlL3dlYnNxbC9yZWFkLXRyYW5zYWN0
aW9ucy1ydW5uaW5nLWNvbmN1cnJlbnRseS1zdGRlcnIudHh0VVQFAANH1IhXdXgLAAEE9QEAAAQU
AAAAUEsBAh4DFAACAAgAJirvSN79uumvAAAA7gAAACgAGAAAAAAAAQAAAKSB2L4SAHN0b3JhZ2Uv
d2Vic3FsL3NxbC1kYXRhLXR5cGVzLXN0ZGVyci50eHRVVAUAA0fUiFd1eAsAAQT1AQAABBQAAABQ
SwECHgMUAAIACAAmKu9Iq3j7obUAAADcAQAAQQAYAAAAAAABAAAApIHpvxIAc3RvcmFnZS93ZWJz
cWwvc3RhdGVtZW50LWVycm9yLWNhbGxiYWNrLWlzb2xhdGVkLXdvcmxkLXN0ZGVyci50eHRVVAUA
A0jUiFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAmKu9I3v266a8AAADuAAAAMgAYAAAAAAAB
AAAApIEZwRIAc3RvcmFnZS93ZWJzcWwvc3RhdGVtZW50LWVycm9yLWNhbGxiYWNrLXN0ZGVyci50
eHRVVAUAA0jUiFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAAmKu9Iq3j7obUAAADcAQAAQwAY
AAAAAAABAAAApIE0whIAc3RvcmFnZS93ZWJzcWwvc3RhdGVtZW50LXN1Y2Nlc3MtY2FsbGJhY2st
aXNvbGF0ZWQtd29ybGQtc3RkZXJyLnR4dFVUBQADSNSIV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQA
AgAIACcq70je/brprwAAAO4AAAAqABgAAAAAAAEAAACkgWbDEgBzdG9yYWdlL3dlYnNxbC9zdWNj
ZXNzLWNhbGxiYWNrLXN0ZGVyci50eHRVVAUAA0nUiFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIA
CAAnKu9I3v266a8AAADuAAAAQwAYAAAAAAABAAAApIF5xBIAc3RvcmFnZS93ZWJzcWwvc3VjY2Vz
cy1jYWxsYmFjay13aGVuLXBhZ2UtZGVmZXJzLWxvYWRpbmctc3RkZXJyLnR4dFVUBQADSdSIV3V4
CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIACcq70je/brprwAAAO4AAAApABgAAAAAAAEAAACkgaXF
EgBzdG9yYWdlL3dlYnNxbC90ZXN0LWF1dGhvcml6ZXItc3RkZXJyLnR4dFVUBQADSdSIV3V4CwAB
BPUBAAAEFAAAAFBLAQIeAxQAAgAIACcq70je/brprwAAAO4AAAA+ABgAAAAAAAEAAACkgbfGEgBz
dG9yYWdlL3dlYnNxbC90cmFuc2FjdGlvbi1jYWxsYmFjay1leGNlcHRpb24tY3Jhc2gtc3RkZXJy
LnR4dFVUBQADStSIV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIACcq70irePuhtQAAANwBAAA9
ABgAAAAAAAEAAACkgd7HEgBzdG9yYWdlL3dlYnNxbC90cmFuc2FjdGlvbi1jYWxsYmFjay1pc29s
YXRlZC13b3JsZC1zdGRlcnIudHh0VVQFAANK1IhXdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA
JyrvSKt4+6G1AAAA3AEAAEMAGAAAAAAAAQAAAKSBCskSAHN0b3JhZ2Uvd2Vic3FsL3RyYW5zYWN0
aW9uLWVycm9yLWNhbGxiYWNrLWlzb2xhdGVkLXdvcmxkLXN0ZGVyci50eHRVVAUAA0rUiFd1eAsA
AQT1AQAABBQAAABQSwECHgMUAAIACAAoKu9I3v266a8AAADuAAAANAAYAAAAAAABAAAApIE8yhIA
c3RvcmFnZS93ZWJzcWwvdHJhbnNhY3Rpb24tZXJyb3ItY2FsbGJhY2stc3RkZXJyLnR4dFVUBQAD
S9SIV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIACgq70je/brprwAAAO4AAAAvABgAAAAAAAEA
AACkgVnLEgBzdG9yYWdlL3dlYnNxbC90cmFuc2FjdGlvbi1wcm90b3R5cGUtc3RkZXJyLnR4dFVU
BQADS9SIV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIACgq70irePuhtQAAANwBAABFABgAAAAA
AAEAAACkgXHMEgBzdG9yYWdlL3dlYnNxbC90cmFuc2FjdGlvbi1zdWNjZXNzLWNhbGxiYWNrLWlz
b2xhdGVkLXdvcmxkLXN0ZGVyci50eHRVVAUAA0vUiFd1eAsAAQT1AQAABBQAAABQSwECHgMKAAAA
AABrKu9IAAAAAAAAAAAAAAAABAAYAAAAAAAAABAA7UGlzRIAc3ZnL1VUBQADydSIV3V4CwABBPUB
AAAEFAAAAFBLAQIeAwoAAAAAAGsq70gAAAAAAAAAAAAAAAALABgAAAAAAAAAEADtQePNEgBzdmcv
Y3VzdG9tL1VUBQADydSIV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAGsq70hhWIM7fwAAAI0A
AAAkABgAAAAAAAEAAACkgSjOEgBzdmcvY3VzdG9tL3plcm8tZGFzaGFycmF5LXN0ZGVyci50eHRV
VAUAA8nUiFd1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAAA3Ku9IAAAAAAAAAAAAAAAACwAYAAAA
AAAAABAA7UEFzxIAc3ZnL3N0cm9rZS9VVAUAA2rUiFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIA
CAA3Ku9ImgvRR38AAACNAAAAJQAYAAAAAAABAAAApIFKzxIAc3ZnL3N0cm9rZS96ZXJvLXdpZHRo
LWhhbmctc3RkZXJyLnR4dFVUBQADatSIV3V4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAEcq70gA
AAAAAAAAAAAAAAAMABgAAAAAAAAAEADtQSjQEgB1c2Vyc2NyaXB0cy9VVAUAA4XUiFd1eAsAAQT1
AQAABBQAAABQSwECHgMUAAIACABGKu9IaNNNI1cBAACKBgAAOgAYAAAAAAABAAAApIFu0BIAdXNl
cnNjcmlwdHMvd2luZG93LW9uZXJyb3ItZm9yLWlzb2xhdGVkLXdvcmxkLTMtYWN0dWFsLnR4dFVU
BQADhNSIV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAEYq70ijtR2bNQEAAEMFAAA4ABgAAAAA
AAEAAACkgTnSEgB1c2Vyc2NyaXB0cy93aW5kb3ctb25lcnJvci1mb3ItaXNvbGF0ZWQtd29ybGQt
My1kaWZmLnR4dFVUBQADhNSIV3V4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAEYq70jlV2qMVQEA
AIsGAAA8ABgAAAAAAAEAAACkgeDTEgB1c2Vyc2NyaXB0cy93aW5kb3ctb25lcnJvci1mb3ItaXNv
bGF0ZWQtd29ybGQtMy1leHBlY3RlZC50eHRVVAUAA4TUiFd1eAsAAQT1AQAABBQAAABQSwECHgMU
AAIACABHKu9IuBfgYFgIAACFIgAAQAAYAAAAAAABAAAApIGr1RIAdXNlcnNjcmlwdHMvd2luZG93
LW9uZXJyb3ItZm9yLWlzb2xhdGVkLXdvcmxkLTMtcHJldHR5LWRpZmYuaHRtbFVUBQADhdSIV3V4
CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAHQq70gAAAAAAAAAAAAAAAAGABgAAAAAAAAAEADtQX3e
EgB3ZWJnbC9VVAUAA9vUiFd1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAAB0Ku9IAAAAAAAAAAAA
AAAADAAYAAAAAAAAABAA7UG93hIAd2ViZ2wvMS4wLjIvVVQFAAPb1IhXdXgLAAEE9QEAAAQUAAAA
UEsBAh4DCgAAAAAAdCrvSAAAAAAAAAAAAAAAABgAGAAAAAAAAAAQAO1BA98SAHdlYmdsLzEuMC4y
L2NvbmZvcm1hbmNlL1VUBQAD29SIV3V4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAHQq70gAAAAA
AAAAAAAAAAAhABgAAAAAAAAAEADtQVXfEgB3ZWJnbC8xLjAuMi9jb25mb3JtYW5jZS90ZXh0dXJl
cy9VVAUAA9vUiFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACAB0Ku9IxpK6LncAAAB0AQAAOAAY
AAAAAAABAAAApIGw3xIAd2ViZ2wvMS4wLjIvY29uZm9ybWFuY2UvdGV4dHVyZXMvdGV4dHVyZS1u
cG90LXN0ZGVyci50eHRVVAUAA9vUiFd1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACGKu9IPk0/
wjQyAQCpihwAGQAYAAAAAAABAAAApIGZ4BIAd3B0d2tfcHJvY2Vzc19sb2cub3V0LnR4dFVUBQAD
/NSIV3V4CwABBPUBAAAEFAAAAFBLBQYAAAAACwILAs4CAQAgExQAAAA=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>283765</attachid>
            <date>2016-07-15 09:36:51 -0700</date>
            <delta_ts>2016-07-19 04:24:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-152723-20160716013601.patch</filename>
            <type>text/plain</type>
            <size>173186</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAzMjczCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
Y2VkZjY0ZmQxMjIyOGVhOWVmYjAyYmE3NTQ0MWIzMjkwOGJlODdkLi5hMjNjOWExNmNlNWYzNzI0
MGY5YzQ5N2JhOWVkNjE0MzhmYWNiNTIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMTUgQEAKKzIwMTYtMDctMTUgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0RGR11bRlRMXSBJbXBsZW1lbnQgRVM2IEdlbmVyYXRvcnMgaW4g
REZHIC8gRlRMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNTI3MjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUaGlzIHBhdGNoIGludHJvZHVjZXMgREZHIGFuZCBGVEwgc3VwcG9ydCBmb3IgRVM2IGdlbmVy
YXRvcnMuCisgICAgICAgIEVTNiBnZW5lcmF0b3IgaXMgY29tcGlsZWQgYnkgdGhlIEJ5dGVjb2Rl
R2VuZXJhdG9yLiBCdXQgYXQgdGhlIGxhc3QgcGhhc2UsIEJ5dGVjb2RlR2VuZXJhdG9yIHBlcmZv
cm1zICJnZW5lcmF0b3JpZmljYXRpb24iIG9udG8gdGhlIHVubGlua2VkIGNvZGUuCisgICAgICAg
IEluIEJ5dGVjb2RlR2VuZXJhdG9yIHBoYXNlLCB3ZSBpbnNlcnRlZCBzZXZlcmFsIHNwZWNpYWwg
bWFya2VycyBmb3IgdGhlIGdlbmVyYXRvcnMuIG9wX3NhdmUgYW5kIG9wX3Jlc3VtZS4KKyAgICAg
ICAgVGhlIG9wX3NhdmUsIG9wX3Jlc3VtZSBhbmQgdGhlIG1lcmdlIHBvaW50IGJsb2NrIGFyZSBj
b25uZWN0ZWQgYXMgZm9sbG93cy4KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG9wX3JldAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IF4KKyAgICAgICAgZW50cnkgLT4gZ2VuZXJhdG9yIHN3aXRjaCAtLS0tPiBvcF9zYXZlIC0+IG1l
cmdlIHBvaW50IC0+IC4uLgorICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIF4KKyAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0t
PiBvcF9yZXN1bWUgLS0tLS0rCisKKyAgICAgICAgSW4gdGhlIGdlbmVyYXRvcmlmaWNhdGlvbiBw
aGFzZSwgd2UgdHVybiBvdXQgd2hpY2ggdmFyaWFibGVzIHNob3VsZCBiZSBzYXZlZCBhbmQgcmVz
dW1lZCBhdCBlYWNoIG9wX3NhdmUgYW5kIG9wX3Jlc3VtZSwgYW5kIGNvbnZlcnQgdGhlc2UgYnl0
ZWNvZGVzCisgICAgICAgIHRvIHRoZSBzZXF1ZW5jZXMgb2YgdGhlIGdldF9mcm9tX3Njb3BlIGFu
ZCBwdXRfdG9fc2NvcGUuIFRoZSByZWdpc3RlcnMgYXJlIHNhdmVkIGFuZCByZXN1bWVkIG92ZXIg
dGhlIGdlbmVyYXRvcidzIG5leHQoKSBjYWxscyBieSB1c2luZyB0aGlzIHNwZWNpYWwKKyAgICAg
ICAgZ2VuZXJhdG9yIGZyYW1lIHNjb3BlLgorCisgICAgICAgIEluIHRoZSBnZW5lcmF0b3JpZmlj
YXRpb24gcGhhc2UsCisKKyAgICAgICAgMS4gRmlyc3QsIHdlIGNvbnN0cnVjdCB0aGUgQnl0ZWNv
ZGVHcmFwaCBmcm9tIHRoZSB1bmlua2VkIGluc3RydWN0aW9ucy4gVGhpcyBjb3JyZWN0bHkgY29u
c3RydWN0cyB0aGUgYmFzaWMgYmxvY2tzLCBhbmQgaXQgaXMgdXNlZCBpbiB0aGUgc3Vic2VxdWVu
dAorICAgICAgICAgICBhbmFseXNpcy4KKyAgICAgICAgMi4gV2UgcGVyZm9ybSB0aGUgYW5hbHlz
aXMgb250byB0aGUgdW5saW5rZWQgY29kZS4gV2UgaGF2ZSAyIGFuYWx5c2lzOiBsaXZlbmVzcyBh
bmFseXNpcyBhbmQgZ2VuZXJhdG9yIGRlZnMgYW5hbHlzaXMuCisgICAgICAgICAgIEluIGxpdmVu
ZXNzIGFuYWx5c2lzLCB3ZSBleHRyYWN0IHRoZSBsaXZlIHZhcmlhYmxlcyBhdCB0aGUgZWFjaCBt
ZXJnZSBwb2ludC4gVGhlc2UgdmFyaWFibGVzIHNob3VsZCBiZSByZXN1bWVkIHNpbmNlIHRoZXkK
KyAgICAgICAgICAgYXJlIHVzZWQgYWZ0ZXIgdGhlIG1lcmdlIHBvaW50LgorICAgICAgICAgICBB
bmQgd2UgYWxzbyBkcml2ZSB0aGUgZm9yd2FyZCBhbmFseXNpcywgY2FsbGVkIHRoZSBnZW5lcmF0
b3IgZGVmcyBhbmFseXNpcy4gQXQgb3Bfc2F2ZSwgd2Ugc2hvdWxkIHNhdmUgdGhlIHZhcmlhYmxl
cyB0aGF0ICgxKSB3aWxsIGJlIHVzZWQgYWZ0ZXIKKyAgICAgICAgICAgdGhlIG1lcmdlIHBvaW50
IGFuZCAoMikgbmV3bHkgZGVmaW5lZCB2YXJpYWJsZXMgZnJvbSB0aGUgcHJldmlvdXMgb3BfcmVz
dW1lLiBTbyB3ZSBwcm9wYWdhdGUgdGhlIGRlZnMgKGV4Y2VwdCBmb3Igb3BfcmVzdW1lIG9uZXMp
IGFuZCBjb2xsZWN0IHRoZQorICAgICAgICAgICBuZXdseSBkZWZpbmVkIHZhcmlhYmxlcyBhdCB0
aGUgb3Bfc2F2ZSBwb2ludC4gQnkgdXNpbmcgdGhpcyBiaXQgbWFzaywgd2UgZmlsdGVyIHRoZSBs
aXZlIHZhcmlhYmxlcyBhdCB0aGUgbWVyZ2UgcG9pbnQgdG8gcmVkdWNlIHRoZSBudW1iZXIgb2Yg
dGhlCisgICAgICAgICAgIHNhdmVkIHJlZ2lzdGVycy4gV2l0aG91dCB0aGlzLCB3ZSByZXBlYXRl
ZGx5IHNhdmUgdGhlIHJlZ2lzdGVyIHRoYXQgaXMgZGVmaW5lZCBieSBvcF9yZXN1bWUuCisgICAg
ICAgIDMuIFRoZW4sIHdlIGluc2VydCB0aGUgZ2V0X2Zyb21fc2NvcGUgYW5kIHB1dF90b19zY29w
ZSBhdCBlYWNoIG9wX3NhdmUgYW5kIG9wX3Jlc3VtZS4gVGhlbiwgY2xpcCB0aGUgb3Bfc2F2ZSBh
bmQgb3BfcmVzdW1lIHRoZW1zZWx2ZXMuIFRoZXkgYXJlIGV4ZWN1dGVkCisgICAgICAgICAgIGlu
IGEgYmF0Y2ggbWFubmVyIGJ5IEJ5dGVjb2RlSW5zZXJ0aW9uU2V0LiBTaW5jZSB0aGVzZSBtb2Rp
ZmljYXRpb24gY2hhbmdlcyB0aGUgYmFzaWMgYmxvY2tzIGFuZCBzaXplIG9mIHVubGlua2VkIGlu
c3RydWN0aW9ucywgQnl0ZWNvZGVJbnNlcnRpb25TZXQKKyAgICAgICAgICAgYWxzbyBwZXJmb3Jt
cyB0aGUgb2Zmc2V0IGFkanVzdG1lbnQgZm9yIFVubGlua2VkQ29kZUJsb2NrLiBTbywgdGhpcyBC
eXRlY29kZUluc2VydGlvblNldCBpcyBwZXJmb3JtZWQgb250byB0aGUgQnl0ZWNvZGVHcmFwaCBp
bnN0ZWFkIG9mIEJ5dGVjb2RlQmFzaWNCbG9jay4KKyAgICAgICAgICAgVGhlIHJlYXNvbiB3aHkg
d2UgdGFrZSB0aGlzIGRlc2lnbiBpcyBzaW1wbGUsIHdlIGRvbid0IHdhbnQgdG8gbmV3bHkgY3Jl
YXRlIHRoZSBiYXNpYyBibG9ja3MgYW5kIG9wY29kZXMgZm9yIHRoaXMgZWFybHkgcGhhc2UgbGlr
ZSBERkcuIEluc3RlYWQsCisgICAgICAgICAgIHdlIHBlcmZvcm0gdGhlIG1vZGlmaWNhdGlvbiBh
bmQgYWRqdXN0bWVudCB0byB0aGUgdW5saW5rZWQgaW5zdHJ1Y3Rpb25zIGFuZCBVbmxpbmtlZENv
ZGVCbG9jayBpbiBhIGluLXBsYWNlIG1hbm5lci4KKworICAgICAgICBBZnRlciB0aGF0IHBoYXNl
LCB0aGUgZGF0YSBmbG93IG9mIHRoZSBnZW5lcmF0b3Itc2F2ZWQtYW5kLXJlc3VtZWQtcmVnaXN0
ZXJzIGFyZSBleHBsaWNpdGx5IHJlcHJlc2VudGVkIGJ5IHRoZSBnZXRfZnJvbV9zY29wZSBhbmQg
cHV0X3RvX3Njb3BlLgorICAgICAgICBBbmQgb3Bfc2F2ZSBhbmQgb3BfcmVzdW1lIGFyZSByZW1v
dmVkLiBTaW5jZSB3ZSB1c2UgdGhlIGV4aXN0aW5nIGJ5dGVjb2RlcywgREZHIGFuZCBGVEwgY2hh
bmdlcyBhcmUgbm90IG5lY2Vzc2FyeS4KKworICAgICAgICBDb21waWxpbmcgRVM2IGdlbmVyYXRv
cnMgaW4gREZHIGFuZCBGVEwgZ2l2ZXMgdXMgc2lnbmlmaWNhbnQgcGVyZm9ybWFuY2UgaW1wcm92
ZW1lbnRzLgorICAgICAgICBJbiBteSB4NjQgTGludXggYm94IChoYW5heWFtYXRhKSwgdGhlIHJl
c3VsdCBvZiBKU0NPbmx5IHBvcnQgaXMgdGhlIGZvbGxvd2luZ3MuCisKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2VsaW5lICAgICAgICAgICAg
ICAgICAgIHBhdGNoZWQKKworICAgICAgICBnZW5lcmF0b3ItZmliICAgICAgICAgICAgICAgICAg
ICAgICAgICAxMDQuOTA1NSstMS44MTg5ICAgICBeICAgICAzNy4xMTcwKy0xLjExOTYgICAgICAg
IF4gZGVmaW5pdGVseSAyLjgyNjN4IGZhc3RlcgorICAgICAgICBnZW5lcmF0b3Itd2l0aC1zZXZl
cmFsLXR5cGVzICAgICAgICAgICAzNTEuOTc2MCstMTQuMjQzMCAgICBeICAgIDEzMy44ODkxKy0x
Ny42MDgzICAgICAgIF4gZGVmaW5pdGVseSAyLjYyODl4IGZhc3RlcgorICAgICAgICBnZW5lcmF0
b3Itc3Vuc3BpZGVyLWFjY2Vzcy1uc2lldmUgICAgICAgIDUuOTU1NSstMC4wNjY3ICAgICBeICAg
ICAgNS4wNzYwKy0wLjA2NDggICAgICAgIF4gZGVmaW5pdGVseSAxLjE3MzN4IGZhc3RlcgorCisg
ICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBidWlsdGlucy9HZW5lcmF0b3JQcm90b3R5
cGUuanM6CisgICAgICAgIChnbG9iYWxQcml2YXRlLmdlbmVyYXRvclJlc3VtZSk6CisgICAgICAg
ICogYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6bGlua0Js
b2Nrcyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlQmFzaWNCbG9jazo6Y29tcHV0ZUJ5dGVjb2Rl
QmFzaWNCbG9ja3NJbnRlcm5hbCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlQmFzaWNCbG9jazo6
Y29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MpOgorICAgICAgICAoSlNDOjpjb21wdXRlQnl0ZWNv
ZGVCYXNpY0Jsb2Nrcyk6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVCYXNp
Y0Jsb2NrLmg6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlQmFzaWNCbG9jazo6cHJlZGVjZXNzb3Jz
KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVCYXNpY0Jsb2NrOjphZGRQcmVkZWNlc3Nvcik6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlQmFzaWNCbG9jazo6aW5kZXgpOgorICAgICAgICAqIGJ5dGVj
b2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6
OmlzVmFsaWRSZWdpc3RlckZvckxpdmVuZXNzKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5l
cmF0b3JpZmljYXRpb246OkJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uKToKKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb246OnN0b3JhZ2VGb3JHZW5lcmF0b3JMb2NhbCk6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uOjpjb21wdXRlR2VuZXJh
dG9yRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0
b3JpZmljYXRpb246OmNvbXB1dGVHZW5lcmF0b3JVc2VzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbjo6c3RlcE92ZXJJbnN0cnVjdGlv
bik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uOjpjb21wdXRlTG9j
YWxMaXZlbmVzc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5l
cmF0b3JpZmljYXRpb246OmNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQmxvY2spOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbjo6Z2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29k
ZU9mZnNldCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uOjpydW5H
ZW5lcmF0b3JWYXJpYWJsZUxpdmVuZXNzQW5hbHlzaXMpOgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUdlbmVyYXRvcmlmaWNhdGlvbjo6c3RlcE92ZXJJbnN0cnVjdGlvbkZvclNhdmVkVmFyaWFibGUp
OgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbjo6Y29tcHV0ZUxvY2Fs
U2F2ZWRWYXJpYWJsZUZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVH
ZW5lcmF0b3JpZmljYXRpb246OmNvbXB1dGVMb2NhbFNhdmVkVmFyaWFibGVGb3JCbG9jayk6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uOjpnZXRTYXZlZFZhcmlhYmxl
SW5mb0F0Qnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcmlm
aWNhdGlvbjo6cnVuU2F2ZWRWYXJpYWJsZUFuYWx5c2lzKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNv
ZGVHZW5lcmF0b3JpZmljYXRpb246OnJ1bik6CisgICAgICAgIChKU0M6OnBlcmZvcm1HZW5lcmF0
b3JpZmljYXRpb24pOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0
aW9uLmg6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZUxpdmVuZXNzQW5hbHlzaXMuaC4KKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUdyYXBoLmg6
IEFkZGVkLgorICAgICAgICAoSlNDOjpCeXRlY29kZUdyYXBoOjpjb2RlQmxvY2spOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUdyYXBoOjpiYXNpY0Jsb2Nrcyk6CisgICAgICAgIChKU0M6OkJ5dGVj
b2RlR3JhcGg6Omluc3RydWN0aW9ucyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR3JhcGg6OmJh
c2ljQmxvY2tzSW5SZXZlcnNlT3JkZXIpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdyYXBoOjpi
bG9ja0NvbnRhaW5zQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdyYXBo
OjpmaW5kQmFzaWNCbG9ja0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNv
ZGVHcmFwaDo6ZmluZEJhc2ljQmxvY2tXaXRoTGVhZGVyT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHcmFwaDxCbG9jaz46OkJ5dGVjb2RlR3JhcGgpOgorICAgICAgICAqIGJ5dGVjb2Rl
L0J5dGVjb2RlSW5zZXJ0aW9uU2V0LmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
SW5zZXJ0aW9uU2V0OjphZGp1c3RPZmZzZXQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUluc2Vy
dGlvblNldDo6YXBwbHlNb2RpZmljYXRpb24pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUluc2Vy
dGlvblNldDo6ZXhlY3V0ZSk6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVJbnNlcnRpb25T
ZXQuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkJ5dGVjb2RlSW5zZXJ0aW9uU2V0OjpCeXRlY29k
ZUluc2VydGlvblNldCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlSW5zZXJ0aW9uU2V0OjppbnNl
cnQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUluc2VydGlvblNldDo6cmVtb3ZlQnl0ZWNvZGUp
OgorICAgICAgICAoSlNDOjpCeXRlY29kZUluc2VydGlvblNldDo6Z3JhcGgpOgorICAgICAgICAq
IGJ5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHA6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzKToKKyAgICAg
ICAgKEpTQzo6aXNWYWxpZFJlZ2lzdGVyRm9yTGl2ZW5lc3MpOgorICAgICAgICAoSlNDOjpzdGVw
T3Zlckluc3RydWN0aW9uKToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JC
eXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OmNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQmxv
Y2spOgorICAgICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OnJ1bkxpdmVuZXNz
Rml4cG9pbnQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmdldExp
dmVuZXNzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUxpdmVu
ZXNzQW5hbHlzaXM6OmNvbXB1dGVGdWxsTGl2ZW5lc3MpOgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGVLaWxscyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
TGl2ZW5lc3NBbmFseXNpczo6ZHVtcFJlc3VsdHMpOgorICAgICAgICAoSlNDOjpnZXRMZWFkZXJP
ZmZzZXRGb3JCYXNpY0Jsb2NrKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6ZmluZEJhc2ljQmxv
Y2tXaXRoTGVhZGVyT2Zmc2V0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6YmxvY2tDb250YWlu
c0J5dGVjb2RlT2Zmc2V0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6ZmluZEJhc2ljQmxvY2tG
b3JCeXRlY29kZU9mZnNldCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkJ5dGVjb2RlTGl2ZW5l
c3NBbmFseXNpczo6Y29tcHV0ZSk6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNv
ZGVMaXZlbmVzc0FuYWx5c2lzLmg6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYu
aDoKKyAgICAgICAgKEpTQzo6Y29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAg
IChKU0M6OmNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAqIGJ5dGVjb2Rl
L0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24p
OgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmhhbmRsZXJGb3JJbmRleCk6CisgICAgICAgIChK
U0M6OkNvZGVCbG9jazo6bGl2ZW5lc3NBbmFseXNpc1Nsb3cpOgorICAgICAgICAoSlNDOjpDb2Rl
QmxvY2s6OmR1bXBCeXRlY29kZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6
c2hyaW5rVG9GaXQpOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5oOgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmlzQ29uc3RhbnRSZWdpc3RlckluZGV4KToKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjpsaXZlbmVzc0FuYWx5c2lzKToKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjpsaXZlQ2FsbGVlTG9jYWxzQXRZaWVsZCk6IERlbGV0ZWQuCisgICAgICAgICogYnl0
ZWNvZGUvSGFuZGxlckluZm8uaDoKKyAgICAgICAgKEpTQzo6SGFuZGxlckluZm9CYXNlOjpoYW5k
bGVyRm9ySW5kZXgpOgorICAgICAgICAqIGJ5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5jcHA6
CisgICAgICAgIChKU0M6OmdldEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAg
ICAoSlNDOjpjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzSW50ZXJuYWwpOgorICAgICAgICAoSlND
Ojpjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKToKKyAgICAgICAgKEpTQzo6cmVjb21wdXRlUHJl
Y2lzZUp1bXBUYXJnZXRzKToKKyAgICAgICAgKEpTQzo6ZmluZEp1bXBUYXJnZXRzRm9yQnl0ZWNv
ZGVPZmZzZXQpOgorICAgICAgICAqIGJ5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5oOgorICAg
ICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6VW5s
aW5rZWRDb2RlQmxvY2s6OmhhbmRsZXJGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6
OlVubGlua2VkQ29kZUJsb2NrOjpoYW5kbGVyRm9ySW5kZXgpOgorICAgICAgICAoSlNDOjpVbmxp
bmtlZENvZGVCbG9jazo6YXBwbHlNb2RpZmljYXRpb24pOgorICAgICAgICAqIGJ5dGVjb2RlL1Vu
bGlua2VkQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6OlVubGlua2VkU3RyaW5nSnVtcFRhYmxl
OjpvZmZzZXRGb3JWYWx1ZSk6CisgICAgICAgICogYnl0ZWNvZGUvVmlydHVhbFJlZ2lzdGVyLmg6
CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNv
ZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXRDb21wbGV4UG9wU2NvcGVzKToKKyAgICAgICAgKEpTQzo6cHJlcGFyZUp1
bXBUYWJsZUZvclN0cmluZ1N3aXRjaCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0WWllbGRQb2ludCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
U2F2ZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzdW1lKToKKyAg
ICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRvckZyYW1lUmVnaXN0ZXIpOgorICAgICAgICAqIGRm
Zy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBnZW5lcmF0ZS1ieXRlY29kZS1maWxlczoK
KyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6OmZp
bmRFeGNlcHRpb25IYW5kbGVyKToKKyAgICAgICAgKEpTQzo6R2V0Q2F0Y2hIYW5kbGVyRnVuY3Rv
cjo6b3BlcmF0b3IoKSk6CisgICAgICAgIChKU0M6OlVud2luZEZ1bmN0b3I6Om9wZXJhdG9yKCkp
OgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmg6CisgICAgICAgICogaW50ZXJw
cmV0ZXIvSW50ZXJwcmV0ZXJJbmxpbmVzLmg6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHMuaC4KKyAgICAgICAgKEpTQzo6SW50ZXJw
cmV0ZXI6OmdldE9wY29kZUlEKToKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpT
Qzo6SklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKTogRGVsZXRlZC4KKyAgICAgICAgKiBqaXQv
SklULmg6CisgICAgICAgICogaml0L0pJVE9wY29kZXMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRfb3Bfc2F2ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9yZXN1
bWUpOiBEZWxldGVkLgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgor
ICAgICAgICAqIHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJU
eXBlPjo6cGFyc2VJbm5lcik6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJz
ZUdlbmVyYXRvckZ1bmN0aW9uU291cmNlRWxlbWVudHMpOgorICAgICAgICAoSlNDOjpQYXJzZXI8
TGV4ZXJUeXBlPjo6Y3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyk6CisgICAgICAgICogcGFyc2Vy
L1BhcnNlci5oOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcDoKKyAgICAg
ICAgKEpTQzo6U0xPV19QQVRIX0RFQ0wpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvQ29t
bW9uU2xvd1BhdGhzLmg6CisgICAgICAgICogcnVudGltZS9HZW5lcmF0b3JGcmFtZS5jcHA6IFJl
bW92ZWQuCisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpHZW5lcmF0b3JGcmFtZSk6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpmaW5pc2hDcmVhdGlvbik6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpjcmVhdGVTdHJ1Y3R1cmUpOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlKTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OnNhdmUpOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjpHZW5lcmF0b3JGcmFtZTo6cmVzdW1lKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6R2Vu
ZXJhdG9yRnJhbWU6OnZpc2l0Q2hpbGRyZW4pOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUv
R2VuZXJhdG9yRnJhbWUuaDogUmVtb3ZlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6
OmxvY2Fscyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpsb2NhbEF0
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6Om9mZnNldE9mTG9jYWxz
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OmFsbG9jYXRpb25TaXpl
Rm9yTG9jYWxzKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAg
KEpTQzo6Vk06OlZNKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisgICAgICAg
ICogdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLWFuZC1hcnJheS5qczogQWRkZWQuCisg
ICAgICAgIChmaWIpOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC1h
bmQtb2JqZWN0LmpzOiBBZGRlZC4KKyAgICAgICAgKGZpYik6CisgICAgICAgICogdGVzdHMvc3Ry
ZXNzL2dlbmVyYXRvci1maWItZnRsLWFuZC1zdHJpbmcuanM6IEFkZGVkLgorICAgICAgICAoZmli
KToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwuanM6IEFkZGVkLgor
ICAgICAgICAoZmliKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZyYW1lLWVt
cHR5LmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZFRocm93KToKKyAgICAgICAgKHNob3VsZFRo
cm93LmZpYik6CisgICAgICAgICogdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1yZWR1Y2VkLXNhdmUt
cG9pbnQtcHV0LXRvLXNjb3BlLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAg
ICAgKGdlbik6CisKIDIwMTYtMDctMTUgIENzYWJhIE9zenRyb2dvbsOhYyAgPG9zc3lAd2Via2l0
Lm9yZz4KIAogICAgICAgICBbQVJNXSBEaXNhYmxlIElubGluZSBDYWNoaW5nIG9uIEFSTXY3IHRy
YWRpdGlvbmFsIHVudGlsIHByb3BlciBmaXgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4
dAppbmRleCBjNDk3N2RhZmUyYWU1OGQxNzQ1MjgwNTlhZGM5NzkyNzJkMTg5MzdlLi4wNjRlMTRk
MDEwMzk2MzdlNzY2MTBkNmUzOTlmOWIyNmJhMzJjYThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NN
YWtlTGlzdHMudHh0CkBAIC0xNzgsNiArMTc4LDggQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NPVVJD
RVMKICAgICBieXRlY29kZS9BcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcAogICAgIGJ5dGVjb2Rl
L0FycmF5UHJvZmlsZS5jcHAKICAgICBieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suY3BwCisg
ICAgYnl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwCisgICAgYnl0ZWNvZGUv
Qnl0ZWNvZGVJbnNlcnRpb25TZXQuY3BwCiAgICAgYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNS
ZWdpc3RyeS5jcHAKICAgICBieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwCiAg
ICAgYnl0ZWNvZGUvQ2FsbEVkZ2UuY3BwCkBAIC02NTUsNyArNjU3LDYgQEAgc2V0KEphdmFTY3Jp
cHRDb3JlX1NPVVJDRVMKICAgICBydW50aW1lL0Z1bmN0aW9uSGFzRXhlY3V0ZWRDYWNoZS5jcHAK
ICAgICBydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcAogICAgIHJ1bnRpbWUvRnVuY3Rpb25S
YXJlRGF0YS5jcHAKLSAgICBydW50aW1lL0dlbmVyYXRvckZyYW1lLmNwcAogICAgIHJ1bnRpbWUv
R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKICAgICBydW50aW1lL0dlbmVyYXRvckZ1
bmN0aW9uUHJvdG90eXBlLmNwcAogICAgIHJ1bnRpbWUvR2VuZXJhdG9yUHJvdG90eXBlLmNwcApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBiNjhhOTZiMWI0ZjY5MzgxODI4YjE2YThm
OThjNDVhOWRkYWJmMWU5Li5jMDE3NWQ3MGJhZTUzYmU3YWUxMzFmNmE0MDVjNTdjNGY1YzE3NzU5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTI1Miw4ICsxMjUyLDYgQEAKIAkJ
NzA5RkI4NkMxQUUzMzVDNjAwMzlEMDY5IC8qIFdlYWtTZXRQcm90b3R5cGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwOUZCODY2MUFFMzM1QzYwMDM5
RDA2OSAvKiBXZWFrU2V0UHJvdG90eXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzBCMEE5RDExQTlCNjY0NjAwMDEzMDZBIC8qIFJ1bnRpbWVG
bGFncy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBC
MEE5RDAxQTlCNjYyMDAwMDEzMDZBIC8qIFJ1bnRpbWVGbGFncy5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcwQjc5MTkxMUMwMjRBMTMwMDI0ODFF
MiAvKiBTb3VyY2VDb2RlS2V5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3MEI3OTE4RTFDMDI0NEM5MDAyNDgxRTIgLyogU291cmNlQ29kZUtleS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTcwQjc5MTky
MUMwMjRBMjMwMDI0ODFFMiAvKiBHZW5lcmF0b3JGcmFtZS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEI3OTE4MzFDMDI0NDMyMDAyNDgxRTIgLyog
R2VuZXJhdG9yRnJhbWUuY3BwICovOyB9OwotCQk3MEI3OTE5MzFDMDI0QTI4MDAyNDgxRTIgLyog
R2VuZXJhdG9yRnJhbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDcwQjc5MTg0MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGcmFtZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcwQjc5MTk0MUMw
MjRBMjgwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwQjc5MTg1MUMwMjQ0MzIw
MDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCAqLzsgfTsKIAkJNzBC
NzkxOTUxQzAyNEEyODAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwQjc5MTg2MUMw
MjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzBCNzkxOTYxQzAyNEEy
ODAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwQjc5MTg3MUMwMjQ0MzIwMDI0ODFF
MiAvKiBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5jcHAgKi87IH07CkBAIC0yMDIyLDYgKzIw
MjAsMTEgQEAKIAkJRTE4RTNBNTkwREY5Mjc4QzAwRDkwQjM0IC8qIFZNLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxOEUzQTU3MERGOTI3OEMwMEQ5
MEIzNCAvKiBWTS5jcHAgKi87IH07CiAJCUUzMThDQkMwMUI4QUVGNTEwMEEyOTI5RCAvKiBKU01v
ZHVsZU5hbWVzcGFjZU9iamVjdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFMzE4Q0JCRTFCOEFFRjUxMDBBMjkyOUQgLyogSlNNb2R1bGVOYW1lc3Bh
Y2VPYmplY3QuY3BwICovOyB9OwogCQlFMzE4Q0JDMTFCOEFFRjUxMDBBMjkyOUQgLyogSlNNb2R1
bGVOYW1lc3BhY2VPYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEUzMThDQkJGMUI4QUVGNTEwMEEyOTI5RCAvKiBKU01vZHVsZU5hbWVzcGFjZU9i
amVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CUUzMjhEQUU3MUQzOEQwMDQwMDFBMjUyOSAvKiBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0QyNjQy
NjFEMzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwICovOyB9
OworCQlFMzI4REFFODFEMzhEMDA1MDAxQTI1MjkgLyogQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRp
b24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzRDI2
NDI3MUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUUzMjhEQUU5MUQz
OEQwMDUwMDFBMjUyOSAvKiBCeXRlY29kZUdyYXBoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0QyNjQyODFEMzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNv
ZGVHcmFwaC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCUUzMjhEQUVBMUQzOEQwMDUwMDFBMjUyOSAvKiBCeXRlY29kZUluc2VydGlvblNldC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0QyNjQyOTFE
MzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNvZGVJbnNlcnRpb25TZXQuY3BwICovOyB9OworCQlFMzI4
REFFQjFEMzhEMDA1MDAxQTI1MjkgLyogQnl0ZWNvZGVJbnNlcnRpb25TZXQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzRDI2NDJBMUQzOEMwNDIwMDBC
RTE3NCAvKiBCeXRlY29kZUluc2VydGlvblNldC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzMzYzN0E1MUI2MzIyMDIwMEVFMDg0MCAvKiBSZWZs
ZWN0T2JqZWN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEUzMzYzN0EzMUI2MzIyMDIwMEVFMDg0MCAvKiBSZWZsZWN0T2JqZWN0LmNwcCAqLzsgfTsK
IAkJRTMzNjM3QTYxQjYzMjIwMjAwRUUwODQwIC8qIFJlZmxlY3RPYmplY3QuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMzYzN0E0MUI2MzIyMDIwMEVF
MDg0MCAvKiBSZWZsZWN0T2JqZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJRTMzQjNFMjYxQjdBQkQ3NTAwNDhEQjJFIC8qIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbk9iamVjdC5sdXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEUzM0IzRTI1MUI3QUJENzUwMDQ4REIyRSAvKiBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb25PYmplY3QubHV0LmggKi87IH07CkBAIC0yMDQ2LDYgKzIwNDksNyBAQAogCQlF
Mzc5NEU3NTFCNzdFQjk3MDA1NTQzQUUgLyogTW9kdWxlQW5hbHl6ZXIuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM3OTRFNzMxQjc3RUI5NzAwNTU0
M0FFIC8qIE1vZHVsZUFuYWx5emVyLmNwcCAqLzsgfTsKIAkJRTM3OTRFNzYxQjc3RUI5NzAwNTU0
M0FFIC8qIE1vZHVsZUFuYWx5emVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFMzc5NEU3NDFCNzdFQjk3MDA1NTQzQUUgLyogTW9kdWxlQW5hbHl6ZXIu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzk2
M0NFRTFCNzNGNzUwMDBFQjRDRTUgLyogTm9kZXNBbmFseXplTW9kdWxlLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOTYzQ0VDMUI3M0Y3NTAwMEVC
NENFNSAvKiBOb2Rlc0FuYWx5emVNb2R1bGUuY3BwICovOyB9OworCQlFMzlENDVGNTFEMzkwMDU2
MDBCM0IzNzcgLyogSW50ZXJwcmV0ZXJJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzlEOUQ4NDFEMzkwMDA2MDA2NjcyODIgLyogSW50ZXJw
cmV0ZXJJbmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJRTM5REE0QTYxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOURBNEE0MUI3
RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29yZC5jcHAgKi87IH07CiAJCUUzOURBNEE3MUI3
RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29yZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5REE0QTUxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9k
dWxlUmVjb3JkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJRTNEMjM5QzgxQjgyOUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxlRW52aXJvbm1lbnQuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNEMjM5QzYx
QjgyOUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxlRW52aXJvbm1lbnQuY3BwICovOyB9OwpAQCAtMzQ0
NSw4ICszNDQ5LDYgQEAKIAkJNzA5RkI4NjUxQUUzMzVDNjAwMzlEMDY5IC8qIFdlYWtTZXRQcm90
b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2Vha1NldFBy
b3RvdHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcwOUZCODY2MUFFMzM1
QzYwMDM5RDA2OSAvKiBXZWFrU2V0UHJvdG90eXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdlYWtTZXRQcm90b3R5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNzBCMEE5RDAxQTlCNjYyMDAwMDEzMDZBIC8qIFJ1bnRpbWVGbGFncy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBSdW50aW1lRmxhZ3MuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJNzBCNzkxODMxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZyYW1lLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdlbmVyYXRvckZyYW1lLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNzBCNzkxODQxQzAyNDQzMjAwMjQ4MUUy
IC8qIEdlbmVyYXRvckZyYW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdl
bmVyYXRvckZyYW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcwQjc5MTg1MUMw
MjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0
b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MEI3OTE4NjFDMDI0NDMyMDAy
NDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcwQjc5MTg3MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0
b3JGdW5jdGlvblByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC00MjgyLDEwICs0Mjg0LDE2IEBACiAJCUUzNzk0RTczMUI3N0VCOTcwMDU1NDNB
RSAvKiBNb2R1bGVBbmFseXplci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBNb2R1bGVBbmFseXplci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUz
Nzk0RTc0MUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFseXplci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBNb2R1bGVBbmFseXplci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlFMzk2M0NFQzFCNzNGNzUwMDBFQjRDRTUgLyogTm9kZXNBbmFseXplTW9kdWxl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5vZGVzQW5hbHl6ZU1v
ZHVsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzOUQ5RDg0MUQzOTAwMDYw
MDY2NzI4MiAvKiBJbnRlcnByZXRlcklubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSW50ZXJwcmV0ZXJJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUUzOURBNEE0MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29yZC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU01vZHVsZVJlY29yZC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOURBNEE1MUI3RThCN0MwMDg0RjMzQSAvKiBKU01v
ZHVsZVJlY29yZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU01vZHVsZVJl
Y29yZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0QyMzlDNjFCODI5QzFDMDBC
QkVGNjcgLyogSlNNb2R1bGVFbnZpcm9ubWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU01vZHVsZUVudmlyb25tZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRTNEMjM5QzcxQjgyOUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxlRW52aXJvbm1l
bnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNNb2R1bGVFbnZpcm9ubWVu
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFM0QyNjQyNjFEMzhDMDQyMDAwQkUx
NzQgLyogQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlFM0QyNjQyNzFEMzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNv
ZGVHZW5lcmF0b3JpZmljYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Qnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJRTNEMjY0MjgxRDM4QzA0MjAwMEJFMTc0IC8qIEJ5dGVjb2RlR3JhcGguaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnl0ZWNvZGVHcmFwaC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlFM0QyNjQyOTFEMzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNvZGVJbnNlcnRp
b25TZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQnl0ZWNvZGVJ
bnNlcnRpb25TZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFM0QyNjQyQTFE
MzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNvZGVJbnNlcnRpb25TZXQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQnl0ZWNvZGVJbnNlcnRpb25TZXQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRTNFRjg4NzIxQjY2REYyMzAwM0YyNkNCIC8qIEpTUHJvcGVydHlOYW1l
SXRlcmF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNQcm9w
ZXJ0eU5hbWVJdGVyYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzRUY4
ODczMUI2NkRGMjMwMDNGMjZDQiAvKiBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTQ5REMxNDkxMkVGMjYxQTAwMTg0QTFGIC8qIFNvdXJj
ZVByb3ZpZGVyQ2FjaGVJdGVtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNv
dXJjZVByb3ZpZGVyQ2FjaGVJdGVtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00
OTk4LDYgKzUwMDYsNyBAQAogCQkxNDI5RDc3QTBFRDIwRDczMDBCODk2MTkgLyogaW50ZXJwcmV0
ZXIgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUUzOUQ5
RDg0MUQzOTAwMDYwMDY2NzI4MiAvKiBJbnRlcnByZXRlcklubGluZXMuaCAqLywKIAkJCQkwRjU1
RjBGMTE0RDEwNjM2MDBBQzc2NDkgLyogQWJzdHJhY3RQQy5jcHAgKi8sCiAJCQkJMEY1NUYwRjIx
NEQxMDYzNjAwQUM3NjQ5IC8qIEFic3RyYWN0UEMuaCAqLywKIAkJCQkxNDI5RDg1QjBFRDIxOEU5
MDBCODk2MTkgLyogQ0xvb3BTdGFjay5jcHAgKi8sCkBAIC01NjY3LDggKzU2NzYsNiBAQAogCQkJ
CUY2OTJBODVEMDI1NTU5N0QwMUZGNjBGNyAvKiBGdW5jdGlvblByb3RvdHlwZS5oICovLAogCQkJ
CTYyRDJEMzhEMUFERjEwM0YwMDAyMDZDMSAvKiBGdW5jdGlvblJhcmVEYXRhLmNwcCAqLywKIAkJ
CQk2MkQyRDM4RTFBREYxMDNGMDAwMjA2QzEgLyogRnVuY3Rpb25SYXJlRGF0YS5oICovLAotCQkJ
CTcwQjc5MTgzMUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGcmFtZS5jcHAgKi8sCi0JCQkJ
NzBCNzkxODQxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZyYW1lLmggKi8sCiAJCQkJNzBC
NzkxODUxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3Bw
ICovLAogCQkJCTcwQjc5MTg2MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvbkNv
bnN0cnVjdG9yLmggKi8sCiAJCQkJNzBCNzkxODcxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRv
ckZ1bmN0aW9uUHJvdG90eXBlLmNwcCAqLywKQEAgLTY1NTAsNiArNjU1NywxMSBAQAogCQk5NjlB
MDc4RjBFRDFEM0FFMDBGMUY2ODEgLyogYnl0ZWNvZGUgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91
cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUUzRDI2NDI2MUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRl
Y29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHAgKi8sCisJCQkJRTNEMjY0MjcxRDM4QzA0MjAwMEJF
MTc0IC8qIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmggKi8sCisJCQkJRTNEMjY0MjgxRDM4
QzA0MjAwMEJFMTc0IC8qIEJ5dGVjb2RlR3JhcGguaCAqLywKKwkJCQlFM0QyNjQyOTFEMzhDMDQy
MDAwQkUxNzQgLyogQnl0ZWNvZGVJbnNlcnRpb25TZXQuY3BwICovLAorCQkJCUUzRDI2NDJBMUQz
OEMwNDIwMDBCRTE3NCAvKiBCeXRlY29kZUluc2VydGlvblNldC5oICovLAogCQkJCTUzNzBCNEYz
MUJGMjVFQTIwMDVDNDBGQyAvKiBBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9p
bnRCYXNlLmNwcCAqLywKIAkJCQk1MzcwQjRGNDFCRjI1RUEyMDA1QzQwRkMgLyogQWRhcHRpdmVJ
bmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50QmFzZS5oICovLAogCQkJCTBGODMzNUI0MTYz
OUMxRTMwMDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcCAqLywKQEAgLTcxMDQs
NiArNzExNiw3IEBACiAJCQkJMEZFQzg1MkQxQkRBQ0RBQzAwODBGRjc0IC8qIEIzUHJvY2VkdXJl
SW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQzg1QkQxQkUxNDYyRjAwODBGRjc0IC8q
IEIzUmVkdWNlU3RyZW5ndGguaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUM4NTMxMUJEQUNEQUMw
MDgwRkY3NCAvKiBCM1N0YWNrbWFwU3BlY2lhbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTMyOERB
RTgxRDM4RDAwNTAwMUEyNTI5IC8qIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRkVDODUzNTFCREFDREFDMDA4MEZGNzQgLyogQjNTbG90QmFzZVZhbHVl
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVDODUzNjFCREFDREFDMDA4MEZGNzQgLyogQjNTdWNj
ZXNzb3JDb2xsZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVDODUzODFCREFDREFDMDA4
MEZGNzQgLyogQjNTd2l0Y2hDYXNlLmggaW4gSGVhZGVycyAqLywKQEAgLTczNjQsNyArNzM3Nyw2
IEBACiAJCQkJQTczNzgxMEUxNzk5RUEyRTAwODE3NTMzIC8qIERGR05hdHVyYWxMb29wcy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJODZFQ0EzRUExMzJERUYxQzAwMkIyQUQ3IC8qIERGR05vZGUuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGRkI5MjFCMTZEMDJGMDEwMDU1QTVEQiAvKiBERkdOb2RlQWxs
b2NhdG9yLmggaW4gSGVhZGVycyAqLywKLQkJCQk3MEI3OTE5MzFDMDI0QTI4MDAyNDgxRTIgLyog
R2VuZXJhdG9yRnJhbWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQTU4MUJCMTUwRTk1MzAwMEI5
QTJEOSAvKiBERkdOb2RlRmxhZ3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMzAwQjc4MThBQjA1
MTEwMEE2RDcyRSAvKiBERkdOb2RlT3JpZ2luLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkE1ODFC
QzE1MEU5NTMwMDBCOUEyRDkgLyogREZHTm9kZVR5cGUuaCBpbiBIZWFkZXJzICovLApAQCAtNzM3
OSw2ICs3MzkxLDcgQEAKIAkJCQkwRkQ4QTMyNjE3RDUxRjU3MDBDQTJDNDAgLyogREZHT1NSRW50
cnlwb2ludENyZWF0aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQzA5NzZBMTQ2OEE2
RjcwMENGMjQ0MiAvKiBERkdPU1JFeGl0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjIzNUJFQzE3
MTc4RTczMDA2OTBDN0YgLyogREZHT1NSRXhpdEJhc2UuaCBpbiBIZWFkZXJzICovLAorCQkJCUUz
OUQ0NUY1MUQzOTAwNTYwMEIzQjM3NyAvKiBJbnRlcnByZXRlcklubGluZXMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGRkI5MjFDMTZEMDJGMTEwMDU1QTVEQiAvKiBERkdPU1JFeGl0Q29tcGlsYXRp
b25JbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkMwOTc3MTE0NjkzQUY1MDBDRjI0NDIgLyog
REZHT1NSRXhpdENvbXBpbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjcwMjVBQTE3MTRCMEZD
MDAzODJDMEUgLyogREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmggaW4gSGVhZGVycyAqLywKQEAg
LTc2MzYsNiArNzY0OSw3IEBACiAJCQkJRTMzQjNFMjYxQjdBQkQ3NTAwNDhEQjJFIC8qIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5sdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1MzI0
MzhDMTg1NjgzMzUwMDJFRDY5MiAvKiBJbnNwZWN0b3JQcm90b2NvbE9iamVjdHMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUE1NUQ5M0FDMTg1MTRGNzkwMDQwMERFRCAvKiBJbnNwZWN0b3JQcm90b2Nv
bFR5cGVzLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzI4REFFQjFEMzhEMDA1MDAxQTI1MjkgLyog
Qnl0ZWNvZGVJbnNlcnRpb25TZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1MEU0QjYyMTg4MDlE
RDUwMDY4QTQ2RCAvKiBJbnNwZWN0b3JSdW50aW1lQWdlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUE1OTNDRjgzMTg0MDM3NzEwMEJGQ0UyNyAvKiBJbnNwZWN0b3JWYWx1ZXMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTk2OUEwNzk5MEVEMUQzQUUwMEYxRjY4MSAvKiBJbnN0cnVjdGlvbi5oIGluIEhl
YWRlcnMgKi8sCkBAIC03NzY0LDYgKzc3NzgsNyBAQAogCQkJCUUzM0Y1MDgxMUI4NDI5QTQwMDQx
Mzg1NiAvKiBKU0ludGVybmFsUHJvbWlzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY2MTgzMkEx
QzQ1QkYwNzAwNzI0NTBCIC8qIEFpckNDYWxsaW5nQ29udmVudGlvbi5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRTMzRjUwNzkxQjg0MjI1NzAwNDEzODU2IC8qIEpTSW50ZXJuYWxQcm9taXNlQ29uc3Ry
dWN0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzMjhEQUU5MUQzOEQwMDUwMDFBMjUyOSAvKiBC
eXRlY29kZUdyYXBoLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMzNGNTA4NzFCODQ0OUVGMDA0MTM4
NTYgLyogSlNJbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvci5sdXQuaCBpbiBIZWFkZXJzICovLAog
CQkJCUUzM0Y1MDg1MUI4NDM3QTAwMDQxMzg1NiAvKiBKU0ludGVybmFsUHJvbWlzZURlZmVycmVk
LmggaW4gSGVhZGVycyAqLywKIAkJCQlFMzNGNTA3NTFCODQyMUMwMDA0MTM4NTYgLyogSlNJbnRl
cm5hbFByb21pc2VQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLApAQCAtODcwNSw2ICs4NzIwLDcg
QEAKIAkJCQkxNDdGMzlCRDEwN0VDMzc2MDA0MjdBNDggLyogQXJnTGlzdC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkwRjc0M0JBQTE2Qjg4MjQ5MDA5RjkyNzcgLyogQVJNNjREaXNhc3NlbWJsZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODZEM0IyQzMxMDE1NkJERTAwMjg2NUU3IC8qIEFSTUFz
c2VtYmxlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFMzI4REFFNzFEMzhEMDA0MDAxQTI1Mjkg
LyogQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNjVD
MDI4NTAxNzE3OTVFMjAwMzUxRTM1IC8qIEFSTXY3RGlzYXNzZW1ibGVyLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTY1QzAyODVDMTcxNzk2NjgwMDM1MUUzNSAvKiBBUk12N0RPcGNvZGUuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMEY4MzM1QjcxNjM5QzFFNjAwMTQ0M0I1IC8qIEFycmF5QWxsb2Nh
dGlvblByb2ZpbGUuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC05MDM5LDYgKzkwNTUsNyBAQAogCQkJ
CTBGMjVGMUIxMTgxNjM1RjMwMDUyMkYzOSAvKiBGVExTbG93UGF0aENhbGwuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMEYzMzhERjExQkU5M0FEMTAwMTNDODhGIC8qIEIzU3RhY2ttYXBWYWx1ZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjI1RjFCMzE4MTYzNUYzMDA1MjJGMzkgLyogRlRMU2xv
d1BhdGhDYWxsS2V5LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUUzMjhEQUVBMUQzOEQwMDUwMDFB
MjUyOSAvKiBCeXRlY29kZUluc2VydGlvblNldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MzE5
REEwMzFDMUJFNDBBMDAxRDI2MEIgLyogQjNMb3dlck1hY3Jvc0FmdGVyT3B0aW1pemF0aW9ucy5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkVBMEExNjE3MDZCQjkwMDBCQjcyMkMgLyogRlRMU3Rh
dGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyMzVCRTExNzE3OEUxQzAwNjkwQzdGIC8qIEZU
TFRodW5rcy5jcHAgaW4gU291cmNlcyAqLywKQEAgLTk0NDAsNyArOTQ1Nyw2IEBACiAJCQkJNzlF
RTBCRkYxQjRBRkI4NTAwMDM4NUM5IC8qIFZhcmlhYmxlRW52aXJvbm1lbnQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMEY2QzczNTAxQUM5Rjk5RjAwQkUxNjgyIC8qIFZhcmlhYmxlV3JpdGVGaXJl
RGV0YWlsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRTA1MDJDMUFBOTA5NTYwMEQzM0IzMyAv
KiBWYXJPZmZzZXQuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNzBCNzkxOTIxQzAyNEEyMzAwMjQ4
MUUyIC8qIEdlbmVyYXRvckZyYW1lLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMjBDMjU5MUE4
MDEzQUIwMERBMzIyOSAvKiBWaXJ0dWFsUmVnaXN0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
RTE4RTNBNTkwREY5Mjc4QzAwRDkwQjM0IC8qIFZNLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZF
NTkzMkE3MTgzQzVBMjYwMEExRUNDQyAvKiBWTUVudHJ5U2NvcGUuY3BwIGluIFNvdXJjZXMgKi8s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvR2VuZXJhdG9yUHJv
dG90eXBlLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0dlbmVyYXRvclByb3Rv
dHlwZS5qcwppbmRleCAzYzE0MDY4N2RmYzdlMDBlZmU5MWFlODBiMmFjNjc2ZmE5YmY0OGY0Li40
OTlkYmQzOTJlODMxM2RjZGQ4NmVjOGMxNjA1NjlkN2Q2ZjU0OWIxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvR2VuZXJhdG9yUHJvdG90eXBlLmpzCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9HZW5lcmF0b3JQcm90b3R5cGUuanMKQEAgLTUx
LDcgKzUxLDcgQEAgZnVuY3Rpb24gZ2VuZXJhdG9yUmVzdW1lKGdlbmVyYXRvciwgc2VudFZhbHVl
LCByZXN1bWVNb2RlKQogICAgIH0gZWxzZSB7CiAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICBn
ZW5lcmF0b3IuQGdlbmVyYXRvclN0YXRlID0gQEdlbmVyYXRvclN0YXRlRXhlY3V0aW5nOwotICAg
ICAgICAgICAgdmFsdWUgPSBnZW5lcmF0b3IuQGdlbmVyYXRvck5leHQuQGNhbGwoZ2VuZXJhdG9y
LkBnZW5lcmF0b3JUaGlzLCBnZW5lcmF0b3IsIHN0YXRlLCBzZW50VmFsdWUsIHJlc3VtZU1vZGUp
OworICAgICAgICAgICAgdmFsdWUgPSBnZW5lcmF0b3IuQGdlbmVyYXRvck5leHQuQGNhbGwoZ2Vu
ZXJhdG9yLkBnZW5lcmF0b3JUaGlzLCBnZW5lcmF0b3IsIHN0YXRlLCBzZW50VmFsdWUsIHJlc3Vt
ZU1vZGUsIGdlbmVyYXRvci5AZ2VuZXJhdG9yRnJhbWUpOwogICAgICAgICAgICAgaWYgKGdlbmVy
YXRvci5AZ2VuZXJhdG9yU3RhdGUgPT09IEBHZW5lcmF0b3JTdGF0ZUV4ZWN1dGluZykgewogICAg
ICAgICAgICAgICAgIGdlbmVyYXRvci5AZ2VuZXJhdG9yU3RhdGUgPSBAR2VuZXJhdG9yU3RhdGVD
b21wbGV0ZWQ7CiAgICAgICAgICAgICAgICAgZG9uZSA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suY3BwCmluZGV4IDdm
MTdjMGVmMTBiNDMzZmFjOGY1OGNiM2I5Y2E1ZDRkMDE1YmJhMDguLmI1ZTdkMGUwMDI5ZjA5NmQy
NzM2YmNhNTQ0ZmU3ODZjNzBlMTk1MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAj
aW5jbHVkZSAiQnl0ZWNvZGVCYXNpY0Jsb2NrLmgiCiAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIK
KyNpbmNsdWRlICJJbnRlcnByZXRlcklubGluZXMuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgi
CiAjaW5jbHVkZSAiUHJlY2lzZUp1bXBUYXJnZXRzLmgiCiAKQEAgLTEwOCwxMiArMTA5LDE5IEBA
IHN0YXRpYyBib29sIGlzSnVtcFRhcmdldChPcGNvZGVJRCBvcGNvZGVJRCwgY29uc3QgVmVjdG9y
PHVuc2lnbmVkLCAzMj4mIGp1bXBUYXJnCiBzdGF0aWMgdm9pZCBsaW5rQmxvY2tzKEJ5dGVjb2Rl
QmFzaWNCbG9jayogcHJlZGVjZXNzb3IsIEJ5dGVjb2RlQmFzaWNCbG9jayogc3VjY2Vzc29yKQog
ewogICAgIHByZWRlY2Vzc29yLT5hZGRTdWNjZXNzb3Ioc3VjY2Vzc29yKTsKKyAgICBzdWNjZXNz
b3ItPmFkZFByZWRlY2Vzc29yKHByZWRlY2Vzc29yKTsKIH0KIAotdm9pZCBjb21wdXRlQnl0ZWNv
ZGVCYXNpY0Jsb2NrcyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0
cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9ja3MpCit0ZW1wbGF0ZTx0eXBlbmFtZSBC
bG9jaywgdHlwZW5hbWUgSW5zdHJ1Y3Rpb24+Cit2b2lkIEJ5dGVjb2RlQmFzaWNCbG9jazo6Y29t
cHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3NJbnRlcm5hbChCbG9jayogY29kZUJsb2NrLCBJbnN0cnVj
dGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQsIFZlY3Rv
cjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mIGJhc2ljQmxvY2tzKQogewog
ICAgIFZlY3Rvcjx1bnNpZ25lZCwgMzI+IGp1bXBUYXJnZXRzOwotICAgIGNvbXB1dGVQcmVjaXNl
SnVtcFRhcmdldHMoY29kZUJsb2NrLCBqdW1wVGFyZ2V0cyk7CisgICAgY29tcHV0ZVByZWNpc2VK
dW1wVGFyZ2V0cyhjb2RlQmxvY2ssIGluc3RydWN0aW9uc0JlZ2luLCBpbnN0cnVjdGlvbkNvdW50
LCBqdW1wVGFyZ2V0cyk7CisKKyAgICBhdXRvIGFwcGVuZEJsb2NrID0gWyZdIChzdGQ6OnVuaXF1
ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiYmIGJsb2NrKSB7CisgICAgICAgIGJsb2NrLT5tX2lu
ZGV4ID0gYmFzaWNCbG9ja3Muc2l6ZSgpOworICAgICAgICBiYXNpY0Jsb2Nrcy5hcHBlbmQoV1RG
TW92ZShibG9jaykpOworICAgIH07CiAKICAgICAvLyBDcmVhdGUgdGhlIGVudHJ5IGFuZCBleGl0
IGJhc2ljIGJsb2Nrcy4KICAgICBiYXNpY0Jsb2Nrcy5yZXNlcnZlQ2FwYWNpdHkoanVtcFRhcmdl
dHMuc2l6ZSgpICsgMik7CkBAIC0xMjIsMTkgKzEzMCwxNyBAQCB2b2lkIGNvbXB1dGVCeXRlY29k
ZUJhc2ljQmxvY2tzKENvZGVCbG9jayogY29kZUJsb2NrLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRy
PEJ5dAogICAgIGF1dG8gZmlyc3RCbG9jayA9IHN0ZDo6bWFrZV91bmlxdWU8Qnl0ZWNvZGVCYXNp
Y0Jsb2NrPigwLCAwKTsKICAgICBsaW5rQmxvY2tzKGVudHJ5LmdldCgpLCBmaXJzdEJsb2NrLmdl
dCgpKTsKIAotICAgIGJhc2ljQmxvY2tzLmFwcGVuZChXVEZNb3ZlKGVudHJ5KSk7CisgICAgYXBw
ZW5kQmxvY2soV1RGTW92ZShlbnRyeSkpOwogICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogY3VycmVu
dCA9IGZpcnN0QmxvY2suZ2V0KCk7Ci0gICAgYmFzaWNCbG9ja3MuYXBwZW5kKFdURk1vdmUoZmly
c3RCbG9jaykpOworICAgIGFwcGVuZEJsb2NrKFdURk1vdmUoZmlyc3RCbG9jaykpOwogCiAgICAg
YXV0byBleGl0ID0gc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZUJhc2ljQmxvY2s+KEJ5dGVjb2Rl
QmFzaWNCbG9jazo6RXhpdEJsb2NrKTsKIAogICAgIGJvb2wgbmV4dEluc3RydWN0aW9uSXNMZWFk
ZXIgPSBmYWxzZTsKIAogICAgIEludGVycHJldGVyKiBpbnRlcnByZXRlciA9IGNvZGVCbG9jay0+
dm0oKS0+aW50ZXJwcmV0ZXI7Ci0gICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luID0g
Y29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpOwotICAgIHVuc2lnbmVkIGluc3RydWN0
aW9uQ291bnQgPSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLnNpemUoKTsKICAgICBmb3IgKHVu
c2lnbmVkIGJ5dGVjb2RlT2Zmc2V0ID0gMDsgYnl0ZWNvZGVPZmZzZXQgPCBpbnN0cnVjdGlvbkNv
dW50OykgewotICAgICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGludGVycHJldGVyLT5nZXRPcGNv
ZGVJRChpbnN0cnVjdGlvbnNCZWdpbltieXRlY29kZU9mZnNldF0udS5vcGNvZGUpOworICAgICAg
ICBPcGNvZGVJRCBvcGNvZGVJRCA9IGludGVycHJldGVyLT5nZXRPcGNvZGVJRChpbnN0cnVjdGlv
bnNCZWdpbltieXRlY29kZU9mZnNldF0pOwogICAgICAgICB1bnNpZ25lZCBvcGNvZGVMZW5ndGgg
PSBvcGNvZGVMZW5ndGhzW29wY29kZUlEXTsKIAogICAgICAgICBib29sIGNyZWF0ZWRCbG9jayA9
IGZhbHNlOwpAQCAtMTQyLDcgKzE0OCw3IEBAIHZvaWQgY29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9j
a3MoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0CiAgICAg
ICAgIGlmIChpc0p1bXBUYXJnZXQob3Bjb2RlSUQsIGp1bXBUYXJnZXRzLCBieXRlY29kZU9mZnNl
dCkgfHwgbmV4dEluc3RydWN0aW9uSXNMZWFkZXIpIHsKICAgICAgICAgICAgIGF1dG8gbmV3Qmxv
Y2sgPSBzdGQ6Om1ha2VfdW5pcXVlPEJ5dGVjb2RlQmFzaWNCbG9jaz4oYnl0ZWNvZGVPZmZzZXQs
IG9wY29kZUxlbmd0aCk7CiAgICAgICAgICAgICBjdXJyZW50ID0gbmV3QmxvY2suZ2V0KCk7Ci0g
ICAgICAgICAgICBiYXNpY0Jsb2Nrcy5hcHBlbmQoV1RGTW92ZShuZXdCbG9jaykpOworICAgICAg
ICAgICAgYXBwZW5kQmxvY2soV1RGTW92ZShuZXdCbG9jaykpOwogICAgICAgICAgICAgY3JlYXRl
ZEJsb2NrID0gdHJ1ZTsKICAgICAgICAgICAgIG5leHRJbnN0cnVjdGlvbklzTGVhZGVyID0gZmFs
c2U7CiAgICAgICAgICAgICBieXRlY29kZU9mZnNldCArPSBvcGNvZGVMZW5ndGg7CkBAIC0xNjks
OCArMTc1LDcgQEAgdm9pZCBjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2NrcyhDb2RlQmxvY2sqIGNv
ZGVCbG9jaywgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXQKIAogICAgICAgICBib29sIGZhbGxz
VGhyb3VnaCA9IHRydWU7IAogICAgICAgICBmb3IgKHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0ID0g
YmxvY2stPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCk7IGJ5dGVjb2RlT2Zmc2V0IDwgYmxvY2stPmxl
YWRlckJ5dGVjb2RlT2Zmc2V0KCkgKyBibG9jay0+dG90YWxCeXRlY29kZUxlbmd0aCgpOykgewot
ICAgICAgICAgICAgY29uc3QgSW5zdHJ1Y3Rpb24mIGN1cnJlbnRJbnN0cnVjdGlvbiA9IGluc3Ry
dWN0aW9uc0JlZ2luW2J5dGVjb2RlT2Zmc2V0XTsKLSAgICAgICAgICAgIE9wY29kZUlEIG9wY29k
ZUlEID0gaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGN1cnJlbnRJbnN0cnVjdGlvbi51Lm9wY29k
ZSk7CisgICAgICAgICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGludGVycHJldGVyLT5nZXRPcGNv
ZGVJRChpbnN0cnVjdGlvbnNCZWdpbltieXRlY29kZU9mZnNldF0pOwogICAgICAgICAgICAgdW5z
aWduZWQgb3Bjb2RlTGVuZ3RoID0gb3Bjb2RlTGVuZ3Roc1tvcGNvZGVJRF07CiAgICAgICAgICAg
ICAvLyBJZiB3ZSBmb3VuZCBhIHRlcm1pbmFsIGJ5dGVjb2RlLCBsaW5rIHRvIHRoZSBleGl0IGJs
b2NrLgogICAgICAgICAgICAgaWYgKGlzVGVybWluYWwob3Bjb2RlSUQpKSB7CkBAIC0xODUsNyAr
MTkwLDcgQEAgdm9pZCBjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2NrcyhDb2RlQmxvY2sqIGNvZGVC
bG9jaywgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXQKICAgICAgICAgICAgIC8vIGJsb2NrIGJl
Y2F1c2UgdGhlIGZpbmFsbHkgYmxvY2sgd2lsbCBjcmVhdGUgaXRzIG93biBjYXRjaCwgd2hpY2gg
d2lsbCBnZW5lcmF0ZSBhIEhhbmRsZXJJbmZvLgogICAgICAgICAgICAgaWYgKGlzVGhyb3cob3Bj
b2RlSUQpKSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKGJ5dGVjb2RlT2Zmc2V0ICsgb3Bjb2Rl
TGVuZ3RoID09IGJsb2NrLT5sZWFkZXJCeXRlY29kZU9mZnNldCgpICsgYmxvY2stPnRvdGFsQnl0
ZWNvZGVMZW5ndGgoKSk7Ci0gICAgICAgICAgICAgICAgSGFuZGxlckluZm8qIGhhbmRsZXIgPSBj
b2RlQmxvY2stPmhhbmRsZXJGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCk7CisgICAg
ICAgICAgICAgICAgYXV0byogaGFuZGxlciA9IGNvZGVCbG9jay0+aGFuZGxlckZvckJ5dGVjb2Rl
T2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KTsKICAgICAgICAgICAgICAgICBmYWxsc1Rocm91Z2ggPSBm
YWxzZTsKICAgICAgICAgICAgICAgICBpZiAoIWhhbmRsZXIpIHsKICAgICAgICAgICAgICAgICAg
ICAgbGlua0Jsb2NrcyhibG9jaywgZXhpdC5nZXQoKSk7CkBAIC0yMDUsNyArMjEwLDcgQEAgdm9p
ZCBjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2NrcyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgVmVjdG9y
PHN0ZDo6dW5pcXVlX3B0cjxCeXQKICAgICAgICAgICAgIGlmIChpc0JyYW5jaChvcGNvZGVJRCkp
IHsKICAgICAgICAgICAgICAgICBBU1NFUlQoYnl0ZWNvZGVPZmZzZXQgKyBvcGNvZGVMZW5ndGgg
PT0gYmxvY2stPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCkgKyBibG9jay0+dG90YWxCeXRlY29kZUxl
bmd0aCgpKTsKICAgICAgICAgICAgICAgICBWZWN0b3I8dW5zaWduZWQsIDE+IGJ5dGVjb2RlT2Zm
c2V0c0p1bXBlZFRvOwotICAgICAgICAgICAgICAgIGZpbmRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2Rl
T2Zmc2V0KGNvZGVCbG9jaywgYnl0ZWNvZGVPZmZzZXQsIGJ5dGVjb2RlT2Zmc2V0c0p1bXBlZFRv
KTsKKyAgICAgICAgICAgICAgICBmaW5kSnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChjb2Rl
QmxvY2ssIGluc3RydWN0aW9uc0JlZ2luLCBieXRlY29kZU9mZnNldCwgYnl0ZWNvZGVPZmZzZXRz
SnVtcGVkVG8pOwogCiAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGJh
c2ljQmxvY2tzLnNpemUoKTsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgIEJ5dGVjb2RlQmFz
aWNCbG9jayogb3RoZXJCbG9jayA9IGJhc2ljQmxvY2tzW2ldLmdldCgpOwpAQCAtMjI5LDEwICsy
MzQsMjAgQEAgdm9pZCBjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2NrcyhDb2RlQmxvY2sqIGNvZGVC
bG9jaywgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXQKICAgICAgICAgfQogICAgIH0KIAotICAg
IGJhc2ljQmxvY2tzLmFwcGVuZChXVEZNb3ZlKGV4aXQpKTsKKyAgICBhcHBlbmRCbG9jayhXVEZN
b3ZlKGV4aXQpKTsKICAgICAKICAgICBmb3IgKGF1dG8mIGJhc2ljQmxvY2sgOiBiYXNpY0Jsb2Nr
cykKICAgICAgICAgYmFzaWNCbG9jay0+c2hyaW5rVG9GaXQoKTsKIH0KIAordm9pZCBCeXRlY29k
ZUJhc2ljQmxvY2s6OmNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzKENvZGVCbG9jayogY29kZUJs
b2NrLCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGluc3RydWN0aW9u
Q291bnQsIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mIGJhc2lj
QmxvY2tzKQoreworICAgIGNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzSW50ZXJuYWwoY29kZUJs
b2NrLCBpbnN0cnVjdGlvbnNCZWdpbiwgaW5zdHJ1Y3Rpb25Db3VudCwgYmFzaWNCbG9ja3MpOwor
fQorCit2b2lkIEJ5dGVjb2RlQmFzaWNCbG9jazo6Y29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3Mo
VW5saW5rZWRDb2RlQmxvY2sqIGNvZGVCbG9jaywgVW5saW5rZWRJbnN0cnVjdGlvbiogaW5zdHJ1
Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQsIFZlY3RvcjxzdGQ6OnVuaXF1
ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mIGJhc2ljQmxvY2tzKQoreworICAgIEJ5dGVjb2Rl
QmFzaWNCbG9jazo6Y29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3NJbnRlcm5hbChjb2RlQmxvY2ss
IGluc3RydWN0aW9uc0JlZ2luLCBpbnN0cnVjdGlvbkNvdW50LCBiYXNpY0Jsb2Nrcyk7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlQmFzaWNCbG9jay5oCmluZGV4IGJkN2QzYWU5YmEzNDNlMWIwNzE3OWU5OGYx
ZWU4OWRhNjViYTdlMjAuLjZhZGZhMmZmNmNlYjQ3NDdmODc4N2U3MThmZjI3NmE3ZGU3YTFmODIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2lj
QmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVCYXNp
Y0Jsb2NrLmgKQEAgLTM1LDYgKzM1LDkgQEAKIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBDb2Rl
QmxvY2s7CitjbGFzcyBVbmxpbmtlZENvZGVCbG9jazsKK3N0cnVjdCBJbnN0cnVjdGlvbjsKK3N0
cnVjdCBVbmxpbmtlZEluc3RydWN0aW9uOwogCiBjbGFzcyBCeXRlY29kZUJhc2ljQmxvY2sgewog
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtNTYsMjIgKzU5LDMzIEBAIGNsYXNzIEJ5
dGVjb2RlQmFzaWNCbG9jayB7CiAgICAgVmVjdG9yPEJ5dGVjb2RlQmFzaWNCbG9jayo+JiBzdWNj
ZXNzb3JzKCkgeyByZXR1cm4gbV9zdWNjZXNzb3JzOyB9CiAgICAgdm9pZCBhZGRTdWNjZXNzb3Io
Qnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaykgeyBtX3N1Y2Nlc3NvcnMuYXBwZW5kKGJsb2NrKTsg
fQogCisgICAgVmVjdG9yPEJ5dGVjb2RlQmFzaWNCbG9jayo+JiBwcmVkZWNlc3NvcnMoKSB7IHJl
dHVybiBtX3ByZWRlY2Vzc29yczsgfQorICAgIHZvaWQgYWRkUHJlZGVjZXNzb3IoQnl0ZWNvZGVC
YXNpY0Jsb2NrKiBibG9jaykgeyBtX3ByZWRlY2Vzc29ycy5hcHBlbmQoYmxvY2spOyB9CisKICAg
ICBGYXN0Qml0VmVjdG9yJiBpbigpIHsgcmV0dXJuIG1faW47IH0KICAgICBGYXN0Qml0VmVjdG9y
JiBvdXQoKSB7IHJldHVybiBtX291dDsgfQogCisgICAgdW5zaWduZWQgaW5kZXgoKSBjb25zdCB7
IHJldHVybiBtX2luZGV4OyB9CisKKyAgICBzdGF0aWMgdm9pZCBjb21wdXRlQnl0ZWNvZGVCYXNp
Y0Jsb2NrcyhDb2RlQmxvY2sqLCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2ln
bmVkIGluc3RydWN0aW9uQ291bnQsIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNp
Y0Jsb2NrPj4mKTsKKyAgICBzdGF0aWMgdm9pZCBjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2NrcyhV
bmxpbmtlZENvZGVCbG9jayosIFVubGlua2VkSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2lu
LCB1bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50LCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVj
b2RlQmFzaWNCbG9jaz4+Jik7CisKIHByaXZhdGU6CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQmxv
Y2ssIHR5cGVuYW1lIEluc3RydWN0aW9uPiBzdGF0aWMgdm9pZCBjb21wdXRlQnl0ZWNvZGVCYXNp
Y0Jsb2Nrc0ludGVybmFsKEJsb2NrKiBjb2RlQmxvY2ssIEluc3RydWN0aW9uKiBpbnN0cnVjdGlv
bnNCZWdpbiwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCwgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0
cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9ja3MpOworCisKICAgICB1bnNpZ25lZCBt
X2xlYWRlckJ5dGVjb2RlT2Zmc2V0OwogICAgIHVuc2lnbmVkIG1fdG90YWxCeXRlY29kZUxlbmd0
aDsKKyAgICB1bnNpZ25lZCBtX2luZGV4OwogCiAgICAgVmVjdG9yPHVuc2lnbmVkPiBtX2J5dGVj
b2RlT2Zmc2V0czsKICAgICBWZWN0b3I8Qnl0ZWNvZGVCYXNpY0Jsb2NrKj4gbV9zdWNjZXNzb3Jz
OworICAgIFZlY3RvcjxCeXRlY29kZUJhc2ljQmxvY2sqPiBtX3ByZWRlY2Vzc29yczsKIAogICAg
IEZhc3RCaXRWZWN0b3IgbV9pbjsKICAgICBGYXN0Qml0VmVjdG9yIG1fb3V0OwogfTsKIAotdm9p
ZCBjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2NrcyhDb2RlQmxvY2sqLCBWZWN0b3I8c3RkOjp1bmlx
dWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+Jik7Ci0KIGlubGluZSBCeXRlY29kZUJhc2ljQmxv
Y2s6OkJ5dGVjb2RlQmFzaWNCbG9jayh1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgbGVuZ3RoKQog
ICAgIDogbV9sZWFkZXJCeXRlY29kZU9mZnNldChzdGFydCkKICAgICAsIG1fdG90YWxCeXRlY29k
ZUxlbmd0aChsZW5ndGgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNmZk
Y2RiYWM0MTAwZTkwMjk3MWNhNDI1YmNkYjMwNWY1NTBjY2ZkCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9u
LmNwcApAQCAtMCwwICsxLDUwNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBZdXN1a2Ug
U3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5oIgorCisjaW5jbHVk
ZSAiQnl0ZWNvZGVJbnNlcnRpb25TZXQuaCIKKyNpbmNsdWRlICJCeXRlY29kZVVzZURlZi5oIgor
I2luY2x1ZGUgIklkZW50aWZpZXJJbmxpbmVzLmgiCisjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIK
KyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgorI2luY2x1ZGUgIlN0cm9uZ0lubGluZXMu
aCIKKyNpbmNsdWRlICJVbmxpbmtlZENvZGVCbG9jay5oIgorI2luY2x1ZGUgPHd0Zi9PcHRpb25h
bC5oPgorCituYW1lc3BhY2UgSlNDIHsKKworc3RhdGljIGJvb2wgaXNWYWxpZFJlZ2lzdGVyRm9y
TGl2ZW5lc3MoaW50IG9wZXJhbmQpCit7CisgICAgVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWco
b3BlcmFuZCk7CisgICAgaWYgKHZpcnR1YWxSZWcuaXNDb25zdGFudCgpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgcmV0dXJuIHZpcnR1YWxSZWcuaXNMb2NhbCgpOworfQorCitjbGFzcyBC
eXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbiB7CitwdWJsaWM6CisgICAgQnl0ZWNvZGVHZW5lcmF0
b3JpZmljYXRpb24oVW5saW5rZWRDb2RlQmxvY2sqIGNvZGVCbG9jaywgVW5saW5rZWRDb2RlQmxv
Y2s6OlVucGFja2VkSW5zdHJ1Y3Rpb25zJiBpbnN0cnVjdGlvbnMsIFN5bWJvbFRhYmxlKiBnZW5l
cmF0b3JGcmFtZVN5bWJvbFRhYmxlLCBpbnQgZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZUluZGV4
KQorICAgICAgICA6IG1fZ3JhcGgoY29kZUJsb2NrLCBpbnN0cnVjdGlvbnMpCisgICAgICAgICwg
bV9pbnNlcnRpb25TZXQobV9ncmFwaCkKKyAgICAgICAgLCBtX2dlbmVyYXRvckZyYW1lU3ltYm9s
VGFibGUoKmNvZGVCbG9jay0+dm0oKSwgZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZSkKKyAgICAg
ICAgLCBtX2dlbmVyYXRvckZyYW1lU3ltYm9sVGFibGVJbmRleChnZW5lcmF0b3JGcmFtZVN5bWJv
bFRhYmxlSW5kZXgpCisgICAgeworICAgIH0KKworICAgIC8vIFdlIGFzc2lnbiBhIHN5bWJvbCB0
byBhIHJlZ2lzdGVyLiBCeSBkb2luZyBzbywgd2UgYWxsb2NhdGUgdGhlIHNwZWNpZmljIHZhbHVl
IHN0b3JhZ2UgdG8gc2F2ZSB0aGUgZ2l2ZW4gcmVnaXN0ZXIuCisgICAgLy8gVGhpcyBhbGxvdyB1
cyBub3QgdG8gc2F2ZSBhbGwgdGhlIGxpdmUgcmVnaXN0ZXJzIGV2ZW4gaWYgdGhlIHJlZ2lzdGVy
cyBhcmUgbm90IG92ZXJ3cml0dGVuIGZyb20gdGhlIHByZXZpb3VzIHJlc3VtaW5nIHRpbWUuCisK
KyAgICBzdHJ1Y3QgU3RvcmFnZSB7CisgICAgICAgIElkZW50aWZpZXIgaWRlbnRpZmllcjsKKyAg
ICAgICAgdW5zaWduZWQgaWRlbnRpZmllckluZGV4OworICAgICAgICBTY29wZU9mZnNldCBzY29w
ZU9mZnNldDsKKyAgICB9OworCisgICAgU3RvcmFnZSBzdG9yYWdlRm9yR2VuZXJhdG9yTG9jYWwo
dW5zaWduZWQgaW5kZXgpCisgICAgeworICAgICAgICBpZiAobV9zdG9yYWdlcy5zaXplKCkgPD0g
aW5kZXgpCisgICAgICAgICAgICBtX3N0b3JhZ2VzLnJlc2l6ZShpbmRleCArIDEpOworICAgICAg
ICBpZiAoT3B0aW9uYWw8U3RvcmFnZT4gc3RvcmFnZSA9IG1fc3RvcmFnZXNbaW5kZXhdKQorICAg
ICAgICAgICAgcmV0dXJuICpzdG9yYWdlOworCisgICAgICAgIFVubGlua2VkQ29kZUJsb2NrKiBj
b2RlQmxvY2sgPSBtX2dyYXBoLmNvZGVCbG9jaygpOworICAgICAgICBJZGVudGlmaWVyIGlkZW50
aWZpZXIgPSBJZGVudGlmaWVyOjpmcm9tVWlkKFByaXZhdGVOYW1lKCkpOworICAgICAgICB1bnNp
Z25lZCBpZGVudGlmaWVySW5kZXggPSBjb2RlQmxvY2stPm51bWJlck9mSWRlbnRpZmllcnMoKTsK
KyAgICAgICAgY29kZUJsb2NrLT5hZGRJZGVudGlmaWVyKGlkZW50aWZpZXIpOworICAgICAgICBT
Y29wZU9mZnNldCBzY29wZU9mZnNldCA9IG1fZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZS0+dGFr
ZU5leHRTY29wZU9mZnNldChOb0xvY2tpbmdOZWNlc3NhcnkpOworICAgICAgICBtX2dlbmVyYXRv
ckZyYW1lU3ltYm9sVGFibGUtPnNldChOb0xvY2tpbmdOZWNlc3NhcnksIGlkZW50aWZpZXIuaW1w
bCgpLCBTeW1ib2xUYWJsZUVudHJ5KFZhck9mZnNldChzY29wZU9mZnNldCkpKTsKKworICAgICAg
ICBTdG9yYWdlIHN0b3JhZ2UgPSB7CisgICAgICAgICAgICBpZGVudGlmaWVyLAorICAgICAgICAg
ICAgaWRlbnRpZmllckluZGV4LAorICAgICAgICAgICAgc2NvcGVPZmZzZXQKKyAgICAgICAgfTsK
KyAgICAgICAgbV9zdG9yYWdlc1tpbmRleF0gPSBzdG9yYWdlOworICAgICAgICByZXR1cm4gc3Rv
cmFnZTsKKyAgICB9CisKKyAgICBzdHJ1Y3QgWWllbGREYXRhIHsKKyAgICAgICAgc2l6ZV90IHNh
dmVQb2ludDsKKyAgICAgICAgc2l6ZV90IG1lcmdlUG9pbnQ7CisgICAgICAgIHNpemVfdCByZXN1
bWVQb2ludDsKKyAgICAgICAgRmFzdEJpdFZlY3RvciBsaXZlbmVzczsKKyAgICAgICAgRmFzdEJp
dFZlY3RvciBjaGFuZ2VkOworICAgIH07CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9y
PgorICAgIHZvaWQgY29tcHV0ZUdlbmVyYXRvckRlZnNGb3JCeXRlY29kZU9mZnNldChVbmxpbmtl
ZENvZGVCbG9jayogY29kZUJsb2NrLCBPcGNvZGVJRCBvcGNvZGVJRCwgVW5saW5rZWRJbnN0cnVj
dGlvbiogaW5zdHJ1Y3Rpb24sIEZhc3RCaXRWZWN0b3ImIG91dCwgY29uc3QgRnVuY3RvciYgZnVu
Y3RvcikKKyAgICB7CisgICAgICAgIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoY29kZUJs
b2NrLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb24sIGZ1bmN0b3IpOworCisgICAgICAgIHN3aXRjaCAo
b3Bjb2RlSUQpIHsKKyAgICAgICAgY2FzZSBvcF9zYXZlOgorICAgICAgICAgICAgcmV0dXJuOwor
CisgICAgICAgIGNhc2Ugb3BfcmVzdW1lOiB7CisgICAgICAgICAgICBvdXQuY2xlYXJBbGwoKTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBGdW5jdG9yPgorICAgIHZvaWQgY29tcHV0ZUdlbmVyYXRvclVzZXNGb3JCeXRlY29kZU9mZnNl
dChVbmxpbmtlZENvZGVCbG9jayogY29kZUJsb2NrLCBPcGNvZGVJRCBvcGNvZGVJRCwgVW5saW5r
ZWRJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIEZhc3RCaXRWZWN0b3ImLCBjb25zdCBGdW5jdG9y
JiBmdW5jdG9yKQorICAgIHsKKyAgICAgICAgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldChj
b2RlQmxvY2ssIG9wY29kZUlELCBpbnN0cnVjdGlvbiwgZnVuY3Rvcik7CisKKyAgICAgICAgc3dp
dGNoIChvcGNvZGVJRCkgeworICAgICAgICBjYXNlIG9wX3NhdmU6CisgICAgICAgIGNhc2Ugb3Bf
cmVzdW1lOiB7CisgICAgICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9w
Y29kZUlELCBpbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFVzZUZ1bmN0b3IsIHR5cGVuYW1l
IERlZkZ1bmN0b3I+CisgICAgdm9pZCBzdGVwT3Zlckluc3RydWN0aW9uKHVuc2lnbmVkIGJ5dGVj
b2RlT2Zmc2V0LCBGYXN0Qml0VmVjdG9yJiBvdXQsIGNvbnN0IFVzZUZ1bmN0b3ImIHVzZSwgY29u
c3QgRGVmRnVuY3RvciYgZGVmKQorICAgIHsKKyAgICAgICAgYXV0byYgaW5zdHJ1Y3Rpb25zID0g
bV9ncmFwaC5pbnN0cnVjdGlvbnMoKTsKKyAgICAgICAgVW5saW5rZWRJbnN0cnVjdGlvbiogaW5z
dHJ1Y3Rpb24gPSAmaW5zdHJ1Y3Rpb25zW2J5dGVjb2RlT2Zmc2V0XTsKKyAgICAgICAgT3Bjb2Rl
SUQgb3Bjb2RlSUQgPSBpbnN0cnVjdGlvbi0+dS5vcGNvZGU7CisgICAgICAgIFVubGlua2VkQ29k
ZUJsb2NrKiBjb2RlQmxvY2sgPSBtX2dyYXBoLmNvZGVCbG9jaygpOworCisgICAgICAgIGNvbXB1
dGVHZW5lcmF0b3JEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoCisgICAgICAgICAgICBjb2RlQmxvY2ss
IG9wY29kZUlELCBpbnN0cnVjdGlvbiwgb3V0LAorICAgICAgICAgICAgWyZdIChVbmxpbmtlZENv
ZGVCbG9jayosIFVubGlua2VkSW5zdHJ1Y3Rpb24qLCBPcGNvZGVJRCwgaW50IG9wZXJhbmQpIHsK
KyAgICAgICAgICAgICAgICBpZiAoaXNWYWxpZFJlZ2lzdGVyRm9yTGl2ZW5lc3Mob3BlcmFuZCkp
CisgICAgICAgICAgICAgICAgICAgIGRlZihWaXJ0dWFsUmVnaXN0ZXIob3BlcmFuZCkudG9Mb2Nh
bCgpKTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgIGNvbXB1dGVHZW5lcmF0b3JVc2VzRm9y
Qnl0ZWNvZGVPZmZzZXQoCisgICAgICAgICAgICBjb2RlQmxvY2ssIG9wY29kZUlELCBpbnN0cnVj
dGlvbiwgb3V0LAorICAgICAgICAgICAgWyZdIChVbmxpbmtlZENvZGVCbG9jayosIFVubGlua2Vk
SW5zdHJ1Y3Rpb24qLCBPcGNvZGVJRCwgaW50IG9wZXJhbmQpIHsKKyAgICAgICAgICAgICAgICBp
ZiAoaXNWYWxpZFJlZ2lzdGVyRm9yTGl2ZW5lc3Mob3BlcmFuZCkpCisgICAgICAgICAgICAgICAg
ICAgIHVzZShWaXJ0dWFsUmVnaXN0ZXIob3BlcmFuZCkudG9Mb2NhbCgpKTsKKyAgICAgICAgICAg
IH0pOworCisgICAgICAgIC8vIElmIHdlIGhhdmUgYW4gZXhjZXB0aW9uIGhhbmRsZXIsIHdlIHdh
bnQgdGhlIGxpdmUtaW4gdmFyaWFibGVzIG9mIHRoZQorICAgICAgICAvLyBleGNlcHRpb24gaGFu
ZGxlciBibG9jayB0byBiZSBpbmNsdWRlZCBpbiB0aGUgbGl2ZS1pbiBvZiB0aGlzIHBhcnRpY3Vs
YXIgYnl0ZWNvZGUuCisgICAgICAgIGlmIChVbmxpbmtlZEhhbmRsZXJJbmZvKiBoYW5kbGVyID0g
Y29kZUJsb2NrLT5oYW5kbGVyRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpKSB7Cisg
ICAgICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGhhbmRsZXJCbG9jayA9IG1fZ3JhcGguZmlu
ZEJhc2ljQmxvY2tXaXRoTGVhZGVyT2Zmc2V0KGhhbmRsZXItPnRhcmdldCk7CisgICAgICAgICAg
ICBBU1NFUlQoaGFuZGxlckJsb2NrKTsKKyAgICAgICAgICAgIGhhbmRsZXJCbG9jay0+aW4oKS5m
b3JFYWNoU2V0Qml0KHVzZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIGNvbXB1dGVM
b2NhbExpdmVuZXNzRm9yQnl0ZWNvZGVPZmZzZXQoQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaywg
dW5zaWduZWQgdGFyZ2V0T2Zmc2V0LCBGYXN0Qml0VmVjdG9yJiByZXN1bHQpCisgICAgeworICAg
ICAgICBBU1NFUlQoIWJsb2NrLT5pc0V4aXRCbG9jaygpKTsKKyAgICAgICAgQVNTRVJUKCFibG9j
ay0+aXNFbnRyeUJsb2NrKCkpOworCisgICAgICAgIEZhc3RCaXRWZWN0b3Igb3V0ID0gYmxvY2st
Pm91dCgpOworCisgICAgICAgIGZvciAoaW50IGkgPSBibG9jay0+Ynl0ZWNvZGVPZmZzZXRzKCku
c2l6ZSgpIC0gMTsgaSA+PSAwOyBpLS0pIHsKKyAgICAgICAgICAgIHVuc2lnbmVkIGJ5dGVjb2Rl
T2Zmc2V0ID0gYmxvY2stPmJ5dGVjb2RlT2Zmc2V0cygpW2ldOworICAgICAgICAgICAgaWYgKHRh
cmdldE9mZnNldCA+IGJ5dGVjb2RlT2Zmc2V0KQorICAgICAgICAgICAgICAgIGJyZWFrOworCisg
ICAgICAgICAgICBzdGVwT3Zlckluc3RydWN0aW9uKAorICAgICAgICAgICAgICAgIGJ5dGVjb2Rl
T2Zmc2V0LCBvdXQsCisgICAgICAgICAgICAgICAgWyZdICh1bnNpZ25lZCBiaXRJbmRleCkgewor
ICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIHRoZSB1c2UgZnVuY3Rvciwgc28gd2Ugc2V0
IHRoZSBiaXQuCisgICAgICAgICAgICAgICAgICAgIG91dC5zZXQoYml0SW5kZXgpOworICAgICAg
ICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgWyZdICh1bnNpZ25lZCBiaXRJbmRleCkgewor
ICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIHRoZSBkZWYgZnVuY3Rvciwgc28gd2UgY2xl
YXIgdGhlIGJpdC4KKyAgICAgICAgICAgICAgICAgICAgb3V0LmNsZWFyKGJpdEluZGV4KTsKKyAg
ICAgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorCisgICAgICAgIHJlc3VsdC5zZXQob3V0KTsK
KyAgICB9CisKKyAgICB2b2lkIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQmxvY2soQnl0ZWNvZGVC
YXNpY0Jsb2NrKiBibG9jaykKKyAgICB7CisgICAgICAgIGlmIChibG9jay0+aXNFeGl0QmxvY2so
KSB8fCBibG9jay0+aXNFbnRyeUJsb2NrKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQnl0ZWNvZGVPZmZzZXQoYmxvY2ssIGJsb2NrLT5sZWFk
ZXJCeXRlY29kZU9mZnNldCgpLCBibG9jay0+aW4oKSk7CisgICAgfQorCisgICAgRmFzdEJpdFZl
Y3RvciBnZXRMaXZlbmVzc0luZm9BdEJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zm
c2V0KQorICAgIHsKKyAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jayA9IG1fZ3JhcGgu
ZmluZEJhc2ljQmxvY2tGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCk7CisgICAgICAg
IEFTU0VSVChibG9jayk7CisgICAgICAgIEFTU0VSVCghYmxvY2stPmlzRW50cnlCbG9jaygpKTsK
KyAgICAgICAgQVNTRVJUKCFibG9jay0+aXNFeGl0QmxvY2soKSk7CisgICAgICAgIEZhc3RCaXRW
ZWN0b3Igb3V0OworICAgICAgICBvdXQucmVzaXplKGJsb2NrLT5vdXQoKS5udW1CaXRzKCkpOwor
ICAgICAgICBjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJ5dGVjb2RlT2Zmc2V0KGJsb2NrLCBieXRl
Y29kZU9mZnNldCwgb3V0KTsKKyAgICAgICAgcmV0dXJuIG91dDsKKyAgICB9CisKKyAgICB2b2lk
IHJ1bkdlbmVyYXRvclZhcmlhYmxlTGl2ZW5lc3NBbmFseXNpcygpCisgICAgeworICAgICAgICAv
LyBQZXJmb3JtIG1vZGlmaWVkIGxpdmVuZXNzIGFuYWx5c2lzIHRvIGRldGVybWluZSB3aGljaCBs
b2NhbHMgYXJlIGxpdmUgYW5kIHNob3VsZCBiZSByZXN1bWVkIHdoZW4gZXhlY3V0aW5nIG9wX3Jl
c3VtZS4KKworICAgICAgICBVbmxpbmtlZENvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2sgPSBt
X2dyYXBoLmNvZGVCbG9jaygpOworICAgICAgICB1bnNpZ25lZCBudW1iZXJPZlZhcmlhYmxlcyA9
IHVubGlua2VkQ29kZUJsb2NrLT5tX251bUNhbGxlZUxvY2FsczsKKyAgICAgICAgZm9yIChzdGQ6
OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiYgYmxvY2sgOiBtX2dyYXBoLmJhc2ljQmxv
Y2tzKCkpIHsKKyAgICAgICAgICAgIGJsb2NrLT5pbigpLnJlc2l6ZShudW1iZXJPZlZhcmlhYmxl
cyk7CisgICAgICAgICAgICBibG9jay0+b3V0KCkucmVzaXplKG51bWJlck9mVmFyaWFibGVzKTsK
KyAgICAgICAgICAgIGJsb2NrLT5pbigpLmNsZWFyQWxsKCk7CisgICAgICAgICAgICBibG9jay0+
b3V0KCkuY2xlYXJBbGwoKTsKKyAgICAgICAgfQorCisgICAgICAgIGJvb2wgY2hhbmdlZDsKKyAg
ICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBsYXN0QmxvY2sgPSBtX2dyYXBoLmJhc2ljQmxvY2tz
KCkubGFzdCgpLmdldCgpOworICAgICAgICBsYXN0QmxvY2stPmluKCkuY2xlYXJBbGwoKTsKKyAg
ICAgICAgbGFzdEJsb2NrLT5vdXQoKS5jbGVhckFsbCgpOworICAgICAgICBGYXN0Qml0VmVjdG9y
IG5ld091dDsKKyAgICAgICAgbmV3T3V0LnJlc2l6ZShsYXN0QmxvY2stPm91dCgpLm51bUJpdHMo
KSk7CisgICAgICAgIGRvIHsKKyAgICAgICAgICAgIGNoYW5nZWQgPSBmYWxzZTsKKyAgICAgICAg
ICAgIGZvciAoc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4mIGJsb2NrIDogbV9n
cmFwaC5iYXNpY0Jsb2Nrc0luUmV2ZXJzZU9yZGVyKCkpIHsKKyAgICAgICAgICAgICAgICBuZXdP
dXQuY2xlYXJBbGwoKTsKKyAgICAgICAgICAgICAgICBmb3IgKEJ5dGVjb2RlQmFzaWNCbG9jayog
c3VjY2Vzc29yIDogYmxvY2stPnN1Y2Nlc3NvcnMoKSkKKyAgICAgICAgICAgICAgICAgICAgbmV3
T3V0Lm1lcmdlKHN1Y2Nlc3Nvci0+aW4oKSk7CisgICAgICAgICAgICAgICAgYm9vbCBvdXREaWRD
aGFuZ2UgPSBibG9jay0+b3V0KCkuc2V0QW5kQ2hlY2sobmV3T3V0KTsKKyAgICAgICAgICAgICAg
ICBjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJsb2NrKGJsb2NrLmdldCgpKTsKKyAgICAgICAgICAg
ICAgICBjaGFuZ2VkIHw9IG91dERpZENoYW5nZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSB3
aGlsZSAoY2hhbmdlZCk7CisKKyAgICAgICAgZm9yIChZaWVsZERhdGEmIGRhdGEgOiBtX3lpZWxk
cykKKyAgICAgICAgICAgIGRhdGEubGl2ZW5lc3MgPSBnZXRMaXZlbmVzc0luZm9BdEJ5dGVjb2Rl
T2Zmc2V0KGRhdGEubWVyZ2VQb2ludCk7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
RGVmRnVuY3Rvcj4KKyAgICB2b2lkIHN0ZXBPdmVySW5zdHJ1Y3Rpb25Gb3JTYXZlZFZhcmlhYmxl
KEJ5dGVjb2RlQmFzaWNCbG9jayosIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBGYXN0Qml0VmVj
dG9yJiBpbiwgY29uc3QgRGVmRnVuY3RvciYgZGVmKQorICAgIHsKKyAgICAgICAgYXV0byYgaW5z
dHJ1Y3Rpb25zID0gbV9ncmFwaC5pbnN0cnVjdGlvbnMoKTsKKyAgICAgICAgVW5saW5rZWRJbnN0
cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSAmaW5zdHJ1Y3Rpb25zW2J5dGVjb2RlT2Zmc2V0XTsKKyAg
ICAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnN0cnVjdGlvbi0+dS5vcGNvZGU7CisgICAgICAg
IFVubGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBtX2dyYXBoLmNvZGVCbG9jaygpOworCisg
ICAgICAgIC8vIEdlbmVyYXRvciBkZWZzIGZvciB0aGUgcmVzdW1lIGJsb2NrcyBzaG91bGQgYmUg
Y29uc2lkZXJlZCBudWxsLgorICAgICAgICAvLyBXaGlsZSB3ZSBjbGVhciB0aGUgZGVmcyBpbiB0
aGUgcmVzdW1lIGJsb2NrLCBjb3VudCB0aGUgZGVmcyBpbiB0aGUgc2F2ZSBibG9jayBmb3IgdGhl
IGV4Y2VwdGlvbiBoYW5kbGVyIGJsb2NrLgorICAgICAgICBpZiAob3Bjb2RlSUQgPT0gb3BfcmVz
dW1lKSB7CisgICAgICAgICAgICBpbi5jbGVhckFsbCgpOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisKKyAgICAgICAgY29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChjb2RlQmxv
Y2ssIG9wY29kZUlELCBpbnN0cnVjdGlvbiwgWyZdIChVbmxpbmtlZENvZGVCbG9jayosIFVubGlu
a2VkSW5zdHJ1Y3Rpb24qLCBPcGNvZGVJRCwgaW50IG9wZXJhbmQpIHsKKyAgICAgICAgICAgIGlm
IChpc1ZhbGlkUmVnaXN0ZXJGb3JMaXZlbmVzcyhvcGVyYW5kKSkKKyAgICAgICAgICAgICAgICBk
ZWYoVmlydHVhbFJlZ2lzdGVyKG9wZXJhbmQpLnRvTG9jYWwoKSk7CisgICAgICAgIH0pOworICAg
IH0KKworICAgIGJvb2wgY29tcHV0ZUxvY2FsU2F2ZWRWYXJpYWJsZUZvckJ5dGVjb2RlT2Zmc2V0
KEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2ssIHVuc2lnbmVkIHRhcmdldE9mZnNldCwgRmFzdEJp
dFZlY3RvciYgcmVzdWx0KQorICAgIHsKKyAgICAgICAgQVNTRVJUKCFibG9jay0+aXNFeGl0Qmxv
Y2soKSk7CisgICAgICAgIEFTU0VSVCghYmxvY2stPmlzRW50cnlCbG9jaygpKTsKKworICAgICAg
ICBGYXN0Qml0VmVjdG9yIGluID0gYmxvY2stPmluKCk7CisKKyAgICAgICAgZm9yICh1bnNpZ25l
ZCBieXRlY29kZU9mZnNldCA6IGJsb2NrLT5ieXRlY29kZU9mZnNldHMoKSkgeworICAgICAgICAg
ICAgaWYgKHRhcmdldE9mZnNldCA8PSBieXRlY29kZU9mZnNldCkKKyAgICAgICAgICAgICAgICBi
cmVhazsKKworICAgICAgICAgICAgc3RlcE92ZXJJbnN0cnVjdGlvbkZvclNhdmVkVmFyaWFibGUo
CisgICAgICAgICAgICAgICAgYmxvY2ssIGJ5dGVjb2RlT2Zmc2V0LCBpbiwKKyAgICAgICAgICAg
ICAgICBbJl0gKHVuc2lnbmVkIGJpdEluZGV4KSB7CisgICAgICAgICAgICAgICAgICAgIC8vIFRo
aXMgaXMgdGhlIGRlZiBmdW5jdG9yLCBzbyB3ZSBzZXQgdGhlIGJpdC4KKyAgICAgICAgICAgICAg
ICAgICAgaW4uc2V0KGJpdEluZGV4KTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgfQor
CisgICAgICAgIHJldHVybiByZXN1bHQuc2V0QW5kQ2hlY2soaW4pOworICAgIH0KKworICAgIGJv
b2wgY29tcHV0ZUxvY2FsU2F2ZWRWYXJpYWJsZUZvckJsb2NrKEJ5dGVjb2RlQmFzaWNCbG9jayog
YmxvY2spCisgICAgeworICAgICAgICBpZiAoYmxvY2stPmlzRXhpdEJsb2NrKCkgfHwgYmxvY2st
PmlzRW50cnlCbG9jaygpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1
cm4gY29tcHV0ZUxvY2FsU2F2ZWRWYXJpYWJsZUZvckJ5dGVjb2RlT2Zmc2V0KGJsb2NrLCBibG9j
ay0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKSArIGJsb2NrLT50b3RhbEJ5dGVjb2RlTGVuZ3RoKCks
IGJsb2NrLT5vdXQoKSk7CisgICAgfQorCisgICAgRmFzdEJpdFZlY3RvciBnZXRTYXZlZFZhcmlh
YmxlSW5mb0F0Qnl0ZWNvZGVPZmZzZXQodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpCisgICAgewor
ICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrID0gbV9ncmFwaC5maW5kQmFzaWNCbG9j
a0ZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KTsKKyAgICAgICAgQVNTRVJUKGJsb2Nr
KTsKKyAgICAgICAgQVNTRVJUKCFibG9jay0+aXNFbnRyeUJsb2NrKCkpOworICAgICAgICBBU1NF
UlQoIWJsb2NrLT5pc0V4aXRCbG9jaygpKTsKKyAgICAgICAgRmFzdEJpdFZlY3RvciBpbjsKKyAg
ICAgICAgaW4ucmVzaXplKGJsb2NrLT5pbigpLm51bUJpdHMoKSk7CisgICAgICAgIGNvbXB1dGVM
b2NhbFNhdmVkVmFyaWFibGVGb3JCeXRlY29kZU9mZnNldChibG9jaywgYnl0ZWNvZGVPZmZzZXQs
IGluKTsKKyAgICAgICAgcmV0dXJuIGluOworICAgIH0KKworICAgIHZvaWQgcnVuU2F2ZWRWYXJp
YWJsZUFuYWx5c2lzKCkKKyAgICB7CisgICAgICAgIC8vIElmIHdlIHNhdmUgYWxsIHRoZSB2YXJp
YWJsZSB0aGF0IHdpbGwgYmUgcmVzdW1lZCwgaXQncyBPSy4KKyAgICAgICAgLy8gQnV0IHdlIGNh
biBhdm9pZCBzb21lIHNhdmVkIHZhcmlhYmxlcyB0aGF0IGFyZSBvbmx5IGRlZmluZWQgYnkgdGhl
IHByZXZpb3VzIG9wX3Jlc3VtZS4KKyAgICAgICAgLy8KKyAgICAgICAgLy8gSW4gdGhpcyBwaGFz
ZSwgd2UgcGVyZm9ybSBmb3J3YXJkIGFuYWx5c2lzIHRvIGV4dHJhY3Qgd2hpY2ggdmFyaWFibGVz
IG5lZWQgdG8gYmUgbmV3bHkgc2F2ZWQgd2hlbiBleGVjdXRpbmcgb3Bfc2F2ZS4KKyAgICAgICAg
Ly8gV2UgY2FsY3VsYXRlIHRoZSByZWdpc3RlcnMgdGhhdCBpcyBkZWZpbmVkIGluIG5vbi1vcF9y
ZXN1bWUgYW5kIGNhbiByZWFjaCB0byB0aGUgb3Bfc2F2ZS4KKyAgICAgICAgLy8KKyAgICAgICAg
Ly8gICBvcF9yZXN1bWUsIGRlZmluZSByMQorICAgICAgICAvLyAgIC4uLgorICAgICAgICAvLyAg
IC4uLgorICAgICAgICAvLyAgIG5vLWp1bXBzICYgbm8gcjEgZGVmcy4KKyAgICAgICAgLy8gICAu
Li4KKyAgICAgICAgLy8gICBvcF9zYXZlICAjIEhlcmUsIGl0IGlzIG5vdCBuZWNlc3NhcnkgdG8g
c2F2ZSByMS4KKworICAgICAgICBVbmxpbmtlZENvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2sg
PSBtX2dyYXBoLmNvZGVCbG9jaygpOworCisgICAgICAgIC8vIFdlIGNvbnNpZGVyIHRoZSBiYXNp
YyBibG9ja3Mgd2l0aGluIHRoZSB0cnkgcmFuZ2UgYXJlIGNvbnNpZGVyZWQgYXMgdGhlIGltcGxp
Y2l0IHByZWRlY2Vzc29ycyBvZiB0aGUgaGFuZGxlcnMuCisgICAgICAgIC8vIFRoZSBkZWZzIGlu
IHRoZXNlIGJhc2ljIGJsb2NrcyBhcmUgY2FycmllZCB0byB0aGUgZXhjZXB0aW9uIGhhbmRsZXIu
IEFuZCBpZiB0aGUgb3Bfc2F2ZSBpcyBleGVjdXRlZCBpbiB0aGUgaGFuZGxlciwKKyAgICAgICAg
Ly8gY2FycmllZCBkZWZzIGFyZSBjb25zaWRlcmVkLgorICAgICAgICAvLworICAgICAgICAvLyBI
ZXJlLCB3ZSBhZGQgdGhlIHdob2xlIGJhc2ljIGJsb2NrcyBhcyB0aGUgaW1wbGljaXQgcHJlZGVj
ZXNzb3JzIG9mIHRoZSBoYW5kbGVycyBmb3Igc2ltcGxpY2l0eS4KKyAgICAgICAgLy8gVGhpcyBp
cyBhIGxpdHRsZSBiaXQgY29uc2VydmF0aXZlOiB0aGUgdHJ5IHJhbmdlIG1heSBub3QgY292ZXIg
YWxsIHRoZSBiYXNpYyBibG9jay4gQnV0IHNpbmNlIHRoZSBvdXQgc2V0IHN0YXR1cyBhdAorICAg
ICAgICAvLyB0aGUgdGFpbCBvZiB0aGUgYmFzaWMgYmxvY2sgaXMgYWx3YXlzIGxhcmdlciB0aGFu
IHRoZSBvdXQgc2V0IHN0YXR1cyBpbiB0aGUgbWlkZGxlIG9mIHRoZSBiYXNpYyBibG9ja3MsIHRo
aXMgZG9lcyBub3QKKyAgICAgICAgLy8gZmFpbCB0byBrZWVwIHRoZSB2YXJpYWJsZXMgdGhhdCBz
aG91bGQgYmUgc2F2ZWQuCisgICAgICAgIC8vCisgICAgICAgIC8vIE9ubHkgdGhlIGV4ZXB0aW9u
IGlzIHRoZSBvcF9yZXN1bWUgYmxvY2suIEJ1dCBzaW5jZSB0aGUgcmFuZ2UgYmV0d2VlbiB0aGUg
anVtcCB0YXJnZXQgZnJvbSB0aGUgZ2xvYmFsIGRpc3BhdGNoIGFuZCBvcF9yZXN1bWUKKyAgICAg
ICAgLy8gaXMgbmV2ZXIgY292ZXJ0ZWQgYnkgdGhlIHRyeSByYW5nZSwgaXQncyBub3QgYSBwcm9i
bGVtLgorICAgICAgICBWZWN0b3I8T3B0aW9uYWw8RmFzdEJpdFZlY3Rvcj4+IHBvc3NpYmxlUHJl
ZGVjZXNzb3JzRm9ySGFuZGxlcnM7CisgICAgICAgIHBvc3NpYmxlUHJlZGVjZXNzb3JzRm9ySGFu
ZGxlcnMucmVzaXplKG1fZ3JhcGguYmFzaWNCbG9ja3MoKS5zaXplKCkpOworICAgICAgICB7Cisg
ICAgICAgICAgICBhdXRvJiBpbnN0cnVjdGlvbnMgPSBtX2dyYXBoLmluc3RydWN0aW9ucygpOwor
ICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHVubGlua2VkQ29kZUJsb2NrLT5u
dW1iZXJPZkV4Y2VwdGlvbkhhbmRsZXJzKCk7ICsraSkgeworICAgICAgICAgICAgICAgIGF1dG8m
IGhhbmRsZXIgPSB1bmxpbmtlZENvZGVCbG9jay0+ZXhjZXB0aW9uSGFuZGxlcihpKTsKKworICAg
ICAgICAgICAgICAgIEZhc3RCaXRWZWN0b3IgcHJlZGVjZXNzb3JzOworICAgICAgICAgICAgICAg
IHByZWRlY2Vzc29ycy5yZXNpemUobV9ncmFwaC5iYXNpY0Jsb2NrcygpLnNpemUoKSk7CisgICAg
ICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBieXRlY29kZU9mZnNldCA9IGhhbmRsZXIuc3RhcnQ7
IGJ5dGVjb2RlT2Zmc2V0IDwgaGFuZGxlci5lbmQ7KSB7CisgICAgICAgICAgICAgICAgICAgIFVu
bGlua2VkSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uID0gJmluc3RydWN0aW9uc1tieXRlY29kZU9m
ZnNldF07CisgICAgICAgICAgICAgICAgICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW5zdHJ1Y3Rp
b24tPnUub3Bjb2RlOworICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBvcGNvZGVMZW5ndGgg
PSBvcGNvZGVMZW5ndGhzW29wY29kZUlEXTsKKworICAgICAgICAgICAgICAgICAgICBCeXRlY29k
ZUJhc2ljQmxvY2sqIHBvc3NpYmxlUHJlZGVjZXNzb3IgPSBtX2dyYXBoLmZpbmRCYXNpY0Jsb2Nr
Rm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpOworICAgICAgICAgICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVChwb3NzaWJsZVByZWRlY2Vzc29yKTsKKyAgICAgICAgICAgICAgICAgICAg
cHJlZGVjZXNzb3JzLnNldChwb3NzaWJsZVByZWRlY2Vzc29yLT5pbmRleCgpKTsKKworICAgICAg
ICAgICAgICAgICAgICBieXRlY29kZU9mZnNldCArPSBvcGNvZGVMZW5ndGg7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogaGFuZGxlckJsb2Nr
ID0gbV9ncmFwaC5maW5kQmFzaWNCbG9ja1dpdGhMZWFkZXJPZmZzZXQoaGFuZGxlci50YXJnZXQp
OworICAgICAgICAgICAgICAgIHBvc3NpYmxlUHJlZGVjZXNzb3JzRm9ySGFuZGxlcnNbaGFuZGxl
ckJsb2NrLT5pbmRleCgpXSA9IFdURk1vdmUocHJlZGVjZXNzb3JzKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorCisgICAgICAgIHVuc2lnbmVkIG51bWJlck9mVmFyaWFibGVzID0gdW5saW5r
ZWRDb2RlQmxvY2stPm1fbnVtQ2FsbGVlTG9jYWxzOworICAgICAgICBmb3IgKHN0ZDo6dW5pcXVl
X3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+JiBibG9jayA6IG1fZ3JhcGguYmFzaWNCbG9ja3MoKSkg
eworICAgICAgICAgICAgYmxvY2stPmluKCkucmVzaXplKG51bWJlck9mVmFyaWFibGVzKTsKKyAg
ICAgICAgICAgIGJsb2NrLT5vdXQoKS5yZXNpemUobnVtYmVyT2ZWYXJpYWJsZXMpOworICAgICAg
ICAgICAgYmxvY2stPmluKCkuY2xlYXJBbGwoKTsKKyAgICAgICAgICAgIGJsb2NrLT5vdXQoKS5j
bGVhckFsbCgpOworICAgICAgICB9CisKKyAgICAgICAgYm9vbCBjaGFuZ2VkOworICAgICAgICBC
eXRlY29kZUJhc2ljQmxvY2sqIGZpcnN0QmxvY2sgPSBtX2dyYXBoLmJhc2ljQmxvY2tzKCkuZmly
c3QoKS5nZXQoKTsKKyAgICAgICAgRmFzdEJpdFZlY3RvciBuZXdJbjsKKyAgICAgICAgbmV3SW4u
cmVzaXplKGZpcnN0QmxvY2stPmluKCkubnVtQml0cygpKTsKKyAgICAgICAgZG8geworICAgICAg
ICAgICAgY2hhbmdlZCA9IGZhbHNlOworICAgICAgICAgICAgZm9yIChzdGQ6OnVuaXF1ZV9wdHI8
Qnl0ZWNvZGVCYXNpY0Jsb2NrPiYgYmxvY2sgOiBtX2dyYXBoLmJhc2ljQmxvY2tzKCkpIHsKKyAg
ICAgICAgICAgICAgICBuZXdJbi5jbGVhckFsbCgpOworICAgICAgICAgICAgICAgIGJvb2wgbWVy
Z2VCbG9jayA9IG1fbWVyZ2VCbG9ja3MuZ2V0KGJsb2NrLT5pbmRleCgpKTsKKyAgICAgICAgICAg
ICAgICBmb3IgKEJ5dGVjb2RlQmFzaWNCbG9jayogcHJlZGVjZXNzb3IgOiBibG9jay0+cHJlZGVj
ZXNzb3JzKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gTWVyZ2UgdGhlIG91dCBzZXQgb2Yg
dGhlIGluY29tbWluZyBwcmVkZWNlc3NvcnMgdW5sZXNzIHRoZSBjdXJyZW50IGJsb2NrIGlzIHRo
ZSBtZXJnZSBibG9jayBhbmQgdGhlIHByZWRlY2Vzc29yIGlzIHRoZSBzYXZlIGJsb2NrLgorICAg
ICAgICAgICAgICAgICAgICAvLyBXZSB3b3VsZCBsaWtlIHRvIHJlY29yZCB0aGUgb3V0IHNldCBv
ZiB0aGUgc2F2ZSBibG9jayBzaW5jZSB0aGlzIG91dCBzZXQgd291bGQgYmUgbGF0ZXIgdXNlZCBh
cyB0aGUgZGVmcyBmb3IgdGhlIGV4Y2VwdGlvbiBoYW5kbGVycy4KKyAgICAgICAgICAgICAgICAg
ICAgLy8gQnV0IHdlIGRvbid0IHdhbnQgdG8gbWVyZ2UgdGhlIGRlZnMgZnJvbSB0aGUgc2F2ZSBi
bG9jayBhdCB0aGUgbWVyZ2UgYmxvY2ssIHNpbmNlIHRoZXNlIGRlZnMgc2hvdWxkIGJlIHNhdmVk
IGluIHRoZSBzYXZlIGJsb2NrIGFuZAorICAgICAgICAgICAgICAgICAgICAvLyBub3QgcmVsYXRl
ZCB0byB0aGUgbWVyZ2UgYmxvY2suCisgICAgICAgICAgICAgICAgICAgIGlmICghKG1lcmdlQmxv
Y2sgJiYgbV9zYXZlQmxvY2tzLmdldChwcmVkZWNlc3Nvci0+aW5kZXgoKSkpKQorICAgICAgICAg
ICAgICAgICAgICAgICAgbmV3SW4ubWVyZ2UocHJlZGVjZXNzb3ItPm91dCgpKTsKKyAgICAgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAoYXV0byYgb3B0aW9uYWxQcmVkZWNlc3Nv
clNldCA9IHBvc3NpYmxlUHJlZGVjZXNzb3JzRm9ySGFuZGxlcnNbYmxvY2stPmluZGV4KCldKSB7
CisgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsUHJlZGVjZXNzb3JTZXQtPmZvckVhY2hTZXRC
aXQoWyZdICh1bnNpZ25lZCBibG9ja0luZGV4KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBu
ZXdJbi5tZXJnZShtX2dyYXBoLmJhc2ljQmxvY2tzKClbYmxvY2tJbmRleF0tPm91dCgpKTsKKyAg
ICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAg
ICAgYmxvY2stPmluKCkuc2V0KG5ld0luKTsKKyAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IGNv
bXB1dGVMb2NhbFNhdmVkVmFyaWFibGVGb3JCbG9jayhibG9jay5nZXQoKSk7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0gd2hpbGUgKGNoYW5nZWQpOworCisgICAgICAgIGZvciAoWWllbGREYXRh
JiBkYXRhIDogbV95aWVsZHMpIHsKKyAgICAgICAgICAgIGRhdGEuY2hhbmdlZCA9IGRhdGEubGl2
ZW5lc3M7CisgICAgICAgICAgICBkYXRhLmNoYW5nZWQuZmlsdGVyKGdldFNhdmVkVmFyaWFibGVJ
bmZvQXRCeXRlY29kZU9mZnNldChkYXRhLnNhdmVQb2ludCkpOworICAgICAgICB9CisgICAgfQor
CisgICAgdm9pZCBydW4oKQorICAgIHsKKyAgICAgICAgbV9tZXJnZUJsb2Nrcy5yZXNpemUobV9n
cmFwaC5iYXNpY0Jsb2NrcygpLnNpemUoKSk7CisgICAgICAgIG1fc2F2ZUJsb2Nrcy5yZXNpemUo
bV9ncmFwaC5iYXNpY0Jsb2NrcygpLnNpemUoKSk7CisKKyAgICAgICAgZm9yIChzdGQ6OnVuaXF1
ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiYgYmxvY2sgOiBtX2dyYXBoLmJhc2ljQmxvY2tzKCkp
IHsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQgOiBibG9jay0+Ynl0
ZWNvZGVPZmZzZXRzKCkpIHsKKyAgICAgICAgICAgICAgICBjb25zdCBVbmxpbmtlZEluc3RydWN0
aW9uKiBwYyA9ICZtX2dyYXBoLmluc3RydWN0aW9ucygpW2J5dGVjb2RlT2Zmc2V0XTsKKyAgICAg
ICAgICAgICAgICBzd2l0Y2ggKHBjLT51Lm9wY29kZSkgeworICAgICAgICAgICAgICAgIGNhc2Ug
b3Bfc2F2ZTogeworICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxz
SW5kZXggPSBwY1syXS51LmluZGV4OworICAgICAgICAgICAgICAgICAgICBpbnQgb2Zmc2V0ID0g
cGNbM10udS5vcGVyYW5kOworICAgICAgICAgICAgICAgICAgICBpZiAobGl2ZUNhbGxlZUxvY2Fs
c0luZGV4ID49IG1feWllbGRzLnNpemUoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIG1feWll
bGRzLnJlc2l6ZShsaXZlQ2FsbGVlTG9jYWxzSW5kZXggKyAxKTsKKyAgICAgICAgICAgICAgICAg
ICAgbV95aWVsZHNbbGl2ZUNhbGxlZUxvY2Fsc0luZGV4XS5zYXZlUG9pbnQgPSBieXRlY29kZU9m
ZnNldDsKKyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbWVyZ2VQb2ludCA9IGJ5dGVjb2Rl
T2Zmc2V0ICsgb2Zmc2V0OworICAgICAgICAgICAgICAgICAgICBtX3lpZWxkc1tsaXZlQ2FsbGVl
TG9jYWxzSW5kZXhdLm1lcmdlUG9pbnQgPSBtZXJnZVBvaW50OworICAgICAgICAgICAgICAgICAg
ICBtX21lcmdlQmxvY2tzLnNldChtX2dyYXBoLmZpbmRCYXNpY0Jsb2NrRm9yQnl0ZWNvZGVPZmZz
ZXQobWVyZ2VQb2ludCktPmluZGV4KCkpOworICAgICAgICAgICAgICAgICAgICBtX3NhdmVCbG9j
a3Muc2V0KGJsb2NrLT5pbmRleCgpKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgY2FzZSBvcF9yZXN1bWU6IHsKKyAgICAg
ICAgICAgICAgICAgICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gcGNbMl0udS5p
bmRleDsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxpdmVDYWxsZWVMb2NhbHNJbmRleCA+PSBt
X3lpZWxkcy5zaXplKCkpCisgICAgICAgICAgICAgICAgICAgICAgICBtX3lpZWxkcy5yZXNpemUo
bGl2ZUNhbGxlZUxvY2Fsc0luZGV4ICsgMSk7CisgICAgICAgICAgICAgICAgICAgIG1feWllbGRz
W2xpdmVDYWxsZWVMb2NhbHNJbmRleF0ucmVzdW1lUG9pbnQgPSBieXRlY29kZU9mZnNldDsKKyAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcnVuR2VuZXJhdG9yVmFy
aWFibGVMaXZlbmVzc0FuYWx5c2lzKCk7CisKKyAgICAgICAgcnVuU2F2ZWRWYXJpYWJsZUFuYWx5
c2lzKCk7CisKKyAgICAgICAgVW5saW5rZWRDb2RlQmxvY2sqIGNvZGVCbG9jayA9IG1fZ3JhcGgu
Y29kZUJsb2NrKCk7CisgICAgICAgIGZvciAoY29uc3QgWWllbGREYXRhJiBkYXRhIDogbV95aWVs
ZHMpIHsKKyAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBzY29wZSA9IHZpcnR1YWxSZWdpc3Rl
ckZvckFyZ3VtZW50KDUpOworCisgICAgICAgICAgICAvLyBvcF9zYXZlLgorICAgICAgICAgICAg
ZGF0YS5jaGFuZ2VkLmZvckVhY2hTZXRCaXQoWyZdKHNpemVfdCBpbmRleCkgeworICAgICAgICAg
ICAgICAgIFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kID0gdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwo
aW5kZXgpOworICAgICAgICAgICAgICAgIFN0b3JhZ2Ugc3RvcmFnZSA9IHN0b3JhZ2VGb3JHZW5l
cmF0b3JMb2NhbChpbmRleCk7CisKKyAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNl
cnQoZGF0YS5zYXZlUG9pbnQsIEJ5dGVjb2RlSW5zZXJ0aW9uU2V0OjpJbnNlcnRlZEJ5dGVjb2Rl
IHsgeworICAgICAgICAgICAgICAgICAgICBvcF9wdXRfdG9fc2NvcGUsCisgICAgICAgICAgICAg
ICAgICAgIHNjb3BlLm9mZnNldCgpLCAvLyBzY29wZQorICAgICAgICAgICAgICAgICAgICBzdG9y
YWdlLmlkZW50aWZpZXJJbmRleCwgLy8gaWRlbnRpZmllcgorICAgICAgICAgICAgICAgICAgICBv
cGVyYW5kLm9mZnNldCgpLCAvLyB2YWx1ZQorICAgICAgICAgICAgICAgICAgICBHZXRQdXRJbmZv
KERvTm90VGhyb3dJZk5vdEZvdW5kLCBMb2NhbENsb3N1cmVWYXIsIEluaXRpYWxpemF0aW9uTW9k
ZTo6Tm90SW5pdGlhbGl6YXRpb24pLm9wZXJhbmQoKSwgLy8gaW5mbworICAgICAgICAgICAgICAg
ICAgICBtX2dlbmVyYXRvckZyYW1lU3ltYm9sVGFibGVJbmRleCwgLy8gc3ltYm9sIHRhYmxlIGNv
bnN0YW50IGluZGV4CisgICAgICAgICAgICAgICAgICAgIHN0b3JhZ2Uuc2NvcGVPZmZzZXQub2Zm
c2V0KCksIC8vIHNjb3BlIG9mZnNldAorICAgICAgICAgICAgICAgIH0gfSk7CisgICAgICAgICAg
ICB9KTsKKworICAgICAgICAgICAgLy8gb3BfcmVzdW1lLgorICAgICAgICAgICAgZGF0YS5saXZl
bmVzcy5mb3JFYWNoU2V0Qml0KFsmXShzaXplX3QgaW5kZXgpIHsKKyAgICAgICAgICAgICAgICBW
aXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCA9IHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGluZGV4KTsK
KyAgICAgICAgICAgICAgICBTdG9yYWdlIHN0b3JhZ2UgPSBzdG9yYWdlRm9yR2VuZXJhdG9yTG9j
YWwoaW5kZXgpOworCisgICAgICAgICAgICAgICAgVW5saW5rZWRWYWx1ZVByb2ZpbGUgcHJvZmls
ZSA9IGNvZGVCbG9jay0+YWRkVmFsdWVQcm9maWxlKCk7CisgICAgICAgICAgICAgICAgbV9pbnNl
cnRpb25TZXQuaW5zZXJ0KGRhdGEucmVzdW1lUG9pbnQsIEJ5dGVjb2RlSW5zZXJ0aW9uU2V0OjpJ
bnNlcnRlZEJ5dGVjb2RlIHsgeworICAgICAgICAgICAgICAgICAgICBvcF9nZXRfZnJvbV9zY29w
ZSwKKyAgICAgICAgICAgICAgICAgICAgb3BlcmFuZC5vZmZzZXQoKSwgLy8gZHN0CisgICAgICAg
ICAgICAgICAgICAgIHNjb3BlLm9mZnNldCgpLCAvLyBzY29wZQorICAgICAgICAgICAgICAgICAg
ICBzdG9yYWdlLmlkZW50aWZpZXJJbmRleCwgLy8gaWRlbnRpZmllcgorICAgICAgICAgICAgICAg
ICAgICBHZXRQdXRJbmZvKERvTm90VGhyb3dJZk5vdEZvdW5kLCBMb2NhbENsb3N1cmVWYXIsIElu
aXRpYWxpemF0aW9uTW9kZTo6Tm90SW5pdGlhbGl6YXRpb24pLm9wZXJhbmQoKSwgLy8gaW5mbwor
ICAgICAgICAgICAgICAgICAgICAwLCAvLyBsb2NhbCBzY29wZSBkZXB0aAorICAgICAgICAgICAg
ICAgICAgICBzdG9yYWdlLnNjb3BlT2Zmc2V0Lm9mZnNldCgpLCAvLyBzY29wZSBvZmZzZXQKKyAg
ICAgICAgICAgICAgICAgICAgcHJvZmlsZSAvLyBwcm9maWxlCisgICAgICAgICAgICAgICAgfSB9
KTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICAvLyBDbGlwIHRoZSB1bm5lY2Vzc2Fy
eSBieXRlY29kZXMuCisgICAgICAgICAgICBtX2luc2VydGlvblNldC5yZW1vdmVCeXRlY29kZShk
YXRhLnNhdmVQb2ludCk7CisgICAgICAgICAgICBtX2luc2VydGlvblNldC5yZW1vdmVCeXRlY29k
ZShkYXRhLnJlc3VtZVBvaW50KTsKKyAgICAgICAgfQorCisgICAgICAgIG1faW5zZXJ0aW9uU2V0
LmV4ZWN1dGUoKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQnl0ZWNvZGVHcmFwaDxVbmxpbmtl
ZENvZGVCbG9jaz4gbV9ncmFwaDsKKyAgICBCeXRlY29kZUluc2VydGlvblNldCBtX2luc2VydGlv
blNldDsKKyAgICBWZWN0b3I8T3B0aW9uYWw8U3RvcmFnZT4+IG1fc3RvcmFnZXM7CisgICAgVmVj
dG9yPFlpZWxkRGF0YT4gbV95aWVsZHM7CisgICAgRmFzdEJpdFZlY3RvciBtX21lcmdlQmxvY2tz
OworICAgIEZhc3RCaXRWZWN0b3IgbV9zYXZlQmxvY2tzOworICAgIFN0cm9uZzxTeW1ib2xUYWJs
ZT4gbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlOworICAgIGludCBtX2dlbmVyYXRvckZyYW1l
U3ltYm9sVGFibGVJbmRleDsKK307CisKK3ZvaWQgcGVyZm9ybUdlbmVyYXRvcmlmaWNhdGlvbihV
bmxpbmtlZENvZGVCbG9jayogY29kZUJsb2NrLCBVbmxpbmtlZENvZGVCbG9jazo6VW5wYWNrZWRJ
bnN0cnVjdGlvbnMmIGluc3RydWN0aW9ucywgU3ltYm9sVGFibGUqIGdlbmVyYXRvckZyYW1lU3lt
Ym9sVGFibGUsIGludCBnZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlSW5kZXgpCit7CisgICAgQnl0
ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24gcGFzcyhjb2RlQmxvY2ssIGluc3RydWN0aW9ucywgZ2Vu
ZXJhdG9yRnJhbWVTeW1ib2xUYWJsZSwgZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZUluZGV4KTsK
KyAgICBwYXNzLnJ1bigpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0
aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZWI3ZWM5NmVkNzBkYmJhMjIxMTFlYjEzNzczM2ZiMjAwNTViMTEx
YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZUdlbmVyYXRvcmlmaWNhdGlvbi5oCkBAIC0wLDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTYgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIlVubGlua2VkQ29kZUJsb2NrLmgiCisKK25h
bWVzcGFjZSBKU0MgeworCitjbGFzcyBTeW1ib2xUYWJsZTsKKwordm9pZCBwZXJmb3JtR2VuZXJh
dG9yaWZpY2F0aW9uKFVubGlua2VkQ29kZUJsb2NrKiwgVW5saW5rZWRDb2RlQmxvY2s6OlVucGFj
a2VkSW5zdHJ1Y3Rpb25zJiwgU3ltYm9sVGFibGUqIGdlbmVyYXRvckZyYW1lU3ltYm9sVGFibGUs
IGludCBnZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlSW5kZXgpOworCit9IC8vIG5hbWVzcGFjZSBK
U0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUdy
YXBoLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVHcmFwaC5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmI3NTU4NGIwZmE5NDczZWIxMTMyOWM4OWEwNzk5YzAxZGU1NWIyODEKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVHcmFw
aC5oCkBAIC0wLDAgKzEsMTE0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IFl1c3VrZSBT
dXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBCeXRlY29k
ZUdyYXBoX2gKKyNkZWZpbmUgQnl0ZWNvZGVHcmFwaF9oCisKKyNpbmNsdWRlICJCeXRlY29kZUJh
c2ljQmxvY2suaCIKKyNpbmNsdWRlIDx3dGYvSXRlcmF0b3JSYW5nZS5oPgorI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEJ5dGVjb2RlQmFzaWNCbG9j
azsKKwordGVtcGxhdGU8dHlwZW5hbWUgQmxvY2s+CitjbGFzcyBCeXRlY29kZUdyYXBoIHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShCeXRl
Y29kZUdyYXBoKTsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8
Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4gQmFzaWNCbG9ja3NWZWN0b3I7CisKKyAgICBpbmxpbmUgQnl0
ZWNvZGVHcmFwaChCbG9jayosIHR5cGVuYW1lIEJsb2NrOjpVbnBhY2tlZEluc3RydWN0aW9ucyYp
OworCisgICAgQmxvY2sqIGNvZGVCbG9jaygpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrOyB9
CisKKyAgICBCYXNpY0Jsb2Nrc1ZlY3RvciYgYmFzaWNCbG9ja3MoKSB7IHJldHVybiBtX2Jhc2lj
QmxvY2tzOyB9CisKKyAgICB0eXBlbmFtZSBCbG9jazo6VW5wYWNrZWRJbnN0cnVjdGlvbnMmIGlu
c3RydWN0aW9ucygpIHsgcmV0dXJuIG1faW5zdHJ1Y3Rpb25zOyB9CisKKyAgICBXVEY6Okl0ZXJh
dG9yUmFuZ2U8QmFzaWNCbG9ja3NWZWN0b3I6OnJldmVyc2VfaXRlcmF0b3I+IGJhc2ljQmxvY2tz
SW5SZXZlcnNlT3JkZXIoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFdURjo6bWFrZUl0ZXJhdG9y
UmFuZ2UobV9iYXNpY0Jsb2Nrcy5yYmVnaW4oKSwgbV9iYXNpY0Jsb2Nrcy5yZW5kKCkpOworICAg
IH0KKworICAgIHN0YXRpYyBib29sIGJsb2NrQ29udGFpbnNCeXRlY29kZU9mZnNldChCeXRlY29k
ZUJhc2ljQmxvY2sqIGJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCkKKyAgICB7CisgICAg
ICAgIHVuc2lnbmVkIGxlYWRlck9mZnNldCA9IGJsb2NrLT5sZWFkZXJCeXRlY29kZU9mZnNldCgp
OworICAgICAgICByZXR1cm4gYnl0ZWNvZGVPZmZzZXQgPj0gbGVhZGVyT2Zmc2V0ICYmIGJ5dGVj
b2RlT2Zmc2V0IDwgbGVhZGVyT2Zmc2V0ICsgYmxvY2stPnRvdGFsQnl0ZWNvZGVMZW5ndGgoKTsK
KyAgICB9CisKKyAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGZpbmRCYXNpY0Jsb2NrRm9yQnl0ZWNv
ZGVPZmZzZXQodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpCisgICAgeworICAgICAgICAvKgorICAg
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fYmFzaWNCbG9ja3Muc2l6ZSgpOyBp
KyspIHsKKyAgICAgICAgICAgICAgICBpZiAoYmxvY2tDb250YWluc0J5dGVjb2RlT2Zmc2V0KG1f
YmFzaWNCbG9ja3NbaV0uZ2V0KCksIGJ5dGVjb2RlT2Zmc2V0KSkKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIG1fYmFzaWNCbG9ja3NbaV0uZ2V0KCk7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICByZXR1cm4gMDsKKyAgICAgICAgKi8KKworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8Qnl0
ZWNvZGVCYXNpY0Jsb2NrPiogYmFzaWNCbG9jayA9IGFwcHJveGltYXRlQmluYXJ5U2VhcmNoPHN0
ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+LCB1bnNpZ25lZD4obV9iYXNpY0Jsb2Nr
cywgbV9iYXNpY0Jsb2Nrcy5zaXplKCksIGJ5dGVjb2RlT2Zmc2V0LCBbXSAoc3RkOjp1bmlxdWVf
cHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4qIGJhc2ljQmxvY2spIHsgcmV0dXJuICgqYmFzaWNCbG9j
ayktPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCk7IH0pOworICAgICAgICAvLyBXZSBmb3VuZCB0aGUg
YmxvY2sgd2Ugd2VyZSBsb29raW5nIGZvci4KKyAgICAgICAgaWYgKGJsb2NrQ29udGFpbnNCeXRl
Y29kZU9mZnNldCgoKmJhc2ljQmxvY2spLmdldCgpLCBieXRlY29kZU9mZnNldCkpCisgICAgICAg
ICAgICByZXR1cm4gKCpiYXNpY0Jsb2NrKS5nZXQoKTsKKworICAgICAgICAvLyBCYXNpYyBibG9j
ayBpcyB0byB0aGUgbGVmdCBvZiB0aGUgcmV0dXJuZWQgYmxvY2suCisgICAgICAgIGlmIChieXRl
Y29kZU9mZnNldCA8ICgqYmFzaWNCbG9jayktPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCkpIHsKKyAg
ICAgICAgICAgIEFTU0VSVChiYXNpY0Jsb2NrIC0gMSA+PSBtX2Jhc2ljQmxvY2tzLmRhdGEoKSk7
CisgICAgICAgICAgICBBU1NFUlQoYmxvY2tDb250YWluc0J5dGVjb2RlT2Zmc2V0KGJhc2ljQmxv
Y2tbLTFdLmdldCgpLCBieXRlY29kZU9mZnNldCkpOworICAgICAgICAgICAgcmV0dXJuIGJhc2lj
QmxvY2tbLTFdLmdldCgpOworICAgICAgICB9CisKKyAgICAgICAgLy8gQmFzaWMgYmxvY2sgaXMg
dG8gdGhlIHJpZ2h0IG9mIHRoZSByZXR1cm5lZCBibG9jay4KKyAgICAgICAgQVNTRVJUKCZiYXNp
Y0Jsb2NrWzFdIDw9ICZtX2Jhc2ljQmxvY2tzLmxhc3QoKSk7CisgICAgICAgIEFTU0VSVChibG9j
a0NvbnRhaW5zQnl0ZWNvZGVPZmZzZXQoYmFzaWNCbG9ja1sxXS5nZXQoKSwgYnl0ZWNvZGVPZmZz
ZXQpKTsKKyAgICAgICAgcmV0dXJuIGJhc2ljQmxvY2tbMV0uZ2V0KCk7CisgICAgfQorCisgICAg
Qnl0ZWNvZGVCYXNpY0Jsb2NrKiBmaW5kQmFzaWNCbG9ja1dpdGhMZWFkZXJPZmZzZXQodW5zaWdu
ZWQgbGVhZGVyT2Zmc2V0KQorICAgIHsKKyAgICAgICAgcmV0dXJuICgqdHJ5QmluYXJ5U2VhcmNo
PHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+LCB1bnNpZ25lZD4obV9iYXNpY0Js
b2NrcywgbV9iYXNpY0Jsb2Nrcy5zaXplKCksIGxlYWRlck9mZnNldCwgW10gKHN0ZDo6dW5pcXVl
X3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+KiBiYXNpY0Jsb2NrKSB7IHJldHVybiAoKmJhc2ljQmxv
Y2spLT5sZWFkZXJCeXRlY29kZU9mZnNldCgpOyB9KSkuZ2V0KCk7CisgICAgfQorCitwcml2YXRl
OgorICAgIEJsb2NrKiBtX2NvZGVCbG9jazsKKyAgICBCYXNpY0Jsb2Nrc1ZlY3RvciBtX2Jhc2lj
QmxvY2tzOworICAgIHR5cGVuYW1lIEJsb2NrOjpVbnBhY2tlZEluc3RydWN0aW9ucyYgbV9pbnN0
cnVjdGlvbnM7Cit9OworCisKK3RlbXBsYXRlPHR5cGVuYW1lIEJsb2NrPgorQnl0ZWNvZGVHcmFw
aDxCbG9jaz46OkJ5dGVjb2RlR3JhcGgoQmxvY2sqIGNvZGVCbG9jaywgdHlwZW5hbWUgQmxvY2s6
OlVucGFja2VkSW5zdHJ1Y3Rpb25zJiBpbnN0cnVjdGlvbnMpCisgICAgOiBtX2NvZGVCbG9jayhj
b2RlQmxvY2spCisgICAgLCBtX2luc3RydWN0aW9ucyhpbnN0cnVjdGlvbnMpCit7CisgICAgQVNT
RVJUKG1fY29kZUJsb2NrKTsKKyAgICBCeXRlY29kZUJhc2ljQmxvY2s6OmNvbXB1dGVCeXRlY29k
ZUJhc2ljQmxvY2tzKG1fY29kZUJsb2NrLCBpbnN0cnVjdGlvbnMuYmVnaW4oKSwgaW5zdHJ1Y3Rp
b25zLnNpemUoKSwgbV9iYXNpY0Jsb2Nrcyk7CisgICAgQVNTRVJUKG1fYmFzaWNCbG9ja3Muc2l6
ZSgpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisjZW5kaWYgLy8gQnl0ZWNvZGVHcmFwaF9o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnNl
cnRpb25TZXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW5z
ZXJ0aW9uU2V0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZDVmNTQxY2MwYTU3MzQwMDRlOWNkZDcxMDZhZTA4
YzBhNGFmN2IyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlSW5zZXJ0aW9uU2V0LmNwcApAQCAtMCwwICsxLDg0IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE2IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkJ5dGVjb2RlSW5zZXJ0aW9u
U2V0LmgiCisKKyNpbmNsdWRlIDx3dGYvQnViYmxlU29ydC5oPgorCituYW1lc3BhY2UgSlNDIHsK
KworaW50IEJ5dGVjb2RlSW5zZXJ0aW9uU2V0OjphZGp1c3RPZmZzZXQoaW50IGJ5dGVjb2RlT2Zm
c2V0LCBpbnQganVtcFRhcmdldCkKK3sKKyAgICBpZiAoYnl0ZWNvZGVPZmZzZXQgPCBqdW1wVGFy
Z2V0KSB7CisgICAgICAgIGF1dG8gc3RhcnQgPSBzdGQ6Omxvd2VyX2JvdW5kKG1faW5zZXJ0aW9u
cy5iZWdpbigpLCBtX2luc2VydGlvbnMuZW5kKCksIGJ5dGVjb2RlT2Zmc2V0LCBbJl0gKGNvbnN0
IEluc2VydGlvbiYgaW5zZXJ0aW9uLCBpbnQgYnl0ZWNvZGVPZmZzZXQpIHsKKyAgICAgICAgICAg
IHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KGluc2VydGlvbi5pbmRleCgpKSA8IGJ5dGVjb2RlT2Zm
c2V0OworICAgICAgICB9KTsKKyAgICAgICAgaWYgKHN0YXJ0ICE9IG1faW5zZXJ0aW9ucy5lbmQo
KSkgeworICAgICAgICAgICAgYXV0byBlbmQgPSBzdGQ6Omxvd2VyX2JvdW5kKG1faW5zZXJ0aW9u
cy5iZWdpbigpLCBtX2luc2VydGlvbnMuZW5kKCksIGp1bXBUYXJnZXQsIFsmXSAoY29uc3QgSW5z
ZXJ0aW9uJiBpbnNlcnRpb24sIGludCBqdW1wVGFyZ2V0KSB7CisgICAgICAgICAgICAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PGludD4oaW5zZXJ0aW9uLmluZGV4KCkpIDwganVtcFRhcmdldDsKKyAg
ICAgICAgICAgIH0pOworICAgICAgICAgICAgZm9yICg7IHN0YXJ0ICE9IGVuZDsgKytzdGFydCkg
eworICAgICAgICAgICAgICAgIGlmIChzdGFydC0+ZWxlbWVudCgpLnR5cGUgPT0gQ29tbWFuZDo6
VHlwZTo6UmVtb3ZlKQorICAgICAgICAgICAgICAgICAgICBqdW1wVGFyZ2V0IC09IHN0YXJ0LT5l
bGVtZW50KCkubGVuZ3RoOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAg
ICAganVtcFRhcmdldCArPSBzdGFydC0+ZWxlbWVudCgpLmxlbmd0aDsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgICAgICByZXR1cm4ganVtcFRhcmdldCAtIGJ5dGVjb2RlT2Zmc2V0Owor
ICAgIH0KKworICAgIGlmIChieXRlY29kZU9mZnNldCA9PSBqdW1wVGFyZ2V0KQorICAgICAgICBy
ZXR1cm4gMDsKKworICAgIHJldHVybiAtYWRqdXN0T2Zmc2V0KGp1bXBUYXJnZXQsIGJ5dGVjb2Rl
T2Zmc2V0KTsKK30KKwordm9pZCBCeXRlY29kZUluc2VydGlvblNldDo6YXBwbHlNb2RpZmljYXRp
b24oKQoreworICAgIGZvciAoc2l6ZV90IGluc2VydGlvbkluZGV4ID0gbV9pbnNlcnRpb25zLnNp
emUoKTsgaW5zZXJ0aW9uSW5kZXgtLTspIHsKKyAgICAgICAgY29uc3QgSW5zZXJ0aW9uJiBpbnNl
cnRpb24gPSBtX2luc2VydGlvbnNbaW5zZXJ0aW9uSW5kZXhdOworICAgICAgICBpZiAoaW5zZXJ0
aW9uLmVsZW1lbnQoKS50eXBlID09IENvbW1hbmQ6OlR5cGU6OlJlbW92ZSkKKyAgICAgICAgICAg
IG1fZ3JhcGguaW5zdHJ1Y3Rpb25zKCkucmVtb3ZlKGluc2VydGlvbi5pbmRleCgpLCBpbnNlcnRp
b24uZWxlbWVudCgpLmxlbmd0aCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fZ3JhcGgu
aW5zdHJ1Y3Rpb25zKCkuaW5zZXJ0KGluc2VydGlvbi5pbmRleCgpLCBpbnNlcnRpb24uZWxlbWVu
dCgpLmJ5dGVjb2RlLmluc3RydWN0aW9ucywgb3Bjb2RlTGVuZ3RoKGluc2VydGlvbi5lbGVtZW50
KCkuYnl0ZWNvZGUuaW5zdHJ1Y3Rpb25zWzBdLnUub3Bjb2RlKSk7CisgICAgfQorICAgIG1faW5z
ZXJ0aW9ucy5jbGVhcigpOworfQorCit2b2lkIEJ5dGVjb2RlSW5zZXJ0aW9uU2V0OjpleGVjdXRl
KCkKK3sKKyAgICBXVEY6OmJ1YmJsZVNvcnQobV9pbnNlcnRpb25zLmJlZ2luKCksIG1faW5zZXJ0
aW9ucy5lbmQoKSwgW10gKGNvbnN0IEluc2VydGlvbiYgbGhzLCBjb25zdCBJbnNlcnRpb24mIHJo
cykgeworICAgICAgICAvLyBXZSB3b3VsZCBsaWtlIHRvIHBlcmZvcm0gcmVtb3ZlIG9wZXJhdGlv
biBiZWZvcmUgaW5zZXJ0aW9uLgorICAgICAgICBpZiAobGhzLmluZGV4KCkgPT0gcmhzLmluZGV4
KCkpCisgICAgICAgICAgICByZXR1cm4gcmhzLmVsZW1lbnQoKS50eXBlID09IENvbW1hbmQ6OlR5
cGU6OlJlbW92ZTsKKyAgICAgICAgcmV0dXJuIGxocyA8IHJoczsKKyAgICB9KTsKKworICAgIFVu
bGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBtX2dyYXBoLmNvZGVCbG9jaygpOworICAgIGNv
ZGVCbG9jay0+YXBwbHlNb2RpZmljYXRpb24oKnRoaXMpOworfQorCit9IC8vIG5hbWVzcGFjZSBK
U0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUlu
c2VydGlvblNldC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlSW5z
ZXJ0aW9uU2V0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTAzMGRiNWRhMGNhMzg1Y2E5YzZiZTViODQ4ODZjMjQ3
NzgxNzZjMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZUluc2VydGlvblNldC5oCkBAIC0wLDAgKzEsODIgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTYgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkJ5dGVjb2RlR3JhcGguaCIKKyNpbmNsdWRl
ICJVbmxpbmtlZENvZGVCbG9jay5oIgorI2luY2x1ZGUgPHd0Zi9JbnNlcnRpb24uaD4KKworbmFt
ZXNwYWNlIEpTQyB7CisKK2NsYXNzIEJ5dGVjb2RlSW5zZXJ0aW9uU2V0IHsKK3B1YmxpYzoKKyAg
ICBzdHJ1Y3QgSW5zZXJ0ZWRCeXRlY29kZSB7CisgICAgICAgIFVubGlua2VkSW5zdHJ1Y3Rpb24g
aW5zdHJ1Y3Rpb25zW01BWF9PUENPREVfTEVOR1RIX09GX0JZVEVDT0RFXTsKKyAgICB9OworCisg
ICAgc3RydWN0IENvbW1hbmQgeworICAgICAgICBlbnVtIGNsYXNzIFR5cGUgeworICAgICAgICAg
ICAgSW5zZXJ0LAorICAgICAgICAgICAgUmVtb3ZlLAorICAgICAgICB9OworCisgICAgICAgIFR5
cGUgdHlwZTsKKyAgICAgICAgc2l6ZV90IGxlbmd0aDsKKyAgICAgICAgSW5zZXJ0ZWRCeXRlY29k
ZSBieXRlY29kZTsKKyAgICB9OworCisgICAgdHlwZWRlZiBXVEY6Okluc2VydGlvbjxDb21tYW5k
PiBJbnNlcnRpb247CisKKyAgICBCeXRlY29kZUluc2VydGlvblNldChCeXRlY29kZUdyYXBoPFVu
bGlua2VkQ29kZUJsb2NrPiYgZ3JhcGgpCisgICAgICAgIDogbV9ncmFwaChncmFwaCkKKyAgICB7
CisgICAgfQorCisgICAgdm9pZCBpbnNlcnQodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIEluc2Vy
dGVkQnl0ZWNvZGUgYnl0ZWNvZGUpCisgICAgeworICAgICAgICBtX2luc2VydGlvbnMuYXBwZW5k
KEluc2VydGlvbihieXRlY29kZU9mZnNldCwgQ29tbWFuZCB7IENvbW1hbmQ6OlR5cGU6Okluc2Vy
dCwgb3Bjb2RlTGVuZ3RoKGJ5dGVjb2RlLmluc3RydWN0aW9uc1swXS51Lm9wY29kZSksIGJ5dGVj
b2RlIH0pKTsKKyAgICB9CisKKyAgICB2b2lkIHJlbW92ZUJ5dGVjb2RlKHVuc2lnbmVkIGJ5dGVj
b2RlT2Zmc2V0KQorICAgIHsKKyAgICAgICAgbV9pbnNlcnRpb25zLmFwcGVuZChJbnNlcnRpb24o
Ynl0ZWNvZGVPZmZzZXQsIENvbW1hbmQgeyBDb21tYW5kOjpUeXBlOjpSZW1vdmUsIG9wY29kZUxl
bmd0aChtX2dyYXBoLmluc3RydWN0aW9ucygpW2J5dGVjb2RlT2Zmc2V0XS51Lm9wY29kZSksIElu
c2VydGVkQnl0ZWNvZGUgeyB9IH0pKTsKKyAgICB9CisKKyAgICB2b2lkIGV4ZWN1dGUoKTsKKwor
ICAgIEJ5dGVjb2RlR3JhcGg8VW5saW5rZWRDb2RlQmxvY2s+JiBncmFwaCgpIHsgcmV0dXJuIG1f
Z3JhcGg7IH0KKworICAgIGludCBhZGp1c3RPZmZzZXQoaW50IGJ5dGVjb2RlT2Zmc2V0LCBpbnQg
anVtcFRhcmdldCk7CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIFVubGlua2VkQ29kZUJs
b2NrOworICAgIHZvaWQgYXBwbHlNb2RpZmljYXRpb24oKTsKKworICAgIEJ5dGVjb2RlR3JhcGg8
VW5saW5rZWRDb2RlQmxvY2s+JiBtX2dyYXBoOworICAgIFZlY3RvcjxJbnNlcnRpb24sIDg+IG1f
aW5zZXJ0aW9uczsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNw
cAppbmRleCAxN2U4MmEyZmJiYTAxNTA0M2U5OWQzNGVkMjU2OTM3MmIzNmY3YTg1Li41ZmFkYzdi
OWJjZTBmYzhhODU4NDg5YjI2MGI5M2Y5YzlhMzU2NzgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNw
cApAQCAtMzEsNzQgKzMxLDI5IEBACiAjaW5jbHVkZSAiQnl0ZWNvZGVVc2VEZWYuaCIKICNpbmNs
dWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJGdWxsQnl0ZWNvZGVMaXZlbmVzcy5oIgorI2lu
Y2x1ZGUgIkludGVycHJldGVySW5saW5lcy5oIgogI2luY2x1ZGUgIlByZWNpc2VKdW1wVGFyZ2V0
cy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAogQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpCeXRl
Y29kZUxpdmVuZXNzQW5hbHlzaXMoQ29kZUJsb2NrKiBjb2RlQmxvY2spCi0gICAgOiBtX2NvZGVC
bG9jayhjb2RlQmxvY2spCisgICAgOiBtX2dyYXBoKGNvZGVCbG9jaywgY29kZUJsb2NrLT5pbnN0
cnVjdGlvbnMoKSkKIHsKLSAgICBBU1NFUlQobV9jb2RlQmxvY2spOwogICAgIGNvbXB1dGUoKTsK
IH0KIAotc3RhdGljIGJvb2wgaXNWYWxpZFJlZ2lzdGVyRm9yTGl2ZW5lc3MoQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIGludCBvcGVyYW5kKQorc3RhdGljIGJvb2wgaXNWYWxpZFJlZ2lzdGVyRm9yTGl2
ZW5lc3MoaW50IG9wZXJhbmQpCiB7Ci0gICAgaWYgKGNvZGVCbG9jay0+aXNDb25zdGFudFJlZ2lz
dGVySW5kZXgob3BlcmFuZCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKICAgICBWaXJ0
dWFsUmVnaXN0ZXIgdmlydHVhbFJlZyhvcGVyYW5kKTsKKyAgICBpZiAodmlydHVhbFJlZy5pc0Nv
bnN0YW50KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1cm4gdmlydHVhbFJlZy5p
c0xvY2FsKCk7CiB9CiAKLXN0YXRpYyB1bnNpZ25lZCBnZXRMZWFkZXJPZmZzZXRGb3JCYXNpY0Js
b2NrKHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+KiBiYXNpY0Jsb2NrKQotewot
ICAgIHJldHVybiAoKmJhc2ljQmxvY2spLT5sZWFkZXJCeXRlY29kZU9mZnNldCgpOwotfQotCi1z
dGF0aWMgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBmaW5kQmFzaWNCbG9ja1dpdGhMZWFkZXJPZmZzZXQo
VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9ja3Ms
IHVuc2lnbmVkIGxlYWRlck9mZnNldCkKLXsKLSAgICByZXR1cm4gKCp0cnlCaW5hcnlTZWFyY2g8
c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4sIHVuc2lnbmVkPihiYXNpY0Jsb2Nr
cywgYmFzaWNCbG9ja3Muc2l6ZSgpLCBsZWFkZXJPZmZzZXQsIGdldExlYWRlck9mZnNldEZvckJh
c2ljQmxvY2spKS5nZXQoKTsKLX0KLQotc3RhdGljIGJvb2wgYmxvY2tDb250YWluc0J5dGVjb2Rl
T2Zmc2V0KEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0
KQotewotICAgIHVuc2lnbmVkIGxlYWRlck9mZnNldCA9IGJsb2NrLT5sZWFkZXJCeXRlY29kZU9m
ZnNldCgpOwotICAgIHJldHVybiBieXRlY29kZU9mZnNldCA+PSBsZWFkZXJPZmZzZXQgJiYgYnl0
ZWNvZGVPZmZzZXQgPCBsZWFkZXJPZmZzZXQgKyBibG9jay0+dG90YWxCeXRlY29kZUxlbmd0aCgp
OwotfQotCi1zdGF0aWMgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBmaW5kQmFzaWNCbG9ja0ZvckJ5dGVj
b2RlT2Zmc2V0KFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mIGJh
c2ljQmxvY2tzLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCkKLXsKLS8qCi0gICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IGJhc2ljQmxvY2tzLnNpemUoKTsgaSsrKSB7Ci0gICAgICAgIGlmIChi
bG9ja0NvbnRhaW5zQnl0ZWNvZGVPZmZzZXQoYmFzaWNCbG9ja3NbaV0uZ2V0KCksIGJ5dGVjb2Rl
T2Zmc2V0KSkKLSAgICAgICAgICAgIHJldHVybiBiYXNpY0Jsb2Nrc1tpXS5nZXQoKTsKLSAgICB9
Ci0gICAgcmV0dXJuIDA7Ci0qLwotICAgIHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxv
Y2s+KiBiYXNpY0Jsb2NrID0gYXBwcm94aW1hdGVCaW5hcnlTZWFyY2g8c3RkOjp1bmlxdWVfcHRy
PEJ5dGVjb2RlQmFzaWNCbG9jaz4sIHVuc2lnbmVkPigKLSAgICAgICAgYmFzaWNCbG9ja3MsIGJh
c2ljQmxvY2tzLnNpemUoKSwgYnl0ZWNvZGVPZmZzZXQsIGdldExlYWRlck9mZnNldEZvckJhc2lj
QmxvY2spOwotICAgIC8vIFdlIGZvdW5kIHRoZSBibG9jayB3ZSB3ZXJlIGxvb2tpbmcgZm9yLgot
ICAgIGlmIChibG9ja0NvbnRhaW5zQnl0ZWNvZGVPZmZzZXQoKCpiYXNpY0Jsb2NrKS5nZXQoKSwg
Ynl0ZWNvZGVPZmZzZXQpKQotICAgICAgICByZXR1cm4gKCpiYXNpY0Jsb2NrKS5nZXQoKTsKLQot
ICAgIC8vIEJhc2ljIGJsb2NrIGlzIHRvIHRoZSBsZWZ0IG9mIHRoZSByZXR1cm5lZCBibG9jay4K
LSAgICBpZiAoYnl0ZWNvZGVPZmZzZXQgPCAoKmJhc2ljQmxvY2spLT5sZWFkZXJCeXRlY29kZU9m
ZnNldCgpKSB7Ci0gICAgICAgIEFTU0VSVChiYXNpY0Jsb2NrIC0gMSA+PSBiYXNpY0Jsb2Nrcy5k
YXRhKCkpOwotICAgICAgICBBU1NFUlQoYmxvY2tDb250YWluc0J5dGVjb2RlT2Zmc2V0KGJhc2lj
QmxvY2tbLTFdLmdldCgpLCBieXRlY29kZU9mZnNldCkpOwotICAgICAgICByZXR1cm4gYmFzaWNC
bG9ja1stMV0uZ2V0KCk7Ci0gICAgfQotCi0gICAgLy8gQmFzaWMgYmxvY2sgaXMgdG8gdGhlIHJp
Z2h0IG9mIHRoZSByZXR1cm5lZCBibG9jay4KLSAgICBBU1NFUlQoJmJhc2ljQmxvY2tbMV0gPD0g
JmJhc2ljQmxvY2tzLmxhc3QoKSk7Ci0gICAgQVNTRVJUKGJsb2NrQ29udGFpbnNCeXRlY29kZU9m
ZnNldChiYXNpY0Jsb2NrWzFdLmdldCgpLCBieXRlY29kZU9mZnNldCkpOwotICAgIHJldHVybiBi
YXNpY0Jsb2NrWzFdLmdldCgpOwotfQotCiAvLyBTaW1wbGlmaWVkIGludGVyZmFjZSB0byBieXRl
Y29kZSB1c2UvZGVmLCB3aGljaCBkZXRlcm1pbmVzIGRlZnMgZmlyc3QgYW5kIHRoZW4gdXNlcywg
YW5kIGluY2x1ZGVzCiAvLyBleGNlcHRpb24gaGFuZGxlcnMgaW4gdGhlIHVzZXMuCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBVc2VGdW5jdG9yLCB0eXBlbmFtZSBEZWZGdW5jdG9yPgotc3RhdGljIHZvaWQg
c3RlcE92ZXJJbnN0cnVjdGlvbihDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Js
b2NrKiBibG9jaywgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYg
YmFzaWNCbG9ja3MsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBjb25zdCBVc2VGdW5jdG9yJiB1
c2UsIGNvbnN0IERlZkZ1bmN0b3ImIGRlZikKK3N0YXRpYyB2b2lkIHN0ZXBPdmVySW5zdHJ1Y3Rp
b24oQnl0ZWNvZGVHcmFwaDxDb2RlQmxvY2s+JiBncmFwaCwgdW5zaWduZWQgYnl0ZWNvZGVPZmZz
ZXQsIGNvbnN0IFVzZUZ1bmN0b3ImIHVzZSwgY29uc3QgRGVmRnVuY3RvciYgZGVmKQogewogICAg
IC8vIFRoaXMgYWJzdHJhY3RseSBleGVjdXRlIHRoZSBpbnN0cnVjdGlvbiBpbiByZXZlcnNlLiBJ
bnN0cnVjdGlvbnMgbG9naWNhbGx5IGZpcnN0IHVzZSBvcGVyYW5kcyBhbmQKICAgICAvLyB0aGVu
IGRlZmluZSBvcGVyYW5kcy4gVGhpcyBsb2dpY2FsIG9yZGVyaW5nIGlzIG5lY2Vzc2FyeSBmb3Ig
b3BlcmF0aW9ucyB0aGF0IHVzZSBhbmQgZGVmIHRoZSBzYW1lCkBAIC0xMTUsNDEgKzcwLDM1IEBA
IHN0YXRpYyB2b2lkIHN0ZXBPdmVySW5zdHJ1Y3Rpb24oQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5
dGVjb2RlQmFzaWNCbG9jayogYmxvY2ssCiAgICAgLy8gdXNlcyBiZWZvcmUgZGVmcywgdGhlbiB0
aGUgYWRkIG9wZXJhdGlvbiBhYm92ZSB3b3VsZCBhcHBlYXIgdG8gbm90IGhhdmUgbG9jMSBsaXZl
LCBzaW5jZSB3ZSdkCiAgICAgLy8gZmlyc3QgYWRkIGl0IHRvIHRoZSBvdXQgc2V0ICh0aGUgdXNl
KSwgYW5kIHRoZW4gd2UnZCByZW1vdmUgaXQgKHRoZSBkZWYpLgogICAgIAorICAgIENvZGVCbG9j
ayogY29kZUJsb2NrID0gZ3JhcGguY29kZUJsb2NrKCk7CisKICAgICBjb21wdXRlRGVmc0ZvckJ5
dGVjb2RlT2Zmc2V0KAotICAgICAgICBjb2RlQmxvY2ssIGJsb2NrLCBieXRlY29kZU9mZnNldCwK
LSAgICAgICAgWyZdIChDb2RlQmxvY2sqIGNvZGVCbG9jaywgSW5zdHJ1Y3Rpb24qLCBPcGNvZGVJ
RCwgaW50IG9wZXJhbmQpIHsKLSAgICAgICAgICAgIGlmIChpc1ZhbGlkUmVnaXN0ZXJGb3JMaXZl
bmVzcyhjb2RlQmxvY2ssIG9wZXJhbmQpKQorICAgICAgICBjb2RlQmxvY2ssIGJ5dGVjb2RlT2Zm
c2V0LAorICAgICAgICBbJl0gKENvZGVCbG9jayosIEluc3RydWN0aW9uKiwgT3Bjb2RlSUQsIGlu
dCBvcGVyYW5kKSB7CisgICAgICAgICAgICBpZiAoaXNWYWxpZFJlZ2lzdGVyRm9yTGl2ZW5lc3Mo
b3BlcmFuZCkpCiAgICAgICAgICAgICAgICAgZGVmKFZpcnR1YWxSZWdpc3RlcihvcGVyYW5kKS50
b0xvY2FsKCkpOwogICAgICAgICB9KTsKIAogICAgIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZz
ZXQoCi0gICAgICAgIGNvZGVCbG9jaywgYmxvY2ssIGJ5dGVjb2RlT2Zmc2V0LAotICAgICAgICBb
Jl0gKENvZGVCbG9jayogY29kZUJsb2NrLCBJbnN0cnVjdGlvbiosIE9wY29kZUlELCBpbnQgb3Bl
cmFuZCkgewotICAgICAgICAgICAgaWYgKGlzVmFsaWRSZWdpc3RlckZvckxpdmVuZXNzKGNvZGVC
bG9jaywgb3BlcmFuZCkpCisgICAgICAgIGNvZGVCbG9jaywgYnl0ZWNvZGVPZmZzZXQsCisgICAg
ICAgIFsmXSAoQ29kZUJsb2NrKiwgSW5zdHJ1Y3Rpb24qLCBPcGNvZGVJRCwgaW50IG9wZXJhbmQp
IHsKKyAgICAgICAgICAgIGlmIChpc1ZhbGlkUmVnaXN0ZXJGb3JMaXZlbmVzcyhvcGVyYW5kKSkK
ICAgICAgICAgICAgICAgICB1c2UoVmlydHVhbFJlZ2lzdGVyKG9wZXJhbmQpLnRvTG9jYWwoKSk7
CiAgICAgICAgIH0pOwogCiAgICAgLy8gSWYgd2UgaGF2ZSBhbiBleGNlcHRpb24gaGFuZGxlciwg
d2Ugd2FudCB0aGUgbGl2ZS1pbiB2YXJpYWJsZXMgb2YgdGhlIAogICAgIC8vIGV4Y2VwdGlvbiBo
YW5kbGVyIGJsb2NrIHRvIGJlIGluY2x1ZGVkIGluIHRoZSBsaXZlLWluIG9mIHRoaXMgcGFydGlj
dWxhciBieXRlY29kZS4KICAgICBpZiAoSGFuZGxlckluZm8qIGhhbmRsZXIgPSBjb2RlQmxvY2st
PmhhbmRsZXJGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCkpIHsKLSAgICAgICAgLy8g
RklYTUU6IFRoaXMgcmVzdW1lIGNoZWNrIHNob3VsZCBub3QgYmUgbmVlZGVkLgotICAgICAgICAv
LyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU5MjgxCi0gICAgICAg
IEludGVycHJldGVyKiBpbnRlcnByZXRlciA9IGNvZGVCbG9jay0+dm0oKS0+aW50ZXJwcmV0ZXI7
Ci0gICAgICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiA9IGNvZGVCbG9jay0+aW5z
dHJ1Y3Rpb25zKCkuYmVnaW4oKTsKLSAgICAgICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uID0g
Jmluc3RydWN0aW9uc0JlZ2luW2J5dGVjb2RlT2Zmc2V0XTsKLSAgICAgICAgT3Bjb2RlSUQgb3Bj
b2RlSUQgPSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb24tPnUub3Bjb2RlKTsK
LSAgICAgICAgaWYgKG9wY29kZUlEICE9IG9wX3Jlc3VtZSkgewotICAgICAgICAgICAgQnl0ZWNv
ZGVCYXNpY0Jsb2NrKiBoYW5kbGVyQmxvY2sgPSBmaW5kQmFzaWNCbG9ja1dpdGhMZWFkZXJPZmZz
ZXQoYmFzaWNCbG9ja3MsIGhhbmRsZXItPnRhcmdldCk7Ci0gICAgICAgICAgICBBU1NFUlQoaGFu
ZGxlckJsb2NrKTsKLSAgICAgICAgICAgIGhhbmRsZXJCbG9jay0+aW4oKS5mb3JFYWNoU2V0Qml0
KHVzZSk7Ci0gICAgICAgIH0KKyAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBoYW5kbGVyQmxv
Y2sgPSBncmFwaC5maW5kQmFzaWNCbG9ja1dpdGhMZWFkZXJPZmZzZXQoaGFuZGxlci0+dGFyZ2V0
KTsKKyAgICAgICAgQVNTRVJUKGhhbmRsZXJCbG9jayk7CisgICAgICAgIGhhbmRsZXJCbG9jay0+
aW4oKS5mb3JFYWNoU2V0Qml0KHVzZSk7CiAgICAgfQogfQogCi1zdGF0aWMgdm9pZCBzdGVwT3Zl
ckluc3RydWN0aW9uKENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJs
b2NrLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+JiBiYXNpY0Js
b2NrcywgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIEZhc3RCaXRWZWN0b3ImIG91dCkKK3N0YXRp
YyB2b2lkIHN0ZXBPdmVySW5zdHJ1Y3Rpb24oQnl0ZWNvZGVHcmFwaDxDb2RlQmxvY2s+JiBncmFw
aCwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIEZhc3RCaXRWZWN0b3ImIG91dCkKIHsKICAgICBz
dGVwT3Zlckluc3RydWN0aW9uKAotICAgICAgICBjb2RlQmxvY2ssIGJsb2NrLCBiYXNpY0Jsb2Nr
cywgYnl0ZWNvZGVPZmZzZXQsCisgICAgICAgIGdyYXBoLCBieXRlY29kZU9mZnNldCwKICAgICAg
ICAgWyZdICh1bnNpZ25lZCBiaXRJbmRleCkgewogICAgICAgICAgICAgLy8gVGhpcyBpcyB0aGUg
dXNlIGZ1bmN0b3IsIHNvIHdlIHNldCB0aGUgYml0LgogICAgICAgICAgICAgb3V0LnNldChiaXRJ
bmRleCk7CkBAIC0xNjAsNyArMTA5LDcgQEAgc3RhdGljIHZvaWQgc3RlcE92ZXJJbnN0cnVjdGlv
bihDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaywKICAgICAg
ICAgfSk7CiB9CiAKLXN0YXRpYyB2b2lkIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQnl0ZWNvZGVP
ZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2ssIFZl
Y3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mIGJhc2ljQmxvY2tzLCB1
bnNpZ25lZCB0YXJnZXRPZmZzZXQsIEZhc3RCaXRWZWN0b3ImIHJlc3VsdCkKK3N0YXRpYyB2b2lk
IGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQnl0ZWNvZGVPZmZzZXQoQnl0ZWNvZGVHcmFwaDxDb2Rl
QmxvY2s+JiBncmFwaCwgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaywgdW5zaWduZWQgdGFyZ2V0
T2Zmc2V0LCBGYXN0Qml0VmVjdG9yJiByZXN1bHQpCiB7CiAgICAgQVNTRVJUKCFibG9jay0+aXNF
eGl0QmxvY2soKSk7CiAgICAgQVNTRVJUKCFibG9jay0+aXNFbnRyeUJsb2NrKCkpOwpAQCAtMTcy
LDQ0ICsxMjEsNDQgQEAgc3RhdGljIHZvaWQgY29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCeXRlY29k
ZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGUKICAgICAgICAgaWYgKHRhcmdl
dE9mZnNldCA+IGJ5dGVjb2RlT2Zmc2V0KQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIAot
ICAgICAgICBzdGVwT3Zlckluc3RydWN0aW9uKGNvZGVCbG9jaywgYmxvY2ssIGJhc2ljQmxvY2tz
LCBieXRlY29kZU9mZnNldCwgb3V0KTsKKyAgICAgICAgc3RlcE92ZXJJbnN0cnVjdGlvbihncmFw
aCwgYnl0ZWNvZGVPZmZzZXQsIG91dCk7CiAgICAgfQogCiAgICAgcmVzdWx0LnNldChvdXQpOwog
fQogCi1zdGF0aWMgdm9pZCBjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJsb2NrKENvZGVCbG9jayog
Y29kZUJsb2NrLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrLCBWZWN0b3I8c3RkOjp1bmlxdWVf
cHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+JiBiYXNpY0Jsb2NrcykKK3N0YXRpYyB2b2lkIGNvbXB1
dGVMb2NhbExpdmVuZXNzRm9yQmxvY2soQnl0ZWNvZGVHcmFwaDxDb2RlQmxvY2s+JiBncmFwaCwg
Qnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaykKIHsKICAgICBpZiAoYmxvY2stPmlzRXhpdEJsb2Nr
KCkgfHwgYmxvY2stPmlzRW50cnlCbG9jaygpKQogICAgICAgICByZXR1cm47Ci0gICAgY29tcHV0
ZUxvY2FsTGl2ZW5lc3NGb3JCeXRlY29kZU9mZnNldChjb2RlQmxvY2ssIGJsb2NrLCBiYXNpY0Js
b2NrcywgYmxvY2stPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCksIGJsb2NrLT5pbigpKTsKKyAgICBj
b21wdXRlTG9jYWxMaXZlbmVzc0ZvckJ5dGVjb2RlT2Zmc2V0KGdyYXBoLCBibG9jaywgYmxvY2st
PmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCksIGJsb2NrLT5pbigpKTsKIH0KIAogdm9pZCBCeXRlY29k
ZUxpdmVuZXNzQW5hbHlzaXM6OnJ1bkxpdmVuZXNzRml4cG9pbnQoKQogewotICAgIFVubGlua2Vk
Q29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jayA9IG1fY29kZUJsb2NrLT51bmxpbmtlZENvZGVC
bG9jaygpOworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gbV9ncmFwaC5jb2RlQmxvY2soKTsK
KyAgICBVbmxpbmtlZENvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2sgPSBjb2RlQmxvY2stPnVu
bGlua2VkQ29kZUJsb2NrKCk7CiAgICAgdW5zaWduZWQgbnVtYmVyT2ZWYXJpYWJsZXMgPSB1bmxp
bmtlZENvZGVCbG9jay0+bV9udW1DYWxsZWVMb2NhbHM7CiAKLSAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgbV9iYXNpY0Jsb2Nrcy5zaXplKCk7IGkrKykgewotICAgICAgICBCeXRlY29kZUJh
c2ljQmxvY2sqIGJsb2NrID0gbV9iYXNpY0Jsb2Nrc1tpXS5nZXQoKTsKKyAgICBmb3IgKHN0ZDo6
dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+JiBibG9jayA6IG1fZ3JhcGguYmFzaWNCbG9j
a3MoKSkgewogICAgICAgICBibG9jay0+aW4oKS5yZXNpemUobnVtYmVyT2ZWYXJpYWJsZXMpOwog
ICAgICAgICBibG9jay0+b3V0KCkucmVzaXplKG51bWJlck9mVmFyaWFibGVzKTsKICAgICB9CiAK
ICAgICBib29sIGNoYW5nZWQ7Ci0gICAgbV9iYXNpY0Jsb2Nrcy5sYXN0KCktPmluKCkuY2xlYXJB
bGwoKTsKLSAgICBtX2Jhc2ljQmxvY2tzLmxhc3QoKS0+b3V0KCkuY2xlYXJBbGwoKTsKKyAgICBC
eXRlY29kZUJhc2ljQmxvY2sqIGxhc3RCbG9jayA9IG1fZ3JhcGguYmFzaWNCbG9ja3MoKS5sYXN0
KCkuZ2V0KCk7CisgICAgbGFzdEJsb2NrLT5pbigpLmNsZWFyQWxsKCk7CisgICAgbGFzdEJsb2Nr
LT5vdXQoKS5jbGVhckFsbCgpOwogICAgIEZhc3RCaXRWZWN0b3IgbmV3T3V0OwotICAgIG5ld091
dC5yZXNpemUobV9iYXNpY0Jsb2Nrcy5sYXN0KCktPm91dCgpLm51bUJpdHMoKSk7CisgICAgbmV3
T3V0LnJlc2l6ZShsYXN0QmxvY2stPm91dCgpLm51bUJpdHMoKSk7CiAgICAgZG8gewogICAgICAg
ICBjaGFuZ2VkID0gZmFsc2U7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1fYmFzaWNCbG9j
a3Muc2l6ZSgpIC0gMTsgaS0tOykgewotICAgICAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBi
bG9jayA9IG1fYmFzaWNCbG9ja3NbaV0uZ2V0KCk7CisgICAgICAgIGZvciAoc3RkOjp1bmlxdWVf
cHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4mIGJsb2NrIDogbV9ncmFwaC5iYXNpY0Jsb2Nrc0luUmV2
ZXJzZU9yZGVyKCkpIHsKICAgICAgICAgICAgIG5ld091dC5jbGVhckFsbCgpOwotICAgICAgICAg
ICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8IGJsb2NrLT5zdWNjZXNzb3JzKCkuc2l6ZSgpOyBq
KyspCi0gICAgICAgICAgICAgICAgbmV3T3V0Lm1lcmdlKGJsb2NrLT5zdWNjZXNzb3JzKClbal0t
PmluKCkpOworICAgICAgICAgICAgZm9yIChCeXRlY29kZUJhc2ljQmxvY2sqIHN1Y2Nlc3NvciA6
IGJsb2NrLT5zdWNjZXNzb3JzKCkpCisgICAgICAgICAgICAgICAgbmV3T3V0Lm1lcmdlKHN1Y2Nl
c3Nvci0+aW4oKSk7CiAgICAgICAgICAgICBib29sIG91dERpZENoYW5nZSA9IGJsb2NrLT5vdXQo
KS5zZXRBbmRDaGVjayhuZXdPdXQpOwotICAgICAgICAgICAgY29tcHV0ZUxvY2FsTGl2ZW5lc3NG
b3JCbG9jayhtX2NvZGVCbG9jaywgYmxvY2ssIG1fYmFzaWNCbG9ja3MpOworICAgICAgICAgICAg
Y29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCbG9jayhtX2dyYXBoLCBibG9jay5nZXQoKSk7CiAgICAg
ICAgICAgICBjaGFuZ2VkIHw9IG91dERpZENoYW5nZTsKICAgICAgICAgfQogICAgIH0gd2hpbGUg
KGNoYW5nZWQpOwpAQCAtMjE3LDEyICsxNjYsMTIgQEAgdm9pZCBCeXRlY29kZUxpdmVuZXNzQW5h
bHlzaXM6OnJ1bkxpdmVuZXNzRml4cG9pbnQoKQogCiB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFs
eXNpczo6Z2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29kZU9mZnNldCh1bnNpZ25lZCBieXRlY29kZU9m
ZnNldCwgRmFzdEJpdFZlY3RvciYgcmVzdWx0KQogewotICAgIEJ5dGVjb2RlQmFzaWNCbG9jayog
YmxvY2sgPSBmaW5kQmFzaWNCbG9ja0ZvckJ5dGVjb2RlT2Zmc2V0KG1fYmFzaWNCbG9ja3MsIGJ5
dGVjb2RlT2Zmc2V0KTsKKyAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrID0gbV9ncmFwaC5m
aW5kQmFzaWNCbG9ja0ZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KTsKICAgICBBU1NF
UlQoYmxvY2spOwogICAgIEFTU0VSVCghYmxvY2stPmlzRW50cnlCbG9jaygpKTsKICAgICBBU1NF
UlQoIWJsb2NrLT5pc0V4aXRCbG9jaygpKTsKICAgICByZXN1bHQucmVzaXplKGJsb2NrLT5vdXQo
KS5udW1CaXRzKCkpOwotICAgIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQnl0ZWNvZGVPZmZzZXQo
bV9jb2RlQmxvY2ssIGJsb2NrLCBtX2Jhc2ljQmxvY2tzLCBieXRlY29kZU9mZnNldCwgcmVzdWx0
KTsKKyAgICBjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJ5dGVjb2RlT2Zmc2V0KG1fZ3JhcGgsIGJs
b2NrLCBieXRlY29kZU9mZnNldCwgcmVzdWx0KTsKIH0KIAogYm9vbCBCeXRlY29kZUxpdmVuZXNz
QW5hbHlzaXM6Om9wZXJhbmRJc0xpdmVBdEJ5dGVjb2RlT2Zmc2V0KGludCBvcGVyYW5kLCB1bnNp
Z25lZCBieXRlY29kZU9mZnNldCkKQEAgLTI0NCwxMSArMTkzLDExIEBAIEZhc3RCaXRWZWN0b3Ig
Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpnZXRMaXZlbmVzc0luZm9BdEJ5dGVjb2RlT2Zmc2V0
KHVuc2lnbmVkCiB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0ZUZ1bGxMaXZl
bmVzcyhGdWxsQnl0ZWNvZGVMaXZlbmVzcyYgcmVzdWx0KQogewogICAgIEZhc3RCaXRWZWN0b3Ig
b3V0OworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gbV9ncmFwaC5jb2RlQmxvY2soKTsKICAg
ICAKLSAgICByZXN1bHQubV9tYXAucmVzaXplKG1fY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5z
aXplKCkpOworICAgIHJlc3VsdC5tX21hcC5yZXNpemUoY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMo
KS5zaXplKCkpOwogICAgIAotICAgIGZvciAodW5zaWduZWQgaSA9IG1fYmFzaWNCbG9ja3Muc2l6
ZSgpOyBpLS07KSB7Ci0gICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2sgPSBtX2Jhc2lj
QmxvY2tzW2ldLmdldCgpOworICAgIGZvciAoc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNC
bG9jaz4mIGJsb2NrIDogbV9ncmFwaC5iYXNpY0Jsb2Nrc0luUmV2ZXJzZU9yZGVyKCkpIHsKICAg
ICAgICAgaWYgKGJsb2NrLT5pc0VudHJ5QmxvY2soKSB8fCBibG9jay0+aXNFeGl0QmxvY2soKSkK
ICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAKQEAgLTI1Niw3ICsyMDUsNyBAQCB2b2lk
IEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0ZUZ1bGxMaXZlbmVzcyhGdWxsQnl0ZWNv
ZGVMaXZlbmVzcyYgcmVzdWx0KQogICAgICAgICAKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
YmxvY2stPmJ5dGVjb2RlT2Zmc2V0cygpLnNpemUoKTsgaS0tOykgewogICAgICAgICAgICAgdW5z
aWduZWQgYnl0ZWNvZGVPZmZzZXQgPSBibG9jay0+Ynl0ZWNvZGVPZmZzZXRzKClbaV07Ci0gICAg
ICAgICAgICBzdGVwT3Zlckluc3RydWN0aW9uKG1fY29kZUJsb2NrLCBibG9jaywgbV9iYXNpY0Js
b2NrcywgYnl0ZWNvZGVPZmZzZXQsIG91dCk7CisgICAgICAgICAgICBzdGVwT3Zlckluc3RydWN0
aW9uKG1fZ3JhcGgsIGJ5dGVjb2RlT2Zmc2V0LCBvdXQpOwogICAgICAgICAgICAgcmVzdWx0Lm1f
bWFwW2J5dGVjb2RlT2Zmc2V0XSA9IG91dDsKICAgICAgICAgfQogICAgIH0KQEAgLTI2NiwxMSAr
MjE1LDExIEBAIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlS2lsbHMoQnl0
ZWNvZGVLaWxscyYgcmVzdWx0KQogewogICAgIEZhc3RCaXRWZWN0b3Igb3V0OwogICAgIAotICAg
IHJlc3VsdC5tX2NvZGVCbG9jayA9IG1fY29kZUJsb2NrOwotICAgIHJlc3VsdC5tX2tpbGxTZXRz
ID0gc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZUtpbGxzOjpLaWxsU2V0W10+KG1fY29kZUJsb2Nr
LT5pbnN0cnVjdGlvbnMoKS5zaXplKCkpOworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gbV9n
cmFwaC5jb2RlQmxvY2soKTsKKyAgICByZXN1bHQubV9jb2RlQmxvY2sgPSBjb2RlQmxvY2s7Cisg
ICAgcmVzdWx0Lm1fa2lsbFNldHMgPSBzdGQ6Om1ha2VfdW5pcXVlPEJ5dGVjb2RlS2lsbHM6Oktp
bGxTZXRbXT4oY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5zaXplKCkpOwogICAgIAotICAgIGZv
ciAodW5zaWduZWQgaSA9IG1fYmFzaWNCbG9ja3Muc2l6ZSgpOyBpLS07KSB7Ci0gICAgICAgIEJ5
dGVjb2RlQmFzaWNCbG9jayogYmxvY2sgPSBtX2Jhc2ljQmxvY2tzW2ldLmdldCgpOworICAgIGZv
ciAoc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4mIGJsb2NrIDogbV9ncmFwaC5i
YXNpY0Jsb2Nrc0luUmV2ZXJzZU9yZGVyKCkpIHsKICAgICAgICAgaWYgKGJsb2NrLT5pc0VudHJ5
QmxvY2soKSB8fCBibG9jay0+aXNFeGl0QmxvY2soKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgICAKQEAgLTI3OSw3ICsyMjgsNyBAQCB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNp
czo6Y29tcHV0ZUtpbGxzKEJ5dGVjb2RlS2lsbHMmIHJlc3VsdCkKICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gYmxvY2stPmJ5dGVjb2RlT2Zmc2V0cygpLnNpemUoKTsgaS0tOykgewogICAgICAg
ICAgICAgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQgPSBibG9jay0+Ynl0ZWNvZGVPZmZzZXRzKClb
aV07CiAgICAgICAgICAgICBzdGVwT3Zlckluc3RydWN0aW9uKAotICAgICAgICAgICAgICAgIG1f
Y29kZUJsb2NrLCBibG9jaywgbV9iYXNpY0Jsb2NrcywgYnl0ZWNvZGVPZmZzZXQsCisgICAgICAg
ICAgICAgICAgbV9ncmFwaCwgYnl0ZWNvZGVPZmZzZXQsCiAgICAgICAgICAgICAgICAgWyZdICh1
bnNpZ25lZCBpbmRleCkgewogICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIGZvciB1c2Vz
LgogICAgICAgICAgICAgICAgICAgICBpZiAob3V0LmdldChpbmRleCkpCkBAIC0yOTcsMTIgKzI0
NiwxMyBAQCB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0ZUtpbGxzKEJ5dGVj
b2RlS2lsbHMmIHJlc3VsdCkKIAogdm9pZCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmR1bXBS
ZXN1bHRzKCkKIHsKLSAgICBkYXRhTG9nKCJcbkR1bXBpbmcgYnl0ZWNvZGUgbGl2ZW5lc3MgZm9y
ICIsICptX2NvZGVCbG9jaywgIjpcbiIpOwotICAgIEludGVycHJldGVyKiBpbnRlcnByZXRlciA9
IG1fY29kZUJsb2NrLT52bSgpLT5pbnRlcnByZXRlcjsKLSAgICBJbnN0cnVjdGlvbiogaW5zdHJ1
Y3Rpb25zQmVnaW4gPSBtX2NvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsKLSAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9iYXNpY0Jsb2Nrcy5zaXplKCk7IGkrKykgewotICAg
ICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrID0gbV9iYXNpY0Jsb2Nrc1tpXS5nZXQoKTsK
LSAgICAgICAgZGF0YUxvZ0YoIlxuQnl0ZWNvZGUgYmFzaWMgYmxvY2sgJXU6ICVwIChvZmZzZXQ6
ICV1LCBsZW5ndGg6ICV1KVxuIiwgaSwgYmxvY2ssIGJsb2NrLT5sZWFkZXJCeXRlY29kZU9mZnNl
dCgpLCBibG9jay0+dG90YWxCeXRlY29kZUxlbmd0aCgpKTsKKyAgICBDb2RlQmxvY2sqIGNvZGVC
bG9jayA9IG1fZ3JhcGguY29kZUJsb2NrKCk7CisgICAgZGF0YUxvZygiXG5EdW1waW5nIGJ5dGVj
b2RlIGxpdmVuZXNzIGZvciAiLCAqY29kZUJsb2NrLCAiOlxuIik7CisgICAgSW50ZXJwcmV0ZXIq
IGludGVycHJldGVyID0gY29kZUJsb2NrLT52bSgpLT5pbnRlcnByZXRlcjsKKyAgICBJbnN0cnVj
dGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4gPSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2lu
KCk7CisgICAgdW5zaWduZWQgaSA9IDA7CisgICAgZm9yIChzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNv
ZGVCYXNpY0Jsb2NrPiYgYmxvY2sgOiBtX2dyYXBoLmJhc2ljQmxvY2tzKCkpIHsKKyAgICAgICAg
ZGF0YUxvZ0YoIlxuQnl0ZWNvZGUgYmFzaWMgYmxvY2sgJXU6ICVwIChvZmZzZXQ6ICV1LCBsZW5n
dGg6ICV1KVxuIiwgaSsrLCBibG9jay5nZXQoKSwgYmxvY2stPmxlYWRlckJ5dGVjb2RlT2Zmc2V0
KCksIGJsb2NrLT50b3RhbEJ5dGVjb2RlTGVuZ3RoKCkpOwogICAgICAgICBkYXRhTG9nRigiU3Vj
Y2Vzc29yczogIik7CiAgICAgICAgIGZvciAodW5zaWduZWQgaiA9IDA7IGogPCBibG9jay0+c3Vj
Y2Vzc29ycygpLnNpemUoKTsgaisrKSB7CiAgICAgICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2sq
IHN1Y2Nlc3NvciA9IGJsb2NrLT5zdWNjZXNzb3JzKClbal07CkBAIC0zMTAsMTEgKzI2MCwxMSBA
QCB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6ZHVtcFJlc3VsdHMoKQogICAgICAgICB9
CiAgICAgICAgIGRhdGFMb2dGKCJcbiIpOwogICAgICAgICBpZiAoYmxvY2stPmlzRW50cnlCbG9j
aygpKSB7Ci0gICAgICAgICAgICBkYXRhTG9nRigiRW50cnkgYmxvY2sgJXBcbiIsIGJsb2NrKTsK
KyAgICAgICAgICAgIGRhdGFMb2dGKCJFbnRyeSBibG9jayAlcFxuIiwgYmxvY2suZ2V0KCkpOwog
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGJsb2NrLT5pc0V4
aXRCbG9jaygpKSB7Ci0gICAgICAgICAgICBkYXRhTG9nRigiRXhpdCBibG9jazogJXBcbiIsIGJs
b2NrKTsKKyAgICAgICAgICAgIGRhdGFMb2dGKCJFeGl0IGJsb2NrOiAlcFxuIiwgYmxvY2suZ2V0
KCkpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICAgICAgICAgZm9yICh1bnNp
Z25lZCBieXRlY29kZU9mZnNldCA9IGJsb2NrLT5sZWFkZXJCeXRlY29kZU9mZnNldCgpOyBieXRl
Y29kZU9mZnNldCA8IGJsb2NrLT5sZWFkZXJCeXRlY29kZU9mZnNldCgpICsgYmxvY2stPnRvdGFs
Qnl0ZWNvZGVMZW5ndGgoKTspIHsKQEAgLTMyNyw3ICsyNzcsNyBAQCB2b2lkIEJ5dGVjb2RlTGl2
ZW5lc3NBbmFseXNpczo6ZHVtcFJlc3VsdHMoKQogICAgICAgICAgICAgICAgICAgICBkYXRhTG9n
RigiJXUgIiwgaik7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBkYXRhTG9nRigiXG4iKTsK
LSAgICAgICAgICAgIG1fY29kZUJsb2NrLT5kdW1wQnl0ZWNvZGUoV1RGOjpkYXRhRmlsZSgpLCBt
X2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKSwgaW5zdHJ1Y3Rpb25zQmVn
aW4sIGN1cnJlbnRJbnN0cnVjdGlvbik7CisgICAgICAgICAgICBjb2RlQmxvY2stPmR1bXBCeXRl
Y29kZShXVEY6OmRhdGFGaWxlKCksIGNvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4
ZWMoKSwgaW5zdHJ1Y3Rpb25zQmVnaW4sIGN1cnJlbnRJbnN0cnVjdGlvbik7CiAKICAgICAgICAg
ICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGluc3RydWN0
aW9uc0JlZ2luW2J5dGVjb2RlT2Zmc2V0XS51Lm9wY29kZSk7CiAgICAgICAgICAgICB1bnNpZ25l
ZCBvcGNvZGVMZW5ndGggPSBvcGNvZGVMZW5ndGhzW29wY29kZUlEXTsKQEAgLTM0Niw4ICsyOTYs
NiBAQCB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6ZHVtcFJlc3VsdHMoKQogCiB2b2lk
IEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0ZSgpCiB7Ci0gICAgY29tcHV0ZUJ5dGVj
b2RlQmFzaWNCbG9ja3MobV9jb2RlQmxvY2ssIG1fYmFzaWNCbG9ja3MpOwotICAgIEFTU0VSVCht
X2Jhc2ljQmxvY2tzLnNpemUoKSk7CiAgICAgcnVuTGl2ZW5lc3NGaXhwb2ludCgpOwogCiAgICAg
aWYgKE9wdGlvbnM6OmR1bXBCeXRlY29kZUxpdmVuZXNzUmVzdWx0cygpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNp
cy5oCmluZGV4IGVjZTE2ZjIxZjAxNTEwYTY0MjdmZDg0MTE0MDc5YmVkODcwYzA4NzUuLjE5NGVh
NGUzODYzZjgzZDhmMWQ3NGU1NDhiNzdiOWNkNTVlMDA3NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmgK
QEAgLTI3LDYgKzI3LDggQEAKICNkZWZpbmUgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzX2gKIAog
I2luY2x1ZGUgIkJ5dGVjb2RlQmFzaWNCbG9jay5oIgorI2luY2x1ZGUgIkJ5dGVjb2RlR3JhcGgu
aCIKKyNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlIDx3dGYvRmFzdEJpdFZlY3Rvci5o
PgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAt
MzQsNyArMzYsNiBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIEJ5dGVjb2RlS2lsbHM7Ci1j
bGFzcyBDb2RlQmxvY2s7CiBjbGFzcyBGdWxsQnl0ZWNvZGVMaXZlbmVzczsKIAogY2xhc3MgQnl0
ZWNvZGVMaXZlbmVzc0FuYWx5c2lzIHsKQEAgLTU2LDggKzU3LDcgQEAgY2xhc3MgQnl0ZWNvZGVM
aXZlbmVzc0FuYWx5c2lzIHsKIAogICAgIHZvaWQgZ2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29kZU9m
ZnNldCh1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgRmFzdEJpdFZlY3RvciYpOwogCi0gICAgQ29k
ZUJsb2NrKiBtX2NvZGVCbG9jazsKLSAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2Rl
QmFzaWNCbG9jaz4+IG1fYmFzaWNCbG9ja3M7CisgICAgQnl0ZWNvZGVHcmFwaDxDb2RlQmxvY2s+
IG1fZ3JhcGg7CiB9OwogCiBpbmxpbmUgYm9vbCBvcGVyYW5kSXNBbHdheXNMaXZlKGludCBvcGVy
YW5kKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZVVzZURlZi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVm
LmgKaW5kZXggOTgxZmIxZDBmZWMwNTcwNGQ1YjdmNjZlYzQ0MTgyNTdlODNhYWMzNi4uZWQyZTZi
ZGMwNDU0M2FiNmU3YTVkMWYyMjNjMDhhOGViZjc0ZjhmMiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKQEAgLTI3LDE4ICsyNywxMyBAQAog
I2RlZmluZSBCeXRlY29kZVVzZURlZl9oCiAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNs
dWRlICJJbnRlcnByZXRlci5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAotdGVtcGxhdGU8dHlwZW5h
bWUgRnVuY3Rvcj4KLXZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCgKLSAgICBDb2Rl
QmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaywgdW5zaWduZWQgYnl0
ZWNvZGVPZmZzZXQsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCit0ZW1wbGF0ZTx0eXBlbmFtZSBC
bG9jaywgdHlwZW5hbWUgRnVuY3RvciwgdHlwZW5hbWUgSW5zdHJ1Y3Rpb24+Cit2b2lkIGNvbXB1
dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoQmxvY2sqIGNvZGVCbG9jaywgT3Bjb2RlSUQgb3Bjb2Rl
SUQsIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikKIHsK
LSAgICBJbnRlcnByZXRlciogaW50ZXJwcmV0ZXIgPSBjb2RlQmxvY2stPnZtKCktPmludGVycHJl
dGVyOwotICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiA9IGNvZGVCbG9jay0+aW5z
dHJ1Y3Rpb25zKCkuYmVnaW4oKTsKLSAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSAmaW5z
dHJ1Y3Rpb25zQmVnaW5bYnl0ZWNvZGVPZmZzZXRdOwotICAgIE9wY29kZUlEIG9wY29kZUlEID0g
aW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGluc3RydWN0aW9uLT51Lm9wY29kZSk7Ci0KICAgICBp
ZiAob3Bjb2RlSUQgIT0gb3BfZW50ZXIgJiYgY29kZUJsb2NrLT53YXNDb21waWxlZFdpdGhEZWJ1
Z2dpbmdPcGNvZGVzKCkgJiYgY29kZUJsb2NrLT5zY29wZVJlZ2lzdGVyKCkuaXNWYWxpZCgpKQog
ICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBjb2RlQmxv
Y2stPnNjb3BlUmVnaXN0ZXIoKS5vZmZzZXQoKSk7CiAKQEAgLTc1LDggKzcwLDcgQEAgdm9pZCBj
b21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAogICAgIGNhc2Ugb3Bfam5lcV9udWxsOgogICAg
IGNhc2Ugb3BfZGVjOgogICAgIGNhc2Ugb3BfaW5jOgotICAgIGNhc2Ugb3BfbG9nX3NoYWRvd19j
aGlja2VuX3Byb2xvZ3VlOgotICAgIGNhc2Ugb3BfcmVzdW1lOiB7CisgICAgY2FzZSBvcF9sb2df
c2hhZG93X2NoaWNrZW5fcHJvbG9ndWU6IHsKICAgICAgICAgQVNTRVJUKG9wY29kZUxlbmd0aHNb
b3Bjb2RlSURdID4gMSk7CiAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwg
b3Bjb2RlSUQsIGluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CiAgICAgICAgIHJldHVybjsKQEAg
LTI4NCwyMiArMjc4LDEzIEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCgKICAg
ICAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGxhc3RB
cmcgKyBpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBjYXNlIG9wX3NhdmU6IHsKLSAg
ICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rp
b25bMV0udS5vcGVyYW5kKTsKLSAgICAgICAgdW5zaWduZWQgbWVyZ2VQb2ludEJ5dGVjb2RlT2Zm
c2V0ID0gYnl0ZWNvZGVPZmZzZXQgKyBpbnN0cnVjdGlvblszXS51Lm9wZXJhbmQ7Ci0gICAgICAg
IEJ5dGVjb2RlQmFzaWNCbG9jayogbWVyZ2VQb2ludEJsb2NrID0gbnVsbHB0cjsKLSAgICAgICAg
Zm9yIChCeXRlY29kZUJhc2ljQmxvY2sqIHN1Y2Nlc3NvciA6IGJsb2NrLT5zdWNjZXNzb3JzKCkp
IHsKLSAgICAgICAgICAgIGlmIChzdWNjZXNzb3ItPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCkgPT0g
bWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0KSB7Ci0gICAgICAgICAgICAgICAgbWVyZ2VQb2ludEJs
b2NrID0gc3VjY2Vzc29yOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQot
ICAgICAgICB9Ci0gICAgICAgIEFTU0VSVChtZXJnZVBvaW50QmxvY2spOwotICAgICAgICBtZXJn
ZVBvaW50QmxvY2stPmluKCkuZm9yRWFjaFNldEJpdChbJl0odW5zaWduZWQgbG9jYWwpIHsKLSAg
ICAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIHZpcnR1
YWxSZWdpc3RlckZvckxvY2FsKGxvY2FsKS5vZmZzZXQoKSk7Ci0gICAgICAgIH0pOworCisgICAg
Y2FzZSBvcF9zYXZlOgorICAgIGNhc2Ugb3BfcmVzdW1lOiB7CisgICAgICAgIC8vIERvIG5vdGhp
bmcgaW4gbGl2ZW5lc3MgYW5hbHlzaXMuCiAgICAgICAgIHJldHVybjsKICAgICB9CisKICAgICBk
ZWZhdWx0OgogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBi
cmVhazsKQEAgLTMwNywxMiArMjkyLDE4IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9m
ZnNldCgKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KLXZvaWQgY29tcHV0ZURlZnNG
b3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Jsb2Nr
KiBibG9jaywgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3Ip
Cit2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQogewogICAg
IEludGVycHJldGVyKiBpbnRlcnByZXRlciA9IGNvZGVCbG9jay0+dm0oKS0+aW50ZXJwcmV0ZXI7
CiAgICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luID0gY29kZUJsb2NrLT5pbnN0cnVj
dGlvbnMoKS5iZWdpbigpOwogICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9ICZpbnN0cnVj
dGlvbnNCZWdpbltieXRlY29kZU9mZnNldF07CiAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnRl
cnByZXRlci0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb24tPnUub3Bjb2RlKTsKKyAgICBjb21wdXRl
VXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9jaywgb3Bjb2RlSUQsIGluc3RydWN0aW9uLCBm
dW5jdG9yKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQmxvY2ssIHR5cGVuYW1lIEluc3RydWN0
aW9uLCB0eXBlbmFtZSBGdW5jdG9yPgordm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0
KEJsb2NrKiBjb2RlQmxvY2ssIE9wY29kZUlEIG9wY29kZUlELCBJbnN0cnVjdGlvbiogaW5zdHJ1
Y3Rpb24sIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCit7CiAgICAgc3dpdGNoIChvcGNvZGVJRCkg
ewogICAgIC8vIFRoZXNlIGRvbid0IGRlZmluZSBhbnl0aGluZy4KICAgICBjYXNlIG9wX2NvcHlf
cmVzdDoKQEAgLTMyMCw3ICszMTEsNiBAQCB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZz
ZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvYwogICAgIGNh
c2Ugb3BfZW5kOgogICAgIGNhc2Ugb3BfdGhyb3c6CiAgICAgY2FzZSBvcF90aHJvd19zdGF0aWNf
ZXJyb3I6Ci0gICAgY2FzZSBvcF9zYXZlOgogICAgIGNhc2Ugb3BfYXNzZXJ0OgogICAgIGNhc2Ug
b3BfZGVidWc6CiAgICAgY2FzZSBvcF9yZXQ6CkBAIC00NTksNyArNDQ5LDcgQEAgdm9pZCBjb21w
dXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29kZUJh
c2ljQmxvY2sqIGJsb2MKICAgICBjYXNlIG9wX2RlbF9ieV9pZDoKICAgICBjYXNlIG9wX2RlbF9i
eV92YWw6CiAgICAgY2FzZSBvcF91bnNpZ25lZDoKLSAgICBjYXNlIG9wX2dldF9mcm9tX2FyZ3Vt
ZW50czogCisgICAgY2FzZSBvcF9nZXRfZnJvbV9hcmd1bWVudHM6CiAgICAgY2FzZSBvcF9nZXRf
cmVzdF9sZW5ndGg6IHsKICAgICAgICAgQVNTRVJUKG9wY29kZUxlbmd0aHNbb3Bjb2RlSURdID4g
MSk7CiAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGlu
c3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CkBAIC00NzYsMTggKzQ2NiwyNyBAQCB2b2lkIGNvbXB1
dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFz
aWNCbG9jayogYmxvYwogICAgICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9u
LCBvcGNvZGVJRCwgdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaSkub2Zmc2V0KCkpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQorICAgIGNhc2Ugb3Bfc2F2ZToKICAgICBjYXNlIG9wX3Jlc3VtZTog
ewotICAgICAgICBSRUxFQVNFX0FTU0VSVChibG9jay0+c3VjY2Vzc29ycygpLnNpemUoKSA9PSAx
KTsKLSAgICAgICAgLy8gRklYTUU6IFRoaXMgaXMgcmVhbGx5IGRpcnR5LgotICAgICAgICAvLyBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU5MjgxCi0gICAgICAgIGJs
b2NrLT5zdWNjZXNzb3JzKClbMF0tPmluKCkuZm9yRWFjaFNldEJpdChbJl0odW5zaWduZWQgbG9j
YWwpIHsKLSAgICAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2Rl
SUQsIHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGxvY2FsKS5vZmZzZXQoKSk7Ci0gICAgICAgIH0p
OworICAgICAgICAvLyBEbyBub3RoaW5nIGluIGxpdmVuZXNzIGFuYWx5c2lzLgogICAgICAgICBy
ZXR1cm47CiAgICAgfQorICAgIGRlZmF1bHQ6CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgICAgIHJldHVybjsKICAgICB9CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1l
IEZ1bmN0b3I+Cit2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBjb25zdCBGdW5jdG9yJiBmdW5jdG9y
KQoreworICAgIEludGVycHJldGVyKiBpbnRlcnByZXRlciA9IGNvZGVCbG9jay0+dm0oKS0+aW50
ZXJwcmV0ZXI7CisgICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luID0gY29kZUJsb2Nr
LT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpOworICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9
ICZpbnN0cnVjdGlvbnNCZWdpbltieXRlY29kZU9mZnNldF07CisgICAgT3Bjb2RlSUQgb3Bjb2Rl
SUQgPSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb24tPnUub3Bjb2RlKTsKKyAg
ICBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9jaywgb3Bjb2RlSUQsIGluc3Ry
dWN0aW9uLCBmdW5jdG9yKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBC
eXRlY29kZVVzZURlZl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2suY3BwCmluZGV4IDEzYjE1MGYxNGJiNTVlYWE5NzZmNzFiNDhlY2RmN2ZlMDE1Nzk1YWEuLjU3
NmQzMWQyNzY0MmI4ZmU2NDMwNTY1ZWQ2MmQwMzllZTVkMjkxMmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC0zMiw2ICszMiw3IEBACiAKICNp
bmNsdWRlICJCYXNpY0Jsb2NrTG9jYXRpb24uaCIKICNpbmNsdWRlICJCeXRlY29kZUdlbmVyYXRv
ci5oIgorI2luY2x1ZGUgIkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5oIgogI2luY2x1ZGUgIkJ5
dGVjb2RlVXNlRGVmLmgiCiAjaW5jbHVkZSAiQ2FsbExpbmtTdGF0dXMuaCIKICNpbmNsdWRlICJE
RkdDYXBhYmlsaXRpZXMuaCIKQEAgLTY5MiwxOCArNjkzLDYgQEAgdm9pZCBDb2RlQmxvY2s6OmR1
bXBCeXRlY29kZShQcmludFN0cmVhbSYgb3V0KQogICAgICAgICB9IHdoaWxlIChpIDwgbV9yYXJl
RGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzLnNpemUoKSk7CiAgICAgfQogCi0gICAgaWYg
KG1fcmFyZURhdGEgJiYgIW1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQuaXNF
bXB0eSgpKSB7Ci0gICAgICAgIG91dC5wcmludGYoIlxuTGl2ZSBDYWxsZWUgTG9jYWxzOlxuIik7
Ci0gICAgICAgIHVuc2lnbmVkIGkgPSAwOwotICAgICAgICBkbyB7Ci0gICAgICAgICAgICBjb25z
dCBGYXN0Qml0VmVjdG9yJiBsaXZlbmVzcyA9IG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fs
c0F0WWllbGRbaV07Ci0gICAgICAgICAgICBvdXQucHJpbnRmKCIgIGxpdmUlMXUgPSAiLCBpKTsK
LSAgICAgICAgICAgIGxpdmVuZXNzLmR1bXAob3V0KTsKLSAgICAgICAgICAgIG91dC5wcmludGYo
IlxuIik7Ci0gICAgICAgICAgICArK2k7Ci0gICAgICAgIH0gd2hpbGUgKGkgPCBtX3JhcmVEYXRh
LT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkLnNpemUoKSk7Ci0gICAgfQotCiAgICAgb3V0LnBy
aW50ZigiXG4iKTsKIH0KIApAQCAtMTY2MiwzMSArMTY1MSw2IEBAIHZvaWQgQ29kZUJsb2NrOjpk
dW1wQnl0ZWNvZGUoCiAgICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgJWQiLCBkZWJ1Z0hvb2tO
YW1lKGRlYnVnSG9va0lEKSwgaGFzQnJlYWtwb2ludEZsYWcpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KLSAgICAgICAgY2FzZSBvcF9zYXZlOiB7Ci0gICAgICAgICAgICBpbnQgZ2Vu
ZXJhdG9yID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICB1bnNpZ25lZCBsaXZlQ2Fs
bGVlTG9jYWxzSW5kZXggPSAoKytpdCktPnUudW5zaWduZWRWYWx1ZTsKLSAgICAgICAgICAgIGlu
dCBvZmZzZXQgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIEZhc3RCaXRWZWN0b3Ig
bGl2ZW5lc3M7Ci0gICAgICAgICAgICBpZiAobGl2ZUNhbGxlZUxvY2Fsc0luZGV4IDwgbV9yYXJl
RGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZC5zaXplKCkpCi0gICAgICAgICAgICAgICAg
bGl2ZW5lc3MgPSBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkW2xpdmVDYWxs
ZWVMb2NhbHNJbmRleF07Ci0gICAgICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBleGVj
LCBsb2NhdGlvbiwgaXQsICJzYXZlIik7Ci0gICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgIiwg
cmVnaXN0ZXJOYW1lKGdlbmVyYXRvcikuZGF0YSgpKTsKLSAgICAgICAgICAgIGxpdmVuZXNzLmR1
bXAob3V0KTsKLSAgICAgICAgICAgIG91dC5wcmludGYoIihAbGl2ZSUxdSksICVkKC0+JWQpIiwg
bGl2ZUNhbGxlZUxvY2Fsc0luZGV4LCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2Ugb3BfcmVzdW1lOiB7Ci0gICAg
ICAgICAgICBpbnQgZ2VuZXJhdG9yID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICB1
bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSAoKytpdCktPnUudW5zaWduZWRWYWx1ZTsK
LSAgICAgICAgICAgIEZhc3RCaXRWZWN0b3IgbGl2ZW5lc3M7Ci0gICAgICAgICAgICBpZiAobGl2
ZUNhbGxlZUxvY2Fsc0luZGV4IDwgbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVs
ZC5zaXplKCkpCi0gICAgICAgICAgICAgICAgbGl2ZW5lc3MgPSBtX3JhcmVEYXRhLT5tX2xpdmVD
YWxsZWVMb2NhbHNBdFlpZWxkW2xpdmVDYWxsZWVMb2NhbHNJbmRleF07Ci0gICAgICAgICAgICBw
cmludExvY2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJyZXN1bWUiKTsKLSAg
ICAgICAgICAgIG91dC5wcmludGYoIiVzLCAiLCByZWdpc3Rlck5hbWUoZ2VuZXJhdG9yKS5kYXRh
KCkpOwotICAgICAgICAgICAgbGl2ZW5lc3MuZHVtcChvdXQpOwotICAgICAgICAgICAgb3V0LnBy
aW50ZigiKEBsaXZlJTF1KSIsIGxpdmVDYWxsZWVMb2NhbHNJbmRleCk7Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2Fzc2VydDogewogICAgICAgICAgICAg
aW50IGNvbmRpdGlvbiA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IGxpbmUg
PSAoKytpdCktPnUub3BlcmFuZDsKQEAgLTE4OTksNyArMTg2Myw2IEBAIHZvaWQgQ29kZUJsb2Nr
OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIENvcHlQYXJzZWRCbG9ja1RhZywgQ29kZUJsb2NrJiBv
dGhlcikKICAgICAgICAgbV9yYXJlRGF0YS0+bV9jb25zdGFudEJ1ZmZlcnMgPSBvdGhlci5tX3Jh
cmVEYXRhLT5tX2NvbnN0YW50QnVmZmVyczsKICAgICAgICAgbV9yYXJlRGF0YS0+bV9zd2l0Y2hK
dW1wVGFibGVzID0gb3RoZXIubV9yYXJlRGF0YS0+bV9zd2l0Y2hKdW1wVGFibGVzOwogICAgICAg
ICBtX3JhcmVEYXRhLT5tX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXMgPSBvdGhlci5tX3JhcmVEYXRh
LT5tX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXM7Ci0gICAgICAgIG1fcmFyZURhdGEtPm1fbGl2ZUNh
bGxlZUxvY2Fsc0F0WWllbGQgPSBvdGhlci5tX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNB
dFlpZWxkOwogICAgIH0KICAgICAKICAgICBoZWFwKCktPm1fY29kZUJsb2Nrcy5hZGQodGhpcyk7
CkBAIC0yMDIxLDcgKzE5ODQsNyBAQCB2b2lkIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0m
IHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGluawogICAgICAgICAg
ICAgICAgIFVubGlua2VkU3RyaW5nSnVtcFRhYmxlOjpTdHJpbmdPZmZzZXRUYWJsZTo6aXRlcmF0
b3IgZW5kID0gdW5saW5rZWRDb2RlQmxvY2stPnN0cmluZ1N3aXRjaEp1bXBUYWJsZShpKS5vZmZz
ZXRUYWJsZS5lbmQoKTsKICAgICAgICAgICAgICAgICBmb3IgKDsgcHRyICE9IGVuZDsgKytwdHIp
IHsKICAgICAgICAgICAgICAgICAgICAgT2Zmc2V0TG9jYXRpb24gb2Zmc2V0OwotICAgICAgICAg
ICAgICAgICAgICBvZmZzZXQuYnJhbmNoT2Zmc2V0ID0gcHRyLT52YWx1ZTsKKyAgICAgICAgICAg
ICAgICAgICAgb2Zmc2V0LmJyYW5jaE9mZnNldCA9IHB0ci0+dmFsdWUuYnJhbmNoT2Zmc2V0Owog
ICAgICAgICAgICAgICAgICAgICBtX3JhcmVEYXRhLT5tX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXNb
aV0ub2Zmc2V0VGFibGUuYWRkKHB0ci0+a2V5LCBvZmZzZXQpOwogICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIH0KQEAgLTIwNjEsMTEgKzIwMjQsMjAgQEAgdm9pZCBDb2RlQmxvY2s6OmZp
bmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBV
bmxpbmsKICAgICAvLyBCb29ra2VlcCB0aGUgc3Ryb25nbHkgcmVmZXJlbmNlZCBtb2R1bGUgZW52
aXJvbm1lbnRzLgogICAgIEhhc2hTZXQ8SlNNb2R1bGVFbnZpcm9ubWVudCo+IHN0cm9uZ2x5UmVm
ZXJlbmNlZE1vZHVsZUVudmlyb25tZW50czsKIAotICAgIC8vIEJvb2trZWVwIHRoZSBtZXJnZSBw
b2ludCBieXRlY29kZSBvZmZzZXRzLgotICAgIFZlY3RvcjxzaXplX3Q+IG1lcmdlUG9pbnRCeXRl
Y29kZU9mZnNldHM7Ci0KICAgICBSZWZDb3VudGVkQXJyYXk8SW5zdHJ1Y3Rpb24+IGluc3RydWN0
aW9ucyhpbnN0cnVjdGlvbkNvdW50KTsKIAorICAgIC8vIFZhbHVlUHJvZmlsZSBhcnJheSBuZWVk
cyB0byBiZSBzb3J0ZWQgYnkgdGhlIGJ5dGVjb2RlIG9mZnNldC4gU2luY2UgdGhlIGdlbmVyYXRv
cmlmaWNhdGlvbiBhZGRzIG5ldyB2YWx1ZSBwcm9maWxlcywKKyAgICAvLyB0aGlzIGludmFyaWFu
dCBpcyBicm9rZW4uIFdlIGFzc2lnbiBhIG5ldyB2YWx1ZSBwcm9maWxlIGluZGV4IGhlcmUgdG8g
bWFrZSB0aGlzIGFzc3VtcHRpb24gdmFsaWQuCisgICAgLy8gSnVzdCBjb3VudGluZyB0aGUgdmFs
dWUgcHJvZmlsZXMgaXMgT0sgdG8gYXNzaWduIGEgbmV3IGluZGV4IHNpbmNlIG9uZSB2YWx1ZSBw
cm9maWxlIGlzIG5vdCBzaGFyZWQgYW1vbmcgbXVsdGlwbGUgb3Bjb2Rlcy4KKyAgICB1bnNpZ25l
ZCB2YWx1ZVByb2ZpbGVDb3VudCA9IDA7CisgICAgYXV0byBsaW5rVmFsdWVQcm9maWxlID0gWyZd
KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCB1bnNpZ25lZCBvcExlbmd0aCkgeworICAgICAgICB1
bnNpZ25lZCB2YWx1ZVByb2ZpbGVJbmRleCA9IHZhbHVlUHJvZmlsZUNvdW50Kys7CisgICAgICAg
IFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9ICZtX3ZhbHVlUHJvZmlsZXNbdmFsdWVQcm9maWxlSW5k
ZXhdOworICAgICAgICBBU1NFUlQocHJvZmlsZS0+bV9ieXRlY29kZU9mZnNldCA9PSAtMSk7Cisg
ICAgICAgIHByb2ZpbGUtPm1fYnl0ZWNvZGVPZmZzZXQgPSBieXRlY29kZU9mZnNldDsKKyAgICAg
ICAgaW5zdHJ1Y3Rpb25zW2J5dGVjb2RlT2Zmc2V0ICsgb3BMZW5ndGggLSAxXSA9IHByb2ZpbGU7
CisgICAgfTsKKwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7ICFpbnN0cnVjdGlvblJlYWRlci5h
dEVuZCgpOyApIHsKICAgICAgICAgY29uc3QgVW5saW5rZWRJbnN0cnVjdGlvbiogcGMgPSBpbnN0
cnVjdGlvblJlYWRlci5uZXh0KCk7CiAKQEAgLTIxMDAsMTAgKzIwNzIsNyBAQCB2b2lkIENvZGVC
bG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1
dGFibGUsIFVubGluawogICAgICAgICBjYXNlIG9wX2dldF9ieV9pZDoKICAgICAgICAgY2FzZSBv
cF9nZXRfZnJvbV9hcmd1bWVudHM6CiAgICAgICAgIGNhc2Ugb3BfdG9fbnVtYmVyOiB7Ci0gICAg
ICAgICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSAmbV92YWx1ZVByb2ZpbGVzW3BjW29wTGVu
Z3RoIC0gMV0udS5vcGVyYW5kXTsKLSAgICAgICAgICAgIEFTU0VSVChwcm9maWxlLT5tX2J5dGVj
b2RlT2Zmc2V0ID09IC0xKTsKLSAgICAgICAgICAgIHByb2ZpbGUtPm1fYnl0ZWNvZGVPZmZzZXQg
PSBpOwotICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zW2kgKyBvcExlbmd0aCAtIDFdID0gcHJvZmls
ZTsKKyAgICAgICAgICAgIGxpbmtWYWx1ZVByb2ZpbGUoaSwgb3BMZW5ndGgpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9wdXRfYnlfdmFsOiB7CkBAIC0y
MTQwLDEwICsyMTA5LDcgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwg
U2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICAgICAgY2FzZSBv
cF9jYWxsOgogICAgICAgICBjYXNlIG9wX3RhaWxfY2FsbDoKICAgICAgICAgY2FzZSBvcF9jYWxs
X2V2YWw6IHsKLSAgICAgICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9ICZtX3ZhbHVlUHJv
ZmlsZXNbcGNbb3BMZW5ndGggLSAxXS51Lm9wZXJhbmRdOwotICAgICAgICAgICAgQVNTRVJUKHBy
b2ZpbGUtPm1fYnl0ZWNvZGVPZmZzZXQgPT0gLTEpOwotICAgICAgICAgICAgcHJvZmlsZS0+bV9i
eXRlY29kZU9mZnNldCA9IGk7Ci0gICAgICAgICAgICBpbnN0cnVjdGlvbnNbaSArIG9wTGVuZ3Ro
IC0gMV0gPSBwcm9maWxlOworICAgICAgICAgICAgbGlua1ZhbHVlUHJvZmlsZShpLCBvcExlbmd0
aCk7CiAgICAgICAgICAgICBpbnQgYXJyYXlQcm9maWxlSW5kZXggPSBwY1tvcExlbmd0aCAtIDJd
LnUub3BlcmFuZDsKICAgICAgICAgICAgIG1fYXJyYXlQcm9maWxlc1thcnJheVByb2ZpbGVJbmRl
eF0gPSBBcnJheVByb2ZpbGUoaSk7CiAgICAgICAgICAgICBpbnN0cnVjdGlvbnNbaSArIG9wTGVu
Z3RoIC0gMl0gPSAmbV9hcnJheVByb2ZpbGVzW2FycmF5UHJvZmlsZUluZGV4XTsKQEAgLTIxNTIs
MTAgKzIxMTgsNyBAQCB2b2lkIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3Jp
cHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGluawogICAgICAgICB9CiAgICAgICAg
IGNhc2Ugb3BfY29uc3RydWN0OiB7CiAgICAgICAgICAgICBpbnN0cnVjdGlvbnNbaSArIDVdID0g
Jm1fbGxpbnRDYWxsTGlua0luZm9zW3BjWzVdLnUub3BlcmFuZF07Ci0gICAgICAgICAgICBWYWx1
ZVByb2ZpbGUqIHByb2ZpbGUgPSAmbV92YWx1ZVByb2ZpbGVzW3BjW29wTGVuZ3RoIC0gMV0udS5v
cGVyYW5kXTsKLSAgICAgICAgICAgIEFTU0VSVChwcm9maWxlLT5tX2J5dGVjb2RlT2Zmc2V0ID09
IC0xKTsKLSAgICAgICAgICAgIHByb2ZpbGUtPm1fYnl0ZWNvZGVPZmZzZXQgPSBpOwotICAgICAg
ICAgICAgaW5zdHJ1Y3Rpb25zW2kgKyBvcExlbmd0aCAtIDFdID0gcHJvZmlsZTsKKyAgICAgICAg
ICAgIGxpbmtWYWx1ZVByb2ZpbGUoaSwgb3BMZW5ndGgpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9nZXRfYXJyYXlfbGVuZ3RoOgpAQCAtMjE4NiwxMCAr
MjE0OSw3IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4
ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAgICAgIH0KIAogICAgICAgICBj
YXNlIG9wX2dldF9mcm9tX3Njb3BlOiB7Ci0gICAgICAgICAgICBWYWx1ZVByb2ZpbGUqIHByb2Zp
bGUgPSAmbV92YWx1ZVByb2ZpbGVzW3BjW29wTGVuZ3RoIC0gMV0udS5vcGVyYW5kXTsKLSAgICAg
ICAgICAgIEFTU0VSVChwcm9maWxlLT5tX2J5dGVjb2RlT2Zmc2V0ID09IC0xKTsKLSAgICAgICAg
ICAgIHByb2ZpbGUtPm1fYnl0ZWNvZGVPZmZzZXQgPSBpOwotICAgICAgICAgICAgaW5zdHJ1Y3Rp
b25zW2kgKyBvcExlbmd0aCAtIDFdID0gcHJvZmlsZTsKKyAgICAgICAgICAgIGxpbmtWYWx1ZVBy
b2ZpbGUoaSwgb3BMZW5ndGgpOwogCiAgICAgICAgICAgICAvLyBnZXRfZnJvbV9zY29wZSBkc3Qs
IHNjb3BlLCBpZCwgR2V0UHV0SW5mbywgU3RydWN0dXJlLCBPcGVyYW5kCiAKQEAgLTIzNDYsMTUg
KzIzMDYsNiBAQCB2b2lkIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRF
eGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGluawogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KIAotICAgICAgICBjYXNlIG9wX3NhdmU6IHsKLSAgICAgICAgICAgIHVuc2lnbmVk
IGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9IHBjWzJdLnUuaW5kZXg7Ci0gICAgICAgICAgICBpbnQg
b2Zmc2V0ID0gcGNbM10udS5vcGVyYW5kOwotICAgICAgICAgICAgaWYgKGxpdmVDYWxsZWVMb2Nh
bHNJbmRleCA+PSBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXRzLnNpemUoKSkKLSAgICAgICAgICAg
ICAgICBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXRzLnJlc2l6ZShsaXZlQ2FsbGVlTG9jYWxzSW5k
ZXggKyAxKTsKLSAgICAgICAgICAgIG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldHNbbGl2ZUNhbGxl
ZUxvY2Fsc0luZGV4XSA9IGkgKyBvZmZzZXQ7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
fQotCiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAt
MjM2NiwyMCArMjMxNyw2IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0s
IFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAKICAgICBtX2luc3Ry
dWN0aW9ucyA9IFdURk1vdmUoaW5zdHJ1Y3Rpb25zKTsKIAotICAgIC8vIFBlcmZvcm0gYnl0ZWNv
ZGUgbGl2ZW5lc3MgYW5hbHlzaXMgdG8gZGV0ZXJtaW5lIHdoaWNoIGxvY2FscyBhcmUgbGl2ZSBh
bmQgc2hvdWxkIGJlIHJlc3VtZWQgd2hlbiBleGVjdXRpbmcgb3BfcmVzdW1lLgotICAgIGlmICh1
bmxpbmtlZENvZGVCbG9jay0+cGFyc2VNb2RlKCkgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0
b3JCb2R5TW9kZSkgewotICAgICAgICBpZiAoc2l6ZV90IGNvdW50ID0gbWVyZ2VQb2ludEJ5dGVj
b2RlT2Zmc2V0cy5zaXplKCkpIHsKLSAgICAgICAgICAgIGNyZWF0ZVJhcmVEYXRhSWZOZWNlc3Nh
cnkoKTsKLSAgICAgICAgICAgIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcyBsaXZlbmVzcyh0aGlz
KTsKLSAgICAgICAgICAgIG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQuZ3Jv
dyhjb3VudCk7Ci0gICAgICAgICAgICBzaXplX3QgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gMDsK
LSAgICAgICAgICAgIGZvciAoc2l6ZV90IGJ5dGVjb2RlT2Zmc2V0IDogbWVyZ2VQb2ludEJ5dGVj
b2RlT2Zmc2V0cykgewotICAgICAgICAgICAgICAgIG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxv
Y2Fsc0F0WWllbGRbbGl2ZUNhbGxlZUxvY2Fsc0luZGV4XSA9IGxpdmVuZXNzLmdldExpdmVuZXNz
SW5mb0F0Qnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpOwotICAgICAgICAgICAgICAgICsr
bGl2ZUNhbGxlZUxvY2Fsc0luZGV4OwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQot
CiAgICAgLy8gU2V0IG9wdGltaXphdGlvbiB0aHJlc2hvbGRzIG9ubHkgYWZ0ZXIgbV9pbnN0cnVj
dGlvbnMgaXMgaW5pdGlhbGl6ZWQsIHNpbmNlIHRoZXNlCiAgICAgLy8gcmVseSBvbiB0aGUgaW5z
dHJ1Y3Rpb24gY291bnQgKGFuZCBhcmUgaW4gdGhlb3J5IHBlcm1pdHRlZCB0byBhbHNvIGluc3Bl
Y3QgdGhlCiAgICAgLy8gaW5zdHJ1Y3Rpb24gc3RyZWFtIHRvIG1vcmUgYWNjdXJhdGUgYXNzZXNz
IHRoZSBjb3N0IG9mIHRpZXItdXApLgpAQCAtMzE3OSwyMSArMzExNiw3IEBAIEhhbmRsZXJJbmZv
KiBDb2RlQmxvY2s6OmhhbmRsZXJGb3JJbmRleCh1bnNpZ25lZCBpbmRleCwgUmVxdWlyZWRIYW5k
bGVyIHJlcXVpcmVkCiB7CiAgICAgaWYgKCFtX3JhcmVEYXRhKQogICAgICAgICByZXR1cm4gMDsK
LSAgICAKLSAgICBWZWN0b3I8SGFuZGxlckluZm8+JiBleGNlcHRpb25IYW5kbGVycyA9IG1fcmFy
ZURhdGEtPm1fZXhjZXB0aW9uSGFuZGxlcnM7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBl
eGNlcHRpb25IYW5kbGVycy5zaXplKCk7ICsraSkgewotICAgICAgICBIYW5kbGVySW5mbyYgaGFu
ZGxlciA9IGV4Y2VwdGlvbkhhbmRsZXJzW2ldOwotICAgICAgICBpZiAoKHJlcXVpcmVkSGFuZGxl
ciA9PSBSZXF1aXJlZEhhbmRsZXI6OkNhdGNoSGFuZGxlcikgJiYgIWhhbmRsZXIuaXNDYXRjaEhh
bmRsZXIoKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIC8vIEhhbmRsZXJzIGFy
ZSBvcmRlcmVkIGlubmVybW9zdCBmaXJzdCwgc28gdGhlIGZpcnN0IGhhbmRsZXIgd2UgZW5jb3Vu
dGVyCi0gICAgICAgIC8vIHRoYXQgY29udGFpbnMgdGhlIHNvdXJjZSBhZGRyZXNzIGlzIHRoZSBj
b3JyZWN0IGhhbmRsZXIgdG8gdXNlLgotICAgICAgICAvLyBUaGlzIGluZGV4IHVzZWQgaXMgZWl0
aGVyIHRoZSBCeXRlY29kZU9mZnNldCBvciBhIENhbGxTaXRlSW5kZXguCi0gICAgICAgIGlmICho
YW5kbGVyLnN0YXJ0IDw9IGluZGV4ICYmIGhhbmRsZXIuZW5kID4gaW5kZXgpCi0gICAgICAgICAg
ICByZXR1cm4gJmhhbmRsZXI7Ci0gICAgfQotCi0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIEhh
bmRsZXJJbmZvOjpoYW5kbGVyRm9ySW5kZXgobV9yYXJlRGF0YS0+bV9leGNlcHRpb25IYW5kbGVy
cywgaW5kZXgsIHJlcXVpcmVkSGFuZGxlcik7CiB9CiAKIENhbGxTaXRlSW5kZXggQ29kZUJsb2Nr
OjpuZXdFeGNlcHRpb25IYW5kbGluZ0NhbGxTaXRlSW5kZXgoQ2FsbFNpdGVJbmRleCBvcmlnaW5h
bENhbGxTaXRlKQpAQCAtMzI4OSw3ICszMjEyLDYgQEAgdm9pZCBDb2RlQmxvY2s6OnNocmlua1Rv
Rml0KFNocmlua01vZGUgc2hyaW5rTW9kZSkKICAgICAgICAgaWYgKG1fcmFyZURhdGEpIHsKICAg
ICAgICAgICAgIG1fcmFyZURhdGEtPm1fc3dpdGNoSnVtcFRhYmxlcy5zaHJpbmtUb0ZpdCgpOwog
ICAgICAgICAgICAgbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzLnNocmlua1Rv
Rml0KCk7Ci0gICAgICAgICAgICBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxk
LnNocmlua1RvRml0KCk7CiAgICAgICAgIH0KICAgICB9IC8vIGVsc2UgZG9uJ3Qgc2hyaW5rIHRo
ZXNlLCBiZWNhdXNlIHdlIHdvdWxkIGhhdmUgYWxyZWFkeSBwb2ludGVkIHBvaW50ZXJzIGludG8g
dGhlc2UgdGFibGVzLgogfQpAQCAtNDU2Nyw0ICs0NDg5LDE2IEBAIHZvaWQgQ29kZUJsb2NrOjpq
aXRTb29uKCkKICAgICBtX2xsaW50RXhlY3V0ZUNvdW50ZXIuc2V0TmV3VGhyZXNob2xkKHRocmVz
aG9sZEZvckpJVChPcHRpb25zOjp0aHJlc2hvbGRGb3JKSVRTb29uKCkpLCB0aGlzKTsKIH0KIAor
Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzJiBDb2RlQmxvY2s6OmxpdmVuZXNzQW5hbHlzaXNTbG93
KCkKK3sKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzPiBhbmFs
eXNpcyA9IHN0ZDo6bWFrZV91bmlxdWU8Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzPih0aGlzKTsK
KyAgICB7CisgICAgICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKG1fbG9jayk7CisgICAg
ICAgIGlmICghbV9saXZlbmVzc0FuYWx5c2lzKQorICAgICAgICAgICAgbV9saXZlbmVzc0FuYWx5
c2lzID0gV1RGTW92ZShhbmFseXNpcyk7CisgICAgICAgIHJldHVybiAqbV9saXZlbmVzc0FuYWx5
c2lzOworICAgIH0KK30KKworCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAppbmRleCBiMjg4MzY1NGJlMzQ1ZTdhYjAxMTBlYzFi
NmY1ZDY5N2ExOGMyN2MyLi4wYjkwYjdlYmQ3Y2I2YTM2YzUxMDhmY2UyYzY5NmY3OWM1NGM1ZTA4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCkBAIC0zMyw3
ICszMyw2IEBACiAjaW5jbHVkZSAiQXJyYXlQcm9maWxlLmgiCiAjaW5jbHVkZSAiQnlWYWxJbmZv
LmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVDb252ZW50aW9ucy5oIgotI2luY2x1ZGUgIkJ5dGVjb2Rl
TGl2ZW5lc3NBbmFseXNpcy5oIgogI2luY2x1ZGUgIkNhbGxMaW5rSW5mby5oIgogI2luY2x1ZGUg
IkNhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0LmgiCiAjaW5jbHVkZSAiQ29kZUJsb2Nr
SGFzaC5oIgpAQCAtNzgsNiArNzcsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorY2xhc3MgQnl0
ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOwogY2xhc3MgRXhlY1N0YXRlOwogY2xhc3MgSlNNb2R1bGVF
bnZpcm9ubWVudDsKIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKQEAgLTIyMCwxMCArMjIw
LDYgQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgICAgIHJldHVybiBp
bmRleCA+PSBtX251bVZhcnM7CiAgICAgfQogCi0gICAgZW51bSBjbGFzcyBSZXF1aXJlZEhhbmRs
ZXIgewotICAgICAgICBDYXRjaEhhbmRsZXIsCi0gICAgICAgIEFueUhhbmRsZXIKLSAgICB9Owog
ICAgIEhhbmRsZXJJbmZvKiBoYW5kbGVyRm9yQnl0ZWNvZGVPZmZzZXQodW5zaWduZWQgYnl0ZWNv
ZGVPZmZzZXQsIFJlcXVpcmVkSGFuZGxlciA9IFJlcXVpcmVkSGFuZGxlcjo6QW55SGFuZGxlcik7
CiAgICAgSGFuZGxlckluZm8qIGhhbmRsZXJGb3JJbmRleCh1bnNpZ25lZCwgUmVxdWlyZWRIYW5k
bGVyID0gUmVxdWlyZWRIYW5kbGVyOjpBbnlIYW5kbGVyKTsKICAgICB2b2lkIHJlbW92ZUV4Y2Vw
dGlvbkhhbmRsZXJGb3JDYWxsU2l0ZShDYWxsU2l0ZUluZGV4KTsKQEAgLTI5NSw2ICsyOTEsOCBA
QCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PEluc3RydWN0aW9uKj4ocmV0dXJuQWRkcmVzcykgLSBpbnN0cnVjdGlvbnMoKS5iZWdp
bigpOwogICAgIH0KIAorICAgIHR5cGVkZWYgUmVmQ291bnRlZEFycmF5PEluc3RydWN0aW9uPiYg
VW5wYWNrZWRJbnN0cnVjdGlvbnM7CisKICAgICB1bnNpZ25lZCBudW1iZXJPZkluc3RydWN0aW9u
cygpIGNvbnN0IHsgcmV0dXJuIG1faW5zdHJ1Y3Rpb25zLnNpemUoKTsgfQogICAgIFJlZkNvdW50
ZWRBcnJheTxJbnN0cnVjdGlvbj4mIGluc3RydWN0aW9ucygpIHsgcmV0dXJuIG1faW5zdHJ1Y3Rp
b25zOyB9CiAgICAgY29uc3QgUmVmQ291bnRlZEFycmF5PEluc3RydWN0aW9uPiYgaW5zdHJ1Y3Rp
b25zKCkgY29uc3QgeyByZXR1cm4gbV9pbnN0cnVjdGlvbnM7IH0KQEAgLTU0Miw3ICs1NDAsNyBA
QCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICB9CiAKICAgICBXcml0ZUJh
cnJpZXI8VW5rbm93bj4mIGNvbnN0YW50UmVnaXN0ZXIoaW50IGluZGV4KSB7IHJldHVybiBtX2Nv
bnN0YW50UmVnaXN0ZXJzW2luZGV4IC0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXhdOyB9Ci0g
ICAgQUxXQVlTX0lOTElORSBib29sIGlzQ29uc3RhbnRSZWdpc3RlckluZGV4KGludCBpbmRleCkg
Y29uc3QgeyByZXR1cm4gaW5kZXggPj0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXg7IH0KKyAg
ICBzdGF0aWMgQUxXQVlTX0lOTElORSBib29sIGlzQ29uc3RhbnRSZWdpc3RlckluZGV4KGludCBp
bmRleCkgeyByZXR1cm4gaW5kZXggPj0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXg7IH0KICAg
ICBBTFdBWVNfSU5MSU5FIEpTVmFsdWUgZ2V0Q29uc3RhbnQoaW50IGluZGV4KSBjb25zdCB7IHJl
dHVybiBtX2NvbnN0YW50UmVnaXN0ZXJzW2luZGV4IC0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5k
ZXhdLmdldCgpOyB9CiAgICAgQUxXQVlTX0lOTElORSBTb3VyY2VDb2RlUmVwcmVzZW50YXRpb24g
Y29uc3RhbnRTb3VyY2VDb2RlUmVwcmVzZW50YXRpb24oaW50IGluZGV4KSBjb25zdCB7IHJldHVy
biBtX2NvbnN0YW50c1NvdXJjZUNvZGVSZXByZXNlbnRhdGlvbltpbmRleCAtIEZpcnN0Q29uc3Rh
bnRSZWdpc3RlckluZGV4XTsgfQogCkBAIC01ODgsMTQgKzU4Niw3IEBAIGNsYXNzIENvZGVCbG9j
ayA6IHB1YmxpYyBKU0NlbGwgewogICAgICAgICAgICAgaWYgKCEhbV9saXZlbmVzc0FuYWx5c2lz
KQogICAgICAgICAgICAgICAgIHJldHVybiAqbV9saXZlbmVzc0FuYWx5c2lzOwogICAgICAgICB9
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM+IGFuYWx5
c2lzID0KLSAgICAgICAgICAgIHN0ZDo6bWFrZV91bmlxdWU8Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5
c2lzPih0aGlzKTsKLSAgICAgICAgewotICAgICAgICAgICAgQ29uY3VycmVudEpJVExvY2tlciBs
b2NrZXIobV9sb2NrKTsKLSAgICAgICAgICAgIGlmICghbV9saXZlbmVzc0FuYWx5c2lzKQotICAg
ICAgICAgICAgICAgIG1fbGl2ZW5lc3NBbmFseXNpcyA9IFdURk1vdmUoYW5hbHlzaXMpOwotICAg
ICAgICAgICAgcmV0dXJuICptX2xpdmVuZXNzQW5hbHlzaXM7Ci0gICAgICAgIH0KKyAgICAgICAg
cmV0dXJuIGxpdmVuZXNzQW5hbHlzaXNTbG93KCk7CiAgICAgfQogICAgIAogICAgIHZvaWQgdmFs
aWRhdGUoKTsKQEAgLTYxNiwxOCArNjA3LDYgQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpT
Q2VsbCB7CiAgICAgU3RyaW5nSnVtcFRhYmxlJiBhZGRTdHJpbmdTd2l0Y2hKdW1wVGFibGUoKSB7
IGNyZWF0ZVJhcmVEYXRhSWZOZWNlc3NhcnkoKTsgbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hK
dW1wVGFibGVzLmFwcGVuZChTdHJpbmdKdW1wVGFibGUoKSk7IHJldHVybiBtX3JhcmVEYXRhLT5t
X3N0cmluZ1N3aXRjaEp1bXBUYWJsZXMubGFzdCgpOyB9CiAgICAgU3RyaW5nSnVtcFRhYmxlJiBz
dHJpbmdTd2l0Y2hKdW1wVGFibGUoaW50IHRhYmxlSW5kZXgpIHsgUkVMRUFTRV9BU1NFUlQobV9y
YXJlRGF0YSk7IHJldHVybiBtX3JhcmVEYXRhLT5tX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXNbdGFi
bGVJbmRleF07IH0KIAotICAgIC8vIExpdmUgY2FsbGVlIHJlZ2lzdGVycyBhdCB5aWVsZCBwb2lu
dHMuCi0gICAgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQodW5z
aWduZWQgaW5kZXgpIGNvbnN0Ci0gICAgewotICAgICAgICBSRUxFQVNFX0FTU0VSVChtX3JhcmVE
YXRhKTsKLSAgICAgICAgcmV0dXJuIG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWll
bGRbaW5kZXhdOwotICAgIH0KLSAgICBGYXN0Qml0VmVjdG9yJiBsaXZlQ2FsbGVlTG9jYWxzQXRZ
aWVsZCh1bnNpZ25lZCBpbmRleCkKLSAgICB7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fcmFy
ZURhdGEpOwotICAgICAgICByZXR1cm4gbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZ
aWVsZFtpbmRleF07Ci0gICAgfQotCiAgICAgRXZhbENvZGVDYWNoZSYgZXZhbENvZGVDYWNoZSgp
IHsgY3JlYXRlUmFyZURhdGFJZk5lY2Vzc2FyeSgpOyByZXR1cm4gbV9yYXJlRGF0YS0+bV9ldmFs
Q29kZUNhY2hlOyB9CiAKICAgICBlbnVtIFNocmlua01vZGUgewpAQCAtODgyLDggKzg2MSw2IEBA
IGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgICAgICBWZWN0b3I8U2ltcGxl
SnVtcFRhYmxlPiBtX3N3aXRjaEp1bXBUYWJsZXM7CiAgICAgICAgIFZlY3RvcjxTdHJpbmdKdW1w
VGFibGU+IG1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlczsKIAotICAgICAgICBWZWN0b3I8RmFzdEJp
dFZlY3Rvcj4gbV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZDsKLQogICAgICAgICBFdmFsQ29kZUNh
Y2hlIG1fZXZhbENvZGVDYWNoZTsKICAgICB9OwogCkBAIC05MTgsNiArODk1LDggQEAgY2xhc3Mg
Q29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNz
IENvZGVCbG9ja1NldDsKKworICAgIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcyYgbGl2ZW5lc3NB
bmFseXNpc1Nsb3coKTsKICAgICAKICAgICBDb2RlQmxvY2sqIHNwZWNpYWxPU1JFbnRyeUJsb2Nr
T3JOdWxsKCk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvSGFuZGxlckluZm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9IYW5kbGVy
SW5mby5oCmluZGV4IGFjZGRhMDhlZDE0Y2JmOWYwOTcxMjc1MDQwNWE0MTc0MWY3NmEyMTMuLmJi
NjkyYjlkYzE3MGIwOWY0M2NlODY3Zjk0MWY3NTM1YWNmZWNmNjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9IYW5kbGVySW5mby5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9IYW5kbGVySW5mby5oCkBAIC0zNyw2ICszNywxMSBAQCBlbnVt
IGNsYXNzIEhhbmRsZXJUeXBlIHsKICAgICBTeW50aGVzaXplZEZpbmFsbHkgPSAzCiB9OwogCitl
bnVtIGNsYXNzIFJlcXVpcmVkSGFuZGxlciB7CisgICAgQ2F0Y2hIYW5kbGVyLAorICAgIEFueUhh
bmRsZXIKK307CisKIHN0cnVjdCBIYW5kbGVySW5mb0Jhc2UgewogICAgIEhhbmRsZXJUeXBlIHR5
cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxIYW5kbGVyVHlwZT4odHlwZUJpdHMpOyB9
CiAgICAgdm9pZCBzZXRUeXBlKEhhbmRsZXJUeXBlIHR5cGUpIHsgdHlwZUJpdHMgPSBzdGF0aWNf
Y2FzdDx1aW50MzJfdD4odHlwZSk7IH0KQEAgLTU4LDYgKzYzLDIzIEBAIHN0cnVjdCBIYW5kbGVy
SW5mb0Jhc2UgewogCiAgICAgYm9vbCBpc0NhdGNoSGFuZGxlcigpIGNvbnN0IHsgcmV0dXJuIHR5
cGUoKSA9PSBIYW5kbGVyVHlwZTo6Q2F0Y2g7IH0KIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhh
bmRsZXI+CisgICAgc3RhdGljIEhhbmRsZXIqIGhhbmRsZXJGb3JJbmRleChWZWN0b3I8SGFuZGxl
cj4mIGV4ZXB0aW9uSGFuZGxlcnMsIHVuc2lnbmVkIGluZGV4LCBSZXF1aXJlZEhhbmRsZXIgcmVx
dWlyZWRIYW5kbGVyKQorICAgIHsKKyAgICAgICAgZm9yIChIYW5kbGVyJiBoYW5kbGVyIDogZXhl
cHRpb25IYW5kbGVycykgeworICAgICAgICAgICAgaWYgKChyZXF1aXJlZEhhbmRsZXIgPT0gUmVx
dWlyZWRIYW5kbGVyOjpDYXRjaEhhbmRsZXIpICYmICFoYW5kbGVyLmlzQ2F0Y2hIYW5kbGVyKCkp
CisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIC8vIEhhbmRsZXJzIGFy
ZSBvcmRlcmVkIGlubmVybW9zdCBmaXJzdCwgc28gdGhlIGZpcnN0IGhhbmRsZXIgd2UgZW5jb3Vu
dGVyCisgICAgICAgICAgICAvLyB0aGF0IGNvbnRhaW5zIHRoZSBzb3VyY2UgYWRkcmVzcyBpcyB0
aGUgY29ycmVjdCBoYW5kbGVyIHRvIHVzZS4KKyAgICAgICAgICAgIC8vIFRoaXMgaW5kZXggdXNl
ZCBpcyBlaXRoZXIgdGhlIEJ5dGVjb2RlT2Zmc2V0IG9yIGEgQ2FsbFNpdGVJbmRleC4KKyAgICAg
ICAgICAgIGlmIChoYW5kbGVyLnN0YXJ0IDw9IGluZGV4ICYmIGhhbmRsZXIuZW5kID4gaW5kZXgp
CisgICAgICAgICAgICAgICAgcmV0dXJuICZoYW5kbGVyOworICAgICAgICB9CisKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgfQorCiAgICAgdWludDMyX3Qgc3RhcnQ7CiAgICAgdWludDMy
X3QgZW5kOwogICAgIHVpbnQzMl90IHRhcmdldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHMuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5jcHAKaW5kZXggZTJjYjAwMDQ4Mzc5
NGJhOTJkNTEwZGNmNWZhOTk0ODg1YTIzZGMzZC4uY2FiOWZiZGM0ZTgzOWZiYjg5YTY5MzM1NjIy
MmRiMDBlMTAyMjNjYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1ByZWNpc2VKdW1wVGFyZ2V0cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5jcHAKQEAgLTI2LDE0ICsyNiwxNSBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIlByZWNpc2VKdW1wVGFyZ2V0cy5oIgogCisjaW5jbHVkZSAi
SW50ZXJwcmV0ZXJJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogCiBuYW1lc3Bh
Y2UgSlNDIHsKIAotdGVtcGxhdGUgPHNpemVfdCB2ZWN0b3JTaXplPgotc3RhdGljIHZvaWQgZ2V0
SnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgSW50ZXJw
cmV0ZXIqIGludGVycHJldGVyLCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2ln
bmVkIGJ5dGVjb2RlT2Zmc2V0LCBWZWN0b3I8dW5zaWduZWQsIHZlY3RvclNpemU+JiBvdXQpCit0
ZW1wbGF0ZSA8c2l6ZV90IHZlY3RvclNpemUsIHR5cGVuYW1lIEJsb2NrLCB0eXBlbmFtZSBJbnN0
cnVjdGlvbj4KK3N0YXRpYyB2b2lkIGdldEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoQmxv
Y2sqIGNvZGVCbG9jaywgSW50ZXJwcmV0ZXIqIGludGVycHJldGVyLCBJbnN0cnVjdGlvbiogaW5z
dHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBWZWN0b3I8dW5zaWduZWQs
IHZlY3RvclNpemU+JiBvdXQpCiB7Ci0gICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnRlcnByZXRl
ci0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25zQmVnaW5bYnl0ZWNvZGVPZmZzZXRdLnUub3Bjb2Rl
KTsKKyAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGludGVycHJldGVyLT5nZXRPcGNvZGVJRChpbnN0
cnVjdGlvbnNCZWdpbltieXRlY29kZU9mZnNldF0pOwogICAgIEluc3RydWN0aW9uKiBjdXJyZW50
ID0gaW5zdHJ1Y3Rpb25zQmVnaW4gKyBieXRlY29kZU9mZnNldDsKICAgICBzd2l0Y2ggKG9wY29k
ZUlEKSB7CiAgICAgY2FzZSBvcF9qbXA6CkBAIC01NCwyMSArNTUsMjUgQEAgc3RhdGljIHZvaWQg
Z2V0SnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgSW50
ZXJwcmV0ZXIqIGkKICAgICBjYXNlIG9wX2pubGVzc2VxOgogICAgIGNhc2Ugb3Bfam5ncmVhdGVy
OgogICAgIGNhc2Ugb3Bfam5ncmVhdGVyZXE6Ci0gICAgY2FzZSBvcF9zYXZlOiAvLyBUaGUganVt
cCBvZiBvcF9zYXZlIGlzIHB1cmVseSBmb3IgY2FsY3VsYXRpbmcgbGl2ZW5lc3MuCiAgICAgICAg
IG91dC5hcHBlbmQoYnl0ZWNvZGVPZmZzZXQgKyBjdXJyZW50WzNdLnUub3BlcmFuZCk7CiAgICAg
ICAgIGJyZWFrOworICAgIGNhc2Ugb3Bfc2F2ZTogeworICAgICAgICAvLyBUaGUganVtcCBvZiBv
cF9zYXZlIHVuZGVyIEV4dHJhY3RHZW5lcmF0b3JMaXZlQ2FsbGVlTG9jYWxzIG1vZGUgaXMgcHVy
ZWx5IGZvciBjYWxjdWxhdGluZyBsaXZlbmVzcy4KKyAgICAgICAgb3V0LmFwcGVuZChieXRlY29k
ZU9mZnNldCArIGN1cnJlbnRbM10udS5vcGVyYW5kKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQog
ICAgIGNhc2Ugb3Bfc3dpdGNoX2ltbToKICAgICBjYXNlIG9wX3N3aXRjaF9jaGFyOiB7Ci0gICAg
ICAgIFNpbXBsZUp1bXBUYWJsZSYgdGFibGUgPSBjb2RlQmxvY2stPnN3aXRjaEp1bXBUYWJsZShj
dXJyZW50WzFdLnUub3BlcmFuZCk7CisgICAgICAgIGF1dG8mIHRhYmxlID0gY29kZUJsb2NrLT5z
d2l0Y2hKdW1wVGFibGUoY3VycmVudFsxXS51Lm9wZXJhbmQpOwogICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSB0YWJsZS5icmFuY2hPZmZzZXRzLnNpemUoKTsgaS0tOykKICAgICAgICAgICAgIG91
dC5hcHBlbmQoYnl0ZWNvZGVPZmZzZXQgKyB0YWJsZS5icmFuY2hPZmZzZXRzW2ldKTsKICAgICAg
ICAgb3V0LmFwcGVuZChieXRlY29kZU9mZnNldCArIGN1cnJlbnRbMl0udS5vcGVyYW5kKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2Ugb3Bfc3dpdGNoX3N0cmluZzogewotICAgICAg
ICBTdHJpbmdKdW1wVGFibGUmIHRhYmxlID0gY29kZUJsb2NrLT5zdHJpbmdTd2l0Y2hKdW1wVGFi
bGUoY3VycmVudFsxXS51Lm9wZXJhbmQpOwotICAgICAgICBTdHJpbmdKdW1wVGFibGU6OlN0cmlu
Z09mZnNldFRhYmxlOjppdGVyYXRvciBpdGVyID0gdGFibGUub2Zmc2V0VGFibGUuYmVnaW4oKTsK
LSAgICAgICAgU3RyaW5nSnVtcFRhYmxlOjpTdHJpbmdPZmZzZXRUYWJsZTo6aXRlcmF0b3IgZW5k
ID0gdGFibGUub2Zmc2V0VGFibGUuZW5kKCk7CisgICAgICAgIGF1dG8mIHRhYmxlID0gY29kZUJs
b2NrLT5zdHJpbmdTd2l0Y2hKdW1wVGFibGUoY3VycmVudFsxXS51Lm9wZXJhbmQpOworICAgICAg
ICBhdXRvIGl0ZXIgPSB0YWJsZS5vZmZzZXRUYWJsZS5iZWdpbigpOworICAgICAgICBhdXRvIGVu
ZCA9IHRhYmxlLm9mZnNldFRhYmxlLmVuZCgpOwogICAgICAgICBmb3IgKDsgaXRlciAhPSBlbmQ7
ICsraXRlcikKICAgICAgICAgICAgIG91dC5hcHBlbmQoYnl0ZWNvZGVPZmZzZXQgKyBpdGVyLT52
YWx1ZS5icmFuY2hPZmZzZXQpOwogICAgICAgICBvdXQuYXBwZW5kKGJ5dGVjb2RlT2Zmc2V0ICsg
Y3VycmVudFsyXS51Lm9wZXJhbmQpOwpAQCAtODIsMTMgKzg3LDE5IEBAIHN0YXRpYyB2b2lkIGdl
dEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEludGVy
cHJldGVyKiBpCiAgICAgfQogfQogCi12b2lkIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMoQ29k
ZUJsb2NrKiBjb2RlQmxvY2ssIFZlY3Rvcjx1bnNpZ25lZCwgMzI+JiBvdXQpCitlbnVtIGNsYXNz
IENvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHNNb2RlIHsKKyAgICBGb2xsb3dDb2RlQmxvY2tDbGFp
bSwKKyAgICBGb3JjZUNvbXB1dGUsCit9OworCit0ZW1wbGF0ZTxDb21wdXRlUHJlY2lzZUp1bXBU
YXJnZXRzTW9kZSBNb2RlLCB0eXBlbmFtZSBCbG9jaywgdHlwZW5hbWUgSW5zdHJ1Y3Rpb24sIHNp
emVfdCB2ZWN0b3JTaXplPgordm9pZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzSW50ZXJuYWwo
QmxvY2sqIGNvZGVCbG9jaywgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25l
ZCBpbnN0cnVjdGlvbkNvdW50LCBWZWN0b3I8dW5zaWduZWQsIHZlY3RvclNpemU+JiBvdXQpCiB7
CiAgICAgQVNTRVJUKG91dC5pc0VtcHR5KCkpOwogICAgIAogICAgIC8vIFdlIHdpbGwgZGVyaXZl
IGEgc3VwZXJzZXQgb2YgdGhlIGp1bXAgdGFyZ2V0cyB0aGF0IHRoZSBjb2RlIGJsb2NrIHRoaW5r
cyBpdCBoYXMuCiAgICAgLy8gU28sIGlmIHRoZSBjb2RlIGJsb2NrIGNsYWltcyB0aGVyZSBhcmUg
bm9uZSwgdGhlbiB3ZSBhcmUgZG9uZS4KLSAgICBpZiAoIWNvZGVCbG9jay0+bnVtYmVyT2ZKdW1w
VGFyZ2V0cygpKQorICAgIGlmIChNb2RlID09IENvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHNNb2Rl
OjpGb2xsb3dDb2RlQmxvY2tDbGFpbSAmJiAhY29kZUJsb2NrLT5udW1iZXJPZkp1bXBUYXJnZXRz
KCkpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSBjb2RlQmxv
Y2stPm51bWJlck9mRXhjZXB0aW9uSGFuZGxlcnMoKTsgaS0tOykgewpAQCAtOTgsMTAgKzEwOSw4
IEBAIHZvaWQgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhDb2RlQmxvY2sqIGNvZGVCbG9jaywg
VmVjdG9yPHVuc2lnbmVkLCAzMj4mIG91dCkKICAgICB9CiAKICAgICBJbnRlcnByZXRlciogaW50
ZXJwcmV0ZXIgPSBjb2RlQmxvY2stPnZtKCktPmludGVycHJldGVyOwotICAgIEluc3RydWN0aW9u
KiBpbnN0cnVjdGlvbnNCZWdpbiA9IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsK
LSAgICB1bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50ID0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMo
KS5zaXplKCk7CiAgICAgZm9yICh1bnNpZ25lZCBieXRlY29kZU9mZnNldCA9IDA7IGJ5dGVjb2Rl
T2Zmc2V0IDwgaW5zdHJ1Y3Rpb25Db3VudDspIHsKLSAgICAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQg
PSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25zQmVnaW5bYnl0ZWNvZGVPZmZz
ZXRdLnUub3Bjb2RlKTsKKyAgICAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnRlcnByZXRlci0+
Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25zQmVnaW5bYnl0ZWNvZGVPZmZzZXRdKTsKICAgICAgICAg
Z2V0SnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChjb2RlQmxvY2ssIGludGVycHJldGVyLCBp
bnN0cnVjdGlvbnNCZWdpbiwgYnl0ZWNvZGVPZmZzZXQsIG91dCk7CiAgICAgICAgIGJ5dGVjb2Rl
T2Zmc2V0ICs9IG9wY29kZUxlbmd0aHNbb3Bjb2RlSURdOwogICAgIH0KQEAgLTEyMywxMSArMTMy
LDM0IEBAIHZvaWQgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhDb2RlQmxvY2sqIGNvZGVCbG9j
aywgVmVjdG9yPHVuc2lnbmVkLCAzMj4mIG91dCkKICAgICBvdXQuc2hyaW5rVG9GaXQoKTsKIH0K
IAotdm9pZCBmaW5kSnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVC
bG9jaywgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIFZlY3Rvcjx1bnNpZ25lZCwgMT4mIG91dCkK
K3ZvaWQgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgVmVj
dG9yPHVuc2lnbmVkLCAzMj4mIG91dCkKIHsKLSAgICBJbnRlcnByZXRlciogaW50ZXJwcmV0ZXIg
PSBjb2RlQmxvY2stPnZtKCktPmludGVycHJldGVyOwotICAgIEluc3RydWN0aW9uKiBpbnN0cnVj
dGlvbnNCZWdpbiA9IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsKLSAgICBnZXRK
dW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9jaywgaW50ZXJwcmV0ZXIsIGluc3Ry
dWN0aW9uc0JlZ2luLCBieXRlY29kZU9mZnNldCwgb3V0KTsKKyAgICBjb21wdXRlUHJlY2lzZUp1
bXBUYXJnZXRzSW50ZXJuYWw8Q29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0c01vZGU6OkZvbGxvd0Nv
ZGVCbG9ja0NsYWltPihjb2RlQmxvY2ssIGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4o
KSwgY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5zaXplKCksIG91dCk7Cit9CisKK3ZvaWQgY29t
cHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgSW5zdHJ1Y3Rpb24q
IGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50LCBWZWN0b3I8dW5z
aWduZWQsIDMyPiYgb3V0KQoreworICAgIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHNJbnRlcm5h
bDxDb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzTW9kZTo6Rm9sbG93Q29kZUJsb2NrQ2xhaW0+KGNv
ZGVCbG9jaywgaW5zdHJ1Y3Rpb25zQmVnaW4sIGluc3RydWN0aW9uQ291bnQsIG91dCk7Cit9CisK
K3ZvaWQgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhVbmxpbmtlZENvZGVCbG9jayogY29kZUJs
b2NrLCBVbmxpbmtlZEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgaW5z
dHJ1Y3Rpb25Db3VudCwgVmVjdG9yPHVuc2lnbmVkLCAzMj4mIG91dCkKK3sKKyAgICBjb21wdXRl
UHJlY2lzZUp1bXBUYXJnZXRzSW50ZXJuYWw8Q29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0c01vZGU6
OkZvbGxvd0NvZGVCbG9ja0NsYWltPihjb2RlQmxvY2ssIGluc3RydWN0aW9uc0JlZ2luLCBpbnN0
cnVjdGlvbkNvdW50LCBvdXQpOworfQorCit2b2lkIHJlY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0
cyhVbmxpbmtlZENvZGVCbG9jayogY29kZUJsb2NrLCBVbmxpbmtlZEluc3RydWN0aW9uKiBpbnN0
cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCwgVmVjdG9yPHVuc2lnbmVk
PiYgb3V0KQoreworICAgIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHNJbnRlcm5hbDxDb21wdXRl
UHJlY2lzZUp1bXBUYXJnZXRzTW9kZTo6Rm9yY2VDb21wdXRlPihjb2RlQmxvY2ssIGluc3RydWN0
aW9uc0JlZ2luLCBpbnN0cnVjdGlvbkNvdW50LCBvdXQpOworfQorCit2b2lkIGZpbmRKdW1wVGFy
Z2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBJbnN0cnVjdGlvbiog
aW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBWZWN0b3I8dW5zaWdu
ZWQsIDE+JiBvdXQpCit7CisgICAgZ2V0SnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChjb2Rl
QmxvY2ssIGNvZGVCbG9jay0+dm0oKS0+aW50ZXJwcmV0ZXIsIGluc3RydWN0aW9uc0JlZ2luLCBi
eXRlY29kZU9mZnNldCwgb3V0KTsKK30KKwordm9pZCBmaW5kSnVtcFRhcmdldHNGb3JCeXRlY29k
ZU9mZnNldChVbmxpbmtlZENvZGVCbG9jayogY29kZUJsb2NrLCBVbmxpbmtlZEluc3RydWN0aW9u
KiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIFZlY3Rvcjx1bnNp
Z25lZCwgMT4mIG91dCkKK3sKKyAgICBnZXRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KGNv
ZGVCbG9jaywgY29kZUJsb2NrLT52bSgpLT5pbnRlcnByZXRlciwgaW5zdHJ1Y3Rpb25zQmVnaW4s
IGJ5dGVjb2RlT2Zmc2V0LCBvdXQpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHMuaAppbmRl
eCA4NTI0MTNkNzdiNzk4OTg0YjI3Y2VmMGVkNjJiYzk0YzY4OWUyMTJjLi5kYjliZDM4M2I4YWM0
NTU3ZDMyNjcxN2I3MmQ0YjBmNTBiMWQxODM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5oCkBAIC0zMCwxMCArMzAsMTggQEAK
IAogbmFtZXNwYWNlIEpTQyB7CiAKK2NsYXNzIFVubGlua2VkQ29kZUJsb2NrOworc3RydWN0IFVu
bGlua2VkSW5zdHJ1Y3Rpb247CisKIC8vIFJldHVybiBhIHNvcnRlZCBsaXN0IG9mIGJ5dGVjb2Rl
IGluZGV4IHRoYXQgYXJlIHRoZSBkZXN0aW5hdGlvbiBvZiBhIGp1bXAuCiB2b2lkIGNvbXB1dGVQ
cmVjaXNlSnVtcFRhcmdldHMoQ29kZUJsb2NrKiwgVmVjdG9yPHVuc2lnbmVkLCAzMj4mIG91dCk7
Cit2b2lkIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMoQ29kZUJsb2NrKiwgSW5zdHJ1Y3Rpb24q
IGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50LCBWZWN0b3I8dW5z
aWduZWQsIDMyPiYgb3V0KTsKK3ZvaWQgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhVbmxpbmtl
ZENvZGVCbG9jayosIFVubGlua2VkSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1bnNp
Z25lZCBpbnN0cnVjdGlvbkNvdW50LCBWZWN0b3I8dW5zaWduZWQsIDMyPiYgb3V0KTsKKwordm9p
ZCByZWNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMoVW5saW5rZWRDb2RlQmxvY2sqLCBVbmxpbmtl
ZEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3Vu
dCwgVmVjdG9yPHVuc2lnbmVkPiYgb3V0KTsKIAotdm9pZCBmaW5kSnVtcFRhcmdldHNGb3JCeXRl
Y29kZU9mZnNldChDb2RlQmxvY2sqLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgVmVjdG9yPHVu
c2lnbmVkLCAxPiYgb3V0KTsKK3ZvaWQgZmluZEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQo
Q29kZUJsb2NrKiwgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBieXRl
Y29kZU9mZnNldCwgVmVjdG9yPHVuc2lnbmVkLCAxPiYgb3V0KTsKK3ZvaWQgZmluZEp1bXBUYXJn
ZXRzRm9yQnl0ZWNvZGVPZmZzZXQoVW5saW5rZWRDb2RlQmxvY2sqLCBVbmxpbmtlZEluc3RydWN0
aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIFZlY3Rvcjx1
bnNpZ25lZCwgMT4mIG91dCk7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcAppbmRleCAy
OTlhYzY4MGQ5YTFkMWU1YTkwZDlmYWUxYTIyZjg0NGUyOTJlM2UyLi43ZmU0YThkNzg1NDJlZDgy
MmM4ZDg2ZTlkODNiMTA1ODJhODQ1NzhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKICNp
bmNsdWRlICJVbmxpbmtlZENvZGVCbG9jay5oIgogCiAjaW5jbHVkZSAiQnl0ZWNvZGVHZW5lcmF0
b3IuaCIKKyNpbmNsdWRlICJCeXRlY29kZUluc2VydGlvblNldC5oIgogI2luY2x1ZGUgIkNsYXNz
SW5mby5oIgogI2luY2x1ZGUgIkNvZGVDYWNoZS5oIgogI2luY2x1ZGUgIkV4ZWN1dGFibGUuaCIK
QEAgLTM2LDYgKzM3LDcgQEAKICNpbmNsdWRlICJKU1N0cmluZy5oIgogI2luY2x1ZGUgIkpTQ0lu
bGluZXMuaCIKICNpbmNsdWRlICJQYXJzZXIuaCIKKyNpbmNsdWRlICJQcmVjaXNlSnVtcFRhcmdl
dHMuaCIKICNpbmNsdWRlICJTb3VyY2VQcm92aWRlci5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZS5o
IgogI2luY2x1ZGUgIlN5bWJvbFRhYmxlLmgiCkBAIC0zNjYsNSArMzY4LDExMSBAQCBjb25zdCBV
bmxpbmtlZEluc3RydWN0aW9uU3RyZWFtJiBVbmxpbmtlZENvZGVCbG9jazo6aW5zdHJ1Y3Rpb25z
KCkgY29uc3QKICAgICByZXR1cm4gKm1fdW5saW5rZWRJbnN0cnVjdGlvbnM7CiB9CiAKK1VubGlu
a2VkSGFuZGxlckluZm8qIFVubGlua2VkQ29kZUJsb2NrOjpoYW5kbGVyRm9yQnl0ZWNvZGVPZmZz
ZXQodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIFJlcXVpcmVkSGFuZGxlciByZXF1aXJlZEhhbmRs
ZXIpCit7CisgICAgcmV0dXJuIGhhbmRsZXJGb3JJbmRleChieXRlY29kZU9mZnNldCwgcmVxdWly
ZWRIYW5kbGVyKTsKK30KKworVW5saW5rZWRIYW5kbGVySW5mbyogVW5saW5rZWRDb2RlQmxvY2s6
OmhhbmRsZXJGb3JJbmRleCh1bnNpZ25lZCBpbmRleCwgUmVxdWlyZWRIYW5kbGVyIHJlcXVpcmVk
SGFuZGxlcikKK3sKKyAgICBpZiAoIW1fcmFyZURhdGEpCisgICAgICAgIHJldHVybiBudWxscHRy
OworICAgIHJldHVybiBVbmxpbmtlZEhhbmRsZXJJbmZvOjpoYW5kbGVyRm9ySW5kZXgobV9yYXJl
RGF0YS0+bV9leGNlcHRpb25IYW5kbGVycywgaW5kZXgsIHJlcXVpcmVkSGFuZGxlcik7Cit9CisK
K3ZvaWQgVW5saW5rZWRDb2RlQmxvY2s6OmFwcGx5TW9kaWZpY2F0aW9uKEJ5dGVjb2RlSW5zZXJ0
aW9uU2V0JiBpbnNlcnRpb25TZXQpCit7CisgICAgLy8gQmVmb3JlIGFwcGx5aW5nIHRoZSBjaGFu
Z2VzLCB3ZSBhZGp1c3QgdGhlIGp1bXBzIGJhc2VkIG9uIHRoZSBvcmlnaW5hbCBieXRlY29kZSBv
ZmZzZXQsIHRoZSBvZmZzZXQgdG8gdGhlIGp1bXAgdGFyZ2V0LCBhbmQKKyAgICAvLyB0aGUgaW5z
ZXJ0aW9uIGluZm9ybWF0aW9uLgorCisgICAgQnl0ZWNvZGVHcmFwaDxVbmxpbmtlZENvZGVCbG9j
az4mIGdyYXBoID0gaW5zZXJ0aW9uU2V0LmdyYXBoKCk7CisgICAgVW5saW5rZWRJbnN0cnVjdGlv
biogaW5zdHJ1Y3Rpb25zQmVnaW4gPSBncmFwaC5pbnN0cnVjdGlvbnMoKS5iZWdpbigpOworICAg
IGZvciAoaW50IGJ5dGVjb2RlT2Zmc2V0ID0gMCwgaW5zdHJ1Y3Rpb25Db3VudCA9IGdyYXBoLmlu
c3RydWN0aW9ucygpLnNpemUoKTsgYnl0ZWNvZGVPZmZzZXQgPCBpbnN0cnVjdGlvbkNvdW50Oykg
eworICAgICAgICBVbmxpbmtlZEluc3RydWN0aW9uKiBjdXJyZW50ID0gaW5zdHJ1Y3Rpb25zQmVn
aW4gKyBieXRlY29kZU9mZnNldDsKKyAgICAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBjdXJyZW50
WzBdLnUub3Bjb2RlOworCisgICAgICAgIHN3aXRjaCAob3Bjb2RlSUQpIHsKKyAgICAgICAgY2Fz
ZSBvcF9qbXA6CisgICAgICAgICAgICBjdXJyZW50WzFdLnUub3BlcmFuZCA9IGluc2VydGlvblNl
dC5hZGp1c3RPZmZzZXQoYnl0ZWNvZGVPZmZzZXQsIGJ5dGVjb2RlT2Zmc2V0ICsgY3VycmVudFsx
XS51Lm9wZXJhbmQpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBvcF9qdHJ1
ZToKKyAgICAgICAgY2FzZSBvcF9qZmFsc2U6CisgICAgICAgIGNhc2Ugb3BfamVxX251bGw6Cisg
ICAgICAgIGNhc2Ugb3Bfam5lcV9udWxsOgorICAgICAgICAgICAgY3VycmVudFsyXS51Lm9wZXJh
bmQgPSBpbnNlcnRpb25TZXQuYWRqdXN0T2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0LCBieXRlY29kZU9m
ZnNldCArIGN1cnJlbnRbMl0udS5vcGVyYW5kKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAg
ICAgIGNhc2Ugb3Bfam5lcV9wdHI6CisgICAgICAgIGNhc2Ugb3Bfamxlc3M6CisgICAgICAgIGNh
c2Ugb3Bfamxlc3NlcToKKyAgICAgICAgY2FzZSBvcF9qZ3JlYXRlcjoKKyAgICAgICAgY2FzZSBv
cF9qZ3JlYXRlcmVxOgorICAgICAgICBjYXNlIG9wX2pubGVzczoKKyAgICAgICAgY2FzZSBvcF9q
bmxlc3NlcToKKyAgICAgICAgY2FzZSBvcF9qbmdyZWF0ZXI6CisgICAgICAgIGNhc2Ugb3Bfam5n
cmVhdGVyZXE6CisgICAgICAgICAgICBjdXJyZW50WzNdLnUub3BlcmFuZCA9IGluc2VydGlvblNl
dC5hZGp1c3RPZmZzZXQoYnl0ZWNvZGVPZmZzZXQsIGJ5dGVjb2RlT2Zmc2V0ICsgY3VycmVudFsz
XS51Lm9wZXJhbmQpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBvcF9zd2l0
Y2hfaW1tOgorICAgICAgICBjYXNlIG9wX3N3aXRjaF9jaGFyOiB7CisgICAgICAgICAgICBhdXRv
JiB0YWJsZSA9IHN3aXRjaEp1bXBUYWJsZShjdXJyZW50WzFdLnUub3BlcmFuZCk7CisgICAgICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSB0YWJsZS5icmFuY2hPZmZzZXRzLnNpemUoKTsgaS0tOykK
KyAgICAgICAgICAgICAgICB0YWJsZS5icmFuY2hPZmZzZXRzW2ldID0gaW5zZXJ0aW9uU2V0LmFk
anVzdE9mZnNldChieXRlY29kZU9mZnNldCwgYnl0ZWNvZGVPZmZzZXQgKyB0YWJsZS5icmFuY2hP
ZmZzZXRzW2ldKTsKKyAgICAgICAgICAgIGN1cnJlbnRbMl0udS5vcGVyYW5kID0gaW5zZXJ0aW9u
U2V0LmFkanVzdE9mZnNldChieXRlY29kZU9mZnNldCwgYnl0ZWNvZGVPZmZzZXQgKyBjdXJyZW50
WzJdLnUub3BlcmFuZCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAg
IGNhc2Ugb3Bfc3dpdGNoX3N0cmluZzogeworICAgICAgICAgICAgYXV0byYgdGFibGUgPSBzdHJp
bmdTd2l0Y2hKdW1wVGFibGUoY3VycmVudFsxXS51Lm9wZXJhbmQpOworICAgICAgICAgICAgYXV0
byBpdGVyID0gdGFibGUub2Zmc2V0VGFibGUuYmVnaW4oKTsKKyAgICAgICAgICAgIGF1dG8gZW5k
ID0gdGFibGUub2Zmc2V0VGFibGUuZW5kKCk7CisgICAgICAgICAgICBmb3IgKDsgaXRlciAhPSBl
bmQ7ICsraXRlcikKKyAgICAgICAgICAgICAgICBpdGVyLT52YWx1ZS5icmFuY2hPZmZzZXQgPSBp
bnNlcnRpb25TZXQuYWRqdXN0T2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0LCBieXRlY29kZU9mZnNldCAr
IGl0ZXItPnZhbHVlLmJyYW5jaE9mZnNldCk7CisgICAgICAgICAgICBjdXJyZW50WzJdLnUub3Bl
cmFuZCA9IGluc2VydGlvblNldC5hZGp1c3RPZmZzZXQoYnl0ZWNvZGVPZmZzZXQsIGJ5dGVjb2Rl
T2Zmc2V0ICsgY3VycmVudFsyXS51Lm9wZXJhbmQpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0KKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0K
KworICAgICAgICBieXRlY29kZU9mZnNldCArPSBvcGNvZGVMZW5ndGgob3Bjb2RlSUQpOworICAg
IH0KKworICAgIC8vIFRoZW4sIGV4Y2VwdGlvbiBoYW5kbGVycyBzaG91bGQgYmUgYWRqdXN0ZWQu
CisgICAgaWYgKG1fcmFyZURhdGEpIHsKKyAgICAgICAgZm9yIChVbmxpbmtlZEhhbmRsZXJJbmZv
JiBoYW5kbGVyIDogbV9yYXJlRGF0YS0+bV9leGNlcHRpb25IYW5kbGVycykgeworICAgICAgICAg
ICAgaGFuZGxlci50YXJnZXQgPSBpbnNlcnRpb25TZXQuYWRqdXN0T2Zmc2V0KDAsIGhhbmRsZXIu
dGFyZ2V0KTsKKyAgICAgICAgICAgIGhhbmRsZXIuc3RhcnQgPSBpbnNlcnRpb25TZXQuYWRqdXN0
T2Zmc2V0KDAsIGhhbmRsZXIuc3RhcnQpOworICAgICAgICAgICAgaGFuZGxlci5lbmQgPSBpbnNl
cnRpb25TZXQuYWRqdXN0T2Zmc2V0KDAsIGhhbmRsZXIuZW5kKTsKKyAgICAgICAgfQorCisgICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9yYXJlRGF0YS0+bV9vcFByb2ZpbGVDb250cm9s
Rmxvd0J5dGVjb2RlT2Zmc2V0cy5zaXplKCk7ICsraSkKKyAgICAgICAgICAgIG1fcmFyZURhdGEt
Pm1fb3BQcm9maWxlQ29udHJvbEZsb3dCeXRlY29kZU9mZnNldHNbaV0gPSBpbnNlcnRpb25TZXQu
YWRqdXN0T2Zmc2V0KDAsIG1fcmFyZURhdGEtPm1fb3BQcm9maWxlQ29udHJvbEZsb3dCeXRlY29k
ZU9mZnNldHNbaV0pOworCisgICAgICAgIGlmICghbV9yYXJlRGF0YS0+bV90eXBlUHJvZmlsZXJJ
bmZvTWFwLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgSGFzaE1hcDx1bnNpZ25lZCwgUmFyZURh
dGE6OlR5cGVQcm9maWxlckV4cHJlc3Npb25SYW5nZT4gYWRqdXN0ZWRUeXBlUHJvZmlsZXJJbmZv
TWFwOworICAgICAgICAgICAgZm9yIChhdXRvJiBlbnRyeSA6IG1fcmFyZURhdGEtPm1fdHlwZVBy
b2ZpbGVySW5mb01hcCkKKyAgICAgICAgICAgICAgICBhZGp1c3RlZFR5cGVQcm9maWxlckluZm9N
YXAuc2V0KGluc2VydGlvblNldC5hZGp1c3RPZmZzZXQoMCwgZW50cnkua2V5KSwgZW50cnkudmFs
dWUpOworICAgICAgICAgICAgbV9yYXJlRGF0YS0+bV90eXBlUHJvZmlsZXJJbmZvTWFwLnN3YXAo
YWRqdXN0ZWRUeXBlUHJvZmlsZXJJbmZvTWFwKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9ucy5zaXplKCk7
ICsraSkKKyAgICAgICAgbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uc1tpXSA9IGluc2VydGlv
blNldC5hZGp1c3RPZmZzZXQoMCwgbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uc1tpXSk7CisK
KyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZXhwcmVzc2lvbkluZm8uc2l6ZSgpOyArK2kp
CisgICAgICAgIG1fZXhwcmVzc2lvbkluZm9baV0uaW5zdHJ1Y3Rpb25PZmZzZXQgPSBpbnNlcnRp
b25TZXQuYWRqdXN0T2Zmc2V0KDAsIG1fZXhwcmVzc2lvbkluZm9baV0uaW5zdHJ1Y3Rpb25PZmZz
ZXQpOworCisgICAgLy8gVGhlbiwgbW9kaWZ5IHRoZSB1bmxpbmtlZCBpbnN0cnVjdGlvbnMuCisg
ICAgaW5zZXJ0aW9uU2V0LmFwcGx5TW9kaWZpY2F0aW9uKCk7CisKKyAgICAvLyBBbmQgcmVjb21w
dXRlIHRoZSBqdW1wIHRhcmdldCBiYXNlZCBvbiB0aGUgbW9kaWZpZWQgdW5saW5rZWQgaW5zdHJ1
Y3Rpb25zLgorICAgIG1fanVtcFRhcmdldHMuY2xlYXIoKTsKKyAgICByZWNvbXB1dGVQcmVjaXNl
SnVtcFRhcmdldHModGhpcywgZ3JhcGguaW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSwgZ3JhcGguaW5z
dHJ1Y3Rpb25zKCkuc2l6ZSgpLCBtX2p1bXBUYXJnZXRzKTsKK30KKwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCmluZGV4IDkx
ZmRjYTQ4YzFlMzllOGJlZmIwYzVmZDU1ZmQ5YmQ5MWMxZjM3MDcuLmFjY2I3YjU5NjhkZDExOGU0
OTg2MDZiZmUwMDljNTFlYzVkY2QzMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCkBAIC00OCw2ICs0OCw3IEBACiAKIG5hbWVz
cGFjZSBKU0MgewogCitjbGFzcyBCeXRlY29kZUluc2VydGlvblNldDsKIGNsYXNzIERlYnVnZ2Vy
OwogY2xhc3MgRnVuY3Rpb25NZXRhZGF0YU5vZGU7CiBjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGU7
CkBAIC02OSw3ICs3MCwxMSBAQCB0eXBlZGVmIHVuc2lnbmVkIFVubGlua2VkT2JqZWN0QWxsb2Nh
dGlvblByb2ZpbGU7CiB0eXBlZGVmIHVuc2lnbmVkIFVubGlua2VkTExJbnRDYWxsTGlua0luZm87
CiAKIHN0cnVjdCBVbmxpbmtlZFN0cmluZ0p1bXBUYWJsZSB7Ci0gICAgdHlwZWRlZiBIYXNoTWFw
PFJlZlB0cjxTdHJpbmdJbXBsPiwgaW50MzJfdD4gU3RyaW5nT2Zmc2V0VGFibGU7CisgICAgc3Ry
dWN0IE9mZnNldExvY2F0aW9uIHsKKyAgICAgICAgaW50MzJfdCBicmFuY2hPZmZzZXQ7CisgICAg
fTsKKworICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8U3RyaW5nSW1wbD4sIE9mZnNldExvY2F0
aW9uPiBTdHJpbmdPZmZzZXRUYWJsZTsKICAgICBTdHJpbmdPZmZzZXRUYWJsZSBvZmZzZXRUYWJs
ZTsKIAogICAgIGlubGluZSBpbnQzMl90IG9mZnNldEZvclZhbHVlKFN0cmluZ0ltcGwqIHZhbHVl
LCBpbnQzMl90IGRlZmF1bHRPZmZzZXQpCkBAIC03OCw3ICs4Myw3IEBAIHN0cnVjdCBVbmxpbmtl
ZFN0cmluZ0p1bXBUYWJsZSB7CiAgICAgICAgIFN0cmluZ09mZnNldFRhYmxlOjpjb25zdF9pdGVy
YXRvciBsb2MgPSBvZmZzZXRUYWJsZS5maW5kKHZhbHVlKTsKICAgICAgICAgaWYgKGxvYyA9PSBl
bmQpCiAgICAgICAgICAgICByZXR1cm4gZGVmYXVsdE9mZnNldDsKLSAgICAgICAgcmV0dXJuIGxv
Yy0+dmFsdWU7CisgICAgICAgIHJldHVybiBsb2MtPnZhbHVlLmJyYW5jaE9mZnNldDsKICAgICB9
CiAKIH07CkBAIC0xMDYsNiArMTExLDggQEAgc3RydWN0IFVubGlua2VkSW5zdHJ1Y3Rpb24gewog
ICAgIH0gdTsKIH07CiAKK2NsYXNzIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uOworCiBjbGFz
cyBVbmxpbmtlZENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogcHVibGljOgogICAgIHR5cGVk
ZWYgSlNDZWxsIEJhc2U7CkBAIC0xMTUsNiArMTIyLDggQEAgY2xhc3MgVW5saW5rZWRDb2RlQmxv
Y2sgOiBwdWJsaWMgSlNDZWxsIHsKIAogICAgIGVudW0geyBDYWxsRnVuY3Rpb24sIEFwcGx5RnVu
Y3Rpb24gfTsKIAorICAgIHR5cGVkZWYgVmVjdG9yPFVubGlua2VkSW5zdHJ1Y3Rpb24sIDAsIFVu
c2FmZVZlY3Rvck92ZXJmbG93PiBVbnBhY2tlZEluc3RydWN0aW9uczsKKwogICAgIGJvb2wgaXND
b25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1faXNDb25zdHJ1Y3RvcjsgfQogICAgIGJvb2wg
aXNTdHJpY3RNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9pc1N0cmljdE1vZGU7IH0KICAgICBib29s
IHVzZXNFdmFsKCkgY29uc3QgeyByZXR1cm4gbV91c2VzRXZhbDsgfQpAQCAtMjA0LDYgKzIxMyw5
IEBAIGNsYXNzIFVubGlua2VkQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgdW5zaWdu
ZWQganVtcFRhcmdldChpbnQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIG1fanVtcFRhcmdldHNbaW5k
ZXhdOyB9CiAgICAgdW5zaWduZWQgbGFzdEp1bXBUYXJnZXQoKSBjb25zdCB7IHJldHVybiBtX2p1
bXBUYXJnZXRzLmxhc3QoKTsgfQogCisgICAgVW5saW5rZWRIYW5kbGVySW5mbyogaGFuZGxlckZv
ckJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBSZXF1aXJlZEhhbmRsZXIg
PSBSZXF1aXJlZEhhbmRsZXI6OkFueUhhbmRsZXIpOworICAgIFVubGlua2VkSGFuZGxlckluZm8q
IGhhbmRsZXJGb3JJbmRleCh1bnNpZ25lZCwgUmVxdWlyZWRIYW5kbGVyID0gUmVxdWlyZWRIYW5k
bGVyOjpBbnlIYW5kbGVyKTsKKwogICAgIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24oKSBjb25zdCB7
IHJldHVybiBtX2lzQnVpbHRpbkZ1bmN0aW9uOyB9CiAKICAgICBDb25zdHJ1Y3RvcktpbmQgY29u
c3RydWN0b3JLaW5kKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Q29uc3RydWN0b3JLaW5k
PihtX2NvbnN0cnVjdG9yS2luZCk7IH0KQEAgLTM4NCw2ICszOTYsOCBAQCBjbGFzcyBVbmxpbmtl
ZENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgIH0KIAogcHJpdmF0ZToKKyAgICBmcmll
bmQgY2xhc3MgQnl0ZWNvZGVJbnNlcnRpb25TZXQ7CisgICAgdm9pZCBhcHBseU1vZGlmaWNhdGlv
bihCeXRlY29kZUluc2VydGlvblNldCYpOwogCiAgICAgdm9pZCBjcmVhdGVSYXJlRGF0YUlmTmVj
ZXNzYXJ5KCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvVmlydHVhbFJlZ2lzdGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmly
dHVhbFJlZ2lzdGVyLmgKaW5kZXggZDNkZjQwOTU3YjUxNzU2OGUzYWVmYmUzYTFhNjA5ZmQ4Nzhi
YWFjMy4uZGFmNTA5ZjZjN2QxMTVlNDViY2IxMDdjNjdkM2QzOGQ4MDRmMjg5NCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZpcnR1YWxSZWdpc3Rlci5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WaXJ0dWFsUmVnaXN0ZXIuaApAQCAtMjYs
OCArMjYsOCBAQAogI2lmbmRlZiBWaXJ0dWFsUmVnaXN0ZXJfaAogI2RlZmluZSBWaXJ0dWFsUmVn
aXN0ZXJfaAogCisjaW5jbHVkZSAiQnl0ZWNvZGVDb252ZW50aW9ucy5oIgogI2luY2x1ZGUgIkNh
bGxGcmFtZS5oIgotCiAjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CiAKIG5hbWVzcGFjZSBK
U0MgewpAQCAtMTAzLDcgKzEwMyw3IEBAIGNsYXNzIFZpcnR1YWxSZWdpc3RlciB7CiAKIHByaXZh
dGU6CiAgICAgc3RhdGljIGNvbnN0IGludCBzX2ludmFsaWRWaXJ0dWFsUmVnaXN0ZXIgPSAweDNm
ZmZmZmZmOwotICAgIHN0YXRpYyBjb25zdCBpbnQgc19maXJzdENvbnN0YW50UmVnaXN0ZXJJbmRl
eCA9IDB4NDAwMDAwMDA7CisgICAgc3RhdGljIGNvbnN0IGludCBzX2ZpcnN0Q29uc3RhbnRSZWdp
c3RlckluZGV4ID0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXg7CiAKICAgICBzdGF0aWMgaW50
IGxvY2FsVG9PcGVyYW5kKGludCBsb2NhbCkgeyByZXR1cm4gLTEgLSBsb2NhbDsgfQogICAgIHN0
YXRpYyBpbnQgb3BlcmFuZFRvTG9jYWwoaW50IG9wZXJhbmQpIHsgcmV0dXJuIC0xIC0gb3BlcmFu
ZDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCA1MDBiNGJiYmQyMDI4ODI2MmE5ZjlmNjBiMzNiNTM5
YWFlOTRmMDJkLi5lNTA3YTc0YzZhZTE3NGQ2OGVmZDg3YjhhYzJjMWQ5MzE5MjIwYmFhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkJ5dGVjb2RlR2VuZXJh
dG9yLmgiCiAKICNpbmNsdWRlICJCdWlsdGluRXhlY3V0YWJsZXMuaCIKKyNpbmNsdWRlICJCeXRl
Y29kZUdlbmVyYXRvcmlmaWNhdGlvbi5oIgogI2luY2x1ZGUgIkJ5dGVjb2RlTGl2ZW5lc3NBbmFs
eXNpcy5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5o
IgpAQCAtMTU0LDYgKzE1NSwxMCBAQCBQYXJzZXJFcnJvciBCeXRlY29kZUdlbmVyYXRvcjo6Z2Vu
ZXJhdGUoKQogICAgICAgICBtX2NvZGVCbG9jay0+YWRkRXhjZXB0aW9uSGFuZGxlcihpbmZvKTsK
ICAgICB9CiAgICAgCisKKyAgICBpZiAobV9jb2RlQmxvY2stPnBhcnNlTW9kZSgpID09IFNvdXJj
ZVBhcnNlTW9kZTo6R2VuZXJhdG9yQm9keU1vZGUpCisgICAgICAgIHBlcmZvcm1HZW5lcmF0b3Jp
ZmljYXRpb24obV9jb2RlQmxvY2suZ2V0KCksIG1faW5zdHJ1Y3Rpb25zLCBtX2dlbmVyYXRvckZy
YW1lU3ltYm9sVGFibGUuZ2V0KCksIG1fZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZUluZGV4KTsK
KwogICAgIG1fY29kZUJsb2NrLT5zZXRJbnN0cnVjdGlvbnMoc3RkOjptYWtlX3VuaXF1ZTxVbmxp
bmtlZEluc3RydWN0aW9uU3RyZWFtPihtX2luc3RydWN0aW9ucykpOwogCiAgICAgbV9jb2RlQmxv
Y2stPnNocmlua1RvRml0KCk7CkBAIC0yNjEsMTAgKzI2NiwxNCBAQCBCeXRlY29kZUdlbmVyYXRv
cjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwg
VW5saW5rZQogICAgIGJvb2wgc2hvdWxkQ2FwdHVyZUFsbE9mVGhlVGhpbmdzID0gbV9zaG91bGRF
bWl0RGVidWdIb29rcyB8fCBjb2RlQmxvY2stPnVzZXNFdmFsKCk7CiAgICAgYm9vbCBuZWVkc0Fy
Z3VtZW50cyA9IChmdW5jdGlvbk5vZGUtPnVzZXNBcmd1bWVudHMoKSB8fCBjb2RlQmxvY2stPnVz
ZXNFdmFsKCkgfHwgKGZ1bmN0aW9uTm9kZS0+dXNlc0Fycm93RnVuY3Rpb24oKSAmJiAhY29kZUJs
b2NrLT5pc0Fycm93RnVuY3Rpb24oKSAmJiBpc0FyZ3VtZW50c1VzZWRJbklubmVyQXJyb3dGdW5j
dGlvbigpKSk7CiAKLSAgICAvLyBHZW5lcmF0b3IgbmV2ZXIgcHJvdmlkZXMgImFyZ3VtZW50cyIu
ICJhcmd1bWVudHMiIHJlZmVyZW5jZSB3aWxsIGJlIHJlc29sdmVkIGluIGFuIHVwcGVyIGdlbmVy
YXRvciBmdW5jdGlvbiBzY29wZS4KLSAgICBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9k
ZTo6R2VuZXJhdG9yQm9keU1vZGUpCisgICAgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1v
ZGU6OkdlbmVyYXRvckJvZHlNb2RlKSB7CisgICAgICAgIC8vIEdlbmVyYXRvciBuZXZlciBwcm92
aWRlcyAiYXJndW1lbnRzIi4gImFyZ3VtZW50cyIgcmVmZXJlbmNlIHdpbGwgYmUgcmVzb2x2ZWQg
aW4gYW4gdXBwZXIgZ2VuZXJhdG9yIGZ1bmN0aW9uIHNjb3BlLgogICAgICAgICBuZWVkc0FyZ3Vt
ZW50cyA9IGZhbHNlOwogCisgICAgICAgIC8vIEdlbmVyYXRvciB1c2VzIHRoZSB2YXIgc2NvcGUg
dG8gc2F2ZSBhbmQgcmVzdW1lIGl0cyB2YXJpYWJsZXMuIFNvIHRoZSBsZXhpY2FsIHNjb3BlIGlz
IGFsd2F5cyBpbnN0YW50aWF0ZWQuCisgICAgICAgIHNob3VsZENhcHR1cmVTb21lT2ZUaGVUaGlu
Z3MgPSB0cnVlOworICAgIH0KKwogICAgIGlmIChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2Rl
OjpHZW5lcmF0b3JXcmFwcGVyRnVuY3Rpb25Nb2RlICYmIG5lZWRzQXJndW1lbnRzKSB7CiAgICAg
ICAgIC8vIEdlbmVyYXRvciBkb2VzIG5vdCBwcm92aWRlICJhcmd1bWVudHMiLiBJbnN0ZWFkLCB3
cmFwcGluZyBHZW5lcmF0b3JGdW5jdGlvbiBwcm92aWRlcyAiYXJndW1lbnRzIi4KICAgICAgICAg
Ly8gVGhpcyBpcyBiZWNhdXNlIGFyZ3VtZW50cyBvZiBhIGdlbmVyYXRvciBzaG91bGQgYmUgZXZh
bHVhdGVkIGJlZm9yZSBzdGFydGluZyBpdC4KQEAgLTI3Myw3ICsyODIsNyBAQCBCeXRlY29kZUdl
bmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9u
Tm9kZSwgVW5saW5rZQogICAgICAgICAvLyAgICBmdW5jdGlvbiAqZ2VuKGEsIGIgPSBoZWxsbygp
KQogICAgICAgICAvLyAgICB7CiAgICAgICAgIC8vICAgICAgICByZXR1cm4gewotICAgICAgICAv
LyAgICAgICAgICAgIEBnZW5lcmF0b3JOZXh0OiBmdW5jdGlvbiAoQGdlbmVyYXRvciwgQGdlbmVy
YXRvclN0YXRlLCBAZ2VuZXJhdG9yVmFsdWUsIEBnZW5lcmF0b3JSZXN1bWVNb2RlKQorICAgICAg
ICAvLyAgICAgICAgICAgIEBnZW5lcmF0b3JOZXh0OiBmdW5jdGlvbiAoQGdlbmVyYXRvciwgQGdl
bmVyYXRvclN0YXRlLCBAZ2VuZXJhdG9yVmFsdWUsIEBnZW5lcmF0b3JSZXN1bWVNb2RlLCBAZ2Vu
ZXJhdG9yRnJhbWUpCiAgICAgICAgIC8vICAgICAgICAgICAgewogICAgICAgICAvLyAgICAgICAg
ICAgICAgICBhcmd1bWVudHM7ICAvLyBUaGlzIGBhcmd1bWVudHNgIHNob3VsZCByZWZlcmVuY2Ug
dG8gdGhlIGdlbidzIGFyZ3VtZW50cy4KICAgICAgICAgLy8gICAgICAgICAgICAgICAgLi4uCkBA
IC02MzEsNiArNjQwLDE2IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihW
TSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtlCiAgICAgICAgICAgICBl
bWl0TG9hZE5ld1RhcmdldEZyb21BcnJvd0Z1bmN0aW9uTGV4aWNhbEVudmlyb25tZW50KCk7CiAg
ICAgfQogICAgIAorICAgIC8vIFNldCB1cCB0aGUgbGV4aWNhbCBlbnZpcm9ubWVudCBzY29wZSBh
cyB0aGUgZ2VuZXJhdG9yIGZyYW1lLiBXZSBzdG9yZSB0aGUgc2F2ZWQgYW5kIHJlc3VtZWQgZ2Vu
ZXJhdG9yIHJlZ2lzdGVycyBpbnRvIHRoaXMgc2NvcGUgd2l0aCB0aGUgc3ltYm9sIGtleXMuCisg
ICAgLy8gU2luY2UgdGhleSBhcmUgc3ltYm9sIGtleWVkLCB0aGVzZSB2YXJpYWJsZXMgY2Fubm90
IGJlIHJlYWNoZWQgZnJvbSB0aGUgdXN1YWwgY29kZS4KKyAgICBpZiAoU291cmNlUGFyc2VNb2Rl
OjpHZW5lcmF0b3JCb2R5TW9kZSA9PSBwYXJzZU1vZGUpIHsKKyAgICAgICAgQVNTRVJUKG1fbGV4
aWNhbEVudmlyb25tZW50UmVnaXN0ZXIpOworICAgICAgICBtX2dlbmVyYXRvckZyYW1lU3ltYm9s
VGFibGUuc2V0KCptX3ZtLCBmdW5jdGlvblN5bWJvbFRhYmxlKTsKKyAgICAgICAgbV9nZW5lcmF0
b3JGcmFtZVN5bWJvbFRhYmxlSW5kZXggPSBzeW1ib2xUYWJsZUNvbnN0YW50SW5kZXg7CisgICAg
ICAgIGVtaXRNb3ZlKGdlbmVyYXRvckZyYW1lUmVnaXN0ZXIoKSwgbV9sZXhpY2FsRW52aXJvbm1l
bnRSZWdpc3Rlcik7CisgICAgICAgIGVtaXRQdXRCeUlkKGdlbmVyYXRvclJlZ2lzdGVyKCksIHBy
b3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JGcmFtZVByaXZhdGVOYW1lKCks
IGdlbmVyYXRvckZyYW1lUmVnaXN0ZXIoKSk7CisgICAgfQorCiAgICAgYm9vbCBzaG91bGRJbml0
aWFsaXplQmxvY2tTY29wZWRGdW5jdGlvbnMgPSBmYWxzZTsgLy8gV2UgZ2VuZXJhdGUgdG9wLWxl
dmVsIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucyBpbiA6OmdlbmVyYXRlKCkuCiAgICAgcHVzaExleGlj
YWxTY29wZShtX3Njb3BlTm9kZSwgVERaQ2hlY2tPcHRpbWl6YXRpb246Ok9wdGltaXplLCBOZXN0
ZWRTY29wZVR5cGU6OklzTm90TmVzdGVkLCBudWxscHRyLCBzaG91bGRJbml0aWFsaXplQmxvY2tT
Y29wZWRGdW5jdGlvbnMpOwogfQpAQCAtMzY1OCw4ICszNjc3LDcgQEAgdm9pZCBCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdENvbXBsZXhQb3BTY29wZXMoUmVnaXN0ZXJJRCogc2NvcGUsIENvbnRyb2xG
bG93Q29udGUKICAgICAgICAgICAgIGlmIChmbGlwVHJpZXMpIHsKICAgICAgICAgICAgICAgICB3
aGlsZSAobV90cnlDb250ZXh0U3RhY2suc2l6ZSgpICE9IGZpbmFsbHlDb250ZXh0LnRyeUNvbnRl
eHRTdGFja1NpemUpIHsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKG1fdHJ5Q29udGV4dFN0
YWNrLnNpemUoKSA+IGZpbmFsbHlDb250ZXh0LnRyeUNvbnRleHRTdGFja1NpemUpOwotICAgICAg
ICAgICAgICAgICAgICBUcnlDb250ZXh0IGNvbnRleHQgPSBtX3RyeUNvbnRleHRTdGFjay5sYXN0
KCk7Ci0gICAgICAgICAgICAgICAgICAgIG1fdHJ5Q29udGV4dFN0YWNrLnJlbW92ZUxhc3QoKTsK
KyAgICAgICAgICAgICAgICAgICAgVHJ5Q29udGV4dCBjb250ZXh0ID0gbV90cnlDb250ZXh0U3Rh
Y2sudGFrZUxhc3QoKTsKICAgICAgICAgICAgICAgICAgICAgVHJ5UmFuZ2UgcmFuZ2U7CiAgICAg
ICAgICAgICAgICAgICAgIHJhbmdlLnN0YXJ0ID0gY29udGV4dC5zdGFydDsKICAgICAgICAgICAg
ICAgICAgICAgcmFuZ2UuZW5kID0gYmVmb3JlRmluYWxseTsKQEAgLTM5NDMsNyArMzk2MSw3IEBA
IHN0YXRpYyB2b2lkIHByZXBhcmVKdW1wVGFibGVGb3JTdHJpbmdTd2l0Y2goVW5saW5rZWRTdHJp
bmdKdW1wVGFibGUmIGp1bXBUYWJsZSwKICAgICAgICAgCiAgICAgICAgIEFTU0VSVChub2Rlc1tp
XS0+aXNTdHJpbmcoKSk7CiAgICAgICAgIFN0cmluZ0ltcGwqIGNsYXVzZSA9IHN0YXRpY19jYXN0
PFN0cmluZ05vZGUqPihub2Rlc1tpXSktPnZhbHVlKCkuaW1wbCgpOwotICAgICAgICBqdW1wVGFi
bGUub2Zmc2V0VGFibGUuYWRkKGNsYXVzZSwgbGFiZWxzW2ldLT5iaW5kKHN3aXRjaEFkZHJlc3Ms
IHN3aXRjaEFkZHJlc3MgKyAzKSk7CisgICAgICAgIGp1bXBUYWJsZS5vZmZzZXRUYWJsZS5hZGQo
Y2xhdXNlLCBVbmxpbmtlZFN0cmluZ0p1bXBUYWJsZTo6T2Zmc2V0TG9jYXRpb24geyBsYWJlbHNb
aV0tPmJpbmQoc3dpdGNoQWRkcmVzcywgc3dpdGNoQWRkcmVzcyArIDMpIH0pOwogICAgIH0KIH0K
IApAQCAtNDQ1MSwxNiArNDQ2OSwzNiBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0WWll
bGRQb2ludChSZWdpc3RlcklEKiBhcmd1bWVudCkKICAgICBlbWl0R2VuZXJhdG9yU3RhdGVDaGFu
Z2UoeWllbGRQb2ludEluZGV4KTsKICAgICAvLyBGaXJzdCB5aWVsZCBwb2ludCBpcyB1c2VkIGZv
ciBpbml0aWFsIHNlcXVlbmNlLgogICAgIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9
IHlpZWxkUG9pbnRJbmRleCAtIDE7CisKKyAgICAvLyBTcGxpdCB0aGUgdHJ5IHJhbmdlIGhlcmUu
CisgICAgUmVmUHRyPExhYmVsPiBzYXZlUG9pbnQgPSBlbWl0TGFiZWwobmV3TGFiZWwoKS5nZXQo
KSk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gbV90cnlDb250ZXh0U3RhY2suc2l6ZSgpOyBpLS07
KSB7CisgICAgICAgIFRyeUNvbnRleHQmIGNvbnRleHQgPSBtX3RyeUNvbnRleHRTdGFja1tpXTsK
KyAgICAgICAgVHJ5UmFuZ2UgcmFuZ2U7CisgICAgICAgIHJhbmdlLnN0YXJ0ID0gY29udGV4dC5z
dGFydDsKKyAgICAgICAgcmFuZ2UuZW5kID0gc2F2ZVBvaW50OworICAgICAgICByYW5nZS50cnlE
YXRhID0gY29udGV4dC50cnlEYXRhOworICAgICAgICBtX3RyeVJhbmdlcy5hcHBlbmQocmFuZ2Up
OworCisgICAgICAgIC8vIFRyeSByYW5nZSB3aWxsIGJlIHJlc3RhcmVkIGF0IHRoZSBtZXJnZSBw
b2ludC4KKyAgICAgICAgY29udGV4dC5zdGFydCA9IG1lcmdlUG9pbnQ7CisgICAgfQorICAgIFZl
Y3RvcjxUcnlDb250ZXh0PiBzYXZlZFRyeUNvbnRleHRTdGFjazsKKyAgICBtX3RyeUNvbnRleHRT
dGFjay5zd2FwKHNhdmVkVHJ5Q29udGV4dFN0YWNrKTsKKwogICAgIGVtaXRTYXZlKG1lcmdlUG9p
bnQuZ2V0KCksIGxpdmVDYWxsZWVMb2NhbHNJbmRleCk7CiAgICAgZW1pdFJldHVybihhcmd1bWVu
dCk7CiAgICAgZW1pdFJlc3VtZShtZXJnZVBvaW50LmdldCgpLCBsaXZlQ2FsbGVlTG9jYWxzSW5k
ZXgpOworCisgICAgLy8gUmVzdG9yZSB0aGUgdHJ5IGNvbnRleHRzLCB3aGljaCBzdGFydCBvZmZz
ZXQgaXMgdXBkYXRlZCB0byB0aGUgbWVyZ2UgcG9pbnQuCisgICAgbV90cnlDb250ZXh0U3RhY2su
c3dhcChzYXZlZFRyeUNvbnRleHRTdGFjayk7CiB9CiAKIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRTYXZlKExhYmVsKiBtZXJnZVBvaW50LCB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5k
ZXgpCiB7CiAgICAgc2l6ZV90IGJlZ2luID0gaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpOwogICAgIGVt
aXRPcGNvZGUob3Bfc2F2ZSk7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fZ2VuZXJhdG9y
UmVnaXN0ZXItPmluZGV4KCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChnZW5lcmF0b3JG
cmFtZVJlZ2lzdGVyKCktPmluZGV4KCkpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChsaXZl
Q2FsbGVlTG9jYWxzSW5kZXgpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChtZXJnZVBvaW50
LT5iaW5kKGJlZ2luLCBpbnN0cnVjdGlvbnMoKS5zaXplKCkpKTsKIH0KQEAgLTQ0NjksNyArNDUw
Nyw3IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXN1bWUoTGFiZWwqIG1lcmdlUG9p
bnQsIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJCiB7CiAgICAgZW1pdEdlbmVyYXRvclN0YXRl
TGFiZWwoKTsKICAgICBlbWl0T3Bjb2RlKG9wX3Jlc3VtZSk7Ci0gICAgaW5zdHJ1Y3Rpb25zKCku
YXBwZW5kKG1fZ2VuZXJhdG9yUmVnaXN0ZXItPmluZGV4KCkpOworICAgIGluc3RydWN0aW9ucygp
LmFwcGVuZChnZW5lcmF0b3JGcmFtZVJlZ2lzdGVyKCktPmluZGV4KCkpOwogICAgIGluc3RydWN0
aW9ucygpLmFwcGVuZChsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpOwogICAgIGVtaXRMYWJlbChtZXJn
ZVBvaW50KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAppbmRleCA1ZmFmMDRmMmYzZGJhMThhZGIwNzg5ZTMyM2U5
ZGFhZTYxYWIxMTZiLi5lYzJhMGU2YjA2NmNhYWRhY2YyYjdiMDdmYWFmNjU1YmZjNDUxYjEyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5oCkBAIC03MDUsNiArNzA1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IFJlZ2lzdGVySUQqIGdlbmVyYXRvclN0YXRlUmVnaXN0ZXIoKSB7IHJldHVybiAmbV9wYXJhbWV0
ZXJzWzJdOyB9CiAgICAgICAgIFJlZ2lzdGVySUQqIGdlbmVyYXRvclZhbHVlUmVnaXN0ZXIoKSB7
IHJldHVybiAmbV9wYXJhbWV0ZXJzWzNdOyB9CiAgICAgICAgIFJlZ2lzdGVySUQqIGdlbmVyYXRv
clJlc3VtZU1vZGVSZWdpc3RlcigpIHsgcmV0dXJuICZtX3BhcmFtZXRlcnNbNF07IH0KKyAgICAg
ICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9yRnJhbWVSZWdpc3RlcigpIHsgcmV0dXJuICZtX3BhcmFt
ZXRlcnNbNV07IH0KIAogICAgICAgICBDb2RlVHlwZSBjb2RlVHlwZSgpIGNvbnN0IHsgcmV0dXJu
IG1fY29kZVR5cGU7IH0KIApAQCAtOTMyLDYgKzkzMywxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgVmVjdG9yPFJlZlB0cjxGb3JJbkNvbnRleHQ+PiBtX2ZvckluQ29udGV4dFN0YWNrOwog
ICAgICAgICBWZWN0b3I8VHJ5Q29udGV4dD4gbV90cnlDb250ZXh0U3RhY2s7CiAgICAgICAgIFZl
Y3RvcjxSZWZQdHI8TGFiZWw+PiBtX2dlbmVyYXRvclJlc3VtZUxhYmVsczsKKworICAgICAgICBT
dHJvbmc8U3ltYm9sVGFibGU+IG1fZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZTsKKyAgICAgICAg
aW50IG1fZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZUluZGV4IHsgMCB9OworCiAgICAgICAgIGVu
dW0gRnVuY3Rpb25WYXJpYWJsZVR5cGUgOiB1aW50OF90IHsgTm9ybWFsRnVuY3Rpb25WYXJpYWJs
ZSwgR2xvYmFsRnVuY3Rpb25WYXJpYWJsZSB9OwogICAgICAgICBWZWN0b3I8c3RkOjpwYWlyPEZ1
bmN0aW9uTWV0YWRhdGFOb2RlKiwgRnVuY3Rpb25WYXJpYWJsZVR5cGU+PiBtX2Z1bmN0aW9uc1Rv
SW5pdGlhbGl6ZTsKICAgICAgICAgYm9vbCBtX25lZWRUb0luaXRpYWxpemVBcmd1bWVudHMgeyBm
YWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRp
b25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKaW5k
ZXggNjlhMTZlYjVkYTQzNTViYzc5MjVjNWRmZGNiMDYyMDIzZTk5NjUwMi4uYzQ1NzIzYjE5MDEz
MjAyNWRmY2UzMjZmNjAxNWVjYTZjZTU4ZDcxYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09wZXJhdGlvbnMuY3BwCkBAIC00Miw4ICs0Miw4IEBACiAjaW5jbHVkZSAiRGlyZWN0
QXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiRlRMRm9yT1NSRW50cnlKSVRDb2RlLmgiCiAjaW5jbHVk
ZSAiRlRMT1NSRW50cnkuaCIKLSNpbmNsdWRlICJIb3N0Q2FsbFJldHVyblZhbHVlLmgiCiAjaW5j
bHVkZSAiR2V0dGVyU2V0dGVyLmgiCisjaW5jbHVkZSAiSG9zdENhbGxSZXR1cm5WYWx1ZS5oIgog
I2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSklU
RXhjZXB0aW9ucy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRl
LWJ5dGVjb2RlLWZpbGVzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRlLWJ5dGVjb2Rl
LWZpbGVzCmluZGV4IDU2NjZhM2Y5MjRjMTE5YjIxNmQzZmYwZmZlOWM2NzJiN2M3MWJiNzkuLmZh
Y2ZkZjEzMzE0ODcwN2EzMzM1MzU3NjJiZTc4MzA0YzRiNTBiMWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0ZS1ieXRlY29kZS1maWxlcworKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZ2VuZXJhdGUtYnl0ZWNvZGUtZmlsZXMKQEAgLTE4Nyw2ICsxODcsNyBAQCBp
ZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgICAgICAgICAgICAgIGRlZmF1bHRMZW5ndGgg
PSBzZWN0aW9uWyJkZWZhdWx0TGVuZ3RoIl0KIAogICAgICAgICAgICAgYnl0ZWNvZGVOdW0gPSAw
CisgICAgICAgICAgICBtYXhMZW5ndGggPSAwCiAgICAgICAgICAgICBmb3IgYnl0ZWNvZGUgaW4g
c2VjdGlvblsiYnl0ZWNvZGVzIl06CiAgICAgICAgICAgICAgICAgaWYgbm90IGZpcnN0TWFjcm86
CiAgICAgICAgICAgICAgICAgICAgIGJ5dGVjb2RlSEZpbGUud3JpdGUoIiBcXFxuIikKQEAgLTE5
NCw2ICsxOTUsNyBAQCBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgICAgICAgICAgICAg
IGxlbmd0aCA9IGRlZmF1bHRMZW5ndGgKICAgICAgICAgICAgICAgICBpZiAibGVuZ3RoIiBpbiBi
eXRlY29kZToKICAgICAgICAgICAgICAgICAgICAgbGVuZ3RoID0gYnl0ZWNvZGVbImxlbmd0aCJd
CisgICAgICAgICAgICAgICAgICAgIG1heExlbmd0aCA9IG1heChbbGVuZ3RoLCBtYXhMZW5ndGhd
KQogCiAgICAgICAgICAgICAgICAgYnl0ZWNvZGVIRmlsZS53cml0ZSgiICAgIG1hY3JvKHswfSwg
ezF9KSIuZm9ybWF0KGJ5dGVjb2RlWyJuYW1lIl0sIGxlbmd0aCkpCiAgICAgICAgICAgICAgICAg
Zmlyc3RNYWNybyA9IEZhbHNlCkBAIC0yMDEsNiArMjAzLDcgQEAgaWYgX19uYW1lX18gPT0gIl9f
bWFpbl9fIjoKIAogICAgICAgICAgICAgYnl0ZWNvZGVIRmlsZS53cml0ZSgiXG5cbiIpCiAgICAg
ICAgICAgICBieXRlY29kZUhGaWxlLndyaXRlKCIjZGVmaW5lIE5VTUJFUl9PRl97MH1fSURTIHsx
fVxuXG4iLmZvcm1hdChzZWN0aW9uWyJtYWNyb05hbWVDb21wb25lbnQiXSwgYnl0ZWNvZGVOdW0p
KQorICAgICAgICAgICAgYnl0ZWNvZGVIRmlsZS53cml0ZSgiI2RlZmluZSBNQVhfT1BDT0RFX0xF
TkdUSF9PRl97MH0gezF9XG5cbiIuZm9ybWF0KHNlY3Rpb25bIm1hY3JvTmFtZUNvbXBvbmVudCJd
LCBtYXhMZW5ndGgpKQogCiAgICAgICAgIGlmIGluaXRBU01GaWxlTmFtZSBhbmQgc2VjdGlvblsn
ZW1pdEluQVNNRmlsZSddOgogICAgICAgICAgICAgcHJlZml4ID0gIiIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCmluZGV4IDJiNGM3Yzli
M2ViMzZkNjMwNmVhODQ0ZTg1Mzc2ZmZhN2ZkMGYxZjcuLmZlMzY4ZjM5MWNjMjdjMWEwNWI4YmQ5
MGZmOTFhYzE2MjFiNjI0NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRl
cnByZXRlci9JbnRlcnByZXRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL0ludGVycHJldGVyLmNwcApAQCAtNjA4LDcgKzYwOCw3IEBAIEpTU3RyaW5nKiBJbnRl
cnByZXRlcjo6c3RhY2tUcmFjZUFzU3RyaW5nKFZNJiB2bSwgY29uc3QgVmVjdG9yPFN0YWNrRnJh
bWU+JiBzdGFjCiAgICAgcmV0dXJuIGpzU3RyaW5nKCZ2bSwgYnVpbGRlci50b1N0cmluZygpKTsK
IH0KIAotQUxXQVlTX0lOTElORSBzdGF0aWMgSGFuZGxlckluZm8qIGZpbmRFeGNlcHRpb25IYW5k
bGVyKFN0YWNrVmlzaXRvciYgdmlzaXRvciwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVCbG9j
azo6UmVxdWlyZWRIYW5kbGVyIHJlcXVpcmVkSGFuZGxlcikKK0FMV0FZU19JTkxJTkUgc3RhdGlj
IEhhbmRsZXJJbmZvKiBmaW5kRXhjZXB0aW9uSGFuZGxlcihTdGFja1Zpc2l0b3ImIHZpc2l0b3Is
IENvZGVCbG9jayogY29kZUJsb2NrLCBSZXF1aXJlZEhhbmRsZXIgcmVxdWlyZWRIYW5kbGVyKQog
ewogICAgIEFTU0VSVChjb2RlQmxvY2spOwogI2lmIEVOQUJMRShERkdfSklUKQpAQCAtNjQyLDcg
KzY0Miw3IEBAIGNsYXNzIEdldENhdGNoSGFuZGxlckZ1bmN0b3IgewogICAgICAgICBpZiAoIWNv
ZGVCbG9jaykKICAgICAgICAgICAgIHJldHVybiBTdGFja1Zpc2l0b3I6OkNvbnRpbnVlOwogCi0g
ICAgICAgIG1faGFuZGxlciA9IGZpbmRFeGNlcHRpb25IYW5kbGVyKHZpc2l0b3IsIGNvZGVCbG9j
aywgQ29kZUJsb2NrOjpSZXF1aXJlZEhhbmRsZXI6OkNhdGNoSGFuZGxlcik7CisgICAgICAgIG1f
aGFuZGxlciA9IGZpbmRFeGNlcHRpb25IYW5kbGVyKHZpc2l0b3IsIGNvZGVCbG9jaywgUmVxdWly
ZWRIYW5kbGVyOjpDYXRjaEhhbmRsZXIpOwogICAgICAgICBpZiAobV9oYW5kbGVyKQogICAgICAg
ICAgICAgcmV0dXJuIFN0YWNrVmlzaXRvcjo6RG9uZTsKIApAQCAtNjg0LDcgKzY4NCw3IEBAIGNs
YXNzIFVud2luZEZ1bmN0b3IgewogICAgICAgICBtX2hhbmRsZXIgPSBudWxscHRyOwogICAgICAg
ICBpZiAoIW1faXNUZXJtaW5hdGlvbikgewogICAgICAgICAgICAgaWYgKG1fY29kZUJsb2NrICYm
ICFpc1dlYkFzc2VtYmx5RXhlY3V0YWJsZShtX2NvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCkp
KQotICAgICAgICAgICAgICAgIG1faGFuZGxlciA9IGZpbmRFeGNlcHRpb25IYW5kbGVyKHZpc2l0
b3IsIG1fY29kZUJsb2NrLCBDb2RlQmxvY2s6OlJlcXVpcmVkSGFuZGxlcjo6QW55SGFuZGxlcik7
CisgICAgICAgICAgICAgICAgbV9oYW5kbGVyID0gZmluZEV4Y2VwdGlvbkhhbmRsZXIodmlzaXRv
ciwgbV9jb2RlQmxvY2ssIFJlcXVpcmVkSGFuZGxlcjo6QW55SGFuZGxlcik7CiAgICAgICAgIH0K
IAogICAgICAgICBpZiAobV9oYW5kbGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50
ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAppbmRleCBkMjA5NGRlZTdkMjg1YWM0OTViMTU0MTcyYTIz
Yjk0ZmZlODU3ZjFlLi4wNzMyYjNlYmJkOWFkZmQyMjMzNjJlYzlhNmJhYWFmZDg2MWY1MjY3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaApA
QCAtNjYsNiArNjYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBzdHJ1Y3QgSGFuZGxlckluZm87
CiAgICAgc3RydWN0IEluc3RydWN0aW9uOwogICAgIHN0cnVjdCBQcm90b0NhbGxGcmFtZTsKKyAg
ICBzdHJ1Y3QgVW5saW5rZWRJbnN0cnVjdGlvbjsKIAogICAgIGVudW0gVW53aW5kU3RhcnQgeyBV
bndpbmRGcm9tQ3VycmVudEZyYW1lLCBVbndpbmRGcm9tQ2FsbGVyRnJhbWUgfTsKIApAQCAtMjA4
LDcgKzIwOSwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBvcGNvZGU7
CiAjZW5kaWYKICAgICAgICAgfQotICAgICAgICAKKworICAgICAgICBPcGNvZGVJRCBnZXRPcGNv
ZGVJRChjb25zdCBJbnN0cnVjdGlvbiYpOworICAgICAgICBPcGNvZGVJRCBnZXRPcGNvZGVJRChj
b25zdCBVbmxpbmtlZEluc3RydWN0aW9uJik7CisKICAgICAgICAgYm9vbCBpc09wY29kZShPcGNv
ZGUpOwogCiAgICAgICAgIEpTVmFsdWUgZXhlY3V0ZShQcm9ncmFtRXhlY3V0YWJsZSosIENhbGxG
cmFtZSosIEpTT2JqZWN0KiB0aGlzT2JqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlcklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlcklubGluZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NmQwNzE0
OGE1MmU2NWUzNzVmOTdlNmViYjkxYWRiZTFkZDQ1NjBkCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVySW5saW5lcy5oCkBAIC0w
LDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgWXVzdWtlIFN1enVraSA8dXRh
dGFuZS50ZWFAZ21haWwuY29tPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkluc3RydWN0aW9uLmgiCisjaW5jbHVk
ZSAiSW50ZXJwcmV0ZXIuaCIKKyNpbmNsdWRlICJVbmxpbmtlZENvZGVCbG9jay5oIgorCituYW1l
c3BhY2UgSlNDIHsKKworaW5saW5lIE9wY29kZUlEIEludGVycHJldGVyOjpnZXRPcGNvZGVJRChj
b25zdCBJbnN0cnVjdGlvbiYgaW5zdHJ1Y3Rpb24pCit7CisgICAgcmV0dXJuIGdldE9wY29kZUlE
KGluc3RydWN0aW9uLnUub3Bjb2RlKTsKK30KKworaW5saW5lIE9wY29kZUlEIEludGVycHJldGVy
OjpnZXRPcGNvZGVJRChjb25zdCBVbmxpbmtlZEluc3RydWN0aW9uJiBpbnN0cnVjdGlvbikKK3sK
KyAgICByZXR1cm4gaW5zdHJ1Y3Rpb24udS5vcGNvZGU7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpT
QwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCmluZGV4IGYyN2QzOWE2ZWE4ZDk0M2I0YmU4NjJj
ZGQwY2RiN2VhZWQ1YTEzNDcuLjY5OTE0MjQyZTY2NDMwZmU4YWUxZmI3N2I1ODlmNjlmODdjMDdj
NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKQEAgLTIzNSw4ICsyMzUsNiBAQCB2b2lk
IEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9PUChvcF9nZXRf
cmVzdF9sZW5ndGgpCiAgICAgICAgIERFRklORV9PUChvcF9jaGVja190ZHopCiAgICAgICAgIERF
RklORV9PUChvcF9hc3NlcnQpCi0gICAgICAgIERFRklORV9PUChvcF9zYXZlKQotICAgICAgICBE
RUZJTkVfT1Aob3BfcmVzdW1lKQogICAgICAgICBERUZJTkVfT1Aob3BfZGVidWcpCiAgICAgICAg
IERFRklORV9PUChvcF9kZWxfYnlfaWQpCiAgICAgICAgIERFRklORV9PUChvcF9kZWxfYnlfdmFs
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklULmgKaW5kZXggNzMxMWRmYTE2YjlhNGQ4ZjljMTc1Y2VkZWQ3
Mzc1OWUyYjJjYjEzYy4uMTMwMjdjZWRmNGQwNmMzN2FmM2MzMmI5NDNmMWI0YWI1Y2NiNzBlYSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCkBAIC01MDEsOCArNTAxLDYgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9nZXRfcmVzdF9sZW5ndGgoSW5zdHJ1Y3Rpb24qKTsK
ICAgICAgICAgdm9pZCBlbWl0X29wX2NoZWNrX3RkeihJbnN0cnVjdGlvbiopOwogICAgICAgICB2
b2lkIGVtaXRfb3BfYXNzZXJ0KEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9z
YXZlKEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9yZXN1bWUoSW5zdHJ1Y3Rp
b24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2RlYnVnKEluc3RydWN0aW9uKik7CiAgICAgICAg
IHZvaWQgZW1pdF9vcF9kZWxfYnlfaWQoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0
X29wX2RlbF9ieV92YWwoSW5zdHJ1Y3Rpb24qKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wY29kZXMuY3BwCmluZGV4IGQ1NTc3OGQyNTg2ZmExN2NmNDU0ZjMwMjQ1ZjQ3MzI3ZDA2MTU5
MmEuLjI4MTNlY2IxYzA3YmFjNWFmY2RlM2M3ODk3NWEwN2ZmYzc0MTM0NDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcApAQCAtMTQ4NiwxOCArMTQ4Niw2IEBAIHZv
aWQgSklUOjplbWl0X29wX2dldF9yZXN0X2xlbmd0aChJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogI2VuZGlmCiB9CiAKLXZvaWQgSklUOjplbWl0X29wX3NhdmUoSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKLXsKLSAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxs
KHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX3NhdmUpOwotICAgIHNsb3dQYXRo
Q2FsbC5jYWxsKCk7Ci19Ci0KLXZvaWQgSklUOjplbWl0X29wX3Jlc3VtZShJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQotewotICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwo
dGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfcmVzdW1lKTsKLSAgICBzbG93UGF0
aENhbGwuY2FsbCgpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEVOQUJM
RShKSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlci5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlci5hc20KaW5kZXggMDE5OTMxNTQ1OGVhMTUyMzE4ODcxMWNiYTgyYTY4YzMzM2Y3YTYz
Yy4uNmM2MGFiY2E2ODdlYmI5NWEwMDMxOTExNzMyODNiMWYwZTU2NmZlYSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQpAQCAt
MTY1MSwxNSArMTY1MSwxMSBAQCBfbGxpbnRfb3BfYXNzZXJ0OgogCiAKIF9sbGludF9vcF9zYXZl
OgotICAgIHRyYWNlRXhlY3V0aW9uKCkKLSAgICBjYWxsT3Bjb2RlU2xvd1BhdGgoX3Nsb3dfcGF0
aF9zYXZlKQotICAgIGRpc3BhdGNoKDQpCisgICAgbm90U3VwcG9ydGVkKCkKIAogCiBfbGxpbnRf
b3BfcmVzdW1lOgotICAgIHRyYWNlRXhlY3V0aW9uKCkKLSAgICBjYWxsT3Bjb2RlU2xvd1BhdGgo
X3Nsb3dfcGF0aF9yZXN1bWUpCi0gICAgZGlzcGF0Y2goMykKKyAgICBub3RTdXBwb3J0ZWQoKQog
CiAKIF9sbGludF9vcF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudDoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAppbmRleCA0ZWVhZTE0ODAwNDY1MzZjZjIyOGUwZDc4Mjg2
YzhmNTRmOTE5NmIyLi43NTZmMTJlZDI1NTE1N2RlZmJlZjYxNTA5ZjQ3Yjk5MTY0NmY4MGVmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCkBAIC0yNTYsNyArMjU2LDcg
QEAgU3RyaW5nIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUlubmVyKGNvbnN0IElkZW50aWZpZXIm
IGNhbGxlZU5hbWUsIFNvdXJjZVBhcnNlTW8KICAgICBpZiAobV9sZXhlci0+aXNSZXBhcnNpbmdG
dW5jdGlvbigpKSB7CiAgICAgICAgIFBhcnNlckZ1bmN0aW9uSW5mbzxBU1RCdWlsZGVyPiBmdW5j
dGlvbkluZm87CiAgICAgICAgIGlmIChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5l
cmF0b3JCb2R5TW9kZSkKLSAgICAgICAgICAgIG1fcGFyYW1ldGVycyA9IGNyZWF0ZUdlbmVyYXRv
clBhcmFtZXRlcnMoY29udGV4dCk7CisgICAgICAgICAgICBtX3BhcmFtZXRlcnMgPSBjcmVhdGVH
ZW5lcmF0b3JQYXJhbWV0ZXJzKGNvbnRleHQsIGZ1bmN0aW9uSW5mby5wYXJhbWV0ZXJDb3VudCk7
CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG1fcGFyYW1ldGVycyA9IHBhcnNlRnVuY3Rpb25Q
YXJhbWV0ZXJzKGNvbnRleHQsIHBhcnNlTW9kZSwgZnVuY3Rpb25JbmZvKTsKIApAQCAtNTA3LDEw
ICs1MDcsOSBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTb3VyY2VFbGVtZW50
cyBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VHZW5lcmF0bwogCiAgICAgUGFyc2VyRnVuY3Rpb25J
bmZvPFRyZWVCdWlsZGVyPiBpbmZvOwogICAgIGluZm8ubmFtZSA9ICZtX3ZtLT5wcm9wZXJ0eU5h
bWVzLT5udWxsSWRlbnRpZmllcjsKLSAgICBjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKGNvbnRl
eHQpOworICAgIGNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMoY29udGV4dCwgaW5mby5wYXJhbWV0
ZXJDb3VudCk7CiAgICAgaW5mby5zdGFydE9mZnNldCA9IHBhcmFtZXRlcnNTdGFydDsKICAgICBp
bmZvLnN0YXJ0TGluZSA9IHRva2VuTGluZSgpOwotICAgIGluZm8ucGFyYW1ldGVyQ291bnQgPSA0
OyAvLyBnZW5lcmF0b3IsIHN0YXRlLCB2YWx1ZSwgcmVzdW1lIG1vZGUKIAogICAgIHsKICAgICAg
ICAgQXV0b1BvcFNjb3BlUmVmIGdlbmVyYXRvckJvZHlTY29wZSh0aGlzLCBwdXNoU2NvcGUoKSk7
CkBAIC0xOTAxLDMyICsxOTAwLDMwIEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+IHRl
bXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlciwgY2xhc3MgRnVuY3Rpb25JbmZvVHlwCiB9CiAKIHRl
bXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+Ci10ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+
IHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpGb3JtYWxQYXJhbWV0ZXJMaXN0IFBhcnNlcjxMZXhlclR5
cGU+OjpjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKFRyZWVCdWlsZGVyJiBjb250ZXh0KQordGVt
cGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6Rm9ybWFsUGFy
YW1ldGVyTGlzdCBQYXJzZXI8TGV4ZXJUeXBlPjo6Y3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhU
cmVlQnVpbGRlciYgY29udGV4dCwgdW5zaWduZWQmIHBhcmFtZXRlckNvdW50KQogewogICAgIGF1
dG8gcGFyYW1ldGVycyA9IGNvbnRleHQuY3JlYXRlRm9ybWFsUGFyYW1ldGVyTGlzdCgpOwogCiAg
ICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CiAgICAgSlNUZXh0
UG9zaXRpb24gcG9zaXRpb24gPSB0b2tlblN0YXJ0UG9zaXRpb24oKTsKIAotICAgIC8vIEBnZW5l
cmF0b3IKLSAgICBkZWNsYXJlUGFyYW1ldGVyKCZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5idWlsdGlu
TmFtZXMoKS5nZW5lcmF0b3JQcml2YXRlTmFtZSgpKTsKLSAgICBhdXRvIGdlbmVyYXRvciA9IGNv
bnRleHQuY3JlYXRlQmluZGluZ0xvY2F0aW9uKGxvY2F0aW9uLCBtX3ZtLT5wcm9wZXJ0eU5hbWVz
LT5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JQcml2YXRlTmFtZSgpLCBwb3NpdGlvbiwgcG9zaXRp
b24sIEFzc2lnbm1lbnRDb250ZXh0OjpEZWNsYXJhdGlvblN0YXRlbWVudCk7Ci0gICAgY29udGV4
dC5hcHBlbmRQYXJhbWV0ZXIocGFyYW1ldGVycywgZ2VuZXJhdG9yLCAwKTsKKyAgICBhdXRvIGFk
ZFBhcmFtZXRlciA9IFsmXShjb25zdCBJZGVudGlmaWVyJiBuYW1lKSB7CisgICAgICAgIGRlY2xh
cmVQYXJhbWV0ZXIoJm5hbWUpOworICAgICAgICBhdXRvIGJpbmRpbmcgPSBjb250ZXh0LmNyZWF0
ZUJpbmRpbmdMb2NhdGlvbihsb2NhdGlvbiwgbmFtZSwgcG9zaXRpb24sIHBvc2l0aW9uLCBBc3Np
Z25tZW50Q29udGV4dDo6RGVjbGFyYXRpb25TdGF0ZW1lbnQpOworICAgICAgICBjb250ZXh0LmFw
cGVuZFBhcmFtZXRlcihwYXJhbWV0ZXJzLCBiaW5kaW5nLCAwKTsKKyAgICAgICAgKytwYXJhbWV0
ZXJDb3VudDsKKyAgICB9OwogCisgICAgLy8gQGdlbmVyYXRvcgorICAgIGFkZFBhcmFtZXRlciht
X3ZtLT5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JQcml2YXRlTmFtZSgp
KTsKICAgICAvLyBAZ2VuZXJhdG9yU3RhdGUKLSAgICBkZWNsYXJlUGFyYW1ldGVyKCZtX3ZtLT5w
cm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JTdGF0ZVByaXZhdGVOYW1lKCkp
OwotICAgIGF1dG8gZ2VuZXJhdG9yU3RhdGUgPSBjb250ZXh0LmNyZWF0ZUJpbmRpbmdMb2NhdGlv
bihsb2NhdGlvbiwgbV92bS0+cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9y
U3RhdGVQcml2YXRlTmFtZSgpLCBwb3NpdGlvbiwgcG9zaXRpb24sIEFzc2lnbm1lbnRDb250ZXh0
OjpEZWNsYXJhdGlvblN0YXRlbWVudCk7Ci0gICAgY29udGV4dC5hcHBlbmRQYXJhbWV0ZXIocGFy
YW1ldGVycywgZ2VuZXJhdG9yU3RhdGUsIDApOwotCisgICAgYWRkUGFyYW1ldGVyKG1fdm0tPnBy
b3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclN0YXRlUHJpdmF0ZU5hbWUoKSk7
CiAgICAgLy8gQGdlbmVyYXRvclZhbHVlCi0gICAgZGVjbGFyZVBhcmFtZXRlcigmbV92bS0+cHJv
cGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yVmFsdWVQcml2YXRlTmFtZSgpKTsK
LSAgICBhdXRvIGdlbmVyYXRvclZhbHVlID0gY29udGV4dC5jcmVhdGVCaW5kaW5nTG9jYXRpb24o
bG9jYXRpb24sIG1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclZh
bHVlUHJpdmF0ZU5hbWUoKSwgcG9zaXRpb24sIHBvc2l0aW9uLCBBc3NpZ25tZW50Q29udGV4dDo6
RGVjbGFyYXRpb25TdGF0ZW1lbnQpOwotICAgIGNvbnRleHQuYXBwZW5kUGFyYW1ldGVyKHBhcmFt
ZXRlcnMsIGdlbmVyYXRvclZhbHVlLCAwKTsKLQorICAgIGFkZFBhcmFtZXRlcihtX3ZtLT5wcm9w
ZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JWYWx1ZVByaXZhdGVOYW1lKCkpOwog
ICAgIC8vIEBnZW5lcmF0b3JSZXN1bWVNb2RlCi0gICAgZGVjbGFyZVBhcmFtZXRlcigmbV92bS0+
cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yUmVzdW1lTW9kZVByaXZhdGVO
YW1lKCkpOwotICAgIGF1dG8gZ2VuZXJhdG9yUmVzdW1lTW9kZSA9IGNvbnRleHQuY3JlYXRlQmlu
ZGluZ0xvY2F0aW9uKGxvY2F0aW9uLCBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMo
KS5nZW5lcmF0b3JSZXN1bWVNb2RlUHJpdmF0ZU5hbWUoKSwgcG9zaXRpb24sIHBvc2l0aW9uLCBB
c3NpZ25tZW50Q29udGV4dDo6RGVjbGFyYXRpb25TdGF0ZW1lbnQpOwotICAgIGNvbnRleHQuYXBw
ZW5kUGFyYW1ldGVyKHBhcmFtZXRlcnMsIGdlbmVyYXRvclJlc3VtZU1vZGUsIDApOworICAgIGFk
ZFBhcmFtZXRlcihtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JS
ZXN1bWVNb2RlUHJpdmF0ZU5hbWUoKSk7CisgICAgLy8gQGdlbmVyYXRvckZyYW1lCisgICAgYWRk
UGFyYW1ldGVyKG1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvckZy
YW1lUHJpdmF0ZU5hbWUoKSk7CiAKICAgICByZXR1cm4gcGFyYW1ldGVyczsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCmluZGV4IDI1Y2VjOTVhNzYxY2NkOGMyNjMzODM3MzBl
YjA0ZTE1Njk3MjBiYTIuLmRlZDYyNGY2MTdmYjZkMjRkMDBiZjFhYzQ2YzQ1YzIyZDk5YjcyMWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaApAQCAtMTQ1MSw3ICsxNDUxLDcg
QEAgY2xhc3MgUGFyc2VyIHsKICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNBcnJvd0Z1bmN0aW9u
UGFyYW1ldGVycygpOwogICAgIAogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlciwgY2xh
c3MgRnVuY3Rpb25JbmZvVHlwZT4gTkVWRVJfSU5MSU5FIHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpG
b3JtYWxQYXJhbWV0ZXJMaXN0IHBhcnNlRnVuY3Rpb25QYXJhbWV0ZXJzKFRyZWVCdWlsZGVyJiwg
U291cmNlUGFyc2VNb2RlLCBGdW5jdGlvbkluZm9UeXBlJik7Ci0gICAgdGVtcGxhdGUgPGNsYXNz
IFRyZWVCdWlsZGVyPiBORVZFUl9JTkxJTkUgdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkZvcm1hbFBh
cmFtZXRlckxpc3QgY3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhUcmVlQnVpbGRlciYpOworICAg
IHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gTkVWRVJfSU5MSU5FIHR5cGVuYW1lIFRyZWVC
dWlsZGVyOjpGb3JtYWxQYXJhbWV0ZXJMaXN0IGNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMoVHJl
ZUJ1aWxkZXImLCB1bnNpZ25lZCYgcGFyYW1ldGVyQ291bnQpOwogCiAgICAgdGVtcGxhdGUgPGNs
YXNzIFRyZWVCdWlsZGVyPiBORVZFUl9JTkxJTkUgVHJlZUNsYXNzRXhwcmVzc2lvbiBwYXJzZUNs
YXNzKFRyZWVCdWlsZGVyJiwgRnVuY3Rpb25SZXF1aXJlbWVudHMsIFBhcnNlckNsYXNzSW5mbzxU
cmVlQnVpbGRlcj4mKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29tbW9uU2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bW1vblNsb3dQYXRocy5jcHAKaW5kZXggMDA2MTI0NWM1YjUyZDI1ZmQ1YzM1NGZhYmU2YzViNzZj
OTEwOTQyMy4uYjhkOTc4MDM5MmRhZWY3OWZlMjE0YjBkMmM3YTYzYzIzM2U5YWI0MyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCkBA
IC0zNiw3ICszNiw2IEBACiAjaW5jbHVkZSAiRXJyb3IuaCIKICNpbmNsdWRlICJFcnJvckhhbmRs
aW5nU2NvcGUuaCIKICNpbmNsdWRlICJFeGNlcHRpb25GdXp6LmgiCi0jaW5jbHVkZSAiR2VuZXJh
dG9yRnJhbWUuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJIb3N0Q2Fs
bFJldHVyblZhbHVlLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKQEAgLTcxNCwzOCArNzEz
LDYgQEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2Fzc2VydCkKICAgICBFTkQoKTsKIH0KIAot
U0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3NhdmUpCi17Ci0gICAgLy8gT25seSBzYXZlIHZhcmlh
YmxlcyBhbmQgdGVtcG9yYXJ5IHJlZ2lzdGVycy4gVGhlIHNjb3BlIHJlZ2lzdGVycyBhcmUgaW5j
bHVkZWQgaW4gdGhlbS4KLSAgICAvLyBCdXQgcGFyYW1ldGVycyBhcmUgbm90IGluY2x1ZGVkLiBC
ZWNhdXNlIHRoZSBnZW5lcmF0b3IgaW1wbGVtZW50YXRpb24gcmVwbGFjZXMgdGhlIHZhbHVlcyBv
ZiBwYXJhbWV0ZXJzIG9uIGVhY2ggZ2VuZXJhdG9yLm5leHQoKSBjYWxsLgotICAgIEJFR0lOKCk7
Ci0gICAgSlNWYWx1ZSBnZW5lcmF0b3IgPSBPUCgxKS5qc1ZhbHVlKCk7Ci0gICAgR2VuZXJhdG9y
RnJhbWUqIGZyYW1lID0gbnVsbHB0cjsKLSAgICBKU1ZhbHVlIHZhbHVlID0gZ2VuZXJhdG9yLmdl
dChleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yRnJh
bWVQcml2YXRlTmFtZSgpKTsKLSAgICBpZiAoIXZhbHVlLmlzTnVsbCgpKQotICAgICAgICBmcmFt
ZSA9IGpzQ2FzdDxHZW5lcmF0b3JGcmFtZSo+KHZhbHVlKTsKLSAgICBlbHNlIHsKLSAgICAgICAg
Ly8gRklYTUU6IE9uY2UgSlNHZW5lcmF0b3Igc3BlY2lhbGl6ZWQgb2JqZWN0IGlzIGludHJvZHVj
ZWQsIHRoaXMgR2VuZXJhdG9yRnJhbWUgc2hvdWxkIGJlIGVtYmVkZWQgaW50byBpdCB0byBhdm9p
ZCBhbGxvY2F0aW9ucy4KLSAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE1MTU0NQotICAgICAgICBmcmFtZSA9IEdlbmVyYXRvckZyYW1lOjpjcmVhdGUo
ZXhlYy0+dm0oKSwgIGV4ZWMtPmNvZGVCbG9jaygpLT5udW1DYWxsZWVMb2NhbHMoKSk7Ci0gICAg
ICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGdlbmVyYXRvciwgdHJ1ZSwgUHV0UHJvcGVydHlTbG90
OjpQdXRCeUlkKTsKLSAgICAgICAgYXNPYmplY3QoZ2VuZXJhdG9yKS0+bWV0aG9kVGFibGUoZXhl
Yy0+dm0oKSktPnB1dChhc09iamVjdChnZW5lcmF0b3IpLCBleGVjLCBleGVjLT5wcm9wZXJ0eU5h
bWVzKCkuYnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yRnJhbWVQcml2YXRlTmFtZSgpLCBmcmFtZSwg
c2xvdCk7Ci0gICAgfQotICAgIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9IHBjWzJd
LnUudW5zaWduZWRWYWx1ZTsKLSAgICBmcmFtZS0+c2F2ZShleGVjLCBleGVjLT5jb2RlQmxvY2so
KS0+bGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQobGl2ZUNhbGxlZUxvY2Fsc0luZGV4KSk7Ci0gICAg
RU5EKCk7Ci19Ci0KLVNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9yZXN1bWUpCi17Ci0gICAgQkVH
SU4oKTsKLSAgICBKU1ZhbHVlIGdlbmVyYXRvciA9IE9QKDEpLmpzVmFsdWUoKTsKLSAgICBHZW5l
cmF0b3JGcmFtZSogZnJhbWUgPSBqc0Nhc3Q8R2VuZXJhdG9yRnJhbWUqPihnZW5lcmF0b3IuZ2V0
KGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JGcmFt
ZVByaXZhdGVOYW1lKCkpKTsKLSAgICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSBw
Y1syXS51LnVuc2lnbmVkVmFsdWU7Ci0gICAgZnJhbWUtPnJlc3VtZShleGVjLCBleGVjLT5jb2Rl
QmxvY2soKS0+bGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQobGl2ZUNhbGxlZUxvY2Fsc0luZGV4KSk7
Ci0gICAgRU5EKCk7Ci19Ci0KIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9jcmVhdGVfbGV4aWNh
bF9lbnZpcm9ubWVudCkKIHsKICAgICBCRUdJTigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAppbmRleCBlYmM5MTMwNmY4M2E4MWI3YWEyZWUw
ZTNiM2ZiZTI5MjdlOWZhZDYyLi43NTM0ZjU2NTNhZjJlY2U0MTgyMWQwNTFkZTY5ODE0MzE4NmQy
NDU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93
UGF0aHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0
aHMuaApAQCAtMjQ1LDggKzI0NSw2IEBAIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhf
bmV4dF9nZW5lcmljX2VudW1lcmF0b3JfcG5hbWUpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNs
b3dfcGF0aF90b19pbmRleF9zdHJpbmcpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0
aF9wcm9maWxlX3R5cGVfY2xlYXJfbG9nKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3Bh
dGhfYXNzZXJ0KTsKLVNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfc2F2ZSk7Ci1TTE9X
X1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3Jlc3VtZSk7CiBTTE9XX1BBVEhfSElEREVOX0RF
Q0woc2xvd19wYXRoX2NyZWF0ZV9sZXhpY2FsX2Vudmlyb25tZW50KTsKIFNMT1dfUEFUSF9ISURE
RU5fREVDTChzbG93X3BhdGhfcHVzaF93aXRoX3Njb3BlKTsKIFNMT1dfUEFUSF9ISURERU5fREVD
TChzbG93X3BhdGhfcmVzb2x2ZV9zY29wZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9HZW5lcmF0b3JGcmFtZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9HZW5lcmF0b3JGcmFtZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGVmNmVhN2ExMDAyNThjM2VjZTA0ZGFhYjQzYmRhYTg1MWVjOGY3MTUuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvR2VuZXJhdG9yRnJhbWUuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsOTcgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiR2VuZXJh
dG9yRnJhbWUuaCIKLQotI2luY2x1ZGUgIkNvZGVCbG9jay5oIgotI2luY2x1ZGUgIkhlYXBJdGVy
YXRpb25TY29wZS5oIgotI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCi0jaW5jbHVkZSAi
SlNDZWxsSW5saW5lcy5oIgotI2luY2x1ZGUgIlNsb3RWaXNpdG9ySW5saW5lcy5oIgotI2luY2x1
ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKLQotbmFtZXNwYWNlIEpTQyB7Ci0KLWNvbnN0IENsYXNz
SW5mbyBHZW5lcmF0b3JGcmFtZTo6c19pbmZvID0geyAiR2VuZXJhdG9yRnJhbWUiLCBudWxscHRy
LCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEdlbmVyYXRvckZyYW1lKSB9OwotCi1HZW5l
cmF0b3JGcmFtZTo6R2VuZXJhdG9yRnJhbWUoVk0mIHZtLCBzaXplX3QgbnVtYmVyT2ZDYWxsZWVM
b2NhbHMpCi0gICAgOiBCYXNlKHZtLCB2bS5nZW5lcmF0b3JGcmFtZVN0cnVjdHVyZS5nZXQoKSkK
LSAgICAsIG1fbnVtYmVyT2ZDYWxsZWVMb2NhbHMobnVtYmVyT2ZDYWxsZWVMb2NhbHMpCi17Ci19
Ci0KLXZvaWQgR2VuZXJhdG9yRnJhbWU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKLXsKLSAgICBC
YXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX251
bWJlck9mQ2FsbGVlTG9jYWxzOyArK2kpCi0gICAgICAgIGxvY2FsQXQoaSkuY2xlYXIoKTsKLX0K
LQotU3RydWN0dXJlKiBHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCi17Ci0gICAgcmV0
dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUlu
Zm8oQ2VsbFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKLX0KLQotR2VuZXJhdG9yRnJh
bWUqIEdlbmVyYXRvckZyYW1lOjpjcmVhdGUoVk0mIHZtLCBzaXplX3QgbnVtYmVyT2ZMb2NhbHMp
Ci17Ci0gICAgR2VuZXJhdG9yRnJhbWUqIHJlc3VsdCA9Ci0gICAgICAgIG5ldyAoCi0gICAgICAg
ICAgICBOb3ROdWxsLAotICAgICAgICAgICAgYWxsb2NhdGVDZWxsPEdlbmVyYXRvckZyYW1lPih2
bS5oZWFwLCBhbGxvY2F0aW9uU2l6ZUZvckxvY2FscyhudW1iZXJPZkxvY2FscykpKQotICAgICAg
ICBHZW5lcmF0b3JGcmFtZSh2bSwgbnVtYmVyT2ZMb2NhbHMpOwotICAgIHJlc3VsdC0+ZmluaXNo
Q3JlYXRpb24odm0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLXZvaWQgR2VuZXJhdG9yRnJh
bWU6OnNhdmUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlQ2FsbGVl
TG9jYWxzKQotewotICAgIC8vIE9ubHkgc2F2ZSBjYWxsZWUgbG9jYWxzLgotICAgIC8vIEV2ZXJ5
IHRpbWUgYSBnZW5lcmF0b3IgaXMgY2FsbGVkIChvciByZXN1bWVkKSwgcGFyYW1ldGVycyBzaG91
bGQgYmUgcmVwbGFjZWQuCi0gICAgQVNTRVJUKGxpdmVDYWxsZWVMb2NhbHMubnVtQml0cygpIDw9
IG1fbnVtYmVyT2ZDYWxsZWVMb2NhbHMpOwotICAgIGxpdmVDYWxsZWVMb2NhbHMuZm9yRWFjaFNl
dEJpdChbJl0oc2l6ZV90IGluZGV4KSB7Ci0gICAgICAgIGxvY2FsQXQoaW5kZXgpLnNldChleGVj
LT52bSgpLCB0aGlzLCBleGVjLT51bmNoZWNrZWRSKHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGlu
ZGV4KSkuanNWYWx1ZSgpKTsKLSAgICB9KTsKLX0KLQotdm9pZCBHZW5lcmF0b3JGcmFtZTo6cmVz
dW1lKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZUNhbGxlZUxvY2Fs
cykKLXsKLSAgICAvLyBPbmx5IHJlc3VtZSBjYWxsZWUgbG9jYWxzLgotICAgIC8vIEV2ZXJ5IHRp
bWUgYSBnZW5lcmF0b3IgaXMgY2FsbGVkIChvciByZXN1bWVkKSwgcGFyYW1ldGVycyBzaG91bGQg
YmUgcmVwbGFjZWQuCi0gICAgbGl2ZUNhbGxlZUxvY2Fscy5mb3JFYWNoU2V0Qml0KFsmXShzaXpl
X3QgaW5kZXgpIHsKLSAgICAgICAgZXhlYy0+dW5jaGVja2VkUih2aXJ0dWFsUmVnaXN0ZXJGb3JM
b2NhbChpbmRleCkpID0gbG9jYWxBdChpbmRleCkuZ2V0KCk7Ci0gICAgICAgIGxvY2FsQXQoaW5k
ZXgpLmNsZWFyKCk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgR2VuZXJhdG9yRnJhbWU6OnZpc2l0Q2hp
bGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKLXsKLSAgICBHZW5lcmF0
b3JGcmFtZSogdGhpc09iamVjdCA9IGpzQ2FzdDxHZW5lcmF0b3JGcmFtZSo+KGNlbGwpOwotICAg
IEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7Ci0gICAgLy8gU2luY2Ug
b25seSB0cnVlIGNlbGwgcG9pbnRlcnMgYXJlIHN0b3JlZCBhcyBhIGNlbGwsIHdlIGNhbiBzYWZl
bHkgbWFyayB0aGVtLgotICAgIHZpc2l0b3IuYXBwZW5kVmFsdWVzKHRoaXNPYmplY3QtPmxvY2Fs
cygpLCB0aGlzT2JqZWN0LT5tX251bWJlck9mQ2FsbGVlTG9jYWxzKTsKLX0KLQotfSAvLyBuYW1l
c3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5l
cmF0b3JGcmFtZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJh
bWUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2Q1NDViMTQ3ZGQ0YWJmYjJiYmI5
YjVhNzE5NGU4Zjc0ODQxYzQ5YS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGcmFtZS5o
CisrKyAvZGV2L251bGwKQEAgLTEsOTAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
NSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZu
ZGVmIEdlbmVyYXRvckZyYW1lX2gKLSNkZWZpbmUgR2VuZXJhdG9yRnJhbWVfaAotCi0jaW5jbHVk
ZSAiSlNDZWxsLmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RCaXRWZWN0b3IuaD4KLQotbmFtZXNwYWNl
IEpTQyB7Ci0KLWNsYXNzIEdlbmVyYXRvckZyYW1lIDogcHVibGljIEpTQ2VsbCB7Ci0gICAgZnJp
ZW5kIGNsYXNzIEpJVDsKLSNpZiBFTkFCTEUoREZHX0pJVCkKLSAgICBmcmllbmQgY2xhc3MgREZH
OjpTcGVjdWxhdGl2ZUpJVDsKLSAgICBmcmllbmQgY2xhc3MgREZHOjpKSVRDb21waWxlcjsKLSNl
bmRpZgotICAgIGZyaWVuZCBjbGFzcyBWTTsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIEpTQ2VsbCBC
YXNlOwotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IFN0cnVjdHVy
ZUlzSW1tb3J0YWwgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKLQotICAgIERFQ0xBUkVfRVhQT1JU
X0lORk87Ci0KLSAgICBzdGF0aWMgR2VuZXJhdG9yRnJhbWUqIGNyZWF0ZShWTSYsIHNpemVfdCBu
dW1iZXJPZkNhbGxlZUxvY2Fscyk7Ci0KLSAgICBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiBs
b2NhbHMoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxXcml0ZUJhcnJpZXJC
YXNlPFVua25vd24+Kj4oYml0d2lzZV9jYXN0PGNoYXIqPih0aGlzKSArIG9mZnNldE9mTG9jYWxz
KCkpOwotICAgIH0KLQotICAgIFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4mIGxvY2FsQXQoc2l6
ZV90IGluZGV4KQotICAgIHsKLSAgICAgICAgQVNTRVJUKGluZGV4IDwgbV9udW1iZXJPZkNhbGxl
ZUxvY2Fscyk7Ci0gICAgICAgIHJldHVybiBsb2NhbHMoKVtpbmRleF07Ci0gICAgfQotCi0gICAg
c3RhdGljIHNpemVfdCBvZmZzZXRPZkxvY2FscygpCi0gICAgewotICAgICAgICByZXR1cm4gV1RG
Ojpyb3VuZFVwVG9NdWx0aXBsZU9mPHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pPihzaXpl
b2YoR2VuZXJhdG9yRnJhbWUpKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgc2l6ZV90IGFsbG9jYXRp
b25TaXplRm9yTG9jYWxzKHVuc2lnbmVkIG51bWJlck9mTG9jYWxzKQotICAgIHsKLSAgICAgICAg
cmV0dXJuIG9mZnNldE9mTG9jYWxzKCkgKyBudW1iZXJPZkxvY2FscyAqIHNpemVvZihXcml0ZUJh
cnJpZXI8VW5rbm93bj4pOwotICAgIH0KLQotICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0
cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBwcm90b3R5cGUpOwotCi0gICAg
dm9pZCBzYXZlKEV4ZWNTdGF0ZSosIGNvbnN0IEZhc3RCaXRWZWN0b3ImIGxpdmVDYWxsZWVMb2Nh
bHMpOwotICAgIHZvaWQgcmVzdW1lKEV4ZWNTdGF0ZSosIGNvbnN0IEZhc3RCaXRWZWN0b3ImIGxp
dmVDYWxsZWVMb2NhbHMpOwotCi1wcml2YXRlOgotICAgIEdlbmVyYXRvckZyYW1lKFZNJiwgc2l6
ZV90IG51bWJlck9mQ2FsbGVlTG9jYWxzKTsKLQotICAgIHNpemVfdCBtX251bWJlck9mQ2FsbGVl
TG9jYWxzOwotCi0gICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKLQotICAg
IHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKLQotcHJvdGVjdGVkOgotICAgIHN0YXRpYyB2b2lk
IHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKLX07Ci0KLX0gLy8gbmFtZXNw
YWNlIEpTQwotCi0jZW5kaWYgLy8gR2VuZXJhdG9yRnJhbWVfaApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVk0uY3BwCmluZGV4IDFiZGRjZWVkZDA5MGNhMDlkZDUxY2EwNzk2YTA0ZGZkODZiZTQ0
MmMuLjVmMzFiOTc4NWU2NmFjZTZiOThiYjY1MmNkMjE3MjNkMjE1ZmE5MjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9WTS5jcHAKQEAgLTQ2LDcgKzQ2LDYgQEAKICNpbmNsdWRlICJGVExU
aHVua3MuaCIKICNpbmNsdWRlICJGdW5jdGlvbkNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiR0NB
Y3Rpdml0eUNhbGxiYWNrLmgiCi0jaW5jbHVkZSAiR2VuZXJhdG9yRnJhbWUuaCIKICNpbmNsdWRl
ICJHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJIZWFwLmgiCiAjaW5jbHVkZSAiSGVhcEl0ZXJh
dGlvblNjb3BlLmgiCkBAIC0yNDAsNyArMjM5LDYgQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhl
YXBUeXBlIGhlYXBUeXBlKQogICAgIGluZmVycmVkVHlwZVN0cnVjdHVyZS5zZXQoKnRoaXMsIElu
ZmVycmVkVHlwZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIGlu
ZmVycmVkVHlwZVRhYmxlU3RydWN0dXJlLnNldCgqdGhpcywgSW5mZXJyZWRUeXBlVGFibGU6OmNy
ZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICBmdW5jdGlvblJhcmVEYXRh
U3RydWN0dXJlLnNldCgqdGhpcywgRnVuY3Rpb25SYXJlRGF0YTo6Y3JlYXRlU3RydWN0dXJlKCp0
aGlzLCAwLCBqc051bGwoKSkpOwotICAgIGdlbmVyYXRvckZyYW1lU3RydWN0dXJlLnNldCgqdGhp
cywgR2VuZXJhdG9yRnJhbWU6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsK
ICAgICBleGNlcHRpb25TdHJ1Y3R1cmUuc2V0KCp0aGlzLCBFeGNlcHRpb246OmNyZWF0ZVN0cnVj
dHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICBwcm9taXNlRGVmZXJyZWRTdHJ1Y3R1cmUu
c2V0KCp0aGlzLCBKU1Byb21pc2VEZWZlcnJlZDo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBq
c051bGwoKSkpOwogICAgIGludGVybmFsUHJvbWlzZURlZmVycmVkU3RydWN0dXJlLnNldCgqdGhp
cywgSlNJbnRlcm5hbFByb21pc2VEZWZlcnJlZDo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBq
c051bGwoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0u
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKaW5kZXggZjBkZTE1MTM1YTkw
Nzg3OGI0N2ExZDM0MzRmNjgyOTFjYjVkYzczZS4uNGZmOWVkZDBhNzc0NmMyOWU1ZTY3YzM4MWZj
ZTNiMjA3NDc5OTU0OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk0uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCkBAIC0zMTYsNyAr
MzE2LDYgQEAgY2xhc3MgVk0gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Vk0+IHsKICAg
ICBTdHJvbmc8U3RydWN0dXJlPiBpbmZlcnJlZFR5cGVTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0
cnVjdHVyZT4gaW5mZXJyZWRUeXBlVGFibGVTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVy
ZT4gZnVuY3Rpb25SYXJlRGF0YVN0cnVjdHVyZTsKLSAgICBTdHJvbmc8U3RydWN0dXJlPiBnZW5l
cmF0b3JGcmFtZVN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBleGNlcHRpb25TdHJ1
Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gcHJvbWlzZURlZmVycmVkU3RydWN0dXJlOwog
ICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGludGVybmFsUHJvbWlzZURlZmVycmVkU3RydWN0dXJlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3It
ZmliLWZ0bC1hbmQtYXJyYXkuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNz
L2dlbmVyYXRvci1maWItZnRsLWFuZC1hcnJheS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZTkzOTgxMmZkYmFl
YzZiODMyYmZkMDBmMjE1M2RlZjg0YmI3NTkyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQtYXJyYXkuanMK
QEAgLTAsMCArMSwyMyBAQAorKGZ1bmN0aW9uICgpIHsKKyAgICBmdW5jdGlvbiAqZmliKCkKKyAg
ICB7CisgICAgICAgIGxldCBhID0gMTsKKyAgICAgICAgbGV0IGIgPSAxOworICAgICAgICBsZXQg
YyA9IFsgMCBdOworICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAgY1swXSA9IGE7
CisgICAgICAgICAgICB5aWVsZCBjOworICAgICAgICAgICAgW2EsIGJdID0gW2IsIGEgKyBiXTsK
KyAgICAgICAgfQorICAgIH0KKworICAgIGxldCB2YWx1ZSA9IDA7CisgICAgZm9yIChsZXQgaSA9
IDA7IGkgPCAxZTQ7ICsraSkgeworICAgICAgICBsZXQgZiA9IGZpYigpOworICAgICAgICBmb3Ig
KGxldCBpID0gMDsgaSA8IDEwMDsgKytpKSB7CisgICAgICAgICAgICB2YWx1ZSA9IGYubmV4dCgp
LnZhbHVlOworICAgICAgICB9CisgICAgICAgIGlmICh2YWx1ZVswXSAhPT0gMzU0MjI0ODQ4MTc5
MjYyMDAwMDAwKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgdmFsdWU6JHtyZXN1
bHR9YCk7CisgICAgfQorfSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwtYW5kLW9iamVjdC5qcyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwtYW5kLW9iamVjdC5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42NjczNDBmMmVhNGM3NDM4YTJkMjA5YWE0MGQwNjc3ZTRhYjdkM2ZiCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0
b3ItZmliLWZ0bC1hbmQtb2JqZWN0LmpzCkBAIC0wLDAgKzEsMjMgQEAKKyhmdW5jdGlvbiAoKSB7
CisgICAgZnVuY3Rpb24gKmZpYigpCisgICAgeworICAgICAgICBsZXQgYSA9IDE7CisgICAgICAg
IGxldCBiID0gMTsKKyAgICAgICAgbGV0IGMgPSB7IGZpYjogMCB9OworICAgICAgICB3aGlsZSAo
dHJ1ZSkgeworICAgICAgICAgICAgYy5maWIgPSBhOworICAgICAgICAgICAgeWllbGQgYzsKKyAg
ICAgICAgICAgIFthLCBiXSA9IFtiLCBhICsgYl07CisgICAgICAgIH0KKyAgICB9CisKKyAgICBs
ZXQgdmFsdWUgPSAwOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMWU0OyArK2kpIHsKKyAgICAg
ICAgbGV0IGYgPSBmaWIoKTsKKyAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDA7ICsraSkg
eworICAgICAgICAgICAgdmFsdWUgPSBmLm5leHQoKS52YWx1ZTsKKyAgICAgICAgfQorICAgICAg
ICBpZiAodmFsdWUuZmliICE9PSAzNTQyMjQ4NDgxNzkyNjIwMDAwMDApCisgICAgICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoYGJhZCB2YWx1ZToke3Jlc3VsdH1gKTsKKyAgICB9Cit9KCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmli
LWZ0bC1hbmQtc3RyaW5nLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9n
ZW5lcmF0b3ItZmliLWZ0bC1hbmQtc3RyaW5nLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQzOGFlNmFiMzM0NzA0
NjgyMjg0OWY0MzAwNGVhNWM0MDNlZWRhMjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLWFuZC1zdHJpbmcuanMK
QEAgLTAsMCArMSwyMiBAQAorKGZ1bmN0aW9uICgpIHsKKyAgICBmdW5jdGlvbiAqZmliKCkKKyAg
ICB7CisgICAgICAgIGxldCBhID0gMTsKKyAgICAgICAgbGV0IGIgPSAxOworICAgICAgICBsZXQg
YyA9ICJSZXN1bHQhICI7CisgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICB5aWVs
ZCBjICsgYTsKKyAgICAgICAgICAgIFthLCBiXSA9IFtiLCBhICsgYl07CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICBsZXQgdmFsdWUgPSAwOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMWU0OyAr
K2kpIHsKKyAgICAgICAgbGV0IGYgPSBmaWIoKTsKKyAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkg
PCAxMDA7ICsraSkgeworICAgICAgICAgICAgdmFsdWUgPSBmLm5leHQoKS52YWx1ZTsKKyAgICAg
ICAgfQorICAgICAgICBpZiAodmFsdWUgIT09IGBSZXN1bHQhIDM1NDIyNDg0ODE3OTI2MjAwMDAw
MGApCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCB2YWx1ZToke3Jlc3VsdH1gKTsK
KyAgICB9Cit9KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0
cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9z
dHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzQwZTMzZGJjODY4YmVhN2E4
OTNjOWVjMTZiNzc5ZWMyNmJkYjE5YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwuanMKQEAgLTAsMCArMSwyMSBA
QAorKGZ1bmN0aW9uICgpIHsKKyAgICBmdW5jdGlvbiAqZmliKCkKKyAgICB7CisgICAgICAgIGxl
dCBhID0gMTsKKyAgICAgICAgbGV0IGIgPSAxOworICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAg
ICAgICAgICAgeWllbGQgYTsKKyAgICAgICAgICAgIFthLCBiXSA9IFtiLCBhICsgYl07CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICBsZXQgdmFsdWUgPSAwOworICAgIGZvciAobGV0IGkgPSAwOyBp
IDwgMWU0OyArK2kpIHsKKyAgICAgICAgbGV0IGYgPSBmaWIoKTsKKyAgICAgICAgZm9yIChsZXQg
aSA9IDA7IGkgPCAxMDA7ICsraSkgeworICAgICAgICAgICAgdmFsdWUgPSBmLm5leHQoKS52YWx1
ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAodmFsdWUgIT09IDM1NDIyNDg0ODE3OTI2MjAwMDAw
MCkKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIHZhbHVlOiR7cmVzdWx0fWApOwor
ICAgIH0KK30oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3Ry
ZXNzL2dlbmVyYXRvci1mcmFtZS1lbXB0eS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0
cy9zdHJlc3MvZ2VuZXJhdG9yLWZyYW1lLWVtcHR5LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU5ZTg4NTViZmFj
M2M1NmRmOTI2YWJkNDI4YzAxM2MzMzQxNjI3NDYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1mcmFtZS1lbXB0eS5qcwpAQCAt
MCwwICsxLDM0IEBACitmdW5jdGlvbiBzaG91bGRUaHJvdyhmdW5jLCBlcnJvck1lc3NhZ2UpIHsK
KyAgICB2YXIgZXJyb3JUaHJvd24gPSBmYWxzZTsKKyAgICB2YXIgZXJyb3IgPSBudWxsOworICAg
IHRyeSB7CisgICAgICAgIGZ1bmMoKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGVycm9y
VGhyb3duID0gdHJ1ZTsKKyAgICAgICAgZXJyb3IgPSBlOworICAgIH0KKyAgICBpZiAoIWVycm9y
VGhyb3duKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ25vdCB0aHJvd24nKTsKKyAgICBpZiAo
U3RyaW5nKGVycm9yKSAhPT0gZXJyb3JNZXNzYWdlKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
YGJhZCBlcnJvcjogJHtTdHJpbmcoZXJyb3IpfWApOworfQorCitzaG91bGRUaHJvdyhmdW5jdGlv
biAoKSB7CisgICAgZnVuY3Rpb24gKmZpYihmbGFnKQorICAgIHsKKyAgICAgICAgbGV0IGEgPSAx
OworICAgICAgICBsZXQgYiA9IDE7CisgICAgICAgIHlpZWxkIDQyOworICAgICAgICBpZiAoZmxh
ZykKKyAgICAgICAgICAgIHJldHVybiBjOworICAgICAgICBsZXQgYyA9IDUwMDsKKyAgICB9CisK
KyAgICBsZXQgdmFsdWUgPSAwOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMWU0OyArK2kpIHsK
KyAgICAgICAgZm9yIChsZXQgdiBvZiBmaWIoZmFsc2UpKSB7CisgICAgICAgIH0KKyAgICB9Cisg
ICAgZm9yIChsZXQgdiBvZiBmaWIodHJ1ZSkpIHsKKyAgICB9Cit9LCBgUmVmZXJlbmNlRXJyb3I6
IENhbm5vdCBhY2Nlc3MgdW5pbml0aWFsaXplZCB2YXJpYWJsZS5gKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXJlZHVjZWQtc2F2ZS1w
b2ludC1wdXQtdG8tc2NvcGUuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNz
L2dlbmVyYXRvci1yZWR1Y2VkLXNhdmUtcG9pbnQtcHV0LXRvLXNjb3BlLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmMwYzc1ZmE0OTE0M2MxN2JlMTRmMzI4MWUzZjY1NDM0ZjM1MTM5ZTgKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1yZWR1Y2Vk
LXNhdmUtcG9pbnQtcHV0LXRvLXNjb3BlLmpzCkBAIC0wLDAgKzEsMjggQEAKK2Z1bmN0aW9uIHNo
b3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkK
KyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgdmFsdWU6ICR7U3RyaW5nKGFjdHVhbCl9YCk7
Cit9CisKK2Z1bmN0aW9uIGVycm9yKCkKK3sKKyAgICB0aHJvdyAib2siOworfQorCitmdW5jdGlv
biogZ2VuKCkKK3sKKyAgICB2YXIgdmFsdWUgPSA0MjsKKyAgICB0cnkgeworICAgICAgICB5aWVs
ZCAzMDA7CisgICAgICAgIHZhbHVlID0gNTAwOworICAgICAgICBlcnJvcigpOworICAgIH0gY2F0
Y2ggKGUpIHsKKyAgICAgICAgeWllbGQgNDI7CisgICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICB9
CisgICAgcmV0dXJuIDIwMDsKK30KKwordmFyIGcgPSBnZW4oKTsKK3Nob3VsZEJlKGcubmV4dCgp
LnZhbHVlLCAzMDApOworc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIDQyKTsKK3Nob3VsZEJlKGcu
bmV4dCgpLnZhbHVlLCA1MDApOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>283991</attachid>
            <date>2016-07-19 04:24:47 -0700</date>
            <delta_ts>2016-07-19 06:46:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-152723-20160719202351.patch</filename>
            <type>text/plain</type>
            <size>186488</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAzMzMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
MTYzZWNlZjExYjQ1NDUxMzNmZjcxYTA1NzcwYmZkOTA4NzI5NTY5Li40OWQ0OWJiZTMxMTE0MDBl
MWMwYTFiNjU3NjdjNmI1YjQzNDdjN2FkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMjYgQEAKKzIwMTYtMDctMTkgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0RGR11bRlRMXSBJbXBsZW1lbnQgRVM2IEdlbmVyYXRvcnMgaW4g
REZHIC8gRlRMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNTI3MjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUaGlzIHBhdGNoIGludHJvZHVjZXMgREZHIGFuZCBGVEwgc3VwcG9ydCBmb3IgRVM2IGdlbmVy
YXRvcnMuCisgICAgICAgIEVTNiBnZW5lcmF0b3IgaXMgY29tcGlsZWQgYnkgdGhlIEJ5dGVjb2Rl
R2VuZXJhdG9yLiBCdXQgYXQgdGhlIGxhc3QgcGhhc2UsIEJ5dGVjb2RlR2VuZXJhdG9yIHBlcmZv
cm1zICJnZW5lcmF0b3JpZmljYXRpb24iIG9udG8gdGhlIHVubGlua2VkIGNvZGUuCisgICAgICAg
IEluIEJ5dGVjb2RlR2VuZXJhdG9yIHBoYXNlLCB3ZSBpbnNlcnRlZCBzZXZlcmFsIHNwZWNpYWwg
bWFya2VycyBmb3IgdGhlIGdlbmVyYXRvcnMuIG9wX3NhdmUgYW5kIG9wX3Jlc3VtZS4KKyAgICAg
ICAgVGhlIG9wX3NhdmUsIG9wX3Jlc3VtZSBhbmQgdGhlIG1lcmdlIHBvaW50IGJsb2NrIGFyZSBj
b25uZWN0ZWQgYXMgZm9sbG93cy4KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG9wX3JldAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IF4KKyAgICAgICAgZW50cnkgLT4gZ2VuZXJhdG9yIHN3aXRjaCAtLS0tPiBvcF9zYXZlIC0+IG1l
cmdlIHBvaW50IC0+IC4uLgorICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIF4KKyAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0t
PiBvcF9yZXN1bWUgLS0tLS0rCisKKyAgICAgICAgSW4gdGhlIGdlbmVyYXRvcmlmaWNhdGlvbiBw
aGFzZSwgd2UgdHVybiBvdXQgd2hpY2ggdmFyaWFibGVzIHNob3VsZCBiZSBzYXZlZCBhbmQgcmVz
dW1lZCBhdCBlYWNoIG9wX3NhdmUgYW5kIG9wX3Jlc3VtZSwgYW5kIGNvbnZlcnQgdGhlc2UgYnl0
ZWNvZGVzCisgICAgICAgIHRvIHRoZSBzZXF1ZW5jZXMgb2YgdGhlIGdldF9mcm9tX3Njb3BlIGFu
ZCBwdXRfdG9fc2NvcGUuIFRoZSByZWdpc3RlcnMgYXJlIHNhdmVkIGFuZCByZXN1bWVkIG92ZXIg
dGhlIGdlbmVyYXRvcidzIG5leHQoKSBjYWxscyBieSB1c2luZyB0aGlzIHNwZWNpYWwKKyAgICAg
ICAgZ2VuZXJhdG9yIGZyYW1lIHNjb3BlLgorCisgICAgICAgIEluIHRoZSBnZW5lcmF0b3JpZmlj
YXRpb24gcGhhc2UsCisKKyAgICAgICAgMS4gV2UgY29uc3RydWN0IHRoZSBCeXRlY29kZUdyYXBo
IGZyb20gdGhlIHVuaW5rZWQgaW5zdHJ1Y3Rpb25zLiBUaGlzIGNvcnJlY3RseSBjb25zdHJ1Y3Rz
IHRoZSBiYXNpYyBibG9ja3MsIGFuZCBpdCBpcyB1c2VkIGluIHRoZSBzdWJzZXF1ZW50IGFuYWx5
c2lzLgorICAgICAgICAyLiBXZSBwZXJmb3JtIHRoZSBhbmFseXNpcyBvbnRvIHRoZSB1bmxpbmtl
ZCBjb2RlLiBXZSBoYXZlIDMgYW5hbHlzaXM6IHRoZSBsaXZlbmVzcyBhbmFseXNpcywgdGhlIHJl
c3VtZWQgdmFyaWFibGVzIGFuYWx5c2lzLCBhbmQgdGhlIHNhdmVkIHZhcmlhYmxlcyBhbmFseXNp
cy4KKyAgICAgICAgICAgRmlyc3QsIGluIHRoZSBsaXZlbmVzcyBhbmFseXNpcywgd2UgZXh0cmFj
dCB0aGUgbGl2ZSB2YXJpYWJsZXMgYXQgdGhlIGVhY2ggbWVyZ2UgcG9pbnQuIFRoZXNlIHZhcmlh
YmxlcyBzaG91bGQgYmUgY29uc2lkZXJlZCBhcyB0aGUgY29uc2VydmF0aXZlIHRhcmdldAorICAg
ICAgICAgICByZWdpc3RlcnMgdG8gYmUgcmVzdW1lZCBhbmQgc2F2ZWQgYXQgZWFjaCBwb2ludC4K
KyAgICAgICAgMy4gU2Vjb25kLCB3ZSBwZXJmb3JtIHRoZSBsaXZlbmVzcyBhbmFseXNpcyBhZ2Fp
biwgYnV0IGF0IHRoYXQgdGltZSwgd2UgZXhwbGljaXRseSBpZ25vcmUgdGhlIGVkZ2VzIGJldHdl
ZW4gdGhlIHNhdmUgcG9pbnRzIGFuZCB0aGUgbWVyZ2UgcG9pbnRzLiBUaGlzIGFuYWx5c2lzLAor
ICAgICAgICAgICByZWZlcnJlZCB0byBhcyB0aGUgcmVzdW1lZCB2YXJpYWJsZXMgYW5hbHlzaXMs
IGV4dHJhY3RzIHRoZSBsaXZlbmVzcyBhdCBtZXJnZSBwb2ludC4gVGhpcyBsaXZlbmVzcyBpbmZv
cm1hdGlvbiBvbmx5IGNvbnNpZGVycyB0aGUgcmVhY2hhYmxlIGJsb2NrcyBmcm9tIHRoZQorICAg
ICAgICAgICB0YXJnZXQgb3BfcmVzdW1lLiBUaGUgcmVzdWx0IHJlZ2lzdGVycyBhcmUgc21hbGxl
ciBzZXQgdGhhbiB0aGUgc2V0IHdoaWNoIGlzIGV4dHJhY3RlZCBpbiB0aGUgcHJldmlvdXMgbGl2
ZW5lc3MgYW5hbHlzaXMuCisgICAgICAgIDQuIEZpbmFsbHksIHdlIGRyaXZlIHRoZSBmb3J3YXJk
IGFuYWx5c2lzLCBjYWxsZWQgdGhlIHNhdmVkIHZhcmlhYmxlcyBhbmFseXNpcy4gQXQgb3Bfc2F2
ZSwgd2Ugc2hvdWxkIHNhdmUgdGhlIHZhcmlhYmxlcyB0aGF0IHdpbGwgYmUgdXNlZCBhZnRlciB0
aGUgbWVyZ2UgcG9pbnQKKyAgICAgICAgICAgYW5kIHRoZSBuZXdseSBkZWZpbmVkIHZhcmlhYmxl
cyBmcm9tIHRoZSBwcmV2aW91cyBvcF9yZXN1bWUuIFNvLCBvbnRvIHRoZSBncmFwaCBkcm9wcGlu
ZyB0aGUgZWRnZXMgYmV0d2VlbiB0aGUgc2F2ZSBwb2ludHMgYW5kIHRoZSBtZXJnZSBwb2ludHMs
IHdlIHByb3BhZ2F0ZQorICAgICAgICAgICB0aGUgZGVmcyBhbmQgY29sbGVjdCB0aGUgbmV3bHkg
ZGVmaW5lZCByZWdpc3RlcnMgYXQgdGhlIG9wX3NhdmUgcG9pbnQuIEJ5IHVzaW5nIHRoaXMgYml0
IG1hc2ssIHdlIGZpbHRlciB0aGUgbGl2ZSB2YXJpYWJsZXMgKGdhaW5lZCBpbiAoMikpIGF0IHRo
ZSBtZXJnZSBwb2ludAorICAgICAgICAgICB0byByZWR1Y2UgdGhlIG51bWJlciBvZiB0aGUgc2F2
ZWQgcmVnaXN0ZXJzLgorICAgICAgICA1LiBUaGVuLCB3ZSBpbnNlcnQgdGhlIGdldF9mcm9tX3Nj
b3BlIGFuZCBwdXRfdG9fc2NvcGUgYXQgZWFjaCBvcF9zYXZlIGFuZCBvcF9yZXN1bWUuIFdoaWNo
IHJlZ2lzdGVycyBzaG91bGQgYmUgc2F2ZWQgYW5kIHJlc3VtZWQgaXMgb2ZmZXJlZCBieSAoMykg
YW5kICg0KS4KKyAgICAgICAgICAgVGhlbiwgY2xpcCB0aGUgb3Bfc2F2ZSBhbmQgb3BfcmVzdW1l
IHRoZW1zZWx2ZXMuIFRoZXkgYXJlIGV4ZWN1dGVkIGluIGEgYmF0Y2ggbWFubmVyIGJ5IEJ5dGVj
b2RlTW9kaWZpY2F0aW9uU2V0LiBTaW5jZSB0aGVzZSBtb2RpZmljYXRpb24gY2hhbmdlcyB0aGUg
YmFzaWMgYmxvY2tzCisgICAgICAgICAgIGFuZCBzaXplIG9mIHVubGlua2VkIGluc3RydWN0aW9u
cywgQnl0ZWNvZGVNb2RpZmljYXRpb25TZXQgYWxzbyBwZXJmb3JtcyB0aGUgb2Zmc2V0IGFkanVz
dG1lbnQgZm9yIFVubGlua2VkQ29kZUJsb2NrLiBTbywgdGhpcyBCeXRlY29kZU1vZGlmaWNhdGlv
blNldCBpcyBwZXJmb3JtZWQKKyAgICAgICAgICAgb250byB0aGUgQnl0ZWNvZGVHcmFwaCBpbnN0
ZWFkIG9mIEJ5dGVjb2RlQmFzaWNCbG9jay4gVGhlIHJlYXNvbiB3aHkgd2UgdGFrZSB0aGlzIGRl
c2lnbiBpcyBzaW1wbGUsIHdlIGRvbid0IHdhbnQgdG8gbmV3bHkgY3JlYXRlIHRoZSBiYXNpYyBi
bG9ja3MgYW5kIG9wY29kZXMKKyAgICAgICAgICAgZm9yIHRoaXMgZWFybHkgcGhhc2UgbGlrZSBE
RkcuIEluc3RlYWQsIHdlIHBlcmZvcm0gdGhlIG1vZGlmaWNhdGlvbiBhbmQgYWRqdXN0bWVudCB0
byB0aGUgdW5saW5rZWQgaW5zdHJ1Y3Rpb25zIGFuZCBVbmxpbmtlZENvZGVCbG9jayBpbiBhIGlu
LXBsYWNlIG1hbm5lci4KKworICAgICAgICBBZnRlciB0aGF0IHBoYXNlLCB0aGUgZGF0YSBmbG93
IG9mIHRoZSBnZW5lcmF0b3Itc2F2ZWQtYW5kLXJlc3VtZWQtcmVnaXN0ZXJzIGFyZSBleHBsaWNp
dGx5IHJlcHJlc2VudGVkIGJ5IHRoZSBnZXRfZnJvbV9zY29wZSBhbmQgcHV0X3RvX3Njb3BlLgor
ICAgICAgICBBbmQgb3Bfc2F2ZSBhbmQgb3BfcmVzdW1lIGFyZSByZW1vdmVkLiBTaW5jZSB3ZSB1
c2UgdGhlIGV4aXN0aW5nIGJ5dGVjb2RlcywgREZHIGFuZCBGVEwgY2hhbmdlcyBhcmUgbm90IG5l
Y2Vzc2FyeS4KKworICAgICAgICBDb21waWxpbmcgRVM2IGdlbmVyYXRvcnMgaW4gREZHIGFuZCBG
VEwgZ2l2ZXMgdXMgc2lnbmlmaWNhbnQgcGVyZm9ybWFuY2UgaW1wcm92ZW1lbnRzLgorICAgICAg
ICBJbiBteSB4NjQgTGludXggYm94IChoYW5heWFtYXRhKSwgdGhlIHJlc3VsdCBvZiBKU0NPbmx5
IHBvcnQgaXMgdGhlIGZvbGxvd2luZ3MuCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZWxpbmUgICAgICAgICAgICAgICAgICAgcGF0
Y2gKKworICAgICAgICAgICAgZ2VuZXJhdG9yLWZpYiAgICAgICAgICAgICAgICAgICAgICAgICAg
MTAzLjI1NDMrLTMuOTk3OCAgICAgXiAgICAgMzYuNDE0OCstMC44NDAyICAgICAgICBeIGRlZmlu
aXRlbHkgMi44MzU1eCBmYXN0ZXIKKyAgICAgICAgICAgIGdlbmVyYXRvci13aXRoLXNldmVyYWwt
dHlwZXMgICAgICAgICAgIDM0Mi41MDA5Ky0yNS4xNjAyICAgIF4gICAgMTMyLjE3MTArLTE3LjEx
MjkgICAgICAgXiBkZWZpbml0ZWx5IDIuNTkxM3ggZmFzdGVyCisgICAgICAgICAgICBnZW5lcmF0
b3Itc3Vuc3BpZGVyLWFjY2Vzcy1uc2lldmUgICAgICAgIDUuOTgxNistMC4xMDgyICAgICBeICAg
ICAgNS4xNzgwKy0wLjIzODggICAgICAgIF4gZGVmaW5pdGVseSAxLjE1NTJ4IGZhc3RlcgorCisg
ICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBidWlsdGlucy9HZW5lcmF0b3JQcm90b3R5
cGUuanM6CisgICAgICAgIChnbG9iYWxQcml2YXRlLmdlbmVyYXRvclJlc3VtZSk6CisgICAgICAg
ICogYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNv
ZGVCYXNpY0Jsb2NrOjpjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2Nrc0ludGVybmFsKToKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVCYXNpY0Jsb2NrOjpjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2Nrcyk6
CisgICAgICAgIChKU0M6OmxpbmtCbG9ja3MpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpjb21w
dXRlQnl0ZWNvZGVCYXNpY0Jsb2Nrcyk6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUvQnl0
ZWNvZGVCYXNpY0Jsb2NrLmg6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlQmFzaWNCbG9jazo6Ynl0
ZWNvZGVPZmZzZXRzKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVCYXNpY0Jsb2NrOjpzdWNjZXNz
b3JzKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVCYXNpY0Jsb2NrOjpwcmVkZWNlc3NvcnMpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUJhc2ljQmxvY2s6OmluZGV4KToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVCYXNpY0Jsb2NrOjphZGRTdWNjZXNzb3IpOgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUJhc2ljQmxvY2s6OmFkZFByZWRlY2Vzc29yKToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29k
ZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpCeXRlY29kZUdl
bmVyYXRvcmlmaWNhdGlvbjo6Qnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24pOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbjo6c3RvcmFnZUZvckdlbmVyYXRvckxvY2Fs
KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb246OmNvbXB1dGVHZW5l
cmF0b3JEZWZzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVy
YXRvcmlmaWNhdGlvbjo6Y29tcHV0ZUdlbmVyYXRvclVzZXNGb3JCeXRlY29kZU9mZnNldCk6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uOjpzdGVwT3Zlckluc3RydWN0
aW9uKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb246OmNvbXB1dGVM
b2NhbExpdmVuZXNzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdl
bmVyYXRvcmlmaWNhdGlvbjo6Y29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCbG9jayk6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uOjpnZXRMaXZlbmVzc0luZm9BdEJ5dGVj
b2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb246OnJ1
bkdlbmVyYXRvclZhcmlhYmxlTGl2ZW5lc3NBbmFseXNpcyk6CisgICAgICAgIChKU0M6OkJ5dGVj
b2RlR2VuZXJhdG9yaWZpY2F0aW9uOjpzdGVwT3Zlckluc3RydWN0aW9uRm9yU2F2ZWRWYXJpYWJs
ZXMpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbjo6Y29tcHV0ZUxv
Y2FsU2F2ZWRWYXJpYWJsZXNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OkJ5dGVj
b2RlR2VuZXJhdG9yaWZpY2F0aW9uOjpjb21wdXRlTG9jYWxTYXZlZFZhcmlhYmxlc0ZvckJsb2Nr
KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb246OmdldFNhdmVkVmFy
aWFibGVzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVy
YXRvcmlmaWNhdGlvbjo6cnVuU2F2ZWRWYXJpYWJsZXNBbmFseXNpcyk6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uOjpnZXRSZXN1bWVkVmFyaWFibGVzSW5mb0F0Qnl0
ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbjo6
cnVuUmVzdW1lZFZhcmlhYmxlc0FuYWx5c2lzKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5l
cmF0b3JpZmljYXRpb246OnJ1bik6CisgICAgICAgIChKU0M6OnBlcmZvcm1HZW5lcmF0b3JpZmlj
YXRpb24pOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmg6
IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVu
ZXNzQW5hbHlzaXNJbmxpbmVzLmguCisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVHcmFwaC5o
OiBBZGRlZC4KKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHcmFwaDo6Y29kZUJsb2NrKToKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVHcmFwaDo6YmFzaWNCbG9ja3MpOgorICAgICAgICAoSlNDOjpCeXRl
Y29kZUdyYXBoOjppbnN0cnVjdGlvbnMpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdyYXBoOjpi
YXNpY0Jsb2Nrc0luUmV2ZXJzZU9yZGVyKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHcmFwaDo6
YmxvY2tDb250YWluc0J5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHcmFw
aDo6ZmluZEJhc2ljQmxvY2tGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OkJ5dGVj
b2RlR3JhcGg6OmZpbmRCYXNpY0Jsb2NrV2l0aExlYWRlck9mZnNldCk6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlR3JhcGg8QmxvY2s+OjpCeXRlY29kZUdyYXBoKToKKyAgICAgICAgKiBieXRlY29k
ZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUxp
dmVuZXNzQW5hbHlzaXM6OkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcyk6CisgICAgICAgIChKU0M6
OnN0ZXBPdmVySW5zdHJ1Y3Rpb24pOgorICAgICAgICAoSlNDOjpjb21wdXRlTG9jYWxMaXZlbmVz
c0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZUxvY2FsTGl2ZW5lc3NG
b3JCbG9jayk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6cnVuTGl2
ZW5lc3NGaXhwb2ludCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6
Z2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
TGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0ZUZ1bGxMaXZlbmVzcyk6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0ZUtpbGxzKToKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpkdW1wUmVzdWx0cyk6CisgICAgICAgIChKU0M6OmlzVmFs
aWRSZWdpc3RlckZvckxpdmVuZXNzKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Z2V0TGVhZGVy
T2Zmc2V0Rm9yQmFzaWNCbG9jayk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OmZpbmRCYXNpY0Js
b2NrV2l0aExlYWRlck9mZnNldCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OmJsb2NrQ29udGFp
bnNCeXRlY29kZU9mZnNldCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OmZpbmRCYXNpY0Jsb2Nr
Rm9yQnl0ZWNvZGVPZmZzZXQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCeXRlY29kZUxpdmVu
ZXNzQW5hbHlzaXM6OmNvbXB1dGUpOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVj
b2RlTGl2ZW5lc3NBbmFseXNpcy5oOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGl2ZW5l
c3NBbmFseXNpc0lubGluZXMuaDoKKyAgICAgICAgKEpTQzo6aXNWYWxpZFJlZ2lzdGVyRm9yTGl2
ZW5lc3MpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTW9kaWZpY2F0aW9uU2V0LmNwcDog
QWRkZWQuCisgICAgICAgIChKU0M6OkJ5dGVjb2RlTW9kaWZpY2F0aW9uU2V0OjphZGp1c3RPZmZz
ZXQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZU1vZGlmaWNhdGlvblNldDo6YXBwbHlNb2RpZmlj
YXRpb24pOgorICAgICAgICAoSlNDOjpCeXRlY29kZU1vZGlmaWNhdGlvblNldDo6ZXhlY3V0ZSk6
CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVNb2RpZmljYXRpb25TZXQuaDogQWRkZWQuCisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlTW9kaWZpY2F0aW9uU2V0OjpCeXRlY29kZU1vZGlmaWNhdGlv
blNldCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlTW9kaWZpY2F0aW9uU2V0OjppbnNlcnQpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZU1vZGlmaWNhdGlvblNldDo6cmVtb3ZlQnl0ZWNvZGUpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZU1vZGlmaWNhdGlvblNldDo6Z3JhcGgpOgorICAgICAgICAq
IGJ5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmg6CisgICAgICAgIChKU0M6OmNvbXB1dGVVc2VzRm9y
Qnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zm
c2V0KToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpD
b2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpoYW5k
bGVyRm9ySW5kZXgpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmxpdmVuZXNzQW5hbHlzaXNT
bG93KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnNocmlua1RvRml0KTogRGVsZXRlZC4KKyAgICAgICAg
KiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjppc0NvbnN0
YW50UmVnaXN0ZXJJbmRleCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bGl2ZW5lc3NBbmFs
eXNpcyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQp
OiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2RlL0hhbmRsZXJJbmZvLmg6CisgICAgICAgIChK
U0M6OkhhbmRsZXJJbmZvQmFzZTo6aGFuZGxlckZvckluZGV4KToKKyAgICAgICAgKiBieXRlY29k
ZS9QcmVjaXNlSnVtcFRhcmdldHMuY3BwOgorICAgICAgICAoSlNDOjpnZXRKdW1wVGFyZ2V0c0Zv
ckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0
c0ludGVybmFsKToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyk6Cisg
ICAgICAgIChKU0M6OnJlY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyk6CisgICAgICAgIChKU0M6
OmZpbmRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKiBieXRlY29kZS9Q
cmVjaXNlSnVtcFRhcmdldHMuaDoKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9j
ay5jcHA6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjpoYW5kbGVyRm9yQnl0ZWNv
ZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6aGFuZGxlckZvcklu
ZGV4KToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OmFwcGx5TW9kaWZpY2F0aW9u
KToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oOgorICAgICAgICAoSlND
OjpVbmxpbmtlZFN0cmluZ0p1bXBUYWJsZTo6b2Zmc2V0Rm9yVmFsdWUpOgorICAgICAgICAqIGJ5
dGVjb2RlL1ZpcnR1YWxSZWdpc3Rlci5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0
ZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcik6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q29tcGxleFBvcFNjb3Blcyk6
CisgICAgICAgIChKU0M6OnByZXBhcmVKdW1wVGFibGVGb3JTdHJpbmdTd2l0Y2gpOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFlpZWxkUG9pbnQpOgorICAgICAgICAoSlND
OjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFNhdmUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdFJlc3VtZSk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0b3JGcmFt
ZVJlZ2lzdGVyKToKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICog
Z2VuZXJhdGUtYnl0ZWNvZGUtZmlsZXM6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0
ZXIuY3BwOgorICAgICAgICAoSlNDOjpmaW5kRXhjZXB0aW9uSGFuZGxlcik6CisgICAgICAgIChK
U0M6OkdldENhdGNoSGFuZGxlckZ1bmN0b3I6Om9wZXJhdG9yKCkpOgorICAgICAgICAoSlNDOjpV
bndpbmRGdW5jdG9yOjpvcGVyYXRvcigpKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnBy
ZXRlci5oOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVySW5saW5lcy5oOiBDb3Bp
ZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRz
LmguCisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpnZXRPcGNvZGVJRCk6CisgICAgICAgICog
aml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcyk6
IERlbGV0ZWQuCisgICAgICAgICogaml0L0pJVC5oOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVz
LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3NhdmUpOiBEZWxldGVkLgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRfb3BfcmVzdW1lKTogRGVsZXRlZC4KKyAgICAgICAgKiBsbGludC9M
b3dMZXZlbEludGVycHJldGVyLmFzbToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmNwcDoKKyAg
ICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlSW5uZXIpOgorICAgICAgICAoSlND
OjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VHZW5lcmF0b3JGdW5jdGlvblNvdXJjZUVsZW1lbnRz
KToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OmNyZWF0ZUdlbmVyYXRvclBhcmFt
ZXRlcnMpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuaDoKKyAgICAgICAgKiBydW50aW1lL0Nv
bW1vblNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OlNMT1dfUEFUSF9ERUNMKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5oOgorICAgICAgICAqIHJ1bnRp
bWUvR2VuZXJhdG9yRnJhbWUuY3BwOiBSZW1vdmVkLgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JG
cmFtZTo6R2VuZXJhdG9yRnJhbWUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JG
cmFtZTo6ZmluaXNoQ3JlYXRpb24pOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JG
cmFtZTo6Y3JlYXRlU3RydWN0dXJlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9y
RnJhbWU6OmNyZWF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpz
YXZlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OnJlc3VtZSk6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjp2aXNpdENoaWxkcmVuKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0dlbmVyYXRvckZyYW1lLmg6IFJlbW92ZWQuCisgICAg
ICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpsb2NhbHMpOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpHZW5lcmF0b3JGcmFtZTo6bG9jYWxBdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkdlbmVy
YXRvckZyYW1lOjpvZmZzZXRPZkxvY2Fscyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkdlbmVy
YXRvckZyYW1lOjphbGxvY2F0aW9uU2l6ZUZvckxvY2Fscyk6IERlbGV0ZWQuCisgICAgICAgICog
cnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpWTSk6IERlbGV0ZWQuCisgICAgICAg
ICogcnVudGltZS9WTS5oOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0
bC1hbmQtYXJyYXkuanM6IEFkZGVkLgorICAgICAgICAoZmliKToKKyAgICAgICAgKiB0ZXN0cy9z
dHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwtYW5kLW9iamVjdC5qczogQWRkZWQuCisgICAgICAgIChm
aWIpOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQtc3RyaW5n
LmpzOiBBZGRlZC4KKyAgICAgICAgKGZpYik6CisgICAgICAgICogdGVzdHMvc3RyZXNzL2dlbmVy
YXRvci1maWItZnRsLmpzOiBBZGRlZC4KKyAgICAgICAgKGZpYik6CisgICAgICAgICogdGVzdHMv
c3RyZXNzL2dlbmVyYXRvci1mcmFtZS1lbXB0eS5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRU
aHJvdyk6CisgICAgICAgIChzaG91bGRUaHJvdy5maWIpOgorICAgICAgICAqIHRlc3RzL3N0cmVz
cy9nZW5lcmF0b3ItcmVkdWNlZC1zYXZlLXBvaW50LXB1dC10by1zY29wZS5qczogQWRkZWQuCisg
ICAgICAgIChzaG91bGRCZSk6CisgICAgICAgIChnZW4pOgorICAgICAgICAqIHRlc3RzL3N0cmVz
cy9nZW5lcmF0b3ItdHJhbnNmZXItcmVnaXN0ZXItYmV5b25kLW11dGlwbGUteWllbGRzLmpzOiBB
ZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKGdlbik6CisKIDIwMTYtMDctMTcg
IFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAgW0pTQ10g
RW5hYmxlIHRlc3QyNjIgbW9kdWxlIHRlc3RzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGFmNThiYzRkNDA5NDViOWJhZTRlOWQy
YzM2MzZmNzMwOTIwZGJmODAuLmE3ZTAxMjBmOGNhZmY5MjA5NmJkMmIxYTg4NzM0NTAwMTJlNWUx
YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTYtMDctMTkgIFl1c3VrZSBTdXp1a2kgIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0RGR11bRlRMXSBJbXBsZW1lbnQgRVM2IEdl
bmVyYXRvcnMgaW4gREZHIC8gRlRMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNTI3MjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIHd0Zi9GYXN0Qml0VmVjdG9yLmg6CisgICAgICAgIChXVEY6OkZhc3RC
aXRWZWN0b3I6OkZhc3RCaXRWZWN0b3IpOgorCiAyMDE2LTA3LTE3ICBNeWxlcyBDLiBNYXhmaWVs
ZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgU3VwcG9ydCBuZXcgZW1vamkgZ3Jv
dXAgY2FuZGlkYXRlcwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlz
dHMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IGM0OTc3
ZGFmZTJhZTU4ZDE3NDUyODA1OWFkYzk3OTI3MmQxODkzN2UuLjZkOTRiNjk3MzBkNzJmNGI1NmRj
OTFkMjQ3M2I1YzI2NTU2YzNjYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
TWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQK
QEAgLTE3OCw2ICsxNzgsOCBAQCBzZXQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIGJ5dGVj
b2RlL0FycmF5QWxsb2NhdGlvblByb2ZpbGUuY3BwCiAgICAgYnl0ZWNvZGUvQXJyYXlQcm9maWxl
LmNwcAogICAgIGJ5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5jcHAKKyAgICBieXRlY29kZS9C
eXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHAKKyAgICBieXRlY29kZS9CeXRlY29kZU1vZGlm
aWNhdGlvblNldC5jcHAKICAgICBieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmNw
cAogICAgIGJ5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAKICAgICBieXRlY29k
ZS9DYWxsRWRnZS5jcHAKQEAgLTY1NSw3ICs2NTcsNiBAQCBzZXQoSmF2YVNjcmlwdENvcmVfU09V
UkNFUwogICAgIHJ1bnRpbWUvRnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlLmNwcAogICAgIHJ1bnRp
bWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9GdW5jdGlvblJhcmVEYXRhLmNw
cAotICAgIHJ1bnRpbWUvR2VuZXJhdG9yRnJhbWUuY3BwCiAgICAgcnVudGltZS9HZW5lcmF0b3JG
dW5jdGlvbkNvbnN0cnVjdG9yLmNwcAogICAgIHJ1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Qcm90
b3R5cGUuY3BwCiAgICAgcnVudGltZS9HZW5lcmF0b3JQcm90b3R5cGUuY3BwCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IGI2OGE5NmIxYjRmNjkzODE4MjhiMTZhOGY5OGM0NWE5ZGRh
YmYxZTkuLjRjMDYyNDZmMTYxZjhkZjNlODE2NzZlOTg3NjNlOTEzMGZhZjQwYWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMjUyLDggKzEyNTIsNiBAQAogCQk3MDlGQjg2QzFB
RTMzNUM2MDAzOUQwNjkgLyogV2Vha1NldFByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzA5RkI4NjYxQUUzMzVDNjAwMzlEMDY5IC8qIFdl
YWtTZXRQcm90b3R5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk3MEIwQTlEMTFBOUI2NjQ2MDAwMTMwNkEgLyogUnVudGltZUZsYWdzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEIwQTlEMDFBOUI2
NjIwMDAwMTMwNkEgLyogUnVudGltZUZsYWdzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzBCNzkxOTExQzAyNEExMzAwMjQ4MUUyIC8qIFNvdXJj
ZUNvZGVLZXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDcwQjc5MThFMUMwMjQ0QzkwMDI0ODFFMiAvKiBTb3VyY2VDb2RlS2V5LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNzBCNzkxOTIxQzAyNEEyMzAw
MjQ4MUUyIC8qIEdlbmVyYXRvckZyYW1lLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDcwQjc5MTgzMUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JG
cmFtZS5jcHAgKi87IH07Ci0JCTcwQjc5MTkzMUMwMjRBMjgwMDI0ODFFMiAvKiBHZW5lcmF0b3JG
cmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBC
NzkxODQxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZyYW1lLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzBCNzkxOTQxQzAyNEEyODAwMjQ4
MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBCNzkxODUxQzAyNDQzMjAwMjQ4MUUyIC8q
IEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwICovOyB9OwogCQk3MEI3OTE5NTFDMDI0
QTI4MDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBCNzkxODYxQzAyNDQzMjAwMjQ4
MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MEI3OTE5NjFDMDI0QTI4MDAyNDgxRTIg
LyogR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBCNzkxODcxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVy
YXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcCAqLzsgfTsKQEAgLTIwMjIsNiArMjAyMCwxMSBAQAog
CQlFMThFM0E1OTBERjkyNzhDMDBEOTBCMzQgLyogVk0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTE4RTNBNTcwREY5Mjc4QzAwRDkwQjM0IC8qIFZN
LmNwcCAqLzsgfTsKIAkJRTMxOENCQzAxQjhBRUY1MTAwQTI5MjlEIC8qIEpTTW9kdWxlTmFtZXNw
YWNlT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEUzMThDQkJFMUI4QUVGNTEwMEEyOTI5RCAvKiBKU01vZHVsZU5hbWVzcGFjZU9iamVjdC5j
cHAgKi87IH07CiAJCUUzMThDQkMxMUI4QUVGNTEwMEEyOTI5RCAvKiBKU01vZHVsZU5hbWVzcGFj
ZU9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTMxOENCQkYxQjhBRUY1MTAwQTI5MjlEIC8qIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTMyOERBRTcx
RDM4RDAwNDAwMUEyNTI5IC8qIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzRDI2NDI2MUQzOEMwNDIw
MDBCRTE3NCAvKiBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHAgKi87IH07CisJCUUzMjhE
QUU4MUQzOEQwMDUwMDFBMjUyOSAvKiBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNEMjY0MjcxRDM4QzA0
MjAwMEJFMTc0IC8qIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTMyOERBRTkxRDM4RDAwNTAwMUEy
NTI5IC8qIEJ5dGVjb2RlR3JhcGguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEUzRDI2NDI4MUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRlY29kZUdyYXBoLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTMyOERB
RUExRDM4RDAwNTAwMUEyNTI5IC8qIEJ5dGVjb2RlTW9kaWZpY2F0aW9uU2V0LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzRDI2NDI5MUQzOEMwNDIw
MDBCRTE3NCAvKiBCeXRlY29kZU1vZGlmaWNhdGlvblNldC5jcHAgKi87IH07CisJCUUzMjhEQUVC
MUQzOEQwMDUwMDFBMjUyOSAvKiBCeXRlY29kZU1vZGlmaWNhdGlvblNldC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNEMjY0MkExRDM4QzA0MjAwMEJF
MTc0IC8qIEJ5dGVjb2RlTW9kaWZpY2F0aW9uU2V0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTMzNjM3QTUxQjYzMjIwMjAwRUUwODQwIC8qIFJl
ZmxlY3RPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTMzNjM3QTMxQjYzMjIwMjAwRUUwODQwIC8qIFJlZmxlY3RPYmplY3QuY3BwICovOyB9
OwogCQlFMzM2MzdBNjFCNjMyMjAyMDBFRTA4NDAgLyogUmVmbGVjdE9iamVjdC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMzNjM3QTQxQjYzMjIwMjAw
RUUwODQwIC8qIFJlZmxlY3RPYmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQlFMzNCM0UyNjFCN0FCRDc1MDA0OERCMkUgLyogSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uT2JqZWN0Lmx1dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTMzQjNFMjUxQjdBQkQ3NTAwNDhEQjJFIC8qIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbk9iamVjdC5sdXQuaCAqLzsgfTsKQEAgLTIwNDYsNiArMjA0OSw3IEBACiAJ
CUUzNzk0RTc1MUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFseXplci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzc5NEU3MzFCNzdFQjk3MDA1
NTQzQUUgLyogTW9kdWxlQW5hbHl6ZXIuY3BwICovOyB9OwogCQlFMzc5NEU3NjFCNzdFQjk3MDA1
NTQzQUUgLyogTW9kdWxlQW5hbHl6ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEUzNzk0RTc0MUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFseXpl
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUz
OTYzQ0VFMUI3M0Y3NTAwMEVCNENFNSAvKiBOb2Rlc0FuYWx5emVNb2R1bGUuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5NjNDRUMxQjczRjc1MDAw
RUI0Q0U1IC8qIE5vZGVzQW5hbHl6ZU1vZHVsZS5jcHAgKi87IH07CisJCUUzOUQ0NUY1MUQzOTAw
NTYwMEIzQjM3NyAvKiBJbnRlcnByZXRlcklubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOUQ5RDg0MUQzOTAwMDYwMDY2NzI4MiAvKiBJbnRl
cnByZXRlcklubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQlFMzlEQTRBNjFCN0U4QjdDMDA4NEYzM0EgLyogSlNNb2R1bGVSZWNvcmQuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5REE0QTQx
QjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmNwcCAqLzsgfTsKIAkJRTM5REE0QTcx
QjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzlEQTRBNTFCN0U4QjdDMDA4NEYzM0EgLyogSlNN
b2R1bGVSZWNvcmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQlFM0QyMzlDODFCODI5QzFDMDBCQkVGNjcgLyogSlNNb2R1bGVFbnZpcm9ubWVudC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0QyMzlD
NjFCODI5QzFDMDBCQkVGNjcgLyogSlNNb2R1bGVFbnZpcm9ubWVudC5jcHAgKi87IH07CkBAIC0z
NDQ1LDggKzM0NDksNiBAQAogCQk3MDlGQjg2NTFBRTMzNUM2MDAzOUQwNjkgLyogV2Vha1NldFBy
b3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWFrU2V0
UHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzA5RkI4NjYxQUUz
MzVDNjAwMzlEMDY5IC8qIFdlYWtTZXRQcm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV2Vha1NldFByb3RvdHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3MEIwQTlEMDFBOUI2NjIwMDAwMTMwNkEgLyogUnVudGltZUZsYWdzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJ1bnRpbWVGbGFncy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQk3MEI3OTE4MzFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnJhbWUu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR2VuZXJhdG9yRnJhbWUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3MEI3OTE4NDFDMDI0NDMyMDAyNDgx
RTIgLyogR2VuZXJhdG9yRnJhbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
R2VuZXJhdG9yRnJhbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzBCNzkxODUx
QzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1
Y3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcwQjc5MTg2MUMwMjQ0MzIw
MDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzBCNzkxODcxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVy
YXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTQyODIsMTAgKzQyODQsMTYgQEAKIAkJRTM3OTRFNzMxQjc3RUI5NzAwNTU0
M0FFIC8qIE1vZHVsZUFuYWx5emVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IE1vZHVsZUFuYWx5emVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RTM3OTRFNzQxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vZHVsZUFuYWx5emVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUUzOTYzQ0VDMUI3M0Y3NTAwMEVCNENFNSAvKiBOb2Rlc0FuYWx5emVNb2R1
bGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTm9kZXNBbmFseXpl
TW9kdWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM5RDlEODQxRDM5MDAw
NjAwNjY3MjgyIC8qIEludGVycHJldGVySW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBJbnRlcnByZXRlcklubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRTM5REE0QTQxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTW9kdWxlUmVjb3JkLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM5REE0QTUxQjdFOEI3QzAwODRGMzNBIC8qIEpT
TW9kdWxlUmVjb3JkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTW9kdWxl
UmVjb3JkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzRDIzOUM2MUI4MjlDMUMw
MEJCRUY2NyAvKiBKU01vZHVsZUVudmlyb25tZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTTW9kdWxlRW52aXJvbm1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlFM0QyMzlDNzFCODI5QzFDMDBCQkVGNjcgLyogSlNNb2R1bGVFbnZpcm9u
bWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU01vZHVsZUVudmlyb25t
ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzRDI2NDI2MUQzOEMwNDIwMDBC
RTE3NCAvKiBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzRDI2NDI3MUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRl
Y29kZUdlbmVyYXRvcmlmaWNhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlFM0QyNjQyODFEMzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNvZGVHcmFwaC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCeXRlY29kZUdyYXBoLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUUzRDI2NDI5MUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRlY29kZU1vZGlm
aWNhdGlvblNldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCeXRl
Y29kZU1vZGlmaWNhdGlvblNldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUz
RDI2NDJBMUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRlY29kZU1vZGlmaWNhdGlvblNldC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCeXRlY29kZU1vZGlmaWNhdGlvblNldC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0VGODg3MjFCNjZERjIzMDAzRjI2Q0IgLyog
SlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRTNFRjg4NzMxQjY2REYyMzAwM0YyNkNCIC8qIEpTUHJvcGVydHlOYW1lSXRlcmF0
b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNQcm9wZXJ0eU5hbWVJdGVy
YXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNDlEQzE0OTEyRUYyNjFBMDAx
ODRBMUYgLyogU291cmNlUHJvdmlkZXJDYWNoZUl0ZW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU291cmNlUHJvdmlkZXJDYWNoZUl0ZW0uaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTQ5OTgsNiArNTAwNiw3IEBACiAJCTE0MjlENzdBMEVEMjBENzMwMEI4OTYx
OSAvKiBpbnRlcnByZXRlciAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4g
PSAoCisJCQkJRTM5RDlEODQxRDM5MDAwNjAwNjY3MjgyIC8qIEludGVycHJldGVySW5saW5lcy5o
ICovLAogCQkJCTBGNTVGMEYxMTREMTA2MzYwMEFDNzY0OSAvKiBBYnN0cmFjdFBDLmNwcCAqLywK
IAkJCQkwRjU1RjBGMjE0RDEwNjM2MDBBQzc2NDkgLyogQWJzdHJhY3RQQy5oICovLAogCQkJCTE0
MjlEODVCMEVEMjE4RTkwMEI4OTYxOSAvKiBDTG9vcFN0YWNrLmNwcCAqLywKQEAgLTU2NjcsOCAr
NTY3Niw2IEBACiAJCQkJRjY5MkE4NUQwMjU1NTk3RDAxRkY2MEY3IC8qIEZ1bmN0aW9uUHJvdG90
eXBlLmggKi8sCiAJCQkJNjJEMkQzOEQxQURGMTAzRjAwMDIwNkMxIC8qIEZ1bmN0aW9uUmFyZURh
dGEuY3BwICovLAogCQkJCTYyRDJEMzhFMUFERjEwM0YwMDAyMDZDMSAvKiBGdW5jdGlvblJhcmVE
YXRhLmggKi8sCi0JCQkJNzBCNzkxODMxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZyYW1l
LmNwcCAqLywKLQkJCQk3MEI3OTE4NDFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnJhbWUu
aCAqLywKIAkJCQk3MEI3OTE4NTFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25D
b25zdHJ1Y3Rvci5jcHAgKi8sCiAJCQkJNzBCNzkxODYxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVy
YXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaCAqLywKIAkJCQk3MEI3OTE4NzFDMDI0NDMyMDAyNDgx
RTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3BwICovLApAQCAtNjU1MCw2ICs2NTU3
LDExIEBACiAJCTk2OUEwNzhGMEVEMUQzQUUwMEYxRjY4MSAvKiBieXRlY29kZSAqLyA9IHsKIAkJ
CWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJRTNEMjY0MjYxRDM4QzA0MjAw
MEJFMTc0IC8qIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcCAqLywKKwkJCQlFM0QyNjQy
NzFEMzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uaCAqLywKKwkJ
CQlFM0QyNjQyODFEMzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNvZGVHcmFwaC5oICovLAorCQkJCUUz
RDI2NDI5MUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRlY29kZU1vZGlmaWNhdGlvblNldC5jcHAgKi8s
CisJCQkJRTNEMjY0MkExRDM4QzA0MjAwMEJFMTc0IC8qIEJ5dGVjb2RlTW9kaWZpY2F0aW9uU2V0
LmggKi8sCiAJCQkJNTM3MEI0RjMxQkYyNUVBMjAwNUM0MEZDIC8qIEFkYXB0aXZlSW5mZXJyZWRQ
cm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2UuY3BwICovLAogCQkJCTUzNzBCNEY0MUJGMjVFQTIw
MDVDNDBGQyAvKiBBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnRCYXNlLmgg
Ki8sCiAJCQkJMEY4MzM1QjQxNjM5QzFFMzAwMTQ0M0I1IC8qIEFycmF5QWxsb2NhdGlvblByb2Zp
bGUuY3BwICovLApAQCAtNzEwNCw2ICs3MTE2LDcgQEAKIAkJCQkwRkVDODUyRDFCREFDREFDMDA4
MEZGNzQgLyogQjNQcm9jZWR1cmVJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVDODVC
RDFCRTE0NjJGMDA4MEZGNzQgLyogQjNSZWR1Y2VTdHJlbmd0aC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEZFQzg1MzExQkRBQ0RBQzAwODBGRjc0IC8qIEIzU3RhY2ttYXBTcGVjaWFsLmggaW4gSGVh
ZGVycyAqLywKKwkJCQlFMzI4REFFODFEMzhEMDA1MDAxQTI1MjkgLyogQnl0ZWNvZGVHZW5lcmF0
b3JpZmljYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUM4NTM1MUJEQUNEQUMwMDgwRkY3
NCAvKiBCM1Nsb3RCYXNlVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUM4NTM2MUJEQUNE
QUMwMDgwRkY3NCAvKiBCM1N1Y2Nlc3NvckNvbGxlY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGRUM4NTM4MUJEQUNEQUMwMDgwRkY3NCAvKiBCM1N3aXRjaENhc2UuaCBpbiBIZWFkZXJzICov
LApAQCAtNzM2NCw3ICs3Mzc3LDYgQEAKIAkJCQlBNzM3ODEwRTE3OTlFQTJFMDA4MTc1MzMgLyog
REZHTmF0dXJhbExvb3BzLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkVDQTNFQTEzMkRFRjFDMDAy
QjJBRDcgLyogREZHTm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGQjkyMUIxNkQwMkYwMTAw
NTVBNURCIC8qIERGR05vZGVBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovLAotCQkJCTcwQjc5MTkz
MUMwMjRBMjgwMDI0ODFFMiAvKiBHZW5lcmF0b3JGcmFtZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEZBNTgxQkIxNTBFOTUzMDAwQjlBMkQ5IC8qIERGR05vZGVGbGFncy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEYzMDBCNzgxOEFCMDUxMTAwQTZENzJFIC8qIERGR05vZGVPcmlnaW4uaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGQTU4MUJDMTUwRTk1MzAwMEI5QTJEOSAvKiBERkdOb2RlVHlwZS5oIGlu
IEhlYWRlcnMgKi8sCkBAIC03Mzc5LDYgKzczOTEsNyBAQAogCQkJCTBGRDhBMzI2MTdENTFGNTcw
MENBMkM0MCAvKiBERkdPU1JFbnRyeXBvaW50Q3JlYXRpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEZDMDk3NkExNDY4QTZGNzAwQ0YyNDQyIC8qIERGR09TUkV4aXQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGMjM1QkVDMTcxNzhFNzMwMDY5MEM3RiAvKiBERkdPU1JFeGl0QmFzZS5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJRTM5RDQ1RjUxRDM5MDA1NjAwQjNCMzc3IC8qIEludGVycHJldGVy
SW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGQjkyMUMxNkQwMkYxMTAwNTVBNURCIC8q
IERGR09TUkV4aXRDb21waWxhdGlvbkluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQzA5Nzcx
MTQ2OTNBRjUwMENGMjQ0MiAvKiBERkdPU1JFeGl0Q29tcGlsZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGNzAyNUFBMTcxNEIwRkMwMDM4MkMwRSAvKiBERkdPU1JFeGl0Q29tcGlsZXJDb21tb24u
aCBpbiBIZWFkZXJzICovLApAQCAtNzYzNiw2ICs3NjQ5LDcgQEAKIAkJCQlFMzNCM0UyNjFCN0FC
RDc1MDA0OERCMkUgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0Lmx1dC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQTUzMjQzOEMxODU2ODMzNTAwMkVENjkyIC8qIEluc3BlY3RvclByb3Rv
Y29sT2JqZWN0cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU1RDkzQUMxODUxNEY3OTAwNDAwREVE
IC8qIEluc3BlY3RvclByb3RvY29sVHlwZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzMjhEQUVC
MUQzOEQwMDUwMDFBMjUyOSAvKiBCeXRlY29kZU1vZGlmaWNhdGlvblNldC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTUwRTRCNjIxODgwOURENTAwNjhBNDZEIC8qIEluc3BlY3RvclJ1bnRpbWVBZ2Vu
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU5M0NGODMxODQwMzc3MTAwQkZDRTI3IC8qIEluc3Bl
Y3RvclZhbHVlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTY5QTA3OTkwRUQxRDNBRTAwRjFGNjgx
IC8qIEluc3RydWN0aW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTc3NjQsNiArNzc3OCw3IEBACiAJ
CQkJRTMzRjUwODExQjg0MjlBNDAwNDEzODU2IC8qIEpTSW50ZXJuYWxQcm9taXNlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRjYxODMyQTFDNDVCRjA3MDA3MjQ1MEIgLyogQWlyQ0NhbGxpbmdDb252
ZW50aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMzNGNTA3OTFCODQyMjU3MDA0MTM4NTYgLyog
SlNJbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTMyOERB
RTkxRDM4RDAwNTAwMUEyNTI5IC8qIEJ5dGVjb2RlR3JhcGguaCBpbiBIZWFkZXJzICovLAogCQkJ
CUUzM0Y1MDg3MUI4NDQ5RUYwMDQxMzg1NiAvKiBKU0ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9y
Lmx1dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTMzRjUwODUxQjg0MzdBMDAwNDEzODU2IC8qIEpT
SW50ZXJuYWxQcm9taXNlRGVmZXJyZWQuaCBpbiBIZWFkZXJzICovLAogCQkJCUUzM0Y1MDc1MUI4
NDIxQzAwMDQxMzg1NiAvKiBKU0ludGVybmFsUHJvbWlzZVByb3RvdHlwZS5oIGluIEhlYWRlcnMg
Ki8sCkBAIC04NzA1LDYgKzg3MjAsNyBAQAogCQkJCTE0N0YzOUJEMTA3RUMzNzYwMDQyN0E0OCAv
KiBBcmdMaXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNzQzQkFBMTZCODgyNDkwMDlGOTI3
NyAvKiBBUk02NERpc2Fzc2VtYmxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NkQzQjJDMzEw
MTU2QkRFMDAyODY1RTcgLyogQVJNQXNzZW1ibGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUUz
MjhEQUU3MUQzOEQwMDQwMDFBMjUyOSAvKiBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk2NUMwMjg1MDE3MTc5NUUyMDAzNTFFMzUgLyogQVJNdjdEaXNh
c3NlbWJsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNjVDMDI4NUMxNzE3OTY2ODAwMzUxRTM1
IC8qIEFSTXY3RE9wY29kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjgzMzVCNzE2MzlDMUU2
MDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAgaW4gU291cmNlcyAqLywKQEAg
LTkwMzksNiArOTA1NSw3IEBACiAJCQkJMEYyNUYxQjExODE2MzVGMzAwNTIyRjM5IC8qIEZUTFNs
b3dQYXRoQ2FsbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjMzOERGMTFCRTkzQUQxMDAxM0M4
OEYgLyogQjNTdGFja21hcFZhbHVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMjVGMUIzMTgx
NjM1RjMwMDUyMkYzOSAvKiBGVExTbG93UGF0aENhbGxLZXkuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJRTMyOERBRUExRDM4RDAwNTAwMUEyNTI5IC8qIEJ5dGVjb2RlTW9kaWZpY2F0aW9uU2V0LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTQzMTlEQTAzMUMxQkU0MEEwMDFEMjYwQiAvKiBCM0xvd2Vy
TWFjcm9zQWZ0ZXJPcHRpbWl6YXRpb25zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRUEwQTE2
MTcwNkJCOTAwMEJCNzIyQyAvKiBGVExTdGF0ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjIz
NUJFMTE3MTc4RTFDMDA2OTBDN0YgLyogRlRMVGh1bmtzLmNwcCBpbiBTb3VyY2VzICovLApAQCAt
OTQ0MCw3ICs5NDU3LDYgQEAKIAkJCQk3OUVFMEJGRjFCNEFGQjg1MDAwMzg1QzkgLyogVmFyaWFi
bGVFbnZpcm9ubWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjZDNzM1MDFBQzlGOTlGMDBC
RTE2ODIgLyogVmFyaWFibGVXcml0ZUZpcmVEZXRhaWwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MEZFMDUwMkMxQUE5MDk1NjAwRDMzQjMzIC8qIFZhck9mZnNldC5jcHAgaW4gU291cmNlcyAqLywK
LQkJCQk3MEI3OTE5MjFDMDI0QTIzMDAyNDgxRTIgLyogR2VuZXJhdG9yRnJhbWUuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEYyMEMyNTkxQTgwMTNBQjAwREEzMjI5IC8qIFZpcnR1YWxSZWdpc3Rl
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMThFM0E1OTBERjkyNzhDMDBEOTBCMzQgLyogVk0u
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkU1OTMyQTcxODNDNUEyNjAwQTFFQ0NDIC8qIFZNRW50
cnlTY29wZS5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9idWlsdGlucy9HZW5lcmF0b3JQcm90b3R5cGUuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnVpbHRpbnMvR2VuZXJhdG9yUHJvdG90eXBlLmpzCmluZGV4IDNjMTQwNjg3ZGZjN2UwMGVm
ZTkxYWU4MGIyYWM2NzZmYTliZjQ4ZjQuLjQ5OWRiZDM5MmU4MzEzZGNkZDg2ZWM4YzE2MDU2OWQ3
ZDZmNTQ5YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9HZW5l
cmF0b3JQcm90b3R5cGUuanMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0dl
bmVyYXRvclByb3RvdHlwZS5qcwpAQCAtNTEsNyArNTEsNyBAQCBmdW5jdGlvbiBnZW5lcmF0b3JS
ZXN1bWUoZ2VuZXJhdG9yLCBzZW50VmFsdWUsIHJlc3VtZU1vZGUpCiAgICAgfSBlbHNlIHsKICAg
ICAgICAgdHJ5IHsKICAgICAgICAgICAgIGdlbmVyYXRvci5AZ2VuZXJhdG9yU3RhdGUgPSBAR2Vu
ZXJhdG9yU3RhdGVFeGVjdXRpbmc7Ci0gICAgICAgICAgICB2YWx1ZSA9IGdlbmVyYXRvci5AZ2Vu
ZXJhdG9yTmV4dC5AY2FsbChnZW5lcmF0b3IuQGdlbmVyYXRvclRoaXMsIGdlbmVyYXRvciwgc3Rh
dGUsIHNlbnRWYWx1ZSwgcmVzdW1lTW9kZSk7CisgICAgICAgICAgICB2YWx1ZSA9IGdlbmVyYXRv
ci5AZ2VuZXJhdG9yTmV4dC5AY2FsbChnZW5lcmF0b3IuQGdlbmVyYXRvclRoaXMsIGdlbmVyYXRv
ciwgc3RhdGUsIHNlbnRWYWx1ZSwgcmVzdW1lTW9kZSwgZ2VuZXJhdG9yLkBnZW5lcmF0b3JGcmFt
ZSk7CiAgICAgICAgICAgICBpZiAoZ2VuZXJhdG9yLkBnZW5lcmF0b3JTdGF0ZSA9PT0gQEdlbmVy
YXRvclN0YXRlRXhlY3V0aW5nKSB7CiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLkBnZW5lcmF0
b3JTdGF0ZSA9IEBHZW5lcmF0b3JTdGF0ZUNvbXBsZXRlZDsKICAgICAgICAgICAgICAgICBkb25l
ID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZUJhc2ljQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVj
b2RlQmFzaWNCbG9jay5jcHAKaW5kZXggN2YxN2MwZWYxMGI0MzNmYWM4ZjU4Y2IzYjljYTVkNGQw
MTViYmEwOC4uNjI1NGY5MDZiMmJkOTA0ZDFkOTNmYTkwMjRjYzkzYTkwNzQ2OGI1ZiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9j
ay5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJCeXRlY29kZUJhc2ljQmxvY2suaCIK
IAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkludGVycHJldGVySW5saW5lcy5o
IgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJQcmVjaXNlSnVtcFRhcmdldHMu
aCIKIApAQCAtMTA1LDE1ICsxMDYsMjEgQEAgc3RhdGljIGJvb2wgaXNKdW1wVGFyZ2V0KE9wY29k
ZUlEIG9wY29kZUlELCBjb25zdCBWZWN0b3I8dW5zaWduZWQsIDMyPiYganVtcFRhcmcKICAgICBy
ZXR1cm4gc3RkOjpiaW5hcnlfc2VhcmNoKGp1bXBUYXJnZXRzLmJlZ2luKCksIGp1bXBUYXJnZXRz
LmVuZCgpLCBieXRlY29kZU9mZnNldCk7CiB9CiAKLXN0YXRpYyB2b2lkIGxpbmtCbG9ja3MoQnl0
ZWNvZGVCYXNpY0Jsb2NrKiBwcmVkZWNlc3NvciwgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBzdWNjZXNz
b3IpCi17Ci0gICAgcHJlZGVjZXNzb3ItPmFkZFN1Y2Nlc3NvcihzdWNjZXNzb3IpOwotfQotCi12
b2lkIGNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzKENvZGVCbG9jayogY29kZUJsb2NrLCBWZWN0
b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+JiBiYXNpY0Jsb2NrcykKK3Rl
bXBsYXRlPHR5cGVuYW1lIEJsb2NrLCB0eXBlbmFtZSBJbnN0cnVjdGlvbj4KK3ZvaWQgQnl0ZWNv
ZGVCYXNpY0Jsb2NrOjpjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2Nrc0ludGVybmFsKEJsb2NrKiBj
b2RlQmxvY2ssIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgaW5zdHJ1
Y3Rpb25Db3VudCwgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYg
YmFzaWNCbG9ja3MpCiB7CiAgICAgVmVjdG9yPHVuc2lnbmVkLCAzMj4ganVtcFRhcmdldHM7Ci0g
ICAgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhjb2RlQmxvY2ssIGp1bXBUYXJnZXRzKTsKKyAg
ICBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb25zQmVnaW4s
IGluc3RydWN0aW9uQ291bnQsIGp1bXBUYXJnZXRzKTsKKworICAgIGF1dG8gYXBwZW5kQmxvY2sg
PSBbJl0gKHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+JiYgYmxvY2spIHsKKyAg
ICAgICAgYmxvY2stPm1faW5kZXggPSBiYXNpY0Jsb2Nrcy5zaXplKCk7CisgICAgICAgIGJhc2lj
QmxvY2tzLmFwcGVuZChXVEZNb3ZlKGJsb2NrKSk7CisgICAgfTsKKworICAgIGF1dG8gbGlua0Js
b2NrcyA9IFsmXSAoQnl0ZWNvZGVCYXNpY0Jsb2NrKiBwcmVkZWNlc3NvciwgQnl0ZWNvZGVCYXNp
Y0Jsb2NrKiBzdWNjZXNzb3IpIHsKKyAgICAgICAgcHJlZGVjZXNzb3ItPmFkZFN1Y2Nlc3Nvcihz
dWNjZXNzb3IpOworICAgICAgICBzdWNjZXNzb3ItPmFkZFByZWRlY2Vzc29yKHByZWRlY2Vzc29y
KTsKKyAgICB9OwogCiAgICAgLy8gQ3JlYXRlIHRoZSBlbnRyeSBhbmQgZXhpdCBiYXNpYyBibG9j
a3MuCiAgICAgYmFzaWNCbG9ja3MucmVzZXJ2ZUNhcGFjaXR5KGp1bXBUYXJnZXRzLnNpemUoKSAr
IDIpOwpAQCAtMTIyLDE5ICsxMjksMTcgQEAgdm9pZCBjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2Nr
cyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXQKICAgICBh
dXRvIGZpcnN0QmxvY2sgPSBzdGQ6Om1ha2VfdW5pcXVlPEJ5dGVjb2RlQmFzaWNCbG9jaz4oMCwg
MCk7CiAgICAgbGlua0Jsb2NrcyhlbnRyeS5nZXQoKSwgZmlyc3RCbG9jay5nZXQoKSk7CiAKLSAg
ICBiYXNpY0Jsb2Nrcy5hcHBlbmQoV1RGTW92ZShlbnRyeSkpOworICAgIGFwcGVuZEJsb2NrKFdU
Rk1vdmUoZW50cnkpKTsKICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGN1cnJlbnQgPSBmaXJzdEJs
b2NrLmdldCgpOwotICAgIGJhc2ljQmxvY2tzLmFwcGVuZChXVEZNb3ZlKGZpcnN0QmxvY2spKTsK
KyAgICBhcHBlbmRCbG9jayhXVEZNb3ZlKGZpcnN0QmxvY2spKTsKIAogICAgIGF1dG8gZXhpdCA9
IHN0ZDo6bWFrZV91bmlxdWU8Qnl0ZWNvZGVCYXNpY0Jsb2NrPihCeXRlY29kZUJhc2ljQmxvY2s6
OkV4aXRCbG9jayk7CiAKICAgICBib29sIG5leHRJbnN0cnVjdGlvbklzTGVhZGVyID0gZmFsc2U7
CiAKICAgICBJbnRlcnByZXRlciogaW50ZXJwcmV0ZXIgPSBjb2RlQmxvY2stPnZtKCktPmludGVy
cHJldGVyOwotICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiA9IGNvZGVCbG9jay0+
aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsKLSAgICB1bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50ID0g
Y29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5zaXplKCk7CiAgICAgZm9yICh1bnNpZ25lZCBieXRl
Y29kZU9mZnNldCA9IDA7IGJ5dGVjb2RlT2Zmc2V0IDwgaW5zdHJ1Y3Rpb25Db3VudDspIHsKLSAg
ICAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoaW5zdHJ1
Y3Rpb25zQmVnaW5bYnl0ZWNvZGVPZmZzZXRdLnUub3Bjb2RlKTsKKyAgICAgICAgT3Bjb2RlSUQg
b3Bjb2RlSUQgPSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25zQmVnaW5bYnl0
ZWNvZGVPZmZzZXRdKTsKICAgICAgICAgdW5zaWduZWQgb3Bjb2RlTGVuZ3RoID0gb3Bjb2RlTGVu
Z3Roc1tvcGNvZGVJRF07CiAKICAgICAgICAgYm9vbCBjcmVhdGVkQmxvY2sgPSBmYWxzZTsKQEAg
LTE0Miw3ICsxNDcsNyBAQCB2b2lkIGNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzKENvZGVCbG9j
ayogY29kZUJsb2NrLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dAogICAgICAgICBpZiAoaXNK
dW1wVGFyZ2V0KG9wY29kZUlELCBqdW1wVGFyZ2V0cywgYnl0ZWNvZGVPZmZzZXQpIHx8IG5leHRJ
bnN0cnVjdGlvbklzTGVhZGVyKSB7CiAgICAgICAgICAgICBhdXRvIG5ld0Jsb2NrID0gc3RkOjpt
YWtlX3VuaXF1ZTxCeXRlY29kZUJhc2ljQmxvY2s+KGJ5dGVjb2RlT2Zmc2V0LCBvcGNvZGVMZW5n
dGgpOwogICAgICAgICAgICAgY3VycmVudCA9IG5ld0Jsb2NrLmdldCgpOwotICAgICAgICAgICAg
YmFzaWNCbG9ja3MuYXBwZW5kKFdURk1vdmUobmV3QmxvY2spKTsKKyAgICAgICAgICAgIGFwcGVu
ZEJsb2NrKFdURk1vdmUobmV3QmxvY2spKTsKICAgICAgICAgICAgIGNyZWF0ZWRCbG9jayA9IHRy
dWU7CiAgICAgICAgICAgICBuZXh0SW5zdHJ1Y3Rpb25Jc0xlYWRlciA9IGZhbHNlOwogICAgICAg
ICAgICAgYnl0ZWNvZGVPZmZzZXQgKz0gb3Bjb2RlTGVuZ3RoOwpAQCAtMTY5LDggKzE3NCw3IEBA
IHZvaWQgY29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFZl
Y3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0CiAKICAgICAgICAgYm9vbCBmYWxsc1Rocm91Z2ggPSB0
cnVlOyAKICAgICAgICAgZm9yICh1bnNpZ25lZCBieXRlY29kZU9mZnNldCA9IGJsb2NrLT5sZWFk
ZXJCeXRlY29kZU9mZnNldCgpOyBieXRlY29kZU9mZnNldCA8IGJsb2NrLT5sZWFkZXJCeXRlY29k
ZU9mZnNldCgpICsgYmxvY2stPnRvdGFsQnl0ZWNvZGVMZW5ndGgoKTspIHsKLSAgICAgICAgICAg
IGNvbnN0IEluc3RydWN0aW9uJiBjdXJyZW50SW5zdHJ1Y3Rpb24gPSBpbnN0cnVjdGlvbnNCZWdp
bltieXRlY29kZU9mZnNldF07Ci0gICAgICAgICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGludGVy
cHJldGVyLT5nZXRPcGNvZGVJRChjdXJyZW50SW5zdHJ1Y3Rpb24udS5vcGNvZGUpOworICAgICAg
ICAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoaW5zdHJ1
Y3Rpb25zQmVnaW5bYnl0ZWNvZGVPZmZzZXRdKTsKICAgICAgICAgICAgIHVuc2lnbmVkIG9wY29k
ZUxlbmd0aCA9IG9wY29kZUxlbmd0aHNbb3Bjb2RlSURdOwogICAgICAgICAgICAgLy8gSWYgd2Ug
Zm91bmQgYSB0ZXJtaW5hbCBieXRlY29kZSwgbGluayB0byB0aGUgZXhpdCBibG9jay4KICAgICAg
ICAgICAgIGlmIChpc1Rlcm1pbmFsKG9wY29kZUlEKSkgewpAQCAtMTg1LDcgKzE4OSw3IEBAIHZv
aWQgY29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFZlY3Rv
cjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0CiAgICAgICAgICAgICAvLyBibG9jayBiZWNhdXNlIHRoZSBm
aW5hbGx5IGJsb2NrIHdpbGwgY3JlYXRlIGl0cyBvd24gY2F0Y2gsIHdoaWNoIHdpbGwgZ2VuZXJh
dGUgYSBIYW5kbGVySW5mby4KICAgICAgICAgICAgIGlmIChpc1Rocm93KG9wY29kZUlEKSkgewog
ICAgICAgICAgICAgICAgIEFTU0VSVChieXRlY29kZU9mZnNldCArIG9wY29kZUxlbmd0aCA9PSBi
bG9jay0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKSArIGJsb2NrLT50b3RhbEJ5dGVjb2RlTGVuZ3Ro
KCkpOwotICAgICAgICAgICAgICAgIEhhbmRsZXJJbmZvKiBoYW5kbGVyID0gY29kZUJsb2NrLT5o
YW5kbGVyRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpOworICAgICAgICAgICAgICAg
IGF1dG8qIGhhbmRsZXIgPSBjb2RlQmxvY2stPmhhbmRsZXJGb3JCeXRlY29kZU9mZnNldChieXRl
Y29kZU9mZnNldCk7CiAgICAgICAgICAgICAgICAgZmFsbHNUaHJvdWdoID0gZmFsc2U7CiAgICAg
ICAgICAgICAgICAgaWYgKCFoYW5kbGVyKSB7CiAgICAgICAgICAgICAgICAgICAgIGxpbmtCbG9j
a3MoYmxvY2ssIGV4aXQuZ2V0KCkpOwpAQCAtMjA1LDcgKzIwOSw3IEBAIHZvaWQgY29tcHV0ZUJ5
dGVjb2RlQmFzaWNCbG9ja3MoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFZlY3RvcjxzdGQ6OnVuaXF1
ZV9wdHI8Qnl0CiAgICAgICAgICAgICBpZiAoaXNCcmFuY2gob3Bjb2RlSUQpKSB7CiAgICAgICAg
ICAgICAgICAgQVNTRVJUKGJ5dGVjb2RlT2Zmc2V0ICsgb3Bjb2RlTGVuZ3RoID09IGJsb2NrLT5s
ZWFkZXJCeXRlY29kZU9mZnNldCgpICsgYmxvY2stPnRvdGFsQnl0ZWNvZGVMZW5ndGgoKSk7CiAg
ICAgICAgICAgICAgICAgVmVjdG9yPHVuc2lnbmVkLCAxPiBieXRlY29kZU9mZnNldHNKdW1wZWRU
bzsKLSAgICAgICAgICAgICAgICBmaW5kSnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChjb2Rl
QmxvY2ssIGJ5dGVjb2RlT2Zmc2V0LCBieXRlY29kZU9mZnNldHNKdW1wZWRUbyk7CisgICAgICAg
ICAgICAgICAgZmluZEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoY29kZUJsb2NrLCBpbnN0
cnVjdGlvbnNCZWdpbiwgYnl0ZWNvZGVPZmZzZXQsIGJ5dGVjb2RlT2Zmc2V0c0p1bXBlZFRvKTsK
IAogICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBiYXNpY0Jsb2Nrcy5z
aXplKCk7IGkrKykgewogICAgICAgICAgICAgICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIG90
aGVyQmxvY2sgPSBiYXNpY0Jsb2Nrc1tpXS5nZXQoKTsKQEAgLTIyOSwxMCArMjMzLDIwIEBAIHZv
aWQgY29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFZlY3Rv
cjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBiYXNpY0Jsb2Nr
cy5hcHBlbmQoV1RGTW92ZShleGl0KSk7CisgICAgYXBwZW5kQmxvY2soV1RGTW92ZShleGl0KSk7
CiAgICAgCiAgICAgZm9yIChhdXRvJiBiYXNpY0Jsb2NrIDogYmFzaWNCbG9ja3MpCiAgICAgICAg
IGJhc2ljQmxvY2stPnNocmlua1RvRml0KCk7CiB9CiAKK3ZvaWQgQnl0ZWNvZGVCYXNpY0Jsb2Nr
Ojpjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2NrcyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgSW5zdHJ1
Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50LCBWZWN0
b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+JiBiYXNpY0Jsb2NrcykKK3sK
KyAgICBjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2Nrc0ludGVybmFsKGNvZGVCbG9jaywgaW5zdHJ1
Y3Rpb25zQmVnaW4sIGluc3RydWN0aW9uQ291bnQsIGJhc2ljQmxvY2tzKTsKK30KKwordm9pZCBC
eXRlY29kZUJhc2ljQmxvY2s6OmNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzKFVubGlua2VkQ29k
ZUJsb2NrKiBjb2RlQmxvY2ssIFVubGlua2VkSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2lu
LCB1bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50LCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVj
b2RlQmFzaWNCbG9jaz4+JiBiYXNpY0Jsb2NrcykKK3sKKyAgICBCeXRlY29kZUJhc2ljQmxvY2s6
OmNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzSW50ZXJuYWwoY29kZUJsb2NrLCBpbnN0cnVjdGlv
bnNCZWdpbiwgaW5zdHJ1Y3Rpb25Db3VudCwgYmFzaWNCbG9ja3MpOworfQorCiB9IC8vIG5hbWVz
cGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZUJhc2ljQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZUJhc2ljQmxvY2suaAppbmRleCBiZDdkM2FlOWJhMzQzZTFiMDcxNzllOThmMWVlODlkYTY1YmE3
ZTIwLi4xMTliZTdjNjYyMzBjOThlYTlkN2ZiMjgwOGNiZjI5NGRjMWEyYTc3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5oCkBA
IC0zNSw2ICszNSw5IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgQ29kZUJsb2NrOworY2xh
c3MgVW5saW5rZWRDb2RlQmxvY2s7CitzdHJ1Y3QgSW5zdHJ1Y3Rpb247CitzdHJ1Y3QgVW5saW5r
ZWRJbnN0cnVjdGlvbjsKIAogY2xhc3MgQnl0ZWNvZGVCYXNpY0Jsb2NrIHsKICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKQEAgLTUwLDI4ICs1MywzOSBAQCBjbGFzcyBCeXRlY29kZUJhc2lj
QmxvY2sgewogICAgIHVuc2lnbmVkIGxlYWRlckJ5dGVjb2RlT2Zmc2V0KCkgeyByZXR1cm4gbV9s
ZWFkZXJCeXRlY29kZU9mZnNldDsgfQogICAgIHVuc2lnbmVkIHRvdGFsQnl0ZWNvZGVMZW5ndGgo
KSB7IHJldHVybiBtX3RvdGFsQnl0ZWNvZGVMZW5ndGg7IH0KIAotICAgIFZlY3Rvcjx1bnNpZ25l
ZD4mIGJ5dGVjb2RlT2Zmc2V0cygpIHsgcmV0dXJuIG1fYnl0ZWNvZGVPZmZzZXRzOyB9Ci0gICAg
dm9pZCBhZGRCeXRlY29kZUxlbmd0aCh1bnNpZ25lZCk7CisgICAgY29uc3QgVmVjdG9yPHVuc2ln
bmVkPiYgYnl0ZWNvZGVPZmZzZXRzKCkgY29uc3QgeyByZXR1cm4gbV9ieXRlY29kZU9mZnNldHM7
IH0KIAotICAgIFZlY3RvcjxCeXRlY29kZUJhc2ljQmxvY2sqPiYgc3VjY2Vzc29ycygpIHsgcmV0
dXJuIG1fc3VjY2Vzc29yczsgfQotICAgIHZvaWQgYWRkU3VjY2Vzc29yKEJ5dGVjb2RlQmFzaWNC
bG9jayogYmxvY2spIHsgbV9zdWNjZXNzb3JzLmFwcGVuZChibG9jayk7IH0KKyAgICBjb25zdCBW
ZWN0b3I8Qnl0ZWNvZGVCYXNpY0Jsb2NrKj4mIHN1Y2Nlc3NvcnMoKSBjb25zdCB7IHJldHVybiBt
X3N1Y2Nlc3NvcnM7IH0KKyAgICBjb25zdCBWZWN0b3I8Qnl0ZWNvZGVCYXNpY0Jsb2NrKj4mIHBy
ZWRlY2Vzc29ycygpIGNvbnN0IHsgcmV0dXJuIG1fcHJlZGVjZXNzb3JzOyB9CiAKICAgICBGYXN0
Qml0VmVjdG9yJiBpbigpIHsgcmV0dXJuIG1faW47IH0KICAgICBGYXN0Qml0VmVjdG9yJiBvdXQo
KSB7IHJldHVybiBtX291dDsgfQogCisgICAgdW5zaWduZWQgaW5kZXgoKSBjb25zdCB7IHJldHVy
biBtX2luZGV4OyB9CisKKyAgICBzdGF0aWMgdm9pZCBjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2Nr
cyhDb2RlQmxvY2sqLCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGlu
c3RydWN0aW9uQ291bnQsIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2Nr
Pj4mKTsKKyAgICBzdGF0aWMgdm9pZCBjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2NrcyhVbmxpbmtl
ZENvZGVCbG9jayosIFVubGlua2VkSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1bnNp
Z25lZCBpbnN0cnVjdGlvbkNvdW50LCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFz
aWNCbG9jaz4+Jik7CisKIHByaXZhdGU6CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQmxvY2ssIHR5
cGVuYW1lIEluc3RydWN0aW9uPiBzdGF0aWMgdm9pZCBjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2Nr
c0ludGVybmFsKEJsb2NrKiBjb2RlQmxvY2ssIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdp
biwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCwgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRl
Y29kZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9ja3MpOworCisgICAgdm9pZCBhZGRTdWNjZXNzb3Io
Qnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaykgeyBtX3N1Y2Nlc3NvcnMuYXBwZW5kKGJsb2NrKTsg
fQorICAgIHZvaWQgYWRkUHJlZGVjZXNzb3IoQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaykgeyBt
X3ByZWRlY2Vzc29ycy5hcHBlbmQoYmxvY2spOyB9CisKKyAgICB2b2lkIGFkZEJ5dGVjb2RlTGVu
Z3RoKHVuc2lnbmVkKTsKKwogICAgIHVuc2lnbmVkIG1fbGVhZGVyQnl0ZWNvZGVPZmZzZXQ7CiAg
ICAgdW5zaWduZWQgbV90b3RhbEJ5dGVjb2RlTGVuZ3RoOworICAgIHVuc2lnbmVkIG1faW5kZXg7
CiAKICAgICBWZWN0b3I8dW5zaWduZWQ+IG1fYnl0ZWNvZGVPZmZzZXRzOwogICAgIFZlY3RvcjxC
eXRlY29kZUJhc2ljQmxvY2sqPiBtX3N1Y2Nlc3NvcnM7CisgICAgVmVjdG9yPEJ5dGVjb2RlQmFz
aWNCbG9jayo+IG1fcHJlZGVjZXNzb3JzOwogCiAgICAgRmFzdEJpdFZlY3RvciBtX2luOwogICAg
IEZhc3RCaXRWZWN0b3IgbV9vdXQ7CiB9OwogCi12b2lkIGNvbXB1dGVCeXRlY29kZUJhc2ljQmxv
Y2tzKENvZGVCbG9jayosIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2Nr
Pj4mKTsKLQogaW5saW5lIEJ5dGVjb2RlQmFzaWNCbG9jazo6Qnl0ZWNvZGVCYXNpY0Jsb2NrKHVu
c2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBsZW5ndGgpCiAgICAgOiBtX2xlYWRlckJ5dGVjb2RlT2Zm
c2V0KHN0YXJ0KQogICAgICwgbV90b3RhbEJ5dGVjb2RlTGVuZ3RoKGxlbmd0aCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNh
dGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0
b3JpZmljYXRpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU3ZDE3YzY2YWYwYWE5MDYxODZmNWU4OGI4OGMy
MTZhNWUwOGI5OTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwCkBAIC0wLDAgKzEsNTk3IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE2IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkJ5dGVjb2Rl
R2VuZXJhdG9yaWZpY2F0aW9uLmgiCisKKyNpbmNsdWRlICJCeXRlY29kZUxpdmVuZXNzQW5hbHlz
aXNJbmxpbmVzLmgiCisjaW5jbHVkZSAiQnl0ZWNvZGVNb2RpZmljYXRpb25TZXQuaCIKKyNpbmNs
dWRlICJCeXRlY29kZVVzZURlZi5oIgorI2luY2x1ZGUgIklkZW50aWZpZXJJbmxpbmVzLmgiCisj
aW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgor
I2luY2x1ZGUgIlN0cm9uZ0lubGluZXMuaCIKKyNpbmNsdWRlICJVbmxpbmtlZENvZGVCbG9jay5o
IgorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3Mg
Qnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24geworcHVibGljOgorICAgIEJ5dGVjb2RlR2VuZXJh
dG9yaWZpY2F0aW9uKFVubGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFVubGlua2VkQ29kZUJs
b2NrOjpVbnBhY2tlZEluc3RydWN0aW9ucyYgaW5zdHJ1Y3Rpb25zLCBTeW1ib2xUYWJsZSogZ2Vu
ZXJhdG9yRnJhbWVTeW1ib2xUYWJsZSwgaW50IGdlbmVyYXRvckZyYW1lU3ltYm9sVGFibGVJbmRl
eCkKKyAgICAgICAgOiBtX2dyYXBoKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb25zKQorICAgICAgICAs
IG1faW5zZXJ0aW9uU2V0KG1fZ3JhcGgpCisgICAgICAgICwgbV9nZW5lcmF0b3JGcmFtZVN5bWJv
bFRhYmxlKCpjb2RlQmxvY2stPnZtKCksIGdlbmVyYXRvckZyYW1lU3ltYm9sVGFibGUpCisgICAg
ICAgICwgbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlSW5kZXgoZ2VuZXJhdG9yRnJhbWVTeW1i
b2xUYWJsZUluZGV4KQorICAgIHsKKyAgICB9CisKKyAgICAvLyBXZSBhc3NpZ24gYSBzeW1ib2wg
dG8gYSByZWdpc3Rlci4gQnkgZG9pbmcgc28sIHdlIGFsbG9jYXRlIHRoZSBzcGVjaWZpYyB2YWx1
ZSBzdG9yYWdlIHRvIHNhdmUgdGhlIGdpdmVuIHJlZ2lzdGVyLgorICAgIC8vIFRoaXMgYWxsb3cg
dXMgbm90IHRvIHNhdmUgYWxsIHRoZSBsaXZlIHJlZ2lzdGVycyBldmVuIGlmIHRoZSByZWdpc3Rl
cnMgYXJlIG5vdCBvdmVyd3JpdHRlbiBmcm9tIHRoZSBwcmV2aW91cyByZXN1bWluZyB0aW1lLgor
CisgICAgc3RydWN0IFN0b3JhZ2UgeworICAgICAgICBJZGVudGlmaWVyIGlkZW50aWZpZXI7Cisg
ICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXJJbmRleDsKKyAgICAgICAgU2NvcGVPZmZzZXQgc2Nv
cGVPZmZzZXQ7CisgICAgfTsKKworICAgIFN0b3JhZ2Ugc3RvcmFnZUZvckdlbmVyYXRvckxvY2Fs
KHVuc2lnbmVkIGluZGV4KQorICAgIHsKKyAgICAgICAgaWYgKG1fc3RvcmFnZXMuc2l6ZSgpIDw9
IGluZGV4KQorICAgICAgICAgICAgbV9zdG9yYWdlcy5yZXNpemUoaW5kZXggKyAxKTsKKyAgICAg
ICAgaWYgKE9wdGlvbmFsPFN0b3JhZ2U+IHN0b3JhZ2UgPSBtX3N0b3JhZ2VzW2luZGV4XSkKKyAg
ICAgICAgICAgIHJldHVybiAqc3RvcmFnZTsKKworICAgICAgICBVbmxpbmtlZENvZGVCbG9jayog
Y29kZUJsb2NrID0gbV9ncmFwaC5jb2RlQmxvY2soKTsKKyAgICAgICAgSWRlbnRpZmllciBpZGVu
dGlmaWVyID0gSWRlbnRpZmllcjo6ZnJvbVVpZChQcml2YXRlTmFtZSgpKTsKKyAgICAgICAgdW5z
aWduZWQgaWRlbnRpZmllckluZGV4ID0gY29kZUJsb2NrLT5udW1iZXJPZklkZW50aWZpZXJzKCk7
CisgICAgICAgIGNvZGVCbG9jay0+YWRkSWRlbnRpZmllcihpZGVudGlmaWVyKTsKKyAgICAgICAg
U2NvcGVPZmZzZXQgc2NvcGVPZmZzZXQgPSBtX2dlbmVyYXRvckZyYW1lU3ltYm9sVGFibGUtPnRh
a2VOZXh0U2NvcGVPZmZzZXQoTm9Mb2NraW5nTmVjZXNzYXJ5KTsKKyAgICAgICAgbV9nZW5lcmF0
b3JGcmFtZVN5bWJvbFRhYmxlLT5zZXQoTm9Mb2NraW5nTmVjZXNzYXJ5LCBpZGVudGlmaWVyLmlt
cGwoKSwgU3ltYm9sVGFibGVFbnRyeShWYXJPZmZzZXQoc2NvcGVPZmZzZXQpKSk7CisKKyAgICAg
ICAgU3RvcmFnZSBzdG9yYWdlID0geworICAgICAgICAgICAgaWRlbnRpZmllciwKKyAgICAgICAg
ICAgIGlkZW50aWZpZXJJbmRleCwKKyAgICAgICAgICAgIHNjb3BlT2Zmc2V0CisgICAgICAgIH07
CisgICAgICAgIG1fc3RvcmFnZXNbaW5kZXhdID0gc3RvcmFnZTsKKyAgICAgICAgcmV0dXJuIHN0
b3JhZ2U7CisgICAgfQorCisgICAgc3RydWN0IFlpZWxkRGF0YSB7CisgICAgICAgIHNpemVfdCBz
YXZlUG9pbnQ7CisgICAgICAgIHNpemVfdCBtZXJnZVBvaW50OworICAgICAgICBzaXplX3QgcmVz
dW1lUG9pbnQ7CisgICAgICAgIEZhc3RCaXRWZWN0b3IgbGl2ZW5lc3M7CisgICAgICAgIEZhc3RC
aXRWZWN0b3IgcmVzdW1lZDsKKyAgICAgICAgRmFzdEJpdFZlY3RvciBzYXZlZDsKKyAgICB9Owor
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KKyAgICB2b2lkIGNvbXB1dGVHZW5lcmF0
b3JEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoVW5saW5rZWRDb2RlQmxvY2sqIGNvZGVCbG9jaywgT3Bj
b2RlSUQgb3Bjb2RlSUQsIFVubGlua2VkSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBGYXN0Qml0
VmVjdG9yJiBvdXQsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCisgICAgeworICAgICAgICBjb21w
dXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9jaywgb3Bjb2RlSUQsIGluc3RydWN0aW9u
LCBmdW5jdG9yKTsKKworICAgICAgICBzd2l0Y2ggKG9wY29kZUlEKSB7CisgICAgICAgIGNhc2Ug
b3Bfc2F2ZToKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBjYXNlIG9wX3Jlc3VtZTog
eworICAgICAgICAgICAgb3V0LmNsZWFyQWxsKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KKyAgICB2b2lkIGNvbXB1
dGVHZW5lcmF0b3JVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoVW5saW5rZWRDb2RlQmxvY2sqIGNvZGVC
bG9jaywgT3Bjb2RlSUQgb3Bjb2RlSUQsIFVubGlua2VkSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9u
LCBGYXN0Qml0VmVjdG9yJiwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikKKyAgICB7CisgICAgICAg
IGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoY29kZUJsb2NrLCBvcGNvZGVJRCwgaW5zdHJ1
Y3Rpb24sIGZ1bmN0b3IpOworCisgICAgICAgIHN3aXRjaCAob3Bjb2RlSUQpIHsKKyAgICAgICAg
Y2FzZSBvcF9zYXZlOgorICAgICAgICBjYXNlIG9wX3Jlc3VtZTogeworICAgICAgICAgICAgZnVu
Y3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb25bMV0udS5v
cGVyYW5kKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGRlZmF1
bHQ6CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBVc2VGdW5jdG9yLCB0eXBlbmFtZSBEZWZGdW5jdG9yPgorICAgIHZvaWQgc3Rl
cE92ZXJJbnN0cnVjdGlvbih1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgRmFzdEJpdFZlY3RvciYg
b3V0LCBjb25zdCBVc2VGdW5jdG9yJiB1c2UsIGNvbnN0IERlZkZ1bmN0b3ImIGRlZikKKyAgICB7
CisgICAgICAgIGF1dG8mIGluc3RydWN0aW9ucyA9IG1fZ3JhcGguaW5zdHJ1Y3Rpb25zKCk7Cisg
ICAgICAgIFVubGlua2VkSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uID0gJmluc3RydWN0aW9uc1ti
eXRlY29kZU9mZnNldF07CisgICAgICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW5zdHJ1Y3Rpb24t
PnUub3Bjb2RlOworICAgICAgICBVbmxpbmtlZENvZGVCbG9jayogY29kZUJsb2NrID0gbV9ncmFw
aC5jb2RlQmxvY2soKTsKKworICAgICAgICBjb21wdXRlR2VuZXJhdG9yRGVmc0ZvckJ5dGVjb2Rl
T2Zmc2V0KAorICAgICAgICAgICAgY29kZUJsb2NrLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb24sIG91
dCwKKyAgICAgICAgICAgIFsmXSAoVW5saW5rZWRDb2RlQmxvY2sqLCBVbmxpbmtlZEluc3RydWN0
aW9uKiwgT3Bjb2RlSUQsIGludCBvcGVyYW5kKSB7CisgICAgICAgICAgICAgICAgaWYgKGlzVmFs
aWRSZWdpc3RlckZvckxpdmVuZXNzKG9wZXJhbmQpKQorICAgICAgICAgICAgICAgICAgICBkZWYo
VmlydHVhbFJlZ2lzdGVyKG9wZXJhbmQpLnRvTG9jYWwoKSk7CisgICAgICAgICAgICB9KTsKKwor
ICAgICAgICBjb21wdXRlR2VuZXJhdG9yVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAorICAgICAgICAg
ICAgY29kZUJsb2NrLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb24sIG91dCwKKyAgICAgICAgICAgIFsm
XSAoVW5saW5rZWRDb2RlQmxvY2sqLCBVbmxpbmtlZEluc3RydWN0aW9uKiwgT3Bjb2RlSUQsIGlu
dCBvcGVyYW5kKSB7CisgICAgICAgICAgICAgICAgaWYgKGlzVmFsaWRSZWdpc3RlckZvckxpdmVu
ZXNzKG9wZXJhbmQpKQorICAgICAgICAgICAgICAgICAgICB1c2UoVmlydHVhbFJlZ2lzdGVyKG9w
ZXJhbmQpLnRvTG9jYWwoKSk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAvLyBJZiB3ZSBo
YXZlIGFuIGV4Y2VwdGlvbiBoYW5kbGVyLCB3ZSB3YW50IHRoZSBsaXZlLWluIHZhcmlhYmxlcyBv
ZiB0aGUKKyAgICAgICAgLy8gZXhjZXB0aW9uIGhhbmRsZXIgYmxvY2sgdG8gYmUgaW5jbHVkZWQg
aW4gdGhlIGxpdmUtaW4gb2YgdGhpcyBwYXJ0aWN1bGFyIGJ5dGVjb2RlLgorICAgICAgICBpZiAo
VW5saW5rZWRIYW5kbGVySW5mbyogaGFuZGxlciA9IGNvZGVCbG9jay0+aGFuZGxlckZvckJ5dGVj
b2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KSkgeworICAgICAgICAgICAgQnl0ZWNvZGVCYXNpY0Js
b2NrKiBoYW5kbGVyQmxvY2sgPSBtX2dyYXBoLmZpbmRCYXNpY0Jsb2NrV2l0aExlYWRlck9mZnNl
dChoYW5kbGVyLT50YXJnZXQpOworICAgICAgICAgICAgQVNTRVJUKGhhbmRsZXJCbG9jayk7Cisg
ICAgICAgICAgICBoYW5kbGVyQmxvY2stPmluKCkuZm9yRWFjaFNldEJpdCh1c2UpOworICAgICAg
ICB9CisgICAgfQorCisgICAgdm9pZCBjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJ5dGVjb2RlT2Zm
c2V0KEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2ssIHVuc2lnbmVkIHRhcmdldE9mZnNldCwgRmFz
dEJpdFZlY3RvciYgcmVzdWx0KQorICAgIHsKKyAgICAgICAgQVNTRVJUKCFibG9jay0+aXNFeGl0
QmxvY2soKSk7CisgICAgICAgIEFTU0VSVCghYmxvY2stPmlzRW50cnlCbG9jaygpKTsKKworICAg
ICAgICBGYXN0Qml0VmVjdG9yIG91dCA9IGJsb2NrLT5vdXQoKTsKKworICAgICAgICBmb3IgKGlu
dCBpID0gYmxvY2stPmJ5dGVjb2RlT2Zmc2V0cygpLnNpemUoKSAtIDE7IGkgPj0gMDsgaS0tKSB7
CisgICAgICAgICAgICB1bnNpZ25lZCBieXRlY29kZU9mZnNldCA9IGJsb2NrLT5ieXRlY29kZU9m
ZnNldHMoKVtpXTsKKyAgICAgICAgICAgIGlmICh0YXJnZXRPZmZzZXQgPiBieXRlY29kZU9mZnNl
dCkKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgc3RlcE92ZXJJbnN0cnVj
dGlvbigKKyAgICAgICAgICAgICAgICBieXRlY29kZU9mZnNldCwgb3V0LAorICAgICAgICAgICAg
ICAgIFsmXSAodW5zaWduZWQgYml0SW5kZXgpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gVGhp
cyBpcyB0aGUgdXNlIGZ1bmN0b3IsIHNvIHdlIHNldCB0aGUgYml0LgorICAgICAgICAgICAgICAg
ICAgICBvdXQuc2V0KGJpdEluZGV4KTsKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAg
ICAgIFsmXSAodW5zaWduZWQgYml0SW5kZXgpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gVGhp
cyBpcyB0aGUgZGVmIGZ1bmN0b3IsIHNvIHdlIGNsZWFyIHRoZSBiaXQuCisgICAgICAgICAgICAg
ICAgICAgIG91dC5jbGVhcihiaXRJbmRleCk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAg
IH0KKworICAgICAgICByZXN1bHQuc2V0KG91dCk7CisgICAgfQorCisgICAgdm9pZCBjb21wdXRl
TG9jYWxMaXZlbmVzc0ZvckJsb2NrKEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2spCisgICAgewor
ICAgICAgICBpZiAoYmxvY2stPmlzRXhpdEJsb2NrKCkgfHwgYmxvY2stPmlzRW50cnlCbG9jaygp
KQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJ5
dGVjb2RlT2Zmc2V0KGJsb2NrLCBibG9jay0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKSwgYmxvY2st
PmluKCkpOworICAgIH0KKworICAgIEZhc3RCaXRWZWN0b3IgZ2V0TGl2ZW5lc3NJbmZvQXRCeXRl
Y29kZU9mZnNldCh1bnNpZ25lZCBieXRlY29kZU9mZnNldCkKKyAgICB7CisgICAgICAgIEJ5dGVj
b2RlQmFzaWNCbG9jayogYmxvY2sgPSBtX2dyYXBoLmZpbmRCYXNpY0Jsb2NrRm9yQnl0ZWNvZGVP
ZmZzZXQoYnl0ZWNvZGVPZmZzZXQpOworICAgICAgICBBU1NFUlQoYmxvY2spOworICAgICAgICBB
U1NFUlQoIWJsb2NrLT5pc0VudHJ5QmxvY2soKSk7CisgICAgICAgIEFTU0VSVCghYmxvY2stPmlz
RXhpdEJsb2NrKCkpOworICAgICAgICBGYXN0Qml0VmVjdG9yIG91dDsKKyAgICAgICAgb3V0LnJl
c2l6ZShibG9jay0+b3V0KCkubnVtQml0cygpKTsKKyAgICAgICAgY29tcHV0ZUxvY2FsTGl2ZW5l
c3NGb3JCeXRlY29kZU9mZnNldChibG9jaywgYnl0ZWNvZGVPZmZzZXQsIG91dCk7CisgICAgICAg
IHJldHVybiBvdXQ7CisgICAgfQorCisgICAgdm9pZCBydW5HZW5lcmF0b3JWYXJpYWJsZUxpdmVu
ZXNzQW5hbHlzaXMoKQorICAgIHsKKyAgICAgICAgLy8gUGVyZm9ybSBtb2RpZmllZCBsaXZlbmVz
cyBhbmFseXNpcyB0byBkZXRlcm1pbmUgd2hpY2ggbG9jYWxzIGFyZSBsaXZlIGF0IHRoZSBtZXJn
ZSBwb2ludHMuCisgICAgICAgIC8vIFRoaXMgaXMgdGhlIGNvbnNlcnZhdGl2ZSByZXN1bHRzIGZv
ciB0aGUgcXVlc3Rpb24gd2hpY2ggdmFyaWFibGVzIHNob3VsZCBiZSBzYXZlZCBhbmQgcmVzdW1l
ZC4KKworICAgICAgICBVbmxpbmtlZENvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2sgPSBtX2dy
YXBoLmNvZGVCbG9jaygpOworICAgICAgICB1bnNpZ25lZCBudW1iZXJPZlZhcmlhYmxlcyA9IHVu
bGlua2VkQ29kZUJsb2NrLT5tX251bUNhbGxlZUxvY2FsczsKKyAgICAgICAgZm9yIChzdGQ6OnVu
aXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiYgYmxvY2sgOiBtX2dyYXBoLmJhc2ljQmxvY2tz
KCkpIHsKKyAgICAgICAgICAgIGJsb2NrLT5pbigpLnJlc2l6ZShudW1iZXJPZlZhcmlhYmxlcyk7
CisgICAgICAgICAgICBibG9jay0+b3V0KCkucmVzaXplKG51bWJlck9mVmFyaWFibGVzKTsKKyAg
ICAgICAgICAgIGJsb2NrLT5pbigpLmNsZWFyQWxsKCk7CisgICAgICAgICAgICBibG9jay0+b3V0
KCkuY2xlYXJBbGwoKTsKKyAgICAgICAgfQorCisgICAgICAgIGJvb2wgY2hhbmdlZDsKKyAgICAg
ICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBsYXN0QmxvY2sgPSBtX2dyYXBoLmJhc2ljQmxvY2tzKCku
bGFzdCgpLmdldCgpOworICAgICAgICBsYXN0QmxvY2stPmluKCkuY2xlYXJBbGwoKTsKKyAgICAg
ICAgbGFzdEJsb2NrLT5vdXQoKS5jbGVhckFsbCgpOworICAgICAgICBGYXN0Qml0VmVjdG9yIG5l
d091dDsKKyAgICAgICAgbmV3T3V0LnJlc2l6ZShsYXN0QmxvY2stPm91dCgpLm51bUJpdHMoKSk7
CisgICAgICAgIGRvIHsKKyAgICAgICAgICAgIGNoYW5nZWQgPSBmYWxzZTsKKyAgICAgICAgICAg
IGZvciAoc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4mIGJsb2NrIDogbV9ncmFw
aC5iYXNpY0Jsb2Nrc0luUmV2ZXJzZU9yZGVyKCkpIHsKKyAgICAgICAgICAgICAgICBuZXdPdXQu
Y2xlYXJBbGwoKTsKKyAgICAgICAgICAgICAgICBmb3IgKEJ5dGVjb2RlQmFzaWNCbG9jayogc3Vj
Y2Vzc29yIDogYmxvY2stPnN1Y2Nlc3NvcnMoKSkKKyAgICAgICAgICAgICAgICAgICAgbmV3T3V0
Lm1lcmdlKHN1Y2Nlc3Nvci0+aW4oKSk7CisgICAgICAgICAgICAgICAgYm9vbCBvdXREaWRDaGFu
Z2UgPSBibG9jay0+b3V0KCkuc2V0QW5kQ2hlY2sobmV3T3V0KTsKKyAgICAgICAgICAgICAgICBj
b21wdXRlTG9jYWxMaXZlbmVzc0ZvckJsb2NrKGJsb2NrLmdldCgpKTsKKyAgICAgICAgICAgICAg
ICBjaGFuZ2VkIHw9IG91dERpZENoYW5nZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSB3aGls
ZSAoY2hhbmdlZCk7CisKKyAgICAgICAgZm9yIChZaWVsZERhdGEmIGRhdGEgOiBtX3lpZWxkcykK
KyAgICAgICAgICAgIGRhdGEubGl2ZW5lc3MgPSBnZXRMaXZlbmVzc0luZm9BdEJ5dGVjb2RlT2Zm
c2V0KGRhdGEubWVyZ2VQb2ludCk7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRGVm
RnVuY3Rvcj4KKyAgICB2b2lkIHN0ZXBPdmVySW5zdHJ1Y3Rpb25Gb3JTYXZlZFZhcmlhYmxlcyhC
eXRlY29kZUJhc2ljQmxvY2sqLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgRmFzdEJpdFZlY3Rv
ciYgaW4sIGNvbnN0IERlZkZ1bmN0b3ImIGRlZikKKyAgICB7CisgICAgICAgIGF1dG8mIGluc3Ry
dWN0aW9ucyA9IG1fZ3JhcGguaW5zdHJ1Y3Rpb25zKCk7CisgICAgICAgIFVubGlua2VkSW5zdHJ1
Y3Rpb24qIGluc3RydWN0aW9uID0gJmluc3RydWN0aW9uc1tieXRlY29kZU9mZnNldF07CisgICAg
ICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW5zdHJ1Y3Rpb24tPnUub3Bjb2RlOworICAgICAgICBV
bmxpbmtlZENvZGVCbG9jayogY29kZUJsb2NrID0gbV9ncmFwaC5jb2RlQmxvY2soKTsKKworICAg
ICAgICAvLyBHZW5lcmF0b3IgZGVmcyBmb3IgdGhlIHJlc3VtZSBibG9ja3Mgc2hvdWxkIGJlIGNv
bnNpZGVyZWQgbnVsbC4KKyAgICAgICAgLy8gV2hpbGUgd2UgY2xlYXIgdGhlIGRlZnMgaW4gdGhl
IHJlc3VtZSBibG9jaywgY291bnQgdGhlIGRlZnMgaW4gdGhlIHNhdmUgYmxvY2sgZm9yIHRoZSBl
eGNlcHRpb24gaGFuZGxlciBibG9jay4KKyAgICAgICAgaWYgKG9wY29kZUlEID09IG9wX3Jlc3Vt
ZSkgeworICAgICAgICAgICAgaW4uY2xlYXJBbGwoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorCisgICAgICAgIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoY29kZUJsb2Nr
LCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb24sIFsmXSAoVW5saW5rZWRDb2RlQmxvY2sqLCBVbmxpbmtl
ZEluc3RydWN0aW9uKiwgT3Bjb2RlSUQsIGludCBvcGVyYW5kKSB7CisgICAgICAgICAgICBpZiAo
aXNWYWxpZFJlZ2lzdGVyRm9yTGl2ZW5lc3Mob3BlcmFuZCkpCisgICAgICAgICAgICAgICAgZGVm
KFZpcnR1YWxSZWdpc3RlcihvcGVyYW5kKS50b0xvY2FsKCkpOworICAgICAgICB9KTsKKyAgICB9
CisKKyAgICBib29sIGNvbXB1dGVMb2NhbFNhdmVkVmFyaWFibGVzRm9yQnl0ZWNvZGVPZmZzZXQo
Qnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaywgdW5zaWduZWQgdGFyZ2V0T2Zmc2V0LCBGYXN0Qml0
VmVjdG9yJiByZXN1bHQpCisgICAgeworICAgICAgICBBU1NFUlQoIWJsb2NrLT5pc0V4aXRCbG9j
aygpKTsKKyAgICAgICAgQVNTRVJUKCFibG9jay0+aXNFbnRyeUJsb2NrKCkpOworCisgICAgICAg
IEZhc3RCaXRWZWN0b3IgaW4gPSBibG9jay0+aW4oKTsKKworICAgICAgICBmb3IgKHVuc2lnbmVk
IGJ5dGVjb2RlT2Zmc2V0IDogYmxvY2stPmJ5dGVjb2RlT2Zmc2V0cygpKSB7CisgICAgICAgICAg
ICBpZiAodGFyZ2V0T2Zmc2V0IDw9IGJ5dGVjb2RlT2Zmc2V0KQorICAgICAgICAgICAgICAgIGJy
ZWFrOworCisgICAgICAgICAgICBzdGVwT3Zlckluc3RydWN0aW9uRm9yU2F2ZWRWYXJpYWJsZXMo
CisgICAgICAgICAgICAgICAgYmxvY2ssIGJ5dGVjb2RlT2Zmc2V0LCBpbiwKKyAgICAgICAgICAg
ICAgICBbJl0gKHVuc2lnbmVkIGJpdEluZGV4KSB7CisgICAgICAgICAgICAgICAgICAgIC8vIFRo
aXMgaXMgdGhlIGRlZiBmdW5jdG9yLCBzbyB3ZSBzZXQgdGhlIGJpdC4KKyAgICAgICAgICAgICAg
ICAgICAgaW4uc2V0KGJpdEluZGV4KTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgfQor
CisgICAgICAgIHJldHVybiByZXN1bHQuc2V0QW5kQ2hlY2soaW4pOworICAgIH0KKworICAgIGJv
b2wgY29tcHV0ZUxvY2FsU2F2ZWRWYXJpYWJsZXNGb3JCbG9jayhCeXRlY29kZUJhc2ljQmxvY2sq
IGJsb2NrKQorICAgIHsKKyAgICAgICAgaWYgKGJsb2NrLT5pc0V4aXRCbG9jaygpIHx8IGJsb2Nr
LT5pc0VudHJ5QmxvY2soKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0
dXJuIGNvbXB1dGVMb2NhbFNhdmVkVmFyaWFibGVzRm9yQnl0ZWNvZGVPZmZzZXQoYmxvY2ssIGJs
b2NrLT5sZWFkZXJCeXRlY29kZU9mZnNldCgpICsgYmxvY2stPnRvdGFsQnl0ZWNvZGVMZW5ndGgo
KSwgYmxvY2stPm91dCgpKTsKKyAgICB9CisKKyAgICBGYXN0Qml0VmVjdG9yIGdldFNhdmVkVmFy
aWFibGVzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpCisgICAg
eworICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrID0gbV9ncmFwaC5maW5kQmFzaWNC
bG9ja0ZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KTsKKyAgICAgICAgQVNTRVJUKGJs
b2NrKTsKKyAgICAgICAgQVNTRVJUKCFibG9jay0+aXNFbnRyeUJsb2NrKCkpOworICAgICAgICBB
U1NFUlQoIWJsb2NrLT5pc0V4aXRCbG9jaygpKTsKKyAgICAgICAgRmFzdEJpdFZlY3RvciBpbjsK
KyAgICAgICAgaW4ucmVzaXplKGJsb2NrLT5pbigpLm51bUJpdHMoKSk7CisgICAgICAgIGNvbXB1
dGVMb2NhbFNhdmVkVmFyaWFibGVzRm9yQnl0ZWNvZGVPZmZzZXQoYmxvY2ssIGJ5dGVjb2RlT2Zm
c2V0LCBpbik7CisgICAgICAgIHJldHVybiBpbjsKKyAgICB9CisKKyAgICB2b2lkIHJ1blNhdmVk
VmFyaWFibGVzQW5hbHlzaXMoKQorICAgIHsKKyAgICAgICAgLy8gSWYgd2Ugc2F2ZSBhbGwgdGhl
IHZhcmlhYmxlIHRoYXQgd2lsbCBiZSByZXN1bWVkLCBpdCdzIE9LLgorICAgICAgICAvLyBCdXQg
d2UgY2FuIGF2b2lkIHNvbWUgc2F2ZWQgdmFyaWFibGVzIHRoYXQgYXJlIG9ubHkgZGVmaW5lZCBi
eSB0aGUgcHJldmlvdXMgb3BfcmVzdW1lLgorICAgICAgICAvLworICAgICAgICAvLyBJbiB0aGlz
IHBoYXNlLCB3ZSBwZXJmb3JtIGZvcndhcmQgYW5hbHlzaXMgdG8gZXh0cmFjdCB3aGljaCB2YXJp
YWJsZXMgbmVlZCB0byBiZSBuZXdseSBzYXZlZCB3aGVuIGV4ZWN1dGluZyBvcF9zYXZlLgorICAg
ICAgICAvLyBXZSBjYWxjdWxhdGUgdGhlIHJlZ2lzdGVycyB0aGF0IGlzIGRlZmluZWQgaW4gbm9u
LW9wX3Jlc3VtZSBhbmQgY2FuIHJlYWNoIHRvIHRoZSBvcF9zYXZlLgorICAgICAgICAvLworICAg
ICAgICAvLyAgIG9wX3Jlc3VtZSwgZGVmaW5lIHIxCisgICAgICAgIC8vICAgLi4uCisgICAgICAg
IC8vICAgLi4uCisgICAgICAgIC8vICAgbm8tanVtcHMgJiBubyByMSBkZWZzLgorICAgICAgICAv
LyAgIC4uLgorICAgICAgICAvLyAgIG9wX3NhdmUgICMgSGVyZSwgaXQgaXMgbm90IG5lY2Vzc2Fy
eSB0byBzYXZlIHIxLgorICAgICAgICBVbmxpbmtlZENvZGVCbG9jayogdW5saW5rZWRDb2RlQmxv
Y2sgPSBtX2dyYXBoLmNvZGVCbG9jaygpOworCisgICAgICAgIC8vIFdlIGNvbnNpZGVyIHRoZSBi
YXNpYyBibG9ja3Mgd2l0aGluIHRoZSB0cnkgcmFuZ2UgYXJlIGNvbnNpZGVyZWQgYXMgdGhlIGlt
cGxpY2l0IHByZWRlY2Vzc29ycyBvZiB0aGUgaGFuZGxlcnMuCisgICAgICAgIC8vIFRoZSBkZWZz
IGluIHRoZXNlIGJhc2ljIGJsb2NrcyBhcmUgY2FycmllZCB0byB0aGUgZXhjZXB0aW9uIGhhbmRs
ZXIuIEFuZCBpZiB0aGUgb3Bfc2F2ZSBpcyBleGVjdXRlZCBpbiB0aGUgaGFuZGxlciwKKyAgICAg
ICAgLy8gY2FycmllZCBkZWZzIGFyZSBjb25zaWRlcmVkLgorICAgICAgICAvLworICAgICAgICAv
LyBIZXJlLCB3ZSBhZGQgdGhlIHdob2xlIGJhc2ljIGJsb2NrcyBhcyB0aGUgaW1wbGljaXQgcHJl
ZGVjZXNzb3JzIG9mIHRoZSBoYW5kbGVycyBmb3Igc2ltcGxpY2l0eS4KKyAgICAgICAgLy8gVGhp
cyBpcyBhIGxpdHRsZSBiaXQgY29uc2VydmF0aXZlOiB0aGUgdHJ5IHJhbmdlIG1heSBub3QgY292
ZXIgYWxsIHRoZSBiYXNpYyBibG9jay4gQnV0IHNpbmNlIHRoZSBvdXQgc2V0IHN0YXR1cyBhdAor
ICAgICAgICAvLyB0aGUgdGFpbCBvZiB0aGUgYmFzaWMgYmxvY2sgaXMgYWx3YXlzIGxhcmdlciB0
aGFuIHRoZSBvdXQgc2V0IHN0YXR1cyBpbiB0aGUgbWlkZGxlIG9mIHRoZSBiYXNpYyBibG9ja3Ms
IHRoaXMgZG9lcyBub3QKKyAgICAgICAgLy8gZmFpbCB0byBrZWVwIHRoZSB2YXJpYWJsZXMgdGhh
dCBzaG91bGQgYmUgc2F2ZWQuCisgICAgICAgIC8vCisgICAgICAgIC8vIE9ubHkgdGhlIGV4ZXB0
aW9uIGlzIHRoZSBvcF9yZXN1bWUgYmxvY2suIEJ1dCBzaW5jZSB0aGUgcmFuZ2UgYmV0d2VlbiB0
aGUganVtcCB0YXJnZXQgZnJvbSB0aGUgZ2xvYmFsIGRpc3BhdGNoIGFuZCBvcF9yZXN1bWUKKyAg
ICAgICAgLy8gaXMgbmV2ZXIgY292ZXJ0ZWQgYnkgdGhlIHRyeSByYW5nZSwgaXQncyBub3QgYSBw
cm9ibGVtLgorICAgICAgICBWZWN0b3I8T3B0aW9uYWw8RmFzdEJpdFZlY3Rvcj4+IHBvc3NpYmxl
UHJlZGVjZXNzb3JzRm9ySGFuZGxlcnM7CisgICAgICAgIHBvc3NpYmxlUHJlZGVjZXNzb3JzRm9y
SGFuZGxlcnMucmVzaXplKG1fZ3JhcGguYmFzaWNCbG9ja3MoKS5zaXplKCkpOworICAgICAgICB7
CisgICAgICAgICAgICBhdXRvJiBpbnN0cnVjdGlvbnMgPSBtX2dyYXBoLmluc3RydWN0aW9ucygp
OworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHVubGlua2VkQ29kZUJsb2Nr
LT5udW1iZXJPZkV4Y2VwdGlvbkhhbmRsZXJzKCk7ICsraSkgeworICAgICAgICAgICAgICAgIGF1
dG8mIGhhbmRsZXIgPSB1bmxpbmtlZENvZGVCbG9jay0+ZXhjZXB0aW9uSGFuZGxlcihpKTsKKwor
ICAgICAgICAgICAgICAgIEZhc3RCaXRWZWN0b3IgcHJlZGVjZXNzb3JzOworICAgICAgICAgICAg
ICAgIHByZWRlY2Vzc29ycy5yZXNpemUobV9ncmFwaC5iYXNpY0Jsb2NrcygpLnNpemUoKSk7Cisg
ICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBieXRlY29kZU9mZnNldCA9IGhhbmRsZXIuc3Rh
cnQ7IGJ5dGVjb2RlT2Zmc2V0IDwgaGFuZGxlci5lbmQ7KSB7CisgICAgICAgICAgICAgICAgICAg
IFVubGlua2VkSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uID0gJmluc3RydWN0aW9uc1tieXRlY29k
ZU9mZnNldF07CisgICAgICAgICAgICAgICAgICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW5zdHJ1
Y3Rpb24tPnUub3Bjb2RlOworICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBvcGNvZGVMZW5n
dGggPSBvcGNvZGVMZW5ndGhzW29wY29kZUlEXTsKKworICAgICAgICAgICAgICAgICAgICBCeXRl
Y29kZUJhc2ljQmxvY2sqIHBvc3NpYmxlUHJlZGVjZXNzb3IgPSBtX2dyYXBoLmZpbmRCYXNpY0Js
b2NrRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpOworICAgICAgICAgICAgICAgICAg
ICBSRUxFQVNFX0FTU0VSVChwb3NzaWJsZVByZWRlY2Vzc29yKTsKKyAgICAgICAgICAgICAgICAg
ICAgcHJlZGVjZXNzb3JzLnNldChwb3NzaWJsZVByZWRlY2Vzc29yLT5pbmRleCgpKTsKKworICAg
ICAgICAgICAgICAgICAgICBieXRlY29kZU9mZnNldCArPSBvcGNvZGVMZW5ndGg7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogaGFuZGxlckJs
b2NrID0gbV9ncmFwaC5maW5kQmFzaWNCbG9ja1dpdGhMZWFkZXJPZmZzZXQoaGFuZGxlci50YXJn
ZXQpOworICAgICAgICAgICAgICAgIHBvc3NpYmxlUHJlZGVjZXNzb3JzRm9ySGFuZGxlcnNbaGFu
ZGxlckJsb2NrLT5pbmRleCgpXSA9IFdURk1vdmUocHJlZGVjZXNzb3JzKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorCisgICAgICAgIHVuc2lnbmVkIG51bWJlck9mVmFyaWFibGVzID0gdW5s
aW5rZWRDb2RlQmxvY2stPm1fbnVtQ2FsbGVlTG9jYWxzOworICAgICAgICBmb3IgKHN0ZDo6dW5p
cXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+JiBibG9jayA6IG1fZ3JhcGguYmFzaWNCbG9ja3Mo
KSkgeworICAgICAgICAgICAgYmxvY2stPmluKCkucmVzaXplKG51bWJlck9mVmFyaWFibGVzKTsK
KyAgICAgICAgICAgIGJsb2NrLT5vdXQoKS5yZXNpemUobnVtYmVyT2ZWYXJpYWJsZXMpOworICAg
ICAgICAgICAgYmxvY2stPmluKCkuY2xlYXJBbGwoKTsKKyAgICAgICAgICAgIGJsb2NrLT5vdXQo
KS5jbGVhckFsbCgpOworICAgICAgICB9CisKKyAgICAgICAgYm9vbCBjaGFuZ2VkOworICAgICAg
ICBCeXRlY29kZUJhc2ljQmxvY2sqIGZpcnN0QmxvY2sgPSBtX2dyYXBoLmJhc2ljQmxvY2tzKCku
Zmlyc3QoKS5nZXQoKTsKKyAgICAgICAgRmFzdEJpdFZlY3RvciBuZXdJbjsKKyAgICAgICAgbmV3
SW4ucmVzaXplKGZpcnN0QmxvY2stPmluKCkubnVtQml0cygpKTsKKyAgICAgICAgZG8geworICAg
ICAgICAgICAgY2hhbmdlZCA9IGZhbHNlOworICAgICAgICAgICAgZm9yIChzdGQ6OnVuaXF1ZV9w
dHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiYgYmxvY2sgOiBtX2dyYXBoLmJhc2ljQmxvY2tzKCkpIHsK
KyAgICAgICAgICAgICAgICBuZXdJbi5jbGVhckFsbCgpOworICAgICAgICAgICAgICAgIGJvb2wg
bWVyZ2VCbG9jayA9IG1fbWVyZ2VCbG9ja3MuZ2V0KGJsb2NrLT5pbmRleCgpKTsKKyAgICAgICAg
ICAgICAgICBmb3IgKEJ5dGVjb2RlQmFzaWNCbG9jayogcHJlZGVjZXNzb3IgOiBibG9jay0+cHJl
ZGVjZXNzb3JzKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gTWVyZ2UgdGhlIG91dCBzZXQg
b2YgdGhlIGluY29tbWluZyBwcmVkZWNlc3NvcnMgdW5sZXNzIHRoZSBjdXJyZW50IGJsb2NrIGlz
IHRoZSBtZXJnZSBibG9jayBhbmQgdGhlIHByZWRlY2Vzc29yIGlzIHRoZSBzYXZlIGJsb2NrLgor
ICAgICAgICAgICAgICAgICAgICAvLyBXZSB3b3VsZCBsaWtlIHRvIHJlY29yZCB0aGUgb3V0IHNl
dCBvZiB0aGUgc2F2ZSBibG9jayBzaW5jZSB0aGlzIG91dCBzZXQgd291bGQgYmUgbGF0ZXIgdXNl
ZCBhcyB0aGUgZGVmcyBmb3IgdGhlIGV4Y2VwdGlvbiBoYW5kbGVycy4KKyAgICAgICAgICAgICAg
ICAgICAgLy8gQnV0IHdlIGRvbid0IHdhbnQgdG8gbWVyZ2UgdGhlIGRlZnMgZnJvbSB0aGUgc2F2
ZSBibG9jayBhdCB0aGUgbWVyZ2UgYmxvY2ssIHNpbmNlIHRoZXNlIGRlZnMgc2hvdWxkIGJlIHNh
dmVkIGluIHRoZSBzYXZlIGJsb2NrIGFuZAorICAgICAgICAgICAgICAgICAgICAvLyBub3QgcmVs
YXRlZCB0byB0aGUgbWVyZ2UgYmxvY2suCisgICAgICAgICAgICAgICAgICAgIGlmICghKG1lcmdl
QmxvY2sgJiYgbV9zYXZlQmxvY2tzLmdldChwcmVkZWNlc3Nvci0+aW5kZXgoKSkpKQorICAgICAg
ICAgICAgICAgICAgICAgICAgbmV3SW4ubWVyZ2UocHJlZGVjZXNzb3ItPm91dCgpKTsKKyAgICAg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAoYXV0byYgb3B0aW9uYWxQcmVkZWNl
c3NvclNldCA9IHBvc3NpYmxlUHJlZGVjZXNzb3JzRm9ySGFuZGxlcnNbYmxvY2stPmluZGV4KCld
KSB7CisgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsUHJlZGVjZXNzb3JTZXQtPmZvckVhY2hT
ZXRCaXQoWyZdICh1bnNpZ25lZCBibG9ja0luZGV4KSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICBuZXdJbi5tZXJnZShtX2dyYXBoLmJhc2ljQmxvY2tzKClbYmxvY2tJbmRleF0tPm91dCgpKTsK
KyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICAgICAgYmxvY2stPmluKCkuc2V0KG5ld0luKTsKKyAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9
IGNvbXB1dGVMb2NhbFNhdmVkVmFyaWFibGVzRm9yQmxvY2soYmxvY2suZ2V0KCkpOworICAgICAg
ICAgICAgfQorICAgICAgICB9IHdoaWxlIChjaGFuZ2VkKTsKKworICAgICAgICBmb3IgKFlpZWxk
RGF0YSYgZGF0YSA6IG1feWllbGRzKSB7CisgICAgICAgICAgICBkYXRhLnNhdmVkID0gZGF0YS5s
aXZlbmVzczsKKyAgICAgICAgICAgIGRhdGEuc2F2ZWQuZmlsdGVyKGdldFNhdmVkVmFyaWFibGVz
SW5mb0F0Qnl0ZWNvZGVPZmZzZXQoZGF0YS5zYXZlUG9pbnQpKTsKKyAgICAgICAgfQorICAgIH0K
KworICAgIEZhc3RCaXRWZWN0b3IgZ2V0UmVzdW1lZFZhcmlhYmxlc0luZm9BdEJ5dGVjb2RlT2Zm
c2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KQorICAgIHsKKyAgICAgICAgQnl0ZWNvZGVCYXNp
Y0Jsb2NrKiBibG9jayA9IG1fZ3JhcGguZmluZEJhc2ljQmxvY2tGb3JCeXRlY29kZU9mZnNldChi
eXRlY29kZU9mZnNldCk7CisgICAgICAgIEFTU0VSVChibG9jayk7CisgICAgICAgIEFTU0VSVCgh
YmxvY2stPmlzRW50cnlCbG9jaygpKTsKKyAgICAgICAgQVNTRVJUKCFibG9jay0+aXNFeGl0Qmxv
Y2soKSk7CisgICAgICAgIEZhc3RCaXRWZWN0b3Igb3V0OworICAgICAgICBvdXQucmVzaXplKGJs
b2NrLT5vdXQoKS5udW1CaXRzKCkpOworICAgICAgICBjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJ5
dGVjb2RlT2Zmc2V0KGJsb2NrLCBieXRlY29kZU9mZnNldCwgb3V0KTsKKyAgICAgICAgcmV0dXJu
IG91dDsKKyAgICB9CisKKyAgICB2b2lkIHJ1blJlc3VtZWRWYXJpYWJsZXNBbmFseXNpcygpCisg
ICAgeworICAgICAgICBVbmxpbmtlZENvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2sgPSBtX2dy
YXBoLmNvZGVCbG9jaygpOworICAgICAgICB1bnNpZ25lZCBudW1iZXJPZlZhcmlhYmxlcyA9IHVu
bGlua2VkQ29kZUJsb2NrLT5tX251bUNhbGxlZUxvY2FsczsKKyAgICAgICAgZm9yIChzdGQ6OnVu
aXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiYgYmxvY2sgOiBtX2dyYXBoLmJhc2ljQmxvY2tz
KCkpIHsKKyAgICAgICAgICAgIGJsb2NrLT5pbigpLnJlc2l6ZShudW1iZXJPZlZhcmlhYmxlcyk7
CisgICAgICAgICAgICBibG9jay0+b3V0KCkucmVzaXplKG51bWJlck9mVmFyaWFibGVzKTsKKyAg
ICAgICAgICAgIGJsb2NrLT5pbigpLmNsZWFyQWxsKCk7CisgICAgICAgICAgICBibG9jay0+b3V0
KCkuY2xlYXJBbGwoKTsKKyAgICAgICAgfQorCisgICAgICAgIGJvb2wgY2hhbmdlZDsKKyAgICAg
ICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBsYXN0QmxvY2sgPSBtX2dyYXBoLmJhc2ljQmxvY2tzKCku
bGFzdCgpLmdldCgpOworICAgICAgICBsYXN0QmxvY2stPmluKCkuY2xlYXJBbGwoKTsKKyAgICAg
ICAgbGFzdEJsb2NrLT5vdXQoKS5jbGVhckFsbCgpOworICAgICAgICBGYXN0Qml0VmVjdG9yIG5l
d091dDsKKyAgICAgICAgbmV3T3V0LnJlc2l6ZShsYXN0QmxvY2stPm91dCgpLm51bUJpdHMoKSk7
CisgICAgICAgIGRvIHsKKyAgICAgICAgICAgIGNoYW5nZWQgPSBmYWxzZTsKKyAgICAgICAgICAg
IGZvciAoc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4mIGJsb2NrIDogbV9ncmFw
aC5iYXNpY0Jsb2Nrc0luUmV2ZXJzZU9yZGVyKCkpIHsKKyAgICAgICAgICAgICAgICBuZXdPdXQu
Y2xlYXJBbGwoKTsKKyAgICAgICAgICAgICAgICBib29sIHNhdmVCbG9jayA9IG1fc2F2ZUJsb2Nr
cy5nZXQoYmxvY2stPmluZGV4KCkpOworICAgICAgICAgICAgICAgIGZvciAoQnl0ZWNvZGVCYXNp
Y0Jsb2NrKiBzdWNjZXNzb3IgOiBibG9jay0+c3VjY2Vzc29ycygpKSB7CisgICAgICAgICAgICAg
ICAgICAgIGlmICghKHNhdmVCbG9jayAmJiBtX21lcmdlQmxvY2tzLmdldChzdWNjZXNzb3ItPmlu
ZGV4KCkpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ld091dC5tZXJnZShzdWNjZXNzb3It
PmluKCkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBib29sIG91dERpZENo
YW5nZSA9IGJsb2NrLT5vdXQoKS5zZXRBbmRDaGVjayhuZXdPdXQpOworICAgICAgICAgICAgICAg
IGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQmxvY2soYmxvY2suZ2V0KCkpOworICAgICAgICAgICAg
ICAgIGNoYW5nZWQgfD0gb3V0RGlkQ2hhbmdlOworICAgICAgICAgICAgfQorICAgICAgICB9IHdo
aWxlIChjaGFuZ2VkKTsKKworICAgICAgICBmb3IgKFlpZWxkRGF0YSYgZGF0YSA6IG1feWllbGRz
KSB7CisgICAgICAgICAgICBkYXRhLnJlc3VtZWQgPSBkYXRhLmxpdmVuZXNzOworICAgICAgICAg
ICAgZGF0YS5yZXN1bWVkLmZpbHRlcihnZXRSZXN1bWVkVmFyaWFibGVzSW5mb0F0Qnl0ZWNvZGVP
ZmZzZXQoZGF0YS5tZXJnZVBvaW50KSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIHJ1
bigpCisgICAgeworICAgICAgICBtX21lcmdlQmxvY2tzLnJlc2l6ZShtX2dyYXBoLmJhc2ljQmxv
Y2tzKCkuc2l6ZSgpKTsKKyAgICAgICAgbV9zYXZlQmxvY2tzLnJlc2l6ZShtX2dyYXBoLmJhc2lj
QmxvY2tzKCkuc2l6ZSgpKTsKKworICAgICAgICBmb3IgKHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29k
ZUJhc2ljQmxvY2s+JiBibG9jayA6IG1fZ3JhcGguYmFzaWNCbG9ja3MoKSkgeworICAgICAgICAg
ICAgZm9yICh1bnNpZ25lZCBieXRlY29kZU9mZnNldCA6IGJsb2NrLT5ieXRlY29kZU9mZnNldHMo
KSkgeworICAgICAgICAgICAgICAgIGNvbnN0IFVubGlua2VkSW5zdHJ1Y3Rpb24qIHBjID0gJm1f
Z3JhcGguaW5zdHJ1Y3Rpb25zKClbYnl0ZWNvZGVPZmZzZXRdOworICAgICAgICAgICAgICAgIHN3
aXRjaCAocGMtPnUub3Bjb2RlKSB7CisgICAgICAgICAgICAgICAgY2FzZSBvcF9zYXZlOiB7Cisg
ICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9IHBjWzJd
LnUuaW5kZXg7CisgICAgICAgICAgICAgICAgICAgIGludCBvZmZzZXQgPSBwY1szXS51Lm9wZXJh
bmQ7CisgICAgICAgICAgICAgICAgICAgIGlmIChsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPj0gbV95
aWVsZHMuc2l6ZSgpKQorICAgICAgICAgICAgICAgICAgICAgICAgbV95aWVsZHMucmVzaXplKGxp
dmVDYWxsZWVMb2NhbHNJbmRleCArIDEpOworICAgICAgICAgICAgICAgICAgICBtX3lpZWxkc1ts
aXZlQ2FsbGVlTG9jYWxzSW5kZXhdLnNhdmVQb2ludCA9IGJ5dGVjb2RlT2Zmc2V0OworICAgICAg
ICAgICAgICAgICAgICB1bnNpZ25lZCBtZXJnZVBvaW50ID0gYnl0ZWNvZGVPZmZzZXQgKyBvZmZz
ZXQ7CisgICAgICAgICAgICAgICAgICAgIG1feWllbGRzW2xpdmVDYWxsZWVMb2NhbHNJbmRleF0u
bWVyZ2VQb2ludCA9IG1lcmdlUG9pbnQ7CisgICAgICAgICAgICAgICAgICAgIG1fbWVyZ2VCbG9j
a3Muc2V0KG1fZ3JhcGguZmluZEJhc2ljQmxvY2tGb3JCeXRlY29kZU9mZnNldChtZXJnZVBvaW50
KS0+aW5kZXgoKSk7CisgICAgICAgICAgICAgICAgICAgIG1fc2F2ZUJsb2Nrcy5zZXQoYmxvY2st
PmluZGV4KCkpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgICAgICBjYXNlIG9wX3Jlc3VtZTogeworICAgICAgICAgICAgICAgICAg
ICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSBwY1syXS51LmluZGV4OworICAgICAg
ICAgICAgICAgICAgICBpZiAobGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID49IG1feWllbGRzLnNpemUo
KSkKKyAgICAgICAgICAgICAgICAgICAgICAgIG1feWllbGRzLnJlc2l6ZShsaXZlQ2FsbGVlTG9j
YWxzSW5kZXggKyAxKTsKKyAgICAgICAgICAgICAgICAgICAgbV95aWVsZHNbbGl2ZUNhbGxlZUxv
Y2Fsc0luZGV4XS5yZXN1bWVQb2ludCA9IGJ5dGVjb2RlT2Zmc2V0OworICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBGaXJzdCwgd2UgY2FsY3VsYXRlIHRoZSBs
aXZlbmVzcyBhdCBlYWNoIG1lcmdlIHBvaW50LiBUaGlzIGdpdmVzIHVzIHRoZSBpbmZvcm1hdGlv
biB3aGljaCByZWdpc3RlcnMgc2hvdWxkIGJlIHNhdmVkIGFuZCByZXN1bWVkIGNvbnNlcnZhdGl2
ZWx5LgorICAgICAgICAvLyBIb3dldmVyLCB0aGlzIGluZm9ybWF0aW9uIGlzIHRvbyBjb25zZXJ2
YXRpdmUuIFdlIG5vdyB1bm5lY2Vzc2FyaWx5IHNhdmUgYW5kIHJlc3VtZSB0aGUgcmVnaXN0ZXJz
LgorICAgICAgICAvLyBXaGVuIHRoZSBsb2NhbCByZWdpc3RlciBpcyByZWZlcmVuY2VkIGZyb20g
dGhlIHBvaW50IHdoaWNoIGlzIG92ZXIgbXVsdGlwbGUgeWllbGRzLCB0aGUgcHJvYmxlbSBoYXBw
ZW5zLgorICAgICAgICAvLworICAgICAgICAvLyAgIGZ1bmN0aW9uICpnZW4oKQorICAgICAgICAv
LyAgIHsKKyAgICAgICAgLy8gICAgICAgdmFyIHRhcmdldCA9IDQyOworICAgICAgICAvLyAgICAg
ICB5aWVsZCAzMDsgIC8vIEhlcmUsIHdlIHNob3VsZCBzYXZlICJ0YXJnZXQiLiBJdCBpcyBvay4g
QnV0IGF0IHRoZSByZXN1bWUgcG9pbnQsIHdlIHVubmVjZXNzYXJ5IHJlc3VtZSAidGFyZ2V0IiBo
ZXJlLgorICAgICAgICAvLyAgICAgICB5aWVsZCA0MDsgIC8vIEFuZCBoZXJlLCB3ZSB1bm5lY2Vz
c2FyaWx5IHNhdmUgInRhcmdldCIsIHNpbmNlIGl0IGlzICpkZWYqaW5lZCBieSB0aGUgcHJldmlv
dXMgcmVzdW1lLgorICAgICAgICAvLyAgICAgICB5aWVsZCB0YXJnZXQ7ICAvLyBBbmQgcmVmZXJl
bmNlIHRoZSAidGFyZ2V0IiBoZXJlLgorICAgICAgICAvLyAgIH0KKyAgICAgICAgLy8KKyAgICAg
ICAgLy8gSW4gdGhlIGFib3ZlIGV4YW1wbGUsIGZpcnN0IHlpZWxkJ3MgcmVzdW1lIGFuZCBzZWNv
bmQgeWllbGQncyBzYXZlIGlzIHVubmVjZXNzYXJ5IHNpbmNlIHRoZSB2YWx1ZSBpcyBub3QgY2hh
bmdlZCBkdXJpbmcgdGhlIHNlY29uZCBjYWxsIG9mIG5leHQoKS4KKyAgICAgICAgLy8gVG8gcmVk
dWNlIHRoZSB1bm5lY2Vzc2FyeSByZWdpc3RlciBzYXZlIGFuZCByZXN1bWUsIHdlIHJ1biAyIGFu
YWx5c2lzLCAicmVzdW1lZCB2YXJpYWJsZXMgYW5hbHlzaXMiIGFuZCAic2F2ZWQgdmFyaWFibGVz
IGFuYWx5c2lzIi4KKyAgICAgICAgLy8gQXQgdGhhdCB0aW1lLCB3ZSBkcm9wIHRoZSBlZGdlIGZy
b20gb3Bfc2F2ZSB0byB0aGUgbWVyZ2UgcG9pbnQuIFNvIHRoZSBncmFwaCBub3cgYmVjb21lcyBh
cyBmb2xsb3dzLgorICAgICAgICAvLworICAgICAgICAvLyBCZWZvcmU6CisgICAgICAgIC8vICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIChvZiBjb3VyY2UsIHN1Y2ggZWRnZXMgY2FuIGJlIHNlZW4pCisg
ICAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcF9yZXQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0rCisgICAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBeICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIC8vICAgICAgICAgZW50cnkgLT4gZ2VuZXJh
dG9yIHN3aXRjaCAtLS0tPiBvcF9zYXZlIC0tLS0tLS0tLS0tLS0tKyAgICAgICAgICAgICAgIHwg
ICAgICAgIG9wX3JldCAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIC8vICAgICAgICAgICAg
ICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdiAgICAg
ICAgICAgICAgIHwgICAgICAgICAgXiAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgIC8v
ICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tPiBvcF9yZXN1bWUgLS0tLS0+
IG1lcmdlIHBvaW50IC0+IC4uLi4uLisuLi4uLi0+IG9wX3NhdmUgLS0tLS0rICAgICAgICAgICB8
CisgICAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2
ICAgICAgICAgICB2CisgICAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPiBvcF9yZXN1bWUg
LS0tLT4gbWVyZ2UgcG9pbnQgLT4gLi4uLi4uCisgICAgICAgIC8vCisgICAgICAgIC8vIEFmdGVy
OgorICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob2YgY291cmNlLCBzdWNoIGVkZ2Vz
IGNhbiBiZSBzZWVuKQorICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgb3BfcmV0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAgICAvLyAgICAgICAg
IGVudHJ5IC0+IGdlbmVyYXRvciBzd2l0Y2ggLS0tLT4gb3Bfc2F2ZSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8ICAgICAgICBvcF9yZXQgICAgICAgICAgICAgICAgICAgfAorICAgICAg
ICAvLyAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgIF4gICAgICAgICAgICAgICAgICAg
ICAgfAorICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLT4g
b3BfcmVzdW1lIC0tLS0tPiBtZXJnZSBwb2ludCAtPiAuLi4uLi4rLi4uLi4tPiBvcF9zYXZlICAg
ICAgICAgICAgICAgICAgfAorICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgIHwgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdgorICAgICAgICAvLyAgICAgICAgICAgICAgICAg
ICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLT4gb3BfcmVzdW1lIC0tLS0+IG1lcmdlIHBvaW50IC0+IC4uLi4uLgorICAgICAgICAvLwor
ICAgICAgICAvLyBJbiByZXN1bWVkIHZhcmlhYmxlcyBhbmFseXNpcywgd2UganVzdCBydW4gdGhl
IGxpdmVuZXNzIGFuYWx5c2lzIGFnYWluIG9udG8gdGhpcyAiQWZ0ZXIiIGdyYXBoLiBUaGUgYW5h
bHlzaXMgZXh0cmFjdHMgdGhlIGxpdmVuZXNzIGF0IG1lcmdlIHBvaW50LAorICAgICAgICAvLyBh
bmQgdGhpcyBsaXZlbmVzcyBvbmx5IGNvbnNpZGVycyB0aGUgcmVhY2hhYmxlIGJsb2NrcyBmcm9t
IHRoZSB0YXJnZXQgb3BfcmVzdW1lLiBUaGUgcmVzdWx0IHJlZ2lzdGVycyBhcmUgc21hbGxlciBz
ZXQgdGhhbiB0aGUgc2V0IHdoaWNoIGlzIGV4dHJhY3RlZCBpbgorICAgICAgICAvLyB0aGUgcHJl
dmlvdXMgbGl2ZW5lc3MgYW5hbHlzaXMuCisgICAgICAgIC8vCisgICAgICAgIC8vIEluIHNhdmVk
IHZhcmlhYmxlcyBhbmFseXNpcywgd2UgcnVuIHRoZSBmb3J3YXJkIGFuYWx5c2lzIG9udG8gdGhp
cyAiQWZ0ZXIiIGdyYXBoLiBJbiB0aGlzIGZvcndhcmQgYW5hbHlzaXMsIHdlIHByb3BhZ2F0ZSB0
aGUgImRlZiJzLgorICAgICAgICAvLyBUaGlzIGFuYWx5c2lzIGV4dHJhY3RzIHRoZSBuZXdseSBk
ZWYtZWQgcmVnaXN0ZXJzIHRoYXQgY2FuIHJlYWNoIHRvIHRoZSBvcF9zYXZlIHBvaW50LiBCdXQg
dGhpcyBuZXdseSBkZWYtZWQgcmVnaXN0ZXJzIGluY2x1ZGUgdGhlIHJlZ2lzdGVycyB0aGF0IHdv
bid0IGJlCisgICAgICAgIC8vIHVzZWQgaW4gdGhlIHN1YnNlcXVlbnQgbmV4dCgpIGNhbGxzIGFm
dGVyIHRoaXMgb3Bfc2F2ZS4gU28gd2UgZXh0cmFjdCB0aGUgbmVjZXNzYXJpbHkgc2F2ZWQgcmVn
aXN0ZXJzIGJ5IG1hc2tpbmcgbGl2ZSByZWdpc3RlcnMgd2l0aCB0aGlzIG5ld2x5IGRlZi1lZCBy
ZWdpc3RlcnMgYml0IHNldC4KKworICAgICAgICBydW5HZW5lcmF0b3JWYXJpYWJsZUxpdmVuZXNz
QW5hbHlzaXMoKTsKKworICAgICAgICBydW5SZXN1bWVkVmFyaWFibGVzQW5hbHlzaXMoKTsKKwor
ICAgICAgICBydW5TYXZlZFZhcmlhYmxlc0FuYWx5c2lzKCk7CisKKyAgICAgICAgVW5saW5rZWRD
b2RlQmxvY2sqIGNvZGVCbG9jayA9IG1fZ3JhcGguY29kZUJsb2NrKCk7CisgICAgICAgIGZvciAo
Y29uc3QgWWllbGREYXRhJiBkYXRhIDogbV95aWVsZHMpIHsKKyAgICAgICAgICAgIFZpcnR1YWxS
ZWdpc3RlciBzY29wZSA9IHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KDUpOworCisgICAgICAg
ICAgICAvLyBvcF9zYXZlLgorICAgICAgICAgICAgZGF0YS5zYXZlZC5mb3JFYWNoU2V0Qml0KFsm
XShzaXplX3QgaW5kZXgpIHsKKyAgICAgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFu
ZCA9IHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGluZGV4KTsKKyAgICAgICAgICAgICAgICBTdG9y
YWdlIHN0b3JhZ2UgPSBzdG9yYWdlRm9yR2VuZXJhdG9yTG9jYWwoaW5kZXgpOworCisgICAgICAg
ICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0KGRhdGEuc2F2ZVBvaW50LCBCeXRlY29kZU1v
ZGlmaWNhdGlvblNldDo6SW5zZXJ0ZWRCeXRlY29kZSB7IHsKKyAgICAgICAgICAgICAgICAgICAg
b3BfcHV0X3RvX3Njb3BlLAorICAgICAgICAgICAgICAgICAgICBzY29wZS5vZmZzZXQoKSwgLy8g
c2NvcGUKKyAgICAgICAgICAgICAgICAgICAgc3RvcmFnZS5pZGVudGlmaWVySW5kZXgsIC8vIGlk
ZW50aWZpZXIKKyAgICAgICAgICAgICAgICAgICAgb3BlcmFuZC5vZmZzZXQoKSwgLy8gdmFsdWUK
KyAgICAgICAgICAgICAgICAgICAgR2V0UHV0SW5mbyhEb05vdFRocm93SWZOb3RGb3VuZCwgTG9j
YWxDbG9zdXJlVmFyLCBJbml0aWFsaXphdGlvbk1vZGU6Ok5vdEluaXRpYWxpemF0aW9uKS5vcGVy
YW5kKCksIC8vIGluZm8KKyAgICAgICAgICAgICAgICAgICAgbV9nZW5lcmF0b3JGcmFtZVN5bWJv
bFRhYmxlSW5kZXgsIC8vIHN5bWJvbCB0YWJsZSBjb25zdGFudCBpbmRleAorICAgICAgICAgICAg
ICAgICAgICBzdG9yYWdlLnNjb3BlT2Zmc2V0Lm9mZnNldCgpLCAvLyBzY29wZSBvZmZzZXQKKyAg
ICAgICAgICAgICAgICB9IH0pOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIC8vIG9w
X3Jlc3VtZS4KKyAgICAgICAgICAgIGRhdGEucmVzdW1lZC5mb3JFYWNoU2V0Qml0KFsmXShzaXpl
X3QgaW5kZXgpIHsKKyAgICAgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCA9IHZp
cnR1YWxSZWdpc3RlckZvckxvY2FsKGluZGV4KTsKKyAgICAgICAgICAgICAgICBTdG9yYWdlIHN0
b3JhZ2UgPSBzdG9yYWdlRm9yR2VuZXJhdG9yTG9jYWwoaW5kZXgpOworCisgICAgICAgICAgICAg
ICAgVW5saW5rZWRWYWx1ZVByb2ZpbGUgcHJvZmlsZSA9IGNvZGVCbG9jay0+YWRkVmFsdWVQcm9m
aWxlKCk7CisgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0KGRhdGEucmVzdW1l
UG9pbnQsIEJ5dGVjb2RlTW9kaWZpY2F0aW9uU2V0OjpJbnNlcnRlZEJ5dGVjb2RlIHsgeworICAg
ICAgICAgICAgICAgICAgICBvcF9nZXRfZnJvbV9zY29wZSwKKyAgICAgICAgICAgICAgICAgICAg
b3BlcmFuZC5vZmZzZXQoKSwgLy8gZHN0CisgICAgICAgICAgICAgICAgICAgIHNjb3BlLm9mZnNl
dCgpLCAvLyBzY29wZQorICAgICAgICAgICAgICAgICAgICBzdG9yYWdlLmlkZW50aWZpZXJJbmRl
eCwgLy8gaWRlbnRpZmllcgorICAgICAgICAgICAgICAgICAgICBHZXRQdXRJbmZvKERvTm90VGhy
b3dJZk5vdEZvdW5kLCBMb2NhbENsb3N1cmVWYXIsIEluaXRpYWxpemF0aW9uTW9kZTo6Tm90SW5p
dGlhbGl6YXRpb24pLm9wZXJhbmQoKSwgLy8gaW5mbworICAgICAgICAgICAgICAgICAgICAwLCAv
LyBsb2NhbCBzY29wZSBkZXB0aAorICAgICAgICAgICAgICAgICAgICBzdG9yYWdlLnNjb3BlT2Zm
c2V0Lm9mZnNldCgpLCAvLyBzY29wZSBvZmZzZXQKKyAgICAgICAgICAgICAgICAgICAgcHJvZmls
ZSAvLyBwcm9maWxlCisgICAgICAgICAgICAgICAgfSB9KTsKKyAgICAgICAgICAgIH0pOworCisg
ICAgICAgICAgICAvLyBDbGlwIHRoZSB1bm5lY2Vzc2FyeSBieXRlY29kZXMuCisgICAgICAgICAg
ICBtX2luc2VydGlvblNldC5yZW1vdmVCeXRlY29kZShkYXRhLnNhdmVQb2ludCk7CisgICAgICAg
ICAgICBtX2luc2VydGlvblNldC5yZW1vdmVCeXRlY29kZShkYXRhLnJlc3VtZVBvaW50KTsKKyAg
ICAgICAgfQorCisgICAgICAgIG1faW5zZXJ0aW9uU2V0LmV4ZWN1dGUoKTsKKyAgICB9CisKK3By
aXZhdGU6CisgICAgQnl0ZWNvZGVHcmFwaDxVbmxpbmtlZENvZGVCbG9jaz4gbV9ncmFwaDsKKyAg
ICBCeXRlY29kZU1vZGlmaWNhdGlvblNldCBtX2luc2VydGlvblNldDsKKyAgICBWZWN0b3I8T3B0
aW9uYWw8U3RvcmFnZT4+IG1fc3RvcmFnZXM7CisgICAgVmVjdG9yPFlpZWxkRGF0YT4gbV95aWVs
ZHM7CisgICAgRmFzdEJpdFZlY3RvciBtX21lcmdlQmxvY2tzOworICAgIEZhc3RCaXRWZWN0b3Ig
bV9zYXZlQmxvY2tzOworICAgIFN0cm9uZzxTeW1ib2xUYWJsZT4gbV9nZW5lcmF0b3JGcmFtZVN5
bWJvbFRhYmxlOworICAgIGludCBtX2dlbmVyYXRvckZyYW1lU3ltYm9sVGFibGVJbmRleDsKK307
CisKK3ZvaWQgcGVyZm9ybUdlbmVyYXRvcmlmaWNhdGlvbihVbmxpbmtlZENvZGVCbG9jayogY29k
ZUJsb2NrLCBVbmxpbmtlZENvZGVCbG9jazo6VW5wYWNrZWRJbnN0cnVjdGlvbnMmIGluc3RydWN0
aW9ucywgU3ltYm9sVGFibGUqIGdlbmVyYXRvckZyYW1lU3ltYm9sVGFibGUsIGludCBnZW5lcmF0
b3JGcmFtZVN5bWJvbFRhYmxlSW5kZXgpCit7CisgICAgQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRp
b24gcGFzcyhjb2RlQmxvY2ssIGluc3RydWN0aW9ucywgZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJs
ZSwgZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZUluZGV4KTsKKyAgICBwYXNzLnJ1bigpOworfQor
Cit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWI3
ZWM5NmVkNzBkYmJhMjIxMTFlYjEzNzczM2ZiMjAwNTViMTExYQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlv
bi5oCkBAIC0wLDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgWXVzdWtlIFN1
enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2luY2x1ZGUgIlVubGlua2VkQ29kZUJsb2NrLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFz
cyBTeW1ib2xUYWJsZTsKKwordm9pZCBwZXJmb3JtR2VuZXJhdG9yaWZpY2F0aW9uKFVubGlua2Vk
Q29kZUJsb2NrKiwgVW5saW5rZWRDb2RlQmxvY2s6OlVucGFja2VkSW5zdHJ1Y3Rpb25zJiwgU3lt
Ym9sVGFibGUqIGdlbmVyYXRvckZyYW1lU3ltYm9sVGFibGUsIGludCBnZW5lcmF0b3JGcmFtZVN5
bWJvbFRhYmxlSW5kZXgpOworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUdyYXBoLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVHcmFwaC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI3NTU4NGIwZmE5
NDczZWIxMTMyOWM4OWEwNzk5YzAxZGU1NWIyODEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVHcmFwaC5oCkBAIC0wLDAgKzEsMTE0IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdt
YWlsLmNvbT4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBCeXRlY29kZUdyYXBoX2gKKyNkZWZpbmUgQnl0
ZWNvZGVHcmFwaF9oCisKKyNpbmNsdWRlICJCeXRlY29kZUJhc2ljQmxvY2suaCIKKyNpbmNsdWRl
IDx3dGYvSXRlcmF0b3JSYW5nZS5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNw
YWNlIEpTQyB7CisKK2NsYXNzIEJ5dGVjb2RlQmFzaWNCbG9jazsKKwordGVtcGxhdGU8dHlwZW5h
bWUgQmxvY2s+CitjbGFzcyBCeXRlY29kZUdyYXBoIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShCeXRlY29kZUdyYXBoKTsKK3B1YmxpYzoK
KyAgICB0eXBlZGVmIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4g
QmFzaWNCbG9ja3NWZWN0b3I7CisKKyAgICBpbmxpbmUgQnl0ZWNvZGVHcmFwaChCbG9jayosIHR5
cGVuYW1lIEJsb2NrOjpVbnBhY2tlZEluc3RydWN0aW9ucyYpOworCisgICAgQmxvY2sqIGNvZGVC
bG9jaygpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrOyB9CisKKyAgICBCYXNpY0Jsb2Nrc1Zl
Y3RvciYgYmFzaWNCbG9ja3MoKSB7IHJldHVybiBtX2Jhc2ljQmxvY2tzOyB9CisKKyAgICB0eXBl
bmFtZSBCbG9jazo6VW5wYWNrZWRJbnN0cnVjdGlvbnMmIGluc3RydWN0aW9ucygpIHsgcmV0dXJu
IG1faW5zdHJ1Y3Rpb25zOyB9CisKKyAgICBXVEY6Okl0ZXJhdG9yUmFuZ2U8QmFzaWNCbG9ja3NW
ZWN0b3I6OnJldmVyc2VfaXRlcmF0b3I+IGJhc2ljQmxvY2tzSW5SZXZlcnNlT3JkZXIoKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIFdURjo6bWFrZUl0ZXJhdG9yUmFuZ2UobV9iYXNpY0Jsb2Nrcy5y
YmVnaW4oKSwgbV9iYXNpY0Jsb2Nrcy5yZW5kKCkpOworICAgIH0KKworICAgIHN0YXRpYyBib29s
IGJsb2NrQ29udGFpbnNCeXRlY29kZU9mZnNldChCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrLCB1
bnNpZ25lZCBieXRlY29kZU9mZnNldCkKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIGxlYWRlck9m
ZnNldCA9IGJsb2NrLT5sZWFkZXJCeXRlY29kZU9mZnNldCgpOworICAgICAgICByZXR1cm4gYnl0
ZWNvZGVPZmZzZXQgPj0gbGVhZGVyT2Zmc2V0ICYmIGJ5dGVjb2RlT2Zmc2V0IDwgbGVhZGVyT2Zm
c2V0ICsgYmxvY2stPnRvdGFsQnl0ZWNvZGVMZW5ndGgoKTsKKyAgICB9CisKKyAgICBCeXRlY29k
ZUJhc2ljQmxvY2sqIGZpbmRCYXNpY0Jsb2NrRm9yQnl0ZWNvZGVPZmZzZXQodW5zaWduZWQgYnl0
ZWNvZGVPZmZzZXQpCisgICAgeworICAgICAgICAvKgorICAgICAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IG1fYmFzaWNCbG9ja3Muc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgICAgICAg
ICBpZiAoYmxvY2tDb250YWluc0J5dGVjb2RlT2Zmc2V0KG1fYmFzaWNCbG9ja3NbaV0uZ2V0KCks
IGJ5dGVjb2RlT2Zmc2V0KSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1fYmFzaWNCbG9j
a3NbaV0uZ2V0KCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAg
ICAgKi8KKworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiogYmFz
aWNCbG9jayA9IGFwcHJveGltYXRlQmluYXJ5U2VhcmNoPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29k
ZUJhc2ljQmxvY2s+LCB1bnNpZ25lZD4obV9iYXNpY0Jsb2NrcywgbV9iYXNpY0Jsb2Nrcy5zaXpl
KCksIGJ5dGVjb2RlT2Zmc2V0LCBbXSAoc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9j
az4qIGJhc2ljQmxvY2spIHsgcmV0dXJuICgqYmFzaWNCbG9jayktPmxlYWRlckJ5dGVjb2RlT2Zm
c2V0KCk7IH0pOworICAgICAgICAvLyBXZSBmb3VuZCB0aGUgYmxvY2sgd2Ugd2VyZSBsb29raW5n
IGZvci4KKyAgICAgICAgaWYgKGJsb2NrQ29udGFpbnNCeXRlY29kZU9mZnNldCgoKmJhc2ljQmxv
Y2spLmdldCgpLCBieXRlY29kZU9mZnNldCkpCisgICAgICAgICAgICByZXR1cm4gKCpiYXNpY0Js
b2NrKS5nZXQoKTsKKworICAgICAgICAvLyBCYXNpYyBibG9jayBpcyB0byB0aGUgbGVmdCBvZiB0
aGUgcmV0dXJuZWQgYmxvY2suCisgICAgICAgIGlmIChieXRlY29kZU9mZnNldCA8ICgqYmFzaWNC
bG9jayktPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCkpIHsKKyAgICAgICAgICAgIEFTU0VSVChiYXNp
Y0Jsb2NrIC0gMSA+PSBtX2Jhc2ljQmxvY2tzLmRhdGEoKSk7CisgICAgICAgICAgICBBU1NFUlQo
YmxvY2tDb250YWluc0J5dGVjb2RlT2Zmc2V0KGJhc2ljQmxvY2tbLTFdLmdldCgpLCBieXRlY29k
ZU9mZnNldCkpOworICAgICAgICAgICAgcmV0dXJuIGJhc2ljQmxvY2tbLTFdLmdldCgpOworICAg
ICAgICB9CisKKyAgICAgICAgLy8gQmFzaWMgYmxvY2sgaXMgdG8gdGhlIHJpZ2h0IG9mIHRoZSBy
ZXR1cm5lZCBibG9jay4KKyAgICAgICAgQVNTRVJUKCZiYXNpY0Jsb2NrWzFdIDw9ICZtX2Jhc2lj
QmxvY2tzLmxhc3QoKSk7CisgICAgICAgIEFTU0VSVChibG9ja0NvbnRhaW5zQnl0ZWNvZGVPZmZz
ZXQoYmFzaWNCbG9ja1sxXS5nZXQoKSwgYnl0ZWNvZGVPZmZzZXQpKTsKKyAgICAgICAgcmV0dXJu
IGJhc2ljQmxvY2tbMV0uZ2V0KCk7CisgICAgfQorCisgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBm
aW5kQmFzaWNCbG9ja1dpdGhMZWFkZXJPZmZzZXQodW5zaWduZWQgbGVhZGVyT2Zmc2V0KQorICAg
IHsKKyAgICAgICAgcmV0dXJuICgqdHJ5QmluYXJ5U2VhcmNoPHN0ZDo6dW5pcXVlX3B0cjxCeXRl
Y29kZUJhc2ljQmxvY2s+LCB1bnNpZ25lZD4obV9iYXNpY0Jsb2NrcywgbV9iYXNpY0Jsb2Nrcy5z
aXplKCksIGxlYWRlck9mZnNldCwgW10gKHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxv
Y2s+KiBiYXNpY0Jsb2NrKSB7IHJldHVybiAoKmJhc2ljQmxvY2spLT5sZWFkZXJCeXRlY29kZU9m
ZnNldCgpOyB9KSkuZ2V0KCk7CisgICAgfQorCitwcml2YXRlOgorICAgIEJsb2NrKiBtX2NvZGVC
bG9jazsKKyAgICBCYXNpY0Jsb2Nrc1ZlY3RvciBtX2Jhc2ljQmxvY2tzOworICAgIHR5cGVuYW1l
IEJsb2NrOjpVbnBhY2tlZEluc3RydWN0aW9ucyYgbV9pbnN0cnVjdGlvbnM7Cit9OworCisKK3Rl
bXBsYXRlPHR5cGVuYW1lIEJsb2NrPgorQnl0ZWNvZGVHcmFwaDxCbG9jaz46OkJ5dGVjb2RlR3Jh
cGgoQmxvY2sqIGNvZGVCbG9jaywgdHlwZW5hbWUgQmxvY2s6OlVucGFja2VkSW5zdHJ1Y3Rpb25z
JiBpbnN0cnVjdGlvbnMpCisgICAgOiBtX2NvZGVCbG9jayhjb2RlQmxvY2spCisgICAgLCBtX2lu
c3RydWN0aW9ucyhpbnN0cnVjdGlvbnMpCit7CisgICAgQVNTRVJUKG1fY29kZUJsb2NrKTsKKyAg
ICBCeXRlY29kZUJhc2ljQmxvY2s6OmNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzKG1fY29kZUJs
b2NrLCBpbnN0cnVjdGlvbnMuYmVnaW4oKSwgaW5zdHJ1Y3Rpb25zLnNpemUoKSwgbV9iYXNpY0Js
b2Nrcyk7CisgICAgQVNTRVJUKG1fYmFzaWNCbG9ja3Muc2l6ZSgpKTsKK30KKworfSAvLyBuYW1l
c3BhY2UgSlNDCisjZW5kaWYgLy8gQnl0ZWNvZGVHcmFwaF9oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3Bw
CmluZGV4IDE3ZTgyYTJmYmJhMDE1MDQzZTk5ZDM0ZWQyNTY5MzcyYjM2ZjdhODUuLmViNDU5ZDEy
OTdjOWY3MzllZTlmYmFhMTMwMzdmODlmOGU4NmFiMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3Bw
CkBAIC0zMSw3NCArMzEsMjEgQEAKICNpbmNsdWRlICJCeXRlY29kZVVzZURlZi5oIgogI2luY2x1
ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkZ1bGxCeXRlY29kZUxpdmVuZXNzLmgiCisjaW5j
bHVkZSAiSW50ZXJwcmV0ZXJJbmxpbmVzLmgiCiAjaW5jbHVkZSAiUHJlY2lzZUp1bXBUYXJnZXRz
LmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCiBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OkJ5dGVj
b2RlTGl2ZW5lc3NBbmFseXNpcyhDb2RlQmxvY2sqIGNvZGVCbG9jaykKLSAgICA6IG1fY29kZUJs
b2NrKGNvZGVCbG9jaykKKyAgICA6IG1fZ3JhcGgoY29kZUJsb2NrLCBjb2RlQmxvY2stPmluc3Ry
dWN0aW9ucygpKQogewotICAgIEFTU0VSVChtX2NvZGVCbG9jayk7CiAgICAgY29tcHV0ZSgpOwog
fQogCi1zdGF0aWMgYm9vbCBpc1ZhbGlkUmVnaXN0ZXJGb3JMaXZlbmVzcyhDb2RlQmxvY2sqIGNv
ZGVCbG9jaywgaW50IG9wZXJhbmQpCi17Ci0gICAgaWYgKGNvZGVCbG9jay0+aXNDb25zdGFudFJl
Z2lzdGVySW5kZXgob3BlcmFuZCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKLSAgICBW
aXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZyhvcGVyYW5kKTsKLSAgICByZXR1cm4gdmlydHVhbFJl
Zy5pc0xvY2FsKCk7Ci19Ci0KLXN0YXRpYyB1bnNpZ25lZCBnZXRMZWFkZXJPZmZzZXRGb3JCYXNp
Y0Jsb2NrKHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+KiBiYXNpY0Jsb2NrKQot
ewotICAgIHJldHVybiAoKmJhc2ljQmxvY2spLT5sZWFkZXJCeXRlY29kZU9mZnNldCgpOwotfQot
Ci1zdGF0aWMgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBmaW5kQmFzaWNCbG9ja1dpdGhMZWFkZXJPZmZz
ZXQoVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9j
a3MsIHVuc2lnbmVkIGxlYWRlck9mZnNldCkKLXsKLSAgICByZXR1cm4gKCp0cnlCaW5hcnlTZWFy
Y2g8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4sIHVuc2lnbmVkPihiYXNpY0Js
b2NrcywgYmFzaWNCbG9ja3Muc2l6ZSgpLCBsZWFkZXJPZmZzZXQsIGdldExlYWRlck9mZnNldEZv
ckJhc2ljQmxvY2spKS5nZXQoKTsKLX0KLQotc3RhdGljIGJvb2wgYmxvY2tDb250YWluc0J5dGVj
b2RlT2Zmc2V0KEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlT2Zm
c2V0KQotewotICAgIHVuc2lnbmVkIGxlYWRlck9mZnNldCA9IGJsb2NrLT5sZWFkZXJCeXRlY29k
ZU9mZnNldCgpOwotICAgIHJldHVybiBieXRlY29kZU9mZnNldCA+PSBsZWFkZXJPZmZzZXQgJiYg
Ynl0ZWNvZGVPZmZzZXQgPCBsZWFkZXJPZmZzZXQgKyBibG9jay0+dG90YWxCeXRlY29kZUxlbmd0
aCgpOwotfQotCi1zdGF0aWMgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBmaW5kQmFzaWNCbG9ja0ZvckJ5
dGVjb2RlT2Zmc2V0KFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4m
IGJhc2ljQmxvY2tzLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCkKLXsKLS8qCi0gICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IGJhc2ljQmxvY2tzLnNpemUoKTsgaSsrKSB7Ci0gICAgICAgIGlm
IChibG9ja0NvbnRhaW5zQnl0ZWNvZGVPZmZzZXQoYmFzaWNCbG9ja3NbaV0uZ2V0KCksIGJ5dGVj
b2RlT2Zmc2V0KSkKLSAgICAgICAgICAgIHJldHVybiBiYXNpY0Jsb2Nrc1tpXS5nZXQoKTsKLSAg
ICB9Ci0gICAgcmV0dXJuIDA7Ci0qLwotICAgIHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2lj
QmxvY2s+KiBiYXNpY0Jsb2NrID0gYXBwcm94aW1hdGVCaW5hcnlTZWFyY2g8c3RkOjp1bmlxdWVf
cHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4sIHVuc2lnbmVkPigKLSAgICAgICAgYmFzaWNCbG9ja3Ms
IGJhc2ljQmxvY2tzLnNpemUoKSwgYnl0ZWNvZGVPZmZzZXQsIGdldExlYWRlck9mZnNldEZvckJh
c2ljQmxvY2spOwotICAgIC8vIFdlIGZvdW5kIHRoZSBibG9jayB3ZSB3ZXJlIGxvb2tpbmcgZm9y
LgotICAgIGlmIChibG9ja0NvbnRhaW5zQnl0ZWNvZGVPZmZzZXQoKCpiYXNpY0Jsb2NrKS5nZXQo
KSwgYnl0ZWNvZGVPZmZzZXQpKQotICAgICAgICByZXR1cm4gKCpiYXNpY0Jsb2NrKS5nZXQoKTsK
LQotICAgIC8vIEJhc2ljIGJsb2NrIGlzIHRvIHRoZSBsZWZ0IG9mIHRoZSByZXR1cm5lZCBibG9j
ay4KLSAgICBpZiAoYnl0ZWNvZGVPZmZzZXQgPCAoKmJhc2ljQmxvY2spLT5sZWFkZXJCeXRlY29k
ZU9mZnNldCgpKSB7Ci0gICAgICAgIEFTU0VSVChiYXNpY0Jsb2NrIC0gMSA+PSBiYXNpY0Jsb2Nr
cy5kYXRhKCkpOwotICAgICAgICBBU1NFUlQoYmxvY2tDb250YWluc0J5dGVjb2RlT2Zmc2V0KGJh
c2ljQmxvY2tbLTFdLmdldCgpLCBieXRlY29kZU9mZnNldCkpOwotICAgICAgICByZXR1cm4gYmFz
aWNCbG9ja1stMV0uZ2V0KCk7Ci0gICAgfQotCi0gICAgLy8gQmFzaWMgYmxvY2sgaXMgdG8gdGhl
IHJpZ2h0IG9mIHRoZSByZXR1cm5lZCBibG9jay4KLSAgICBBU1NFUlQoJmJhc2ljQmxvY2tbMV0g
PD0gJmJhc2ljQmxvY2tzLmxhc3QoKSk7Ci0gICAgQVNTRVJUKGJsb2NrQ29udGFpbnNCeXRlY29k
ZU9mZnNldChiYXNpY0Jsb2NrWzFdLmdldCgpLCBieXRlY29kZU9mZnNldCkpOwotICAgIHJldHVy
biBiYXNpY0Jsb2NrWzFdLmdldCgpOwotfQotCiAvLyBTaW1wbGlmaWVkIGludGVyZmFjZSB0byBi
eXRlY29kZSB1c2UvZGVmLCB3aGljaCBkZXRlcm1pbmVzIGRlZnMgZmlyc3QgYW5kIHRoZW4gdXNl
cywgYW5kIGluY2x1ZGVzCiAvLyBleGNlcHRpb24gaGFuZGxlcnMgaW4gdGhlIHVzZXMuCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBVc2VGdW5jdG9yLCB0eXBlbmFtZSBEZWZGdW5jdG9yPgotc3RhdGljIHZv
aWQgc3RlcE92ZXJJbnN0cnVjdGlvbihDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVCYXNp
Y0Jsb2NrKiBibG9jaywgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+
PiYgYmFzaWNCbG9ja3MsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBjb25zdCBVc2VGdW5jdG9y
JiB1c2UsIGNvbnN0IERlZkZ1bmN0b3ImIGRlZikKK3N0YXRpYyB2b2lkIHN0ZXBPdmVySW5zdHJ1
Y3Rpb24oQnl0ZWNvZGVHcmFwaDxDb2RlQmxvY2s+JiBncmFwaCwgdW5zaWduZWQgYnl0ZWNvZGVP
ZmZzZXQsIGNvbnN0IFVzZUZ1bmN0b3ImIHVzZSwgY29uc3QgRGVmRnVuY3RvciYgZGVmKQogewog
ICAgIC8vIFRoaXMgYWJzdHJhY3RseSBleGVjdXRlIHRoZSBpbnN0cnVjdGlvbiBpbiByZXZlcnNl
LiBJbnN0cnVjdGlvbnMgbG9naWNhbGx5IGZpcnN0IHVzZSBvcGVyYW5kcyBhbmQKICAgICAvLyB0
aGVuIGRlZmluZSBvcGVyYW5kcy4gVGhpcyBsb2dpY2FsIG9yZGVyaW5nIGlzIG5lY2Vzc2FyeSBm
b3Igb3BlcmF0aW9ucyB0aGF0IHVzZSBhbmQgZGVmIHRoZSBzYW1lCkBAIC0xMTUsNDEgKzYyLDM1
IEBAIHN0YXRpYyB2b2lkIHN0ZXBPdmVySW5zdHJ1Y3Rpb24oQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2ssCiAgICAgLy8gdXNlcyBiZWZvcmUgZGVmcywgdGhl
biB0aGUgYWRkIG9wZXJhdGlvbiBhYm92ZSB3b3VsZCBhcHBlYXIgdG8gbm90IGhhdmUgbG9jMSBs
aXZlLCBzaW5jZSB3ZSdkCiAgICAgLy8gZmlyc3QgYWRkIGl0IHRvIHRoZSBvdXQgc2V0ICh0aGUg
dXNlKSwgYW5kIHRoZW4gd2UnZCByZW1vdmUgaXQgKHRoZSBkZWYpLgogICAgIAorICAgIENvZGVC
bG9jayogY29kZUJsb2NrID0gZ3JhcGguY29kZUJsb2NrKCk7CisKICAgICBjb21wdXRlRGVmc0Zv
ckJ5dGVjb2RlT2Zmc2V0KAotICAgICAgICBjb2RlQmxvY2ssIGJsb2NrLCBieXRlY29kZU9mZnNl
dCwKLSAgICAgICAgWyZdIChDb2RlQmxvY2sqIGNvZGVCbG9jaywgSW5zdHJ1Y3Rpb24qLCBPcGNv
ZGVJRCwgaW50IG9wZXJhbmQpIHsKLSAgICAgICAgICAgIGlmIChpc1ZhbGlkUmVnaXN0ZXJGb3JM
aXZlbmVzcyhjb2RlQmxvY2ssIG9wZXJhbmQpKQorICAgICAgICBjb2RlQmxvY2ssIGJ5dGVjb2Rl
T2Zmc2V0LAorICAgICAgICBbJl0gKENvZGVCbG9jayosIEluc3RydWN0aW9uKiwgT3Bjb2RlSUQs
IGludCBvcGVyYW5kKSB7CisgICAgICAgICAgICBpZiAoaXNWYWxpZFJlZ2lzdGVyRm9yTGl2ZW5l
c3Mob3BlcmFuZCkpCiAgICAgICAgICAgICAgICAgZGVmKFZpcnR1YWxSZWdpc3RlcihvcGVyYW5k
KS50b0xvY2FsKCkpOwogICAgICAgICB9KTsKIAogICAgIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVP
ZmZzZXQoCi0gICAgICAgIGNvZGVCbG9jaywgYmxvY2ssIGJ5dGVjb2RlT2Zmc2V0LAotICAgICAg
ICBbJl0gKENvZGVCbG9jayogY29kZUJsb2NrLCBJbnN0cnVjdGlvbiosIE9wY29kZUlELCBpbnQg
b3BlcmFuZCkgewotICAgICAgICAgICAgaWYgKGlzVmFsaWRSZWdpc3RlckZvckxpdmVuZXNzKGNv
ZGVCbG9jaywgb3BlcmFuZCkpCisgICAgICAgIGNvZGVCbG9jaywgYnl0ZWNvZGVPZmZzZXQsCisg
ICAgICAgIFsmXSAoQ29kZUJsb2NrKiwgSW5zdHJ1Y3Rpb24qLCBPcGNvZGVJRCwgaW50IG9wZXJh
bmQpIHsKKyAgICAgICAgICAgIGlmIChpc1ZhbGlkUmVnaXN0ZXJGb3JMaXZlbmVzcyhvcGVyYW5k
KSkKICAgICAgICAgICAgICAgICB1c2UoVmlydHVhbFJlZ2lzdGVyKG9wZXJhbmQpLnRvTG9jYWwo
KSk7CiAgICAgICAgIH0pOwogCiAgICAgLy8gSWYgd2UgaGF2ZSBhbiBleGNlcHRpb24gaGFuZGxl
ciwgd2Ugd2FudCB0aGUgbGl2ZS1pbiB2YXJpYWJsZXMgb2YgdGhlIAogICAgIC8vIGV4Y2VwdGlv
biBoYW5kbGVyIGJsb2NrIHRvIGJlIGluY2x1ZGVkIGluIHRoZSBsaXZlLWluIG9mIHRoaXMgcGFy
dGljdWxhciBieXRlY29kZS4KICAgICBpZiAoSGFuZGxlckluZm8qIGhhbmRsZXIgPSBjb2RlQmxv
Y2stPmhhbmRsZXJGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCkpIHsKLSAgICAgICAg
Ly8gRklYTUU6IFRoaXMgcmVzdW1lIGNoZWNrIHNob3VsZCBub3QgYmUgbmVlZGVkLgotICAgICAg
ICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU5MjgxCi0gICAg
ICAgIEludGVycHJldGVyKiBpbnRlcnByZXRlciA9IGNvZGVCbG9jay0+dm0oKS0+aW50ZXJwcmV0
ZXI7Ci0gICAgICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiA9IGNvZGVCbG9jay0+
aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsKLSAgICAgICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9u
ID0gJmluc3RydWN0aW9uc0JlZ2luW2J5dGVjb2RlT2Zmc2V0XTsKLSAgICAgICAgT3Bjb2RlSUQg
b3Bjb2RlSUQgPSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb24tPnUub3Bjb2Rl
KTsKLSAgICAgICAgaWYgKG9wY29kZUlEICE9IG9wX3Jlc3VtZSkgewotICAgICAgICAgICAgQnl0
ZWNvZGVCYXNpY0Jsb2NrKiBoYW5kbGVyQmxvY2sgPSBmaW5kQmFzaWNCbG9ja1dpdGhMZWFkZXJP
ZmZzZXQoYmFzaWNCbG9ja3MsIGhhbmRsZXItPnRhcmdldCk7Ci0gICAgICAgICAgICBBU1NFUlQo
aGFuZGxlckJsb2NrKTsKLSAgICAgICAgICAgIGhhbmRsZXJCbG9jay0+aW4oKS5mb3JFYWNoU2V0
Qml0KHVzZSk7Ci0gICAgICAgIH0KKyAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBoYW5kbGVy
QmxvY2sgPSBncmFwaC5maW5kQmFzaWNCbG9ja1dpdGhMZWFkZXJPZmZzZXQoaGFuZGxlci0+dGFy
Z2V0KTsKKyAgICAgICAgQVNTRVJUKGhhbmRsZXJCbG9jayk7CisgICAgICAgIGhhbmRsZXJCbG9j
ay0+aW4oKS5mb3JFYWNoU2V0Qml0KHVzZSk7CiAgICAgfQogfQogCi1zdGF0aWMgdm9pZCBzdGVw
T3Zlckluc3RydWN0aW9uKENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29kZUJhc2ljQmxvY2sq
IGJsb2NrLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+JiBiYXNp
Y0Jsb2NrcywgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIEZhc3RCaXRWZWN0b3ImIG91dCkKK3N0
YXRpYyB2b2lkIHN0ZXBPdmVySW5zdHJ1Y3Rpb24oQnl0ZWNvZGVHcmFwaDxDb2RlQmxvY2s+JiBn
cmFwaCwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIEZhc3RCaXRWZWN0b3ImIG91dCkKIHsKICAg
ICBzdGVwT3Zlckluc3RydWN0aW9uKAotICAgICAgICBjb2RlQmxvY2ssIGJsb2NrLCBiYXNpY0Js
b2NrcywgYnl0ZWNvZGVPZmZzZXQsCisgICAgICAgIGdyYXBoLCBieXRlY29kZU9mZnNldCwKICAg
ICAgICAgWyZdICh1bnNpZ25lZCBiaXRJbmRleCkgewogICAgICAgICAgICAgLy8gVGhpcyBpcyB0
aGUgdXNlIGZ1bmN0b3IsIHNvIHdlIHNldCB0aGUgYml0LgogICAgICAgICAgICAgb3V0LnNldChi
aXRJbmRleCk7CkBAIC0xNjAsNyArMTAxLDcgQEAgc3RhdGljIHZvaWQgc3RlcE92ZXJJbnN0cnVj
dGlvbihDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaywKICAg
ICAgICAgfSk7CiB9CiAKLXN0YXRpYyB2b2lkIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQnl0ZWNv
ZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2ss
IFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mIGJhc2ljQmxvY2tz
LCB1bnNpZ25lZCB0YXJnZXRPZmZzZXQsIEZhc3RCaXRWZWN0b3ImIHJlc3VsdCkKK3N0YXRpYyB2
b2lkIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQnl0ZWNvZGVPZmZzZXQoQnl0ZWNvZGVHcmFwaDxD
b2RlQmxvY2s+JiBncmFwaCwgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaywgdW5zaWduZWQgdGFy
Z2V0T2Zmc2V0LCBGYXN0Qml0VmVjdG9yJiByZXN1bHQpCiB7CiAgICAgQVNTRVJUKCFibG9jay0+
aXNFeGl0QmxvY2soKSk7CiAgICAgQVNTRVJUKCFibG9jay0+aXNFbnRyeUJsb2NrKCkpOwpAQCAt
MTcyLDQ0ICsxMTMsNDQgQEAgc3RhdGljIHZvaWQgY29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCeXRl
Y29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGUKICAgICAgICAgaWYgKHRh
cmdldE9mZnNldCA+IGJ5dGVjb2RlT2Zmc2V0KQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IAotICAgICAgICBzdGVwT3Zlckluc3RydWN0aW9uKGNvZGVCbG9jaywgYmxvY2ssIGJhc2ljQmxv
Y2tzLCBieXRlY29kZU9mZnNldCwgb3V0KTsKKyAgICAgICAgc3RlcE92ZXJJbnN0cnVjdGlvbihn
cmFwaCwgYnl0ZWNvZGVPZmZzZXQsIG91dCk7CiAgICAgfQogCiAgICAgcmVzdWx0LnNldChvdXQp
OwogfQogCi1zdGF0aWMgdm9pZCBjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJsb2NrKENvZGVCbG9j
ayogY29kZUJsb2NrLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrLCBWZWN0b3I8c3RkOjp1bmlx
dWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+JiBiYXNpY0Jsb2NrcykKK3N0YXRpYyB2b2lkIGNv
bXB1dGVMb2NhbExpdmVuZXNzRm9yQmxvY2soQnl0ZWNvZGVHcmFwaDxDb2RlQmxvY2s+JiBncmFw
aCwgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaykKIHsKICAgICBpZiAoYmxvY2stPmlzRXhpdEJs
b2NrKCkgfHwgYmxvY2stPmlzRW50cnlCbG9jaygpKQogICAgICAgICByZXR1cm47Ci0gICAgY29t
cHV0ZUxvY2FsTGl2ZW5lc3NGb3JCeXRlY29kZU9mZnNldChjb2RlQmxvY2ssIGJsb2NrLCBiYXNp
Y0Jsb2NrcywgYmxvY2stPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCksIGJsb2NrLT5pbigpKTsKKyAg
ICBjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJ5dGVjb2RlT2Zmc2V0KGdyYXBoLCBibG9jaywgYmxv
Y2stPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCksIGJsb2NrLT5pbigpKTsKIH0KIAogdm9pZCBCeXRl
Y29kZUxpdmVuZXNzQW5hbHlzaXM6OnJ1bkxpdmVuZXNzRml4cG9pbnQoKQogewotICAgIFVubGlu
a2VkQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jayA9IG1fY29kZUJsb2NrLT51bmxpbmtlZENv
ZGVCbG9jaygpOworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gbV9ncmFwaC5jb2RlQmxvY2so
KTsKKyAgICBVbmxpbmtlZENvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2sgPSBjb2RlQmxvY2st
PnVubGlua2VkQ29kZUJsb2NrKCk7CiAgICAgdW5zaWduZWQgbnVtYmVyT2ZWYXJpYWJsZXMgPSB1
bmxpbmtlZENvZGVCbG9jay0+bV9udW1DYWxsZWVMb2NhbHM7CiAKLSAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgbV9iYXNpY0Jsb2Nrcy5zaXplKCk7IGkrKykgewotICAgICAgICBCeXRlY29k
ZUJhc2ljQmxvY2sqIGJsb2NrID0gbV9iYXNpY0Jsb2Nrc1tpXS5nZXQoKTsKKyAgICBmb3IgKHN0
ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+JiBibG9jayA6IG1fZ3JhcGguYmFzaWNC
bG9ja3MoKSkgewogICAgICAgICBibG9jay0+aW4oKS5yZXNpemUobnVtYmVyT2ZWYXJpYWJsZXMp
OwogICAgICAgICBibG9jay0+b3V0KCkucmVzaXplKG51bWJlck9mVmFyaWFibGVzKTsKICAgICB9
CiAKICAgICBib29sIGNoYW5nZWQ7Ci0gICAgbV9iYXNpY0Jsb2Nrcy5sYXN0KCktPmluKCkuY2xl
YXJBbGwoKTsKLSAgICBtX2Jhc2ljQmxvY2tzLmxhc3QoKS0+b3V0KCkuY2xlYXJBbGwoKTsKKyAg
ICBCeXRlY29kZUJhc2ljQmxvY2sqIGxhc3RCbG9jayA9IG1fZ3JhcGguYmFzaWNCbG9ja3MoKS5s
YXN0KCkuZ2V0KCk7CisgICAgbGFzdEJsb2NrLT5pbigpLmNsZWFyQWxsKCk7CisgICAgbGFzdEJs
b2NrLT5vdXQoKS5jbGVhckFsbCgpOwogICAgIEZhc3RCaXRWZWN0b3IgbmV3T3V0OwotICAgIG5l
d091dC5yZXNpemUobV9iYXNpY0Jsb2Nrcy5sYXN0KCktPm91dCgpLm51bUJpdHMoKSk7CisgICAg
bmV3T3V0LnJlc2l6ZShsYXN0QmxvY2stPm91dCgpLm51bUJpdHMoKSk7CiAgICAgZG8gewogICAg
ICAgICBjaGFuZ2VkID0gZmFsc2U7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1fYmFzaWNC
bG9ja3Muc2l6ZSgpIC0gMTsgaS0tOykgewotICAgICAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2Nr
KiBibG9jayA9IG1fYmFzaWNCbG9ja3NbaV0uZ2V0KCk7CisgICAgICAgIGZvciAoc3RkOjp1bmlx
dWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4mIGJsb2NrIDogbV9ncmFwaC5iYXNpY0Jsb2Nrc0lu
UmV2ZXJzZU9yZGVyKCkpIHsKICAgICAgICAgICAgIG5ld091dC5jbGVhckFsbCgpOwotICAgICAg
ICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8IGJsb2NrLT5zdWNjZXNzb3JzKCkuc2l6ZSgp
OyBqKyspCi0gICAgICAgICAgICAgICAgbmV3T3V0Lm1lcmdlKGJsb2NrLT5zdWNjZXNzb3JzKClb
al0tPmluKCkpOworICAgICAgICAgICAgZm9yIChCeXRlY29kZUJhc2ljQmxvY2sqIHN1Y2Nlc3Nv
ciA6IGJsb2NrLT5zdWNjZXNzb3JzKCkpCisgICAgICAgICAgICAgICAgbmV3T3V0Lm1lcmdlKHN1
Y2Nlc3Nvci0+aW4oKSk7CiAgICAgICAgICAgICBib29sIG91dERpZENoYW5nZSA9IGJsb2NrLT5v
dXQoKS5zZXRBbmRDaGVjayhuZXdPdXQpOwotICAgICAgICAgICAgY29tcHV0ZUxvY2FsTGl2ZW5l
c3NGb3JCbG9jayhtX2NvZGVCbG9jaywgYmxvY2ssIG1fYmFzaWNCbG9ja3MpOworICAgICAgICAg
ICAgY29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCbG9jayhtX2dyYXBoLCBibG9jay5nZXQoKSk7CiAg
ICAgICAgICAgICBjaGFuZ2VkIHw9IG91dERpZENoYW5nZTsKICAgICAgICAgfQogICAgIH0gd2hp
bGUgKGNoYW5nZWQpOwpAQCAtMjE3LDEyICsxNTgsMTIgQEAgdm9pZCBCeXRlY29kZUxpdmVuZXNz
QW5hbHlzaXM6OnJ1bkxpdmVuZXNzRml4cG9pbnQoKQogCiB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NB
bmFseXNpczo6Z2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29kZU9mZnNldCh1bnNpZ25lZCBieXRlY29k
ZU9mZnNldCwgRmFzdEJpdFZlY3RvciYgcmVzdWx0KQogewotICAgIEJ5dGVjb2RlQmFzaWNCbG9j
ayogYmxvY2sgPSBmaW5kQmFzaWNCbG9ja0ZvckJ5dGVjb2RlT2Zmc2V0KG1fYmFzaWNCbG9ja3Ms
IGJ5dGVjb2RlT2Zmc2V0KTsKKyAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrID0gbV9ncmFw
aC5maW5kQmFzaWNCbG9ja0ZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KTsKICAgICBB
U1NFUlQoYmxvY2spOwogICAgIEFTU0VSVCghYmxvY2stPmlzRW50cnlCbG9jaygpKTsKICAgICBB
U1NFUlQoIWJsb2NrLT5pc0V4aXRCbG9jaygpKTsKICAgICByZXN1bHQucmVzaXplKGJsb2NrLT5v
dXQoKS5udW1CaXRzKCkpOwotICAgIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQnl0ZWNvZGVPZmZz
ZXQobV9jb2RlQmxvY2ssIGJsb2NrLCBtX2Jhc2ljQmxvY2tzLCBieXRlY29kZU9mZnNldCwgcmVz
dWx0KTsKKyAgICBjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJ5dGVjb2RlT2Zmc2V0KG1fZ3JhcGgs
IGJsb2NrLCBieXRlY29kZU9mZnNldCwgcmVzdWx0KTsKIH0KIAogYm9vbCBCeXRlY29kZUxpdmVu
ZXNzQW5hbHlzaXM6Om9wZXJhbmRJc0xpdmVBdEJ5dGVjb2RlT2Zmc2V0KGludCBvcGVyYW5kLCB1
bnNpZ25lZCBieXRlY29kZU9mZnNldCkKQEAgLTI0NCwxMSArMTg1LDExIEBAIEZhc3RCaXRWZWN0
b3IgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpnZXRMaXZlbmVzc0luZm9BdEJ5dGVjb2RlT2Zm
c2V0KHVuc2lnbmVkCiB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0ZUZ1bGxM
aXZlbmVzcyhGdWxsQnl0ZWNvZGVMaXZlbmVzcyYgcmVzdWx0KQogewogICAgIEZhc3RCaXRWZWN0
b3Igb3V0OworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gbV9ncmFwaC5jb2RlQmxvY2soKTsK
ICAgICAKLSAgICByZXN1bHQubV9tYXAucmVzaXplKG1fY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMo
KS5zaXplKCkpOworICAgIHJlc3VsdC5tX21hcC5yZXNpemUoY29kZUJsb2NrLT5pbnN0cnVjdGlv
bnMoKS5zaXplKCkpOwogICAgIAotICAgIGZvciAodW5zaWduZWQgaSA9IG1fYmFzaWNCbG9ja3Mu
c2l6ZSgpOyBpLS07KSB7Ci0gICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2sgPSBtX2Jh
c2ljQmxvY2tzW2ldLmdldCgpOworICAgIGZvciAoc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFz
aWNCbG9jaz4mIGJsb2NrIDogbV9ncmFwaC5iYXNpY0Jsb2Nrc0luUmV2ZXJzZU9yZGVyKCkpIHsK
ICAgICAgICAgaWYgKGJsb2NrLT5pc0VudHJ5QmxvY2soKSB8fCBibG9jay0+aXNFeGl0QmxvY2so
KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAKQEAgLTI1Niw3ICsxOTcsNyBAQCB2
b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0ZUZ1bGxMaXZlbmVzcyhGdWxsQnl0
ZWNvZGVMaXZlbmVzcyYgcmVzdWx0KQogICAgICAgICAKICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gYmxvY2stPmJ5dGVjb2RlT2Zmc2V0cygpLnNpemUoKTsgaS0tOykgewogICAgICAgICAgICAg
dW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQgPSBibG9jay0+Ynl0ZWNvZGVPZmZzZXRzKClbaV07Ci0g
ICAgICAgICAgICBzdGVwT3Zlckluc3RydWN0aW9uKG1fY29kZUJsb2NrLCBibG9jaywgbV9iYXNp
Y0Jsb2NrcywgYnl0ZWNvZGVPZmZzZXQsIG91dCk7CisgICAgICAgICAgICBzdGVwT3Zlckluc3Ry
dWN0aW9uKG1fZ3JhcGgsIGJ5dGVjb2RlT2Zmc2V0LCBvdXQpOwogICAgICAgICAgICAgcmVzdWx0
Lm1fbWFwW2J5dGVjb2RlT2Zmc2V0XSA9IG91dDsKICAgICAgICAgfQogICAgIH0KQEAgLTI2Niwx
MSArMjA3LDExIEBAIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlS2lsbHMo
Qnl0ZWNvZGVLaWxscyYgcmVzdWx0KQogewogICAgIEZhc3RCaXRWZWN0b3Igb3V0OwogICAgIAot
ICAgIHJlc3VsdC5tX2NvZGVCbG9jayA9IG1fY29kZUJsb2NrOwotICAgIHJlc3VsdC5tX2tpbGxT
ZXRzID0gc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZUtpbGxzOjpLaWxsU2V0W10+KG1fY29kZUJs
b2NrLT5pbnN0cnVjdGlvbnMoKS5zaXplKCkpOworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0g
bV9ncmFwaC5jb2RlQmxvY2soKTsKKyAgICByZXN1bHQubV9jb2RlQmxvY2sgPSBjb2RlQmxvY2s7
CisgICAgcmVzdWx0Lm1fa2lsbFNldHMgPSBzdGQ6Om1ha2VfdW5pcXVlPEJ5dGVjb2RlS2lsbHM6
OktpbGxTZXRbXT4oY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5zaXplKCkpOwogICAgIAotICAg
IGZvciAodW5zaWduZWQgaSA9IG1fYmFzaWNCbG9ja3Muc2l6ZSgpOyBpLS07KSB7Ci0gICAgICAg
IEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2sgPSBtX2Jhc2ljQmxvY2tzW2ldLmdldCgpOworICAg
IGZvciAoc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4mIGJsb2NrIDogbV9ncmFw
aC5iYXNpY0Jsb2Nrc0luUmV2ZXJzZU9yZGVyKCkpIHsKICAgICAgICAgaWYgKGJsb2NrLT5pc0Vu
dHJ5QmxvY2soKSB8fCBibG9jay0+aXNFeGl0QmxvY2soKSkKICAgICAgICAgICAgIGNvbnRpbnVl
OwogICAgICAgICAKQEAgLTI3OSw3ICsyMjAsNyBAQCB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFs
eXNpczo6Y29tcHV0ZUtpbGxzKEJ5dGVjb2RlS2lsbHMmIHJlc3VsdCkKICAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gYmxvY2stPmJ5dGVjb2RlT2Zmc2V0cygpLnNpemUoKTsgaS0tOykgewogICAg
ICAgICAgICAgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQgPSBibG9jay0+Ynl0ZWNvZGVPZmZzZXRz
KClbaV07CiAgICAgICAgICAgICBzdGVwT3Zlckluc3RydWN0aW9uKAotICAgICAgICAgICAgICAg
IG1fY29kZUJsb2NrLCBibG9jaywgbV9iYXNpY0Jsb2NrcywgYnl0ZWNvZGVPZmZzZXQsCisgICAg
ICAgICAgICAgICAgbV9ncmFwaCwgYnl0ZWNvZGVPZmZzZXQsCiAgICAgICAgICAgICAgICAgWyZd
ICh1bnNpZ25lZCBpbmRleCkgewogICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIGZvciB1
c2VzLgogICAgICAgICAgICAgICAgICAgICBpZiAob3V0LmdldChpbmRleCkpCkBAIC0yOTcsMTIg
KzIzOCwxMyBAQCB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0ZUtpbGxzKEJ5
dGVjb2RlS2lsbHMmIHJlc3VsdCkKIAogdm9pZCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmR1
bXBSZXN1bHRzKCkKIHsKLSAgICBkYXRhTG9nKCJcbkR1bXBpbmcgYnl0ZWNvZGUgbGl2ZW5lc3Mg
Zm9yICIsICptX2NvZGVCbG9jaywgIjpcbiIpOwotICAgIEludGVycHJldGVyKiBpbnRlcnByZXRl
ciA9IG1fY29kZUJsb2NrLT52bSgpLT5pbnRlcnByZXRlcjsKLSAgICBJbnN0cnVjdGlvbiogaW5z
dHJ1Y3Rpb25zQmVnaW4gPSBtX2NvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsKLSAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9iYXNpY0Jsb2Nrcy5zaXplKCk7IGkrKykgewot
ICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrID0gbV9iYXNpY0Jsb2Nrc1tpXS5nZXQo
KTsKLSAgICAgICAgZGF0YUxvZ0YoIlxuQnl0ZWNvZGUgYmFzaWMgYmxvY2sgJXU6ICVwIChvZmZz
ZXQ6ICV1LCBsZW5ndGg6ICV1KVxuIiwgaSwgYmxvY2ssIGJsb2NrLT5sZWFkZXJCeXRlY29kZU9m
ZnNldCgpLCBibG9jay0+dG90YWxCeXRlY29kZUxlbmd0aCgpKTsKKyAgICBDb2RlQmxvY2sqIGNv
ZGVCbG9jayA9IG1fZ3JhcGguY29kZUJsb2NrKCk7CisgICAgZGF0YUxvZygiXG5EdW1waW5nIGJ5
dGVjb2RlIGxpdmVuZXNzIGZvciAiLCAqY29kZUJsb2NrLCAiOlxuIik7CisgICAgSW50ZXJwcmV0
ZXIqIGludGVycHJldGVyID0gY29kZUJsb2NrLT52bSgpLT5pbnRlcnByZXRlcjsKKyAgICBJbnN0
cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4gPSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJl
Z2luKCk7CisgICAgdW5zaWduZWQgaSA9IDA7CisgICAgZm9yIChzdGQ6OnVuaXF1ZV9wdHI8Qnl0
ZWNvZGVCYXNpY0Jsb2NrPiYgYmxvY2sgOiBtX2dyYXBoLmJhc2ljQmxvY2tzKCkpIHsKKyAgICAg
ICAgZGF0YUxvZ0YoIlxuQnl0ZWNvZGUgYmFzaWMgYmxvY2sgJXU6ICVwIChvZmZzZXQ6ICV1LCBs
ZW5ndGg6ICV1KVxuIiwgaSsrLCBibG9jay5nZXQoKSwgYmxvY2stPmxlYWRlckJ5dGVjb2RlT2Zm
c2V0KCksIGJsb2NrLT50b3RhbEJ5dGVjb2RlTGVuZ3RoKCkpOwogICAgICAgICBkYXRhTG9nRigi
U3VjY2Vzc29yczogIik7CiAgICAgICAgIGZvciAodW5zaWduZWQgaiA9IDA7IGogPCBibG9jay0+
c3VjY2Vzc29ycygpLnNpemUoKTsgaisrKSB7CiAgICAgICAgICAgICBCeXRlY29kZUJhc2ljQmxv
Y2sqIHN1Y2Nlc3NvciA9IGJsb2NrLT5zdWNjZXNzb3JzKClbal07CkBAIC0zMTAsMTEgKzI1Miwx
MSBAQCB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6ZHVtcFJlc3VsdHMoKQogICAgICAg
ICB9CiAgICAgICAgIGRhdGFMb2dGKCJcbiIpOwogICAgICAgICBpZiAoYmxvY2stPmlzRW50cnlC
bG9jaygpKSB7Ci0gICAgICAgICAgICBkYXRhTG9nRigiRW50cnkgYmxvY2sgJXBcbiIsIGJsb2Nr
KTsKKyAgICAgICAgICAgIGRhdGFMb2dGKCJFbnRyeSBibG9jayAlcFxuIiwgYmxvY2suZ2V0KCkp
OwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGJsb2NrLT5p
c0V4aXRCbG9jaygpKSB7Ci0gICAgICAgICAgICBkYXRhTG9nRigiRXhpdCBibG9jazogJXBcbiIs
IGJsb2NrKTsKKyAgICAgICAgICAgIGRhdGFMb2dGKCJFeGl0IGJsb2NrOiAlcFxuIiwgYmxvY2su
Z2V0KCkpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICAgICAgICAgZm9yICh1
bnNpZ25lZCBieXRlY29kZU9mZnNldCA9IGJsb2NrLT5sZWFkZXJCeXRlY29kZU9mZnNldCgpOyBi
eXRlY29kZU9mZnNldCA8IGJsb2NrLT5sZWFkZXJCeXRlY29kZU9mZnNldCgpICsgYmxvY2stPnRv
dGFsQnl0ZWNvZGVMZW5ndGgoKTspIHsKQEAgLTMyNyw3ICsyNjksNyBAQCB2b2lkIEJ5dGVjb2Rl
TGl2ZW5lc3NBbmFseXNpczo6ZHVtcFJlc3VsdHMoKQogICAgICAgICAgICAgICAgICAgICBkYXRh
TG9nRigiJXUgIiwgaik7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBkYXRhTG9nRigiXG4i
KTsKLSAgICAgICAgICAgIG1fY29kZUJsb2NrLT5kdW1wQnl0ZWNvZGUoV1RGOjpkYXRhRmlsZSgp
LCBtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKSwgaW5zdHJ1Y3Rpb25z
QmVnaW4sIGN1cnJlbnRJbnN0cnVjdGlvbik7CisgICAgICAgICAgICBjb2RlQmxvY2stPmR1bXBC
eXRlY29kZShXVEY6OmRhdGFGaWxlKCksIGNvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCktPmdsb2Jh
bEV4ZWMoKSwgaW5zdHJ1Y3Rpb25zQmVnaW4sIGN1cnJlbnRJbnN0cnVjdGlvbik7CiAKICAgICAg
ICAgICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGluc3Ry
dWN0aW9uc0JlZ2luW2J5dGVjb2RlT2Zmc2V0XS51Lm9wY29kZSk7CiAgICAgICAgICAgICB1bnNp
Z25lZCBvcGNvZGVMZW5ndGggPSBvcGNvZGVMZW5ndGhzW29wY29kZUlEXTsKQEAgLTM0Niw4ICsy
ODgsNiBAQCB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6ZHVtcFJlc3VsdHMoKQogCiB2
b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0ZSgpCiB7Ci0gICAgY29tcHV0ZUJ5
dGVjb2RlQmFzaWNCbG9ja3MobV9jb2RlQmxvY2ssIG1fYmFzaWNCbG9ja3MpOwotICAgIEFTU0VS
VChtX2Jhc2ljQmxvY2tzLnNpemUoKSk7CiAgICAgcnVuTGl2ZW5lc3NGaXhwb2ludCgpOwogCiAg
ICAgaWYgKE9wdGlvbnM6OmR1bXBCeXRlY29kZUxpdmVuZXNzUmVzdWx0cygpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNp
cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFs
eXNpcy5oCmluZGV4IGVjZTE2ZjIxZjAxNTEwYTY0MjdmZDg0MTE0MDc5YmVkODcwYzA4NzUuLmNi
MTQ5M2IyYWE2Yzg5MDNjNzk1YTlmMmQxYzI5NzZlMTBkMzY2ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lz
LmgKQEAgLTI3LDYgKzI3LDggQEAKICNkZWZpbmUgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzX2gK
IAogI2luY2x1ZGUgIkJ5dGVjb2RlQmFzaWNCbG9jay5oIgorI2luY2x1ZGUgIkJ5dGVjb2RlR3Jh
cGguaCIKKyNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlIDx3dGYvRmFzdEJpdFZlY3Rv
ci5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpA
QCAtMzQsNyArMzYsNiBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIEJ5dGVjb2RlS2lsbHM7
Ci1jbGFzcyBDb2RlQmxvY2s7CiBjbGFzcyBGdWxsQnl0ZWNvZGVMaXZlbmVzczsKIAogY2xhc3Mg
Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzIHsKQEAgLTU2LDEzICs1NywxMyBAQCBjbGFzcyBCeXRl
Y29kZUxpdmVuZXNzQW5hbHlzaXMgewogCiAgICAgdm9pZCBnZXRMaXZlbmVzc0luZm9BdEJ5dGVj
b2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBGYXN0Qml0VmVjdG9yJik7CiAKLSAg
ICBDb2RlQmxvY2sqIG1fY29kZUJsb2NrOwotICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0
ZWNvZGVCYXNpY0Jsb2NrPj4gbV9iYXNpY0Jsb2NrczsKKyAgICBCeXRlY29kZUdyYXBoPENvZGVC
bG9jaz4gbV9ncmFwaDsKIH07CiAKIGlubGluZSBib29sIG9wZXJhbmRJc0Fsd2F5c0xpdmUoaW50
IG9wZXJhbmQpOwogaW5saW5lIGJvb2wgb3BlcmFuZFRoYXRJc05vdEFsd2F5c0xpdmVJc0xpdmUo
Y29uc3QgRmFzdEJpdFZlY3RvciYgb3V0LCBpbnQgb3BlcmFuZCk7CiBpbmxpbmUgYm9vbCBvcGVy
YW5kSXNMaXZlKGNvbnN0IEZhc3RCaXRWZWN0b3ImIG91dCwgaW50IG9wZXJhbmQpOworaW5saW5l
IGJvb2wgaXNWYWxpZFJlZ2lzdGVyRm9yTGl2ZW5lc3MoaW50IG9wZXJhbmQpOwogCiB9IC8vIG5h
bWVzcGFjZSBKU0MKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNJbmxpbmVzLmgKaW5kZXggOWI1Yzc1
NWZjYjZjZDUxODA1MTQ1MDA3ODkyMmFjNGQ2ZDRkMjM4Zi4uOTBjMjkyOTlhMjVmNTc5Y2RhNjQ5
ZDk4NzhjZTE1NDhjNDhjNzU4OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzSW5saW5lcy5oCkBA
IC01MCw2ICs1MCwxNCBAQCBpbmxpbmUgYm9vbCBvcGVyYW5kSXNMaXZlKGNvbnN0IEZhc3RCaXRW
ZWN0b3ImIG91dCwgaW50IG9wZXJhbmQpCiAgICAgcmV0dXJuIG9wZXJhbmRJc0Fsd2F5c0xpdmUo
b3BlcmFuZCkgfHwgb3BlcmFuZFRoYXRJc05vdEFsd2F5c0xpdmVJc0xpdmUob3V0LCBvcGVyYW5k
KTsKIH0KIAoraW5saW5lIGJvb2wgaXNWYWxpZFJlZ2lzdGVyRm9yTGl2ZW5lc3MoaW50IG9wZXJh
bmQpCit7CisgICAgVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWcob3BlcmFuZCk7CisgICAgaWYg
KHZpcnR1YWxSZWcuaXNDb25zdGFudCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0
dXJuIHZpcnR1YWxSZWcuaXNMb2NhbCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2Vu
ZGlmIC8vIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGluZXNfaApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTW9kaWZpY2F0aW9uU2V0LmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZU1vZGlmaWNhdGlvblNldC5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uOGFjMmY4ZWNhMTE1OWMyMzE2YWI1MThiM2NhYWE3NDc0OGViYTU2MAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZU1vZGlmaWNhdGlvblNldC5jcHAKQEAgLTAsMCArMSw4NCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNiBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJCeXRlY29kZU1vZGlmaWNhdGlvblNldC5o
IgorCisjaW5jbHVkZSA8d3RmL0J1YmJsZVNvcnQuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2lu
dCBCeXRlY29kZU1vZGlmaWNhdGlvblNldDo6YWRqdXN0T2Zmc2V0KGludCBieXRlY29kZU9mZnNl
dCwgaW50IGp1bXBUYXJnZXQpCit7CisgICAgaWYgKGJ5dGVjb2RlT2Zmc2V0IDwganVtcFRhcmdl
dCkgeworICAgICAgICBhdXRvIHN0YXJ0ID0gc3RkOjpsb3dlcl9ib3VuZChtX2luc2VydGlvbnMu
YmVnaW4oKSwgbV9pbnNlcnRpb25zLmVuZCgpLCBieXRlY29kZU9mZnNldCwgWyZdIChjb25zdCBJ
bnNlcnRpb24mIGluc2VydGlvbiwgaW50IGJ5dGVjb2RlT2Zmc2V0KSB7CisgICAgICAgICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihpbnNlcnRpb24uaW5kZXgoKSkgPCBieXRlY29kZU9mZnNl
dDsKKyAgICAgICAgfSk7CisgICAgICAgIGlmIChzdGFydCAhPSBtX2luc2VydGlvbnMuZW5kKCkp
IHsKKyAgICAgICAgICAgIGF1dG8gZW5kID0gc3RkOjpsb3dlcl9ib3VuZChtX2luc2VydGlvbnMu
YmVnaW4oKSwgbV9pbnNlcnRpb25zLmVuZCgpLCBqdW1wVGFyZ2V0LCBbJl0gKGNvbnN0IEluc2Vy
dGlvbiYgaW5zZXJ0aW9uLCBpbnQganVtcFRhcmdldCkgeworICAgICAgICAgICAgICAgIHJldHVy
biBzdGF0aWNfY2FzdDxpbnQ+KGluc2VydGlvbi5pbmRleCgpKSA8IGp1bXBUYXJnZXQ7CisgICAg
ICAgICAgICB9KTsKKyAgICAgICAgICAgIGZvciAoOyBzdGFydCAhPSBlbmQ7ICsrc3RhcnQpIHsK
KyAgICAgICAgICAgICAgICBpZiAoc3RhcnQtPmVsZW1lbnQoKS50eXBlID09IENvbW1hbmQ6OlR5
cGU6OlJlbW92ZSkKKyAgICAgICAgICAgICAgICAgICAganVtcFRhcmdldCAtPSBzdGFydC0+ZWxl
bWVudCgpLmxlbmd0aDsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAg
IGp1bXBUYXJnZXQgKz0gc3RhcnQtPmVsZW1lbnQoKS5sZW5ndGg7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGp1bXBUYXJnZXQgLSBieXRlY29kZU9mZnNldDsKKyAg
ICB9CisKKyAgICBpZiAoYnl0ZWNvZGVPZmZzZXQgPT0ganVtcFRhcmdldCkKKyAgICAgICAgcmV0
dXJuIDA7CisKKyAgICByZXR1cm4gLWFkanVzdE9mZnNldChqdW1wVGFyZ2V0LCBieXRlY29kZU9m
ZnNldCk7Cit9CisKK3ZvaWQgQnl0ZWNvZGVNb2RpZmljYXRpb25TZXQ6OmFwcGx5TW9kaWZpY2F0
aW9uKCkKK3sKKyAgICBmb3IgKHNpemVfdCBpbnNlcnRpb25JbmRleCA9IG1faW5zZXJ0aW9ucy5z
aXplKCk7IGluc2VydGlvbkluZGV4LS07KSB7CisgICAgICAgIGNvbnN0IEluc2VydGlvbiYgaW5z
ZXJ0aW9uID0gbV9pbnNlcnRpb25zW2luc2VydGlvbkluZGV4XTsKKyAgICAgICAgaWYgKGluc2Vy
dGlvbi5lbGVtZW50KCkudHlwZSA9PSBDb21tYW5kOjpUeXBlOjpSZW1vdmUpCisgICAgICAgICAg
ICBtX2dyYXBoLmluc3RydWN0aW9ucygpLnJlbW92ZShpbnNlcnRpb24uaW5kZXgoKSwgaW5zZXJ0
aW9uLmVsZW1lbnQoKS5sZW5ndGgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX2dyYXBo
Lmluc3RydWN0aW9ucygpLmluc2VydChpbnNlcnRpb24uaW5kZXgoKSwgaW5zZXJ0aW9uLmVsZW1l
bnQoKS5ieXRlY29kZS5pbnN0cnVjdGlvbnMsIG9wY29kZUxlbmd0aChpbnNlcnRpb24uZWxlbWVu
dCgpLmJ5dGVjb2RlLmluc3RydWN0aW9uc1swXS51Lm9wY29kZSkpOworICAgIH0KKyAgICBtX2lu
c2VydGlvbnMuY2xlYXIoKTsKK30KKwordm9pZCBCeXRlY29kZU1vZGlmaWNhdGlvblNldDo6ZXhl
Y3V0ZSgpCit7CisgICAgV1RGOjpidWJibGVTb3J0KG1faW5zZXJ0aW9ucy5iZWdpbigpLCBtX2lu
c2VydGlvbnMuZW5kKCksIFtdIChjb25zdCBJbnNlcnRpb24mIGxocywgY29uc3QgSW5zZXJ0aW9u
JiByaHMpIHsKKyAgICAgICAgLy8gV2Ugd291bGQgbGlrZSB0byBwZXJmb3JtIHJlbW92ZSBvcGVy
YXRpb24gYmVmb3JlIGluc2VydGlvbi4KKyAgICAgICAgaWYgKGxocy5pbmRleCgpID09IHJocy5p
bmRleCgpKQorICAgICAgICAgICAgcmV0dXJuIHJocy5lbGVtZW50KCkudHlwZSA9PSBDb21tYW5k
OjpUeXBlOjpSZW1vdmU7CisgICAgICAgIHJldHVybiBsaHMgPCByaHM7CisgICAgfSk7CisKKyAg
ICBVbmxpbmtlZENvZGVCbG9jayogY29kZUJsb2NrID0gbV9ncmFwaC5jb2RlQmxvY2soKTsKKyAg
ICBjb2RlQmxvY2stPmFwcGx5TW9kaWZpY2F0aW9uKCp0aGlzKTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVNb2RpZmljYXRpb25TZXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZU1vZGlmaWNhdGlvblNldC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY1NTM5YmIxYmU5ZDk2M2Y2MzJkNWQz
Y2M5ZmJkODI5Mjg4OGYzMzYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnl0ZWNvZGVNb2RpZmljYXRpb25TZXQuaApAQCAtMCwwICsxLDgyIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE2IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJCeXRlY29kZUdyYXBo
LmgiCisjaW5jbHVkZSAiVW5saW5rZWRDb2RlQmxvY2suaCIKKyNpbmNsdWRlIDx3dGYvSW5zZXJ0
aW9uLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBCeXRlY29kZU1vZGlmaWNhdGlvblNl
dCB7CitwdWJsaWM6CisgICAgc3RydWN0IEluc2VydGVkQnl0ZWNvZGUgeworICAgICAgICBVbmxp
bmtlZEluc3RydWN0aW9uIGluc3RydWN0aW9uc1tNQVhfT1BDT0RFX0xFTkdUSF9PRl9CWVRFQ09E
RV07CisgICAgfTsKKworICAgIHN0cnVjdCBDb21tYW5kIHsKKyAgICAgICAgZW51bSBjbGFzcyBU
eXBlIHsKKyAgICAgICAgICAgIEluc2VydCwKKyAgICAgICAgICAgIFJlbW92ZSwKKyAgICAgICAg
fTsKKworICAgICAgICBUeXBlIHR5cGU7CisgICAgICAgIHNpemVfdCBsZW5ndGg7CisgICAgICAg
IEluc2VydGVkQnl0ZWNvZGUgYnl0ZWNvZGU7CisgICAgfTsKKworICAgIHR5cGVkZWYgV1RGOjpJ
bnNlcnRpb248Q29tbWFuZD4gSW5zZXJ0aW9uOworCisgICAgQnl0ZWNvZGVNb2RpZmljYXRpb25T
ZXQoQnl0ZWNvZGVHcmFwaDxVbmxpbmtlZENvZGVCbG9jaz4mIGdyYXBoKQorICAgICAgICA6IG1f
Z3JhcGgoZ3JhcGgpCisgICAgeworICAgIH0KKworICAgIHZvaWQgaW5zZXJ0KHVuc2lnbmVkIGJ5
dGVjb2RlT2Zmc2V0LCBJbnNlcnRlZEJ5dGVjb2RlIGJ5dGVjb2RlKQorICAgIHsKKyAgICAgICAg
bV9pbnNlcnRpb25zLmFwcGVuZChJbnNlcnRpb24oYnl0ZWNvZGVPZmZzZXQsIENvbW1hbmQgeyBD
b21tYW5kOjpUeXBlOjpJbnNlcnQsIG9wY29kZUxlbmd0aChieXRlY29kZS5pbnN0cnVjdGlvbnNb
MF0udS5vcGNvZGUpLCBieXRlY29kZSB9KSk7CisgICAgfQorCisgICAgdm9pZCByZW1vdmVCeXRl
Y29kZSh1bnNpZ25lZCBieXRlY29kZU9mZnNldCkKKyAgICB7CisgICAgICAgIG1faW5zZXJ0aW9u
cy5hcHBlbmQoSW5zZXJ0aW9uKGJ5dGVjb2RlT2Zmc2V0LCBDb21tYW5kIHsgQ29tbWFuZDo6VHlw
ZTo6UmVtb3ZlLCBvcGNvZGVMZW5ndGgobV9ncmFwaC5pbnN0cnVjdGlvbnMoKVtieXRlY29kZU9m
ZnNldF0udS5vcGNvZGUpLCBJbnNlcnRlZEJ5dGVjb2RlIHsgfSB9KSk7CisgICAgfQorCisgICAg
dm9pZCBleGVjdXRlKCk7CisKKyAgICBCeXRlY29kZUdyYXBoPFVubGlua2VkQ29kZUJsb2NrPiYg
Z3JhcGgoKSB7IHJldHVybiBtX2dyYXBoOyB9CisKKyAgICBpbnQgYWRqdXN0T2Zmc2V0KGludCBi
eXRlY29kZU9mZnNldCwgaW50IGp1bXBUYXJnZXQpOworCitwcml2YXRlOgorICAgIGZyaWVuZCBj
bGFzcyBVbmxpbmtlZENvZGVCbG9jazsKKyAgICB2b2lkIGFwcGx5TW9kaWZpY2F0aW9uKCk7CisK
KyAgICBCeXRlY29kZUdyYXBoPFVubGlua2VkQ29kZUJsb2NrPiYgbV9ncmFwaDsKKyAgICBWZWN0
b3I8SW5zZXJ0aW9uLCA4PiBtX2luc2VydGlvbnM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURl
Zi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKaW5k
ZXggOTgxZmIxZDBmZWMwNTcwNGQ1YjdmNjZlYzQ0MTgyNTdlODNhYWMzNi4uZWQyZTZiZGMwNDU0
M2FiNmU3YTVkMWYyMjNjMDhhOGViZjc0ZjhmMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKQEAgLTI3LDE4ICsyNywxMyBAQAogI2RlZmlu
ZSBCeXRlY29kZVVzZURlZl9oCiAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJJ
bnRlcnByZXRlci5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAotdGVtcGxhdGU8dHlwZW5hbWUgRnVu
Y3Rvcj4KLXZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCgKLSAgICBDb2RlQmxvY2sq
IGNvZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaywgdW5zaWduZWQgYnl0ZWNvZGVP
ZmZzZXQsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCit0ZW1wbGF0ZTx0eXBlbmFtZSBCbG9jaywg
dHlwZW5hbWUgRnVuY3RvciwgdHlwZW5hbWUgSW5zdHJ1Y3Rpb24+Cit2b2lkIGNvbXB1dGVVc2Vz
Rm9yQnl0ZWNvZGVPZmZzZXQoQmxvY2sqIGNvZGVCbG9jaywgT3Bjb2RlSUQgb3Bjb2RlSUQsIElu
c3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikKIHsKLSAgICBJ
bnRlcnByZXRlciogaW50ZXJwcmV0ZXIgPSBjb2RlQmxvY2stPnZtKCktPmludGVycHJldGVyOwot
ICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiA9IGNvZGVCbG9jay0+aW5zdHJ1Y3Rp
b25zKCkuYmVnaW4oKTsKLSAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSAmaW5zdHJ1Y3Rp
b25zQmVnaW5bYnl0ZWNvZGVPZmZzZXRdOwotICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW50ZXJw
cmV0ZXItPmdldE9wY29kZUlEKGluc3RydWN0aW9uLT51Lm9wY29kZSk7Ci0KICAgICBpZiAob3Bj
b2RlSUQgIT0gb3BfZW50ZXIgJiYgY29kZUJsb2NrLT53YXNDb21waWxlZFdpdGhEZWJ1Z2dpbmdP
cGNvZGVzKCkgJiYgY29kZUJsb2NrLT5zY29wZVJlZ2lzdGVyKCkuaXNWYWxpZCgpKQogICAgICAg
ICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBjb2RlQmxvY2stPnNj
b3BlUmVnaXN0ZXIoKS5vZmZzZXQoKSk7CiAKQEAgLTc1LDggKzcwLDcgQEAgdm9pZCBjb21wdXRl
VXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAogICAgIGNhc2Ugb3Bfam5lcV9udWxsOgogICAgIGNhc2Ug
b3BfZGVjOgogICAgIGNhc2Ugb3BfaW5jOgotICAgIGNhc2Ugb3BfbG9nX3NoYWRvd19jaGlja2Vu
X3Byb2xvZ3VlOgotICAgIGNhc2Ugb3BfcmVzdW1lOiB7CisgICAgY2FzZSBvcF9sb2dfc2hhZG93
X2NoaWNrZW5fcHJvbG9ndWU6IHsKICAgICAgICAgQVNTRVJUKG9wY29kZUxlbmd0aHNbb3Bjb2Rl
SURdID4gMSk7CiAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2Rl
SUQsIGluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CiAgICAgICAgIHJldHVybjsKQEAgLTI4NCwy
MiArMjc4LDEzIEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCgKICAgICAgICAg
ICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGxhc3RBcmcgKyBp
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBjYXNlIG9wX3NhdmU6IHsKLSAgICAgICAg
ZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb25bMV0u
dS5vcGVyYW5kKTsKLSAgICAgICAgdW5zaWduZWQgbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0ID0g
Ynl0ZWNvZGVPZmZzZXQgKyBpbnN0cnVjdGlvblszXS51Lm9wZXJhbmQ7Ci0gICAgICAgIEJ5dGVj
b2RlQmFzaWNCbG9jayogbWVyZ2VQb2ludEJsb2NrID0gbnVsbHB0cjsKLSAgICAgICAgZm9yIChC
eXRlY29kZUJhc2ljQmxvY2sqIHN1Y2Nlc3NvciA6IGJsb2NrLT5zdWNjZXNzb3JzKCkpIHsKLSAg
ICAgICAgICAgIGlmIChzdWNjZXNzb3ItPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCkgPT0gbWVyZ2VQ
b2ludEJ5dGVjb2RlT2Zmc2V0KSB7Ci0gICAgICAgICAgICAgICAgbWVyZ2VQb2ludEJsb2NrID0g
c3VjY2Vzc29yOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAg
ICB9Ci0gICAgICAgIEFTU0VSVChtZXJnZVBvaW50QmxvY2spOwotICAgICAgICBtZXJnZVBvaW50
QmxvY2stPmluKCkuZm9yRWFjaFNldEJpdChbJl0odW5zaWduZWQgbG9jYWwpIHsKLSAgICAgICAg
ICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIHZpcnR1YWxSZWdp
c3RlckZvckxvY2FsKGxvY2FsKS5vZmZzZXQoKSk7Ci0gICAgICAgIH0pOworCisgICAgY2FzZSBv
cF9zYXZlOgorICAgIGNhc2Ugb3BfcmVzdW1lOiB7CisgICAgICAgIC8vIERvIG5vdGhpbmcgaW4g
bGl2ZW5lc3MgYW5hbHlzaXMuCiAgICAgICAgIHJldHVybjsKICAgICB9CisKICAgICBkZWZhdWx0
OgogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBicmVhazsK
QEAgLTMwNywxMiArMjkyLDE4IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCgK
IH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KLXZvaWQgY29tcHV0ZURlZnNGb3JCeXRl
Y29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9j
aywgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCit2b2lk
IGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIHVuc2ln
bmVkIGJ5dGVjb2RlT2Zmc2V0LCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQogewogICAgIEludGVy
cHJldGVyKiBpbnRlcnByZXRlciA9IGNvZGVCbG9jay0+dm0oKS0+aW50ZXJwcmV0ZXI7CiAgICAg
SW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luID0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMo
KS5iZWdpbigpOwogICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9ICZpbnN0cnVjdGlvbnNC
ZWdpbltieXRlY29kZU9mZnNldF07CiAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnRlcnByZXRl
ci0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb24tPnUub3Bjb2RlKTsKKyAgICBjb21wdXRlVXNlc0Zv
ckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9jaywgb3Bjb2RlSUQsIGluc3RydWN0aW9uLCBmdW5jdG9y
KTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQmxvY2ssIHR5cGVuYW1lIEluc3RydWN0aW9uLCB0
eXBlbmFtZSBGdW5jdG9yPgordm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KEJsb2Nr
KiBjb2RlQmxvY2ssIE9wY29kZUlEIG9wY29kZUlELCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24s
IGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCit7CiAgICAgc3dpdGNoIChvcGNvZGVJRCkgewogICAg
IC8vIFRoZXNlIGRvbid0IGRlZmluZSBhbnl0aGluZy4KICAgICBjYXNlIG9wX2NvcHlfcmVzdDoK
QEAgLTMyMCw3ICszMTEsNiBAQCB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQ29k
ZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvYwogICAgIGNhc2Ugb3Bf
ZW5kOgogICAgIGNhc2Ugb3BfdGhyb3c6CiAgICAgY2FzZSBvcF90aHJvd19zdGF0aWNfZXJyb3I6
Ci0gICAgY2FzZSBvcF9zYXZlOgogICAgIGNhc2Ugb3BfYXNzZXJ0OgogICAgIGNhc2Ugb3BfZGVi
dWc6CiAgICAgY2FzZSBvcF9yZXQ6CkBAIC00NTksNyArNDQ5LDcgQEAgdm9pZCBjb21wdXRlRGVm
c0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29kZUJhc2ljQmxv
Y2sqIGJsb2MKICAgICBjYXNlIG9wX2RlbF9ieV9pZDoKICAgICBjYXNlIG9wX2RlbF9ieV92YWw6
CiAgICAgY2FzZSBvcF91bnNpZ25lZDoKLSAgICBjYXNlIG9wX2dldF9mcm9tX2FyZ3VtZW50czog
CisgICAgY2FzZSBvcF9nZXRfZnJvbV9hcmd1bWVudHM6CiAgICAgY2FzZSBvcF9nZXRfcmVzdF9s
ZW5ndGg6IHsKICAgICAgICAgQVNTRVJUKG9wY29kZUxlbmd0aHNbb3Bjb2RlSURdID4gMSk7CiAg
ICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0
aW9uWzFdLnUub3BlcmFuZCk7CkBAIC00NzYsMTggKzQ2NiwyNyBAQCB2b2lkIGNvbXB1dGVEZWZz
Rm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFzaWNCbG9j
ayogYmxvYwogICAgICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNv
ZGVJRCwgdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaSkub2Zmc2V0KCkpOwogICAgICAgICByZXR1
cm47CiAgICAgfQorICAgIGNhc2Ugb3Bfc2F2ZToKICAgICBjYXNlIG9wX3Jlc3VtZTogewotICAg
ICAgICBSRUxFQVNFX0FTU0VSVChibG9jay0+c3VjY2Vzc29ycygpLnNpemUoKSA9PSAxKTsKLSAg
ICAgICAgLy8gRklYTUU6IFRoaXMgaXMgcmVhbGx5IGRpcnR5LgotICAgICAgICAvLyBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU5MjgxCi0gICAgICAgIGJsb2NrLT5z
dWNjZXNzb3JzKClbMF0tPmluKCkuZm9yRWFjaFNldEJpdChbJl0odW5zaWduZWQgbG9jYWwpIHsK
LSAgICAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIHZp
cnR1YWxSZWdpc3RlckZvckxvY2FsKGxvY2FsKS5vZmZzZXQoKSk7Ci0gICAgICAgIH0pOworICAg
ICAgICAvLyBEbyBub3RoaW5nIGluIGxpdmVuZXNzIGFuYWx5c2lzLgogICAgICAgICByZXR1cm47
CiAgICAgfQorICAgIGRlZmF1bHQ6CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgICAgIHJldHVybjsKICAgICB9CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0
b3I+Cit2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQorewor
ICAgIEludGVycHJldGVyKiBpbnRlcnByZXRlciA9IGNvZGVCbG9jay0+dm0oKS0+aW50ZXJwcmV0
ZXI7CisgICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luID0gY29kZUJsb2NrLT5pbnN0
cnVjdGlvbnMoKS5iZWdpbigpOworICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9ICZpbnN0
cnVjdGlvbnNCZWdpbltieXRlY29kZU9mZnNldF07CisgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBp
bnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb24tPnUub3Bjb2RlKTsKKyAgICBjb21w
dXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9jaywgb3Bjb2RlSUQsIGluc3RydWN0aW9u
LCBmdW5jdG9yKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBCeXRlY29k
ZVVzZURlZl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3Bw
CmluZGV4IDEzYjE1MGYxNGJiNTVlYWE5NzZmNzFiNDhlY2RmN2ZlMDE1Nzk1YWEuLjU3NmQzMWQy
NzY0MmI4ZmU2NDMwNTY1ZWQ2MmQwMzllZTVkMjkxMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC0zMiw2ICszMiw3IEBACiAKICNpbmNsdWRl
ICJCYXNpY0Jsb2NrTG9jYXRpb24uaCIKICNpbmNsdWRlICJCeXRlY29kZUdlbmVyYXRvci5oIgor
I2luY2x1ZGUgIkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5oIgogI2luY2x1ZGUgIkJ5dGVjb2Rl
VXNlRGVmLmgiCiAjaW5jbHVkZSAiQ2FsbExpbmtTdGF0dXMuaCIKICNpbmNsdWRlICJERkdDYXBh
YmlsaXRpZXMuaCIKQEAgLTY5MiwxOCArNjkzLDYgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRl
Y29kZShQcmludFN0cmVhbSYgb3V0KQogICAgICAgICB9IHdoaWxlIChpIDwgbV9yYXJlRGF0YS0+
bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzLnNpemUoKSk7CiAgICAgfQogCi0gICAgaWYgKG1fcmFy
ZURhdGEgJiYgIW1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQuaXNFbXB0eSgp
KSB7Ci0gICAgICAgIG91dC5wcmludGYoIlxuTGl2ZSBDYWxsZWUgTG9jYWxzOlxuIik7Ci0gICAg
ICAgIHVuc2lnbmVkIGkgPSAwOwotICAgICAgICBkbyB7Ci0gICAgICAgICAgICBjb25zdCBGYXN0
Qml0VmVjdG9yJiBsaXZlbmVzcyA9IG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWll
bGRbaV07Ci0gICAgICAgICAgICBvdXQucHJpbnRmKCIgIGxpdmUlMXUgPSAiLCBpKTsKLSAgICAg
ICAgICAgIGxpdmVuZXNzLmR1bXAob3V0KTsKLSAgICAgICAgICAgIG91dC5wcmludGYoIlxuIik7
Ci0gICAgICAgICAgICArK2k7Ci0gICAgICAgIH0gd2hpbGUgKGkgPCBtX3JhcmVEYXRhLT5tX2xp
dmVDYWxsZWVMb2NhbHNBdFlpZWxkLnNpemUoKSk7Ci0gICAgfQotCiAgICAgb3V0LnByaW50Zigi
XG4iKTsKIH0KIApAQCAtMTY2MiwzMSArMTY1MSw2IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0
ZWNvZGUoCiAgICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgJWQiLCBkZWJ1Z0hvb2tOYW1lKGRl
YnVnSG9va0lEKSwgaGFzQnJlYWtwb2ludEZsYWcpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KLSAgICAgICAgY2FzZSBvcF9zYXZlOiB7Ci0gICAgICAgICAgICBpbnQgZ2VuZXJhdG9y
ID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9j
YWxzSW5kZXggPSAoKytpdCktPnUudW5zaWduZWRWYWx1ZTsKLSAgICAgICAgICAgIGludCBvZmZz
ZXQgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIEZhc3RCaXRWZWN0b3IgbGl2ZW5l
c3M7Ci0gICAgICAgICAgICBpZiAobGl2ZUNhbGxlZUxvY2Fsc0luZGV4IDwgbV9yYXJlRGF0YS0+
bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZC5zaXplKCkpCi0gICAgICAgICAgICAgICAgbGl2ZW5l
c3MgPSBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkW2xpdmVDYWxsZWVMb2Nh
bHNJbmRleF07Ci0gICAgICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2Nh
dGlvbiwgaXQsICJzYXZlIik7Ci0gICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgIiwgcmVnaXN0
ZXJOYW1lKGdlbmVyYXRvcikuZGF0YSgpKTsKLSAgICAgICAgICAgIGxpdmVuZXNzLmR1bXAob3V0
KTsKLSAgICAgICAgICAgIG91dC5wcmludGYoIihAbGl2ZSUxdSksICVkKC0+JWQpIiwgbGl2ZUNh
bGxlZUxvY2Fsc0luZGV4LCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2Ugb3BfcmVzdW1lOiB7Ci0gICAgICAgICAg
ICBpbnQgZ2VuZXJhdG9yID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICB1bnNpZ25l
ZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSAoKytpdCktPnUudW5zaWduZWRWYWx1ZTsKLSAgICAg
ICAgICAgIEZhc3RCaXRWZWN0b3IgbGl2ZW5lc3M7Ci0gICAgICAgICAgICBpZiAobGl2ZUNhbGxl
ZUxvY2Fsc0luZGV4IDwgbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZC5zaXpl
KCkpCi0gICAgICAgICAgICAgICAgbGl2ZW5lc3MgPSBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVM
b2NhbHNBdFlpZWxkW2xpdmVDYWxsZWVMb2NhbHNJbmRleF07Ci0gICAgICAgICAgICBwcmludExv
Y2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJyZXN1bWUiKTsKLSAgICAgICAg
ICAgIG91dC5wcmludGYoIiVzLCAiLCByZWdpc3Rlck5hbWUoZ2VuZXJhdG9yKS5kYXRhKCkpOwot
ICAgICAgICAgICAgbGl2ZW5lc3MuZHVtcChvdXQpOwotICAgICAgICAgICAgb3V0LnByaW50Zigi
KEBsaXZlJTF1KSIsIGxpdmVDYWxsZWVMb2NhbHNJbmRleCk7Ci0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2Fzc2VydDogewogICAgICAgICAgICAgaW50IGNv
bmRpdGlvbiA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IGxpbmUgPSAoKytp
dCktPnUub3BlcmFuZDsKQEAgLTE4OTksNyArMTg2Myw2IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5p
c2hDcmVhdGlvbihWTSYgdm0sIENvcHlQYXJzZWRCbG9ja1RhZywgQ29kZUJsb2NrJiBvdGhlcikK
ICAgICAgICAgbV9yYXJlRGF0YS0+bV9jb25zdGFudEJ1ZmZlcnMgPSBvdGhlci5tX3JhcmVEYXRh
LT5tX2NvbnN0YW50QnVmZmVyczsKICAgICAgICAgbV9yYXJlRGF0YS0+bV9zd2l0Y2hKdW1wVGFi
bGVzID0gb3RoZXIubV9yYXJlRGF0YS0+bV9zd2l0Y2hKdW1wVGFibGVzOwogICAgICAgICBtX3Jh
cmVEYXRhLT5tX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXMgPSBvdGhlci5tX3JhcmVEYXRhLT5tX3N0
cmluZ1N3aXRjaEp1bXBUYWJsZXM7Ci0gICAgICAgIG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxv
Y2Fsc0F0WWllbGQgPSBvdGhlci5tX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxk
OwogICAgIH0KICAgICAKICAgICBoZWFwKCktPm1fY29kZUJsb2Nrcy5hZGQodGhpcyk7CkBAIC0y
MDIxLDcgKzE5ODQsNyBAQCB2b2lkIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBT
Y3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGluawogICAgICAgICAgICAgICAg
IFVubGlua2VkU3RyaW5nSnVtcFRhYmxlOjpTdHJpbmdPZmZzZXRUYWJsZTo6aXRlcmF0b3IgZW5k
ID0gdW5saW5rZWRDb2RlQmxvY2stPnN0cmluZ1N3aXRjaEp1bXBUYWJsZShpKS5vZmZzZXRUYWJs
ZS5lbmQoKTsKICAgICAgICAgICAgICAgICBmb3IgKDsgcHRyICE9IGVuZDsgKytwdHIpIHsKICAg
ICAgICAgICAgICAgICAgICAgT2Zmc2V0TG9jYXRpb24gb2Zmc2V0OwotICAgICAgICAgICAgICAg
ICAgICBvZmZzZXQuYnJhbmNoT2Zmc2V0ID0gcHRyLT52YWx1ZTsKKyAgICAgICAgICAgICAgICAg
ICAgb2Zmc2V0LmJyYW5jaE9mZnNldCA9IHB0ci0+dmFsdWUuYnJhbmNoT2Zmc2V0OwogICAgICAg
ICAgICAgICAgICAgICBtX3JhcmVEYXRhLT5tX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXNbaV0ub2Zm
c2V0VGFibGUuYWRkKHB0ci0+a2V5LCBvZmZzZXQpOwogICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIH0KQEAgLTIwNjEsMTEgKzIwMjQsMjAgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmlzaENy
ZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsK
ICAgICAvLyBCb29ra2VlcCB0aGUgc3Ryb25nbHkgcmVmZXJlbmNlZCBtb2R1bGUgZW52aXJvbm1l
bnRzLgogICAgIEhhc2hTZXQ8SlNNb2R1bGVFbnZpcm9ubWVudCo+IHN0cm9uZ2x5UmVmZXJlbmNl
ZE1vZHVsZUVudmlyb25tZW50czsKIAotICAgIC8vIEJvb2trZWVwIHRoZSBtZXJnZSBwb2ludCBi
eXRlY29kZSBvZmZzZXRzLgotICAgIFZlY3RvcjxzaXplX3Q+IG1lcmdlUG9pbnRCeXRlY29kZU9m
ZnNldHM7Ci0KICAgICBSZWZDb3VudGVkQXJyYXk8SW5zdHJ1Y3Rpb24+IGluc3RydWN0aW9ucyhp
bnN0cnVjdGlvbkNvdW50KTsKIAorICAgIC8vIFZhbHVlUHJvZmlsZSBhcnJheSBuZWVkcyB0byBi
ZSBzb3J0ZWQgYnkgdGhlIGJ5dGVjb2RlIG9mZnNldC4gU2luY2UgdGhlIGdlbmVyYXRvcmlmaWNh
dGlvbiBhZGRzIG5ldyB2YWx1ZSBwcm9maWxlcywKKyAgICAvLyB0aGlzIGludmFyaWFudCBpcyBi
cm9rZW4uIFdlIGFzc2lnbiBhIG5ldyB2YWx1ZSBwcm9maWxlIGluZGV4IGhlcmUgdG8gbWFrZSB0
aGlzIGFzc3VtcHRpb24gdmFsaWQuCisgICAgLy8gSnVzdCBjb3VudGluZyB0aGUgdmFsdWUgcHJv
ZmlsZXMgaXMgT0sgdG8gYXNzaWduIGEgbmV3IGluZGV4IHNpbmNlIG9uZSB2YWx1ZSBwcm9maWxl
IGlzIG5vdCBzaGFyZWQgYW1vbmcgbXVsdGlwbGUgb3Bjb2Rlcy4KKyAgICB1bnNpZ25lZCB2YWx1
ZVByb2ZpbGVDb3VudCA9IDA7CisgICAgYXV0byBsaW5rVmFsdWVQcm9maWxlID0gWyZdKHVuc2ln
bmVkIGJ5dGVjb2RlT2Zmc2V0LCB1bnNpZ25lZCBvcExlbmd0aCkgeworICAgICAgICB1bnNpZ25l
ZCB2YWx1ZVByb2ZpbGVJbmRleCA9IHZhbHVlUHJvZmlsZUNvdW50Kys7CisgICAgICAgIFZhbHVl
UHJvZmlsZSogcHJvZmlsZSA9ICZtX3ZhbHVlUHJvZmlsZXNbdmFsdWVQcm9maWxlSW5kZXhdOwor
ICAgICAgICBBU1NFUlQocHJvZmlsZS0+bV9ieXRlY29kZU9mZnNldCA9PSAtMSk7CisgICAgICAg
IHByb2ZpbGUtPm1fYnl0ZWNvZGVPZmZzZXQgPSBieXRlY29kZU9mZnNldDsKKyAgICAgICAgaW5z
dHJ1Y3Rpb25zW2J5dGVjb2RlT2Zmc2V0ICsgb3BMZW5ndGggLSAxXSA9IHByb2ZpbGU7CisgICAg
fTsKKwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7ICFpbnN0cnVjdGlvblJlYWRlci5hdEVuZCgp
OyApIHsKICAgICAgICAgY29uc3QgVW5saW5rZWRJbnN0cnVjdGlvbiogcGMgPSBpbnN0cnVjdGlv
blJlYWRlci5uZXh0KCk7CiAKQEAgLTIxMDAsMTAgKzIwNzIsNyBAQCB2b2lkIENvZGVCbG9jazo6
ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUs
IFVubGluawogICAgICAgICBjYXNlIG9wX2dldF9ieV9pZDoKICAgICAgICAgY2FzZSBvcF9nZXRf
ZnJvbV9hcmd1bWVudHM6CiAgICAgICAgIGNhc2Ugb3BfdG9fbnVtYmVyOiB7Ci0gICAgICAgICAg
ICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSAmbV92YWx1ZVByb2ZpbGVzW3BjW29wTGVuZ3RoIC0g
MV0udS5vcGVyYW5kXTsKLSAgICAgICAgICAgIEFTU0VSVChwcm9maWxlLT5tX2J5dGVjb2RlT2Zm
c2V0ID09IC0xKTsKLSAgICAgICAgICAgIHByb2ZpbGUtPm1fYnl0ZWNvZGVPZmZzZXQgPSBpOwot
ICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zW2kgKyBvcExlbmd0aCAtIDFdID0gcHJvZmlsZTsKKyAg
ICAgICAgICAgIGxpbmtWYWx1ZVByb2ZpbGUoaSwgb3BMZW5ndGgpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9wdXRfYnlfdmFsOiB7CkBAIC0yMTQwLDEw
ICsyMTA5LDcgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0
RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICAgICAgY2FzZSBvcF9jYWxs
OgogICAgICAgICBjYXNlIG9wX3RhaWxfY2FsbDoKICAgICAgICAgY2FzZSBvcF9jYWxsX2V2YWw6
IHsKLSAgICAgICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9ICZtX3ZhbHVlUHJvZmlsZXNb
cGNbb3BMZW5ndGggLSAxXS51Lm9wZXJhbmRdOwotICAgICAgICAgICAgQVNTRVJUKHByb2ZpbGUt
Pm1fYnl0ZWNvZGVPZmZzZXQgPT0gLTEpOwotICAgICAgICAgICAgcHJvZmlsZS0+bV9ieXRlY29k
ZU9mZnNldCA9IGk7Ci0gICAgICAgICAgICBpbnN0cnVjdGlvbnNbaSArIG9wTGVuZ3RoIC0gMV0g
PSBwcm9maWxlOworICAgICAgICAgICAgbGlua1ZhbHVlUHJvZmlsZShpLCBvcExlbmd0aCk7CiAg
ICAgICAgICAgICBpbnQgYXJyYXlQcm9maWxlSW5kZXggPSBwY1tvcExlbmd0aCAtIDJdLnUub3Bl
cmFuZDsKICAgICAgICAgICAgIG1fYXJyYXlQcm9maWxlc1thcnJheVByb2ZpbGVJbmRleF0gPSBB
cnJheVByb2ZpbGUoaSk7CiAgICAgICAgICAgICBpbnN0cnVjdGlvbnNbaSArIG9wTGVuZ3RoIC0g
Ml0gPSAmbV9hcnJheVByb2ZpbGVzW2FycmF5UHJvZmlsZUluZGV4XTsKQEAgLTIxNTIsMTAgKzIx
MTgsNyBAQCB2b2lkIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVj
dXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGluawogICAgICAgICB9CiAgICAgICAgIGNhc2Ug
b3BfY29uc3RydWN0OiB7CiAgICAgICAgICAgICBpbnN0cnVjdGlvbnNbaSArIDVdID0gJm1fbGxp
bnRDYWxsTGlua0luZm9zW3BjWzVdLnUub3BlcmFuZF07Ci0gICAgICAgICAgICBWYWx1ZVByb2Zp
bGUqIHByb2ZpbGUgPSAmbV92YWx1ZVByb2ZpbGVzW3BjW29wTGVuZ3RoIC0gMV0udS5vcGVyYW5k
XTsKLSAgICAgICAgICAgIEFTU0VSVChwcm9maWxlLT5tX2J5dGVjb2RlT2Zmc2V0ID09IC0xKTsK
LSAgICAgICAgICAgIHByb2ZpbGUtPm1fYnl0ZWNvZGVPZmZzZXQgPSBpOwotICAgICAgICAgICAg
aW5zdHJ1Y3Rpb25zW2kgKyBvcExlbmd0aCAtIDFdID0gcHJvZmlsZTsKKyAgICAgICAgICAgIGxp
bmtWYWx1ZVByb2ZpbGUoaSwgb3BMZW5ndGgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KICAgICAgICAgY2FzZSBvcF9nZXRfYXJyYXlfbGVuZ3RoOgpAQCAtMjE4NiwxMCArMjE0OSw3
IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFi
bGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAgICAgIH0KIAogICAgICAgICBjYXNlIG9w
X2dldF9mcm9tX3Njb3BlOiB7Ci0gICAgICAgICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSAm
bV92YWx1ZVByb2ZpbGVzW3BjW29wTGVuZ3RoIC0gMV0udS5vcGVyYW5kXTsKLSAgICAgICAgICAg
IEFTU0VSVChwcm9maWxlLT5tX2J5dGVjb2RlT2Zmc2V0ID09IC0xKTsKLSAgICAgICAgICAgIHBy
b2ZpbGUtPm1fYnl0ZWNvZGVPZmZzZXQgPSBpOwotICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zW2kg
KyBvcExlbmd0aCAtIDFdID0gcHJvZmlsZTsKKyAgICAgICAgICAgIGxpbmtWYWx1ZVByb2ZpbGUo
aSwgb3BMZW5ndGgpOwogCiAgICAgICAgICAgICAvLyBnZXRfZnJvbV9zY29wZSBkc3QsIHNjb3Bl
LCBpZCwgR2V0UHV0SW5mbywgU3RydWN0dXJlLCBPcGVyYW5kCiAKQEAgLTIzNDYsMTUgKzIzMDYs
NiBAQCB2b2lkIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRh
YmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGluawogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KIAotICAgICAgICBjYXNlIG9wX3NhdmU6IHsKLSAgICAgICAgICAgIHVuc2lnbmVkIGxpdmVD
YWxsZWVMb2NhbHNJbmRleCA9IHBjWzJdLnUuaW5kZXg7Ci0gICAgICAgICAgICBpbnQgb2Zmc2V0
ID0gcGNbM10udS5vcGVyYW5kOwotICAgICAgICAgICAgaWYgKGxpdmVDYWxsZWVMb2NhbHNJbmRl
eCA+PSBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXRzLnNpemUoKSkKLSAgICAgICAgICAgICAgICBt
ZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXRzLnJlc2l6ZShsaXZlQ2FsbGVlTG9jYWxzSW5kZXggKyAx
KTsKLSAgICAgICAgICAgIG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldHNbbGl2ZUNhbGxlZUxvY2Fs
c0luZGV4XSA9IGkgKyBvZmZzZXQ7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotCiAg
ICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMjM2Niwy
MCArMjMxNyw2IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlw
dEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAKICAgICBtX2luc3RydWN0aW9u
cyA9IFdURk1vdmUoaW5zdHJ1Y3Rpb25zKTsKIAotICAgIC8vIFBlcmZvcm0gYnl0ZWNvZGUgbGl2
ZW5lc3MgYW5hbHlzaXMgdG8gZGV0ZXJtaW5lIHdoaWNoIGxvY2FscyBhcmUgbGl2ZSBhbmQgc2hv
dWxkIGJlIHJlc3VtZWQgd2hlbiBleGVjdXRpbmcgb3BfcmVzdW1lLgotICAgIGlmICh1bmxpbmtl
ZENvZGVCbG9jay0+cGFyc2VNb2RlKCkgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JCb2R5
TW9kZSkgewotICAgICAgICBpZiAoc2l6ZV90IGNvdW50ID0gbWVyZ2VQb2ludEJ5dGVjb2RlT2Zm
c2V0cy5zaXplKCkpIHsKLSAgICAgICAgICAgIGNyZWF0ZVJhcmVEYXRhSWZOZWNlc3NhcnkoKTsK
LSAgICAgICAgICAgIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcyBsaXZlbmVzcyh0aGlzKTsKLSAg
ICAgICAgICAgIG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQuZ3Jvdyhjb3Vu
dCk7Ci0gICAgICAgICAgICBzaXplX3QgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gMDsKLSAgICAg
ICAgICAgIGZvciAoc2l6ZV90IGJ5dGVjb2RlT2Zmc2V0IDogbWVyZ2VQb2ludEJ5dGVjb2RlT2Zm
c2V0cykgewotICAgICAgICAgICAgICAgIG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0
WWllbGRbbGl2ZUNhbGxlZUxvY2Fsc0luZGV4XSA9IGxpdmVuZXNzLmdldExpdmVuZXNzSW5mb0F0
Qnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpOwotICAgICAgICAgICAgICAgICsrbGl2ZUNh
bGxlZUxvY2Fsc0luZGV4OwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCiAgICAg
Ly8gU2V0IG9wdGltaXphdGlvbiB0aHJlc2hvbGRzIG9ubHkgYWZ0ZXIgbV9pbnN0cnVjdGlvbnMg
aXMgaW5pdGlhbGl6ZWQsIHNpbmNlIHRoZXNlCiAgICAgLy8gcmVseSBvbiB0aGUgaW5zdHJ1Y3Rp
b24gY291bnQgKGFuZCBhcmUgaW4gdGhlb3J5IHBlcm1pdHRlZCB0byBhbHNvIGluc3BlY3QgdGhl
CiAgICAgLy8gaW5zdHJ1Y3Rpb24gc3RyZWFtIHRvIG1vcmUgYWNjdXJhdGUgYXNzZXNzIHRoZSBj
b3N0IG9mIHRpZXItdXApLgpAQCAtMzE3OSwyMSArMzExNiw3IEBAIEhhbmRsZXJJbmZvKiBDb2Rl
QmxvY2s6OmhhbmRsZXJGb3JJbmRleCh1bnNpZ25lZCBpbmRleCwgUmVxdWlyZWRIYW5kbGVyIHJl
cXVpcmVkCiB7CiAgICAgaWYgKCFtX3JhcmVEYXRhKQogICAgICAgICByZXR1cm4gMDsKLSAgICAK
LSAgICBWZWN0b3I8SGFuZGxlckluZm8+JiBleGNlcHRpb25IYW5kbGVycyA9IG1fcmFyZURhdGEt
Pm1fZXhjZXB0aW9uSGFuZGxlcnM7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBleGNlcHRp
b25IYW5kbGVycy5zaXplKCk7ICsraSkgewotICAgICAgICBIYW5kbGVySW5mbyYgaGFuZGxlciA9
IGV4Y2VwdGlvbkhhbmRsZXJzW2ldOwotICAgICAgICBpZiAoKHJlcXVpcmVkSGFuZGxlciA9PSBS
ZXF1aXJlZEhhbmRsZXI6OkNhdGNoSGFuZGxlcikgJiYgIWhhbmRsZXIuaXNDYXRjaEhhbmRsZXIo
KSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIC8vIEhhbmRsZXJzIGFyZSBvcmRl
cmVkIGlubmVybW9zdCBmaXJzdCwgc28gdGhlIGZpcnN0IGhhbmRsZXIgd2UgZW5jb3VudGVyCi0g
ICAgICAgIC8vIHRoYXQgY29udGFpbnMgdGhlIHNvdXJjZSBhZGRyZXNzIGlzIHRoZSBjb3JyZWN0
IGhhbmRsZXIgdG8gdXNlLgotICAgICAgICAvLyBUaGlzIGluZGV4IHVzZWQgaXMgZWl0aGVyIHRo
ZSBCeXRlY29kZU9mZnNldCBvciBhIENhbGxTaXRlSW5kZXguCi0gICAgICAgIGlmIChoYW5kbGVy
LnN0YXJ0IDw9IGluZGV4ICYmIGhhbmRsZXIuZW5kID4gaW5kZXgpCi0gICAgICAgICAgICByZXR1
cm4gJmhhbmRsZXI7Ci0gICAgfQotCi0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIEhhbmRsZXJJ
bmZvOjpoYW5kbGVyRm9ySW5kZXgobV9yYXJlRGF0YS0+bV9leGNlcHRpb25IYW5kbGVycywgaW5k
ZXgsIHJlcXVpcmVkSGFuZGxlcik7CiB9CiAKIENhbGxTaXRlSW5kZXggQ29kZUJsb2NrOjpuZXdF
eGNlcHRpb25IYW5kbGluZ0NhbGxTaXRlSW5kZXgoQ2FsbFNpdGVJbmRleCBvcmlnaW5hbENhbGxT
aXRlKQpAQCAtMzI4OSw3ICszMjEyLDYgQEAgdm9pZCBDb2RlQmxvY2s6OnNocmlua1RvRml0KFNo
cmlua01vZGUgc2hyaW5rTW9kZSkKICAgICAgICAgaWYgKG1fcmFyZURhdGEpIHsKICAgICAgICAg
ICAgIG1fcmFyZURhdGEtPm1fc3dpdGNoSnVtcFRhYmxlcy5zaHJpbmtUb0ZpdCgpOwogICAgICAg
ICAgICAgbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzLnNocmlua1RvRml0KCk7
Ci0gICAgICAgICAgICBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkLnNocmlu
a1RvRml0KCk7CiAgICAgICAgIH0KICAgICB9IC8vIGVsc2UgZG9uJ3Qgc2hyaW5rIHRoZXNlLCBi
ZWNhdXNlIHdlIHdvdWxkIGhhdmUgYWxyZWFkeSBwb2ludGVkIHBvaW50ZXJzIGludG8gdGhlc2Ug
dGFibGVzLgogfQpAQCAtNDU2Nyw0ICs0NDg5LDE2IEBAIHZvaWQgQ29kZUJsb2NrOjpqaXRTb29u
KCkKICAgICBtX2xsaW50RXhlY3V0ZUNvdW50ZXIuc2V0TmV3VGhyZXNob2xkKHRocmVzaG9sZEZv
ckpJVChPcHRpb25zOjp0aHJlc2hvbGRGb3JKSVRTb29uKCkpLCB0aGlzKTsKIH0KIAorQnl0ZWNv
ZGVMaXZlbmVzc0FuYWx5c2lzJiBDb2RlQmxvY2s6OmxpdmVuZXNzQW5hbHlzaXNTbG93KCkKK3sK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzPiBhbmFseXNpcyA9
IHN0ZDo6bWFrZV91bmlxdWU8Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzPih0aGlzKTsKKyAgICB7
CisgICAgICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKG1fbG9jayk7CisgICAgICAgIGlm
ICghbV9saXZlbmVzc0FuYWx5c2lzKQorICAgICAgICAgICAgbV9saXZlbmVzc0FuYWx5c2lzID0g
V1RGTW92ZShhbmFseXNpcyk7CisgICAgICAgIHJldHVybiAqbV9saXZlbmVzc0FuYWx5c2lzOwor
ICAgIH0KK30KKworCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2suaAppbmRleCBiMjg4MzY1NGJlMzQ1ZTdhYjAxMTBlYzFiNmY1ZDY5
N2ExOGMyN2MyLi4wYjkwYjdlYmQ3Y2I2YTM2YzUxMDhmY2UyYzY5NmY3OWM1NGM1ZTA4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCkBAIC0zMyw3ICszMyw2
IEBACiAjaW5jbHVkZSAiQXJyYXlQcm9maWxlLmgiCiAjaW5jbHVkZSAiQnlWYWxJbmZvLmgiCiAj
aW5jbHVkZSAiQnl0ZWNvZGVDb252ZW50aW9ucy5oIgotI2luY2x1ZGUgIkJ5dGVjb2RlTGl2ZW5l
c3NBbmFseXNpcy5oIgogI2luY2x1ZGUgIkNhbGxMaW5rSW5mby5oIgogI2luY2x1ZGUgIkNhbGxS
ZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0LmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrSGFzaC5o
IgpAQCAtNzgsNiArNzcsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorY2xhc3MgQnl0ZWNvZGVM
aXZlbmVzc0FuYWx5c2lzOwogY2xhc3MgRXhlY1N0YXRlOwogY2xhc3MgSlNNb2R1bGVFbnZpcm9u
bWVudDsKIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKQEAgLTIyMCwxMCArMjIwLDYgQEAg
Y2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgICAgIHJldHVybiBpbmRleCA+
PSBtX251bVZhcnM7CiAgICAgfQogCi0gICAgZW51bSBjbGFzcyBSZXF1aXJlZEhhbmRsZXIgewot
ICAgICAgICBDYXRjaEhhbmRsZXIsCi0gICAgICAgIEFueUhhbmRsZXIKLSAgICB9OwogICAgIEhh
bmRsZXJJbmZvKiBoYW5kbGVyRm9yQnl0ZWNvZGVPZmZzZXQodW5zaWduZWQgYnl0ZWNvZGVPZmZz
ZXQsIFJlcXVpcmVkSGFuZGxlciA9IFJlcXVpcmVkSGFuZGxlcjo6QW55SGFuZGxlcik7CiAgICAg
SGFuZGxlckluZm8qIGhhbmRsZXJGb3JJbmRleCh1bnNpZ25lZCwgUmVxdWlyZWRIYW5kbGVyID0g
UmVxdWlyZWRIYW5kbGVyOjpBbnlIYW5kbGVyKTsKICAgICB2b2lkIHJlbW92ZUV4Y2VwdGlvbkhh
bmRsZXJGb3JDYWxsU2l0ZShDYWxsU2l0ZUluZGV4KTsKQEAgLTI5NSw2ICsyOTEsOCBAQCBjbGFz
cyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PEluc3RydWN0aW9uKj4ocmV0dXJuQWRkcmVzcykgLSBpbnN0cnVjdGlvbnMoKS5iZWdpbigpOwog
ICAgIH0KIAorICAgIHR5cGVkZWYgUmVmQ291bnRlZEFycmF5PEluc3RydWN0aW9uPiYgVW5wYWNr
ZWRJbnN0cnVjdGlvbnM7CisKICAgICB1bnNpZ25lZCBudW1iZXJPZkluc3RydWN0aW9ucygpIGNv
bnN0IHsgcmV0dXJuIG1faW5zdHJ1Y3Rpb25zLnNpemUoKTsgfQogICAgIFJlZkNvdW50ZWRBcnJh
eTxJbnN0cnVjdGlvbj4mIGluc3RydWN0aW9ucygpIHsgcmV0dXJuIG1faW5zdHJ1Y3Rpb25zOyB9
CiAgICAgY29uc3QgUmVmQ291bnRlZEFycmF5PEluc3RydWN0aW9uPiYgaW5zdHJ1Y3Rpb25zKCkg
Y29uc3QgeyByZXR1cm4gbV9pbnN0cnVjdGlvbnM7IH0KQEAgLTU0Miw3ICs1NDAsNyBAQCBjbGFz
cyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICB9CiAKICAgICBXcml0ZUJhcnJpZXI8
VW5rbm93bj4mIGNvbnN0YW50UmVnaXN0ZXIoaW50IGluZGV4KSB7IHJldHVybiBtX2NvbnN0YW50
UmVnaXN0ZXJzW2luZGV4IC0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXhdOyB9Ci0gICAgQUxX
QVlTX0lOTElORSBib29sIGlzQ29uc3RhbnRSZWdpc3RlckluZGV4KGludCBpbmRleCkgY29uc3Qg
eyByZXR1cm4gaW5kZXggPj0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXg7IH0KKyAgICBzdGF0
aWMgQUxXQVlTX0lOTElORSBib29sIGlzQ29uc3RhbnRSZWdpc3RlckluZGV4KGludCBpbmRleCkg
eyByZXR1cm4gaW5kZXggPj0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXg7IH0KICAgICBBTFdB
WVNfSU5MSU5FIEpTVmFsdWUgZ2V0Q29uc3RhbnQoaW50IGluZGV4KSBjb25zdCB7IHJldHVybiBt
X2NvbnN0YW50UmVnaXN0ZXJzW2luZGV4IC0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXhdLmdl
dCgpOyB9CiAgICAgQUxXQVlTX0lOTElORSBTb3VyY2VDb2RlUmVwcmVzZW50YXRpb24gY29uc3Rh
bnRTb3VyY2VDb2RlUmVwcmVzZW50YXRpb24oaW50IGluZGV4KSBjb25zdCB7IHJldHVybiBtX2Nv
bnN0YW50c1NvdXJjZUNvZGVSZXByZXNlbnRhdGlvbltpbmRleCAtIEZpcnN0Q29uc3RhbnRSZWdp
c3RlckluZGV4XTsgfQogCkBAIC01ODgsMTQgKzU4Niw3IEBAIGNsYXNzIENvZGVCbG9jayA6IHB1
YmxpYyBKU0NlbGwgewogICAgICAgICAgICAgaWYgKCEhbV9saXZlbmVzc0FuYWx5c2lzKQogICAg
ICAgICAgICAgICAgIHJldHVybiAqbV9saXZlbmVzc0FuYWx5c2lzOwogICAgICAgICB9Ci0gICAg
ICAgIHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM+IGFuYWx5c2lzID0K
LSAgICAgICAgICAgIHN0ZDo6bWFrZV91bmlxdWU8Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzPih0
aGlzKTsKLSAgICAgICAgewotICAgICAgICAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIo
bV9sb2NrKTsKLSAgICAgICAgICAgIGlmICghbV9saXZlbmVzc0FuYWx5c2lzKQotICAgICAgICAg
ICAgICAgIG1fbGl2ZW5lc3NBbmFseXNpcyA9IFdURk1vdmUoYW5hbHlzaXMpOwotICAgICAgICAg
ICAgcmV0dXJuICptX2xpdmVuZXNzQW5hbHlzaXM7Ci0gICAgICAgIH0KKyAgICAgICAgcmV0dXJu
IGxpdmVuZXNzQW5hbHlzaXNTbG93KCk7CiAgICAgfQogICAgIAogICAgIHZvaWQgdmFsaWRhdGUo
KTsKQEAgLTYxNiwxOCArNjA3LDYgQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7
CiAgICAgU3RyaW5nSnVtcFRhYmxlJiBhZGRTdHJpbmdTd2l0Y2hKdW1wVGFibGUoKSB7IGNyZWF0
ZVJhcmVEYXRhSWZOZWNlc3NhcnkoKTsgbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFi
bGVzLmFwcGVuZChTdHJpbmdKdW1wVGFibGUoKSk7IHJldHVybiBtX3JhcmVEYXRhLT5tX3N0cmlu
Z1N3aXRjaEp1bXBUYWJsZXMubGFzdCgpOyB9CiAgICAgU3RyaW5nSnVtcFRhYmxlJiBzdHJpbmdT
d2l0Y2hKdW1wVGFibGUoaW50IHRhYmxlSW5kZXgpIHsgUkVMRUFTRV9BU1NFUlQobV9yYXJlRGF0
YSk7IHJldHVybiBtX3JhcmVEYXRhLT5tX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXNbdGFibGVJbmRl
eF07IH0KIAotICAgIC8vIExpdmUgY2FsbGVlIHJlZ2lzdGVycyBhdCB5aWVsZCBwb2ludHMuCi0g
ICAgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQodW5zaWduZWQg
aW5kZXgpIGNvbnN0Ci0gICAgewotICAgICAgICBSRUxFQVNFX0FTU0VSVChtX3JhcmVEYXRhKTsK
LSAgICAgICAgcmV0dXJuIG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGRbaW5k
ZXhdOwotICAgIH0KLSAgICBGYXN0Qml0VmVjdG9yJiBsaXZlQ2FsbGVlTG9jYWxzQXRZaWVsZCh1
bnNpZ25lZCBpbmRleCkKLSAgICB7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fcmFyZURhdGEp
OwotICAgICAgICByZXR1cm4gbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZFtp
bmRleF07Ci0gICAgfQotCiAgICAgRXZhbENvZGVDYWNoZSYgZXZhbENvZGVDYWNoZSgpIHsgY3Jl
YXRlUmFyZURhdGFJZk5lY2Vzc2FyeSgpOyByZXR1cm4gbV9yYXJlRGF0YS0+bV9ldmFsQ29kZUNh
Y2hlOyB9CiAKICAgICBlbnVtIFNocmlua01vZGUgewpAQCAtODgyLDggKzg2MSw2IEBAIGNsYXNz
IENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgICAgICBWZWN0b3I8U2ltcGxlSnVtcFRh
YmxlPiBtX3N3aXRjaEp1bXBUYWJsZXM7CiAgICAgICAgIFZlY3RvcjxTdHJpbmdKdW1wVGFibGU+
IG1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlczsKIAotICAgICAgICBWZWN0b3I8RmFzdEJpdFZlY3Rv
cj4gbV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZDsKLQogICAgICAgICBFdmFsQ29kZUNhY2hlIG1f
ZXZhbENvZGVDYWNoZTsKICAgICB9OwogCkBAIC05MTgsNiArODk1LDggQEAgY2xhc3MgQ29kZUJs
b2NrIDogcHVibGljIEpTQ2VsbCB7CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIENvZGVC
bG9ja1NldDsKKworICAgIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcyYgbGl2ZW5lc3NBbmFseXNp
c1Nsb3coKTsKICAgICAKICAgICBDb2RlQmxvY2sqIHNwZWNpYWxPU1JFbnRyeUJsb2NrT3JOdWxs
KCk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSGFu
ZGxlckluZm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9IYW5kbGVySW5mby5o
CmluZGV4IGFjZGRhMDhlZDE0Y2JmOWYwOTcxMjc1MDQwNWE0MTc0MWY3NmEyMTMuLmJiNjkyYjlk
YzE3MGIwOWY0M2NlODY3Zjk0MWY3NTM1YWNmZWNmNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9IYW5kbGVySW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9IYW5kbGVySW5mby5oCkBAIC0zNyw2ICszNywxMSBAQCBlbnVtIGNsYXNz
IEhhbmRsZXJUeXBlIHsKICAgICBTeW50aGVzaXplZEZpbmFsbHkgPSAzCiB9OwogCitlbnVtIGNs
YXNzIFJlcXVpcmVkSGFuZGxlciB7CisgICAgQ2F0Y2hIYW5kbGVyLAorICAgIEFueUhhbmRsZXIK
K307CisKIHN0cnVjdCBIYW5kbGVySW5mb0Jhc2UgewogICAgIEhhbmRsZXJUeXBlIHR5cGUoKSBj
b25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxIYW5kbGVyVHlwZT4odHlwZUJpdHMpOyB9CiAgICAg
dm9pZCBzZXRUeXBlKEhhbmRsZXJUeXBlIHR5cGUpIHsgdHlwZUJpdHMgPSBzdGF0aWNfY2FzdDx1
aW50MzJfdD4odHlwZSk7IH0KQEAgLTU4LDYgKzYzLDIzIEBAIHN0cnVjdCBIYW5kbGVySW5mb0Jh
c2UgewogCiAgICAgYm9vbCBpc0NhdGNoSGFuZGxlcigpIGNvbnN0IHsgcmV0dXJuIHR5cGUoKSA9
PSBIYW5kbGVyVHlwZTo6Q2F0Y2g7IH0KIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhhbmRsZXI+
CisgICAgc3RhdGljIEhhbmRsZXIqIGhhbmRsZXJGb3JJbmRleChWZWN0b3I8SGFuZGxlcj4mIGV4
ZXB0aW9uSGFuZGxlcnMsIHVuc2lnbmVkIGluZGV4LCBSZXF1aXJlZEhhbmRsZXIgcmVxdWlyZWRI
YW5kbGVyKQorICAgIHsKKyAgICAgICAgZm9yIChIYW5kbGVyJiBoYW5kbGVyIDogZXhlcHRpb25I
YW5kbGVycykgeworICAgICAgICAgICAgaWYgKChyZXF1aXJlZEhhbmRsZXIgPT0gUmVxdWlyZWRI
YW5kbGVyOjpDYXRjaEhhbmRsZXIpICYmICFoYW5kbGVyLmlzQ2F0Y2hIYW5kbGVyKCkpCisgICAg
ICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIC8vIEhhbmRsZXJzIGFyZSBvcmRl
cmVkIGlubmVybW9zdCBmaXJzdCwgc28gdGhlIGZpcnN0IGhhbmRsZXIgd2UgZW5jb3VudGVyCisg
ICAgICAgICAgICAvLyB0aGF0IGNvbnRhaW5zIHRoZSBzb3VyY2UgYWRkcmVzcyBpcyB0aGUgY29y
cmVjdCBoYW5kbGVyIHRvIHVzZS4KKyAgICAgICAgICAgIC8vIFRoaXMgaW5kZXggdXNlZCBpcyBl
aXRoZXIgdGhlIEJ5dGVjb2RlT2Zmc2V0IG9yIGEgQ2FsbFNpdGVJbmRleC4KKyAgICAgICAgICAg
IGlmIChoYW5kbGVyLnN0YXJ0IDw9IGluZGV4ICYmIGhhbmRsZXIuZW5kID4gaW5kZXgpCisgICAg
ICAgICAgICAgICAgcmV0dXJuICZoYW5kbGVyOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgfQorCiAgICAgdWludDMyX3Qgc3RhcnQ7CiAgICAgdWludDMyX3QgZW5k
OwogICAgIHVpbnQzMl90IHRhcmdldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5jcHAKaW5kZXggZTJjYjAwMDQ4Mzc5NGJhOTJk
NTEwZGNmNWZhOTk0ODg1YTIzZGMzZC4uY2FiOWZiZGM0ZTgzOWZiYjg5YTY5MzM1NjIyMmRiMDBl
MTAyMjNjYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNp
c2VKdW1wVGFyZ2V0cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1By
ZWNpc2VKdW1wVGFyZ2V0cy5jcHAKQEAgLTI2LDE0ICsyNiwxNSBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIlByZWNpc2VKdW1wVGFyZ2V0cy5oIgogCisjaW5jbHVkZSAiSW50ZXJw
cmV0ZXJJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogCiBuYW1lc3BhY2UgSlND
IHsKIAotdGVtcGxhdGUgPHNpemVfdCB2ZWN0b3JTaXplPgotc3RhdGljIHZvaWQgZ2V0SnVtcFRh
cmdldHNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgSW50ZXJwcmV0ZXIq
IGludGVycHJldGVyLCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGJ5
dGVjb2RlT2Zmc2V0LCBWZWN0b3I8dW5zaWduZWQsIHZlY3RvclNpemU+JiBvdXQpCit0ZW1wbGF0
ZSA8c2l6ZV90IHZlY3RvclNpemUsIHR5cGVuYW1lIEJsb2NrLCB0eXBlbmFtZSBJbnN0cnVjdGlv
bj4KK3N0YXRpYyB2b2lkIGdldEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoQmxvY2sqIGNv
ZGVCbG9jaywgSW50ZXJwcmV0ZXIqIGludGVycHJldGVyLCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rp
b25zQmVnaW4sIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBWZWN0b3I8dW5zaWduZWQsIHZlY3Rv
clNpemU+JiBvdXQpCiB7Ci0gICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnRlcnByZXRlci0+Z2V0
T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25zQmVnaW5bYnl0ZWNvZGVPZmZzZXRdLnUub3Bjb2RlKTsKKyAg
ICBPcGNvZGVJRCBvcGNvZGVJRCA9IGludGVycHJldGVyLT5nZXRPcGNvZGVJRChpbnN0cnVjdGlv
bnNCZWdpbltieXRlY29kZU9mZnNldF0pOwogICAgIEluc3RydWN0aW9uKiBjdXJyZW50ID0gaW5z
dHJ1Y3Rpb25zQmVnaW4gKyBieXRlY29kZU9mZnNldDsKICAgICBzd2l0Y2ggKG9wY29kZUlEKSB7
CiAgICAgY2FzZSBvcF9qbXA6CkBAIC01NCwyMSArNTUsMjUgQEAgc3RhdGljIHZvaWQgZ2V0SnVt
cFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgSW50ZXJwcmV0
ZXIqIGkKICAgICBjYXNlIG9wX2pubGVzc2VxOgogICAgIGNhc2Ugb3Bfam5ncmVhdGVyOgogICAg
IGNhc2Ugb3Bfam5ncmVhdGVyZXE6Ci0gICAgY2FzZSBvcF9zYXZlOiAvLyBUaGUganVtcCBvZiBv
cF9zYXZlIGlzIHB1cmVseSBmb3IgY2FsY3VsYXRpbmcgbGl2ZW5lc3MuCiAgICAgICAgIG91dC5h
cHBlbmQoYnl0ZWNvZGVPZmZzZXQgKyBjdXJyZW50WzNdLnUub3BlcmFuZCk7CiAgICAgICAgIGJy
ZWFrOworICAgIGNhc2Ugb3Bfc2F2ZTogeworICAgICAgICAvLyBUaGUganVtcCBvZiBvcF9zYXZl
IHVuZGVyIEV4dHJhY3RHZW5lcmF0b3JMaXZlQ2FsbGVlTG9jYWxzIG1vZGUgaXMgcHVyZWx5IGZv
ciBjYWxjdWxhdGluZyBsaXZlbmVzcy4KKyAgICAgICAgb3V0LmFwcGVuZChieXRlY29kZU9mZnNl
dCArIGN1cnJlbnRbM10udS5vcGVyYW5kKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogICAgIGNh
c2Ugb3Bfc3dpdGNoX2ltbToKICAgICBjYXNlIG9wX3N3aXRjaF9jaGFyOiB7Ci0gICAgICAgIFNp
bXBsZUp1bXBUYWJsZSYgdGFibGUgPSBjb2RlQmxvY2stPnN3aXRjaEp1bXBUYWJsZShjdXJyZW50
WzFdLnUub3BlcmFuZCk7CisgICAgICAgIGF1dG8mIHRhYmxlID0gY29kZUJsb2NrLT5zd2l0Y2hK
dW1wVGFibGUoY3VycmVudFsxXS51Lm9wZXJhbmQpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSB0YWJsZS5icmFuY2hPZmZzZXRzLnNpemUoKTsgaS0tOykKICAgICAgICAgICAgIG91dC5hcHBl
bmQoYnl0ZWNvZGVPZmZzZXQgKyB0YWJsZS5icmFuY2hPZmZzZXRzW2ldKTsKICAgICAgICAgb3V0
LmFwcGVuZChieXRlY29kZU9mZnNldCArIGN1cnJlbnRbMl0udS5vcGVyYW5kKTsKICAgICAgICAg
YnJlYWs7CiAgICAgfQogICAgIGNhc2Ugb3Bfc3dpdGNoX3N0cmluZzogewotICAgICAgICBTdHJp
bmdKdW1wVGFibGUmIHRhYmxlID0gY29kZUJsb2NrLT5zdHJpbmdTd2l0Y2hKdW1wVGFibGUoY3Vy
cmVudFsxXS51Lm9wZXJhbmQpOwotICAgICAgICBTdHJpbmdKdW1wVGFibGU6OlN0cmluZ09mZnNl
dFRhYmxlOjppdGVyYXRvciBpdGVyID0gdGFibGUub2Zmc2V0VGFibGUuYmVnaW4oKTsKLSAgICAg
ICAgU3RyaW5nSnVtcFRhYmxlOjpTdHJpbmdPZmZzZXRUYWJsZTo6aXRlcmF0b3IgZW5kID0gdGFi
bGUub2Zmc2V0VGFibGUuZW5kKCk7CisgICAgICAgIGF1dG8mIHRhYmxlID0gY29kZUJsb2NrLT5z
dHJpbmdTd2l0Y2hKdW1wVGFibGUoY3VycmVudFsxXS51Lm9wZXJhbmQpOworICAgICAgICBhdXRv
IGl0ZXIgPSB0YWJsZS5vZmZzZXRUYWJsZS5iZWdpbigpOworICAgICAgICBhdXRvIGVuZCA9IHRh
YmxlLm9mZnNldFRhYmxlLmVuZCgpOwogICAgICAgICBmb3IgKDsgaXRlciAhPSBlbmQ7ICsraXRl
cikKICAgICAgICAgICAgIG91dC5hcHBlbmQoYnl0ZWNvZGVPZmZzZXQgKyBpdGVyLT52YWx1ZS5i
cmFuY2hPZmZzZXQpOwogICAgICAgICBvdXQuYXBwZW5kKGJ5dGVjb2RlT2Zmc2V0ICsgY3VycmVu
dFsyXS51Lm9wZXJhbmQpOwpAQCAtODIsMTMgKzg3LDE5IEBAIHN0YXRpYyB2b2lkIGdldEp1bXBU
YXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEludGVycHJldGVy
KiBpCiAgICAgfQogfQogCi12b2lkIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMoQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIFZlY3Rvcjx1bnNpZ25lZCwgMzI+JiBvdXQpCitlbnVtIGNsYXNzIENvbXB1
dGVQcmVjaXNlSnVtcFRhcmdldHNNb2RlIHsKKyAgICBGb2xsb3dDb2RlQmxvY2tDbGFpbSwKKyAg
ICBGb3JjZUNvbXB1dGUsCit9OworCit0ZW1wbGF0ZTxDb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRz
TW9kZSBNb2RlLCB0eXBlbmFtZSBCbG9jaywgdHlwZW5hbWUgSW5zdHJ1Y3Rpb24sIHNpemVfdCB2
ZWN0b3JTaXplPgordm9pZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzSW50ZXJuYWwoQmxvY2sq
IGNvZGVCbG9jaywgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBpbnN0
cnVjdGlvbkNvdW50LCBWZWN0b3I8dW5zaWduZWQsIHZlY3RvclNpemU+JiBvdXQpCiB7CiAgICAg
QVNTRVJUKG91dC5pc0VtcHR5KCkpOwogICAgIAogICAgIC8vIFdlIHdpbGwgZGVyaXZlIGEgc3Vw
ZXJzZXQgb2YgdGhlIGp1bXAgdGFyZ2V0cyB0aGF0IHRoZSBjb2RlIGJsb2NrIHRoaW5rcyBpdCBo
YXMuCiAgICAgLy8gU28sIGlmIHRoZSBjb2RlIGJsb2NrIGNsYWltcyB0aGVyZSBhcmUgbm9uZSwg
dGhlbiB3ZSBhcmUgZG9uZS4KLSAgICBpZiAoIWNvZGVCbG9jay0+bnVtYmVyT2ZKdW1wVGFyZ2V0
cygpKQorICAgIGlmIChNb2RlID09IENvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHNNb2RlOjpGb2xs
b3dDb2RlQmxvY2tDbGFpbSAmJiAhY29kZUJsb2NrLT5udW1iZXJPZkp1bXBUYXJnZXRzKCkpCiAg
ICAgICAgIHJldHVybjsKICAgICAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSBjb2RlQmxvY2stPm51
bWJlck9mRXhjZXB0aW9uSGFuZGxlcnMoKTsgaS0tOykgewpAQCAtOTgsMTAgKzEwOSw4IEBAIHZv
aWQgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgVmVjdG9y
PHVuc2lnbmVkLCAzMj4mIG91dCkKICAgICB9CiAKICAgICBJbnRlcnByZXRlciogaW50ZXJwcmV0
ZXIgPSBjb2RlQmxvY2stPnZtKCktPmludGVycHJldGVyOwotICAgIEluc3RydWN0aW9uKiBpbnN0
cnVjdGlvbnNCZWdpbiA9IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsKLSAgICB1
bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50ID0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5zaXpl
KCk7CiAgICAgZm9yICh1bnNpZ25lZCBieXRlY29kZU9mZnNldCA9IDA7IGJ5dGVjb2RlT2Zmc2V0
IDwgaW5zdHJ1Y3Rpb25Db3VudDspIHsKLSAgICAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnRl
cnByZXRlci0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25zQmVnaW5bYnl0ZWNvZGVPZmZzZXRdLnUu
b3Bjb2RlKTsKKyAgICAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnRlcnByZXRlci0+Z2V0T3Bj
b2RlSUQoaW5zdHJ1Y3Rpb25zQmVnaW5bYnl0ZWNvZGVPZmZzZXRdKTsKICAgICAgICAgZ2V0SnVt
cFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChjb2RlQmxvY2ssIGludGVycHJldGVyLCBpbnN0cnVj
dGlvbnNCZWdpbiwgYnl0ZWNvZGVPZmZzZXQsIG91dCk7CiAgICAgICAgIGJ5dGVjb2RlT2Zmc2V0
ICs9IG9wY29kZUxlbmd0aHNbb3Bjb2RlSURdOwogICAgIH0KQEAgLTEyMywxMSArMTMyLDM0IEBA
IHZvaWQgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgVmVj
dG9yPHVuc2lnbmVkLCAzMj4mIG91dCkKICAgICBvdXQuc2hyaW5rVG9GaXQoKTsKIH0KIAotdm9p
ZCBmaW5kSnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywg
dW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIFZlY3Rvcjx1bnNpZ25lZCwgMT4mIG91dCkKK3ZvaWQg
Y29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgVmVjdG9yPHVu
c2lnbmVkLCAzMj4mIG91dCkKIHsKLSAgICBJbnRlcnByZXRlciogaW50ZXJwcmV0ZXIgPSBjb2Rl
QmxvY2stPnZtKCktPmludGVycHJldGVyOwotICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNC
ZWdpbiA9IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsKLSAgICBnZXRKdW1wVGFy
Z2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9jaywgaW50ZXJwcmV0ZXIsIGluc3RydWN0aW9u
c0JlZ2luLCBieXRlY29kZU9mZnNldCwgb3V0KTsKKyAgICBjb21wdXRlUHJlY2lzZUp1bXBUYXJn
ZXRzSW50ZXJuYWw8Q29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0c01vZGU6OkZvbGxvd0NvZGVCbG9j
a0NsYWltPihjb2RlQmxvY2ssIGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSwgY29k
ZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5zaXplKCksIG91dCk7Cit9CisKK3ZvaWQgY29tcHV0ZVBy
ZWNpc2VKdW1wVGFyZ2V0cyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgSW5zdHJ1Y3Rpb24qIGluc3Ry
dWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50LCBWZWN0b3I8dW5zaWduZWQs
IDMyPiYgb3V0KQoreworICAgIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHNJbnRlcm5hbDxDb21w
dXRlUHJlY2lzZUp1bXBUYXJnZXRzTW9kZTo6Rm9sbG93Q29kZUJsb2NrQ2xhaW0+KGNvZGVCbG9j
aywgaW5zdHJ1Y3Rpb25zQmVnaW4sIGluc3RydWN0aW9uQ291bnQsIG91dCk7Cit9CisKK3ZvaWQg
Y29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhVbmxpbmtlZENvZGVCbG9jayogY29kZUJsb2NrLCBV
bmxpbmtlZEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgaW5zdHJ1Y3Rp
b25Db3VudCwgVmVjdG9yPHVuc2lnbmVkLCAzMj4mIG91dCkKK3sKKyAgICBjb21wdXRlUHJlY2lz
ZUp1bXBUYXJnZXRzSW50ZXJuYWw8Q29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0c01vZGU6OkZvbGxv
d0NvZGVCbG9ja0NsYWltPihjb2RlQmxvY2ssIGluc3RydWN0aW9uc0JlZ2luLCBpbnN0cnVjdGlv
bkNvdW50LCBvdXQpOworfQorCit2b2lkIHJlY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhVbmxp
bmtlZENvZGVCbG9jayogY29kZUJsb2NrLCBVbmxpbmtlZEluc3RydWN0aW9uKiBpbnN0cnVjdGlv
bnNCZWdpbiwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCwgVmVjdG9yPHVuc2lnbmVkPiYgb3V0
KQoreworICAgIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHNJbnRlcm5hbDxDb21wdXRlUHJlY2lz
ZUp1bXBUYXJnZXRzTW9kZTo6Rm9yY2VDb21wdXRlPihjb2RlQmxvY2ssIGluc3RydWN0aW9uc0Jl
Z2luLCBpbnN0cnVjdGlvbkNvdW50LCBvdXQpOworfQorCit2b2lkIGZpbmRKdW1wVGFyZ2V0c0Zv
ckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBJbnN0cnVjdGlvbiogaW5zdHJ1
Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBWZWN0b3I8dW5zaWduZWQsIDE+
JiBvdXQpCit7CisgICAgZ2V0SnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChjb2RlQmxvY2ss
IGNvZGVCbG9jay0+dm0oKS0+aW50ZXJwcmV0ZXIsIGluc3RydWN0aW9uc0JlZ2luLCBieXRlY29k
ZU9mZnNldCwgb3V0KTsKK30KKwordm9pZCBmaW5kSnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNl
dChVbmxpbmtlZENvZGVCbG9jayogY29kZUJsb2NrLCBVbmxpbmtlZEluc3RydWN0aW9uKiBpbnN0
cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIFZlY3Rvcjx1bnNpZ25lZCwg
MT4mIG91dCkKK3sKKyAgICBnZXRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9j
aywgY29kZUJsb2NrLT52bSgpLT5pbnRlcnByZXRlciwgaW5zdHJ1Y3Rpb25zQmVnaW4sIGJ5dGVj
b2RlT2Zmc2V0LCBvdXQpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHMuaAppbmRleCA4NTI0
MTNkNzdiNzk4OTg0YjI3Y2VmMGVkNjJiYzk0YzY4OWUyMTJjLi5kYjliZDM4M2I4YWM0NTU3ZDMy
NjcxN2I3MmQ0YjBmNTBiMWQxODM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5oCkBAIC0zMCwxMCArMzAsMTggQEAKIAogbmFt
ZXNwYWNlIEpTQyB7CiAKK2NsYXNzIFVubGlua2VkQ29kZUJsb2NrOworc3RydWN0IFVubGlua2Vk
SW5zdHJ1Y3Rpb247CisKIC8vIFJldHVybiBhIHNvcnRlZCBsaXN0IG9mIGJ5dGVjb2RlIGluZGV4
IHRoYXQgYXJlIHRoZSBkZXN0aW5hdGlvbiBvZiBhIGp1bXAuCiB2b2lkIGNvbXB1dGVQcmVjaXNl
SnVtcFRhcmdldHMoQ29kZUJsb2NrKiwgVmVjdG9yPHVuc2lnbmVkLCAzMj4mIG91dCk7Cit2b2lk
IGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMoQ29kZUJsb2NrKiwgSW5zdHJ1Y3Rpb24qIGluc3Ry
dWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50LCBWZWN0b3I8dW5zaWduZWQs
IDMyPiYgb3V0KTsKK3ZvaWQgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhVbmxpbmtlZENvZGVC
bG9jayosIFVubGlua2VkSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBp
bnN0cnVjdGlvbkNvdW50LCBWZWN0b3I8dW5zaWduZWQsIDMyPiYgb3V0KTsKKwordm9pZCByZWNv
bXB1dGVQcmVjaXNlSnVtcFRhcmdldHMoVW5saW5rZWRDb2RlQmxvY2sqLCBVbmxpbmtlZEluc3Ry
dWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCwgVmVj
dG9yPHVuc2lnbmVkPiYgb3V0KTsKIAotdm9pZCBmaW5kSnVtcFRhcmdldHNGb3JCeXRlY29kZU9m
ZnNldChDb2RlQmxvY2sqLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgVmVjdG9yPHVuc2lnbmVk
LCAxPiYgb3V0KTsKK3ZvaWQgZmluZEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJs
b2NrKiwgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBieXRlY29kZU9m
ZnNldCwgVmVjdG9yPHVuc2lnbmVkLCAxPiYgb3V0KTsKK3ZvaWQgZmluZEp1bXBUYXJnZXRzRm9y
Qnl0ZWNvZGVPZmZzZXQoVW5saW5rZWRDb2RlQmxvY2sqLCBVbmxpbmtlZEluc3RydWN0aW9uKiBp
bnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIFZlY3Rvcjx1bnNpZ25l
ZCwgMT4mIG91dCk7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcAppbmRleCAyOTlhYzY4
MGQ5YTFkMWU1YTkwZDlmYWUxYTIyZjg0NGUyOTJlM2UyLi5mN2I1YWUwYjZiNDcyMTcwZDI4OTQ2
NDE2NzY2MThjNTdjNDllYzJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRl
ICJVbmxpbmtlZENvZGVCbG9jay5oIgogCiAjaW5jbHVkZSAiQnl0ZWNvZGVHZW5lcmF0b3IuaCIK
KyNpbmNsdWRlICJCeXRlY29kZU1vZGlmaWNhdGlvblNldC5oIgogI2luY2x1ZGUgIkNsYXNzSW5m
by5oIgogI2luY2x1ZGUgIkNvZGVDYWNoZS5oIgogI2luY2x1ZGUgIkV4ZWN1dGFibGUuaCIKQEAg
LTM2LDYgKzM3LDcgQEAKICNpbmNsdWRlICJKU1N0cmluZy5oIgogI2luY2x1ZGUgIkpTQ0lubGlu
ZXMuaCIKICNpbmNsdWRlICJQYXJzZXIuaCIKKyNpbmNsdWRlICJQcmVjaXNlSnVtcFRhcmdldHMu
aCIKICNpbmNsdWRlICJTb3VyY2VQcm92aWRlci5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZS5oIgog
I2luY2x1ZGUgIlN5bWJvbFRhYmxlLmgiCkBAIC0zNjYsNSArMzY4LDExMSBAQCBjb25zdCBVbmxp
bmtlZEluc3RydWN0aW9uU3RyZWFtJiBVbmxpbmtlZENvZGVCbG9jazo6aW5zdHJ1Y3Rpb25zKCkg
Y29uc3QKICAgICByZXR1cm4gKm1fdW5saW5rZWRJbnN0cnVjdGlvbnM7CiB9CiAKK1VubGlua2Vk
SGFuZGxlckluZm8qIFVubGlua2VkQ29kZUJsb2NrOjpoYW5kbGVyRm9yQnl0ZWNvZGVPZmZzZXQo
dW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIFJlcXVpcmVkSGFuZGxlciByZXF1aXJlZEhhbmRsZXIp
Cit7CisgICAgcmV0dXJuIGhhbmRsZXJGb3JJbmRleChieXRlY29kZU9mZnNldCwgcmVxdWlyZWRI
YW5kbGVyKTsKK30KKworVW5saW5rZWRIYW5kbGVySW5mbyogVW5saW5rZWRDb2RlQmxvY2s6Omhh
bmRsZXJGb3JJbmRleCh1bnNpZ25lZCBpbmRleCwgUmVxdWlyZWRIYW5kbGVyIHJlcXVpcmVkSGFu
ZGxlcikKK3sKKyAgICBpZiAoIW1fcmFyZURhdGEpCisgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgIHJldHVybiBVbmxpbmtlZEhhbmRsZXJJbmZvOjpoYW5kbGVyRm9ySW5kZXgobV9yYXJlRGF0
YS0+bV9leGNlcHRpb25IYW5kbGVycywgaW5kZXgsIHJlcXVpcmVkSGFuZGxlcik7Cit9CisKK3Zv
aWQgVW5saW5rZWRDb2RlQmxvY2s6OmFwcGx5TW9kaWZpY2F0aW9uKEJ5dGVjb2RlTW9kaWZpY2F0
aW9uU2V0JiBpbnNlcnRpb25TZXQpCit7CisgICAgLy8gQmVmb3JlIGFwcGx5aW5nIHRoZSBjaGFu
Z2VzLCB3ZSBhZGp1c3QgdGhlIGp1bXBzIGJhc2VkIG9uIHRoZSBvcmlnaW5hbCBieXRlY29kZSBv
ZmZzZXQsIHRoZSBvZmZzZXQgdG8gdGhlIGp1bXAgdGFyZ2V0LCBhbmQKKyAgICAvLyB0aGUgaW5z
ZXJ0aW9uIGluZm9ybWF0aW9uLgorCisgICAgQnl0ZWNvZGVHcmFwaDxVbmxpbmtlZENvZGVCbG9j
az4mIGdyYXBoID0gaW5zZXJ0aW9uU2V0LmdyYXBoKCk7CisgICAgVW5saW5rZWRJbnN0cnVjdGlv
biogaW5zdHJ1Y3Rpb25zQmVnaW4gPSBncmFwaC5pbnN0cnVjdGlvbnMoKS5iZWdpbigpOworICAg
IGZvciAoaW50IGJ5dGVjb2RlT2Zmc2V0ID0gMCwgaW5zdHJ1Y3Rpb25Db3VudCA9IGdyYXBoLmlu
c3RydWN0aW9ucygpLnNpemUoKTsgYnl0ZWNvZGVPZmZzZXQgPCBpbnN0cnVjdGlvbkNvdW50Oykg
eworICAgICAgICBVbmxpbmtlZEluc3RydWN0aW9uKiBjdXJyZW50ID0gaW5zdHJ1Y3Rpb25zQmVn
aW4gKyBieXRlY29kZU9mZnNldDsKKyAgICAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBjdXJyZW50
WzBdLnUub3Bjb2RlOworCisgICAgICAgIHN3aXRjaCAob3Bjb2RlSUQpIHsKKyAgICAgICAgY2Fz
ZSBvcF9qbXA6CisgICAgICAgICAgICBjdXJyZW50WzFdLnUub3BlcmFuZCA9IGluc2VydGlvblNl
dC5hZGp1c3RPZmZzZXQoYnl0ZWNvZGVPZmZzZXQsIGJ5dGVjb2RlT2Zmc2V0ICsgY3VycmVudFsx
XS51Lm9wZXJhbmQpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBvcF9qdHJ1
ZToKKyAgICAgICAgY2FzZSBvcF9qZmFsc2U6CisgICAgICAgIGNhc2Ugb3BfamVxX251bGw6Cisg
ICAgICAgIGNhc2Ugb3Bfam5lcV9udWxsOgorICAgICAgICAgICAgY3VycmVudFsyXS51Lm9wZXJh
bmQgPSBpbnNlcnRpb25TZXQuYWRqdXN0T2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0LCBieXRlY29kZU9m
ZnNldCArIGN1cnJlbnRbMl0udS5vcGVyYW5kKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAg
ICAgIGNhc2Ugb3Bfam5lcV9wdHI6CisgICAgICAgIGNhc2Ugb3Bfamxlc3M6CisgICAgICAgIGNh
c2Ugb3Bfamxlc3NlcToKKyAgICAgICAgY2FzZSBvcF9qZ3JlYXRlcjoKKyAgICAgICAgY2FzZSBv
cF9qZ3JlYXRlcmVxOgorICAgICAgICBjYXNlIG9wX2pubGVzczoKKyAgICAgICAgY2FzZSBvcF9q
bmxlc3NlcToKKyAgICAgICAgY2FzZSBvcF9qbmdyZWF0ZXI6CisgICAgICAgIGNhc2Ugb3Bfam5n
cmVhdGVyZXE6CisgICAgICAgICAgICBjdXJyZW50WzNdLnUub3BlcmFuZCA9IGluc2VydGlvblNl
dC5hZGp1c3RPZmZzZXQoYnl0ZWNvZGVPZmZzZXQsIGJ5dGVjb2RlT2Zmc2V0ICsgY3VycmVudFsz
XS51Lm9wZXJhbmQpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBvcF9zd2l0
Y2hfaW1tOgorICAgICAgICBjYXNlIG9wX3N3aXRjaF9jaGFyOiB7CisgICAgICAgICAgICBhdXRv
JiB0YWJsZSA9IHN3aXRjaEp1bXBUYWJsZShjdXJyZW50WzFdLnUub3BlcmFuZCk7CisgICAgICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSB0YWJsZS5icmFuY2hPZmZzZXRzLnNpemUoKTsgaS0tOykK
KyAgICAgICAgICAgICAgICB0YWJsZS5icmFuY2hPZmZzZXRzW2ldID0gaW5zZXJ0aW9uU2V0LmFk
anVzdE9mZnNldChieXRlY29kZU9mZnNldCwgYnl0ZWNvZGVPZmZzZXQgKyB0YWJsZS5icmFuY2hP
ZmZzZXRzW2ldKTsKKyAgICAgICAgICAgIGN1cnJlbnRbMl0udS5vcGVyYW5kID0gaW5zZXJ0aW9u
U2V0LmFkanVzdE9mZnNldChieXRlY29kZU9mZnNldCwgYnl0ZWNvZGVPZmZzZXQgKyBjdXJyZW50
WzJdLnUub3BlcmFuZCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAg
IGNhc2Ugb3Bfc3dpdGNoX3N0cmluZzogeworICAgICAgICAgICAgYXV0byYgdGFibGUgPSBzdHJp
bmdTd2l0Y2hKdW1wVGFibGUoY3VycmVudFsxXS51Lm9wZXJhbmQpOworICAgICAgICAgICAgYXV0
byBpdGVyID0gdGFibGUub2Zmc2V0VGFibGUuYmVnaW4oKTsKKyAgICAgICAgICAgIGF1dG8gZW5k
ID0gdGFibGUub2Zmc2V0VGFibGUuZW5kKCk7CisgICAgICAgICAgICBmb3IgKDsgaXRlciAhPSBl
bmQ7ICsraXRlcikKKyAgICAgICAgICAgICAgICBpdGVyLT52YWx1ZS5icmFuY2hPZmZzZXQgPSBp
bnNlcnRpb25TZXQuYWRqdXN0T2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0LCBieXRlY29kZU9mZnNldCAr
IGl0ZXItPnZhbHVlLmJyYW5jaE9mZnNldCk7CisgICAgICAgICAgICBjdXJyZW50WzJdLnUub3Bl
cmFuZCA9IGluc2VydGlvblNldC5hZGp1c3RPZmZzZXQoYnl0ZWNvZGVPZmZzZXQsIGJ5dGVjb2Rl
T2Zmc2V0ICsgY3VycmVudFsyXS51Lm9wZXJhbmQpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0KKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0K
KworICAgICAgICBieXRlY29kZU9mZnNldCArPSBvcGNvZGVMZW5ndGgob3Bjb2RlSUQpOworICAg
IH0KKworICAgIC8vIFRoZW4sIGV4Y2VwdGlvbiBoYW5kbGVycyBzaG91bGQgYmUgYWRqdXN0ZWQu
CisgICAgaWYgKG1fcmFyZURhdGEpIHsKKyAgICAgICAgZm9yIChVbmxpbmtlZEhhbmRsZXJJbmZv
JiBoYW5kbGVyIDogbV9yYXJlRGF0YS0+bV9leGNlcHRpb25IYW5kbGVycykgeworICAgICAgICAg
ICAgaGFuZGxlci50YXJnZXQgPSBpbnNlcnRpb25TZXQuYWRqdXN0T2Zmc2V0KDAsIGhhbmRsZXIu
dGFyZ2V0KTsKKyAgICAgICAgICAgIGhhbmRsZXIuc3RhcnQgPSBpbnNlcnRpb25TZXQuYWRqdXN0
T2Zmc2V0KDAsIGhhbmRsZXIuc3RhcnQpOworICAgICAgICAgICAgaGFuZGxlci5lbmQgPSBpbnNl
cnRpb25TZXQuYWRqdXN0T2Zmc2V0KDAsIGhhbmRsZXIuZW5kKTsKKyAgICAgICAgfQorCisgICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9yYXJlRGF0YS0+bV9vcFByb2ZpbGVDb250cm9s
Rmxvd0J5dGVjb2RlT2Zmc2V0cy5zaXplKCk7ICsraSkKKyAgICAgICAgICAgIG1fcmFyZURhdGEt
Pm1fb3BQcm9maWxlQ29udHJvbEZsb3dCeXRlY29kZU9mZnNldHNbaV0gPSBpbnNlcnRpb25TZXQu
YWRqdXN0T2Zmc2V0KDAsIG1fcmFyZURhdGEtPm1fb3BQcm9maWxlQ29udHJvbEZsb3dCeXRlY29k
ZU9mZnNldHNbaV0pOworCisgICAgICAgIGlmICghbV9yYXJlRGF0YS0+bV90eXBlUHJvZmlsZXJJ
bmZvTWFwLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgSGFzaE1hcDx1bnNpZ25lZCwgUmFyZURh
dGE6OlR5cGVQcm9maWxlckV4cHJlc3Npb25SYW5nZT4gYWRqdXN0ZWRUeXBlUHJvZmlsZXJJbmZv
TWFwOworICAgICAgICAgICAgZm9yIChhdXRvJiBlbnRyeSA6IG1fcmFyZURhdGEtPm1fdHlwZVBy
b2ZpbGVySW5mb01hcCkKKyAgICAgICAgICAgICAgICBhZGp1c3RlZFR5cGVQcm9maWxlckluZm9N
YXAuc2V0KGluc2VydGlvblNldC5hZGp1c3RPZmZzZXQoMCwgZW50cnkua2V5KSwgZW50cnkudmFs
dWUpOworICAgICAgICAgICAgbV9yYXJlRGF0YS0+bV90eXBlUHJvZmlsZXJJbmZvTWFwLnN3YXAo
YWRqdXN0ZWRUeXBlUHJvZmlsZXJJbmZvTWFwKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9ucy5zaXplKCk7
ICsraSkKKyAgICAgICAgbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uc1tpXSA9IGluc2VydGlv
blNldC5hZGp1c3RPZmZzZXQoMCwgbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uc1tpXSk7CisK
KyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZXhwcmVzc2lvbkluZm8uc2l6ZSgpOyArK2kp
CisgICAgICAgIG1fZXhwcmVzc2lvbkluZm9baV0uaW5zdHJ1Y3Rpb25PZmZzZXQgPSBpbnNlcnRp
b25TZXQuYWRqdXN0T2Zmc2V0KDAsIG1fZXhwcmVzc2lvbkluZm9baV0uaW5zdHJ1Y3Rpb25PZmZz
ZXQpOworCisgICAgLy8gVGhlbiwgbW9kaWZ5IHRoZSB1bmxpbmtlZCBpbnN0cnVjdGlvbnMuCisg
ICAgaW5zZXJ0aW9uU2V0LmFwcGx5TW9kaWZpY2F0aW9uKCk7CisKKyAgICAvLyBBbmQgcmVjb21w
dXRlIHRoZSBqdW1wIHRhcmdldCBiYXNlZCBvbiB0aGUgbW9kaWZpZWQgdW5saW5rZWQgaW5zdHJ1
Y3Rpb25zLgorICAgIG1fanVtcFRhcmdldHMuY2xlYXIoKTsKKyAgICByZWNvbXB1dGVQcmVjaXNl
SnVtcFRhcmdldHModGhpcywgZ3JhcGguaW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSwgZ3JhcGguaW5z
dHJ1Y3Rpb25zKCkuc2l6ZSgpLCBtX2p1bXBUYXJnZXRzKTsKK30KKwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCmluZGV4IDkx
ZmRjYTQ4YzFlMzllOGJlZmIwYzVmZDU1ZmQ5YmQ5MWMxZjM3MDcuLjg4Y2YwYzhmMDllNDQwMzM0
MTdlMDRiYWEzMmRjNTAyZGUxODAyMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCkBAIC00OCw2ICs0OCw3IEBACiAKIG5hbWVz
cGFjZSBKU0MgewogCitjbGFzcyBCeXRlY29kZU1vZGlmaWNhdGlvblNldDsKIGNsYXNzIERlYnVn
Z2VyOwogY2xhc3MgRnVuY3Rpb25NZXRhZGF0YU5vZGU7CiBjbGFzcyBGdW5jdGlvbkV4ZWN1dGFi
bGU7CkBAIC02OSw3ICs3MCwxMSBAQCB0eXBlZGVmIHVuc2lnbmVkIFVubGlua2VkT2JqZWN0QWxs
b2NhdGlvblByb2ZpbGU7CiB0eXBlZGVmIHVuc2lnbmVkIFVubGlua2VkTExJbnRDYWxsTGlua0lu
Zm87CiAKIHN0cnVjdCBVbmxpbmtlZFN0cmluZ0p1bXBUYWJsZSB7Ci0gICAgdHlwZWRlZiBIYXNo
TWFwPFJlZlB0cjxTdHJpbmdJbXBsPiwgaW50MzJfdD4gU3RyaW5nT2Zmc2V0VGFibGU7CisgICAg
c3RydWN0IE9mZnNldExvY2F0aW9uIHsKKyAgICAgICAgaW50MzJfdCBicmFuY2hPZmZzZXQ7Cisg
ICAgfTsKKworICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8U3RyaW5nSW1wbD4sIE9mZnNldExv
Y2F0aW9uPiBTdHJpbmdPZmZzZXRUYWJsZTsKICAgICBTdHJpbmdPZmZzZXRUYWJsZSBvZmZzZXRU
YWJsZTsKIAogICAgIGlubGluZSBpbnQzMl90IG9mZnNldEZvclZhbHVlKFN0cmluZ0ltcGwqIHZh
bHVlLCBpbnQzMl90IGRlZmF1bHRPZmZzZXQpCkBAIC03OCw3ICs4Myw3IEBAIHN0cnVjdCBVbmxp
bmtlZFN0cmluZ0p1bXBUYWJsZSB7CiAgICAgICAgIFN0cmluZ09mZnNldFRhYmxlOjpjb25zdF9p
dGVyYXRvciBsb2MgPSBvZmZzZXRUYWJsZS5maW5kKHZhbHVlKTsKICAgICAgICAgaWYgKGxvYyA9
PSBlbmQpCiAgICAgICAgICAgICByZXR1cm4gZGVmYXVsdE9mZnNldDsKLSAgICAgICAgcmV0dXJu
IGxvYy0+dmFsdWU7CisgICAgICAgIHJldHVybiBsb2MtPnZhbHVlLmJyYW5jaE9mZnNldDsKICAg
ICB9CiAKIH07CkBAIC0xMDYsNiArMTExLDggQEAgc3RydWN0IFVubGlua2VkSW5zdHJ1Y3Rpb24g
ewogICAgIH0gdTsKIH07CiAKK2NsYXNzIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uOworCiBj
bGFzcyBVbmxpbmtlZENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogcHVibGljOgogICAgIHR5
cGVkZWYgSlNDZWxsIEJhc2U7CkBAIC0xMTUsNiArMTIyLDggQEAgY2xhc3MgVW5saW5rZWRDb2Rl
QmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKIAogICAgIGVudW0geyBDYWxsRnVuY3Rpb24sIEFwcGx5
RnVuY3Rpb24gfTsKIAorICAgIHR5cGVkZWYgVmVjdG9yPFVubGlua2VkSW5zdHJ1Y3Rpb24sIDAs
IFVuc2FmZVZlY3Rvck92ZXJmbG93PiBVbnBhY2tlZEluc3RydWN0aW9uczsKKwogICAgIGJvb2wg
aXNDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1faXNDb25zdHJ1Y3RvcjsgfQogICAgIGJv
b2wgaXNTdHJpY3RNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9pc1N0cmljdE1vZGU7IH0KICAgICBi
b29sIHVzZXNFdmFsKCkgY29uc3QgeyByZXR1cm4gbV91c2VzRXZhbDsgfQpAQCAtMjA0LDYgKzIx
Myw5IEBAIGNsYXNzIFVubGlua2VkQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgdW5z
aWduZWQganVtcFRhcmdldChpbnQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIG1fanVtcFRhcmdldHNb
aW5kZXhdOyB9CiAgICAgdW5zaWduZWQgbGFzdEp1bXBUYXJnZXQoKSBjb25zdCB7IHJldHVybiBt
X2p1bXBUYXJnZXRzLmxhc3QoKTsgfQogCisgICAgVW5saW5rZWRIYW5kbGVySW5mbyogaGFuZGxl
ckZvckJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBSZXF1aXJlZEhhbmRs
ZXIgPSBSZXF1aXJlZEhhbmRsZXI6OkFueUhhbmRsZXIpOworICAgIFVubGlua2VkSGFuZGxlcklu
Zm8qIGhhbmRsZXJGb3JJbmRleCh1bnNpZ25lZCwgUmVxdWlyZWRIYW5kbGVyID0gUmVxdWlyZWRI
YW5kbGVyOjpBbnlIYW5kbGVyKTsKKwogICAgIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24oKSBjb25z
dCB7IHJldHVybiBtX2lzQnVpbHRpbkZ1bmN0aW9uOyB9CiAKICAgICBDb25zdHJ1Y3RvcktpbmQg
Y29uc3RydWN0b3JLaW5kKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Q29uc3RydWN0b3JL
aW5kPihtX2NvbnN0cnVjdG9yS2luZCk7IH0KQEAgLTM4NCw2ICszOTYsOCBAQCBjbGFzcyBVbmxp
bmtlZENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgIH0KIAogcHJpdmF0ZToKKyAgICBm
cmllbmQgY2xhc3MgQnl0ZWNvZGVNb2RpZmljYXRpb25TZXQ7CisgICAgdm9pZCBhcHBseU1vZGlm
aWNhdGlvbihCeXRlY29kZU1vZGlmaWNhdGlvblNldCYpOwogCiAgICAgdm9pZCBjcmVhdGVSYXJl
RGF0YUlmTmVjZXNzYXJ5KCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvVmlydHVhbFJlZ2lzdGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvVmlydHVhbFJlZ2lzdGVyLmgKaW5kZXggZDNkZjQwOTU3YjUxNzU2OGUzYWVmYmUzYTFh
NjA5ZmQ4NzhiYWFjMy4uZGFmNTA5ZjZjN2QxMTVlNDViY2IxMDdjNjdkM2QzOGQ4MDRmMjg5NCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZpcnR1YWxSZWdpc3Rl
ci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WaXJ0dWFsUmVnaXN0ZXIu
aApAQCAtMjYsOCArMjYsOCBAQAogI2lmbmRlZiBWaXJ0dWFsUmVnaXN0ZXJfaAogI2RlZmluZSBW
aXJ0dWFsUmVnaXN0ZXJfaAogCisjaW5jbHVkZSAiQnl0ZWNvZGVDb252ZW50aW9ucy5oIgogI2lu
Y2x1ZGUgIkNhbGxGcmFtZS5oIgotCiAjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CiAKIG5h
bWVzcGFjZSBKU0MgewpAQCAtMTAzLDcgKzEwMyw3IEBAIGNsYXNzIFZpcnR1YWxSZWdpc3RlciB7
CiAKIHByaXZhdGU6CiAgICAgc3RhdGljIGNvbnN0IGludCBzX2ludmFsaWRWaXJ0dWFsUmVnaXN0
ZXIgPSAweDNmZmZmZmZmOwotICAgIHN0YXRpYyBjb25zdCBpbnQgc19maXJzdENvbnN0YW50UmVn
aXN0ZXJJbmRleCA9IDB4NDAwMDAwMDA7CisgICAgc3RhdGljIGNvbnN0IGludCBzX2ZpcnN0Q29u
c3RhbnRSZWdpc3RlckluZGV4ID0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXg7CiAKICAgICBz
dGF0aWMgaW50IGxvY2FsVG9PcGVyYW5kKGludCBsb2NhbCkgeyByZXR1cm4gLTEgLSBsb2NhbDsg
fQogICAgIHN0YXRpYyBpbnQgb3BlcmFuZFRvTG9jYWwoaW50IG9wZXJhbmQpIHsgcmV0dXJuIC0x
IC0gb3BlcmFuZDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCA3NDFhYTNlYTE3MzExOTI3MmE3NjJm
ZDhhNzQzZjlkNjQ5ZmUxZDgxLi4zNTU5NTljNGZjMjNjMTg1NGVhY2FjM2E1OTczNTQzZTBiYWE4
NmM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkJ5dGVj
b2RlR2VuZXJhdG9yLmgiCiAKICNpbmNsdWRlICJCdWlsdGluRXhlY3V0YWJsZXMuaCIKKyNpbmNs
dWRlICJCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5oIgogI2luY2x1ZGUgIkJ5dGVjb2RlTGl2
ZW5lc3NBbmFseXNpcy5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSlNG
dW5jdGlvbi5oIgpAQCAtMTU0LDYgKzE1NSwxMCBAQCBQYXJzZXJFcnJvciBCeXRlY29kZUdlbmVy
YXRvcjo6Z2VuZXJhdGUoKQogICAgICAgICBtX2NvZGVCbG9jay0+YWRkRXhjZXB0aW9uSGFuZGxl
cihpbmZvKTsKICAgICB9CiAgICAgCisKKyAgICBpZiAobV9jb2RlQmxvY2stPnBhcnNlTW9kZSgp
ID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yQm9keU1vZGUpCisgICAgICAgIHBlcmZvcm1H
ZW5lcmF0b3JpZmljYXRpb24obV9jb2RlQmxvY2suZ2V0KCksIG1faW5zdHJ1Y3Rpb25zLCBtX2dl
bmVyYXRvckZyYW1lU3ltYm9sVGFibGUuZ2V0KCksIG1fZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJs
ZUluZGV4KTsKKwogICAgIG1fY29kZUJsb2NrLT5zZXRJbnN0cnVjdGlvbnMoc3RkOjptYWtlX3Vu
aXF1ZTxVbmxpbmtlZEluc3RydWN0aW9uU3RyZWFtPihtX2luc3RydWN0aW9ucykpOwogCiAgICAg
bV9jb2RlQmxvY2stPnNocmlua1RvRml0KCk7CkBAIC0yNjEsMTAgKzI2NiwxNCBAQCBCeXRlY29k
ZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0
aW9uTm9kZSwgVW5saW5rZQogICAgIGJvb2wgc2hvdWxkQ2FwdHVyZUFsbE9mVGhlVGhpbmdzID0g
bV9zaG91bGRFbWl0RGVidWdIb29rcyB8fCBjb2RlQmxvY2stPnVzZXNFdmFsKCk7CiAgICAgYm9v
bCBuZWVkc0FyZ3VtZW50cyA9IChmdW5jdGlvbk5vZGUtPnVzZXNBcmd1bWVudHMoKSB8fCBjb2Rl
QmxvY2stPnVzZXNFdmFsKCkgfHwgKGZ1bmN0aW9uTm9kZS0+dXNlc0Fycm93RnVuY3Rpb24oKSAm
JiAhY29kZUJsb2NrLT5pc0Fycm93RnVuY3Rpb24oKSAmJiBpc0FyZ3VtZW50c1VzZWRJbklubmVy
QXJyb3dGdW5jdGlvbigpKSk7CiAKLSAgICAvLyBHZW5lcmF0b3IgbmV2ZXIgcHJvdmlkZXMgImFy
Z3VtZW50cyIuICJhcmd1bWVudHMiIHJlZmVyZW5jZSB3aWxsIGJlIHJlc29sdmVkIGluIGFuIHVw
cGVyIGdlbmVyYXRvciBmdW5jdGlvbiBzY29wZS4KLSAgICBpZiAocGFyc2VNb2RlID09IFNvdXJj
ZVBhcnNlTW9kZTo6R2VuZXJhdG9yQm9keU1vZGUpCisgICAgaWYgKHBhcnNlTW9kZSA9PSBTb3Vy
Y2VQYXJzZU1vZGU6OkdlbmVyYXRvckJvZHlNb2RlKSB7CisgICAgICAgIC8vIEdlbmVyYXRvciBu
ZXZlciBwcm92aWRlcyAiYXJndW1lbnRzIi4gImFyZ3VtZW50cyIgcmVmZXJlbmNlIHdpbGwgYmUg
cmVzb2x2ZWQgaW4gYW4gdXBwZXIgZ2VuZXJhdG9yIGZ1bmN0aW9uIHNjb3BlLgogICAgICAgICBu
ZWVkc0FyZ3VtZW50cyA9IGZhbHNlOwogCisgICAgICAgIC8vIEdlbmVyYXRvciB1c2VzIHRoZSB2
YXIgc2NvcGUgdG8gc2F2ZSBhbmQgcmVzdW1lIGl0cyB2YXJpYWJsZXMuIFNvIHRoZSBsZXhpY2Fs
IHNjb3BlIGlzIGFsd2F5cyBpbnN0YW50aWF0ZWQuCisgICAgICAgIHNob3VsZENhcHR1cmVTb21l
T2ZUaGVUaGluZ3MgPSB0cnVlOworICAgIH0KKwogICAgIGlmIChwYXJzZU1vZGUgPT0gU291cmNl
UGFyc2VNb2RlOjpHZW5lcmF0b3JXcmFwcGVyRnVuY3Rpb25Nb2RlICYmIG5lZWRzQXJndW1lbnRz
KSB7CiAgICAgICAgIC8vIEdlbmVyYXRvciBkb2VzIG5vdCBwcm92aWRlICJhcmd1bWVudHMiLiBJ
bnN0ZWFkLCB3cmFwcGluZyBHZW5lcmF0b3JGdW5jdGlvbiBwcm92aWRlcyAiYXJndW1lbnRzIi4K
ICAgICAgICAgLy8gVGhpcyBpcyBiZWNhdXNlIGFyZ3VtZW50cyBvZiBhIGdlbmVyYXRvciBzaG91
bGQgYmUgZXZhbHVhdGVkIGJlZm9yZSBzdGFydGluZyBpdC4KQEAgLTI3Myw3ICsyODIsNyBAQCBC
eXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUq
IGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAgICAgICAvLyAgICBmdW5jdGlvbiAqZ2VuKGEsIGIg
PSBoZWxsbygpKQogICAgICAgICAvLyAgICB7CiAgICAgICAgIC8vICAgICAgICByZXR1cm4gewot
ICAgICAgICAvLyAgICAgICAgICAgIEBnZW5lcmF0b3JOZXh0OiBmdW5jdGlvbiAoQGdlbmVyYXRv
ciwgQGdlbmVyYXRvclN0YXRlLCBAZ2VuZXJhdG9yVmFsdWUsIEBnZW5lcmF0b3JSZXN1bWVNb2Rl
KQorICAgICAgICAvLyAgICAgICAgICAgIEBnZW5lcmF0b3JOZXh0OiBmdW5jdGlvbiAoQGdlbmVy
YXRvciwgQGdlbmVyYXRvclN0YXRlLCBAZ2VuZXJhdG9yVmFsdWUsIEBnZW5lcmF0b3JSZXN1bWVN
b2RlLCBAZ2VuZXJhdG9yRnJhbWUpCiAgICAgICAgIC8vICAgICAgICAgICAgewogICAgICAgICAv
LyAgICAgICAgICAgICAgICBhcmd1bWVudHM7ICAvLyBUaGlzIGBhcmd1bWVudHNgIHNob3VsZCBy
ZWZlcmVuY2UgdG8gdGhlIGdlbidzIGFyZ3VtZW50cy4KICAgICAgICAgLy8gICAgICAgICAgICAg
ICAgLi4uCkBAIC0zMDIsMTYgKzMxMSwxNCBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVH
ZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAg
ICAgICByZXR1cm4gY2FwdHVyZXModWlkKSA/IFZhcktpbmQ6OlNjb3BlIDogVmFyS2luZDo6U3Rh
Y2s7CiAgICAgfTsKIAotICAgIGVtaXRFbnRlcigpOwotCi0gICAgYWxsb2NhdGVBbmRFbWl0U2Nv
cGUoKTsKLQogICAgIG1fY2FsbGVlUmVnaXN0ZXIuc2V0SW5kZXgoQ2FsbEZyYW1lU2xvdDo6Y2Fs
bGVlKTsKIAogICAgIGluaXRpYWxpemVQYXJhbWV0ZXJzKHBhcmFtZXRlcnMpOwogICAgIEFTU0VS
VCghKGlzU2ltcGxlUGFyYW1ldGVyTGlzdCAmJiBtX3Jlc3RQYXJhbWV0ZXIpKTsKIAotICAgIC8v
IEJlZm9yZSBlbWl0dGluZyBhIHNjb3BlIGNyZWF0aW9uLCBlbWl0IGEgZ2VuZXJhdG9yIHByb2xv
Z3VlIHRoYXQgY29udGFpbnMganVtcCBiYXNlZCBvbiBhIGdlbmVyYXRvcidzIHN0YXRlLgorICAg
IGVtaXRFbnRlcigpOworCisgICAgLy8gQmVmb3JlIGVtaXR0aW5nIGFueSBvZiB0aGUgYWN0dWFs
IGNvZGUgZXhjZXB0IGZvciBvcF9lbnRlciwgZW1pdCBhIGdlbmVyYXRvciBwcm9sb2d1ZSB0aGF0
IGNvbnRhaW5zIGp1bXAgYmFzZWQgb24gYSBnZW5lcmF0b3IncyBzdGF0ZS4KICAgICBpZiAocGFy
c2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yQm9keU1vZGUpIHsKICAgICAgICAg
bV9nZW5lcmF0b3JSZWdpc3RlciA9ICZtX3BhcmFtZXRlcnNbMV07CiAKQEAgLTMyNSw2ICszMzIs
OCBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlv
bk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAgICAgICBlbWl0R2VuZXJhdG9yU3RhdGVM
YWJlbCgpOwogICAgIH0KIAorICAgIGFsbG9jYXRlQW5kRW1pdFNjb3BlKCk7CisKICAgICBpZiAo
ZnVuY3Rpb25OYW1lSXNJblNjb3BlKGZ1bmN0aW9uTm9kZS0+aWRlbnQoKSwgZnVuY3Rpb25Ob2Rl
LT5mdW5jdGlvbk1vZGUoKSkpIHsKICAgICAgICAgQVNTRVJUKHBhcnNlTW9kZSAhPSBTb3VyY2VQ
YXJzZU1vZGU6OkdlbmVyYXRvckJvZHlNb2RlKTsKICAgICAgICAgYm9vbCBpc0R5bmFtaWNTY29w
ZSA9IGZ1bmN0aW9uTmFtZVNjb3BlSXNEeW5hbWljKGNvZGVCbG9jay0+dXNlc0V2YWwoKSwgY29k
ZUJsb2NrLT5pc1N0cmljdE1vZGUoKSk7CkBAIC02MzEsNiArNjQwLDE2IEBAIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25O
b2RlLCBVbmxpbmtlCiAgICAgICAgICAgICBlbWl0TG9hZE5ld1RhcmdldEZyb21BcnJvd0Z1bmN0
aW9uTGV4aWNhbEVudmlyb25tZW50KCk7CiAgICAgfQogICAgIAorICAgIC8vIFNldCB1cCB0aGUg
bGV4aWNhbCBlbnZpcm9ubWVudCBzY29wZSBhcyB0aGUgZ2VuZXJhdG9yIGZyYW1lLiBXZSBzdG9y
ZSB0aGUgc2F2ZWQgYW5kIHJlc3VtZWQgZ2VuZXJhdG9yIHJlZ2lzdGVycyBpbnRvIHRoaXMgc2Nv
cGUgd2l0aCB0aGUgc3ltYm9sIGtleXMuCisgICAgLy8gU2luY2UgdGhleSBhcmUgc3ltYm9sIGtl
eWVkLCB0aGVzZSB2YXJpYWJsZXMgY2Fubm90IGJlIHJlYWNoZWQgZnJvbSB0aGUgdXN1YWwgY29k
ZS4KKyAgICBpZiAoU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JCb2R5TW9kZSA9PSBwYXJzZU1v
ZGUpIHsKKyAgICAgICAgQVNTRVJUKG1fbGV4aWNhbEVudmlyb25tZW50UmVnaXN0ZXIpOworICAg
ICAgICBtX2dlbmVyYXRvckZyYW1lU3ltYm9sVGFibGUuc2V0KCptX3ZtLCBmdW5jdGlvblN5bWJv
bFRhYmxlKTsKKyAgICAgICAgbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlSW5kZXggPSBzeW1i
b2xUYWJsZUNvbnN0YW50SW5kZXg7CisgICAgICAgIGVtaXRNb3ZlKGdlbmVyYXRvckZyYW1lUmVn
aXN0ZXIoKSwgbV9sZXhpY2FsRW52aXJvbm1lbnRSZWdpc3Rlcik7CisgICAgICAgIGVtaXRQdXRC
eUlkKGdlbmVyYXRvclJlZ2lzdGVyKCksIHByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5n
ZW5lcmF0b3JGcmFtZVByaXZhdGVOYW1lKCksIGdlbmVyYXRvckZyYW1lUmVnaXN0ZXIoKSk7Cisg
ICAgfQorCiAgICAgYm9vbCBzaG91bGRJbml0aWFsaXplQmxvY2tTY29wZWRGdW5jdGlvbnMgPSBm
YWxzZTsgLy8gV2UgZ2VuZXJhdGUgdG9wLWxldmVsIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucyBpbiA6
OmdlbmVyYXRlKCkuCiAgICAgcHVzaExleGljYWxTY29wZShtX3Njb3BlTm9kZSwgVERaQ2hlY2tP
cHRpbWl6YXRpb246Ok9wdGltaXplLCBOZXN0ZWRTY29wZVR5cGU6OklzTm90TmVzdGVkLCBudWxs
cHRyLCBzaG91bGRJbml0aWFsaXplQmxvY2tTY29wZWRGdW5jdGlvbnMpOwogfQpAQCAtMzY1OCw4
ICszNjc3LDcgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENvbXBsZXhQb3BTY29wZXMo
UmVnaXN0ZXJJRCogc2NvcGUsIENvbnRyb2xGbG93Q29udGUKICAgICAgICAgICAgIGlmIChmbGlw
VHJpZXMpIHsKICAgICAgICAgICAgICAgICB3aGlsZSAobV90cnlDb250ZXh0U3RhY2suc2l6ZSgp
ICE9IGZpbmFsbHlDb250ZXh0LnRyeUNvbnRleHRTdGFja1NpemUpIHsKICAgICAgICAgICAgICAg
ICAgICAgQVNTRVJUKG1fdHJ5Q29udGV4dFN0YWNrLnNpemUoKSA+IGZpbmFsbHlDb250ZXh0LnRy
eUNvbnRleHRTdGFja1NpemUpOwotICAgICAgICAgICAgICAgICAgICBUcnlDb250ZXh0IGNvbnRl
eHQgPSBtX3RyeUNvbnRleHRTdGFjay5sYXN0KCk7Ci0gICAgICAgICAgICAgICAgICAgIG1fdHJ5
Q29udGV4dFN0YWNrLnJlbW92ZUxhc3QoKTsKKyAgICAgICAgICAgICAgICAgICAgVHJ5Q29udGV4
dCBjb250ZXh0ID0gbV90cnlDb250ZXh0U3RhY2sudGFrZUxhc3QoKTsKICAgICAgICAgICAgICAg
ICAgICAgVHJ5UmFuZ2UgcmFuZ2U7CiAgICAgICAgICAgICAgICAgICAgIHJhbmdlLnN0YXJ0ID0g
Y29udGV4dC5zdGFydDsKICAgICAgICAgICAgICAgICAgICAgcmFuZ2UuZW5kID0gYmVmb3JlRmlu
YWxseTsKQEAgLTM5NDMsNyArMzk2MSw3IEBAIHN0YXRpYyB2b2lkIHByZXBhcmVKdW1wVGFibGVG
b3JTdHJpbmdTd2l0Y2goVW5saW5rZWRTdHJpbmdKdW1wVGFibGUmIGp1bXBUYWJsZSwKICAgICAg
ICAgCiAgICAgICAgIEFTU0VSVChub2Rlc1tpXS0+aXNTdHJpbmcoKSk7CiAgICAgICAgIFN0cmlu
Z0ltcGwqIGNsYXVzZSA9IHN0YXRpY19jYXN0PFN0cmluZ05vZGUqPihub2Rlc1tpXSktPnZhbHVl
KCkuaW1wbCgpOwotICAgICAgICBqdW1wVGFibGUub2Zmc2V0VGFibGUuYWRkKGNsYXVzZSwgbGFi
ZWxzW2ldLT5iaW5kKHN3aXRjaEFkZHJlc3MsIHN3aXRjaEFkZHJlc3MgKyAzKSk7CisgICAgICAg
IGp1bXBUYWJsZS5vZmZzZXRUYWJsZS5hZGQoY2xhdXNlLCBVbmxpbmtlZFN0cmluZ0p1bXBUYWJs
ZTo6T2Zmc2V0TG9jYXRpb24geyBsYWJlbHNbaV0tPmJpbmQoc3dpdGNoQWRkcmVzcywgc3dpdGNo
QWRkcmVzcyArIDMpIH0pOwogICAgIH0KIH0KIApAQCAtNDQ1MSwxNiArNDQ2OSwzNiBAQCB2b2lk
IEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0WWllbGRQb2ludChSZWdpc3RlcklEKiBhcmd1bWVudCkK
ICAgICBlbWl0R2VuZXJhdG9yU3RhdGVDaGFuZ2UoeWllbGRQb2ludEluZGV4KTsKICAgICAvLyBG
aXJzdCB5aWVsZCBwb2ludCBpcyB1c2VkIGZvciBpbml0aWFsIHNlcXVlbmNlLgogICAgIHVuc2ln
bmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9IHlpZWxkUG9pbnRJbmRleCAtIDE7CisKKyAgICAv
LyBTcGxpdCB0aGUgdHJ5IHJhbmdlIGhlcmUuCisgICAgUmVmUHRyPExhYmVsPiBzYXZlUG9pbnQg
PSBlbWl0TGFiZWwobmV3TGFiZWwoKS5nZXQoKSk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gbV90
cnlDb250ZXh0U3RhY2suc2l6ZSgpOyBpLS07KSB7CisgICAgICAgIFRyeUNvbnRleHQmIGNvbnRl
eHQgPSBtX3RyeUNvbnRleHRTdGFja1tpXTsKKyAgICAgICAgVHJ5UmFuZ2UgcmFuZ2U7CisgICAg
ICAgIHJhbmdlLnN0YXJ0ID0gY29udGV4dC5zdGFydDsKKyAgICAgICAgcmFuZ2UuZW5kID0gc2F2
ZVBvaW50OworICAgICAgICByYW5nZS50cnlEYXRhID0gY29udGV4dC50cnlEYXRhOworICAgICAg
ICBtX3RyeVJhbmdlcy5hcHBlbmQocmFuZ2UpOworCisgICAgICAgIC8vIFRyeSByYW5nZSB3aWxs
IGJlIHJlc3RhcmVkIGF0IHRoZSBtZXJnZSBwb2ludC4KKyAgICAgICAgY29udGV4dC5zdGFydCA9
IG1lcmdlUG9pbnQ7CisgICAgfQorICAgIFZlY3RvcjxUcnlDb250ZXh0PiBzYXZlZFRyeUNvbnRl
eHRTdGFjazsKKyAgICBtX3RyeUNvbnRleHRTdGFjay5zd2FwKHNhdmVkVHJ5Q29udGV4dFN0YWNr
KTsKKwogICAgIGVtaXRTYXZlKG1lcmdlUG9pbnQuZ2V0KCksIGxpdmVDYWxsZWVMb2NhbHNJbmRl
eCk7CiAgICAgZW1pdFJldHVybihhcmd1bWVudCk7CiAgICAgZW1pdFJlc3VtZShtZXJnZVBvaW50
LmdldCgpLCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpOworCisgICAgLy8gUmVzdG9yZSB0aGUgdHJ5
IGNvbnRleHRzLCB3aGljaCBzdGFydCBvZmZzZXQgaXMgdXBkYXRlZCB0byB0aGUgbWVyZ2UgcG9p
bnQuCisgICAgbV90cnlDb250ZXh0U3RhY2suc3dhcChzYXZlZFRyeUNvbnRleHRTdGFjayk7CiB9
CiAKIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRTYXZlKExhYmVsKiBtZXJnZVBvaW50LCB1
bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpCiB7CiAgICAgc2l6ZV90IGJlZ2luID0gaW5z
dHJ1Y3Rpb25zKCkuc2l6ZSgpOwogICAgIGVtaXRPcGNvZGUob3Bfc2F2ZSk7Ci0gICAgaW5zdHJ1
Y3Rpb25zKCkuYXBwZW5kKG1fZ2VuZXJhdG9yUmVnaXN0ZXItPmluZGV4KCkpOworICAgIGluc3Ry
dWN0aW9ucygpLmFwcGVuZChnZW5lcmF0b3JGcmFtZVJlZ2lzdGVyKCktPmluZGV4KCkpOwogICAg
IGluc3RydWN0aW9ucygpLmFwcGVuZChsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpOwogICAgIGluc3Ry
dWN0aW9ucygpLmFwcGVuZChtZXJnZVBvaW50LT5iaW5kKGJlZ2luLCBpbnN0cnVjdGlvbnMoKS5z
aXplKCkpKTsKIH0KQEAgLTQ0NjksNyArNDUwNyw3IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRSZXN1bWUoTGFiZWwqIG1lcmdlUG9pbnQsIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJ
CiB7CiAgICAgZW1pdEdlbmVyYXRvclN0YXRlTGFiZWwoKTsKICAgICBlbWl0T3Bjb2RlKG9wX3Jl
c3VtZSk7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fZ2VuZXJhdG9yUmVnaXN0ZXItPmlu
ZGV4KCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChnZW5lcmF0b3JGcmFtZVJlZ2lzdGVy
KCktPmluZGV4KCkpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChsaXZlQ2FsbGVlTG9jYWxz
SW5kZXgpOwogICAgIGVtaXRMYWJlbChtZXJnZVBvaW50KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAppbmRleCA1
ZmFmMDRmMmYzZGJhMThhZGIwNzg5ZTMyM2U5ZGFhZTYxYWIxMTZiLi5lYzJhMGU2YjA2NmNhYWRh
Y2YyYjdiMDdmYWFmNjU1YmZjNDUxYjEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCkBAIC03MDUsNiArNzA1LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFJlZ2lzdGVySUQqIGdlbmVyYXRvclN0YXRlUmVn
aXN0ZXIoKSB7IHJldHVybiAmbV9wYXJhbWV0ZXJzWzJdOyB9CiAgICAgICAgIFJlZ2lzdGVySUQq
IGdlbmVyYXRvclZhbHVlUmVnaXN0ZXIoKSB7IHJldHVybiAmbV9wYXJhbWV0ZXJzWzNdOyB9CiAg
ICAgICAgIFJlZ2lzdGVySUQqIGdlbmVyYXRvclJlc3VtZU1vZGVSZWdpc3RlcigpIHsgcmV0dXJu
ICZtX3BhcmFtZXRlcnNbNF07IH0KKyAgICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9yRnJhbWVS
ZWdpc3RlcigpIHsgcmV0dXJuICZtX3BhcmFtZXRlcnNbNV07IH0KIAogICAgICAgICBDb2RlVHlw
ZSBjb2RlVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZVR5cGU7IH0KIApAQCAtOTMyLDYgKzkz
MywxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgVmVjdG9yPFJlZlB0cjxGb3JJbkNvbnRl
eHQ+PiBtX2ZvckluQ29udGV4dFN0YWNrOwogICAgICAgICBWZWN0b3I8VHJ5Q29udGV4dD4gbV90
cnlDb250ZXh0U3RhY2s7CiAgICAgICAgIFZlY3RvcjxSZWZQdHI8TGFiZWw+PiBtX2dlbmVyYXRv
clJlc3VtZUxhYmVsczsKKworICAgICAgICBTdHJvbmc8U3ltYm9sVGFibGU+IG1fZ2VuZXJhdG9y
RnJhbWVTeW1ib2xUYWJsZTsKKyAgICAgICAgaW50IG1fZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJs
ZUluZGV4IHsgMCB9OworCiAgICAgICAgIGVudW0gRnVuY3Rpb25WYXJpYWJsZVR5cGUgOiB1aW50
OF90IHsgTm9ybWFsRnVuY3Rpb25WYXJpYWJsZSwgR2xvYmFsRnVuY3Rpb25WYXJpYWJsZSB9Owog
ICAgICAgICBWZWN0b3I8c3RkOjpwYWlyPEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiwgRnVuY3Rpb25W
YXJpYWJsZVR5cGU+PiBtX2Z1bmN0aW9uc1RvSW5pdGlhbGl6ZTsKICAgICAgICAgYm9vbCBtX25l
ZWRUb0luaXRpYWxpemVBcmd1bWVudHMgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKaW5kZXggNjlhMTZlYjVkYTQzNTViYzc5MjVjNWRmZGNi
MDYyMDIzZTk5NjUwMi4uYzQ1NzIzYjE5MDEzMjAyNWRmY2UzMjZmNjAxNWVjYTZjZTU4ZDcxYSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCkBAIC00Miw4
ICs0Miw4IEBACiAjaW5jbHVkZSAiRGlyZWN0QXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiRlRMRm9y
T1NSRW50cnlKSVRDb2RlLmgiCiAjaW5jbHVkZSAiRlRMT1NSRW50cnkuaCIKLSNpbmNsdWRlICJI
b3N0Q2FsbFJldHVyblZhbHVlLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCisjaW5jbHVk
ZSAiSG9zdENhbGxSZXR1cm5WYWx1ZS5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5j
bHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSklURXhjZXB0aW9ucy5oIgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRlLWJ5dGVjb2RlLWZpbGVzIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2dlbmVyYXRlLWJ5dGVjb2RlLWZpbGVzCmluZGV4IDU2NjZhM2Y5MjRjMTE5YjIx
NmQzZmYwZmZlOWM2NzJiN2M3MWJiNzkuLmZhY2ZkZjEzMzE0ODcwN2EzMzM1MzU3NjJiZTc4MzA0
YzRiNTBiMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0ZS1ieXRl
Y29kZS1maWxlcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdGUtYnl0ZWNvZGUt
ZmlsZXMKQEAgLTE4Nyw2ICsxODcsNyBAQCBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAg
ICAgICAgICAgICAgIGRlZmF1bHRMZW5ndGggPSBzZWN0aW9uWyJkZWZhdWx0TGVuZ3RoIl0KIAog
ICAgICAgICAgICAgYnl0ZWNvZGVOdW0gPSAwCisgICAgICAgICAgICBtYXhMZW5ndGggPSAwCiAg
ICAgICAgICAgICBmb3IgYnl0ZWNvZGUgaW4gc2VjdGlvblsiYnl0ZWNvZGVzIl06CiAgICAgICAg
ICAgICAgICAgaWYgbm90IGZpcnN0TWFjcm86CiAgICAgICAgICAgICAgICAgICAgIGJ5dGVjb2Rl
SEZpbGUud3JpdGUoIiBcXFxuIikKQEAgLTE5NCw2ICsxOTUsNyBAQCBpZiBfX25hbWVfXyA9PSAi
X19tYWluX18iOgogICAgICAgICAgICAgICAgIGxlbmd0aCA9IGRlZmF1bHRMZW5ndGgKICAgICAg
ICAgICAgICAgICBpZiAibGVuZ3RoIiBpbiBieXRlY29kZToKICAgICAgICAgICAgICAgICAgICAg
bGVuZ3RoID0gYnl0ZWNvZGVbImxlbmd0aCJdCisgICAgICAgICAgICAgICAgICAgIG1heExlbmd0
aCA9IG1heChbbGVuZ3RoLCBtYXhMZW5ndGhdKQogCiAgICAgICAgICAgICAgICAgYnl0ZWNvZGVI
RmlsZS53cml0ZSgiICAgIG1hY3JvKHswfSwgezF9KSIuZm9ybWF0KGJ5dGVjb2RlWyJuYW1lIl0s
IGxlbmd0aCkpCiAgICAgICAgICAgICAgICAgZmlyc3RNYWNybyA9IEZhbHNlCkBAIC0yMDEsNiAr
MjAzLDcgQEAgaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKIAogICAgICAgICAgICAgYnl0ZWNv
ZGVIRmlsZS53cml0ZSgiXG5cbiIpCiAgICAgICAgICAgICBieXRlY29kZUhGaWxlLndyaXRlKCIj
ZGVmaW5lIE5VTUJFUl9PRl97MH1fSURTIHsxfVxuXG4iLmZvcm1hdChzZWN0aW9uWyJtYWNyb05h
bWVDb21wb25lbnQiXSwgYnl0ZWNvZGVOdW0pKQorICAgICAgICAgICAgYnl0ZWNvZGVIRmlsZS53
cml0ZSgiI2RlZmluZSBNQVhfT1BDT0RFX0xFTkdUSF9PRl97MH0gezF9XG5cbiIuZm9ybWF0KHNl
Y3Rpb25bIm1hY3JvTmFtZUNvbXBvbmVudCJdLCBtYXhMZW5ndGgpKQogCiAgICAgICAgIGlmIGlu
aXRBU01GaWxlTmFtZSBhbmQgc2VjdGlvblsnZW1pdEluQVNNRmlsZSddOgogICAgICAgICAgICAg
cHJlZml4ID0gIiIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9JbnRlcnByZXRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50
ZXJwcmV0ZXIuY3BwCmluZGV4IDJiNGM3YzliM2ViMzZkNjMwNmVhODQ0ZTg1Mzc2ZmZhN2ZkMGYx
ZjcuLmZlMzY4ZjM5MWNjMjdjMWEwNWI4YmQ5MGZmOTFhYzE2MjFiNjI0NzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcApAQCAtNjA4
LDcgKzYwOCw3IEBAIEpTU3RyaW5nKiBJbnRlcnByZXRlcjo6c3RhY2tUcmFjZUFzU3RyaW5nKFZN
JiB2bSwgY29uc3QgVmVjdG9yPFN0YWNrRnJhbWU+JiBzdGFjCiAgICAgcmV0dXJuIGpzU3RyaW5n
KCZ2bSwgYnVpbGRlci50b1N0cmluZygpKTsKIH0KIAotQUxXQVlTX0lOTElORSBzdGF0aWMgSGFu
ZGxlckluZm8qIGZpbmRFeGNlcHRpb25IYW5kbGVyKFN0YWNrVmlzaXRvciYgdmlzaXRvciwgQ29k
ZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVCbG9jazo6UmVxdWlyZWRIYW5kbGVyIHJlcXVpcmVkSGFu
ZGxlcikKK0FMV0FZU19JTkxJTkUgc3RhdGljIEhhbmRsZXJJbmZvKiBmaW5kRXhjZXB0aW9uSGFu
ZGxlcihTdGFja1Zpc2l0b3ImIHZpc2l0b3IsIENvZGVCbG9jayogY29kZUJsb2NrLCBSZXF1aXJl
ZEhhbmRsZXIgcmVxdWlyZWRIYW5kbGVyKQogewogICAgIEFTU0VSVChjb2RlQmxvY2spOwogI2lm
IEVOQUJMRShERkdfSklUKQpAQCAtNjQyLDcgKzY0Miw3IEBAIGNsYXNzIEdldENhdGNoSGFuZGxl
ckZ1bmN0b3IgewogICAgICAgICBpZiAoIWNvZGVCbG9jaykKICAgICAgICAgICAgIHJldHVybiBT
dGFja1Zpc2l0b3I6OkNvbnRpbnVlOwogCi0gICAgICAgIG1faGFuZGxlciA9IGZpbmRFeGNlcHRp
b25IYW5kbGVyKHZpc2l0b3IsIGNvZGVCbG9jaywgQ29kZUJsb2NrOjpSZXF1aXJlZEhhbmRsZXI6
OkNhdGNoSGFuZGxlcik7CisgICAgICAgIG1faGFuZGxlciA9IGZpbmRFeGNlcHRpb25IYW5kbGVy
KHZpc2l0b3IsIGNvZGVCbG9jaywgUmVxdWlyZWRIYW5kbGVyOjpDYXRjaEhhbmRsZXIpOwogICAg
ICAgICBpZiAobV9oYW5kbGVyKQogICAgICAgICAgICAgcmV0dXJuIFN0YWNrVmlzaXRvcjo6RG9u
ZTsKIApAQCAtNjg0LDcgKzY4NCw3IEBAIGNsYXNzIFVud2luZEZ1bmN0b3IgewogICAgICAgICBt
X2hhbmRsZXIgPSBudWxscHRyOwogICAgICAgICBpZiAoIW1faXNUZXJtaW5hdGlvbikgewogICAg
ICAgICAgICAgaWYgKG1fY29kZUJsb2NrICYmICFpc1dlYkFzc2VtYmx5RXhlY3V0YWJsZShtX2Nv
ZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCkpKQotICAgICAgICAgICAgICAgIG1faGFuZGxlciA9
IGZpbmRFeGNlcHRpb25IYW5kbGVyKHZpc2l0b3IsIG1fY29kZUJsb2NrLCBDb2RlQmxvY2s6OlJl
cXVpcmVkSGFuZGxlcjo6QW55SGFuZGxlcik7CisgICAgICAgICAgICAgICAgbV9oYW5kbGVyID0g
ZmluZEV4Y2VwdGlvbkhhbmRsZXIodmlzaXRvciwgbV9jb2RlQmxvY2ssIFJlcXVpcmVkSGFuZGxl
cjo6QW55SGFuZGxlcik7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAobV9oYW5kbGVyKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAppbmRleCBk
MjA5NGRlZTdkMjg1YWM0OTViMTU0MTcyYTIzYjk0ZmZlODU3ZjFlLi4wNzMyYjNlYmJkOWFkZmQy
MjMzNjJlYzlhNmJhYWFmZDg2MWY1MjY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaApAQCAtNjYsNiArNjYsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICBzdHJ1Y3QgSGFuZGxlckluZm87CiAgICAgc3RydWN0IEluc3RydWN0aW9uOwogICAg
IHN0cnVjdCBQcm90b0NhbGxGcmFtZTsKKyAgICBzdHJ1Y3QgVW5saW5rZWRJbnN0cnVjdGlvbjsK
IAogICAgIGVudW0gVW53aW5kU3RhcnQgeyBVbndpbmRGcm9tQ3VycmVudEZyYW1lLCBVbndpbmRG
cm9tQ2FsbGVyRnJhbWUgfTsKIApAQCAtMjA4LDcgKzIwOSwxMCBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgICAgIHJldHVybiBvcGNvZGU7CiAjZW5kaWYKICAgICAgICAgfQotICAgICAgICAK
KworICAgICAgICBPcGNvZGVJRCBnZXRPcGNvZGVJRChjb25zdCBJbnN0cnVjdGlvbiYpOworICAg
ICAgICBPcGNvZGVJRCBnZXRPcGNvZGVJRChjb25zdCBVbmxpbmtlZEluc3RydWN0aW9uJik7CisK
ICAgICAgICAgYm9vbCBpc09wY29kZShPcGNvZGUpOwogCiAgICAgICAgIEpTVmFsdWUgZXhlY3V0
ZShQcm9ncmFtRXhlY3V0YWJsZSosIENhbGxGcmFtZSosIEpTT2JqZWN0KiB0aGlzT2JqKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlcklu
bGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlcklu
bGluZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi44NmQwNzE0OGE1MmU2NWUzNzVmOTdlNmViYjkxYWRiZTFkZDQ1
NjBkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVy
L0ludGVycHJldGVySW5saW5lcy5oCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTYgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1
ZGUgIkluc3RydWN0aW9uLmgiCisjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKKyNpbmNsdWRlICJV
bmxpbmtlZENvZGVCbG9jay5oIgorCituYW1lc3BhY2UgSlNDIHsKKworaW5saW5lIE9wY29kZUlE
IEludGVycHJldGVyOjpnZXRPcGNvZGVJRChjb25zdCBJbnN0cnVjdGlvbiYgaW5zdHJ1Y3Rpb24p
Cit7CisgICAgcmV0dXJuIGdldE9wY29kZUlEKGluc3RydWN0aW9uLnUub3Bjb2RlKTsKK30KKwor
aW5saW5lIE9wY29kZUlEIEludGVycHJldGVyOjpnZXRPcGNvZGVJRChjb25zdCBVbmxpbmtlZElu
c3RydWN0aW9uJiBpbnN0cnVjdGlvbikKK3sKKyAgICByZXR1cm4gaW5zdHJ1Y3Rpb24udS5vcGNv
ZGU7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCmlu
ZGV4IGYyN2QzOWE2ZWE4ZDk0M2I0YmU4NjJjZGQwY2RiN2VhZWQ1YTEzNDcuLjY5OTE0MjQyZTY2
NDMwZmU4YWUxZmI3N2I1ODlmNjlmODdjMDdjNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5j
cHAKQEAgLTIzNSw4ICsyMzUsNiBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygp
CiAgICAgICAgIERFRklORV9PUChvcF9nZXRfcmVzdF9sZW5ndGgpCiAgICAgICAgIERFRklORV9P
UChvcF9jaGVja190ZHopCiAgICAgICAgIERFRklORV9PUChvcF9hc3NlcnQpCi0gICAgICAgIERF
RklORV9PUChvcF9zYXZlKQotICAgICAgICBERUZJTkVfT1Aob3BfcmVzdW1lKQogICAgICAgICBE
RUZJTkVfT1Aob3BfZGVidWcpCiAgICAgICAgIERFRklORV9PUChvcF9kZWxfYnlfaWQpCiAgICAg
ICAgIERFRklORV9PUChvcF9kZWxfYnlfdmFsKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKaW5kZXgg
NzMxMWRmYTE2YjlhNGQ4ZjljMTc1Y2VkZWQ3Mzc1OWUyYjJjYjEzYy4uMTMwMjdjZWRmNGQwNmMz
N2FmM2MzMmI5NDNmMWI0YWI1Y2NiNzBlYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCkBAIC01
MDEsOCArNTAxLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9nZXRf
cmVzdF9sZW5ndGgoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2NoZWNrX3Rk
eihJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfYXNzZXJ0KEluc3RydWN0aW9u
Kik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9zYXZlKEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZv
aWQgZW1pdF9vcF9yZXN1bWUoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2Rl
YnVnKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9kZWxfYnlfaWQoSW5zdHJ1
Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2RlbF9ieV92YWwoSW5zdHJ1Y3Rpb24qKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCmluZGV4IGQ1NTc3OGQyNTg2
ZmExN2NmNDU0ZjMwMjQ1ZjQ3MzI3ZDA2MTU5MmEuLjI4MTNlY2IxYzA3YmFjNWFmY2RlM2M3ODk3
NWEwN2ZmYzc0MTM0NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3Bjb2Rlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNw
cApAQCAtMTQ4NiwxOCArMTQ4Niw2IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9yZXN0X2xlbmd0
aChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogI2VuZGlmCiB9CiAKLXZvaWQgSklU
OjplbWl0X29wX3NhdmUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKLXsKLSAgICBK
SVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xv
d19wYXRoX3NhdmUpOwotICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7Ci19Ci0KLXZvaWQgSklUOjpl
bWl0X29wX3Jlc3VtZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQotewotICAgIEpJ
VFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93
X3BhdGhfcmVzdW1lKTsKLSAgICBzbG93UGF0aENhbGwuY2FsbCgpOwotfQotCiB9IC8vIG5hbWVz
cGFjZSBKU0MKIAogI2VuZGlmIC8vIEVOQUJMRShKSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KaW5kZXggMDE5OTMxNTQ1OGVh
MTUyMzE4ODcxMWNiYTgyYTY4YzMzM2Y3YTYzYy4uNmM2MGFiY2E2ODdlYmI5NWEwMDMxOTExNzMy
ODNiMWYwZTU2NmZlYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyLmFzbQpAQCAtMTY1MSwxNSArMTY1MSwxMSBAQCBfbGxpbnRfb3Bf
YXNzZXJ0OgogCiAKIF9sbGludF9vcF9zYXZlOgotICAgIHRyYWNlRXhlY3V0aW9uKCkKLSAgICBj
YWxsT3Bjb2RlU2xvd1BhdGgoX3Nsb3dfcGF0aF9zYXZlKQotICAgIGRpc3BhdGNoKDQpCisgICAg
bm90U3VwcG9ydGVkKCkKIAogCiBfbGxpbnRfb3BfcmVzdW1lOgotICAgIHRyYWNlRXhlY3V0aW9u
KCkKLSAgICBjYWxsT3Bjb2RlU2xvd1BhdGgoX3Nsb3dfcGF0aF9yZXN1bWUpCi0gICAgZGlzcGF0
Y2goMykKKyAgICBub3RTdXBwb3J0ZWQoKQogCiAKIF9sbGludF9vcF9jcmVhdGVfbGV4aWNhbF9l
bnZpcm9ubWVudDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFy
c2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAppbmRleCA0
ZWVhZTE0ODAwNDY1MzZjZjIyOGUwZDc4Mjg2YzhmNTRmOTE5NmIyLi43NTZmMTJlZDI1NTE1N2Rl
ZmJlZjYxNTA5ZjQ3Yjk5MTY0NmY4MGVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL1BhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Q
YXJzZXIuY3BwCkBAIC0yNTYsNyArMjU2LDcgQEAgU3RyaW5nIFBhcnNlcjxMZXhlclR5cGU+Ojpw
YXJzZUlubmVyKGNvbnN0IElkZW50aWZpZXImIGNhbGxlZU5hbWUsIFNvdXJjZVBhcnNlTW8KICAg
ICBpZiAobV9sZXhlci0+aXNSZXBhcnNpbmdGdW5jdGlvbigpKSB7CiAgICAgICAgIFBhcnNlckZ1
bmN0aW9uSW5mbzxBU1RCdWlsZGVyPiBmdW5jdGlvbkluZm87CiAgICAgICAgIGlmIChwYXJzZU1v
ZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JCb2R5TW9kZSkKLSAgICAgICAgICAgIG1f
cGFyYW1ldGVycyA9IGNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMoY29udGV4dCk7CisgICAgICAg
ICAgICBtX3BhcmFtZXRlcnMgPSBjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKGNvbnRleHQsIGZ1
bmN0aW9uSW5mby5wYXJhbWV0ZXJDb3VudCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG1f
cGFyYW1ldGVycyA9IHBhcnNlRnVuY3Rpb25QYXJhbWV0ZXJzKGNvbnRleHQsIHBhcnNlTW9kZSwg
ZnVuY3Rpb25JbmZvKTsKIApAQCAtNTA3LDEwICs1MDcsOSBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJl
ZUJ1aWxkZXI+IFRyZWVTb3VyY2VFbGVtZW50cyBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VHZW5l
cmF0bwogCiAgICAgUGFyc2VyRnVuY3Rpb25JbmZvPFRyZWVCdWlsZGVyPiBpbmZvOwogICAgIGlu
Zm8ubmFtZSA9ICZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5udWxsSWRlbnRpZmllcjsKLSAgICBjcmVh
dGVHZW5lcmF0b3JQYXJhbWV0ZXJzKGNvbnRleHQpOworICAgIGNyZWF0ZUdlbmVyYXRvclBhcmFt
ZXRlcnMoY29udGV4dCwgaW5mby5wYXJhbWV0ZXJDb3VudCk7CiAgICAgaW5mby5zdGFydE9mZnNl
dCA9IHBhcmFtZXRlcnNTdGFydDsKICAgICBpbmZvLnN0YXJ0TGluZSA9IHRva2VuTGluZSgpOwot
ICAgIGluZm8ucGFyYW1ldGVyQ291bnQgPSA0OyAvLyBnZW5lcmF0b3IsIHN0YXRlLCB2YWx1ZSwg
cmVzdW1lIG1vZGUKIAogICAgIHsKICAgICAgICAgQXV0b1BvcFNjb3BlUmVmIGdlbmVyYXRvckJv
ZHlTY29wZSh0aGlzLCBwdXNoU2NvcGUoKSk7CkBAIC0xOTAxLDMyICsxOTAwLDMwIEBAIHRlbXBs
YXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+IHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlciwgY2xh
c3MgRnVuY3Rpb25JbmZvVHlwCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+Ci10
ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpGb3JtYWxQ
YXJhbWV0ZXJMaXN0IFBhcnNlcjxMZXhlclR5cGU+OjpjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJz
KFRyZWVCdWlsZGVyJiBjb250ZXh0KQordGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiB0eXBl
bmFtZSBUcmVlQnVpbGRlcjo6Rm9ybWFsUGFyYW1ldGVyTGlzdCBQYXJzZXI8TGV4ZXJUeXBlPjo6
Y3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhUcmVlQnVpbGRlciYgY29udGV4dCwgdW5zaWduZWQm
IHBhcmFtZXRlckNvdW50KQogewogICAgIGF1dG8gcGFyYW1ldGVycyA9IGNvbnRleHQuY3JlYXRl
Rm9ybWFsUGFyYW1ldGVyTGlzdCgpOwogCiAgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uKHRv
a2VuTG9jYXRpb24oKSk7CiAgICAgSlNUZXh0UG9zaXRpb24gcG9zaXRpb24gPSB0b2tlblN0YXJ0
UG9zaXRpb24oKTsKIAotICAgIC8vIEBnZW5lcmF0b3IKLSAgICBkZWNsYXJlUGFyYW1ldGVyKCZt
X3ZtLT5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JQcml2YXRlTmFtZSgp
KTsKLSAgICBhdXRvIGdlbmVyYXRvciA9IGNvbnRleHQuY3JlYXRlQmluZGluZ0xvY2F0aW9uKGxv
Y2F0aW9uLCBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JQcml2
YXRlTmFtZSgpLCBwb3NpdGlvbiwgcG9zaXRpb24sIEFzc2lnbm1lbnRDb250ZXh0OjpEZWNsYXJh
dGlvblN0YXRlbWVudCk7Ci0gICAgY29udGV4dC5hcHBlbmRQYXJhbWV0ZXIocGFyYW1ldGVycywg
Z2VuZXJhdG9yLCAwKTsKKyAgICBhdXRvIGFkZFBhcmFtZXRlciA9IFsmXShjb25zdCBJZGVudGlm
aWVyJiBuYW1lKSB7CisgICAgICAgIGRlY2xhcmVQYXJhbWV0ZXIoJm5hbWUpOworICAgICAgICBh
dXRvIGJpbmRpbmcgPSBjb250ZXh0LmNyZWF0ZUJpbmRpbmdMb2NhdGlvbihsb2NhdGlvbiwgbmFt
ZSwgcG9zaXRpb24sIHBvc2l0aW9uLCBBc3NpZ25tZW50Q29udGV4dDo6RGVjbGFyYXRpb25TdGF0
ZW1lbnQpOworICAgICAgICBjb250ZXh0LmFwcGVuZFBhcmFtZXRlcihwYXJhbWV0ZXJzLCBiaW5k
aW5nLCAwKTsKKyAgICAgICAgKytwYXJhbWV0ZXJDb3VudDsKKyAgICB9OwogCisgICAgLy8gQGdl
bmVyYXRvcgorICAgIGFkZFBhcmFtZXRlcihtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFt
ZXMoKS5nZW5lcmF0b3JQcml2YXRlTmFtZSgpKTsKICAgICAvLyBAZ2VuZXJhdG9yU3RhdGUKLSAg
ICBkZWNsYXJlUGFyYW1ldGVyKCZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5n
ZW5lcmF0b3JTdGF0ZVByaXZhdGVOYW1lKCkpOwotICAgIGF1dG8gZ2VuZXJhdG9yU3RhdGUgPSBj
b250ZXh0LmNyZWF0ZUJpbmRpbmdMb2NhdGlvbihsb2NhdGlvbiwgbV92bS0+cHJvcGVydHlOYW1l
cy0+YnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yU3RhdGVQcml2YXRlTmFtZSgpLCBwb3NpdGlvbiwg
cG9zaXRpb24sIEFzc2lnbm1lbnRDb250ZXh0OjpEZWNsYXJhdGlvblN0YXRlbWVudCk7Ci0gICAg
Y29udGV4dC5hcHBlbmRQYXJhbWV0ZXIocGFyYW1ldGVycywgZ2VuZXJhdG9yU3RhdGUsIDApOwot
CisgICAgYWRkUGFyYW1ldGVyKG1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdl
bmVyYXRvclN0YXRlUHJpdmF0ZU5hbWUoKSk7CiAgICAgLy8gQGdlbmVyYXRvclZhbHVlCi0gICAg
ZGVjbGFyZVBhcmFtZXRlcigmbV92bS0+cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZ2Vu
ZXJhdG9yVmFsdWVQcml2YXRlTmFtZSgpKTsKLSAgICBhdXRvIGdlbmVyYXRvclZhbHVlID0gY29u
dGV4dC5jcmVhdGVCaW5kaW5nTG9jYXRpb24obG9jYXRpb24sIG1fdm0tPnByb3BlcnR5TmFtZXMt
PmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclZhbHVlUHJpdmF0ZU5hbWUoKSwgcG9zaXRpb24sIHBv
c2l0aW9uLCBBc3NpZ25tZW50Q29udGV4dDo6RGVjbGFyYXRpb25TdGF0ZW1lbnQpOwotICAgIGNv
bnRleHQuYXBwZW5kUGFyYW1ldGVyKHBhcmFtZXRlcnMsIGdlbmVyYXRvclZhbHVlLCAwKTsKLQor
ICAgIGFkZFBhcmFtZXRlcihtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZW5l
cmF0b3JWYWx1ZVByaXZhdGVOYW1lKCkpOwogICAgIC8vIEBnZW5lcmF0b3JSZXN1bWVNb2RlCi0g
ICAgZGVjbGFyZVBhcmFtZXRlcigmbV92bS0+cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCku
Z2VuZXJhdG9yUmVzdW1lTW9kZVByaXZhdGVOYW1lKCkpOwotICAgIGF1dG8gZ2VuZXJhdG9yUmVz
dW1lTW9kZSA9IGNvbnRleHQuY3JlYXRlQmluZGluZ0xvY2F0aW9uKGxvY2F0aW9uLCBtX3ZtLT5w
cm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JSZXN1bWVNb2RlUHJpdmF0ZU5h
bWUoKSwgcG9zaXRpb24sIHBvc2l0aW9uLCBBc3NpZ25tZW50Q29udGV4dDo6RGVjbGFyYXRpb25T
dGF0ZW1lbnQpOwotICAgIGNvbnRleHQuYXBwZW5kUGFyYW1ldGVyKHBhcmFtZXRlcnMsIGdlbmVy
YXRvclJlc3VtZU1vZGUsIDApOworICAgIGFkZFBhcmFtZXRlcihtX3ZtLT5wcm9wZXJ0eU5hbWVz
LT5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JSZXN1bWVNb2RlUHJpdmF0ZU5hbWUoKSk7CisgICAg
Ly8gQGdlbmVyYXRvckZyYW1lCisgICAgYWRkUGFyYW1ldGVyKG1fdm0tPnByb3BlcnR5TmFtZXMt
PmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvckZyYW1lUHJpdmF0ZU5hbWUoKSk7CiAKICAgICByZXR1
cm4gcGFyYW1ldGVyczsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvUGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCmluZGV4
IDI1Y2VjOTVhNzYxY2NkOGMyNjMzODM3MzBlYjA0ZTE1Njk3MjBiYTIuLmRlZDYyNGY2MTdmYjZk
MjRkMDBiZjFhYzQ2YzQ1YzIyZDk5YjcyMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Q
YXJzZXIuaApAQCAtMTQ1MSw3ICsxNDUxLDcgQEAgY2xhc3MgUGFyc2VyIHsKICAgICBBTFdBWVNf
SU5MSU5FIGJvb2wgaXNBcnJvd0Z1bmN0aW9uUGFyYW1ldGVycygpOwogICAgIAogICAgIHRlbXBs
YXRlIDxjbGFzcyBUcmVlQnVpbGRlciwgY2xhc3MgRnVuY3Rpb25JbmZvVHlwZT4gTkVWRVJfSU5M
SU5FIHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpGb3JtYWxQYXJhbWV0ZXJMaXN0IHBhcnNlRnVuY3Rp
b25QYXJhbWV0ZXJzKFRyZWVCdWlsZGVyJiwgU291cmNlUGFyc2VNb2RlLCBGdW5jdGlvbkluZm9U
eXBlJik7Ci0gICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBORVZFUl9JTkxJTkUgdHlw
ZW5hbWUgVHJlZUJ1aWxkZXI6OkZvcm1hbFBhcmFtZXRlckxpc3QgY3JlYXRlR2VuZXJhdG9yUGFy
YW1ldGVycyhUcmVlQnVpbGRlciYpOworICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4g
TkVWRVJfSU5MSU5FIHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpGb3JtYWxQYXJhbWV0ZXJMaXN0IGNy
ZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMoVHJlZUJ1aWxkZXImLCB1bnNpZ25lZCYgcGFyYW1ldGVy
Q291bnQpOwogCiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBORVZFUl9JTkxJTkUg
VHJlZUNsYXNzRXhwcmVzc2lvbiBwYXJzZUNsYXNzKFRyZWVCdWlsZGVyJiwgRnVuY3Rpb25SZXF1
aXJlbWVudHMsIFBhcnNlckNsYXNzSW5mbzxUcmVlQnVpbGRlcj4mKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKaW5kZXggMDA2MTI0
NWM1YjUyZDI1ZmQ1YzM1NGZhYmU2YzViNzZjOTEwOTQyMy4uYjhkOTc4MDM5MmRhZWY3OWZlMjE0
YjBkMmM3YTYzYzIzM2U5YWI0MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db21tb25TbG93UGF0aHMuY3BwCkBAIC0zNiw3ICszNiw2IEBACiAjaW5jbHVkZSAiRXJy
b3IuaCIKICNpbmNsdWRlICJFcnJvckhhbmRsaW5nU2NvcGUuaCIKICNpbmNsdWRlICJFeGNlcHRp
b25GdXp6LmgiCi0jaW5jbHVkZSAiR2VuZXJhdG9yRnJhbWUuaCIKICNpbmNsdWRlICJHZXR0ZXJT
ZXR0ZXIuaCIKICNpbmNsdWRlICJIb3N0Q2FsbFJldHVyblZhbHVlLmgiCiAjaW5jbHVkZSAiSW50
ZXJwcmV0ZXIuaCIKQEAgLTcxNCwzOCArNzEzLDYgQEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRo
X2Fzc2VydCkKICAgICBFTkQoKTsKIH0KIAotU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3NhdmUp
Ci17Ci0gICAgLy8gT25seSBzYXZlIHZhcmlhYmxlcyBhbmQgdGVtcG9yYXJ5IHJlZ2lzdGVycy4g
VGhlIHNjb3BlIHJlZ2lzdGVycyBhcmUgaW5jbHVkZWQgaW4gdGhlbS4KLSAgICAvLyBCdXQgcGFy
YW1ldGVycyBhcmUgbm90IGluY2x1ZGVkLiBCZWNhdXNlIHRoZSBnZW5lcmF0b3IgaW1wbGVtZW50
YXRpb24gcmVwbGFjZXMgdGhlIHZhbHVlcyBvZiBwYXJhbWV0ZXJzIG9uIGVhY2ggZ2VuZXJhdG9y
Lm5leHQoKSBjYWxsLgotICAgIEJFR0lOKCk7Ci0gICAgSlNWYWx1ZSBnZW5lcmF0b3IgPSBPUCgx
KS5qc1ZhbHVlKCk7Ci0gICAgR2VuZXJhdG9yRnJhbWUqIGZyYW1lID0gbnVsbHB0cjsKLSAgICBK
U1ZhbHVlIHZhbHVlID0gZ2VuZXJhdG9yLmdldChleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCku
YnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yRnJhbWVQcml2YXRlTmFtZSgpKTsKLSAgICBpZiAoIXZh
bHVlLmlzTnVsbCgpKQotICAgICAgICBmcmFtZSA9IGpzQ2FzdDxHZW5lcmF0b3JGcmFtZSo+KHZh
bHVlKTsKLSAgICBlbHNlIHsKLSAgICAgICAgLy8gRklYTUU6IE9uY2UgSlNHZW5lcmF0b3Igc3Bl
Y2lhbGl6ZWQgb2JqZWN0IGlzIGludHJvZHVjZWQsIHRoaXMgR2VuZXJhdG9yRnJhbWUgc2hvdWxk
IGJlIGVtYmVkZWQgaW50byBpdCB0byBhdm9pZCBhbGxvY2F0aW9ucy4KLSAgICAgICAgLy8gaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTU0NQotICAgICAgICBmcmFt
ZSA9IEdlbmVyYXRvckZyYW1lOjpjcmVhdGUoZXhlYy0+dm0oKSwgIGV4ZWMtPmNvZGVCbG9jaygp
LT5udW1DYWxsZWVMb2NhbHMoKSk7Ci0gICAgICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGdlbmVy
YXRvciwgdHJ1ZSwgUHV0UHJvcGVydHlTbG90OjpQdXRCeUlkKTsKLSAgICAgICAgYXNPYmplY3Qo
Z2VuZXJhdG9yKS0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPnB1dChhc09iamVjdChnZW5lcmF0
b3IpLCBleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9y
RnJhbWVQcml2YXRlTmFtZSgpLCBmcmFtZSwgc2xvdCk7Ci0gICAgfQotICAgIHVuc2lnbmVkIGxp
dmVDYWxsZWVMb2NhbHNJbmRleCA9IHBjWzJdLnUudW5zaWduZWRWYWx1ZTsKLSAgICBmcmFtZS0+
c2F2ZShleGVjLCBleGVjLT5jb2RlQmxvY2soKS0+bGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQobGl2
ZUNhbGxlZUxvY2Fsc0luZGV4KSk7Ci0gICAgRU5EKCk7Ci19Ci0KLVNMT1dfUEFUSF9ERUNMKHNs
b3dfcGF0aF9yZXN1bWUpCi17Ci0gICAgQkVHSU4oKTsKLSAgICBKU1ZhbHVlIGdlbmVyYXRvciA9
IE9QKDEpLmpzVmFsdWUoKTsKLSAgICBHZW5lcmF0b3JGcmFtZSogZnJhbWUgPSBqc0Nhc3Q8R2Vu
ZXJhdG9yRnJhbWUqPihnZW5lcmF0b3IuZ2V0KGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5i
dWlsdGluTmFtZXMoKS5nZW5lcmF0b3JGcmFtZVByaXZhdGVOYW1lKCkpKTsKLSAgICB1bnNpZ25l
ZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSBwY1syXS51LnVuc2lnbmVkVmFsdWU7Ci0gICAgZnJh
bWUtPnJlc3VtZShleGVjLCBleGVjLT5jb2RlQmxvY2soKS0+bGl2ZUNhbGxlZUxvY2Fsc0F0WWll
bGQobGl2ZUNhbGxlZUxvY2Fsc0luZGV4KSk7Ci0gICAgRU5EKCk7Ci19Ci0KIFNMT1dfUEFUSF9E
RUNMKHNsb3dfcGF0aF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudCkKIHsKICAgICBCRUdJTigp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1Bh
dGhzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaApp
bmRleCBlYmM5MTMwNmY4M2E4MWI3YWEyZWUwZTNiM2ZiZTI5MjdlOWZhZDYyLi43NTM0ZjU2NTNh
ZjJlY2U0MTgyMWQwNTFkZTY5ODE0MzE4NmQyNDU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaApAQCAtMjQ1LDggKzI0NSw2IEBAIFNMT1df
UEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfbmV4dF9nZW5lcmljX2VudW1lcmF0b3JfcG5hbWUp
OwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF90b19pbmRleF9zdHJpbmcpOwogU0xP
V19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9wcm9maWxlX3R5cGVfY2xlYXJfbG9nKTsKIFNM
T1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfYXNzZXJ0KTsKLVNMT1dfUEFUSF9ISURERU5f
REVDTChzbG93X3BhdGhfc2F2ZSk7Ci1TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3Jl
c3VtZSk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2NyZWF0ZV9sZXhpY2FsX2Vu
dmlyb25tZW50KTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcHVzaF93aXRoX3Nj
b3BlKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcmVzb2x2ZV9zY29wZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGcmFtZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGcmFtZS5jcHAKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVmNmVhN2ExMDAyNThjM2VjZTA0ZGFhYjQzYmRh
YTg1MWVjOGY3MTUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJhbWUuY3BwCisrKyAv
ZGV2L251bGwKQEAgLTEsOTcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1
a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAi
Y29uZmlnLmgiCi0jaW5jbHVkZSAiR2VuZXJhdG9yRnJhbWUuaCIKLQotI2luY2x1ZGUgIkNvZGVC
bG9jay5oIgotI2luY2x1ZGUgIkhlYXBJdGVyYXRpb25TY29wZS5oIgotI2luY2x1ZGUgIkpTQ0pT
VmFsdWVJbmxpbmVzLmgiCi0jaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgotI2luY2x1ZGUgIlNs
b3RWaXNpdG9ySW5saW5lcy5oIgotI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKLQotbmFt
ZXNwYWNlIEpTQyB7Ci0KLWNvbnN0IENsYXNzSW5mbyBHZW5lcmF0b3JGcmFtZTo6c19pbmZvID0g
eyAiR2VuZXJhdG9yRnJhbWUiLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxF
KEdlbmVyYXRvckZyYW1lKSB9OwotCi1HZW5lcmF0b3JGcmFtZTo6R2VuZXJhdG9yRnJhbWUoVk0m
IHZtLCBzaXplX3QgbnVtYmVyT2ZDYWxsZWVMb2NhbHMpCi0gICAgOiBCYXNlKHZtLCB2bS5nZW5l
cmF0b3JGcmFtZVN0cnVjdHVyZS5nZXQoKSkKLSAgICAsIG1fbnVtYmVyT2ZDYWxsZWVMb2NhbHMo
bnVtYmVyT2ZDYWxsZWVMb2NhbHMpCi17Ci19Ci0KLXZvaWQgR2VuZXJhdG9yRnJhbWU6OmZpbmlz
aENyZWF0aW9uKFZNJiB2bSkKLXsKLSAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7Ci0gICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX251bWJlck9mQ2FsbGVlTG9jYWxzOyArK2kpCi0gICAg
ICAgIGxvY2FsQXQoaSkuY2xlYXIoKTsKLX0KLQotU3RydWN0dXJlKiBHZW5lcmF0b3JGcmFtZTo6
Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1ZSBwcm90b3R5cGUpCi17Ci0gICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9i
YWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oQ2VsbFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwg
aW5mbygpKTsKLX0KLQotR2VuZXJhdG9yRnJhbWUqIEdlbmVyYXRvckZyYW1lOjpjcmVhdGUoVk0m
IHZtLCBzaXplX3QgbnVtYmVyT2ZMb2NhbHMpCi17Ci0gICAgR2VuZXJhdG9yRnJhbWUqIHJlc3Vs
dCA9Ci0gICAgICAgIG5ldyAoCi0gICAgICAgICAgICBOb3ROdWxsLAotICAgICAgICAgICAgYWxs
b2NhdGVDZWxsPEdlbmVyYXRvckZyYW1lPih2bS5oZWFwLCBhbGxvY2F0aW9uU2l6ZUZvckxvY2Fs
cyhudW1iZXJPZkxvY2FscykpKQotICAgICAgICBHZW5lcmF0b3JGcmFtZSh2bSwgbnVtYmVyT2ZM
b2NhbHMpOwotICAgIHJlc3VsdC0+ZmluaXNoQ3JlYXRpb24odm0pOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci0KLXZvaWQgR2VuZXJhdG9yRnJhbWU6OnNhdmUoRXhlY1N0YXRlKiBleGVjLCBjb25z
dCBGYXN0Qml0VmVjdG9yJiBsaXZlQ2FsbGVlTG9jYWxzKQotewotICAgIC8vIE9ubHkgc2F2ZSBj
YWxsZWUgbG9jYWxzLgotICAgIC8vIEV2ZXJ5IHRpbWUgYSBnZW5lcmF0b3IgaXMgY2FsbGVkIChv
ciByZXN1bWVkKSwgcGFyYW1ldGVycyBzaG91bGQgYmUgcmVwbGFjZWQuCi0gICAgQVNTRVJUKGxp
dmVDYWxsZWVMb2NhbHMubnVtQml0cygpIDw9IG1fbnVtYmVyT2ZDYWxsZWVMb2NhbHMpOwotICAg
IGxpdmVDYWxsZWVMb2NhbHMuZm9yRWFjaFNldEJpdChbJl0oc2l6ZV90IGluZGV4KSB7Ci0gICAg
ICAgIGxvY2FsQXQoaW5kZXgpLnNldChleGVjLT52bSgpLCB0aGlzLCBleGVjLT51bmNoZWNrZWRS
KHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGluZGV4KSkuanNWYWx1ZSgpKTsKLSAgICB9KTsKLX0K
LQotdm9pZCBHZW5lcmF0b3JGcmFtZTo6cmVzdW1lKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgRmFz
dEJpdFZlY3RvciYgbGl2ZUNhbGxlZUxvY2FscykKLXsKLSAgICAvLyBPbmx5IHJlc3VtZSBjYWxs
ZWUgbG9jYWxzLgotICAgIC8vIEV2ZXJ5IHRpbWUgYSBnZW5lcmF0b3IgaXMgY2FsbGVkIChvciBy
ZXN1bWVkKSwgcGFyYW1ldGVycyBzaG91bGQgYmUgcmVwbGFjZWQuCi0gICAgbGl2ZUNhbGxlZUxv
Y2Fscy5mb3JFYWNoU2V0Qml0KFsmXShzaXplX3QgaW5kZXgpIHsKLSAgICAgICAgZXhlYy0+dW5j
aGVja2VkUih2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChpbmRleCkpID0gbG9jYWxBdChpbmRleCku
Z2V0KCk7Ci0gICAgICAgIGxvY2FsQXQoaW5kZXgpLmNsZWFyKCk7Ci0gICAgfSk7Ci19Ci0KLXZv
aWQgR2VuZXJhdG9yRnJhbWU6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRv
ciYgdmlzaXRvcikKLXsKLSAgICBHZW5lcmF0b3JGcmFtZSogdGhpc09iamVjdCA9IGpzQ2FzdDxH
ZW5lcmF0b3JGcmFtZSo+KGNlbGwpOwotICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVj
dCwgdmlzaXRvcik7Ci0gICAgLy8gU2luY2Ugb25seSB0cnVlIGNlbGwgcG9pbnRlcnMgYXJlIHN0
b3JlZCBhcyBhIGNlbGwsIHdlIGNhbiBzYWZlbHkgbWFyayB0aGVtLgotICAgIHZpc2l0b3IuYXBw
ZW5kVmFsdWVzKHRoaXNPYmplY3QtPmxvY2FscygpLCB0aGlzT2JqZWN0LT5tX251bWJlck9mQ2Fs
bGVlTG9jYWxzKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGcmFtZS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJhbWUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggM2Q1NDViMTQ3ZGQ0YWJmYjJiYmI5YjVhNzE5NGU4Zjc0ODQxYzQ5YS4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9HZW5lcmF0b3JGcmFtZS5oCisrKyAvZGV2L251bGwKQEAgLTEsOTAgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBn
bWFpbC5jb20+LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
Ci0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgot
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIEdlbmVyYXRvckZyYW1lX2gKLSNkZWZpbmUg
R2VuZXJhdG9yRnJhbWVfaAotCi0jaW5jbHVkZSAiSlNDZWxsLmgiCi0jaW5jbHVkZSA8d3RmL0Zh
c3RCaXRWZWN0b3IuaD4KLQotbmFtZXNwYWNlIEpTQyB7Ci0KLWNsYXNzIEdlbmVyYXRvckZyYW1l
IDogcHVibGljIEpTQ2VsbCB7Ci0gICAgZnJpZW5kIGNsYXNzIEpJVDsKLSNpZiBFTkFCTEUoREZH
X0pJVCkKLSAgICBmcmllbmQgY2xhc3MgREZHOjpTcGVjdWxhdGl2ZUpJVDsKLSAgICBmcmllbmQg
Y2xhc3MgREZHOjpKSVRDb21waWxlcjsKLSNlbmRpZgotICAgIGZyaWVuZCBjbGFzcyBWTTsKLXB1
YmxpYzoKLSAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOwotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25l
ZCBTdHJ1Y3R1cmVGbGFncyA9IFN0cnVjdHVyZUlzSW1tb3J0YWwgfCBCYXNlOjpTdHJ1Y3R1cmVG
bGFnczsKLQotICAgIERFQ0xBUkVfRVhQT1JUX0lORk87Ci0KLSAgICBzdGF0aWMgR2VuZXJhdG9y
RnJhbWUqIGNyZWF0ZShWTSYsIHNpemVfdCBudW1iZXJPZkNhbGxlZUxvY2Fscyk7Ci0KLSAgICBX
cml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiBsb2NhbHMoKQotICAgIHsKLSAgICAgICAgcmV0dXJu
IGJpdHdpc2VfY2FzdDxXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+Kj4oYml0d2lzZV9jYXN0PGNo
YXIqPih0aGlzKSArIG9mZnNldE9mTG9jYWxzKCkpOwotICAgIH0KLQotICAgIFdyaXRlQmFycmll
ckJhc2U8VW5rbm93bj4mIGxvY2FsQXQoc2l6ZV90IGluZGV4KQotICAgIHsKLSAgICAgICAgQVNT
RVJUKGluZGV4IDwgbV9udW1iZXJPZkNhbGxlZUxvY2Fscyk7Ci0gICAgICAgIHJldHVybiBsb2Nh
bHMoKVtpbmRleF07Ci0gICAgfQotCi0gICAgc3RhdGljIHNpemVfdCBvZmZzZXRPZkxvY2Fscygp
Ci0gICAgewotICAgICAgICByZXR1cm4gV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mPHNpemVvZihX
cml0ZUJhcnJpZXI8VW5rbm93bj4pPihzaXplb2YoR2VuZXJhdG9yRnJhbWUpKTsKLSAgICB9Ci0K
LSAgICBzdGF0aWMgc2l6ZV90IGFsbG9jYXRpb25TaXplRm9yTG9jYWxzKHVuc2lnbmVkIG51bWJl
ck9mTG9jYWxzKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG9mZnNldE9mTG9jYWxzKCkgKyBudW1i
ZXJPZkxvY2FscyAqIHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pOwotICAgIH0KLQotICAg
IHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0Kiwg
SlNWYWx1ZSBwcm90b3R5cGUpOwotCi0gICAgdm9pZCBzYXZlKEV4ZWNTdGF0ZSosIGNvbnN0IEZh
c3RCaXRWZWN0b3ImIGxpdmVDYWxsZWVMb2NhbHMpOwotICAgIHZvaWQgcmVzdW1lKEV4ZWNTdGF0
ZSosIGNvbnN0IEZhc3RCaXRWZWN0b3ImIGxpdmVDYWxsZWVMb2NhbHMpOwotCi1wcml2YXRlOgot
ICAgIEdlbmVyYXRvckZyYW1lKFZNJiwgc2l6ZV90IG51bWJlck9mQ2FsbGVlTG9jYWxzKTsKLQot
ICAgIHNpemVfdCBtX251bWJlck9mQ2FsbGVlTG9jYWxzOwotCi0gICAgZnJpZW5kIGNsYXNzIExM
SW50T2Zmc2V0c0V4dHJhY3RvcjsKLQotICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKLQot
cHJvdGVjdGVkOgotICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZp
c2l0b3ImKTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEpTQwotCi0jZW5kaWYgLy8gR2VuZXJhdG9y
RnJhbWVfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCmluZGV4IDFiZGRjZWVkZDA5
MGNhMDlkZDUxY2EwNzk2YTA0ZGZkODZiZTQ0MmMuLjVmMzFiOTc4NWU2NmFjZTZiOThiYjY1MmNk
MjE3MjNkMjE1ZmE5MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1ZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKQEAgLTQ2
LDcgKzQ2LDYgQEAKICNpbmNsdWRlICJGVExUaHVua3MuaCIKICNpbmNsdWRlICJGdW5jdGlvbkNv
bnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiR0NBY3Rpdml0eUNhbGxiYWNrLmgiCi0jaW5jbHVkZSAi
R2VuZXJhdG9yRnJhbWUuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJI
ZWFwLmgiCiAjaW5jbHVkZSAiSGVhcEl0ZXJhdGlvblNjb3BlLmgiCkBAIC0yNDAsNyArMjM5LDYg
QEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgIGluZmVycmVk
VHlwZVN0cnVjdHVyZS5zZXQoKnRoaXMsIEluZmVycmVkVHlwZTo6Y3JlYXRlU3RydWN0dXJlKCp0
aGlzLCAwLCBqc051bGwoKSkpOwogICAgIGluZmVycmVkVHlwZVRhYmxlU3RydWN0dXJlLnNldCgq
dGhpcywgSW5mZXJyZWRUeXBlVGFibGU6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxs
KCkpKTsKICAgICBmdW5jdGlvblJhcmVEYXRhU3RydWN0dXJlLnNldCgqdGhpcywgRnVuY3Rpb25S
YXJlRGF0YTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwotICAgIGdlbmVy
YXRvckZyYW1lU3RydWN0dXJlLnNldCgqdGhpcywgR2VuZXJhdG9yRnJhbWU6OmNyZWF0ZVN0cnVj
dHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICBleGNlcHRpb25TdHJ1Y3R1cmUuc2V0KCp0
aGlzLCBFeGNlcHRpb246OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAg
ICBwcm9taXNlRGVmZXJyZWRTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBKU1Byb21pc2VEZWZlcnJlZDo6
Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIGludGVybmFsUHJvbWlz
ZURlZmVycmVkU3RydWN0dXJlLnNldCgqdGhpcywgSlNJbnRlcm5hbFByb21pc2VEZWZlcnJlZDo6
Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1ZNLmgKaW5kZXggZjBkZTE1MTM1YTkwNzg3OGI0N2ExZDM0MzRmNjgyOTFjYjVkYzczZS4u
NGZmOWVkZDBhNzc0NmMyOWU1ZTY3YzM4MWZjZTNiMjA3NDc5OTU0OSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTS5oCkBAIC0zMTYsNyArMzE2LDYgQEAgY2xhc3MgVk0gOiBwdWJsaWMgVGhy
ZWFkU2FmZVJlZkNvdW50ZWQ8Vk0+IHsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBpbmZlcnJlZFR5
cGVTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gaW5mZXJyZWRUeXBlVGFibGVTdHJ1
Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gZnVuY3Rpb25SYXJlRGF0YVN0cnVjdHVyZTsK
LSAgICBTdHJvbmc8U3RydWN0dXJlPiBnZW5lcmF0b3JGcmFtZVN0cnVjdHVyZTsKICAgICBTdHJv
bmc8U3RydWN0dXJlPiBleGNlcHRpb25TdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4g
cHJvbWlzZURlZmVycmVkU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGludGVybmFs
UHJvbWlzZURlZmVycmVkU3RydWN0dXJlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQtYXJyYXkuanMgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLWFuZC1hcnJheS5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5mZTkzOTgxMmZkYmFlYzZiODMyYmZkMDBmMjE1M2RlZjg0YmI3NTkyCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5l
cmF0b3ItZmliLWZ0bC1hbmQtYXJyYXkuanMKQEAgLTAsMCArMSwyMyBAQAorKGZ1bmN0aW9uICgp
IHsKKyAgICBmdW5jdGlvbiAqZmliKCkKKyAgICB7CisgICAgICAgIGxldCBhID0gMTsKKyAgICAg
ICAgbGV0IGIgPSAxOworICAgICAgICBsZXQgYyA9IFsgMCBdOworICAgICAgICB3aGlsZSAodHJ1
ZSkgeworICAgICAgICAgICAgY1swXSA9IGE7CisgICAgICAgICAgICB5aWVsZCBjOworICAgICAg
ICAgICAgW2EsIGJdID0gW2IsIGEgKyBiXTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGxldCB2
YWx1ZSA9IDA7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxZTQ7ICsraSkgeworICAgICAgICBs
ZXQgZiA9IGZpYigpOworICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDsgKytpKSB7Cisg
ICAgICAgICAgICB2YWx1ZSA9IGYubmV4dCgpLnZhbHVlOworICAgICAgICB9CisgICAgICAgIGlm
ICh2YWx1ZVswXSAhPT0gMzU0MjI0ODQ4MTc5MjYyMDAwMDAwKQorICAgICAgICAgICAgdGhyb3cg
bmV3IEVycm9yKGBiYWQgdmFsdWU6JHtyZXN1bHR9YCk7CisgICAgfQorfSgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwt
YW5kLW9iamVjdC5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJh
dG9yLWZpYi1mdGwtYW5kLW9iamVjdC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NjczNDBmMmVhNGM3NDM4YTJk
MjA5YWE0MGQwNjc3ZTRhYjdkM2ZiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQtb2JqZWN0LmpzCkBAIC0w
LDAgKzEsMjMgQEAKKyhmdW5jdGlvbiAoKSB7CisgICAgZnVuY3Rpb24gKmZpYigpCisgICAgewor
ICAgICAgICBsZXQgYSA9IDE7CisgICAgICAgIGxldCBiID0gMTsKKyAgICAgICAgbGV0IGMgPSB7
IGZpYjogMCB9OworICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAgYy5maWIgPSBh
OworICAgICAgICAgICAgeWllbGQgYzsKKyAgICAgICAgICAgIFthLCBiXSA9IFtiLCBhICsgYl07
CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQgdmFsdWUgPSAwOworICAgIGZvciAobGV0IGkg
PSAwOyBpIDwgMWU0OyArK2kpIHsKKyAgICAgICAgbGV0IGYgPSBmaWIoKTsKKyAgICAgICAgZm9y
IChsZXQgaSA9IDA7IGkgPCAxMDA7ICsraSkgeworICAgICAgICAgICAgdmFsdWUgPSBmLm5leHQo
KS52YWx1ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAodmFsdWUuZmliICE9PSAzNTQyMjQ4NDgx
NzkyNjIwMDAwMDApCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCB2YWx1ZToke3Jl
c3VsdH1gKTsKKyAgICB9Cit9KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQtc3RyaW5nLmpzIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQtc3RyaW5nLmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjQzOGFlNmFiMzM0NzA0NjgyMjg0OWY0MzAwNGVhNWM0MDNlZWRhMjgKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVy
YXRvci1maWItZnRsLWFuZC1zdHJpbmcuanMKQEAgLTAsMCArMSwyMiBAQAorKGZ1bmN0aW9uICgp
IHsKKyAgICBmdW5jdGlvbiAqZmliKCkKKyAgICB7CisgICAgICAgIGxldCBhID0gMTsKKyAgICAg
ICAgbGV0IGIgPSAxOworICAgICAgICBsZXQgYyA9ICJSZXN1bHQhICI7CisgICAgICAgIHdoaWxl
ICh0cnVlKSB7CisgICAgICAgICAgICB5aWVsZCBjICsgYTsKKyAgICAgICAgICAgIFthLCBiXSA9
IFtiLCBhICsgYl07CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQgdmFsdWUgPSAwOworICAg
IGZvciAobGV0IGkgPSAwOyBpIDwgMWU0OyArK2kpIHsKKyAgICAgICAgbGV0IGYgPSBmaWIoKTsK
KyAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDA7ICsraSkgeworICAgICAgICAgICAgdmFs
dWUgPSBmLm5leHQoKS52YWx1ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAodmFsdWUgIT09IGBS
ZXN1bHQhIDM1NDIyNDg0ODE3OTI2MjAwMDAwMGApCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoYGJhZCB2YWx1ZToke3Jlc3VsdH1gKTsKKyAgICB9Cit9KCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC5qcyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMzQwZTMzZGJjODY4YmVhN2E4OTNjOWVjMTZiNzc5ZWMyNmJkYjE5YwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9y
LWZpYi1mdGwuanMKQEAgLTAsMCArMSwyMSBAQAorKGZ1bmN0aW9uICgpIHsKKyAgICBmdW5jdGlv
biAqZmliKCkKKyAgICB7CisgICAgICAgIGxldCBhID0gMTsKKyAgICAgICAgbGV0IGIgPSAxOwor
ICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAgeWllbGQgYTsKKyAgICAgICAgICAg
IFthLCBiXSA9IFtiLCBhICsgYl07CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQgdmFsdWUg
PSAwOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMWU0OyArK2kpIHsKKyAgICAgICAgbGV0IGYg
PSBmaWIoKTsKKyAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDA7ICsraSkgeworICAgICAg
ICAgICAgdmFsdWUgPSBmLm5leHQoKS52YWx1ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAodmFs
dWUgIT09IDM1NDIyNDg0ODE3OTI2MjAwMDAwMCkKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJv
cihgYmFkIHZhbHVlOiR7cmVzdWx0fWApOworICAgIH0KK30oKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1mcmFtZS1lbXB0eS5qcyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZyYW1lLWVtcHR5
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjU5ZTg4NTViZmFjM2M1NmRmOTI2YWJkNDI4YzAxM2MzMzQxNjI3NDYK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dl
bmVyYXRvci1mcmFtZS1lbXB0eS5qcwpAQCAtMCwwICsxLDM0IEBACitmdW5jdGlvbiBzaG91bGRU
aHJvdyhmdW5jLCBlcnJvck1lc3NhZ2UpIHsKKyAgICB2YXIgZXJyb3JUaHJvd24gPSBmYWxzZTsK
KyAgICB2YXIgZXJyb3IgPSBudWxsOworICAgIHRyeSB7CisgICAgICAgIGZ1bmMoKTsKKyAgICB9
IGNhdGNoIChlKSB7CisgICAgICAgIGVycm9yVGhyb3duID0gdHJ1ZTsKKyAgICAgICAgZXJyb3Ig
PSBlOworICAgIH0KKyAgICBpZiAoIWVycm9yVGhyb3duKQorICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoJ25vdCB0aHJvd24nKTsKKyAgICBpZiAoU3RyaW5nKGVycm9yKSAhPT0gZXJyb3JNZXNzYWdl
KQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCBlcnJvcjogJHtTdHJpbmcoZXJyb3IpfWAp
OworfQorCitzaG91bGRUaHJvdyhmdW5jdGlvbiAoKSB7CisgICAgZnVuY3Rpb24gKmZpYihmbGFn
KQorICAgIHsKKyAgICAgICAgbGV0IGEgPSAxOworICAgICAgICBsZXQgYiA9IDE7CisgICAgICAg
IHlpZWxkIDQyOworICAgICAgICBpZiAoZmxhZykKKyAgICAgICAgICAgIHJldHVybiBjOworICAg
ICAgICBsZXQgYyA9IDUwMDsKKyAgICB9CisKKyAgICBsZXQgdmFsdWUgPSAwOworICAgIGZvciAo
bGV0IGkgPSAwOyBpIDwgMWU0OyArK2kpIHsKKyAgICAgICAgZm9yIChsZXQgdiBvZiBmaWIoZmFs
c2UpKSB7CisgICAgICAgIH0KKyAgICB9CisgICAgZm9yIChsZXQgdiBvZiBmaWIodHJ1ZSkpIHsK
KyAgICB9Cit9LCBgUmVmZXJlbmNlRXJyb3I6IENhbm5vdCBhY2Nlc3MgdW5pbml0aWFsaXplZCB2
YXJpYWJsZS5gKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJl
c3MvZ2VuZXJhdG9yLXJlZHVjZWQtc2F2ZS1wb2ludC1wdXQtdG8tc2NvcGUuanMgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1yZWR1Y2VkLXNhdmUtcG9pbnQt
cHV0LXRvLXNjb3BlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMwYzc1ZmE0OTE0M2MxN2JlMTRmMzI4MWUzZjY1
NDM0ZjM1MTM5ZTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dHMvc3RyZXNzL2dlbmVyYXRvci1yZWR1Y2VkLXNhdmUtcG9pbnQtcHV0LXRvLXNjb3BlLmpzCkBA
IC0wLDAgKzEsMjggQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAg
ICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQg
dmFsdWU6ICR7U3RyaW5nKGFjdHVhbCl9YCk7Cit9CisKK2Z1bmN0aW9uIGVycm9yKCkKK3sKKyAg
ICB0aHJvdyAib2siOworfQorCitmdW5jdGlvbiogZ2VuKCkKK3sKKyAgICB2YXIgdmFsdWUgPSA0
MjsKKyAgICB0cnkgeworICAgICAgICB5aWVsZCAzMDA7CisgICAgICAgIHZhbHVlID0gNTAwOwor
ICAgICAgICBlcnJvcigpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgeWllbGQgNDI7Cisg
ICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICB9CisgICAgcmV0dXJuIDIwMDsKK30KKwordmFyIGcg
PSBnZW4oKTsKK3Nob3VsZEJlKGcubmV4dCgpLnZhbHVlLCAzMDApOworc2hvdWxkQmUoZy5uZXh0
KCkudmFsdWUsIDQyKTsKK3Nob3VsZEJlKGcubmV4dCgpLnZhbHVlLCA1MDApOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItdHJhbnNmZXIt
cmVnaXN0ZXItYmV5b25kLW11dGlwbGUteWllbGRzLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItdHJhbnNmZXItcmVnaXN0ZXItYmV5b25kLW11dGlwbGUt
eWllbGRzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZlMjA4ZjU4MTI5NmY5YWUwOGE2YmZiMzk4YjQ4MjI1NzQy
ZDZiNzgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3Ry
ZXNzL2dlbmVyYXRvci10cmFuc2Zlci1yZWdpc3Rlci1iZXlvbmQtbXV0aXBsZS15aWVsZHMuanMK
QEAgLTAsMCArMSwxOCBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgewor
ICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2Jh
ZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKKworZnVuY3Rpb24gKmdlbigpCit7CisgICAgdmFy
IHRlc3QgPSA0MjsKKyAgICB5aWVsZCAzMjsKKyAgICB5aWVsZCAzMzsKKyAgICB5aWVsZCB0ZXN0
OworfQorCit2YXIgZyA9IGdlbigpOworc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIDMyKTsKK3No
b3VsZEJlKGcubmV4dCgpLnZhbHVlLCAzMyk7CitzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgNDIp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRmFzdEJpdFZlY3Rvci5oIGIvU291cmNlL1dU
Ri93dGYvRmFzdEJpdFZlY3Rvci5oCmluZGV4IDk4ZmZmNWNmNzM1M2U2YmM2N2RhNWM1NTk0MGNj
Y2U0ZTRiMTU2ZDAuLmZmMDBiN2I1NGQ0YTBjZmY0YmVmN2QwMzg1NGRlNmI5MGNlMWRiOTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0Zhc3RCaXRWZWN0b3IuaAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9GYXN0Qml0VmVjdG9yLmgKQEAgLTIzLDggKzIzLDcgQEAKICAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAog
ICovCiAKLSNpZm5kZWYgRmFzdEJpdFZlY3Rvcl9oCi0jZGVmaW5lIEZhc3RCaXRWZWN0b3JfaAor
I3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlIDxzdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvRmFzdE1h
bGxvYy5oPgpAQCAtMzYsMTIgKzM1LDE0IEBAIGNsYXNzIFByaW50U3RyZWFtOwogCiBjbGFzcyBG
YXN0Qml0VmVjdG9yIHsKIHB1YmxpYzoKLSAgICBGYXN0Qml0VmVjdG9yKCkKLSAgICAgICAgOiBt
X2FycmF5KDApCi0gICAgICAgICwgbV9udW1CaXRzKDApCisgICAgRmFzdEJpdFZlY3RvcigpID0g
ZGVmYXVsdDsKKworICAgIEZhc3RCaXRWZWN0b3IoRmFzdEJpdFZlY3RvciYmIG90aGVyKQorICAg
ICAgICA6IG1fYXJyYXkoc3RkOjpleGNoYW5nZShvdGhlci5tX2FycmF5LCBudWxscHRyKSkKKyAg
ICAgICAgLCBtX251bUJpdHMoc3RkOjpleGNoYW5nZShvdGhlci5tX251bUJpdHMsIDApKQogICAg
IHsKICAgICB9Ci0gICAgCisKICAgICBGYXN0Qml0VmVjdG9yKGNvbnN0IEZhc3RCaXRWZWN0b3Im
IG90aGVyKQogICAgICAgICA6IG1fYXJyYXkoMCkKICAgICAgICAgLCBtX251bUJpdHMoMCkKQEAg
LTIwMiwxMyArMjAzLDEwIEBAIGNsYXNzIEZhc3RCaXRWZWN0b3IgewogICAgIHN0YXRpYyBzaXpl
X3QgYXJyYXlMZW5ndGgoc2l6ZV90IG51bUJpdHMpIHsgcmV0dXJuIChudW1CaXRzICsgMzEpID4+
IDU7IH0KICAgICBzaXplX3QgYXJyYXlMZW5ndGgoKSBjb25zdCB7IHJldHVybiBhcnJheUxlbmd0
aChtX251bUJpdHMpOyB9CiAgICAgCi0gICAgdWludDMyX3QqIG1fYXJyYXk7IC8vIE5vLCB0aGlz
IGNhbid0IGJlIGFuIHN0ZDo6dW5pcXVlX3B0cjx1aW50MzJfdFtdPi4KLSAgICBzaXplX3QgbV9u
dW1CaXRzOworICAgIHVpbnQzMl90KiBtX2FycmF5IHsgbnVsbHB0ciB9OyAvLyBObywgdGhpcyBj
YW4ndCBiZSBhbiBzdGQ6OnVuaXF1ZV9wdHI8dWludDMyX3RbXT4uCisgICAgc2l6ZV90IG1fbnVt
Qml0cyB7IDAgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdURgogCiB1c2luZyBXVEY6OkZhc3RC
aXRWZWN0b3I7Ci0KLSNlbmRpZiAvLyBGYXN0Qml0VmVjdG9yX2gKLQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>284001</attachid>
            <date>2016-07-19 06:46:11 -0700</date>
            <delta_ts>2016-07-20 05:36:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-152723-20160719224514.patch</filename>
            <type>text/plain</type>
            <size>189543</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAzMzMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
MTYzZWNlZjExYjQ1NDUxMzNmZjcxYTA1NzcwYmZkOTA4NzI5NTY5Li5hMTQyNjdhYjk1NTY5NDNi
NjE1NWJkMzc0ZDVlOWEyZjE1OTFmNWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNTEgQEAKKzIwMTYtMDctMTkgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0RGR11bRlRMXSBJbXBsZW1lbnQgRVM2IEdlbmVyYXRvcnMgaW4g
REZHIC8gRlRMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNTI3MjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUaGlzIHBhdGNoIGludHJvZHVjZXMgREZHIGFuZCBGVEwgc3VwcG9ydCBmb3IgRVM2IGdlbmVy
YXRvcnMuCisgICAgICAgIEVTNiBnZW5lcmF0b3IgaXMgY29tcGlsZWQgYnkgdGhlIEJ5dGVjb2Rl
R2VuZXJhdG9yLiBCdXQgYXQgdGhlIGxhc3QgcGhhc2UsIEJ5dGVjb2RlR2VuZXJhdG9yIHBlcmZv
cm1zICJnZW5lcmF0b3JpZmljYXRpb24iIG9udG8gdGhlIHVubGlua2VkIGNvZGUuCisgICAgICAg
IEluIEJ5dGVjb2RlR2VuZXJhdG9yIHBoYXNlLCB3ZSBpbnNlcnRlZCBzZXZlcmFsIHNwZWNpYWwg
bWFya2VycyBmb3IgdGhlIGdlbmVyYXRvcnMsIG9wX3NhdmUgYW5kIG9wX3Jlc3VtZS4KKyAgICAg
ICAgVGhlIG9wX3NhdmUsIG9wX3Jlc3VtZSwgYW5kIHRoZSBtZXJnZSBwb2ludCBibG9jayBhcmUg
Y29ubmVjdGVkIGFzIGZvbGxvd3MuCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBvcF9yZXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBeCisgICAgICAgIGVudHJ5IC0+IGdlbmVyYXRvciBzd2l0Y2ggLS0tLT4gb3Bfc2F2ZSAtPiBt
ZXJnZSBwb2ludCAtPiAuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBeCisgICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0t
LT4gb3BfcmVzdW1lIC0tLS0tKworCisgICAgICAgIEluIHRoZSBnZW5lcmF0b3JpZmljYXRpb24g
cGhhc2UsIHdlIHR1cm4gb3V0IHdoaWNoIHZhcmlhYmxlcyBzaG91bGQgYmUgc2F2ZWQgYW5kIHJl
c3VtZWQgYXQgZWFjaCBvcF9zYXZlIGFuZCBvcF9yZXN1bWUsIGFuZCBjb252ZXJ0IHRoZXNlIGJ5
dGVjb2RlcworICAgICAgICB0byB0aGUgc2VxdWVuY2VzIG9mIHRoZSBnZXRfZnJvbV9zY29wZSBh
bmQgcHV0X3RvX3Njb3BlLiBUaGUgcmVnaXN0ZXJzIGFyZSBzYXZlZCBhbmQgcmVzdW1lZCBvdmVy
IHRoZSBnZW5lcmF0b3IncyBuZXh0KCkgY2FsbHMgYnkgdXNpbmcgdGhpcyBzcGVjaWFsCisgICAg
ICAgIGdlbmVyYXRvciBmcmFtZSBzY29wZS4KKworICAgICAgICBJbiB0aGUgZ2VuZXJhdG9yaWZp
Y2F0aW9uIHBoYXNlLAorCisgICAgICAgIDEuIFdlIGNvbnN0cnVjdCB0aGUgQnl0ZWNvZGVHcmFw
aCBmcm9tIHRoZSB1bmlua2VkIGluc3RydWN0aW9ucy4gVGhpcyBjb25zdHJ1Y3RzIHRoZSBiYXNp
YyBibG9ja3MsIGFuZCBpdCBpcyB1c2VkIGluIHRoZSBzdWJzZXF1ZW50IGFuYWx5c2lzLgorICAg
ICAgICAyLiBXZSBwZXJmb3JtIHRoZSBhbmFseXNpcyBvbnRvIHRoZSB1bmxpbmtlZCBjb2RlLiBX
ZSBoYXZlIDMgYW5hbHlzaXM6IHRoZSBsaXZlbmVzcyBhbmFseXNpcywgdGhlIHJlc3VtZWQgdmFy
aWFibGVzIGFuYWx5c2lzLCBhbmQgdGhlIHNhdmVkIHZhcmlhYmxlcyBhbmFseXNpcy4KKyAgICAg
ICAgICAgRmlyc3QsIGluIHRoZSBsaXZlbmVzcyBhbmFseXNpcywgd2UgZXh0cmFjdCB0aGUgbGl2
ZSB2YXJpYWJsZXMgYXQgZWFjaCBtZXJnZSBwb2ludC4gVGhlc2UgdmFyaWFibGVzIHNob3VsZCBi
ZSBjb25zaWRlcmVkIGFzIHRoZSBjb25zZXJ2YXRpdmUgcmVnaXN0ZXJzCisgICAgICAgICAgIHRv
IGJlIHNhdmVkIGFuZCByZXN1bWVkIGF0IGVhY2ggcG9pbnQuCisgICAgICAgIDMuIFNlY29uZCwg
d2UgcGVyZm9ybSB0aGUgbGl2ZW5lc3MgYW5hbHlzaXMgYWdhaW4sIGJ1dCBhdCB0aGF0IHRpbWUs
IHdlIGV4cGxpY2l0bHkgaWdub3JlIHRoZSBlZGdlcyBiZXR3ZWVuIHRoZSBzYXZlIHBvaW50cyBh
bmQgdGhlIG1lcmdlIHBvaW50cy4gVGhpcyBhbmFseXNpcywKKyAgICAgICAgICAgcmVmZXJyZWQg
dG8gYXMgdGhlIHJlc3VtZWQgdmFyaWFibGVzIGFuYWx5c2lzLCBleHRyYWN0cyB0aGUgbGl2ZW5l
c3MgYXQgbWVyZ2UgcG9pbnQuIFRoaXMgbGl2ZW5lc3MgaW5mb3JtYXRpb24gb25seSBjb25zaWRl
cnMgdGhlIHJlYWNoYWJsZSBibG9ja3MgZnJvbSB0aGUKKyAgICAgICAgICAgdGFyZ2V0IG9wX3Jl
c3VtZS4gU28sIHRoaXMgcmVnaXN0ZXIgc2V0IHJlcHJlc2VudHMgdGhhdCB3aGljaCBzYXZlZCBy
ZWdpc3RlcnMgdGhlIHJlYWNoYWJsZSBibG9ja3MgdXNlLiBXZSBjb25zaWRlciB0aGVzZSByZWdp
c3RlcnMgYXMgdGhlIHJlZ2lzdGVycyB0byBiZSByZXN1bWVkCisgICAgICAgICAgIGhlcmUuIFRo
ZSByZXN1bHQgcmVnaXN0ZXIgc2V0IGlzIHNtYWxsZXIgdGhhbiB0aGUgc2V0IHdoaWNoIGlzIGV4
dHJhY3RlZCBpbiB0aGUgcHJldmlvdXMgbGl2ZW5lc3MgYW5hbHlzaXMuCisgICAgICAgIDQuIFRo
aXJkLCB3ZSBkcml2ZSB0aGUgZm9yd2FyZCBhbmFseXNpcywgY2FsbGVkIHRoZSBzYXZlZCB2YXJp
YWJsZXMgYW5hbHlzaXMuIEF0IG9wX3NhdmUsIHdlIHNob3VsZCBzYXZlIHRoZSB2YXJpYWJsZXMg
dGhhdCAoaSkgd2lsbCBiZSB1c2VkIGFmdGVyIHRoZSBtZXJnZSBwb2ludAorICAgICAgICAgICBh
bmQgKGlpKSB0aGUgbmV3bHkgZGVmaW5lZCB2YXJpYWJsZXMgZnJvbSB0aGUgcHJldmlvdXMgb3Bf
cmVzdW1lLiBTbywgd2UgcHJvcGFnYXRlIHRoZSBkZWZzIGFuZCBjb2xsZWN0IHRoZSBuZXdseSBk
ZWZpbmVkIHJlZ2lzdGVycyBhdCB0aGUgb3Bfc2F2ZSBwb2ludCBpbiB0aGUgZ3JhcGgKKyAgICAg
ICAgICAgd2hpY2ggZHJvcHMgdGhlIGVkZ2VzIGJldHdlZW4gdGhlIHNhdmUgcG9pbnRzIGFuZCB0
aGUgbWVyZ2UgcG9pbnRzLiBUaGlzIHJlc3VsdCByZXByZXNlbnRzIChpaSkuIFNvIHRoZW4sIHdl
IGZpbHRlciB0aGUgbGl2ZSB2YXJpYWJsZXMgKGkpIChnYWluZWQgaW4gKDIpKSBhdCB0aGUgbWVy
Z2UKKyAgICAgICAgICAgcG9pbnQgd2l0aCB0aGlzIG5ld2x5IGRlZi1lZCByZWdpc3RlcnMgYml0
IG1hc2soaWkpLgorICAgICAgICA1LiBXZSBpbnNlcnQgdGhlIGdldF9mcm9tX3Njb3BlIGFuZCBw
dXRfdG9fc2NvcGUgYXQgZWFjaCBvcF9zYXZlIGFuZCBvcF9yZXN1bWUuIFdoaWNoIHJlZ2lzdGVy
cyBzaG91bGQgYmUgc2F2ZWQgYW5kIHJlc3VtZWQgaXMgb2ZmZXJlZCBieSAoMykgYW5kICg0KS4K
KyAgICAgICAgICAgVGhlbiwgY2xpcCB0aGUgb3Bfc2F2ZSBhbmQgb3BfcmVzdW1lIHRoZW1zZWx2
ZXMuIFRoZXkgYXJlIGV4ZWN1dGVkIGluIGEgYmF0Y2ggbWFubmVyIGJ5IEJ5dGVjb2RlTW9kaWZp
Y2F0aW9uU2V0LiBTaW5jZSB0aGVzZSBtb2RpZmljYXRpb24gY2hhbmdlcyB0aGUgYmFzaWMgYmxv
Y2tzCisgICAgICAgICAgIGFuZCBzaXplIG9mIHVubGlua2VkIGluc3RydWN0aW9ucywgQnl0ZWNv
ZGVNb2RpZmljYXRpb25TZXQgYWxzbyBwZXJmb3JtcyB0aGUgb2Zmc2V0IGFkanVzdG1lbnQgZm9y
IFVubGlua2VkQ29kZUJsb2NrLiBTbywgdGhpcyBCeXRlY29kZU1vZGlmaWNhdGlvblNldCBpcyBw
ZXJmb3JtZWQKKyAgICAgICAgICAgb250byB0aGUgQnl0ZWNvZGVHcmFwaCBpbnN0ZWFkIG9mIEJ5
dGVjb2RlQmFzaWNCbG9jay4gVGhlIHJlYXNvbiB3aHkgd2UgdGFrZSB0aGlzIGRlc2lnbiBpcyBz
aW1wbGU6IHdlIGRvbid0IHdhbnQgdG8gbmV3bHkgY3JlYXRlIHRoZSBiYXNpYyBibG9ja3MgYW5k
IG9wY29kZXMKKyAgICAgICAgICAgZm9yIHRoaXMgZWFybHkgcGhhc2UgbGlrZSBERkcuIEluc3Rl
YWQsIHdlIHBlcmZvcm0gdGhlIG1vZGlmaWNhdGlvbiBhbmQgYWRqdXN0bWVudCB0byB0aGUgdW5s
aW5rZWQgaW5zdHJ1Y3Rpb25zIGFuZCBVbmxpbmtlZENvZGVCbG9jayBpbiBhIGluLXBsYWNlIG1h
bm5lci4KKworICAgICAgICBBZnRlciB0aGF0IHBoYXNlLCB0aGUgZGF0YSBmbG93IG9mIHRoZSBn
ZW5lcmF0b3Itc2F2ZWQtYW5kLXJlc3VtZWQtcmVnaXN0ZXJzIGFyZSBleHBsaWNpdGx5IHJlcHJl
c2VudGVkIGJ5IHRoZSBnZXRfZnJvbV9zY29wZSBhbmQgcHV0X3RvX3Njb3BlLgorICAgICAgICBB
bmQgb3Bfc2F2ZSBhbmQgb3BfcmVzdW1lIGFyZSByZW1vdmVkLiBTaW5jZSB3ZSB1c2UgdGhlIGV4
aXN0aW5nIGJ5dGVjb2RlcywgREZHIGFuZCBGVEwgY2hhbmdlcyBhcmUgbm90IG5lY2Vzc2FyeS4K
KworICAgICAgICBDb21waWxpbmcgRVM2IGdlbmVyYXRvcnMgaW4gREZHIGFuZCBGVEwgZ2l2ZXMg
dXMgc2lnbmlmaWNhbnQgcGVyZm9ybWFuY2UgaW1wcm92ZW1lbnRzLgorICAgICAgICBJbiB4NjQg
TGludXggYm94IChoYW5heWFtYXRhKSwgdGhlIHJlc3VsdCBvZiBKU0NPbmx5IHBvcnQgaXMgdGhl
IGZvbGxvd2luZ3MuCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYmFzZWxpbmUgICAgICAgICAgICAgICAgICAgcGF0Y2gKKworICAgICAg
ICAgICAgZ2VuZXJhdG9yLWZpYiAgICAgICAgICAgICAgICAgICAgICAgICAgMTAzLjI1NDMrLTMu
OTk3OCAgICAgXiAgICAgMzYuNDE0OCstMC44NDAyICAgICAgICBeIGRlZmluaXRlbHkgMi44MzU1
eCBmYXN0ZXIKKyAgICAgICAgICAgIGdlbmVyYXRvci13aXRoLXNldmVyYWwtdHlwZXMgICAgICAg
ICAgIDM0Mi41MDA5Ky0yNS4xNjAyICAgIF4gICAgMTMyLjE3MTArLTE3LjExMjkgICAgICAgXiBk
ZWZpbml0ZWx5IDIuNTkxM3ggZmFzdGVyCisgICAgICAgICAgICBnZW5lcmF0b3Itc3Vuc3BpZGVy
LWFjY2Vzcy1uc2lldmUgICAgICAgIDUuOTgxNistMC4xMDgyICAgICBeICAgICAgNS4xNzgwKy0w
LjIzODggICAgICAgIF4gZGVmaW5pdGVseSAxLjE1NTJ4IGZhc3RlcgorCisKKyAgICAgICAgSW4g
eDY0IE9TIFggbGFwdG9wLCB0aGUgcmVzdWx0cyBvZiBFUzZTYW1wbGVCZW5jaCBhcmUgdGhlIGZv
bGxvd2luZ3MuCisgICAgICAgIFRoZSBFUzYgQmFzaWMgYmVuY2htYXJrIHNob3cgdGhhdCB0aGUg
cGVyZm9ybWFuY2Ugb2YgdGhlIHBhdGNoZWQgb25lIGlzIDMzJSBmYXN0ZXIgdGhhbiB0aGUgcGVy
Zm9ybWFuY2Ugb2YgdGhlIGJhc2VsaW5lLgorCisgICAgICAgICAgICBCYXNlbGluZToKKyAgICAg
ICAgICAgICAgICBHZW9tZXRyaWMgTWVhbiBSZXN1bHQ6IDE4MS44MyBtcyDCsSA0LjgyIG1zCisK
KyAgICAgICAgICAgICAgICBCZW5jaG1hcmsgICAgRmlyc3QgSXRlcmF0aW9uICAgICAgIFdvcnN0
IDIlICAgICAgICAgICAgICBTdGVhZHkgU3RhdGUKKyAgICAgICAgICAgICAgICBBaXIgICAgICAg
ICAgNzAuNzQgbXMgwrEgNi41NSBtcyAgICAzNC43NCBtcyDCsSAxLjY1IG1zICAgIDI5ODkuMDYg
bXMgwrEgMzQuNDUgbXMKKyAgICAgICAgICAgICAgICBCYXNpYyAgICAgICAgNDAuMDMgbXMgwrEg
MS45NiBtcyAgICAyOC41MCBtcyDCsSAwLjYwIG1zICAgIDQzNDIuOTEgbXMgwrEgNjQuMTAgbXMK
KworICAgICAgICAgICAgUGF0Y2hlZDoKKyAgICAgICAgICAgICAgICBHZW9tZXRyaWMgTWVhbiBS
ZXN1bHQ6IDE2OC4xNCBtcyDCsSAxLjM5IG1zCisKKyAgICAgICAgICAgICAgICBCZW5jaG1hcmsg
ICAgRmlyc3QgSXRlcmF0aW9uICAgICAgIFdvcnN0IDIlICAgICAgICAgICAgICBTdGVhZHkgU3Rh
dGUKKyAgICAgICAgICAgICAgICBBaXIgICAgICAgICAgNjguNjcgbXMgwrEgMC44MiBtcyAgICAz
NS42MiBtcyDCsSAwLjMyIG1zICAgIDMwNjUuODkgbXMgwrEgNTUuNTkgbXMKKyAgICAgICAgICAg
ICAgICBCYXNpYyAgICAgICAgMzguNjEgbXMgwrEgMS42NSBtcyAgICAyMy45NyBtcyDCsSAwLjM4
IG1zICAgIDMyNjIuNDYgbXMgwrEgNzQuMTIgbXMKKworICAgICAgICAqIENNYWtlTGlzdHMudHh0
OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogYnVpbHRpbnMvR2VuZXJhdG9yUHJvdG90eXBlLmpzOgorICAgICAgICAoZ2xvYmFs
UHJpdmF0ZS5nZW5lcmF0b3JSZXN1bWUpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlQmFz
aWNCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlQmFzaWNCbG9jazo6Y29tcHV0ZUJ5
dGVjb2RlQmFzaWNCbG9ja3NJbnRlcm5hbCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlQmFzaWNC
bG9jazo6Y29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MpOgorICAgICAgICAoSlNDOjpsaW5rQmxv
Y2tzKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Y29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3Mp
OiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5oOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUJhc2ljQmxvY2s6OmJ5dGVjb2RlT2Zmc2V0cyk6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlQmFzaWNCbG9jazo6c3VjY2Vzc29ycyk6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlQmFzaWNCbG9jazo6cHJlZGVjZXNzb3JzKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVC
YXNpY0Jsb2NrOjppbmRleCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlQmFzaWNCbG9jazo6YWRk
U3VjY2Vzc29yKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVCYXNpY0Jsb2NrOjphZGRQcmVkZWNl
c3Nvcik6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3Bw
OiBBZGRlZC4KKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb246OkJ5dGVj
b2RlR2VuZXJhdG9yaWZpY2F0aW9uKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3Jp
ZmljYXRpb246OmlzTWVyZ2VCbG9jayk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9y
aWZpY2F0aW9uOjppc1NhdmVCbG9jayk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9y
aWZpY2F0aW9uOjpncmFwaCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0
aW9uOjpzdG9yYWdlRm9yR2VuZXJhdG9yTG9jYWwpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JM
aXZlbmVzc0FuYWx5c2lzOjpHZW5lcmF0b3JMaXZlbmVzc0FuYWx5c2lzKToKKyAgICAgICAgKEpT
Qzo6R2VuZXJhdG9yTGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0ZUxpdmVuZXNzRGVmc0ZvckJ5dGVj
b2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yTGl2ZW5lc3NBbmFseXNpczo6Y29t
cHV0ZUxpdmVuZXNzVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6R2VuZXJh
dG9yTGl2ZW5lc3NBbmFseXNpczo6c3RlcE92ZXJJbnN0cnVjdGlvbkZvckxpdmVuZXNzKToKKyAg
ICAgICAgKEpTQzo6R2VuZXJhdG9yTGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0ZUxvY2FsTGl2ZW5l
c3NGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckxpdmVuZXNzQW5h
bHlzaXM6OmNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQmxvY2spOgorICAgICAgICAoSlNDOjpHZW5l
cmF0b3JMaXZlbmVzc0FuYWx5c2lzOjpnZXRMaXZlbmVzc0luZm9BdEJ5dGVjb2RlT2Zmc2V0KToK
KyAgICAgICAgKEpTQzo6R2VuZXJhdG9yTGl2ZW5lc3NBbmFseXNpczo6cnVuKToKKyAgICAgICAg
KEpTQzo6UmVzdW1lZFZhcmlhYmxlc0FuYWx5c2lzOjpSZXN1bWVkVmFyaWFibGVzQW5hbHlzaXMp
OgorICAgICAgICAoSlNDOjpSZXN1bWVkVmFyaWFibGVzQW5hbHlzaXM6OmdldFJlc3VtZWRWYXJp
YWJsZXNJbmZvQXRCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OlJlc3VtZWRWYXJpYWJs
ZXNBbmFseXNpczo6cnVuKToKKyAgICAgICAgKEpTQzo6U2F2ZWRWYXJpYWJsZXNBbmFseXNpczo6
U2F2ZWRWYXJpYWJsZXNBbmFseXNpcyk6CisgICAgICAgIChKU0M6OlNhdmVkVmFyaWFibGVzQW5h
bHlzaXM6OnN0ZXBPdmVySW5zdHJ1Y3Rpb25Gb3JTYXZlZFZhcmlhYmxlcyk6CisgICAgICAgIChK
U0M6OlNhdmVkVmFyaWFibGVzQW5hbHlzaXM6OmNvbXB1dGVMb2NhbFNhdmVkVmFyaWFibGVzRm9y
Qnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpTYXZlZFZhcmlhYmxlc0FuYWx5c2lzOjpj
b21wdXRlTG9jYWxTYXZlZFZhcmlhYmxlc0ZvckJsb2NrKToKKyAgICAgICAgKEpTQzo6U2F2ZWRW
YXJpYWJsZXNBbmFseXNpczo6Z2V0U2F2ZWRWYXJpYWJsZXNJbmZvQXRCeXRlY29kZU9mZnNldCk6
CisgICAgICAgIChKU0M6OlNhdmVkVmFyaWFibGVzQW5hbHlzaXM6OnJ1bik6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uOjpydW4pOgorICAgICAgICAoSlNDOjpwZXJm
b3JtR2VuZXJhdG9yaWZpY2F0aW9uKToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUdlbmVy
YXRvcmlmaWNhdGlvbi5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzSW5saW5lcy5oLgorICAgICAgICAqIGJ5dGVjb2Rl
L0J5dGVjb2RlR3JhcGguaDogQWRkZWQuCisgICAgICAgIChKU0M6OkJ5dGVjb2RlR3JhcGg6OmNv
ZGVCbG9jayk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR3JhcGg6OmJhc2ljQmxvY2tzKToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVHcmFwaDo6aW5zdHJ1Y3Rpb25zKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHcmFwaDo6YmFzaWNCbG9ja3NJblJldmVyc2VPcmRlcik6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlR3JhcGg6OmJsb2NrQ29udGFpbnNCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlR3JhcGg6OmZpbmRCYXNpY0Jsb2NrRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUdyYXBoOjpmaW5kQmFzaWNCbG9ja1dpdGhMZWFkZXJPZmZzZXQp
OgorICAgICAgICAoSlNDOjpCeXRlY29kZUdyYXBoPEJsb2NrPjo6Qnl0ZWNvZGVHcmFwaCk6Cisg
ICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNwcDoKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMp
OgorICAgICAgICAoSlNDOjpzdGVwT3Zlckluc3RydWN0aW9uKToKKyAgICAgICAgKEpTQzo6Y29t
cHV0ZUxvY2FsTGl2ZW5lc3NGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OmNvbXB1
dGVMb2NhbExpdmVuZXNzRm9yQmxvY2spOgorICAgICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNz
QW5hbHlzaXM6OnJ1bkxpdmVuZXNzRml4cG9pbnQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUxp
dmVuZXNzQW5hbHlzaXM6OmdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQpOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGVGdWxsTGl2ZW5lc3MpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGVLaWxscyk6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6ZHVtcFJlc3VsdHMpOgorICAg
ICAgICAoSlNDOjppc1ZhbGlkUmVnaXN0ZXJGb3JMaXZlbmVzcyk6IERlbGV0ZWQuCisgICAgICAg
IChKU0M6OmdldExlYWRlck9mZnNldEZvckJhc2ljQmxvY2spOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjpmaW5kQmFzaWNCbG9ja1dpdGhMZWFkZXJPZmZzZXQpOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjpibG9ja0NvbnRhaW5zQnl0ZWNvZGVPZmZzZXQpOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpmaW5kQmFzaWNCbG9ja0ZvckJ5dGVjb2RlT2Zmc2V0KTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlKTogRGVsZXRlZC4KKyAgICAgICAg
KiBieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuaDoKKyAgICAgICAgKiBieXRlY29k
ZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OmlzVmFs
aWRSZWdpc3RlckZvckxpdmVuZXNzKToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZU1vZGlm
aWNhdGlvblNldC5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpCeXRlY29kZU1vZGlmaWNhdGlv
blNldDo6YWRqdXN0T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVNb2RpZmljYXRpb25T
ZXQ6OmFwcGx5TW9kaWZpY2F0aW9uKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVNb2RpZmljYXRp
b25TZXQ6OmV4ZWN1dGUpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTW9kaWZpY2F0aW9u
U2V0Lmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpCeXRlY29kZU1vZGlmaWNhdGlvblNldDo6Qnl0
ZWNvZGVNb2RpZmljYXRpb25TZXQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZU1vZGlmaWNhdGlv
blNldDo6aW5zZXJ0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVNb2RpZmljYXRpb25TZXQ6OnJl
bW92ZUJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVNb2RpZmljYXRpb25TZXQ6Omdy
YXBoKToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZVVzZURlZi5oOgorICAgICAgICAoSlND
Ojpjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZURl
ZnNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoK
KyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6
OkNvZGVCbG9jazo6aGFuZGxlckZvckluZGV4KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjps
aXZlbmVzc0FuYWx5c2lzU2xvdyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZHVtcEJ5dGVj
b2RlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpzaHJpbmtUb0ZpdCk6IERl
bGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6OkNv
ZGVCbG9jazo6aXNDb25zdGFudFJlZ2lzdGVySW5kZXgpOgorICAgICAgICAoSlNDOjpDb2RlQmxv
Y2s6OmxpdmVuZXNzQW5hbHlzaXMpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmxpdmVDYWxs
ZWVMb2NhbHNBdFlpZWxkKTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29kZS9IYW5kbGVySW5m
by5oOgorICAgICAgICAoSlNDOjpIYW5kbGVySW5mb0Jhc2U6OmhhbmRsZXJGb3JJbmRleCk6Cisg
ICAgICAgICogYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmNwcDoKKyAgICAgICAgKEpTQzo6
Z2V0SnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OmNvbXB1dGVQ
cmVjaXNlSnVtcFRhcmdldHNJbnRlcm5hbCk6CisgICAgICAgIChKU0M6OmNvbXB1dGVQcmVjaXNl
SnVtcFRhcmdldHMpOgorICAgICAgICAoSlNDOjpyZWNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMp
OgorICAgICAgICAoSlNDOjpmaW5kSnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldCk6CisgICAg
ICAgICogYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmg6CisgICAgICAgICogYnl0ZWNvZGUv
VW5saW5rZWRDb2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6
aGFuZGxlckZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxv
Y2s6OmhhbmRsZXJGb3JJbmRleCk6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjph
cHBseU1vZGlmaWNhdGlvbik6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2su
aDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRTdHJpbmdKdW1wVGFibGU6Om9mZnNldEZvclZhbHVl
KToKKyAgICAgICAgKiBieXRlY29kZS9WaXJ0dWFsUmVnaXN0ZXIuaDoKKyAgICAgICAgKiBieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdl
bmVyYXRvcjo6Z2VuZXJhdGUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Qnl0
ZWNvZGVHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENv
bXBsZXhQb3BTY29wZXMpOgorICAgICAgICAoSlNDOjpwcmVwYXJlSnVtcFRhYmxlRm9yU3RyaW5n
U3dpdGNoKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRZaWVsZFBvaW50
KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRTYXZlKToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXN1bWUpOgorICAgICAgICAqIGJ5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRv
cjo6Z2VuZXJhdG9yRnJhbWVSZWdpc3Rlcik6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMu
Y3BwOgorICAgICAgICAqIGdlbmVyYXRlLWJ5dGVjb2RlLWZpbGVzOgorICAgICAgICAqIGludGVy
cHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpTQzo6ZmluZEV4Y2VwdGlvbkhhbmRs
ZXIpOgorICAgICAgICAoSlNDOjpHZXRDYXRjaEhhbmRsZXJGdW5jdG9yOjpvcGVyYXRvcigpKToK
KyAgICAgICAgKEpTQzo6VW53aW5kRnVuY3Rvcjo6b3BlcmF0b3IoKSk6CisgICAgICAgICogaW50
ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaDoKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRl
cklubGluZXMuaDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1By
ZWNpc2VKdW1wVGFyZ2V0cy5oLgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6Z2V0T3Bjb2Rl
SUQpOgorICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVD
b21waWxlTWFpblBhc3MpOiBEZWxldGVkLgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAg
KiBqaXQvSklUT3Bjb2Rlcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9zYXZlKTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3Jlc3VtZSk6IERlbGV0ZWQuCisg
ICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc206CisgICAgICAgICogcGFyc2Vy
L1BhcnNlci5jcHA6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUlubmVy
KToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlR2VuZXJhdG9yRnVuY3Rp
b25Tb3VyY2VFbGVtZW50cyk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpjcmVh
dGVHZW5lcmF0b3JQYXJhbWV0ZXJzKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmg6CisgICAg
ICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpTTE9XX1BB
VEhfREVDTCk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuaDoK
KyAgICAgICAgKiBydW50aW1lL0dlbmVyYXRvckZyYW1lLmNwcDogUmVtb3ZlZC4KKyAgICAgICAg
KEpTQzo6R2VuZXJhdG9yRnJhbWU6OkdlbmVyYXRvckZyYW1lKTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6R2VuZXJhdG9yRnJhbWU6OmZpbmlzaENyZWF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6R2VuZXJhdG9yRnJhbWU6OmNyZWF0ZVN0cnVjdHVyZSk6IERlbGV0ZWQuCisgICAgICAg
IChKU0M6OkdlbmVyYXRvckZyYW1lOjpjcmVhdGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpH
ZW5lcmF0b3JGcmFtZTo6c2F2ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkdlbmVyYXRvckZy
YW1lOjpyZXN1bWUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6dmlz
aXRDaGlsZHJlbik6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9HZW5lcmF0b3JGcmFtZS5o
OiBSZW1vdmVkLgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6bG9jYWxzKTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OmxvY2FsQXQpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6b2Zmc2V0T2ZMb2NhbHMpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6YWxsb2NhdGlvblNpemVGb3JMb2NhbHMpOiBEZWxl
dGVkLgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6Vk0pOiBE
ZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3Mv
Z2VuZXJhdG9yLWZpYi1mdGwtYW5kLWFycmF5LmpzOiBBZGRlZC4KKyAgICAgICAgKGZpYik6Cisg
ICAgICAgICogdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLWFuZC1vYmplY3QuanM6IEFk
ZGVkLgorICAgICAgICAoZmliKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZp
Yi1mdGwtYW5kLXN0cmluZy5qczogQWRkZWQuCisgICAgICAgIChmaWIpOgorICAgICAgICAqIHRl
c3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC5qczogQWRkZWQuCisgICAgICAgIChmaWIpOgor
ICAgICAgICAqIHRlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZnJhbWUtZW1wdHkuanM6IEFkZGVkLgor
ICAgICAgICAoc2hvdWxkVGhyb3cpOgorICAgICAgICAoc2hvdWxkVGhyb3cuZmliKToKKyAgICAg
ICAgKiB0ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXJlZHVjZWQtc2F2ZS1wb2ludC1wdXQtdG8tc2Nv
cGUuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoZ2VuKToKKyAgICAg
ICAgKiB0ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXRyYW5zZmVyLXJlZ2lzdGVyLWJleW9uZC1tdXRp
cGxlLXlpZWxkcy5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgIChnZW4p
OgorCiAyMDE2LTA3LTE3ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgog
CiAgICAgICAgIFtKU0NdIEVuYWJsZSB0ZXN0MjYyIG1vZHVsZSB0ZXN0cwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCBhZjU4YmM0
ZDQwOTQ1YjliYWU0ZTlkMmMzNjM2ZjczMDkyMGRiZjgwLi5hN2UwMTIwZjhjYWZmOTIwOTZiZDJi
MWE4ODczNDUwMDEyZTVlMWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE2LTA3LTE5ICBZdXN1
a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtERkddW0ZUTF0g
SW1wbGVtZW50IEVTNiBHZW5lcmF0b3JzIGluIERGRyAvIEZUTAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUyNzIzCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvRmFzdEJpdFZlY3Rvci5oOgorICAg
ICAgICAoV1RGOjpGYXN0Qml0VmVjdG9yOjpGYXN0Qml0VmVjdG9yKToKKwogMjAxNi0wNy0xNyAg
TXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFN1cHBv
cnQgbmV3IGVtb2ppIGdyb3VwIGNhbmRpZGF0ZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3Rz
LnR4dAppbmRleCBjNDk3N2RhZmUyYWU1OGQxNzQ1MjgwNTlhZGM5NzkyNzJkMTg5MzdlLi42ZDk0
YjY5NzMwZDcyZjRiNTZkYzkxZDI0NzNiNWMyNjU1NmMzY2M3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NNYWtlTGlzdHMudHh0CkBAIC0xNzgsNiArMTc4LDggQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NP
VVJDRVMKICAgICBieXRlY29kZS9BcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcAogICAgIGJ5dGVj
b2RlL0FycmF5UHJvZmlsZS5jcHAKICAgICBieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suY3Bw
CisgICAgYnl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwCisgICAgYnl0ZWNv
ZGUvQnl0ZWNvZGVNb2RpZmljYXRpb25TZXQuY3BwCiAgICAgYnl0ZWNvZGUvQnl0ZWNvZGVJbnRy
aW5zaWNSZWdpc3RyeS5jcHAKICAgICBieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMu
Y3BwCiAgICAgYnl0ZWNvZGUvQ2FsbEVkZ2UuY3BwCkBAIC02NTUsNyArNjU3LDYgQEAgc2V0KEph
dmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBydW50aW1lL0Z1bmN0aW9uSGFzRXhlY3V0ZWRDYWNo
ZS5jcHAKICAgICBydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcAogICAgIHJ1bnRpbWUvRnVu
Y3Rpb25SYXJlRGF0YS5jcHAKLSAgICBydW50aW1lL0dlbmVyYXRvckZyYW1lLmNwcAogICAgIHJ1
bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKICAgICBydW50aW1lL0dlbmVy
YXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcAogICAgIHJ1bnRpbWUvR2VuZXJhdG9yUHJvdG90eXBl
LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBiNjhhOTZiMWI0ZjY5MzgxODI4
YjE2YThmOThjNDVhOWRkYWJmMWU5Li40YzA2MjQ2ZjE2MWY4ZGYzZTgxNjc2ZTk4NzYzZTkxMzBm
YWY0MGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTI1Miw4ICsxMjUyLDYg
QEAKIAkJNzA5RkI4NkMxQUUzMzVDNjAwMzlEMDY5IC8qIFdlYWtTZXRQcm90b3R5cGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwOUZCODY2MUFFMzM1
QzYwMDM5RDA2OSAvKiBXZWFrU2V0UHJvdG90eXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzBCMEE5RDExQTlCNjY0NjAwMDEzMDZBIC8qIFJ1
bnRpbWVGbGFncy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNzBCMEE5RDAxQTlCNjYyMDAwMDEzMDZBIC8qIFJ1bnRpbWVGbGFncy5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcwQjc5MTkxMUMwMjRBMTMw
MDI0ODFFMiAvKiBTb3VyY2VDb2RlS2V5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3MEI3OTE4RTFDMDI0NEM5MDAyNDgxRTIgLyogU291cmNlQ29kZUtl
eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTcw
Qjc5MTkyMUMwMjRBMjMwMDI0ODFFMiAvKiBHZW5lcmF0b3JGcmFtZS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEI3OTE4MzFDMDI0NDMyMDAyNDgx
RTIgLyogR2VuZXJhdG9yRnJhbWUuY3BwICovOyB9OwotCQk3MEI3OTE5MzFDMDI0QTI4MDAyNDgx
RTIgLyogR2VuZXJhdG9yRnJhbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDcwQjc5MTg0MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGcmFtZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcwQjc5
MTk0MUMwMjRBMjgwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwQjc5MTg1MUMw
MjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCAqLzsgfTsK
IAkJNzBCNzkxOTUxQzAyNEEyODAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0
b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwQjc5
MTg2MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzBCNzkxOTYx
QzAyNEEyODAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwQjc5MTg3MUMwMjQ0MzIw
MDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5jcHAgKi87IH07CkBAIC0yMDIy
LDYgKzIwMjAsMTEgQEAKIAkJRTE4RTNBNTkwREY5Mjc4QzAwRDkwQjM0IC8qIFZNLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxOEUzQTU3MERGOTI3
OEMwMEQ5MEIzNCAvKiBWTS5jcHAgKi87IH07CiAJCUUzMThDQkMwMUI4QUVGNTEwMEEyOTI5RCAv
KiBKU01vZHVsZU5hbWVzcGFjZU9iamVjdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFMzE4Q0JCRTFCOEFFRjUxMDBBMjkyOUQgLyogSlNNb2R1bGVO
YW1lc3BhY2VPYmplY3QuY3BwICovOyB9OwogCQlFMzE4Q0JDMTFCOEFFRjUxMDBBMjkyOUQgLyog
SlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEUzMThDQkJGMUI4QUVGNTEwMEEyOTI5RCAvKiBKU01vZHVsZU5hbWVz
cGFjZU9iamVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCUUzMjhEQUU3MUQzOEQwMDQwMDFBMjUyOSAvKiBCeXRlY29kZUdlbmVyYXRvcmlmaWNh
dGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
M0QyNjQyNjFEMzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3Bw
ICovOyB9OworCQlFMzI4REFFODFEMzhEMDA1MDAxQTI1MjkgLyogQnl0ZWNvZGVHZW5lcmF0b3Jp
ZmljYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUzRDI2NDI3MUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUUzMjhE
QUU5MUQzOEQwMDUwMDFBMjUyOSAvKiBCeXRlY29kZUdyYXBoLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0QyNjQyODFEMzhDMDQyMDAwQkUxNzQgLyog
Qnl0ZWNvZGVHcmFwaC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCUUzMjhEQUVBMUQzOEQwMDUwMDFBMjUyOSAvKiBCeXRlY29kZU1vZGlmaWNhdGlv
blNldC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
M0QyNjQyOTFEMzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNvZGVNb2RpZmljYXRpb25TZXQuY3BwICov
OyB9OworCQlFMzI4REFFQjFEMzhEMDA1MDAxQTI1MjkgLyogQnl0ZWNvZGVNb2RpZmljYXRpb25T
ZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzRDI2
NDJBMUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRlY29kZU1vZGlmaWNhdGlvblNldC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzMzYzN0E1MUI2MzIy
MDIwMEVFMDg0MCAvKiBSZWZsZWN0T2JqZWN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMzYzN0EzMUI2MzIyMDIwMEVFMDg0MCAvKiBSZWZsZWN0
T2JqZWN0LmNwcCAqLzsgfTsKIAkJRTMzNjM3QTYxQjYzMjIwMjAwRUUwODQwIC8qIFJlZmxlY3RP
YmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUz
MzYzN0E0MUI2MzIyMDIwMEVFMDg0MCAvKiBSZWZsZWN0T2JqZWN0LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTMzQjNFMjYxQjdBQkQ3NTAwNDhE
QjJFIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5sdXQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzM0IzRTI1MUI3QUJENzUwMDQ4REIy
RSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QubHV0LmggKi87IH07CkBAIC0yMDQ2
LDYgKzIwNDksNyBAQAogCQlFMzc5NEU3NTFCNzdFQjk3MDA1NTQzQUUgLyogTW9kdWxlQW5hbHl6
ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM3
OTRFNzMxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmNwcCAqLzsgfTsKIAkJRTM3
OTRFNzYxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzc5NEU3NDFCNzdFQjk3MDA1NTQzQUUg
LyogTW9kdWxlQW5hbHl6ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlFMzk2M0NFRTFCNzNGNzUwMDBFQjRDRTUgLyogTm9kZXNBbmFseXplTW9k
dWxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUz
OTYzQ0VDMUI3M0Y3NTAwMEVCNENFNSAvKiBOb2Rlc0FuYWx5emVNb2R1bGUuY3BwICovOyB9Owor
CQlFMzlENDVGNTFEMzkwMDU2MDBCM0IzNzcgLyogSW50ZXJwcmV0ZXJJbmxpbmVzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzlEOUQ4NDFEMzkwMDA2
MDA2NjcyODIgLyogSW50ZXJwcmV0ZXJJbmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM5REE0QTYxQjdFOEI3QzAwODRGMzNBIC8qIEpT
TW9kdWxlUmVjb3JkLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEUzOURBNEE0MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29yZC5jcHAgKi87
IH07CiAJCUUzOURBNEE3MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29yZC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5REE0QTUxQjdFOEI3
QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTNEMjM5QzgxQjgyOUMxQzAwQkJFRjY3IC8qIEpTTW9k
dWxlRW52aXJvbm1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTNEMjM5QzYxQjgyOUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxlRW52aXJvbm1lbnQu
Y3BwICovOyB9OwpAQCAtMzQ0NSw4ICszNDQ5LDYgQEAKIAkJNzA5RkI4NjUxQUUzMzVDNjAwMzlE
MDY5IC8qIFdlYWtTZXRQcm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gV2Vha1NldFByb3RvdHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTcwOUZCODY2MUFFMzM1QzYwMDM5RDA2OSAvKiBXZWFrU2V0UHJvdG90eXBlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYWtTZXRQcm90b3R5cGUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzBCMEE5RDAxQTlCNjYyMDAwMDEzMDZBIC8qIFJ1bnRpbWVG
bGFncy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSdW50aW1lRmxhZ3MuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNzBCNzkxODMxQzAyNDQzMjAwMjQ4MUUyIC8q
IEdlbmVyYXRvckZyYW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEdlbmVyYXRvckZyYW1lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNzBCNzkx
ODQxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZyYW1lLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEdlbmVyYXRvckZyYW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTcwQjc5MTg1MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0
cnVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdlbmVyYXRv
ckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
MEI3OTE4NjFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0
cnVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcwQjc5MTg3MUMwMjQ0MzIw
MDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00MjgyLDEwICs0Mjg0LDE2IEBACiAJCUUzNzk0
RTczMUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFseXplci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNb2R1bGVBbmFseXplci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUUzNzk0RTc0MUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFseXpl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb2R1bGVBbmFseXplci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzk2M0NFQzFCNzNGNzUwMDBFQjRDRTUgLyog
Tm9kZXNBbmFseXplTW9kdWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IE5vZGVzQW5hbHl6ZU1vZHVsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUUzOUQ5RDg0MUQzOTAwMDYwMDY2NzI4MiAvKiBJbnRlcnByZXRlcklubGluZXMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW50ZXJwcmV0ZXJJbmxpbmVzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOURBNEE0MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVs
ZVJlY29yZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU01vZHVs
ZVJlY29yZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOURBNEE1MUI3RThC
N0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29yZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBKU01vZHVsZVJlY29yZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlF
M0QyMzlDNjFCODI5QzFDMDBCQkVGNjcgLyogSlNNb2R1bGVFbnZpcm9ubWVudC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU01vZHVsZUVudmlyb25tZW50LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNEMjM5QzcxQjgyOUMxQzAwQkJFRjY3IC8q
IEpTTW9kdWxlRW52aXJvbm1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SlNNb2R1bGVFbnZpcm9ubWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFM0Qy
NjQyNjFEMzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQnl0ZWNvZGVHZW5lcmF0b3JpZmlj
YXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFM0QyNjQyNzFEMzhDMDQy
MDAwQkUxNzQgLyogQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTNEMjY0MjgxRDM4QzA0MjAwMEJFMTc0IC8qIEJ5dGVjb2Rl
R3JhcGguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnl0ZWNvZGVHcmFwaC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFM0QyNjQyOTFEMzhDMDQyMDAwQkUxNzQg
LyogQnl0ZWNvZGVNb2RpZmljYXRpb25TZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gQnl0ZWNvZGVNb2RpZmljYXRpb25TZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlFM0QyNjQyQTFEMzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNvZGVNb2RpZmlj
YXRpb25TZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnl0ZWNvZGVNb2Rp
ZmljYXRpb25TZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNFRjg4NzIxQjY2
REYyMzAwM0YyNkNCIC8qIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzRUY4ODczMUI2NkRGMjMwMDNGMjZDQiAvKiBKU1By
b3BlcnR5TmFtZUl0ZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpT
UHJvcGVydHlOYW1lSXRlcmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTQ5
REMxNDkxMkVGMjYxQTAwMTg0QTFGIC8qIFNvdXJjZVByb3ZpZGVyQ2FjaGVJdGVtLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNvdXJjZVByb3ZpZGVyQ2FjaGVJdGVtLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00OTk4LDYgKzUwMDYsNyBAQAogCQkxNDI5RDc3
QTBFRDIwRDczMDBCODk2MTkgLyogaW50ZXJwcmV0ZXIgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91
cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUUzOUQ5RDg0MUQzOTAwMDYwMDY2NzI4MiAvKiBJbnRl
cnByZXRlcklubGluZXMuaCAqLywKIAkJCQkwRjU1RjBGMTE0RDEwNjM2MDBBQzc2NDkgLyogQWJz
dHJhY3RQQy5jcHAgKi8sCiAJCQkJMEY1NUYwRjIxNEQxMDYzNjAwQUM3NjQ5IC8qIEFic3RyYWN0
UEMuaCAqLywKIAkJCQkxNDI5RDg1QjBFRDIxOEU5MDBCODk2MTkgLyogQ0xvb3BTdGFjay5jcHAg
Ki8sCkBAIC01NjY3LDggKzU2NzYsNiBAQAogCQkJCUY2OTJBODVEMDI1NTU5N0QwMUZGNjBGNyAv
KiBGdW5jdGlvblByb3RvdHlwZS5oICovLAogCQkJCTYyRDJEMzhEMUFERjEwM0YwMDAyMDZDMSAv
KiBGdW5jdGlvblJhcmVEYXRhLmNwcCAqLywKIAkJCQk2MkQyRDM4RTFBREYxMDNGMDAwMjA2QzEg
LyogRnVuY3Rpb25SYXJlRGF0YS5oICovLAotCQkJCTcwQjc5MTgzMUMwMjQ0MzIwMDI0ODFFMiAv
KiBHZW5lcmF0b3JGcmFtZS5jcHAgKi8sCi0JCQkJNzBCNzkxODQxQzAyNDQzMjAwMjQ4MUUyIC8q
IEdlbmVyYXRvckZyYW1lLmggKi8sCiAJCQkJNzBCNzkxODUxQzAyNDQzMjAwMjQ4MUUyIC8qIEdl
bmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwICovLAogCQkJCTcwQjc5MTg2MUMwMjQ0MzIw
MDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmggKi8sCiAJCQkJNzBCNzkx
ODcxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcCAqLywK
QEAgLTY1NTAsNiArNjU1NywxMSBAQAogCQk5NjlBMDc4RjBFRDFEM0FFMDBGMUY2ODEgLyogYnl0
ZWNvZGUgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUUz
RDI2NDI2MUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHAg
Ki8sCisJCQkJRTNEMjY0MjcxRDM4QzA0MjAwMEJFMTc0IC8qIEJ5dGVjb2RlR2VuZXJhdG9yaWZp
Y2F0aW9uLmggKi8sCisJCQkJRTNEMjY0MjgxRDM4QzA0MjAwMEJFMTc0IC8qIEJ5dGVjb2RlR3Jh
cGguaCAqLywKKwkJCQlFM0QyNjQyOTFEMzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNvZGVNb2RpZmlj
YXRpb25TZXQuY3BwICovLAorCQkJCUUzRDI2NDJBMUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRlY29k
ZU1vZGlmaWNhdGlvblNldC5oICovLAogCQkJCTUzNzBCNEYzMUJGMjVFQTIwMDVDNDBGQyAvKiBB
ZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnRCYXNlLmNwcCAqLywKIAkJCQk1
MzcwQjRGNDFCRjI1RUEyMDA1QzQwRkMgLyogQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVX
YXRjaHBvaW50QmFzZS5oICovLAogCQkJCTBGODMzNUI0MTYzOUMxRTMwMDE0NDNCNSAvKiBBcnJh
eUFsbG9jYXRpb25Qcm9maWxlLmNwcCAqLywKQEAgLTcxMDQsNiArNzExNiw3IEBACiAJCQkJMEZF
Qzg1MkQxQkRBQ0RBQzAwODBGRjc0IC8qIEIzUHJvY2VkdXJlSW5saW5lcy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEZFQzg1QkQxQkUxNDYyRjAwODBGRjc0IC8qIEIzUmVkdWNlU3RyZW5ndGguaCBp
biBIZWFkZXJzICovLAogCQkJCTBGRUM4NTMxMUJEQUNEQUMwMDgwRkY3NCAvKiBCM1N0YWNrbWFw
U3BlY2lhbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTMyOERBRTgxRDM4RDAwNTAwMUEyNTI5IC8q
IEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVDODUz
NTFCREFDREFDMDA4MEZGNzQgLyogQjNTbG90QmFzZVZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRkVDODUzNjFCREFDREFDMDA4MEZGNzQgLyogQjNTdWNjZXNzb3JDb2xsZWN0aW9uLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRkVDODUzODFCREFDREFDMDA4MEZGNzQgLyogQjNTd2l0Y2hDYXNl
LmggaW4gSGVhZGVycyAqLywKQEAgLTczNjQsNyArNzM3Nyw2IEBACiAJCQkJQTczNzgxMEUxNzk5
RUEyRTAwODE3NTMzIC8qIERGR05hdHVyYWxMb29wcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZF
Q0EzRUExMzJERUYxQzAwMkIyQUQ3IC8qIERGR05vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
RkI5MjFCMTZEMDJGMDEwMDU1QTVEQiAvKiBERkdOb2RlQWxsb2NhdG9yLmggaW4gSGVhZGVycyAq
LywKLQkJCQk3MEI3OTE5MzFDMDI0QTI4MDAyNDgxRTIgLyogR2VuZXJhdG9yRnJhbWUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGQTU4MUJCMTUwRTk1MzAwMEI5QTJEOSAvKiBERkdOb2RlRmxhZ3Mu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGMzAwQjc4MThBQjA1MTEwMEE2RDcyRSAvKiBERkdOb2Rl
T3JpZ2luLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkE1ODFCQzE1MEU5NTMwMDBCOUEyRDkgLyog
REZHTm9kZVR5cGUuaCBpbiBIZWFkZXJzICovLApAQCAtNzM3OSw2ICs3MzkxLDcgQEAKIAkJCQkw
RkQ4QTMyNjE3RDUxRjU3MDBDQTJDNDAgLyogREZHT1NSRW50cnlwb2ludENyZWF0aW9uUGhhc2Uu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGQzA5NzZBMTQ2OEE2RjcwMENGMjQ0MiAvKiBERkdPU1JF
eGl0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjIzNUJFQzE3MTc4RTczMDA2OTBDN0YgLyogREZH
T1NSRXhpdEJhc2UuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzOUQ0NUY1MUQzOTAwNTYwMEIzQjM3
NyAvKiBJbnRlcnByZXRlcklubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRkI5MjFDMTZE
MDJGMTEwMDU1QTVEQiAvKiBERkdPU1JFeGl0Q29tcGlsYXRpb25JbmZvLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRkMwOTc3MTE0NjkzQUY1MDBDRjI0NDIgLyogREZHT1NSRXhpdENvbXBpbGVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRjcwMjVBQTE3MTRCMEZDMDAzODJDMEUgLyogREZHT1NSRXhp
dENvbXBpbGVyQ29tbW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTc2MzYsNiArNzY0OSw3IEBACiAJ
CQkJRTMzQjNFMjYxQjdBQkQ3NTAwNDhEQjJFIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9i
amVjdC5sdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1MzI0MzhDMTg1NjgzMzUwMDJFRDY5MiAv
KiBJbnNwZWN0b3JQcm90b2NvbE9iamVjdHMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1NUQ5M0FD
MTg1MTRGNzkwMDQwMERFRCAvKiBJbnNwZWN0b3JQcm90b2NvbFR5cGVzLmggaW4gSGVhZGVycyAq
LywKKwkJCQlFMzI4REFFQjFEMzhEMDA1MDAxQTI1MjkgLyogQnl0ZWNvZGVNb2RpZmljYXRpb25T
ZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1MEU0QjYyMTg4MDlERDUwMDY4QTQ2RCAvKiBJbnNw
ZWN0b3JSdW50aW1lQWdlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1OTNDRjgzMTg0MDM3NzEw
MEJGQ0UyNyAvKiBJbnNwZWN0b3JWYWx1ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTk2OUEwNzk5
MEVEMUQzQUUwMEYxRjY4MSAvKiBJbnN0cnVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCkBAIC03NzY0
LDYgKzc3NzgsNyBAQAogCQkJCUUzM0Y1MDgxMUI4NDI5QTQwMDQxMzg1NiAvKiBKU0ludGVybmFs
UHJvbWlzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY2MTgzMkExQzQ1QkYwNzAwNzI0NTBCIC8q
IEFpckNDYWxsaW5nQ29udmVudGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTMzRjUwNzkxQjg0
MjI1NzAwNDEzODU2IC8qIEpTSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJz
ICovLAorCQkJCUUzMjhEQUU5MUQzOEQwMDUwMDFBMjUyOSAvKiBCeXRlY29kZUdyYXBoLmggaW4g
SGVhZGVycyAqLywKIAkJCQlFMzNGNTA4NzFCODQ0OUVGMDA0MTM4NTYgLyogSlNJbnRlcm5hbFBy
b21pc2VDb25zdHJ1Y3Rvci5sdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUUzM0Y1MDg1MUI4NDM3
QTAwMDQxMzg1NiAvKiBKU0ludGVybmFsUHJvbWlzZURlZmVycmVkLmggaW4gSGVhZGVycyAqLywK
IAkJCQlFMzNGNTA3NTFCODQyMUMwMDA0MTM4NTYgLyogSlNJbnRlcm5hbFByb21pc2VQcm90b3R5
cGUuaCBpbiBIZWFkZXJzICovLApAQCAtODcwNSw2ICs4NzIwLDcgQEAKIAkJCQkxNDdGMzlCRDEw
N0VDMzc2MDA0MjdBNDggLyogQXJnTGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjc0M0JB
QTE2Qjg4MjQ5MDA5RjkyNzcgLyogQVJNNjREaXNhc3NlbWJsZXIuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJODZEM0IyQzMxMDE1NkJERTAwMjg2NUU3IC8qIEFSTUFzc2VtYmxlci5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQlFMzI4REFFNzFEMzhEMDA0MDAxQTI1MjkgLyogQnl0ZWNvZGVHZW5lcmF0
b3JpZmljYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNjVDMDI4NTAxNzE3OTVFMjAwMzUx
RTM1IC8qIEFSTXY3RGlzYXNzZW1ibGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTY1QzAyODVD
MTcxNzk2NjgwMDM1MUUzNSAvKiBBUk12N0RPcGNvZGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MEY4MzM1QjcxNjM5QzFFNjAwMTQ0M0I1IC8qIEFycmF5QWxsb2NhdGlvblByb2ZpbGUuY3BwIGlu
IFNvdXJjZXMgKi8sCkBAIC05MDM5LDYgKzkwNTUsNyBAQAogCQkJCTBGMjVGMUIxMTgxNjM1RjMw
MDUyMkYzOSAvKiBGVExTbG93UGF0aENhbGwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYzMzhE
RjExQkU5M0FEMTAwMTNDODhGIC8qIEIzU3RhY2ttYXBWYWx1ZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkwRjI1RjFCMzE4MTYzNUYzMDA1MjJGMzkgLyogRlRMU2xvd1BhdGhDYWxsS2V5LmNwcCBp
biBTb3VyY2VzICovLAorCQkJCUUzMjhEQUVBMUQzOEQwMDUwMDFBMjUyOSAvKiBCeXRlY29kZU1v
ZGlmaWNhdGlvblNldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MzE5REEwMzFDMUJFNDBBMDAx
RDI2MEIgLyogQjNMb3dlck1hY3Jvc0FmdGVyT3B0aW1pemF0aW9ucy5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwRkVBMEExNjE3MDZCQjkwMDBCQjcyMkMgLyogRlRMU3RhdGUuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMEYyMzVCRTExNzE3OEUxQzAwNjkwQzdGIC8qIEZUTFRodW5rcy5jcHAgaW4g
U291cmNlcyAqLywKQEAgLTk0NDAsNyArOTQ1Nyw2IEBACiAJCQkJNzlFRTBCRkYxQjRBRkI4NTAw
MDM4NUM5IC8qIFZhcmlhYmxlRW52aXJvbm1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY2
QzczNTAxQUM5Rjk5RjAwQkUxNjgyIC8qIFZhcmlhYmxlV3JpdGVGaXJlRGV0YWlsLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTBGRTA1MDJDMUFBOTA5NTYwMEQzM0IzMyAvKiBWYXJPZmZzZXQuY3Bw
IGluIFNvdXJjZXMgKi8sCi0JCQkJNzBCNzkxOTIxQzAyNEEyMzAwMjQ4MUUyIC8qIEdlbmVyYXRv
ckZyYW1lLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMjBDMjU5MUE4MDEzQUIwMERBMzIyOSAv
KiBWaXJ0dWFsUmVnaXN0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTE4RTNBNTkwREY5Mjc4
QzAwRDkwQjM0IC8qIFZNLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZFNTkzMkE3MTgzQzVBMjYw
MEExRUNDQyAvKiBWTUVudHJ5U2NvcGUuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvR2VuZXJhdG9yUHJvdG90eXBlLmpzIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0dlbmVyYXRvclByb3RvdHlwZS5qcwppbmRleCAz
YzE0MDY4N2RmYzdlMDBlZmU5MWFlODBiMmFjNjc2ZmE5YmY0OGY0Li40OTlkYmQzOTJlODMxM2Rj
ZGQ4NmVjOGMxNjA1NjlkN2Q2ZjU0OWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnVpbHRpbnMvR2VuZXJhdG9yUHJvdG90eXBlLmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9idWlsdGlucy9HZW5lcmF0b3JQcm90b3R5cGUuanMKQEAgLTUxLDcgKzUxLDcgQEAgZnVu
Y3Rpb24gZ2VuZXJhdG9yUmVzdW1lKGdlbmVyYXRvciwgc2VudFZhbHVlLCByZXN1bWVNb2RlKQog
ICAgIH0gZWxzZSB7CiAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICBnZW5lcmF0b3IuQGdlbmVy
YXRvclN0YXRlID0gQEdlbmVyYXRvclN0YXRlRXhlY3V0aW5nOwotICAgICAgICAgICAgdmFsdWUg
PSBnZW5lcmF0b3IuQGdlbmVyYXRvck5leHQuQGNhbGwoZ2VuZXJhdG9yLkBnZW5lcmF0b3JUaGlz
LCBnZW5lcmF0b3IsIHN0YXRlLCBzZW50VmFsdWUsIHJlc3VtZU1vZGUpOworICAgICAgICAgICAg
dmFsdWUgPSBnZW5lcmF0b3IuQGdlbmVyYXRvck5leHQuQGNhbGwoZ2VuZXJhdG9yLkBnZW5lcmF0
b3JUaGlzLCBnZW5lcmF0b3IsIHN0YXRlLCBzZW50VmFsdWUsIHJlc3VtZU1vZGUsIGdlbmVyYXRv
ci5AZ2VuZXJhdG9yRnJhbWUpOwogICAgICAgICAgICAgaWYgKGdlbmVyYXRvci5AZ2VuZXJhdG9y
U3RhdGUgPT09IEBHZW5lcmF0b3JTdGF0ZUV4ZWN1dGluZykgewogICAgICAgICAgICAgICAgIGdl
bmVyYXRvci5AZ2VuZXJhdG9yU3RhdGUgPSBAR2VuZXJhdG9yU3RhdGVDb21wbGV0ZWQ7CiAgICAg
ICAgICAgICAgICAgZG9uZSA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suY3BwCmluZGV4IDdmMTdjMGVmMTBiNDMzZmFj
OGY1OGNiM2I5Y2E1ZDRkMDE1YmJhMDguLjYyNTRmOTA2YjJiZDkwNGQxZDkzZmE5MDI0Y2M5M2E5
MDc0NjhiNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZUJhc2ljQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZUJhc2ljQmxvY2suY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiQnl0ZWNv
ZGVCYXNpY0Jsb2NrLmgiCiAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJJbnRl
cnByZXRlcklubGluZXMuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiUHJl
Y2lzZUp1bXBUYXJnZXRzLmgiCiAKQEAgLTEwNSwxNSArMTA2LDIxIEBAIHN0YXRpYyBib29sIGlz
SnVtcFRhcmdldChPcGNvZGVJRCBvcGNvZGVJRCwgY29uc3QgVmVjdG9yPHVuc2lnbmVkLCAzMj4m
IGp1bXBUYXJnCiAgICAgcmV0dXJuIHN0ZDo6YmluYXJ5X3NlYXJjaChqdW1wVGFyZ2V0cy5iZWdp
bigpLCBqdW1wVGFyZ2V0cy5lbmQoKSwgYnl0ZWNvZGVPZmZzZXQpOwogfQogCi1zdGF0aWMgdm9p
ZCBsaW5rQmxvY2tzKEJ5dGVjb2RlQmFzaWNCbG9jayogcHJlZGVjZXNzb3IsIEJ5dGVjb2RlQmFz
aWNCbG9jayogc3VjY2Vzc29yKQotewotICAgIHByZWRlY2Vzc29yLT5hZGRTdWNjZXNzb3Ioc3Vj
Y2Vzc29yKTsKLX0KLQotdm9pZCBjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2NrcyhDb2RlQmxvY2sq
IGNvZGVCbG9jaywgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYg
YmFzaWNCbG9ja3MpCit0ZW1wbGF0ZTx0eXBlbmFtZSBCbG9jaywgdHlwZW5hbWUgSW5zdHJ1Y3Rp
b24+Cit2b2lkIEJ5dGVjb2RlQmFzaWNCbG9jazo6Y29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3NJ
bnRlcm5hbChCbG9jayogY29kZUJsb2NrLCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4s
IHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQsIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNv
ZGVCYXNpY0Jsb2NrPj4mIGJhc2ljQmxvY2tzKQogewogICAgIFZlY3Rvcjx1bnNpZ25lZCwgMzI+
IGp1bXBUYXJnZXRzOwotICAgIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMoY29kZUJsb2NrLCBq
dW1wVGFyZ2V0cyk7CisgICAgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhjb2RlQmxvY2ssIGlu
c3RydWN0aW9uc0JlZ2luLCBpbnN0cnVjdGlvbkNvdW50LCBqdW1wVGFyZ2V0cyk7CisKKyAgICBh
dXRvIGFwcGVuZEJsb2NrID0gWyZdIChzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2Nr
PiYmIGJsb2NrKSB7CisgICAgICAgIGJsb2NrLT5tX2luZGV4ID0gYmFzaWNCbG9ja3Muc2l6ZSgp
OworICAgICAgICBiYXNpY0Jsb2Nrcy5hcHBlbmQoV1RGTW92ZShibG9jaykpOworICAgIH07CisK
KyAgICBhdXRvIGxpbmtCbG9ja3MgPSBbJl0gKEJ5dGVjb2RlQmFzaWNCbG9jayogcHJlZGVjZXNz
b3IsIEJ5dGVjb2RlQmFzaWNCbG9jayogc3VjY2Vzc29yKSB7CisgICAgICAgIHByZWRlY2Vzc29y
LT5hZGRTdWNjZXNzb3Ioc3VjY2Vzc29yKTsKKyAgICAgICAgc3VjY2Vzc29yLT5hZGRQcmVkZWNl
c3NvcihwcmVkZWNlc3Nvcik7CisgICAgfTsKIAogICAgIC8vIENyZWF0ZSB0aGUgZW50cnkgYW5k
IGV4aXQgYmFzaWMgYmxvY2tzLgogICAgIGJhc2ljQmxvY2tzLnJlc2VydmVDYXBhY2l0eShqdW1w
VGFyZ2V0cy5zaXplKCkgKyAyKTsKQEAgLTEyMiwxOSArMTI5LDE3IEBAIHZvaWQgY29tcHV0ZUJ5
dGVjb2RlQmFzaWNCbG9ja3MoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFZlY3RvcjxzdGQ6OnVuaXF1
ZV9wdHI8Qnl0CiAgICAgYXV0byBmaXJzdEJsb2NrID0gc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29k
ZUJhc2ljQmxvY2s+KDAsIDApOwogICAgIGxpbmtCbG9ja3MoZW50cnkuZ2V0KCksIGZpcnN0Qmxv
Y2suZ2V0KCkpOwogCi0gICAgYmFzaWNCbG9ja3MuYXBwZW5kKFdURk1vdmUoZW50cnkpKTsKKyAg
ICBhcHBlbmRCbG9jayhXVEZNb3ZlKGVudHJ5KSk7CiAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBj
dXJyZW50ID0gZmlyc3RCbG9jay5nZXQoKTsKLSAgICBiYXNpY0Jsb2Nrcy5hcHBlbmQoV1RGTW92
ZShmaXJzdEJsb2NrKSk7CisgICAgYXBwZW5kQmxvY2soV1RGTW92ZShmaXJzdEJsb2NrKSk7CiAK
ICAgICBhdXRvIGV4aXQgPSBzdGQ6Om1ha2VfdW5pcXVlPEJ5dGVjb2RlQmFzaWNCbG9jaz4oQnl0
ZWNvZGVCYXNpY0Jsb2NrOjpFeGl0QmxvY2spOwogCiAgICAgYm9vbCBuZXh0SW5zdHJ1Y3Rpb25J
c0xlYWRlciA9IGZhbHNlOwogCiAgICAgSW50ZXJwcmV0ZXIqIGludGVycHJldGVyID0gY29kZUJs
b2NrLT52bSgpLT5pbnRlcnByZXRlcjsKLSAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVn
aW4gPSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCk7Ci0gICAgdW5zaWduZWQgaW5z
dHJ1Y3Rpb25Db3VudCA9IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpOwogICAgIGZv
ciAodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQgPSAwOyBieXRlY29kZU9mZnNldCA8IGluc3RydWN0
aW9uQ291bnQ7KSB7Ci0gICAgICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0ZXItPmdl
dE9wY29kZUlEKGluc3RydWN0aW9uc0JlZ2luW2J5dGVjb2RlT2Zmc2V0XS51Lm9wY29kZSk7Cisg
ICAgICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGluc3Ry
dWN0aW9uc0JlZ2luW2J5dGVjb2RlT2Zmc2V0XSk7CiAgICAgICAgIHVuc2lnbmVkIG9wY29kZUxl
bmd0aCA9IG9wY29kZUxlbmd0aHNbb3Bjb2RlSURdOwogCiAgICAgICAgIGJvb2wgY3JlYXRlZEJs
b2NrID0gZmFsc2U7CkBAIC0xNDIsNyArMTQ3LDcgQEAgdm9pZCBjb21wdXRlQnl0ZWNvZGVCYXNp
Y0Jsb2NrcyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXQK
ICAgICAgICAgaWYgKGlzSnVtcFRhcmdldChvcGNvZGVJRCwganVtcFRhcmdldHMsIGJ5dGVjb2Rl
T2Zmc2V0KSB8fCBuZXh0SW5zdHJ1Y3Rpb25Jc0xlYWRlcikgewogICAgICAgICAgICAgYXV0byBu
ZXdCbG9jayA9IHN0ZDo6bWFrZV91bmlxdWU8Qnl0ZWNvZGVCYXNpY0Jsb2NrPihieXRlY29kZU9m
ZnNldCwgb3Bjb2RlTGVuZ3RoKTsKICAgICAgICAgICAgIGN1cnJlbnQgPSBuZXdCbG9jay5nZXQo
KTsKLSAgICAgICAgICAgIGJhc2ljQmxvY2tzLmFwcGVuZChXVEZNb3ZlKG5ld0Jsb2NrKSk7Cisg
ICAgICAgICAgICBhcHBlbmRCbG9jayhXVEZNb3ZlKG5ld0Jsb2NrKSk7CiAgICAgICAgICAgICBj
cmVhdGVkQmxvY2sgPSB0cnVlOwogICAgICAgICAgICAgbmV4dEluc3RydWN0aW9uSXNMZWFkZXIg
PSBmYWxzZTsKICAgICAgICAgICAgIGJ5dGVjb2RlT2Zmc2V0ICs9IG9wY29kZUxlbmd0aDsKQEAg
LTE2OSw4ICsxNzQsNyBAQCB2b2lkIGNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzKENvZGVCbG9j
ayogY29kZUJsb2NrLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dAogCiAgICAgICAgIGJvb2wg
ZmFsbHNUaHJvdWdoID0gdHJ1ZTsgCiAgICAgICAgIGZvciAodW5zaWduZWQgYnl0ZWNvZGVPZmZz
ZXQgPSBibG9jay0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKTsgYnl0ZWNvZGVPZmZzZXQgPCBibG9j
ay0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKSArIGJsb2NrLT50b3RhbEJ5dGVjb2RlTGVuZ3RoKCk7
KSB7Ci0gICAgICAgICAgICBjb25zdCBJbnN0cnVjdGlvbiYgY3VycmVudEluc3RydWN0aW9uID0g
aW5zdHJ1Y3Rpb25zQmVnaW5bYnl0ZWNvZGVPZmZzZXRdOwotICAgICAgICAgICAgT3Bjb2RlSUQg
b3Bjb2RlSUQgPSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoY3VycmVudEluc3RydWN0aW9uLnUu
b3Bjb2RlKTsKKyAgICAgICAgICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0ZXItPmdl
dE9wY29kZUlEKGluc3RydWN0aW9uc0JlZ2luW2J5dGVjb2RlT2Zmc2V0XSk7CiAgICAgICAgICAg
ICB1bnNpZ25lZCBvcGNvZGVMZW5ndGggPSBvcGNvZGVMZW5ndGhzW29wY29kZUlEXTsKICAgICAg
ICAgICAgIC8vIElmIHdlIGZvdW5kIGEgdGVybWluYWwgYnl0ZWNvZGUsIGxpbmsgdG8gdGhlIGV4
aXQgYmxvY2suCiAgICAgICAgICAgICBpZiAoaXNUZXJtaW5hbChvcGNvZGVJRCkpIHsKQEAgLTE4
NSw3ICsxODksNyBAQCB2b2lkIGNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzKENvZGVCbG9jayog
Y29kZUJsb2NrLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dAogICAgICAgICAgICAgLy8gYmxv
Y2sgYmVjYXVzZSB0aGUgZmluYWxseSBibG9jayB3aWxsIGNyZWF0ZSBpdHMgb3duIGNhdGNoLCB3
aGljaCB3aWxsIGdlbmVyYXRlIGEgSGFuZGxlckluZm8uCiAgICAgICAgICAgICBpZiAoaXNUaHJv
dyhvcGNvZGVJRCkpIHsKICAgICAgICAgICAgICAgICBBU1NFUlQoYnl0ZWNvZGVPZmZzZXQgKyBv
cGNvZGVMZW5ndGggPT0gYmxvY2stPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCkgKyBibG9jay0+dG90
YWxCeXRlY29kZUxlbmd0aCgpKTsKLSAgICAgICAgICAgICAgICBIYW5kbGVySW5mbyogaGFuZGxl
ciA9IGNvZGVCbG9jay0+aGFuZGxlckZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KTsK
KyAgICAgICAgICAgICAgICBhdXRvKiBoYW5kbGVyID0gY29kZUJsb2NrLT5oYW5kbGVyRm9yQnl0
ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpOwogICAgICAgICAgICAgICAgIGZhbGxzVGhyb3Vn
aCA9IGZhbHNlOwogICAgICAgICAgICAgICAgIGlmICghaGFuZGxlcikgewogICAgICAgICAgICAg
ICAgICAgICBsaW5rQmxvY2tzKGJsb2NrLCBleGl0LmdldCgpKTsKQEAgLTIwNSw3ICsyMDksNyBA
QCB2b2lkIGNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzKENvZGVCbG9jayogY29kZUJsb2NrLCBW
ZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dAogICAgICAgICAgICAgaWYgKGlzQnJhbmNoKG9wY29k
ZUlEKSkgewogICAgICAgICAgICAgICAgIEFTU0VSVChieXRlY29kZU9mZnNldCArIG9wY29kZUxl
bmd0aCA9PSBibG9jay0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKSArIGJsb2NrLT50b3RhbEJ5dGVj
b2RlTGVuZ3RoKCkpOwogICAgICAgICAgICAgICAgIFZlY3Rvcjx1bnNpZ25lZCwgMT4gYnl0ZWNv
ZGVPZmZzZXRzSnVtcGVkVG87Ci0gICAgICAgICAgICAgICAgZmluZEp1bXBUYXJnZXRzRm9yQnl0
ZWNvZGVPZmZzZXQoY29kZUJsb2NrLCBieXRlY29kZU9mZnNldCwgYnl0ZWNvZGVPZmZzZXRzSnVt
cGVkVG8pOworICAgICAgICAgICAgICAgIGZpbmRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0
KGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb25zQmVnaW4sIGJ5dGVjb2RlT2Zmc2V0LCBieXRlY29kZU9m
ZnNldHNKdW1wZWRUbyk7CiAKICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgYmFzaWNCbG9ja3Muc2l6ZSgpOyBpKyspIHsKICAgICAgICAgICAgICAgICAgICAgQnl0ZWNv
ZGVCYXNpY0Jsb2NrKiBvdGhlckJsb2NrID0gYmFzaWNCbG9ja3NbaV0uZ2V0KCk7CkBAIC0yMjks
MTAgKzIzMywyMCBAQCB2b2lkIGNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzKENvZGVCbG9jayog
Y29kZUJsb2NrLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dAogICAgICAgICB9CiAgICAgfQog
Ci0gICAgYmFzaWNCbG9ja3MuYXBwZW5kKFdURk1vdmUoZXhpdCkpOworICAgIGFwcGVuZEJsb2Nr
KFdURk1vdmUoZXhpdCkpOwogICAgIAogICAgIGZvciAoYXV0byYgYmFzaWNCbG9jayA6IGJhc2lj
QmxvY2tzKQogICAgICAgICBiYXNpY0Jsb2NrLT5zaHJpbmtUb0ZpdCgpOwogfQogCit2b2lkIEJ5
dGVjb2RlQmFzaWNCbG9jazo6Y29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MoQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgaW5zdHJ1
Y3Rpb25Db3VudCwgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYg
YmFzaWNCbG9ja3MpCit7CisgICAgY29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3NJbnRlcm5hbChj
b2RlQmxvY2ssIGluc3RydWN0aW9uc0JlZ2luLCBpbnN0cnVjdGlvbkNvdW50LCBiYXNpY0Jsb2Nr
cyk7Cit9CisKK3ZvaWQgQnl0ZWNvZGVCYXNpY0Jsb2NrOjpjb21wdXRlQnl0ZWNvZGVCYXNpY0Js
b2NrcyhVbmxpbmtlZENvZGVCbG9jayogY29kZUJsb2NrLCBVbmxpbmtlZEluc3RydWN0aW9uKiBp
bnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCwgVmVjdG9yPHN0ZDo6
dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9ja3MpCit7CisgICAgQnl0
ZWNvZGVCYXNpY0Jsb2NrOjpjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2Nrc0ludGVybmFsKGNvZGVC
bG9jaywgaW5zdHJ1Y3Rpb25zQmVnaW4sIGluc3RydWN0aW9uQ291bnQsIGJhc2ljQmxvY2tzKTsK
K30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmgKaW5kZXggYmQ3ZDNhZTliYTM0M2UxYjA3MTc5
ZTk4ZjFlZTg5ZGE2NWJhN2UyMC4uMTE5YmU3YzY2MjMwYzk4ZWE5ZDdmYjI4MDhjYmYyOTRkYzFh
MmE3NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
QmFzaWNCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZUJhc2ljQmxvY2suaApAQCAtMzUsNiArMzUsOSBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNz
IENvZGVCbG9jazsKK2NsYXNzIFVubGlua2VkQ29kZUJsb2NrOworc3RydWN0IEluc3RydWN0aW9u
Oworc3RydWN0IFVubGlua2VkSW5zdHJ1Y3Rpb247CiAKIGNsYXNzIEJ5dGVjb2RlQmFzaWNCbG9j
ayB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC01MCwyOCArNTMsMzkgQEAgY2xh
c3MgQnl0ZWNvZGVCYXNpY0Jsb2NrIHsKICAgICB1bnNpZ25lZCBsZWFkZXJCeXRlY29kZU9mZnNl
dCgpIHsgcmV0dXJuIG1fbGVhZGVyQnl0ZWNvZGVPZmZzZXQ7IH0KICAgICB1bnNpZ25lZCB0b3Rh
bEJ5dGVjb2RlTGVuZ3RoKCkgeyByZXR1cm4gbV90b3RhbEJ5dGVjb2RlTGVuZ3RoOyB9CiAKLSAg
ICBWZWN0b3I8dW5zaWduZWQ+JiBieXRlY29kZU9mZnNldHMoKSB7IHJldHVybiBtX2J5dGVjb2Rl
T2Zmc2V0czsgfQotICAgIHZvaWQgYWRkQnl0ZWNvZGVMZW5ndGgodW5zaWduZWQpOworICAgIGNv
bnN0IFZlY3Rvcjx1bnNpZ25lZD4mIGJ5dGVjb2RlT2Zmc2V0cygpIGNvbnN0IHsgcmV0dXJuIG1f
Ynl0ZWNvZGVPZmZzZXRzOyB9CiAKLSAgICBWZWN0b3I8Qnl0ZWNvZGVCYXNpY0Jsb2NrKj4mIHN1
Y2Nlc3NvcnMoKSB7IHJldHVybiBtX3N1Y2Nlc3NvcnM7IH0KLSAgICB2b2lkIGFkZFN1Y2Nlc3Nv
cihCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrKSB7IG1fc3VjY2Vzc29ycy5hcHBlbmQoYmxvY2sp
OyB9CisgICAgY29uc3QgVmVjdG9yPEJ5dGVjb2RlQmFzaWNCbG9jayo+JiBzdWNjZXNzb3JzKCkg
Y29uc3QgeyByZXR1cm4gbV9zdWNjZXNzb3JzOyB9CisgICAgY29uc3QgVmVjdG9yPEJ5dGVjb2Rl
QmFzaWNCbG9jayo+JiBwcmVkZWNlc3NvcnMoKSBjb25zdCB7IHJldHVybiBtX3ByZWRlY2Vzc29y
czsgfQogCiAgICAgRmFzdEJpdFZlY3RvciYgaW4oKSB7IHJldHVybiBtX2luOyB9CiAgICAgRmFz
dEJpdFZlY3RvciYgb3V0KCkgeyByZXR1cm4gbV9vdXQ7IH0KIAorICAgIHVuc2lnbmVkIGluZGV4
KCkgY29uc3QgeyByZXR1cm4gbV9pbmRleDsgfQorCisgICAgc3RhdGljIHZvaWQgY29tcHV0ZUJ5
dGVjb2RlQmFzaWNCbG9ja3MoQ29kZUJsb2NrKiwgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0Jl
Z2luLCB1bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50LCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5
dGVjb2RlQmFzaWNCbG9jaz4+Jik7CisgICAgc3RhdGljIHZvaWQgY29tcHV0ZUJ5dGVjb2RlQmFz
aWNCbG9ja3MoVW5saW5rZWRDb2RlQmxvY2sqLCBVbmxpbmtlZEluc3RydWN0aW9uKiBpbnN0cnVj
dGlvbnNCZWdpbiwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCwgVmVjdG9yPHN0ZDo6dW5pcXVl
X3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYpOworCiBwcml2YXRlOgorICAgIHRlbXBsYXRlPHR5
cGVuYW1lIEJsb2NrLCB0eXBlbmFtZSBJbnN0cnVjdGlvbj4gc3RhdGljIHZvaWQgY29tcHV0ZUJ5
dGVjb2RlQmFzaWNCbG9ja3NJbnRlcm5hbChCbG9jayogY29kZUJsb2NrLCBJbnN0cnVjdGlvbiog
aW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQsIFZlY3RvcjxzdGQ6
OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mIGJhc2ljQmxvY2tzKTsKKworICAgIHZv
aWQgYWRkU3VjY2Vzc29yKEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2spIHsgbV9zdWNjZXNzb3Jz
LmFwcGVuZChibG9jayk7IH0KKyAgICB2b2lkIGFkZFByZWRlY2Vzc29yKEJ5dGVjb2RlQmFzaWNC
bG9jayogYmxvY2spIHsgbV9wcmVkZWNlc3NvcnMuYXBwZW5kKGJsb2NrKTsgfQorCisgICAgdm9p
ZCBhZGRCeXRlY29kZUxlbmd0aCh1bnNpZ25lZCk7CisKICAgICB1bnNpZ25lZCBtX2xlYWRlckJ5
dGVjb2RlT2Zmc2V0OwogICAgIHVuc2lnbmVkIG1fdG90YWxCeXRlY29kZUxlbmd0aDsKKyAgICB1
bnNpZ25lZCBtX2luZGV4OwogCiAgICAgVmVjdG9yPHVuc2lnbmVkPiBtX2J5dGVjb2RlT2Zmc2V0
czsKICAgICBWZWN0b3I8Qnl0ZWNvZGVCYXNpY0Jsb2NrKj4gbV9zdWNjZXNzb3JzOworICAgIFZl
Y3RvcjxCeXRlY29kZUJhc2ljQmxvY2sqPiBtX3ByZWRlY2Vzc29yczsKIAogICAgIEZhc3RCaXRW
ZWN0b3IgbV9pbjsKICAgICBGYXN0Qml0VmVjdG9yIG1fb3V0OwogfTsKIAotdm9pZCBjb21wdXRl
Qnl0ZWNvZGVCYXNpY0Jsb2NrcyhDb2RlQmxvY2sqLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5
dGVjb2RlQmFzaWNCbG9jaz4+Jik7Ci0KIGlubGluZSBCeXRlY29kZUJhc2ljQmxvY2s6OkJ5dGVj
b2RlQmFzaWNCbG9jayh1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgbGVuZ3RoKQogICAgIDogbV9s
ZWFkZXJCeXRlY29kZU9mZnNldChzdGFydCkKICAgICAsIG1fdG90YWxCeXRlY29kZUxlbmd0aChs
ZW5ndGgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNGJjNDdiMWJhMTlm
YTVjMWFhNTVlNDhlNGE0NTIyNTliMTQ5MTc2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcApAQCAt
MCwwICsxLDY2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBZdXN1a2UgU3V6dWtpIDx1
dGF0YW5lLnRlYUBnbWFpbC5jb20+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5oIgorCisjaW5jbHVkZSAiQnl0ZWNv
ZGVMaXZlbmVzc0FuYWx5c2lzSW5saW5lcy5oIgorI2luY2x1ZGUgIkJ5dGVjb2RlTW9kaWZpY2F0
aW9uU2V0LmgiCisjaW5jbHVkZSAiQnl0ZWNvZGVVc2VEZWYuaCIKKyNpbmNsdWRlICJJZGVudGlm
aWVySW5saW5lcy5oIgorI2luY2x1ZGUgIkludGVycHJldGVyLmgiCisjaW5jbHVkZSAiSlNDSlNW
YWx1ZUlubGluZXMuaCIKKyNpbmNsdWRlICJTdHJvbmdJbmxpbmVzLmgiCisjaW5jbHVkZSAiVW5s
aW5rZWRDb2RlQmxvY2suaCIKKyNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KKworbmFtZXNwYWNl
IEpTQyB7CisKK2NsYXNzIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uIHsKK3B1YmxpYzoKKyAg
ICBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbihVbmxpbmtlZENvZGVCbG9jayogY29kZUJsb2Nr
LCBVbmxpbmtlZENvZGVCbG9jazo6VW5wYWNrZWRJbnN0cnVjdGlvbnMmIGluc3RydWN0aW9ucywg
U3ltYm9sVGFibGUqIGdlbmVyYXRvckZyYW1lU3ltYm9sVGFibGUsIGludCBnZW5lcmF0b3JGcmFt
ZVN5bWJvbFRhYmxlSW5kZXgpCisgICAgICAgIDogbV9ncmFwaChjb2RlQmxvY2ssIGluc3RydWN0
aW9ucykKKyAgICAgICAgLCBtX2luc2VydGlvblNldChtX2dyYXBoKQorICAgICAgICAsIG1fZ2Vu
ZXJhdG9yRnJhbWVTeW1ib2xUYWJsZSgqY29kZUJsb2NrLT52bSgpLCBnZW5lcmF0b3JGcmFtZVN5
bWJvbFRhYmxlKQorICAgICAgICAsIG1fZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZUluZGV4KGdl
bmVyYXRvckZyYW1lU3ltYm9sVGFibGVJbmRleCkKKyAgICB7CisgICAgICAgIG1fbWVyZ2VCbG9j
a3MucmVzaXplKG1fZ3JhcGguYmFzaWNCbG9ja3MoKS5zaXplKCkpOworICAgICAgICBtX3NhdmVC
bG9ja3MucmVzaXplKG1fZ3JhcGguYmFzaWNCbG9ja3MoKS5zaXplKCkpOworCisgICAgICAgIGZv
ciAoc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4mIGJsb2NrIDogbV9ncmFwaC5i
YXNpY0Jsb2NrcygpKSB7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0
IDogYmxvY2stPmJ5dGVjb2RlT2Zmc2V0cygpKSB7CisgICAgICAgICAgICAgICAgY29uc3QgVW5s
aW5rZWRJbnN0cnVjdGlvbiogcGMgPSAmbV9ncmFwaC5pbnN0cnVjdGlvbnMoKVtieXRlY29kZU9m
ZnNldF07CisgICAgICAgICAgICAgICAgc3dpdGNoIChwYy0+dS5vcGNvZGUpIHsKKyAgICAgICAg
ICAgICAgICBjYXNlIG9wX3NhdmU6IHsKKyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbGl2
ZUNhbGxlZUxvY2Fsc0luZGV4ID0gcGNbMl0udS5pbmRleDsKKyAgICAgICAgICAgICAgICAgICAg
aW50IG9mZnNldCA9IHBjWzNdLnUub3BlcmFuZDsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxp
dmVDYWxsZWVMb2NhbHNJbmRleCA+PSBtX3lpZWxkcy5zaXplKCkpCisgICAgICAgICAgICAgICAg
ICAgICAgICBtX3lpZWxkcy5yZXNpemUobGl2ZUNhbGxlZUxvY2Fsc0luZGV4ICsgMSk7CisgICAg
ICAgICAgICAgICAgICAgIG1feWllbGRzW2xpdmVDYWxsZWVMb2NhbHNJbmRleF0uc2F2ZVBvaW50
ID0gYnl0ZWNvZGVPZmZzZXQ7CisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIG1lcmdlUG9p
bnQgPSBieXRlY29kZU9mZnNldCArIG9mZnNldDsKKyAgICAgICAgICAgICAgICAgICAgbV95aWVs
ZHNbbGl2ZUNhbGxlZUxvY2Fsc0luZGV4XS5tZXJnZVBvaW50ID0gbWVyZ2VQb2ludDsKKyAgICAg
ICAgICAgICAgICAgICAgbV9tZXJnZUJsb2Nrcy5zZXQobV9ncmFwaC5maW5kQmFzaWNCbG9ja0Zv
ckJ5dGVjb2RlT2Zmc2V0KG1lcmdlUG9pbnQpLT5pbmRleCgpKTsKKyAgICAgICAgICAgICAgICAg
ICAgbV9zYXZlQmxvY2tzLnNldChibG9jay0+aW5kZXgoKSk7CisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGNhc2Ugb3BfcmVz
dW1lOiB7CisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRl
eCA9IHBjWzJdLnUuaW5kZXg7CisgICAgICAgICAgICAgICAgICAgIGlmIChsaXZlQ2FsbGVlTG9j
YWxzSW5kZXggPj0gbV95aWVsZHMuc2l6ZSgpKQorICAgICAgICAgICAgICAgICAgICAgICAgbV95
aWVsZHMucmVzaXplKGxpdmVDYWxsZWVMb2NhbHNJbmRleCArIDEpOworICAgICAgICAgICAgICAg
ICAgICBtX3lpZWxkc1tsaXZlQ2FsbGVlTG9jYWxzSW5kZXhdLnJlc3VtZVBvaW50ID0gYnl0ZWNv
ZGVPZmZzZXQ7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAg
IGJvb2wgaXNNZXJnZUJsb2NrKEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2spCisgICAgeworICAg
ICAgICByZXR1cm4gbV9tZXJnZUJsb2Nrcy5nZXQoYmxvY2stPmluZGV4KCkpOworICAgIH0KKwor
ICAgIGJvb2wgaXNTYXZlQmxvY2soQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaykKKyAgICB7Cisg
ICAgICAgIHJldHVybiBtX3NhdmVCbG9ja3MuZ2V0KGJsb2NrLT5pbmRleCgpKTsKKyAgICB9CisK
KyAgICBzdHJ1Y3QgU3RvcmFnZSB7CisgICAgICAgIElkZW50aWZpZXIgaWRlbnRpZmllcjsKKyAg
ICAgICAgdW5zaWduZWQgaWRlbnRpZmllckluZGV4OworICAgICAgICBTY29wZU9mZnNldCBzY29w
ZU9mZnNldDsKKyAgICB9OworCisgICAgdm9pZCBydW4oKTsKKworICAgIEJ5dGVjb2RlR3JhcGg8
VW5saW5rZWRDb2RlQmxvY2s+JiBncmFwaCgpIHsgcmV0dXJuIG1fZ3JhcGg7IH0KKworcHJpdmF0
ZToKKyAgICBTdG9yYWdlIHN0b3JhZ2VGb3JHZW5lcmF0b3JMb2NhbCh1bnNpZ25lZCBpbmRleCkK
KyAgICB7CisgICAgICAgIC8vIFdlIGFzc2lnbiBhIHN5bWJvbCB0byBhIHJlZ2lzdGVyLiBUaGVy
ZSBpcyBvbmUtb24tb25lIGNvcnJlc3BvbmRpbmcgYmV0d2VlbiBhIHJlZ2lzdGVyIGFuZCBhIHN5
bWJvbC4KKyAgICAgICAgLy8gQnkgZG9pbmcgc28sIHdlIGFsbG9jYXRlIHRoZSBzcGVjaWZpYyBz
dG9yYWdlIHRvIHNhdmUgdGhlIGdpdmVuIHJlZ2lzdGVyLgorICAgICAgICAvLyBUaGlzIGFsbG93
IHVzIG5vdCB0byBzYXZlIGFsbCB0aGUgbGl2ZSByZWdpc3RlcnMgZXZlbiBpZiB0aGUgcmVnaXN0
ZXJzIGFyZSBub3Qgb3ZlcndyaXR0ZW4gZnJvbSB0aGUgcHJldmlvdXMgcmVzdW1pbmcgdGltZS4K
KyAgICAgICAgLy8gSXQgbWVhbnMgdGhhdCwgdGhlIHJlZ2lzdGVyIGNhbiBiZSByZXRyaWV2ZWQg
ZXZlbiBpZiB0aGUgaW1tZWRpYXRlIHByZXZpb3VzIG9wX3NhdmUgZG9lcyBub3Qgc2F2ZSBpdC4K
KworICAgICAgICBpZiAobV9zdG9yYWdlcy5zaXplKCkgPD0gaW5kZXgpCisgICAgICAgICAgICBt
X3N0b3JhZ2VzLnJlc2l6ZShpbmRleCArIDEpOworICAgICAgICBpZiAoT3B0aW9uYWw8U3RvcmFn
ZT4gc3RvcmFnZSA9IG1fc3RvcmFnZXNbaW5kZXhdKQorICAgICAgICAgICAgcmV0dXJuICpzdG9y
YWdlOworCisgICAgICAgIFVubGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBtX2dyYXBoLmNv
ZGVCbG9jaygpOworICAgICAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIgPSBJZGVudGlmaWVyOjpm
cm9tVWlkKFByaXZhdGVOYW1lKCkpOworICAgICAgICB1bnNpZ25lZCBpZGVudGlmaWVySW5kZXgg
PSBjb2RlQmxvY2stPm51bWJlck9mSWRlbnRpZmllcnMoKTsKKyAgICAgICAgY29kZUJsb2NrLT5h
ZGRJZGVudGlmaWVyKGlkZW50aWZpZXIpOworICAgICAgICBTY29wZU9mZnNldCBzY29wZU9mZnNl
dCA9IG1fZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZS0+dGFrZU5leHRTY29wZU9mZnNldChOb0xv
Y2tpbmdOZWNlc3NhcnkpOworICAgICAgICBtX2dlbmVyYXRvckZyYW1lU3ltYm9sVGFibGUtPnNl
dChOb0xvY2tpbmdOZWNlc3NhcnksIGlkZW50aWZpZXIuaW1wbCgpLCBTeW1ib2xUYWJsZUVudHJ5
KFZhck9mZnNldChzY29wZU9mZnNldCkpKTsKKworICAgICAgICBTdG9yYWdlIHN0b3JhZ2UgPSB7
CisgICAgICAgICAgICBpZGVudGlmaWVyLAorICAgICAgICAgICAgaWRlbnRpZmllckluZGV4LAor
ICAgICAgICAgICAgc2NvcGVPZmZzZXQKKyAgICAgICAgfTsKKyAgICAgICAgbV9zdG9yYWdlc1tp
bmRleF0gPSBzdG9yYWdlOworICAgICAgICByZXR1cm4gc3RvcmFnZTsKKyAgICB9CisKKyAgICBz
dHJ1Y3QgWWllbGREYXRhIHsKKyAgICAgICAgc2l6ZV90IHNhdmVQb2ludDsKKyAgICAgICAgc2l6
ZV90IG1lcmdlUG9pbnQ7CisgICAgICAgIHNpemVfdCByZXN1bWVQb2ludDsKKyAgICAgICAgRmFz
dEJpdFZlY3RvciBsaXZlbmVzczsKKyAgICAgICAgRmFzdEJpdFZlY3RvciByZXN1bWVkOworICAg
ICAgICBGYXN0Qml0VmVjdG9yIHNhdmVkOworICAgIH07CisKKyAgICBCeXRlY29kZUdyYXBoPFVu
bGlua2VkQ29kZUJsb2NrPiBtX2dyYXBoOworICAgIEJ5dGVjb2RlTW9kaWZpY2F0aW9uU2V0IG1f
aW5zZXJ0aW9uU2V0OworICAgIFZlY3RvcjxPcHRpb25hbDxTdG9yYWdlPj4gbV9zdG9yYWdlczsK
KyAgICBWZWN0b3I8WWllbGREYXRhPiBtX3lpZWxkczsKKyAgICBGYXN0Qml0VmVjdG9yIG1fbWVy
Z2VCbG9ja3M7CisgICAgRmFzdEJpdFZlY3RvciBtX3NhdmVCbG9ja3M7CisgICAgU3Ryb25nPFN5
bWJvbFRhYmxlPiBtX2dlbmVyYXRvckZyYW1lU3ltYm9sVGFibGU7CisgICAgaW50IG1fZ2VuZXJh
dG9yRnJhbWVTeW1ib2xUYWJsZUluZGV4OworfTsKKworY2xhc3MgR2VuZXJhdG9yTGl2ZW5lc3NB
bmFseXNpcyB7CitwdWJsaWM6CisgICAgR2VuZXJhdG9yTGl2ZW5lc3NBbmFseXNpcyhCeXRlY29k
ZUdlbmVyYXRvcmlmaWNhdGlvbiYgcGFzcykKKyAgICAgICAgOiBtX2dlbmVyYXRvcmlmaWNhdGlv
bihwYXNzKQorICAgIHsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgor
ICAgIHZvaWQgY29tcHV0ZUxpdmVuZXNzRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KFVubGlua2VkQ29k
ZUJsb2NrKiBjb2RlQmxvY2ssIE9wY29kZUlEIG9wY29kZUlELCBVbmxpbmtlZEluc3RydWN0aW9u
KiBpbnN0cnVjdGlvbiwgRmFzdEJpdFZlY3RvciYgb3V0LCBjb25zdCBGdW5jdG9yJiBmdW5jdG9y
KQorICAgIHsKKyAgICAgICAgY29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChjb2RlQmxvY2ss
IG9wY29kZUlELCBpbnN0cnVjdGlvbiwgZnVuY3Rvcik7CisKKyAgICAgICAgc3dpdGNoIChvcGNv
ZGVJRCkgeworICAgICAgICBjYXNlIG9wX3NhdmU6CisgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgY2FzZSBvcF9yZXN1bWU6IHsKKyAgICAgICAgICAgIC8vIHJlc3VtZSBkZWZpbmVzIGFs
bCB0aGUgcmVnaXN0ZXJzLgorICAgICAgICAgICAgb3V0LmNsZWFyQWxsKCk7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4K
KyAgICB2b2lkIGNvbXB1dGVMaXZlbmVzc1VzZXNGb3JCeXRlY29kZU9mZnNldChVbmxpbmtlZENv
ZGVCbG9jayogY29kZUJsb2NrLCBPcGNvZGVJRCBvcGNvZGVJRCwgVW5saW5rZWRJbnN0cnVjdGlv
biogaW5zdHJ1Y3Rpb24sIEZhc3RCaXRWZWN0b3ImLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQor
ICAgIHsKKyAgICAgICAgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldChjb2RlQmxvY2ssIG9w
Y29kZUlELCBpbnN0cnVjdGlvbiwgZnVuY3Rvcik7CisKKyAgICAgICAgc3dpdGNoIChvcGNvZGVJ
RCkgeworICAgICAgICBjYXNlIG9wX3NhdmU6CisgICAgICAgIGNhc2Ugb3BfcmVzdW1lOiB7Cisg
ICAgICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBpbnN0
cnVjdGlvblsxXS51Lm9wZXJhbmQpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisK
KyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0K
KworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFVzZUZ1bmN0b3IsIHR5cGVuYW1lIERlZkZ1bmN0b3I+
CisgICAgdm9pZCBzdGVwT3Zlckluc3RydWN0aW9uRm9yTGl2ZW5lc3ModW5zaWduZWQgYnl0ZWNv
ZGVPZmZzZXQsIEZhc3RCaXRWZWN0b3ImIG91dCwgY29uc3QgVXNlRnVuY3RvciYgdXNlLCBjb25z
dCBEZWZGdW5jdG9yJiBkZWYpCisgICAgeworICAgICAgICBCeXRlY29kZUdyYXBoPFVubGlua2Vk
Q29kZUJsb2NrPiYgZ3JhcGggPSBtX2dlbmVyYXRvcmlmaWNhdGlvbi5ncmFwaCgpOworICAgICAg
ICBhdXRvJiBpbnN0cnVjdGlvbnMgPSBncmFwaC5pbnN0cnVjdGlvbnMoKTsKKyAgICAgICAgVW5s
aW5rZWRJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSAmaW5zdHJ1Y3Rpb25zW2J5dGVjb2RlT2Zm
c2V0XTsKKyAgICAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnN0cnVjdGlvbi0+dS5vcGNvZGU7
CisgICAgICAgIFVubGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBncmFwaC5jb2RlQmxvY2so
KTsKKworICAgICAgICBjb21wdXRlTGl2ZW5lc3NEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoCisgICAg
ICAgICAgICBjb2RlQmxvY2ssIG9wY29kZUlELCBpbnN0cnVjdGlvbiwgb3V0LAorICAgICAgICAg
ICAgWyZdIChVbmxpbmtlZENvZGVCbG9jayosIFVubGlua2VkSW5zdHJ1Y3Rpb24qLCBPcGNvZGVJ
RCwgaW50IG9wZXJhbmQpIHsKKyAgICAgICAgICAgICAgICBpZiAoaXNWYWxpZFJlZ2lzdGVyRm9y
TGl2ZW5lc3Mob3BlcmFuZCkpCisgICAgICAgICAgICAgICAgICAgIGRlZihWaXJ0dWFsUmVnaXN0
ZXIob3BlcmFuZCkudG9Mb2NhbCgpKTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgIGNvbXB1
dGVMaXZlbmVzc1VzZXNGb3JCeXRlY29kZU9mZnNldCgKKyAgICAgICAgICAgIGNvZGVCbG9jaywg
b3Bjb2RlSUQsIGluc3RydWN0aW9uLCBvdXQsCisgICAgICAgICAgICBbJl0gKFVubGlua2VkQ29k
ZUJsb2NrKiwgVW5saW5rZWRJbnN0cnVjdGlvbiosIE9wY29kZUlELCBpbnQgb3BlcmFuZCkgewor
ICAgICAgICAgICAgICAgIGlmIChpc1ZhbGlkUmVnaXN0ZXJGb3JMaXZlbmVzcyhvcGVyYW5kKSkK
KyAgICAgICAgICAgICAgICAgICAgdXNlKFZpcnR1YWxSZWdpc3RlcihvcGVyYW5kKS50b0xvY2Fs
KCkpOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgLy8gSWYgd2UgaGF2ZSBhbiBleGNlcHRp
b24gaGFuZGxlciwgd2Ugd2FudCB0aGUgbGl2ZS1pbiB2YXJpYWJsZXMgb2YgdGhlCisgICAgICAg
IC8vIGV4Y2VwdGlvbiBoYW5kbGVyIGJsb2NrIHRvIGJlIGluY2x1ZGVkIGluIHRoZSBsaXZlLWlu
IG9mIHRoaXMgcGFydGljdWxhciBieXRlY29kZS4KKyAgICAgICAgaWYgKFVubGlua2VkSGFuZGxl
ckluZm8qIGhhbmRsZXIgPSBjb2RlQmxvY2stPmhhbmRsZXJGb3JCeXRlY29kZU9mZnNldChieXRl
Y29kZU9mZnNldCkpIHsKKyAgICAgICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogaGFuZGxlckJs
b2NrID0gZ3JhcGguZmluZEJhc2ljQmxvY2tXaXRoTGVhZGVyT2Zmc2V0KGhhbmRsZXItPnRhcmdl
dCk7CisgICAgICAgICAgICBBU1NFUlQoaGFuZGxlckJsb2NrKTsKKyAgICAgICAgICAgIGhhbmRs
ZXJCbG9jay0+aW4oKS5mb3JFYWNoU2V0Qml0KHVzZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICB2b2lkIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQnl0ZWNvZGVPZmZzZXQoQnl0ZWNvZGVCYXNp
Y0Jsb2NrKiBibG9jaywgdW5zaWduZWQgdGFyZ2V0T2Zmc2V0LCBGYXN0Qml0VmVjdG9yJiByZXN1
bHQpCisgICAgeworICAgICAgICBBU1NFUlQoIWJsb2NrLT5pc0V4aXRCbG9jaygpKTsKKyAgICAg
ICAgQVNTRVJUKCFibG9jay0+aXNFbnRyeUJsb2NrKCkpOworCisgICAgICAgIEZhc3RCaXRWZWN0
b3Igb3V0ID0gYmxvY2stPm91dCgpOworCisgICAgICAgIGZvciAoaW50IGkgPSBibG9jay0+Ynl0
ZWNvZGVPZmZzZXRzKCkuc2l6ZSgpIC0gMTsgaSA+PSAwOyBpLS0pIHsKKyAgICAgICAgICAgIHVu
c2lnbmVkIGJ5dGVjb2RlT2Zmc2V0ID0gYmxvY2stPmJ5dGVjb2RlT2Zmc2V0cygpW2ldOworICAg
ICAgICAgICAgaWYgKHRhcmdldE9mZnNldCA+IGJ5dGVjb2RlT2Zmc2V0KQorICAgICAgICAgICAg
ICAgIGJyZWFrOworCisgICAgICAgICAgICBzdGVwT3Zlckluc3RydWN0aW9uRm9yTGl2ZW5lc3Mo
CisgICAgICAgICAgICAgICAgYnl0ZWNvZGVPZmZzZXQsIG91dCwKKyAgICAgICAgICAgICAgICBb
Jl0gKHVuc2lnbmVkIGJpdEluZGV4KSB7CisgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMg
dGhlIHVzZSBmdW5jdG9yLCBzbyB3ZSBzZXQgdGhlIGJpdC4KKyAgICAgICAgICAgICAgICAgICAg
b3V0LnNldChiaXRJbmRleCk7CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICBb
Jl0gKHVuc2lnbmVkIGJpdEluZGV4KSB7CisgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMg
dGhlIGRlZiBmdW5jdG9yLCBzbyB3ZSBjbGVhciB0aGUgYml0LgorICAgICAgICAgICAgICAgICAg
ICBvdXQuY2xlYXIoYml0SW5kZXgpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICB9CisK
KyAgICAgICAgcmVzdWx0LnNldChvdXQpOworICAgIH0KKworICAgIHZvaWQgY29tcHV0ZUxvY2Fs
TGl2ZW5lc3NGb3JCbG9jayhCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrKQorICAgIHsKKyAgICAg
ICAgaWYgKGJsb2NrLT5pc0V4aXRCbG9jaygpIHx8IGJsb2NrLT5pc0VudHJ5QmxvY2soKSkKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgY29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCeXRlY29k
ZU9mZnNldChibG9jaywgYmxvY2stPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCksIGJsb2NrLT5pbigp
KTsKKyAgICB9CisKKyAgICBGYXN0Qml0VmVjdG9yIGdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVP
ZmZzZXQodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpCisgICAgeworICAgICAgICBCeXRlY29kZUJh
c2ljQmxvY2sqIGJsb2NrID0gbV9nZW5lcmF0b3JpZmljYXRpb24uZ3JhcGgoKS5maW5kQmFzaWNC
bG9ja0ZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KTsKKyAgICAgICAgQVNTRVJUKGJs
b2NrKTsKKyAgICAgICAgQVNTRVJUKCFibG9jay0+aXNFbnRyeUJsb2NrKCkpOworICAgICAgICBB
U1NFUlQoIWJsb2NrLT5pc0V4aXRCbG9jaygpKTsKKyAgICAgICAgRmFzdEJpdFZlY3RvciBvdXQ7
CisgICAgICAgIG91dC5yZXNpemUoYmxvY2stPm91dCgpLm51bUJpdHMoKSk7CisgICAgICAgIGNv
bXB1dGVMb2NhbExpdmVuZXNzRm9yQnl0ZWNvZGVPZmZzZXQoYmxvY2ssIGJ5dGVjb2RlT2Zmc2V0
LCBvdXQpOworICAgICAgICByZXR1cm4gb3V0OworICAgIH0KKworICAgIHZvaWQgcnVuKCkKKyAg
ICB7CisgICAgICAgIC8vIFBlcmZvcm0gbW9kaWZpZWQgbGl2ZW5lc3MgYW5hbHlzaXMgdG8gZGV0
ZXJtaW5lIHdoaWNoIGxvY2FscyBhcmUgbGl2ZSBhdCB0aGUgbWVyZ2UgcG9pbnRzLgorICAgICAg
ICAvLyBUaGlzIHByb2R1Y2VzIHRoZSBjb25zZXJ2YXRpdmUgcmVzdWx0cyBmb3IgdGhlIHF1ZXN0
aW9uLCAid2hpY2ggdmFyaWFibGVzIHNob3VsZCBiZSBzYXZlZCBhbmQgcmVzdW1lZD8iLgorCisg
ICAgICAgIEJ5dGVjb2RlR3JhcGg8VW5saW5rZWRDb2RlQmxvY2s+JiBncmFwaCA9IG1fZ2VuZXJh
dG9yaWZpY2F0aW9uLmdyYXBoKCk7CisgICAgICAgIFVubGlua2VkQ29kZUJsb2NrKiB1bmxpbmtl
ZENvZGVCbG9jayA9IGdyYXBoLmNvZGVCbG9jaygpOworICAgICAgICB1bnNpZ25lZCBudW1iZXJP
ZlZhcmlhYmxlcyA9IHVubGlua2VkQ29kZUJsb2NrLT5tX251bUNhbGxlZUxvY2FsczsKKyAgICAg
ICAgZm9yIChzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiYgYmxvY2sgOiBncmFw
aC5iYXNpY0Jsb2NrcygpKSB7CisgICAgICAgICAgICBibG9jay0+aW4oKS5yZXNpemUobnVtYmVy
T2ZWYXJpYWJsZXMpOworICAgICAgICAgICAgYmxvY2stPm91dCgpLnJlc2l6ZShudW1iZXJPZlZh
cmlhYmxlcyk7CisgICAgICAgICAgICBibG9jay0+aW4oKS5jbGVhckFsbCgpOworICAgICAgICAg
ICAgYmxvY2stPm91dCgpLmNsZWFyQWxsKCk7CisgICAgICAgIH0KKworICAgICAgICBib29sIGNo
YW5nZWQ7CisgICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogbGFzdEJsb2NrID0gZ3JhcGguYmFz
aWNCbG9ja3MoKS5sYXN0KCkuZ2V0KCk7CisgICAgICAgIGxhc3RCbG9jay0+aW4oKS5jbGVhckFs
bCgpOworICAgICAgICBsYXN0QmxvY2stPm91dCgpLmNsZWFyQWxsKCk7CisgICAgICAgIEZhc3RC
aXRWZWN0b3IgbmV3T3V0OworICAgICAgICBuZXdPdXQucmVzaXplKGxhc3RCbG9jay0+b3V0KCku
bnVtQml0cygpKTsKKyAgICAgICAgZG8geworICAgICAgICAgICAgY2hhbmdlZCA9IGZhbHNlOwor
ICAgICAgICAgICAgZm9yIChzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiYgYmxv
Y2sgOiBncmFwaC5iYXNpY0Jsb2Nrc0luUmV2ZXJzZU9yZGVyKCkpIHsKKyAgICAgICAgICAgICAg
ICBuZXdPdXQuY2xlYXJBbGwoKTsKKyAgICAgICAgICAgICAgICBmb3IgKEJ5dGVjb2RlQmFzaWNC
bG9jayogc3VjY2Vzc29yIDogYmxvY2stPnN1Y2Nlc3NvcnMoKSkKKyAgICAgICAgICAgICAgICAg
ICAgbmV3T3V0Lm1lcmdlKHN1Y2Nlc3Nvci0+aW4oKSk7CisgICAgICAgICAgICAgICAgYm9vbCBv
dXREaWRDaGFuZ2UgPSBibG9jay0+b3V0KCkuc2V0QW5kQ2hlY2sobmV3T3V0KTsKKyAgICAgICAg
ICAgICAgICBjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJsb2NrKGJsb2NrLmdldCgpKTsKKyAgICAg
ICAgICAgICAgICBjaGFuZ2VkIHw9IG91dERpZENoYW5nZTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfSB3aGlsZSAoY2hhbmdlZCk7CisgICAgfQorCitwcml2YXRlOgorICAgIEJ5dGVjb2RlR2Vu
ZXJhdG9yaWZpY2F0aW9uJiBtX2dlbmVyYXRvcmlmaWNhdGlvbjsKK307CisKK2NsYXNzIFJlc3Vt
ZWRWYXJpYWJsZXNBbmFseXNpcyB7CitwdWJsaWM6CisgICAgUmVzdW1lZFZhcmlhYmxlc0FuYWx5
c2lzKEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uJiBwYXNzKQorICAgICAgICA6IG1fZ2VuZXJh
dG9yaWZpY2F0aW9uKHBhc3MpCisgICAgICAgICwgbV9saXZlbmVzc0FuYWx5c2lzKHBhc3MpCisg
ICAgeworICAgIH0KKworICAgIEZhc3RCaXRWZWN0b3IgZ2V0UmVzdW1lZFZhcmlhYmxlc0luZm9B
dEJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KQorICAgIHsKKyAgICAgICAg
Qnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jayA9IG1fZ2VuZXJhdG9yaWZpY2F0aW9uLmdyYXBoKCku
ZmluZEJhc2ljQmxvY2tGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCk7CisgICAgICAg
IEFTU0VSVChibG9jayk7CisgICAgICAgIEFTU0VSVCghYmxvY2stPmlzRW50cnlCbG9jaygpKTsK
KyAgICAgICAgQVNTRVJUKCFibG9jay0+aXNFeGl0QmxvY2soKSk7CisgICAgICAgIEZhc3RCaXRW
ZWN0b3Igb3V0OworICAgICAgICBvdXQucmVzaXplKGJsb2NrLT5vdXQoKS5udW1CaXRzKCkpOwor
ICAgICAgICBtX2xpdmVuZXNzQW5hbHlzaXMuY29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCeXRlY29k
ZU9mZnNldChibG9jaywgYnl0ZWNvZGVPZmZzZXQsIG91dCk7CisgICAgICAgIHJldHVybiBvdXQ7
CisgICAgfQorCisgICAgdm9pZCBydW4oKQorICAgIHsKKyAgICAgICAgLy8gVGhlIHJlc3VtZWQg
dmFyaWFibGVzIGFuYWx5c2lzIGlzIGFsbW9zdCB0aGUgc2FtZSB0byB0aGUgZ2VuZXJhdG9yaWZp
Y2F0aW9uJ3MgdXN1YWwgbGl2ZW5lc3MgYW5hbHlzaXMsCisgICAgICAgIC8vIGV4Y2VwdCBmb3Ig
ZHJvcHBpbmcgdGhlIGVkZ2VzIGJldHdlZW4gdGhlIHNhdmUgcG9pbnRzIGFuZCB0aGUgbWVyZ2Ug
cG9pbnRzLgorCisgICAgICAgIEJ5dGVjb2RlR3JhcGg8VW5saW5rZWRDb2RlQmxvY2s+JiBncmFw
aCA9IG1fZ2VuZXJhdG9yaWZpY2F0aW9uLmdyYXBoKCk7CisgICAgICAgIFVubGlua2VkQ29kZUJs
b2NrKiB1bmxpbmtlZENvZGVCbG9jayA9IGdyYXBoLmNvZGVCbG9jaygpOworICAgICAgICB1bnNp
Z25lZCBudW1iZXJPZlZhcmlhYmxlcyA9IHVubGlua2VkQ29kZUJsb2NrLT5tX251bUNhbGxlZUxv
Y2FsczsKKyAgICAgICAgZm9yIChzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiYg
YmxvY2sgOiBncmFwaC5iYXNpY0Jsb2NrcygpKSB7CisgICAgICAgICAgICBibG9jay0+aW4oKS5y
ZXNpemUobnVtYmVyT2ZWYXJpYWJsZXMpOworICAgICAgICAgICAgYmxvY2stPm91dCgpLnJlc2l6
ZShudW1iZXJPZlZhcmlhYmxlcyk7CisgICAgICAgICAgICBibG9jay0+aW4oKS5jbGVhckFsbCgp
OworICAgICAgICAgICAgYmxvY2stPm91dCgpLmNsZWFyQWxsKCk7CisgICAgICAgIH0KKworICAg
ICAgICBib29sIGNoYW5nZWQ7CisgICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogbGFzdEJsb2Nr
ID0gZ3JhcGguYmFzaWNCbG9ja3MoKS5sYXN0KCkuZ2V0KCk7CisgICAgICAgIGxhc3RCbG9jay0+
aW4oKS5jbGVhckFsbCgpOworICAgICAgICBsYXN0QmxvY2stPm91dCgpLmNsZWFyQWxsKCk7Cisg
ICAgICAgIEZhc3RCaXRWZWN0b3IgbmV3T3V0OworICAgICAgICBuZXdPdXQucmVzaXplKGxhc3RC
bG9jay0+b3V0KCkubnVtQml0cygpKTsKKyAgICAgICAgZG8geworICAgICAgICAgICAgY2hhbmdl
ZCA9IGZhbHNlOworICAgICAgICAgICAgZm9yIChzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNp
Y0Jsb2NrPiYgYmxvY2sgOiBncmFwaC5iYXNpY0Jsb2Nrc0luUmV2ZXJzZU9yZGVyKCkpIHsKKyAg
ICAgICAgICAgICAgICBuZXdPdXQuY2xlYXJBbGwoKTsKKyAgICAgICAgICAgICAgICBib29sIHNh
dmVCbG9jayA9IG1fZ2VuZXJhdG9yaWZpY2F0aW9uLmlzU2F2ZUJsb2NrKGJsb2NrLmdldCgpKTsK
KyAgICAgICAgICAgICAgICBmb3IgKEJ5dGVjb2RlQmFzaWNCbG9jayogc3VjY2Vzc29yIDogYmxv
Y2stPnN1Y2Nlc3NvcnMoKSkgeworICAgICAgICAgICAgICAgICAgICAvLyBEbyBub3QgaGFuZGxl
IHRoZSBlZGdlcyBiZXR3ZWVuIHRoZSBzYXZlIHBvaW50cyBhbmQgdGhlIG1lcmdlIHBvaW50cy4K
KyAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIGN1cnJlbnQgYmxvY2sgaXMgdGhlIHNhdmUg
YmxvY2sgKHRoYXQgYnJhbmNoIGlzIG9wX3NhdmUpLAorICAgICAgICAgICAgICAgICAgICAvLyBh
bmQgaWYgdGhlIHN1Y2Nlc3NvciBpcyB0aGUgYmxvY2sgdGhhdCBzdGFydHMgd2l0aCB0aGUgbWVy
Z2UgcG9pbnQsIHdlIGRyb3AgdGhpcyBlZGdlLgorICAgICAgICAgICAgICAgICAgICBpZiAoIShz
YXZlQmxvY2sgJiYgbV9nZW5lcmF0b3JpZmljYXRpb24uaXNNZXJnZUJsb2NrKHN1Y2Nlc3Nvcikp
KQorICAgICAgICAgICAgICAgICAgICAgICAgbmV3T3V0Lm1lcmdlKHN1Y2Nlc3Nvci0+aW4oKSk7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJvb2wgb3V0RGlkQ2hhbmdlID0g
YmxvY2stPm91dCgpLnNldEFuZENoZWNrKG5ld091dCk7CisgICAgICAgICAgICAgICAgbV9saXZl
bmVzc0FuYWx5c2lzLmNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQmxvY2soYmxvY2suZ2V0KCkpOwor
ICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gb3V0RGlkQ2hhbmdlOworICAgICAgICAgICAgfQor
ICAgICAgICB9IHdoaWxlIChjaGFuZ2VkKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQnl0ZWNv
ZGVHZW5lcmF0b3JpZmljYXRpb24mIG1fZ2VuZXJhdG9yaWZpY2F0aW9uOworICAgIEdlbmVyYXRv
ckxpdmVuZXNzQW5hbHlzaXMgbV9saXZlbmVzc0FuYWx5c2lzOworfTsKKworY2xhc3MgU2F2ZWRW
YXJpYWJsZXNBbmFseXNpcyB7CitwdWJsaWM6CisgICAgU2F2ZWRWYXJpYWJsZXNBbmFseXNpcyhC
eXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbiYgcGFzcykKKyAgICAgICAgOiBtX2dlbmVyYXRvcmlm
aWNhdGlvbihwYXNzKQorICAgIHsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEZWZG
dW5jdG9yPgorICAgIHZvaWQgc3RlcE92ZXJJbnN0cnVjdGlvbkZvclNhdmVkVmFyaWFibGVzKEJ5
dGVjb2RlQmFzaWNCbG9jayosIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBGYXN0Qml0VmVjdG9y
JiBpbiwgY29uc3QgRGVmRnVuY3RvciYgZGVmKQorICAgIHsKKyAgICAgICAgQnl0ZWNvZGVHcmFw
aDxVbmxpbmtlZENvZGVCbG9jaz4mIGdyYXBoID0gbV9nZW5lcmF0b3JpZmljYXRpb24uZ3JhcGgo
KTsKKyAgICAgICAgYXV0byYgaW5zdHJ1Y3Rpb25zID0gZ3JhcGguaW5zdHJ1Y3Rpb25zKCk7Cisg
ICAgICAgIFVubGlua2VkSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uID0gJmluc3RydWN0aW9uc1ti
eXRlY29kZU9mZnNldF07CisgICAgICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW5zdHJ1Y3Rpb24t
PnUub3Bjb2RlOworICAgICAgICBVbmxpbmtlZENvZGVCbG9jayogY29kZUJsb2NrID0gZ3JhcGgu
Y29kZUJsb2NrKCk7CisKKyAgICAgICAgLy8gb3BfcmVzdW1lIGNsZWFycyBhbGwgdGhlIGRlZnMu
CisgICAgICAgIGlmIChvcGNvZGVJRCA9PSBvcF9yZXN1bWUpIHsKKyAgICAgICAgICAgIGluLmNs
ZWFyQWxsKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBjb21w
dXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9jaywgb3Bjb2RlSUQsIGluc3RydWN0aW9u
LCBbJl0gKFVubGlua2VkQ29kZUJsb2NrKiwgVW5saW5rZWRJbnN0cnVjdGlvbiosIE9wY29kZUlE
LCBpbnQgb3BlcmFuZCkgeworICAgICAgICAgICAgaWYgKGlzVmFsaWRSZWdpc3RlckZvckxpdmVu
ZXNzKG9wZXJhbmQpKQorICAgICAgICAgICAgICAgIGRlZihWaXJ0dWFsUmVnaXN0ZXIob3BlcmFu
ZCkudG9Mb2NhbCgpKTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgYm9vbCBjb21wdXRlTG9j
YWxTYXZlZFZhcmlhYmxlc0ZvckJ5dGVjb2RlT2Zmc2V0KEJ5dGVjb2RlQmFzaWNCbG9jayogYmxv
Y2ssIHVuc2lnbmVkIHRhcmdldE9mZnNldCwgRmFzdEJpdFZlY3RvciYgcmVzdWx0KQorICAgIHsK
KyAgICAgICAgQVNTRVJUKCFibG9jay0+aXNFeGl0QmxvY2soKSk7CisgICAgICAgIEFTU0VSVCgh
YmxvY2stPmlzRW50cnlCbG9jaygpKTsKKworICAgICAgICBGYXN0Qml0VmVjdG9yIGluID0gYmxv
Y2stPmluKCk7CisKKyAgICAgICAgZm9yICh1bnNpZ25lZCBieXRlY29kZU9mZnNldCA6IGJsb2Nr
LT5ieXRlY29kZU9mZnNldHMoKSkgeworICAgICAgICAgICAgaWYgKHRhcmdldE9mZnNldCA8PSBi
eXRlY29kZU9mZnNldCkKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgc3Rl
cE92ZXJJbnN0cnVjdGlvbkZvclNhdmVkVmFyaWFibGVzKAorICAgICAgICAgICAgICAgIGJsb2Nr
LCBieXRlY29kZU9mZnNldCwgaW4sCisgICAgICAgICAgICAgICAgWyZdICh1bnNpZ25lZCBiaXRJ
bmRleCkgeworICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIHRoZSBkZWYgZnVuY3Rvciwg
c28gd2Ugc2V0IHRoZSBiaXQuCisgICAgICAgICAgICAgICAgICAgIGluLnNldChiaXRJbmRleCk7
CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gcmVzdWx0
LnNldEFuZENoZWNrKGluKTsKKyAgICB9CisKKyAgICBib29sIGNvbXB1dGVMb2NhbFNhdmVkVmFy
aWFibGVzRm9yQmxvY2soQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaykKKyAgICB7CisgICAgICAg
IGlmIChibG9jay0+aXNFeGl0QmxvY2soKSB8fCBibG9jay0+aXNFbnRyeUJsb2NrKCkpCisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBjb21wdXRlTG9jYWxTYXZlZFZh
cmlhYmxlc0ZvckJ5dGVjb2RlT2Zmc2V0KGJsb2NrLCBibG9jay0+bGVhZGVyQnl0ZWNvZGVPZmZz
ZXQoKSArIGJsb2NrLT50b3RhbEJ5dGVjb2RlTGVuZ3RoKCksIGJsb2NrLT5vdXQoKSk7CisgICAg
fQorCisgICAgRmFzdEJpdFZlY3RvciBnZXRTYXZlZFZhcmlhYmxlc0luZm9BdEJ5dGVjb2RlT2Zm
c2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KQorICAgIHsKKyAgICAgICAgQnl0ZWNvZGVCYXNp
Y0Jsb2NrKiBibG9jayA9IG1fZ2VuZXJhdG9yaWZpY2F0aW9uLmdyYXBoKCkuZmluZEJhc2ljQmxv
Y2tGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCk7CisgICAgICAgIEFTU0VSVChibG9j
ayk7CisgICAgICAgIEFTU0VSVCghYmxvY2stPmlzRW50cnlCbG9jaygpKTsKKyAgICAgICAgQVNT
RVJUKCFibG9jay0+aXNFeGl0QmxvY2soKSk7CisgICAgICAgIEZhc3RCaXRWZWN0b3IgaW47Cisg
ICAgICAgIGluLnJlc2l6ZShibG9jay0+aW4oKS5udW1CaXRzKCkpOworICAgICAgICBjb21wdXRl
TG9jYWxTYXZlZFZhcmlhYmxlc0ZvckJ5dGVjb2RlT2Zmc2V0KGJsb2NrLCBieXRlY29kZU9mZnNl
dCwgaW4pOworICAgICAgICByZXR1cm4gaW47CisgICAgfQorCisgICAgdm9pZCBydW4oKQorICAg
IHsKKyAgICAgICAgLy8gSWYgd2Ugc2F2ZSBhbGwgdGhlIHZhcmlhYmxlIHRoYXQgd2lsbCBiZSBy
ZXN1bWVkLCBpdCdzIE9LLgorICAgICAgICAvLyBCdXQgd2UgY2FuIGF2b2lkIHNvbWUgc2F2ZWQg
dmFyaWFibGVzIHRoYXQgYXJlIG9ubHkgZGVmaW5lZCBieSB0aGUgcHJldmlvdXMgb3BfcmVzdW1l
LgorICAgICAgICAvLworICAgICAgICAvLyBJbiB0aGlzIHBoYXNlLCB3ZSBwZXJmb3JtIGZvcndh
cmQgYW5hbHlzaXMgdG8gZXh0cmFjdCB3aGljaCB2YXJpYWJsZXMgbmVlZCB0byBiZSBuZXdseSBz
YXZlZCB3aGVuIGV4ZWN1dGluZyBvcF9zYXZlLgorICAgICAgICAvLyBXZSBjYWxjdWxhdGUgdGhl
IHJlZ2lzdGVycyB0aGF0IGlzIGRlZmluZWQgaW4gbm9uLW9wX3Jlc3VtZSBhbmQgY2FuIHJlYWNo
IHRvIHRoZSBvcF9zYXZlLgorICAgICAgICAvLworICAgICAgICAvLyAgIG9wX3Jlc3VtZSwgZGVm
aW5lIHIxCisgICAgICAgIC8vICAgLi4uCisgICAgICAgIC8vICAgLi4uCisgICAgICAgIC8vICAg
bm8tanVtcHMgJiBubyByMSBkZWZzLgorICAgICAgICAvLyAgIC4uLgorICAgICAgICAvLyAgIG9w
X3NhdmUgICMgSGVyZSwgaXQgaXMgbm90IG5lY2Vzc2FyeSB0byBzYXZlIHIxLgorICAgICAgICBC
eXRlY29kZUdyYXBoPFVubGlua2VkQ29kZUJsb2NrPiYgZ3JhcGggPSBtX2dlbmVyYXRvcmlmaWNh
dGlvbi5ncmFwaCgpOworICAgICAgICBVbmxpbmtlZENvZGVCbG9jayogdW5saW5rZWRDb2RlQmxv
Y2sgPSBncmFwaC5jb2RlQmxvY2soKTsKKworICAgICAgICAvLyBXZSBjb25zaWRlciB0aGUgYmFz
aWMgYmxvY2tzIHdpdGhpbiB0aGUgdHJ5IHJhbmdlIGFyZSBjb25zaWRlcmVkIGFzIHRoZSBpbXBs
aWNpdCBwcmVkZWNlc3NvcnMgb2YgdGhlIGhhbmRsZXJzLgorICAgICAgICAvLyBUaGUgZGVmcyBp
biB0aGVzZSBiYXNpYyBibG9ja3MgYXJlIGNhcnJpZWQgdG8gdGhlIGV4Y2VwdGlvbiBoYW5kbGVy
LiBBbmQgaWYgdGhlIG9wX3NhdmUgaXMgZXhlY3V0ZWQgaW4gdGhlIGhhbmRsZXIsCisgICAgICAg
IC8vIGNhcnJpZWQgZGVmcyBzaG91bGQgYmUgYWxzbyBjb25zaWRlcmVkLgorICAgICAgICAvLwor
ICAgICAgICAvLyBIZXJlLCB3ZSBhZGQgdGhlIHdob2xlIGJhc2ljIGJsb2NrcyBhcyB0aGUgaW1w
bGljaXQgcHJlZGVjZXNzb3JzIG9mIHRoZSBoYW5kbGVycyBmb3Igc2ltcGxpY2l0eS4KKyAgICAg
ICAgLy8gVGhpcyBpcyBhIGxpdHRsZSBiaXQgY29uc2VydmF0aXZlOiB0aGUgdHJ5IHJhbmdlIG1h
eSBub3QgY292ZXIgYWxsIHRoZSBiYXNpYyBibG9jay4gQnV0IHNpbmNlIHRoZSBvdXQgc2V0IHN0
YXR1cyBhdAorICAgICAgICAvLyB0aGUgdGFpbCBvZiB0aGUgYmFzaWMgYmxvY2sgaXMgYWx3YXlz
IGxhcmdlciB0aGFuIHRoZSBvdXQgc2V0IHN0YXR1cyBpbiB0aGUgbWlkZGxlIG9mIHRoZSBiYXNp
YyBibG9ja3MsIHRoaXMgZG9lcyBub3QKKyAgICAgICAgLy8gZmFpbCB0byBrZWVwIHRoZSB2YXJp
YWJsZXMgdGhhdCBzaG91bGQgYmUgc2F2ZWQuCisgICAgICAgIC8vCisgICAgICAgIC8vIE9ubHkg
dGhlIGV4Y2VwdGlvbiBpcyB0aGUgb3BfcmVzdW1lIGJsb2NrOiBvcF9yZXN1bWUgY2xlYXJzIGFs
bCB0aGUgZGVmcy4gQnV0IHNpbmNlIHRoZSByYW5nZSBiZXR3ZWVuIHRoZSBqdW1wIHRhcmdldAor
ICAgICAgICAvLyBmcm9tIHRoZSBnbG9iYWwgZGlzcGF0Y2ggYW5kIG9wX3Jlc3VtZSBpcyBuZXZl
ciBjb3ZlcmVkIGJ5IHRoZSB0cnkgcmFuZ2UsIGl0IGlzIG5vdCBhIHByb2JsZW0uCisgICAgICAg
IFZlY3RvcjxPcHRpb25hbDxGYXN0Qml0VmVjdG9yPj4gcG9zc2libGVQcmVkZWNlc3NvcnNGb3JI
YW5kbGVyczsKKyAgICAgICAgcG9zc2libGVQcmVkZWNlc3NvcnNGb3JIYW5kbGVycy5yZXNpemUo
Z3JhcGguYmFzaWNCbG9ja3MoKS5zaXplKCkpOworICAgICAgICB7CisgICAgICAgICAgICBhdXRv
JiBpbnN0cnVjdGlvbnMgPSBncmFwaC5pbnN0cnVjdGlvbnMoKTsKKyAgICAgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCB1bmxpbmtlZENvZGVCbG9jay0+bnVtYmVyT2ZFeGNlcHRpb25I
YW5kbGVycygpOyArK2kpIHsKKyAgICAgICAgICAgICAgICBhdXRvJiBoYW5kbGVyID0gdW5saW5r
ZWRDb2RlQmxvY2stPmV4Y2VwdGlvbkhhbmRsZXIoaSk7CisKKyAgICAgICAgICAgICAgICBGYXN0
Qml0VmVjdG9yIHByZWRlY2Vzc29yczsKKyAgICAgICAgICAgICAgICBwcmVkZWNlc3NvcnMucmVz
aXplKGdyYXBoLmJhc2ljQmxvY2tzKCkuc2l6ZSgpKTsKKyAgICAgICAgICAgICAgICBmb3IgKHVu
c2lnbmVkIGJ5dGVjb2RlT2Zmc2V0ID0gaGFuZGxlci5zdGFydDsgYnl0ZWNvZGVPZmZzZXQgPCBo
YW5kbGVyLmVuZDspIHsKKyAgICAgICAgICAgICAgICAgICAgVW5saW5rZWRJbnN0cnVjdGlvbiog
aW5zdHJ1Y3Rpb24gPSAmaW5zdHJ1Y3Rpb25zW2J5dGVjb2RlT2Zmc2V0XTsKKyAgICAgICAgICAg
ICAgICAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnN0cnVjdGlvbi0+dS5vcGNvZGU7CisgICAg
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIG9wY29kZUxlbmd0aCA9IG9wY29kZUxlbmd0aHNbb3Bj
b2RlSURdOworCisgICAgICAgICAgICAgICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogcG9zc2li
bGVQcmVkZWNlc3NvciA9IGdyYXBoLmZpbmRCYXNpY0Jsb2NrRm9yQnl0ZWNvZGVPZmZzZXQoYnl0
ZWNvZGVPZmZzZXQpOworICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChwb3NzaWJs
ZVByZWRlY2Vzc29yKTsKKyAgICAgICAgICAgICAgICAgICAgcHJlZGVjZXNzb3JzLnNldChwb3Nz
aWJsZVByZWRlY2Vzc29yLT5pbmRleCgpKTsKKworICAgICAgICAgICAgICAgICAgICBieXRlY29k
ZU9mZnNldCArPSBvcGNvZGVMZW5ndGg7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogaGFuZGxlckJsb2NrID0gZ3JhcGguZmluZEJhc2ljQmxv
Y2tXaXRoTGVhZGVyT2Zmc2V0KGhhbmRsZXIudGFyZ2V0KTsKKyAgICAgICAgICAgICAgICBwb3Nz
aWJsZVByZWRlY2Vzc29yc0ZvckhhbmRsZXJzW2hhbmRsZXJCbG9jay0+aW5kZXgoKV0gPSBXVEZN
b3ZlKHByZWRlY2Vzc29ycyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICB1
bnNpZ25lZCBudW1iZXJPZlZhcmlhYmxlcyA9IHVubGlua2VkQ29kZUJsb2NrLT5tX251bUNhbGxl
ZUxvY2FsczsKKyAgICAgICAgZm9yIChzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2Nr
PiYgYmxvY2sgOiBncmFwaC5iYXNpY0Jsb2NrcygpKSB7CisgICAgICAgICAgICBibG9jay0+aW4o
KS5yZXNpemUobnVtYmVyT2ZWYXJpYWJsZXMpOworICAgICAgICAgICAgYmxvY2stPm91dCgpLnJl
c2l6ZShudW1iZXJPZlZhcmlhYmxlcyk7CisgICAgICAgICAgICBibG9jay0+aW4oKS5jbGVhckFs
bCgpOworICAgICAgICAgICAgYmxvY2stPm91dCgpLmNsZWFyQWxsKCk7CisgICAgICAgIH0KKwor
ICAgICAgICBib29sIGNoYW5nZWQ7CisgICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogZmlyc3RC
bG9jayA9IGdyYXBoLmJhc2ljQmxvY2tzKCkuZmlyc3QoKS5nZXQoKTsKKyAgICAgICAgRmFzdEJp
dFZlY3RvciBuZXdJbjsKKyAgICAgICAgbmV3SW4ucmVzaXplKGZpcnN0QmxvY2stPmluKCkubnVt
Qml0cygpKTsKKyAgICAgICAgZG8geworICAgICAgICAgICAgY2hhbmdlZCA9IGZhbHNlOworICAg
ICAgICAgICAgZm9yIChzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiYgYmxvY2sg
OiBncmFwaC5iYXNpY0Jsb2NrcygpKSB7CisgICAgICAgICAgICAgICAgbmV3SW4uY2xlYXJBbGwo
KTsKKyAgICAgICAgICAgICAgICBib29sIG1lcmdlQmxvY2sgPSBtX2dlbmVyYXRvcmlmaWNhdGlv
bi5pc01lcmdlQmxvY2soYmxvY2suZ2V0KCkpOworICAgICAgICAgICAgICAgIGZvciAoQnl0ZWNv
ZGVCYXNpY0Jsb2NrKiBwcmVkZWNlc3NvciA6IGJsb2NrLT5wcmVkZWNlc3NvcnMoKSkgeworICAg
ICAgICAgICAgICAgICAgICAvLyBNZXJnZSB0aGUgb3V0IHNldCBvZiB0aGUgaW5jb21pbmcgcHJl
ZGVjZXNzb3JzIHVubGVzcyB0aGUgY3VycmVudCBibG9jayBzdGFydHMKKyAgICAgICAgICAgICAg
ICAgICAgLy8gd2l0aCB0aGUgbWVyZ2UgcG9pbnQgYW5kIHRoZSBwcmVkZWNlc3NvciBlbmRzIHdp
dGggdGhlIHNhdmUgcG9pbnQuCisgICAgICAgICAgICAgICAgICAgIGlmICghKG1lcmdlQmxvY2sg
JiYgbV9nZW5lcmF0b3JpZmljYXRpb24uaXNTYXZlQmxvY2socHJlZGVjZXNzb3IpKSkKKyAgICAg
ICAgICAgICAgICAgICAgICAgIG5ld0luLm1lcmdlKHByZWRlY2Vzc29yLT5vdXQoKSk7CisgICAg
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYgKGF1dG8mIG9wdGlvbmFsUHJlZGVj
ZXNzb3JTZXQgPSBwb3NzaWJsZVByZWRlY2Vzc29yc0ZvckhhbmRsZXJzW2Jsb2NrLT5pbmRleCgp
XSkgeworICAgICAgICAgICAgICAgICAgICBvcHRpb25hbFByZWRlY2Vzc29yU2V0LT5mb3JFYWNo
U2V0Qml0KFsmXSAodW5zaWduZWQgYmxvY2tJbmRleCkgeworICAgICAgICAgICAgICAgICAgICAg
ICAgbmV3SW4ubWVyZ2UoZ3JhcGguYmFzaWNCbG9ja3MoKVtibG9ja0luZGV4XS0+b3V0KCkpOwor
ICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
ICAgICBibG9jay0+aW4oKS5zZXQobmV3SW4pOworICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0g
Y29tcHV0ZUxvY2FsU2F2ZWRWYXJpYWJsZXNGb3JCbG9jayhibG9jay5nZXQoKSk7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0gd2hpbGUgKGNoYW5nZWQpOworICAgIH0KKworcHJpdmF0ZToKKyAg
ICBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbiYgbV9nZW5lcmF0b3JpZmljYXRpb247Cit9Owor
CisKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb246OnJ1bigpCit7CisgICAgLy8gRmly
c3QsIHdlIGNhbGN1bGF0ZSB0aGUgbGl2ZW5lc3MgYXQgZWFjaCBtZXJnZSBwb2ludC4gVGhpcyBn
aXZlcyB1cyB0aGUgaW5mb3JtYXRpb24gd2hpY2ggcmVnaXN0ZXJzIHNob3VsZCBiZSBzYXZlZCBh
bmQgcmVzdW1lZCBjb25zZXJ2YXRpdmVseS4KKyAgICAvLyBIb3dldmVyLCB0aGlzIGluZm9ybWF0
aW9uIGlzIHRvbyBjb25zZXJ2YXRpdmUuIFdlIG5vdyB1bm5lY2Vzc2FyaWx5IHNhdmUgYW5kIHJl
c3VtZSB0aGUgcmVnaXN0ZXJzLgorICAgIC8vIFdoZW4gdGhlIGxvY2FsIHJlZ2lzdGVyIGlzIHJl
ZmVyZW5jZWQgZnJvbSB0aGUgcG9pbnQgd2hpY2ggaXMgb3ZlciBtdWx0aXBsZSB5aWVsZHMsIHRo
ZSBwcm9ibGVtIGhhcHBlbnMuCisgICAgLy8KKyAgICAvLyAgIGZ1bmN0aW9uICpnZW4oKQorICAg
IC8vICAgeworICAgIC8vICAgICAgIHZhciB0YXJnZXQgPSA0MjsKKyAgICAvLyAgICAgICB5aWVs
ZCAzMDsgIC8vIEhlcmUsIHdlIHNob3VsZCBzYXZlICJ0YXJnZXQiLiBJdCBpcyBPSy4gQnV0IGF0
IHRoZSByZXN1bWUgcG9pbnQsIHdlIHVubmVjZXNzYXJ5IHJlc3VtZSAidGFyZ2V0IiBoZXJlLgor
ICAgIC8vICAgICAgIHlpZWxkIDQwOyAgLy8gQW5kIGhlcmUsIHdlIHVubmVjZXNzYXJpbHkgc2F2
ZSAidGFyZ2V0Iiwgc2luY2UgaXQgaXMgKmRlZippbmVkIGJ5IHRoZSBwcmV2aW91cyByZXN1bWUu
CisgICAgLy8gICAgICAgeWllbGQgdGFyZ2V0OyAgLy8gQW5kIHJlZmVyZW5jZSB0aGUgInRhcmdl
dCIgaGVyZS4KKyAgICAvLyAgIH0KKyAgICAvLworICAgIC8vIEluIHRoZSBhYm92ZSBleGFtcGxl
LCBmaXJzdCB5aWVsZCdzIHJlc3VtZSBhbmQgc2Vjb25kIHlpZWxkJ3Mgc2F2ZSBpcyB1bm5lY2Vz
c2FyeSBzaW5jZSB0aGUgdmFsdWUgaXMgbm90IGNoYW5nZWQgZHVyaW5nIHRoZSBzZWNvbmQgY2Fs
bCBvZiBuZXh0KCkuCisgICAgLy8gVG8gcmVkdWNlIHRoZSB1bm5lY2Vzc2FyeSByZWdpc3RlciBz
YXZlIGFuZCByZXN1bWUsIHdlIHJ1biAyIGFuYWx5c2lzLCAicmVzdW1lZCB2YXJpYWJsZXMgYW5h
bHlzaXMiIGFuZCAic2F2ZWQgdmFyaWFibGVzIGFuYWx5c2lzIi4KKyAgICAvLyBBdCB0aGF0IHRp
bWUsIHdlIGRyb3AgdGhlIGVkZ2UgZnJvbSBvcF9zYXZlIHRvIHRoZSBtZXJnZSBwb2ludC4gU28g
dGhlIGdyYXBoIG5vdyBiZWNvbWVzIGFzIGZvbGxvd3MuCisgICAgLy8KKyAgICAvLyBCZWZvcmU6
CisgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9mIGNvdXJzZSwgc3VjaCBlZGdlcyBjYW4g
YmUgc2VlbikKKyAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
b3BfcmV0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tKworICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBeICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgLy8gICAgICAgICBlbnRyeSAtPiBnZW5lcmF0
b3Igc3dpdGNoIC0tLS0+IG9wX3NhdmUgLS0tLS0tLS0tLS0tLS0rICAgICAgICAgICAgICAgfCAg
ICAgICAgb3BfcmV0ICAgICAgICAgICAgICAgICAgIHwKKyAgICAvLyAgICAgICAgICAgICAgICAg
ICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYgICAgICAgICAg
ICAgICB8ICAgICAgICAgIF4gICAgICAgICAgICAgICAgICAgICAgfAorICAgIC8vICAgICAgICAg
ICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tPiBvcF9yZXN1bWUgLS0tLS0+IG1lcmdlIHBv
aW50IC0+IC4uLi4uLisuLi4uLi0+IG9wX3NhdmUgLS0tLS0rICAgICAgICAgICB8CisgICAgLy8g
ICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYgICAgICAgICAgIHYK
KyAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT4gb3BfcmVzdW1lIC0tLS0+IG1lcmdlIHBvaW50
IC0+IC4uLi4uLgorICAgIC8vCisgICAgLy8gQWZ0ZXI6CisgICAgLy8gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKG9mIGNvdXJzZSwgc3VjaCBlZGdlcyBjYW4gYmUgc2VlbikKKyAgICAvLyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BfcmV0ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgIC8v
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8
CisgICAgLy8gICAgICAgICBlbnRyeSAtPiBnZW5lcmF0b3Igc3dpdGNoIC0tLS0+IG9wX3NhdmUg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgb3BfcmV0ICAgICAgICAgICAg
ICAgICAgIHwKKyAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgIF4gICAgICAg
ICAgICAgICAgICAgICAgfAorICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0t
LS0tLS0tPiBvcF9yZXN1bWUgLS0tLS0+IG1lcmdlIHBvaW50IC0+IC4uLi4uLisuLi4uLi0+IG9w
X3NhdmUgICAgICAgICAgICAgICAgICB8CisgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICB8
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYKKyAgICAvLyAgICAgICAgICAgICAgICAg
ICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLT4gb3BfcmVzdW1lIC0tLS0+IG1lcmdlIHBvaW50IC0+IC4uLi4uLgorICAgIC8vCisgICAg
Ly8gSW4gcmVzdW1lZCB2YXJpYWJsZXMgYW5hbHlzaXMsIHdlIGp1c3QgcnVuIHRoZSBsaXZlbmVz
cyBhbmFseXNpcyBhZ2FpbiBvbnRvIHRoaXMgIkFmdGVyIiBncmFwaC4gVGhlIGFuYWx5c2lzIGV4
dHJhY3RzIHRoZSBsaXZlbmVzcyBhdCBtZXJnZSBwb2ludCwKKyAgICAvLyBhbmQgdGhpcyBsaXZl
bmVzcyBvbmx5IGNvbnNpZGVycyB0aGUgcmVhY2hhYmxlIGJsb2NrcyBmcm9tIHRoZSB0YXJnZXQg
b3BfcmVzdW1lLiBUaGUgcmVzdWx0IHJlZ2lzdGVycyBhcmUgc21hbGxlciBzZXQgdGhhbiB0aGUg
c2V0IHdoaWNoIGlzIGV4dHJhY3RlZCBpbgorICAgIC8vIHRoZSBwcmV2aW91cyBsaXZlbmVzcyBh
bmFseXNpcy4KKyAgICAvLworICAgIC8vIEluIHNhdmVkIHZhcmlhYmxlcyBhbmFseXNpcywgd2Ug
cnVuIHRoZSBmb3J3YXJkIGFuYWx5c2lzIG9udG8gdGhpcyAiQWZ0ZXIiIGdyYXBoLiBJbiB0aGlz
IGZvcndhcmQgYW5hbHlzaXMsIHdlIHByb3BhZ2F0ZSB0aGUgImRlZiJzLgorICAgIC8vIFRoaXMg
YW5hbHlzaXMgZXh0cmFjdHMgdGhlIG5ld2x5IGRlZi1lZCByZWdpc3RlcnMgdGhhdCBjYW4gcmVh
Y2ggdG8gdGhlIG9wX3NhdmUgcG9pbnQuIEJ1dCB0aGlzIG5ld2x5IGRlZi1lZCByZWdpc3RlcnMg
aW5jbHVkZSB0aGUgcmVnaXN0ZXJzIHRoYXQgd29uJ3QgYmUKKyAgICAvLyB1c2VkIGluIHRoZSBz
dWJzZXF1ZW50IG5leHQoKSBjYWxscyBhZnRlciB0aGlzIG9wX3NhdmUuIFNvIHdlIGV4dHJhY3Qg
dGhlIG5lY2Vzc2FyaWx5IHNhdmVkIHJlZ2lzdGVycyBieSBtYXNraW5nIGxpdmUgcmVnaXN0ZXJz
IHdpdGggdGhpcyBuZXdseSBkZWYtZWQgcmVnaXN0ZXJzIGJpdCBzZXQuCisKKyAgICB7CisgICAg
ICAgIEdlbmVyYXRvckxpdmVuZXNzQW5hbHlzaXMgcGFzcygqdGhpcyk7CisgICAgICAgIHBhc3Mu
cnVuKCk7CisgICAgICAgIGZvciAoWWllbGREYXRhJiBkYXRhIDogbV95aWVsZHMpCisgICAgICAg
ICAgICBkYXRhLmxpdmVuZXNzID0gcGFzcy5nZXRMaXZlbmVzc0luZm9BdEJ5dGVjb2RlT2Zmc2V0
KGRhdGEubWVyZ2VQb2ludCk7CisgICAgfQorCisgICAgeworICAgICAgICBSZXN1bWVkVmFyaWFi
bGVzQW5hbHlzaXMgcGFzcygqdGhpcyk7CisgICAgICAgIHBhc3MucnVuKCk7CisgICAgICAgIGZv
ciAoWWllbGREYXRhJiBkYXRhIDogbV95aWVsZHMpIHsKKyAgICAgICAgICAgIGRhdGEucmVzdW1l
ZCA9IGRhdGEubGl2ZW5lc3M7CisgICAgICAgICAgICBkYXRhLnJlc3VtZWQuZmlsdGVyKHBhc3Mu
Z2V0UmVzdW1lZFZhcmlhYmxlc0luZm9BdEJ5dGVjb2RlT2Zmc2V0KGRhdGEubWVyZ2VQb2ludCkp
OworICAgICAgICB9CisgICAgfQorCisgICAgeworICAgICAgICBTYXZlZFZhcmlhYmxlc0FuYWx5
c2lzIHBhc3MoKnRoaXMpOworICAgICAgICBwYXNzLnJ1bigpOworICAgICAgICBmb3IgKFlpZWxk
RGF0YSYgZGF0YSA6IG1feWllbGRzKSB7CisgICAgICAgICAgICBkYXRhLnNhdmVkID0gZGF0YS5s
aXZlbmVzczsKKyAgICAgICAgICAgIGRhdGEuc2F2ZWQuZmlsdGVyKHBhc3MuZ2V0U2F2ZWRWYXJp
YWJsZXNJbmZvQXRCeXRlY29kZU9mZnNldChkYXRhLnNhdmVQb2ludCkpOworICAgICAgICB9Cisg
ICAgfQorCisgICAgVW5saW5rZWRDb2RlQmxvY2sqIGNvZGVCbG9jayA9IG1fZ3JhcGguY29kZUJs
b2NrKCk7CisgICAgZm9yIChjb25zdCBZaWVsZERhdGEmIGRhdGEgOiBtX3lpZWxkcykgeworICAg
ICAgICBWaXJ0dWFsUmVnaXN0ZXIgc2NvcGUgPSB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudCg1
KTsKKworICAgICAgICAvLyBvcF9zYXZlLgorICAgICAgICBkYXRhLnNhdmVkLmZvckVhY2hTZXRC
aXQoWyZdKHNpemVfdCBpbmRleCkgeworICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIG9wZXJh
bmQgPSB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChpbmRleCk7CisgICAgICAgICAgICBTdG9yYWdl
IHN0b3JhZ2UgPSBzdG9yYWdlRm9yR2VuZXJhdG9yTG9jYWwoaW5kZXgpOworCisgICAgICAgICAg
ICBtX2luc2VydGlvblNldC5pbnNlcnQoZGF0YS5zYXZlUG9pbnQsIEJ5dGVjb2RlTW9kaWZpY2F0
aW9uU2V0OjpJbnNlcnRlZEJ5dGVjb2RlIHsgeworICAgICAgICAgICAgICAgIG9wX3B1dF90b19z
Y29wZSwKKyAgICAgICAgICAgICAgICBzY29wZS5vZmZzZXQoKSwgLy8gc2NvcGUKKyAgICAgICAg
ICAgICAgICBzdG9yYWdlLmlkZW50aWZpZXJJbmRleCwgLy8gaWRlbnRpZmllcgorICAgICAgICAg
ICAgICAgIG9wZXJhbmQub2Zmc2V0KCksIC8vIHZhbHVlCisgICAgICAgICAgICAgICAgR2V0UHV0
SW5mbyhEb05vdFRocm93SWZOb3RGb3VuZCwgTG9jYWxDbG9zdXJlVmFyLCBJbml0aWFsaXphdGlv
bk1vZGU6Ok5vdEluaXRpYWxpemF0aW9uKS5vcGVyYW5kKCksIC8vIGluZm8KKyAgICAgICAgICAg
ICAgICBtX2dlbmVyYXRvckZyYW1lU3ltYm9sVGFibGVJbmRleCwgLy8gc3ltYm9sIHRhYmxlIGNv
bnN0YW50IGluZGV4CisgICAgICAgICAgICAgICAgc3RvcmFnZS5zY29wZU9mZnNldC5vZmZzZXQo
KSwgLy8gc2NvcGUgb2Zmc2V0CisgICAgICAgICAgICB9IH0pOworICAgICAgICB9KTsKKworICAg
ICAgICAvLyBvcF9yZXN1bWUuCisgICAgICAgIGRhdGEucmVzdW1lZC5mb3JFYWNoU2V0Qml0KFsm
XShzaXplX3QgaW5kZXgpIHsKKyAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kID0g
dmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaW5kZXgpOworICAgICAgICAgICAgU3RvcmFnZSBzdG9y
YWdlID0gc3RvcmFnZUZvckdlbmVyYXRvckxvY2FsKGluZGV4KTsKKworICAgICAgICAgICAgVW5s
aW5rZWRWYWx1ZVByb2ZpbGUgcHJvZmlsZSA9IGNvZGVCbG9jay0+YWRkVmFsdWVQcm9maWxlKCk7
CisgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnQoZGF0YS5yZXN1bWVQb2ludCwgQnl0
ZWNvZGVNb2RpZmljYXRpb25TZXQ6Okluc2VydGVkQnl0ZWNvZGUgeyB7CisgICAgICAgICAgICAg
ICAgb3BfZ2V0X2Zyb21fc2NvcGUsCisgICAgICAgICAgICAgICAgb3BlcmFuZC5vZmZzZXQoKSwg
Ly8gZHN0CisgICAgICAgICAgICAgICAgc2NvcGUub2Zmc2V0KCksIC8vIHNjb3BlCisgICAgICAg
ICAgICAgICAgc3RvcmFnZS5pZGVudGlmaWVySW5kZXgsIC8vIGlkZW50aWZpZXIKKyAgICAgICAg
ICAgICAgICBHZXRQdXRJbmZvKERvTm90VGhyb3dJZk5vdEZvdW5kLCBMb2NhbENsb3N1cmVWYXIs
IEluaXRpYWxpemF0aW9uTW9kZTo6Tm90SW5pdGlhbGl6YXRpb24pLm9wZXJhbmQoKSwgLy8gaW5m
bworICAgICAgICAgICAgICAgIDAsIC8vIGxvY2FsIHNjb3BlIGRlcHRoCisgICAgICAgICAgICAg
ICAgc3RvcmFnZS5zY29wZU9mZnNldC5vZmZzZXQoKSwgLy8gc2NvcGUgb2Zmc2V0CisgICAgICAg
ICAgICAgICAgcHJvZmlsZSAvLyBwcm9maWxlCisgICAgICAgICAgICB9IH0pOworICAgICAgICB9
KTsKKworICAgICAgICAvLyBDbGlwIHRoZSB1bm5lY2Vzc2FyeSBieXRlY29kZXMuCisgICAgICAg
IG1faW5zZXJ0aW9uU2V0LnJlbW92ZUJ5dGVjb2RlKGRhdGEuc2F2ZVBvaW50KTsKKyAgICAgICAg
bV9pbnNlcnRpb25TZXQucmVtb3ZlQnl0ZWNvZGUoZGF0YS5yZXN1bWVQb2ludCk7CisgICAgfQor
CisgICAgbV9pbnNlcnRpb25TZXQuZXhlY3V0ZSgpOworfQorCit2b2lkIHBlcmZvcm1HZW5lcmF0
b3JpZmljYXRpb24oVW5saW5rZWRDb2RlQmxvY2sqIGNvZGVCbG9jaywgVW5saW5rZWRDb2RlQmxv
Y2s6OlVucGFja2VkSW5zdHJ1Y3Rpb25zJiBpbnN0cnVjdGlvbnMsIFN5bWJvbFRhYmxlKiBnZW5l
cmF0b3JGcmFtZVN5bWJvbFRhYmxlLCBpbnQgZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZUluZGV4
KQoreworICAgIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uIHBhc3MoY29kZUJsb2NrLCBpbnN0
cnVjdGlvbnMsIGdlbmVyYXRvckZyYW1lU3ltYm9sVGFibGUsIGdlbmVyYXRvckZyYW1lU3ltYm9s
VGFibGVJbmRleCk7CisgICAgcGFzcy5ydW4oKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0
b3JpZmljYXRpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUdl
bmVyYXRvcmlmaWNhdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmViN2VjOTZlZDcwZGJiYTIyMTExZWIxMzc3
MzNmYjIwMDU1YjExMWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uaApAQCAtMCwwICsxLDM2IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE2IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJVbmxpbmtlZENvZGVC
bG9jay5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgU3ltYm9sVGFibGU7CisKK3ZvaWQg
cGVyZm9ybUdlbmVyYXRvcmlmaWNhdGlvbihVbmxpbmtlZENvZGVCbG9jayosIFVubGlua2VkQ29k
ZUJsb2NrOjpVbnBhY2tlZEluc3RydWN0aW9ucyYsIFN5bWJvbFRhYmxlKiBnZW5lcmF0b3JGcmFt
ZVN5bWJvbFRhYmxlLCBpbnQgZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZUluZGV4KTsKKworfSAv
LyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVHcmFwaC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVj
b2RlR3JhcGguaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNzU1ODRiMGZhOTQ3M2ViMTEzMjljODlhMDc5OWMwMWRl
NTViMjgxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlR3JhcGguaApAQCAtMCwwICsxLDExNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNiBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgQnl0ZWNvZGVHcmFwaF9oCisjZGVmaW5lIEJ5dGVjb2RlR3JhcGhfaAorCisjaW5jbHVk
ZSAiQnl0ZWNvZGVCYXNpY0Jsb2NrLmgiCisjaW5jbHVkZSA8d3RmL0l0ZXJhdG9yUmFuZ2UuaD4K
KyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBCeXRl
Y29kZUJhc2ljQmxvY2s7CisKK3RlbXBsYXRlPHR5cGVuYW1lIEJsb2NrPgorY2xhc3MgQnl0ZWNv
ZGVHcmFwaCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoQnl0ZWNvZGVHcmFwaCk7CitwdWJsaWM6CisgICAgdHlwZWRlZiBWZWN0b3I8c3Rk
Ojp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+IEJhc2ljQmxvY2tzVmVjdG9yOworCisg
ICAgaW5saW5lIEJ5dGVjb2RlR3JhcGgoQmxvY2sqLCB0eXBlbmFtZSBCbG9jazo6VW5wYWNrZWRJ
bnN0cnVjdGlvbnMmKTsKKworICAgIEJsb2NrKiBjb2RlQmxvY2soKSBjb25zdCB7IHJldHVybiBt
X2NvZGVCbG9jazsgfQorCisgICAgQmFzaWNCbG9ja3NWZWN0b3ImIGJhc2ljQmxvY2tzKCkgeyBy
ZXR1cm4gbV9iYXNpY0Jsb2NrczsgfQorCisgICAgdHlwZW5hbWUgQmxvY2s6OlVucGFja2VkSW5z
dHJ1Y3Rpb25zJiBpbnN0cnVjdGlvbnMoKSB7IHJldHVybiBtX2luc3RydWN0aW9uczsgfQorCisg
ICAgV1RGOjpJdGVyYXRvclJhbmdlPEJhc2ljQmxvY2tzVmVjdG9yOjpyZXZlcnNlX2l0ZXJhdG9y
PiBiYXNpY0Jsb2Nrc0luUmV2ZXJzZU9yZGVyKCkKKyAgICB7CisgICAgICAgIHJldHVybiBXVEY6
Om1ha2VJdGVyYXRvclJhbmdlKG1fYmFzaWNCbG9ja3MucmJlZ2luKCksIG1fYmFzaWNCbG9ja3Mu
cmVuZCgpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgYm9vbCBibG9ja0NvbnRhaW5zQnl0ZWNvZGVP
ZmZzZXQoQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaywgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQp
CisgICAgeworICAgICAgICB1bnNpZ25lZCBsZWFkZXJPZmZzZXQgPSBibG9jay0+bGVhZGVyQnl0
ZWNvZGVPZmZzZXQoKTsKKyAgICAgICAgcmV0dXJuIGJ5dGVjb2RlT2Zmc2V0ID49IGxlYWRlck9m
ZnNldCAmJiBieXRlY29kZU9mZnNldCA8IGxlYWRlck9mZnNldCArIGJsb2NrLT50b3RhbEJ5dGVj
b2RlTGVuZ3RoKCk7CisgICAgfQorCisgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBmaW5kQmFzaWNC
bG9ja0ZvckJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KQorICAgIHsKKyAg
ICAgICAgLyoKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2Jhc2ljQmxv
Y2tzLnNpemUoKTsgaSsrKSB7CisgICAgICAgICAgICAgICAgaWYgKGJsb2NrQ29udGFpbnNCeXRl
Y29kZU9mZnNldChtX2Jhc2ljQmxvY2tzW2ldLmdldCgpLCBieXRlY29kZU9mZnNldCkpCisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBtX2Jhc2ljQmxvY2tzW2ldLmdldCgpOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICovCisKKyAgICAgICAgc3RkOjp1
bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4qIGJhc2ljQmxvY2sgPSBhcHByb3hpbWF0ZUJp
bmFyeVNlYXJjaDxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiwgdW5zaWduZWQ+
KG1fYmFzaWNCbG9ja3MsIG1fYmFzaWNCbG9ja3Muc2l6ZSgpLCBieXRlY29kZU9mZnNldCwgW10g
KHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+KiBiYXNpY0Jsb2NrKSB7IHJldHVy
biAoKmJhc2ljQmxvY2spLT5sZWFkZXJCeXRlY29kZU9mZnNldCgpOyB9KTsKKyAgICAgICAgLy8g
V2UgZm91bmQgdGhlIGJsb2NrIHdlIHdlcmUgbG9va2luZyBmb3IuCisgICAgICAgIGlmIChibG9j
a0NvbnRhaW5zQnl0ZWNvZGVPZmZzZXQoKCpiYXNpY0Jsb2NrKS5nZXQoKSwgYnl0ZWNvZGVPZmZz
ZXQpKQorICAgICAgICAgICAgcmV0dXJuICgqYmFzaWNCbG9jaykuZ2V0KCk7CisKKyAgICAgICAg
Ly8gQmFzaWMgYmxvY2sgaXMgdG8gdGhlIGxlZnQgb2YgdGhlIHJldHVybmVkIGJsb2NrLgorICAg
ICAgICBpZiAoYnl0ZWNvZGVPZmZzZXQgPCAoKmJhc2ljQmxvY2spLT5sZWFkZXJCeXRlY29kZU9m
ZnNldCgpKSB7CisgICAgICAgICAgICBBU1NFUlQoYmFzaWNCbG9jayAtIDEgPj0gbV9iYXNpY0Js
b2Nrcy5kYXRhKCkpOworICAgICAgICAgICAgQVNTRVJUKGJsb2NrQ29udGFpbnNCeXRlY29kZU9m
ZnNldChiYXNpY0Jsb2NrWy0xXS5nZXQoKSwgYnl0ZWNvZGVPZmZzZXQpKTsKKyAgICAgICAgICAg
IHJldHVybiBiYXNpY0Jsb2NrWy0xXS5nZXQoKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEJh
c2ljIGJsb2NrIGlzIHRvIHRoZSByaWdodCBvZiB0aGUgcmV0dXJuZWQgYmxvY2suCisgICAgICAg
IEFTU0VSVCgmYmFzaWNCbG9ja1sxXSA8PSAmbV9iYXNpY0Jsb2Nrcy5sYXN0KCkpOworICAgICAg
ICBBU1NFUlQoYmxvY2tDb250YWluc0J5dGVjb2RlT2Zmc2V0KGJhc2ljQmxvY2tbMV0uZ2V0KCks
IGJ5dGVjb2RlT2Zmc2V0KSk7CisgICAgICAgIHJldHVybiBiYXNpY0Jsb2NrWzFdLmdldCgpOwor
ICAgIH0KKworICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogZmluZEJhc2ljQmxvY2tXaXRoTGVhZGVy
T2Zmc2V0KHVuc2lnbmVkIGxlYWRlck9mZnNldCkKKyAgICB7CisgICAgICAgIHJldHVybiAoKnRy
eUJpbmFyeVNlYXJjaDxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiwgdW5zaWdu
ZWQ+KG1fYmFzaWNCbG9ja3MsIG1fYmFzaWNCbG9ja3Muc2l6ZSgpLCBsZWFkZXJPZmZzZXQsIFtd
IChzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiogYmFzaWNCbG9jaykgeyByZXR1
cm4gKCpiYXNpY0Jsb2NrKS0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKTsgfSkpLmdldCgpOworICAg
IH0KKworcHJpdmF0ZToKKyAgICBCbG9jayogbV9jb2RlQmxvY2s7CisgICAgQmFzaWNCbG9ja3NW
ZWN0b3IgbV9iYXNpY0Jsb2NrczsKKyAgICB0eXBlbmFtZSBCbG9jazo6VW5wYWNrZWRJbnN0cnVj
dGlvbnMmIG1faW5zdHJ1Y3Rpb25zOworfTsKKworCit0ZW1wbGF0ZTx0eXBlbmFtZSBCbG9jaz4K
K0J5dGVjb2RlR3JhcGg8QmxvY2s+OjpCeXRlY29kZUdyYXBoKEJsb2NrKiBjb2RlQmxvY2ssIHR5
cGVuYW1lIEJsb2NrOjpVbnBhY2tlZEluc3RydWN0aW9ucyYgaW5zdHJ1Y3Rpb25zKQorICAgIDog
bV9jb2RlQmxvY2soY29kZUJsb2NrKQorICAgICwgbV9pbnN0cnVjdGlvbnMoaW5zdHJ1Y3Rpb25z
KQoreworICAgIEFTU0VSVChtX2NvZGVCbG9jayk7CisgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrOjpj
b21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2NrcyhtX2NvZGVCbG9jaywgaW5zdHJ1Y3Rpb25zLmJlZ2lu
KCksIGluc3RydWN0aW9ucy5zaXplKCksIG1fYmFzaWNCbG9ja3MpOworICAgIEFTU0VSVChtX2Jh
c2ljQmxvY2tzLnNpemUoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworI2VuZGlmIC8vIEJ5
dGVjb2RlR3JhcGhfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNwcAppbmRleCAxN2U4MmEyZmJiYTAxNTA0
M2U5OWQzNGVkMjU2OTM3MmIzNmY3YTg1Li5lYjQ1OWQxMjk3YzlmNzM5ZWU5ZmJhYTEzMDM3Zjg5
ZjhlODZhYjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNwcApAQCAtMzEsNzQgKzMxLDIxIEBACiAj
aW5jbHVkZSAiQnl0ZWNvZGVVc2VEZWYuaCIKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNs
dWRlICJGdWxsQnl0ZWNvZGVMaXZlbmVzcy5oIgorI2luY2x1ZGUgIkludGVycHJldGVySW5saW5l
cy5oIgogI2luY2x1ZGUgIlByZWNpc2VKdW1wVGFyZ2V0cy5oIgogCiBuYW1lc3BhY2UgSlNDIHsK
IAogQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMoQ29k
ZUJsb2NrKiBjb2RlQmxvY2spCi0gICAgOiBtX2NvZGVCbG9jayhjb2RlQmxvY2spCisgICAgOiBt
X2dyYXBoKGNvZGVCbG9jaywgY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKSkKIHsKLSAgICBBU1NF
UlQobV9jb2RlQmxvY2spOwogICAgIGNvbXB1dGUoKTsKIH0KIAotc3RhdGljIGJvb2wgaXNWYWxp
ZFJlZ2lzdGVyRm9yTGl2ZW5lc3MoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGludCBvcGVyYW5kKQot
ewotICAgIGlmIChjb2RlQmxvY2stPmlzQ29uc3RhbnRSZWdpc3RlckluZGV4KG9wZXJhbmQpKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCi0gICAgVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxS
ZWcob3BlcmFuZCk7Ci0gICAgcmV0dXJuIHZpcnR1YWxSZWcuaXNMb2NhbCgpOwotfQotCi1zdGF0
aWMgdW5zaWduZWQgZ2V0TGVhZGVyT2Zmc2V0Rm9yQmFzaWNCbG9jayhzdGQ6OnVuaXF1ZV9wdHI8
Qnl0ZWNvZGVCYXNpY0Jsb2NrPiogYmFzaWNCbG9jaykKLXsKLSAgICByZXR1cm4gKCpiYXNpY0Js
b2NrKS0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKTsKLX0KLQotc3RhdGljIEJ5dGVjb2RlQmFzaWNC
bG9jayogZmluZEJhc2ljQmxvY2tXaXRoTGVhZGVyT2Zmc2V0KFZlY3RvcjxzdGQ6OnVuaXF1ZV9w
dHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mIGJhc2ljQmxvY2tzLCB1bnNpZ25lZCBsZWFkZXJPZmZz
ZXQpCi17Ci0gICAgcmV0dXJuICgqdHJ5QmluYXJ5U2VhcmNoPHN0ZDo6dW5pcXVlX3B0cjxCeXRl
Y29kZUJhc2ljQmxvY2s+LCB1bnNpZ25lZD4oYmFzaWNCbG9ja3MsIGJhc2ljQmxvY2tzLnNpemUo
KSwgbGVhZGVyT2Zmc2V0LCBnZXRMZWFkZXJPZmZzZXRGb3JCYXNpY0Jsb2NrKSkuZ2V0KCk7Ci19
Ci0KLXN0YXRpYyBib29sIGJsb2NrQ29udGFpbnNCeXRlY29kZU9mZnNldChCeXRlY29kZUJhc2lj
QmxvY2sqIGJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCkKLXsKLSAgICB1bnNpZ25lZCBs
ZWFkZXJPZmZzZXQgPSBibG9jay0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKTsKLSAgICByZXR1cm4g
Ynl0ZWNvZGVPZmZzZXQgPj0gbGVhZGVyT2Zmc2V0ICYmIGJ5dGVjb2RlT2Zmc2V0IDwgbGVhZGVy
T2Zmc2V0ICsgYmxvY2stPnRvdGFsQnl0ZWNvZGVMZW5ndGgoKTsKLX0KLQotc3RhdGljIEJ5dGVj
b2RlQmFzaWNCbG9jayogZmluZEJhc2ljQmxvY2tGb3JCeXRlY29kZU9mZnNldChWZWN0b3I8c3Rk
Ojp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+JiBiYXNpY0Jsb2NrcywgdW5zaWduZWQg
Ynl0ZWNvZGVPZmZzZXQpCi17Ci0vKgotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBiYXNp
Y0Jsb2Nrcy5zaXplKCk7IGkrKykgewotICAgICAgICBpZiAoYmxvY2tDb250YWluc0J5dGVjb2Rl
T2Zmc2V0KGJhc2ljQmxvY2tzW2ldLmdldCgpLCBieXRlY29kZU9mZnNldCkpCi0gICAgICAgICAg
ICByZXR1cm4gYmFzaWNCbG9ja3NbaV0uZ2V0KCk7Ci0gICAgfQotICAgIHJldHVybiAwOwotKi8K
LSAgICBzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiogYmFzaWNCbG9jayA9IGFw
cHJveGltYXRlQmluYXJ5U2VhcmNoPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+
LCB1bnNpZ25lZD4oCi0gICAgICAgIGJhc2ljQmxvY2tzLCBiYXNpY0Jsb2Nrcy5zaXplKCksIGJ5
dGVjb2RlT2Zmc2V0LCBnZXRMZWFkZXJPZmZzZXRGb3JCYXNpY0Jsb2NrKTsKLSAgICAvLyBXZSBm
b3VuZCB0aGUgYmxvY2sgd2Ugd2VyZSBsb29raW5nIGZvci4KLSAgICBpZiAoYmxvY2tDb250YWlu
c0J5dGVjb2RlT2Zmc2V0KCgqYmFzaWNCbG9jaykuZ2V0KCksIGJ5dGVjb2RlT2Zmc2V0KSkKLSAg
ICAgICAgcmV0dXJuICgqYmFzaWNCbG9jaykuZ2V0KCk7Ci0KLSAgICAvLyBCYXNpYyBibG9jayBp
cyB0byB0aGUgbGVmdCBvZiB0aGUgcmV0dXJuZWQgYmxvY2suCi0gICAgaWYgKGJ5dGVjb2RlT2Zm
c2V0IDwgKCpiYXNpY0Jsb2NrKS0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKSkgewotICAgICAgICBB
U1NFUlQoYmFzaWNCbG9jayAtIDEgPj0gYmFzaWNCbG9ja3MuZGF0YSgpKTsKLSAgICAgICAgQVNT
RVJUKGJsb2NrQ29udGFpbnNCeXRlY29kZU9mZnNldChiYXNpY0Jsb2NrWy0xXS5nZXQoKSwgYnl0
ZWNvZGVPZmZzZXQpKTsKLSAgICAgICAgcmV0dXJuIGJhc2ljQmxvY2tbLTFdLmdldCgpOwotICAg
IH0KLQotICAgIC8vIEJhc2ljIGJsb2NrIGlzIHRvIHRoZSByaWdodCBvZiB0aGUgcmV0dXJuZWQg
YmxvY2suCi0gICAgQVNTRVJUKCZiYXNpY0Jsb2NrWzFdIDw9ICZiYXNpY0Jsb2Nrcy5sYXN0KCkp
OwotICAgIEFTU0VSVChibG9ja0NvbnRhaW5zQnl0ZWNvZGVPZmZzZXQoYmFzaWNCbG9ja1sxXS5n
ZXQoKSwgYnl0ZWNvZGVPZmZzZXQpKTsKLSAgICByZXR1cm4gYmFzaWNCbG9ja1sxXS5nZXQoKTsK
LX0KLQogLy8gU2ltcGxpZmllZCBpbnRlcmZhY2UgdG8gYnl0ZWNvZGUgdXNlL2RlZiwgd2hpY2gg
ZGV0ZXJtaW5lcyBkZWZzIGZpcnN0IGFuZCB0aGVuIHVzZXMsIGFuZCBpbmNsdWRlcwogLy8gZXhj
ZXB0aW9uIGhhbmRsZXJzIGluIHRoZSB1c2VzLgogdGVtcGxhdGU8dHlwZW5hbWUgVXNlRnVuY3Rv
ciwgdHlwZW5hbWUgRGVmRnVuY3Rvcj4KLXN0YXRpYyB2b2lkIHN0ZXBPdmVySW5zdHJ1Y3Rpb24o
Q29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2ssIFZlY3Rvcjxz
dGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mIGJhc2ljQmxvY2tzLCB1bnNpZ25l
ZCBieXRlY29kZU9mZnNldCwgY29uc3QgVXNlRnVuY3RvciYgdXNlLCBjb25zdCBEZWZGdW5jdG9y
JiBkZWYpCitzdGF0aWMgdm9pZCBzdGVwT3Zlckluc3RydWN0aW9uKEJ5dGVjb2RlR3JhcGg8Q29k
ZUJsb2NrPiYgZ3JhcGgsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBjb25zdCBVc2VGdW5jdG9y
JiB1c2UsIGNvbnN0IERlZkZ1bmN0b3ImIGRlZikKIHsKICAgICAvLyBUaGlzIGFic3RyYWN0bHkg
ZXhlY3V0ZSB0aGUgaW5zdHJ1Y3Rpb24gaW4gcmV2ZXJzZS4gSW5zdHJ1Y3Rpb25zIGxvZ2ljYWxs
eSBmaXJzdCB1c2Ugb3BlcmFuZHMgYW5kCiAgICAgLy8gdGhlbiBkZWZpbmUgb3BlcmFuZHMuIFRo
aXMgbG9naWNhbCBvcmRlcmluZyBpcyBuZWNlc3NhcnkgZm9yIG9wZXJhdGlvbnMgdGhhdCB1c2Ug
YW5kIGRlZiB0aGUgc2FtZQpAQCAtMTE1LDQxICs2MiwzNSBAQCBzdGF0aWMgdm9pZCBzdGVwT3Zl
ckluc3RydWN0aW9uKENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJs
b2NrLAogICAgIC8vIHVzZXMgYmVmb3JlIGRlZnMsIHRoZW4gdGhlIGFkZCBvcGVyYXRpb24gYWJv
dmUgd291bGQgYXBwZWFyIHRvIG5vdCBoYXZlIGxvYzEgbGl2ZSwgc2luY2Ugd2UnZAogICAgIC8v
IGZpcnN0IGFkZCBpdCB0byB0aGUgb3V0IHNldCAodGhlIHVzZSksIGFuZCB0aGVuIHdlJ2QgcmVt
b3ZlIGl0ICh0aGUgZGVmKS4KICAgICAKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGdyYXBo
LmNvZGVCbG9jaygpOworCiAgICAgY29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldCgKLSAgICAg
ICAgY29kZUJsb2NrLCBibG9jaywgYnl0ZWNvZGVPZmZzZXQsCi0gICAgICAgIFsmXSAoQ29kZUJs
b2NrKiBjb2RlQmxvY2ssIEluc3RydWN0aW9uKiwgT3Bjb2RlSUQsIGludCBvcGVyYW5kKSB7Ci0g
ICAgICAgICAgICBpZiAoaXNWYWxpZFJlZ2lzdGVyRm9yTGl2ZW5lc3MoY29kZUJsb2NrLCBvcGVy
YW5kKSkKKyAgICAgICAgY29kZUJsb2NrLCBieXRlY29kZU9mZnNldCwKKyAgICAgICAgWyZdIChD
b2RlQmxvY2sqLCBJbnN0cnVjdGlvbiosIE9wY29kZUlELCBpbnQgb3BlcmFuZCkgeworICAgICAg
ICAgICAgaWYgKGlzVmFsaWRSZWdpc3RlckZvckxpdmVuZXNzKG9wZXJhbmQpKQogICAgICAgICAg
ICAgICAgIGRlZihWaXJ0dWFsUmVnaXN0ZXIob3BlcmFuZCkudG9Mb2NhbCgpKTsKICAgICAgICAg
fSk7CiAKICAgICBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAotICAgICAgICBjb2RlQmxv
Y2ssIGJsb2NrLCBieXRlY29kZU9mZnNldCwKLSAgICAgICAgWyZdIChDb2RlQmxvY2sqIGNvZGVC
bG9jaywgSW5zdHJ1Y3Rpb24qLCBPcGNvZGVJRCwgaW50IG9wZXJhbmQpIHsKLSAgICAgICAgICAg
IGlmIChpc1ZhbGlkUmVnaXN0ZXJGb3JMaXZlbmVzcyhjb2RlQmxvY2ssIG9wZXJhbmQpKQorICAg
ICAgICBjb2RlQmxvY2ssIGJ5dGVjb2RlT2Zmc2V0LAorICAgICAgICBbJl0gKENvZGVCbG9jayos
IEluc3RydWN0aW9uKiwgT3Bjb2RlSUQsIGludCBvcGVyYW5kKSB7CisgICAgICAgICAgICBpZiAo
aXNWYWxpZFJlZ2lzdGVyRm9yTGl2ZW5lc3Mob3BlcmFuZCkpCiAgICAgICAgICAgICAgICAgdXNl
KFZpcnR1YWxSZWdpc3RlcihvcGVyYW5kKS50b0xvY2FsKCkpOwogICAgICAgICB9KTsKIAogICAg
IC8vIElmIHdlIGhhdmUgYW4gZXhjZXB0aW9uIGhhbmRsZXIsIHdlIHdhbnQgdGhlIGxpdmUtaW4g
dmFyaWFibGVzIG9mIHRoZSAKICAgICAvLyBleGNlcHRpb24gaGFuZGxlciBibG9jayB0byBiZSBp
bmNsdWRlZCBpbiB0aGUgbGl2ZS1pbiBvZiB0aGlzIHBhcnRpY3VsYXIgYnl0ZWNvZGUuCiAgICAg
aWYgKEhhbmRsZXJJbmZvKiBoYW5kbGVyID0gY29kZUJsb2NrLT5oYW5kbGVyRm9yQnl0ZWNvZGVP
ZmZzZXQoYnl0ZWNvZGVPZmZzZXQpKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBUaGlzIHJlc3VtZSBj
aGVjayBzaG91bGQgbm90IGJlIG5lZWRlZC4KLSAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE1OTI4MQotICAgICAgICBJbnRlcnByZXRlciogaW50ZXJw
cmV0ZXIgPSBjb2RlQmxvY2stPnZtKCktPmludGVycHJldGVyOwotICAgICAgICBJbnN0cnVjdGlv
biogaW5zdHJ1Y3Rpb25zQmVnaW4gPSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCk7
Ci0gICAgICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9ICZpbnN0cnVjdGlvbnNCZWdpblti
eXRlY29kZU9mZnNldF07Ci0gICAgICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0ZXIt
PmdldE9wY29kZUlEKGluc3RydWN0aW9uLT51Lm9wY29kZSk7Ci0gICAgICAgIGlmIChvcGNvZGVJ
RCAhPSBvcF9yZXN1bWUpIHsKLSAgICAgICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogaGFuZGxl
ckJsb2NrID0gZmluZEJhc2ljQmxvY2tXaXRoTGVhZGVyT2Zmc2V0KGJhc2ljQmxvY2tzLCBoYW5k
bGVyLT50YXJnZXQpOwotICAgICAgICAgICAgQVNTRVJUKGhhbmRsZXJCbG9jayk7Ci0gICAgICAg
ICAgICBoYW5kbGVyQmxvY2stPmluKCkuZm9yRWFjaFNldEJpdCh1c2UpOwotICAgICAgICB9Cisg
ICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogaGFuZGxlckJsb2NrID0gZ3JhcGguZmluZEJhc2lj
QmxvY2tXaXRoTGVhZGVyT2Zmc2V0KGhhbmRsZXItPnRhcmdldCk7CisgICAgICAgIEFTU0VSVCho
YW5kbGVyQmxvY2spOworICAgICAgICBoYW5kbGVyQmxvY2stPmluKCkuZm9yRWFjaFNldEJpdCh1
c2UpOwogICAgIH0KIH0KIAotc3RhdGljIHZvaWQgc3RlcE92ZXJJbnN0cnVjdGlvbihDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaywgVmVjdG9yPHN0ZDo6dW5p
cXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9ja3MsIHVuc2lnbmVkIGJ5dGVj
b2RlT2Zmc2V0LCBGYXN0Qml0VmVjdG9yJiBvdXQpCitzdGF0aWMgdm9pZCBzdGVwT3Zlckluc3Ry
dWN0aW9uKEJ5dGVjb2RlR3JhcGg8Q29kZUJsb2NrPiYgZ3JhcGgsIHVuc2lnbmVkIGJ5dGVjb2Rl
T2Zmc2V0LCBGYXN0Qml0VmVjdG9yJiBvdXQpCiB7CiAgICAgc3RlcE92ZXJJbnN0cnVjdGlvbigK
LSAgICAgICAgY29kZUJsb2NrLCBibG9jaywgYmFzaWNCbG9ja3MsIGJ5dGVjb2RlT2Zmc2V0LAor
ICAgICAgICBncmFwaCwgYnl0ZWNvZGVPZmZzZXQsCiAgICAgICAgIFsmXSAodW5zaWduZWQgYml0
SW5kZXgpIHsKICAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIHVzZSBmdW5jdG9yLCBzbyB3ZSBz
ZXQgdGhlIGJpdC4KICAgICAgICAgICAgIG91dC5zZXQoYml0SW5kZXgpOwpAQCAtMTYwLDcgKzEw
MSw3IEBAIHN0YXRpYyB2b2lkIHN0ZXBPdmVySW5zdHJ1Y3Rpb24oQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2ssCiAgICAgICAgIH0pOwogfQogCi1zdGF0aWMg
dm9pZCBjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29k
ZUJsb2NrLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRy
PEJ5dGVjb2RlQmFzaWNCbG9jaz4+JiBiYXNpY0Jsb2NrcywgdW5zaWduZWQgdGFyZ2V0T2Zmc2V0
LCBGYXN0Qml0VmVjdG9yJiByZXN1bHQpCitzdGF0aWMgdm9pZCBjb21wdXRlTG9jYWxMaXZlbmVz
c0ZvckJ5dGVjb2RlT2Zmc2V0KEJ5dGVjb2RlR3JhcGg8Q29kZUJsb2NrPiYgZ3JhcGgsIEJ5dGVj
b2RlQmFzaWNCbG9jayogYmxvY2ssIHVuc2lnbmVkIHRhcmdldE9mZnNldCwgRmFzdEJpdFZlY3Rv
ciYgcmVzdWx0KQogewogICAgIEFTU0VSVCghYmxvY2stPmlzRXhpdEJsb2NrKCkpOwogICAgIEFT
U0VSVCghYmxvY2stPmlzRW50cnlCbG9jaygpKTsKQEAgLTE3Miw0NCArMTEzLDQ0IEBAIHN0YXRp
YyB2b2lkIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIEJ5dGVjb2RlCiAgICAgICAgIGlmICh0YXJnZXRPZmZzZXQgPiBieXRlY29kZU9m
ZnNldCkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAKLSAgICAgICAgc3RlcE92ZXJJbnN0
cnVjdGlvbihjb2RlQmxvY2ssIGJsb2NrLCBiYXNpY0Jsb2NrcywgYnl0ZWNvZGVPZmZzZXQsIG91
dCk7CisgICAgICAgIHN0ZXBPdmVySW5zdHJ1Y3Rpb24oZ3JhcGgsIGJ5dGVjb2RlT2Zmc2V0LCBv
dXQpOwogICAgIH0KIAogICAgIHJlc3VsdC5zZXQob3V0KTsKIH0KIAotc3RhdGljIHZvaWQgY29t
cHV0ZUxvY2FsTGl2ZW5lc3NGb3JCbG9jayhDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVC
YXNpY0Jsb2NrKiBibG9jaywgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxv
Y2s+PiYgYmFzaWNCbG9ja3MpCitzdGF0aWMgdm9pZCBjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJs
b2NrKEJ5dGVjb2RlR3JhcGg8Q29kZUJsb2NrPiYgZ3JhcGgsIEJ5dGVjb2RlQmFzaWNCbG9jayog
YmxvY2spCiB7CiAgICAgaWYgKGJsb2NrLT5pc0V4aXRCbG9jaygpIHx8IGJsb2NrLT5pc0VudHJ5
QmxvY2soKSkKICAgICAgICAgcmV0dXJuOwotICAgIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQnl0
ZWNvZGVPZmZzZXQoY29kZUJsb2NrLCBibG9jaywgYmFzaWNCbG9ja3MsIGJsb2NrLT5sZWFkZXJC
eXRlY29kZU9mZnNldCgpLCBibG9jay0+aW4oKSk7CisgICAgY29tcHV0ZUxvY2FsTGl2ZW5lc3NG
b3JCeXRlY29kZU9mZnNldChncmFwaCwgYmxvY2ssIGJsb2NrLT5sZWFkZXJCeXRlY29kZU9mZnNl
dCgpLCBibG9jay0+aW4oKSk7CiB9CiAKIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpy
dW5MaXZlbmVzc0ZpeHBvaW50KCkKIHsKLSAgICBVbmxpbmtlZENvZGVCbG9jayogdW5saW5rZWRD
b2RlQmxvY2sgPSBtX2NvZGVCbG9jay0+dW5saW5rZWRDb2RlQmxvY2soKTsKKyAgICBDb2RlQmxv
Y2sqIGNvZGVCbG9jayA9IG1fZ3JhcGguY29kZUJsb2NrKCk7CisgICAgVW5saW5rZWRDb2RlQmxv
Y2sqIHVubGlua2VkQ29kZUJsb2NrID0gY29kZUJsb2NrLT51bmxpbmtlZENvZGVCbG9jaygpOwog
ICAgIHVuc2lnbmVkIG51bWJlck9mVmFyaWFibGVzID0gdW5saW5rZWRDb2RlQmxvY2stPm1fbnVt
Q2FsbGVlTG9jYWxzOwogCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fYmFzaWNCbG9j
a3Muc2l6ZSgpOyBpKyspIHsKLSAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jayA9IG1f
YmFzaWNCbG9ja3NbaV0uZ2V0KCk7CisgICAgZm9yIChzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVC
YXNpY0Jsb2NrPiYgYmxvY2sgOiBtX2dyYXBoLmJhc2ljQmxvY2tzKCkpIHsKICAgICAgICAgYmxv
Y2stPmluKCkucmVzaXplKG51bWJlck9mVmFyaWFibGVzKTsKICAgICAgICAgYmxvY2stPm91dCgp
LnJlc2l6ZShudW1iZXJPZlZhcmlhYmxlcyk7CiAgICAgfQogCiAgICAgYm9vbCBjaGFuZ2VkOwot
ICAgIG1fYmFzaWNCbG9ja3MubGFzdCgpLT5pbigpLmNsZWFyQWxsKCk7Ci0gICAgbV9iYXNpY0Js
b2Nrcy5sYXN0KCktPm91dCgpLmNsZWFyQWxsKCk7CisgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBs
YXN0QmxvY2sgPSBtX2dyYXBoLmJhc2ljQmxvY2tzKCkubGFzdCgpLmdldCgpOworICAgIGxhc3RC
bG9jay0+aW4oKS5jbGVhckFsbCgpOworICAgIGxhc3RCbG9jay0+b3V0KCkuY2xlYXJBbGwoKTsK
ICAgICBGYXN0Qml0VmVjdG9yIG5ld091dDsKLSAgICBuZXdPdXQucmVzaXplKG1fYmFzaWNCbG9j
a3MubGFzdCgpLT5vdXQoKS5udW1CaXRzKCkpOworICAgIG5ld091dC5yZXNpemUobGFzdEJsb2Nr
LT5vdXQoKS5udW1CaXRzKCkpOwogICAgIGRvIHsKICAgICAgICAgY2hhbmdlZCA9IGZhbHNlOwot
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2Jhc2ljQmxvY2tzLnNpemUoKSAtIDE7IGktLTsp
IHsKLSAgICAgICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2sgPSBtX2Jhc2ljQmxvY2tz
W2ldLmdldCgpOworICAgICAgICBmb3IgKHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxv
Y2s+JiBibG9jayA6IG1fZ3JhcGguYmFzaWNCbG9ja3NJblJldmVyc2VPcmRlcigpKSB7CiAgICAg
ICAgICAgICBuZXdPdXQuY2xlYXJBbGwoKTsKLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgaiA9
IDA7IGogPCBibG9jay0+c3VjY2Vzc29ycygpLnNpemUoKTsgaisrKQotICAgICAgICAgICAgICAg
IG5ld091dC5tZXJnZShibG9jay0+c3VjY2Vzc29ycygpW2pdLT5pbigpKTsKKyAgICAgICAgICAg
IGZvciAoQnl0ZWNvZGVCYXNpY0Jsb2NrKiBzdWNjZXNzb3IgOiBibG9jay0+c3VjY2Vzc29ycygp
KQorICAgICAgICAgICAgICAgIG5ld091dC5tZXJnZShzdWNjZXNzb3ItPmluKCkpOwogICAgICAg
ICAgICAgYm9vbCBvdXREaWRDaGFuZ2UgPSBibG9jay0+b3V0KCkuc2V0QW5kQ2hlY2sobmV3T3V0
KTsKLSAgICAgICAgICAgIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQmxvY2sobV9jb2RlQmxvY2ss
IGJsb2NrLCBtX2Jhc2ljQmxvY2tzKTsKKyAgICAgICAgICAgIGNvbXB1dGVMb2NhbExpdmVuZXNz
Rm9yQmxvY2sobV9ncmFwaCwgYmxvY2suZ2V0KCkpOwogICAgICAgICAgICAgY2hhbmdlZCB8PSBv
dXREaWRDaGFuZ2U7CiAgICAgICAgIH0KICAgICB9IHdoaWxlIChjaGFuZ2VkKTsKQEAgLTIxNywx
MiArMTU4LDEyIEBAIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpydW5MaXZlbmVzc0Zp
eHBvaW50KCkKIAogdm9pZCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmdldExpdmVuZXNzSW5m
b0F0Qnl0ZWNvZGVPZmZzZXQodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIEZhc3RCaXRWZWN0b3Im
IHJlc3VsdCkKIHsKLSAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrID0gZmluZEJhc2ljQmxv
Y2tGb3JCeXRlY29kZU9mZnNldChtX2Jhc2ljQmxvY2tzLCBieXRlY29kZU9mZnNldCk7CisgICAg
Qnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jayA9IG1fZ3JhcGguZmluZEJhc2ljQmxvY2tGb3JCeXRl
Y29kZU9mZnNldChieXRlY29kZU9mZnNldCk7CiAgICAgQVNTRVJUKGJsb2NrKTsKICAgICBBU1NF
UlQoIWJsb2NrLT5pc0VudHJ5QmxvY2soKSk7CiAgICAgQVNTRVJUKCFibG9jay0+aXNFeGl0Qmxv
Y2soKSk7CiAgICAgcmVzdWx0LnJlc2l6ZShibG9jay0+b3V0KCkubnVtQml0cygpKTsKLSAgICBj
b21wdXRlTG9jYWxMaXZlbmVzc0ZvckJ5dGVjb2RlT2Zmc2V0KG1fY29kZUJsb2NrLCBibG9jaywg
bV9iYXNpY0Jsb2NrcywgYnl0ZWNvZGVPZmZzZXQsIHJlc3VsdCk7CisgICAgY29tcHV0ZUxvY2Fs
TGl2ZW5lc3NGb3JCeXRlY29kZU9mZnNldChtX2dyYXBoLCBibG9jaywgYnl0ZWNvZGVPZmZzZXQs
IHJlc3VsdCk7CiB9CiAKIGJvb2wgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpvcGVyYW5kSXNM
aXZlQXRCeXRlY29kZU9mZnNldChpbnQgb3BlcmFuZCwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQp
CkBAIC0yNDQsMTEgKzE4NSwxMSBAQCBGYXN0Qml0VmVjdG9yIEJ5dGVjb2RlTGl2ZW5lc3NBbmFs
eXNpczo6Z2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29kZU9mZnNldCh1bnNpZ25lZAogdm9pZCBCeXRl
Y29kZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGVGdWxsTGl2ZW5lc3MoRnVsbEJ5dGVjb2RlTGl2
ZW5lc3MmIHJlc3VsdCkKIHsKICAgICBGYXN0Qml0VmVjdG9yIG91dDsKKyAgICBDb2RlQmxvY2sq
IGNvZGVCbG9jayA9IG1fZ3JhcGguY29kZUJsb2NrKCk7CiAgICAgCi0gICAgcmVzdWx0Lm1fbWFw
LnJlc2l6ZShtX2NvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKKyAgICByZXN1bHQu
bV9tYXAucmVzaXplKGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKICAgICAKLSAg
ICBmb3IgKHVuc2lnbmVkIGkgPSBtX2Jhc2ljQmxvY2tzLnNpemUoKTsgaS0tOykgewotICAgICAg
ICBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrID0gbV9iYXNpY0Jsb2Nrc1tpXS5nZXQoKTsKKyAg
ICBmb3IgKHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+JiBibG9jayA6IG1fZ3Jh
cGguYmFzaWNCbG9ja3NJblJldmVyc2VPcmRlcigpKSB7CiAgICAgICAgIGlmIChibG9jay0+aXNF
bnRyeUJsb2NrKCkgfHwgYmxvY2stPmlzRXhpdEJsb2NrKCkpCiAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgCkBAIC0yNTYsNyArMTk3LDcgQEAgdm9pZCBCeXRlY29kZUxpdmVuZXNzQW5h
bHlzaXM6OmNvbXB1dGVGdWxsTGl2ZW5lc3MoRnVsbEJ5dGVjb2RlTGl2ZW5lc3MmIHJlc3VsdCkK
ICAgICAgICAgCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGJsb2NrLT5ieXRlY29kZU9mZnNl
dHMoKS5zaXplKCk7IGktLTspIHsKICAgICAgICAgICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0
ID0gYmxvY2stPmJ5dGVjb2RlT2Zmc2V0cygpW2ldOwotICAgICAgICAgICAgc3RlcE92ZXJJbnN0
cnVjdGlvbihtX2NvZGVCbG9jaywgYmxvY2ssIG1fYmFzaWNCbG9ja3MsIGJ5dGVjb2RlT2Zmc2V0
LCBvdXQpOworICAgICAgICAgICAgc3RlcE92ZXJJbnN0cnVjdGlvbihtX2dyYXBoLCBieXRlY29k
ZU9mZnNldCwgb3V0KTsKICAgICAgICAgICAgIHJlc3VsdC5tX21hcFtieXRlY29kZU9mZnNldF0g
PSBvdXQ7CiAgICAgICAgIH0KICAgICB9CkBAIC0yNjYsMTEgKzIwNywxMSBAQCB2b2lkIEJ5dGVj
b2RlTGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0ZUtpbGxzKEJ5dGVjb2RlS2lsbHMmIHJlc3VsdCkK
IHsKICAgICBGYXN0Qml0VmVjdG9yIG91dDsKICAgICAKLSAgICByZXN1bHQubV9jb2RlQmxvY2sg
PSBtX2NvZGVCbG9jazsKLSAgICByZXN1bHQubV9raWxsU2V0cyA9IHN0ZDo6bWFrZV91bmlxdWU8
Qnl0ZWNvZGVLaWxsczo6S2lsbFNldFtdPihtX2NvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuc2l6
ZSgpKTsKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IG1fZ3JhcGguY29kZUJsb2NrKCk7Cisg
ICAgcmVzdWx0Lm1fY29kZUJsb2NrID0gY29kZUJsb2NrOworICAgIHJlc3VsdC5tX2tpbGxTZXRz
ID0gc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZUtpbGxzOjpLaWxsU2V0W10+KGNvZGVCbG9jay0+
aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKICAgICAKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2Jh
c2ljQmxvY2tzLnNpemUoKTsgaS0tOykgewotICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGJs
b2NrID0gbV9iYXNpY0Jsb2Nrc1tpXS5nZXQoKTsKKyAgICBmb3IgKHN0ZDo6dW5pcXVlX3B0cjxC
eXRlY29kZUJhc2ljQmxvY2s+JiBibG9jayA6IG1fZ3JhcGguYmFzaWNCbG9ja3NJblJldmVyc2VP
cmRlcigpKSB7CiAgICAgICAgIGlmIChibG9jay0+aXNFbnRyeUJsb2NrKCkgfHwgYmxvY2stPmlz
RXhpdEJsb2NrKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgCkBAIC0yNzksNyAr
MjIwLDcgQEAgdm9pZCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGVLaWxscyhCeXRl
Y29kZUtpbGxzJiByZXN1bHQpCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGJsb2NrLT5ieXRl
Y29kZU9mZnNldHMoKS5zaXplKCk7IGktLTspIHsKICAgICAgICAgICAgIHVuc2lnbmVkIGJ5dGVj
b2RlT2Zmc2V0ID0gYmxvY2stPmJ5dGVjb2RlT2Zmc2V0cygpW2ldOwogICAgICAgICAgICAgc3Rl
cE92ZXJJbnN0cnVjdGlvbigKLSAgICAgICAgICAgICAgICBtX2NvZGVCbG9jaywgYmxvY2ssIG1f
YmFzaWNCbG9ja3MsIGJ5dGVjb2RlT2Zmc2V0LAorICAgICAgICAgICAgICAgIG1fZ3JhcGgsIGJ5
dGVjb2RlT2Zmc2V0LAogICAgICAgICAgICAgICAgIFsmXSAodW5zaWduZWQgaW5kZXgpIHsKICAg
ICAgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyBmb3IgdXNlcy4KICAgICAgICAgICAgICAgICAg
ICAgaWYgKG91dC5nZXQoaW5kZXgpKQpAQCAtMjk3LDEyICsyMzgsMTMgQEAgdm9pZCBCeXRlY29k
ZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGVLaWxscyhCeXRlY29kZUtpbGxzJiByZXN1bHQpCiAK
IHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpkdW1wUmVzdWx0cygpCiB7Ci0gICAgZGF0
YUxvZygiXG5EdW1waW5nIGJ5dGVjb2RlIGxpdmVuZXNzIGZvciAiLCAqbV9jb2RlQmxvY2ssICI6
XG4iKTsKLSAgICBJbnRlcnByZXRlciogaW50ZXJwcmV0ZXIgPSBtX2NvZGVCbG9jay0+dm0oKS0+
aW50ZXJwcmV0ZXI7Ci0gICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luID0gbV9jb2Rl
QmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IG1fYmFzaWNCbG9ja3Muc2l6ZSgpOyBpKyspIHsKLSAgICAgICAgQnl0ZWNvZGVCYXNpY0Js
b2NrKiBibG9jayA9IG1fYmFzaWNCbG9ja3NbaV0uZ2V0KCk7Ci0gICAgICAgIGRhdGFMb2dGKCJc
bkJ5dGVjb2RlIGJhc2ljIGJsb2NrICV1OiAlcCAob2Zmc2V0OiAldSwgbGVuZ3RoOiAldSlcbiIs
IGksIGJsb2NrLCBibG9jay0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKSwgYmxvY2stPnRvdGFsQnl0
ZWNvZGVMZW5ndGgoKSk7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBtX2dyYXBoLmNvZGVC
bG9jaygpOworICAgIGRhdGFMb2coIlxuRHVtcGluZyBieXRlY29kZSBsaXZlbmVzcyBmb3IgIiwg
KmNvZGVCbG9jaywgIjpcbiIpOworICAgIEludGVycHJldGVyKiBpbnRlcnByZXRlciA9IGNvZGVC
bG9jay0+dm0oKS0+aW50ZXJwcmV0ZXI7CisgICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0Jl
Z2luID0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpOworICAgIHVuc2lnbmVkIGkg
PSAwOworICAgIGZvciAoc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4mIGJsb2Nr
IDogbV9ncmFwaC5iYXNpY0Jsb2NrcygpKSB7CisgICAgICAgIGRhdGFMb2dGKCJcbkJ5dGVjb2Rl
IGJhc2ljIGJsb2NrICV1OiAlcCAob2Zmc2V0OiAldSwgbGVuZ3RoOiAldSlcbiIsIGkrKywgYmxv
Y2suZ2V0KCksIGJsb2NrLT5sZWFkZXJCeXRlY29kZU9mZnNldCgpLCBibG9jay0+dG90YWxCeXRl
Y29kZUxlbmd0aCgpKTsKICAgICAgICAgZGF0YUxvZ0YoIlN1Y2Nlc3NvcnM6ICIpOwogICAgICAg
ICBmb3IgKHVuc2lnbmVkIGogPSAwOyBqIDwgYmxvY2stPnN1Y2Nlc3NvcnMoKS5zaXplKCk7IGor
KykgewogICAgICAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBzdWNjZXNzb3IgPSBibG9jay0+
c3VjY2Vzc29ycygpW2pdOwpAQCAtMzEwLDExICsyNTIsMTEgQEAgdm9pZCBCeXRlY29kZUxpdmVu
ZXNzQW5hbHlzaXM6OmR1bXBSZXN1bHRzKCkKICAgICAgICAgfQogICAgICAgICBkYXRhTG9nRigi
XG4iKTsKICAgICAgICAgaWYgKGJsb2NrLT5pc0VudHJ5QmxvY2soKSkgewotICAgICAgICAgICAg
ZGF0YUxvZ0YoIkVudHJ5IGJsb2NrICVwXG4iLCBibG9jayk7CisgICAgICAgICAgICBkYXRhTG9n
RigiRW50cnkgYmxvY2sgJXBcbiIsIGJsb2NrLmdldCgpKTsKICAgICAgICAgICAgIGNvbnRpbnVl
OwogICAgICAgICB9CiAgICAgICAgIGlmIChibG9jay0+aXNFeGl0QmxvY2soKSkgewotICAgICAg
ICAgICAgZGF0YUxvZ0YoIkV4aXQgYmxvY2s6ICVwXG4iLCBibG9jayk7CisgICAgICAgICAgICBk
YXRhTG9nRigiRXhpdCBibG9jazogJXBcbiIsIGJsb2NrLmdldCgpKTsKICAgICAgICAgICAgIGNv
bnRpbnVlOwogICAgICAgICB9CiAgICAgICAgIGZvciAodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQg
PSBibG9jay0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKTsgYnl0ZWNvZGVPZmZzZXQgPCBibG9jay0+
bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKSArIGJsb2NrLT50b3RhbEJ5dGVjb2RlTGVuZ3RoKCk7KSB7
CkBAIC0zMjcsNyArMjY5LDcgQEAgdm9pZCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmR1bXBS
ZXN1bHRzKCkKICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZ0YoIiV1ICIsIGopOwogICAgICAg
ICAgICAgfQogICAgICAgICAgICAgZGF0YUxvZ0YoIlxuIik7Ci0gICAgICAgICAgICBtX2NvZGVC
bG9jay0+ZHVtcEJ5dGVjb2RlKFdURjo6ZGF0YUZpbGUoKSwgbV9jb2RlQmxvY2stPmdsb2JhbE9i
amVjdCgpLT5nbG9iYWxFeGVjKCksIGluc3RydWN0aW9uc0JlZ2luLCBjdXJyZW50SW5zdHJ1Y3Rp
b24pOworICAgICAgICAgICAgY29kZUJsb2NrLT5kdW1wQnl0ZWNvZGUoV1RGOjpkYXRhRmlsZSgp
LCBjb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVjKCksIGluc3RydWN0aW9uc0Jl
Z2luLCBjdXJyZW50SW5zdHJ1Y3Rpb24pOwogCiAgICAgICAgICAgICBPcGNvZGVJRCBvcGNvZGVJ
RCA9IGludGVycHJldGVyLT5nZXRPcGNvZGVJRChpbnN0cnVjdGlvbnNCZWdpbltieXRlY29kZU9m
ZnNldF0udS5vcGNvZGUpOwogICAgICAgICAgICAgdW5zaWduZWQgb3Bjb2RlTGVuZ3RoID0gb3Bj
b2RlTGVuZ3Roc1tvcGNvZGVJRF07CkBAIC0zNDYsOCArMjg4LDYgQEAgdm9pZCBCeXRlY29kZUxp
dmVuZXNzQW5hbHlzaXM6OmR1bXBSZXN1bHRzKCkKIAogdm9pZCBCeXRlY29kZUxpdmVuZXNzQW5h
bHlzaXM6OmNvbXB1dGUoKQogewotICAgIGNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzKG1fY29k
ZUJsb2NrLCBtX2Jhc2ljQmxvY2tzKTsKLSAgICBBU1NFUlQobV9iYXNpY0Jsb2Nrcy5zaXplKCkp
OwogICAgIHJ1bkxpdmVuZXNzRml4cG9pbnQoKTsKIAogICAgIGlmIChPcHRpb25zOjpkdW1wQnl0
ZWNvZGVMaXZlbmVzc1Jlc3VsdHMoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuaAppbmRleCBlY2UxNmYyMWYw
MTUxMGE2NDI3ZmQ4NDExNDA3OWJlZDg3MGMwODc1Li5jYjE0OTNiMmFhNmM4OTAzYzc5NWE5ZjJk
MWMyOTc2ZTEwZDM2NmQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5oCkBAIC0yNyw2ICsyNyw4IEBACiAj
ZGVmaW5lIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc19oCiAKICNpbmNsdWRlICJCeXRlY29kZUJh
c2ljQmxvY2suaCIKKyNpbmNsdWRlICJCeXRlY29kZUdyYXBoLmgiCisjaW5jbHVkZSAiQ29kZUJs
b2NrLmgiCiAjaW5jbHVkZSA8d3RmL0Zhc3RCaXRWZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvSGFz
aE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTM0LDcgKzM2LDYgQEAKIG5hbWVz
cGFjZSBKU0MgewogCiBjbGFzcyBCeXRlY29kZUtpbGxzOwotY2xhc3MgQ29kZUJsb2NrOwogY2xh
c3MgRnVsbEJ5dGVjb2RlTGl2ZW5lc3M7CiAKIGNsYXNzIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNp
cyB7CkBAIC01NiwxMyArNTcsMTMgQEAgY2xhc3MgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzIHsK
IAogICAgIHZvaWQgZ2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29kZU9mZnNldCh1bnNpZ25lZCBieXRl
Y29kZU9mZnNldCwgRmFzdEJpdFZlY3RvciYpOwogCi0gICAgQ29kZUJsb2NrKiBtX2NvZGVCbG9j
azsKLSAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+IG1fYmFz
aWNCbG9ja3M7CisgICAgQnl0ZWNvZGVHcmFwaDxDb2RlQmxvY2s+IG1fZ3JhcGg7CiB9OwogCiBp
bmxpbmUgYm9vbCBvcGVyYW5kSXNBbHdheXNMaXZlKGludCBvcGVyYW5kKTsKIGlubGluZSBib29s
IG9wZXJhbmRUaGF0SXNOb3RBbHdheXNMaXZlSXNMaXZlKGNvbnN0IEZhc3RCaXRWZWN0b3ImIG91
dCwgaW50IG9wZXJhbmQpOwogaW5saW5lIGJvb2wgb3BlcmFuZElzTGl2ZShjb25zdCBGYXN0Qml0
VmVjdG9yJiBvdXQsIGludCBvcGVyYW5kKTsKK2lubGluZSBib29sIGlzVmFsaWRSZWdpc3RlckZv
ckxpdmVuZXNzKGludCBvcGVyYW5kKTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlz
aXNJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZl
bmVzc0FuYWx5c2lzSW5saW5lcy5oCmluZGV4IDliNWM3NTVmY2I2Y2Q1MTgwNTE0NTAwNzg5MjJh
YzRkNmQ0ZDIzOGYuLjkwYzI5Mjk5YTI1ZjU3OWNkYTY0OWQ5ODc4Y2UxNTQ4YzQ4Yzc1ODggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNz
QW5hbHlzaXNJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGluZXMuaApAQCAtNTAsNiArNTAsMTQgQEAgaW5saW5l
IGJvb2wgb3BlcmFuZElzTGl2ZShjb25zdCBGYXN0Qml0VmVjdG9yJiBvdXQsIGludCBvcGVyYW5k
KQogICAgIHJldHVybiBvcGVyYW5kSXNBbHdheXNMaXZlKG9wZXJhbmQpIHx8IG9wZXJhbmRUaGF0
SXNOb3RBbHdheXNMaXZlSXNMaXZlKG91dCwgb3BlcmFuZCk7CiB9CiAKK2lubGluZSBib29sIGlz
VmFsaWRSZWdpc3RlckZvckxpdmVuZXNzKGludCBvcGVyYW5kKQoreworICAgIFZpcnR1YWxSZWdp
c3RlciB2aXJ0dWFsUmVnKG9wZXJhbmQpOworICAgIGlmICh2aXJ0dWFsUmVnLmlzQ29uc3RhbnQo
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiB2aXJ0dWFsUmVnLmlzTG9jYWwo
KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBCeXRlY29kZUxpdmVuZXNz
QW5hbHlzaXNJbmxpbmVzX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZU1vZGlmaWNhdGlvblNldC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQnl0ZWNvZGVNb2RpZmljYXRpb25TZXQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhhYzJmOGVj
YTExNTljMjMxNmFiNTE4YjNjYWFhNzQ3NDhlYmE1NjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVNb2RpZmljYXRpb25TZXQuY3BwCkBA
IC0wLDAgKzEsODQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgWXVzdWtlIFN1enVraSA8
dXRhdGFuZS50ZWFAZ21haWwuY29tPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiQnl0ZWNvZGVNb2RpZmljYXRpb25TZXQuaCIKKworI2luY2x1ZGUgPHd0Zi9CdWJi
bGVTb3J0Lmg+CisKK25hbWVzcGFjZSBKU0MgeworCitpbnQgQnl0ZWNvZGVNb2RpZmljYXRpb25T
ZXQ6OmFkanVzdE9mZnNldChpbnQgYnl0ZWNvZGVPZmZzZXQsIGludCBqdW1wVGFyZ2V0KQorewor
ICAgIGlmIChieXRlY29kZU9mZnNldCA8IGp1bXBUYXJnZXQpIHsKKyAgICAgICAgYXV0byBzdGFy
dCA9IHN0ZDo6bG93ZXJfYm91bmQobV9pbnNlcnRpb25zLmJlZ2luKCksIG1faW5zZXJ0aW9ucy5l
bmQoKSwgYnl0ZWNvZGVPZmZzZXQsIFsmXSAoY29uc3QgSW5zZXJ0aW9uJiBpbnNlcnRpb24sIGlu
dCBieXRlY29kZU9mZnNldCkgeworICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4o
aW5zZXJ0aW9uLmluZGV4KCkpIDwgYnl0ZWNvZGVPZmZzZXQ7CisgICAgICAgIH0pOworICAgICAg
ICBpZiAoc3RhcnQgIT0gbV9pbnNlcnRpb25zLmVuZCgpKSB7CisgICAgICAgICAgICBhdXRvIGVu
ZCA9IHN0ZDo6bG93ZXJfYm91bmQobV9pbnNlcnRpb25zLmJlZ2luKCksIG1faW5zZXJ0aW9ucy5l
bmQoKSwganVtcFRhcmdldCwgWyZdIChjb25zdCBJbnNlcnRpb24mIGluc2VydGlvbiwgaW50IGp1
bXBUYXJnZXQpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihpbnNl
cnRpb24uaW5kZXgoKSkgPCBqdW1wVGFyZ2V0OworICAgICAgICAgICAgfSk7CisgICAgICAgICAg
ICBmb3IgKDsgc3RhcnQgIT0gZW5kOyArK3N0YXJ0KSB7CisgICAgICAgICAgICAgICAgaWYgKHN0
YXJ0LT5lbGVtZW50KCkudHlwZSA9PSBDb21tYW5kOjpUeXBlOjpSZW1vdmUpCisgICAgICAgICAg
ICAgICAgICAgIGp1bXBUYXJnZXQgLT0gc3RhcnQtPmVsZW1lbnQoKS5sZW5ndGg7CisgICAgICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBqdW1wVGFyZ2V0ICs9IHN0YXJ0LT5l
bGVtZW50KCkubGVuZ3RoOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVy
biBqdW1wVGFyZ2V0IC0gYnl0ZWNvZGVPZmZzZXQ7CisgICAgfQorCisgICAgaWYgKGJ5dGVjb2Rl
T2Zmc2V0ID09IGp1bXBUYXJnZXQpCisgICAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIC1h
ZGp1c3RPZmZzZXQoanVtcFRhcmdldCwgYnl0ZWNvZGVPZmZzZXQpOworfQorCit2b2lkIEJ5dGVj
b2RlTW9kaWZpY2F0aW9uU2V0OjphcHBseU1vZGlmaWNhdGlvbigpCit7CisgICAgZm9yIChzaXpl
X3QgaW5zZXJ0aW9uSW5kZXggPSBtX2luc2VydGlvbnMuc2l6ZSgpOyBpbnNlcnRpb25JbmRleC0t
OykgeworICAgICAgICBjb25zdCBJbnNlcnRpb24mIGluc2VydGlvbiA9IG1faW5zZXJ0aW9uc1tp
bnNlcnRpb25JbmRleF07CisgICAgICAgIGlmIChpbnNlcnRpb24uZWxlbWVudCgpLnR5cGUgPT0g
Q29tbWFuZDo6VHlwZTo6UmVtb3ZlKQorICAgICAgICAgICAgbV9ncmFwaC5pbnN0cnVjdGlvbnMo
KS5yZW1vdmUoaW5zZXJ0aW9uLmluZGV4KCksIGluc2VydGlvbi5lbGVtZW50KCkubGVuZ3RoKTsK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV9ncmFwaC5pbnN0cnVjdGlvbnMoKS5pbnNlcnQo
aW5zZXJ0aW9uLmluZGV4KCksIGluc2VydGlvbi5lbGVtZW50KCkuYnl0ZWNvZGUuaW5zdHJ1Y3Rp
b25zLCBvcGNvZGVMZW5ndGgoaW5zZXJ0aW9uLmVsZW1lbnQoKS5ieXRlY29kZS5pbnN0cnVjdGlv
bnNbMF0udS5vcGNvZGUpKTsKKyAgICB9CisgICAgbV9pbnNlcnRpb25zLmNsZWFyKCk7Cit9CisK
K3ZvaWQgQnl0ZWNvZGVNb2RpZmljYXRpb25TZXQ6OmV4ZWN1dGUoKQoreworICAgIFdURjo6YnVi
YmxlU29ydChtX2luc2VydGlvbnMuYmVnaW4oKSwgbV9pbnNlcnRpb25zLmVuZCgpLCBbXSAoY29u
c3QgSW5zZXJ0aW9uJiBsaHMsIGNvbnN0IEluc2VydGlvbiYgcmhzKSB7CisgICAgICAgIC8vIFdl
IHdvdWxkIGxpa2UgdG8gcGVyZm9ybSByZW1vdmUgb3BlcmF0aW9uIGJlZm9yZSBpbnNlcnRpb24u
CisgICAgICAgIGlmIChsaHMuaW5kZXgoKSA9PSByaHMuaW5kZXgoKSkKKyAgICAgICAgICAgIHJl
dHVybiByaHMuZWxlbWVudCgpLnR5cGUgPT0gQ29tbWFuZDo6VHlwZTo6UmVtb3ZlOworICAgICAg
ICByZXR1cm4gbGhzIDwgcmhzOworICAgIH0pOworCisgICAgVW5saW5rZWRDb2RlQmxvY2sqIGNv
ZGVCbG9jayA9IG1fZ3JhcGguY29kZUJsb2NrKCk7CisgICAgY29kZUJsb2NrLT5hcHBseU1vZGlm
aWNhdGlvbigqdGhpcyk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTW9kaWZpY2F0aW9uU2V0LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVNb2RpZmljYXRpb25TZXQuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42NTUzOWJiMWJlOWQ5NjNmNjMyZDVkM2NjOWZiZDgyOTI4ODhmMzM2Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTW9k
aWZpY2F0aW9uU2V0LmgKQEAgLTAsMCArMSw4MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NiBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaW5jbHVkZSAiQnl0ZWNvZGVHcmFwaC5oIgorI2luY2x1ZGUgIlVubGlua2Vk
Q29kZUJsb2NrLmgiCisjaW5jbHVkZSA8d3RmL0luc2VydGlvbi5oPgorCituYW1lc3BhY2UgSlND
IHsKKworY2xhc3MgQnl0ZWNvZGVNb2RpZmljYXRpb25TZXQgeworcHVibGljOgorICAgIHN0cnVj
dCBJbnNlcnRlZEJ5dGVjb2RlIHsKKyAgICAgICAgVW5saW5rZWRJbnN0cnVjdGlvbiBpbnN0cnVj
dGlvbnNbTUFYX09QQ09ERV9MRU5HVEhfT0ZfQllURUNPREVdOworICAgIH07CisKKyAgICBzdHJ1
Y3QgQ29tbWFuZCB7CisgICAgICAgIGVudW0gY2xhc3MgVHlwZSB7CisgICAgICAgICAgICBJbnNl
cnQsCisgICAgICAgICAgICBSZW1vdmUsCisgICAgICAgIH07CisKKyAgICAgICAgVHlwZSB0eXBl
OworICAgICAgICBzaXplX3QgbGVuZ3RoOworICAgICAgICBJbnNlcnRlZEJ5dGVjb2RlIGJ5dGVj
b2RlOworICAgIH07CisKKyAgICB0eXBlZGVmIFdURjo6SW5zZXJ0aW9uPENvbW1hbmQ+IEluc2Vy
dGlvbjsKKworICAgIEJ5dGVjb2RlTW9kaWZpY2F0aW9uU2V0KEJ5dGVjb2RlR3JhcGg8VW5saW5r
ZWRDb2RlQmxvY2s+JiBncmFwaCkKKyAgICAgICAgOiBtX2dyYXBoKGdyYXBoKQorICAgIHsKKyAg
ICB9CisKKyAgICB2b2lkIGluc2VydCh1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgSW5zZXJ0ZWRC
eXRlY29kZSBieXRlY29kZSkKKyAgICB7CisgICAgICAgIG1faW5zZXJ0aW9ucy5hcHBlbmQoSW5z
ZXJ0aW9uKGJ5dGVjb2RlT2Zmc2V0LCBDb21tYW5kIHsgQ29tbWFuZDo6VHlwZTo6SW5zZXJ0LCBv
cGNvZGVMZW5ndGgoYnl0ZWNvZGUuaW5zdHJ1Y3Rpb25zWzBdLnUub3Bjb2RlKSwgYnl0ZWNvZGUg
fSkpOworICAgIH0KKworICAgIHZvaWQgcmVtb3ZlQnl0ZWNvZGUodW5zaWduZWQgYnl0ZWNvZGVP
ZmZzZXQpCisgICAgeworICAgICAgICBtX2luc2VydGlvbnMuYXBwZW5kKEluc2VydGlvbihieXRl
Y29kZU9mZnNldCwgQ29tbWFuZCB7IENvbW1hbmQ6OlR5cGU6OlJlbW92ZSwgb3Bjb2RlTGVuZ3Ro
KG1fZ3JhcGguaW5zdHJ1Y3Rpb25zKClbYnl0ZWNvZGVPZmZzZXRdLnUub3Bjb2RlKSwgSW5zZXJ0
ZWRCeXRlY29kZSB7IH0gfSkpOworICAgIH0KKworICAgIHZvaWQgZXhlY3V0ZSgpOworCisgICAg
Qnl0ZWNvZGVHcmFwaDxVbmxpbmtlZENvZGVCbG9jaz4mIGdyYXBoKCkgeyByZXR1cm4gbV9ncmFw
aDsgfQorCisgICAgaW50IGFkanVzdE9mZnNldChpbnQgYnl0ZWNvZGVPZmZzZXQsIGludCBqdW1w
VGFyZ2V0KTsKKworcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgVW5saW5rZWRDb2RlQmxvY2s7
CisgICAgdm9pZCBhcHBseU1vZGlmaWNhdGlvbigpOworCisgICAgQnl0ZWNvZGVHcmFwaDxVbmxp
bmtlZENvZGVCbG9jaz4mIG1fZ3JhcGg7CisgICAgVmVjdG9yPEluc2VydGlvbiwgOD4gbV9pbnNl
cnRpb25zOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCmluZGV4IDk4MWZiMWQwZmVjMDU3MDRkNWI3
ZjY2ZWM0NDE4MjU3ZTgzYWFjMzYuLmVkMmU2YmRjMDQ1NDNhYjZlN2E1ZDFmMjIzYzA4YThlYmY3
NGY4ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZVVzZURlZi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVz
ZURlZi5oCkBAIC0yNywxOCArMjcsMTMgQEAKICNkZWZpbmUgQnl0ZWNvZGVVc2VEZWZfaAogCiAj
aW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKIAogbmFtZXNw
YWNlIEpTQyB7CiAKLXRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+Ci12b2lkIGNvbXB1dGVVc2Vz
Rm9yQnl0ZWNvZGVPZmZzZXQoCi0gICAgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFz
aWNCbG9jayogYmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBjb25zdCBGdW5jdG9yJiBm
dW5jdG9yKQordGVtcGxhdGU8dHlwZW5hbWUgQmxvY2ssIHR5cGVuYW1lIEZ1bmN0b3IsIHR5cGVu
YW1lIEluc3RydWN0aW9uPgordm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KEJsb2Nr
KiBjb2RlQmxvY2ssIE9wY29kZUlEIG9wY29kZUlELCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24s
IGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiB7Ci0gICAgSW50ZXJwcmV0ZXIqIGludGVycHJldGVy
ID0gY29kZUJsb2NrLT52bSgpLT5pbnRlcnByZXRlcjsKLSAgICBJbnN0cnVjdGlvbiogaW5zdHJ1
Y3Rpb25zQmVnaW4gPSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCk7Ci0gICAgSW5z
dHJ1Y3Rpb24qIGluc3RydWN0aW9uID0gJmluc3RydWN0aW9uc0JlZ2luW2J5dGVjb2RlT2Zmc2V0
XTsKLSAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGludGVycHJldGVyLT5nZXRPcGNvZGVJRChpbnN0
cnVjdGlvbi0+dS5vcGNvZGUpOwotCiAgICAgaWYgKG9wY29kZUlEICE9IG9wX2VudGVyICYmIGNv
ZGVCbG9jay0+d2FzQ29tcGlsZWRXaXRoRGVidWdnaW5nT3Bjb2RlcygpICYmIGNvZGVCbG9jay0+
c2NvcGVSZWdpc3RlcigpLmlzVmFsaWQoKSkKICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGlu
c3RydWN0aW9uLCBvcGNvZGVJRCwgY29kZUJsb2NrLT5zY29wZVJlZ2lzdGVyKCkub2Zmc2V0KCkp
OwogCkBAIC03NSw4ICs3MCw3IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCgK
ICAgICBjYXNlIG9wX2puZXFfbnVsbDoKICAgICBjYXNlIG9wX2RlYzoKICAgICBjYXNlIG9wX2lu
YzoKLSAgICBjYXNlIG9wX2xvZ19zaGFkb3dfY2hpY2tlbl9wcm9sb2d1ZToKLSAgICBjYXNlIG9w
X3Jlc3VtZTogeworICAgIGNhc2Ugb3BfbG9nX3NoYWRvd19jaGlja2VuX3Byb2xvZ3VlOiB7CiAg
ICAgICAgIEFTU0VSVChvcGNvZGVMZW5ndGhzW29wY29kZUlEXSA+IDEpOwogICAgICAgICBmdW5j
dG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBpbnN0cnVjdGlvblsxXS51Lm9w
ZXJhbmQpOwogICAgICAgICByZXR1cm47CkBAIC0yODQsMjIgKzI3OCwxMyBAQCB2b2lkIGNvbXB1
dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoCiAgICAgICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywg
aW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBsYXN0QXJnICsgaSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9Ci0gICAgY2FzZSBvcF9zYXZlOiB7Ci0gICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0
cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7Ci0gICAgICAgIHVu
c2lnbmVkIG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldCA9IGJ5dGVjb2RlT2Zmc2V0ICsgaW5zdHJ1
Y3Rpb25bM10udS5vcGVyYW5kOwotICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIG1lcmdlUG9p
bnRCbG9jayA9IG51bGxwdHI7Ci0gICAgICAgIGZvciAoQnl0ZWNvZGVCYXNpY0Jsb2NrKiBzdWNj
ZXNzb3IgOiBibG9jay0+c3VjY2Vzc29ycygpKSB7Ci0gICAgICAgICAgICBpZiAoc3VjY2Vzc29y
LT5sZWFkZXJCeXRlY29kZU9mZnNldCgpID09IG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldCkgewot
ICAgICAgICAgICAgICAgIG1lcmdlUG9pbnRCbG9jayA9IHN1Y2Nlc3NvcjsKLSAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBBU1NFUlQobWVy
Z2VQb2ludEJsb2NrKTsKLSAgICAgICAgbWVyZ2VQb2ludEJsb2NrLT5pbigpLmZvckVhY2hTZXRC
aXQoWyZdKHVuc2lnbmVkIGxvY2FsKSB7Ci0gICAgICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywg
aW5zdHJ1Y3Rpb24sIG9wY29kZUlELCB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChsb2NhbCkub2Zm
c2V0KCkpOwotICAgICAgICB9KTsKKworICAgIGNhc2Ugb3Bfc2F2ZToKKyAgICBjYXNlIG9wX3Jl
c3VtZTogeworICAgICAgICAvLyBEbyBub3RoaW5nIGluIGxpdmVuZXNzIGFuYWx5c2lzLgogICAg
ICAgICByZXR1cm47CiAgICAgfQorCiAgICAgZGVmYXVsdDoKICAgICAgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgYnJlYWs7CkBAIC0zMDcsMTIgKzI5MiwxOCBAQCB2
b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1l
IEZ1bmN0b3I+Ci12b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlT2Zm
c2V0LCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQordm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2Rl
T2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgY29u
c3QgRnVuY3RvciYgZnVuY3RvcikKIHsKICAgICBJbnRlcnByZXRlciogaW50ZXJwcmV0ZXIgPSBj
b2RlQmxvY2stPnZtKCktPmludGVycHJldGVyOwogICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlv
bnNCZWdpbiA9IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsKICAgICBJbnN0cnVj
dGlvbiogaW5zdHJ1Y3Rpb24gPSAmaW5zdHJ1Y3Rpb25zQmVnaW5bYnl0ZWNvZGVPZmZzZXRdOwog
ICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGluc3RydWN0
aW9uLT51Lm9wY29kZSk7CisgICAgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldChjb2RlQmxv
Y2ssIG9wY29kZUlELCBpbnN0cnVjdGlvbiwgZnVuY3Rvcik7Cit9CisKK3RlbXBsYXRlPHR5cGVu
YW1lIEJsb2NrLCB0eXBlbmFtZSBJbnN0cnVjdGlvbiwgdHlwZW5hbWUgRnVuY3Rvcj4KK3ZvaWQg
Y29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChCbG9jayogY29kZUJsb2NrLCBPcGNvZGVJRCBv
cGNvZGVJRCwgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9y
KQorewogICAgIHN3aXRjaCAob3Bjb2RlSUQpIHsKICAgICAvLyBUaGVzZSBkb24ndCBkZWZpbmUg
YW55dGhpbmcuCiAgICAgY2FzZSBvcF9jb3B5X3Jlc3Q6CkBAIC0zMjAsNyArMzExLDYgQEAgdm9p
ZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRl
Y29kZUJhc2ljQmxvY2sqIGJsb2MKICAgICBjYXNlIG9wX2VuZDoKICAgICBjYXNlIG9wX3Rocm93
OgogICAgIGNhc2Ugb3BfdGhyb3dfc3RhdGljX2Vycm9yOgotICAgIGNhc2Ugb3Bfc2F2ZToKICAg
ICBjYXNlIG9wX2Fzc2VydDoKICAgICBjYXNlIG9wX2RlYnVnOgogICAgIGNhc2Ugb3BfcmV0OgpA
QCAtNDU5LDcgKzQ0OSw3IEBAIHZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChDb2Rl
QmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jCiAgICAgY2FzZSBvcF9k
ZWxfYnlfaWQ6CiAgICAgY2FzZSBvcF9kZWxfYnlfdmFsOgogICAgIGNhc2Ugb3BfdW5zaWduZWQ6
Ci0gICAgY2FzZSBvcF9nZXRfZnJvbV9hcmd1bWVudHM6IAorICAgIGNhc2Ugb3BfZ2V0X2Zyb21f
YXJndW1lbnRzOgogICAgIGNhc2Ugb3BfZ2V0X3Jlc3RfbGVuZ3RoOiB7CiAgICAgICAgIEFTU0VS
VChvcGNvZGVMZW5ndGhzW29wY29kZUlEXSA+IDEpOwogICAgICAgICBmdW5jdG9yKGNvZGVCbG9j
aywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBpbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOwpAQCAt
NDc2LDE4ICs0NjYsMjcgQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVC
bG9jayogY29kZUJsb2NrLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2MKICAgICAgICAgICAgIGZ1
bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIHZpcnR1YWxSZWdpc3RlckZv
ckxvY2FsKGkpLm9mZnNldCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICBjYXNlIG9w
X3NhdmU6CiAgICAgY2FzZSBvcF9yZXN1bWU6IHsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoYmxv
Y2stPnN1Y2Nlc3NvcnMoKS5zaXplKCkgPT0gMSk7Ci0gICAgICAgIC8vIEZJWE1FOiBUaGlzIGlz
IHJlYWxseSBkaXJ0eS4KLSAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE1OTI4MQotICAgICAgICBibG9jay0+c3VjY2Vzc29ycygpWzBdLT5pbigpLmZv
ckVhY2hTZXRCaXQoWyZdKHVuc2lnbmVkIGxvY2FsKSB7Ci0gICAgICAgICAgICBmdW5jdG9yKGNv
ZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChs
b2NhbCkub2Zmc2V0KCkpOwotICAgICAgICB9KTsKKyAgICAgICAgLy8gRG8gbm90aGluZyBpbiBs
aXZlbmVzcyBhbmFseXNpcy4KICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICBkZWZhdWx0Ogor
ICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm47CiAg
ICAgfQogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgordm9pZCBjb21wdXRlRGVmc0Zv
ckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9m
ZnNldCwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikKK3sKKyAgICBJbnRlcnByZXRlciogaW50ZXJw
cmV0ZXIgPSBjb2RlQmxvY2stPnZtKCktPmludGVycHJldGVyOworICAgIEluc3RydWN0aW9uKiBp
bnN0cnVjdGlvbnNCZWdpbiA9IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsKKyAg
ICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSAmaW5zdHJ1Y3Rpb25zQmVnaW5bYnl0ZWNvZGVP
ZmZzZXRdOworICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0ZXItPmdldE9wY29kZUlE
KGluc3RydWN0aW9uLT51Lm9wY29kZSk7CisgICAgY29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNl
dChjb2RlQmxvY2ssIG9wY29kZUlELCBpbnN0cnVjdGlvbiwgZnVuY3Rvcik7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gQnl0ZWNvZGVVc2VEZWZfaApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCAxM2IxNTBmMTRiYjU1ZWFh
OTc2ZjcxYjQ4ZWNkZjdmZTAxNTc5NWFhLi41NzZkMzFkMjc2NDJiOGZlNjQzMDU2NWVkNjJkMDM5
ZWU1ZDI5MTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmNwcApAQCAtMzIsNiArMzIsNyBAQAogCiAjaW5jbHVkZSAiQmFzaWNCbG9ja0xvY2F0aW9uLmgi
CiAjaW5jbHVkZSAiQnl0ZWNvZGVHZW5lcmF0b3IuaCIKKyNpbmNsdWRlICJCeXRlY29kZUxpdmVu
ZXNzQW5hbHlzaXMuaCIKICNpbmNsdWRlICJCeXRlY29kZVVzZURlZi5oIgogI2luY2x1ZGUgIkNh
bGxMaW5rU3RhdHVzLmgiCiAjaW5jbHVkZSAiREZHQ2FwYWJpbGl0aWVzLmgiCkBAIC02OTIsMTgg
KzY5Myw2IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoUHJpbnRTdHJlYW0mIG91dCkK
ICAgICAgICAgfSB3aGlsZSAoaSA8IG1fcmFyZURhdGEtPm1fc3RyaW5nU3dpdGNoSnVtcFRhYmxl
cy5zaXplKCkpOwogICAgIH0KIAotICAgIGlmIChtX3JhcmVEYXRhICYmICFtX3JhcmVEYXRhLT5t
X2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkLmlzRW1wdHkoKSkgewotICAgICAgICBvdXQucHJpbnRm
KCJcbkxpdmUgQ2FsbGVlIExvY2FsczpcbiIpOwotICAgICAgICB1bnNpZ25lZCBpID0gMDsKLSAg
ICAgICAgZG8gewotICAgICAgICAgICAgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZW5lc3MgPSBt
X3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkW2ldOwotICAgICAgICAgICAgb3V0
LnByaW50ZigiICBsaXZlJTF1ID0gIiwgaSk7Ci0gICAgICAgICAgICBsaXZlbmVzcy5kdW1wKG91
dCk7Ci0gICAgICAgICAgICBvdXQucHJpbnRmKCJcbiIpOwotICAgICAgICAgICAgKytpOwotICAg
ICAgICB9IHdoaWxlIChpIDwgbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZC5z
aXplKCkpOwotICAgIH0KLQogICAgIG91dC5wcmludGYoIlxuIik7CiB9CiAKQEAgLTE2NjIsMzEg
KzE2NTEsNiBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKAogICAgICAgICAgICAgb3V0
LnByaW50ZigiJXMsICVkIiwgZGVidWdIb29rTmFtZShkZWJ1Z0hvb2tJRCksIGhhc0JyZWFrcG9p
bnRGbGFnKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIGNhc2Ugb3Bf
c2F2ZTogewotICAgICAgICAgICAgaW50IGdlbmVyYXRvciA9ICgrK2l0KS0+dS5vcGVyYW5kOwot
ICAgICAgICAgICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gKCsraXQpLT51LnVu
c2lnbmVkVmFsdWU7Ci0gICAgICAgICAgICBpbnQgb2Zmc2V0ID0gKCsraXQpLT51Lm9wZXJhbmQ7
Ci0gICAgICAgICAgICBGYXN0Qml0VmVjdG9yIGxpdmVuZXNzOwotICAgICAgICAgICAgaWYgKGxp
dmVDYWxsZWVMb2NhbHNJbmRleCA8IG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWll
bGQuc2l6ZSgpKQotICAgICAgICAgICAgICAgIGxpdmVuZXNzID0gbV9yYXJlRGF0YS0+bV9saXZl
Q2FsbGVlTG9jYWxzQXRZaWVsZFtsaXZlQ2FsbGVlTG9jYWxzSW5kZXhdOwotICAgICAgICAgICAg
cHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAic2F2ZSIpOwotICAg
ICAgICAgICAgb3V0LnByaW50ZigiJXMsICIsIHJlZ2lzdGVyTmFtZShnZW5lcmF0b3IpLmRhdGEo
KSk7Ci0gICAgICAgICAgICBsaXZlbmVzcy5kdW1wKG91dCk7Ci0gICAgICAgICAgICBvdXQucHJp
bnRmKCIoQGxpdmUlMXUpLCAlZCgtPiVkKSIsIGxpdmVDYWxsZWVMb2NhbHNJbmRleCwgb2Zmc2V0
LCBsb2NhdGlvbiArIG9mZnNldCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAg
ICAgICBjYXNlIG9wX3Jlc3VtZTogewotICAgICAgICAgICAgaW50IGdlbmVyYXRvciA9ICgrK2l0
KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4
ID0gKCsraXQpLT51LnVuc2lnbmVkVmFsdWU7Ci0gICAgICAgICAgICBGYXN0Qml0VmVjdG9yIGxp
dmVuZXNzOwotICAgICAgICAgICAgaWYgKGxpdmVDYWxsZWVMb2NhbHNJbmRleCA8IG1fcmFyZURh
dGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQuc2l6ZSgpKQotICAgICAgICAgICAgICAgIGxp
dmVuZXNzID0gbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZFtsaXZlQ2FsbGVl
TG9jYWxzSW5kZXhdOwotICAgICAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywg
bG9jYXRpb24sIGl0LCAicmVzdW1lIik7Ci0gICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgIiwg
cmVnaXN0ZXJOYW1lKGdlbmVyYXRvcikuZGF0YSgpKTsKLSAgICAgICAgICAgIGxpdmVuZXNzLmR1
bXAob3V0KTsKLSAgICAgICAgICAgIG91dC5wcmludGYoIihAbGl2ZSUxdSkiLCBsaXZlQ2FsbGVl
TG9jYWxzSW5kZXgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KICAgICAgICAgY2Fz
ZSBvcF9hc3NlcnQ6IHsKICAgICAgICAgICAgIGludCBjb25kaXRpb24gPSAoKytpdCktPnUub3Bl
cmFuZDsKICAgICAgICAgICAgIGludCBsaW5lID0gKCsraXQpLT51Lm9wZXJhbmQ7CkBAIC0xODk5
LDcgKzE4NjMsNiBAQCB2b2lkIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBDb3B5
UGFyc2VkQmxvY2tUYWcsIENvZGVCbG9jayYgb3RoZXIpCiAgICAgICAgIG1fcmFyZURhdGEtPm1f
Y29uc3RhbnRCdWZmZXJzID0gb3RoZXIubV9yYXJlRGF0YS0+bV9jb25zdGFudEJ1ZmZlcnM7CiAg
ICAgICAgIG1fcmFyZURhdGEtPm1fc3dpdGNoSnVtcFRhYmxlcyA9IG90aGVyLm1fcmFyZURhdGEt
Pm1fc3dpdGNoSnVtcFRhYmxlczsKICAgICAgICAgbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hK
dW1wVGFibGVzID0gb3RoZXIubV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzOwot
ICAgICAgICBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkID0gb3RoZXIubV9y
YXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZDsKICAgICB9CiAgICAgCiAgICAgaGVh
cCgpLT5tX2NvZGVCbG9ja3MuYWRkKHRoaXMpOwpAQCAtMjAyMSw3ICsxOTg0LDcgQEAgdm9pZCBD
b2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJF
eGVjdXRhYmxlLCBVbmxpbmsKICAgICAgICAgICAgICAgICBVbmxpbmtlZFN0cmluZ0p1bXBUYWJs
ZTo6U3RyaW5nT2Zmc2V0VGFibGU6Oml0ZXJhdG9yIGVuZCA9IHVubGlua2VkQ29kZUJsb2NrLT5z
dHJpbmdTd2l0Y2hKdW1wVGFibGUoaSkub2Zmc2V0VGFibGUuZW5kKCk7CiAgICAgICAgICAgICAg
ICAgZm9yICg7IHB0ciAhPSBlbmQ7ICsrcHRyKSB7CiAgICAgICAgICAgICAgICAgICAgIE9mZnNl
dExvY2F0aW9uIG9mZnNldDsKLSAgICAgICAgICAgICAgICAgICAgb2Zmc2V0LmJyYW5jaE9mZnNl
dCA9IHB0ci0+dmFsdWU7CisgICAgICAgICAgICAgICAgICAgIG9mZnNldC5icmFuY2hPZmZzZXQg
PSBwdHItPnZhbHVlLmJyYW5jaE9mZnNldDsKICAgICAgICAgICAgICAgICAgICAgbV9yYXJlRGF0
YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzW2ldLm9mZnNldFRhYmxlLmFkZChwdHItPmtleSwg
b2Zmc2V0KTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CkBAIC0yMDYxLDExICsy
MDI0LDIwIEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4
ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAgLy8gQm9va2tlZXAgdGhlIHN0
cm9uZ2x5IHJlZmVyZW5jZWQgbW9kdWxlIGVudmlyb25tZW50cy4KICAgICBIYXNoU2V0PEpTTW9k
dWxlRW52aXJvbm1lbnQqPiBzdHJvbmdseVJlZmVyZW5jZWRNb2R1bGVFbnZpcm9ubWVudHM7CiAK
LSAgICAvLyBCb29ra2VlcCB0aGUgbWVyZ2UgcG9pbnQgYnl0ZWNvZGUgb2Zmc2V0cy4KLSAgICBW
ZWN0b3I8c2l6ZV90PiBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXRzOwotCiAgICAgUmVmQ291bnRl
ZEFycmF5PEluc3RydWN0aW9uPiBpbnN0cnVjdGlvbnMoaW5zdHJ1Y3Rpb25Db3VudCk7CiAKKyAg
ICAvLyBWYWx1ZVByb2ZpbGUgYXJyYXkgbmVlZHMgdG8gYmUgc29ydGVkIGJ5IHRoZSBieXRlY29k
ZSBvZmZzZXQuIFNpbmNlIHRoZSBnZW5lcmF0b3JpZmljYXRpb24gYWRkcyBuZXcgdmFsdWUgcHJv
ZmlsZXMsCisgICAgLy8gdGhpcyBpbnZhcmlhbnQgaXMgYnJva2VuLiBXZSBhc3NpZ24gYSBuZXcg
dmFsdWUgcHJvZmlsZSBpbmRleCBoZXJlIHRvIG1ha2UgdGhpcyBhc3N1bXB0aW9uIHZhbGlkLgor
ICAgIC8vIEp1c3QgY291bnRpbmcgdGhlIHZhbHVlIHByb2ZpbGVzIGlzIE9LIHRvIGFzc2lnbiBh
IG5ldyBpbmRleCBzaW5jZSBvbmUgdmFsdWUgcHJvZmlsZSBpcyBub3Qgc2hhcmVkIGFtb25nIG11
bHRpcGxlIG9wY29kZXMuCisgICAgdW5zaWduZWQgdmFsdWVQcm9maWxlQ291bnQgPSAwOworICAg
IGF1dG8gbGlua1ZhbHVlUHJvZmlsZSA9IFsmXSh1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgdW5z
aWduZWQgb3BMZW5ndGgpIHsKKyAgICAgICAgdW5zaWduZWQgdmFsdWVQcm9maWxlSW5kZXggPSB2
YWx1ZVByb2ZpbGVDb3VudCsrOworICAgICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSAmbV92
YWx1ZVByb2ZpbGVzW3ZhbHVlUHJvZmlsZUluZGV4XTsKKyAgICAgICAgQVNTRVJUKHByb2ZpbGUt
Pm1fYnl0ZWNvZGVPZmZzZXQgPT0gLTEpOworICAgICAgICBwcm9maWxlLT5tX2J5dGVjb2RlT2Zm
c2V0ID0gYnl0ZWNvZGVPZmZzZXQ7CisgICAgICAgIGluc3RydWN0aW9uc1tieXRlY29kZU9mZnNl
dCArIG9wTGVuZ3RoIC0gMV0gPSBwcm9maWxlOworICAgIH07CisKICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyAhaW5zdHJ1Y3Rpb25SZWFkZXIuYXRFbmQoKTsgKSB7CiAgICAgICAgIGNvbnN0IFVu
bGlua2VkSW5zdHJ1Y3Rpb24qIHBjID0gaW5zdHJ1Y3Rpb25SZWFkZXIubmV4dCgpOwogCkBAIC0y
MTAwLDEwICsyMDcyLDcgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwg
U2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICAgICAgY2FzZSBv
cF9nZXRfYnlfaWQ6CiAgICAgICAgIGNhc2Ugb3BfZ2V0X2Zyb21fYXJndW1lbnRzOgogICAgICAg
ICBjYXNlIG9wX3RvX251bWJlcjogewotICAgICAgICAgICAgVmFsdWVQcm9maWxlKiBwcm9maWxl
ID0gJm1fdmFsdWVQcm9maWxlc1twY1tvcExlbmd0aCAtIDFdLnUub3BlcmFuZF07Ci0gICAgICAg
ICAgICBBU1NFUlQocHJvZmlsZS0+bV9ieXRlY29kZU9mZnNldCA9PSAtMSk7Ci0gICAgICAgICAg
ICBwcm9maWxlLT5tX2J5dGVjb2RlT2Zmc2V0ID0gaTsKLSAgICAgICAgICAgIGluc3RydWN0aW9u
c1tpICsgb3BMZW5ndGggLSAxXSA9IHByb2ZpbGU7CisgICAgICAgICAgICBsaW5rVmFsdWVQcm9m
aWxlKGksIG9wTGVuZ3RoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAg
IGNhc2Ugb3BfcHV0X2J5X3ZhbDogewpAQCAtMjE0MCwxMCArMjEwOSw3IEBAIHZvaWQgQ29kZUJs
b2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0
YWJsZSwgVW5saW5rCiAgICAgICAgIGNhc2Ugb3BfY2FsbDoKICAgICAgICAgY2FzZSBvcF90YWls
X2NhbGw6CiAgICAgICAgIGNhc2Ugb3BfY2FsbF9ldmFsOiB7Ci0gICAgICAgICAgICBWYWx1ZVBy
b2ZpbGUqIHByb2ZpbGUgPSAmbV92YWx1ZVByb2ZpbGVzW3BjW29wTGVuZ3RoIC0gMV0udS5vcGVy
YW5kXTsKLSAgICAgICAgICAgIEFTU0VSVChwcm9maWxlLT5tX2J5dGVjb2RlT2Zmc2V0ID09IC0x
KTsKLSAgICAgICAgICAgIHByb2ZpbGUtPm1fYnl0ZWNvZGVPZmZzZXQgPSBpOwotICAgICAgICAg
ICAgaW5zdHJ1Y3Rpb25zW2kgKyBvcExlbmd0aCAtIDFdID0gcHJvZmlsZTsKKyAgICAgICAgICAg
IGxpbmtWYWx1ZVByb2ZpbGUoaSwgb3BMZW5ndGgpOwogICAgICAgICAgICAgaW50IGFycmF5UHJv
ZmlsZUluZGV4ID0gcGNbb3BMZW5ndGggLSAyXS51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBtX2Fy
cmF5UHJvZmlsZXNbYXJyYXlQcm9maWxlSW5kZXhdID0gQXJyYXlQcm9maWxlKGkpOwogICAgICAg
ICAgICAgaW5zdHJ1Y3Rpb25zW2kgKyBvcExlbmd0aCAtIDJdID0gJm1fYXJyYXlQcm9maWxlc1th
cnJheVByb2ZpbGVJbmRleF07CkBAIC0yMTUyLDEwICsyMTE4LDcgQEAgdm9pZCBDb2RlQmxvY2s6
OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxl
LCBVbmxpbmsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2NvbnN0cnVjdDogewogICAgICAg
ICAgICAgaW5zdHJ1Y3Rpb25zW2kgKyA1XSA9ICZtX2xsaW50Q2FsbExpbmtJbmZvc1twY1s1XS51
Lm9wZXJhbmRdOwotICAgICAgICAgICAgVmFsdWVQcm9maWxlKiBwcm9maWxlID0gJm1fdmFsdWVQ
cm9maWxlc1twY1tvcExlbmd0aCAtIDFdLnUub3BlcmFuZF07Ci0gICAgICAgICAgICBBU1NFUlQo
cHJvZmlsZS0+bV9ieXRlY29kZU9mZnNldCA9PSAtMSk7Ci0gICAgICAgICAgICBwcm9maWxlLT5t
X2J5dGVjb2RlT2Zmc2V0ID0gaTsKLSAgICAgICAgICAgIGluc3RydWN0aW9uc1tpICsgb3BMZW5n
dGggLSAxXSA9IHByb2ZpbGU7CisgICAgICAgICAgICBsaW5rVmFsdWVQcm9maWxlKGksIG9wTGVu
Z3RoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfZ2V0
X2FycmF5X2xlbmd0aDoKQEAgLTIxODYsMTAgKzIxNDksNyBAQCB2b2lkIENvZGVCbG9jazo6Zmlu
aXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVu
bGluawogICAgICAgICB9CiAKICAgICAgICAgY2FzZSBvcF9nZXRfZnJvbV9zY29wZTogewotICAg
ICAgICAgICAgVmFsdWVQcm9maWxlKiBwcm9maWxlID0gJm1fdmFsdWVQcm9maWxlc1twY1tvcExl
bmd0aCAtIDFdLnUub3BlcmFuZF07Ci0gICAgICAgICAgICBBU1NFUlQocHJvZmlsZS0+bV9ieXRl
Y29kZU9mZnNldCA9PSAtMSk7Ci0gICAgICAgICAgICBwcm9maWxlLT5tX2J5dGVjb2RlT2Zmc2V0
ID0gaTsKLSAgICAgICAgICAgIGluc3RydWN0aW9uc1tpICsgb3BMZW5ndGggLSAxXSA9IHByb2Zp
bGU7CisgICAgICAgICAgICBsaW5rVmFsdWVQcm9maWxlKGksIG9wTGVuZ3RoKTsKIAogICAgICAg
ICAgICAgLy8gZ2V0X2Zyb21fc2NvcGUgZHN0LCBzY29wZSwgaWQsIEdldFB1dEluZm8sIFN0cnVj
dHVyZSwgT3BlcmFuZAogCkBAIC0yMzQ2LDE1ICsyMzA2LDYgQEAgdm9pZCBDb2RlQmxvY2s6OmZp
bmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBV
bmxpbmsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKLSAgICAgICAgY2FzZSBvcF9z
YXZlOiB7Ci0gICAgICAgICAgICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSBwY1sy
XS51LmluZGV4OwotICAgICAgICAgICAgaW50IG9mZnNldCA9IHBjWzNdLnUub3BlcmFuZDsKLSAg
ICAgICAgICAgIGlmIChsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPj0gbWVyZ2VQb2ludEJ5dGVjb2Rl
T2Zmc2V0cy5zaXplKCkpCi0gICAgICAgICAgICAgICAgbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0
cy5yZXNpemUobGl2ZUNhbGxlZUxvY2Fsc0luZGV4ICsgMSk7Ci0gICAgICAgICAgICBtZXJnZVBv
aW50Qnl0ZWNvZGVPZmZzZXRzW2xpdmVDYWxsZWVMb2NhbHNJbmRleF0gPSBpICsgb2Zmc2V0Owot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLQogICAgICAgICBkZWZhdWx0OgogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTIzNjYsMjAgKzIzMTcsNiBAQCB2b2lkIENvZGVC
bG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1
dGFibGUsIFVubGluawogCiAgICAgbV9pbnN0cnVjdGlvbnMgPSBXVEZNb3ZlKGluc3RydWN0aW9u
cyk7CiAKLSAgICAvLyBQZXJmb3JtIGJ5dGVjb2RlIGxpdmVuZXNzIGFuYWx5c2lzIHRvIGRldGVy
bWluZSB3aGljaCBsb2NhbHMgYXJlIGxpdmUgYW5kIHNob3VsZCBiZSByZXN1bWVkIHdoZW4gZXhl
Y3V0aW5nIG9wX3Jlc3VtZS4KLSAgICBpZiAodW5saW5rZWRDb2RlQmxvY2stPnBhcnNlTW9kZSgp
ID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yQm9keU1vZGUpIHsKLSAgICAgICAgaWYgKHNp
emVfdCBjb3VudCA9IG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldHMuc2l6ZSgpKSB7Ci0gICAgICAg
ICAgICBjcmVhdGVSYXJlRGF0YUlmTmVjZXNzYXJ5KCk7Ci0gICAgICAgICAgICBCeXRlY29kZUxp
dmVuZXNzQW5hbHlzaXMgbGl2ZW5lc3ModGhpcyk7Ci0gICAgICAgICAgICBtX3JhcmVEYXRhLT5t
X2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkLmdyb3coY291bnQpOwotICAgICAgICAgICAgc2l6ZV90
IGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9IDA7Ci0gICAgICAgICAgICBmb3IgKHNpemVfdCBieXRl
Y29kZU9mZnNldCA6IG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldHMpIHsKLSAgICAgICAgICAgICAg
ICBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkW2xpdmVDYWxsZWVMb2NhbHNJ
bmRleF0gPSBsaXZlbmVzcy5nZXRMaXZlbmVzc0luZm9BdEJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2Rl
T2Zmc2V0KTsKLSAgICAgICAgICAgICAgICArK2xpdmVDYWxsZWVMb2NhbHNJbmRleDsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQogICAgIC8vIFNldCBvcHRpbWl6YXRpb24gdGhy
ZXNob2xkcyBvbmx5IGFmdGVyIG1faW5zdHJ1Y3Rpb25zIGlzIGluaXRpYWxpemVkLCBzaW5jZSB0
aGVzZQogICAgIC8vIHJlbHkgb24gdGhlIGluc3RydWN0aW9uIGNvdW50IChhbmQgYXJlIGluIHRo
ZW9yeSBwZXJtaXR0ZWQgdG8gYWxzbyBpbnNwZWN0IHRoZQogICAgIC8vIGluc3RydWN0aW9uIHN0
cmVhbSB0byBtb3JlIGFjY3VyYXRlIGFzc2VzcyB0aGUgY29zdCBvZiB0aWVyLXVwKS4KQEAgLTMx
NzksMjEgKzMxMTYsNyBAQCBIYW5kbGVySW5mbyogQ29kZUJsb2NrOjpoYW5kbGVyRm9ySW5kZXgo
dW5zaWduZWQgaW5kZXgsIFJlcXVpcmVkSGFuZGxlciByZXF1aXJlZAogewogICAgIGlmICghbV9y
YXJlRGF0YSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgCi0gICAgVmVjdG9yPEhhbmRsZXJJbmZv
PiYgZXhjZXB0aW9uSGFuZGxlcnMgPSBtX3JhcmVEYXRhLT5tX2V4Y2VwdGlvbkhhbmRsZXJzOwot
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZXhjZXB0aW9uSGFuZGxlcnMuc2l6ZSgpOyArK2kp
IHsKLSAgICAgICAgSGFuZGxlckluZm8mIGhhbmRsZXIgPSBleGNlcHRpb25IYW5kbGVyc1tpXTsK
LSAgICAgICAgaWYgKChyZXF1aXJlZEhhbmRsZXIgPT0gUmVxdWlyZWRIYW5kbGVyOjpDYXRjaEhh
bmRsZXIpICYmICFoYW5kbGVyLmlzQ2F0Y2hIYW5kbGVyKCkpCi0gICAgICAgICAgICBjb250aW51
ZTsKLQotICAgICAgICAvLyBIYW5kbGVycyBhcmUgb3JkZXJlZCBpbm5lcm1vc3QgZmlyc3QsIHNv
IHRoZSBmaXJzdCBoYW5kbGVyIHdlIGVuY291bnRlcgotICAgICAgICAvLyB0aGF0IGNvbnRhaW5z
IHRoZSBzb3VyY2UgYWRkcmVzcyBpcyB0aGUgY29ycmVjdCBoYW5kbGVyIHRvIHVzZS4KLSAgICAg
ICAgLy8gVGhpcyBpbmRleCB1c2VkIGlzIGVpdGhlciB0aGUgQnl0ZWNvZGVPZmZzZXQgb3IgYSBD
YWxsU2l0ZUluZGV4LgotICAgICAgICBpZiAoaGFuZGxlci5zdGFydCA8PSBpbmRleCAmJiBoYW5k
bGVyLmVuZCA+IGluZGV4KQotICAgICAgICAgICAgcmV0dXJuICZoYW5kbGVyOwotICAgIH0KLQot
ICAgIHJldHVybiAwOworICAgIHJldHVybiBIYW5kbGVySW5mbzo6aGFuZGxlckZvckluZGV4KG1f
cmFyZURhdGEtPm1fZXhjZXB0aW9uSGFuZGxlcnMsIGluZGV4LCByZXF1aXJlZEhhbmRsZXIpOwog
fQogCiBDYWxsU2l0ZUluZGV4IENvZGVCbG9jazo6bmV3RXhjZXB0aW9uSGFuZGxpbmdDYWxsU2l0
ZUluZGV4KENhbGxTaXRlSW5kZXggb3JpZ2luYWxDYWxsU2l0ZSkKQEAgLTMyODksNyArMzIxMiw2
IEBAIHZvaWQgQ29kZUJsb2NrOjpzaHJpbmtUb0ZpdChTaHJpbmtNb2RlIHNocmlua01vZGUpCiAg
ICAgICAgIGlmIChtX3JhcmVEYXRhKSB7CiAgICAgICAgICAgICBtX3JhcmVEYXRhLT5tX3N3aXRj
aEp1bXBUYWJsZXMuc2hyaW5rVG9GaXQoKTsKICAgICAgICAgICAgIG1fcmFyZURhdGEtPm1fc3Ry
aW5nU3dpdGNoSnVtcFRhYmxlcy5zaHJpbmtUb0ZpdCgpOwotICAgICAgICAgICAgbV9yYXJlRGF0
YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZC5zaHJpbmtUb0ZpdCgpOwogICAgICAgICB9CiAg
ICAgfSAvLyBlbHNlIGRvbid0IHNocmluayB0aGVzZSwgYmVjYXVzZSB3ZSB3b3VsZCBoYXZlIGFs
cmVhZHkgcG9pbnRlZCBwb2ludGVycyBpbnRvIHRoZXNlIHRhYmxlcy4KIH0KQEAgLTQ1NjcsNCAr
NDQ4OSwxNiBAQCB2b2lkIENvZGVCbG9jazo6aml0U29vbigpCiAgICAgbV9sbGludEV4ZWN1dGVD
b3VudGVyLnNldE5ld1RocmVzaG9sZCh0aHJlc2hvbGRGb3JKSVQoT3B0aW9uczo6dGhyZXNob2xk
Rm9ySklUU29vbigpKSwgdGhpcyk7CiB9CiAKK0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcyYgQ29k
ZUJsb2NrOjpsaXZlbmVzc0FuYWx5c2lzU2xvdygpCit7CisgICAgc3RkOjp1bmlxdWVfcHRyPEJ5
dGVjb2RlTGl2ZW5lc3NBbmFseXNpcz4gYW5hbHlzaXMgPSBzdGQ6Om1ha2VfdW5pcXVlPEJ5dGVj
b2RlTGl2ZW5lc3NBbmFseXNpcz4odGhpcyk7CisgICAgeworICAgICAgICBDb25jdXJyZW50SklU
TG9ja2VyIGxvY2tlcihtX2xvY2spOworICAgICAgICBpZiAoIW1fbGl2ZW5lc3NBbmFseXNpcykK
KyAgICAgICAgICAgIG1fbGl2ZW5lc3NBbmFseXNpcyA9IFdURk1vdmUoYW5hbHlzaXMpOworICAg
ICAgICByZXR1cm4gKm1fbGl2ZW5lc3NBbmFseXNpczsKKyAgICB9Cit9CisKKwogfSAvLyBuYW1l
c3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKaW5k
ZXggYjI4ODM2NTRiZTM0NWU3YWIwMTEwZWMxYjZmNWQ2OTdhMThjMjdjMi4uMGI5MGI3ZWJkN2Ni
NmEzNmM1MTA4ZmNlMmM2OTZmNzljNTRjNWUwOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2suaApAQCAtMzMsNyArMzMsNiBAQAogI2luY2x1ZGUgIkFycmF5UHJv
ZmlsZS5oIgogI2luY2x1ZGUgIkJ5VmFsSW5mby5oIgogI2luY2x1ZGUgIkJ5dGVjb2RlQ29udmVu
dGlvbnMuaCIKLSNpbmNsdWRlICJCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuaCIKICNpbmNsdWRl
ICJDYWxsTGlua0luZm8uaCIKICNpbmNsdWRlICJDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9m
ZnNldC5oIgogI2luY2x1ZGUgIkNvZGVCbG9ja0hhc2guaCIKQEAgLTc4LDYgKzc3LDcgQEAKIAog
bmFtZXNwYWNlIEpTQyB7CiAKK2NsYXNzIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczsKIGNsYXNz
IEV4ZWNTdGF0ZTsKIGNsYXNzIEpTTW9kdWxlRW52aXJvbm1lbnQ7CiBjbGFzcyBMTEludE9mZnNl
dHNFeHRyYWN0b3I7CkBAIC0yMjAsMTAgKzIyMCw2IEBAIGNsYXNzIENvZGVCbG9jayA6IHB1Ymxp
YyBKU0NlbGwgewogICAgICAgICByZXR1cm4gaW5kZXggPj0gbV9udW1WYXJzOwogICAgIH0KIAot
ICAgIGVudW0gY2xhc3MgUmVxdWlyZWRIYW5kbGVyIHsKLSAgICAgICAgQ2F0Y2hIYW5kbGVyLAot
ICAgICAgICBBbnlIYW5kbGVyCi0gICAgfTsKICAgICBIYW5kbGVySW5mbyogaGFuZGxlckZvckJ5
dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBSZXF1aXJlZEhhbmRsZXIgPSBS
ZXF1aXJlZEhhbmRsZXI6OkFueUhhbmRsZXIpOwogICAgIEhhbmRsZXJJbmZvKiBoYW5kbGVyRm9y
SW5kZXgodW5zaWduZWQsIFJlcXVpcmVkSGFuZGxlciA9IFJlcXVpcmVkSGFuZGxlcjo6QW55SGFu
ZGxlcik7CiAgICAgdm9pZCByZW1vdmVFeGNlcHRpb25IYW5kbGVyRm9yQ2FsbFNpdGUoQ2FsbFNp
dGVJbmRleCk7CkBAIC0yOTUsNiArMjkxLDggQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpT
Q2VsbCB7CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxJbnN0cnVjdGlvbio+KHJldHVybkFk
ZHJlc3MpIC0gaW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsKICAgICB9CiAKKyAgICB0eXBlZGVmIFJl
ZkNvdW50ZWRBcnJheTxJbnN0cnVjdGlvbj4mIFVucGFja2VkSW5zdHJ1Y3Rpb25zOworCiAgICAg
dW5zaWduZWQgbnVtYmVyT2ZJbnN0cnVjdGlvbnMoKSBjb25zdCB7IHJldHVybiBtX2luc3RydWN0
aW9ucy5zaXplKCk7IH0KICAgICBSZWZDb3VudGVkQXJyYXk8SW5zdHJ1Y3Rpb24+JiBpbnN0cnVj
dGlvbnMoKSB7IHJldHVybiBtX2luc3RydWN0aW9uczsgfQogICAgIGNvbnN0IFJlZkNvdW50ZWRB
cnJheTxJbnN0cnVjdGlvbj4mIGluc3RydWN0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1faW5zdHJ1
Y3Rpb25zOyB9CkBAIC01NDIsNyArNTQwLDcgQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpT
Q2VsbCB7CiAgICAgfQogCiAgICAgV3JpdGVCYXJyaWVyPFVua25vd24+JiBjb25zdGFudFJlZ2lz
dGVyKGludCBpbmRleCkgeyByZXR1cm4gbV9jb25zdGFudFJlZ2lzdGVyc1tpbmRleCAtIEZpcnN0
Q29uc3RhbnRSZWdpc3RlckluZGV4XTsgfQotICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc0NvbnN0
YW50UmVnaXN0ZXJJbmRleChpbnQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIGluZGV4ID49IEZpcnN0
Q29uc3RhbnRSZWdpc3RlckluZGV4OyB9CisgICAgc3RhdGljIEFMV0FZU19JTkxJTkUgYm9vbCBp
c0NvbnN0YW50UmVnaXN0ZXJJbmRleChpbnQgaW5kZXgpIHsgcmV0dXJuIGluZGV4ID49IEZpcnN0
Q29uc3RhbnRSZWdpc3RlckluZGV4OyB9CiAgICAgQUxXQVlTX0lOTElORSBKU1ZhbHVlIGdldENv
bnN0YW50KGludCBpbmRleCkgY29uc3QgeyByZXR1cm4gbV9jb25zdGFudFJlZ2lzdGVyc1tpbmRl
eCAtIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4XS5nZXQoKTsgfQogICAgIEFMV0FZU19JTkxJ
TkUgU291cmNlQ29kZVJlcHJlc2VudGF0aW9uIGNvbnN0YW50U291cmNlQ29kZVJlcHJlc2VudGF0
aW9uKGludCBpbmRleCkgY29uc3QgeyByZXR1cm4gbV9jb25zdGFudHNTb3VyY2VDb2RlUmVwcmVz
ZW50YXRpb25baW5kZXggLSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleF07IH0KIApAQCAtNTg4
LDE0ICs1ODYsNyBAQCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAgICAg
ICAgIGlmICghIW1fbGl2ZW5lc3NBbmFseXNpcykKICAgICAgICAgICAgICAgICByZXR1cm4gKm1f
bGl2ZW5lc3NBbmFseXNpczsKICAgICAgICAgfQotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8Qnl0
ZWNvZGVMaXZlbmVzc0FuYWx5c2lzPiBhbmFseXNpcyA9Ci0gICAgICAgICAgICBzdGQ6Om1ha2Vf
dW5pcXVlPEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcz4odGhpcyk7Ci0gICAgICAgIHsKLSAgICAg
ICAgICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKG1fbG9jayk7Ci0gICAgICAgICAgICBp
ZiAoIW1fbGl2ZW5lc3NBbmFseXNpcykKLSAgICAgICAgICAgICAgICBtX2xpdmVuZXNzQW5hbHlz
aXMgPSBXVEZNb3ZlKGFuYWx5c2lzKTsKLSAgICAgICAgICAgIHJldHVybiAqbV9saXZlbmVzc0Fu
YWx5c2lzOwotICAgICAgICB9CisgICAgICAgIHJldHVybiBsaXZlbmVzc0FuYWx5c2lzU2xvdygp
OwogICAgIH0KICAgICAKICAgICB2b2lkIHZhbGlkYXRlKCk7CkBAIC02MTYsMTggKzYwNyw2IEBA
IGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgIFN0cmluZ0p1bXBUYWJsZSYg
YWRkU3RyaW5nU3dpdGNoSnVtcFRhYmxlKCkgeyBjcmVhdGVSYXJlRGF0YUlmTmVjZXNzYXJ5KCk7
IG1fcmFyZURhdGEtPm1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlcy5hcHBlbmQoU3RyaW5nSnVtcFRh
YmxlKCkpOyByZXR1cm4gbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzLmxhc3Qo
KTsgfQogICAgIFN0cmluZ0p1bXBUYWJsZSYgc3RyaW5nU3dpdGNoSnVtcFRhYmxlKGludCB0YWJs
ZUluZGV4KSB7IFJFTEVBU0VfQVNTRVJUKG1fcmFyZURhdGEpOyByZXR1cm4gbV9yYXJlRGF0YS0+
bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzW3RhYmxlSW5kZXhdOyB9CiAKLSAgICAvLyBMaXZlIGNh
bGxlZSByZWdpc3RlcnMgYXQgeWllbGQgcG9pbnRzLgotICAgIGNvbnN0IEZhc3RCaXRWZWN0b3Im
IGxpdmVDYWxsZWVMb2NhbHNBdFlpZWxkKHVuc2lnbmVkIGluZGV4KSBjb25zdAotICAgIHsKLSAg
ICAgICAgUkVMRUFTRV9BU1NFUlQobV9yYXJlRGF0YSk7Ci0gICAgICAgIHJldHVybiBtX3JhcmVE
YXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkW2luZGV4XTsKLSAgICB9Ci0gICAgRmFzdEJp
dFZlY3RvciYgbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQodW5zaWduZWQgaW5kZXgpCi0gICAgewot
ICAgICAgICBSRUxFQVNFX0FTU0VSVChtX3JhcmVEYXRhKTsKLSAgICAgICAgcmV0dXJuIG1fcmFy
ZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGRbaW5kZXhdOwotICAgIH0KLQogICAgIEV2
YWxDb2RlQ2FjaGUmIGV2YWxDb2RlQ2FjaGUoKSB7IGNyZWF0ZVJhcmVEYXRhSWZOZWNlc3Nhcnko
KTsgcmV0dXJuIG1fcmFyZURhdGEtPm1fZXZhbENvZGVDYWNoZTsgfQogCiAgICAgZW51bSBTaHJp
bmtNb2RlIHsKQEAgLTg4Miw4ICs4NjEsNiBAQCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlND
ZWxsIHsKICAgICAgICAgVmVjdG9yPFNpbXBsZUp1bXBUYWJsZT4gbV9zd2l0Y2hKdW1wVGFibGVz
OwogICAgICAgICBWZWN0b3I8U3RyaW5nSnVtcFRhYmxlPiBtX3N0cmluZ1N3aXRjaEp1bXBUYWJs
ZXM7CiAKLSAgICAgICAgVmVjdG9yPEZhc3RCaXRWZWN0b3I+IG1fbGl2ZUNhbGxlZUxvY2Fsc0F0
WWllbGQ7Ci0KICAgICAgICAgRXZhbENvZGVDYWNoZSBtX2V2YWxDb2RlQ2FjaGU7CiAgICAgfTsK
IApAQCAtOTE4LDYgKzg5NSw4IEBAIGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewog
CiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBDb2RlQmxvY2tTZXQ7CisKKyAgICBCeXRlY29k
ZUxpdmVuZXNzQW5hbHlzaXMmIGxpdmVuZXNzQW5hbHlzaXNTbG93KCk7CiAgICAgCiAgICAgQ29k
ZUJsb2NrKiBzcGVjaWFsT1NSRW50cnlCbG9ja09yTnVsbCgpOwogICAgIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0hhbmRsZXJJbmZvLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvSGFuZGxlckluZm8uaAppbmRleCBhY2RkYTA4ZWQxNGNiZjlm
MDk3MTI3NTA0MDVhNDE3NDFmNzZhMjEzLi5iYjY5MmI5ZGMxNzBiMDlmNDNjZTg2N2Y5NDFmNzUz
NWFjZmVjZjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSGFu
ZGxlckluZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSGFuZGxlcklu
Zm8uaApAQCAtMzcsNiArMzcsMTEgQEAgZW51bSBjbGFzcyBIYW5kbGVyVHlwZSB7CiAgICAgU3lu
dGhlc2l6ZWRGaW5hbGx5ID0gMwogfTsKIAorZW51bSBjbGFzcyBSZXF1aXJlZEhhbmRsZXIgewor
ICAgIENhdGNoSGFuZGxlciwKKyAgICBBbnlIYW5kbGVyCit9OworCiBzdHJ1Y3QgSGFuZGxlcklu
Zm9CYXNlIHsKICAgICBIYW5kbGVyVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nh
c3Q8SGFuZGxlclR5cGU+KHR5cGVCaXRzKTsgfQogICAgIHZvaWQgc2V0VHlwZShIYW5kbGVyVHlw
ZSB0eXBlKSB7IHR5cGVCaXRzID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHR5cGUpOyB9CkBAIC01
OCw2ICs2MywyMyBAQCBzdHJ1Y3QgSGFuZGxlckluZm9CYXNlIHsKIAogICAgIGJvb2wgaXNDYXRj
aEhhbmRsZXIoKSBjb25zdCB7IHJldHVybiB0eXBlKCkgPT0gSGFuZGxlclR5cGU6OkNhdGNoOyB9
CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIYW5kbGVyPgorICAgIHN0YXRpYyBIYW5kbGVyKiBo
YW5kbGVyRm9ySW5kZXgoVmVjdG9yPEhhbmRsZXI+JiBleGVwdGlvbkhhbmRsZXJzLCB1bnNpZ25l
ZCBpbmRleCwgUmVxdWlyZWRIYW5kbGVyIHJlcXVpcmVkSGFuZGxlcikKKyAgICB7CisgICAgICAg
IGZvciAoSGFuZGxlciYgaGFuZGxlciA6IGV4ZXB0aW9uSGFuZGxlcnMpIHsKKyAgICAgICAgICAg
IGlmICgocmVxdWlyZWRIYW5kbGVyID09IFJlcXVpcmVkSGFuZGxlcjo6Q2F0Y2hIYW5kbGVyKSAm
JiAhaGFuZGxlci5pc0NhdGNoSGFuZGxlcigpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOwor
CisgICAgICAgICAgICAvLyBIYW5kbGVycyBhcmUgb3JkZXJlZCBpbm5lcm1vc3QgZmlyc3QsIHNv
IHRoZSBmaXJzdCBoYW5kbGVyIHdlIGVuY291bnRlcgorICAgICAgICAgICAgLy8gdGhhdCBjb250
YWlucyB0aGUgc291cmNlIGFkZHJlc3MgaXMgdGhlIGNvcnJlY3QgaGFuZGxlciB0byB1c2UuCisg
ICAgICAgICAgICAvLyBUaGlzIGluZGV4IHVzZWQgaXMgZWl0aGVyIHRoZSBCeXRlY29kZU9mZnNl
dCBvciBhIENhbGxTaXRlSW5kZXguCisgICAgICAgICAgICBpZiAoaGFuZGxlci5zdGFydCA8PSBp
bmRleCAmJiBoYW5kbGVyLmVuZCA+IGluZGV4KQorICAgICAgICAgICAgICAgIHJldHVybiAmaGFu
ZGxlcjsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKwogICAg
IHVpbnQzMl90IHN0YXJ0OwogICAgIHVpbnQzMl90IGVuZDsKICAgICB1aW50MzJfdCB0YXJnZXQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBU
YXJnZXRzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRh
cmdldHMuY3BwCmluZGV4IGUyY2IwMDA0ODM3OTRiYTkyZDUxMGRjZjVmYTk5NDg4NWEyM2RjM2Qu
LmNhYjlmYmRjNGU4MzlmYmI4OWE2OTMzNTYyMjJkYjAwZTEwMjIzY2EgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHMuY3BwCkBA
IC0yNiwxNCArMjYsMTUgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJQcmVjaXNl
SnVtcFRhcmdldHMuaCIKIAorI2luY2x1ZGUgIkludGVycHJldGVySW5saW5lcy5oIgogI2luY2x1
ZGUgIkpTQ0lubGluZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKLXRlbXBsYXRlIDxzaXplX3Qg
dmVjdG9yU2l6ZT4KLXN0YXRpYyB2b2lkIGdldEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQo
Q29kZUJsb2NrKiBjb2RlQmxvY2ssIEludGVycHJldGVyKiBpbnRlcnByZXRlciwgSW5zdHJ1Y3Rp
b24qIGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgVmVjdG9yPHVu
c2lnbmVkLCB2ZWN0b3JTaXplPiYgb3V0KQordGVtcGxhdGUgPHNpemVfdCB2ZWN0b3JTaXplLCB0
eXBlbmFtZSBCbG9jaywgdHlwZW5hbWUgSW5zdHJ1Y3Rpb24+CitzdGF0aWMgdm9pZCBnZXRKdW1w
VGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KEJsb2NrKiBjb2RlQmxvY2ssIEludGVycHJldGVyKiBp
bnRlcnByZXRlciwgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBieXRl
Y29kZU9mZnNldCwgVmVjdG9yPHVuc2lnbmVkLCB2ZWN0b3JTaXplPiYgb3V0KQogewotICAgIE9w
Y29kZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGluc3RydWN0aW9uc0Jl
Z2luW2J5dGVjb2RlT2Zmc2V0XS51Lm9wY29kZSk7CisgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBp
bnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25zQmVnaW5bYnl0ZWNvZGVPZmZzZXRd
KTsKICAgICBJbnN0cnVjdGlvbiogY3VycmVudCA9IGluc3RydWN0aW9uc0JlZ2luICsgYnl0ZWNv
ZGVPZmZzZXQ7CiAgICAgc3dpdGNoIChvcGNvZGVJRCkgewogICAgIGNhc2Ugb3Bfam1wOgpAQCAt
NTQsMjEgKzU1LDI1IEBAIHN0YXRpYyB2b2lkIGdldEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZz
ZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEludGVycHJldGVyKiBpCiAgICAgY2FzZSBvcF9qbmxl
c3NlcToKICAgICBjYXNlIG9wX2puZ3JlYXRlcjoKICAgICBjYXNlIG9wX2puZ3JlYXRlcmVxOgot
ICAgIGNhc2Ugb3Bfc2F2ZTogLy8gVGhlIGp1bXAgb2Ygb3Bfc2F2ZSBpcyBwdXJlbHkgZm9yIGNh
bGN1bGF0aW5nIGxpdmVuZXNzLgogICAgICAgICBvdXQuYXBwZW5kKGJ5dGVjb2RlT2Zmc2V0ICsg
Y3VycmVudFszXS51Lm9wZXJhbmQpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIG9wX3NhdmU6
IHsKKyAgICAgICAgLy8gVGhlIGp1bXAgb2Ygb3Bfc2F2ZSB1bmRlciBFeHRyYWN0R2VuZXJhdG9y
TGl2ZUNhbGxlZUxvY2FscyBtb2RlIGlzIHB1cmVseSBmb3IgY2FsY3VsYXRpbmcgbGl2ZW5lc3Mu
CisgICAgICAgIG91dC5hcHBlbmQoYnl0ZWNvZGVPZmZzZXQgKyBjdXJyZW50WzNdLnUub3BlcmFu
ZCk7CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICBjYXNlIG9wX3N3aXRjaF9pbW06CiAgICAg
Y2FzZSBvcF9zd2l0Y2hfY2hhcjogewotICAgICAgICBTaW1wbGVKdW1wVGFibGUmIHRhYmxlID0g
Y29kZUJsb2NrLT5zd2l0Y2hKdW1wVGFibGUoY3VycmVudFsxXS51Lm9wZXJhbmQpOworICAgICAg
ICBhdXRvJiB0YWJsZSA9IGNvZGVCbG9jay0+c3dpdGNoSnVtcFRhYmxlKGN1cnJlbnRbMV0udS5v
cGVyYW5kKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gdGFibGUuYnJhbmNoT2Zmc2V0cy5z
aXplKCk7IGktLTspCiAgICAgICAgICAgICBvdXQuYXBwZW5kKGJ5dGVjb2RlT2Zmc2V0ICsgdGFi
bGUuYnJhbmNoT2Zmc2V0c1tpXSk7CiAgICAgICAgIG91dC5hcHBlbmQoYnl0ZWNvZGVPZmZzZXQg
KyBjdXJyZW50WzJdLnUub3BlcmFuZCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNl
IG9wX3N3aXRjaF9zdHJpbmc6IHsKLSAgICAgICAgU3RyaW5nSnVtcFRhYmxlJiB0YWJsZSA9IGNv
ZGVCbG9jay0+c3RyaW5nU3dpdGNoSnVtcFRhYmxlKGN1cnJlbnRbMV0udS5vcGVyYW5kKTsKLSAg
ICAgICAgU3RyaW5nSnVtcFRhYmxlOjpTdHJpbmdPZmZzZXRUYWJsZTo6aXRlcmF0b3IgaXRlciA9
IHRhYmxlLm9mZnNldFRhYmxlLmJlZ2luKCk7Ci0gICAgICAgIFN0cmluZ0p1bXBUYWJsZTo6U3Ry
aW5nT2Zmc2V0VGFibGU6Oml0ZXJhdG9yIGVuZCA9IHRhYmxlLm9mZnNldFRhYmxlLmVuZCgpOwor
ICAgICAgICBhdXRvJiB0YWJsZSA9IGNvZGVCbG9jay0+c3RyaW5nU3dpdGNoSnVtcFRhYmxlKGN1
cnJlbnRbMV0udS5vcGVyYW5kKTsKKyAgICAgICAgYXV0byBpdGVyID0gdGFibGUub2Zmc2V0VGFi
bGUuYmVnaW4oKTsKKyAgICAgICAgYXV0byBlbmQgPSB0YWJsZS5vZmZzZXRUYWJsZS5lbmQoKTsK
ICAgICAgICAgZm9yICg7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpCiAgICAgICAgICAgICBvdXQuYXBw
ZW5kKGJ5dGVjb2RlT2Zmc2V0ICsgaXRlci0+dmFsdWUuYnJhbmNoT2Zmc2V0KTsKICAgICAgICAg
b3V0LmFwcGVuZChieXRlY29kZU9mZnNldCArIGN1cnJlbnRbMl0udS5vcGVyYW5kKTsKQEAgLTgy
LDEzICs4NywxOSBAQCBzdGF0aWMgdm9pZCBnZXRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0
KENvZGVCbG9jayogY29kZUJsb2NrLCBJbnRlcnByZXRlciogaQogICAgIH0KIH0KIAotdm9pZCBj
b21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKENvZGVCbG9jayogY29kZUJsb2NrLCBWZWN0b3I8dW5z
aWduZWQsIDMyPiYgb3V0KQorZW51bSBjbGFzcyBDb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzTW9k
ZSB7CisgICAgRm9sbG93Q29kZUJsb2NrQ2xhaW0sCisgICAgRm9yY2VDb21wdXRlLAorfTsKKwor
dGVtcGxhdGU8Q29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0c01vZGUgTW9kZSwgdHlwZW5hbWUgQmxv
Y2ssIHR5cGVuYW1lIEluc3RydWN0aW9uLCBzaXplX3QgdmVjdG9yU2l6ZT4KK3ZvaWQgY29tcHV0
ZVByZWNpc2VKdW1wVGFyZ2V0c0ludGVybmFsKEJsb2NrKiBjb2RlQmxvY2ssIEluc3RydWN0aW9u
KiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCwgVmVjdG9yPHVu
c2lnbmVkLCB2ZWN0b3JTaXplPiYgb3V0KQogewogICAgIEFTU0VSVChvdXQuaXNFbXB0eSgpKTsK
ICAgICAKICAgICAvLyBXZSB3aWxsIGRlcml2ZSBhIHN1cGVyc2V0IG9mIHRoZSBqdW1wIHRhcmdl
dHMgdGhhdCB0aGUgY29kZSBibG9jayB0aGlua3MgaXQgaGFzLgogICAgIC8vIFNvLCBpZiB0aGUg
Y29kZSBibG9jayBjbGFpbXMgdGhlcmUgYXJlIG5vbmUsIHRoZW4gd2UgYXJlIGRvbmUuCi0gICAg
aWYgKCFjb2RlQmxvY2stPm51bWJlck9mSnVtcFRhcmdldHMoKSkKKyAgICBpZiAoTW9kZSA9PSBD
b21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzTW9kZTo6Rm9sbG93Q29kZUJsb2NrQ2xhaW0gJiYgIWNv
ZGVCbG9jay0+bnVtYmVyT2ZKdW1wVGFyZ2V0cygpKQogICAgICAgICByZXR1cm47CiAgICAgCiAg
ICAgZm9yICh1bnNpZ25lZCBpID0gY29kZUJsb2NrLT5udW1iZXJPZkV4Y2VwdGlvbkhhbmRsZXJz
KCk7IGktLTspIHsKQEAgLTk4LDEwICsxMDksOCBAQCB2b2lkIGNvbXB1dGVQcmVjaXNlSnVtcFRh
cmdldHMoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFZlY3Rvcjx1bnNpZ25lZCwgMzI+JiBvdXQpCiAg
ICAgfQogCiAgICAgSW50ZXJwcmV0ZXIqIGludGVycHJldGVyID0gY29kZUJsb2NrLT52bSgpLT5p
bnRlcnByZXRlcjsKLSAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4gPSBjb2RlQmxv
Y2stPmluc3RydWN0aW9ucygpLmJlZ2luKCk7Ci0gICAgdW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3Vu
dCA9IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpOwogICAgIGZvciAodW5zaWduZWQg
Ynl0ZWNvZGVPZmZzZXQgPSAwOyBieXRlY29kZU9mZnNldCA8IGluc3RydWN0aW9uQ291bnQ7KSB7
Ci0gICAgICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGlu
c3RydWN0aW9uc0JlZ2luW2J5dGVjb2RlT2Zmc2V0XS51Lm9wY29kZSk7CisgICAgICAgIE9wY29k
ZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGluc3RydWN0aW9uc0JlZ2lu
W2J5dGVjb2RlT2Zmc2V0XSk7CiAgICAgICAgIGdldEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZz
ZXQoY29kZUJsb2NrLCBpbnRlcnByZXRlciwgaW5zdHJ1Y3Rpb25zQmVnaW4sIGJ5dGVjb2RlT2Zm
c2V0LCBvdXQpOwogICAgICAgICBieXRlY29kZU9mZnNldCArPSBvcGNvZGVMZW5ndGhzW29wY29k
ZUlEXTsKICAgICB9CkBAIC0xMjMsMTEgKzEzMiwzNCBAQCB2b2lkIGNvbXB1dGVQcmVjaXNlSnVt
cFRhcmdldHMoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFZlY3Rvcjx1bnNpZ25lZCwgMzI+JiBvdXQp
CiAgICAgb3V0LnNocmlua1RvRml0KCk7CiB9CiAKLXZvaWQgZmluZEp1bXBUYXJnZXRzRm9yQnl0
ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0
LCBWZWN0b3I8dW5zaWduZWQsIDE+JiBvdXQpCit2b2lkIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdl
dHMoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFZlY3Rvcjx1bnNpZ25lZCwgMzI+JiBvdXQpCiB7Ci0g
ICAgSW50ZXJwcmV0ZXIqIGludGVycHJldGVyID0gY29kZUJsb2NrLT52bSgpLT5pbnRlcnByZXRl
cjsKLSAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4gPSBjb2RlQmxvY2stPmluc3Ry
dWN0aW9ucygpLmJlZ2luKCk7Ci0gICAgZ2V0SnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChj
b2RlQmxvY2ssIGludGVycHJldGVyLCBpbnN0cnVjdGlvbnNCZWdpbiwgYnl0ZWNvZGVPZmZzZXQs
IG91dCk7CisgICAgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0c0ludGVybmFsPENvbXB1dGVQcmVj
aXNlSnVtcFRhcmdldHNNb2RlOjpGb2xsb3dDb2RlQmxvY2tDbGFpbT4oY29kZUJsb2NrLCBjb2Rl
QmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCksIGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCku
c2l6ZSgpLCBvdXQpOworfQorCit2b2lkIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMoQ29kZUJs
b2NrKiBjb2RlQmxvY2ssIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQg
aW5zdHJ1Y3Rpb25Db3VudCwgVmVjdG9yPHVuc2lnbmVkLCAzMj4mIG91dCkKK3sKKyAgICBjb21w
dXRlUHJlY2lzZUp1bXBUYXJnZXRzSW50ZXJuYWw8Q29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0c01v
ZGU6OkZvbGxvd0NvZGVCbG9ja0NsYWltPihjb2RlQmxvY2ssIGluc3RydWN0aW9uc0JlZ2luLCBp
bnN0cnVjdGlvbkNvdW50LCBvdXQpOworfQorCit2b2lkIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdl
dHMoVW5saW5rZWRDb2RlQmxvY2sqIGNvZGVCbG9jaywgVW5saW5rZWRJbnN0cnVjdGlvbiogaW5z
dHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQsIFZlY3Rvcjx1bnNpZ25l
ZCwgMzI+JiBvdXQpCit7CisgICAgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0c0ludGVybmFsPENv
bXB1dGVQcmVjaXNlSnVtcFRhcmdldHNNb2RlOjpGb2xsb3dDb2RlQmxvY2tDbGFpbT4oY29kZUJs
b2NrLCBpbnN0cnVjdGlvbnNCZWdpbiwgaW5zdHJ1Y3Rpb25Db3VudCwgb3V0KTsKK30KKwordm9p
ZCByZWNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMoVW5saW5rZWRDb2RlQmxvY2sqIGNvZGVCbG9j
aywgVW5saW5rZWRJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGluc3Ry
dWN0aW9uQ291bnQsIFZlY3Rvcjx1bnNpZ25lZD4mIG91dCkKK3sKKyAgICBjb21wdXRlUHJlY2lz
ZUp1bXBUYXJnZXRzSW50ZXJuYWw8Q29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0c01vZGU6OkZvcmNl
Q29tcHV0ZT4oY29kZUJsb2NrLCBpbnN0cnVjdGlvbnNCZWdpbiwgaW5zdHJ1Y3Rpb25Db3VudCwg
b3V0KTsKK30KKwordm9pZCBmaW5kSnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBi
eXRlY29kZU9mZnNldCwgVmVjdG9yPHVuc2lnbmVkLCAxPiYgb3V0KQoreworICAgIGdldEp1bXBU
YXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoY29kZUJsb2NrLCBjb2RlQmxvY2stPnZtKCktPmludGVy
cHJldGVyLCBpbnN0cnVjdGlvbnNCZWdpbiwgYnl0ZWNvZGVPZmZzZXQsIG91dCk7Cit9CisKK3Zv
aWQgZmluZEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoVW5saW5rZWRDb2RlQmxvY2sqIGNv
ZGVCbG9jaywgVW5saW5rZWRJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVk
IGJ5dGVjb2RlT2Zmc2V0LCBWZWN0b3I8dW5zaWduZWQsIDE+JiBvdXQpCit7CisgICAgZ2V0SnVt
cFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChjb2RlQmxvY2ssIGNvZGVCbG9jay0+dm0oKS0+aW50
ZXJwcmV0ZXIsIGluc3RydWN0aW9uc0JlZ2luLCBieXRlY29kZU9mZnNldCwgb3V0KTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmgKaW5kZXggODUyNDEzZDc3Yjc5ODk4NGIyN2NlZjBlZDYy
YmM5NGM2ODllMjEyYy4uZGI5YmQzODNiOGFjNDU1N2QzMjY3MTdiNzJkNGIwZjUwYjFkMTgzOCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFy
Z2V0cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRh
cmdldHMuaApAQCAtMzAsMTAgKzMwLDE4IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCitjbGFzcyBV
bmxpbmtlZENvZGVCbG9jazsKK3N0cnVjdCBVbmxpbmtlZEluc3RydWN0aW9uOworCiAvLyBSZXR1
cm4gYSBzb3J0ZWQgbGlzdCBvZiBieXRlY29kZSBpbmRleCB0aGF0IGFyZSB0aGUgZGVzdGluYXRp
b24gb2YgYSBqdW1wLgogdm9pZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKENvZGVCbG9jayos
IFZlY3Rvcjx1bnNpZ25lZCwgMzI+JiBvdXQpOwordm9pZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJn
ZXRzKENvZGVCbG9jayosIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQg
aW5zdHJ1Y3Rpb25Db3VudCwgVmVjdG9yPHVuc2lnbmVkLCAzMj4mIG91dCk7Cit2b2lkIGNvbXB1
dGVQcmVjaXNlSnVtcFRhcmdldHMoVW5saW5rZWRDb2RlQmxvY2sqLCBVbmxpbmtlZEluc3RydWN0
aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCwgVmVjdG9y
PHVuc2lnbmVkLCAzMj4mIG91dCk7CisKK3ZvaWQgcmVjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRz
KFVubGlua2VkQ29kZUJsb2NrKiwgVW5saW5rZWRJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVn
aW4sIHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQsIFZlY3Rvcjx1bnNpZ25lZD4mIG91dCk7CiAK
LXZvaWQgZmluZEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiwgdW5zaWdu
ZWQgYnl0ZWNvZGVPZmZzZXQsIFZlY3Rvcjx1bnNpZ25lZCwgMT4mIG91dCk7Cit2b2lkIGZpbmRK
dW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayosIEluc3RydWN0aW9uKiBpbnN0
cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIFZlY3Rvcjx1bnNpZ25lZCwg
MT4mIG91dCk7Cit2b2lkIGZpbmRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KFVubGlua2Vk
Q29kZUJsb2NrKiwgVW5saW5rZWRJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2ln
bmVkIGJ5dGVjb2RlT2Zmc2V0LCBWZWN0b3I8dW5zaWduZWQsIDE+JiBvdXQpOwogCiB9IC8vIG5h
bWVzcGFjZSBKU0MKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1VubGlua2VkQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9V
bmxpbmtlZENvZGVCbG9jay5jcHAKaW5kZXggMjk5YWM2ODBkOWExZDFlNWE5MGQ5ZmFlMWEyMmY4
NDRlMjkyZTNlMi4uZjdiNWFlMGI2YjQ3MjE3MGQyODk0NjQxNjc2NjE4YzU3YzQ5ZWMyZiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2Nr
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxv
Y2suY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiVW5saW5rZWRDb2RlQmxvY2suaCIK
IAogI2luY2x1ZGUgIkJ5dGVjb2RlR2VuZXJhdG9yLmgiCisjaW5jbHVkZSAiQnl0ZWNvZGVNb2Rp
ZmljYXRpb25TZXQuaCIKICNpbmNsdWRlICJDbGFzc0luZm8uaCIKICNpbmNsdWRlICJDb2RlQ2Fj
aGUuaCIKICNpbmNsdWRlICJFeGVjdXRhYmxlLmgiCkBAIC0zNiw2ICszNyw3IEBACiAjaW5jbHVk
ZSAiSlNTdHJpbmcuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiUGFyc2Vy
LmgiCisjaW5jbHVkZSAiUHJlY2lzZUp1bXBUYXJnZXRzLmgiCiAjaW5jbHVkZSAiU291cmNlUHJv
dmlkZXIuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIKICNpbmNsdWRlICJTeW1ib2xUYWJsZS5o
IgpAQCAtMzY2LDUgKzM2OCwxMTEgQEAgY29uc3QgVW5saW5rZWRJbnN0cnVjdGlvblN0cmVhbSYg
VW5saW5rZWRDb2RlQmxvY2s6Omluc3RydWN0aW9ucygpIGNvbnN0CiAgICAgcmV0dXJuICptX3Vu
bGlua2VkSW5zdHJ1Y3Rpb25zOwogfQogCitVbmxpbmtlZEhhbmRsZXJJbmZvKiBVbmxpbmtlZENv
ZGVCbG9jazo6aGFuZGxlckZvckJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0
LCBSZXF1aXJlZEhhbmRsZXIgcmVxdWlyZWRIYW5kbGVyKQoreworICAgIHJldHVybiBoYW5kbGVy
Rm9ySW5kZXgoYnl0ZWNvZGVPZmZzZXQsIHJlcXVpcmVkSGFuZGxlcik7Cit9CisKK1VubGlua2Vk
SGFuZGxlckluZm8qIFVubGlua2VkQ29kZUJsb2NrOjpoYW5kbGVyRm9ySW5kZXgodW5zaWduZWQg
aW5kZXgsIFJlcXVpcmVkSGFuZGxlciByZXF1aXJlZEhhbmRsZXIpCit7CisgICAgaWYgKCFtX3Jh
cmVEYXRhKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gVW5saW5rZWRIYW5k
bGVySW5mbzo6aGFuZGxlckZvckluZGV4KG1fcmFyZURhdGEtPm1fZXhjZXB0aW9uSGFuZGxlcnMs
IGluZGV4LCByZXF1aXJlZEhhbmRsZXIpOworfQorCit2b2lkIFVubGlua2VkQ29kZUJsb2NrOjph
cHBseU1vZGlmaWNhdGlvbihCeXRlY29kZU1vZGlmaWNhdGlvblNldCYgaW5zZXJ0aW9uU2V0KQor
eworICAgIC8vIEJlZm9yZSBhcHBseWluZyB0aGUgY2hhbmdlcywgd2UgYWRqdXN0IHRoZSBqdW1w
cyBiYXNlZCBvbiB0aGUgb3JpZ2luYWwgYnl0ZWNvZGUgb2Zmc2V0LCB0aGUgb2Zmc2V0IHRvIHRo
ZSBqdW1wIHRhcmdldCwgYW5kCisgICAgLy8gdGhlIGluc2VydGlvbiBpbmZvcm1hdGlvbi4KKwor
ICAgIEJ5dGVjb2RlR3JhcGg8VW5saW5rZWRDb2RlQmxvY2s+JiBncmFwaCA9IGluc2VydGlvblNl
dC5ncmFwaCgpOworICAgIFVubGlua2VkSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luID0g
Z3JhcGguaW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsKKyAgICBmb3IgKGludCBieXRlY29kZU9mZnNl
dCA9IDAsIGluc3RydWN0aW9uQ291bnQgPSBncmFwaC5pbnN0cnVjdGlvbnMoKS5zaXplKCk7IGJ5
dGVjb2RlT2Zmc2V0IDwgaW5zdHJ1Y3Rpb25Db3VudDspIHsKKyAgICAgICAgVW5saW5rZWRJbnN0
cnVjdGlvbiogY3VycmVudCA9IGluc3RydWN0aW9uc0JlZ2luICsgYnl0ZWNvZGVPZmZzZXQ7Cisg
ICAgICAgIE9wY29kZUlEIG9wY29kZUlEID0gY3VycmVudFswXS51Lm9wY29kZTsKKworICAgICAg
ICBzd2l0Y2ggKG9wY29kZUlEKSB7CisgICAgICAgIGNhc2Ugb3Bfam1wOgorICAgICAgICAgICAg
Y3VycmVudFsxXS51Lm9wZXJhbmQgPSBpbnNlcnRpb25TZXQuYWRqdXN0T2Zmc2V0KGJ5dGVjb2Rl
T2Zmc2V0LCBieXRlY29kZU9mZnNldCArIGN1cnJlbnRbMV0udS5vcGVyYW5kKTsKKyAgICAgICAg
ICAgIGJyZWFrOworCisgICAgICAgIGNhc2Ugb3BfanRydWU6CisgICAgICAgIGNhc2Ugb3BfamZh
bHNlOgorICAgICAgICBjYXNlIG9wX2plcV9udWxsOgorICAgICAgICBjYXNlIG9wX2puZXFfbnVs
bDoKKyAgICAgICAgICAgIGN1cnJlbnRbMl0udS5vcGVyYW5kID0gaW5zZXJ0aW9uU2V0LmFkanVz
dE9mZnNldChieXRlY29kZU9mZnNldCwgYnl0ZWNvZGVPZmZzZXQgKyBjdXJyZW50WzJdLnUub3Bl
cmFuZCk7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIG9wX2puZXFfcHRyOgor
ICAgICAgICBjYXNlIG9wX2psZXNzOgorICAgICAgICBjYXNlIG9wX2psZXNzZXE6CisgICAgICAg
IGNhc2Ugb3BfamdyZWF0ZXI6CisgICAgICAgIGNhc2Ugb3BfamdyZWF0ZXJlcToKKyAgICAgICAg
Y2FzZSBvcF9qbmxlc3M6CisgICAgICAgIGNhc2Ugb3Bfam5sZXNzZXE6CisgICAgICAgIGNhc2Ug
b3Bfam5ncmVhdGVyOgorICAgICAgICBjYXNlIG9wX2puZ3JlYXRlcmVxOgorICAgICAgICAgICAg
Y3VycmVudFszXS51Lm9wZXJhbmQgPSBpbnNlcnRpb25TZXQuYWRqdXN0T2Zmc2V0KGJ5dGVjb2Rl
T2Zmc2V0LCBieXRlY29kZU9mZnNldCArIGN1cnJlbnRbM10udS5vcGVyYW5kKTsKKyAgICAgICAg
ICAgIGJyZWFrOworCisgICAgICAgIGNhc2Ugb3Bfc3dpdGNoX2ltbToKKyAgICAgICAgY2FzZSBv
cF9zd2l0Y2hfY2hhcjogeworICAgICAgICAgICAgYXV0byYgdGFibGUgPSBzd2l0Y2hKdW1wVGFi
bGUoY3VycmVudFsxXS51Lm9wZXJhbmQpOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
dGFibGUuYnJhbmNoT2Zmc2V0cy5zaXplKCk7IGktLTspCisgICAgICAgICAgICAgICAgdGFibGUu
YnJhbmNoT2Zmc2V0c1tpXSA9IGluc2VydGlvblNldC5hZGp1c3RPZmZzZXQoYnl0ZWNvZGVPZmZz
ZXQsIGJ5dGVjb2RlT2Zmc2V0ICsgdGFibGUuYnJhbmNoT2Zmc2V0c1tpXSk7CisgICAgICAgICAg
ICBjdXJyZW50WzJdLnUub3BlcmFuZCA9IGluc2VydGlvblNldC5hZGp1c3RPZmZzZXQoYnl0ZWNv
ZGVPZmZzZXQsIGJ5dGVjb2RlT2Zmc2V0ICsgY3VycmVudFsyXS51Lm9wZXJhbmQpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBjYXNlIG9wX3N3aXRjaF9zdHJpbmc6
IHsKKyAgICAgICAgICAgIGF1dG8mIHRhYmxlID0gc3RyaW5nU3dpdGNoSnVtcFRhYmxlKGN1cnJl
bnRbMV0udS5vcGVyYW5kKTsKKyAgICAgICAgICAgIGF1dG8gaXRlciA9IHRhYmxlLm9mZnNldFRh
YmxlLmJlZ2luKCk7CisgICAgICAgICAgICBhdXRvIGVuZCA9IHRhYmxlLm9mZnNldFRhYmxlLmVu
ZCgpOworICAgICAgICAgICAgZm9yICg7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpCisgICAgICAgICAg
ICAgICAgaXRlci0+dmFsdWUuYnJhbmNoT2Zmc2V0ID0gaW5zZXJ0aW9uU2V0LmFkanVzdE9mZnNl
dChieXRlY29kZU9mZnNldCwgYnl0ZWNvZGVPZmZzZXQgKyBpdGVyLT52YWx1ZS5icmFuY2hPZmZz
ZXQpOworICAgICAgICAgICAgY3VycmVudFsyXS51Lm9wZXJhbmQgPSBpbnNlcnRpb25TZXQuYWRq
dXN0T2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0LCBieXRlY29kZU9mZnNldCArIGN1cnJlbnRbMl0udS5v
cGVyYW5kKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgYnl0ZWNvZGVPZmZz
ZXQgKz0gb3Bjb2RlTGVuZ3RoKG9wY29kZUlEKTsKKyAgICB9CisKKyAgICAvLyBUaGVuLCBleGNl
cHRpb24gaGFuZGxlcnMgc2hvdWxkIGJlIGFkanVzdGVkLgorICAgIGlmIChtX3JhcmVEYXRhKSB7
CisgICAgICAgIGZvciAoVW5saW5rZWRIYW5kbGVySW5mbyYgaGFuZGxlciA6IG1fcmFyZURhdGEt
Pm1fZXhjZXB0aW9uSGFuZGxlcnMpIHsKKyAgICAgICAgICAgIGhhbmRsZXIudGFyZ2V0ID0gaW5z
ZXJ0aW9uU2V0LmFkanVzdE9mZnNldCgwLCBoYW5kbGVyLnRhcmdldCk7CisgICAgICAgICAgICBo
YW5kbGVyLnN0YXJ0ID0gaW5zZXJ0aW9uU2V0LmFkanVzdE9mZnNldCgwLCBoYW5kbGVyLnN0YXJ0
KTsKKyAgICAgICAgICAgIGhhbmRsZXIuZW5kID0gaW5zZXJ0aW9uU2V0LmFkanVzdE9mZnNldCgw
LCBoYW5kbGVyLmVuZCk7CisgICAgICAgIH0KKworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IG1fcmFyZURhdGEtPm1fb3BQcm9maWxlQ29udHJvbEZsb3dCeXRlY29kZU9mZnNldHMuc2l6
ZSgpOyArK2kpCisgICAgICAgICAgICBtX3JhcmVEYXRhLT5tX29wUHJvZmlsZUNvbnRyb2xGbG93
Qnl0ZWNvZGVPZmZzZXRzW2ldID0gaW5zZXJ0aW9uU2V0LmFkanVzdE9mZnNldCgwLCBtX3JhcmVE
YXRhLT5tX29wUHJvZmlsZUNvbnRyb2xGbG93Qnl0ZWNvZGVPZmZzZXRzW2ldKTsKKworICAgICAg
ICBpZiAoIW1fcmFyZURhdGEtPm1fdHlwZVByb2ZpbGVySW5mb01hcC5pc0VtcHR5KCkpIHsKKyAg
ICAgICAgICAgIEhhc2hNYXA8dW5zaWduZWQsIFJhcmVEYXRhOjpUeXBlUHJvZmlsZXJFeHByZXNz
aW9uUmFuZ2U+IGFkanVzdGVkVHlwZVByb2ZpbGVySW5mb01hcDsKKyAgICAgICAgICAgIGZvciAo
YXV0byYgZW50cnkgOiBtX3JhcmVEYXRhLT5tX3R5cGVQcm9maWxlckluZm9NYXApCisgICAgICAg
ICAgICAgICAgYWRqdXN0ZWRUeXBlUHJvZmlsZXJJbmZvTWFwLnNldChpbnNlcnRpb25TZXQuYWRq
dXN0T2Zmc2V0KDAsIGVudHJ5LmtleSksIGVudHJ5LnZhbHVlKTsKKyAgICAgICAgICAgIG1fcmFy
ZURhdGEtPm1fdHlwZVByb2ZpbGVySW5mb01hcC5zd2FwKGFkanVzdGVkVHlwZVByb2ZpbGVySW5m
b01hcCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1f
cHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnMuc2l6ZSgpOyArK2kpCisgICAgICAgIG1fcHJvcGVy
dHlBY2Nlc3NJbnN0cnVjdGlvbnNbaV0gPSBpbnNlcnRpb25TZXQuYWRqdXN0T2Zmc2V0KDAsIG1f
cHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnNbaV0pOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBtX2V4cHJlc3Npb25JbmZvLnNpemUoKTsgKytpKQorICAgICAgICBtX2V4cHJlc3Npb25J
bmZvW2ldLmluc3RydWN0aW9uT2Zmc2V0ID0gaW5zZXJ0aW9uU2V0LmFkanVzdE9mZnNldCgwLCBt
X2V4cHJlc3Npb25JbmZvW2ldLmluc3RydWN0aW9uT2Zmc2V0KTsKKworICAgIC8vIFRoZW4sIG1v
ZGlmeSB0aGUgdW5saW5rZWQgaW5zdHJ1Y3Rpb25zLgorICAgIGluc2VydGlvblNldC5hcHBseU1v
ZGlmaWNhdGlvbigpOworCisgICAgLy8gQW5kIHJlY29tcHV0ZSB0aGUganVtcCB0YXJnZXQgYmFz
ZWQgb24gdGhlIG1vZGlmaWVkIHVubGlua2VkIGluc3RydWN0aW9ucy4KKyAgICBtX2p1bXBUYXJn
ZXRzLmNsZWFyKCk7CisgICAgcmVjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKHRoaXMsIGdyYXBo
Lmluc3RydWN0aW9ucygpLmJlZ2luKCksIGdyYXBoLmluc3RydWN0aW9ucygpLnNpemUoKSwgbV9q
dW1wVGFyZ2V0cyk7Cit9CisKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAppbmRleCA5MWZkY2E0OGMxZTM5ZThiZWZiMGM1ZmQ1
NWZkOWJkOTFjMWYzNzA3Li44OGNmMGM4ZjA5ZTQ0MDMzNDE3ZTA0YmFhMzJkYzUwMmRlMTgwMjA5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2Rl
QmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2Rl
QmxvY2suaApAQCAtNDgsNiArNDgsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorY2xhc3MgQnl0
ZWNvZGVNb2RpZmljYXRpb25TZXQ7CiBjbGFzcyBEZWJ1Z2dlcjsKIGNsYXNzIEZ1bmN0aW9uTWV0
YWRhdGFOb2RlOwogY2xhc3MgRnVuY3Rpb25FeGVjdXRhYmxlOwpAQCAtNjksNyArNzAsMTEgQEAg
dHlwZWRlZiB1bnNpZ25lZCBVbmxpbmtlZE9iamVjdEFsbG9jYXRpb25Qcm9maWxlOwogdHlwZWRl
ZiB1bnNpZ25lZCBVbmxpbmtlZExMSW50Q2FsbExpbmtJbmZvOwogCiBzdHJ1Y3QgVW5saW5rZWRT
dHJpbmdKdW1wVGFibGUgewotICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8U3RyaW5nSW1wbD4s
IGludDMyX3Q+IFN0cmluZ09mZnNldFRhYmxlOworICAgIHN0cnVjdCBPZmZzZXRMb2NhdGlvbiB7
CisgICAgICAgIGludDMyX3QgYnJhbmNoT2Zmc2V0OworICAgIH07CisKKyAgICB0eXBlZGVmIEhh
c2hNYXA8UmVmUHRyPFN0cmluZ0ltcGw+LCBPZmZzZXRMb2NhdGlvbj4gU3RyaW5nT2Zmc2V0VGFi
bGU7CiAgICAgU3RyaW5nT2Zmc2V0VGFibGUgb2Zmc2V0VGFibGU7CiAKICAgICBpbmxpbmUgaW50
MzJfdCBvZmZzZXRGb3JWYWx1ZShTdHJpbmdJbXBsKiB2YWx1ZSwgaW50MzJfdCBkZWZhdWx0T2Zm
c2V0KQpAQCAtNzgsNyArODMsNyBAQCBzdHJ1Y3QgVW5saW5rZWRTdHJpbmdKdW1wVGFibGUgewog
ICAgICAgICBTdHJpbmdPZmZzZXRUYWJsZTo6Y29uc3RfaXRlcmF0b3IgbG9jID0gb2Zmc2V0VGFi
bGUuZmluZCh2YWx1ZSk7CiAgICAgICAgIGlmIChsb2MgPT0gZW5kKQogICAgICAgICAgICAgcmV0
dXJuIGRlZmF1bHRPZmZzZXQ7Ci0gICAgICAgIHJldHVybiBsb2MtPnZhbHVlOworICAgICAgICBy
ZXR1cm4gbG9jLT52YWx1ZS5icmFuY2hPZmZzZXQ7CiAgICAgfQogCiB9OwpAQCAtMTA2LDYgKzEx
MSw4IEBAIHN0cnVjdCBVbmxpbmtlZEluc3RydWN0aW9uIHsKICAgICB9IHU7CiB9OwogCitjbGFz
cyBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbjsKKwogY2xhc3MgVW5saW5rZWRDb2RlQmxvY2sg
OiBwdWJsaWMgSlNDZWxsIHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOwpAQCAt
MTE1LDYgKzEyMiw4IEBAIGNsYXNzIFVubGlua2VkQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7
CiAKICAgICBlbnVtIHsgQ2FsbEZ1bmN0aW9uLCBBcHBseUZ1bmN0aW9uIH07CiAKKyAgICB0eXBl
ZGVmIFZlY3RvcjxVbmxpbmtlZEluc3RydWN0aW9uLCAwLCBVbnNhZmVWZWN0b3JPdmVyZmxvdz4g
VW5wYWNrZWRJbnN0cnVjdGlvbnM7CisKICAgICBib29sIGlzQ29uc3RydWN0b3IoKSBjb25zdCB7
IHJldHVybiBtX2lzQ29uc3RydWN0b3I7IH0KICAgICBib29sIGlzU3RyaWN0TW9kZSgpIGNvbnN0
IHsgcmV0dXJuIG1faXNTdHJpY3RNb2RlOyB9CiAgICAgYm9vbCB1c2VzRXZhbCgpIGNvbnN0IHsg
cmV0dXJuIG1fdXNlc0V2YWw7IH0KQEAgLTIwNCw2ICsyMTMsOSBAQCBjbGFzcyBVbmxpbmtlZENv
ZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgIHVuc2lnbmVkIGp1bXBUYXJnZXQoaW50IGlu
ZGV4KSBjb25zdCB7IHJldHVybiBtX2p1bXBUYXJnZXRzW2luZGV4XTsgfQogICAgIHVuc2lnbmVk
IGxhc3RKdW1wVGFyZ2V0KCkgY29uc3QgeyByZXR1cm4gbV9qdW1wVGFyZ2V0cy5sYXN0KCk7IH0K
IAorICAgIFVubGlua2VkSGFuZGxlckluZm8qIGhhbmRsZXJGb3JCeXRlY29kZU9mZnNldCh1bnNp
Z25lZCBieXRlY29kZU9mZnNldCwgUmVxdWlyZWRIYW5kbGVyID0gUmVxdWlyZWRIYW5kbGVyOjpB
bnlIYW5kbGVyKTsKKyAgICBVbmxpbmtlZEhhbmRsZXJJbmZvKiBoYW5kbGVyRm9ySW5kZXgodW5z
aWduZWQsIFJlcXVpcmVkSGFuZGxlciA9IFJlcXVpcmVkSGFuZGxlcjo6QW55SGFuZGxlcik7CisK
ICAgICBib29sIGlzQnVpbHRpbkZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc0J1aWx0aW5G
dW5jdGlvbjsgfQogCiAgICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCgpIGNvbnN0
IHsgcmV0dXJuIHN0YXRpY19jYXN0PENvbnN0cnVjdG9yS2luZD4obV9jb25zdHJ1Y3RvcktpbmQp
OyB9CkBAIC0zODQsNiArMzk2LDggQEAgY2xhc3MgVW5saW5rZWRDb2RlQmxvY2sgOiBwdWJsaWMg
SlNDZWxsIHsKICAgICB9CiAKIHByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIEJ5dGVjb2RlTW9k
aWZpY2F0aW9uU2V0OworICAgIHZvaWQgYXBwbHlNb2RpZmljYXRpb24oQnl0ZWNvZGVNb2RpZmlj
YXRpb25TZXQmKTsKIAogICAgIHZvaWQgY3JlYXRlUmFyZURhdGFJZk5lY2Vzc2FyeSgpCiAgICAg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZpcnR1YWxSZWdp
c3Rlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZpcnR1YWxSZWdpc3Rlci5o
CmluZGV4IGQzZGY0MDk1N2I1MTc1NjhlM2FlZmJlM2ExYTYwOWZkODc4YmFhYzMuLmRhZjUwOWY2
YzdkMTE1ZTQ1YmNiMTA3YzY3ZDNkMzhkODA0ZjI4OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9WaXJ0dWFsUmVnaXN0ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvVmlydHVhbFJlZ2lzdGVyLmgKQEAgLTI2LDggKzI2LDggQEAKICNp
Zm5kZWYgVmlydHVhbFJlZ2lzdGVyX2gKICNkZWZpbmUgVmlydHVhbFJlZ2lzdGVyX2gKIAorI2lu
Y2x1ZGUgIkJ5dGVjb2RlQ29udmVudGlvbnMuaCIKICNpbmNsdWRlICJDYWxsRnJhbWUuaCIKLQog
I2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTEwMyw3
ICsxMDMsNyBAQCBjbGFzcyBWaXJ0dWFsUmVnaXN0ZXIgewogCiBwcml2YXRlOgogICAgIHN0YXRp
YyBjb25zdCBpbnQgc19pbnZhbGlkVmlydHVhbFJlZ2lzdGVyID0gMHgzZmZmZmZmZjsKLSAgICBz
dGF0aWMgY29uc3QgaW50IHNfZmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXggPSAweDQwMDAwMDAw
OworICAgIHN0YXRpYyBjb25zdCBpbnQgc19maXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCA9IEZp
cnN0Q29uc3RhbnRSZWdpc3RlckluZGV4OwogCiAgICAgc3RhdGljIGludCBsb2NhbFRvT3BlcmFu
ZChpbnQgbG9jYWwpIHsgcmV0dXJuIC0xIC0gbG9jYWw7IH0KICAgICBzdGF0aWMgaW50IG9wZXJh
bmRUb0xvY2FsKGludCBvcGVyYW5kKSB7IHJldHVybiAtMSAtIG9wZXJhbmQ7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3Iu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5jcHAKaW5kZXggNzQxYWEzZWExNzMxMTkyNzJhNzYyZmQ4YTc0M2Y5ZDY0OWZlMWQ4MS4uMzU1
OTU5YzRmYzIzYzE4NTRlYWNhYzNhNTk3MzU0M2UwYmFhODZjNiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAK
QEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJCeXRlY29kZUdlbmVyYXRvci5oIgogCiAjaW5j
bHVkZSAiQnVpbHRpbkV4ZWN1dGFibGVzLmgiCisjaW5jbHVkZSAiQnl0ZWNvZGVHZW5lcmF0b3Jp
ZmljYXRpb24uaCIKICNpbmNsdWRlICJCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuaCIKICNpbmNs
dWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKQEAgLTE1NCw2ICsx
NTUsMTAgQEAgUGFyc2VyRXJyb3IgQnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKCkKICAgICAg
ICAgbV9jb2RlQmxvY2stPmFkZEV4Y2VwdGlvbkhhbmRsZXIoaW5mbyk7CiAgICAgfQogICAgIAor
CisgICAgaWYgKG1fY29kZUJsb2NrLT5wYXJzZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6Okdl
bmVyYXRvckJvZHlNb2RlKQorICAgICAgICBwZXJmb3JtR2VuZXJhdG9yaWZpY2F0aW9uKG1fY29k
ZUJsb2NrLmdldCgpLCBtX2luc3RydWN0aW9ucywgbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxl
LmdldCgpLCBtX2dlbmVyYXRvckZyYW1lU3ltYm9sVGFibGVJbmRleCk7CisKICAgICBtX2NvZGVC
bG9jay0+c2V0SW5zdHJ1Y3Rpb25zKHN0ZDo6bWFrZV91bmlxdWU8VW5saW5rZWRJbnN0cnVjdGlv
blN0cmVhbT4obV9pbnN0cnVjdGlvbnMpKTsKIAogICAgIG1fY29kZUJsb2NrLT5zaHJpbmtUb0Zp
dCgpOwpAQCAtMjYxLDEwICsyNjYsMTQgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2Vu
ZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25Ob2RlKiBmdW5jdGlvbk5vZGUsIFVubGlua2UKICAgICBi
b29sIHNob3VsZENhcHR1cmVBbGxPZlRoZVRoaW5ncyA9IG1fc2hvdWxkRW1pdERlYnVnSG9va3Mg
fHwgY29kZUJsb2NrLT51c2VzRXZhbCgpOwogICAgIGJvb2wgbmVlZHNBcmd1bWVudHMgPSAoZnVu
Y3Rpb25Ob2RlLT51c2VzQXJndW1lbnRzKCkgfHwgY29kZUJsb2NrLT51c2VzRXZhbCgpIHx8IChm
dW5jdGlvbk5vZGUtPnVzZXNBcnJvd0Z1bmN0aW9uKCkgJiYgIWNvZGVCbG9jay0+aXNBcnJvd0Z1
bmN0aW9uKCkgJiYgaXNBcmd1bWVudHNVc2VkSW5Jbm5lckFycm93RnVuY3Rpb24oKSkpOwogCi0g
ICAgLy8gR2VuZXJhdG9yIG5ldmVyIHByb3ZpZGVzICJhcmd1bWVudHMiLiAiYXJndW1lbnRzIiBy
ZWZlcmVuY2Ugd2lsbCBiZSByZXNvbHZlZCBpbiBhbiB1cHBlciBnZW5lcmF0b3IgZnVuY3Rpb24g
c2NvcGUuCi0gICAgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckJv
ZHlNb2RlKQorICAgIGlmIChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JC
b2R5TW9kZSkgeworICAgICAgICAvLyBHZW5lcmF0b3IgbmV2ZXIgcHJvdmlkZXMgImFyZ3VtZW50
cyIuICJhcmd1bWVudHMiIHJlZmVyZW5jZSB3aWxsIGJlIHJlc29sdmVkIGluIGFuIHVwcGVyIGdl
bmVyYXRvciBmdW5jdGlvbiBzY29wZS4KICAgICAgICAgbmVlZHNBcmd1bWVudHMgPSBmYWxzZTsK
IAorICAgICAgICAvLyBHZW5lcmF0b3IgdXNlcyB0aGUgdmFyIHNjb3BlIHRvIHNhdmUgYW5kIHJl
c3VtZSBpdHMgdmFyaWFibGVzLiBTbyB0aGUgbGV4aWNhbCBzY29wZSBpcyBhbHdheXMgaW5zdGFu
dGlhdGVkLgorICAgICAgICBzaG91bGRDYXB0dXJlU29tZU9mVGhlVGhpbmdzID0gdHJ1ZTsKKyAg
ICB9CisKICAgICBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yV3Jh
cHBlckZ1bmN0aW9uTW9kZSAmJiBuZWVkc0FyZ3VtZW50cykgewogICAgICAgICAvLyBHZW5lcmF0
b3IgZG9lcyBub3QgcHJvdmlkZSAiYXJndW1lbnRzIi4gSW5zdGVhZCwgd3JhcHBpbmcgR2VuZXJh
dG9yRnVuY3Rpb24gcHJvdmlkZXMgImFyZ3VtZW50cyIuCiAgICAgICAgIC8vIFRoaXMgaXMgYmVj
YXVzZSBhcmd1bWVudHMgb2YgYSBnZW5lcmF0b3Igc2hvdWxkIGJlIGV2YWx1YXRlZCBiZWZvcmUg
c3RhcnRpbmcgaXQuCkBAIC0yNzMsNyArMjgyLDcgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVj
b2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25Ob2RlKiBmdW5jdGlvbk5vZGUsIFVubGlua2UK
ICAgICAgICAgLy8gICAgZnVuY3Rpb24gKmdlbihhLCBiID0gaGVsbG8oKSkKICAgICAgICAgLy8g
ICAgewogICAgICAgICAvLyAgICAgICAgcmV0dXJuIHsKLSAgICAgICAgLy8gICAgICAgICAgICBA
Z2VuZXJhdG9yTmV4dDogZnVuY3Rpb24gKEBnZW5lcmF0b3IsIEBnZW5lcmF0b3JTdGF0ZSwgQGdl
bmVyYXRvclZhbHVlLCBAZ2VuZXJhdG9yUmVzdW1lTW9kZSkKKyAgICAgICAgLy8gICAgICAgICAg
ICBAZ2VuZXJhdG9yTmV4dDogZnVuY3Rpb24gKEBnZW5lcmF0b3IsIEBnZW5lcmF0b3JTdGF0ZSwg
QGdlbmVyYXRvclZhbHVlLCBAZ2VuZXJhdG9yUmVzdW1lTW9kZSwgQGdlbmVyYXRvckZyYW1lKQog
ICAgICAgICAvLyAgICAgICAgICAgIHsKICAgICAgICAgLy8gICAgICAgICAgICAgICAgYXJndW1l
bnRzOyAgLy8gVGhpcyBgYXJndW1lbnRzYCBzaG91bGQgcmVmZXJlbmNlIHRvIHRoZSBnZW4ncyBh
cmd1bWVudHMuCiAgICAgICAgIC8vICAgICAgICAgICAgICAgIC4uLgpAQCAtMzAyLDE2ICszMTEs
MTQgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rp
b25Ob2RlKiBmdW5jdGlvbk5vZGUsIFVubGlua2UKICAgICAgICAgcmV0dXJuIGNhcHR1cmVzKHVp
ZCkgPyBWYXJLaW5kOjpTY29wZSA6IFZhcktpbmQ6OlN0YWNrOwogICAgIH07CiAKLSAgICBlbWl0
RW50ZXIoKTsKLQotICAgIGFsbG9jYXRlQW5kRW1pdFNjb3BlKCk7Ci0KICAgICBtX2NhbGxlZVJl
Z2lzdGVyLnNldEluZGV4KENhbGxGcmFtZVNsb3Q6OmNhbGxlZSk7CiAKICAgICBpbml0aWFsaXpl
UGFyYW1ldGVycyhwYXJhbWV0ZXJzKTsKICAgICBBU1NFUlQoIShpc1NpbXBsZVBhcmFtZXRlckxp
c3QgJiYgbV9yZXN0UGFyYW1ldGVyKSk7CiAKLSAgICAvLyBCZWZvcmUgZW1pdHRpbmcgYSBzY29w
ZSBjcmVhdGlvbiwgZW1pdCBhIGdlbmVyYXRvciBwcm9sb2d1ZSB0aGF0IGNvbnRhaW5zIGp1bXAg
YmFzZWQgb24gYSBnZW5lcmF0b3IncyBzdGF0ZS4KKyAgICBlbWl0RW50ZXIoKTsKKworICAgIC8v
IEJlZm9yZSBlbWl0dGluZyBhbnkgb2YgdGhlIGFjdHVhbCBjb2RlIGV4Y2VwdCBmb3Igb3BfZW50
ZXIsIGVtaXQgYSBnZW5lcmF0b3IgcHJvbG9ndWUgdGhhdCBjb250YWlucyBqdW1wIGJhc2VkIG9u
IGEgZ2VuZXJhdG9yJ3Mgc3RhdGUuCiAgICAgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1v
ZGU6OkdlbmVyYXRvckJvZHlNb2RlKSB7CiAgICAgICAgIG1fZ2VuZXJhdG9yUmVnaXN0ZXIgPSAm
bV9wYXJhbWV0ZXJzWzFdOwogCkBAIC0zMjUsNiArMzMyLDggQEAgQnl0ZWNvZGVHZW5lcmF0b3I6
OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25Ob2RlKiBmdW5jdGlvbk5vZGUsIFVu
bGlua2UKICAgICAgICAgZW1pdEdlbmVyYXRvclN0YXRlTGFiZWwoKTsKICAgICB9CiAKKyAgICBh
bGxvY2F0ZUFuZEVtaXRTY29wZSgpOworCiAgICAgaWYgKGZ1bmN0aW9uTmFtZUlzSW5TY29wZShm
dW5jdGlvbk5vZGUtPmlkZW50KCksIGZ1bmN0aW9uTm9kZS0+ZnVuY3Rpb25Nb2RlKCkpKSB7CiAg
ICAgICAgIEFTU0VSVChwYXJzZU1vZGUgIT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JCb2R5
TW9kZSk7CiAgICAgICAgIGJvb2wgaXNEeW5hbWljU2NvcGUgPSBmdW5jdGlvbk5hbWVTY29wZUlz
RHluYW1pYyhjb2RlQmxvY2stPnVzZXNFdmFsKCksIGNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkp
OwpAQCAtNjMxLDYgKzY0MCwxNiBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0
b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAgICAgICAg
ICAgZW1pdExvYWROZXdUYXJnZXRGcm9tQXJyb3dGdW5jdGlvbkxleGljYWxFbnZpcm9ubWVudCgp
OwogICAgIH0KICAgICAKKyAgICAvLyBTZXQgdXAgdGhlIGxleGljYWwgZW52aXJvbm1lbnQgc2Nv
cGUgYXMgdGhlIGdlbmVyYXRvciBmcmFtZS4gV2Ugc3RvcmUgdGhlIHNhdmVkIGFuZCByZXN1bWVk
IGdlbmVyYXRvciByZWdpc3RlcnMgaW50byB0aGlzIHNjb3BlIHdpdGggdGhlIHN5bWJvbCBrZXlz
LgorICAgIC8vIFNpbmNlIHRoZXkgYXJlIHN5bWJvbCBrZXllZCwgdGhlc2UgdmFyaWFibGVzIGNh
bm5vdCBiZSByZWFjaGVkIGZyb20gdGhlIHVzdWFsIGNvZGUuCisgICAgaWYgKFNvdXJjZVBhcnNl
TW9kZTo6R2VuZXJhdG9yQm9keU1vZGUgPT0gcGFyc2VNb2RlKSB7CisgICAgICAgIEFTU0VSVCht
X2xleGljYWxFbnZpcm9ubWVudFJlZ2lzdGVyKTsKKyAgICAgICAgbV9nZW5lcmF0b3JGcmFtZVN5
bWJvbFRhYmxlLnNldCgqbV92bSwgZnVuY3Rpb25TeW1ib2xUYWJsZSk7CisgICAgICAgIG1fZ2Vu
ZXJhdG9yRnJhbWVTeW1ib2xUYWJsZUluZGV4ID0gc3ltYm9sVGFibGVDb25zdGFudEluZGV4Owor
ICAgICAgICBlbWl0TW92ZShnZW5lcmF0b3JGcmFtZVJlZ2lzdGVyKCksIG1fbGV4aWNhbEVudmly
b25tZW50UmVnaXN0ZXIpOworICAgICAgICBlbWl0UHV0QnlJZChnZW5lcmF0b3JSZWdpc3Rlcigp
LCBwcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yRnJhbWVQcml2YXRlTmFt
ZSgpLCBnZW5lcmF0b3JGcmFtZVJlZ2lzdGVyKCkpOworICAgIH0KKwogICAgIGJvb2wgc2hvdWxk
SW5pdGlhbGl6ZUJsb2NrU2NvcGVkRnVuY3Rpb25zID0gZmFsc2U7IC8vIFdlIGdlbmVyYXRlIHRv
cC1sZXZlbCBmdW5jdGlvbiBkZWNsYXJhdGlvbnMgaW4gOjpnZW5lcmF0ZSgpLgogICAgIHB1c2hM
ZXhpY2FsU2NvcGUobV9zY29wZU5vZGUsIFREWkNoZWNrT3B0aW1pemF0aW9uOjpPcHRpbWl6ZSwg
TmVzdGVkU2NvcGVUeXBlOjpJc05vdE5lc3RlZCwgbnVsbHB0ciwgc2hvdWxkSW5pdGlhbGl6ZUJs
b2NrU2NvcGVkRnVuY3Rpb25zKTsKIH0KQEAgLTM2NTgsOCArMzY3Nyw3IEBAIHZvaWQgQnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXRDb21wbGV4UG9wU2NvcGVzKFJlZ2lzdGVySUQqIHNjb3BlLCBDb250
cm9sRmxvd0NvbnRlCiAgICAgICAgICAgICBpZiAoZmxpcFRyaWVzKSB7CiAgICAgICAgICAgICAg
ICAgd2hpbGUgKG1fdHJ5Q29udGV4dFN0YWNrLnNpemUoKSAhPSBmaW5hbGx5Q29udGV4dC50cnlD
b250ZXh0U3RhY2tTaXplKSB7CiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChtX3RyeUNvbnRl
eHRTdGFjay5zaXplKCkgPiBmaW5hbGx5Q29udGV4dC50cnlDb250ZXh0U3RhY2tTaXplKTsKLSAg
ICAgICAgICAgICAgICAgICAgVHJ5Q29udGV4dCBjb250ZXh0ID0gbV90cnlDb250ZXh0U3RhY2su
bGFzdCgpOwotICAgICAgICAgICAgICAgICAgICBtX3RyeUNvbnRleHRTdGFjay5yZW1vdmVMYXN0
KCk7CisgICAgICAgICAgICAgICAgICAgIFRyeUNvbnRleHQgY29udGV4dCA9IG1fdHJ5Q29udGV4
dFN0YWNrLnRha2VMYXN0KCk7CiAgICAgICAgICAgICAgICAgICAgIFRyeVJhbmdlIHJhbmdlOwog
ICAgICAgICAgICAgICAgICAgICByYW5nZS5zdGFydCA9IGNvbnRleHQuc3RhcnQ7CiAgICAgICAg
ICAgICAgICAgICAgIHJhbmdlLmVuZCA9IGJlZm9yZUZpbmFsbHk7CkBAIC0zOTQzLDcgKzM5NjEs
NyBAQCBzdGF0aWMgdm9pZCBwcmVwYXJlSnVtcFRhYmxlRm9yU3RyaW5nU3dpdGNoKFVubGlua2Vk
U3RyaW5nSnVtcFRhYmxlJiBqdW1wVGFibGUsCiAgICAgICAgIAogICAgICAgICBBU1NFUlQobm9k
ZXNbaV0tPmlzU3RyaW5nKCkpOwogICAgICAgICBTdHJpbmdJbXBsKiBjbGF1c2UgPSBzdGF0aWNf
Y2FzdDxTdHJpbmdOb2RlKj4obm9kZXNbaV0pLT52YWx1ZSgpLmltcGwoKTsKLSAgICAgICAganVt
cFRhYmxlLm9mZnNldFRhYmxlLmFkZChjbGF1c2UsIGxhYmVsc1tpXS0+YmluZChzd2l0Y2hBZGRy
ZXNzLCBzd2l0Y2hBZGRyZXNzICsgMykpOworICAgICAgICBqdW1wVGFibGUub2Zmc2V0VGFibGUu
YWRkKGNsYXVzZSwgVW5saW5rZWRTdHJpbmdKdW1wVGFibGU6Ok9mZnNldExvY2F0aW9uIHsgbGFi
ZWxzW2ldLT5iaW5kKHN3aXRjaEFkZHJlc3MsIHN3aXRjaEFkZHJlc3MgKyAzKSB9KTsKICAgICB9
CiB9CiAKQEAgLTQ0NTEsMTYgKzQ0NjksMzYgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dFlpZWxkUG9pbnQoUmVnaXN0ZXJJRCogYXJndW1lbnQpCiAgICAgZW1pdEdlbmVyYXRvclN0YXRl
Q2hhbmdlKHlpZWxkUG9pbnRJbmRleCk7CiAgICAgLy8gRmlyc3QgeWllbGQgcG9pbnQgaXMgdXNl
ZCBmb3IgaW5pdGlhbCBzZXF1ZW5jZS4KICAgICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5k
ZXggPSB5aWVsZFBvaW50SW5kZXggLSAxOworCisgICAgLy8gU3BsaXQgdGhlIHRyeSByYW5nZSBo
ZXJlLgorICAgIFJlZlB0cjxMYWJlbD4gc2F2ZVBvaW50ID0gZW1pdExhYmVsKG5ld0xhYmVsKCku
Z2V0KCkpOworICAgIGZvciAodW5zaWduZWQgaSA9IG1fdHJ5Q29udGV4dFN0YWNrLnNpemUoKTsg
aS0tOykgeworICAgICAgICBUcnlDb250ZXh0JiBjb250ZXh0ID0gbV90cnlDb250ZXh0U3RhY2tb
aV07CisgICAgICAgIFRyeVJhbmdlIHJhbmdlOworICAgICAgICByYW5nZS5zdGFydCA9IGNvbnRl
eHQuc3RhcnQ7CisgICAgICAgIHJhbmdlLmVuZCA9IHNhdmVQb2ludDsKKyAgICAgICAgcmFuZ2Uu
dHJ5RGF0YSA9IGNvbnRleHQudHJ5RGF0YTsKKyAgICAgICAgbV90cnlSYW5nZXMuYXBwZW5kKHJh
bmdlKTsKKworICAgICAgICAvLyBUcnkgcmFuZ2Ugd2lsbCBiZSByZXN0YXJlZCBhdCB0aGUgbWVy
Z2UgcG9pbnQuCisgICAgICAgIGNvbnRleHQuc3RhcnQgPSBtZXJnZVBvaW50OworICAgIH0KKyAg
ICBWZWN0b3I8VHJ5Q29udGV4dD4gc2F2ZWRUcnlDb250ZXh0U3RhY2s7CisgICAgbV90cnlDb250
ZXh0U3RhY2suc3dhcChzYXZlZFRyeUNvbnRleHRTdGFjayk7CisKICAgICBlbWl0U2F2ZShtZXJn
ZVBvaW50LmdldCgpLCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpOwogICAgIGVtaXRSZXR1cm4oYXJn
dW1lbnQpOwogICAgIGVtaXRSZXN1bWUobWVyZ2VQb2ludC5nZXQoKSwgbGl2ZUNhbGxlZUxvY2Fs
c0luZGV4KTsKKworICAgIC8vIFJlc3RvcmUgdGhlIHRyeSBjb250ZXh0cywgd2hpY2ggc3RhcnQg
b2Zmc2V0IGlzIHVwZGF0ZWQgdG8gdGhlIG1lcmdlIHBvaW50LgorICAgIG1fdHJ5Q29udGV4dFN0
YWNrLnN3YXAoc2F2ZWRUcnlDb250ZXh0U3RhY2spOwogfQogCiB2b2lkIEJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0U2F2ZShMYWJlbCogbWVyZ2VQb2ludCwgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fs
c0luZGV4KQogewogICAgIHNpemVfdCBiZWdpbiA9IGluc3RydWN0aW9ucygpLnNpemUoKTsKICAg
ICBlbWl0T3Bjb2RlKG9wX3NhdmUpOwotICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChtX2dlbmVy
YXRvclJlZ2lzdGVyLT5pbmRleCgpKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZ2VuZXJh
dG9yRnJhbWVSZWdpc3RlcigpLT5pbmRleCgpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQo
bGl2ZUNhbGxlZUxvY2Fsc0luZGV4KTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobWVyZ2VQ
b2ludC0+YmluZChiZWdpbiwgaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKSk7CiB9CkBAIC00NDY5LDcg
KzQ1MDcsNyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzdW1lKExhYmVsKiBtZXJn
ZVBvaW50LCB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSQogewogICAgIGVtaXRHZW5lcmF0b3JT
dGF0ZUxhYmVsKCk7CiAgICAgZW1pdE9wY29kZShvcF9yZXN1bWUpOwotICAgIGluc3RydWN0aW9u
cygpLmFwcGVuZChtX2dlbmVyYXRvclJlZ2lzdGVyLT5pbmRleCgpKTsKKyAgICBpbnN0cnVjdGlv
bnMoKS5hcHBlbmQoZ2VuZXJhdG9yRnJhbWVSZWdpc3RlcigpLT5pbmRleCgpKTsKICAgICBpbnN0
cnVjdGlvbnMoKS5hcHBlbmQobGl2ZUNhbGxlZUxvY2Fsc0luZGV4KTsKICAgICBlbWl0TGFiZWwo
bWVyZ2VQb2ludCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5kZXggNWZhZjA0ZjJmM2RiYTE4YWRiMDc4OWUz
MjNlOWRhYWU2MWFiMTE2Yi4uZWMyYTBlNmIwNjZjYWFkYWNmMmI3YjA3ZmFhZjY1NWJmYzQ1MWIx
MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0
ZWNvZGVHZW5lcmF0b3IuaApAQCAtNzA1LDYgKzcwNSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICBSZWdpc3RlcklEKiBnZW5lcmF0b3JTdGF0ZVJlZ2lzdGVyKCkgeyByZXR1cm4gJm1fcGFy
YW1ldGVyc1syXTsgfQogICAgICAgICBSZWdpc3RlcklEKiBnZW5lcmF0b3JWYWx1ZVJlZ2lzdGVy
KCkgeyByZXR1cm4gJm1fcGFyYW1ldGVyc1szXTsgfQogICAgICAgICBSZWdpc3RlcklEKiBnZW5l
cmF0b3JSZXN1bWVNb2RlUmVnaXN0ZXIoKSB7IHJldHVybiAmbV9wYXJhbWV0ZXJzWzRdOyB9Cisg
ICAgICAgIFJlZ2lzdGVySUQqIGdlbmVyYXRvckZyYW1lUmVnaXN0ZXIoKSB7IHJldHVybiAmbV9w
YXJhbWV0ZXJzWzVdOyB9CiAKICAgICAgICAgQ29kZVR5cGUgY29kZVR5cGUoKSBjb25zdCB7IHJl
dHVybiBtX2NvZGVUeXBlOyB9CiAKQEAgLTkzMiw2ICs5MzMsMTAgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIFZlY3RvcjxSZWZQdHI8Rm9ySW5Db250ZXh0Pj4gbV9mb3JJbkNvbnRleHRTdGFj
azsKICAgICAgICAgVmVjdG9yPFRyeUNvbnRleHQ+IG1fdHJ5Q29udGV4dFN0YWNrOwogICAgICAg
ICBWZWN0b3I8UmVmUHRyPExhYmVsPj4gbV9nZW5lcmF0b3JSZXN1bWVMYWJlbHM7CisKKyAgICAg
ICAgU3Ryb25nPFN5bWJvbFRhYmxlPiBtX2dlbmVyYXRvckZyYW1lU3ltYm9sVGFibGU7CisgICAg
ICAgIGludCBtX2dlbmVyYXRvckZyYW1lU3ltYm9sVGFibGVJbmRleCB7IDAgfTsKKwogICAgICAg
ICBlbnVtIEZ1bmN0aW9uVmFyaWFibGVUeXBlIDogdWludDhfdCB7IE5vcm1hbEZ1bmN0aW9uVmFy
aWFibGUsIEdsb2JhbEZ1bmN0aW9uVmFyaWFibGUgfTsKICAgICAgICAgVmVjdG9yPHN0ZDo6cGFp
cjxGdW5jdGlvbk1ldGFkYXRhTm9kZSosIEZ1bmN0aW9uVmFyaWFibGVUeXBlPj4gbV9mdW5jdGlv
bnNUb0luaXRpYWxpemU7CiAgICAgICAgIGJvb2wgbV9uZWVkVG9Jbml0aWFsaXplQXJndW1lbnRz
IHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3Bl
cmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3Bw
CmluZGV4IDY5YTE2ZWI1ZGE0MzU1YmM3OTI1YzVkZmRjYjA2MjAyM2U5OTY1MDIuLmM0NTcyM2Ix
OTAxMzIwMjVkZmNlMzI2ZjYwMTVlY2E2Y2U1OGQ3MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcApAQCAtNDIsOCArNDIsOCBAQAogI2luY2x1ZGUgIkRp
cmVjdEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIkZUTEZvck9TUkVudHJ5SklUQ29kZS5oIgogI2lu
Y2x1ZGUgIkZUTE9TUkVudHJ5LmgiCi0jaW5jbHVkZSAiSG9zdENhbGxSZXR1cm5WYWx1ZS5oIgog
I2luY2x1ZGUgIkdldHRlclNldHRlci5oIgorI2luY2x1ZGUgIkhvc3RDYWxsUmV0dXJuVmFsdWUu
aCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUg
IkpJVEV4Y2VwdGlvbnMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5l
cmF0ZS1ieXRlY29kZS1maWxlcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0ZS1ieXRl
Y29kZS1maWxlcwppbmRleCA1NjY2YTNmOTI0YzExOWIyMTZkM2ZmMGZmZTljNjcyYjdjNzFiYjc5
Li5mYWNmZGYxMzMxNDg3MDdhMzMzNTM1NzYyYmU3ODMwNGM0YjUwYjFmIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdGUtYnl0ZWNvZGUtZmlsZXMKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2dlbmVyYXRlLWJ5dGVjb2RlLWZpbGVzCkBAIC0xODcsNiArMTg3LDcg
QEAgaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgICAgICAgICAgICAgICBkZWZhdWx0TGVu
Z3RoID0gc2VjdGlvblsiZGVmYXVsdExlbmd0aCJdCiAKICAgICAgICAgICAgIGJ5dGVjb2RlTnVt
ID0gMAorICAgICAgICAgICAgbWF4TGVuZ3RoID0gMAogICAgICAgICAgICAgZm9yIGJ5dGVjb2Rl
IGluIHNlY3Rpb25bImJ5dGVjb2RlcyJdOgogICAgICAgICAgICAgICAgIGlmIG5vdCBmaXJzdE1h
Y3JvOgogICAgICAgICAgICAgICAgICAgICBieXRlY29kZUhGaWxlLndyaXRlKCIgXFxcbiIpCkBA
IC0xOTQsNiArMTk1LDcgQEAgaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgICAgICAgICAg
ICAgICBsZW5ndGggPSBkZWZhdWx0TGVuZ3RoCiAgICAgICAgICAgICAgICAgaWYgImxlbmd0aCIg
aW4gYnl0ZWNvZGU6CiAgICAgICAgICAgICAgICAgICAgIGxlbmd0aCA9IGJ5dGVjb2RlWyJsZW5n
dGgiXQorICAgICAgICAgICAgICAgICAgICBtYXhMZW5ndGggPSBtYXgoW2xlbmd0aCwgbWF4TGVu
Z3RoXSkKIAogICAgICAgICAgICAgICAgIGJ5dGVjb2RlSEZpbGUud3JpdGUoIiAgICBtYWNybyh7
MH0sIHsxfSkiLmZvcm1hdChieXRlY29kZVsibmFtZSJdLCBsZW5ndGgpKQogICAgICAgICAgICAg
ICAgIGZpcnN0TWFjcm8gPSBGYWxzZQpAQCAtMjAxLDYgKzIwMyw3IEBAIGlmIF9fbmFtZV9fID09
ICJfX21haW5fXyI6CiAKICAgICAgICAgICAgIGJ5dGVjb2RlSEZpbGUud3JpdGUoIlxuXG4iKQog
ICAgICAgICAgICAgYnl0ZWNvZGVIRmlsZS53cml0ZSgiI2RlZmluZSBOVU1CRVJfT0ZfezB9X0lE
UyB7MX1cblxuIi5mb3JtYXQoc2VjdGlvblsibWFjcm9OYW1lQ29tcG9uZW50Il0sIGJ5dGVjb2Rl
TnVtKSkKKyAgICAgICAgICAgIGJ5dGVjb2RlSEZpbGUud3JpdGUoIiNkZWZpbmUgTUFYX09QQ09E
RV9MRU5HVEhfT0ZfezB9IHsxfVxuXG4iLmZvcm1hdChzZWN0aW9uWyJtYWNyb05hbWVDb21wb25l
bnQiXSwgbWF4TGVuZ3RoKSkKIAogICAgICAgICBpZiBpbml0QVNNRmlsZU5hbWUgYW5kIHNlY3Rp
b25bJ2VtaXRJbkFTTUZpbGUnXToKICAgICAgICAgICAgIHByZWZpeCA9ICIiCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAppbmRleCAyYjRj
N2M5YjNlYjM2ZDYzMDZlYTg0NGU4NTM3NmZmYTdmZDBmMWY3Li5mZTM2OGYzOTFjYzI3YzFhMDVi
OGJkOTBmZjkxYWMxNjIxYjYyNDcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKQEAgLTYwOCw3ICs2MDgsNyBAQCBKU1N0cmluZyog
SW50ZXJwcmV0ZXI6OnN0YWNrVHJhY2VBc1N0cmluZyhWTSYgdm0sIGNvbnN0IFZlY3RvcjxTdGFj
a0ZyYW1lPiYgc3RhYwogICAgIHJldHVybiBqc1N0cmluZygmdm0sIGJ1aWxkZXIudG9TdHJpbmco
KSk7CiB9CiAKLUFMV0FZU19JTkxJTkUgc3RhdGljIEhhbmRsZXJJbmZvKiBmaW5kRXhjZXB0aW9u
SGFuZGxlcihTdGFja1Zpc2l0b3ImIHZpc2l0b3IsIENvZGVCbG9jayogY29kZUJsb2NrLCBDb2Rl
QmxvY2s6OlJlcXVpcmVkSGFuZGxlciByZXF1aXJlZEhhbmRsZXIpCitBTFdBWVNfSU5MSU5FIHN0
YXRpYyBIYW5kbGVySW5mbyogZmluZEV4Y2VwdGlvbkhhbmRsZXIoU3RhY2tWaXNpdG9yJiB2aXNp
dG9yLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgUmVxdWlyZWRIYW5kbGVyIHJlcXVpcmVkSGFuZGxl
cikKIHsKICAgICBBU1NFUlQoY29kZUJsb2NrKTsKICNpZiBFTkFCTEUoREZHX0pJVCkKQEAgLTY0
Miw3ICs2NDIsNyBAQCBjbGFzcyBHZXRDYXRjaEhhbmRsZXJGdW5jdG9yIHsKICAgICAgICAgaWYg
KCFjb2RlQmxvY2spCiAgICAgICAgICAgICByZXR1cm4gU3RhY2tWaXNpdG9yOjpDb250aW51ZTsK
IAotICAgICAgICBtX2hhbmRsZXIgPSBmaW5kRXhjZXB0aW9uSGFuZGxlcih2aXNpdG9yLCBjb2Rl
QmxvY2ssIENvZGVCbG9jazo6UmVxdWlyZWRIYW5kbGVyOjpDYXRjaEhhbmRsZXIpOworICAgICAg
ICBtX2hhbmRsZXIgPSBmaW5kRXhjZXB0aW9uSGFuZGxlcih2aXNpdG9yLCBjb2RlQmxvY2ssIFJl
cXVpcmVkSGFuZGxlcjo6Q2F0Y2hIYW5kbGVyKTsKICAgICAgICAgaWYgKG1faGFuZGxlcikKICAg
ICAgICAgICAgIHJldHVybiBTdGFja1Zpc2l0b3I6OkRvbmU7CiAKQEAgLTY4NCw3ICs2ODQsNyBA
QCBjbGFzcyBVbndpbmRGdW5jdG9yIHsKICAgICAgICAgbV9oYW5kbGVyID0gbnVsbHB0cjsKICAg
ICAgICAgaWYgKCFtX2lzVGVybWluYXRpb24pIHsKICAgICAgICAgICAgIGlmIChtX2NvZGVCbG9j
ayAmJiAhaXNXZWJBc3NlbWJseUV4ZWN1dGFibGUobV9jb2RlQmxvY2stPm93bmVyRXhlY3V0YWJs
ZSgpKSkKLSAgICAgICAgICAgICAgICBtX2hhbmRsZXIgPSBmaW5kRXhjZXB0aW9uSGFuZGxlcih2
aXNpdG9yLCBtX2NvZGVCbG9jaywgQ29kZUJsb2NrOjpSZXF1aXJlZEhhbmRsZXI6OkFueUhhbmRs
ZXIpOworICAgICAgICAgICAgICAgIG1faGFuZGxlciA9IGZpbmRFeGNlcHRpb25IYW5kbGVyKHZp
c2l0b3IsIG1fY29kZUJsb2NrLCBSZXF1aXJlZEhhbmRsZXI6OkFueUhhbmRsZXIpOwogICAgICAg
ICB9CiAKICAgICAgICAgaWYgKG1faGFuZGxlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL0ludGVycHJldGVyLmgKaW5kZXggZDIwOTRkZWU3ZDI4NWFjNDk1YjE1NDE3
MmEyM2I5NGZmZTg1N2YxZS4uMDczMmIzZWJiZDlhZGZkMjIzMzYyZWM5YTZiYWFhZmQ4NjFmNTI2
NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJl
dGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVy
LmgKQEAgLTY2LDYgKzY2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgc3RydWN0IEhhbmRsZXJJ
bmZvOwogICAgIHN0cnVjdCBJbnN0cnVjdGlvbjsKICAgICBzdHJ1Y3QgUHJvdG9DYWxsRnJhbWU7
CisgICAgc3RydWN0IFVubGlua2VkSW5zdHJ1Y3Rpb247CiAKICAgICBlbnVtIFVud2luZFN0YXJ0
IHsgVW53aW5kRnJvbUN1cnJlbnRGcmFtZSwgVW53aW5kRnJvbUNhbGxlckZyYW1lIH07CiAKQEAg
LTIwOCw3ICsyMDksMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gb3Bj
b2RlOwogI2VuZGlmCiAgICAgICAgIH0KLSAgICAgICAgCisKKyAgICAgICAgT3Bjb2RlSUQgZ2V0
T3Bjb2RlSUQoY29uc3QgSW5zdHJ1Y3Rpb24mKTsKKyAgICAgICAgT3Bjb2RlSUQgZ2V0T3Bjb2Rl
SUQoY29uc3QgVW5saW5rZWRJbnN0cnVjdGlvbiYpOworCiAgICAgICAgIGJvb2wgaXNPcGNvZGUo
T3Bjb2RlKTsKIAogICAgICAgICBKU1ZhbHVlIGV4ZWN1dGUoUHJvZ3JhbUV4ZWN1dGFibGUqLCBD
YWxsRnJhbWUqLCBKU09iamVjdCogdGhpc09iaik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXJJbmxpbmVzLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODZk
MDcxNDhhNTJlNjVlMzc1Zjk3ZTZlYmI5MWFkYmUxZGQ0NTYwZAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlcklubGluZXMuaApA
QCAtMCwwICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IFl1c3VrZSBTdXp1a2kg
PHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJJbnN0cnVjdGlvbi5oIgorI2lu
Y2x1ZGUgIkludGVycHJldGVyLmgiCisjaW5jbHVkZSAiVW5saW5rZWRDb2RlQmxvY2suaCIKKwor
bmFtZXNwYWNlIEpTQyB7CisKK2lubGluZSBPcGNvZGVJRCBJbnRlcnByZXRlcjo6Z2V0T3Bjb2Rl
SUQoY29uc3QgSW5zdHJ1Y3Rpb24mIGluc3RydWN0aW9uKQoreworICAgIHJldHVybiBnZXRPcGNv
ZGVJRChpbnN0cnVjdGlvbi51Lm9wY29kZSk7Cit9CisKK2lubGluZSBPcGNvZGVJRCBJbnRlcnBy
ZXRlcjo6Z2V0T3Bjb2RlSUQoY29uc3QgVW5saW5rZWRJbnN0cnVjdGlvbiYgaW5zdHJ1Y3Rpb24p
Cit7CisgICAgcmV0dXJuIGluc3RydWN0aW9uLnUub3Bjb2RlOworfQorCit9IC8vIG5hbWVzcGFj
ZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAppbmRleCBmMjdkMzlhNmVhOGQ5NDNiNGJl
ODYyY2RkMGNkYjdlYWVkNWExMzQ3Li42OTkxNDI0MmU2NjQzMGZlOGFlMWZiNzdiNTg5ZjY5Zjg3
YzA3YzUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCkBAIC0yMzUsOCArMjM1LDYgQEAg
dm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBERUZJTkVfT1Aob3Bf
Z2V0X3Jlc3RfbGVuZ3RoKQogICAgICAgICBERUZJTkVfT1Aob3BfY2hlY2tfdGR6KQogICAgICAg
ICBERUZJTkVfT1Aob3BfYXNzZXJ0KQotICAgICAgICBERUZJTkVfT1Aob3Bfc2F2ZSkKLSAgICAg
ICAgREVGSU5FX09QKG9wX3Jlc3VtZSkKICAgICAgICAgREVGSU5FX09QKG9wX2RlYnVnKQogICAg
ICAgICBERUZJTkVfT1Aob3BfZGVsX2J5X2lkKQogICAgICAgICBERUZJTkVfT1Aob3BfZGVsX2J5
X3ZhbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCmluZGV4IDczMTFkZmExNmI5YTRkOGY5YzE3NWNl
ZGVkNzM3NTllMmIyY2IxM2MuLjEzMDI3Y2VkZjRkMDZjMzdhZjNjMzJiOTQzZjFiNGFiNWNjYjcw
ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaApAQCAtNTAxLDggKzUwMSw2IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X3Jlc3RfbGVuZ3RoKEluc3RydWN0aW9u
Kik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9jaGVja190ZHooSW5zdHJ1Y3Rpb24qKTsKICAgICAg
ICAgdm9pZCBlbWl0X29wX2Fzc2VydChJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRf
b3Bfc2F2ZShJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfcmVzdW1lKEluc3Ry
dWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9kZWJ1ZyhJbnN0cnVjdGlvbiopOwogICAg
ICAgICB2b2lkIGVtaXRfb3BfZGVsX2J5X2lkKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQg
ZW1pdF9vcF9kZWxfYnlfdmFsKEluc3RydWN0aW9uKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGNvZGVzLmNwcAppbmRleCBkNTU3NzhkMjU4NmZhMTdjZjQ1NGYzMDI0NWY0NzMyN2Qw
NjE1OTJhLi4yODEzZWNiMWMwN2JhYzVhZmNkZTNjNzg5NzVhMDdmZmM3NDEzNDQ3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKQEAgLTE0ODYsMTggKzE0ODYsNiBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfcmVzdF9sZW5ndGgoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKICNlbmRpZgogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9zYXZlKEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCi17Ci0gICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRo
Q2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9zYXZlKTsKLSAgICBzbG93
UGF0aENhbGwuY2FsbCgpOwotfQotCi12b2lkIEpJVDo6ZW1pdF9vcF9yZXN1bWUoSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKLXsKLSAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhD
YWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX3Jlc3VtZSk7Ci0gICAgc2xv
d1BhdGhDYWxsLmNhbGwoKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBF
TkFCTEUoSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXIuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXIuYXNtCmluZGV4IDAxOTkzMTU0NThlYTE1MjMxODg3MTFjYmE4MmE2OGMzMzNm
N2E2M2MuLjZjNjBhYmNhNjg3ZWJiOTVhMDAzMTkxMTczMjgzYjFmMGU1NjZmZWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20K
QEAgLTE2NTEsMTUgKzE2NTEsMTEgQEAgX2xsaW50X29wX2Fzc2VydDoKIAogCiBfbGxpbnRfb3Bf
c2F2ZToKLSAgICB0cmFjZUV4ZWN1dGlvbigpCi0gICAgY2FsbE9wY29kZVNsb3dQYXRoKF9zbG93
X3BhdGhfc2F2ZSkKLSAgICBkaXNwYXRjaCg0KQorICAgIG5vdFN1cHBvcnRlZCgpCiAKIAogX2xs
aW50X29wX3Jlc3VtZToKLSAgICB0cmFjZUV4ZWN1dGlvbigpCi0gICAgY2FsbE9wY29kZVNsb3dQ
YXRoKF9zbG93X3BhdGhfcmVzdW1lKQotICAgIGRpc3BhdGNoKDMpCisgICAgbm90U3VwcG9ydGVk
KCkKIAogCiBfbGxpbnRfb3BfY3JlYXRlX2xleGljYWxfZW52aXJvbm1lbnQ6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKaW5kZXggNGVlYWUxNDgwMDQ2NTM2Y2YyMjhlMGQ3
ODI4NmM4ZjU0ZjkxOTZiMi4uNzU2ZjEyZWQyNTUxNTdkZWZiZWY2MTUwOWY0N2I5OTE2NDZmODBl
ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcApAQCAtMjU2LDcgKzI1
Niw3IEBAIFN0cmluZyBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJbm5lcihjb25zdCBJZGVudGlm
aWVyJiBjYWxsZWVOYW1lLCBTb3VyY2VQYXJzZU1vCiAgICAgaWYgKG1fbGV4ZXItPmlzUmVwYXJz
aW5nRnVuY3Rpb24oKSkgewogICAgICAgICBQYXJzZXJGdW5jdGlvbkluZm88QVNUQnVpbGRlcj4g
ZnVuY3Rpb25JbmZvOwogICAgICAgICBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6
R2VuZXJhdG9yQm9keU1vZGUpCi0gICAgICAgICAgICBtX3BhcmFtZXRlcnMgPSBjcmVhdGVHZW5l
cmF0b3JQYXJhbWV0ZXJzKGNvbnRleHQpOworICAgICAgICAgICAgbV9wYXJhbWV0ZXJzID0gY3Jl
YXRlR2VuZXJhdG9yUGFyYW1ldGVycyhjb250ZXh0LCBmdW5jdGlvbkluZm8ucGFyYW1ldGVyQ291
bnQpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBtX3BhcmFtZXRlcnMgPSBwYXJzZUZ1bmN0
aW9uUGFyYW1ldGVycyhjb250ZXh0LCBwYXJzZU1vZGUsIGZ1bmN0aW9uSW5mbyk7CiAKQEAgLTUw
NywxMCArNTA3LDkgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU291cmNlRWxl
bWVudHMgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlR2VuZXJhdG8KIAogICAgIFBhcnNlckZ1bmN0
aW9uSW5mbzxUcmVlQnVpbGRlcj4gaW5mbzsKICAgICBpbmZvLm5hbWUgPSAmbV92bS0+cHJvcGVy
dHlOYW1lcy0+bnVsbElkZW50aWZpZXI7Ci0gICAgY3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhj
b250ZXh0KTsKKyAgICBjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKGNvbnRleHQsIGluZm8ucGFy
YW1ldGVyQ291bnQpOwogICAgIGluZm8uc3RhcnRPZmZzZXQgPSBwYXJhbWV0ZXJzU3RhcnQ7CiAg
ICAgaW5mby5zdGFydExpbmUgPSB0b2tlbkxpbmUoKTsKLSAgICBpbmZvLnBhcmFtZXRlckNvdW50
ID0gNDsgLy8gZ2VuZXJhdG9yLCBzdGF0ZSwgdmFsdWUsIHJlc3VtZSBtb2RlCiAKICAgICB7CiAg
ICAgICAgIEF1dG9Qb3BTY29wZVJlZiBnZW5lcmF0b3JCb2R5U2NvcGUodGhpcywgcHVzaFNjb3Bl
KCkpOwpAQCAtMTkwMSwzMiArMTkwMCwzMCBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBl
PiB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXIsIGNsYXNzIEZ1bmN0aW9uSW5mb1R5cAogfQog
CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgotdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWls
ZGVyPiB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6Rm9ybWFsUGFyYW1ldGVyTGlzdCBQYXJzZXI8TGV4
ZXJUeXBlPjo6Y3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhUcmVlQnVpbGRlciYgY29udGV4dCkK
K3RlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkZvcm1h
bFBhcmFtZXRlckxpc3QgUGFyc2VyPExleGVyVHlwZT46OmNyZWF0ZUdlbmVyYXRvclBhcmFtZXRl
cnMoVHJlZUJ1aWxkZXImIGNvbnRleHQsIHVuc2lnbmVkJiBwYXJhbWV0ZXJDb3VudCkKIHsKICAg
ICBhdXRvIHBhcmFtZXRlcnMgPSBjb250ZXh0LmNyZWF0ZUZvcm1hbFBhcmFtZXRlckxpc3QoKTsK
IAogICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOwogICAgIEpT
VGV4dFBvc2l0aW9uIHBvc2l0aW9uID0gdG9rZW5TdGFydFBvc2l0aW9uKCk7CiAKLSAgICAvLyBA
Z2VuZXJhdG9yCi0gICAgZGVjbGFyZVBhcmFtZXRlcigmbV92bS0+cHJvcGVydHlOYW1lcy0+YnVp
bHRpbk5hbWVzKCkuZ2VuZXJhdG9yUHJpdmF0ZU5hbWUoKSk7Ci0gICAgYXV0byBnZW5lcmF0b3Ig
PSBjb250ZXh0LmNyZWF0ZUJpbmRpbmdMb2NhdGlvbihsb2NhdGlvbiwgbV92bS0+cHJvcGVydHlO
YW1lcy0+YnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yUHJpdmF0ZU5hbWUoKSwgcG9zaXRpb24sIHBv
c2l0aW9uLCBBc3NpZ25tZW50Q29udGV4dDo6RGVjbGFyYXRpb25TdGF0ZW1lbnQpOwotICAgIGNv
bnRleHQuYXBwZW5kUGFyYW1ldGVyKHBhcmFtZXRlcnMsIGdlbmVyYXRvciwgMCk7CisgICAgYXV0
byBhZGRQYXJhbWV0ZXIgPSBbJl0oY29uc3QgSWRlbnRpZmllciYgbmFtZSkgeworICAgICAgICBk
ZWNsYXJlUGFyYW1ldGVyKCZuYW1lKTsKKyAgICAgICAgYXV0byBiaW5kaW5nID0gY29udGV4dC5j
cmVhdGVCaW5kaW5nTG9jYXRpb24obG9jYXRpb24sIG5hbWUsIHBvc2l0aW9uLCBwb3NpdGlvbiwg
QXNzaWdubWVudENvbnRleHQ6OkRlY2xhcmF0aW9uU3RhdGVtZW50KTsKKyAgICAgICAgY29udGV4
dC5hcHBlbmRQYXJhbWV0ZXIocGFyYW1ldGVycywgYmluZGluZywgMCk7CisgICAgICAgICsrcGFy
YW1ldGVyQ291bnQ7CisgICAgfTsKIAorICAgIC8vIEBnZW5lcmF0b3IKKyAgICBhZGRQYXJhbWV0
ZXIobV92bS0+cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yUHJpdmF0ZU5h
bWUoKSk7CiAgICAgLy8gQGdlbmVyYXRvclN0YXRlCi0gICAgZGVjbGFyZVBhcmFtZXRlcigmbV92
bS0+cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yU3RhdGVQcml2YXRlTmFt
ZSgpKTsKLSAgICBhdXRvIGdlbmVyYXRvclN0YXRlID0gY29udGV4dC5jcmVhdGVCaW5kaW5nTG9j
YXRpb24obG9jYXRpb24sIG1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdlbmVy
YXRvclN0YXRlUHJpdmF0ZU5hbWUoKSwgcG9zaXRpb24sIHBvc2l0aW9uLCBBc3NpZ25tZW50Q29u
dGV4dDo6RGVjbGFyYXRpb25TdGF0ZW1lbnQpOwotICAgIGNvbnRleHQuYXBwZW5kUGFyYW1ldGVy
KHBhcmFtZXRlcnMsIGdlbmVyYXRvclN0YXRlLCAwKTsKLQorICAgIGFkZFBhcmFtZXRlcihtX3Zt
LT5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JTdGF0ZVByaXZhdGVOYW1l
KCkpOwogICAgIC8vIEBnZW5lcmF0b3JWYWx1ZQotICAgIGRlY2xhcmVQYXJhbWV0ZXIoJm1fdm0t
PnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclZhbHVlUHJpdmF0ZU5hbWUo
KSk7Ci0gICAgYXV0byBnZW5lcmF0b3JWYWx1ZSA9IGNvbnRleHQuY3JlYXRlQmluZGluZ0xvY2F0
aW9uKGxvY2F0aW9uLCBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZW5lcmF0
b3JWYWx1ZVByaXZhdGVOYW1lKCksIHBvc2l0aW9uLCBwb3NpdGlvbiwgQXNzaWdubWVudENvbnRl
eHQ6OkRlY2xhcmF0aW9uU3RhdGVtZW50KTsKLSAgICBjb250ZXh0LmFwcGVuZFBhcmFtZXRlcihw
YXJhbWV0ZXJzLCBnZW5lcmF0b3JWYWx1ZSwgMCk7Ci0KKyAgICBhZGRQYXJhbWV0ZXIobV92bS0+
cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yVmFsdWVQcml2YXRlTmFtZSgp
KTsKICAgICAvLyBAZ2VuZXJhdG9yUmVzdW1lTW9kZQotICAgIGRlY2xhcmVQYXJhbWV0ZXIoJm1f
dm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclJlc3VtZU1vZGVQcml2
YXRlTmFtZSgpKTsKLSAgICBhdXRvIGdlbmVyYXRvclJlc3VtZU1vZGUgPSBjb250ZXh0LmNyZWF0
ZUJpbmRpbmdMb2NhdGlvbihsb2NhdGlvbiwgbV92bS0+cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5h
bWVzKCkuZ2VuZXJhdG9yUmVzdW1lTW9kZVByaXZhdGVOYW1lKCksIHBvc2l0aW9uLCBwb3NpdGlv
biwgQXNzaWdubWVudENvbnRleHQ6OkRlY2xhcmF0aW9uU3RhdGVtZW50KTsKLSAgICBjb250ZXh0
LmFwcGVuZFBhcmFtZXRlcihwYXJhbWV0ZXJzLCBnZW5lcmF0b3JSZXN1bWVNb2RlLCAwKTsKKyAg
ICBhZGRQYXJhbWV0ZXIobV92bS0+cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZ2VuZXJh
dG9yUmVzdW1lTW9kZVByaXZhdGVOYW1lKCkpOworICAgIC8vIEBnZW5lcmF0b3JGcmFtZQorICAg
IGFkZFBhcmFtZXRlcihtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZW5lcmF0
b3JGcmFtZVByaXZhdGVOYW1lKCkpOwogCiAgICAgcmV0dXJuIHBhcmFtZXRlcnM7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAppbmRleCAyNWNlYzk1YTc2MWNjZDhjMjYzMzgz
NzMwZWIwNGUxNTY5NzIwYmEyLi5kZWQ2MjRmNjE3ZmI2ZDI0ZDAwYmYxYWM0NmM0NWMyMmQ5OWI3
MjFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKQEAgLTE0NTEsNyArMTQ1
MSw3IEBAIGNsYXNzIFBhcnNlciB7CiAgICAgQUxXQVlTX0lOTElORSBib29sIGlzQXJyb3dGdW5j
dGlvblBhcmFtZXRlcnMoKTsKICAgICAKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXIs
IGNsYXNzIEZ1bmN0aW9uSW5mb1R5cGU+IE5FVkVSX0lOTElORSB0eXBlbmFtZSBUcmVlQnVpbGRl
cjo6Rm9ybWFsUGFyYW1ldGVyTGlzdCBwYXJzZUZ1bmN0aW9uUGFyYW1ldGVycyhUcmVlQnVpbGRl
ciYsIFNvdXJjZVBhcnNlTW9kZSwgRnVuY3Rpb25JbmZvVHlwZSYpOwotICAgIHRlbXBsYXRlIDxj
bGFzcyBUcmVlQnVpbGRlcj4gTkVWRVJfSU5MSU5FIHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpGb3Jt
YWxQYXJhbWV0ZXJMaXN0IGNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMoVHJlZUJ1aWxkZXImKTsK
KyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElORSB0eXBlbmFtZSBU
cmVlQnVpbGRlcjo6Rm9ybWFsUGFyYW1ldGVyTGlzdCBjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJz
KFRyZWVCdWlsZGVyJiwgdW5zaWduZWQmIHBhcmFtZXRlckNvdW50KTsKIAogICAgIHRlbXBsYXRl
IDxjbGFzcyBUcmVlQnVpbGRlcj4gTkVWRVJfSU5MSU5FIFRyZWVDbGFzc0V4cHJlc3Npb24gcGFy
c2VDbGFzcyhUcmVlQnVpbGRlciYsIEZ1bmN0aW9uUmVxdWlyZW1lbnRzLCBQYXJzZXJDbGFzc0lu
Zm88VHJlZUJ1aWxkZXI+Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21tb25TbG93UGF0aHMuY3BwCmluZGV4IDAwNjEyNDVjNWI1MmQyNWZkNWMzNTRmYWJlNmM1
Yjc2YzkxMDk0MjMuLmI4ZDk3ODAzOTJkYWVmNzlmZTIxNGIwZDJjN2E2M2MyMzNlOWFiNDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNw
cApAQCAtMzYsNyArMzYsNiBAQAogI2luY2x1ZGUgIkVycm9yLmgiCiAjaW5jbHVkZSAiRXJyb3JI
YW5kbGluZ1Njb3BlLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uRnV6ei5oIgotI2luY2x1ZGUgIkdl
bmVyYXRvckZyYW1lLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiSG9z
dENhbGxSZXR1cm5WYWx1ZS5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCkBAIC03MTQsMzgg
KzcxMyw2IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9hc3NlcnQpCiAgICAgRU5EKCk7CiB9
CiAKLVNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9zYXZlKQotewotICAgIC8vIE9ubHkgc2F2ZSB2
YXJpYWJsZXMgYW5kIHRlbXBvcmFyeSByZWdpc3RlcnMuIFRoZSBzY29wZSByZWdpc3RlcnMgYXJl
IGluY2x1ZGVkIGluIHRoZW0uCi0gICAgLy8gQnV0IHBhcmFtZXRlcnMgYXJlIG5vdCBpbmNsdWRl
ZC4gQmVjYXVzZSB0aGUgZ2VuZXJhdG9yIGltcGxlbWVudGF0aW9uIHJlcGxhY2VzIHRoZSB2YWx1
ZXMgb2YgcGFyYW1ldGVycyBvbiBlYWNoIGdlbmVyYXRvci5uZXh0KCkgY2FsbC4KLSAgICBCRUdJ
TigpOwotICAgIEpTVmFsdWUgZ2VuZXJhdG9yID0gT1AoMSkuanNWYWx1ZSgpOwotICAgIEdlbmVy
YXRvckZyYW1lKiBmcmFtZSA9IG51bGxwdHI7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IGdlbmVyYXRv
ci5nZXQoZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRv
ckZyYW1lUHJpdmF0ZU5hbWUoKSk7Ci0gICAgaWYgKCF2YWx1ZS5pc051bGwoKSkKLSAgICAgICAg
ZnJhbWUgPSBqc0Nhc3Q8R2VuZXJhdG9yRnJhbWUqPih2YWx1ZSk7Ci0gICAgZWxzZSB7Ci0gICAg
ICAgIC8vIEZJWE1FOiBPbmNlIEpTR2VuZXJhdG9yIHNwZWNpYWxpemVkIG9iamVjdCBpcyBpbnRy
b2R1Y2VkLCB0aGlzIEdlbmVyYXRvckZyYW1lIHNob3VsZCBiZSBlbWJlZGVkIGludG8gaXQgdG8g
YXZvaWQgYWxsb2NhdGlvbnMuCi0gICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNTE1NDUKLSAgICAgICAgZnJhbWUgPSBHZW5lcmF0b3JGcmFtZTo6Y3Jl
YXRlKGV4ZWMtPnZtKCksICBleGVjLT5jb2RlQmxvY2soKS0+bnVtQ2FsbGVlTG9jYWxzKCkpOwot
ICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChnZW5lcmF0b3IsIHRydWUsIFB1dFByb3BlcnR5
U2xvdDo6UHV0QnlJZCk7Ci0gICAgICAgIGFzT2JqZWN0KGdlbmVyYXRvciktPm1ldGhvZFRhYmxl
KGV4ZWMtPnZtKCkpLT5wdXQoYXNPYmplY3QoZ2VuZXJhdG9yKSwgZXhlYywgZXhlYy0+cHJvcGVy
dHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvckZyYW1lUHJpdmF0ZU5hbWUoKSwgZnJh
bWUsIHNsb3QpOwotICAgIH0KLSAgICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSBw
Y1syXS51LnVuc2lnbmVkVmFsdWU7Ci0gICAgZnJhbWUtPnNhdmUoZXhlYywgZXhlYy0+Y29kZUJs
b2NrKCktPmxpdmVDYWxsZWVMb2NhbHNBdFlpZWxkKGxpdmVDYWxsZWVMb2NhbHNJbmRleCkpOwot
ICAgIEVORCgpOwotfQotCi1TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcmVzdW1lKQotewotICAg
IEJFR0lOKCk7Ci0gICAgSlNWYWx1ZSBnZW5lcmF0b3IgPSBPUCgxKS5qc1ZhbHVlKCk7Ci0gICAg
R2VuZXJhdG9yRnJhbWUqIGZyYW1lID0ganNDYXN0PEdlbmVyYXRvckZyYW1lKj4oZ2VuZXJhdG9y
LmdldChleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9y
RnJhbWVQcml2YXRlTmFtZSgpKSk7Ci0gICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4
ID0gcGNbMl0udS51bnNpZ25lZFZhbHVlOwotICAgIGZyYW1lLT5yZXN1bWUoZXhlYywgZXhlYy0+
Y29kZUJsb2NrKCktPmxpdmVDYWxsZWVMb2NhbHNBdFlpZWxkKGxpdmVDYWxsZWVMb2NhbHNJbmRl
eCkpOwotICAgIEVORCgpOwotfQotCiBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfY3JlYXRlX2xl
eGljYWxfZW52aXJvbm1lbnQpCiB7CiAgICAgQkVHSU4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKaW5kZXggZWJjOTEzMDZmODNhODFiN2Fh
MmVlMGUzYjNmYmUyOTI3ZTlmYWQ2Mi4uNzUzNGY1NjUzYWYyZWNlNDE4MjFkMDUxZGU2OTgxNDMx
ODZkMjQ1NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9u
U2xvd1BhdGhzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xv
d1BhdGhzLmgKQEAgLTI0NSw4ICsyNDUsNiBAQCBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19w
YXRoX25leHRfZ2VuZXJpY19lbnVtZXJhdG9yX3BuYW1lKTsKIFNMT1dfUEFUSF9ISURERU5fREVD
TChzbG93X3BhdGhfdG9faW5kZXhfc3RyaW5nKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93
X3BhdGhfcHJvZmlsZV90eXBlX2NsZWFyX2xvZyk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xv
d19wYXRoX2Fzc2VydCk7Ci1TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3NhdmUpOwot
U0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9yZXN1bWUpOwogU0xPV19QQVRIX0hJRERF
Tl9ERUNMKHNsb3dfcGF0aF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudCk7CiBTTE9XX1BBVEhf
SElEREVOX0RFQ0woc2xvd19wYXRoX3B1c2hfd2l0aF9zY29wZSk7CiBTTE9XX1BBVEhfSElEREVO
X0RFQ0woc2xvd19wYXRoX3Jlc29sdmVfc2NvcGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJhbWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJhbWUuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBlZjZlYTdhMTAwMjU4YzNlY2UwNGRhYWI0M2JkYWE4NTFlYzhmNzE1Li4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0dlbmVyYXRvckZyYW1lLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDk3ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFA
Z21haWwuY29tPi4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
LSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkdl
bmVyYXRvckZyYW1lLmgiCi0KLSNpbmNsdWRlICJDb2RlQmxvY2suaCIKLSNpbmNsdWRlICJIZWFw
SXRlcmF0aW9uU2NvcGUuaCIKLSNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgotI2luY2x1
ZGUgIkpTQ2VsbElubGluZXMuaCIKLSNpbmNsdWRlICJTbG90VmlzaXRvcklubGluZXMuaCIKLSNp
bmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCi0KLW5hbWVzcGFjZSBKU0MgewotCi1jb25zdCBD
bGFzc0luZm8gR2VuZXJhdG9yRnJhbWU6OnNfaW5mbyA9IHsgIkdlbmVyYXRvckZyYW1lIiwgbnVs
bHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShHZW5lcmF0b3JGcmFtZSkgfTsKLQot
R2VuZXJhdG9yRnJhbWU6OkdlbmVyYXRvckZyYW1lKFZNJiB2bSwgc2l6ZV90IG51bWJlck9mQ2Fs
bGVlTG9jYWxzKQotICAgIDogQmFzZSh2bSwgdm0uZ2VuZXJhdG9yRnJhbWVTdHJ1Y3R1cmUuZ2V0
KCkpCi0gICAgLCBtX251bWJlck9mQ2FsbGVlTG9jYWxzKG51bWJlck9mQ2FsbGVlTG9jYWxzKQot
ewotfQotCi12b2lkIEdlbmVyYXRvckZyYW1lOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCi17Ci0g
ICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
bV9udW1iZXJPZkNhbGxlZUxvY2FsczsgKytpKQotICAgICAgICBsb2NhbEF0KGkpLmNsZWFyKCk7
Ci19Ci0KLVN0cnVjdHVyZSogR2VuZXJhdG9yRnJhbWU6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0s
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQotewotICAg
IHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5
cGVJbmZvKENlbGxUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Ci19Ci0KLUdlbmVyYXRv
ckZyYW1lKiBHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlKFZNJiB2bSwgc2l6ZV90IG51bWJlck9mTG9j
YWxzKQotewotICAgIEdlbmVyYXRvckZyYW1lKiByZXN1bHQgPQotICAgICAgICBuZXcgKAotICAg
ICAgICAgICAgTm90TnVsbCwKLSAgICAgICAgICAgIGFsbG9jYXRlQ2VsbDxHZW5lcmF0b3JGcmFt
ZT4odm0uaGVhcCwgYWxsb2NhdGlvblNpemVGb3JMb2NhbHMobnVtYmVyT2ZMb2NhbHMpKSkKLSAg
ICAgICAgR2VuZXJhdG9yRnJhbWUodm0sIG51bWJlck9mTG9jYWxzKTsKLSAgICByZXN1bHQtPmZp
bmlzaENyZWF0aW9uKHZtKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi12b2lkIEdlbmVyYXRv
ckZyYW1lOjpzYXZlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZUNh
bGxlZUxvY2FscykKLXsKLSAgICAvLyBPbmx5IHNhdmUgY2FsbGVlIGxvY2Fscy4KLSAgICAvLyBF
dmVyeSB0aW1lIGEgZ2VuZXJhdG9yIGlzIGNhbGxlZCAob3IgcmVzdW1lZCksIHBhcmFtZXRlcnMg
c2hvdWxkIGJlIHJlcGxhY2VkLgotICAgIEFTU0VSVChsaXZlQ2FsbGVlTG9jYWxzLm51bUJpdHMo
KSA8PSBtX251bWJlck9mQ2FsbGVlTG9jYWxzKTsKLSAgICBsaXZlQ2FsbGVlTG9jYWxzLmZvckVh
Y2hTZXRCaXQoWyZdKHNpemVfdCBpbmRleCkgewotICAgICAgICBsb2NhbEF0KGluZGV4KS5zZXQo
ZXhlYy0+dm0oKSwgdGhpcywgZXhlYy0+dW5jaGVja2VkUih2aXJ0dWFsUmVnaXN0ZXJGb3JMb2Nh
bChpbmRleCkpLmpzVmFsdWUoKSk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgR2VuZXJhdG9yRnJhbWU6
OnJlc3VtZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEZhc3RCaXRWZWN0b3ImIGxpdmVDYWxsZWVM
b2NhbHMpCi17Ci0gICAgLy8gT25seSByZXN1bWUgY2FsbGVlIGxvY2Fscy4KLSAgICAvLyBFdmVy
eSB0aW1lIGEgZ2VuZXJhdG9yIGlzIGNhbGxlZCAob3IgcmVzdW1lZCksIHBhcmFtZXRlcnMgc2hv
dWxkIGJlIHJlcGxhY2VkLgotICAgIGxpdmVDYWxsZWVMb2NhbHMuZm9yRWFjaFNldEJpdChbJl0o
c2l6ZV90IGluZGV4KSB7Ci0gICAgICAgIGV4ZWMtPnVuY2hlY2tlZFIodmlydHVhbFJlZ2lzdGVy
Rm9yTG9jYWwoaW5kZXgpKSA9IGxvY2FsQXQoaW5kZXgpLmdldCgpOwotICAgICAgICBsb2NhbEF0
KGluZGV4KS5jbGVhcigpOwotICAgIH0pOwotfQotCi12b2lkIEdlbmVyYXRvckZyYW1lOjp2aXNp
dENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCi17Ci0gICAgR2Vu
ZXJhdG9yRnJhbWUqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8R2VuZXJhdG9yRnJhbWUqPihjZWxsKTsK
LSAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwotICAgIC8vIFNp
bmNlIG9ubHkgdHJ1ZSBjZWxsIHBvaW50ZXJzIGFyZSBzdG9yZWQgYXMgYSBjZWxsLCB3ZSBjYW4g
c2FmZWx5IG1hcmsgdGhlbS4KLSAgICB2aXNpdG9yLmFwcGVuZFZhbHVlcyh0aGlzT2JqZWN0LT5s
b2NhbHMoKSwgdGhpc09iamVjdC0+bV9udW1iZXJPZkNhbGxlZUxvY2Fscyk7Ci19Ci0KLX0gLy8g
bmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
R2VuZXJhdG9yRnJhbWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRv
ckZyYW1lLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNkNTQ1YjE0N2RkNGFiZmIy
YmJiOWI1YTcxOTRlOGY3NDg0MWM0OWEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJh
bWUuaAorKysgL2Rldi9udWxsCkBAIC0xLDkwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I2lmbmRlZiBHZW5lcmF0b3JGcmFtZV9oCi0jZGVmaW5lIEdlbmVyYXRvckZyYW1lX2gKLQotI2lu
Y2x1ZGUgIkpTQ2VsbC5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0Qml0VmVjdG9yLmg+Ci0KLW5hbWVz
cGFjZSBKU0MgewotCi1jbGFzcyBHZW5lcmF0b3JGcmFtZSA6IHB1YmxpYyBKU0NlbGwgewotICAg
IGZyaWVuZCBjbGFzcyBKSVQ7Ci0jaWYgRU5BQkxFKERGR19KSVQpCi0gICAgZnJpZW5kIGNsYXNz
IERGRzo6U3BlY3VsYXRpdmVKSVQ7Ci0gICAgZnJpZW5kIGNsYXNzIERGRzo6SklUQ29tcGlsZXI7
Ci0jZW5kaWYKLSAgICBmcmllbmQgY2xhc3MgVk07Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBKU0Nl
bGwgQmFzZTsKLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBTdHJ1
Y3R1cmVJc0ltbW9ydGFsIHwgQmFzZTo6U3RydWN0dXJlRmxhZ3M7Ci0KLSAgICBERUNMQVJFX0VY
UE9SVF9JTkZPOwotCi0gICAgc3RhdGljIEdlbmVyYXRvckZyYW1lKiBjcmVhdGUoVk0mLCBzaXpl
X3QgbnVtYmVyT2ZDYWxsZWVMb2NhbHMpOwotCi0gICAgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3du
PiogbG9jYWxzKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8V3JpdGVCYXJy
aWVyQmFzZTxVbmtub3duPio+KGJpdHdpc2VfY2FzdDxjaGFyKj4odGhpcykgKyBvZmZzZXRPZkxv
Y2FscygpKTsKLSAgICB9Ci0KLSAgICBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+JiBsb2NhbEF0
KHNpemVfdCBpbmRleCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChpbmRleCA8IG1fbnVtYmVyT2ZD
YWxsZWVMb2NhbHMpOwotICAgICAgICByZXR1cm4gbG9jYWxzKClbaW5kZXhdOwotICAgIH0KLQot
ICAgIHN0YXRpYyBzaXplX3Qgb2Zmc2V0T2ZMb2NhbHMoKQotICAgIHsKLSAgICAgICAgcmV0dXJu
IFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZjxzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KT4o
c2l6ZW9mKEdlbmVyYXRvckZyYW1lKSk7Ci0gICAgfQotCi0gICAgc3RhdGljIHNpemVfdCBhbGxv
Y2F0aW9uU2l6ZUZvckxvY2Fscyh1bnNpZ25lZCBudW1iZXJPZkxvY2FscykKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBvZmZzZXRPZkxvY2FscygpICsgbnVtYmVyT2ZMb2NhbHMgKiBzaXplb2YoV3Jp
dGVCYXJyaWVyPFVua25vd24+KTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVh
dGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgcHJvdG90eXBlKTsKLQot
ICAgIHZvaWQgc2F2ZShFeGVjU3RhdGUqLCBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlQ2FsbGVl
TG9jYWxzKTsKLSAgICB2b2lkIHJlc3VtZShFeGVjU3RhdGUqLCBjb25zdCBGYXN0Qml0VmVjdG9y
JiBsaXZlQ2FsbGVlTG9jYWxzKTsKLQotcHJpdmF0ZToKLSAgICBHZW5lcmF0b3JGcmFtZShWTSYs
IHNpemVfdCBudW1iZXJPZkNhbGxlZUxvY2Fscyk7Ci0KLSAgICBzaXplX3QgbV9udW1iZXJPZkNh
bGxlZUxvY2FsczsKLQotICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7Ci0K
LSAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7Ci0KLXByb3RlY3RlZDoKLSAgICBzdGF0aWMg
dm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7Ci19OwotCi19IC8vIG5h
bWVzcGFjZSBKU0MKLQotI2VuZGlmIC8vIEdlbmVyYXRvckZyYW1lX2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNLmNwcAppbmRleCAxYmRkY2VlZGQwOTBjYTA5ZGQ1MWNhMDc5NmEwNGRmZDg2
YmU0NDJjLi41ZjMxYjk3ODVlNjZhY2U2Yjk4YmI2NTJjZDIxNzIzZDIxNWZhOTIyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC00Niw3ICs0Niw2IEBACiAjaW5jbHVkZSAi
RlRMVGh1bmtzLmgiCiAjaW5jbHVkZSAiRnVuY3Rpb25Db25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUg
IkdDQWN0aXZpdHlDYWxsYmFjay5oIgotI2luY2x1ZGUgIkdlbmVyYXRvckZyYW1lLmgiCiAjaW5j
bHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiSGVhcC5oIgogI2luY2x1ZGUgIkhlYXBJ
dGVyYXRpb25TY29wZS5oIgpAQCAtMjQwLDcgKzIzOSw2IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBl
LCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICBpbmZlcnJlZFR5cGVTdHJ1Y3R1cmUuc2V0KCp0aGlz
LCBJbmZlcnJlZFR5cGU6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAg
ICBpbmZlcnJlZFR5cGVUYWJsZVN0cnVjdHVyZS5zZXQoKnRoaXMsIEluZmVycmVkVHlwZVRhYmxl
OjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgZnVuY3Rpb25SYXJl
RGF0YVN0cnVjdHVyZS5zZXQoKnRoaXMsIEZ1bmN0aW9uUmFyZURhdGE6OmNyZWF0ZVN0cnVjdHVy
ZSgqdGhpcywgMCwganNOdWxsKCkpKTsKLSAgICBnZW5lcmF0b3JGcmFtZVN0cnVjdHVyZS5zZXQo
KnRoaXMsIEdlbmVyYXRvckZyYW1lOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgp
KSk7CiAgICAgZXhjZXB0aW9uU3RydWN0dXJlLnNldCgqdGhpcywgRXhjZXB0aW9uOjpjcmVhdGVT
dHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgcHJvbWlzZURlZmVycmVkU3RydWN0
dXJlLnNldCgqdGhpcywgSlNQcm9taXNlRGVmZXJyZWQ6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywg
MCwganNOdWxsKCkpKTsKICAgICBpbnRlcm5hbFByb21pc2VEZWZlcnJlZFN0cnVjdHVyZS5zZXQo
KnRoaXMsIEpTSW50ZXJuYWxQcm9taXNlRGVmZXJyZWQ6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywg
MCwganNOdWxsKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1ZNLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCmluZGV4IGYwZGUxNTEz
NWE5MDc4NzhiNDdhMWQzNDM0ZjY4MjkxY2I1ZGM3M2UuLjRmZjllZGQwYTc3NDZjMjllNWU2N2Mz
ODFmY2UzYjIwNzQ3OTk1NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1ZNLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaApAQCAtMzE2
LDcgKzMxNiw2IEBAIGNsYXNzIFZNIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFZNPiB7
CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gaW5mZXJyZWRUeXBlU3RydWN0dXJlOwogICAgIFN0cm9u
ZzxTdHJ1Y3R1cmU+IGluZmVycmVkVHlwZVRhYmxlU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1
Y3R1cmU+IGZ1bmN0aW9uUmFyZURhdGFTdHJ1Y3R1cmU7Ci0gICAgU3Ryb25nPFN0cnVjdHVyZT4g
Z2VuZXJhdG9yRnJhbWVTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gZXhjZXB0aW9u
U3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHByb21pc2VEZWZlcnJlZFN0cnVjdHVy
ZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBpbnRlcm5hbFByb21pc2VEZWZlcnJlZFN0cnVjdHVy
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJh
dG9yLWZpYi1mdGwtYW5kLWFycmF5LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0
cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQtYXJyYXkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmU5Mzk4MTJm
ZGJhZWM2YjgzMmJmZDAwZjIxNTNkZWY4NGJiNzU5MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwtYW5kLWFycmF5
LmpzCkBAIC0wLDAgKzEsMjMgQEAKKyhmdW5jdGlvbiAoKSB7CisgICAgZnVuY3Rpb24gKmZpYigp
CisgICAgeworICAgICAgICBsZXQgYSA9IDE7CisgICAgICAgIGxldCBiID0gMTsKKyAgICAgICAg
bGV0IGMgPSBbIDAgXTsKKyAgICAgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgICAgIGNbMF0g
PSBhOworICAgICAgICAgICAgeWllbGQgYzsKKyAgICAgICAgICAgIFthLCBiXSA9IFtiLCBhICsg
Yl07CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQgdmFsdWUgPSAwOworICAgIGZvciAobGV0
IGkgPSAwOyBpIDwgMWU0OyArK2kpIHsKKyAgICAgICAgbGV0IGYgPSBmaWIoKTsKKyAgICAgICAg
Zm9yIChsZXQgaSA9IDA7IGkgPCAxMDA7ICsraSkgeworICAgICAgICAgICAgdmFsdWUgPSBmLm5l
eHQoKS52YWx1ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAodmFsdWVbMF0gIT09IDM1NDIyNDg0
ODE3OTI2MjAwMDAwMCkKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIHZhbHVlOiR7
cmVzdWx0fWApOworICAgIH0KK30oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLWFuZC1vYmplY3QuanMgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLWFuZC1vYmplY3Qu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNjY3MzQwZjJlYTRjNzQzOGEyZDIwOWFhNDBkMDY3N2U0YWI3ZDNmYgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2Vu
ZXJhdG9yLWZpYi1mdGwtYW5kLW9iamVjdC5qcwpAQCAtMCwwICsxLDIzIEBACisoZnVuY3Rpb24g
KCkgeworICAgIGZ1bmN0aW9uICpmaWIoKQorICAgIHsKKyAgICAgICAgbGV0IGEgPSAxOworICAg
ICAgICBsZXQgYiA9IDE7CisgICAgICAgIGxldCBjID0geyBmaWI6IDAgfTsKKyAgICAgICAgd2hp
bGUgKHRydWUpIHsKKyAgICAgICAgICAgIGMuZmliID0gYTsKKyAgICAgICAgICAgIHlpZWxkIGM7
CisgICAgICAgICAgICBbYSwgYl0gPSBbYiwgYSArIGJdOworICAgICAgICB9CisgICAgfQorCisg
ICAgbGV0IHZhbHVlID0gMDsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDFlNDsgKytpKSB7Cisg
ICAgICAgIGxldCBmID0gZmliKCk7CisgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwOyAr
K2kpIHsKKyAgICAgICAgICAgIHZhbHVlID0gZi5uZXh0KCkudmFsdWU7CisgICAgICAgIH0KKyAg
ICAgICAgaWYgKHZhbHVlLmZpYiAhPT0gMzU0MjI0ODQ4MTc5MjYyMDAwMDAwKQorICAgICAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgdmFsdWU6JHtyZXN1bHR9YCk7CisgICAgfQorfSgpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9y
LWZpYi1mdGwtYW5kLXN0cmluZy5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJl
c3MvZ2VuZXJhdG9yLWZpYi1mdGwtYW5kLXN0cmluZy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MzhhZTZhYjMz
NDcwNDY4MjI4NDlmNDMwMDRlYTVjNDAzZWVkYTI4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQtc3RyaW5n
LmpzCkBAIC0wLDAgKzEsMjIgQEAKKyhmdW5jdGlvbiAoKSB7CisgICAgZnVuY3Rpb24gKmZpYigp
CisgICAgeworICAgICAgICBsZXQgYSA9IDE7CisgICAgICAgIGxldCBiID0gMTsKKyAgICAgICAg
bGV0IGMgPSAiUmVzdWx0ISAiOworICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAg
eWllbGQgYyArIGE7CisgICAgICAgICAgICBbYSwgYl0gPSBbYiwgYSArIGJdOworICAgICAgICB9
CisgICAgfQorCisgICAgbGV0IHZhbHVlID0gMDsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDFl
NDsgKytpKSB7CisgICAgICAgIGxldCBmID0gZmliKCk7CisgICAgICAgIGZvciAobGV0IGkgPSAw
OyBpIDwgMTAwOyArK2kpIHsKKyAgICAgICAgICAgIHZhbHVlID0gZi5uZXh0KCkudmFsdWU7Cisg
ICAgICAgIH0KKyAgICAgICAgaWYgKHZhbHVlICE9PSBgUmVzdWx0ISAzNTQyMjQ4NDgxNzkyNjIw
MDAwMDBgKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgdmFsdWU6JHtyZXN1bHR9
YCk7CisgICAgfQorfSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0
cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM0MGUzM2RiYzg2OGJl
YTdhODkzYzllYzE2Yjc3OWVjMjZiZGIxOWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLmpzCkBAIC0wLDAgKzEs
MjEgQEAKKyhmdW5jdGlvbiAoKSB7CisgICAgZnVuY3Rpb24gKmZpYigpCisgICAgeworICAgICAg
ICBsZXQgYSA9IDE7CisgICAgICAgIGxldCBiID0gMTsKKyAgICAgICAgd2hpbGUgKHRydWUpIHsK
KyAgICAgICAgICAgIHlpZWxkIGE7CisgICAgICAgICAgICBbYSwgYl0gPSBbYiwgYSArIGJdOwor
ICAgICAgICB9CisgICAgfQorCisgICAgbGV0IHZhbHVlID0gMDsKKyAgICBmb3IgKGxldCBpID0g
MDsgaSA8IDFlNDsgKytpKSB7CisgICAgICAgIGxldCBmID0gZmliKCk7CisgICAgICAgIGZvciAo
bGV0IGkgPSAwOyBpIDwgMTAwOyArK2kpIHsKKyAgICAgICAgICAgIHZhbHVlID0gZi5uZXh0KCku
dmFsdWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHZhbHVlICE9PSAzNTQyMjQ4NDgxNzkyNjIw
MDAwMDApCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCB2YWx1ZToke3Jlc3VsdH1g
KTsKKyAgICB9Cit9KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3Rz
L3N0cmVzcy9nZW5lcmF0b3ItZnJhbWUtZW1wdHkuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dGVzdHMvc3RyZXNzL2dlbmVyYXRvci1mcmFtZS1lbXB0eS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41OWU4ODU1
YmZhYzNjNTZkZjkyNmFiZDQyOGMwMTNjMzM0MTYyNzQ2Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZnJhbWUtZW1wdHkuanMK
QEAgLTAsMCArMSwzNCBAQAorZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVuYywgZXJyb3JNZXNzYWdl
KSB7CisgICAgdmFyIGVycm9yVGhyb3duID0gZmFsc2U7CisgICAgdmFyIGVycm9yID0gbnVsbDsK
KyAgICB0cnkgeworICAgICAgICBmdW5jKCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBl
cnJvclRocm93biA9IHRydWU7CisgICAgICAgIGVycm9yID0gZTsKKyAgICB9CisgICAgaWYgKCFl
cnJvclRocm93bikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdub3QgdGhyb3duJyk7CisgICAg
aWYgKFN0cmluZyhlcnJvcikgIT09IGVycm9yTWVzc2FnZSkKKyAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKGBiYWQgZXJyb3I6ICR7U3RyaW5nKGVycm9yKX1gKTsKK30KKworc2hvdWxkVGhyb3coZnVu
Y3Rpb24gKCkgeworICAgIGZ1bmN0aW9uICpmaWIoZmxhZykKKyAgICB7CisgICAgICAgIGxldCBh
ID0gMTsKKyAgICAgICAgbGV0IGIgPSAxOworICAgICAgICB5aWVsZCA0MjsKKyAgICAgICAgaWYg
KGZsYWcpCisgICAgICAgICAgICByZXR1cm4gYzsKKyAgICAgICAgbGV0IGMgPSA1MDA7CisgICAg
fQorCisgICAgbGV0IHZhbHVlID0gMDsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDFlNDsgKytp
KSB7CisgICAgICAgIGZvciAobGV0IHYgb2YgZmliKGZhbHNlKSkgeworICAgICAgICB9CisgICAg
fQorICAgIGZvciAobGV0IHYgb2YgZmliKHRydWUpKSB7CisgICAgfQorfSwgYFJlZmVyZW5jZUVy
cm9yOiBDYW5ub3QgYWNjZXNzIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUuYCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1yZWR1Y2VkLXNh
dmUtcG9pbnQtcHV0LXRvLXNjb3BlLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0
cmVzcy9nZW5lcmF0b3ItcmVkdWNlZC1zYXZlLXBvaW50LXB1dC10by1zY29wZS5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5jMGM3NWZhNDkxNDNjMTdiZTE0ZjMyODFlM2Y2NTQzNGYzNTEzOWU4Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItcmVk
dWNlZC1zYXZlLXBvaW50LXB1dC10by1zY29wZS5qcwpAQCAtMCwwICsxLDI4IEBACitmdW5jdGlv
biBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0
ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIHZhbHVlOiAke1N0cmluZyhhY3R1YWwp
fWApOworfQorCitmdW5jdGlvbiBlcnJvcigpCit7CisgICAgdGhyb3cgIm9rIjsKK30KKworZnVu
Y3Rpb24qIGdlbigpCit7CisgICAgdmFyIHZhbHVlID0gNDI7CisgICAgdHJ5IHsKKyAgICAgICAg
eWllbGQgMzAwOworICAgICAgICB2YWx1ZSA9IDUwMDsKKyAgICAgICAgZXJyb3IoKTsKKyAgICB9
IGNhdGNoIChlKSB7CisgICAgICAgIHlpZWxkIDQyOworICAgICAgICByZXR1cm4gdmFsdWU7Cisg
ICAgfQorICAgIHJldHVybiAyMDA7Cit9CisKK3ZhciBnID0gZ2VuKCk7CitzaG91bGRCZShnLm5l
eHQoKS52YWx1ZSwgMzAwKTsKK3Nob3VsZEJlKGcubmV4dCgpLnZhbHVlLCA0Mik7CitzaG91bGRC
ZShnLm5leHQoKS52YWx1ZSwgNTAwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXRyYW5zZmVyLXJlZ2lzdGVyLWJleW9uZC1tdXRpcGxl
LXlpZWxkcy5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9y
LXRyYW5zZmVyLXJlZ2lzdGVyLWJleW9uZC1tdXRpcGxlLXlpZWxkcy5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5m
ZTIwOGY1ODEyOTZmOWFlMDhhNmJmYjM5OGI0ODIyNTc0MmQ2Yjc4Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItdHJhbnNmZXIt
cmVnaXN0ZXItYmV5b25kLW11dGlwbGUteWllbGRzLmpzCkBAIC0wLDAgKzEsMTggQEAKK2Z1bmN0
aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBl
Y3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOwor
fQorCisKK2Z1bmN0aW9uICpnZW4oKQoreworICAgIHZhciB0ZXN0ID0gNDI7CisgICAgeWllbGQg
MzI7CisgICAgeWllbGQgMzM7CisgICAgeWllbGQgdGVzdDsKK30KKwordmFyIGcgPSBnZW4oKTsK
K3Nob3VsZEJlKGcubmV4dCgpLnZhbHVlLCAzMik7CitzaG91bGRCZShnLm5leHQoKS52YWx1ZSwg
MzMpOworc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIDQyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL0Zhc3RCaXRWZWN0b3IuaCBiL1NvdXJjZS9XVEYvd3RmL0Zhc3RCaXRWZWN0b3IuaApp
bmRleCA5OGZmZjVjZjczNTNlNmJjNjdkYTVjNTU5NDBjY2NlNGU0YjE1NmQwLi5mZjAwYjdiNTRk
NGEwY2ZmNGJlZjdkMDM4NTRkZTZiOTBjZTFkYjkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi9GYXN0Qml0VmVjdG9yLmgKKysrIGIvU291cmNlL1dURi93dGYvRmFzdEJpdFZlY3Rvci5oCkBA
IC0yMyw4ICsyMyw3IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCi0jaWZuZGVmIEZhc3RCaXRW
ZWN0b3JfaAotI2RlZmluZSBGYXN0Qml0VmVjdG9yX2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVk
ZSA8c3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KQEAgLTM2LDEyICszNSwx
NCBAQCBjbGFzcyBQcmludFN0cmVhbTsKIAogY2xhc3MgRmFzdEJpdFZlY3RvciB7CiBwdWJsaWM6
Ci0gICAgRmFzdEJpdFZlY3RvcigpCi0gICAgICAgIDogbV9hcnJheSgwKQotICAgICAgICAsIG1f
bnVtQml0cygwKQorICAgIEZhc3RCaXRWZWN0b3IoKSA9IGRlZmF1bHQ7CisKKyAgICBGYXN0Qml0
VmVjdG9yKEZhc3RCaXRWZWN0b3ImJiBvdGhlcikKKyAgICAgICAgOiBtX2FycmF5KHN0ZDo6ZXhj
aGFuZ2Uob3RoZXIubV9hcnJheSwgbnVsbHB0cikpCisgICAgICAgICwgbV9udW1CaXRzKHN0ZDo6
ZXhjaGFuZ2Uob3RoZXIubV9udW1CaXRzLCAwKSkKICAgICB7CiAgICAgfQotICAgIAorCiAgICAg
RmFzdEJpdFZlY3Rvcihjb25zdCBGYXN0Qml0VmVjdG9yJiBvdGhlcikKICAgICAgICAgOiBtX2Fy
cmF5KDApCiAgICAgICAgICwgbV9udW1CaXRzKDApCkBAIC0yMDIsMTMgKzIwMywxMCBAQCBjbGFz
cyBGYXN0Qml0VmVjdG9yIHsKICAgICBzdGF0aWMgc2l6ZV90IGFycmF5TGVuZ3RoKHNpemVfdCBu
dW1CaXRzKSB7IHJldHVybiAobnVtQml0cyArIDMxKSA+PiA1OyB9CiAgICAgc2l6ZV90IGFycmF5
TGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gYXJyYXlMZW5ndGgobV9udW1CaXRzKTsgfQogICAgIAot
ICAgIHVpbnQzMl90KiBtX2FycmF5OyAvLyBObywgdGhpcyBjYW4ndCBiZSBhbiBzdGQ6OnVuaXF1
ZV9wdHI8dWludDMyX3RbXT4uCi0gICAgc2l6ZV90IG1fbnVtQml0czsKKyAgICB1aW50MzJfdCog
bV9hcnJheSB7IG51bGxwdHIgfTsgLy8gTm8sIHRoaXMgY2FuJ3QgYmUgYW4gc3RkOjp1bmlxdWVf
cHRyPHVpbnQzMl90W10+LgorICAgIHNpemVfdCBtX251bUJpdHMgeyAwIH07CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXVEYKIAogdXNpbmcgV1RGOjpGYXN0Qml0VmVjdG9yOwotCi0jZW5kaWYgLy8g
RmFzdEJpdFZlY3Rvcl9oCi0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>284097</attachid>
            <date>2016-07-20 05:36:07 -0700</date>
            <delta_ts>2016-07-21 06:38:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-152723-20160720213509.patch</filename>
            <type>text/plain</type>
            <size>189607</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAzNDQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
ZWRkMTAyNmQzZWQ4NjBhYmUyOTJiZmQyNzVjMzExNWUxOWM1ZmJhLi5jOTBiODJlYTU1NTFhMDk5
MWFlNThkZDIxNDkzNGQ4M2RjMTk0ZjAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNTEgQEAKKzIwMTYtMDctMjAgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0RGR11bRlRMXSBJbXBsZW1lbnQgRVM2IEdlbmVyYXRvcnMgaW4g
REZHIC8gRlRMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNTI3MjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUaGlzIHBhdGNoIGludHJvZHVjZXMgREZHIGFuZCBGVEwgc3VwcG9ydCBmb3IgRVM2IGdlbmVy
YXRvcnMuCisgICAgICAgIEVTNiBnZW5lcmF0b3IgaXMgY29tcGlsZWQgYnkgdGhlIEJ5dGVjb2Rl
R2VuZXJhdG9yLiBCdXQgYXQgdGhlIGxhc3QgcGhhc2UsIEJ5dGVjb2RlR2VuZXJhdG9yIHBlcmZv
cm1zICJnZW5lcmF0b3JpZmljYXRpb24iIG9udG8gdGhlIHVubGlua2VkIGNvZGUuCisgICAgICAg
IEluIEJ5dGVjb2RlR2VuZXJhdG9yIHBoYXNlLCB3ZSBpbnNlcnRlZCBzZXZlcmFsIHNwZWNpYWwg
bWFya2VycyBmb3IgdGhlIGdlbmVyYXRvcnMsIG9wX3NhdmUgYW5kIG9wX3Jlc3VtZS4KKyAgICAg
ICAgVGhlIG9wX3NhdmUsIG9wX3Jlc3VtZSwgYW5kIHRoZSBtZXJnZSBwb2ludCBibG9jayBhcmUg
Y29ubmVjdGVkIGFzIGZvbGxvd3MuCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBvcF9yZXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBeCisgICAgICAgIGVudHJ5IC0+IGdlbmVyYXRvciBzd2l0Y2ggLS0tLT4gb3Bfc2F2ZSAtPiBt
ZXJnZSBwb2ludCAtPiAuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBeCisgICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0t
LT4gb3BfcmVzdW1lIC0tLS0tKworCisgICAgICAgIEluIHRoZSBnZW5lcmF0b3JpZmljYXRpb24g
cGhhc2UsIHdlIHR1cm4gb3V0IHdoaWNoIHZhcmlhYmxlcyBzaG91bGQgYmUgc2F2ZWQgYW5kIHJl
c3VtZWQgYXQgZWFjaCBvcF9zYXZlIGFuZCBvcF9yZXN1bWUsIGFuZCBjb252ZXJ0IHRoZXNlIGJ5
dGVjb2RlcworICAgICAgICB0byB0aGUgc2VxdWVuY2VzIG9mIHRoZSBnZXRfZnJvbV9zY29wZSBh
bmQgcHV0X3RvX3Njb3BlLiBUaGUgcmVnaXN0ZXJzIGFyZSBzYXZlZCBhbmQgcmVzdW1lZCBvdmVy
IHRoZSBnZW5lcmF0b3IncyBuZXh0KCkgY2FsbHMgYnkgdXNpbmcgdGhpcyBzcGVjaWFsCisgICAg
ICAgIGdlbmVyYXRvciBmcmFtZSBzY29wZS4KKworICAgICAgICBJbiB0aGUgZ2VuZXJhdG9yaWZp
Y2F0aW9uIHBoYXNlLAorCisgICAgICAgIDEuIFdlIGNvbnN0cnVjdCB0aGUgQnl0ZWNvZGVHcmFw
aCBmcm9tIHRoZSB1bmlua2VkIGluc3RydWN0aW9ucy4gVGhpcyBjb25zdHJ1Y3RzIHRoZSBiYXNp
YyBibG9ja3MsIGFuZCBpdCBpcyB1c2VkIGluIHRoZSBzdWJzZXF1ZW50IGFuYWx5c2lzLgorICAg
ICAgICAyLiBXZSBwZXJmb3JtIHRoZSBhbmFseXNpcyBvbnRvIHRoZSB1bmxpbmtlZCBjb2RlLiBX
ZSBoYXZlIDMgYW5hbHlzaXM6IHRoZSBsaXZlbmVzcyBhbmFseXNpcywgdGhlIHJlc3VtZWQgdmFy
aWFibGVzIGFuYWx5c2lzLCBhbmQgdGhlIHNhdmVkIHZhcmlhYmxlcyBhbmFseXNpcy4KKyAgICAg
ICAgICAgRmlyc3QsIGluIHRoZSBsaXZlbmVzcyBhbmFseXNpcywgd2UgZXh0cmFjdCB0aGUgbGl2
ZSB2YXJpYWJsZXMgYXQgZWFjaCBtZXJnZSBwb2ludC4gVGhlc2UgdmFyaWFibGVzIHNob3VsZCBi
ZSBjb25zaWRlcmVkIGFzIHRoZSBjb25zZXJ2YXRpdmUgcmVnaXN0ZXJzCisgICAgICAgICAgIHRv
IGJlIHNhdmVkIGFuZCByZXN1bWVkIGF0IGVhY2ggcG9pbnQuCisgICAgICAgIDMuIFNlY29uZCwg
d2UgcGVyZm9ybSB0aGUgbGl2ZW5lc3MgYW5hbHlzaXMgYWdhaW4uIEJ1dCB0aGlzIHRpbWUsIHdl
IGV4cGxpY2l0bHkgaWdub3JlIHRoZSBlZGdlcyBiZXR3ZWVuIHRoZSBzYXZlIHBvaW50cyBhbmQg
dGhlIG1lcmdlIHBvaW50cy4gVGhpcyBhbmFseXNpcywKKyAgICAgICAgICAgcmVmZXJyZWQgdG8g
YXMgdGhlIHJlc3VtZWQgdmFyaWFibGVzIGFuYWx5c2lzLCBleHRyYWN0cyB0aGUgbGl2ZW5lc3Mg
YXQgZWFjaCBtZXJnZSBwb2ludC4gVGhpcyBsaXZlbmVzcyBpbmZvcm1hdGlvbiBvbmx5IGNvbnNp
ZGVycyB0aGUgcmVhY2hhYmxlIGJsb2NrcyBmcm9tIHRoZQorICAgICAgICAgICB0YXJnZXQgb3Bf
cmVzdW1lLiBTbywgdGhpcyByZWdpc3RlciBzZXQgcmVwcmVzZW50cyB0aGF0IHdoaWNoIHNhdmVk
IHJlZ2lzdGVycyB0aGUgcmVhY2hhYmxlIGJsb2NrcyB1c2UuIFdlIGNvbnNpZGVyIHRoZXNlIHJl
Z2lzdGVycyBhcyB0aGUgcmVnaXN0ZXJzIHRvIGJlIHJlc3VtZWQKKyAgICAgICAgICAgaGVyZS4g
VGhlIHJlc3VsdCByZWdpc3RlciBzZXQgaXMgc21hbGxlciB0aGFuIHRoZSBzZXQgd2hpY2ggaXMg
ZXh0cmFjdGVkIGluIHRoZSBwcmV2aW91cyBsaXZlbmVzcyBhbmFseXNpcy4KKyAgICAgICAgNC4g
VGhpcmQsIHdlIGRyaXZlIHRoZSBmb3J3YXJkIGFuYWx5c2lzLCBjYWxsZWQgdGhlIHNhdmVkIHZh
cmlhYmxlcyBhbmFseXNpcy4gQXQgb3Bfc2F2ZSwgd2Ugc2hvdWxkIHNhdmUgdGhlIHZhcmlhYmxl
cyB0aGF0IChpKSB3aWxsIGJlIHVzZWQgYWZ0ZXIgdGhlIG1lcmdlIHBvaW50CisgICAgICAgICAg
IGFuZCAoaWkpIHRoZSBuZXdseSBkZWZpbmVkIHZhcmlhYmxlcyBmcm9tIHRoZSBwcmV2aW91cyBv
cF9yZXN1bWUuIFNvLCB3ZSBwcm9wYWdhdGUgdGhlIGRlZnMgYW5kIGNvbGxlY3QgdGhlIG5ld2x5
IGRlZmluZWQgcmVnaXN0ZXJzIGF0IHRoZSBvcF9zYXZlIHBvaW50IGluIHRoZSBncmFwaAorICAg
ICAgICAgICB3aGljaCBkcm9wcyB0aGUgZWRnZXMgYmV0d2VlbiB0aGUgc2F2ZSBwb2ludHMgYW5k
IHRoZSBtZXJnZSBwb2ludHMuIFRoaXMgcmVzdWx0IHJlcHJlc2VudHMgKGlpKS4gU28gdGhlbiwg
d2UgZmlsdGVyIHRoZSBsaXZlIHZhcmlhYmxlcyAoaSkgKGdhaW5lZCBpbiAoMikpIGF0IHRoZSBt
ZXJnZQorICAgICAgICAgICBwb2ludCB3aXRoIHRoaXMgbmV3bHkgZGVmLWVkIHJlZ2lzdGVycyBi
aXQgbWFzayhpaSkuCisgICAgICAgIDUuIFdlIGluc2VydCB0aGUgZ2V0X2Zyb21fc2NvcGUgYW5k
IHB1dF90b19zY29wZSBhdCBlYWNoIG9wX3NhdmUgYW5kIG9wX3Jlc3VtZS4gV2hpY2ggcmVnaXN0
ZXJzIHNob3VsZCBiZSBzYXZlZCBhbmQgcmVzdW1lZCBpcyBvZmZlcmVkIGJ5ICgzKSBhbmQgKDQp
LgorICAgICAgICAgICBUaGVuLCBjbGlwIHRoZSBvcF9zYXZlIGFuZCBvcF9yZXN1bWUgdGhlbXNl
bHZlcy4gVGhleSBhcmUgZXhlY3V0ZWQgaW4gYSBiYXRjaCBtYW5uZXIgYnkgQnl0ZWNvZGVNb2Rp
ZmljYXRpb25TZXQuIFNpbmNlIHRoZXNlIG1vZGlmaWNhdGlvbiBjaGFuZ2VzIHRoZSBiYXNpYyBi
bG9ja3MKKyAgICAgICAgICAgYW5kIHNpemUgb2YgdW5saW5rZWQgaW5zdHJ1Y3Rpb25zLCBCeXRl
Y29kZU1vZGlmaWNhdGlvblNldCBhbHNvIHBlcmZvcm1zIHRoZSBvZmZzZXQgYWRqdXN0bWVudCBm
b3IgVW5saW5rZWRDb2RlQmxvY2suIFNvLCB0aGlzIEJ5dGVjb2RlTW9kaWZpY2F0aW9uU2V0IGlz
IHBlcmZvcm1lZAorICAgICAgICAgICBvbnRvIHRoZSBCeXRlY29kZUdyYXBoIGluc3RlYWQgb2Yg
Qnl0ZWNvZGVCYXNpY0Jsb2NrLiBUaGUgcmVhc29uIHdoeSB3ZSB0YWtlIHRoaXMgZGVzaWduIGlz
IHNpbXBsZTogd2UgZG9uJ3Qgd2FudCB0byBuZXdseSBjcmVhdGUgdGhlIGJhc2ljIGJsb2NrcyBh
bmQgb3Bjb2RlcworICAgICAgICAgICBmb3IgdGhpcyBlYXJseSBwaGFzZSBsaWtlIERGRy4gSW5z
dGVhZCwgd2UgcGVyZm9ybSB0aGUgbW9kaWZpY2F0aW9uIGFuZCBhZGp1c3RtZW50IHRvIHRoZSB1
bmxpbmtlZCBpbnN0cnVjdGlvbnMgYW5kIFVubGlua2VkQ29kZUJsb2NrIGluIGEgaW4tcGxhY2Ug
bWFubmVyLgorCisgICAgICAgIEFmdGVyIHRoYXQgcGhhc2UsIHRoZSBkYXRhIGZsb3cgb2YgdGhl
IGdlbmVyYXRvci1zYXZlZC1hbmQtcmVzdW1lZC1yZWdpc3RlcnMgYXJlIGV4cGxpY2l0bHkgcmVw
cmVzZW50ZWQgYnkgdGhlIGdldF9mcm9tX3Njb3BlIGFuZCBwdXRfdG9fc2NvcGUuCisgICAgICAg
IEFuZCBvcF9zYXZlIGFuZCBvcF9yZXN1bWUgYXJlIHJlbW92ZWQuIFNpbmNlIHdlIHVzZSB0aGUg
ZXhpc3RpbmcgYnl0ZWNvZGVzLCBERkcgYW5kIEZUTCBjaGFuZ2VzIGFyZSBub3QgbmVjZXNzYXJ5
LgorCisgICAgICAgIENvbXBpbGluZyBFUzYgZ2VuZXJhdG9ycyBpbiBERkcgYW5kIEZUTCBnaXZl
cyB1cyBzaWduaWZpY2FudCBwZXJmb3JtYW5jZSBpbXByb3ZlbWVudHMuCisgICAgICAgIEluIHg2
NCBMaW51eCBib3ggKGhhbmF5YW1hdGEpLCB0aGUgcmVzdWx0IG9mIEpTQ09ubHkgcG9ydCBpcyB0
aGUgZm9sbG93aW5ncy4KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBiYXNlbGluZSAgICAgICAgICAgICAgICAgICBwYXRjaAorCisgICAg
ICAgICAgICBnZW5lcmF0b3ItZmliICAgICAgICAgICAgICAgICAgICAgICAgICAxMDMuMjU0Myst
My45OTc4ICAgICBeICAgICAzNi40MTQ4Ky0wLjg0MDIgICAgICAgIF4gZGVmaW5pdGVseSAyLjgz
NTV4IGZhc3RlcgorICAgICAgICAgICAgZ2VuZXJhdG9yLXdpdGgtc2V2ZXJhbC10eXBlcyAgICAg
ICAgICAgMzQyLjUwMDkrLTI1LjE2MDIgICAgXiAgICAxMzIuMTcxMCstMTcuMTEyOSAgICAgICBe
IGRlZmluaXRlbHkgMi41OTEzeCBmYXN0ZXIKKyAgICAgICAgICAgIGdlbmVyYXRvci1zdW5zcGlk
ZXItYWNjZXNzLW5zaWV2ZSAgICAgICAgNS45ODE2Ky0wLjEwODIgICAgIF4gICAgICA1LjE3ODAr
LTAuMjM4OCAgICAgICAgXiBkZWZpbml0ZWx5IDEuMTU1MnggZmFzdGVyCisKKworICAgICAgICBJ
biB4NjQgT1MgWCBsYXB0b3AsIHRoZSByZXN1bHRzIG9mIEVTNlNhbXBsZUJlbmNoIGFyZSB0aGUg
Zm9sbG93aW5ncy4KKyAgICAgICAgVGhlIEVTNiBCYXNpYyBiZW5jaG1hcmsgc2hvdyB0aGF0IHRo
ZSBwZXJmb3JtYW5jZSBvZiB0aGUgcGF0Y2hlZCBvbmUgaXMgMzMlIGZhc3RlciB0aGFuIHRoZSBw
ZXJmb3JtYW5jZSBvZiB0aGUgYmFzZWxpbmUuCisKKyAgICAgICAgICAgIEJhc2VsaW5lOgorICAg
ICAgICAgICAgICAgIEdlb21ldHJpYyBNZWFuIFJlc3VsdDogMTgxLjgzIG1zIMKxIDQuODIgbXMK
KworICAgICAgICAgICAgICAgIEJlbmNobWFyayAgICBGaXJzdCBJdGVyYXRpb24gICAgICAgV29y
c3QgMiUgICAgICAgICAgICAgIFN0ZWFkeSBTdGF0ZQorICAgICAgICAgICAgICAgIEFpciAgICAg
ICAgICA3MC43NCBtcyDCsSA2LjU1IG1zICAgIDM0Ljc0IG1zIMKxIDEuNjUgbXMgICAgMjk4OS4w
NiBtcyDCsSAzNC40NSBtcworICAgICAgICAgICAgICAgIEJhc2ljICAgICAgICA0MC4wMyBtcyDC
sSAxLjk2IG1zICAgIDI4LjUwIG1zIMKxIDAuNjAgbXMgICAgNDM0Mi45MSBtcyDCsSA2NC4xMCBt
cworCisgICAgICAgICAgICBQYXRjaGVkOgorICAgICAgICAgICAgICAgIEdlb21ldHJpYyBNZWFu
IFJlc3VsdDogMTY4LjE0IG1zIMKxIDEuMzkgbXMKKworICAgICAgICAgICAgICAgIEJlbmNobWFy
ayAgICBGaXJzdCBJdGVyYXRpb24gICAgICAgV29yc3QgMiUgICAgICAgICAgICAgIFN0ZWFkeSBT
dGF0ZQorICAgICAgICAgICAgICAgIEFpciAgICAgICAgICA2OC42NyBtcyDCsSAwLjgyIG1zICAg
IDM1LjYyIG1zIMKxIDAuMzIgbXMgICAgMzA2NS44OSBtcyDCsSA1NS41OSBtcworICAgICAgICAg
ICAgICAgIEJhc2ljICAgICAgICAzOC42MSBtcyDCsSAxLjY1IG1zICAgIDIzLjk3IG1zIMKxIDAu
MzggbXMgICAgMzI2Mi40NiBtcyDCsSA3NC4xMiBtcworCisgICAgICAgICogQ01ha2VMaXN0cy50
eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiBidWlsdGlucy9HZW5lcmF0b3JQcm90b3R5cGUuanM6CisgICAgICAgIChnbG9i
YWxQcml2YXRlLmdlbmVyYXRvclJlc3VtZSk6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVC
YXNpY0Jsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVCYXNpY0Jsb2NrOjpjb21wdXRl
Qnl0ZWNvZGVCYXNpY0Jsb2Nrc0ludGVybmFsKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVCYXNp
Y0Jsb2NrOjpjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2Nrcyk6CisgICAgICAgIChKU0M6OmxpbmtC
bG9ja3MpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2Nr
cyk6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmg6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlQmFzaWNCbG9jazo6Ynl0ZWNvZGVPZmZzZXRzKToKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVCYXNpY0Jsb2NrOjpzdWNjZXNzb3JzKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVCYXNpY0Jsb2NrOjpwcmVkZWNlc3NvcnMpOgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUJhc2ljQmxvY2s6OmluZGV4KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVCYXNpY0Jsb2NrOjph
ZGRTdWNjZXNzb3IpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUJhc2ljQmxvY2s6OmFkZFByZWRl
Y2Vzc29yKToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5j
cHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbjo6Qnl0
ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRv
cmlmaWNhdGlvbjo6aXNNZXJnZUJsb2NrKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0
b3JpZmljYXRpb246OmlzU2F2ZUJsb2NrKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0
b3JpZmljYXRpb246OmdyYXBoKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3JpZmlj
YXRpb246OnN0b3JhZ2VGb3JHZW5lcmF0b3JMb2NhbCk6CisgICAgICAgIChKU0M6OkdlbmVyYXRv
ckxpdmVuZXNzQW5hbHlzaXM6OkdlbmVyYXRvckxpdmVuZXNzQW5hbHlzaXMpOgorICAgICAgICAo
SlNDOjpHZW5lcmF0b3JMaXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlTGl2ZW5lc3NEZWZzRm9yQnl0
ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JMaXZlbmVzc0FuYWx5c2lzOjpj
b21wdXRlTGl2ZW5lc3NVc2VzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpHZW5l
cmF0b3JMaXZlbmVzc0FuYWx5c2lzOjpzdGVwT3Zlckluc3RydWN0aW9uRm9yTGl2ZW5lc3MpOgor
ICAgICAgICAoSlNDOjpHZW5lcmF0b3JMaXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlTG9jYWxMaXZl
bmVzc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yTGl2ZW5lc3NB
bmFseXNpczo6Y29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCbG9jayk6CisgICAgICAgIChKU0M6Okdl
bmVyYXRvckxpdmVuZXNzQW5hbHlzaXM6OmdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQp
OgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JMaXZlbmVzc0FuYWx5c2lzOjpydW4pOgorICAgICAg
ICAoSlNDOjpSZXN1bWVkVmFyaWFibGVzQW5hbHlzaXM6OlJlc3VtZWRWYXJpYWJsZXNBbmFseXNp
cyk6CisgICAgICAgIChKU0M6OlJlc3VtZWRWYXJpYWJsZXNBbmFseXNpczo6Z2V0UmVzdW1lZFZh
cmlhYmxlc0luZm9BdEJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6UmVzdW1lZFZhcmlh
Ymxlc0FuYWx5c2lzOjpydW4pOgorICAgICAgICAoSlNDOjpTYXZlZFZhcmlhYmxlc0FuYWx5c2lz
OjpTYXZlZFZhcmlhYmxlc0FuYWx5c2lzKToKKyAgICAgICAgKEpTQzo6U2F2ZWRWYXJpYWJsZXNB
bmFseXNpczo6c3RlcE92ZXJJbnN0cnVjdGlvbkZvclNhdmVkVmFyaWFibGVzKToKKyAgICAgICAg
KEpTQzo6U2F2ZWRWYXJpYWJsZXNBbmFseXNpczo6Y29tcHV0ZUxvY2FsU2F2ZWRWYXJpYWJsZXNG
b3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OlNhdmVkVmFyaWFibGVzQW5hbHlzaXM6
OmNvbXB1dGVMb2NhbFNhdmVkVmFyaWFibGVzRm9yQmxvY2spOgorICAgICAgICAoSlNDOjpTYXZl
ZFZhcmlhYmxlc0FuYWx5c2lzOjpnZXRTYXZlZFZhcmlhYmxlc0luZm9BdEJ5dGVjb2RlT2Zmc2V0
KToKKyAgICAgICAgKEpTQzo6U2F2ZWRWYXJpYWJsZXNBbmFseXNpczo6cnVuKToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb246OnJ1bik6CisgICAgICAgIChKU0M6OnBl
cmZvcm1HZW5lcmF0b3JpZmljYXRpb24pOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlR2Vu
ZXJhdG9yaWZpY2F0aW9uLmg6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNJbmxpbmVzLmguCisgICAgICAgICogYnl0ZWNv
ZGUvQnl0ZWNvZGVHcmFwaC5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHcmFwaDo6
Y29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHcmFwaDo6YmFzaWNCbG9ja3MpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdyYXBoOjppbnN0cnVjdGlvbnMpOgorICAgICAgICAoSlND
OjpCeXRlY29kZUdyYXBoOjpiYXNpY0Jsb2Nrc0luUmV2ZXJzZU9yZGVyKToKKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVHcmFwaDo6YmxvY2tDb250YWluc0J5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHcmFwaDo6ZmluZEJhc2ljQmxvY2tGb3JCeXRlY29kZU9mZnNldCk6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR3JhcGg6OmZpbmRCYXNpY0Jsb2NrV2l0aExlYWRlck9mZnNl
dCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR3JhcGg8QmxvY2s+OjpCeXRlY29kZUdyYXBoKToK
KyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNp
cyk6CisgICAgICAgIChKU0M6OnN0ZXBPdmVySW5zdHJ1Y3Rpb24pOgorICAgICAgICAoSlNDOjpj
b21wdXRlTG9jYWxMaXZlbmVzc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Y29t
cHV0ZUxvY2FsTGl2ZW5lc3NGb3JCbG9jayk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlTGl2ZW5l
c3NBbmFseXNpczo6cnVuTGl2ZW5lc3NGaXhwb2ludCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
TGl2ZW5lc3NBbmFseXNpczo6Z2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29kZU9mZnNldCk6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0ZUZ1bGxMaXZlbmVzcyk6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0ZUtpbGxzKToK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpkdW1wUmVzdWx0cyk6Cisg
ICAgICAgIChKU0M6OmlzVmFsaWRSZWdpc3RlckZvckxpdmVuZXNzKTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6Z2V0TGVhZGVyT2Zmc2V0Rm9yQmFzaWNCbG9jayk6IERlbGV0ZWQuCisgICAgICAg
IChKU0M6OmZpbmRCYXNpY0Jsb2NrV2l0aExlYWRlck9mZnNldCk6IERlbGV0ZWQuCisgICAgICAg
IChKU0M6OmJsb2NrQ29udGFpbnNCeXRlY29kZU9mZnNldCk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OmZpbmRCYXNpY0Jsb2NrRm9yQnl0ZWNvZGVPZmZzZXQpOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGUpOiBEZWxldGVkLgorICAgICAg
ICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5oOgorICAgICAgICAqIGJ5dGVj
b2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGluZXMuaDoKKyAgICAgICAgKEpTQzo6aXNW
YWxpZFJlZ2lzdGVyRm9yTGl2ZW5lc3MpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTW9k
aWZpY2F0aW9uU2V0LmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkJ5dGVjb2RlTW9kaWZpY2F0
aW9uU2V0OjphZGp1c3RPZmZzZXQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZU1vZGlmaWNhdGlv
blNldDo6YXBwbHlNb2RpZmljYXRpb24pOgorICAgICAgICAoSlNDOjpCeXRlY29kZU1vZGlmaWNh
dGlvblNldDo6ZXhlY3V0ZSk6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVNb2RpZmljYXRp
b25TZXQuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkJ5dGVjb2RlTW9kaWZpY2F0aW9uU2V0OjpC
eXRlY29kZU1vZGlmaWNhdGlvblNldCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlTW9kaWZpY2F0
aW9uU2V0OjppbnNlcnQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZU1vZGlmaWNhdGlvblNldDo6
cmVtb3ZlQnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZU1vZGlmaWNhdGlvblNldDo6
Z3JhcGgpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmg6CisgICAgICAgIChK
U0M6OmNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpjb21wdXRl
RGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3Bw
OgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjpoYW5kbGVyRm9ySW5kZXgpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6
OmxpdmVuZXNzQW5hbHlzaXNTbG93KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wQnl0
ZWNvZGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnNocmlua1RvRml0KTog
RGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6
Q29kZUJsb2NrOjppc0NvbnN0YW50UmVnaXN0ZXJJbmRleCk6CisgICAgICAgIChKU0M6OkNvZGVC
bG9jazo6bGl2ZW5lc3NBbmFseXNpcyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bGl2ZUNh
bGxlZUxvY2Fsc0F0WWllbGQpOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2RlL0hhbmRsZXJJ
bmZvLmg6CisgICAgICAgIChKU0M6OkhhbmRsZXJJbmZvQmFzZTo6aGFuZGxlckZvckluZGV4KToK
KyAgICAgICAgKiBieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHMuY3BwOgorICAgICAgICAoSlND
OjpnZXRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Y29tcHV0
ZVByZWNpc2VKdW1wVGFyZ2V0c0ludGVybmFsKToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZVByZWNp
c2VKdW1wVGFyZ2V0cyk6CisgICAgICAgIChKU0M6OnJlY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0
cyk6CisgICAgICAgIChKU0M6OmZpbmRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAg
ICAgICAgKiBieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHMuaDoKKyAgICAgICAgKiBieXRlY29k
ZS9VbmxpbmtlZENvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2Nr
OjpoYW5kbGVyRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVC
bG9jazo6aGFuZGxlckZvckluZGV4KToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6
OmFwcGx5TW9kaWZpY2F0aW9uKToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9j
ay5oOgorICAgICAgICAoSlNDOjpVbmxpbmtlZFN0cmluZ0p1bXBUYWJsZTo6b2Zmc2V0Rm9yVmFs
dWUpOgorICAgICAgICAqIGJ5dGVjb2RlL1ZpcnR1YWxSZWdpc3Rlci5oOgorICAgICAgICAqIGJ5
dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
R2VuZXJhdG9yOjpnZW5lcmF0ZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpC
eXRlY29kZUdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
Q29tcGxleFBvcFNjb3Blcyk6CisgICAgICAgIChKU0M6OnByZXBhcmVKdW1wVGFibGVGb3JTdHJp
bmdTd2l0Y2gpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFlpZWxkUG9p
bnQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFNhdmUpOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlc3VtZSk6CisgICAgICAgICogYnl0ZWNv
bXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJh
dG9yOjpnZW5lcmF0b3JGcmFtZVJlZ2lzdGVyKToKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9u
cy5jcHA6CisgICAgICAgICogZ2VuZXJhdGUtYnl0ZWNvZGUtZmlsZXM6CisgICAgICAgICogaW50
ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlNDOjpmaW5kRXhjZXB0aW9uSGFu
ZGxlcik6CisgICAgICAgIChKU0M6OkdldENhdGNoSGFuZGxlckZ1bmN0b3I6Om9wZXJhdG9yKCkp
OgorICAgICAgICAoSlNDOjpVbndpbmRGdW5jdG9yOjpvcGVyYXRvcigpKToKKyAgICAgICAgKiBp
bnRlcnByZXRlci9JbnRlcnByZXRlci5oOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJl
dGVySW5saW5lcy5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
UHJlY2lzZUp1bXBUYXJnZXRzLmguCisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpnZXRPcGNv
ZGVJRCk6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0
ZUNvbXBpbGVNYWluUGFzcyk6IERlbGV0ZWQuCisgICAgICAgICogaml0L0pJVC5oOgorICAgICAg
ICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3NhdmUp
OiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcmVzdW1lKTogRGVsZXRlZC4K
KyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbToKKyAgICAgICAgKiBwYXJz
ZXIvUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlSW5u
ZXIpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VHZW5lcmF0b3JGdW5j
dGlvblNvdXJjZUVsZW1lbnRzKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OmNy
ZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuaDoKKyAg
ICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OlNMT1df
UEFUSF9ERUNMKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5o
OgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJhdG9yRnJhbWUuY3BwOiBSZW1vdmVkLgorICAgICAg
ICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6R2VuZXJhdG9yRnJhbWUpOiBEZWxldGVkLgorICAgICAg
ICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6ZmluaXNoQ3JlYXRpb24pOiBEZWxldGVkLgorICAgICAg
ICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlU3RydWN0dXJlKTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OmNyZWF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
OkdlbmVyYXRvckZyYW1lOjpzYXZlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9y
RnJhbWU6OnJlc3VtZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjp2
aXNpdENoaWxkcmVuKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0dlbmVyYXRvckZyYW1l
Lmg6IFJlbW92ZWQuCisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpsb2NhbHMpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6bG9jYWxBdCk6IERlbGV0ZWQuCisg
ICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpvZmZzZXRPZkxvY2Fscyk6IERlbGV0ZWQuCisg
ICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjphbGxvY2F0aW9uU2l6ZUZvckxvY2Fscyk6IERl
bGV0ZWQuCisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpWTSk6
IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9WTS5oOgorICAgICAgICAqIHRlc3RzL3N0cmVz
cy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQtYXJyYXkuanM6IEFkZGVkLgorICAgICAgICAoZmliKToK
KyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwtYW5kLW9iamVjdC5qczog
QWRkZWQuCisgICAgICAgIChmaWIpOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9nZW5lcmF0b3It
ZmliLWZ0bC1hbmQtc3RyaW5nLmpzOiBBZGRlZC4KKyAgICAgICAgKGZpYik6CisgICAgICAgICog
dGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLmpzOiBBZGRlZC4KKyAgICAgICAgKGZpYik6
CisgICAgICAgICogdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1mcmFtZS1lbXB0eS5qczogQWRkZWQu
CisgICAgICAgIChzaG91bGRUaHJvdyk6CisgICAgICAgIChzaG91bGRUaHJvdy5maWIpOgorICAg
ICAgICAqIHRlc3RzL3N0cmVzcy9nZW5lcmF0b3ItcmVkdWNlZC1zYXZlLXBvaW50LXB1dC10by1z
Y29wZS5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgIChnZW4pOgorICAg
ICAgICAqIHRlc3RzL3N0cmVzcy9nZW5lcmF0b3ItdHJhbnNmZXItcmVnaXN0ZXItYmV5b25kLW11
dGlwbGUteWllbGRzLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKGdl
bik6CisKIDIwMTYtMDctMTkgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAg
ICAgICBUaGUgZGVmYXVsdCB0ZXN0aW5nIG1vZGUgc2hvdWxkIG5vdCBpbnZvbHZlIGRpc2FibGlu
ZyB0aGUgRlRMIEpJVApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V1RGL0NoYW5nZUxvZwppbmRleCA2M2MzZmNkYzg2NDNjNDZjZTczMThkZGU0YmQzNDEzOTA2NGM4
NGVkLi4wYjllZjc3NDNkN2VmZjVhNzEwY2QyZjA3MmRjYTZjZDVjNTQwNDE0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDEzIEBACisyMDE2LTA3LTIwICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwu
Y29tPgorCisgICAgICAgIFtERkddW0ZUTF0gSW1wbGVtZW50IEVTNiBHZW5lcmF0b3JzIGluIERG
RyAvIEZUTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTUyNzIzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiB3dGYvRmFzdEJpdFZlY3Rvci5oOgorICAgICAgICAoV1RGOjpGYXN0Qml0VmVjdG9yOjpGYXN0
Qml0VmVjdG9yKToKKwogMjAxNi0wNy0xOCAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBw
bGUuY29tPgogCiAgICAgICAgIFdlYktpdCBuaWdodGx5IGZhaWxzIHRvIGJ1aWxkIG9uIG1hY09T
IFNpZXJyYQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDM1OWVmYzdjZWEy
MTdhYTQ3NzM3YTc2MWQ2Y2ExNmJjMDEwZmM5OWIuLjFjZjRkZmYzYmM4NjM3NmNhMjQ1MDgwOWRj
YTI1ODE3MzZhMmJmMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxp
c3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTE3
OCw2ICsxNzgsOCBAQCBzZXQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIGJ5dGVjb2RlL0Fy
cmF5QWxsb2NhdGlvblByb2ZpbGUuY3BwCiAgICAgYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmNwcAog
ICAgIGJ5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5jcHAKKyAgICBieXRlY29kZS9CeXRlY29k
ZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHAKKyAgICBieXRlY29kZS9CeXRlY29kZU1vZGlmaWNhdGlv
blNldC5jcHAKICAgICBieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmNwcAogICAg
IGJ5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAKICAgICBieXRlY29kZS9DYWxs
RWRnZS5jcHAKQEAgLTY1Niw3ICs2NTgsNiBAQCBzZXQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwog
ICAgIHJ1bnRpbWUvRnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlLmNwcAogICAgIHJ1bnRpbWUvRnVu
Y3Rpb25Qcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9GdW5jdGlvblJhcmVEYXRhLmNwcAotICAg
IHJ1bnRpbWUvR2VuZXJhdG9yRnJhbWUuY3BwCiAgICAgcnVudGltZS9HZW5lcmF0b3JGdW5jdGlv
bkNvbnN0cnVjdG9yLmNwcAogICAgIHJ1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUu
Y3BwCiAgICAgcnVudGltZS9HZW5lcmF0b3JQcm90b3R5cGUuY3BwCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IDFlZmMyMTY5Nzc0OGJiOGJmYzUwYTY5NDgyOTEzNGIzNzJlYTgyOWQu
LjI1ODQ4YTYzZWRkZWE5NWVkNDc1MzRjMjg4OWI0ODU0ZTQ5YWJlM2IgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC0xMjUwLDggKzEyNTAsNiBAQAogCQk3MDlGQjg2QzFBRTMzNUM2
MDAzOUQwNjkgLyogV2Vha1NldFByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNzA5RkI4NjYxQUUzMzVDNjAwMzlEMDY5IC8qIFdlYWtTZXRQ
cm90b3R5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk3MEIwQTlEMTFBOUI2NjQ2MDAwMTMwNkEgLyogUnVudGltZUZsYWdzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEIwQTlEMDFBOUI2NjIwMDAw
MTMwNkEgLyogUnVudGltZUZsYWdzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJNzBCNzkxOTExQzAyNEExMzAwMjQ4MUUyIC8qIFNvdXJjZUNvZGVL
ZXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwQjc5
MThFMUMwMjQ0QzkwMDI0ODFFMiAvKiBTb3VyY2VDb2RlS2V5LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNzBCNzkxOTIxQzAyNEEyMzAwMjQ4MUUy
IC8qIEdlbmVyYXRvckZyYW1lLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDcwQjc5MTgzMUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGcmFtZS5j
cHAgKi87IH07Ci0JCTcwQjc5MTkzMUMwMjRBMjgwMDI0ODFFMiAvKiBHZW5lcmF0b3JGcmFtZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBCNzkxODQx
QzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZyYW1lLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzBCNzkxOTQxQzAyNEEyODAwMjQ4MUUyIC8q
IEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBCNzkxODUxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVy
YXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwICovOyB9OwogCQk3MEI3OTE5NTFDMDI0QTI4MDAy
NDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBCNzkxODYxQzAyNDQzMjAwMjQ4MUUyIC8q
IEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MEI3OTE5NjFDMDI0QTI4MDAyNDgxRTIgLyogR2Vu
ZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNzBCNzkxODcxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1
bmN0aW9uUHJvdG90eXBlLmNwcCAqLzsgfTsKQEAgLTIwMjUsNiArMjAyMywxMSBAQAogCQlFMThF
M0E1OTBERjkyNzhDMDBEOTBCMzQgLyogVk0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTE4RTNBNTcwREY5Mjc4QzAwRDkwQjM0IC8qIFZNLmNwcCAq
LzsgfTsKIAkJRTMxOENCQzAxQjhBRUY1MTAwQTI5MjlEIC8qIEpTTW9kdWxlTmFtZXNwYWNlT2Jq
ZWN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUz
MThDQkJFMUI4QUVGNTEwMEEyOTI5RCAvKiBKU01vZHVsZU5hbWVzcGFjZU9iamVjdC5jcHAgKi87
IH07CiAJCUUzMThDQkMxMUI4QUVGNTEwMEEyOTI5RCAvKiBKU01vZHVsZU5hbWVzcGFjZU9iamVj
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMxOENC
QkYxQjhBRUY1MTAwQTI5MjlEIC8qIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTMyOERBRTcxRDM4RDAw
NDAwMUEyNTI5IC8qIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzRDI2NDI2MUQzOEMwNDIwMDBCRTE3
NCAvKiBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHAgKi87IH07CisJCUUzMjhEQUU4MUQz
OEQwMDUwMDFBMjUyOSAvKiBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNEMjY0MjcxRDM4QzA0MjAwMEJF
MTc0IC8qIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTMyOERBRTkxRDM4RDAwNTAwMUEyNTI5IC8q
IEJ5dGVjb2RlR3JhcGguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEUzRDI2NDI4MUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRlY29kZUdyYXBoLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTMyOERBRUExRDM4
RDAwNTAwMUEyNTI5IC8qIEJ5dGVjb2RlTW9kaWZpY2F0aW9uU2V0LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzRDI2NDI5MUQzOEMwNDIwMDBCRTE3
NCAvKiBCeXRlY29kZU1vZGlmaWNhdGlvblNldC5jcHAgKi87IH07CisJCUUzMjhEQUVCMUQzOEQw
MDUwMDFBMjUyOSAvKiBCeXRlY29kZU1vZGlmaWNhdGlvblNldC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNEMjY0MkExRDM4QzA0MjAwMEJFMTc0IC8q
IEJ5dGVjb2RlTW9kaWZpY2F0aW9uU2V0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTMzNjM3QTUxQjYzMjIwMjAwRUUwODQwIC8qIFJlZmxlY3RP
YmplY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTMzNjM3QTMxQjYzMjIwMjAwRUUwODQwIC8qIFJlZmxlY3RPYmplY3QuY3BwICovOyB9OwogCQlF
MzM2MzdBNjFCNjMyMjAyMDBFRTA4NDAgLyogUmVmbGVjdE9iamVjdC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMzNjM3QTQxQjYzMjIwMjAwRUUwODQw
IC8qIFJlZmxlY3RPYmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlFMzNCM0UyNjFCN0FCRDc1MDA0OERCMkUgLyogSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uT2JqZWN0Lmx1dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTMzQjNFMjUxQjdBQkQ3NTAwNDhEQjJFIC8qIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbk9iamVjdC5sdXQuaCAqLzsgfTsKQEAgLTIwNDksNiArMjA1Miw3IEBACiAJCUUzNzk0
RTc1MUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFseXplci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzc5NEU3MzFCNzdFQjk3MDA1NTQzQUUg
LyogTW9kdWxlQW5hbHl6ZXIuY3BwICovOyB9OwogCQlFMzc5NEU3NjFCNzdFQjk3MDA1NTQzQUUg
LyogTW9kdWxlQW5hbHl6ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEUzNzk0RTc0MUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFseXplci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzOTYzQ0VF
MUI3M0Y3NTAwMEVCNENFNSAvKiBOb2Rlc0FuYWx5emVNb2R1bGUuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5NjNDRUMxQjczRjc1MDAwRUI0Q0U1
IC8qIE5vZGVzQW5hbHl6ZU1vZHVsZS5jcHAgKi87IH07CisJCUUzOUQ0NUY1MUQzOTAwNTYwMEIz
QjM3NyAvKiBJbnRlcnByZXRlcklubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEUzOUQ5RDg0MUQzOTAwMDYwMDY2NzI4MiAvKiBJbnRlcnByZXRl
cklubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQlFMzlEQTRBNjFCN0U4QjdDMDA4NEYzM0EgLyogSlNNb2R1bGVSZWNvcmQuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5REE0QTQxQjdFOEI3
QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmNwcCAqLzsgfTsKIAkJRTM5REE0QTcxQjdFOEI3
QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFMzlEQTRBNTFCN0U4QjdDMDA4NEYzM0EgLyogSlNNb2R1bGVS
ZWNvcmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlFM0QyMzlDODFCODI5QzFDMDBCQkVGNjcgLyogSlNNb2R1bGVFbnZpcm9ubWVudC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0QyMzlDNjFCODI5
QzFDMDBCQkVGNjcgLyogSlNNb2R1bGVFbnZpcm9ubWVudC5jcHAgKi87IH07CkBAIC0zNDQ2LDgg
KzM0NTAsNiBAQAogCQk3MDlGQjg2NTFBRTMzNUM2MDAzOUQwNjkgLyogV2Vha1NldFByb3RvdHlw
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWFrU2V0UHJvdG90
eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzA5RkI4NjYxQUUzMzVDNjAw
MzlEMDY5IC8qIFdlYWtTZXRQcm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV2Vha1NldFByb3RvdHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
MEIwQTlEMDFBOUI2NjIwMDAwMTMwNkEgLyogUnVudGltZUZsYWdzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFJ1bnRpbWVGbGFncy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQk3MEI3OTE4MzFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnJhbWUuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR2VuZXJhdG9yRnJhbWUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3MEI3OTE4NDFDMDI0NDMyMDAyNDgxRTIgLyog
R2VuZXJhdG9yRnJhbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2VuZXJh
dG9yRnJhbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzBCNzkxODUxQzAyNDQz
MjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcwQjc5MTg2MUMwMjQ0MzIwMDI0ODFF
MiAvKiBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNzBCNzkxODcxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1
bmN0aW9uUHJvdG90eXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTQyODgsMTAgKzQyOTAsMTYgQEAKIAkJRTM3OTRFNzMxQjc3RUI5NzAwNTU0M0FFIC8q
IE1vZHVsZUFuYWx5emVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IE1vZHVsZUFuYWx5emVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM3OTRF
NzQxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IE1vZHVsZUFuYWx5emVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUUzOTYzQ0VDMUI3M0Y3NTAwMEVCNENFNSAvKiBOb2Rlc0FuYWx5emVNb2R1bGUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTm9kZXNBbmFseXplTW9kdWxl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM5RDlEODQxRDM5MDAwNjAwNjY3
MjgyIC8qIEludGVycHJldGVySW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBJbnRlcnByZXRlcklubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RTM5REE0QTQxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTW9kdWxlUmVjb3JkLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM5REE0QTUxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxl
UmVjb3JkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTW9kdWxlUmVjb3Jk
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzRDIzOUM2MUI4MjlDMUMwMEJCRUY2
NyAvKiBKU01vZHVsZUVudmlyb25tZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTTW9kdWxlRW52aXJvbm1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlFM0QyMzlDNzFCODI5QzFDMDBCQkVGNjcgLyogSlNNb2R1bGVFbnZpcm9ubWVudC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU01vZHVsZUVudmlyb25tZW50Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzRDI2NDI2MUQzOEMwNDIwMDBCRTE3NCAv
KiBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUUzRDI2NDI3MUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRlY29kZUdl
bmVyYXRvcmlmaWNhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCeXRl
Y29kZUdlbmVyYXRvcmlmaWNhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlF
M0QyNjQyODFEMzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNvZGVHcmFwaC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBCeXRlY29kZUdyYXBoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUUzRDI2NDI5MUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRlY29kZU1vZGlmaWNhdGlv
blNldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCeXRlY29kZU1v
ZGlmaWNhdGlvblNldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzRDI2NDJB
MUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRlY29kZU1vZGlmaWNhdGlvblNldC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBCeXRlY29kZU1vZGlmaWNhdGlvblNldC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlFM0VGODg3MjFCNjZERjIzMDAzRjI2Q0IgLyogSlNQcm9w
ZXJ0eU5hbWVJdGVyYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRTNFRjg4NzMxQjY2REYyMzAwM0YyNkNCIC8qIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNDlEQzE0OTEyRUYyNjFBMDAxODRBMUYg
LyogU291cmNlUHJvdmlkZXJDYWNoZUl0ZW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU291cmNlUHJvdmlkZXJDYWNoZUl0ZW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTUwMDUsNiArNTAxMyw3IEBACiAJCTE0MjlENzdBMEVEMjBENzMwMEI4OTYxOSAvKiBp
bnRlcnByZXRlciAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJ
CQkJRTM5RDlEODQxRDM5MDAwNjAwNjY3MjgyIC8qIEludGVycHJldGVySW5saW5lcy5oICovLAog
CQkJCTBGNTVGMEYxMTREMTA2MzYwMEFDNzY0OSAvKiBBYnN0cmFjdFBDLmNwcCAqLywKIAkJCQkw
RjU1RjBGMjE0RDEwNjM2MDBBQzc2NDkgLyogQWJzdHJhY3RQQy5oICovLAogCQkJCTE0MjlEODVC
MEVEMjE4RTkwMEI4OTYxOSAvKiBDTG9vcFN0YWNrLmNwcCAqLywKQEAgLTU2NzYsOCArNTY4NSw2
IEBACiAJCQkJRjY5MkE4NUQwMjU1NTk3RDAxRkY2MEY3IC8qIEZ1bmN0aW9uUHJvdG90eXBlLmgg
Ki8sCiAJCQkJNjJEMkQzOEQxQURGMTAzRjAwMDIwNkMxIC8qIEZ1bmN0aW9uUmFyZURhdGEuY3Bw
ICovLAogCQkJCTYyRDJEMzhFMUFERjEwM0YwMDAyMDZDMSAvKiBGdW5jdGlvblJhcmVEYXRhLmgg
Ki8sCi0JCQkJNzBCNzkxODMxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZyYW1lLmNwcCAq
LywKLQkJCQk3MEI3OTE4NDFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnJhbWUuaCAqLywK
IAkJCQk3MEI3OTE4NTFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1
Y3Rvci5jcHAgKi8sCiAJCQkJNzBCNzkxODYxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1
bmN0aW9uQ29uc3RydWN0b3IuaCAqLywKIAkJCQk3MEI3OTE4NzFDMDI0NDMyMDAyNDgxRTIgLyog
R2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3BwICovLApAQCAtNjU1OSw2ICs2NTY2LDExIEBA
CiAJCTk2OUEwNzhGMEVEMUQzQUUwMEYxRjY4MSAvKiBieXRlY29kZSAqLyA9IHsKIAkJCWlzYSA9
IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJRTNEMjY0MjYxRDM4QzA0MjAwMEJFMTc0
IC8qIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcCAqLywKKwkJCQlFM0QyNjQyNzFEMzhD
MDQyMDAwQkUxNzQgLyogQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uaCAqLywKKwkJCQlFM0Qy
NjQyODFEMzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNvZGVHcmFwaC5oICovLAorCQkJCUUzRDI2NDI5
MUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRlY29kZU1vZGlmaWNhdGlvblNldC5jcHAgKi8sCisJCQkJ
RTNEMjY0MkExRDM4QzA0MjAwMEJFMTc0IC8qIEJ5dGVjb2RlTW9kaWZpY2F0aW9uU2V0LmggKi8s
CiAJCQkJNTM3MEI0RjMxQkYyNUVBMjAwNUM0MEZDIC8qIEFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0
eVZhbHVlV2F0Y2hwb2ludEJhc2UuY3BwICovLAogCQkJCTUzNzBCNEY0MUJGMjVFQTIwMDVDNDBG
QyAvKiBBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnRCYXNlLmggKi8sCiAJ
CQkJMEY4MzM1QjQxNjM5QzFFMzAwMTQ0M0I1IC8qIEFycmF5QWxsb2NhdGlvblByb2ZpbGUuY3Bw
ICovLApAQCAtNzExMiw2ICs3MTI0LDcgQEAKIAkJCQkwRkVDODUyRDFCREFDREFDMDA4MEZGNzQg
LyogQjNQcm9jZWR1cmVJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVDODVCRDFCRTE0
NjJGMDA4MEZGNzQgLyogQjNSZWR1Y2VTdHJlbmd0aC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZF
Qzg1MzExQkRBQ0RBQzAwODBGRjc0IC8qIEIzU3RhY2ttYXBTcGVjaWFsLmggaW4gSGVhZGVycyAq
LywKKwkJCQlFMzI4REFFODFEMzhEMDA1MDAxQTI1MjkgLyogQnl0ZWNvZGVHZW5lcmF0b3JpZmlj
YXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUM4NTM1MUJEQUNEQUMwMDgwRkY3NCAvKiBC
M1Nsb3RCYXNlVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUM4NTM2MUJEQUNEQUMwMDgw
RkY3NCAvKiBCM1N1Y2Nlc3NvckNvbGxlY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUM4
NTM4MUJEQUNEQUMwMDgwRkY3NCAvKiBCM1N3aXRjaENhc2UuaCBpbiBIZWFkZXJzICovLApAQCAt
NzM3NCw3ICs3Mzg3LDYgQEAKIAkJCQlBNzM3ODEwRTE3OTlFQTJFMDA4MTc1MzMgLyogREZHTmF0
dXJhbExvb3BzLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkVDQTNFQTEzMkRFRjFDMDAyQjJBRDcg
LyogREZHTm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGQjkyMUIxNkQwMkYwMTAwNTVBNURC
IC8qIERGR05vZGVBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovLAotCQkJCTcwQjc5MTkzMUMwMjRB
MjgwMDI0ODFFMiAvKiBHZW5lcmF0b3JGcmFtZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZBNTgx
QkIxNTBFOTUzMDAwQjlBMkQ5IC8qIERGR05vZGVGbGFncy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEYzMDBCNzgxOEFCMDUxMTAwQTZENzJFIC8qIERGR05vZGVPcmlnaW4uaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGQTU4MUJDMTUwRTk1MzAwMEI5QTJEOSAvKiBERkdOb2RlVHlwZS5oIGluIEhlYWRl
cnMgKi8sCkBAIC03Mzg5LDYgKzc0MDEsNyBAQAogCQkJCTBGRDhBMzI2MTdENTFGNTcwMENBMkM0
MCAvKiBERkdPU1JFbnRyeXBvaW50Q3JlYXRpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEZDMDk3NkExNDY4QTZGNzAwQ0YyNDQyIC8qIERGR09TUkV4aXQuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGMjM1QkVDMTcxNzhFNzMwMDY5MEM3RiAvKiBERkdPU1JFeGl0QmFzZS5oIGluIEhlYWRl
cnMgKi8sCisJCQkJRTM5RDQ1RjUxRDM5MDA1NjAwQjNCMzc3IC8qIEludGVycHJldGVySW5saW5l
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGQjkyMUMxNkQwMkYxMTAwNTVBNURCIC8qIERGR09T
UkV4aXRDb21waWxhdGlvbkluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQzA5NzcxMTQ2OTNB
RjUwMENGMjQ0MiAvKiBERkdPU1JFeGl0Q29tcGlsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
NzAyNUFBMTcxNEIwRkMwMDM4MkMwRSAvKiBERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uaCBpbiBI
ZWFkZXJzICovLApAQCAtNzY0Nyw2ICs3NjYwLDcgQEAKIAkJCQlFMzNCM0UyNjFCN0FCRDc1MDA0
OERCMkUgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0Lmx1dC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTUzMjQzOEMxODU2ODMzNTAwMkVENjkyIC8qIEluc3BlY3RvclByb3RvY29sT2Jq
ZWN0cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU1RDkzQUMxODUxNEY3OTAwNDAwREVEIC8qIElu
c3BlY3RvclByb3RvY29sVHlwZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzMjhEQUVCMUQzOEQw
MDUwMDFBMjUyOSAvKiBCeXRlY29kZU1vZGlmaWNhdGlvblNldC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTUwRTRCNjIxODgwOURENTAwNjhBNDZEIC8qIEluc3BlY3RvclJ1bnRpbWVBZ2VudC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQTU5M0NGODMxODQwMzc3MTAwQkZDRTI3IC8qIEluc3BlY3RvclZh
bHVlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTY5QTA3OTkwRUQxRDNBRTAwRjFGNjgxIC8qIElu
c3RydWN0aW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTc3NzUsNiArNzc4OSw3IEBACiAJCQkJRTMz
RjUwODExQjg0MjlBNDAwNDEzODU2IC8qIEpTSW50ZXJuYWxQcm9taXNlLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjYxODMyQTFDNDVCRjA3MDA3MjQ1MEIgLyogQWlyQ0NhbGxpbmdDb252ZW50aW9u
LmggaW4gSGVhZGVycyAqLywKIAkJCQlFMzNGNTA3OTFCODQyMjU3MDA0MTM4NTYgLyogSlNJbnRl
cm5hbFByb21pc2VDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTMyOERBRTkxRDM4
RDAwNTAwMUEyNTI5IC8qIEJ5dGVjb2RlR3JhcGguaCBpbiBIZWFkZXJzICovLAogCQkJCUUzM0Y1
MDg3MUI4NDQ5RUYwMDQxMzg1NiAvKiBKU0ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yLmx1dC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJRTMzRjUwODUxQjg0MzdBMDAwNDEzODU2IC8qIEpTSW50ZXJu
YWxQcm9taXNlRGVmZXJyZWQuaCBpbiBIZWFkZXJzICovLAogCQkJCUUzM0Y1MDc1MUI4NDIxQzAw
MDQxMzg1NiAvKiBKU0ludGVybmFsUHJvbWlzZVByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCkBA
IC04NzE2LDYgKzg3MzEsNyBAQAogCQkJCTE0N0YzOUJEMTA3RUMzNzYwMDQyN0E0OCAvKiBBcmdM
aXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNzQzQkFBMTZCODgyNDkwMDlGOTI3NyAvKiBB
Uk02NERpc2Fzc2VtYmxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NkQzQjJDMzEwMTU2QkRF
MDAyODY1RTcgLyogQVJNQXNzZW1ibGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUUzMjhEQUU3
MUQzOEQwMDQwMDFBMjUyOSAvKiBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk2NUMwMjg1MDE3MTc5NUUyMDAzNTFFMzUgLyogQVJNdjdEaXNhc3NlbWJs
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNjVDMDI4NUMxNzE3OTY2ODAwMzUxRTM1IC8qIEFS
TXY3RE9wY29kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjgzMzVCNzE2MzlDMUU2MDAxNDQz
QjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTkwNDks
NiArOTA2NSw3IEBACiAJCQkJMEYyNUYxQjExODE2MzVGMzAwNTIyRjM5IC8qIEZUTFNsb3dQYXRo
Q2FsbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjMzOERGMTFCRTkzQUQxMDAxM0M4OEYgLyog
QjNTdGFja21hcFZhbHVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMjVGMUIzMTgxNjM1RjMw
MDUyMkYzOSAvKiBGVExTbG93UGF0aENhbGxLZXkuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTMy
OERBRUExRDM4RDAwNTAwMUEyNTI5IC8qIEJ5dGVjb2RlTW9kaWZpY2F0aW9uU2V0LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTQzMTlEQTAzMUMxQkU0MEEwMDFEMjYwQiAvKiBCM0xvd2VyTWFjcm9z
QWZ0ZXJPcHRpbWl6YXRpb25zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRUEwQTE2MTcwNkJC
OTAwMEJCNzIyQyAvKiBGVExTdGF0ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjIzNUJFMTE3
MTc4RTFDMDA2OTBDN0YgLyogRlRMVGh1bmtzLmNwcCBpbiBTb3VyY2VzICovLApAQCAtOTQ1Miw3
ICs5NDY5LDYgQEAKIAkJCQk3OUVFMEJGRjFCNEFGQjg1MDAwMzg1QzkgLyogVmFyaWFibGVFbnZp
cm9ubWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjZDNzM1MDFBQzlGOTlGMDBCRTE2ODIg
LyogVmFyaWFibGVXcml0ZUZpcmVEZXRhaWwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFMDUw
MkMxQUE5MDk1NjAwRDMzQjMzIC8qIFZhck9mZnNldC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk3
MEI3OTE5MjFDMDI0QTIzMDAyNDgxRTIgLyogR2VuZXJhdG9yRnJhbWUuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMEYyMEMyNTkxQTgwMTNBQjAwREEzMjI5IC8qIFZpcnR1YWxSZWdpc3Rlci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlFMThFM0E1OTBERjkyNzhDMDBEOTBCMzQgLyogVk0uY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJRkU1OTMyQTcxODNDNUEyNjAwQTFFQ0NDIC8qIFZNRW50cnlTY29w
ZS5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
dWlsdGlucy9HZW5lcmF0b3JQcm90b3R5cGUuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVp
bHRpbnMvR2VuZXJhdG9yUHJvdG90eXBlLmpzCmluZGV4IDNjMTQwNjg3ZGZjN2UwMGVmZTkxYWU4
MGIyYWM2NzZmYTliZjQ4ZjQuLjQ5OWRiZDM5MmU4MzEzZGNkZDg2ZWM4YzE2MDU2OWQ3ZDZmNTQ5
YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9HZW5lcmF0b3JQ
cm90b3R5cGUuanMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0dlbmVyYXRv
clByb3RvdHlwZS5qcwpAQCAtNTEsNyArNTEsNyBAQCBmdW5jdGlvbiBnZW5lcmF0b3JSZXN1bWUo
Z2VuZXJhdG9yLCBzZW50VmFsdWUsIHJlc3VtZU1vZGUpCiAgICAgfSBlbHNlIHsKICAgICAgICAg
dHJ5IHsKICAgICAgICAgICAgIGdlbmVyYXRvci5AZ2VuZXJhdG9yU3RhdGUgPSBAR2VuZXJhdG9y
U3RhdGVFeGVjdXRpbmc7Ci0gICAgICAgICAgICB2YWx1ZSA9IGdlbmVyYXRvci5AZ2VuZXJhdG9y
TmV4dC5AY2FsbChnZW5lcmF0b3IuQGdlbmVyYXRvclRoaXMsIGdlbmVyYXRvciwgc3RhdGUsIHNl
bnRWYWx1ZSwgcmVzdW1lTW9kZSk7CisgICAgICAgICAgICB2YWx1ZSA9IGdlbmVyYXRvci5AZ2Vu
ZXJhdG9yTmV4dC5AY2FsbChnZW5lcmF0b3IuQGdlbmVyYXRvclRoaXMsIGdlbmVyYXRvciwgc3Rh
dGUsIHNlbnRWYWx1ZSwgcmVzdW1lTW9kZSwgZ2VuZXJhdG9yLkBnZW5lcmF0b3JGcmFtZSk7CiAg
ICAgICAgICAgICBpZiAoZ2VuZXJhdG9yLkBnZW5lcmF0b3JTdGF0ZSA9PT0gQEdlbmVyYXRvclN0
YXRlRXhlY3V0aW5nKSB7CiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLkBnZW5lcmF0b3JTdGF0
ZSA9IEBHZW5lcmF0b3JTdGF0ZUNvbXBsZXRlZDsKICAgICAgICAgICAgICAgICBkb25lID0gdHJ1
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJh
c2ljQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQmFz
aWNCbG9jay5jcHAKaW5kZXggN2YxN2MwZWYxMGI0MzNmYWM4ZjU4Y2IzYjljYTVkNGQwMTViYmEw
OC4uNjI1NGY5MDZiMmJkOTA0ZDFkOTNmYTkwMjRjYzkzYTkwNzQ2OGI1ZiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5jcHAK
QEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJCeXRlY29kZUJhc2ljQmxvY2suaCIKIAogI2lu
Y2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkludGVycHJldGVySW5saW5lcy5oIgogI2lu
Y2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJQcmVjaXNlSnVtcFRhcmdldHMuaCIKIApA
QCAtMTA1LDE1ICsxMDYsMjEgQEAgc3RhdGljIGJvb2wgaXNKdW1wVGFyZ2V0KE9wY29kZUlEIG9w
Y29kZUlELCBjb25zdCBWZWN0b3I8dW5zaWduZWQsIDMyPiYganVtcFRhcmcKICAgICByZXR1cm4g
c3RkOjpiaW5hcnlfc2VhcmNoKGp1bXBUYXJnZXRzLmJlZ2luKCksIGp1bXBUYXJnZXRzLmVuZCgp
LCBieXRlY29kZU9mZnNldCk7CiB9CiAKLXN0YXRpYyB2b2lkIGxpbmtCbG9ja3MoQnl0ZWNvZGVC
YXNpY0Jsb2NrKiBwcmVkZWNlc3NvciwgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBzdWNjZXNzb3IpCi17
Ci0gICAgcHJlZGVjZXNzb3ItPmFkZFN1Y2Nlc3NvcihzdWNjZXNzb3IpOwotfQotCi12b2lkIGNv
bXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzKENvZGVCbG9jayogY29kZUJsb2NrLCBWZWN0b3I8c3Rk
Ojp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+JiBiYXNpY0Jsb2NrcykKK3RlbXBsYXRl
PHR5cGVuYW1lIEJsb2NrLCB0eXBlbmFtZSBJbnN0cnVjdGlvbj4KK3ZvaWQgQnl0ZWNvZGVCYXNp
Y0Jsb2NrOjpjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2Nrc0ludGVybmFsKEJsb2NrKiBjb2RlQmxv
Y2ssIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25D
b3VudCwgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYgYmFzaWNC
bG9ja3MpCiB7CiAgICAgVmVjdG9yPHVuc2lnbmVkLCAzMj4ganVtcFRhcmdldHM7Ci0gICAgY29t
cHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhjb2RlQmxvY2ssIGp1bXBUYXJnZXRzKTsKKyAgICBjb21w
dXRlUHJlY2lzZUp1bXBUYXJnZXRzKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb25zQmVnaW4sIGluc3Ry
dWN0aW9uQ291bnQsIGp1bXBUYXJnZXRzKTsKKworICAgIGF1dG8gYXBwZW5kQmxvY2sgPSBbJl0g
KHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+JiYgYmxvY2spIHsKKyAgICAgICAg
YmxvY2stPm1faW5kZXggPSBiYXNpY0Jsb2Nrcy5zaXplKCk7CisgICAgICAgIGJhc2ljQmxvY2tz
LmFwcGVuZChXVEZNb3ZlKGJsb2NrKSk7CisgICAgfTsKKworICAgIGF1dG8gbGlua0Jsb2NrcyA9
IFsmXSAoQnl0ZWNvZGVCYXNpY0Jsb2NrKiBwcmVkZWNlc3NvciwgQnl0ZWNvZGVCYXNpY0Jsb2Nr
KiBzdWNjZXNzb3IpIHsKKyAgICAgICAgcHJlZGVjZXNzb3ItPmFkZFN1Y2Nlc3NvcihzdWNjZXNz
b3IpOworICAgICAgICBzdWNjZXNzb3ItPmFkZFByZWRlY2Vzc29yKHByZWRlY2Vzc29yKTsKKyAg
ICB9OwogCiAgICAgLy8gQ3JlYXRlIHRoZSBlbnRyeSBhbmQgZXhpdCBiYXNpYyBibG9ja3MuCiAg
ICAgYmFzaWNCbG9ja3MucmVzZXJ2ZUNhcGFjaXR5KGp1bXBUYXJnZXRzLnNpemUoKSArIDIpOwpA
QCAtMTIyLDE5ICsxMjksMTcgQEAgdm9pZCBjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2NrcyhDb2Rl
QmxvY2sqIGNvZGVCbG9jaywgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXQKICAgICBhdXRvIGZp
cnN0QmxvY2sgPSBzdGQ6Om1ha2VfdW5pcXVlPEJ5dGVjb2RlQmFzaWNCbG9jaz4oMCwgMCk7CiAg
ICAgbGlua0Jsb2NrcyhlbnRyeS5nZXQoKSwgZmlyc3RCbG9jay5nZXQoKSk7CiAKLSAgICBiYXNp
Y0Jsb2Nrcy5hcHBlbmQoV1RGTW92ZShlbnRyeSkpOworICAgIGFwcGVuZEJsb2NrKFdURk1vdmUo
ZW50cnkpKTsKICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGN1cnJlbnQgPSBmaXJzdEJsb2NrLmdl
dCgpOwotICAgIGJhc2ljQmxvY2tzLmFwcGVuZChXVEZNb3ZlKGZpcnN0QmxvY2spKTsKKyAgICBh
cHBlbmRCbG9jayhXVEZNb3ZlKGZpcnN0QmxvY2spKTsKIAogICAgIGF1dG8gZXhpdCA9IHN0ZDo6
bWFrZV91bmlxdWU8Qnl0ZWNvZGVCYXNpY0Jsb2NrPihCeXRlY29kZUJhc2ljQmxvY2s6OkV4aXRC
bG9jayk7CiAKICAgICBib29sIG5leHRJbnN0cnVjdGlvbklzTGVhZGVyID0gZmFsc2U7CiAKICAg
ICBJbnRlcnByZXRlciogaW50ZXJwcmV0ZXIgPSBjb2RlQmxvY2stPnZtKCktPmludGVycHJldGVy
OwotICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiA9IGNvZGVCbG9jay0+aW5zdHJ1
Y3Rpb25zKCkuYmVnaW4oKTsKLSAgICB1bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50ID0gY29kZUJs
b2NrLT5pbnN0cnVjdGlvbnMoKS5zaXplKCk7CiAgICAgZm9yICh1bnNpZ25lZCBieXRlY29kZU9m
ZnNldCA9IDA7IGJ5dGVjb2RlT2Zmc2V0IDwgaW5zdHJ1Y3Rpb25Db3VudDspIHsKLSAgICAgICAg
T3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25z
QmVnaW5bYnl0ZWNvZGVPZmZzZXRdLnUub3Bjb2RlKTsKKyAgICAgICAgT3Bjb2RlSUQgb3Bjb2Rl
SUQgPSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25zQmVnaW5bYnl0ZWNvZGVP
ZmZzZXRdKTsKICAgICAgICAgdW5zaWduZWQgb3Bjb2RlTGVuZ3RoID0gb3Bjb2RlTGVuZ3Roc1tv
cGNvZGVJRF07CiAKICAgICAgICAgYm9vbCBjcmVhdGVkQmxvY2sgPSBmYWxzZTsKQEAgLTE0Miw3
ICsxNDcsNyBAQCB2b2lkIGNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzKENvZGVCbG9jayogY29k
ZUJsb2NrLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dAogICAgICAgICBpZiAoaXNKdW1wVGFy
Z2V0KG9wY29kZUlELCBqdW1wVGFyZ2V0cywgYnl0ZWNvZGVPZmZzZXQpIHx8IG5leHRJbnN0cnVj
dGlvbklzTGVhZGVyKSB7CiAgICAgICAgICAgICBhdXRvIG5ld0Jsb2NrID0gc3RkOjptYWtlX3Vu
aXF1ZTxCeXRlY29kZUJhc2ljQmxvY2s+KGJ5dGVjb2RlT2Zmc2V0LCBvcGNvZGVMZW5ndGgpOwog
ICAgICAgICAgICAgY3VycmVudCA9IG5ld0Jsb2NrLmdldCgpOwotICAgICAgICAgICAgYmFzaWNC
bG9ja3MuYXBwZW5kKFdURk1vdmUobmV3QmxvY2spKTsKKyAgICAgICAgICAgIGFwcGVuZEJsb2Nr
KFdURk1vdmUobmV3QmxvY2spKTsKICAgICAgICAgICAgIGNyZWF0ZWRCbG9jayA9IHRydWU7CiAg
ICAgICAgICAgICBuZXh0SW5zdHJ1Y3Rpb25Jc0xlYWRlciA9IGZhbHNlOwogICAgICAgICAgICAg
Ynl0ZWNvZGVPZmZzZXQgKz0gb3Bjb2RlTGVuZ3RoOwpAQCAtMTY5LDggKzE3NCw3IEBAIHZvaWQg
Y29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFZlY3Rvcjxz
dGQ6OnVuaXF1ZV9wdHI8Qnl0CiAKICAgICAgICAgYm9vbCBmYWxsc1Rocm91Z2ggPSB0cnVlOyAK
ICAgICAgICAgZm9yICh1bnNpZ25lZCBieXRlY29kZU9mZnNldCA9IGJsb2NrLT5sZWFkZXJCeXRl
Y29kZU9mZnNldCgpOyBieXRlY29kZU9mZnNldCA8IGJsb2NrLT5sZWFkZXJCeXRlY29kZU9mZnNl
dCgpICsgYmxvY2stPnRvdGFsQnl0ZWNvZGVMZW5ndGgoKTspIHsKLSAgICAgICAgICAgIGNvbnN0
IEluc3RydWN0aW9uJiBjdXJyZW50SW5zdHJ1Y3Rpb24gPSBpbnN0cnVjdGlvbnNCZWdpbltieXRl
Y29kZU9mZnNldF07Ci0gICAgICAgICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGludGVycHJldGVy
LT5nZXRPcGNvZGVJRChjdXJyZW50SW5zdHJ1Y3Rpb24udS5vcGNvZGUpOworICAgICAgICAgICAg
T3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25z
QmVnaW5bYnl0ZWNvZGVPZmZzZXRdKTsKICAgICAgICAgICAgIHVuc2lnbmVkIG9wY29kZUxlbmd0
aCA9IG9wY29kZUxlbmd0aHNbb3Bjb2RlSURdOwogICAgICAgICAgICAgLy8gSWYgd2UgZm91bmQg
YSB0ZXJtaW5hbCBieXRlY29kZSwgbGluayB0byB0aGUgZXhpdCBibG9jay4KICAgICAgICAgICAg
IGlmIChpc1Rlcm1pbmFsKG9wY29kZUlEKSkgewpAQCAtMTg1LDcgKzE4OSw3IEBAIHZvaWQgY29t
cHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFZlY3RvcjxzdGQ6
OnVuaXF1ZV9wdHI8Qnl0CiAgICAgICAgICAgICAvLyBibG9jayBiZWNhdXNlIHRoZSBmaW5hbGx5
IGJsb2NrIHdpbGwgY3JlYXRlIGl0cyBvd24gY2F0Y2gsIHdoaWNoIHdpbGwgZ2VuZXJhdGUgYSBI
YW5kbGVySW5mby4KICAgICAgICAgICAgIGlmIChpc1Rocm93KG9wY29kZUlEKSkgewogICAgICAg
ICAgICAgICAgIEFTU0VSVChieXRlY29kZU9mZnNldCArIG9wY29kZUxlbmd0aCA9PSBibG9jay0+
bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKSArIGJsb2NrLT50b3RhbEJ5dGVjb2RlTGVuZ3RoKCkpOwot
ICAgICAgICAgICAgICAgIEhhbmRsZXJJbmZvKiBoYW5kbGVyID0gY29kZUJsb2NrLT5oYW5kbGVy
Rm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpOworICAgICAgICAgICAgICAgIGF1dG8q
IGhhbmRsZXIgPSBjb2RlQmxvY2stPmhhbmRsZXJGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9m
ZnNldCk7CiAgICAgICAgICAgICAgICAgZmFsbHNUaHJvdWdoID0gZmFsc2U7CiAgICAgICAgICAg
ICAgICAgaWYgKCFoYW5kbGVyKSB7CiAgICAgICAgICAgICAgICAgICAgIGxpbmtCbG9ja3MoYmxv
Y2ssIGV4aXQuZ2V0KCkpOwpAQCAtMjA1LDcgKzIwOSw3IEBAIHZvaWQgY29tcHV0ZUJ5dGVjb2Rl
QmFzaWNCbG9ja3MoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8
Qnl0CiAgICAgICAgICAgICBpZiAoaXNCcmFuY2gob3Bjb2RlSUQpKSB7CiAgICAgICAgICAgICAg
ICAgQVNTRVJUKGJ5dGVjb2RlT2Zmc2V0ICsgb3Bjb2RlTGVuZ3RoID09IGJsb2NrLT5sZWFkZXJC
eXRlY29kZU9mZnNldCgpICsgYmxvY2stPnRvdGFsQnl0ZWNvZGVMZW5ndGgoKSk7CiAgICAgICAg
ICAgICAgICAgVmVjdG9yPHVuc2lnbmVkLCAxPiBieXRlY29kZU9mZnNldHNKdW1wZWRUbzsKLSAg
ICAgICAgICAgICAgICBmaW5kSnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChjb2RlQmxvY2ss
IGJ5dGVjb2RlT2Zmc2V0LCBieXRlY29kZU9mZnNldHNKdW1wZWRUbyk7CisgICAgICAgICAgICAg
ICAgZmluZEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoY29kZUJsb2NrLCBpbnN0cnVjdGlv
bnNCZWdpbiwgYnl0ZWNvZGVPZmZzZXQsIGJ5dGVjb2RlT2Zmc2V0c0p1bXBlZFRvKTsKIAogICAg
ICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBiYXNpY0Jsb2Nrcy5zaXplKCk7
IGkrKykgewogICAgICAgICAgICAgICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIG90aGVyQmxv
Y2sgPSBiYXNpY0Jsb2Nrc1tpXS5nZXQoKTsKQEAgLTIyOSwxMCArMjMzLDIwIEBAIHZvaWQgY29t
cHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFZlY3RvcjxzdGQ6
OnVuaXF1ZV9wdHI8Qnl0CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBiYXNpY0Jsb2Nrcy5hcHBl
bmQoV1RGTW92ZShleGl0KSk7CisgICAgYXBwZW5kQmxvY2soV1RGTW92ZShleGl0KSk7CiAgICAg
CiAgICAgZm9yIChhdXRvJiBiYXNpY0Jsb2NrIDogYmFzaWNCbG9ja3MpCiAgICAgICAgIGJhc2lj
QmxvY2stPnNocmlua1RvRml0KCk7CiB9CiAKK3ZvaWQgQnl0ZWNvZGVCYXNpY0Jsb2NrOjpjb21w
dXRlQnl0ZWNvZGVCYXNpY0Jsb2NrcyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgSW5zdHJ1Y3Rpb24q
IGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50LCBWZWN0b3I8c3Rk
Ojp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+JiBiYXNpY0Jsb2NrcykKK3sKKyAgICBj
b21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2Nrc0ludGVybmFsKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb25z
QmVnaW4sIGluc3RydWN0aW9uQ291bnQsIGJhc2ljQmxvY2tzKTsKK30KKwordm9pZCBCeXRlY29k
ZUJhc2ljQmxvY2s6OmNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzKFVubGlua2VkQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIFVubGlua2VkSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1bnNp
Z25lZCBpbnN0cnVjdGlvbkNvdW50LCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFz
aWNCbG9jaz4+JiBiYXNpY0Jsb2NrcykKK3sKKyAgICBCeXRlY29kZUJhc2ljQmxvY2s6OmNvbXB1
dGVCeXRlY29kZUJhc2ljQmxvY2tzSW50ZXJuYWwoY29kZUJsb2NrLCBpbnN0cnVjdGlvbnNCZWdp
biwgaW5zdHJ1Y3Rpb25Db3VudCwgYmFzaWNCbG9ja3MpOworfQorCiB9IC8vIG5hbWVzcGFjZSBK
U0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJh
c2ljQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2lj
QmxvY2suaAppbmRleCBiZDdkM2FlOWJhMzQzZTFiMDcxNzllOThmMWVlODlkYTY1YmE3ZTIwLi4x
MTliZTdjNjYyMzBjOThlYTlkN2ZiMjgwOGNiZjI5NGRjMWEyYTc3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5oCkBAIC0zNSw2
ICszNSw5IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgQ29kZUJsb2NrOworY2xhc3MgVW5s
aW5rZWRDb2RlQmxvY2s7CitzdHJ1Y3QgSW5zdHJ1Y3Rpb247CitzdHJ1Y3QgVW5saW5rZWRJbnN0
cnVjdGlvbjsKIAogY2xhc3MgQnl0ZWNvZGVCYXNpY0Jsb2NrIHsKICAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKQEAgLTUwLDI4ICs1MywzOSBAQCBjbGFzcyBCeXRlY29kZUJhc2ljQmxvY2sg
ewogICAgIHVuc2lnbmVkIGxlYWRlckJ5dGVjb2RlT2Zmc2V0KCkgeyByZXR1cm4gbV9sZWFkZXJC
eXRlY29kZU9mZnNldDsgfQogICAgIHVuc2lnbmVkIHRvdGFsQnl0ZWNvZGVMZW5ndGgoKSB7IHJl
dHVybiBtX3RvdGFsQnl0ZWNvZGVMZW5ndGg7IH0KIAotICAgIFZlY3Rvcjx1bnNpZ25lZD4mIGJ5
dGVjb2RlT2Zmc2V0cygpIHsgcmV0dXJuIG1fYnl0ZWNvZGVPZmZzZXRzOyB9Ci0gICAgdm9pZCBh
ZGRCeXRlY29kZUxlbmd0aCh1bnNpZ25lZCk7CisgICAgY29uc3QgVmVjdG9yPHVuc2lnbmVkPiYg
Ynl0ZWNvZGVPZmZzZXRzKCkgY29uc3QgeyByZXR1cm4gbV9ieXRlY29kZU9mZnNldHM7IH0KIAot
ICAgIFZlY3RvcjxCeXRlY29kZUJhc2ljQmxvY2sqPiYgc3VjY2Vzc29ycygpIHsgcmV0dXJuIG1f
c3VjY2Vzc29yczsgfQotICAgIHZvaWQgYWRkU3VjY2Vzc29yKEJ5dGVjb2RlQmFzaWNCbG9jayog
YmxvY2spIHsgbV9zdWNjZXNzb3JzLmFwcGVuZChibG9jayk7IH0KKyAgICBjb25zdCBWZWN0b3I8
Qnl0ZWNvZGVCYXNpY0Jsb2NrKj4mIHN1Y2Nlc3NvcnMoKSBjb25zdCB7IHJldHVybiBtX3N1Y2Nl
c3NvcnM7IH0KKyAgICBjb25zdCBWZWN0b3I8Qnl0ZWNvZGVCYXNpY0Jsb2NrKj4mIHByZWRlY2Vz
c29ycygpIGNvbnN0IHsgcmV0dXJuIG1fcHJlZGVjZXNzb3JzOyB9CiAKICAgICBGYXN0Qml0VmVj
dG9yJiBpbigpIHsgcmV0dXJuIG1faW47IH0KICAgICBGYXN0Qml0VmVjdG9yJiBvdXQoKSB7IHJl
dHVybiBtX291dDsgfQogCisgICAgdW5zaWduZWQgaW5kZXgoKSBjb25zdCB7IHJldHVybiBtX2lu
ZGV4OyB9CisKKyAgICBzdGF0aWMgdm9pZCBjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2NrcyhDb2Rl
QmxvY2sqLCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGluc3RydWN0
aW9uQ291bnQsIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mKTsK
KyAgICBzdGF0aWMgdm9pZCBjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2NrcyhVbmxpbmtlZENvZGVC
bG9jayosIFVubGlua2VkSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBp
bnN0cnVjdGlvbkNvdW50LCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9j
az4+Jik7CisKIHByaXZhdGU6CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQmxvY2ssIHR5cGVuYW1l
IEluc3RydWN0aW9uPiBzdGF0aWMgdm9pZCBjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2Nrc0ludGVy
bmFsKEJsb2NrKiBjb2RlQmxvY2ssIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5z
aWduZWQgaW5zdHJ1Y3Rpb25Db3VudCwgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJh
c2ljQmxvY2s+PiYgYmFzaWNCbG9ja3MpOworCisgICAgdm9pZCBhZGRTdWNjZXNzb3IoQnl0ZWNv
ZGVCYXNpY0Jsb2NrKiBibG9jaykgeyBtX3N1Y2Nlc3NvcnMuYXBwZW5kKGJsb2NrKTsgfQorICAg
IHZvaWQgYWRkUHJlZGVjZXNzb3IoQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaykgeyBtX3ByZWRl
Y2Vzc29ycy5hcHBlbmQoYmxvY2spOyB9CisKKyAgICB2b2lkIGFkZEJ5dGVjb2RlTGVuZ3RoKHVu
c2lnbmVkKTsKKwogICAgIHVuc2lnbmVkIG1fbGVhZGVyQnl0ZWNvZGVPZmZzZXQ7CiAgICAgdW5z
aWduZWQgbV90b3RhbEJ5dGVjb2RlTGVuZ3RoOworICAgIHVuc2lnbmVkIG1faW5kZXg7CiAKICAg
ICBWZWN0b3I8dW5zaWduZWQ+IG1fYnl0ZWNvZGVPZmZzZXRzOwogICAgIFZlY3RvcjxCeXRlY29k
ZUJhc2ljQmxvY2sqPiBtX3N1Y2Nlc3NvcnM7CisgICAgVmVjdG9yPEJ5dGVjb2RlQmFzaWNCbG9j
ayo+IG1fcHJlZGVjZXNzb3JzOwogCiAgICAgRmFzdEJpdFZlY3RvciBtX2luOwogICAgIEZhc3RC
aXRWZWN0b3IgbV9vdXQ7CiB9OwogCi12b2lkIGNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzKENv
ZGVCbG9jayosIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mKTsK
LQogaW5saW5lIEJ5dGVjb2RlQmFzaWNCbG9jazo6Qnl0ZWNvZGVCYXNpY0Jsb2NrKHVuc2lnbmVk
IHN0YXJ0LCB1bnNpZ25lZCBsZW5ndGgpCiAgICAgOiBtX2xlYWRlckJ5dGVjb2RlT2Zmc2V0KHN0
YXJ0KQogICAgICwgbV90b3RhbEJ5dGVjb2RlTGVuZ3RoKGxlbmd0aCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmlj
YXRpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgxM2U1YzNhMGQxY2UyMGEyYWEwZDJkNGQxZjg1ZjcwMWM5
NzI1OTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Qnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwCkBAIC0wLDAgKzEsNjYzIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE2IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkJ5dGVjb2RlR2VuZXJh
dG9yaWZpY2F0aW9uLmgiCisKKyNpbmNsdWRlICJCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNJbmxp
bmVzLmgiCisjaW5jbHVkZSAiQnl0ZWNvZGVNb2RpZmljYXRpb25TZXQuaCIKKyNpbmNsdWRlICJC
eXRlY29kZVVzZURlZi5oIgorI2luY2x1ZGUgIklkZW50aWZpZXJJbmxpbmVzLmgiCisjaW5jbHVk
ZSAiSW50ZXJwcmV0ZXIuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgorI2luY2x1
ZGUgIlN0cm9uZ0lubGluZXMuaCIKKyNpbmNsdWRlICJVbmxpbmtlZENvZGVCbG9jay5oIgorI2lu
Y2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgQnl0ZWNv
ZGVHZW5lcmF0b3JpZmljYXRpb24geworcHVibGljOgorICAgIEJ5dGVjb2RlR2VuZXJhdG9yaWZp
Y2F0aW9uKFVubGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFVubGlua2VkQ29kZUJsb2NrOjpV
bnBhY2tlZEluc3RydWN0aW9ucyYgaW5zdHJ1Y3Rpb25zLCBTeW1ib2xUYWJsZSogZ2VuZXJhdG9y
RnJhbWVTeW1ib2xUYWJsZSwgaW50IGdlbmVyYXRvckZyYW1lU3ltYm9sVGFibGVJbmRleCkKKyAg
ICAgICAgOiBtX2dyYXBoKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb25zKQorICAgICAgICAsIG1faW5z
ZXJ0aW9uU2V0KG1fZ3JhcGgpCisgICAgICAgICwgbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxl
KCpjb2RlQmxvY2stPnZtKCksIGdlbmVyYXRvckZyYW1lU3ltYm9sVGFibGUpCisgICAgICAgICwg
bV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlSW5kZXgoZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJs
ZUluZGV4KQorICAgIHsKKyAgICAgICAgbV9tZXJnZUJsb2Nrcy5yZXNpemUobV9ncmFwaC5iYXNp
Y0Jsb2NrcygpLnNpemUoKSk7CisgICAgICAgIG1fc2F2ZUJsb2Nrcy5yZXNpemUobV9ncmFwaC5i
YXNpY0Jsb2NrcygpLnNpemUoKSk7CisKKyAgICAgICAgZm9yIChzdGQ6OnVuaXF1ZV9wdHI8Qnl0
ZWNvZGVCYXNpY0Jsb2NrPiYgYmxvY2sgOiBtX2dyYXBoLmJhc2ljQmxvY2tzKCkpIHsKKyAgICAg
ICAgICAgIGZvciAodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQgOiBibG9jay0+Ynl0ZWNvZGVPZmZz
ZXRzKCkpIHsKKyAgICAgICAgICAgICAgICBjb25zdCBVbmxpbmtlZEluc3RydWN0aW9uKiBwYyA9
ICZtX2dyYXBoLmluc3RydWN0aW9ucygpW2J5dGVjb2RlT2Zmc2V0XTsKKyAgICAgICAgICAgICAg
ICBzd2l0Y2ggKHBjLT51Lm9wY29kZSkgeworICAgICAgICAgICAgICAgIGNhc2Ugb3Bfc2F2ZTog
eworICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSBw
Y1syXS51LmluZGV4OworICAgICAgICAgICAgICAgICAgICBpbnQgb2Zmc2V0ID0gcGNbM10udS5v
cGVyYW5kOworICAgICAgICAgICAgICAgICAgICBpZiAobGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID49
IG1feWllbGRzLnNpemUoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIG1feWllbGRzLnJlc2l6
ZShsaXZlQ2FsbGVlTG9jYWxzSW5kZXggKyAxKTsKKyAgICAgICAgICAgICAgICAgICAgbV95aWVs
ZHNbbGl2ZUNhbGxlZUxvY2Fsc0luZGV4XS5zYXZlUG9pbnQgPSBieXRlY29kZU9mZnNldDsKKyAg
ICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbWVyZ2VQb2ludCA9IGJ5dGVjb2RlT2Zmc2V0ICsg
b2Zmc2V0OworICAgICAgICAgICAgICAgICAgICBtX3lpZWxkc1tsaXZlQ2FsbGVlTG9jYWxzSW5k
ZXhdLm1lcmdlUG9pbnQgPSBtZXJnZVBvaW50OworICAgICAgICAgICAgICAgICAgICBtX21lcmdl
QmxvY2tzLnNldChtX2dyYXBoLmZpbmRCYXNpY0Jsb2NrRm9yQnl0ZWNvZGVPZmZzZXQobWVyZ2VQ
b2ludCktPmluZGV4KCkpOworICAgICAgICAgICAgICAgICAgICBtX3NhdmVCbG9ja3Muc2V0KGJs
b2NrLT5pbmRleCgpKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICAgICAgY2FzZSBvcF9yZXN1bWU6IHsKKyAgICAgICAgICAgICAg
ICAgICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gcGNbMl0udS5pbmRleDsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKGxpdmVDYWxsZWVMb2NhbHNJbmRleCA+PSBtX3lpZWxkcy5z
aXplKCkpCisgICAgICAgICAgICAgICAgICAgICAgICBtX3lpZWxkcy5yZXNpemUobGl2ZUNhbGxl
ZUxvY2Fsc0luZGV4ICsgMSk7CisgICAgICAgICAgICAgICAgICAgIG1feWllbGRzW2xpdmVDYWxs
ZWVMb2NhbHNJbmRleF0ucmVzdW1lUG9pbnQgPSBieXRlY29kZU9mZnNldDsKKyAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgYm9vbCBpc01lcmdlQmxvY2soQnl0
ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaykKKyAgICB7CisgICAgICAgIHJldHVybiBtX21lcmdlQmxv
Y2tzLmdldChibG9jay0+aW5kZXgoKSk7CisgICAgfQorCisgICAgYm9vbCBpc1NhdmVCbG9jayhC
eXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fc2F2ZUJs
b2Nrcy5nZXQoYmxvY2stPmluZGV4KCkpOworICAgIH0KKworICAgIHN0cnVjdCBTdG9yYWdlIHsK
KyAgICAgICAgSWRlbnRpZmllciBpZGVudGlmaWVyOworICAgICAgICB1bnNpZ25lZCBpZGVudGlm
aWVySW5kZXg7CisgICAgICAgIFNjb3BlT2Zmc2V0IHNjb3BlT2Zmc2V0OworICAgIH07CisKKyAg
ICB2b2lkIHJ1bigpOworCisgICAgQnl0ZWNvZGVHcmFwaDxVbmxpbmtlZENvZGVCbG9jaz4mIGdy
YXBoKCkgeyByZXR1cm4gbV9ncmFwaDsgfQorCitwcml2YXRlOgorICAgIFN0b3JhZ2Ugc3RvcmFn
ZUZvckdlbmVyYXRvckxvY2FsKHVuc2lnbmVkIGluZGV4KQorICAgIHsKKyAgICAgICAgLy8gV2Ug
YXNzaWduIGEgc3ltYm9sIHRvIGEgcmVnaXN0ZXIuIFRoZXJlIGlzIG9uZS1vbi1vbmUgY29ycmVz
cG9uZGluZyBiZXR3ZWVuIGEgcmVnaXN0ZXIgYW5kIGEgc3ltYm9sLgorICAgICAgICAvLyBCeSBk
b2luZyBzbywgd2UgYWxsb2NhdGUgdGhlIHNwZWNpZmljIHN0b3JhZ2UgdG8gc2F2ZSB0aGUgZ2l2
ZW4gcmVnaXN0ZXIuCisgICAgICAgIC8vIFRoaXMgYWxsb3cgdXMgbm90IHRvIHNhdmUgYWxsIHRo
ZSBsaXZlIHJlZ2lzdGVycyBldmVuIGlmIHRoZSByZWdpc3RlcnMgYXJlIG5vdCBvdmVyd3JpdHRl
biBmcm9tIHRoZSBwcmV2aW91cyByZXN1bWluZyB0aW1lLgorICAgICAgICAvLyBJdCBtZWFucyB0
aGF0LCB0aGUgcmVnaXN0ZXIgY2FuIGJlIHJldHJpZXZlZCBldmVuIGlmIHRoZSBpbW1lZGlhdGUg
cHJldmlvdXMgb3Bfc2F2ZSBkb2VzIG5vdCBzYXZlIGl0LgorCisgICAgICAgIGlmIChtX3N0b3Jh
Z2VzLnNpemUoKSA8PSBpbmRleCkKKyAgICAgICAgICAgIG1fc3RvcmFnZXMucmVzaXplKGluZGV4
ICsgMSk7CisgICAgICAgIGlmIChPcHRpb25hbDxTdG9yYWdlPiBzdG9yYWdlID0gbV9zdG9yYWdl
c1tpbmRleF0pCisgICAgICAgICAgICByZXR1cm4gKnN0b3JhZ2U7CisKKyAgICAgICAgVW5saW5r
ZWRDb2RlQmxvY2sqIGNvZGVCbG9jayA9IG1fZ3JhcGguY29kZUJsb2NrKCk7CisgICAgICAgIElk
ZW50aWZpZXIgaWRlbnRpZmllciA9IElkZW50aWZpZXI6OmZyb21VaWQoUHJpdmF0ZU5hbWUoKSk7
CisgICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXJJbmRleCA9IGNvZGVCbG9jay0+bnVtYmVyT2ZJ
ZGVudGlmaWVycygpOworICAgICAgICBjb2RlQmxvY2stPmFkZElkZW50aWZpZXIoaWRlbnRpZmll
cik7CisgICAgICAgIFNjb3BlT2Zmc2V0IHNjb3BlT2Zmc2V0ID0gbV9nZW5lcmF0b3JGcmFtZVN5
bWJvbFRhYmxlLT50YWtlTmV4dFNjb3BlT2Zmc2V0KE5vTG9ja2luZ05lY2Vzc2FyeSk7CisgICAg
ICAgIG1fZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZS0+c2V0KE5vTG9ja2luZ05lY2Vzc2FyeSwg
aWRlbnRpZmllci5pbXBsKCksIFN5bWJvbFRhYmxlRW50cnkoVmFyT2Zmc2V0KHNjb3BlT2Zmc2V0
KSkpOworCisgICAgICAgIFN0b3JhZ2Ugc3RvcmFnZSA9IHsKKyAgICAgICAgICAgIGlkZW50aWZp
ZXIsCisgICAgICAgICAgICBpZGVudGlmaWVySW5kZXgsCisgICAgICAgICAgICBzY29wZU9mZnNl
dAorICAgICAgICB9OworICAgICAgICBtX3N0b3JhZ2VzW2luZGV4XSA9IHN0b3JhZ2U7CisgICAg
ICAgIHJldHVybiBzdG9yYWdlOworICAgIH0KKworICAgIHN0cnVjdCBZaWVsZERhdGEgeworICAg
ICAgICBzaXplX3Qgc2F2ZVBvaW50OworICAgICAgICBzaXplX3QgbWVyZ2VQb2ludDsKKyAgICAg
ICAgc2l6ZV90IHJlc3VtZVBvaW50OworICAgICAgICBGYXN0Qml0VmVjdG9yIGxpdmVuZXNzOwor
ICAgICAgICBGYXN0Qml0VmVjdG9yIHJlc3VtZWQ7CisgICAgICAgIEZhc3RCaXRWZWN0b3Igc2F2
ZWQ7CisgICAgfTsKKworICAgIEJ5dGVjb2RlR3JhcGg8VW5saW5rZWRDb2RlQmxvY2s+IG1fZ3Jh
cGg7CisgICAgQnl0ZWNvZGVNb2RpZmljYXRpb25TZXQgbV9pbnNlcnRpb25TZXQ7CisgICAgVmVj
dG9yPE9wdGlvbmFsPFN0b3JhZ2U+PiBtX3N0b3JhZ2VzOworICAgIFZlY3RvcjxZaWVsZERhdGE+
IG1feWllbGRzOworICAgIEZhc3RCaXRWZWN0b3IgbV9tZXJnZUJsb2NrczsKKyAgICBGYXN0Qml0
VmVjdG9yIG1fc2F2ZUJsb2NrczsKKyAgICBTdHJvbmc8U3ltYm9sVGFibGU+IG1fZ2VuZXJhdG9y
RnJhbWVTeW1ib2xUYWJsZTsKKyAgICBpbnQgbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlSW5k
ZXg7Cit9OworCitjbGFzcyBHZW5lcmF0b3JMaXZlbmVzc0FuYWx5c2lzIHsKK3B1YmxpYzoKKyAg
ICBHZW5lcmF0b3JMaXZlbmVzc0FuYWx5c2lzKEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uJiBw
YXNzKQorICAgICAgICA6IG1fZ2VuZXJhdG9yaWZpY2F0aW9uKHBhc3MpCisgICAgeworICAgIH0K
KworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+CisgICAgdm9pZCBjb21wdXRlTGl2ZW5l
c3NEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoVW5saW5rZWRDb2RlQmxvY2sqIGNvZGVCbG9jaywgT3Bj
b2RlSUQgb3Bjb2RlSUQsIFVubGlua2VkSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBGYXN0Qml0
VmVjdG9yJiBvdXQsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCisgICAgeworICAgICAgICBjb21w
dXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9jaywgb3Bjb2RlSUQsIGluc3RydWN0aW9u
LCBmdW5jdG9yKTsKKworICAgICAgICBzd2l0Y2ggKG9wY29kZUlEKSB7CisgICAgICAgIGNhc2Ug
b3Bfc2F2ZToKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBjYXNlIG9wX3Jlc3VtZTog
eworICAgICAgICAgICAgLy8gcmVzdW1lIGRlZmluZXMgYWxsIHRoZSByZWdpc3RlcnMuCisgICAg
ICAgICAgICBvdXQuY2xlYXJBbGwoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9
CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgorICAgIHZvaWQgY29tcHV0ZUxpdmVu
ZXNzVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KFVubGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2ssIE9w
Y29kZUlEIG9wY29kZUlELCBVbmxpbmtlZEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgRmFzdEJp
dFZlY3RvciYsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCisgICAgeworICAgICAgICBjb21wdXRl
VXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9jaywgb3Bjb2RlSUQsIGluc3RydWN0aW9uLCBm
dW5jdG9yKTsKKworICAgICAgICBzd2l0Y2ggKG9wY29kZUlEKSB7CisgICAgICAgIGNhc2Ugb3Bf
c2F2ZToKKyAgICAgICAgY2FzZSBvcF9yZXN1bWU6IHsKKyAgICAgICAgICAgIGZ1bmN0b3IoY29k
ZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBkZWZhdWx0OgorICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVXNlRnVuY3RvciwgdHlwZW5hbWUgRGVmRnVuY3Rvcj4KKyAgICB2b2lkIHN0ZXBPdmVySW5z
dHJ1Y3Rpb25Gb3JMaXZlbmVzcyh1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgRmFzdEJpdFZlY3Rv
ciYgb3V0LCBjb25zdCBVc2VGdW5jdG9yJiB1c2UsIGNvbnN0IERlZkZ1bmN0b3ImIGRlZikKKyAg
ICB7CisgICAgICAgIEJ5dGVjb2RlR3JhcGg8VW5saW5rZWRDb2RlQmxvY2s+JiBncmFwaCA9IG1f
Z2VuZXJhdG9yaWZpY2F0aW9uLmdyYXBoKCk7CisgICAgICAgIGF1dG8mIGluc3RydWN0aW9ucyA9
IGdyYXBoLmluc3RydWN0aW9ucygpOworICAgICAgICBVbmxpbmtlZEluc3RydWN0aW9uKiBpbnN0
cnVjdGlvbiA9ICZpbnN0cnVjdGlvbnNbYnl0ZWNvZGVPZmZzZXRdOworICAgICAgICBPcGNvZGVJ
RCBvcGNvZGVJRCA9IGluc3RydWN0aW9uLT51Lm9wY29kZTsKKyAgICAgICAgVW5saW5rZWRDb2Rl
QmxvY2sqIGNvZGVCbG9jayA9IGdyYXBoLmNvZGVCbG9jaygpOworCisgICAgICAgIGNvbXB1dGVM
aXZlbmVzc0RlZnNGb3JCeXRlY29kZU9mZnNldCgKKyAgICAgICAgICAgIGNvZGVCbG9jaywgb3Bj
b2RlSUQsIGluc3RydWN0aW9uLCBvdXQsCisgICAgICAgICAgICBbJl0gKFVubGlua2VkQ29kZUJs
b2NrKiwgVW5saW5rZWRJbnN0cnVjdGlvbiosIE9wY29kZUlELCBpbnQgb3BlcmFuZCkgeworICAg
ICAgICAgICAgICAgIGlmIChpc1ZhbGlkUmVnaXN0ZXJGb3JMaXZlbmVzcyhvcGVyYW5kKSkKKyAg
ICAgICAgICAgICAgICAgICAgZGVmKFZpcnR1YWxSZWdpc3RlcihvcGVyYW5kKS50b0xvY2FsKCkp
OworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgY29tcHV0ZUxpdmVuZXNzVXNlc0ZvckJ5dGVj
b2RlT2Zmc2V0KAorICAgICAgICAgICAgY29kZUJsb2NrLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb24s
IG91dCwKKyAgICAgICAgICAgIFsmXSAoVW5saW5rZWRDb2RlQmxvY2sqLCBVbmxpbmtlZEluc3Ry
dWN0aW9uKiwgT3Bjb2RlSUQsIGludCBvcGVyYW5kKSB7CisgICAgICAgICAgICAgICAgaWYgKGlz
VmFsaWRSZWdpc3RlckZvckxpdmVuZXNzKG9wZXJhbmQpKQorICAgICAgICAgICAgICAgICAgICB1
c2UoVmlydHVhbFJlZ2lzdGVyKG9wZXJhbmQpLnRvTG9jYWwoKSk7CisgICAgICAgICAgICB9KTsK
KworICAgICAgICAvLyBJZiB3ZSBoYXZlIGFuIGV4Y2VwdGlvbiBoYW5kbGVyLCB3ZSB3YW50IHRo
ZSBsaXZlLWluIHZhcmlhYmxlcyBvZiB0aGUKKyAgICAgICAgLy8gZXhjZXB0aW9uIGhhbmRsZXIg
YmxvY2sgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIGxpdmUtaW4gb2YgdGhpcyBwYXJ0aWN1bGFyIGJ5
dGVjb2RlLgorICAgICAgICBpZiAoVW5saW5rZWRIYW5kbGVySW5mbyogaGFuZGxlciA9IGNvZGVC
bG9jay0+aGFuZGxlckZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KSkgeworICAgICAg
ICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBoYW5kbGVyQmxvY2sgPSBncmFwaC5maW5kQmFzaWNC
bG9ja1dpdGhMZWFkZXJPZmZzZXQoaGFuZGxlci0+dGFyZ2V0KTsKKyAgICAgICAgICAgIEFTU0VS
VChoYW5kbGVyQmxvY2spOworICAgICAgICAgICAgaGFuZGxlckJsb2NrLT5pbigpLmZvckVhY2hT
ZXRCaXQodXNlKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQgY29tcHV0ZUxvY2FsTGl2
ZW5lc3NGb3JCeXRlY29kZU9mZnNldChCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrLCB1bnNpZ25l
ZCB0YXJnZXRPZmZzZXQsIEZhc3RCaXRWZWN0b3ImIHJlc3VsdCkKKyAgICB7CisgICAgICAgIEFT
U0VSVCghYmxvY2stPmlzRXhpdEJsb2NrKCkpOworICAgICAgICBBU1NFUlQoIWJsb2NrLT5pc0Vu
dHJ5QmxvY2soKSk7CisKKyAgICAgICAgRmFzdEJpdFZlY3RvciBvdXQgPSBibG9jay0+b3V0KCk7
CisKKyAgICAgICAgZm9yIChpbnQgaSA9IGJsb2NrLT5ieXRlY29kZU9mZnNldHMoKS5zaXplKCkg
LSAxOyBpID49IDA7IGktLSkgeworICAgICAgICAgICAgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQg
PSBibG9jay0+Ynl0ZWNvZGVPZmZzZXRzKClbaV07CisgICAgICAgICAgICBpZiAodGFyZ2V0T2Zm
c2V0ID4gYnl0ZWNvZGVPZmZzZXQpCisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAg
ICAgIHN0ZXBPdmVySW5zdHJ1Y3Rpb25Gb3JMaXZlbmVzcygKKyAgICAgICAgICAgICAgICBieXRl
Y29kZU9mZnNldCwgb3V0LAorICAgICAgICAgICAgICAgIFsmXSAodW5zaWduZWQgYml0SW5kZXgp
IHsKKyAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyB0aGUgdXNlIGZ1bmN0b3IsIHNvIHdl
IHNldCB0aGUgYml0LgorICAgICAgICAgICAgICAgICAgICBvdXQuc2V0KGJpdEluZGV4KTsKKyAg
ICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIFsmXSAodW5zaWduZWQgYml0SW5kZXgp
IHsKKyAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyB0aGUgZGVmIGZ1bmN0b3IsIHNvIHdl
IGNsZWFyIHRoZSBiaXQuCisgICAgICAgICAgICAgICAgICAgIG91dC5jbGVhcihiaXRJbmRleCk7
CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKworICAgICAgICByZXN1bHQuc2V0KG91
dCk7CisgICAgfQorCisgICAgdm9pZCBjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJsb2NrKEJ5dGVj
b2RlQmFzaWNCbG9jayogYmxvY2spCisgICAgeworICAgICAgICBpZiAoYmxvY2stPmlzRXhpdEJs
b2NrKCkgfHwgYmxvY2stPmlzRW50cnlCbG9jaygpKQorICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICBjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJ5dGVjb2RlT2Zmc2V0KGJsb2NrLCBibG9jay0+
bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKSwgYmxvY2stPmluKCkpOworICAgIH0KKworICAgIEZhc3RC
aXRWZWN0b3IgZ2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29kZU9mZnNldCh1bnNpZ25lZCBieXRlY29k
ZU9mZnNldCkKKyAgICB7CisgICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2sgPSBtX2dl
bmVyYXRvcmlmaWNhdGlvbi5ncmFwaCgpLmZpbmRCYXNpY0Jsb2NrRm9yQnl0ZWNvZGVPZmZzZXQo
Ynl0ZWNvZGVPZmZzZXQpOworICAgICAgICBBU1NFUlQoYmxvY2spOworICAgICAgICBBU1NFUlQo
IWJsb2NrLT5pc0VudHJ5QmxvY2soKSk7CisgICAgICAgIEFTU0VSVCghYmxvY2stPmlzRXhpdEJs
b2NrKCkpOworICAgICAgICBGYXN0Qml0VmVjdG9yIG91dDsKKyAgICAgICAgb3V0LnJlc2l6ZShi
bG9jay0+b3V0KCkubnVtQml0cygpKTsKKyAgICAgICAgY29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JC
eXRlY29kZU9mZnNldChibG9jaywgYnl0ZWNvZGVPZmZzZXQsIG91dCk7CisgICAgICAgIHJldHVy
biBvdXQ7CisgICAgfQorCisgICAgdm9pZCBydW4oKQorICAgIHsKKyAgICAgICAgLy8gUGVyZm9y
bSBtb2RpZmllZCBsaXZlbmVzcyBhbmFseXNpcyB0byBkZXRlcm1pbmUgd2hpY2ggbG9jYWxzIGFy
ZSBsaXZlIGF0IHRoZSBtZXJnZSBwb2ludHMuCisgICAgICAgIC8vIFRoaXMgcHJvZHVjZXMgdGhl
IGNvbnNlcnZhdGl2ZSByZXN1bHRzIGZvciB0aGUgcXVlc3Rpb24sICJ3aGljaCB2YXJpYWJsZXMg
c2hvdWxkIGJlIHNhdmVkIGFuZCByZXN1bWVkPyIuCisKKyAgICAgICAgQnl0ZWNvZGVHcmFwaDxV
bmxpbmtlZENvZGVCbG9jaz4mIGdyYXBoID0gbV9nZW5lcmF0b3JpZmljYXRpb24uZ3JhcGgoKTsK
KyAgICAgICAgVW5saW5rZWRDb2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrID0gZ3JhcGguY29k
ZUJsb2NrKCk7CisgICAgICAgIHVuc2lnbmVkIG51bWJlck9mVmFyaWFibGVzID0gdW5saW5rZWRD
b2RlQmxvY2stPm1fbnVtQ2FsbGVlTG9jYWxzOworICAgICAgICBmb3IgKHN0ZDo6dW5pcXVlX3B0
cjxCeXRlY29kZUJhc2ljQmxvY2s+JiBibG9jayA6IGdyYXBoLmJhc2ljQmxvY2tzKCkpIHsKKyAg
ICAgICAgICAgIGJsb2NrLT5pbigpLnJlc2l6ZShudW1iZXJPZlZhcmlhYmxlcyk7CisgICAgICAg
ICAgICBibG9jay0+b3V0KCkucmVzaXplKG51bWJlck9mVmFyaWFibGVzKTsKKyAgICAgICAgICAg
IGJsb2NrLT5pbigpLmNsZWFyQWxsKCk7CisgICAgICAgICAgICBibG9jay0+b3V0KCkuY2xlYXJB
bGwoKTsKKyAgICAgICAgfQorCisgICAgICAgIGJvb2wgY2hhbmdlZDsKKyAgICAgICAgQnl0ZWNv
ZGVCYXNpY0Jsb2NrKiBsYXN0QmxvY2sgPSBncmFwaC5iYXNpY0Jsb2NrcygpLmxhc3QoKS5nZXQo
KTsKKyAgICAgICAgbGFzdEJsb2NrLT5pbigpLmNsZWFyQWxsKCk7CisgICAgICAgIGxhc3RCbG9j
ay0+b3V0KCkuY2xlYXJBbGwoKTsKKyAgICAgICAgRmFzdEJpdFZlY3RvciBuZXdPdXQ7CisgICAg
ICAgIG5ld091dC5yZXNpemUobGFzdEJsb2NrLT5vdXQoKS5udW1CaXRzKCkpOworICAgICAgICBk
byB7CisgICAgICAgICAgICBjaGFuZ2VkID0gZmFsc2U7CisgICAgICAgICAgICBmb3IgKHN0ZDo6
dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+JiBibG9jayA6IGdyYXBoLmJhc2ljQmxvY2tz
SW5SZXZlcnNlT3JkZXIoKSkgeworICAgICAgICAgICAgICAgIG5ld091dC5jbGVhckFsbCgpOwor
ICAgICAgICAgICAgICAgIGZvciAoQnl0ZWNvZGVCYXNpY0Jsb2NrKiBzdWNjZXNzb3IgOiBibG9j
ay0+c3VjY2Vzc29ycygpKQorICAgICAgICAgICAgICAgICAgICBuZXdPdXQubWVyZ2Uoc3VjY2Vz
c29yLT5pbigpKTsKKyAgICAgICAgICAgICAgICBib29sIG91dERpZENoYW5nZSA9IGJsb2NrLT5v
dXQoKS5zZXRBbmRDaGVjayhuZXdPdXQpOworICAgICAgICAgICAgICAgIGNvbXB1dGVMb2NhbExp
dmVuZXNzRm9yQmxvY2soYmxvY2suZ2V0KCkpOworICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0g
b3V0RGlkQ2hhbmdlOworICAgICAgICAgICAgfQorICAgICAgICB9IHdoaWxlIChjaGFuZ2VkKTsK
KyAgICB9CisKK3ByaXZhdGU6CisgICAgQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24mIG1fZ2Vu
ZXJhdG9yaWZpY2F0aW9uOworfTsKKworY2xhc3MgUmVzdW1lZFZhcmlhYmxlc0FuYWx5c2lzIHsK
K3B1YmxpYzoKKyAgICBSZXN1bWVkVmFyaWFibGVzQW5hbHlzaXMoQnl0ZWNvZGVHZW5lcmF0b3Jp
ZmljYXRpb24mIHBhc3MpCisgICAgICAgIDogbV9nZW5lcmF0b3JpZmljYXRpb24ocGFzcykKKyAg
ICAgICAgLCBtX2xpdmVuZXNzQW5hbHlzaXMocGFzcykKKyAgICB7CisgICAgfQorCisgICAgRmFz
dEJpdFZlY3RvciBnZXRSZXN1bWVkVmFyaWFibGVzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQodW5zaWdu
ZWQgYnl0ZWNvZGVPZmZzZXQpCisgICAgeworICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGJs
b2NrID0gbV9nZW5lcmF0b3JpZmljYXRpb24uZ3JhcGgoKS5maW5kQmFzaWNCbG9ja0ZvckJ5dGVj
b2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KTsKKyAgICAgICAgQVNTRVJUKGJsb2NrKTsKKyAgICAg
ICAgQVNTRVJUKCFibG9jay0+aXNFbnRyeUJsb2NrKCkpOworICAgICAgICBBU1NFUlQoIWJsb2Nr
LT5pc0V4aXRCbG9jaygpKTsKKyAgICAgICAgRmFzdEJpdFZlY3RvciBvdXQ7CisgICAgICAgIG91
dC5yZXNpemUoYmxvY2stPm91dCgpLm51bUJpdHMoKSk7CisgICAgICAgIG1fbGl2ZW5lc3NBbmFs
eXNpcy5jb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJ5dGVjb2RlT2Zmc2V0KGJsb2NrLCBieXRlY29k
ZU9mZnNldCwgb3V0KTsKKyAgICAgICAgcmV0dXJuIG91dDsKKyAgICB9CisKKyAgICB2b2lkIHJ1
bigpCisgICAgeworICAgICAgICAvLyBUaGUgcmVzdW1lZCB2YXJpYWJsZXMgYW5hbHlzaXMgaXMg
YWxtb3N0IHRoZSBzYW1lIHRvIHRoZSBnZW5lcmF0b3JpZmljYXRpb24ncyB1c3VhbCBsaXZlbmVz
cyBhbmFseXNpcywKKyAgICAgICAgLy8gZXhjZXB0IGZvciBkcm9wcGluZyB0aGUgZWRnZXMgYmV0
d2VlbiB0aGUgc2F2ZSBwb2ludHMgYW5kIHRoZSBtZXJnZSBwb2ludHMuCisKKyAgICAgICAgQnl0
ZWNvZGVHcmFwaDxVbmxpbmtlZENvZGVCbG9jaz4mIGdyYXBoID0gbV9nZW5lcmF0b3JpZmljYXRp
b24uZ3JhcGgoKTsKKyAgICAgICAgVW5saW5rZWRDb2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2Nr
ID0gZ3JhcGguY29kZUJsb2NrKCk7CisgICAgICAgIHVuc2lnbmVkIG51bWJlck9mVmFyaWFibGVz
ID0gdW5saW5rZWRDb2RlQmxvY2stPm1fbnVtQ2FsbGVlTG9jYWxzOworICAgICAgICBmb3IgKHN0
ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+JiBibG9jayA6IGdyYXBoLmJhc2ljQmxv
Y2tzKCkpIHsKKyAgICAgICAgICAgIGJsb2NrLT5pbigpLnJlc2l6ZShudW1iZXJPZlZhcmlhYmxl
cyk7CisgICAgICAgICAgICBibG9jay0+b3V0KCkucmVzaXplKG51bWJlck9mVmFyaWFibGVzKTsK
KyAgICAgICAgICAgIGJsb2NrLT5pbigpLmNsZWFyQWxsKCk7CisgICAgICAgICAgICBibG9jay0+
b3V0KCkuY2xlYXJBbGwoKTsKKyAgICAgICAgfQorCisgICAgICAgIGJvb2wgY2hhbmdlZDsKKyAg
ICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBsYXN0QmxvY2sgPSBncmFwaC5iYXNpY0Jsb2Nrcygp
Lmxhc3QoKS5nZXQoKTsKKyAgICAgICAgbGFzdEJsb2NrLT5pbigpLmNsZWFyQWxsKCk7CisgICAg
ICAgIGxhc3RCbG9jay0+b3V0KCkuY2xlYXJBbGwoKTsKKyAgICAgICAgRmFzdEJpdFZlY3RvciBu
ZXdPdXQ7CisgICAgICAgIG5ld091dC5yZXNpemUobGFzdEJsb2NrLT5vdXQoKS5udW1CaXRzKCkp
OworICAgICAgICBkbyB7CisgICAgICAgICAgICBjaGFuZ2VkID0gZmFsc2U7CisgICAgICAgICAg
ICBmb3IgKHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+JiBibG9jayA6IGdyYXBo
LmJhc2ljQmxvY2tzSW5SZXZlcnNlT3JkZXIoKSkgeworICAgICAgICAgICAgICAgIG5ld091dC5j
bGVhckFsbCgpOworICAgICAgICAgICAgICAgIGJvb2wgc2F2ZUJsb2NrID0gbV9nZW5lcmF0b3Jp
ZmljYXRpb24uaXNTYXZlQmxvY2soYmxvY2suZ2V0KCkpOworICAgICAgICAgICAgICAgIGZvciAo
Qnl0ZWNvZGVCYXNpY0Jsb2NrKiBzdWNjZXNzb3IgOiBibG9jay0+c3VjY2Vzc29ycygpKSB7Cisg
ICAgICAgICAgICAgICAgICAgIC8vIERvIG5vdCBoYW5kbGUgdGhlIGVkZ2VzIGJldHdlZW4gdGhl
IHNhdmUgcG9pbnRzIGFuZCB0aGUgbWVyZ2UgcG9pbnRzLgorICAgICAgICAgICAgICAgICAgICAv
LyBJZiB0aGUgY3VycmVudCBibG9jayBpcyB0aGUgc2F2ZSBibG9jayAodGhhdCBicmFuY2ggaXMg
b3Bfc2F2ZSksCisgICAgICAgICAgICAgICAgICAgIC8vIGFuZCBpZiB0aGUgc3VjY2Vzc29yIGlz
IHRoZSBibG9jayB0aGF0IHN0YXJ0cyB3aXRoIHRoZSBtZXJnZSBwb2ludCwgd2UgZHJvcCB0aGlz
IGVkZ2UuCisgICAgICAgICAgICAgICAgICAgIGlmICghKHNhdmVCbG9jayAmJiBtX2dlbmVyYXRv
cmlmaWNhdGlvbi5pc01lcmdlQmxvY2soc3VjY2Vzc29yKSkpCisgICAgICAgICAgICAgICAgICAg
ICAgICBuZXdPdXQubWVyZ2Uoc3VjY2Vzc29yLT5pbigpKTsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgYm9vbCBvdXREaWRDaGFuZ2UgPSBibG9jay0+b3V0KCkuc2V0QW5kQ2hl
Y2sobmV3T3V0KTsKKyAgICAgICAgICAgICAgICBtX2xpdmVuZXNzQW5hbHlzaXMuY29tcHV0ZUxv
Y2FsTGl2ZW5lc3NGb3JCbG9jayhibG9jay5nZXQoKSk7CisgICAgICAgICAgICAgICAgY2hhbmdl
ZCB8PSBvdXREaWRDaGFuZ2U7CisgICAgICAgICAgICB9CisgICAgICAgIH0gd2hpbGUgKGNoYW5n
ZWQpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbiYg
bV9nZW5lcmF0b3JpZmljYXRpb247CisgICAgR2VuZXJhdG9yTGl2ZW5lc3NBbmFseXNpcyBtX2xp
dmVuZXNzQW5hbHlzaXM7Cit9OworCitjbGFzcyBTYXZlZFZhcmlhYmxlc0FuYWx5c2lzIHsKK3B1
YmxpYzoKKyAgICBTYXZlZFZhcmlhYmxlc0FuYWx5c2lzKEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0
aW9uJiBwYXNzKQorICAgICAgICA6IG1fZ2VuZXJhdG9yaWZpY2F0aW9uKHBhc3MpCisgICAgewor
ICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIERlZkZ1bmN0b3I+CisgICAgdm9pZCBzdGVw
T3Zlckluc3RydWN0aW9uRm9yU2F2ZWRWYXJpYWJsZXMoQnl0ZWNvZGVCYXNpY0Jsb2NrKiwgdW5z
aWduZWQgYnl0ZWNvZGVPZmZzZXQsIEZhc3RCaXRWZWN0b3ImIGluLCBjb25zdCBEZWZGdW5jdG9y
JiBkZWYpCisgICAgeworICAgICAgICBCeXRlY29kZUdyYXBoPFVubGlua2VkQ29kZUJsb2NrPiYg
Z3JhcGggPSBtX2dlbmVyYXRvcmlmaWNhdGlvbi5ncmFwaCgpOworICAgICAgICBhdXRvJiBpbnN0
cnVjdGlvbnMgPSBncmFwaC5pbnN0cnVjdGlvbnMoKTsKKyAgICAgICAgVW5saW5rZWRJbnN0cnVj
dGlvbiogaW5zdHJ1Y3Rpb24gPSAmaW5zdHJ1Y3Rpb25zW2J5dGVjb2RlT2Zmc2V0XTsKKyAgICAg
ICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnN0cnVjdGlvbi0+dS5vcGNvZGU7CisgICAgICAgIFVu
bGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBncmFwaC5jb2RlQmxvY2soKTsKKworICAgICAg
ICAvLyBvcF9yZXN1bWUgY2xlYXJzIGFsbCB0aGUgZGVmcy4KKyAgICAgICAgaWYgKG9wY29kZUlE
ID09IG9wX3Jlc3VtZSkgeworICAgICAgICAgICAgaW4uY2xlYXJBbGwoKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZz
ZXQoY29kZUJsb2NrLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb24sIFsmXSAoVW5saW5rZWRDb2RlQmxv
Y2sqLCBVbmxpbmtlZEluc3RydWN0aW9uKiwgT3Bjb2RlSUQsIGludCBvcGVyYW5kKSB7CisgICAg
ICAgICAgICBpZiAoaXNWYWxpZFJlZ2lzdGVyRm9yTGl2ZW5lc3Mob3BlcmFuZCkpCisgICAgICAg
ICAgICAgICAgZGVmKFZpcnR1YWxSZWdpc3RlcihvcGVyYW5kKS50b0xvY2FsKCkpOworICAgICAg
ICB9KTsKKyAgICB9CisKKyAgICBib29sIGNvbXB1dGVMb2NhbFNhdmVkVmFyaWFibGVzRm9yQnl0
ZWNvZGVPZmZzZXQoQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaywgdW5zaWduZWQgdGFyZ2V0T2Zm
c2V0LCBGYXN0Qml0VmVjdG9yJiByZXN1bHQpCisgICAgeworICAgICAgICBBU1NFUlQoIWJsb2Nr
LT5pc0V4aXRCbG9jaygpKTsKKyAgICAgICAgQVNTRVJUKCFibG9jay0+aXNFbnRyeUJsb2NrKCkp
OworCisgICAgICAgIEZhc3RCaXRWZWN0b3IgaW4gPSBibG9jay0+aW4oKTsKKworICAgICAgICBm
b3IgKHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0IDogYmxvY2stPmJ5dGVjb2RlT2Zmc2V0cygpKSB7
CisgICAgICAgICAgICBpZiAodGFyZ2V0T2Zmc2V0IDw9IGJ5dGVjb2RlT2Zmc2V0KQorICAgICAg
ICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBzdGVwT3Zlckluc3RydWN0aW9uRm9yU2F2
ZWRWYXJpYWJsZXMoCisgICAgICAgICAgICAgICAgYmxvY2ssIGJ5dGVjb2RlT2Zmc2V0LCBpbiwK
KyAgICAgICAgICAgICAgICBbJl0gKHVuc2lnbmVkIGJpdEluZGV4KSB7CisgICAgICAgICAgICAg
ICAgICAgIC8vIFRoaXMgaXMgdGhlIGRlZiBmdW5jdG9yLCBzbyB3ZSBzZXQgdGhlIGJpdC4KKyAg
ICAgICAgICAgICAgICAgICAgaW4uc2V0KGJpdEluZGV4KTsKKyAgICAgICAgICAgICAgICB9KTsK
KyAgICAgICAgfQorCisgICAgICAgIHJldHVybiByZXN1bHQuc2V0QW5kQ2hlY2soaW4pOworICAg
IH0KKworICAgIGJvb2wgY29tcHV0ZUxvY2FsU2F2ZWRWYXJpYWJsZXNGb3JCbG9jayhCeXRlY29k
ZUJhc2ljQmxvY2sqIGJsb2NrKQorICAgIHsKKyAgICAgICAgaWYgKGJsb2NrLT5pc0V4aXRCbG9j
aygpIHx8IGJsb2NrLT5pc0VudHJ5QmxvY2soKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgcmV0dXJuIGNvbXB1dGVMb2NhbFNhdmVkVmFyaWFibGVzRm9yQnl0ZWNvZGVPZmZz
ZXQoYmxvY2ssIGJsb2NrLT5sZWFkZXJCeXRlY29kZU9mZnNldCgpICsgYmxvY2stPnRvdGFsQnl0
ZWNvZGVMZW5ndGgoKSwgYmxvY2stPm91dCgpKTsKKyAgICB9CisKKyAgICBGYXN0Qml0VmVjdG9y
IGdldFNhdmVkVmFyaWFibGVzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQodW5zaWduZWQgYnl0ZWNvZGVP
ZmZzZXQpCisgICAgeworICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrID0gbV9nZW5l
cmF0b3JpZmljYXRpb24uZ3JhcGgoKS5maW5kQmFzaWNCbG9ja0ZvckJ5dGVjb2RlT2Zmc2V0KGJ5
dGVjb2RlT2Zmc2V0KTsKKyAgICAgICAgQVNTRVJUKGJsb2NrKTsKKyAgICAgICAgQVNTRVJUKCFi
bG9jay0+aXNFbnRyeUJsb2NrKCkpOworICAgICAgICBBU1NFUlQoIWJsb2NrLT5pc0V4aXRCbG9j
aygpKTsKKyAgICAgICAgRmFzdEJpdFZlY3RvciBpbjsKKyAgICAgICAgaW4ucmVzaXplKGJsb2Nr
LT5pbigpLm51bUJpdHMoKSk7CisgICAgICAgIGNvbXB1dGVMb2NhbFNhdmVkVmFyaWFibGVzRm9y
Qnl0ZWNvZGVPZmZzZXQoYmxvY2ssIGJ5dGVjb2RlT2Zmc2V0LCBpbik7CisgICAgICAgIHJldHVy
biBpbjsKKyAgICB9CisKKyAgICB2b2lkIHJ1bigpCisgICAgeworICAgICAgICAvLyBJZiB3ZSBz
YXZlIGFsbCB0aGUgdmFyaWFibGUgdGhhdCB3aWxsIGJlIHJlc3VtZWQsIGl0J3MgT0suCisgICAg
ICAgIC8vIEJ1dCB3ZSBjYW4gYXZvaWQgc29tZSBzYXZlZCB2YXJpYWJsZXMgdGhhdCBhcmUgb25s
eSBkZWZpbmVkIGJ5IHRoZSBwcmV2aW91cyBvcF9yZXN1bWUuCisgICAgICAgIC8vCisgICAgICAg
IC8vIEluIHRoaXMgcGhhc2UsIHdlIHBlcmZvcm0gZm9yd2FyZCBhbmFseXNpcyB0byBleHRyYWN0
IHdoaWNoIHZhcmlhYmxlcyBuZWVkIHRvIGJlIG5ld2x5IHNhdmVkIHdoZW4gZXhlY3V0aW5nIG9w
X3NhdmUuCisgICAgICAgIC8vIFdlIGNhbGN1bGF0ZSB0aGUgcmVnaXN0ZXJzIHRoYXQgaXMgZGVm
aW5lZCBpbiBub24tb3BfcmVzdW1lIGFuZCBjYW4gcmVhY2ggdG8gdGhlIG9wX3NhdmUuCisgICAg
ICAgIC8vCisgICAgICAgIC8vICAgb3BfcmVzdW1lLCBkZWZpbmUgcjEKKyAgICAgICAgLy8gICAu
Li4KKyAgICAgICAgLy8gICAuLi4KKyAgICAgICAgLy8gICBuby1qdW1wcyAmIG5vIHIxIGRlZnMu
CisgICAgICAgIC8vICAgLi4uCisgICAgICAgIC8vICAgb3Bfc2F2ZSAgIyBIZXJlLCBpdCBpcyBu
b3QgbmVjZXNzYXJ5IHRvIHNhdmUgcjEuCisgICAgICAgIEJ5dGVjb2RlR3JhcGg8VW5saW5rZWRD
b2RlQmxvY2s+JiBncmFwaCA9IG1fZ2VuZXJhdG9yaWZpY2F0aW9uLmdyYXBoKCk7CisgICAgICAg
IFVubGlua2VkQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jayA9IGdyYXBoLmNvZGVCbG9jaygp
OworCisgICAgICAgIC8vIFdlIGNvbnNpZGVyIHRoZSBiYXNpYyBibG9ja3Mgd2l0aGluIHRoZSB0
cnkgcmFuZ2UgYXJlIGNvbnNpZGVyZWQgYXMgdGhlIGltcGxpY2l0IHByZWRlY2Vzc29ycyBvZiB0
aGUgaGFuZGxlcnMuCisgICAgICAgIC8vIFRoZSBkZWZzIGluIHRoZXNlIGJhc2ljIGJsb2NrcyBh
cmUgY2FycmllZCB0byB0aGUgZXhjZXB0aW9uIGhhbmRsZXIuIEFuZCBpZiB0aGUgb3Bfc2F2ZSBp
cyBleGVjdXRlZCBpbiB0aGUgaGFuZGxlciwKKyAgICAgICAgLy8gY2FycmllZCBkZWZzIHNob3Vs
ZCBiZSBhbHNvIGNvbnNpZGVyZWQuCisgICAgICAgIC8vCisgICAgICAgIC8vIEhlcmUsIHdlIGFk
ZCB0aGUgd2hvbGUgYmFzaWMgYmxvY2tzIGFzIHRoZSBpbXBsaWNpdCBwcmVkZWNlc3NvcnMgb2Yg
dGhlIGhhbmRsZXJzIGZvciBzaW1wbGljaXR5LgorICAgICAgICAvLyBUaGlzIGlzIGEgbGl0dGxl
IGJpdCBjb25zZXJ2YXRpdmU6IHRoZSB0cnkgcmFuZ2UgbWF5IG5vdCBjb3ZlciBhbGwgdGhlIGJh
c2ljIGJsb2NrLiBCdXQgc2luY2UgdGhlIG91dCBzZXQgc3RhdHVzIGF0CisgICAgICAgIC8vIHRo
ZSB0YWlsIG9mIHRoZSBiYXNpYyBibG9jayBpcyBhbHdheXMgbGFyZ2VyIHRoYW4gdGhlIG91dCBz
ZXQgc3RhdHVzIGluIHRoZSBtaWRkbGUgb2YgdGhlIGJhc2ljIGJsb2NrcywgdGhpcyBkb2VzIG5v
dAorICAgICAgICAvLyBmYWlsIHRvIGtlZXAgdGhlIHZhcmlhYmxlcyB0aGF0IHNob3VsZCBiZSBz
YXZlZC4KKyAgICAgICAgLy8KKyAgICAgICAgLy8gT25seSB0aGUgZXhjZXB0aW9uIGlzIHRoZSBv
cF9yZXN1bWUgYmxvY2s6IG9wX3Jlc3VtZSBjbGVhcnMgYWxsIHRoZSBkZWZzLiBCdXQgc2luY2Ug
dGhlIHJhbmdlIGJldHdlZW4gdGhlIGp1bXAgdGFyZ2V0CisgICAgICAgIC8vIGZyb20gdGhlIGds
b2JhbCBkaXNwYXRjaCBhbmQgb3BfcmVzdW1lIGlzIG5ldmVyIGNvdmVyZWQgYnkgdGhlIHRyeSBy
YW5nZSwgaXQgaXMgbm90IGEgcHJvYmxlbS4KKyAgICAgICAgVmVjdG9yPE9wdGlvbmFsPEZhc3RC
aXRWZWN0b3I+PiBwb3NzaWJsZVByZWRlY2Vzc29yc0ZvckhhbmRsZXJzOworICAgICAgICBwb3Nz
aWJsZVByZWRlY2Vzc29yc0ZvckhhbmRsZXJzLnJlc2l6ZShncmFwaC5iYXNpY0Jsb2NrcygpLnNp
emUoKSk7CisgICAgICAgIHsKKyAgICAgICAgICAgIGF1dG8mIGluc3RydWN0aW9ucyA9IGdyYXBo
Lmluc3RydWN0aW9ucygpOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHVu
bGlua2VkQ29kZUJsb2NrLT5udW1iZXJPZkV4Y2VwdGlvbkhhbmRsZXJzKCk7ICsraSkgeworICAg
ICAgICAgICAgICAgIGF1dG8mIGhhbmRsZXIgPSB1bmxpbmtlZENvZGVCbG9jay0+ZXhjZXB0aW9u
SGFuZGxlcihpKTsKKworICAgICAgICAgICAgICAgIEZhc3RCaXRWZWN0b3IgcHJlZGVjZXNzb3Jz
OworICAgICAgICAgICAgICAgIHByZWRlY2Vzc29ycy5yZXNpemUoZ3JhcGguYmFzaWNCbG9ja3Mo
KS5zaXplKCkpOworICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQg
PSBoYW5kbGVyLnN0YXJ0OyBieXRlY29kZU9mZnNldCA8IGhhbmRsZXIuZW5kOykgeworICAgICAg
ICAgICAgICAgICAgICBVbmxpbmtlZEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9ICZpbnN0cnVj
dGlvbnNbYnl0ZWNvZGVPZmZzZXRdOworICAgICAgICAgICAgICAgICAgICBPcGNvZGVJRCBvcGNv
ZGVJRCA9IGluc3RydWN0aW9uLT51Lm9wY29kZTsKKyAgICAgICAgICAgICAgICAgICAgdW5zaWdu
ZWQgb3Bjb2RlTGVuZ3RoID0gb3Bjb2RlTGVuZ3Roc1tvcGNvZGVJRF07CisKKyAgICAgICAgICAg
ICAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBwb3NzaWJsZVByZWRlY2Vzc29yID0gZ3JhcGgu
ZmluZEJhc2ljQmxvY2tGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCk7CisgICAgICAg
ICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHBvc3NpYmxlUHJlZGVjZXNzb3IpOworICAgICAg
ICAgICAgICAgICAgICBwcmVkZWNlc3NvcnMuc2V0KHBvc3NpYmxlUHJlZGVjZXNzb3ItPmluZGV4
KCkpOworCisgICAgICAgICAgICAgICAgICAgIGJ5dGVjb2RlT2Zmc2V0ICs9IG9wY29kZUxlbmd0
aDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2Nr
KiBoYW5kbGVyQmxvY2sgPSBncmFwaC5maW5kQmFzaWNCbG9ja1dpdGhMZWFkZXJPZmZzZXQoaGFu
ZGxlci50YXJnZXQpOworICAgICAgICAgICAgICAgIHBvc3NpYmxlUHJlZGVjZXNzb3JzRm9ySGFu
ZGxlcnNbaGFuZGxlckJsb2NrLT5pbmRleCgpXSA9IFdURk1vdmUocHJlZGVjZXNzb3JzKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHVuc2lnbmVkIG51bWJlck9mVmFyaWFi
bGVzID0gdW5saW5rZWRDb2RlQmxvY2stPm1fbnVtQ2FsbGVlTG9jYWxzOworICAgICAgICBmb3Ig
KHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+JiBibG9jayA6IGdyYXBoLmJhc2lj
QmxvY2tzKCkpIHsKKyAgICAgICAgICAgIGJsb2NrLT5pbigpLnJlc2l6ZShudW1iZXJPZlZhcmlh
Ymxlcyk7CisgICAgICAgICAgICBibG9jay0+b3V0KCkucmVzaXplKG51bWJlck9mVmFyaWFibGVz
KTsKKyAgICAgICAgICAgIGJsb2NrLT5pbigpLmNsZWFyQWxsKCk7CisgICAgICAgICAgICBibG9j
ay0+b3V0KCkuY2xlYXJBbGwoKTsKKyAgICAgICAgfQorCisgICAgICAgIGJvb2wgY2hhbmdlZDsK
KyAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBmaXJzdEJsb2NrID0gZ3JhcGguYmFzaWNCbG9j
a3MoKS5maXJzdCgpLmdldCgpOworICAgICAgICBGYXN0Qml0VmVjdG9yIG5ld0luOworICAgICAg
ICBuZXdJbi5yZXNpemUoZmlyc3RCbG9jay0+aW4oKS5udW1CaXRzKCkpOworICAgICAgICBkbyB7
CisgICAgICAgICAgICBjaGFuZ2VkID0gZmFsc2U7CisgICAgICAgICAgICBmb3IgKHN0ZDo6dW5p
cXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+JiBibG9jayA6IGdyYXBoLmJhc2ljQmxvY2tzKCkp
IHsKKyAgICAgICAgICAgICAgICBuZXdJbi5jbGVhckFsbCgpOworICAgICAgICAgICAgICAgIGJv
b2wgbWVyZ2VCbG9jayA9IG1fZ2VuZXJhdG9yaWZpY2F0aW9uLmlzTWVyZ2VCbG9jayhibG9jay5n
ZXQoKSk7CisgICAgICAgICAgICAgICAgZm9yIChCeXRlY29kZUJhc2ljQmxvY2sqIHByZWRlY2Vz
c29yIDogYmxvY2stPnByZWRlY2Vzc29ycygpKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIE1l
cmdlIHRoZSBvdXQgc2V0IG9mIHRoZSBpbmNvbWluZyBwcmVkZWNlc3NvcnMgdW5sZXNzIHRoZSBj
dXJyZW50IGJsb2NrIHN0YXJ0cworICAgICAgICAgICAgICAgICAgICAvLyB3aXRoIHRoZSBtZXJn
ZSBwb2ludCBhbmQgdGhlIHByZWRlY2Vzc29yIGVuZHMgd2l0aCB0aGUgc2F2ZSBwb2ludC4KKyAg
ICAgICAgICAgICAgICAgICAgaWYgKCEobWVyZ2VCbG9jayAmJiBtX2dlbmVyYXRvcmlmaWNhdGlv
bi5pc1NhdmVCbG9jayhwcmVkZWNlc3NvcikpKQorICAgICAgICAgICAgICAgICAgICAgICAgbmV3
SW4ubWVyZ2UocHJlZGVjZXNzb3ItPm91dCgpKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgICAgICBpZiAoYXV0byYgb3B0aW9uYWxQcmVkZWNlc3NvclNldCA9IHBvc3NpYmxlUHJl
ZGVjZXNzb3JzRm9ySGFuZGxlcnNbYmxvY2stPmluZGV4KCldKSB7CisgICAgICAgICAgICAgICAg
ICAgIG9wdGlvbmFsUHJlZGVjZXNzb3JTZXQtPmZvckVhY2hTZXRCaXQoWyZdICh1bnNpZ25lZCBi
bG9ja0luZGV4KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBuZXdJbi5tZXJnZShncmFwaC5i
YXNpY0Jsb2NrcygpW2Jsb2NrSW5kZXhdLT5vdXQoKSk7CisgICAgICAgICAgICAgICAgICAgIH0p
OworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGJsb2NrLT5pbigpLnNldChu
ZXdJbik7CisgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBjb21wdXRlTG9jYWxTYXZlZFZhcmlh
Ymxlc0ZvckJsb2NrKGJsb2NrLmdldCgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSB3aGls
ZSAoY2hhbmdlZCk7CisgICAgfQorCitwcml2YXRlOgorICAgIEJ5dGVjb2RlR2VuZXJhdG9yaWZp
Y2F0aW9uJiBtX2dlbmVyYXRvcmlmaWNhdGlvbjsKK307CisKKwordm9pZCBCeXRlY29kZUdlbmVy
YXRvcmlmaWNhdGlvbjo6cnVuKCkKK3sKKyAgICAvLyBGaXJzdCwgd2UgY2FsY3VsYXRlIHRoZSBs
aXZlbmVzcyBhdCBlYWNoIG1lcmdlIHBvaW50LiBUaGlzIGdpdmVzIHVzIHRoZSBpbmZvcm1hdGlv
biB3aGljaCByZWdpc3RlcnMgc2hvdWxkIGJlIHNhdmVkIGFuZCByZXN1bWVkIGNvbnNlcnZhdGl2
ZWx5LgorICAgIC8vIEhvd2V2ZXIsIHRoaXMgaW5mb3JtYXRpb24gaXMgdG9vIGNvbnNlcnZhdGl2
ZS4gV2Ugbm93IHVubmVjZXNzYXJpbHkgc2F2ZSBhbmQgcmVzdW1lIHRoZSByZWdpc3RlcnMuCisg
ICAgLy8gV2hlbiB0aGUgbG9jYWwgcmVnaXN0ZXIgaXMgcmVmZXJlbmNlZCBmcm9tIHRoZSBwb2lu
dCB3aGljaCBpcyBvdmVyIG11bHRpcGxlIHlpZWxkcywgdGhlIHByb2JsZW0gaGFwcGVucy4KKyAg
ICAvLworICAgIC8vICAgZnVuY3Rpb24gKmdlbigpCisgICAgLy8gICB7CisgICAgLy8gICAgICAg
dmFyIHRhcmdldCA9IDQyOworICAgIC8vICAgICAgIHlpZWxkIDMwOyAgLy8gSGVyZSwgd2Ugc2hv
dWxkIHNhdmUgInRhcmdldCIuIEl0IGlzIE9LLiBCdXQgYXQgdGhlIHJlc3VtZSBwb2ludCwgd2Ug
dW5uZWNlc3NhcnkgcmVzdW1lICJ0YXJnZXQiIGhlcmUuCisgICAgLy8gICAgICAgeWllbGQgNDA7
ICAvLyBBbmQgaGVyZSwgd2UgdW5uZWNlc3NhcmlseSBzYXZlICJ0YXJnZXQiLCBzaW5jZSBpdCBp
cyAqZGVmKmluZWQgYnkgdGhlIHByZXZpb3VzIHJlc3VtZS4KKyAgICAvLyAgICAgICB5aWVsZCB0
YXJnZXQ7ICAvLyBBbmQgcmVmZXJlbmNlIHRoZSAidGFyZ2V0IiBoZXJlLgorICAgIC8vICAgfQor
ICAgIC8vCisgICAgLy8gSW4gdGhlIGFib3ZlIGV4YW1wbGUsIGZpcnN0IHlpZWxkJ3MgcmVzdW1l
IGFuZCBzZWNvbmQgeWllbGQncyBzYXZlIGlzIHVubmVjZXNzYXJ5IHNpbmNlIHRoZSB2YWx1ZSBp
cyBub3QgY2hhbmdlZCBkdXJpbmcgdGhlIHNlY29uZCBjYWxsIG9mIG5leHQoKS4KKyAgICAvLyBU
byByZWR1Y2UgdGhlIHVubmVjZXNzYXJ5IHJlZ2lzdGVyIHNhdmUgYW5kIHJlc3VtZSwgd2UgcnVu
IDIgYW5hbHlzaXMsICJyZXN1bWVkIHZhcmlhYmxlcyBhbmFseXNpcyIgYW5kICJzYXZlZCB2YXJp
YWJsZXMgYW5hbHlzaXMiLgorICAgIC8vIEF0IHRoYXQgdGltZSwgd2UgZHJvcCB0aGUgZWRnZSBm
cm9tIG9wX3NhdmUgdG8gdGhlIG1lcmdlIHBvaW50LiBTbyB0aGUgZ3JhcGggbm93IGJlY29tZXMg
YXMgZm9sbG93cy4KKyAgICAvLworICAgIC8vIEJlZm9yZToKKyAgICAvLyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAob2YgY291cnNlLCBzdWNoIGVkZ2VzIGNhbiBiZSBzZWVuKQorICAgIC8vICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcF9yZXQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICAg
Ly8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHwKKyAgICAvLyAgICAgICAgIGVudHJ5IC0+IGdlbmVyYXRvciBzd2l0Y2ggLS0tLT4gb3Bfc2F2
ZSAtLS0tLS0tLS0tLS0tLSsgICAgICAgICAgICAgICB8ICAgICAgICBvcF9yZXQgICAgICAgICAg
ICAgICAgICAgfAorICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdiAgICAgICAgICAgICAgIHwgICAgICAgICAgXiAgICAg
ICAgICAgICAgICAgICAgICB8CisgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICArLS0tLS0t
LS0tLS0tLS0+IG9wX3Jlc3VtZSAtLS0tLT4gbWVyZ2UgcG9pbnQgLT4gLi4uLi4uKy4uLi4uLT4g
b3Bfc2F2ZSAtLS0tLSsgICAgICAgICAgIHwKKyAgICAvLyAgICAgICAgICAgICAgICAgICAgICAg
IHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdiAgICAgICAgICAgdgorICAgIC8vICAgICAgICAgICAgICAg
ICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tPiBvcF9yZXN1bWUgLS0tLT4gbWVyZ2UgcG9pbnQgLT4gLi4uLi4uCisgICAgLy8KKyAg
ICAvLyBBZnRlcjoKKyAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob2YgY291cnNlLCBzdWNo
IGVkZ2VzIGNhbiBiZSBzZWVuKQorICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBvcF9yZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICAgLy8gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIF4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAvLyAgICAgICAgIGVudHJ5
IC0+IGdlbmVyYXRvciBzd2l0Y2ggLS0tLT4gb3Bfc2F2ZSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB8ICAgICAgICBvcF9yZXQgICAgICAgICAgICAgICAgICAgfAorICAgIC8vICAgICAg
ICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHwgICAgICAgICAgXiAgICAgICAgICAgICAgICAgICAgICB8CisgICAg
Ly8gICAgICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0+IG9wX3Jlc3VtZSAtLS0t
LT4gbWVyZ2UgcG9pbnQgLT4gLi4uLi4uKy4uLi4uLT4gb3Bfc2F2ZSAgICAgICAgICAgICAgICAg
IHwKKyAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdgorICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPiBvcF9yZXN1bWUgLS0tLT4g
bWVyZ2UgcG9pbnQgLT4gLi4uLi4uCisgICAgLy8KKyAgICAvLyBJbiByZXN1bWVkIHZhcmlhYmxl
cyBhbmFseXNpcywgd2UganVzdCBydW4gdGhlIGxpdmVuZXNzIGFuYWx5c2lzIGFnYWluIG9udG8g
dGhpcyAiQWZ0ZXIiIGdyYXBoLiBUaGUgYW5hbHlzaXMgZXh0cmFjdHMgdGhlIGxpdmVuZXNzIGF0
IGVhY2ggbWVyZ2UgcG9pbnQsCisgICAgLy8gYW5kIHRoaXMgbGl2ZW5lc3Mgb25seSBjb25zaWRl
cnMgdGhlIHJlYWNoYWJsZSBibG9ja3MgZnJvbSB0aGUgdGFyZ2V0IG9wX3Jlc3VtZS4gVGhlIHJl
c3VsdCByZWdpc3RlcnMgYXJlIHNtYWxsZXIgc2V0IHRoYW4gdGhlIHNldCB3aGljaCBpcyBleHRy
YWN0ZWQgaW4KKyAgICAvLyB0aGUgcHJldmlvdXMgbGl2ZW5lc3MgYW5hbHlzaXMuCisgICAgLy8K
KyAgICAvLyBJbiBzYXZlZCB2YXJpYWJsZXMgYW5hbHlzaXMsIHdlIHJ1biB0aGUgZm9yd2FyZCBh
bmFseXNpcyBvbnRvIHRoaXMgIkFmdGVyIiBncmFwaC4gSW4gdGhpcyBmb3J3YXJkIGFuYWx5c2lz
LCB3ZSBwcm9wYWdhdGUgdGhlICJkZWYicy4KKyAgICAvLyBUaGlzIGFuYWx5c2lzIGV4dHJhY3Rz
IHRoZSBuZXdseSBkZWYtZWQgcmVnaXN0ZXJzIHRoYXQgY2FuIHJlYWNoIHRvIHRoZSBvcF9zYXZl
IHBvaW50LiBCdXQgdGhpcyBuZXdseSBkZWYtZWQgcmVnaXN0ZXJzIGluY2x1ZGUgdGhlIHJlZ2lz
dGVycyB0aGF0IHdvbid0IGJlCisgICAgLy8gdXNlZCBpbiB0aGUgc3Vic2VxdWVudCBuZXh0KCkg
Y2FsbHMgYWZ0ZXIgdGhpcyBvcF9zYXZlLiBTbyB3ZSBleHRyYWN0IHRoZSBuZWNlc3NhcmlseSBz
YXZlZCByZWdpc3RlcnMgYnkgbWFza2luZyBsaXZlIHJlZ2lzdGVycyB3aXRoIHRoaXMgbmV3bHkg
ZGVmLWVkIHJlZ2lzdGVycyBiaXQgc2V0LgorCisgICAgeworICAgICAgICBHZW5lcmF0b3JMaXZl
bmVzc0FuYWx5c2lzIHBhc3MoKnRoaXMpOworICAgICAgICBwYXNzLnJ1bigpOworICAgICAgICBm
b3IgKFlpZWxkRGF0YSYgZGF0YSA6IG1feWllbGRzKQorICAgICAgICAgICAgZGF0YS5saXZlbmVz
cyA9IHBhc3MuZ2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29kZU9mZnNldChkYXRhLm1lcmdlUG9pbnQp
OworICAgIH0KKworICAgIHsKKyAgICAgICAgUmVzdW1lZFZhcmlhYmxlc0FuYWx5c2lzIHBhc3Mo
KnRoaXMpOworICAgICAgICBwYXNzLnJ1bigpOworICAgICAgICBmb3IgKFlpZWxkRGF0YSYgZGF0
YSA6IG1feWllbGRzKSB7CisgICAgICAgICAgICBkYXRhLnJlc3VtZWQgPSBkYXRhLmxpdmVuZXNz
OworICAgICAgICAgICAgZGF0YS5yZXN1bWVkLmZpbHRlcihwYXNzLmdldFJlc3VtZWRWYXJpYWJs
ZXNJbmZvQXRCeXRlY29kZU9mZnNldChkYXRhLm1lcmdlUG9pbnQpKTsKKyAgICAgICAgfQorICAg
IH0KKworICAgIHsKKyAgICAgICAgU2F2ZWRWYXJpYWJsZXNBbmFseXNpcyBwYXNzKCp0aGlzKTsK
KyAgICAgICAgcGFzcy5ydW4oKTsKKyAgICAgICAgZm9yIChZaWVsZERhdGEmIGRhdGEgOiBtX3lp
ZWxkcykgeworICAgICAgICAgICAgZGF0YS5zYXZlZCA9IGRhdGEubGl2ZW5lc3M7CisgICAgICAg
ICAgICBkYXRhLnNhdmVkLmZpbHRlcihwYXNzLmdldFNhdmVkVmFyaWFibGVzSW5mb0F0Qnl0ZWNv
ZGVPZmZzZXQoZGF0YS5zYXZlUG9pbnQpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIFVubGlu
a2VkQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBtX2dyYXBoLmNvZGVCbG9jaygpOworICAgIGZvciAo
Y29uc3QgWWllbGREYXRhJiBkYXRhIDogbV95aWVsZHMpIHsKKyAgICAgICAgVmlydHVhbFJlZ2lz
dGVyIHNjb3BlID0gdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoNSk7CisKKyAgICAgICAgLy8g
b3Bfc2F2ZS4KKyAgICAgICAgZGF0YS5zYXZlZC5mb3JFYWNoU2V0Qml0KFsmXShzaXplX3QgaW5k
ZXgpIHsKKyAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kID0gdmlydHVhbFJlZ2lz
dGVyRm9yTG9jYWwoaW5kZXgpOworICAgICAgICAgICAgU3RvcmFnZSBzdG9yYWdlID0gc3RvcmFn
ZUZvckdlbmVyYXRvckxvY2FsKGluZGV4KTsKKworICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQu
aW5zZXJ0KGRhdGEuc2F2ZVBvaW50LCBCeXRlY29kZU1vZGlmaWNhdGlvblNldDo6SW5zZXJ0ZWRC
eXRlY29kZSB7IHsKKyAgICAgICAgICAgICAgICBvcF9wdXRfdG9fc2NvcGUsCisgICAgICAgICAg
ICAgICAgc2NvcGUub2Zmc2V0KCksIC8vIHNjb3BlCisgICAgICAgICAgICAgICAgc3RvcmFnZS5p
ZGVudGlmaWVySW5kZXgsIC8vIGlkZW50aWZpZXIKKyAgICAgICAgICAgICAgICBvcGVyYW5kLm9m
ZnNldCgpLCAvLyB2YWx1ZQorICAgICAgICAgICAgICAgIEdldFB1dEluZm8oRG9Ob3RUaHJvd0lm
Tm90Rm91bmQsIExvY2FsQ2xvc3VyZVZhciwgSW5pdGlhbGl6YXRpb25Nb2RlOjpOb3RJbml0aWFs
aXphdGlvbikub3BlcmFuZCgpLCAvLyBpbmZvCisgICAgICAgICAgICAgICAgbV9nZW5lcmF0b3JG
cmFtZVN5bWJvbFRhYmxlSW5kZXgsIC8vIHN5bWJvbCB0YWJsZSBjb25zdGFudCBpbmRleAorICAg
ICAgICAgICAgICAgIHN0b3JhZ2Uuc2NvcGVPZmZzZXQub2Zmc2V0KCksIC8vIHNjb3BlIG9mZnNl
dAorICAgICAgICAgICAgfSB9KTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgLy8gb3BfcmVzdW1l
LgorICAgICAgICBkYXRhLnJlc3VtZWQuZm9yRWFjaFNldEJpdChbJl0oc2l6ZV90IGluZGV4KSB7
CisgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCA9IHZpcnR1YWxSZWdpc3RlckZv
ckxvY2FsKGluZGV4KTsKKyAgICAgICAgICAgIFN0b3JhZ2Ugc3RvcmFnZSA9IHN0b3JhZ2VGb3JH
ZW5lcmF0b3JMb2NhbChpbmRleCk7CisKKyAgICAgICAgICAgIFVubGlua2VkVmFsdWVQcm9maWxl
IHByb2ZpbGUgPSBjb2RlQmxvY2stPmFkZFZhbHVlUHJvZmlsZSgpOworICAgICAgICAgICAgbV9p
bnNlcnRpb25TZXQuaW5zZXJ0KGRhdGEucmVzdW1lUG9pbnQsIEJ5dGVjb2RlTW9kaWZpY2F0aW9u
U2V0OjpJbnNlcnRlZEJ5dGVjb2RlIHsgeworICAgICAgICAgICAgICAgIG9wX2dldF9mcm9tX3Nj
b3BlLAorICAgICAgICAgICAgICAgIG9wZXJhbmQub2Zmc2V0KCksIC8vIGRzdAorICAgICAgICAg
ICAgICAgIHNjb3BlLm9mZnNldCgpLCAvLyBzY29wZQorICAgICAgICAgICAgICAgIHN0b3JhZ2Uu
aWRlbnRpZmllckluZGV4LCAvLyBpZGVudGlmaWVyCisgICAgICAgICAgICAgICAgR2V0UHV0SW5m
byhEb05vdFRocm93SWZOb3RGb3VuZCwgTG9jYWxDbG9zdXJlVmFyLCBJbml0aWFsaXphdGlvbk1v
ZGU6Ok5vdEluaXRpYWxpemF0aW9uKS5vcGVyYW5kKCksIC8vIGluZm8KKyAgICAgICAgICAgICAg
ICAwLCAvLyBsb2NhbCBzY29wZSBkZXB0aAorICAgICAgICAgICAgICAgIHN0b3JhZ2Uuc2NvcGVP
ZmZzZXQub2Zmc2V0KCksIC8vIHNjb3BlIG9mZnNldAorICAgICAgICAgICAgICAgIHByb2ZpbGUg
Ly8gcHJvZmlsZQorICAgICAgICAgICAgfSB9KTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgLy8g
Q2xpcCB0aGUgdW5uZWNlc3NhcnkgYnl0ZWNvZGVzLgorICAgICAgICBtX2luc2VydGlvblNldC5y
ZW1vdmVCeXRlY29kZShkYXRhLnNhdmVQb2ludCk7CisgICAgICAgIG1faW5zZXJ0aW9uU2V0LnJl
bW92ZUJ5dGVjb2RlKGRhdGEucmVzdW1lUG9pbnQpOworICAgIH0KKworICAgIG1faW5zZXJ0aW9u
U2V0LmV4ZWN1dGUoKTsKK30KKwordm9pZCBwZXJmb3JtR2VuZXJhdG9yaWZpY2F0aW9uKFVubGlu
a2VkQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFVubGlua2VkQ29kZUJsb2NrOjpVbnBhY2tlZEluc3Ry
dWN0aW9ucyYgaW5zdHJ1Y3Rpb25zLCBTeW1ib2xUYWJsZSogZ2VuZXJhdG9yRnJhbWVTeW1ib2xU
YWJsZSwgaW50IGdlbmVyYXRvckZyYW1lU3ltYm9sVGFibGVJbmRleCkKK3sKKyAgICBCeXRlY29k
ZUdlbmVyYXRvcmlmaWNhdGlvbiBwYXNzKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb25zLCBnZW5lcmF0
b3JGcmFtZVN5bWJvbFRhYmxlLCBnZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlSW5kZXgpOworICAg
IHBhc3MucnVuKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24u
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5lYjdlYzk2ZWQ3MGRiYmEyMjExMWViMTM3NzMzZmIyMDA1NWIxMTFhCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
R2VuZXJhdG9yaWZpY2F0aW9uLmgKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNiBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiVW5saW5rZWRDb2RlQmxvY2suaCIKKworbmFtZXNw
YWNlIEpTQyB7CisKK2NsYXNzIFN5bWJvbFRhYmxlOworCit2b2lkIHBlcmZvcm1HZW5lcmF0b3Jp
ZmljYXRpb24oVW5saW5rZWRDb2RlQmxvY2sqLCBVbmxpbmtlZENvZGVCbG9jazo6VW5wYWNrZWRJ
bnN0cnVjdGlvbnMmLCBTeW1ib2xUYWJsZSogZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZSwgaW50
IGdlbmVyYXRvckZyYW1lU3ltYm9sVGFibGVJbmRleCk7CisKK30gLy8gbmFtZXNwYWNlIEpTQwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlR3JhcGgu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUdyYXBoLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYjc1NTg0YjBmYTk0NzNlYjExMzI5Yzg5YTA3OTljMDFkZTU1YjI4MQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUdyYXBoLmgK
QEAgLTAsMCArMSwxMTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgWXVzdWtlIFN1enVr
aSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEJ5dGVjb2RlR3Jh
cGhfaAorI2RlZmluZSBCeXRlY29kZUdyYXBoX2gKKworI2luY2x1ZGUgIkJ5dGVjb2RlQmFzaWNC
bG9jay5oIgorI2luY2x1ZGUgPHd0Zi9JdGVyYXRvclJhbmdlLmg+CisjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgQnl0ZWNvZGVCYXNpY0Jsb2NrOwor
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBCbG9jaz4KK2NsYXNzIEJ5dGVjb2RlR3JhcGggeworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEJ5dGVjb2Rl
R3JhcGgpOworcHVibGljOgorICAgIHR5cGVkZWYgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRl
Y29kZUJhc2ljQmxvY2s+PiBCYXNpY0Jsb2Nrc1ZlY3RvcjsKKworICAgIGlubGluZSBCeXRlY29k
ZUdyYXBoKEJsb2NrKiwgdHlwZW5hbWUgQmxvY2s6OlVucGFja2VkSW5zdHJ1Y3Rpb25zJik7CisK
KyAgICBCbG9jayogY29kZUJsb2NrKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2s7IH0KKwor
ICAgIEJhc2ljQmxvY2tzVmVjdG9yJiBiYXNpY0Jsb2NrcygpIHsgcmV0dXJuIG1fYmFzaWNCbG9j
a3M7IH0KKworICAgIHR5cGVuYW1lIEJsb2NrOjpVbnBhY2tlZEluc3RydWN0aW9ucyYgaW5zdHJ1
Y3Rpb25zKCkgeyByZXR1cm4gbV9pbnN0cnVjdGlvbnM7IH0KKworICAgIFdURjo6SXRlcmF0b3JS
YW5nZTxCYXNpY0Jsb2Nrc1ZlY3Rvcjo6cmV2ZXJzZV9pdGVyYXRvcj4gYmFzaWNCbG9ja3NJblJl
dmVyc2VPcmRlcigpCisgICAgeworICAgICAgICByZXR1cm4gV1RGOjptYWtlSXRlcmF0b3JSYW5n
ZShtX2Jhc2ljQmxvY2tzLnJiZWdpbigpLCBtX2Jhc2ljQmxvY2tzLnJlbmQoKSk7CisgICAgfQor
CisgICAgc3RhdGljIGJvb2wgYmxvY2tDb250YWluc0J5dGVjb2RlT2Zmc2V0KEJ5dGVjb2RlQmFz
aWNCbG9jayogYmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KQorICAgIHsKKyAgICAgICAg
dW5zaWduZWQgbGVhZGVyT2Zmc2V0ID0gYmxvY2stPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCk7Cisg
ICAgICAgIHJldHVybiBieXRlY29kZU9mZnNldCA+PSBsZWFkZXJPZmZzZXQgJiYgYnl0ZWNvZGVP
ZmZzZXQgPCBsZWFkZXJPZmZzZXQgKyBibG9jay0+dG90YWxCeXRlY29kZUxlbmd0aCgpOworICAg
IH0KKworICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogZmluZEJhc2ljQmxvY2tGb3JCeXRlY29kZU9m
ZnNldCh1bnNpZ25lZCBieXRlY29kZU9mZnNldCkKKyAgICB7CisgICAgICAgIC8qCisgICAgICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9iYXNpY0Jsb2Nrcy5zaXplKCk7IGkrKykg
eworICAgICAgICAgICAgICAgIGlmIChibG9ja0NvbnRhaW5zQnl0ZWNvZGVPZmZzZXQobV9iYXNp
Y0Jsb2Nrc1tpXS5nZXQoKSwgYnl0ZWNvZGVPZmZzZXQpKQorICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gbV9iYXNpY0Jsb2Nrc1tpXS5nZXQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IHJldHVybiAwOworICAgICAgICAqLworCisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29k
ZUJhc2ljQmxvY2s+KiBiYXNpY0Jsb2NrID0gYXBwcm94aW1hdGVCaW5hcnlTZWFyY2g8c3RkOjp1
bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4sIHVuc2lnbmVkPihtX2Jhc2ljQmxvY2tzLCBt
X2Jhc2ljQmxvY2tzLnNpemUoKSwgYnl0ZWNvZGVPZmZzZXQsIFtdIChzdGQ6OnVuaXF1ZV9wdHI8
Qnl0ZWNvZGVCYXNpY0Jsb2NrPiogYmFzaWNCbG9jaykgeyByZXR1cm4gKCpiYXNpY0Jsb2NrKS0+
bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKTsgfSk7CisgICAgICAgIC8vIFdlIGZvdW5kIHRoZSBibG9j
ayB3ZSB3ZXJlIGxvb2tpbmcgZm9yLgorICAgICAgICBpZiAoYmxvY2tDb250YWluc0J5dGVjb2Rl
T2Zmc2V0KCgqYmFzaWNCbG9jaykuZ2V0KCksIGJ5dGVjb2RlT2Zmc2V0KSkKKyAgICAgICAgICAg
IHJldHVybiAoKmJhc2ljQmxvY2spLmdldCgpOworCisgICAgICAgIC8vIEJhc2ljIGJsb2NrIGlz
IHRvIHRoZSBsZWZ0IG9mIHRoZSByZXR1cm5lZCBibG9jay4KKyAgICAgICAgaWYgKGJ5dGVjb2Rl
T2Zmc2V0IDwgKCpiYXNpY0Jsb2NrKS0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKSkgeworICAgICAg
ICAgICAgQVNTRVJUKGJhc2ljQmxvY2sgLSAxID49IG1fYmFzaWNCbG9ja3MuZGF0YSgpKTsKKyAg
ICAgICAgICAgIEFTU0VSVChibG9ja0NvbnRhaW5zQnl0ZWNvZGVPZmZzZXQoYmFzaWNCbG9ja1st
MV0uZ2V0KCksIGJ5dGVjb2RlT2Zmc2V0KSk7CisgICAgICAgICAgICByZXR1cm4gYmFzaWNCbG9j
a1stMV0uZ2V0KCk7CisgICAgICAgIH0KKworICAgICAgICAvLyBCYXNpYyBibG9jayBpcyB0byB0
aGUgcmlnaHQgb2YgdGhlIHJldHVybmVkIGJsb2NrLgorICAgICAgICBBU1NFUlQoJmJhc2ljQmxv
Y2tbMV0gPD0gJm1fYmFzaWNCbG9ja3MubGFzdCgpKTsKKyAgICAgICAgQVNTRVJUKGJsb2NrQ29u
dGFpbnNCeXRlY29kZU9mZnNldChiYXNpY0Jsb2NrWzFdLmdldCgpLCBieXRlY29kZU9mZnNldCkp
OworICAgICAgICByZXR1cm4gYmFzaWNCbG9ja1sxXS5nZXQoKTsKKyAgICB9CisKKyAgICBCeXRl
Y29kZUJhc2ljQmxvY2sqIGZpbmRCYXNpY0Jsb2NrV2l0aExlYWRlck9mZnNldCh1bnNpZ25lZCBs
ZWFkZXJPZmZzZXQpCisgICAgeworICAgICAgICByZXR1cm4gKCp0cnlCaW5hcnlTZWFyY2g8c3Rk
Ojp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4sIHVuc2lnbmVkPihtX2Jhc2ljQmxvY2tz
LCBtX2Jhc2ljQmxvY2tzLnNpemUoKSwgbGVhZGVyT2Zmc2V0LCBbXSAoc3RkOjp1bmlxdWVfcHRy
PEJ5dGVjb2RlQmFzaWNCbG9jaz4qIGJhc2ljQmxvY2spIHsgcmV0dXJuICgqYmFzaWNCbG9jaykt
PmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCk7IH0pKS5nZXQoKTsKKyAgICB9CisKK3ByaXZhdGU6Cisg
ICAgQmxvY2sqIG1fY29kZUJsb2NrOworICAgIEJhc2ljQmxvY2tzVmVjdG9yIG1fYmFzaWNCbG9j
a3M7CisgICAgdHlwZW5hbWUgQmxvY2s6OlVucGFja2VkSW5zdHJ1Y3Rpb25zJiBtX2luc3RydWN0
aW9uczsKK307CisKKwordGVtcGxhdGU8dHlwZW5hbWUgQmxvY2s+CitCeXRlY29kZUdyYXBoPEJs
b2NrPjo6Qnl0ZWNvZGVHcmFwaChCbG9jayogY29kZUJsb2NrLCB0eXBlbmFtZSBCbG9jazo6VW5w
YWNrZWRJbnN0cnVjdGlvbnMmIGluc3RydWN0aW9ucykKKyAgICA6IG1fY29kZUJsb2NrKGNvZGVC
bG9jaykKKyAgICAsIG1faW5zdHJ1Y3Rpb25zKGluc3RydWN0aW9ucykKK3sKKyAgICBBU1NFUlQo
bV9jb2RlQmxvY2spOworICAgIEJ5dGVjb2RlQmFzaWNCbG9jazo6Y29tcHV0ZUJ5dGVjb2RlQmFz
aWNCbG9ja3MobV9jb2RlQmxvY2ssIGluc3RydWN0aW9ucy5iZWdpbigpLCBpbnN0cnVjdGlvbnMu
c2l6ZSgpLCBtX2Jhc2ljQmxvY2tzKTsKKyAgICBBU1NFUlQobV9iYXNpY0Jsb2Nrcy5zaXplKCkp
OworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKyNlbmRpZiAvLyBCeXRlY29kZUdyYXBoX2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNz
QW5hbHlzaXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2
ZW5lc3NBbmFseXNpcy5jcHAKaW5kZXggMTdlODJhMmZiYmEwMTUwNDNlOTlkMzRlZDI1NjkzNzJi
MzZmN2E4NS4uZWI0NTlkMTI5N2M5ZjczOWVlOWZiYWExMzAzN2Y4OWY4ZTg2YWIyZCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFs
eXNpcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2
ZW5lc3NBbmFseXNpcy5jcHAKQEAgLTMxLDc0ICszMSwyMSBAQAogI2luY2x1ZGUgIkJ5dGVjb2Rl
VXNlRGVmLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiRnVsbEJ5dGVjb2Rl
TGl2ZW5lc3MuaCIKKyNpbmNsdWRlICJJbnRlcnByZXRlcklubGluZXMuaCIKICNpbmNsdWRlICJQ
cmVjaXNlSnVtcFRhcmdldHMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKIEJ5dGVjb2RlTGl2ZW5l
c3NBbmFseXNpczo6Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzKENvZGVCbG9jayogY29kZUJsb2Nr
KQotICAgIDogbV9jb2RlQmxvY2soY29kZUJsb2NrKQorICAgIDogbV9ncmFwaChjb2RlQmxvY2ss
IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkpCiB7Ci0gICAgQVNTRVJUKG1fY29kZUJsb2NrKTsK
ICAgICBjb21wdXRlKCk7CiB9CiAKLXN0YXRpYyBib29sIGlzVmFsaWRSZWdpc3RlckZvckxpdmVu
ZXNzKENvZGVCbG9jayogY29kZUJsb2NrLCBpbnQgb3BlcmFuZCkKLXsKLSAgICBpZiAoY29kZUJs
b2NrLT5pc0NvbnN0YW50UmVnaXN0ZXJJbmRleChvcGVyYW5kKSkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIAotICAgIFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnKG9wZXJhbmQpOwotICAg
IHJldHVybiB2aXJ0dWFsUmVnLmlzTG9jYWwoKTsKLX0KLQotc3RhdGljIHVuc2lnbmVkIGdldExl
YWRlck9mZnNldEZvckJhc2ljQmxvY2soc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9j
az4qIGJhc2ljQmxvY2spCi17Ci0gICAgcmV0dXJuICgqYmFzaWNCbG9jayktPmxlYWRlckJ5dGVj
b2RlT2Zmc2V0KCk7Ci19Ci0KLXN0YXRpYyBCeXRlY29kZUJhc2ljQmxvY2sqIGZpbmRCYXNpY0Js
b2NrV2l0aExlYWRlck9mZnNldChWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNC
bG9jaz4+JiBiYXNpY0Jsb2NrcywgdW5zaWduZWQgbGVhZGVyT2Zmc2V0KQotewotICAgIHJldHVy
biAoKnRyeUJpbmFyeVNlYXJjaDxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiwg
dW5zaWduZWQ+KGJhc2ljQmxvY2tzLCBiYXNpY0Jsb2Nrcy5zaXplKCksIGxlYWRlck9mZnNldCwg
Z2V0TGVhZGVyT2Zmc2V0Rm9yQmFzaWNCbG9jaykpLmdldCgpOwotfQotCi1zdGF0aWMgYm9vbCBi
bG9ja0NvbnRhaW5zQnl0ZWNvZGVPZmZzZXQoQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaywgdW5z
aWduZWQgYnl0ZWNvZGVPZmZzZXQpCi17Ci0gICAgdW5zaWduZWQgbGVhZGVyT2Zmc2V0ID0gYmxv
Y2stPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCk7Ci0gICAgcmV0dXJuIGJ5dGVjb2RlT2Zmc2V0ID49
IGxlYWRlck9mZnNldCAmJiBieXRlY29kZU9mZnNldCA8IGxlYWRlck9mZnNldCArIGJsb2NrLT50
b3RhbEJ5dGVjb2RlTGVuZ3RoKCk7Ci19Ci0KLXN0YXRpYyBCeXRlY29kZUJhc2ljQmxvY2sqIGZp
bmRCYXNpY0Jsb2NrRm9yQnl0ZWNvZGVPZmZzZXQoVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRl
Y29kZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9ja3MsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KQot
ewotLyoKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYmFzaWNCbG9ja3Muc2l6ZSgpOyBp
KyspIHsKLSAgICAgICAgaWYgKGJsb2NrQ29udGFpbnNCeXRlY29kZU9mZnNldChiYXNpY0Jsb2Nr
c1tpXS5nZXQoKSwgYnl0ZWNvZGVPZmZzZXQpKQotICAgICAgICAgICAgcmV0dXJuIGJhc2ljQmxv
Y2tzW2ldLmdldCgpOwotICAgIH0KLSAgICByZXR1cm4gMDsKLSovCi0gICAgc3RkOjp1bmlxdWVf
cHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4qIGJhc2ljQmxvY2sgPSBhcHByb3hpbWF0ZUJpbmFyeVNl
YXJjaDxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiwgdW5zaWduZWQ+KAotICAg
ICAgICBiYXNpY0Jsb2NrcywgYmFzaWNCbG9ja3Muc2l6ZSgpLCBieXRlY29kZU9mZnNldCwgZ2V0
TGVhZGVyT2Zmc2V0Rm9yQmFzaWNCbG9jayk7Ci0gICAgLy8gV2UgZm91bmQgdGhlIGJsb2NrIHdl
IHdlcmUgbG9va2luZyBmb3IuCi0gICAgaWYgKGJsb2NrQ29udGFpbnNCeXRlY29kZU9mZnNldCgo
KmJhc2ljQmxvY2spLmdldCgpLCBieXRlY29kZU9mZnNldCkpCi0gICAgICAgIHJldHVybiAoKmJh
c2ljQmxvY2spLmdldCgpOwotCi0gICAgLy8gQmFzaWMgYmxvY2sgaXMgdG8gdGhlIGxlZnQgb2Yg
dGhlIHJldHVybmVkIGJsb2NrLgotICAgIGlmIChieXRlY29kZU9mZnNldCA8ICgqYmFzaWNCbG9j
ayktPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCkpIHsKLSAgICAgICAgQVNTRVJUKGJhc2ljQmxvY2sg
LSAxID49IGJhc2ljQmxvY2tzLmRhdGEoKSk7Ci0gICAgICAgIEFTU0VSVChibG9ja0NvbnRhaW5z
Qnl0ZWNvZGVPZmZzZXQoYmFzaWNCbG9ja1stMV0uZ2V0KCksIGJ5dGVjb2RlT2Zmc2V0KSk7Ci0g
ICAgICAgIHJldHVybiBiYXNpY0Jsb2NrWy0xXS5nZXQoKTsKLSAgICB9Ci0KLSAgICAvLyBCYXNp
YyBibG9jayBpcyB0byB0aGUgcmlnaHQgb2YgdGhlIHJldHVybmVkIGJsb2NrLgotICAgIEFTU0VS
VCgmYmFzaWNCbG9ja1sxXSA8PSAmYmFzaWNCbG9ja3MubGFzdCgpKTsKLSAgICBBU1NFUlQoYmxv
Y2tDb250YWluc0J5dGVjb2RlT2Zmc2V0KGJhc2ljQmxvY2tbMV0uZ2V0KCksIGJ5dGVjb2RlT2Zm
c2V0KSk7Ci0gICAgcmV0dXJuIGJhc2ljQmxvY2tbMV0uZ2V0KCk7Ci19Ci0KIC8vIFNpbXBsaWZp
ZWQgaW50ZXJmYWNlIHRvIGJ5dGVjb2RlIHVzZS9kZWYsIHdoaWNoIGRldGVybWluZXMgZGVmcyBm
aXJzdCBhbmQgdGhlbiB1c2VzLCBhbmQgaW5jbHVkZXMKIC8vIGV4Y2VwdGlvbiBoYW5kbGVycyBp
biB0aGUgdXNlcy4KIHRlbXBsYXRlPHR5cGVuYW1lIFVzZUZ1bmN0b3IsIHR5cGVuYW1lIERlZkZ1
bmN0b3I+Ci1zdGF0aWMgdm9pZCBzdGVwT3Zlckluc3RydWN0aW9uKENvZGVCbG9jayogY29kZUJs
b2NrLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5
dGVjb2RlQmFzaWNCbG9jaz4+JiBiYXNpY0Jsb2NrcywgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQs
IGNvbnN0IFVzZUZ1bmN0b3ImIHVzZSwgY29uc3QgRGVmRnVuY3RvciYgZGVmKQorc3RhdGljIHZv
aWQgc3RlcE92ZXJJbnN0cnVjdGlvbihCeXRlY29kZUdyYXBoPENvZGVCbG9jaz4mIGdyYXBoLCB1
bnNpZ25lZCBieXRlY29kZU9mZnNldCwgY29uc3QgVXNlRnVuY3RvciYgdXNlLCBjb25zdCBEZWZG
dW5jdG9yJiBkZWYpCiB7CiAgICAgLy8gVGhpcyBhYnN0cmFjdGx5IGV4ZWN1dGUgdGhlIGluc3Ry
dWN0aW9uIGluIHJldmVyc2UuIEluc3RydWN0aW9ucyBsb2dpY2FsbHkgZmlyc3QgdXNlIG9wZXJh
bmRzIGFuZAogICAgIC8vIHRoZW4gZGVmaW5lIG9wZXJhbmRzLiBUaGlzIGxvZ2ljYWwgb3JkZXJp
bmcgaXMgbmVjZXNzYXJ5IGZvciBvcGVyYXRpb25zIHRoYXQgdXNlIGFuZCBkZWYgdGhlIHNhbWUK
QEAgLTExNSw0MSArNjIsMzUgQEAgc3RhdGljIHZvaWQgc3RlcE92ZXJJbnN0cnVjdGlvbihDb2Rl
QmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaywKICAgICAvLyB1c2Vz
IGJlZm9yZSBkZWZzLCB0aGVuIHRoZSBhZGQgb3BlcmF0aW9uIGFib3ZlIHdvdWxkIGFwcGVhciB0
byBub3QgaGF2ZSBsb2MxIGxpdmUsIHNpbmNlIHdlJ2QKICAgICAvLyBmaXJzdCBhZGQgaXQgdG8g
dGhlIG91dCBzZXQgKHRoZSB1c2UpLCBhbmQgdGhlbiB3ZSdkIHJlbW92ZSBpdCAodGhlIGRlZiku
CiAgICAgCisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBncmFwaC5jb2RlQmxvY2soKTsKKwog
ICAgIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoCi0gICAgICAgIGNvZGVCbG9jaywgYmxv
Y2ssIGJ5dGVjb2RlT2Zmc2V0LAotICAgICAgICBbJl0gKENvZGVCbG9jayogY29kZUJsb2NrLCBJ
bnN0cnVjdGlvbiosIE9wY29kZUlELCBpbnQgb3BlcmFuZCkgewotICAgICAgICAgICAgaWYgKGlz
VmFsaWRSZWdpc3RlckZvckxpdmVuZXNzKGNvZGVCbG9jaywgb3BlcmFuZCkpCisgICAgICAgIGNv
ZGVCbG9jaywgYnl0ZWNvZGVPZmZzZXQsCisgICAgICAgIFsmXSAoQ29kZUJsb2NrKiwgSW5zdHJ1
Y3Rpb24qLCBPcGNvZGVJRCwgaW50IG9wZXJhbmQpIHsKKyAgICAgICAgICAgIGlmIChpc1ZhbGlk
UmVnaXN0ZXJGb3JMaXZlbmVzcyhvcGVyYW5kKSkKICAgICAgICAgICAgICAgICBkZWYoVmlydHVh
bFJlZ2lzdGVyKG9wZXJhbmQpLnRvTG9jYWwoKSk7CiAgICAgICAgIH0pOwogCiAgICAgY29tcHV0
ZVVzZXNGb3JCeXRlY29kZU9mZnNldCgKLSAgICAgICAgY29kZUJsb2NrLCBibG9jaywgYnl0ZWNv
ZGVPZmZzZXQsCi0gICAgICAgIFsmXSAoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEluc3RydWN0aW9u
KiwgT3Bjb2RlSUQsIGludCBvcGVyYW5kKSB7Ci0gICAgICAgICAgICBpZiAoaXNWYWxpZFJlZ2lz
dGVyRm9yTGl2ZW5lc3MoY29kZUJsb2NrLCBvcGVyYW5kKSkKKyAgICAgICAgY29kZUJsb2NrLCBi
eXRlY29kZU9mZnNldCwKKyAgICAgICAgWyZdIChDb2RlQmxvY2sqLCBJbnN0cnVjdGlvbiosIE9w
Y29kZUlELCBpbnQgb3BlcmFuZCkgeworICAgICAgICAgICAgaWYgKGlzVmFsaWRSZWdpc3RlckZv
ckxpdmVuZXNzKG9wZXJhbmQpKQogICAgICAgICAgICAgICAgIHVzZShWaXJ0dWFsUmVnaXN0ZXIo
b3BlcmFuZCkudG9Mb2NhbCgpKTsKICAgICAgICAgfSk7CiAKICAgICAvLyBJZiB3ZSBoYXZlIGFu
IGV4Y2VwdGlvbiBoYW5kbGVyLCB3ZSB3YW50IHRoZSBsaXZlLWluIHZhcmlhYmxlcyBvZiB0aGUg
CiAgICAgLy8gZXhjZXB0aW9uIGhhbmRsZXIgYmxvY2sgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIGxp
dmUtaW4gb2YgdGhpcyBwYXJ0aWN1bGFyIGJ5dGVjb2RlLgogICAgIGlmIChIYW5kbGVySW5mbyog
aGFuZGxlciA9IGNvZGVCbG9jay0+aGFuZGxlckZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zm
c2V0KSkgewotICAgICAgICAvLyBGSVhNRTogVGhpcyByZXN1bWUgY2hlY2sgc2hvdWxkIG5vdCBi
ZSBuZWVkZWQuCi0gICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNTkyODEKLSAgICAgICAgSW50ZXJwcmV0ZXIqIGludGVycHJldGVyID0gY29kZUJsb2Nr
LT52bSgpLT5pbnRlcnByZXRlcjsKLSAgICAgICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0Jl
Z2luID0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpOwotICAgICAgICBJbnN0cnVj
dGlvbiogaW5zdHJ1Y3Rpb24gPSAmaW5zdHJ1Y3Rpb25zQmVnaW5bYnl0ZWNvZGVPZmZzZXRdOwot
ICAgICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGludGVycHJldGVyLT5nZXRPcGNvZGVJRChpbnN0
cnVjdGlvbi0+dS5vcGNvZGUpOwotICAgICAgICBpZiAob3Bjb2RlSUQgIT0gb3BfcmVzdW1lKSB7
Ci0gICAgICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGhhbmRsZXJCbG9jayA9IGZpbmRCYXNp
Y0Jsb2NrV2l0aExlYWRlck9mZnNldChiYXNpY0Jsb2NrcywgaGFuZGxlci0+dGFyZ2V0KTsKLSAg
ICAgICAgICAgIEFTU0VSVChoYW5kbGVyQmxvY2spOwotICAgICAgICAgICAgaGFuZGxlckJsb2Nr
LT5pbigpLmZvckVhY2hTZXRCaXQodXNlKTsKLSAgICAgICAgfQorICAgICAgICBCeXRlY29kZUJh
c2ljQmxvY2sqIGhhbmRsZXJCbG9jayA9IGdyYXBoLmZpbmRCYXNpY0Jsb2NrV2l0aExlYWRlck9m
ZnNldChoYW5kbGVyLT50YXJnZXQpOworICAgICAgICBBU1NFUlQoaGFuZGxlckJsb2NrKTsKKyAg
ICAgICAgaGFuZGxlckJsb2NrLT5pbigpLmZvckVhY2hTZXRCaXQodXNlKTsKICAgICB9CiB9CiAK
LXN0YXRpYyB2b2lkIHN0ZXBPdmVySW5zdHJ1Y3Rpb24oQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5
dGVjb2RlQmFzaWNCbG9jayogYmxvY2ssIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVC
YXNpY0Jsb2NrPj4mIGJhc2ljQmxvY2tzLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgRmFzdEJp
dFZlY3RvciYgb3V0KQorc3RhdGljIHZvaWQgc3RlcE92ZXJJbnN0cnVjdGlvbihCeXRlY29kZUdy
YXBoPENvZGVCbG9jaz4mIGdyYXBoLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgRmFzdEJpdFZl
Y3RvciYgb3V0KQogewogICAgIHN0ZXBPdmVySW5zdHJ1Y3Rpb24oCi0gICAgICAgIGNvZGVCbG9j
aywgYmxvY2ssIGJhc2ljQmxvY2tzLCBieXRlY29kZU9mZnNldCwKKyAgICAgICAgZ3JhcGgsIGJ5
dGVjb2RlT2Zmc2V0LAogICAgICAgICBbJl0gKHVuc2lnbmVkIGJpdEluZGV4KSB7CiAgICAgICAg
ICAgICAvLyBUaGlzIGlzIHRoZSB1c2UgZnVuY3Rvciwgc28gd2Ugc2V0IHRoZSBiaXQuCiAgICAg
ICAgICAgICBvdXQuc2V0KGJpdEluZGV4KTsKQEAgLTE2MCw3ICsxMDEsNyBAQCBzdGF0aWMgdm9p
ZCBzdGVwT3Zlckluc3RydWN0aW9uKENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29kZUJhc2lj
QmxvY2sqIGJsb2NrLAogICAgICAgICB9KTsKIH0KIAotc3RhdGljIHZvaWQgY29tcHV0ZUxvY2Fs
TGl2ZW5lc3NGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVC
YXNpY0Jsb2NrKiBibG9jaywgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxv
Y2s+PiYgYmFzaWNCbG9ja3MsIHVuc2lnbmVkIHRhcmdldE9mZnNldCwgRmFzdEJpdFZlY3RvciYg
cmVzdWx0KQorc3RhdGljIHZvaWQgY29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCeXRlY29kZU9mZnNl
dChCeXRlY29kZUdyYXBoPENvZGVCbG9jaz4mIGdyYXBoLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJs
b2NrLCB1bnNpZ25lZCB0YXJnZXRPZmZzZXQsIEZhc3RCaXRWZWN0b3ImIHJlc3VsdCkKIHsKICAg
ICBBU1NFUlQoIWJsb2NrLT5pc0V4aXRCbG9jaygpKTsKICAgICBBU1NFUlQoIWJsb2NrLT5pc0Vu
dHJ5QmxvY2soKSk7CkBAIC0xNzIsNDQgKzExMyw0NCBAQCBzdGF0aWMgdm9pZCBjb21wdXRlTG9j
YWxMaXZlbmVzc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29k
ZQogICAgICAgICBpZiAodGFyZ2V0T2Zmc2V0ID4gYnl0ZWNvZGVPZmZzZXQpCiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgCi0gICAgICAgIHN0ZXBPdmVySW5zdHJ1Y3Rpb24oY29kZUJsb2Nr
LCBibG9jaywgYmFzaWNCbG9ja3MsIGJ5dGVjb2RlT2Zmc2V0LCBvdXQpOworICAgICAgICBzdGVw
T3Zlckluc3RydWN0aW9uKGdyYXBoLCBieXRlY29kZU9mZnNldCwgb3V0KTsKICAgICB9CiAKICAg
ICByZXN1bHQuc2V0KG91dCk7CiB9CiAKLXN0YXRpYyB2b2lkIGNvbXB1dGVMb2NhbExpdmVuZXNz
Rm9yQmxvY2soQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2ss
IFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mIGJhc2ljQmxvY2tz
KQorc3RhdGljIHZvaWQgY29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCbG9jayhCeXRlY29kZUdyYXBo
PENvZGVCbG9jaz4mIGdyYXBoLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrKQogewogICAgIGlm
IChibG9jay0+aXNFeGl0QmxvY2soKSB8fCBibG9jay0+aXNFbnRyeUJsb2NrKCkpCiAgICAgICAg
IHJldHVybjsKLSAgICBjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVC
bG9jaywgYmxvY2ssIGJhc2ljQmxvY2tzLCBibG9jay0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKSwg
YmxvY2stPmluKCkpOworICAgIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQnl0ZWNvZGVPZmZzZXQo
Z3JhcGgsIGJsb2NrLCBibG9jay0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKSwgYmxvY2stPmluKCkp
OwogfQogCiB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6cnVuTGl2ZW5lc3NGaXhwb2lu
dCgpCiB7Ci0gICAgVW5saW5rZWRDb2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrID0gbV9jb2Rl
QmxvY2stPnVubGlua2VkQ29kZUJsb2NrKCk7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBt
X2dyYXBoLmNvZGVCbG9jaygpOworICAgIFVubGlua2VkQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVC
bG9jayA9IGNvZGVCbG9jay0+dW5saW5rZWRDb2RlQmxvY2soKTsKICAgICB1bnNpZ25lZCBudW1i
ZXJPZlZhcmlhYmxlcyA9IHVubGlua2VkQ29kZUJsb2NrLT5tX251bUNhbGxlZUxvY2FsczsKIAot
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2Jhc2ljQmxvY2tzLnNpemUoKTsgaSsrKSB7
Ci0gICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2sgPSBtX2Jhc2ljQmxvY2tzW2ldLmdl
dCgpOworICAgIGZvciAoc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4mIGJsb2Nr
IDogbV9ncmFwaC5iYXNpY0Jsb2NrcygpKSB7CiAgICAgICAgIGJsb2NrLT5pbigpLnJlc2l6ZShu
dW1iZXJPZlZhcmlhYmxlcyk7CiAgICAgICAgIGJsb2NrLT5vdXQoKS5yZXNpemUobnVtYmVyT2ZW
YXJpYWJsZXMpOwogICAgIH0KIAogICAgIGJvb2wgY2hhbmdlZDsKLSAgICBtX2Jhc2ljQmxvY2tz
Lmxhc3QoKS0+aW4oKS5jbGVhckFsbCgpOwotICAgIG1fYmFzaWNCbG9ja3MubGFzdCgpLT5vdXQo
KS5jbGVhckFsbCgpOworICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogbGFzdEJsb2NrID0gbV9ncmFw
aC5iYXNpY0Jsb2NrcygpLmxhc3QoKS5nZXQoKTsKKyAgICBsYXN0QmxvY2stPmluKCkuY2xlYXJB
bGwoKTsKKyAgICBsYXN0QmxvY2stPm91dCgpLmNsZWFyQWxsKCk7CiAgICAgRmFzdEJpdFZlY3Rv
ciBuZXdPdXQ7Ci0gICAgbmV3T3V0LnJlc2l6ZShtX2Jhc2ljQmxvY2tzLmxhc3QoKS0+b3V0KCku
bnVtQml0cygpKTsKKyAgICBuZXdPdXQucmVzaXplKGxhc3RCbG9jay0+b3V0KCkubnVtQml0cygp
KTsKICAgICBkbyB7CiAgICAgICAgIGNoYW5nZWQgPSBmYWxzZTsKLSAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gbV9iYXNpY0Jsb2Nrcy5zaXplKCkgLSAxOyBpLS07KSB7Ci0gICAgICAgICAgICBC
eXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrID0gbV9iYXNpY0Jsb2Nrc1tpXS5nZXQoKTsKKyAgICAg
ICAgZm9yIChzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiYgYmxvY2sgOiBtX2dy
YXBoLmJhc2ljQmxvY2tzSW5SZXZlcnNlT3JkZXIoKSkgewogICAgICAgICAgICAgbmV3T3V0LmNs
ZWFyQWxsKCk7Ci0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSAwOyBqIDwgYmxvY2stPnN1
Y2Nlc3NvcnMoKS5zaXplKCk7IGorKykKLSAgICAgICAgICAgICAgICBuZXdPdXQubWVyZ2UoYmxv
Y2stPnN1Y2Nlc3NvcnMoKVtqXS0+aW4oKSk7CisgICAgICAgICAgICBmb3IgKEJ5dGVjb2RlQmFz
aWNCbG9jayogc3VjY2Vzc29yIDogYmxvY2stPnN1Y2Nlc3NvcnMoKSkKKyAgICAgICAgICAgICAg
ICBuZXdPdXQubWVyZ2Uoc3VjY2Vzc29yLT5pbigpKTsKICAgICAgICAgICAgIGJvb2wgb3V0RGlk
Q2hhbmdlID0gYmxvY2stPm91dCgpLnNldEFuZENoZWNrKG5ld091dCk7Ci0gICAgICAgICAgICBj
b21wdXRlTG9jYWxMaXZlbmVzc0ZvckJsb2NrKG1fY29kZUJsb2NrLCBibG9jaywgbV9iYXNpY0Js
b2Nrcyk7CisgICAgICAgICAgICBjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJsb2NrKG1fZ3JhcGgs
IGJsb2NrLmdldCgpKTsKICAgICAgICAgICAgIGNoYW5nZWQgfD0gb3V0RGlkQ2hhbmdlOwogICAg
ICAgICB9CiAgICAgfSB3aGlsZSAoY2hhbmdlZCk7CkBAIC0yMTcsMTIgKzE1OCwxMiBAQCB2b2lk
IEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6cnVuTGl2ZW5lc3NGaXhwb2ludCgpCiAKIHZvaWQg
Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpnZXRMaXZlbmVzc0luZm9BdEJ5dGVjb2RlT2Zmc2V0
KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBGYXN0Qml0VmVjdG9yJiByZXN1bHQpCiB7Ci0gICAg
Qnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jayA9IGZpbmRCYXNpY0Jsb2NrRm9yQnl0ZWNvZGVPZmZz
ZXQobV9iYXNpY0Jsb2NrcywgYnl0ZWNvZGVPZmZzZXQpOworICAgIEJ5dGVjb2RlQmFzaWNCbG9j
ayogYmxvY2sgPSBtX2dyYXBoLmZpbmRCYXNpY0Jsb2NrRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNv
ZGVPZmZzZXQpOwogICAgIEFTU0VSVChibG9jayk7CiAgICAgQVNTRVJUKCFibG9jay0+aXNFbnRy
eUJsb2NrKCkpOwogICAgIEFTU0VSVCghYmxvY2stPmlzRXhpdEJsb2NrKCkpOwogICAgIHJlc3Vs
dC5yZXNpemUoYmxvY2stPm91dCgpLm51bUJpdHMoKSk7Ci0gICAgY29tcHV0ZUxvY2FsTGl2ZW5l
c3NGb3JCeXRlY29kZU9mZnNldChtX2NvZGVCbG9jaywgYmxvY2ssIG1fYmFzaWNCbG9ja3MsIGJ5
dGVjb2RlT2Zmc2V0LCByZXN1bHQpOworICAgIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQnl0ZWNv
ZGVPZmZzZXQobV9ncmFwaCwgYmxvY2ssIGJ5dGVjb2RlT2Zmc2V0LCByZXN1bHQpOwogfQogCiBi
b29sIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6b3BlcmFuZElzTGl2ZUF0Qnl0ZWNvZGVPZmZz
ZXQoaW50IG9wZXJhbmQsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KQpAQCAtMjQ0LDExICsxODUs
MTEgQEAgRmFzdEJpdFZlY3RvciBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmdldExpdmVuZXNz
SW5mb0F0Qnl0ZWNvZGVPZmZzZXQodW5zaWduZWQKIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5
c2lzOjpjb21wdXRlRnVsbExpdmVuZXNzKEZ1bGxCeXRlY29kZUxpdmVuZXNzJiByZXN1bHQpCiB7
CiAgICAgRmFzdEJpdFZlY3RvciBvdXQ7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBtX2dy
YXBoLmNvZGVCbG9jaygpOwogICAgIAotICAgIHJlc3VsdC5tX21hcC5yZXNpemUobV9jb2RlQmxv
Y2stPmluc3RydWN0aW9ucygpLnNpemUoKSk7CisgICAgcmVzdWx0Lm1fbWFwLnJlc2l6ZShjb2Rl
QmxvY2stPmluc3RydWN0aW9ucygpLnNpemUoKSk7CiAgICAgCi0gICAgZm9yICh1bnNpZ25lZCBp
ID0gbV9iYXNpY0Jsb2Nrcy5zaXplKCk7IGktLTspIHsKLSAgICAgICAgQnl0ZWNvZGVCYXNpY0Js
b2NrKiBibG9jayA9IG1fYmFzaWNCbG9ja3NbaV0uZ2V0KCk7CisgICAgZm9yIChzdGQ6OnVuaXF1
ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiYgYmxvY2sgOiBtX2dyYXBoLmJhc2ljQmxvY2tzSW5S
ZXZlcnNlT3JkZXIoKSkgewogICAgICAgICBpZiAoYmxvY2stPmlzRW50cnlCbG9jaygpIHx8IGJs
b2NrLT5pc0V4aXRCbG9jaygpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIApAQCAt
MjU2LDcgKzE5Nyw3IEBAIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlRnVs
bExpdmVuZXNzKEZ1bGxCeXRlY29kZUxpdmVuZXNzJiByZXN1bHQpCiAgICAgICAgIAogICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSBibG9jay0+Ynl0ZWNvZGVPZmZzZXRzKCkuc2l6ZSgpOyBpLS07
KSB7CiAgICAgICAgICAgICB1bnNpZ25lZCBieXRlY29kZU9mZnNldCA9IGJsb2NrLT5ieXRlY29k
ZU9mZnNldHMoKVtpXTsKLSAgICAgICAgICAgIHN0ZXBPdmVySW5zdHJ1Y3Rpb24obV9jb2RlQmxv
Y2ssIGJsb2NrLCBtX2Jhc2ljQmxvY2tzLCBieXRlY29kZU9mZnNldCwgb3V0KTsKKyAgICAgICAg
ICAgIHN0ZXBPdmVySW5zdHJ1Y3Rpb24obV9ncmFwaCwgYnl0ZWNvZGVPZmZzZXQsIG91dCk7CiAg
ICAgICAgICAgICByZXN1bHQubV9tYXBbYnl0ZWNvZGVPZmZzZXRdID0gb3V0OwogICAgICAgICB9
CiAgICAgfQpAQCAtMjY2LDExICsyMDcsMTEgQEAgdm9pZCBCeXRlY29kZUxpdmVuZXNzQW5hbHlz
aXM6OmNvbXB1dGVLaWxscyhCeXRlY29kZUtpbGxzJiByZXN1bHQpCiB7CiAgICAgRmFzdEJpdFZl
Y3RvciBvdXQ7CiAgICAgCi0gICAgcmVzdWx0Lm1fY29kZUJsb2NrID0gbV9jb2RlQmxvY2s7Ci0g
ICAgcmVzdWx0Lm1fa2lsbFNldHMgPSBzdGQ6Om1ha2VfdW5pcXVlPEJ5dGVjb2RlS2lsbHM6Oktp
bGxTZXRbXT4obV9jb2RlQmxvY2stPmluc3RydWN0aW9ucygpLnNpemUoKSk7CisgICAgQ29kZUJs
b2NrKiBjb2RlQmxvY2sgPSBtX2dyYXBoLmNvZGVCbG9jaygpOworICAgIHJlc3VsdC5tX2NvZGVC
bG9jayA9IGNvZGVCbG9jazsKKyAgICByZXN1bHQubV9raWxsU2V0cyA9IHN0ZDo6bWFrZV91bmlx
dWU8Qnl0ZWNvZGVLaWxsczo6S2lsbFNldFtdPihjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLnNp
emUoKSk7CiAgICAgCi0gICAgZm9yICh1bnNpZ25lZCBpID0gbV9iYXNpY0Jsb2Nrcy5zaXplKCk7
IGktLTspIHsKLSAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jayA9IG1fYmFzaWNCbG9j
a3NbaV0uZ2V0KCk7CisgICAgZm9yIChzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2Nr
PiYgYmxvY2sgOiBtX2dyYXBoLmJhc2ljQmxvY2tzSW5SZXZlcnNlT3JkZXIoKSkgewogICAgICAg
ICBpZiAoYmxvY2stPmlzRW50cnlCbG9jaygpIHx8IGJsb2NrLT5pc0V4aXRCbG9jaygpKQogICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgIApAQCAtMjc5LDcgKzIyMCw3IEBAIHZvaWQgQnl0
ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlS2lsbHMoQnl0ZWNvZGVLaWxscyYgcmVzdWx0
KQogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBibG9jay0+Ynl0ZWNvZGVPZmZzZXRzKCkuc2l6
ZSgpOyBpLS07KSB7CiAgICAgICAgICAgICB1bnNpZ25lZCBieXRlY29kZU9mZnNldCA9IGJsb2Nr
LT5ieXRlY29kZU9mZnNldHMoKVtpXTsKICAgICAgICAgICAgIHN0ZXBPdmVySW5zdHJ1Y3Rpb24o
Ci0gICAgICAgICAgICAgICAgbV9jb2RlQmxvY2ssIGJsb2NrLCBtX2Jhc2ljQmxvY2tzLCBieXRl
Y29kZU9mZnNldCwKKyAgICAgICAgICAgICAgICBtX2dyYXBoLCBieXRlY29kZU9mZnNldCwKICAg
ICAgICAgICAgICAgICBbJl0gKHVuc2lnbmVkIGluZGV4KSB7CiAgICAgICAgICAgICAgICAgICAg
IC8vIFRoaXMgaXMgZm9yIHVzZXMuCiAgICAgICAgICAgICAgICAgICAgIGlmIChvdXQuZ2V0KGlu
ZGV4KSkKQEAgLTI5NywxMiArMjM4LDEzIEBAIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lz
Ojpjb21wdXRlS2lsbHMoQnl0ZWNvZGVLaWxscyYgcmVzdWx0KQogCiB2b2lkIEJ5dGVjb2RlTGl2
ZW5lc3NBbmFseXNpczo6ZHVtcFJlc3VsdHMoKQogewotICAgIGRhdGFMb2coIlxuRHVtcGluZyBi
eXRlY29kZSBsaXZlbmVzcyBmb3IgIiwgKm1fY29kZUJsb2NrLCAiOlxuIik7Ci0gICAgSW50ZXJw
cmV0ZXIqIGludGVycHJldGVyID0gbV9jb2RlQmxvY2stPnZtKCktPmludGVycHJldGVyOwotICAg
IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiA9IG1fY29kZUJsb2NrLT5pbnN0cnVjdGlv
bnMoKS5iZWdpbigpOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2Jhc2ljQmxvY2tz
LnNpemUoKTsgaSsrKSB7Ci0gICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2sgPSBtX2Jh
c2ljQmxvY2tzW2ldLmdldCgpOwotICAgICAgICBkYXRhTG9nRigiXG5CeXRlY29kZSBiYXNpYyBi
bG9jayAldTogJXAgKG9mZnNldDogJXUsIGxlbmd0aDogJXUpXG4iLCBpLCBibG9jaywgYmxvY2st
PmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCksIGJsb2NrLT50b3RhbEJ5dGVjb2RlTGVuZ3RoKCkpOwor
ICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gbV9ncmFwaC5jb2RlQmxvY2soKTsKKyAgICBkYXRh
TG9nKCJcbkR1bXBpbmcgYnl0ZWNvZGUgbGl2ZW5lc3MgZm9yICIsICpjb2RlQmxvY2ssICI6XG4i
KTsKKyAgICBJbnRlcnByZXRlciogaW50ZXJwcmV0ZXIgPSBjb2RlQmxvY2stPnZtKCktPmludGVy
cHJldGVyOworICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiA9IGNvZGVCbG9jay0+
aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsKKyAgICB1bnNpZ25lZCBpID0gMDsKKyAgICBmb3IgKHN0
ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+JiBibG9jayA6IG1fZ3JhcGguYmFzaWNC
bG9ja3MoKSkgeworICAgICAgICBkYXRhTG9nRigiXG5CeXRlY29kZSBiYXNpYyBibG9jayAldTog
JXAgKG9mZnNldDogJXUsIGxlbmd0aDogJXUpXG4iLCBpKyssIGJsb2NrLmdldCgpLCBibG9jay0+
bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKSwgYmxvY2stPnRvdGFsQnl0ZWNvZGVMZW5ndGgoKSk7CiAg
ICAgICAgIGRhdGFMb2dGKCJTdWNjZXNzb3JzOiAiKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBq
ID0gMDsgaiA8IGJsb2NrLT5zdWNjZXNzb3JzKCkuc2l6ZSgpOyBqKyspIHsKICAgICAgICAgICAg
IEJ5dGVjb2RlQmFzaWNCbG9jayogc3VjY2Vzc29yID0gYmxvY2stPnN1Y2Nlc3NvcnMoKVtqXTsK
QEAgLTMxMCwxMSArMjUyLDExIEBAIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpkdW1w
UmVzdWx0cygpCiAgICAgICAgIH0KICAgICAgICAgZGF0YUxvZ0YoIlxuIik7CiAgICAgICAgIGlm
IChibG9jay0+aXNFbnRyeUJsb2NrKCkpIHsKLSAgICAgICAgICAgIGRhdGFMb2dGKCJFbnRyeSBi
bG9jayAlcFxuIiwgYmxvY2spOworICAgICAgICAgICAgZGF0YUxvZ0YoIkVudHJ5IGJsb2NrICVw
XG4iLCBibG9jay5nZXQoKSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogICAg
ICAgICBpZiAoYmxvY2stPmlzRXhpdEJsb2NrKCkpIHsKLSAgICAgICAgICAgIGRhdGFMb2dGKCJF
eGl0IGJsb2NrOiAlcFxuIiwgYmxvY2spOworICAgICAgICAgICAgZGF0YUxvZ0YoIkV4aXQgYmxv
Y2s6ICVwXG4iLCBibG9jay5nZXQoKSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
fQogICAgICAgICBmb3IgKHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0ID0gYmxvY2stPmxlYWRlckJ5
dGVjb2RlT2Zmc2V0KCk7IGJ5dGVjb2RlT2Zmc2V0IDwgYmxvY2stPmxlYWRlckJ5dGVjb2RlT2Zm
c2V0KCkgKyBibG9jay0+dG90YWxCeXRlY29kZUxlbmd0aCgpOykgewpAQCAtMzI3LDcgKzI2OSw3
IEBAIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpkdW1wUmVzdWx0cygpCiAgICAgICAg
ICAgICAgICAgICAgIGRhdGFMb2dGKCIldSAiLCBqKTsKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIGRhdGFMb2dGKCJcbiIpOwotICAgICAgICAgICAgbV9jb2RlQmxvY2stPmR1bXBCeXRlY29k
ZShXVEY6OmRhdGFGaWxlKCksIG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhl
YygpLCBpbnN0cnVjdGlvbnNCZWdpbiwgY3VycmVudEluc3RydWN0aW9uKTsKKyAgICAgICAgICAg
IGNvZGVCbG9jay0+ZHVtcEJ5dGVjb2RlKFdURjo6ZGF0YUZpbGUoKSwgY29kZUJsb2NrLT5nbG9i
YWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpLCBpbnN0cnVjdGlvbnNCZWdpbiwgY3VycmVudEluc3Ry
dWN0aW9uKTsKIAogICAgICAgICAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnRlcnByZXRlci0+
Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25zQmVnaW5bYnl0ZWNvZGVPZmZzZXRdLnUub3Bjb2RlKTsK
ICAgICAgICAgICAgIHVuc2lnbmVkIG9wY29kZUxlbmd0aCA9IG9wY29kZUxlbmd0aHNbb3Bjb2Rl
SURdOwpAQCAtMzQ2LDggKzI4OCw2IEBAIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpk
dW1wUmVzdWx0cygpCiAKIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlKCkK
IHsKLSAgICBjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2NrcyhtX2NvZGVCbG9jaywgbV9iYXNpY0Js
b2Nrcyk7Ci0gICAgQVNTRVJUKG1fYmFzaWNCbG9ja3Muc2l6ZSgpKTsKICAgICBydW5MaXZlbmVz
c0ZpeHBvaW50KCk7CiAKICAgICBpZiAoT3B0aW9uczo6ZHVtcEJ5dGVjb2RlTGl2ZW5lc3NSZXN1
bHRzKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVMaXZlbmVzc0FuYWx5c2lzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmgKaW5kZXggZWNlMTZmMjFmMDE1MTBhNjQyN2ZkODQxMTQw
NzliZWQ4NzBjMDg3NS4uY2IxNDkzYjJhYTZjODkwM2M3OTVhOWYyZDFjMjk3NmUxMGQzNjZkMyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5l
c3NBbmFseXNpcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZUxpdmVuZXNzQW5hbHlzaXMuaApAQCAtMjcsNiArMjcsOCBAQAogI2RlZmluZSBCeXRlY29kZUxp
dmVuZXNzQW5hbHlzaXNfaAogCiAjaW5jbHVkZSAiQnl0ZWNvZGVCYXNpY0Jsb2NrLmgiCisjaW5j
bHVkZSAiQnl0ZWNvZGVHcmFwaC5oIgorI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUg
PHd0Zi9GYXN0Qml0VmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+CkBAIC0zNCw3ICszNiw2IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogY2xh
c3MgQnl0ZWNvZGVLaWxsczsKLWNsYXNzIENvZGVCbG9jazsKIGNsYXNzIEZ1bGxCeXRlY29kZUxp
dmVuZXNzOwogCiBjbGFzcyBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMgewpAQCAtNTYsMTMgKzU3
LDEzIEBAIGNsYXNzIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcyB7CiAKICAgICB2b2lkIGdldExp
dmVuZXNzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIEZhc3RC
aXRWZWN0b3ImKTsKIAotICAgIENvZGVCbG9jayogbV9jb2RlQmxvY2s7Ci0gICAgVmVjdG9yPHN0
ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiBtX2Jhc2ljQmxvY2tzOworICAgIEJ5
dGVjb2RlR3JhcGg8Q29kZUJsb2NrPiBtX2dyYXBoOwogfTsKIAogaW5saW5lIGJvb2wgb3BlcmFu
ZElzQWx3YXlzTGl2ZShpbnQgb3BlcmFuZCk7CiBpbmxpbmUgYm9vbCBvcGVyYW5kVGhhdElzTm90
QWx3YXlzTGl2ZUlzTGl2ZShjb25zdCBGYXN0Qml0VmVjdG9yJiBvdXQsIGludCBvcGVyYW5kKTsK
IGlubGluZSBib29sIG9wZXJhbmRJc0xpdmUoY29uc3QgRmFzdEJpdFZlY3RvciYgb3V0LCBpbnQg
b3BlcmFuZCk7CitpbmxpbmUgYm9vbCBpc1ZhbGlkUmVnaXN0ZXJGb3JMaXZlbmVzcyhpbnQgb3Bl
cmFuZCk7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzSW5saW5lcy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGlu
ZXMuaAppbmRleCA5YjVjNzU1ZmNiNmNkNTE4MDUxNDUwMDc4OTIyYWM0ZDZkNGQyMzhmLi45MGMy
OTI5OWEyNWY1NzljZGE2NDlkOTg3OGNlMTU0OGM0OGM3NTg4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzSW5saW5lcy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5h
bHlzaXNJbmxpbmVzLmgKQEAgLTUwLDYgKzUwLDE0IEBAIGlubGluZSBib29sIG9wZXJhbmRJc0xp
dmUoY29uc3QgRmFzdEJpdFZlY3RvciYgb3V0LCBpbnQgb3BlcmFuZCkKICAgICByZXR1cm4gb3Bl
cmFuZElzQWx3YXlzTGl2ZShvcGVyYW5kKSB8fCBvcGVyYW5kVGhhdElzTm90QWx3YXlzTGl2ZUlz
TGl2ZShvdXQsIG9wZXJhbmQpOwogfQogCitpbmxpbmUgYm9vbCBpc1ZhbGlkUmVnaXN0ZXJGb3JM
aXZlbmVzcyhpbnQgb3BlcmFuZCkKK3sKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZyhv
cGVyYW5kKTsKKyAgICBpZiAodmlydHVhbFJlZy5pc0NvbnN0YW50KCkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICByZXR1cm4gdmlydHVhbFJlZy5pc0xvY2FsKCk7Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzSW5saW5lc19o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVNb2Rp
ZmljYXRpb25TZXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
TW9kaWZpY2F0aW9uU2V0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YWMyZjhlY2ExMTU5YzIzMTZhYjUxOGIz
Y2FhYTc0NzQ4ZWJhNTYwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlTW9kaWZpY2F0aW9uU2V0LmNwcApAQCAtMCwwICsxLDg0IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE2IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkJ5dGVjb2Rl
TW9kaWZpY2F0aW9uU2V0LmgiCisKKyNpbmNsdWRlIDx3dGYvQnViYmxlU29ydC5oPgorCituYW1l
c3BhY2UgSlNDIHsKKworaW50IEJ5dGVjb2RlTW9kaWZpY2F0aW9uU2V0OjphZGp1c3RPZmZzZXQo
aW50IGJ5dGVjb2RlT2Zmc2V0LCBpbnQganVtcFRhcmdldCkKK3sKKyAgICBpZiAoYnl0ZWNvZGVP
ZmZzZXQgPCBqdW1wVGFyZ2V0KSB7CisgICAgICAgIGF1dG8gc3RhcnQgPSBzdGQ6Omxvd2VyX2Jv
dW5kKG1faW5zZXJ0aW9ucy5iZWdpbigpLCBtX2luc2VydGlvbnMuZW5kKCksIGJ5dGVjb2RlT2Zm
c2V0LCBbJl0gKGNvbnN0IEluc2VydGlvbiYgaW5zZXJ0aW9uLCBpbnQgYnl0ZWNvZGVPZmZzZXQp
IHsKKyAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KGluc2VydGlvbi5pbmRleCgp
KSA8IGJ5dGVjb2RlT2Zmc2V0OworICAgICAgICB9KTsKKyAgICAgICAgaWYgKHN0YXJ0ICE9IG1f
aW5zZXJ0aW9ucy5lbmQoKSkgeworICAgICAgICAgICAgYXV0byBlbmQgPSBzdGQ6Omxvd2VyX2Jv
dW5kKG1faW5zZXJ0aW9ucy5iZWdpbigpLCBtX2luc2VydGlvbnMuZW5kKCksIGp1bXBUYXJnZXQs
IFsmXSAoY29uc3QgSW5zZXJ0aW9uJiBpbnNlcnRpb24sIGludCBqdW1wVGFyZ2V0KSB7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oaW5zZXJ0aW9uLmluZGV4KCkpIDwg
anVtcFRhcmdldDsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgZm9yICg7IHN0YXJ0ICE9
IGVuZDsgKytzdGFydCkgeworICAgICAgICAgICAgICAgIGlmIChzdGFydC0+ZWxlbWVudCgpLnR5
cGUgPT0gQ29tbWFuZDo6VHlwZTo6UmVtb3ZlKQorICAgICAgICAgICAgICAgICAgICBqdW1wVGFy
Z2V0IC09IHN0YXJ0LT5lbGVtZW50KCkubGVuZ3RoOworICAgICAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICAgICAganVtcFRhcmdldCArPSBzdGFydC0+ZWxlbWVudCgpLmxlbmd0aDsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4ganVtcFRhcmdldCAtIGJ5
dGVjb2RlT2Zmc2V0OworICAgIH0KKworICAgIGlmIChieXRlY29kZU9mZnNldCA9PSBqdW1wVGFy
Z2V0KQorICAgICAgICByZXR1cm4gMDsKKworICAgIHJldHVybiAtYWRqdXN0T2Zmc2V0KGp1bXBU
YXJnZXQsIGJ5dGVjb2RlT2Zmc2V0KTsKK30KKwordm9pZCBCeXRlY29kZU1vZGlmaWNhdGlvblNl
dDo6YXBwbHlNb2RpZmljYXRpb24oKQoreworICAgIGZvciAoc2l6ZV90IGluc2VydGlvbkluZGV4
ID0gbV9pbnNlcnRpb25zLnNpemUoKTsgaW5zZXJ0aW9uSW5kZXgtLTspIHsKKyAgICAgICAgY29u
c3QgSW5zZXJ0aW9uJiBpbnNlcnRpb24gPSBtX2luc2VydGlvbnNbaW5zZXJ0aW9uSW5kZXhdOwor
ICAgICAgICBpZiAoaW5zZXJ0aW9uLmVsZW1lbnQoKS50eXBlID09IENvbW1hbmQ6OlR5cGU6OlJl
bW92ZSkKKyAgICAgICAgICAgIG1fZ3JhcGguaW5zdHJ1Y3Rpb25zKCkucmVtb3ZlKGluc2VydGlv
bi5pbmRleCgpLCBpbnNlcnRpb24uZWxlbWVudCgpLmxlbmd0aCk7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIG1fZ3JhcGguaW5zdHJ1Y3Rpb25zKCkuaW5zZXJ0KGluc2VydGlvbi5pbmRleCgp
LCBpbnNlcnRpb24uZWxlbWVudCgpLmJ5dGVjb2RlLmluc3RydWN0aW9ucywgb3Bjb2RlTGVuZ3Ro
KGluc2VydGlvbi5lbGVtZW50KCkuYnl0ZWNvZGUuaW5zdHJ1Y3Rpb25zWzBdLnUub3Bjb2RlKSk7
CisgICAgfQorICAgIG1faW5zZXJ0aW9ucy5jbGVhcigpOworfQorCit2b2lkIEJ5dGVjb2RlTW9k
aWZpY2F0aW9uU2V0OjpleGVjdXRlKCkKK3sKKyAgICBXVEY6OmJ1YmJsZVNvcnQobV9pbnNlcnRp
b25zLmJlZ2luKCksIG1faW5zZXJ0aW9ucy5lbmQoKSwgW10gKGNvbnN0IEluc2VydGlvbiYgbGhz
LCBjb25zdCBJbnNlcnRpb24mIHJocykgeworICAgICAgICAvLyBXZSB3b3VsZCBsaWtlIHRvIHBl
cmZvcm0gcmVtb3ZlIG9wZXJhdGlvbiBiZWZvcmUgaW5zZXJ0aW9uLgorICAgICAgICBpZiAobGhz
LmluZGV4KCkgPT0gcmhzLmluZGV4KCkpCisgICAgICAgICAgICByZXR1cm4gcmhzLmVsZW1lbnQo
KS50eXBlID09IENvbW1hbmQ6OlR5cGU6OlJlbW92ZTsKKyAgICAgICAgcmV0dXJuIGxocyA8IHJo
czsKKyAgICB9KTsKKworICAgIFVubGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBtX2dyYXBo
LmNvZGVCbG9jaygpOworICAgIGNvZGVCbG9jay0+YXBwbHlNb2RpZmljYXRpb24oKnRoaXMpOwor
fQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZU1vZGlmaWNhdGlvblNldC5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlTW9kaWZpY2F0aW9uU2V0LmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjU1Mzli
YjFiZTlkOTYzZjYzMmQ1ZDNjYzlmYmQ4MjkyODg4ZjMzNgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZU1vZGlmaWNhdGlvblNldC5oCkBA
IC0wLDAgKzEsODIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgWXVzdWtlIFN1enVraSA8
dXRhdGFuZS50ZWFAZ21haWwuY29tPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1
ZGUgIkJ5dGVjb2RlR3JhcGguaCIKKyNpbmNsdWRlICJVbmxpbmtlZENvZGVCbG9jay5oIgorI2lu
Y2x1ZGUgPHd0Zi9JbnNlcnRpb24uaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEJ5dGVj
b2RlTW9kaWZpY2F0aW9uU2V0IHsKK3B1YmxpYzoKKyAgICBzdHJ1Y3QgSW5zZXJ0ZWRCeXRlY29k
ZSB7CisgICAgICAgIFVubGlua2VkSW5zdHJ1Y3Rpb24gaW5zdHJ1Y3Rpb25zW01BWF9PUENPREVf
TEVOR1RIX09GX0JZVEVDT0RFXTsKKyAgICB9OworCisgICAgc3RydWN0IENvbW1hbmQgeworICAg
ICAgICBlbnVtIGNsYXNzIFR5cGUgeworICAgICAgICAgICAgSW5zZXJ0LAorICAgICAgICAgICAg
UmVtb3ZlLAorICAgICAgICB9OworCisgICAgICAgIFR5cGUgdHlwZTsKKyAgICAgICAgc2l6ZV90
IGxlbmd0aDsKKyAgICAgICAgSW5zZXJ0ZWRCeXRlY29kZSBieXRlY29kZTsKKyAgICB9OworCisg
ICAgdHlwZWRlZiBXVEY6Okluc2VydGlvbjxDb21tYW5kPiBJbnNlcnRpb247CisKKyAgICBCeXRl
Y29kZU1vZGlmaWNhdGlvblNldChCeXRlY29kZUdyYXBoPFVubGlua2VkQ29kZUJsb2NrPiYgZ3Jh
cGgpCisgICAgICAgIDogbV9ncmFwaChncmFwaCkKKyAgICB7CisgICAgfQorCisgICAgdm9pZCBp
bnNlcnQodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIEluc2VydGVkQnl0ZWNvZGUgYnl0ZWNvZGUp
CisgICAgeworICAgICAgICBtX2luc2VydGlvbnMuYXBwZW5kKEluc2VydGlvbihieXRlY29kZU9m
ZnNldCwgQ29tbWFuZCB7IENvbW1hbmQ6OlR5cGU6Okluc2VydCwgb3Bjb2RlTGVuZ3RoKGJ5dGVj
b2RlLmluc3RydWN0aW9uc1swXS51Lm9wY29kZSksIGJ5dGVjb2RlIH0pKTsKKyAgICB9CisKKyAg
ICB2b2lkIHJlbW92ZUJ5dGVjb2RlKHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KQorICAgIHsKKyAg
ICAgICAgbV9pbnNlcnRpb25zLmFwcGVuZChJbnNlcnRpb24oYnl0ZWNvZGVPZmZzZXQsIENvbW1h
bmQgeyBDb21tYW5kOjpUeXBlOjpSZW1vdmUsIG9wY29kZUxlbmd0aChtX2dyYXBoLmluc3RydWN0
aW9ucygpW2J5dGVjb2RlT2Zmc2V0XS51Lm9wY29kZSksIEluc2VydGVkQnl0ZWNvZGUgeyB9IH0p
KTsKKyAgICB9CisKKyAgICB2b2lkIGV4ZWN1dGUoKTsKKworICAgIEJ5dGVjb2RlR3JhcGg8VW5s
aW5rZWRDb2RlQmxvY2s+JiBncmFwaCgpIHsgcmV0dXJuIG1fZ3JhcGg7IH0KKworICAgIGludCBh
ZGp1c3RPZmZzZXQoaW50IGJ5dGVjb2RlT2Zmc2V0LCBpbnQganVtcFRhcmdldCk7CisKK3ByaXZh
dGU6CisgICAgZnJpZW5kIGNsYXNzIFVubGlua2VkQ29kZUJsb2NrOworICAgIHZvaWQgYXBwbHlN
b2RpZmljYXRpb24oKTsKKworICAgIEJ5dGVjb2RlR3JhcGg8VW5saW5rZWRDb2RlQmxvY2s+JiBt
X2dyYXBoOworICAgIFZlY3RvcjxJbnNlcnRpb24sIDg+IG1faW5zZXJ0aW9uczsKK307CisKK30g
Ly8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlVXNlRGVmLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVVc2VEZWYuaAppbmRleCAzYTJiYjA1NzM4YTEyYjBjMDI0MjdkNWRiOTgxZGE4NTc0ZjQ1
OTdjLi41ODQ2MDhmZjY0NmNkMzExY2RjMDIzZmE4ZmRhYTVlYTdiY2VjZDBhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaApAQCAtMjcsMTgg
KzI3LDEzIEBACiAjZGVmaW5lIEJ5dGVjb2RlVXNlRGVmX2gKIAogI2luY2x1ZGUgIkNvZGVCbG9j
ay5oIgorI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCi10ZW1w
bGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgotdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0
KAotICAgIENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrLCB1
bnNpZ25lZCBieXRlY29kZU9mZnNldCwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikKK3RlbXBsYXRl
PHR5cGVuYW1lIEJsb2NrLCB0eXBlbmFtZSBGdW5jdG9yLCB0eXBlbmFtZSBJbnN0cnVjdGlvbj4K
K3ZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldChCbG9jayogY29kZUJsb2NrLCBPcGNv
ZGVJRCBvcGNvZGVJRCwgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBjb25zdCBGdW5jdG9yJiBm
dW5jdG9yKQogewotICAgIEludGVycHJldGVyKiBpbnRlcnByZXRlciA9IGNvZGVCbG9jay0+dm0o
KS0+aW50ZXJwcmV0ZXI7Ci0gICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luID0gY29k
ZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpOwotICAgIEluc3RydWN0aW9uKiBpbnN0cnVj
dGlvbiA9ICZpbnN0cnVjdGlvbnNCZWdpbltieXRlY29kZU9mZnNldF07Ci0gICAgT3Bjb2RlSUQg
b3Bjb2RlSUQgPSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb24tPnUub3Bjb2Rl
KTsKLQogICAgIGlmIChvcGNvZGVJRCAhPSBvcF9lbnRlciAmJiBjb2RlQmxvY2stPndhc0NvbXBp
bGVkV2l0aERlYnVnZ2luZ09wY29kZXMoKSAmJiBjb2RlQmxvY2stPnNjb3BlUmVnaXN0ZXIoKS5p
c1ZhbGlkKCkpCiAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2Rl
SUQsIGNvZGVCbG9jay0+c2NvcGVSZWdpc3RlcigpLm9mZnNldCgpKTsKIApAQCAtNzUsOCArNzAs
NyBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoCiAgICAgY2FzZSBvcF9qbmVx
X251bGw6CiAgICAgY2FzZSBvcF9kZWM6CiAgICAgY2FzZSBvcF9pbmM6Ci0gICAgY2FzZSBvcF9s
b2dfc2hhZG93X2NoaWNrZW5fcHJvbG9ndWU6Ci0gICAgY2FzZSBvcF9yZXN1bWU6IHsKKyAgICBj
YXNlIG9wX2xvZ19zaGFkb3dfY2hpY2tlbl9wcm9sb2d1ZTogewogICAgICAgICBBU1NFUlQob3Bj
b2RlTGVuZ3Roc1tvcGNvZGVJRF0gPiAxKTsKICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGlu
c3RydWN0aW9uLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKTsKICAgICAgICAg
cmV0dXJuOwpAQCAtMjg2LDIyICsyODAsMTMgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2Rl
T2Zmc2V0KAogICAgICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNv
ZGVJRCwgY29kZUJsb2NrLT5zY29wZVJlZ2lzdGVyKCkub2Zmc2V0KCkpOwogICAgICAgICByZXR1
cm47CiAgICAgfQotICAgIGNhc2Ugb3Bfc2F2ZTogewotICAgICAgICBmdW5jdG9yKGNvZGVCbG9j
aywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBpbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOwotICAg
ICAgICB1bnNpZ25lZCBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXQgPSBieXRlY29kZU9mZnNldCAr
IGluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKLSAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBt
ZXJnZVBvaW50QmxvY2sgPSBudWxscHRyOwotICAgICAgICBmb3IgKEJ5dGVjb2RlQmFzaWNCbG9j
ayogc3VjY2Vzc29yIDogYmxvY2stPnN1Y2Nlc3NvcnMoKSkgewotICAgICAgICAgICAgaWYgKHN1
Y2Nlc3Nvci0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKSA9PSBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZz
ZXQpIHsKLSAgICAgICAgICAgICAgICBtZXJnZVBvaW50QmxvY2sgPSBzdWNjZXNzb3I7Ci0gICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgQVNT
RVJUKG1lcmdlUG9pbnRCbG9jayk7Ci0gICAgICAgIG1lcmdlUG9pbnRCbG9jay0+aW4oKS5mb3JF
YWNoU2V0Qml0KFsmXSh1bnNpZ25lZCBsb2NhbCkgewotICAgICAgICAgICAgZnVuY3Rvcihjb2Rl
QmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwobG9j
YWwpLm9mZnNldCgpKTsKLSAgICAgICAgfSk7CisKKyAgICBjYXNlIG9wX3NhdmU6CisgICAgY2Fz
ZSBvcF9yZXN1bWU6IHsKKyAgICAgICAgLy8gRG8gbm90aGluZyBpbiBsaXZlbmVzcyBhbmFseXNp
cy4KICAgICAgICAgcmV0dXJuOwogICAgIH0KKwogICAgIGRlZmF1bHQ6CiAgICAgICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIGJyZWFrOwpAQCAtMzA5LDEyICsyOTQs
MTggQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAogfQogCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBGdW5jdG9yPgotdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVC
bG9jayogY29kZUJsb2NrLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrLCB1bnNpZ25lZCBieXRl
Y29kZU9mZnNldCwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikKK3ZvaWQgY29tcHV0ZVVzZXNGb3JC
eXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVPZmZz
ZXQsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiB7CiAgICAgSW50ZXJwcmV0ZXIqIGludGVycHJl
dGVyID0gY29kZUJsb2NrLT52bSgpLT5pbnRlcnByZXRlcjsKICAgICBJbnN0cnVjdGlvbiogaW5z
dHJ1Y3Rpb25zQmVnaW4gPSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCk7CiAgICAg
SW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uID0gJmluc3RydWN0aW9uc0JlZ2luW2J5dGVjb2RlT2Zm
c2V0XTsKICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGludGVycHJldGVyLT5nZXRPcGNvZGVJRChp
bnN0cnVjdGlvbi0+dS5vcGNvZGUpOworICAgIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQo
Y29kZUJsb2NrLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb24sIGZ1bmN0b3IpOworfQorCit0ZW1wbGF0
ZTx0eXBlbmFtZSBCbG9jaywgdHlwZW5hbWUgSW5zdHJ1Y3Rpb24sIHR5cGVuYW1lIEZ1bmN0b3I+
Cit2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQmxvY2sqIGNvZGVCbG9jaywgT3Bj
b2RlSUQgb3Bjb2RlSUQsIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgY29uc3QgRnVuY3RvciYg
ZnVuY3RvcikKK3sKICAgICBzd2l0Y2ggKG9wY29kZUlEKSB7CiAgICAgLy8gVGhlc2UgZG9uJ3Qg
ZGVmaW5lIGFueXRoaW5nLgogICAgIGNhc2Ugb3BfY29weV9yZXN0OgpAQCAtMzIyLDcgKzMxMyw2
IEBAIHZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9j
aywgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jCiAgICAgY2FzZSBvcF9lbmQ6CiAgICAgY2FzZSBv
cF90aHJvdzoKICAgICBjYXNlIG9wX3Rocm93X3N0YXRpY19lcnJvcjoKLSAgICBjYXNlIG9wX3Nh
dmU6CiAgICAgY2FzZSBvcF9hc3NlcnQ6CiAgICAgY2FzZSBvcF9kZWJ1ZzoKICAgICBjYXNlIG9w
X3JldDoKQEAgLTQ2MSw3ICs0NTEsNyBAQCB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZz
ZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvYwogICAgIGNh
c2Ugb3BfZGVsX2J5X2lkOgogICAgIGNhc2Ugb3BfZGVsX2J5X3ZhbDoKICAgICBjYXNlIG9wX3Vu
c2lnbmVkOgotICAgIGNhc2Ugb3BfZ2V0X2Zyb21fYXJndW1lbnRzOiAKKyAgICBjYXNlIG9wX2dl
dF9mcm9tX2FyZ3VtZW50czoKICAgICBjYXNlIG9wX2dldF9yZXN0X2xlbmd0aDogewogICAgICAg
ICBBU1NFUlQob3Bjb2RlTGVuZ3Roc1tvcGNvZGVJRF0gPiAxKTsKICAgICAgICAgZnVuY3Rvcihj
b2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5k
KTsKQEAgLTQ3OCwxOCArNDY4LDI3IEBAIHZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNl
dChDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jCiAgICAgICAg
ICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCB2aXJ0dWFsUmVn
aXN0ZXJGb3JMb2NhbChpKS5vZmZzZXQoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CisgICAg
Y2FzZSBvcF9zYXZlOgogICAgIGNhc2Ugb3BfcmVzdW1lOiB7Ci0gICAgICAgIFJFTEVBU0VfQVNT
RVJUKGJsb2NrLT5zdWNjZXNzb3JzKCkuc2l6ZSgpID09IDEpOwotICAgICAgICAvLyBGSVhNRTog
VGhpcyBpcyByZWFsbHkgZGlydHkuCi0gICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNTkyODEKLSAgICAgICAgYmxvY2stPnN1Y2Nlc3NvcnMoKVswXS0+
aW4oKS5mb3JFYWNoU2V0Qml0KFsmXSh1bnNpZ25lZCBsb2NhbCkgewotICAgICAgICAgICAgZnVu
Y3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgdmlydHVhbFJlZ2lzdGVyRm9y
TG9jYWwobG9jYWwpLm9mZnNldCgpKTsKLSAgICAgICAgfSk7CisgICAgICAgIC8vIERvIG5vdGhp
bmcgaW4gbGl2ZW5lc3MgYW5hbHlzaXMuCiAgICAgICAgIHJldHVybjsKICAgICB9CisgICAgZGVm
YXVsdDoKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0
dXJuOwogICAgIH0KIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KK3ZvaWQgY29tcHV0
ZURlZnNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgdW5zaWduZWQgYnl0
ZWNvZGVPZmZzZXQsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCit7CisgICAgSW50ZXJwcmV0ZXIq
IGludGVycHJldGVyID0gY29kZUJsb2NrLT52bSgpLT5pbnRlcnByZXRlcjsKKyAgICBJbnN0cnVj
dGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4gPSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2lu
KCk7CisgICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uID0gJmluc3RydWN0aW9uc0JlZ2luW2J5
dGVjb2RlT2Zmc2V0XTsKKyAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGludGVycHJldGVyLT5nZXRP
cGNvZGVJRChpbnN0cnVjdGlvbi0+dS5vcGNvZGUpOworICAgIGNvbXB1dGVEZWZzRm9yQnl0ZWNv
ZGVPZmZzZXQoY29kZUJsb2NrLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb24sIGZ1bmN0b3IpOworfQor
CiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEJ5dGVjb2RlVXNlRGVmX2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKaW5kZXggMmRmOWViNWIw
NTBkNWEzMWU2MTUzOGQ4ZjlhOWM1YWQ0NWFiNTNkMS4uNzQ2NmE0ZGMzZGQ3NzdhZTAzYjBiNTFi
N2YzMDUxMjhhYzU5MmM0MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKIAogI2luY2x1ZGUgIkJhc2ljQmxvY2tMb2Nh
dGlvbi5oIgogI2luY2x1ZGUgIkJ5dGVjb2RlR2VuZXJhdG9yLmgiCisjaW5jbHVkZSAiQnl0ZWNv
ZGVMaXZlbmVzc0FuYWx5c2lzLmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVVc2VEZWYuaCIKICNpbmNs
dWRlICJDYWxsTGlua1N0YXR1cy5oIgogI2luY2x1ZGUgIkRGR0NhcGFiaWxpdGllcy5oIgpAQCAt
Njk0LDE4ICs2OTUsNiBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKFByaW50U3RyZWFt
JiBvdXQpCiAgICAgICAgIH0gd2hpbGUgKGkgPCBtX3JhcmVEYXRhLT5tX3N0cmluZ1N3aXRjaEp1
bXBUYWJsZXMuc2l6ZSgpKTsKICAgICB9CiAKLSAgICBpZiAobV9yYXJlRGF0YSAmJiAhbV9yYXJl
RGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZC5pc0VtcHR5KCkpIHsKLSAgICAgICAgb3V0
LnByaW50ZigiXG5MaXZlIENhbGxlZSBMb2NhbHM6XG4iKTsKLSAgICAgICAgdW5zaWduZWQgaSA9
IDA7Ci0gICAgICAgIGRvIHsKLSAgICAgICAgICAgIGNvbnN0IEZhc3RCaXRWZWN0b3ImIGxpdmVu
ZXNzID0gbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZFtpXTsKLSAgICAgICAg
ICAgIG91dC5wcmludGYoIiAgbGl2ZSUxdSA9ICIsIGkpOwotICAgICAgICAgICAgbGl2ZW5lc3Mu
ZHVtcChvdXQpOwotICAgICAgICAgICAgb3V0LnByaW50ZigiXG4iKTsKLSAgICAgICAgICAgICsr
aTsKLSAgICAgICAgfSB3aGlsZSAoaSA8IG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0
WWllbGQuc2l6ZSgpKTsKLSAgICB9Ci0KICAgICBvdXQucHJpbnRmKCJcbiIpOwogfQogCkBAIC0x
NjY1LDMxICsxNjU0LDYgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZSgKICAgICAgICAg
ICAgIG91dC5wcmludGYoIiVzLCAlZCIsIGRlYnVnSG9va05hbWUoZGVidWdIb29rSUQpLCBoYXNC
cmVha3BvaW50RmxhZyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBj
YXNlIG9wX3NhdmU6IHsKLSAgICAgICAgICAgIGludCBnZW5lcmF0b3IgPSAoKytpdCktPnUub3Bl
cmFuZDsKLSAgICAgICAgICAgIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9ICgrK2l0
KS0+dS51bnNpZ25lZFZhbHVlOwotICAgICAgICAgICAgaW50IG9mZnNldCA9ICgrK2l0KS0+dS5v
cGVyYW5kOwotICAgICAgICAgICAgRmFzdEJpdFZlY3RvciBsaXZlbmVzczsKLSAgICAgICAgICAg
IGlmIChsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPCBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2Nh
bHNBdFlpZWxkLnNpemUoKSkKLSAgICAgICAgICAgICAgICBsaXZlbmVzcyA9IG1fcmFyZURhdGEt
Pm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGRbbGl2ZUNhbGxlZUxvY2Fsc0luZGV4XTsKLSAgICAg
ICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgInNhdmUi
KTsKLSAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAiLCByZWdpc3Rlck5hbWUoZ2VuZXJhdG9y
KS5kYXRhKCkpOwotICAgICAgICAgICAgbGl2ZW5lc3MuZHVtcChvdXQpOwotICAgICAgICAgICAg
b3V0LnByaW50ZigiKEBsaXZlJTF1KSwgJWQoLT4lZCkiLCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXgs
IG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IH0KLSAgICAgICAgY2FzZSBvcF9yZXN1bWU6IHsKLSAgICAgICAgICAgIGludCBnZW5lcmF0b3Ig
PSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2Nh
bHNJbmRleCA9ICgrK2l0KS0+dS51bnNpZ25lZFZhbHVlOwotICAgICAgICAgICAgRmFzdEJpdFZl
Y3RvciBsaXZlbmVzczsKLSAgICAgICAgICAgIGlmIChsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPCBt
X3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkLnNpemUoKSkKLSAgICAgICAgICAg
ICAgICBsaXZlbmVzcyA9IG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGRbbGl2
ZUNhbGxlZUxvY2Fsc0luZGV4XTsKLSAgICAgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQs
IGV4ZWMsIGxvY2F0aW9uLCBpdCwgInJlc3VtZSIpOwotICAgICAgICAgICAgb3V0LnByaW50Zigi
JXMsICIsIHJlZ2lzdGVyTmFtZShnZW5lcmF0b3IpLmRhdGEoKSk7Ci0gICAgICAgICAgICBsaXZl
bmVzcy5kdW1wKG91dCk7Ci0gICAgICAgICAgICBvdXQucHJpbnRmKCIoQGxpdmUlMXUpIiwgbGl2
ZUNhbGxlZUxvY2Fsc0luZGV4KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9CiAgICAg
ICAgIGNhc2Ugb3BfYXNzZXJ0OiB7CiAgICAgICAgICAgICBpbnQgY29uZGl0aW9uID0gKCsraXQp
LT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgbGluZSA9ICgrK2l0KS0+dS5vcGVyYW5kOwpA
QCAtMTkwMiw3ICsxODY2LDYgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2
bSwgQ29weVBhcnNlZEJsb2NrVGFnLCBDb2RlQmxvY2smIG90aGVyKQogICAgICAgICBtX3JhcmVE
YXRhLT5tX2NvbnN0YW50QnVmZmVycyA9IG90aGVyLm1fcmFyZURhdGEtPm1fY29uc3RhbnRCdWZm
ZXJzOwogICAgICAgICBtX3JhcmVEYXRhLT5tX3N3aXRjaEp1bXBUYWJsZXMgPSBvdGhlci5tX3Jh
cmVEYXRhLT5tX3N3aXRjaEp1bXBUYWJsZXM7CiAgICAgICAgIG1fcmFyZURhdGEtPm1fc3RyaW5n
U3dpdGNoSnVtcFRhYmxlcyA9IG90aGVyLm1fcmFyZURhdGEtPm1fc3RyaW5nU3dpdGNoSnVtcFRh
YmxlczsKLSAgICAgICAgbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZCA9IG90
aGVyLm1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQ7CiAgICAgfQogICAgIAog
ICAgIGhlYXAoKS0+bV9jb2RlQmxvY2tzLmFkZCh0aGlzKTsKQEAgLTIwMjQsNyArMTk4Nyw3IEBA
IHZvaWQgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUq
IG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAgICAgICAgICAgICAgVW5saW5rZWRTdHJpbmdK
dW1wVGFibGU6OlN0cmluZ09mZnNldFRhYmxlOjppdGVyYXRvciBlbmQgPSB1bmxpbmtlZENvZGVC
bG9jay0+c3RyaW5nU3dpdGNoSnVtcFRhYmxlKGkpLm9mZnNldFRhYmxlLmVuZCgpOwogICAgICAg
ICAgICAgICAgIGZvciAoOyBwdHIgIT0gZW5kOyArK3B0cikgewogICAgICAgICAgICAgICAgICAg
ICBPZmZzZXRMb2NhdGlvbiBvZmZzZXQ7Ci0gICAgICAgICAgICAgICAgICAgIG9mZnNldC5icmFu
Y2hPZmZzZXQgPSBwdHItPnZhbHVlOworICAgICAgICAgICAgICAgICAgICBvZmZzZXQuYnJhbmNo
T2Zmc2V0ID0gcHRyLT52YWx1ZS5icmFuY2hPZmZzZXQ7CiAgICAgICAgICAgICAgICAgICAgIG1f
cmFyZURhdGEtPm1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlc1tpXS5vZmZzZXRUYWJsZS5hZGQocHRy
LT5rZXksIG9mZnNldCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpAQCAtMjA2
NCwxMSArMjAyNywyMCBAQCB2b2lkIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBT
Y3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGluawogICAgIC8vIEJvb2trZWVw
IHRoZSBzdHJvbmdseSByZWZlcmVuY2VkIG1vZHVsZSBlbnZpcm9ubWVudHMuCiAgICAgSGFzaFNl
dDxKU01vZHVsZUVudmlyb25tZW50Kj4gc3Ryb25nbHlSZWZlcmVuY2VkTW9kdWxlRW52aXJvbm1l
bnRzOwogCi0gICAgLy8gQm9va2tlZXAgdGhlIG1lcmdlIHBvaW50IGJ5dGVjb2RlIG9mZnNldHMu
Ci0gICAgVmVjdG9yPHNpemVfdD4gbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0czsKLQogICAgIFJl
ZkNvdW50ZWRBcnJheTxJbnN0cnVjdGlvbj4gaW5zdHJ1Y3Rpb25zKGluc3RydWN0aW9uQ291bnQp
OwogCisgICAgLy8gVmFsdWVQcm9maWxlIGFycmF5IG5lZWRzIHRvIGJlIHNvcnRlZCBieSB0aGUg
Ynl0ZWNvZGUgb2Zmc2V0LiBTaW5jZSB0aGUgZ2VuZXJhdG9yaWZpY2F0aW9uIGFkZHMgbmV3IHZh
bHVlIHByb2ZpbGVzLAorICAgIC8vIHRoaXMgaW52YXJpYW50IGlzIGJyb2tlbi4gV2UgYXNzaWdu
IGEgbmV3IHZhbHVlIHByb2ZpbGUgaW5kZXggaGVyZSB0byBtYWtlIHRoaXMgYXNzdW1wdGlvbiB2
YWxpZC4KKyAgICAvLyBKdXN0IGNvdW50aW5nIHRoZSB2YWx1ZSBwcm9maWxlcyBpcyBPSyB0byBh
c3NpZ24gYSBuZXcgaW5kZXggc2luY2Ugb25lIHZhbHVlIHByb2ZpbGUgaXMgbm90IHNoYXJlZCBh
bW9uZyBtdWx0aXBsZSBvcGNvZGVzLgorICAgIHVuc2lnbmVkIHZhbHVlUHJvZmlsZUNvdW50ID0g
MDsKKyAgICBhdXRvIGxpbmtWYWx1ZVByb2ZpbGUgPSBbJl0odW5zaWduZWQgYnl0ZWNvZGVPZmZz
ZXQsIHVuc2lnbmVkIG9wTGVuZ3RoKSB7CisgICAgICAgIHVuc2lnbmVkIHZhbHVlUHJvZmlsZUlu
ZGV4ID0gdmFsdWVQcm9maWxlQ291bnQrKzsKKyAgICAgICAgVmFsdWVQcm9maWxlKiBwcm9maWxl
ID0gJm1fdmFsdWVQcm9maWxlc1t2YWx1ZVByb2ZpbGVJbmRleF07CisgICAgICAgIEFTU0VSVChw
cm9maWxlLT5tX2J5dGVjb2RlT2Zmc2V0ID09IC0xKTsKKyAgICAgICAgcHJvZmlsZS0+bV9ieXRl
Y29kZU9mZnNldCA9IGJ5dGVjb2RlT2Zmc2V0OworICAgICAgICBpbnN0cnVjdGlvbnNbYnl0ZWNv
ZGVPZmZzZXQgKyBvcExlbmd0aCAtIDFdID0gcHJvZmlsZTsKKyAgICB9OworCiAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgIWluc3RydWN0aW9uUmVhZGVyLmF0RW5kKCk7ICkgewogICAgICAgICBj
b25zdCBVbmxpbmtlZEluc3RydWN0aW9uKiBwYyA9IGluc3RydWN0aW9uUmVhZGVyLm5leHQoKTsK
IApAQCAtMjEwMywxMCArMjA3NSw3IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihW
TSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAgICAg
IGNhc2Ugb3BfZ2V0X2J5X2lkOgogICAgICAgICBjYXNlIG9wX2dldF9mcm9tX2FyZ3VtZW50czoK
ICAgICAgICAgY2FzZSBvcF90b19udW1iZXI6IHsKLSAgICAgICAgICAgIFZhbHVlUHJvZmlsZSog
cHJvZmlsZSA9ICZtX3ZhbHVlUHJvZmlsZXNbcGNbb3BMZW5ndGggLSAxXS51Lm9wZXJhbmRdOwot
ICAgICAgICAgICAgQVNTRVJUKHByb2ZpbGUtPm1fYnl0ZWNvZGVPZmZzZXQgPT0gLTEpOwotICAg
ICAgICAgICAgcHJvZmlsZS0+bV9ieXRlY29kZU9mZnNldCA9IGk7Ci0gICAgICAgICAgICBpbnN0
cnVjdGlvbnNbaSArIG9wTGVuZ3RoIC0gMV0gPSBwcm9maWxlOworICAgICAgICAgICAgbGlua1Zh
bHVlUHJvZmlsZShpLCBvcExlbmd0aCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQog
ICAgICAgICBjYXNlIG9wX3B1dF9ieV92YWw6IHsKQEAgLTIxNDMsMTAgKzIxMTIsNyBAQCB2b2lk
IENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25l
ckV4ZWN1dGFibGUsIFVubGluawogICAgICAgICBjYXNlIG9wX2NhbGw6CiAgICAgICAgIGNhc2Ug
b3BfdGFpbF9jYWxsOgogICAgICAgICBjYXNlIG9wX2NhbGxfZXZhbDogewotICAgICAgICAgICAg
VmFsdWVQcm9maWxlKiBwcm9maWxlID0gJm1fdmFsdWVQcm9maWxlc1twY1tvcExlbmd0aCAtIDFd
LnUub3BlcmFuZF07Ci0gICAgICAgICAgICBBU1NFUlQocHJvZmlsZS0+bV9ieXRlY29kZU9mZnNl
dCA9PSAtMSk7Ci0gICAgICAgICAgICBwcm9maWxlLT5tX2J5dGVjb2RlT2Zmc2V0ID0gaTsKLSAg
ICAgICAgICAgIGluc3RydWN0aW9uc1tpICsgb3BMZW5ndGggLSAxXSA9IHByb2ZpbGU7CisgICAg
ICAgICAgICBsaW5rVmFsdWVQcm9maWxlKGksIG9wTGVuZ3RoKTsKICAgICAgICAgICAgIGludCBh
cnJheVByb2ZpbGVJbmRleCA9IHBjW29wTGVuZ3RoIC0gMl0udS5vcGVyYW5kOwogICAgICAgICAg
ICAgbV9hcnJheVByb2ZpbGVzW2FycmF5UHJvZmlsZUluZGV4XSA9IEFycmF5UHJvZmlsZShpKTsK
ICAgICAgICAgICAgIGluc3RydWN0aW9uc1tpICsgb3BMZW5ndGggLSAyXSA9ICZtX2FycmF5UHJv
ZmlsZXNbYXJyYXlQcm9maWxlSW5kZXhdOwpAQCAtMjE1NSwxMCArMjEyMSw3IEBAIHZvaWQgQ29k
ZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhl
Y3V0YWJsZSwgVW5saW5rCiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9jb25zdHJ1Y3Q6IHsK
ICAgICAgICAgICAgIGluc3RydWN0aW9uc1tpICsgNV0gPSAmbV9sbGludENhbGxMaW5rSW5mb3Nb
cGNbNV0udS5vcGVyYW5kXTsKLSAgICAgICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9ICZt
X3ZhbHVlUHJvZmlsZXNbcGNbb3BMZW5ndGggLSAxXS51Lm9wZXJhbmRdOwotICAgICAgICAgICAg
QVNTRVJUKHByb2ZpbGUtPm1fYnl0ZWNvZGVPZmZzZXQgPT0gLTEpOwotICAgICAgICAgICAgcHJv
ZmlsZS0+bV9ieXRlY29kZU9mZnNldCA9IGk7Ci0gICAgICAgICAgICBpbnN0cnVjdGlvbnNbaSAr
IG9wTGVuZ3RoIC0gMV0gPSBwcm9maWxlOworICAgICAgICAgICAgbGlua1ZhbHVlUHJvZmlsZShp
LCBvcExlbmd0aCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNl
IG9wX2dldF9hcnJheV9sZW5ndGg6CkBAIC0yMTg5LDEwICsyMTUyLDcgQEAgdm9pZCBDb2RlQmxv
Y2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRh
YmxlLCBVbmxpbmsKICAgICAgICAgfQogCiAgICAgICAgIGNhc2Ugb3BfZ2V0X2Zyb21fc2NvcGU6
IHsKLSAgICAgICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9ICZtX3ZhbHVlUHJvZmlsZXNb
cGNbb3BMZW5ndGggLSAxXS51Lm9wZXJhbmRdOwotICAgICAgICAgICAgQVNTRVJUKHByb2ZpbGUt
Pm1fYnl0ZWNvZGVPZmZzZXQgPT0gLTEpOwotICAgICAgICAgICAgcHJvZmlsZS0+bV9ieXRlY29k
ZU9mZnNldCA9IGk7Ci0gICAgICAgICAgICBpbnN0cnVjdGlvbnNbaSArIG9wTGVuZ3RoIC0gMV0g
PSBwcm9maWxlOworICAgICAgICAgICAgbGlua1ZhbHVlUHJvZmlsZShpLCBvcExlbmd0aCk7CiAK
ICAgICAgICAgICAgIC8vIGdldF9mcm9tX3Njb3BlIGRzdCwgc2NvcGUsIGlkLCBHZXRQdXRJbmZv
LCBTdHJ1Y3R1cmUsIE9wZXJhbmQKIApAQCAtMjM0OSwxNSArMjMwOSw2IEBAIHZvaWQgQ29kZUJs
b2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0
YWJsZSwgVW5saW5rCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCi0gICAgICAgIGNh
c2Ugb3Bfc2F2ZTogewotICAgICAgICAgICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4
ID0gcGNbMl0udS5pbmRleDsKLSAgICAgICAgICAgIGludCBvZmZzZXQgPSBwY1szXS51Lm9wZXJh
bmQ7Ci0gICAgICAgICAgICBpZiAobGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID49IG1lcmdlUG9pbnRC
eXRlY29kZU9mZnNldHMuc2l6ZSgpKQotICAgICAgICAgICAgICAgIG1lcmdlUG9pbnRCeXRlY29k
ZU9mZnNldHMucmVzaXplKGxpdmVDYWxsZWVMb2NhbHNJbmRleCArIDEpOwotICAgICAgICAgICAg
bWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0c1tsaXZlQ2FsbGVlTG9jYWxzSW5kZXhdID0gaSArIG9m
ZnNldDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0KICAgICAgICAgZGVmYXVsdDoK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0yMzY5LDIwICsyMzIwLDYgQEAgdm9p
ZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3du
ZXJFeGVjdXRhYmxlLCBVbmxpbmsKIAogICAgIG1faW5zdHJ1Y3Rpb25zID0gV1RGTW92ZShpbnN0
cnVjdGlvbnMpOwogCi0gICAgLy8gUGVyZm9ybSBieXRlY29kZSBsaXZlbmVzcyBhbmFseXNpcyB0
byBkZXRlcm1pbmUgd2hpY2ggbG9jYWxzIGFyZSBsaXZlIGFuZCBzaG91bGQgYmUgcmVzdW1lZCB3
aGVuIGV4ZWN1dGluZyBvcF9yZXN1bWUuCi0gICAgaWYgKHVubGlua2VkQ29kZUJsb2NrLT5wYXJz
ZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckJvZHlNb2RlKSB7Ci0gICAgICAg
IGlmIChzaXplX3QgY291bnQgPSBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXRzLnNpemUoKSkgewot
ICAgICAgICAgICAgY3JlYXRlUmFyZURhdGFJZk5lY2Vzc2FyeSgpOwotICAgICAgICAgICAgQnl0
ZWNvZGVMaXZlbmVzc0FuYWx5c2lzIGxpdmVuZXNzKHRoaXMpOwotICAgICAgICAgICAgbV9yYXJl
RGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZC5ncm93KGNvdW50KTsKLSAgICAgICAgICAg
IHNpemVfdCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSAwOwotICAgICAgICAgICAgZm9yIChzaXpl
X3QgYnl0ZWNvZGVPZmZzZXQgOiBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXRzKSB7Ci0gICAgICAg
ICAgICAgICAgbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZFtsaXZlQ2FsbGVl
TG9jYWxzSW5kZXhdID0gbGl2ZW5lc3MuZ2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29kZU9mZnNldChi
eXRlY29kZU9mZnNldCk7Ci0gICAgICAgICAgICAgICAgKytsaXZlQ2FsbGVlTG9jYWxzSW5kZXg7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KICAgICAvLyBTZXQgb3B0aW1pemF0
aW9uIHRocmVzaG9sZHMgb25seSBhZnRlciBtX2luc3RydWN0aW9ucyBpcyBpbml0aWFsaXplZCwg
c2luY2UgdGhlc2UKICAgICAvLyByZWx5IG9uIHRoZSBpbnN0cnVjdGlvbiBjb3VudCAoYW5kIGFy
ZSBpbiB0aGVvcnkgcGVybWl0dGVkIHRvIGFsc28gaW5zcGVjdCB0aGUKICAgICAvLyBpbnN0cnVj
dGlvbiBzdHJlYW0gdG8gbW9yZSBhY2N1cmF0ZSBhc3Nlc3MgdGhlIGNvc3Qgb2YgdGllci11cCku
CkBAIC0zMTgyLDIxICszMTE5LDcgQEAgSGFuZGxlckluZm8qIENvZGVCbG9jazo6aGFuZGxlckZv
ckluZGV4KHVuc2lnbmVkIGluZGV4LCBSZXF1aXJlZEhhbmRsZXIgcmVxdWlyZWQKIHsKICAgICBp
ZiAoIW1fcmFyZURhdGEpCiAgICAgICAgIHJldHVybiAwOwotICAgIAotICAgIFZlY3RvcjxIYW5k
bGVySW5mbz4mIGV4Y2VwdGlvbkhhbmRsZXJzID0gbV9yYXJlRGF0YS0+bV9leGNlcHRpb25IYW5k
bGVyczsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGV4Y2VwdGlvbkhhbmRsZXJzLnNpemUo
KTsgKytpKSB7Ci0gICAgICAgIEhhbmRsZXJJbmZvJiBoYW5kbGVyID0gZXhjZXB0aW9uSGFuZGxl
cnNbaV07Ci0gICAgICAgIGlmICgocmVxdWlyZWRIYW5kbGVyID09IFJlcXVpcmVkSGFuZGxlcjo6
Q2F0Y2hIYW5kbGVyKSAmJiAhaGFuZGxlci5pc0NhdGNoSGFuZGxlcigpKQotICAgICAgICAgICAg
Y29udGludWU7Ci0KLSAgICAgICAgLy8gSGFuZGxlcnMgYXJlIG9yZGVyZWQgaW5uZXJtb3N0IGZp
cnN0LCBzbyB0aGUgZmlyc3QgaGFuZGxlciB3ZSBlbmNvdW50ZXIKLSAgICAgICAgLy8gdGhhdCBj
b250YWlucyB0aGUgc291cmNlIGFkZHJlc3MgaXMgdGhlIGNvcnJlY3QgaGFuZGxlciB0byB1c2Uu
Ci0gICAgICAgIC8vIFRoaXMgaW5kZXggdXNlZCBpcyBlaXRoZXIgdGhlIEJ5dGVjb2RlT2Zmc2V0
IG9yIGEgQ2FsbFNpdGVJbmRleC4KLSAgICAgICAgaWYgKGhhbmRsZXIuc3RhcnQgPD0gaW5kZXgg
JiYgaGFuZGxlci5lbmQgPiBpbmRleCkKLSAgICAgICAgICAgIHJldHVybiAmaGFuZGxlcjsKLSAg
ICB9Ci0KLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gSGFuZGxlckluZm86OmhhbmRsZXJGb3JJ
bmRleChtX3JhcmVEYXRhLT5tX2V4Y2VwdGlvbkhhbmRsZXJzLCBpbmRleCwgcmVxdWlyZWRIYW5k
bGVyKTsKIH0KIAogQ2FsbFNpdGVJbmRleCBDb2RlQmxvY2s6Om5ld0V4Y2VwdGlvbkhhbmRsaW5n
Q2FsbFNpdGVJbmRleChDYWxsU2l0ZUluZGV4IG9yaWdpbmFsQ2FsbFNpdGUpCkBAIC0zMjkyLDcg
KzMyMTUsNiBAQCB2b2lkIENvZGVCbG9jazo6c2hyaW5rVG9GaXQoU2hyaW5rTW9kZSBzaHJpbmtN
b2RlKQogICAgICAgICBpZiAobV9yYXJlRGF0YSkgewogICAgICAgICAgICAgbV9yYXJlRGF0YS0+
bV9zd2l0Y2hKdW1wVGFibGVzLnNocmlua1RvRml0KCk7CiAgICAgICAgICAgICBtX3JhcmVEYXRh
LT5tX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXMuc2hyaW5rVG9GaXQoKTsKLSAgICAgICAgICAgIG1f
cmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQuc2hyaW5rVG9GaXQoKTsKICAgICAg
ICAgfQogICAgIH0gLy8gZWxzZSBkb24ndCBzaHJpbmsgdGhlc2UsIGJlY2F1c2Ugd2Ugd291bGQg
aGF2ZSBhbHJlYWR5IHBvaW50ZWQgcG9pbnRlcnMgaW50byB0aGVzZSB0YWJsZXMuCiB9CkBAIC00
NTcwLDQgKzQ0OTIsMTYgQEAgdm9pZCBDb2RlQmxvY2s6OmppdFNvb24oKQogICAgIG1fbGxpbnRF
eGVjdXRlQ291bnRlci5zZXROZXdUaHJlc2hvbGQodGhyZXNob2xkRm9ySklUKE9wdGlvbnM6OnRo
cmVzaG9sZEZvckpJVFNvb24oKSksIHRoaXMpOwogfQogCitCeXRlY29kZUxpdmVuZXNzQW5hbHlz
aXMmIENvZGVCbG9jazo6bGl2ZW5lc3NBbmFseXNpc1Nsb3coKQoreworICAgIHN0ZDo6dW5pcXVl
X3B0cjxCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM+IGFuYWx5c2lzID0gc3RkOjptYWtlX3VuaXF1
ZTxCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM+KHRoaXMpOworICAgIHsKKyAgICAgICAgQ29uY3Vy
cmVudEpJVExvY2tlciBsb2NrZXIobV9sb2NrKTsKKyAgICAgICAgaWYgKCFtX2xpdmVuZXNzQW5h
bHlzaXMpCisgICAgICAgICAgICBtX2xpdmVuZXNzQW5hbHlzaXMgPSBXVEZNb3ZlKGFuYWx5c2lz
KTsKKyAgICAgICAgcmV0dXJuICptX2xpdmVuZXNzQW5hbHlzaXM7CisgICAgfQorfQorCisKIH0g
Ly8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
ay5oCmluZGV4IGIyODgzNjU0YmUzNDVlN2FiMDExMGVjMWI2ZjVkNjk3YTE4YzI3YzIuLjBiOTBi
N2ViZDdjYjZhMzZjNTEwOGZjZTJjNjk2Zjc5YzU0YzVlMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKQEAgLTMzLDcgKzMzLDYgQEAKICNpbmNsdWRlICJB
cnJheVByb2ZpbGUuaCIKICNpbmNsdWRlICJCeVZhbEluZm8uaCIKICNpbmNsdWRlICJCeXRlY29k
ZUNvbnZlbnRpb25zLmgiCi0jaW5jbHVkZSAiQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmgiCiAj
aW5jbHVkZSAiQ2FsbExpbmtJbmZvLmgiCiAjaW5jbHVkZSAiQ2FsbFJldHVybk9mZnNldFRvQnl0
ZWNvZGVPZmZzZXQuaCIKICNpbmNsdWRlICJDb2RlQmxvY2tIYXNoLmgiCkBAIC03OCw2ICs3Nyw3
IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCitjbGFzcyBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM7
CiBjbGFzcyBFeGVjU3RhdGU7CiBjbGFzcyBKU01vZHVsZUVudmlyb25tZW50OwogY2xhc3MgTExJ
bnRPZmZzZXRzRXh0cmFjdG9yOwpAQCAtMjIwLDEwICsyMjAsNiBAQCBjbGFzcyBDb2RlQmxvY2sg
OiBwdWJsaWMgSlNDZWxsIHsKICAgICAgICAgcmV0dXJuIGluZGV4ID49IG1fbnVtVmFyczsKICAg
ICB9CiAKLSAgICBlbnVtIGNsYXNzIFJlcXVpcmVkSGFuZGxlciB7Ci0gICAgICAgIENhdGNoSGFu
ZGxlciwKLSAgICAgICAgQW55SGFuZGxlcgotICAgIH07CiAgICAgSGFuZGxlckluZm8qIGhhbmRs
ZXJGb3JCeXRlY29kZU9mZnNldCh1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgUmVxdWlyZWRIYW5k
bGVyID0gUmVxdWlyZWRIYW5kbGVyOjpBbnlIYW5kbGVyKTsKICAgICBIYW5kbGVySW5mbyogaGFu
ZGxlckZvckluZGV4KHVuc2lnbmVkLCBSZXF1aXJlZEhhbmRsZXIgPSBSZXF1aXJlZEhhbmRsZXI6
OkFueUhhbmRsZXIpOwogICAgIHZvaWQgcmVtb3ZlRXhjZXB0aW9uSGFuZGxlckZvckNhbGxTaXRl
KENhbGxTaXRlSW5kZXgpOwpAQCAtMjk1LDYgKzI5MSw4IEBAIGNsYXNzIENvZGVCbG9jayA6IHB1
YmxpYyBKU0NlbGwgewogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SW5zdHJ1Y3Rpb24qPihy
ZXR1cm5BZGRyZXNzKSAtIGluc3RydWN0aW9ucygpLmJlZ2luKCk7CiAgICAgfQogCisgICAgdHlw
ZWRlZiBSZWZDb3VudGVkQXJyYXk8SW5zdHJ1Y3Rpb24+JiBVbnBhY2tlZEluc3RydWN0aW9uczsK
KwogICAgIHVuc2lnbmVkIG51bWJlck9mSW5zdHJ1Y3Rpb25zKCkgY29uc3QgeyByZXR1cm4gbV9p
bnN0cnVjdGlvbnMuc2l6ZSgpOyB9CiAgICAgUmVmQ291bnRlZEFycmF5PEluc3RydWN0aW9uPiYg
aW5zdHJ1Y3Rpb25zKCkgeyByZXR1cm4gbV9pbnN0cnVjdGlvbnM7IH0KICAgICBjb25zdCBSZWZD
b3VudGVkQXJyYXk8SW5zdHJ1Y3Rpb24+JiBpbnN0cnVjdGlvbnMoKSBjb25zdCB7IHJldHVybiBt
X2luc3RydWN0aW9uczsgfQpAQCAtNTQyLDcgKzU0MCw3IEBAIGNsYXNzIENvZGVCbG9jayA6IHB1
YmxpYyBKU0NlbGwgewogICAgIH0KIAogICAgIFdyaXRlQmFycmllcjxVbmtub3duPiYgY29uc3Rh
bnRSZWdpc3RlcihpbnQgaW5kZXgpIHsgcmV0dXJuIG1fY29uc3RhbnRSZWdpc3RlcnNbaW5kZXgg
LSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleF07IH0KLSAgICBBTFdBWVNfSU5MSU5FIGJvb2wg
aXNDb25zdGFudFJlZ2lzdGVySW5kZXgoaW50IGluZGV4KSBjb25zdCB7IHJldHVybiBpbmRleCA+
PSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleDsgfQorICAgIHN0YXRpYyBBTFdBWVNfSU5MSU5F
IGJvb2wgaXNDb25zdGFudFJlZ2lzdGVySW5kZXgoaW50IGluZGV4KSB7IHJldHVybiBpbmRleCA+
PSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleDsgfQogICAgIEFMV0FZU19JTkxJTkUgSlNWYWx1
ZSBnZXRDb25zdGFudChpbnQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIG1fY29uc3RhbnRSZWdpc3Rl
cnNbaW5kZXggLSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleF0uZ2V0KCk7IH0KICAgICBBTFdB
WVNfSU5MSU5FIFNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbiBjb25zdGFudFNvdXJjZUNvZGVSZXBy
ZXNlbnRhdGlvbihpbnQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIG1fY29uc3RhbnRzU291cmNlQ29k
ZVJlcHJlc2VudGF0aW9uW2luZGV4IC0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXhdOyB9CiAK
QEAgLTU4OCwxNCArNTg2LDcgQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAg
ICAgICAgICAgICBpZiAoISFtX2xpdmVuZXNzQW5hbHlzaXMpCiAgICAgICAgICAgICAgICAgcmV0
dXJuICptX2xpdmVuZXNzQW5hbHlzaXM7CiAgICAgICAgIH0KLSAgICAgICAgc3RkOjp1bmlxdWVf
cHRyPEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcz4gYW5hbHlzaXMgPQotICAgICAgICAgICAgc3Rk
OjptYWtlX3VuaXF1ZTxCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM+KHRoaXMpOwotICAgICAgICB7
Ci0gICAgICAgICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihtX2xvY2spOwotICAgICAg
ICAgICAgaWYgKCFtX2xpdmVuZXNzQW5hbHlzaXMpCi0gICAgICAgICAgICAgICAgbV9saXZlbmVz
c0FuYWx5c2lzID0gV1RGTW92ZShhbmFseXNpcyk7Ci0gICAgICAgICAgICByZXR1cm4gKm1fbGl2
ZW5lc3NBbmFseXNpczsKLSAgICAgICAgfQorICAgICAgICByZXR1cm4gbGl2ZW5lc3NBbmFseXNp
c1Nsb3coKTsKICAgICB9CiAgICAgCiAgICAgdm9pZCB2YWxpZGF0ZSgpOwpAQCAtNjE2LDE4ICs2
MDcsNiBAQCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICBTdHJpbmdKdW1w
VGFibGUmIGFkZFN0cmluZ1N3aXRjaEp1bXBUYWJsZSgpIHsgY3JlYXRlUmFyZURhdGFJZk5lY2Vz
c2FyeSgpOyBtX3JhcmVEYXRhLT5tX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXMuYXBwZW5kKFN0cmlu
Z0p1bXBUYWJsZSgpKTsgcmV0dXJuIG1fcmFyZURhdGEtPm1fc3RyaW5nU3dpdGNoSnVtcFRhYmxl
cy5sYXN0KCk7IH0KICAgICBTdHJpbmdKdW1wVGFibGUmIHN0cmluZ1N3aXRjaEp1bXBUYWJsZShp
bnQgdGFibGVJbmRleCkgeyBSRUxFQVNFX0FTU0VSVChtX3JhcmVEYXRhKTsgcmV0dXJuIG1fcmFy
ZURhdGEtPm1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlc1t0YWJsZUluZGV4XTsgfQogCi0gICAgLy8g
TGl2ZSBjYWxsZWUgcmVnaXN0ZXJzIGF0IHlpZWxkIHBvaW50cy4KLSAgICBjb25zdCBGYXN0Qml0
VmVjdG9yJiBsaXZlQ2FsbGVlTG9jYWxzQXRZaWVsZCh1bnNpZ25lZCBpbmRleCkgY29uc3QKLSAg
ICB7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fcmFyZURhdGEpOwotICAgICAgICByZXR1cm4g
bV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZFtpbmRleF07Ci0gICAgfQotICAg
IEZhc3RCaXRWZWN0b3ImIGxpdmVDYWxsZWVMb2NhbHNBdFlpZWxkKHVuc2lnbmVkIGluZGV4KQot
ICAgIHsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9yYXJlRGF0YSk7Ci0gICAgICAgIHJldHVy
biBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkW2luZGV4XTsKLSAgICB9Ci0K
ICAgICBFdmFsQ29kZUNhY2hlJiBldmFsQ29kZUNhY2hlKCkgeyBjcmVhdGVSYXJlRGF0YUlmTmVj
ZXNzYXJ5KCk7IHJldHVybiBtX3JhcmVEYXRhLT5tX2V2YWxDb2RlQ2FjaGU7IH0KIAogICAgIGVu
dW0gU2hyaW5rTW9kZSB7CkBAIC04ODIsOCArODYxLDYgQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVi
bGljIEpTQ2VsbCB7CiAgICAgICAgIFZlY3RvcjxTaW1wbGVKdW1wVGFibGU+IG1fc3dpdGNoSnVt
cFRhYmxlczsKICAgICAgICAgVmVjdG9yPFN0cmluZ0p1bXBUYWJsZT4gbV9zdHJpbmdTd2l0Y2hK
dW1wVGFibGVzOwogCi0gICAgICAgIFZlY3RvcjxGYXN0Qml0VmVjdG9yPiBtX2xpdmVDYWxsZWVM
b2NhbHNBdFlpZWxkOwotCiAgICAgICAgIEV2YWxDb2RlQ2FjaGUgbV9ldmFsQ29kZUNhY2hlOwog
ICAgIH07CiAKQEAgLTkxOCw2ICs4OTUsOCBAQCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlND
ZWxsIHsKIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgQ29kZUJsb2NrU2V0OworCisgICAg
Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzJiBsaXZlbmVzc0FuYWx5c2lzU2xvdygpOwogICAgIAog
ICAgIENvZGVCbG9jayogc3BlY2lhbE9TUkVudHJ5QmxvY2tPck51bGwoKTsKICAgICAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9IYW5kbGVySW5mby5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0hhbmRsZXJJbmZvLmgKaW5kZXggYWNkZGEwOGVk
MTRjYmY5ZjA5NzEyNzUwNDA1YTQxNzQxZjc2YTIxMy4uYmI2OTJiOWRjMTcwYjA5ZjQzY2U4Njdm
OTQxZjc1MzVhY2ZlY2Y2MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0hhbmRsZXJJbmZvLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0hh
bmRsZXJJbmZvLmgKQEAgLTM3LDYgKzM3LDExIEBAIGVudW0gY2xhc3MgSGFuZGxlclR5cGUgewog
ICAgIFN5bnRoZXNpemVkRmluYWxseSA9IDMKIH07CiAKK2VudW0gY2xhc3MgUmVxdWlyZWRIYW5k
bGVyIHsKKyAgICBDYXRjaEhhbmRsZXIsCisgICAgQW55SGFuZGxlcgorfTsKKwogc3RydWN0IEhh
bmRsZXJJbmZvQmFzZSB7CiAgICAgSGFuZGxlclR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0
YXRpY19jYXN0PEhhbmRsZXJUeXBlPih0eXBlQml0cyk7IH0KICAgICB2b2lkIHNldFR5cGUoSGFu
ZGxlclR5cGUgdHlwZSkgeyB0eXBlQml0cyA9IHN0YXRpY19jYXN0PHVpbnQzMl90Pih0eXBlKTsg
fQpAQCAtNTgsNiArNjMsMjMgQEAgc3RydWN0IEhhbmRsZXJJbmZvQmFzZSB7CiAKICAgICBib29s
IGlzQ2F0Y2hIYW5kbGVyKCkgY29uc3QgeyByZXR1cm4gdHlwZSgpID09IEhhbmRsZXJUeXBlOjpD
YXRjaDsgfQogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgSGFuZGxlcj4KKyAgICBzdGF0aWMgSGFu
ZGxlciogaGFuZGxlckZvckluZGV4KFZlY3RvcjxIYW5kbGVyPiYgZXhlcHRpb25IYW5kbGVycywg
dW5zaWduZWQgaW5kZXgsIFJlcXVpcmVkSGFuZGxlciByZXF1aXJlZEhhbmRsZXIpCisgICAgewor
ICAgICAgICBmb3IgKEhhbmRsZXImIGhhbmRsZXIgOiBleGVwdGlvbkhhbmRsZXJzKSB7CisgICAg
ICAgICAgICBpZiAoKHJlcXVpcmVkSGFuZGxlciA9PSBSZXF1aXJlZEhhbmRsZXI6OkNhdGNoSGFu
ZGxlcikgJiYgIWhhbmRsZXIuaXNDYXRjaEhhbmRsZXIoKSkKKyAgICAgICAgICAgICAgICBjb250
aW51ZTsKKworICAgICAgICAgICAgLy8gSGFuZGxlcnMgYXJlIG9yZGVyZWQgaW5uZXJtb3N0IGZp
cnN0LCBzbyB0aGUgZmlyc3QgaGFuZGxlciB3ZSBlbmNvdW50ZXIKKyAgICAgICAgICAgIC8vIHRo
YXQgY29udGFpbnMgdGhlIHNvdXJjZSBhZGRyZXNzIGlzIHRoZSBjb3JyZWN0IGhhbmRsZXIgdG8g
dXNlLgorICAgICAgICAgICAgLy8gVGhpcyBpbmRleCB1c2VkIGlzIGVpdGhlciB0aGUgQnl0ZWNv
ZGVPZmZzZXQgb3IgYSBDYWxsU2l0ZUluZGV4LgorICAgICAgICAgICAgaWYgKGhhbmRsZXIuc3Rh
cnQgPD0gaW5kZXggJiYgaGFuZGxlci5lbmQgPiBpbmRleCkKKyAgICAgICAgICAgICAgICByZXR1
cm4gJmhhbmRsZXI7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9
CisKICAgICB1aW50MzJfdCBzdGFydDsKICAgICB1aW50MzJfdCBlbmQ7CiAgICAgdWludDMyX3Qg
dGFyZ2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNp
c2VKdW1wVGFyZ2V0cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lz
ZUp1bXBUYXJnZXRzLmNwcAppbmRleCBlMmNiMDAwNDgzNzk0YmE5MmQ1MTBkY2Y1ZmE5OTQ4ODVh
MjNkYzNkLi5jYWI5ZmJkYzRlODM5ZmJiODlhNjkzMzU2MjIyZGIwMGUxMDIyM2NhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRz
LmNwcApAQCAtMjYsMTQgKzI2LDE1IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
UHJlY2lzZUp1bXBUYXJnZXRzLmgiCiAKKyNpbmNsdWRlICJJbnRlcnByZXRlcklubGluZXMuaCIK
ICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCi10ZW1wbGF0ZSA8
c2l6ZV90IHZlY3RvclNpemU+Ci1zdGF0aWMgdm9pZCBnZXRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2Rl
T2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBJbnRlcnByZXRlciogaW50ZXJwcmV0ZXIsIElu
c3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIFZl
Y3Rvcjx1bnNpZ25lZCwgdmVjdG9yU2l6ZT4mIG91dCkKK3RlbXBsYXRlIDxzaXplX3QgdmVjdG9y
U2l6ZSwgdHlwZW5hbWUgQmxvY2ssIHR5cGVuYW1lIEluc3RydWN0aW9uPgorc3RhdGljIHZvaWQg
Z2V0SnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChCbG9jayogY29kZUJsb2NrLCBJbnRlcnBy
ZXRlciogaW50ZXJwcmV0ZXIsIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWdu
ZWQgYnl0ZWNvZGVPZmZzZXQsIFZlY3Rvcjx1bnNpZ25lZCwgdmVjdG9yU2l6ZT4mIG91dCkKIHsK
LSAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGludGVycHJldGVyLT5nZXRPcGNvZGVJRChpbnN0cnVj
dGlvbnNCZWdpbltieXRlY29kZU9mZnNldF0udS5vcGNvZGUpOworICAgIE9wY29kZUlEIG9wY29k
ZUlEID0gaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGluc3RydWN0aW9uc0JlZ2luW2J5dGVjb2Rl
T2Zmc2V0XSk7CiAgICAgSW5zdHJ1Y3Rpb24qIGN1cnJlbnQgPSBpbnN0cnVjdGlvbnNCZWdpbiAr
IGJ5dGVjb2RlT2Zmc2V0OwogICAgIHN3aXRjaCAob3Bjb2RlSUQpIHsKICAgICBjYXNlIG9wX2pt
cDoKQEAgLTU0LDIxICs1NSwyNSBAQCBzdGF0aWMgdm9pZCBnZXRKdW1wVGFyZ2V0c0ZvckJ5dGVj
b2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBJbnRlcnByZXRlciogaQogICAgIGNhc2Ug
b3Bfam5sZXNzZXE6CiAgICAgY2FzZSBvcF9qbmdyZWF0ZXI6CiAgICAgY2FzZSBvcF9qbmdyZWF0
ZXJlcToKLSAgICBjYXNlIG9wX3NhdmU6IC8vIFRoZSBqdW1wIG9mIG9wX3NhdmUgaXMgcHVyZWx5
IGZvciBjYWxjdWxhdGluZyBsaXZlbmVzcy4KICAgICAgICAgb3V0LmFwcGVuZChieXRlY29kZU9m
ZnNldCArIGN1cnJlbnRbM10udS5vcGVyYW5kKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBv
cF9zYXZlOiB7CisgICAgICAgIC8vIFRoZSBqdW1wIG9mIG9wX3NhdmUgdW5kZXIgRXh0cmFjdEdl
bmVyYXRvckxpdmVDYWxsZWVMb2NhbHMgbW9kZSBpcyBwdXJlbHkgZm9yIGNhbGN1bGF0aW5nIGxp
dmVuZXNzLgorICAgICAgICBvdXQuYXBwZW5kKGJ5dGVjb2RlT2Zmc2V0ICsgY3VycmVudFszXS51
Lm9wZXJhbmQpOworICAgICAgICBicmVhazsKKyAgICB9CiAgICAgY2FzZSBvcF9zd2l0Y2hfaW1t
OgogICAgIGNhc2Ugb3Bfc3dpdGNoX2NoYXI6IHsKLSAgICAgICAgU2ltcGxlSnVtcFRhYmxlJiB0
YWJsZSA9IGNvZGVCbG9jay0+c3dpdGNoSnVtcFRhYmxlKGN1cnJlbnRbMV0udS5vcGVyYW5kKTsK
KyAgICAgICAgYXV0byYgdGFibGUgPSBjb2RlQmxvY2stPnN3aXRjaEp1bXBUYWJsZShjdXJyZW50
WzFdLnUub3BlcmFuZCk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IHRhYmxlLmJyYW5jaE9m
ZnNldHMuc2l6ZSgpOyBpLS07KQogICAgICAgICAgICAgb3V0LmFwcGVuZChieXRlY29kZU9mZnNl
dCArIHRhYmxlLmJyYW5jaE9mZnNldHNbaV0pOwogICAgICAgICBvdXQuYXBwZW5kKGJ5dGVjb2Rl
T2Zmc2V0ICsgY3VycmVudFsyXS51Lm9wZXJhbmQpOwogICAgICAgICBicmVhazsKICAgICB9CiAg
ICAgY2FzZSBvcF9zd2l0Y2hfc3RyaW5nOiB7Ci0gICAgICAgIFN0cmluZ0p1bXBUYWJsZSYgdGFi
bGUgPSBjb2RlQmxvY2stPnN0cmluZ1N3aXRjaEp1bXBUYWJsZShjdXJyZW50WzFdLnUub3BlcmFu
ZCk7Ci0gICAgICAgIFN0cmluZ0p1bXBUYWJsZTo6U3RyaW5nT2Zmc2V0VGFibGU6Oml0ZXJhdG9y
IGl0ZXIgPSB0YWJsZS5vZmZzZXRUYWJsZS5iZWdpbigpOwotICAgICAgICBTdHJpbmdKdW1wVGFi
bGU6OlN0cmluZ09mZnNldFRhYmxlOjppdGVyYXRvciBlbmQgPSB0YWJsZS5vZmZzZXRUYWJsZS5l
bmQoKTsKKyAgICAgICAgYXV0byYgdGFibGUgPSBjb2RlQmxvY2stPnN0cmluZ1N3aXRjaEp1bXBU
YWJsZShjdXJyZW50WzFdLnUub3BlcmFuZCk7CisgICAgICAgIGF1dG8gaXRlciA9IHRhYmxlLm9m
ZnNldFRhYmxlLmJlZ2luKCk7CisgICAgICAgIGF1dG8gZW5kID0gdGFibGUub2Zmc2V0VGFibGUu
ZW5kKCk7CiAgICAgICAgIGZvciAoOyBpdGVyICE9IGVuZDsgKytpdGVyKQogICAgICAgICAgICAg
b3V0LmFwcGVuZChieXRlY29kZU9mZnNldCArIGl0ZXItPnZhbHVlLmJyYW5jaE9mZnNldCk7CiAg
ICAgICAgIG91dC5hcHBlbmQoYnl0ZWNvZGVPZmZzZXQgKyBjdXJyZW50WzJdLnUub3BlcmFuZCk7
CkBAIC04MiwxMyArODcsMTkgQEAgc3RhdGljIHZvaWQgZ2V0SnVtcFRhcmdldHNGb3JCeXRlY29k
ZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgSW50ZXJwcmV0ZXIqIGkKICAgICB9CiB9CiAK
LXZvaWQgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgVmVj
dG9yPHVuc2lnbmVkLCAzMj4mIG91dCkKK2VudW0gY2xhc3MgQ29tcHV0ZVByZWNpc2VKdW1wVGFy
Z2V0c01vZGUgeworICAgIEZvbGxvd0NvZGVCbG9ja0NsYWltLAorICAgIEZvcmNlQ29tcHV0ZSwK
K307CisKK3RlbXBsYXRlPENvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHNNb2RlIE1vZGUsIHR5cGVu
YW1lIEJsb2NrLCB0eXBlbmFtZSBJbnN0cnVjdGlvbiwgc2l6ZV90IHZlY3RvclNpemU+Cit2b2lk
IGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHNJbnRlcm5hbChCbG9jayogY29kZUJsb2NrLCBJbnN0
cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQsIFZl
Y3Rvcjx1bnNpZ25lZCwgdmVjdG9yU2l6ZT4mIG91dCkKIHsKICAgICBBU1NFUlQob3V0LmlzRW1w
dHkoKSk7CiAgICAgCiAgICAgLy8gV2Ugd2lsbCBkZXJpdmUgYSBzdXBlcnNldCBvZiB0aGUganVt
cCB0YXJnZXRzIHRoYXQgdGhlIGNvZGUgYmxvY2sgdGhpbmtzIGl0IGhhcy4KICAgICAvLyBTbywg
aWYgdGhlIGNvZGUgYmxvY2sgY2xhaW1zIHRoZXJlIGFyZSBub25lLCB0aGVuIHdlIGFyZSBkb25l
LgotICAgIGlmICghY29kZUJsb2NrLT5udW1iZXJPZkp1bXBUYXJnZXRzKCkpCisgICAgaWYgKE1v
ZGUgPT0gQ29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0c01vZGU6OkZvbGxvd0NvZGVCbG9ja0NsYWlt
ICYmICFjb2RlQmxvY2stPm51bWJlck9mSnVtcFRhcmdldHMoKSkKICAgICAgICAgcmV0dXJuOwog
ICAgIAogICAgIGZvciAodW5zaWduZWQgaSA9IGNvZGVCbG9jay0+bnVtYmVyT2ZFeGNlcHRpb25I
YW5kbGVycygpOyBpLS07KSB7CkBAIC05OCwxMCArMTA5LDggQEAgdm9pZCBjb21wdXRlUHJlY2lz
ZUp1bXBUYXJnZXRzKENvZGVCbG9jayogY29kZUJsb2NrLCBWZWN0b3I8dW5zaWduZWQsIDMyPiYg
b3V0KQogICAgIH0KIAogICAgIEludGVycHJldGVyKiBpbnRlcnByZXRlciA9IGNvZGVCbG9jay0+
dm0oKS0+aW50ZXJwcmV0ZXI7Ci0gICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luID0g
Y29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpOwotICAgIHVuc2lnbmVkIGluc3RydWN0
aW9uQ291bnQgPSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLnNpemUoKTsKICAgICBmb3IgKHVu
c2lnbmVkIGJ5dGVjb2RlT2Zmc2V0ID0gMDsgYnl0ZWNvZGVPZmZzZXQgPCBpbnN0cnVjdGlvbkNv
dW50OykgewotICAgICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGludGVycHJldGVyLT5nZXRPcGNv
ZGVJRChpbnN0cnVjdGlvbnNCZWdpbltieXRlY29kZU9mZnNldF0udS5vcGNvZGUpOworICAgICAg
ICBPcGNvZGVJRCBvcGNvZGVJRCA9IGludGVycHJldGVyLT5nZXRPcGNvZGVJRChpbnN0cnVjdGlv
bnNCZWdpbltieXRlY29kZU9mZnNldF0pOwogICAgICAgICBnZXRKdW1wVGFyZ2V0c0ZvckJ5dGVj
b2RlT2Zmc2V0KGNvZGVCbG9jaywgaW50ZXJwcmV0ZXIsIGluc3RydWN0aW9uc0JlZ2luLCBieXRl
Y29kZU9mZnNldCwgb3V0KTsKICAgICAgICAgYnl0ZWNvZGVPZmZzZXQgKz0gb3Bjb2RlTGVuZ3Ro
c1tvcGNvZGVJRF07CiAgICAgfQpAQCAtMTIzLDExICsxMzIsMzQgQEAgdm9pZCBjb21wdXRlUHJl
Y2lzZUp1bXBUYXJnZXRzKENvZGVCbG9jayogY29kZUJsb2NrLCBWZWN0b3I8dW5zaWduZWQsIDMy
PiYgb3V0KQogICAgIG91dC5zaHJpbmtUb0ZpdCgpOwogfQogCi12b2lkIGZpbmRKdW1wVGFyZ2V0
c0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCB1bnNpZ25lZCBieXRlY29k
ZU9mZnNldCwgVmVjdG9yPHVuc2lnbmVkLCAxPiYgb3V0KQordm9pZCBjb21wdXRlUHJlY2lzZUp1
bXBUYXJnZXRzKENvZGVCbG9jayogY29kZUJsb2NrLCBWZWN0b3I8dW5zaWduZWQsIDMyPiYgb3V0
KQogewotICAgIEludGVycHJldGVyKiBpbnRlcnByZXRlciA9IGNvZGVCbG9jay0+dm0oKS0+aW50
ZXJwcmV0ZXI7Ci0gICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luID0gY29kZUJsb2Nr
LT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpOwotICAgIGdldEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVP
ZmZzZXQoY29kZUJsb2NrLCBpbnRlcnByZXRlciwgaW5zdHJ1Y3Rpb25zQmVnaW4sIGJ5dGVjb2Rl
T2Zmc2V0LCBvdXQpOworICAgIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHNJbnRlcm5hbDxDb21w
dXRlUHJlY2lzZUp1bXBUYXJnZXRzTW9kZTo6Rm9sbG93Q29kZUJsb2NrQ2xhaW0+KGNvZGVCbG9j
aywgY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpLCBjb2RlQmxvY2stPmluc3RydWN0
aW9ucygpLnNpemUoKSwgb3V0KTsKK30KKwordm9pZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRz
KENvZGVCbG9jayogY29kZUJsb2NrLCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVu
c2lnbmVkIGluc3RydWN0aW9uQ291bnQsIFZlY3Rvcjx1bnNpZ25lZCwgMzI+JiBvdXQpCit7Cisg
ICAgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0c0ludGVybmFsPENvbXB1dGVQcmVjaXNlSnVtcFRh
cmdldHNNb2RlOjpGb2xsb3dDb2RlQmxvY2tDbGFpbT4oY29kZUJsb2NrLCBpbnN0cnVjdGlvbnNC
ZWdpbiwgaW5zdHJ1Y3Rpb25Db3VudCwgb3V0KTsKK30KKwordm9pZCBjb21wdXRlUHJlY2lzZUp1
bXBUYXJnZXRzKFVubGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFVubGlua2VkSW5zdHJ1Y3Rp
b24qIGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50LCBWZWN0b3I8
dW5zaWduZWQsIDMyPiYgb3V0KQoreworICAgIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHNJbnRl
cm5hbDxDb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzTW9kZTo6Rm9sbG93Q29kZUJsb2NrQ2xhaW0+
KGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb25zQmVnaW4sIGluc3RydWN0aW9uQ291bnQsIG91dCk7Cit9
CisKK3ZvaWQgcmVjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKFVubGlua2VkQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIFVubGlua2VkSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25l
ZCBpbnN0cnVjdGlvbkNvdW50LCBWZWN0b3I8dW5zaWduZWQ+JiBvdXQpCit7CisgICAgY29tcHV0
ZVByZWNpc2VKdW1wVGFyZ2V0c0ludGVybmFsPENvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHNNb2Rl
OjpGb3JjZUNvbXB1dGU+KGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb25zQmVnaW4sIGluc3RydWN0aW9u
Q291bnQsIG91dCk7Cit9CisKK3ZvaWQgZmluZEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQo
Q29kZUJsb2NrKiBjb2RlQmxvY2ssIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5z
aWduZWQgYnl0ZWNvZGVPZmZzZXQsIFZlY3Rvcjx1bnNpZ25lZCwgMT4mIG91dCkKK3sKKyAgICBn
ZXRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9jaywgY29kZUJsb2NrLT52bSgp
LT5pbnRlcnByZXRlciwgaW5zdHJ1Y3Rpb25zQmVnaW4sIGJ5dGVjb2RlT2Zmc2V0LCBvdXQpOwor
fQorCit2b2lkIGZpbmRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KFVubGlua2VkQ29kZUJs
b2NrKiBjb2RlQmxvY2ssIFVubGlua2VkSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1
bnNpZ25lZCBieXRlY29kZU9mZnNldCwgVmVjdG9yPHVuc2lnbmVkLCAxPiYgb3V0KQoreworICAg
IGdldEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoY29kZUJsb2NrLCBjb2RlQmxvY2stPnZt
KCktPmludGVycHJldGVyLCBpbnN0cnVjdGlvbnNCZWdpbiwgYnl0ZWNvZGVPZmZzZXQsIG91dCk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5oCmluZGV4IDg1MjQxM2Q3N2I3OTg5ODRiMjdj
ZWYwZWQ2MmJjOTRjNjg5ZTIxMmMuLmRiOWJkMzgzYjhhYzQ1NTdkMzI2NzE3YjcyZDRiMGY1MGIx
ZDE4MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVjaXNl
SnVtcFRhcmdldHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lz
ZUp1bXBUYXJnZXRzLmgKQEAgLTMwLDEwICszMCwxOCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAor
Y2xhc3MgVW5saW5rZWRDb2RlQmxvY2s7CitzdHJ1Y3QgVW5saW5rZWRJbnN0cnVjdGlvbjsKKwog
Ly8gUmV0dXJuIGEgc29ydGVkIGxpc3Qgb2YgYnl0ZWNvZGUgaW5kZXggdGhhdCBhcmUgdGhlIGRl
c3RpbmF0aW9uIG9mIGEganVtcC4KIHZvaWQgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhDb2Rl
QmxvY2sqLCBWZWN0b3I8dW5zaWduZWQsIDMyPiYgb3V0KTsKK3ZvaWQgY29tcHV0ZVByZWNpc2VK
dW1wVGFyZ2V0cyhDb2RlQmxvY2sqLCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVu
c2lnbmVkIGluc3RydWN0aW9uQ291bnQsIFZlY3Rvcjx1bnNpZ25lZCwgMzI+JiBvdXQpOwordm9p
ZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKFVubGlua2VkQ29kZUJsb2NrKiwgVW5saW5rZWRJ
bnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQs
IFZlY3Rvcjx1bnNpZ25lZCwgMzI+JiBvdXQpOworCit2b2lkIHJlY29tcHV0ZVByZWNpc2VKdW1w
VGFyZ2V0cyhVbmxpbmtlZENvZGVCbG9jayosIFVubGlua2VkSW5zdHJ1Y3Rpb24qIGluc3RydWN0
aW9uc0JlZ2luLCB1bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50LCBWZWN0b3I8dW5zaWduZWQ+JiBv
dXQpOwogCi12b2lkIGZpbmRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayos
IHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBWZWN0b3I8dW5zaWduZWQsIDE+JiBvdXQpOwordm9p
ZCBmaW5kSnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqLCBJbnN0cnVjdGlv
biogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBWZWN0b3I8dW5z
aWduZWQsIDE+JiBvdXQpOwordm9pZCBmaW5kSnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChV
bmxpbmtlZENvZGVCbG9jayosIFVubGlua2VkSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2lu
LCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgVmVjdG9yPHVuc2lnbmVkLCAxPiYgb3V0KTsKIAog
fSAvLyBuYW1lc3BhY2UgSlNDCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCmluZGV4IDI5OWFjNjgwZDlhMWQxZTVhOTBkOWZh
ZTFhMjJmODQ0ZTI5MmUzZTIuLmY3YjVhZTBiNmI0NzIxNzBkMjg5NDY0MTY3NjYxOGM1N2M0OWVj
MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENv
ZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2Vk
Q29kZUJsb2NrLmNwcApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIlVubGlua2VkQ29kZUJs
b2NrLmgiCiAKICNpbmNsdWRlICJCeXRlY29kZUdlbmVyYXRvci5oIgorI2luY2x1ZGUgIkJ5dGVj
b2RlTW9kaWZpY2F0aW9uU2V0LmgiCiAjaW5jbHVkZSAiQ2xhc3NJbmZvLmgiCiAjaW5jbHVkZSAi
Q29kZUNhY2hlLmgiCiAjaW5jbHVkZSAiRXhlY3V0YWJsZS5oIgpAQCAtMzYsNiArMzcsNyBAQAog
I2luY2x1ZGUgIkpTU3RyaW5nLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUg
IlBhcnNlci5oIgorI2luY2x1ZGUgIlByZWNpc2VKdW1wVGFyZ2V0cy5oIgogI2luY2x1ZGUgIlNv
dXJjZVByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlLmgiCiAjaW5jbHVkZSAiU3ltYm9s
VGFibGUuaCIKQEAgLTM2Niw1ICszNjgsMTExIEBAIGNvbnN0IFVubGlua2VkSW5zdHJ1Y3Rpb25T
dHJlYW0mIFVubGlua2VkQ29kZUJsb2NrOjppbnN0cnVjdGlvbnMoKSBjb25zdAogICAgIHJldHVy
biAqbV91bmxpbmtlZEluc3RydWN0aW9uczsKIH0KIAorVW5saW5rZWRIYW5kbGVySW5mbyogVW5s
aW5rZWRDb2RlQmxvY2s6OmhhbmRsZXJGb3JCeXRlY29kZU9mZnNldCh1bnNpZ25lZCBieXRlY29k
ZU9mZnNldCwgUmVxdWlyZWRIYW5kbGVyIHJlcXVpcmVkSGFuZGxlcikKK3sKKyAgICByZXR1cm4g
aGFuZGxlckZvckluZGV4KGJ5dGVjb2RlT2Zmc2V0LCByZXF1aXJlZEhhbmRsZXIpOworfQorCitV
bmxpbmtlZEhhbmRsZXJJbmZvKiBVbmxpbmtlZENvZGVCbG9jazo6aGFuZGxlckZvckluZGV4KHVu
c2lnbmVkIGluZGV4LCBSZXF1aXJlZEhhbmRsZXIgcmVxdWlyZWRIYW5kbGVyKQoreworICAgIGlm
ICghbV9yYXJlRGF0YSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIFVubGlu
a2VkSGFuZGxlckluZm86OmhhbmRsZXJGb3JJbmRleChtX3JhcmVEYXRhLT5tX2V4Y2VwdGlvbkhh
bmRsZXJzLCBpbmRleCwgcmVxdWlyZWRIYW5kbGVyKTsKK30KKwordm9pZCBVbmxpbmtlZENvZGVC
bG9jazo6YXBwbHlNb2RpZmljYXRpb24oQnl0ZWNvZGVNb2RpZmljYXRpb25TZXQmIGluc2VydGlv
blNldCkKK3sKKyAgICAvLyBCZWZvcmUgYXBwbHlpbmcgdGhlIGNoYW5nZXMsIHdlIGFkanVzdCB0
aGUganVtcHMgYmFzZWQgb24gdGhlIG9yaWdpbmFsIGJ5dGVjb2RlIG9mZnNldCwgdGhlIG9mZnNl
dCB0byB0aGUganVtcCB0YXJnZXQsIGFuZAorICAgIC8vIHRoZSBpbnNlcnRpb24gaW5mb3JtYXRp
b24uCisKKyAgICBCeXRlY29kZUdyYXBoPFVubGlua2VkQ29kZUJsb2NrPiYgZ3JhcGggPSBpbnNl
cnRpb25TZXQuZ3JhcGgoKTsKKyAgICBVbmxpbmtlZEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNC
ZWdpbiA9IGdyYXBoLmluc3RydWN0aW9ucygpLmJlZ2luKCk7CisgICAgZm9yIChpbnQgYnl0ZWNv
ZGVPZmZzZXQgPSAwLCBpbnN0cnVjdGlvbkNvdW50ID0gZ3JhcGguaW5zdHJ1Y3Rpb25zKCkuc2l6
ZSgpOyBieXRlY29kZU9mZnNldCA8IGluc3RydWN0aW9uQ291bnQ7KSB7CisgICAgICAgIFVubGlu
a2VkSW5zdHJ1Y3Rpb24qIGN1cnJlbnQgPSBpbnN0cnVjdGlvbnNCZWdpbiArIGJ5dGVjb2RlT2Zm
c2V0OworICAgICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGN1cnJlbnRbMF0udS5vcGNvZGU7CisK
KyAgICAgICAgc3dpdGNoIChvcGNvZGVJRCkgeworICAgICAgICBjYXNlIG9wX2ptcDoKKyAgICAg
ICAgICAgIGN1cnJlbnRbMV0udS5vcGVyYW5kID0gaW5zZXJ0aW9uU2V0LmFkanVzdE9mZnNldChi
eXRlY29kZU9mZnNldCwgYnl0ZWNvZGVPZmZzZXQgKyBjdXJyZW50WzFdLnUub3BlcmFuZCk7Cisg
ICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIG9wX2p0cnVlOgorICAgICAgICBjYXNl
IG9wX2pmYWxzZToKKyAgICAgICAgY2FzZSBvcF9qZXFfbnVsbDoKKyAgICAgICAgY2FzZSBvcF9q
bmVxX251bGw6CisgICAgICAgICAgICBjdXJyZW50WzJdLnUub3BlcmFuZCA9IGluc2VydGlvblNl
dC5hZGp1c3RPZmZzZXQoYnl0ZWNvZGVPZmZzZXQsIGJ5dGVjb2RlT2Zmc2V0ICsgY3VycmVudFsy
XS51Lm9wZXJhbmQpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBvcF9qbmVx
X3B0cjoKKyAgICAgICAgY2FzZSBvcF9qbGVzczoKKyAgICAgICAgY2FzZSBvcF9qbGVzc2VxOgor
ICAgICAgICBjYXNlIG9wX2pncmVhdGVyOgorICAgICAgICBjYXNlIG9wX2pncmVhdGVyZXE6Cisg
ICAgICAgIGNhc2Ugb3Bfam5sZXNzOgorICAgICAgICBjYXNlIG9wX2pubGVzc2VxOgorICAgICAg
ICBjYXNlIG9wX2puZ3JlYXRlcjoKKyAgICAgICAgY2FzZSBvcF9qbmdyZWF0ZXJlcToKKyAgICAg
ICAgICAgIGN1cnJlbnRbM10udS5vcGVyYW5kID0gaW5zZXJ0aW9uU2V0LmFkanVzdE9mZnNldChi
eXRlY29kZU9mZnNldCwgYnl0ZWNvZGVPZmZzZXQgKyBjdXJyZW50WzNdLnUub3BlcmFuZCk7Cisg
ICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIG9wX3N3aXRjaF9pbW06CisgICAgICAg
IGNhc2Ugb3Bfc3dpdGNoX2NoYXI6IHsKKyAgICAgICAgICAgIGF1dG8mIHRhYmxlID0gc3dpdGNo
SnVtcFRhYmxlKGN1cnJlbnRbMV0udS5vcGVyYW5kKTsKKyAgICAgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IHRhYmxlLmJyYW5jaE9mZnNldHMuc2l6ZSgpOyBpLS07KQorICAgICAgICAgICAgICAg
IHRhYmxlLmJyYW5jaE9mZnNldHNbaV0gPSBpbnNlcnRpb25TZXQuYWRqdXN0T2Zmc2V0KGJ5dGVj
b2RlT2Zmc2V0LCBieXRlY29kZU9mZnNldCArIHRhYmxlLmJyYW5jaE9mZnNldHNbaV0pOworICAg
ICAgICAgICAgY3VycmVudFsyXS51Lm9wZXJhbmQgPSBpbnNlcnRpb25TZXQuYWRqdXN0T2Zmc2V0
KGJ5dGVjb2RlT2Zmc2V0LCBieXRlY29kZU9mZnNldCArIGN1cnJlbnRbMl0udS5vcGVyYW5kKTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBvcF9zd2l0Y2hf
c3RyaW5nOiB7CisgICAgICAgICAgICBhdXRvJiB0YWJsZSA9IHN0cmluZ1N3aXRjaEp1bXBUYWJs
ZShjdXJyZW50WzFdLnUub3BlcmFuZCk7CisgICAgICAgICAgICBhdXRvIGl0ZXIgPSB0YWJsZS5v
ZmZzZXRUYWJsZS5iZWdpbigpOworICAgICAgICAgICAgYXV0byBlbmQgPSB0YWJsZS5vZmZzZXRU
YWJsZS5lbmQoKTsKKyAgICAgICAgICAgIGZvciAoOyBpdGVyICE9IGVuZDsgKytpdGVyKQorICAg
ICAgICAgICAgICAgIGl0ZXItPnZhbHVlLmJyYW5jaE9mZnNldCA9IGluc2VydGlvblNldC5hZGp1
c3RPZmZzZXQoYnl0ZWNvZGVPZmZzZXQsIGJ5dGVjb2RlT2Zmc2V0ICsgaXRlci0+dmFsdWUuYnJh
bmNoT2Zmc2V0KTsKKyAgICAgICAgICAgIGN1cnJlbnRbMl0udS5vcGVyYW5kID0gaW5zZXJ0aW9u
U2V0LmFkanVzdE9mZnNldChieXRlY29kZU9mZnNldCwgYnl0ZWNvZGVPZmZzZXQgKyBjdXJyZW50
WzJdLnUub3BlcmFuZCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAg
IGRlZmF1bHQ6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGJ5dGVj
b2RlT2Zmc2V0ICs9IG9wY29kZUxlbmd0aChvcGNvZGVJRCk7CisgICAgfQorCisgICAgLy8gVGhl
biwgZXhjZXB0aW9uIGhhbmRsZXJzIHNob3VsZCBiZSBhZGp1c3RlZC4KKyAgICBpZiAobV9yYXJl
RGF0YSkgeworICAgICAgICBmb3IgKFVubGlua2VkSGFuZGxlckluZm8mIGhhbmRsZXIgOiBtX3Jh
cmVEYXRhLT5tX2V4Y2VwdGlvbkhhbmRsZXJzKSB7CisgICAgICAgICAgICBoYW5kbGVyLnRhcmdl
dCA9IGluc2VydGlvblNldC5hZGp1c3RPZmZzZXQoMCwgaGFuZGxlci50YXJnZXQpOworICAgICAg
ICAgICAgaGFuZGxlci5zdGFydCA9IGluc2VydGlvblNldC5hZGp1c3RPZmZzZXQoMCwgaGFuZGxl
ci5zdGFydCk7CisgICAgICAgICAgICBoYW5kbGVyLmVuZCA9IGluc2VydGlvblNldC5hZGp1c3RP
ZmZzZXQoMCwgaGFuZGxlci5lbmQpOworICAgICAgICB9CisKKyAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBtX3JhcmVEYXRhLT5tX29wUHJvZmlsZUNvbnRyb2xGbG93Qnl0ZWNvZGVPZmZz
ZXRzLnNpemUoKTsgKytpKQorICAgICAgICAgICAgbV9yYXJlRGF0YS0+bV9vcFByb2ZpbGVDb250
cm9sRmxvd0J5dGVjb2RlT2Zmc2V0c1tpXSA9IGluc2VydGlvblNldC5hZGp1c3RPZmZzZXQoMCwg
bV9yYXJlRGF0YS0+bV9vcFByb2ZpbGVDb250cm9sRmxvd0J5dGVjb2RlT2Zmc2V0c1tpXSk7CisK
KyAgICAgICAgaWYgKCFtX3JhcmVEYXRhLT5tX3R5cGVQcm9maWxlckluZm9NYXAuaXNFbXB0eSgp
KSB7CisgICAgICAgICAgICBIYXNoTWFwPHVuc2lnbmVkLCBSYXJlRGF0YTo6VHlwZVByb2ZpbGVy
RXhwcmVzc2lvblJhbmdlPiBhZGp1c3RlZFR5cGVQcm9maWxlckluZm9NYXA7CisgICAgICAgICAg
ICBmb3IgKGF1dG8mIGVudHJ5IDogbV9yYXJlRGF0YS0+bV90eXBlUHJvZmlsZXJJbmZvTWFwKQor
ICAgICAgICAgICAgICAgIGFkanVzdGVkVHlwZVByb2ZpbGVySW5mb01hcC5zZXQoaW5zZXJ0aW9u
U2V0LmFkanVzdE9mZnNldCgwLCBlbnRyeS5rZXkpLCBlbnRyeS52YWx1ZSk7CisgICAgICAgICAg
ICBtX3JhcmVEYXRhLT5tX3R5cGVQcm9maWxlckluZm9NYXAuc3dhcChhZGp1c3RlZFR5cGVQcm9m
aWxlckluZm9NYXApOworICAgICAgICB9CisgICAgfQorCisgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBtX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zLnNpemUoKTsgKytpKQorICAgICAgICBt
X3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zW2ldID0gaW5zZXJ0aW9uU2V0LmFkanVzdE9mZnNl
dCgwLCBtX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zW2ldKTsKKworICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgbV9leHByZXNzaW9uSW5mby5zaXplKCk7ICsraSkKKyAgICAgICAgbV9leHBy
ZXNzaW9uSW5mb1tpXS5pbnN0cnVjdGlvbk9mZnNldCA9IGluc2VydGlvblNldC5hZGp1c3RPZmZz
ZXQoMCwgbV9leHByZXNzaW9uSW5mb1tpXS5pbnN0cnVjdGlvbk9mZnNldCk7CisKKyAgICAvLyBU
aGVuLCBtb2RpZnkgdGhlIHVubGlua2VkIGluc3RydWN0aW9ucy4KKyAgICBpbnNlcnRpb25TZXQu
YXBwbHlNb2RpZmljYXRpb24oKTsKKworICAgIC8vIEFuZCByZWNvbXB1dGUgdGhlIGp1bXAgdGFy
Z2V0IGJhc2VkIG9uIHRoZSBtb2RpZmllZCB1bmxpbmtlZCBpbnN0cnVjdGlvbnMuCisgICAgbV9q
dW1wVGFyZ2V0cy5jbGVhcigpOworICAgIHJlY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyh0aGlz
LCBncmFwaC5pbnN0cnVjdGlvbnMoKS5iZWdpbigpLCBncmFwaC5pbnN0cnVjdGlvbnMoKS5zaXpl
KCksIG1fanVtcFRhcmdldHMpOworfQorCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKaW5kZXggOTFmZGNhNDhjMWUzOWU4YmVm
YjBjNWZkNTVmZDliZDkxYzFmMzcwNy4uODhjZjBjOGYwOWU0NDAzMzQxN2UwNGJhYTMyZGM1MDJk
ZTE4MDIwOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlu
a2VkQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlu
a2VkQ29kZUJsb2NrLmgKQEAgLTQ4LDYgKzQ4LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKK2Ns
YXNzIEJ5dGVjb2RlTW9kaWZpY2F0aW9uU2V0OwogY2xhc3MgRGVidWdnZXI7CiBjbGFzcyBGdW5j
dGlvbk1ldGFkYXRhTm9kZTsKIGNsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZTsKQEAgLTY5LDcgKzcw
LDExIEBAIHR5cGVkZWYgdW5zaWduZWQgVW5saW5rZWRPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTsK
IHR5cGVkZWYgdW5zaWduZWQgVW5saW5rZWRMTEludENhbGxMaW5rSW5mbzsKIAogc3RydWN0IFVu
bGlua2VkU3RyaW5nSnVtcFRhYmxlIHsKLSAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFN0cmlu
Z0ltcGw+LCBpbnQzMl90PiBTdHJpbmdPZmZzZXRUYWJsZTsKKyAgICBzdHJ1Y3QgT2Zmc2V0TG9j
YXRpb24geworICAgICAgICBpbnQzMl90IGJyYW5jaE9mZnNldDsKKyAgICB9OworCisgICAgdHlw
ZWRlZiBIYXNoTWFwPFJlZlB0cjxTdHJpbmdJbXBsPiwgT2Zmc2V0TG9jYXRpb24+IFN0cmluZ09m
ZnNldFRhYmxlOwogICAgIFN0cmluZ09mZnNldFRhYmxlIG9mZnNldFRhYmxlOwogCiAgICAgaW5s
aW5lIGludDMyX3Qgb2Zmc2V0Rm9yVmFsdWUoU3RyaW5nSW1wbCogdmFsdWUsIGludDMyX3QgZGVm
YXVsdE9mZnNldCkKQEAgLTc4LDcgKzgzLDcgQEAgc3RydWN0IFVubGlua2VkU3RyaW5nSnVtcFRh
YmxlIHsKICAgICAgICAgU3RyaW5nT2Zmc2V0VGFibGU6OmNvbnN0X2l0ZXJhdG9yIGxvYyA9IG9m
ZnNldFRhYmxlLmZpbmQodmFsdWUpOwogICAgICAgICBpZiAobG9jID09IGVuZCkKICAgICAgICAg
ICAgIHJldHVybiBkZWZhdWx0T2Zmc2V0OwotICAgICAgICByZXR1cm4gbG9jLT52YWx1ZTsKKyAg
ICAgICAgcmV0dXJuIGxvYy0+dmFsdWUuYnJhbmNoT2Zmc2V0OwogICAgIH0KIAogfTsKQEAgLTEw
Niw2ICsxMTEsOCBAQCBzdHJ1Y3QgVW5saW5rZWRJbnN0cnVjdGlvbiB7CiAgICAgfSB1OwogfTsK
IAorY2xhc3MgQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb247CisKIGNsYXNzIFVubGlua2VkQ29k
ZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBKU0NlbGwgQmFz
ZTsKQEAgLTExNSw2ICsxMjIsOCBAQCBjbGFzcyBVbmxpbmtlZENvZGVCbG9jayA6IHB1YmxpYyBK
U0NlbGwgewogCiAgICAgZW51bSB7IENhbGxGdW5jdGlvbiwgQXBwbHlGdW5jdGlvbiB9OwogCisg
ICAgdHlwZWRlZiBWZWN0b3I8VW5saW5rZWRJbnN0cnVjdGlvbiwgMCwgVW5zYWZlVmVjdG9yT3Zl
cmZsb3c+IFVucGFja2VkSW5zdHJ1Y3Rpb25zOworCiAgICAgYm9vbCBpc0NvbnN0cnVjdG9yKCkg
Y29uc3QgeyByZXR1cm4gbV9pc0NvbnN0cnVjdG9yOyB9CiAgICAgYm9vbCBpc1N0cmljdE1vZGUo
KSBjb25zdCB7IHJldHVybiBtX2lzU3RyaWN0TW9kZTsgfQogICAgIGJvb2wgdXNlc0V2YWwoKSBj
b25zdCB7IHJldHVybiBtX3VzZXNFdmFsOyB9CkBAIC0yMDQsNiArMjEzLDkgQEAgY2xhc3MgVW5s
aW5rZWRDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICB1bnNpZ25lZCBqdW1wVGFyZ2V0
KGludCBpbmRleCkgY29uc3QgeyByZXR1cm4gbV9qdW1wVGFyZ2V0c1tpbmRleF07IH0KICAgICB1
bnNpZ25lZCBsYXN0SnVtcFRhcmdldCgpIGNvbnN0IHsgcmV0dXJuIG1fanVtcFRhcmdldHMubGFz
dCgpOyB9CiAKKyAgICBVbmxpbmtlZEhhbmRsZXJJbmZvKiBoYW5kbGVyRm9yQnl0ZWNvZGVPZmZz
ZXQodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIFJlcXVpcmVkSGFuZGxlciA9IFJlcXVpcmVkSGFu
ZGxlcjo6QW55SGFuZGxlcik7CisgICAgVW5saW5rZWRIYW5kbGVySW5mbyogaGFuZGxlckZvcklu
ZGV4KHVuc2lnbmVkLCBSZXF1aXJlZEhhbmRsZXIgPSBSZXF1aXJlZEhhbmRsZXI6OkFueUhhbmRs
ZXIpOworCiAgICAgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNC
dWlsdGluRnVuY3Rpb247IH0KIAogICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQo
KSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxDb25zdHJ1Y3RvcktpbmQ+KG1fY29uc3RydWN0
b3JLaW5kKTsgfQpAQCAtMzg0LDYgKzM5Niw4IEBAIGNsYXNzIFVubGlua2VkQ29kZUJsb2NrIDog
cHVibGljIEpTQ2VsbCB7CiAgICAgfQogCiBwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBCeXRl
Y29kZU1vZGlmaWNhdGlvblNldDsKKyAgICB2b2lkIGFwcGx5TW9kaWZpY2F0aW9uKEJ5dGVjb2Rl
TW9kaWZpY2F0aW9uU2V0Jik7CiAKICAgICB2b2lkIGNyZWF0ZVJhcmVEYXRhSWZOZWNlc3Nhcnko
KQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WaXJ0
dWFsUmVnaXN0ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WaXJ0dWFsUmVn
aXN0ZXIuaAppbmRleCBkM2RmNDA5NTdiNTE3NTY4ZTNhZWZiZTNhMWE2MDlmZDg3OGJhYWMzLi5k
YWY1MDlmNmM3ZDExNWU0NWJjYjEwN2M2N2QzZDM4ZDgwNGYyODk0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmlydHVhbFJlZ2lzdGVyLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZpcnR1YWxSZWdpc3Rlci5oCkBAIC0yNiw4ICsyNiw4
IEBACiAjaWZuZGVmIFZpcnR1YWxSZWdpc3Rlcl9oCiAjZGVmaW5lIFZpcnR1YWxSZWdpc3Rlcl9o
CiAKKyNpbmNsdWRlICJCeXRlY29kZUNvbnZlbnRpb25zLmgiCiAjaW5jbHVkZSAiQ2FsbEZyYW1l
LmgiCi0KICNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBA
IC0xMDMsNyArMTAzLDcgQEAgY2xhc3MgVmlydHVhbFJlZ2lzdGVyIHsKIAogcHJpdmF0ZToKICAg
ICBzdGF0aWMgY29uc3QgaW50IHNfaW52YWxpZFZpcnR1YWxSZWdpc3RlciA9IDB4M2ZmZmZmZmY7
Ci0gICAgc3RhdGljIGNvbnN0IGludCBzX2ZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4ID0gMHg0
MDAwMDAwMDsKKyAgICBzdGF0aWMgY29uc3QgaW50IHNfZmlyc3RDb25zdGFudFJlZ2lzdGVySW5k
ZXggPSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleDsKIAogICAgIHN0YXRpYyBpbnQgbG9jYWxU
b09wZXJhbmQoaW50IGxvY2FsKSB7IHJldHVybiAtMSAtIGxvY2FsOyB9CiAgICAgc3RhdGljIGlu
dCBvcGVyYW5kVG9Mb2NhbChpbnQgb3BlcmFuZCkgeyByZXR1cm4gLTEgLSBvcGVyYW5kOyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVH
ZW5lcmF0b3IuY3BwCmluZGV4IDBmYzhjZWIzYmQ1NmJiNWViOGM3Y2I3MzNkYTNhMDRhYzYzNjNl
MjYuLjlhMGE0YTc2ZWM2ZGY0YzUwZjlkNjI2ZmE3NWYwYTRkZDMxMTA5ZGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiQnl0ZWNvZGVHZW5lcmF0b3IuaCIK
IAogI2luY2x1ZGUgIkJ1aWx0aW5FeGVjdXRhYmxlcy5oIgorI2luY2x1ZGUgIkJ5dGVjb2RlR2Vu
ZXJhdG9yaWZpY2F0aW9uLmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmgi
CiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCkBAIC0x
NTQsNiArMTU1LDEwIEBAIFBhcnNlckVycm9yIEJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZSgp
CiAgICAgICAgIG1fY29kZUJsb2NrLT5hZGRFeGNlcHRpb25IYW5kbGVyKGluZm8pOwogICAgIH0K
ICAgICAKKworICAgIGlmIChtX2NvZGVCbG9jay0+cGFyc2VNb2RlKCkgPT0gU291cmNlUGFyc2VN
b2RlOjpHZW5lcmF0b3JCb2R5TW9kZSkKKyAgICAgICAgcGVyZm9ybUdlbmVyYXRvcmlmaWNhdGlv
bihtX2NvZGVCbG9jay5nZXQoKSwgbV9pbnN0cnVjdGlvbnMsIG1fZ2VuZXJhdG9yRnJhbWVTeW1i
b2xUYWJsZS5nZXQoKSwgbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlSW5kZXgpOworCiAgICAg
bV9jb2RlQmxvY2stPnNldEluc3RydWN0aW9ucyhzdGQ6Om1ha2VfdW5pcXVlPFVubGlua2VkSW5z
dHJ1Y3Rpb25TdHJlYW0+KG1faW5zdHJ1Y3Rpb25zKSk7CiAKICAgICBtX2NvZGVCbG9jay0+c2hy
aW5rVG9GaXQoKTsKQEAgLTI2MSwxMCArMjY2LDE0IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRl
Y29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtl
CiAgICAgYm9vbCBzaG91bGRDYXB0dXJlQWxsT2ZUaGVUaGluZ3MgPSBtX3Nob3VsZEVtaXREZWJ1
Z0hvb2tzIHx8IGNvZGVCbG9jay0+dXNlc0V2YWwoKTsKICAgICBib29sIG5lZWRzQXJndW1lbnRz
ID0gKGZ1bmN0aW9uTm9kZS0+dXNlc0FyZ3VtZW50cygpIHx8IGNvZGVCbG9jay0+dXNlc0V2YWwo
KSB8fCAoZnVuY3Rpb25Ob2RlLT51c2VzQXJyb3dGdW5jdGlvbigpICYmICFjb2RlQmxvY2stPmlz
QXJyb3dGdW5jdGlvbigpICYmIGlzQXJndW1lbnRzVXNlZEluSW5uZXJBcnJvd0Z1bmN0aW9uKCkp
KTsKIAotICAgIC8vIEdlbmVyYXRvciBuZXZlciBwcm92aWRlcyAiYXJndW1lbnRzIi4gImFyZ3Vt
ZW50cyIgcmVmZXJlbmNlIHdpbGwgYmUgcmVzb2x2ZWQgaW4gYW4gdXBwZXIgZ2VuZXJhdG9yIGZ1
bmN0aW9uIHNjb3BlLgotICAgIGlmIChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5l
cmF0b3JCb2R5TW9kZSkKKyAgICBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2Vu
ZXJhdG9yQm9keU1vZGUpIHsKKyAgICAgICAgLy8gR2VuZXJhdG9yIG5ldmVyIHByb3ZpZGVzICJh
cmd1bWVudHMiLiAiYXJndW1lbnRzIiByZWZlcmVuY2Ugd2lsbCBiZSByZXNvbHZlZCBpbiBhbiB1
cHBlciBnZW5lcmF0b3IgZnVuY3Rpb24gc2NvcGUuCiAgICAgICAgIG5lZWRzQXJndW1lbnRzID0g
ZmFsc2U7CiAKKyAgICAgICAgLy8gR2VuZXJhdG9yIHVzZXMgdGhlIHZhciBzY29wZSB0byBzYXZl
IGFuZCByZXN1bWUgaXRzIHZhcmlhYmxlcy4gU28gdGhlIGxleGljYWwgc2NvcGUgaXMgYWx3YXlz
IGluc3RhbnRpYXRlZC4KKyAgICAgICAgc2hvdWxkQ2FwdHVyZVNvbWVPZlRoZVRoaW5ncyA9IHRy
dWU7CisgICAgfQorCiAgICAgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVy
YXRvcldyYXBwZXJGdW5jdGlvbk1vZGUgJiYgbmVlZHNBcmd1bWVudHMpIHsKICAgICAgICAgLy8g
R2VuZXJhdG9yIGRvZXMgbm90IHByb3ZpZGUgImFyZ3VtZW50cyIuIEluc3RlYWQsIHdyYXBwaW5n
IEdlbmVyYXRvckZ1bmN0aW9uIHByb3ZpZGVzICJhcmd1bWVudHMiLgogICAgICAgICAvLyBUaGlz
IGlzIGJlY2F1c2UgYXJndW1lbnRzIG9mIGEgZ2VuZXJhdG9yIHNob3VsZCBiZSBldmFsdWF0ZWQg
YmVmb3JlIHN0YXJ0aW5nIGl0LgpAQCAtMjczLDcgKzI4Miw3IEBAIEJ5dGVjb2RlR2VuZXJhdG9y
OjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBV
bmxpbmtlCiAgICAgICAgIC8vICAgIGZ1bmN0aW9uICpnZW4oYSwgYiA9IGhlbGxvKCkpCiAgICAg
ICAgIC8vICAgIHsKICAgICAgICAgLy8gICAgICAgIHJldHVybiB7Ci0gICAgICAgIC8vICAgICAg
ICAgICAgQGdlbmVyYXRvck5leHQ6IGZ1bmN0aW9uIChAZ2VuZXJhdG9yLCBAZ2VuZXJhdG9yU3Rh
dGUsIEBnZW5lcmF0b3JWYWx1ZSwgQGdlbmVyYXRvclJlc3VtZU1vZGUpCisgICAgICAgIC8vICAg
ICAgICAgICAgQGdlbmVyYXRvck5leHQ6IGZ1bmN0aW9uIChAZ2VuZXJhdG9yLCBAZ2VuZXJhdG9y
U3RhdGUsIEBnZW5lcmF0b3JWYWx1ZSwgQGdlbmVyYXRvclJlc3VtZU1vZGUsIEBnZW5lcmF0b3JG
cmFtZSkKICAgICAgICAgLy8gICAgICAgICAgICB7CiAgICAgICAgIC8vICAgICAgICAgICAgICAg
IGFyZ3VtZW50czsgIC8vIFRoaXMgYGFyZ3VtZW50c2Agc2hvdWxkIHJlZmVyZW5jZSB0byB0aGUg
Z2VuJ3MgYXJndW1lbnRzLgogICAgICAgICAvLyAgICAgICAgICAgICAgICAuLi4KQEAgLTMwMiwx
NiArMzExLDE0IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0s
IEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtlCiAgICAgICAgIHJldHVybiBjYXB0
dXJlcyh1aWQpID8gVmFyS2luZDo6U2NvcGUgOiBWYXJLaW5kOjpTdGFjazsKICAgICB9OwogCi0g
ICAgZW1pdEVudGVyKCk7Ci0KLSAgICBhbGxvY2F0ZUFuZEVtaXRTY29wZSgpOwotCiAgICAgbV9j
YWxsZWVSZWdpc3Rlci5zZXRJbmRleChDYWxsRnJhbWVTbG90OjpjYWxsZWUpOwogCiAgICAgaW5p
dGlhbGl6ZVBhcmFtZXRlcnMocGFyYW1ldGVycyk7CiAgICAgQVNTRVJUKCEoaXNTaW1wbGVQYXJh
bWV0ZXJMaXN0ICYmIG1fcmVzdFBhcmFtZXRlcikpOwogCi0gICAgLy8gQmVmb3JlIGVtaXR0aW5n
IGEgc2NvcGUgY3JlYXRpb24sIGVtaXQgYSBnZW5lcmF0b3IgcHJvbG9ndWUgdGhhdCBjb250YWlu
cyBqdW1wIGJhc2VkIG9uIGEgZ2VuZXJhdG9yJ3Mgc3RhdGUuCisgICAgZW1pdEVudGVyKCk7CisK
KyAgICAvLyBCZWZvcmUgZW1pdHRpbmcgYW55IG9mIHRoZSBhY3R1YWwgY29kZSBleGNlcHQgZm9y
IG9wX2VudGVyLCBlbWl0IGEgZ2VuZXJhdG9yIHByb2xvZ3VlIHRoYXQgY29udGFpbnMganVtcCBi
YXNlZCBvbiBhIGdlbmVyYXRvcidzIHN0YXRlLgogICAgIGlmIChwYXJzZU1vZGUgPT0gU291cmNl
UGFyc2VNb2RlOjpHZW5lcmF0b3JCb2R5TW9kZSkgewogICAgICAgICBtX2dlbmVyYXRvclJlZ2lz
dGVyID0gJm1fcGFyYW1ldGVyc1sxXTsKIApAQCAtMzI1LDYgKzMzMiw4IEBAIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25O
b2RlLCBVbmxpbmtlCiAgICAgICAgIGVtaXRHZW5lcmF0b3JTdGF0ZUxhYmVsKCk7CiAgICAgfQog
CisgICAgYWxsb2NhdGVBbmRFbWl0U2NvcGUoKTsKKwogICAgIGlmIChmdW5jdGlvbk5hbWVJc0lu
U2NvcGUoZnVuY3Rpb25Ob2RlLT5pZGVudCgpLCBmdW5jdGlvbk5vZGUtPmZ1bmN0aW9uTW9kZSgp
KSkgewogICAgICAgICBBU1NFUlQocGFyc2VNb2RlICE9IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJh
dG9yQm9keU1vZGUpOwogICAgICAgICBib29sIGlzRHluYW1pY1Njb3BlID0gZnVuY3Rpb25OYW1l
U2NvcGVJc0R5bmFtaWMoY29kZUJsb2NrLT51c2VzRXZhbCgpLCBjb2RlQmxvY2stPmlzU3RyaWN0
TW9kZSgpKTsKQEAgLTYzMSw2ICs2NDAsMTYgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2Rl
R2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25Ob2RlKiBmdW5jdGlvbk5vZGUsIFVubGlua2UKICAg
ICAgICAgICAgIGVtaXRMb2FkTmV3VGFyZ2V0RnJvbUFycm93RnVuY3Rpb25MZXhpY2FsRW52aXJv
bm1lbnQoKTsKICAgICB9CiAgICAgCisgICAgLy8gU2V0IHVwIHRoZSBsZXhpY2FsIGVudmlyb25t
ZW50IHNjb3BlIGFzIHRoZSBnZW5lcmF0b3IgZnJhbWUuIFdlIHN0b3JlIHRoZSBzYXZlZCBhbmQg
cmVzdW1lZCBnZW5lcmF0b3IgcmVnaXN0ZXJzIGludG8gdGhpcyBzY29wZSB3aXRoIHRoZSBzeW1i
b2wga2V5cy4KKyAgICAvLyBTaW5jZSB0aGV5IGFyZSBzeW1ib2wga2V5ZWQsIHRoZXNlIHZhcmlh
YmxlcyBjYW5ub3QgYmUgcmVhY2hlZCBmcm9tIHRoZSB1c3VhbCBjb2RlLgorICAgIGlmIChTb3Vy
Y2VQYXJzZU1vZGU6OkdlbmVyYXRvckJvZHlNb2RlID09IHBhcnNlTW9kZSkgeworICAgICAgICBB
U1NFUlQobV9sZXhpY2FsRW52aXJvbm1lbnRSZWdpc3Rlcik7CisgICAgICAgIG1fZ2VuZXJhdG9y
RnJhbWVTeW1ib2xUYWJsZS5zZXQoKm1fdm0sIGZ1bmN0aW9uU3ltYm9sVGFibGUpOworICAgICAg
ICBtX2dlbmVyYXRvckZyYW1lU3ltYm9sVGFibGVJbmRleCA9IHN5bWJvbFRhYmxlQ29uc3RhbnRJ
bmRleDsKKyAgICAgICAgZW1pdE1vdmUoZ2VuZXJhdG9yRnJhbWVSZWdpc3RlcigpLCBtX2xleGlj
YWxFbnZpcm9ubWVudFJlZ2lzdGVyKTsKKyAgICAgICAgZW1pdFB1dEJ5SWQoZ2VuZXJhdG9yUmVn
aXN0ZXIoKSwgcHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvckZyYW1lUHJp
dmF0ZU5hbWUoKSwgZ2VuZXJhdG9yRnJhbWVSZWdpc3RlcigpKTsKKyAgICB9CisKICAgICBib29s
IHNob3VsZEluaXRpYWxpemVCbG9ja1Njb3BlZEZ1bmN0aW9ucyA9IGZhbHNlOyAvLyBXZSBnZW5l
cmF0ZSB0b3AtbGV2ZWwgZnVuY3Rpb24gZGVjbGFyYXRpb25zIGluIDo6Z2VuZXJhdGUoKS4KICAg
ICBwdXNoTGV4aWNhbFNjb3BlKG1fc2NvcGVOb2RlLCBURFpDaGVja09wdGltaXphdGlvbjo6T3B0
aW1pemUsIE5lc3RlZFNjb3BlVHlwZTo6SXNOb3ROZXN0ZWQsIG51bGxwdHIsIHNob3VsZEluaXRp
YWxpemVCbG9ja1Njb3BlZEZ1bmN0aW9ucyk7CiB9CkBAIC0zNjYyLDggKzM2ODEsNyBAQCB2b2lk
IEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q29tcGxleFBvcFNjb3BlcyhSZWdpc3RlcklEKiBzY29w
ZSwgQ29udHJvbEZsb3dDb250ZQogICAgICAgICAgICAgaWYgKGZsaXBUcmllcykgewogICAgICAg
ICAgICAgICAgIHdoaWxlIChtX3RyeUNvbnRleHRTdGFjay5zaXplKCkgIT0gZmluYWxseUNvbnRl
eHQudHJ5Q29udGV4dFN0YWNrU2l6ZSkgewogICAgICAgICAgICAgICAgICAgICBBU1NFUlQobV90
cnlDb250ZXh0U3RhY2suc2l6ZSgpID4gZmluYWxseUNvbnRleHQudHJ5Q29udGV4dFN0YWNrU2l6
ZSk7Ci0gICAgICAgICAgICAgICAgICAgIFRyeUNvbnRleHQgY29udGV4dCA9IG1fdHJ5Q29udGV4
dFN0YWNrLmxhc3QoKTsKLSAgICAgICAgICAgICAgICAgICAgbV90cnlDb250ZXh0U3RhY2sucmVt
b3ZlTGFzdCgpOworICAgICAgICAgICAgICAgICAgICBUcnlDb250ZXh0IGNvbnRleHQgPSBtX3Ry
eUNvbnRleHRTdGFjay50YWtlTGFzdCgpOwogICAgICAgICAgICAgICAgICAgICBUcnlSYW5nZSBy
YW5nZTsKICAgICAgICAgICAgICAgICAgICAgcmFuZ2Uuc3RhcnQgPSBjb250ZXh0LnN0YXJ0Owog
ICAgICAgICAgICAgICAgICAgICByYW5nZS5lbmQgPSBiZWZvcmVGaW5hbGx5OwpAQCAtMzk0Nyw3
ICszOTY1LDcgQEAgc3RhdGljIHZvaWQgcHJlcGFyZUp1bXBUYWJsZUZvclN0cmluZ1N3aXRjaChV
bmxpbmtlZFN0cmluZ0p1bXBUYWJsZSYganVtcFRhYmxlLAogICAgICAgICAKICAgICAgICAgQVNT
RVJUKG5vZGVzW2ldLT5pc1N0cmluZygpKTsKICAgICAgICAgU3RyaW5nSW1wbCogY2xhdXNlID0g
c3RhdGljX2Nhc3Q8U3RyaW5nTm9kZSo+KG5vZGVzW2ldKS0+dmFsdWUoKS5pbXBsKCk7Ci0gICAg
ICAgIGp1bXBUYWJsZS5vZmZzZXRUYWJsZS5hZGQoY2xhdXNlLCBsYWJlbHNbaV0tPmJpbmQoc3dp
dGNoQWRkcmVzcywgc3dpdGNoQWRkcmVzcyArIDMpKTsKKyAgICAgICAganVtcFRhYmxlLm9mZnNl
dFRhYmxlLmFkZChjbGF1c2UsIFVubGlua2VkU3RyaW5nSnVtcFRhYmxlOjpPZmZzZXRMb2NhdGlv
biB7IGxhYmVsc1tpXS0+YmluZChzd2l0Y2hBZGRyZXNzLCBzd2l0Y2hBZGRyZXNzICsgMykgfSk7
CiAgICAgfQogfQogCkBAIC00NDU1LDE2ICs0NDczLDM2IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXRZaWVsZFBvaW50KFJlZ2lzdGVySUQqIGFyZ3VtZW50KQogICAgIGVtaXRHZW5lcmF0
b3JTdGF0ZUNoYW5nZSh5aWVsZFBvaW50SW5kZXgpOwogICAgIC8vIEZpcnN0IHlpZWxkIHBvaW50
IGlzIHVzZWQgZm9yIGluaXRpYWwgc2VxdWVuY2UuCiAgICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxv
Y2Fsc0luZGV4ID0geWllbGRQb2ludEluZGV4IC0gMTsKKworICAgIC8vIFNwbGl0IHRoZSB0cnkg
cmFuZ2UgaGVyZS4KKyAgICBSZWZQdHI8TGFiZWw+IHNhdmVQb2ludCA9IGVtaXRMYWJlbChuZXdM
YWJlbCgpLmdldCgpKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX3RyeUNvbnRleHRTdGFjay5z
aXplKCk7IGktLTspIHsKKyAgICAgICAgVHJ5Q29udGV4dCYgY29udGV4dCA9IG1fdHJ5Q29udGV4
dFN0YWNrW2ldOworICAgICAgICBUcnlSYW5nZSByYW5nZTsKKyAgICAgICAgcmFuZ2Uuc3RhcnQg
PSBjb250ZXh0LnN0YXJ0OworICAgICAgICByYW5nZS5lbmQgPSBzYXZlUG9pbnQ7CisgICAgICAg
IHJhbmdlLnRyeURhdGEgPSBjb250ZXh0LnRyeURhdGE7CisgICAgICAgIG1fdHJ5UmFuZ2VzLmFw
cGVuZChyYW5nZSk7CisKKyAgICAgICAgLy8gVHJ5IHJhbmdlIHdpbGwgYmUgcmVzdGFyZWQgYXQg
dGhlIG1lcmdlIHBvaW50LgorICAgICAgICBjb250ZXh0LnN0YXJ0ID0gbWVyZ2VQb2ludDsKKyAg
ICB9CisgICAgVmVjdG9yPFRyeUNvbnRleHQ+IHNhdmVkVHJ5Q29udGV4dFN0YWNrOworICAgIG1f
dHJ5Q29udGV4dFN0YWNrLnN3YXAoc2F2ZWRUcnlDb250ZXh0U3RhY2spOworCiAgICAgZW1pdFNh
dmUobWVyZ2VQb2ludC5nZXQoKSwgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4KTsKICAgICBlbWl0UmV0
dXJuKGFyZ3VtZW50KTsKICAgICBlbWl0UmVzdW1lKG1lcmdlUG9pbnQuZ2V0KCksIGxpdmVDYWxs
ZWVMb2NhbHNJbmRleCk7CisKKyAgICAvLyBSZXN0b3JlIHRoZSB0cnkgY29udGV4dHMsIHdoaWNo
IHN0YXJ0IG9mZnNldCBpcyB1cGRhdGVkIHRvIHRoZSBtZXJnZSBwb2ludC4KKyAgICBtX3RyeUNv
bnRleHRTdGFjay5zd2FwKHNhdmVkVHJ5Q29udGV4dFN0YWNrKTsKIH0KIAogdm9pZCBCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdFNhdmUoTGFiZWwqIG1lcmdlUG9pbnQsIHVuc2lnbmVkIGxpdmVDYWxs
ZWVMb2NhbHNJbmRleCkKIHsKICAgICBzaXplX3QgYmVnaW4gPSBpbnN0cnVjdGlvbnMoKS5zaXpl
KCk7CiAgICAgZW1pdE9wY29kZShvcF9zYXZlKTsKLSAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQo
bV9nZW5lcmF0b3JSZWdpc3Rlci0+aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5k
KGdlbmVyYXRvckZyYW1lUmVnaXN0ZXIoKS0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCku
YXBwZW5kKGxpdmVDYWxsZWVMb2NhbHNJbmRleCk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5k
KG1lcmdlUG9pbnQtPmJpbmQoYmVnaW4sIGluc3RydWN0aW9ucygpLnNpemUoKSkpOwogfQpAQCAt
NDQ3Myw3ICs0NTExLDcgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlc3VtZShMYWJl
bCogbWVyZ2VQb2ludCwgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0kKIHsKICAgICBlbWl0R2Vu
ZXJhdG9yU3RhdGVMYWJlbCgpOwogICAgIGVtaXRPcGNvZGUob3BfcmVzdW1lKTsKLSAgICBpbnN0
cnVjdGlvbnMoKS5hcHBlbmQobV9nZW5lcmF0b3JSZWdpc3Rlci0+aW5kZXgoKSk7CisgICAgaW5z
dHJ1Y3Rpb25zKCkuYXBwZW5kKGdlbmVyYXRvckZyYW1lUmVnaXN0ZXIoKS0+aW5kZXgoKSk7CiAg
ICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGxpdmVDYWxsZWVMb2NhbHNJbmRleCk7CiAgICAgZW1p
dExhYmVsKG1lcmdlUG9pbnQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmluZGV4IDVmYWYwNGYyZjNkYmExOGFk
YjA3ODllMzIzZTlkYWFlNjFhYjExNmIuLmVjMmEwZTZiMDY2Y2FhZGFjZjJiN2IwN2ZhYWY2NTVi
ZmM0NTFiMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTcwNSw2ICs3MDUsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9yU3RhdGVSZWdpc3RlcigpIHsgcmV0dXJu
ICZtX3BhcmFtZXRlcnNbMl07IH0KICAgICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9yVmFsdWVS
ZWdpc3RlcigpIHsgcmV0dXJuICZtX3BhcmFtZXRlcnNbM107IH0KICAgICAgICAgUmVnaXN0ZXJJ
RCogZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKCkgeyByZXR1cm4gJm1fcGFyYW1ldGVyc1s0
XTsgfQorICAgICAgICBSZWdpc3RlcklEKiBnZW5lcmF0b3JGcmFtZVJlZ2lzdGVyKCkgeyByZXR1
cm4gJm1fcGFyYW1ldGVyc1s1XTsgfQogCiAgICAgICAgIENvZGVUeXBlIGNvZGVUeXBlKCkgY29u
c3QgeyByZXR1cm4gbV9jb2RlVHlwZTsgfQogCkBAIC05MzIsNiArOTMzLDEwIEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICBWZWN0b3I8UmVmUHRyPEZvckluQ29udGV4dD4+IG1fZm9ySW5Db250
ZXh0U3RhY2s7CiAgICAgICAgIFZlY3RvcjxUcnlDb250ZXh0PiBtX3RyeUNvbnRleHRTdGFjazsK
ICAgICAgICAgVmVjdG9yPFJlZlB0cjxMYWJlbD4+IG1fZ2VuZXJhdG9yUmVzdW1lTGFiZWxzOwor
CisgICAgICAgIFN0cm9uZzxTeW1ib2xUYWJsZT4gbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxl
OworICAgICAgICBpbnQgbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlSW5kZXggeyAwIH07CisK
ICAgICAgICAgZW51bSBGdW5jdGlvblZhcmlhYmxlVHlwZSA6IHVpbnQ4X3QgeyBOb3JtYWxGdW5j
dGlvblZhcmlhYmxlLCBHbG9iYWxGdW5jdGlvblZhcmlhYmxlIH07CiAgICAgICAgIFZlY3Rvcjxz
dGQ6OnBhaXI8RnVuY3Rpb25NZXRhZGF0YU5vZGUqLCBGdW5jdGlvblZhcmlhYmxlVHlwZT4+IG1f
ZnVuY3Rpb25zVG9Jbml0aWFsaXplOwogICAgICAgICBib29sIG1fbmVlZFRvSW5pdGlhbGl6ZUFy
Z3VtZW50cyB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRp
b25zLmNwcAppbmRleCA2OWExNmViNWRhNDM1NWJjNzkyNWM1ZGZkY2IwNjIwMjNlOTk2NTAyLi5j
NDU3MjNiMTkwMTMyMDI1ZGZjZTMyNmY2MDE1ZWNhNmNlNThkNzFhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKQEAgLTQyLDggKzQyLDggQEAKICNpbmNs
dWRlICJEaXJlY3RBcmd1bWVudHMuaCIKICNpbmNsdWRlICJGVExGb3JPU1JFbnRyeUpJVENvZGUu
aCIKICNpbmNsdWRlICJGVExPU1JFbnRyeS5oIgotI2luY2x1ZGUgIkhvc3RDYWxsUmV0dXJuVmFs
dWUuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKKyNpbmNsdWRlICJIb3N0Q2FsbFJldHVy
blZhbHVlLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKSVQuaCIKICNp
bmNsdWRlICJKSVRFeGNlcHRpb25zLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZ2VuZXJhdGUtYnl0ZWNvZGUtZmlsZXMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJh
dGUtYnl0ZWNvZGUtZmlsZXMKaW5kZXggNTY2NmEzZjkyNGMxMTliMjE2ZDNmZjBmZmU5YzY3MmI3
YzcxYmI3OS4uZmFjZmRmMTMzMTQ4NzA3YTMzMzUzNTc2MmJlNzgzMDRjNGI1MGIxZiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRlLWJ5dGVjb2RlLWZpbGVzCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0ZS1ieXRlY29kZS1maWxlcwpAQCAtMTg3LDYg
KzE4Nyw3IEBAIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgICAgICAgICAgICAgZGVm
YXVsdExlbmd0aCA9IHNlY3Rpb25bImRlZmF1bHRMZW5ndGgiXQogCiAgICAgICAgICAgICBieXRl
Y29kZU51bSA9IDAKKyAgICAgICAgICAgIG1heExlbmd0aCA9IDAKICAgICAgICAgICAgIGZvciBi
eXRlY29kZSBpbiBzZWN0aW9uWyJieXRlY29kZXMiXToKICAgICAgICAgICAgICAgICBpZiBub3Qg
Zmlyc3RNYWNybzoKICAgICAgICAgICAgICAgICAgICAgYnl0ZWNvZGVIRmlsZS53cml0ZSgiIFxc
XG4iKQpAQCAtMTk0LDYgKzE5NSw3IEBAIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAg
ICAgICAgICAgICAgbGVuZ3RoID0gZGVmYXVsdExlbmd0aAogICAgICAgICAgICAgICAgIGlmICJs
ZW5ndGgiIGluIGJ5dGVjb2RlOgogICAgICAgICAgICAgICAgICAgICBsZW5ndGggPSBieXRlY29k
ZVsibGVuZ3RoIl0KKyAgICAgICAgICAgICAgICAgICAgbWF4TGVuZ3RoID0gbWF4KFtsZW5ndGgs
IG1heExlbmd0aF0pCiAKICAgICAgICAgICAgICAgICBieXRlY29kZUhGaWxlLndyaXRlKCIgICAg
bWFjcm8oezB9LCB7MX0pIi5mb3JtYXQoYnl0ZWNvZGVbIm5hbWUiXSwgbGVuZ3RoKSkKICAgICAg
ICAgICAgICAgICBmaXJzdE1hY3JvID0gRmFsc2UKQEAgLTIwMSw2ICsyMDMsNyBAQCBpZiBfX25h
bWVfXyA9PSAiX19tYWluX18iOgogCiAgICAgICAgICAgICBieXRlY29kZUhGaWxlLndyaXRlKCJc
blxuIikKICAgICAgICAgICAgIGJ5dGVjb2RlSEZpbGUud3JpdGUoIiNkZWZpbmUgTlVNQkVSX09G
X3swfV9JRFMgezF9XG5cbiIuZm9ybWF0KHNlY3Rpb25bIm1hY3JvTmFtZUNvbXBvbmVudCJdLCBi
eXRlY29kZU51bSkpCisgICAgICAgICAgICBieXRlY29kZUhGaWxlLndyaXRlKCIjZGVmaW5lIE1B
WF9PUENPREVfTEVOR1RIX09GX3swfSB7MX1cblxuIi5mb3JtYXQoc2VjdGlvblsibWFjcm9OYW1l
Q29tcG9uZW50Il0sIG1heExlbmd0aCkpCiAKICAgICAgICAgaWYgaW5pdEFTTUZpbGVOYW1lIGFu
ZCBzZWN0aW9uWydlbWl0SW5BU01GaWxlJ106CiAgICAgICAgICAgICBwcmVmaXggPSAiIgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKaW5k
ZXggMmI0YzdjOWIzZWIzNmQ2MzA2ZWE4NDRlODUzNzZmZmE3ZmQwZjFmNy4uZmUzNjhmMzkxY2My
N2MxYTA1YjhiZDkwZmY5MWFjMTYyMWI2MjQ3MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCkBAIC02MDgsNyArNjA4LDcgQEAgSlNT
dHJpbmcqIEludGVycHJldGVyOjpzdGFja1RyYWNlQXNTdHJpbmcoVk0mIHZtLCBjb25zdCBWZWN0
b3I8U3RhY2tGcmFtZT4mIHN0YWMKICAgICByZXR1cm4ganNTdHJpbmcoJnZtLCBidWlsZGVyLnRv
U3RyaW5nKCkpOwogfQogCi1BTFdBWVNfSU5MSU5FIHN0YXRpYyBIYW5kbGVySW5mbyogZmluZEV4
Y2VwdGlvbkhhbmRsZXIoU3RhY2tWaXNpdG9yJiB2aXNpdG9yLCBDb2RlQmxvY2sqIGNvZGVCbG9j
aywgQ29kZUJsb2NrOjpSZXF1aXJlZEhhbmRsZXIgcmVxdWlyZWRIYW5kbGVyKQorQUxXQVlTX0lO
TElORSBzdGF0aWMgSGFuZGxlckluZm8qIGZpbmRFeGNlcHRpb25IYW5kbGVyKFN0YWNrVmlzaXRv
ciYgdmlzaXRvciwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFJlcXVpcmVkSGFuZGxlciByZXF1aXJl
ZEhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKGNvZGVCbG9jayk7CiAjaWYgRU5BQkxFKERGR19KSVQp
CkBAIC02NDIsNyArNjQyLDcgQEAgY2xhc3MgR2V0Q2F0Y2hIYW5kbGVyRnVuY3RvciB7CiAgICAg
ICAgIGlmICghY29kZUJsb2NrKQogICAgICAgICAgICAgcmV0dXJuIFN0YWNrVmlzaXRvcjo6Q29u
dGludWU7CiAKLSAgICAgICAgbV9oYW5kbGVyID0gZmluZEV4Y2VwdGlvbkhhbmRsZXIodmlzaXRv
ciwgY29kZUJsb2NrLCBDb2RlQmxvY2s6OlJlcXVpcmVkSGFuZGxlcjo6Q2F0Y2hIYW5kbGVyKTsK
KyAgICAgICAgbV9oYW5kbGVyID0gZmluZEV4Y2VwdGlvbkhhbmRsZXIodmlzaXRvciwgY29kZUJs
b2NrLCBSZXF1aXJlZEhhbmRsZXI6OkNhdGNoSGFuZGxlcik7CiAgICAgICAgIGlmIChtX2hhbmRs
ZXIpCiAgICAgICAgICAgICByZXR1cm4gU3RhY2tWaXNpdG9yOjpEb25lOwogCkBAIC02ODQsNyAr
Njg0LDcgQEAgY2xhc3MgVW53aW5kRnVuY3RvciB7CiAgICAgICAgIG1faGFuZGxlciA9IG51bGxw
dHI7CiAgICAgICAgIGlmICghbV9pc1Rlcm1pbmF0aW9uKSB7CiAgICAgICAgICAgICBpZiAobV9j
b2RlQmxvY2sgJiYgIWlzV2ViQXNzZW1ibHlFeGVjdXRhYmxlKG1fY29kZUJsb2NrLT5vd25lckV4
ZWN1dGFibGUoKSkpCi0gICAgICAgICAgICAgICAgbV9oYW5kbGVyID0gZmluZEV4Y2VwdGlvbkhh
bmRsZXIodmlzaXRvciwgbV9jb2RlQmxvY2ssIENvZGVCbG9jazo6UmVxdWlyZWRIYW5kbGVyOjpB
bnlIYW5kbGVyKTsKKyAgICAgICAgICAgICAgICBtX2hhbmRsZXIgPSBmaW5kRXhjZXB0aW9uSGFu
ZGxlcih2aXNpdG9yLCBtX2NvZGVCbG9jaywgUmVxdWlyZWRIYW5kbGVyOjpBbnlIYW5kbGVyKTsK
ICAgICAgICAgfQogCiAgICAgICAgIGlmIChtX2hhbmRsZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCmluZGV4IGQyMDk0ZGVlN2QyODVhYzQ5
NWIxNTQxNzJhMjNiOTRmZmU4NTdmMWUuLjA3MzJiM2ViYmQ5YWRmZDIyMzM2MmVjOWE2YmFhYWZk
ODYxZjUyNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9J
bnRlcnByZXRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRl
cnByZXRlci5oCkBAIC02Niw2ICs2Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHN0cnVjdCBI
YW5kbGVySW5mbzsKICAgICBzdHJ1Y3QgSW5zdHJ1Y3Rpb247CiAgICAgc3RydWN0IFByb3RvQ2Fs
bEZyYW1lOworICAgIHN0cnVjdCBVbmxpbmtlZEluc3RydWN0aW9uOwogCiAgICAgZW51bSBVbndp
bmRTdGFydCB7IFVud2luZEZyb21DdXJyZW50RnJhbWUsIFVud2luZEZyb21DYWxsZXJGcmFtZSB9
OwogCkBAIC0yMDgsNyArMjA5LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0
dXJuIG9wY29kZTsKICNlbmRpZgogICAgICAgICB9Ci0gICAgICAgIAorCisgICAgICAgIE9wY29k
ZUlEIGdldE9wY29kZUlEKGNvbnN0IEluc3RydWN0aW9uJik7CisgICAgICAgIE9wY29kZUlEIGdl
dE9wY29kZUlEKGNvbnN0IFVubGlua2VkSW5zdHJ1Y3Rpb24mKTsKKwogICAgICAgICBib29sIGlz
T3Bjb2RlKE9wY29kZSk7CiAKICAgICAgICAgSlNWYWx1ZSBleGVjdXRlKFByb2dyYW1FeGVjdXRh
YmxlKiwgQ2FsbEZyYW1lKiwgSlNPYmplY3QqIHRoaXNPYmopOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVySW5saW5lcy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVySW5saW5lcy5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjg2ZDA3MTQ4YTUyZTY1ZTM3NWY5N2U2ZWJiOTFhZGJlMWRkNDU2MGQKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXJJbmxp
bmVzLmgKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBZdXN1a2Ug
U3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSW5zdHJ1Y3Rpb24u
aCIKKyNpbmNsdWRlICJJbnRlcnByZXRlci5oIgorI2luY2x1ZGUgIlVubGlua2VkQ29kZUJsb2Nr
LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitpbmxpbmUgT3Bjb2RlSUQgSW50ZXJwcmV0ZXI6Omdl
dE9wY29kZUlEKGNvbnN0IEluc3RydWN0aW9uJiBpbnN0cnVjdGlvbikKK3sKKyAgICByZXR1cm4g
Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb24udS5vcGNvZGUpOworfQorCitpbmxpbmUgT3Bjb2RlSUQg
SW50ZXJwcmV0ZXI6OmdldE9wY29kZUlEKGNvbnN0IFVubGlua2VkSW5zdHJ1Y3Rpb24mIGluc3Ry
dWN0aW9uKQoreworICAgIHJldHVybiBpbnN0cnVjdGlvbi51Lm9wY29kZTsKK30KKworfSAvLyBu
YW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKaW5kZXggZjI3ZDM5YTZlYThk
OTQzYjRiZTg2MmNkZDBjZGI3ZWFlZDVhMTM0Ny4uNjk5MTQyNDJlNjY0MzBmZThhZTFmYjc3YjU4
OWY2OWY4N2MwN2M1MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcApAQCAtMjM1LDggKzIz
NSw2IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgREVGSU5F
X09QKG9wX2dldF9yZXN0X2xlbmd0aCkKICAgICAgICAgREVGSU5FX09QKG9wX2NoZWNrX3RkeikK
ICAgICAgICAgREVGSU5FX09QKG9wX2Fzc2VydCkKLSAgICAgICAgREVGSU5FX09QKG9wX3NhdmUp
Ci0gICAgICAgIERFRklORV9PUChvcF9yZXN1bWUpCiAgICAgICAgIERFRklORV9PUChvcF9kZWJ1
ZykKICAgICAgICAgREVGSU5FX09QKG9wX2RlbF9ieV9pZCkKICAgICAgICAgREVGSU5FX09QKG9w
X2RlbF9ieV92YWwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAppbmRleCA3MzExZGZhMTZiOWE0ZDhm
OWMxNzVjZWRlZDczNzU5ZTJiMmNiMTNjLi4xMzAyN2NlZGY0ZDA2YzM3YWYzYzMyYjk0M2YxYjRh
YjVjY2I3MGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKQEAgLTUwMSw4ICs1MDEsNiBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0X29wX2dldF9yZXN0X2xlbmd0aChJbnN0
cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfY2hlY2tfdGR6KEluc3RydWN0aW9uKik7
CiAgICAgICAgIHZvaWQgZW1pdF9vcF9hc3NlcnQoSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9p
ZCBlbWl0X29wX3NhdmUoSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX3Jlc3Vt
ZShJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZGVidWcoSW5zdHJ1Y3Rpb24q
KTsKICAgICAgICAgdm9pZCBlbWl0X29wX2RlbF9ieV9pZChJbnN0cnVjdGlvbiopOwogICAgICAg
ICB2b2lkIGVtaXRfb3BfZGVsX2J5X3ZhbChJbnN0cnVjdGlvbiopOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKaW5kZXggZDk5ZDQxNWEzM2I3NTJkY2MzZmFiMTViOTRi
OTY0YTExMTFjZTgzMS4uMDEyMzIwYTBhNmYwMzA3MzczNTMwMzE1YjRiMTg5ZWE2YWFmM2ZkNyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCkBAIC0xNDg5LDE4ICsx
NDg5LDYgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X3Jlc3RfbGVuZ3RoKEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCiAjZW5kaWYKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3Bfc2F2ZShJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQotewotICAgIEpJVFNsb3dQYXRoQ2FsbCBz
bG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfc2F2ZSk7Ci0g
ICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKLX0KLQotdm9pZCBKSVQ6OmVtaXRfb3BfcmVzdW1lKElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCi17Ci0gICAgSklUU2xvd1BhdGhDYWxsIHNs
b3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9yZXN1bWUpOwot
ICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5k
aWYgLy8gRU5BQkxFKEpJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyLmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyLmFzbQppbmRleCAwMTk5MzE1NDU4ZWExNTIzMTg4NzExY2JhODJh
NjhjMzMzZjdhNjNjLi42YzYwYWJjYTY4N2ViYjk1YTAwMzE5MTE3MzI4M2IxZjBlNTY2ZmVhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
ci5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIuYXNtCkBAIC0xNjUxLDE1ICsxNjUxLDExIEBAIF9sbGludF9vcF9hc3NlcnQ6CiAKIAogX2xs
aW50X29wX3NhdmU6Ci0gICAgdHJhY2VFeGVjdXRpb24oKQotICAgIGNhbGxPcGNvZGVTbG93UGF0
aChfc2xvd19wYXRoX3NhdmUpCi0gICAgZGlzcGF0Y2goNCkKKyAgICBub3RTdXBwb3J0ZWQoKQog
CiAKIF9sbGludF9vcF9yZXN1bWU6Ci0gICAgdHJhY2VFeGVjdXRpb24oKQotICAgIGNhbGxPcGNv
ZGVTbG93UGF0aChfc2xvd19wYXRoX3Jlc3VtZSkKLSAgICBkaXNwYXRjaCgzKQorICAgIG5vdFN1
cHBvcnRlZCgpCiAKIAogX2xsaW50X29wX2NyZWF0ZV9sZXhpY2FsX2Vudmlyb25tZW50OgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCmluZGV4IDRlZWFlMTQ4MDA0NjUzNmNm
MjI4ZTBkNzgyODZjOGY1NGY5MTk2YjIuLjc1NmYxMmVkMjU1MTU3ZGVmYmVmNjE1MDlmNDdiOTkx
NjQ2ZjgwZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2Vy
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKQEAgLTI1
Niw3ICsyNTYsNyBAQCBTdHJpbmcgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlSW5uZXIoY29uc3Qg
SWRlbnRpZmllciYgY2FsbGVlTmFtZSwgU291cmNlUGFyc2VNbwogICAgIGlmIChtX2xleGVyLT5p
c1JlcGFyc2luZ0Z1bmN0aW9uKCkpIHsKICAgICAgICAgUGFyc2VyRnVuY3Rpb25JbmZvPEFTVEJ1
aWxkZXI+IGZ1bmN0aW9uSW5mbzsKICAgICAgICAgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJz
ZU1vZGU6OkdlbmVyYXRvckJvZHlNb2RlKQotICAgICAgICAgICAgbV9wYXJhbWV0ZXJzID0gY3Jl
YXRlR2VuZXJhdG9yUGFyYW1ldGVycyhjb250ZXh0KTsKKyAgICAgICAgICAgIG1fcGFyYW1ldGVy
cyA9IGNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMoY29udGV4dCwgZnVuY3Rpb25JbmZvLnBhcmFt
ZXRlckNvdW50KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbV9wYXJhbWV0ZXJzID0gcGFy
c2VGdW5jdGlvblBhcmFtZXRlcnMoY29udGV4dCwgcGFyc2VNb2RlLCBmdW5jdGlvbkluZm8pOwog
CkBAIC01MDcsMTAgKzUwNyw5IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVNv
dXJjZUVsZW1lbnRzIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUdlbmVyYXRvCiAKICAgICBQYXJz
ZXJGdW5jdGlvbkluZm88VHJlZUJ1aWxkZXI+IGluZm87CiAgICAgaW5mby5uYW1lID0gJm1fdm0t
PnByb3BlcnR5TmFtZXMtPm51bGxJZGVudGlmaWVyOwotICAgIGNyZWF0ZUdlbmVyYXRvclBhcmFt
ZXRlcnMoY29udGV4dCk7CisgICAgY3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhjb250ZXh0LCBp
bmZvLnBhcmFtZXRlckNvdW50KTsKICAgICBpbmZvLnN0YXJ0T2Zmc2V0ID0gcGFyYW1ldGVyc1N0
YXJ0OwogICAgIGluZm8uc3RhcnRMaW5lID0gdG9rZW5MaW5lKCk7Ci0gICAgaW5mby5wYXJhbWV0
ZXJDb3VudCA9IDQ7IC8vIGdlbmVyYXRvciwgc3RhdGUsIHZhbHVlLCByZXN1bWUgbW9kZQogCiAg
ICAgewogICAgICAgICBBdXRvUG9wU2NvcGVSZWYgZ2VuZXJhdG9yQm9keVNjb3BlKHRoaXMsIHB1
c2hTY29wZSgpKTsKQEAgLTE5MDEsMzIgKzE5MDAsMzAgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIExl
eGVyVHlwZT4gdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyLCBjbGFzcyBGdW5jdGlvbkluZm9U
eXAKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KLXRlbXBsYXRlIDxjbGFzcyBU
cmVlQnVpbGRlcj4gdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkZvcm1hbFBhcmFtZXRlckxpc3QgUGFy
c2VyPExleGVyVHlwZT46OmNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMoVHJlZUJ1aWxkZXImIGNv
bnRleHQpCit0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IHR5cGVuYW1lIFRyZWVCdWlsZGVy
OjpGb3JtYWxQYXJhbWV0ZXJMaXN0IFBhcnNlcjxMZXhlclR5cGU+OjpjcmVhdGVHZW5lcmF0b3JQ
YXJhbWV0ZXJzKFRyZWVCdWlsZGVyJiBjb250ZXh0LCB1bnNpZ25lZCYgcGFyYW1ldGVyQ291bnQp
CiB7CiAgICAgYXV0byBwYXJhbWV0ZXJzID0gY29udGV4dC5jcmVhdGVGb3JtYWxQYXJhbWV0ZXJM
aXN0KCk7CiAKICAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsK
ICAgICBKU1RleHRQb3NpdGlvbiBwb3NpdGlvbiA9IHRva2VuU3RhcnRQb3NpdGlvbigpOwogCi0g
ICAgLy8gQGdlbmVyYXRvcgotICAgIGRlY2xhcmVQYXJhbWV0ZXIoJm1fdm0tPnByb3BlcnR5TmFt
ZXMtPmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclByaXZhdGVOYW1lKCkpOwotICAgIGF1dG8gZ2Vu
ZXJhdG9yID0gY29udGV4dC5jcmVhdGVCaW5kaW5nTG9jYXRpb24obG9jYXRpb24sIG1fdm0tPnBy
b3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclByaXZhdGVOYW1lKCksIHBvc2l0
aW9uLCBwb3NpdGlvbiwgQXNzaWdubWVudENvbnRleHQ6OkRlY2xhcmF0aW9uU3RhdGVtZW50KTsK
LSAgICBjb250ZXh0LmFwcGVuZFBhcmFtZXRlcihwYXJhbWV0ZXJzLCBnZW5lcmF0b3IsIDApOwor
ICAgIGF1dG8gYWRkUGFyYW1ldGVyID0gWyZdKGNvbnN0IElkZW50aWZpZXImIG5hbWUpIHsKKyAg
ICAgICAgZGVjbGFyZVBhcmFtZXRlcigmbmFtZSk7CisgICAgICAgIGF1dG8gYmluZGluZyA9IGNv
bnRleHQuY3JlYXRlQmluZGluZ0xvY2F0aW9uKGxvY2F0aW9uLCBuYW1lLCBwb3NpdGlvbiwgcG9z
aXRpb24sIEFzc2lnbm1lbnRDb250ZXh0OjpEZWNsYXJhdGlvblN0YXRlbWVudCk7CisgICAgICAg
IGNvbnRleHQuYXBwZW5kUGFyYW1ldGVyKHBhcmFtZXRlcnMsIGJpbmRpbmcsIDApOworICAgICAg
ICArK3BhcmFtZXRlckNvdW50OworICAgIH07CiAKKyAgICAvLyBAZ2VuZXJhdG9yCisgICAgYWRk
UGFyYW1ldGVyKG1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclBy
aXZhdGVOYW1lKCkpOwogICAgIC8vIEBnZW5lcmF0b3JTdGF0ZQotICAgIGRlY2xhcmVQYXJhbWV0
ZXIoJm1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclN0YXRlUHJp
dmF0ZU5hbWUoKSk7Ci0gICAgYXV0byBnZW5lcmF0b3JTdGF0ZSA9IGNvbnRleHQuY3JlYXRlQmlu
ZGluZ0xvY2F0aW9uKGxvY2F0aW9uLCBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMo
KS5nZW5lcmF0b3JTdGF0ZVByaXZhdGVOYW1lKCksIHBvc2l0aW9uLCBwb3NpdGlvbiwgQXNzaWdu
bWVudENvbnRleHQ6OkRlY2xhcmF0aW9uU3RhdGVtZW50KTsKLSAgICBjb250ZXh0LmFwcGVuZFBh
cmFtZXRlcihwYXJhbWV0ZXJzLCBnZW5lcmF0b3JTdGF0ZSwgMCk7Ci0KKyAgICBhZGRQYXJhbWV0
ZXIobV92bS0+cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yU3RhdGVQcml2
YXRlTmFtZSgpKTsKICAgICAvLyBAZ2VuZXJhdG9yVmFsdWUKLSAgICBkZWNsYXJlUGFyYW1ldGVy
KCZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JWYWx1ZVByaXZh
dGVOYW1lKCkpOwotICAgIGF1dG8gZ2VuZXJhdG9yVmFsdWUgPSBjb250ZXh0LmNyZWF0ZUJpbmRp
bmdMb2NhdGlvbihsb2NhdGlvbiwgbV92bS0+cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCku
Z2VuZXJhdG9yVmFsdWVQcml2YXRlTmFtZSgpLCBwb3NpdGlvbiwgcG9zaXRpb24sIEFzc2lnbm1l
bnRDb250ZXh0OjpEZWNsYXJhdGlvblN0YXRlbWVudCk7Ci0gICAgY29udGV4dC5hcHBlbmRQYXJh
bWV0ZXIocGFyYW1ldGVycywgZ2VuZXJhdG9yVmFsdWUsIDApOwotCisgICAgYWRkUGFyYW1ldGVy
KG1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclZhbHVlUHJpdmF0
ZU5hbWUoKSk7CiAgICAgLy8gQGdlbmVyYXRvclJlc3VtZU1vZGUKLSAgICBkZWNsYXJlUGFyYW1l
dGVyKCZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JSZXN1bWVN
b2RlUHJpdmF0ZU5hbWUoKSk7Ci0gICAgYXV0byBnZW5lcmF0b3JSZXN1bWVNb2RlID0gY29udGV4
dC5jcmVhdGVCaW5kaW5nTG9jYXRpb24obG9jYXRpb24sIG1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1
aWx0aW5OYW1lcygpLmdlbmVyYXRvclJlc3VtZU1vZGVQcml2YXRlTmFtZSgpLCBwb3NpdGlvbiwg
cG9zaXRpb24sIEFzc2lnbm1lbnRDb250ZXh0OjpEZWNsYXJhdGlvblN0YXRlbWVudCk7Ci0gICAg
Y29udGV4dC5hcHBlbmRQYXJhbWV0ZXIocGFyYW1ldGVycywgZ2VuZXJhdG9yUmVzdW1lTW9kZSwg
MCk7CisgICAgYWRkUGFyYW1ldGVyKG1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygp
LmdlbmVyYXRvclJlc3VtZU1vZGVQcml2YXRlTmFtZSgpKTsKKyAgICAvLyBAZ2VuZXJhdG9yRnJh
bWUKKyAgICBhZGRQYXJhbWV0ZXIobV92bS0+cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCku
Z2VuZXJhdG9yRnJhbWVQcml2YXRlTmFtZSgpKTsKIAogICAgIHJldHVybiBwYXJhbWV0ZXJzOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKaW5kZXggMjVjZWM5NWE3NjFjY2Q4
YzI2MzM4MzczMGViMDRlMTU2OTcyMGJhMi4uZGVkNjI0ZjYxN2ZiNmQyNGQwMGJmMWFjNDZjNDVj
MjJkOTliNzIxZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJz
ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCkBAIC0xNDUx
LDcgKzE0NTEsNyBAQCBjbGFzcyBQYXJzZXIgewogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc0Fy
cm93RnVuY3Rpb25QYXJhbWV0ZXJzKCk7CiAgICAgCiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVC
dWlsZGVyLCBjbGFzcyBGdW5jdGlvbkluZm9UeXBlPiBORVZFUl9JTkxJTkUgdHlwZW5hbWUgVHJl
ZUJ1aWxkZXI6OkZvcm1hbFBhcmFtZXRlckxpc3QgcGFyc2VGdW5jdGlvblBhcmFtZXRlcnMoVHJl
ZUJ1aWxkZXImLCBTb3VyY2VQYXJzZU1vZGUsIEZ1bmN0aW9uSW5mb1R5cGUmKTsKLSAgICB0ZW1w
bGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElORSB0eXBlbmFtZSBUcmVlQnVpbGRl
cjo6Rm9ybWFsUGFyYW1ldGVyTGlzdCBjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKFRyZWVCdWls
ZGVyJik7CisgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBORVZFUl9JTkxJTkUgdHlw
ZW5hbWUgVHJlZUJ1aWxkZXI6OkZvcm1hbFBhcmFtZXRlckxpc3QgY3JlYXRlR2VuZXJhdG9yUGFy
YW1ldGVycyhUcmVlQnVpbGRlciYsIHVuc2lnbmVkJiBwYXJhbWV0ZXJDb3VudCk7CiAKICAgICB0
ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElORSBUcmVlQ2xhc3NFeHByZXNz
aW9uIHBhcnNlQ2xhc3MoVHJlZUJ1aWxkZXImLCBGdW5jdGlvblJlcXVpcmVtZW50cywgUGFyc2Vy
Q2xhc3NJbmZvPFRyZWVCdWlsZGVyPiYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAppbmRleCAwMDYxMjQ1YzViNTJkMjVmZDVjMzU0
ZmFiZTZjNWI3NmM5MTA5NDIzLi5iOGQ5NzgwMzkyZGFlZjc5ZmUyMTRiMGQyYzdhNjNjMjMzZTlh
YjQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93
UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQ
YXRocy5jcHAKQEAgLTM2LDcgKzM2LDYgQEAKICNpbmNsdWRlICJFcnJvci5oIgogI2luY2x1ZGUg
IkVycm9ySGFuZGxpbmdTY29wZS5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkZ1enouaCIKLSNpbmNs
dWRlICJHZW5lcmF0b3JGcmFtZS5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgogI2luY2x1
ZGUgIkhvc3RDYWxsUmV0dXJuVmFsdWUuaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgpAQCAt
NzE0LDM4ICs3MTMsNiBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfYXNzZXJ0KQogICAgIEVO
RCgpOwogfQogCi1TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfc2F2ZSkKLXsKLSAgICAvLyBPbmx5
IHNhdmUgdmFyaWFibGVzIGFuZCB0ZW1wb3JhcnkgcmVnaXN0ZXJzLiBUaGUgc2NvcGUgcmVnaXN0
ZXJzIGFyZSBpbmNsdWRlZCBpbiB0aGVtLgotICAgIC8vIEJ1dCBwYXJhbWV0ZXJzIGFyZSBub3Qg
aW5jbHVkZWQuIEJlY2F1c2UgdGhlIGdlbmVyYXRvciBpbXBsZW1lbnRhdGlvbiByZXBsYWNlcyB0
aGUgdmFsdWVzIG9mIHBhcmFtZXRlcnMgb24gZWFjaCBnZW5lcmF0b3IubmV4dCgpIGNhbGwuCi0g
ICAgQkVHSU4oKTsKLSAgICBKU1ZhbHVlIGdlbmVyYXRvciA9IE9QKDEpLmpzVmFsdWUoKTsKLSAg
ICBHZW5lcmF0b3JGcmFtZSogZnJhbWUgPSBudWxscHRyOwotICAgIEpTVmFsdWUgdmFsdWUgPSBn
ZW5lcmF0b3IuZ2V0KGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5n
ZW5lcmF0b3JGcmFtZVByaXZhdGVOYW1lKCkpOwotICAgIGlmICghdmFsdWUuaXNOdWxsKCkpCi0g
ICAgICAgIGZyYW1lID0ganNDYXN0PEdlbmVyYXRvckZyYW1lKj4odmFsdWUpOwotICAgIGVsc2Ug
ewotICAgICAgICAvLyBGSVhNRTogT25jZSBKU0dlbmVyYXRvciBzcGVjaWFsaXplZCBvYmplY3Qg
aXMgaW50cm9kdWNlZCwgdGhpcyBHZW5lcmF0b3JGcmFtZSBzaG91bGQgYmUgZW1iZWRlZCBpbnRv
IGl0IHRvIGF2b2lkIGFsbG9jYXRpb25zLgotICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNTQ1Ci0gICAgICAgIGZyYW1lID0gR2VuZXJhdG9yRnJh
bWU6OmNyZWF0ZShleGVjLT52bSgpLCAgZXhlYy0+Y29kZUJsb2NrKCktPm51bUNhbGxlZUxvY2Fs
cygpKTsKLSAgICAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoZ2VuZXJhdG9yLCB0cnVlLCBQdXRQ
cm9wZXJ0eVNsb3Q6OlB1dEJ5SWQpOwotICAgICAgICBhc09iamVjdChnZW5lcmF0b3IpLT5tZXRo
b2RUYWJsZShleGVjLT52bSgpKS0+cHV0KGFzT2JqZWN0KGdlbmVyYXRvciksIGV4ZWMsIGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JGcmFtZVByaXZhdGVOYW1l
KCksIGZyYW1lLCBzbG90KTsKLSAgICB9Ci0gICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0lu
ZGV4ID0gcGNbMl0udS51bnNpZ25lZFZhbHVlOwotICAgIGZyYW1lLT5zYXZlKGV4ZWMsIGV4ZWMt
PmNvZGVCbG9jaygpLT5saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZChsaXZlQ2FsbGVlTG9jYWxzSW5k
ZXgpKTsKLSAgICBFTkQoKTsKLX0KLQotU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3Jlc3VtZSkK
LXsKLSAgICBCRUdJTigpOwotICAgIEpTVmFsdWUgZ2VuZXJhdG9yID0gT1AoMSkuanNWYWx1ZSgp
OwotICAgIEdlbmVyYXRvckZyYW1lKiBmcmFtZSA9IGpzQ2FzdDxHZW5lcmF0b3JGcmFtZSo+KGdl
bmVyYXRvci5nZXQoZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmdl
bmVyYXRvckZyYW1lUHJpdmF0ZU5hbWUoKSkpOwotICAgIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2Nh
bHNJbmRleCA9IHBjWzJdLnUudW5zaWduZWRWYWx1ZTsKLSAgICBmcmFtZS0+cmVzdW1lKGV4ZWMs
IGV4ZWMtPmNvZGVCbG9jaygpLT5saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZChsaXZlQ2FsbGVlTG9j
YWxzSW5kZXgpKTsKLSAgICBFTkQoKTsKLX0KLQogU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2Ny
ZWF0ZV9sZXhpY2FsX2Vudmlyb25tZW50KQogewogICAgIEJFR0lOKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCmluZGV4IGViYzkxMzA2Zjgz
YTgxYjdhYTJlZTBlM2IzZmJlMjkyN2U5ZmFkNjIuLjc1MzRmNTY1M2FmMmVjZTQxODIxZDA1MWRl
Njk4MTQzMTg2ZDI0NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbW1vblNsb3dQYXRocy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bW1vblNsb3dQYXRocy5oCkBAIC0yNDUsOCArMjQ1LDYgQEAgU0xPV19QQVRIX0hJRERFTl9ERUNM
KHNsb3dfcGF0aF9uZXh0X2dlbmVyaWNfZW51bWVyYXRvcl9wbmFtZSk7CiBTTE9XX1BBVEhfSElE
REVOX0RFQ0woc2xvd19wYXRoX3RvX2luZGV4X3N0cmluZyk7CiBTTE9XX1BBVEhfSElEREVOX0RF
Q0woc2xvd19wYXRoX3Byb2ZpbGVfdHlwZV9jbGVhcl9sb2cpOwogU0xPV19QQVRIX0hJRERFTl9E
RUNMKHNsb3dfcGF0aF9hc3NlcnQpOwotU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9z
YXZlKTsKLVNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcmVzdW1lKTsKIFNMT1dfUEFU
SF9ISURERU5fREVDTChzbG93X3BhdGhfY3JlYXRlX2xleGljYWxfZW52aXJvbm1lbnQpOwogU0xP
V19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9wdXNoX3dpdGhfc2NvcGUpOwogU0xPV19QQVRI
X0hJRERFTl9ERUNMKHNsb3dfcGF0aF9yZXNvbHZlX3Njb3BlKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZyYW1lLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZyYW1lLmNwcApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggZWY2ZWE3YTEwMDI1OGMzZWNlMDRkYWFiNDNiZGFhODUxZWM4ZjcxNS4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGcmFtZS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw5
NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRh
bmUudGVhQGdtYWlsLmNvbT4uCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNs
dWRlICJHZW5lcmF0b3JGcmFtZS5oIgotCi0jaW5jbHVkZSAiQ29kZUJsb2NrLmgiCi0jaW5jbHVk
ZSAiSGVhcEl0ZXJhdGlvblNjb3BlLmgiCi0jaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIK
LSNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCi0jaW5jbHVkZSAiU2xvdFZpc2l0b3JJbmxpbmVz
LmgiCi0jaW5jbHVkZSAiU3RydWN0dXJlSW5saW5lcy5oIgotCi1uYW1lc3BhY2UgSlNDIHsKLQot
Y29uc3QgQ2xhc3NJbmZvIEdlbmVyYXRvckZyYW1lOjpzX2luZm8gPSB7ICJHZW5lcmF0b3JGcmFt
ZSIsIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoR2VuZXJhdG9yRnJhbWUp
IH07Ci0KLUdlbmVyYXRvckZyYW1lOjpHZW5lcmF0b3JGcmFtZShWTSYgdm0sIHNpemVfdCBudW1i
ZXJPZkNhbGxlZUxvY2FscykKLSAgICA6IEJhc2Uodm0sIHZtLmdlbmVyYXRvckZyYW1lU3RydWN0
dXJlLmdldCgpKQotICAgICwgbV9udW1iZXJPZkNhbGxlZUxvY2FscyhudW1iZXJPZkNhbGxlZUxv
Y2FscykKLXsKLX0KLQotdm9pZCBHZW5lcmF0b3JGcmFtZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZt
KQotewotICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKLSAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IG1fbnVtYmVyT2ZDYWxsZWVMb2NhbHM7ICsraSkKLSAgICAgICAgbG9jYWxBdChpKS5j
bGVhcigpOwotfQotCi1TdHJ1Y3R1cmUqIEdlbmVyYXRvckZyYW1lOjpjcmVhdGVTdHJ1Y3R1cmUo
Vk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkK
LXsKLSAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90
eXBlLCBUeXBlSW5mbyhDZWxsVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwotfQotCi1H
ZW5lcmF0b3JGcmFtZSogR2VuZXJhdG9yRnJhbWU6OmNyZWF0ZShWTSYgdm0sIHNpemVfdCBudW1i
ZXJPZkxvY2FscykKLXsKLSAgICBHZW5lcmF0b3JGcmFtZSogcmVzdWx0ID0KLSAgICAgICAgbmV3
ICgKLSAgICAgICAgICAgIE5vdE51bGwsCi0gICAgICAgICAgICBhbGxvY2F0ZUNlbGw8R2VuZXJh
dG9yRnJhbWU+KHZtLmhlYXAsIGFsbG9jYXRpb25TaXplRm9yTG9jYWxzKG51bWJlck9mTG9jYWxz
KSkpCi0gICAgICAgIEdlbmVyYXRvckZyYW1lKHZtLCBudW1iZXJPZkxvY2Fscyk7Ci0gICAgcmVz
dWx0LT5maW5pc2hDcmVhdGlvbih2bSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotdm9pZCBH
ZW5lcmF0b3JGcmFtZTo6c2F2ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEZhc3RCaXRWZWN0b3Im
IGxpdmVDYWxsZWVMb2NhbHMpCi17Ci0gICAgLy8gT25seSBzYXZlIGNhbGxlZSBsb2NhbHMuCi0g
ICAgLy8gRXZlcnkgdGltZSBhIGdlbmVyYXRvciBpcyBjYWxsZWQgKG9yIHJlc3VtZWQpLCBwYXJh
bWV0ZXJzIHNob3VsZCBiZSByZXBsYWNlZC4KLSAgICBBU1NFUlQobGl2ZUNhbGxlZUxvY2Fscy5u
dW1CaXRzKCkgPD0gbV9udW1iZXJPZkNhbGxlZUxvY2Fscyk7Ci0gICAgbGl2ZUNhbGxlZUxvY2Fs
cy5mb3JFYWNoU2V0Qml0KFsmXShzaXplX3QgaW5kZXgpIHsKLSAgICAgICAgbG9jYWxBdChpbmRl
eCkuc2V0KGV4ZWMtPnZtKCksIHRoaXMsIGV4ZWMtPnVuY2hlY2tlZFIodmlydHVhbFJlZ2lzdGVy
Rm9yTG9jYWwoaW5kZXgpKS5qc1ZhbHVlKCkpOwotICAgIH0pOwotfQotCi12b2lkIEdlbmVyYXRv
ckZyYW1lOjpyZXN1bWUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZl
Q2FsbGVlTG9jYWxzKQotewotICAgIC8vIE9ubHkgcmVzdW1lIGNhbGxlZSBsb2NhbHMuCi0gICAg
Ly8gRXZlcnkgdGltZSBhIGdlbmVyYXRvciBpcyBjYWxsZWQgKG9yIHJlc3VtZWQpLCBwYXJhbWV0
ZXJzIHNob3VsZCBiZSByZXBsYWNlZC4KLSAgICBsaXZlQ2FsbGVlTG9jYWxzLmZvckVhY2hTZXRC
aXQoWyZdKHNpemVfdCBpbmRleCkgewotICAgICAgICBleGVjLT51bmNoZWNrZWRSKHZpcnR1YWxS
ZWdpc3RlckZvckxvY2FsKGluZGV4KSkgPSBsb2NhbEF0KGluZGV4KS5nZXQoKTsKLSAgICAgICAg
bG9jYWxBdChpbmRleCkuY2xlYXIoKTsKLSAgICB9KTsKLX0KLQotdm9pZCBHZW5lcmF0b3JGcmFt
ZTo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQotewot
ICAgIEdlbmVyYXRvckZyYW1lKiB0aGlzT2JqZWN0ID0ganNDYXN0PEdlbmVyYXRvckZyYW1lKj4o
Y2VsbCk7Ci0gICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKLSAg
ICAvLyBTaW5jZSBvbmx5IHRydWUgY2VsbCBwb2ludGVycyBhcmUgc3RvcmVkIGFzIGEgY2VsbCwg
d2UgY2FuIHNhZmVseSBtYXJrIHRoZW0uCi0gICAgdmlzaXRvci5hcHBlbmRWYWx1ZXModGhpc09i
amVjdC0+bG9jYWxzKCksIHRoaXNPYmplY3QtPm1fbnVtYmVyT2ZDYWxsZWVMb2NhbHMpOwotfQot
Ci19IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0dlbmVyYXRvckZyYW1lLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9H
ZW5lcmF0b3JGcmFtZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZDU0NWIxNDdk
ZDRhYmZiMmJiYjliNWE3MTk0ZThmNzQ4NDFjNDlhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVy
YXRvckZyYW1lLmgKKysrIC9kZXYvbnVsbApAQCAtMSw5MCArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpZm5kZWYgR2VuZXJhdG9yRnJhbWVfaAotI2RlZmluZSBHZW5lcmF0b3JGcmFtZV9o
Ci0KLSNpbmNsdWRlICJKU0NlbGwuaCIKLSNpbmNsdWRlIDx3dGYvRmFzdEJpdFZlY3Rvci5oPgot
Ci1uYW1lc3BhY2UgSlNDIHsKLQotY2xhc3MgR2VuZXJhdG9yRnJhbWUgOiBwdWJsaWMgSlNDZWxs
IHsKLSAgICBmcmllbmQgY2xhc3MgSklUOwotI2lmIEVOQUJMRShERkdfSklUKQotICAgIGZyaWVu
ZCBjbGFzcyBERkc6OlNwZWN1bGF0aXZlSklUOwotICAgIGZyaWVuZCBjbGFzcyBERkc6OkpJVENv
bXBpbGVyOwotI2VuZGlmCi0gICAgZnJpZW5kIGNsYXNzIFZNOwotcHVibGljOgotICAgIHR5cGVk
ZWYgSlNDZWxsIEJhc2U7Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdz
ID0gU3RydWN0dXJlSXNJbW1vcnRhbCB8IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwotCi0gICAgREVD
TEFSRV9FWFBPUlRfSU5GTzsKLQotICAgIHN0YXRpYyBHZW5lcmF0b3JGcmFtZSogY3JlYXRlKFZN
Jiwgc2l6ZV90IG51bWJlck9mQ2FsbGVlTG9jYWxzKTsKLQotICAgIFdyaXRlQmFycmllckJhc2U8
VW5rbm93bj4qIGxvY2FscygpCi0gICAgewotICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PFdy
aXRlQmFycmllckJhc2U8VW5rbm93bj4qPihiaXR3aXNlX2Nhc3Q8Y2hhcio+KHRoaXMpICsgb2Zm
c2V0T2ZMb2NhbHMoKSk7Ci0gICAgfQotCi0gICAgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiYg
bG9jYWxBdChzaXplX3QgaW5kZXgpCi0gICAgewotICAgICAgICBBU1NFUlQoaW5kZXggPCBtX251
bWJlck9mQ2FsbGVlTG9jYWxzKTsKLSAgICAgICAgcmV0dXJuIGxvY2FscygpW2luZGV4XTsKLSAg
ICB9Ci0KLSAgICBzdGF0aWMgc2l6ZV90IG9mZnNldE9mTG9jYWxzKCkKLSAgICB7Ci0gICAgICAg
IHJldHVybiBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Y8c2l6ZW9mKFdyaXRlQmFycmllcjxVbmtu
b3duPik+KHNpemVvZihHZW5lcmF0b3JGcmFtZSkpOwotICAgIH0KLQotICAgIHN0YXRpYyBzaXpl
X3QgYWxsb2NhdGlvblNpemVGb3JMb2NhbHModW5zaWduZWQgbnVtYmVyT2ZMb2NhbHMpCi0gICAg
ewotICAgICAgICByZXR1cm4gb2Zmc2V0T2ZMb2NhbHMoKSArIG51bWJlck9mTG9jYWxzICogc2l6
ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPik7Ci0gICAgfQotCi0gICAgc3RhdGljIFN0cnVjdHVy
ZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHByb3RvdHlw
ZSk7Ci0KLSAgICB2b2lkIHNhdmUoRXhlY1N0YXRlKiwgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2
ZUNhbGxlZUxvY2Fscyk7Ci0gICAgdm9pZCByZXN1bWUoRXhlY1N0YXRlKiwgY29uc3QgRmFzdEJp
dFZlY3RvciYgbGl2ZUNhbGxlZUxvY2Fscyk7Ci0KLXByaXZhdGU6Ci0gICAgR2VuZXJhdG9yRnJh
bWUoVk0mLCBzaXplX3QgbnVtYmVyT2ZDYWxsZWVMb2NhbHMpOwotCi0gICAgc2l6ZV90IG1fbnVt
YmVyT2ZDYWxsZWVMb2NhbHM7Ci0KLSAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFj
dG9yOwotCi0gICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOwotCi1wcm90ZWN0ZWQ6Ci0gICAg
c3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwotfTsKLQot
fSAvLyBuYW1lc3BhY2UgSlNDCi0KLSNlbmRpZiAvLyBHZW5lcmF0b3JGcmFtZV9oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXggYjFmZjQyNDhhMzQ4NGE0Y2JiYzIwNWMzMmQ0
ZDA0YzE2MDYwY2FjNi4uODVlNjdmZmI1OTY0NGQzYjU0MzMyNTdiN2NiMGVkMWRkMGU2OWNkYyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtNDYsNyArNDYsNiBAQAogI2lu
Y2x1ZGUgIkZUTFRodW5rcy5oIgogI2luY2x1ZGUgIkZ1bmN0aW9uQ29uc3RydWN0b3IuaCIKICNp
bmNsdWRlICJHQ0FjdGl2aXR5Q2FsbGJhY2suaCIKLSNpbmNsdWRlICJHZW5lcmF0b3JGcmFtZS5o
IgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIkhlYXAuaCIKICNpbmNsdWRl
ICJIZWFwSXRlcmF0aW9uU2NvcGUuaCIKQEAgLTI0MCw3ICsyMzksNiBAQCBWTTo6Vk0oVk1UeXBl
IHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgaW5mZXJyZWRUeXBlU3RydWN0dXJlLnNl
dCgqdGhpcywgSW5mZXJyZWRUeXBlOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgp
KSk7CiAgICAgaW5mZXJyZWRUeXBlVGFibGVTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBJbmZlcnJlZFR5
cGVUYWJsZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIGZ1bmN0
aW9uUmFyZURhdGFTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBGdW5jdGlvblJhcmVEYXRhOjpjcmVhdGVT
dHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7Ci0gICAgZ2VuZXJhdG9yRnJhbWVTdHJ1Y3R1
cmUuc2V0KCp0aGlzLCBHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBq
c051bGwoKSkpOwogICAgIGV4Y2VwdGlvblN0cnVjdHVyZS5zZXQoKnRoaXMsIEV4Y2VwdGlvbjo6
Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIHByb21pc2VEZWZlcnJl
ZFN0cnVjdHVyZS5zZXQoKnRoaXMsIEpTUHJvbWlzZURlZmVycmVkOjpjcmVhdGVTdHJ1Y3R1cmUo
KnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgaW50ZXJuYWxQcm9taXNlRGVmZXJyZWRTdHJ1Y3R1
cmUuc2V0KCp0aGlzLCBKU0ludGVybmFsUHJvbWlzZURlZmVycmVkOjpjcmVhdGVTdHJ1Y3R1cmUo
KnRoaXMsIDAsIGpzTnVsbCgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAppbmRleCBm
MGRlMTUxMzVhOTA3ODc4YjQ3YTFkMzQzNGY2ODI5MWNiNWRjNzNlLi40ZmY5ZWRkMGE3NzQ2YzI5
ZTVlNjdjMzgxZmNlM2IyMDc0Nzk5NTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgK
QEAgLTMxNiw3ICszMTYsNiBAQCBjbGFzcyBWTSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRl
ZDxWTT4gewogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGluZmVycmVkVHlwZVN0cnVjdHVyZTsKICAg
ICBTdHJvbmc8U3RydWN0dXJlPiBpbmZlcnJlZFR5cGVUYWJsZVN0cnVjdHVyZTsKICAgICBTdHJv
bmc8U3RydWN0dXJlPiBmdW5jdGlvblJhcmVEYXRhU3RydWN0dXJlOwotICAgIFN0cm9uZzxTdHJ1
Y3R1cmU+IGdlbmVyYXRvckZyYW1lU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGV4
Y2VwdGlvblN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBwcm9taXNlRGVmZXJyZWRT
dHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gaW50ZXJuYWxQcm9taXNlRGVmZXJyZWRT
dHJ1Y3R1cmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNz
L2dlbmVyYXRvci1maWItZnRsLWFuZC1hcnJheS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwtYW5kLWFycmF5LmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZl
OTM5ODEyZmRiYWVjNmI4MzJiZmQwMGYyMTUzZGVmODRiYjc1OTIKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLWFu
ZC1hcnJheS5qcwpAQCAtMCwwICsxLDIzIEBACisoZnVuY3Rpb24gKCkgeworICAgIGZ1bmN0aW9u
ICpmaWIoKQorICAgIHsKKyAgICAgICAgbGV0IGEgPSAxOworICAgICAgICBsZXQgYiA9IDE7Cisg
ICAgICAgIGxldCBjID0gWyAwIF07CisgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAg
ICBjWzBdID0gYTsKKyAgICAgICAgICAgIHlpZWxkIGM7CisgICAgICAgICAgICBbYSwgYl0gPSBb
YiwgYSArIGJdOworICAgICAgICB9CisgICAgfQorCisgICAgbGV0IHZhbHVlID0gMDsKKyAgICBm
b3IgKGxldCBpID0gMDsgaSA8IDFlNDsgKytpKSB7CisgICAgICAgIGxldCBmID0gZmliKCk7Cisg
ICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwOyArK2kpIHsKKyAgICAgICAgICAgIHZhbHVl
ID0gZi5uZXh0KCkudmFsdWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHZhbHVlWzBdICE9PSAz
NTQyMjQ4NDgxNzkyNjIwMDAwMDApCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCB2
YWx1ZToke3Jlc3VsdH1gKTsKKyAgICB9Cit9KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQtb2JqZWN0LmpzIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQt
b2JqZWN0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY2NzM0MGYyZWE0Yzc0MzhhMmQyMDlhYTQwZDA2NzdlNGFi
N2QzZmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3Ry
ZXNzL2dlbmVyYXRvci1maWItZnRsLWFuZC1vYmplY3QuanMKQEAgLTAsMCArMSwyMyBAQAorKGZ1
bmN0aW9uICgpIHsKKyAgICBmdW5jdGlvbiAqZmliKCkKKyAgICB7CisgICAgICAgIGxldCBhID0g
MTsKKyAgICAgICAgbGV0IGIgPSAxOworICAgICAgICBsZXQgYyA9IHsgZmliOiAwIH07CisgICAg
ICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICBjLmZpYiA9IGE7CisgICAgICAgICAgICB5
aWVsZCBjOworICAgICAgICAgICAgW2EsIGJdID0gW2IsIGEgKyBiXTsKKyAgICAgICAgfQorICAg
IH0KKworICAgIGxldCB2YWx1ZSA9IDA7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxZTQ7ICsr
aSkgeworICAgICAgICBsZXQgZiA9IGZpYigpOworICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8
IDEwMDsgKytpKSB7CisgICAgICAgICAgICB2YWx1ZSA9IGYubmV4dCgpLnZhbHVlOworICAgICAg
ICB9CisgICAgICAgIGlmICh2YWx1ZS5maWIgIT09IDM1NDIyNDg0ODE3OTI2MjAwMDAwMCkKKyAg
ICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIHZhbHVlOiR7cmVzdWx0fWApOworICAgIH0K
K30oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dl
bmVyYXRvci1maWItZnRsLWFuZC1zdHJpbmcuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLWFuZC1zdHJpbmcuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDM4
YWU2YWIzMzQ3MDQ2ODIyODQ5ZjQzMDA0ZWE1YzQwM2VlZGEyOAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwtYW5k
LXN0cmluZy5qcwpAQCAtMCwwICsxLDIyIEBACisoZnVuY3Rpb24gKCkgeworICAgIGZ1bmN0aW9u
ICpmaWIoKQorICAgIHsKKyAgICAgICAgbGV0IGEgPSAxOworICAgICAgICBsZXQgYiA9IDE7Cisg
ICAgICAgIGxldCBjID0gIlJlc3VsdCEgIjsKKyAgICAgICAgd2hpbGUgKHRydWUpIHsKKyAgICAg
ICAgICAgIHlpZWxkIGMgKyBhOworICAgICAgICAgICAgW2EsIGJdID0gW2IsIGEgKyBiXTsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIGxldCB2YWx1ZSA9IDA7CisgICAgZm9yIChsZXQgaSA9IDA7
IGkgPCAxZTQ7ICsraSkgeworICAgICAgICBsZXQgZiA9IGZpYigpOworICAgICAgICBmb3IgKGxl
dCBpID0gMDsgaSA8IDEwMDsgKytpKSB7CisgICAgICAgICAgICB2YWx1ZSA9IGYubmV4dCgpLnZh
bHVlOworICAgICAgICB9CisgICAgICAgIGlmICh2YWx1ZSAhPT0gYFJlc3VsdCEgMzU0MjI0ODQ4
MTc5MjYyMDAwMDAwYCkKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIHZhbHVlOiR7
cmVzdWx0fWApOworICAgIH0KK30oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLmpzIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNDBlMzNk
YmM4NjhiZWE3YTg5M2M5ZWMxNmI3NzllYzI2YmRiMTljCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC5qcwpAQCAt
MCwwICsxLDIxIEBACisoZnVuY3Rpb24gKCkgeworICAgIGZ1bmN0aW9uICpmaWIoKQorICAgIHsK
KyAgICAgICAgbGV0IGEgPSAxOworICAgICAgICBsZXQgYiA9IDE7CisgICAgICAgIHdoaWxlICh0
cnVlKSB7CisgICAgICAgICAgICB5aWVsZCBhOworICAgICAgICAgICAgW2EsIGJdID0gW2IsIGEg
KyBiXTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGxldCB2YWx1ZSA9IDA7CisgICAgZm9yIChs
ZXQgaSA9IDA7IGkgPCAxZTQ7ICsraSkgeworICAgICAgICBsZXQgZiA9IGZpYigpOworICAgICAg
ICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDsgKytpKSB7CisgICAgICAgICAgICB2YWx1ZSA9IGYu
bmV4dCgpLnZhbHVlOworICAgICAgICB9CisgICAgICAgIGlmICh2YWx1ZSAhPT0gMzU0MjI0ODQ4
MTc5MjYyMDAwMDAwKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgdmFsdWU6JHty
ZXN1bHR9YCk7CisgICAgfQorfSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZyYW1lLWVtcHR5LmpzIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZnJhbWUtZW1wdHkuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NTllODg1NWJmYWMzYzU2ZGY5MjZhYmQ0MjhjMDEzYzMzNDE2Mjc0NgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZyYW1lLWVt
cHR5LmpzCkBAIC0wLDAgKzEsMzQgQEAKK2Z1bmN0aW9uIHNob3VsZFRocm93KGZ1bmMsIGVycm9y
TWVzc2FnZSkgeworICAgIHZhciBlcnJvclRocm93biA9IGZhbHNlOworICAgIHZhciBlcnJvciA9
IG51bGw7CisgICAgdHJ5IHsKKyAgICAgICAgZnVuYygpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAg
ICAgICAgZXJyb3JUaHJvd24gPSB0cnVlOworICAgICAgICBlcnJvciA9IGU7CisgICAgfQorICAg
IGlmICghZXJyb3JUaHJvd24pCisgICAgICAgIHRocm93IG5ldyBFcnJvcignbm90IHRocm93bicp
OworICAgIGlmIChTdHJpbmcoZXJyb3IpICE9PSBlcnJvck1lc3NhZ2UpCisgICAgICAgIHRocm93
IG5ldyBFcnJvcihgYmFkIGVycm9yOiAke1N0cmluZyhlcnJvcil9YCk7Cit9CisKK3Nob3VsZFRo
cm93KGZ1bmN0aW9uICgpIHsKKyAgICBmdW5jdGlvbiAqZmliKGZsYWcpCisgICAgeworICAgICAg
ICBsZXQgYSA9IDE7CisgICAgICAgIGxldCBiID0gMTsKKyAgICAgICAgeWllbGQgNDI7CisgICAg
ICAgIGlmIChmbGFnKQorICAgICAgICAgICAgcmV0dXJuIGM7CisgICAgICAgIGxldCBjID0gNTAw
OworICAgIH0KKworICAgIGxldCB2YWx1ZSA9IDA7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAx
ZTQ7ICsraSkgeworICAgICAgICBmb3IgKGxldCB2IG9mIGZpYihmYWxzZSkpIHsKKyAgICAgICAg
fQorICAgIH0KKyAgICBmb3IgKGxldCB2IG9mIGZpYih0cnVlKSkgeworICAgIH0KK30sIGBSZWZl
cmVuY2VFcnJvcjogQ2Fubm90IGFjY2VzcyB1bmluaXRpYWxpemVkIHZhcmlhYmxlLmApOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItcmVk
dWNlZC1zYXZlLXBvaW50LXB1dC10by1zY29wZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXJlZHVjZWQtc2F2ZS1wb2ludC1wdXQtdG8tc2NvcGUuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYzBjNzVmYTQ5MTQzYzE3YmUxNGYzMjgxZTNmNjU0MzRmMzUxMzllOAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJh
dG9yLXJlZHVjZWQtc2F2ZS1wb2ludC1wdXQtdG8tc2NvcGUuanMKQEAgLTAsMCArMSwyOCBAQAor
ZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09
IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCB2YWx1ZTogJHtTdHJpbmco
YWN0dWFsKX1gKTsKK30KKworZnVuY3Rpb24gZXJyb3IoKQoreworICAgIHRocm93ICJvayI7Cit9
CisKK2Z1bmN0aW9uKiBnZW4oKQoreworICAgIHZhciB2YWx1ZSA9IDQyOworICAgIHRyeSB7Cisg
ICAgICAgIHlpZWxkIDMwMDsKKyAgICAgICAgdmFsdWUgPSA1MDA7CisgICAgICAgIGVycm9yKCk7
CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICB5aWVsZCA0MjsKKyAgICAgICAgcmV0dXJuIHZh
bHVlOworICAgIH0KKyAgICByZXR1cm4gMjAwOworfQorCit2YXIgZyA9IGdlbigpOworc2hvdWxk
QmUoZy5uZXh0KCkudmFsdWUsIDMwMCk7CitzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgNDIpOwor
c2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIDUwMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci10cmFuc2Zlci1yZWdpc3Rlci1iZXlvbmQt
bXV0aXBsZS15aWVsZHMuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dl
bmVyYXRvci10cmFuc2Zlci1yZWdpc3Rlci1iZXlvbmQtbXV0aXBsZS15aWVsZHMuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZmUyMDhmNTgxMjk2ZjlhZTA4YTZiZmIzOThiNDgyMjU3NDJkNmI3OAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXRy
YW5zZmVyLXJlZ2lzdGVyLWJleW9uZC1tdXRpcGxlLXlpZWxkcy5qcwpAQCAtMCwwICsxLDE4IEBA
CitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAh
PT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0
dWFsKTsKK30KKworCitmdW5jdGlvbiAqZ2VuKCkKK3sKKyAgICB2YXIgdGVzdCA9IDQyOworICAg
IHlpZWxkIDMyOworICAgIHlpZWxkIDMzOworICAgIHlpZWxkIHRlc3Q7Cit9CisKK3ZhciBnID0g
Z2VuKCk7CitzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgMzIpOworc2hvdWxkQmUoZy5uZXh0KCku
dmFsdWUsIDMzKTsKK3Nob3VsZEJlKGcubmV4dCgpLnZhbHVlLCA0Mik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi9GYXN0Qml0VmVjdG9yLmggYi9Tb3VyY2UvV1RGL3d0Zi9GYXN0Qml0VmVj
dG9yLmgKaW5kZXggOThmZmY1Y2Y3MzUzZTZiYzY3ZGE1YzU1OTQwY2NjZTRlNGIxNTZkMC4uZmYw
MGI3YjU0ZDRhMGNmZjRiZWY3ZDAzODU0ZGU2YjkwY2UxZGI5MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvRmFzdEJpdFZlY3Rvci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0Zhc3RCaXRWZWN0
b3IuaApAQCAtMjMsOCArMjMsNyBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAotI2lmbmRlZiBG
YXN0Qml0VmVjdG9yX2gKLSNkZWZpbmUgRmFzdEJpdFZlY3Rvcl9oCisjcHJhZ21hIG9uY2UKIAog
I2luY2x1ZGUgPHN0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CkBAIC0zNiwx
MiArMzUsMTQgQEAgY2xhc3MgUHJpbnRTdHJlYW07CiAKIGNsYXNzIEZhc3RCaXRWZWN0b3Igewog
cHVibGljOgotICAgIEZhc3RCaXRWZWN0b3IoKQotICAgICAgICA6IG1fYXJyYXkoMCkKLSAgICAg
ICAgLCBtX251bUJpdHMoMCkKKyAgICBGYXN0Qml0VmVjdG9yKCkgPSBkZWZhdWx0OworCisgICAg
RmFzdEJpdFZlY3RvcihGYXN0Qml0VmVjdG9yJiYgb3RoZXIpCisgICAgICAgIDogbV9hcnJheShz
dGQ6OmV4Y2hhbmdlKG90aGVyLm1fYXJyYXksIG51bGxwdHIpKQorICAgICAgICAsIG1fbnVtQml0
cyhzdGQ6OmV4Y2hhbmdlKG90aGVyLm1fbnVtQml0cywgMCkpCiAgICAgewogICAgIH0KLSAgICAK
KwogICAgIEZhc3RCaXRWZWN0b3IoY29uc3QgRmFzdEJpdFZlY3RvciYgb3RoZXIpCiAgICAgICAg
IDogbV9hcnJheSgwKQogICAgICAgICAsIG1fbnVtQml0cygwKQpAQCAtMjAyLDEzICsyMDMsMTAg
QEAgY2xhc3MgRmFzdEJpdFZlY3RvciB7CiAgICAgc3RhdGljIHNpemVfdCBhcnJheUxlbmd0aChz
aXplX3QgbnVtQml0cykgeyByZXR1cm4gKG51bUJpdHMgKyAzMSkgPj4gNTsgfQogICAgIHNpemVf
dCBhcnJheUxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIGFycmF5TGVuZ3RoKG1fbnVtQml0cyk7IH0K
ICAgICAKLSAgICB1aW50MzJfdCogbV9hcnJheTsgLy8gTm8sIHRoaXMgY2FuJ3QgYmUgYW4gc3Rk
Ojp1bmlxdWVfcHRyPHVpbnQzMl90W10+LgotICAgIHNpemVfdCBtX251bUJpdHM7CisgICAgdWlu
dDMyX3QqIG1fYXJyYXkgeyBudWxscHRyIH07IC8vIE5vLCB0aGlzIGNhbid0IGJlIGFuIHN0ZDo6
dW5pcXVlX3B0cjx1aW50MzJfdFtdPi4KKyAgICBzaXplX3QgbV9udW1CaXRzIHsgMCB9OwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV1RGCiAKIHVzaW5nIFdURjo6RmFzdEJpdFZlY3RvcjsKLQotI2Vu
ZGlmIC8vIEZhc3RCaXRWZWN0b3JfaAotCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>284211</attachid>
            <date>2016-07-21 06:38:46 -0700</date>
            <delta_ts>2016-07-21 06:47:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-152723-20160721223746.patch</filename>
            <type>text/plain</type>
            <size>190741</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAzNTAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
MTg5OTNhYjdiZWYyMDRmYjhkMjVkN2EyODExNzBiODE5NjI4ZGEzLi41NWE0MjcyZDYxZTE1ZDk5
NTU5YmE2OWU0MTFkYjNlYTA3ZjM5ODU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNTIgQEAKKzIwMTYtMDctMjEgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0RGR11bRlRMXSBJbXBsZW1lbnQgRVM2IEdlbmVyYXRvcnMgaW4g
REZHIC8gRlRMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNTI3MjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUaGlzIHBhdGNoIGludHJvZHVjZXMgREZHIGFuZCBGVEwgc3VwcG9ydCBmb3IgRVM2IGdlbmVy
YXRvcnMuCisgICAgICAgIEVTNiBnZW5lcmF0b3IgaXMgY29tcGlsZWQgYnkgdGhlIEJ5dGVjb2Rl
R2VuZXJhdG9yLiBCdXQgYXQgdGhlIGxhc3QgcGhhc2UsIEJ5dGVjb2RlR2VuZXJhdG9yIHBlcmZv
cm1zICJnZW5lcmF0b3JpZmljYXRpb24iIG9udG8gdGhlIHVubGlua2VkIGNvZGUuCisgICAgICAg
IEluIEJ5dGVjb2RlR2VuZXJhdG9yIHBoYXNlLCB3ZSBpbnNlcnRlZCBzZXZlcmFsIHNwZWNpYWwg
bWFya2VycyBmb3IgdGhlIGdlbmVyYXRvcnMsIG9wX3NhdmUgYW5kIG9wX3Jlc3VtZS4KKyAgICAg
ICAgVGhlIG9wX3NhdmUsIG9wX3Jlc3VtZSwgYW5kIHRoZSBtZXJnZSBwb2ludCBibG9jayBhcmUg
Y29ubmVjdGVkIGFzIGZvbGxvd3MuCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBvcF9yZXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBeCisgICAgICAgIGVudHJ5IC0+IGdlbmVyYXRvciBzd2l0Y2ggLS0tLT4gb3Bfc2F2ZSAtPiBt
ZXJnZSBwb2ludCAtPiAuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBeCisgICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0t
LT4gb3BfcmVzdW1lIC0tLS0tKworCisgICAgICAgIEluIHRoZSBnZW5lcmF0b3JpZmljYXRpb24g
cGhhc2UsIHdlIHR1cm4gb3V0IHdoaWNoIHZhcmlhYmxlcyBzaG91bGQgYmUgc2F2ZWQgYW5kIHJl
c3VtZWQgYXQgZWFjaCBvcF9zYXZlIGFuZCBvcF9yZXN1bWUsIGFuZCBjb252ZXJ0IHRoZXNlIGJ5
dGVjb2RlcworICAgICAgICB0byB0aGUgc2VxdWVuY2VzIG9mIHRoZSBnZXRfZnJvbV9zY29wZSBh
bmQgcHV0X3RvX3Njb3BlLiBUaGUgcmVnaXN0ZXJzIGFyZSBzYXZlZCBhbmQgcmVzdW1lZCBvdmVy
IHRoZSBnZW5lcmF0b3IncyBuZXh0KCkgY2FsbHMgYnkgdXNpbmcgdGhpcyBzcGVjaWFsCisgICAg
ICAgIGdlbmVyYXRvciBmcmFtZSBzY29wZS4KKworICAgICAgICBJbiB0aGUgZ2VuZXJhdG9yaWZp
Y2F0aW9uIHBoYXNlLAorCisgICAgICAgIDEuIFdlIGNvbnN0cnVjdCB0aGUgQnl0ZWNvZGVHcmFw
aCBmcm9tIHRoZSB1bmlua2VkIGluc3RydWN0aW9ucy4gVGhpcyBjb25zdHJ1Y3RzIHRoZSBiYXNp
YyBibG9ja3MsIGFuZCBpdCBpcyB1c2VkIGluIHRoZSBzdWJzZXF1ZW50IGFuYWx5c2lzLgorICAg
ICAgICAyLiBXZSBwZXJmb3JtIHRoZSBhbmFseXNpcyBvbnRvIHRoZSB1bmxpbmtlZCBjb2RlLiBX
ZSBoYXZlIDMgYW5hbHlzaXM6IHRoZSBsaXZlbmVzcyBhbmFseXNpcywgdGhlIHJlc3VtZWQgdmFy
aWFibGVzIGFuYWx5c2lzLCBhbmQgdGhlIHNhdmVkIHZhcmlhYmxlcyBhbmFseXNpcy4KKyAgICAg
ICAgICAgRmlyc3QsIGluIHRoZSBsaXZlbmVzcyBhbmFseXNpcywgd2UgZXh0cmFjdCB0aGUgbGl2
ZSB2YXJpYWJsZXMgYXQgZWFjaCBtZXJnZSBwb2ludC4gVGhlc2UgdmFyaWFibGVzIHNob3VsZCBi
ZSBjb25zaWRlcmVkIGFzIHRoZSBjb25zZXJ2YXRpdmUgcmVnaXN0ZXJzCisgICAgICAgICAgIHRv
IGJlIHNhdmVkIGFuZCByZXN1bWVkIGF0IGVhY2ggcG9pbnQuCisgICAgICAgIDMuIFNlY29uZCwg
d2UgcGVyZm9ybSB0aGUgbGl2ZW5lc3MgYW5hbHlzaXMgYWdhaW4uIEJ1dCB0aGlzIHRpbWUsIHdl
IGV4cGxpY2l0bHkgaWdub3JlIHRoZSBlZGdlcyBiZXR3ZWVuIHRoZSBzYXZlIHBvaW50cyBhbmQg
dGhlIG1lcmdlIHBvaW50cy4gVGhpcyBhbmFseXNpcywKKyAgICAgICAgICAgcmVmZXJyZWQgdG8g
YXMgdGhlIHJlc3VtZWQgdmFyaWFibGVzIGFuYWx5c2lzLCBleHRyYWN0cyB0aGUgbGl2ZW5lc3Mg
YXQgZWFjaCBtZXJnZSBwb2ludC4gVGhpcyBsaXZlbmVzcyBpbmZvcm1hdGlvbiBvbmx5IGNvbnNp
ZGVycyB0aGUgcmVhY2hhYmxlIGJsb2NrcyBmcm9tIHRoZQorICAgICAgICAgICB0YXJnZXQgb3Bf
cmVzdW1lLiBTbywgdGhpcyByZWdpc3RlciBzZXQgcmVwcmVzZW50cyB0aGF0IHdoaWNoIHNhdmVk
IHJlZ2lzdGVycyB0aGUgcmVhY2hhYmxlIGJsb2NrcyB1c2UuIFdlIGNvbnNpZGVyIHRoZXNlIHJl
Z2lzdGVycyBhcyB0aGUgcmVnaXN0ZXJzIHRvIGJlIHJlc3VtZWQKKyAgICAgICAgICAgaGVyZS4g
VGhlIHJlc3VsdCByZWdpc3RlciBzZXQgaXMgc21hbGxlciB0aGFuIHRoZSBzZXQgd2hpY2ggaXMg
ZXh0cmFjdGVkIGluIHRoZSBwcmV2aW91cyBsaXZlbmVzcyBhbmFseXNpcy4KKyAgICAgICAgNC4g
VGhpcmQsIHdlIGRyaXZlIHRoZSBmb3J3YXJkIGFuYWx5c2lzLCBjYWxsZWQgdGhlIHNhdmVkIHZh
cmlhYmxlcyBhbmFseXNpcy4gQXQgb3Bfc2F2ZSwgd2Ugc2hvdWxkIHNhdmUgdGhlIHZhcmlhYmxl
cyB0aGF0IChpKSB3aWxsIGJlIHVzZWQgYWZ0ZXIgdGhlIG1lcmdlIHBvaW50CisgICAgICAgICAg
IGFuZCAoaWkpIHRoZSBuZXdseSBkZWZpbmVkIHZhcmlhYmxlcyBmcm9tIHRoZSBwcmV2aW91cyBv
cF9yZXN1bWUuIFNvLCB3ZSBwcm9wYWdhdGUgdGhlIGRlZnMgYW5kIGNvbGxlY3QgdGhlIG5ld2x5
IGRlZmluZWQgcmVnaXN0ZXJzIGF0IHRoZSBvcF9zYXZlIHBvaW50IGluIHRoZSBncmFwaAorICAg
ICAgICAgICB3aGljaCBkcm9wcyB0aGUgZWRnZXMgYmV0d2VlbiB0aGUgc2F2ZSBwb2ludHMgYW5k
IHRoZSBtZXJnZSBwb2ludHMuIFRoaXMgcmVzdWx0IHJlcHJlc2VudHMgKGlpKS4gU28gdGhlbiwg
d2UgZmlsdGVyIHRoZSBsaXZlIHZhcmlhYmxlcyAoaSkgKGdhaW5lZCBpbiAoMikpIGF0IHRoZSBt
ZXJnZQorICAgICAgICAgICBwb2ludCB3aXRoIHRoaXMgbmV3bHkgZGVmLWVkIHJlZ2lzdGVycyBi
aXQgbWFzayhpaSkuCisgICAgICAgIDUuIFdlIGluc2VydCB0aGUgZ2V0X2Zyb21fc2NvcGUgYW5k
IHB1dF90b19zY29wZSBhdCBlYWNoIG9wX3NhdmUgYW5kIG9wX3Jlc3VtZS4gV2hpY2ggcmVnaXN0
ZXJzIHNob3VsZCBiZSBzYXZlZCBhbmQgcmVzdW1lZCBpcyBvZmZlcmVkIGJ5ICgzKSBhbmQgKDQp
LgorICAgICAgICAgICBUaGVuLCBjbGlwIHRoZSBvcF9zYXZlIGFuZCBvcF9yZXN1bWUgdGhlbXNl
bHZlcy4gVGhleSBhcmUgZXhlY3V0ZWQgaW4gYSBiYXRjaCBtYW5uZXIgYnkgQnl0ZWNvZGVNb2Rp
ZmljYXRpb25TZXQuIFNpbmNlIHRoZXNlIG1vZGlmaWNhdGlvbiBjaGFuZ2VzIHRoZSBiYXNpYyBi
bG9ja3MKKyAgICAgICAgICAgYW5kIHNpemUgb2YgdW5saW5rZWQgaW5zdHJ1Y3Rpb25zLCBCeXRl
Y29kZU1vZGlmaWNhdGlvblNldCBhbHNvIHBlcmZvcm1zIHRoZSBvZmZzZXQgYWRqdXN0bWVudCBm
b3IgVW5saW5rZWRDb2RlQmxvY2suIFNvLCB0aGlzIEJ5dGVjb2RlTW9kaWZpY2F0aW9uU2V0IGlz
IHBlcmZvcm1lZAorICAgICAgICAgICBvbnRvIHRoZSBCeXRlY29kZUdyYXBoIGluc3RlYWQgb2Yg
Qnl0ZWNvZGVCYXNpY0Jsb2NrLiBUaGUgcmVhc29uIHdoeSB3ZSB0YWtlIHRoaXMgZGVzaWduIGlz
IHNpbXBsZTogd2UgZG9uJ3Qgd2FudCB0byBuZXdseSBjcmVhdGUgdGhlIGJhc2ljIGJsb2NrcyBh
bmQgb3Bjb2RlcworICAgICAgICAgICBmb3IgdGhpcyBlYXJseSBwaGFzZSBsaWtlIERGRy4gSW5z
dGVhZCwgd2UgcGVyZm9ybSB0aGUgbW9kaWZpY2F0aW9uIGFuZCBhZGp1c3RtZW50IHRvIHRoZSB1
bmxpbmtlZCBpbnN0cnVjdGlvbnMgYW5kIFVubGlua2VkQ29kZUJsb2NrIGluIGEgaW4tcGxhY2Ug
bWFubmVyLgorCisgICAgICAgIEFmdGVyIHRoYXQgcGhhc2UsIHRoZSBkYXRhIGZsb3cgb2YgdGhl
IGdlbmVyYXRvci1zYXZlZC1hbmQtcmVzdW1lZC1yZWdpc3RlcnMgYXJlIGV4cGxpY2l0bHkgcmVw
cmVzZW50ZWQgYnkgdGhlIGdldF9mcm9tX3Njb3BlIGFuZCBwdXRfdG9fc2NvcGUuCisgICAgICAg
IEFuZCBvcF9zYXZlIGFuZCBvcF9yZXN1bWUgYXJlIHJlbW92ZWQuIFNpbmNlIHdlIHVzZSB0aGUg
ZXhpc3RpbmcgYnl0ZWNvZGVzLCBERkcgYW5kIEZUTCBjaGFuZ2VzIGFyZSBub3QgbmVjZXNzYXJ5
LgorCisgICAgICAgIENvbXBpbGluZyBFUzYgZ2VuZXJhdG9ycyBpbiBERkcgYW5kIEZUTCBnaXZl
cyB1cyBzaWduaWZpY2FudCBwZXJmb3JtYW5jZSBpbXByb3ZlbWVudHMuCisgICAgICAgIEluIHg2
NCBMaW51eCBib3ggKGhhbmF5YW1hdGEpLCB0aGUgcmVzdWx0IG9mIEpTQ09ubHkgcG9ydCBpcyB0
aGUgZm9sbG93aW5ncy4KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBiYXNlbGluZSAgICAgICAgICAgICAgICAgICBwYXRjaAorCisgICAg
ICAgICAgICBnZW5lcmF0b3ItZmliICAgICAgICAgICAgICAgICAgICAgICAgICAxMDMuMjU0Myst
My45OTc4ICAgICBeICAgICAzNi40MTQ4Ky0wLjg0MDIgICAgICAgIF4gZGVmaW5pdGVseSAyLjgz
NTV4IGZhc3RlcgorICAgICAgICAgICAgZ2VuZXJhdG9yLXdpdGgtc2V2ZXJhbC10eXBlcyAgICAg
ICAgICAgMzQyLjUwMDkrLTI1LjE2MDIgICAgXiAgICAxMzIuMTcxMCstMTcuMTEyOSAgICAgICBe
IGRlZmluaXRlbHkgMi41OTEzeCBmYXN0ZXIKKyAgICAgICAgICAgIGdlbmVyYXRvci1zdW5zcGlk
ZXItYWNjZXNzLW5zaWV2ZSAgICAgICAgNS45ODE2Ky0wLjEwODIgICAgIF4gICAgICA1LjE3ODAr
LTAuMjM4OCAgICAgICAgXiBkZWZpbml0ZWx5IDEuMTU1MnggZmFzdGVyCisKKworICAgICAgICBJ
biB4NjQgT1MgWCBsYXB0b3AsIHRoZSByZXN1bHRzIG9mIEVTNlNhbXBsZUJlbmNoIGFyZSB0aGUg
Zm9sbG93aW5ncy4KKyAgICAgICAgVGhlIEVTNiBCYXNpYyBiZW5jaG1hcmsgc2hvdyB0aGF0IHRo
ZSBwZXJmb3JtYW5jZSBvZiB0aGUgcGF0Y2hlZCBvbmUgaXMgMzMlIGZhc3RlciB0aGFuIHRoZSBw
ZXJmb3JtYW5jZSBvZiB0aGUgYmFzZWxpbmUuCisKKyAgICAgICAgICAgIEJhc2VsaW5lOgorICAg
ICAgICAgICAgICAgIEdlb21ldHJpYyBNZWFuIFJlc3VsdDogMTgxLjgzIG1zIMKxIDQuODIgbXMK
KworICAgICAgICAgICAgICAgIEJlbmNobWFyayAgICBGaXJzdCBJdGVyYXRpb24gICAgICAgV29y
c3QgMiUgICAgICAgICAgICAgIFN0ZWFkeSBTdGF0ZQorICAgICAgICAgICAgICAgIEFpciAgICAg
ICAgICA3MC43NCBtcyDCsSA2LjU1IG1zICAgIDM0Ljc0IG1zIMKxIDEuNjUgbXMgICAgMjk4OS4w
NiBtcyDCsSAzNC40NSBtcworICAgICAgICAgICAgICAgIEJhc2ljICAgICAgICA0MC4wMyBtcyDC
sSAxLjk2IG1zICAgIDI4LjUwIG1zIMKxIDAuNjAgbXMgICAgNDM0Mi45MSBtcyDCsSA2NC4xMCBt
cworCisgICAgICAgICAgICBQYXRjaGVkOgorICAgICAgICAgICAgICAgIEdlb21ldHJpYyBNZWFu
IFJlc3VsdDogMTY4LjE0IG1zIMKxIDEuMzkgbXMKKworICAgICAgICAgICAgICAgIEJlbmNobWFy
ayAgICBGaXJzdCBJdGVyYXRpb24gICAgICAgV29yc3QgMiUgICAgICAgICAgICAgIFN0ZWFkeSBT
dGF0ZQorICAgICAgICAgICAgICAgIEFpciAgICAgICAgICA2OC42NyBtcyDCsSAwLjgyIG1zICAg
IDM1LjYyIG1zIMKxIDAuMzIgbXMgICAgMzA2NS44OSBtcyDCsSA1NS41OSBtcworICAgICAgICAg
ICAgICAgIEJhc2ljICAgICAgICAzOC42MSBtcyDCsSAxLjY1IG1zICAgIDIzLjk3IG1zIMKxIDAu
MzggbXMgICAgMzI2Mi40NiBtcyDCsSA3NC4xMiBtcworCisgICAgICAgICogQ01ha2VMaXN0cy50
eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiBidWlsdGlucy9HZW5lcmF0b3JQcm90b3R5cGUuanM6CisgICAgICAgIChnbG9i
YWxQcml2YXRlLmdlbmVyYXRvclJlc3VtZSk6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVC
YXNpY0Jsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVCYXNpY0Jsb2NrOjpjb21wdXRl
Qnl0ZWNvZGVCYXNpY0Jsb2Nrc0ludGVybmFsKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVCYXNp
Y0Jsb2NrOjpjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2Nrcyk6CisgICAgICAgIChKU0M6OmxpbmtC
bG9ja3MpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2Nr
cyk6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmg6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlQmFzaWNCbG9jazo6Ynl0ZWNvZGVPZmZzZXRzKToKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVCYXNpY0Jsb2NrOjpzdWNjZXNzb3JzKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVCYXNpY0Jsb2NrOjpwcmVkZWNlc3NvcnMpOgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUJhc2ljQmxvY2s6OmluZGV4KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVCYXNpY0Jsb2NrOjph
ZGRTdWNjZXNzb3IpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUJhc2ljQmxvY2s6OmFkZFByZWRl
Y2Vzc29yKToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5j
cHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbjo6Qnl0
ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRv
cmlmaWNhdGlvbjo6aXNNZXJnZUJsb2NrKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0
b3JpZmljYXRpb246OmlzU2F2ZUJsb2NrKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0
b3JpZmljYXRpb246OmdyYXBoKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3JpZmlj
YXRpb246OnN0b3JhZ2VGb3JHZW5lcmF0b3JMb2NhbCk6CisgICAgICAgIChKU0M6OkdlbmVyYXRv
ckxpdmVuZXNzQW5hbHlzaXM6OkdlbmVyYXRvckxpdmVuZXNzQW5hbHlzaXMpOgorICAgICAgICAo
SlNDOjpHZW5lcmF0b3JMaXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlTGl2ZW5lc3NEZWZzRm9yQnl0
ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JMaXZlbmVzc0FuYWx5c2lzOjpj
b21wdXRlTGl2ZW5lc3NVc2VzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpHZW5l
cmF0b3JMaXZlbmVzc0FuYWx5c2lzOjpzdGVwT3Zlckluc3RydWN0aW9uRm9yTGl2ZW5lc3MpOgor
ICAgICAgICAoSlNDOjpHZW5lcmF0b3JMaXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlTG9jYWxMaXZl
bmVzc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yTGl2ZW5lc3NB
bmFseXNpczo6Y29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCbG9jayk6CisgICAgICAgIChKU0M6Okdl
bmVyYXRvckxpdmVuZXNzQW5hbHlzaXM6OmdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQp
OgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JMaXZlbmVzc0FuYWx5c2lzOjpydW4pOgorICAgICAg
ICAoSlNDOjpSZXN1bWVkVmFyaWFibGVzQW5hbHlzaXM6OlJlc3VtZWRWYXJpYWJsZXNBbmFseXNp
cyk6CisgICAgICAgIChKU0M6OlJlc3VtZWRWYXJpYWJsZXNBbmFseXNpczo6Z2V0UmVzdW1lZFZh
cmlhYmxlc0luZm9BdEJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6UmVzdW1lZFZhcmlh
Ymxlc0FuYWx5c2lzOjpydW4pOgorICAgICAgICAoSlNDOjpTYXZlZFZhcmlhYmxlc0FuYWx5c2lz
OjpTYXZlZFZhcmlhYmxlc0FuYWx5c2lzKToKKyAgICAgICAgKEpTQzo6U2F2ZWRWYXJpYWJsZXNB
bmFseXNpczo6c3RlcE92ZXJJbnN0cnVjdGlvbkZvclNhdmVkVmFyaWFibGVzKToKKyAgICAgICAg
KEpTQzo6U2F2ZWRWYXJpYWJsZXNBbmFseXNpczo6Y29tcHV0ZUxvY2FsU2F2ZWRWYXJpYWJsZXNG
b3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OlNhdmVkVmFyaWFibGVzQW5hbHlzaXM6
OmNvbXB1dGVMb2NhbFNhdmVkVmFyaWFibGVzRm9yQmxvY2spOgorICAgICAgICAoSlNDOjpTYXZl
ZFZhcmlhYmxlc0FuYWx5c2lzOjpnZXRTYXZlZFZhcmlhYmxlc0luZm9BdEJ5dGVjb2RlT2Zmc2V0
KToKKyAgICAgICAgKEpTQzo6U2F2ZWRWYXJpYWJsZXNBbmFseXNpczo6cnVuKToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb246OnJ1bik6CisgICAgICAgIChKU0M6OnBl
cmZvcm1HZW5lcmF0b3JpZmljYXRpb24pOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlR2Vu
ZXJhdG9yaWZpY2F0aW9uLmg6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNJbmxpbmVzLmguCisgICAgICAgICogYnl0ZWNv
ZGUvQnl0ZWNvZGVHcmFwaC5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHcmFwaDo6
Y29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHcmFwaDo6YmFzaWNCbG9ja3MpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdyYXBoOjppbnN0cnVjdGlvbnMpOgorICAgICAgICAoSlND
OjpCeXRlY29kZUdyYXBoOjpiYXNpY0Jsb2Nrc0luUmV2ZXJzZU9yZGVyKToKKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVHcmFwaDo6YmxvY2tDb250YWluc0J5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHcmFwaDo6ZmluZEJhc2ljQmxvY2tGb3JCeXRlY29kZU9mZnNldCk6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR3JhcGg6OmZpbmRCYXNpY0Jsb2NrV2l0aExlYWRlck9mZnNl
dCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR3JhcGg8QmxvY2s+OjpCeXRlY29kZUdyYXBoKToK
KyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNp
cyk6CisgICAgICAgIChKU0M6OnN0ZXBPdmVySW5zdHJ1Y3Rpb24pOgorICAgICAgICAoSlNDOjpj
b21wdXRlTG9jYWxMaXZlbmVzc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Y29t
cHV0ZUxvY2FsTGl2ZW5lc3NGb3JCbG9jayk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlTGl2ZW5l
c3NBbmFseXNpczo6cnVuTGl2ZW5lc3NGaXhwb2ludCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
TGl2ZW5lc3NBbmFseXNpczo6Z2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29kZU9mZnNldCk6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0ZUZ1bGxMaXZlbmVzcyk6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0ZUtpbGxzKToK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpkdW1wUmVzdWx0cyk6Cisg
ICAgICAgIChKU0M6OmlzVmFsaWRSZWdpc3RlckZvckxpdmVuZXNzKTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6Z2V0TGVhZGVyT2Zmc2V0Rm9yQmFzaWNCbG9jayk6IERlbGV0ZWQuCisgICAgICAg
IChKU0M6OmZpbmRCYXNpY0Jsb2NrV2l0aExlYWRlck9mZnNldCk6IERlbGV0ZWQuCisgICAgICAg
IChKU0M6OmJsb2NrQ29udGFpbnNCeXRlY29kZU9mZnNldCk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OmZpbmRCYXNpY0Jsb2NrRm9yQnl0ZWNvZGVPZmZzZXQpOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGUpOiBEZWxldGVkLgorICAgICAg
ICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5oOgorICAgICAgICAqIGJ5dGVj
b2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGluZXMuaDoKKyAgICAgICAgKEpTQzo6aXNW
YWxpZFJlZ2lzdGVyRm9yTGl2ZW5lc3MpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTW9k
aWZpY2F0aW9uU2V0LmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkJ5dGVjb2RlTW9kaWZpY2F0
aW9uU2V0OjphZGp1c3RPZmZzZXQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZU1vZGlmaWNhdGlv
blNldDo6YXBwbHlNb2RpZmljYXRpb24pOgorICAgICAgICAoSlNDOjpCeXRlY29kZU1vZGlmaWNh
dGlvblNldDo6ZXhlY3V0ZSk6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVNb2RpZmljYXRp
b25TZXQuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkJ5dGVjb2RlTW9kaWZpY2F0aW9uU2V0OjpC
eXRlY29kZU1vZGlmaWNhdGlvblNldCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlTW9kaWZpY2F0
aW9uU2V0OjppbnNlcnQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZU1vZGlmaWNhdGlvblNldDo6
cmVtb3ZlQnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZU1vZGlmaWNhdGlvblNldDo6
Z3JhcGgpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmg6CisgICAgICAgIChK
U0M6OmNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpjb21wdXRl
RGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3Bw
OgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjpoYW5kbGVyRm9ySW5kZXgpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6
OnZhbHVlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
OjpsaXZlbmVzc0FuYWx5c2lzU2xvdyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZHVtcEJ5
dGVjb2RlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpzaHJpbmtUb0ZpdCk6
IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6
OkNvZGVCbG9jazo6aXNDb25zdGFudFJlZ2lzdGVySW5kZXgpOgorICAgICAgICAoSlNDOjpDb2Rl
QmxvY2s6OmxpdmVuZXNzQW5hbHlzaXMpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmxpdmVD
YWxsZWVMb2NhbHNBdFlpZWxkKTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29kZS9IYW5kbGVy
SW5mby5oOgorICAgICAgICAoSlNDOjpIYW5kbGVySW5mb0Jhc2U6OmhhbmRsZXJGb3JJbmRleCk6
CisgICAgICAgICogYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmNwcDoKKyAgICAgICAgKEpT
Qzo6Z2V0SnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OmNvbXB1
dGVQcmVjaXNlSnVtcFRhcmdldHNJbnRlcm5hbCk6CisgICAgICAgIChKU0M6OmNvbXB1dGVQcmVj
aXNlSnVtcFRhcmdldHMpOgorICAgICAgICAoSlNDOjpyZWNvbXB1dGVQcmVjaXNlSnVtcFRhcmdl
dHMpOgorICAgICAgICAoSlNDOjpmaW5kSnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldCk6Cisg
ICAgICAgICogYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmg6CisgICAgICAgICogYnl0ZWNv
ZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9j
azo6aGFuZGxlckZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2Rl
QmxvY2s6OmhhbmRsZXJGb3JJbmRleCk6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2Nr
OjphcHBseU1vZGlmaWNhdGlvbik6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxv
Y2suaDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRTdHJpbmdKdW1wVGFibGU6Om9mZnNldEZvclZh
bHVlKToKKyAgICAgICAgKiBieXRlY29kZS9WaXJ0dWFsUmVnaXN0ZXIuaDoKKyAgICAgICAgKiBi
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUdlbmVyYXRvcjo6Z2VuZXJhdGUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6
Qnl0ZWNvZGVHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dENvbXBsZXhQb3BTY29wZXMpOgorICAgICAgICAoSlNDOjpwcmVwYXJlSnVtcFRhYmxlRm9yU3Ry
aW5nU3dpdGNoKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRZaWVsZFBv
aW50KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRTYXZlKToKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXN1bWUpOgorICAgICAgICAqIGJ5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVy
YXRvcjo6Z2VuZXJhdG9yRnJhbWVSZWdpc3Rlcik6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlv
bnMuY3BwOgorICAgICAgICAqIGdlbmVyYXRlLWJ5dGVjb2RlLWZpbGVzOgorICAgICAgICAqIGlu
dGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpTQzo6ZmluZEV4Y2VwdGlvbkhh
bmRsZXIpOgorICAgICAgICAoSlNDOjpHZXRDYXRjaEhhbmRsZXJGdW5jdG9yOjpvcGVyYXRvcigp
KToKKyAgICAgICAgKEpTQzo6VW53aW5kRnVuY3Rvcjo6b3BlcmF0b3IoKSk6CisgICAgICAgICog
aW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaDoKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnBy
ZXRlcklubGluZXMuaDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1ByZWNpc2VKdW1wVGFyZ2V0cy5oLgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6Z2V0T3Bj
b2RlSUQpOgorICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZh
dGVDb21waWxlTWFpblBhc3MpOiBEZWxldGVkLgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAg
ICAgKiBqaXQvSklUT3Bjb2Rlcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9zYXZl
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3Jlc3VtZSk6IERlbGV0ZWQu
CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc206CisgICAgICAgICogcGFy
c2VyL1BhcnNlci5jcHA6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUlu
bmVyKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlR2VuZXJhdG9yRnVu
Y3Rpb25Tb3VyY2VFbGVtZW50cyk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+Ojpj
cmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmg6Cisg
ICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpTTE9X
X1BBVEhfREVDTCk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMu
aDoKKyAgICAgICAgKiBydW50aW1lL0dlbmVyYXRvckZyYW1lLmNwcDogUmVtb3ZlZC4KKyAgICAg
ICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OkdlbmVyYXRvckZyYW1lKTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OmZpbmlzaENyZWF0aW9uKTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OmNyZWF0ZVN0cnVjdHVyZSk6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpjcmVhdGUpOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpHZW5lcmF0b3JGcmFtZTo6c2F2ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkdlbmVyYXRv
ckZyYW1lOjpyZXN1bWUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6
dmlzaXRDaGlsZHJlbik6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9HZW5lcmF0b3JGcmFt
ZS5oOiBSZW1vdmVkLgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6bG9jYWxzKTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OmxvY2FsQXQpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6b2Zmc2V0T2ZMb2NhbHMpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6YWxsb2NhdGlvblNpemVGb3JMb2NhbHMpOiBE
ZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6Vk0p
OiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKyAgICAgICAgKiB0ZXN0cy9zdHJl
c3MvZ2VuZXJhdG9yLWZpYi1mdGwtYW5kLWFycmF5LmpzOiBBZGRlZC4KKyAgICAgICAgKGZpYik6
CisgICAgICAgICogdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLWFuZC1vYmplY3QuanM6
IEFkZGVkLgorICAgICAgICAoZmliKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvZ2VuZXJhdG9y
LWZpYi1mdGwtYW5kLXN0cmluZy5qczogQWRkZWQuCisgICAgICAgIChmaWIpOgorICAgICAgICAq
IHRlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC5qczogQWRkZWQuCisgICAgICAgIChmaWIp
OgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZnJhbWUtZW1wdHkuanM6IEFkZGVk
LgorICAgICAgICAoc2hvdWxkVGhyb3cpOgorICAgICAgICAoc2hvdWxkVGhyb3cuZmliKToKKyAg
ICAgICAgKiB0ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXJlZHVjZWQtc2F2ZS1wb2ludC1wdXQtdG8t
c2NvcGUuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoZ2VuKToKKyAg
ICAgICAgKiB0ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXRyYW5zZmVyLXJlZ2lzdGVyLWJleW9uZC1t
dXRpcGxlLXlpZWxkcy5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgIChn
ZW4pOgorCiAyMDE2LTA3LTIwICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29t
PgogCiAgICAgICAgIFtFUzddIEludHJvZHVjZSBleHBvbmVudGlhdGlvbiBleHByZXNzaW9uCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmlu
ZGV4IDFjMjlhZDhmOTA2NzIxN2QwOWMxYjQ0NzVmYjhjOGJlMTNlYzY3ZTMuLjJlY2QxMmY0ZjJk
OWEyOWM2YjUyMjdhYTY5MzE2NmY4NDFjZTFmY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTYt
MDctMjEgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAg
W0RGR11bRlRMXSBJbXBsZW1lbnQgRVM2IEdlbmVyYXRvcnMgaW4gREZHIC8gRlRMCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTI3MjMKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9GYXN0Qml0VmVj
dG9yLmg6CisgICAgICAgIChXVEY6OkZhc3RCaXRWZWN0b3I6OkZhc3RCaXRWZWN0b3IpOgorCiAy
MDE2LTA3LTIwICBSYWplZXYgTWlzcmEgIDxyYWplZXZtaXNyYWZvcmFwcGxlQGdtYWlsLmNvbT4K
IAogICAgICAgICBSZW1vdmUgdW5uZWNlc3NhcnkgaWYgY2hlY2sgZnJvbSBQYXJraW5nTG90LmNw
cApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDZmZTBhNWZlMGNjY2VhYTY4
YmUwNjBiMDdmM2NjZmI3ZDk1NzNhOTIuLjY4YjIyYTc4MmY3ZmQ1NTZmOGY4NDM1NmM3YzJkNWFk
NzE5YjRhMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4
dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTE3OSw2ICsx
NzksOCBAQCBzZXQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIGJ5dGVjb2RlL0FycmF5QWxs
b2NhdGlvblByb2ZpbGUuY3BwCiAgICAgYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmNwcAogICAgIGJ5
dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5jcHAKKyAgICBieXRlY29kZS9CeXRlY29kZUdlbmVy
YXRvcmlmaWNhdGlvbi5jcHAKKyAgICBieXRlY29kZS9CeXRlY29kZU1vZGlmaWNhdGlvblNldC5j
cHAKICAgICBieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmNwcAogICAgIGJ5dGVj
b2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAKICAgICBieXRlY29kZS9DYWxsRWRnZS5j
cHAKQEAgLTY1Nyw3ICs2NTksNiBAQCBzZXQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIHJ1
bnRpbWUvRnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlLmNwcAogICAgIHJ1bnRpbWUvRnVuY3Rpb25Q
cm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9GdW5jdGlvblJhcmVEYXRhLmNwcAotICAgIHJ1bnRp
bWUvR2VuZXJhdG9yRnJhbWUuY3BwCiAgICAgcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvbkNvbnN0
cnVjdG9yLmNwcAogICAgIHJ1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3BwCiAg
ICAgcnVudGltZS9HZW5lcmF0b3JQcm90b3R5cGUuY3BwCkBAIC05NzIsNiArOTczLDEwIEBAIGFk
ZF9jdXN0b21fY29tbWFuZCgKICAgICBDT01NQU5EICR7UFlUSE9OX0VYRUNVVEFCTEV9ICR7SkFW
QVNDUklQVENPUkVfRElSfS9nZW5lcmF0ZS1ieXRlY29kZS1maWxlcyAtLWJ5dGVjb2Rlc19oICR7
REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vQnl0ZWNvZGVzLmggLS1pbml0X2J5
dGVjb2Rlc19hc20gJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9Jbml0Qnl0
ZWNvZGVzLmFzbSAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpz
b24KICAgICBWRVJCQVRJTSkKIAorbGlzdChBUFBFTkQgSmF2YVNjcmlwdENvcmVfSEVBREVSUwor
ICAgICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vQnl0ZWNvZGVzLmgKKykK
KwogYWRkX2N1c3RvbV9jb21tYW5kKAogICAgIE9VVFBVVCAke0RFUklWRURfU09VUkNFU19KQVZB
U0NSSVBUQ09SRV9ESVJ9L0xMSW50RGVzaXJlZE9mZnNldHMuaAogICAgIE1BSU5fREVQRU5ERU5D
WSAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vb2ZmbGluZWFzbS9nZW5lcmF0ZV9vZmZzZXRfZXh0cmFj
dG9yLnJiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDZiNzY2OGQ0MDRjM2M0MDk2
ZDk4NGI0NGRjMWYwMGRlMzdmM2E0OGMuLjU2OTA5NjU0OWNmYzFkODc0ZGQyZjYwMGE4MzcyOTQ3
Y2NiNmQ3NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMjUwLDggKzEyNTAs
NiBAQAogCQk3MDlGQjg2QzFBRTMzNUM2MDAzOUQwNjkgLyogV2Vha1NldFByb3RvdHlwZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzA5RkI4NjYxQUUz
MzVDNjAwMzlEMDY5IC8qIFdlYWtTZXRQcm90b3R5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MEIwQTlEMTFBOUI2NjQ2MDAwMTMwNkEgLyog
UnVudGltZUZsYWdzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3MEIwQTlEMDFBOUI2NjIwMDAwMTMwNkEgLyogUnVudGltZUZsYWdzLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzBCNzkxOTExQzAyNEEx
MzAwMjQ4MUUyIC8qIFNvdXJjZUNvZGVLZXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDcwQjc5MThFMUMwMjQ0QzkwMDI0ODFFMiAvKiBTb3VyY2VDb2Rl
S2V5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJ
NzBCNzkxOTIxQzAyNEEyMzAwMjQ4MUUyIC8qIEdlbmVyYXRvckZyYW1lLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwQjc5MTgzMUMwMjQ0MzIwMDI0
ODFFMiAvKiBHZW5lcmF0b3JGcmFtZS5jcHAgKi87IH07Ci0JCTcwQjc5MTkzMUMwMjRBMjgwMDI0
ODFFMiAvKiBHZW5lcmF0b3JGcmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNzBCNzkxODQxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZyYW1l
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzBC
NzkxOTQxQzAyNEEyODAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBCNzkxODUx
QzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwICovOyB9
OwogCQk3MEI3OTE5NTFDMDI0QTI4MDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1
Y3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBC
NzkxODYxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MEI3OTE5
NjFDMDI0QTI4MDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBCNzkxODcxQzAyNDQz
MjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcCAqLzsgfTsKQEAgLTIw
MjcsNiArMjAyNSwxMSBAQAogCQlFMThFM0E1OTBERjkyNzhDMDBEOTBCMzQgLyogVk0uY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTE4RTNBNTcwREY5
Mjc4QzAwRDkwQjM0IC8qIFZNLmNwcCAqLzsgfTsKIAkJRTMxOENCQzAxQjhBRUY1MTAwQTI5MjlE
IC8qIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMThDQkJFMUI4QUVGNTEwMEEyOTI5RCAvKiBKU01vZHVs
ZU5hbWVzcGFjZU9iamVjdC5jcHAgKi87IH07CiAJCUUzMThDQkMxMUI4QUVGNTEwMEEyOTI5RCAv
KiBKU01vZHVsZU5hbWVzcGFjZU9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTMxOENCQkYxQjhBRUY1MTAwQTI5MjlEIC8qIEpTTW9kdWxlTmFt
ZXNwYWNlT2JqZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJRTMyOERBRTcxRDM4RDAwNDAwMUEyNTI5IC8qIEJ5dGVjb2RlR2VuZXJhdG9yaWZp
Y2F0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUzRDI2NDI2MUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5j
cHAgKi87IH07CisJCUUzMjhEQUU4MUQzOEQwMDUwMDFBMjUyOSAvKiBCeXRlY29kZUdlbmVyYXRv
cmlmaWNhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTNEMjY0MjcxRDM4QzA0MjAwMEJFMTc0IC8qIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9u
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTMy
OERBRTkxRDM4RDAwNTAwMUEyNTI5IC8qIEJ5dGVjb2RlR3JhcGguaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzRDI2NDI4MUQzOEMwNDIwMDBCRTE3NCAv
KiBCeXRlY29kZUdyYXBoLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJRTMyOERBRUExRDM4RDAwNTAwMUEyNTI5IC8qIEJ5dGVjb2RlTW9kaWZpY2F0
aW9uU2V0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUzRDI2NDI5MUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRlY29kZU1vZGlmaWNhdGlvblNldC5jcHAg
Ki87IH07CisJCUUzMjhEQUVCMUQzOEQwMDUwMDFBMjUyOSAvKiBCeXRlY29kZU1vZGlmaWNhdGlv
blNldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNE
MjY0MkExRDM4QzA0MjAwMEJFMTc0IC8qIEJ5dGVjb2RlTW9kaWZpY2F0aW9uU2V0LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTMzNjM3QTUxQjYz
MjIwMjAwRUUwODQwIC8qIFJlZmxlY3RPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMzNjM3QTMxQjYzMjIwMjAwRUUwODQwIC8qIFJlZmxl
Y3RPYmplY3QuY3BwICovOyB9OwogCQlFMzM2MzdBNjFCNjMyMjAyMDBFRTA4NDAgLyogUmVmbGVj
dE9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTMzNjM3QTQxQjYzMjIwMjAwRUUwODQwIC8qIFJlZmxlY3RPYmplY3QuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzNCM0UyNjFCN0FCRDc1MDA0
OERCMkUgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0Lmx1dC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMzQjNFMjUxQjdBQkQ3NTAwNDhE
QjJFIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5sdXQuaCAqLzsgfTsKQEAgLTIw
NTEsNiArMjA1NCw3IEBACiAJCUUzNzk0RTc1MUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFs
eXplci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
Mzc5NEU3MzFCNzdFQjk3MDA1NTQzQUUgLyogTW9kdWxlQW5hbHl6ZXIuY3BwICovOyB9OwogCQlF
Mzc5NEU3NjFCNzdFQjk3MDA1NTQzQUUgLyogTW9kdWxlQW5hbHl6ZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNzk0RTc0MUI3N0VCOTcwMDU1NDNB
RSAvKiBNb2R1bGVBbmFseXplci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUUzOTYzQ0VFMUI3M0Y3NTAwMEVCNENFNSAvKiBOb2Rlc0FuYWx5emVN
b2R1bGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTM5NjNDRUMxQjczRjc1MDAwRUI0Q0U1IC8qIE5vZGVzQW5hbHl6ZU1vZHVsZS5jcHAgKi87IH07
CisJCUUzOUQ0NUY1MUQzOTAwNTYwMEIzQjM3NyAvKiBJbnRlcnByZXRlcklubGluZXMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOUQ5RDg0MUQzOTAw
MDYwMDY2NzI4MiAvKiBJbnRlcnByZXRlcklubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzlEQTRBNjFCN0U4QjdDMDA4NEYzM0EgLyog
SlNNb2R1bGVSZWNvcmQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTM5REE0QTQxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmNwcCAq
LzsgfTsKIAkJRTM5REE0QTcxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzlEQTRBNTFCN0U4
QjdDMDA4NEYzM0EgLyogSlNNb2R1bGVSZWNvcmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFM0QyMzlDODFCODI5QzFDMDBCQkVGNjcgLyogSlNN
b2R1bGVFbnZpcm9ubWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFM0QyMzlDNjFCODI5QzFDMDBCQkVGNjcgLyogSlNNb2R1bGVFbnZpcm9ubWVu
dC5jcHAgKi87IH07CkBAIC0zNDQ4LDggKzM0NTIsNiBAQAogCQk3MDlGQjg2NTFBRTMzNUM2MDAz
OUQwNjkgLyogV2Vha1NldFByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBXZWFrU2V0UHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNzA5RkI4NjYxQUUzMzVDNjAwMzlEMDY5IC8qIFdlYWtTZXRQcm90b3R5cGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vha1NldFByb3RvdHlwZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3MEIwQTlEMDFBOUI2NjIwMDAwMTMwNkEgLyogUnVudGlt
ZUZsYWdzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJ1bnRpbWVGbGFncy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3MEI3OTE4MzFDMDI0NDMyMDAyNDgxRTIg
LyogR2VuZXJhdG9yRnJhbWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gR2VuZXJhdG9yRnJhbWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3MEI3
OTE4NDFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnJhbWUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gR2VuZXJhdG9yRnJhbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNzBCNzkxODUxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uQ29u
c3RydWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR2VuZXJh
dG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTcwQjc5MTg2MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9y
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdlbmVyYXRvckZ1bmN0aW9uQ29u
c3RydWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzBCNzkxODcxQzAyNDQz
MjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQyOTIsMTAgKzQyOTQsMTYgQEAKIAkJRTM3
OTRFNzMxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1vZHVsZUFuYWx5emVyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRTM3OTRFNzQxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5
emVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vZHVsZUFuYWx5emVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOTYzQ0VDMUI3M0Y3NTAwMEVCNENFNSAv
KiBOb2Rlc0FuYWx5emVNb2R1bGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gTm9kZXNBbmFseXplTW9kdWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJRTM5RDlEODQxRDM5MDAwNjAwNjY3MjgyIC8qIEludGVycHJldGVySW5saW5lcy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRlcnByZXRlcklubGluZXMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM5REE0QTQxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9k
dWxlUmVjb3JkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTW9k
dWxlUmVjb3JkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM5REE0QTUxQjdF
OEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEpTTW9kdWxlUmVjb3JkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUUzRDIzOUM2MUI4MjlDMUMwMEJCRUY2NyAvKiBKU01vZHVsZUVudmlyb25tZW50LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTW9kdWxlRW52aXJvbm1lbnQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0QyMzlDNzFCODI5QzFDMDBCQkVGNjcg
LyogSlNNb2R1bGVFbnZpcm9ubWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBKU01vZHVsZUVudmlyb25tZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUz
RDI2NDI2MUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCeXRlY29kZUdlbmVyYXRvcmlm
aWNhdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzRDI2NDI3MUQzOEMw
NDIwMDBCRTE3NCAvKiBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlFM0QyNjQyODFEMzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNv
ZGVHcmFwaC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCeXRlY29kZUdyYXBo
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzRDI2NDI5MUQzOEMwNDIwMDBCRTE3
NCAvKiBCeXRlY29kZU1vZGlmaWNhdGlvblNldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBCeXRlY29kZU1vZGlmaWNhdGlvblNldC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUUzRDI2NDJBMUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRlY29kZU1vZGlm
aWNhdGlvblNldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCeXRlY29kZU1v
ZGlmaWNhdGlvblNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0VGODg3MjFC
NjZERjIzMDAzRjI2Q0IgLyogSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNFRjg4NzMxQjY2REYyMzAwM0YyNkNCIC8qIEpT
UHJvcGVydHlOYW1lSXRlcmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlF
NDlEQzE0OTEyRUYyNjFBMDAxODRBMUYgLyogU291cmNlUHJvdmlkZXJDYWNoZUl0ZW0uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU291cmNlUHJvdmlkZXJDYWNoZUl0ZW0uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUwMTEsNiArNTAxOSw3IEBACiAJCTE0MjlE
NzdBMEVEMjBENzMwMEI4OTYxOSAvKiBpbnRlcnByZXRlciAqLyA9IHsKIAkJCWlzYSA9IFBCWEdy
b3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJRTM5RDlEODQxRDM5MDAwNjAwNjY3MjgyIC8qIElu
dGVycHJldGVySW5saW5lcy5oICovLAogCQkJCTBGNTVGMEYxMTREMTA2MzYwMEFDNzY0OSAvKiBB
YnN0cmFjdFBDLmNwcCAqLywKIAkJCQkwRjU1RjBGMjE0RDEwNjM2MDBBQzc2NDkgLyogQWJzdHJh
Y3RQQy5oICovLAogCQkJCTE0MjlEODVCMEVEMjE4RTkwMEI4OTYxOSAvKiBDTG9vcFN0YWNrLmNw
cCAqLywKQEAgLTU2ODIsOCArNTY5MSw2IEBACiAJCQkJRjY5MkE4NUQwMjU1NTk3RDAxRkY2MEY3
IC8qIEZ1bmN0aW9uUHJvdG90eXBlLmggKi8sCiAJCQkJNjJEMkQzOEQxQURGMTAzRjAwMDIwNkMx
IC8qIEZ1bmN0aW9uUmFyZURhdGEuY3BwICovLAogCQkJCTYyRDJEMzhFMUFERjEwM0YwMDAyMDZD
MSAvKiBGdW5jdGlvblJhcmVEYXRhLmggKi8sCi0JCQkJNzBCNzkxODMxQzAyNDQzMjAwMjQ4MUUy
IC8qIEdlbmVyYXRvckZyYW1lLmNwcCAqLywKLQkJCQk3MEI3OTE4NDFDMDI0NDMyMDAyNDgxRTIg
LyogR2VuZXJhdG9yRnJhbWUuaCAqLywKIAkJCQk3MEI3OTE4NTFDMDI0NDMyMDAyNDgxRTIgLyog
R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAgKi8sCiAJCQkJNzBCNzkxODYxQzAyNDQz
MjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaCAqLywKIAkJCQk3MEI3
OTE4NzFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3BwICov
LApAQCAtNjU2NSw2ICs2NTcyLDExIEBACiAJCTk2OUEwNzhGMEVEMUQzQUUwMEYxRjY4MSAvKiBi
eXRlY29kZSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJ
RTNEMjY0MjYxRDM4QzA0MjAwMEJFMTc0IC8qIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNw
cCAqLywKKwkJCQlFM0QyNjQyNzFEMzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNvZGVHZW5lcmF0b3Jp
ZmljYXRpb24uaCAqLywKKwkJCQlFM0QyNjQyODFEMzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNvZGVH
cmFwaC5oICovLAorCQkJCUUzRDI2NDI5MUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRlY29kZU1vZGlm
aWNhdGlvblNldC5jcHAgKi8sCisJCQkJRTNEMjY0MkExRDM4QzA0MjAwMEJFMTc0IC8qIEJ5dGVj
b2RlTW9kaWZpY2F0aW9uU2V0LmggKi8sCiAJCQkJNTM3MEI0RjMxQkYyNUVBMjAwNUM0MEZDIC8q
IEFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2UuY3BwICovLAogCQkJ
CTUzNzBCNEY0MUJGMjVFQTIwMDVDNDBGQyAvKiBBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1
ZVdhdGNocG9pbnRCYXNlLmggKi8sCiAJCQkJMEY4MzM1QjQxNjM5QzFFMzAwMTQ0M0I1IC8qIEFy
cmF5QWxsb2NhdGlvblByb2ZpbGUuY3BwICovLApAQCAtNzExOCw2ICs3MTMwLDcgQEAKIAkJCQkw
RkVDODUyRDFCREFDREFDMDA4MEZGNzQgLyogQjNQcm9jZWR1cmVJbmxpbmVzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRkVDODVCRDFCRTE0NjJGMDA4MEZGNzQgLyogQjNSZWR1Y2VTdHJlbmd0aC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQzg1MzExQkRBQ0RBQzAwODBGRjc0IC8qIEIzU3RhY2tt
YXBTcGVjaWFsLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzI4REFFODFEMzhEMDA1MDAxQTI1Mjkg
LyogQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUM4
NTM1MUJEQUNEQUMwMDgwRkY3NCAvKiBCM1Nsb3RCYXNlVmFsdWUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGRUM4NTM2MUJEQUNEQUMwMDgwRkY3NCAvKiBCM1N1Y2Nlc3NvckNvbGxlY3Rpb24uaCBp
biBIZWFkZXJzICovLAogCQkJCTBGRUM4NTM4MUJEQUNEQUMwMDgwRkY3NCAvKiBCM1N3aXRjaENh
c2UuaCBpbiBIZWFkZXJzICovLApAQCAtNzM4MCw3ICs3MzkzLDYgQEAKIAkJCQlBNzM3ODEwRTE3
OTlFQTJFMDA4MTc1MzMgLyogREZHTmF0dXJhbExvb3BzLmggaW4gSGVhZGVycyAqLywKIAkJCQk4
NkVDQTNFQTEzMkRFRjFDMDAyQjJBRDcgLyogREZHTm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEZGQjkyMUIxNkQwMkYwMTAwNTVBNURCIC8qIERGR05vZGVBbGxvY2F0b3IuaCBpbiBIZWFkZXJz
ICovLAotCQkJCTcwQjc5MTkzMUMwMjRBMjgwMDI0ODFFMiAvKiBHZW5lcmF0b3JGcmFtZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEZBNTgxQkIxNTBFOTUzMDAwQjlBMkQ5IC8qIERGR05vZGVGbGFn
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYzMDBCNzgxOEFCMDUxMTAwQTZENzJFIC8qIERGR05v
ZGVPcmlnaW4uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQTU4MUJDMTUwRTk1MzAwMEI5QTJEOSAv
KiBERkdOb2RlVHlwZS5oIGluIEhlYWRlcnMgKi8sCkBAIC03Mzk1LDYgKzc0MDcsNyBAQAogCQkJ
CTBGRDhBMzI2MTdENTFGNTcwMENBMkM0MCAvKiBERkdPU1JFbnRyeXBvaW50Q3JlYXRpb25QaGFz
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDMDk3NkExNDY4QTZGNzAwQ0YyNDQyIC8qIERGR09T
UkV4aXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjM1QkVDMTcxNzhFNzMwMDY5MEM3RiAvKiBE
RkdPU1JFeGl0QmFzZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM5RDQ1RjUxRDM5MDA1NjAwQjNC
Mzc3IC8qIEludGVycHJldGVySW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGQjkyMUMx
NkQwMkYxMTAwNTVBNURCIC8qIERGR09TUkV4aXRDb21waWxhdGlvbkluZm8uaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGQzA5NzcxMTQ2OTNBRjUwMENGMjQ0MiAvKiBERkdPU1JFeGl0Q29tcGlsZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGNzAyNUFBMTcxNEIwRkMwMDM4MkMwRSAvKiBERkdPU1JF
eGl0Q29tcGlsZXJDb21tb24uaCBpbiBIZWFkZXJzICovLApAQCAtNzY1NCw2ICs3NjY3LDcgQEAK
IAkJCQlFMzNCM0UyNjFCN0FCRDc1MDA0OERCMkUgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
T2JqZWN0Lmx1dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTUzMjQzOEMxODU2ODMzNTAwMkVENjky
IC8qIEluc3BlY3RvclByb3RvY29sT2JqZWN0cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU1RDkz
QUMxODUxNEY3OTAwNDAwREVEIC8qIEluc3BlY3RvclByb3RvY29sVHlwZXMuaCBpbiBIZWFkZXJz
ICovLAorCQkJCUUzMjhEQUVCMUQzOEQwMDUwMDFBMjUyOSAvKiBCeXRlY29kZU1vZGlmaWNhdGlv
blNldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTUwRTRCNjIxODgwOURENTAwNjhBNDZEIC8qIElu
c3BlY3RvclJ1bnRpbWVBZ2VudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU5M0NGODMxODQwMzc3
MTAwQkZDRTI3IC8qIEluc3BlY3RvclZhbHVlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTY5QTA3
OTkwRUQxRDNBRTAwRjFGNjgxIC8qIEluc3RydWN0aW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTc3
ODIsNiArNzc5Niw3IEBACiAJCQkJRTMzRjUwODExQjg0MjlBNDAwNDEzODU2IC8qIEpTSW50ZXJu
YWxQcm9taXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjYxODMyQTFDNDVCRjA3MDA3MjQ1MEIg
LyogQWlyQ0NhbGxpbmdDb252ZW50aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMzNGNTA3OTFC
ODQyMjU3MDA0MTM4NTYgLyogSlNJbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvci5oIGluIEhlYWRl
cnMgKi8sCisJCQkJRTMyOERBRTkxRDM4RDAwNTAwMUEyNTI5IC8qIEJ5dGVjb2RlR3JhcGguaCBp
biBIZWFkZXJzICovLAogCQkJCUUzM0Y1MDg3MUI4NDQ5RUYwMDQxMzg1NiAvKiBKU0ludGVybmFs
UHJvbWlzZUNvbnN0cnVjdG9yLmx1dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTMzRjUwODUxQjg0
MzdBMDAwNDEzODU2IC8qIEpTSW50ZXJuYWxQcm9taXNlRGVmZXJyZWQuaCBpbiBIZWFkZXJzICov
LAogCQkJCUUzM0Y1MDc1MUI4NDIxQzAwMDQxMzg1NiAvKiBKU0ludGVybmFsUHJvbWlzZVByb3Rv
dHlwZS5oIGluIEhlYWRlcnMgKi8sCkBAIC04NzIzLDYgKzg3MzgsNyBAQAogCQkJCTE0N0YzOUJE
MTA3RUMzNzYwMDQyN0E0OCAvKiBBcmdMaXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNzQz
QkFBMTZCODgyNDkwMDlGOTI3NyAvKiBBUk02NERpc2Fzc2VtYmxlci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk4NkQzQjJDMzEwMTU2QkRFMDAyODY1RTcgLyogQVJNQXNzZW1ibGVyLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCUUzMjhEQUU3MUQzOEQwMDQwMDFBMjUyOSAvKiBCeXRlY29kZUdlbmVy
YXRvcmlmaWNhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2NUMwMjg1MDE3MTc5NUUyMDAz
NTFFMzUgLyogQVJNdjdEaXNhc3NlbWJsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNjVDMDI4
NUMxNzE3OTY2ODAwMzUxRTM1IC8qIEFSTXY3RE9wY29kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkwRjgzMzVCNzE2MzlDMUU2MDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAg
aW4gU291cmNlcyAqLywKQEAgLTkwNTcsNiArOTA3Myw3IEBACiAJCQkJMEYyNUYxQjExODE2MzVG
MzAwNTIyRjM5IC8qIEZUTFNsb3dQYXRoQ2FsbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjMz
OERGMTFCRTkzQUQxMDAxM0M4OEYgLyogQjNTdGFja21hcFZhbHVlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGMjVGMUIzMTgxNjM1RjMwMDUyMkYzOSAvKiBGVExTbG93UGF0aENhbGxLZXkuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJRTMyOERBRUExRDM4RDAwNTAwMUEyNTI5IC8qIEJ5dGVjb2Rl
TW9kaWZpY2F0aW9uU2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQzMTlEQTAzMUMxQkU0MEEw
MDFEMjYwQiAvKiBCM0xvd2VyTWFjcm9zQWZ0ZXJPcHRpbWl6YXRpb25zLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTBGRUEwQTE2MTcwNkJCOTAwMEJCNzIyQyAvKiBGVExTdGF0ZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkwRjIzNUJFMTE3MTc4RTFDMDA2OTBDN0YgLyogRlRMVGh1bmtzLmNwcCBp
biBTb3VyY2VzICovLApAQCAtOTQ2MCw3ICs5NDc3LDYgQEAKIAkJCQk3OUVFMEJGRjFCNEFGQjg1
MDAwMzg1QzkgLyogVmFyaWFibGVFbnZpcm9ubWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkw
RjZDNzM1MDFBQzlGOTlGMDBCRTE2ODIgLyogVmFyaWFibGVXcml0ZUZpcmVEZXRhaWwuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMEZFMDUwMkMxQUE5MDk1NjAwRDMzQjMzIC8qIFZhck9mZnNldC5j
cHAgaW4gU291cmNlcyAqLywKLQkJCQk3MEI3OTE5MjFDMDI0QTIzMDAyNDgxRTIgLyogR2VuZXJh
dG9yRnJhbWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyMEMyNTkxQTgwMTNBQjAwREEzMjI5
IC8qIFZpcnR1YWxSZWdpc3Rlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMThFM0E1OTBERjky
NzhDMDBEOTBCMzQgLyogVk0uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkU1OTMyQTcxODNDNUEy
NjAwQTFFQ0NDIC8qIFZNRW50cnlTY29wZS5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9HZW5lcmF0b3JQcm90b3R5cGUuanMgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvR2VuZXJhdG9yUHJvdG90eXBlLmpzCmluZGV4
IDNjMTQwNjg3ZGZjN2UwMGVmZTkxYWU4MGIyYWM2NzZmYTliZjQ4ZjQuLjQ5OWRiZDM5MmU4MzEz
ZGNkZDg2ZWM4YzE2MDU2OWQ3ZDZmNTQ5YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9idWlsdGlucy9HZW5lcmF0b3JQcm90b3R5cGUuanMKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J1aWx0aW5zL0dlbmVyYXRvclByb3RvdHlwZS5qcwpAQCAtNTEsNyArNTEsNyBAQCBm
dW5jdGlvbiBnZW5lcmF0b3JSZXN1bWUoZ2VuZXJhdG9yLCBzZW50VmFsdWUsIHJlc3VtZU1vZGUp
CiAgICAgfSBlbHNlIHsKICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgIGdlbmVyYXRvci5AZ2Vu
ZXJhdG9yU3RhdGUgPSBAR2VuZXJhdG9yU3RhdGVFeGVjdXRpbmc7Ci0gICAgICAgICAgICB2YWx1
ZSA9IGdlbmVyYXRvci5AZ2VuZXJhdG9yTmV4dC5AY2FsbChnZW5lcmF0b3IuQGdlbmVyYXRvclRo
aXMsIGdlbmVyYXRvciwgc3RhdGUsIHNlbnRWYWx1ZSwgcmVzdW1lTW9kZSk7CisgICAgICAgICAg
ICB2YWx1ZSA9IGdlbmVyYXRvci5AZ2VuZXJhdG9yTmV4dC5AY2FsbChnZW5lcmF0b3IuQGdlbmVy
YXRvclRoaXMsIGdlbmVyYXRvciwgc3RhdGUsIHNlbnRWYWx1ZSwgcmVzdW1lTW9kZSwgZ2VuZXJh
dG9yLkBnZW5lcmF0b3JGcmFtZSk7CiAgICAgICAgICAgICBpZiAoZ2VuZXJhdG9yLkBnZW5lcmF0
b3JTdGF0ZSA9PT0gQEdlbmVyYXRvclN0YXRlRXhlY3V0aW5nKSB7CiAgICAgICAgICAgICAgICAg
Z2VuZXJhdG9yLkBnZW5lcmF0b3JTdGF0ZSA9IEBHZW5lcmF0b3JTdGF0ZUNvbXBsZXRlZDsKICAg
ICAgICAgICAgICAgICBkb25lID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5jcHAKaW5kZXggN2YxN2MwZWYxMGI0MzNm
YWM4ZjU4Y2IzYjljYTVkNGQwMTViYmEwOC4uNjI1NGY5MDZiMmJkOTA0ZDFkOTNmYTkwMjRjYzkz
YTkwNzQ2OGI1ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlQmFzaWNCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlQmFzaWNCbG9jay5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJCeXRl
Y29kZUJhc2ljQmxvY2suaCIKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIklu
dGVycHJldGVySW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJQ
cmVjaXNlSnVtcFRhcmdldHMuaCIKIApAQCAtMTA1LDE1ICsxMDYsMjEgQEAgc3RhdGljIGJvb2wg
aXNKdW1wVGFyZ2V0KE9wY29kZUlEIG9wY29kZUlELCBjb25zdCBWZWN0b3I8dW5zaWduZWQsIDMy
PiYganVtcFRhcmcKICAgICByZXR1cm4gc3RkOjpiaW5hcnlfc2VhcmNoKGp1bXBUYXJnZXRzLmJl
Z2luKCksIGp1bXBUYXJnZXRzLmVuZCgpLCBieXRlY29kZU9mZnNldCk7CiB9CiAKLXN0YXRpYyB2
b2lkIGxpbmtCbG9ja3MoQnl0ZWNvZGVCYXNpY0Jsb2NrKiBwcmVkZWNlc3NvciwgQnl0ZWNvZGVC
YXNpY0Jsb2NrKiBzdWNjZXNzb3IpCi17Ci0gICAgcHJlZGVjZXNzb3ItPmFkZFN1Y2Nlc3Nvcihz
dWNjZXNzb3IpOwotfQotCi12b2lkIGNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzKENvZGVCbG9j
ayogY29kZUJsb2NrLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+
JiBiYXNpY0Jsb2NrcykKK3RlbXBsYXRlPHR5cGVuYW1lIEJsb2NrLCB0eXBlbmFtZSBJbnN0cnVj
dGlvbj4KK3ZvaWQgQnl0ZWNvZGVCYXNpY0Jsb2NrOjpjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2Nr
c0ludGVybmFsKEJsb2NrKiBjb2RlQmxvY2ssIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdp
biwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCwgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRl
Y29kZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9ja3MpCiB7CiAgICAgVmVjdG9yPHVuc2lnbmVkLCAz
Mj4ganVtcFRhcmdldHM7Ci0gICAgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhjb2RlQmxvY2ss
IGp1bXBUYXJnZXRzKTsKKyAgICBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKGNvZGVCbG9jaywg
aW5zdHJ1Y3Rpb25zQmVnaW4sIGluc3RydWN0aW9uQ291bnQsIGp1bXBUYXJnZXRzKTsKKworICAg
IGF1dG8gYXBwZW5kQmxvY2sgPSBbJl0gKHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxv
Y2s+JiYgYmxvY2spIHsKKyAgICAgICAgYmxvY2stPm1faW5kZXggPSBiYXNpY0Jsb2Nrcy5zaXpl
KCk7CisgICAgICAgIGJhc2ljQmxvY2tzLmFwcGVuZChXVEZNb3ZlKGJsb2NrKSk7CisgICAgfTsK
KworICAgIGF1dG8gbGlua0Jsb2NrcyA9IFsmXSAoQnl0ZWNvZGVCYXNpY0Jsb2NrKiBwcmVkZWNl
c3NvciwgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBzdWNjZXNzb3IpIHsKKyAgICAgICAgcHJlZGVjZXNz
b3ItPmFkZFN1Y2Nlc3NvcihzdWNjZXNzb3IpOworICAgICAgICBzdWNjZXNzb3ItPmFkZFByZWRl
Y2Vzc29yKHByZWRlY2Vzc29yKTsKKyAgICB9OwogCiAgICAgLy8gQ3JlYXRlIHRoZSBlbnRyeSBh
bmQgZXhpdCBiYXNpYyBibG9ja3MuCiAgICAgYmFzaWNCbG9ja3MucmVzZXJ2ZUNhcGFjaXR5KGp1
bXBUYXJnZXRzLnNpemUoKSArIDIpOwpAQCAtMTIyLDE5ICsxMjksMTcgQEAgdm9pZCBjb21wdXRl
Qnl0ZWNvZGVCYXNpY0Jsb2NrcyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgVmVjdG9yPHN0ZDo6dW5p
cXVlX3B0cjxCeXQKICAgICBhdXRvIGZpcnN0QmxvY2sgPSBzdGQ6Om1ha2VfdW5pcXVlPEJ5dGVj
b2RlQmFzaWNCbG9jaz4oMCwgMCk7CiAgICAgbGlua0Jsb2NrcyhlbnRyeS5nZXQoKSwgZmlyc3RC
bG9jay5nZXQoKSk7CiAKLSAgICBiYXNpY0Jsb2Nrcy5hcHBlbmQoV1RGTW92ZShlbnRyeSkpOwor
ICAgIGFwcGVuZEJsb2NrKFdURk1vdmUoZW50cnkpKTsKICAgICBCeXRlY29kZUJhc2ljQmxvY2sq
IGN1cnJlbnQgPSBmaXJzdEJsb2NrLmdldCgpOwotICAgIGJhc2ljQmxvY2tzLmFwcGVuZChXVEZN
b3ZlKGZpcnN0QmxvY2spKTsKKyAgICBhcHBlbmRCbG9jayhXVEZNb3ZlKGZpcnN0QmxvY2spKTsK
IAogICAgIGF1dG8gZXhpdCA9IHN0ZDo6bWFrZV91bmlxdWU8Qnl0ZWNvZGVCYXNpY0Jsb2NrPihC
eXRlY29kZUJhc2ljQmxvY2s6OkV4aXRCbG9jayk7CiAKICAgICBib29sIG5leHRJbnN0cnVjdGlv
bklzTGVhZGVyID0gZmFsc2U7CiAKICAgICBJbnRlcnByZXRlciogaW50ZXJwcmV0ZXIgPSBjb2Rl
QmxvY2stPnZtKCktPmludGVycHJldGVyOwotICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNC
ZWdpbiA9IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsKLSAgICB1bnNpZ25lZCBp
bnN0cnVjdGlvbkNvdW50ID0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5zaXplKCk7CiAgICAg
Zm9yICh1bnNpZ25lZCBieXRlY29kZU9mZnNldCA9IDA7IGJ5dGVjb2RlT2Zmc2V0IDwgaW5zdHJ1
Y3Rpb25Db3VudDspIHsKLSAgICAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnRlcnByZXRlci0+
Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25zQmVnaW5bYnl0ZWNvZGVPZmZzZXRdLnUub3Bjb2RlKTsK
KyAgICAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoaW5z
dHJ1Y3Rpb25zQmVnaW5bYnl0ZWNvZGVPZmZzZXRdKTsKICAgICAgICAgdW5zaWduZWQgb3Bjb2Rl
TGVuZ3RoID0gb3Bjb2RlTGVuZ3Roc1tvcGNvZGVJRF07CiAKICAgICAgICAgYm9vbCBjcmVhdGVk
QmxvY2sgPSBmYWxzZTsKQEAgLTE0Miw3ICsxNDcsNyBAQCB2b2lkIGNvbXB1dGVCeXRlY29kZUJh
c2ljQmxvY2tzKENvZGVCbG9jayogY29kZUJsb2NrLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5
dAogICAgICAgICBpZiAoaXNKdW1wVGFyZ2V0KG9wY29kZUlELCBqdW1wVGFyZ2V0cywgYnl0ZWNv
ZGVPZmZzZXQpIHx8IG5leHRJbnN0cnVjdGlvbklzTGVhZGVyKSB7CiAgICAgICAgICAgICBhdXRv
IG5ld0Jsb2NrID0gc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZUJhc2ljQmxvY2s+KGJ5dGVjb2Rl
T2Zmc2V0LCBvcGNvZGVMZW5ndGgpOwogICAgICAgICAgICAgY3VycmVudCA9IG5ld0Jsb2NrLmdl
dCgpOwotICAgICAgICAgICAgYmFzaWNCbG9ja3MuYXBwZW5kKFdURk1vdmUobmV3QmxvY2spKTsK
KyAgICAgICAgICAgIGFwcGVuZEJsb2NrKFdURk1vdmUobmV3QmxvY2spKTsKICAgICAgICAgICAg
IGNyZWF0ZWRCbG9jayA9IHRydWU7CiAgICAgICAgICAgICBuZXh0SW5zdHJ1Y3Rpb25Jc0xlYWRl
ciA9IGZhbHNlOwogICAgICAgICAgICAgYnl0ZWNvZGVPZmZzZXQgKz0gb3Bjb2RlTGVuZ3RoOwpA
QCAtMTY5LDggKzE3NCw3IEBAIHZvaWQgY29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MoQ29kZUJs
b2NrKiBjb2RlQmxvY2ssIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0CiAKICAgICAgICAgYm9v
bCBmYWxsc1Rocm91Z2ggPSB0cnVlOyAKICAgICAgICAgZm9yICh1bnNpZ25lZCBieXRlY29kZU9m
ZnNldCA9IGJsb2NrLT5sZWFkZXJCeXRlY29kZU9mZnNldCgpOyBieXRlY29kZU9mZnNldCA8IGJs
b2NrLT5sZWFkZXJCeXRlY29kZU9mZnNldCgpICsgYmxvY2stPnRvdGFsQnl0ZWNvZGVMZW5ndGgo
KTspIHsKLSAgICAgICAgICAgIGNvbnN0IEluc3RydWN0aW9uJiBjdXJyZW50SW5zdHJ1Y3Rpb24g
PSBpbnN0cnVjdGlvbnNCZWdpbltieXRlY29kZU9mZnNldF07Ci0gICAgICAgICAgICBPcGNvZGVJ
RCBvcGNvZGVJRCA9IGludGVycHJldGVyLT5nZXRPcGNvZGVJRChjdXJyZW50SW5zdHJ1Y3Rpb24u
dS5vcGNvZGUpOworICAgICAgICAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnRlcnByZXRlci0+
Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25zQmVnaW5bYnl0ZWNvZGVPZmZzZXRdKTsKICAgICAgICAg
ICAgIHVuc2lnbmVkIG9wY29kZUxlbmd0aCA9IG9wY29kZUxlbmd0aHNbb3Bjb2RlSURdOwogICAg
ICAgICAgICAgLy8gSWYgd2UgZm91bmQgYSB0ZXJtaW5hbCBieXRlY29kZSwgbGluayB0byB0aGUg
ZXhpdCBibG9jay4KICAgICAgICAgICAgIGlmIChpc1Rlcm1pbmFsKG9wY29kZUlEKSkgewpAQCAt
MTg1LDcgKzE4OSw3IEBAIHZvaWQgY29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MoQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0CiAgICAgICAgICAgICAvLyBi
bG9jayBiZWNhdXNlIHRoZSBmaW5hbGx5IGJsb2NrIHdpbGwgY3JlYXRlIGl0cyBvd24gY2F0Y2gs
IHdoaWNoIHdpbGwgZ2VuZXJhdGUgYSBIYW5kbGVySW5mby4KICAgICAgICAgICAgIGlmIChpc1Ro
cm93KG9wY29kZUlEKSkgewogICAgICAgICAgICAgICAgIEFTU0VSVChieXRlY29kZU9mZnNldCAr
IG9wY29kZUxlbmd0aCA9PSBibG9jay0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKSArIGJsb2NrLT50
b3RhbEJ5dGVjb2RlTGVuZ3RoKCkpOwotICAgICAgICAgICAgICAgIEhhbmRsZXJJbmZvKiBoYW5k
bGVyID0gY29kZUJsb2NrLT5oYW5kbGVyRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQp
OworICAgICAgICAgICAgICAgIGF1dG8qIGhhbmRsZXIgPSBjb2RlQmxvY2stPmhhbmRsZXJGb3JC
eXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCk7CiAgICAgICAgICAgICAgICAgZmFsbHNUaHJv
dWdoID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgaWYgKCFoYW5kbGVyKSB7CiAgICAgICAgICAg
ICAgICAgICAgIGxpbmtCbG9ja3MoYmxvY2ssIGV4aXQuZ2V0KCkpOwpAQCAtMjA1LDcgKzIwOSw3
IEBAIHZvaWQgY29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MoQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0CiAgICAgICAgICAgICBpZiAoaXNCcmFuY2gob3Bj
b2RlSUQpKSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKGJ5dGVjb2RlT2Zmc2V0ICsgb3Bjb2Rl
TGVuZ3RoID09IGJsb2NrLT5sZWFkZXJCeXRlY29kZU9mZnNldCgpICsgYmxvY2stPnRvdGFsQnl0
ZWNvZGVMZW5ndGgoKSk7CiAgICAgICAgICAgICAgICAgVmVjdG9yPHVuc2lnbmVkLCAxPiBieXRl
Y29kZU9mZnNldHNKdW1wZWRUbzsKLSAgICAgICAgICAgICAgICBmaW5kSnVtcFRhcmdldHNGb3JC
eXRlY29kZU9mZnNldChjb2RlQmxvY2ssIGJ5dGVjb2RlT2Zmc2V0LCBieXRlY29kZU9mZnNldHNK
dW1wZWRUbyk7CisgICAgICAgICAgICAgICAgZmluZEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZz
ZXQoY29kZUJsb2NrLCBpbnN0cnVjdGlvbnNCZWdpbiwgYnl0ZWNvZGVPZmZzZXQsIGJ5dGVjb2Rl
T2Zmc2V0c0p1bXBlZFRvKTsKIAogICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBiYXNpY0Jsb2Nrcy5zaXplKCk7IGkrKykgewogICAgICAgICAgICAgICAgICAgICBCeXRl
Y29kZUJhc2ljQmxvY2sqIG90aGVyQmxvY2sgPSBiYXNpY0Jsb2Nrc1tpXS5nZXQoKTsKQEAgLTIy
OSwxMCArMjMzLDIwIEBAIHZvaWQgY29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MoQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0CiAgICAgICAgIH0KICAgICB9
CiAKLSAgICBiYXNpY0Jsb2Nrcy5hcHBlbmQoV1RGTW92ZShleGl0KSk7CisgICAgYXBwZW5kQmxv
Y2soV1RGTW92ZShleGl0KSk7CiAgICAgCiAgICAgZm9yIChhdXRvJiBiYXNpY0Jsb2NrIDogYmFz
aWNCbG9ja3MpCiAgICAgICAgIGJhc2ljQmxvY2stPnNocmlua1RvRml0KCk7CiB9CiAKK3ZvaWQg
Qnl0ZWNvZGVCYXNpY0Jsb2NrOjpjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2NrcyhDb2RlQmxvY2sq
IGNvZGVCbG9jaywgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBpbnN0
cnVjdGlvbkNvdW50LCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+
JiBiYXNpY0Jsb2NrcykKK3sKKyAgICBjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2Nrc0ludGVybmFs
KGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb25zQmVnaW4sIGluc3RydWN0aW9uQ291bnQsIGJhc2ljQmxv
Y2tzKTsKK30KKwordm9pZCBCeXRlY29kZUJhc2ljQmxvY2s6OmNvbXB1dGVCeXRlY29kZUJhc2lj
QmxvY2tzKFVubGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFVubGlua2VkSW5zdHJ1Y3Rpb24q
IGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50LCBWZWN0b3I8c3Rk
Ojp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+JiBiYXNpY0Jsb2NrcykKK3sKKyAgICBC
eXRlY29kZUJhc2ljQmxvY2s6OmNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzSW50ZXJuYWwoY29k
ZUJsb2NrLCBpbnN0cnVjdGlvbnNCZWdpbiwgaW5zdHJ1Y3Rpb25Db3VudCwgYmFzaWNCbG9ja3Mp
OworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suaAppbmRleCBiZDdkM2FlOWJhMzQzZTFiMDcx
NzllOThmMWVlODlkYTY1YmE3ZTIwLi4xMTliZTdjNjYyMzBjOThlYTlkN2ZiMjgwOGNiZjI5NGRj
MWEyYTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVCYXNpY0Jsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVj
b2RlQmFzaWNCbG9jay5oCkBAIC0zNSw2ICszNSw5IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogY2xh
c3MgQ29kZUJsb2NrOworY2xhc3MgVW5saW5rZWRDb2RlQmxvY2s7CitzdHJ1Y3QgSW5zdHJ1Y3Rp
b247CitzdHJ1Y3QgVW5saW5rZWRJbnN0cnVjdGlvbjsKIAogY2xhc3MgQnl0ZWNvZGVCYXNpY0Js
b2NrIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTUwLDI4ICs1MywzOSBAQCBj
bGFzcyBCeXRlY29kZUJhc2ljQmxvY2sgewogICAgIHVuc2lnbmVkIGxlYWRlckJ5dGVjb2RlT2Zm
c2V0KCkgeyByZXR1cm4gbV9sZWFkZXJCeXRlY29kZU9mZnNldDsgfQogICAgIHVuc2lnbmVkIHRv
dGFsQnl0ZWNvZGVMZW5ndGgoKSB7IHJldHVybiBtX3RvdGFsQnl0ZWNvZGVMZW5ndGg7IH0KIAot
ICAgIFZlY3Rvcjx1bnNpZ25lZD4mIGJ5dGVjb2RlT2Zmc2V0cygpIHsgcmV0dXJuIG1fYnl0ZWNv
ZGVPZmZzZXRzOyB9Ci0gICAgdm9pZCBhZGRCeXRlY29kZUxlbmd0aCh1bnNpZ25lZCk7CisgICAg
Y29uc3QgVmVjdG9yPHVuc2lnbmVkPiYgYnl0ZWNvZGVPZmZzZXRzKCkgY29uc3QgeyByZXR1cm4g
bV9ieXRlY29kZU9mZnNldHM7IH0KIAotICAgIFZlY3RvcjxCeXRlY29kZUJhc2ljQmxvY2sqPiYg
c3VjY2Vzc29ycygpIHsgcmV0dXJuIG1fc3VjY2Vzc29yczsgfQotICAgIHZvaWQgYWRkU3VjY2Vz
c29yKEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2spIHsgbV9zdWNjZXNzb3JzLmFwcGVuZChibG9j
ayk7IH0KKyAgICBjb25zdCBWZWN0b3I8Qnl0ZWNvZGVCYXNpY0Jsb2NrKj4mIHN1Y2Nlc3NvcnMo
KSBjb25zdCB7IHJldHVybiBtX3N1Y2Nlc3NvcnM7IH0KKyAgICBjb25zdCBWZWN0b3I8Qnl0ZWNv
ZGVCYXNpY0Jsb2NrKj4mIHByZWRlY2Vzc29ycygpIGNvbnN0IHsgcmV0dXJuIG1fcHJlZGVjZXNz
b3JzOyB9CiAKICAgICBGYXN0Qml0VmVjdG9yJiBpbigpIHsgcmV0dXJuIG1faW47IH0KICAgICBG
YXN0Qml0VmVjdG9yJiBvdXQoKSB7IHJldHVybiBtX291dDsgfQogCisgICAgdW5zaWduZWQgaW5k
ZXgoKSBjb25zdCB7IHJldHVybiBtX2luZGV4OyB9CisKKyAgICBzdGF0aWMgdm9pZCBjb21wdXRl
Qnl0ZWNvZGVCYXNpY0Jsb2NrcyhDb2RlQmxvY2sqLCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25z
QmVnaW4sIHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQsIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8
Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mKTsKKyAgICBzdGF0aWMgdm9pZCBjb21wdXRlQnl0ZWNvZGVC
YXNpY0Jsb2NrcyhVbmxpbmtlZENvZGVCbG9jayosIFVubGlua2VkSW5zdHJ1Y3Rpb24qIGluc3Ry
dWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50LCBWZWN0b3I8c3RkOjp1bmlx
dWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+Jik7CisKIHByaXZhdGU6CisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgQmxvY2ssIHR5cGVuYW1lIEluc3RydWN0aW9uPiBzdGF0aWMgdm9pZCBjb21wdXRl
Qnl0ZWNvZGVCYXNpY0Jsb2Nrc0ludGVybmFsKEJsb2NrKiBjb2RlQmxvY2ssIEluc3RydWN0aW9u
KiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCwgVmVjdG9yPHN0
ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9ja3MpOworCisgICAg
dm9pZCBhZGRTdWNjZXNzb3IoQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaykgeyBtX3N1Y2Nlc3Nv
cnMuYXBwZW5kKGJsb2NrKTsgfQorICAgIHZvaWQgYWRkUHJlZGVjZXNzb3IoQnl0ZWNvZGVCYXNp
Y0Jsb2NrKiBibG9jaykgeyBtX3ByZWRlY2Vzc29ycy5hcHBlbmQoYmxvY2spOyB9CisKKyAgICB2
b2lkIGFkZEJ5dGVjb2RlTGVuZ3RoKHVuc2lnbmVkKTsKKwogICAgIHVuc2lnbmVkIG1fbGVhZGVy
Qnl0ZWNvZGVPZmZzZXQ7CiAgICAgdW5zaWduZWQgbV90b3RhbEJ5dGVjb2RlTGVuZ3RoOworICAg
IHVuc2lnbmVkIG1faW5kZXg7CiAKICAgICBWZWN0b3I8dW5zaWduZWQ+IG1fYnl0ZWNvZGVPZmZz
ZXRzOwogICAgIFZlY3RvcjxCeXRlY29kZUJhc2ljQmxvY2sqPiBtX3N1Y2Nlc3NvcnM7CisgICAg
VmVjdG9yPEJ5dGVjb2RlQmFzaWNCbG9jayo+IG1fcHJlZGVjZXNzb3JzOwogCiAgICAgRmFzdEJp
dFZlY3RvciBtX2luOwogICAgIEZhc3RCaXRWZWN0b3IgbV9vdXQ7CiB9OwogCi12b2lkIGNvbXB1
dGVCeXRlY29kZUJhc2ljQmxvY2tzKENvZGVCbG9jayosIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8
Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mKTsKLQogaW5saW5lIEJ5dGVjb2RlQmFzaWNCbG9jazo6Qnl0
ZWNvZGVCYXNpY0Jsb2NrKHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBsZW5ndGgpCiAgICAgOiBt
X2xlYWRlckJ5dGVjb2RlT2Zmc2V0KHN0YXJ0KQogICAgICwgbV90b3RhbEJ5dGVjb2RlTGVuZ3Ro
KGxlbmd0aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgxM2U1YzNhMGQx
Y2UyMGEyYWEwZDJkNGQxZjg1ZjcwMWM5NzI1OTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwCkBA
IC0wLDAgKzEsNjYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IFl1c3VrZSBTdXp1a2kg
PHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIkJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmgiCisKKyNpbmNsdWRlICJCeXRl
Y29kZUxpdmVuZXNzQW5hbHlzaXNJbmxpbmVzLmgiCisjaW5jbHVkZSAiQnl0ZWNvZGVNb2RpZmlj
YXRpb25TZXQuaCIKKyNpbmNsdWRlICJCeXRlY29kZVVzZURlZi5oIgorI2luY2x1ZGUgIklkZW50
aWZpZXJJbmxpbmVzLmgiCisjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKKyNpbmNsdWRlICJKU0NK
U1ZhbHVlSW5saW5lcy5oIgorI2luY2x1ZGUgIlN0cm9uZ0lubGluZXMuaCIKKyNpbmNsdWRlICJV
bmxpbmtlZENvZGVCbG9jay5oIgorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgorCituYW1lc3Bh
Y2UgSlNDIHsKKworY2xhc3MgQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24geworcHVibGljOgor
ICAgIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uKFVubGlua2VkQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssIFVubGlua2VkQ29kZUJsb2NrOjpVbnBhY2tlZEluc3RydWN0aW9ucyYgaW5zdHJ1Y3Rpb25z
LCBTeW1ib2xUYWJsZSogZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZSwgaW50IGdlbmVyYXRvckZy
YW1lU3ltYm9sVGFibGVJbmRleCkKKyAgICAgICAgOiBtX2dyYXBoKGNvZGVCbG9jaywgaW5zdHJ1
Y3Rpb25zKQorICAgICAgICAsIG1faW5zZXJ0aW9uU2V0KG1fZ3JhcGgpCisgICAgICAgICwgbV9n
ZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlKCpjb2RlQmxvY2stPnZtKCksIGdlbmVyYXRvckZyYW1l
U3ltYm9sVGFibGUpCisgICAgICAgICwgbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlSW5kZXgo
Z2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZUluZGV4KQorICAgIHsKKyAgICAgICAgbV9tZXJnZUJs
b2Nrcy5yZXNpemUobV9ncmFwaC5iYXNpY0Jsb2NrcygpLnNpemUoKSk7CisgICAgICAgIG1fc2F2
ZUJsb2Nrcy5yZXNpemUobV9ncmFwaC5iYXNpY0Jsb2NrcygpLnNpemUoKSk7CisKKyAgICAgICAg
Zm9yIChzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiYgYmxvY2sgOiBtX2dyYXBo
LmJhc2ljQmxvY2tzKCkpIHsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgYnl0ZWNvZGVPZmZz
ZXQgOiBibG9jay0+Ynl0ZWNvZGVPZmZzZXRzKCkpIHsKKyAgICAgICAgICAgICAgICBjb25zdCBV
bmxpbmtlZEluc3RydWN0aW9uKiBwYyA9ICZtX2dyYXBoLmluc3RydWN0aW9ucygpW2J5dGVjb2Rl
T2Zmc2V0XTsKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKHBjLT51Lm9wY29kZSkgeworICAgICAg
ICAgICAgICAgIGNhc2Ugb3Bfc2F2ZTogeworICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBs
aXZlQ2FsbGVlTG9jYWxzSW5kZXggPSBwY1syXS51LmluZGV4OworICAgICAgICAgICAgICAgICAg
ICBpbnQgb2Zmc2V0ID0gcGNbM10udS5vcGVyYW5kOworICAgICAgICAgICAgICAgICAgICBpZiAo
bGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID49IG1feWllbGRzLnNpemUoKSkKKyAgICAgICAgICAgICAg
ICAgICAgICAgIG1feWllbGRzLnJlc2l6ZShsaXZlQ2FsbGVlTG9jYWxzSW5kZXggKyAxKTsKKyAg
ICAgICAgICAgICAgICAgICAgbV95aWVsZHNbbGl2ZUNhbGxlZUxvY2Fsc0luZGV4XS5zYXZlUG9p
bnQgPSBieXRlY29kZU9mZnNldDsKKyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbWVyZ2VQ
b2ludCA9IGJ5dGVjb2RlT2Zmc2V0ICsgb2Zmc2V0OworICAgICAgICAgICAgICAgICAgICBtX3lp
ZWxkc1tsaXZlQ2FsbGVlTG9jYWxzSW5kZXhdLm1lcmdlUG9pbnQgPSBtZXJnZVBvaW50OworICAg
ICAgICAgICAgICAgICAgICBtX21lcmdlQmxvY2tzLnNldChtX2dyYXBoLmZpbmRCYXNpY0Jsb2Nr
Rm9yQnl0ZWNvZGVPZmZzZXQobWVyZ2VQb2ludCktPmluZGV4KCkpOworICAgICAgICAgICAgICAg
ICAgICBtX3NhdmVCbG9ja3Muc2V0KGJsb2NrLT5pbmRleCgpKTsKKyAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgY2FzZSBvcF9y
ZXN1bWU6IHsKKyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0lu
ZGV4ID0gcGNbMl0udS5pbmRleDsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxpdmVDYWxsZWVM
b2NhbHNJbmRleCA+PSBtX3lpZWxkcy5zaXplKCkpCisgICAgICAgICAgICAgICAgICAgICAgICBt
X3lpZWxkcy5yZXNpemUobGl2ZUNhbGxlZUxvY2Fsc0luZGV4ICsgMSk7CisgICAgICAgICAgICAg
ICAgICAgIG1feWllbGRzW2xpdmVDYWxsZWVMb2NhbHNJbmRleF0ucmVzdW1lUG9pbnQgPSBieXRl
Y29kZU9mZnNldDsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAg
fQorCisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisg
ICAgYm9vbCBpc01lcmdlQmxvY2soQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaykKKyAgICB7Cisg
ICAgICAgIHJldHVybiBtX21lcmdlQmxvY2tzLmdldChibG9jay0+aW5kZXgoKSk7CisgICAgfQor
CisgICAgYm9vbCBpc1NhdmVCbG9jayhCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIG1fc2F2ZUJsb2Nrcy5nZXQoYmxvY2stPmluZGV4KCkpOworICAgIH0K
KworICAgIHN0cnVjdCBTdG9yYWdlIHsKKyAgICAgICAgSWRlbnRpZmllciBpZGVudGlmaWVyOwor
ICAgICAgICB1bnNpZ25lZCBpZGVudGlmaWVySW5kZXg7CisgICAgICAgIFNjb3BlT2Zmc2V0IHNj
b3BlT2Zmc2V0OworICAgIH07CisKKyAgICB2b2lkIHJ1bigpOworCisgICAgQnl0ZWNvZGVHcmFw
aDxVbmxpbmtlZENvZGVCbG9jaz4mIGdyYXBoKCkgeyByZXR1cm4gbV9ncmFwaDsgfQorCitwcml2
YXRlOgorICAgIFN0b3JhZ2Ugc3RvcmFnZUZvckdlbmVyYXRvckxvY2FsKHVuc2lnbmVkIGluZGV4
KQorICAgIHsKKyAgICAgICAgLy8gV2UgYXNzaWduIGEgc3ltYm9sIHRvIGEgcmVnaXN0ZXIuIFRo
ZXJlIGlzIG9uZS1vbi1vbmUgY29ycmVzcG9uZGluZyBiZXR3ZWVuIGEgcmVnaXN0ZXIgYW5kIGEg
c3ltYm9sLgorICAgICAgICAvLyBCeSBkb2luZyBzbywgd2UgYWxsb2NhdGUgdGhlIHNwZWNpZmlj
IHN0b3JhZ2UgdG8gc2F2ZSB0aGUgZ2l2ZW4gcmVnaXN0ZXIuCisgICAgICAgIC8vIFRoaXMgYWxs
b3cgdXMgbm90IHRvIHNhdmUgYWxsIHRoZSBsaXZlIHJlZ2lzdGVycyBldmVuIGlmIHRoZSByZWdp
c3RlcnMgYXJlIG5vdCBvdmVyd3JpdHRlbiBmcm9tIHRoZSBwcmV2aW91cyByZXN1bWluZyB0aW1l
LgorICAgICAgICAvLyBJdCBtZWFucyB0aGF0LCB0aGUgcmVnaXN0ZXIgY2FuIGJlIHJldHJpZXZl
ZCBldmVuIGlmIHRoZSBpbW1lZGlhdGUgcHJldmlvdXMgb3Bfc2F2ZSBkb2VzIG5vdCBzYXZlIGl0
LgorCisgICAgICAgIGlmIChtX3N0b3JhZ2VzLnNpemUoKSA8PSBpbmRleCkKKyAgICAgICAgICAg
IG1fc3RvcmFnZXMucmVzaXplKGluZGV4ICsgMSk7CisgICAgICAgIGlmIChPcHRpb25hbDxTdG9y
YWdlPiBzdG9yYWdlID0gbV9zdG9yYWdlc1tpbmRleF0pCisgICAgICAgICAgICByZXR1cm4gKnN0
b3JhZ2U7CisKKyAgICAgICAgVW5saW5rZWRDb2RlQmxvY2sqIGNvZGVCbG9jayA9IG1fZ3JhcGgu
Y29kZUJsb2NrKCk7CisgICAgICAgIElkZW50aWZpZXIgaWRlbnRpZmllciA9IElkZW50aWZpZXI6
OmZyb21VaWQoUHJpdmF0ZU5hbWUoKSk7CisgICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXJJbmRl
eCA9IGNvZGVCbG9jay0+bnVtYmVyT2ZJZGVudGlmaWVycygpOworICAgICAgICBjb2RlQmxvY2st
PmFkZElkZW50aWZpZXIoaWRlbnRpZmllcik7CisgICAgICAgIFNjb3BlT2Zmc2V0IHNjb3BlT2Zm
c2V0ID0gbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlLT50YWtlTmV4dFNjb3BlT2Zmc2V0KE5v
TG9ja2luZ05lY2Vzc2FyeSk7CisgICAgICAgIG1fZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZS0+
c2V0KE5vTG9ja2luZ05lY2Vzc2FyeSwgaWRlbnRpZmllci5pbXBsKCksIFN5bWJvbFRhYmxlRW50
cnkoVmFyT2Zmc2V0KHNjb3BlT2Zmc2V0KSkpOworCisgICAgICAgIFN0b3JhZ2Ugc3RvcmFnZSA9
IHsKKyAgICAgICAgICAgIGlkZW50aWZpZXIsCisgICAgICAgICAgICBpZGVudGlmaWVySW5kZXgs
CisgICAgICAgICAgICBzY29wZU9mZnNldAorICAgICAgICB9OworICAgICAgICBtX3N0b3JhZ2Vz
W2luZGV4XSA9IHN0b3JhZ2U7CisgICAgICAgIHJldHVybiBzdG9yYWdlOworICAgIH0KKworICAg
IHN0cnVjdCBZaWVsZERhdGEgeworICAgICAgICBzaXplX3Qgc2F2ZVBvaW50OworICAgICAgICBz
aXplX3QgbWVyZ2VQb2ludDsKKyAgICAgICAgc2l6ZV90IHJlc3VtZVBvaW50OworICAgICAgICBG
YXN0Qml0VmVjdG9yIGxpdmVuZXNzOworICAgICAgICBGYXN0Qml0VmVjdG9yIHJlc3VtZWQ7Cisg
ICAgICAgIEZhc3RCaXRWZWN0b3Igc2F2ZWQ7CisgICAgfTsKKworICAgIEJ5dGVjb2RlR3JhcGg8
VW5saW5rZWRDb2RlQmxvY2s+IG1fZ3JhcGg7CisgICAgQnl0ZWNvZGVNb2RpZmljYXRpb25TZXQg
bV9pbnNlcnRpb25TZXQ7CisgICAgVmVjdG9yPE9wdGlvbmFsPFN0b3JhZ2U+PiBtX3N0b3JhZ2Vz
OworICAgIFZlY3RvcjxZaWVsZERhdGE+IG1feWllbGRzOworICAgIEZhc3RCaXRWZWN0b3IgbV9t
ZXJnZUJsb2NrczsKKyAgICBGYXN0Qml0VmVjdG9yIG1fc2F2ZUJsb2NrczsKKyAgICBTdHJvbmc8
U3ltYm9sVGFibGU+IG1fZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZTsKKyAgICBpbnQgbV9nZW5l
cmF0b3JGcmFtZVN5bWJvbFRhYmxlSW5kZXg7Cit9OworCitjbGFzcyBHZW5lcmF0b3JMaXZlbmVz
c0FuYWx5c2lzIHsKK3B1YmxpYzoKKyAgICBHZW5lcmF0b3JMaXZlbmVzc0FuYWx5c2lzKEJ5dGVj
b2RlR2VuZXJhdG9yaWZpY2F0aW9uJiBwYXNzKQorICAgICAgICA6IG1fZ2VuZXJhdG9yaWZpY2F0
aW9uKHBhc3MpCisgICAgeworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+
CisgICAgdm9pZCBjb21wdXRlTGl2ZW5lc3NEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoVW5saW5rZWRD
b2RlQmxvY2sqIGNvZGVCbG9jaywgT3Bjb2RlSUQgb3Bjb2RlSUQsIFVubGlua2VkSW5zdHJ1Y3Rp
b24qIGluc3RydWN0aW9uLCBGYXN0Qml0VmVjdG9yJiBvdXQsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0
b3IpCisgICAgeworICAgICAgICBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9j
aywgb3Bjb2RlSUQsIGluc3RydWN0aW9uLCBmdW5jdG9yKTsKKworICAgICAgICBzd2l0Y2ggKG9w
Y29kZUlEKSB7CisgICAgICAgIGNhc2Ugb3Bfc2F2ZToKKyAgICAgICAgICAgIHJldHVybjsKKwor
ICAgICAgICBjYXNlIG9wX3Jlc3VtZTogeworICAgICAgICAgICAgLy8gcmVzdW1lIGRlZmluZXMg
YWxsIHRoZSByZWdpc3RlcnMuCisgICAgICAgICAgICBvdXQuY2xlYXJBbGwoKTsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9y
PgorICAgIHZvaWQgY29tcHV0ZUxpdmVuZXNzVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KFVubGlua2Vk
Q29kZUJsb2NrKiBjb2RlQmxvY2ssIE9wY29kZUlEIG9wY29kZUlELCBVbmxpbmtlZEluc3RydWN0
aW9uKiBpbnN0cnVjdGlvbiwgRmFzdEJpdFZlY3RvciYsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3Ip
CisgICAgeworICAgICAgICBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9jaywg
b3Bjb2RlSUQsIGluc3RydWN0aW9uLCBmdW5jdG9yKTsKKworICAgICAgICBzd2l0Y2ggKG9wY29k
ZUlEKSB7CisgICAgICAgIGNhc2Ugb3Bfc2F2ZToKKyAgICAgICAgY2FzZSBvcF9yZXN1bWU6IHsK
KyAgICAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGlu
c3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAg
fQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVXNlRnVuY3RvciwgdHlwZW5hbWUgRGVmRnVuY3Rv
cj4KKyAgICB2b2lkIHN0ZXBPdmVySW5zdHJ1Y3Rpb25Gb3JMaXZlbmVzcyh1bnNpZ25lZCBieXRl
Y29kZU9mZnNldCwgRmFzdEJpdFZlY3RvciYgb3V0LCBjb25zdCBVc2VGdW5jdG9yJiB1c2UsIGNv
bnN0IERlZkZ1bmN0b3ImIGRlZikKKyAgICB7CisgICAgICAgIEJ5dGVjb2RlR3JhcGg8VW5saW5r
ZWRDb2RlQmxvY2s+JiBncmFwaCA9IG1fZ2VuZXJhdG9yaWZpY2F0aW9uLmdyYXBoKCk7CisgICAg
ICAgIGF1dG8mIGluc3RydWN0aW9ucyA9IGdyYXBoLmluc3RydWN0aW9ucygpOworICAgICAgICBV
bmxpbmtlZEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9ICZpbnN0cnVjdGlvbnNbYnl0ZWNvZGVP
ZmZzZXRdOworICAgICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGluc3RydWN0aW9uLT51Lm9wY29k
ZTsKKyAgICAgICAgVW5saW5rZWRDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGdyYXBoLmNvZGVCbG9j
aygpOworCisgICAgICAgIGNvbXB1dGVMaXZlbmVzc0RlZnNGb3JCeXRlY29kZU9mZnNldCgKKyAg
ICAgICAgICAgIGNvZGVCbG9jaywgb3Bjb2RlSUQsIGluc3RydWN0aW9uLCBvdXQsCisgICAgICAg
ICAgICBbJl0gKFVubGlua2VkQ29kZUJsb2NrKiwgVW5saW5rZWRJbnN0cnVjdGlvbiosIE9wY29k
ZUlELCBpbnQgb3BlcmFuZCkgeworICAgICAgICAgICAgICAgIGlmIChpc1ZhbGlkUmVnaXN0ZXJG
b3JMaXZlbmVzcyhvcGVyYW5kKSkKKyAgICAgICAgICAgICAgICAgICAgZGVmKFZpcnR1YWxSZWdp
c3RlcihvcGVyYW5kKS50b0xvY2FsKCkpOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgY29t
cHV0ZUxpdmVuZXNzVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAorICAgICAgICAgICAgY29kZUJsb2Nr
LCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb24sIG91dCwKKyAgICAgICAgICAgIFsmXSAoVW5saW5rZWRD
b2RlQmxvY2sqLCBVbmxpbmtlZEluc3RydWN0aW9uKiwgT3Bjb2RlSUQsIGludCBvcGVyYW5kKSB7
CisgICAgICAgICAgICAgICAgaWYgKGlzVmFsaWRSZWdpc3RlckZvckxpdmVuZXNzKG9wZXJhbmQp
KQorICAgICAgICAgICAgICAgICAgICB1c2UoVmlydHVhbFJlZ2lzdGVyKG9wZXJhbmQpLnRvTG9j
YWwoKSk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAvLyBJZiB3ZSBoYXZlIGFuIGV4Y2Vw
dGlvbiBoYW5kbGVyLCB3ZSB3YW50IHRoZSBsaXZlLWluIHZhcmlhYmxlcyBvZiB0aGUKKyAgICAg
ICAgLy8gZXhjZXB0aW9uIGhhbmRsZXIgYmxvY2sgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIGxpdmUt
aW4gb2YgdGhpcyBwYXJ0aWN1bGFyIGJ5dGVjb2RlLgorICAgICAgICBpZiAoVW5saW5rZWRIYW5k
bGVySW5mbyogaGFuZGxlciA9IGNvZGVCbG9jay0+aGFuZGxlckZvckJ5dGVjb2RlT2Zmc2V0KGJ5
dGVjb2RlT2Zmc2V0KSkgeworICAgICAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBoYW5kbGVy
QmxvY2sgPSBncmFwaC5maW5kQmFzaWNCbG9ja1dpdGhMZWFkZXJPZmZzZXQoaGFuZGxlci0+dGFy
Z2V0KTsKKyAgICAgICAgICAgIEFTU0VSVChoYW5kbGVyQmxvY2spOworICAgICAgICAgICAgaGFu
ZGxlckJsb2NrLT5pbigpLmZvckVhY2hTZXRCaXQodXNlKTsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIHZvaWQgY29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCeXRlY29kZU9mZnNldChCeXRlY29kZUJh
c2ljQmxvY2sqIGJsb2NrLCB1bnNpZ25lZCB0YXJnZXRPZmZzZXQsIEZhc3RCaXRWZWN0b3ImIHJl
c3VsdCkKKyAgICB7CisgICAgICAgIEFTU0VSVCghYmxvY2stPmlzRXhpdEJsb2NrKCkpOworICAg
ICAgICBBU1NFUlQoIWJsb2NrLT5pc0VudHJ5QmxvY2soKSk7CisKKyAgICAgICAgRmFzdEJpdFZl
Y3RvciBvdXQgPSBibG9jay0+b3V0KCk7CisKKyAgICAgICAgZm9yIChpbnQgaSA9IGJsb2NrLT5i
eXRlY29kZU9mZnNldHMoKS5zaXplKCkgLSAxOyBpID49IDA7IGktLSkgeworICAgICAgICAgICAg
dW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQgPSBibG9jay0+Ynl0ZWNvZGVPZmZzZXRzKClbaV07Cisg
ICAgICAgICAgICBpZiAodGFyZ2V0T2Zmc2V0ID4gYnl0ZWNvZGVPZmZzZXQpCisgICAgICAgICAg
ICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIHN0ZXBPdmVySW5zdHJ1Y3Rpb25Gb3JMaXZlbmVz
cygKKyAgICAgICAgICAgICAgICBieXRlY29kZU9mZnNldCwgb3V0LAorICAgICAgICAgICAgICAg
IFsmXSAodW5zaWduZWQgYml0SW5kZXgpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBp
cyB0aGUgdXNlIGZ1bmN0b3IsIHNvIHdlIHNldCB0aGUgYml0LgorICAgICAgICAgICAgICAgICAg
ICBvdXQuc2V0KGJpdEluZGV4KTsKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAg
IFsmXSAodW5zaWduZWQgYml0SW5kZXgpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBp
cyB0aGUgZGVmIGZ1bmN0b3IsIHNvIHdlIGNsZWFyIHRoZSBiaXQuCisgICAgICAgICAgICAgICAg
ICAgIG91dC5jbGVhcihiaXRJbmRleCk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgIH0K
KworICAgICAgICByZXN1bHQuc2V0KG91dCk7CisgICAgfQorCisgICAgdm9pZCBjb21wdXRlTG9j
YWxMaXZlbmVzc0ZvckJsb2NrKEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2spCisgICAgeworICAg
ICAgICBpZiAoYmxvY2stPmlzRXhpdEJsb2NrKCkgfHwgYmxvY2stPmlzRW50cnlCbG9jaygpKQor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJ5dGVj
b2RlT2Zmc2V0KGJsb2NrLCBibG9jay0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKSwgYmxvY2stPmlu
KCkpOworICAgIH0KKworICAgIEZhc3RCaXRWZWN0b3IgZ2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29k
ZU9mZnNldCh1bnNpZ25lZCBieXRlY29kZU9mZnNldCkKKyAgICB7CisgICAgICAgIEJ5dGVjb2Rl
QmFzaWNCbG9jayogYmxvY2sgPSBtX2dlbmVyYXRvcmlmaWNhdGlvbi5ncmFwaCgpLmZpbmRCYXNp
Y0Jsb2NrRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpOworICAgICAgICBBU1NFUlQo
YmxvY2spOworICAgICAgICBBU1NFUlQoIWJsb2NrLT5pc0VudHJ5QmxvY2soKSk7CisgICAgICAg
IEFTU0VSVCghYmxvY2stPmlzRXhpdEJsb2NrKCkpOworICAgICAgICBGYXN0Qml0VmVjdG9yIG91
dDsKKyAgICAgICAgb3V0LnJlc2l6ZShibG9jay0+b3V0KCkubnVtQml0cygpKTsKKyAgICAgICAg
Y29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCeXRlY29kZU9mZnNldChibG9jaywgYnl0ZWNvZGVPZmZz
ZXQsIG91dCk7CisgICAgICAgIHJldHVybiBvdXQ7CisgICAgfQorCisgICAgdm9pZCBydW4oKQor
ICAgIHsKKyAgICAgICAgLy8gUGVyZm9ybSBtb2RpZmllZCBsaXZlbmVzcyBhbmFseXNpcyB0byBk
ZXRlcm1pbmUgd2hpY2ggbG9jYWxzIGFyZSBsaXZlIGF0IHRoZSBtZXJnZSBwb2ludHMuCisgICAg
ICAgIC8vIFRoaXMgcHJvZHVjZXMgdGhlIGNvbnNlcnZhdGl2ZSByZXN1bHRzIGZvciB0aGUgcXVl
c3Rpb24sICJ3aGljaCB2YXJpYWJsZXMgc2hvdWxkIGJlIHNhdmVkIGFuZCByZXN1bWVkPyIuCisK
KyAgICAgICAgQnl0ZWNvZGVHcmFwaDxVbmxpbmtlZENvZGVCbG9jaz4mIGdyYXBoID0gbV9nZW5l
cmF0b3JpZmljYXRpb24uZ3JhcGgoKTsKKyAgICAgICAgVW5saW5rZWRDb2RlQmxvY2sqIHVubGlu
a2VkQ29kZUJsb2NrID0gZ3JhcGguY29kZUJsb2NrKCk7CisgICAgICAgIHVuc2lnbmVkIG51bWJl
ck9mVmFyaWFibGVzID0gdW5saW5rZWRDb2RlQmxvY2stPm1fbnVtQ2FsbGVlTG9jYWxzOworICAg
ICAgICBmb3IgKHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+JiBibG9jayA6IGdy
YXBoLmJhc2ljQmxvY2tzKCkpIHsKKyAgICAgICAgICAgIGJsb2NrLT5pbigpLnJlc2l6ZShudW1i
ZXJPZlZhcmlhYmxlcyk7CisgICAgICAgICAgICBibG9jay0+b3V0KCkucmVzaXplKG51bWJlck9m
VmFyaWFibGVzKTsKKyAgICAgICAgICAgIGJsb2NrLT5pbigpLmNsZWFyQWxsKCk7CisgICAgICAg
ICAgICBibG9jay0+b3V0KCkuY2xlYXJBbGwoKTsKKyAgICAgICAgfQorCisgICAgICAgIGJvb2wg
Y2hhbmdlZDsKKyAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBsYXN0QmxvY2sgPSBncmFwaC5i
YXNpY0Jsb2NrcygpLmxhc3QoKS5nZXQoKTsKKyAgICAgICAgbGFzdEJsb2NrLT5pbigpLmNsZWFy
QWxsKCk7CisgICAgICAgIGxhc3RCbG9jay0+b3V0KCkuY2xlYXJBbGwoKTsKKyAgICAgICAgRmFz
dEJpdFZlY3RvciBuZXdPdXQ7CisgICAgICAgIG5ld091dC5yZXNpemUobGFzdEJsb2NrLT5vdXQo
KS5udW1CaXRzKCkpOworICAgICAgICBkbyB7CisgICAgICAgICAgICBjaGFuZ2VkID0gZmFsc2U7
CisgICAgICAgICAgICBmb3IgKHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+JiBi
bG9jayA6IGdyYXBoLmJhc2ljQmxvY2tzSW5SZXZlcnNlT3JkZXIoKSkgeworICAgICAgICAgICAg
ICAgIG5ld091dC5jbGVhckFsbCgpOworICAgICAgICAgICAgICAgIGZvciAoQnl0ZWNvZGVCYXNp
Y0Jsb2NrKiBzdWNjZXNzb3IgOiBibG9jay0+c3VjY2Vzc29ycygpKQorICAgICAgICAgICAgICAg
ICAgICBuZXdPdXQubWVyZ2Uoc3VjY2Vzc29yLT5pbigpKTsKKyAgICAgICAgICAgICAgICBib29s
IG91dERpZENoYW5nZSA9IGJsb2NrLT5vdXQoKS5zZXRBbmRDaGVjayhuZXdPdXQpOworICAgICAg
ICAgICAgICAgIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQmxvY2soYmxvY2suZ2V0KCkpOworICAg
ICAgICAgICAgICAgIGNoYW5nZWQgfD0gb3V0RGlkQ2hhbmdlOworICAgICAgICAgICAgfQorICAg
ICAgICB9IHdoaWxlIChjaGFuZ2VkKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQnl0ZWNvZGVH
ZW5lcmF0b3JpZmljYXRpb24mIG1fZ2VuZXJhdG9yaWZpY2F0aW9uOworfTsKKworY2xhc3MgUmVz
dW1lZFZhcmlhYmxlc0FuYWx5c2lzIHsKK3B1YmxpYzoKKyAgICBSZXN1bWVkVmFyaWFibGVzQW5h
bHlzaXMoQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24mIHBhc3MpCisgICAgICAgIDogbV9nZW5l
cmF0b3JpZmljYXRpb24ocGFzcykKKyAgICAgICAgLCBtX2xpdmVuZXNzQW5hbHlzaXMocGFzcykK
KyAgICB7CisgICAgfQorCisgICAgRmFzdEJpdFZlY3RvciBnZXRSZXN1bWVkVmFyaWFibGVzSW5m
b0F0Qnl0ZWNvZGVPZmZzZXQodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpCisgICAgeworICAgICAg
ICBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrID0gbV9nZW5lcmF0b3JpZmljYXRpb24uZ3JhcGgo
KS5maW5kQmFzaWNCbG9ja0ZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KTsKKyAgICAg
ICAgQVNTRVJUKGJsb2NrKTsKKyAgICAgICAgQVNTRVJUKCFibG9jay0+aXNFbnRyeUJsb2NrKCkp
OworICAgICAgICBBU1NFUlQoIWJsb2NrLT5pc0V4aXRCbG9jaygpKTsKKyAgICAgICAgRmFzdEJp
dFZlY3RvciBvdXQ7CisgICAgICAgIG91dC5yZXNpemUoYmxvY2stPm91dCgpLm51bUJpdHMoKSk7
CisgICAgICAgIG1fbGl2ZW5lc3NBbmFseXNpcy5jb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJ5dGVj
b2RlT2Zmc2V0KGJsb2NrLCBieXRlY29kZU9mZnNldCwgb3V0KTsKKyAgICAgICAgcmV0dXJuIG91
dDsKKyAgICB9CisKKyAgICB2b2lkIHJ1bigpCisgICAgeworICAgICAgICAvLyBUaGUgcmVzdW1l
ZCB2YXJpYWJsZXMgYW5hbHlzaXMgaXMgYWxtb3N0IHRoZSBzYW1lIHRvIHRoZSBnZW5lcmF0b3Jp
ZmljYXRpb24ncyB1c3VhbCBsaXZlbmVzcyBhbmFseXNpcywKKyAgICAgICAgLy8gZXhjZXB0IGZv
ciBkcm9wcGluZyB0aGUgZWRnZXMgYmV0d2VlbiB0aGUgc2F2ZSBwb2ludHMgYW5kIHRoZSBtZXJn
ZSBwb2ludHMuCisKKyAgICAgICAgQnl0ZWNvZGVHcmFwaDxVbmxpbmtlZENvZGVCbG9jaz4mIGdy
YXBoID0gbV9nZW5lcmF0b3JpZmljYXRpb24uZ3JhcGgoKTsKKyAgICAgICAgVW5saW5rZWRDb2Rl
QmxvY2sqIHVubGlua2VkQ29kZUJsb2NrID0gZ3JhcGguY29kZUJsb2NrKCk7CisgICAgICAgIHVu
c2lnbmVkIG51bWJlck9mVmFyaWFibGVzID0gdW5saW5rZWRDb2RlQmxvY2stPm1fbnVtQ2FsbGVl
TG9jYWxzOworICAgICAgICBmb3IgKHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+
JiBibG9jayA6IGdyYXBoLmJhc2ljQmxvY2tzKCkpIHsKKyAgICAgICAgICAgIGJsb2NrLT5pbigp
LnJlc2l6ZShudW1iZXJPZlZhcmlhYmxlcyk7CisgICAgICAgICAgICBibG9jay0+b3V0KCkucmVz
aXplKG51bWJlck9mVmFyaWFibGVzKTsKKyAgICAgICAgICAgIGJsb2NrLT5pbigpLmNsZWFyQWxs
KCk7CisgICAgICAgICAgICBibG9jay0+b3V0KCkuY2xlYXJBbGwoKTsKKyAgICAgICAgfQorCisg
ICAgICAgIGJvb2wgY2hhbmdlZDsKKyAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBsYXN0Qmxv
Y2sgPSBncmFwaC5iYXNpY0Jsb2NrcygpLmxhc3QoKS5nZXQoKTsKKyAgICAgICAgbGFzdEJsb2Nr
LT5pbigpLmNsZWFyQWxsKCk7CisgICAgICAgIGxhc3RCbG9jay0+b3V0KCkuY2xlYXJBbGwoKTsK
KyAgICAgICAgRmFzdEJpdFZlY3RvciBuZXdPdXQ7CisgICAgICAgIG5ld091dC5yZXNpemUobGFz
dEJsb2NrLT5vdXQoKS5udW1CaXRzKCkpOworICAgICAgICBkbyB7CisgICAgICAgICAgICBjaGFu
Z2VkID0gZmFsc2U7CisgICAgICAgICAgICBmb3IgKHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJh
c2ljQmxvY2s+JiBibG9jayA6IGdyYXBoLmJhc2ljQmxvY2tzSW5SZXZlcnNlT3JkZXIoKSkgewor
ICAgICAgICAgICAgICAgIG5ld091dC5jbGVhckFsbCgpOworICAgICAgICAgICAgICAgIGJvb2wg
c2F2ZUJsb2NrID0gbV9nZW5lcmF0b3JpZmljYXRpb24uaXNTYXZlQmxvY2soYmxvY2suZ2V0KCkp
OworICAgICAgICAgICAgICAgIGZvciAoQnl0ZWNvZGVCYXNpY0Jsb2NrKiBzdWNjZXNzb3IgOiBi
bG9jay0+c3VjY2Vzc29ycygpKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIERvIG5vdCBoYW5k
bGUgdGhlIGVkZ2VzIGJldHdlZW4gdGhlIHNhdmUgcG9pbnRzIGFuZCB0aGUgbWVyZ2UgcG9pbnRz
LgorICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgY3VycmVudCBibG9jayBpcyB0aGUgc2F2
ZSBibG9jayAodGhhdCBicmFuY2ggaXMgb3Bfc2F2ZSksCisgICAgICAgICAgICAgICAgICAgIC8v
IGFuZCBpZiB0aGUgc3VjY2Vzc29yIGlzIHRoZSBibG9jayB0aGF0IHN0YXJ0cyB3aXRoIHRoZSBt
ZXJnZSBwb2ludCwgd2UgZHJvcCB0aGlzIGVkZ2UuCisgICAgICAgICAgICAgICAgICAgIGlmICgh
KHNhdmVCbG9jayAmJiBtX2dlbmVyYXRvcmlmaWNhdGlvbi5pc01lcmdlQmxvY2soc3VjY2Vzc29y
KSkpCisgICAgICAgICAgICAgICAgICAgICAgICBuZXdPdXQubWVyZ2Uoc3VjY2Vzc29yLT5pbigp
KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYm9vbCBvdXREaWRDaGFuZ2Ug
PSBibG9jay0+b3V0KCkuc2V0QW5kQ2hlY2sobmV3T3V0KTsKKyAgICAgICAgICAgICAgICBtX2xp
dmVuZXNzQW5hbHlzaXMuY29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCbG9jayhibG9jay5nZXQoKSk7
CisgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBvdXREaWRDaGFuZ2U7CisgICAgICAgICAgICB9
CisgICAgICAgIH0gd2hpbGUgKGNoYW5nZWQpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBCeXRl
Y29kZUdlbmVyYXRvcmlmaWNhdGlvbiYgbV9nZW5lcmF0b3JpZmljYXRpb247CisgICAgR2VuZXJh
dG9yTGl2ZW5lc3NBbmFseXNpcyBtX2xpdmVuZXNzQW5hbHlzaXM7Cit9OworCitjbGFzcyBTYXZl
ZFZhcmlhYmxlc0FuYWx5c2lzIHsKK3B1YmxpYzoKKyAgICBTYXZlZFZhcmlhYmxlc0FuYWx5c2lz
KEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uJiBwYXNzKQorICAgICAgICA6IG1fZ2VuZXJhdG9y
aWZpY2F0aW9uKHBhc3MpCisgICAgeworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIERl
ZkZ1bmN0b3I+CisgICAgdm9pZCBzdGVwT3Zlckluc3RydWN0aW9uRm9yU2F2ZWRWYXJpYWJsZXMo
Qnl0ZWNvZGVCYXNpY0Jsb2NrKiwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIEZhc3RCaXRWZWN0
b3ImIGluLCBjb25zdCBEZWZGdW5jdG9yJiBkZWYpCisgICAgeworICAgICAgICBCeXRlY29kZUdy
YXBoPFVubGlua2VkQ29kZUJsb2NrPiYgZ3JhcGggPSBtX2dlbmVyYXRvcmlmaWNhdGlvbi5ncmFw
aCgpOworICAgICAgICBhdXRvJiBpbnN0cnVjdGlvbnMgPSBncmFwaC5pbnN0cnVjdGlvbnMoKTsK
KyAgICAgICAgVW5saW5rZWRJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSAmaW5zdHJ1Y3Rpb25z
W2J5dGVjb2RlT2Zmc2V0XTsKKyAgICAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnN0cnVjdGlv
bi0+dS5vcGNvZGU7CisgICAgICAgIFVubGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBncmFw
aC5jb2RlQmxvY2soKTsKKworICAgICAgICAvLyBvcF9yZXN1bWUgY2xlYXJzIGFsbCB0aGUgZGVm
cy4KKyAgICAgICAgaWYgKG9wY29kZUlEID09IG9wX3Jlc3VtZSkgeworICAgICAgICAgICAgaW4u
Y2xlYXJBbGwoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGNv
bXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoY29kZUJsb2NrLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rp
b24sIFsmXSAoVW5saW5rZWRDb2RlQmxvY2sqLCBVbmxpbmtlZEluc3RydWN0aW9uKiwgT3Bjb2Rl
SUQsIGludCBvcGVyYW5kKSB7CisgICAgICAgICAgICBpZiAoaXNWYWxpZFJlZ2lzdGVyRm9yTGl2
ZW5lc3Mob3BlcmFuZCkpCisgICAgICAgICAgICAgICAgZGVmKFZpcnR1YWxSZWdpc3RlcihvcGVy
YW5kKS50b0xvY2FsKCkpOworICAgICAgICB9KTsKKyAgICB9CisKKyAgICBib29sIGNvbXB1dGVM
b2NhbFNhdmVkVmFyaWFibGVzRm9yQnl0ZWNvZGVPZmZzZXQoQnl0ZWNvZGVCYXNpY0Jsb2NrKiBi
bG9jaywgdW5zaWduZWQgdGFyZ2V0T2Zmc2V0LCBGYXN0Qml0VmVjdG9yJiByZXN1bHQpCisgICAg
eworICAgICAgICBBU1NFUlQoIWJsb2NrLT5pc0V4aXRCbG9jaygpKTsKKyAgICAgICAgQVNTRVJU
KCFibG9jay0+aXNFbnRyeUJsb2NrKCkpOworCisgICAgICAgIEZhc3RCaXRWZWN0b3IgaW4gPSBi
bG9jay0+aW4oKTsKKworICAgICAgICBmb3IgKHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0IDogYmxv
Y2stPmJ5dGVjb2RlT2Zmc2V0cygpKSB7CisgICAgICAgICAgICBpZiAodGFyZ2V0T2Zmc2V0IDw9
IGJ5dGVjb2RlT2Zmc2V0KQorICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBz
dGVwT3Zlckluc3RydWN0aW9uRm9yU2F2ZWRWYXJpYWJsZXMoCisgICAgICAgICAgICAgICAgYmxv
Y2ssIGJ5dGVjb2RlT2Zmc2V0LCBpbiwKKyAgICAgICAgICAgICAgICBbJl0gKHVuc2lnbmVkIGJp
dEluZGV4KSB7CisgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIGRlZiBmdW5jdG9y
LCBzbyB3ZSBzZXQgdGhlIGJpdC4KKyAgICAgICAgICAgICAgICAgICAgaW4uc2V0KGJpdEluZGV4
KTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiByZXN1
bHQuc2V0QW5kQ2hlY2soaW4pOworICAgIH0KKworICAgIGJvb2wgY29tcHV0ZUxvY2FsU2F2ZWRW
YXJpYWJsZXNGb3JCbG9jayhCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrKQorICAgIHsKKyAgICAg
ICAgaWYgKGJsb2NrLT5pc0V4aXRCbG9jaygpIHx8IGJsb2NrLT5pc0VudHJ5QmxvY2soKSkKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIGNvbXB1dGVMb2NhbFNhdmVk
VmFyaWFibGVzRm9yQnl0ZWNvZGVPZmZzZXQoYmxvY2ssIGJsb2NrLT5sZWFkZXJCeXRlY29kZU9m
ZnNldCgpICsgYmxvY2stPnRvdGFsQnl0ZWNvZGVMZW5ndGgoKSwgYmxvY2stPm91dCgpKTsKKyAg
ICB9CisKKyAgICBGYXN0Qml0VmVjdG9yIGdldFNhdmVkVmFyaWFibGVzSW5mb0F0Qnl0ZWNvZGVP
ZmZzZXQodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpCisgICAgeworICAgICAgICBCeXRlY29kZUJh
c2ljQmxvY2sqIGJsb2NrID0gbV9nZW5lcmF0b3JpZmljYXRpb24uZ3JhcGgoKS5maW5kQmFzaWNC
bG9ja0ZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KTsKKyAgICAgICAgQVNTRVJUKGJs
b2NrKTsKKyAgICAgICAgQVNTRVJUKCFibG9jay0+aXNFbnRyeUJsb2NrKCkpOworICAgICAgICBB
U1NFUlQoIWJsb2NrLT5pc0V4aXRCbG9jaygpKTsKKyAgICAgICAgRmFzdEJpdFZlY3RvciBpbjsK
KyAgICAgICAgaW4ucmVzaXplKGJsb2NrLT5pbigpLm51bUJpdHMoKSk7CisgICAgICAgIGNvbXB1
dGVMb2NhbFNhdmVkVmFyaWFibGVzRm9yQnl0ZWNvZGVPZmZzZXQoYmxvY2ssIGJ5dGVjb2RlT2Zm
c2V0LCBpbik7CisgICAgICAgIHJldHVybiBpbjsKKyAgICB9CisKKyAgICB2b2lkIHJ1bigpCisg
ICAgeworICAgICAgICAvLyBJZiB3ZSBzYXZlIGFsbCB0aGUgdmFyaWFibGUgdGhhdCB3aWxsIGJl
IHJlc3VtZWQsIGl0J3MgT0suCisgICAgICAgIC8vIEJ1dCB3ZSBjYW4gYXZvaWQgc29tZSBzYXZl
ZCB2YXJpYWJsZXMgdGhhdCBhcmUgb25seSBkZWZpbmVkIGJ5IHRoZSBwcmV2aW91cyBvcF9yZXN1
bWUuCisgICAgICAgIC8vCisgICAgICAgIC8vIEluIHRoaXMgcGhhc2UsIHdlIHBlcmZvcm0gZm9y
d2FyZCBhbmFseXNpcyB0byBleHRyYWN0IHdoaWNoIHZhcmlhYmxlcyBuZWVkIHRvIGJlIG5ld2x5
IHNhdmVkIHdoZW4gZXhlY3V0aW5nIG9wX3NhdmUuCisgICAgICAgIC8vIFdlIGNhbGN1bGF0ZSB0
aGUgcmVnaXN0ZXJzIHRoYXQgaXMgZGVmaW5lZCBpbiBub24tb3BfcmVzdW1lIGFuZCBjYW4gcmVh
Y2ggdG8gdGhlIG9wX3NhdmUuCisgICAgICAgIC8vCisgICAgICAgIC8vICAgb3BfcmVzdW1lLCBk
ZWZpbmUgcjEKKyAgICAgICAgLy8gICAuLi4KKyAgICAgICAgLy8gICAuLi4KKyAgICAgICAgLy8g
ICBuby1qdW1wcyAmIG5vIHIxIGRlZnMuCisgICAgICAgIC8vICAgLi4uCisgICAgICAgIC8vICAg
b3Bfc2F2ZSAgIyBIZXJlLCBpdCBpcyBub3QgbmVjZXNzYXJ5IHRvIHNhdmUgcjEuCisgICAgICAg
IEJ5dGVjb2RlR3JhcGg8VW5saW5rZWRDb2RlQmxvY2s+JiBncmFwaCA9IG1fZ2VuZXJhdG9yaWZp
Y2F0aW9uLmdyYXBoKCk7CisgICAgICAgIFVubGlua2VkQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVC
bG9jayA9IGdyYXBoLmNvZGVCbG9jaygpOworCisgICAgICAgIC8vIFdlIGNvbnNpZGVyIHRoZSBi
YXNpYyBibG9ja3Mgd2l0aGluIHRoZSB0cnkgcmFuZ2UgYXJlIGNvbnNpZGVyZWQgYXMgdGhlIGlt
cGxpY2l0IHByZWRlY2Vzc29ycyBvZiB0aGUgaGFuZGxlcnMuCisgICAgICAgIC8vIFRoZSBkZWZz
IGluIHRoZXNlIGJhc2ljIGJsb2NrcyBhcmUgY2FycmllZCB0byB0aGUgZXhjZXB0aW9uIGhhbmRs
ZXIuIEFuZCBpZiB0aGUgb3Bfc2F2ZSBpcyBleGVjdXRlZCBpbiB0aGUgaGFuZGxlciwKKyAgICAg
ICAgLy8gY2FycmllZCBkZWZzIHNob3VsZCBiZSBhbHNvIGNvbnNpZGVyZWQuCisgICAgICAgIC8v
CisgICAgICAgIC8vIEhlcmUsIHdlIGFkZCB0aGUgd2hvbGUgYmFzaWMgYmxvY2tzIGFzIHRoZSBp
bXBsaWNpdCBwcmVkZWNlc3NvcnMgb2YgdGhlIGhhbmRsZXJzIGZvciBzaW1wbGljaXR5LgorICAg
ICAgICAvLyBUaGlzIGlzIGEgbGl0dGxlIGJpdCBjb25zZXJ2YXRpdmU6IHRoZSB0cnkgcmFuZ2Ug
bWF5IG5vdCBjb3ZlciBhbGwgdGhlIGJhc2ljIGJsb2NrLiBCdXQgc2luY2UgdGhlIG91dCBzZXQg
c3RhdHVzIGF0CisgICAgICAgIC8vIHRoZSB0YWlsIG9mIHRoZSBiYXNpYyBibG9jayBpcyBhbHdh
eXMgbGFyZ2VyIHRoYW4gdGhlIG91dCBzZXQgc3RhdHVzIGluIHRoZSBtaWRkbGUgb2YgdGhlIGJh
c2ljIGJsb2NrcywgdGhpcyBkb2VzIG5vdAorICAgICAgICAvLyBmYWlsIHRvIGtlZXAgdGhlIHZh
cmlhYmxlcyB0aGF0IHNob3VsZCBiZSBzYXZlZC4KKyAgICAgICAgLy8KKyAgICAgICAgLy8gT25s
eSB0aGUgZXhjZXB0aW9uIGlzIHRoZSBvcF9yZXN1bWUgYmxvY2s6IG9wX3Jlc3VtZSBjbGVhcnMg
YWxsIHRoZSBkZWZzLiBCdXQgc2luY2UgdGhlIHJhbmdlIGJldHdlZW4gdGhlIGp1bXAgdGFyZ2V0
CisgICAgICAgIC8vIGZyb20gdGhlIGdsb2JhbCBkaXNwYXRjaCBhbmQgb3BfcmVzdW1lIGlzIG5l
dmVyIGNvdmVyZWQgYnkgdGhlIHRyeSByYW5nZSwgaXQgaXMgbm90IGEgcHJvYmxlbS4KKyAgICAg
ICAgVmVjdG9yPE9wdGlvbmFsPEZhc3RCaXRWZWN0b3I+PiBwb3NzaWJsZVByZWRlY2Vzc29yc0Zv
ckhhbmRsZXJzOworICAgICAgICBwb3NzaWJsZVByZWRlY2Vzc29yc0ZvckhhbmRsZXJzLnJlc2l6
ZShncmFwaC5iYXNpY0Jsb2NrcygpLnNpemUoKSk7CisgICAgICAgIHsKKyAgICAgICAgICAgIGF1
dG8mIGluc3RydWN0aW9ucyA9IGdyYXBoLmluc3RydWN0aW9ucygpOworICAgICAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IHVubGlua2VkQ29kZUJsb2NrLT5udW1iZXJPZkV4Y2VwdGlv
bkhhbmRsZXJzKCk7ICsraSkgeworICAgICAgICAgICAgICAgIGF1dG8mIGhhbmRsZXIgPSB1bmxp
bmtlZENvZGVCbG9jay0+ZXhjZXB0aW9uSGFuZGxlcihpKTsKKworICAgICAgICAgICAgICAgIEZh
c3RCaXRWZWN0b3IgcHJlZGVjZXNzb3JzOworICAgICAgICAgICAgICAgIHByZWRlY2Vzc29ycy5y
ZXNpemUoZ3JhcGguYmFzaWNCbG9ja3MoKS5zaXplKCkpOworICAgICAgICAgICAgICAgIGZvciAo
dW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQgPSBoYW5kbGVyLnN0YXJ0OyBieXRlY29kZU9mZnNldCA8
IGhhbmRsZXIuZW5kOykgeworICAgICAgICAgICAgICAgICAgICBVbmxpbmtlZEluc3RydWN0aW9u
KiBpbnN0cnVjdGlvbiA9ICZpbnN0cnVjdGlvbnNbYnl0ZWNvZGVPZmZzZXRdOworICAgICAgICAg
ICAgICAgICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGluc3RydWN0aW9uLT51Lm9wY29kZTsKKyAg
ICAgICAgICAgICAgICAgICAgdW5zaWduZWQgb3Bjb2RlTGVuZ3RoID0gb3Bjb2RlTGVuZ3Roc1tv
cGNvZGVJRF07CisKKyAgICAgICAgICAgICAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBwb3Nz
aWJsZVByZWRlY2Vzc29yID0gZ3JhcGguZmluZEJhc2ljQmxvY2tGb3JCeXRlY29kZU9mZnNldChi
eXRlY29kZU9mZnNldCk7CisgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHBvc3Np
YmxlUHJlZGVjZXNzb3IpOworICAgICAgICAgICAgICAgICAgICBwcmVkZWNlc3NvcnMuc2V0KHBv
c3NpYmxlUHJlZGVjZXNzb3ItPmluZGV4KCkpOworCisgICAgICAgICAgICAgICAgICAgIGJ5dGVj
b2RlT2Zmc2V0ICs9IG9wY29kZUxlbmd0aDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBoYW5kbGVyQmxvY2sgPSBncmFwaC5maW5kQmFzaWNC
bG9ja1dpdGhMZWFkZXJPZmZzZXQoaGFuZGxlci50YXJnZXQpOworICAgICAgICAgICAgICAgIHBv
c3NpYmxlUHJlZGVjZXNzb3JzRm9ySGFuZGxlcnNbaGFuZGxlckJsb2NrLT5pbmRleCgpXSA9IFdU
Rk1vdmUocHJlZGVjZXNzb3JzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAg
IHVuc2lnbmVkIG51bWJlck9mVmFyaWFibGVzID0gdW5saW5rZWRDb2RlQmxvY2stPm1fbnVtQ2Fs
bGVlTG9jYWxzOworICAgICAgICBmb3IgKHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxv
Y2s+JiBibG9jayA6IGdyYXBoLmJhc2ljQmxvY2tzKCkpIHsKKyAgICAgICAgICAgIGJsb2NrLT5p
bigpLnJlc2l6ZShudW1iZXJPZlZhcmlhYmxlcyk7CisgICAgICAgICAgICBibG9jay0+b3V0KCku
cmVzaXplKG51bWJlck9mVmFyaWFibGVzKTsKKyAgICAgICAgICAgIGJsb2NrLT5pbigpLmNsZWFy
QWxsKCk7CisgICAgICAgICAgICBibG9jay0+b3V0KCkuY2xlYXJBbGwoKTsKKyAgICAgICAgfQor
CisgICAgICAgIGJvb2wgY2hhbmdlZDsKKyAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBmaXJz
dEJsb2NrID0gZ3JhcGguYmFzaWNCbG9ja3MoKS5maXJzdCgpLmdldCgpOworICAgICAgICBGYXN0
Qml0VmVjdG9yIG5ld0luOworICAgICAgICBuZXdJbi5yZXNpemUoZmlyc3RCbG9jay0+aW4oKS5u
dW1CaXRzKCkpOworICAgICAgICBkbyB7CisgICAgICAgICAgICBjaGFuZ2VkID0gZmFsc2U7Cisg
ICAgICAgICAgICBmb3IgKHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+JiBibG9j
ayA6IGdyYXBoLmJhc2ljQmxvY2tzKCkpIHsKKyAgICAgICAgICAgICAgICBuZXdJbi5jbGVhckFs
bCgpOworICAgICAgICAgICAgICAgIGJvb2wgbWVyZ2VCbG9jayA9IG1fZ2VuZXJhdG9yaWZpY2F0
aW9uLmlzTWVyZ2VCbG9jayhibG9jay5nZXQoKSk7CisgICAgICAgICAgICAgICAgZm9yIChCeXRl
Y29kZUJhc2ljQmxvY2sqIHByZWRlY2Vzc29yIDogYmxvY2stPnByZWRlY2Vzc29ycygpKSB7Cisg
ICAgICAgICAgICAgICAgICAgIC8vIE1lcmdlIHRoZSBvdXQgc2V0IG9mIHRoZSBpbmNvbWluZyBw
cmVkZWNlc3NvcnMgdW5sZXNzIHRoZSBjdXJyZW50IGJsb2NrIHN0YXJ0cworICAgICAgICAgICAg
ICAgICAgICAvLyB3aXRoIHRoZSBtZXJnZSBwb2ludCBhbmQgdGhlIHByZWRlY2Vzc29yIGVuZHMg
d2l0aCB0aGUgc2F2ZSBwb2ludC4KKyAgICAgICAgICAgICAgICAgICAgaWYgKCEobWVyZ2VCbG9j
ayAmJiBtX2dlbmVyYXRvcmlmaWNhdGlvbi5pc1NhdmVCbG9jayhwcmVkZWNlc3NvcikpKQorICAg
ICAgICAgICAgICAgICAgICAgICAgbmV3SW4ubWVyZ2UocHJlZGVjZXNzb3ItPm91dCgpKTsKKyAg
ICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAoYXV0byYgb3B0aW9uYWxQcmVk
ZWNlc3NvclNldCA9IHBvc3NpYmxlUHJlZGVjZXNzb3JzRm9ySGFuZGxlcnNbYmxvY2stPmluZGV4
KCldKSB7CisgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsUHJlZGVjZXNzb3JTZXQtPmZvckVh
Y2hTZXRCaXQoWyZdICh1bnNpZ25lZCBibG9ja0luZGV4KSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBuZXdJbi5tZXJnZShncmFwaC5iYXNpY0Jsb2NrcygpW2Jsb2NrSW5kZXhdLT5vdXQoKSk7
CisgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgICAgIGJsb2NrLT5pbigpLnNldChuZXdJbik7CisgICAgICAgICAgICAgICAgY2hhbmdlZCB8
PSBjb21wdXRlTG9jYWxTYXZlZFZhcmlhYmxlc0ZvckJsb2NrKGJsb2NrLmdldCgpKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfSB3aGlsZSAoY2hhbmdlZCk7CisgICAgfQorCitwcml2YXRlOgor
ICAgIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uJiBtX2dlbmVyYXRvcmlmaWNhdGlvbjsKK307
CisKKwordm9pZCBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbjo6cnVuKCkKK3sKKyAgICAvLyBG
aXJzdCwgd2UgY2FsY3VsYXRlIHRoZSBsaXZlbmVzcyBhdCBlYWNoIG1lcmdlIHBvaW50LiBUaGlz
IGdpdmVzIHVzIHRoZSBpbmZvcm1hdGlvbiB3aGljaCByZWdpc3RlcnMgc2hvdWxkIGJlIHNhdmVk
IGFuZCByZXN1bWVkIGNvbnNlcnZhdGl2ZWx5LgorICAgIC8vIEhvd2V2ZXIsIHRoaXMgaW5mb3Jt
YXRpb24gaXMgdG9vIGNvbnNlcnZhdGl2ZS4gV2Ugbm93IHVubmVjZXNzYXJpbHkgc2F2ZSBhbmQg
cmVzdW1lIHRoZSByZWdpc3RlcnMuCisgICAgLy8gV2hlbiB0aGUgbG9jYWwgcmVnaXN0ZXIgaXMg
cmVmZXJlbmNlZCBmcm9tIHRoZSBwb2ludCB3aGljaCBpcyBvdmVyIG11bHRpcGxlIHlpZWxkcywg
dGhlIHByb2JsZW0gaGFwcGVucy4KKyAgICAvLworICAgIC8vICAgZnVuY3Rpb24gKmdlbigpCisg
ICAgLy8gICB7CisgICAgLy8gICAgICAgdmFyIHRhcmdldCA9IDQyOworICAgIC8vICAgICAgIHlp
ZWxkIDMwOyAgLy8gSGVyZSwgd2Ugc2hvdWxkIHNhdmUgInRhcmdldCIuIEl0IGlzIE9LLiBCdXQg
YXQgdGhlIHJlc3VtZSBwb2ludCwgd2UgdW5uZWNlc3NhcnkgcmVzdW1lICJ0YXJnZXQiIGhlcmUu
CisgICAgLy8gICAgICAgeWllbGQgNDA7ICAvLyBBbmQgaGVyZSwgd2UgdW5uZWNlc3NhcmlseSBz
YXZlICJ0YXJnZXQiLCBzaW5jZSBpdCBpcyAqZGVmKmluZWQgYnkgdGhlIHByZXZpb3VzIHJlc3Vt
ZS4KKyAgICAvLyAgICAgICB5aWVsZCB0YXJnZXQ7ICAvLyBBbmQgcmVmZXJlbmNlIHRoZSAidGFy
Z2V0IiBoZXJlLgorICAgIC8vICAgfQorICAgIC8vCisgICAgLy8gSW4gdGhlIGFib3ZlIGV4YW1w
bGUsIGZpcnN0IHlpZWxkJ3MgcmVzdW1lIGFuZCBzZWNvbmQgeWllbGQncyBzYXZlIGlzIHVubmVj
ZXNzYXJ5IHNpbmNlIHRoZSB2YWx1ZSBpcyBub3QgY2hhbmdlZCBkdXJpbmcgdGhlIHNlY29uZCBj
YWxsIG9mIG5leHQoKS4KKyAgICAvLyBUbyByZWR1Y2UgdGhlIHVubmVjZXNzYXJ5IHJlZ2lzdGVy
IHNhdmUgYW5kIHJlc3VtZSwgd2UgcnVuIDIgYW5hbHlzaXMsICJyZXN1bWVkIHZhcmlhYmxlcyBh
bmFseXNpcyIgYW5kICJzYXZlZCB2YXJpYWJsZXMgYW5hbHlzaXMiLgorICAgIC8vIEF0IHRoYXQg
dGltZSwgd2UgZHJvcCB0aGUgZWRnZSBmcm9tIG9wX3NhdmUgdG8gdGhlIG1lcmdlIHBvaW50LiBT
byB0aGUgZ3JhcGggbm93IGJlY29tZXMgYXMgZm9sbG93cy4KKyAgICAvLworICAgIC8vIEJlZm9y
ZToKKyAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob2YgY291cnNlLCBzdWNoIGVkZ2VzIGNh
biBiZSBzZWVuKQorICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBvcF9yZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0rCisgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIF4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAvLyAgICAgICAgIGVudHJ5IC0+IGdlbmVy
YXRvciBzd2l0Y2ggLS0tLT4gb3Bfc2F2ZSAtLS0tLS0tLS0tLS0tLSsgICAgICAgICAgICAgICB8
ICAgICAgICBvcF9yZXQgICAgICAgICAgICAgICAgICAgfAorICAgIC8vICAgICAgICAgICAgICAg
ICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdiAgICAgICAg
ICAgICAgIHwgICAgICAgICAgXiAgICAgICAgICAgICAgICAgICAgICB8CisgICAgLy8gICAgICAg
ICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0+IG9wX3Jlc3VtZSAtLS0tLT4gbWVyZ2Ug
cG9pbnQgLT4gLi4uLi4uKy4uLi4uLT4gb3Bfc2F2ZSAtLS0tLSsgICAgICAgICAgIHwKKyAgICAv
LyAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdiAgICAgICAgICAg
dgorICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPiBvcF9yZXN1bWUgLS0tLT4gbWVyZ2UgcG9p
bnQgLT4gLi4uLi4uCisgICAgLy8KKyAgICAvLyBBZnRlcjoKKyAgICAvLyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAob2YgY291cnNlLCBzdWNoIGVkZ2VzIGNhbiBiZSBzZWVuKQorICAgIC8vICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcF9yZXQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICAg
Ly8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHwKKyAgICAvLyAgICAgICAgIGVudHJ5IC0+IGdlbmVyYXRvciBzd2l0Y2ggLS0tLT4gb3Bfc2F2
ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICBvcF9yZXQgICAgICAgICAg
ICAgICAgICAgfAorICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgXiAgICAg
ICAgICAgICAgICAgICAgICB8CisgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICArLS0tLS0t
LS0tLS0tLS0+IG9wX3Jlc3VtZSAtLS0tLT4gbWVyZ2UgcG9pbnQgLT4gLi4uLi4uKy4uLi4uLT4g
b3Bfc2F2ZSAgICAgICAgICAgICAgICAgIHwKKyAgICAvLyAgICAgICAgICAgICAgICAgICAgICAg
IHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdgorICAgIC8vICAgICAgICAgICAgICAg
ICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tPiBvcF9yZXN1bWUgLS0tLT4gbWVyZ2UgcG9pbnQgLT4gLi4uLi4uCisgICAgLy8KKyAg
ICAvLyBJbiByZXN1bWVkIHZhcmlhYmxlcyBhbmFseXNpcywgd2UganVzdCBydW4gdGhlIGxpdmVu
ZXNzIGFuYWx5c2lzIGFnYWluIG9udG8gdGhpcyAiQWZ0ZXIiIGdyYXBoLiBUaGUgYW5hbHlzaXMg
ZXh0cmFjdHMgdGhlIGxpdmVuZXNzIGF0IGVhY2ggbWVyZ2UgcG9pbnQsCisgICAgLy8gYW5kIHRo
aXMgbGl2ZW5lc3Mgb25seSBjb25zaWRlcnMgdGhlIHJlYWNoYWJsZSBibG9ja3MgZnJvbSB0aGUg
dGFyZ2V0IG9wX3Jlc3VtZS4gVGhlIHJlc3VsdCByZWdpc3RlcnMgYXJlIHNtYWxsZXIgc2V0IHRo
YW4gdGhlIHNldCB3aGljaCBpcyBleHRyYWN0ZWQgaW4KKyAgICAvLyB0aGUgcHJldmlvdXMgbGl2
ZW5lc3MgYW5hbHlzaXMuCisgICAgLy8KKyAgICAvLyBJbiBzYXZlZCB2YXJpYWJsZXMgYW5hbHlz
aXMsIHdlIHJ1biB0aGUgZm9yd2FyZCBhbmFseXNpcyBvbnRvIHRoaXMgIkFmdGVyIiBncmFwaC4g
SW4gdGhpcyBmb3J3YXJkIGFuYWx5c2lzLCB3ZSBwcm9wYWdhdGUgdGhlICJkZWYicy4KKyAgICAv
LyBUaGlzIGFuYWx5c2lzIGV4dHJhY3RzIHRoZSBuZXdseSBkZWYtZWQgcmVnaXN0ZXJzIHRoYXQg
Y2FuIHJlYWNoIHRvIHRoZSBvcF9zYXZlIHBvaW50LiBCdXQgdGhpcyBuZXdseSBkZWYtZWQgcmVn
aXN0ZXJzIGluY2x1ZGUgdGhlIHJlZ2lzdGVycyB0aGF0IHdvbid0IGJlCisgICAgLy8gdXNlZCBp
biB0aGUgc3Vic2VxdWVudCBuZXh0KCkgY2FsbHMgYWZ0ZXIgdGhpcyBvcF9zYXZlLiBTbyB3ZSBl
eHRyYWN0IHRoZSBuZWNlc3NhcmlseSBzYXZlZCByZWdpc3RlcnMgYnkgbWFza2luZyBsaXZlIHJl
Z2lzdGVycyB3aXRoIHRoaXMgbmV3bHkgZGVmLWVkIHJlZ2lzdGVycyBiaXQgc2V0LgorCisgICAg
eworICAgICAgICBHZW5lcmF0b3JMaXZlbmVzc0FuYWx5c2lzIHBhc3MoKnRoaXMpOworICAgICAg
ICBwYXNzLnJ1bigpOworICAgICAgICBmb3IgKFlpZWxkRGF0YSYgZGF0YSA6IG1feWllbGRzKQor
ICAgICAgICAgICAgZGF0YS5saXZlbmVzcyA9IHBhc3MuZ2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29k
ZU9mZnNldChkYXRhLm1lcmdlUG9pbnQpOworICAgIH0KKworICAgIHsKKyAgICAgICAgUmVzdW1l
ZFZhcmlhYmxlc0FuYWx5c2lzIHBhc3MoKnRoaXMpOworICAgICAgICBwYXNzLnJ1bigpOworICAg
ICAgICBmb3IgKFlpZWxkRGF0YSYgZGF0YSA6IG1feWllbGRzKSB7CisgICAgICAgICAgICBkYXRh
LnJlc3VtZWQgPSBkYXRhLmxpdmVuZXNzOworICAgICAgICAgICAgZGF0YS5yZXN1bWVkLmZpbHRl
cihwYXNzLmdldFJlc3VtZWRWYXJpYWJsZXNJbmZvQXRCeXRlY29kZU9mZnNldChkYXRhLm1lcmdl
UG9pbnQpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHsKKyAgICAgICAgU2F2ZWRWYXJpYWJs
ZXNBbmFseXNpcyBwYXNzKCp0aGlzKTsKKyAgICAgICAgcGFzcy5ydW4oKTsKKyAgICAgICAgZm9y
IChZaWVsZERhdGEmIGRhdGEgOiBtX3lpZWxkcykgeworICAgICAgICAgICAgZGF0YS5zYXZlZCA9
IGRhdGEubGl2ZW5lc3M7CisgICAgICAgICAgICBkYXRhLnNhdmVkLmZpbHRlcihwYXNzLmdldFNh
dmVkVmFyaWFibGVzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQoZGF0YS5zYXZlUG9pbnQpKTsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIFVubGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBtX2dyYXBo
LmNvZGVCbG9jaygpOworICAgIGZvciAoY29uc3QgWWllbGREYXRhJiBkYXRhIDogbV95aWVsZHMp
IHsKKyAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHNjb3BlID0gdmlydHVhbFJlZ2lzdGVyRm9yQXJn
dW1lbnQoNSk7CisKKyAgICAgICAgLy8gb3Bfc2F2ZS4KKyAgICAgICAgZGF0YS5zYXZlZC5mb3JF
YWNoU2V0Qml0KFsmXShzaXplX3QgaW5kZXgpIHsKKyAgICAgICAgICAgIFZpcnR1YWxSZWdpc3Rl
ciBvcGVyYW5kID0gdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaW5kZXgpOworICAgICAgICAgICAg
U3RvcmFnZSBzdG9yYWdlID0gc3RvcmFnZUZvckdlbmVyYXRvckxvY2FsKGluZGV4KTsKKworICAg
ICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0KGRhdGEuc2F2ZVBvaW50LCBCeXRlY29kZU1v
ZGlmaWNhdGlvblNldDo6SW5zZXJ0ZWRCeXRlY29kZSB7IHsKKyAgICAgICAgICAgICAgICBvcF9w
dXRfdG9fc2NvcGUsCisgICAgICAgICAgICAgICAgc2NvcGUub2Zmc2V0KCksIC8vIHNjb3BlCisg
ICAgICAgICAgICAgICAgc3RvcmFnZS5pZGVudGlmaWVySW5kZXgsIC8vIGlkZW50aWZpZXIKKyAg
ICAgICAgICAgICAgICBvcGVyYW5kLm9mZnNldCgpLCAvLyB2YWx1ZQorICAgICAgICAgICAgICAg
IEdldFB1dEluZm8oRG9Ob3RUaHJvd0lmTm90Rm91bmQsIExvY2FsQ2xvc3VyZVZhciwgSW5pdGlh
bGl6YXRpb25Nb2RlOjpOb3RJbml0aWFsaXphdGlvbikub3BlcmFuZCgpLCAvLyBpbmZvCisgICAg
ICAgICAgICAgICAgbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlSW5kZXgsIC8vIHN5bWJvbCB0
YWJsZSBjb25zdGFudCBpbmRleAorICAgICAgICAgICAgICAgIHN0b3JhZ2Uuc2NvcGVPZmZzZXQu
b2Zmc2V0KCksIC8vIHNjb3BlIG9mZnNldAorICAgICAgICAgICAgfSB9KTsKKyAgICAgICAgfSk7
CisKKyAgICAgICAgLy8gb3BfcmVzdW1lLgorICAgICAgICBkYXRhLnJlc3VtZWQuZm9yRWFjaFNl
dEJpdChbJl0oc2l6ZV90IGluZGV4KSB7CisgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgb3Bl
cmFuZCA9IHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGluZGV4KTsKKyAgICAgICAgICAgIFN0b3Jh
Z2Ugc3RvcmFnZSA9IHN0b3JhZ2VGb3JHZW5lcmF0b3JMb2NhbChpbmRleCk7CisKKyAgICAgICAg
ICAgIFVubGlua2VkVmFsdWVQcm9maWxlIHByb2ZpbGUgPSBjb2RlQmxvY2stPmFkZFZhbHVlUHJv
ZmlsZSgpOworICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0KGRhdGEucmVzdW1lUG9p
bnQsIEJ5dGVjb2RlTW9kaWZpY2F0aW9uU2V0OjpJbnNlcnRlZEJ5dGVjb2RlIHsgeworICAgICAg
ICAgICAgICAgIG9wX2dldF9mcm9tX3Njb3BlLAorICAgICAgICAgICAgICAgIG9wZXJhbmQub2Zm
c2V0KCksIC8vIGRzdAorICAgICAgICAgICAgICAgIHNjb3BlLm9mZnNldCgpLCAvLyBzY29wZQor
ICAgICAgICAgICAgICAgIHN0b3JhZ2UuaWRlbnRpZmllckluZGV4LCAvLyBpZGVudGlmaWVyCisg
ICAgICAgICAgICAgICAgR2V0UHV0SW5mbyhEb05vdFRocm93SWZOb3RGb3VuZCwgTG9jYWxDbG9z
dXJlVmFyLCBJbml0aWFsaXphdGlvbk1vZGU6Ok5vdEluaXRpYWxpemF0aW9uKS5vcGVyYW5kKCks
IC8vIGluZm8KKyAgICAgICAgICAgICAgICAwLCAvLyBsb2NhbCBzY29wZSBkZXB0aAorICAgICAg
ICAgICAgICAgIHN0b3JhZ2Uuc2NvcGVPZmZzZXQub2Zmc2V0KCksIC8vIHNjb3BlIG9mZnNldAor
ICAgICAgICAgICAgICAgIHByb2ZpbGUgLy8gcHJvZmlsZQorICAgICAgICAgICAgfSB9KTsKKyAg
ICAgICAgfSk7CisKKyAgICAgICAgLy8gQ2xpcCB0aGUgdW5uZWNlc3NhcnkgYnl0ZWNvZGVzLgor
ICAgICAgICBtX2luc2VydGlvblNldC5yZW1vdmVCeXRlY29kZShkYXRhLnNhdmVQb2ludCk7Cisg
ICAgICAgIG1faW5zZXJ0aW9uU2V0LnJlbW92ZUJ5dGVjb2RlKGRhdGEucmVzdW1lUG9pbnQpOwor
ICAgIH0KKworICAgIG1faW5zZXJ0aW9uU2V0LmV4ZWN1dGUoKTsKK30KKwordm9pZCBwZXJmb3Jt
R2VuZXJhdG9yaWZpY2F0aW9uKFVubGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFVubGlua2Vk
Q29kZUJsb2NrOjpVbnBhY2tlZEluc3RydWN0aW9ucyYgaW5zdHJ1Y3Rpb25zLCBTeW1ib2xUYWJs
ZSogZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZSwgaW50IGdlbmVyYXRvckZyYW1lU3ltYm9sVGFi
bGVJbmRleCkKK3sKKyAgICBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbiBwYXNzKGNvZGVCbG9j
aywgaW5zdHJ1Y3Rpb25zLCBnZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlLCBnZW5lcmF0b3JGcmFt
ZVN5bWJvbFRhYmxlSW5kZXgpOworICAgIHBhc3MucnVuKCk7Cit9CisKK30gLy8gbmFtZXNwYWNl
IEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
R2VuZXJhdG9yaWZpY2F0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYjdlYzk2ZWQ3MGRiYmEyMjEx
MWViMTM3NzMzZmIyMDA1NWIxMTFhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmgKQEAgLTAsMCArMSwz
NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRl
YUBnbWFpbC5jb20+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiVW5saW5r
ZWRDb2RlQmxvY2suaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIFN5bWJvbFRhYmxlOwor
Cit2b2lkIHBlcmZvcm1HZW5lcmF0b3JpZmljYXRpb24oVW5saW5rZWRDb2RlQmxvY2sqLCBVbmxp
bmtlZENvZGVCbG9jazo6VW5wYWNrZWRJbnN0cnVjdGlvbnMmLCBTeW1ib2xUYWJsZSogZ2VuZXJh
dG9yRnJhbWVTeW1ib2xUYWJsZSwgaW50IGdlbmVyYXRvckZyYW1lU3ltYm9sVGFibGVJbmRleCk7
CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlR3JhcGguaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZUdyYXBoLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjc1NTg0YjBmYTk0NzNlYjExMzI5Yzg5YTA3
OTljMDFkZTU1YjI4MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZUdyYXBoLmgKQEAgLTAsMCArMSwxMTQgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTYgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIEJ5dGVjb2RlR3JhcGhfaAorI2RlZmluZSBCeXRlY29kZUdyYXBoX2gKKwor
I2luY2x1ZGUgIkJ5dGVjb2RlQmFzaWNCbG9jay5oIgorI2luY2x1ZGUgPHd0Zi9JdGVyYXRvclJh
bmdlLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgSlNDIHsKKworY2xh
c3MgQnl0ZWNvZGVCYXNpY0Jsb2NrOworCit0ZW1wbGF0ZTx0eXBlbmFtZSBCbG9jaz4KK2NsYXNz
IEJ5dGVjb2RlR3JhcGggeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKEJ5dGVjb2RlR3JhcGgpOworcHVibGljOgorICAgIHR5cGVkZWYgVmVj
dG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiBCYXNpY0Jsb2Nrc1ZlY3Rv
cjsKKworICAgIGlubGluZSBCeXRlY29kZUdyYXBoKEJsb2NrKiwgdHlwZW5hbWUgQmxvY2s6OlVu
cGFja2VkSW5zdHJ1Y3Rpb25zJik7CisKKyAgICBCbG9jayogY29kZUJsb2NrKCkgY29uc3QgeyBy
ZXR1cm4gbV9jb2RlQmxvY2s7IH0KKworICAgIEJhc2ljQmxvY2tzVmVjdG9yJiBiYXNpY0Jsb2Nr
cygpIHsgcmV0dXJuIG1fYmFzaWNCbG9ja3M7IH0KKworICAgIHR5cGVuYW1lIEJsb2NrOjpVbnBh
Y2tlZEluc3RydWN0aW9ucyYgaW5zdHJ1Y3Rpb25zKCkgeyByZXR1cm4gbV9pbnN0cnVjdGlvbnM7
IH0KKworICAgIFdURjo6SXRlcmF0b3JSYW5nZTxCYXNpY0Jsb2Nrc1ZlY3Rvcjo6cmV2ZXJzZV9p
dGVyYXRvcj4gYmFzaWNCbG9ja3NJblJldmVyc2VPcmRlcigpCisgICAgeworICAgICAgICByZXR1
cm4gV1RGOjptYWtlSXRlcmF0b3JSYW5nZShtX2Jhc2ljQmxvY2tzLnJiZWdpbigpLCBtX2Jhc2lj
QmxvY2tzLnJlbmQoKSk7CisgICAgfQorCisgICAgc3RhdGljIGJvb2wgYmxvY2tDb250YWluc0J5
dGVjb2RlT2Zmc2V0KEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2Rl
T2Zmc2V0KQorICAgIHsKKyAgICAgICAgdW5zaWduZWQgbGVhZGVyT2Zmc2V0ID0gYmxvY2stPmxl
YWRlckJ5dGVjb2RlT2Zmc2V0KCk7CisgICAgICAgIHJldHVybiBieXRlY29kZU9mZnNldCA+PSBs
ZWFkZXJPZmZzZXQgJiYgYnl0ZWNvZGVPZmZzZXQgPCBsZWFkZXJPZmZzZXQgKyBibG9jay0+dG90
YWxCeXRlY29kZUxlbmd0aCgpOworICAgIH0KKworICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogZmlu
ZEJhc2ljQmxvY2tGb3JCeXRlY29kZU9mZnNldCh1bnNpZ25lZCBieXRlY29kZU9mZnNldCkKKyAg
ICB7CisgICAgICAgIC8qCisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9i
YXNpY0Jsb2Nrcy5zaXplKCk7IGkrKykgeworICAgICAgICAgICAgICAgIGlmIChibG9ja0NvbnRh
aW5zQnl0ZWNvZGVPZmZzZXQobV9iYXNpY0Jsb2Nrc1tpXS5nZXQoKSwgYnl0ZWNvZGVPZmZzZXQp
KQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbV9iYXNpY0Jsb2Nrc1tpXS5nZXQoKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAqLworCisgICAgICAg
IHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+KiBiYXNpY0Jsb2NrID0gYXBwcm94
aW1hdGVCaW5hcnlTZWFyY2g8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4sIHVu
c2lnbmVkPihtX2Jhc2ljQmxvY2tzLCBtX2Jhc2ljQmxvY2tzLnNpemUoKSwgYnl0ZWNvZGVPZmZz
ZXQsIFtdIChzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiogYmFzaWNCbG9jaykg
eyByZXR1cm4gKCpiYXNpY0Jsb2NrKS0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKTsgfSk7CisgICAg
ICAgIC8vIFdlIGZvdW5kIHRoZSBibG9jayB3ZSB3ZXJlIGxvb2tpbmcgZm9yLgorICAgICAgICBp
ZiAoYmxvY2tDb250YWluc0J5dGVjb2RlT2Zmc2V0KCgqYmFzaWNCbG9jaykuZ2V0KCksIGJ5dGVj
b2RlT2Zmc2V0KSkKKyAgICAgICAgICAgIHJldHVybiAoKmJhc2ljQmxvY2spLmdldCgpOworCisg
ICAgICAgIC8vIEJhc2ljIGJsb2NrIGlzIHRvIHRoZSBsZWZ0IG9mIHRoZSByZXR1cm5lZCBibG9j
ay4KKyAgICAgICAgaWYgKGJ5dGVjb2RlT2Zmc2V0IDwgKCpiYXNpY0Jsb2NrKS0+bGVhZGVyQnl0
ZWNvZGVPZmZzZXQoKSkgeworICAgICAgICAgICAgQVNTRVJUKGJhc2ljQmxvY2sgLSAxID49IG1f
YmFzaWNCbG9ja3MuZGF0YSgpKTsKKyAgICAgICAgICAgIEFTU0VSVChibG9ja0NvbnRhaW5zQnl0
ZWNvZGVPZmZzZXQoYmFzaWNCbG9ja1stMV0uZ2V0KCksIGJ5dGVjb2RlT2Zmc2V0KSk7CisgICAg
ICAgICAgICByZXR1cm4gYmFzaWNCbG9ja1stMV0uZ2V0KCk7CisgICAgICAgIH0KKworICAgICAg
ICAvLyBCYXNpYyBibG9jayBpcyB0byB0aGUgcmlnaHQgb2YgdGhlIHJldHVybmVkIGJsb2NrLgor
ICAgICAgICBBU1NFUlQoJmJhc2ljQmxvY2tbMV0gPD0gJm1fYmFzaWNCbG9ja3MubGFzdCgpKTsK
KyAgICAgICAgQVNTRVJUKGJsb2NrQ29udGFpbnNCeXRlY29kZU9mZnNldChiYXNpY0Jsb2NrWzFd
LmdldCgpLCBieXRlY29kZU9mZnNldCkpOworICAgICAgICByZXR1cm4gYmFzaWNCbG9ja1sxXS5n
ZXQoKTsKKyAgICB9CisKKyAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGZpbmRCYXNpY0Jsb2NrV2l0
aExlYWRlck9mZnNldCh1bnNpZ25lZCBsZWFkZXJPZmZzZXQpCisgICAgeworICAgICAgICByZXR1
cm4gKCp0cnlCaW5hcnlTZWFyY2g8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4s
IHVuc2lnbmVkPihtX2Jhc2ljQmxvY2tzLCBtX2Jhc2ljQmxvY2tzLnNpemUoKSwgbGVhZGVyT2Zm
c2V0LCBbXSAoc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4qIGJhc2ljQmxvY2sp
IHsgcmV0dXJuICgqYmFzaWNCbG9jayktPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCk7IH0pKS5nZXQo
KTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQmxvY2sqIG1fY29kZUJsb2NrOworICAgIEJhc2lj
QmxvY2tzVmVjdG9yIG1fYmFzaWNCbG9ja3M7CisgICAgdHlwZW5hbWUgQmxvY2s6OlVucGFja2Vk
SW5zdHJ1Y3Rpb25zJiBtX2luc3RydWN0aW9uczsKK307CisKKwordGVtcGxhdGU8dHlwZW5hbWUg
QmxvY2s+CitCeXRlY29kZUdyYXBoPEJsb2NrPjo6Qnl0ZWNvZGVHcmFwaChCbG9jayogY29kZUJs
b2NrLCB0eXBlbmFtZSBCbG9jazo6VW5wYWNrZWRJbnN0cnVjdGlvbnMmIGluc3RydWN0aW9ucykK
KyAgICA6IG1fY29kZUJsb2NrKGNvZGVCbG9jaykKKyAgICAsIG1faW5zdHJ1Y3Rpb25zKGluc3Ry
dWN0aW9ucykKK3sKKyAgICBBU1NFUlQobV9jb2RlQmxvY2spOworICAgIEJ5dGVjb2RlQmFzaWNC
bG9jazo6Y29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MobV9jb2RlQmxvY2ssIGluc3RydWN0aW9u
cy5iZWdpbigpLCBpbnN0cnVjdGlvbnMuc2l6ZSgpLCBtX2Jhc2ljQmxvY2tzKTsKKyAgICBBU1NF
UlQobV9iYXNpY0Jsb2Nrcy5zaXplKCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKyNlbmRp
ZiAvLyBCeXRlY29kZUdyYXBoX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAKaW5kZXggMTdlODJhMmZi
YmEwMTUwNDNlOTlkMzRlZDI1NjkzNzJiMzZmN2E4NS4uZWI0NTlkMTI5N2M5ZjczOWVlOWZiYWEx
MzAzN2Y4OWY4ZTg2YWIyZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAKQEAgLTMxLDc0ICszMSwy
MSBAQAogI2luY2x1ZGUgIkJ5dGVjb2RlVXNlRGVmLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgi
CiAjaW5jbHVkZSAiRnVsbEJ5dGVjb2RlTGl2ZW5lc3MuaCIKKyNpbmNsdWRlICJJbnRlcnByZXRl
cklubGluZXMuaCIKICNpbmNsdWRlICJQcmVjaXNlSnVtcFRhcmdldHMuaCIKIAogbmFtZXNwYWNl
IEpTQyB7CiAKIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5
c2lzKENvZGVCbG9jayogY29kZUJsb2NrKQotICAgIDogbV9jb2RlQmxvY2soY29kZUJsb2NrKQor
ICAgIDogbV9ncmFwaChjb2RlQmxvY2ssIGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkpCiB7Ci0g
ICAgQVNTRVJUKG1fY29kZUJsb2NrKTsKICAgICBjb21wdXRlKCk7CiB9CiAKLXN0YXRpYyBib29s
IGlzVmFsaWRSZWdpc3RlckZvckxpdmVuZXNzKENvZGVCbG9jayogY29kZUJsb2NrLCBpbnQgb3Bl
cmFuZCkKLXsKLSAgICBpZiAoY29kZUJsb2NrLT5pc0NvbnN0YW50UmVnaXN0ZXJJbmRleChvcGVy
YW5kKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIAotICAgIFZpcnR1YWxSZWdpc3RlciB2
aXJ0dWFsUmVnKG9wZXJhbmQpOwotICAgIHJldHVybiB2aXJ0dWFsUmVnLmlzTG9jYWwoKTsKLX0K
LQotc3RhdGljIHVuc2lnbmVkIGdldExlYWRlck9mZnNldEZvckJhc2ljQmxvY2soc3RkOjp1bmlx
dWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4qIGJhc2ljQmxvY2spCi17Ci0gICAgcmV0dXJuICgq
YmFzaWNCbG9jayktPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCk7Ci19Ci0KLXN0YXRpYyBCeXRlY29k
ZUJhc2ljQmxvY2sqIGZpbmRCYXNpY0Jsb2NrV2l0aExlYWRlck9mZnNldChWZWN0b3I8c3RkOjp1
bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+JiBiYXNpY0Jsb2NrcywgdW5zaWduZWQgbGVh
ZGVyT2Zmc2V0KQotewotICAgIHJldHVybiAoKnRyeUJpbmFyeVNlYXJjaDxzdGQ6OnVuaXF1ZV9w
dHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiwgdW5zaWduZWQ+KGJhc2ljQmxvY2tzLCBiYXNpY0Jsb2Nr
cy5zaXplKCksIGxlYWRlck9mZnNldCwgZ2V0TGVhZGVyT2Zmc2V0Rm9yQmFzaWNCbG9jaykpLmdl
dCgpOwotfQotCi1zdGF0aWMgYm9vbCBibG9ja0NvbnRhaW5zQnl0ZWNvZGVPZmZzZXQoQnl0ZWNv
ZGVCYXNpY0Jsb2NrKiBibG9jaywgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpCi17Ci0gICAgdW5z
aWduZWQgbGVhZGVyT2Zmc2V0ID0gYmxvY2stPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCk7Ci0gICAg
cmV0dXJuIGJ5dGVjb2RlT2Zmc2V0ID49IGxlYWRlck9mZnNldCAmJiBieXRlY29kZU9mZnNldCA8
IGxlYWRlck9mZnNldCArIGJsb2NrLT50b3RhbEJ5dGVjb2RlTGVuZ3RoKCk7Ci19Ci0KLXN0YXRp
YyBCeXRlY29kZUJhc2ljQmxvY2sqIGZpbmRCYXNpY0Jsb2NrRm9yQnl0ZWNvZGVPZmZzZXQoVmVj
dG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9ja3MsIHVu
c2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KQotewotLyoKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgYmFzaWNCbG9ja3Muc2l6ZSgpOyBpKyspIHsKLSAgICAgICAgaWYgKGJsb2NrQ29udGFpbnNC
eXRlY29kZU9mZnNldChiYXNpY0Jsb2Nrc1tpXS5nZXQoKSwgYnl0ZWNvZGVPZmZzZXQpKQotICAg
ICAgICAgICAgcmV0dXJuIGJhc2ljQmxvY2tzW2ldLmdldCgpOwotICAgIH0KLSAgICByZXR1cm4g
MDsKLSovCi0gICAgc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4qIGJhc2ljQmxv
Y2sgPSBhcHByb3hpbWF0ZUJpbmFyeVNlYXJjaDxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNp
Y0Jsb2NrPiwgdW5zaWduZWQ+KAotICAgICAgICBiYXNpY0Jsb2NrcywgYmFzaWNCbG9ja3Muc2l6
ZSgpLCBieXRlY29kZU9mZnNldCwgZ2V0TGVhZGVyT2Zmc2V0Rm9yQmFzaWNCbG9jayk7Ci0gICAg
Ly8gV2UgZm91bmQgdGhlIGJsb2NrIHdlIHdlcmUgbG9va2luZyBmb3IuCi0gICAgaWYgKGJsb2Nr
Q29udGFpbnNCeXRlY29kZU9mZnNldCgoKmJhc2ljQmxvY2spLmdldCgpLCBieXRlY29kZU9mZnNl
dCkpCi0gICAgICAgIHJldHVybiAoKmJhc2ljQmxvY2spLmdldCgpOwotCi0gICAgLy8gQmFzaWMg
YmxvY2sgaXMgdG8gdGhlIGxlZnQgb2YgdGhlIHJldHVybmVkIGJsb2NrLgotICAgIGlmIChieXRl
Y29kZU9mZnNldCA8ICgqYmFzaWNCbG9jayktPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCkpIHsKLSAg
ICAgICAgQVNTRVJUKGJhc2ljQmxvY2sgLSAxID49IGJhc2ljQmxvY2tzLmRhdGEoKSk7Ci0gICAg
ICAgIEFTU0VSVChibG9ja0NvbnRhaW5zQnl0ZWNvZGVPZmZzZXQoYmFzaWNCbG9ja1stMV0uZ2V0
KCksIGJ5dGVjb2RlT2Zmc2V0KSk7Ci0gICAgICAgIHJldHVybiBiYXNpY0Jsb2NrWy0xXS5nZXQo
KTsKLSAgICB9Ci0KLSAgICAvLyBCYXNpYyBibG9jayBpcyB0byB0aGUgcmlnaHQgb2YgdGhlIHJl
dHVybmVkIGJsb2NrLgotICAgIEFTU0VSVCgmYmFzaWNCbG9ja1sxXSA8PSAmYmFzaWNCbG9ja3Mu
bGFzdCgpKTsKLSAgICBBU1NFUlQoYmxvY2tDb250YWluc0J5dGVjb2RlT2Zmc2V0KGJhc2ljQmxv
Y2tbMV0uZ2V0KCksIGJ5dGVjb2RlT2Zmc2V0KSk7Ci0gICAgcmV0dXJuIGJhc2ljQmxvY2tbMV0u
Z2V0KCk7Ci19Ci0KIC8vIFNpbXBsaWZpZWQgaW50ZXJmYWNlIHRvIGJ5dGVjb2RlIHVzZS9kZWYs
IHdoaWNoIGRldGVybWluZXMgZGVmcyBmaXJzdCBhbmQgdGhlbiB1c2VzLCBhbmQgaW5jbHVkZXMK
IC8vIGV4Y2VwdGlvbiBoYW5kbGVycyBpbiB0aGUgdXNlcy4KIHRlbXBsYXRlPHR5cGVuYW1lIFVz
ZUZ1bmN0b3IsIHR5cGVuYW1lIERlZkZ1bmN0b3I+Ci1zdGF0aWMgdm9pZCBzdGVwT3Zlckluc3Ry
dWN0aW9uKENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrLCBW
ZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+JiBiYXNpY0Jsb2Nrcywg
dW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIGNvbnN0IFVzZUZ1bmN0b3ImIHVzZSwgY29uc3QgRGVm
RnVuY3RvciYgZGVmKQorc3RhdGljIHZvaWQgc3RlcE92ZXJJbnN0cnVjdGlvbihCeXRlY29kZUdy
YXBoPENvZGVCbG9jaz4mIGdyYXBoLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgY29uc3QgVXNl
RnVuY3RvciYgdXNlLCBjb25zdCBEZWZGdW5jdG9yJiBkZWYpCiB7CiAgICAgLy8gVGhpcyBhYnN0
cmFjdGx5IGV4ZWN1dGUgdGhlIGluc3RydWN0aW9uIGluIHJldmVyc2UuIEluc3RydWN0aW9ucyBs
b2dpY2FsbHkgZmlyc3QgdXNlIG9wZXJhbmRzIGFuZAogICAgIC8vIHRoZW4gZGVmaW5lIG9wZXJh
bmRzLiBUaGlzIGxvZ2ljYWwgb3JkZXJpbmcgaXMgbmVjZXNzYXJ5IGZvciBvcGVyYXRpb25zIHRo
YXQgdXNlIGFuZCBkZWYgdGhlIHNhbWUKQEAgLTExNSw0MSArNjIsMzUgQEAgc3RhdGljIHZvaWQg
c3RlcE92ZXJJbnN0cnVjdGlvbihDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Js
b2NrKiBibG9jaywKICAgICAvLyB1c2VzIGJlZm9yZSBkZWZzLCB0aGVuIHRoZSBhZGQgb3BlcmF0
aW9uIGFib3ZlIHdvdWxkIGFwcGVhciB0byBub3QgaGF2ZSBsb2MxIGxpdmUsIHNpbmNlIHdlJ2QK
ICAgICAvLyBmaXJzdCBhZGQgaXQgdG8gdGhlIG91dCBzZXQgKHRoZSB1c2UpLCBhbmQgdGhlbiB3
ZSdkIHJlbW92ZSBpdCAodGhlIGRlZikuCiAgICAgCisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sg
PSBncmFwaC5jb2RlQmxvY2soKTsKKwogICAgIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQo
Ci0gICAgICAgIGNvZGVCbG9jaywgYmxvY2ssIGJ5dGVjb2RlT2Zmc2V0LAotICAgICAgICBbJl0g
KENvZGVCbG9jayogY29kZUJsb2NrLCBJbnN0cnVjdGlvbiosIE9wY29kZUlELCBpbnQgb3BlcmFu
ZCkgewotICAgICAgICAgICAgaWYgKGlzVmFsaWRSZWdpc3RlckZvckxpdmVuZXNzKGNvZGVCbG9j
aywgb3BlcmFuZCkpCisgICAgICAgIGNvZGVCbG9jaywgYnl0ZWNvZGVPZmZzZXQsCisgICAgICAg
IFsmXSAoQ29kZUJsb2NrKiwgSW5zdHJ1Y3Rpb24qLCBPcGNvZGVJRCwgaW50IG9wZXJhbmQpIHsK
KyAgICAgICAgICAgIGlmIChpc1ZhbGlkUmVnaXN0ZXJGb3JMaXZlbmVzcyhvcGVyYW5kKSkKICAg
ICAgICAgICAgICAgICBkZWYoVmlydHVhbFJlZ2lzdGVyKG9wZXJhbmQpLnRvTG9jYWwoKSk7CiAg
ICAgICAgIH0pOwogCiAgICAgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCgKLSAgICAgICAg
Y29kZUJsb2NrLCBibG9jaywgYnl0ZWNvZGVPZmZzZXQsCi0gICAgICAgIFsmXSAoQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIEluc3RydWN0aW9uKiwgT3Bjb2RlSUQsIGludCBvcGVyYW5kKSB7Ci0gICAg
ICAgICAgICBpZiAoaXNWYWxpZFJlZ2lzdGVyRm9yTGl2ZW5lc3MoY29kZUJsb2NrLCBvcGVyYW5k
KSkKKyAgICAgICAgY29kZUJsb2NrLCBieXRlY29kZU9mZnNldCwKKyAgICAgICAgWyZdIChDb2Rl
QmxvY2sqLCBJbnN0cnVjdGlvbiosIE9wY29kZUlELCBpbnQgb3BlcmFuZCkgeworICAgICAgICAg
ICAgaWYgKGlzVmFsaWRSZWdpc3RlckZvckxpdmVuZXNzKG9wZXJhbmQpKQogICAgICAgICAgICAg
ICAgIHVzZShWaXJ0dWFsUmVnaXN0ZXIob3BlcmFuZCkudG9Mb2NhbCgpKTsKICAgICAgICAgfSk7
CiAKICAgICAvLyBJZiB3ZSBoYXZlIGFuIGV4Y2VwdGlvbiBoYW5kbGVyLCB3ZSB3YW50IHRoZSBs
aXZlLWluIHZhcmlhYmxlcyBvZiB0aGUgCiAgICAgLy8gZXhjZXB0aW9uIGhhbmRsZXIgYmxvY2sg
dG8gYmUgaW5jbHVkZWQgaW4gdGhlIGxpdmUtaW4gb2YgdGhpcyBwYXJ0aWN1bGFyIGJ5dGVjb2Rl
LgogICAgIGlmIChIYW5kbGVySW5mbyogaGFuZGxlciA9IGNvZGVCbG9jay0+aGFuZGxlckZvckJ5
dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KSkgewotICAgICAgICAvLyBGSVhNRTogVGhpcyBy
ZXN1bWUgY2hlY2sgc2hvdWxkIG5vdCBiZSBuZWVkZWQuCi0gICAgICAgIC8vIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTkyODEKLSAgICAgICAgSW50ZXJwcmV0ZXIq
IGludGVycHJldGVyID0gY29kZUJsb2NrLT52bSgpLT5pbnRlcnByZXRlcjsKLSAgICAgICAgSW5z
dHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luID0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5i
ZWdpbigpOwotICAgICAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSAmaW5zdHJ1Y3Rpb25z
QmVnaW5bYnl0ZWNvZGVPZmZzZXRdOwotICAgICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGludGVy
cHJldGVyLT5nZXRPcGNvZGVJRChpbnN0cnVjdGlvbi0+dS5vcGNvZGUpOwotICAgICAgICBpZiAo
b3Bjb2RlSUQgIT0gb3BfcmVzdW1lKSB7Ci0gICAgICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2sq
IGhhbmRsZXJCbG9jayA9IGZpbmRCYXNpY0Jsb2NrV2l0aExlYWRlck9mZnNldChiYXNpY0Jsb2Nr
cywgaGFuZGxlci0+dGFyZ2V0KTsKLSAgICAgICAgICAgIEFTU0VSVChoYW5kbGVyQmxvY2spOwot
ICAgICAgICAgICAgaGFuZGxlckJsb2NrLT5pbigpLmZvckVhY2hTZXRCaXQodXNlKTsKLSAgICAg
ICAgfQorICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGhhbmRsZXJCbG9jayA9IGdyYXBoLmZp
bmRCYXNpY0Jsb2NrV2l0aExlYWRlck9mZnNldChoYW5kbGVyLT50YXJnZXQpOworICAgICAgICBB
U1NFUlQoaGFuZGxlckJsb2NrKTsKKyAgICAgICAgaGFuZGxlckJsb2NrLT5pbigpLmZvckVhY2hT
ZXRCaXQodXNlKTsKICAgICB9CiB9CiAKLXN0YXRpYyB2b2lkIHN0ZXBPdmVySW5zdHJ1Y3Rpb24o
Q29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2ssIFZlY3Rvcjxz
dGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mIGJhc2ljQmxvY2tzLCB1bnNpZ25l
ZCBieXRlY29kZU9mZnNldCwgRmFzdEJpdFZlY3RvciYgb3V0KQorc3RhdGljIHZvaWQgc3RlcE92
ZXJJbnN0cnVjdGlvbihCeXRlY29kZUdyYXBoPENvZGVCbG9jaz4mIGdyYXBoLCB1bnNpZ25lZCBi
eXRlY29kZU9mZnNldCwgRmFzdEJpdFZlY3RvciYgb3V0KQogewogICAgIHN0ZXBPdmVySW5zdHJ1
Y3Rpb24oCi0gICAgICAgIGNvZGVCbG9jaywgYmxvY2ssIGJhc2ljQmxvY2tzLCBieXRlY29kZU9m
ZnNldCwKKyAgICAgICAgZ3JhcGgsIGJ5dGVjb2RlT2Zmc2V0LAogICAgICAgICBbJl0gKHVuc2ln
bmVkIGJpdEluZGV4KSB7CiAgICAgICAgICAgICAvLyBUaGlzIGlzIHRoZSB1c2UgZnVuY3Rvciwg
c28gd2Ugc2V0IHRoZSBiaXQuCiAgICAgICAgICAgICBvdXQuc2V0KGJpdEluZGV4KTsKQEAgLTE2
MCw3ICsxMDEsNyBAQCBzdGF0aWMgdm9pZCBzdGVwT3Zlckluc3RydWN0aW9uKENvZGVCbG9jayog
Y29kZUJsb2NrLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrLAogICAgICAgICB9KTsKIH0KIAot
c3RhdGljIHZvaWQgY29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCeXRlY29kZU9mZnNldChDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaywgVmVjdG9yPHN0ZDo6dW5p
cXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9ja3MsIHVuc2lnbmVkIHRhcmdl
dE9mZnNldCwgRmFzdEJpdFZlY3RvciYgcmVzdWx0KQorc3RhdGljIHZvaWQgY29tcHV0ZUxvY2Fs
TGl2ZW5lc3NGb3JCeXRlY29kZU9mZnNldChCeXRlY29kZUdyYXBoPENvZGVCbG9jaz4mIGdyYXBo
LCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrLCB1bnNpZ25lZCB0YXJnZXRPZmZzZXQsIEZhc3RC
aXRWZWN0b3ImIHJlc3VsdCkKIHsKICAgICBBU1NFUlQoIWJsb2NrLT5pc0V4aXRCbG9jaygpKTsK
ICAgICBBU1NFUlQoIWJsb2NrLT5pc0VudHJ5QmxvY2soKSk7CkBAIC0xNzIsNDQgKzExMyw0NCBA
QCBzdGF0aWMgdm9pZCBjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVC
bG9jayogY29kZUJsb2NrLCBCeXRlY29kZQogICAgICAgICBpZiAodGFyZ2V0T2Zmc2V0ID4gYnl0
ZWNvZGVPZmZzZXQpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgCi0gICAgICAgIHN0ZXBP
dmVySW5zdHJ1Y3Rpb24oY29kZUJsb2NrLCBibG9jaywgYmFzaWNCbG9ja3MsIGJ5dGVjb2RlT2Zm
c2V0LCBvdXQpOworICAgICAgICBzdGVwT3Zlckluc3RydWN0aW9uKGdyYXBoLCBieXRlY29kZU9m
ZnNldCwgb3V0KTsKICAgICB9CiAKICAgICByZXN1bHQuc2V0KG91dCk7CiB9CiAKLXN0YXRpYyB2
b2lkIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQmxvY2soQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5
dGVjb2RlQmFzaWNCbG9jayogYmxvY2ssIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVC
YXNpY0Jsb2NrPj4mIGJhc2ljQmxvY2tzKQorc3RhdGljIHZvaWQgY29tcHV0ZUxvY2FsTGl2ZW5l
c3NGb3JCbG9jayhCeXRlY29kZUdyYXBoPENvZGVCbG9jaz4mIGdyYXBoLCBCeXRlY29kZUJhc2lj
QmxvY2sqIGJsb2NrKQogewogICAgIGlmIChibG9jay0+aXNFeGl0QmxvY2soKSB8fCBibG9jay0+
aXNFbnRyeUJsb2NrKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBjb21wdXRlTG9jYWxMaXZlbmVz
c0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9jaywgYmxvY2ssIGJhc2ljQmxvY2tzLCBibG9jay0+
bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKSwgYmxvY2stPmluKCkpOworICAgIGNvbXB1dGVMb2NhbExp
dmVuZXNzRm9yQnl0ZWNvZGVPZmZzZXQoZ3JhcGgsIGJsb2NrLCBibG9jay0+bGVhZGVyQnl0ZWNv
ZGVPZmZzZXQoKSwgYmxvY2stPmluKCkpOwogfQogCiB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFs
eXNpczo6cnVuTGl2ZW5lc3NGaXhwb2ludCgpCiB7Ci0gICAgVW5saW5rZWRDb2RlQmxvY2sqIHVu
bGlua2VkQ29kZUJsb2NrID0gbV9jb2RlQmxvY2stPnVubGlua2VkQ29kZUJsb2NrKCk7CisgICAg
Q29kZUJsb2NrKiBjb2RlQmxvY2sgPSBtX2dyYXBoLmNvZGVCbG9jaygpOworICAgIFVubGlua2Vk
Q29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jayA9IGNvZGVCbG9jay0+dW5saW5rZWRDb2RlQmxv
Y2soKTsKICAgICB1bnNpZ25lZCBudW1iZXJPZlZhcmlhYmxlcyA9IHVubGlua2VkQ29kZUJsb2Nr
LT5tX251bUNhbGxlZUxvY2FsczsKIAotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2Jh
c2ljQmxvY2tzLnNpemUoKTsgaSsrKSB7Ci0gICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxv
Y2sgPSBtX2Jhc2ljQmxvY2tzW2ldLmdldCgpOworICAgIGZvciAoc3RkOjp1bmlxdWVfcHRyPEJ5
dGVjb2RlQmFzaWNCbG9jaz4mIGJsb2NrIDogbV9ncmFwaC5iYXNpY0Jsb2NrcygpKSB7CiAgICAg
ICAgIGJsb2NrLT5pbigpLnJlc2l6ZShudW1iZXJPZlZhcmlhYmxlcyk7CiAgICAgICAgIGJsb2Nr
LT5vdXQoKS5yZXNpemUobnVtYmVyT2ZWYXJpYWJsZXMpOwogICAgIH0KIAogICAgIGJvb2wgY2hh
bmdlZDsKLSAgICBtX2Jhc2ljQmxvY2tzLmxhc3QoKS0+aW4oKS5jbGVhckFsbCgpOwotICAgIG1f
YmFzaWNCbG9ja3MubGFzdCgpLT5vdXQoKS5jbGVhckFsbCgpOworICAgIEJ5dGVjb2RlQmFzaWNC
bG9jayogbGFzdEJsb2NrID0gbV9ncmFwaC5iYXNpY0Jsb2NrcygpLmxhc3QoKS5nZXQoKTsKKyAg
ICBsYXN0QmxvY2stPmluKCkuY2xlYXJBbGwoKTsKKyAgICBsYXN0QmxvY2stPm91dCgpLmNsZWFy
QWxsKCk7CiAgICAgRmFzdEJpdFZlY3RvciBuZXdPdXQ7Ci0gICAgbmV3T3V0LnJlc2l6ZShtX2Jh
c2ljQmxvY2tzLmxhc3QoKS0+b3V0KCkubnVtQml0cygpKTsKKyAgICBuZXdPdXQucmVzaXplKGxh
c3RCbG9jay0+b3V0KCkubnVtQml0cygpKTsKICAgICBkbyB7CiAgICAgICAgIGNoYW5nZWQgPSBm
YWxzZTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9iYXNpY0Jsb2Nrcy5zaXplKCkgLSAx
OyBpLS07KSB7Ci0gICAgICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrID0gbV9iYXNp
Y0Jsb2Nrc1tpXS5nZXQoKTsKKyAgICAgICAgZm9yIChzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVC
YXNpY0Jsb2NrPiYgYmxvY2sgOiBtX2dyYXBoLmJhc2ljQmxvY2tzSW5SZXZlcnNlT3JkZXIoKSkg
ewogICAgICAgICAgICAgbmV3T3V0LmNsZWFyQWxsKCk7Ci0gICAgICAgICAgICBmb3IgKHVuc2ln
bmVkIGogPSAwOyBqIDwgYmxvY2stPnN1Y2Nlc3NvcnMoKS5zaXplKCk7IGorKykKLSAgICAgICAg
ICAgICAgICBuZXdPdXQubWVyZ2UoYmxvY2stPnN1Y2Nlc3NvcnMoKVtqXS0+aW4oKSk7CisgICAg
ICAgICAgICBmb3IgKEJ5dGVjb2RlQmFzaWNCbG9jayogc3VjY2Vzc29yIDogYmxvY2stPnN1Y2Nl
c3NvcnMoKSkKKyAgICAgICAgICAgICAgICBuZXdPdXQubWVyZ2Uoc3VjY2Vzc29yLT5pbigpKTsK
ICAgICAgICAgICAgIGJvb2wgb3V0RGlkQ2hhbmdlID0gYmxvY2stPm91dCgpLnNldEFuZENoZWNr
KG5ld091dCk7Ci0gICAgICAgICAgICBjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJsb2NrKG1fY29k
ZUJsb2NrLCBibG9jaywgbV9iYXNpY0Jsb2Nrcyk7CisgICAgICAgICAgICBjb21wdXRlTG9jYWxM
aXZlbmVzc0ZvckJsb2NrKG1fZ3JhcGgsIGJsb2NrLmdldCgpKTsKICAgICAgICAgICAgIGNoYW5n
ZWQgfD0gb3V0RGlkQ2hhbmdlOwogICAgICAgICB9CiAgICAgfSB3aGlsZSAoY2hhbmdlZCk7CkBA
IC0yMTcsMTIgKzE1OCwxMiBAQCB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6cnVuTGl2
ZW5lc3NGaXhwb2ludCgpCiAKIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpnZXRMaXZl
bmVzc0luZm9BdEJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBGYXN0Qml0
VmVjdG9yJiByZXN1bHQpCiB7Ci0gICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jayA9IGZpbmRC
YXNpY0Jsb2NrRm9yQnl0ZWNvZGVPZmZzZXQobV9iYXNpY0Jsb2NrcywgYnl0ZWNvZGVPZmZzZXQp
OworICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2sgPSBtX2dyYXBoLmZpbmRCYXNpY0Jsb2Nr
Rm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpOwogICAgIEFTU0VSVChibG9jayk7CiAg
ICAgQVNTRVJUKCFibG9jay0+aXNFbnRyeUJsb2NrKCkpOwogICAgIEFTU0VSVCghYmxvY2stPmlz
RXhpdEJsb2NrKCkpOwogICAgIHJlc3VsdC5yZXNpemUoYmxvY2stPm91dCgpLm51bUJpdHMoKSk7
Ci0gICAgY29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCeXRlY29kZU9mZnNldChtX2NvZGVCbG9jaywg
YmxvY2ssIG1fYmFzaWNCbG9ja3MsIGJ5dGVjb2RlT2Zmc2V0LCByZXN1bHQpOworICAgIGNvbXB1
dGVMb2NhbExpdmVuZXNzRm9yQnl0ZWNvZGVPZmZzZXQobV9ncmFwaCwgYmxvY2ssIGJ5dGVjb2Rl
T2Zmc2V0LCByZXN1bHQpOwogfQogCiBib29sIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6b3Bl
cmFuZElzTGl2ZUF0Qnl0ZWNvZGVPZmZzZXQoaW50IG9wZXJhbmQsIHVuc2lnbmVkIGJ5dGVjb2Rl
T2Zmc2V0KQpAQCAtMjQ0LDExICsxODUsMTEgQEAgRmFzdEJpdFZlY3RvciBCeXRlY29kZUxpdmVu
ZXNzQW5hbHlzaXM6OmdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQodW5zaWduZWQKIHZv
aWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlRnVsbExpdmVuZXNzKEZ1bGxCeXRl
Y29kZUxpdmVuZXNzJiByZXN1bHQpCiB7CiAgICAgRmFzdEJpdFZlY3RvciBvdXQ7CisgICAgQ29k
ZUJsb2NrKiBjb2RlQmxvY2sgPSBtX2dyYXBoLmNvZGVCbG9jaygpOwogICAgIAotICAgIHJlc3Vs
dC5tX21hcC5yZXNpemUobV9jb2RlQmxvY2stPmluc3RydWN0aW9ucygpLnNpemUoKSk7CisgICAg
cmVzdWx0Lm1fbWFwLnJlc2l6ZShjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLnNpemUoKSk7CiAg
ICAgCi0gICAgZm9yICh1bnNpZ25lZCBpID0gbV9iYXNpY0Jsb2Nrcy5zaXplKCk7IGktLTspIHsK
LSAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jayA9IG1fYmFzaWNCbG9ja3NbaV0uZ2V0
KCk7CisgICAgZm9yIChzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiYgYmxvY2sg
OiBtX2dyYXBoLmJhc2ljQmxvY2tzSW5SZXZlcnNlT3JkZXIoKSkgewogICAgICAgICBpZiAoYmxv
Y2stPmlzRW50cnlCbG9jaygpIHx8IGJsb2NrLT5pc0V4aXRCbG9jaygpKQogICAgICAgICAgICAg
Y29udGludWU7CiAgICAgICAgIApAQCAtMjU2LDcgKzE5Nyw3IEBAIHZvaWQgQnl0ZWNvZGVMaXZl
bmVzc0FuYWx5c2lzOjpjb21wdXRlRnVsbExpdmVuZXNzKEZ1bGxCeXRlY29kZUxpdmVuZXNzJiBy
ZXN1bHQpCiAgICAgICAgIAogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBibG9jay0+Ynl0ZWNv
ZGVPZmZzZXRzKCkuc2l6ZSgpOyBpLS07KSB7CiAgICAgICAgICAgICB1bnNpZ25lZCBieXRlY29k
ZU9mZnNldCA9IGJsb2NrLT5ieXRlY29kZU9mZnNldHMoKVtpXTsKLSAgICAgICAgICAgIHN0ZXBP
dmVySW5zdHJ1Y3Rpb24obV9jb2RlQmxvY2ssIGJsb2NrLCBtX2Jhc2ljQmxvY2tzLCBieXRlY29k
ZU9mZnNldCwgb3V0KTsKKyAgICAgICAgICAgIHN0ZXBPdmVySW5zdHJ1Y3Rpb24obV9ncmFwaCwg
Ynl0ZWNvZGVPZmZzZXQsIG91dCk7CiAgICAgICAgICAgICByZXN1bHQubV9tYXBbYnl0ZWNvZGVP
ZmZzZXRdID0gb3V0OwogICAgICAgICB9CiAgICAgfQpAQCAtMjY2LDExICsyMDcsMTEgQEAgdm9p
ZCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGVLaWxscyhCeXRlY29kZUtpbGxzJiBy
ZXN1bHQpCiB7CiAgICAgRmFzdEJpdFZlY3RvciBvdXQ7CiAgICAgCi0gICAgcmVzdWx0Lm1fY29k
ZUJsb2NrID0gbV9jb2RlQmxvY2s7Ci0gICAgcmVzdWx0Lm1fa2lsbFNldHMgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEJ5dGVjb2RlS2lsbHM6OktpbGxTZXRbXT4obV9jb2RlQmxvY2stPmluc3RydWN0aW9u
cygpLnNpemUoKSk7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBtX2dyYXBoLmNvZGVCbG9j
aygpOworICAgIHJlc3VsdC5tX2NvZGVCbG9jayA9IGNvZGVCbG9jazsKKyAgICByZXN1bHQubV9r
aWxsU2V0cyA9IHN0ZDo6bWFrZV91bmlxdWU8Qnl0ZWNvZGVLaWxsczo6S2lsbFNldFtdPihjb2Rl
QmxvY2stPmluc3RydWN0aW9ucygpLnNpemUoKSk7CiAgICAgCi0gICAgZm9yICh1bnNpZ25lZCBp
ID0gbV9iYXNpY0Jsb2Nrcy5zaXplKCk7IGktLTspIHsKLSAgICAgICAgQnl0ZWNvZGVCYXNpY0Js
b2NrKiBibG9jayA9IG1fYmFzaWNCbG9ja3NbaV0uZ2V0KCk7CisgICAgZm9yIChzdGQ6OnVuaXF1
ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiYgYmxvY2sgOiBtX2dyYXBoLmJhc2ljQmxvY2tzSW5S
ZXZlcnNlT3JkZXIoKSkgewogICAgICAgICBpZiAoYmxvY2stPmlzRW50cnlCbG9jaygpIHx8IGJs
b2NrLT5pc0V4aXRCbG9jaygpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIApAQCAt
Mjc5LDcgKzIyMCw3IEBAIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlS2ls
bHMoQnl0ZWNvZGVLaWxscyYgcmVzdWx0KQogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBibG9j
ay0+Ynl0ZWNvZGVPZmZzZXRzKCkuc2l6ZSgpOyBpLS07KSB7CiAgICAgICAgICAgICB1bnNpZ25l
ZCBieXRlY29kZU9mZnNldCA9IGJsb2NrLT5ieXRlY29kZU9mZnNldHMoKVtpXTsKICAgICAgICAg
ICAgIHN0ZXBPdmVySW5zdHJ1Y3Rpb24oCi0gICAgICAgICAgICAgICAgbV9jb2RlQmxvY2ssIGJs
b2NrLCBtX2Jhc2ljQmxvY2tzLCBieXRlY29kZU9mZnNldCwKKyAgICAgICAgICAgICAgICBtX2dy
YXBoLCBieXRlY29kZU9mZnNldCwKICAgICAgICAgICAgICAgICBbJl0gKHVuc2lnbmVkIGluZGV4
KSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgZm9yIHVzZXMuCiAgICAgICAgICAg
ICAgICAgICAgIGlmIChvdXQuZ2V0KGluZGV4KSkKQEAgLTI5NywxMiArMjM4LDEzIEBAIHZvaWQg
Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlS2lsbHMoQnl0ZWNvZGVLaWxscyYgcmVz
dWx0KQogCiB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6ZHVtcFJlc3VsdHMoKQogewot
ICAgIGRhdGFMb2coIlxuRHVtcGluZyBieXRlY29kZSBsaXZlbmVzcyBmb3IgIiwgKm1fY29kZUJs
b2NrLCAiOlxuIik7Ci0gICAgSW50ZXJwcmV0ZXIqIGludGVycHJldGVyID0gbV9jb2RlQmxvY2st
PnZtKCktPmludGVycHJldGVyOwotICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiA9
IG1fY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpOwotICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBtX2Jhc2ljQmxvY2tzLnNpemUoKTsgaSsrKSB7Ci0gICAgICAgIEJ5dGVjb2Rl
QmFzaWNCbG9jayogYmxvY2sgPSBtX2Jhc2ljQmxvY2tzW2ldLmdldCgpOwotICAgICAgICBkYXRh
TG9nRigiXG5CeXRlY29kZSBiYXNpYyBibG9jayAldTogJXAgKG9mZnNldDogJXUsIGxlbmd0aDog
JXUpXG4iLCBpLCBibG9jaywgYmxvY2stPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCksIGJsb2NrLT50
b3RhbEJ5dGVjb2RlTGVuZ3RoKCkpOworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gbV9ncmFw
aC5jb2RlQmxvY2soKTsKKyAgICBkYXRhTG9nKCJcbkR1bXBpbmcgYnl0ZWNvZGUgbGl2ZW5lc3Mg
Zm9yICIsICpjb2RlQmxvY2ssICI6XG4iKTsKKyAgICBJbnRlcnByZXRlciogaW50ZXJwcmV0ZXIg
PSBjb2RlQmxvY2stPnZtKCktPmludGVycHJldGVyOworICAgIEluc3RydWN0aW9uKiBpbnN0cnVj
dGlvbnNCZWdpbiA9IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsKKyAgICB1bnNp
Z25lZCBpID0gMDsKKyAgICBmb3IgKHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+
JiBibG9jayA6IG1fZ3JhcGguYmFzaWNCbG9ja3MoKSkgeworICAgICAgICBkYXRhTG9nRigiXG5C
eXRlY29kZSBiYXNpYyBibG9jayAldTogJXAgKG9mZnNldDogJXUsIGxlbmd0aDogJXUpXG4iLCBp
KyssIGJsb2NrLmdldCgpLCBibG9jay0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKSwgYmxvY2stPnRv
dGFsQnl0ZWNvZGVMZW5ndGgoKSk7CiAgICAgICAgIGRhdGFMb2dGKCJTdWNjZXNzb3JzOiAiKTsK
ICAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8IGJsb2NrLT5zdWNjZXNzb3JzKCkuc2l6
ZSgpOyBqKyspIHsKICAgICAgICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogc3VjY2Vzc29yID0g
YmxvY2stPnN1Y2Nlc3NvcnMoKVtqXTsKQEAgLTMxMCwxMSArMjUyLDExIEBAIHZvaWQgQnl0ZWNv
ZGVMaXZlbmVzc0FuYWx5c2lzOjpkdW1wUmVzdWx0cygpCiAgICAgICAgIH0KICAgICAgICAgZGF0
YUxvZ0YoIlxuIik7CiAgICAgICAgIGlmIChibG9jay0+aXNFbnRyeUJsb2NrKCkpIHsKLSAgICAg
ICAgICAgIGRhdGFMb2dGKCJFbnRyeSBibG9jayAlcFxuIiwgYmxvY2spOworICAgICAgICAgICAg
ZGF0YUxvZ0YoIkVudHJ5IGJsb2NrICVwXG4iLCBibG9jay5nZXQoKSk7CiAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgfQogICAgICAgICBpZiAoYmxvY2stPmlzRXhpdEJsb2NrKCkpIHsK
LSAgICAgICAgICAgIGRhdGFMb2dGKCJFeGl0IGJsb2NrOiAlcFxuIiwgYmxvY2spOworICAgICAg
ICAgICAgZGF0YUxvZ0YoIkV4aXQgYmxvY2s6ICVwXG4iLCBibG9jay5nZXQoKSk7CiAgICAgICAg
ICAgICBjb250aW51ZTsKICAgICAgICAgfQogICAgICAgICBmb3IgKHVuc2lnbmVkIGJ5dGVjb2Rl
T2Zmc2V0ID0gYmxvY2stPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCk7IGJ5dGVjb2RlT2Zmc2V0IDwg
YmxvY2stPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCkgKyBibG9jay0+dG90YWxCeXRlY29kZUxlbmd0
aCgpOykgewpAQCAtMzI3LDcgKzI2OSw3IEBAIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lz
OjpkdW1wUmVzdWx0cygpCiAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2dGKCIldSAiLCBqKTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGRhdGFMb2dGKCJcbiIpOwotICAgICAgICAgICAg
bV9jb2RlQmxvY2stPmR1bXBCeXRlY29kZShXVEY6OmRhdGFGaWxlKCksIG1fY29kZUJsb2NrLT5n
bG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpLCBpbnN0cnVjdGlvbnNCZWdpbiwgY3VycmVudElu
c3RydWN0aW9uKTsKKyAgICAgICAgICAgIGNvZGVCbG9jay0+ZHVtcEJ5dGVjb2RlKFdURjo6ZGF0
YUZpbGUoKSwgY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpLCBpbnN0cnVj
dGlvbnNCZWdpbiwgY3VycmVudEluc3RydWN0aW9uKTsKIAogICAgICAgICAgICAgT3Bjb2RlSUQg
b3Bjb2RlSUQgPSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25zQmVnaW5bYnl0
ZWNvZGVPZmZzZXRdLnUub3Bjb2RlKTsKICAgICAgICAgICAgIHVuc2lnbmVkIG9wY29kZUxlbmd0
aCA9IG9wY29kZUxlbmd0aHNbb3Bjb2RlSURdOwpAQCAtMzQ2LDggKzI4OCw2IEBAIHZvaWQgQnl0
ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpkdW1wUmVzdWx0cygpCiAKIHZvaWQgQnl0ZWNvZGVMaXZl
bmVzc0FuYWx5c2lzOjpjb21wdXRlKCkKIHsKLSAgICBjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2Nr
cyhtX2NvZGVCbG9jaywgbV9iYXNpY0Jsb2Nrcyk7Ci0gICAgQVNTRVJUKG1fYmFzaWNCbG9ja3Mu
c2l6ZSgpKTsKICAgICBydW5MaXZlbmVzc0ZpeHBvaW50KCk7CiAKICAgICBpZiAoT3B0aW9uczo6
ZHVtcEJ5dGVjb2RlTGl2ZW5lc3NSZXN1bHRzKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmgKaW5kZXggZWNl
MTZmMjFmMDE1MTBhNjQyN2ZkODQxMTQwNzliZWQ4NzBjMDg3NS4uY2IxNDkzYjJhYTZjODkwM2M3
OTVhOWYyZDFjMjk3NmUxMGQzNjZkMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuaApAQCAtMjcsNiArMjcs
OCBAQAogI2RlZmluZSBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNfaAogCiAjaW5jbHVkZSAiQnl0
ZWNvZGVCYXNpY0Jsb2NrLmgiCisjaW5jbHVkZSAiQnl0ZWNvZGVHcmFwaC5oIgorI2luY2x1ZGUg
IkNvZGVCbG9jay5oIgogI2luY2x1ZGUgPHd0Zi9GYXN0Qml0VmVjdG9yLmg+CiAjaW5jbHVkZSA8
d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC0zNCw3ICszNiw2IEBA
CiBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgQnl0ZWNvZGVLaWxsczsKLWNsYXNzIENvZGVCbG9j
azsKIGNsYXNzIEZ1bGxCeXRlY29kZUxpdmVuZXNzOwogCiBjbGFzcyBCeXRlY29kZUxpdmVuZXNz
QW5hbHlzaXMgewpAQCAtNTYsMTMgKzU3LDEzIEBAIGNsYXNzIEJ5dGVjb2RlTGl2ZW5lc3NBbmFs
eXNpcyB7CiAKICAgICB2b2lkIGdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQodW5zaWdu
ZWQgYnl0ZWNvZGVPZmZzZXQsIEZhc3RCaXRWZWN0b3ImKTsKIAotICAgIENvZGVCbG9jayogbV9j
b2RlQmxvY2s7Ci0gICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+
PiBtX2Jhc2ljQmxvY2tzOworICAgIEJ5dGVjb2RlR3JhcGg8Q29kZUJsb2NrPiBtX2dyYXBoOwog
fTsKIAogaW5saW5lIGJvb2wgb3BlcmFuZElzQWx3YXlzTGl2ZShpbnQgb3BlcmFuZCk7CiBpbmxp
bmUgYm9vbCBvcGVyYW5kVGhhdElzTm90QWx3YXlzTGl2ZUlzTGl2ZShjb25zdCBGYXN0Qml0VmVj
dG9yJiBvdXQsIGludCBvcGVyYW5kKTsKIGlubGluZSBib29sIG9wZXJhbmRJc0xpdmUoY29uc3Qg
RmFzdEJpdFZlY3RvciYgb3V0LCBpbnQgb3BlcmFuZCk7CitpbmxpbmUgYm9vbCBpc1ZhbGlkUmVn
aXN0ZXJGb3JMaXZlbmVzcyhpbnQgb3BlcmFuZCk7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVz
c0FuYWx5c2lzSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVj
b2RlTGl2ZW5lc3NBbmFseXNpc0lubGluZXMuaAppbmRleCA5YjVjNzU1ZmNiNmNkNTE4MDUxNDUw
MDc4OTIyYWM0ZDZkNGQyMzhmLi45MGMyOTI5OWEyNWY1NzljZGE2NDlkOTg3OGNlMTU0OGM0OGM3
NTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVM
aXZlbmVzc0FuYWx5c2lzSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNJbmxpbmVzLmgKQEAgLTUwLDYgKzUwLDE0IEBA
IGlubGluZSBib29sIG9wZXJhbmRJc0xpdmUoY29uc3QgRmFzdEJpdFZlY3RvciYgb3V0LCBpbnQg
b3BlcmFuZCkKICAgICByZXR1cm4gb3BlcmFuZElzQWx3YXlzTGl2ZShvcGVyYW5kKSB8fCBvcGVy
YW5kVGhhdElzTm90QWx3YXlzTGl2ZUlzTGl2ZShvdXQsIG9wZXJhbmQpOwogfQogCitpbmxpbmUg
Ym9vbCBpc1ZhbGlkUmVnaXN0ZXJGb3JMaXZlbmVzcyhpbnQgb3BlcmFuZCkKK3sKKyAgICBWaXJ0
dWFsUmVnaXN0ZXIgdmlydHVhbFJlZyhvcGVyYW5kKTsKKyAgICBpZiAodmlydHVhbFJlZy5pc0Nv
bnN0YW50KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gdmlydHVhbFJlZy5p
c0xvY2FsKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gQnl0ZWNvZGVM
aXZlbmVzc0FuYWx5c2lzSW5saW5lc19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnl0ZWNvZGVNb2RpZmljYXRpb25TZXQuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTW9kaWZpY2F0aW9uU2V0LmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44
YWMyZjhlY2ExMTU5YzIzMTZhYjUxOGIzY2FhYTc0NzQ4ZWJhNTYwCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTW9kaWZpY2F0aW9uU2V0
LmNwcApAQCAtMCwwICsxLDg0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IFl1c3VrZSBT
dXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIkJ5dGVjb2RlTW9kaWZpY2F0aW9uU2V0LmgiCisKKyNpbmNsdWRlIDx3
dGYvQnViYmxlU29ydC5oPgorCituYW1lc3BhY2UgSlNDIHsKKworaW50IEJ5dGVjb2RlTW9kaWZp
Y2F0aW9uU2V0OjphZGp1c3RPZmZzZXQoaW50IGJ5dGVjb2RlT2Zmc2V0LCBpbnQganVtcFRhcmdl
dCkKK3sKKyAgICBpZiAoYnl0ZWNvZGVPZmZzZXQgPCBqdW1wVGFyZ2V0KSB7CisgICAgICAgIGF1
dG8gc3RhcnQgPSBzdGQ6Omxvd2VyX2JvdW5kKG1faW5zZXJ0aW9ucy5iZWdpbigpLCBtX2luc2Vy
dGlvbnMuZW5kKCksIGJ5dGVjb2RlT2Zmc2V0LCBbJl0gKGNvbnN0IEluc2VydGlvbiYgaW5zZXJ0
aW9uLCBpbnQgYnl0ZWNvZGVPZmZzZXQpIHsKKyAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxpbnQ+KGluc2VydGlvbi5pbmRleCgpKSA8IGJ5dGVjb2RlT2Zmc2V0OworICAgICAgICB9KTsK
KyAgICAgICAgaWYgKHN0YXJ0ICE9IG1faW5zZXJ0aW9ucy5lbmQoKSkgeworICAgICAgICAgICAg
YXV0byBlbmQgPSBzdGQ6Omxvd2VyX2JvdW5kKG1faW5zZXJ0aW9ucy5iZWdpbigpLCBtX2luc2Vy
dGlvbnMuZW5kKCksIGp1bXBUYXJnZXQsIFsmXSAoY29uc3QgSW5zZXJ0aW9uJiBpbnNlcnRpb24s
IGludCBqdW1wVGFyZ2V0KSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGlu
dD4oaW5zZXJ0aW9uLmluZGV4KCkpIDwganVtcFRhcmdldDsKKyAgICAgICAgICAgIH0pOworICAg
ICAgICAgICAgZm9yICg7IHN0YXJ0ICE9IGVuZDsgKytzdGFydCkgeworICAgICAgICAgICAgICAg
IGlmIChzdGFydC0+ZWxlbWVudCgpLnR5cGUgPT0gQ29tbWFuZDo6VHlwZTo6UmVtb3ZlKQorICAg
ICAgICAgICAgICAgICAgICBqdW1wVGFyZ2V0IC09IHN0YXJ0LT5lbGVtZW50KCkubGVuZ3RoOwor
ICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAganVtcFRhcmdldCArPSBz
dGFydC0+ZWxlbWVudCgpLmxlbmd0aDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAg
ICByZXR1cm4ganVtcFRhcmdldCAtIGJ5dGVjb2RlT2Zmc2V0OworICAgIH0KKworICAgIGlmIChi
eXRlY29kZU9mZnNldCA9PSBqdW1wVGFyZ2V0KQorICAgICAgICByZXR1cm4gMDsKKworICAgIHJl
dHVybiAtYWRqdXN0T2Zmc2V0KGp1bXBUYXJnZXQsIGJ5dGVjb2RlT2Zmc2V0KTsKK30KKwordm9p
ZCBCeXRlY29kZU1vZGlmaWNhdGlvblNldDo6YXBwbHlNb2RpZmljYXRpb24oKQoreworICAgIGZv
ciAoc2l6ZV90IGluc2VydGlvbkluZGV4ID0gbV9pbnNlcnRpb25zLnNpemUoKTsgaW5zZXJ0aW9u
SW5kZXgtLTspIHsKKyAgICAgICAgY29uc3QgSW5zZXJ0aW9uJiBpbnNlcnRpb24gPSBtX2luc2Vy
dGlvbnNbaW5zZXJ0aW9uSW5kZXhdOworICAgICAgICBpZiAoaW5zZXJ0aW9uLmVsZW1lbnQoKS50
eXBlID09IENvbW1hbmQ6OlR5cGU6OlJlbW92ZSkKKyAgICAgICAgICAgIG1fZ3JhcGguaW5zdHJ1
Y3Rpb25zKCkucmVtb3ZlKGluc2VydGlvbi5pbmRleCgpLCBpbnNlcnRpb24uZWxlbWVudCgpLmxl
bmd0aCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fZ3JhcGguaW5zdHJ1Y3Rpb25zKCku
aW5zZXJ0KGluc2VydGlvbi5pbmRleCgpLCBpbnNlcnRpb24uZWxlbWVudCgpLmJ5dGVjb2RlLmlu
c3RydWN0aW9ucywgb3Bjb2RlTGVuZ3RoKGluc2VydGlvbi5lbGVtZW50KCkuYnl0ZWNvZGUuaW5z
dHJ1Y3Rpb25zWzBdLnUub3Bjb2RlKSk7CisgICAgfQorICAgIG1faW5zZXJ0aW9ucy5jbGVhcigp
OworfQorCit2b2lkIEJ5dGVjb2RlTW9kaWZpY2F0aW9uU2V0OjpleGVjdXRlKCkKK3sKKyAgICBX
VEY6OmJ1YmJsZVNvcnQobV9pbnNlcnRpb25zLmJlZ2luKCksIG1faW5zZXJ0aW9ucy5lbmQoKSwg
W10gKGNvbnN0IEluc2VydGlvbiYgbGhzLCBjb25zdCBJbnNlcnRpb24mIHJocykgeworICAgICAg
ICAvLyBXZSB3b3VsZCBsaWtlIHRvIHBlcmZvcm0gcmVtb3ZlIG9wZXJhdGlvbiBiZWZvcmUgaW5z
ZXJ0aW9uLgorICAgICAgICBpZiAobGhzLmluZGV4KCkgPT0gcmhzLmluZGV4KCkpCisgICAgICAg
ICAgICByZXR1cm4gcmhzLmVsZW1lbnQoKS50eXBlID09IENvbW1hbmQ6OlR5cGU6OlJlbW92ZTsK
KyAgICAgICAgcmV0dXJuIGxocyA8IHJoczsKKyAgICB9KTsKKworICAgIFVubGlua2VkQ29kZUJs
b2NrKiBjb2RlQmxvY2sgPSBtX2dyYXBoLmNvZGVCbG9jaygpOworICAgIGNvZGVCbG9jay0+YXBw
bHlNb2RpZmljYXRpb24oKnRoaXMpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZU1vZGlmaWNhdGlvblNl
dC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTW9kaWZpY2F0aW9u
U2V0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNjU1MzliYjFiZTlkOTYzZjYzMmQ1ZDNjYzlmYmQ4MjkyODg4ZjMz
NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZU1vZGlmaWNhdGlvblNldC5oCkBAIC0wLDAgKzEsODIgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTYgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkJ5dGVjb2RlR3JhcGguaCIKKyNpbmNsdWRlICJV
bmxpbmtlZENvZGVCbG9jay5oIgorI2luY2x1ZGUgPHd0Zi9JbnNlcnRpb24uaD4KKworbmFtZXNw
YWNlIEpTQyB7CisKK2NsYXNzIEJ5dGVjb2RlTW9kaWZpY2F0aW9uU2V0IHsKK3B1YmxpYzoKKyAg
ICBzdHJ1Y3QgSW5zZXJ0ZWRCeXRlY29kZSB7CisgICAgICAgIFVubGlua2VkSW5zdHJ1Y3Rpb24g
aW5zdHJ1Y3Rpb25zW01BWF9PUENPREVfTEVOR1RIX09GX0JZVEVDT0RFXTsKKyAgICB9OworCisg
ICAgc3RydWN0IENvbW1hbmQgeworICAgICAgICBlbnVtIGNsYXNzIFR5cGUgeworICAgICAgICAg
ICAgSW5zZXJ0LAorICAgICAgICAgICAgUmVtb3ZlLAorICAgICAgICB9OworCisgICAgICAgIFR5
cGUgdHlwZTsKKyAgICAgICAgc2l6ZV90IGxlbmd0aDsKKyAgICAgICAgSW5zZXJ0ZWRCeXRlY29k
ZSBieXRlY29kZTsKKyAgICB9OworCisgICAgdHlwZWRlZiBXVEY6Okluc2VydGlvbjxDb21tYW5k
PiBJbnNlcnRpb247CisKKyAgICBCeXRlY29kZU1vZGlmaWNhdGlvblNldChCeXRlY29kZUdyYXBo
PFVubGlua2VkQ29kZUJsb2NrPiYgZ3JhcGgpCisgICAgICAgIDogbV9ncmFwaChncmFwaCkKKyAg
ICB7CisgICAgfQorCisgICAgdm9pZCBpbnNlcnQodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIElu
c2VydGVkQnl0ZWNvZGUgYnl0ZWNvZGUpCisgICAgeworICAgICAgICBtX2luc2VydGlvbnMuYXBw
ZW5kKEluc2VydGlvbihieXRlY29kZU9mZnNldCwgQ29tbWFuZCB7IENvbW1hbmQ6OlR5cGU6Oklu
c2VydCwgb3Bjb2RlTGVuZ3RoKGJ5dGVjb2RlLmluc3RydWN0aW9uc1swXS51Lm9wY29kZSksIGJ5
dGVjb2RlIH0pKTsKKyAgICB9CisKKyAgICB2b2lkIHJlbW92ZUJ5dGVjb2RlKHVuc2lnbmVkIGJ5
dGVjb2RlT2Zmc2V0KQorICAgIHsKKyAgICAgICAgbV9pbnNlcnRpb25zLmFwcGVuZChJbnNlcnRp
b24oYnl0ZWNvZGVPZmZzZXQsIENvbW1hbmQgeyBDb21tYW5kOjpUeXBlOjpSZW1vdmUsIG9wY29k
ZUxlbmd0aChtX2dyYXBoLmluc3RydWN0aW9ucygpW2J5dGVjb2RlT2Zmc2V0XS51Lm9wY29kZSks
IEluc2VydGVkQnl0ZWNvZGUgeyB9IH0pKTsKKyAgICB9CisKKyAgICB2b2lkIGV4ZWN1dGUoKTsK
KworICAgIEJ5dGVjb2RlR3JhcGg8VW5saW5rZWRDb2RlQmxvY2s+JiBncmFwaCgpIHsgcmV0dXJu
IG1fZ3JhcGg7IH0KKworICAgIGludCBhZGp1c3RPZmZzZXQoaW50IGJ5dGVjb2RlT2Zmc2V0LCBp
bnQganVtcFRhcmdldCk7CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIFVubGlua2VkQ29k
ZUJsb2NrOworICAgIHZvaWQgYXBwbHlNb2RpZmljYXRpb24oKTsKKworICAgIEJ5dGVjb2RlR3Jh
cGg8VW5saW5rZWRDb2RlQmxvY2s+JiBtX2dyYXBoOworICAgIFZlY3RvcjxJbnNlcnRpb24sIDg+
IG1faW5zZXJ0aW9uczsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaAppbmRleCA1NzA4NDRjMzVkOTAy
NWVlOTFhZDQ2OThiYWI5YmMxYTY3ZmQ4MzQ5Li40Y2E1OGQwM2ZjOWY3NzYwMGIxMGZjOTc2MjM3
OWRmNmY1ZDlhNTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Qnl0ZWNvZGVVc2VEZWYuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVVc2VEZWYuaApAQCAtMjcsMTggKzI3LDEzIEBACiAjZGVmaW5lIEJ5dGVjb2RlVXNlRGVm
X2gKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAK
IG5hbWVzcGFjZSBKU0MgewogCi10ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgotdm9pZCBjb21w
dXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAotICAgIENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRl
Y29kZUJhc2ljQmxvY2sqIGJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgY29uc3QgRnVu
Y3RvciYgZnVuY3RvcikKK3RlbXBsYXRlPHR5cGVuYW1lIEJsb2NrLCB0eXBlbmFtZSBGdW5jdG9y
LCB0eXBlbmFtZSBJbnN0cnVjdGlvbj4KK3ZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNl
dChCbG9jayogY29kZUJsb2NrLCBPcGNvZGVJRCBvcGNvZGVJRCwgSW5zdHJ1Y3Rpb24qIGluc3Ry
dWN0aW9uLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQogewotICAgIEludGVycHJldGVyKiBpbnRl
cnByZXRlciA9IGNvZGVCbG9jay0+dm0oKS0+aW50ZXJwcmV0ZXI7Ci0gICAgSW5zdHJ1Y3Rpb24q
IGluc3RydWN0aW9uc0JlZ2luID0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpOwot
ICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9ICZpbnN0cnVjdGlvbnNCZWdpbltieXRlY29k
ZU9mZnNldF07Ci0gICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnRlcnByZXRlci0+Z2V0T3Bjb2Rl
SUQoaW5zdHJ1Y3Rpb24tPnUub3Bjb2RlKTsKLQogICAgIGlmIChvcGNvZGVJRCAhPSBvcF9lbnRl
ciAmJiBjb2RlQmxvY2stPndhc0NvbXBpbGVkV2l0aERlYnVnZ2luZ09wY29kZXMoKSAmJiBjb2Rl
QmxvY2stPnNjb3BlUmVnaXN0ZXIoKS5pc1ZhbGlkKCkpCiAgICAgICAgIGZ1bmN0b3IoY29kZUJs
b2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGNvZGVCbG9jay0+c2NvcGVSZWdpc3RlcigpLm9m
ZnNldCgpKTsKIApAQCAtNzUsOCArNzAsNyBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVP
ZmZzZXQoCiAgICAgY2FzZSBvcF9qbmVxX251bGw6CiAgICAgY2FzZSBvcF9kZWM6CiAgICAgY2Fz
ZSBvcF9pbmM6Ci0gICAgY2FzZSBvcF9sb2dfc2hhZG93X2NoaWNrZW5fcHJvbG9ndWU6Ci0gICAg
Y2FzZSBvcF9yZXN1bWU6IHsKKyAgICBjYXNlIG9wX2xvZ19zaGFkb3dfY2hpY2tlbl9wcm9sb2d1
ZTogewogICAgICAgICBBU1NFUlQob3Bjb2RlTGVuZ3Roc1tvcGNvZGVJRF0gPiAxKTsKICAgICAg
ICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb25b
MV0udS5vcGVyYW5kKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjg3LDIyICsyODEsMTMgQEAgdm9p
ZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAogICAgICAgICAgICAgZnVuY3Rvcihjb2Rl
QmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgY29kZUJsb2NrLT5zY29wZVJlZ2lzdGVyKCku
b2Zmc2V0KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGNhc2Ugb3Bfc2F2ZTogewot
ICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBpbnN0cnVj
dGlvblsxXS51Lm9wZXJhbmQpOwotICAgICAgICB1bnNpZ25lZCBtZXJnZVBvaW50Qnl0ZWNvZGVP
ZmZzZXQgPSBieXRlY29kZU9mZnNldCArIGluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKLSAgICAg
ICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBtZXJnZVBvaW50QmxvY2sgPSBudWxscHRyOwotICAgICAg
ICBmb3IgKEJ5dGVjb2RlQmFzaWNCbG9jayogc3VjY2Vzc29yIDogYmxvY2stPnN1Y2Nlc3NvcnMo
KSkgewotICAgICAgICAgICAgaWYgKHN1Y2Nlc3Nvci0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKSA9
PSBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXQpIHsKLSAgICAgICAgICAgICAgICBtZXJnZVBvaW50
QmxvY2sgPSBzdWNjZXNzb3I7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIH0KLSAgICAgICAgQVNTRVJUKG1lcmdlUG9pbnRCbG9jayk7Ci0gICAgICAgIG1l
cmdlUG9pbnRCbG9jay0+aW4oKS5mb3JFYWNoU2V0Qml0KFsmXSh1bnNpZ25lZCBsb2NhbCkgewot
ICAgICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgdmly
dHVhbFJlZ2lzdGVyRm9yTG9jYWwobG9jYWwpLm9mZnNldCgpKTsKLSAgICAgICAgfSk7CisKKyAg
ICBjYXNlIG9wX3NhdmU6CisgICAgY2FzZSBvcF9yZXN1bWU6IHsKKyAgICAgICAgLy8gRG8gbm90
aGluZyBpbiBsaXZlbmVzcyBhbmFseXNpcy4KICAgICAgICAgcmV0dXJuOwogICAgIH0KKwogICAg
IGRlZmF1bHQ6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAg
IGJyZWFrOwpAQCAtMzEwLDEyICsyOTUsMTggQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2Rl
T2Zmc2V0KAogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgotdm9pZCBjb21wdXRlRGVm
c0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29kZUJhc2ljQmxv
Y2sqIGJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgY29uc3QgRnVuY3RvciYgZnVuY3Rv
cikKK3ZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9j
aywgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiB7CiAg
ICAgSW50ZXJwcmV0ZXIqIGludGVycHJldGVyID0gY29kZUJsb2NrLT52bSgpLT5pbnRlcnByZXRl
cjsKICAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4gPSBjb2RlQmxvY2stPmluc3Ry
dWN0aW9ucygpLmJlZ2luKCk7CiAgICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uID0gJmluc3Ry
dWN0aW9uc0JlZ2luW2J5dGVjb2RlT2Zmc2V0XTsKICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGlu
dGVycHJldGVyLT5nZXRPcGNvZGVJRChpbnN0cnVjdGlvbi0+dS5vcGNvZGUpOworICAgIGNvbXB1
dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoY29kZUJsb2NrLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb24s
IGZ1bmN0b3IpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBCbG9jaywgdHlwZW5hbWUgSW5zdHJ1
Y3Rpb24sIHR5cGVuYW1lIEZ1bmN0b3I+Cit2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZz
ZXQoQmxvY2sqIGNvZGVCbG9jaywgT3Bjb2RlSUQgb3Bjb2RlSUQsIEluc3RydWN0aW9uKiBpbnN0
cnVjdGlvbiwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikKK3sKICAgICBzd2l0Y2ggKG9wY29kZUlE
KSB7CiAgICAgLy8gVGhlc2UgZG9uJ3QgZGVmaW5lIGFueXRoaW5nLgogICAgIGNhc2Ugb3BfY29w
eV9yZXN0OgpAQCAtMzIzLDcgKzMxNCw2IEBAIHZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZU9m
ZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jCiAgICAg
Y2FzZSBvcF9lbmQ6CiAgICAgY2FzZSBvcF90aHJvdzoKICAgICBjYXNlIG9wX3Rocm93X3N0YXRp
Y19lcnJvcjoKLSAgICBjYXNlIG9wX3NhdmU6CiAgICAgY2FzZSBvcF9hc3NlcnQ6CiAgICAgY2Fz
ZSBvcF9kZWJ1ZzoKICAgICBjYXNlIG9wX3JldDoKQEAgLTQ2Myw3ICs0NTMsNyBAQCB2b2lkIGNv
bXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2Rl
QmFzaWNCbG9jayogYmxvYwogICAgIGNhc2Ugb3BfZGVsX2J5X2lkOgogICAgIGNhc2Ugb3BfZGVs
X2J5X3ZhbDoKICAgICBjYXNlIG9wX3Vuc2lnbmVkOgotICAgIGNhc2Ugb3BfZ2V0X2Zyb21fYXJn
dW1lbnRzOiAKKyAgICBjYXNlIG9wX2dldF9mcm9tX2FyZ3VtZW50czoKICAgICBjYXNlIG9wX2dl
dF9yZXN0X2xlbmd0aDogewogICAgICAgICBBU1NFUlQob3Bjb2RlTGVuZ3Roc1tvcGNvZGVJRF0g
PiAxKTsKICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwg
aW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKTsKQEAgLTQ4MCwxOCArNDcwLDI3IEBAIHZvaWQgY29t
cHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVC
YXNpY0Jsb2NrKiBibG9jCiAgICAgICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rp
b24sIG9wY29kZUlELCB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChpKS5vZmZzZXQoKSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CisgICAgY2FzZSBvcF9zYXZlOgogICAgIGNhc2Ugb3BfcmVzdW1l
OiB7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKGJsb2NrLT5zdWNjZXNzb3JzKCkuc2l6ZSgpID09
IDEpOwotICAgICAgICAvLyBGSVhNRTogVGhpcyBpcyByZWFsbHkgZGlydHkuCi0gICAgICAgIC8v
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTkyODEKLSAgICAgICAg
YmxvY2stPnN1Y2Nlc3NvcnMoKVswXS0+aW4oKS5mb3JFYWNoU2V0Qml0KFsmXSh1bnNpZ25lZCBs
b2NhbCkgewotICAgICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNv
ZGVJRCwgdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwobG9jYWwpLm9mZnNldCgpKTsKLSAgICAgICAg
fSk7CisgICAgICAgIC8vIERvIG5vdGhpbmcgaW4gbGl2ZW5lc3MgYW5hbHlzaXMuCiAgICAgICAg
IHJldHVybjsKICAgICB9CisgICAgZGVmYXVsdDoKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KIH0KIAordGVtcGxhdGU8dHlwZW5h
bWUgRnVuY3Rvcj4KK3ZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sq
IGNvZGVCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0
b3IpCit7CisgICAgSW50ZXJwcmV0ZXIqIGludGVycHJldGVyID0gY29kZUJsb2NrLT52bSgpLT5p
bnRlcnByZXRlcjsKKyAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4gPSBjb2RlQmxv
Y2stPmluc3RydWN0aW9ucygpLmJlZ2luKCk7CisgICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9u
ID0gJmluc3RydWN0aW9uc0JlZ2luW2J5dGVjb2RlT2Zmc2V0XTsKKyAgICBPcGNvZGVJRCBvcGNv
ZGVJRCA9IGludGVycHJldGVyLT5nZXRPcGNvZGVJRChpbnN0cnVjdGlvbi0+dS5vcGNvZGUpOwor
ICAgIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoY29kZUJsb2NrLCBvcGNvZGVJRCwgaW5z
dHJ1Y3Rpb24sIGZ1bmN0b3IpOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8v
IEJ5dGVjb2RlVXNlRGVmX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVC
bG9jay5jcHAKaW5kZXggM2Y3ZDJmMDViOTkwMDUzMmI5NmE3ZDZiMmQ2MWVkMmEzZTY4ZDhiMy4u
NTIxOWViYzE0NmJiZTM0ZTFlOGVkYTc1MTk1NTJjMGI3MTZhZjdhNiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKIAog
I2luY2x1ZGUgIkJhc2ljQmxvY2tMb2NhdGlvbi5oIgogI2luY2x1ZGUgIkJ5dGVjb2RlR2VuZXJh
dG9yLmgiCisjaW5jbHVkZSAiQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmgiCiAjaW5jbHVkZSAi
Qnl0ZWNvZGVVc2VEZWYuaCIKICNpbmNsdWRlICJDYWxsTGlua1N0YXR1cy5oIgogI2luY2x1ZGUg
IkRGR0NhcGFiaWxpdGllcy5oIgpAQCAtNjk0LDE4ICs2OTUsNiBAQCB2b2lkIENvZGVCbG9jazo6
ZHVtcEJ5dGVjb2RlKFByaW50U3RyZWFtJiBvdXQpCiAgICAgICAgIH0gd2hpbGUgKGkgPCBtX3Jh
cmVEYXRhLT5tX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXMuc2l6ZSgpKTsKICAgICB9CiAKLSAgICBp
ZiAobV9yYXJlRGF0YSAmJiAhbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZC5p
c0VtcHR5KCkpIHsKLSAgICAgICAgb3V0LnByaW50ZigiXG5MaXZlIENhbGxlZSBMb2NhbHM6XG4i
KTsKLSAgICAgICAgdW5zaWduZWQgaSA9IDA7Ci0gICAgICAgIGRvIHsKLSAgICAgICAgICAgIGNv
bnN0IEZhc3RCaXRWZWN0b3ImIGxpdmVuZXNzID0gbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9j
YWxzQXRZaWVsZFtpXTsKLSAgICAgICAgICAgIG91dC5wcmludGYoIiAgbGl2ZSUxdSA9ICIsIGkp
OwotICAgICAgICAgICAgbGl2ZW5lc3MuZHVtcChvdXQpOwotICAgICAgICAgICAgb3V0LnByaW50
ZigiXG4iKTsKLSAgICAgICAgICAgICsraTsKLSAgICAgICAgfSB3aGlsZSAoaSA8IG1fcmFyZURh
dGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQuc2l6ZSgpKTsKLSAgICB9Ci0KICAgICBvdXQu
cHJpbnRmKCJcbiIpOwogfQogCkBAIC0xNjY5LDMxICsxNjU4LDYgQEAgdm9pZCBDb2RlQmxvY2s6
OmR1bXBCeXRlY29kZSgKICAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAlZCIsIGRlYnVnSG9v
a05hbWUoZGVidWdIb29rSUQpLCBoYXNCcmVha3BvaW50RmxhZyk7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQotICAgICAgICBjYXNlIG9wX3NhdmU6IHsKLSAgICAgICAgICAgIGludCBn
ZW5lcmF0b3IgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIHVuc2lnbmVkIGxpdmVD
YWxsZWVMb2NhbHNJbmRleCA9ICgrK2l0KS0+dS51bnNpZ25lZFZhbHVlOwotICAgICAgICAgICAg
aW50IG9mZnNldCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgRmFzdEJpdFZlY3Rv
ciBsaXZlbmVzczsKLSAgICAgICAgICAgIGlmIChsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPCBtX3Jh
cmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkLnNpemUoKSkKLSAgICAgICAgICAgICAg
ICBsaXZlbmVzcyA9IG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGRbbGl2ZUNh
bGxlZUxvY2Fsc0luZGV4XTsKLSAgICAgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGV4
ZWMsIGxvY2F0aW9uLCBpdCwgInNhdmUiKTsKLSAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAi
LCByZWdpc3Rlck5hbWUoZ2VuZXJhdG9yKS5kYXRhKCkpOwotICAgICAgICAgICAgbGl2ZW5lc3Mu
ZHVtcChvdXQpOwotICAgICAgICAgICAgb3V0LnByaW50ZigiKEBsaXZlJTF1KSwgJWQoLT4lZCki
LCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXgsIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBvcF9yZXN1bWU6IHsKLSAg
ICAgICAgICAgIGludCBnZW5lcmF0b3IgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAg
IHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9ICgrK2l0KS0+dS51bnNpZ25lZFZhbHVl
OwotICAgICAgICAgICAgRmFzdEJpdFZlY3RvciBsaXZlbmVzczsKLSAgICAgICAgICAgIGlmIChs
aXZlQ2FsbGVlTG9jYWxzSW5kZXggPCBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlp
ZWxkLnNpemUoKSkKLSAgICAgICAgICAgICAgICBsaXZlbmVzcyA9IG1fcmFyZURhdGEtPm1fbGl2
ZUNhbGxlZUxvY2Fsc0F0WWllbGRbbGl2ZUNhbGxlZUxvY2Fsc0luZGV4XTsKLSAgICAgICAgICAg
IHByaW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgInJlc3VtZSIpOwot
ICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICIsIHJlZ2lzdGVyTmFtZShnZW5lcmF0b3IpLmRh
dGEoKSk7Ci0gICAgICAgICAgICBsaXZlbmVzcy5kdW1wKG91dCk7Ci0gICAgICAgICAgICBvdXQu
cHJpbnRmKCIoQGxpdmUlMXUpIiwgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4KTsKLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfYXNzZXJ0OiB7CiAgICAgICAgICAg
ICBpbnQgY29uZGl0aW9uID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgbGlu
ZSA9ICgrK2l0KS0+dS5vcGVyYW5kOwpAQCAtMTkwNiw3ICsxODcwLDYgQEAgdm9pZCBDb2RlQmxv
Y2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgQ29weVBhcnNlZEJsb2NrVGFnLCBDb2RlQmxvY2sm
IG90aGVyKQogICAgICAgICBtX3JhcmVEYXRhLT5tX2NvbnN0YW50QnVmZmVycyA9IG90aGVyLm1f
cmFyZURhdGEtPm1fY29uc3RhbnRCdWZmZXJzOwogICAgICAgICBtX3JhcmVEYXRhLT5tX3N3aXRj
aEp1bXBUYWJsZXMgPSBvdGhlci5tX3JhcmVEYXRhLT5tX3N3aXRjaEp1bXBUYWJsZXM7CiAgICAg
ICAgIG1fcmFyZURhdGEtPm1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlcyA9IG90aGVyLm1fcmFyZURh
dGEtPm1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlczsKLSAgICAgICAgbV9yYXJlRGF0YS0+bV9saXZl
Q2FsbGVlTG9jYWxzQXRZaWVsZCA9IG90aGVyLm1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fs
c0F0WWllbGQ7CiAgICAgfQogICAgIAogICAgIGhlYXAoKS0+bV9jb2RlQmxvY2tzLmFkZCh0aGlz
KTsKQEAgLTIwMjgsNyArMTk5MSw3IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihW
TSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAgICAg
ICAgICAgICAgVW5saW5rZWRTdHJpbmdKdW1wVGFibGU6OlN0cmluZ09mZnNldFRhYmxlOjppdGVy
YXRvciBlbmQgPSB1bmxpbmtlZENvZGVCbG9jay0+c3RyaW5nU3dpdGNoSnVtcFRhYmxlKGkpLm9m
ZnNldFRhYmxlLmVuZCgpOwogICAgICAgICAgICAgICAgIGZvciAoOyBwdHIgIT0gZW5kOyArK3B0
cikgewogICAgICAgICAgICAgICAgICAgICBPZmZzZXRMb2NhdGlvbiBvZmZzZXQ7Ci0gICAgICAg
ICAgICAgICAgICAgIG9mZnNldC5icmFuY2hPZmZzZXQgPSBwdHItPnZhbHVlOworICAgICAgICAg
ICAgICAgICAgICBvZmZzZXQuYnJhbmNoT2Zmc2V0ID0gcHRyLT52YWx1ZS5icmFuY2hPZmZzZXQ7
CiAgICAgICAgICAgICAgICAgICAgIG1fcmFyZURhdGEtPm1fc3RyaW5nU3dpdGNoSnVtcFRhYmxl
c1tpXS5vZmZzZXRUYWJsZS5hZGQocHRyLT5rZXksIG9mZnNldCk7CiAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgfQpAQCAtMjA2OCwxMSArMjAzMSwxNyBAQCB2b2lkIENvZGVCbG9jazo6
ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUs
IFVubGluawogICAgIC8vIEJvb2trZWVwIHRoZSBzdHJvbmdseSByZWZlcmVuY2VkIG1vZHVsZSBl
bnZpcm9ubWVudHMuCiAgICAgSGFzaFNldDxKU01vZHVsZUVudmlyb25tZW50Kj4gc3Ryb25nbHlS
ZWZlcmVuY2VkTW9kdWxlRW52aXJvbm1lbnRzOwogCi0gICAgLy8gQm9va2tlZXAgdGhlIG1lcmdl
IHBvaW50IGJ5dGVjb2RlIG9mZnNldHMuCi0gICAgVmVjdG9yPHNpemVfdD4gbWVyZ2VQb2ludEJ5
dGVjb2RlT2Zmc2V0czsKLQogICAgIFJlZkNvdW50ZWRBcnJheTxJbnN0cnVjdGlvbj4gaW5zdHJ1
Y3Rpb25zKGluc3RydWN0aW9uQ291bnQpOwogCisgICAgdW5zaWduZWQgdmFsdWVQcm9maWxlQ291
bnQgPSAwOworICAgIGF1dG8gbGlua1ZhbHVlUHJvZmlsZSA9IFsmXSh1bnNpZ25lZCBieXRlY29k
ZU9mZnNldCwgdW5zaWduZWQgb3BMZW5ndGgpIHsKKyAgICAgICAgdW5zaWduZWQgdmFsdWVQcm9m
aWxlSW5kZXggPSB2YWx1ZVByb2ZpbGVDb3VudCsrOworICAgICAgICBWYWx1ZVByb2ZpbGUqIHBy
b2ZpbGUgPSAmbV92YWx1ZVByb2ZpbGVzW3ZhbHVlUHJvZmlsZUluZGV4XTsKKyAgICAgICAgQVNT
RVJUKHByb2ZpbGUtPm1fYnl0ZWNvZGVPZmZzZXQgPT0gLTEpOworICAgICAgICBwcm9maWxlLT5t
X2J5dGVjb2RlT2Zmc2V0ID0gYnl0ZWNvZGVPZmZzZXQ7CisgICAgICAgIGluc3RydWN0aW9uc1ti
eXRlY29kZU9mZnNldCArIG9wTGVuZ3RoIC0gMV0gPSBwcm9maWxlOworICAgIH07CisKICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyAhaW5zdHJ1Y3Rpb25SZWFkZXIuYXRFbmQoKTsgKSB7CiAgICAg
ICAgIGNvbnN0IFVubGlua2VkSW5zdHJ1Y3Rpb24qIHBjID0gaW5zdHJ1Y3Rpb25SZWFkZXIubmV4
dCgpOwogCkBAIC0yMTA3LDEwICsyMDc2LDcgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0
aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAg
ICAgICAgY2FzZSBvcF9nZXRfYnlfaWQ6CiAgICAgICAgIGNhc2Ugb3BfZ2V0X2Zyb21fYXJndW1l
bnRzOgogICAgICAgICBjYXNlIG9wX3RvX251bWJlcjogewotICAgICAgICAgICAgVmFsdWVQcm9m
aWxlKiBwcm9maWxlID0gJm1fdmFsdWVQcm9maWxlc1twY1tvcExlbmd0aCAtIDFdLnUub3BlcmFu
ZF07Ci0gICAgICAgICAgICBBU1NFUlQocHJvZmlsZS0+bV9ieXRlY29kZU9mZnNldCA9PSAtMSk7
Ci0gICAgICAgICAgICBwcm9maWxlLT5tX2J5dGVjb2RlT2Zmc2V0ID0gaTsKLSAgICAgICAgICAg
IGluc3RydWN0aW9uc1tpICsgb3BMZW5ndGggLSAxXSA9IHByb2ZpbGU7CisgICAgICAgICAgICBs
aW5rVmFsdWVQcm9maWxlKGksIG9wTGVuZ3RoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X3ZhbDogewpAQCAtMjE0NywxMCArMjExMyw3IEBA
IHZvaWQgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUq
IG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAgICAgIGNhc2Ugb3BfY2FsbDoKICAgICAgICAg
Y2FzZSBvcF90YWlsX2NhbGw6CiAgICAgICAgIGNhc2Ugb3BfY2FsbF9ldmFsOiB7Ci0gICAgICAg
ICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSAmbV92YWx1ZVByb2ZpbGVzW3BjW29wTGVuZ3Ro
IC0gMV0udS5vcGVyYW5kXTsKLSAgICAgICAgICAgIEFTU0VSVChwcm9maWxlLT5tX2J5dGVjb2Rl
T2Zmc2V0ID09IC0xKTsKLSAgICAgICAgICAgIHByb2ZpbGUtPm1fYnl0ZWNvZGVPZmZzZXQgPSBp
OwotICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zW2kgKyBvcExlbmd0aCAtIDFdID0gcHJvZmlsZTsK
KyAgICAgICAgICAgIGxpbmtWYWx1ZVByb2ZpbGUoaSwgb3BMZW5ndGgpOwogICAgICAgICAgICAg
aW50IGFycmF5UHJvZmlsZUluZGV4ID0gcGNbb3BMZW5ndGggLSAyXS51Lm9wZXJhbmQ7CiAgICAg
ICAgICAgICBtX2FycmF5UHJvZmlsZXNbYXJyYXlQcm9maWxlSW5kZXhdID0gQXJyYXlQcm9maWxl
KGkpOwogICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zW2kgKyBvcExlbmd0aCAtIDJdID0gJm1fYXJy
YXlQcm9maWxlc1thcnJheVByb2ZpbGVJbmRleF07CkBAIC0yMTU5LDEwICsyMTIyLDcgQEAgdm9p
ZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3du
ZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2NvbnN0cnVj
dDogewogICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zW2kgKyA1XSA9ICZtX2xsaW50Q2FsbExpbmtJ
bmZvc1twY1s1XS51Lm9wZXJhbmRdOwotICAgICAgICAgICAgVmFsdWVQcm9maWxlKiBwcm9maWxl
ID0gJm1fdmFsdWVQcm9maWxlc1twY1tvcExlbmd0aCAtIDFdLnUub3BlcmFuZF07Ci0gICAgICAg
ICAgICBBU1NFUlQocHJvZmlsZS0+bV9ieXRlY29kZU9mZnNldCA9PSAtMSk7Ci0gICAgICAgICAg
ICBwcm9maWxlLT5tX2J5dGVjb2RlT2Zmc2V0ID0gaTsKLSAgICAgICAgICAgIGluc3RydWN0aW9u
c1tpICsgb3BMZW5ndGggLSAxXSA9IHByb2ZpbGU7CisgICAgICAgICAgICBsaW5rVmFsdWVQcm9m
aWxlKGksIG9wTGVuZ3RoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAg
IGNhc2Ugb3BfZ2V0X2FycmF5X2xlbmd0aDoKQEAgLTIxOTMsMTAgKzIxNTMsNyBAQCB2b2lkIENv
ZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4
ZWN1dGFibGUsIFVubGluawogICAgICAgICB9CiAKICAgICAgICAgY2FzZSBvcF9nZXRfZnJvbV9z
Y29wZTogewotICAgICAgICAgICAgVmFsdWVQcm9maWxlKiBwcm9maWxlID0gJm1fdmFsdWVQcm9m
aWxlc1twY1tvcExlbmd0aCAtIDFdLnUub3BlcmFuZF07Ci0gICAgICAgICAgICBBU1NFUlQocHJv
ZmlsZS0+bV9ieXRlY29kZU9mZnNldCA9PSAtMSk7Ci0gICAgICAgICAgICBwcm9maWxlLT5tX2J5
dGVjb2RlT2Zmc2V0ID0gaTsKLSAgICAgICAgICAgIGluc3RydWN0aW9uc1tpICsgb3BMZW5ndGgg
LSAxXSA9IHByb2ZpbGU7CisgICAgICAgICAgICBsaW5rVmFsdWVQcm9maWxlKGksIG9wTGVuZ3Ro
KTsKIAogICAgICAgICAgICAgLy8gZ2V0X2Zyb21fc2NvcGUgZHN0LCBzY29wZSwgaWQsIEdldFB1
dEluZm8sIFN0cnVjdHVyZSwgT3BlcmFuZAogCkBAIC0yMzUzLDE1ICsyMzEwLDYgQEAgdm9pZCBD
b2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJF
eGVjdXRhYmxlLCBVbmxpbmsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKLSAgICAg
ICAgY2FzZSBvcF9zYXZlOiB7Ci0gICAgICAgICAgICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxz
SW5kZXggPSBwY1syXS51LmluZGV4OwotICAgICAgICAgICAgaW50IG9mZnNldCA9IHBjWzNdLnUu
b3BlcmFuZDsKLSAgICAgICAgICAgIGlmIChsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPj0gbWVyZ2VQ
b2ludEJ5dGVjb2RlT2Zmc2V0cy5zaXplKCkpCi0gICAgICAgICAgICAgICAgbWVyZ2VQb2ludEJ5
dGVjb2RlT2Zmc2V0cy5yZXNpemUobGl2ZUNhbGxlZUxvY2Fsc0luZGV4ICsgMSk7Ci0gICAgICAg
ICAgICBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXRzW2xpdmVDYWxsZWVMb2NhbHNJbmRleF0gPSBp
ICsgb2Zmc2V0OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLQogICAgICAgICBkZWZh
dWx0OgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTIzNzMsMjAgKzIzMjEsNiBA
QCB2b2lkIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxl
KiBvd25lckV4ZWN1dGFibGUsIFVubGluawogCiAgICAgbV9pbnN0cnVjdGlvbnMgPSBXVEZNb3Zl
KGluc3RydWN0aW9ucyk7CiAKLSAgICAvLyBQZXJmb3JtIGJ5dGVjb2RlIGxpdmVuZXNzIGFuYWx5
c2lzIHRvIGRldGVybWluZSB3aGljaCBsb2NhbHMgYXJlIGxpdmUgYW5kIHNob3VsZCBiZSByZXN1
bWVkIHdoZW4gZXhlY3V0aW5nIG9wX3Jlc3VtZS4KLSAgICBpZiAodW5saW5rZWRDb2RlQmxvY2st
PnBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yQm9keU1vZGUpIHsKLSAg
ICAgICAgaWYgKHNpemVfdCBjb3VudCA9IG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldHMuc2l6ZSgp
KSB7Ci0gICAgICAgICAgICBjcmVhdGVSYXJlRGF0YUlmTmVjZXNzYXJ5KCk7Ci0gICAgICAgICAg
ICBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMgbGl2ZW5lc3ModGhpcyk7Ci0gICAgICAgICAgICBt
X3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkLmdyb3coY291bnQpOwotICAgICAg
ICAgICAgc2l6ZV90IGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9IDA7Ci0gICAgICAgICAgICBmb3Ig
KHNpemVfdCBieXRlY29kZU9mZnNldCA6IG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldHMpIHsKLSAg
ICAgICAgICAgICAgICBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkW2xpdmVD
YWxsZWVMb2NhbHNJbmRleF0gPSBsaXZlbmVzcy5nZXRMaXZlbmVzc0luZm9BdEJ5dGVjb2RlT2Zm
c2V0KGJ5dGVjb2RlT2Zmc2V0KTsKLSAgICAgICAgICAgICAgICArK2xpdmVDYWxsZWVMb2NhbHNJ
bmRleDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQogICAgIC8vIFNldCBvcHRp
bWl6YXRpb24gdGhyZXNob2xkcyBvbmx5IGFmdGVyIG1faW5zdHJ1Y3Rpb25zIGlzIGluaXRpYWxp
emVkLCBzaW5jZSB0aGVzZQogICAgIC8vIHJlbHkgb24gdGhlIGluc3RydWN0aW9uIGNvdW50IChh
bmQgYXJlIGluIHRoZW9yeSBwZXJtaXR0ZWQgdG8gYWxzbyBpbnNwZWN0IHRoZQogICAgIC8vIGlu
c3RydWN0aW9uIHN0cmVhbSB0byBtb3JlIGFjY3VyYXRlIGFzc2VzcyB0aGUgY29zdCBvZiB0aWVy
LXVwKS4KQEAgLTMxODYsMjEgKzMxMjAsNyBAQCBIYW5kbGVySW5mbyogQ29kZUJsb2NrOjpoYW5k
bGVyRm9ySW5kZXgodW5zaWduZWQgaW5kZXgsIFJlcXVpcmVkSGFuZGxlciByZXF1aXJlZAogewog
ICAgIGlmICghbV9yYXJlRGF0YSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgCi0gICAgVmVjdG9y
PEhhbmRsZXJJbmZvPiYgZXhjZXB0aW9uSGFuZGxlcnMgPSBtX3JhcmVEYXRhLT5tX2V4Y2VwdGlv
bkhhbmRsZXJzOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZXhjZXB0aW9uSGFuZGxlcnMu
c2l6ZSgpOyArK2kpIHsKLSAgICAgICAgSGFuZGxlckluZm8mIGhhbmRsZXIgPSBleGNlcHRpb25I
YW5kbGVyc1tpXTsKLSAgICAgICAgaWYgKChyZXF1aXJlZEhhbmRsZXIgPT0gUmVxdWlyZWRIYW5k
bGVyOjpDYXRjaEhhbmRsZXIpICYmICFoYW5kbGVyLmlzQ2F0Y2hIYW5kbGVyKCkpCi0gICAgICAg
ICAgICBjb250aW51ZTsKLQotICAgICAgICAvLyBIYW5kbGVycyBhcmUgb3JkZXJlZCBpbm5lcm1v
c3QgZmlyc3QsIHNvIHRoZSBmaXJzdCBoYW5kbGVyIHdlIGVuY291bnRlcgotICAgICAgICAvLyB0
aGF0IGNvbnRhaW5zIHRoZSBzb3VyY2UgYWRkcmVzcyBpcyB0aGUgY29ycmVjdCBoYW5kbGVyIHRv
IHVzZS4KLSAgICAgICAgLy8gVGhpcyBpbmRleCB1c2VkIGlzIGVpdGhlciB0aGUgQnl0ZWNvZGVP
ZmZzZXQgb3IgYSBDYWxsU2l0ZUluZGV4LgotICAgICAgICBpZiAoaGFuZGxlci5zdGFydCA8PSBp
bmRleCAmJiBoYW5kbGVyLmVuZCA+IGluZGV4KQotICAgICAgICAgICAgcmV0dXJuICZoYW5kbGVy
OwotICAgIH0KLQotICAgIHJldHVybiAwOworICAgIHJldHVybiBIYW5kbGVySW5mbzo6aGFuZGxl
ckZvckluZGV4KG1fcmFyZURhdGEtPm1fZXhjZXB0aW9uSGFuZGxlcnMsIGluZGV4LCByZXF1aXJl
ZEhhbmRsZXIpOwogfQogCiBDYWxsU2l0ZUluZGV4IENvZGVCbG9jazo6bmV3RXhjZXB0aW9uSGFu
ZGxpbmdDYWxsU2l0ZUluZGV4KENhbGxTaXRlSW5kZXggb3JpZ2luYWxDYWxsU2l0ZSkKQEAgLTMy
OTYsNyArMzIxNiw2IEBAIHZvaWQgQ29kZUJsb2NrOjpzaHJpbmtUb0ZpdChTaHJpbmtNb2RlIHNo
cmlua01vZGUpCiAgICAgICAgIGlmIChtX3JhcmVEYXRhKSB7CiAgICAgICAgICAgICBtX3JhcmVE
YXRhLT5tX3N3aXRjaEp1bXBUYWJsZXMuc2hyaW5rVG9GaXQoKTsKICAgICAgICAgICAgIG1fcmFy
ZURhdGEtPm1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlcy5zaHJpbmtUb0ZpdCgpOwotICAgICAgICAg
ICAgbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZC5zaHJpbmtUb0ZpdCgpOwog
ICAgICAgICB9CiAgICAgfSAvLyBlbHNlIGRvbid0IHNocmluayB0aGVzZSwgYmVjYXVzZSB3ZSB3
b3VsZCBoYXZlIGFscmVhZHkgcG9pbnRlZCBwb2ludGVycyBpbnRvIHRoZXNlIHRhYmxlcy4KIH0K
QEAgLTQyODMsMTQgKzQyMDIsOSBAQCBTdHJpbmcgQ29kZUJsb2NrOjpuYW1lRm9yUmVnaXN0ZXIo
VmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3RlcikKIAogVmFsdWVQcm9maWxlKiBDb2RlQmxv
Y2s6OnZhbHVlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KGludCBieXRlY29kZU9mZnNldCkKIHsK
LSAgICBWYWx1ZVByb2ZpbGUqIHJlc3VsdCA9IGJpbmFyeVNlYXJjaDxWYWx1ZVByb2ZpbGUsIGlu
dD4oCi0gICAgICAgIG1fdmFsdWVQcm9maWxlcywgbV92YWx1ZVByb2ZpbGVzLnNpemUoKSwgYnl0
ZWNvZGVPZmZzZXQsCi0gICAgICAgIGdldFZhbHVlUHJvZmlsZUJ5dGVjb2RlT2Zmc2V0PFZhbHVl
UHJvZmlsZT4pOwotICAgIEFTU0VSVChyZXN1bHQtPm1fYnl0ZWNvZGVPZmZzZXQgIT0gLTEpOwot
ICAgIEFTU0VSVChpbnN0cnVjdGlvbnMoKVtieXRlY29kZU9mZnNldCArIG9wY29kZUxlbmd0aCgK
LSAgICAgICAgbV92bS0+aW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKAotICAgICAgICAgICAgaW5z
dHJ1Y3Rpb25zKClbYnl0ZWNvZGVPZmZzZXRdLnUub3Bjb2RlKSkgLSAxXS51LnByb2ZpbGUgPT0g
cmVzdWx0KTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIE9wY29kZUlEIG9wY29kZUlEID0gbV92
bS0+aW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGluc3RydWN0aW9ucygpW2J5dGVjb2RlT2Zmc2V0
XS51Lm9wY29kZSk7CisgICAgdW5zaWduZWQgbGVuZ3RoID0gb3Bjb2RlTGVuZ3RoKG9wY29kZUlE
KTsKKyAgICByZXR1cm4gaW5zdHJ1Y3Rpb25zKClbYnl0ZWNvZGVPZmZzZXQgKyBsZW5ndGggLSAx
XS51LnByb2ZpbGU7CiB9CiAKIHZvaWQgQ29kZUJsb2NrOjp2YWxpZGF0ZSgpCkBAIC00NTc0LDQg
KzQ0ODgsMTYgQEAgdm9pZCBDb2RlQmxvY2s6OmppdFNvb24oKQogICAgIG1fbGxpbnRFeGVjdXRl
Q291bnRlci5zZXROZXdUaHJlc2hvbGQodGhyZXNob2xkRm9ySklUKE9wdGlvbnM6OnRocmVzaG9s
ZEZvckpJVFNvb24oKSksIHRoaXMpOwogfQogCitCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMmIENv
ZGVCbG9jazo6bGl2ZW5lc3NBbmFseXNpc1Nsb3coKQoreworICAgIHN0ZDo6dW5pcXVlX3B0cjxC
eXRlY29kZUxpdmVuZXNzQW5hbHlzaXM+IGFuYWx5c2lzID0gc3RkOjptYWtlX3VuaXF1ZTxCeXRl
Y29kZUxpdmVuZXNzQW5hbHlzaXM+KHRoaXMpOworICAgIHsKKyAgICAgICAgQ29uY3VycmVudEpJ
VExvY2tlciBsb2NrZXIobV9sb2NrKTsKKyAgICAgICAgaWYgKCFtX2xpdmVuZXNzQW5hbHlzaXMp
CisgICAgICAgICAgICBtX2xpdmVuZXNzQW5hbHlzaXMgPSBXVEZNb3ZlKGFuYWx5c2lzKTsKKyAg
ICAgICAgcmV0dXJuICptX2xpdmVuZXNzQW5hbHlzaXM7CisgICAgfQorfQorCisKIH0gLy8gbmFt
ZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCmlu
ZGV4IGIyODgzNjU0YmUzNDVlN2FiMDExMGVjMWI2ZjVkNjk3YTE4YzI3YzIuLjBiOTBiN2ViZDdj
YjZhMzZjNTEwOGZjZTJjNjk2Zjc5YzU0YzVlMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrLmgKQEAgLTMzLDcgKzMzLDYgQEAKICNpbmNsdWRlICJBcnJheVBy
b2ZpbGUuaCIKICNpbmNsdWRlICJCeVZhbEluZm8uaCIKICNpbmNsdWRlICJCeXRlY29kZUNvbnZl
bnRpb25zLmgiCi0jaW5jbHVkZSAiQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmgiCiAjaW5jbHVk
ZSAiQ2FsbExpbmtJbmZvLmgiCiAjaW5jbHVkZSAiQ2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVP
ZmZzZXQuaCIKICNpbmNsdWRlICJDb2RlQmxvY2tIYXNoLmgiCkBAIC03OCw2ICs3Nyw3IEBACiAK
IG5hbWVzcGFjZSBKU0MgewogCitjbGFzcyBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM7CiBjbGFz
cyBFeGVjU3RhdGU7CiBjbGFzcyBKU01vZHVsZUVudmlyb25tZW50OwogY2xhc3MgTExJbnRPZmZz
ZXRzRXh0cmFjdG9yOwpAQCAtMjIwLDEwICsyMjAsNiBAQCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJs
aWMgSlNDZWxsIHsKICAgICAgICAgcmV0dXJuIGluZGV4ID49IG1fbnVtVmFyczsKICAgICB9CiAK
LSAgICBlbnVtIGNsYXNzIFJlcXVpcmVkSGFuZGxlciB7Ci0gICAgICAgIENhdGNoSGFuZGxlciwK
LSAgICAgICAgQW55SGFuZGxlcgotICAgIH07CiAgICAgSGFuZGxlckluZm8qIGhhbmRsZXJGb3JC
eXRlY29kZU9mZnNldCh1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgUmVxdWlyZWRIYW5kbGVyID0g
UmVxdWlyZWRIYW5kbGVyOjpBbnlIYW5kbGVyKTsKICAgICBIYW5kbGVySW5mbyogaGFuZGxlckZv
ckluZGV4KHVuc2lnbmVkLCBSZXF1aXJlZEhhbmRsZXIgPSBSZXF1aXJlZEhhbmRsZXI6OkFueUhh
bmRsZXIpOwogICAgIHZvaWQgcmVtb3ZlRXhjZXB0aW9uSGFuZGxlckZvckNhbGxTaXRlKENhbGxT
aXRlSW5kZXgpOwpAQCAtMjk1LDYgKzI5MSw4IEBAIGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBK
U0NlbGwgewogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SW5zdHJ1Y3Rpb24qPihyZXR1cm5B
ZGRyZXNzKSAtIGluc3RydWN0aW9ucygpLmJlZ2luKCk7CiAgICAgfQogCisgICAgdHlwZWRlZiBS
ZWZDb3VudGVkQXJyYXk8SW5zdHJ1Y3Rpb24+JiBVbnBhY2tlZEluc3RydWN0aW9uczsKKwogICAg
IHVuc2lnbmVkIG51bWJlck9mSW5zdHJ1Y3Rpb25zKCkgY29uc3QgeyByZXR1cm4gbV9pbnN0cnVj
dGlvbnMuc2l6ZSgpOyB9CiAgICAgUmVmQ291bnRlZEFycmF5PEluc3RydWN0aW9uPiYgaW5zdHJ1
Y3Rpb25zKCkgeyByZXR1cm4gbV9pbnN0cnVjdGlvbnM7IH0KICAgICBjb25zdCBSZWZDb3VudGVk
QXJyYXk8SW5zdHJ1Y3Rpb24+JiBpbnN0cnVjdGlvbnMoKSBjb25zdCB7IHJldHVybiBtX2luc3Ry
dWN0aW9uczsgfQpAQCAtNTQyLDcgKzU0MCw3IEBAIGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBK
U0NlbGwgewogICAgIH0KIAogICAgIFdyaXRlQmFycmllcjxVbmtub3duPiYgY29uc3RhbnRSZWdp
c3RlcihpbnQgaW5kZXgpIHsgcmV0dXJuIG1fY29uc3RhbnRSZWdpc3RlcnNbaW5kZXggLSBGaXJz
dENvbnN0YW50UmVnaXN0ZXJJbmRleF07IH0KLSAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNDb25z
dGFudFJlZ2lzdGVySW5kZXgoaW50IGluZGV4KSBjb25zdCB7IHJldHVybiBpbmRleCA+PSBGaXJz
dENvbnN0YW50UmVnaXN0ZXJJbmRleDsgfQorICAgIHN0YXRpYyBBTFdBWVNfSU5MSU5FIGJvb2wg
aXNDb25zdGFudFJlZ2lzdGVySW5kZXgoaW50IGluZGV4KSB7IHJldHVybiBpbmRleCA+PSBGaXJz
dENvbnN0YW50UmVnaXN0ZXJJbmRleDsgfQogICAgIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBnZXRD
b25zdGFudChpbnQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIG1fY29uc3RhbnRSZWdpc3RlcnNbaW5k
ZXggLSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleF0uZ2V0KCk7IH0KICAgICBBTFdBWVNfSU5M
SU5FIFNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbiBjb25zdGFudFNvdXJjZUNvZGVSZXByZXNlbnRh
dGlvbihpbnQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIG1fY29uc3RhbnRzU291cmNlQ29kZVJlcHJl
c2VudGF0aW9uW2luZGV4IC0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXhdOyB9CiAKQEAgLTU4
OCwxNCArNTg2LDcgQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgICAg
ICAgICBpZiAoISFtX2xpdmVuZXNzQW5hbHlzaXMpCiAgICAgICAgICAgICAgICAgcmV0dXJuICpt
X2xpdmVuZXNzQW5hbHlzaXM7CiAgICAgICAgIH0KLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEJ5
dGVjb2RlTGl2ZW5lc3NBbmFseXNpcz4gYW5hbHlzaXMgPQotICAgICAgICAgICAgc3RkOjptYWtl
X3VuaXF1ZTxCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM+KHRoaXMpOwotICAgICAgICB7Ci0gICAg
ICAgICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihtX2xvY2spOwotICAgICAgICAgICAg
aWYgKCFtX2xpdmVuZXNzQW5hbHlzaXMpCi0gICAgICAgICAgICAgICAgbV9saXZlbmVzc0FuYWx5
c2lzID0gV1RGTW92ZShhbmFseXNpcyk7Ci0gICAgICAgICAgICByZXR1cm4gKm1fbGl2ZW5lc3NB
bmFseXNpczsKLSAgICAgICAgfQorICAgICAgICByZXR1cm4gbGl2ZW5lc3NBbmFseXNpc1Nsb3co
KTsKICAgICB9CiAgICAgCiAgICAgdm9pZCB2YWxpZGF0ZSgpOwpAQCAtNjE2LDE4ICs2MDcsNiBA
QCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICBTdHJpbmdKdW1wVGFibGUm
IGFkZFN0cmluZ1N3aXRjaEp1bXBUYWJsZSgpIHsgY3JlYXRlUmFyZURhdGFJZk5lY2Vzc2FyeSgp
OyBtX3JhcmVEYXRhLT5tX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXMuYXBwZW5kKFN0cmluZ0p1bXBU
YWJsZSgpKTsgcmV0dXJuIG1fcmFyZURhdGEtPm1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlcy5sYXN0
KCk7IH0KICAgICBTdHJpbmdKdW1wVGFibGUmIHN0cmluZ1N3aXRjaEp1bXBUYWJsZShpbnQgdGFi
bGVJbmRleCkgeyBSRUxFQVNFX0FTU0VSVChtX3JhcmVEYXRhKTsgcmV0dXJuIG1fcmFyZURhdGEt
Pm1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlc1t0YWJsZUluZGV4XTsgfQogCi0gICAgLy8gTGl2ZSBj
YWxsZWUgcmVnaXN0ZXJzIGF0IHlpZWxkIHBvaW50cy4KLSAgICBjb25zdCBGYXN0Qml0VmVjdG9y
JiBsaXZlQ2FsbGVlTG9jYWxzQXRZaWVsZCh1bnNpZ25lZCBpbmRleCkgY29uc3QKLSAgICB7Ci0g
ICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fcmFyZURhdGEpOwotICAgICAgICByZXR1cm4gbV9yYXJl
RGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZFtpbmRleF07Ci0gICAgfQotICAgIEZhc3RC
aXRWZWN0b3ImIGxpdmVDYWxsZWVMb2NhbHNBdFlpZWxkKHVuc2lnbmVkIGluZGV4KQotICAgIHsK
LSAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9yYXJlRGF0YSk7Ci0gICAgICAgIHJldHVybiBtX3Jh
cmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkW2luZGV4XTsKLSAgICB9Ci0KICAgICBF
dmFsQ29kZUNhY2hlJiBldmFsQ29kZUNhY2hlKCkgeyBjcmVhdGVSYXJlRGF0YUlmTmVjZXNzYXJ5
KCk7IHJldHVybiBtX3JhcmVEYXRhLT5tX2V2YWxDb2RlQ2FjaGU7IH0KIAogICAgIGVudW0gU2hy
aW5rTW9kZSB7CkBAIC04ODIsOCArODYxLDYgQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpT
Q2VsbCB7CiAgICAgICAgIFZlY3RvcjxTaW1wbGVKdW1wVGFibGU+IG1fc3dpdGNoSnVtcFRhYmxl
czsKICAgICAgICAgVmVjdG9yPFN0cmluZ0p1bXBUYWJsZT4gbV9zdHJpbmdTd2l0Y2hKdW1wVGFi
bGVzOwogCi0gICAgICAgIFZlY3RvcjxGYXN0Qml0VmVjdG9yPiBtX2xpdmVDYWxsZWVMb2NhbHNB
dFlpZWxkOwotCiAgICAgICAgIEV2YWxDb2RlQ2FjaGUgbV9ldmFsQ29kZUNhY2hlOwogICAgIH07
CiAKQEAgLTkxOCw2ICs4OTUsOCBAQCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsK
IAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgQ29kZUJsb2NrU2V0OworCisgICAgQnl0ZWNv
ZGVMaXZlbmVzc0FuYWx5c2lzJiBsaXZlbmVzc0FuYWx5c2lzU2xvdygpOwogICAgIAogICAgIENv
ZGVCbG9jayogc3BlY2lhbE9TUkVudHJ5QmxvY2tPck51bGwoKTsKICAgICAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9IYW5kbGVySW5mby5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0hhbmRsZXJJbmZvLmgKaW5kZXggYWNkZGEwOGVkMTRjYmY5
ZjA5NzEyNzUwNDA1YTQxNzQxZjc2YTIxMy4uYmI2OTJiOWRjMTcwYjA5ZjQzY2U4NjdmOTQxZjc1
MzVhY2ZlY2Y2MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0hh
bmRsZXJJbmZvLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0hhbmRsZXJJ
bmZvLmgKQEAgLTM3LDYgKzM3LDExIEBAIGVudW0gY2xhc3MgSGFuZGxlclR5cGUgewogICAgIFN5
bnRoZXNpemVkRmluYWxseSA9IDMKIH07CiAKK2VudW0gY2xhc3MgUmVxdWlyZWRIYW5kbGVyIHsK
KyAgICBDYXRjaEhhbmRsZXIsCisgICAgQW55SGFuZGxlcgorfTsKKwogc3RydWN0IEhhbmRsZXJJ
bmZvQmFzZSB7CiAgICAgSGFuZGxlclR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19j
YXN0PEhhbmRsZXJUeXBlPih0eXBlQml0cyk7IH0KICAgICB2b2lkIHNldFR5cGUoSGFuZGxlclR5
cGUgdHlwZSkgeyB0eXBlQml0cyA9IHN0YXRpY19jYXN0PHVpbnQzMl90Pih0eXBlKTsgfQpAQCAt
NTgsNiArNjMsMjMgQEAgc3RydWN0IEhhbmRsZXJJbmZvQmFzZSB7CiAKICAgICBib29sIGlzQ2F0
Y2hIYW5kbGVyKCkgY29uc3QgeyByZXR1cm4gdHlwZSgpID09IEhhbmRsZXJUeXBlOjpDYXRjaDsg
fQogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgSGFuZGxlcj4KKyAgICBzdGF0aWMgSGFuZGxlciog
aGFuZGxlckZvckluZGV4KFZlY3RvcjxIYW5kbGVyPiYgZXhlcHRpb25IYW5kbGVycywgdW5zaWdu
ZWQgaW5kZXgsIFJlcXVpcmVkSGFuZGxlciByZXF1aXJlZEhhbmRsZXIpCisgICAgeworICAgICAg
ICBmb3IgKEhhbmRsZXImIGhhbmRsZXIgOiBleGVwdGlvbkhhbmRsZXJzKSB7CisgICAgICAgICAg
ICBpZiAoKHJlcXVpcmVkSGFuZGxlciA9PSBSZXF1aXJlZEhhbmRsZXI6OkNhdGNoSGFuZGxlcikg
JiYgIWhhbmRsZXIuaXNDYXRjaEhhbmRsZXIoKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsK
KworICAgICAgICAgICAgLy8gSGFuZGxlcnMgYXJlIG9yZGVyZWQgaW5uZXJtb3N0IGZpcnN0LCBz
byB0aGUgZmlyc3QgaGFuZGxlciB3ZSBlbmNvdW50ZXIKKyAgICAgICAgICAgIC8vIHRoYXQgY29u
dGFpbnMgdGhlIHNvdXJjZSBhZGRyZXNzIGlzIHRoZSBjb3JyZWN0IGhhbmRsZXIgdG8gdXNlLgor
ICAgICAgICAgICAgLy8gVGhpcyBpbmRleCB1c2VkIGlzIGVpdGhlciB0aGUgQnl0ZWNvZGVPZmZz
ZXQgb3IgYSBDYWxsU2l0ZUluZGV4LgorICAgICAgICAgICAgaWYgKGhhbmRsZXIuc3RhcnQgPD0g
aW5kZXggJiYgaGFuZGxlci5lbmQgPiBpbmRleCkKKyAgICAgICAgICAgICAgICByZXR1cm4gJmhh
bmRsZXI7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKICAg
ICB1aW50MzJfdCBzdGFydDsKICAgICB1aW50MzJfdCBlbmQ7CiAgICAgdWludDMyX3QgdGFyZ2V0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1w
VGFyZ2V0cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBU
YXJnZXRzLmNwcAppbmRleCBlMmNiMDAwNDgzNzk0YmE5MmQ1MTBkY2Y1ZmE5OTQ4ODVhMjNkYzNk
Li5jYWI5ZmJkYzRlODM5ZmJiODlhNjkzMzU2MjIyZGIwMGUxMDIyM2NhIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmNwcApA
QCAtMjYsMTQgKzI2LDE1IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUHJlY2lz
ZUp1bXBUYXJnZXRzLmgiCiAKKyNpbmNsdWRlICJJbnRlcnByZXRlcklubGluZXMuaCIKICNpbmNs
dWRlICJKU0NJbmxpbmVzLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCi10ZW1wbGF0ZSA8c2l6ZV90
IHZlY3RvclNpemU+Ci1zdGF0aWMgdm9pZCBnZXRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0
KENvZGVCbG9jayogY29kZUJsb2NrLCBJbnRlcnByZXRlciogaW50ZXJwcmV0ZXIsIEluc3RydWN0
aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIFZlY3Rvcjx1
bnNpZ25lZCwgdmVjdG9yU2l6ZT4mIG91dCkKK3RlbXBsYXRlIDxzaXplX3QgdmVjdG9yU2l6ZSwg
dHlwZW5hbWUgQmxvY2ssIHR5cGVuYW1lIEluc3RydWN0aW9uPgorc3RhdGljIHZvaWQgZ2V0SnVt
cFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChCbG9jayogY29kZUJsb2NrLCBJbnRlcnByZXRlciog
aW50ZXJwcmV0ZXIsIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgYnl0
ZWNvZGVPZmZzZXQsIFZlY3Rvcjx1bnNpZ25lZCwgdmVjdG9yU2l6ZT4mIG91dCkKIHsKLSAgICBP
cGNvZGVJRCBvcGNvZGVJRCA9IGludGVycHJldGVyLT5nZXRPcGNvZGVJRChpbnN0cnVjdGlvbnNC
ZWdpbltieXRlY29kZU9mZnNldF0udS5vcGNvZGUpOworICAgIE9wY29kZUlEIG9wY29kZUlEID0g
aW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGluc3RydWN0aW9uc0JlZ2luW2J5dGVjb2RlT2Zmc2V0
XSk7CiAgICAgSW5zdHJ1Y3Rpb24qIGN1cnJlbnQgPSBpbnN0cnVjdGlvbnNCZWdpbiArIGJ5dGVj
b2RlT2Zmc2V0OwogICAgIHN3aXRjaCAob3Bjb2RlSUQpIHsKICAgICBjYXNlIG9wX2ptcDoKQEAg
LTU0LDIxICs1NSwyNSBAQCBzdGF0aWMgdm9pZCBnZXRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zm
c2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBJbnRlcnByZXRlciogaQogICAgIGNhc2Ugb3Bfam5s
ZXNzZXE6CiAgICAgY2FzZSBvcF9qbmdyZWF0ZXI6CiAgICAgY2FzZSBvcF9qbmdyZWF0ZXJlcToK
LSAgICBjYXNlIG9wX3NhdmU6IC8vIFRoZSBqdW1wIG9mIG9wX3NhdmUgaXMgcHVyZWx5IGZvciBj
YWxjdWxhdGluZyBsaXZlbmVzcy4KICAgICAgICAgb3V0LmFwcGVuZChieXRlY29kZU9mZnNldCAr
IGN1cnJlbnRbM10udS5vcGVyYW5kKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBvcF9zYXZl
OiB7CisgICAgICAgIC8vIFRoZSBqdW1wIG9mIG9wX3NhdmUgdW5kZXIgRXh0cmFjdEdlbmVyYXRv
ckxpdmVDYWxsZWVMb2NhbHMgbW9kZSBpcyBwdXJlbHkgZm9yIGNhbGN1bGF0aW5nIGxpdmVuZXNz
LgorICAgICAgICBvdXQuYXBwZW5kKGJ5dGVjb2RlT2Zmc2V0ICsgY3VycmVudFszXS51Lm9wZXJh
bmQpOworICAgICAgICBicmVhazsKKyAgICB9CiAgICAgY2FzZSBvcF9zd2l0Y2hfaW1tOgogICAg
IGNhc2Ugb3Bfc3dpdGNoX2NoYXI6IHsKLSAgICAgICAgU2ltcGxlSnVtcFRhYmxlJiB0YWJsZSA9
IGNvZGVCbG9jay0+c3dpdGNoSnVtcFRhYmxlKGN1cnJlbnRbMV0udS5vcGVyYW5kKTsKKyAgICAg
ICAgYXV0byYgdGFibGUgPSBjb2RlQmxvY2stPnN3aXRjaEp1bXBUYWJsZShjdXJyZW50WzFdLnUu
b3BlcmFuZCk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IHRhYmxlLmJyYW5jaE9mZnNldHMu
c2l6ZSgpOyBpLS07KQogICAgICAgICAgICAgb3V0LmFwcGVuZChieXRlY29kZU9mZnNldCArIHRh
YmxlLmJyYW5jaE9mZnNldHNbaV0pOwogICAgICAgICBvdXQuYXBwZW5kKGJ5dGVjb2RlT2Zmc2V0
ICsgY3VycmVudFsyXS51Lm9wZXJhbmQpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2Fz
ZSBvcF9zd2l0Y2hfc3RyaW5nOiB7Ci0gICAgICAgIFN0cmluZ0p1bXBUYWJsZSYgdGFibGUgPSBj
b2RlQmxvY2stPnN0cmluZ1N3aXRjaEp1bXBUYWJsZShjdXJyZW50WzFdLnUub3BlcmFuZCk7Ci0g
ICAgICAgIFN0cmluZ0p1bXBUYWJsZTo6U3RyaW5nT2Zmc2V0VGFibGU6Oml0ZXJhdG9yIGl0ZXIg
PSB0YWJsZS5vZmZzZXRUYWJsZS5iZWdpbigpOwotICAgICAgICBTdHJpbmdKdW1wVGFibGU6OlN0
cmluZ09mZnNldFRhYmxlOjppdGVyYXRvciBlbmQgPSB0YWJsZS5vZmZzZXRUYWJsZS5lbmQoKTsK
KyAgICAgICAgYXV0byYgdGFibGUgPSBjb2RlQmxvY2stPnN0cmluZ1N3aXRjaEp1bXBUYWJsZShj
dXJyZW50WzFdLnUub3BlcmFuZCk7CisgICAgICAgIGF1dG8gaXRlciA9IHRhYmxlLm9mZnNldFRh
YmxlLmJlZ2luKCk7CisgICAgICAgIGF1dG8gZW5kID0gdGFibGUub2Zmc2V0VGFibGUuZW5kKCk7
CiAgICAgICAgIGZvciAoOyBpdGVyICE9IGVuZDsgKytpdGVyKQogICAgICAgICAgICAgb3V0LmFw
cGVuZChieXRlY29kZU9mZnNldCArIGl0ZXItPnZhbHVlLmJyYW5jaE9mZnNldCk7CiAgICAgICAg
IG91dC5hcHBlbmQoYnl0ZWNvZGVPZmZzZXQgKyBjdXJyZW50WzJdLnUub3BlcmFuZCk7CkBAIC04
MiwxMyArODcsMTkgQEAgc3RhdGljIHZvaWQgZ2V0SnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNl
dChDb2RlQmxvY2sqIGNvZGVCbG9jaywgSW50ZXJwcmV0ZXIqIGkKICAgICB9CiB9CiAKLXZvaWQg
Y29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgVmVjdG9yPHVu
c2lnbmVkLCAzMj4mIG91dCkKK2VudW0gY2xhc3MgQ29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0c01v
ZGUgeworICAgIEZvbGxvd0NvZGVCbG9ja0NsYWltLAorICAgIEZvcmNlQ29tcHV0ZSwKK307CisK
K3RlbXBsYXRlPENvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHNNb2RlIE1vZGUsIHR5cGVuYW1lIEJs
b2NrLCB0eXBlbmFtZSBJbnN0cnVjdGlvbiwgc2l6ZV90IHZlY3RvclNpemU+Cit2b2lkIGNvbXB1
dGVQcmVjaXNlSnVtcFRhcmdldHNJbnRlcm5hbChCbG9jayogY29kZUJsb2NrLCBJbnN0cnVjdGlv
biogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQsIFZlY3Rvcjx1
bnNpZ25lZCwgdmVjdG9yU2l6ZT4mIG91dCkKIHsKICAgICBBU1NFUlQob3V0LmlzRW1wdHkoKSk7
CiAgICAgCiAgICAgLy8gV2Ugd2lsbCBkZXJpdmUgYSBzdXBlcnNldCBvZiB0aGUganVtcCB0YXJn
ZXRzIHRoYXQgdGhlIGNvZGUgYmxvY2sgdGhpbmtzIGl0IGhhcy4KICAgICAvLyBTbywgaWYgdGhl
IGNvZGUgYmxvY2sgY2xhaW1zIHRoZXJlIGFyZSBub25lLCB0aGVuIHdlIGFyZSBkb25lLgotICAg
IGlmICghY29kZUJsb2NrLT5udW1iZXJPZkp1bXBUYXJnZXRzKCkpCisgICAgaWYgKE1vZGUgPT0g
Q29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0c01vZGU6OkZvbGxvd0NvZGVCbG9ja0NsYWltICYmICFj
b2RlQmxvY2stPm51bWJlck9mSnVtcFRhcmdldHMoKSkKICAgICAgICAgcmV0dXJuOwogICAgIAog
ICAgIGZvciAodW5zaWduZWQgaSA9IGNvZGVCbG9jay0+bnVtYmVyT2ZFeGNlcHRpb25IYW5kbGVy
cygpOyBpLS07KSB7CkBAIC05OCwxMCArMTA5LDggQEAgdm9pZCBjb21wdXRlUHJlY2lzZUp1bXBU
YXJnZXRzKENvZGVCbG9jayogY29kZUJsb2NrLCBWZWN0b3I8dW5zaWduZWQsIDMyPiYgb3V0KQog
ICAgIH0KIAogICAgIEludGVycHJldGVyKiBpbnRlcnByZXRlciA9IGNvZGVCbG9jay0+dm0oKS0+
aW50ZXJwcmV0ZXI7Ci0gICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luID0gY29kZUJs
b2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpOwotICAgIHVuc2lnbmVkIGluc3RydWN0aW9uQ291
bnQgPSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLnNpemUoKTsKICAgICBmb3IgKHVuc2lnbmVk
IGJ5dGVjb2RlT2Zmc2V0ID0gMDsgYnl0ZWNvZGVPZmZzZXQgPCBpbnN0cnVjdGlvbkNvdW50Oykg
ewotICAgICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGludGVycHJldGVyLT5nZXRPcGNvZGVJRChp
bnN0cnVjdGlvbnNCZWdpbltieXRlY29kZU9mZnNldF0udS5vcGNvZGUpOworICAgICAgICBPcGNv
ZGVJRCBvcGNvZGVJRCA9IGludGVycHJldGVyLT5nZXRPcGNvZGVJRChpbnN0cnVjdGlvbnNCZWdp
bltieXRlY29kZU9mZnNldF0pOwogICAgICAgICBnZXRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zm
c2V0KGNvZGVCbG9jaywgaW50ZXJwcmV0ZXIsIGluc3RydWN0aW9uc0JlZ2luLCBieXRlY29kZU9m
ZnNldCwgb3V0KTsKICAgICAgICAgYnl0ZWNvZGVPZmZzZXQgKz0gb3Bjb2RlTGVuZ3Roc1tvcGNv
ZGVJRF07CiAgICAgfQpAQCAtMTIzLDExICsxMzIsMzQgQEAgdm9pZCBjb21wdXRlUHJlY2lzZUp1
bXBUYXJnZXRzKENvZGVCbG9jayogY29kZUJsb2NrLCBWZWN0b3I8dW5zaWduZWQsIDMyPiYgb3V0
KQogICAgIG91dC5zaHJpbmtUb0ZpdCgpOwogfQogCi12b2lkIGZpbmRKdW1wVGFyZ2V0c0ZvckJ5
dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9mZnNl
dCwgVmVjdG9yPHVuc2lnbmVkLCAxPiYgb3V0KQordm9pZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJn
ZXRzKENvZGVCbG9jayogY29kZUJsb2NrLCBWZWN0b3I8dW5zaWduZWQsIDMyPiYgb3V0KQogewot
ICAgIEludGVycHJldGVyKiBpbnRlcnByZXRlciA9IGNvZGVCbG9jay0+dm0oKS0+aW50ZXJwcmV0
ZXI7Ci0gICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luID0gY29kZUJsb2NrLT5pbnN0
cnVjdGlvbnMoKS5iZWdpbigpOwotICAgIGdldEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQo
Y29kZUJsb2NrLCBpbnRlcnByZXRlciwgaW5zdHJ1Y3Rpb25zQmVnaW4sIGJ5dGVjb2RlT2Zmc2V0
LCBvdXQpOworICAgIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHNJbnRlcm5hbDxDb21wdXRlUHJl
Y2lzZUp1bXBUYXJnZXRzTW9kZTo6Rm9sbG93Q29kZUJsb2NrQ2xhaW0+KGNvZGVCbG9jaywgY29k
ZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpLCBjb2RlQmxvY2stPmluc3RydWN0aW9ucygp
LnNpemUoKSwgb3V0KTsKK30KKwordm9pZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKENvZGVC
bG9jayogY29kZUJsb2NrLCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVk
IGluc3RydWN0aW9uQ291bnQsIFZlY3Rvcjx1bnNpZ25lZCwgMzI+JiBvdXQpCit7CisgICAgY29t
cHV0ZVByZWNpc2VKdW1wVGFyZ2V0c0ludGVybmFsPENvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHNN
b2RlOjpGb2xsb3dDb2RlQmxvY2tDbGFpbT4oY29kZUJsb2NrLCBpbnN0cnVjdGlvbnNCZWdpbiwg
aW5zdHJ1Y3Rpb25Db3VudCwgb3V0KTsKK30KKwordm9pZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJn
ZXRzKFVubGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFVubGlua2VkSW5zdHJ1Y3Rpb24qIGlu
c3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50LCBWZWN0b3I8dW5zaWdu
ZWQsIDMyPiYgb3V0KQoreworICAgIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHNJbnRlcm5hbDxD
b21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzTW9kZTo6Rm9sbG93Q29kZUJsb2NrQ2xhaW0+KGNvZGVC
bG9jaywgaW5zdHJ1Y3Rpb25zQmVnaW4sIGluc3RydWN0aW9uQ291bnQsIG91dCk7Cit9CisKK3Zv
aWQgcmVjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKFVubGlua2VkQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssIFVubGlua2VkSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBpbnN0
cnVjdGlvbkNvdW50LCBWZWN0b3I8dW5zaWduZWQ+JiBvdXQpCit7CisgICAgY29tcHV0ZVByZWNp
c2VKdW1wVGFyZ2V0c0ludGVybmFsPENvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHNNb2RlOjpGb3Jj
ZUNvbXB1dGU+KGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb25zQmVnaW4sIGluc3RydWN0aW9uQ291bnQs
IG91dCk7Cit9CisKK3ZvaWQgZmluZEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJs
b2NrKiBjb2RlQmxvY2ssIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQg
Ynl0ZWNvZGVPZmZzZXQsIFZlY3Rvcjx1bnNpZ25lZCwgMT4mIG91dCkKK3sKKyAgICBnZXRKdW1w
VGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9jaywgY29kZUJsb2NrLT52bSgpLT5pbnRl
cnByZXRlciwgaW5zdHJ1Y3Rpb25zQmVnaW4sIGJ5dGVjb2RlT2Zmc2V0LCBvdXQpOworfQorCit2
b2lkIGZpbmRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KFVubGlua2VkQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIFVubGlua2VkSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25l
ZCBieXRlY29kZU9mZnNldCwgVmVjdG9yPHVuc2lnbmVkLCAxPiYgb3V0KQoreworICAgIGdldEp1
bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoY29kZUJsb2NrLCBjb2RlQmxvY2stPnZtKCktPmlu
dGVycHJldGVyLCBpbnN0cnVjdGlvbnNCZWdpbiwgYnl0ZWNvZGVPZmZzZXQsIG91dCk7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5oCmluZGV4IDg1MjQxM2Q3N2I3OTg5ODRiMjdjZWYwZWQ2
MmJjOTRjNjg5ZTIxMmMuLmRiOWJkMzgzYjhhYzQ1NTdkMzI2NzE3YjcyZDRiMGY1MGIxZDE4Mzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRh
cmdldHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBU
YXJnZXRzLmgKQEAgLTMwLDEwICszMCwxOCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorY2xhc3Mg
VW5saW5rZWRDb2RlQmxvY2s7CitzdHJ1Y3QgVW5saW5rZWRJbnN0cnVjdGlvbjsKKwogLy8gUmV0
dXJuIGEgc29ydGVkIGxpc3Qgb2YgYnl0ZWNvZGUgaW5kZXggdGhhdCBhcmUgdGhlIGRlc3RpbmF0
aW9uIG9mIGEganVtcC4KIHZvaWQgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhDb2RlQmxvY2sq
LCBWZWN0b3I8dW5zaWduZWQsIDMyPiYgb3V0KTsKK3ZvaWQgY29tcHV0ZVByZWNpc2VKdW1wVGFy
Z2V0cyhDb2RlQmxvY2sqLCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVk
IGluc3RydWN0aW9uQ291bnQsIFZlY3Rvcjx1bnNpZ25lZCwgMzI+JiBvdXQpOwordm9pZCBjb21w
dXRlUHJlY2lzZUp1bXBUYXJnZXRzKFVubGlua2VkQ29kZUJsb2NrKiwgVW5saW5rZWRJbnN0cnVj
dGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQsIFZlY3Rv
cjx1bnNpZ25lZCwgMzI+JiBvdXQpOworCit2b2lkIHJlY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0
cyhVbmxpbmtlZENvZGVCbG9jayosIFVubGlua2VkSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0Jl
Z2luLCB1bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50LCBWZWN0b3I8dW5zaWduZWQ+JiBvdXQpOwog
Ci12b2lkIGZpbmRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayosIHVuc2ln
bmVkIGJ5dGVjb2RlT2Zmc2V0LCBWZWN0b3I8dW5zaWduZWQsIDE+JiBvdXQpOwordm9pZCBmaW5k
SnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqLCBJbnN0cnVjdGlvbiogaW5z
dHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBWZWN0b3I8dW5zaWduZWQs
IDE+JiBvdXQpOwordm9pZCBmaW5kSnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChVbmxpbmtl
ZENvZGVCbG9jayosIFVubGlua2VkSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1bnNp
Z25lZCBieXRlY29kZU9mZnNldCwgVmVjdG9yPHVuc2lnbmVkLCAxPiYgb3V0KTsKIAogfSAvLyBu
YW1lc3BhY2UgSlNDCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9VbmxpbmtlZENvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
VW5saW5rZWRDb2RlQmxvY2suY3BwCmluZGV4IDI5OWFjNjgwZDlhMWQxZTVhOTBkOWZhZTFhMjJm
ODQ0ZTI5MmUzZTIuLmY3YjVhZTBiNmI0NzIxNzBkMjg5NDY0MTY3NjYxOGM1N2M0OWVjMmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9j
ay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJs
b2NrLmNwcApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIlVubGlua2VkQ29kZUJsb2NrLmgi
CiAKICNpbmNsdWRlICJCeXRlY29kZUdlbmVyYXRvci5oIgorI2luY2x1ZGUgIkJ5dGVjb2RlTW9k
aWZpY2F0aW9uU2V0LmgiCiAjaW5jbHVkZSAiQ2xhc3NJbmZvLmgiCiAjaW5jbHVkZSAiQ29kZUNh
Y2hlLmgiCiAjaW5jbHVkZSAiRXhlY3V0YWJsZS5oIgpAQCAtMzYsNiArMzcsNyBAQAogI2luY2x1
ZGUgIkpTU3RyaW5nLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIlBhcnNl
ci5oIgorI2luY2x1ZGUgIlByZWNpc2VKdW1wVGFyZ2V0cy5oIgogI2luY2x1ZGUgIlNvdXJjZVBy
b3ZpZGVyLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlLmgiCiAjaW5jbHVkZSAiU3ltYm9sVGFibGUu
aCIKQEAgLTM2Niw1ICszNjgsMTExIEBAIGNvbnN0IFVubGlua2VkSW5zdHJ1Y3Rpb25TdHJlYW0m
IFVubGlua2VkQ29kZUJsb2NrOjppbnN0cnVjdGlvbnMoKSBjb25zdAogICAgIHJldHVybiAqbV91
bmxpbmtlZEluc3RydWN0aW9uczsKIH0KIAorVW5saW5rZWRIYW5kbGVySW5mbyogVW5saW5rZWRD
b2RlQmxvY2s6OmhhbmRsZXJGb3JCeXRlY29kZU9mZnNldCh1bnNpZ25lZCBieXRlY29kZU9mZnNl
dCwgUmVxdWlyZWRIYW5kbGVyIHJlcXVpcmVkSGFuZGxlcikKK3sKKyAgICByZXR1cm4gaGFuZGxl
ckZvckluZGV4KGJ5dGVjb2RlT2Zmc2V0LCByZXF1aXJlZEhhbmRsZXIpOworfQorCitVbmxpbmtl
ZEhhbmRsZXJJbmZvKiBVbmxpbmtlZENvZGVCbG9jazo6aGFuZGxlckZvckluZGV4KHVuc2lnbmVk
IGluZGV4LCBSZXF1aXJlZEhhbmRsZXIgcmVxdWlyZWRIYW5kbGVyKQoreworICAgIGlmICghbV9y
YXJlRGF0YSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIFVubGlua2VkSGFu
ZGxlckluZm86OmhhbmRsZXJGb3JJbmRleChtX3JhcmVEYXRhLT5tX2V4Y2VwdGlvbkhhbmRsZXJz
LCBpbmRleCwgcmVxdWlyZWRIYW5kbGVyKTsKK30KKwordm9pZCBVbmxpbmtlZENvZGVCbG9jazo6
YXBwbHlNb2RpZmljYXRpb24oQnl0ZWNvZGVNb2RpZmljYXRpb25TZXQmIGluc2VydGlvblNldCkK
K3sKKyAgICAvLyBCZWZvcmUgYXBwbHlpbmcgdGhlIGNoYW5nZXMsIHdlIGFkanVzdCB0aGUganVt
cHMgYmFzZWQgb24gdGhlIG9yaWdpbmFsIGJ5dGVjb2RlIG9mZnNldCwgdGhlIG9mZnNldCB0byB0
aGUganVtcCB0YXJnZXQsIGFuZAorICAgIC8vIHRoZSBpbnNlcnRpb24gaW5mb3JtYXRpb24uCisK
KyAgICBCeXRlY29kZUdyYXBoPFVubGlua2VkQ29kZUJsb2NrPiYgZ3JhcGggPSBpbnNlcnRpb25T
ZXQuZ3JhcGgoKTsKKyAgICBVbmxpbmtlZEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiA9
IGdyYXBoLmluc3RydWN0aW9ucygpLmJlZ2luKCk7CisgICAgZm9yIChpbnQgYnl0ZWNvZGVPZmZz
ZXQgPSAwLCBpbnN0cnVjdGlvbkNvdW50ID0gZ3JhcGguaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpOyBi
eXRlY29kZU9mZnNldCA8IGluc3RydWN0aW9uQ291bnQ7KSB7CisgICAgICAgIFVubGlua2VkSW5z
dHJ1Y3Rpb24qIGN1cnJlbnQgPSBpbnN0cnVjdGlvbnNCZWdpbiArIGJ5dGVjb2RlT2Zmc2V0Owor
ICAgICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGN1cnJlbnRbMF0udS5vcGNvZGU7CisKKyAgICAg
ICAgc3dpdGNoIChvcGNvZGVJRCkgeworICAgICAgICBjYXNlIG9wX2ptcDoKKyAgICAgICAgICAg
IGN1cnJlbnRbMV0udS5vcGVyYW5kID0gaW5zZXJ0aW9uU2V0LmFkanVzdE9mZnNldChieXRlY29k
ZU9mZnNldCwgYnl0ZWNvZGVPZmZzZXQgKyBjdXJyZW50WzFdLnUub3BlcmFuZCk7CisgICAgICAg
ICAgICBicmVhazsKKworICAgICAgICBjYXNlIG9wX2p0cnVlOgorICAgICAgICBjYXNlIG9wX2pm
YWxzZToKKyAgICAgICAgY2FzZSBvcF9qZXFfbnVsbDoKKyAgICAgICAgY2FzZSBvcF9qbmVxX251
bGw6CisgICAgICAgICAgICBjdXJyZW50WzJdLnUub3BlcmFuZCA9IGluc2VydGlvblNldC5hZGp1
c3RPZmZzZXQoYnl0ZWNvZGVPZmZzZXQsIGJ5dGVjb2RlT2Zmc2V0ICsgY3VycmVudFsyXS51Lm9w
ZXJhbmQpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBvcF9qbmVxX3B0cjoK
KyAgICAgICAgY2FzZSBvcF9qbGVzczoKKyAgICAgICAgY2FzZSBvcF9qbGVzc2VxOgorICAgICAg
ICBjYXNlIG9wX2pncmVhdGVyOgorICAgICAgICBjYXNlIG9wX2pncmVhdGVyZXE6CisgICAgICAg
IGNhc2Ugb3Bfam5sZXNzOgorICAgICAgICBjYXNlIG9wX2pubGVzc2VxOgorICAgICAgICBjYXNl
IG9wX2puZ3JlYXRlcjoKKyAgICAgICAgY2FzZSBvcF9qbmdyZWF0ZXJlcToKKyAgICAgICAgICAg
IGN1cnJlbnRbM10udS5vcGVyYW5kID0gaW5zZXJ0aW9uU2V0LmFkanVzdE9mZnNldChieXRlY29k
ZU9mZnNldCwgYnl0ZWNvZGVPZmZzZXQgKyBjdXJyZW50WzNdLnUub3BlcmFuZCk7CisgICAgICAg
ICAgICBicmVhazsKKworICAgICAgICBjYXNlIG9wX3N3aXRjaF9pbW06CisgICAgICAgIGNhc2Ug
b3Bfc3dpdGNoX2NoYXI6IHsKKyAgICAgICAgICAgIGF1dG8mIHRhYmxlID0gc3dpdGNoSnVtcFRh
YmxlKGN1cnJlbnRbMV0udS5vcGVyYW5kKTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IHRhYmxlLmJyYW5jaE9mZnNldHMuc2l6ZSgpOyBpLS07KQorICAgICAgICAgICAgICAgIHRhYmxl
LmJyYW5jaE9mZnNldHNbaV0gPSBpbnNlcnRpb25TZXQuYWRqdXN0T2Zmc2V0KGJ5dGVjb2RlT2Zm
c2V0LCBieXRlY29kZU9mZnNldCArIHRhYmxlLmJyYW5jaE9mZnNldHNbaV0pOworICAgICAgICAg
ICAgY3VycmVudFsyXS51Lm9wZXJhbmQgPSBpbnNlcnRpb25TZXQuYWRqdXN0T2Zmc2V0KGJ5dGVj
b2RlT2Zmc2V0LCBieXRlY29kZU9mZnNldCArIGN1cnJlbnRbMl0udS5vcGVyYW5kKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBvcF9zd2l0Y2hfc3RyaW5n
OiB7CisgICAgICAgICAgICBhdXRvJiB0YWJsZSA9IHN0cmluZ1N3aXRjaEp1bXBUYWJsZShjdXJy
ZW50WzFdLnUub3BlcmFuZCk7CisgICAgICAgICAgICBhdXRvIGl0ZXIgPSB0YWJsZS5vZmZzZXRU
YWJsZS5iZWdpbigpOworICAgICAgICAgICAgYXV0byBlbmQgPSB0YWJsZS5vZmZzZXRUYWJsZS5l
bmQoKTsKKyAgICAgICAgICAgIGZvciAoOyBpdGVyICE9IGVuZDsgKytpdGVyKQorICAgICAgICAg
ICAgICAgIGl0ZXItPnZhbHVlLmJyYW5jaE9mZnNldCA9IGluc2VydGlvblNldC5hZGp1c3RPZmZz
ZXQoYnl0ZWNvZGVPZmZzZXQsIGJ5dGVjb2RlT2Zmc2V0ICsgaXRlci0+dmFsdWUuYnJhbmNoT2Zm
c2V0KTsKKyAgICAgICAgICAgIGN1cnJlbnRbMl0udS5vcGVyYW5kID0gaW5zZXJ0aW9uU2V0LmFk
anVzdE9mZnNldChieXRlY29kZU9mZnNldCwgYnl0ZWNvZGVPZmZzZXQgKyBjdXJyZW50WzJdLnUu
b3BlcmFuZCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGRlZmF1
bHQ6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGJ5dGVjb2RlT2Zm
c2V0ICs9IG9wY29kZUxlbmd0aChvcGNvZGVJRCk7CisgICAgfQorCisgICAgLy8gVGhlbiwgZXhj
ZXB0aW9uIGhhbmRsZXJzIHNob3VsZCBiZSBhZGp1c3RlZC4KKyAgICBpZiAobV9yYXJlRGF0YSkg
eworICAgICAgICBmb3IgKFVubGlua2VkSGFuZGxlckluZm8mIGhhbmRsZXIgOiBtX3JhcmVEYXRh
LT5tX2V4Y2VwdGlvbkhhbmRsZXJzKSB7CisgICAgICAgICAgICBoYW5kbGVyLnRhcmdldCA9IGlu
c2VydGlvblNldC5hZGp1c3RPZmZzZXQoMCwgaGFuZGxlci50YXJnZXQpOworICAgICAgICAgICAg
aGFuZGxlci5zdGFydCA9IGluc2VydGlvblNldC5hZGp1c3RPZmZzZXQoMCwgaGFuZGxlci5zdGFy
dCk7CisgICAgICAgICAgICBoYW5kbGVyLmVuZCA9IGluc2VydGlvblNldC5hZGp1c3RPZmZzZXQo
MCwgaGFuZGxlci5lbmQpOworICAgICAgICB9CisKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBtX3JhcmVEYXRhLT5tX29wUHJvZmlsZUNvbnRyb2xGbG93Qnl0ZWNvZGVPZmZzZXRzLnNp
emUoKTsgKytpKQorICAgICAgICAgICAgbV9yYXJlRGF0YS0+bV9vcFByb2ZpbGVDb250cm9sRmxv
d0J5dGVjb2RlT2Zmc2V0c1tpXSA9IGluc2VydGlvblNldC5hZGp1c3RPZmZzZXQoMCwgbV9yYXJl
RGF0YS0+bV9vcFByb2ZpbGVDb250cm9sRmxvd0J5dGVjb2RlT2Zmc2V0c1tpXSk7CisKKyAgICAg
ICAgaWYgKCFtX3JhcmVEYXRhLT5tX3R5cGVQcm9maWxlckluZm9NYXAuaXNFbXB0eSgpKSB7Cisg
ICAgICAgICAgICBIYXNoTWFwPHVuc2lnbmVkLCBSYXJlRGF0YTo6VHlwZVByb2ZpbGVyRXhwcmVz
c2lvblJhbmdlPiBhZGp1c3RlZFR5cGVQcm9maWxlckluZm9NYXA7CisgICAgICAgICAgICBmb3Ig
KGF1dG8mIGVudHJ5IDogbV9yYXJlRGF0YS0+bV90eXBlUHJvZmlsZXJJbmZvTWFwKQorICAgICAg
ICAgICAgICAgIGFkanVzdGVkVHlwZVByb2ZpbGVySW5mb01hcC5zZXQoaW5zZXJ0aW9uU2V0LmFk
anVzdE9mZnNldCgwLCBlbnRyeS5rZXkpLCBlbnRyeS52YWx1ZSk7CisgICAgICAgICAgICBtX3Jh
cmVEYXRhLT5tX3R5cGVQcm9maWxlckluZm9NYXAuc3dhcChhZGp1c3RlZFR5cGVQcm9maWxlcklu
Zm9NYXApOworICAgICAgICB9CisgICAgfQorCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBt
X3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zLnNpemUoKTsgKytpKQorICAgICAgICBtX3Byb3Bl
cnR5QWNjZXNzSW5zdHJ1Y3Rpb25zW2ldID0gaW5zZXJ0aW9uU2V0LmFkanVzdE9mZnNldCgwLCBt
X3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zW2ldKTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgbV9leHByZXNzaW9uSW5mby5zaXplKCk7ICsraSkKKyAgICAgICAgbV9leHByZXNzaW9u
SW5mb1tpXS5pbnN0cnVjdGlvbk9mZnNldCA9IGluc2VydGlvblNldC5hZGp1c3RPZmZzZXQoMCwg
bV9leHByZXNzaW9uSW5mb1tpXS5pbnN0cnVjdGlvbk9mZnNldCk7CisKKyAgICAvLyBUaGVuLCBt
b2RpZnkgdGhlIHVubGlua2VkIGluc3RydWN0aW9ucy4KKyAgICBpbnNlcnRpb25TZXQuYXBwbHlN
b2RpZmljYXRpb24oKTsKKworICAgIC8vIEFuZCByZWNvbXB1dGUgdGhlIGp1bXAgdGFyZ2V0IGJh
c2VkIG9uIHRoZSBtb2RpZmllZCB1bmxpbmtlZCBpbnN0cnVjdGlvbnMuCisgICAgbV9qdW1wVGFy
Z2V0cy5jbGVhcigpOworICAgIHJlY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyh0aGlzLCBncmFw
aC5pbnN0cnVjdGlvbnMoKS5iZWdpbigpLCBncmFwaC5pbnN0cnVjdGlvbnMoKS5zaXplKCksIG1f
anVtcFRhcmdldHMpOworfQorCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKaW5kZXggOTFmZGNhNDhjMWUzOWU4YmVmYjBjNWZk
NTVmZDliZDkxYzFmMzcwNy4uODhjZjBjOGYwOWU0NDAzMzQxN2UwNGJhYTMyZGM1MDJkZTE4MDIw
OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29k
ZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29k
ZUJsb2NrLmgKQEAgLTQ4LDYgKzQ4LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKK2NsYXNzIEJ5
dGVjb2RlTW9kaWZpY2F0aW9uU2V0OwogY2xhc3MgRGVidWdnZXI7CiBjbGFzcyBGdW5jdGlvbk1l
dGFkYXRhTm9kZTsKIGNsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZTsKQEAgLTY5LDcgKzcwLDExIEBA
IHR5cGVkZWYgdW5zaWduZWQgVW5saW5rZWRPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTsKIHR5cGVk
ZWYgdW5zaWduZWQgVW5saW5rZWRMTEludENhbGxMaW5rSW5mbzsKIAogc3RydWN0IFVubGlua2Vk
U3RyaW5nSnVtcFRhYmxlIHsKLSAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFN0cmluZ0ltcGw+
LCBpbnQzMl90PiBTdHJpbmdPZmZzZXRUYWJsZTsKKyAgICBzdHJ1Y3QgT2Zmc2V0TG9jYXRpb24g
eworICAgICAgICBpbnQzMl90IGJyYW5jaE9mZnNldDsKKyAgICB9OworCisgICAgdHlwZWRlZiBI
YXNoTWFwPFJlZlB0cjxTdHJpbmdJbXBsPiwgT2Zmc2V0TG9jYXRpb24+IFN0cmluZ09mZnNldFRh
YmxlOwogICAgIFN0cmluZ09mZnNldFRhYmxlIG9mZnNldFRhYmxlOwogCiAgICAgaW5saW5lIGlu
dDMyX3Qgb2Zmc2V0Rm9yVmFsdWUoU3RyaW5nSW1wbCogdmFsdWUsIGludDMyX3QgZGVmYXVsdE9m
ZnNldCkKQEAgLTc4LDcgKzgzLDcgQEAgc3RydWN0IFVubGlua2VkU3RyaW5nSnVtcFRhYmxlIHsK
ICAgICAgICAgU3RyaW5nT2Zmc2V0VGFibGU6OmNvbnN0X2l0ZXJhdG9yIGxvYyA9IG9mZnNldFRh
YmxlLmZpbmQodmFsdWUpOwogICAgICAgICBpZiAobG9jID09IGVuZCkKICAgICAgICAgICAgIHJl
dHVybiBkZWZhdWx0T2Zmc2V0OwotICAgICAgICByZXR1cm4gbG9jLT52YWx1ZTsKKyAgICAgICAg
cmV0dXJuIGxvYy0+dmFsdWUuYnJhbmNoT2Zmc2V0OwogICAgIH0KIAogfTsKQEAgLTEwNiw2ICsx
MTEsOCBAQCBzdHJ1Y3QgVW5saW5rZWRJbnN0cnVjdGlvbiB7CiAgICAgfSB1OwogfTsKIAorY2xh
c3MgQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb247CisKIGNsYXNzIFVubGlua2VkQ29kZUJsb2Nr
IDogcHVibGljIEpTQ2VsbCB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBKU0NlbGwgQmFzZTsKQEAg
LTExNSw2ICsxMjIsOCBAQCBjbGFzcyBVbmxpbmtlZENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwg
ewogCiAgICAgZW51bSB7IENhbGxGdW5jdGlvbiwgQXBwbHlGdW5jdGlvbiB9OwogCisgICAgdHlw
ZWRlZiBWZWN0b3I8VW5saW5rZWRJbnN0cnVjdGlvbiwgMCwgVW5zYWZlVmVjdG9yT3ZlcmZsb3c+
IFVucGFja2VkSW5zdHJ1Y3Rpb25zOworCiAgICAgYm9vbCBpc0NvbnN0cnVjdG9yKCkgY29uc3Qg
eyByZXR1cm4gbV9pc0NvbnN0cnVjdG9yOyB9CiAgICAgYm9vbCBpc1N0cmljdE1vZGUoKSBjb25z
dCB7IHJldHVybiBtX2lzU3RyaWN0TW9kZTsgfQogICAgIGJvb2wgdXNlc0V2YWwoKSBjb25zdCB7
IHJldHVybiBtX3VzZXNFdmFsOyB9CkBAIC0yMDQsNiArMjEzLDkgQEAgY2xhc3MgVW5saW5rZWRD
b2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICB1bnNpZ25lZCBqdW1wVGFyZ2V0KGludCBp
bmRleCkgY29uc3QgeyByZXR1cm4gbV9qdW1wVGFyZ2V0c1tpbmRleF07IH0KICAgICB1bnNpZ25l
ZCBsYXN0SnVtcFRhcmdldCgpIGNvbnN0IHsgcmV0dXJuIG1fanVtcFRhcmdldHMubGFzdCgpOyB9
CiAKKyAgICBVbmxpbmtlZEhhbmRsZXJJbmZvKiBoYW5kbGVyRm9yQnl0ZWNvZGVPZmZzZXQodW5z
aWduZWQgYnl0ZWNvZGVPZmZzZXQsIFJlcXVpcmVkSGFuZGxlciA9IFJlcXVpcmVkSGFuZGxlcjo6
QW55SGFuZGxlcik7CisgICAgVW5saW5rZWRIYW5kbGVySW5mbyogaGFuZGxlckZvckluZGV4KHVu
c2lnbmVkLCBSZXF1aXJlZEhhbmRsZXIgPSBSZXF1aXJlZEhhbmRsZXI6OkFueUhhbmRsZXIpOwor
CiAgICAgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNCdWlsdGlu
RnVuY3Rpb247IH0KIAogICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQoKSBjb25z
dCB7IHJldHVybiBzdGF0aWNfY2FzdDxDb25zdHJ1Y3RvcktpbmQ+KG1fY29uc3RydWN0b3JLaW5k
KTsgfQpAQCAtMzg0LDYgKzM5Niw4IEBAIGNsYXNzIFVubGlua2VkQ29kZUJsb2NrIDogcHVibGlj
IEpTQ2VsbCB7CiAgICAgfQogCiBwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBCeXRlY29kZU1v
ZGlmaWNhdGlvblNldDsKKyAgICB2b2lkIGFwcGx5TW9kaWZpY2F0aW9uKEJ5dGVjb2RlTW9kaWZp
Y2F0aW9uU2V0Jik7CiAKICAgICB2b2lkIGNyZWF0ZVJhcmVEYXRhSWZOZWNlc3NhcnkoKQogICAg
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WaXJ0dWFsUmVn
aXN0ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WaXJ0dWFsUmVnaXN0ZXIu
aAppbmRleCBkM2RmNDA5NTdiNTE3NTY4ZTNhZWZiZTNhMWE2MDlmZDg3OGJhYWMzLi5kYWY1MDlm
NmM3ZDExNWU0NWJjYjEwN2M2N2QzZDM4ZDgwNGYyODk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmlydHVhbFJlZ2lzdGVyLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1ZpcnR1YWxSZWdpc3Rlci5oCkBAIC0yNiw4ICsyNiw4IEBACiAj
aWZuZGVmIFZpcnR1YWxSZWdpc3Rlcl9oCiAjZGVmaW5lIFZpcnR1YWxSZWdpc3Rlcl9oCiAKKyNp
bmNsdWRlICJCeXRlY29kZUNvbnZlbnRpb25zLmgiCiAjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCi0K
ICNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC0xMDMs
NyArMTAzLDcgQEAgY2xhc3MgVmlydHVhbFJlZ2lzdGVyIHsKIAogcHJpdmF0ZToKICAgICBzdGF0
aWMgY29uc3QgaW50IHNfaW52YWxpZFZpcnR1YWxSZWdpc3RlciA9IDB4M2ZmZmZmZmY7Ci0gICAg
c3RhdGljIGNvbnN0IGludCBzX2ZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4ID0gMHg0MDAwMDAw
MDsKKyAgICBzdGF0aWMgY29uc3QgaW50IHNfZmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXggPSBG
aXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleDsKIAogICAgIHN0YXRpYyBpbnQgbG9jYWxUb09wZXJh
bmQoaW50IGxvY2FsKSB7IHJldHVybiAtMSAtIGxvY2FsOyB9CiAgICAgc3RhdGljIGludCBvcGVy
YW5kVG9Mb2NhbChpbnQgb3BlcmFuZCkgeyByZXR1cm4gLTEgLSBvcGVyYW5kOyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuY3BwCmluZGV4IDBmYzhjZWIzYmQ1NmJiNWViOGM3Y2I3MzNkYTNhMDRhYzYzNjNlMjYuLjlh
MGE0YTc2ZWM2ZGY0YzUwZjlkNjI2ZmE3NWYwYTRkZDMxMTA5ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3Bw
CkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiQnl0ZWNvZGVHZW5lcmF0b3IuaCIKIAogI2lu
Y2x1ZGUgIkJ1aWx0aW5FeGVjdXRhYmxlcy5oIgorI2luY2x1ZGUgIkJ5dGVjb2RlR2VuZXJhdG9y
aWZpY2F0aW9uLmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmgiCiAjaW5j
bHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCkBAIC0xNTQsNiAr
MTU1LDEwIEBAIFBhcnNlckVycm9yIEJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZSgpCiAgICAg
ICAgIG1fY29kZUJsb2NrLT5hZGRFeGNlcHRpb25IYW5kbGVyKGluZm8pOwogICAgIH0KICAgICAK
KworICAgIGlmIChtX2NvZGVCbG9jay0+cGFyc2VNb2RlKCkgPT0gU291cmNlUGFyc2VNb2RlOjpH
ZW5lcmF0b3JCb2R5TW9kZSkKKyAgICAgICAgcGVyZm9ybUdlbmVyYXRvcmlmaWNhdGlvbihtX2Nv
ZGVCbG9jay5nZXQoKSwgbV9pbnN0cnVjdGlvbnMsIG1fZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJs
ZS5nZXQoKSwgbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlSW5kZXgpOworCiAgICAgbV9jb2Rl
QmxvY2stPnNldEluc3RydWN0aW9ucyhzdGQ6Om1ha2VfdW5pcXVlPFVubGlua2VkSW5zdHJ1Y3Rp
b25TdHJlYW0+KG1faW5zdHJ1Y3Rpb25zKSk7CiAKICAgICBtX2NvZGVCbG9jay0+c2hyaW5rVG9G
aXQoKTsKQEAgLTI2MSwxMCArMjY2LDE0IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdl
bmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtlCiAgICAg
Ym9vbCBzaG91bGRDYXB0dXJlQWxsT2ZUaGVUaGluZ3MgPSBtX3Nob3VsZEVtaXREZWJ1Z0hvb2tz
IHx8IGNvZGVCbG9jay0+dXNlc0V2YWwoKTsKICAgICBib29sIG5lZWRzQXJndW1lbnRzID0gKGZ1
bmN0aW9uTm9kZS0+dXNlc0FyZ3VtZW50cygpIHx8IGNvZGVCbG9jay0+dXNlc0V2YWwoKSB8fCAo
ZnVuY3Rpb25Ob2RlLT51c2VzQXJyb3dGdW5jdGlvbigpICYmICFjb2RlQmxvY2stPmlzQXJyb3dG
dW5jdGlvbigpICYmIGlzQXJndW1lbnRzVXNlZEluSW5uZXJBcnJvd0Z1bmN0aW9uKCkpKTsKIAot
ICAgIC8vIEdlbmVyYXRvciBuZXZlciBwcm92aWRlcyAiYXJndW1lbnRzIi4gImFyZ3VtZW50cyIg
cmVmZXJlbmNlIHdpbGwgYmUgcmVzb2x2ZWQgaW4gYW4gdXBwZXIgZ2VuZXJhdG9yIGZ1bmN0aW9u
IHNjb3BlLgotICAgIGlmIChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JC
b2R5TW9kZSkKKyAgICBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9y
Qm9keU1vZGUpIHsKKyAgICAgICAgLy8gR2VuZXJhdG9yIG5ldmVyIHByb3ZpZGVzICJhcmd1bWVu
dHMiLiAiYXJndW1lbnRzIiByZWZlcmVuY2Ugd2lsbCBiZSByZXNvbHZlZCBpbiBhbiB1cHBlciBn
ZW5lcmF0b3IgZnVuY3Rpb24gc2NvcGUuCiAgICAgICAgIG5lZWRzQXJndW1lbnRzID0gZmFsc2U7
CiAKKyAgICAgICAgLy8gR2VuZXJhdG9yIHVzZXMgdGhlIHZhciBzY29wZSB0byBzYXZlIGFuZCBy
ZXN1bWUgaXRzIHZhcmlhYmxlcy4gU28gdGhlIGxleGljYWwgc2NvcGUgaXMgYWx3YXlzIGluc3Rh
bnRpYXRlZC4KKyAgICAgICAgc2hvdWxkQ2FwdHVyZVNvbWVPZlRoZVRoaW5ncyA9IHRydWU7Cisg
ICAgfQorCiAgICAgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvcldy
YXBwZXJGdW5jdGlvbk1vZGUgJiYgbmVlZHNBcmd1bWVudHMpIHsKICAgICAgICAgLy8gR2VuZXJh
dG9yIGRvZXMgbm90IHByb3ZpZGUgImFyZ3VtZW50cyIuIEluc3RlYWQsIHdyYXBwaW5nIEdlbmVy
YXRvckZ1bmN0aW9uIHByb3ZpZGVzICJhcmd1bWVudHMiLgogICAgICAgICAvLyBUaGlzIGlzIGJl
Y2F1c2UgYXJndW1lbnRzIG9mIGEgZ2VuZXJhdG9yIHNob3VsZCBiZSBldmFsdWF0ZWQgYmVmb3Jl
IHN0YXJ0aW5nIGl0LgpAQCAtMjczLDcgKzI4Miw3IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRl
Y29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtl
CiAgICAgICAgIC8vICAgIGZ1bmN0aW9uICpnZW4oYSwgYiA9IGhlbGxvKCkpCiAgICAgICAgIC8v
ICAgIHsKICAgICAgICAgLy8gICAgICAgIHJldHVybiB7Ci0gICAgICAgIC8vICAgICAgICAgICAg
QGdlbmVyYXRvck5leHQ6IGZ1bmN0aW9uIChAZ2VuZXJhdG9yLCBAZ2VuZXJhdG9yU3RhdGUsIEBn
ZW5lcmF0b3JWYWx1ZSwgQGdlbmVyYXRvclJlc3VtZU1vZGUpCisgICAgICAgIC8vICAgICAgICAg
ICAgQGdlbmVyYXRvck5leHQ6IGZ1bmN0aW9uIChAZ2VuZXJhdG9yLCBAZ2VuZXJhdG9yU3RhdGUs
IEBnZW5lcmF0b3JWYWx1ZSwgQGdlbmVyYXRvclJlc3VtZU1vZGUsIEBnZW5lcmF0b3JGcmFtZSkK
ICAgICAgICAgLy8gICAgICAgICAgICB7CiAgICAgICAgIC8vICAgICAgICAgICAgICAgIGFyZ3Vt
ZW50czsgIC8vIFRoaXMgYGFyZ3VtZW50c2Agc2hvdWxkIHJlZmVyZW5jZSB0byB0aGUgZ2VuJ3Mg
YXJndW1lbnRzLgogICAgICAgICAvLyAgICAgICAgICAgICAgICAuLi4KQEAgLTMwMiwxNiArMzEx
LDE0IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0
aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtlCiAgICAgICAgIHJldHVybiBjYXB0dXJlcyh1
aWQpID8gVmFyS2luZDo6U2NvcGUgOiBWYXJLaW5kOjpTdGFjazsKICAgICB9OwogCi0gICAgZW1p
dEVudGVyKCk7Ci0KLSAgICBhbGxvY2F0ZUFuZEVtaXRTY29wZSgpOwotCiAgICAgbV9jYWxsZWVS
ZWdpc3Rlci5zZXRJbmRleChDYWxsRnJhbWVTbG90OjpjYWxsZWUpOwogCiAgICAgaW5pdGlhbGl6
ZVBhcmFtZXRlcnMocGFyYW1ldGVycyk7CiAgICAgQVNTRVJUKCEoaXNTaW1wbGVQYXJhbWV0ZXJM
aXN0ICYmIG1fcmVzdFBhcmFtZXRlcikpOwogCi0gICAgLy8gQmVmb3JlIGVtaXR0aW5nIGEgc2Nv
cGUgY3JlYXRpb24sIGVtaXQgYSBnZW5lcmF0b3IgcHJvbG9ndWUgdGhhdCBjb250YWlucyBqdW1w
IGJhc2VkIG9uIGEgZ2VuZXJhdG9yJ3Mgc3RhdGUuCisgICAgZW1pdEVudGVyKCk7CisKKyAgICAv
LyBCZWZvcmUgZW1pdHRpbmcgYW55IG9mIHRoZSBhY3R1YWwgY29kZSBleGNlcHQgZm9yIG9wX2Vu
dGVyLCBlbWl0IGEgZ2VuZXJhdG9yIHByb2xvZ3VlIHRoYXQgY29udGFpbnMganVtcCBiYXNlZCBv
biBhIGdlbmVyYXRvcidzIHN0YXRlLgogICAgIGlmIChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VN
b2RlOjpHZW5lcmF0b3JCb2R5TW9kZSkgewogICAgICAgICBtX2dlbmVyYXRvclJlZ2lzdGVyID0g
Jm1fcGFyYW1ldGVyc1sxXTsKIApAQCAtMzI1LDYgKzMzMiw4IEBAIEJ5dGVjb2RlR2VuZXJhdG9y
OjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBV
bmxpbmtlCiAgICAgICAgIGVtaXRHZW5lcmF0b3JTdGF0ZUxhYmVsKCk7CiAgICAgfQogCisgICAg
YWxsb2NhdGVBbmRFbWl0U2NvcGUoKTsKKwogICAgIGlmIChmdW5jdGlvbk5hbWVJc0luU2NvcGUo
ZnVuY3Rpb25Ob2RlLT5pZGVudCgpLCBmdW5jdGlvbk5vZGUtPmZ1bmN0aW9uTW9kZSgpKSkgewog
ICAgICAgICBBU1NFUlQocGFyc2VNb2RlICE9IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yQm9k
eU1vZGUpOwogICAgICAgICBib29sIGlzRHluYW1pY1Njb3BlID0gZnVuY3Rpb25OYW1lU2NvcGVJ
c0R5bmFtaWMoY29kZUJsb2NrLT51c2VzRXZhbCgpLCBjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgp
KTsKQEAgLTYzMSw2ICs2NDAsMTYgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJh
dG9yKFZNJiB2bSwgRnVuY3Rpb25Ob2RlKiBmdW5jdGlvbk5vZGUsIFVubGlua2UKICAgICAgICAg
ICAgIGVtaXRMb2FkTmV3VGFyZ2V0RnJvbUFycm93RnVuY3Rpb25MZXhpY2FsRW52aXJvbm1lbnQo
KTsKICAgICB9CiAgICAgCisgICAgLy8gU2V0IHVwIHRoZSBsZXhpY2FsIGVudmlyb25tZW50IHNj
b3BlIGFzIHRoZSBnZW5lcmF0b3IgZnJhbWUuIFdlIHN0b3JlIHRoZSBzYXZlZCBhbmQgcmVzdW1l
ZCBnZW5lcmF0b3IgcmVnaXN0ZXJzIGludG8gdGhpcyBzY29wZSB3aXRoIHRoZSBzeW1ib2wga2V5
cy4KKyAgICAvLyBTaW5jZSB0aGV5IGFyZSBzeW1ib2wga2V5ZWQsIHRoZXNlIHZhcmlhYmxlcyBj
YW5ub3QgYmUgcmVhY2hlZCBmcm9tIHRoZSB1c3VhbCBjb2RlLgorICAgIGlmIChTb3VyY2VQYXJz
ZU1vZGU6OkdlbmVyYXRvckJvZHlNb2RlID09IHBhcnNlTW9kZSkgeworICAgICAgICBBU1NFUlQo
bV9sZXhpY2FsRW52aXJvbm1lbnRSZWdpc3Rlcik7CisgICAgICAgIG1fZ2VuZXJhdG9yRnJhbWVT
eW1ib2xUYWJsZS5zZXQoKm1fdm0sIGZ1bmN0aW9uU3ltYm9sVGFibGUpOworICAgICAgICBtX2dl
bmVyYXRvckZyYW1lU3ltYm9sVGFibGVJbmRleCA9IHN5bWJvbFRhYmxlQ29uc3RhbnRJbmRleDsK
KyAgICAgICAgZW1pdE1vdmUoZ2VuZXJhdG9yRnJhbWVSZWdpc3RlcigpLCBtX2xleGljYWxFbnZp
cm9ubWVudFJlZ2lzdGVyKTsKKyAgICAgICAgZW1pdFB1dEJ5SWQoZ2VuZXJhdG9yUmVnaXN0ZXIo
KSwgcHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvckZyYW1lUHJpdmF0ZU5h
bWUoKSwgZ2VuZXJhdG9yRnJhbWVSZWdpc3RlcigpKTsKKyAgICB9CisKICAgICBib29sIHNob3Vs
ZEluaXRpYWxpemVCbG9ja1Njb3BlZEZ1bmN0aW9ucyA9IGZhbHNlOyAvLyBXZSBnZW5lcmF0ZSB0
b3AtbGV2ZWwgZnVuY3Rpb24gZGVjbGFyYXRpb25zIGluIDo6Z2VuZXJhdGUoKS4KICAgICBwdXNo
TGV4aWNhbFNjb3BlKG1fc2NvcGVOb2RlLCBURFpDaGVja09wdGltaXphdGlvbjo6T3B0aW1pemUs
IE5lc3RlZFNjb3BlVHlwZTo6SXNOb3ROZXN0ZWQsIG51bGxwdHIsIHNob3VsZEluaXRpYWxpemVC
bG9ja1Njb3BlZEZ1bmN0aW9ucyk7CiB9CkBAIC0zNjYyLDggKzM2ODEsNyBAQCB2b2lkIEJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0Q29tcGxleFBvcFNjb3BlcyhSZWdpc3RlcklEKiBzY29wZSwgQ29u
dHJvbEZsb3dDb250ZQogICAgICAgICAgICAgaWYgKGZsaXBUcmllcykgewogICAgICAgICAgICAg
ICAgIHdoaWxlIChtX3RyeUNvbnRleHRTdGFjay5zaXplKCkgIT0gZmluYWxseUNvbnRleHQudHJ5
Q29udGV4dFN0YWNrU2l6ZSkgewogICAgICAgICAgICAgICAgICAgICBBU1NFUlQobV90cnlDb250
ZXh0U3RhY2suc2l6ZSgpID4gZmluYWxseUNvbnRleHQudHJ5Q29udGV4dFN0YWNrU2l6ZSk7Ci0g
ICAgICAgICAgICAgICAgICAgIFRyeUNvbnRleHQgY29udGV4dCA9IG1fdHJ5Q29udGV4dFN0YWNr
Lmxhc3QoKTsKLSAgICAgICAgICAgICAgICAgICAgbV90cnlDb250ZXh0U3RhY2sucmVtb3ZlTGFz
dCgpOworICAgICAgICAgICAgICAgICAgICBUcnlDb250ZXh0IGNvbnRleHQgPSBtX3RyeUNvbnRl
eHRTdGFjay50YWtlTGFzdCgpOwogICAgICAgICAgICAgICAgICAgICBUcnlSYW5nZSByYW5nZTsK
ICAgICAgICAgICAgICAgICAgICAgcmFuZ2Uuc3RhcnQgPSBjb250ZXh0LnN0YXJ0OwogICAgICAg
ICAgICAgICAgICAgICByYW5nZS5lbmQgPSBiZWZvcmVGaW5hbGx5OwpAQCAtMzk0Nyw3ICszOTY1
LDcgQEAgc3RhdGljIHZvaWQgcHJlcGFyZUp1bXBUYWJsZUZvclN0cmluZ1N3aXRjaChVbmxpbmtl
ZFN0cmluZ0p1bXBUYWJsZSYganVtcFRhYmxlLAogICAgICAgICAKICAgICAgICAgQVNTRVJUKG5v
ZGVzW2ldLT5pc1N0cmluZygpKTsKICAgICAgICAgU3RyaW5nSW1wbCogY2xhdXNlID0gc3RhdGlj
X2Nhc3Q8U3RyaW5nTm9kZSo+KG5vZGVzW2ldKS0+dmFsdWUoKS5pbXBsKCk7Ci0gICAgICAgIGp1
bXBUYWJsZS5vZmZzZXRUYWJsZS5hZGQoY2xhdXNlLCBsYWJlbHNbaV0tPmJpbmQoc3dpdGNoQWRk
cmVzcywgc3dpdGNoQWRkcmVzcyArIDMpKTsKKyAgICAgICAganVtcFRhYmxlLm9mZnNldFRhYmxl
LmFkZChjbGF1c2UsIFVubGlua2VkU3RyaW5nSnVtcFRhYmxlOjpPZmZzZXRMb2NhdGlvbiB7IGxh
YmVsc1tpXS0+YmluZChzd2l0Y2hBZGRyZXNzLCBzd2l0Y2hBZGRyZXNzICsgMykgfSk7CiAgICAg
fQogfQogCkBAIC00NDU1LDE2ICs0NDczLDM2IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRZaWVsZFBvaW50KFJlZ2lzdGVySUQqIGFyZ3VtZW50KQogICAgIGVtaXRHZW5lcmF0b3JTdGF0
ZUNoYW5nZSh5aWVsZFBvaW50SW5kZXgpOwogICAgIC8vIEZpcnN0IHlpZWxkIHBvaW50IGlzIHVz
ZWQgZm9yIGluaXRpYWwgc2VxdWVuY2UuCiAgICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0lu
ZGV4ID0geWllbGRQb2ludEluZGV4IC0gMTsKKworICAgIC8vIFNwbGl0IHRoZSB0cnkgcmFuZ2Ug
aGVyZS4KKyAgICBSZWZQdHI8TGFiZWw+IHNhdmVQb2ludCA9IGVtaXRMYWJlbChuZXdMYWJlbCgp
LmdldCgpKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX3RyeUNvbnRleHRTdGFjay5zaXplKCk7
IGktLTspIHsKKyAgICAgICAgVHJ5Q29udGV4dCYgY29udGV4dCA9IG1fdHJ5Q29udGV4dFN0YWNr
W2ldOworICAgICAgICBUcnlSYW5nZSByYW5nZTsKKyAgICAgICAgcmFuZ2Uuc3RhcnQgPSBjb250
ZXh0LnN0YXJ0OworICAgICAgICByYW5nZS5lbmQgPSBzYXZlUG9pbnQ7CisgICAgICAgIHJhbmdl
LnRyeURhdGEgPSBjb250ZXh0LnRyeURhdGE7CisgICAgICAgIG1fdHJ5UmFuZ2VzLmFwcGVuZChy
YW5nZSk7CisKKyAgICAgICAgLy8gVHJ5IHJhbmdlIHdpbGwgYmUgcmVzdGFyZWQgYXQgdGhlIG1l
cmdlIHBvaW50LgorICAgICAgICBjb250ZXh0LnN0YXJ0ID0gbWVyZ2VQb2ludDsKKyAgICB9Cisg
ICAgVmVjdG9yPFRyeUNvbnRleHQ+IHNhdmVkVHJ5Q29udGV4dFN0YWNrOworICAgIG1fdHJ5Q29u
dGV4dFN0YWNrLnN3YXAoc2F2ZWRUcnlDb250ZXh0U3RhY2spOworCiAgICAgZW1pdFNhdmUobWVy
Z2VQb2ludC5nZXQoKSwgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4KTsKICAgICBlbWl0UmV0dXJuKGFy
Z3VtZW50KTsKICAgICBlbWl0UmVzdW1lKG1lcmdlUG9pbnQuZ2V0KCksIGxpdmVDYWxsZWVMb2Nh
bHNJbmRleCk7CisKKyAgICAvLyBSZXN0b3JlIHRoZSB0cnkgY29udGV4dHMsIHdoaWNoIHN0YXJ0
IG9mZnNldCBpcyB1cGRhdGVkIHRvIHRoZSBtZXJnZSBwb2ludC4KKyAgICBtX3RyeUNvbnRleHRT
dGFjay5zd2FwKHNhdmVkVHJ5Q29udGV4dFN0YWNrKTsKIH0KIAogdm9pZCBCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdFNhdmUoTGFiZWwqIG1lcmdlUG9pbnQsIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2Nh
bHNJbmRleCkKIHsKICAgICBzaXplX3QgYmVnaW4gPSBpbnN0cnVjdGlvbnMoKS5zaXplKCk7CiAg
ICAgZW1pdE9wY29kZShvcF9zYXZlKTsKLSAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobV9nZW5l
cmF0b3JSZWdpc3Rlci0+aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGdlbmVy
YXRvckZyYW1lUmVnaXN0ZXIoKS0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5k
KGxpdmVDYWxsZWVMb2NhbHNJbmRleCk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1lcmdl
UG9pbnQtPmJpbmQoYmVnaW4sIGluc3RydWN0aW9ucygpLnNpemUoKSkpOwogfQpAQCAtNDQ3Myw3
ICs0NTExLDcgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlc3VtZShMYWJlbCogbWVy
Z2VQb2ludCwgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0kKIHsKICAgICBlbWl0R2VuZXJhdG9y
U3RhdGVMYWJlbCgpOwogICAgIGVtaXRPcGNvZGUob3BfcmVzdW1lKTsKLSAgICBpbnN0cnVjdGlv
bnMoKS5hcHBlbmQobV9nZW5lcmF0b3JSZWdpc3Rlci0+aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rp
b25zKCkuYXBwZW5kKGdlbmVyYXRvckZyYW1lUmVnaXN0ZXIoKS0+aW5kZXgoKSk7CiAgICAgaW5z
dHJ1Y3Rpb25zKCkuYXBwZW5kKGxpdmVDYWxsZWVMb2NhbHNJbmRleCk7CiAgICAgZW1pdExhYmVs
KG1lcmdlUG9pbnQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmluZGV4IDVmYWYwNGYyZjNkYmExOGFkYjA3ODll
MzIzZTlkYWFlNjFhYjExNmIuLmVjMmEwZTZiMDY2Y2FhZGFjZjJiN2IwN2ZhYWY2NTViZmM0NTFi
MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTcwNSw2ICs3MDUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9yU3RhdGVSZWdpc3RlcigpIHsgcmV0dXJuICZtX3Bh
cmFtZXRlcnNbMl07IH0KICAgICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9yVmFsdWVSZWdpc3Rl
cigpIHsgcmV0dXJuICZtX3BhcmFtZXRlcnNbM107IH0KICAgICAgICAgUmVnaXN0ZXJJRCogZ2Vu
ZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKCkgeyByZXR1cm4gJm1fcGFyYW1ldGVyc1s0XTsgfQor
ICAgICAgICBSZWdpc3RlcklEKiBnZW5lcmF0b3JGcmFtZVJlZ2lzdGVyKCkgeyByZXR1cm4gJm1f
cGFyYW1ldGVyc1s1XTsgfQogCiAgICAgICAgIENvZGVUeXBlIGNvZGVUeXBlKCkgY29uc3QgeyBy
ZXR1cm4gbV9jb2RlVHlwZTsgfQogCkBAIC05MzIsNiArOTMzLDEwIEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICBWZWN0b3I8UmVmUHRyPEZvckluQ29udGV4dD4+IG1fZm9ySW5Db250ZXh0U3Rh
Y2s7CiAgICAgICAgIFZlY3RvcjxUcnlDb250ZXh0PiBtX3RyeUNvbnRleHRTdGFjazsKICAgICAg
ICAgVmVjdG9yPFJlZlB0cjxMYWJlbD4+IG1fZ2VuZXJhdG9yUmVzdW1lTGFiZWxzOworCisgICAg
ICAgIFN0cm9uZzxTeW1ib2xUYWJsZT4gbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlOworICAg
ICAgICBpbnQgbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlSW5kZXggeyAwIH07CisKICAgICAg
ICAgZW51bSBGdW5jdGlvblZhcmlhYmxlVHlwZSA6IHVpbnQ4X3QgeyBOb3JtYWxGdW5jdGlvblZh
cmlhYmxlLCBHbG9iYWxGdW5jdGlvblZhcmlhYmxlIH07CiAgICAgICAgIFZlY3RvcjxzdGQ6OnBh
aXI8RnVuY3Rpb25NZXRhZGF0YU5vZGUqLCBGdW5jdGlvblZhcmlhYmxlVHlwZT4+IG1fZnVuY3Rp
b25zVG9Jbml0aWFsaXplOwogICAgICAgICBib29sIG1fbmVlZFRvSW5pdGlhbGl6ZUFyZ3VtZW50
cyB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09w
ZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNw
cAppbmRleCA2OWExNmViNWRhNDM1NWJjNzkyNWM1ZGZkY2IwNjIwMjNlOTk2NTAyLi5jNDU3MjNi
MTkwMTMyMDI1ZGZjZTMyNmY2MDE1ZWNhNmNlNThkNzFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKQEAgLTQyLDggKzQyLDggQEAKICNpbmNsdWRlICJE
aXJlY3RBcmd1bWVudHMuaCIKICNpbmNsdWRlICJGVExGb3JPU1JFbnRyeUpJVENvZGUuaCIKICNp
bmNsdWRlICJGVExPU1JFbnRyeS5oIgotI2luY2x1ZGUgIkhvc3RDYWxsUmV0dXJuVmFsdWUuaCIK
ICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKKyNpbmNsdWRlICJIb3N0Q2FsbFJldHVyblZhbHVl
LmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKSVQuaCIKICNpbmNsdWRl
ICJKSVRFeGNlcHRpb25zLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2Vu
ZXJhdGUtYnl0ZWNvZGUtZmlsZXMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdGUtYnl0
ZWNvZGUtZmlsZXMKaW5kZXggNTY2NmEzZjkyNGMxMTliMjE2ZDNmZjBmZmU5YzY3MmI3YzcxYmI3
OS4uZmFjZmRmMTMzMTQ4NzA3YTMzMzUzNTc2MmJlNzgzMDRjNGI1MGIxZiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRlLWJ5dGVjb2RlLWZpbGVzCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0ZS1ieXRlY29kZS1maWxlcwpAQCAtMTg3LDYgKzE4Nyw3
IEBAIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgICAgICAgICAgICAgZGVmYXVsdExl
bmd0aCA9IHNlY3Rpb25bImRlZmF1bHRMZW5ndGgiXQogCiAgICAgICAgICAgICBieXRlY29kZU51
bSA9IDAKKyAgICAgICAgICAgIG1heExlbmd0aCA9IDAKICAgICAgICAgICAgIGZvciBieXRlY29k
ZSBpbiBzZWN0aW9uWyJieXRlY29kZXMiXToKICAgICAgICAgICAgICAgICBpZiBub3QgZmlyc3RN
YWNybzoKICAgICAgICAgICAgICAgICAgICAgYnl0ZWNvZGVIRmlsZS53cml0ZSgiIFxcXG4iKQpA
QCAtMTk0LDYgKzE5NSw3IEBAIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgICAgICAg
ICAgICAgbGVuZ3RoID0gZGVmYXVsdExlbmd0aAogICAgICAgICAgICAgICAgIGlmICJsZW5ndGgi
IGluIGJ5dGVjb2RlOgogICAgICAgICAgICAgICAgICAgICBsZW5ndGggPSBieXRlY29kZVsibGVu
Z3RoIl0KKyAgICAgICAgICAgICAgICAgICAgbWF4TGVuZ3RoID0gbWF4KFtsZW5ndGgsIG1heExl
bmd0aF0pCiAKICAgICAgICAgICAgICAgICBieXRlY29kZUhGaWxlLndyaXRlKCIgICAgbWFjcm8o
ezB9LCB7MX0pIi5mb3JtYXQoYnl0ZWNvZGVbIm5hbWUiXSwgbGVuZ3RoKSkKICAgICAgICAgICAg
ICAgICBmaXJzdE1hY3JvID0gRmFsc2UKQEAgLTIwMSw2ICsyMDMsNyBAQCBpZiBfX25hbWVfXyA9
PSAiX19tYWluX18iOgogCiAgICAgICAgICAgICBieXRlY29kZUhGaWxlLndyaXRlKCJcblxuIikK
ICAgICAgICAgICAgIGJ5dGVjb2RlSEZpbGUud3JpdGUoIiNkZWZpbmUgTlVNQkVSX09GX3swfV9J
RFMgezF9XG5cbiIuZm9ybWF0KHNlY3Rpb25bIm1hY3JvTmFtZUNvbXBvbmVudCJdLCBieXRlY29k
ZU51bSkpCisgICAgICAgICAgICBieXRlY29kZUhGaWxlLndyaXRlKCIjZGVmaW5lIE1BWF9PUENP
REVfTEVOR1RIX09GX3swfSB7MX1cblxuIi5mb3JtYXQoc2VjdGlvblsibWFjcm9OYW1lQ29tcG9u
ZW50Il0sIG1heExlbmd0aCkpCiAKICAgICAgICAgaWYgaW5pdEFTTUZpbGVOYW1lIGFuZCBzZWN0
aW9uWydlbWl0SW5BU01GaWxlJ106CiAgICAgICAgICAgICBwcmVmaXggPSAiIgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKaW5kZXggMmI0
YzdjOWIzZWIzNmQ2MzA2ZWE4NDRlODUzNzZmZmE3ZmQwZjFmNy4uZmUzNjhmMzkxY2MyN2MxYTA1
YjhiZDkwZmY5MWFjMTYyMWI2MjQ3MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCkBAIC02MDgsNyArNjA4LDcgQEAgSlNTdHJpbmcq
IEludGVycHJldGVyOjpzdGFja1RyYWNlQXNTdHJpbmcoVk0mIHZtLCBjb25zdCBWZWN0b3I8U3Rh
Y2tGcmFtZT4mIHN0YWMKICAgICByZXR1cm4ganNTdHJpbmcoJnZtLCBidWlsZGVyLnRvU3RyaW5n
KCkpOwogfQogCi1BTFdBWVNfSU5MSU5FIHN0YXRpYyBIYW5kbGVySW5mbyogZmluZEV4Y2VwdGlv
bkhhbmRsZXIoU3RhY2tWaXNpdG9yJiB2aXNpdG9yLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29k
ZUJsb2NrOjpSZXF1aXJlZEhhbmRsZXIgcmVxdWlyZWRIYW5kbGVyKQorQUxXQVlTX0lOTElORSBz
dGF0aWMgSGFuZGxlckluZm8qIGZpbmRFeGNlcHRpb25IYW5kbGVyKFN0YWNrVmlzaXRvciYgdmlz
aXRvciwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFJlcXVpcmVkSGFuZGxlciByZXF1aXJlZEhhbmRs
ZXIpCiB7CiAgICAgQVNTRVJUKGNvZGVCbG9jayk7CiAjaWYgRU5BQkxFKERGR19KSVQpCkBAIC02
NDIsNyArNjQyLDcgQEAgY2xhc3MgR2V0Q2F0Y2hIYW5kbGVyRnVuY3RvciB7CiAgICAgICAgIGlm
ICghY29kZUJsb2NrKQogICAgICAgICAgICAgcmV0dXJuIFN0YWNrVmlzaXRvcjo6Q29udGludWU7
CiAKLSAgICAgICAgbV9oYW5kbGVyID0gZmluZEV4Y2VwdGlvbkhhbmRsZXIodmlzaXRvciwgY29k
ZUJsb2NrLCBDb2RlQmxvY2s6OlJlcXVpcmVkSGFuZGxlcjo6Q2F0Y2hIYW5kbGVyKTsKKyAgICAg
ICAgbV9oYW5kbGVyID0gZmluZEV4Y2VwdGlvbkhhbmRsZXIodmlzaXRvciwgY29kZUJsb2NrLCBS
ZXF1aXJlZEhhbmRsZXI6OkNhdGNoSGFuZGxlcik7CiAgICAgICAgIGlmIChtX2hhbmRsZXIpCiAg
ICAgICAgICAgICByZXR1cm4gU3RhY2tWaXNpdG9yOjpEb25lOwogCkBAIC02ODQsNyArNjg0LDcg
QEAgY2xhc3MgVW53aW5kRnVuY3RvciB7CiAgICAgICAgIG1faGFuZGxlciA9IG51bGxwdHI7CiAg
ICAgICAgIGlmICghbV9pc1Rlcm1pbmF0aW9uKSB7CiAgICAgICAgICAgICBpZiAobV9jb2RlQmxv
Y2sgJiYgIWlzV2ViQXNzZW1ibHlFeGVjdXRhYmxlKG1fY29kZUJsb2NrLT5vd25lckV4ZWN1dGFi
bGUoKSkpCi0gICAgICAgICAgICAgICAgbV9oYW5kbGVyID0gZmluZEV4Y2VwdGlvbkhhbmRsZXIo
dmlzaXRvciwgbV9jb2RlQmxvY2ssIENvZGVCbG9jazo6UmVxdWlyZWRIYW5kbGVyOjpBbnlIYW5k
bGVyKTsKKyAgICAgICAgICAgICAgICBtX2hhbmRsZXIgPSBmaW5kRXhjZXB0aW9uSGFuZGxlcih2
aXNpdG9yLCBtX2NvZGVCbG9jaywgUmVxdWlyZWRIYW5kbGVyOjpBbnlIYW5kbGVyKTsKICAgICAg
ICAgfQogCiAgICAgICAgIGlmIChtX2hhbmRsZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCmluZGV4IGQyMDk0ZGVlN2QyODVhYzQ5NWIxNTQx
NzJhMjNiOTRmZmU4NTdmMWUuLjA3MzJiM2ViYmQ5YWRmZDIyMzM2MmVjOWE2YmFhYWZkODYxZjUy
NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnBy
ZXRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRl
ci5oCkBAIC02Niw2ICs2Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHN0cnVjdCBIYW5kbGVy
SW5mbzsKICAgICBzdHJ1Y3QgSW5zdHJ1Y3Rpb247CiAgICAgc3RydWN0IFByb3RvQ2FsbEZyYW1l
OworICAgIHN0cnVjdCBVbmxpbmtlZEluc3RydWN0aW9uOwogCiAgICAgZW51bSBVbndpbmRTdGFy
dCB7IFVud2luZEZyb21DdXJyZW50RnJhbWUsIFVud2luZEZyb21DYWxsZXJGcmFtZSB9OwogCkBA
IC0yMDgsNyArMjA5LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIG9w
Y29kZTsKICNlbmRpZgogICAgICAgICB9Ci0gICAgICAgIAorCisgICAgICAgIE9wY29kZUlEIGdl
dE9wY29kZUlEKGNvbnN0IEluc3RydWN0aW9uJik7CisgICAgICAgIE9wY29kZUlEIGdldE9wY29k
ZUlEKGNvbnN0IFVubGlua2VkSW5zdHJ1Y3Rpb24mKTsKKwogICAgICAgICBib29sIGlzT3Bjb2Rl
KE9wY29kZSk7CiAKICAgICAgICAgSlNWYWx1ZSBleGVjdXRlKFByb2dyYW1FeGVjdXRhYmxlKiwg
Q2FsbEZyYW1lKiwgSlNPYmplY3QqIHRoaXNPYmopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVySW5saW5lcy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVySW5saW5lcy5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg2
ZDA3MTQ4YTUyZTY1ZTM3NWY5N2U2ZWJiOTFhZGJlMWRkNDU2MGQKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXJJbmxpbmVzLmgK
QEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBZdXN1a2UgU3V6dWtp
IDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSW5zdHJ1Y3Rpb24uaCIKKyNp
bmNsdWRlICJJbnRlcnByZXRlci5oIgorI2luY2x1ZGUgIlVubGlua2VkQ29kZUJsb2NrLmgiCisK
K25hbWVzcGFjZSBKU0MgeworCitpbmxpbmUgT3Bjb2RlSUQgSW50ZXJwcmV0ZXI6OmdldE9wY29k
ZUlEKGNvbnN0IEluc3RydWN0aW9uJiBpbnN0cnVjdGlvbikKK3sKKyAgICByZXR1cm4gZ2V0T3Bj
b2RlSUQoaW5zdHJ1Y3Rpb24udS5vcGNvZGUpOworfQorCitpbmxpbmUgT3Bjb2RlSUQgSW50ZXJw
cmV0ZXI6OmdldE9wY29kZUlEKGNvbnN0IFVubGlua2VkSW5zdHJ1Y3Rpb24mIGluc3RydWN0aW9u
KQoreworICAgIHJldHVybiBpbnN0cnVjdGlvbi51Lm9wY29kZTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKaW5kZXggOGZkM2Y1OGVkNDE2YTc3NGJi
Mjc2NWU0ZDRkNTNkNjhiZTkxODJlNS4uNjMxOGM2MWQzN2E4ZGExMjNlYzZmMzhhMjhlMTk1NWM4
NTgzMTAzMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcApAQCAtMjM1LDggKzIzNSw2IEBA
IHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgREVGSU5FX09QKG9w
X2dldF9yZXN0X2xlbmd0aCkKICAgICAgICAgREVGSU5FX09QKG9wX2NoZWNrX3RkeikKICAgICAg
ICAgREVGSU5FX09QKG9wX2Fzc2VydCkKLSAgICAgICAgREVGSU5FX09QKG9wX3NhdmUpCi0gICAg
ICAgIERFRklORV9PUChvcF9yZXN1bWUpCiAgICAgICAgIERFRklORV9PUChvcF9kZWJ1ZykKICAg
ICAgICAgREVGSU5FX09QKG9wX2RlbF9ieV9pZCkKICAgICAgICAgREVGSU5FX09QKG9wX2RlbF9i
eV92YWwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAppbmRleCAwOTNkN2RhYmQzMDNmNTdjNGFkYmJl
NTBhZDliMmU0MGY2ZmFkNjA4Li5iM2JkYTRhYTU3MDEwMzY4MTJjYzY5NmNiYjE1NWRjNGEzYzQ5
MmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKQEAgLTUwMSw4ICs1MDEsNiBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0X29wX2dldF9yZXN0X2xlbmd0aChJbnN0cnVjdGlv
biopOwogICAgICAgICB2b2lkIGVtaXRfb3BfY2hlY2tfdGR6KEluc3RydWN0aW9uKik7CiAgICAg
ICAgIHZvaWQgZW1pdF9vcF9hc3NlcnQoSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0
X29wX3NhdmUoSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX3Jlc3VtZShJbnN0
cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZGVidWcoSW5zdHJ1Y3Rpb24qKTsKICAg
ICAgICAgdm9pZCBlbWl0X29wX2RlbF9ieV9pZChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lk
IGVtaXRfb3BfZGVsX2J5X3ZhbChJbnN0cnVjdGlvbiopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3Bjb2Rlcy5jcHAKaW5kZXggZDk5ZDQxNWEzM2I3NTJkY2MzZmFiMTViOTRiOTY0YTEx
MTFjZTgzMS4uMDEyMzIwYTBhNmYwMzA3MzczNTMwMzE1YjRiMTg5ZWE2YWFmM2ZkNyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCkBAIC0xNDg5LDE4ICsxNDg5LDYg
QEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X3Jlc3RfbGVuZ3RoKEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCiAjZW5kaWYKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3Bfc2F2ZShJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQotewotICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0
aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfc2F2ZSk7Ci0gICAgc2xv
d1BhdGhDYWxsLmNhbGwoKTsKLX0KLQotdm9pZCBKSVQ6OmVtaXRfb3BfcmVzdW1lKEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCi17Ci0gICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRo
Q2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9yZXN1bWUpOwotICAgIHNs
b3dQYXRoQ2FsbC5jYWxsKCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8g
RU5BQkxFKEpJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyLmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyLmFzbQppbmRleCAzZTBkYmQ4OTg2YjlkYjFhYjBhMjM1YTM5MDg0YzEwYWVm
NDU2NTE2Li4wNGJjYjdjMDBlNDhjMGQyMzkzN2RkMzE0MDkzYTEyNzk3ZTQ4NjM1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20K
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNt
CkBAIC0xNjU3LDE1ICsxNjU3LDExIEBAIF9sbGludF9vcF9hc3NlcnQ6CiAKIAogX2xsaW50X29w
X3NhdmU6Ci0gICAgdHJhY2VFeGVjdXRpb24oKQotICAgIGNhbGxPcGNvZGVTbG93UGF0aChfc2xv
d19wYXRoX3NhdmUpCi0gICAgZGlzcGF0Y2goNCkKKyAgICBub3RTdXBwb3J0ZWQoKQogCiAKIF9s
bGludF9vcF9yZXN1bWU6Ci0gICAgdHJhY2VFeGVjdXRpb24oKQotICAgIGNhbGxPcGNvZGVTbG93
UGF0aChfc2xvd19wYXRoX3Jlc3VtZSkKLSAgICBkaXNwYXRjaCgzKQorICAgIG5vdFN1cHBvcnRl
ZCgpCiAKIAogX2xsaW50X29wX2NyZWF0ZV9sZXhpY2FsX2Vudmlyb25tZW50OgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCmluZGV4IGZlNTQ5NTJiMzg1NjMyYTEzMDBkYmE0
YWRmZmEwMGFhNWEzN2QyMDEuLmZlOTYxNmIwMzY1YzMzYTg4NWU1MDhlODRkYmQwY2ExMGI4YjBm
NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKQEAgLTI1Niw3ICsy
NTYsNyBAQCBTdHJpbmcgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlSW5uZXIoY29uc3QgSWRlbnRp
ZmllciYgY2FsbGVlTmFtZSwgU291cmNlUGFyc2VNbwogICAgIGlmIChtX2xleGVyLT5pc1JlcGFy
c2luZ0Z1bmN0aW9uKCkpIHsKICAgICAgICAgUGFyc2VyRnVuY3Rpb25JbmZvPEFTVEJ1aWxkZXI+
IGZ1bmN0aW9uSW5mbzsKICAgICAgICAgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6
OkdlbmVyYXRvckJvZHlNb2RlKQotICAgICAgICAgICAgbV9wYXJhbWV0ZXJzID0gY3JlYXRlR2Vu
ZXJhdG9yUGFyYW1ldGVycyhjb250ZXh0KTsKKyAgICAgICAgICAgIG1fcGFyYW1ldGVycyA9IGNy
ZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMoY29udGV4dCwgZnVuY3Rpb25JbmZvLnBhcmFtZXRlckNv
dW50KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbV9wYXJhbWV0ZXJzID0gcGFyc2VGdW5j
dGlvblBhcmFtZXRlcnMoY29udGV4dCwgcGFyc2VNb2RlLCBmdW5jdGlvbkluZm8pOwogCkBAIC01
MDcsMTAgKzUwNyw5IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVNvdXJjZUVs
ZW1lbnRzIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUdlbmVyYXRvCiAKICAgICBQYXJzZXJGdW5j
dGlvbkluZm88VHJlZUJ1aWxkZXI+IGluZm87CiAgICAgaW5mby5uYW1lID0gJm1fdm0tPnByb3Bl
cnR5TmFtZXMtPm51bGxJZGVudGlmaWVyOwotICAgIGNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMo
Y29udGV4dCk7CisgICAgY3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhjb250ZXh0LCBpbmZvLnBh
cmFtZXRlckNvdW50KTsKICAgICBpbmZvLnN0YXJ0T2Zmc2V0ID0gcGFyYW1ldGVyc1N0YXJ0Owog
ICAgIGluZm8uc3RhcnRMaW5lID0gdG9rZW5MaW5lKCk7Ci0gICAgaW5mby5wYXJhbWV0ZXJDb3Vu
dCA9IDQ7IC8vIGdlbmVyYXRvciwgc3RhdGUsIHZhbHVlLCByZXN1bWUgbW9kZQogCiAgICAgewog
ICAgICAgICBBdXRvUG9wU2NvcGVSZWYgZ2VuZXJhdG9yQm9keVNjb3BlKHRoaXMsIHB1c2hTY29w
ZSgpKTsKQEAgLTE5MDEsMzIgKzE5MDAsMzAgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlw
ZT4gdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyLCBjbGFzcyBGdW5jdGlvbkluZm9UeXAKIH0K
IAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KLXRlbXBsYXRlIDxjbGFzcyBUcmVlQnVp
bGRlcj4gdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkZvcm1hbFBhcmFtZXRlckxpc3QgUGFyc2VyPExl
eGVyVHlwZT46OmNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMoVHJlZUJ1aWxkZXImIGNvbnRleHQp
Cit0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpGb3Jt
YWxQYXJhbWV0ZXJMaXN0IFBhcnNlcjxMZXhlclR5cGU+OjpjcmVhdGVHZW5lcmF0b3JQYXJhbWV0
ZXJzKFRyZWVCdWlsZGVyJiBjb250ZXh0LCB1bnNpZ25lZCYgcGFyYW1ldGVyQ291bnQpCiB7CiAg
ICAgYXV0byBwYXJhbWV0ZXJzID0gY29udGV4dC5jcmVhdGVGb3JtYWxQYXJhbWV0ZXJMaXN0KCk7
CiAKICAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKICAgICBK
U1RleHRQb3NpdGlvbiBwb3NpdGlvbiA9IHRva2VuU3RhcnRQb3NpdGlvbigpOwogCi0gICAgLy8g
QGdlbmVyYXRvcgotICAgIGRlY2xhcmVQYXJhbWV0ZXIoJm1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1
aWx0aW5OYW1lcygpLmdlbmVyYXRvclByaXZhdGVOYW1lKCkpOwotICAgIGF1dG8gZ2VuZXJhdG9y
ID0gY29udGV4dC5jcmVhdGVCaW5kaW5nTG9jYXRpb24obG9jYXRpb24sIG1fdm0tPnByb3BlcnR5
TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclByaXZhdGVOYW1lKCksIHBvc2l0aW9uLCBw
b3NpdGlvbiwgQXNzaWdubWVudENvbnRleHQ6OkRlY2xhcmF0aW9uU3RhdGVtZW50KTsKLSAgICBj
b250ZXh0LmFwcGVuZFBhcmFtZXRlcihwYXJhbWV0ZXJzLCBnZW5lcmF0b3IsIDApOworICAgIGF1
dG8gYWRkUGFyYW1ldGVyID0gWyZdKGNvbnN0IElkZW50aWZpZXImIG5hbWUpIHsKKyAgICAgICAg
ZGVjbGFyZVBhcmFtZXRlcigmbmFtZSk7CisgICAgICAgIGF1dG8gYmluZGluZyA9IGNvbnRleHQu
Y3JlYXRlQmluZGluZ0xvY2F0aW9uKGxvY2F0aW9uLCBuYW1lLCBwb3NpdGlvbiwgcG9zaXRpb24s
IEFzc2lnbm1lbnRDb250ZXh0OjpEZWNsYXJhdGlvblN0YXRlbWVudCk7CisgICAgICAgIGNvbnRl
eHQuYXBwZW5kUGFyYW1ldGVyKHBhcmFtZXRlcnMsIGJpbmRpbmcsIDApOworICAgICAgICArK3Bh
cmFtZXRlckNvdW50OworICAgIH07CiAKKyAgICAvLyBAZ2VuZXJhdG9yCisgICAgYWRkUGFyYW1l
dGVyKG1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclByaXZhdGVO
YW1lKCkpOwogICAgIC8vIEBnZW5lcmF0b3JTdGF0ZQotICAgIGRlY2xhcmVQYXJhbWV0ZXIoJm1f
dm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclN0YXRlUHJpdmF0ZU5h
bWUoKSk7Ci0gICAgYXV0byBnZW5lcmF0b3JTdGF0ZSA9IGNvbnRleHQuY3JlYXRlQmluZGluZ0xv
Y2F0aW9uKGxvY2F0aW9uLCBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZW5l
cmF0b3JTdGF0ZVByaXZhdGVOYW1lKCksIHBvc2l0aW9uLCBwb3NpdGlvbiwgQXNzaWdubWVudENv
bnRleHQ6OkRlY2xhcmF0aW9uU3RhdGVtZW50KTsKLSAgICBjb250ZXh0LmFwcGVuZFBhcmFtZXRl
cihwYXJhbWV0ZXJzLCBnZW5lcmF0b3JTdGF0ZSwgMCk7Ci0KKyAgICBhZGRQYXJhbWV0ZXIobV92
bS0+cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yU3RhdGVQcml2YXRlTmFt
ZSgpKTsKICAgICAvLyBAZ2VuZXJhdG9yVmFsdWUKLSAgICBkZWNsYXJlUGFyYW1ldGVyKCZtX3Zt
LT5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JWYWx1ZVByaXZhdGVOYW1l
KCkpOwotICAgIGF1dG8gZ2VuZXJhdG9yVmFsdWUgPSBjb250ZXh0LmNyZWF0ZUJpbmRpbmdMb2Nh
dGlvbihsb2NhdGlvbiwgbV92bS0+cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZ2VuZXJh
dG9yVmFsdWVQcml2YXRlTmFtZSgpLCBwb3NpdGlvbiwgcG9zaXRpb24sIEFzc2lnbm1lbnRDb250
ZXh0OjpEZWNsYXJhdGlvblN0YXRlbWVudCk7Ci0gICAgY29udGV4dC5hcHBlbmRQYXJhbWV0ZXIo
cGFyYW1ldGVycywgZ2VuZXJhdG9yVmFsdWUsIDApOwotCisgICAgYWRkUGFyYW1ldGVyKG1fdm0t
PnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclZhbHVlUHJpdmF0ZU5hbWUo
KSk7CiAgICAgLy8gQGdlbmVyYXRvclJlc3VtZU1vZGUKLSAgICBkZWNsYXJlUGFyYW1ldGVyKCZt
X3ZtLT5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JSZXN1bWVNb2RlUHJp
dmF0ZU5hbWUoKSk7Ci0gICAgYXV0byBnZW5lcmF0b3JSZXN1bWVNb2RlID0gY29udGV4dC5jcmVh
dGVCaW5kaW5nTG9jYXRpb24obG9jYXRpb24sIG1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5O
YW1lcygpLmdlbmVyYXRvclJlc3VtZU1vZGVQcml2YXRlTmFtZSgpLCBwb3NpdGlvbiwgcG9zaXRp
b24sIEFzc2lnbm1lbnRDb250ZXh0OjpEZWNsYXJhdGlvblN0YXRlbWVudCk7Ci0gICAgY29udGV4
dC5hcHBlbmRQYXJhbWV0ZXIocGFyYW1ldGVycywgZ2VuZXJhdG9yUmVzdW1lTW9kZSwgMCk7Cisg
ICAgYWRkUGFyYW1ldGVyKG1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdlbmVy
YXRvclJlc3VtZU1vZGVQcml2YXRlTmFtZSgpKTsKKyAgICAvLyBAZ2VuZXJhdG9yRnJhbWUKKyAg
ICBhZGRQYXJhbWV0ZXIobV92bS0+cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZ2VuZXJh
dG9yRnJhbWVQcml2YXRlTmFtZSgpKTsKIAogICAgIHJldHVybiBwYXJhbWV0ZXJzOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKaW5kZXggMjVjZWM5NWE3NjFjY2Q4YzI2MzM4
MzczMGViMDRlMTU2OTcyMGJhMi4uZGVkNjI0ZjYxN2ZiNmQyNGQwMGJmMWFjNDZjNDVjMjJkOTli
NzIxZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCkBAIC0xNDUxLDcgKzE0
NTEsNyBAQCBjbGFzcyBQYXJzZXIgewogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc0Fycm93RnVu
Y3Rpb25QYXJhbWV0ZXJzKCk7CiAgICAgCiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVy
LCBjbGFzcyBGdW5jdGlvbkluZm9UeXBlPiBORVZFUl9JTkxJTkUgdHlwZW5hbWUgVHJlZUJ1aWxk
ZXI6OkZvcm1hbFBhcmFtZXRlckxpc3QgcGFyc2VGdW5jdGlvblBhcmFtZXRlcnMoVHJlZUJ1aWxk
ZXImLCBTb3VyY2VQYXJzZU1vZGUsIEZ1bmN0aW9uSW5mb1R5cGUmKTsKLSAgICB0ZW1wbGF0ZSA8
Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElORSB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6Rm9y
bWFsUGFyYW1ldGVyTGlzdCBjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKFRyZWVCdWlsZGVyJik7
CisgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBORVZFUl9JTkxJTkUgdHlwZW5hbWUg
VHJlZUJ1aWxkZXI6OkZvcm1hbFBhcmFtZXRlckxpc3QgY3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVy
cyhUcmVlQnVpbGRlciYsIHVuc2lnbmVkJiBwYXJhbWV0ZXJDb3VudCk7CiAKICAgICB0ZW1wbGF0
ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElORSBUcmVlQ2xhc3NFeHByZXNzaW9uIHBh
cnNlQ2xhc3MoVHJlZUJ1aWxkZXImLCBGdW5jdGlvblJlcXVpcmVtZW50cywgUGFyc2VyQ2xhc3NJ
bmZvPFRyZWVCdWlsZGVyPiYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29tbW9uU2xvd1BhdGhzLmNwcAppbmRleCA2NWZkYTY4NTRjY2NlOGRjOTQxOTMwMDRhOWYw
Mjk1NDhmOThiYzVmLi4wNzM1YjA5MjZlYTg5OGU2MjYzMjFmOTI0MzhiZDhiMWUxZmY1NmZmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5j
cHAKQEAgLTM2LDcgKzM2LDYgQEAKICNpbmNsdWRlICJFcnJvci5oIgogI2luY2x1ZGUgIkVycm9y
SGFuZGxpbmdTY29wZS5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkZ1enouaCIKLSNpbmNsdWRlICJH
ZW5lcmF0b3JGcmFtZS5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIkhv
c3RDYWxsUmV0dXJuVmFsdWUuaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgpAQCAtNzIyLDM4
ICs3MjEsNiBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfYXNzZXJ0KQogICAgIEVORCgpOwog
fQogCi1TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfc2F2ZSkKLXsKLSAgICAvLyBPbmx5IHNhdmUg
dmFyaWFibGVzIGFuZCB0ZW1wb3JhcnkgcmVnaXN0ZXJzLiBUaGUgc2NvcGUgcmVnaXN0ZXJzIGFy
ZSBpbmNsdWRlZCBpbiB0aGVtLgotICAgIC8vIEJ1dCBwYXJhbWV0ZXJzIGFyZSBub3QgaW5jbHVk
ZWQuIEJlY2F1c2UgdGhlIGdlbmVyYXRvciBpbXBsZW1lbnRhdGlvbiByZXBsYWNlcyB0aGUgdmFs
dWVzIG9mIHBhcmFtZXRlcnMgb24gZWFjaCBnZW5lcmF0b3IubmV4dCgpIGNhbGwuCi0gICAgQkVH
SU4oKTsKLSAgICBKU1ZhbHVlIGdlbmVyYXRvciA9IE9QKDEpLmpzVmFsdWUoKTsKLSAgICBHZW5l
cmF0b3JGcmFtZSogZnJhbWUgPSBudWxscHRyOwotICAgIEpTVmFsdWUgdmFsdWUgPSBnZW5lcmF0
b3IuZ2V0KGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5nZW5lcmF0
b3JGcmFtZVByaXZhdGVOYW1lKCkpOwotICAgIGlmICghdmFsdWUuaXNOdWxsKCkpCi0gICAgICAg
IGZyYW1lID0ganNDYXN0PEdlbmVyYXRvckZyYW1lKj4odmFsdWUpOwotICAgIGVsc2UgewotICAg
ICAgICAvLyBGSVhNRTogT25jZSBKU0dlbmVyYXRvciBzcGVjaWFsaXplZCBvYmplY3QgaXMgaW50
cm9kdWNlZCwgdGhpcyBHZW5lcmF0b3JGcmFtZSBzaG91bGQgYmUgZW1iZWRlZCBpbnRvIGl0IHRv
IGF2b2lkIGFsbG9jYXRpb25zLgotICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTUxNTQ1Ci0gICAgICAgIGZyYW1lID0gR2VuZXJhdG9yRnJhbWU6OmNy
ZWF0ZShleGVjLT52bSgpLCAgZXhlYy0+Y29kZUJsb2NrKCktPm51bUNhbGxlZUxvY2FscygpKTsK
LSAgICAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoZ2VuZXJhdG9yLCB0cnVlLCBQdXRQcm9wZXJ0
eVNsb3Q6OlB1dEJ5SWQpOwotICAgICAgICBhc09iamVjdChnZW5lcmF0b3IpLT5tZXRob2RUYWJs
ZShleGVjLT52bSgpKS0+cHV0KGFzT2JqZWN0KGdlbmVyYXRvciksIGV4ZWMsIGV4ZWMtPnByb3Bl
cnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JGcmFtZVByaXZhdGVOYW1lKCksIGZy
YW1lLCBzbG90KTsKLSAgICB9Ci0gICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0g
cGNbMl0udS51bnNpZ25lZFZhbHVlOwotICAgIGZyYW1lLT5zYXZlKGV4ZWMsIGV4ZWMtPmNvZGVC
bG9jaygpLT5saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZChsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpKTsK
LSAgICBFTkQoKTsKLX0KLQotU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3Jlc3VtZSkKLXsKLSAg
ICBCRUdJTigpOwotICAgIEpTVmFsdWUgZ2VuZXJhdG9yID0gT1AoMSkuanNWYWx1ZSgpOwotICAg
IEdlbmVyYXRvckZyYW1lKiBmcmFtZSA9IGpzQ2FzdDxHZW5lcmF0b3JGcmFtZSo+KGdlbmVyYXRv
ci5nZXQoZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRv
ckZyYW1lUHJpdmF0ZU5hbWUoKSkpOwotICAgIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRl
eCA9IHBjWzJdLnUudW5zaWduZWRWYWx1ZTsKLSAgICBmcmFtZS0+cmVzdW1lKGV4ZWMsIGV4ZWMt
PmNvZGVCbG9jaygpLT5saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZChsaXZlQ2FsbGVlTG9jYWxzSW5k
ZXgpKTsKLSAgICBFTkQoKTsKLX0KLQogU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2NyZWF0ZV9s
ZXhpY2FsX2Vudmlyb25tZW50KQogewogICAgIEJFR0lOKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCmluZGV4IDhjNzA3ODQyODAyZDZhMDNk
MTI4Y2Q4ZDI5MmFmZjczNWNkYTAzMmYuLjZlYjIxYmRmZGUwMzQxMmZlZTYxMDAyZDVlNWFhOGE4
MzQ4MDUzYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1v
blNsb3dQYXRocy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNs
b3dQYXRocy5oCkBAIC0yNDYsOCArMjQ2LDYgQEAgU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3df
cGF0aF9uZXh0X2dlbmVyaWNfZW51bWVyYXRvcl9wbmFtZSk7CiBTTE9XX1BBVEhfSElEREVOX0RF
Q0woc2xvd19wYXRoX3RvX2luZGV4X3N0cmluZyk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xv
d19wYXRoX3Byb2ZpbGVfdHlwZV9jbGVhcl9sb2cpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNs
b3dfcGF0aF9hc3NlcnQpOwotU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9zYXZlKTsK
LVNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcmVzdW1lKTsKIFNMT1dfUEFUSF9ISURE
RU5fREVDTChzbG93X3BhdGhfY3JlYXRlX2xleGljYWxfZW52aXJvbm1lbnQpOwogU0xPV19QQVRI
X0hJRERFTl9ERUNMKHNsb3dfcGF0aF9wdXNoX3dpdGhfc2NvcGUpOwogU0xPV19QQVRIX0hJRERF
Tl9ERUNMKHNsb3dfcGF0aF9yZXNvbHZlX3Njb3BlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZyYW1lLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0dlbmVyYXRvckZyYW1lLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggZWY2ZWE3YTEwMDI1OGMzZWNlMDRkYWFiNDNiZGFhODUxZWM4ZjcxNS4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9HZW5lcmF0b3JGcmFtZS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NyArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVh
QGdtYWlsLmNvbT4uCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
Ci0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJH
ZW5lcmF0b3JGcmFtZS5oIgotCi0jaW5jbHVkZSAiQ29kZUJsb2NrLmgiCi0jaW5jbHVkZSAiSGVh
cEl0ZXJhdGlvblNjb3BlLmgiCi0jaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKLSNpbmNs
dWRlICJKU0NlbGxJbmxpbmVzLmgiCi0jaW5jbHVkZSAiU2xvdFZpc2l0b3JJbmxpbmVzLmgiCi0j
aW5jbHVkZSAiU3RydWN0dXJlSW5saW5lcy5oIgotCi1uYW1lc3BhY2UgSlNDIHsKLQotY29uc3Qg
Q2xhc3NJbmZvIEdlbmVyYXRvckZyYW1lOjpzX2luZm8gPSB7ICJHZW5lcmF0b3JGcmFtZSIsIG51
bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoR2VuZXJhdG9yRnJhbWUpIH07Ci0K
LUdlbmVyYXRvckZyYW1lOjpHZW5lcmF0b3JGcmFtZShWTSYgdm0sIHNpemVfdCBudW1iZXJPZkNh
bGxlZUxvY2FscykKLSAgICA6IEJhc2Uodm0sIHZtLmdlbmVyYXRvckZyYW1lU3RydWN0dXJlLmdl
dCgpKQotICAgICwgbV9udW1iZXJPZkNhbGxlZUxvY2FscyhudW1iZXJPZkNhbGxlZUxvY2FscykK
LXsKLX0KLQotdm9pZCBHZW5lcmF0b3JGcmFtZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQotewot
ICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IG1fbnVtYmVyT2ZDYWxsZWVMb2NhbHM7ICsraSkKLSAgICAgICAgbG9jYWxBdChpKS5jbGVhcigp
OwotfQotCi1TdHJ1Y3R1cmUqIEdlbmVyYXRvckZyYW1lOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZt
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKLXsKLSAg
ICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBU
eXBlSW5mbyhDZWxsVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwotfQotCi1HZW5lcmF0
b3JGcmFtZSogR2VuZXJhdG9yRnJhbWU6OmNyZWF0ZShWTSYgdm0sIHNpemVfdCBudW1iZXJPZkxv
Y2FscykKLXsKLSAgICBHZW5lcmF0b3JGcmFtZSogcmVzdWx0ID0KLSAgICAgICAgbmV3ICgKLSAg
ICAgICAgICAgIE5vdE51bGwsCi0gICAgICAgICAgICBhbGxvY2F0ZUNlbGw8R2VuZXJhdG9yRnJh
bWU+KHZtLmhlYXAsIGFsbG9jYXRpb25TaXplRm9yTG9jYWxzKG51bWJlck9mTG9jYWxzKSkpCi0g
ICAgICAgIEdlbmVyYXRvckZyYW1lKHZtLCBudW1iZXJPZkxvY2Fscyk7Ci0gICAgcmVzdWx0LT5m
aW5pc2hDcmVhdGlvbih2bSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotdm9pZCBHZW5lcmF0
b3JGcmFtZTo6c2F2ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEZhc3RCaXRWZWN0b3ImIGxpdmVD
YWxsZWVMb2NhbHMpCi17Ci0gICAgLy8gT25seSBzYXZlIGNhbGxlZSBsb2NhbHMuCi0gICAgLy8g
RXZlcnkgdGltZSBhIGdlbmVyYXRvciBpcyBjYWxsZWQgKG9yIHJlc3VtZWQpLCBwYXJhbWV0ZXJz
IHNob3VsZCBiZSByZXBsYWNlZC4KLSAgICBBU1NFUlQobGl2ZUNhbGxlZUxvY2Fscy5udW1CaXRz
KCkgPD0gbV9udW1iZXJPZkNhbGxlZUxvY2Fscyk7Ci0gICAgbGl2ZUNhbGxlZUxvY2Fscy5mb3JF
YWNoU2V0Qml0KFsmXShzaXplX3QgaW5kZXgpIHsKLSAgICAgICAgbG9jYWxBdChpbmRleCkuc2V0
KGV4ZWMtPnZtKCksIHRoaXMsIGV4ZWMtPnVuY2hlY2tlZFIodmlydHVhbFJlZ2lzdGVyRm9yTG9j
YWwoaW5kZXgpKS5qc1ZhbHVlKCkpOwotICAgIH0pOwotfQotCi12b2lkIEdlbmVyYXRvckZyYW1l
OjpyZXN1bWUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlQ2FsbGVl
TG9jYWxzKQotewotICAgIC8vIE9ubHkgcmVzdW1lIGNhbGxlZSBsb2NhbHMuCi0gICAgLy8gRXZl
cnkgdGltZSBhIGdlbmVyYXRvciBpcyBjYWxsZWQgKG9yIHJlc3VtZWQpLCBwYXJhbWV0ZXJzIHNo
b3VsZCBiZSByZXBsYWNlZC4KLSAgICBsaXZlQ2FsbGVlTG9jYWxzLmZvckVhY2hTZXRCaXQoWyZd
KHNpemVfdCBpbmRleCkgewotICAgICAgICBleGVjLT51bmNoZWNrZWRSKHZpcnR1YWxSZWdpc3Rl
ckZvckxvY2FsKGluZGV4KSkgPSBsb2NhbEF0KGluZGV4KS5nZXQoKTsKLSAgICAgICAgbG9jYWxB
dChpbmRleCkuY2xlYXIoKTsKLSAgICB9KTsKLX0KLQotdm9pZCBHZW5lcmF0b3JGcmFtZTo6dmlz
aXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQotewotICAgIEdl
bmVyYXRvckZyYW1lKiB0aGlzT2JqZWN0ID0ganNDYXN0PEdlbmVyYXRvckZyYW1lKj4oY2VsbCk7
Ci0gICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKLSAgICAvLyBT
aW5jZSBvbmx5IHRydWUgY2VsbCBwb2ludGVycyBhcmUgc3RvcmVkIGFzIGEgY2VsbCwgd2UgY2Fu
IHNhZmVseSBtYXJrIHRoZW0uCi0gICAgdmlzaXRvci5hcHBlbmRWYWx1ZXModGhpc09iamVjdC0+
bG9jYWxzKCksIHRoaXNPYmplY3QtPm1fbnVtYmVyT2ZDYWxsZWVMb2NhbHMpOwotfQotCi19IC8v
IG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0dlbmVyYXRvckZyYW1lLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0
b3JGcmFtZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZDU0NWIxNDdkZDRhYmZi
MmJiYjliNWE3MTk0ZThmNzQ4NDFjNDlhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZy
YW1lLmgKKysrIC9kZXYvbnVsbApAQCAtMSw5MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpZm5kZWYgR2VuZXJhdG9yRnJhbWVfaAotI2RlZmluZSBHZW5lcmF0b3JGcmFtZV9oCi0KLSNp
bmNsdWRlICJKU0NlbGwuaCIKLSNpbmNsdWRlIDx3dGYvRmFzdEJpdFZlY3Rvci5oPgotCi1uYW1l
c3BhY2UgSlNDIHsKLQotY2xhc3MgR2VuZXJhdG9yRnJhbWUgOiBwdWJsaWMgSlNDZWxsIHsKLSAg
ICBmcmllbmQgY2xhc3MgSklUOwotI2lmIEVOQUJMRShERkdfSklUKQotICAgIGZyaWVuZCBjbGFz
cyBERkc6OlNwZWN1bGF0aXZlSklUOwotICAgIGZyaWVuZCBjbGFzcyBERkc6OkpJVENvbXBpbGVy
OwotI2VuZGlmCi0gICAgZnJpZW5kIGNsYXNzIFZNOwotcHVibGljOgotICAgIHR5cGVkZWYgSlND
ZWxsIEJhc2U7Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gU3Ry
dWN0dXJlSXNJbW1vcnRhbCB8IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwotCi0gICAgREVDTEFSRV9F
WFBPUlRfSU5GTzsKLQotICAgIHN0YXRpYyBHZW5lcmF0b3JGcmFtZSogY3JlYXRlKFZNJiwgc2l6
ZV90IG51bWJlck9mQ2FsbGVlTG9jYWxzKTsKLQotICAgIFdyaXRlQmFycmllckJhc2U8VW5rbm93
bj4qIGxvY2FscygpCi0gICAgewotICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PFdyaXRlQmFy
cmllckJhc2U8VW5rbm93bj4qPihiaXR3aXNlX2Nhc3Q8Y2hhcio+KHRoaXMpICsgb2Zmc2V0T2ZM
b2NhbHMoKSk7Ci0gICAgfQotCi0gICAgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiYgbG9jYWxB
dChzaXplX3QgaW5kZXgpCi0gICAgewotICAgICAgICBBU1NFUlQoaW5kZXggPCBtX251bWJlck9m
Q2FsbGVlTG9jYWxzKTsKLSAgICAgICAgcmV0dXJuIGxvY2FscygpW2luZGV4XTsKLSAgICB9Ci0K
LSAgICBzdGF0aWMgc2l6ZV90IG9mZnNldE9mTG9jYWxzKCkKLSAgICB7Ci0gICAgICAgIHJldHVy
biBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Y8c2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPik+
KHNpemVvZihHZW5lcmF0b3JGcmFtZSkpOwotICAgIH0KLQotICAgIHN0YXRpYyBzaXplX3QgYWxs
b2NhdGlvblNpemVGb3JMb2NhbHModW5zaWduZWQgbnVtYmVyT2ZMb2NhbHMpCi0gICAgewotICAg
ICAgICByZXR1cm4gb2Zmc2V0T2ZMb2NhbHMoKSArIG51bWJlck9mTG9jYWxzICogc2l6ZW9mKFdy
aXRlQmFycmllcjxVbmtub3duPik7Ci0gICAgfQotCi0gICAgc3RhdGljIFN0cnVjdHVyZSogY3Jl
YXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHByb3RvdHlwZSk7Ci0K
LSAgICB2b2lkIHNhdmUoRXhlY1N0YXRlKiwgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZUNhbGxl
ZUxvY2Fscyk7Ci0gICAgdm9pZCByZXN1bWUoRXhlY1N0YXRlKiwgY29uc3QgRmFzdEJpdFZlY3Rv
ciYgbGl2ZUNhbGxlZUxvY2Fscyk7Ci0KLXByaXZhdGU6Ci0gICAgR2VuZXJhdG9yRnJhbWUoVk0m
LCBzaXplX3QgbnVtYmVyT2ZDYWxsZWVMb2NhbHMpOwotCi0gICAgc2l6ZV90IG1fbnVtYmVyT2ZD
YWxsZWVMb2NhbHM7Ci0KLSAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwot
Ci0gICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOwotCi1wcm90ZWN0ZWQ6Ci0gICAgc3RhdGlj
IHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwotfTsKLQotfSAvLyBu
YW1lc3BhY2UgSlNDCi0KLSNlbmRpZiAvLyBHZW5lcmF0b3JGcmFtZV9oCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTS5jcHAKaW5kZXggYjFmZjQyNDhhMzQ4NGE0Y2JiYzIwNWMzMmQ0ZDA0YzE2
MDYwY2FjNi4uODVlNjdmZmI1OTY0NGQzYjU0MzMyNTdiN2NiMGVkMWRkMGU2OWNkYyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtNDYsNyArNDYsNiBAQAogI2luY2x1ZGUg
IkZUTFRodW5rcy5oIgogI2luY2x1ZGUgIkZ1bmN0aW9uQ29uc3RydWN0b3IuaCIKICNpbmNsdWRl
ICJHQ0FjdGl2aXR5Q2FsbGJhY2suaCIKLSNpbmNsdWRlICJHZW5lcmF0b3JGcmFtZS5oIgogI2lu
Y2x1ZGUgIkdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIkhlYXAuaCIKICNpbmNsdWRlICJIZWFw
SXRlcmF0aW9uU2NvcGUuaCIKQEAgLTI0MCw3ICsyMzksNiBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlw
ZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgaW5mZXJyZWRUeXBlU3RydWN0dXJlLnNldCgqdGhp
cywgSW5mZXJyZWRUeXBlOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAg
ICAgaW5mZXJyZWRUeXBlVGFibGVTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBJbmZlcnJlZFR5cGVUYWJs
ZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIGZ1bmN0aW9uUmFy
ZURhdGFTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBGdW5jdGlvblJhcmVEYXRhOjpjcmVhdGVTdHJ1Y3R1
cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7Ci0gICAgZ2VuZXJhdG9yRnJhbWVTdHJ1Y3R1cmUuc2V0
KCp0aGlzLCBHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwo
KSkpOwogICAgIGV4Y2VwdGlvblN0cnVjdHVyZS5zZXQoKnRoaXMsIEV4Y2VwdGlvbjo6Y3JlYXRl
U3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIHByb21pc2VEZWZlcnJlZFN0cnVj
dHVyZS5zZXQoKnRoaXMsIEpTUHJvbWlzZURlZmVycmVkOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMs
IDAsIGpzTnVsbCgpKSk7CiAgICAgaW50ZXJuYWxQcm9taXNlRGVmZXJyZWRTdHJ1Y3R1cmUuc2V0
KCp0aGlzLCBKU0ludGVybmFsUHJvbWlzZURlZmVycmVkOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMs
IDAsIGpzTnVsbCgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAppbmRleCBmMGRlMTUx
MzVhOTA3ODc4YjQ3YTFkMzQzNGY2ODI5MWNiNWRjNzNlLi40ZmY5ZWRkMGE3NzQ2YzI5ZTVlNjdj
MzgxZmNlM2IyMDc0Nzk5NTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKQEAgLTMx
Niw3ICszMTYsNiBAQCBjbGFzcyBWTSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxWTT4g
ewogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGluZmVycmVkVHlwZVN0cnVjdHVyZTsKICAgICBTdHJv
bmc8U3RydWN0dXJlPiBpbmZlcnJlZFR5cGVUYWJsZVN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3Ry
dWN0dXJlPiBmdW5jdGlvblJhcmVEYXRhU3RydWN0dXJlOwotICAgIFN0cm9uZzxTdHJ1Y3R1cmU+
IGdlbmVyYXRvckZyYW1lU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGV4Y2VwdGlv
blN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBwcm9taXNlRGVmZXJyZWRTdHJ1Y3R1
cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gaW50ZXJuYWxQcm9taXNlRGVmZXJyZWRTdHJ1Y3R1
cmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVy
YXRvci1maWItZnRsLWFuZC1hcnJheS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9z
dHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwtYW5kLWFycmF5LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZlOTM5ODEy
ZmRiYWVjNmI4MzJiZmQwMGYyMTUzZGVmODRiYjc1OTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLWFuZC1hcnJh
eS5qcwpAQCAtMCwwICsxLDIzIEBACisoZnVuY3Rpb24gKCkgeworICAgIGZ1bmN0aW9uICpmaWIo
KQorICAgIHsKKyAgICAgICAgbGV0IGEgPSAxOworICAgICAgICBsZXQgYiA9IDE7CisgICAgICAg
IGxldCBjID0gWyAwIF07CisgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICBjWzBd
ID0gYTsKKyAgICAgICAgICAgIHlpZWxkIGM7CisgICAgICAgICAgICBbYSwgYl0gPSBbYiwgYSAr
IGJdOworICAgICAgICB9CisgICAgfQorCisgICAgbGV0IHZhbHVlID0gMDsKKyAgICBmb3IgKGxl
dCBpID0gMDsgaSA8IDFlNDsgKytpKSB7CisgICAgICAgIGxldCBmID0gZmliKCk7CisgICAgICAg
IGZvciAobGV0IGkgPSAwOyBpIDwgMTAwOyArK2kpIHsKKyAgICAgICAgICAgIHZhbHVlID0gZi5u
ZXh0KCkudmFsdWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHZhbHVlWzBdICE9PSAzNTQyMjQ4
NDgxNzkyNjIwMDAwMDApCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCB2YWx1ZTok
e3Jlc3VsdH1gKTsKKyAgICB9Cit9KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQtb2JqZWN0LmpzIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQtb2JqZWN0
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjY2NzM0MGYyZWE0Yzc0MzhhMmQyMDlhYTQwZDA2NzdlNGFiN2QzZmIK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dl
bmVyYXRvci1maWItZnRsLWFuZC1vYmplY3QuanMKQEAgLTAsMCArMSwyMyBAQAorKGZ1bmN0aW9u
ICgpIHsKKyAgICBmdW5jdGlvbiAqZmliKCkKKyAgICB7CisgICAgICAgIGxldCBhID0gMTsKKyAg
ICAgICAgbGV0IGIgPSAxOworICAgICAgICBsZXQgYyA9IHsgZmliOiAwIH07CisgICAgICAgIHdo
aWxlICh0cnVlKSB7CisgICAgICAgICAgICBjLmZpYiA9IGE7CisgICAgICAgICAgICB5aWVsZCBj
OworICAgICAgICAgICAgW2EsIGJdID0gW2IsIGEgKyBiXTsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIGxldCB2YWx1ZSA9IDA7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxZTQ7ICsraSkgewor
ICAgICAgICBsZXQgZiA9IGZpYigpOworICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDsg
KytpKSB7CisgICAgICAgICAgICB2YWx1ZSA9IGYubmV4dCgpLnZhbHVlOworICAgICAgICB9Cisg
ICAgICAgIGlmICh2YWx1ZS5maWIgIT09IDM1NDIyNDg0ODE3OTI2MjAwMDAwMCkKKyAgICAgICAg
ICAgIHRocm93IG5ldyBFcnJvcihgYmFkIHZhbHVlOiR7cmVzdWx0fWApOworICAgIH0KK30oKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRv
ci1maWItZnRsLWFuZC1zdHJpbmcuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3Ry
ZXNzL2dlbmVyYXRvci1maWItZnRsLWFuZC1zdHJpbmcuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDM4YWU2YWIz
MzQ3MDQ2ODIyODQ5ZjQzMDA0ZWE1YzQwM2VlZGEyOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwtYW5kLXN0cmlu
Zy5qcwpAQCAtMCwwICsxLDIyIEBACisoZnVuY3Rpb24gKCkgeworICAgIGZ1bmN0aW9uICpmaWIo
KQorICAgIHsKKyAgICAgICAgbGV0IGEgPSAxOworICAgICAgICBsZXQgYiA9IDE7CisgICAgICAg
IGxldCBjID0gIlJlc3VsdCEgIjsKKyAgICAgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgICAg
IHlpZWxkIGMgKyBhOworICAgICAgICAgICAgW2EsIGJdID0gW2IsIGEgKyBiXTsKKyAgICAgICAg
fQorICAgIH0KKworICAgIGxldCB2YWx1ZSA9IDA7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAx
ZTQ7ICsraSkgeworICAgICAgICBsZXQgZiA9IGZpYigpOworICAgICAgICBmb3IgKGxldCBpID0g
MDsgaSA8IDEwMDsgKytpKSB7CisgICAgICAgICAgICB2YWx1ZSA9IGYubmV4dCgpLnZhbHVlOwor
ICAgICAgICB9CisgICAgICAgIGlmICh2YWx1ZSAhPT0gYFJlc3VsdCEgMzU0MjI0ODQ4MTc5MjYy
MDAwMDAwYCkKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIHZhbHVlOiR7cmVzdWx0
fWApOworICAgIH0KK30oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNDBlMzNkYmM4Njhi
ZWE3YTg5M2M5ZWMxNmI3NzllYzI2YmRiMTljCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC5qcwpAQCAtMCwwICsx
LDIxIEBACisoZnVuY3Rpb24gKCkgeworICAgIGZ1bmN0aW9uICpmaWIoKQorICAgIHsKKyAgICAg
ICAgbGV0IGEgPSAxOworICAgICAgICBsZXQgYiA9IDE7CisgICAgICAgIHdoaWxlICh0cnVlKSB7
CisgICAgICAgICAgICB5aWVsZCBhOworICAgICAgICAgICAgW2EsIGJdID0gW2IsIGEgKyBiXTsK
KyAgICAgICAgfQorICAgIH0KKworICAgIGxldCB2YWx1ZSA9IDA7CisgICAgZm9yIChsZXQgaSA9
IDA7IGkgPCAxZTQ7ICsraSkgeworICAgICAgICBsZXQgZiA9IGZpYigpOworICAgICAgICBmb3Ig
KGxldCBpID0gMDsgaSA8IDEwMDsgKytpKSB7CisgICAgICAgICAgICB2YWx1ZSA9IGYubmV4dCgp
LnZhbHVlOworICAgICAgICB9CisgICAgICAgIGlmICh2YWx1ZSAhPT0gMzU0MjI0ODQ4MTc5MjYy
MDAwMDAwKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgdmFsdWU6JHtyZXN1bHR9
YCk7CisgICAgfQorfSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0
cy9zdHJlc3MvZ2VuZXJhdG9yLWZyYW1lLWVtcHR5LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZnJhbWUtZW1wdHkuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTllODg1
NWJmYWMzYzU2ZGY5MjZhYmQ0MjhjMDEzYzMzNDE2Mjc0NgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZyYW1lLWVtcHR5Lmpz
CkBAIC0wLDAgKzEsMzQgQEAKK2Z1bmN0aW9uIHNob3VsZFRocm93KGZ1bmMsIGVycm9yTWVzc2Fn
ZSkgeworICAgIHZhciBlcnJvclRocm93biA9IGZhbHNlOworICAgIHZhciBlcnJvciA9IG51bGw7
CisgICAgdHJ5IHsKKyAgICAgICAgZnVuYygpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAg
ZXJyb3JUaHJvd24gPSB0cnVlOworICAgICAgICBlcnJvciA9IGU7CisgICAgfQorICAgIGlmICgh
ZXJyb3JUaHJvd24pCisgICAgICAgIHRocm93IG5ldyBFcnJvcignbm90IHRocm93bicpOworICAg
IGlmIChTdHJpbmcoZXJyb3IpICE9PSBlcnJvck1lc3NhZ2UpCisgICAgICAgIHRocm93IG5ldyBF
cnJvcihgYmFkIGVycm9yOiAke1N0cmluZyhlcnJvcil9YCk7Cit9CisKK3Nob3VsZFRocm93KGZ1
bmN0aW9uICgpIHsKKyAgICBmdW5jdGlvbiAqZmliKGZsYWcpCisgICAgeworICAgICAgICBsZXQg
YSA9IDE7CisgICAgICAgIGxldCBiID0gMTsKKyAgICAgICAgeWllbGQgNDI7CisgICAgICAgIGlm
IChmbGFnKQorICAgICAgICAgICAgcmV0dXJuIGM7CisgICAgICAgIGxldCBjID0gNTAwOworICAg
IH0KKworICAgIGxldCB2YWx1ZSA9IDA7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxZTQ7ICsr
aSkgeworICAgICAgICBmb3IgKGxldCB2IG9mIGZpYihmYWxzZSkpIHsKKyAgICAgICAgfQorICAg
IH0KKyAgICBmb3IgKGxldCB2IG9mIGZpYih0cnVlKSkgeworICAgIH0KK30sIGBSZWZlcmVuY2VF
cnJvcjogQ2Fubm90IGFjY2VzcyB1bmluaXRpYWxpemVkIHZhcmlhYmxlLmApOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItcmVkdWNlZC1z
YXZlLXBvaW50LXB1dC10by1zY29wZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9z
dHJlc3MvZ2VuZXJhdG9yLXJlZHVjZWQtc2F2ZS1wb2ludC1wdXQtdG8tc2NvcGUuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYzBjNzVmYTQ5MTQzYzE3YmUxNGYzMjgxZTNmNjU0MzRmMzUxMzllOAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXJl
ZHVjZWQtc2F2ZS1wb2ludC1wdXQtdG8tc2NvcGUuanMKQEAgLTAsMCArMSwyOCBAQAorZnVuY3Rp
b24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVj
dGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCB2YWx1ZTogJHtTdHJpbmcoYWN0dWFs
KX1gKTsKK30KKworZnVuY3Rpb24gZXJyb3IoKQoreworICAgIHRocm93ICJvayI7Cit9CisKK2Z1
bmN0aW9uKiBnZW4oKQoreworICAgIHZhciB2YWx1ZSA9IDQyOworICAgIHRyeSB7CisgICAgICAg
IHlpZWxkIDMwMDsKKyAgICAgICAgdmFsdWUgPSA1MDA7CisgICAgICAgIGVycm9yKCk7CisgICAg
fSBjYXRjaCAoZSkgeworICAgICAgICB5aWVsZCA0MjsKKyAgICAgICAgcmV0dXJuIHZhbHVlOwor
ICAgIH0KKyAgICByZXR1cm4gMjAwOworfQorCit2YXIgZyA9IGdlbigpOworc2hvdWxkQmUoZy5u
ZXh0KCkudmFsdWUsIDMwMCk7CitzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgNDIpOworc2hvdWxk
QmUoZy5uZXh0KCkudmFsdWUsIDUwMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci10cmFuc2Zlci1yZWdpc3Rlci1iZXlvbmQtbXV0aXBs
ZS15aWVsZHMuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRv
ci10cmFuc2Zlci1yZWdpc3Rlci1iZXlvbmQtbXV0aXBsZS15aWVsZHMuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZmUyMDhmNTgxMjk2ZjlhZTA4YTZiZmIzOThiNDgyMjU3NDJkNmI3OAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXRyYW5zZmVy
LXJlZ2lzdGVyLWJleW9uZC1tdXRpcGxlLXlpZWxkcy5qcwpAQCAtMCwwICsxLDE4IEBACitmdW5j
dGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhw
ZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsK
K30KKworCitmdW5jdGlvbiAqZ2VuKCkKK3sKKyAgICB2YXIgdGVzdCA9IDQyOworICAgIHlpZWxk
IDMyOworICAgIHlpZWxkIDMzOworICAgIHlpZWxkIHRlc3Q7Cit9CisKK3ZhciBnID0gZ2VuKCk7
CitzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgMzIpOworc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUs
IDMzKTsKK3Nob3VsZEJlKGcubmV4dCgpLnZhbHVlLCA0Mik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi9GYXN0Qml0VmVjdG9yLmggYi9Tb3VyY2UvV1RGL3d0Zi9GYXN0Qml0VmVjdG9yLmgK
aW5kZXggOThmZmY1Y2Y3MzUzZTZiYzY3ZGE1YzU1OTQwY2NjZTRlNGIxNTZkMC4uZmYwMGI3YjU0
ZDRhMGNmZjRiZWY3ZDAzODU0ZGU2YjkwY2UxZGI5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvRmFzdEJpdFZlY3Rvci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0Zhc3RCaXRWZWN0b3IuaApA
QCAtMjMsOCArMjMsNyBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAotI2lmbmRlZiBGYXN0Qml0
VmVjdG9yX2gKLSNkZWZpbmUgRmFzdEJpdFZlY3Rvcl9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1
ZGUgPHN0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CkBAIC0zNiwxMiArMzUs
MTQgQEAgY2xhc3MgUHJpbnRTdHJlYW07CiAKIGNsYXNzIEZhc3RCaXRWZWN0b3IgewogcHVibGlj
OgotICAgIEZhc3RCaXRWZWN0b3IoKQotICAgICAgICA6IG1fYXJyYXkoMCkKLSAgICAgICAgLCBt
X251bUJpdHMoMCkKKyAgICBGYXN0Qml0VmVjdG9yKCkgPSBkZWZhdWx0OworCisgICAgRmFzdEJp
dFZlY3RvcihGYXN0Qml0VmVjdG9yJiYgb3RoZXIpCisgICAgICAgIDogbV9hcnJheShzdGQ6OmV4
Y2hhbmdlKG90aGVyLm1fYXJyYXksIG51bGxwdHIpKQorICAgICAgICAsIG1fbnVtQml0cyhzdGQ6
OmV4Y2hhbmdlKG90aGVyLm1fbnVtQml0cywgMCkpCiAgICAgewogICAgIH0KLSAgICAKKwogICAg
IEZhc3RCaXRWZWN0b3IoY29uc3QgRmFzdEJpdFZlY3RvciYgb3RoZXIpCiAgICAgICAgIDogbV9h
cnJheSgwKQogICAgICAgICAsIG1fbnVtQml0cygwKQpAQCAtMjAyLDEzICsyMDMsMTAgQEAgY2xh
c3MgRmFzdEJpdFZlY3RvciB7CiAgICAgc3RhdGljIHNpemVfdCBhcnJheUxlbmd0aChzaXplX3Qg
bnVtQml0cykgeyByZXR1cm4gKG51bUJpdHMgKyAzMSkgPj4gNTsgfQogICAgIHNpemVfdCBhcnJh
eUxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIGFycmF5TGVuZ3RoKG1fbnVtQml0cyk7IH0KICAgICAK
LSAgICB1aW50MzJfdCogbV9hcnJheTsgLy8gTm8sIHRoaXMgY2FuJ3QgYmUgYW4gc3RkOjp1bmlx
dWVfcHRyPHVpbnQzMl90W10+LgotICAgIHNpemVfdCBtX251bUJpdHM7CisgICAgdWludDMyX3Qq
IG1fYXJyYXkgeyBudWxscHRyIH07IC8vIE5vLCB0aGlzIGNhbid0IGJlIGFuIHN0ZDo6dW5pcXVl
X3B0cjx1aW50MzJfdFtdPi4KKyAgICBzaXplX3QgbV9udW1CaXRzIHsgMCB9OwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV1RGCiAKIHVzaW5nIFdURjo6RmFzdEJpdFZlY3RvcjsKLQotI2VuZGlmIC8v
IEZhc3RCaXRWZWN0b3JfaAotCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>284212</attachid>
            <date>2016-07-21 06:48:04 -0700</date>
            <delta_ts>2016-07-21 07:07:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-152723-20160721224703.patch</filename>
            <type>text/plain</type>
            <size>190765</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAzNTAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
MTg5OTNhYjdiZWYyMDRmYjhkMjVkN2EyODExNzBiODE5NjI4ZGEzLi41NWE0MjcyZDYxZTE1ZDk5
NTU5YmE2OWU0MTFkYjNlYTA3ZjM5ODU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNTIgQEAKKzIwMTYtMDctMjEgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0RGR11bRlRMXSBJbXBsZW1lbnQgRVM2IEdlbmVyYXRvcnMgaW4g
REZHIC8gRlRMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNTI3MjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUaGlzIHBhdGNoIGludHJvZHVjZXMgREZHIGFuZCBGVEwgc3VwcG9ydCBmb3IgRVM2IGdlbmVy
YXRvcnMuCisgICAgICAgIEVTNiBnZW5lcmF0b3IgaXMgY29tcGlsZWQgYnkgdGhlIEJ5dGVjb2Rl
R2VuZXJhdG9yLiBCdXQgYXQgdGhlIGxhc3QgcGhhc2UsIEJ5dGVjb2RlR2VuZXJhdG9yIHBlcmZv
cm1zICJnZW5lcmF0b3JpZmljYXRpb24iIG9udG8gdGhlIHVubGlua2VkIGNvZGUuCisgICAgICAg
IEluIEJ5dGVjb2RlR2VuZXJhdG9yIHBoYXNlLCB3ZSBpbnNlcnRlZCBzZXZlcmFsIHNwZWNpYWwg
bWFya2VycyBmb3IgdGhlIGdlbmVyYXRvcnMsIG9wX3NhdmUgYW5kIG9wX3Jlc3VtZS4KKyAgICAg
ICAgVGhlIG9wX3NhdmUsIG9wX3Jlc3VtZSwgYW5kIHRoZSBtZXJnZSBwb2ludCBibG9jayBhcmUg
Y29ubmVjdGVkIGFzIGZvbGxvd3MuCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBvcF9yZXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBeCisgICAgICAgIGVudHJ5IC0+IGdlbmVyYXRvciBzd2l0Y2ggLS0tLT4gb3Bfc2F2ZSAtPiBt
ZXJnZSBwb2ludCAtPiAuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBeCisgICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0t
LT4gb3BfcmVzdW1lIC0tLS0tKworCisgICAgICAgIEluIHRoZSBnZW5lcmF0b3JpZmljYXRpb24g
cGhhc2UsIHdlIHR1cm4gb3V0IHdoaWNoIHZhcmlhYmxlcyBzaG91bGQgYmUgc2F2ZWQgYW5kIHJl
c3VtZWQgYXQgZWFjaCBvcF9zYXZlIGFuZCBvcF9yZXN1bWUsIGFuZCBjb252ZXJ0IHRoZXNlIGJ5
dGVjb2RlcworICAgICAgICB0byB0aGUgc2VxdWVuY2VzIG9mIHRoZSBnZXRfZnJvbV9zY29wZSBh
bmQgcHV0X3RvX3Njb3BlLiBUaGUgcmVnaXN0ZXJzIGFyZSBzYXZlZCBhbmQgcmVzdW1lZCBvdmVy
IHRoZSBnZW5lcmF0b3IncyBuZXh0KCkgY2FsbHMgYnkgdXNpbmcgdGhpcyBzcGVjaWFsCisgICAg
ICAgIGdlbmVyYXRvciBmcmFtZSBzY29wZS4KKworICAgICAgICBJbiB0aGUgZ2VuZXJhdG9yaWZp
Y2F0aW9uIHBoYXNlLAorCisgICAgICAgIDEuIFdlIGNvbnN0cnVjdCB0aGUgQnl0ZWNvZGVHcmFw
aCBmcm9tIHRoZSB1bmlua2VkIGluc3RydWN0aW9ucy4gVGhpcyBjb25zdHJ1Y3RzIHRoZSBiYXNp
YyBibG9ja3MsIGFuZCBpdCBpcyB1c2VkIGluIHRoZSBzdWJzZXF1ZW50IGFuYWx5c2lzLgorICAg
ICAgICAyLiBXZSBwZXJmb3JtIHRoZSBhbmFseXNpcyBvbnRvIHRoZSB1bmxpbmtlZCBjb2RlLiBX
ZSBoYXZlIDMgYW5hbHlzaXM6IHRoZSBsaXZlbmVzcyBhbmFseXNpcywgdGhlIHJlc3VtZWQgdmFy
aWFibGVzIGFuYWx5c2lzLCBhbmQgdGhlIHNhdmVkIHZhcmlhYmxlcyBhbmFseXNpcy4KKyAgICAg
ICAgICAgRmlyc3QsIGluIHRoZSBsaXZlbmVzcyBhbmFseXNpcywgd2UgZXh0cmFjdCB0aGUgbGl2
ZSB2YXJpYWJsZXMgYXQgZWFjaCBtZXJnZSBwb2ludC4gVGhlc2UgdmFyaWFibGVzIHNob3VsZCBi
ZSBjb25zaWRlcmVkIGFzIHRoZSBjb25zZXJ2YXRpdmUgcmVnaXN0ZXJzCisgICAgICAgICAgIHRv
IGJlIHNhdmVkIGFuZCByZXN1bWVkIGF0IGVhY2ggcG9pbnQuCisgICAgICAgIDMuIFNlY29uZCwg
d2UgcGVyZm9ybSB0aGUgbGl2ZW5lc3MgYW5hbHlzaXMgYWdhaW4uIEJ1dCB0aGlzIHRpbWUsIHdl
IGV4cGxpY2l0bHkgaWdub3JlIHRoZSBlZGdlcyBiZXR3ZWVuIHRoZSBzYXZlIHBvaW50cyBhbmQg
dGhlIG1lcmdlIHBvaW50cy4gVGhpcyBhbmFseXNpcywKKyAgICAgICAgICAgcmVmZXJyZWQgdG8g
YXMgdGhlIHJlc3VtZWQgdmFyaWFibGVzIGFuYWx5c2lzLCBleHRyYWN0cyB0aGUgbGl2ZW5lc3Mg
YXQgZWFjaCBtZXJnZSBwb2ludC4gVGhpcyBsaXZlbmVzcyBpbmZvcm1hdGlvbiBvbmx5IGNvbnNp
ZGVycyB0aGUgcmVhY2hhYmxlIGJsb2NrcyBmcm9tIHRoZQorICAgICAgICAgICB0YXJnZXQgb3Bf
cmVzdW1lLiBTbywgdGhpcyByZWdpc3RlciBzZXQgcmVwcmVzZW50cyB0aGF0IHdoaWNoIHNhdmVk
IHJlZ2lzdGVycyB0aGUgcmVhY2hhYmxlIGJsb2NrcyB1c2UuIFdlIGNvbnNpZGVyIHRoZXNlIHJl
Z2lzdGVycyBhcyB0aGUgcmVnaXN0ZXJzIHRvIGJlIHJlc3VtZWQKKyAgICAgICAgICAgaGVyZS4g
VGhlIHJlc3VsdCByZWdpc3RlciBzZXQgaXMgc21hbGxlciB0aGFuIHRoZSBzZXQgd2hpY2ggaXMg
ZXh0cmFjdGVkIGluIHRoZSBwcmV2aW91cyBsaXZlbmVzcyBhbmFseXNpcy4KKyAgICAgICAgNC4g
VGhpcmQsIHdlIGRyaXZlIHRoZSBmb3J3YXJkIGFuYWx5c2lzLCBjYWxsZWQgdGhlIHNhdmVkIHZh
cmlhYmxlcyBhbmFseXNpcy4gQXQgb3Bfc2F2ZSwgd2Ugc2hvdWxkIHNhdmUgdGhlIHZhcmlhYmxl
cyB0aGF0IChpKSB3aWxsIGJlIHVzZWQgYWZ0ZXIgdGhlIG1lcmdlIHBvaW50CisgICAgICAgICAg
IGFuZCAoaWkpIHRoZSBuZXdseSBkZWZpbmVkIHZhcmlhYmxlcyBmcm9tIHRoZSBwcmV2aW91cyBv
cF9yZXN1bWUuIFNvLCB3ZSBwcm9wYWdhdGUgdGhlIGRlZnMgYW5kIGNvbGxlY3QgdGhlIG5ld2x5
IGRlZmluZWQgcmVnaXN0ZXJzIGF0IHRoZSBvcF9zYXZlIHBvaW50IGluIHRoZSBncmFwaAorICAg
ICAgICAgICB3aGljaCBkcm9wcyB0aGUgZWRnZXMgYmV0d2VlbiB0aGUgc2F2ZSBwb2ludHMgYW5k
IHRoZSBtZXJnZSBwb2ludHMuIFRoaXMgcmVzdWx0IHJlcHJlc2VudHMgKGlpKS4gU28gdGhlbiwg
d2UgZmlsdGVyIHRoZSBsaXZlIHZhcmlhYmxlcyAoaSkgKGdhaW5lZCBpbiAoMikpIGF0IHRoZSBt
ZXJnZQorICAgICAgICAgICBwb2ludCB3aXRoIHRoaXMgbmV3bHkgZGVmLWVkIHJlZ2lzdGVycyBi
aXQgbWFzayhpaSkuCisgICAgICAgIDUuIFdlIGluc2VydCB0aGUgZ2V0X2Zyb21fc2NvcGUgYW5k
IHB1dF90b19zY29wZSBhdCBlYWNoIG9wX3NhdmUgYW5kIG9wX3Jlc3VtZS4gV2hpY2ggcmVnaXN0
ZXJzIHNob3VsZCBiZSBzYXZlZCBhbmQgcmVzdW1lZCBpcyBvZmZlcmVkIGJ5ICgzKSBhbmQgKDQp
LgorICAgICAgICAgICBUaGVuLCBjbGlwIHRoZSBvcF9zYXZlIGFuZCBvcF9yZXN1bWUgdGhlbXNl
bHZlcy4gVGhleSBhcmUgZXhlY3V0ZWQgaW4gYSBiYXRjaCBtYW5uZXIgYnkgQnl0ZWNvZGVNb2Rp
ZmljYXRpb25TZXQuIFNpbmNlIHRoZXNlIG1vZGlmaWNhdGlvbiBjaGFuZ2VzIHRoZSBiYXNpYyBi
bG9ja3MKKyAgICAgICAgICAgYW5kIHNpemUgb2YgdW5saW5rZWQgaW5zdHJ1Y3Rpb25zLCBCeXRl
Y29kZU1vZGlmaWNhdGlvblNldCBhbHNvIHBlcmZvcm1zIHRoZSBvZmZzZXQgYWRqdXN0bWVudCBm
b3IgVW5saW5rZWRDb2RlQmxvY2suIFNvLCB0aGlzIEJ5dGVjb2RlTW9kaWZpY2F0aW9uU2V0IGlz
IHBlcmZvcm1lZAorICAgICAgICAgICBvbnRvIHRoZSBCeXRlY29kZUdyYXBoIGluc3RlYWQgb2Yg
Qnl0ZWNvZGVCYXNpY0Jsb2NrLiBUaGUgcmVhc29uIHdoeSB3ZSB0YWtlIHRoaXMgZGVzaWduIGlz
IHNpbXBsZTogd2UgZG9uJ3Qgd2FudCB0byBuZXdseSBjcmVhdGUgdGhlIGJhc2ljIGJsb2NrcyBh
bmQgb3Bjb2RlcworICAgICAgICAgICBmb3IgdGhpcyBlYXJseSBwaGFzZSBsaWtlIERGRy4gSW5z
dGVhZCwgd2UgcGVyZm9ybSB0aGUgbW9kaWZpY2F0aW9uIGFuZCBhZGp1c3RtZW50IHRvIHRoZSB1
bmxpbmtlZCBpbnN0cnVjdGlvbnMgYW5kIFVubGlua2VkQ29kZUJsb2NrIGluIGEgaW4tcGxhY2Ug
bWFubmVyLgorCisgICAgICAgIEFmdGVyIHRoYXQgcGhhc2UsIHRoZSBkYXRhIGZsb3cgb2YgdGhl
IGdlbmVyYXRvci1zYXZlZC1hbmQtcmVzdW1lZC1yZWdpc3RlcnMgYXJlIGV4cGxpY2l0bHkgcmVw
cmVzZW50ZWQgYnkgdGhlIGdldF9mcm9tX3Njb3BlIGFuZCBwdXRfdG9fc2NvcGUuCisgICAgICAg
IEFuZCBvcF9zYXZlIGFuZCBvcF9yZXN1bWUgYXJlIHJlbW92ZWQuIFNpbmNlIHdlIHVzZSB0aGUg
ZXhpc3RpbmcgYnl0ZWNvZGVzLCBERkcgYW5kIEZUTCBjaGFuZ2VzIGFyZSBub3QgbmVjZXNzYXJ5
LgorCisgICAgICAgIENvbXBpbGluZyBFUzYgZ2VuZXJhdG9ycyBpbiBERkcgYW5kIEZUTCBnaXZl
cyB1cyBzaWduaWZpY2FudCBwZXJmb3JtYW5jZSBpbXByb3ZlbWVudHMuCisgICAgICAgIEluIHg2
NCBMaW51eCBib3ggKGhhbmF5YW1hdGEpLCB0aGUgcmVzdWx0IG9mIEpTQ09ubHkgcG9ydCBpcyB0
aGUgZm9sbG93aW5ncy4KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBiYXNlbGluZSAgICAgICAgICAgICAgICAgICBwYXRjaAorCisgICAg
ICAgICAgICBnZW5lcmF0b3ItZmliICAgICAgICAgICAgICAgICAgICAgICAgICAxMDMuMjU0Myst
My45OTc4ICAgICBeICAgICAzNi40MTQ4Ky0wLjg0MDIgICAgICAgIF4gZGVmaW5pdGVseSAyLjgz
NTV4IGZhc3RlcgorICAgICAgICAgICAgZ2VuZXJhdG9yLXdpdGgtc2V2ZXJhbC10eXBlcyAgICAg
ICAgICAgMzQyLjUwMDkrLTI1LjE2MDIgICAgXiAgICAxMzIuMTcxMCstMTcuMTEyOSAgICAgICBe
IGRlZmluaXRlbHkgMi41OTEzeCBmYXN0ZXIKKyAgICAgICAgICAgIGdlbmVyYXRvci1zdW5zcGlk
ZXItYWNjZXNzLW5zaWV2ZSAgICAgICAgNS45ODE2Ky0wLjEwODIgICAgIF4gICAgICA1LjE3ODAr
LTAuMjM4OCAgICAgICAgXiBkZWZpbml0ZWx5IDEuMTU1MnggZmFzdGVyCisKKworICAgICAgICBJ
biB4NjQgT1MgWCBsYXB0b3AsIHRoZSByZXN1bHRzIG9mIEVTNlNhbXBsZUJlbmNoIGFyZSB0aGUg
Zm9sbG93aW5ncy4KKyAgICAgICAgVGhlIEVTNiBCYXNpYyBiZW5jaG1hcmsgc2hvdyB0aGF0IHRo
ZSBwZXJmb3JtYW5jZSBvZiB0aGUgcGF0Y2hlZCBvbmUgaXMgMzMlIGZhc3RlciB0aGFuIHRoZSBw
ZXJmb3JtYW5jZSBvZiB0aGUgYmFzZWxpbmUuCisKKyAgICAgICAgICAgIEJhc2VsaW5lOgorICAg
ICAgICAgICAgICAgIEdlb21ldHJpYyBNZWFuIFJlc3VsdDogMTgxLjgzIG1zIMKxIDQuODIgbXMK
KworICAgICAgICAgICAgICAgIEJlbmNobWFyayAgICBGaXJzdCBJdGVyYXRpb24gICAgICAgV29y
c3QgMiUgICAgICAgICAgICAgIFN0ZWFkeSBTdGF0ZQorICAgICAgICAgICAgICAgIEFpciAgICAg
ICAgICA3MC43NCBtcyDCsSA2LjU1IG1zICAgIDM0Ljc0IG1zIMKxIDEuNjUgbXMgICAgMjk4OS4w
NiBtcyDCsSAzNC40NSBtcworICAgICAgICAgICAgICAgIEJhc2ljICAgICAgICA0MC4wMyBtcyDC
sSAxLjk2IG1zICAgIDI4LjUwIG1zIMKxIDAuNjAgbXMgICAgNDM0Mi45MSBtcyDCsSA2NC4xMCBt
cworCisgICAgICAgICAgICBQYXRjaGVkOgorICAgICAgICAgICAgICAgIEdlb21ldHJpYyBNZWFu
IFJlc3VsdDogMTY4LjE0IG1zIMKxIDEuMzkgbXMKKworICAgICAgICAgICAgICAgIEJlbmNobWFy
ayAgICBGaXJzdCBJdGVyYXRpb24gICAgICAgV29yc3QgMiUgICAgICAgICAgICAgIFN0ZWFkeSBT
dGF0ZQorICAgICAgICAgICAgICAgIEFpciAgICAgICAgICA2OC42NyBtcyDCsSAwLjgyIG1zICAg
IDM1LjYyIG1zIMKxIDAuMzIgbXMgICAgMzA2NS44OSBtcyDCsSA1NS41OSBtcworICAgICAgICAg
ICAgICAgIEJhc2ljICAgICAgICAzOC42MSBtcyDCsSAxLjY1IG1zICAgIDIzLjk3IG1zIMKxIDAu
MzggbXMgICAgMzI2Mi40NiBtcyDCsSA3NC4xMiBtcworCisgICAgICAgICogQ01ha2VMaXN0cy50
eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiBidWlsdGlucy9HZW5lcmF0b3JQcm90b3R5cGUuanM6CisgICAgICAgIChnbG9i
YWxQcml2YXRlLmdlbmVyYXRvclJlc3VtZSk6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVC
YXNpY0Jsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVCYXNpY0Jsb2NrOjpjb21wdXRl
Qnl0ZWNvZGVCYXNpY0Jsb2Nrc0ludGVybmFsKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVCYXNp
Y0Jsb2NrOjpjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2Nrcyk6CisgICAgICAgIChKU0M6OmxpbmtC
bG9ja3MpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2Nr
cyk6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmg6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlQmFzaWNCbG9jazo6Ynl0ZWNvZGVPZmZzZXRzKToKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVCYXNpY0Jsb2NrOjpzdWNjZXNzb3JzKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVCYXNpY0Jsb2NrOjpwcmVkZWNlc3NvcnMpOgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUJhc2ljQmxvY2s6OmluZGV4KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVCYXNpY0Jsb2NrOjph
ZGRTdWNjZXNzb3IpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUJhc2ljQmxvY2s6OmFkZFByZWRl
Y2Vzc29yKToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5j
cHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbjo6Qnl0
ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRv
cmlmaWNhdGlvbjo6aXNNZXJnZUJsb2NrKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0
b3JpZmljYXRpb246OmlzU2F2ZUJsb2NrKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0
b3JpZmljYXRpb246OmdyYXBoKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3JpZmlj
YXRpb246OnN0b3JhZ2VGb3JHZW5lcmF0b3JMb2NhbCk6CisgICAgICAgIChKU0M6OkdlbmVyYXRv
ckxpdmVuZXNzQW5hbHlzaXM6OkdlbmVyYXRvckxpdmVuZXNzQW5hbHlzaXMpOgorICAgICAgICAo
SlNDOjpHZW5lcmF0b3JMaXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlTGl2ZW5lc3NEZWZzRm9yQnl0
ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JMaXZlbmVzc0FuYWx5c2lzOjpj
b21wdXRlTGl2ZW5lc3NVc2VzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpHZW5l
cmF0b3JMaXZlbmVzc0FuYWx5c2lzOjpzdGVwT3Zlckluc3RydWN0aW9uRm9yTGl2ZW5lc3MpOgor
ICAgICAgICAoSlNDOjpHZW5lcmF0b3JMaXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlTG9jYWxMaXZl
bmVzc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yTGl2ZW5lc3NB
bmFseXNpczo6Y29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCbG9jayk6CisgICAgICAgIChKU0M6Okdl
bmVyYXRvckxpdmVuZXNzQW5hbHlzaXM6OmdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQp
OgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JMaXZlbmVzc0FuYWx5c2lzOjpydW4pOgorICAgICAg
ICAoSlNDOjpSZXN1bWVkVmFyaWFibGVzQW5hbHlzaXM6OlJlc3VtZWRWYXJpYWJsZXNBbmFseXNp
cyk6CisgICAgICAgIChKU0M6OlJlc3VtZWRWYXJpYWJsZXNBbmFseXNpczo6Z2V0UmVzdW1lZFZh
cmlhYmxlc0luZm9BdEJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6UmVzdW1lZFZhcmlh
Ymxlc0FuYWx5c2lzOjpydW4pOgorICAgICAgICAoSlNDOjpTYXZlZFZhcmlhYmxlc0FuYWx5c2lz
OjpTYXZlZFZhcmlhYmxlc0FuYWx5c2lzKToKKyAgICAgICAgKEpTQzo6U2F2ZWRWYXJpYWJsZXNB
bmFseXNpczo6c3RlcE92ZXJJbnN0cnVjdGlvbkZvclNhdmVkVmFyaWFibGVzKToKKyAgICAgICAg
KEpTQzo6U2F2ZWRWYXJpYWJsZXNBbmFseXNpczo6Y29tcHV0ZUxvY2FsU2F2ZWRWYXJpYWJsZXNG
b3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OlNhdmVkVmFyaWFibGVzQW5hbHlzaXM6
OmNvbXB1dGVMb2NhbFNhdmVkVmFyaWFibGVzRm9yQmxvY2spOgorICAgICAgICAoSlNDOjpTYXZl
ZFZhcmlhYmxlc0FuYWx5c2lzOjpnZXRTYXZlZFZhcmlhYmxlc0luZm9BdEJ5dGVjb2RlT2Zmc2V0
KToKKyAgICAgICAgKEpTQzo6U2F2ZWRWYXJpYWJsZXNBbmFseXNpczo6cnVuKToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb246OnJ1bik6CisgICAgICAgIChKU0M6OnBl
cmZvcm1HZW5lcmF0b3JpZmljYXRpb24pOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlR2Vu
ZXJhdG9yaWZpY2F0aW9uLmg6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNJbmxpbmVzLmguCisgICAgICAgICogYnl0ZWNv
ZGUvQnl0ZWNvZGVHcmFwaC5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHcmFwaDo6
Y29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHcmFwaDo6YmFzaWNCbG9ja3MpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdyYXBoOjppbnN0cnVjdGlvbnMpOgorICAgICAgICAoSlND
OjpCeXRlY29kZUdyYXBoOjpiYXNpY0Jsb2Nrc0luUmV2ZXJzZU9yZGVyKToKKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVHcmFwaDo6YmxvY2tDb250YWluc0J5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHcmFwaDo6ZmluZEJhc2ljQmxvY2tGb3JCeXRlY29kZU9mZnNldCk6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR3JhcGg6OmZpbmRCYXNpY0Jsb2NrV2l0aExlYWRlck9mZnNl
dCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR3JhcGg8QmxvY2s+OjpCeXRlY29kZUdyYXBoKToK
KyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNp
cyk6CisgICAgICAgIChKU0M6OnN0ZXBPdmVySW5zdHJ1Y3Rpb24pOgorICAgICAgICAoSlNDOjpj
b21wdXRlTG9jYWxMaXZlbmVzc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Y29t
cHV0ZUxvY2FsTGl2ZW5lc3NGb3JCbG9jayk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlTGl2ZW5l
c3NBbmFseXNpczo6cnVuTGl2ZW5lc3NGaXhwb2ludCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
TGl2ZW5lc3NBbmFseXNpczo6Z2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29kZU9mZnNldCk6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0ZUZ1bGxMaXZlbmVzcyk6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0ZUtpbGxzKToK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpkdW1wUmVzdWx0cyk6Cisg
ICAgICAgIChKU0M6OmlzVmFsaWRSZWdpc3RlckZvckxpdmVuZXNzKTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6Z2V0TGVhZGVyT2Zmc2V0Rm9yQmFzaWNCbG9jayk6IERlbGV0ZWQuCisgICAgICAg
IChKU0M6OmZpbmRCYXNpY0Jsb2NrV2l0aExlYWRlck9mZnNldCk6IERlbGV0ZWQuCisgICAgICAg
IChKU0M6OmJsb2NrQ29udGFpbnNCeXRlY29kZU9mZnNldCk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OmZpbmRCYXNpY0Jsb2NrRm9yQnl0ZWNvZGVPZmZzZXQpOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGUpOiBEZWxldGVkLgorICAgICAg
ICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5oOgorICAgICAgICAqIGJ5dGVj
b2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGluZXMuaDoKKyAgICAgICAgKEpTQzo6aXNW
YWxpZFJlZ2lzdGVyRm9yTGl2ZW5lc3MpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTW9k
aWZpY2F0aW9uU2V0LmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkJ5dGVjb2RlTW9kaWZpY2F0
aW9uU2V0OjphZGp1c3RPZmZzZXQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZU1vZGlmaWNhdGlv
blNldDo6YXBwbHlNb2RpZmljYXRpb24pOgorICAgICAgICAoSlNDOjpCeXRlY29kZU1vZGlmaWNh
dGlvblNldDo6ZXhlY3V0ZSk6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVNb2RpZmljYXRp
b25TZXQuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkJ5dGVjb2RlTW9kaWZpY2F0aW9uU2V0OjpC
eXRlY29kZU1vZGlmaWNhdGlvblNldCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlTW9kaWZpY2F0
aW9uU2V0OjppbnNlcnQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZU1vZGlmaWNhdGlvblNldDo6
cmVtb3ZlQnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZU1vZGlmaWNhdGlvblNldDo6
Z3JhcGgpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmg6CisgICAgICAgIChK
U0M6OmNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpjb21wdXRl
RGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3Bw
OgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjpoYW5kbGVyRm9ySW5kZXgpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6
OnZhbHVlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
OjpsaXZlbmVzc0FuYWx5c2lzU2xvdyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZHVtcEJ5
dGVjb2RlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpzaHJpbmtUb0ZpdCk6
IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6
OkNvZGVCbG9jazo6aXNDb25zdGFudFJlZ2lzdGVySW5kZXgpOgorICAgICAgICAoSlNDOjpDb2Rl
QmxvY2s6OmxpdmVuZXNzQW5hbHlzaXMpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmxpdmVD
YWxsZWVMb2NhbHNBdFlpZWxkKTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29kZS9IYW5kbGVy
SW5mby5oOgorICAgICAgICAoSlNDOjpIYW5kbGVySW5mb0Jhc2U6OmhhbmRsZXJGb3JJbmRleCk6
CisgICAgICAgICogYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmNwcDoKKyAgICAgICAgKEpT
Qzo6Z2V0SnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OmNvbXB1
dGVQcmVjaXNlSnVtcFRhcmdldHNJbnRlcm5hbCk6CisgICAgICAgIChKU0M6OmNvbXB1dGVQcmVj
aXNlSnVtcFRhcmdldHMpOgorICAgICAgICAoSlNDOjpyZWNvbXB1dGVQcmVjaXNlSnVtcFRhcmdl
dHMpOgorICAgICAgICAoSlNDOjpmaW5kSnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldCk6Cisg
ICAgICAgICogYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmg6CisgICAgICAgICogYnl0ZWNv
ZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9j
azo6aGFuZGxlckZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2Rl
QmxvY2s6OmhhbmRsZXJGb3JJbmRleCk6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2Nr
OjphcHBseU1vZGlmaWNhdGlvbik6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxv
Y2suaDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRTdHJpbmdKdW1wVGFibGU6Om9mZnNldEZvclZh
bHVlKToKKyAgICAgICAgKiBieXRlY29kZS9WaXJ0dWFsUmVnaXN0ZXIuaDoKKyAgICAgICAgKiBi
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUdlbmVyYXRvcjo6Z2VuZXJhdGUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6
Qnl0ZWNvZGVHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dENvbXBsZXhQb3BTY29wZXMpOgorICAgICAgICAoSlNDOjpwcmVwYXJlSnVtcFRhYmxlRm9yU3Ry
aW5nU3dpdGNoKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRZaWVsZFBv
aW50KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRTYXZlKToKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXN1bWUpOgorICAgICAgICAqIGJ5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVy
YXRvcjo6Z2VuZXJhdG9yRnJhbWVSZWdpc3Rlcik6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlv
bnMuY3BwOgorICAgICAgICAqIGdlbmVyYXRlLWJ5dGVjb2RlLWZpbGVzOgorICAgICAgICAqIGlu
dGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpTQzo6ZmluZEV4Y2VwdGlvbkhh
bmRsZXIpOgorICAgICAgICAoSlNDOjpHZXRDYXRjaEhhbmRsZXJGdW5jdG9yOjpvcGVyYXRvcigp
KToKKyAgICAgICAgKEpTQzo6VW53aW5kRnVuY3Rvcjo6b3BlcmF0b3IoKSk6CisgICAgICAgICog
aW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaDoKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnBy
ZXRlcklubGluZXMuaDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1ByZWNpc2VKdW1wVGFyZ2V0cy5oLgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6Z2V0T3Bj
b2RlSUQpOgorICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZh
dGVDb21waWxlTWFpblBhc3MpOiBEZWxldGVkLgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAg
ICAgKiBqaXQvSklUT3Bjb2Rlcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9zYXZl
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3Jlc3VtZSk6IERlbGV0ZWQu
CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc206CisgICAgICAgICogcGFy
c2VyL1BhcnNlci5jcHA6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUlu
bmVyKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlR2VuZXJhdG9yRnVu
Y3Rpb25Tb3VyY2VFbGVtZW50cyk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+Ojpj
cmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmg6Cisg
ICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpTTE9X
X1BBVEhfREVDTCk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMu
aDoKKyAgICAgICAgKiBydW50aW1lL0dlbmVyYXRvckZyYW1lLmNwcDogUmVtb3ZlZC4KKyAgICAg
ICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OkdlbmVyYXRvckZyYW1lKTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OmZpbmlzaENyZWF0aW9uKTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OmNyZWF0ZVN0cnVjdHVyZSk6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpjcmVhdGUpOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpHZW5lcmF0b3JGcmFtZTo6c2F2ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkdlbmVyYXRv
ckZyYW1lOjpyZXN1bWUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6
dmlzaXRDaGlsZHJlbik6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9HZW5lcmF0b3JGcmFt
ZS5oOiBSZW1vdmVkLgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6bG9jYWxzKTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OmxvY2FsQXQpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6b2Zmc2V0T2ZMb2NhbHMpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6YWxsb2NhdGlvblNpemVGb3JMb2NhbHMpOiBE
ZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6Vk0p
OiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKyAgICAgICAgKiB0ZXN0cy9zdHJl
c3MvZ2VuZXJhdG9yLWZpYi1mdGwtYW5kLWFycmF5LmpzOiBBZGRlZC4KKyAgICAgICAgKGZpYik6
CisgICAgICAgICogdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLWFuZC1vYmplY3QuanM6
IEFkZGVkLgorICAgICAgICAoZmliKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvZ2VuZXJhdG9y
LWZpYi1mdGwtYW5kLXN0cmluZy5qczogQWRkZWQuCisgICAgICAgIChmaWIpOgorICAgICAgICAq
IHRlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC5qczogQWRkZWQuCisgICAgICAgIChmaWIp
OgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZnJhbWUtZW1wdHkuanM6IEFkZGVk
LgorICAgICAgICAoc2hvdWxkVGhyb3cpOgorICAgICAgICAoc2hvdWxkVGhyb3cuZmliKToKKyAg
ICAgICAgKiB0ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXJlZHVjZWQtc2F2ZS1wb2ludC1wdXQtdG8t
c2NvcGUuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoZ2VuKToKKyAg
ICAgICAgKiB0ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXRyYW5zZmVyLXJlZ2lzdGVyLWJleW9uZC1t
dXRpcGxlLXlpZWxkcy5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgIChn
ZW4pOgorCiAyMDE2LTA3LTIwICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29t
PgogCiAgICAgICAgIFtFUzddIEludHJvZHVjZSBleHBvbmVudGlhdGlvbiBleHByZXNzaW9uCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmlu
ZGV4IDFjMjlhZDhmOTA2NzIxN2QwOWMxYjQ0NzVmYjhjOGJlMTNlYzY3ZTMuLjJlY2QxMmY0ZjJk
OWEyOWM2YjUyMjdhYTY5MzE2NmY4NDFjZTFmY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTYt
MDctMjEgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAg
W0RGR11bRlRMXSBJbXBsZW1lbnQgRVM2IEdlbmVyYXRvcnMgaW4gREZHIC8gRlRMCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTI3MjMKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9GYXN0Qml0VmVj
dG9yLmg6CisgICAgICAgIChXVEY6OkZhc3RCaXRWZWN0b3I6OkZhc3RCaXRWZWN0b3IpOgorCiAy
MDE2LTA3LTIwICBSYWplZXYgTWlzcmEgIDxyYWplZXZtaXNyYWZvcmFwcGxlQGdtYWlsLmNvbT4K
IAogICAgICAgICBSZW1vdmUgdW5uZWNlc3NhcnkgaWYgY2hlY2sgZnJvbSBQYXJraW5nTG90LmNw
cApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDZmZTBhNWZlMGNjY2VhYTY4
YmUwNjBiMDdmM2NjZmI3ZDk1NzNhOTIuLjY4YjIyYTc4MmY3ZmQ1NTZmOGY4NDM1NmM3YzJkNWFk
NzE5YjRhMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4
dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTE3OSw2ICsx
NzksOCBAQCBzZXQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIGJ5dGVjb2RlL0FycmF5QWxs
b2NhdGlvblByb2ZpbGUuY3BwCiAgICAgYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmNwcAogICAgIGJ5
dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5jcHAKKyAgICBieXRlY29kZS9CeXRlY29kZUdlbmVy
YXRvcmlmaWNhdGlvbi5jcHAKKyAgICBieXRlY29kZS9CeXRlY29kZU1vZGlmaWNhdGlvblNldC5j
cHAKICAgICBieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmNwcAogICAgIGJ5dGVj
b2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAKICAgICBieXRlY29kZS9DYWxsRWRnZS5j
cHAKQEAgLTY1Nyw3ICs2NTksNiBAQCBzZXQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIHJ1
bnRpbWUvRnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlLmNwcAogICAgIHJ1bnRpbWUvRnVuY3Rpb25Q
cm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9GdW5jdGlvblJhcmVEYXRhLmNwcAotICAgIHJ1bnRp
bWUvR2VuZXJhdG9yRnJhbWUuY3BwCiAgICAgcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvbkNvbnN0
cnVjdG9yLmNwcAogICAgIHJ1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3BwCiAg
ICAgcnVudGltZS9HZW5lcmF0b3JQcm90b3R5cGUuY3BwCkBAIC05NzIsNiArOTczLDEwIEBAIGFk
ZF9jdXN0b21fY29tbWFuZCgKICAgICBDT01NQU5EICR7UFlUSE9OX0VYRUNVVEFCTEV9ICR7SkFW
QVNDUklQVENPUkVfRElSfS9nZW5lcmF0ZS1ieXRlY29kZS1maWxlcyAtLWJ5dGVjb2Rlc19oICR7
REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vQnl0ZWNvZGVzLmggLS1pbml0X2J5
dGVjb2Rlc19hc20gJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9Jbml0Qnl0
ZWNvZGVzLmFzbSAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpz
b24KICAgICBWRVJCQVRJTSkKIAorbGlzdChBUFBFTkQgSmF2YVNjcmlwdENvcmVfSEVBREVSUwor
ICAgICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vQnl0ZWNvZGVzLmgKKykK
KwogYWRkX2N1c3RvbV9jb21tYW5kKAogICAgIE9VVFBVVCAke0RFUklWRURfU09VUkNFU19KQVZB
U0NSSVBUQ09SRV9ESVJ9L0xMSW50RGVzaXJlZE9mZnNldHMuaAogICAgIE1BSU5fREVQRU5ERU5D
WSAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vb2ZmbGluZWFzbS9nZW5lcmF0ZV9vZmZzZXRfZXh0cmFj
dG9yLnJiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDZiNzY2OGQ0MDRjM2M0MDk2
ZDk4NGI0NGRjMWYwMGRlMzdmM2E0OGMuLjU2OTA5NjU0OWNmYzFkODc0ZGQyZjYwMGE4MzcyOTQ3
Y2NiNmQ3NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMjUwLDggKzEyNTAs
NiBAQAogCQk3MDlGQjg2QzFBRTMzNUM2MDAzOUQwNjkgLyogV2Vha1NldFByb3RvdHlwZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzA5RkI4NjYxQUUz
MzVDNjAwMzlEMDY5IC8qIFdlYWtTZXRQcm90b3R5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MEIwQTlEMTFBOUI2NjQ2MDAwMTMwNkEgLyog
UnVudGltZUZsYWdzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3MEIwQTlEMDFBOUI2NjIwMDAwMTMwNkEgLyogUnVudGltZUZsYWdzLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzBCNzkxOTExQzAyNEEx
MzAwMjQ4MUUyIC8qIFNvdXJjZUNvZGVLZXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDcwQjc5MThFMUMwMjQ0QzkwMDI0ODFFMiAvKiBTb3VyY2VDb2Rl
S2V5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJ
NzBCNzkxOTIxQzAyNEEyMzAwMjQ4MUUyIC8qIEdlbmVyYXRvckZyYW1lLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwQjc5MTgzMUMwMjQ0MzIwMDI0
ODFFMiAvKiBHZW5lcmF0b3JGcmFtZS5jcHAgKi87IH07Ci0JCTcwQjc5MTkzMUMwMjRBMjgwMDI0
ODFFMiAvKiBHZW5lcmF0b3JGcmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNzBCNzkxODQxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZyYW1l
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzBC
NzkxOTQxQzAyNEEyODAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBCNzkxODUx
QzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwICovOyB9
OwogCQk3MEI3OTE5NTFDMDI0QTI4MDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1
Y3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBC
NzkxODYxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MEI3OTE5
NjFDMDI0QTI4MDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBCNzkxODcxQzAyNDQz
MjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcCAqLzsgfTsKQEAgLTIw
MjcsNiArMjAyNSwxMSBAQAogCQlFMThFM0E1OTBERjkyNzhDMDBEOTBCMzQgLyogVk0uY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTE4RTNBNTcwREY5
Mjc4QzAwRDkwQjM0IC8qIFZNLmNwcCAqLzsgfTsKIAkJRTMxOENCQzAxQjhBRUY1MTAwQTI5MjlE
IC8qIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMThDQkJFMUI4QUVGNTEwMEEyOTI5RCAvKiBKU01vZHVs
ZU5hbWVzcGFjZU9iamVjdC5jcHAgKi87IH07CiAJCUUzMThDQkMxMUI4QUVGNTEwMEEyOTI5RCAv
KiBKU01vZHVsZU5hbWVzcGFjZU9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTMxOENCQkYxQjhBRUY1MTAwQTI5MjlEIC8qIEpTTW9kdWxlTmFt
ZXNwYWNlT2JqZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJRTMyOERBRTcxRDM4RDAwNDAwMUEyNTI5IC8qIEJ5dGVjb2RlR2VuZXJhdG9yaWZp
Y2F0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUzRDI2NDI2MUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5j
cHAgKi87IH07CisJCUUzMjhEQUU4MUQzOEQwMDUwMDFBMjUyOSAvKiBCeXRlY29kZUdlbmVyYXRv
cmlmaWNhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTNEMjY0MjcxRDM4QzA0MjAwMEJFMTc0IC8qIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9u
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTMy
OERBRTkxRDM4RDAwNTAwMUEyNTI5IC8qIEJ5dGVjb2RlR3JhcGguaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzRDI2NDI4MUQzOEMwNDIwMDBCRTE3NCAv
KiBCeXRlY29kZUdyYXBoLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJRTMyOERBRUExRDM4RDAwNTAwMUEyNTI5IC8qIEJ5dGVjb2RlTW9kaWZpY2F0
aW9uU2V0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUzRDI2NDI5MUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRlY29kZU1vZGlmaWNhdGlvblNldC5jcHAg
Ki87IH07CisJCUUzMjhEQUVCMUQzOEQwMDUwMDFBMjUyOSAvKiBCeXRlY29kZU1vZGlmaWNhdGlv
blNldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNE
MjY0MkExRDM4QzA0MjAwMEJFMTc0IC8qIEJ5dGVjb2RlTW9kaWZpY2F0aW9uU2V0LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTMzNjM3QTUxQjYz
MjIwMjAwRUUwODQwIC8qIFJlZmxlY3RPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMzNjM3QTMxQjYzMjIwMjAwRUUwODQwIC8qIFJlZmxl
Y3RPYmplY3QuY3BwICovOyB9OwogCQlFMzM2MzdBNjFCNjMyMjAyMDBFRTA4NDAgLyogUmVmbGVj
dE9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTMzNjM3QTQxQjYzMjIwMjAwRUUwODQwIC8qIFJlZmxlY3RPYmplY3QuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzNCM0UyNjFCN0FCRDc1MDA0
OERCMkUgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0Lmx1dC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMzQjNFMjUxQjdBQkQ3NTAwNDhE
QjJFIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5sdXQuaCAqLzsgfTsKQEAgLTIw
NTEsNiArMjA1NCw3IEBACiAJCUUzNzk0RTc1MUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFs
eXplci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
Mzc5NEU3MzFCNzdFQjk3MDA1NTQzQUUgLyogTW9kdWxlQW5hbHl6ZXIuY3BwICovOyB9OwogCQlF
Mzc5NEU3NjFCNzdFQjk3MDA1NTQzQUUgLyogTW9kdWxlQW5hbHl6ZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNzk0RTc0MUI3N0VCOTcwMDU1NDNB
RSAvKiBNb2R1bGVBbmFseXplci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUUzOTYzQ0VFMUI3M0Y3NTAwMEVCNENFNSAvKiBOb2Rlc0FuYWx5emVN
b2R1bGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTM5NjNDRUMxQjczRjc1MDAwRUI0Q0U1IC8qIE5vZGVzQW5hbHl6ZU1vZHVsZS5jcHAgKi87IH07
CisJCUUzOUQ0NUY1MUQzOTAwNTYwMEIzQjM3NyAvKiBJbnRlcnByZXRlcklubGluZXMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOUQ5RDg0MUQzOTAw
MDYwMDY2NzI4MiAvKiBJbnRlcnByZXRlcklubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzlEQTRBNjFCN0U4QjdDMDA4NEYzM0EgLyog
SlNNb2R1bGVSZWNvcmQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTM5REE0QTQxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmNwcCAq
LzsgfTsKIAkJRTM5REE0QTcxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzlEQTRBNTFCN0U4
QjdDMDA4NEYzM0EgLyogSlNNb2R1bGVSZWNvcmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFM0QyMzlDODFCODI5QzFDMDBCQkVGNjcgLyogSlNN
b2R1bGVFbnZpcm9ubWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFM0QyMzlDNjFCODI5QzFDMDBCQkVGNjcgLyogSlNNb2R1bGVFbnZpcm9ubWVu
dC5jcHAgKi87IH07CkBAIC0zNDQ4LDggKzM0NTIsNiBAQAogCQk3MDlGQjg2NTFBRTMzNUM2MDAz
OUQwNjkgLyogV2Vha1NldFByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBXZWFrU2V0UHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNzA5RkI4NjYxQUUzMzVDNjAwMzlEMDY5IC8qIFdlYWtTZXRQcm90b3R5cGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vha1NldFByb3RvdHlwZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3MEIwQTlEMDFBOUI2NjIwMDAwMTMwNkEgLyogUnVudGlt
ZUZsYWdzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJ1bnRpbWVGbGFncy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3MEI3OTE4MzFDMDI0NDMyMDAyNDgxRTIg
LyogR2VuZXJhdG9yRnJhbWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gR2VuZXJhdG9yRnJhbWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3MEI3
OTE4NDFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnJhbWUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gR2VuZXJhdG9yRnJhbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNzBCNzkxODUxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uQ29u
c3RydWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR2VuZXJh
dG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTcwQjc5MTg2MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9y
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdlbmVyYXRvckZ1bmN0aW9uQ29u
c3RydWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzBCNzkxODcxQzAyNDQz
MjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQyOTIsMTAgKzQyOTQsMTYgQEAKIAkJRTM3
OTRFNzMxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1vZHVsZUFuYWx5emVyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRTM3OTRFNzQxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5
emVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vZHVsZUFuYWx5emVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOTYzQ0VDMUI3M0Y3NTAwMEVCNENFNSAv
KiBOb2Rlc0FuYWx5emVNb2R1bGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gTm9kZXNBbmFseXplTW9kdWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJRTM5RDlEODQxRDM5MDAwNjAwNjY3MjgyIC8qIEludGVycHJldGVySW5saW5lcy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRlcnByZXRlcklubGluZXMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM5REE0QTQxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9k
dWxlUmVjb3JkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTW9k
dWxlUmVjb3JkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM5REE0QTUxQjdF
OEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEpTTW9kdWxlUmVjb3JkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUUzRDIzOUM2MUI4MjlDMUMwMEJCRUY2NyAvKiBKU01vZHVsZUVudmlyb25tZW50LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTW9kdWxlRW52aXJvbm1lbnQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0QyMzlDNzFCODI5QzFDMDBCQkVGNjcg
LyogSlNNb2R1bGVFbnZpcm9ubWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBKU01vZHVsZUVudmlyb25tZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUz
RDI2NDI2MUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCeXRlY29kZUdlbmVyYXRvcmlm
aWNhdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzRDI2NDI3MUQzOEMw
NDIwMDBCRTE3NCAvKiBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlFM0QyNjQyODFEMzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNv
ZGVHcmFwaC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCeXRlY29kZUdyYXBo
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzRDI2NDI5MUQzOEMwNDIwMDBCRTE3
NCAvKiBCeXRlY29kZU1vZGlmaWNhdGlvblNldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBCeXRlY29kZU1vZGlmaWNhdGlvblNldC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUUzRDI2NDJBMUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRlY29kZU1vZGlm
aWNhdGlvblNldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCeXRlY29kZU1v
ZGlmaWNhdGlvblNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0VGODg3MjFC
NjZERjIzMDAzRjI2Q0IgLyogSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNFRjg4NzMxQjY2REYyMzAwM0YyNkNCIC8qIEpT
UHJvcGVydHlOYW1lSXRlcmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlF
NDlEQzE0OTEyRUYyNjFBMDAxODRBMUYgLyogU291cmNlUHJvdmlkZXJDYWNoZUl0ZW0uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU291cmNlUHJvdmlkZXJDYWNoZUl0ZW0uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUwMTEsNiArNTAxOSw3IEBACiAJCTE0MjlE
NzdBMEVEMjBENzMwMEI4OTYxOSAvKiBpbnRlcnByZXRlciAqLyA9IHsKIAkJCWlzYSA9IFBCWEdy
b3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJRTM5RDlEODQxRDM5MDAwNjAwNjY3MjgyIC8qIElu
dGVycHJldGVySW5saW5lcy5oICovLAogCQkJCTBGNTVGMEYxMTREMTA2MzYwMEFDNzY0OSAvKiBB
YnN0cmFjdFBDLmNwcCAqLywKIAkJCQkwRjU1RjBGMjE0RDEwNjM2MDBBQzc2NDkgLyogQWJzdHJh
Y3RQQy5oICovLAogCQkJCTE0MjlEODVCMEVEMjE4RTkwMEI4OTYxOSAvKiBDTG9vcFN0YWNrLmNw
cCAqLywKQEAgLTU2ODIsOCArNTY5MSw2IEBACiAJCQkJRjY5MkE4NUQwMjU1NTk3RDAxRkY2MEY3
IC8qIEZ1bmN0aW9uUHJvdG90eXBlLmggKi8sCiAJCQkJNjJEMkQzOEQxQURGMTAzRjAwMDIwNkMx
IC8qIEZ1bmN0aW9uUmFyZURhdGEuY3BwICovLAogCQkJCTYyRDJEMzhFMUFERjEwM0YwMDAyMDZD
MSAvKiBGdW5jdGlvblJhcmVEYXRhLmggKi8sCi0JCQkJNzBCNzkxODMxQzAyNDQzMjAwMjQ4MUUy
IC8qIEdlbmVyYXRvckZyYW1lLmNwcCAqLywKLQkJCQk3MEI3OTE4NDFDMDI0NDMyMDAyNDgxRTIg
LyogR2VuZXJhdG9yRnJhbWUuaCAqLywKIAkJCQk3MEI3OTE4NTFDMDI0NDMyMDAyNDgxRTIgLyog
R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAgKi8sCiAJCQkJNzBCNzkxODYxQzAyNDQz
MjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaCAqLywKIAkJCQk3MEI3
OTE4NzFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3BwICov
LApAQCAtNjU2NSw2ICs2NTcyLDExIEBACiAJCTk2OUEwNzhGMEVEMUQzQUUwMEYxRjY4MSAvKiBi
eXRlY29kZSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJ
RTNEMjY0MjYxRDM4QzA0MjAwMEJFMTc0IC8qIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNw
cCAqLywKKwkJCQlFM0QyNjQyNzFEMzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNvZGVHZW5lcmF0b3Jp
ZmljYXRpb24uaCAqLywKKwkJCQlFM0QyNjQyODFEMzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNvZGVH
cmFwaC5oICovLAorCQkJCUUzRDI2NDI5MUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRlY29kZU1vZGlm
aWNhdGlvblNldC5jcHAgKi8sCisJCQkJRTNEMjY0MkExRDM4QzA0MjAwMEJFMTc0IC8qIEJ5dGVj
b2RlTW9kaWZpY2F0aW9uU2V0LmggKi8sCiAJCQkJNTM3MEI0RjMxQkYyNUVBMjAwNUM0MEZDIC8q
IEFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2UuY3BwICovLAogCQkJ
CTUzNzBCNEY0MUJGMjVFQTIwMDVDNDBGQyAvKiBBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1
ZVdhdGNocG9pbnRCYXNlLmggKi8sCiAJCQkJMEY4MzM1QjQxNjM5QzFFMzAwMTQ0M0I1IC8qIEFy
cmF5QWxsb2NhdGlvblByb2ZpbGUuY3BwICovLApAQCAtNzExOCw2ICs3MTMwLDcgQEAKIAkJCQkw
RkVDODUyRDFCREFDREFDMDA4MEZGNzQgLyogQjNQcm9jZWR1cmVJbmxpbmVzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRkVDODVCRDFCRTE0NjJGMDA4MEZGNzQgLyogQjNSZWR1Y2VTdHJlbmd0aC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQzg1MzExQkRBQ0RBQzAwODBGRjc0IC8qIEIzU3RhY2tt
YXBTcGVjaWFsLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzI4REFFODFEMzhEMDA1MDAxQTI1Mjkg
LyogQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUM4
NTM1MUJEQUNEQUMwMDgwRkY3NCAvKiBCM1Nsb3RCYXNlVmFsdWUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGRUM4NTM2MUJEQUNEQUMwMDgwRkY3NCAvKiBCM1N1Y2Nlc3NvckNvbGxlY3Rpb24uaCBp
biBIZWFkZXJzICovLAogCQkJCTBGRUM4NTM4MUJEQUNEQUMwMDgwRkY3NCAvKiBCM1N3aXRjaENh
c2UuaCBpbiBIZWFkZXJzICovLApAQCAtNzM4MCw3ICs3MzkzLDYgQEAKIAkJCQlBNzM3ODEwRTE3
OTlFQTJFMDA4MTc1MzMgLyogREZHTmF0dXJhbExvb3BzLmggaW4gSGVhZGVycyAqLywKIAkJCQk4
NkVDQTNFQTEzMkRFRjFDMDAyQjJBRDcgLyogREZHTm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEZGQjkyMUIxNkQwMkYwMTAwNTVBNURCIC8qIERGR05vZGVBbGxvY2F0b3IuaCBpbiBIZWFkZXJz
ICovLAotCQkJCTcwQjc5MTkzMUMwMjRBMjgwMDI0ODFFMiAvKiBHZW5lcmF0b3JGcmFtZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEZBNTgxQkIxNTBFOTUzMDAwQjlBMkQ5IC8qIERGR05vZGVGbGFn
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYzMDBCNzgxOEFCMDUxMTAwQTZENzJFIC8qIERGR05v
ZGVPcmlnaW4uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQTU4MUJDMTUwRTk1MzAwMEI5QTJEOSAv
KiBERkdOb2RlVHlwZS5oIGluIEhlYWRlcnMgKi8sCkBAIC03Mzk1LDYgKzc0MDcsNyBAQAogCQkJ
CTBGRDhBMzI2MTdENTFGNTcwMENBMkM0MCAvKiBERkdPU1JFbnRyeXBvaW50Q3JlYXRpb25QaGFz
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDMDk3NkExNDY4QTZGNzAwQ0YyNDQyIC8qIERGR09T
UkV4aXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjM1QkVDMTcxNzhFNzMwMDY5MEM3RiAvKiBE
RkdPU1JFeGl0QmFzZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM5RDQ1RjUxRDM5MDA1NjAwQjNC
Mzc3IC8qIEludGVycHJldGVySW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGQjkyMUMx
NkQwMkYxMTAwNTVBNURCIC8qIERGR09TUkV4aXRDb21waWxhdGlvbkluZm8uaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGQzA5NzcxMTQ2OTNBRjUwMENGMjQ0MiAvKiBERkdPU1JFeGl0Q29tcGlsZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGNzAyNUFBMTcxNEIwRkMwMDM4MkMwRSAvKiBERkdPU1JF
eGl0Q29tcGlsZXJDb21tb24uaCBpbiBIZWFkZXJzICovLApAQCAtNzY1NCw2ICs3NjY3LDcgQEAK
IAkJCQlFMzNCM0UyNjFCN0FCRDc1MDA0OERCMkUgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
T2JqZWN0Lmx1dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTUzMjQzOEMxODU2ODMzNTAwMkVENjky
IC8qIEluc3BlY3RvclByb3RvY29sT2JqZWN0cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU1RDkz
QUMxODUxNEY3OTAwNDAwREVEIC8qIEluc3BlY3RvclByb3RvY29sVHlwZXMuaCBpbiBIZWFkZXJz
ICovLAorCQkJCUUzMjhEQUVCMUQzOEQwMDUwMDFBMjUyOSAvKiBCeXRlY29kZU1vZGlmaWNhdGlv
blNldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTUwRTRCNjIxODgwOURENTAwNjhBNDZEIC8qIElu
c3BlY3RvclJ1bnRpbWVBZ2VudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU5M0NGODMxODQwMzc3
MTAwQkZDRTI3IC8qIEluc3BlY3RvclZhbHVlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTY5QTA3
OTkwRUQxRDNBRTAwRjFGNjgxIC8qIEluc3RydWN0aW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTc3
ODIsNiArNzc5Niw3IEBACiAJCQkJRTMzRjUwODExQjg0MjlBNDAwNDEzODU2IC8qIEpTSW50ZXJu
YWxQcm9taXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjYxODMyQTFDNDVCRjA3MDA3MjQ1MEIg
LyogQWlyQ0NhbGxpbmdDb252ZW50aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMzNGNTA3OTFC
ODQyMjU3MDA0MTM4NTYgLyogSlNJbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvci5oIGluIEhlYWRl
cnMgKi8sCisJCQkJRTMyOERBRTkxRDM4RDAwNTAwMUEyNTI5IC8qIEJ5dGVjb2RlR3JhcGguaCBp
biBIZWFkZXJzICovLAogCQkJCUUzM0Y1MDg3MUI4NDQ5RUYwMDQxMzg1NiAvKiBKU0ludGVybmFs
UHJvbWlzZUNvbnN0cnVjdG9yLmx1dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTMzRjUwODUxQjg0
MzdBMDAwNDEzODU2IC8qIEpTSW50ZXJuYWxQcm9taXNlRGVmZXJyZWQuaCBpbiBIZWFkZXJzICov
LAogCQkJCUUzM0Y1MDc1MUI4NDIxQzAwMDQxMzg1NiAvKiBKU0ludGVybmFsUHJvbWlzZVByb3Rv
dHlwZS5oIGluIEhlYWRlcnMgKi8sCkBAIC04NzIzLDYgKzg3MzgsNyBAQAogCQkJCTE0N0YzOUJE
MTA3RUMzNzYwMDQyN0E0OCAvKiBBcmdMaXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNzQz
QkFBMTZCODgyNDkwMDlGOTI3NyAvKiBBUk02NERpc2Fzc2VtYmxlci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk4NkQzQjJDMzEwMTU2QkRFMDAyODY1RTcgLyogQVJNQXNzZW1ibGVyLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCUUzMjhEQUU3MUQzOEQwMDQwMDFBMjUyOSAvKiBCeXRlY29kZUdlbmVy
YXRvcmlmaWNhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2NUMwMjg1MDE3MTc5NUUyMDAz
NTFFMzUgLyogQVJNdjdEaXNhc3NlbWJsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNjVDMDI4
NUMxNzE3OTY2ODAwMzUxRTM1IC8qIEFSTXY3RE9wY29kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkwRjgzMzVCNzE2MzlDMUU2MDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAg
aW4gU291cmNlcyAqLywKQEAgLTkwNTcsNiArOTA3Myw3IEBACiAJCQkJMEYyNUYxQjExODE2MzVG
MzAwNTIyRjM5IC8qIEZUTFNsb3dQYXRoQ2FsbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjMz
OERGMTFCRTkzQUQxMDAxM0M4OEYgLyogQjNTdGFja21hcFZhbHVlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGMjVGMUIzMTgxNjM1RjMwMDUyMkYzOSAvKiBGVExTbG93UGF0aENhbGxLZXkuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJRTMyOERBRUExRDM4RDAwNTAwMUEyNTI5IC8qIEJ5dGVjb2Rl
TW9kaWZpY2F0aW9uU2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQzMTlEQTAzMUMxQkU0MEEw
MDFEMjYwQiAvKiBCM0xvd2VyTWFjcm9zQWZ0ZXJPcHRpbWl6YXRpb25zLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTBGRUEwQTE2MTcwNkJCOTAwMEJCNzIyQyAvKiBGVExTdGF0ZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkwRjIzNUJFMTE3MTc4RTFDMDA2OTBDN0YgLyogRlRMVGh1bmtzLmNwcCBp
biBTb3VyY2VzICovLApAQCAtOTQ2MCw3ICs5NDc3LDYgQEAKIAkJCQk3OUVFMEJGRjFCNEFGQjg1
MDAwMzg1QzkgLyogVmFyaWFibGVFbnZpcm9ubWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkw
RjZDNzM1MDFBQzlGOTlGMDBCRTE2ODIgLyogVmFyaWFibGVXcml0ZUZpcmVEZXRhaWwuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMEZFMDUwMkMxQUE5MDk1NjAwRDMzQjMzIC8qIFZhck9mZnNldC5j
cHAgaW4gU291cmNlcyAqLywKLQkJCQk3MEI3OTE5MjFDMDI0QTIzMDAyNDgxRTIgLyogR2VuZXJh
dG9yRnJhbWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyMEMyNTkxQTgwMTNBQjAwREEzMjI5
IC8qIFZpcnR1YWxSZWdpc3Rlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMThFM0E1OTBERjky
NzhDMDBEOTBCMzQgLyogVk0uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkU1OTMyQTcxODNDNUEy
NjAwQTFFQ0NDIC8qIFZNRW50cnlTY29wZS5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9HZW5lcmF0b3JQcm90b3R5cGUuanMgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvR2VuZXJhdG9yUHJvdG90eXBlLmpzCmluZGV4
IDNjMTQwNjg3ZGZjN2UwMGVmZTkxYWU4MGIyYWM2NzZmYTliZjQ4ZjQuLjQ5OWRiZDM5MmU4MzEz
ZGNkZDg2ZWM4YzE2MDU2OWQ3ZDZmNTQ5YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9idWlsdGlucy9HZW5lcmF0b3JQcm90b3R5cGUuanMKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J1aWx0aW5zL0dlbmVyYXRvclByb3RvdHlwZS5qcwpAQCAtNTEsNyArNTEsNyBAQCBm
dW5jdGlvbiBnZW5lcmF0b3JSZXN1bWUoZ2VuZXJhdG9yLCBzZW50VmFsdWUsIHJlc3VtZU1vZGUp
CiAgICAgfSBlbHNlIHsKICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgIGdlbmVyYXRvci5AZ2Vu
ZXJhdG9yU3RhdGUgPSBAR2VuZXJhdG9yU3RhdGVFeGVjdXRpbmc7Ci0gICAgICAgICAgICB2YWx1
ZSA9IGdlbmVyYXRvci5AZ2VuZXJhdG9yTmV4dC5AY2FsbChnZW5lcmF0b3IuQGdlbmVyYXRvclRo
aXMsIGdlbmVyYXRvciwgc3RhdGUsIHNlbnRWYWx1ZSwgcmVzdW1lTW9kZSk7CisgICAgICAgICAg
ICB2YWx1ZSA9IGdlbmVyYXRvci5AZ2VuZXJhdG9yTmV4dC5AY2FsbChnZW5lcmF0b3IuQGdlbmVy
YXRvclRoaXMsIGdlbmVyYXRvciwgc3RhdGUsIHNlbnRWYWx1ZSwgcmVzdW1lTW9kZSwgZ2VuZXJh
dG9yLkBnZW5lcmF0b3JGcmFtZSk7CiAgICAgICAgICAgICBpZiAoZ2VuZXJhdG9yLkBnZW5lcmF0
b3JTdGF0ZSA9PT0gQEdlbmVyYXRvclN0YXRlRXhlY3V0aW5nKSB7CiAgICAgICAgICAgICAgICAg
Z2VuZXJhdG9yLkBnZW5lcmF0b3JTdGF0ZSA9IEBHZW5lcmF0b3JTdGF0ZUNvbXBsZXRlZDsKICAg
ICAgICAgICAgICAgICBkb25lID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5jcHAKaW5kZXggN2YxN2MwZWYxMGI0MzNm
YWM4ZjU4Y2IzYjljYTVkNGQwMTViYmEwOC4uNjI1NGY5MDZiMmJkOTA0ZDFkOTNmYTkwMjRjYzkz
YTkwNzQ2OGI1ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlQmFzaWNCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlQmFzaWNCbG9jay5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJCeXRl
Y29kZUJhc2ljQmxvY2suaCIKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIklu
dGVycHJldGVySW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJQ
cmVjaXNlSnVtcFRhcmdldHMuaCIKIApAQCAtMTA1LDE1ICsxMDYsMjEgQEAgc3RhdGljIGJvb2wg
aXNKdW1wVGFyZ2V0KE9wY29kZUlEIG9wY29kZUlELCBjb25zdCBWZWN0b3I8dW5zaWduZWQsIDMy
PiYganVtcFRhcmcKICAgICByZXR1cm4gc3RkOjpiaW5hcnlfc2VhcmNoKGp1bXBUYXJnZXRzLmJl
Z2luKCksIGp1bXBUYXJnZXRzLmVuZCgpLCBieXRlY29kZU9mZnNldCk7CiB9CiAKLXN0YXRpYyB2
b2lkIGxpbmtCbG9ja3MoQnl0ZWNvZGVCYXNpY0Jsb2NrKiBwcmVkZWNlc3NvciwgQnl0ZWNvZGVC
YXNpY0Jsb2NrKiBzdWNjZXNzb3IpCi17Ci0gICAgcHJlZGVjZXNzb3ItPmFkZFN1Y2Nlc3Nvcihz
dWNjZXNzb3IpOwotfQotCi12b2lkIGNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzKENvZGVCbG9j
ayogY29kZUJsb2NrLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+
JiBiYXNpY0Jsb2NrcykKK3RlbXBsYXRlPHR5cGVuYW1lIEJsb2NrLCB0eXBlbmFtZSBJbnN0cnVj
dGlvbj4KK3ZvaWQgQnl0ZWNvZGVCYXNpY0Jsb2NrOjpjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2Nr
c0ludGVybmFsKEJsb2NrKiBjb2RlQmxvY2ssIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdp
biwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCwgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRl
Y29kZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9ja3MpCiB7CiAgICAgVmVjdG9yPHVuc2lnbmVkLCAz
Mj4ganVtcFRhcmdldHM7Ci0gICAgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhjb2RlQmxvY2ss
IGp1bXBUYXJnZXRzKTsKKyAgICBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKGNvZGVCbG9jaywg
aW5zdHJ1Y3Rpb25zQmVnaW4sIGluc3RydWN0aW9uQ291bnQsIGp1bXBUYXJnZXRzKTsKKworICAg
IGF1dG8gYXBwZW5kQmxvY2sgPSBbJl0gKHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxv
Y2s+JiYgYmxvY2spIHsKKyAgICAgICAgYmxvY2stPm1faW5kZXggPSBiYXNpY0Jsb2Nrcy5zaXpl
KCk7CisgICAgICAgIGJhc2ljQmxvY2tzLmFwcGVuZChXVEZNb3ZlKGJsb2NrKSk7CisgICAgfTsK
KworICAgIGF1dG8gbGlua0Jsb2NrcyA9IFsmXSAoQnl0ZWNvZGVCYXNpY0Jsb2NrKiBwcmVkZWNl
c3NvciwgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBzdWNjZXNzb3IpIHsKKyAgICAgICAgcHJlZGVjZXNz
b3ItPmFkZFN1Y2Nlc3NvcihzdWNjZXNzb3IpOworICAgICAgICBzdWNjZXNzb3ItPmFkZFByZWRl
Y2Vzc29yKHByZWRlY2Vzc29yKTsKKyAgICB9OwogCiAgICAgLy8gQ3JlYXRlIHRoZSBlbnRyeSBh
bmQgZXhpdCBiYXNpYyBibG9ja3MuCiAgICAgYmFzaWNCbG9ja3MucmVzZXJ2ZUNhcGFjaXR5KGp1
bXBUYXJnZXRzLnNpemUoKSArIDIpOwpAQCAtMTIyLDE5ICsxMjksMTcgQEAgdm9pZCBjb21wdXRl
Qnl0ZWNvZGVCYXNpY0Jsb2NrcyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgVmVjdG9yPHN0ZDo6dW5p
cXVlX3B0cjxCeXQKICAgICBhdXRvIGZpcnN0QmxvY2sgPSBzdGQ6Om1ha2VfdW5pcXVlPEJ5dGVj
b2RlQmFzaWNCbG9jaz4oMCwgMCk7CiAgICAgbGlua0Jsb2NrcyhlbnRyeS5nZXQoKSwgZmlyc3RC
bG9jay5nZXQoKSk7CiAKLSAgICBiYXNpY0Jsb2Nrcy5hcHBlbmQoV1RGTW92ZShlbnRyeSkpOwor
ICAgIGFwcGVuZEJsb2NrKFdURk1vdmUoZW50cnkpKTsKICAgICBCeXRlY29kZUJhc2ljQmxvY2sq
IGN1cnJlbnQgPSBmaXJzdEJsb2NrLmdldCgpOwotICAgIGJhc2ljQmxvY2tzLmFwcGVuZChXVEZN
b3ZlKGZpcnN0QmxvY2spKTsKKyAgICBhcHBlbmRCbG9jayhXVEZNb3ZlKGZpcnN0QmxvY2spKTsK
IAogICAgIGF1dG8gZXhpdCA9IHN0ZDo6bWFrZV91bmlxdWU8Qnl0ZWNvZGVCYXNpY0Jsb2NrPihC
eXRlY29kZUJhc2ljQmxvY2s6OkV4aXRCbG9jayk7CiAKICAgICBib29sIG5leHRJbnN0cnVjdGlv
bklzTGVhZGVyID0gZmFsc2U7CiAKICAgICBJbnRlcnByZXRlciogaW50ZXJwcmV0ZXIgPSBjb2Rl
QmxvY2stPnZtKCktPmludGVycHJldGVyOwotICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNC
ZWdpbiA9IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsKLSAgICB1bnNpZ25lZCBp
bnN0cnVjdGlvbkNvdW50ID0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5zaXplKCk7CiAgICAg
Zm9yICh1bnNpZ25lZCBieXRlY29kZU9mZnNldCA9IDA7IGJ5dGVjb2RlT2Zmc2V0IDwgaW5zdHJ1
Y3Rpb25Db3VudDspIHsKLSAgICAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnRlcnByZXRlci0+
Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25zQmVnaW5bYnl0ZWNvZGVPZmZzZXRdLnUub3Bjb2RlKTsK
KyAgICAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoaW5z
dHJ1Y3Rpb25zQmVnaW5bYnl0ZWNvZGVPZmZzZXRdKTsKICAgICAgICAgdW5zaWduZWQgb3Bjb2Rl
TGVuZ3RoID0gb3Bjb2RlTGVuZ3Roc1tvcGNvZGVJRF07CiAKICAgICAgICAgYm9vbCBjcmVhdGVk
QmxvY2sgPSBmYWxzZTsKQEAgLTE0Miw3ICsxNDcsNyBAQCB2b2lkIGNvbXB1dGVCeXRlY29kZUJh
c2ljQmxvY2tzKENvZGVCbG9jayogY29kZUJsb2NrLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5
dAogICAgICAgICBpZiAoaXNKdW1wVGFyZ2V0KG9wY29kZUlELCBqdW1wVGFyZ2V0cywgYnl0ZWNv
ZGVPZmZzZXQpIHx8IG5leHRJbnN0cnVjdGlvbklzTGVhZGVyKSB7CiAgICAgICAgICAgICBhdXRv
IG5ld0Jsb2NrID0gc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZUJhc2ljQmxvY2s+KGJ5dGVjb2Rl
T2Zmc2V0LCBvcGNvZGVMZW5ndGgpOwogICAgICAgICAgICAgY3VycmVudCA9IG5ld0Jsb2NrLmdl
dCgpOwotICAgICAgICAgICAgYmFzaWNCbG9ja3MuYXBwZW5kKFdURk1vdmUobmV3QmxvY2spKTsK
KyAgICAgICAgICAgIGFwcGVuZEJsb2NrKFdURk1vdmUobmV3QmxvY2spKTsKICAgICAgICAgICAg
IGNyZWF0ZWRCbG9jayA9IHRydWU7CiAgICAgICAgICAgICBuZXh0SW5zdHJ1Y3Rpb25Jc0xlYWRl
ciA9IGZhbHNlOwogICAgICAgICAgICAgYnl0ZWNvZGVPZmZzZXQgKz0gb3Bjb2RlTGVuZ3RoOwpA
QCAtMTY5LDggKzE3NCw3IEBAIHZvaWQgY29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MoQ29kZUJs
b2NrKiBjb2RlQmxvY2ssIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0CiAKICAgICAgICAgYm9v
bCBmYWxsc1Rocm91Z2ggPSB0cnVlOyAKICAgICAgICAgZm9yICh1bnNpZ25lZCBieXRlY29kZU9m
ZnNldCA9IGJsb2NrLT5sZWFkZXJCeXRlY29kZU9mZnNldCgpOyBieXRlY29kZU9mZnNldCA8IGJs
b2NrLT5sZWFkZXJCeXRlY29kZU9mZnNldCgpICsgYmxvY2stPnRvdGFsQnl0ZWNvZGVMZW5ndGgo
KTspIHsKLSAgICAgICAgICAgIGNvbnN0IEluc3RydWN0aW9uJiBjdXJyZW50SW5zdHJ1Y3Rpb24g
PSBpbnN0cnVjdGlvbnNCZWdpbltieXRlY29kZU9mZnNldF07Ci0gICAgICAgICAgICBPcGNvZGVJ
RCBvcGNvZGVJRCA9IGludGVycHJldGVyLT5nZXRPcGNvZGVJRChjdXJyZW50SW5zdHJ1Y3Rpb24u
dS5vcGNvZGUpOworICAgICAgICAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnRlcnByZXRlci0+
Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25zQmVnaW5bYnl0ZWNvZGVPZmZzZXRdKTsKICAgICAgICAg
ICAgIHVuc2lnbmVkIG9wY29kZUxlbmd0aCA9IG9wY29kZUxlbmd0aHNbb3Bjb2RlSURdOwogICAg
ICAgICAgICAgLy8gSWYgd2UgZm91bmQgYSB0ZXJtaW5hbCBieXRlY29kZSwgbGluayB0byB0aGUg
ZXhpdCBibG9jay4KICAgICAgICAgICAgIGlmIChpc1Rlcm1pbmFsKG9wY29kZUlEKSkgewpAQCAt
MTg1LDcgKzE4OSw3IEBAIHZvaWQgY29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MoQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0CiAgICAgICAgICAgICAvLyBi
bG9jayBiZWNhdXNlIHRoZSBmaW5hbGx5IGJsb2NrIHdpbGwgY3JlYXRlIGl0cyBvd24gY2F0Y2gs
IHdoaWNoIHdpbGwgZ2VuZXJhdGUgYSBIYW5kbGVySW5mby4KICAgICAgICAgICAgIGlmIChpc1Ro
cm93KG9wY29kZUlEKSkgewogICAgICAgICAgICAgICAgIEFTU0VSVChieXRlY29kZU9mZnNldCAr
IG9wY29kZUxlbmd0aCA9PSBibG9jay0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKSArIGJsb2NrLT50
b3RhbEJ5dGVjb2RlTGVuZ3RoKCkpOwotICAgICAgICAgICAgICAgIEhhbmRsZXJJbmZvKiBoYW5k
bGVyID0gY29kZUJsb2NrLT5oYW5kbGVyRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQp
OworICAgICAgICAgICAgICAgIGF1dG8qIGhhbmRsZXIgPSBjb2RlQmxvY2stPmhhbmRsZXJGb3JC
eXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCk7CiAgICAgICAgICAgICAgICAgZmFsbHNUaHJv
dWdoID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgaWYgKCFoYW5kbGVyKSB7CiAgICAgICAgICAg
ICAgICAgICAgIGxpbmtCbG9ja3MoYmxvY2ssIGV4aXQuZ2V0KCkpOwpAQCAtMjA1LDcgKzIwOSw3
IEBAIHZvaWQgY29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MoQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0CiAgICAgICAgICAgICBpZiAoaXNCcmFuY2gob3Bj
b2RlSUQpKSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKGJ5dGVjb2RlT2Zmc2V0ICsgb3Bjb2Rl
TGVuZ3RoID09IGJsb2NrLT5sZWFkZXJCeXRlY29kZU9mZnNldCgpICsgYmxvY2stPnRvdGFsQnl0
ZWNvZGVMZW5ndGgoKSk7CiAgICAgICAgICAgICAgICAgVmVjdG9yPHVuc2lnbmVkLCAxPiBieXRl
Y29kZU9mZnNldHNKdW1wZWRUbzsKLSAgICAgICAgICAgICAgICBmaW5kSnVtcFRhcmdldHNGb3JC
eXRlY29kZU9mZnNldChjb2RlQmxvY2ssIGJ5dGVjb2RlT2Zmc2V0LCBieXRlY29kZU9mZnNldHNK
dW1wZWRUbyk7CisgICAgICAgICAgICAgICAgZmluZEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZz
ZXQoY29kZUJsb2NrLCBpbnN0cnVjdGlvbnNCZWdpbiwgYnl0ZWNvZGVPZmZzZXQsIGJ5dGVjb2Rl
T2Zmc2V0c0p1bXBlZFRvKTsKIAogICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBiYXNpY0Jsb2Nrcy5zaXplKCk7IGkrKykgewogICAgICAgICAgICAgICAgICAgICBCeXRl
Y29kZUJhc2ljQmxvY2sqIG90aGVyQmxvY2sgPSBiYXNpY0Jsb2Nrc1tpXS5nZXQoKTsKQEAgLTIy
OSwxMCArMjMzLDIwIEBAIHZvaWQgY29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MoQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0CiAgICAgICAgIH0KICAgICB9
CiAKLSAgICBiYXNpY0Jsb2Nrcy5hcHBlbmQoV1RGTW92ZShleGl0KSk7CisgICAgYXBwZW5kQmxv
Y2soV1RGTW92ZShleGl0KSk7CiAgICAgCiAgICAgZm9yIChhdXRvJiBiYXNpY0Jsb2NrIDogYmFz
aWNCbG9ja3MpCiAgICAgICAgIGJhc2ljQmxvY2stPnNocmlua1RvRml0KCk7CiB9CiAKK3ZvaWQg
Qnl0ZWNvZGVCYXNpY0Jsb2NrOjpjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2NrcyhDb2RlQmxvY2sq
IGNvZGVCbG9jaywgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBpbnN0
cnVjdGlvbkNvdW50LCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+
JiBiYXNpY0Jsb2NrcykKK3sKKyAgICBjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2Nrc0ludGVybmFs
KGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb25zQmVnaW4sIGluc3RydWN0aW9uQ291bnQsIGJhc2ljQmxv
Y2tzKTsKK30KKwordm9pZCBCeXRlY29kZUJhc2ljQmxvY2s6OmNvbXB1dGVCeXRlY29kZUJhc2lj
QmxvY2tzKFVubGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFVubGlua2VkSW5zdHJ1Y3Rpb24q
IGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50LCBWZWN0b3I8c3Rk
Ojp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+JiBiYXNpY0Jsb2NrcykKK3sKKyAgICBC
eXRlY29kZUJhc2ljQmxvY2s6OmNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzSW50ZXJuYWwoY29k
ZUJsb2NrLCBpbnN0cnVjdGlvbnNCZWdpbiwgaW5zdHJ1Y3Rpb25Db3VudCwgYmFzaWNCbG9ja3Mp
OworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suaAppbmRleCBiZDdkM2FlOWJhMzQzZTFiMDcx
NzllOThmMWVlODlkYTY1YmE3ZTIwLi4xMTliZTdjNjYyMzBjOThlYTlkN2ZiMjgwOGNiZjI5NGRj
MWEyYTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVCYXNpY0Jsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVj
b2RlQmFzaWNCbG9jay5oCkBAIC0zNSw2ICszNSw5IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogY2xh
c3MgQ29kZUJsb2NrOworY2xhc3MgVW5saW5rZWRDb2RlQmxvY2s7CitzdHJ1Y3QgSW5zdHJ1Y3Rp
b247CitzdHJ1Y3QgVW5saW5rZWRJbnN0cnVjdGlvbjsKIAogY2xhc3MgQnl0ZWNvZGVCYXNpY0Js
b2NrIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTUwLDI4ICs1MywzOSBAQCBj
bGFzcyBCeXRlY29kZUJhc2ljQmxvY2sgewogICAgIHVuc2lnbmVkIGxlYWRlckJ5dGVjb2RlT2Zm
c2V0KCkgeyByZXR1cm4gbV9sZWFkZXJCeXRlY29kZU9mZnNldDsgfQogICAgIHVuc2lnbmVkIHRv
dGFsQnl0ZWNvZGVMZW5ndGgoKSB7IHJldHVybiBtX3RvdGFsQnl0ZWNvZGVMZW5ndGg7IH0KIAot
ICAgIFZlY3Rvcjx1bnNpZ25lZD4mIGJ5dGVjb2RlT2Zmc2V0cygpIHsgcmV0dXJuIG1fYnl0ZWNv
ZGVPZmZzZXRzOyB9Ci0gICAgdm9pZCBhZGRCeXRlY29kZUxlbmd0aCh1bnNpZ25lZCk7CisgICAg
Y29uc3QgVmVjdG9yPHVuc2lnbmVkPiYgYnl0ZWNvZGVPZmZzZXRzKCkgY29uc3QgeyByZXR1cm4g
bV9ieXRlY29kZU9mZnNldHM7IH0KIAotICAgIFZlY3RvcjxCeXRlY29kZUJhc2ljQmxvY2sqPiYg
c3VjY2Vzc29ycygpIHsgcmV0dXJuIG1fc3VjY2Vzc29yczsgfQotICAgIHZvaWQgYWRkU3VjY2Vz
c29yKEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2spIHsgbV9zdWNjZXNzb3JzLmFwcGVuZChibG9j
ayk7IH0KKyAgICBjb25zdCBWZWN0b3I8Qnl0ZWNvZGVCYXNpY0Jsb2NrKj4mIHN1Y2Nlc3NvcnMo
KSBjb25zdCB7IHJldHVybiBtX3N1Y2Nlc3NvcnM7IH0KKyAgICBjb25zdCBWZWN0b3I8Qnl0ZWNv
ZGVCYXNpY0Jsb2NrKj4mIHByZWRlY2Vzc29ycygpIGNvbnN0IHsgcmV0dXJuIG1fcHJlZGVjZXNz
b3JzOyB9CiAKICAgICBGYXN0Qml0VmVjdG9yJiBpbigpIHsgcmV0dXJuIG1faW47IH0KICAgICBG
YXN0Qml0VmVjdG9yJiBvdXQoKSB7IHJldHVybiBtX291dDsgfQogCisgICAgdW5zaWduZWQgaW5k
ZXgoKSBjb25zdCB7IHJldHVybiBtX2luZGV4OyB9CisKKyAgICBzdGF0aWMgdm9pZCBjb21wdXRl
Qnl0ZWNvZGVCYXNpY0Jsb2NrcyhDb2RlQmxvY2sqLCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25z
QmVnaW4sIHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQsIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8
Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mKTsKKyAgICBzdGF0aWMgdm9pZCBjb21wdXRlQnl0ZWNvZGVC
YXNpY0Jsb2NrcyhVbmxpbmtlZENvZGVCbG9jayosIFVubGlua2VkSW5zdHJ1Y3Rpb24qIGluc3Ry
dWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50LCBWZWN0b3I8c3RkOjp1bmlx
dWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+Jik7CisKIHByaXZhdGU6CisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgQmxvY2ssIHR5cGVuYW1lIEluc3RydWN0aW9uPiBzdGF0aWMgdm9pZCBjb21wdXRl
Qnl0ZWNvZGVCYXNpY0Jsb2Nrc0ludGVybmFsKEJsb2NrKiBjb2RlQmxvY2ssIEluc3RydWN0aW9u
KiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCwgVmVjdG9yPHN0
ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9ja3MpOworCisgICAg
dm9pZCBhZGRTdWNjZXNzb3IoQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaykgeyBtX3N1Y2Nlc3Nv
cnMuYXBwZW5kKGJsb2NrKTsgfQorICAgIHZvaWQgYWRkUHJlZGVjZXNzb3IoQnl0ZWNvZGVCYXNp
Y0Jsb2NrKiBibG9jaykgeyBtX3ByZWRlY2Vzc29ycy5hcHBlbmQoYmxvY2spOyB9CisKKyAgICB2
b2lkIGFkZEJ5dGVjb2RlTGVuZ3RoKHVuc2lnbmVkKTsKKwogICAgIHVuc2lnbmVkIG1fbGVhZGVy
Qnl0ZWNvZGVPZmZzZXQ7CiAgICAgdW5zaWduZWQgbV90b3RhbEJ5dGVjb2RlTGVuZ3RoOworICAg
IHVuc2lnbmVkIG1faW5kZXg7CiAKICAgICBWZWN0b3I8dW5zaWduZWQ+IG1fYnl0ZWNvZGVPZmZz
ZXRzOwogICAgIFZlY3RvcjxCeXRlY29kZUJhc2ljQmxvY2sqPiBtX3N1Y2Nlc3NvcnM7CisgICAg
VmVjdG9yPEJ5dGVjb2RlQmFzaWNCbG9jayo+IG1fcHJlZGVjZXNzb3JzOwogCiAgICAgRmFzdEJp
dFZlY3RvciBtX2luOwogICAgIEZhc3RCaXRWZWN0b3IgbV9vdXQ7CiB9OwogCi12b2lkIGNvbXB1
dGVCeXRlY29kZUJhc2ljQmxvY2tzKENvZGVCbG9jayosIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8
Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mKTsKLQogaW5saW5lIEJ5dGVjb2RlQmFzaWNCbG9jazo6Qnl0
ZWNvZGVCYXNpY0Jsb2NrKHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBsZW5ndGgpCiAgICAgOiBt
X2xlYWRlckJ5dGVjb2RlT2Zmc2V0KHN0YXJ0KQogICAgICwgbV90b3RhbEJ5dGVjb2RlTGVuZ3Ro
KGxlbmd0aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgxM2U1YzNhMGQx
Y2UyMGEyYWEwZDJkNGQxZjg1ZjcwMWM5NzI1OTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwCkBA
IC0wLDAgKzEsNjYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IFl1c3VrZSBTdXp1a2kg
PHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIkJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmgiCisKKyNpbmNsdWRlICJCeXRl
Y29kZUxpdmVuZXNzQW5hbHlzaXNJbmxpbmVzLmgiCisjaW5jbHVkZSAiQnl0ZWNvZGVNb2RpZmlj
YXRpb25TZXQuaCIKKyNpbmNsdWRlICJCeXRlY29kZVVzZURlZi5oIgorI2luY2x1ZGUgIklkZW50
aWZpZXJJbmxpbmVzLmgiCisjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKKyNpbmNsdWRlICJKU0NK
U1ZhbHVlSW5saW5lcy5oIgorI2luY2x1ZGUgIlN0cm9uZ0lubGluZXMuaCIKKyNpbmNsdWRlICJV
bmxpbmtlZENvZGVCbG9jay5oIgorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgorCituYW1lc3Bh
Y2UgSlNDIHsKKworY2xhc3MgQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24geworcHVibGljOgor
ICAgIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uKFVubGlua2VkQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssIFVubGlua2VkQ29kZUJsb2NrOjpVbnBhY2tlZEluc3RydWN0aW9ucyYgaW5zdHJ1Y3Rpb25z
LCBTeW1ib2xUYWJsZSogZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZSwgaW50IGdlbmVyYXRvckZy
YW1lU3ltYm9sVGFibGVJbmRleCkKKyAgICAgICAgOiBtX2dyYXBoKGNvZGVCbG9jaywgaW5zdHJ1
Y3Rpb25zKQorICAgICAgICAsIG1faW5zZXJ0aW9uU2V0KG1fZ3JhcGgpCisgICAgICAgICwgbV9n
ZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlKCpjb2RlQmxvY2stPnZtKCksIGdlbmVyYXRvckZyYW1l
U3ltYm9sVGFibGUpCisgICAgICAgICwgbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlSW5kZXgo
Z2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZUluZGV4KQorICAgIHsKKyAgICAgICAgbV9tZXJnZUJs
b2Nrcy5yZXNpemUobV9ncmFwaC5iYXNpY0Jsb2NrcygpLnNpemUoKSk7CisgICAgICAgIG1fc2F2
ZUJsb2Nrcy5yZXNpemUobV9ncmFwaC5iYXNpY0Jsb2NrcygpLnNpemUoKSk7CisKKyAgICAgICAg
Zm9yIChzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiYgYmxvY2sgOiBtX2dyYXBo
LmJhc2ljQmxvY2tzKCkpIHsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgYnl0ZWNvZGVPZmZz
ZXQgOiBibG9jay0+Ynl0ZWNvZGVPZmZzZXRzKCkpIHsKKyAgICAgICAgICAgICAgICBjb25zdCBV
bmxpbmtlZEluc3RydWN0aW9uKiBwYyA9ICZtX2dyYXBoLmluc3RydWN0aW9ucygpW2J5dGVjb2Rl
T2Zmc2V0XTsKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKHBjLT51Lm9wY29kZSkgeworICAgICAg
ICAgICAgICAgIGNhc2Ugb3Bfc2F2ZTogeworICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBs
aXZlQ2FsbGVlTG9jYWxzSW5kZXggPSBwY1syXS51LmluZGV4OworICAgICAgICAgICAgICAgICAg
ICBpbnQgb2Zmc2V0ID0gcGNbM10udS5vcGVyYW5kOworICAgICAgICAgICAgICAgICAgICBpZiAo
bGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID49IG1feWllbGRzLnNpemUoKSkKKyAgICAgICAgICAgICAg
ICAgICAgICAgIG1feWllbGRzLnJlc2l6ZShsaXZlQ2FsbGVlTG9jYWxzSW5kZXggKyAxKTsKKyAg
ICAgICAgICAgICAgICAgICAgbV95aWVsZHNbbGl2ZUNhbGxlZUxvY2Fsc0luZGV4XS5zYXZlUG9p
bnQgPSBieXRlY29kZU9mZnNldDsKKyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbWVyZ2VQ
b2ludCA9IGJ5dGVjb2RlT2Zmc2V0ICsgb2Zmc2V0OworICAgICAgICAgICAgICAgICAgICBtX3lp
ZWxkc1tsaXZlQ2FsbGVlTG9jYWxzSW5kZXhdLm1lcmdlUG9pbnQgPSBtZXJnZVBvaW50OworICAg
ICAgICAgICAgICAgICAgICBtX21lcmdlQmxvY2tzLnNldChtX2dyYXBoLmZpbmRCYXNpY0Jsb2Nr
Rm9yQnl0ZWNvZGVPZmZzZXQobWVyZ2VQb2ludCktPmluZGV4KCkpOworICAgICAgICAgICAgICAg
ICAgICBtX3NhdmVCbG9ja3Muc2V0KGJsb2NrLT5pbmRleCgpKTsKKyAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgY2FzZSBvcF9y
ZXN1bWU6IHsKKyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0lu
ZGV4ID0gcGNbMl0udS5pbmRleDsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxpdmVDYWxsZWVM
b2NhbHNJbmRleCA+PSBtX3lpZWxkcy5zaXplKCkpCisgICAgICAgICAgICAgICAgICAgICAgICBt
X3lpZWxkcy5yZXNpemUobGl2ZUNhbGxlZUxvY2Fsc0luZGV4ICsgMSk7CisgICAgICAgICAgICAg
ICAgICAgIG1feWllbGRzW2xpdmVDYWxsZWVMb2NhbHNJbmRleF0ucmVzdW1lUG9pbnQgPSBieXRl
Y29kZU9mZnNldDsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAg
fQorCisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisg
ICAgYm9vbCBpc01lcmdlQmxvY2soQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaykKKyAgICB7Cisg
ICAgICAgIHJldHVybiBtX21lcmdlQmxvY2tzLmdldChibG9jay0+aW5kZXgoKSk7CisgICAgfQor
CisgICAgYm9vbCBpc1NhdmVCbG9jayhCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIG1fc2F2ZUJsb2Nrcy5nZXQoYmxvY2stPmluZGV4KCkpOworICAgIH0K
KworICAgIHN0cnVjdCBTdG9yYWdlIHsKKyAgICAgICAgSWRlbnRpZmllciBpZGVudGlmaWVyOwor
ICAgICAgICB1bnNpZ25lZCBpZGVudGlmaWVySW5kZXg7CisgICAgICAgIFNjb3BlT2Zmc2V0IHNj
b3BlT2Zmc2V0OworICAgIH07CisKKyAgICB2b2lkIHJ1bigpOworCisgICAgQnl0ZWNvZGVHcmFw
aDxVbmxpbmtlZENvZGVCbG9jaz4mIGdyYXBoKCkgeyByZXR1cm4gbV9ncmFwaDsgfQorCitwcml2
YXRlOgorICAgIFN0b3JhZ2Ugc3RvcmFnZUZvckdlbmVyYXRvckxvY2FsKHVuc2lnbmVkIGluZGV4
KQorICAgIHsKKyAgICAgICAgLy8gV2UgYXNzaWduIGEgc3ltYm9sIHRvIGEgcmVnaXN0ZXIuIFRo
ZXJlIGlzIG9uZS1vbi1vbmUgY29ycmVzcG9uZGluZyBiZXR3ZWVuIGEgcmVnaXN0ZXIgYW5kIGEg
c3ltYm9sLgorICAgICAgICAvLyBCeSBkb2luZyBzbywgd2UgYWxsb2NhdGUgdGhlIHNwZWNpZmlj
IHN0b3JhZ2UgdG8gc2F2ZSB0aGUgZ2l2ZW4gcmVnaXN0ZXIuCisgICAgICAgIC8vIFRoaXMgYWxs
b3cgdXMgbm90IHRvIHNhdmUgYWxsIHRoZSBsaXZlIHJlZ2lzdGVycyBldmVuIGlmIHRoZSByZWdp
c3RlcnMgYXJlIG5vdCBvdmVyd3JpdHRlbiBmcm9tIHRoZSBwcmV2aW91cyByZXN1bWluZyB0aW1l
LgorICAgICAgICAvLyBJdCBtZWFucyB0aGF0LCB0aGUgcmVnaXN0ZXIgY2FuIGJlIHJldHJpZXZl
ZCBldmVuIGlmIHRoZSBpbW1lZGlhdGUgcHJldmlvdXMgb3Bfc2F2ZSBkb2VzIG5vdCBzYXZlIGl0
LgorCisgICAgICAgIGlmIChtX3N0b3JhZ2VzLnNpemUoKSA8PSBpbmRleCkKKyAgICAgICAgICAg
IG1fc3RvcmFnZXMucmVzaXplKGluZGV4ICsgMSk7CisgICAgICAgIGlmIChPcHRpb25hbDxTdG9y
YWdlPiBzdG9yYWdlID0gbV9zdG9yYWdlc1tpbmRleF0pCisgICAgICAgICAgICByZXR1cm4gKnN0
b3JhZ2U7CisKKyAgICAgICAgVW5saW5rZWRDb2RlQmxvY2sqIGNvZGVCbG9jayA9IG1fZ3JhcGgu
Y29kZUJsb2NrKCk7CisgICAgICAgIElkZW50aWZpZXIgaWRlbnRpZmllciA9IElkZW50aWZpZXI6
OmZyb21VaWQoUHJpdmF0ZU5hbWUoKSk7CisgICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXJJbmRl
eCA9IGNvZGVCbG9jay0+bnVtYmVyT2ZJZGVudGlmaWVycygpOworICAgICAgICBjb2RlQmxvY2st
PmFkZElkZW50aWZpZXIoaWRlbnRpZmllcik7CisgICAgICAgIFNjb3BlT2Zmc2V0IHNjb3BlT2Zm
c2V0ID0gbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlLT50YWtlTmV4dFNjb3BlT2Zmc2V0KE5v
TG9ja2luZ05lY2Vzc2FyeSk7CisgICAgICAgIG1fZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZS0+
c2V0KE5vTG9ja2luZ05lY2Vzc2FyeSwgaWRlbnRpZmllci5pbXBsKCksIFN5bWJvbFRhYmxlRW50
cnkoVmFyT2Zmc2V0KHNjb3BlT2Zmc2V0KSkpOworCisgICAgICAgIFN0b3JhZ2Ugc3RvcmFnZSA9
IHsKKyAgICAgICAgICAgIGlkZW50aWZpZXIsCisgICAgICAgICAgICBpZGVudGlmaWVySW5kZXgs
CisgICAgICAgICAgICBzY29wZU9mZnNldAorICAgICAgICB9OworICAgICAgICBtX3N0b3JhZ2Vz
W2luZGV4XSA9IHN0b3JhZ2U7CisgICAgICAgIHJldHVybiBzdG9yYWdlOworICAgIH0KKworICAg
IHN0cnVjdCBZaWVsZERhdGEgeworICAgICAgICBzaXplX3Qgc2F2ZVBvaW50OworICAgICAgICBz
aXplX3QgbWVyZ2VQb2ludDsKKyAgICAgICAgc2l6ZV90IHJlc3VtZVBvaW50OworICAgICAgICBG
YXN0Qml0VmVjdG9yIGxpdmVuZXNzOworICAgICAgICBGYXN0Qml0VmVjdG9yIHJlc3VtZWQ7Cisg
ICAgICAgIEZhc3RCaXRWZWN0b3Igc2F2ZWQ7CisgICAgfTsKKworICAgIEJ5dGVjb2RlR3JhcGg8
VW5saW5rZWRDb2RlQmxvY2s+IG1fZ3JhcGg7CisgICAgQnl0ZWNvZGVNb2RpZmljYXRpb25TZXQg
bV9pbnNlcnRpb25TZXQ7CisgICAgVmVjdG9yPE9wdGlvbmFsPFN0b3JhZ2U+PiBtX3N0b3JhZ2Vz
OworICAgIFZlY3RvcjxZaWVsZERhdGE+IG1feWllbGRzOworICAgIEZhc3RCaXRWZWN0b3IgbV9t
ZXJnZUJsb2NrczsKKyAgICBGYXN0Qml0VmVjdG9yIG1fc2F2ZUJsb2NrczsKKyAgICBTdHJvbmc8
U3ltYm9sVGFibGU+IG1fZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZTsKKyAgICBpbnQgbV9nZW5l
cmF0b3JGcmFtZVN5bWJvbFRhYmxlSW5kZXg7Cit9OworCitjbGFzcyBHZW5lcmF0b3JMaXZlbmVz
c0FuYWx5c2lzIHsKK3B1YmxpYzoKKyAgICBHZW5lcmF0b3JMaXZlbmVzc0FuYWx5c2lzKEJ5dGVj
b2RlR2VuZXJhdG9yaWZpY2F0aW9uJiBwYXNzKQorICAgICAgICA6IG1fZ2VuZXJhdG9yaWZpY2F0
aW9uKHBhc3MpCisgICAgeworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+
CisgICAgdm9pZCBjb21wdXRlTGl2ZW5lc3NEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoVW5saW5rZWRD
b2RlQmxvY2sqIGNvZGVCbG9jaywgT3Bjb2RlSUQgb3Bjb2RlSUQsIFVubGlua2VkSW5zdHJ1Y3Rp
b24qIGluc3RydWN0aW9uLCBGYXN0Qml0VmVjdG9yJiBvdXQsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0
b3IpCisgICAgeworICAgICAgICBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9j
aywgb3Bjb2RlSUQsIGluc3RydWN0aW9uLCBmdW5jdG9yKTsKKworICAgICAgICBzd2l0Y2ggKG9w
Y29kZUlEKSB7CisgICAgICAgIGNhc2Ugb3Bfc2F2ZToKKyAgICAgICAgICAgIHJldHVybjsKKwor
ICAgICAgICBjYXNlIG9wX3Jlc3VtZTogeworICAgICAgICAgICAgLy8gcmVzdW1lIGRlZmluZXMg
YWxsIHRoZSByZWdpc3RlcnMuCisgICAgICAgICAgICBvdXQuY2xlYXJBbGwoKTsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9y
PgorICAgIHZvaWQgY29tcHV0ZUxpdmVuZXNzVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KFVubGlua2Vk
Q29kZUJsb2NrKiBjb2RlQmxvY2ssIE9wY29kZUlEIG9wY29kZUlELCBVbmxpbmtlZEluc3RydWN0
aW9uKiBpbnN0cnVjdGlvbiwgRmFzdEJpdFZlY3RvciYsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3Ip
CisgICAgeworICAgICAgICBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9jaywg
b3Bjb2RlSUQsIGluc3RydWN0aW9uLCBmdW5jdG9yKTsKKworICAgICAgICBzd2l0Y2ggKG9wY29k
ZUlEKSB7CisgICAgICAgIGNhc2Ugb3Bfc2F2ZToKKyAgICAgICAgY2FzZSBvcF9yZXN1bWU6IHsK
KyAgICAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGlu
c3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAg
fQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVXNlRnVuY3RvciwgdHlwZW5hbWUgRGVmRnVuY3Rv
cj4KKyAgICB2b2lkIHN0ZXBPdmVySW5zdHJ1Y3Rpb25Gb3JMaXZlbmVzcyh1bnNpZ25lZCBieXRl
Y29kZU9mZnNldCwgRmFzdEJpdFZlY3RvciYgb3V0LCBjb25zdCBVc2VGdW5jdG9yJiB1c2UsIGNv
bnN0IERlZkZ1bmN0b3ImIGRlZikKKyAgICB7CisgICAgICAgIEJ5dGVjb2RlR3JhcGg8VW5saW5r
ZWRDb2RlQmxvY2s+JiBncmFwaCA9IG1fZ2VuZXJhdG9yaWZpY2F0aW9uLmdyYXBoKCk7CisgICAg
ICAgIGF1dG8mIGluc3RydWN0aW9ucyA9IGdyYXBoLmluc3RydWN0aW9ucygpOworICAgICAgICBV
bmxpbmtlZEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9ICZpbnN0cnVjdGlvbnNbYnl0ZWNvZGVP
ZmZzZXRdOworICAgICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGluc3RydWN0aW9uLT51Lm9wY29k
ZTsKKyAgICAgICAgVW5saW5rZWRDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGdyYXBoLmNvZGVCbG9j
aygpOworCisgICAgICAgIGNvbXB1dGVMaXZlbmVzc0RlZnNGb3JCeXRlY29kZU9mZnNldCgKKyAg
ICAgICAgICAgIGNvZGVCbG9jaywgb3Bjb2RlSUQsIGluc3RydWN0aW9uLCBvdXQsCisgICAgICAg
ICAgICBbJl0gKFVubGlua2VkQ29kZUJsb2NrKiwgVW5saW5rZWRJbnN0cnVjdGlvbiosIE9wY29k
ZUlELCBpbnQgb3BlcmFuZCkgeworICAgICAgICAgICAgICAgIGlmIChpc1ZhbGlkUmVnaXN0ZXJG
b3JMaXZlbmVzcyhvcGVyYW5kKSkKKyAgICAgICAgICAgICAgICAgICAgZGVmKFZpcnR1YWxSZWdp
c3RlcihvcGVyYW5kKS50b0xvY2FsKCkpOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgY29t
cHV0ZUxpdmVuZXNzVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAorICAgICAgICAgICAgY29kZUJsb2Nr
LCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb24sIG91dCwKKyAgICAgICAgICAgIFsmXSAoVW5saW5rZWRD
b2RlQmxvY2sqLCBVbmxpbmtlZEluc3RydWN0aW9uKiwgT3Bjb2RlSUQsIGludCBvcGVyYW5kKSB7
CisgICAgICAgICAgICAgICAgaWYgKGlzVmFsaWRSZWdpc3RlckZvckxpdmVuZXNzKG9wZXJhbmQp
KQorICAgICAgICAgICAgICAgICAgICB1c2UoVmlydHVhbFJlZ2lzdGVyKG9wZXJhbmQpLnRvTG9j
YWwoKSk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAvLyBJZiB3ZSBoYXZlIGFuIGV4Y2Vw
dGlvbiBoYW5kbGVyLCB3ZSB3YW50IHRoZSBsaXZlLWluIHZhcmlhYmxlcyBvZiB0aGUKKyAgICAg
ICAgLy8gZXhjZXB0aW9uIGhhbmRsZXIgYmxvY2sgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIGxpdmUt
aW4gb2YgdGhpcyBwYXJ0aWN1bGFyIGJ5dGVjb2RlLgorICAgICAgICBpZiAoVW5saW5rZWRIYW5k
bGVySW5mbyogaGFuZGxlciA9IGNvZGVCbG9jay0+aGFuZGxlckZvckJ5dGVjb2RlT2Zmc2V0KGJ5
dGVjb2RlT2Zmc2V0KSkgeworICAgICAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBoYW5kbGVy
QmxvY2sgPSBncmFwaC5maW5kQmFzaWNCbG9ja1dpdGhMZWFkZXJPZmZzZXQoaGFuZGxlci0+dGFy
Z2V0KTsKKyAgICAgICAgICAgIEFTU0VSVChoYW5kbGVyQmxvY2spOworICAgICAgICAgICAgaGFu
ZGxlckJsb2NrLT5pbigpLmZvckVhY2hTZXRCaXQodXNlKTsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIHZvaWQgY29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCeXRlY29kZU9mZnNldChCeXRlY29kZUJh
c2ljQmxvY2sqIGJsb2NrLCB1bnNpZ25lZCB0YXJnZXRPZmZzZXQsIEZhc3RCaXRWZWN0b3ImIHJl
c3VsdCkKKyAgICB7CisgICAgICAgIEFTU0VSVCghYmxvY2stPmlzRXhpdEJsb2NrKCkpOworICAg
ICAgICBBU1NFUlQoIWJsb2NrLT5pc0VudHJ5QmxvY2soKSk7CisKKyAgICAgICAgRmFzdEJpdFZl
Y3RvciBvdXQgPSBibG9jay0+b3V0KCk7CisKKyAgICAgICAgZm9yIChpbnQgaSA9IGJsb2NrLT5i
eXRlY29kZU9mZnNldHMoKS5zaXplKCkgLSAxOyBpID49IDA7IGktLSkgeworICAgICAgICAgICAg
dW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQgPSBibG9jay0+Ynl0ZWNvZGVPZmZzZXRzKClbaV07Cisg
ICAgICAgICAgICBpZiAodGFyZ2V0T2Zmc2V0ID4gYnl0ZWNvZGVPZmZzZXQpCisgICAgICAgICAg
ICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIHN0ZXBPdmVySW5zdHJ1Y3Rpb25Gb3JMaXZlbmVz
cygKKyAgICAgICAgICAgICAgICBieXRlY29kZU9mZnNldCwgb3V0LAorICAgICAgICAgICAgICAg
IFsmXSAodW5zaWduZWQgYml0SW5kZXgpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBp
cyB0aGUgdXNlIGZ1bmN0b3IsIHNvIHdlIHNldCB0aGUgYml0LgorICAgICAgICAgICAgICAgICAg
ICBvdXQuc2V0KGJpdEluZGV4KTsKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAg
IFsmXSAodW5zaWduZWQgYml0SW5kZXgpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBp
cyB0aGUgZGVmIGZ1bmN0b3IsIHNvIHdlIGNsZWFyIHRoZSBiaXQuCisgICAgICAgICAgICAgICAg
ICAgIG91dC5jbGVhcihiaXRJbmRleCk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgIH0K
KworICAgICAgICByZXN1bHQuc2V0KG91dCk7CisgICAgfQorCisgICAgdm9pZCBjb21wdXRlTG9j
YWxMaXZlbmVzc0ZvckJsb2NrKEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2spCisgICAgeworICAg
ICAgICBpZiAoYmxvY2stPmlzRXhpdEJsb2NrKCkgfHwgYmxvY2stPmlzRW50cnlCbG9jaygpKQor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJ5dGVj
b2RlT2Zmc2V0KGJsb2NrLCBibG9jay0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKSwgYmxvY2stPmlu
KCkpOworICAgIH0KKworICAgIEZhc3RCaXRWZWN0b3IgZ2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29k
ZU9mZnNldCh1bnNpZ25lZCBieXRlY29kZU9mZnNldCkKKyAgICB7CisgICAgICAgIEJ5dGVjb2Rl
QmFzaWNCbG9jayogYmxvY2sgPSBtX2dlbmVyYXRvcmlmaWNhdGlvbi5ncmFwaCgpLmZpbmRCYXNp
Y0Jsb2NrRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpOworICAgICAgICBBU1NFUlQo
YmxvY2spOworICAgICAgICBBU1NFUlQoIWJsb2NrLT5pc0VudHJ5QmxvY2soKSk7CisgICAgICAg
IEFTU0VSVCghYmxvY2stPmlzRXhpdEJsb2NrKCkpOworICAgICAgICBGYXN0Qml0VmVjdG9yIG91
dDsKKyAgICAgICAgb3V0LnJlc2l6ZShibG9jay0+b3V0KCkubnVtQml0cygpKTsKKyAgICAgICAg
Y29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCeXRlY29kZU9mZnNldChibG9jaywgYnl0ZWNvZGVPZmZz
ZXQsIG91dCk7CisgICAgICAgIHJldHVybiBvdXQ7CisgICAgfQorCisgICAgdm9pZCBydW4oKQor
ICAgIHsKKyAgICAgICAgLy8gUGVyZm9ybSBtb2RpZmllZCBsaXZlbmVzcyBhbmFseXNpcyB0byBk
ZXRlcm1pbmUgd2hpY2ggbG9jYWxzIGFyZSBsaXZlIGF0IHRoZSBtZXJnZSBwb2ludHMuCisgICAg
ICAgIC8vIFRoaXMgcHJvZHVjZXMgdGhlIGNvbnNlcnZhdGl2ZSByZXN1bHRzIGZvciB0aGUgcXVl
c3Rpb24sICJ3aGljaCB2YXJpYWJsZXMgc2hvdWxkIGJlIHNhdmVkIGFuZCByZXN1bWVkPyIuCisK
KyAgICAgICAgQnl0ZWNvZGVHcmFwaDxVbmxpbmtlZENvZGVCbG9jaz4mIGdyYXBoID0gbV9nZW5l
cmF0b3JpZmljYXRpb24uZ3JhcGgoKTsKKyAgICAgICAgVW5saW5rZWRDb2RlQmxvY2sqIHVubGlu
a2VkQ29kZUJsb2NrID0gZ3JhcGguY29kZUJsb2NrKCk7CisgICAgICAgIHVuc2lnbmVkIG51bWJl
ck9mVmFyaWFibGVzID0gdW5saW5rZWRDb2RlQmxvY2stPm1fbnVtQ2FsbGVlTG9jYWxzOworICAg
ICAgICBmb3IgKHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+JiBibG9jayA6IGdy
YXBoLmJhc2ljQmxvY2tzKCkpIHsKKyAgICAgICAgICAgIGJsb2NrLT5pbigpLnJlc2l6ZShudW1i
ZXJPZlZhcmlhYmxlcyk7CisgICAgICAgICAgICBibG9jay0+b3V0KCkucmVzaXplKG51bWJlck9m
VmFyaWFibGVzKTsKKyAgICAgICAgICAgIGJsb2NrLT5pbigpLmNsZWFyQWxsKCk7CisgICAgICAg
ICAgICBibG9jay0+b3V0KCkuY2xlYXJBbGwoKTsKKyAgICAgICAgfQorCisgICAgICAgIGJvb2wg
Y2hhbmdlZDsKKyAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBsYXN0QmxvY2sgPSBncmFwaC5i
YXNpY0Jsb2NrcygpLmxhc3QoKS5nZXQoKTsKKyAgICAgICAgbGFzdEJsb2NrLT5pbigpLmNsZWFy
QWxsKCk7CisgICAgICAgIGxhc3RCbG9jay0+b3V0KCkuY2xlYXJBbGwoKTsKKyAgICAgICAgRmFz
dEJpdFZlY3RvciBuZXdPdXQ7CisgICAgICAgIG5ld091dC5yZXNpemUobGFzdEJsb2NrLT5vdXQo
KS5udW1CaXRzKCkpOworICAgICAgICBkbyB7CisgICAgICAgICAgICBjaGFuZ2VkID0gZmFsc2U7
CisgICAgICAgICAgICBmb3IgKHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+JiBi
bG9jayA6IGdyYXBoLmJhc2ljQmxvY2tzSW5SZXZlcnNlT3JkZXIoKSkgeworICAgICAgICAgICAg
ICAgIG5ld091dC5jbGVhckFsbCgpOworICAgICAgICAgICAgICAgIGZvciAoQnl0ZWNvZGVCYXNp
Y0Jsb2NrKiBzdWNjZXNzb3IgOiBibG9jay0+c3VjY2Vzc29ycygpKQorICAgICAgICAgICAgICAg
ICAgICBuZXdPdXQubWVyZ2Uoc3VjY2Vzc29yLT5pbigpKTsKKyAgICAgICAgICAgICAgICBib29s
IG91dERpZENoYW5nZSA9IGJsb2NrLT5vdXQoKS5zZXRBbmRDaGVjayhuZXdPdXQpOworICAgICAg
ICAgICAgICAgIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQmxvY2soYmxvY2suZ2V0KCkpOworICAg
ICAgICAgICAgICAgIGNoYW5nZWQgfD0gb3V0RGlkQ2hhbmdlOworICAgICAgICAgICAgfQorICAg
ICAgICB9IHdoaWxlIChjaGFuZ2VkKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQnl0ZWNvZGVH
ZW5lcmF0b3JpZmljYXRpb24mIG1fZ2VuZXJhdG9yaWZpY2F0aW9uOworfTsKKworY2xhc3MgUmVz
dW1lZFZhcmlhYmxlc0FuYWx5c2lzIHsKK3B1YmxpYzoKKyAgICBSZXN1bWVkVmFyaWFibGVzQW5h
bHlzaXMoQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24mIHBhc3MpCisgICAgICAgIDogbV9nZW5l
cmF0b3JpZmljYXRpb24ocGFzcykKKyAgICAgICAgLCBtX2xpdmVuZXNzQW5hbHlzaXMocGFzcykK
KyAgICB7CisgICAgfQorCisgICAgRmFzdEJpdFZlY3RvciBnZXRSZXN1bWVkVmFyaWFibGVzSW5m
b0F0Qnl0ZWNvZGVPZmZzZXQodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpCisgICAgeworICAgICAg
ICBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrID0gbV9nZW5lcmF0b3JpZmljYXRpb24uZ3JhcGgo
KS5maW5kQmFzaWNCbG9ja0ZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KTsKKyAgICAg
ICAgQVNTRVJUKGJsb2NrKTsKKyAgICAgICAgQVNTRVJUKCFibG9jay0+aXNFbnRyeUJsb2NrKCkp
OworICAgICAgICBBU1NFUlQoIWJsb2NrLT5pc0V4aXRCbG9jaygpKTsKKyAgICAgICAgRmFzdEJp
dFZlY3RvciBvdXQ7CisgICAgICAgIG91dC5yZXNpemUoYmxvY2stPm91dCgpLm51bUJpdHMoKSk7
CisgICAgICAgIG1fbGl2ZW5lc3NBbmFseXNpcy5jb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJ5dGVj
b2RlT2Zmc2V0KGJsb2NrLCBieXRlY29kZU9mZnNldCwgb3V0KTsKKyAgICAgICAgcmV0dXJuIG91
dDsKKyAgICB9CisKKyAgICB2b2lkIHJ1bigpCisgICAgeworICAgICAgICAvLyBUaGUgcmVzdW1l
ZCB2YXJpYWJsZXMgYW5hbHlzaXMgaXMgYWxtb3N0IHRoZSBzYW1lIHRvIHRoZSBnZW5lcmF0b3Jp
ZmljYXRpb24ncyB1c3VhbCBsaXZlbmVzcyBhbmFseXNpcywKKyAgICAgICAgLy8gZXhjZXB0IGZv
ciBkcm9wcGluZyB0aGUgZWRnZXMgYmV0d2VlbiB0aGUgc2F2ZSBwb2ludHMgYW5kIHRoZSBtZXJn
ZSBwb2ludHMuCisKKyAgICAgICAgQnl0ZWNvZGVHcmFwaDxVbmxpbmtlZENvZGVCbG9jaz4mIGdy
YXBoID0gbV9nZW5lcmF0b3JpZmljYXRpb24uZ3JhcGgoKTsKKyAgICAgICAgVW5saW5rZWRDb2Rl
QmxvY2sqIHVubGlua2VkQ29kZUJsb2NrID0gZ3JhcGguY29kZUJsb2NrKCk7CisgICAgICAgIHVu
c2lnbmVkIG51bWJlck9mVmFyaWFibGVzID0gdW5saW5rZWRDb2RlQmxvY2stPm1fbnVtQ2FsbGVl
TG9jYWxzOworICAgICAgICBmb3IgKHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+
JiBibG9jayA6IGdyYXBoLmJhc2ljQmxvY2tzKCkpIHsKKyAgICAgICAgICAgIGJsb2NrLT5pbigp
LnJlc2l6ZShudW1iZXJPZlZhcmlhYmxlcyk7CisgICAgICAgICAgICBibG9jay0+b3V0KCkucmVz
aXplKG51bWJlck9mVmFyaWFibGVzKTsKKyAgICAgICAgICAgIGJsb2NrLT5pbigpLmNsZWFyQWxs
KCk7CisgICAgICAgICAgICBibG9jay0+b3V0KCkuY2xlYXJBbGwoKTsKKyAgICAgICAgfQorCisg
ICAgICAgIGJvb2wgY2hhbmdlZDsKKyAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBsYXN0Qmxv
Y2sgPSBncmFwaC5iYXNpY0Jsb2NrcygpLmxhc3QoKS5nZXQoKTsKKyAgICAgICAgbGFzdEJsb2Nr
LT5pbigpLmNsZWFyQWxsKCk7CisgICAgICAgIGxhc3RCbG9jay0+b3V0KCkuY2xlYXJBbGwoKTsK
KyAgICAgICAgRmFzdEJpdFZlY3RvciBuZXdPdXQ7CisgICAgICAgIG5ld091dC5yZXNpemUobGFz
dEJsb2NrLT5vdXQoKS5udW1CaXRzKCkpOworICAgICAgICBkbyB7CisgICAgICAgICAgICBjaGFu
Z2VkID0gZmFsc2U7CisgICAgICAgICAgICBmb3IgKHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJh
c2ljQmxvY2s+JiBibG9jayA6IGdyYXBoLmJhc2ljQmxvY2tzSW5SZXZlcnNlT3JkZXIoKSkgewor
ICAgICAgICAgICAgICAgIG5ld091dC5jbGVhckFsbCgpOworICAgICAgICAgICAgICAgIGJvb2wg
c2F2ZUJsb2NrID0gbV9nZW5lcmF0b3JpZmljYXRpb24uaXNTYXZlQmxvY2soYmxvY2suZ2V0KCkp
OworICAgICAgICAgICAgICAgIGZvciAoQnl0ZWNvZGVCYXNpY0Jsb2NrKiBzdWNjZXNzb3IgOiBi
bG9jay0+c3VjY2Vzc29ycygpKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIERvIG5vdCBoYW5k
bGUgdGhlIGVkZ2VzIGJldHdlZW4gdGhlIHNhdmUgcG9pbnRzIGFuZCB0aGUgbWVyZ2UgcG9pbnRz
LgorICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgY3VycmVudCBibG9jayBpcyB0aGUgc2F2
ZSBibG9jayAodGhhdCBicmFuY2ggaXMgb3Bfc2F2ZSksCisgICAgICAgICAgICAgICAgICAgIC8v
IGFuZCBpZiB0aGUgc3VjY2Vzc29yIGlzIHRoZSBibG9jayB0aGF0IHN0YXJ0cyB3aXRoIHRoZSBt
ZXJnZSBwb2ludCwgd2UgZHJvcCB0aGlzIGVkZ2UuCisgICAgICAgICAgICAgICAgICAgIGlmICgh
KHNhdmVCbG9jayAmJiBtX2dlbmVyYXRvcmlmaWNhdGlvbi5pc01lcmdlQmxvY2soc3VjY2Vzc29y
KSkpCisgICAgICAgICAgICAgICAgICAgICAgICBuZXdPdXQubWVyZ2Uoc3VjY2Vzc29yLT5pbigp
KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYm9vbCBvdXREaWRDaGFuZ2Ug
PSBibG9jay0+b3V0KCkuc2V0QW5kQ2hlY2sobmV3T3V0KTsKKyAgICAgICAgICAgICAgICBtX2xp
dmVuZXNzQW5hbHlzaXMuY29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCbG9jayhibG9jay5nZXQoKSk7
CisgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBvdXREaWRDaGFuZ2U7CisgICAgICAgICAgICB9
CisgICAgICAgIH0gd2hpbGUgKGNoYW5nZWQpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBCeXRl
Y29kZUdlbmVyYXRvcmlmaWNhdGlvbiYgbV9nZW5lcmF0b3JpZmljYXRpb247CisgICAgR2VuZXJh
dG9yTGl2ZW5lc3NBbmFseXNpcyBtX2xpdmVuZXNzQW5hbHlzaXM7Cit9OworCitjbGFzcyBTYXZl
ZFZhcmlhYmxlc0FuYWx5c2lzIHsKK3B1YmxpYzoKKyAgICBTYXZlZFZhcmlhYmxlc0FuYWx5c2lz
KEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uJiBwYXNzKQorICAgICAgICA6IG1fZ2VuZXJhdG9y
aWZpY2F0aW9uKHBhc3MpCisgICAgeworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIERl
ZkZ1bmN0b3I+CisgICAgdm9pZCBzdGVwT3Zlckluc3RydWN0aW9uRm9yU2F2ZWRWYXJpYWJsZXMo
Qnl0ZWNvZGVCYXNpY0Jsb2NrKiwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIEZhc3RCaXRWZWN0
b3ImIGluLCBjb25zdCBEZWZGdW5jdG9yJiBkZWYpCisgICAgeworICAgICAgICBCeXRlY29kZUdy
YXBoPFVubGlua2VkQ29kZUJsb2NrPiYgZ3JhcGggPSBtX2dlbmVyYXRvcmlmaWNhdGlvbi5ncmFw
aCgpOworICAgICAgICBhdXRvJiBpbnN0cnVjdGlvbnMgPSBncmFwaC5pbnN0cnVjdGlvbnMoKTsK
KyAgICAgICAgVW5saW5rZWRJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSAmaW5zdHJ1Y3Rpb25z
W2J5dGVjb2RlT2Zmc2V0XTsKKyAgICAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnN0cnVjdGlv
bi0+dS5vcGNvZGU7CisgICAgICAgIFVubGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBncmFw
aC5jb2RlQmxvY2soKTsKKworICAgICAgICAvLyBvcF9yZXN1bWUgY2xlYXJzIGFsbCB0aGUgZGVm
cy4KKyAgICAgICAgaWYgKG9wY29kZUlEID09IG9wX3Jlc3VtZSkgeworICAgICAgICAgICAgaW4u
Y2xlYXJBbGwoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGNv
bXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoY29kZUJsb2NrLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rp
b24sIFsmXSAoVW5saW5rZWRDb2RlQmxvY2sqLCBVbmxpbmtlZEluc3RydWN0aW9uKiwgT3Bjb2Rl
SUQsIGludCBvcGVyYW5kKSB7CisgICAgICAgICAgICBpZiAoaXNWYWxpZFJlZ2lzdGVyRm9yTGl2
ZW5lc3Mob3BlcmFuZCkpCisgICAgICAgICAgICAgICAgZGVmKFZpcnR1YWxSZWdpc3RlcihvcGVy
YW5kKS50b0xvY2FsKCkpOworICAgICAgICB9KTsKKyAgICB9CisKKyAgICBib29sIGNvbXB1dGVM
b2NhbFNhdmVkVmFyaWFibGVzRm9yQnl0ZWNvZGVPZmZzZXQoQnl0ZWNvZGVCYXNpY0Jsb2NrKiBi
bG9jaywgdW5zaWduZWQgdGFyZ2V0T2Zmc2V0LCBGYXN0Qml0VmVjdG9yJiByZXN1bHQpCisgICAg
eworICAgICAgICBBU1NFUlQoIWJsb2NrLT5pc0V4aXRCbG9jaygpKTsKKyAgICAgICAgQVNTRVJU
KCFibG9jay0+aXNFbnRyeUJsb2NrKCkpOworCisgICAgICAgIEZhc3RCaXRWZWN0b3IgaW4gPSBi
bG9jay0+aW4oKTsKKworICAgICAgICBmb3IgKHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0IDogYmxv
Y2stPmJ5dGVjb2RlT2Zmc2V0cygpKSB7CisgICAgICAgICAgICBpZiAodGFyZ2V0T2Zmc2V0IDw9
IGJ5dGVjb2RlT2Zmc2V0KQorICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBz
dGVwT3Zlckluc3RydWN0aW9uRm9yU2F2ZWRWYXJpYWJsZXMoCisgICAgICAgICAgICAgICAgYmxv
Y2ssIGJ5dGVjb2RlT2Zmc2V0LCBpbiwKKyAgICAgICAgICAgICAgICBbJl0gKHVuc2lnbmVkIGJp
dEluZGV4KSB7CisgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIGRlZiBmdW5jdG9y
LCBzbyB3ZSBzZXQgdGhlIGJpdC4KKyAgICAgICAgICAgICAgICAgICAgaW4uc2V0KGJpdEluZGV4
KTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiByZXN1
bHQuc2V0QW5kQ2hlY2soaW4pOworICAgIH0KKworICAgIGJvb2wgY29tcHV0ZUxvY2FsU2F2ZWRW
YXJpYWJsZXNGb3JCbG9jayhCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrKQorICAgIHsKKyAgICAg
ICAgaWYgKGJsb2NrLT5pc0V4aXRCbG9jaygpIHx8IGJsb2NrLT5pc0VudHJ5QmxvY2soKSkKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIGNvbXB1dGVMb2NhbFNhdmVk
VmFyaWFibGVzRm9yQnl0ZWNvZGVPZmZzZXQoYmxvY2ssIGJsb2NrLT5sZWFkZXJCeXRlY29kZU9m
ZnNldCgpICsgYmxvY2stPnRvdGFsQnl0ZWNvZGVMZW5ndGgoKSwgYmxvY2stPm91dCgpKTsKKyAg
ICB9CisKKyAgICBGYXN0Qml0VmVjdG9yIGdldFNhdmVkVmFyaWFibGVzSW5mb0F0Qnl0ZWNvZGVP
ZmZzZXQodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpCisgICAgeworICAgICAgICBCeXRlY29kZUJh
c2ljQmxvY2sqIGJsb2NrID0gbV9nZW5lcmF0b3JpZmljYXRpb24uZ3JhcGgoKS5maW5kQmFzaWNC
bG9ja0ZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KTsKKyAgICAgICAgQVNTRVJUKGJs
b2NrKTsKKyAgICAgICAgQVNTRVJUKCFibG9jay0+aXNFbnRyeUJsb2NrKCkpOworICAgICAgICBB
U1NFUlQoIWJsb2NrLT5pc0V4aXRCbG9jaygpKTsKKyAgICAgICAgRmFzdEJpdFZlY3RvciBpbjsK
KyAgICAgICAgaW4ucmVzaXplKGJsb2NrLT5pbigpLm51bUJpdHMoKSk7CisgICAgICAgIGNvbXB1
dGVMb2NhbFNhdmVkVmFyaWFibGVzRm9yQnl0ZWNvZGVPZmZzZXQoYmxvY2ssIGJ5dGVjb2RlT2Zm
c2V0LCBpbik7CisgICAgICAgIHJldHVybiBpbjsKKyAgICB9CisKKyAgICB2b2lkIHJ1bigpCisg
ICAgeworICAgICAgICAvLyBJZiB3ZSBzYXZlIGFsbCB0aGUgdmFyaWFibGUgdGhhdCB3aWxsIGJl
IHJlc3VtZWQsIGl0J3MgT0suCisgICAgICAgIC8vIEJ1dCB3ZSBjYW4gYXZvaWQgc29tZSBzYXZl
ZCB2YXJpYWJsZXMgdGhhdCBhcmUgb25seSBkZWZpbmVkIGJ5IHRoZSBwcmV2aW91cyBvcF9yZXN1
bWUuCisgICAgICAgIC8vCisgICAgICAgIC8vIEluIHRoaXMgcGhhc2UsIHdlIHBlcmZvcm0gZm9y
d2FyZCBhbmFseXNpcyB0byBleHRyYWN0IHdoaWNoIHZhcmlhYmxlcyBuZWVkIHRvIGJlIG5ld2x5
IHNhdmVkIHdoZW4gZXhlY3V0aW5nIG9wX3NhdmUuCisgICAgICAgIC8vIFdlIGNhbGN1bGF0ZSB0
aGUgcmVnaXN0ZXJzIHRoYXQgaXMgZGVmaW5lZCBpbiBub24tb3BfcmVzdW1lIGFuZCBjYW4gcmVh
Y2ggdG8gdGhlIG9wX3NhdmUuCisgICAgICAgIC8vCisgICAgICAgIC8vICAgb3BfcmVzdW1lLCBk
ZWZpbmUgcjEKKyAgICAgICAgLy8gICAuLi4KKyAgICAgICAgLy8gICAuLi4KKyAgICAgICAgLy8g
ICBuby1qdW1wcyAmIG5vIHIxIGRlZnMuCisgICAgICAgIC8vICAgLi4uCisgICAgICAgIC8vICAg
b3Bfc2F2ZSAgIyBIZXJlLCBpdCBpcyBub3QgbmVjZXNzYXJ5IHRvIHNhdmUgcjEuCisgICAgICAg
IEJ5dGVjb2RlR3JhcGg8VW5saW5rZWRDb2RlQmxvY2s+JiBncmFwaCA9IG1fZ2VuZXJhdG9yaWZp
Y2F0aW9uLmdyYXBoKCk7CisgICAgICAgIFVubGlua2VkQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVC
bG9jayA9IGdyYXBoLmNvZGVCbG9jaygpOworCisgICAgICAgIC8vIFdlIGNvbnNpZGVyIHRoZSBi
YXNpYyBibG9ja3Mgd2l0aGluIHRoZSB0cnkgcmFuZ2UgYXJlIGNvbnNpZGVyZWQgYXMgdGhlIGlt
cGxpY2l0IHByZWRlY2Vzc29ycyBvZiB0aGUgaGFuZGxlcnMuCisgICAgICAgIC8vIFRoZSBkZWZz
IGluIHRoZXNlIGJhc2ljIGJsb2NrcyBhcmUgY2FycmllZCB0byB0aGUgZXhjZXB0aW9uIGhhbmRs
ZXIuIEFuZCBpZiB0aGUgb3Bfc2F2ZSBpcyBleGVjdXRlZCBpbiB0aGUgaGFuZGxlciwKKyAgICAg
ICAgLy8gY2FycmllZCBkZWZzIHNob3VsZCBiZSBhbHNvIGNvbnNpZGVyZWQuCisgICAgICAgIC8v
CisgICAgICAgIC8vIEhlcmUsIHdlIGFkZCB0aGUgd2hvbGUgYmFzaWMgYmxvY2tzIGFzIHRoZSBp
bXBsaWNpdCBwcmVkZWNlc3NvcnMgb2YgdGhlIGhhbmRsZXJzIGZvciBzaW1wbGljaXR5LgorICAg
ICAgICAvLyBUaGlzIGlzIGEgbGl0dGxlIGJpdCBjb25zZXJ2YXRpdmU6IHRoZSB0cnkgcmFuZ2Ug
bWF5IG5vdCBjb3ZlciBhbGwgdGhlIGJhc2ljIGJsb2NrLiBCdXQgc2luY2UgdGhlIG91dCBzZXQg
c3RhdHVzIGF0CisgICAgICAgIC8vIHRoZSB0YWlsIG9mIHRoZSBiYXNpYyBibG9jayBpcyBhbHdh
eXMgbGFyZ2VyIHRoYW4gdGhlIG91dCBzZXQgc3RhdHVzIGluIHRoZSBtaWRkbGUgb2YgdGhlIGJh
c2ljIGJsb2NrcywgdGhpcyBkb2VzIG5vdAorICAgICAgICAvLyBmYWlsIHRvIGtlZXAgdGhlIHZh
cmlhYmxlcyB0aGF0IHNob3VsZCBiZSBzYXZlZC4KKyAgICAgICAgLy8KKyAgICAgICAgLy8gT25s
eSB0aGUgZXhjZXB0aW9uIGlzIHRoZSBvcF9yZXN1bWUgYmxvY2s6IG9wX3Jlc3VtZSBjbGVhcnMg
YWxsIHRoZSBkZWZzLiBCdXQgc2luY2UgdGhlIHJhbmdlIGJldHdlZW4gdGhlIGp1bXAgdGFyZ2V0
CisgICAgICAgIC8vIGZyb20gdGhlIGdsb2JhbCBkaXNwYXRjaCBhbmQgb3BfcmVzdW1lIGlzIG5l
dmVyIGNvdmVyZWQgYnkgdGhlIHRyeSByYW5nZSwgaXQgaXMgbm90IGEgcHJvYmxlbS4KKyAgICAg
ICAgVmVjdG9yPE9wdGlvbmFsPEZhc3RCaXRWZWN0b3I+PiBwb3NzaWJsZVByZWRlY2Vzc29yc0Zv
ckhhbmRsZXJzOworICAgICAgICBwb3NzaWJsZVByZWRlY2Vzc29yc0ZvckhhbmRsZXJzLnJlc2l6
ZShncmFwaC5iYXNpY0Jsb2NrcygpLnNpemUoKSk7CisgICAgICAgIHsKKyAgICAgICAgICAgIGF1
dG8mIGluc3RydWN0aW9ucyA9IGdyYXBoLmluc3RydWN0aW9ucygpOworICAgICAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IHVubGlua2VkQ29kZUJsb2NrLT5udW1iZXJPZkV4Y2VwdGlv
bkhhbmRsZXJzKCk7ICsraSkgeworICAgICAgICAgICAgICAgIGF1dG8mIGhhbmRsZXIgPSB1bmxp
bmtlZENvZGVCbG9jay0+ZXhjZXB0aW9uSGFuZGxlcihpKTsKKworICAgICAgICAgICAgICAgIEZh
c3RCaXRWZWN0b3IgcHJlZGVjZXNzb3JzOworICAgICAgICAgICAgICAgIHByZWRlY2Vzc29ycy5y
ZXNpemUoZ3JhcGguYmFzaWNCbG9ja3MoKS5zaXplKCkpOworICAgICAgICAgICAgICAgIGZvciAo
dW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQgPSBoYW5kbGVyLnN0YXJ0OyBieXRlY29kZU9mZnNldCA8
IGhhbmRsZXIuZW5kOykgeworICAgICAgICAgICAgICAgICAgICBVbmxpbmtlZEluc3RydWN0aW9u
KiBpbnN0cnVjdGlvbiA9ICZpbnN0cnVjdGlvbnNbYnl0ZWNvZGVPZmZzZXRdOworICAgICAgICAg
ICAgICAgICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGluc3RydWN0aW9uLT51Lm9wY29kZTsKKyAg
ICAgICAgICAgICAgICAgICAgdW5zaWduZWQgb3Bjb2RlTGVuZ3RoID0gb3Bjb2RlTGVuZ3Roc1tv
cGNvZGVJRF07CisKKyAgICAgICAgICAgICAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBwb3Nz
aWJsZVByZWRlY2Vzc29yID0gZ3JhcGguZmluZEJhc2ljQmxvY2tGb3JCeXRlY29kZU9mZnNldChi
eXRlY29kZU9mZnNldCk7CisgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHBvc3Np
YmxlUHJlZGVjZXNzb3IpOworICAgICAgICAgICAgICAgICAgICBwcmVkZWNlc3NvcnMuc2V0KHBv
c3NpYmxlUHJlZGVjZXNzb3ItPmluZGV4KCkpOworCisgICAgICAgICAgICAgICAgICAgIGJ5dGVj
b2RlT2Zmc2V0ICs9IG9wY29kZUxlbmd0aDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBoYW5kbGVyQmxvY2sgPSBncmFwaC5maW5kQmFzaWNC
bG9ja1dpdGhMZWFkZXJPZmZzZXQoaGFuZGxlci50YXJnZXQpOworICAgICAgICAgICAgICAgIHBv
c3NpYmxlUHJlZGVjZXNzb3JzRm9ySGFuZGxlcnNbaGFuZGxlckJsb2NrLT5pbmRleCgpXSA9IFdU
Rk1vdmUocHJlZGVjZXNzb3JzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAg
IHVuc2lnbmVkIG51bWJlck9mVmFyaWFibGVzID0gdW5saW5rZWRDb2RlQmxvY2stPm1fbnVtQ2Fs
bGVlTG9jYWxzOworICAgICAgICBmb3IgKHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxv
Y2s+JiBibG9jayA6IGdyYXBoLmJhc2ljQmxvY2tzKCkpIHsKKyAgICAgICAgICAgIGJsb2NrLT5p
bigpLnJlc2l6ZShudW1iZXJPZlZhcmlhYmxlcyk7CisgICAgICAgICAgICBibG9jay0+b3V0KCku
cmVzaXplKG51bWJlck9mVmFyaWFibGVzKTsKKyAgICAgICAgICAgIGJsb2NrLT5pbigpLmNsZWFy
QWxsKCk7CisgICAgICAgICAgICBibG9jay0+b3V0KCkuY2xlYXJBbGwoKTsKKyAgICAgICAgfQor
CisgICAgICAgIGJvb2wgY2hhbmdlZDsKKyAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBmaXJz
dEJsb2NrID0gZ3JhcGguYmFzaWNCbG9ja3MoKS5maXJzdCgpLmdldCgpOworICAgICAgICBGYXN0
Qml0VmVjdG9yIG5ld0luOworICAgICAgICBuZXdJbi5yZXNpemUoZmlyc3RCbG9jay0+aW4oKS5u
dW1CaXRzKCkpOworICAgICAgICBkbyB7CisgICAgICAgICAgICBjaGFuZ2VkID0gZmFsc2U7Cisg
ICAgICAgICAgICBmb3IgKHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+JiBibG9j
ayA6IGdyYXBoLmJhc2ljQmxvY2tzKCkpIHsKKyAgICAgICAgICAgICAgICBuZXdJbi5jbGVhckFs
bCgpOworICAgICAgICAgICAgICAgIGJvb2wgbWVyZ2VCbG9jayA9IG1fZ2VuZXJhdG9yaWZpY2F0
aW9uLmlzTWVyZ2VCbG9jayhibG9jay5nZXQoKSk7CisgICAgICAgICAgICAgICAgZm9yIChCeXRl
Y29kZUJhc2ljQmxvY2sqIHByZWRlY2Vzc29yIDogYmxvY2stPnByZWRlY2Vzc29ycygpKSB7Cisg
ICAgICAgICAgICAgICAgICAgIC8vIE1lcmdlIHRoZSBvdXQgc2V0IG9mIHRoZSBpbmNvbWluZyBw
cmVkZWNlc3NvcnMgdW5sZXNzIHRoZSBjdXJyZW50IGJsb2NrIHN0YXJ0cworICAgICAgICAgICAg
ICAgICAgICAvLyB3aXRoIHRoZSBtZXJnZSBwb2ludCBhbmQgdGhlIHByZWRlY2Vzc29yIGVuZHMg
d2l0aCB0aGUgc2F2ZSBwb2ludC4KKyAgICAgICAgICAgICAgICAgICAgaWYgKCEobWVyZ2VCbG9j
ayAmJiBtX2dlbmVyYXRvcmlmaWNhdGlvbi5pc1NhdmVCbG9jayhwcmVkZWNlc3NvcikpKQorICAg
ICAgICAgICAgICAgICAgICAgICAgbmV3SW4ubWVyZ2UocHJlZGVjZXNzb3ItPm91dCgpKTsKKyAg
ICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAoYXV0byYgb3B0aW9uYWxQcmVk
ZWNlc3NvclNldCA9IHBvc3NpYmxlUHJlZGVjZXNzb3JzRm9ySGFuZGxlcnNbYmxvY2stPmluZGV4
KCldKSB7CisgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsUHJlZGVjZXNzb3JTZXQtPmZvckVh
Y2hTZXRCaXQoWyZdICh1bnNpZ25lZCBibG9ja0luZGV4KSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBuZXdJbi5tZXJnZShncmFwaC5iYXNpY0Jsb2NrcygpW2Jsb2NrSW5kZXhdLT5vdXQoKSk7
CisgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgICAgIGJsb2NrLT5pbigpLnNldChuZXdJbik7CisgICAgICAgICAgICAgICAgY2hhbmdlZCB8
PSBjb21wdXRlTG9jYWxTYXZlZFZhcmlhYmxlc0ZvckJsb2NrKGJsb2NrLmdldCgpKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfSB3aGlsZSAoY2hhbmdlZCk7CisgICAgfQorCitwcml2YXRlOgor
ICAgIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uJiBtX2dlbmVyYXRvcmlmaWNhdGlvbjsKK307
CisKKwordm9pZCBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbjo6cnVuKCkKK3sKKyAgICAvLyBG
aXJzdCwgd2UgY2FsY3VsYXRlIHRoZSBsaXZlbmVzcyBhdCBlYWNoIG1lcmdlIHBvaW50LiBUaGlz
IGdpdmVzIHVzIHRoZSBpbmZvcm1hdGlvbiB3aGljaCByZWdpc3RlcnMgc2hvdWxkIGJlIHNhdmVk
IGFuZCByZXN1bWVkIGNvbnNlcnZhdGl2ZWx5LgorICAgIC8vIEhvd2V2ZXIsIHRoaXMgaW5mb3Jt
YXRpb24gaXMgdG9vIGNvbnNlcnZhdGl2ZS4gV2Ugbm93IHVubmVjZXNzYXJpbHkgc2F2ZSBhbmQg
cmVzdW1lIHRoZSByZWdpc3RlcnMuCisgICAgLy8gV2hlbiB0aGUgbG9jYWwgcmVnaXN0ZXIgaXMg
cmVmZXJlbmNlZCBmcm9tIHRoZSBwb2ludCB3aGljaCBpcyBvdmVyIG11bHRpcGxlIHlpZWxkcywg
dGhlIHByb2JsZW0gaGFwcGVucy4KKyAgICAvLworICAgIC8vICAgZnVuY3Rpb24gKmdlbigpCisg
ICAgLy8gICB7CisgICAgLy8gICAgICAgdmFyIHRhcmdldCA9IDQyOworICAgIC8vICAgICAgIHlp
ZWxkIDMwOyAgLy8gSGVyZSwgd2Ugc2hvdWxkIHNhdmUgInRhcmdldCIuIEl0IGlzIE9LLiBCdXQg
YXQgdGhlIHJlc3VtZSBwb2ludCwgd2UgdW5uZWNlc3NhcnkgcmVzdW1lICJ0YXJnZXQiIGhlcmUu
CisgICAgLy8gICAgICAgeWllbGQgNDA7ICAvLyBBbmQgaGVyZSwgd2UgdW5uZWNlc3NhcmlseSBz
YXZlICJ0YXJnZXQiLCBzaW5jZSBpdCBpcyAqZGVmKmluZWQgYnkgdGhlIHByZXZpb3VzIHJlc3Vt
ZS4KKyAgICAvLyAgICAgICB5aWVsZCB0YXJnZXQ7ICAvLyBBbmQgcmVmZXJlbmNlIHRoZSAidGFy
Z2V0IiBoZXJlLgorICAgIC8vICAgfQorICAgIC8vCisgICAgLy8gSW4gdGhlIGFib3ZlIGV4YW1w
bGUsIGZpcnN0IHlpZWxkJ3MgcmVzdW1lIGFuZCBzZWNvbmQgeWllbGQncyBzYXZlIGlzIHVubmVj
ZXNzYXJ5IHNpbmNlIHRoZSB2YWx1ZSBpcyBub3QgY2hhbmdlZCBkdXJpbmcgdGhlIHNlY29uZCBj
YWxsIG9mIG5leHQoKS4KKyAgICAvLyBUbyByZWR1Y2UgdGhlIHVubmVjZXNzYXJ5IHJlZ2lzdGVy
IHNhdmUgYW5kIHJlc3VtZSwgd2UgcnVuIDIgYW5hbHlzaXMsICJyZXN1bWVkIHZhcmlhYmxlcyBh
bmFseXNpcyIgYW5kICJzYXZlZCB2YXJpYWJsZXMgYW5hbHlzaXMiLgorICAgIC8vIEF0IHRoYXQg
dGltZSwgd2UgZHJvcCB0aGUgZWRnZSBmcm9tIG9wX3NhdmUgdG8gdGhlIG1lcmdlIHBvaW50LiBT
byB0aGUgZ3JhcGggbm93IGJlY29tZXMgYXMgZm9sbG93cy4KKyAgICAvLworICAgIC8vIEJlZm9y
ZToKKyAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob2YgY291cnNlLCBzdWNoIGVkZ2VzIGNh
biBiZSBzZWVuKQorICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBvcF9yZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0rCisgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIF4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAvLyAgICAgICAgIGVudHJ5IC0+IGdlbmVy
YXRvciBzd2l0Y2ggLS0tLT4gb3Bfc2F2ZSAtLS0tLS0tLS0tLS0tLSsgICAgICAgICAgICAgICB8
ICAgICAgICBvcF9yZXQgICAgICAgICAgICAgICAgICAgfAorICAgIC8vICAgICAgICAgICAgICAg
ICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdiAgICAgICAg
ICAgICAgIHwgICAgICAgICAgXiAgICAgICAgICAgICAgICAgICAgICB8CisgICAgLy8gICAgICAg
ICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0+IG9wX3Jlc3VtZSAtLS0tLT4gbWVyZ2Ug
cG9pbnQgLT4gLi4uLi4uKy4uLi4uLT4gb3Bfc2F2ZSAtLS0tLSsgICAgICAgICAgIHwKKyAgICAv
LyAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdiAgICAgICAgICAg
dgorICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPiBvcF9yZXN1bWUgLS0tLT4gbWVyZ2UgcG9p
bnQgLT4gLi4uLi4uCisgICAgLy8KKyAgICAvLyBBZnRlcjoKKyAgICAvLyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAob2YgY291cnNlLCBzdWNoIGVkZ2VzIGNhbiBiZSBzZWVuKQorICAgIC8vICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcF9yZXQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICAg
Ly8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHwKKyAgICAvLyAgICAgICAgIGVudHJ5IC0+IGdlbmVyYXRvciBzd2l0Y2ggLS0tLT4gb3Bfc2F2
ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICBvcF9yZXQgICAgICAgICAg
ICAgICAgICAgfAorICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgXiAgICAg
ICAgICAgICAgICAgICAgICB8CisgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICArLS0tLS0t
LS0tLS0tLS0+IG9wX3Jlc3VtZSAtLS0tLT4gbWVyZ2UgcG9pbnQgLT4gLi4uLi4uKy4uLi4uLT4g
b3Bfc2F2ZSAgICAgICAgICAgICAgICAgIHwKKyAgICAvLyAgICAgICAgICAgICAgICAgICAgICAg
IHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdgorICAgIC8vICAgICAgICAgICAgICAg
ICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tPiBvcF9yZXN1bWUgLS0tLT4gbWVyZ2UgcG9pbnQgLT4gLi4uLi4uCisgICAgLy8KKyAg
ICAvLyBJbiByZXN1bWVkIHZhcmlhYmxlcyBhbmFseXNpcywgd2UganVzdCBydW4gdGhlIGxpdmVu
ZXNzIGFuYWx5c2lzIGFnYWluIG9udG8gdGhpcyAiQWZ0ZXIiIGdyYXBoLiBUaGUgYW5hbHlzaXMg
ZXh0cmFjdHMgdGhlIGxpdmVuZXNzIGF0IGVhY2ggbWVyZ2UgcG9pbnQsCisgICAgLy8gYW5kIHRo
aXMgbGl2ZW5lc3Mgb25seSBjb25zaWRlcnMgdGhlIHJlYWNoYWJsZSBibG9ja3MgZnJvbSB0aGUg
dGFyZ2V0IG9wX3Jlc3VtZS4gVGhlIHJlc3VsdCByZWdpc3RlcnMgYXJlIHNtYWxsZXIgc2V0IHRo
YW4gdGhlIHNldCB3aGljaCBpcyBleHRyYWN0ZWQgaW4KKyAgICAvLyB0aGUgcHJldmlvdXMgbGl2
ZW5lc3MgYW5hbHlzaXMuCisgICAgLy8KKyAgICAvLyBJbiBzYXZlZCB2YXJpYWJsZXMgYW5hbHlz
aXMsIHdlIHJ1biB0aGUgZm9yd2FyZCBhbmFseXNpcyBvbnRvIHRoaXMgIkFmdGVyIiBncmFwaC4g
SW4gdGhpcyBmb3J3YXJkIGFuYWx5c2lzLCB3ZSBwcm9wYWdhdGUgdGhlICJkZWYicy4KKyAgICAv
LyBUaGlzIGFuYWx5c2lzIGV4dHJhY3RzIHRoZSBuZXdseSBkZWYtZWQgcmVnaXN0ZXJzIHRoYXQg
Y2FuIHJlYWNoIHRvIHRoZSBvcF9zYXZlIHBvaW50LiBCdXQgdGhpcyBuZXdseSBkZWYtZWQgcmVn
aXN0ZXJzIGluY2x1ZGUgdGhlIHJlZ2lzdGVycyB0aGF0IHdvbid0IGJlCisgICAgLy8gdXNlZCBp
biB0aGUgc3Vic2VxdWVudCBuZXh0KCkgY2FsbHMgYWZ0ZXIgdGhpcyBvcF9zYXZlLiBTbyB3ZSBl
eHRyYWN0IHRoZSBuZWNlc3NhcmlseSBzYXZlZCByZWdpc3RlcnMgYnkgbWFza2luZyBsaXZlIHJl
Z2lzdGVycyB3aXRoIHRoaXMgbmV3bHkgZGVmLWVkIHJlZ2lzdGVycyBiaXQgc2V0LgorCisgICAg
eworICAgICAgICBHZW5lcmF0b3JMaXZlbmVzc0FuYWx5c2lzIHBhc3MoKnRoaXMpOworICAgICAg
ICBwYXNzLnJ1bigpOworICAgICAgICBmb3IgKFlpZWxkRGF0YSYgZGF0YSA6IG1feWllbGRzKQor
ICAgICAgICAgICAgZGF0YS5saXZlbmVzcyA9IHBhc3MuZ2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29k
ZU9mZnNldChkYXRhLm1lcmdlUG9pbnQpOworICAgIH0KKworICAgIHsKKyAgICAgICAgUmVzdW1l
ZFZhcmlhYmxlc0FuYWx5c2lzIHBhc3MoKnRoaXMpOworICAgICAgICBwYXNzLnJ1bigpOworICAg
ICAgICBmb3IgKFlpZWxkRGF0YSYgZGF0YSA6IG1feWllbGRzKSB7CisgICAgICAgICAgICBkYXRh
LnJlc3VtZWQgPSBkYXRhLmxpdmVuZXNzOworICAgICAgICAgICAgZGF0YS5yZXN1bWVkLmZpbHRl
cihwYXNzLmdldFJlc3VtZWRWYXJpYWJsZXNJbmZvQXRCeXRlY29kZU9mZnNldChkYXRhLm1lcmdl
UG9pbnQpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHsKKyAgICAgICAgU2F2ZWRWYXJpYWJs
ZXNBbmFseXNpcyBwYXNzKCp0aGlzKTsKKyAgICAgICAgcGFzcy5ydW4oKTsKKyAgICAgICAgZm9y
IChZaWVsZERhdGEmIGRhdGEgOiBtX3lpZWxkcykgeworICAgICAgICAgICAgZGF0YS5zYXZlZCA9
IGRhdGEubGl2ZW5lc3M7CisgICAgICAgICAgICBkYXRhLnNhdmVkLmZpbHRlcihwYXNzLmdldFNh
dmVkVmFyaWFibGVzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQoZGF0YS5zYXZlUG9pbnQpKTsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIFVubGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBtX2dyYXBo
LmNvZGVCbG9jaygpOworICAgIGZvciAoY29uc3QgWWllbGREYXRhJiBkYXRhIDogbV95aWVsZHMp
IHsKKyAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHNjb3BlID0gdmlydHVhbFJlZ2lzdGVyRm9yQXJn
dW1lbnQoNSk7CisKKyAgICAgICAgLy8gb3Bfc2F2ZS4KKyAgICAgICAgZGF0YS5zYXZlZC5mb3JF
YWNoU2V0Qml0KFsmXShzaXplX3QgaW5kZXgpIHsKKyAgICAgICAgICAgIFZpcnR1YWxSZWdpc3Rl
ciBvcGVyYW5kID0gdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaW5kZXgpOworICAgICAgICAgICAg
U3RvcmFnZSBzdG9yYWdlID0gc3RvcmFnZUZvckdlbmVyYXRvckxvY2FsKGluZGV4KTsKKworICAg
ICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0KGRhdGEuc2F2ZVBvaW50LCBCeXRlY29kZU1v
ZGlmaWNhdGlvblNldDo6SW5zZXJ0ZWRCeXRlY29kZSB7IHsKKyAgICAgICAgICAgICAgICBvcF9w
dXRfdG9fc2NvcGUsCisgICAgICAgICAgICAgICAgc2NvcGUub2Zmc2V0KCksIC8vIHNjb3BlCisg
ICAgICAgICAgICAgICAgc3RvcmFnZS5pZGVudGlmaWVySW5kZXgsIC8vIGlkZW50aWZpZXIKKyAg
ICAgICAgICAgICAgICBvcGVyYW5kLm9mZnNldCgpLCAvLyB2YWx1ZQorICAgICAgICAgICAgICAg
IEdldFB1dEluZm8oRG9Ob3RUaHJvd0lmTm90Rm91bmQsIExvY2FsQ2xvc3VyZVZhciwgSW5pdGlh
bGl6YXRpb25Nb2RlOjpOb3RJbml0aWFsaXphdGlvbikub3BlcmFuZCgpLCAvLyBpbmZvCisgICAg
ICAgICAgICAgICAgbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlSW5kZXgsIC8vIHN5bWJvbCB0
YWJsZSBjb25zdGFudCBpbmRleAorICAgICAgICAgICAgICAgIHN0b3JhZ2Uuc2NvcGVPZmZzZXQu
b2Zmc2V0KCksIC8vIHNjb3BlIG9mZnNldAorICAgICAgICAgICAgfSB9KTsKKyAgICAgICAgfSk7
CisKKyAgICAgICAgLy8gb3BfcmVzdW1lLgorICAgICAgICBkYXRhLnJlc3VtZWQuZm9yRWFjaFNl
dEJpdChbJl0oc2l6ZV90IGluZGV4KSB7CisgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgb3Bl
cmFuZCA9IHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGluZGV4KTsKKyAgICAgICAgICAgIFN0b3Jh
Z2Ugc3RvcmFnZSA9IHN0b3JhZ2VGb3JHZW5lcmF0b3JMb2NhbChpbmRleCk7CisKKyAgICAgICAg
ICAgIFVubGlua2VkVmFsdWVQcm9maWxlIHByb2ZpbGUgPSBjb2RlQmxvY2stPmFkZFZhbHVlUHJv
ZmlsZSgpOworICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0KGRhdGEucmVzdW1lUG9p
bnQsIEJ5dGVjb2RlTW9kaWZpY2F0aW9uU2V0OjpJbnNlcnRlZEJ5dGVjb2RlIHsgeworICAgICAg
ICAgICAgICAgIG9wX2dldF9mcm9tX3Njb3BlLAorICAgICAgICAgICAgICAgIG9wZXJhbmQub2Zm
c2V0KCksIC8vIGRzdAorICAgICAgICAgICAgICAgIHNjb3BlLm9mZnNldCgpLCAvLyBzY29wZQor
ICAgICAgICAgICAgICAgIHN0b3JhZ2UuaWRlbnRpZmllckluZGV4LCAvLyBpZGVudGlmaWVyCisg
ICAgICAgICAgICAgICAgR2V0UHV0SW5mbyhEb05vdFRocm93SWZOb3RGb3VuZCwgTG9jYWxDbG9z
dXJlVmFyLCBJbml0aWFsaXphdGlvbk1vZGU6Ok5vdEluaXRpYWxpemF0aW9uKS5vcGVyYW5kKCks
IC8vIGluZm8KKyAgICAgICAgICAgICAgICAwLCAvLyBsb2NhbCBzY29wZSBkZXB0aAorICAgICAg
ICAgICAgICAgIHN0b3JhZ2Uuc2NvcGVPZmZzZXQub2Zmc2V0KCksIC8vIHNjb3BlIG9mZnNldAor
ICAgICAgICAgICAgICAgIHByb2ZpbGUgLy8gcHJvZmlsZQorICAgICAgICAgICAgfSB9KTsKKyAg
ICAgICAgfSk7CisKKyAgICAgICAgLy8gQ2xpcCB0aGUgdW5uZWNlc3NhcnkgYnl0ZWNvZGVzLgor
ICAgICAgICBtX2luc2VydGlvblNldC5yZW1vdmVCeXRlY29kZShkYXRhLnNhdmVQb2ludCk7Cisg
ICAgICAgIG1faW5zZXJ0aW9uU2V0LnJlbW92ZUJ5dGVjb2RlKGRhdGEucmVzdW1lUG9pbnQpOwor
ICAgIH0KKworICAgIG1faW5zZXJ0aW9uU2V0LmV4ZWN1dGUoKTsKK30KKwordm9pZCBwZXJmb3Jt
R2VuZXJhdG9yaWZpY2F0aW9uKFVubGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFVubGlua2Vk
Q29kZUJsb2NrOjpVbnBhY2tlZEluc3RydWN0aW9ucyYgaW5zdHJ1Y3Rpb25zLCBTeW1ib2xUYWJs
ZSogZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZSwgaW50IGdlbmVyYXRvckZyYW1lU3ltYm9sVGFi
bGVJbmRleCkKK3sKKyAgICBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbiBwYXNzKGNvZGVCbG9j
aywgaW5zdHJ1Y3Rpb25zLCBnZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlLCBnZW5lcmF0b3JGcmFt
ZVN5bWJvbFRhYmxlSW5kZXgpOworICAgIHBhc3MucnVuKCk7Cit9CisKK30gLy8gbmFtZXNwYWNl
IEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
R2VuZXJhdG9yaWZpY2F0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYjdlYzk2ZWQ3MGRiYmEyMjEx
MWViMTM3NzMzZmIyMDA1NWIxMTFhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmgKQEAgLTAsMCArMSwz
NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRl
YUBnbWFpbC5jb20+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiVW5saW5r
ZWRDb2RlQmxvY2suaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIFN5bWJvbFRhYmxlOwor
Cit2b2lkIHBlcmZvcm1HZW5lcmF0b3JpZmljYXRpb24oVW5saW5rZWRDb2RlQmxvY2sqLCBVbmxp
bmtlZENvZGVCbG9jazo6VW5wYWNrZWRJbnN0cnVjdGlvbnMmLCBTeW1ib2xUYWJsZSogZ2VuZXJh
dG9yRnJhbWVTeW1ib2xUYWJsZSwgaW50IGdlbmVyYXRvckZyYW1lU3ltYm9sVGFibGVJbmRleCk7
CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlR3JhcGguaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZUdyYXBoLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjc1NTg0YjBmYTk0NzNlYjExMzI5Yzg5YTA3
OTljMDFkZTU1YjI4MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZUdyYXBoLmgKQEAgLTAsMCArMSwxMTQgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTYgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIEJ5dGVjb2RlR3JhcGhfaAorI2RlZmluZSBCeXRlY29kZUdyYXBoX2gKKwor
I2luY2x1ZGUgIkJ5dGVjb2RlQmFzaWNCbG9jay5oIgorI2luY2x1ZGUgPHd0Zi9JdGVyYXRvclJh
bmdlLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgSlNDIHsKKworY2xh
c3MgQnl0ZWNvZGVCYXNpY0Jsb2NrOworCit0ZW1wbGF0ZTx0eXBlbmFtZSBCbG9jaz4KK2NsYXNz
IEJ5dGVjb2RlR3JhcGggeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKEJ5dGVjb2RlR3JhcGgpOworcHVibGljOgorICAgIHR5cGVkZWYgVmVj
dG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiBCYXNpY0Jsb2Nrc1ZlY3Rv
cjsKKworICAgIGlubGluZSBCeXRlY29kZUdyYXBoKEJsb2NrKiwgdHlwZW5hbWUgQmxvY2s6OlVu
cGFja2VkSW5zdHJ1Y3Rpb25zJik7CisKKyAgICBCbG9jayogY29kZUJsb2NrKCkgY29uc3QgeyBy
ZXR1cm4gbV9jb2RlQmxvY2s7IH0KKworICAgIEJhc2ljQmxvY2tzVmVjdG9yJiBiYXNpY0Jsb2Nr
cygpIHsgcmV0dXJuIG1fYmFzaWNCbG9ja3M7IH0KKworICAgIHR5cGVuYW1lIEJsb2NrOjpVbnBh
Y2tlZEluc3RydWN0aW9ucyYgaW5zdHJ1Y3Rpb25zKCkgeyByZXR1cm4gbV9pbnN0cnVjdGlvbnM7
IH0KKworICAgIFdURjo6SXRlcmF0b3JSYW5nZTxCYXNpY0Jsb2Nrc1ZlY3Rvcjo6cmV2ZXJzZV9p
dGVyYXRvcj4gYmFzaWNCbG9ja3NJblJldmVyc2VPcmRlcigpCisgICAgeworICAgICAgICByZXR1
cm4gV1RGOjptYWtlSXRlcmF0b3JSYW5nZShtX2Jhc2ljQmxvY2tzLnJiZWdpbigpLCBtX2Jhc2lj
QmxvY2tzLnJlbmQoKSk7CisgICAgfQorCisgICAgc3RhdGljIGJvb2wgYmxvY2tDb250YWluc0J5
dGVjb2RlT2Zmc2V0KEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2Rl
T2Zmc2V0KQorICAgIHsKKyAgICAgICAgdW5zaWduZWQgbGVhZGVyT2Zmc2V0ID0gYmxvY2stPmxl
YWRlckJ5dGVjb2RlT2Zmc2V0KCk7CisgICAgICAgIHJldHVybiBieXRlY29kZU9mZnNldCA+PSBs
ZWFkZXJPZmZzZXQgJiYgYnl0ZWNvZGVPZmZzZXQgPCBsZWFkZXJPZmZzZXQgKyBibG9jay0+dG90
YWxCeXRlY29kZUxlbmd0aCgpOworICAgIH0KKworICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogZmlu
ZEJhc2ljQmxvY2tGb3JCeXRlY29kZU9mZnNldCh1bnNpZ25lZCBieXRlY29kZU9mZnNldCkKKyAg
ICB7CisgICAgICAgIC8qCisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9i
YXNpY0Jsb2Nrcy5zaXplKCk7IGkrKykgeworICAgICAgICAgICAgICAgIGlmIChibG9ja0NvbnRh
aW5zQnl0ZWNvZGVPZmZzZXQobV9iYXNpY0Jsb2Nrc1tpXS5nZXQoKSwgYnl0ZWNvZGVPZmZzZXQp
KQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbV9iYXNpY0Jsb2Nrc1tpXS5nZXQoKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAqLworCisgICAgICAg
IHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+KiBiYXNpY0Jsb2NrID0gYXBwcm94
aW1hdGVCaW5hcnlTZWFyY2g8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4sIHVu
c2lnbmVkPihtX2Jhc2ljQmxvY2tzLCBtX2Jhc2ljQmxvY2tzLnNpemUoKSwgYnl0ZWNvZGVPZmZz
ZXQsIFtdIChzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiogYmFzaWNCbG9jaykg
eyByZXR1cm4gKCpiYXNpY0Jsb2NrKS0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKTsgfSk7CisgICAg
ICAgIC8vIFdlIGZvdW5kIHRoZSBibG9jayB3ZSB3ZXJlIGxvb2tpbmcgZm9yLgorICAgICAgICBp
ZiAoYmxvY2tDb250YWluc0J5dGVjb2RlT2Zmc2V0KCgqYmFzaWNCbG9jaykuZ2V0KCksIGJ5dGVj
b2RlT2Zmc2V0KSkKKyAgICAgICAgICAgIHJldHVybiAoKmJhc2ljQmxvY2spLmdldCgpOworCisg
ICAgICAgIC8vIEJhc2ljIGJsb2NrIGlzIHRvIHRoZSBsZWZ0IG9mIHRoZSByZXR1cm5lZCBibG9j
ay4KKyAgICAgICAgaWYgKGJ5dGVjb2RlT2Zmc2V0IDwgKCpiYXNpY0Jsb2NrKS0+bGVhZGVyQnl0
ZWNvZGVPZmZzZXQoKSkgeworICAgICAgICAgICAgQVNTRVJUKGJhc2ljQmxvY2sgLSAxID49IG1f
YmFzaWNCbG9ja3MuZGF0YSgpKTsKKyAgICAgICAgICAgIEFTU0VSVChibG9ja0NvbnRhaW5zQnl0
ZWNvZGVPZmZzZXQoYmFzaWNCbG9ja1stMV0uZ2V0KCksIGJ5dGVjb2RlT2Zmc2V0KSk7CisgICAg
ICAgICAgICByZXR1cm4gYmFzaWNCbG9ja1stMV0uZ2V0KCk7CisgICAgICAgIH0KKworICAgICAg
ICAvLyBCYXNpYyBibG9jayBpcyB0byB0aGUgcmlnaHQgb2YgdGhlIHJldHVybmVkIGJsb2NrLgor
ICAgICAgICBBU1NFUlQoJmJhc2ljQmxvY2tbMV0gPD0gJm1fYmFzaWNCbG9ja3MubGFzdCgpKTsK
KyAgICAgICAgQVNTRVJUKGJsb2NrQ29udGFpbnNCeXRlY29kZU9mZnNldChiYXNpY0Jsb2NrWzFd
LmdldCgpLCBieXRlY29kZU9mZnNldCkpOworICAgICAgICByZXR1cm4gYmFzaWNCbG9ja1sxXS5n
ZXQoKTsKKyAgICB9CisKKyAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGZpbmRCYXNpY0Jsb2NrV2l0
aExlYWRlck9mZnNldCh1bnNpZ25lZCBsZWFkZXJPZmZzZXQpCisgICAgeworICAgICAgICByZXR1
cm4gKCp0cnlCaW5hcnlTZWFyY2g8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4s
IHVuc2lnbmVkPihtX2Jhc2ljQmxvY2tzLCBtX2Jhc2ljQmxvY2tzLnNpemUoKSwgbGVhZGVyT2Zm
c2V0LCBbXSAoc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4qIGJhc2ljQmxvY2sp
IHsgcmV0dXJuICgqYmFzaWNCbG9jayktPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCk7IH0pKS5nZXQo
KTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQmxvY2sqIG1fY29kZUJsb2NrOworICAgIEJhc2lj
QmxvY2tzVmVjdG9yIG1fYmFzaWNCbG9ja3M7CisgICAgdHlwZW5hbWUgQmxvY2s6OlVucGFja2Vk
SW5zdHJ1Y3Rpb25zJiBtX2luc3RydWN0aW9uczsKK307CisKKwordGVtcGxhdGU8dHlwZW5hbWUg
QmxvY2s+CitCeXRlY29kZUdyYXBoPEJsb2NrPjo6Qnl0ZWNvZGVHcmFwaChCbG9jayogY29kZUJs
b2NrLCB0eXBlbmFtZSBCbG9jazo6VW5wYWNrZWRJbnN0cnVjdGlvbnMmIGluc3RydWN0aW9ucykK
KyAgICA6IG1fY29kZUJsb2NrKGNvZGVCbG9jaykKKyAgICAsIG1faW5zdHJ1Y3Rpb25zKGluc3Ry
dWN0aW9ucykKK3sKKyAgICBBU1NFUlQobV9jb2RlQmxvY2spOworICAgIEJ5dGVjb2RlQmFzaWNC
bG9jazo6Y29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MobV9jb2RlQmxvY2ssIGluc3RydWN0aW9u
cy5iZWdpbigpLCBpbnN0cnVjdGlvbnMuc2l6ZSgpLCBtX2Jhc2ljQmxvY2tzKTsKKyAgICBBU1NF
UlQobV9iYXNpY0Jsb2Nrcy5zaXplKCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKyNlbmRp
ZiAvLyBCeXRlY29kZUdyYXBoX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAKaW5kZXggMTdlODJhMmZi
YmEwMTUwNDNlOTlkMzRlZDI1NjkzNzJiMzZmN2E4NS4uZWI0NTlkMTI5N2M5ZjczOWVlOWZiYWEx
MzAzN2Y4OWY4ZTg2YWIyZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAKQEAgLTMxLDc0ICszMSwy
MSBAQAogI2luY2x1ZGUgIkJ5dGVjb2RlVXNlRGVmLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgi
CiAjaW5jbHVkZSAiRnVsbEJ5dGVjb2RlTGl2ZW5lc3MuaCIKKyNpbmNsdWRlICJJbnRlcnByZXRl
cklubGluZXMuaCIKICNpbmNsdWRlICJQcmVjaXNlSnVtcFRhcmdldHMuaCIKIAogbmFtZXNwYWNl
IEpTQyB7CiAKIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5
c2lzKENvZGVCbG9jayogY29kZUJsb2NrKQotICAgIDogbV9jb2RlQmxvY2soY29kZUJsb2NrKQor
ICAgIDogbV9ncmFwaChjb2RlQmxvY2ssIGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkpCiB7Ci0g
ICAgQVNTRVJUKG1fY29kZUJsb2NrKTsKICAgICBjb21wdXRlKCk7CiB9CiAKLXN0YXRpYyBib29s
IGlzVmFsaWRSZWdpc3RlckZvckxpdmVuZXNzKENvZGVCbG9jayogY29kZUJsb2NrLCBpbnQgb3Bl
cmFuZCkKLXsKLSAgICBpZiAoY29kZUJsb2NrLT5pc0NvbnN0YW50UmVnaXN0ZXJJbmRleChvcGVy
YW5kKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIAotICAgIFZpcnR1YWxSZWdpc3RlciB2
aXJ0dWFsUmVnKG9wZXJhbmQpOwotICAgIHJldHVybiB2aXJ0dWFsUmVnLmlzTG9jYWwoKTsKLX0K
LQotc3RhdGljIHVuc2lnbmVkIGdldExlYWRlck9mZnNldEZvckJhc2ljQmxvY2soc3RkOjp1bmlx
dWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4qIGJhc2ljQmxvY2spCi17Ci0gICAgcmV0dXJuICgq
YmFzaWNCbG9jayktPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCk7Ci19Ci0KLXN0YXRpYyBCeXRlY29k
ZUJhc2ljQmxvY2sqIGZpbmRCYXNpY0Jsb2NrV2l0aExlYWRlck9mZnNldChWZWN0b3I8c3RkOjp1
bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+JiBiYXNpY0Jsb2NrcywgdW5zaWduZWQgbGVh
ZGVyT2Zmc2V0KQotewotICAgIHJldHVybiAoKnRyeUJpbmFyeVNlYXJjaDxzdGQ6OnVuaXF1ZV9w
dHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiwgdW5zaWduZWQ+KGJhc2ljQmxvY2tzLCBiYXNpY0Jsb2Nr
cy5zaXplKCksIGxlYWRlck9mZnNldCwgZ2V0TGVhZGVyT2Zmc2V0Rm9yQmFzaWNCbG9jaykpLmdl
dCgpOwotfQotCi1zdGF0aWMgYm9vbCBibG9ja0NvbnRhaW5zQnl0ZWNvZGVPZmZzZXQoQnl0ZWNv
ZGVCYXNpY0Jsb2NrKiBibG9jaywgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpCi17Ci0gICAgdW5z
aWduZWQgbGVhZGVyT2Zmc2V0ID0gYmxvY2stPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCk7Ci0gICAg
cmV0dXJuIGJ5dGVjb2RlT2Zmc2V0ID49IGxlYWRlck9mZnNldCAmJiBieXRlY29kZU9mZnNldCA8
IGxlYWRlck9mZnNldCArIGJsb2NrLT50b3RhbEJ5dGVjb2RlTGVuZ3RoKCk7Ci19Ci0KLXN0YXRp
YyBCeXRlY29kZUJhc2ljQmxvY2sqIGZpbmRCYXNpY0Jsb2NrRm9yQnl0ZWNvZGVPZmZzZXQoVmVj
dG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9ja3MsIHVu
c2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KQotewotLyoKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgYmFzaWNCbG9ja3Muc2l6ZSgpOyBpKyspIHsKLSAgICAgICAgaWYgKGJsb2NrQ29udGFpbnNC
eXRlY29kZU9mZnNldChiYXNpY0Jsb2Nrc1tpXS5nZXQoKSwgYnl0ZWNvZGVPZmZzZXQpKQotICAg
ICAgICAgICAgcmV0dXJuIGJhc2ljQmxvY2tzW2ldLmdldCgpOwotICAgIH0KLSAgICByZXR1cm4g
MDsKLSovCi0gICAgc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4qIGJhc2ljQmxv
Y2sgPSBhcHByb3hpbWF0ZUJpbmFyeVNlYXJjaDxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNp
Y0Jsb2NrPiwgdW5zaWduZWQ+KAotICAgICAgICBiYXNpY0Jsb2NrcywgYmFzaWNCbG9ja3Muc2l6
ZSgpLCBieXRlY29kZU9mZnNldCwgZ2V0TGVhZGVyT2Zmc2V0Rm9yQmFzaWNCbG9jayk7Ci0gICAg
Ly8gV2UgZm91bmQgdGhlIGJsb2NrIHdlIHdlcmUgbG9va2luZyBmb3IuCi0gICAgaWYgKGJsb2Nr
Q29udGFpbnNCeXRlY29kZU9mZnNldCgoKmJhc2ljQmxvY2spLmdldCgpLCBieXRlY29kZU9mZnNl
dCkpCi0gICAgICAgIHJldHVybiAoKmJhc2ljQmxvY2spLmdldCgpOwotCi0gICAgLy8gQmFzaWMg
YmxvY2sgaXMgdG8gdGhlIGxlZnQgb2YgdGhlIHJldHVybmVkIGJsb2NrLgotICAgIGlmIChieXRl
Y29kZU9mZnNldCA8ICgqYmFzaWNCbG9jayktPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCkpIHsKLSAg
ICAgICAgQVNTRVJUKGJhc2ljQmxvY2sgLSAxID49IGJhc2ljQmxvY2tzLmRhdGEoKSk7Ci0gICAg
ICAgIEFTU0VSVChibG9ja0NvbnRhaW5zQnl0ZWNvZGVPZmZzZXQoYmFzaWNCbG9ja1stMV0uZ2V0
KCksIGJ5dGVjb2RlT2Zmc2V0KSk7Ci0gICAgICAgIHJldHVybiBiYXNpY0Jsb2NrWy0xXS5nZXQo
KTsKLSAgICB9Ci0KLSAgICAvLyBCYXNpYyBibG9jayBpcyB0byB0aGUgcmlnaHQgb2YgdGhlIHJl
dHVybmVkIGJsb2NrLgotICAgIEFTU0VSVCgmYmFzaWNCbG9ja1sxXSA8PSAmYmFzaWNCbG9ja3Mu
bGFzdCgpKTsKLSAgICBBU1NFUlQoYmxvY2tDb250YWluc0J5dGVjb2RlT2Zmc2V0KGJhc2ljQmxv
Y2tbMV0uZ2V0KCksIGJ5dGVjb2RlT2Zmc2V0KSk7Ci0gICAgcmV0dXJuIGJhc2ljQmxvY2tbMV0u
Z2V0KCk7Ci19Ci0KIC8vIFNpbXBsaWZpZWQgaW50ZXJmYWNlIHRvIGJ5dGVjb2RlIHVzZS9kZWYs
IHdoaWNoIGRldGVybWluZXMgZGVmcyBmaXJzdCBhbmQgdGhlbiB1c2VzLCBhbmQgaW5jbHVkZXMK
IC8vIGV4Y2VwdGlvbiBoYW5kbGVycyBpbiB0aGUgdXNlcy4KIHRlbXBsYXRlPHR5cGVuYW1lIFVz
ZUZ1bmN0b3IsIHR5cGVuYW1lIERlZkZ1bmN0b3I+Ci1zdGF0aWMgdm9pZCBzdGVwT3Zlckluc3Ry
dWN0aW9uKENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrLCBW
ZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+JiBiYXNpY0Jsb2Nrcywg
dW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIGNvbnN0IFVzZUZ1bmN0b3ImIHVzZSwgY29uc3QgRGVm
RnVuY3RvciYgZGVmKQorc3RhdGljIHZvaWQgc3RlcE92ZXJJbnN0cnVjdGlvbihCeXRlY29kZUdy
YXBoPENvZGVCbG9jaz4mIGdyYXBoLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgY29uc3QgVXNl
RnVuY3RvciYgdXNlLCBjb25zdCBEZWZGdW5jdG9yJiBkZWYpCiB7CiAgICAgLy8gVGhpcyBhYnN0
cmFjdGx5IGV4ZWN1dGUgdGhlIGluc3RydWN0aW9uIGluIHJldmVyc2UuIEluc3RydWN0aW9ucyBs
b2dpY2FsbHkgZmlyc3QgdXNlIG9wZXJhbmRzIGFuZAogICAgIC8vIHRoZW4gZGVmaW5lIG9wZXJh
bmRzLiBUaGlzIGxvZ2ljYWwgb3JkZXJpbmcgaXMgbmVjZXNzYXJ5IGZvciBvcGVyYXRpb25zIHRo
YXQgdXNlIGFuZCBkZWYgdGhlIHNhbWUKQEAgLTExNSw0MSArNjIsMzUgQEAgc3RhdGljIHZvaWQg
c3RlcE92ZXJJbnN0cnVjdGlvbihDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Js
b2NrKiBibG9jaywKICAgICAvLyB1c2VzIGJlZm9yZSBkZWZzLCB0aGVuIHRoZSBhZGQgb3BlcmF0
aW9uIGFib3ZlIHdvdWxkIGFwcGVhciB0byBub3QgaGF2ZSBsb2MxIGxpdmUsIHNpbmNlIHdlJ2QK
ICAgICAvLyBmaXJzdCBhZGQgaXQgdG8gdGhlIG91dCBzZXQgKHRoZSB1c2UpLCBhbmQgdGhlbiB3
ZSdkIHJlbW92ZSBpdCAodGhlIGRlZikuCiAgICAgCisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sg
PSBncmFwaC5jb2RlQmxvY2soKTsKKwogICAgIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQo
Ci0gICAgICAgIGNvZGVCbG9jaywgYmxvY2ssIGJ5dGVjb2RlT2Zmc2V0LAotICAgICAgICBbJl0g
KENvZGVCbG9jayogY29kZUJsb2NrLCBJbnN0cnVjdGlvbiosIE9wY29kZUlELCBpbnQgb3BlcmFu
ZCkgewotICAgICAgICAgICAgaWYgKGlzVmFsaWRSZWdpc3RlckZvckxpdmVuZXNzKGNvZGVCbG9j
aywgb3BlcmFuZCkpCisgICAgICAgIGNvZGVCbG9jaywgYnl0ZWNvZGVPZmZzZXQsCisgICAgICAg
IFsmXSAoQ29kZUJsb2NrKiwgSW5zdHJ1Y3Rpb24qLCBPcGNvZGVJRCwgaW50IG9wZXJhbmQpIHsK
KyAgICAgICAgICAgIGlmIChpc1ZhbGlkUmVnaXN0ZXJGb3JMaXZlbmVzcyhvcGVyYW5kKSkKICAg
ICAgICAgICAgICAgICBkZWYoVmlydHVhbFJlZ2lzdGVyKG9wZXJhbmQpLnRvTG9jYWwoKSk7CiAg
ICAgICAgIH0pOwogCiAgICAgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCgKLSAgICAgICAg
Y29kZUJsb2NrLCBibG9jaywgYnl0ZWNvZGVPZmZzZXQsCi0gICAgICAgIFsmXSAoQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIEluc3RydWN0aW9uKiwgT3Bjb2RlSUQsIGludCBvcGVyYW5kKSB7Ci0gICAg
ICAgICAgICBpZiAoaXNWYWxpZFJlZ2lzdGVyRm9yTGl2ZW5lc3MoY29kZUJsb2NrLCBvcGVyYW5k
KSkKKyAgICAgICAgY29kZUJsb2NrLCBieXRlY29kZU9mZnNldCwKKyAgICAgICAgWyZdIChDb2Rl
QmxvY2sqLCBJbnN0cnVjdGlvbiosIE9wY29kZUlELCBpbnQgb3BlcmFuZCkgeworICAgICAgICAg
ICAgaWYgKGlzVmFsaWRSZWdpc3RlckZvckxpdmVuZXNzKG9wZXJhbmQpKQogICAgICAgICAgICAg
ICAgIHVzZShWaXJ0dWFsUmVnaXN0ZXIob3BlcmFuZCkudG9Mb2NhbCgpKTsKICAgICAgICAgfSk7
CiAKICAgICAvLyBJZiB3ZSBoYXZlIGFuIGV4Y2VwdGlvbiBoYW5kbGVyLCB3ZSB3YW50IHRoZSBs
aXZlLWluIHZhcmlhYmxlcyBvZiB0aGUgCiAgICAgLy8gZXhjZXB0aW9uIGhhbmRsZXIgYmxvY2sg
dG8gYmUgaW5jbHVkZWQgaW4gdGhlIGxpdmUtaW4gb2YgdGhpcyBwYXJ0aWN1bGFyIGJ5dGVjb2Rl
LgogICAgIGlmIChIYW5kbGVySW5mbyogaGFuZGxlciA9IGNvZGVCbG9jay0+aGFuZGxlckZvckJ5
dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KSkgewotICAgICAgICAvLyBGSVhNRTogVGhpcyBy
ZXN1bWUgY2hlY2sgc2hvdWxkIG5vdCBiZSBuZWVkZWQuCi0gICAgICAgIC8vIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTkyODEKLSAgICAgICAgSW50ZXJwcmV0ZXIq
IGludGVycHJldGVyID0gY29kZUJsb2NrLT52bSgpLT5pbnRlcnByZXRlcjsKLSAgICAgICAgSW5z
dHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luID0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5i
ZWdpbigpOwotICAgICAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSAmaW5zdHJ1Y3Rpb25z
QmVnaW5bYnl0ZWNvZGVPZmZzZXRdOwotICAgICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGludGVy
cHJldGVyLT5nZXRPcGNvZGVJRChpbnN0cnVjdGlvbi0+dS5vcGNvZGUpOwotICAgICAgICBpZiAo
b3Bjb2RlSUQgIT0gb3BfcmVzdW1lKSB7Ci0gICAgICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2sq
IGhhbmRsZXJCbG9jayA9IGZpbmRCYXNpY0Jsb2NrV2l0aExlYWRlck9mZnNldChiYXNpY0Jsb2Nr
cywgaGFuZGxlci0+dGFyZ2V0KTsKLSAgICAgICAgICAgIEFTU0VSVChoYW5kbGVyQmxvY2spOwot
ICAgICAgICAgICAgaGFuZGxlckJsb2NrLT5pbigpLmZvckVhY2hTZXRCaXQodXNlKTsKLSAgICAg
ICAgfQorICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGhhbmRsZXJCbG9jayA9IGdyYXBoLmZp
bmRCYXNpY0Jsb2NrV2l0aExlYWRlck9mZnNldChoYW5kbGVyLT50YXJnZXQpOworICAgICAgICBB
U1NFUlQoaGFuZGxlckJsb2NrKTsKKyAgICAgICAgaGFuZGxlckJsb2NrLT5pbigpLmZvckVhY2hT
ZXRCaXQodXNlKTsKICAgICB9CiB9CiAKLXN0YXRpYyB2b2lkIHN0ZXBPdmVySW5zdHJ1Y3Rpb24o
Q29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2ssIFZlY3Rvcjxz
dGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mIGJhc2ljQmxvY2tzLCB1bnNpZ25l
ZCBieXRlY29kZU9mZnNldCwgRmFzdEJpdFZlY3RvciYgb3V0KQorc3RhdGljIHZvaWQgc3RlcE92
ZXJJbnN0cnVjdGlvbihCeXRlY29kZUdyYXBoPENvZGVCbG9jaz4mIGdyYXBoLCB1bnNpZ25lZCBi
eXRlY29kZU9mZnNldCwgRmFzdEJpdFZlY3RvciYgb3V0KQogewogICAgIHN0ZXBPdmVySW5zdHJ1
Y3Rpb24oCi0gICAgICAgIGNvZGVCbG9jaywgYmxvY2ssIGJhc2ljQmxvY2tzLCBieXRlY29kZU9m
ZnNldCwKKyAgICAgICAgZ3JhcGgsIGJ5dGVjb2RlT2Zmc2V0LAogICAgICAgICBbJl0gKHVuc2ln
bmVkIGJpdEluZGV4KSB7CiAgICAgICAgICAgICAvLyBUaGlzIGlzIHRoZSB1c2UgZnVuY3Rvciwg
c28gd2Ugc2V0IHRoZSBiaXQuCiAgICAgICAgICAgICBvdXQuc2V0KGJpdEluZGV4KTsKQEAgLTE2
MCw3ICsxMDEsNyBAQCBzdGF0aWMgdm9pZCBzdGVwT3Zlckluc3RydWN0aW9uKENvZGVCbG9jayog
Y29kZUJsb2NrLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrLAogICAgICAgICB9KTsKIH0KIAot
c3RhdGljIHZvaWQgY29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCeXRlY29kZU9mZnNldChDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaywgVmVjdG9yPHN0ZDo6dW5p
cXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9ja3MsIHVuc2lnbmVkIHRhcmdl
dE9mZnNldCwgRmFzdEJpdFZlY3RvciYgcmVzdWx0KQorc3RhdGljIHZvaWQgY29tcHV0ZUxvY2Fs
TGl2ZW5lc3NGb3JCeXRlY29kZU9mZnNldChCeXRlY29kZUdyYXBoPENvZGVCbG9jaz4mIGdyYXBo
LCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrLCB1bnNpZ25lZCB0YXJnZXRPZmZzZXQsIEZhc3RC
aXRWZWN0b3ImIHJlc3VsdCkKIHsKICAgICBBU1NFUlQoIWJsb2NrLT5pc0V4aXRCbG9jaygpKTsK
ICAgICBBU1NFUlQoIWJsb2NrLT5pc0VudHJ5QmxvY2soKSk7CkBAIC0xNzIsNDQgKzExMyw0NCBA
QCBzdGF0aWMgdm9pZCBjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVC
bG9jayogY29kZUJsb2NrLCBCeXRlY29kZQogICAgICAgICBpZiAodGFyZ2V0T2Zmc2V0ID4gYnl0
ZWNvZGVPZmZzZXQpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgCi0gICAgICAgIHN0ZXBP
dmVySW5zdHJ1Y3Rpb24oY29kZUJsb2NrLCBibG9jaywgYmFzaWNCbG9ja3MsIGJ5dGVjb2RlT2Zm
c2V0LCBvdXQpOworICAgICAgICBzdGVwT3Zlckluc3RydWN0aW9uKGdyYXBoLCBieXRlY29kZU9m
ZnNldCwgb3V0KTsKICAgICB9CiAKICAgICByZXN1bHQuc2V0KG91dCk7CiB9CiAKLXN0YXRpYyB2
b2lkIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQmxvY2soQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5
dGVjb2RlQmFzaWNCbG9jayogYmxvY2ssIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVC
YXNpY0Jsb2NrPj4mIGJhc2ljQmxvY2tzKQorc3RhdGljIHZvaWQgY29tcHV0ZUxvY2FsTGl2ZW5l
c3NGb3JCbG9jayhCeXRlY29kZUdyYXBoPENvZGVCbG9jaz4mIGdyYXBoLCBCeXRlY29kZUJhc2lj
QmxvY2sqIGJsb2NrKQogewogICAgIGlmIChibG9jay0+aXNFeGl0QmxvY2soKSB8fCBibG9jay0+
aXNFbnRyeUJsb2NrKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBjb21wdXRlTG9jYWxMaXZlbmVz
c0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9jaywgYmxvY2ssIGJhc2ljQmxvY2tzLCBibG9jay0+
bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKSwgYmxvY2stPmluKCkpOworICAgIGNvbXB1dGVMb2NhbExp
dmVuZXNzRm9yQnl0ZWNvZGVPZmZzZXQoZ3JhcGgsIGJsb2NrLCBibG9jay0+bGVhZGVyQnl0ZWNv
ZGVPZmZzZXQoKSwgYmxvY2stPmluKCkpOwogfQogCiB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFs
eXNpczo6cnVuTGl2ZW5lc3NGaXhwb2ludCgpCiB7Ci0gICAgVW5saW5rZWRDb2RlQmxvY2sqIHVu
bGlua2VkQ29kZUJsb2NrID0gbV9jb2RlQmxvY2stPnVubGlua2VkQ29kZUJsb2NrKCk7CisgICAg
Q29kZUJsb2NrKiBjb2RlQmxvY2sgPSBtX2dyYXBoLmNvZGVCbG9jaygpOworICAgIFVubGlua2Vk
Q29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jayA9IGNvZGVCbG9jay0+dW5saW5rZWRDb2RlQmxv
Y2soKTsKICAgICB1bnNpZ25lZCBudW1iZXJPZlZhcmlhYmxlcyA9IHVubGlua2VkQ29kZUJsb2Nr
LT5tX251bUNhbGxlZUxvY2FsczsKIAotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2Jh
c2ljQmxvY2tzLnNpemUoKTsgaSsrKSB7Ci0gICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxv
Y2sgPSBtX2Jhc2ljQmxvY2tzW2ldLmdldCgpOworICAgIGZvciAoc3RkOjp1bmlxdWVfcHRyPEJ5
dGVjb2RlQmFzaWNCbG9jaz4mIGJsb2NrIDogbV9ncmFwaC5iYXNpY0Jsb2NrcygpKSB7CiAgICAg
ICAgIGJsb2NrLT5pbigpLnJlc2l6ZShudW1iZXJPZlZhcmlhYmxlcyk7CiAgICAgICAgIGJsb2Nr
LT5vdXQoKS5yZXNpemUobnVtYmVyT2ZWYXJpYWJsZXMpOwogICAgIH0KIAogICAgIGJvb2wgY2hh
bmdlZDsKLSAgICBtX2Jhc2ljQmxvY2tzLmxhc3QoKS0+aW4oKS5jbGVhckFsbCgpOwotICAgIG1f
YmFzaWNCbG9ja3MubGFzdCgpLT5vdXQoKS5jbGVhckFsbCgpOworICAgIEJ5dGVjb2RlQmFzaWNC
bG9jayogbGFzdEJsb2NrID0gbV9ncmFwaC5iYXNpY0Jsb2NrcygpLmxhc3QoKS5nZXQoKTsKKyAg
ICBsYXN0QmxvY2stPmluKCkuY2xlYXJBbGwoKTsKKyAgICBsYXN0QmxvY2stPm91dCgpLmNsZWFy
QWxsKCk7CiAgICAgRmFzdEJpdFZlY3RvciBuZXdPdXQ7Ci0gICAgbmV3T3V0LnJlc2l6ZShtX2Jh
c2ljQmxvY2tzLmxhc3QoKS0+b3V0KCkubnVtQml0cygpKTsKKyAgICBuZXdPdXQucmVzaXplKGxh
c3RCbG9jay0+b3V0KCkubnVtQml0cygpKTsKICAgICBkbyB7CiAgICAgICAgIGNoYW5nZWQgPSBm
YWxzZTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9iYXNpY0Jsb2Nrcy5zaXplKCkgLSAx
OyBpLS07KSB7Ci0gICAgICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrID0gbV9iYXNp
Y0Jsb2Nrc1tpXS5nZXQoKTsKKyAgICAgICAgZm9yIChzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVC
YXNpY0Jsb2NrPiYgYmxvY2sgOiBtX2dyYXBoLmJhc2ljQmxvY2tzSW5SZXZlcnNlT3JkZXIoKSkg
ewogICAgICAgICAgICAgbmV3T3V0LmNsZWFyQWxsKCk7Ci0gICAgICAgICAgICBmb3IgKHVuc2ln
bmVkIGogPSAwOyBqIDwgYmxvY2stPnN1Y2Nlc3NvcnMoKS5zaXplKCk7IGorKykKLSAgICAgICAg
ICAgICAgICBuZXdPdXQubWVyZ2UoYmxvY2stPnN1Y2Nlc3NvcnMoKVtqXS0+aW4oKSk7CisgICAg
ICAgICAgICBmb3IgKEJ5dGVjb2RlQmFzaWNCbG9jayogc3VjY2Vzc29yIDogYmxvY2stPnN1Y2Nl
c3NvcnMoKSkKKyAgICAgICAgICAgICAgICBuZXdPdXQubWVyZ2Uoc3VjY2Vzc29yLT5pbigpKTsK
ICAgICAgICAgICAgIGJvb2wgb3V0RGlkQ2hhbmdlID0gYmxvY2stPm91dCgpLnNldEFuZENoZWNr
KG5ld091dCk7Ci0gICAgICAgICAgICBjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJsb2NrKG1fY29k
ZUJsb2NrLCBibG9jaywgbV9iYXNpY0Jsb2Nrcyk7CisgICAgICAgICAgICBjb21wdXRlTG9jYWxM
aXZlbmVzc0ZvckJsb2NrKG1fZ3JhcGgsIGJsb2NrLmdldCgpKTsKICAgICAgICAgICAgIGNoYW5n
ZWQgfD0gb3V0RGlkQ2hhbmdlOwogICAgICAgICB9CiAgICAgfSB3aGlsZSAoY2hhbmdlZCk7CkBA
IC0yMTcsMTIgKzE1OCwxMiBAQCB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6cnVuTGl2
ZW5lc3NGaXhwb2ludCgpCiAKIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpnZXRMaXZl
bmVzc0luZm9BdEJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBGYXN0Qml0
VmVjdG9yJiByZXN1bHQpCiB7Ci0gICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jayA9IGZpbmRC
YXNpY0Jsb2NrRm9yQnl0ZWNvZGVPZmZzZXQobV9iYXNpY0Jsb2NrcywgYnl0ZWNvZGVPZmZzZXQp
OworICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2sgPSBtX2dyYXBoLmZpbmRCYXNpY0Jsb2Nr
Rm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpOwogICAgIEFTU0VSVChibG9jayk7CiAg
ICAgQVNTRVJUKCFibG9jay0+aXNFbnRyeUJsb2NrKCkpOwogICAgIEFTU0VSVCghYmxvY2stPmlz
RXhpdEJsb2NrKCkpOwogICAgIHJlc3VsdC5yZXNpemUoYmxvY2stPm91dCgpLm51bUJpdHMoKSk7
Ci0gICAgY29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCeXRlY29kZU9mZnNldChtX2NvZGVCbG9jaywg
YmxvY2ssIG1fYmFzaWNCbG9ja3MsIGJ5dGVjb2RlT2Zmc2V0LCByZXN1bHQpOworICAgIGNvbXB1
dGVMb2NhbExpdmVuZXNzRm9yQnl0ZWNvZGVPZmZzZXQobV9ncmFwaCwgYmxvY2ssIGJ5dGVjb2Rl
T2Zmc2V0LCByZXN1bHQpOwogfQogCiBib29sIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6b3Bl
cmFuZElzTGl2ZUF0Qnl0ZWNvZGVPZmZzZXQoaW50IG9wZXJhbmQsIHVuc2lnbmVkIGJ5dGVjb2Rl
T2Zmc2V0KQpAQCAtMjQ0LDExICsxODUsMTEgQEAgRmFzdEJpdFZlY3RvciBCeXRlY29kZUxpdmVu
ZXNzQW5hbHlzaXM6OmdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQodW5zaWduZWQKIHZv
aWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlRnVsbExpdmVuZXNzKEZ1bGxCeXRl
Y29kZUxpdmVuZXNzJiByZXN1bHQpCiB7CiAgICAgRmFzdEJpdFZlY3RvciBvdXQ7CisgICAgQ29k
ZUJsb2NrKiBjb2RlQmxvY2sgPSBtX2dyYXBoLmNvZGVCbG9jaygpOwogICAgIAotICAgIHJlc3Vs
dC5tX21hcC5yZXNpemUobV9jb2RlQmxvY2stPmluc3RydWN0aW9ucygpLnNpemUoKSk7CisgICAg
cmVzdWx0Lm1fbWFwLnJlc2l6ZShjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLnNpemUoKSk7CiAg
ICAgCi0gICAgZm9yICh1bnNpZ25lZCBpID0gbV9iYXNpY0Jsb2Nrcy5zaXplKCk7IGktLTspIHsK
LSAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jayA9IG1fYmFzaWNCbG9ja3NbaV0uZ2V0
KCk7CisgICAgZm9yIChzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiYgYmxvY2sg
OiBtX2dyYXBoLmJhc2ljQmxvY2tzSW5SZXZlcnNlT3JkZXIoKSkgewogICAgICAgICBpZiAoYmxv
Y2stPmlzRW50cnlCbG9jaygpIHx8IGJsb2NrLT5pc0V4aXRCbG9jaygpKQogICAgICAgICAgICAg
Y29udGludWU7CiAgICAgICAgIApAQCAtMjU2LDcgKzE5Nyw3IEBAIHZvaWQgQnl0ZWNvZGVMaXZl
bmVzc0FuYWx5c2lzOjpjb21wdXRlRnVsbExpdmVuZXNzKEZ1bGxCeXRlY29kZUxpdmVuZXNzJiBy
ZXN1bHQpCiAgICAgICAgIAogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBibG9jay0+Ynl0ZWNv
ZGVPZmZzZXRzKCkuc2l6ZSgpOyBpLS07KSB7CiAgICAgICAgICAgICB1bnNpZ25lZCBieXRlY29k
ZU9mZnNldCA9IGJsb2NrLT5ieXRlY29kZU9mZnNldHMoKVtpXTsKLSAgICAgICAgICAgIHN0ZXBP
dmVySW5zdHJ1Y3Rpb24obV9jb2RlQmxvY2ssIGJsb2NrLCBtX2Jhc2ljQmxvY2tzLCBieXRlY29k
ZU9mZnNldCwgb3V0KTsKKyAgICAgICAgICAgIHN0ZXBPdmVySW5zdHJ1Y3Rpb24obV9ncmFwaCwg
Ynl0ZWNvZGVPZmZzZXQsIG91dCk7CiAgICAgICAgICAgICByZXN1bHQubV9tYXBbYnl0ZWNvZGVP
ZmZzZXRdID0gb3V0OwogICAgICAgICB9CiAgICAgfQpAQCAtMjY2LDExICsyMDcsMTEgQEAgdm9p
ZCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGVLaWxscyhCeXRlY29kZUtpbGxzJiBy
ZXN1bHQpCiB7CiAgICAgRmFzdEJpdFZlY3RvciBvdXQ7CiAgICAgCi0gICAgcmVzdWx0Lm1fY29k
ZUJsb2NrID0gbV9jb2RlQmxvY2s7Ci0gICAgcmVzdWx0Lm1fa2lsbFNldHMgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEJ5dGVjb2RlS2lsbHM6OktpbGxTZXRbXT4obV9jb2RlQmxvY2stPmluc3RydWN0aW9u
cygpLnNpemUoKSk7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBtX2dyYXBoLmNvZGVCbG9j
aygpOworICAgIHJlc3VsdC5tX2NvZGVCbG9jayA9IGNvZGVCbG9jazsKKyAgICByZXN1bHQubV9r
aWxsU2V0cyA9IHN0ZDo6bWFrZV91bmlxdWU8Qnl0ZWNvZGVLaWxsczo6S2lsbFNldFtdPihjb2Rl
QmxvY2stPmluc3RydWN0aW9ucygpLnNpemUoKSk7CiAgICAgCi0gICAgZm9yICh1bnNpZ25lZCBp
ID0gbV9iYXNpY0Jsb2Nrcy5zaXplKCk7IGktLTspIHsKLSAgICAgICAgQnl0ZWNvZGVCYXNpY0Js
b2NrKiBibG9jayA9IG1fYmFzaWNCbG9ja3NbaV0uZ2V0KCk7CisgICAgZm9yIChzdGQ6OnVuaXF1
ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiYgYmxvY2sgOiBtX2dyYXBoLmJhc2ljQmxvY2tzSW5S
ZXZlcnNlT3JkZXIoKSkgewogICAgICAgICBpZiAoYmxvY2stPmlzRW50cnlCbG9jaygpIHx8IGJs
b2NrLT5pc0V4aXRCbG9jaygpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIApAQCAt
Mjc5LDcgKzIyMCw3IEBAIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlS2ls
bHMoQnl0ZWNvZGVLaWxscyYgcmVzdWx0KQogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBibG9j
ay0+Ynl0ZWNvZGVPZmZzZXRzKCkuc2l6ZSgpOyBpLS07KSB7CiAgICAgICAgICAgICB1bnNpZ25l
ZCBieXRlY29kZU9mZnNldCA9IGJsb2NrLT5ieXRlY29kZU9mZnNldHMoKVtpXTsKICAgICAgICAg
ICAgIHN0ZXBPdmVySW5zdHJ1Y3Rpb24oCi0gICAgICAgICAgICAgICAgbV9jb2RlQmxvY2ssIGJs
b2NrLCBtX2Jhc2ljQmxvY2tzLCBieXRlY29kZU9mZnNldCwKKyAgICAgICAgICAgICAgICBtX2dy
YXBoLCBieXRlY29kZU9mZnNldCwKICAgICAgICAgICAgICAgICBbJl0gKHVuc2lnbmVkIGluZGV4
KSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgZm9yIHVzZXMuCiAgICAgICAgICAg
ICAgICAgICAgIGlmIChvdXQuZ2V0KGluZGV4KSkKQEAgLTI5NywxMiArMjM4LDEzIEBAIHZvaWQg
Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlS2lsbHMoQnl0ZWNvZGVLaWxscyYgcmVz
dWx0KQogCiB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6ZHVtcFJlc3VsdHMoKQogewot
ICAgIGRhdGFMb2coIlxuRHVtcGluZyBieXRlY29kZSBsaXZlbmVzcyBmb3IgIiwgKm1fY29kZUJs
b2NrLCAiOlxuIik7Ci0gICAgSW50ZXJwcmV0ZXIqIGludGVycHJldGVyID0gbV9jb2RlQmxvY2st
PnZtKCktPmludGVycHJldGVyOwotICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiA9
IG1fY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpOwotICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBtX2Jhc2ljQmxvY2tzLnNpemUoKTsgaSsrKSB7Ci0gICAgICAgIEJ5dGVjb2Rl
QmFzaWNCbG9jayogYmxvY2sgPSBtX2Jhc2ljQmxvY2tzW2ldLmdldCgpOwotICAgICAgICBkYXRh
TG9nRigiXG5CeXRlY29kZSBiYXNpYyBibG9jayAldTogJXAgKG9mZnNldDogJXUsIGxlbmd0aDog
JXUpXG4iLCBpLCBibG9jaywgYmxvY2stPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCksIGJsb2NrLT50
b3RhbEJ5dGVjb2RlTGVuZ3RoKCkpOworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gbV9ncmFw
aC5jb2RlQmxvY2soKTsKKyAgICBkYXRhTG9nKCJcbkR1bXBpbmcgYnl0ZWNvZGUgbGl2ZW5lc3Mg
Zm9yICIsICpjb2RlQmxvY2ssICI6XG4iKTsKKyAgICBJbnRlcnByZXRlciogaW50ZXJwcmV0ZXIg
PSBjb2RlQmxvY2stPnZtKCktPmludGVycHJldGVyOworICAgIEluc3RydWN0aW9uKiBpbnN0cnVj
dGlvbnNCZWdpbiA9IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsKKyAgICB1bnNp
Z25lZCBpID0gMDsKKyAgICBmb3IgKHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+
JiBibG9jayA6IG1fZ3JhcGguYmFzaWNCbG9ja3MoKSkgeworICAgICAgICBkYXRhTG9nRigiXG5C
eXRlY29kZSBiYXNpYyBibG9jayAldTogJXAgKG9mZnNldDogJXUsIGxlbmd0aDogJXUpXG4iLCBp
KyssIGJsb2NrLmdldCgpLCBibG9jay0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKSwgYmxvY2stPnRv
dGFsQnl0ZWNvZGVMZW5ndGgoKSk7CiAgICAgICAgIGRhdGFMb2dGKCJTdWNjZXNzb3JzOiAiKTsK
ICAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8IGJsb2NrLT5zdWNjZXNzb3JzKCkuc2l6
ZSgpOyBqKyspIHsKICAgICAgICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogc3VjY2Vzc29yID0g
YmxvY2stPnN1Y2Nlc3NvcnMoKVtqXTsKQEAgLTMxMCwxMSArMjUyLDExIEBAIHZvaWQgQnl0ZWNv
ZGVMaXZlbmVzc0FuYWx5c2lzOjpkdW1wUmVzdWx0cygpCiAgICAgICAgIH0KICAgICAgICAgZGF0
YUxvZ0YoIlxuIik7CiAgICAgICAgIGlmIChibG9jay0+aXNFbnRyeUJsb2NrKCkpIHsKLSAgICAg
ICAgICAgIGRhdGFMb2dGKCJFbnRyeSBibG9jayAlcFxuIiwgYmxvY2spOworICAgICAgICAgICAg
ZGF0YUxvZ0YoIkVudHJ5IGJsb2NrICVwXG4iLCBibG9jay5nZXQoKSk7CiAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgfQogICAgICAgICBpZiAoYmxvY2stPmlzRXhpdEJsb2NrKCkpIHsK
LSAgICAgICAgICAgIGRhdGFMb2dGKCJFeGl0IGJsb2NrOiAlcFxuIiwgYmxvY2spOworICAgICAg
ICAgICAgZGF0YUxvZ0YoIkV4aXQgYmxvY2s6ICVwXG4iLCBibG9jay5nZXQoKSk7CiAgICAgICAg
ICAgICBjb250aW51ZTsKICAgICAgICAgfQogICAgICAgICBmb3IgKHVuc2lnbmVkIGJ5dGVjb2Rl
T2Zmc2V0ID0gYmxvY2stPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCk7IGJ5dGVjb2RlT2Zmc2V0IDwg
YmxvY2stPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCkgKyBibG9jay0+dG90YWxCeXRlY29kZUxlbmd0
aCgpOykgewpAQCAtMzI3LDcgKzI2OSw3IEBAIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lz
OjpkdW1wUmVzdWx0cygpCiAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2dGKCIldSAiLCBqKTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGRhdGFMb2dGKCJcbiIpOwotICAgICAgICAgICAg
bV9jb2RlQmxvY2stPmR1bXBCeXRlY29kZShXVEY6OmRhdGFGaWxlKCksIG1fY29kZUJsb2NrLT5n
bG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpLCBpbnN0cnVjdGlvbnNCZWdpbiwgY3VycmVudElu
c3RydWN0aW9uKTsKKyAgICAgICAgICAgIGNvZGVCbG9jay0+ZHVtcEJ5dGVjb2RlKFdURjo6ZGF0
YUZpbGUoKSwgY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpLCBpbnN0cnVj
dGlvbnNCZWdpbiwgY3VycmVudEluc3RydWN0aW9uKTsKIAogICAgICAgICAgICAgT3Bjb2RlSUQg
b3Bjb2RlSUQgPSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25zQmVnaW5bYnl0
ZWNvZGVPZmZzZXRdLnUub3Bjb2RlKTsKICAgICAgICAgICAgIHVuc2lnbmVkIG9wY29kZUxlbmd0
aCA9IG9wY29kZUxlbmd0aHNbb3Bjb2RlSURdOwpAQCAtMzQ2LDggKzI4OCw2IEBAIHZvaWQgQnl0
ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpkdW1wUmVzdWx0cygpCiAKIHZvaWQgQnl0ZWNvZGVMaXZl
bmVzc0FuYWx5c2lzOjpjb21wdXRlKCkKIHsKLSAgICBjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2Nr
cyhtX2NvZGVCbG9jaywgbV9iYXNpY0Jsb2Nrcyk7Ci0gICAgQVNTRVJUKG1fYmFzaWNCbG9ja3Mu
c2l6ZSgpKTsKICAgICBydW5MaXZlbmVzc0ZpeHBvaW50KCk7CiAKICAgICBpZiAoT3B0aW9uczo6
ZHVtcEJ5dGVjb2RlTGl2ZW5lc3NSZXN1bHRzKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmgKaW5kZXggZWNl
MTZmMjFmMDE1MTBhNjQyN2ZkODQxMTQwNzliZWQ4NzBjMDg3NS4uY2IxNDkzYjJhYTZjODkwM2M3
OTVhOWYyZDFjMjk3NmUxMGQzNjZkMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuaApAQCAtMjcsNiArMjcs
OCBAQAogI2RlZmluZSBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNfaAogCiAjaW5jbHVkZSAiQnl0
ZWNvZGVCYXNpY0Jsb2NrLmgiCisjaW5jbHVkZSAiQnl0ZWNvZGVHcmFwaC5oIgorI2luY2x1ZGUg
IkNvZGVCbG9jay5oIgogI2luY2x1ZGUgPHd0Zi9GYXN0Qml0VmVjdG9yLmg+CiAjaW5jbHVkZSA8
d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC0zNCw3ICszNiw2IEBA
CiBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgQnl0ZWNvZGVLaWxsczsKLWNsYXNzIENvZGVCbG9j
azsKIGNsYXNzIEZ1bGxCeXRlY29kZUxpdmVuZXNzOwogCiBjbGFzcyBCeXRlY29kZUxpdmVuZXNz
QW5hbHlzaXMgewpAQCAtNTYsMTMgKzU3LDEzIEBAIGNsYXNzIEJ5dGVjb2RlTGl2ZW5lc3NBbmFs
eXNpcyB7CiAKICAgICB2b2lkIGdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQodW5zaWdu
ZWQgYnl0ZWNvZGVPZmZzZXQsIEZhc3RCaXRWZWN0b3ImKTsKIAotICAgIENvZGVCbG9jayogbV9j
b2RlQmxvY2s7Ci0gICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+
PiBtX2Jhc2ljQmxvY2tzOworICAgIEJ5dGVjb2RlR3JhcGg8Q29kZUJsb2NrPiBtX2dyYXBoOwog
fTsKIAogaW5saW5lIGJvb2wgb3BlcmFuZElzQWx3YXlzTGl2ZShpbnQgb3BlcmFuZCk7CiBpbmxp
bmUgYm9vbCBvcGVyYW5kVGhhdElzTm90QWx3YXlzTGl2ZUlzTGl2ZShjb25zdCBGYXN0Qml0VmVj
dG9yJiBvdXQsIGludCBvcGVyYW5kKTsKIGlubGluZSBib29sIG9wZXJhbmRJc0xpdmUoY29uc3Qg
RmFzdEJpdFZlY3RvciYgb3V0LCBpbnQgb3BlcmFuZCk7CitpbmxpbmUgYm9vbCBpc1ZhbGlkUmVn
aXN0ZXJGb3JMaXZlbmVzcyhpbnQgb3BlcmFuZCk7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVz
c0FuYWx5c2lzSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVj
b2RlTGl2ZW5lc3NBbmFseXNpc0lubGluZXMuaAppbmRleCA5YjVjNzU1ZmNiNmNkNTE4MDUxNDUw
MDc4OTIyYWM0ZDZkNGQyMzhmLi45MGMyOTI5OWEyNWY1NzljZGE2NDlkOTg3OGNlMTU0OGM0OGM3
NTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVM
aXZlbmVzc0FuYWx5c2lzSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNJbmxpbmVzLmgKQEAgLTUwLDYgKzUwLDE0IEBA
IGlubGluZSBib29sIG9wZXJhbmRJc0xpdmUoY29uc3QgRmFzdEJpdFZlY3RvciYgb3V0LCBpbnQg
b3BlcmFuZCkKICAgICByZXR1cm4gb3BlcmFuZElzQWx3YXlzTGl2ZShvcGVyYW5kKSB8fCBvcGVy
YW5kVGhhdElzTm90QWx3YXlzTGl2ZUlzTGl2ZShvdXQsIG9wZXJhbmQpOwogfQogCitpbmxpbmUg
Ym9vbCBpc1ZhbGlkUmVnaXN0ZXJGb3JMaXZlbmVzcyhpbnQgb3BlcmFuZCkKK3sKKyAgICBWaXJ0
dWFsUmVnaXN0ZXIgdmlydHVhbFJlZyhvcGVyYW5kKTsKKyAgICBpZiAodmlydHVhbFJlZy5pc0Nv
bnN0YW50KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gdmlydHVhbFJlZy5p
c0xvY2FsKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gQnl0ZWNvZGVM
aXZlbmVzc0FuYWx5c2lzSW5saW5lc19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnl0ZWNvZGVNb2RpZmljYXRpb25TZXQuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTW9kaWZpY2F0aW9uU2V0LmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44
YWMyZjhlY2ExMTU5YzIzMTZhYjUxOGIzY2FhYTc0NzQ4ZWJhNTYwCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTW9kaWZpY2F0aW9uU2V0
LmNwcApAQCAtMCwwICsxLDg0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IFl1c3VrZSBT
dXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIkJ5dGVjb2RlTW9kaWZpY2F0aW9uU2V0LmgiCisKKyNpbmNsdWRlIDx3
dGYvQnViYmxlU29ydC5oPgorCituYW1lc3BhY2UgSlNDIHsKKworaW50IEJ5dGVjb2RlTW9kaWZp
Y2F0aW9uU2V0OjphZGp1c3RPZmZzZXQoaW50IGJ5dGVjb2RlT2Zmc2V0LCBpbnQganVtcFRhcmdl
dCkKK3sKKyAgICBpZiAoYnl0ZWNvZGVPZmZzZXQgPCBqdW1wVGFyZ2V0KSB7CisgICAgICAgIGF1
dG8gc3RhcnQgPSBzdGQ6Omxvd2VyX2JvdW5kKG1faW5zZXJ0aW9ucy5iZWdpbigpLCBtX2luc2Vy
dGlvbnMuZW5kKCksIGJ5dGVjb2RlT2Zmc2V0LCBbJl0gKGNvbnN0IEluc2VydGlvbiYgaW5zZXJ0
aW9uLCBpbnQgYnl0ZWNvZGVPZmZzZXQpIHsKKyAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxpbnQ+KGluc2VydGlvbi5pbmRleCgpKSA8IGJ5dGVjb2RlT2Zmc2V0OworICAgICAgICB9KTsK
KyAgICAgICAgaWYgKHN0YXJ0ICE9IG1faW5zZXJ0aW9ucy5lbmQoKSkgeworICAgICAgICAgICAg
YXV0byBlbmQgPSBzdGQ6Omxvd2VyX2JvdW5kKG1faW5zZXJ0aW9ucy5iZWdpbigpLCBtX2luc2Vy
dGlvbnMuZW5kKCksIGp1bXBUYXJnZXQsIFsmXSAoY29uc3QgSW5zZXJ0aW9uJiBpbnNlcnRpb24s
IGludCBqdW1wVGFyZ2V0KSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGlu
dD4oaW5zZXJ0aW9uLmluZGV4KCkpIDwganVtcFRhcmdldDsKKyAgICAgICAgICAgIH0pOworICAg
ICAgICAgICAgZm9yICg7IHN0YXJ0ICE9IGVuZDsgKytzdGFydCkgeworICAgICAgICAgICAgICAg
IGlmIChzdGFydC0+ZWxlbWVudCgpLnR5cGUgPT0gQ29tbWFuZDo6VHlwZTo6UmVtb3ZlKQorICAg
ICAgICAgICAgICAgICAgICBqdW1wVGFyZ2V0IC09IHN0YXJ0LT5lbGVtZW50KCkubGVuZ3RoOwor
ICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAganVtcFRhcmdldCArPSBz
dGFydC0+ZWxlbWVudCgpLmxlbmd0aDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAg
ICByZXR1cm4ganVtcFRhcmdldCAtIGJ5dGVjb2RlT2Zmc2V0OworICAgIH0KKworICAgIGlmIChi
eXRlY29kZU9mZnNldCA9PSBqdW1wVGFyZ2V0KQorICAgICAgICByZXR1cm4gMDsKKworICAgIHJl
dHVybiAtYWRqdXN0T2Zmc2V0KGp1bXBUYXJnZXQsIGJ5dGVjb2RlT2Zmc2V0KTsKK30KKwordm9p
ZCBCeXRlY29kZU1vZGlmaWNhdGlvblNldDo6YXBwbHlNb2RpZmljYXRpb24oKQoreworICAgIGZv
ciAoc2l6ZV90IGluc2VydGlvbkluZGV4ID0gbV9pbnNlcnRpb25zLnNpemUoKTsgaW5zZXJ0aW9u
SW5kZXgtLTspIHsKKyAgICAgICAgY29uc3QgSW5zZXJ0aW9uJiBpbnNlcnRpb24gPSBtX2luc2Vy
dGlvbnNbaW5zZXJ0aW9uSW5kZXhdOworICAgICAgICBpZiAoaW5zZXJ0aW9uLmVsZW1lbnQoKS50
eXBlID09IENvbW1hbmQ6OlR5cGU6OlJlbW92ZSkKKyAgICAgICAgICAgIG1fZ3JhcGguaW5zdHJ1
Y3Rpb25zKCkucmVtb3ZlKGluc2VydGlvbi5pbmRleCgpLCBpbnNlcnRpb24uZWxlbWVudCgpLmxl
bmd0aCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fZ3JhcGguaW5zdHJ1Y3Rpb25zKCku
aW5zZXJ0KGluc2VydGlvbi5pbmRleCgpLCBpbnNlcnRpb24uZWxlbWVudCgpLmJ5dGVjb2RlLmlu
c3RydWN0aW9ucywgb3Bjb2RlTGVuZ3RoKGluc2VydGlvbi5lbGVtZW50KCkuYnl0ZWNvZGUuaW5z
dHJ1Y3Rpb25zWzBdLnUub3Bjb2RlKSk7CisgICAgfQorICAgIG1faW5zZXJ0aW9ucy5jbGVhcigp
OworfQorCit2b2lkIEJ5dGVjb2RlTW9kaWZpY2F0aW9uU2V0OjpleGVjdXRlKCkKK3sKKyAgICBX
VEY6OmJ1YmJsZVNvcnQobV9pbnNlcnRpb25zLmJlZ2luKCksIG1faW5zZXJ0aW9ucy5lbmQoKSwg
W10gKGNvbnN0IEluc2VydGlvbiYgbGhzLCBjb25zdCBJbnNlcnRpb24mIHJocykgeworICAgICAg
ICAvLyBXZSB3b3VsZCBsaWtlIHRvIHBlcmZvcm0gcmVtb3ZlIG9wZXJhdGlvbiBiZWZvcmUgaW5z
ZXJ0aW9uLgorICAgICAgICBpZiAobGhzLmluZGV4KCkgPT0gcmhzLmluZGV4KCkpCisgICAgICAg
ICAgICByZXR1cm4gcmhzLmVsZW1lbnQoKS50eXBlID09IENvbW1hbmQ6OlR5cGU6OlJlbW92ZTsK
KyAgICAgICAgcmV0dXJuIGxocyA8IHJoczsKKyAgICB9KTsKKworICAgIFVubGlua2VkQ29kZUJs
b2NrKiBjb2RlQmxvY2sgPSBtX2dyYXBoLmNvZGVCbG9jaygpOworICAgIGNvZGVCbG9jay0+YXBw
bHlNb2RpZmljYXRpb24oKnRoaXMpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZU1vZGlmaWNhdGlvblNl
dC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTW9kaWZpY2F0aW9u
U2V0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYWEzNzkxNzIzM2I4MzRjMjhiMWI4ZjVkM2MxYTI3ZWU1YzkzM2Iy
OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZU1vZGlmaWNhdGlvblNldC5oCkBAIC0wLDAgKzEsODMgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTYgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkJ5dGVjb2RlR3JhcGguaCIKKyNpbmNsdWRlICJC
eXRlY29kZXMuaCIKKyNpbmNsdWRlICJVbmxpbmtlZENvZGVCbG9jay5oIgorI2luY2x1ZGUgPHd0
Zi9JbnNlcnRpb24uaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEJ5dGVjb2RlTW9kaWZp
Y2F0aW9uU2V0IHsKK3B1YmxpYzoKKyAgICBzdHJ1Y3QgSW5zZXJ0ZWRCeXRlY29kZSB7CisgICAg
ICAgIFVubGlua2VkSW5zdHJ1Y3Rpb24gaW5zdHJ1Y3Rpb25zW01BWF9PUENPREVfTEVOR1RIX09G
X0JZVEVDT0RFXTsKKyAgICB9OworCisgICAgc3RydWN0IENvbW1hbmQgeworICAgICAgICBlbnVt
IGNsYXNzIFR5cGUgeworICAgICAgICAgICAgSW5zZXJ0LAorICAgICAgICAgICAgUmVtb3ZlLAor
ICAgICAgICB9OworCisgICAgICAgIFR5cGUgdHlwZTsKKyAgICAgICAgc2l6ZV90IGxlbmd0aDsK
KyAgICAgICAgSW5zZXJ0ZWRCeXRlY29kZSBieXRlY29kZTsKKyAgICB9OworCisgICAgdHlwZWRl
ZiBXVEY6Okluc2VydGlvbjxDb21tYW5kPiBJbnNlcnRpb247CisKKyAgICBCeXRlY29kZU1vZGlm
aWNhdGlvblNldChCeXRlY29kZUdyYXBoPFVubGlua2VkQ29kZUJsb2NrPiYgZ3JhcGgpCisgICAg
ICAgIDogbV9ncmFwaChncmFwaCkKKyAgICB7CisgICAgfQorCisgICAgdm9pZCBpbnNlcnQodW5z
aWduZWQgYnl0ZWNvZGVPZmZzZXQsIEluc2VydGVkQnl0ZWNvZGUgYnl0ZWNvZGUpCisgICAgewor
ICAgICAgICBtX2luc2VydGlvbnMuYXBwZW5kKEluc2VydGlvbihieXRlY29kZU9mZnNldCwgQ29t
bWFuZCB7IENvbW1hbmQ6OlR5cGU6Okluc2VydCwgb3Bjb2RlTGVuZ3RoKGJ5dGVjb2RlLmluc3Ry
dWN0aW9uc1swXS51Lm9wY29kZSksIGJ5dGVjb2RlIH0pKTsKKyAgICB9CisKKyAgICB2b2lkIHJl
bW92ZUJ5dGVjb2RlKHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KQorICAgIHsKKyAgICAgICAgbV9p
bnNlcnRpb25zLmFwcGVuZChJbnNlcnRpb24oYnl0ZWNvZGVPZmZzZXQsIENvbW1hbmQgeyBDb21t
YW5kOjpUeXBlOjpSZW1vdmUsIG9wY29kZUxlbmd0aChtX2dyYXBoLmluc3RydWN0aW9ucygpW2J5
dGVjb2RlT2Zmc2V0XS51Lm9wY29kZSksIEluc2VydGVkQnl0ZWNvZGUgeyB9IH0pKTsKKyAgICB9
CisKKyAgICB2b2lkIGV4ZWN1dGUoKTsKKworICAgIEJ5dGVjb2RlR3JhcGg8VW5saW5rZWRDb2Rl
QmxvY2s+JiBncmFwaCgpIHsgcmV0dXJuIG1fZ3JhcGg7IH0KKworICAgIGludCBhZGp1c3RPZmZz
ZXQoaW50IGJ5dGVjb2RlT2Zmc2V0LCBpbnQganVtcFRhcmdldCk7CisKK3ByaXZhdGU6CisgICAg
ZnJpZW5kIGNsYXNzIFVubGlua2VkQ29kZUJsb2NrOworICAgIHZvaWQgYXBwbHlNb2RpZmljYXRp
b24oKTsKKworICAgIEJ5dGVjb2RlR3JhcGg8VW5saW5rZWRDb2RlQmxvY2s+JiBtX2dyYXBoOwor
ICAgIFZlY3RvcjxJbnNlcnRpb24sIDg+IG1faW5zZXJ0aW9uczsKK307CisKK30gLy8gbmFtZXNw
YWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVj
b2RlVXNlRGVmLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VE
ZWYuaAppbmRleCA1NzA4NDRjMzVkOTAyNWVlOTFhZDQ2OThiYWI5YmMxYTY3ZmQ4MzQ5Li40Y2E1
OGQwM2ZjOWY3NzYwMGIxMGZjOTc2MjM3OWRmNmY1ZDlhNTQzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaApAQCAtMjcsMTggKzI3LDEzIEBA
CiAjZGVmaW5lIEJ5dGVjb2RlVXNlRGVmX2gKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2lu
Y2x1ZGUgIkludGVycHJldGVyLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCi10ZW1wbGF0ZTx0eXBl
bmFtZSBGdW5jdG9yPgotdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAotICAgIENv
ZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrLCB1bnNpZ25lZCBi
eXRlY29kZU9mZnNldCwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikKK3RlbXBsYXRlPHR5cGVuYW1l
IEJsb2NrLCB0eXBlbmFtZSBGdW5jdG9yLCB0eXBlbmFtZSBJbnN0cnVjdGlvbj4KK3ZvaWQgY29t
cHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldChCbG9jayogY29kZUJsb2NrLCBPcGNvZGVJRCBvcGNv
ZGVJRCwgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQog
ewotICAgIEludGVycHJldGVyKiBpbnRlcnByZXRlciA9IGNvZGVCbG9jay0+dm0oKS0+aW50ZXJw
cmV0ZXI7Ci0gICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luID0gY29kZUJsb2NrLT5p
bnN0cnVjdGlvbnMoKS5iZWdpbigpOwotICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9ICZp
bnN0cnVjdGlvbnNCZWdpbltieXRlY29kZU9mZnNldF07Ci0gICAgT3Bjb2RlSUQgb3Bjb2RlSUQg
PSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb24tPnUub3Bjb2RlKTsKLQogICAg
IGlmIChvcGNvZGVJRCAhPSBvcF9lbnRlciAmJiBjb2RlQmxvY2stPndhc0NvbXBpbGVkV2l0aERl
YnVnZ2luZ09wY29kZXMoKSAmJiBjb2RlQmxvY2stPnNjb3BlUmVnaXN0ZXIoKS5pc1ZhbGlkKCkp
CiAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGNvZGVC
bG9jay0+c2NvcGVSZWdpc3RlcigpLm9mZnNldCgpKTsKIApAQCAtNzUsOCArNzAsNyBAQCB2b2lk
IGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoCiAgICAgY2FzZSBvcF9qbmVxX251bGw6CiAg
ICAgY2FzZSBvcF9kZWM6CiAgICAgY2FzZSBvcF9pbmM6Ci0gICAgY2FzZSBvcF9sb2dfc2hhZG93
X2NoaWNrZW5fcHJvbG9ndWU6Ci0gICAgY2FzZSBvcF9yZXN1bWU6IHsKKyAgICBjYXNlIG9wX2xv
Z19zaGFkb3dfY2hpY2tlbl9wcm9sb2d1ZTogewogICAgICAgICBBU1NFUlQob3Bjb2RlTGVuZ3Ro
c1tvcGNvZGVJRF0gPiAxKTsKICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9u
LCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKTsKICAgICAgICAgcmV0dXJuOwpA
QCAtMjg3LDIyICsyODEsMTMgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAog
ICAgICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgY29k
ZUJsb2NrLT5zY29wZVJlZ2lzdGVyKCkub2Zmc2V0KCkpOwogICAgICAgICByZXR1cm47CiAgICAg
fQotICAgIGNhc2Ugb3Bfc2F2ZTogewotICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1
Y3Rpb24sIG9wY29kZUlELCBpbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOwotICAgICAgICB1bnNp
Z25lZCBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXQgPSBieXRlY29kZU9mZnNldCArIGluc3RydWN0
aW9uWzNdLnUub3BlcmFuZDsKLSAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBtZXJnZVBvaW50
QmxvY2sgPSBudWxscHRyOwotICAgICAgICBmb3IgKEJ5dGVjb2RlQmFzaWNCbG9jayogc3VjY2Vz
c29yIDogYmxvY2stPnN1Y2Nlc3NvcnMoKSkgewotICAgICAgICAgICAgaWYgKHN1Y2Nlc3Nvci0+
bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKSA9PSBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXQpIHsKLSAg
ICAgICAgICAgICAgICBtZXJnZVBvaW50QmxvY2sgPSBzdWNjZXNzb3I7Ci0gICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgQVNTRVJUKG1lcmdl
UG9pbnRCbG9jayk7Ci0gICAgICAgIG1lcmdlUG9pbnRCbG9jay0+aW4oKS5mb3JFYWNoU2V0Qml0
KFsmXSh1bnNpZ25lZCBsb2NhbCkgewotICAgICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGlu
c3RydWN0aW9uLCBvcGNvZGVJRCwgdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwobG9jYWwpLm9mZnNl
dCgpKTsKLSAgICAgICAgfSk7CisKKyAgICBjYXNlIG9wX3NhdmU6CisgICAgY2FzZSBvcF9yZXN1
bWU6IHsKKyAgICAgICAgLy8gRG8gbm90aGluZyBpbiBsaXZlbmVzcyBhbmFseXNpcy4KICAgICAg
ICAgcmV0dXJuOwogICAgIH0KKwogICAgIGRlZmF1bHQ6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiAgICAgICAgIGJyZWFrOwpAQCAtMzEwLDEyICsyOTUsMTggQEAgdm9p
ZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBG
dW5jdG9yPgotdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29k
ZUJsb2NrLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9mZnNl
dCwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikKK3ZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9m
ZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIGNvbnN0
IEZ1bmN0b3ImIGZ1bmN0b3IpCiB7CiAgICAgSW50ZXJwcmV0ZXIqIGludGVycHJldGVyID0gY29k
ZUJsb2NrLT52bSgpLT5pbnRlcnByZXRlcjsKICAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25z
QmVnaW4gPSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCk7CiAgICAgSW5zdHJ1Y3Rp
b24qIGluc3RydWN0aW9uID0gJmluc3RydWN0aW9uc0JlZ2luW2J5dGVjb2RlT2Zmc2V0XTsKICAg
ICBPcGNvZGVJRCBvcGNvZGVJRCA9IGludGVycHJldGVyLT5nZXRPcGNvZGVJRChpbnN0cnVjdGlv
bi0+dS5vcGNvZGUpOworICAgIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoY29kZUJsb2Nr
LCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb24sIGZ1bmN0b3IpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBCbG9jaywgdHlwZW5hbWUgSW5zdHJ1Y3Rpb24sIHR5cGVuYW1lIEZ1bmN0b3I+Cit2b2lkIGNv
bXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQmxvY2sqIGNvZGVCbG9jaywgT3Bjb2RlSUQgb3Bj
b2RlSUQsIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikK
K3sKICAgICBzd2l0Y2ggKG9wY29kZUlEKSB7CiAgICAgLy8gVGhlc2UgZG9uJ3QgZGVmaW5lIGFu
eXRoaW5nLgogICAgIGNhc2Ugb3BfY29weV9yZXN0OgpAQCAtMzIzLDcgKzMxNCw2IEBAIHZvaWQg
Y29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNv
ZGVCYXNpY0Jsb2NrKiBibG9jCiAgICAgY2FzZSBvcF9lbmQ6CiAgICAgY2FzZSBvcF90aHJvdzoK
ICAgICBjYXNlIG9wX3Rocm93X3N0YXRpY19lcnJvcjoKLSAgICBjYXNlIG9wX3NhdmU6CiAgICAg
Y2FzZSBvcF9hc3NlcnQ6CiAgICAgY2FzZSBvcF9kZWJ1ZzoKICAgICBjYXNlIG9wX3JldDoKQEAg
LTQ2Myw3ICs0NTMsNyBAQCB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJs
b2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvYwogICAgIGNhc2Ugb3BfZGVs
X2J5X2lkOgogICAgIGNhc2Ugb3BfZGVsX2J5X3ZhbDoKICAgICBjYXNlIG9wX3Vuc2lnbmVkOgot
ICAgIGNhc2Ugb3BfZ2V0X2Zyb21fYXJndW1lbnRzOiAKKyAgICBjYXNlIG9wX2dldF9mcm9tX2Fy
Z3VtZW50czoKICAgICBjYXNlIG9wX2dldF9yZXN0X2xlbmd0aDogewogICAgICAgICBBU1NFUlQo
b3Bjb2RlTGVuZ3Roc1tvcGNvZGVJRF0gPiAxKTsKICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ss
IGluc3RydWN0aW9uLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKTsKQEAgLTQ4
MCwxOCArNDcwLDI3IEBAIHZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jCiAgICAgICAgICAgICBmdW5j
dG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCB2aXJ0dWFsUmVnaXN0ZXJGb3JM
b2NhbChpKS5vZmZzZXQoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CisgICAgY2FzZSBvcF9z
YXZlOgogICAgIGNhc2Ugb3BfcmVzdW1lOiB7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKGJsb2Nr
LT5zdWNjZXNzb3JzKCkuc2l6ZSgpID09IDEpOwotICAgICAgICAvLyBGSVhNRTogVGhpcyBpcyBy
ZWFsbHkgZGlydHkuCi0gICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNTkyODEKLSAgICAgICAgYmxvY2stPnN1Y2Nlc3NvcnMoKVswXS0+aW4oKS5mb3JF
YWNoU2V0Qml0KFsmXSh1bnNpZ25lZCBsb2NhbCkgewotICAgICAgICAgICAgZnVuY3Rvcihjb2Rl
QmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwobG9j
YWwpLm9mZnNldCgpKTsKLSAgICAgICAgfSk7CisgICAgICAgIC8vIERvIG5vdGhpbmcgaW4gbGl2
ZW5lc3MgYW5hbHlzaXMuCiAgICAgICAgIHJldHVybjsKICAgICB9CisgICAgZGVmYXVsdDoKKyAg
ICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuOwogICAg
IH0KIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KK3ZvaWQgY29tcHV0ZURlZnNGb3JC
eXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVPZmZz
ZXQsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCit7CisgICAgSW50ZXJwcmV0ZXIqIGludGVycHJl
dGVyID0gY29kZUJsb2NrLT52bSgpLT5pbnRlcnByZXRlcjsKKyAgICBJbnN0cnVjdGlvbiogaW5z
dHJ1Y3Rpb25zQmVnaW4gPSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCk7CisgICAg
SW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uID0gJmluc3RydWN0aW9uc0JlZ2luW2J5dGVjb2RlT2Zm
c2V0XTsKKyAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGludGVycHJldGVyLT5nZXRPcGNvZGVJRChp
bnN0cnVjdGlvbi0+dS5vcGNvZGUpOworICAgIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQo
Y29kZUJsb2NrLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb24sIGZ1bmN0b3IpOworfQorCiB9IC8vIG5h
bWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEJ5dGVjb2RlVXNlRGVmX2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKaW5kZXggM2Y3ZDJmMDViOTkwMDUzMmI5
NmE3ZDZiMmQ2MWVkMmEzZTY4ZDhiMy4uNTIxOWViYzE0NmJiZTM0ZTFlOGVkYTc1MTk1NTJjMGI3
MTZhZjdhNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVC
bG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5j
cHAKQEAgLTMyLDYgKzMyLDcgQEAKIAogI2luY2x1ZGUgIkJhc2ljQmxvY2tMb2NhdGlvbi5oIgog
I2luY2x1ZGUgIkJ5dGVjb2RlR2VuZXJhdG9yLmgiCisjaW5jbHVkZSAiQnl0ZWNvZGVMaXZlbmVz
c0FuYWx5c2lzLmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVVc2VEZWYuaCIKICNpbmNsdWRlICJDYWxs
TGlua1N0YXR1cy5oIgogI2luY2x1ZGUgIkRGR0NhcGFiaWxpdGllcy5oIgpAQCAtNjk0LDE4ICs2
OTUsNiBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKFByaW50U3RyZWFtJiBvdXQpCiAg
ICAgICAgIH0gd2hpbGUgKGkgPCBtX3JhcmVEYXRhLT5tX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXMu
c2l6ZSgpKTsKICAgICB9CiAKLSAgICBpZiAobV9yYXJlRGF0YSAmJiAhbV9yYXJlRGF0YS0+bV9s
aXZlQ2FsbGVlTG9jYWxzQXRZaWVsZC5pc0VtcHR5KCkpIHsKLSAgICAgICAgb3V0LnByaW50Zigi
XG5MaXZlIENhbGxlZSBMb2NhbHM6XG4iKTsKLSAgICAgICAgdW5zaWduZWQgaSA9IDA7Ci0gICAg
ICAgIGRvIHsKLSAgICAgICAgICAgIGNvbnN0IEZhc3RCaXRWZWN0b3ImIGxpdmVuZXNzID0gbV9y
YXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZFtpXTsKLSAgICAgICAgICAgIG91dC5w
cmludGYoIiAgbGl2ZSUxdSA9ICIsIGkpOwotICAgICAgICAgICAgbGl2ZW5lc3MuZHVtcChvdXQp
OwotICAgICAgICAgICAgb3V0LnByaW50ZigiXG4iKTsKLSAgICAgICAgICAgICsraTsKLSAgICAg
ICAgfSB3aGlsZSAoaSA8IG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQuc2l6
ZSgpKTsKLSAgICB9Ci0KICAgICBvdXQucHJpbnRmKCJcbiIpOwogfQogCkBAIC0xNjY5LDMxICsx
NjU4LDYgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZSgKICAgICAgICAgICAgIG91dC5w
cmludGYoIiVzLCAlZCIsIGRlYnVnSG9va05hbWUoZGVidWdIb29rSUQpLCBoYXNCcmVha3BvaW50
RmxhZyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBjYXNlIG9wX3Nh
dmU6IHsKLSAgICAgICAgICAgIGludCBnZW5lcmF0b3IgPSAoKytpdCktPnUub3BlcmFuZDsKLSAg
ICAgICAgICAgIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9ICgrK2l0KS0+dS51bnNp
Z25lZFZhbHVlOwotICAgICAgICAgICAgaW50IG9mZnNldCA9ICgrK2l0KS0+dS5vcGVyYW5kOwot
ICAgICAgICAgICAgRmFzdEJpdFZlY3RvciBsaXZlbmVzczsKLSAgICAgICAgICAgIGlmIChsaXZl
Q2FsbGVlTG9jYWxzSW5kZXggPCBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxk
LnNpemUoKSkKLSAgICAgICAgICAgICAgICBsaXZlbmVzcyA9IG1fcmFyZURhdGEtPm1fbGl2ZUNh
bGxlZUxvY2Fsc0F0WWllbGRbbGl2ZUNhbGxlZUxvY2Fsc0luZGV4XTsKLSAgICAgICAgICAgIHBy
aW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgInNhdmUiKTsKLSAgICAg
ICAgICAgIG91dC5wcmludGYoIiVzLCAiLCByZWdpc3Rlck5hbWUoZ2VuZXJhdG9yKS5kYXRhKCkp
OwotICAgICAgICAgICAgbGl2ZW5lc3MuZHVtcChvdXQpOwotICAgICAgICAgICAgb3V0LnByaW50
ZigiKEBsaXZlJTF1KSwgJWQoLT4lZCkiLCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXgsIG9mZnNldCwg
bG9jYXRpb24gKyBvZmZzZXQpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAg
ICAgY2FzZSBvcF9yZXN1bWU6IHsKLSAgICAgICAgICAgIGludCBnZW5lcmF0b3IgPSAoKytpdCkt
PnUub3BlcmFuZDsKLSAgICAgICAgICAgIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9
ICgrK2l0KS0+dS51bnNpZ25lZFZhbHVlOwotICAgICAgICAgICAgRmFzdEJpdFZlY3RvciBsaXZl
bmVzczsKLSAgICAgICAgICAgIGlmIChsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPCBtX3JhcmVEYXRh
LT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkLnNpemUoKSkKLSAgICAgICAgICAgICAgICBsaXZl
bmVzcyA9IG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGRbbGl2ZUNhbGxlZUxv
Y2Fsc0luZGV4XTsKLSAgICAgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxv
Y2F0aW9uLCBpdCwgInJlc3VtZSIpOwotICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICIsIHJl
Z2lzdGVyTmFtZShnZW5lcmF0b3IpLmRhdGEoKSk7Ci0gICAgICAgICAgICBsaXZlbmVzcy5kdW1w
KG91dCk7Ci0gICAgICAgICAgICBvdXQucHJpbnRmKCIoQGxpdmUlMXUpIiwgbGl2ZUNhbGxlZUxv
Y2Fsc0luZGV4KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9CiAgICAgICAgIGNhc2Ug
b3BfYXNzZXJ0OiB7CiAgICAgICAgICAgICBpbnQgY29uZGl0aW9uID0gKCsraXQpLT51Lm9wZXJh
bmQ7CiAgICAgICAgICAgICBpbnQgbGluZSA9ICgrK2l0KS0+dS5vcGVyYW5kOwpAQCAtMTkwNiw3
ICsxODcwLDYgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgQ29weVBh
cnNlZEJsb2NrVGFnLCBDb2RlQmxvY2smIG90aGVyKQogICAgICAgICBtX3JhcmVEYXRhLT5tX2Nv
bnN0YW50QnVmZmVycyA9IG90aGVyLm1fcmFyZURhdGEtPm1fY29uc3RhbnRCdWZmZXJzOwogICAg
ICAgICBtX3JhcmVEYXRhLT5tX3N3aXRjaEp1bXBUYWJsZXMgPSBvdGhlci5tX3JhcmVEYXRhLT5t
X3N3aXRjaEp1bXBUYWJsZXM7CiAgICAgICAgIG1fcmFyZURhdGEtPm1fc3RyaW5nU3dpdGNoSnVt
cFRhYmxlcyA9IG90aGVyLm1fcmFyZURhdGEtPm1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlczsKLSAg
ICAgICAgbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZCA9IG90aGVyLm1fcmFy
ZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQ7CiAgICAgfQogICAgIAogICAgIGhlYXAo
KS0+bV9jb2RlQmxvY2tzLmFkZCh0aGlzKTsKQEAgLTIwMjgsNyArMTk5MSw3IEBAIHZvaWQgQ29k
ZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhl
Y3V0YWJsZSwgVW5saW5rCiAgICAgICAgICAgICAgICAgVW5saW5rZWRTdHJpbmdKdW1wVGFibGU6
OlN0cmluZ09mZnNldFRhYmxlOjppdGVyYXRvciBlbmQgPSB1bmxpbmtlZENvZGVCbG9jay0+c3Ry
aW5nU3dpdGNoSnVtcFRhYmxlKGkpLm9mZnNldFRhYmxlLmVuZCgpOwogICAgICAgICAgICAgICAg
IGZvciAoOyBwdHIgIT0gZW5kOyArK3B0cikgewogICAgICAgICAgICAgICAgICAgICBPZmZzZXRM
b2NhdGlvbiBvZmZzZXQ7Ci0gICAgICAgICAgICAgICAgICAgIG9mZnNldC5icmFuY2hPZmZzZXQg
PSBwdHItPnZhbHVlOworICAgICAgICAgICAgICAgICAgICBvZmZzZXQuYnJhbmNoT2Zmc2V0ID0g
cHRyLT52YWx1ZS5icmFuY2hPZmZzZXQ7CiAgICAgICAgICAgICAgICAgICAgIG1fcmFyZURhdGEt
Pm1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlc1tpXS5vZmZzZXRUYWJsZS5hZGQocHRyLT5rZXksIG9m
ZnNldCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpAQCAtMjA2OCwxMSArMjAz
MSwxNyBAQCB2b2lkIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVj
dXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGluawogICAgIC8vIEJvb2trZWVwIHRoZSBzdHJv
bmdseSByZWZlcmVuY2VkIG1vZHVsZSBlbnZpcm9ubWVudHMuCiAgICAgSGFzaFNldDxKU01vZHVs
ZUVudmlyb25tZW50Kj4gc3Ryb25nbHlSZWZlcmVuY2VkTW9kdWxlRW52aXJvbm1lbnRzOwogCi0g
ICAgLy8gQm9va2tlZXAgdGhlIG1lcmdlIHBvaW50IGJ5dGVjb2RlIG9mZnNldHMuCi0gICAgVmVj
dG9yPHNpemVfdD4gbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0czsKLQogICAgIFJlZkNvdW50ZWRB
cnJheTxJbnN0cnVjdGlvbj4gaW5zdHJ1Y3Rpb25zKGluc3RydWN0aW9uQ291bnQpOwogCisgICAg
dW5zaWduZWQgdmFsdWVQcm9maWxlQ291bnQgPSAwOworICAgIGF1dG8gbGlua1ZhbHVlUHJvZmls
ZSA9IFsmXSh1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgdW5zaWduZWQgb3BMZW5ndGgpIHsKKyAg
ICAgICAgdW5zaWduZWQgdmFsdWVQcm9maWxlSW5kZXggPSB2YWx1ZVByb2ZpbGVDb3VudCsrOwor
ICAgICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSAmbV92YWx1ZVByb2ZpbGVzW3ZhbHVlUHJv
ZmlsZUluZGV4XTsKKyAgICAgICAgQVNTRVJUKHByb2ZpbGUtPm1fYnl0ZWNvZGVPZmZzZXQgPT0g
LTEpOworICAgICAgICBwcm9maWxlLT5tX2J5dGVjb2RlT2Zmc2V0ID0gYnl0ZWNvZGVPZmZzZXQ7
CisgICAgICAgIGluc3RydWN0aW9uc1tieXRlY29kZU9mZnNldCArIG9wTGVuZ3RoIC0gMV0gPSBw
cm9maWxlOworICAgIH07CisKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyAhaW5zdHJ1Y3Rpb25S
ZWFkZXIuYXRFbmQoKTsgKSB7CiAgICAgICAgIGNvbnN0IFVubGlua2VkSW5zdHJ1Y3Rpb24qIHBj
ID0gaW5zdHJ1Y3Rpb25SZWFkZXIubmV4dCgpOwogCkBAIC0yMTA3LDEwICsyMDc2LDcgQEAgdm9p
ZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3du
ZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICAgICAgY2FzZSBvcF9nZXRfYnlfaWQ6CiAgICAgICAg
IGNhc2Ugb3BfZ2V0X2Zyb21fYXJndW1lbnRzOgogICAgICAgICBjYXNlIG9wX3RvX251bWJlcjog
ewotICAgICAgICAgICAgVmFsdWVQcm9maWxlKiBwcm9maWxlID0gJm1fdmFsdWVQcm9maWxlc1tw
Y1tvcExlbmd0aCAtIDFdLnUub3BlcmFuZF07Ci0gICAgICAgICAgICBBU1NFUlQocHJvZmlsZS0+
bV9ieXRlY29kZU9mZnNldCA9PSAtMSk7Ci0gICAgICAgICAgICBwcm9maWxlLT5tX2J5dGVjb2Rl
T2Zmc2V0ID0gaTsKLSAgICAgICAgICAgIGluc3RydWN0aW9uc1tpICsgb3BMZW5ndGggLSAxXSA9
IHByb2ZpbGU7CisgICAgICAgICAgICBsaW5rVmFsdWVQcm9maWxlKGksIG9wTGVuZ3RoKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X3ZhbDog
ewpAQCAtMjE0NywxMCArMjExMyw3IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihW
TSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAgICAg
IGNhc2Ugb3BfY2FsbDoKICAgICAgICAgY2FzZSBvcF90YWlsX2NhbGw6CiAgICAgICAgIGNhc2Ug
b3BfY2FsbF9ldmFsOiB7Ci0gICAgICAgICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSAmbV92
YWx1ZVByb2ZpbGVzW3BjW29wTGVuZ3RoIC0gMV0udS5vcGVyYW5kXTsKLSAgICAgICAgICAgIEFT
U0VSVChwcm9maWxlLT5tX2J5dGVjb2RlT2Zmc2V0ID09IC0xKTsKLSAgICAgICAgICAgIHByb2Zp
bGUtPm1fYnl0ZWNvZGVPZmZzZXQgPSBpOwotICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zW2kgKyBv
cExlbmd0aCAtIDFdID0gcHJvZmlsZTsKKyAgICAgICAgICAgIGxpbmtWYWx1ZVByb2ZpbGUoaSwg
b3BMZW5ndGgpOwogICAgICAgICAgICAgaW50IGFycmF5UHJvZmlsZUluZGV4ID0gcGNbb3BMZW5n
dGggLSAyXS51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBtX2FycmF5UHJvZmlsZXNbYXJyYXlQcm9m
aWxlSW5kZXhdID0gQXJyYXlQcm9maWxlKGkpOwogICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zW2kg
KyBvcExlbmd0aCAtIDJdID0gJm1fYXJyYXlQcm9maWxlc1thcnJheVByb2ZpbGVJbmRleF07CkBA
IC0yMTU5LDEwICsyMTIyLDcgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2
bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICAgICAgfQog
ICAgICAgICBjYXNlIG9wX2NvbnN0cnVjdDogewogICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zW2kg
KyA1XSA9ICZtX2xsaW50Q2FsbExpbmtJbmZvc1twY1s1XS51Lm9wZXJhbmRdOwotICAgICAgICAg
ICAgVmFsdWVQcm9maWxlKiBwcm9maWxlID0gJm1fdmFsdWVQcm9maWxlc1twY1tvcExlbmd0aCAt
IDFdLnUub3BlcmFuZF07Ci0gICAgICAgICAgICBBU1NFUlQocHJvZmlsZS0+bV9ieXRlY29kZU9m
ZnNldCA9PSAtMSk7Ci0gICAgICAgICAgICBwcm9maWxlLT5tX2J5dGVjb2RlT2Zmc2V0ID0gaTsK
LSAgICAgICAgICAgIGluc3RydWN0aW9uc1tpICsgb3BMZW5ndGggLSAxXSA9IHByb2ZpbGU7Cisg
ICAgICAgICAgICBsaW5rVmFsdWVQcm9maWxlKGksIG9wTGVuZ3RoKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfZ2V0X2FycmF5X2xlbmd0aDoKQEAgLTIx
OTMsMTAgKzIxNTMsNyBAQCB2b2lkIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBT
Y3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGluawogICAgICAgICB9CiAKICAg
ICAgICAgY2FzZSBvcF9nZXRfZnJvbV9zY29wZTogewotICAgICAgICAgICAgVmFsdWVQcm9maWxl
KiBwcm9maWxlID0gJm1fdmFsdWVQcm9maWxlc1twY1tvcExlbmd0aCAtIDFdLnUub3BlcmFuZF07
Ci0gICAgICAgICAgICBBU1NFUlQocHJvZmlsZS0+bV9ieXRlY29kZU9mZnNldCA9PSAtMSk7Ci0g
ICAgICAgICAgICBwcm9maWxlLT5tX2J5dGVjb2RlT2Zmc2V0ID0gaTsKLSAgICAgICAgICAgIGlu
c3RydWN0aW9uc1tpICsgb3BMZW5ndGggLSAxXSA9IHByb2ZpbGU7CisgICAgICAgICAgICBsaW5r
VmFsdWVQcm9maWxlKGksIG9wTGVuZ3RoKTsKIAogICAgICAgICAgICAgLy8gZ2V0X2Zyb21fc2Nv
cGUgZHN0LCBzY29wZSwgaWQsIEdldFB1dEluZm8sIFN0cnVjdHVyZSwgT3BlcmFuZAogCkBAIC0y
MzUzLDE1ICsyMzEwLDYgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwg
U2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CiAKLSAgICAgICAgY2FzZSBvcF9zYXZlOiB7Ci0gICAgICAgICAgICB1
bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSBwY1syXS51LmluZGV4OwotICAgICAgICAg
ICAgaW50IG9mZnNldCA9IHBjWzNdLnUub3BlcmFuZDsKLSAgICAgICAgICAgIGlmIChsaXZlQ2Fs
bGVlTG9jYWxzSW5kZXggPj0gbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0cy5zaXplKCkpCi0gICAg
ICAgICAgICAgICAgbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0cy5yZXNpemUobGl2ZUNhbGxlZUxv
Y2Fsc0luZGV4ICsgMSk7Ci0gICAgICAgICAgICBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXRzW2xp
dmVDYWxsZWVMb2NhbHNJbmRleF0gPSBpICsgb2Zmc2V0OwotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIH0KLQogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KQEAgLTIzNzMsMjAgKzIzMjEsNiBAQCB2b2lkIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24o
Vk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGluawogCiAgICAg
bV9pbnN0cnVjdGlvbnMgPSBXVEZNb3ZlKGluc3RydWN0aW9ucyk7CiAKLSAgICAvLyBQZXJmb3Jt
IGJ5dGVjb2RlIGxpdmVuZXNzIGFuYWx5c2lzIHRvIGRldGVybWluZSB3aGljaCBsb2NhbHMgYXJl
IGxpdmUgYW5kIHNob3VsZCBiZSByZXN1bWVkIHdoZW4gZXhlY3V0aW5nIG9wX3Jlc3VtZS4KLSAg
ICBpZiAodW5saW5rZWRDb2RlQmxvY2stPnBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6
R2VuZXJhdG9yQm9keU1vZGUpIHsKLSAgICAgICAgaWYgKHNpemVfdCBjb3VudCA9IG1lcmdlUG9p
bnRCeXRlY29kZU9mZnNldHMuc2l6ZSgpKSB7Ci0gICAgICAgICAgICBjcmVhdGVSYXJlRGF0YUlm
TmVjZXNzYXJ5KCk7Ci0gICAgICAgICAgICBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMgbGl2ZW5l
c3ModGhpcyk7Ci0gICAgICAgICAgICBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlp
ZWxkLmdyb3coY291bnQpOwotICAgICAgICAgICAgc2l6ZV90IGxpdmVDYWxsZWVMb2NhbHNJbmRl
eCA9IDA7Ci0gICAgICAgICAgICBmb3IgKHNpemVfdCBieXRlY29kZU9mZnNldCA6IG1lcmdlUG9p
bnRCeXRlY29kZU9mZnNldHMpIHsKLSAgICAgICAgICAgICAgICBtX3JhcmVEYXRhLT5tX2xpdmVD
YWxsZWVMb2NhbHNBdFlpZWxkW2xpdmVDYWxsZWVMb2NhbHNJbmRleF0gPSBsaXZlbmVzcy5nZXRM
aXZlbmVzc0luZm9BdEJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KTsKLSAgICAgICAgICAg
ICAgICArK2xpdmVDYWxsZWVMb2NhbHNJbmRleDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQot
ICAgIH0KLQogICAgIC8vIFNldCBvcHRpbWl6YXRpb24gdGhyZXNob2xkcyBvbmx5IGFmdGVyIG1f
aW5zdHJ1Y3Rpb25zIGlzIGluaXRpYWxpemVkLCBzaW5jZSB0aGVzZQogICAgIC8vIHJlbHkgb24g
dGhlIGluc3RydWN0aW9uIGNvdW50IChhbmQgYXJlIGluIHRoZW9yeSBwZXJtaXR0ZWQgdG8gYWxz
byBpbnNwZWN0IHRoZQogICAgIC8vIGluc3RydWN0aW9uIHN0cmVhbSB0byBtb3JlIGFjY3VyYXRl
IGFzc2VzcyB0aGUgY29zdCBvZiB0aWVyLXVwKS4KQEAgLTMxODYsMjEgKzMxMjAsNyBAQCBIYW5k
bGVySW5mbyogQ29kZUJsb2NrOjpoYW5kbGVyRm9ySW5kZXgodW5zaWduZWQgaW5kZXgsIFJlcXVp
cmVkSGFuZGxlciByZXF1aXJlZAogewogICAgIGlmICghbV9yYXJlRGF0YSkKICAgICAgICAgcmV0
dXJuIDA7Ci0gICAgCi0gICAgVmVjdG9yPEhhbmRsZXJJbmZvPiYgZXhjZXB0aW9uSGFuZGxlcnMg
PSBtX3JhcmVEYXRhLT5tX2V4Y2VwdGlvbkhhbmRsZXJzOwotICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgZXhjZXB0aW9uSGFuZGxlcnMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgSGFuZGxlcklu
Zm8mIGhhbmRsZXIgPSBleGNlcHRpb25IYW5kbGVyc1tpXTsKLSAgICAgICAgaWYgKChyZXF1aXJl
ZEhhbmRsZXIgPT0gUmVxdWlyZWRIYW5kbGVyOjpDYXRjaEhhbmRsZXIpICYmICFoYW5kbGVyLmlz
Q2F0Y2hIYW5kbGVyKCkpCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAvLyBIYW5k
bGVycyBhcmUgb3JkZXJlZCBpbm5lcm1vc3QgZmlyc3QsIHNvIHRoZSBmaXJzdCBoYW5kbGVyIHdl
IGVuY291bnRlcgotICAgICAgICAvLyB0aGF0IGNvbnRhaW5zIHRoZSBzb3VyY2UgYWRkcmVzcyBp
cyB0aGUgY29ycmVjdCBoYW5kbGVyIHRvIHVzZS4KLSAgICAgICAgLy8gVGhpcyBpbmRleCB1c2Vk
IGlzIGVpdGhlciB0aGUgQnl0ZWNvZGVPZmZzZXQgb3IgYSBDYWxsU2l0ZUluZGV4LgotICAgICAg
ICBpZiAoaGFuZGxlci5zdGFydCA8PSBpbmRleCAmJiBoYW5kbGVyLmVuZCA+IGluZGV4KQotICAg
ICAgICAgICAgcmV0dXJuICZoYW5kbGVyOwotICAgIH0KLQotICAgIHJldHVybiAwOworICAgIHJl
dHVybiBIYW5kbGVySW5mbzo6aGFuZGxlckZvckluZGV4KG1fcmFyZURhdGEtPm1fZXhjZXB0aW9u
SGFuZGxlcnMsIGluZGV4LCByZXF1aXJlZEhhbmRsZXIpOwogfQogCiBDYWxsU2l0ZUluZGV4IENv
ZGVCbG9jazo6bmV3RXhjZXB0aW9uSGFuZGxpbmdDYWxsU2l0ZUluZGV4KENhbGxTaXRlSW5kZXgg
b3JpZ2luYWxDYWxsU2l0ZSkKQEAgLTMyOTYsNyArMzIxNiw2IEBAIHZvaWQgQ29kZUJsb2NrOjpz
aHJpbmtUb0ZpdChTaHJpbmtNb2RlIHNocmlua01vZGUpCiAgICAgICAgIGlmIChtX3JhcmVEYXRh
KSB7CiAgICAgICAgICAgICBtX3JhcmVEYXRhLT5tX3N3aXRjaEp1bXBUYWJsZXMuc2hyaW5rVG9G
aXQoKTsKICAgICAgICAgICAgIG1fcmFyZURhdGEtPm1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlcy5z
aHJpbmtUb0ZpdCgpOwotICAgICAgICAgICAgbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxz
QXRZaWVsZC5zaHJpbmtUb0ZpdCgpOwogICAgICAgICB9CiAgICAgfSAvLyBlbHNlIGRvbid0IHNo
cmluayB0aGVzZSwgYmVjYXVzZSB3ZSB3b3VsZCBoYXZlIGFscmVhZHkgcG9pbnRlZCBwb2ludGVy
cyBpbnRvIHRoZXNlIHRhYmxlcy4KIH0KQEAgLTQyODMsMTQgKzQyMDIsOSBAQCBTdHJpbmcgQ29k
ZUJsb2NrOjpuYW1lRm9yUmVnaXN0ZXIoVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3RlcikK
IAogVmFsdWVQcm9maWxlKiBDb2RlQmxvY2s6OnZhbHVlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0
KGludCBieXRlY29kZU9mZnNldCkKIHsKLSAgICBWYWx1ZVByb2ZpbGUqIHJlc3VsdCA9IGJpbmFy
eVNlYXJjaDxWYWx1ZVByb2ZpbGUsIGludD4oCi0gICAgICAgIG1fdmFsdWVQcm9maWxlcywgbV92
YWx1ZVByb2ZpbGVzLnNpemUoKSwgYnl0ZWNvZGVPZmZzZXQsCi0gICAgICAgIGdldFZhbHVlUHJv
ZmlsZUJ5dGVjb2RlT2Zmc2V0PFZhbHVlUHJvZmlsZT4pOwotICAgIEFTU0VSVChyZXN1bHQtPm1f
Ynl0ZWNvZGVPZmZzZXQgIT0gLTEpOwotICAgIEFTU0VSVChpbnN0cnVjdGlvbnMoKVtieXRlY29k
ZU9mZnNldCArIG9wY29kZUxlbmd0aCgKLSAgICAgICAgbV92bS0+aW50ZXJwcmV0ZXItPmdldE9w
Y29kZUlEKAotICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zKClbYnl0ZWNvZGVPZmZzZXRdLnUub3Bj
b2RlKSkgLSAxXS51LnByb2ZpbGUgPT0gcmVzdWx0KTsKLSAgICByZXR1cm4gcmVzdWx0OworICAg
IE9wY29kZUlEIG9wY29kZUlEID0gbV92bS0+aW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGluc3Ry
dWN0aW9ucygpW2J5dGVjb2RlT2Zmc2V0XS51Lm9wY29kZSk7CisgICAgdW5zaWduZWQgbGVuZ3Ro
ID0gb3Bjb2RlTGVuZ3RoKG9wY29kZUlEKTsKKyAgICByZXR1cm4gaW5zdHJ1Y3Rpb25zKClbYnl0
ZWNvZGVPZmZzZXQgKyBsZW5ndGggLSAxXS51LnByb2ZpbGU7CiB9CiAKIHZvaWQgQ29kZUJsb2Nr
Ojp2YWxpZGF0ZSgpCkBAIC00NTc0LDQgKzQ0ODgsMTYgQEAgdm9pZCBDb2RlQmxvY2s6OmppdFNv
b24oKQogICAgIG1fbGxpbnRFeGVjdXRlQ291bnRlci5zZXROZXdUaHJlc2hvbGQodGhyZXNob2xk
Rm9ySklUKE9wdGlvbnM6OnRocmVzaG9sZEZvckpJVFNvb24oKSksIHRoaXMpOwogfQogCitCeXRl
Y29kZUxpdmVuZXNzQW5hbHlzaXMmIENvZGVCbG9jazo6bGl2ZW5lc3NBbmFseXNpc1Nsb3coKQor
eworICAgIHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM+IGFuYWx5c2lz
ID0gc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM+KHRoaXMpOworICAg
IHsKKyAgICAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIobV9sb2NrKTsKKyAgICAgICAg
aWYgKCFtX2xpdmVuZXNzQW5hbHlzaXMpCisgICAgICAgICAgICBtX2xpdmVuZXNzQW5hbHlzaXMg
PSBXVEZNb3ZlKGFuYWx5c2lzKTsKKyAgICAgICAgcmV0dXJuICptX2xpdmVuZXNzQW5hbHlzaXM7
CisgICAgfQorfQorCisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5oCmluZGV4IGIyODgzNjU0YmUzNDVlN2FiMDExMGVjMWI2ZjVk
Njk3YTE4YzI3YzIuLjBiOTBiN2ViZDdjYjZhMzZjNTEwOGZjZTJjNjk2Zjc5YzU0YzVlMDggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKQEAgLTMzLDcgKzMz
LDYgQEAKICNpbmNsdWRlICJBcnJheVByb2ZpbGUuaCIKICNpbmNsdWRlICJCeVZhbEluZm8uaCIK
ICNpbmNsdWRlICJCeXRlY29kZUNvbnZlbnRpb25zLmgiCi0jaW5jbHVkZSAiQnl0ZWNvZGVMaXZl
bmVzc0FuYWx5c2lzLmgiCiAjaW5jbHVkZSAiQ2FsbExpbmtJbmZvLmgiCiAjaW5jbHVkZSAiQ2Fs
bFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQuaCIKICNpbmNsdWRlICJDb2RlQmxvY2tIYXNo
LmgiCkBAIC03OCw2ICs3Nyw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCitjbGFzcyBCeXRlY29k
ZUxpdmVuZXNzQW5hbHlzaXM7CiBjbGFzcyBFeGVjU3RhdGU7CiBjbGFzcyBKU01vZHVsZUVudmly
b25tZW50OwogY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwpAQCAtMjIwLDEwICsyMjAsNiBA
QCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAgICAgcmV0dXJuIGluZGV4
ID49IG1fbnVtVmFyczsKICAgICB9CiAKLSAgICBlbnVtIGNsYXNzIFJlcXVpcmVkSGFuZGxlciB7
Ci0gICAgICAgIENhdGNoSGFuZGxlciwKLSAgICAgICAgQW55SGFuZGxlcgotICAgIH07CiAgICAg
SGFuZGxlckluZm8qIGhhbmRsZXJGb3JCeXRlY29kZU9mZnNldCh1bnNpZ25lZCBieXRlY29kZU9m
ZnNldCwgUmVxdWlyZWRIYW5kbGVyID0gUmVxdWlyZWRIYW5kbGVyOjpBbnlIYW5kbGVyKTsKICAg
ICBIYW5kbGVySW5mbyogaGFuZGxlckZvckluZGV4KHVuc2lnbmVkLCBSZXF1aXJlZEhhbmRsZXIg
PSBSZXF1aXJlZEhhbmRsZXI6OkFueUhhbmRsZXIpOwogICAgIHZvaWQgcmVtb3ZlRXhjZXB0aW9u
SGFuZGxlckZvckNhbGxTaXRlKENhbGxTaXRlSW5kZXgpOwpAQCAtMjk1LDYgKzI5MSw4IEBAIGNs
YXNzIENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8SW5zdHJ1Y3Rpb24qPihyZXR1cm5BZGRyZXNzKSAtIGluc3RydWN0aW9ucygpLmJlZ2luKCk7
CiAgICAgfQogCisgICAgdHlwZWRlZiBSZWZDb3VudGVkQXJyYXk8SW5zdHJ1Y3Rpb24+JiBVbnBh
Y2tlZEluc3RydWN0aW9uczsKKwogICAgIHVuc2lnbmVkIG51bWJlck9mSW5zdHJ1Y3Rpb25zKCkg
Y29uc3QgeyByZXR1cm4gbV9pbnN0cnVjdGlvbnMuc2l6ZSgpOyB9CiAgICAgUmVmQ291bnRlZEFy
cmF5PEluc3RydWN0aW9uPiYgaW5zdHJ1Y3Rpb25zKCkgeyByZXR1cm4gbV9pbnN0cnVjdGlvbnM7
IH0KICAgICBjb25zdCBSZWZDb3VudGVkQXJyYXk8SW5zdHJ1Y3Rpb24+JiBpbnN0cnVjdGlvbnMo
KSBjb25zdCB7IHJldHVybiBtX2luc3RydWN0aW9uczsgfQpAQCAtNTQyLDcgKzU0MCw3IEBAIGNs
YXNzIENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgIH0KIAogICAgIFdyaXRlQmFycmll
cjxVbmtub3duPiYgY29uc3RhbnRSZWdpc3RlcihpbnQgaW5kZXgpIHsgcmV0dXJuIG1fY29uc3Rh
bnRSZWdpc3RlcnNbaW5kZXggLSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleF07IH0KLSAgICBB
TFdBWVNfSU5MSU5FIGJvb2wgaXNDb25zdGFudFJlZ2lzdGVySW5kZXgoaW50IGluZGV4KSBjb25z
dCB7IHJldHVybiBpbmRleCA+PSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleDsgfQorICAgIHN0
YXRpYyBBTFdBWVNfSU5MSU5FIGJvb2wgaXNDb25zdGFudFJlZ2lzdGVySW5kZXgoaW50IGluZGV4
KSB7IHJldHVybiBpbmRleCA+PSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleDsgfQogICAgIEFM
V0FZU19JTkxJTkUgSlNWYWx1ZSBnZXRDb25zdGFudChpbnQgaW5kZXgpIGNvbnN0IHsgcmV0dXJu
IG1fY29uc3RhbnRSZWdpc3RlcnNbaW5kZXggLSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleF0u
Z2V0KCk7IH0KICAgICBBTFdBWVNfSU5MSU5FIFNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbiBjb25z
dGFudFNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbihpbnQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIG1f
Y29uc3RhbnRzU291cmNlQ29kZVJlcHJlc2VudGF0aW9uW2luZGV4IC0gRmlyc3RDb25zdGFudFJl
Z2lzdGVySW5kZXhdOyB9CiAKQEAgLTU4OCwxNCArNTg2LDcgQEAgY2xhc3MgQ29kZUJsb2NrIDog
cHVibGljIEpTQ2VsbCB7CiAgICAgICAgICAgICBpZiAoISFtX2xpdmVuZXNzQW5hbHlzaXMpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuICptX2xpdmVuZXNzQW5hbHlzaXM7CiAgICAgICAgIH0KLSAg
ICAgICAgc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcz4gYW5hbHlzaXMg
PQotICAgICAgICAgICAgc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM+
KHRoaXMpOwotICAgICAgICB7Ci0gICAgICAgICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tl
cihtX2xvY2spOwotICAgICAgICAgICAgaWYgKCFtX2xpdmVuZXNzQW5hbHlzaXMpCi0gICAgICAg
ICAgICAgICAgbV9saXZlbmVzc0FuYWx5c2lzID0gV1RGTW92ZShhbmFseXNpcyk7Ci0gICAgICAg
ICAgICByZXR1cm4gKm1fbGl2ZW5lc3NBbmFseXNpczsKLSAgICAgICAgfQorICAgICAgICByZXR1
cm4gbGl2ZW5lc3NBbmFseXNpc1Nsb3coKTsKICAgICB9CiAgICAgCiAgICAgdm9pZCB2YWxpZGF0
ZSgpOwpAQCAtNjE2LDE4ICs2MDcsNiBAQCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxs
IHsKICAgICBTdHJpbmdKdW1wVGFibGUmIGFkZFN0cmluZ1N3aXRjaEp1bXBUYWJsZSgpIHsgY3Jl
YXRlUmFyZURhdGFJZk5lY2Vzc2FyeSgpOyBtX3JhcmVEYXRhLT5tX3N0cmluZ1N3aXRjaEp1bXBU
YWJsZXMuYXBwZW5kKFN0cmluZ0p1bXBUYWJsZSgpKTsgcmV0dXJuIG1fcmFyZURhdGEtPm1fc3Ry
aW5nU3dpdGNoSnVtcFRhYmxlcy5sYXN0KCk7IH0KICAgICBTdHJpbmdKdW1wVGFibGUmIHN0cmlu
Z1N3aXRjaEp1bXBUYWJsZShpbnQgdGFibGVJbmRleCkgeyBSRUxFQVNFX0FTU0VSVChtX3JhcmVE
YXRhKTsgcmV0dXJuIG1fcmFyZURhdGEtPm1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlc1t0YWJsZUlu
ZGV4XTsgfQogCi0gICAgLy8gTGl2ZSBjYWxsZWUgcmVnaXN0ZXJzIGF0IHlpZWxkIHBvaW50cy4K
LSAgICBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlQ2FsbGVlTG9jYWxzQXRZaWVsZCh1bnNpZ25l
ZCBpbmRleCkgY29uc3QKLSAgICB7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fcmFyZURhdGEp
OwotICAgICAgICByZXR1cm4gbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZFtp
bmRleF07Ci0gICAgfQotICAgIEZhc3RCaXRWZWN0b3ImIGxpdmVDYWxsZWVMb2NhbHNBdFlpZWxk
KHVuc2lnbmVkIGluZGV4KQotICAgIHsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9yYXJlRGF0
YSk7Ci0gICAgICAgIHJldHVybiBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxk
W2luZGV4XTsKLSAgICB9Ci0KICAgICBFdmFsQ29kZUNhY2hlJiBldmFsQ29kZUNhY2hlKCkgeyBj
cmVhdGVSYXJlRGF0YUlmTmVjZXNzYXJ5KCk7IHJldHVybiBtX3JhcmVEYXRhLT5tX2V2YWxDb2Rl
Q2FjaGU7IH0KIAogICAgIGVudW0gU2hyaW5rTW9kZSB7CkBAIC04ODIsOCArODYxLDYgQEAgY2xh
c3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgICAgIFZlY3RvcjxTaW1wbGVKdW1w
VGFibGU+IG1fc3dpdGNoSnVtcFRhYmxlczsKICAgICAgICAgVmVjdG9yPFN0cmluZ0p1bXBUYWJs
ZT4gbV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzOwogCi0gICAgICAgIFZlY3RvcjxGYXN0Qml0VmVj
dG9yPiBtX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkOwotCiAgICAgICAgIEV2YWxDb2RlQ2FjaGUg
bV9ldmFsQ29kZUNhY2hlOwogICAgIH07CiAKQEAgLTkxOCw2ICs4OTUsOCBAQCBjbGFzcyBDb2Rl
QmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgQ29k
ZUJsb2NrU2V0OworCisgICAgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzJiBsaXZlbmVzc0FuYWx5
c2lzU2xvdygpOwogICAgIAogICAgIENvZGVCbG9jayogc3BlY2lhbE9TUkVudHJ5QmxvY2tPck51
bGwoKTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9I
YW5kbGVySW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0hhbmRsZXJJbmZv
LmgKaW5kZXggYWNkZGEwOGVkMTRjYmY5ZjA5NzEyNzUwNDA1YTQxNzQxZjc2YTIxMy4uYmI2OTJi
OWRjMTcwYjA5ZjQzY2U4NjdmOTQxZjc1MzVhY2ZlY2Y2MyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0hhbmRsZXJJbmZvLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0hhbmRsZXJJbmZvLmgKQEAgLTM3LDYgKzM3LDExIEBAIGVudW0gY2xh
c3MgSGFuZGxlclR5cGUgewogICAgIFN5bnRoZXNpemVkRmluYWxseSA9IDMKIH07CiAKK2VudW0g
Y2xhc3MgUmVxdWlyZWRIYW5kbGVyIHsKKyAgICBDYXRjaEhhbmRsZXIsCisgICAgQW55SGFuZGxl
cgorfTsKKwogc3RydWN0IEhhbmRsZXJJbmZvQmFzZSB7CiAgICAgSGFuZGxlclR5cGUgdHlwZSgp
IGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEhhbmRsZXJUeXBlPih0eXBlQml0cyk7IH0KICAg
ICB2b2lkIHNldFR5cGUoSGFuZGxlclR5cGUgdHlwZSkgeyB0eXBlQml0cyA9IHN0YXRpY19jYXN0
PHVpbnQzMl90Pih0eXBlKTsgfQpAQCAtNTgsNiArNjMsMjMgQEAgc3RydWN0IEhhbmRsZXJJbmZv
QmFzZSB7CiAKICAgICBib29sIGlzQ2F0Y2hIYW5kbGVyKCkgY29uc3QgeyByZXR1cm4gdHlwZSgp
ID09IEhhbmRsZXJUeXBlOjpDYXRjaDsgfQogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgSGFuZGxl
cj4KKyAgICBzdGF0aWMgSGFuZGxlciogaGFuZGxlckZvckluZGV4KFZlY3RvcjxIYW5kbGVyPiYg
ZXhlcHRpb25IYW5kbGVycywgdW5zaWduZWQgaW5kZXgsIFJlcXVpcmVkSGFuZGxlciByZXF1aXJl
ZEhhbmRsZXIpCisgICAgeworICAgICAgICBmb3IgKEhhbmRsZXImIGhhbmRsZXIgOiBleGVwdGlv
bkhhbmRsZXJzKSB7CisgICAgICAgICAgICBpZiAoKHJlcXVpcmVkSGFuZGxlciA9PSBSZXF1aXJl
ZEhhbmRsZXI6OkNhdGNoSGFuZGxlcikgJiYgIWhhbmRsZXIuaXNDYXRjaEhhbmRsZXIoKSkKKyAg
ICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgLy8gSGFuZGxlcnMgYXJlIG9y
ZGVyZWQgaW5uZXJtb3N0IGZpcnN0LCBzbyB0aGUgZmlyc3QgaGFuZGxlciB3ZSBlbmNvdW50ZXIK
KyAgICAgICAgICAgIC8vIHRoYXQgY29udGFpbnMgdGhlIHNvdXJjZSBhZGRyZXNzIGlzIHRoZSBj
b3JyZWN0IGhhbmRsZXIgdG8gdXNlLgorICAgICAgICAgICAgLy8gVGhpcyBpbmRleCB1c2VkIGlz
IGVpdGhlciB0aGUgQnl0ZWNvZGVPZmZzZXQgb3IgYSBDYWxsU2l0ZUluZGV4LgorICAgICAgICAg
ICAgaWYgKGhhbmRsZXIuc3RhcnQgPD0gaW5kZXggJiYgaGFuZGxlci5lbmQgPiBpbmRleCkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gJmhhbmRsZXI7CisgICAgICAgIH0KKworICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICB9CisKICAgICB1aW50MzJfdCBzdGFydDsKICAgICB1aW50MzJfdCBl
bmQ7CiAgICAgdWludDMyX3QgdGFyZ2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmNwcAppbmRleCBlMmNiMDAwNDgzNzk0YmE5
MmQ1MTBkY2Y1ZmE5OTQ4ODVhMjNkYzNkLi5jYWI5ZmJkYzRlODM5ZmJiODlhNjkzMzU2MjIyZGIw
MGUxMDIyM2NhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJl
Y2lzZUp1bXBUYXJnZXRzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
UHJlY2lzZUp1bXBUYXJnZXRzLmNwcApAQCAtMjYsMTQgKzI2LDE1IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiUHJlY2lzZUp1bXBUYXJnZXRzLmgiCiAKKyNpbmNsdWRlICJJbnRl
cnByZXRlcklubGluZXMuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAKIG5hbWVzcGFjZSBK
U0MgewogCi10ZW1wbGF0ZSA8c2l6ZV90IHZlY3RvclNpemU+Ci1zdGF0aWMgdm9pZCBnZXRKdW1w
VGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBJbnRlcnByZXRl
ciogaW50ZXJwcmV0ZXIsIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQg
Ynl0ZWNvZGVPZmZzZXQsIFZlY3Rvcjx1bnNpZ25lZCwgdmVjdG9yU2l6ZT4mIG91dCkKK3RlbXBs
YXRlIDxzaXplX3QgdmVjdG9yU2l6ZSwgdHlwZW5hbWUgQmxvY2ssIHR5cGVuYW1lIEluc3RydWN0
aW9uPgorc3RhdGljIHZvaWQgZ2V0SnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChCbG9jayog
Y29kZUJsb2NrLCBJbnRlcnByZXRlciogaW50ZXJwcmV0ZXIsIEluc3RydWN0aW9uKiBpbnN0cnVj
dGlvbnNCZWdpbiwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIFZlY3Rvcjx1bnNpZ25lZCwgdmVj
dG9yU2l6ZT4mIG91dCkKIHsKLSAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGludGVycHJldGVyLT5n
ZXRPcGNvZGVJRChpbnN0cnVjdGlvbnNCZWdpbltieXRlY29kZU9mZnNldF0udS5vcGNvZGUpOwor
ICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGluc3RydWN0
aW9uc0JlZ2luW2J5dGVjb2RlT2Zmc2V0XSk7CiAgICAgSW5zdHJ1Y3Rpb24qIGN1cnJlbnQgPSBp
bnN0cnVjdGlvbnNCZWdpbiArIGJ5dGVjb2RlT2Zmc2V0OwogICAgIHN3aXRjaCAob3Bjb2RlSUQp
IHsKICAgICBjYXNlIG9wX2ptcDoKQEAgLTU0LDIxICs1NSwyNSBAQCBzdGF0aWMgdm9pZCBnZXRK
dW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBJbnRlcnBy
ZXRlciogaQogICAgIGNhc2Ugb3Bfam5sZXNzZXE6CiAgICAgY2FzZSBvcF9qbmdyZWF0ZXI6CiAg
ICAgY2FzZSBvcF9qbmdyZWF0ZXJlcToKLSAgICBjYXNlIG9wX3NhdmU6IC8vIFRoZSBqdW1wIG9m
IG9wX3NhdmUgaXMgcHVyZWx5IGZvciBjYWxjdWxhdGluZyBsaXZlbmVzcy4KICAgICAgICAgb3V0
LmFwcGVuZChieXRlY29kZU9mZnNldCArIGN1cnJlbnRbM10udS5vcGVyYW5kKTsKICAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBvcF9zYXZlOiB7CisgICAgICAgIC8vIFRoZSBqdW1wIG9mIG9wX3Nh
dmUgdW5kZXIgRXh0cmFjdEdlbmVyYXRvckxpdmVDYWxsZWVMb2NhbHMgbW9kZSBpcyBwdXJlbHkg
Zm9yIGNhbGN1bGF0aW5nIGxpdmVuZXNzLgorICAgICAgICBvdXQuYXBwZW5kKGJ5dGVjb2RlT2Zm
c2V0ICsgY3VycmVudFszXS51Lm9wZXJhbmQpOworICAgICAgICBicmVhazsKKyAgICB9CiAgICAg
Y2FzZSBvcF9zd2l0Y2hfaW1tOgogICAgIGNhc2Ugb3Bfc3dpdGNoX2NoYXI6IHsKLSAgICAgICAg
U2ltcGxlSnVtcFRhYmxlJiB0YWJsZSA9IGNvZGVCbG9jay0+c3dpdGNoSnVtcFRhYmxlKGN1cnJl
bnRbMV0udS5vcGVyYW5kKTsKKyAgICAgICAgYXV0byYgdGFibGUgPSBjb2RlQmxvY2stPnN3aXRj
aEp1bXBUYWJsZShjdXJyZW50WzFdLnUub3BlcmFuZCk7CiAgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IHRhYmxlLmJyYW5jaE9mZnNldHMuc2l6ZSgpOyBpLS07KQogICAgICAgICAgICAgb3V0LmFw
cGVuZChieXRlY29kZU9mZnNldCArIHRhYmxlLmJyYW5jaE9mZnNldHNbaV0pOwogICAgICAgICBv
dXQuYXBwZW5kKGJ5dGVjb2RlT2Zmc2V0ICsgY3VycmVudFsyXS51Lm9wZXJhbmQpOwogICAgICAg
ICBicmVhazsKICAgICB9CiAgICAgY2FzZSBvcF9zd2l0Y2hfc3RyaW5nOiB7Ci0gICAgICAgIFN0
cmluZ0p1bXBUYWJsZSYgdGFibGUgPSBjb2RlQmxvY2stPnN0cmluZ1N3aXRjaEp1bXBUYWJsZShj
dXJyZW50WzFdLnUub3BlcmFuZCk7Ci0gICAgICAgIFN0cmluZ0p1bXBUYWJsZTo6U3RyaW5nT2Zm
c2V0VGFibGU6Oml0ZXJhdG9yIGl0ZXIgPSB0YWJsZS5vZmZzZXRUYWJsZS5iZWdpbigpOwotICAg
ICAgICBTdHJpbmdKdW1wVGFibGU6OlN0cmluZ09mZnNldFRhYmxlOjppdGVyYXRvciBlbmQgPSB0
YWJsZS5vZmZzZXRUYWJsZS5lbmQoKTsKKyAgICAgICAgYXV0byYgdGFibGUgPSBjb2RlQmxvY2st
PnN0cmluZ1N3aXRjaEp1bXBUYWJsZShjdXJyZW50WzFdLnUub3BlcmFuZCk7CisgICAgICAgIGF1
dG8gaXRlciA9IHRhYmxlLm9mZnNldFRhYmxlLmJlZ2luKCk7CisgICAgICAgIGF1dG8gZW5kID0g
dGFibGUub2Zmc2V0VGFibGUuZW5kKCk7CiAgICAgICAgIGZvciAoOyBpdGVyICE9IGVuZDsgKytp
dGVyKQogICAgICAgICAgICAgb3V0LmFwcGVuZChieXRlY29kZU9mZnNldCArIGl0ZXItPnZhbHVl
LmJyYW5jaE9mZnNldCk7CiAgICAgICAgIG91dC5hcHBlbmQoYnl0ZWNvZGVPZmZzZXQgKyBjdXJy
ZW50WzJdLnUub3BlcmFuZCk7CkBAIC04MiwxMyArODcsMTkgQEAgc3RhdGljIHZvaWQgZ2V0SnVt
cFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgSW50ZXJwcmV0
ZXIqIGkKICAgICB9CiB9CiAKLXZvaWQgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgVmVjdG9yPHVuc2lnbmVkLCAzMj4mIG91dCkKK2VudW0gY2xhc3MgQ29t
cHV0ZVByZWNpc2VKdW1wVGFyZ2V0c01vZGUgeworICAgIEZvbGxvd0NvZGVCbG9ja0NsYWltLAor
ICAgIEZvcmNlQ29tcHV0ZSwKK307CisKK3RlbXBsYXRlPENvbXB1dGVQcmVjaXNlSnVtcFRhcmdl
dHNNb2RlIE1vZGUsIHR5cGVuYW1lIEJsb2NrLCB0eXBlbmFtZSBJbnN0cnVjdGlvbiwgc2l6ZV90
IHZlY3RvclNpemU+Cit2b2lkIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHNJbnRlcm5hbChCbG9j
ayogY29kZUJsb2NrLCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGlu
c3RydWN0aW9uQ291bnQsIFZlY3Rvcjx1bnNpZ25lZCwgdmVjdG9yU2l6ZT4mIG91dCkKIHsKICAg
ICBBU1NFUlQob3V0LmlzRW1wdHkoKSk7CiAgICAgCiAgICAgLy8gV2Ugd2lsbCBkZXJpdmUgYSBz
dXBlcnNldCBvZiB0aGUganVtcCB0YXJnZXRzIHRoYXQgdGhlIGNvZGUgYmxvY2sgdGhpbmtzIGl0
IGhhcy4KICAgICAvLyBTbywgaWYgdGhlIGNvZGUgYmxvY2sgY2xhaW1zIHRoZXJlIGFyZSBub25l
LCB0aGVuIHdlIGFyZSBkb25lLgotICAgIGlmICghY29kZUJsb2NrLT5udW1iZXJPZkp1bXBUYXJn
ZXRzKCkpCisgICAgaWYgKE1vZGUgPT0gQ29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0c01vZGU6OkZv
bGxvd0NvZGVCbG9ja0NsYWltICYmICFjb2RlQmxvY2stPm51bWJlck9mSnVtcFRhcmdldHMoKSkK
ICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIGZvciAodW5zaWduZWQgaSA9IGNvZGVCbG9jay0+
bnVtYmVyT2ZFeGNlcHRpb25IYW5kbGVycygpOyBpLS07KSB7CkBAIC05OCwxMCArMTA5LDggQEAg
dm9pZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKENvZGVCbG9jayogY29kZUJsb2NrLCBWZWN0
b3I8dW5zaWduZWQsIDMyPiYgb3V0KQogICAgIH0KIAogICAgIEludGVycHJldGVyKiBpbnRlcnBy
ZXRlciA9IGNvZGVCbG9jay0+dm0oKS0+aW50ZXJwcmV0ZXI7Ci0gICAgSW5zdHJ1Y3Rpb24qIGlu
c3RydWN0aW9uc0JlZ2luID0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpOwotICAg
IHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQgPSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLnNp
emUoKTsKICAgICBmb3IgKHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0ID0gMDsgYnl0ZWNvZGVPZmZz
ZXQgPCBpbnN0cnVjdGlvbkNvdW50OykgewotICAgICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGlu
dGVycHJldGVyLT5nZXRPcGNvZGVJRChpbnN0cnVjdGlvbnNCZWdpbltieXRlY29kZU9mZnNldF0u
dS5vcGNvZGUpOworICAgICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGludGVycHJldGVyLT5nZXRP
cGNvZGVJRChpbnN0cnVjdGlvbnNCZWdpbltieXRlY29kZU9mZnNldF0pOwogICAgICAgICBnZXRK
dW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9jaywgaW50ZXJwcmV0ZXIsIGluc3Ry
dWN0aW9uc0JlZ2luLCBieXRlY29kZU9mZnNldCwgb3V0KTsKICAgICAgICAgYnl0ZWNvZGVPZmZz
ZXQgKz0gb3Bjb2RlTGVuZ3Roc1tvcGNvZGVJRF07CiAgICAgfQpAQCAtMTIzLDExICsxMzIsMzQg
QEAgdm9pZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKENvZGVCbG9jayogY29kZUJsb2NrLCBW
ZWN0b3I8dW5zaWduZWQsIDMyPiYgb3V0KQogICAgIG91dC5zaHJpbmtUb0ZpdCgpOwogfQogCi12
b2lkIGZpbmRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2Nr
LCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgVmVjdG9yPHVuc2lnbmVkLCAxPiYgb3V0KQordm9p
ZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKENvZGVCbG9jayogY29kZUJsb2NrLCBWZWN0b3I8
dW5zaWduZWQsIDMyPiYgb3V0KQogewotICAgIEludGVycHJldGVyKiBpbnRlcnByZXRlciA9IGNv
ZGVCbG9jay0+dm0oKS0+aW50ZXJwcmV0ZXI7Ci0gICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9u
c0JlZ2luID0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpOwotICAgIGdldEp1bXBU
YXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoY29kZUJsb2NrLCBpbnRlcnByZXRlciwgaW5zdHJ1Y3Rp
b25zQmVnaW4sIGJ5dGVjb2RlT2Zmc2V0LCBvdXQpOworICAgIGNvbXB1dGVQcmVjaXNlSnVtcFRh
cmdldHNJbnRlcm5hbDxDb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzTW9kZTo6Rm9sbG93Q29kZUJs
b2NrQ2xhaW0+KGNvZGVCbG9jaywgY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpLCBj
b2RlQmxvY2stPmluc3RydWN0aW9ucygpLnNpemUoKSwgb3V0KTsKK30KKwordm9pZCBjb21wdXRl
UHJlY2lzZUp1bXBUYXJnZXRzKENvZGVCbG9jayogY29kZUJsb2NrLCBJbnN0cnVjdGlvbiogaW5z
dHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQsIFZlY3Rvcjx1bnNpZ25l
ZCwgMzI+JiBvdXQpCit7CisgICAgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0c0ludGVybmFsPENv
bXB1dGVQcmVjaXNlSnVtcFRhcmdldHNNb2RlOjpGb2xsb3dDb2RlQmxvY2tDbGFpbT4oY29kZUJs
b2NrLCBpbnN0cnVjdGlvbnNCZWdpbiwgaW5zdHJ1Y3Rpb25Db3VudCwgb3V0KTsKK30KKwordm9p
ZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKFVubGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IFVubGlua2VkSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBpbnN0cnVj
dGlvbkNvdW50LCBWZWN0b3I8dW5zaWduZWQsIDMyPiYgb3V0KQoreworICAgIGNvbXB1dGVQcmVj
aXNlSnVtcFRhcmdldHNJbnRlcm5hbDxDb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzTW9kZTo6Rm9s
bG93Q29kZUJsb2NrQ2xhaW0+KGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb25zQmVnaW4sIGluc3RydWN0
aW9uQ291bnQsIG91dCk7Cit9CisKK3ZvaWQgcmVjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKFVu
bGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFVubGlua2VkSW5zdHJ1Y3Rpb24qIGluc3RydWN0
aW9uc0JlZ2luLCB1bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50LCBWZWN0b3I8dW5zaWduZWQ+JiBv
dXQpCit7CisgICAgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0c0ludGVybmFsPENvbXB1dGVQcmVj
aXNlSnVtcFRhcmdldHNNb2RlOjpGb3JjZUNvbXB1dGU+KGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb25z
QmVnaW4sIGluc3RydWN0aW9uQ291bnQsIG91dCk7Cit9CisKK3ZvaWQgZmluZEp1bXBUYXJnZXRz
Rm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEluc3RydWN0aW9uKiBpbnN0
cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIFZlY3Rvcjx1bnNpZ25lZCwg
MT4mIG91dCkKK3sKKyAgICBnZXRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9j
aywgY29kZUJsb2NrLT52bSgpLT5pbnRlcnByZXRlciwgaW5zdHJ1Y3Rpb25zQmVnaW4sIGJ5dGVj
b2RlT2Zmc2V0LCBvdXQpOworfQorCit2b2lkIGZpbmRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zm
c2V0KFVubGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFVubGlua2VkSW5zdHJ1Y3Rpb24qIGlu
c3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgVmVjdG9yPHVuc2lnbmVk
LCAxPiYgb3V0KQoreworICAgIGdldEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoY29kZUJs
b2NrLCBjb2RlQmxvY2stPnZtKCktPmludGVycHJldGVyLCBpbnN0cnVjdGlvbnNCZWdpbiwgYnl0
ZWNvZGVPZmZzZXQsIG91dCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5oCmluZGV4IDg1
MjQxM2Q3N2I3OTg5ODRiMjdjZWYwZWQ2MmJjOTRjNjg5ZTIxMmMuLmRiOWJkMzgzYjhhYzQ1NTdk
MzI2NzE3YjcyZDRiMGY1MGIxZDE4MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmgKQEAgLTMwLDEwICszMCwxOCBAQAogCiBu
YW1lc3BhY2UgSlNDIHsKIAorY2xhc3MgVW5saW5rZWRDb2RlQmxvY2s7CitzdHJ1Y3QgVW5saW5r
ZWRJbnN0cnVjdGlvbjsKKwogLy8gUmV0dXJuIGEgc29ydGVkIGxpc3Qgb2YgYnl0ZWNvZGUgaW5k
ZXggdGhhdCBhcmUgdGhlIGRlc3RpbmF0aW9uIG9mIGEganVtcC4KIHZvaWQgY29tcHV0ZVByZWNp
c2VKdW1wVGFyZ2V0cyhDb2RlQmxvY2sqLCBWZWN0b3I8dW5zaWduZWQsIDMyPiYgb3V0KTsKK3Zv
aWQgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhDb2RlQmxvY2sqLCBJbnN0cnVjdGlvbiogaW5z
dHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQsIFZlY3Rvcjx1bnNpZ25l
ZCwgMzI+JiBvdXQpOwordm9pZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKFVubGlua2VkQ29k
ZUJsb2NrKiwgVW5saW5rZWRJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVk
IGluc3RydWN0aW9uQ291bnQsIFZlY3Rvcjx1bnNpZ25lZCwgMzI+JiBvdXQpOworCit2b2lkIHJl
Y29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhVbmxpbmtlZENvZGVCbG9jayosIFVubGlua2VkSW5z
dHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50LCBW
ZWN0b3I8dW5zaWduZWQ+JiBvdXQpOwogCi12b2lkIGZpbmRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2Rl
T2Zmc2V0KENvZGVCbG9jayosIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBWZWN0b3I8dW5zaWdu
ZWQsIDE+JiBvdXQpOwordm9pZCBmaW5kSnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChDb2Rl
QmxvY2sqLCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGJ5dGVjb2Rl
T2Zmc2V0LCBWZWN0b3I8dW5zaWduZWQsIDE+JiBvdXQpOwordm9pZCBmaW5kSnVtcFRhcmdldHNG
b3JCeXRlY29kZU9mZnNldChVbmxpbmtlZENvZGVCbG9jayosIFVubGlua2VkSW5zdHJ1Y3Rpb24q
IGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgVmVjdG9yPHVuc2ln
bmVkLCAxPiYgb3V0KTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCmluZGV4IDI5OWFj
NjgwZDlhMWQxZTVhOTBkOWZhZTFhMjJmODQ0ZTI5MmUzZTIuLmY3YjVhZTBiNmI0NzIxNzBkMjg5
NDY0MTY3NjYxOGM1N2M0OWVjMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1
ZGUgIlVubGlua2VkQ29kZUJsb2NrLmgiCiAKICNpbmNsdWRlICJCeXRlY29kZUdlbmVyYXRvci5o
IgorI2luY2x1ZGUgIkJ5dGVjb2RlTW9kaWZpY2F0aW9uU2V0LmgiCiAjaW5jbHVkZSAiQ2xhc3NJ
bmZvLmgiCiAjaW5jbHVkZSAiQ29kZUNhY2hlLmgiCiAjaW5jbHVkZSAiRXhlY3V0YWJsZS5oIgpA
QCAtMzYsNiArMzcsNyBAQAogI2luY2x1ZGUgIkpTU3RyaW5nLmgiCiAjaW5jbHVkZSAiSlNDSW5s
aW5lcy5oIgogI2luY2x1ZGUgIlBhcnNlci5oIgorI2luY2x1ZGUgIlByZWNpc2VKdW1wVGFyZ2V0
cy5oIgogI2luY2x1ZGUgIlNvdXJjZVByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlLmgi
CiAjaW5jbHVkZSAiU3ltYm9sVGFibGUuaCIKQEAgLTM2Niw1ICszNjgsMTExIEBAIGNvbnN0IFVu
bGlua2VkSW5zdHJ1Y3Rpb25TdHJlYW0mIFVubGlua2VkQ29kZUJsb2NrOjppbnN0cnVjdGlvbnMo
KSBjb25zdAogICAgIHJldHVybiAqbV91bmxpbmtlZEluc3RydWN0aW9uczsKIH0KIAorVW5saW5r
ZWRIYW5kbGVySW5mbyogVW5saW5rZWRDb2RlQmxvY2s6OmhhbmRsZXJGb3JCeXRlY29kZU9mZnNl
dCh1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgUmVxdWlyZWRIYW5kbGVyIHJlcXVpcmVkSGFuZGxl
cikKK3sKKyAgICByZXR1cm4gaGFuZGxlckZvckluZGV4KGJ5dGVjb2RlT2Zmc2V0LCByZXF1aXJl
ZEhhbmRsZXIpOworfQorCitVbmxpbmtlZEhhbmRsZXJJbmZvKiBVbmxpbmtlZENvZGVCbG9jazo6
aGFuZGxlckZvckluZGV4KHVuc2lnbmVkIGluZGV4LCBSZXF1aXJlZEhhbmRsZXIgcmVxdWlyZWRI
YW5kbGVyKQoreworICAgIGlmICghbV9yYXJlRGF0YSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgcmV0dXJuIFVubGlua2VkSGFuZGxlckluZm86OmhhbmRsZXJGb3JJbmRleChtX3JhcmVE
YXRhLT5tX2V4Y2VwdGlvbkhhbmRsZXJzLCBpbmRleCwgcmVxdWlyZWRIYW5kbGVyKTsKK30KKwor
dm9pZCBVbmxpbmtlZENvZGVCbG9jazo6YXBwbHlNb2RpZmljYXRpb24oQnl0ZWNvZGVNb2RpZmlj
YXRpb25TZXQmIGluc2VydGlvblNldCkKK3sKKyAgICAvLyBCZWZvcmUgYXBwbHlpbmcgdGhlIGNo
YW5nZXMsIHdlIGFkanVzdCB0aGUganVtcHMgYmFzZWQgb24gdGhlIG9yaWdpbmFsIGJ5dGVjb2Rl
IG9mZnNldCwgdGhlIG9mZnNldCB0byB0aGUganVtcCB0YXJnZXQsIGFuZAorICAgIC8vIHRoZSBp
bnNlcnRpb24gaW5mb3JtYXRpb24uCisKKyAgICBCeXRlY29kZUdyYXBoPFVubGlua2VkQ29kZUJs
b2NrPiYgZ3JhcGggPSBpbnNlcnRpb25TZXQuZ3JhcGgoKTsKKyAgICBVbmxpbmtlZEluc3RydWN0
aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiA9IGdyYXBoLmluc3RydWN0aW9ucygpLmJlZ2luKCk7Cisg
ICAgZm9yIChpbnQgYnl0ZWNvZGVPZmZzZXQgPSAwLCBpbnN0cnVjdGlvbkNvdW50ID0gZ3JhcGgu
aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpOyBieXRlY29kZU9mZnNldCA8IGluc3RydWN0aW9uQ291bnQ7
KSB7CisgICAgICAgIFVubGlua2VkSW5zdHJ1Y3Rpb24qIGN1cnJlbnQgPSBpbnN0cnVjdGlvbnNC
ZWdpbiArIGJ5dGVjb2RlT2Zmc2V0OworICAgICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGN1cnJl
bnRbMF0udS5vcGNvZGU7CisKKyAgICAgICAgc3dpdGNoIChvcGNvZGVJRCkgeworICAgICAgICBj
YXNlIG9wX2ptcDoKKyAgICAgICAgICAgIGN1cnJlbnRbMV0udS5vcGVyYW5kID0gaW5zZXJ0aW9u
U2V0LmFkanVzdE9mZnNldChieXRlY29kZU9mZnNldCwgYnl0ZWNvZGVPZmZzZXQgKyBjdXJyZW50
WzFdLnUub3BlcmFuZCk7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIG9wX2p0
cnVlOgorICAgICAgICBjYXNlIG9wX2pmYWxzZToKKyAgICAgICAgY2FzZSBvcF9qZXFfbnVsbDoK
KyAgICAgICAgY2FzZSBvcF9qbmVxX251bGw6CisgICAgICAgICAgICBjdXJyZW50WzJdLnUub3Bl
cmFuZCA9IGluc2VydGlvblNldC5hZGp1c3RPZmZzZXQoYnl0ZWNvZGVPZmZzZXQsIGJ5dGVjb2Rl
T2Zmc2V0ICsgY3VycmVudFsyXS51Lm9wZXJhbmQpOworICAgICAgICAgICAgYnJlYWs7CisKKyAg
ICAgICAgY2FzZSBvcF9qbmVxX3B0cjoKKyAgICAgICAgY2FzZSBvcF9qbGVzczoKKyAgICAgICAg
Y2FzZSBvcF9qbGVzc2VxOgorICAgICAgICBjYXNlIG9wX2pncmVhdGVyOgorICAgICAgICBjYXNl
IG9wX2pncmVhdGVyZXE6CisgICAgICAgIGNhc2Ugb3Bfam5sZXNzOgorICAgICAgICBjYXNlIG9w
X2pubGVzc2VxOgorICAgICAgICBjYXNlIG9wX2puZ3JlYXRlcjoKKyAgICAgICAgY2FzZSBvcF9q
bmdyZWF0ZXJlcToKKyAgICAgICAgICAgIGN1cnJlbnRbM10udS5vcGVyYW5kID0gaW5zZXJ0aW9u
U2V0LmFkanVzdE9mZnNldChieXRlY29kZU9mZnNldCwgYnl0ZWNvZGVPZmZzZXQgKyBjdXJyZW50
WzNdLnUub3BlcmFuZCk7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIG9wX3N3
aXRjaF9pbW06CisgICAgICAgIGNhc2Ugb3Bfc3dpdGNoX2NoYXI6IHsKKyAgICAgICAgICAgIGF1
dG8mIHRhYmxlID0gc3dpdGNoSnVtcFRhYmxlKGN1cnJlbnRbMV0udS5vcGVyYW5kKTsKKyAgICAg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IHRhYmxlLmJyYW5jaE9mZnNldHMuc2l6ZSgpOyBpLS07
KQorICAgICAgICAgICAgICAgIHRhYmxlLmJyYW5jaE9mZnNldHNbaV0gPSBpbnNlcnRpb25TZXQu
YWRqdXN0T2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0LCBieXRlY29kZU9mZnNldCArIHRhYmxlLmJyYW5j
aE9mZnNldHNbaV0pOworICAgICAgICAgICAgY3VycmVudFsyXS51Lm9wZXJhbmQgPSBpbnNlcnRp
b25TZXQuYWRqdXN0T2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0LCBieXRlY29kZU9mZnNldCArIGN1cnJl
bnRbMl0udS5vcGVyYW5kKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAg
ICAgY2FzZSBvcF9zd2l0Y2hfc3RyaW5nOiB7CisgICAgICAgICAgICBhdXRvJiB0YWJsZSA9IHN0
cmluZ1N3aXRjaEp1bXBUYWJsZShjdXJyZW50WzFdLnUub3BlcmFuZCk7CisgICAgICAgICAgICBh
dXRvIGl0ZXIgPSB0YWJsZS5vZmZzZXRUYWJsZS5iZWdpbigpOworICAgICAgICAgICAgYXV0byBl
bmQgPSB0YWJsZS5vZmZzZXRUYWJsZS5lbmQoKTsKKyAgICAgICAgICAgIGZvciAoOyBpdGVyICE9
IGVuZDsgKytpdGVyKQorICAgICAgICAgICAgICAgIGl0ZXItPnZhbHVlLmJyYW5jaE9mZnNldCA9
IGluc2VydGlvblNldC5hZGp1c3RPZmZzZXQoYnl0ZWNvZGVPZmZzZXQsIGJ5dGVjb2RlT2Zmc2V0
ICsgaXRlci0+dmFsdWUuYnJhbmNoT2Zmc2V0KTsKKyAgICAgICAgICAgIGN1cnJlbnRbMl0udS5v
cGVyYW5kID0gaW5zZXJ0aW9uU2V0LmFkanVzdE9mZnNldChieXRlY29kZU9mZnNldCwgYnl0ZWNv
ZGVPZmZzZXQgKyBjdXJyZW50WzJdLnUub3BlcmFuZCk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQorCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
fQorCisgICAgICAgIGJ5dGVjb2RlT2Zmc2V0ICs9IG9wY29kZUxlbmd0aChvcGNvZGVJRCk7Cisg
ICAgfQorCisgICAgLy8gVGhlbiwgZXhjZXB0aW9uIGhhbmRsZXJzIHNob3VsZCBiZSBhZGp1c3Rl
ZC4KKyAgICBpZiAobV9yYXJlRGF0YSkgeworICAgICAgICBmb3IgKFVubGlua2VkSGFuZGxlcklu
Zm8mIGhhbmRsZXIgOiBtX3JhcmVEYXRhLT5tX2V4Y2VwdGlvbkhhbmRsZXJzKSB7CisgICAgICAg
ICAgICBoYW5kbGVyLnRhcmdldCA9IGluc2VydGlvblNldC5hZGp1c3RPZmZzZXQoMCwgaGFuZGxl
ci50YXJnZXQpOworICAgICAgICAgICAgaGFuZGxlci5zdGFydCA9IGluc2VydGlvblNldC5hZGp1
c3RPZmZzZXQoMCwgaGFuZGxlci5zdGFydCk7CisgICAgICAgICAgICBoYW5kbGVyLmVuZCA9IGlu
c2VydGlvblNldC5hZGp1c3RPZmZzZXQoMCwgaGFuZGxlci5lbmQpOworICAgICAgICB9CisKKyAg
ICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3JhcmVEYXRhLT5tX29wUHJvZmlsZUNvbnRy
b2xGbG93Qnl0ZWNvZGVPZmZzZXRzLnNpemUoKTsgKytpKQorICAgICAgICAgICAgbV9yYXJlRGF0
YS0+bV9vcFByb2ZpbGVDb250cm9sRmxvd0J5dGVjb2RlT2Zmc2V0c1tpXSA9IGluc2VydGlvblNl
dC5hZGp1c3RPZmZzZXQoMCwgbV9yYXJlRGF0YS0+bV9vcFByb2ZpbGVDb250cm9sRmxvd0J5dGVj
b2RlT2Zmc2V0c1tpXSk7CisKKyAgICAgICAgaWYgKCFtX3JhcmVEYXRhLT5tX3R5cGVQcm9maWxl
ckluZm9NYXAuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICBIYXNoTWFwPHVuc2lnbmVkLCBSYXJl
RGF0YTo6VHlwZVByb2ZpbGVyRXhwcmVzc2lvblJhbmdlPiBhZGp1c3RlZFR5cGVQcm9maWxlcklu
Zm9NYXA7CisgICAgICAgICAgICBmb3IgKGF1dG8mIGVudHJ5IDogbV9yYXJlRGF0YS0+bV90eXBl
UHJvZmlsZXJJbmZvTWFwKQorICAgICAgICAgICAgICAgIGFkanVzdGVkVHlwZVByb2ZpbGVySW5m
b01hcC5zZXQoaW5zZXJ0aW9uU2V0LmFkanVzdE9mZnNldCgwLCBlbnRyeS5rZXkpLCBlbnRyeS52
YWx1ZSk7CisgICAgICAgICAgICBtX3JhcmVEYXRhLT5tX3R5cGVQcm9maWxlckluZm9NYXAuc3dh
cChhZGp1c3RlZFR5cGVQcm9maWxlckluZm9NYXApOworICAgICAgICB9CisgICAgfQorCisgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zLnNpemUo
KTsgKytpKQorICAgICAgICBtX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zW2ldID0gaW5zZXJ0
aW9uU2V0LmFkanVzdE9mZnNldCgwLCBtX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zW2ldKTsK
KworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9leHByZXNzaW9uSW5mby5zaXplKCk7ICsr
aSkKKyAgICAgICAgbV9leHByZXNzaW9uSW5mb1tpXS5pbnN0cnVjdGlvbk9mZnNldCA9IGluc2Vy
dGlvblNldC5hZGp1c3RPZmZzZXQoMCwgbV9leHByZXNzaW9uSW5mb1tpXS5pbnN0cnVjdGlvbk9m
ZnNldCk7CisKKyAgICAvLyBUaGVuLCBtb2RpZnkgdGhlIHVubGlua2VkIGluc3RydWN0aW9ucy4K
KyAgICBpbnNlcnRpb25TZXQuYXBwbHlNb2RpZmljYXRpb24oKTsKKworICAgIC8vIEFuZCByZWNv
bXB1dGUgdGhlIGp1bXAgdGFyZ2V0IGJhc2VkIG9uIHRoZSBtb2RpZmllZCB1bmxpbmtlZCBpbnN0
cnVjdGlvbnMuCisgICAgbV9qdW1wVGFyZ2V0cy5jbGVhcigpOworICAgIHJlY29tcHV0ZVByZWNp
c2VKdW1wVGFyZ2V0cyh0aGlzLCBncmFwaC5pbnN0cnVjdGlvbnMoKS5iZWdpbigpLCBncmFwaC5p
bnN0cnVjdGlvbnMoKS5zaXplKCksIG1fanVtcFRhcmdldHMpOworfQorCiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKaW5kZXgg
OTFmZGNhNDhjMWUzOWU4YmVmYjBjNWZkNTVmZDliZDkxYzFmMzcwNy4uODhjZjBjOGYwOWU0NDAz
MzQxN2UwNGJhYTMyZGM1MDJkZTE4MDIwOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKQEAgLTQ4LDYgKzQ4LDcgQEAKIAogbmFt
ZXNwYWNlIEpTQyB7CiAKK2NsYXNzIEJ5dGVjb2RlTW9kaWZpY2F0aW9uU2V0OwogY2xhc3MgRGVi
dWdnZXI7CiBjbGFzcyBGdW5jdGlvbk1ldGFkYXRhTm9kZTsKIGNsYXNzIEZ1bmN0aW9uRXhlY3V0
YWJsZTsKQEAgLTY5LDcgKzcwLDExIEBAIHR5cGVkZWYgdW5zaWduZWQgVW5saW5rZWRPYmplY3RB
bGxvY2F0aW9uUHJvZmlsZTsKIHR5cGVkZWYgdW5zaWduZWQgVW5saW5rZWRMTEludENhbGxMaW5r
SW5mbzsKIAogc3RydWN0IFVubGlua2VkU3RyaW5nSnVtcFRhYmxlIHsKLSAgICB0eXBlZGVmIEhh
c2hNYXA8UmVmUHRyPFN0cmluZ0ltcGw+LCBpbnQzMl90PiBTdHJpbmdPZmZzZXRUYWJsZTsKKyAg
ICBzdHJ1Y3QgT2Zmc2V0TG9jYXRpb24geworICAgICAgICBpbnQzMl90IGJyYW5jaE9mZnNldDsK
KyAgICB9OworCisgICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxTdHJpbmdJbXBsPiwgT2Zmc2V0
TG9jYXRpb24+IFN0cmluZ09mZnNldFRhYmxlOwogICAgIFN0cmluZ09mZnNldFRhYmxlIG9mZnNl
dFRhYmxlOwogCiAgICAgaW5saW5lIGludDMyX3Qgb2Zmc2V0Rm9yVmFsdWUoU3RyaW5nSW1wbCog
dmFsdWUsIGludDMyX3QgZGVmYXVsdE9mZnNldCkKQEAgLTc4LDcgKzgzLDcgQEAgc3RydWN0IFVu
bGlua2VkU3RyaW5nSnVtcFRhYmxlIHsKICAgICAgICAgU3RyaW5nT2Zmc2V0VGFibGU6OmNvbnN0
X2l0ZXJhdG9yIGxvYyA9IG9mZnNldFRhYmxlLmZpbmQodmFsdWUpOwogICAgICAgICBpZiAobG9j
ID09IGVuZCkKICAgICAgICAgICAgIHJldHVybiBkZWZhdWx0T2Zmc2V0OwotICAgICAgICByZXR1
cm4gbG9jLT52YWx1ZTsKKyAgICAgICAgcmV0dXJuIGxvYy0+dmFsdWUuYnJhbmNoT2Zmc2V0Owog
ICAgIH0KIAogfTsKQEAgLTEwNiw2ICsxMTEsOCBAQCBzdHJ1Y3QgVW5saW5rZWRJbnN0cnVjdGlv
biB7CiAgICAgfSB1OwogfTsKIAorY2xhc3MgQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb247CisK
IGNsYXNzIFVubGlua2VkQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiBwdWJsaWM6CiAgICAg
dHlwZWRlZiBKU0NlbGwgQmFzZTsKQEAgLTExNSw2ICsxMjIsOCBAQCBjbGFzcyBVbmxpbmtlZENv
ZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogCiAgICAgZW51bSB7IENhbGxGdW5jdGlvbiwgQXBw
bHlGdW5jdGlvbiB9OwogCisgICAgdHlwZWRlZiBWZWN0b3I8VW5saW5rZWRJbnN0cnVjdGlvbiwg
MCwgVW5zYWZlVmVjdG9yT3ZlcmZsb3c+IFVucGFja2VkSW5zdHJ1Y3Rpb25zOworCiAgICAgYm9v
bCBpc0NvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9pc0NvbnN0cnVjdG9yOyB9CiAgICAg
Ym9vbCBpc1N0cmljdE1vZGUoKSBjb25zdCB7IHJldHVybiBtX2lzU3RyaWN0TW9kZTsgfQogICAg
IGJvb2wgdXNlc0V2YWwoKSBjb25zdCB7IHJldHVybiBtX3VzZXNFdmFsOyB9CkBAIC0yMDQsNiAr
MjEzLDkgQEAgY2xhc3MgVW5saW5rZWRDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICB1
bnNpZ25lZCBqdW1wVGFyZ2V0KGludCBpbmRleCkgY29uc3QgeyByZXR1cm4gbV9qdW1wVGFyZ2V0
c1tpbmRleF07IH0KICAgICB1bnNpZ25lZCBsYXN0SnVtcFRhcmdldCgpIGNvbnN0IHsgcmV0dXJu
IG1fanVtcFRhcmdldHMubGFzdCgpOyB9CiAKKyAgICBVbmxpbmtlZEhhbmRsZXJJbmZvKiBoYW5k
bGVyRm9yQnl0ZWNvZGVPZmZzZXQodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIFJlcXVpcmVkSGFu
ZGxlciA9IFJlcXVpcmVkSGFuZGxlcjo6QW55SGFuZGxlcik7CisgICAgVW5saW5rZWRIYW5kbGVy
SW5mbyogaGFuZGxlckZvckluZGV4KHVuc2lnbmVkLCBSZXF1aXJlZEhhbmRsZXIgPSBSZXF1aXJl
ZEhhbmRsZXI6OkFueUhhbmRsZXIpOworCiAgICAgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbigpIGNv
bnN0IHsgcmV0dXJuIG1faXNCdWlsdGluRnVuY3Rpb247IH0KIAogICAgIENvbnN0cnVjdG9yS2lu
ZCBjb25zdHJ1Y3RvcktpbmQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxDb25zdHJ1Y3Rv
cktpbmQ+KG1fY29uc3RydWN0b3JLaW5kKTsgfQpAQCAtMzg0LDYgKzM5Niw4IEBAIGNsYXNzIFVu
bGlua2VkQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgfQogCiBwcml2YXRlOgorICAg
IGZyaWVuZCBjbGFzcyBCeXRlY29kZU1vZGlmaWNhdGlvblNldDsKKyAgICB2b2lkIGFwcGx5TW9k
aWZpY2F0aW9uKEJ5dGVjb2RlTW9kaWZpY2F0aW9uU2V0Jik7CiAKICAgICB2b2lkIGNyZWF0ZVJh
cmVEYXRhSWZOZWNlc3NhcnkoKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9WaXJ0dWFsUmVnaXN0ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9WaXJ0dWFsUmVnaXN0ZXIuaAppbmRleCBkM2RmNDA5NTdiNTE3NTY4ZTNhZWZiZTNh
MWE2MDlmZDg3OGJhYWMzLi5kYWY1MDlmNmM3ZDExNWU0NWJjYjEwN2M2N2QzZDM4ZDgwNGYyODk0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmlydHVhbFJlZ2lz
dGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZpcnR1YWxSZWdpc3Rl
ci5oCkBAIC0yNiw4ICsyNiw4IEBACiAjaWZuZGVmIFZpcnR1YWxSZWdpc3Rlcl9oCiAjZGVmaW5l
IFZpcnR1YWxSZWdpc3Rlcl9oCiAKKyNpbmNsdWRlICJCeXRlY29kZUNvbnZlbnRpb25zLmgiCiAj
aW5jbHVkZSAiQ2FsbEZyYW1lLmgiCi0KICNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KIAog
bmFtZXNwYWNlIEpTQyB7CkBAIC0xMDMsNyArMTAzLDcgQEAgY2xhc3MgVmlydHVhbFJlZ2lzdGVy
IHsKIAogcHJpdmF0ZToKICAgICBzdGF0aWMgY29uc3QgaW50IHNfaW52YWxpZFZpcnR1YWxSZWdp
c3RlciA9IDB4M2ZmZmZmZmY7Ci0gICAgc3RhdGljIGNvbnN0IGludCBzX2ZpcnN0Q29uc3RhbnRS
ZWdpc3RlckluZGV4ID0gMHg0MDAwMDAwMDsKKyAgICBzdGF0aWMgY29uc3QgaW50IHNfZmlyc3RD
b25zdGFudFJlZ2lzdGVySW5kZXggPSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleDsKIAogICAg
IHN0YXRpYyBpbnQgbG9jYWxUb09wZXJhbmQoaW50IGxvY2FsKSB7IHJldHVybiAtMSAtIGxvY2Fs
OyB9CiAgICAgc3RhdGljIGludCBvcGVyYW5kVG9Mb2NhbChpbnQgb3BlcmFuZCkgeyByZXR1cm4g
LTEgLSBvcGVyYW5kOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IDBmYzhjZWIzYmQ1NmJiNWViOGM3
Y2I3MzNkYTNhMDRhYzYzNjNlMjYuLjlhMGE0YTc2ZWM2ZGY0YzUwZjlkNjI2ZmE3NWYwYTRkZDMx
MTA5ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0
ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiQnl0
ZWNvZGVHZW5lcmF0b3IuaCIKIAogI2luY2x1ZGUgIkJ1aWx0aW5FeGVjdXRhYmxlcy5oIgorI2lu
Y2x1ZGUgIkJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVM
aXZlbmVzc0FuYWx5c2lzLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJK
U0Z1bmN0aW9uLmgiCkBAIC0xNTQsNiArMTU1LDEwIEBAIFBhcnNlckVycm9yIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjpnZW5lcmF0ZSgpCiAgICAgICAgIG1fY29kZUJsb2NrLT5hZGRFeGNlcHRpb25IYW5k
bGVyKGluZm8pOwogICAgIH0KICAgICAKKworICAgIGlmIChtX2NvZGVCbG9jay0+cGFyc2VNb2Rl
KCkgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JCb2R5TW9kZSkKKyAgICAgICAgcGVyZm9y
bUdlbmVyYXRvcmlmaWNhdGlvbihtX2NvZGVCbG9jay5nZXQoKSwgbV9pbnN0cnVjdGlvbnMsIG1f
Z2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZS5nZXQoKSwgbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRh
YmxlSW5kZXgpOworCiAgICAgbV9jb2RlQmxvY2stPnNldEluc3RydWN0aW9ucyhzdGQ6Om1ha2Vf
dW5pcXVlPFVubGlua2VkSW5zdHJ1Y3Rpb25TdHJlYW0+KG1faW5zdHJ1Y3Rpb25zKSk7CiAKICAg
ICBtX2NvZGVCbG9jay0+c2hyaW5rVG9GaXQoKTsKQEAgLTI2MSwxMCArMjY2LDE0IEBAIEJ5dGVj
b2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVu
Y3Rpb25Ob2RlLCBVbmxpbmtlCiAgICAgYm9vbCBzaG91bGRDYXB0dXJlQWxsT2ZUaGVUaGluZ3Mg
PSBtX3Nob3VsZEVtaXREZWJ1Z0hvb2tzIHx8IGNvZGVCbG9jay0+dXNlc0V2YWwoKTsKICAgICBi
b29sIG5lZWRzQXJndW1lbnRzID0gKGZ1bmN0aW9uTm9kZS0+dXNlc0FyZ3VtZW50cygpIHx8IGNv
ZGVCbG9jay0+dXNlc0V2YWwoKSB8fCAoZnVuY3Rpb25Ob2RlLT51c2VzQXJyb3dGdW5jdGlvbigp
ICYmICFjb2RlQmxvY2stPmlzQXJyb3dGdW5jdGlvbigpICYmIGlzQXJndW1lbnRzVXNlZEluSW5u
ZXJBcnJvd0Z1bmN0aW9uKCkpKTsKIAotICAgIC8vIEdlbmVyYXRvciBuZXZlciBwcm92aWRlcyAi
YXJndW1lbnRzIi4gImFyZ3VtZW50cyIgcmVmZXJlbmNlIHdpbGwgYmUgcmVzb2x2ZWQgaW4gYW4g
dXBwZXIgZ2VuZXJhdG9yIGZ1bmN0aW9uIHNjb3BlLgotICAgIGlmIChwYXJzZU1vZGUgPT0gU291
cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JCb2R5TW9kZSkKKyAgICBpZiAocGFyc2VNb2RlID09IFNv
dXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yQm9keU1vZGUpIHsKKyAgICAgICAgLy8gR2VuZXJhdG9y
IG5ldmVyIHByb3ZpZGVzICJhcmd1bWVudHMiLiAiYXJndW1lbnRzIiByZWZlcmVuY2Ugd2lsbCBi
ZSByZXNvbHZlZCBpbiBhbiB1cHBlciBnZW5lcmF0b3IgZnVuY3Rpb24gc2NvcGUuCiAgICAgICAg
IG5lZWRzQXJndW1lbnRzID0gZmFsc2U7CiAKKyAgICAgICAgLy8gR2VuZXJhdG9yIHVzZXMgdGhl
IHZhciBzY29wZSB0byBzYXZlIGFuZCByZXN1bWUgaXRzIHZhcmlhYmxlcy4gU28gdGhlIGxleGlj
YWwgc2NvcGUgaXMgYWx3YXlzIGluc3RhbnRpYXRlZC4KKyAgICAgICAgc2hvdWxkQ2FwdHVyZVNv
bWVPZlRoZVRoaW5ncyA9IHRydWU7CisgICAgfQorCiAgICAgaWYgKHBhcnNlTW9kZSA9PSBTb3Vy
Y2VQYXJzZU1vZGU6OkdlbmVyYXRvcldyYXBwZXJGdW5jdGlvbk1vZGUgJiYgbmVlZHNBcmd1bWVu
dHMpIHsKICAgICAgICAgLy8gR2VuZXJhdG9yIGRvZXMgbm90IHByb3ZpZGUgImFyZ3VtZW50cyIu
IEluc3RlYWQsIHdyYXBwaW5nIEdlbmVyYXRvckZ1bmN0aW9uIHByb3ZpZGVzICJhcmd1bWVudHMi
LgogICAgICAgICAvLyBUaGlzIGlzIGJlY2F1c2UgYXJndW1lbnRzIG9mIGEgZ2VuZXJhdG9yIHNo
b3VsZCBiZSBldmFsdWF0ZWQgYmVmb3JlIHN0YXJ0aW5nIGl0LgpAQCAtMjczLDcgKzI4Miw3IEBA
IEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9k
ZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtlCiAgICAgICAgIC8vICAgIGZ1bmN0aW9uICpnZW4oYSwg
YiA9IGhlbGxvKCkpCiAgICAgICAgIC8vICAgIHsKICAgICAgICAgLy8gICAgICAgIHJldHVybiB7
Ci0gICAgICAgIC8vICAgICAgICAgICAgQGdlbmVyYXRvck5leHQ6IGZ1bmN0aW9uIChAZ2VuZXJh
dG9yLCBAZ2VuZXJhdG9yU3RhdGUsIEBnZW5lcmF0b3JWYWx1ZSwgQGdlbmVyYXRvclJlc3VtZU1v
ZGUpCisgICAgICAgIC8vICAgICAgICAgICAgQGdlbmVyYXRvck5leHQ6IGZ1bmN0aW9uIChAZ2Vu
ZXJhdG9yLCBAZ2VuZXJhdG9yU3RhdGUsIEBnZW5lcmF0b3JWYWx1ZSwgQGdlbmVyYXRvclJlc3Vt
ZU1vZGUsIEBnZW5lcmF0b3JGcmFtZSkKICAgICAgICAgLy8gICAgICAgICAgICB7CiAgICAgICAg
IC8vICAgICAgICAgICAgICAgIGFyZ3VtZW50czsgIC8vIFRoaXMgYGFyZ3VtZW50c2Agc2hvdWxk
IHJlZmVyZW5jZSB0byB0aGUgZ2VuJ3MgYXJndW1lbnRzLgogICAgICAgICAvLyAgICAgICAgICAg
ICAgICAuLi4KQEAgLTMwMiwxNiArMzExLDE0IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29k
ZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtlCiAg
ICAgICAgIHJldHVybiBjYXB0dXJlcyh1aWQpID8gVmFyS2luZDo6U2NvcGUgOiBWYXJLaW5kOjpT
dGFjazsKICAgICB9OwogCi0gICAgZW1pdEVudGVyKCk7Ci0KLSAgICBhbGxvY2F0ZUFuZEVtaXRT
Y29wZSgpOwotCiAgICAgbV9jYWxsZWVSZWdpc3Rlci5zZXRJbmRleChDYWxsRnJhbWVTbG90Ojpj
YWxsZWUpOwogCiAgICAgaW5pdGlhbGl6ZVBhcmFtZXRlcnMocGFyYW1ldGVycyk7CiAgICAgQVNT
RVJUKCEoaXNTaW1wbGVQYXJhbWV0ZXJMaXN0ICYmIG1fcmVzdFBhcmFtZXRlcikpOwogCi0gICAg
Ly8gQmVmb3JlIGVtaXR0aW5nIGEgc2NvcGUgY3JlYXRpb24sIGVtaXQgYSBnZW5lcmF0b3IgcHJv
bG9ndWUgdGhhdCBjb250YWlucyBqdW1wIGJhc2VkIG9uIGEgZ2VuZXJhdG9yJ3Mgc3RhdGUuCisg
ICAgZW1pdEVudGVyKCk7CisKKyAgICAvLyBCZWZvcmUgZW1pdHRpbmcgYW55IG9mIHRoZSBhY3R1
YWwgY29kZSBleGNlcHQgZm9yIG9wX2VudGVyLCBlbWl0IGEgZ2VuZXJhdG9yIHByb2xvZ3VlIHRo
YXQgY29udGFpbnMganVtcCBiYXNlZCBvbiBhIGdlbmVyYXRvcidzIHN0YXRlLgogICAgIGlmIChw
YXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JCb2R5TW9kZSkgewogICAgICAg
ICBtX2dlbmVyYXRvclJlZ2lzdGVyID0gJm1fcGFyYW1ldGVyc1sxXTsKIApAQCAtMzI1LDYgKzMz
Miw4IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0
aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtlCiAgICAgICAgIGVtaXRHZW5lcmF0b3JTdGF0
ZUxhYmVsKCk7CiAgICAgfQogCisgICAgYWxsb2NhdGVBbmRFbWl0U2NvcGUoKTsKKwogICAgIGlm
IChmdW5jdGlvbk5hbWVJc0luU2NvcGUoZnVuY3Rpb25Ob2RlLT5pZGVudCgpLCBmdW5jdGlvbk5v
ZGUtPmZ1bmN0aW9uTW9kZSgpKSkgewogICAgICAgICBBU1NFUlQocGFyc2VNb2RlICE9IFNvdXJj
ZVBhcnNlTW9kZTo6R2VuZXJhdG9yQm9keU1vZGUpOwogICAgICAgICBib29sIGlzRHluYW1pY1Nj
b3BlID0gZnVuY3Rpb25OYW1lU2NvcGVJc0R5bmFtaWMoY29kZUJsb2NrLT51c2VzRXZhbCgpLCBj
b2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKTsKQEAgLTYzMSw2ICs2NDAsMTYgQEAgQnl0ZWNvZGVH
ZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25Ob2RlKiBmdW5jdGlv
bk5vZGUsIFVubGlua2UKICAgICAgICAgICAgIGVtaXRMb2FkTmV3VGFyZ2V0RnJvbUFycm93RnVu
Y3Rpb25MZXhpY2FsRW52aXJvbm1lbnQoKTsKICAgICB9CiAgICAgCisgICAgLy8gU2V0IHVwIHRo
ZSBsZXhpY2FsIGVudmlyb25tZW50IHNjb3BlIGFzIHRoZSBnZW5lcmF0b3IgZnJhbWUuIFdlIHN0
b3JlIHRoZSBzYXZlZCBhbmQgcmVzdW1lZCBnZW5lcmF0b3IgcmVnaXN0ZXJzIGludG8gdGhpcyBz
Y29wZSB3aXRoIHRoZSBzeW1ib2wga2V5cy4KKyAgICAvLyBTaW5jZSB0aGV5IGFyZSBzeW1ib2wg
a2V5ZWQsIHRoZXNlIHZhcmlhYmxlcyBjYW5ub3QgYmUgcmVhY2hlZCBmcm9tIHRoZSB1c3VhbCBj
b2RlLgorICAgIGlmIChTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckJvZHlNb2RlID09IHBhcnNl
TW9kZSkgeworICAgICAgICBBU1NFUlQobV9sZXhpY2FsRW52aXJvbm1lbnRSZWdpc3Rlcik7Cisg
ICAgICAgIG1fZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZS5zZXQoKm1fdm0sIGZ1bmN0aW9uU3lt
Ym9sVGFibGUpOworICAgICAgICBtX2dlbmVyYXRvckZyYW1lU3ltYm9sVGFibGVJbmRleCA9IHN5
bWJvbFRhYmxlQ29uc3RhbnRJbmRleDsKKyAgICAgICAgZW1pdE1vdmUoZ2VuZXJhdG9yRnJhbWVS
ZWdpc3RlcigpLCBtX2xleGljYWxFbnZpcm9ubWVudFJlZ2lzdGVyKTsKKyAgICAgICAgZW1pdFB1
dEJ5SWQoZ2VuZXJhdG9yUmVnaXN0ZXIoKSwgcHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygp
LmdlbmVyYXRvckZyYW1lUHJpdmF0ZU5hbWUoKSwgZ2VuZXJhdG9yRnJhbWVSZWdpc3RlcigpKTsK
KyAgICB9CisKICAgICBib29sIHNob3VsZEluaXRpYWxpemVCbG9ja1Njb3BlZEZ1bmN0aW9ucyA9
IGZhbHNlOyAvLyBXZSBnZW5lcmF0ZSB0b3AtbGV2ZWwgZnVuY3Rpb24gZGVjbGFyYXRpb25zIGlu
IDo6Z2VuZXJhdGUoKS4KICAgICBwdXNoTGV4aWNhbFNjb3BlKG1fc2NvcGVOb2RlLCBURFpDaGVj
a09wdGltaXphdGlvbjo6T3B0aW1pemUsIE5lc3RlZFNjb3BlVHlwZTo6SXNOb3ROZXN0ZWQsIG51
bGxwdHIsIHNob3VsZEluaXRpYWxpemVCbG9ja1Njb3BlZEZ1bmN0aW9ucyk7CiB9CkBAIC0zNjYy
LDggKzM2ODEsNyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q29tcGxleFBvcFNjb3Bl
cyhSZWdpc3RlcklEKiBzY29wZSwgQ29udHJvbEZsb3dDb250ZQogICAgICAgICAgICAgaWYgKGZs
aXBUcmllcykgewogICAgICAgICAgICAgICAgIHdoaWxlIChtX3RyeUNvbnRleHRTdGFjay5zaXpl
KCkgIT0gZmluYWxseUNvbnRleHQudHJ5Q29udGV4dFN0YWNrU2l6ZSkgewogICAgICAgICAgICAg
ICAgICAgICBBU1NFUlQobV90cnlDb250ZXh0U3RhY2suc2l6ZSgpID4gZmluYWxseUNvbnRleHQu
dHJ5Q29udGV4dFN0YWNrU2l6ZSk7Ci0gICAgICAgICAgICAgICAgICAgIFRyeUNvbnRleHQgY29u
dGV4dCA9IG1fdHJ5Q29udGV4dFN0YWNrLmxhc3QoKTsKLSAgICAgICAgICAgICAgICAgICAgbV90
cnlDb250ZXh0U3RhY2sucmVtb3ZlTGFzdCgpOworICAgICAgICAgICAgICAgICAgICBUcnlDb250
ZXh0IGNvbnRleHQgPSBtX3RyeUNvbnRleHRTdGFjay50YWtlTGFzdCgpOwogICAgICAgICAgICAg
ICAgICAgICBUcnlSYW5nZSByYW5nZTsKICAgICAgICAgICAgICAgICAgICAgcmFuZ2Uuc3RhcnQg
PSBjb250ZXh0LnN0YXJ0OwogICAgICAgICAgICAgICAgICAgICByYW5nZS5lbmQgPSBiZWZvcmVG
aW5hbGx5OwpAQCAtMzk0Nyw3ICszOTY1LDcgQEAgc3RhdGljIHZvaWQgcHJlcGFyZUp1bXBUYWJs
ZUZvclN0cmluZ1N3aXRjaChVbmxpbmtlZFN0cmluZ0p1bXBUYWJsZSYganVtcFRhYmxlLAogICAg
ICAgICAKICAgICAgICAgQVNTRVJUKG5vZGVzW2ldLT5pc1N0cmluZygpKTsKICAgICAgICAgU3Ry
aW5nSW1wbCogY2xhdXNlID0gc3RhdGljX2Nhc3Q8U3RyaW5nTm9kZSo+KG5vZGVzW2ldKS0+dmFs
dWUoKS5pbXBsKCk7Ci0gICAgICAgIGp1bXBUYWJsZS5vZmZzZXRUYWJsZS5hZGQoY2xhdXNlLCBs
YWJlbHNbaV0tPmJpbmQoc3dpdGNoQWRkcmVzcywgc3dpdGNoQWRkcmVzcyArIDMpKTsKKyAgICAg
ICAganVtcFRhYmxlLm9mZnNldFRhYmxlLmFkZChjbGF1c2UsIFVubGlua2VkU3RyaW5nSnVtcFRh
YmxlOjpPZmZzZXRMb2NhdGlvbiB7IGxhYmVsc1tpXS0+YmluZChzd2l0Y2hBZGRyZXNzLCBzd2l0
Y2hBZGRyZXNzICsgMykgfSk7CiAgICAgfQogfQogCkBAIC00NDU1LDE2ICs0NDczLDM2IEBAIHZv
aWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRZaWVsZFBvaW50KFJlZ2lzdGVySUQqIGFyZ3VtZW50
KQogICAgIGVtaXRHZW5lcmF0b3JTdGF0ZUNoYW5nZSh5aWVsZFBvaW50SW5kZXgpOwogICAgIC8v
IEZpcnN0IHlpZWxkIHBvaW50IGlzIHVzZWQgZm9yIGluaXRpYWwgc2VxdWVuY2UuCiAgICAgdW5z
aWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0geWllbGRQb2ludEluZGV4IC0gMTsKKworICAg
IC8vIFNwbGl0IHRoZSB0cnkgcmFuZ2UgaGVyZS4KKyAgICBSZWZQdHI8TGFiZWw+IHNhdmVQb2lu
dCA9IGVtaXRMYWJlbChuZXdMYWJlbCgpLmdldCgpKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSBt
X3RyeUNvbnRleHRTdGFjay5zaXplKCk7IGktLTspIHsKKyAgICAgICAgVHJ5Q29udGV4dCYgY29u
dGV4dCA9IG1fdHJ5Q29udGV4dFN0YWNrW2ldOworICAgICAgICBUcnlSYW5nZSByYW5nZTsKKyAg
ICAgICAgcmFuZ2Uuc3RhcnQgPSBjb250ZXh0LnN0YXJ0OworICAgICAgICByYW5nZS5lbmQgPSBz
YXZlUG9pbnQ7CisgICAgICAgIHJhbmdlLnRyeURhdGEgPSBjb250ZXh0LnRyeURhdGE7CisgICAg
ICAgIG1fdHJ5UmFuZ2VzLmFwcGVuZChyYW5nZSk7CisKKyAgICAgICAgLy8gVHJ5IHJhbmdlIHdp
bGwgYmUgcmVzdGFyZWQgYXQgdGhlIG1lcmdlIHBvaW50LgorICAgICAgICBjb250ZXh0LnN0YXJ0
ID0gbWVyZ2VQb2ludDsKKyAgICB9CisgICAgVmVjdG9yPFRyeUNvbnRleHQ+IHNhdmVkVHJ5Q29u
dGV4dFN0YWNrOworICAgIG1fdHJ5Q29udGV4dFN0YWNrLnN3YXAoc2F2ZWRUcnlDb250ZXh0U3Rh
Y2spOworCiAgICAgZW1pdFNhdmUobWVyZ2VQb2ludC5nZXQoKSwgbGl2ZUNhbGxlZUxvY2Fsc0lu
ZGV4KTsKICAgICBlbWl0UmV0dXJuKGFyZ3VtZW50KTsKICAgICBlbWl0UmVzdW1lKG1lcmdlUG9p
bnQuZ2V0KCksIGxpdmVDYWxsZWVMb2NhbHNJbmRleCk7CisKKyAgICAvLyBSZXN0b3JlIHRoZSB0
cnkgY29udGV4dHMsIHdoaWNoIHN0YXJ0IG9mZnNldCBpcyB1cGRhdGVkIHRvIHRoZSBtZXJnZSBw
b2ludC4KKyAgICBtX3RyeUNvbnRleHRTdGFjay5zd2FwKHNhdmVkVHJ5Q29udGV4dFN0YWNrKTsK
IH0KIAogdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFNhdmUoTGFiZWwqIG1lcmdlUG9pbnQs
IHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCkKIHsKICAgICBzaXplX3QgYmVnaW4gPSBp
bnN0cnVjdGlvbnMoKS5zaXplKCk7CiAgICAgZW1pdE9wY29kZShvcF9zYXZlKTsKLSAgICBpbnN0
cnVjdGlvbnMoKS5hcHBlbmQobV9nZW5lcmF0b3JSZWdpc3Rlci0+aW5kZXgoKSk7CisgICAgaW5z
dHJ1Y3Rpb25zKCkuYXBwZW5kKGdlbmVyYXRvckZyYW1lUmVnaXN0ZXIoKS0+aW5kZXgoKSk7CiAg
ICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGxpdmVDYWxsZWVMb2NhbHNJbmRleCk7CiAgICAgaW5z
dHJ1Y3Rpb25zKCkuYXBwZW5kKG1lcmdlUG9pbnQtPmJpbmQoYmVnaW4sIGluc3RydWN0aW9ucygp
LnNpemUoKSkpOwogfQpAQCAtNDQ3Myw3ICs0NTExLDcgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRv
cjo6ZW1pdFJlc3VtZShMYWJlbCogbWVyZ2VQb2ludCwgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fs
c0kKIHsKICAgICBlbWl0R2VuZXJhdG9yU3RhdGVMYWJlbCgpOwogICAgIGVtaXRPcGNvZGUob3Bf
cmVzdW1lKTsKLSAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobV9nZW5lcmF0b3JSZWdpc3Rlci0+
aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGdlbmVyYXRvckZyYW1lUmVnaXN0
ZXIoKS0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGxpdmVDYWxsZWVMb2Nh
bHNJbmRleCk7CiAgICAgZW1pdExhYmVsKG1lcmdlUG9pbnQpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmluZGV4
IDVmYWYwNGYyZjNkYmExOGFkYjA3ODllMzIzZTlkYWFlNjFhYjExNmIuLmVjMmEwZTZiMDY2Y2Fh
ZGFjZjJiN2IwN2ZhYWY2NTViZmM0NTFiMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTcwNSw2ICs3MDUs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9yU3RhdGVS
ZWdpc3RlcigpIHsgcmV0dXJuICZtX3BhcmFtZXRlcnNbMl07IH0KICAgICAgICAgUmVnaXN0ZXJJ
RCogZ2VuZXJhdG9yVmFsdWVSZWdpc3RlcigpIHsgcmV0dXJuICZtX3BhcmFtZXRlcnNbM107IH0K
ICAgICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKCkgeyByZXR1
cm4gJm1fcGFyYW1ldGVyc1s0XTsgfQorICAgICAgICBSZWdpc3RlcklEKiBnZW5lcmF0b3JGcmFt
ZVJlZ2lzdGVyKCkgeyByZXR1cm4gJm1fcGFyYW1ldGVyc1s1XTsgfQogCiAgICAgICAgIENvZGVU
eXBlIGNvZGVUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlVHlwZTsgfQogCkBAIC05MzIsNiAr
OTMzLDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBWZWN0b3I8UmVmUHRyPEZvckluQ29u
dGV4dD4+IG1fZm9ySW5Db250ZXh0U3RhY2s7CiAgICAgICAgIFZlY3RvcjxUcnlDb250ZXh0PiBt
X3RyeUNvbnRleHRTdGFjazsKICAgICAgICAgVmVjdG9yPFJlZlB0cjxMYWJlbD4+IG1fZ2VuZXJh
dG9yUmVzdW1lTGFiZWxzOworCisgICAgICAgIFN0cm9uZzxTeW1ib2xUYWJsZT4gbV9nZW5lcmF0
b3JGcmFtZVN5bWJvbFRhYmxlOworICAgICAgICBpbnQgbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRh
YmxlSW5kZXggeyAwIH07CisKICAgICAgICAgZW51bSBGdW5jdGlvblZhcmlhYmxlVHlwZSA6IHVp
bnQ4X3QgeyBOb3JtYWxGdW5jdGlvblZhcmlhYmxlLCBHbG9iYWxGdW5jdGlvblZhcmlhYmxlIH07
CiAgICAgICAgIFZlY3RvcjxzdGQ6OnBhaXI8RnVuY3Rpb25NZXRhZGF0YU5vZGUqLCBGdW5jdGlv
blZhcmlhYmxlVHlwZT4+IG1fZnVuY3Rpb25zVG9Jbml0aWFsaXplOwogICAgICAgICBib29sIG1f
bmVlZFRvSW5pdGlhbGl6ZUFyZ3VtZW50cyB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAppbmRleCA2OWExNmViNWRhNDM1NWJjNzkyNWM1ZGZk
Y2IwNjIwMjNlOTk2NTAyLi5jNDU3MjNiMTkwMTMyMDI1ZGZjZTMyNmY2MDE1ZWNhNmNlNThkNzFh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKQEAgLTQy
LDggKzQyLDggQEAKICNpbmNsdWRlICJEaXJlY3RBcmd1bWVudHMuaCIKICNpbmNsdWRlICJGVExG
b3JPU1JFbnRyeUpJVENvZGUuaCIKICNpbmNsdWRlICJGVExPU1JFbnRyeS5oIgotI2luY2x1ZGUg
Ikhvc3RDYWxsUmV0dXJuVmFsdWUuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKKyNpbmNs
dWRlICJIb3N0Q2FsbFJldHVyblZhbHVlLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNp
bmNsdWRlICJKSVQuaCIKICNpbmNsdWRlICJKSVRFeGNlcHRpb25zLmgiCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdGUtYnl0ZWNvZGUtZmlsZXMgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZ2VuZXJhdGUtYnl0ZWNvZGUtZmlsZXMKaW5kZXggNTY2NmEzZjkyNGMxMTli
MjE2ZDNmZjBmZmU5YzY3MmI3YzcxYmI3OS4uZmFjZmRmMTMzMTQ4NzA3YTMzMzUzNTc2MmJlNzgz
MDRjNGI1MGIxZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRlLWJ5
dGVjb2RlLWZpbGVzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0ZS1ieXRlY29k
ZS1maWxlcwpAQCAtMTg3LDYgKzE4Nyw3IEBAIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAg
ICAgICAgICAgICAgICAgZGVmYXVsdExlbmd0aCA9IHNlY3Rpb25bImRlZmF1bHRMZW5ndGgiXQog
CiAgICAgICAgICAgICBieXRlY29kZU51bSA9IDAKKyAgICAgICAgICAgIG1heExlbmd0aCA9IDAK
ICAgICAgICAgICAgIGZvciBieXRlY29kZSBpbiBzZWN0aW9uWyJieXRlY29kZXMiXToKICAgICAg
ICAgICAgICAgICBpZiBub3QgZmlyc3RNYWNybzoKICAgICAgICAgICAgICAgICAgICAgYnl0ZWNv
ZGVIRmlsZS53cml0ZSgiIFxcXG4iKQpAQCAtMTk0LDYgKzE5NSw3IEBAIGlmIF9fbmFtZV9fID09
ICJfX21haW5fXyI6CiAgICAgICAgICAgICAgICAgbGVuZ3RoID0gZGVmYXVsdExlbmd0aAogICAg
ICAgICAgICAgICAgIGlmICJsZW5ndGgiIGluIGJ5dGVjb2RlOgogICAgICAgICAgICAgICAgICAg
ICBsZW5ndGggPSBieXRlY29kZVsibGVuZ3RoIl0KKyAgICAgICAgICAgICAgICAgICAgbWF4TGVu
Z3RoID0gbWF4KFtsZW5ndGgsIG1heExlbmd0aF0pCiAKICAgICAgICAgICAgICAgICBieXRlY29k
ZUhGaWxlLndyaXRlKCIgICAgbWFjcm8oezB9LCB7MX0pIi5mb3JtYXQoYnl0ZWNvZGVbIm5hbWUi
XSwgbGVuZ3RoKSkKICAgICAgICAgICAgICAgICBmaXJzdE1hY3JvID0gRmFsc2UKQEAgLTIwMSw2
ICsyMDMsNyBAQCBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogCiAgICAgICAgICAgICBieXRl
Y29kZUhGaWxlLndyaXRlKCJcblxuIikKICAgICAgICAgICAgIGJ5dGVjb2RlSEZpbGUud3JpdGUo
IiNkZWZpbmUgTlVNQkVSX09GX3swfV9JRFMgezF9XG5cbiIuZm9ybWF0KHNlY3Rpb25bIm1hY3Jv
TmFtZUNvbXBvbmVudCJdLCBieXRlY29kZU51bSkpCisgICAgICAgICAgICBieXRlY29kZUhGaWxl
LndyaXRlKCIjZGVmaW5lIE1BWF9PUENPREVfTEVOR1RIX09GX3swfSB7MX1cblxuIi5mb3JtYXQo
c2VjdGlvblsibWFjcm9OYW1lQ29tcG9uZW50Il0sIG1heExlbmd0aCkpCiAKICAgICAgICAgaWYg
aW5pdEFTTUZpbGVOYW1lIGFuZCBzZWN0aW9uWydlbWl0SW5BU01GaWxlJ106CiAgICAgICAgICAg
ICBwcmVmaXggPSAiIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL0ludGVycHJldGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9J
bnRlcnByZXRlci5jcHAKaW5kZXggMmI0YzdjOWIzZWIzNmQ2MzA2ZWE4NDRlODUzNzZmZmE3ZmQw
ZjFmNy4uZmUzNjhmMzkxY2MyN2MxYTA1YjhiZDkwZmY5MWFjMTYyMWI2MjQ3MCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCkBAIC02
MDgsNyArNjA4LDcgQEAgSlNTdHJpbmcqIEludGVycHJldGVyOjpzdGFja1RyYWNlQXNTdHJpbmco
Vk0mIHZtLCBjb25zdCBWZWN0b3I8U3RhY2tGcmFtZT4mIHN0YWMKICAgICByZXR1cm4ganNTdHJp
bmcoJnZtLCBidWlsZGVyLnRvU3RyaW5nKCkpOwogfQogCi1BTFdBWVNfSU5MSU5FIHN0YXRpYyBI
YW5kbGVySW5mbyogZmluZEV4Y2VwdGlvbkhhbmRsZXIoU3RhY2tWaXNpdG9yJiB2aXNpdG9yLCBD
b2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZUJsb2NrOjpSZXF1aXJlZEhhbmRsZXIgcmVxdWlyZWRI
YW5kbGVyKQorQUxXQVlTX0lOTElORSBzdGF0aWMgSGFuZGxlckluZm8qIGZpbmRFeGNlcHRpb25I
YW5kbGVyKFN0YWNrVmlzaXRvciYgdmlzaXRvciwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFJlcXVp
cmVkSGFuZGxlciByZXF1aXJlZEhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKGNvZGVCbG9jayk7CiAj
aWYgRU5BQkxFKERGR19KSVQpCkBAIC02NDIsNyArNjQyLDcgQEAgY2xhc3MgR2V0Q2F0Y2hIYW5k
bGVyRnVuY3RvciB7CiAgICAgICAgIGlmICghY29kZUJsb2NrKQogICAgICAgICAgICAgcmV0dXJu
IFN0YWNrVmlzaXRvcjo6Q29udGludWU7CiAKLSAgICAgICAgbV9oYW5kbGVyID0gZmluZEV4Y2Vw
dGlvbkhhbmRsZXIodmlzaXRvciwgY29kZUJsb2NrLCBDb2RlQmxvY2s6OlJlcXVpcmVkSGFuZGxl
cjo6Q2F0Y2hIYW5kbGVyKTsKKyAgICAgICAgbV9oYW5kbGVyID0gZmluZEV4Y2VwdGlvbkhhbmRs
ZXIodmlzaXRvciwgY29kZUJsb2NrLCBSZXF1aXJlZEhhbmRsZXI6OkNhdGNoSGFuZGxlcik7CiAg
ICAgICAgIGlmIChtX2hhbmRsZXIpCiAgICAgICAgICAgICByZXR1cm4gU3RhY2tWaXNpdG9yOjpE
b25lOwogCkBAIC02ODQsNyArNjg0LDcgQEAgY2xhc3MgVW53aW5kRnVuY3RvciB7CiAgICAgICAg
IG1faGFuZGxlciA9IG51bGxwdHI7CiAgICAgICAgIGlmICghbV9pc1Rlcm1pbmF0aW9uKSB7CiAg
ICAgICAgICAgICBpZiAobV9jb2RlQmxvY2sgJiYgIWlzV2ViQXNzZW1ibHlFeGVjdXRhYmxlKG1f
Y29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSkpCi0gICAgICAgICAgICAgICAgbV9oYW5kbGVy
ID0gZmluZEV4Y2VwdGlvbkhhbmRsZXIodmlzaXRvciwgbV9jb2RlQmxvY2ssIENvZGVCbG9jazo6
UmVxdWlyZWRIYW5kbGVyOjpBbnlIYW5kbGVyKTsKKyAgICAgICAgICAgICAgICBtX2hhbmRsZXIg
PSBmaW5kRXhjZXB0aW9uSGFuZGxlcih2aXNpdG9yLCBtX2NvZGVCbG9jaywgUmVxdWlyZWRIYW5k
bGVyOjpBbnlIYW5kbGVyKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChtX2hhbmRsZXIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCmluZGV4
IGQyMDk0ZGVlN2QyODVhYzQ5NWIxNTQxNzJhMjNiOTRmZmU4NTdmMWUuLjA3MzJiM2ViYmQ5YWRm
ZDIyMzM2MmVjOWE2YmFhYWZkODYxZjUyNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCkBAIC02Niw2ICs2Niw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgIHN0cnVjdCBIYW5kbGVySW5mbzsKICAgICBzdHJ1Y3QgSW5zdHJ1Y3Rpb247CiAg
ICAgc3RydWN0IFByb3RvQ2FsbEZyYW1lOworICAgIHN0cnVjdCBVbmxpbmtlZEluc3RydWN0aW9u
OwogCiAgICAgZW51bSBVbndpbmRTdGFydCB7IFVud2luZEZyb21DdXJyZW50RnJhbWUsIFVud2lu
ZEZyb21DYWxsZXJGcmFtZSB9OwogCkBAIC0yMDgsNyArMjA5LDEwIEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICAgICAgcmV0dXJuIG9wY29kZTsKICNlbmRpZgogICAgICAgICB9Ci0gICAgICAg
IAorCisgICAgICAgIE9wY29kZUlEIGdldE9wY29kZUlEKGNvbnN0IEluc3RydWN0aW9uJik7Cisg
ICAgICAgIE9wY29kZUlEIGdldE9wY29kZUlEKGNvbnN0IFVubGlua2VkSW5zdHJ1Y3Rpb24mKTsK
KwogICAgICAgICBib29sIGlzT3Bjb2RlKE9wY29kZSk7CiAKICAgICAgICAgSlNWYWx1ZSBleGVj
dXRlKFByb2dyYW1FeGVjdXRhYmxlKiwgQ2FsbEZyYW1lKiwgSlNPYmplY3QqIHRoaXNPYmopOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVy
SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVy
SW5saW5lcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg2ZDA3MTQ4YTUyZTY1ZTM3NWY5N2U2ZWJiOTFhZGJlMWRk
NDU2MGQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvSW50ZXJwcmV0ZXJJbmxpbmVzLmgKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNiBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5j
bHVkZSAiSW5zdHJ1Y3Rpb24uaCIKKyNpbmNsdWRlICJJbnRlcnByZXRlci5oIgorI2luY2x1ZGUg
IlVubGlua2VkQ29kZUJsb2NrLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitpbmxpbmUgT3Bjb2Rl
SUQgSW50ZXJwcmV0ZXI6OmdldE9wY29kZUlEKGNvbnN0IEluc3RydWN0aW9uJiBpbnN0cnVjdGlv
bikKK3sKKyAgICByZXR1cm4gZ2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb24udS5vcGNvZGUpOworfQor
CitpbmxpbmUgT3Bjb2RlSUQgSW50ZXJwcmV0ZXI6OmdldE9wY29kZUlEKGNvbnN0IFVubGlua2Vk
SW5zdHJ1Y3Rpb24mIGluc3RydWN0aW9uKQoreworICAgIHJldHVybiBpbnN0cnVjdGlvbi51Lm9w
Y29kZTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAK
aW5kZXggOGZkM2Y1OGVkNDE2YTc3NGJiMjc2NWU0ZDRkNTNkNjhiZTkxODJlNS4uNjMxOGM2MWQz
N2E4ZGExMjNlYzZmMzhhMjhlMTk1NWM4NTgzMTAzMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
LmNwcApAQCAtMjM1LDggKzIzNSw2IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNz
KCkKICAgICAgICAgREVGSU5FX09QKG9wX2dldF9yZXN0X2xlbmd0aCkKICAgICAgICAgREVGSU5F
X09QKG9wX2NoZWNrX3RkeikKICAgICAgICAgREVGSU5FX09QKG9wX2Fzc2VydCkKLSAgICAgICAg
REVGSU5FX09QKG9wX3NhdmUpCi0gICAgICAgIERFRklORV9PUChvcF9yZXN1bWUpCiAgICAgICAg
IERFRklORV9PUChvcF9kZWJ1ZykKICAgICAgICAgREVGSU5FX09QKG9wX2RlbF9ieV9pZCkKICAg
ICAgICAgREVGSU5FX09QKG9wX2RlbF9ieV92YWwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAppbmRl
eCAwOTNkN2RhYmQzMDNmNTdjNGFkYmJlNTBhZDliMmU0MGY2ZmFkNjA4Li5iM2JkYTRhYTU3MDEw
MzY4MTJjYzY5NmNiYjE1NWRjNGEzYzQ5MmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKQEAg
LTUwMSw4ICs1MDEsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0X29wX2dl
dF9yZXN0X2xlbmd0aChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfY2hlY2tf
dGR6KEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9hc3NlcnQoSW5zdHJ1Y3Rp
b24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX3NhdmUoSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAg
dm9pZCBlbWl0X29wX3Jlc3VtZShJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3Bf
ZGVidWcoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2RlbF9ieV9pZChJbnN0
cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZGVsX2J5X3ZhbChJbnN0cnVjdGlvbiop
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKaW5kZXggZDk5ZDQxNWEz
M2I3NTJkY2MzZmFiMTViOTRiOTY0YTExMTFjZTgzMS4uMDEyMzIwYTBhNmYwMzA3MzczNTMwMzE1
YjRiMTg5ZWE2YWFmM2ZkNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGNvZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMu
Y3BwCkBAIC0xNDg5LDE4ICsxNDg5LDYgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X3Jlc3RfbGVu
Z3RoKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAjZW5kaWYKIH0KIAotdm9pZCBK
SVQ6OmVtaXRfb3Bfc2F2ZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQotewotICAg
IEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBz
bG93X3BhdGhfc2F2ZSk7Ci0gICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKLX0KLQotdm9pZCBKSVQ6
OmVtaXRfb3BfcmVzdW1lKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCi17Ci0gICAg
SklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNs
b3dfcGF0aF9yZXN1bWUpOwotICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7Ci19Ci0KIH0gLy8gbmFt
ZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbSBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQppbmRleCAzZTBkYmQ4OTg2
YjlkYjFhYjBhMjM1YTM5MDg0YzEwYWVmNDU2NTE2Li4wNGJjYjdjMDBlNDhjMGQyMzkzN2RkMzE0
MDkzYTEyNzk3ZTQ4NjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlci5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCkBAIC0xNjU3LDE1ICsxNjU3LDExIEBAIF9sbGludF9v
cF9hc3NlcnQ6CiAKIAogX2xsaW50X29wX3NhdmU6Ci0gICAgdHJhY2VFeGVjdXRpb24oKQotICAg
IGNhbGxPcGNvZGVTbG93UGF0aChfc2xvd19wYXRoX3NhdmUpCi0gICAgZGlzcGF0Y2goNCkKKyAg
ICBub3RTdXBwb3J0ZWQoKQogCiAKIF9sbGludF9vcF9yZXN1bWU6Ci0gICAgdHJhY2VFeGVjdXRp
b24oKQotICAgIGNhbGxPcGNvZGVTbG93UGF0aChfc2xvd19wYXRoX3Jlc3VtZSkKLSAgICBkaXNw
YXRjaCgzKQorICAgIG5vdFN1cHBvcnRlZCgpCiAKIAogX2xsaW50X29wX2NyZWF0ZV9sZXhpY2Fs
X2Vudmlyb25tZW50OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Q
YXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCmluZGV4
IGZlNTQ5NTJiMzg1NjMyYTEzMDBkYmE0YWRmZmEwMGFhNWEzN2QyMDEuLmZlOTYxNmIwMzY1YzMz
YTg4NWU1MDhlODRkYmQwY2ExMGI4YjBmNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1BhcnNlci5jcHAKQEAgLTI1Niw3ICsyNTYsNyBAQCBTdHJpbmcgUGFyc2VyPExleGVyVHlwZT46
OnBhcnNlSW5uZXIoY29uc3QgSWRlbnRpZmllciYgY2FsbGVlTmFtZSwgU291cmNlUGFyc2VNbwog
ICAgIGlmIChtX2xleGVyLT5pc1JlcGFyc2luZ0Z1bmN0aW9uKCkpIHsKICAgICAgICAgUGFyc2Vy
RnVuY3Rpb25JbmZvPEFTVEJ1aWxkZXI+IGZ1bmN0aW9uSW5mbzsKICAgICAgICAgaWYgKHBhcnNl
TW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckJvZHlNb2RlKQotICAgICAgICAgICAg
bV9wYXJhbWV0ZXJzID0gY3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhjb250ZXh0KTsKKyAgICAg
ICAgICAgIG1fcGFyYW1ldGVycyA9IGNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMoY29udGV4dCwg
ZnVuY3Rpb25JbmZvLnBhcmFtZXRlckNvdW50KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAg
bV9wYXJhbWV0ZXJzID0gcGFyc2VGdW5jdGlvblBhcmFtZXRlcnMoY29udGV4dCwgcGFyc2VNb2Rl
LCBmdW5jdGlvbkluZm8pOwogCkBAIC01MDcsMTAgKzUwNyw5IEBAIHRlbXBsYXRlIDxjbGFzcyBU
cmVlQnVpbGRlcj4gVHJlZVNvdXJjZUVsZW1lbnRzIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUdl
bmVyYXRvCiAKICAgICBQYXJzZXJGdW5jdGlvbkluZm88VHJlZUJ1aWxkZXI+IGluZm87CiAgICAg
aW5mby5uYW1lID0gJm1fdm0tPnByb3BlcnR5TmFtZXMtPm51bGxJZGVudGlmaWVyOwotICAgIGNy
ZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMoY29udGV4dCk7CisgICAgY3JlYXRlR2VuZXJhdG9yUGFy
YW1ldGVycyhjb250ZXh0LCBpbmZvLnBhcmFtZXRlckNvdW50KTsKICAgICBpbmZvLnN0YXJ0T2Zm
c2V0ID0gcGFyYW1ldGVyc1N0YXJ0OwogICAgIGluZm8uc3RhcnRMaW5lID0gdG9rZW5MaW5lKCk7
Ci0gICAgaW5mby5wYXJhbWV0ZXJDb3VudCA9IDQ7IC8vIGdlbmVyYXRvciwgc3RhdGUsIHZhbHVl
LCByZXN1bWUgbW9kZQogCiAgICAgewogICAgICAgICBBdXRvUG9wU2NvcGVSZWYgZ2VuZXJhdG9y
Qm9keVNjb3BlKHRoaXMsIHB1c2hTY29wZSgpKTsKQEAgLTE5MDEsMzIgKzE5MDAsMzAgQEAgdGVt
cGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4gdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyLCBj
bGFzcyBGdW5jdGlvbkluZm9UeXAKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4K
LXRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkZvcm1h
bFBhcmFtZXRlckxpc3QgUGFyc2VyPExleGVyVHlwZT46OmNyZWF0ZUdlbmVyYXRvclBhcmFtZXRl
cnMoVHJlZUJ1aWxkZXImIGNvbnRleHQpCit0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IHR5
cGVuYW1lIFRyZWVCdWlsZGVyOjpGb3JtYWxQYXJhbWV0ZXJMaXN0IFBhcnNlcjxMZXhlclR5cGU+
OjpjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKFRyZWVCdWlsZGVyJiBjb250ZXh0LCB1bnNpZ25l
ZCYgcGFyYW1ldGVyQ291bnQpCiB7CiAgICAgYXV0byBwYXJhbWV0ZXJzID0gY29udGV4dC5jcmVh
dGVGb3JtYWxQYXJhbWV0ZXJMaXN0KCk7CiAKICAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb24o
dG9rZW5Mb2NhdGlvbigpKTsKICAgICBKU1RleHRQb3NpdGlvbiBwb3NpdGlvbiA9IHRva2VuU3Rh
cnRQb3NpdGlvbigpOwogCi0gICAgLy8gQGdlbmVyYXRvcgotICAgIGRlY2xhcmVQYXJhbWV0ZXIo
Jm1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclByaXZhdGVOYW1l
KCkpOwotICAgIGF1dG8gZ2VuZXJhdG9yID0gY29udGV4dC5jcmVhdGVCaW5kaW5nTG9jYXRpb24o
bG9jYXRpb24sIG1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclBy
aXZhdGVOYW1lKCksIHBvc2l0aW9uLCBwb3NpdGlvbiwgQXNzaWdubWVudENvbnRleHQ6OkRlY2xh
cmF0aW9uU3RhdGVtZW50KTsKLSAgICBjb250ZXh0LmFwcGVuZFBhcmFtZXRlcihwYXJhbWV0ZXJz
LCBnZW5lcmF0b3IsIDApOworICAgIGF1dG8gYWRkUGFyYW1ldGVyID0gWyZdKGNvbnN0IElkZW50
aWZpZXImIG5hbWUpIHsKKyAgICAgICAgZGVjbGFyZVBhcmFtZXRlcigmbmFtZSk7CisgICAgICAg
IGF1dG8gYmluZGluZyA9IGNvbnRleHQuY3JlYXRlQmluZGluZ0xvY2F0aW9uKGxvY2F0aW9uLCBu
YW1lLCBwb3NpdGlvbiwgcG9zaXRpb24sIEFzc2lnbm1lbnRDb250ZXh0OjpEZWNsYXJhdGlvblN0
YXRlbWVudCk7CisgICAgICAgIGNvbnRleHQuYXBwZW5kUGFyYW1ldGVyKHBhcmFtZXRlcnMsIGJp
bmRpbmcsIDApOworICAgICAgICArK3BhcmFtZXRlckNvdW50OworICAgIH07CiAKKyAgICAvLyBA
Z2VuZXJhdG9yCisgICAgYWRkUGFyYW1ldGVyKG1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5O
YW1lcygpLmdlbmVyYXRvclByaXZhdGVOYW1lKCkpOwogICAgIC8vIEBnZW5lcmF0b3JTdGF0ZQot
ICAgIGRlY2xhcmVQYXJhbWV0ZXIoJm1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygp
LmdlbmVyYXRvclN0YXRlUHJpdmF0ZU5hbWUoKSk7Ci0gICAgYXV0byBnZW5lcmF0b3JTdGF0ZSA9
IGNvbnRleHQuY3JlYXRlQmluZGluZ0xvY2F0aW9uKGxvY2F0aW9uLCBtX3ZtLT5wcm9wZXJ0eU5h
bWVzLT5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JTdGF0ZVByaXZhdGVOYW1lKCksIHBvc2l0aW9u
LCBwb3NpdGlvbiwgQXNzaWdubWVudENvbnRleHQ6OkRlY2xhcmF0aW9uU3RhdGVtZW50KTsKLSAg
ICBjb250ZXh0LmFwcGVuZFBhcmFtZXRlcihwYXJhbWV0ZXJzLCBnZW5lcmF0b3JTdGF0ZSwgMCk7
Ci0KKyAgICBhZGRQYXJhbWV0ZXIobV92bS0+cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCku
Z2VuZXJhdG9yU3RhdGVQcml2YXRlTmFtZSgpKTsKICAgICAvLyBAZ2VuZXJhdG9yVmFsdWUKLSAg
ICBkZWNsYXJlUGFyYW1ldGVyKCZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5n
ZW5lcmF0b3JWYWx1ZVByaXZhdGVOYW1lKCkpOwotICAgIGF1dG8gZ2VuZXJhdG9yVmFsdWUgPSBj
b250ZXh0LmNyZWF0ZUJpbmRpbmdMb2NhdGlvbihsb2NhdGlvbiwgbV92bS0+cHJvcGVydHlOYW1l
cy0+YnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yVmFsdWVQcml2YXRlTmFtZSgpLCBwb3NpdGlvbiwg
cG9zaXRpb24sIEFzc2lnbm1lbnRDb250ZXh0OjpEZWNsYXJhdGlvblN0YXRlbWVudCk7Ci0gICAg
Y29udGV4dC5hcHBlbmRQYXJhbWV0ZXIocGFyYW1ldGVycywgZ2VuZXJhdG9yVmFsdWUsIDApOwot
CisgICAgYWRkUGFyYW1ldGVyKG1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdl
bmVyYXRvclZhbHVlUHJpdmF0ZU5hbWUoKSk7CiAgICAgLy8gQGdlbmVyYXRvclJlc3VtZU1vZGUK
LSAgICBkZWNsYXJlUGFyYW1ldGVyKCZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMo
KS5nZW5lcmF0b3JSZXN1bWVNb2RlUHJpdmF0ZU5hbWUoKSk7Ci0gICAgYXV0byBnZW5lcmF0b3JS
ZXN1bWVNb2RlID0gY29udGV4dC5jcmVhdGVCaW5kaW5nTG9jYXRpb24obG9jYXRpb24sIG1fdm0t
PnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclJlc3VtZU1vZGVQcml2YXRl
TmFtZSgpLCBwb3NpdGlvbiwgcG9zaXRpb24sIEFzc2lnbm1lbnRDb250ZXh0OjpEZWNsYXJhdGlv
blN0YXRlbWVudCk7Ci0gICAgY29udGV4dC5hcHBlbmRQYXJhbWV0ZXIocGFyYW1ldGVycywgZ2Vu
ZXJhdG9yUmVzdW1lTW9kZSwgMCk7CisgICAgYWRkUGFyYW1ldGVyKG1fdm0tPnByb3BlcnR5TmFt
ZXMtPmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclJlc3VtZU1vZGVQcml2YXRlTmFtZSgpKTsKKyAg
ICAvLyBAZ2VuZXJhdG9yRnJhbWUKKyAgICBhZGRQYXJhbWV0ZXIobV92bS0+cHJvcGVydHlOYW1l
cy0+YnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yRnJhbWVQcml2YXRlTmFtZSgpKTsKIAogICAgIHJl
dHVybiBwYXJhbWV0ZXJzOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9QYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKaW5k
ZXggMjVjZWM5NWE3NjFjY2Q4YzI2MzM4MzczMGViMDRlMTU2OTcyMGJhMi4uZGVkNjI0ZjYxN2Zi
NmQyNGQwMGJmMWFjNDZjNDVjMjJkOTliNzIxZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9QYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1BhcnNlci5oCkBAIC0xNDUxLDcgKzE0NTEsNyBAQCBjbGFzcyBQYXJzZXIgewogICAgIEFMV0FZ
U19JTkxJTkUgYm9vbCBpc0Fycm93RnVuY3Rpb25QYXJhbWV0ZXJzKCk7CiAgICAgCiAgICAgdGVt
cGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyLCBjbGFzcyBGdW5jdGlvbkluZm9UeXBlPiBORVZFUl9J
TkxJTkUgdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkZvcm1hbFBhcmFtZXRlckxpc3QgcGFyc2VGdW5j
dGlvblBhcmFtZXRlcnMoVHJlZUJ1aWxkZXImLCBTb3VyY2VQYXJzZU1vZGUsIEZ1bmN0aW9uSW5m
b1R5cGUmKTsKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElORSB0
eXBlbmFtZSBUcmVlQnVpbGRlcjo6Rm9ybWFsUGFyYW1ldGVyTGlzdCBjcmVhdGVHZW5lcmF0b3JQ
YXJhbWV0ZXJzKFRyZWVCdWlsZGVyJik7CisgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVy
PiBORVZFUl9JTkxJTkUgdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkZvcm1hbFBhcmFtZXRlckxpc3Qg
Y3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhUcmVlQnVpbGRlciYsIHVuc2lnbmVkJiBwYXJhbWV0
ZXJDb3VudCk7CiAKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElO
RSBUcmVlQ2xhc3NFeHByZXNzaW9uIHBhcnNlQ2xhc3MoVHJlZUJ1aWxkZXImLCBGdW5jdGlvblJl
cXVpcmVtZW50cywgUGFyc2VyQ2xhc3NJbmZvPFRyZWVCdWlsZGVyPiYpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAppbmRleCA2NWZk
YTY4NTRjY2NlOGRjOTQxOTMwMDRhOWYwMjk1NDhmOThiYzVmLi4wNzM1YjA5MjZlYTg5OGU2MjYz
MjFmOTI0MzhiZDhiMWUxZmY1NmZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKQEAgLTM2LDcgKzM2LDYgQEAKICNpbmNsdWRlICJF
cnJvci5oIgogI2luY2x1ZGUgIkVycm9ySGFuZGxpbmdTY29wZS5oIgogI2luY2x1ZGUgIkV4Y2Vw
dGlvbkZ1enouaCIKLSNpbmNsdWRlICJHZW5lcmF0b3JGcmFtZS5oIgogI2luY2x1ZGUgIkdldHRl
clNldHRlci5oIgogI2luY2x1ZGUgIkhvc3RDYWxsUmV0dXJuVmFsdWUuaCIKICNpbmNsdWRlICJJ
bnRlcnByZXRlci5oIgpAQCAtNzIyLDM4ICs3MjEsNiBAQCBTTE9XX1BBVEhfREVDTChzbG93X3Bh
dGhfYXNzZXJ0KQogICAgIEVORCgpOwogfQogCi1TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfc2F2
ZSkKLXsKLSAgICAvLyBPbmx5IHNhdmUgdmFyaWFibGVzIGFuZCB0ZW1wb3JhcnkgcmVnaXN0ZXJz
LiBUaGUgc2NvcGUgcmVnaXN0ZXJzIGFyZSBpbmNsdWRlZCBpbiB0aGVtLgotICAgIC8vIEJ1dCBw
YXJhbWV0ZXJzIGFyZSBub3QgaW5jbHVkZWQuIEJlY2F1c2UgdGhlIGdlbmVyYXRvciBpbXBsZW1l
bnRhdGlvbiByZXBsYWNlcyB0aGUgdmFsdWVzIG9mIHBhcmFtZXRlcnMgb24gZWFjaCBnZW5lcmF0
b3IubmV4dCgpIGNhbGwuCi0gICAgQkVHSU4oKTsKLSAgICBKU1ZhbHVlIGdlbmVyYXRvciA9IE9Q
KDEpLmpzVmFsdWUoKTsKLSAgICBHZW5lcmF0b3JGcmFtZSogZnJhbWUgPSBudWxscHRyOwotICAg
IEpTVmFsdWUgdmFsdWUgPSBnZW5lcmF0b3IuZ2V0KGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMo
KS5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JGcmFtZVByaXZhdGVOYW1lKCkpOwotICAgIGlmICgh
dmFsdWUuaXNOdWxsKCkpCi0gICAgICAgIGZyYW1lID0ganNDYXN0PEdlbmVyYXRvckZyYW1lKj4o
dmFsdWUpOwotICAgIGVsc2UgewotICAgICAgICAvLyBGSVhNRTogT25jZSBKU0dlbmVyYXRvciBz
cGVjaWFsaXplZCBvYmplY3QgaXMgaW50cm9kdWNlZCwgdGhpcyBHZW5lcmF0b3JGcmFtZSBzaG91
bGQgYmUgZW1iZWRlZCBpbnRvIGl0IHRvIGF2b2lkIGFsbG9jYXRpb25zLgotICAgICAgICAvLyBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNTQ1Ci0gICAgICAgIGZy
YW1lID0gR2VuZXJhdG9yRnJhbWU6OmNyZWF0ZShleGVjLT52bSgpLCAgZXhlYy0+Y29kZUJsb2Nr
KCktPm51bUNhbGxlZUxvY2FscygpKTsKLSAgICAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoZ2Vu
ZXJhdG9yLCB0cnVlLCBQdXRQcm9wZXJ0eVNsb3Q6OlB1dEJ5SWQpOwotICAgICAgICBhc09iamVj
dChnZW5lcmF0b3IpLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+cHV0KGFzT2JqZWN0KGdlbmVy
YXRvciksIGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5nZW5lcmF0
b3JGcmFtZVByaXZhdGVOYW1lKCksIGZyYW1lLCBzbG90KTsKLSAgICB9Ci0gICAgdW5zaWduZWQg
bGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gcGNbMl0udS51bnNpZ25lZFZhbHVlOwotICAgIGZyYW1l
LT5zYXZlKGV4ZWMsIGV4ZWMtPmNvZGVCbG9jaygpLT5saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZChs
aXZlQ2FsbGVlTG9jYWxzSW5kZXgpKTsKLSAgICBFTkQoKTsKLX0KLQotU0xPV19QQVRIX0RFQ0wo
c2xvd19wYXRoX3Jlc3VtZSkKLXsKLSAgICBCRUdJTigpOwotICAgIEpTVmFsdWUgZ2VuZXJhdG9y
ID0gT1AoMSkuanNWYWx1ZSgpOwotICAgIEdlbmVyYXRvckZyYW1lKiBmcmFtZSA9IGpzQ2FzdDxH
ZW5lcmF0b3JGcmFtZSo+KGdlbmVyYXRvci5nZXQoZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygp
LmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvckZyYW1lUHJpdmF0ZU5hbWUoKSkpOwotICAgIHVuc2ln
bmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9IHBjWzJdLnUudW5zaWduZWRWYWx1ZTsKLSAgICBm
cmFtZS0+cmVzdW1lKGV4ZWMsIGV4ZWMtPmNvZGVCbG9jaygpLT5saXZlQ2FsbGVlTG9jYWxzQXRZ
aWVsZChsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpKTsKLSAgICBFTkQoKTsKLX0KLQogU0xPV19QQVRI
X0RFQ0woc2xvd19wYXRoX2NyZWF0ZV9sZXhpY2FsX2Vudmlyb25tZW50KQogewogICAgIEJFR0lO
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93
UGF0aHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5o
CmluZGV4IDhjNzA3ODQyODAyZDZhMDNkMTI4Y2Q4ZDI5MmFmZjczNWNkYTAzMmYuLjZlYjIxYmRm
ZGUwMzQxMmZlZTYxMDAyZDVlNWFhOGE4MzQ4MDUzYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCkBAIC0yNDYsOCArMjQ2LDYgQEAgU0xP
V19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9uZXh0X2dlbmVyaWNfZW51bWVyYXRvcl9wbmFt
ZSk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3RvX2luZGV4X3N0cmluZyk7CiBT
TE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3Byb2ZpbGVfdHlwZV9jbGVhcl9sb2cpOwog
U0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9hc3NlcnQpOwotU0xPV19QQVRIX0hJRERF
Tl9ERUNMKHNsb3dfcGF0aF9zYXZlKTsKLVNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhf
cmVzdW1lKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfY3JlYXRlX2xleGljYWxf
ZW52aXJvbm1lbnQpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9wdXNoX3dpdGhf
c2NvcGUpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9yZXNvbHZlX3Njb3BlKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZyYW1l
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZyYW1lLmNwcApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWY2ZWE3YTEwMDI1OGMzZWNlMDRkYWFiNDNi
ZGFhODUxZWM4ZjcxNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGcmFtZS5jcHAKKysr
IC9kZXYvbnVsbApAQCAtMSw5NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1IFl1
c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRl
ICJjb25maWcuaCIKLSNpbmNsdWRlICJHZW5lcmF0b3JGcmFtZS5oIgotCi0jaW5jbHVkZSAiQ29k
ZUJsb2NrLmgiCi0jaW5jbHVkZSAiSGVhcEl0ZXJhdGlvblNjb3BlLmgiCi0jaW5jbHVkZSAiSlND
SlNWYWx1ZUlubGluZXMuaCIKLSNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCi0jaW5jbHVkZSAi
U2xvdFZpc2l0b3JJbmxpbmVzLmgiCi0jaW5jbHVkZSAiU3RydWN0dXJlSW5saW5lcy5oIgotCi1u
YW1lc3BhY2UgSlNDIHsKLQotY29uc3QgQ2xhc3NJbmZvIEdlbmVyYXRvckZyYW1lOjpzX2luZm8g
PSB7ICJHZW5lcmF0b3JGcmFtZSIsIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFC
TEUoR2VuZXJhdG9yRnJhbWUpIH07Ci0KLUdlbmVyYXRvckZyYW1lOjpHZW5lcmF0b3JGcmFtZShW
TSYgdm0sIHNpemVfdCBudW1iZXJPZkNhbGxlZUxvY2FscykKLSAgICA6IEJhc2Uodm0sIHZtLmdl
bmVyYXRvckZyYW1lU3RydWN0dXJlLmdldCgpKQotICAgICwgbV9udW1iZXJPZkNhbGxlZUxvY2Fs
cyhudW1iZXJPZkNhbGxlZUxvY2FscykKLXsKLX0KLQotdm9pZCBHZW5lcmF0b3JGcmFtZTo6Zmlu
aXNoQ3JlYXRpb24oVk0mIHZtKQotewotICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKLSAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fbnVtYmVyT2ZDYWxsZWVMb2NhbHM7ICsraSkKLSAg
ICAgICAgbG9jYWxBdChpKS5jbGVhcigpOwotfQotCi1TdHJ1Y3R1cmUqIEdlbmVyYXRvckZyYW1l
OjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U1ZhbHVlIHByb3RvdHlwZSkKLXsKLSAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGds
b2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhDZWxsVHlwZSwgU3RydWN0dXJlRmxhZ3Mp
LCBpbmZvKCkpOwotfQotCi1HZW5lcmF0b3JGcmFtZSogR2VuZXJhdG9yRnJhbWU6OmNyZWF0ZShW
TSYgdm0sIHNpemVfdCBudW1iZXJPZkxvY2FscykKLXsKLSAgICBHZW5lcmF0b3JGcmFtZSogcmVz
dWx0ID0KLSAgICAgICAgbmV3ICgKLSAgICAgICAgICAgIE5vdE51bGwsCi0gICAgICAgICAgICBh
bGxvY2F0ZUNlbGw8R2VuZXJhdG9yRnJhbWU+KHZtLmhlYXAsIGFsbG9jYXRpb25TaXplRm9yTG9j
YWxzKG51bWJlck9mTG9jYWxzKSkpCi0gICAgICAgIEdlbmVyYXRvckZyYW1lKHZtLCBudW1iZXJP
ZkxvY2Fscyk7Ci0gICAgcmVzdWx0LT5maW5pc2hDcmVhdGlvbih2bSk7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLQotdm9pZCBHZW5lcmF0b3JGcmFtZTo6c2F2ZShFeGVjU3RhdGUqIGV4ZWMsIGNv
bnN0IEZhc3RCaXRWZWN0b3ImIGxpdmVDYWxsZWVMb2NhbHMpCi17Ci0gICAgLy8gT25seSBzYXZl
IGNhbGxlZSBsb2NhbHMuCi0gICAgLy8gRXZlcnkgdGltZSBhIGdlbmVyYXRvciBpcyBjYWxsZWQg
KG9yIHJlc3VtZWQpLCBwYXJhbWV0ZXJzIHNob3VsZCBiZSByZXBsYWNlZC4KLSAgICBBU1NFUlQo
bGl2ZUNhbGxlZUxvY2Fscy5udW1CaXRzKCkgPD0gbV9udW1iZXJPZkNhbGxlZUxvY2Fscyk7Ci0g
ICAgbGl2ZUNhbGxlZUxvY2Fscy5mb3JFYWNoU2V0Qml0KFsmXShzaXplX3QgaW5kZXgpIHsKLSAg
ICAgICAgbG9jYWxBdChpbmRleCkuc2V0KGV4ZWMtPnZtKCksIHRoaXMsIGV4ZWMtPnVuY2hlY2tl
ZFIodmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaW5kZXgpKS5qc1ZhbHVlKCkpOwotICAgIH0pOwot
fQotCi12b2lkIEdlbmVyYXRvckZyYW1lOjpyZXN1bWUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBG
YXN0Qml0VmVjdG9yJiBsaXZlQ2FsbGVlTG9jYWxzKQotewotICAgIC8vIE9ubHkgcmVzdW1lIGNh
bGxlZSBsb2NhbHMuCi0gICAgLy8gRXZlcnkgdGltZSBhIGdlbmVyYXRvciBpcyBjYWxsZWQgKG9y
IHJlc3VtZWQpLCBwYXJhbWV0ZXJzIHNob3VsZCBiZSByZXBsYWNlZC4KLSAgICBsaXZlQ2FsbGVl
TG9jYWxzLmZvckVhY2hTZXRCaXQoWyZdKHNpemVfdCBpbmRleCkgewotICAgICAgICBleGVjLT51
bmNoZWNrZWRSKHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGluZGV4KSkgPSBsb2NhbEF0KGluZGV4
KS5nZXQoKTsKLSAgICAgICAgbG9jYWxBdChpbmRleCkuY2xlYXIoKTsKLSAgICB9KTsKLX0KLQot
dm9pZCBHZW5lcmF0b3JGcmFtZTo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNp
dG9yJiB2aXNpdG9yKQotewotICAgIEdlbmVyYXRvckZyYW1lKiB0aGlzT2JqZWN0ID0ganNDYXN0
PEdlbmVyYXRvckZyYW1lKj4oY2VsbCk7Ci0gICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2Jq
ZWN0LCB2aXNpdG9yKTsKLSAgICAvLyBTaW5jZSBvbmx5IHRydWUgY2VsbCBwb2ludGVycyBhcmUg
c3RvcmVkIGFzIGEgY2VsbCwgd2UgY2FuIHNhZmVseSBtYXJrIHRoZW0uCi0gICAgdmlzaXRvci5h
cHBlbmRWYWx1ZXModGhpc09iamVjdC0+bG9jYWxzKCksIHRoaXNPYmplY3QtPm1fbnVtYmVyT2ZD
YWxsZWVMb2NhbHMpOwotfQotCi19IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZyYW1lLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGcmFtZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAzZDU0NWIxNDdkZDRhYmZiMmJiYjliNWE3MTk0ZThmNzQ4NDFjNDlhLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0dlbmVyYXRvckZyYW1lLmgKKysrIC9kZXYvbnVsbApAQCAtMSw5MCArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVh
QGdtYWlsLmNvbT4uCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
Ci0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgR2VuZXJhdG9yRnJhbWVfaAotI2RlZmlu
ZSBHZW5lcmF0b3JGcmFtZV9oCi0KLSNpbmNsdWRlICJKU0NlbGwuaCIKLSNpbmNsdWRlIDx3dGYv
RmFzdEJpdFZlY3Rvci5oPgotCi1uYW1lc3BhY2UgSlNDIHsKLQotY2xhc3MgR2VuZXJhdG9yRnJh
bWUgOiBwdWJsaWMgSlNDZWxsIHsKLSAgICBmcmllbmQgY2xhc3MgSklUOwotI2lmIEVOQUJMRShE
RkdfSklUKQotICAgIGZyaWVuZCBjbGFzcyBERkc6OlNwZWN1bGF0aXZlSklUOwotICAgIGZyaWVu
ZCBjbGFzcyBERkc6OkpJVENvbXBpbGVyOwotI2VuZGlmCi0gICAgZnJpZW5kIGNsYXNzIFZNOwot
cHVibGljOgotICAgIHR5cGVkZWYgSlNDZWxsIEJhc2U7Ci0gICAgc3RhdGljIGNvbnN0IHVuc2ln
bmVkIFN0cnVjdHVyZUZsYWdzID0gU3RydWN0dXJlSXNJbW1vcnRhbCB8IEJhc2U6OlN0cnVjdHVy
ZUZsYWdzOwotCi0gICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKLQotICAgIHN0YXRpYyBHZW5lcmF0
b3JGcmFtZSogY3JlYXRlKFZNJiwgc2l6ZV90IG51bWJlck9mQ2FsbGVlTG9jYWxzKTsKLQotICAg
IFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qIGxvY2FscygpCi0gICAgewotICAgICAgICByZXR1
cm4gYml0d2lzZV9jYXN0PFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qPihiaXR3aXNlX2Nhc3Q8
Y2hhcio+KHRoaXMpICsgb2Zmc2V0T2ZMb2NhbHMoKSk7Ci0gICAgfQotCi0gICAgV3JpdGVCYXJy
aWVyQmFzZTxVbmtub3duPiYgbG9jYWxBdChzaXplX3QgaW5kZXgpCi0gICAgewotICAgICAgICBB
U1NFUlQoaW5kZXggPCBtX251bWJlck9mQ2FsbGVlTG9jYWxzKTsKLSAgICAgICAgcmV0dXJuIGxv
Y2FscygpW2luZGV4XTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgc2l6ZV90IG9mZnNldE9mTG9jYWxz
KCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Y8c2l6ZW9m
KFdyaXRlQmFycmllcjxVbmtub3duPik+KHNpemVvZihHZW5lcmF0b3JGcmFtZSkpOwotICAgIH0K
LQotICAgIHN0YXRpYyBzaXplX3QgYWxsb2NhdGlvblNpemVGb3JMb2NhbHModW5zaWduZWQgbnVt
YmVyT2ZMb2NhbHMpCi0gICAgewotICAgICAgICByZXR1cm4gb2Zmc2V0T2ZMb2NhbHMoKSArIG51
bWJlck9mTG9jYWxzICogc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPik7Ci0gICAgfQotCi0g
ICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3Qq
LCBKU1ZhbHVlIHByb3RvdHlwZSk7Ci0KLSAgICB2b2lkIHNhdmUoRXhlY1N0YXRlKiwgY29uc3Qg
RmFzdEJpdFZlY3RvciYgbGl2ZUNhbGxlZUxvY2Fscyk7Ci0gICAgdm9pZCByZXN1bWUoRXhlY1N0
YXRlKiwgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZUNhbGxlZUxvY2Fscyk7Ci0KLXByaXZhdGU6
Ci0gICAgR2VuZXJhdG9yRnJhbWUoVk0mLCBzaXplX3QgbnVtYmVyT2ZDYWxsZWVMb2NhbHMpOwot
Ci0gICAgc2l6ZV90IG1fbnVtYmVyT2ZDYWxsZWVMb2NhbHM7Ci0KLSAgICBmcmllbmQgY2xhc3Mg
TExJbnRPZmZzZXRzRXh0cmFjdG9yOwotCi0gICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOwot
Ci1wcm90ZWN0ZWQ6Ci0gICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90
VmlzaXRvciYpOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgSlNDCi0KLSNlbmRpZiAvLyBHZW5lcmF0
b3JGcmFtZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXggYjFmZjQyNDhh
MzQ4NGE0Y2JiYzIwNWMzMmQ0ZDA0YzE2MDYwY2FjNi4uODVlNjdmZmI1OTY0NGQzYjU0MzMyNTdi
N2NiMGVkMWRkMGU2OWNkYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAt
NDYsNyArNDYsNiBAQAogI2luY2x1ZGUgIkZUTFRodW5rcy5oIgogI2luY2x1ZGUgIkZ1bmN0aW9u
Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJHQ0FjdGl2aXR5Q2FsbGJhY2suaCIKLSNpbmNsdWRl
ICJHZW5lcmF0b3JGcmFtZS5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgogI2luY2x1ZGUg
IkhlYXAuaCIKICNpbmNsdWRlICJIZWFwSXRlcmF0aW9uU2NvcGUuaCIKQEAgLTI0MCw3ICsyMzks
NiBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgaW5mZXJy
ZWRUeXBlU3RydWN0dXJlLnNldCgqdGhpcywgSW5mZXJyZWRUeXBlOjpjcmVhdGVTdHJ1Y3R1cmUo
KnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgaW5mZXJyZWRUeXBlVGFibGVTdHJ1Y3R1cmUuc2V0
KCp0aGlzLCBJbmZlcnJlZFR5cGVUYWJsZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051
bGwoKSkpOwogICAgIGZ1bmN0aW9uUmFyZURhdGFTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBGdW5jdGlv
blJhcmVEYXRhOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7Ci0gICAgZ2Vu
ZXJhdG9yRnJhbWVTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlU3Ry
dWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIGV4Y2VwdGlvblN0cnVjdHVyZS5zZXQo
KnRoaXMsIEV4Y2VwdGlvbjo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwog
ICAgIHByb21pc2VEZWZlcnJlZFN0cnVjdHVyZS5zZXQoKnRoaXMsIEpTUHJvbWlzZURlZmVycmVk
OjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgaW50ZXJuYWxQcm9t
aXNlRGVmZXJyZWRTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBKU0ludGVybmFsUHJvbWlzZURlZmVycmVk
OjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVk0uaAppbmRleCBmMGRlMTUxMzVhOTA3ODc4YjQ3YTFkMzQzNGY2ODI5MWNiNWRjNzNl
Li40ZmY5ZWRkMGE3NzQ2YzI5ZTVlNjdjMzgxZmNlM2IyMDc0Nzk5NTQ5IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNLmgKQEAgLTMxNiw3ICszMTYsNiBAQCBjbGFzcyBWTSA6IHB1YmxpYyBU
aHJlYWRTYWZlUmVmQ291bnRlZDxWTT4gewogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGluZmVycmVk
VHlwZVN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBpbmZlcnJlZFR5cGVUYWJsZVN0
cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBmdW5jdGlvblJhcmVEYXRhU3RydWN0dXJl
OwotICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGdlbmVyYXRvckZyYW1lU3RydWN0dXJlOwogICAgIFN0
cm9uZzxTdHJ1Y3R1cmU+IGV4Y2VwdGlvblN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJl
PiBwcm9taXNlRGVmZXJyZWRTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gaW50ZXJu
YWxQcm9taXNlRGVmZXJyZWRTdHJ1Y3R1cmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLWFuZC1hcnJheS5qcyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwtYW5kLWFycmF5
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmZlOTM5ODEyZmRiYWVjNmI4MzJiZmQwMGYyMTUzZGVmODRiYjc1OTIK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dl
bmVyYXRvci1maWItZnRsLWFuZC1hcnJheS5qcwpAQCAtMCwwICsxLDIzIEBACisoZnVuY3Rpb24g
KCkgeworICAgIGZ1bmN0aW9uICpmaWIoKQorICAgIHsKKyAgICAgICAgbGV0IGEgPSAxOworICAg
ICAgICBsZXQgYiA9IDE7CisgICAgICAgIGxldCBjID0gWyAwIF07CisgICAgICAgIHdoaWxlICh0
cnVlKSB7CisgICAgICAgICAgICBjWzBdID0gYTsKKyAgICAgICAgICAgIHlpZWxkIGM7CisgICAg
ICAgICAgICBbYSwgYl0gPSBbYiwgYSArIGJdOworICAgICAgICB9CisgICAgfQorCisgICAgbGV0
IHZhbHVlID0gMDsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDFlNDsgKytpKSB7CisgICAgICAg
IGxldCBmID0gZmliKCk7CisgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwOyArK2kpIHsK
KyAgICAgICAgICAgIHZhbHVlID0gZi5uZXh0KCkudmFsdWU7CisgICAgICAgIH0KKyAgICAgICAg
aWYgKHZhbHVlWzBdICE9PSAzNTQyMjQ4NDgxNzkyNjIwMDAwMDApCisgICAgICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoYGJhZCB2YWx1ZToke3Jlc3VsdH1gKTsKKyAgICB9Cit9KCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0
bC1hbmQtb2JqZWN0LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5l
cmF0b3ItZmliLWZ0bC1hbmQtb2JqZWN0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY2NzM0MGYyZWE0Yzc0Mzhh
MmQyMDlhYTQwZDA2NzdlNGFiN2QzZmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLWFuZC1vYmplY3QuanMKQEAg
LTAsMCArMSwyMyBAQAorKGZ1bmN0aW9uICgpIHsKKyAgICBmdW5jdGlvbiAqZmliKCkKKyAgICB7
CisgICAgICAgIGxldCBhID0gMTsKKyAgICAgICAgbGV0IGIgPSAxOworICAgICAgICBsZXQgYyA9
IHsgZmliOiAwIH07CisgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICBjLmZpYiA9
IGE7CisgICAgICAgICAgICB5aWVsZCBjOworICAgICAgICAgICAgW2EsIGJdID0gW2IsIGEgKyBi
XTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGxldCB2YWx1ZSA9IDA7CisgICAgZm9yIChsZXQg
aSA9IDA7IGkgPCAxZTQ7ICsraSkgeworICAgICAgICBsZXQgZiA9IGZpYigpOworICAgICAgICBm
b3IgKGxldCBpID0gMDsgaSA8IDEwMDsgKytpKSB7CisgICAgICAgICAgICB2YWx1ZSA9IGYubmV4
dCgpLnZhbHVlOworICAgICAgICB9CisgICAgICAgIGlmICh2YWx1ZS5maWIgIT09IDM1NDIyNDg0
ODE3OTI2MjAwMDAwMCkKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIHZhbHVlOiR7
cmVzdWx0fWApOworICAgIH0KK30oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLWFuZC1zdHJpbmcuanMgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLWFuZC1zdHJpbmcu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNDM4YWU2YWIzMzQ3MDQ2ODIyODQ5ZjQzMDA0ZWE1YzQwM2VlZGEyOAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2Vu
ZXJhdG9yLWZpYi1mdGwtYW5kLXN0cmluZy5qcwpAQCAtMCwwICsxLDIyIEBACisoZnVuY3Rpb24g
KCkgeworICAgIGZ1bmN0aW9uICpmaWIoKQorICAgIHsKKyAgICAgICAgbGV0IGEgPSAxOworICAg
ICAgICBsZXQgYiA9IDE7CisgICAgICAgIGxldCBjID0gIlJlc3VsdCEgIjsKKyAgICAgICAgd2hp
bGUgKHRydWUpIHsKKyAgICAgICAgICAgIHlpZWxkIGMgKyBhOworICAgICAgICAgICAgW2EsIGJd
ID0gW2IsIGEgKyBiXTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGxldCB2YWx1ZSA9IDA7Cisg
ICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxZTQ7ICsraSkgeworICAgICAgICBsZXQgZiA9IGZpYigp
OworICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDsgKytpKSB7CisgICAgICAgICAgICB2
YWx1ZSA9IGYubmV4dCgpLnZhbHVlOworICAgICAgICB9CisgICAgICAgIGlmICh2YWx1ZSAhPT0g
YFJlc3VsdCEgMzU0MjI0ODQ4MTc5MjYyMDAwMDAwYCkKKyAgICAgICAgICAgIHRocm93IG5ldyBF
cnJvcihgYmFkIHZhbHVlOiR7cmVzdWx0fWApOworICAgIH0KK30oKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLmpzIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4zNDBlMzNkYmM4NjhiZWE3YTg5M2M5ZWMxNmI3NzllYzI2YmRiMTljCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0
b3ItZmliLWZ0bC5qcwpAQCAtMCwwICsxLDIxIEBACisoZnVuY3Rpb24gKCkgeworICAgIGZ1bmN0
aW9uICpmaWIoKQorICAgIHsKKyAgICAgICAgbGV0IGEgPSAxOworICAgICAgICBsZXQgYiA9IDE7
CisgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICB5aWVsZCBhOworICAgICAgICAg
ICAgW2EsIGJdID0gW2IsIGEgKyBiXTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGxldCB2YWx1
ZSA9IDA7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxZTQ7ICsraSkgeworICAgICAgICBsZXQg
ZiA9IGZpYigpOworICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDsgKytpKSB7CisgICAg
ICAgICAgICB2YWx1ZSA9IGYubmV4dCgpLnZhbHVlOworICAgICAgICB9CisgICAgICAgIGlmICh2
YWx1ZSAhPT0gMzU0MjI0ODQ4MTc5MjYyMDAwMDAwKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKGBiYWQgdmFsdWU6JHtyZXN1bHR9YCk7CisgICAgfQorfSgpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZyYW1lLWVtcHR5Lmpz
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZnJhbWUtZW1w
dHkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNTllODg1NWJmYWMzYzU2ZGY5MjZhYmQ0MjhjMDEzYzMzNDE2Mjc0
NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mv
Z2VuZXJhdG9yLWZyYW1lLWVtcHR5LmpzCkBAIC0wLDAgKzEsMzQgQEAKK2Z1bmN0aW9uIHNob3Vs
ZFRocm93KGZ1bmMsIGVycm9yTWVzc2FnZSkgeworICAgIHZhciBlcnJvclRocm93biA9IGZhbHNl
OworICAgIHZhciBlcnJvciA9IG51bGw7CisgICAgdHJ5IHsKKyAgICAgICAgZnVuYygpOworICAg
IH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgZXJyb3JUaHJvd24gPSB0cnVlOworICAgICAgICBlcnJv
ciA9IGU7CisgICAgfQorICAgIGlmICghZXJyb3JUaHJvd24pCisgICAgICAgIHRocm93IG5ldyBF
cnJvcignbm90IHRocm93bicpOworICAgIGlmIChTdHJpbmcoZXJyb3IpICE9PSBlcnJvck1lc3Nh
Z2UpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIGVycm9yOiAke1N0cmluZyhlcnJvcil9
YCk7Cit9CisKK3Nob3VsZFRocm93KGZ1bmN0aW9uICgpIHsKKyAgICBmdW5jdGlvbiAqZmliKGZs
YWcpCisgICAgeworICAgICAgICBsZXQgYSA9IDE7CisgICAgICAgIGxldCBiID0gMTsKKyAgICAg
ICAgeWllbGQgNDI7CisgICAgICAgIGlmIChmbGFnKQorICAgICAgICAgICAgcmV0dXJuIGM7Cisg
ICAgICAgIGxldCBjID0gNTAwOworICAgIH0KKworICAgIGxldCB2YWx1ZSA9IDA7CisgICAgZm9y
IChsZXQgaSA9IDA7IGkgPCAxZTQ7ICsraSkgeworICAgICAgICBmb3IgKGxldCB2IG9mIGZpYihm
YWxzZSkpIHsKKyAgICAgICAgfQorICAgIH0KKyAgICBmb3IgKGxldCB2IG9mIGZpYih0cnVlKSkg
eworICAgIH0KK30sIGBSZWZlcmVuY2VFcnJvcjogQ2Fubm90IGFjY2VzcyB1bmluaXRpYWxpemVk
IHZhcmlhYmxlLmApOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0
cmVzcy9nZW5lcmF0b3ItcmVkdWNlZC1zYXZlLXBvaW50LXB1dC10by1zY29wZS5qcyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXJlZHVjZWQtc2F2ZS1wb2lu
dC1wdXQtdG8tc2NvcGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzBjNzVmYTQ5MTQzYzE3YmUxNGYzMjgxZTNm
NjU0MzRmMzUxMzllOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXJlZHVjZWQtc2F2ZS1wb2ludC1wdXQtdG8tc2NvcGUuanMK
QEAgLTAsMCArMSwyOCBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgewor
ICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJh
ZCB2YWx1ZTogJHtTdHJpbmcoYWN0dWFsKX1gKTsKK30KKworZnVuY3Rpb24gZXJyb3IoKQorewor
ICAgIHRocm93ICJvayI7Cit9CisKK2Z1bmN0aW9uKiBnZW4oKQoreworICAgIHZhciB2YWx1ZSA9
IDQyOworICAgIHRyeSB7CisgICAgICAgIHlpZWxkIDMwMDsKKyAgICAgICAgdmFsdWUgPSA1MDA7
CisgICAgICAgIGVycm9yKCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICB5aWVsZCA0MjsK
KyAgICAgICAgcmV0dXJuIHZhbHVlOworICAgIH0KKyAgICByZXR1cm4gMjAwOworfQorCit2YXIg
ZyA9IGdlbigpOworc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIDMwMCk7CitzaG91bGRCZShnLm5l
eHQoKS52YWx1ZSwgNDIpOworc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIDUwMCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci10cmFuc2Zl
ci1yZWdpc3Rlci1iZXlvbmQtbXV0aXBsZS15aWVsZHMuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci10cmFuc2Zlci1yZWdpc3Rlci1iZXlvbmQtbXV0aXBs
ZS15aWVsZHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmUyMDhmNTgxMjk2ZjlhZTA4YTZiZmIzOThiNDgyMjU3
NDJkNmI3OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9z
dHJlc3MvZ2VuZXJhdG9yLXRyYW5zZmVyLXJlZ2lzdGVyLWJleW9uZC1tdXRpcGxlLXlpZWxkcy5q
cwpAQCAtMCwwICsxLDE4IEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7
CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcign
YmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKworCitmdW5jdGlvbiAqZ2VuKCkKK3sKKyAgICB2
YXIgdGVzdCA9IDQyOworICAgIHlpZWxkIDMyOworICAgIHlpZWxkIDMzOworICAgIHlpZWxkIHRl
c3Q7Cit9CisKK3ZhciBnID0gZ2VuKCk7CitzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgMzIpOwor
c2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIDMzKTsKK3Nob3VsZEJlKGcubmV4dCgpLnZhbHVlLCA0
Mik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GYXN0Qml0VmVjdG9yLmggYi9Tb3VyY2Uv
V1RGL3d0Zi9GYXN0Qml0VmVjdG9yLmgKaW5kZXggOThmZmY1Y2Y3MzUzZTZiYzY3ZGE1YzU1OTQw
Y2NjZTRlNGIxNTZkMC4uZmYwMGI3YjU0ZDRhMGNmZjRiZWY3ZDAzODU0ZGU2YjkwY2UxZGI5MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRmFzdEJpdFZlY3Rvci5oCisrKyBiL1NvdXJjZS9X
VEYvd3RmL0Zhc3RCaXRWZWN0b3IuaApAQCAtMjMsOCArMjMsNyBAQAogICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CiAgKi8KIAotI2lmbmRlZiBGYXN0Qml0VmVjdG9yX2gKLSNkZWZpbmUgRmFzdEJpdFZlY3Rvcl9o
CisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgPHN0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi9GYXN0
TWFsbG9jLmg+CkBAIC0zNiwxMiArMzUsMTQgQEAgY2xhc3MgUHJpbnRTdHJlYW07CiAKIGNsYXNz
IEZhc3RCaXRWZWN0b3IgewogcHVibGljOgotICAgIEZhc3RCaXRWZWN0b3IoKQotICAgICAgICA6
IG1fYXJyYXkoMCkKLSAgICAgICAgLCBtX251bUJpdHMoMCkKKyAgICBGYXN0Qml0VmVjdG9yKCkg
PSBkZWZhdWx0OworCisgICAgRmFzdEJpdFZlY3RvcihGYXN0Qml0VmVjdG9yJiYgb3RoZXIpCisg
ICAgICAgIDogbV9hcnJheShzdGQ6OmV4Y2hhbmdlKG90aGVyLm1fYXJyYXksIG51bGxwdHIpKQor
ICAgICAgICAsIG1fbnVtQml0cyhzdGQ6OmV4Y2hhbmdlKG90aGVyLm1fbnVtQml0cywgMCkpCiAg
ICAgewogICAgIH0KLSAgICAKKwogICAgIEZhc3RCaXRWZWN0b3IoY29uc3QgRmFzdEJpdFZlY3Rv
ciYgb3RoZXIpCiAgICAgICAgIDogbV9hcnJheSgwKQogICAgICAgICAsIG1fbnVtQml0cygwKQpA
QCAtMjAyLDEzICsyMDMsMTAgQEAgY2xhc3MgRmFzdEJpdFZlY3RvciB7CiAgICAgc3RhdGljIHNp
emVfdCBhcnJheUxlbmd0aChzaXplX3QgbnVtQml0cykgeyByZXR1cm4gKG51bUJpdHMgKyAzMSkg
Pj4gNTsgfQogICAgIHNpemVfdCBhcnJheUxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIGFycmF5TGVu
Z3RoKG1fbnVtQml0cyk7IH0KICAgICAKLSAgICB1aW50MzJfdCogbV9hcnJheTsgLy8gTm8sIHRo
aXMgY2FuJ3QgYmUgYW4gc3RkOjp1bmlxdWVfcHRyPHVpbnQzMl90W10+LgotICAgIHNpemVfdCBt
X251bUJpdHM7CisgICAgdWludDMyX3QqIG1fYXJyYXkgeyBudWxscHRyIH07IC8vIE5vLCB0aGlz
IGNhbid0IGJlIGFuIHN0ZDo6dW5pcXVlX3B0cjx1aW50MzJfdFtdPi4KKyAgICBzaXplX3QgbV9u
dW1CaXRzIHsgMCB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV1RGCiAKIHVzaW5nIFdURjo6RmFz
dEJpdFZlY3RvcjsKLQotI2VuZGlmIC8vIEZhc3RCaXRWZWN0b3JfaAotCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>284213</attachid>
            <date>2016-07-21 07:07:10 -0700</date>
            <delta_ts>2016-07-21 07:57:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-152723-20160721230609.patch</filename>
            <type>text/plain</type>
            <size>191638</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAzNTAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
MTg5OTNhYjdiZWYyMDRmYjhkMjVkN2EyODExNzBiODE5NjI4ZGEzLi41NWE0MjcyZDYxZTE1ZDk5
NTU5YmE2OWU0MTFkYjNlYTA3ZjM5ODU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNTIgQEAKKzIwMTYtMDctMjEgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0RGR11bRlRMXSBJbXBsZW1lbnQgRVM2IEdlbmVyYXRvcnMgaW4g
REZHIC8gRlRMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNTI3MjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUaGlzIHBhdGNoIGludHJvZHVjZXMgREZHIGFuZCBGVEwgc3VwcG9ydCBmb3IgRVM2IGdlbmVy
YXRvcnMuCisgICAgICAgIEVTNiBnZW5lcmF0b3IgaXMgY29tcGlsZWQgYnkgdGhlIEJ5dGVjb2Rl
R2VuZXJhdG9yLiBCdXQgYXQgdGhlIGxhc3QgcGhhc2UsIEJ5dGVjb2RlR2VuZXJhdG9yIHBlcmZv
cm1zICJnZW5lcmF0b3JpZmljYXRpb24iIG9udG8gdGhlIHVubGlua2VkIGNvZGUuCisgICAgICAg
IEluIEJ5dGVjb2RlR2VuZXJhdG9yIHBoYXNlLCB3ZSBpbnNlcnRlZCBzZXZlcmFsIHNwZWNpYWwg
bWFya2VycyBmb3IgdGhlIGdlbmVyYXRvcnMsIG9wX3NhdmUgYW5kIG9wX3Jlc3VtZS4KKyAgICAg
ICAgVGhlIG9wX3NhdmUsIG9wX3Jlc3VtZSwgYW5kIHRoZSBtZXJnZSBwb2ludCBibG9jayBhcmUg
Y29ubmVjdGVkIGFzIGZvbGxvd3MuCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBvcF9yZXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBeCisgICAgICAgIGVudHJ5IC0+IGdlbmVyYXRvciBzd2l0Y2ggLS0tLT4gb3Bfc2F2ZSAtPiBt
ZXJnZSBwb2ludCAtPiAuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBeCisgICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0t
LT4gb3BfcmVzdW1lIC0tLS0tKworCisgICAgICAgIEluIHRoZSBnZW5lcmF0b3JpZmljYXRpb24g
cGhhc2UsIHdlIHR1cm4gb3V0IHdoaWNoIHZhcmlhYmxlcyBzaG91bGQgYmUgc2F2ZWQgYW5kIHJl
c3VtZWQgYXQgZWFjaCBvcF9zYXZlIGFuZCBvcF9yZXN1bWUsIGFuZCBjb252ZXJ0IHRoZXNlIGJ5
dGVjb2RlcworICAgICAgICB0byB0aGUgc2VxdWVuY2VzIG9mIHRoZSBnZXRfZnJvbV9zY29wZSBh
bmQgcHV0X3RvX3Njb3BlLiBUaGUgcmVnaXN0ZXJzIGFyZSBzYXZlZCBhbmQgcmVzdW1lZCBvdmVy
IHRoZSBnZW5lcmF0b3IncyBuZXh0KCkgY2FsbHMgYnkgdXNpbmcgdGhpcyBzcGVjaWFsCisgICAg
ICAgIGdlbmVyYXRvciBmcmFtZSBzY29wZS4KKworICAgICAgICBJbiB0aGUgZ2VuZXJhdG9yaWZp
Y2F0aW9uIHBoYXNlLAorCisgICAgICAgIDEuIFdlIGNvbnN0cnVjdCB0aGUgQnl0ZWNvZGVHcmFw
aCBmcm9tIHRoZSB1bmlua2VkIGluc3RydWN0aW9ucy4gVGhpcyBjb25zdHJ1Y3RzIHRoZSBiYXNp
YyBibG9ja3MsIGFuZCBpdCBpcyB1c2VkIGluIHRoZSBzdWJzZXF1ZW50IGFuYWx5c2lzLgorICAg
ICAgICAyLiBXZSBwZXJmb3JtIHRoZSBhbmFseXNpcyBvbnRvIHRoZSB1bmxpbmtlZCBjb2RlLiBX
ZSBoYXZlIDMgYW5hbHlzaXM6IHRoZSBsaXZlbmVzcyBhbmFseXNpcywgdGhlIHJlc3VtZWQgdmFy
aWFibGVzIGFuYWx5c2lzLCBhbmQgdGhlIHNhdmVkIHZhcmlhYmxlcyBhbmFseXNpcy4KKyAgICAg
ICAgICAgRmlyc3QsIGluIHRoZSBsaXZlbmVzcyBhbmFseXNpcywgd2UgZXh0cmFjdCB0aGUgbGl2
ZSB2YXJpYWJsZXMgYXQgZWFjaCBtZXJnZSBwb2ludC4gVGhlc2UgdmFyaWFibGVzIHNob3VsZCBi
ZSBjb25zaWRlcmVkIGFzIHRoZSBjb25zZXJ2YXRpdmUgcmVnaXN0ZXJzCisgICAgICAgICAgIHRv
IGJlIHNhdmVkIGFuZCByZXN1bWVkIGF0IGVhY2ggcG9pbnQuCisgICAgICAgIDMuIFNlY29uZCwg
d2UgcGVyZm9ybSB0aGUgbGl2ZW5lc3MgYW5hbHlzaXMgYWdhaW4uIEJ1dCB0aGlzIHRpbWUsIHdl
IGV4cGxpY2l0bHkgaWdub3JlIHRoZSBlZGdlcyBiZXR3ZWVuIHRoZSBzYXZlIHBvaW50cyBhbmQg
dGhlIG1lcmdlIHBvaW50cy4gVGhpcyBhbmFseXNpcywKKyAgICAgICAgICAgcmVmZXJyZWQgdG8g
YXMgdGhlIHJlc3VtZWQgdmFyaWFibGVzIGFuYWx5c2lzLCBleHRyYWN0cyB0aGUgbGl2ZW5lc3Mg
YXQgZWFjaCBtZXJnZSBwb2ludC4gVGhpcyBsaXZlbmVzcyBpbmZvcm1hdGlvbiBvbmx5IGNvbnNp
ZGVycyB0aGUgcmVhY2hhYmxlIGJsb2NrcyBmcm9tIHRoZQorICAgICAgICAgICB0YXJnZXQgb3Bf
cmVzdW1lLiBTbywgdGhpcyByZWdpc3RlciBzZXQgcmVwcmVzZW50cyB0aGF0IHdoaWNoIHNhdmVk
IHJlZ2lzdGVycyB0aGUgcmVhY2hhYmxlIGJsb2NrcyB1c2UuIFdlIGNvbnNpZGVyIHRoZXNlIHJl
Z2lzdGVycyBhcyB0aGUgcmVnaXN0ZXJzIHRvIGJlIHJlc3VtZWQKKyAgICAgICAgICAgaGVyZS4g
VGhlIHJlc3VsdCByZWdpc3RlciBzZXQgaXMgc21hbGxlciB0aGFuIHRoZSBzZXQgd2hpY2ggaXMg
ZXh0cmFjdGVkIGluIHRoZSBwcmV2aW91cyBsaXZlbmVzcyBhbmFseXNpcy4KKyAgICAgICAgNC4g
VGhpcmQsIHdlIGRyaXZlIHRoZSBmb3J3YXJkIGFuYWx5c2lzLCBjYWxsZWQgdGhlIHNhdmVkIHZh
cmlhYmxlcyBhbmFseXNpcy4gQXQgb3Bfc2F2ZSwgd2Ugc2hvdWxkIHNhdmUgdGhlIHZhcmlhYmxl
cyB0aGF0IChpKSB3aWxsIGJlIHVzZWQgYWZ0ZXIgdGhlIG1lcmdlIHBvaW50CisgICAgICAgICAg
IGFuZCAoaWkpIHRoZSBuZXdseSBkZWZpbmVkIHZhcmlhYmxlcyBmcm9tIHRoZSBwcmV2aW91cyBv
cF9yZXN1bWUuIFNvLCB3ZSBwcm9wYWdhdGUgdGhlIGRlZnMgYW5kIGNvbGxlY3QgdGhlIG5ld2x5
IGRlZmluZWQgcmVnaXN0ZXJzIGF0IHRoZSBvcF9zYXZlIHBvaW50IGluIHRoZSBncmFwaAorICAg
ICAgICAgICB3aGljaCBkcm9wcyB0aGUgZWRnZXMgYmV0d2VlbiB0aGUgc2F2ZSBwb2ludHMgYW5k
IHRoZSBtZXJnZSBwb2ludHMuIFRoaXMgcmVzdWx0IHJlcHJlc2VudHMgKGlpKS4gU28gdGhlbiwg
d2UgZmlsdGVyIHRoZSBsaXZlIHZhcmlhYmxlcyAoaSkgKGdhaW5lZCBpbiAoMikpIGF0IHRoZSBt
ZXJnZQorICAgICAgICAgICBwb2ludCB3aXRoIHRoaXMgbmV3bHkgZGVmLWVkIHJlZ2lzdGVycyBi
aXQgbWFzayhpaSkuCisgICAgICAgIDUuIFdlIGluc2VydCB0aGUgZ2V0X2Zyb21fc2NvcGUgYW5k
IHB1dF90b19zY29wZSBhdCBlYWNoIG9wX3NhdmUgYW5kIG9wX3Jlc3VtZS4gV2hpY2ggcmVnaXN0
ZXJzIHNob3VsZCBiZSBzYXZlZCBhbmQgcmVzdW1lZCBpcyBvZmZlcmVkIGJ5ICgzKSBhbmQgKDQp
LgorICAgICAgICAgICBUaGVuLCBjbGlwIHRoZSBvcF9zYXZlIGFuZCBvcF9yZXN1bWUgdGhlbXNl
bHZlcy4gVGhleSBhcmUgZXhlY3V0ZWQgaW4gYSBiYXRjaCBtYW5uZXIgYnkgQnl0ZWNvZGVNb2Rp
ZmljYXRpb25TZXQuIFNpbmNlIHRoZXNlIG1vZGlmaWNhdGlvbiBjaGFuZ2VzIHRoZSBiYXNpYyBi
bG9ja3MKKyAgICAgICAgICAgYW5kIHNpemUgb2YgdW5saW5rZWQgaW5zdHJ1Y3Rpb25zLCBCeXRl
Y29kZU1vZGlmaWNhdGlvblNldCBhbHNvIHBlcmZvcm1zIHRoZSBvZmZzZXQgYWRqdXN0bWVudCBm
b3IgVW5saW5rZWRDb2RlQmxvY2suIFNvLCB0aGlzIEJ5dGVjb2RlTW9kaWZpY2F0aW9uU2V0IGlz
IHBlcmZvcm1lZAorICAgICAgICAgICBvbnRvIHRoZSBCeXRlY29kZUdyYXBoIGluc3RlYWQgb2Yg
Qnl0ZWNvZGVCYXNpY0Jsb2NrLiBUaGUgcmVhc29uIHdoeSB3ZSB0YWtlIHRoaXMgZGVzaWduIGlz
IHNpbXBsZTogd2UgZG9uJ3Qgd2FudCB0byBuZXdseSBjcmVhdGUgdGhlIGJhc2ljIGJsb2NrcyBh
bmQgb3Bjb2RlcworICAgICAgICAgICBmb3IgdGhpcyBlYXJseSBwaGFzZSBsaWtlIERGRy4gSW5z
dGVhZCwgd2UgcGVyZm9ybSB0aGUgbW9kaWZpY2F0aW9uIGFuZCBhZGp1c3RtZW50IHRvIHRoZSB1
bmxpbmtlZCBpbnN0cnVjdGlvbnMgYW5kIFVubGlua2VkQ29kZUJsb2NrIGluIGEgaW4tcGxhY2Ug
bWFubmVyLgorCisgICAgICAgIEFmdGVyIHRoYXQgcGhhc2UsIHRoZSBkYXRhIGZsb3cgb2YgdGhl
IGdlbmVyYXRvci1zYXZlZC1hbmQtcmVzdW1lZC1yZWdpc3RlcnMgYXJlIGV4cGxpY2l0bHkgcmVw
cmVzZW50ZWQgYnkgdGhlIGdldF9mcm9tX3Njb3BlIGFuZCBwdXRfdG9fc2NvcGUuCisgICAgICAg
IEFuZCBvcF9zYXZlIGFuZCBvcF9yZXN1bWUgYXJlIHJlbW92ZWQuIFNpbmNlIHdlIHVzZSB0aGUg
ZXhpc3RpbmcgYnl0ZWNvZGVzLCBERkcgYW5kIEZUTCBjaGFuZ2VzIGFyZSBub3QgbmVjZXNzYXJ5
LgorCisgICAgICAgIENvbXBpbGluZyBFUzYgZ2VuZXJhdG9ycyBpbiBERkcgYW5kIEZUTCBnaXZl
cyB1cyBzaWduaWZpY2FudCBwZXJmb3JtYW5jZSBpbXByb3ZlbWVudHMuCisgICAgICAgIEluIHg2
NCBMaW51eCBib3ggKGhhbmF5YW1hdGEpLCB0aGUgcmVzdWx0IG9mIEpTQ09ubHkgcG9ydCBpcyB0
aGUgZm9sbG93aW5ncy4KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBiYXNlbGluZSAgICAgICAgICAgICAgICAgICBwYXRjaAorCisgICAg
ICAgICAgICBnZW5lcmF0b3ItZmliICAgICAgICAgICAgICAgICAgICAgICAgICAxMDMuMjU0Myst
My45OTc4ICAgICBeICAgICAzNi40MTQ4Ky0wLjg0MDIgICAgICAgIF4gZGVmaW5pdGVseSAyLjgz
NTV4IGZhc3RlcgorICAgICAgICAgICAgZ2VuZXJhdG9yLXdpdGgtc2V2ZXJhbC10eXBlcyAgICAg
ICAgICAgMzQyLjUwMDkrLTI1LjE2MDIgICAgXiAgICAxMzIuMTcxMCstMTcuMTEyOSAgICAgICBe
IGRlZmluaXRlbHkgMi41OTEzeCBmYXN0ZXIKKyAgICAgICAgICAgIGdlbmVyYXRvci1zdW5zcGlk
ZXItYWNjZXNzLW5zaWV2ZSAgICAgICAgNS45ODE2Ky0wLjEwODIgICAgIF4gICAgICA1LjE3ODAr
LTAuMjM4OCAgICAgICAgXiBkZWZpbml0ZWx5IDEuMTU1MnggZmFzdGVyCisKKworICAgICAgICBJ
biB4NjQgT1MgWCBsYXB0b3AsIHRoZSByZXN1bHRzIG9mIEVTNlNhbXBsZUJlbmNoIGFyZSB0aGUg
Zm9sbG93aW5ncy4KKyAgICAgICAgVGhlIEVTNiBCYXNpYyBiZW5jaG1hcmsgc2hvdyB0aGF0IHRo
ZSBwZXJmb3JtYW5jZSBvZiB0aGUgcGF0Y2hlZCBvbmUgaXMgMzMlIGZhc3RlciB0aGFuIHRoZSBw
ZXJmb3JtYW5jZSBvZiB0aGUgYmFzZWxpbmUuCisKKyAgICAgICAgICAgIEJhc2VsaW5lOgorICAg
ICAgICAgICAgICAgIEdlb21ldHJpYyBNZWFuIFJlc3VsdDogMTgxLjgzIG1zIMKxIDQuODIgbXMK
KworICAgICAgICAgICAgICAgIEJlbmNobWFyayAgICBGaXJzdCBJdGVyYXRpb24gICAgICAgV29y
c3QgMiUgICAgICAgICAgICAgIFN0ZWFkeSBTdGF0ZQorICAgICAgICAgICAgICAgIEFpciAgICAg
ICAgICA3MC43NCBtcyDCsSA2LjU1IG1zICAgIDM0Ljc0IG1zIMKxIDEuNjUgbXMgICAgMjk4OS4w
NiBtcyDCsSAzNC40NSBtcworICAgICAgICAgICAgICAgIEJhc2ljICAgICAgICA0MC4wMyBtcyDC
sSAxLjk2IG1zICAgIDI4LjUwIG1zIMKxIDAuNjAgbXMgICAgNDM0Mi45MSBtcyDCsSA2NC4xMCBt
cworCisgICAgICAgICAgICBQYXRjaGVkOgorICAgICAgICAgICAgICAgIEdlb21ldHJpYyBNZWFu
IFJlc3VsdDogMTY4LjE0IG1zIMKxIDEuMzkgbXMKKworICAgICAgICAgICAgICAgIEJlbmNobWFy
ayAgICBGaXJzdCBJdGVyYXRpb24gICAgICAgV29yc3QgMiUgICAgICAgICAgICAgIFN0ZWFkeSBT
dGF0ZQorICAgICAgICAgICAgICAgIEFpciAgICAgICAgICA2OC42NyBtcyDCsSAwLjgyIG1zICAg
IDM1LjYyIG1zIMKxIDAuMzIgbXMgICAgMzA2NS44OSBtcyDCsSA1NS41OSBtcworICAgICAgICAg
ICAgICAgIEJhc2ljICAgICAgICAzOC42MSBtcyDCsSAxLjY1IG1zICAgIDIzLjk3IG1zIMKxIDAu
MzggbXMgICAgMzI2Mi40NiBtcyDCsSA3NC4xMiBtcworCisgICAgICAgICogQ01ha2VMaXN0cy50
eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiBidWlsdGlucy9HZW5lcmF0b3JQcm90b3R5cGUuanM6CisgICAgICAgIChnbG9i
YWxQcml2YXRlLmdlbmVyYXRvclJlc3VtZSk6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVC
YXNpY0Jsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVCYXNpY0Jsb2NrOjpjb21wdXRl
Qnl0ZWNvZGVCYXNpY0Jsb2Nrc0ludGVybmFsKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVCYXNp
Y0Jsb2NrOjpjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2Nrcyk6CisgICAgICAgIChKU0M6OmxpbmtC
bG9ja3MpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2Nr
cyk6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmg6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlQmFzaWNCbG9jazo6Ynl0ZWNvZGVPZmZzZXRzKToKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVCYXNpY0Jsb2NrOjpzdWNjZXNzb3JzKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVCYXNpY0Jsb2NrOjpwcmVkZWNlc3NvcnMpOgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUJhc2ljQmxvY2s6OmluZGV4KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVCYXNpY0Jsb2NrOjph
ZGRTdWNjZXNzb3IpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUJhc2ljQmxvY2s6OmFkZFByZWRl
Y2Vzc29yKToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5j
cHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbjo6Qnl0
ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRv
cmlmaWNhdGlvbjo6aXNNZXJnZUJsb2NrKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0
b3JpZmljYXRpb246OmlzU2F2ZUJsb2NrKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0
b3JpZmljYXRpb246OmdyYXBoKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3JpZmlj
YXRpb246OnN0b3JhZ2VGb3JHZW5lcmF0b3JMb2NhbCk6CisgICAgICAgIChKU0M6OkdlbmVyYXRv
ckxpdmVuZXNzQW5hbHlzaXM6OkdlbmVyYXRvckxpdmVuZXNzQW5hbHlzaXMpOgorICAgICAgICAo
SlNDOjpHZW5lcmF0b3JMaXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlTGl2ZW5lc3NEZWZzRm9yQnl0
ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JMaXZlbmVzc0FuYWx5c2lzOjpj
b21wdXRlTGl2ZW5lc3NVc2VzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpHZW5l
cmF0b3JMaXZlbmVzc0FuYWx5c2lzOjpzdGVwT3Zlckluc3RydWN0aW9uRm9yTGl2ZW5lc3MpOgor
ICAgICAgICAoSlNDOjpHZW5lcmF0b3JMaXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlTG9jYWxMaXZl
bmVzc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yTGl2ZW5lc3NB
bmFseXNpczo6Y29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCbG9jayk6CisgICAgICAgIChKU0M6Okdl
bmVyYXRvckxpdmVuZXNzQW5hbHlzaXM6OmdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQp
OgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JMaXZlbmVzc0FuYWx5c2lzOjpydW4pOgorICAgICAg
ICAoSlNDOjpSZXN1bWVkVmFyaWFibGVzQW5hbHlzaXM6OlJlc3VtZWRWYXJpYWJsZXNBbmFseXNp
cyk6CisgICAgICAgIChKU0M6OlJlc3VtZWRWYXJpYWJsZXNBbmFseXNpczo6Z2V0UmVzdW1lZFZh
cmlhYmxlc0luZm9BdEJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6UmVzdW1lZFZhcmlh
Ymxlc0FuYWx5c2lzOjpydW4pOgorICAgICAgICAoSlNDOjpTYXZlZFZhcmlhYmxlc0FuYWx5c2lz
OjpTYXZlZFZhcmlhYmxlc0FuYWx5c2lzKToKKyAgICAgICAgKEpTQzo6U2F2ZWRWYXJpYWJsZXNB
bmFseXNpczo6c3RlcE92ZXJJbnN0cnVjdGlvbkZvclNhdmVkVmFyaWFibGVzKToKKyAgICAgICAg
KEpTQzo6U2F2ZWRWYXJpYWJsZXNBbmFseXNpczo6Y29tcHV0ZUxvY2FsU2F2ZWRWYXJpYWJsZXNG
b3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OlNhdmVkVmFyaWFibGVzQW5hbHlzaXM6
OmNvbXB1dGVMb2NhbFNhdmVkVmFyaWFibGVzRm9yQmxvY2spOgorICAgICAgICAoSlNDOjpTYXZl
ZFZhcmlhYmxlc0FuYWx5c2lzOjpnZXRTYXZlZFZhcmlhYmxlc0luZm9BdEJ5dGVjb2RlT2Zmc2V0
KToKKyAgICAgICAgKEpTQzo6U2F2ZWRWYXJpYWJsZXNBbmFseXNpczo6cnVuKToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb246OnJ1bik6CisgICAgICAgIChKU0M6OnBl
cmZvcm1HZW5lcmF0b3JpZmljYXRpb24pOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlR2Vu
ZXJhdG9yaWZpY2F0aW9uLmg6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNJbmxpbmVzLmguCisgICAgICAgICogYnl0ZWNv
ZGUvQnl0ZWNvZGVHcmFwaC5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHcmFwaDo6
Y29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHcmFwaDo6YmFzaWNCbG9ja3MpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdyYXBoOjppbnN0cnVjdGlvbnMpOgorICAgICAgICAoSlND
OjpCeXRlY29kZUdyYXBoOjpiYXNpY0Jsb2Nrc0luUmV2ZXJzZU9yZGVyKToKKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVHcmFwaDo6YmxvY2tDb250YWluc0J5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHcmFwaDo6ZmluZEJhc2ljQmxvY2tGb3JCeXRlY29kZU9mZnNldCk6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR3JhcGg6OmZpbmRCYXNpY0Jsb2NrV2l0aExlYWRlck9mZnNl
dCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR3JhcGg8QmxvY2s+OjpCeXRlY29kZUdyYXBoKToK
KyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNp
cyk6CisgICAgICAgIChKU0M6OnN0ZXBPdmVySW5zdHJ1Y3Rpb24pOgorICAgICAgICAoSlNDOjpj
b21wdXRlTG9jYWxMaXZlbmVzc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Y29t
cHV0ZUxvY2FsTGl2ZW5lc3NGb3JCbG9jayk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlTGl2ZW5l
c3NBbmFseXNpczo6cnVuTGl2ZW5lc3NGaXhwb2ludCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
TGl2ZW5lc3NBbmFseXNpczo6Z2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29kZU9mZnNldCk6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0ZUZ1bGxMaXZlbmVzcyk6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0ZUtpbGxzKToK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpkdW1wUmVzdWx0cyk6Cisg
ICAgICAgIChKU0M6OmlzVmFsaWRSZWdpc3RlckZvckxpdmVuZXNzKTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6Z2V0TGVhZGVyT2Zmc2V0Rm9yQmFzaWNCbG9jayk6IERlbGV0ZWQuCisgICAgICAg
IChKU0M6OmZpbmRCYXNpY0Jsb2NrV2l0aExlYWRlck9mZnNldCk6IERlbGV0ZWQuCisgICAgICAg
IChKU0M6OmJsb2NrQ29udGFpbnNCeXRlY29kZU9mZnNldCk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OmZpbmRCYXNpY0Jsb2NrRm9yQnl0ZWNvZGVPZmZzZXQpOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGUpOiBEZWxldGVkLgorICAgICAg
ICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5oOgorICAgICAgICAqIGJ5dGVj
b2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGluZXMuaDoKKyAgICAgICAgKEpTQzo6aXNW
YWxpZFJlZ2lzdGVyRm9yTGl2ZW5lc3MpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTW9k
aWZpY2F0aW9uU2V0LmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkJ5dGVjb2RlTW9kaWZpY2F0
aW9uU2V0OjphZGp1c3RPZmZzZXQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZU1vZGlmaWNhdGlv
blNldDo6YXBwbHlNb2RpZmljYXRpb24pOgorICAgICAgICAoSlNDOjpCeXRlY29kZU1vZGlmaWNh
dGlvblNldDo6ZXhlY3V0ZSk6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVNb2RpZmljYXRp
b25TZXQuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkJ5dGVjb2RlTW9kaWZpY2F0aW9uU2V0OjpC
eXRlY29kZU1vZGlmaWNhdGlvblNldCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlTW9kaWZpY2F0
aW9uU2V0OjppbnNlcnQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZU1vZGlmaWNhdGlvblNldDo6
cmVtb3ZlQnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZU1vZGlmaWNhdGlvblNldDo6
Z3JhcGgpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmg6CisgICAgICAgIChK
U0M6OmNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpjb21wdXRl
RGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3Bw
OgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjpoYW5kbGVyRm9ySW5kZXgpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6
OnZhbHVlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
OjpsaXZlbmVzc0FuYWx5c2lzU2xvdyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZHVtcEJ5
dGVjb2RlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpzaHJpbmtUb0ZpdCk6
IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6
OkNvZGVCbG9jazo6aXNDb25zdGFudFJlZ2lzdGVySW5kZXgpOgorICAgICAgICAoSlNDOjpDb2Rl
QmxvY2s6OmxpdmVuZXNzQW5hbHlzaXMpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmxpdmVD
YWxsZWVMb2NhbHNBdFlpZWxkKTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29kZS9IYW5kbGVy
SW5mby5oOgorICAgICAgICAoSlNDOjpIYW5kbGVySW5mb0Jhc2U6OmhhbmRsZXJGb3JJbmRleCk6
CisgICAgICAgICogYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmNwcDoKKyAgICAgICAgKEpT
Qzo6Z2V0SnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OmNvbXB1
dGVQcmVjaXNlSnVtcFRhcmdldHNJbnRlcm5hbCk6CisgICAgICAgIChKU0M6OmNvbXB1dGVQcmVj
aXNlSnVtcFRhcmdldHMpOgorICAgICAgICAoSlNDOjpyZWNvbXB1dGVQcmVjaXNlSnVtcFRhcmdl
dHMpOgorICAgICAgICAoSlNDOjpmaW5kSnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldCk6Cisg
ICAgICAgICogYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmg6CisgICAgICAgICogYnl0ZWNv
ZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9j
azo6aGFuZGxlckZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2Rl
QmxvY2s6OmhhbmRsZXJGb3JJbmRleCk6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2Nr
OjphcHBseU1vZGlmaWNhdGlvbik6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxv
Y2suaDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRTdHJpbmdKdW1wVGFibGU6Om9mZnNldEZvclZh
bHVlKToKKyAgICAgICAgKiBieXRlY29kZS9WaXJ0dWFsUmVnaXN0ZXIuaDoKKyAgICAgICAgKiBi
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUdlbmVyYXRvcjo6Z2VuZXJhdGUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6
Qnl0ZWNvZGVHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dENvbXBsZXhQb3BTY29wZXMpOgorICAgICAgICAoSlNDOjpwcmVwYXJlSnVtcFRhYmxlRm9yU3Ry
aW5nU3dpdGNoKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRZaWVsZFBv
aW50KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRTYXZlKToKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXN1bWUpOgorICAgICAgICAqIGJ5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVy
YXRvcjo6Z2VuZXJhdG9yRnJhbWVSZWdpc3Rlcik6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlv
bnMuY3BwOgorICAgICAgICAqIGdlbmVyYXRlLWJ5dGVjb2RlLWZpbGVzOgorICAgICAgICAqIGlu
dGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpTQzo6ZmluZEV4Y2VwdGlvbkhh
bmRsZXIpOgorICAgICAgICAoSlNDOjpHZXRDYXRjaEhhbmRsZXJGdW5jdG9yOjpvcGVyYXRvcigp
KToKKyAgICAgICAgKEpTQzo6VW53aW5kRnVuY3Rvcjo6b3BlcmF0b3IoKSk6CisgICAgICAgICog
aW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaDoKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnBy
ZXRlcklubGluZXMuaDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1ByZWNpc2VKdW1wVGFyZ2V0cy5oLgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6Z2V0T3Bj
b2RlSUQpOgorICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZh
dGVDb21waWxlTWFpblBhc3MpOiBEZWxldGVkLgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAg
ICAgKiBqaXQvSklUT3Bjb2Rlcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9zYXZl
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3Jlc3VtZSk6IERlbGV0ZWQu
CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc206CisgICAgICAgICogcGFy
c2VyL1BhcnNlci5jcHA6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUlu
bmVyKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlR2VuZXJhdG9yRnVu
Y3Rpb25Tb3VyY2VFbGVtZW50cyk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+Ojpj
cmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmg6Cisg
ICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpTTE9X
X1BBVEhfREVDTCk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMu
aDoKKyAgICAgICAgKiBydW50aW1lL0dlbmVyYXRvckZyYW1lLmNwcDogUmVtb3ZlZC4KKyAgICAg
ICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OkdlbmVyYXRvckZyYW1lKTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OmZpbmlzaENyZWF0aW9uKTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OmNyZWF0ZVN0cnVjdHVyZSk6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpjcmVhdGUpOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpHZW5lcmF0b3JGcmFtZTo6c2F2ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkdlbmVyYXRv
ckZyYW1lOjpyZXN1bWUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6
dmlzaXRDaGlsZHJlbik6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9HZW5lcmF0b3JGcmFt
ZS5oOiBSZW1vdmVkLgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6bG9jYWxzKTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OmxvY2FsQXQpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6b2Zmc2V0T2ZMb2NhbHMpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6YWxsb2NhdGlvblNpemVGb3JMb2NhbHMpOiBE
ZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6Vk0p
OiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKyAgICAgICAgKiB0ZXN0cy9zdHJl
c3MvZ2VuZXJhdG9yLWZpYi1mdGwtYW5kLWFycmF5LmpzOiBBZGRlZC4KKyAgICAgICAgKGZpYik6
CisgICAgICAgICogdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLWFuZC1vYmplY3QuanM6
IEFkZGVkLgorICAgICAgICAoZmliKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvZ2VuZXJhdG9y
LWZpYi1mdGwtYW5kLXN0cmluZy5qczogQWRkZWQuCisgICAgICAgIChmaWIpOgorICAgICAgICAq
IHRlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC5qczogQWRkZWQuCisgICAgICAgIChmaWIp
OgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZnJhbWUtZW1wdHkuanM6IEFkZGVk
LgorICAgICAgICAoc2hvdWxkVGhyb3cpOgorICAgICAgICAoc2hvdWxkVGhyb3cuZmliKToKKyAg
ICAgICAgKiB0ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXJlZHVjZWQtc2F2ZS1wb2ludC1wdXQtdG8t
c2NvcGUuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoZ2VuKToKKyAg
ICAgICAgKiB0ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXRyYW5zZmVyLXJlZ2lzdGVyLWJleW9uZC1t
dXRpcGxlLXlpZWxkcy5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgIChn
ZW4pOgorCiAyMDE2LTA3LTIwICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29t
PgogCiAgICAgICAgIFtFUzddIEludHJvZHVjZSBleHBvbmVudGlhdGlvbiBleHByZXNzaW9uCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmlu
ZGV4IDFjMjlhZDhmOTA2NzIxN2QwOWMxYjQ0NzVmYjhjOGJlMTNlYzY3ZTMuLjJlY2QxMmY0ZjJk
OWEyOWM2YjUyMjdhYTY5MzE2NmY4NDFjZTFmY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTYt
MDctMjEgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAg
W0RGR11bRlRMXSBJbXBsZW1lbnQgRVM2IEdlbmVyYXRvcnMgaW4gREZHIC8gRlRMCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTI3MjMKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9GYXN0Qml0VmVj
dG9yLmg6CisgICAgICAgIChXVEY6OkZhc3RCaXRWZWN0b3I6OkZhc3RCaXRWZWN0b3IpOgorCiAy
MDE2LTA3LTIwICBSYWplZXYgTWlzcmEgIDxyYWplZXZtaXNyYWZvcmFwcGxlQGdtYWlsLmNvbT4K
IAogICAgICAgICBSZW1vdmUgdW5uZWNlc3NhcnkgaWYgY2hlY2sgZnJvbSBQYXJraW5nTG90LmNw
cApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDZmZTBhNWZlMGNjY2VhYTY4
YmUwNjBiMDdmM2NjZmI3ZDk1NzNhOTIuLjY4YjIyYTc4MmY3ZmQ1NTZmOGY4NDM1NmM3YzJkNWFk
NzE5YjRhMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4
dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTE3OSw2ICsx
NzksOCBAQCBzZXQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIGJ5dGVjb2RlL0FycmF5QWxs
b2NhdGlvblByb2ZpbGUuY3BwCiAgICAgYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmNwcAogICAgIGJ5
dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5jcHAKKyAgICBieXRlY29kZS9CeXRlY29kZUdlbmVy
YXRvcmlmaWNhdGlvbi5jcHAKKyAgICBieXRlY29kZS9CeXRlY29kZU1vZGlmaWNhdGlvblNldC5j
cHAKICAgICBieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmNwcAogICAgIGJ5dGVj
b2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAKICAgICBieXRlY29kZS9DYWxsRWRnZS5j
cHAKQEAgLTY1Nyw3ICs2NTksNiBAQCBzZXQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIHJ1
bnRpbWUvRnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlLmNwcAogICAgIHJ1bnRpbWUvRnVuY3Rpb25Q
cm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9GdW5jdGlvblJhcmVEYXRhLmNwcAotICAgIHJ1bnRp
bWUvR2VuZXJhdG9yRnJhbWUuY3BwCiAgICAgcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvbkNvbnN0
cnVjdG9yLmNwcAogICAgIHJ1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3BwCiAg
ICAgcnVudGltZS9HZW5lcmF0b3JQcm90b3R5cGUuY3BwCkBAIC05NzIsNiArOTczLDEwIEBAIGFk
ZF9jdXN0b21fY29tbWFuZCgKICAgICBDT01NQU5EICR7UFlUSE9OX0VYRUNVVEFCTEV9ICR7SkFW
QVNDUklQVENPUkVfRElSfS9nZW5lcmF0ZS1ieXRlY29kZS1maWxlcyAtLWJ5dGVjb2Rlc19oICR7
REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vQnl0ZWNvZGVzLmggLS1pbml0X2J5
dGVjb2Rlc19hc20gJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9Jbml0Qnl0
ZWNvZGVzLmFzbSAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpz
b24KICAgICBWRVJCQVRJTSkKIAorbGlzdChBUFBFTkQgSmF2YVNjcmlwdENvcmVfSEVBREVSUwor
ICAgICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vQnl0ZWNvZGVzLmgKKykK
KwogYWRkX2N1c3RvbV9jb21tYW5kKAogICAgIE9VVFBVVCAke0RFUklWRURfU09VUkNFU19KQVZB
U0NSSVBUQ09SRV9ESVJ9L0xMSW50RGVzaXJlZE9mZnNldHMuaAogICAgIE1BSU5fREVQRU5ERU5D
WSAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vb2ZmbGluZWFzbS9nZW5lcmF0ZV9vZmZzZXRfZXh0cmFj
dG9yLnJiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDZiNzY2OGQ0MDRjM2M0MDk2
ZDk4NGI0NGRjMWYwMGRlMzdmM2E0OGMuLjU2OTA5NjU0OWNmYzFkODc0ZGQyZjYwMGE4MzcyOTQ3
Y2NiNmQ3NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMjUwLDggKzEyNTAs
NiBAQAogCQk3MDlGQjg2QzFBRTMzNUM2MDAzOUQwNjkgLyogV2Vha1NldFByb3RvdHlwZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzA5RkI4NjYxQUUz
MzVDNjAwMzlEMDY5IC8qIFdlYWtTZXRQcm90b3R5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MEIwQTlEMTFBOUI2NjQ2MDAwMTMwNkEgLyog
UnVudGltZUZsYWdzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3MEIwQTlEMDFBOUI2NjIwMDAwMTMwNkEgLyogUnVudGltZUZsYWdzLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzBCNzkxOTExQzAyNEEx
MzAwMjQ4MUUyIC8qIFNvdXJjZUNvZGVLZXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDcwQjc5MThFMUMwMjQ0QzkwMDI0ODFFMiAvKiBTb3VyY2VDb2Rl
S2V5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJ
NzBCNzkxOTIxQzAyNEEyMzAwMjQ4MUUyIC8qIEdlbmVyYXRvckZyYW1lLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwQjc5MTgzMUMwMjQ0MzIwMDI0
ODFFMiAvKiBHZW5lcmF0b3JGcmFtZS5jcHAgKi87IH07Ci0JCTcwQjc5MTkzMUMwMjRBMjgwMDI0
ODFFMiAvKiBHZW5lcmF0b3JGcmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNzBCNzkxODQxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZyYW1l
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzBC
NzkxOTQxQzAyNEEyODAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBCNzkxODUx
QzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwICovOyB9
OwogCQk3MEI3OTE5NTFDMDI0QTI4MDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1
Y3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBC
NzkxODYxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MEI3OTE5
NjFDMDI0QTI4MDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBCNzkxODcxQzAyNDQz
MjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcCAqLzsgfTsKQEAgLTIw
MjcsNiArMjAyNSwxMSBAQAogCQlFMThFM0E1OTBERjkyNzhDMDBEOTBCMzQgLyogVk0uY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTE4RTNBNTcwREY5
Mjc4QzAwRDkwQjM0IC8qIFZNLmNwcCAqLzsgfTsKIAkJRTMxOENCQzAxQjhBRUY1MTAwQTI5MjlE
IC8qIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMThDQkJFMUI4QUVGNTEwMEEyOTI5RCAvKiBKU01vZHVs
ZU5hbWVzcGFjZU9iamVjdC5jcHAgKi87IH07CiAJCUUzMThDQkMxMUI4QUVGNTEwMEEyOTI5RCAv
KiBKU01vZHVsZU5hbWVzcGFjZU9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTMxOENCQkYxQjhBRUY1MTAwQTI5MjlEIC8qIEpTTW9kdWxlTmFt
ZXNwYWNlT2JqZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJRTMyOERBRTcxRDM4RDAwNDAwMUEyNTI5IC8qIEJ5dGVjb2RlR2VuZXJhdG9yaWZp
Y2F0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUzRDI2NDI2MUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5j
cHAgKi87IH07CisJCUUzMjhEQUU4MUQzOEQwMDUwMDFBMjUyOSAvKiBCeXRlY29kZUdlbmVyYXRv
cmlmaWNhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTNEMjY0MjcxRDM4QzA0MjAwMEJFMTc0IC8qIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9u
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTMy
OERBRTkxRDM4RDAwNTAwMUEyNTI5IC8qIEJ5dGVjb2RlR3JhcGguaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzRDI2NDI4MUQzOEMwNDIwMDBCRTE3NCAv
KiBCeXRlY29kZUdyYXBoLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJRTMyOERBRUExRDM4RDAwNTAwMUEyNTI5IC8qIEJ5dGVjb2RlTW9kaWZpY2F0
aW9uU2V0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUzRDI2NDI5MUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRlY29kZU1vZGlmaWNhdGlvblNldC5jcHAg
Ki87IH07CisJCUUzMjhEQUVCMUQzOEQwMDUwMDFBMjUyOSAvKiBCeXRlY29kZU1vZGlmaWNhdGlv
blNldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNE
MjY0MkExRDM4QzA0MjAwMEJFMTc0IC8qIEJ5dGVjb2RlTW9kaWZpY2F0aW9uU2V0LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTMzNjM3QTUxQjYz
MjIwMjAwRUUwODQwIC8qIFJlZmxlY3RPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMzNjM3QTMxQjYzMjIwMjAwRUUwODQwIC8qIFJlZmxl
Y3RPYmplY3QuY3BwICovOyB9OwogCQlFMzM2MzdBNjFCNjMyMjAyMDBFRTA4NDAgLyogUmVmbGVj
dE9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTMzNjM3QTQxQjYzMjIwMjAwRUUwODQwIC8qIFJlZmxlY3RPYmplY3QuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzNCM0UyNjFCN0FCRDc1MDA0
OERCMkUgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0Lmx1dC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMzQjNFMjUxQjdBQkQ3NTAwNDhE
QjJFIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5sdXQuaCAqLzsgfTsKQEAgLTIw
NTEsNiArMjA1NCw3IEBACiAJCUUzNzk0RTc1MUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFs
eXplci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
Mzc5NEU3MzFCNzdFQjk3MDA1NTQzQUUgLyogTW9kdWxlQW5hbHl6ZXIuY3BwICovOyB9OwogCQlF
Mzc5NEU3NjFCNzdFQjk3MDA1NTQzQUUgLyogTW9kdWxlQW5hbHl6ZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNzk0RTc0MUI3N0VCOTcwMDU1NDNB
RSAvKiBNb2R1bGVBbmFseXplci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUUzOTYzQ0VFMUI3M0Y3NTAwMEVCNENFNSAvKiBOb2Rlc0FuYWx5emVN
b2R1bGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTM5NjNDRUMxQjczRjc1MDAwRUI0Q0U1IC8qIE5vZGVzQW5hbHl6ZU1vZHVsZS5jcHAgKi87IH07
CisJCUUzOUQ0NUY1MUQzOTAwNTYwMEIzQjM3NyAvKiBJbnRlcnByZXRlcklubGluZXMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOUQ5RDg0MUQzOTAw
MDYwMDY2NzI4MiAvKiBJbnRlcnByZXRlcklubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzlEQTRBNjFCN0U4QjdDMDA4NEYzM0EgLyog
SlNNb2R1bGVSZWNvcmQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTM5REE0QTQxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmNwcCAq
LzsgfTsKIAkJRTM5REE0QTcxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzlEQTRBNTFCN0U4
QjdDMDA4NEYzM0EgLyogSlNNb2R1bGVSZWNvcmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFM0QyMzlDODFCODI5QzFDMDBCQkVGNjcgLyogSlNN
b2R1bGVFbnZpcm9ubWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFM0QyMzlDNjFCODI5QzFDMDBCQkVGNjcgLyogSlNNb2R1bGVFbnZpcm9ubWVu
dC5jcHAgKi87IH07CkBAIC0zNDQ4LDggKzM0NTIsNiBAQAogCQk3MDlGQjg2NTFBRTMzNUM2MDAz
OUQwNjkgLyogV2Vha1NldFByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBXZWFrU2V0UHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNzA5RkI4NjYxQUUzMzVDNjAwMzlEMDY5IC8qIFdlYWtTZXRQcm90b3R5cGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vha1NldFByb3RvdHlwZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3MEIwQTlEMDFBOUI2NjIwMDAwMTMwNkEgLyogUnVudGlt
ZUZsYWdzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJ1bnRpbWVGbGFncy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3MEI3OTE4MzFDMDI0NDMyMDAyNDgxRTIg
LyogR2VuZXJhdG9yRnJhbWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gR2VuZXJhdG9yRnJhbWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3MEI3
OTE4NDFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnJhbWUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gR2VuZXJhdG9yRnJhbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNzBCNzkxODUxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uQ29u
c3RydWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR2VuZXJh
dG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTcwQjc5MTg2MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9y
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdlbmVyYXRvckZ1bmN0aW9uQ29u
c3RydWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzBCNzkxODcxQzAyNDQz
MjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQyOTIsMTAgKzQyOTQsMTYgQEAKIAkJRTM3
OTRFNzMxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1vZHVsZUFuYWx5emVyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRTM3OTRFNzQxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5
emVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vZHVsZUFuYWx5emVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOTYzQ0VDMUI3M0Y3NTAwMEVCNENFNSAv
KiBOb2Rlc0FuYWx5emVNb2R1bGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gTm9kZXNBbmFseXplTW9kdWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJRTM5RDlEODQxRDM5MDAwNjAwNjY3MjgyIC8qIEludGVycHJldGVySW5saW5lcy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRlcnByZXRlcklubGluZXMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM5REE0QTQxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9k
dWxlUmVjb3JkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTW9k
dWxlUmVjb3JkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM5REE0QTUxQjdF
OEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEpTTW9kdWxlUmVjb3JkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUUzRDIzOUM2MUI4MjlDMUMwMEJCRUY2NyAvKiBKU01vZHVsZUVudmlyb25tZW50LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTW9kdWxlRW52aXJvbm1lbnQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0QyMzlDNzFCODI5QzFDMDBCQkVGNjcg
LyogSlNNb2R1bGVFbnZpcm9ubWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBKU01vZHVsZUVudmlyb25tZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUz
RDI2NDI2MUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCeXRlY29kZUdlbmVyYXRvcmlm
aWNhdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzRDI2NDI3MUQzOEMw
NDIwMDBCRTE3NCAvKiBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlFM0QyNjQyODFEMzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNv
ZGVHcmFwaC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCeXRlY29kZUdyYXBo
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzRDI2NDI5MUQzOEMwNDIwMDBCRTE3
NCAvKiBCeXRlY29kZU1vZGlmaWNhdGlvblNldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBCeXRlY29kZU1vZGlmaWNhdGlvblNldC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUUzRDI2NDJBMUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRlY29kZU1vZGlm
aWNhdGlvblNldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCeXRlY29kZU1v
ZGlmaWNhdGlvblNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0VGODg3MjFC
NjZERjIzMDAzRjI2Q0IgLyogSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNFRjg4NzMxQjY2REYyMzAwM0YyNkNCIC8qIEpT
UHJvcGVydHlOYW1lSXRlcmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlF
NDlEQzE0OTEyRUYyNjFBMDAxODRBMUYgLyogU291cmNlUHJvdmlkZXJDYWNoZUl0ZW0uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU291cmNlUHJvdmlkZXJDYWNoZUl0ZW0uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUwMTEsNiArNTAxOSw3IEBACiAJCTE0MjlE
NzdBMEVEMjBENzMwMEI4OTYxOSAvKiBpbnRlcnByZXRlciAqLyA9IHsKIAkJCWlzYSA9IFBCWEdy
b3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJRTM5RDlEODQxRDM5MDAwNjAwNjY3MjgyIC8qIElu
dGVycHJldGVySW5saW5lcy5oICovLAogCQkJCTBGNTVGMEYxMTREMTA2MzYwMEFDNzY0OSAvKiBB
YnN0cmFjdFBDLmNwcCAqLywKIAkJCQkwRjU1RjBGMjE0RDEwNjM2MDBBQzc2NDkgLyogQWJzdHJh
Y3RQQy5oICovLAogCQkJCTE0MjlEODVCMEVEMjE4RTkwMEI4OTYxOSAvKiBDTG9vcFN0YWNrLmNw
cCAqLywKQEAgLTU2ODIsOCArNTY5MSw2IEBACiAJCQkJRjY5MkE4NUQwMjU1NTk3RDAxRkY2MEY3
IC8qIEZ1bmN0aW9uUHJvdG90eXBlLmggKi8sCiAJCQkJNjJEMkQzOEQxQURGMTAzRjAwMDIwNkMx
IC8qIEZ1bmN0aW9uUmFyZURhdGEuY3BwICovLAogCQkJCTYyRDJEMzhFMUFERjEwM0YwMDAyMDZD
MSAvKiBGdW5jdGlvblJhcmVEYXRhLmggKi8sCi0JCQkJNzBCNzkxODMxQzAyNDQzMjAwMjQ4MUUy
IC8qIEdlbmVyYXRvckZyYW1lLmNwcCAqLywKLQkJCQk3MEI3OTE4NDFDMDI0NDMyMDAyNDgxRTIg
LyogR2VuZXJhdG9yRnJhbWUuaCAqLywKIAkJCQk3MEI3OTE4NTFDMDI0NDMyMDAyNDgxRTIgLyog
R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAgKi8sCiAJCQkJNzBCNzkxODYxQzAyNDQz
MjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaCAqLywKIAkJCQk3MEI3
OTE4NzFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3BwICov
LApAQCAtNjU2NSw2ICs2NTcyLDExIEBACiAJCTk2OUEwNzhGMEVEMUQzQUUwMEYxRjY4MSAvKiBi
eXRlY29kZSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJ
RTNEMjY0MjYxRDM4QzA0MjAwMEJFMTc0IC8qIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNw
cCAqLywKKwkJCQlFM0QyNjQyNzFEMzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNvZGVHZW5lcmF0b3Jp
ZmljYXRpb24uaCAqLywKKwkJCQlFM0QyNjQyODFEMzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNvZGVH
cmFwaC5oICovLAorCQkJCUUzRDI2NDI5MUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRlY29kZU1vZGlm
aWNhdGlvblNldC5jcHAgKi8sCisJCQkJRTNEMjY0MkExRDM4QzA0MjAwMEJFMTc0IC8qIEJ5dGVj
b2RlTW9kaWZpY2F0aW9uU2V0LmggKi8sCiAJCQkJNTM3MEI0RjMxQkYyNUVBMjAwNUM0MEZDIC8q
IEFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2UuY3BwICovLAogCQkJ
CTUzNzBCNEY0MUJGMjVFQTIwMDVDNDBGQyAvKiBBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1
ZVdhdGNocG9pbnRCYXNlLmggKi8sCiAJCQkJMEY4MzM1QjQxNjM5QzFFMzAwMTQ0M0I1IC8qIEFy
cmF5QWxsb2NhdGlvblByb2ZpbGUuY3BwICovLApAQCAtNzExOCw2ICs3MTMwLDcgQEAKIAkJCQkw
RkVDODUyRDFCREFDREFDMDA4MEZGNzQgLyogQjNQcm9jZWR1cmVJbmxpbmVzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRkVDODVCRDFCRTE0NjJGMDA4MEZGNzQgLyogQjNSZWR1Y2VTdHJlbmd0aC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQzg1MzExQkRBQ0RBQzAwODBGRjc0IC8qIEIzU3RhY2tt
YXBTcGVjaWFsLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzI4REFFODFEMzhEMDA1MDAxQTI1Mjkg
LyogQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUM4
NTM1MUJEQUNEQUMwMDgwRkY3NCAvKiBCM1Nsb3RCYXNlVmFsdWUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGRUM4NTM2MUJEQUNEQUMwMDgwRkY3NCAvKiBCM1N1Y2Nlc3NvckNvbGxlY3Rpb24uaCBp
biBIZWFkZXJzICovLAogCQkJCTBGRUM4NTM4MUJEQUNEQUMwMDgwRkY3NCAvKiBCM1N3aXRjaENh
c2UuaCBpbiBIZWFkZXJzICovLApAQCAtNzM4MCw3ICs3MzkzLDYgQEAKIAkJCQlBNzM3ODEwRTE3
OTlFQTJFMDA4MTc1MzMgLyogREZHTmF0dXJhbExvb3BzLmggaW4gSGVhZGVycyAqLywKIAkJCQk4
NkVDQTNFQTEzMkRFRjFDMDAyQjJBRDcgLyogREZHTm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEZGQjkyMUIxNkQwMkYwMTAwNTVBNURCIC8qIERGR05vZGVBbGxvY2F0b3IuaCBpbiBIZWFkZXJz
ICovLAotCQkJCTcwQjc5MTkzMUMwMjRBMjgwMDI0ODFFMiAvKiBHZW5lcmF0b3JGcmFtZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEZBNTgxQkIxNTBFOTUzMDAwQjlBMkQ5IC8qIERGR05vZGVGbGFn
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYzMDBCNzgxOEFCMDUxMTAwQTZENzJFIC8qIERGR05v
ZGVPcmlnaW4uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQTU4MUJDMTUwRTk1MzAwMEI5QTJEOSAv
KiBERkdOb2RlVHlwZS5oIGluIEhlYWRlcnMgKi8sCkBAIC03Mzk1LDYgKzc0MDcsNyBAQAogCQkJ
CTBGRDhBMzI2MTdENTFGNTcwMENBMkM0MCAvKiBERkdPU1JFbnRyeXBvaW50Q3JlYXRpb25QaGFz
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDMDk3NkExNDY4QTZGNzAwQ0YyNDQyIC8qIERGR09T
UkV4aXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjM1QkVDMTcxNzhFNzMwMDY5MEM3RiAvKiBE
RkdPU1JFeGl0QmFzZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM5RDQ1RjUxRDM5MDA1NjAwQjNC
Mzc3IC8qIEludGVycHJldGVySW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGQjkyMUMx
NkQwMkYxMTAwNTVBNURCIC8qIERGR09TUkV4aXRDb21waWxhdGlvbkluZm8uaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGQzA5NzcxMTQ2OTNBRjUwMENGMjQ0MiAvKiBERkdPU1JFeGl0Q29tcGlsZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGNzAyNUFBMTcxNEIwRkMwMDM4MkMwRSAvKiBERkdPU1JF
eGl0Q29tcGlsZXJDb21tb24uaCBpbiBIZWFkZXJzICovLApAQCAtNzY1NCw2ICs3NjY3LDcgQEAK
IAkJCQlFMzNCM0UyNjFCN0FCRDc1MDA0OERCMkUgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
T2JqZWN0Lmx1dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTUzMjQzOEMxODU2ODMzNTAwMkVENjky
IC8qIEluc3BlY3RvclByb3RvY29sT2JqZWN0cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU1RDkz
QUMxODUxNEY3OTAwNDAwREVEIC8qIEluc3BlY3RvclByb3RvY29sVHlwZXMuaCBpbiBIZWFkZXJz
ICovLAorCQkJCUUzMjhEQUVCMUQzOEQwMDUwMDFBMjUyOSAvKiBCeXRlY29kZU1vZGlmaWNhdGlv
blNldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTUwRTRCNjIxODgwOURENTAwNjhBNDZEIC8qIElu
c3BlY3RvclJ1bnRpbWVBZ2VudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU5M0NGODMxODQwMzc3
MTAwQkZDRTI3IC8qIEluc3BlY3RvclZhbHVlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTY5QTA3
OTkwRUQxRDNBRTAwRjFGNjgxIC8qIEluc3RydWN0aW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTc3
ODIsNiArNzc5Niw3IEBACiAJCQkJRTMzRjUwODExQjg0MjlBNDAwNDEzODU2IC8qIEpTSW50ZXJu
YWxQcm9taXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjYxODMyQTFDNDVCRjA3MDA3MjQ1MEIg
LyogQWlyQ0NhbGxpbmdDb252ZW50aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMzNGNTA3OTFC
ODQyMjU3MDA0MTM4NTYgLyogSlNJbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvci5oIGluIEhlYWRl
cnMgKi8sCisJCQkJRTMyOERBRTkxRDM4RDAwNTAwMUEyNTI5IC8qIEJ5dGVjb2RlR3JhcGguaCBp
biBIZWFkZXJzICovLAogCQkJCUUzM0Y1MDg3MUI4NDQ5RUYwMDQxMzg1NiAvKiBKU0ludGVybmFs
UHJvbWlzZUNvbnN0cnVjdG9yLmx1dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTMzRjUwODUxQjg0
MzdBMDAwNDEzODU2IC8qIEpTSW50ZXJuYWxQcm9taXNlRGVmZXJyZWQuaCBpbiBIZWFkZXJzICov
LAogCQkJCUUzM0Y1MDc1MUI4NDIxQzAwMDQxMzg1NiAvKiBKU0ludGVybmFsUHJvbWlzZVByb3Rv
dHlwZS5oIGluIEhlYWRlcnMgKi8sCkBAIC04NzIzLDYgKzg3MzgsNyBAQAogCQkJCTE0N0YzOUJE
MTA3RUMzNzYwMDQyN0E0OCAvKiBBcmdMaXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNzQz
QkFBMTZCODgyNDkwMDlGOTI3NyAvKiBBUk02NERpc2Fzc2VtYmxlci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk4NkQzQjJDMzEwMTU2QkRFMDAyODY1RTcgLyogQVJNQXNzZW1ibGVyLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCUUzMjhEQUU3MUQzOEQwMDQwMDFBMjUyOSAvKiBCeXRlY29kZUdlbmVy
YXRvcmlmaWNhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2NUMwMjg1MDE3MTc5NUUyMDAz
NTFFMzUgLyogQVJNdjdEaXNhc3NlbWJsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNjVDMDI4
NUMxNzE3OTY2ODAwMzUxRTM1IC8qIEFSTXY3RE9wY29kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkwRjgzMzVCNzE2MzlDMUU2MDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAg
aW4gU291cmNlcyAqLywKQEAgLTkwNTcsNiArOTA3Myw3IEBACiAJCQkJMEYyNUYxQjExODE2MzVG
MzAwNTIyRjM5IC8qIEZUTFNsb3dQYXRoQ2FsbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjMz
OERGMTFCRTkzQUQxMDAxM0M4OEYgLyogQjNTdGFja21hcFZhbHVlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGMjVGMUIzMTgxNjM1RjMwMDUyMkYzOSAvKiBGVExTbG93UGF0aENhbGxLZXkuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJRTMyOERBRUExRDM4RDAwNTAwMUEyNTI5IC8qIEJ5dGVjb2Rl
TW9kaWZpY2F0aW9uU2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQzMTlEQTAzMUMxQkU0MEEw
MDFEMjYwQiAvKiBCM0xvd2VyTWFjcm9zQWZ0ZXJPcHRpbWl6YXRpb25zLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTBGRUEwQTE2MTcwNkJCOTAwMEJCNzIyQyAvKiBGVExTdGF0ZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkwRjIzNUJFMTE3MTc4RTFDMDA2OTBDN0YgLyogRlRMVGh1bmtzLmNwcCBp
biBTb3VyY2VzICovLApAQCAtOTQ2MCw3ICs5NDc3LDYgQEAKIAkJCQk3OUVFMEJGRjFCNEFGQjg1
MDAwMzg1QzkgLyogVmFyaWFibGVFbnZpcm9ubWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkw
RjZDNzM1MDFBQzlGOTlGMDBCRTE2ODIgLyogVmFyaWFibGVXcml0ZUZpcmVEZXRhaWwuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMEZFMDUwMkMxQUE5MDk1NjAwRDMzQjMzIC8qIFZhck9mZnNldC5j
cHAgaW4gU291cmNlcyAqLywKLQkJCQk3MEI3OTE5MjFDMDI0QTIzMDAyNDgxRTIgLyogR2VuZXJh
dG9yRnJhbWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyMEMyNTkxQTgwMTNBQjAwREEzMjI5
IC8qIFZpcnR1YWxSZWdpc3Rlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMThFM0E1OTBERjky
NzhDMDBEOTBCMzQgLyogVk0uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkU1OTMyQTcxODNDNUEy
NjAwQTFFQ0NDIC8qIFZNRW50cnlTY29wZS5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9HZW5lcmF0b3JQcm90b3R5cGUuanMgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvR2VuZXJhdG9yUHJvdG90eXBlLmpzCmluZGV4
IDNjMTQwNjg3ZGZjN2UwMGVmZTkxYWU4MGIyYWM2NzZmYTliZjQ4ZjQuLjQ5OWRiZDM5MmU4MzEz
ZGNkZDg2ZWM4YzE2MDU2OWQ3ZDZmNTQ5YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9idWlsdGlucy9HZW5lcmF0b3JQcm90b3R5cGUuanMKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J1aWx0aW5zL0dlbmVyYXRvclByb3RvdHlwZS5qcwpAQCAtNTEsNyArNTEsNyBAQCBm
dW5jdGlvbiBnZW5lcmF0b3JSZXN1bWUoZ2VuZXJhdG9yLCBzZW50VmFsdWUsIHJlc3VtZU1vZGUp
CiAgICAgfSBlbHNlIHsKICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgIGdlbmVyYXRvci5AZ2Vu
ZXJhdG9yU3RhdGUgPSBAR2VuZXJhdG9yU3RhdGVFeGVjdXRpbmc7Ci0gICAgICAgICAgICB2YWx1
ZSA9IGdlbmVyYXRvci5AZ2VuZXJhdG9yTmV4dC5AY2FsbChnZW5lcmF0b3IuQGdlbmVyYXRvclRo
aXMsIGdlbmVyYXRvciwgc3RhdGUsIHNlbnRWYWx1ZSwgcmVzdW1lTW9kZSk7CisgICAgICAgICAg
ICB2YWx1ZSA9IGdlbmVyYXRvci5AZ2VuZXJhdG9yTmV4dC5AY2FsbChnZW5lcmF0b3IuQGdlbmVy
YXRvclRoaXMsIGdlbmVyYXRvciwgc3RhdGUsIHNlbnRWYWx1ZSwgcmVzdW1lTW9kZSwgZ2VuZXJh
dG9yLkBnZW5lcmF0b3JGcmFtZSk7CiAgICAgICAgICAgICBpZiAoZ2VuZXJhdG9yLkBnZW5lcmF0
b3JTdGF0ZSA9PT0gQEdlbmVyYXRvclN0YXRlRXhlY3V0aW5nKSB7CiAgICAgICAgICAgICAgICAg
Z2VuZXJhdG9yLkBnZW5lcmF0b3JTdGF0ZSA9IEBHZW5lcmF0b3JTdGF0ZUNvbXBsZXRlZDsKICAg
ICAgICAgICAgICAgICBkb25lID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5jcHAKaW5kZXggN2YxN2MwZWYxMGI0MzNm
YWM4ZjU4Y2IzYjljYTVkNGQwMTViYmEwOC4uNjI1NGY5MDZiMmJkOTA0ZDFkOTNmYTkwMjRjYzkz
YTkwNzQ2OGI1ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlQmFzaWNCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlQmFzaWNCbG9jay5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJCeXRl
Y29kZUJhc2ljQmxvY2suaCIKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIklu
dGVycHJldGVySW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJQ
cmVjaXNlSnVtcFRhcmdldHMuaCIKIApAQCAtMTA1LDE1ICsxMDYsMjEgQEAgc3RhdGljIGJvb2wg
aXNKdW1wVGFyZ2V0KE9wY29kZUlEIG9wY29kZUlELCBjb25zdCBWZWN0b3I8dW5zaWduZWQsIDMy
PiYganVtcFRhcmcKICAgICByZXR1cm4gc3RkOjpiaW5hcnlfc2VhcmNoKGp1bXBUYXJnZXRzLmJl
Z2luKCksIGp1bXBUYXJnZXRzLmVuZCgpLCBieXRlY29kZU9mZnNldCk7CiB9CiAKLXN0YXRpYyB2
b2lkIGxpbmtCbG9ja3MoQnl0ZWNvZGVCYXNpY0Jsb2NrKiBwcmVkZWNlc3NvciwgQnl0ZWNvZGVC
YXNpY0Jsb2NrKiBzdWNjZXNzb3IpCi17Ci0gICAgcHJlZGVjZXNzb3ItPmFkZFN1Y2Nlc3Nvcihz
dWNjZXNzb3IpOwotfQotCi12b2lkIGNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzKENvZGVCbG9j
ayogY29kZUJsb2NrLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+
JiBiYXNpY0Jsb2NrcykKK3RlbXBsYXRlPHR5cGVuYW1lIEJsb2NrLCB0eXBlbmFtZSBJbnN0cnVj
dGlvbj4KK3ZvaWQgQnl0ZWNvZGVCYXNpY0Jsb2NrOjpjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2Nr
c0ludGVybmFsKEJsb2NrKiBjb2RlQmxvY2ssIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdp
biwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCwgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRl
Y29kZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9ja3MpCiB7CiAgICAgVmVjdG9yPHVuc2lnbmVkLCAz
Mj4ganVtcFRhcmdldHM7Ci0gICAgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhjb2RlQmxvY2ss
IGp1bXBUYXJnZXRzKTsKKyAgICBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKGNvZGVCbG9jaywg
aW5zdHJ1Y3Rpb25zQmVnaW4sIGluc3RydWN0aW9uQ291bnQsIGp1bXBUYXJnZXRzKTsKKworICAg
IGF1dG8gYXBwZW5kQmxvY2sgPSBbJl0gKHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxv
Y2s+JiYgYmxvY2spIHsKKyAgICAgICAgYmxvY2stPm1faW5kZXggPSBiYXNpY0Jsb2Nrcy5zaXpl
KCk7CisgICAgICAgIGJhc2ljQmxvY2tzLmFwcGVuZChXVEZNb3ZlKGJsb2NrKSk7CisgICAgfTsK
KworICAgIGF1dG8gbGlua0Jsb2NrcyA9IFsmXSAoQnl0ZWNvZGVCYXNpY0Jsb2NrKiBwcmVkZWNl
c3NvciwgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBzdWNjZXNzb3IpIHsKKyAgICAgICAgcHJlZGVjZXNz
b3ItPmFkZFN1Y2Nlc3NvcihzdWNjZXNzb3IpOworICAgICAgICBzdWNjZXNzb3ItPmFkZFByZWRl
Y2Vzc29yKHByZWRlY2Vzc29yKTsKKyAgICB9OwogCiAgICAgLy8gQ3JlYXRlIHRoZSBlbnRyeSBh
bmQgZXhpdCBiYXNpYyBibG9ja3MuCiAgICAgYmFzaWNCbG9ja3MucmVzZXJ2ZUNhcGFjaXR5KGp1
bXBUYXJnZXRzLnNpemUoKSArIDIpOwpAQCAtMTIyLDE5ICsxMjksMTcgQEAgdm9pZCBjb21wdXRl
Qnl0ZWNvZGVCYXNpY0Jsb2NrcyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgVmVjdG9yPHN0ZDo6dW5p
cXVlX3B0cjxCeXQKICAgICBhdXRvIGZpcnN0QmxvY2sgPSBzdGQ6Om1ha2VfdW5pcXVlPEJ5dGVj
b2RlQmFzaWNCbG9jaz4oMCwgMCk7CiAgICAgbGlua0Jsb2NrcyhlbnRyeS5nZXQoKSwgZmlyc3RC
bG9jay5nZXQoKSk7CiAKLSAgICBiYXNpY0Jsb2Nrcy5hcHBlbmQoV1RGTW92ZShlbnRyeSkpOwor
ICAgIGFwcGVuZEJsb2NrKFdURk1vdmUoZW50cnkpKTsKICAgICBCeXRlY29kZUJhc2ljQmxvY2sq
IGN1cnJlbnQgPSBmaXJzdEJsb2NrLmdldCgpOwotICAgIGJhc2ljQmxvY2tzLmFwcGVuZChXVEZN
b3ZlKGZpcnN0QmxvY2spKTsKKyAgICBhcHBlbmRCbG9jayhXVEZNb3ZlKGZpcnN0QmxvY2spKTsK
IAogICAgIGF1dG8gZXhpdCA9IHN0ZDo6bWFrZV91bmlxdWU8Qnl0ZWNvZGVCYXNpY0Jsb2NrPihC
eXRlY29kZUJhc2ljQmxvY2s6OkV4aXRCbG9jayk7CiAKICAgICBib29sIG5leHRJbnN0cnVjdGlv
bklzTGVhZGVyID0gZmFsc2U7CiAKICAgICBJbnRlcnByZXRlciogaW50ZXJwcmV0ZXIgPSBjb2Rl
QmxvY2stPnZtKCktPmludGVycHJldGVyOwotICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNC
ZWdpbiA9IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsKLSAgICB1bnNpZ25lZCBp
bnN0cnVjdGlvbkNvdW50ID0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5zaXplKCk7CiAgICAg
Zm9yICh1bnNpZ25lZCBieXRlY29kZU9mZnNldCA9IDA7IGJ5dGVjb2RlT2Zmc2V0IDwgaW5zdHJ1
Y3Rpb25Db3VudDspIHsKLSAgICAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnRlcnByZXRlci0+
Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25zQmVnaW5bYnl0ZWNvZGVPZmZzZXRdLnUub3Bjb2RlKTsK
KyAgICAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoaW5z
dHJ1Y3Rpb25zQmVnaW5bYnl0ZWNvZGVPZmZzZXRdKTsKICAgICAgICAgdW5zaWduZWQgb3Bjb2Rl
TGVuZ3RoID0gb3Bjb2RlTGVuZ3Roc1tvcGNvZGVJRF07CiAKICAgICAgICAgYm9vbCBjcmVhdGVk
QmxvY2sgPSBmYWxzZTsKQEAgLTE0Miw3ICsxNDcsNyBAQCB2b2lkIGNvbXB1dGVCeXRlY29kZUJh
c2ljQmxvY2tzKENvZGVCbG9jayogY29kZUJsb2NrLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5
dAogICAgICAgICBpZiAoaXNKdW1wVGFyZ2V0KG9wY29kZUlELCBqdW1wVGFyZ2V0cywgYnl0ZWNv
ZGVPZmZzZXQpIHx8IG5leHRJbnN0cnVjdGlvbklzTGVhZGVyKSB7CiAgICAgICAgICAgICBhdXRv
IG5ld0Jsb2NrID0gc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZUJhc2ljQmxvY2s+KGJ5dGVjb2Rl
T2Zmc2V0LCBvcGNvZGVMZW5ndGgpOwogICAgICAgICAgICAgY3VycmVudCA9IG5ld0Jsb2NrLmdl
dCgpOwotICAgICAgICAgICAgYmFzaWNCbG9ja3MuYXBwZW5kKFdURk1vdmUobmV3QmxvY2spKTsK
KyAgICAgICAgICAgIGFwcGVuZEJsb2NrKFdURk1vdmUobmV3QmxvY2spKTsKICAgICAgICAgICAg
IGNyZWF0ZWRCbG9jayA9IHRydWU7CiAgICAgICAgICAgICBuZXh0SW5zdHJ1Y3Rpb25Jc0xlYWRl
ciA9IGZhbHNlOwogICAgICAgICAgICAgYnl0ZWNvZGVPZmZzZXQgKz0gb3Bjb2RlTGVuZ3RoOwpA
QCAtMTY5LDggKzE3NCw3IEBAIHZvaWQgY29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MoQ29kZUJs
b2NrKiBjb2RlQmxvY2ssIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0CiAKICAgICAgICAgYm9v
bCBmYWxsc1Rocm91Z2ggPSB0cnVlOyAKICAgICAgICAgZm9yICh1bnNpZ25lZCBieXRlY29kZU9m
ZnNldCA9IGJsb2NrLT5sZWFkZXJCeXRlY29kZU9mZnNldCgpOyBieXRlY29kZU9mZnNldCA8IGJs
b2NrLT5sZWFkZXJCeXRlY29kZU9mZnNldCgpICsgYmxvY2stPnRvdGFsQnl0ZWNvZGVMZW5ndGgo
KTspIHsKLSAgICAgICAgICAgIGNvbnN0IEluc3RydWN0aW9uJiBjdXJyZW50SW5zdHJ1Y3Rpb24g
PSBpbnN0cnVjdGlvbnNCZWdpbltieXRlY29kZU9mZnNldF07Ci0gICAgICAgICAgICBPcGNvZGVJ
RCBvcGNvZGVJRCA9IGludGVycHJldGVyLT5nZXRPcGNvZGVJRChjdXJyZW50SW5zdHJ1Y3Rpb24u
dS5vcGNvZGUpOworICAgICAgICAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnRlcnByZXRlci0+
Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25zQmVnaW5bYnl0ZWNvZGVPZmZzZXRdKTsKICAgICAgICAg
ICAgIHVuc2lnbmVkIG9wY29kZUxlbmd0aCA9IG9wY29kZUxlbmd0aHNbb3Bjb2RlSURdOwogICAg
ICAgICAgICAgLy8gSWYgd2UgZm91bmQgYSB0ZXJtaW5hbCBieXRlY29kZSwgbGluayB0byB0aGUg
ZXhpdCBibG9jay4KICAgICAgICAgICAgIGlmIChpc1Rlcm1pbmFsKG9wY29kZUlEKSkgewpAQCAt
MTg1LDcgKzE4OSw3IEBAIHZvaWQgY29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MoQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0CiAgICAgICAgICAgICAvLyBi
bG9jayBiZWNhdXNlIHRoZSBmaW5hbGx5IGJsb2NrIHdpbGwgY3JlYXRlIGl0cyBvd24gY2F0Y2gs
IHdoaWNoIHdpbGwgZ2VuZXJhdGUgYSBIYW5kbGVySW5mby4KICAgICAgICAgICAgIGlmIChpc1Ro
cm93KG9wY29kZUlEKSkgewogICAgICAgICAgICAgICAgIEFTU0VSVChieXRlY29kZU9mZnNldCAr
IG9wY29kZUxlbmd0aCA9PSBibG9jay0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKSArIGJsb2NrLT50
b3RhbEJ5dGVjb2RlTGVuZ3RoKCkpOwotICAgICAgICAgICAgICAgIEhhbmRsZXJJbmZvKiBoYW5k
bGVyID0gY29kZUJsb2NrLT5oYW5kbGVyRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQp
OworICAgICAgICAgICAgICAgIGF1dG8qIGhhbmRsZXIgPSBjb2RlQmxvY2stPmhhbmRsZXJGb3JC
eXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCk7CiAgICAgICAgICAgICAgICAgZmFsbHNUaHJv
dWdoID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgaWYgKCFoYW5kbGVyKSB7CiAgICAgICAgICAg
ICAgICAgICAgIGxpbmtCbG9ja3MoYmxvY2ssIGV4aXQuZ2V0KCkpOwpAQCAtMjA1LDcgKzIwOSw3
IEBAIHZvaWQgY29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MoQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0CiAgICAgICAgICAgICBpZiAoaXNCcmFuY2gob3Bj
b2RlSUQpKSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKGJ5dGVjb2RlT2Zmc2V0ICsgb3Bjb2Rl
TGVuZ3RoID09IGJsb2NrLT5sZWFkZXJCeXRlY29kZU9mZnNldCgpICsgYmxvY2stPnRvdGFsQnl0
ZWNvZGVMZW5ndGgoKSk7CiAgICAgICAgICAgICAgICAgVmVjdG9yPHVuc2lnbmVkLCAxPiBieXRl
Y29kZU9mZnNldHNKdW1wZWRUbzsKLSAgICAgICAgICAgICAgICBmaW5kSnVtcFRhcmdldHNGb3JC
eXRlY29kZU9mZnNldChjb2RlQmxvY2ssIGJ5dGVjb2RlT2Zmc2V0LCBieXRlY29kZU9mZnNldHNK
dW1wZWRUbyk7CisgICAgICAgICAgICAgICAgZmluZEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZz
ZXQoY29kZUJsb2NrLCBpbnN0cnVjdGlvbnNCZWdpbiwgYnl0ZWNvZGVPZmZzZXQsIGJ5dGVjb2Rl
T2Zmc2V0c0p1bXBlZFRvKTsKIAogICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBiYXNpY0Jsb2Nrcy5zaXplKCk7IGkrKykgewogICAgICAgICAgICAgICAgICAgICBCeXRl
Y29kZUJhc2ljQmxvY2sqIG90aGVyQmxvY2sgPSBiYXNpY0Jsb2Nrc1tpXS5nZXQoKTsKQEAgLTIy
OSwxMCArMjMzLDIwIEBAIHZvaWQgY29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MoQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0CiAgICAgICAgIH0KICAgICB9
CiAKLSAgICBiYXNpY0Jsb2Nrcy5hcHBlbmQoV1RGTW92ZShleGl0KSk7CisgICAgYXBwZW5kQmxv
Y2soV1RGTW92ZShleGl0KSk7CiAgICAgCiAgICAgZm9yIChhdXRvJiBiYXNpY0Jsb2NrIDogYmFz
aWNCbG9ja3MpCiAgICAgICAgIGJhc2ljQmxvY2stPnNocmlua1RvRml0KCk7CiB9CiAKK3ZvaWQg
Qnl0ZWNvZGVCYXNpY0Jsb2NrOjpjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2NrcyhDb2RlQmxvY2sq
IGNvZGVCbG9jaywgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBpbnN0
cnVjdGlvbkNvdW50LCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+
JiBiYXNpY0Jsb2NrcykKK3sKKyAgICBjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2Nrc0ludGVybmFs
KGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb25zQmVnaW4sIGluc3RydWN0aW9uQ291bnQsIGJhc2ljQmxv
Y2tzKTsKK30KKwordm9pZCBCeXRlY29kZUJhc2ljQmxvY2s6OmNvbXB1dGVCeXRlY29kZUJhc2lj
QmxvY2tzKFVubGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFVubGlua2VkSW5zdHJ1Y3Rpb24q
IGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50LCBWZWN0b3I8c3Rk
Ojp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+JiBiYXNpY0Jsb2NrcykKK3sKKyAgICBC
eXRlY29kZUJhc2ljQmxvY2s6OmNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzSW50ZXJuYWwoY29k
ZUJsb2NrLCBpbnN0cnVjdGlvbnNCZWdpbiwgaW5zdHJ1Y3Rpb25Db3VudCwgYmFzaWNCbG9ja3Mp
OworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suaAppbmRleCBiZDdkM2FlOWJhMzQzZTFiMDcx
NzllOThmMWVlODlkYTY1YmE3ZTIwLi4xMTliZTdjNjYyMzBjOThlYTlkN2ZiMjgwOGNiZjI5NGRj
MWEyYTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVCYXNpY0Jsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVj
b2RlQmFzaWNCbG9jay5oCkBAIC0zNSw2ICszNSw5IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogY2xh
c3MgQ29kZUJsb2NrOworY2xhc3MgVW5saW5rZWRDb2RlQmxvY2s7CitzdHJ1Y3QgSW5zdHJ1Y3Rp
b247CitzdHJ1Y3QgVW5saW5rZWRJbnN0cnVjdGlvbjsKIAogY2xhc3MgQnl0ZWNvZGVCYXNpY0Js
b2NrIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTUwLDI4ICs1MywzOSBAQCBj
bGFzcyBCeXRlY29kZUJhc2ljQmxvY2sgewogICAgIHVuc2lnbmVkIGxlYWRlckJ5dGVjb2RlT2Zm
c2V0KCkgeyByZXR1cm4gbV9sZWFkZXJCeXRlY29kZU9mZnNldDsgfQogICAgIHVuc2lnbmVkIHRv
dGFsQnl0ZWNvZGVMZW5ndGgoKSB7IHJldHVybiBtX3RvdGFsQnl0ZWNvZGVMZW5ndGg7IH0KIAot
ICAgIFZlY3Rvcjx1bnNpZ25lZD4mIGJ5dGVjb2RlT2Zmc2V0cygpIHsgcmV0dXJuIG1fYnl0ZWNv
ZGVPZmZzZXRzOyB9Ci0gICAgdm9pZCBhZGRCeXRlY29kZUxlbmd0aCh1bnNpZ25lZCk7CisgICAg
Y29uc3QgVmVjdG9yPHVuc2lnbmVkPiYgYnl0ZWNvZGVPZmZzZXRzKCkgY29uc3QgeyByZXR1cm4g
bV9ieXRlY29kZU9mZnNldHM7IH0KIAotICAgIFZlY3RvcjxCeXRlY29kZUJhc2ljQmxvY2sqPiYg
c3VjY2Vzc29ycygpIHsgcmV0dXJuIG1fc3VjY2Vzc29yczsgfQotICAgIHZvaWQgYWRkU3VjY2Vz
c29yKEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2spIHsgbV9zdWNjZXNzb3JzLmFwcGVuZChibG9j
ayk7IH0KKyAgICBjb25zdCBWZWN0b3I8Qnl0ZWNvZGVCYXNpY0Jsb2NrKj4mIHN1Y2Nlc3NvcnMo
KSBjb25zdCB7IHJldHVybiBtX3N1Y2Nlc3NvcnM7IH0KKyAgICBjb25zdCBWZWN0b3I8Qnl0ZWNv
ZGVCYXNpY0Jsb2NrKj4mIHByZWRlY2Vzc29ycygpIGNvbnN0IHsgcmV0dXJuIG1fcHJlZGVjZXNz
b3JzOyB9CiAKICAgICBGYXN0Qml0VmVjdG9yJiBpbigpIHsgcmV0dXJuIG1faW47IH0KICAgICBG
YXN0Qml0VmVjdG9yJiBvdXQoKSB7IHJldHVybiBtX291dDsgfQogCisgICAgdW5zaWduZWQgaW5k
ZXgoKSBjb25zdCB7IHJldHVybiBtX2luZGV4OyB9CisKKyAgICBzdGF0aWMgdm9pZCBjb21wdXRl
Qnl0ZWNvZGVCYXNpY0Jsb2NrcyhDb2RlQmxvY2sqLCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25z
QmVnaW4sIHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQsIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8
Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mKTsKKyAgICBzdGF0aWMgdm9pZCBjb21wdXRlQnl0ZWNvZGVC
YXNpY0Jsb2NrcyhVbmxpbmtlZENvZGVCbG9jayosIFVubGlua2VkSW5zdHJ1Y3Rpb24qIGluc3Ry
dWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50LCBWZWN0b3I8c3RkOjp1bmlx
dWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+Jik7CisKIHByaXZhdGU6CisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgQmxvY2ssIHR5cGVuYW1lIEluc3RydWN0aW9uPiBzdGF0aWMgdm9pZCBjb21wdXRl
Qnl0ZWNvZGVCYXNpY0Jsb2Nrc0ludGVybmFsKEJsb2NrKiBjb2RlQmxvY2ssIEluc3RydWN0aW9u
KiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCwgVmVjdG9yPHN0
ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9ja3MpOworCisgICAg
dm9pZCBhZGRTdWNjZXNzb3IoQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaykgeyBtX3N1Y2Nlc3Nv
cnMuYXBwZW5kKGJsb2NrKTsgfQorICAgIHZvaWQgYWRkUHJlZGVjZXNzb3IoQnl0ZWNvZGVCYXNp
Y0Jsb2NrKiBibG9jaykgeyBtX3ByZWRlY2Vzc29ycy5hcHBlbmQoYmxvY2spOyB9CisKKyAgICB2
b2lkIGFkZEJ5dGVjb2RlTGVuZ3RoKHVuc2lnbmVkKTsKKwogICAgIHVuc2lnbmVkIG1fbGVhZGVy
Qnl0ZWNvZGVPZmZzZXQ7CiAgICAgdW5zaWduZWQgbV90b3RhbEJ5dGVjb2RlTGVuZ3RoOworICAg
IHVuc2lnbmVkIG1faW5kZXg7CiAKICAgICBWZWN0b3I8dW5zaWduZWQ+IG1fYnl0ZWNvZGVPZmZz
ZXRzOwogICAgIFZlY3RvcjxCeXRlY29kZUJhc2ljQmxvY2sqPiBtX3N1Y2Nlc3NvcnM7CisgICAg
VmVjdG9yPEJ5dGVjb2RlQmFzaWNCbG9jayo+IG1fcHJlZGVjZXNzb3JzOwogCiAgICAgRmFzdEJp
dFZlY3RvciBtX2luOwogICAgIEZhc3RCaXRWZWN0b3IgbV9vdXQ7CiB9OwogCi12b2lkIGNvbXB1
dGVCeXRlY29kZUJhc2ljQmxvY2tzKENvZGVCbG9jayosIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8
Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mKTsKLQogaW5saW5lIEJ5dGVjb2RlQmFzaWNCbG9jazo6Qnl0
ZWNvZGVCYXNpY0Jsb2NrKHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBsZW5ndGgpCiAgICAgOiBt
X2xlYWRlckJ5dGVjb2RlT2Zmc2V0KHN0YXJ0KQogICAgICwgbV90b3RhbEJ5dGVjb2RlTGVuZ3Ro
KGxlbmd0aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgxM2U1YzNhMGQx
Y2UyMGEyYWEwZDJkNGQxZjg1ZjcwMWM5NzI1OTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwCkBA
IC0wLDAgKzEsNjYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IFl1c3VrZSBTdXp1a2kg
PHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIkJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmgiCisKKyNpbmNsdWRlICJCeXRl
Y29kZUxpdmVuZXNzQW5hbHlzaXNJbmxpbmVzLmgiCisjaW5jbHVkZSAiQnl0ZWNvZGVNb2RpZmlj
YXRpb25TZXQuaCIKKyNpbmNsdWRlICJCeXRlY29kZVVzZURlZi5oIgorI2luY2x1ZGUgIklkZW50
aWZpZXJJbmxpbmVzLmgiCisjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKKyNpbmNsdWRlICJKU0NK
U1ZhbHVlSW5saW5lcy5oIgorI2luY2x1ZGUgIlN0cm9uZ0lubGluZXMuaCIKKyNpbmNsdWRlICJV
bmxpbmtlZENvZGVCbG9jay5oIgorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgorCituYW1lc3Bh
Y2UgSlNDIHsKKworY2xhc3MgQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24geworcHVibGljOgor
ICAgIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uKFVubGlua2VkQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssIFVubGlua2VkQ29kZUJsb2NrOjpVbnBhY2tlZEluc3RydWN0aW9ucyYgaW5zdHJ1Y3Rpb25z
LCBTeW1ib2xUYWJsZSogZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZSwgaW50IGdlbmVyYXRvckZy
YW1lU3ltYm9sVGFibGVJbmRleCkKKyAgICAgICAgOiBtX2dyYXBoKGNvZGVCbG9jaywgaW5zdHJ1
Y3Rpb25zKQorICAgICAgICAsIG1faW5zZXJ0aW9uU2V0KG1fZ3JhcGgpCisgICAgICAgICwgbV9n
ZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlKCpjb2RlQmxvY2stPnZtKCksIGdlbmVyYXRvckZyYW1l
U3ltYm9sVGFibGUpCisgICAgICAgICwgbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlSW5kZXgo
Z2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZUluZGV4KQorICAgIHsKKyAgICAgICAgbV9tZXJnZUJs
b2Nrcy5yZXNpemUobV9ncmFwaC5iYXNpY0Jsb2NrcygpLnNpemUoKSk7CisgICAgICAgIG1fc2F2
ZUJsb2Nrcy5yZXNpemUobV9ncmFwaC5iYXNpY0Jsb2NrcygpLnNpemUoKSk7CisKKyAgICAgICAg
Zm9yIChzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiYgYmxvY2sgOiBtX2dyYXBo
LmJhc2ljQmxvY2tzKCkpIHsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgYnl0ZWNvZGVPZmZz
ZXQgOiBibG9jay0+Ynl0ZWNvZGVPZmZzZXRzKCkpIHsKKyAgICAgICAgICAgICAgICBjb25zdCBV
bmxpbmtlZEluc3RydWN0aW9uKiBwYyA9ICZtX2dyYXBoLmluc3RydWN0aW9ucygpW2J5dGVjb2Rl
T2Zmc2V0XTsKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKHBjLT51Lm9wY29kZSkgeworICAgICAg
ICAgICAgICAgIGNhc2Ugb3Bfc2F2ZTogeworICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBs
aXZlQ2FsbGVlTG9jYWxzSW5kZXggPSBwY1syXS51LmluZGV4OworICAgICAgICAgICAgICAgICAg
ICBpbnQgb2Zmc2V0ID0gcGNbM10udS5vcGVyYW5kOworICAgICAgICAgICAgICAgICAgICBpZiAo
bGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID49IG1feWllbGRzLnNpemUoKSkKKyAgICAgICAgICAgICAg
ICAgICAgICAgIG1feWllbGRzLnJlc2l6ZShsaXZlQ2FsbGVlTG9jYWxzSW5kZXggKyAxKTsKKyAg
ICAgICAgICAgICAgICAgICAgbV95aWVsZHNbbGl2ZUNhbGxlZUxvY2Fsc0luZGV4XS5zYXZlUG9p
bnQgPSBieXRlY29kZU9mZnNldDsKKyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbWVyZ2VQ
b2ludCA9IGJ5dGVjb2RlT2Zmc2V0ICsgb2Zmc2V0OworICAgICAgICAgICAgICAgICAgICBtX3lp
ZWxkc1tsaXZlQ2FsbGVlTG9jYWxzSW5kZXhdLm1lcmdlUG9pbnQgPSBtZXJnZVBvaW50OworICAg
ICAgICAgICAgICAgICAgICBtX21lcmdlQmxvY2tzLnNldChtX2dyYXBoLmZpbmRCYXNpY0Jsb2Nr
Rm9yQnl0ZWNvZGVPZmZzZXQobWVyZ2VQb2ludCktPmluZGV4KCkpOworICAgICAgICAgICAgICAg
ICAgICBtX3NhdmVCbG9ja3Muc2V0KGJsb2NrLT5pbmRleCgpKTsKKyAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgY2FzZSBvcF9y
ZXN1bWU6IHsKKyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0lu
ZGV4ID0gcGNbMl0udS5pbmRleDsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxpdmVDYWxsZWVM
b2NhbHNJbmRleCA+PSBtX3lpZWxkcy5zaXplKCkpCisgICAgICAgICAgICAgICAgICAgICAgICBt
X3lpZWxkcy5yZXNpemUobGl2ZUNhbGxlZUxvY2Fsc0luZGV4ICsgMSk7CisgICAgICAgICAgICAg
ICAgICAgIG1feWllbGRzW2xpdmVDYWxsZWVMb2NhbHNJbmRleF0ucmVzdW1lUG9pbnQgPSBieXRl
Y29kZU9mZnNldDsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAg
fQorCisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisg
ICAgYm9vbCBpc01lcmdlQmxvY2soQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaykKKyAgICB7Cisg
ICAgICAgIHJldHVybiBtX21lcmdlQmxvY2tzLmdldChibG9jay0+aW5kZXgoKSk7CisgICAgfQor
CisgICAgYm9vbCBpc1NhdmVCbG9jayhCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIG1fc2F2ZUJsb2Nrcy5nZXQoYmxvY2stPmluZGV4KCkpOworICAgIH0K
KworICAgIHN0cnVjdCBTdG9yYWdlIHsKKyAgICAgICAgSWRlbnRpZmllciBpZGVudGlmaWVyOwor
ICAgICAgICB1bnNpZ25lZCBpZGVudGlmaWVySW5kZXg7CisgICAgICAgIFNjb3BlT2Zmc2V0IHNj
b3BlT2Zmc2V0OworICAgIH07CisKKyAgICB2b2lkIHJ1bigpOworCisgICAgQnl0ZWNvZGVHcmFw
aDxVbmxpbmtlZENvZGVCbG9jaz4mIGdyYXBoKCkgeyByZXR1cm4gbV9ncmFwaDsgfQorCitwcml2
YXRlOgorICAgIFN0b3JhZ2Ugc3RvcmFnZUZvckdlbmVyYXRvckxvY2FsKHVuc2lnbmVkIGluZGV4
KQorICAgIHsKKyAgICAgICAgLy8gV2UgYXNzaWduIGEgc3ltYm9sIHRvIGEgcmVnaXN0ZXIuIFRo
ZXJlIGlzIG9uZS1vbi1vbmUgY29ycmVzcG9uZGluZyBiZXR3ZWVuIGEgcmVnaXN0ZXIgYW5kIGEg
c3ltYm9sLgorICAgICAgICAvLyBCeSBkb2luZyBzbywgd2UgYWxsb2NhdGUgdGhlIHNwZWNpZmlj
IHN0b3JhZ2UgdG8gc2F2ZSB0aGUgZ2l2ZW4gcmVnaXN0ZXIuCisgICAgICAgIC8vIFRoaXMgYWxs
b3cgdXMgbm90IHRvIHNhdmUgYWxsIHRoZSBsaXZlIHJlZ2lzdGVycyBldmVuIGlmIHRoZSByZWdp
c3RlcnMgYXJlIG5vdCBvdmVyd3JpdHRlbiBmcm9tIHRoZSBwcmV2aW91cyByZXN1bWluZyB0aW1l
LgorICAgICAgICAvLyBJdCBtZWFucyB0aGF0LCB0aGUgcmVnaXN0ZXIgY2FuIGJlIHJldHJpZXZl
ZCBldmVuIGlmIHRoZSBpbW1lZGlhdGUgcHJldmlvdXMgb3Bfc2F2ZSBkb2VzIG5vdCBzYXZlIGl0
LgorCisgICAgICAgIGlmIChtX3N0b3JhZ2VzLnNpemUoKSA8PSBpbmRleCkKKyAgICAgICAgICAg
IG1fc3RvcmFnZXMucmVzaXplKGluZGV4ICsgMSk7CisgICAgICAgIGlmIChPcHRpb25hbDxTdG9y
YWdlPiBzdG9yYWdlID0gbV9zdG9yYWdlc1tpbmRleF0pCisgICAgICAgICAgICByZXR1cm4gKnN0
b3JhZ2U7CisKKyAgICAgICAgVW5saW5rZWRDb2RlQmxvY2sqIGNvZGVCbG9jayA9IG1fZ3JhcGgu
Y29kZUJsb2NrKCk7CisgICAgICAgIElkZW50aWZpZXIgaWRlbnRpZmllciA9IElkZW50aWZpZXI6
OmZyb21VaWQoUHJpdmF0ZU5hbWUoKSk7CisgICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXJJbmRl
eCA9IGNvZGVCbG9jay0+bnVtYmVyT2ZJZGVudGlmaWVycygpOworICAgICAgICBjb2RlQmxvY2st
PmFkZElkZW50aWZpZXIoaWRlbnRpZmllcik7CisgICAgICAgIFNjb3BlT2Zmc2V0IHNjb3BlT2Zm
c2V0ID0gbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlLT50YWtlTmV4dFNjb3BlT2Zmc2V0KE5v
TG9ja2luZ05lY2Vzc2FyeSk7CisgICAgICAgIG1fZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZS0+
c2V0KE5vTG9ja2luZ05lY2Vzc2FyeSwgaWRlbnRpZmllci5pbXBsKCksIFN5bWJvbFRhYmxlRW50
cnkoVmFyT2Zmc2V0KHNjb3BlT2Zmc2V0KSkpOworCisgICAgICAgIFN0b3JhZ2Ugc3RvcmFnZSA9
IHsKKyAgICAgICAgICAgIGlkZW50aWZpZXIsCisgICAgICAgICAgICBpZGVudGlmaWVySW5kZXgs
CisgICAgICAgICAgICBzY29wZU9mZnNldAorICAgICAgICB9OworICAgICAgICBtX3N0b3JhZ2Vz
W2luZGV4XSA9IHN0b3JhZ2U7CisgICAgICAgIHJldHVybiBzdG9yYWdlOworICAgIH0KKworICAg
IHN0cnVjdCBZaWVsZERhdGEgeworICAgICAgICBzaXplX3Qgc2F2ZVBvaW50OworICAgICAgICBz
aXplX3QgbWVyZ2VQb2ludDsKKyAgICAgICAgc2l6ZV90IHJlc3VtZVBvaW50OworICAgICAgICBG
YXN0Qml0VmVjdG9yIGxpdmVuZXNzOworICAgICAgICBGYXN0Qml0VmVjdG9yIHJlc3VtZWQ7Cisg
ICAgICAgIEZhc3RCaXRWZWN0b3Igc2F2ZWQ7CisgICAgfTsKKworICAgIEJ5dGVjb2RlR3JhcGg8
VW5saW5rZWRDb2RlQmxvY2s+IG1fZ3JhcGg7CisgICAgQnl0ZWNvZGVNb2RpZmljYXRpb25TZXQg
bV9pbnNlcnRpb25TZXQ7CisgICAgVmVjdG9yPE9wdGlvbmFsPFN0b3JhZ2U+PiBtX3N0b3JhZ2Vz
OworICAgIFZlY3RvcjxZaWVsZERhdGE+IG1feWllbGRzOworICAgIEZhc3RCaXRWZWN0b3IgbV9t
ZXJnZUJsb2NrczsKKyAgICBGYXN0Qml0VmVjdG9yIG1fc2F2ZUJsb2NrczsKKyAgICBTdHJvbmc8
U3ltYm9sVGFibGU+IG1fZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZTsKKyAgICBpbnQgbV9nZW5l
cmF0b3JGcmFtZVN5bWJvbFRhYmxlSW5kZXg7Cit9OworCitjbGFzcyBHZW5lcmF0b3JMaXZlbmVz
c0FuYWx5c2lzIHsKK3B1YmxpYzoKKyAgICBHZW5lcmF0b3JMaXZlbmVzc0FuYWx5c2lzKEJ5dGVj
b2RlR2VuZXJhdG9yaWZpY2F0aW9uJiBwYXNzKQorICAgICAgICA6IG1fZ2VuZXJhdG9yaWZpY2F0
aW9uKHBhc3MpCisgICAgeworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+
CisgICAgdm9pZCBjb21wdXRlTGl2ZW5lc3NEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoVW5saW5rZWRD
b2RlQmxvY2sqIGNvZGVCbG9jaywgT3Bjb2RlSUQgb3Bjb2RlSUQsIFVubGlua2VkSW5zdHJ1Y3Rp
b24qIGluc3RydWN0aW9uLCBGYXN0Qml0VmVjdG9yJiBvdXQsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0
b3IpCisgICAgeworICAgICAgICBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9j
aywgb3Bjb2RlSUQsIGluc3RydWN0aW9uLCBmdW5jdG9yKTsKKworICAgICAgICBzd2l0Y2ggKG9w
Y29kZUlEKSB7CisgICAgICAgIGNhc2Ugb3Bfc2F2ZToKKyAgICAgICAgICAgIHJldHVybjsKKwor
ICAgICAgICBjYXNlIG9wX3Jlc3VtZTogeworICAgICAgICAgICAgLy8gcmVzdW1lIGRlZmluZXMg
YWxsIHRoZSByZWdpc3RlcnMuCisgICAgICAgICAgICBvdXQuY2xlYXJBbGwoKTsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9y
PgorICAgIHZvaWQgY29tcHV0ZUxpdmVuZXNzVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KFVubGlua2Vk
Q29kZUJsb2NrKiBjb2RlQmxvY2ssIE9wY29kZUlEIG9wY29kZUlELCBVbmxpbmtlZEluc3RydWN0
aW9uKiBpbnN0cnVjdGlvbiwgRmFzdEJpdFZlY3RvciYsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3Ip
CisgICAgeworICAgICAgICBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9jaywg
b3Bjb2RlSUQsIGluc3RydWN0aW9uLCBmdW5jdG9yKTsKKworICAgICAgICBzd2l0Y2ggKG9wY29k
ZUlEKSB7CisgICAgICAgIGNhc2Ugb3Bfc2F2ZToKKyAgICAgICAgY2FzZSBvcF9yZXN1bWU6IHsK
KyAgICAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGlu
c3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAg
fQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVXNlRnVuY3RvciwgdHlwZW5hbWUgRGVmRnVuY3Rv
cj4KKyAgICB2b2lkIHN0ZXBPdmVySW5zdHJ1Y3Rpb25Gb3JMaXZlbmVzcyh1bnNpZ25lZCBieXRl
Y29kZU9mZnNldCwgRmFzdEJpdFZlY3RvciYgb3V0LCBjb25zdCBVc2VGdW5jdG9yJiB1c2UsIGNv
bnN0IERlZkZ1bmN0b3ImIGRlZikKKyAgICB7CisgICAgICAgIEJ5dGVjb2RlR3JhcGg8VW5saW5r
ZWRDb2RlQmxvY2s+JiBncmFwaCA9IG1fZ2VuZXJhdG9yaWZpY2F0aW9uLmdyYXBoKCk7CisgICAg
ICAgIGF1dG8mIGluc3RydWN0aW9ucyA9IGdyYXBoLmluc3RydWN0aW9ucygpOworICAgICAgICBV
bmxpbmtlZEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9ICZpbnN0cnVjdGlvbnNbYnl0ZWNvZGVP
ZmZzZXRdOworICAgICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGluc3RydWN0aW9uLT51Lm9wY29k
ZTsKKyAgICAgICAgVW5saW5rZWRDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGdyYXBoLmNvZGVCbG9j
aygpOworCisgICAgICAgIGNvbXB1dGVMaXZlbmVzc0RlZnNGb3JCeXRlY29kZU9mZnNldCgKKyAg
ICAgICAgICAgIGNvZGVCbG9jaywgb3Bjb2RlSUQsIGluc3RydWN0aW9uLCBvdXQsCisgICAgICAg
ICAgICBbJl0gKFVubGlua2VkQ29kZUJsb2NrKiwgVW5saW5rZWRJbnN0cnVjdGlvbiosIE9wY29k
ZUlELCBpbnQgb3BlcmFuZCkgeworICAgICAgICAgICAgICAgIGlmIChpc1ZhbGlkUmVnaXN0ZXJG
b3JMaXZlbmVzcyhvcGVyYW5kKSkKKyAgICAgICAgICAgICAgICAgICAgZGVmKFZpcnR1YWxSZWdp
c3RlcihvcGVyYW5kKS50b0xvY2FsKCkpOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgY29t
cHV0ZUxpdmVuZXNzVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAorICAgICAgICAgICAgY29kZUJsb2Nr
LCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb24sIG91dCwKKyAgICAgICAgICAgIFsmXSAoVW5saW5rZWRD
b2RlQmxvY2sqLCBVbmxpbmtlZEluc3RydWN0aW9uKiwgT3Bjb2RlSUQsIGludCBvcGVyYW5kKSB7
CisgICAgICAgICAgICAgICAgaWYgKGlzVmFsaWRSZWdpc3RlckZvckxpdmVuZXNzKG9wZXJhbmQp
KQorICAgICAgICAgICAgICAgICAgICB1c2UoVmlydHVhbFJlZ2lzdGVyKG9wZXJhbmQpLnRvTG9j
YWwoKSk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAvLyBJZiB3ZSBoYXZlIGFuIGV4Y2Vw
dGlvbiBoYW5kbGVyLCB3ZSB3YW50IHRoZSBsaXZlLWluIHZhcmlhYmxlcyBvZiB0aGUKKyAgICAg
ICAgLy8gZXhjZXB0aW9uIGhhbmRsZXIgYmxvY2sgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIGxpdmUt
aW4gb2YgdGhpcyBwYXJ0aWN1bGFyIGJ5dGVjb2RlLgorICAgICAgICBpZiAoVW5saW5rZWRIYW5k
bGVySW5mbyogaGFuZGxlciA9IGNvZGVCbG9jay0+aGFuZGxlckZvckJ5dGVjb2RlT2Zmc2V0KGJ5
dGVjb2RlT2Zmc2V0KSkgeworICAgICAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBoYW5kbGVy
QmxvY2sgPSBncmFwaC5maW5kQmFzaWNCbG9ja1dpdGhMZWFkZXJPZmZzZXQoaGFuZGxlci0+dGFy
Z2V0KTsKKyAgICAgICAgICAgIEFTU0VSVChoYW5kbGVyQmxvY2spOworICAgICAgICAgICAgaGFu
ZGxlckJsb2NrLT5pbigpLmZvckVhY2hTZXRCaXQodXNlKTsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIHZvaWQgY29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCeXRlY29kZU9mZnNldChCeXRlY29kZUJh
c2ljQmxvY2sqIGJsb2NrLCB1bnNpZ25lZCB0YXJnZXRPZmZzZXQsIEZhc3RCaXRWZWN0b3ImIHJl
c3VsdCkKKyAgICB7CisgICAgICAgIEFTU0VSVCghYmxvY2stPmlzRXhpdEJsb2NrKCkpOworICAg
ICAgICBBU1NFUlQoIWJsb2NrLT5pc0VudHJ5QmxvY2soKSk7CisKKyAgICAgICAgRmFzdEJpdFZl
Y3RvciBvdXQgPSBibG9jay0+b3V0KCk7CisKKyAgICAgICAgZm9yIChpbnQgaSA9IGJsb2NrLT5i
eXRlY29kZU9mZnNldHMoKS5zaXplKCkgLSAxOyBpID49IDA7IGktLSkgeworICAgICAgICAgICAg
dW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQgPSBibG9jay0+Ynl0ZWNvZGVPZmZzZXRzKClbaV07Cisg
ICAgICAgICAgICBpZiAodGFyZ2V0T2Zmc2V0ID4gYnl0ZWNvZGVPZmZzZXQpCisgICAgICAgICAg
ICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIHN0ZXBPdmVySW5zdHJ1Y3Rpb25Gb3JMaXZlbmVz
cygKKyAgICAgICAgICAgICAgICBieXRlY29kZU9mZnNldCwgb3V0LAorICAgICAgICAgICAgICAg
IFsmXSAodW5zaWduZWQgYml0SW5kZXgpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBp
cyB0aGUgdXNlIGZ1bmN0b3IsIHNvIHdlIHNldCB0aGUgYml0LgorICAgICAgICAgICAgICAgICAg
ICBvdXQuc2V0KGJpdEluZGV4KTsKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAg
IFsmXSAodW5zaWduZWQgYml0SW5kZXgpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBp
cyB0aGUgZGVmIGZ1bmN0b3IsIHNvIHdlIGNsZWFyIHRoZSBiaXQuCisgICAgICAgICAgICAgICAg
ICAgIG91dC5jbGVhcihiaXRJbmRleCk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgIH0K
KworICAgICAgICByZXN1bHQuc2V0KG91dCk7CisgICAgfQorCisgICAgdm9pZCBjb21wdXRlTG9j
YWxMaXZlbmVzc0ZvckJsb2NrKEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2spCisgICAgeworICAg
ICAgICBpZiAoYmxvY2stPmlzRXhpdEJsb2NrKCkgfHwgYmxvY2stPmlzRW50cnlCbG9jaygpKQor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJ5dGVj
b2RlT2Zmc2V0KGJsb2NrLCBibG9jay0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKSwgYmxvY2stPmlu
KCkpOworICAgIH0KKworICAgIEZhc3RCaXRWZWN0b3IgZ2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29k
ZU9mZnNldCh1bnNpZ25lZCBieXRlY29kZU9mZnNldCkKKyAgICB7CisgICAgICAgIEJ5dGVjb2Rl
QmFzaWNCbG9jayogYmxvY2sgPSBtX2dlbmVyYXRvcmlmaWNhdGlvbi5ncmFwaCgpLmZpbmRCYXNp
Y0Jsb2NrRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpOworICAgICAgICBBU1NFUlQo
YmxvY2spOworICAgICAgICBBU1NFUlQoIWJsb2NrLT5pc0VudHJ5QmxvY2soKSk7CisgICAgICAg
IEFTU0VSVCghYmxvY2stPmlzRXhpdEJsb2NrKCkpOworICAgICAgICBGYXN0Qml0VmVjdG9yIG91
dDsKKyAgICAgICAgb3V0LnJlc2l6ZShibG9jay0+b3V0KCkubnVtQml0cygpKTsKKyAgICAgICAg
Y29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCeXRlY29kZU9mZnNldChibG9jaywgYnl0ZWNvZGVPZmZz
ZXQsIG91dCk7CisgICAgICAgIHJldHVybiBvdXQ7CisgICAgfQorCisgICAgdm9pZCBydW4oKQor
ICAgIHsKKyAgICAgICAgLy8gUGVyZm9ybSBtb2RpZmllZCBsaXZlbmVzcyBhbmFseXNpcyB0byBk
ZXRlcm1pbmUgd2hpY2ggbG9jYWxzIGFyZSBsaXZlIGF0IHRoZSBtZXJnZSBwb2ludHMuCisgICAg
ICAgIC8vIFRoaXMgcHJvZHVjZXMgdGhlIGNvbnNlcnZhdGl2ZSByZXN1bHRzIGZvciB0aGUgcXVl
c3Rpb24sICJ3aGljaCB2YXJpYWJsZXMgc2hvdWxkIGJlIHNhdmVkIGFuZCByZXN1bWVkPyIuCisK
KyAgICAgICAgQnl0ZWNvZGVHcmFwaDxVbmxpbmtlZENvZGVCbG9jaz4mIGdyYXBoID0gbV9nZW5l
cmF0b3JpZmljYXRpb24uZ3JhcGgoKTsKKyAgICAgICAgVW5saW5rZWRDb2RlQmxvY2sqIHVubGlu
a2VkQ29kZUJsb2NrID0gZ3JhcGguY29kZUJsb2NrKCk7CisgICAgICAgIHVuc2lnbmVkIG51bWJl
ck9mVmFyaWFibGVzID0gdW5saW5rZWRDb2RlQmxvY2stPm1fbnVtQ2FsbGVlTG9jYWxzOworICAg
ICAgICBmb3IgKHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+JiBibG9jayA6IGdy
YXBoLmJhc2ljQmxvY2tzKCkpIHsKKyAgICAgICAgICAgIGJsb2NrLT5pbigpLnJlc2l6ZShudW1i
ZXJPZlZhcmlhYmxlcyk7CisgICAgICAgICAgICBibG9jay0+b3V0KCkucmVzaXplKG51bWJlck9m
VmFyaWFibGVzKTsKKyAgICAgICAgICAgIGJsb2NrLT5pbigpLmNsZWFyQWxsKCk7CisgICAgICAg
ICAgICBibG9jay0+b3V0KCkuY2xlYXJBbGwoKTsKKyAgICAgICAgfQorCisgICAgICAgIGJvb2wg
Y2hhbmdlZDsKKyAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBsYXN0QmxvY2sgPSBncmFwaC5i
YXNpY0Jsb2NrcygpLmxhc3QoKS5nZXQoKTsKKyAgICAgICAgbGFzdEJsb2NrLT5pbigpLmNsZWFy
QWxsKCk7CisgICAgICAgIGxhc3RCbG9jay0+b3V0KCkuY2xlYXJBbGwoKTsKKyAgICAgICAgRmFz
dEJpdFZlY3RvciBuZXdPdXQ7CisgICAgICAgIG5ld091dC5yZXNpemUobGFzdEJsb2NrLT5vdXQo
KS5udW1CaXRzKCkpOworICAgICAgICBkbyB7CisgICAgICAgICAgICBjaGFuZ2VkID0gZmFsc2U7
CisgICAgICAgICAgICBmb3IgKHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+JiBi
bG9jayA6IGdyYXBoLmJhc2ljQmxvY2tzSW5SZXZlcnNlT3JkZXIoKSkgeworICAgICAgICAgICAg
ICAgIG5ld091dC5jbGVhckFsbCgpOworICAgICAgICAgICAgICAgIGZvciAoQnl0ZWNvZGVCYXNp
Y0Jsb2NrKiBzdWNjZXNzb3IgOiBibG9jay0+c3VjY2Vzc29ycygpKQorICAgICAgICAgICAgICAg
ICAgICBuZXdPdXQubWVyZ2Uoc3VjY2Vzc29yLT5pbigpKTsKKyAgICAgICAgICAgICAgICBib29s
IG91dERpZENoYW5nZSA9IGJsb2NrLT5vdXQoKS5zZXRBbmRDaGVjayhuZXdPdXQpOworICAgICAg
ICAgICAgICAgIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQmxvY2soYmxvY2suZ2V0KCkpOworICAg
ICAgICAgICAgICAgIGNoYW5nZWQgfD0gb3V0RGlkQ2hhbmdlOworICAgICAgICAgICAgfQorICAg
ICAgICB9IHdoaWxlIChjaGFuZ2VkKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQnl0ZWNvZGVH
ZW5lcmF0b3JpZmljYXRpb24mIG1fZ2VuZXJhdG9yaWZpY2F0aW9uOworfTsKKworY2xhc3MgUmVz
dW1lZFZhcmlhYmxlc0FuYWx5c2lzIHsKK3B1YmxpYzoKKyAgICBSZXN1bWVkVmFyaWFibGVzQW5h
bHlzaXMoQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24mIHBhc3MpCisgICAgICAgIDogbV9nZW5l
cmF0b3JpZmljYXRpb24ocGFzcykKKyAgICAgICAgLCBtX2xpdmVuZXNzQW5hbHlzaXMocGFzcykK
KyAgICB7CisgICAgfQorCisgICAgRmFzdEJpdFZlY3RvciBnZXRSZXN1bWVkVmFyaWFibGVzSW5m
b0F0Qnl0ZWNvZGVPZmZzZXQodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpCisgICAgeworICAgICAg
ICBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrID0gbV9nZW5lcmF0b3JpZmljYXRpb24uZ3JhcGgo
KS5maW5kQmFzaWNCbG9ja0ZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KTsKKyAgICAg
ICAgQVNTRVJUKGJsb2NrKTsKKyAgICAgICAgQVNTRVJUKCFibG9jay0+aXNFbnRyeUJsb2NrKCkp
OworICAgICAgICBBU1NFUlQoIWJsb2NrLT5pc0V4aXRCbG9jaygpKTsKKyAgICAgICAgRmFzdEJp
dFZlY3RvciBvdXQ7CisgICAgICAgIG91dC5yZXNpemUoYmxvY2stPm91dCgpLm51bUJpdHMoKSk7
CisgICAgICAgIG1fbGl2ZW5lc3NBbmFseXNpcy5jb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJ5dGVj
b2RlT2Zmc2V0KGJsb2NrLCBieXRlY29kZU9mZnNldCwgb3V0KTsKKyAgICAgICAgcmV0dXJuIG91
dDsKKyAgICB9CisKKyAgICB2b2lkIHJ1bigpCisgICAgeworICAgICAgICAvLyBUaGUgcmVzdW1l
ZCB2YXJpYWJsZXMgYW5hbHlzaXMgaXMgYWxtb3N0IHRoZSBzYW1lIHRvIHRoZSBnZW5lcmF0b3Jp
ZmljYXRpb24ncyB1c3VhbCBsaXZlbmVzcyBhbmFseXNpcywKKyAgICAgICAgLy8gZXhjZXB0IGZv
ciBkcm9wcGluZyB0aGUgZWRnZXMgYmV0d2VlbiB0aGUgc2F2ZSBwb2ludHMgYW5kIHRoZSBtZXJn
ZSBwb2ludHMuCisKKyAgICAgICAgQnl0ZWNvZGVHcmFwaDxVbmxpbmtlZENvZGVCbG9jaz4mIGdy
YXBoID0gbV9nZW5lcmF0b3JpZmljYXRpb24uZ3JhcGgoKTsKKyAgICAgICAgVW5saW5rZWRDb2Rl
QmxvY2sqIHVubGlua2VkQ29kZUJsb2NrID0gZ3JhcGguY29kZUJsb2NrKCk7CisgICAgICAgIHVu
c2lnbmVkIG51bWJlck9mVmFyaWFibGVzID0gdW5saW5rZWRDb2RlQmxvY2stPm1fbnVtQ2FsbGVl
TG9jYWxzOworICAgICAgICBmb3IgKHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+
JiBibG9jayA6IGdyYXBoLmJhc2ljQmxvY2tzKCkpIHsKKyAgICAgICAgICAgIGJsb2NrLT5pbigp
LnJlc2l6ZShudW1iZXJPZlZhcmlhYmxlcyk7CisgICAgICAgICAgICBibG9jay0+b3V0KCkucmVz
aXplKG51bWJlck9mVmFyaWFibGVzKTsKKyAgICAgICAgICAgIGJsb2NrLT5pbigpLmNsZWFyQWxs
KCk7CisgICAgICAgICAgICBibG9jay0+b3V0KCkuY2xlYXJBbGwoKTsKKyAgICAgICAgfQorCisg
ICAgICAgIGJvb2wgY2hhbmdlZDsKKyAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBsYXN0Qmxv
Y2sgPSBncmFwaC5iYXNpY0Jsb2NrcygpLmxhc3QoKS5nZXQoKTsKKyAgICAgICAgbGFzdEJsb2Nr
LT5pbigpLmNsZWFyQWxsKCk7CisgICAgICAgIGxhc3RCbG9jay0+b3V0KCkuY2xlYXJBbGwoKTsK
KyAgICAgICAgRmFzdEJpdFZlY3RvciBuZXdPdXQ7CisgICAgICAgIG5ld091dC5yZXNpemUobGFz
dEJsb2NrLT5vdXQoKS5udW1CaXRzKCkpOworICAgICAgICBkbyB7CisgICAgICAgICAgICBjaGFu
Z2VkID0gZmFsc2U7CisgICAgICAgICAgICBmb3IgKHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJh
c2ljQmxvY2s+JiBibG9jayA6IGdyYXBoLmJhc2ljQmxvY2tzSW5SZXZlcnNlT3JkZXIoKSkgewor
ICAgICAgICAgICAgICAgIG5ld091dC5jbGVhckFsbCgpOworICAgICAgICAgICAgICAgIGJvb2wg
c2F2ZUJsb2NrID0gbV9nZW5lcmF0b3JpZmljYXRpb24uaXNTYXZlQmxvY2soYmxvY2suZ2V0KCkp
OworICAgICAgICAgICAgICAgIGZvciAoQnl0ZWNvZGVCYXNpY0Jsb2NrKiBzdWNjZXNzb3IgOiBi
bG9jay0+c3VjY2Vzc29ycygpKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIERvIG5vdCBoYW5k
bGUgdGhlIGVkZ2VzIGJldHdlZW4gdGhlIHNhdmUgcG9pbnRzIGFuZCB0aGUgbWVyZ2UgcG9pbnRz
LgorICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgY3VycmVudCBibG9jayBpcyB0aGUgc2F2
ZSBibG9jayAodGhhdCBicmFuY2ggaXMgb3Bfc2F2ZSksCisgICAgICAgICAgICAgICAgICAgIC8v
IGFuZCBpZiB0aGUgc3VjY2Vzc29yIGlzIHRoZSBibG9jayB0aGF0IHN0YXJ0cyB3aXRoIHRoZSBt
ZXJnZSBwb2ludCwgd2UgZHJvcCB0aGlzIGVkZ2UuCisgICAgICAgICAgICAgICAgICAgIGlmICgh
KHNhdmVCbG9jayAmJiBtX2dlbmVyYXRvcmlmaWNhdGlvbi5pc01lcmdlQmxvY2soc3VjY2Vzc29y
KSkpCisgICAgICAgICAgICAgICAgICAgICAgICBuZXdPdXQubWVyZ2Uoc3VjY2Vzc29yLT5pbigp
KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYm9vbCBvdXREaWRDaGFuZ2Ug
PSBibG9jay0+b3V0KCkuc2V0QW5kQ2hlY2sobmV3T3V0KTsKKyAgICAgICAgICAgICAgICBtX2xp
dmVuZXNzQW5hbHlzaXMuY29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCbG9jayhibG9jay5nZXQoKSk7
CisgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBvdXREaWRDaGFuZ2U7CisgICAgICAgICAgICB9
CisgICAgICAgIH0gd2hpbGUgKGNoYW5nZWQpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBCeXRl
Y29kZUdlbmVyYXRvcmlmaWNhdGlvbiYgbV9nZW5lcmF0b3JpZmljYXRpb247CisgICAgR2VuZXJh
dG9yTGl2ZW5lc3NBbmFseXNpcyBtX2xpdmVuZXNzQW5hbHlzaXM7Cit9OworCitjbGFzcyBTYXZl
ZFZhcmlhYmxlc0FuYWx5c2lzIHsKK3B1YmxpYzoKKyAgICBTYXZlZFZhcmlhYmxlc0FuYWx5c2lz
KEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uJiBwYXNzKQorICAgICAgICA6IG1fZ2VuZXJhdG9y
aWZpY2F0aW9uKHBhc3MpCisgICAgeworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIERl
ZkZ1bmN0b3I+CisgICAgdm9pZCBzdGVwT3Zlckluc3RydWN0aW9uRm9yU2F2ZWRWYXJpYWJsZXMo
Qnl0ZWNvZGVCYXNpY0Jsb2NrKiwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIEZhc3RCaXRWZWN0
b3ImIGluLCBjb25zdCBEZWZGdW5jdG9yJiBkZWYpCisgICAgeworICAgICAgICBCeXRlY29kZUdy
YXBoPFVubGlua2VkQ29kZUJsb2NrPiYgZ3JhcGggPSBtX2dlbmVyYXRvcmlmaWNhdGlvbi5ncmFw
aCgpOworICAgICAgICBhdXRvJiBpbnN0cnVjdGlvbnMgPSBncmFwaC5pbnN0cnVjdGlvbnMoKTsK
KyAgICAgICAgVW5saW5rZWRJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSAmaW5zdHJ1Y3Rpb25z
W2J5dGVjb2RlT2Zmc2V0XTsKKyAgICAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnN0cnVjdGlv
bi0+dS5vcGNvZGU7CisgICAgICAgIFVubGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBncmFw
aC5jb2RlQmxvY2soKTsKKworICAgICAgICAvLyBvcF9yZXN1bWUgY2xlYXJzIGFsbCB0aGUgZGVm
cy4KKyAgICAgICAgaWYgKG9wY29kZUlEID09IG9wX3Jlc3VtZSkgeworICAgICAgICAgICAgaW4u
Y2xlYXJBbGwoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGNv
bXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoY29kZUJsb2NrLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rp
b24sIFsmXSAoVW5saW5rZWRDb2RlQmxvY2sqLCBVbmxpbmtlZEluc3RydWN0aW9uKiwgT3Bjb2Rl
SUQsIGludCBvcGVyYW5kKSB7CisgICAgICAgICAgICBpZiAoaXNWYWxpZFJlZ2lzdGVyRm9yTGl2
ZW5lc3Mob3BlcmFuZCkpCisgICAgICAgICAgICAgICAgZGVmKFZpcnR1YWxSZWdpc3RlcihvcGVy
YW5kKS50b0xvY2FsKCkpOworICAgICAgICB9KTsKKyAgICB9CisKKyAgICBib29sIGNvbXB1dGVM
b2NhbFNhdmVkVmFyaWFibGVzRm9yQnl0ZWNvZGVPZmZzZXQoQnl0ZWNvZGVCYXNpY0Jsb2NrKiBi
bG9jaywgdW5zaWduZWQgdGFyZ2V0T2Zmc2V0LCBGYXN0Qml0VmVjdG9yJiByZXN1bHQpCisgICAg
eworICAgICAgICBBU1NFUlQoIWJsb2NrLT5pc0V4aXRCbG9jaygpKTsKKyAgICAgICAgQVNTRVJU
KCFibG9jay0+aXNFbnRyeUJsb2NrKCkpOworCisgICAgICAgIEZhc3RCaXRWZWN0b3IgaW4gPSBi
bG9jay0+aW4oKTsKKworICAgICAgICBmb3IgKHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0IDogYmxv
Y2stPmJ5dGVjb2RlT2Zmc2V0cygpKSB7CisgICAgICAgICAgICBpZiAodGFyZ2V0T2Zmc2V0IDw9
IGJ5dGVjb2RlT2Zmc2V0KQorICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBz
dGVwT3Zlckluc3RydWN0aW9uRm9yU2F2ZWRWYXJpYWJsZXMoCisgICAgICAgICAgICAgICAgYmxv
Y2ssIGJ5dGVjb2RlT2Zmc2V0LCBpbiwKKyAgICAgICAgICAgICAgICBbJl0gKHVuc2lnbmVkIGJp
dEluZGV4KSB7CisgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIGRlZiBmdW5jdG9y
LCBzbyB3ZSBzZXQgdGhlIGJpdC4KKyAgICAgICAgICAgICAgICAgICAgaW4uc2V0KGJpdEluZGV4
KTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiByZXN1
bHQuc2V0QW5kQ2hlY2soaW4pOworICAgIH0KKworICAgIGJvb2wgY29tcHV0ZUxvY2FsU2F2ZWRW
YXJpYWJsZXNGb3JCbG9jayhCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrKQorICAgIHsKKyAgICAg
ICAgaWYgKGJsb2NrLT5pc0V4aXRCbG9jaygpIHx8IGJsb2NrLT5pc0VudHJ5QmxvY2soKSkKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIGNvbXB1dGVMb2NhbFNhdmVk
VmFyaWFibGVzRm9yQnl0ZWNvZGVPZmZzZXQoYmxvY2ssIGJsb2NrLT5sZWFkZXJCeXRlY29kZU9m
ZnNldCgpICsgYmxvY2stPnRvdGFsQnl0ZWNvZGVMZW5ndGgoKSwgYmxvY2stPm91dCgpKTsKKyAg
ICB9CisKKyAgICBGYXN0Qml0VmVjdG9yIGdldFNhdmVkVmFyaWFibGVzSW5mb0F0Qnl0ZWNvZGVP
ZmZzZXQodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpCisgICAgeworICAgICAgICBCeXRlY29kZUJh
c2ljQmxvY2sqIGJsb2NrID0gbV9nZW5lcmF0b3JpZmljYXRpb24uZ3JhcGgoKS5maW5kQmFzaWNC
bG9ja0ZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KTsKKyAgICAgICAgQVNTRVJUKGJs
b2NrKTsKKyAgICAgICAgQVNTRVJUKCFibG9jay0+aXNFbnRyeUJsb2NrKCkpOworICAgICAgICBB
U1NFUlQoIWJsb2NrLT5pc0V4aXRCbG9jaygpKTsKKyAgICAgICAgRmFzdEJpdFZlY3RvciBpbjsK
KyAgICAgICAgaW4ucmVzaXplKGJsb2NrLT5pbigpLm51bUJpdHMoKSk7CisgICAgICAgIGNvbXB1
dGVMb2NhbFNhdmVkVmFyaWFibGVzRm9yQnl0ZWNvZGVPZmZzZXQoYmxvY2ssIGJ5dGVjb2RlT2Zm
c2V0LCBpbik7CisgICAgICAgIHJldHVybiBpbjsKKyAgICB9CisKKyAgICB2b2lkIHJ1bigpCisg
ICAgeworICAgICAgICAvLyBJZiB3ZSBzYXZlIGFsbCB0aGUgdmFyaWFibGUgdGhhdCB3aWxsIGJl
IHJlc3VtZWQsIGl0J3MgT0suCisgICAgICAgIC8vIEJ1dCB3ZSBjYW4gYXZvaWQgc29tZSBzYXZl
ZCB2YXJpYWJsZXMgdGhhdCBhcmUgb25seSBkZWZpbmVkIGJ5IHRoZSBwcmV2aW91cyBvcF9yZXN1
bWUuCisgICAgICAgIC8vCisgICAgICAgIC8vIEluIHRoaXMgcGhhc2UsIHdlIHBlcmZvcm0gZm9y
d2FyZCBhbmFseXNpcyB0byBleHRyYWN0IHdoaWNoIHZhcmlhYmxlcyBuZWVkIHRvIGJlIG5ld2x5
IHNhdmVkIHdoZW4gZXhlY3V0aW5nIG9wX3NhdmUuCisgICAgICAgIC8vIFdlIGNhbGN1bGF0ZSB0
aGUgcmVnaXN0ZXJzIHRoYXQgaXMgZGVmaW5lZCBpbiBub24tb3BfcmVzdW1lIGFuZCBjYW4gcmVh
Y2ggdG8gdGhlIG9wX3NhdmUuCisgICAgICAgIC8vCisgICAgICAgIC8vICAgb3BfcmVzdW1lLCBk
ZWZpbmUgcjEKKyAgICAgICAgLy8gICAuLi4KKyAgICAgICAgLy8gICAuLi4KKyAgICAgICAgLy8g
ICBuby1qdW1wcyAmIG5vIHIxIGRlZnMuCisgICAgICAgIC8vICAgLi4uCisgICAgICAgIC8vICAg
b3Bfc2F2ZSAgIyBIZXJlLCBpdCBpcyBub3QgbmVjZXNzYXJ5IHRvIHNhdmUgcjEuCisgICAgICAg
IEJ5dGVjb2RlR3JhcGg8VW5saW5rZWRDb2RlQmxvY2s+JiBncmFwaCA9IG1fZ2VuZXJhdG9yaWZp
Y2F0aW9uLmdyYXBoKCk7CisgICAgICAgIFVubGlua2VkQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVC
bG9jayA9IGdyYXBoLmNvZGVCbG9jaygpOworCisgICAgICAgIC8vIFdlIGNvbnNpZGVyIHRoZSBi
YXNpYyBibG9ja3Mgd2l0aGluIHRoZSB0cnkgcmFuZ2UgYXJlIGNvbnNpZGVyZWQgYXMgdGhlIGlt
cGxpY2l0IHByZWRlY2Vzc29ycyBvZiB0aGUgaGFuZGxlcnMuCisgICAgICAgIC8vIFRoZSBkZWZz
IGluIHRoZXNlIGJhc2ljIGJsb2NrcyBhcmUgY2FycmllZCB0byB0aGUgZXhjZXB0aW9uIGhhbmRs
ZXIuIEFuZCBpZiB0aGUgb3Bfc2F2ZSBpcyBleGVjdXRlZCBpbiB0aGUgaGFuZGxlciwKKyAgICAg
ICAgLy8gY2FycmllZCBkZWZzIHNob3VsZCBiZSBhbHNvIGNvbnNpZGVyZWQuCisgICAgICAgIC8v
CisgICAgICAgIC8vIEhlcmUsIHdlIGFkZCB0aGUgd2hvbGUgYmFzaWMgYmxvY2tzIGFzIHRoZSBp
bXBsaWNpdCBwcmVkZWNlc3NvcnMgb2YgdGhlIGhhbmRsZXJzIGZvciBzaW1wbGljaXR5LgorICAg
ICAgICAvLyBUaGlzIGlzIGEgbGl0dGxlIGJpdCBjb25zZXJ2YXRpdmU6IHRoZSB0cnkgcmFuZ2Ug
bWF5IG5vdCBjb3ZlciBhbGwgdGhlIGJhc2ljIGJsb2NrLiBCdXQgc2luY2UgdGhlIG91dCBzZXQg
c3RhdHVzIGF0CisgICAgICAgIC8vIHRoZSB0YWlsIG9mIHRoZSBiYXNpYyBibG9jayBpcyBhbHdh
eXMgbGFyZ2VyIHRoYW4gdGhlIG91dCBzZXQgc3RhdHVzIGluIHRoZSBtaWRkbGUgb2YgdGhlIGJh
c2ljIGJsb2NrcywgdGhpcyBkb2VzIG5vdAorICAgICAgICAvLyBmYWlsIHRvIGtlZXAgdGhlIHZh
cmlhYmxlcyB0aGF0IHNob3VsZCBiZSBzYXZlZC4KKyAgICAgICAgLy8KKyAgICAgICAgLy8gT25s
eSB0aGUgZXhjZXB0aW9uIGlzIHRoZSBvcF9yZXN1bWUgYmxvY2s6IG9wX3Jlc3VtZSBjbGVhcnMg
YWxsIHRoZSBkZWZzLiBCdXQgc2luY2UgdGhlIHJhbmdlIGJldHdlZW4gdGhlIGp1bXAgdGFyZ2V0
CisgICAgICAgIC8vIGZyb20gdGhlIGdsb2JhbCBkaXNwYXRjaCBhbmQgb3BfcmVzdW1lIGlzIG5l
dmVyIGNvdmVyZWQgYnkgdGhlIHRyeSByYW5nZSwgaXQgaXMgbm90IGEgcHJvYmxlbS4KKyAgICAg
ICAgVmVjdG9yPE9wdGlvbmFsPEZhc3RCaXRWZWN0b3I+PiBwb3NzaWJsZVByZWRlY2Vzc29yc0Zv
ckhhbmRsZXJzOworICAgICAgICBwb3NzaWJsZVByZWRlY2Vzc29yc0ZvckhhbmRsZXJzLnJlc2l6
ZShncmFwaC5iYXNpY0Jsb2NrcygpLnNpemUoKSk7CisgICAgICAgIHsKKyAgICAgICAgICAgIGF1
dG8mIGluc3RydWN0aW9ucyA9IGdyYXBoLmluc3RydWN0aW9ucygpOworICAgICAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IHVubGlua2VkQ29kZUJsb2NrLT5udW1iZXJPZkV4Y2VwdGlv
bkhhbmRsZXJzKCk7ICsraSkgeworICAgICAgICAgICAgICAgIGF1dG8mIGhhbmRsZXIgPSB1bmxp
bmtlZENvZGVCbG9jay0+ZXhjZXB0aW9uSGFuZGxlcihpKTsKKworICAgICAgICAgICAgICAgIEZh
c3RCaXRWZWN0b3IgcHJlZGVjZXNzb3JzOworICAgICAgICAgICAgICAgIHByZWRlY2Vzc29ycy5y
ZXNpemUoZ3JhcGguYmFzaWNCbG9ja3MoKS5zaXplKCkpOworICAgICAgICAgICAgICAgIGZvciAo
dW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQgPSBoYW5kbGVyLnN0YXJ0OyBieXRlY29kZU9mZnNldCA8
IGhhbmRsZXIuZW5kOykgeworICAgICAgICAgICAgICAgICAgICBVbmxpbmtlZEluc3RydWN0aW9u
KiBpbnN0cnVjdGlvbiA9ICZpbnN0cnVjdGlvbnNbYnl0ZWNvZGVPZmZzZXRdOworICAgICAgICAg
ICAgICAgICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGluc3RydWN0aW9uLT51Lm9wY29kZTsKKyAg
ICAgICAgICAgICAgICAgICAgdW5zaWduZWQgb3Bjb2RlTGVuZ3RoID0gb3Bjb2RlTGVuZ3Roc1tv
cGNvZGVJRF07CisKKyAgICAgICAgICAgICAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBwb3Nz
aWJsZVByZWRlY2Vzc29yID0gZ3JhcGguZmluZEJhc2ljQmxvY2tGb3JCeXRlY29kZU9mZnNldChi
eXRlY29kZU9mZnNldCk7CisgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHBvc3Np
YmxlUHJlZGVjZXNzb3IpOworICAgICAgICAgICAgICAgICAgICBwcmVkZWNlc3NvcnMuc2V0KHBv
c3NpYmxlUHJlZGVjZXNzb3ItPmluZGV4KCkpOworCisgICAgICAgICAgICAgICAgICAgIGJ5dGVj
b2RlT2Zmc2V0ICs9IG9wY29kZUxlbmd0aDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBoYW5kbGVyQmxvY2sgPSBncmFwaC5maW5kQmFzaWNC
bG9ja1dpdGhMZWFkZXJPZmZzZXQoaGFuZGxlci50YXJnZXQpOworICAgICAgICAgICAgICAgIHBv
c3NpYmxlUHJlZGVjZXNzb3JzRm9ySGFuZGxlcnNbaGFuZGxlckJsb2NrLT5pbmRleCgpXSA9IFdU
Rk1vdmUocHJlZGVjZXNzb3JzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAg
IHVuc2lnbmVkIG51bWJlck9mVmFyaWFibGVzID0gdW5saW5rZWRDb2RlQmxvY2stPm1fbnVtQ2Fs
bGVlTG9jYWxzOworICAgICAgICBmb3IgKHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxv
Y2s+JiBibG9jayA6IGdyYXBoLmJhc2ljQmxvY2tzKCkpIHsKKyAgICAgICAgICAgIGJsb2NrLT5p
bigpLnJlc2l6ZShudW1iZXJPZlZhcmlhYmxlcyk7CisgICAgICAgICAgICBibG9jay0+b3V0KCku
cmVzaXplKG51bWJlck9mVmFyaWFibGVzKTsKKyAgICAgICAgICAgIGJsb2NrLT5pbigpLmNsZWFy
QWxsKCk7CisgICAgICAgICAgICBibG9jay0+b3V0KCkuY2xlYXJBbGwoKTsKKyAgICAgICAgfQor
CisgICAgICAgIGJvb2wgY2hhbmdlZDsKKyAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBmaXJz
dEJsb2NrID0gZ3JhcGguYmFzaWNCbG9ja3MoKS5maXJzdCgpLmdldCgpOworICAgICAgICBGYXN0
Qml0VmVjdG9yIG5ld0luOworICAgICAgICBuZXdJbi5yZXNpemUoZmlyc3RCbG9jay0+aW4oKS5u
dW1CaXRzKCkpOworICAgICAgICBkbyB7CisgICAgICAgICAgICBjaGFuZ2VkID0gZmFsc2U7Cisg
ICAgICAgICAgICBmb3IgKHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+JiBibG9j
ayA6IGdyYXBoLmJhc2ljQmxvY2tzKCkpIHsKKyAgICAgICAgICAgICAgICBuZXdJbi5jbGVhckFs
bCgpOworICAgICAgICAgICAgICAgIGJvb2wgbWVyZ2VCbG9jayA9IG1fZ2VuZXJhdG9yaWZpY2F0
aW9uLmlzTWVyZ2VCbG9jayhibG9jay5nZXQoKSk7CisgICAgICAgICAgICAgICAgZm9yIChCeXRl
Y29kZUJhc2ljQmxvY2sqIHByZWRlY2Vzc29yIDogYmxvY2stPnByZWRlY2Vzc29ycygpKSB7Cisg
ICAgICAgICAgICAgICAgICAgIC8vIE1lcmdlIHRoZSBvdXQgc2V0IG9mIHRoZSBpbmNvbWluZyBw
cmVkZWNlc3NvcnMgdW5sZXNzIHRoZSBjdXJyZW50IGJsb2NrIHN0YXJ0cworICAgICAgICAgICAg
ICAgICAgICAvLyB3aXRoIHRoZSBtZXJnZSBwb2ludCBhbmQgdGhlIHByZWRlY2Vzc29yIGVuZHMg
d2l0aCB0aGUgc2F2ZSBwb2ludC4KKyAgICAgICAgICAgICAgICAgICAgaWYgKCEobWVyZ2VCbG9j
ayAmJiBtX2dlbmVyYXRvcmlmaWNhdGlvbi5pc1NhdmVCbG9jayhwcmVkZWNlc3NvcikpKQorICAg
ICAgICAgICAgICAgICAgICAgICAgbmV3SW4ubWVyZ2UocHJlZGVjZXNzb3ItPm91dCgpKTsKKyAg
ICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAoYXV0byYgb3B0aW9uYWxQcmVk
ZWNlc3NvclNldCA9IHBvc3NpYmxlUHJlZGVjZXNzb3JzRm9ySGFuZGxlcnNbYmxvY2stPmluZGV4
KCldKSB7CisgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsUHJlZGVjZXNzb3JTZXQtPmZvckVh
Y2hTZXRCaXQoWyZdICh1bnNpZ25lZCBibG9ja0luZGV4KSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBuZXdJbi5tZXJnZShncmFwaC5iYXNpY0Jsb2NrcygpW2Jsb2NrSW5kZXhdLT5vdXQoKSk7
CisgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgICAgIGJsb2NrLT5pbigpLnNldChuZXdJbik7CisgICAgICAgICAgICAgICAgY2hhbmdlZCB8
PSBjb21wdXRlTG9jYWxTYXZlZFZhcmlhYmxlc0ZvckJsb2NrKGJsb2NrLmdldCgpKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfSB3aGlsZSAoY2hhbmdlZCk7CisgICAgfQorCitwcml2YXRlOgor
ICAgIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uJiBtX2dlbmVyYXRvcmlmaWNhdGlvbjsKK307
CisKKwordm9pZCBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbjo6cnVuKCkKK3sKKyAgICAvLyBG
aXJzdCwgd2UgY2FsY3VsYXRlIHRoZSBsaXZlbmVzcyBhdCBlYWNoIG1lcmdlIHBvaW50LiBUaGlz
IGdpdmVzIHVzIHRoZSBpbmZvcm1hdGlvbiB3aGljaCByZWdpc3RlcnMgc2hvdWxkIGJlIHNhdmVk
IGFuZCByZXN1bWVkIGNvbnNlcnZhdGl2ZWx5LgorICAgIC8vIEhvd2V2ZXIsIHRoaXMgaW5mb3Jt
YXRpb24gaXMgdG9vIGNvbnNlcnZhdGl2ZS4gV2Ugbm93IHVubmVjZXNzYXJpbHkgc2F2ZSBhbmQg
cmVzdW1lIHRoZSByZWdpc3RlcnMuCisgICAgLy8gV2hlbiB0aGUgbG9jYWwgcmVnaXN0ZXIgaXMg
cmVmZXJlbmNlZCBmcm9tIHRoZSBwb2ludCB3aGljaCBpcyBvdmVyIG11bHRpcGxlIHlpZWxkcywg
dGhlIHByb2JsZW0gaGFwcGVucy4KKyAgICAvLworICAgIC8vICAgZnVuY3Rpb24gKmdlbigpCisg
ICAgLy8gICB7CisgICAgLy8gICAgICAgdmFyIHRhcmdldCA9IDQyOworICAgIC8vICAgICAgIHlp
ZWxkIDMwOyAgLy8gSGVyZSwgd2Ugc2hvdWxkIHNhdmUgInRhcmdldCIuIEl0IGlzIE9LLiBCdXQg
YXQgdGhlIHJlc3VtZSBwb2ludCwgd2UgdW5uZWNlc3NhcnkgcmVzdW1lICJ0YXJnZXQiIGhlcmUu
CisgICAgLy8gICAgICAgeWllbGQgNDA7ICAvLyBBbmQgaGVyZSwgd2UgdW5uZWNlc3NhcmlseSBz
YXZlICJ0YXJnZXQiLCBzaW5jZSBpdCBpcyAqZGVmKmluZWQgYnkgdGhlIHByZXZpb3VzIHJlc3Vt
ZS4KKyAgICAvLyAgICAgICB5aWVsZCB0YXJnZXQ7ICAvLyBBbmQgcmVmZXJlbmNlIHRoZSAidGFy
Z2V0IiBoZXJlLgorICAgIC8vICAgfQorICAgIC8vCisgICAgLy8gSW4gdGhlIGFib3ZlIGV4YW1w
bGUsIGZpcnN0IHlpZWxkJ3MgcmVzdW1lIGFuZCBzZWNvbmQgeWllbGQncyBzYXZlIGlzIHVubmVj
ZXNzYXJ5IHNpbmNlIHRoZSB2YWx1ZSBpcyBub3QgY2hhbmdlZCBkdXJpbmcgdGhlIHNlY29uZCBj
YWxsIG9mIG5leHQoKS4KKyAgICAvLyBUbyByZWR1Y2UgdGhlIHVubmVjZXNzYXJ5IHJlZ2lzdGVy
IHNhdmUgYW5kIHJlc3VtZSwgd2UgcnVuIDIgYW5hbHlzaXMsICJyZXN1bWVkIHZhcmlhYmxlcyBh
bmFseXNpcyIgYW5kICJzYXZlZCB2YXJpYWJsZXMgYW5hbHlzaXMiLgorICAgIC8vIEF0IHRoYXQg
dGltZSwgd2UgZHJvcCB0aGUgZWRnZSBmcm9tIG9wX3NhdmUgdG8gdGhlIG1lcmdlIHBvaW50LiBT
byB0aGUgZ3JhcGggbm93IGJlY29tZXMgYXMgZm9sbG93cy4KKyAgICAvLworICAgIC8vIEJlZm9y
ZToKKyAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob2YgY291cnNlLCBzdWNoIGVkZ2VzIGNh
biBiZSBzZWVuKQorICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBvcF9yZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0rCisgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIF4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAvLyAgICAgICAgIGVudHJ5IC0+IGdlbmVy
YXRvciBzd2l0Y2ggLS0tLT4gb3Bfc2F2ZSAtLS0tLS0tLS0tLS0tLSsgICAgICAgICAgICAgICB8
ICAgICAgICBvcF9yZXQgICAgICAgICAgICAgICAgICAgfAorICAgIC8vICAgICAgICAgICAgICAg
ICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdiAgICAgICAg
ICAgICAgIHwgICAgICAgICAgXiAgICAgICAgICAgICAgICAgICAgICB8CisgICAgLy8gICAgICAg
ICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0+IG9wX3Jlc3VtZSAtLS0tLT4gbWVyZ2Ug
cG9pbnQgLT4gLi4uLi4uKy4uLi4uLT4gb3Bfc2F2ZSAtLS0tLSsgICAgICAgICAgIHwKKyAgICAv
LyAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdiAgICAgICAgICAg
dgorICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPiBvcF9yZXN1bWUgLS0tLT4gbWVyZ2UgcG9p
bnQgLT4gLi4uLi4uCisgICAgLy8KKyAgICAvLyBBZnRlcjoKKyAgICAvLyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAob2YgY291cnNlLCBzdWNoIGVkZ2VzIGNhbiBiZSBzZWVuKQorICAgIC8vICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcF9yZXQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICAg
Ly8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHwKKyAgICAvLyAgICAgICAgIGVudHJ5IC0+IGdlbmVyYXRvciBzd2l0Y2ggLS0tLT4gb3Bfc2F2
ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICBvcF9yZXQgICAgICAgICAg
ICAgICAgICAgfAorICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgXiAgICAg
ICAgICAgICAgICAgICAgICB8CisgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICArLS0tLS0t
LS0tLS0tLS0+IG9wX3Jlc3VtZSAtLS0tLT4gbWVyZ2UgcG9pbnQgLT4gLi4uLi4uKy4uLi4uLT4g
b3Bfc2F2ZSAgICAgICAgICAgICAgICAgIHwKKyAgICAvLyAgICAgICAgICAgICAgICAgICAgICAg
IHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdgorICAgIC8vICAgICAgICAgICAgICAg
ICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tPiBvcF9yZXN1bWUgLS0tLT4gbWVyZ2UgcG9pbnQgLT4gLi4uLi4uCisgICAgLy8KKyAg
ICAvLyBJbiByZXN1bWVkIHZhcmlhYmxlcyBhbmFseXNpcywgd2UganVzdCBydW4gdGhlIGxpdmVu
ZXNzIGFuYWx5c2lzIGFnYWluIG9udG8gdGhpcyAiQWZ0ZXIiIGdyYXBoLiBUaGUgYW5hbHlzaXMg
ZXh0cmFjdHMgdGhlIGxpdmVuZXNzIGF0IGVhY2ggbWVyZ2UgcG9pbnQsCisgICAgLy8gYW5kIHRo
aXMgbGl2ZW5lc3Mgb25seSBjb25zaWRlcnMgdGhlIHJlYWNoYWJsZSBibG9ja3MgZnJvbSB0aGUg
dGFyZ2V0IG9wX3Jlc3VtZS4gVGhlIHJlc3VsdCByZWdpc3RlcnMgYXJlIHNtYWxsZXIgc2V0IHRo
YW4gdGhlIHNldCB3aGljaCBpcyBleHRyYWN0ZWQgaW4KKyAgICAvLyB0aGUgcHJldmlvdXMgbGl2
ZW5lc3MgYW5hbHlzaXMuCisgICAgLy8KKyAgICAvLyBJbiBzYXZlZCB2YXJpYWJsZXMgYW5hbHlz
aXMsIHdlIHJ1biB0aGUgZm9yd2FyZCBhbmFseXNpcyBvbnRvIHRoaXMgIkFmdGVyIiBncmFwaC4g
SW4gdGhpcyBmb3J3YXJkIGFuYWx5c2lzLCB3ZSBwcm9wYWdhdGUgdGhlICJkZWYicy4KKyAgICAv
LyBUaGlzIGFuYWx5c2lzIGV4dHJhY3RzIHRoZSBuZXdseSBkZWYtZWQgcmVnaXN0ZXJzIHRoYXQg
Y2FuIHJlYWNoIHRvIHRoZSBvcF9zYXZlIHBvaW50LiBCdXQgdGhpcyBuZXdseSBkZWYtZWQgcmVn
aXN0ZXJzIGluY2x1ZGUgdGhlIHJlZ2lzdGVycyB0aGF0IHdvbid0IGJlCisgICAgLy8gdXNlZCBp
biB0aGUgc3Vic2VxdWVudCBuZXh0KCkgY2FsbHMgYWZ0ZXIgdGhpcyBvcF9zYXZlLiBTbyB3ZSBl
eHRyYWN0IHRoZSBuZWNlc3NhcmlseSBzYXZlZCByZWdpc3RlcnMgYnkgbWFza2luZyBsaXZlIHJl
Z2lzdGVycyB3aXRoIHRoaXMgbmV3bHkgZGVmLWVkIHJlZ2lzdGVycyBiaXQgc2V0LgorCisgICAg
eworICAgICAgICBHZW5lcmF0b3JMaXZlbmVzc0FuYWx5c2lzIHBhc3MoKnRoaXMpOworICAgICAg
ICBwYXNzLnJ1bigpOworICAgICAgICBmb3IgKFlpZWxkRGF0YSYgZGF0YSA6IG1feWllbGRzKQor
ICAgICAgICAgICAgZGF0YS5saXZlbmVzcyA9IHBhc3MuZ2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29k
ZU9mZnNldChkYXRhLm1lcmdlUG9pbnQpOworICAgIH0KKworICAgIHsKKyAgICAgICAgUmVzdW1l
ZFZhcmlhYmxlc0FuYWx5c2lzIHBhc3MoKnRoaXMpOworICAgICAgICBwYXNzLnJ1bigpOworICAg
ICAgICBmb3IgKFlpZWxkRGF0YSYgZGF0YSA6IG1feWllbGRzKSB7CisgICAgICAgICAgICBkYXRh
LnJlc3VtZWQgPSBkYXRhLmxpdmVuZXNzOworICAgICAgICAgICAgZGF0YS5yZXN1bWVkLmZpbHRl
cihwYXNzLmdldFJlc3VtZWRWYXJpYWJsZXNJbmZvQXRCeXRlY29kZU9mZnNldChkYXRhLm1lcmdl
UG9pbnQpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHsKKyAgICAgICAgU2F2ZWRWYXJpYWJs
ZXNBbmFseXNpcyBwYXNzKCp0aGlzKTsKKyAgICAgICAgcGFzcy5ydW4oKTsKKyAgICAgICAgZm9y
IChZaWVsZERhdGEmIGRhdGEgOiBtX3lpZWxkcykgeworICAgICAgICAgICAgZGF0YS5zYXZlZCA9
IGRhdGEubGl2ZW5lc3M7CisgICAgICAgICAgICBkYXRhLnNhdmVkLmZpbHRlcihwYXNzLmdldFNh
dmVkVmFyaWFibGVzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQoZGF0YS5zYXZlUG9pbnQpKTsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIFVubGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBtX2dyYXBo
LmNvZGVCbG9jaygpOworICAgIGZvciAoY29uc3QgWWllbGREYXRhJiBkYXRhIDogbV95aWVsZHMp
IHsKKyAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHNjb3BlID0gdmlydHVhbFJlZ2lzdGVyRm9yQXJn
dW1lbnQoNSk7CisKKyAgICAgICAgLy8gb3Bfc2F2ZS4KKyAgICAgICAgZGF0YS5zYXZlZC5mb3JF
YWNoU2V0Qml0KFsmXShzaXplX3QgaW5kZXgpIHsKKyAgICAgICAgICAgIFZpcnR1YWxSZWdpc3Rl
ciBvcGVyYW5kID0gdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaW5kZXgpOworICAgICAgICAgICAg
U3RvcmFnZSBzdG9yYWdlID0gc3RvcmFnZUZvckdlbmVyYXRvckxvY2FsKGluZGV4KTsKKworICAg
ICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0KGRhdGEuc2F2ZVBvaW50LCBCeXRlY29kZU1v
ZGlmaWNhdGlvblNldDo6SW5zZXJ0ZWRCeXRlY29kZSB7IHsKKyAgICAgICAgICAgICAgICBvcF9w
dXRfdG9fc2NvcGUsCisgICAgICAgICAgICAgICAgc2NvcGUub2Zmc2V0KCksIC8vIHNjb3BlCisg
ICAgICAgICAgICAgICAgc3RvcmFnZS5pZGVudGlmaWVySW5kZXgsIC8vIGlkZW50aWZpZXIKKyAg
ICAgICAgICAgICAgICBvcGVyYW5kLm9mZnNldCgpLCAvLyB2YWx1ZQorICAgICAgICAgICAgICAg
IEdldFB1dEluZm8oRG9Ob3RUaHJvd0lmTm90Rm91bmQsIExvY2FsQ2xvc3VyZVZhciwgSW5pdGlh
bGl6YXRpb25Nb2RlOjpOb3RJbml0aWFsaXphdGlvbikub3BlcmFuZCgpLCAvLyBpbmZvCisgICAg
ICAgICAgICAgICAgbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlSW5kZXgsIC8vIHN5bWJvbCB0
YWJsZSBjb25zdGFudCBpbmRleAorICAgICAgICAgICAgICAgIHN0b3JhZ2Uuc2NvcGVPZmZzZXQu
b2Zmc2V0KCksIC8vIHNjb3BlIG9mZnNldAorICAgICAgICAgICAgfSB9KTsKKyAgICAgICAgfSk7
CisKKyAgICAgICAgLy8gb3BfcmVzdW1lLgorICAgICAgICBkYXRhLnJlc3VtZWQuZm9yRWFjaFNl
dEJpdChbJl0oc2l6ZV90IGluZGV4KSB7CisgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgb3Bl
cmFuZCA9IHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGluZGV4KTsKKyAgICAgICAgICAgIFN0b3Jh
Z2Ugc3RvcmFnZSA9IHN0b3JhZ2VGb3JHZW5lcmF0b3JMb2NhbChpbmRleCk7CisKKyAgICAgICAg
ICAgIFVubGlua2VkVmFsdWVQcm9maWxlIHByb2ZpbGUgPSBjb2RlQmxvY2stPmFkZFZhbHVlUHJv
ZmlsZSgpOworICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0KGRhdGEucmVzdW1lUG9p
bnQsIEJ5dGVjb2RlTW9kaWZpY2F0aW9uU2V0OjpJbnNlcnRlZEJ5dGVjb2RlIHsgeworICAgICAg
ICAgICAgICAgIG9wX2dldF9mcm9tX3Njb3BlLAorICAgICAgICAgICAgICAgIG9wZXJhbmQub2Zm
c2V0KCksIC8vIGRzdAorICAgICAgICAgICAgICAgIHNjb3BlLm9mZnNldCgpLCAvLyBzY29wZQor
ICAgICAgICAgICAgICAgIHN0b3JhZ2UuaWRlbnRpZmllckluZGV4LCAvLyBpZGVudGlmaWVyCisg
ICAgICAgICAgICAgICAgR2V0UHV0SW5mbyhEb05vdFRocm93SWZOb3RGb3VuZCwgTG9jYWxDbG9z
dXJlVmFyLCBJbml0aWFsaXphdGlvbk1vZGU6Ok5vdEluaXRpYWxpemF0aW9uKS5vcGVyYW5kKCks
IC8vIGluZm8KKyAgICAgICAgICAgICAgICAwLCAvLyBsb2NhbCBzY29wZSBkZXB0aAorICAgICAg
ICAgICAgICAgIHN0b3JhZ2Uuc2NvcGVPZmZzZXQub2Zmc2V0KCksIC8vIHNjb3BlIG9mZnNldAor
ICAgICAgICAgICAgICAgIHByb2ZpbGUgLy8gcHJvZmlsZQorICAgICAgICAgICAgfSB9KTsKKyAg
ICAgICAgfSk7CisKKyAgICAgICAgLy8gQ2xpcCB0aGUgdW5uZWNlc3NhcnkgYnl0ZWNvZGVzLgor
ICAgICAgICBtX2luc2VydGlvblNldC5yZW1vdmVCeXRlY29kZShkYXRhLnNhdmVQb2ludCk7Cisg
ICAgICAgIG1faW5zZXJ0aW9uU2V0LnJlbW92ZUJ5dGVjb2RlKGRhdGEucmVzdW1lUG9pbnQpOwor
ICAgIH0KKworICAgIG1faW5zZXJ0aW9uU2V0LmV4ZWN1dGUoKTsKK30KKwordm9pZCBwZXJmb3Jt
R2VuZXJhdG9yaWZpY2F0aW9uKFVubGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFVubGlua2Vk
Q29kZUJsb2NrOjpVbnBhY2tlZEluc3RydWN0aW9ucyYgaW5zdHJ1Y3Rpb25zLCBTeW1ib2xUYWJs
ZSogZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZSwgaW50IGdlbmVyYXRvckZyYW1lU3ltYm9sVGFi
bGVJbmRleCkKK3sKKyAgICBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbiBwYXNzKGNvZGVCbG9j
aywgaW5zdHJ1Y3Rpb25zLCBnZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlLCBnZW5lcmF0b3JGcmFt
ZVN5bWJvbFRhYmxlSW5kZXgpOworICAgIHBhc3MucnVuKCk7Cit9CisKK30gLy8gbmFtZXNwYWNl
IEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
R2VuZXJhdG9yaWZpY2F0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYjdlYzk2ZWQ3MGRiYmEyMjEx
MWViMTM3NzMzZmIyMDA1NWIxMTFhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmgKQEAgLTAsMCArMSwz
NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRl
YUBnbWFpbC5jb20+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiVW5saW5r
ZWRDb2RlQmxvY2suaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIFN5bWJvbFRhYmxlOwor
Cit2b2lkIHBlcmZvcm1HZW5lcmF0b3JpZmljYXRpb24oVW5saW5rZWRDb2RlQmxvY2sqLCBVbmxp
bmtlZENvZGVCbG9jazo6VW5wYWNrZWRJbnN0cnVjdGlvbnMmLCBTeW1ib2xUYWJsZSogZ2VuZXJh
dG9yRnJhbWVTeW1ib2xUYWJsZSwgaW50IGdlbmVyYXRvckZyYW1lU3ltYm9sVGFibGVJbmRleCk7
CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlR3JhcGguaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZUdyYXBoLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjc1NTg0YjBmYTk0NzNlYjExMzI5Yzg5YTA3
OTljMDFkZTU1YjI4MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZUdyYXBoLmgKQEAgLTAsMCArMSwxMTQgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTYgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIEJ5dGVjb2RlR3JhcGhfaAorI2RlZmluZSBCeXRlY29kZUdyYXBoX2gKKwor
I2luY2x1ZGUgIkJ5dGVjb2RlQmFzaWNCbG9jay5oIgorI2luY2x1ZGUgPHd0Zi9JdGVyYXRvclJh
bmdlLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgSlNDIHsKKworY2xh
c3MgQnl0ZWNvZGVCYXNpY0Jsb2NrOworCit0ZW1wbGF0ZTx0eXBlbmFtZSBCbG9jaz4KK2NsYXNz
IEJ5dGVjb2RlR3JhcGggeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKEJ5dGVjb2RlR3JhcGgpOworcHVibGljOgorICAgIHR5cGVkZWYgVmVj
dG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiBCYXNpY0Jsb2Nrc1ZlY3Rv
cjsKKworICAgIGlubGluZSBCeXRlY29kZUdyYXBoKEJsb2NrKiwgdHlwZW5hbWUgQmxvY2s6OlVu
cGFja2VkSW5zdHJ1Y3Rpb25zJik7CisKKyAgICBCbG9jayogY29kZUJsb2NrKCkgY29uc3QgeyBy
ZXR1cm4gbV9jb2RlQmxvY2s7IH0KKworICAgIEJhc2ljQmxvY2tzVmVjdG9yJiBiYXNpY0Jsb2Nr
cygpIHsgcmV0dXJuIG1fYmFzaWNCbG9ja3M7IH0KKworICAgIHR5cGVuYW1lIEJsb2NrOjpVbnBh
Y2tlZEluc3RydWN0aW9ucyYgaW5zdHJ1Y3Rpb25zKCkgeyByZXR1cm4gbV9pbnN0cnVjdGlvbnM7
IH0KKworICAgIFdURjo6SXRlcmF0b3JSYW5nZTxCYXNpY0Jsb2Nrc1ZlY3Rvcjo6cmV2ZXJzZV9p
dGVyYXRvcj4gYmFzaWNCbG9ja3NJblJldmVyc2VPcmRlcigpCisgICAgeworICAgICAgICByZXR1
cm4gV1RGOjptYWtlSXRlcmF0b3JSYW5nZShtX2Jhc2ljQmxvY2tzLnJiZWdpbigpLCBtX2Jhc2lj
QmxvY2tzLnJlbmQoKSk7CisgICAgfQorCisgICAgc3RhdGljIGJvb2wgYmxvY2tDb250YWluc0J5
dGVjb2RlT2Zmc2V0KEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2Rl
T2Zmc2V0KQorICAgIHsKKyAgICAgICAgdW5zaWduZWQgbGVhZGVyT2Zmc2V0ID0gYmxvY2stPmxl
YWRlckJ5dGVjb2RlT2Zmc2V0KCk7CisgICAgICAgIHJldHVybiBieXRlY29kZU9mZnNldCA+PSBs
ZWFkZXJPZmZzZXQgJiYgYnl0ZWNvZGVPZmZzZXQgPCBsZWFkZXJPZmZzZXQgKyBibG9jay0+dG90
YWxCeXRlY29kZUxlbmd0aCgpOworICAgIH0KKworICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogZmlu
ZEJhc2ljQmxvY2tGb3JCeXRlY29kZU9mZnNldCh1bnNpZ25lZCBieXRlY29kZU9mZnNldCkKKyAg
ICB7CisgICAgICAgIC8qCisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9i
YXNpY0Jsb2Nrcy5zaXplKCk7IGkrKykgeworICAgICAgICAgICAgICAgIGlmIChibG9ja0NvbnRh
aW5zQnl0ZWNvZGVPZmZzZXQobV9iYXNpY0Jsb2Nrc1tpXS5nZXQoKSwgYnl0ZWNvZGVPZmZzZXQp
KQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbV9iYXNpY0Jsb2Nrc1tpXS5nZXQoKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAqLworCisgICAgICAg
IHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+KiBiYXNpY0Jsb2NrID0gYXBwcm94
aW1hdGVCaW5hcnlTZWFyY2g8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4sIHVu
c2lnbmVkPihtX2Jhc2ljQmxvY2tzLCBtX2Jhc2ljQmxvY2tzLnNpemUoKSwgYnl0ZWNvZGVPZmZz
ZXQsIFtdIChzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiogYmFzaWNCbG9jaykg
eyByZXR1cm4gKCpiYXNpY0Jsb2NrKS0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKTsgfSk7CisgICAg
ICAgIC8vIFdlIGZvdW5kIHRoZSBibG9jayB3ZSB3ZXJlIGxvb2tpbmcgZm9yLgorICAgICAgICBp
ZiAoYmxvY2tDb250YWluc0J5dGVjb2RlT2Zmc2V0KCgqYmFzaWNCbG9jaykuZ2V0KCksIGJ5dGVj
b2RlT2Zmc2V0KSkKKyAgICAgICAgICAgIHJldHVybiAoKmJhc2ljQmxvY2spLmdldCgpOworCisg
ICAgICAgIC8vIEJhc2ljIGJsb2NrIGlzIHRvIHRoZSBsZWZ0IG9mIHRoZSByZXR1cm5lZCBibG9j
ay4KKyAgICAgICAgaWYgKGJ5dGVjb2RlT2Zmc2V0IDwgKCpiYXNpY0Jsb2NrKS0+bGVhZGVyQnl0
ZWNvZGVPZmZzZXQoKSkgeworICAgICAgICAgICAgQVNTRVJUKGJhc2ljQmxvY2sgLSAxID49IG1f
YmFzaWNCbG9ja3MuZGF0YSgpKTsKKyAgICAgICAgICAgIEFTU0VSVChibG9ja0NvbnRhaW5zQnl0
ZWNvZGVPZmZzZXQoYmFzaWNCbG9ja1stMV0uZ2V0KCksIGJ5dGVjb2RlT2Zmc2V0KSk7CisgICAg
ICAgICAgICByZXR1cm4gYmFzaWNCbG9ja1stMV0uZ2V0KCk7CisgICAgICAgIH0KKworICAgICAg
ICAvLyBCYXNpYyBibG9jayBpcyB0byB0aGUgcmlnaHQgb2YgdGhlIHJldHVybmVkIGJsb2NrLgor
ICAgICAgICBBU1NFUlQoJmJhc2ljQmxvY2tbMV0gPD0gJm1fYmFzaWNCbG9ja3MubGFzdCgpKTsK
KyAgICAgICAgQVNTRVJUKGJsb2NrQ29udGFpbnNCeXRlY29kZU9mZnNldChiYXNpY0Jsb2NrWzFd
LmdldCgpLCBieXRlY29kZU9mZnNldCkpOworICAgICAgICByZXR1cm4gYmFzaWNCbG9ja1sxXS5n
ZXQoKTsKKyAgICB9CisKKyAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGZpbmRCYXNpY0Jsb2NrV2l0
aExlYWRlck9mZnNldCh1bnNpZ25lZCBsZWFkZXJPZmZzZXQpCisgICAgeworICAgICAgICByZXR1
cm4gKCp0cnlCaW5hcnlTZWFyY2g8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4s
IHVuc2lnbmVkPihtX2Jhc2ljQmxvY2tzLCBtX2Jhc2ljQmxvY2tzLnNpemUoKSwgbGVhZGVyT2Zm
c2V0LCBbXSAoc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4qIGJhc2ljQmxvY2sp
IHsgcmV0dXJuICgqYmFzaWNCbG9jayktPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCk7IH0pKS5nZXQo
KTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQmxvY2sqIG1fY29kZUJsb2NrOworICAgIEJhc2lj
QmxvY2tzVmVjdG9yIG1fYmFzaWNCbG9ja3M7CisgICAgdHlwZW5hbWUgQmxvY2s6OlVucGFja2Vk
SW5zdHJ1Y3Rpb25zJiBtX2luc3RydWN0aW9uczsKK307CisKKwordGVtcGxhdGU8dHlwZW5hbWUg
QmxvY2s+CitCeXRlY29kZUdyYXBoPEJsb2NrPjo6Qnl0ZWNvZGVHcmFwaChCbG9jayogY29kZUJs
b2NrLCB0eXBlbmFtZSBCbG9jazo6VW5wYWNrZWRJbnN0cnVjdGlvbnMmIGluc3RydWN0aW9ucykK
KyAgICA6IG1fY29kZUJsb2NrKGNvZGVCbG9jaykKKyAgICAsIG1faW5zdHJ1Y3Rpb25zKGluc3Ry
dWN0aW9ucykKK3sKKyAgICBBU1NFUlQobV9jb2RlQmxvY2spOworICAgIEJ5dGVjb2RlQmFzaWNC
bG9jazo6Y29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MobV9jb2RlQmxvY2ssIGluc3RydWN0aW9u
cy5iZWdpbigpLCBpbnN0cnVjdGlvbnMuc2l6ZSgpLCBtX2Jhc2ljQmxvY2tzKTsKKyAgICBBU1NF
UlQobV9iYXNpY0Jsb2Nrcy5zaXplKCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKyNlbmRp
ZiAvLyBCeXRlY29kZUdyYXBoX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAKaW5kZXggMTdlODJhMmZi
YmEwMTUwNDNlOTlkMzRlZDI1NjkzNzJiMzZmN2E4NS4uZWI0NTlkMTI5N2M5ZjczOWVlOWZiYWEx
MzAzN2Y4OWY4ZTg2YWIyZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAKQEAgLTMxLDc0ICszMSwy
MSBAQAogI2luY2x1ZGUgIkJ5dGVjb2RlVXNlRGVmLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgi
CiAjaW5jbHVkZSAiRnVsbEJ5dGVjb2RlTGl2ZW5lc3MuaCIKKyNpbmNsdWRlICJJbnRlcnByZXRl
cklubGluZXMuaCIKICNpbmNsdWRlICJQcmVjaXNlSnVtcFRhcmdldHMuaCIKIAogbmFtZXNwYWNl
IEpTQyB7CiAKIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5
c2lzKENvZGVCbG9jayogY29kZUJsb2NrKQotICAgIDogbV9jb2RlQmxvY2soY29kZUJsb2NrKQor
ICAgIDogbV9ncmFwaChjb2RlQmxvY2ssIGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkpCiB7Ci0g
ICAgQVNTRVJUKG1fY29kZUJsb2NrKTsKICAgICBjb21wdXRlKCk7CiB9CiAKLXN0YXRpYyBib29s
IGlzVmFsaWRSZWdpc3RlckZvckxpdmVuZXNzKENvZGVCbG9jayogY29kZUJsb2NrLCBpbnQgb3Bl
cmFuZCkKLXsKLSAgICBpZiAoY29kZUJsb2NrLT5pc0NvbnN0YW50UmVnaXN0ZXJJbmRleChvcGVy
YW5kKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIAotICAgIFZpcnR1YWxSZWdpc3RlciB2
aXJ0dWFsUmVnKG9wZXJhbmQpOwotICAgIHJldHVybiB2aXJ0dWFsUmVnLmlzTG9jYWwoKTsKLX0K
LQotc3RhdGljIHVuc2lnbmVkIGdldExlYWRlck9mZnNldEZvckJhc2ljQmxvY2soc3RkOjp1bmlx
dWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4qIGJhc2ljQmxvY2spCi17Ci0gICAgcmV0dXJuICgq
YmFzaWNCbG9jayktPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCk7Ci19Ci0KLXN0YXRpYyBCeXRlY29k
ZUJhc2ljQmxvY2sqIGZpbmRCYXNpY0Jsb2NrV2l0aExlYWRlck9mZnNldChWZWN0b3I8c3RkOjp1
bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+JiBiYXNpY0Jsb2NrcywgdW5zaWduZWQgbGVh
ZGVyT2Zmc2V0KQotewotICAgIHJldHVybiAoKnRyeUJpbmFyeVNlYXJjaDxzdGQ6OnVuaXF1ZV9w
dHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiwgdW5zaWduZWQ+KGJhc2ljQmxvY2tzLCBiYXNpY0Jsb2Nr
cy5zaXplKCksIGxlYWRlck9mZnNldCwgZ2V0TGVhZGVyT2Zmc2V0Rm9yQmFzaWNCbG9jaykpLmdl
dCgpOwotfQotCi1zdGF0aWMgYm9vbCBibG9ja0NvbnRhaW5zQnl0ZWNvZGVPZmZzZXQoQnl0ZWNv
ZGVCYXNpY0Jsb2NrKiBibG9jaywgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpCi17Ci0gICAgdW5z
aWduZWQgbGVhZGVyT2Zmc2V0ID0gYmxvY2stPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCk7Ci0gICAg
cmV0dXJuIGJ5dGVjb2RlT2Zmc2V0ID49IGxlYWRlck9mZnNldCAmJiBieXRlY29kZU9mZnNldCA8
IGxlYWRlck9mZnNldCArIGJsb2NrLT50b3RhbEJ5dGVjb2RlTGVuZ3RoKCk7Ci19Ci0KLXN0YXRp
YyBCeXRlY29kZUJhc2ljQmxvY2sqIGZpbmRCYXNpY0Jsb2NrRm9yQnl0ZWNvZGVPZmZzZXQoVmVj
dG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9ja3MsIHVu
c2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KQotewotLyoKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgYmFzaWNCbG9ja3Muc2l6ZSgpOyBpKyspIHsKLSAgICAgICAgaWYgKGJsb2NrQ29udGFpbnNC
eXRlY29kZU9mZnNldChiYXNpY0Jsb2Nrc1tpXS5nZXQoKSwgYnl0ZWNvZGVPZmZzZXQpKQotICAg
ICAgICAgICAgcmV0dXJuIGJhc2ljQmxvY2tzW2ldLmdldCgpOwotICAgIH0KLSAgICByZXR1cm4g
MDsKLSovCi0gICAgc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4qIGJhc2ljQmxv
Y2sgPSBhcHByb3hpbWF0ZUJpbmFyeVNlYXJjaDxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNp
Y0Jsb2NrPiwgdW5zaWduZWQ+KAotICAgICAgICBiYXNpY0Jsb2NrcywgYmFzaWNCbG9ja3Muc2l6
ZSgpLCBieXRlY29kZU9mZnNldCwgZ2V0TGVhZGVyT2Zmc2V0Rm9yQmFzaWNCbG9jayk7Ci0gICAg
Ly8gV2UgZm91bmQgdGhlIGJsb2NrIHdlIHdlcmUgbG9va2luZyBmb3IuCi0gICAgaWYgKGJsb2Nr
Q29udGFpbnNCeXRlY29kZU9mZnNldCgoKmJhc2ljQmxvY2spLmdldCgpLCBieXRlY29kZU9mZnNl
dCkpCi0gICAgICAgIHJldHVybiAoKmJhc2ljQmxvY2spLmdldCgpOwotCi0gICAgLy8gQmFzaWMg
YmxvY2sgaXMgdG8gdGhlIGxlZnQgb2YgdGhlIHJldHVybmVkIGJsb2NrLgotICAgIGlmIChieXRl
Y29kZU9mZnNldCA8ICgqYmFzaWNCbG9jayktPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCkpIHsKLSAg
ICAgICAgQVNTRVJUKGJhc2ljQmxvY2sgLSAxID49IGJhc2ljQmxvY2tzLmRhdGEoKSk7Ci0gICAg
ICAgIEFTU0VSVChibG9ja0NvbnRhaW5zQnl0ZWNvZGVPZmZzZXQoYmFzaWNCbG9ja1stMV0uZ2V0
KCksIGJ5dGVjb2RlT2Zmc2V0KSk7Ci0gICAgICAgIHJldHVybiBiYXNpY0Jsb2NrWy0xXS5nZXQo
KTsKLSAgICB9Ci0KLSAgICAvLyBCYXNpYyBibG9jayBpcyB0byB0aGUgcmlnaHQgb2YgdGhlIHJl
dHVybmVkIGJsb2NrLgotICAgIEFTU0VSVCgmYmFzaWNCbG9ja1sxXSA8PSAmYmFzaWNCbG9ja3Mu
bGFzdCgpKTsKLSAgICBBU1NFUlQoYmxvY2tDb250YWluc0J5dGVjb2RlT2Zmc2V0KGJhc2ljQmxv
Y2tbMV0uZ2V0KCksIGJ5dGVjb2RlT2Zmc2V0KSk7Ci0gICAgcmV0dXJuIGJhc2ljQmxvY2tbMV0u
Z2V0KCk7Ci19Ci0KIC8vIFNpbXBsaWZpZWQgaW50ZXJmYWNlIHRvIGJ5dGVjb2RlIHVzZS9kZWYs
IHdoaWNoIGRldGVybWluZXMgZGVmcyBmaXJzdCBhbmQgdGhlbiB1c2VzLCBhbmQgaW5jbHVkZXMK
IC8vIGV4Y2VwdGlvbiBoYW5kbGVycyBpbiB0aGUgdXNlcy4KIHRlbXBsYXRlPHR5cGVuYW1lIFVz
ZUZ1bmN0b3IsIHR5cGVuYW1lIERlZkZ1bmN0b3I+Ci1zdGF0aWMgdm9pZCBzdGVwT3Zlckluc3Ry
dWN0aW9uKENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrLCBW
ZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+JiBiYXNpY0Jsb2Nrcywg
dW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIGNvbnN0IFVzZUZ1bmN0b3ImIHVzZSwgY29uc3QgRGVm
RnVuY3RvciYgZGVmKQorc3RhdGljIHZvaWQgc3RlcE92ZXJJbnN0cnVjdGlvbihCeXRlY29kZUdy
YXBoPENvZGVCbG9jaz4mIGdyYXBoLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgY29uc3QgVXNl
RnVuY3RvciYgdXNlLCBjb25zdCBEZWZGdW5jdG9yJiBkZWYpCiB7CiAgICAgLy8gVGhpcyBhYnN0
cmFjdGx5IGV4ZWN1dGUgdGhlIGluc3RydWN0aW9uIGluIHJldmVyc2UuIEluc3RydWN0aW9ucyBs
b2dpY2FsbHkgZmlyc3QgdXNlIG9wZXJhbmRzIGFuZAogICAgIC8vIHRoZW4gZGVmaW5lIG9wZXJh
bmRzLiBUaGlzIGxvZ2ljYWwgb3JkZXJpbmcgaXMgbmVjZXNzYXJ5IGZvciBvcGVyYXRpb25zIHRo
YXQgdXNlIGFuZCBkZWYgdGhlIHNhbWUKQEAgLTExNSw0MSArNjIsMzUgQEAgc3RhdGljIHZvaWQg
c3RlcE92ZXJJbnN0cnVjdGlvbihDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Js
b2NrKiBibG9jaywKICAgICAvLyB1c2VzIGJlZm9yZSBkZWZzLCB0aGVuIHRoZSBhZGQgb3BlcmF0
aW9uIGFib3ZlIHdvdWxkIGFwcGVhciB0byBub3QgaGF2ZSBsb2MxIGxpdmUsIHNpbmNlIHdlJ2QK
ICAgICAvLyBmaXJzdCBhZGQgaXQgdG8gdGhlIG91dCBzZXQgKHRoZSB1c2UpLCBhbmQgdGhlbiB3
ZSdkIHJlbW92ZSBpdCAodGhlIGRlZikuCiAgICAgCisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sg
PSBncmFwaC5jb2RlQmxvY2soKTsKKwogICAgIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQo
Ci0gICAgICAgIGNvZGVCbG9jaywgYmxvY2ssIGJ5dGVjb2RlT2Zmc2V0LAotICAgICAgICBbJl0g
KENvZGVCbG9jayogY29kZUJsb2NrLCBJbnN0cnVjdGlvbiosIE9wY29kZUlELCBpbnQgb3BlcmFu
ZCkgewotICAgICAgICAgICAgaWYgKGlzVmFsaWRSZWdpc3RlckZvckxpdmVuZXNzKGNvZGVCbG9j
aywgb3BlcmFuZCkpCisgICAgICAgIGNvZGVCbG9jaywgYnl0ZWNvZGVPZmZzZXQsCisgICAgICAg
IFsmXSAoQ29kZUJsb2NrKiwgSW5zdHJ1Y3Rpb24qLCBPcGNvZGVJRCwgaW50IG9wZXJhbmQpIHsK
KyAgICAgICAgICAgIGlmIChpc1ZhbGlkUmVnaXN0ZXJGb3JMaXZlbmVzcyhvcGVyYW5kKSkKICAg
ICAgICAgICAgICAgICBkZWYoVmlydHVhbFJlZ2lzdGVyKG9wZXJhbmQpLnRvTG9jYWwoKSk7CiAg
ICAgICAgIH0pOwogCiAgICAgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCgKLSAgICAgICAg
Y29kZUJsb2NrLCBibG9jaywgYnl0ZWNvZGVPZmZzZXQsCi0gICAgICAgIFsmXSAoQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIEluc3RydWN0aW9uKiwgT3Bjb2RlSUQsIGludCBvcGVyYW5kKSB7Ci0gICAg
ICAgICAgICBpZiAoaXNWYWxpZFJlZ2lzdGVyRm9yTGl2ZW5lc3MoY29kZUJsb2NrLCBvcGVyYW5k
KSkKKyAgICAgICAgY29kZUJsb2NrLCBieXRlY29kZU9mZnNldCwKKyAgICAgICAgWyZdIChDb2Rl
QmxvY2sqLCBJbnN0cnVjdGlvbiosIE9wY29kZUlELCBpbnQgb3BlcmFuZCkgeworICAgICAgICAg
ICAgaWYgKGlzVmFsaWRSZWdpc3RlckZvckxpdmVuZXNzKG9wZXJhbmQpKQogICAgICAgICAgICAg
ICAgIHVzZShWaXJ0dWFsUmVnaXN0ZXIob3BlcmFuZCkudG9Mb2NhbCgpKTsKICAgICAgICAgfSk7
CiAKICAgICAvLyBJZiB3ZSBoYXZlIGFuIGV4Y2VwdGlvbiBoYW5kbGVyLCB3ZSB3YW50IHRoZSBs
aXZlLWluIHZhcmlhYmxlcyBvZiB0aGUgCiAgICAgLy8gZXhjZXB0aW9uIGhhbmRsZXIgYmxvY2sg
dG8gYmUgaW5jbHVkZWQgaW4gdGhlIGxpdmUtaW4gb2YgdGhpcyBwYXJ0aWN1bGFyIGJ5dGVjb2Rl
LgogICAgIGlmIChIYW5kbGVySW5mbyogaGFuZGxlciA9IGNvZGVCbG9jay0+aGFuZGxlckZvckJ5
dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KSkgewotICAgICAgICAvLyBGSVhNRTogVGhpcyBy
ZXN1bWUgY2hlY2sgc2hvdWxkIG5vdCBiZSBuZWVkZWQuCi0gICAgICAgIC8vIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTkyODEKLSAgICAgICAgSW50ZXJwcmV0ZXIq
IGludGVycHJldGVyID0gY29kZUJsb2NrLT52bSgpLT5pbnRlcnByZXRlcjsKLSAgICAgICAgSW5z
dHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luID0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5i
ZWdpbigpOwotICAgICAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSAmaW5zdHJ1Y3Rpb25z
QmVnaW5bYnl0ZWNvZGVPZmZzZXRdOwotICAgICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGludGVy
cHJldGVyLT5nZXRPcGNvZGVJRChpbnN0cnVjdGlvbi0+dS5vcGNvZGUpOwotICAgICAgICBpZiAo
b3Bjb2RlSUQgIT0gb3BfcmVzdW1lKSB7Ci0gICAgICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2sq
IGhhbmRsZXJCbG9jayA9IGZpbmRCYXNpY0Jsb2NrV2l0aExlYWRlck9mZnNldChiYXNpY0Jsb2Nr
cywgaGFuZGxlci0+dGFyZ2V0KTsKLSAgICAgICAgICAgIEFTU0VSVChoYW5kbGVyQmxvY2spOwot
ICAgICAgICAgICAgaGFuZGxlckJsb2NrLT5pbigpLmZvckVhY2hTZXRCaXQodXNlKTsKLSAgICAg
ICAgfQorICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGhhbmRsZXJCbG9jayA9IGdyYXBoLmZp
bmRCYXNpY0Jsb2NrV2l0aExlYWRlck9mZnNldChoYW5kbGVyLT50YXJnZXQpOworICAgICAgICBB
U1NFUlQoaGFuZGxlckJsb2NrKTsKKyAgICAgICAgaGFuZGxlckJsb2NrLT5pbigpLmZvckVhY2hT
ZXRCaXQodXNlKTsKICAgICB9CiB9CiAKLXN0YXRpYyB2b2lkIHN0ZXBPdmVySW5zdHJ1Y3Rpb24o
Q29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2ssIFZlY3Rvcjxz
dGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mIGJhc2ljQmxvY2tzLCB1bnNpZ25l
ZCBieXRlY29kZU9mZnNldCwgRmFzdEJpdFZlY3RvciYgb3V0KQorc3RhdGljIHZvaWQgc3RlcE92
ZXJJbnN0cnVjdGlvbihCeXRlY29kZUdyYXBoPENvZGVCbG9jaz4mIGdyYXBoLCB1bnNpZ25lZCBi
eXRlY29kZU9mZnNldCwgRmFzdEJpdFZlY3RvciYgb3V0KQogewogICAgIHN0ZXBPdmVySW5zdHJ1
Y3Rpb24oCi0gICAgICAgIGNvZGVCbG9jaywgYmxvY2ssIGJhc2ljQmxvY2tzLCBieXRlY29kZU9m
ZnNldCwKKyAgICAgICAgZ3JhcGgsIGJ5dGVjb2RlT2Zmc2V0LAogICAgICAgICBbJl0gKHVuc2ln
bmVkIGJpdEluZGV4KSB7CiAgICAgICAgICAgICAvLyBUaGlzIGlzIHRoZSB1c2UgZnVuY3Rvciwg
c28gd2Ugc2V0IHRoZSBiaXQuCiAgICAgICAgICAgICBvdXQuc2V0KGJpdEluZGV4KTsKQEAgLTE2
MCw3ICsxMDEsNyBAQCBzdGF0aWMgdm9pZCBzdGVwT3Zlckluc3RydWN0aW9uKENvZGVCbG9jayog
Y29kZUJsb2NrLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrLAogICAgICAgICB9KTsKIH0KIAot
c3RhdGljIHZvaWQgY29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCeXRlY29kZU9mZnNldChDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaywgVmVjdG9yPHN0ZDo6dW5p
cXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9ja3MsIHVuc2lnbmVkIHRhcmdl
dE9mZnNldCwgRmFzdEJpdFZlY3RvciYgcmVzdWx0KQorc3RhdGljIHZvaWQgY29tcHV0ZUxvY2Fs
TGl2ZW5lc3NGb3JCeXRlY29kZU9mZnNldChCeXRlY29kZUdyYXBoPENvZGVCbG9jaz4mIGdyYXBo
LCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrLCB1bnNpZ25lZCB0YXJnZXRPZmZzZXQsIEZhc3RC
aXRWZWN0b3ImIHJlc3VsdCkKIHsKICAgICBBU1NFUlQoIWJsb2NrLT5pc0V4aXRCbG9jaygpKTsK
ICAgICBBU1NFUlQoIWJsb2NrLT5pc0VudHJ5QmxvY2soKSk7CkBAIC0xNzIsNDQgKzExMyw0NCBA
QCBzdGF0aWMgdm9pZCBjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVC
bG9jayogY29kZUJsb2NrLCBCeXRlY29kZQogICAgICAgICBpZiAodGFyZ2V0T2Zmc2V0ID4gYnl0
ZWNvZGVPZmZzZXQpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgCi0gICAgICAgIHN0ZXBP
dmVySW5zdHJ1Y3Rpb24oY29kZUJsb2NrLCBibG9jaywgYmFzaWNCbG9ja3MsIGJ5dGVjb2RlT2Zm
c2V0LCBvdXQpOworICAgICAgICBzdGVwT3Zlckluc3RydWN0aW9uKGdyYXBoLCBieXRlY29kZU9m
ZnNldCwgb3V0KTsKICAgICB9CiAKICAgICByZXN1bHQuc2V0KG91dCk7CiB9CiAKLXN0YXRpYyB2
b2lkIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQmxvY2soQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5
dGVjb2RlQmFzaWNCbG9jayogYmxvY2ssIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVC
YXNpY0Jsb2NrPj4mIGJhc2ljQmxvY2tzKQorc3RhdGljIHZvaWQgY29tcHV0ZUxvY2FsTGl2ZW5l
c3NGb3JCbG9jayhCeXRlY29kZUdyYXBoPENvZGVCbG9jaz4mIGdyYXBoLCBCeXRlY29kZUJhc2lj
QmxvY2sqIGJsb2NrKQogewogICAgIGlmIChibG9jay0+aXNFeGl0QmxvY2soKSB8fCBibG9jay0+
aXNFbnRyeUJsb2NrKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBjb21wdXRlTG9jYWxMaXZlbmVz
c0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9jaywgYmxvY2ssIGJhc2ljQmxvY2tzLCBibG9jay0+
bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKSwgYmxvY2stPmluKCkpOworICAgIGNvbXB1dGVMb2NhbExp
dmVuZXNzRm9yQnl0ZWNvZGVPZmZzZXQoZ3JhcGgsIGJsb2NrLCBibG9jay0+bGVhZGVyQnl0ZWNv
ZGVPZmZzZXQoKSwgYmxvY2stPmluKCkpOwogfQogCiB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFs
eXNpczo6cnVuTGl2ZW5lc3NGaXhwb2ludCgpCiB7Ci0gICAgVW5saW5rZWRDb2RlQmxvY2sqIHVu
bGlua2VkQ29kZUJsb2NrID0gbV9jb2RlQmxvY2stPnVubGlua2VkQ29kZUJsb2NrKCk7CisgICAg
Q29kZUJsb2NrKiBjb2RlQmxvY2sgPSBtX2dyYXBoLmNvZGVCbG9jaygpOworICAgIFVubGlua2Vk
Q29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jayA9IGNvZGVCbG9jay0+dW5saW5rZWRDb2RlQmxv
Y2soKTsKICAgICB1bnNpZ25lZCBudW1iZXJPZlZhcmlhYmxlcyA9IHVubGlua2VkQ29kZUJsb2Nr
LT5tX251bUNhbGxlZUxvY2FsczsKIAotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2Jh
c2ljQmxvY2tzLnNpemUoKTsgaSsrKSB7Ci0gICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxv
Y2sgPSBtX2Jhc2ljQmxvY2tzW2ldLmdldCgpOworICAgIGZvciAoc3RkOjp1bmlxdWVfcHRyPEJ5
dGVjb2RlQmFzaWNCbG9jaz4mIGJsb2NrIDogbV9ncmFwaC5iYXNpY0Jsb2NrcygpKSB7CiAgICAg
ICAgIGJsb2NrLT5pbigpLnJlc2l6ZShudW1iZXJPZlZhcmlhYmxlcyk7CiAgICAgICAgIGJsb2Nr
LT5vdXQoKS5yZXNpemUobnVtYmVyT2ZWYXJpYWJsZXMpOwogICAgIH0KIAogICAgIGJvb2wgY2hh
bmdlZDsKLSAgICBtX2Jhc2ljQmxvY2tzLmxhc3QoKS0+aW4oKS5jbGVhckFsbCgpOwotICAgIG1f
YmFzaWNCbG9ja3MubGFzdCgpLT5vdXQoKS5jbGVhckFsbCgpOworICAgIEJ5dGVjb2RlQmFzaWNC
bG9jayogbGFzdEJsb2NrID0gbV9ncmFwaC5iYXNpY0Jsb2NrcygpLmxhc3QoKS5nZXQoKTsKKyAg
ICBsYXN0QmxvY2stPmluKCkuY2xlYXJBbGwoKTsKKyAgICBsYXN0QmxvY2stPm91dCgpLmNsZWFy
QWxsKCk7CiAgICAgRmFzdEJpdFZlY3RvciBuZXdPdXQ7Ci0gICAgbmV3T3V0LnJlc2l6ZShtX2Jh
c2ljQmxvY2tzLmxhc3QoKS0+b3V0KCkubnVtQml0cygpKTsKKyAgICBuZXdPdXQucmVzaXplKGxh
c3RCbG9jay0+b3V0KCkubnVtQml0cygpKTsKICAgICBkbyB7CiAgICAgICAgIGNoYW5nZWQgPSBm
YWxzZTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9iYXNpY0Jsb2Nrcy5zaXplKCkgLSAx
OyBpLS07KSB7Ci0gICAgICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrID0gbV9iYXNp
Y0Jsb2Nrc1tpXS5nZXQoKTsKKyAgICAgICAgZm9yIChzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVC
YXNpY0Jsb2NrPiYgYmxvY2sgOiBtX2dyYXBoLmJhc2ljQmxvY2tzSW5SZXZlcnNlT3JkZXIoKSkg
ewogICAgICAgICAgICAgbmV3T3V0LmNsZWFyQWxsKCk7Ci0gICAgICAgICAgICBmb3IgKHVuc2ln
bmVkIGogPSAwOyBqIDwgYmxvY2stPnN1Y2Nlc3NvcnMoKS5zaXplKCk7IGorKykKLSAgICAgICAg
ICAgICAgICBuZXdPdXQubWVyZ2UoYmxvY2stPnN1Y2Nlc3NvcnMoKVtqXS0+aW4oKSk7CisgICAg
ICAgICAgICBmb3IgKEJ5dGVjb2RlQmFzaWNCbG9jayogc3VjY2Vzc29yIDogYmxvY2stPnN1Y2Nl
c3NvcnMoKSkKKyAgICAgICAgICAgICAgICBuZXdPdXQubWVyZ2Uoc3VjY2Vzc29yLT5pbigpKTsK
ICAgICAgICAgICAgIGJvb2wgb3V0RGlkQ2hhbmdlID0gYmxvY2stPm91dCgpLnNldEFuZENoZWNr
KG5ld091dCk7Ci0gICAgICAgICAgICBjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJsb2NrKG1fY29k
ZUJsb2NrLCBibG9jaywgbV9iYXNpY0Jsb2Nrcyk7CisgICAgICAgICAgICBjb21wdXRlTG9jYWxM
aXZlbmVzc0ZvckJsb2NrKG1fZ3JhcGgsIGJsb2NrLmdldCgpKTsKICAgICAgICAgICAgIGNoYW5n
ZWQgfD0gb3V0RGlkQ2hhbmdlOwogICAgICAgICB9CiAgICAgfSB3aGlsZSAoY2hhbmdlZCk7CkBA
IC0yMTcsMTIgKzE1OCwxMiBAQCB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6cnVuTGl2
ZW5lc3NGaXhwb2ludCgpCiAKIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpnZXRMaXZl
bmVzc0luZm9BdEJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBGYXN0Qml0
VmVjdG9yJiByZXN1bHQpCiB7Ci0gICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jayA9IGZpbmRC
YXNpY0Jsb2NrRm9yQnl0ZWNvZGVPZmZzZXQobV9iYXNpY0Jsb2NrcywgYnl0ZWNvZGVPZmZzZXQp
OworICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2sgPSBtX2dyYXBoLmZpbmRCYXNpY0Jsb2Nr
Rm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpOwogICAgIEFTU0VSVChibG9jayk7CiAg
ICAgQVNTRVJUKCFibG9jay0+aXNFbnRyeUJsb2NrKCkpOwogICAgIEFTU0VSVCghYmxvY2stPmlz
RXhpdEJsb2NrKCkpOwogICAgIHJlc3VsdC5yZXNpemUoYmxvY2stPm91dCgpLm51bUJpdHMoKSk7
Ci0gICAgY29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCeXRlY29kZU9mZnNldChtX2NvZGVCbG9jaywg
YmxvY2ssIG1fYmFzaWNCbG9ja3MsIGJ5dGVjb2RlT2Zmc2V0LCByZXN1bHQpOworICAgIGNvbXB1
dGVMb2NhbExpdmVuZXNzRm9yQnl0ZWNvZGVPZmZzZXQobV9ncmFwaCwgYmxvY2ssIGJ5dGVjb2Rl
T2Zmc2V0LCByZXN1bHQpOwogfQogCiBib29sIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6b3Bl
cmFuZElzTGl2ZUF0Qnl0ZWNvZGVPZmZzZXQoaW50IG9wZXJhbmQsIHVuc2lnbmVkIGJ5dGVjb2Rl
T2Zmc2V0KQpAQCAtMjQ0LDExICsxODUsMTEgQEAgRmFzdEJpdFZlY3RvciBCeXRlY29kZUxpdmVu
ZXNzQW5hbHlzaXM6OmdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQodW5zaWduZWQKIHZv
aWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlRnVsbExpdmVuZXNzKEZ1bGxCeXRl
Y29kZUxpdmVuZXNzJiByZXN1bHQpCiB7CiAgICAgRmFzdEJpdFZlY3RvciBvdXQ7CisgICAgQ29k
ZUJsb2NrKiBjb2RlQmxvY2sgPSBtX2dyYXBoLmNvZGVCbG9jaygpOwogICAgIAotICAgIHJlc3Vs
dC5tX21hcC5yZXNpemUobV9jb2RlQmxvY2stPmluc3RydWN0aW9ucygpLnNpemUoKSk7CisgICAg
cmVzdWx0Lm1fbWFwLnJlc2l6ZShjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLnNpemUoKSk7CiAg
ICAgCi0gICAgZm9yICh1bnNpZ25lZCBpID0gbV9iYXNpY0Jsb2Nrcy5zaXplKCk7IGktLTspIHsK
LSAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jayA9IG1fYmFzaWNCbG9ja3NbaV0uZ2V0
KCk7CisgICAgZm9yIChzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiYgYmxvY2sg
OiBtX2dyYXBoLmJhc2ljQmxvY2tzSW5SZXZlcnNlT3JkZXIoKSkgewogICAgICAgICBpZiAoYmxv
Y2stPmlzRW50cnlCbG9jaygpIHx8IGJsb2NrLT5pc0V4aXRCbG9jaygpKQogICAgICAgICAgICAg
Y29udGludWU7CiAgICAgICAgIApAQCAtMjU2LDcgKzE5Nyw3IEBAIHZvaWQgQnl0ZWNvZGVMaXZl
bmVzc0FuYWx5c2lzOjpjb21wdXRlRnVsbExpdmVuZXNzKEZ1bGxCeXRlY29kZUxpdmVuZXNzJiBy
ZXN1bHQpCiAgICAgICAgIAogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBibG9jay0+Ynl0ZWNv
ZGVPZmZzZXRzKCkuc2l6ZSgpOyBpLS07KSB7CiAgICAgICAgICAgICB1bnNpZ25lZCBieXRlY29k
ZU9mZnNldCA9IGJsb2NrLT5ieXRlY29kZU9mZnNldHMoKVtpXTsKLSAgICAgICAgICAgIHN0ZXBP
dmVySW5zdHJ1Y3Rpb24obV9jb2RlQmxvY2ssIGJsb2NrLCBtX2Jhc2ljQmxvY2tzLCBieXRlY29k
ZU9mZnNldCwgb3V0KTsKKyAgICAgICAgICAgIHN0ZXBPdmVySW5zdHJ1Y3Rpb24obV9ncmFwaCwg
Ynl0ZWNvZGVPZmZzZXQsIG91dCk7CiAgICAgICAgICAgICByZXN1bHQubV9tYXBbYnl0ZWNvZGVP
ZmZzZXRdID0gb3V0OwogICAgICAgICB9CiAgICAgfQpAQCAtMjY2LDExICsyMDcsMTEgQEAgdm9p
ZCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGVLaWxscyhCeXRlY29kZUtpbGxzJiBy
ZXN1bHQpCiB7CiAgICAgRmFzdEJpdFZlY3RvciBvdXQ7CiAgICAgCi0gICAgcmVzdWx0Lm1fY29k
ZUJsb2NrID0gbV9jb2RlQmxvY2s7Ci0gICAgcmVzdWx0Lm1fa2lsbFNldHMgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEJ5dGVjb2RlS2lsbHM6OktpbGxTZXRbXT4obV9jb2RlQmxvY2stPmluc3RydWN0aW9u
cygpLnNpemUoKSk7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBtX2dyYXBoLmNvZGVCbG9j
aygpOworICAgIHJlc3VsdC5tX2NvZGVCbG9jayA9IGNvZGVCbG9jazsKKyAgICByZXN1bHQubV9r
aWxsU2V0cyA9IHN0ZDo6bWFrZV91bmlxdWU8Qnl0ZWNvZGVLaWxsczo6S2lsbFNldFtdPihjb2Rl
QmxvY2stPmluc3RydWN0aW9ucygpLnNpemUoKSk7CiAgICAgCi0gICAgZm9yICh1bnNpZ25lZCBp
ID0gbV9iYXNpY0Jsb2Nrcy5zaXplKCk7IGktLTspIHsKLSAgICAgICAgQnl0ZWNvZGVCYXNpY0Js
b2NrKiBibG9jayA9IG1fYmFzaWNCbG9ja3NbaV0uZ2V0KCk7CisgICAgZm9yIChzdGQ6OnVuaXF1
ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiYgYmxvY2sgOiBtX2dyYXBoLmJhc2ljQmxvY2tzSW5S
ZXZlcnNlT3JkZXIoKSkgewogICAgICAgICBpZiAoYmxvY2stPmlzRW50cnlCbG9jaygpIHx8IGJs
b2NrLT5pc0V4aXRCbG9jaygpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIApAQCAt
Mjc5LDcgKzIyMCw3IEBAIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlS2ls
bHMoQnl0ZWNvZGVLaWxscyYgcmVzdWx0KQogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBibG9j
ay0+Ynl0ZWNvZGVPZmZzZXRzKCkuc2l6ZSgpOyBpLS07KSB7CiAgICAgICAgICAgICB1bnNpZ25l
ZCBieXRlY29kZU9mZnNldCA9IGJsb2NrLT5ieXRlY29kZU9mZnNldHMoKVtpXTsKICAgICAgICAg
ICAgIHN0ZXBPdmVySW5zdHJ1Y3Rpb24oCi0gICAgICAgICAgICAgICAgbV9jb2RlQmxvY2ssIGJs
b2NrLCBtX2Jhc2ljQmxvY2tzLCBieXRlY29kZU9mZnNldCwKKyAgICAgICAgICAgICAgICBtX2dy
YXBoLCBieXRlY29kZU9mZnNldCwKICAgICAgICAgICAgICAgICBbJl0gKHVuc2lnbmVkIGluZGV4
KSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgZm9yIHVzZXMuCiAgICAgICAgICAg
ICAgICAgICAgIGlmIChvdXQuZ2V0KGluZGV4KSkKQEAgLTI5NywxMiArMjM4LDEzIEBAIHZvaWQg
Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlS2lsbHMoQnl0ZWNvZGVLaWxscyYgcmVz
dWx0KQogCiB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6ZHVtcFJlc3VsdHMoKQogewot
ICAgIGRhdGFMb2coIlxuRHVtcGluZyBieXRlY29kZSBsaXZlbmVzcyBmb3IgIiwgKm1fY29kZUJs
b2NrLCAiOlxuIik7Ci0gICAgSW50ZXJwcmV0ZXIqIGludGVycHJldGVyID0gbV9jb2RlQmxvY2st
PnZtKCktPmludGVycHJldGVyOwotICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiA9
IG1fY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpOwotICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBtX2Jhc2ljQmxvY2tzLnNpemUoKTsgaSsrKSB7Ci0gICAgICAgIEJ5dGVjb2Rl
QmFzaWNCbG9jayogYmxvY2sgPSBtX2Jhc2ljQmxvY2tzW2ldLmdldCgpOwotICAgICAgICBkYXRh
TG9nRigiXG5CeXRlY29kZSBiYXNpYyBibG9jayAldTogJXAgKG9mZnNldDogJXUsIGxlbmd0aDog
JXUpXG4iLCBpLCBibG9jaywgYmxvY2stPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCksIGJsb2NrLT50
b3RhbEJ5dGVjb2RlTGVuZ3RoKCkpOworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gbV9ncmFw
aC5jb2RlQmxvY2soKTsKKyAgICBkYXRhTG9nKCJcbkR1bXBpbmcgYnl0ZWNvZGUgbGl2ZW5lc3Mg
Zm9yICIsICpjb2RlQmxvY2ssICI6XG4iKTsKKyAgICBJbnRlcnByZXRlciogaW50ZXJwcmV0ZXIg
PSBjb2RlQmxvY2stPnZtKCktPmludGVycHJldGVyOworICAgIEluc3RydWN0aW9uKiBpbnN0cnVj
dGlvbnNCZWdpbiA9IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsKKyAgICB1bnNp
Z25lZCBpID0gMDsKKyAgICBmb3IgKHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+
JiBibG9jayA6IG1fZ3JhcGguYmFzaWNCbG9ja3MoKSkgeworICAgICAgICBkYXRhTG9nRigiXG5C
eXRlY29kZSBiYXNpYyBibG9jayAldTogJXAgKG9mZnNldDogJXUsIGxlbmd0aDogJXUpXG4iLCBp
KyssIGJsb2NrLmdldCgpLCBibG9jay0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKSwgYmxvY2stPnRv
dGFsQnl0ZWNvZGVMZW5ndGgoKSk7CiAgICAgICAgIGRhdGFMb2dGKCJTdWNjZXNzb3JzOiAiKTsK
ICAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8IGJsb2NrLT5zdWNjZXNzb3JzKCkuc2l6
ZSgpOyBqKyspIHsKICAgICAgICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogc3VjY2Vzc29yID0g
YmxvY2stPnN1Y2Nlc3NvcnMoKVtqXTsKQEAgLTMxMCwxMSArMjUyLDExIEBAIHZvaWQgQnl0ZWNv
ZGVMaXZlbmVzc0FuYWx5c2lzOjpkdW1wUmVzdWx0cygpCiAgICAgICAgIH0KICAgICAgICAgZGF0
YUxvZ0YoIlxuIik7CiAgICAgICAgIGlmIChibG9jay0+aXNFbnRyeUJsb2NrKCkpIHsKLSAgICAg
ICAgICAgIGRhdGFMb2dGKCJFbnRyeSBibG9jayAlcFxuIiwgYmxvY2spOworICAgICAgICAgICAg
ZGF0YUxvZ0YoIkVudHJ5IGJsb2NrICVwXG4iLCBibG9jay5nZXQoKSk7CiAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgfQogICAgICAgICBpZiAoYmxvY2stPmlzRXhpdEJsb2NrKCkpIHsK
LSAgICAgICAgICAgIGRhdGFMb2dGKCJFeGl0IGJsb2NrOiAlcFxuIiwgYmxvY2spOworICAgICAg
ICAgICAgZGF0YUxvZ0YoIkV4aXQgYmxvY2s6ICVwXG4iLCBibG9jay5nZXQoKSk7CiAgICAgICAg
ICAgICBjb250aW51ZTsKICAgICAgICAgfQogICAgICAgICBmb3IgKHVuc2lnbmVkIGJ5dGVjb2Rl
T2Zmc2V0ID0gYmxvY2stPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCk7IGJ5dGVjb2RlT2Zmc2V0IDwg
YmxvY2stPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCkgKyBibG9jay0+dG90YWxCeXRlY29kZUxlbmd0
aCgpOykgewpAQCAtMzI3LDcgKzI2OSw3IEBAIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lz
OjpkdW1wUmVzdWx0cygpCiAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2dGKCIldSAiLCBqKTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGRhdGFMb2dGKCJcbiIpOwotICAgICAgICAgICAg
bV9jb2RlQmxvY2stPmR1bXBCeXRlY29kZShXVEY6OmRhdGFGaWxlKCksIG1fY29kZUJsb2NrLT5n
bG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpLCBpbnN0cnVjdGlvbnNCZWdpbiwgY3VycmVudElu
c3RydWN0aW9uKTsKKyAgICAgICAgICAgIGNvZGVCbG9jay0+ZHVtcEJ5dGVjb2RlKFdURjo6ZGF0
YUZpbGUoKSwgY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpLCBpbnN0cnVj
dGlvbnNCZWdpbiwgY3VycmVudEluc3RydWN0aW9uKTsKIAogICAgICAgICAgICAgT3Bjb2RlSUQg
b3Bjb2RlSUQgPSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25zQmVnaW5bYnl0
ZWNvZGVPZmZzZXRdLnUub3Bjb2RlKTsKICAgICAgICAgICAgIHVuc2lnbmVkIG9wY29kZUxlbmd0
aCA9IG9wY29kZUxlbmd0aHNbb3Bjb2RlSURdOwpAQCAtMzQ2LDggKzI4OCw2IEBAIHZvaWQgQnl0
ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpkdW1wUmVzdWx0cygpCiAKIHZvaWQgQnl0ZWNvZGVMaXZl
bmVzc0FuYWx5c2lzOjpjb21wdXRlKCkKIHsKLSAgICBjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2Nr
cyhtX2NvZGVCbG9jaywgbV9iYXNpY0Jsb2Nrcyk7Ci0gICAgQVNTRVJUKG1fYmFzaWNCbG9ja3Mu
c2l6ZSgpKTsKICAgICBydW5MaXZlbmVzc0ZpeHBvaW50KCk7CiAKICAgICBpZiAoT3B0aW9uczo6
ZHVtcEJ5dGVjb2RlTGl2ZW5lc3NSZXN1bHRzKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmgKaW5kZXggZWNl
MTZmMjFmMDE1MTBhNjQyN2ZkODQxMTQwNzliZWQ4NzBjMDg3NS4uY2IxNDkzYjJhYTZjODkwM2M3
OTVhOWYyZDFjMjk3NmUxMGQzNjZkMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuaApAQCAtMjcsNiArMjcs
OCBAQAogI2RlZmluZSBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNfaAogCiAjaW5jbHVkZSAiQnl0
ZWNvZGVCYXNpY0Jsb2NrLmgiCisjaW5jbHVkZSAiQnl0ZWNvZGVHcmFwaC5oIgorI2luY2x1ZGUg
IkNvZGVCbG9jay5oIgogI2luY2x1ZGUgPHd0Zi9GYXN0Qml0VmVjdG9yLmg+CiAjaW5jbHVkZSA8
d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC0zNCw3ICszNiw2IEBA
CiBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgQnl0ZWNvZGVLaWxsczsKLWNsYXNzIENvZGVCbG9j
azsKIGNsYXNzIEZ1bGxCeXRlY29kZUxpdmVuZXNzOwogCiBjbGFzcyBCeXRlY29kZUxpdmVuZXNz
QW5hbHlzaXMgewpAQCAtNTYsMTMgKzU3LDEzIEBAIGNsYXNzIEJ5dGVjb2RlTGl2ZW5lc3NBbmFs
eXNpcyB7CiAKICAgICB2b2lkIGdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQodW5zaWdu
ZWQgYnl0ZWNvZGVPZmZzZXQsIEZhc3RCaXRWZWN0b3ImKTsKIAotICAgIENvZGVCbG9jayogbV9j
b2RlQmxvY2s7Ci0gICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+
PiBtX2Jhc2ljQmxvY2tzOworICAgIEJ5dGVjb2RlR3JhcGg8Q29kZUJsb2NrPiBtX2dyYXBoOwog
fTsKIAogaW5saW5lIGJvb2wgb3BlcmFuZElzQWx3YXlzTGl2ZShpbnQgb3BlcmFuZCk7CiBpbmxp
bmUgYm9vbCBvcGVyYW5kVGhhdElzTm90QWx3YXlzTGl2ZUlzTGl2ZShjb25zdCBGYXN0Qml0VmVj
dG9yJiBvdXQsIGludCBvcGVyYW5kKTsKIGlubGluZSBib29sIG9wZXJhbmRJc0xpdmUoY29uc3Qg
RmFzdEJpdFZlY3RvciYgb3V0LCBpbnQgb3BlcmFuZCk7CitpbmxpbmUgYm9vbCBpc1ZhbGlkUmVn
aXN0ZXJGb3JMaXZlbmVzcyhpbnQgb3BlcmFuZCk7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVz
c0FuYWx5c2lzSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVj
b2RlTGl2ZW5lc3NBbmFseXNpc0lubGluZXMuaAppbmRleCA5YjVjNzU1ZmNiNmNkNTE4MDUxNDUw
MDc4OTIyYWM0ZDZkNGQyMzhmLi45MGMyOTI5OWEyNWY1NzljZGE2NDlkOTg3OGNlMTU0OGM0OGM3
NTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVM
aXZlbmVzc0FuYWx5c2lzSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNJbmxpbmVzLmgKQEAgLTUwLDYgKzUwLDE0IEBA
IGlubGluZSBib29sIG9wZXJhbmRJc0xpdmUoY29uc3QgRmFzdEJpdFZlY3RvciYgb3V0LCBpbnQg
b3BlcmFuZCkKICAgICByZXR1cm4gb3BlcmFuZElzQWx3YXlzTGl2ZShvcGVyYW5kKSB8fCBvcGVy
YW5kVGhhdElzTm90QWx3YXlzTGl2ZUlzTGl2ZShvdXQsIG9wZXJhbmQpOwogfQogCitpbmxpbmUg
Ym9vbCBpc1ZhbGlkUmVnaXN0ZXJGb3JMaXZlbmVzcyhpbnQgb3BlcmFuZCkKK3sKKyAgICBWaXJ0
dWFsUmVnaXN0ZXIgdmlydHVhbFJlZyhvcGVyYW5kKTsKKyAgICBpZiAodmlydHVhbFJlZy5pc0Nv
bnN0YW50KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gdmlydHVhbFJlZy5p
c0xvY2FsKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gQnl0ZWNvZGVM
aXZlbmVzc0FuYWx5c2lzSW5saW5lc19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnl0ZWNvZGVNb2RpZmljYXRpb25TZXQuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTW9kaWZpY2F0aW9uU2V0LmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44
YWMyZjhlY2ExMTU5YzIzMTZhYjUxOGIzY2FhYTc0NzQ4ZWJhNTYwCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTW9kaWZpY2F0aW9uU2V0
LmNwcApAQCAtMCwwICsxLDg0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IFl1c3VrZSBT
dXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIkJ5dGVjb2RlTW9kaWZpY2F0aW9uU2V0LmgiCisKKyNpbmNsdWRlIDx3
dGYvQnViYmxlU29ydC5oPgorCituYW1lc3BhY2UgSlNDIHsKKworaW50IEJ5dGVjb2RlTW9kaWZp
Y2F0aW9uU2V0OjphZGp1c3RPZmZzZXQoaW50IGJ5dGVjb2RlT2Zmc2V0LCBpbnQganVtcFRhcmdl
dCkKK3sKKyAgICBpZiAoYnl0ZWNvZGVPZmZzZXQgPCBqdW1wVGFyZ2V0KSB7CisgICAgICAgIGF1
dG8gc3RhcnQgPSBzdGQ6Omxvd2VyX2JvdW5kKG1faW5zZXJ0aW9ucy5iZWdpbigpLCBtX2luc2Vy
dGlvbnMuZW5kKCksIGJ5dGVjb2RlT2Zmc2V0LCBbJl0gKGNvbnN0IEluc2VydGlvbiYgaW5zZXJ0
aW9uLCBpbnQgYnl0ZWNvZGVPZmZzZXQpIHsKKyAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxpbnQ+KGluc2VydGlvbi5pbmRleCgpKSA8IGJ5dGVjb2RlT2Zmc2V0OworICAgICAgICB9KTsK
KyAgICAgICAgaWYgKHN0YXJ0ICE9IG1faW5zZXJ0aW9ucy5lbmQoKSkgeworICAgICAgICAgICAg
YXV0byBlbmQgPSBzdGQ6Omxvd2VyX2JvdW5kKG1faW5zZXJ0aW9ucy5iZWdpbigpLCBtX2luc2Vy
dGlvbnMuZW5kKCksIGp1bXBUYXJnZXQsIFsmXSAoY29uc3QgSW5zZXJ0aW9uJiBpbnNlcnRpb24s
IGludCBqdW1wVGFyZ2V0KSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGlu
dD4oaW5zZXJ0aW9uLmluZGV4KCkpIDwganVtcFRhcmdldDsKKyAgICAgICAgICAgIH0pOworICAg
ICAgICAgICAgZm9yICg7IHN0YXJ0ICE9IGVuZDsgKytzdGFydCkgeworICAgICAgICAgICAgICAg
IGlmIChzdGFydC0+ZWxlbWVudCgpLnR5cGUgPT0gQ29tbWFuZDo6VHlwZTo6UmVtb3ZlKQorICAg
ICAgICAgICAgICAgICAgICBqdW1wVGFyZ2V0IC09IHN0YXJ0LT5lbGVtZW50KCkubGVuZ3RoOwor
ICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAganVtcFRhcmdldCArPSBz
dGFydC0+ZWxlbWVudCgpLmxlbmd0aDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAg
ICByZXR1cm4ganVtcFRhcmdldCAtIGJ5dGVjb2RlT2Zmc2V0OworICAgIH0KKworICAgIGlmIChi
eXRlY29kZU9mZnNldCA9PSBqdW1wVGFyZ2V0KQorICAgICAgICByZXR1cm4gMDsKKworICAgIHJl
dHVybiAtYWRqdXN0T2Zmc2V0KGp1bXBUYXJnZXQsIGJ5dGVjb2RlT2Zmc2V0KTsKK30KKwordm9p
ZCBCeXRlY29kZU1vZGlmaWNhdGlvblNldDo6YXBwbHlNb2RpZmljYXRpb24oKQoreworICAgIGZv
ciAoc2l6ZV90IGluc2VydGlvbkluZGV4ID0gbV9pbnNlcnRpb25zLnNpemUoKTsgaW5zZXJ0aW9u
SW5kZXgtLTspIHsKKyAgICAgICAgY29uc3QgSW5zZXJ0aW9uJiBpbnNlcnRpb24gPSBtX2luc2Vy
dGlvbnNbaW5zZXJ0aW9uSW5kZXhdOworICAgICAgICBpZiAoaW5zZXJ0aW9uLmVsZW1lbnQoKS50
eXBlID09IENvbW1hbmQ6OlR5cGU6OlJlbW92ZSkKKyAgICAgICAgICAgIG1fZ3JhcGguaW5zdHJ1
Y3Rpb25zKCkucmVtb3ZlKGluc2VydGlvbi5pbmRleCgpLCBpbnNlcnRpb24uZWxlbWVudCgpLmxl
bmd0aCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fZ3JhcGguaW5zdHJ1Y3Rpb25zKCku
aW5zZXJ0KGluc2VydGlvbi5pbmRleCgpLCBpbnNlcnRpb24uZWxlbWVudCgpLmJ5dGVjb2RlLmlu
c3RydWN0aW9ucywgb3Bjb2RlTGVuZ3RoKGluc2VydGlvbi5lbGVtZW50KCkuYnl0ZWNvZGUuaW5z
dHJ1Y3Rpb25zWzBdLnUub3Bjb2RlKSk7CisgICAgfQorICAgIG1faW5zZXJ0aW9ucy5jbGVhcigp
OworfQorCit2b2lkIEJ5dGVjb2RlTW9kaWZpY2F0aW9uU2V0OjpleGVjdXRlKCkKK3sKKyAgICBX
VEY6OmJ1YmJsZVNvcnQobV9pbnNlcnRpb25zLmJlZ2luKCksIG1faW5zZXJ0aW9ucy5lbmQoKSwg
W10gKGNvbnN0IEluc2VydGlvbiYgbGhzLCBjb25zdCBJbnNlcnRpb24mIHJocykgeworICAgICAg
ICAvLyBXZSB3b3VsZCBsaWtlIHRvIHBlcmZvcm0gcmVtb3ZlIG9wZXJhdGlvbiBiZWZvcmUgaW5z
ZXJ0aW9uLgorICAgICAgICBpZiAobGhzLmluZGV4KCkgPT0gcmhzLmluZGV4KCkpCisgICAgICAg
ICAgICByZXR1cm4gcmhzLmVsZW1lbnQoKS50eXBlID09IENvbW1hbmQ6OlR5cGU6OlJlbW92ZTsK
KyAgICAgICAgcmV0dXJuIGxocyA8IHJoczsKKyAgICB9KTsKKworICAgIFVubGlua2VkQ29kZUJs
b2NrKiBjb2RlQmxvY2sgPSBtX2dyYXBoLmNvZGVCbG9jaygpOworICAgIGNvZGVCbG9jay0+YXBw
bHlNb2RpZmljYXRpb24oKnRoaXMpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZU1vZGlmaWNhdGlvblNl
dC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTW9kaWZpY2F0aW9u
U2V0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYWEzNzkxNzIzM2I4MzRjMjhiMWI4ZjVkM2MxYTI3ZWU1YzkzM2Iy
OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZU1vZGlmaWNhdGlvblNldC5oCkBAIC0wLDAgKzEsODMgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTYgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkJ5dGVjb2RlR3JhcGguaCIKKyNpbmNsdWRlICJC
eXRlY29kZXMuaCIKKyNpbmNsdWRlICJVbmxpbmtlZENvZGVCbG9jay5oIgorI2luY2x1ZGUgPHd0
Zi9JbnNlcnRpb24uaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEJ5dGVjb2RlTW9kaWZp
Y2F0aW9uU2V0IHsKK3B1YmxpYzoKKyAgICBzdHJ1Y3QgSW5zZXJ0ZWRCeXRlY29kZSB7CisgICAg
ICAgIFVubGlua2VkSW5zdHJ1Y3Rpb24gaW5zdHJ1Y3Rpb25zW01BWF9PUENPREVfTEVOR1RIX09G
X0JZVEVDT0RFXTsKKyAgICB9OworCisgICAgc3RydWN0IENvbW1hbmQgeworICAgICAgICBlbnVt
IGNsYXNzIFR5cGUgeworICAgICAgICAgICAgSW5zZXJ0LAorICAgICAgICAgICAgUmVtb3ZlLAor
ICAgICAgICB9OworCisgICAgICAgIFR5cGUgdHlwZTsKKyAgICAgICAgc2l6ZV90IGxlbmd0aDsK
KyAgICAgICAgSW5zZXJ0ZWRCeXRlY29kZSBieXRlY29kZTsKKyAgICB9OworCisgICAgdHlwZWRl
ZiBXVEY6Okluc2VydGlvbjxDb21tYW5kPiBJbnNlcnRpb247CisKKyAgICBCeXRlY29kZU1vZGlm
aWNhdGlvblNldChCeXRlY29kZUdyYXBoPFVubGlua2VkQ29kZUJsb2NrPiYgZ3JhcGgpCisgICAg
ICAgIDogbV9ncmFwaChncmFwaCkKKyAgICB7CisgICAgfQorCisgICAgdm9pZCBpbnNlcnQodW5z
aWduZWQgYnl0ZWNvZGVPZmZzZXQsIEluc2VydGVkQnl0ZWNvZGUgYnl0ZWNvZGUpCisgICAgewor
ICAgICAgICBtX2luc2VydGlvbnMuYXBwZW5kKEluc2VydGlvbihieXRlY29kZU9mZnNldCwgQ29t
bWFuZCB7IENvbW1hbmQ6OlR5cGU6Okluc2VydCwgb3Bjb2RlTGVuZ3RoKGJ5dGVjb2RlLmluc3Ry
dWN0aW9uc1swXS51Lm9wY29kZSksIGJ5dGVjb2RlIH0pKTsKKyAgICB9CisKKyAgICB2b2lkIHJl
bW92ZUJ5dGVjb2RlKHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KQorICAgIHsKKyAgICAgICAgbV9p
bnNlcnRpb25zLmFwcGVuZChJbnNlcnRpb24oYnl0ZWNvZGVPZmZzZXQsIENvbW1hbmQgeyBDb21t
YW5kOjpUeXBlOjpSZW1vdmUsIG9wY29kZUxlbmd0aChtX2dyYXBoLmluc3RydWN0aW9ucygpW2J5
dGVjb2RlT2Zmc2V0XS51Lm9wY29kZSksIEluc2VydGVkQnl0ZWNvZGUgeyB9IH0pKTsKKyAgICB9
CisKKyAgICB2b2lkIGV4ZWN1dGUoKTsKKworICAgIEJ5dGVjb2RlR3JhcGg8VW5saW5rZWRDb2Rl
QmxvY2s+JiBncmFwaCgpIHsgcmV0dXJuIG1fZ3JhcGg7IH0KKworICAgIGludCBhZGp1c3RPZmZz
ZXQoaW50IGJ5dGVjb2RlT2Zmc2V0LCBpbnQganVtcFRhcmdldCk7CisKK3ByaXZhdGU6CisgICAg
ZnJpZW5kIGNsYXNzIFVubGlua2VkQ29kZUJsb2NrOworICAgIHZvaWQgYXBwbHlNb2RpZmljYXRp
b24oKTsKKworICAgIEJ5dGVjb2RlR3JhcGg8VW5saW5rZWRDb2RlQmxvY2s+JiBtX2dyYXBoOwor
ICAgIFZlY3RvcjxJbnNlcnRpb24sIDg+IG1faW5zZXJ0aW9uczsKK307CisKK30gLy8gbmFtZXNw
YWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVj
b2RlVXNlRGVmLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VE
ZWYuaAppbmRleCA1NzA4NDRjMzVkOTAyNWVlOTFhZDQ2OThiYWI5YmMxYTY3ZmQ4MzQ5Li40Y2E1
OGQwM2ZjOWY3NzYwMGIxMGZjOTc2MjM3OWRmNmY1ZDlhNTQzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaApAQCAtMjcsMTggKzI3LDEzIEBA
CiAjZGVmaW5lIEJ5dGVjb2RlVXNlRGVmX2gKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2lu
Y2x1ZGUgIkludGVycHJldGVyLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCi10ZW1wbGF0ZTx0eXBl
bmFtZSBGdW5jdG9yPgotdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAotICAgIENv
ZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrLCB1bnNpZ25lZCBi
eXRlY29kZU9mZnNldCwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikKK3RlbXBsYXRlPHR5cGVuYW1l
IEJsb2NrLCB0eXBlbmFtZSBGdW5jdG9yLCB0eXBlbmFtZSBJbnN0cnVjdGlvbj4KK3ZvaWQgY29t
cHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldChCbG9jayogY29kZUJsb2NrLCBPcGNvZGVJRCBvcGNv
ZGVJRCwgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQog
ewotICAgIEludGVycHJldGVyKiBpbnRlcnByZXRlciA9IGNvZGVCbG9jay0+dm0oKS0+aW50ZXJw
cmV0ZXI7Ci0gICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luID0gY29kZUJsb2NrLT5p
bnN0cnVjdGlvbnMoKS5iZWdpbigpOwotICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9ICZp
bnN0cnVjdGlvbnNCZWdpbltieXRlY29kZU9mZnNldF07Ci0gICAgT3Bjb2RlSUQgb3Bjb2RlSUQg
PSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb24tPnUub3Bjb2RlKTsKLQogICAg
IGlmIChvcGNvZGVJRCAhPSBvcF9lbnRlciAmJiBjb2RlQmxvY2stPndhc0NvbXBpbGVkV2l0aERl
YnVnZ2luZ09wY29kZXMoKSAmJiBjb2RlQmxvY2stPnNjb3BlUmVnaXN0ZXIoKS5pc1ZhbGlkKCkp
CiAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGNvZGVC
bG9jay0+c2NvcGVSZWdpc3RlcigpLm9mZnNldCgpKTsKIApAQCAtNzUsOCArNzAsNyBAQCB2b2lk
IGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoCiAgICAgY2FzZSBvcF9qbmVxX251bGw6CiAg
ICAgY2FzZSBvcF9kZWM6CiAgICAgY2FzZSBvcF9pbmM6Ci0gICAgY2FzZSBvcF9sb2dfc2hhZG93
X2NoaWNrZW5fcHJvbG9ndWU6Ci0gICAgY2FzZSBvcF9yZXN1bWU6IHsKKyAgICBjYXNlIG9wX2xv
Z19zaGFkb3dfY2hpY2tlbl9wcm9sb2d1ZTogewogICAgICAgICBBU1NFUlQob3Bjb2RlTGVuZ3Ro
c1tvcGNvZGVJRF0gPiAxKTsKICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9u
LCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKTsKICAgICAgICAgcmV0dXJuOwpA
QCAtMjg3LDIyICsyODEsMTMgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAog
ICAgICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgY29k
ZUJsb2NrLT5zY29wZVJlZ2lzdGVyKCkub2Zmc2V0KCkpOwogICAgICAgICByZXR1cm47CiAgICAg
fQotICAgIGNhc2Ugb3Bfc2F2ZTogewotICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1
Y3Rpb24sIG9wY29kZUlELCBpbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOwotICAgICAgICB1bnNp
Z25lZCBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXQgPSBieXRlY29kZU9mZnNldCArIGluc3RydWN0
aW9uWzNdLnUub3BlcmFuZDsKLSAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBtZXJnZVBvaW50
QmxvY2sgPSBudWxscHRyOwotICAgICAgICBmb3IgKEJ5dGVjb2RlQmFzaWNCbG9jayogc3VjY2Vz
c29yIDogYmxvY2stPnN1Y2Nlc3NvcnMoKSkgewotICAgICAgICAgICAgaWYgKHN1Y2Nlc3Nvci0+
bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKSA9PSBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXQpIHsKLSAg
ICAgICAgICAgICAgICBtZXJnZVBvaW50QmxvY2sgPSBzdWNjZXNzb3I7Ci0gICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgQVNTRVJUKG1lcmdl
UG9pbnRCbG9jayk7Ci0gICAgICAgIG1lcmdlUG9pbnRCbG9jay0+aW4oKS5mb3JFYWNoU2V0Qml0
KFsmXSh1bnNpZ25lZCBsb2NhbCkgewotICAgICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGlu
c3RydWN0aW9uLCBvcGNvZGVJRCwgdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwobG9jYWwpLm9mZnNl
dCgpKTsKLSAgICAgICAgfSk7CisKKyAgICBjYXNlIG9wX3NhdmU6CisgICAgY2FzZSBvcF9yZXN1
bWU6IHsKKyAgICAgICAgLy8gRG8gbm90aGluZyBpbiBsaXZlbmVzcyBhbmFseXNpcy4KICAgICAg
ICAgcmV0dXJuOwogICAgIH0KKwogICAgIGRlZmF1bHQ6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiAgICAgICAgIGJyZWFrOwpAQCAtMzEwLDEyICsyOTUsMTggQEAgdm9p
ZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBG
dW5jdG9yPgotdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29k
ZUJsb2NrLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9mZnNl
dCwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikKK3ZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9m
ZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIGNvbnN0
IEZ1bmN0b3ImIGZ1bmN0b3IpCiB7CiAgICAgSW50ZXJwcmV0ZXIqIGludGVycHJldGVyID0gY29k
ZUJsb2NrLT52bSgpLT5pbnRlcnByZXRlcjsKICAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25z
QmVnaW4gPSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCk7CiAgICAgSW5zdHJ1Y3Rp
b24qIGluc3RydWN0aW9uID0gJmluc3RydWN0aW9uc0JlZ2luW2J5dGVjb2RlT2Zmc2V0XTsKICAg
ICBPcGNvZGVJRCBvcGNvZGVJRCA9IGludGVycHJldGVyLT5nZXRPcGNvZGVJRChpbnN0cnVjdGlv
bi0+dS5vcGNvZGUpOworICAgIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoY29kZUJsb2Nr
LCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb24sIGZ1bmN0b3IpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBCbG9jaywgdHlwZW5hbWUgSW5zdHJ1Y3Rpb24sIHR5cGVuYW1lIEZ1bmN0b3I+Cit2b2lkIGNv
bXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQmxvY2sqIGNvZGVCbG9jaywgT3Bjb2RlSUQgb3Bj
b2RlSUQsIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikK
K3sKICAgICBzd2l0Y2ggKG9wY29kZUlEKSB7CiAgICAgLy8gVGhlc2UgZG9uJ3QgZGVmaW5lIGFu
eXRoaW5nLgogICAgIGNhc2Ugb3BfY29weV9yZXN0OgpAQCAtMzIzLDcgKzMxNCw2IEBAIHZvaWQg
Y29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNv
ZGVCYXNpY0Jsb2NrKiBibG9jCiAgICAgY2FzZSBvcF9lbmQ6CiAgICAgY2FzZSBvcF90aHJvdzoK
ICAgICBjYXNlIG9wX3Rocm93X3N0YXRpY19lcnJvcjoKLSAgICBjYXNlIG9wX3NhdmU6CiAgICAg
Y2FzZSBvcF9hc3NlcnQ6CiAgICAgY2FzZSBvcF9kZWJ1ZzoKICAgICBjYXNlIG9wX3JldDoKQEAg
LTQ2Myw3ICs0NTMsNyBAQCB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJs
b2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvYwogICAgIGNhc2Ugb3BfZGVs
X2J5X2lkOgogICAgIGNhc2Ugb3BfZGVsX2J5X3ZhbDoKICAgICBjYXNlIG9wX3Vuc2lnbmVkOgot
ICAgIGNhc2Ugb3BfZ2V0X2Zyb21fYXJndW1lbnRzOiAKKyAgICBjYXNlIG9wX2dldF9mcm9tX2Fy
Z3VtZW50czoKICAgICBjYXNlIG9wX2dldF9yZXN0X2xlbmd0aDogewogICAgICAgICBBU1NFUlQo
b3Bjb2RlTGVuZ3Roc1tvcGNvZGVJRF0gPiAxKTsKICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ss
IGluc3RydWN0aW9uLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKTsKQEAgLTQ4
MCwxOCArNDcwLDI3IEBAIHZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jCiAgICAgICAgICAgICBmdW5j
dG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCB2aXJ0dWFsUmVnaXN0ZXJGb3JM
b2NhbChpKS5vZmZzZXQoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CisgICAgY2FzZSBvcF9z
YXZlOgogICAgIGNhc2Ugb3BfcmVzdW1lOiB7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKGJsb2Nr
LT5zdWNjZXNzb3JzKCkuc2l6ZSgpID09IDEpOwotICAgICAgICAvLyBGSVhNRTogVGhpcyBpcyBy
ZWFsbHkgZGlydHkuCi0gICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNTkyODEKLSAgICAgICAgYmxvY2stPnN1Y2Nlc3NvcnMoKVswXS0+aW4oKS5mb3JF
YWNoU2V0Qml0KFsmXSh1bnNpZ25lZCBsb2NhbCkgewotICAgICAgICAgICAgZnVuY3Rvcihjb2Rl
QmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwobG9j
YWwpLm9mZnNldCgpKTsKLSAgICAgICAgfSk7CisgICAgICAgIC8vIERvIG5vdGhpbmcgaW4gbGl2
ZW5lc3MgYW5hbHlzaXMuCiAgICAgICAgIHJldHVybjsKICAgICB9CisgICAgZGVmYXVsdDoKKyAg
ICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuOwogICAg
IH0KIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KK3ZvaWQgY29tcHV0ZURlZnNGb3JC
eXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVPZmZz
ZXQsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCit7CisgICAgSW50ZXJwcmV0ZXIqIGludGVycHJl
dGVyID0gY29kZUJsb2NrLT52bSgpLT5pbnRlcnByZXRlcjsKKyAgICBJbnN0cnVjdGlvbiogaW5z
dHJ1Y3Rpb25zQmVnaW4gPSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCk7CisgICAg
SW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uID0gJmluc3RydWN0aW9uc0JlZ2luW2J5dGVjb2RlT2Zm
c2V0XTsKKyAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGludGVycHJldGVyLT5nZXRPcGNvZGVJRChp
bnN0cnVjdGlvbi0+dS5vcGNvZGUpOworICAgIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQo
Y29kZUJsb2NrLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb24sIGZ1bmN0b3IpOworfQorCiB9IC8vIG5h
bWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEJ5dGVjb2RlVXNlRGVmX2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKaW5kZXggM2Y3ZDJmMDViOTkwMDUzMmI5
NmE3ZDZiMmQ2MWVkMmEzZTY4ZDhiMy4uNTIxOWViYzE0NmJiZTM0ZTFlOGVkYTc1MTk1NTJjMGI3
MTZhZjdhNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVC
bG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5j
cHAKQEAgLTMyLDYgKzMyLDcgQEAKIAogI2luY2x1ZGUgIkJhc2ljQmxvY2tMb2NhdGlvbi5oIgog
I2luY2x1ZGUgIkJ5dGVjb2RlR2VuZXJhdG9yLmgiCisjaW5jbHVkZSAiQnl0ZWNvZGVMaXZlbmVz
c0FuYWx5c2lzLmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVVc2VEZWYuaCIKICNpbmNsdWRlICJDYWxs
TGlua1N0YXR1cy5oIgogI2luY2x1ZGUgIkRGR0NhcGFiaWxpdGllcy5oIgpAQCAtNjk0LDE4ICs2
OTUsNiBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKFByaW50U3RyZWFtJiBvdXQpCiAg
ICAgICAgIH0gd2hpbGUgKGkgPCBtX3JhcmVEYXRhLT5tX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXMu
c2l6ZSgpKTsKICAgICB9CiAKLSAgICBpZiAobV9yYXJlRGF0YSAmJiAhbV9yYXJlRGF0YS0+bV9s
aXZlQ2FsbGVlTG9jYWxzQXRZaWVsZC5pc0VtcHR5KCkpIHsKLSAgICAgICAgb3V0LnByaW50Zigi
XG5MaXZlIENhbGxlZSBMb2NhbHM6XG4iKTsKLSAgICAgICAgdW5zaWduZWQgaSA9IDA7Ci0gICAg
ICAgIGRvIHsKLSAgICAgICAgICAgIGNvbnN0IEZhc3RCaXRWZWN0b3ImIGxpdmVuZXNzID0gbV9y
YXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZFtpXTsKLSAgICAgICAgICAgIG91dC5w
cmludGYoIiAgbGl2ZSUxdSA9ICIsIGkpOwotICAgICAgICAgICAgbGl2ZW5lc3MuZHVtcChvdXQp
OwotICAgICAgICAgICAgb3V0LnByaW50ZigiXG4iKTsKLSAgICAgICAgICAgICsraTsKLSAgICAg
ICAgfSB3aGlsZSAoaSA8IG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQuc2l6
ZSgpKTsKLSAgICB9Ci0KICAgICBvdXQucHJpbnRmKCJcbiIpOwogfQogCkBAIC0xNjY5LDMxICsx
NjU4LDYgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZSgKICAgICAgICAgICAgIG91dC5w
cmludGYoIiVzLCAlZCIsIGRlYnVnSG9va05hbWUoZGVidWdIb29rSUQpLCBoYXNCcmVha3BvaW50
RmxhZyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBjYXNlIG9wX3Nh
dmU6IHsKLSAgICAgICAgICAgIGludCBnZW5lcmF0b3IgPSAoKytpdCktPnUub3BlcmFuZDsKLSAg
ICAgICAgICAgIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9ICgrK2l0KS0+dS51bnNp
Z25lZFZhbHVlOwotICAgICAgICAgICAgaW50IG9mZnNldCA9ICgrK2l0KS0+dS5vcGVyYW5kOwot
ICAgICAgICAgICAgRmFzdEJpdFZlY3RvciBsaXZlbmVzczsKLSAgICAgICAgICAgIGlmIChsaXZl
Q2FsbGVlTG9jYWxzSW5kZXggPCBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxk
LnNpemUoKSkKLSAgICAgICAgICAgICAgICBsaXZlbmVzcyA9IG1fcmFyZURhdGEtPm1fbGl2ZUNh
bGxlZUxvY2Fsc0F0WWllbGRbbGl2ZUNhbGxlZUxvY2Fsc0luZGV4XTsKLSAgICAgICAgICAgIHBy
aW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgInNhdmUiKTsKLSAgICAg
ICAgICAgIG91dC5wcmludGYoIiVzLCAiLCByZWdpc3Rlck5hbWUoZ2VuZXJhdG9yKS5kYXRhKCkp
OwotICAgICAgICAgICAgbGl2ZW5lc3MuZHVtcChvdXQpOwotICAgICAgICAgICAgb3V0LnByaW50
ZigiKEBsaXZlJTF1KSwgJWQoLT4lZCkiLCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXgsIG9mZnNldCwg
bG9jYXRpb24gKyBvZmZzZXQpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAg
ICAgY2FzZSBvcF9yZXN1bWU6IHsKLSAgICAgICAgICAgIGludCBnZW5lcmF0b3IgPSAoKytpdCkt
PnUub3BlcmFuZDsKLSAgICAgICAgICAgIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9
ICgrK2l0KS0+dS51bnNpZ25lZFZhbHVlOwotICAgICAgICAgICAgRmFzdEJpdFZlY3RvciBsaXZl
bmVzczsKLSAgICAgICAgICAgIGlmIChsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPCBtX3JhcmVEYXRh
LT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkLnNpemUoKSkKLSAgICAgICAgICAgICAgICBsaXZl
bmVzcyA9IG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGRbbGl2ZUNhbGxlZUxv
Y2Fsc0luZGV4XTsKLSAgICAgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxv
Y2F0aW9uLCBpdCwgInJlc3VtZSIpOwotICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICIsIHJl
Z2lzdGVyTmFtZShnZW5lcmF0b3IpLmRhdGEoKSk7Ci0gICAgICAgICAgICBsaXZlbmVzcy5kdW1w
KG91dCk7Ci0gICAgICAgICAgICBvdXQucHJpbnRmKCIoQGxpdmUlMXUpIiwgbGl2ZUNhbGxlZUxv
Y2Fsc0luZGV4KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9CiAgICAgICAgIGNhc2Ug
b3BfYXNzZXJ0OiB7CiAgICAgICAgICAgICBpbnQgY29uZGl0aW9uID0gKCsraXQpLT51Lm9wZXJh
bmQ7CiAgICAgICAgICAgICBpbnQgbGluZSA9ICgrK2l0KS0+dS5vcGVyYW5kOwpAQCAtMTkwNiw3
ICsxODcwLDYgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgQ29weVBh
cnNlZEJsb2NrVGFnLCBDb2RlQmxvY2smIG90aGVyKQogICAgICAgICBtX3JhcmVEYXRhLT5tX2Nv
bnN0YW50QnVmZmVycyA9IG90aGVyLm1fcmFyZURhdGEtPm1fY29uc3RhbnRCdWZmZXJzOwogICAg
ICAgICBtX3JhcmVEYXRhLT5tX3N3aXRjaEp1bXBUYWJsZXMgPSBvdGhlci5tX3JhcmVEYXRhLT5t
X3N3aXRjaEp1bXBUYWJsZXM7CiAgICAgICAgIG1fcmFyZURhdGEtPm1fc3RyaW5nU3dpdGNoSnVt
cFRhYmxlcyA9IG90aGVyLm1fcmFyZURhdGEtPm1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlczsKLSAg
ICAgICAgbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZCA9IG90aGVyLm1fcmFy
ZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQ7CiAgICAgfQogICAgIAogICAgIGhlYXAo
KS0+bV9jb2RlQmxvY2tzLmFkZCh0aGlzKTsKQEAgLTIwMjgsNyArMTk5MSw3IEBAIHZvaWQgQ29k
ZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhl
Y3V0YWJsZSwgVW5saW5rCiAgICAgICAgICAgICAgICAgVW5saW5rZWRTdHJpbmdKdW1wVGFibGU6
OlN0cmluZ09mZnNldFRhYmxlOjppdGVyYXRvciBlbmQgPSB1bmxpbmtlZENvZGVCbG9jay0+c3Ry
aW5nU3dpdGNoSnVtcFRhYmxlKGkpLm9mZnNldFRhYmxlLmVuZCgpOwogICAgICAgICAgICAgICAg
IGZvciAoOyBwdHIgIT0gZW5kOyArK3B0cikgewogICAgICAgICAgICAgICAgICAgICBPZmZzZXRM
b2NhdGlvbiBvZmZzZXQ7Ci0gICAgICAgICAgICAgICAgICAgIG9mZnNldC5icmFuY2hPZmZzZXQg
PSBwdHItPnZhbHVlOworICAgICAgICAgICAgICAgICAgICBvZmZzZXQuYnJhbmNoT2Zmc2V0ID0g
cHRyLT52YWx1ZS5icmFuY2hPZmZzZXQ7CiAgICAgICAgICAgICAgICAgICAgIG1fcmFyZURhdGEt
Pm1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlc1tpXS5vZmZzZXRUYWJsZS5hZGQocHRyLT5rZXksIG9m
ZnNldCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpAQCAtMjA2OCwxMSArMjAz
MSwxNyBAQCB2b2lkIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVj
dXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGluawogICAgIC8vIEJvb2trZWVwIHRoZSBzdHJv
bmdseSByZWZlcmVuY2VkIG1vZHVsZSBlbnZpcm9ubWVudHMuCiAgICAgSGFzaFNldDxKU01vZHVs
ZUVudmlyb25tZW50Kj4gc3Ryb25nbHlSZWZlcmVuY2VkTW9kdWxlRW52aXJvbm1lbnRzOwogCi0g
ICAgLy8gQm9va2tlZXAgdGhlIG1lcmdlIHBvaW50IGJ5dGVjb2RlIG9mZnNldHMuCi0gICAgVmVj
dG9yPHNpemVfdD4gbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0czsKLQogICAgIFJlZkNvdW50ZWRB
cnJheTxJbnN0cnVjdGlvbj4gaW5zdHJ1Y3Rpb25zKGluc3RydWN0aW9uQ291bnQpOwogCisgICAg
dW5zaWduZWQgdmFsdWVQcm9maWxlQ291bnQgPSAwOworICAgIGF1dG8gbGlua1ZhbHVlUHJvZmls
ZSA9IFsmXSh1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgdW5zaWduZWQgb3BMZW5ndGgpIHsKKyAg
ICAgICAgdW5zaWduZWQgdmFsdWVQcm9maWxlSW5kZXggPSB2YWx1ZVByb2ZpbGVDb3VudCsrOwor
ICAgICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSAmbV92YWx1ZVByb2ZpbGVzW3ZhbHVlUHJv
ZmlsZUluZGV4XTsKKyAgICAgICAgQVNTRVJUKHByb2ZpbGUtPm1fYnl0ZWNvZGVPZmZzZXQgPT0g
LTEpOworICAgICAgICBwcm9maWxlLT5tX2J5dGVjb2RlT2Zmc2V0ID0gYnl0ZWNvZGVPZmZzZXQ7
CisgICAgICAgIGluc3RydWN0aW9uc1tieXRlY29kZU9mZnNldCArIG9wTGVuZ3RoIC0gMV0gPSBw
cm9maWxlOworICAgIH07CisKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyAhaW5zdHJ1Y3Rpb25S
ZWFkZXIuYXRFbmQoKTsgKSB7CiAgICAgICAgIGNvbnN0IFVubGlua2VkSW5zdHJ1Y3Rpb24qIHBj
ID0gaW5zdHJ1Y3Rpb25SZWFkZXIubmV4dCgpOwogCkBAIC0yMTA3LDEwICsyMDc2LDcgQEAgdm9p
ZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3du
ZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICAgICAgY2FzZSBvcF9nZXRfYnlfaWQ6CiAgICAgICAg
IGNhc2Ugb3BfZ2V0X2Zyb21fYXJndW1lbnRzOgogICAgICAgICBjYXNlIG9wX3RvX251bWJlcjog
ewotICAgICAgICAgICAgVmFsdWVQcm9maWxlKiBwcm9maWxlID0gJm1fdmFsdWVQcm9maWxlc1tw
Y1tvcExlbmd0aCAtIDFdLnUub3BlcmFuZF07Ci0gICAgICAgICAgICBBU1NFUlQocHJvZmlsZS0+
bV9ieXRlY29kZU9mZnNldCA9PSAtMSk7Ci0gICAgICAgICAgICBwcm9maWxlLT5tX2J5dGVjb2Rl
T2Zmc2V0ID0gaTsKLSAgICAgICAgICAgIGluc3RydWN0aW9uc1tpICsgb3BMZW5ndGggLSAxXSA9
IHByb2ZpbGU7CisgICAgICAgICAgICBsaW5rVmFsdWVQcm9maWxlKGksIG9wTGVuZ3RoKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X3ZhbDog
ewpAQCAtMjE0NywxMCArMjExMyw3IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihW
TSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAgICAg
IGNhc2Ugb3BfY2FsbDoKICAgICAgICAgY2FzZSBvcF90YWlsX2NhbGw6CiAgICAgICAgIGNhc2Ug
b3BfY2FsbF9ldmFsOiB7Ci0gICAgICAgICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSAmbV92
YWx1ZVByb2ZpbGVzW3BjW29wTGVuZ3RoIC0gMV0udS5vcGVyYW5kXTsKLSAgICAgICAgICAgIEFT
U0VSVChwcm9maWxlLT5tX2J5dGVjb2RlT2Zmc2V0ID09IC0xKTsKLSAgICAgICAgICAgIHByb2Zp
bGUtPm1fYnl0ZWNvZGVPZmZzZXQgPSBpOwotICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zW2kgKyBv
cExlbmd0aCAtIDFdID0gcHJvZmlsZTsKKyAgICAgICAgICAgIGxpbmtWYWx1ZVByb2ZpbGUoaSwg
b3BMZW5ndGgpOwogICAgICAgICAgICAgaW50IGFycmF5UHJvZmlsZUluZGV4ID0gcGNbb3BMZW5n
dGggLSAyXS51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBtX2FycmF5UHJvZmlsZXNbYXJyYXlQcm9m
aWxlSW5kZXhdID0gQXJyYXlQcm9maWxlKGkpOwogICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zW2kg
KyBvcExlbmd0aCAtIDJdID0gJm1fYXJyYXlQcm9maWxlc1thcnJheVByb2ZpbGVJbmRleF07CkBA
IC0yMTU5LDEwICsyMTIyLDcgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2
bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICAgICAgfQog
ICAgICAgICBjYXNlIG9wX2NvbnN0cnVjdDogewogICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zW2kg
KyA1XSA9ICZtX2xsaW50Q2FsbExpbmtJbmZvc1twY1s1XS51Lm9wZXJhbmRdOwotICAgICAgICAg
ICAgVmFsdWVQcm9maWxlKiBwcm9maWxlID0gJm1fdmFsdWVQcm9maWxlc1twY1tvcExlbmd0aCAt
IDFdLnUub3BlcmFuZF07Ci0gICAgICAgICAgICBBU1NFUlQocHJvZmlsZS0+bV9ieXRlY29kZU9m
ZnNldCA9PSAtMSk7Ci0gICAgICAgICAgICBwcm9maWxlLT5tX2J5dGVjb2RlT2Zmc2V0ID0gaTsK
LSAgICAgICAgICAgIGluc3RydWN0aW9uc1tpICsgb3BMZW5ndGggLSAxXSA9IHByb2ZpbGU7Cisg
ICAgICAgICAgICBsaW5rVmFsdWVQcm9maWxlKGksIG9wTGVuZ3RoKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfZ2V0X2FycmF5X2xlbmd0aDoKQEAgLTIx
OTMsMTAgKzIxNTMsNyBAQCB2b2lkIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBT
Y3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGluawogICAgICAgICB9CiAKICAg
ICAgICAgY2FzZSBvcF9nZXRfZnJvbV9zY29wZTogewotICAgICAgICAgICAgVmFsdWVQcm9maWxl
KiBwcm9maWxlID0gJm1fdmFsdWVQcm9maWxlc1twY1tvcExlbmd0aCAtIDFdLnUub3BlcmFuZF07
Ci0gICAgICAgICAgICBBU1NFUlQocHJvZmlsZS0+bV9ieXRlY29kZU9mZnNldCA9PSAtMSk7Ci0g
ICAgICAgICAgICBwcm9maWxlLT5tX2J5dGVjb2RlT2Zmc2V0ID0gaTsKLSAgICAgICAgICAgIGlu
c3RydWN0aW9uc1tpICsgb3BMZW5ndGggLSAxXSA9IHByb2ZpbGU7CisgICAgICAgICAgICBsaW5r
VmFsdWVQcm9maWxlKGksIG9wTGVuZ3RoKTsKIAogICAgICAgICAgICAgLy8gZ2V0X2Zyb21fc2Nv
cGUgZHN0LCBzY29wZSwgaWQsIEdldFB1dEluZm8sIFN0cnVjdHVyZSwgT3BlcmFuZAogCkBAIC0y
MzUzLDE1ICsyMzEwLDYgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwg
U2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CiAKLSAgICAgICAgY2FzZSBvcF9zYXZlOiB7Ci0gICAgICAgICAgICB1
bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSBwY1syXS51LmluZGV4OwotICAgICAgICAg
ICAgaW50IG9mZnNldCA9IHBjWzNdLnUub3BlcmFuZDsKLSAgICAgICAgICAgIGlmIChsaXZlQ2Fs
bGVlTG9jYWxzSW5kZXggPj0gbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0cy5zaXplKCkpCi0gICAg
ICAgICAgICAgICAgbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0cy5yZXNpemUobGl2ZUNhbGxlZUxv
Y2Fsc0luZGV4ICsgMSk7Ci0gICAgICAgICAgICBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXRzW2xp
dmVDYWxsZWVMb2NhbHNJbmRleF0gPSBpICsgb2Zmc2V0OwotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIH0KLQogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KQEAgLTIzNzMsMjAgKzIzMjEsNiBAQCB2b2lkIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24o
Vk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGluawogCiAgICAg
bV9pbnN0cnVjdGlvbnMgPSBXVEZNb3ZlKGluc3RydWN0aW9ucyk7CiAKLSAgICAvLyBQZXJmb3Jt
IGJ5dGVjb2RlIGxpdmVuZXNzIGFuYWx5c2lzIHRvIGRldGVybWluZSB3aGljaCBsb2NhbHMgYXJl
IGxpdmUgYW5kIHNob3VsZCBiZSByZXN1bWVkIHdoZW4gZXhlY3V0aW5nIG9wX3Jlc3VtZS4KLSAg
ICBpZiAodW5saW5rZWRDb2RlQmxvY2stPnBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6
R2VuZXJhdG9yQm9keU1vZGUpIHsKLSAgICAgICAgaWYgKHNpemVfdCBjb3VudCA9IG1lcmdlUG9p
bnRCeXRlY29kZU9mZnNldHMuc2l6ZSgpKSB7Ci0gICAgICAgICAgICBjcmVhdGVSYXJlRGF0YUlm
TmVjZXNzYXJ5KCk7Ci0gICAgICAgICAgICBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMgbGl2ZW5l
c3ModGhpcyk7Ci0gICAgICAgICAgICBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlp
ZWxkLmdyb3coY291bnQpOwotICAgICAgICAgICAgc2l6ZV90IGxpdmVDYWxsZWVMb2NhbHNJbmRl
eCA9IDA7Ci0gICAgICAgICAgICBmb3IgKHNpemVfdCBieXRlY29kZU9mZnNldCA6IG1lcmdlUG9p
bnRCeXRlY29kZU9mZnNldHMpIHsKLSAgICAgICAgICAgICAgICBtX3JhcmVEYXRhLT5tX2xpdmVD
YWxsZWVMb2NhbHNBdFlpZWxkW2xpdmVDYWxsZWVMb2NhbHNJbmRleF0gPSBsaXZlbmVzcy5nZXRM
aXZlbmVzc0luZm9BdEJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KTsKLSAgICAgICAgICAg
ICAgICArK2xpdmVDYWxsZWVMb2NhbHNJbmRleDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQot
ICAgIH0KLQogICAgIC8vIFNldCBvcHRpbWl6YXRpb24gdGhyZXNob2xkcyBvbmx5IGFmdGVyIG1f
aW5zdHJ1Y3Rpb25zIGlzIGluaXRpYWxpemVkLCBzaW5jZSB0aGVzZQogICAgIC8vIHJlbHkgb24g
dGhlIGluc3RydWN0aW9uIGNvdW50IChhbmQgYXJlIGluIHRoZW9yeSBwZXJtaXR0ZWQgdG8gYWxz
byBpbnNwZWN0IHRoZQogICAgIC8vIGluc3RydWN0aW9uIHN0cmVhbSB0byBtb3JlIGFjY3VyYXRl
IGFzc2VzcyB0aGUgY29zdCBvZiB0aWVyLXVwKS4KQEAgLTMxODYsMjEgKzMxMjAsNyBAQCBIYW5k
bGVySW5mbyogQ29kZUJsb2NrOjpoYW5kbGVyRm9ySW5kZXgodW5zaWduZWQgaW5kZXgsIFJlcXVp
cmVkSGFuZGxlciByZXF1aXJlZAogewogICAgIGlmICghbV9yYXJlRGF0YSkKICAgICAgICAgcmV0
dXJuIDA7Ci0gICAgCi0gICAgVmVjdG9yPEhhbmRsZXJJbmZvPiYgZXhjZXB0aW9uSGFuZGxlcnMg
PSBtX3JhcmVEYXRhLT5tX2V4Y2VwdGlvbkhhbmRsZXJzOwotICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgZXhjZXB0aW9uSGFuZGxlcnMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgSGFuZGxlcklu
Zm8mIGhhbmRsZXIgPSBleGNlcHRpb25IYW5kbGVyc1tpXTsKLSAgICAgICAgaWYgKChyZXF1aXJl
ZEhhbmRsZXIgPT0gUmVxdWlyZWRIYW5kbGVyOjpDYXRjaEhhbmRsZXIpICYmICFoYW5kbGVyLmlz
Q2F0Y2hIYW5kbGVyKCkpCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAvLyBIYW5k
bGVycyBhcmUgb3JkZXJlZCBpbm5lcm1vc3QgZmlyc3QsIHNvIHRoZSBmaXJzdCBoYW5kbGVyIHdl
IGVuY291bnRlcgotICAgICAgICAvLyB0aGF0IGNvbnRhaW5zIHRoZSBzb3VyY2UgYWRkcmVzcyBp
cyB0aGUgY29ycmVjdCBoYW5kbGVyIHRvIHVzZS4KLSAgICAgICAgLy8gVGhpcyBpbmRleCB1c2Vk
IGlzIGVpdGhlciB0aGUgQnl0ZWNvZGVPZmZzZXQgb3IgYSBDYWxsU2l0ZUluZGV4LgotICAgICAg
ICBpZiAoaGFuZGxlci5zdGFydCA8PSBpbmRleCAmJiBoYW5kbGVyLmVuZCA+IGluZGV4KQotICAg
ICAgICAgICAgcmV0dXJuICZoYW5kbGVyOwotICAgIH0KLQotICAgIHJldHVybiAwOworICAgIHJl
dHVybiBIYW5kbGVySW5mbzo6aGFuZGxlckZvckluZGV4KG1fcmFyZURhdGEtPm1fZXhjZXB0aW9u
SGFuZGxlcnMsIGluZGV4LCByZXF1aXJlZEhhbmRsZXIpOwogfQogCiBDYWxsU2l0ZUluZGV4IENv
ZGVCbG9jazo6bmV3RXhjZXB0aW9uSGFuZGxpbmdDYWxsU2l0ZUluZGV4KENhbGxTaXRlSW5kZXgg
b3JpZ2luYWxDYWxsU2l0ZSkKQEAgLTMyOTYsNyArMzIxNiw2IEBAIHZvaWQgQ29kZUJsb2NrOjpz
aHJpbmtUb0ZpdChTaHJpbmtNb2RlIHNocmlua01vZGUpCiAgICAgICAgIGlmIChtX3JhcmVEYXRh
KSB7CiAgICAgICAgICAgICBtX3JhcmVEYXRhLT5tX3N3aXRjaEp1bXBUYWJsZXMuc2hyaW5rVG9G
aXQoKTsKICAgICAgICAgICAgIG1fcmFyZURhdGEtPm1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlcy5z
aHJpbmtUb0ZpdCgpOwotICAgICAgICAgICAgbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxz
QXRZaWVsZC5zaHJpbmtUb0ZpdCgpOwogICAgICAgICB9CiAgICAgfSAvLyBlbHNlIGRvbid0IHNo
cmluayB0aGVzZSwgYmVjYXVzZSB3ZSB3b3VsZCBoYXZlIGFscmVhZHkgcG9pbnRlZCBwb2ludGVy
cyBpbnRvIHRoZXNlIHRhYmxlcy4KIH0KQEAgLTQyODMsMTQgKzQyMDIsOSBAQCBTdHJpbmcgQ29k
ZUJsb2NrOjpuYW1lRm9yUmVnaXN0ZXIoVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3RlcikK
IAogVmFsdWVQcm9maWxlKiBDb2RlQmxvY2s6OnZhbHVlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0
KGludCBieXRlY29kZU9mZnNldCkKIHsKLSAgICBWYWx1ZVByb2ZpbGUqIHJlc3VsdCA9IGJpbmFy
eVNlYXJjaDxWYWx1ZVByb2ZpbGUsIGludD4oCi0gICAgICAgIG1fdmFsdWVQcm9maWxlcywgbV92
YWx1ZVByb2ZpbGVzLnNpemUoKSwgYnl0ZWNvZGVPZmZzZXQsCi0gICAgICAgIGdldFZhbHVlUHJv
ZmlsZUJ5dGVjb2RlT2Zmc2V0PFZhbHVlUHJvZmlsZT4pOwotICAgIEFTU0VSVChyZXN1bHQtPm1f
Ynl0ZWNvZGVPZmZzZXQgIT0gLTEpOwotICAgIEFTU0VSVChpbnN0cnVjdGlvbnMoKVtieXRlY29k
ZU9mZnNldCArIG9wY29kZUxlbmd0aCgKLSAgICAgICAgbV92bS0+aW50ZXJwcmV0ZXItPmdldE9w
Y29kZUlEKAotICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zKClbYnl0ZWNvZGVPZmZzZXRdLnUub3Bj
b2RlKSkgLSAxXS51LnByb2ZpbGUgPT0gcmVzdWx0KTsKLSAgICByZXR1cm4gcmVzdWx0OworICAg
IE9wY29kZUlEIG9wY29kZUlEID0gbV92bS0+aW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGluc3Ry
dWN0aW9ucygpW2J5dGVjb2RlT2Zmc2V0XS51Lm9wY29kZSk7CisgICAgdW5zaWduZWQgbGVuZ3Ro
ID0gb3Bjb2RlTGVuZ3RoKG9wY29kZUlEKTsKKyAgICByZXR1cm4gaW5zdHJ1Y3Rpb25zKClbYnl0
ZWNvZGVPZmZzZXQgKyBsZW5ndGggLSAxXS51LnByb2ZpbGU7CiB9CiAKIHZvaWQgQ29kZUJsb2Nr
Ojp2YWxpZGF0ZSgpCkBAIC00NTc0LDQgKzQ0ODgsMTYgQEAgdm9pZCBDb2RlQmxvY2s6OmppdFNv
b24oKQogICAgIG1fbGxpbnRFeGVjdXRlQ291bnRlci5zZXROZXdUaHJlc2hvbGQodGhyZXNob2xk
Rm9ySklUKE9wdGlvbnM6OnRocmVzaG9sZEZvckpJVFNvb24oKSksIHRoaXMpOwogfQogCitCeXRl
Y29kZUxpdmVuZXNzQW5hbHlzaXMmIENvZGVCbG9jazo6bGl2ZW5lc3NBbmFseXNpc1Nsb3coKQor
eworICAgIHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM+IGFuYWx5c2lz
ID0gc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM+KHRoaXMpOworICAg
IHsKKyAgICAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIobV9sb2NrKTsKKyAgICAgICAg
aWYgKCFtX2xpdmVuZXNzQW5hbHlzaXMpCisgICAgICAgICAgICBtX2xpdmVuZXNzQW5hbHlzaXMg
PSBXVEZNb3ZlKGFuYWx5c2lzKTsKKyAgICAgICAgcmV0dXJuICptX2xpdmVuZXNzQW5hbHlzaXM7
CisgICAgfQorfQorCisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5oCmluZGV4IGIyODgzNjU0YmUzNDVlN2FiMDExMGVjMWI2ZjVk
Njk3YTE4YzI3YzIuLjBiOTBiN2ViZDdjYjZhMzZjNTEwOGZjZTJjNjk2Zjc5YzU0YzVlMDggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKQEAgLTMzLDcgKzMz
LDYgQEAKICNpbmNsdWRlICJBcnJheVByb2ZpbGUuaCIKICNpbmNsdWRlICJCeVZhbEluZm8uaCIK
ICNpbmNsdWRlICJCeXRlY29kZUNvbnZlbnRpb25zLmgiCi0jaW5jbHVkZSAiQnl0ZWNvZGVMaXZl
bmVzc0FuYWx5c2lzLmgiCiAjaW5jbHVkZSAiQ2FsbExpbmtJbmZvLmgiCiAjaW5jbHVkZSAiQ2Fs
bFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQuaCIKICNpbmNsdWRlICJDb2RlQmxvY2tIYXNo
LmgiCkBAIC03OCw2ICs3Nyw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCitjbGFzcyBCeXRlY29k
ZUxpdmVuZXNzQW5hbHlzaXM7CiBjbGFzcyBFeGVjU3RhdGU7CiBjbGFzcyBKU01vZHVsZUVudmly
b25tZW50OwogY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwpAQCAtMjIwLDEwICsyMjAsNiBA
QCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAgICAgcmV0dXJuIGluZGV4
ID49IG1fbnVtVmFyczsKICAgICB9CiAKLSAgICBlbnVtIGNsYXNzIFJlcXVpcmVkSGFuZGxlciB7
Ci0gICAgICAgIENhdGNoSGFuZGxlciwKLSAgICAgICAgQW55SGFuZGxlcgotICAgIH07CiAgICAg
SGFuZGxlckluZm8qIGhhbmRsZXJGb3JCeXRlY29kZU9mZnNldCh1bnNpZ25lZCBieXRlY29kZU9m
ZnNldCwgUmVxdWlyZWRIYW5kbGVyID0gUmVxdWlyZWRIYW5kbGVyOjpBbnlIYW5kbGVyKTsKICAg
ICBIYW5kbGVySW5mbyogaGFuZGxlckZvckluZGV4KHVuc2lnbmVkLCBSZXF1aXJlZEhhbmRsZXIg
PSBSZXF1aXJlZEhhbmRsZXI6OkFueUhhbmRsZXIpOwogICAgIHZvaWQgcmVtb3ZlRXhjZXB0aW9u
SGFuZGxlckZvckNhbGxTaXRlKENhbGxTaXRlSW5kZXgpOwpAQCAtMjk1LDYgKzI5MSw4IEBAIGNs
YXNzIENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8SW5zdHJ1Y3Rpb24qPihyZXR1cm5BZGRyZXNzKSAtIGluc3RydWN0aW9ucygpLmJlZ2luKCk7
CiAgICAgfQogCisgICAgdHlwZWRlZiBSZWZDb3VudGVkQXJyYXk8SW5zdHJ1Y3Rpb24+JiBVbnBh
Y2tlZEluc3RydWN0aW9uczsKKwogICAgIHVuc2lnbmVkIG51bWJlck9mSW5zdHJ1Y3Rpb25zKCkg
Y29uc3QgeyByZXR1cm4gbV9pbnN0cnVjdGlvbnMuc2l6ZSgpOyB9CiAgICAgUmVmQ291bnRlZEFy
cmF5PEluc3RydWN0aW9uPiYgaW5zdHJ1Y3Rpb25zKCkgeyByZXR1cm4gbV9pbnN0cnVjdGlvbnM7
IH0KICAgICBjb25zdCBSZWZDb3VudGVkQXJyYXk8SW5zdHJ1Y3Rpb24+JiBpbnN0cnVjdGlvbnMo
KSBjb25zdCB7IHJldHVybiBtX2luc3RydWN0aW9uczsgfQpAQCAtNTQyLDcgKzU0MCw3IEBAIGNs
YXNzIENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgIH0KIAogICAgIFdyaXRlQmFycmll
cjxVbmtub3duPiYgY29uc3RhbnRSZWdpc3RlcihpbnQgaW5kZXgpIHsgcmV0dXJuIG1fY29uc3Rh
bnRSZWdpc3RlcnNbaW5kZXggLSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleF07IH0KLSAgICBB
TFdBWVNfSU5MSU5FIGJvb2wgaXNDb25zdGFudFJlZ2lzdGVySW5kZXgoaW50IGluZGV4KSBjb25z
dCB7IHJldHVybiBpbmRleCA+PSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleDsgfQorICAgIHN0
YXRpYyBBTFdBWVNfSU5MSU5FIGJvb2wgaXNDb25zdGFudFJlZ2lzdGVySW5kZXgoaW50IGluZGV4
KSB7IHJldHVybiBpbmRleCA+PSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleDsgfQogICAgIEFM
V0FZU19JTkxJTkUgSlNWYWx1ZSBnZXRDb25zdGFudChpbnQgaW5kZXgpIGNvbnN0IHsgcmV0dXJu
IG1fY29uc3RhbnRSZWdpc3RlcnNbaW5kZXggLSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleF0u
Z2V0KCk7IH0KICAgICBBTFdBWVNfSU5MSU5FIFNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbiBjb25z
dGFudFNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbihpbnQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIG1f
Y29uc3RhbnRzU291cmNlQ29kZVJlcHJlc2VudGF0aW9uW2luZGV4IC0gRmlyc3RDb25zdGFudFJl
Z2lzdGVySW5kZXhdOyB9CiAKQEAgLTU4OCwxNCArNTg2LDcgQEAgY2xhc3MgQ29kZUJsb2NrIDog
cHVibGljIEpTQ2VsbCB7CiAgICAgICAgICAgICBpZiAoISFtX2xpdmVuZXNzQW5hbHlzaXMpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuICptX2xpdmVuZXNzQW5hbHlzaXM7CiAgICAgICAgIH0KLSAg
ICAgICAgc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcz4gYW5hbHlzaXMg
PQotICAgICAgICAgICAgc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM+
KHRoaXMpOwotICAgICAgICB7Ci0gICAgICAgICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tl
cihtX2xvY2spOwotICAgICAgICAgICAgaWYgKCFtX2xpdmVuZXNzQW5hbHlzaXMpCi0gICAgICAg
ICAgICAgICAgbV9saXZlbmVzc0FuYWx5c2lzID0gV1RGTW92ZShhbmFseXNpcyk7Ci0gICAgICAg
ICAgICByZXR1cm4gKm1fbGl2ZW5lc3NBbmFseXNpczsKLSAgICAgICAgfQorICAgICAgICByZXR1
cm4gbGl2ZW5lc3NBbmFseXNpc1Nsb3coKTsKICAgICB9CiAgICAgCiAgICAgdm9pZCB2YWxpZGF0
ZSgpOwpAQCAtNjE2LDE4ICs2MDcsNiBAQCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxs
IHsKICAgICBTdHJpbmdKdW1wVGFibGUmIGFkZFN0cmluZ1N3aXRjaEp1bXBUYWJsZSgpIHsgY3Jl
YXRlUmFyZURhdGFJZk5lY2Vzc2FyeSgpOyBtX3JhcmVEYXRhLT5tX3N0cmluZ1N3aXRjaEp1bXBU
YWJsZXMuYXBwZW5kKFN0cmluZ0p1bXBUYWJsZSgpKTsgcmV0dXJuIG1fcmFyZURhdGEtPm1fc3Ry
aW5nU3dpdGNoSnVtcFRhYmxlcy5sYXN0KCk7IH0KICAgICBTdHJpbmdKdW1wVGFibGUmIHN0cmlu
Z1N3aXRjaEp1bXBUYWJsZShpbnQgdGFibGVJbmRleCkgeyBSRUxFQVNFX0FTU0VSVChtX3JhcmVE
YXRhKTsgcmV0dXJuIG1fcmFyZURhdGEtPm1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlc1t0YWJsZUlu
ZGV4XTsgfQogCi0gICAgLy8gTGl2ZSBjYWxsZWUgcmVnaXN0ZXJzIGF0IHlpZWxkIHBvaW50cy4K
LSAgICBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlQ2FsbGVlTG9jYWxzQXRZaWVsZCh1bnNpZ25l
ZCBpbmRleCkgY29uc3QKLSAgICB7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fcmFyZURhdGEp
OwotICAgICAgICByZXR1cm4gbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZFtp
bmRleF07Ci0gICAgfQotICAgIEZhc3RCaXRWZWN0b3ImIGxpdmVDYWxsZWVMb2NhbHNBdFlpZWxk
KHVuc2lnbmVkIGluZGV4KQotICAgIHsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9yYXJlRGF0
YSk7Ci0gICAgICAgIHJldHVybiBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxk
W2luZGV4XTsKLSAgICB9Ci0KICAgICBFdmFsQ29kZUNhY2hlJiBldmFsQ29kZUNhY2hlKCkgeyBj
cmVhdGVSYXJlRGF0YUlmTmVjZXNzYXJ5KCk7IHJldHVybiBtX3JhcmVEYXRhLT5tX2V2YWxDb2Rl
Q2FjaGU7IH0KIAogICAgIGVudW0gU2hyaW5rTW9kZSB7CkBAIC04ODIsOCArODYxLDYgQEAgY2xh
c3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgICAgIFZlY3RvcjxTaW1wbGVKdW1w
VGFibGU+IG1fc3dpdGNoSnVtcFRhYmxlczsKICAgICAgICAgVmVjdG9yPFN0cmluZ0p1bXBUYWJs
ZT4gbV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzOwogCi0gICAgICAgIFZlY3RvcjxGYXN0Qml0VmVj
dG9yPiBtX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkOwotCiAgICAgICAgIEV2YWxDb2RlQ2FjaGUg
bV9ldmFsQ29kZUNhY2hlOwogICAgIH07CiAKQEAgLTkxOCw2ICs4OTUsOCBAQCBjbGFzcyBDb2Rl
QmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgQ29k
ZUJsb2NrU2V0OworCisgICAgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzJiBsaXZlbmVzc0FuYWx5
c2lzU2xvdygpOwogICAgIAogICAgIENvZGVCbG9jayogc3BlY2lhbE9TUkVudHJ5QmxvY2tPck51
bGwoKTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9I
YW5kbGVySW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0hhbmRsZXJJbmZv
LmgKaW5kZXggYWNkZGEwOGVkMTRjYmY5ZjA5NzEyNzUwNDA1YTQxNzQxZjc2YTIxMy4uYmI2OTJi
OWRjMTcwYjA5ZjQzY2U4NjdmOTQxZjc1MzVhY2ZlY2Y2MyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0hhbmRsZXJJbmZvLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0hhbmRsZXJJbmZvLmgKQEAgLTM3LDYgKzM3LDExIEBAIGVudW0gY2xh
c3MgSGFuZGxlclR5cGUgewogICAgIFN5bnRoZXNpemVkRmluYWxseSA9IDMKIH07CiAKK2VudW0g
Y2xhc3MgUmVxdWlyZWRIYW5kbGVyIHsKKyAgICBDYXRjaEhhbmRsZXIsCisgICAgQW55SGFuZGxl
cgorfTsKKwogc3RydWN0IEhhbmRsZXJJbmZvQmFzZSB7CiAgICAgSGFuZGxlclR5cGUgdHlwZSgp
IGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEhhbmRsZXJUeXBlPih0eXBlQml0cyk7IH0KICAg
ICB2b2lkIHNldFR5cGUoSGFuZGxlclR5cGUgdHlwZSkgeyB0eXBlQml0cyA9IHN0YXRpY19jYXN0
PHVpbnQzMl90Pih0eXBlKTsgfQpAQCAtNTgsNiArNjMsMjMgQEAgc3RydWN0IEhhbmRsZXJJbmZv
QmFzZSB7CiAKICAgICBib29sIGlzQ2F0Y2hIYW5kbGVyKCkgY29uc3QgeyByZXR1cm4gdHlwZSgp
ID09IEhhbmRsZXJUeXBlOjpDYXRjaDsgfQogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgSGFuZGxl
cj4KKyAgICBzdGF0aWMgSGFuZGxlciogaGFuZGxlckZvckluZGV4KFZlY3RvcjxIYW5kbGVyPiYg
ZXhlcHRpb25IYW5kbGVycywgdW5zaWduZWQgaW5kZXgsIFJlcXVpcmVkSGFuZGxlciByZXF1aXJl
ZEhhbmRsZXIpCisgICAgeworICAgICAgICBmb3IgKEhhbmRsZXImIGhhbmRsZXIgOiBleGVwdGlv
bkhhbmRsZXJzKSB7CisgICAgICAgICAgICBpZiAoKHJlcXVpcmVkSGFuZGxlciA9PSBSZXF1aXJl
ZEhhbmRsZXI6OkNhdGNoSGFuZGxlcikgJiYgIWhhbmRsZXIuaXNDYXRjaEhhbmRsZXIoKSkKKyAg
ICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgLy8gSGFuZGxlcnMgYXJlIG9y
ZGVyZWQgaW5uZXJtb3N0IGZpcnN0LCBzbyB0aGUgZmlyc3QgaGFuZGxlciB3ZSBlbmNvdW50ZXIK
KyAgICAgICAgICAgIC8vIHRoYXQgY29udGFpbnMgdGhlIHNvdXJjZSBhZGRyZXNzIGlzIHRoZSBj
b3JyZWN0IGhhbmRsZXIgdG8gdXNlLgorICAgICAgICAgICAgLy8gVGhpcyBpbmRleCB1c2VkIGlz
IGVpdGhlciB0aGUgQnl0ZWNvZGVPZmZzZXQgb3IgYSBDYWxsU2l0ZUluZGV4LgorICAgICAgICAg
ICAgaWYgKGhhbmRsZXIuc3RhcnQgPD0gaW5kZXggJiYgaGFuZGxlci5lbmQgPiBpbmRleCkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gJmhhbmRsZXI7CisgICAgICAgIH0KKworICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICB9CisKICAgICB1aW50MzJfdCBzdGFydDsKICAgICB1aW50MzJfdCBl
bmQ7CiAgICAgdWludDMyX3QgdGFyZ2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmNwcAppbmRleCBlMmNiMDAwNDgzNzk0YmE5
MmQ1MTBkY2Y1ZmE5OTQ4ODVhMjNkYzNkLi5jYWI5ZmJkYzRlODM5ZmJiODlhNjkzMzU2MjIyZGIw
MGUxMDIyM2NhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJl
Y2lzZUp1bXBUYXJnZXRzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
UHJlY2lzZUp1bXBUYXJnZXRzLmNwcApAQCAtMjYsMTQgKzI2LDE1IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiUHJlY2lzZUp1bXBUYXJnZXRzLmgiCiAKKyNpbmNsdWRlICJJbnRl
cnByZXRlcklubGluZXMuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAKIG5hbWVzcGFjZSBK
U0MgewogCi10ZW1wbGF0ZSA8c2l6ZV90IHZlY3RvclNpemU+Ci1zdGF0aWMgdm9pZCBnZXRKdW1w
VGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBJbnRlcnByZXRl
ciogaW50ZXJwcmV0ZXIsIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQg
Ynl0ZWNvZGVPZmZzZXQsIFZlY3Rvcjx1bnNpZ25lZCwgdmVjdG9yU2l6ZT4mIG91dCkKK3RlbXBs
YXRlIDxzaXplX3QgdmVjdG9yU2l6ZSwgdHlwZW5hbWUgQmxvY2ssIHR5cGVuYW1lIEluc3RydWN0
aW9uPgorc3RhdGljIHZvaWQgZ2V0SnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChCbG9jayog
Y29kZUJsb2NrLCBJbnRlcnByZXRlciogaW50ZXJwcmV0ZXIsIEluc3RydWN0aW9uKiBpbnN0cnVj
dGlvbnNCZWdpbiwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIFZlY3Rvcjx1bnNpZ25lZCwgdmVj
dG9yU2l6ZT4mIG91dCkKIHsKLSAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGludGVycHJldGVyLT5n
ZXRPcGNvZGVJRChpbnN0cnVjdGlvbnNCZWdpbltieXRlY29kZU9mZnNldF0udS5vcGNvZGUpOwor
ICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGluc3RydWN0
aW9uc0JlZ2luW2J5dGVjb2RlT2Zmc2V0XSk7CiAgICAgSW5zdHJ1Y3Rpb24qIGN1cnJlbnQgPSBp
bnN0cnVjdGlvbnNCZWdpbiArIGJ5dGVjb2RlT2Zmc2V0OwogICAgIHN3aXRjaCAob3Bjb2RlSUQp
IHsKICAgICBjYXNlIG9wX2ptcDoKQEAgLTU0LDIxICs1NSwyNSBAQCBzdGF0aWMgdm9pZCBnZXRK
dW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBJbnRlcnBy
ZXRlciogaQogICAgIGNhc2Ugb3Bfam5sZXNzZXE6CiAgICAgY2FzZSBvcF9qbmdyZWF0ZXI6CiAg
ICAgY2FzZSBvcF9qbmdyZWF0ZXJlcToKLSAgICBjYXNlIG9wX3NhdmU6IC8vIFRoZSBqdW1wIG9m
IG9wX3NhdmUgaXMgcHVyZWx5IGZvciBjYWxjdWxhdGluZyBsaXZlbmVzcy4KICAgICAgICAgb3V0
LmFwcGVuZChieXRlY29kZU9mZnNldCArIGN1cnJlbnRbM10udS5vcGVyYW5kKTsKICAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBvcF9zYXZlOiB7CisgICAgICAgIC8vIFRoZSBqdW1wIG9mIG9wX3Nh
dmUgdW5kZXIgRXh0cmFjdEdlbmVyYXRvckxpdmVDYWxsZWVMb2NhbHMgbW9kZSBpcyBwdXJlbHkg
Zm9yIGNhbGN1bGF0aW5nIGxpdmVuZXNzLgorICAgICAgICBvdXQuYXBwZW5kKGJ5dGVjb2RlT2Zm
c2V0ICsgY3VycmVudFszXS51Lm9wZXJhbmQpOworICAgICAgICBicmVhazsKKyAgICB9CiAgICAg
Y2FzZSBvcF9zd2l0Y2hfaW1tOgogICAgIGNhc2Ugb3Bfc3dpdGNoX2NoYXI6IHsKLSAgICAgICAg
U2ltcGxlSnVtcFRhYmxlJiB0YWJsZSA9IGNvZGVCbG9jay0+c3dpdGNoSnVtcFRhYmxlKGN1cnJl
bnRbMV0udS5vcGVyYW5kKTsKKyAgICAgICAgYXV0byYgdGFibGUgPSBjb2RlQmxvY2stPnN3aXRj
aEp1bXBUYWJsZShjdXJyZW50WzFdLnUub3BlcmFuZCk7CiAgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IHRhYmxlLmJyYW5jaE9mZnNldHMuc2l6ZSgpOyBpLS07KQogICAgICAgICAgICAgb3V0LmFw
cGVuZChieXRlY29kZU9mZnNldCArIHRhYmxlLmJyYW5jaE9mZnNldHNbaV0pOwogICAgICAgICBv
dXQuYXBwZW5kKGJ5dGVjb2RlT2Zmc2V0ICsgY3VycmVudFsyXS51Lm9wZXJhbmQpOwogICAgICAg
ICBicmVhazsKICAgICB9CiAgICAgY2FzZSBvcF9zd2l0Y2hfc3RyaW5nOiB7Ci0gICAgICAgIFN0
cmluZ0p1bXBUYWJsZSYgdGFibGUgPSBjb2RlQmxvY2stPnN0cmluZ1N3aXRjaEp1bXBUYWJsZShj
dXJyZW50WzFdLnUub3BlcmFuZCk7Ci0gICAgICAgIFN0cmluZ0p1bXBUYWJsZTo6U3RyaW5nT2Zm
c2V0VGFibGU6Oml0ZXJhdG9yIGl0ZXIgPSB0YWJsZS5vZmZzZXRUYWJsZS5iZWdpbigpOwotICAg
ICAgICBTdHJpbmdKdW1wVGFibGU6OlN0cmluZ09mZnNldFRhYmxlOjppdGVyYXRvciBlbmQgPSB0
YWJsZS5vZmZzZXRUYWJsZS5lbmQoKTsKKyAgICAgICAgYXV0byYgdGFibGUgPSBjb2RlQmxvY2st
PnN0cmluZ1N3aXRjaEp1bXBUYWJsZShjdXJyZW50WzFdLnUub3BlcmFuZCk7CisgICAgICAgIGF1
dG8gaXRlciA9IHRhYmxlLm9mZnNldFRhYmxlLmJlZ2luKCk7CisgICAgICAgIGF1dG8gZW5kID0g
dGFibGUub2Zmc2V0VGFibGUuZW5kKCk7CiAgICAgICAgIGZvciAoOyBpdGVyICE9IGVuZDsgKytp
dGVyKQogICAgICAgICAgICAgb3V0LmFwcGVuZChieXRlY29kZU9mZnNldCArIGl0ZXItPnZhbHVl
LmJyYW5jaE9mZnNldCk7CiAgICAgICAgIG91dC5hcHBlbmQoYnl0ZWNvZGVPZmZzZXQgKyBjdXJy
ZW50WzJdLnUub3BlcmFuZCk7CkBAIC04MiwxMyArODcsMTkgQEAgc3RhdGljIHZvaWQgZ2V0SnVt
cFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgSW50ZXJwcmV0
ZXIqIGkKICAgICB9CiB9CiAKLXZvaWQgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgVmVjdG9yPHVuc2lnbmVkLCAzMj4mIG91dCkKK2VudW0gY2xhc3MgQ29t
cHV0ZVByZWNpc2VKdW1wVGFyZ2V0c01vZGUgeworICAgIEZvbGxvd0NvZGVCbG9ja0NsYWltLAor
ICAgIEZvcmNlQ29tcHV0ZSwKK307CisKK3RlbXBsYXRlPENvbXB1dGVQcmVjaXNlSnVtcFRhcmdl
dHNNb2RlIE1vZGUsIHR5cGVuYW1lIEJsb2NrLCB0eXBlbmFtZSBJbnN0cnVjdGlvbiwgc2l6ZV90
IHZlY3RvclNpemU+Cit2b2lkIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHNJbnRlcm5hbChCbG9j
ayogY29kZUJsb2NrLCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGlu
c3RydWN0aW9uQ291bnQsIFZlY3Rvcjx1bnNpZ25lZCwgdmVjdG9yU2l6ZT4mIG91dCkKIHsKICAg
ICBBU1NFUlQob3V0LmlzRW1wdHkoKSk7CiAgICAgCiAgICAgLy8gV2Ugd2lsbCBkZXJpdmUgYSBz
dXBlcnNldCBvZiB0aGUganVtcCB0YXJnZXRzIHRoYXQgdGhlIGNvZGUgYmxvY2sgdGhpbmtzIGl0
IGhhcy4KICAgICAvLyBTbywgaWYgdGhlIGNvZGUgYmxvY2sgY2xhaW1zIHRoZXJlIGFyZSBub25l
LCB0aGVuIHdlIGFyZSBkb25lLgotICAgIGlmICghY29kZUJsb2NrLT5udW1iZXJPZkp1bXBUYXJn
ZXRzKCkpCisgICAgaWYgKE1vZGUgPT0gQ29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0c01vZGU6OkZv
bGxvd0NvZGVCbG9ja0NsYWltICYmICFjb2RlQmxvY2stPm51bWJlck9mSnVtcFRhcmdldHMoKSkK
ICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIGZvciAodW5zaWduZWQgaSA9IGNvZGVCbG9jay0+
bnVtYmVyT2ZFeGNlcHRpb25IYW5kbGVycygpOyBpLS07KSB7CkBAIC05OCwxMCArMTA5LDggQEAg
dm9pZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKENvZGVCbG9jayogY29kZUJsb2NrLCBWZWN0
b3I8dW5zaWduZWQsIDMyPiYgb3V0KQogICAgIH0KIAogICAgIEludGVycHJldGVyKiBpbnRlcnBy
ZXRlciA9IGNvZGVCbG9jay0+dm0oKS0+aW50ZXJwcmV0ZXI7Ci0gICAgSW5zdHJ1Y3Rpb24qIGlu
c3RydWN0aW9uc0JlZ2luID0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpOwotICAg
IHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQgPSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLnNp
emUoKTsKICAgICBmb3IgKHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0ID0gMDsgYnl0ZWNvZGVPZmZz
ZXQgPCBpbnN0cnVjdGlvbkNvdW50OykgewotICAgICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGlu
dGVycHJldGVyLT5nZXRPcGNvZGVJRChpbnN0cnVjdGlvbnNCZWdpbltieXRlY29kZU9mZnNldF0u
dS5vcGNvZGUpOworICAgICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGludGVycHJldGVyLT5nZXRP
cGNvZGVJRChpbnN0cnVjdGlvbnNCZWdpbltieXRlY29kZU9mZnNldF0pOwogICAgICAgICBnZXRK
dW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9jaywgaW50ZXJwcmV0ZXIsIGluc3Ry
dWN0aW9uc0JlZ2luLCBieXRlY29kZU9mZnNldCwgb3V0KTsKICAgICAgICAgYnl0ZWNvZGVPZmZz
ZXQgKz0gb3Bjb2RlTGVuZ3Roc1tvcGNvZGVJRF07CiAgICAgfQpAQCAtMTIzLDExICsxMzIsMzQg
QEAgdm9pZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKENvZGVCbG9jayogY29kZUJsb2NrLCBW
ZWN0b3I8dW5zaWduZWQsIDMyPiYgb3V0KQogICAgIG91dC5zaHJpbmtUb0ZpdCgpOwogfQogCi12
b2lkIGZpbmRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2Nr
LCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgVmVjdG9yPHVuc2lnbmVkLCAxPiYgb3V0KQordm9p
ZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKENvZGVCbG9jayogY29kZUJsb2NrLCBWZWN0b3I8
dW5zaWduZWQsIDMyPiYgb3V0KQogewotICAgIEludGVycHJldGVyKiBpbnRlcnByZXRlciA9IGNv
ZGVCbG9jay0+dm0oKS0+aW50ZXJwcmV0ZXI7Ci0gICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9u
c0JlZ2luID0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpOwotICAgIGdldEp1bXBU
YXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoY29kZUJsb2NrLCBpbnRlcnByZXRlciwgaW5zdHJ1Y3Rp
b25zQmVnaW4sIGJ5dGVjb2RlT2Zmc2V0LCBvdXQpOworICAgIGNvbXB1dGVQcmVjaXNlSnVtcFRh
cmdldHNJbnRlcm5hbDxDb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzTW9kZTo6Rm9sbG93Q29kZUJs
b2NrQ2xhaW0+KGNvZGVCbG9jaywgY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpLCBj
b2RlQmxvY2stPmluc3RydWN0aW9ucygpLnNpemUoKSwgb3V0KTsKK30KKwordm9pZCBjb21wdXRl
UHJlY2lzZUp1bXBUYXJnZXRzKENvZGVCbG9jayogY29kZUJsb2NrLCBJbnN0cnVjdGlvbiogaW5z
dHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQsIFZlY3Rvcjx1bnNpZ25l
ZCwgMzI+JiBvdXQpCit7CisgICAgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0c0ludGVybmFsPENv
bXB1dGVQcmVjaXNlSnVtcFRhcmdldHNNb2RlOjpGb2xsb3dDb2RlQmxvY2tDbGFpbT4oY29kZUJs
b2NrLCBpbnN0cnVjdGlvbnNCZWdpbiwgaW5zdHJ1Y3Rpb25Db3VudCwgb3V0KTsKK30KKwordm9p
ZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKFVubGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IFVubGlua2VkSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBpbnN0cnVj
dGlvbkNvdW50LCBWZWN0b3I8dW5zaWduZWQsIDMyPiYgb3V0KQoreworICAgIGNvbXB1dGVQcmVj
aXNlSnVtcFRhcmdldHNJbnRlcm5hbDxDb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzTW9kZTo6Rm9s
bG93Q29kZUJsb2NrQ2xhaW0+KGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb25zQmVnaW4sIGluc3RydWN0
aW9uQ291bnQsIG91dCk7Cit9CisKK3ZvaWQgcmVjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKFVu
bGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFVubGlua2VkSW5zdHJ1Y3Rpb24qIGluc3RydWN0
aW9uc0JlZ2luLCB1bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50LCBWZWN0b3I8dW5zaWduZWQ+JiBv
dXQpCit7CisgICAgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0c0ludGVybmFsPENvbXB1dGVQcmVj
aXNlSnVtcFRhcmdldHNNb2RlOjpGb3JjZUNvbXB1dGU+KGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb25z
QmVnaW4sIGluc3RydWN0aW9uQ291bnQsIG91dCk7Cit9CisKK3ZvaWQgZmluZEp1bXBUYXJnZXRz
Rm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEluc3RydWN0aW9uKiBpbnN0
cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIFZlY3Rvcjx1bnNpZ25lZCwg
MT4mIG91dCkKK3sKKyAgICBnZXRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9j
aywgY29kZUJsb2NrLT52bSgpLT5pbnRlcnByZXRlciwgaW5zdHJ1Y3Rpb25zQmVnaW4sIGJ5dGVj
b2RlT2Zmc2V0LCBvdXQpOworfQorCit2b2lkIGZpbmRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zm
c2V0KFVubGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFVubGlua2VkSW5zdHJ1Y3Rpb24qIGlu
c3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgVmVjdG9yPHVuc2lnbmVk
LCAxPiYgb3V0KQoreworICAgIGdldEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoY29kZUJs
b2NrLCBjb2RlQmxvY2stPnZtKCktPmludGVycHJldGVyLCBpbnN0cnVjdGlvbnNCZWdpbiwgYnl0
ZWNvZGVPZmZzZXQsIG91dCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5oCmluZGV4IDg1
MjQxM2Q3N2I3OTg5ODRiMjdjZWYwZWQ2MmJjOTRjNjg5ZTIxMmMuLmRiOWJkMzgzYjhhYzQ1NTdk
MzI2NzE3YjcyZDRiMGY1MGIxZDE4MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmgKQEAgLTMwLDEwICszMCwxOCBAQAogCiBu
YW1lc3BhY2UgSlNDIHsKIAorY2xhc3MgVW5saW5rZWRDb2RlQmxvY2s7CitzdHJ1Y3QgVW5saW5r
ZWRJbnN0cnVjdGlvbjsKKwogLy8gUmV0dXJuIGEgc29ydGVkIGxpc3Qgb2YgYnl0ZWNvZGUgaW5k
ZXggdGhhdCBhcmUgdGhlIGRlc3RpbmF0aW9uIG9mIGEganVtcC4KIHZvaWQgY29tcHV0ZVByZWNp
c2VKdW1wVGFyZ2V0cyhDb2RlQmxvY2sqLCBWZWN0b3I8dW5zaWduZWQsIDMyPiYgb3V0KTsKK3Zv
aWQgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhDb2RlQmxvY2sqLCBJbnN0cnVjdGlvbiogaW5z
dHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQsIFZlY3Rvcjx1bnNpZ25l
ZCwgMzI+JiBvdXQpOwordm9pZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKFVubGlua2VkQ29k
ZUJsb2NrKiwgVW5saW5rZWRJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVk
IGluc3RydWN0aW9uQ291bnQsIFZlY3Rvcjx1bnNpZ25lZCwgMzI+JiBvdXQpOworCit2b2lkIHJl
Y29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhVbmxpbmtlZENvZGVCbG9jayosIFVubGlua2VkSW5z
dHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50LCBW
ZWN0b3I8dW5zaWduZWQ+JiBvdXQpOwogCi12b2lkIGZpbmRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2Rl
T2Zmc2V0KENvZGVCbG9jayosIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBWZWN0b3I8dW5zaWdu
ZWQsIDE+JiBvdXQpOwordm9pZCBmaW5kSnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChDb2Rl
QmxvY2sqLCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGJ5dGVjb2Rl
T2Zmc2V0LCBWZWN0b3I8dW5zaWduZWQsIDE+JiBvdXQpOwordm9pZCBmaW5kSnVtcFRhcmdldHNG
b3JCeXRlY29kZU9mZnNldChVbmxpbmtlZENvZGVCbG9jayosIFVubGlua2VkSW5zdHJ1Y3Rpb24q
IGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgVmVjdG9yPHVuc2ln
bmVkLCAxPiYgb3V0KTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCmluZGV4IDI5OWFj
NjgwZDlhMWQxZTVhOTBkOWZhZTFhMjJmODQ0ZTI5MmUzZTIuLmY3YjVhZTBiNmI0NzIxNzBkMjg5
NDY0MTY3NjYxOGM1N2M0OWVjMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1
ZGUgIlVubGlua2VkQ29kZUJsb2NrLmgiCiAKICNpbmNsdWRlICJCeXRlY29kZUdlbmVyYXRvci5o
IgorI2luY2x1ZGUgIkJ5dGVjb2RlTW9kaWZpY2F0aW9uU2V0LmgiCiAjaW5jbHVkZSAiQ2xhc3NJ
bmZvLmgiCiAjaW5jbHVkZSAiQ29kZUNhY2hlLmgiCiAjaW5jbHVkZSAiRXhlY3V0YWJsZS5oIgpA
QCAtMzYsNiArMzcsNyBAQAogI2luY2x1ZGUgIkpTU3RyaW5nLmgiCiAjaW5jbHVkZSAiSlNDSW5s
aW5lcy5oIgogI2luY2x1ZGUgIlBhcnNlci5oIgorI2luY2x1ZGUgIlByZWNpc2VKdW1wVGFyZ2V0
cy5oIgogI2luY2x1ZGUgIlNvdXJjZVByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlLmgi
CiAjaW5jbHVkZSAiU3ltYm9sVGFibGUuaCIKQEAgLTM2Niw1ICszNjgsMTExIEBAIGNvbnN0IFVu
bGlua2VkSW5zdHJ1Y3Rpb25TdHJlYW0mIFVubGlua2VkQ29kZUJsb2NrOjppbnN0cnVjdGlvbnMo
KSBjb25zdAogICAgIHJldHVybiAqbV91bmxpbmtlZEluc3RydWN0aW9uczsKIH0KIAorVW5saW5r
ZWRIYW5kbGVySW5mbyogVW5saW5rZWRDb2RlQmxvY2s6OmhhbmRsZXJGb3JCeXRlY29kZU9mZnNl
dCh1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgUmVxdWlyZWRIYW5kbGVyIHJlcXVpcmVkSGFuZGxl
cikKK3sKKyAgICByZXR1cm4gaGFuZGxlckZvckluZGV4KGJ5dGVjb2RlT2Zmc2V0LCByZXF1aXJl
ZEhhbmRsZXIpOworfQorCitVbmxpbmtlZEhhbmRsZXJJbmZvKiBVbmxpbmtlZENvZGVCbG9jazo6
aGFuZGxlckZvckluZGV4KHVuc2lnbmVkIGluZGV4LCBSZXF1aXJlZEhhbmRsZXIgcmVxdWlyZWRI
YW5kbGVyKQoreworICAgIGlmICghbV9yYXJlRGF0YSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgcmV0dXJuIFVubGlua2VkSGFuZGxlckluZm86OmhhbmRsZXJGb3JJbmRleChtX3JhcmVE
YXRhLT5tX2V4Y2VwdGlvbkhhbmRsZXJzLCBpbmRleCwgcmVxdWlyZWRIYW5kbGVyKTsKK30KKwor
dm9pZCBVbmxpbmtlZENvZGVCbG9jazo6YXBwbHlNb2RpZmljYXRpb24oQnl0ZWNvZGVNb2RpZmlj
YXRpb25TZXQmIGluc2VydGlvblNldCkKK3sKKyAgICAvLyBCZWZvcmUgYXBwbHlpbmcgdGhlIGNo
YW5nZXMsIHdlIGFkanVzdCB0aGUganVtcHMgYmFzZWQgb24gdGhlIG9yaWdpbmFsIGJ5dGVjb2Rl
IG9mZnNldCwgdGhlIG9mZnNldCB0byB0aGUganVtcCB0YXJnZXQsIGFuZAorICAgIC8vIHRoZSBp
bnNlcnRpb24gaW5mb3JtYXRpb24uCisKKyAgICBCeXRlY29kZUdyYXBoPFVubGlua2VkQ29kZUJs
b2NrPiYgZ3JhcGggPSBpbnNlcnRpb25TZXQuZ3JhcGgoKTsKKyAgICBVbmxpbmtlZEluc3RydWN0
aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiA9IGdyYXBoLmluc3RydWN0aW9ucygpLmJlZ2luKCk7Cisg
ICAgZm9yIChpbnQgYnl0ZWNvZGVPZmZzZXQgPSAwLCBpbnN0cnVjdGlvbkNvdW50ID0gZ3JhcGgu
aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpOyBieXRlY29kZU9mZnNldCA8IGluc3RydWN0aW9uQ291bnQ7
KSB7CisgICAgICAgIFVubGlua2VkSW5zdHJ1Y3Rpb24qIGN1cnJlbnQgPSBpbnN0cnVjdGlvbnNC
ZWdpbiArIGJ5dGVjb2RlT2Zmc2V0OworICAgICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGN1cnJl
bnRbMF0udS5vcGNvZGU7CisKKyAgICAgICAgc3dpdGNoIChvcGNvZGVJRCkgeworICAgICAgICBj
YXNlIG9wX2ptcDoKKyAgICAgICAgICAgIGN1cnJlbnRbMV0udS5vcGVyYW5kID0gaW5zZXJ0aW9u
U2V0LmFkanVzdE9mZnNldChieXRlY29kZU9mZnNldCwgYnl0ZWNvZGVPZmZzZXQgKyBjdXJyZW50
WzFdLnUub3BlcmFuZCk7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIG9wX2p0
cnVlOgorICAgICAgICBjYXNlIG9wX2pmYWxzZToKKyAgICAgICAgY2FzZSBvcF9qZXFfbnVsbDoK
KyAgICAgICAgY2FzZSBvcF9qbmVxX251bGw6CisgICAgICAgICAgICBjdXJyZW50WzJdLnUub3Bl
cmFuZCA9IGluc2VydGlvblNldC5hZGp1c3RPZmZzZXQoYnl0ZWNvZGVPZmZzZXQsIGJ5dGVjb2Rl
T2Zmc2V0ICsgY3VycmVudFsyXS51Lm9wZXJhbmQpOworICAgICAgICAgICAgYnJlYWs7CisKKyAg
ICAgICAgY2FzZSBvcF9qbmVxX3B0cjoKKyAgICAgICAgY2FzZSBvcF9qbGVzczoKKyAgICAgICAg
Y2FzZSBvcF9qbGVzc2VxOgorICAgICAgICBjYXNlIG9wX2pncmVhdGVyOgorICAgICAgICBjYXNl
IG9wX2pncmVhdGVyZXE6CisgICAgICAgIGNhc2Ugb3Bfam5sZXNzOgorICAgICAgICBjYXNlIG9w
X2pubGVzc2VxOgorICAgICAgICBjYXNlIG9wX2puZ3JlYXRlcjoKKyAgICAgICAgY2FzZSBvcF9q
bmdyZWF0ZXJlcToKKyAgICAgICAgICAgIGN1cnJlbnRbM10udS5vcGVyYW5kID0gaW5zZXJ0aW9u
U2V0LmFkanVzdE9mZnNldChieXRlY29kZU9mZnNldCwgYnl0ZWNvZGVPZmZzZXQgKyBjdXJyZW50
WzNdLnUub3BlcmFuZCk7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIG9wX3N3
aXRjaF9pbW06CisgICAgICAgIGNhc2Ugb3Bfc3dpdGNoX2NoYXI6IHsKKyAgICAgICAgICAgIGF1
dG8mIHRhYmxlID0gc3dpdGNoSnVtcFRhYmxlKGN1cnJlbnRbMV0udS5vcGVyYW5kKTsKKyAgICAg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IHRhYmxlLmJyYW5jaE9mZnNldHMuc2l6ZSgpOyBpLS07
KQorICAgICAgICAgICAgICAgIHRhYmxlLmJyYW5jaE9mZnNldHNbaV0gPSBpbnNlcnRpb25TZXQu
YWRqdXN0T2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0LCBieXRlY29kZU9mZnNldCArIHRhYmxlLmJyYW5j
aE9mZnNldHNbaV0pOworICAgICAgICAgICAgY3VycmVudFsyXS51Lm9wZXJhbmQgPSBpbnNlcnRp
b25TZXQuYWRqdXN0T2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0LCBieXRlY29kZU9mZnNldCArIGN1cnJl
bnRbMl0udS5vcGVyYW5kKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAg
ICAgY2FzZSBvcF9zd2l0Y2hfc3RyaW5nOiB7CisgICAgICAgICAgICBhdXRvJiB0YWJsZSA9IHN0
cmluZ1N3aXRjaEp1bXBUYWJsZShjdXJyZW50WzFdLnUub3BlcmFuZCk7CisgICAgICAgICAgICBh
dXRvIGl0ZXIgPSB0YWJsZS5vZmZzZXRUYWJsZS5iZWdpbigpOworICAgICAgICAgICAgYXV0byBl
bmQgPSB0YWJsZS5vZmZzZXRUYWJsZS5lbmQoKTsKKyAgICAgICAgICAgIGZvciAoOyBpdGVyICE9
IGVuZDsgKytpdGVyKQorICAgICAgICAgICAgICAgIGl0ZXItPnZhbHVlLmJyYW5jaE9mZnNldCA9
IGluc2VydGlvblNldC5hZGp1c3RPZmZzZXQoYnl0ZWNvZGVPZmZzZXQsIGJ5dGVjb2RlT2Zmc2V0
ICsgaXRlci0+dmFsdWUuYnJhbmNoT2Zmc2V0KTsKKyAgICAgICAgICAgIGN1cnJlbnRbMl0udS5v
cGVyYW5kID0gaW5zZXJ0aW9uU2V0LmFkanVzdE9mZnNldChieXRlY29kZU9mZnNldCwgYnl0ZWNv
ZGVPZmZzZXQgKyBjdXJyZW50WzJdLnUub3BlcmFuZCk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQorCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
fQorCisgICAgICAgIGJ5dGVjb2RlT2Zmc2V0ICs9IG9wY29kZUxlbmd0aChvcGNvZGVJRCk7Cisg
ICAgfQorCisgICAgLy8gVGhlbiwgZXhjZXB0aW9uIGhhbmRsZXJzIHNob3VsZCBiZSBhZGp1c3Rl
ZC4KKyAgICBpZiAobV9yYXJlRGF0YSkgeworICAgICAgICBmb3IgKFVubGlua2VkSGFuZGxlcklu
Zm8mIGhhbmRsZXIgOiBtX3JhcmVEYXRhLT5tX2V4Y2VwdGlvbkhhbmRsZXJzKSB7CisgICAgICAg
ICAgICBoYW5kbGVyLnRhcmdldCA9IGluc2VydGlvblNldC5hZGp1c3RPZmZzZXQoMCwgaGFuZGxl
ci50YXJnZXQpOworICAgICAgICAgICAgaGFuZGxlci5zdGFydCA9IGluc2VydGlvblNldC5hZGp1
c3RPZmZzZXQoMCwgaGFuZGxlci5zdGFydCk7CisgICAgICAgICAgICBoYW5kbGVyLmVuZCA9IGlu
c2VydGlvblNldC5hZGp1c3RPZmZzZXQoMCwgaGFuZGxlci5lbmQpOworICAgICAgICB9CisKKyAg
ICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3JhcmVEYXRhLT5tX29wUHJvZmlsZUNvbnRy
b2xGbG93Qnl0ZWNvZGVPZmZzZXRzLnNpemUoKTsgKytpKQorICAgICAgICAgICAgbV9yYXJlRGF0
YS0+bV9vcFByb2ZpbGVDb250cm9sRmxvd0J5dGVjb2RlT2Zmc2V0c1tpXSA9IGluc2VydGlvblNl
dC5hZGp1c3RPZmZzZXQoMCwgbV9yYXJlRGF0YS0+bV9vcFByb2ZpbGVDb250cm9sRmxvd0J5dGVj
b2RlT2Zmc2V0c1tpXSk7CisKKyAgICAgICAgaWYgKCFtX3JhcmVEYXRhLT5tX3R5cGVQcm9maWxl
ckluZm9NYXAuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICBIYXNoTWFwPHVuc2lnbmVkLCBSYXJl
RGF0YTo6VHlwZVByb2ZpbGVyRXhwcmVzc2lvblJhbmdlPiBhZGp1c3RlZFR5cGVQcm9maWxlcklu
Zm9NYXA7CisgICAgICAgICAgICBmb3IgKGF1dG8mIGVudHJ5IDogbV9yYXJlRGF0YS0+bV90eXBl
UHJvZmlsZXJJbmZvTWFwKQorICAgICAgICAgICAgICAgIGFkanVzdGVkVHlwZVByb2ZpbGVySW5m
b01hcC5zZXQoaW5zZXJ0aW9uU2V0LmFkanVzdE9mZnNldCgwLCBlbnRyeS5rZXkpLCBlbnRyeS52
YWx1ZSk7CisgICAgICAgICAgICBtX3JhcmVEYXRhLT5tX3R5cGVQcm9maWxlckluZm9NYXAuc3dh
cChhZGp1c3RlZFR5cGVQcm9maWxlckluZm9NYXApOworICAgICAgICB9CisgICAgfQorCisgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zLnNpemUo
KTsgKytpKQorICAgICAgICBtX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zW2ldID0gaW5zZXJ0
aW9uU2V0LmFkanVzdE9mZnNldCgwLCBtX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zW2ldKTsK
KworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9leHByZXNzaW9uSW5mby5zaXplKCk7ICsr
aSkKKyAgICAgICAgbV9leHByZXNzaW9uSW5mb1tpXS5pbnN0cnVjdGlvbk9mZnNldCA9IGluc2Vy
dGlvblNldC5hZGp1c3RPZmZzZXQoMCwgbV9leHByZXNzaW9uSW5mb1tpXS5pbnN0cnVjdGlvbk9m
ZnNldCk7CisKKyAgICAvLyBUaGVuLCBtb2RpZnkgdGhlIHVubGlua2VkIGluc3RydWN0aW9ucy4K
KyAgICBpbnNlcnRpb25TZXQuYXBwbHlNb2RpZmljYXRpb24oKTsKKworICAgIC8vIEFuZCByZWNv
bXB1dGUgdGhlIGp1bXAgdGFyZ2V0IGJhc2VkIG9uIHRoZSBtb2RpZmllZCB1bmxpbmtlZCBpbnN0
cnVjdGlvbnMuCisgICAgbV9qdW1wVGFyZ2V0cy5jbGVhcigpOworICAgIHJlY29tcHV0ZVByZWNp
c2VKdW1wVGFyZ2V0cyh0aGlzLCBncmFwaC5pbnN0cnVjdGlvbnMoKS5iZWdpbigpLCBncmFwaC5p
bnN0cnVjdGlvbnMoKS5zaXplKCksIG1fanVtcFRhcmdldHMpOworfQorCiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKaW5kZXgg
OTFmZGNhNDhjMWUzOWU4YmVmYjBjNWZkNTVmZDliZDkxYzFmMzcwNy4uODhjZjBjOGYwOWU0NDAz
MzQxN2UwNGJhYTMyZGM1MDJkZTE4MDIwOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKQEAgLTQ4LDYgKzQ4LDcgQEAKIAogbmFt
ZXNwYWNlIEpTQyB7CiAKK2NsYXNzIEJ5dGVjb2RlTW9kaWZpY2F0aW9uU2V0OwogY2xhc3MgRGVi
dWdnZXI7CiBjbGFzcyBGdW5jdGlvbk1ldGFkYXRhTm9kZTsKIGNsYXNzIEZ1bmN0aW9uRXhlY3V0
YWJsZTsKQEAgLTY5LDcgKzcwLDExIEBAIHR5cGVkZWYgdW5zaWduZWQgVW5saW5rZWRPYmplY3RB
bGxvY2F0aW9uUHJvZmlsZTsKIHR5cGVkZWYgdW5zaWduZWQgVW5saW5rZWRMTEludENhbGxMaW5r
SW5mbzsKIAogc3RydWN0IFVubGlua2VkU3RyaW5nSnVtcFRhYmxlIHsKLSAgICB0eXBlZGVmIEhh
c2hNYXA8UmVmUHRyPFN0cmluZ0ltcGw+LCBpbnQzMl90PiBTdHJpbmdPZmZzZXRUYWJsZTsKKyAg
ICBzdHJ1Y3QgT2Zmc2V0TG9jYXRpb24geworICAgICAgICBpbnQzMl90IGJyYW5jaE9mZnNldDsK
KyAgICB9OworCisgICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxTdHJpbmdJbXBsPiwgT2Zmc2V0
TG9jYXRpb24+IFN0cmluZ09mZnNldFRhYmxlOwogICAgIFN0cmluZ09mZnNldFRhYmxlIG9mZnNl
dFRhYmxlOwogCiAgICAgaW5saW5lIGludDMyX3Qgb2Zmc2V0Rm9yVmFsdWUoU3RyaW5nSW1wbCog
dmFsdWUsIGludDMyX3QgZGVmYXVsdE9mZnNldCkKQEAgLTc4LDcgKzgzLDcgQEAgc3RydWN0IFVu
bGlua2VkU3RyaW5nSnVtcFRhYmxlIHsKICAgICAgICAgU3RyaW5nT2Zmc2V0VGFibGU6OmNvbnN0
X2l0ZXJhdG9yIGxvYyA9IG9mZnNldFRhYmxlLmZpbmQodmFsdWUpOwogICAgICAgICBpZiAobG9j
ID09IGVuZCkKICAgICAgICAgICAgIHJldHVybiBkZWZhdWx0T2Zmc2V0OwotICAgICAgICByZXR1
cm4gbG9jLT52YWx1ZTsKKyAgICAgICAgcmV0dXJuIGxvYy0+dmFsdWUuYnJhbmNoT2Zmc2V0Owog
ICAgIH0KIAogfTsKQEAgLTEwNiw2ICsxMTEsOCBAQCBzdHJ1Y3QgVW5saW5rZWRJbnN0cnVjdGlv
biB7CiAgICAgfSB1OwogfTsKIAorY2xhc3MgQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb247CisK
IGNsYXNzIFVubGlua2VkQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiBwdWJsaWM6CiAgICAg
dHlwZWRlZiBKU0NlbGwgQmFzZTsKQEAgLTExNSw2ICsxMjIsOCBAQCBjbGFzcyBVbmxpbmtlZENv
ZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogCiAgICAgZW51bSB7IENhbGxGdW5jdGlvbiwgQXBw
bHlGdW5jdGlvbiB9OwogCisgICAgdHlwZWRlZiBWZWN0b3I8VW5saW5rZWRJbnN0cnVjdGlvbiwg
MCwgVW5zYWZlVmVjdG9yT3ZlcmZsb3c+IFVucGFja2VkSW5zdHJ1Y3Rpb25zOworCiAgICAgYm9v
bCBpc0NvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9pc0NvbnN0cnVjdG9yOyB9CiAgICAg
Ym9vbCBpc1N0cmljdE1vZGUoKSBjb25zdCB7IHJldHVybiBtX2lzU3RyaWN0TW9kZTsgfQogICAg
IGJvb2wgdXNlc0V2YWwoKSBjb25zdCB7IHJldHVybiBtX3VzZXNFdmFsOyB9CkBAIC0yMDQsNiAr
MjEzLDkgQEAgY2xhc3MgVW5saW5rZWRDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICB1
bnNpZ25lZCBqdW1wVGFyZ2V0KGludCBpbmRleCkgY29uc3QgeyByZXR1cm4gbV9qdW1wVGFyZ2V0
c1tpbmRleF07IH0KICAgICB1bnNpZ25lZCBsYXN0SnVtcFRhcmdldCgpIGNvbnN0IHsgcmV0dXJu
IG1fanVtcFRhcmdldHMubGFzdCgpOyB9CiAKKyAgICBVbmxpbmtlZEhhbmRsZXJJbmZvKiBoYW5k
bGVyRm9yQnl0ZWNvZGVPZmZzZXQodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIFJlcXVpcmVkSGFu
ZGxlciA9IFJlcXVpcmVkSGFuZGxlcjo6QW55SGFuZGxlcik7CisgICAgVW5saW5rZWRIYW5kbGVy
SW5mbyogaGFuZGxlckZvckluZGV4KHVuc2lnbmVkLCBSZXF1aXJlZEhhbmRsZXIgPSBSZXF1aXJl
ZEhhbmRsZXI6OkFueUhhbmRsZXIpOworCiAgICAgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbigpIGNv
bnN0IHsgcmV0dXJuIG1faXNCdWlsdGluRnVuY3Rpb247IH0KIAogICAgIENvbnN0cnVjdG9yS2lu
ZCBjb25zdHJ1Y3RvcktpbmQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxDb25zdHJ1Y3Rv
cktpbmQ+KG1fY29uc3RydWN0b3JLaW5kKTsgfQpAQCAtMzg0LDYgKzM5Niw4IEBAIGNsYXNzIFVu
bGlua2VkQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgfQogCiBwcml2YXRlOgorICAg
IGZyaWVuZCBjbGFzcyBCeXRlY29kZU1vZGlmaWNhdGlvblNldDsKKyAgICB2b2lkIGFwcGx5TW9k
aWZpY2F0aW9uKEJ5dGVjb2RlTW9kaWZpY2F0aW9uU2V0Jik7CiAKICAgICB2b2lkIGNyZWF0ZVJh
cmVEYXRhSWZOZWNlc3NhcnkoKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9WaXJ0dWFsUmVnaXN0ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9WaXJ0dWFsUmVnaXN0ZXIuaAppbmRleCBkM2RmNDA5NTdiNTE3NTY4ZTNhZWZiZTNh
MWE2MDlmZDg3OGJhYWMzLi5kYWY1MDlmNmM3ZDExNWU0NWJjYjEwN2M2N2QzZDM4ZDgwNGYyODk0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmlydHVhbFJlZ2lz
dGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZpcnR1YWxSZWdpc3Rl
ci5oCkBAIC0yNiw4ICsyNiw4IEBACiAjaWZuZGVmIFZpcnR1YWxSZWdpc3Rlcl9oCiAjZGVmaW5l
IFZpcnR1YWxSZWdpc3Rlcl9oCiAKKyNpbmNsdWRlICJCeXRlY29kZUNvbnZlbnRpb25zLmgiCiAj
aW5jbHVkZSAiQ2FsbEZyYW1lLmgiCi0KICNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KIAog
bmFtZXNwYWNlIEpTQyB7CkBAIC0xMDMsNyArMTAzLDcgQEAgY2xhc3MgVmlydHVhbFJlZ2lzdGVy
IHsKIAogcHJpdmF0ZToKICAgICBzdGF0aWMgY29uc3QgaW50IHNfaW52YWxpZFZpcnR1YWxSZWdp
c3RlciA9IDB4M2ZmZmZmZmY7Ci0gICAgc3RhdGljIGNvbnN0IGludCBzX2ZpcnN0Q29uc3RhbnRS
ZWdpc3RlckluZGV4ID0gMHg0MDAwMDAwMDsKKyAgICBzdGF0aWMgY29uc3QgaW50IHNfZmlyc3RD
b25zdGFudFJlZ2lzdGVySW5kZXggPSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleDsKIAogICAg
IHN0YXRpYyBpbnQgbG9jYWxUb09wZXJhbmQoaW50IGxvY2FsKSB7IHJldHVybiAtMSAtIGxvY2Fs
OyB9CiAgICAgc3RhdGljIGludCBvcGVyYW5kVG9Mb2NhbChpbnQgb3BlcmFuZCkgeyByZXR1cm4g
LTEgLSBvcGVyYW5kOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IDBmYzhjZWIzYmQ1NmJiNWViOGM3
Y2I3MzNkYTNhMDRhYzYzNjNlMjYuLjlhMGE0YTc2ZWM2ZGY0YzUwZjlkNjI2ZmE3NWYwYTRkZDMx
MTA5ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0
ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiQnl0
ZWNvZGVHZW5lcmF0b3IuaCIKIAogI2luY2x1ZGUgIkJ1aWx0aW5FeGVjdXRhYmxlcy5oIgorI2lu
Y2x1ZGUgIkJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVM
aXZlbmVzc0FuYWx5c2lzLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJK
U0Z1bmN0aW9uLmgiCkBAIC0xNTQsNiArMTU1LDEwIEBAIFBhcnNlckVycm9yIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjpnZW5lcmF0ZSgpCiAgICAgICAgIG1fY29kZUJsb2NrLT5hZGRFeGNlcHRpb25IYW5k
bGVyKGluZm8pOwogICAgIH0KICAgICAKKworICAgIGlmIChtX2NvZGVCbG9jay0+cGFyc2VNb2Rl
KCkgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JCb2R5TW9kZSkKKyAgICAgICAgcGVyZm9y
bUdlbmVyYXRvcmlmaWNhdGlvbihtX2NvZGVCbG9jay5nZXQoKSwgbV9pbnN0cnVjdGlvbnMsIG1f
Z2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZS5nZXQoKSwgbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRh
YmxlSW5kZXgpOworCiAgICAgbV9jb2RlQmxvY2stPnNldEluc3RydWN0aW9ucyhzdGQ6Om1ha2Vf
dW5pcXVlPFVubGlua2VkSW5zdHJ1Y3Rpb25TdHJlYW0+KG1faW5zdHJ1Y3Rpb25zKSk7CiAKICAg
ICBtX2NvZGVCbG9jay0+c2hyaW5rVG9GaXQoKTsKQEAgLTI2MSwxMCArMjY2LDE0IEBAIEJ5dGVj
b2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVu
Y3Rpb25Ob2RlLCBVbmxpbmtlCiAgICAgYm9vbCBzaG91bGRDYXB0dXJlQWxsT2ZUaGVUaGluZ3Mg
PSBtX3Nob3VsZEVtaXREZWJ1Z0hvb2tzIHx8IGNvZGVCbG9jay0+dXNlc0V2YWwoKTsKICAgICBi
b29sIG5lZWRzQXJndW1lbnRzID0gKGZ1bmN0aW9uTm9kZS0+dXNlc0FyZ3VtZW50cygpIHx8IGNv
ZGVCbG9jay0+dXNlc0V2YWwoKSB8fCAoZnVuY3Rpb25Ob2RlLT51c2VzQXJyb3dGdW5jdGlvbigp
ICYmICFjb2RlQmxvY2stPmlzQXJyb3dGdW5jdGlvbigpICYmIGlzQXJndW1lbnRzVXNlZEluSW5u
ZXJBcnJvd0Z1bmN0aW9uKCkpKTsKIAotICAgIC8vIEdlbmVyYXRvciBuZXZlciBwcm92aWRlcyAi
YXJndW1lbnRzIi4gImFyZ3VtZW50cyIgcmVmZXJlbmNlIHdpbGwgYmUgcmVzb2x2ZWQgaW4gYW4g
dXBwZXIgZ2VuZXJhdG9yIGZ1bmN0aW9uIHNjb3BlLgotICAgIGlmIChwYXJzZU1vZGUgPT0gU291
cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JCb2R5TW9kZSkKKyAgICBpZiAocGFyc2VNb2RlID09IFNv
dXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yQm9keU1vZGUpIHsKKyAgICAgICAgLy8gR2VuZXJhdG9y
IG5ldmVyIHByb3ZpZGVzICJhcmd1bWVudHMiLiAiYXJndW1lbnRzIiByZWZlcmVuY2Ugd2lsbCBi
ZSByZXNvbHZlZCBpbiBhbiB1cHBlciBnZW5lcmF0b3IgZnVuY3Rpb24gc2NvcGUuCiAgICAgICAg
IG5lZWRzQXJndW1lbnRzID0gZmFsc2U7CiAKKyAgICAgICAgLy8gR2VuZXJhdG9yIHVzZXMgdGhl
IHZhciBzY29wZSB0byBzYXZlIGFuZCByZXN1bWUgaXRzIHZhcmlhYmxlcy4gU28gdGhlIGxleGlj
YWwgc2NvcGUgaXMgYWx3YXlzIGluc3RhbnRpYXRlZC4KKyAgICAgICAgc2hvdWxkQ2FwdHVyZVNv
bWVPZlRoZVRoaW5ncyA9IHRydWU7CisgICAgfQorCiAgICAgaWYgKHBhcnNlTW9kZSA9PSBTb3Vy
Y2VQYXJzZU1vZGU6OkdlbmVyYXRvcldyYXBwZXJGdW5jdGlvbk1vZGUgJiYgbmVlZHNBcmd1bWVu
dHMpIHsKICAgICAgICAgLy8gR2VuZXJhdG9yIGRvZXMgbm90IHByb3ZpZGUgImFyZ3VtZW50cyIu
IEluc3RlYWQsIHdyYXBwaW5nIEdlbmVyYXRvckZ1bmN0aW9uIHByb3ZpZGVzICJhcmd1bWVudHMi
LgogICAgICAgICAvLyBUaGlzIGlzIGJlY2F1c2UgYXJndW1lbnRzIG9mIGEgZ2VuZXJhdG9yIHNo
b3VsZCBiZSBldmFsdWF0ZWQgYmVmb3JlIHN0YXJ0aW5nIGl0LgpAQCAtMjczLDcgKzI4Miw3IEBA
IEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9k
ZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtlCiAgICAgICAgIC8vICAgIGZ1bmN0aW9uICpnZW4oYSwg
YiA9IGhlbGxvKCkpCiAgICAgICAgIC8vICAgIHsKICAgICAgICAgLy8gICAgICAgIHJldHVybiB7
Ci0gICAgICAgIC8vICAgICAgICAgICAgQGdlbmVyYXRvck5leHQ6IGZ1bmN0aW9uIChAZ2VuZXJh
dG9yLCBAZ2VuZXJhdG9yU3RhdGUsIEBnZW5lcmF0b3JWYWx1ZSwgQGdlbmVyYXRvclJlc3VtZU1v
ZGUpCisgICAgICAgIC8vICAgICAgICAgICAgQGdlbmVyYXRvck5leHQ6IGZ1bmN0aW9uIChAZ2Vu
ZXJhdG9yLCBAZ2VuZXJhdG9yU3RhdGUsIEBnZW5lcmF0b3JWYWx1ZSwgQGdlbmVyYXRvclJlc3Vt
ZU1vZGUsIEBnZW5lcmF0b3JGcmFtZSkKICAgICAgICAgLy8gICAgICAgICAgICB7CiAgICAgICAg
IC8vICAgICAgICAgICAgICAgIGFyZ3VtZW50czsgIC8vIFRoaXMgYGFyZ3VtZW50c2Agc2hvdWxk
IHJlZmVyZW5jZSB0byB0aGUgZ2VuJ3MgYXJndW1lbnRzLgogICAgICAgICAvLyAgICAgICAgICAg
ICAgICAuLi4KQEAgLTMwMiwxNiArMzExLDE0IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29k
ZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtlCiAg
ICAgICAgIHJldHVybiBjYXB0dXJlcyh1aWQpID8gVmFyS2luZDo6U2NvcGUgOiBWYXJLaW5kOjpT
dGFjazsKICAgICB9OwogCi0gICAgZW1pdEVudGVyKCk7Ci0KLSAgICBhbGxvY2F0ZUFuZEVtaXRT
Y29wZSgpOwotCiAgICAgbV9jYWxsZWVSZWdpc3Rlci5zZXRJbmRleChDYWxsRnJhbWVTbG90Ojpj
YWxsZWUpOwogCiAgICAgaW5pdGlhbGl6ZVBhcmFtZXRlcnMocGFyYW1ldGVycyk7CiAgICAgQVNT
RVJUKCEoaXNTaW1wbGVQYXJhbWV0ZXJMaXN0ICYmIG1fcmVzdFBhcmFtZXRlcikpOwogCi0gICAg
Ly8gQmVmb3JlIGVtaXR0aW5nIGEgc2NvcGUgY3JlYXRpb24sIGVtaXQgYSBnZW5lcmF0b3IgcHJv
bG9ndWUgdGhhdCBjb250YWlucyBqdW1wIGJhc2VkIG9uIGEgZ2VuZXJhdG9yJ3Mgc3RhdGUuCisg
ICAgZW1pdEVudGVyKCk7CisKKyAgICAvLyBCZWZvcmUgZW1pdHRpbmcgYW55IG9mIHRoZSBhY3R1
YWwgY29kZSBleGNlcHQgZm9yIG9wX2VudGVyLCBlbWl0IGEgZ2VuZXJhdG9yIHByb2xvZ3VlIHRo
YXQgY29udGFpbnMganVtcCBiYXNlZCBvbiBhIGdlbmVyYXRvcidzIHN0YXRlLgogICAgIGlmIChw
YXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JCb2R5TW9kZSkgewogICAgICAg
ICBtX2dlbmVyYXRvclJlZ2lzdGVyID0gJm1fcGFyYW1ldGVyc1sxXTsKIApAQCAtMzI1LDYgKzMz
Miw4IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0
aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtlCiAgICAgICAgIGVtaXRHZW5lcmF0b3JTdGF0
ZUxhYmVsKCk7CiAgICAgfQogCisgICAgYWxsb2NhdGVBbmRFbWl0U2NvcGUoKTsKKwogICAgIGlm
IChmdW5jdGlvbk5hbWVJc0luU2NvcGUoZnVuY3Rpb25Ob2RlLT5pZGVudCgpLCBmdW5jdGlvbk5v
ZGUtPmZ1bmN0aW9uTW9kZSgpKSkgewogICAgICAgICBBU1NFUlQocGFyc2VNb2RlICE9IFNvdXJj
ZVBhcnNlTW9kZTo6R2VuZXJhdG9yQm9keU1vZGUpOwogICAgICAgICBib29sIGlzRHluYW1pY1Nj
b3BlID0gZnVuY3Rpb25OYW1lU2NvcGVJc0R5bmFtaWMoY29kZUJsb2NrLT51c2VzRXZhbCgpLCBj
b2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKTsKQEAgLTYzMSw2ICs2NDAsMTYgQEAgQnl0ZWNvZGVH
ZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25Ob2RlKiBmdW5jdGlv
bk5vZGUsIFVubGlua2UKICAgICAgICAgICAgIGVtaXRMb2FkTmV3VGFyZ2V0RnJvbUFycm93RnVu
Y3Rpb25MZXhpY2FsRW52aXJvbm1lbnQoKTsKICAgICB9CiAgICAgCisgICAgLy8gU2V0IHVwIHRo
ZSBsZXhpY2FsIGVudmlyb25tZW50IHNjb3BlIGFzIHRoZSBnZW5lcmF0b3IgZnJhbWUuIFdlIHN0
b3JlIHRoZSBzYXZlZCBhbmQgcmVzdW1lZCBnZW5lcmF0b3IgcmVnaXN0ZXJzIGludG8gdGhpcyBz
Y29wZSB3aXRoIHRoZSBzeW1ib2wga2V5cy4KKyAgICAvLyBTaW5jZSB0aGV5IGFyZSBzeW1ib2wg
a2V5ZWQsIHRoZXNlIHZhcmlhYmxlcyBjYW5ub3QgYmUgcmVhY2hlZCBmcm9tIHRoZSB1c3VhbCBj
b2RlLgorICAgIGlmIChTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckJvZHlNb2RlID09IHBhcnNl
TW9kZSkgeworICAgICAgICBBU1NFUlQobV9sZXhpY2FsRW52aXJvbm1lbnRSZWdpc3Rlcik7Cisg
ICAgICAgIG1fZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZS5zZXQoKm1fdm0sIGZ1bmN0aW9uU3lt
Ym9sVGFibGUpOworICAgICAgICBtX2dlbmVyYXRvckZyYW1lU3ltYm9sVGFibGVJbmRleCA9IHN5
bWJvbFRhYmxlQ29uc3RhbnRJbmRleDsKKyAgICAgICAgZW1pdE1vdmUoZ2VuZXJhdG9yRnJhbWVS
ZWdpc3RlcigpLCBtX2xleGljYWxFbnZpcm9ubWVudFJlZ2lzdGVyKTsKKyAgICAgICAgZW1pdFB1
dEJ5SWQoZ2VuZXJhdG9yUmVnaXN0ZXIoKSwgcHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygp
LmdlbmVyYXRvckZyYW1lUHJpdmF0ZU5hbWUoKSwgZ2VuZXJhdG9yRnJhbWVSZWdpc3RlcigpKTsK
KyAgICB9CisKICAgICBib29sIHNob3VsZEluaXRpYWxpemVCbG9ja1Njb3BlZEZ1bmN0aW9ucyA9
IGZhbHNlOyAvLyBXZSBnZW5lcmF0ZSB0b3AtbGV2ZWwgZnVuY3Rpb24gZGVjbGFyYXRpb25zIGlu
IDo6Z2VuZXJhdGUoKS4KICAgICBwdXNoTGV4aWNhbFNjb3BlKG1fc2NvcGVOb2RlLCBURFpDaGVj
a09wdGltaXphdGlvbjo6T3B0aW1pemUsIE5lc3RlZFNjb3BlVHlwZTo6SXNOb3ROZXN0ZWQsIG51
bGxwdHIsIHNob3VsZEluaXRpYWxpemVCbG9ja1Njb3BlZEZ1bmN0aW9ucyk7CiB9CkBAIC0zNjYy
LDggKzM2ODEsNyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q29tcGxleFBvcFNjb3Bl
cyhSZWdpc3RlcklEKiBzY29wZSwgQ29udHJvbEZsb3dDb250ZQogICAgICAgICAgICAgaWYgKGZs
aXBUcmllcykgewogICAgICAgICAgICAgICAgIHdoaWxlIChtX3RyeUNvbnRleHRTdGFjay5zaXpl
KCkgIT0gZmluYWxseUNvbnRleHQudHJ5Q29udGV4dFN0YWNrU2l6ZSkgewogICAgICAgICAgICAg
ICAgICAgICBBU1NFUlQobV90cnlDb250ZXh0U3RhY2suc2l6ZSgpID4gZmluYWxseUNvbnRleHQu
dHJ5Q29udGV4dFN0YWNrU2l6ZSk7Ci0gICAgICAgICAgICAgICAgICAgIFRyeUNvbnRleHQgY29u
dGV4dCA9IG1fdHJ5Q29udGV4dFN0YWNrLmxhc3QoKTsKLSAgICAgICAgICAgICAgICAgICAgbV90
cnlDb250ZXh0U3RhY2sucmVtb3ZlTGFzdCgpOworICAgICAgICAgICAgICAgICAgICBUcnlDb250
ZXh0IGNvbnRleHQgPSBtX3RyeUNvbnRleHRTdGFjay50YWtlTGFzdCgpOwogICAgICAgICAgICAg
ICAgICAgICBUcnlSYW5nZSByYW5nZTsKICAgICAgICAgICAgICAgICAgICAgcmFuZ2Uuc3RhcnQg
PSBjb250ZXh0LnN0YXJ0OwogICAgICAgICAgICAgICAgICAgICByYW5nZS5lbmQgPSBiZWZvcmVG
aW5hbGx5OwpAQCAtMzk0Nyw3ICszOTY1LDcgQEAgc3RhdGljIHZvaWQgcHJlcGFyZUp1bXBUYWJs
ZUZvclN0cmluZ1N3aXRjaChVbmxpbmtlZFN0cmluZ0p1bXBUYWJsZSYganVtcFRhYmxlLAogICAg
ICAgICAKICAgICAgICAgQVNTRVJUKG5vZGVzW2ldLT5pc1N0cmluZygpKTsKICAgICAgICAgU3Ry
aW5nSW1wbCogY2xhdXNlID0gc3RhdGljX2Nhc3Q8U3RyaW5nTm9kZSo+KG5vZGVzW2ldKS0+dmFs
dWUoKS5pbXBsKCk7Ci0gICAgICAgIGp1bXBUYWJsZS5vZmZzZXRUYWJsZS5hZGQoY2xhdXNlLCBs
YWJlbHNbaV0tPmJpbmQoc3dpdGNoQWRkcmVzcywgc3dpdGNoQWRkcmVzcyArIDMpKTsKKyAgICAg
ICAganVtcFRhYmxlLm9mZnNldFRhYmxlLmFkZChjbGF1c2UsIFVubGlua2VkU3RyaW5nSnVtcFRh
YmxlOjpPZmZzZXRMb2NhdGlvbiB7IGxhYmVsc1tpXS0+YmluZChzd2l0Y2hBZGRyZXNzLCBzd2l0
Y2hBZGRyZXNzICsgMykgfSk7CiAgICAgfQogfQogCkBAIC00NDU1LDE2ICs0NDczLDM2IEBAIHZv
aWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRZaWVsZFBvaW50KFJlZ2lzdGVySUQqIGFyZ3VtZW50
KQogICAgIGVtaXRHZW5lcmF0b3JTdGF0ZUNoYW5nZSh5aWVsZFBvaW50SW5kZXgpOwogICAgIC8v
IEZpcnN0IHlpZWxkIHBvaW50IGlzIHVzZWQgZm9yIGluaXRpYWwgc2VxdWVuY2UuCiAgICAgdW5z
aWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0geWllbGRQb2ludEluZGV4IC0gMTsKKworICAg
IC8vIFNwbGl0IHRoZSB0cnkgcmFuZ2UgaGVyZS4KKyAgICBSZWZQdHI8TGFiZWw+IHNhdmVQb2lu
dCA9IGVtaXRMYWJlbChuZXdMYWJlbCgpLmdldCgpKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSBt
X3RyeUNvbnRleHRTdGFjay5zaXplKCk7IGktLTspIHsKKyAgICAgICAgVHJ5Q29udGV4dCYgY29u
dGV4dCA9IG1fdHJ5Q29udGV4dFN0YWNrW2ldOworICAgICAgICBUcnlSYW5nZSByYW5nZTsKKyAg
ICAgICAgcmFuZ2Uuc3RhcnQgPSBjb250ZXh0LnN0YXJ0OworICAgICAgICByYW5nZS5lbmQgPSBz
YXZlUG9pbnQ7CisgICAgICAgIHJhbmdlLnRyeURhdGEgPSBjb250ZXh0LnRyeURhdGE7CisgICAg
ICAgIG1fdHJ5UmFuZ2VzLmFwcGVuZChyYW5nZSk7CisKKyAgICAgICAgLy8gVHJ5IHJhbmdlIHdp
bGwgYmUgcmVzdGFyZWQgYXQgdGhlIG1lcmdlIHBvaW50LgorICAgICAgICBjb250ZXh0LnN0YXJ0
ID0gbWVyZ2VQb2ludDsKKyAgICB9CisgICAgVmVjdG9yPFRyeUNvbnRleHQ+IHNhdmVkVHJ5Q29u
dGV4dFN0YWNrOworICAgIG1fdHJ5Q29udGV4dFN0YWNrLnN3YXAoc2F2ZWRUcnlDb250ZXh0U3Rh
Y2spOworCiAgICAgZW1pdFNhdmUobWVyZ2VQb2ludC5nZXQoKSwgbGl2ZUNhbGxlZUxvY2Fsc0lu
ZGV4KTsKICAgICBlbWl0UmV0dXJuKGFyZ3VtZW50KTsKICAgICBlbWl0UmVzdW1lKG1lcmdlUG9p
bnQuZ2V0KCksIGxpdmVDYWxsZWVMb2NhbHNJbmRleCk7CisKKyAgICAvLyBSZXN0b3JlIHRoZSB0
cnkgY29udGV4dHMsIHdoaWNoIHN0YXJ0IG9mZnNldCBpcyB1cGRhdGVkIHRvIHRoZSBtZXJnZSBw
b2ludC4KKyAgICBtX3RyeUNvbnRleHRTdGFjay5zd2FwKHNhdmVkVHJ5Q29udGV4dFN0YWNrKTsK
IH0KIAogdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFNhdmUoTGFiZWwqIG1lcmdlUG9pbnQs
IHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCkKIHsKICAgICBzaXplX3QgYmVnaW4gPSBp
bnN0cnVjdGlvbnMoKS5zaXplKCk7CiAgICAgZW1pdE9wY29kZShvcF9zYXZlKTsKLSAgICBpbnN0
cnVjdGlvbnMoKS5hcHBlbmQobV9nZW5lcmF0b3JSZWdpc3Rlci0+aW5kZXgoKSk7CisgICAgaW5z
dHJ1Y3Rpb25zKCkuYXBwZW5kKGdlbmVyYXRvckZyYW1lUmVnaXN0ZXIoKS0+aW5kZXgoKSk7CiAg
ICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGxpdmVDYWxsZWVMb2NhbHNJbmRleCk7CiAgICAgaW5z
dHJ1Y3Rpb25zKCkuYXBwZW5kKG1lcmdlUG9pbnQtPmJpbmQoYmVnaW4sIGluc3RydWN0aW9ucygp
LnNpemUoKSkpOwogfQpAQCAtNDQ3Myw3ICs0NTExLDcgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRv
cjo6ZW1pdFJlc3VtZShMYWJlbCogbWVyZ2VQb2ludCwgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fs
c0kKIHsKICAgICBlbWl0R2VuZXJhdG9yU3RhdGVMYWJlbCgpOwogICAgIGVtaXRPcGNvZGUob3Bf
cmVzdW1lKTsKLSAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobV9nZW5lcmF0b3JSZWdpc3Rlci0+
aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGdlbmVyYXRvckZyYW1lUmVnaXN0
ZXIoKS0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGxpdmVDYWxsZWVMb2Nh
bHNJbmRleCk7CiAgICAgZW1pdExhYmVsKG1lcmdlUG9pbnQpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmluZGV4
IDVmYWYwNGYyZjNkYmExOGFkYjA3ODllMzIzZTlkYWFlNjFhYjExNmIuLmVjMmEwZTZiMDY2Y2Fh
ZGFjZjJiN2IwN2ZhYWY2NTViZmM0NTFiMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTcwNSw2ICs3MDUs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9yU3RhdGVS
ZWdpc3RlcigpIHsgcmV0dXJuICZtX3BhcmFtZXRlcnNbMl07IH0KICAgICAgICAgUmVnaXN0ZXJJ
RCogZ2VuZXJhdG9yVmFsdWVSZWdpc3RlcigpIHsgcmV0dXJuICZtX3BhcmFtZXRlcnNbM107IH0K
ICAgICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKCkgeyByZXR1
cm4gJm1fcGFyYW1ldGVyc1s0XTsgfQorICAgICAgICBSZWdpc3RlcklEKiBnZW5lcmF0b3JGcmFt
ZVJlZ2lzdGVyKCkgeyByZXR1cm4gJm1fcGFyYW1ldGVyc1s1XTsgfQogCiAgICAgICAgIENvZGVU
eXBlIGNvZGVUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlVHlwZTsgfQogCkBAIC05MzIsNiAr
OTMzLDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBWZWN0b3I8UmVmUHRyPEZvckluQ29u
dGV4dD4+IG1fZm9ySW5Db250ZXh0U3RhY2s7CiAgICAgICAgIFZlY3RvcjxUcnlDb250ZXh0PiBt
X3RyeUNvbnRleHRTdGFjazsKICAgICAgICAgVmVjdG9yPFJlZlB0cjxMYWJlbD4+IG1fZ2VuZXJh
dG9yUmVzdW1lTGFiZWxzOworCisgICAgICAgIFN0cm9uZzxTeW1ib2xUYWJsZT4gbV9nZW5lcmF0
b3JGcmFtZVN5bWJvbFRhYmxlOworICAgICAgICBpbnQgbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRh
YmxlSW5kZXggeyAwIH07CisKICAgICAgICAgZW51bSBGdW5jdGlvblZhcmlhYmxlVHlwZSA6IHVp
bnQ4X3QgeyBOb3JtYWxGdW5jdGlvblZhcmlhYmxlLCBHbG9iYWxGdW5jdGlvblZhcmlhYmxlIH07
CiAgICAgICAgIFZlY3RvcjxzdGQ6OnBhaXI8RnVuY3Rpb25NZXRhZGF0YU5vZGUqLCBGdW5jdGlv
blZhcmlhYmxlVHlwZT4+IG1fZnVuY3Rpb25zVG9Jbml0aWFsaXplOwogICAgICAgICBib29sIG1f
bmVlZFRvSW5pdGlhbGl6ZUFyZ3VtZW50cyB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAppbmRleCA2OWExNmViNWRhNDM1NWJjNzkyNWM1ZGZk
Y2IwNjIwMjNlOTk2NTAyLi5jNDU3MjNiMTkwMTMyMDI1ZGZjZTMyNmY2MDE1ZWNhNmNlNThkNzFh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKQEAgLTQy
LDggKzQyLDggQEAKICNpbmNsdWRlICJEaXJlY3RBcmd1bWVudHMuaCIKICNpbmNsdWRlICJGVExG
b3JPU1JFbnRyeUpJVENvZGUuaCIKICNpbmNsdWRlICJGVExPU1JFbnRyeS5oIgotI2luY2x1ZGUg
Ikhvc3RDYWxsUmV0dXJuVmFsdWUuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKKyNpbmNs
dWRlICJIb3N0Q2FsbFJldHVyblZhbHVlLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNp
bmNsdWRlICJKSVQuaCIKICNpbmNsdWRlICJKSVRFeGNlcHRpb25zLmgiCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdGUtYnl0ZWNvZGUtZmlsZXMgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZ2VuZXJhdGUtYnl0ZWNvZGUtZmlsZXMKaW5kZXggNTY2NmEzZjkyNGMxMTli
MjE2ZDNmZjBmZmU5YzY3MmI3YzcxYmI3OS4uOGY3OTBlZDlmYTgzMTZkMzlkYTE1ZDNiNzU4OTQ2
YmY0OWYzYmQzZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRlLWJ5
dGVjb2RlLWZpbGVzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0ZS1ieXRlY29k
ZS1maWxlcwpAQCAtOTQsMTMgKzk0LDE0IEBAIGRlZiBvcGVuT3JFeGl0KHBhdGgsIG1vZGUpOgog
ICAgICAgICBwcmludCAiSS9PIGVycm9yIG9wZW5pbmcgezB9LCAoezF9KTogezJ9Ii5mb3JtYXQo
cGF0aCwgZS5lcnJubywgZS5zdHJlcnJvcikKICAgICAgICAgZXhpdCgxKQogCi1kZWYgaGFzaEZp
bGUoZmlsZSk6CitkZWYgaGFzaEZpbGUoZmlsZXMpOgogICAgIHNoYTEgPSBoYXNobGliLnNoYTEo
KQotICAgIGZpbGUuc2VlaygwKQotICAgIGZvciBsaW5lIGluIGZpbGU6Ci0gICAgICAgIHNoYTEu
dXBkYXRlKGxpbmUpCisgICAgZm9yIGZpbGUgaW4gZmlsZXM6CisgICAgICAgIGZpbGUuc2Vlaygw
KQorICAgICAgICBmb3IgbGluZSBpbiBmaWxlOgorICAgICAgICAgICAgc2hhMS51cGRhdGUobGlu
ZSkKIAotICAgIGZpbGUuc2VlaygwKQorICAgICAgICBmaWxlLnNlZWsoMCkKIAogICAgIHJldHVy
biBzaGExLmhleGRpZ2VzdCgpCiAKQEAgLTExNSw3ICsxMTYsOCBAQCBpZiBfX25hbWVfXyA9PSAi
X19tYWluX18iOgogCiAgICAgYnl0ZWNvZGVKU09ORmlsZSA9IGFyZ3NbMF0KICAgICBieXRlY29k
ZUZpbGUgPSBvcGVuT3JFeGl0KGJ5dGVjb2RlSlNPTkZpbGUsICJyYiIpCi0gICAgc2hhMUhhc2gg
PSBoYXNoRmlsZShieXRlY29kZUZpbGUpCisgICAgZ2VuZXJhdG9yRmlsZSA9IG9wZW5PckV4aXQo
X19maWxlX18sICJyYiIpCisgICAgc2hhMUhhc2ggPSBoYXNoRmlsZShbYnl0ZWNvZGVGaWxlLCBn
ZW5lcmF0b3JGaWxlXSkKIAogICAgIGhGaWxlSGFzaFN0cmluZyA9ICIvLyBTSEExSGFzaDogezB9
XG4iLmZvcm1hdChzaGExSGFzaCkKICAgICBhc21GaWxlSGFzaFN0cmluZyA9ICIjIFNIQTFIYXNo
OiB7MH1cbiIuZm9ybWF0KHNoYTFIYXNoKQpAQCAtMTg3LDYgKzE4OSw3IEBAIGlmIF9fbmFtZV9f
ID09ICJfX21haW5fXyI6CiAgICAgICAgICAgICAgICAgZGVmYXVsdExlbmd0aCA9IHNlY3Rpb25b
ImRlZmF1bHRMZW5ndGgiXQogCiAgICAgICAgICAgICBieXRlY29kZU51bSA9IDAKKyAgICAgICAg
ICAgIG1heExlbmd0aCA9IDAKICAgICAgICAgICAgIGZvciBieXRlY29kZSBpbiBzZWN0aW9uWyJi
eXRlY29kZXMiXToKICAgICAgICAgICAgICAgICBpZiBub3QgZmlyc3RNYWNybzoKICAgICAgICAg
ICAgICAgICAgICAgYnl0ZWNvZGVIRmlsZS53cml0ZSgiIFxcXG4iKQpAQCAtMTk0LDYgKzE5Nyw3
IEBAIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgICAgICAgICAgICAgbGVuZ3RoID0g
ZGVmYXVsdExlbmd0aAogICAgICAgICAgICAgICAgIGlmICJsZW5ndGgiIGluIGJ5dGVjb2RlOgog
ICAgICAgICAgICAgICAgICAgICBsZW5ndGggPSBieXRlY29kZVsibGVuZ3RoIl0KKyAgICAgICAg
ICAgICAgICAgICAgbWF4TGVuZ3RoID0gbWF4KFtsZW5ndGgsIG1heExlbmd0aF0pCiAKICAgICAg
ICAgICAgICAgICBieXRlY29kZUhGaWxlLndyaXRlKCIgICAgbWFjcm8oezB9LCB7MX0pIi5mb3Jt
YXQoYnl0ZWNvZGVbIm5hbWUiXSwgbGVuZ3RoKSkKICAgICAgICAgICAgICAgICBmaXJzdE1hY3Jv
ID0gRmFsc2UKQEAgLTIwMSw2ICsyMDUsNyBAQCBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgog
CiAgICAgICAgICAgICBieXRlY29kZUhGaWxlLndyaXRlKCJcblxuIikKICAgICAgICAgICAgIGJ5
dGVjb2RlSEZpbGUud3JpdGUoIiNkZWZpbmUgTlVNQkVSX09GX3swfV9JRFMgezF9XG5cbiIuZm9y
bWF0KHNlY3Rpb25bIm1hY3JvTmFtZUNvbXBvbmVudCJdLCBieXRlY29kZU51bSkpCisgICAgICAg
ICAgICBieXRlY29kZUhGaWxlLndyaXRlKCIjZGVmaW5lIE1BWF9PUENPREVfTEVOR1RIX09GX3sw
fSB7MX1cblxuIi5mb3JtYXQoc2VjdGlvblsibWFjcm9OYW1lQ29tcG9uZW50Il0sIG1heExlbmd0
aCkpCiAKICAgICAgICAgaWYgaW5pdEFTTUZpbGVOYW1lIGFuZCBzZWN0aW9uWydlbWl0SW5BU01G
aWxlJ106CiAgICAgICAgICAgICBwcmVmaXggPSAiIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKaW5kZXggMmI0YzdjOWIzZWIzNmQ2MzA2
ZWE4NDRlODUzNzZmZmE3ZmQwZjFmNy4uZmUzNjhmMzkxY2MyN2MxYTA1YjhiZDkwZmY5MWFjMTYy
MWI2MjQ3MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0lu
dGVycHJldGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50
ZXJwcmV0ZXIuY3BwCkBAIC02MDgsNyArNjA4LDcgQEAgSlNTdHJpbmcqIEludGVycHJldGVyOjpz
dGFja1RyYWNlQXNTdHJpbmcoVk0mIHZtLCBjb25zdCBWZWN0b3I8U3RhY2tGcmFtZT4mIHN0YWMK
ICAgICByZXR1cm4ganNTdHJpbmcoJnZtLCBidWlsZGVyLnRvU3RyaW5nKCkpOwogfQogCi1BTFdB
WVNfSU5MSU5FIHN0YXRpYyBIYW5kbGVySW5mbyogZmluZEV4Y2VwdGlvbkhhbmRsZXIoU3RhY2tW
aXNpdG9yJiB2aXNpdG9yLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZUJsb2NrOjpSZXF1aXJl
ZEhhbmRsZXIgcmVxdWlyZWRIYW5kbGVyKQorQUxXQVlTX0lOTElORSBzdGF0aWMgSGFuZGxlcklu
Zm8qIGZpbmRFeGNlcHRpb25IYW5kbGVyKFN0YWNrVmlzaXRvciYgdmlzaXRvciwgQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIFJlcXVpcmVkSGFuZGxlciByZXF1aXJlZEhhbmRsZXIpCiB7CiAgICAgQVNT
RVJUKGNvZGVCbG9jayk7CiAjaWYgRU5BQkxFKERGR19KSVQpCkBAIC02NDIsNyArNjQyLDcgQEAg
Y2xhc3MgR2V0Q2F0Y2hIYW5kbGVyRnVuY3RvciB7CiAgICAgICAgIGlmICghY29kZUJsb2NrKQog
ICAgICAgICAgICAgcmV0dXJuIFN0YWNrVmlzaXRvcjo6Q29udGludWU7CiAKLSAgICAgICAgbV9o
YW5kbGVyID0gZmluZEV4Y2VwdGlvbkhhbmRsZXIodmlzaXRvciwgY29kZUJsb2NrLCBDb2RlQmxv
Y2s6OlJlcXVpcmVkSGFuZGxlcjo6Q2F0Y2hIYW5kbGVyKTsKKyAgICAgICAgbV9oYW5kbGVyID0g
ZmluZEV4Y2VwdGlvbkhhbmRsZXIodmlzaXRvciwgY29kZUJsb2NrLCBSZXF1aXJlZEhhbmRsZXI6
OkNhdGNoSGFuZGxlcik7CiAgICAgICAgIGlmIChtX2hhbmRsZXIpCiAgICAgICAgICAgICByZXR1
cm4gU3RhY2tWaXNpdG9yOjpEb25lOwogCkBAIC02ODQsNyArNjg0LDcgQEAgY2xhc3MgVW53aW5k
RnVuY3RvciB7CiAgICAgICAgIG1faGFuZGxlciA9IG51bGxwdHI7CiAgICAgICAgIGlmICghbV9p
c1Rlcm1pbmF0aW9uKSB7CiAgICAgICAgICAgICBpZiAobV9jb2RlQmxvY2sgJiYgIWlzV2ViQXNz
ZW1ibHlFeGVjdXRhYmxlKG1fY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSkpCi0gICAgICAg
ICAgICAgICAgbV9oYW5kbGVyID0gZmluZEV4Y2VwdGlvbkhhbmRsZXIodmlzaXRvciwgbV9jb2Rl
QmxvY2ssIENvZGVCbG9jazo6UmVxdWlyZWRIYW5kbGVyOjpBbnlIYW5kbGVyKTsKKyAgICAgICAg
ICAgICAgICBtX2hhbmRsZXIgPSBmaW5kRXhjZXB0aW9uSGFuZGxlcih2aXNpdG9yLCBtX2NvZGVC
bG9jaywgUmVxdWlyZWRIYW5kbGVyOjpBbnlIYW5kbGVyKTsKICAgICAgICAgfQogCiAgICAgICAg
IGlmIChtX2hhbmRsZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJw
cmV0ZXIvSW50ZXJwcmV0ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9J
bnRlcnByZXRlci5oCmluZGV4IGQyMDk0ZGVlN2QyODVhYzQ5NWIxNTQxNzJhMjNiOTRmZmU4NTdm
MWUuLjA3MzJiM2ViYmQ5YWRmZDIyMzM2MmVjOWE2YmFhYWZkODYxZjUyNjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCkBAIC02Niw2ICs2
Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHN0cnVjdCBIYW5kbGVySW5mbzsKICAgICBzdHJ1
Y3QgSW5zdHJ1Y3Rpb247CiAgICAgc3RydWN0IFByb3RvQ2FsbEZyYW1lOworICAgIHN0cnVjdCBV
bmxpbmtlZEluc3RydWN0aW9uOwogCiAgICAgZW51bSBVbndpbmRTdGFydCB7IFVud2luZEZyb21D
dXJyZW50RnJhbWUsIFVud2luZEZyb21DYWxsZXJGcmFtZSB9OwogCkBAIC0yMDgsNyArMjA5LDEw
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIG9wY29kZTsKICNlbmRpZgog
ICAgICAgICB9Ci0gICAgICAgIAorCisgICAgICAgIE9wY29kZUlEIGdldE9wY29kZUlEKGNvbnN0
IEluc3RydWN0aW9uJik7CisgICAgICAgIE9wY29kZUlEIGdldE9wY29kZUlEKGNvbnN0IFVubGlu
a2VkSW5zdHJ1Y3Rpb24mKTsKKwogICAgICAgICBib29sIGlzT3Bjb2RlKE9wY29kZSk7CiAKICAg
ICAgICAgSlNWYWx1ZSBleGVjdXRlKFByb2dyYW1FeGVjdXRhYmxlKiwgQ2FsbEZyYW1lKiwgSlNP
YmplY3QqIHRoaXNPYmopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL0ludGVycHJldGVySW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL0ludGVycHJldGVySW5saW5lcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg2ZDA3MTQ4YTUyZTY1ZTM3
NWY5N2U2ZWJiOTFhZGJlMWRkNDU2MGQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXJJbmxpbmVzLmgKQEAgLTAsMCArMSw0NCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBn
bWFpbC5jb20+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaW5jbHVkZSAiSW5zdHJ1Y3Rpb24uaCIKKyNpbmNsdWRlICJJbnRlcnBy
ZXRlci5oIgorI2luY2x1ZGUgIlVubGlua2VkQ29kZUJsb2NrLmgiCisKK25hbWVzcGFjZSBKU0Mg
eworCitpbmxpbmUgT3Bjb2RlSUQgSW50ZXJwcmV0ZXI6OmdldE9wY29kZUlEKGNvbnN0IEluc3Ry
dWN0aW9uJiBpbnN0cnVjdGlvbikKK3sKKyAgICByZXR1cm4gZ2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rp
b24udS5vcGNvZGUpOworfQorCitpbmxpbmUgT3Bjb2RlSUQgSW50ZXJwcmV0ZXI6OmdldE9wY29k
ZUlEKGNvbnN0IFVubGlua2VkSW5zdHJ1Y3Rpb24mIGluc3RydWN0aW9uKQoreworICAgIHJldHVy
biBpbnN0cnVjdGlvbi51Lm9wY29kZTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVC5jcHAKaW5kZXggOGZkM2Y1OGVkNDE2YTc3NGJiMjc2NWU0ZDRkNTNkNjhi
ZTkxODJlNS4uNjMxOGM2MWQzN2E4ZGExMjNlYzZmMzhhMjhlMTk1NWM4NTgzMTAzMyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklULmNwcApAQCAtMjM1LDggKzIzNSw2IEBAIHZvaWQgSklUOjpwcml2
YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgREVGSU5FX09QKG9wX2dldF9yZXN0X2xlbmd0
aCkKICAgICAgICAgREVGSU5FX09QKG9wX2NoZWNrX3RkeikKICAgICAgICAgREVGSU5FX09QKG9w
X2Fzc2VydCkKLSAgICAgICAgREVGSU5FX09QKG9wX3NhdmUpCi0gICAgICAgIERFRklORV9PUChv
cF9yZXN1bWUpCiAgICAgICAgIERFRklORV9PUChvcF9kZWJ1ZykKICAgICAgICAgREVGSU5FX09Q
KG9wX2RlbF9ieV9pZCkKICAgICAgICAgREVGSU5FX09QKG9wX2RlbF9ieV92YWwpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVQuaAppbmRleCAwOTNkN2RhYmQzMDNmNTdjNGFkYmJlNTBhZDliMmU0MGY2ZmFk
NjA4Li5iM2JkYTRhYTU3MDEwMzY4MTJjYzY5NmNiYjE1NWRjNGEzYzQ5MmI5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklULmgKQEAgLTUwMSw4ICs1MDEsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgdm9pZCBlbWl0X29wX2dldF9yZXN0X2xlbmd0aChJbnN0cnVjdGlvbiopOwogICAgICAgICB2
b2lkIGVtaXRfb3BfY2hlY2tfdGR6KEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9v
cF9hc3NlcnQoSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX3NhdmUoSW5zdHJ1
Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0X29wX3Jlc3VtZShJbnN0cnVjdGlvbiopOwogICAg
ICAgICB2b2lkIGVtaXRfb3BfZGVidWcoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0
X29wX2RlbF9ieV9pZChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZGVsX2J5
X3ZhbChJbnN0cnVjdGlvbiopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGNvZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5j
cHAKaW5kZXggZDk5ZDQxNWEzM2I3NTJkY2MzZmFiMTViOTRiOTY0YTExMTFjZTgzMS4uMDEyMzIw
YTBhNmYwMzA3MzczNTMwMzE1YjRiMTg5ZWE2YWFmM2ZkNyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wY29kZXMuY3BwCkBAIC0xNDg5LDE4ICsxNDg5LDYgQEAgdm9pZCBKSVQ6OmVt
aXRfb3BfZ2V0X3Jlc3RfbGVuZ3RoKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAj
ZW5kaWYKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3Bfc2F2ZShJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQotewotICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3Vy
cmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfc2F2ZSk7Ci0gICAgc2xvd1BhdGhDYWxsLmNhbGwo
KTsKLX0KLQotdm9pZCBKSVQ6OmVtaXRfb3BfcmVzdW1lKEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCi17Ci0gICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJy
ZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9yZXN1bWUpOwotICAgIHNsb3dQYXRoQ2FsbC5jYWxs
KCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVy
LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFz
bQppbmRleCAzZTBkYmQ4OTg2YjlkYjFhYjBhMjM1YTM5MDg0YzEwYWVmNDU2NTE2Li4wNGJjYjdj
MDBlNDhjMGQyMzkzN2RkMzE0MDkzYTEyNzk3ZTQ4NjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCkBAIC0xNjU3LDE1ICsx
NjU3LDExIEBAIF9sbGludF9vcF9hc3NlcnQ6CiAKIAogX2xsaW50X29wX3NhdmU6Ci0gICAgdHJh
Y2VFeGVjdXRpb24oKQotICAgIGNhbGxPcGNvZGVTbG93UGF0aChfc2xvd19wYXRoX3NhdmUpCi0g
ICAgZGlzcGF0Y2goNCkKKyAgICBub3RTdXBwb3J0ZWQoKQogCiAKIF9sbGludF9vcF9yZXN1bWU6
Ci0gICAgdHJhY2VFeGVjdXRpb24oKQotICAgIGNhbGxPcGNvZGVTbG93UGF0aChfc2xvd19wYXRo
X3Jlc3VtZSkKLSAgICBkaXNwYXRjaCgzKQorICAgIG5vdFN1cHBvcnRlZCgpCiAKIAogX2xsaW50
X29wX2NyZWF0ZV9sZXhpY2FsX2Vudmlyb25tZW50OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9QYXJzZXIuY3BwCmluZGV4IGZlNTQ5NTJiMzg1NjMyYTEzMDBkYmE0YWRmZmEwMGFhNWEzN2Qy
MDEuLmZlOTYxNmIwMzY1YzMzYTg4NWU1MDhlODRkYmQwY2ExMGI4YjBmNTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKQEAgLTI1Niw3ICsyNTYsNyBAQCBTdHJpbmcg
UGFyc2VyPExleGVyVHlwZT46OnBhcnNlSW5uZXIoY29uc3QgSWRlbnRpZmllciYgY2FsbGVlTmFt
ZSwgU291cmNlUGFyc2VNbwogICAgIGlmIChtX2xleGVyLT5pc1JlcGFyc2luZ0Z1bmN0aW9uKCkp
IHsKICAgICAgICAgUGFyc2VyRnVuY3Rpb25JbmZvPEFTVEJ1aWxkZXI+IGZ1bmN0aW9uSW5mbzsK
ICAgICAgICAgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckJvZHlN
b2RlKQotICAgICAgICAgICAgbV9wYXJhbWV0ZXJzID0gY3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVy
cyhjb250ZXh0KTsKKyAgICAgICAgICAgIG1fcGFyYW1ldGVycyA9IGNyZWF0ZUdlbmVyYXRvclBh
cmFtZXRlcnMoY29udGV4dCwgZnVuY3Rpb25JbmZvLnBhcmFtZXRlckNvdW50KTsKICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgbV9wYXJhbWV0ZXJzID0gcGFyc2VGdW5jdGlvblBhcmFtZXRlcnMo
Y29udGV4dCwgcGFyc2VNb2RlLCBmdW5jdGlvbkluZm8pOwogCkBAIC01MDcsMTAgKzUwNyw5IEBA
IHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVNvdXJjZUVsZW1lbnRzIFBhcnNlcjxM
ZXhlclR5cGU+OjpwYXJzZUdlbmVyYXRvCiAKICAgICBQYXJzZXJGdW5jdGlvbkluZm88VHJlZUJ1
aWxkZXI+IGluZm87CiAgICAgaW5mby5uYW1lID0gJm1fdm0tPnByb3BlcnR5TmFtZXMtPm51bGxJ
ZGVudGlmaWVyOwotICAgIGNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMoY29udGV4dCk7CisgICAg
Y3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhjb250ZXh0LCBpbmZvLnBhcmFtZXRlckNvdW50KTsK
ICAgICBpbmZvLnN0YXJ0T2Zmc2V0ID0gcGFyYW1ldGVyc1N0YXJ0OwogICAgIGluZm8uc3RhcnRM
aW5lID0gdG9rZW5MaW5lKCk7Ci0gICAgaW5mby5wYXJhbWV0ZXJDb3VudCA9IDQ7IC8vIGdlbmVy
YXRvciwgc3RhdGUsIHZhbHVlLCByZXN1bWUgbW9kZQogCiAgICAgewogICAgICAgICBBdXRvUG9w
U2NvcGVSZWYgZ2VuZXJhdG9yQm9keVNjb3BlKHRoaXMsIHB1c2hTY29wZSgpKTsKQEAgLTE5MDEs
MzIgKzE5MDAsMzAgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4gdGVtcGxhdGUgPGNs
YXNzIFRyZWVCdWlsZGVyLCBjbGFzcyBGdW5jdGlvbkluZm9UeXAKIH0KIAogdGVtcGxhdGUgPHR5
cGVuYW1lIExleGVyVHlwZT4KLXRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gdHlwZW5hbWUg
VHJlZUJ1aWxkZXI6OkZvcm1hbFBhcmFtZXRlckxpc3QgUGFyc2VyPExleGVyVHlwZT46OmNyZWF0
ZUdlbmVyYXRvclBhcmFtZXRlcnMoVHJlZUJ1aWxkZXImIGNvbnRleHQpCit0ZW1wbGF0ZSA8Y2xh
c3MgVHJlZUJ1aWxkZXI+IHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpGb3JtYWxQYXJhbWV0ZXJMaXN0
IFBhcnNlcjxMZXhlclR5cGU+OjpjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKFRyZWVCdWlsZGVy
JiBjb250ZXh0LCB1bnNpZ25lZCYgcGFyYW1ldGVyQ291bnQpCiB7CiAgICAgYXV0byBwYXJhbWV0
ZXJzID0gY29udGV4dC5jcmVhdGVGb3JtYWxQYXJhbWV0ZXJMaXN0KCk7CiAKICAgICBKU1Rva2Vu
TG9jYXRpb24gbG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKICAgICBKU1RleHRQb3NpdGlvbiBw
b3NpdGlvbiA9IHRva2VuU3RhcnRQb3NpdGlvbigpOwogCi0gICAgLy8gQGdlbmVyYXRvcgotICAg
IGRlY2xhcmVQYXJhbWV0ZXIoJm1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdl
bmVyYXRvclByaXZhdGVOYW1lKCkpOwotICAgIGF1dG8gZ2VuZXJhdG9yID0gY29udGV4dC5jcmVh
dGVCaW5kaW5nTG9jYXRpb24obG9jYXRpb24sIG1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5O
YW1lcygpLmdlbmVyYXRvclByaXZhdGVOYW1lKCksIHBvc2l0aW9uLCBwb3NpdGlvbiwgQXNzaWdu
bWVudENvbnRleHQ6OkRlY2xhcmF0aW9uU3RhdGVtZW50KTsKLSAgICBjb250ZXh0LmFwcGVuZFBh
cmFtZXRlcihwYXJhbWV0ZXJzLCBnZW5lcmF0b3IsIDApOworICAgIGF1dG8gYWRkUGFyYW1ldGVy
ID0gWyZdKGNvbnN0IElkZW50aWZpZXImIG5hbWUpIHsKKyAgICAgICAgZGVjbGFyZVBhcmFtZXRl
cigmbmFtZSk7CisgICAgICAgIGF1dG8gYmluZGluZyA9IGNvbnRleHQuY3JlYXRlQmluZGluZ0xv
Y2F0aW9uKGxvY2F0aW9uLCBuYW1lLCBwb3NpdGlvbiwgcG9zaXRpb24sIEFzc2lnbm1lbnRDb250
ZXh0OjpEZWNsYXJhdGlvblN0YXRlbWVudCk7CisgICAgICAgIGNvbnRleHQuYXBwZW5kUGFyYW1l
dGVyKHBhcmFtZXRlcnMsIGJpbmRpbmcsIDApOworICAgICAgICArK3BhcmFtZXRlckNvdW50Owor
ICAgIH07CiAKKyAgICAvLyBAZ2VuZXJhdG9yCisgICAgYWRkUGFyYW1ldGVyKG1fdm0tPnByb3Bl
cnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclByaXZhdGVOYW1lKCkpOwogICAgIC8v
IEBnZW5lcmF0b3JTdGF0ZQotICAgIGRlY2xhcmVQYXJhbWV0ZXIoJm1fdm0tPnByb3BlcnR5TmFt
ZXMtPmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclN0YXRlUHJpdmF0ZU5hbWUoKSk7Ci0gICAgYXV0
byBnZW5lcmF0b3JTdGF0ZSA9IGNvbnRleHQuY3JlYXRlQmluZGluZ0xvY2F0aW9uKGxvY2F0aW9u
LCBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JTdGF0ZVByaXZh
dGVOYW1lKCksIHBvc2l0aW9uLCBwb3NpdGlvbiwgQXNzaWdubWVudENvbnRleHQ6OkRlY2xhcmF0
aW9uU3RhdGVtZW50KTsKLSAgICBjb250ZXh0LmFwcGVuZFBhcmFtZXRlcihwYXJhbWV0ZXJzLCBn
ZW5lcmF0b3JTdGF0ZSwgMCk7Ci0KKyAgICBhZGRQYXJhbWV0ZXIobV92bS0+cHJvcGVydHlOYW1l
cy0+YnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yU3RhdGVQcml2YXRlTmFtZSgpKTsKICAgICAvLyBA
Z2VuZXJhdG9yVmFsdWUKLSAgICBkZWNsYXJlUGFyYW1ldGVyKCZtX3ZtLT5wcm9wZXJ0eU5hbWVz
LT5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JWYWx1ZVByaXZhdGVOYW1lKCkpOwotICAgIGF1dG8g
Z2VuZXJhdG9yVmFsdWUgPSBjb250ZXh0LmNyZWF0ZUJpbmRpbmdMb2NhdGlvbihsb2NhdGlvbiwg
bV92bS0+cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yVmFsdWVQcml2YXRl
TmFtZSgpLCBwb3NpdGlvbiwgcG9zaXRpb24sIEFzc2lnbm1lbnRDb250ZXh0OjpEZWNsYXJhdGlv
blN0YXRlbWVudCk7Ci0gICAgY29udGV4dC5hcHBlbmRQYXJhbWV0ZXIocGFyYW1ldGVycywgZ2Vu
ZXJhdG9yVmFsdWUsIDApOwotCisgICAgYWRkUGFyYW1ldGVyKG1fdm0tPnByb3BlcnR5TmFtZXMt
PmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclZhbHVlUHJpdmF0ZU5hbWUoKSk7CiAgICAgLy8gQGdl
bmVyYXRvclJlc3VtZU1vZGUKLSAgICBkZWNsYXJlUGFyYW1ldGVyKCZtX3ZtLT5wcm9wZXJ0eU5h
bWVzLT5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JSZXN1bWVNb2RlUHJpdmF0ZU5hbWUoKSk7Ci0g
ICAgYXV0byBnZW5lcmF0b3JSZXN1bWVNb2RlID0gY29udGV4dC5jcmVhdGVCaW5kaW5nTG9jYXRp
b24obG9jYXRpb24sIG1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRv
clJlc3VtZU1vZGVQcml2YXRlTmFtZSgpLCBwb3NpdGlvbiwgcG9zaXRpb24sIEFzc2lnbm1lbnRD
b250ZXh0OjpEZWNsYXJhdGlvblN0YXRlbWVudCk7Ci0gICAgY29udGV4dC5hcHBlbmRQYXJhbWV0
ZXIocGFyYW1ldGVycywgZ2VuZXJhdG9yUmVzdW1lTW9kZSwgMCk7CisgICAgYWRkUGFyYW1ldGVy
KG1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclJlc3VtZU1vZGVQ
cml2YXRlTmFtZSgpKTsKKyAgICAvLyBAZ2VuZXJhdG9yRnJhbWUKKyAgICBhZGRQYXJhbWV0ZXIo
bV92bS0+cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yRnJhbWVQcml2YXRl
TmFtZSgpKTsKIAogICAgIHJldHVybiBwYXJhbWV0ZXJzOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvUGFyc2VyLmgKaW5kZXggMjVjZWM5NWE3NjFjY2Q4YzI2MzM4MzczMGViMDRlMTU2OTcy
MGJhMi4uZGVkNjI0ZjYxN2ZiNmQyNGQwMGJmMWFjNDZjNDVjMjJkOTliNzIxZiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCkBAIC0xNDUxLDcgKzE0NTEsNyBAQCBjbGFzcyBQ
YXJzZXIgewogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc0Fycm93RnVuY3Rpb25QYXJhbWV0ZXJz
KCk7CiAgICAgCiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyLCBjbGFzcyBGdW5jdGlv
bkluZm9UeXBlPiBORVZFUl9JTkxJTkUgdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkZvcm1hbFBhcmFt
ZXRlckxpc3QgcGFyc2VGdW5jdGlvblBhcmFtZXRlcnMoVHJlZUJ1aWxkZXImLCBTb3VyY2VQYXJz
ZU1vZGUsIEZ1bmN0aW9uSW5mb1R5cGUmKTsKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxk
ZXI+IE5FVkVSX0lOTElORSB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6Rm9ybWFsUGFyYW1ldGVyTGlz
dCBjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKFRyZWVCdWlsZGVyJik7CisgICAgdGVtcGxhdGUg
PGNsYXNzIFRyZWVCdWlsZGVyPiBORVZFUl9JTkxJTkUgdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkZv
cm1hbFBhcmFtZXRlckxpc3QgY3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhUcmVlQnVpbGRlciYs
IHVuc2lnbmVkJiBwYXJhbWV0ZXJDb3VudCk7CiAKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1
aWxkZXI+IE5FVkVSX0lOTElORSBUcmVlQ2xhc3NFeHByZXNzaW9uIHBhcnNlQ2xhc3MoVHJlZUJ1
aWxkZXImLCBGdW5jdGlvblJlcXVpcmVtZW50cywgUGFyc2VyQ2xhc3NJbmZvPFRyZWVCdWlsZGVy
PiYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25T
bG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1Bh
dGhzLmNwcAppbmRleCA2NWZkYTY4NTRjY2NlOGRjOTQxOTMwMDRhOWYwMjk1NDhmOThiYzVmLi4w
NzM1YjA5MjZlYTg5OGU2MjYzMjFmOTI0MzhiZDhiMWUxZmY1NmZmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKQEAgLTM2LDcgKzM2
LDYgQEAKICNpbmNsdWRlICJFcnJvci5oIgogI2luY2x1ZGUgIkVycm9ySGFuZGxpbmdTY29wZS5o
IgogI2luY2x1ZGUgIkV4Y2VwdGlvbkZ1enouaCIKLSNpbmNsdWRlICJHZW5lcmF0b3JGcmFtZS5o
IgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIkhvc3RDYWxsUmV0dXJuVmFs
dWUuaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgpAQCAtNzIyLDM4ICs3MjEsNiBAQCBTTE9X
X1BBVEhfREVDTChzbG93X3BhdGhfYXNzZXJ0KQogICAgIEVORCgpOwogfQogCi1TTE9XX1BBVEhf
REVDTChzbG93X3BhdGhfc2F2ZSkKLXsKLSAgICAvLyBPbmx5IHNhdmUgdmFyaWFibGVzIGFuZCB0
ZW1wb3JhcnkgcmVnaXN0ZXJzLiBUaGUgc2NvcGUgcmVnaXN0ZXJzIGFyZSBpbmNsdWRlZCBpbiB0
aGVtLgotICAgIC8vIEJ1dCBwYXJhbWV0ZXJzIGFyZSBub3QgaW5jbHVkZWQuIEJlY2F1c2UgdGhl
IGdlbmVyYXRvciBpbXBsZW1lbnRhdGlvbiByZXBsYWNlcyB0aGUgdmFsdWVzIG9mIHBhcmFtZXRl
cnMgb24gZWFjaCBnZW5lcmF0b3IubmV4dCgpIGNhbGwuCi0gICAgQkVHSU4oKTsKLSAgICBKU1Zh
bHVlIGdlbmVyYXRvciA9IE9QKDEpLmpzVmFsdWUoKTsKLSAgICBHZW5lcmF0b3JGcmFtZSogZnJh
bWUgPSBudWxscHRyOwotICAgIEpTVmFsdWUgdmFsdWUgPSBnZW5lcmF0b3IuZ2V0KGV4ZWMsIGV4
ZWMtPnByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JGcmFtZVByaXZhdGVO
YW1lKCkpOwotICAgIGlmICghdmFsdWUuaXNOdWxsKCkpCi0gICAgICAgIGZyYW1lID0ganNDYXN0
PEdlbmVyYXRvckZyYW1lKj4odmFsdWUpOwotICAgIGVsc2UgewotICAgICAgICAvLyBGSVhNRTog
T25jZSBKU0dlbmVyYXRvciBzcGVjaWFsaXplZCBvYmplY3QgaXMgaW50cm9kdWNlZCwgdGhpcyBH
ZW5lcmF0b3JGcmFtZSBzaG91bGQgYmUgZW1iZWRlZCBpbnRvIGl0IHRvIGF2b2lkIGFsbG9jYXRp
b25zLgotICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTUxNTQ1Ci0gICAgICAgIGZyYW1lID0gR2VuZXJhdG9yRnJhbWU6OmNyZWF0ZShleGVjLT52bSgp
LCAgZXhlYy0+Y29kZUJsb2NrKCktPm51bUNhbGxlZUxvY2FscygpKTsKLSAgICAgICAgUHV0UHJv
cGVydHlTbG90IHNsb3QoZ2VuZXJhdG9yLCB0cnVlLCBQdXRQcm9wZXJ0eVNsb3Q6OlB1dEJ5SWQp
OwotICAgICAgICBhc09iamVjdChnZW5lcmF0b3IpLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+
cHV0KGFzT2JqZWN0KGdlbmVyYXRvciksIGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5idWls
dGluTmFtZXMoKS5nZW5lcmF0b3JGcmFtZVByaXZhdGVOYW1lKCksIGZyYW1lLCBzbG90KTsKLSAg
ICB9Ci0gICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gcGNbMl0udS51bnNpZ25l
ZFZhbHVlOwotICAgIGZyYW1lLT5zYXZlKGV4ZWMsIGV4ZWMtPmNvZGVCbG9jaygpLT5saXZlQ2Fs
bGVlTG9jYWxzQXRZaWVsZChsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpKTsKLSAgICBFTkQoKTsKLX0K
LQotU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3Jlc3VtZSkKLXsKLSAgICBCRUdJTigpOwotICAg
IEpTVmFsdWUgZ2VuZXJhdG9yID0gT1AoMSkuanNWYWx1ZSgpOwotICAgIEdlbmVyYXRvckZyYW1l
KiBmcmFtZSA9IGpzQ2FzdDxHZW5lcmF0b3JGcmFtZSo+KGdlbmVyYXRvci5nZXQoZXhlYywgZXhl
Yy0+cHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvckZyYW1lUHJpdmF0ZU5h
bWUoKSkpOwotICAgIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9IHBjWzJdLnUudW5z
aWduZWRWYWx1ZTsKLSAgICBmcmFtZS0+cmVzdW1lKGV4ZWMsIGV4ZWMtPmNvZGVCbG9jaygpLT5s
aXZlQ2FsbGVlTG9jYWxzQXRZaWVsZChsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpKTsKLSAgICBFTkQo
KTsKLX0KLQogU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2NyZWF0ZV9sZXhpY2FsX2Vudmlyb25t
ZW50KQogewogICAgIEJFR0lOKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21tb25TbG93UGF0aHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbW1vblNsb3dQYXRocy5oCmluZGV4IDhjNzA3ODQyODAyZDZhMDNkMTI4Y2Q4ZDI5MmFmZjcz
NWNkYTAzMmYuLjZlYjIxYmRmZGUwMzQxMmZlZTYxMDAyZDVlNWFhOGE4MzQ4MDUzYTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCkBAIC0y
NDYsOCArMjQ2LDYgQEAgU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9uZXh0X2dlbmVy
aWNfZW51bWVyYXRvcl9wbmFtZSk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3Rv
X2luZGV4X3N0cmluZyk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3Byb2ZpbGVf
dHlwZV9jbGVhcl9sb2cpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9hc3NlcnQp
OwotU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9zYXZlKTsKLVNMT1dfUEFUSF9ISURE
RU5fREVDTChzbG93X3BhdGhfcmVzdW1lKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3Bh
dGhfY3JlYXRlX2xleGljYWxfZW52aXJvbm1lbnQpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNs
b3dfcGF0aF9wdXNoX3dpdGhfc2NvcGUpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0
aF9yZXNvbHZlX3Njb3BlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0dlbmVyYXRvckZyYW1lLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dl
bmVyYXRvckZyYW1lLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWY2ZWE3YTEw
MDI1OGMzZWNlMDRkYWFiNDNiZGFhODUxZWM4ZjcxNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5l
cmF0b3JGcmFtZS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NyArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJHZW5lcmF0b3JGcmFtZS5o
IgotCi0jaW5jbHVkZSAiQ29kZUJsb2NrLmgiCi0jaW5jbHVkZSAiSGVhcEl0ZXJhdGlvblNjb3Bl
LmgiCi0jaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKLSNpbmNsdWRlICJKU0NlbGxJbmxp
bmVzLmgiCi0jaW5jbHVkZSAiU2xvdFZpc2l0b3JJbmxpbmVzLmgiCi0jaW5jbHVkZSAiU3RydWN0
dXJlSW5saW5lcy5oIgotCi1uYW1lc3BhY2UgSlNDIHsKLQotY29uc3QgQ2xhc3NJbmZvIEdlbmVy
YXRvckZyYW1lOjpzX2luZm8gPSB7ICJHZW5lcmF0b3JGcmFtZSIsIG51bGxwdHIsIG51bGxwdHIs
IENSRUFURV9NRVRIT0RfVEFCTEUoR2VuZXJhdG9yRnJhbWUpIH07Ci0KLUdlbmVyYXRvckZyYW1l
OjpHZW5lcmF0b3JGcmFtZShWTSYgdm0sIHNpemVfdCBudW1iZXJPZkNhbGxlZUxvY2FscykKLSAg
ICA6IEJhc2Uodm0sIHZtLmdlbmVyYXRvckZyYW1lU3RydWN0dXJlLmdldCgpKQotICAgICwgbV9u
dW1iZXJPZkNhbGxlZUxvY2FscyhudW1iZXJPZkNhbGxlZUxvY2FscykKLXsKLX0KLQotdm9pZCBH
ZW5lcmF0b3JGcmFtZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQotewotICAgIEJhc2U6OmZpbmlz
aENyZWF0aW9uKHZtKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fbnVtYmVyT2ZDYWxs
ZWVMb2NhbHM7ICsraSkKLSAgICAgICAgbG9jYWxBdChpKS5jbGVhcigpOwotfQotCi1TdHJ1Y3R1
cmUqIEdlbmVyYXRvckZyYW1lOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKLXsKLSAgICByZXR1cm4gU3RydWN0
dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhDZWxsVHlw
ZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwotfQotCi1HZW5lcmF0b3JGcmFtZSogR2VuZXJh
dG9yRnJhbWU6OmNyZWF0ZShWTSYgdm0sIHNpemVfdCBudW1iZXJPZkxvY2FscykKLXsKLSAgICBH
ZW5lcmF0b3JGcmFtZSogcmVzdWx0ID0KLSAgICAgICAgbmV3ICgKLSAgICAgICAgICAgIE5vdE51
bGwsCi0gICAgICAgICAgICBhbGxvY2F0ZUNlbGw8R2VuZXJhdG9yRnJhbWU+KHZtLmhlYXAsIGFs
bG9jYXRpb25TaXplRm9yTG9jYWxzKG51bWJlck9mTG9jYWxzKSkpCi0gICAgICAgIEdlbmVyYXRv
ckZyYW1lKHZtLCBudW1iZXJPZkxvY2Fscyk7Ci0gICAgcmVzdWx0LT5maW5pc2hDcmVhdGlvbih2
bSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotdm9pZCBHZW5lcmF0b3JGcmFtZTo6c2F2ZShF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEZhc3RCaXRWZWN0b3ImIGxpdmVDYWxsZWVMb2NhbHMpCi17
Ci0gICAgLy8gT25seSBzYXZlIGNhbGxlZSBsb2NhbHMuCi0gICAgLy8gRXZlcnkgdGltZSBhIGdl
bmVyYXRvciBpcyBjYWxsZWQgKG9yIHJlc3VtZWQpLCBwYXJhbWV0ZXJzIHNob3VsZCBiZSByZXBs
YWNlZC4KLSAgICBBU1NFUlQobGl2ZUNhbGxlZUxvY2Fscy5udW1CaXRzKCkgPD0gbV9udW1iZXJP
ZkNhbGxlZUxvY2Fscyk7Ci0gICAgbGl2ZUNhbGxlZUxvY2Fscy5mb3JFYWNoU2V0Qml0KFsmXShz
aXplX3QgaW5kZXgpIHsKLSAgICAgICAgbG9jYWxBdChpbmRleCkuc2V0KGV4ZWMtPnZtKCksIHRo
aXMsIGV4ZWMtPnVuY2hlY2tlZFIodmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaW5kZXgpKS5qc1Zh
bHVlKCkpOwotICAgIH0pOwotfQotCi12b2lkIEdlbmVyYXRvckZyYW1lOjpyZXN1bWUoRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlQ2FsbGVlTG9jYWxzKQotewotICAg
IC8vIE9ubHkgcmVzdW1lIGNhbGxlZSBsb2NhbHMuCi0gICAgLy8gRXZlcnkgdGltZSBhIGdlbmVy
YXRvciBpcyBjYWxsZWQgKG9yIHJlc3VtZWQpLCBwYXJhbWV0ZXJzIHNob3VsZCBiZSByZXBsYWNl
ZC4KLSAgICBsaXZlQ2FsbGVlTG9jYWxzLmZvckVhY2hTZXRCaXQoWyZdKHNpemVfdCBpbmRleCkg
ewotICAgICAgICBleGVjLT51bmNoZWNrZWRSKHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGluZGV4
KSkgPSBsb2NhbEF0KGluZGV4KS5nZXQoKTsKLSAgICAgICAgbG9jYWxBdChpbmRleCkuY2xlYXIo
KTsKLSAgICB9KTsKLX0KLQotdm9pZCBHZW5lcmF0b3JGcmFtZTo6dmlzaXRDaGlsZHJlbihKU0Nl
bGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQotewotICAgIEdlbmVyYXRvckZyYW1lKiB0
aGlzT2JqZWN0ID0ganNDYXN0PEdlbmVyYXRvckZyYW1lKj4oY2VsbCk7Ci0gICAgQmFzZTo6dmlz
aXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKLSAgICAvLyBTaW5jZSBvbmx5IHRydWUg
Y2VsbCBwb2ludGVycyBhcmUgc3RvcmVkIGFzIGEgY2VsbCwgd2UgY2FuIHNhZmVseSBtYXJrIHRo
ZW0uCi0gICAgdmlzaXRvci5hcHBlbmRWYWx1ZXModGhpc09iamVjdC0+bG9jYWxzKCksIHRoaXNP
YmplY3QtPm1fbnVtYmVyT2ZDYWxsZWVMb2NhbHMpOwotfQotCi19IC8vIG5hbWVzcGFjZSBKU0MK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZyYW1l
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGcmFtZS5oCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZDU0NWIxNDdkZDRhYmZiMmJiYjliNWE3MTk0ZThm
NzQ4NDFjNDlhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZyYW1lLmgKKysrIC9kZXYv
bnVsbApAQCAtMSw5MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBT
dXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgot
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgR2VuZXJh
dG9yRnJhbWVfaAotI2RlZmluZSBHZW5lcmF0b3JGcmFtZV9oCi0KLSNpbmNsdWRlICJKU0NlbGwu
aCIKLSNpbmNsdWRlIDx3dGYvRmFzdEJpdFZlY3Rvci5oPgotCi1uYW1lc3BhY2UgSlNDIHsKLQot
Y2xhc3MgR2VuZXJhdG9yRnJhbWUgOiBwdWJsaWMgSlNDZWxsIHsKLSAgICBmcmllbmQgY2xhc3Mg
SklUOwotI2lmIEVOQUJMRShERkdfSklUKQotICAgIGZyaWVuZCBjbGFzcyBERkc6OlNwZWN1bGF0
aXZlSklUOwotICAgIGZyaWVuZCBjbGFzcyBERkc6OkpJVENvbXBpbGVyOwotI2VuZGlmCi0gICAg
ZnJpZW5kIGNsYXNzIFZNOwotcHVibGljOgotICAgIHR5cGVkZWYgSlNDZWxsIEJhc2U7Ci0gICAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gU3RydWN0dXJlSXNJbW1vcnRh
bCB8IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwotCi0gICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKLQot
ICAgIHN0YXRpYyBHZW5lcmF0b3JGcmFtZSogY3JlYXRlKFZNJiwgc2l6ZV90IG51bWJlck9mQ2Fs
bGVlTG9jYWxzKTsKLQotICAgIFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qIGxvY2FscygpCi0g
ICAgewotICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PFdyaXRlQmFycmllckJhc2U8VW5rbm93
bj4qPihiaXR3aXNlX2Nhc3Q8Y2hhcio+KHRoaXMpICsgb2Zmc2V0T2ZMb2NhbHMoKSk7Ci0gICAg
fQotCi0gICAgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiYgbG9jYWxBdChzaXplX3QgaW5kZXgp
Ci0gICAgewotICAgICAgICBBU1NFUlQoaW5kZXggPCBtX251bWJlck9mQ2FsbGVlTG9jYWxzKTsK
LSAgICAgICAgcmV0dXJuIGxvY2FscygpW2luZGV4XTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgc2l6
ZV90IG9mZnNldE9mTG9jYWxzKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBXVEY6OnJvdW5kVXBU
b011bHRpcGxlT2Y8c2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPik+KHNpemVvZihHZW5lcmF0
b3JGcmFtZSkpOwotICAgIH0KLQotICAgIHN0YXRpYyBzaXplX3QgYWxsb2NhdGlvblNpemVGb3JM
b2NhbHModW5zaWduZWQgbnVtYmVyT2ZMb2NhbHMpCi0gICAgewotICAgICAgICByZXR1cm4gb2Zm
c2V0T2ZMb2NhbHMoKSArIG51bWJlck9mTG9jYWxzICogc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtu
b3duPik7Ci0gICAgfQotCi0gICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZN
JiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHByb3RvdHlwZSk7Ci0KLSAgICB2b2lkIHNhdmUo
RXhlY1N0YXRlKiwgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZUNhbGxlZUxvY2Fscyk7Ci0gICAg
dm9pZCByZXN1bWUoRXhlY1N0YXRlKiwgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZUNhbGxlZUxv
Y2Fscyk7Ci0KLXByaXZhdGU6Ci0gICAgR2VuZXJhdG9yRnJhbWUoVk0mLCBzaXplX3QgbnVtYmVy
T2ZDYWxsZWVMb2NhbHMpOwotCi0gICAgc2l6ZV90IG1fbnVtYmVyT2ZDYWxsZWVMb2NhbHM7Ci0K
LSAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwotCi0gICAgdm9pZCBmaW5p
c2hDcmVhdGlvbihWTSYpOwotCi1wcm90ZWN0ZWQ6Ci0gICAgc3RhdGljIHZvaWQgdmlzaXRDaGls
ZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgSlNDCi0K
LSNlbmRpZiAvLyBHZW5lcmF0b3JGcmFtZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9WTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5j
cHAKaW5kZXggYjFmZjQyNDhhMzQ4NGE0Y2JiYzIwNWMzMmQ0ZDA0YzE2MDYwY2FjNi4uODVlNjdm
ZmI1OTY0NGQzYjU0MzMyNTdiN2NiMGVkMWRkMGU2OWNkYyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ZNLmNwcApAQCAtNDYsNyArNDYsNiBAQAogI2luY2x1ZGUgIkZUTFRodW5rcy5oIgog
I2luY2x1ZGUgIkZ1bmN0aW9uQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJHQ0FjdGl2aXR5Q2Fs
bGJhY2suaCIKLSNpbmNsdWRlICJHZW5lcmF0b3JGcmFtZS5oIgogI2luY2x1ZGUgIkdldHRlclNl
dHRlci5oIgogI2luY2x1ZGUgIkhlYXAuaCIKICNpbmNsdWRlICJIZWFwSXRlcmF0aW9uU2NvcGUu
aCIKQEAgLTI0MCw3ICsyMzksNiBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVh
cFR5cGUpCiAgICAgaW5mZXJyZWRUeXBlU3RydWN0dXJlLnNldCgqdGhpcywgSW5mZXJyZWRUeXBl
OjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgaW5mZXJyZWRUeXBl
VGFibGVTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBJbmZlcnJlZFR5cGVUYWJsZTo6Y3JlYXRlU3RydWN0
dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIGZ1bmN0aW9uUmFyZURhdGFTdHJ1Y3R1cmUu
c2V0KCp0aGlzLCBGdW5jdGlvblJhcmVEYXRhOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpz
TnVsbCgpKSk7Ci0gICAgZ2VuZXJhdG9yRnJhbWVTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBHZW5lcmF0
b3JGcmFtZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIGV4Y2Vw
dGlvblN0cnVjdHVyZS5zZXQoKnRoaXMsIEV4Y2VwdGlvbjo6Y3JlYXRlU3RydWN0dXJlKCp0aGlz
LCAwLCBqc051bGwoKSkpOwogICAgIHByb21pc2VEZWZlcnJlZFN0cnVjdHVyZS5zZXQoKnRoaXMs
IEpTUHJvbWlzZURlZmVycmVkOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7
CiAgICAgaW50ZXJuYWxQcm9taXNlRGVmZXJyZWRTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBKU0ludGVy
bmFsUHJvbWlzZURlZmVycmVkOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAppbmRleCBmMGRlMTUxMzVhOTA3ODc4YjQ3YTFk
MzQzNGY2ODI5MWNiNWRjNzNlLi40ZmY5ZWRkMGE3NzQ2YzI5ZTVlNjdjMzgxZmNlM2IyMDc0Nzk5
NTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKQEAgLTMxNiw3ICszMTYsNiBAQCBj
bGFzcyBWTSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxWTT4gewogICAgIFN0cm9uZzxT
dHJ1Y3R1cmU+IGluZmVycmVkVHlwZVN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBp
bmZlcnJlZFR5cGVUYWJsZVN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBmdW5jdGlv
blJhcmVEYXRhU3RydWN0dXJlOwotICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGdlbmVyYXRvckZyYW1l
U3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGV4Y2VwdGlvblN0cnVjdHVyZTsKICAg
ICBTdHJvbmc8U3RydWN0dXJlPiBwcm9taXNlRGVmZXJyZWRTdHJ1Y3R1cmU7CiAgICAgU3Ryb25n
PFN0cnVjdHVyZT4gaW50ZXJuYWxQcm9taXNlRGVmZXJyZWRTdHJ1Y3R1cmU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLWFu
ZC1hcnJheS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9y
LWZpYi1mdGwtYW5kLWFycmF5LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZlOTM5ODEyZmRiYWVjNmI4MzJiZmQw
MGYyMTUzZGVmODRiYjc1OTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLWFuZC1hcnJheS5qcwpAQCAtMCwwICsx
LDIzIEBACisoZnVuY3Rpb24gKCkgeworICAgIGZ1bmN0aW9uICpmaWIoKQorICAgIHsKKyAgICAg
ICAgbGV0IGEgPSAxOworICAgICAgICBsZXQgYiA9IDE7CisgICAgICAgIGxldCBjID0gWyAwIF07
CisgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICBjWzBdID0gYTsKKyAgICAgICAg
ICAgIHlpZWxkIGM7CisgICAgICAgICAgICBbYSwgYl0gPSBbYiwgYSArIGJdOworICAgICAgICB9
CisgICAgfQorCisgICAgbGV0IHZhbHVlID0gMDsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDFl
NDsgKytpKSB7CisgICAgICAgIGxldCBmID0gZmliKCk7CisgICAgICAgIGZvciAobGV0IGkgPSAw
OyBpIDwgMTAwOyArK2kpIHsKKyAgICAgICAgICAgIHZhbHVlID0gZi5uZXh0KCkudmFsdWU7Cisg
ICAgICAgIH0KKyAgICAgICAgaWYgKHZhbHVlWzBdICE9PSAzNTQyMjQ4NDgxNzkyNjIwMDAwMDAp
CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCB2YWx1ZToke3Jlc3VsdH1gKTsKKyAg
ICB9Cit9KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVz
cy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQtb2JqZWN0LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQtb2JqZWN0LmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjY2NzM0MGYyZWE0Yzc0MzhhMmQyMDlhYTQwZDA2NzdlNGFiN2QzZmIKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRs
LWFuZC1vYmplY3QuanMKQEAgLTAsMCArMSwyMyBAQAorKGZ1bmN0aW9uICgpIHsKKyAgICBmdW5j
dGlvbiAqZmliKCkKKyAgICB7CisgICAgICAgIGxldCBhID0gMTsKKyAgICAgICAgbGV0IGIgPSAx
OworICAgICAgICBsZXQgYyA9IHsgZmliOiAwIH07CisgICAgICAgIHdoaWxlICh0cnVlKSB7Cisg
ICAgICAgICAgICBjLmZpYiA9IGE7CisgICAgICAgICAgICB5aWVsZCBjOworICAgICAgICAgICAg
W2EsIGJdID0gW2IsIGEgKyBiXTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGxldCB2YWx1ZSA9
IDA7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxZTQ7ICsraSkgeworICAgICAgICBsZXQgZiA9
IGZpYigpOworICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDsgKytpKSB7CisgICAgICAg
ICAgICB2YWx1ZSA9IGYubmV4dCgpLnZhbHVlOworICAgICAgICB9CisgICAgICAgIGlmICh2YWx1
ZS5maWIgIT09IDM1NDIyNDg0ODE3OTI2MjAwMDAwMCkKKyAgICAgICAgICAgIHRocm93IG5ldyBF
cnJvcihgYmFkIHZhbHVlOiR7cmVzdWx0fWApOworICAgIH0KK30oKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLWFuZC1z
dHJpbmcuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1m
aWItZnRsLWFuZC1zdHJpbmcuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDM4YWU2YWIzMzQ3MDQ2ODIyODQ5ZjQz
MDA0ZWE1YzQwM2VlZGEyOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwtYW5kLXN0cmluZy5qcwpAQCAtMCwwICsx
LDIyIEBACisoZnVuY3Rpb24gKCkgeworICAgIGZ1bmN0aW9uICpmaWIoKQorICAgIHsKKyAgICAg
ICAgbGV0IGEgPSAxOworICAgICAgICBsZXQgYiA9IDE7CisgICAgICAgIGxldCBjID0gIlJlc3Vs
dCEgIjsKKyAgICAgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgICAgIHlpZWxkIGMgKyBhOwor
ICAgICAgICAgICAgW2EsIGJdID0gW2IsIGEgKyBiXTsKKyAgICAgICAgfQorICAgIH0KKworICAg
IGxldCB2YWx1ZSA9IDA7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxZTQ7ICsraSkgeworICAg
ICAgICBsZXQgZiA9IGZpYigpOworICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDsgKytp
KSB7CisgICAgICAgICAgICB2YWx1ZSA9IGYubmV4dCgpLnZhbHVlOworICAgICAgICB9CisgICAg
ICAgIGlmICh2YWx1ZSAhPT0gYFJlc3VsdCEgMzU0MjI0ODQ4MTc5MjYyMDAwMDAwYCkKKyAgICAg
ICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIHZhbHVlOiR7cmVzdWx0fWApOworICAgIH0KK30o
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVy
YXRvci1maWItZnRsLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5l
cmF0b3ItZmliLWZ0bC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNDBlMzNkYmM4NjhiZWE3YTg5M2M5ZWMxNmI3
NzllYzI2YmRiMTljCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC5qcwpAQCAtMCwwICsxLDIxIEBACisoZnVuY3Rp
b24gKCkgeworICAgIGZ1bmN0aW9uICpmaWIoKQorICAgIHsKKyAgICAgICAgbGV0IGEgPSAxOwor
ICAgICAgICBsZXQgYiA9IDE7CisgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICB5
aWVsZCBhOworICAgICAgICAgICAgW2EsIGJdID0gW2IsIGEgKyBiXTsKKyAgICAgICAgfQorICAg
IH0KKworICAgIGxldCB2YWx1ZSA9IDA7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxZTQ7ICsr
aSkgeworICAgICAgICBsZXQgZiA9IGZpYigpOworICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8
IDEwMDsgKytpKSB7CisgICAgICAgICAgICB2YWx1ZSA9IGYubmV4dCgpLnZhbHVlOworICAgICAg
ICB9CisgICAgICAgIGlmICh2YWx1ZSAhPT0gMzU0MjI0ODQ4MTc5MjYyMDAwMDAwKQorICAgICAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgdmFsdWU6JHtyZXN1bHR9YCk7CisgICAgfQorfSgp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJh
dG9yLWZyYW1lLWVtcHR5LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9n
ZW5lcmF0b3ItZnJhbWUtZW1wdHkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTllODg1NWJmYWMzYzU2ZGY5MjZh
YmQ0MjhjMDEzYzMzNDE2Mjc0NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZyYW1lLWVtcHR5LmpzCkBAIC0wLDAgKzEsMzQg
QEAKK2Z1bmN0aW9uIHNob3VsZFRocm93KGZ1bmMsIGVycm9yTWVzc2FnZSkgeworICAgIHZhciBl
cnJvclRocm93biA9IGZhbHNlOworICAgIHZhciBlcnJvciA9IG51bGw7CisgICAgdHJ5IHsKKyAg
ICAgICAgZnVuYygpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgZXJyb3JUaHJvd24gPSB0
cnVlOworICAgICAgICBlcnJvciA9IGU7CisgICAgfQorICAgIGlmICghZXJyb3JUaHJvd24pCisg
ICAgICAgIHRocm93IG5ldyBFcnJvcignbm90IHRocm93bicpOworICAgIGlmIChTdHJpbmcoZXJy
b3IpICE9PSBlcnJvck1lc3NhZ2UpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIGVycm9y
OiAke1N0cmluZyhlcnJvcil9YCk7Cit9CisKK3Nob3VsZFRocm93KGZ1bmN0aW9uICgpIHsKKyAg
ICBmdW5jdGlvbiAqZmliKGZsYWcpCisgICAgeworICAgICAgICBsZXQgYSA9IDE7CisgICAgICAg
IGxldCBiID0gMTsKKyAgICAgICAgeWllbGQgNDI7CisgICAgICAgIGlmIChmbGFnKQorICAgICAg
ICAgICAgcmV0dXJuIGM7CisgICAgICAgIGxldCBjID0gNTAwOworICAgIH0KKworICAgIGxldCB2
YWx1ZSA9IDA7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxZTQ7ICsraSkgeworICAgICAgICBm
b3IgKGxldCB2IG9mIGZpYihmYWxzZSkpIHsKKyAgICAgICAgfQorICAgIH0KKyAgICBmb3IgKGxl
dCB2IG9mIGZpYih0cnVlKSkgeworICAgIH0KK30sIGBSZWZlcmVuY2VFcnJvcjogQ2Fubm90IGFj
Y2VzcyB1bmluaXRpYWxpemVkIHZhcmlhYmxlLmApOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItcmVkdWNlZC1zYXZlLXBvaW50LXB1dC10
by1zY29wZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9y
LXJlZHVjZWQtc2F2ZS1wb2ludC1wdXQtdG8tc2NvcGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzBjNzVmYTQ5
MTQzYzE3YmUxNGYzMjgxZTNmNjU0MzRmMzUxMzllOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXJlZHVjZWQtc2F2ZS1wb2lu
dC1wdXQtdG8tc2NvcGUuanMKQEAgLTAsMCArMSwyOCBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0
dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoYGJhZCB2YWx1ZTogJHtTdHJpbmcoYWN0dWFsKX1gKTsKK30KKworZnVu
Y3Rpb24gZXJyb3IoKQoreworICAgIHRocm93ICJvayI7Cit9CisKK2Z1bmN0aW9uKiBnZW4oKQor
eworICAgIHZhciB2YWx1ZSA9IDQyOworICAgIHRyeSB7CisgICAgICAgIHlpZWxkIDMwMDsKKyAg
ICAgICAgdmFsdWUgPSA1MDA7CisgICAgICAgIGVycm9yKCk7CisgICAgfSBjYXRjaCAoZSkgewor
ICAgICAgICB5aWVsZCA0MjsKKyAgICAgICAgcmV0dXJuIHZhbHVlOworICAgIH0KKyAgICByZXR1
cm4gMjAwOworfQorCit2YXIgZyA9IGdlbigpOworc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIDMw
MCk7CitzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgNDIpOworc2hvdWxkQmUoZy5uZXh0KCkudmFs
dWUsIDUwMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNz
L2dlbmVyYXRvci10cmFuc2Zlci1yZWdpc3Rlci1iZXlvbmQtbXV0aXBsZS15aWVsZHMuanMgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci10cmFuc2Zlci1yZWdp
c3Rlci1iZXlvbmQtbXV0aXBsZS15aWVsZHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmUyMDhmNTgxMjk2Zjlh
ZTA4YTZiZmIzOThiNDgyMjU3NDJkNmI3OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXRyYW5zZmVyLXJlZ2lzdGVyLWJleW9u
ZC1tdXRpcGxlLXlpZWxkcy5qcwpAQCAtMCwwICsxLDE4IEBACitmdW5jdGlvbiBzaG91bGRCZShh
Y3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAg
IHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKworCitmdW5jdGlv
biAqZ2VuKCkKK3sKKyAgICB2YXIgdGVzdCA9IDQyOworICAgIHlpZWxkIDMyOworICAgIHlpZWxk
IDMzOworICAgIHlpZWxkIHRlc3Q7Cit9CisKK3ZhciBnID0gZ2VuKCk7CitzaG91bGRCZShnLm5l
eHQoKS52YWx1ZSwgMzIpOworc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIDMzKTsKK3Nob3VsZEJl
KGcubmV4dCgpLnZhbHVlLCA0Mik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GYXN0Qml0
VmVjdG9yLmggYi9Tb3VyY2UvV1RGL3d0Zi9GYXN0Qml0VmVjdG9yLmgKaW5kZXggOThmZmY1Y2Y3
MzUzZTZiYzY3ZGE1YzU1OTQwY2NjZTRlNGIxNTZkMC4uZmYwMGI3YjU0ZDRhMGNmZjRiZWY3ZDAz
ODU0ZGU2YjkwY2UxZGI5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRmFzdEJpdFZlY3Rv
ci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0Zhc3RCaXRWZWN0b3IuaApAQCAtMjMsOCArMjMsNyBA
QAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAotI2lmbmRlZiBGYXN0Qml0VmVjdG9yX2gKLSNkZWZp
bmUgRmFzdEJpdFZlY3Rvcl9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgPHN0cmluZy5oPgog
I2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CkBAIC0zNiwxMiArMzUsMTQgQEAgY2xhc3MgUHJp
bnRTdHJlYW07CiAKIGNsYXNzIEZhc3RCaXRWZWN0b3IgewogcHVibGljOgotICAgIEZhc3RCaXRW
ZWN0b3IoKQotICAgICAgICA6IG1fYXJyYXkoMCkKLSAgICAgICAgLCBtX251bUJpdHMoMCkKKyAg
ICBGYXN0Qml0VmVjdG9yKCkgPSBkZWZhdWx0OworCisgICAgRmFzdEJpdFZlY3RvcihGYXN0Qml0
VmVjdG9yJiYgb3RoZXIpCisgICAgICAgIDogbV9hcnJheShzdGQ6OmV4Y2hhbmdlKG90aGVyLm1f
YXJyYXksIG51bGxwdHIpKQorICAgICAgICAsIG1fbnVtQml0cyhzdGQ6OmV4Y2hhbmdlKG90aGVy
Lm1fbnVtQml0cywgMCkpCiAgICAgewogICAgIH0KLSAgICAKKwogICAgIEZhc3RCaXRWZWN0b3Io
Y29uc3QgRmFzdEJpdFZlY3RvciYgb3RoZXIpCiAgICAgICAgIDogbV9hcnJheSgwKQogICAgICAg
ICAsIG1fbnVtQml0cygwKQpAQCAtMjAyLDEzICsyMDMsMTAgQEAgY2xhc3MgRmFzdEJpdFZlY3Rv
ciB7CiAgICAgc3RhdGljIHNpemVfdCBhcnJheUxlbmd0aChzaXplX3QgbnVtQml0cykgeyByZXR1
cm4gKG51bUJpdHMgKyAzMSkgPj4gNTsgfQogICAgIHNpemVfdCBhcnJheUxlbmd0aCgpIGNvbnN0
IHsgcmV0dXJuIGFycmF5TGVuZ3RoKG1fbnVtQml0cyk7IH0KICAgICAKLSAgICB1aW50MzJfdCog
bV9hcnJheTsgLy8gTm8sIHRoaXMgY2FuJ3QgYmUgYW4gc3RkOjp1bmlxdWVfcHRyPHVpbnQzMl90
W10+LgotICAgIHNpemVfdCBtX251bUJpdHM7CisgICAgdWludDMyX3QqIG1fYXJyYXkgeyBudWxs
cHRyIH07IC8vIE5vLCB0aGlzIGNhbid0IGJlIGFuIHN0ZDo6dW5pcXVlX3B0cjx1aW50MzJfdFtd
Pi4KKyAgICBzaXplX3QgbV9udW1CaXRzIHsgMCB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV1RG
CiAKIHVzaW5nIFdURjo6RmFzdEJpdFZlY3RvcjsKLQotI2VuZGlmIC8vIEZhc3RCaXRWZWN0b3Jf
aAotCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>284215</attachid>
            <date>2016-07-21 07:57:10 -0700</date>
            <delta_ts>2016-07-21 10:26:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-152723-20160721235609.patch</filename>
            <type>text/plain</type>
            <size>191811</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAzNTAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
MTg5OTNhYjdiZWYyMDRmYjhkMjVkN2EyODExNzBiODE5NjI4ZGEzLi41NWE0MjcyZDYxZTE1ZDk5
NTU5YmE2OWU0MTFkYjNlYTA3ZjM5ODU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNTIgQEAKKzIwMTYtMDctMjEgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0RGR11bRlRMXSBJbXBsZW1lbnQgRVM2IEdlbmVyYXRvcnMgaW4g
REZHIC8gRlRMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNTI3MjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUaGlzIHBhdGNoIGludHJvZHVjZXMgREZHIGFuZCBGVEwgc3VwcG9ydCBmb3IgRVM2IGdlbmVy
YXRvcnMuCisgICAgICAgIEVTNiBnZW5lcmF0b3IgaXMgY29tcGlsZWQgYnkgdGhlIEJ5dGVjb2Rl
R2VuZXJhdG9yLiBCdXQgYXQgdGhlIGxhc3QgcGhhc2UsIEJ5dGVjb2RlR2VuZXJhdG9yIHBlcmZv
cm1zICJnZW5lcmF0b3JpZmljYXRpb24iIG9udG8gdGhlIHVubGlua2VkIGNvZGUuCisgICAgICAg
IEluIEJ5dGVjb2RlR2VuZXJhdG9yIHBoYXNlLCB3ZSBpbnNlcnRlZCBzZXZlcmFsIHNwZWNpYWwg
bWFya2VycyBmb3IgdGhlIGdlbmVyYXRvcnMsIG9wX3NhdmUgYW5kIG9wX3Jlc3VtZS4KKyAgICAg
ICAgVGhlIG9wX3NhdmUsIG9wX3Jlc3VtZSwgYW5kIHRoZSBtZXJnZSBwb2ludCBibG9jayBhcmUg
Y29ubmVjdGVkIGFzIGZvbGxvd3MuCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBvcF9yZXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBeCisgICAgICAgIGVudHJ5IC0+IGdlbmVyYXRvciBzd2l0Y2ggLS0tLT4gb3Bfc2F2ZSAtPiBt
ZXJnZSBwb2ludCAtPiAuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBeCisgICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0t
LT4gb3BfcmVzdW1lIC0tLS0tKworCisgICAgICAgIEluIHRoZSBnZW5lcmF0b3JpZmljYXRpb24g
cGhhc2UsIHdlIHR1cm4gb3V0IHdoaWNoIHZhcmlhYmxlcyBzaG91bGQgYmUgc2F2ZWQgYW5kIHJl
c3VtZWQgYXQgZWFjaCBvcF9zYXZlIGFuZCBvcF9yZXN1bWUsIGFuZCBjb252ZXJ0IHRoZXNlIGJ5
dGVjb2RlcworICAgICAgICB0byB0aGUgc2VxdWVuY2VzIG9mIHRoZSBnZXRfZnJvbV9zY29wZSBh
bmQgcHV0X3RvX3Njb3BlLiBUaGUgcmVnaXN0ZXJzIGFyZSBzYXZlZCBhbmQgcmVzdW1lZCBvdmVy
IHRoZSBnZW5lcmF0b3IncyBuZXh0KCkgY2FsbHMgYnkgdXNpbmcgdGhpcyBzcGVjaWFsCisgICAg
ICAgIGdlbmVyYXRvciBmcmFtZSBzY29wZS4KKworICAgICAgICBJbiB0aGUgZ2VuZXJhdG9yaWZp
Y2F0aW9uIHBoYXNlLAorCisgICAgICAgIDEuIFdlIGNvbnN0cnVjdCB0aGUgQnl0ZWNvZGVHcmFw
aCBmcm9tIHRoZSB1bmlua2VkIGluc3RydWN0aW9ucy4gVGhpcyBjb25zdHJ1Y3RzIHRoZSBiYXNp
YyBibG9ja3MsIGFuZCBpdCBpcyB1c2VkIGluIHRoZSBzdWJzZXF1ZW50IGFuYWx5c2lzLgorICAg
ICAgICAyLiBXZSBwZXJmb3JtIHRoZSBhbmFseXNpcyBvbnRvIHRoZSB1bmxpbmtlZCBjb2RlLiBX
ZSBoYXZlIDMgYW5hbHlzaXM6IHRoZSBsaXZlbmVzcyBhbmFseXNpcywgdGhlIHJlc3VtZWQgdmFy
aWFibGVzIGFuYWx5c2lzLCBhbmQgdGhlIHNhdmVkIHZhcmlhYmxlcyBhbmFseXNpcy4KKyAgICAg
ICAgICAgRmlyc3QsIGluIHRoZSBsaXZlbmVzcyBhbmFseXNpcywgd2UgZXh0cmFjdCB0aGUgbGl2
ZSB2YXJpYWJsZXMgYXQgZWFjaCBtZXJnZSBwb2ludC4gVGhlc2UgdmFyaWFibGVzIHNob3VsZCBi
ZSBjb25zaWRlcmVkIGFzIHRoZSBjb25zZXJ2YXRpdmUgcmVnaXN0ZXJzCisgICAgICAgICAgIHRv
IGJlIHNhdmVkIGFuZCByZXN1bWVkIGF0IGVhY2ggcG9pbnQuCisgICAgICAgIDMuIFNlY29uZCwg
d2UgcGVyZm9ybSB0aGUgbGl2ZW5lc3MgYW5hbHlzaXMgYWdhaW4uIEJ1dCB0aGlzIHRpbWUsIHdl
IGV4cGxpY2l0bHkgaWdub3JlIHRoZSBlZGdlcyBiZXR3ZWVuIHRoZSBzYXZlIHBvaW50cyBhbmQg
dGhlIG1lcmdlIHBvaW50cy4gVGhpcyBhbmFseXNpcywKKyAgICAgICAgICAgcmVmZXJyZWQgdG8g
YXMgdGhlIHJlc3VtZWQgdmFyaWFibGVzIGFuYWx5c2lzLCBleHRyYWN0cyB0aGUgbGl2ZW5lc3Mg
YXQgZWFjaCBtZXJnZSBwb2ludC4gVGhpcyBsaXZlbmVzcyBpbmZvcm1hdGlvbiBvbmx5IGNvbnNp
ZGVycyB0aGUgcmVhY2hhYmxlIGJsb2NrcyBmcm9tIHRoZQorICAgICAgICAgICB0YXJnZXQgb3Bf
cmVzdW1lLiBTbywgdGhpcyByZWdpc3RlciBzZXQgcmVwcmVzZW50cyB0aGF0IHdoaWNoIHNhdmVk
IHJlZ2lzdGVycyB0aGUgcmVhY2hhYmxlIGJsb2NrcyB1c2UuIFdlIGNvbnNpZGVyIHRoZXNlIHJl
Z2lzdGVycyBhcyB0aGUgcmVnaXN0ZXJzIHRvIGJlIHJlc3VtZWQKKyAgICAgICAgICAgaGVyZS4g
VGhlIHJlc3VsdCByZWdpc3RlciBzZXQgaXMgc21hbGxlciB0aGFuIHRoZSBzZXQgd2hpY2ggaXMg
ZXh0cmFjdGVkIGluIHRoZSBwcmV2aW91cyBsaXZlbmVzcyBhbmFseXNpcy4KKyAgICAgICAgNC4g
VGhpcmQsIHdlIGRyaXZlIHRoZSBmb3J3YXJkIGFuYWx5c2lzLCBjYWxsZWQgdGhlIHNhdmVkIHZh
cmlhYmxlcyBhbmFseXNpcy4gQXQgb3Bfc2F2ZSwgd2Ugc2hvdWxkIHNhdmUgdGhlIHZhcmlhYmxl
cyB0aGF0IChpKSB3aWxsIGJlIHVzZWQgYWZ0ZXIgdGhlIG1lcmdlIHBvaW50CisgICAgICAgICAg
IGFuZCAoaWkpIHRoZSBuZXdseSBkZWZpbmVkIHZhcmlhYmxlcyBmcm9tIHRoZSBwcmV2aW91cyBv
cF9yZXN1bWUuIFNvLCB3ZSBwcm9wYWdhdGUgdGhlIGRlZnMgYW5kIGNvbGxlY3QgdGhlIG5ld2x5
IGRlZmluZWQgcmVnaXN0ZXJzIGF0IHRoZSBvcF9zYXZlIHBvaW50IGluIHRoZSBncmFwaAorICAg
ICAgICAgICB3aGljaCBkcm9wcyB0aGUgZWRnZXMgYmV0d2VlbiB0aGUgc2F2ZSBwb2ludHMgYW5k
IHRoZSBtZXJnZSBwb2ludHMuIFRoaXMgcmVzdWx0IHJlcHJlc2VudHMgKGlpKS4gU28gdGhlbiwg
d2UgZmlsdGVyIHRoZSBsaXZlIHZhcmlhYmxlcyAoaSkgKGdhaW5lZCBpbiAoMikpIGF0IHRoZSBt
ZXJnZQorICAgICAgICAgICBwb2ludCB3aXRoIHRoaXMgbmV3bHkgZGVmLWVkIHJlZ2lzdGVycyBi
aXQgbWFzayhpaSkuCisgICAgICAgIDUuIFdlIGluc2VydCB0aGUgZ2V0X2Zyb21fc2NvcGUgYW5k
IHB1dF90b19zY29wZSBhdCBlYWNoIG9wX3NhdmUgYW5kIG9wX3Jlc3VtZS4gV2hpY2ggcmVnaXN0
ZXJzIHNob3VsZCBiZSBzYXZlZCBhbmQgcmVzdW1lZCBpcyBvZmZlcmVkIGJ5ICgzKSBhbmQgKDQp
LgorICAgICAgICAgICBUaGVuLCBjbGlwIHRoZSBvcF9zYXZlIGFuZCBvcF9yZXN1bWUgdGhlbXNl
bHZlcy4gVGhleSBhcmUgZXhlY3V0ZWQgaW4gYSBiYXRjaCBtYW5uZXIgYnkgQnl0ZWNvZGVNb2Rp
ZmljYXRpb25TZXQuIFNpbmNlIHRoZXNlIG1vZGlmaWNhdGlvbiBjaGFuZ2VzIHRoZSBiYXNpYyBi
bG9ja3MKKyAgICAgICAgICAgYW5kIHNpemUgb2YgdW5saW5rZWQgaW5zdHJ1Y3Rpb25zLCBCeXRl
Y29kZU1vZGlmaWNhdGlvblNldCBhbHNvIHBlcmZvcm1zIHRoZSBvZmZzZXQgYWRqdXN0bWVudCBm
b3IgVW5saW5rZWRDb2RlQmxvY2suIFNvLCB0aGlzIEJ5dGVjb2RlTW9kaWZpY2F0aW9uU2V0IGlz
IHBlcmZvcm1lZAorICAgICAgICAgICBvbnRvIHRoZSBCeXRlY29kZUdyYXBoIGluc3RlYWQgb2Yg
Qnl0ZWNvZGVCYXNpY0Jsb2NrLiBUaGUgcmVhc29uIHdoeSB3ZSB0YWtlIHRoaXMgZGVzaWduIGlz
IHNpbXBsZTogd2UgZG9uJ3Qgd2FudCB0byBuZXdseSBjcmVhdGUgdGhlIGJhc2ljIGJsb2NrcyBh
bmQgb3Bjb2RlcworICAgICAgICAgICBmb3IgdGhpcyBlYXJseSBwaGFzZSBsaWtlIERGRy4gSW5z
dGVhZCwgd2UgcGVyZm9ybSB0aGUgbW9kaWZpY2F0aW9uIGFuZCBhZGp1c3RtZW50IHRvIHRoZSB1
bmxpbmtlZCBpbnN0cnVjdGlvbnMgYW5kIFVubGlua2VkQ29kZUJsb2NrIGluIGEgaW4tcGxhY2Ug
bWFubmVyLgorCisgICAgICAgIEFmdGVyIHRoYXQgcGhhc2UsIHRoZSBkYXRhIGZsb3cgb2YgdGhl
IGdlbmVyYXRvci1zYXZlZC1hbmQtcmVzdW1lZC1yZWdpc3RlcnMgYXJlIGV4cGxpY2l0bHkgcmVw
cmVzZW50ZWQgYnkgdGhlIGdldF9mcm9tX3Njb3BlIGFuZCBwdXRfdG9fc2NvcGUuCisgICAgICAg
IEFuZCBvcF9zYXZlIGFuZCBvcF9yZXN1bWUgYXJlIHJlbW92ZWQuIFNpbmNlIHdlIHVzZSB0aGUg
ZXhpc3RpbmcgYnl0ZWNvZGVzLCBERkcgYW5kIEZUTCBjaGFuZ2VzIGFyZSBub3QgbmVjZXNzYXJ5
LgorCisgICAgICAgIENvbXBpbGluZyBFUzYgZ2VuZXJhdG9ycyBpbiBERkcgYW5kIEZUTCBnaXZl
cyB1cyBzaWduaWZpY2FudCBwZXJmb3JtYW5jZSBpbXByb3ZlbWVudHMuCisgICAgICAgIEluIHg2
NCBMaW51eCBib3ggKGhhbmF5YW1hdGEpLCB0aGUgcmVzdWx0IG9mIEpTQ09ubHkgcG9ydCBpcyB0
aGUgZm9sbG93aW5ncy4KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBiYXNlbGluZSAgICAgICAgICAgICAgICAgICBwYXRjaAorCisgICAg
ICAgICAgICBnZW5lcmF0b3ItZmliICAgICAgICAgICAgICAgICAgICAgICAgICAxMDMuMjU0Myst
My45OTc4ICAgICBeICAgICAzNi40MTQ4Ky0wLjg0MDIgICAgICAgIF4gZGVmaW5pdGVseSAyLjgz
NTV4IGZhc3RlcgorICAgICAgICAgICAgZ2VuZXJhdG9yLXdpdGgtc2V2ZXJhbC10eXBlcyAgICAg
ICAgICAgMzQyLjUwMDkrLTI1LjE2MDIgICAgXiAgICAxMzIuMTcxMCstMTcuMTEyOSAgICAgICBe
IGRlZmluaXRlbHkgMi41OTEzeCBmYXN0ZXIKKyAgICAgICAgICAgIGdlbmVyYXRvci1zdW5zcGlk
ZXItYWNjZXNzLW5zaWV2ZSAgICAgICAgNS45ODE2Ky0wLjEwODIgICAgIF4gICAgICA1LjE3ODAr
LTAuMjM4OCAgICAgICAgXiBkZWZpbml0ZWx5IDEuMTU1MnggZmFzdGVyCisKKworICAgICAgICBJ
biB4NjQgT1MgWCBsYXB0b3AsIHRoZSByZXN1bHRzIG9mIEVTNlNhbXBsZUJlbmNoIGFyZSB0aGUg
Zm9sbG93aW5ncy4KKyAgICAgICAgVGhlIEVTNiBCYXNpYyBiZW5jaG1hcmsgc2hvdyB0aGF0IHRo
ZSBwZXJmb3JtYW5jZSBvZiB0aGUgcGF0Y2hlZCBvbmUgaXMgMzMlIGZhc3RlciB0aGFuIHRoZSBw
ZXJmb3JtYW5jZSBvZiB0aGUgYmFzZWxpbmUuCisKKyAgICAgICAgICAgIEJhc2VsaW5lOgorICAg
ICAgICAgICAgICAgIEdlb21ldHJpYyBNZWFuIFJlc3VsdDogMTgxLjgzIG1zIMKxIDQuODIgbXMK
KworICAgICAgICAgICAgICAgIEJlbmNobWFyayAgICBGaXJzdCBJdGVyYXRpb24gICAgICAgV29y
c3QgMiUgICAgICAgICAgICAgIFN0ZWFkeSBTdGF0ZQorICAgICAgICAgICAgICAgIEFpciAgICAg
ICAgICA3MC43NCBtcyDCsSA2LjU1IG1zICAgIDM0Ljc0IG1zIMKxIDEuNjUgbXMgICAgMjk4OS4w
NiBtcyDCsSAzNC40NSBtcworICAgICAgICAgICAgICAgIEJhc2ljICAgICAgICA0MC4wMyBtcyDC
sSAxLjk2IG1zICAgIDI4LjUwIG1zIMKxIDAuNjAgbXMgICAgNDM0Mi45MSBtcyDCsSA2NC4xMCBt
cworCisgICAgICAgICAgICBQYXRjaGVkOgorICAgICAgICAgICAgICAgIEdlb21ldHJpYyBNZWFu
IFJlc3VsdDogMTY4LjE0IG1zIMKxIDEuMzkgbXMKKworICAgICAgICAgICAgICAgIEJlbmNobWFy
ayAgICBGaXJzdCBJdGVyYXRpb24gICAgICAgV29yc3QgMiUgICAgICAgICAgICAgIFN0ZWFkeSBT
dGF0ZQorICAgICAgICAgICAgICAgIEFpciAgICAgICAgICA2OC42NyBtcyDCsSAwLjgyIG1zICAg
IDM1LjYyIG1zIMKxIDAuMzIgbXMgICAgMzA2NS44OSBtcyDCsSA1NS41OSBtcworICAgICAgICAg
ICAgICAgIEJhc2ljICAgICAgICAzOC42MSBtcyDCsSAxLjY1IG1zICAgIDIzLjk3IG1zIMKxIDAu
MzggbXMgICAgMzI2Mi40NiBtcyDCsSA3NC4xMiBtcworCisgICAgICAgICogQ01ha2VMaXN0cy50
eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiBidWlsdGlucy9HZW5lcmF0b3JQcm90b3R5cGUuanM6CisgICAgICAgIChnbG9i
YWxQcml2YXRlLmdlbmVyYXRvclJlc3VtZSk6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVC
YXNpY0Jsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVCYXNpY0Jsb2NrOjpjb21wdXRl
Qnl0ZWNvZGVCYXNpY0Jsb2Nrc0ludGVybmFsKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVCYXNp
Y0Jsb2NrOjpjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2Nrcyk6CisgICAgICAgIChKU0M6OmxpbmtC
bG9ja3MpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2Nr
cyk6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmg6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlQmFzaWNCbG9jazo6Ynl0ZWNvZGVPZmZzZXRzKToKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVCYXNpY0Jsb2NrOjpzdWNjZXNzb3JzKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVCYXNpY0Jsb2NrOjpwcmVkZWNlc3NvcnMpOgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUJhc2ljQmxvY2s6OmluZGV4KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVCYXNpY0Jsb2NrOjph
ZGRTdWNjZXNzb3IpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUJhc2ljQmxvY2s6OmFkZFByZWRl
Y2Vzc29yKToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5j
cHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbjo6Qnl0
ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRv
cmlmaWNhdGlvbjo6aXNNZXJnZUJsb2NrKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0
b3JpZmljYXRpb246OmlzU2F2ZUJsb2NrKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0
b3JpZmljYXRpb246OmdyYXBoKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3JpZmlj
YXRpb246OnN0b3JhZ2VGb3JHZW5lcmF0b3JMb2NhbCk6CisgICAgICAgIChKU0M6OkdlbmVyYXRv
ckxpdmVuZXNzQW5hbHlzaXM6OkdlbmVyYXRvckxpdmVuZXNzQW5hbHlzaXMpOgorICAgICAgICAo
SlNDOjpHZW5lcmF0b3JMaXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlTGl2ZW5lc3NEZWZzRm9yQnl0
ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JMaXZlbmVzc0FuYWx5c2lzOjpj
b21wdXRlTGl2ZW5lc3NVc2VzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpHZW5l
cmF0b3JMaXZlbmVzc0FuYWx5c2lzOjpzdGVwT3Zlckluc3RydWN0aW9uRm9yTGl2ZW5lc3MpOgor
ICAgICAgICAoSlNDOjpHZW5lcmF0b3JMaXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlTG9jYWxMaXZl
bmVzc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yTGl2ZW5lc3NB
bmFseXNpczo6Y29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCbG9jayk6CisgICAgICAgIChKU0M6Okdl
bmVyYXRvckxpdmVuZXNzQW5hbHlzaXM6OmdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQp
OgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JMaXZlbmVzc0FuYWx5c2lzOjpydW4pOgorICAgICAg
ICAoSlNDOjpSZXN1bWVkVmFyaWFibGVzQW5hbHlzaXM6OlJlc3VtZWRWYXJpYWJsZXNBbmFseXNp
cyk6CisgICAgICAgIChKU0M6OlJlc3VtZWRWYXJpYWJsZXNBbmFseXNpczo6Z2V0UmVzdW1lZFZh
cmlhYmxlc0luZm9BdEJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6UmVzdW1lZFZhcmlh
Ymxlc0FuYWx5c2lzOjpydW4pOgorICAgICAgICAoSlNDOjpTYXZlZFZhcmlhYmxlc0FuYWx5c2lz
OjpTYXZlZFZhcmlhYmxlc0FuYWx5c2lzKToKKyAgICAgICAgKEpTQzo6U2F2ZWRWYXJpYWJsZXNB
bmFseXNpczo6c3RlcE92ZXJJbnN0cnVjdGlvbkZvclNhdmVkVmFyaWFibGVzKToKKyAgICAgICAg
KEpTQzo6U2F2ZWRWYXJpYWJsZXNBbmFseXNpczo6Y29tcHV0ZUxvY2FsU2F2ZWRWYXJpYWJsZXNG
b3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OlNhdmVkVmFyaWFibGVzQW5hbHlzaXM6
OmNvbXB1dGVMb2NhbFNhdmVkVmFyaWFibGVzRm9yQmxvY2spOgorICAgICAgICAoSlNDOjpTYXZl
ZFZhcmlhYmxlc0FuYWx5c2lzOjpnZXRTYXZlZFZhcmlhYmxlc0luZm9BdEJ5dGVjb2RlT2Zmc2V0
KToKKyAgICAgICAgKEpTQzo6U2F2ZWRWYXJpYWJsZXNBbmFseXNpczo6cnVuKToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb246OnJ1bik6CisgICAgICAgIChKU0M6OnBl
cmZvcm1HZW5lcmF0b3JpZmljYXRpb24pOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlR2Vu
ZXJhdG9yaWZpY2F0aW9uLmg6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNJbmxpbmVzLmguCisgICAgICAgICogYnl0ZWNv
ZGUvQnl0ZWNvZGVHcmFwaC5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHcmFwaDo6
Y29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHcmFwaDo6YmFzaWNCbG9ja3MpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdyYXBoOjppbnN0cnVjdGlvbnMpOgorICAgICAgICAoSlND
OjpCeXRlY29kZUdyYXBoOjpiYXNpY0Jsb2Nrc0luUmV2ZXJzZU9yZGVyKToKKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVHcmFwaDo6YmxvY2tDb250YWluc0J5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHcmFwaDo6ZmluZEJhc2ljQmxvY2tGb3JCeXRlY29kZU9mZnNldCk6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR3JhcGg6OmZpbmRCYXNpY0Jsb2NrV2l0aExlYWRlck9mZnNl
dCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR3JhcGg8QmxvY2s+OjpCeXRlY29kZUdyYXBoKToK
KyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNp
cyk6CisgICAgICAgIChKU0M6OnN0ZXBPdmVySW5zdHJ1Y3Rpb24pOgorICAgICAgICAoSlNDOjpj
b21wdXRlTG9jYWxMaXZlbmVzc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Y29t
cHV0ZUxvY2FsTGl2ZW5lc3NGb3JCbG9jayk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlTGl2ZW5l
c3NBbmFseXNpczo6cnVuTGl2ZW5lc3NGaXhwb2ludCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
TGl2ZW5lc3NBbmFseXNpczo6Z2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29kZU9mZnNldCk6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0ZUZ1bGxMaXZlbmVzcyk6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0ZUtpbGxzKToK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpkdW1wUmVzdWx0cyk6Cisg
ICAgICAgIChKU0M6OmlzVmFsaWRSZWdpc3RlckZvckxpdmVuZXNzKTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6Z2V0TGVhZGVyT2Zmc2V0Rm9yQmFzaWNCbG9jayk6IERlbGV0ZWQuCisgICAgICAg
IChKU0M6OmZpbmRCYXNpY0Jsb2NrV2l0aExlYWRlck9mZnNldCk6IERlbGV0ZWQuCisgICAgICAg
IChKU0M6OmJsb2NrQ29udGFpbnNCeXRlY29kZU9mZnNldCk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OmZpbmRCYXNpY0Jsb2NrRm9yQnl0ZWNvZGVPZmZzZXQpOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGUpOiBEZWxldGVkLgorICAgICAg
ICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5oOgorICAgICAgICAqIGJ5dGVj
b2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGluZXMuaDoKKyAgICAgICAgKEpTQzo6aXNW
YWxpZFJlZ2lzdGVyRm9yTGl2ZW5lc3MpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTW9k
aWZpY2F0aW9uU2V0LmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkJ5dGVjb2RlTW9kaWZpY2F0
aW9uU2V0OjphZGp1c3RPZmZzZXQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZU1vZGlmaWNhdGlv
blNldDo6YXBwbHlNb2RpZmljYXRpb24pOgorICAgICAgICAoSlNDOjpCeXRlY29kZU1vZGlmaWNh
dGlvblNldDo6ZXhlY3V0ZSk6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVNb2RpZmljYXRp
b25TZXQuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkJ5dGVjb2RlTW9kaWZpY2F0aW9uU2V0OjpC
eXRlY29kZU1vZGlmaWNhdGlvblNldCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlTW9kaWZpY2F0
aW9uU2V0OjppbnNlcnQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZU1vZGlmaWNhdGlvblNldDo6
cmVtb3ZlQnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZU1vZGlmaWNhdGlvblNldDo6
Z3JhcGgpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmg6CisgICAgICAgIChK
U0M6OmNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpjb21wdXRl
RGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3Bw
OgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjpoYW5kbGVyRm9ySW5kZXgpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6
OnZhbHVlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
OjpsaXZlbmVzc0FuYWx5c2lzU2xvdyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZHVtcEJ5
dGVjb2RlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpzaHJpbmtUb0ZpdCk6
IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6
OkNvZGVCbG9jazo6aXNDb25zdGFudFJlZ2lzdGVySW5kZXgpOgorICAgICAgICAoSlNDOjpDb2Rl
QmxvY2s6OmxpdmVuZXNzQW5hbHlzaXMpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmxpdmVD
YWxsZWVMb2NhbHNBdFlpZWxkKTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29kZS9IYW5kbGVy
SW5mby5oOgorICAgICAgICAoSlNDOjpIYW5kbGVySW5mb0Jhc2U6OmhhbmRsZXJGb3JJbmRleCk6
CisgICAgICAgICogYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmNwcDoKKyAgICAgICAgKEpT
Qzo6Z2V0SnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OmNvbXB1
dGVQcmVjaXNlSnVtcFRhcmdldHNJbnRlcm5hbCk6CisgICAgICAgIChKU0M6OmNvbXB1dGVQcmVj
aXNlSnVtcFRhcmdldHMpOgorICAgICAgICAoSlNDOjpyZWNvbXB1dGVQcmVjaXNlSnVtcFRhcmdl
dHMpOgorICAgICAgICAoSlNDOjpmaW5kSnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldCk6Cisg
ICAgICAgICogYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmg6CisgICAgICAgICogYnl0ZWNv
ZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9j
azo6aGFuZGxlckZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2Rl
QmxvY2s6OmhhbmRsZXJGb3JJbmRleCk6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2Nr
OjphcHBseU1vZGlmaWNhdGlvbik6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxv
Y2suaDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRTdHJpbmdKdW1wVGFibGU6Om9mZnNldEZvclZh
bHVlKToKKyAgICAgICAgKiBieXRlY29kZS9WaXJ0dWFsUmVnaXN0ZXIuaDoKKyAgICAgICAgKiBi
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUdlbmVyYXRvcjo6Z2VuZXJhdGUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6
Qnl0ZWNvZGVHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dENvbXBsZXhQb3BTY29wZXMpOgorICAgICAgICAoSlNDOjpwcmVwYXJlSnVtcFRhYmxlRm9yU3Ry
aW5nU3dpdGNoKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRZaWVsZFBv
aW50KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRTYXZlKToKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXN1bWUpOgorICAgICAgICAqIGJ5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVy
YXRvcjo6Z2VuZXJhdG9yRnJhbWVSZWdpc3Rlcik6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlv
bnMuY3BwOgorICAgICAgICAqIGdlbmVyYXRlLWJ5dGVjb2RlLWZpbGVzOgorICAgICAgICAqIGlu
dGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpTQzo6ZmluZEV4Y2VwdGlvbkhh
bmRsZXIpOgorICAgICAgICAoSlNDOjpHZXRDYXRjaEhhbmRsZXJGdW5jdG9yOjpvcGVyYXRvcigp
KToKKyAgICAgICAgKEpTQzo6VW53aW5kRnVuY3Rvcjo6b3BlcmF0b3IoKSk6CisgICAgICAgICog
aW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaDoKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnBy
ZXRlcklubGluZXMuaDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1ByZWNpc2VKdW1wVGFyZ2V0cy5oLgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6Z2V0T3Bj
b2RlSUQpOgorICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZh
dGVDb21waWxlTWFpblBhc3MpOiBEZWxldGVkLgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAg
ICAgKiBqaXQvSklUT3Bjb2Rlcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9zYXZl
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3Jlc3VtZSk6IERlbGV0ZWQu
CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc206CisgICAgICAgICogcGFy
c2VyL1BhcnNlci5jcHA6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUlu
bmVyKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlR2VuZXJhdG9yRnVu
Y3Rpb25Tb3VyY2VFbGVtZW50cyk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+Ojpj
cmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmg6Cisg
ICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpTTE9X
X1BBVEhfREVDTCk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMu
aDoKKyAgICAgICAgKiBydW50aW1lL0dlbmVyYXRvckZyYW1lLmNwcDogUmVtb3ZlZC4KKyAgICAg
ICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OkdlbmVyYXRvckZyYW1lKTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OmZpbmlzaENyZWF0aW9uKTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OmNyZWF0ZVN0cnVjdHVyZSk6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpjcmVhdGUpOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpHZW5lcmF0b3JGcmFtZTo6c2F2ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkdlbmVyYXRv
ckZyYW1lOjpyZXN1bWUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6
dmlzaXRDaGlsZHJlbik6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9HZW5lcmF0b3JGcmFt
ZS5oOiBSZW1vdmVkLgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6bG9jYWxzKTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OmxvY2FsQXQpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6b2Zmc2V0T2ZMb2NhbHMpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6YWxsb2NhdGlvblNpemVGb3JMb2NhbHMpOiBE
ZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6Vk0p
OiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKyAgICAgICAgKiB0ZXN0cy9zdHJl
c3MvZ2VuZXJhdG9yLWZpYi1mdGwtYW5kLWFycmF5LmpzOiBBZGRlZC4KKyAgICAgICAgKGZpYik6
CisgICAgICAgICogdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLWFuZC1vYmplY3QuanM6
IEFkZGVkLgorICAgICAgICAoZmliKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvZ2VuZXJhdG9y
LWZpYi1mdGwtYW5kLXN0cmluZy5qczogQWRkZWQuCisgICAgICAgIChmaWIpOgorICAgICAgICAq
IHRlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC5qczogQWRkZWQuCisgICAgICAgIChmaWIp
OgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZnJhbWUtZW1wdHkuanM6IEFkZGVk
LgorICAgICAgICAoc2hvdWxkVGhyb3cpOgorICAgICAgICAoc2hvdWxkVGhyb3cuZmliKToKKyAg
ICAgICAgKiB0ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXJlZHVjZWQtc2F2ZS1wb2ludC1wdXQtdG8t
c2NvcGUuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoZ2VuKToKKyAg
ICAgICAgKiB0ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXRyYW5zZmVyLXJlZ2lzdGVyLWJleW9uZC1t
dXRpcGxlLXlpZWxkcy5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgIChn
ZW4pOgorCiAyMDE2LTA3LTIwICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29t
PgogCiAgICAgICAgIFtFUzddIEludHJvZHVjZSBleHBvbmVudGlhdGlvbiBleHByZXNzaW9uCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmlu
ZGV4IDFjMjlhZDhmOTA2NzIxN2QwOWMxYjQ0NzVmYjhjOGJlMTNlYzY3ZTMuLjE2OGIwODJkMGFi
ZjU1MmQyMGNhOWM2OTA2NmZmMTc5MWU2NzdkNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTYt
MDctMjEgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAg
W0RGR11bRlRMXSBJbXBsZW1lbnQgRVM2IEdlbmVyYXRvcnMgaW4gREZHIC8gRlRMCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTI3MjMKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgbW92ZSBjb25zdHJ1
Y3RvciBmb3IgRmFzdEJpdFZlY3Rvci4KKworICAgICAgICAqIHd0Zi9GYXN0Qml0VmVjdG9yLmg6
CisgICAgICAgIChXVEY6OkZhc3RCaXRWZWN0b3I6OkZhc3RCaXRWZWN0b3IpOgorCiAyMDE2LTA3
LTIwICBSYWplZXYgTWlzcmEgIDxyYWplZXZtaXNyYWZvcmFwcGxlQGdtYWlsLmNvbT4KIAogICAg
ICAgICBSZW1vdmUgdW5uZWNlc3NhcnkgaWYgY2hlY2sgZnJvbSBQYXJraW5nTG90LmNwcApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDZmZTBhNWZlMGNjY2VhYTY4YmUwNjBi
MDdmM2NjZmI3ZDk1NzNhOTIuLjY4YjIyYTc4MmY3ZmQ1NTZmOGY4NDM1NmM3YzJkNWFkNzE5YjRh
MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTE3OSw2ICsxNzksOCBA
QCBzZXQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIGJ5dGVjb2RlL0FycmF5QWxsb2NhdGlv
blByb2ZpbGUuY3BwCiAgICAgYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmNwcAogICAgIGJ5dGVjb2Rl
L0J5dGVjb2RlQmFzaWNCbG9jay5jcHAKKyAgICBieXRlY29kZS9CeXRlY29kZUdlbmVyYXRvcmlm
aWNhdGlvbi5jcHAKKyAgICBieXRlY29kZS9CeXRlY29kZU1vZGlmaWNhdGlvblNldC5jcHAKICAg
ICBieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmNwcAogICAgIGJ5dGVjb2RlL0J5
dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAKICAgICBieXRlY29kZS9DYWxsRWRnZS5jcHAKQEAg
LTY1Nyw3ICs2NTksNiBAQCBzZXQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIHJ1bnRpbWUv
RnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlLmNwcAogICAgIHJ1bnRpbWUvRnVuY3Rpb25Qcm90b3R5
cGUuY3BwCiAgICAgcnVudGltZS9GdW5jdGlvblJhcmVEYXRhLmNwcAotICAgIHJ1bnRpbWUvR2Vu
ZXJhdG9yRnJhbWUuY3BwCiAgICAgcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9y
LmNwcAogICAgIHJ1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3BwCiAgICAgcnVu
dGltZS9HZW5lcmF0b3JQcm90b3R5cGUuY3BwCkBAIC05NzIsNiArOTczLDEwIEBAIGFkZF9jdXN0
b21fY29tbWFuZCgKICAgICBDT01NQU5EICR7UFlUSE9OX0VYRUNVVEFCTEV9ICR7SkFWQVNDUklQ
VENPUkVfRElSfS9nZW5lcmF0ZS1ieXRlY29kZS1maWxlcyAtLWJ5dGVjb2Rlc19oICR7REVSSVZF
RF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vQnl0ZWNvZGVzLmggLS1pbml0X2J5dGVjb2Rl
c19hc20gJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9Jbml0Qnl0ZWNvZGVz
LmFzbSAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24KICAg
ICBWRVJCQVRJTSkKIAorbGlzdChBUFBFTkQgSmF2YVNjcmlwdENvcmVfSEVBREVSUworICAgICR7
REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vQnl0ZWNvZGVzLmgKKykKKwogYWRk
X2N1c3RvbV9jb21tYW5kKAogICAgIE9VVFBVVCAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBU
Q09SRV9ESVJ9L0xMSW50RGVzaXJlZE9mZnNldHMuaAogICAgIE1BSU5fREVQRU5ERU5DWSAke0pB
VkFTQ1JJUFRDT1JFX0RJUn0vb2ZmbGluZWFzbS9nZW5lcmF0ZV9vZmZzZXRfZXh0cmFjdG9yLnJi
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDZiNzY2OGQ0MDRjM2M0MDk2ZDk4NGI0
NGRjMWYwMGRlMzdmM2E0OGMuLjU2OTA5NjU0OWNmYzFkODc0ZGQyZjYwMGE4MzcyOTQ3Y2NiNmQ3
NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMjUwLDggKzEyNTAsNiBAQAog
CQk3MDlGQjg2QzFBRTMzNUM2MDAzOUQwNjkgLyogV2Vha1NldFByb3RvdHlwZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzA5RkI4NjYxQUUzMzVDNjAw
MzlEMDY5IC8qIFdlYWtTZXRQcm90b3R5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk3MEIwQTlEMTFBOUI2NjQ2MDAwMTMwNkEgLyogUnVudGlt
ZUZsYWdzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
MEIwQTlEMDFBOUI2NjIwMDAwMTMwNkEgLyogUnVudGltZUZsYWdzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzBCNzkxOTExQzAyNEExMzAwMjQ4
MUUyIC8qIFNvdXJjZUNvZGVLZXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDcwQjc5MThFMUMwMjQ0QzkwMDI0ODFFMiAvKiBTb3VyY2VDb2RlS2V5Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNzBCNzkx
OTIxQzAyNEEyMzAwMjQ4MUUyIC8qIEdlbmVyYXRvckZyYW1lLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwQjc5MTgzMUMwMjQ0MzIwMDI0ODFFMiAv
KiBHZW5lcmF0b3JGcmFtZS5jcHAgKi87IH07Ci0JCTcwQjc5MTkzMUMwMjRBMjgwMDI0ODFFMiAv
KiBHZW5lcmF0b3JGcmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNzBCNzkxODQxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZyYW1lLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzBCNzkxOTQx
QzAyNEEyODAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBCNzkxODUxQzAyNDQz
MjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwICovOyB9OwogCQk3
MEI3OTE5NTFDMDI0QTI4MDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBCNzkxODYx
QzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MEI3OTE5NjFDMDI0
QTI4MDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBCNzkxODcxQzAyNDQzMjAwMjQ4
MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcCAqLzsgfTsKQEAgLTIwMjcsNiAr
MjAyNSwxMSBAQAogCQlFMThFM0E1OTBERjkyNzhDMDBEOTBCMzQgLyogVk0uY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTE4RTNBNTcwREY5Mjc4QzAw
RDkwQjM0IC8qIFZNLmNwcCAqLzsgfTsKIAkJRTMxOENCQzAxQjhBRUY1MTAwQTI5MjlEIC8qIEpT
TW9kdWxlTmFtZXNwYWNlT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEUzMThDQkJFMUI4QUVGNTEwMEEyOTI5RCAvKiBKU01vZHVsZU5hbWVz
cGFjZU9iamVjdC5jcHAgKi87IH07CiAJCUUzMThDQkMxMUI4QUVGNTEwMEEyOTI5RCAvKiBKU01v
ZHVsZU5hbWVzcGFjZU9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTMxOENCQkYxQjhBRUY1MTAwQTI5MjlEIC8qIEpTTW9kdWxlTmFtZXNwYWNl
T2JqZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJRTMyOERBRTcxRDM4RDAwNDAwMUEyNTI5IC8qIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9u
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzRDI2
NDI2MUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHAgKi87
IH07CisJCUUzMjhEQUU4MUQzOEQwMDUwMDFBMjUyOSAvKiBCeXRlY29kZUdlbmVyYXRvcmlmaWNh
dGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNE
MjY0MjcxRDM4QzA0MjAwMEJFMTc0IC8qIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTMyOERBRTkx
RDM4RDAwNTAwMUEyNTI5IC8qIEJ5dGVjb2RlR3JhcGguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzRDI2NDI4MUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRl
Y29kZUdyYXBoLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJRTMyOERBRUExRDM4RDAwNTAwMUEyNTI5IC8qIEJ5dGVjb2RlTW9kaWZpY2F0aW9uU2V0
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzRDI2
NDI5MUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRlY29kZU1vZGlmaWNhdGlvblNldC5jcHAgKi87IH07
CisJCUUzMjhEQUVCMUQzOEQwMDUwMDFBMjUyOSAvKiBCeXRlY29kZU1vZGlmaWNhdGlvblNldC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNEMjY0MkEx
RDM4QzA0MjAwMEJFMTc0IC8qIEJ5dGVjb2RlTW9kaWZpY2F0aW9uU2V0LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTMzNjM3QTUxQjYzMjIwMjAw
RUUwODQwIC8qIFJlZmxlY3RPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTMzNjM3QTMxQjYzMjIwMjAwRUUwODQwIC8qIFJlZmxlY3RPYmpl
Y3QuY3BwICovOyB9OwogCQlFMzM2MzdBNjFCNjMyMjAyMDBFRTA4NDAgLyogUmVmbGVjdE9iamVj
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMzNjM3
QTQxQjYzMjIwMjAwRUUwODQwIC8qIFJlZmxlY3RPYmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzNCM0UyNjFCN0FCRDc1MDA0OERCMkUg
LyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0Lmx1dC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMzQjNFMjUxQjdBQkQ3NTAwNDhEQjJFIC8q
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5sdXQuaCAqLzsgfTsKQEAgLTIwNTEsNiAr
MjA1NCw3IEBACiAJCUUzNzk0RTc1MUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFseXplci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzc5NEU3
MzFCNzdFQjk3MDA1NTQzQUUgLyogTW9kdWxlQW5hbHl6ZXIuY3BwICovOyB9OwogCQlFMzc5NEU3
NjFCNzdFQjk3MDA1NTQzQUUgLyogTW9kdWxlQW5hbHl6ZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNzk0RTc0MUI3N0VCOTcwMDU1NDNBRSAvKiBN
b2R1bGVBbmFseXplci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCUUzOTYzQ0VFMUI3M0Y3NTAwMEVCNENFNSAvKiBOb2Rlc0FuYWx5emVNb2R1bGUu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5NjND
RUMxQjczRjc1MDAwRUI0Q0U1IC8qIE5vZGVzQW5hbHl6ZU1vZHVsZS5jcHAgKi87IH07CisJCUUz
OUQ0NUY1MUQzOTAwNTYwMEIzQjM3NyAvKiBJbnRlcnByZXRlcklubGluZXMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOUQ5RDg0MUQzOTAwMDYwMDY2
NzI4MiAvKiBJbnRlcnByZXRlcklubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzlEQTRBNjFCN0U4QjdDMDA4NEYzM0EgLyogSlNNb2R1
bGVSZWNvcmQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTM5REE0QTQxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmNwcCAqLzsgfTsK
IAkJRTM5REE0QTcxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzlEQTRBNTFCN0U4QjdDMDA4
NEYzM0EgLyogSlNNb2R1bGVSZWNvcmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQlFM0QyMzlDODFCODI5QzFDMDBCQkVGNjcgLyogSlNNb2R1bGVF
bnZpcm9ubWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFM0QyMzlDNjFCODI5QzFDMDBCQkVGNjcgLyogSlNNb2R1bGVFbnZpcm9ubWVudC5jcHAg
Ki87IH07CkBAIC0zNDQ4LDggKzM0NTIsNiBAQAogCQk3MDlGQjg2NTFBRTMzNUM2MDAzOUQwNjkg
LyogV2Vha1NldFByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBXZWFrU2V0UHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NzA5RkI4NjYxQUUzMzVDNjAwMzlEMDY5IC8qIFdlYWtTZXRQcm90b3R5cGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vha1NldFByb3RvdHlwZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3MEIwQTlEMDFBOUI2NjIwMDAwMTMwNkEgLyogUnVudGltZUZsYWdz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJ1bnRpbWVGbGFncy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3MEI3OTE4MzFDMDI0NDMyMDAyNDgxRTIgLyogR2Vu
ZXJhdG9yRnJhbWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR2Vu
ZXJhdG9yRnJhbWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3MEI3OTE4NDFD
MDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnJhbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gR2VuZXJhdG9yRnJhbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNzBCNzkxODUxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0
b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR2VuZXJhdG9yRnVu
Y3Rpb25Db25zdHJ1Y3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcwQjc5
MTg2MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0
b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzBCNzkxODcxQzAyNDQzMjAwMjQ4
MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQyOTIsMTAgKzQyOTQsMTYgQEAKIAkJRTM3OTRFNzMx
Qjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IE1vZHVsZUFuYWx5emVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRTM3OTRFNzQxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vZHVsZUFuYWx5emVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOTYzQ0VDMUI3M0Y3NTAwMEVCNENFNSAvKiBOb2Rl
c0FuYWx5emVNb2R1bGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
Tm9kZXNBbmFseXplTW9kdWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM5
RDlEODQxRDM5MDAwNjAwNjY3MjgyIC8qIEludGVycHJldGVySW5saW5lcy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRlcnByZXRlcklubGluZXMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRTM5REE0QTQxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVj
b3JkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTW9kdWxlUmVj
b3JkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM5REE0QTUxQjdFOEI3QzAw
ODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEpTTW9kdWxlUmVjb3JkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzRDIz
OUM2MUI4MjlDMUMwMEJCRUY2NyAvKiBKU01vZHVsZUVudmlyb25tZW50LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTW9kdWxlRW52aXJvbm1lbnQuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0QyMzlDNzFCODI5QzFDMDBCQkVGNjcgLyogSlNN
b2R1bGVFbnZpcm9ubWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU01v
ZHVsZUVudmlyb25tZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzRDI2NDI2
MUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlv
bi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzRDI2NDI3MUQzOEMwNDIwMDBC
RTE3NCAvKiBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlFM0QyNjQyODFEMzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNvZGVHcmFw
aC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCeXRlY29kZUdyYXBoLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzRDI2NDI5MUQzOEMwNDIwMDBCRTE3NCAvKiBC
eXRlY29kZU1vZGlmaWNhdGlvblNldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBCeXRlY29kZU1vZGlmaWNhdGlvblNldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUUzRDI2NDJBMUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRlY29kZU1vZGlmaWNhdGlv
blNldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCeXRlY29kZU1vZGlmaWNh
dGlvblNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0VGODg3MjFCNjZERjIz
MDAzRjI2Q0IgLyogSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNFRjg4NzMxQjY2REYyMzAwM0YyNkNCIC8qIEpTUHJvcGVy
dHlOYW1lSXRlcmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNQcm9w
ZXJ0eU5hbWVJdGVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNDlEQzE0
OTEyRUYyNjFBMDAxODRBMUYgLyogU291cmNlUHJvdmlkZXJDYWNoZUl0ZW0uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU291cmNlUHJvdmlkZXJDYWNoZUl0ZW0uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUwMTEsNiArNTAxOSw3IEBACiAJCTE0MjlENzdBMEVE
MjBENzMwMEI4OTYxOSAvKiBpbnRlcnByZXRlciAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwog
CQkJY2hpbGRyZW4gPSAoCisJCQkJRTM5RDlEODQxRDM5MDAwNjAwNjY3MjgyIC8qIEludGVycHJl
dGVySW5saW5lcy5oICovLAogCQkJCTBGNTVGMEYxMTREMTA2MzYwMEFDNzY0OSAvKiBBYnN0cmFj
dFBDLmNwcCAqLywKIAkJCQkwRjU1RjBGMjE0RDEwNjM2MDBBQzc2NDkgLyogQWJzdHJhY3RQQy5o
ICovLAogCQkJCTE0MjlEODVCMEVEMjE4RTkwMEI4OTYxOSAvKiBDTG9vcFN0YWNrLmNwcCAqLywK
QEAgLTU2ODIsOCArNTY5MSw2IEBACiAJCQkJRjY5MkE4NUQwMjU1NTk3RDAxRkY2MEY3IC8qIEZ1
bmN0aW9uUHJvdG90eXBlLmggKi8sCiAJCQkJNjJEMkQzOEQxQURGMTAzRjAwMDIwNkMxIC8qIEZ1
bmN0aW9uUmFyZURhdGEuY3BwICovLAogCQkJCTYyRDJEMzhFMUFERjEwM0YwMDAyMDZDMSAvKiBG
dW5jdGlvblJhcmVEYXRhLmggKi8sCi0JCQkJNzBCNzkxODMxQzAyNDQzMjAwMjQ4MUUyIC8qIEdl
bmVyYXRvckZyYW1lLmNwcCAqLywKLQkJCQk3MEI3OTE4NDFDMDI0NDMyMDAyNDgxRTIgLyogR2Vu
ZXJhdG9yRnJhbWUuaCAqLywKIAkJCQk3MEI3OTE4NTFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJh
dG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAgKi8sCiAJCQkJNzBCNzkxODYxQzAyNDQzMjAwMjQ4
MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaCAqLywKIAkJCQk3MEI3OTE4NzFD
MDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3BwICovLApAQCAt
NjU2NSw2ICs2NTcyLDExIEBACiAJCTk2OUEwNzhGMEVEMUQzQUUwMEYxRjY4MSAvKiBieXRlY29k
ZSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJRTNEMjY0
MjYxRDM4QzA0MjAwMEJFMTc0IC8qIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcCAqLywK
KwkJCQlFM0QyNjQyNzFEMzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRp
b24uaCAqLywKKwkJCQlFM0QyNjQyODFEMzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNvZGVHcmFwaC5o
ICovLAorCQkJCUUzRDI2NDI5MUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRlY29kZU1vZGlmaWNhdGlv
blNldC5jcHAgKi8sCisJCQkJRTNEMjY0MkExRDM4QzA0MjAwMEJFMTc0IC8qIEJ5dGVjb2RlTW9k
aWZpY2F0aW9uU2V0LmggKi8sCiAJCQkJNTM3MEI0RjMxQkYyNUVBMjAwNUM0MEZDIC8qIEFkYXB0
aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2UuY3BwICovLAogCQkJCTUzNzBC
NEY0MUJGMjVFQTIwMDVDNDBGQyAvKiBBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNo
cG9pbnRCYXNlLmggKi8sCiAJCQkJMEY4MzM1QjQxNjM5QzFFMzAwMTQ0M0I1IC8qIEFycmF5QWxs
b2NhdGlvblByb2ZpbGUuY3BwICovLApAQCAtNzExOCw2ICs3MTMwLDcgQEAKIAkJCQkwRkVDODUy
RDFCREFDREFDMDA4MEZGNzQgLyogQjNQcm9jZWR1cmVJbmxpbmVzLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRkVDODVCRDFCRTE0NjJGMDA4MEZGNzQgLyogQjNSZWR1Y2VTdHJlbmd0aC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEZFQzg1MzExQkRBQ0RBQzAwODBGRjc0IC8qIEIzU3RhY2ttYXBTcGVj
aWFsLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzI4REFFODFEMzhEMDA1MDAxQTI1MjkgLyogQnl0
ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUM4NTM1MUJE
QUNEQUMwMDgwRkY3NCAvKiBCM1Nsb3RCYXNlVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
RUM4NTM2MUJEQUNEQUMwMDgwRkY3NCAvKiBCM1N1Y2Nlc3NvckNvbGxlY3Rpb24uaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGRUM4NTM4MUJEQUNEQUMwMDgwRkY3NCAvKiBCM1N3aXRjaENhc2UuaCBp
biBIZWFkZXJzICovLApAQCAtNzM4MCw3ICs3MzkzLDYgQEAKIAkJCQlBNzM3ODEwRTE3OTlFQTJF
MDA4MTc1MzMgLyogREZHTmF0dXJhbExvb3BzLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkVDQTNF
QTEzMkRFRjFDMDAyQjJBRDcgLyogREZHTm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGQjky
MUIxNkQwMkYwMTAwNTVBNURCIC8qIERGR05vZGVBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovLAot
CQkJCTcwQjc5MTkzMUMwMjRBMjgwMDI0ODFFMiAvKiBHZW5lcmF0b3JGcmFtZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEZBNTgxQkIxNTBFOTUzMDAwQjlBMkQ5IC8qIERGR05vZGVGbGFncy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEYzMDBCNzgxOEFCMDUxMTAwQTZENzJFIC8qIERGR05vZGVPcmln
aW4uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQTU4MUJDMTUwRTk1MzAwMEI5QTJEOSAvKiBERkdO
b2RlVHlwZS5oIGluIEhlYWRlcnMgKi8sCkBAIC03Mzk1LDYgKzc0MDcsNyBAQAogCQkJCTBGRDhB
MzI2MTdENTFGNTcwMENBMkM0MCAvKiBERkdPU1JFbnRyeXBvaW50Q3JlYXRpb25QaGFzZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEZDMDk3NkExNDY4QTZGNzAwQ0YyNDQyIC8qIERGR09TUkV4aXQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjM1QkVDMTcxNzhFNzMwMDY5MEM3RiAvKiBERkdPU1JF
eGl0QmFzZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM5RDQ1RjUxRDM5MDA1NjAwQjNCMzc3IC8q
IEludGVycHJldGVySW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGQjkyMUMxNkQwMkYx
MTAwNTVBNURCIC8qIERGR09TUkV4aXRDb21waWxhdGlvbkluZm8uaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGQzA5NzcxMTQ2OTNBRjUwMENGMjQ0MiAvKiBERkdPU1JFeGl0Q29tcGlsZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGNzAyNUFBMTcxNEIwRkMwMDM4MkMwRSAvKiBERkdPU1JFeGl0Q29t
cGlsZXJDb21tb24uaCBpbiBIZWFkZXJzICovLApAQCAtNzY1NCw2ICs3NjY3LDcgQEAKIAkJCQlF
MzNCM0UyNjFCN0FCRDc1MDA0OERCMkUgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0
Lmx1dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTUzMjQzOEMxODU2ODMzNTAwMkVENjkyIC8qIElu
c3BlY3RvclByb3RvY29sT2JqZWN0cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU1RDkzQUMxODUx
NEY3OTAwNDAwREVEIC8qIEluc3BlY3RvclByb3RvY29sVHlwZXMuaCBpbiBIZWFkZXJzICovLAor
CQkJCUUzMjhEQUVCMUQzOEQwMDUwMDFBMjUyOSAvKiBCeXRlY29kZU1vZGlmaWNhdGlvblNldC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQTUwRTRCNjIxODgwOURENTAwNjhBNDZEIC8qIEluc3BlY3Rv
clJ1bnRpbWVBZ2VudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU5M0NGODMxODQwMzc3MTAwQkZD
RTI3IC8qIEluc3BlY3RvclZhbHVlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTY5QTA3OTkwRUQx
RDNBRTAwRjFGNjgxIC8qIEluc3RydWN0aW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTc3ODIsNiAr
Nzc5Niw3IEBACiAJCQkJRTMzRjUwODExQjg0MjlBNDAwNDEzODU2IC8qIEpTSW50ZXJuYWxQcm9t
aXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjYxODMyQTFDNDVCRjA3MDA3MjQ1MEIgLyogQWly
Q0NhbGxpbmdDb252ZW50aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMzNGNTA3OTFCODQyMjU3
MDA0MTM4NTYgLyogSlNJbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8s
CisJCQkJRTMyOERBRTkxRDM4RDAwNTAwMUEyNTI5IC8qIEJ5dGVjb2RlR3JhcGguaCBpbiBIZWFk
ZXJzICovLAogCQkJCUUzM0Y1MDg3MUI4NDQ5RUYwMDQxMzg1NiAvKiBKU0ludGVybmFsUHJvbWlz
ZUNvbnN0cnVjdG9yLmx1dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTMzRjUwODUxQjg0MzdBMDAw
NDEzODU2IC8qIEpTSW50ZXJuYWxQcm9taXNlRGVmZXJyZWQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUUzM0Y1MDc1MUI4NDIxQzAwMDQxMzg1NiAvKiBKU0ludGVybmFsUHJvbWlzZVByb3RvdHlwZS5o
IGluIEhlYWRlcnMgKi8sCkBAIC04NzIzLDYgKzg3MzgsNyBAQAogCQkJCTE0N0YzOUJEMTA3RUMz
NzYwMDQyN0E0OCAvKiBBcmdMaXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNzQzQkFBMTZC
ODgyNDkwMDlGOTI3NyAvKiBBUk02NERpc2Fzc2VtYmxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk4NkQzQjJDMzEwMTU2QkRFMDAyODY1RTcgLyogQVJNQXNzZW1ibGVyLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCUUzMjhEQUU3MUQzOEQwMDQwMDFBMjUyOSAvKiBCeXRlY29kZUdlbmVyYXRvcmlm
aWNhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2NUMwMjg1MDE3MTc5NUUyMDAzNTFFMzUg
LyogQVJNdjdEaXNhc3NlbWJsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNjVDMDI4NUMxNzE3
OTY2ODAwMzUxRTM1IC8qIEFSTXY3RE9wY29kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjgz
MzVCNzE2MzlDMUU2MDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAgaW4gU291
cmNlcyAqLywKQEAgLTkwNTcsNiArOTA3Myw3IEBACiAJCQkJMEYyNUYxQjExODE2MzVGMzAwNTIy
RjM5IC8qIEZUTFNsb3dQYXRoQ2FsbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjMzOERGMTFC
RTkzQUQxMDAxM0M4OEYgLyogQjNTdGFja21hcFZhbHVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTBGMjVGMUIzMTgxNjM1RjMwMDUyMkYzOSAvKiBGVExTbG93UGF0aENhbGxLZXkuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJRTMyOERBRUExRDM4RDAwNTAwMUEyNTI5IC8qIEJ5dGVjb2RlTW9kaWZp
Y2F0aW9uU2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQzMTlEQTAzMUMxQkU0MEEwMDFEMjYw
QiAvKiBCM0xvd2VyTWFjcm9zQWZ0ZXJPcHRpbWl6YXRpb25zLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTBGRUEwQTE2MTcwNkJCOTAwMEJCNzIyQyAvKiBGVExTdGF0ZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwRjIzNUJFMTE3MTc4RTFDMDA2OTBDN0YgLyogRlRMVGh1bmtzLmNwcCBpbiBTb3Vy
Y2VzICovLApAQCAtOTQ2MCw3ICs5NDc3LDYgQEAKIAkJCQk3OUVFMEJGRjFCNEFGQjg1MDAwMzg1
QzkgLyogVmFyaWFibGVFbnZpcm9ubWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjZDNzM1
MDFBQzlGOTlGMDBCRTE2ODIgLyogVmFyaWFibGVXcml0ZUZpcmVEZXRhaWwuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMEZFMDUwMkMxQUE5MDk1NjAwRDMzQjMzIC8qIFZhck9mZnNldC5jcHAgaW4g
U291cmNlcyAqLywKLQkJCQk3MEI3OTE5MjFDMDI0QTIzMDAyNDgxRTIgLyogR2VuZXJhdG9yRnJh
bWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyMEMyNTkxQTgwMTNBQjAwREEzMjI5IC8qIFZp
cnR1YWxSZWdpc3Rlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMThFM0E1OTBERjkyNzhDMDBE
OTBCMzQgLyogVk0uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkU1OTMyQTcxODNDNUEyNjAwQTFF
Q0NDIC8qIFZNRW50cnlTY29wZS5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9HZW5lcmF0b3JQcm90b3R5cGUuanMgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvR2VuZXJhdG9yUHJvdG90eXBlLmpzCmluZGV4IDNjMTQw
Njg3ZGZjN2UwMGVmZTkxYWU4MGIyYWM2NzZmYTliZjQ4ZjQuLjQ5OWRiZDM5MmU4MzEzZGNkZDg2
ZWM4YzE2MDU2OWQ3ZDZmNTQ5YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
dWlsdGlucy9HZW5lcmF0b3JQcm90b3R5cGUuanMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J1aWx0aW5zL0dlbmVyYXRvclByb3RvdHlwZS5qcwpAQCAtNTEsNyArNTEsNyBAQCBmdW5jdGlv
biBnZW5lcmF0b3JSZXN1bWUoZ2VuZXJhdG9yLCBzZW50VmFsdWUsIHJlc3VtZU1vZGUpCiAgICAg
fSBlbHNlIHsKICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgIGdlbmVyYXRvci5AZ2VuZXJhdG9y
U3RhdGUgPSBAR2VuZXJhdG9yU3RhdGVFeGVjdXRpbmc7Ci0gICAgICAgICAgICB2YWx1ZSA9IGdl
bmVyYXRvci5AZ2VuZXJhdG9yTmV4dC5AY2FsbChnZW5lcmF0b3IuQGdlbmVyYXRvclRoaXMsIGdl
bmVyYXRvciwgc3RhdGUsIHNlbnRWYWx1ZSwgcmVzdW1lTW9kZSk7CisgICAgICAgICAgICB2YWx1
ZSA9IGdlbmVyYXRvci5AZ2VuZXJhdG9yTmV4dC5AY2FsbChnZW5lcmF0b3IuQGdlbmVyYXRvclRo
aXMsIGdlbmVyYXRvciwgc3RhdGUsIHNlbnRWYWx1ZSwgcmVzdW1lTW9kZSwgZ2VuZXJhdG9yLkBn
ZW5lcmF0b3JGcmFtZSk7CiAgICAgICAgICAgICBpZiAoZ2VuZXJhdG9yLkBnZW5lcmF0b3JTdGF0
ZSA9PT0gQEdlbmVyYXRvclN0YXRlRXhlY3V0aW5nKSB7CiAgICAgICAgICAgICAgICAgZ2VuZXJh
dG9yLkBnZW5lcmF0b3JTdGF0ZSA9IEBHZW5lcmF0b3JTdGF0ZUNvbXBsZXRlZDsKICAgICAgICAg
ICAgICAgICBkb25lID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5jcHAKaW5kZXggN2YxN2MwZWYxMGI0MzNmYWM4ZjU4
Y2IzYjljYTVkNGQwMTViYmEwOC4uNjI1NGY5MDZiMmJkOTA0ZDFkOTNmYTkwMjRjYzkzYTkwNzQ2
OGI1ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
QmFzaWNCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVj
b2RlQmFzaWNCbG9jay5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJCeXRlY29kZUJh
c2ljQmxvY2suaCIKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkludGVycHJl
dGVySW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJQcmVjaXNl
SnVtcFRhcmdldHMuaCIKIApAQCAtMTA1LDE1ICsxMDYsMjEgQEAgc3RhdGljIGJvb2wgaXNKdW1w
VGFyZ2V0KE9wY29kZUlEIG9wY29kZUlELCBjb25zdCBWZWN0b3I8dW5zaWduZWQsIDMyPiYganVt
cFRhcmcKICAgICByZXR1cm4gc3RkOjpiaW5hcnlfc2VhcmNoKGp1bXBUYXJnZXRzLmJlZ2luKCks
IGp1bXBUYXJnZXRzLmVuZCgpLCBieXRlY29kZU9mZnNldCk7CiB9CiAKLXN0YXRpYyB2b2lkIGxp
bmtCbG9ja3MoQnl0ZWNvZGVCYXNpY0Jsb2NrKiBwcmVkZWNlc3NvciwgQnl0ZWNvZGVCYXNpY0Js
b2NrKiBzdWNjZXNzb3IpCi17Ci0gICAgcHJlZGVjZXNzb3ItPmFkZFN1Y2Nlc3NvcihzdWNjZXNz
b3IpOwotfQotCi12b2lkIGNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzKENvZGVCbG9jayogY29k
ZUJsb2NrLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+JiBiYXNp
Y0Jsb2NrcykKK3RlbXBsYXRlPHR5cGVuYW1lIEJsb2NrLCB0eXBlbmFtZSBJbnN0cnVjdGlvbj4K
K3ZvaWQgQnl0ZWNvZGVCYXNpY0Jsb2NrOjpjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2Nrc0ludGVy
bmFsKEJsb2NrKiBjb2RlQmxvY2ssIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5z
aWduZWQgaW5zdHJ1Y3Rpb25Db3VudCwgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJh
c2ljQmxvY2s+PiYgYmFzaWNCbG9ja3MpCiB7CiAgICAgVmVjdG9yPHVuc2lnbmVkLCAzMj4ganVt
cFRhcmdldHM7Ci0gICAgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhjb2RlQmxvY2ssIGp1bXBU
YXJnZXRzKTsKKyAgICBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKGNvZGVCbG9jaywgaW5zdHJ1
Y3Rpb25zQmVnaW4sIGluc3RydWN0aW9uQ291bnQsIGp1bXBUYXJnZXRzKTsKKworICAgIGF1dG8g
YXBwZW5kQmxvY2sgPSBbJl0gKHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+JiYg
YmxvY2spIHsKKyAgICAgICAgYmxvY2stPm1faW5kZXggPSBiYXNpY0Jsb2Nrcy5zaXplKCk7Cisg
ICAgICAgIGJhc2ljQmxvY2tzLmFwcGVuZChXVEZNb3ZlKGJsb2NrKSk7CisgICAgfTsKKworICAg
IGF1dG8gbGlua0Jsb2NrcyA9IFsmXSAoQnl0ZWNvZGVCYXNpY0Jsb2NrKiBwcmVkZWNlc3Nvciwg
Qnl0ZWNvZGVCYXNpY0Jsb2NrKiBzdWNjZXNzb3IpIHsKKyAgICAgICAgcHJlZGVjZXNzb3ItPmFk
ZFN1Y2Nlc3NvcihzdWNjZXNzb3IpOworICAgICAgICBzdWNjZXNzb3ItPmFkZFByZWRlY2Vzc29y
KHByZWRlY2Vzc29yKTsKKyAgICB9OwogCiAgICAgLy8gQ3JlYXRlIHRoZSBlbnRyeSBhbmQgZXhp
dCBiYXNpYyBibG9ja3MuCiAgICAgYmFzaWNCbG9ja3MucmVzZXJ2ZUNhcGFjaXR5KGp1bXBUYXJn
ZXRzLnNpemUoKSArIDIpOwpAQCAtMTIyLDE5ICsxMjksMTcgQEAgdm9pZCBjb21wdXRlQnl0ZWNv
ZGVCYXNpY0Jsb2NrcyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0
cjxCeXQKICAgICBhdXRvIGZpcnN0QmxvY2sgPSBzdGQ6Om1ha2VfdW5pcXVlPEJ5dGVjb2RlQmFz
aWNCbG9jaz4oMCwgMCk7CiAgICAgbGlua0Jsb2NrcyhlbnRyeS5nZXQoKSwgZmlyc3RCbG9jay5n
ZXQoKSk7CiAKLSAgICBiYXNpY0Jsb2Nrcy5hcHBlbmQoV1RGTW92ZShlbnRyeSkpOworICAgIGFw
cGVuZEJsb2NrKFdURk1vdmUoZW50cnkpKTsKICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGN1cnJl
bnQgPSBmaXJzdEJsb2NrLmdldCgpOwotICAgIGJhc2ljQmxvY2tzLmFwcGVuZChXVEZNb3ZlKGZp
cnN0QmxvY2spKTsKKyAgICBhcHBlbmRCbG9jayhXVEZNb3ZlKGZpcnN0QmxvY2spKTsKIAogICAg
IGF1dG8gZXhpdCA9IHN0ZDo6bWFrZV91bmlxdWU8Qnl0ZWNvZGVCYXNpY0Jsb2NrPihCeXRlY29k
ZUJhc2ljQmxvY2s6OkV4aXRCbG9jayk7CiAKICAgICBib29sIG5leHRJbnN0cnVjdGlvbklzTGVh
ZGVyID0gZmFsc2U7CiAKICAgICBJbnRlcnByZXRlciogaW50ZXJwcmV0ZXIgPSBjb2RlQmxvY2st
PnZtKCktPmludGVycHJldGVyOwotICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiA9
IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsKLSAgICB1bnNpZ25lZCBpbnN0cnVj
dGlvbkNvdW50ID0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5zaXplKCk7CiAgICAgZm9yICh1
bnNpZ25lZCBieXRlY29kZU9mZnNldCA9IDA7IGJ5dGVjb2RlT2Zmc2V0IDwgaW5zdHJ1Y3Rpb25D
b3VudDspIHsKLSAgICAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnRlcnByZXRlci0+Z2V0T3Bj
b2RlSUQoaW5zdHJ1Y3Rpb25zQmVnaW5bYnl0ZWNvZGVPZmZzZXRdLnUub3Bjb2RlKTsKKyAgICAg
ICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rp
b25zQmVnaW5bYnl0ZWNvZGVPZmZzZXRdKTsKICAgICAgICAgdW5zaWduZWQgb3Bjb2RlTGVuZ3Ro
ID0gb3Bjb2RlTGVuZ3Roc1tvcGNvZGVJRF07CiAKICAgICAgICAgYm9vbCBjcmVhdGVkQmxvY2sg
PSBmYWxzZTsKQEAgLTE0Miw3ICsxNDcsNyBAQCB2b2lkIGNvbXB1dGVCeXRlY29kZUJhc2ljQmxv
Y2tzKENvZGVCbG9jayogY29kZUJsb2NrLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dAogICAg
ICAgICBpZiAoaXNKdW1wVGFyZ2V0KG9wY29kZUlELCBqdW1wVGFyZ2V0cywgYnl0ZWNvZGVPZmZz
ZXQpIHx8IG5leHRJbnN0cnVjdGlvbklzTGVhZGVyKSB7CiAgICAgICAgICAgICBhdXRvIG5ld0Js
b2NrID0gc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZUJhc2ljQmxvY2s+KGJ5dGVjb2RlT2Zmc2V0
LCBvcGNvZGVMZW5ndGgpOwogICAgICAgICAgICAgY3VycmVudCA9IG5ld0Jsb2NrLmdldCgpOwot
ICAgICAgICAgICAgYmFzaWNCbG9ja3MuYXBwZW5kKFdURk1vdmUobmV3QmxvY2spKTsKKyAgICAg
ICAgICAgIGFwcGVuZEJsb2NrKFdURk1vdmUobmV3QmxvY2spKTsKICAgICAgICAgICAgIGNyZWF0
ZWRCbG9jayA9IHRydWU7CiAgICAgICAgICAgICBuZXh0SW5zdHJ1Y3Rpb25Jc0xlYWRlciA9IGZh
bHNlOwogICAgICAgICAgICAgYnl0ZWNvZGVPZmZzZXQgKz0gb3Bjb2RlTGVuZ3RoOwpAQCAtMTY5
LDggKzE3NCw3IEBAIHZvaWQgY29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MoQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0CiAKICAgICAgICAgYm9vbCBmYWxs
c1Rocm91Z2ggPSB0cnVlOyAKICAgICAgICAgZm9yICh1bnNpZ25lZCBieXRlY29kZU9mZnNldCA9
IGJsb2NrLT5sZWFkZXJCeXRlY29kZU9mZnNldCgpOyBieXRlY29kZU9mZnNldCA8IGJsb2NrLT5s
ZWFkZXJCeXRlY29kZU9mZnNldCgpICsgYmxvY2stPnRvdGFsQnl0ZWNvZGVMZW5ndGgoKTspIHsK
LSAgICAgICAgICAgIGNvbnN0IEluc3RydWN0aW9uJiBjdXJyZW50SW5zdHJ1Y3Rpb24gPSBpbnN0
cnVjdGlvbnNCZWdpbltieXRlY29kZU9mZnNldF07Ci0gICAgICAgICAgICBPcGNvZGVJRCBvcGNv
ZGVJRCA9IGludGVycHJldGVyLT5nZXRPcGNvZGVJRChjdXJyZW50SW5zdHJ1Y3Rpb24udS5vcGNv
ZGUpOworICAgICAgICAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnRlcnByZXRlci0+Z2V0T3Bj
b2RlSUQoaW5zdHJ1Y3Rpb25zQmVnaW5bYnl0ZWNvZGVPZmZzZXRdKTsKICAgICAgICAgICAgIHVu
c2lnbmVkIG9wY29kZUxlbmd0aCA9IG9wY29kZUxlbmd0aHNbb3Bjb2RlSURdOwogICAgICAgICAg
ICAgLy8gSWYgd2UgZm91bmQgYSB0ZXJtaW5hbCBieXRlY29kZSwgbGluayB0byB0aGUgZXhpdCBi
bG9jay4KICAgICAgICAgICAgIGlmIChpc1Rlcm1pbmFsKG9wY29kZUlEKSkgewpAQCAtMTg1LDcg
KzE4OSw3IEBAIHZvaWQgY29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MoQ29kZUJsb2NrKiBjb2Rl
QmxvY2ssIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0CiAgICAgICAgICAgICAvLyBibG9jayBi
ZWNhdXNlIHRoZSBmaW5hbGx5IGJsb2NrIHdpbGwgY3JlYXRlIGl0cyBvd24gY2F0Y2gsIHdoaWNo
IHdpbGwgZ2VuZXJhdGUgYSBIYW5kbGVySW5mby4KICAgICAgICAgICAgIGlmIChpc1Rocm93KG9w
Y29kZUlEKSkgewogICAgICAgICAgICAgICAgIEFTU0VSVChieXRlY29kZU9mZnNldCArIG9wY29k
ZUxlbmd0aCA9PSBibG9jay0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKSArIGJsb2NrLT50b3RhbEJ5
dGVjb2RlTGVuZ3RoKCkpOwotICAgICAgICAgICAgICAgIEhhbmRsZXJJbmZvKiBoYW5kbGVyID0g
Y29kZUJsb2NrLT5oYW5kbGVyRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpOworICAg
ICAgICAgICAgICAgIGF1dG8qIGhhbmRsZXIgPSBjb2RlQmxvY2stPmhhbmRsZXJGb3JCeXRlY29k
ZU9mZnNldChieXRlY29kZU9mZnNldCk7CiAgICAgICAgICAgICAgICAgZmFsbHNUaHJvdWdoID0g
ZmFsc2U7CiAgICAgICAgICAgICAgICAgaWYgKCFoYW5kbGVyKSB7CiAgICAgICAgICAgICAgICAg
ICAgIGxpbmtCbG9ja3MoYmxvY2ssIGV4aXQuZ2V0KCkpOwpAQCAtMjA1LDcgKzIwOSw3IEBAIHZv
aWQgY29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFZlY3Rv
cjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0CiAgICAgICAgICAgICBpZiAoaXNCcmFuY2gob3Bjb2RlSUQp
KSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKGJ5dGVjb2RlT2Zmc2V0ICsgb3Bjb2RlTGVuZ3Ro
ID09IGJsb2NrLT5sZWFkZXJCeXRlY29kZU9mZnNldCgpICsgYmxvY2stPnRvdGFsQnl0ZWNvZGVM
ZW5ndGgoKSk7CiAgICAgICAgICAgICAgICAgVmVjdG9yPHVuc2lnbmVkLCAxPiBieXRlY29kZU9m
ZnNldHNKdW1wZWRUbzsKLSAgICAgICAgICAgICAgICBmaW5kSnVtcFRhcmdldHNGb3JCeXRlY29k
ZU9mZnNldChjb2RlQmxvY2ssIGJ5dGVjb2RlT2Zmc2V0LCBieXRlY29kZU9mZnNldHNKdW1wZWRU
byk7CisgICAgICAgICAgICAgICAgZmluZEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoY29k
ZUJsb2NrLCBpbnN0cnVjdGlvbnNCZWdpbiwgYnl0ZWNvZGVPZmZzZXQsIGJ5dGVjb2RlT2Zmc2V0
c0p1bXBlZFRvKTsKIAogICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBi
YXNpY0Jsb2Nrcy5zaXplKCk7IGkrKykgewogICAgICAgICAgICAgICAgICAgICBCeXRlY29kZUJh
c2ljQmxvY2sqIG90aGVyQmxvY2sgPSBiYXNpY0Jsb2Nrc1tpXS5nZXQoKTsKQEAgLTIyOSwxMCAr
MjMzLDIwIEBAIHZvaWQgY29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MoQ29kZUJsb2NrKiBjb2Rl
QmxvY2ssIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0CiAgICAgICAgIH0KICAgICB9CiAKLSAg
ICBiYXNpY0Jsb2Nrcy5hcHBlbmQoV1RGTW92ZShleGl0KSk7CisgICAgYXBwZW5kQmxvY2soV1RG
TW92ZShleGl0KSk7CiAgICAgCiAgICAgZm9yIChhdXRvJiBiYXNpY0Jsb2NrIDogYmFzaWNCbG9j
a3MpCiAgICAgICAgIGJhc2ljQmxvY2stPnNocmlua1RvRml0KCk7CiB9CiAKK3ZvaWQgQnl0ZWNv
ZGVCYXNpY0Jsb2NrOjpjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2NrcyhDb2RlQmxvY2sqIGNvZGVC
bG9jaywgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBpbnN0cnVjdGlv
bkNvdW50LCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+JiBiYXNp
Y0Jsb2NrcykKK3sKKyAgICBjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2Nrc0ludGVybmFsKGNvZGVC
bG9jaywgaW5zdHJ1Y3Rpb25zQmVnaW4sIGluc3RydWN0aW9uQ291bnQsIGJhc2ljQmxvY2tzKTsK
K30KKwordm9pZCBCeXRlY29kZUJhc2ljQmxvY2s6OmNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tz
KFVubGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFVubGlua2VkSW5zdHJ1Y3Rpb24qIGluc3Ry
dWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50LCBWZWN0b3I8c3RkOjp1bmlx
dWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+JiBiYXNpY0Jsb2NrcykKK3sKKyAgICBCeXRlY29k
ZUJhc2ljQmxvY2s6OmNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzSW50ZXJuYWwoY29kZUJsb2Nr
LCBpbnN0cnVjdGlvbnNCZWdpbiwgaW5zdHJ1Y3Rpb25Db3VudCwgYmFzaWNCbG9ja3MpOworfQor
CiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZUJhc2ljQmxvY2suaAppbmRleCBiZDdkM2FlOWJhMzQzZTFiMDcxNzllOThm
MWVlODlkYTY1YmE3ZTIwLi4xMTliZTdjNjYyMzBjOThlYTlkN2ZiMjgwOGNiZjI5NGRjMWEyYTc3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVCYXNp
Y0Jsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQmFz
aWNCbG9jay5oCkBAIC0zNSw2ICszNSw5IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgQ29k
ZUJsb2NrOworY2xhc3MgVW5saW5rZWRDb2RlQmxvY2s7CitzdHJ1Y3QgSW5zdHJ1Y3Rpb247Citz
dHJ1Y3QgVW5saW5rZWRJbnN0cnVjdGlvbjsKIAogY2xhc3MgQnl0ZWNvZGVCYXNpY0Jsb2NrIHsK
ICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTUwLDI4ICs1MywzOSBAQCBjbGFzcyBC
eXRlY29kZUJhc2ljQmxvY2sgewogICAgIHVuc2lnbmVkIGxlYWRlckJ5dGVjb2RlT2Zmc2V0KCkg
eyByZXR1cm4gbV9sZWFkZXJCeXRlY29kZU9mZnNldDsgfQogICAgIHVuc2lnbmVkIHRvdGFsQnl0
ZWNvZGVMZW5ndGgoKSB7IHJldHVybiBtX3RvdGFsQnl0ZWNvZGVMZW5ndGg7IH0KIAotICAgIFZl
Y3Rvcjx1bnNpZ25lZD4mIGJ5dGVjb2RlT2Zmc2V0cygpIHsgcmV0dXJuIG1fYnl0ZWNvZGVPZmZz
ZXRzOyB9Ci0gICAgdm9pZCBhZGRCeXRlY29kZUxlbmd0aCh1bnNpZ25lZCk7CisgICAgY29uc3Qg
VmVjdG9yPHVuc2lnbmVkPiYgYnl0ZWNvZGVPZmZzZXRzKCkgY29uc3QgeyByZXR1cm4gbV9ieXRl
Y29kZU9mZnNldHM7IH0KIAotICAgIFZlY3RvcjxCeXRlY29kZUJhc2ljQmxvY2sqPiYgc3VjY2Vz
c29ycygpIHsgcmV0dXJuIG1fc3VjY2Vzc29yczsgfQotICAgIHZvaWQgYWRkU3VjY2Vzc29yKEJ5
dGVjb2RlQmFzaWNCbG9jayogYmxvY2spIHsgbV9zdWNjZXNzb3JzLmFwcGVuZChibG9jayk7IH0K
KyAgICBjb25zdCBWZWN0b3I8Qnl0ZWNvZGVCYXNpY0Jsb2NrKj4mIHN1Y2Nlc3NvcnMoKSBjb25z
dCB7IHJldHVybiBtX3N1Y2Nlc3NvcnM7IH0KKyAgICBjb25zdCBWZWN0b3I8Qnl0ZWNvZGVCYXNp
Y0Jsb2NrKj4mIHByZWRlY2Vzc29ycygpIGNvbnN0IHsgcmV0dXJuIG1fcHJlZGVjZXNzb3JzOyB9
CiAKICAgICBGYXN0Qml0VmVjdG9yJiBpbigpIHsgcmV0dXJuIG1faW47IH0KICAgICBGYXN0Qml0
VmVjdG9yJiBvdXQoKSB7IHJldHVybiBtX291dDsgfQogCisgICAgdW5zaWduZWQgaW5kZXgoKSBj
b25zdCB7IHJldHVybiBtX2luZGV4OyB9CisKKyAgICBzdGF0aWMgdm9pZCBjb21wdXRlQnl0ZWNv
ZGVCYXNpY0Jsb2NrcyhDb2RlQmxvY2sqLCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4s
IHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQsIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNv
ZGVCYXNpY0Jsb2NrPj4mKTsKKyAgICBzdGF0aWMgdm9pZCBjb21wdXRlQnl0ZWNvZGVCYXNpY0Js
b2NrcyhVbmxpbmtlZENvZGVCbG9jayosIFVubGlua2VkSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9u
c0JlZ2luLCB1bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50LCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRy
PEJ5dGVjb2RlQmFzaWNCbG9jaz4+Jik7CisKIHByaXZhdGU6CisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgQmxvY2ssIHR5cGVuYW1lIEluc3RydWN0aW9uPiBzdGF0aWMgdm9pZCBjb21wdXRlQnl0ZWNv
ZGVCYXNpY0Jsb2Nrc0ludGVybmFsKEJsb2NrKiBjb2RlQmxvY2ssIEluc3RydWN0aW9uKiBpbnN0
cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCwgVmVjdG9yPHN0ZDo6dW5p
cXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9ja3MpOworCisgICAgdm9pZCBh
ZGRTdWNjZXNzb3IoQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaykgeyBtX3N1Y2Nlc3NvcnMuYXBw
ZW5kKGJsb2NrKTsgfQorICAgIHZvaWQgYWRkUHJlZGVjZXNzb3IoQnl0ZWNvZGVCYXNpY0Jsb2Nr
KiBibG9jaykgeyBtX3ByZWRlY2Vzc29ycy5hcHBlbmQoYmxvY2spOyB9CisKKyAgICB2b2lkIGFk
ZEJ5dGVjb2RlTGVuZ3RoKHVuc2lnbmVkKTsKKwogICAgIHVuc2lnbmVkIG1fbGVhZGVyQnl0ZWNv
ZGVPZmZzZXQ7CiAgICAgdW5zaWduZWQgbV90b3RhbEJ5dGVjb2RlTGVuZ3RoOworICAgIHVuc2ln
bmVkIG1faW5kZXg7CiAKICAgICBWZWN0b3I8dW5zaWduZWQ+IG1fYnl0ZWNvZGVPZmZzZXRzOwog
ICAgIFZlY3RvcjxCeXRlY29kZUJhc2ljQmxvY2sqPiBtX3N1Y2Nlc3NvcnM7CisgICAgVmVjdG9y
PEJ5dGVjb2RlQmFzaWNCbG9jayo+IG1fcHJlZGVjZXNzb3JzOwogCiAgICAgRmFzdEJpdFZlY3Rv
ciBtX2luOwogICAgIEZhc3RCaXRWZWN0b3IgbV9vdXQ7CiB9OwogCi12b2lkIGNvbXB1dGVCeXRl
Y29kZUJhc2ljQmxvY2tzKENvZGVCbG9jayosIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNv
ZGVCYXNpY0Jsb2NrPj4mKTsKLQogaW5saW5lIEJ5dGVjb2RlQmFzaWNCbG9jazo6Qnl0ZWNvZGVC
YXNpY0Jsb2NrKHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBsZW5ndGgpCiAgICAgOiBtX2xlYWRl
ckJ5dGVjb2RlT2Zmc2V0KHN0YXJ0KQogICAgICwgbV90b3RhbEJ5dGVjb2RlTGVuZ3RoKGxlbmd0
aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUdl
bmVyYXRvcmlmaWNhdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcwMDhmODhjZWNkNjFmOWFm
NmJkMzdjNjhiOGI3M2ZiNzAxZGE1MTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwCkBAIC0wLDAg
KzEsNjYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IFl1c3VrZSBTdXp1a2kgPHV0YXRh
bmUudGVhQGdtYWlsLmNvbT4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIkJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmgiCisKKyNpbmNsdWRlICJCeXRlY29kZUxp
dmVuZXNzQW5hbHlzaXNJbmxpbmVzLmgiCisjaW5jbHVkZSAiQnl0ZWNvZGVNb2RpZmljYXRpb25T
ZXQuaCIKKyNpbmNsdWRlICJCeXRlY29kZVVzZURlZi5oIgorI2luY2x1ZGUgIklkZW50aWZpZXJJ
bmxpbmVzLmgiCisjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVl
SW5saW5lcy5oIgorI2luY2x1ZGUgIlN0cm9uZ0lubGluZXMuaCIKKyNpbmNsdWRlICJVbmxpbmtl
ZENvZGVCbG9jay5oIgorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgorCituYW1lc3BhY2UgSlND
IHsKKworY2xhc3MgQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24geworcHVibGljOgorICAgIEJ5
dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uKFVubGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFVu
bGlua2VkQ29kZUJsb2NrOjpVbnBhY2tlZEluc3RydWN0aW9ucyYgaW5zdHJ1Y3Rpb25zLCBTeW1i
b2xUYWJsZSogZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZSwgaW50IGdlbmVyYXRvckZyYW1lU3lt
Ym9sVGFibGVJbmRleCkKKyAgICAgICAgOiBtX2dyYXBoKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb25z
KQorICAgICAgICAsIG1faW5zZXJ0aW9uU2V0KG1fZ3JhcGgpCisgICAgICAgICwgbV9nZW5lcmF0
b3JGcmFtZVN5bWJvbFRhYmxlKCpjb2RlQmxvY2stPnZtKCksIGdlbmVyYXRvckZyYW1lU3ltYm9s
VGFibGUpCisgICAgICAgICwgbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlSW5kZXgoZ2VuZXJh
dG9yRnJhbWVTeW1ib2xUYWJsZUluZGV4KQorICAgIHsKKyAgICAgICAgbV9tZXJnZUJsb2Nrcy5y
ZXNpemUobV9ncmFwaC5iYXNpY0Jsb2NrcygpLnNpemUoKSk7CisgICAgICAgIG1fc2F2ZUJsb2Nr
cy5yZXNpemUobV9ncmFwaC5iYXNpY0Jsb2NrcygpLnNpemUoKSk7CisKKyAgICAgICAgZm9yIChz
dGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiYgYmxvY2sgOiBtX2dyYXBoLmJhc2lj
QmxvY2tzKCkpIHsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQgOiBi
bG9jay0+Ynl0ZWNvZGVPZmZzZXRzKCkpIHsKKyAgICAgICAgICAgICAgICBjb25zdCBVbmxpbmtl
ZEluc3RydWN0aW9uKiBwYyA9ICZtX2dyYXBoLmluc3RydWN0aW9ucygpW2J5dGVjb2RlT2Zmc2V0
XTsKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKHBjLT51Lm9wY29kZSkgeworICAgICAgICAgICAg
ICAgIGNhc2Ugb3Bfc2F2ZTogeworICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsaXZlQ2Fs
bGVlTG9jYWxzSW5kZXggPSBwY1syXS51LmluZGV4OworICAgICAgICAgICAgICAgICAgICBpbnQg
b2Zmc2V0ID0gcGNbM10udS5vcGVyYW5kOworICAgICAgICAgICAgICAgICAgICBpZiAobGl2ZUNh
bGxlZUxvY2Fsc0luZGV4ID49IG1feWllbGRzLnNpemUoKSkKKyAgICAgICAgICAgICAgICAgICAg
ICAgIG1feWllbGRzLnJlc2l6ZShsaXZlQ2FsbGVlTG9jYWxzSW5kZXggKyAxKTsKKyAgICAgICAg
ICAgICAgICAgICAgbV95aWVsZHNbbGl2ZUNhbGxlZUxvY2Fsc0luZGV4XS5zYXZlUG9pbnQgPSBi
eXRlY29kZU9mZnNldDsKKyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbWVyZ2VQb2ludCA9
IGJ5dGVjb2RlT2Zmc2V0ICsgb2Zmc2V0OworICAgICAgICAgICAgICAgICAgICBtX3lpZWxkc1ts
aXZlQ2FsbGVlTG9jYWxzSW5kZXhdLm1lcmdlUG9pbnQgPSBtZXJnZVBvaW50OworICAgICAgICAg
ICAgICAgICAgICBtX21lcmdlQmxvY2tzLnNldChtX2dyYXBoLmZpbmRCYXNpY0Jsb2NrRm9yQnl0
ZWNvZGVPZmZzZXQobWVyZ2VQb2ludCktPmluZGV4KCkpOworICAgICAgICAgICAgICAgICAgICBt
X3NhdmVCbG9ja3Muc2V0KGJsb2NrLT5pbmRleCgpKTsKKyAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgY2FzZSBvcF9yZXN1bWU6
IHsKKyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0g
cGNbMl0udS5pbmRleDsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxpdmVDYWxsZWVMb2NhbHNJ
bmRleCA+PSBtX3lpZWxkcy5zaXplKCkpCisgICAgICAgICAgICAgICAgICAgICAgICBtX3lpZWxk
cy5yZXNpemUobGl2ZUNhbGxlZUxvY2Fsc0luZGV4ICsgMSk7CisgICAgICAgICAgICAgICAgICAg
IG1feWllbGRzW2xpdmVDYWxsZWVMb2NhbHNJbmRleF0ucmVzdW1lUG9pbnQgPSBieXRlY29kZU9m
ZnNldDsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgYm9v
bCBpc01lcmdlQmxvY2soQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaykKKyAgICB7CisgICAgICAg
IHJldHVybiBtX21lcmdlQmxvY2tzLmdldChibG9jay0+aW5kZXgoKSk7CisgICAgfQorCisgICAg
Ym9vbCBpc1NhdmVCbG9jayhCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIG1fc2F2ZUJsb2Nrcy5nZXQoYmxvY2stPmluZGV4KCkpOworICAgIH0KKworICAg
IHN0cnVjdCBTdG9yYWdlIHsKKyAgICAgICAgSWRlbnRpZmllciBpZGVudGlmaWVyOworICAgICAg
ICB1bnNpZ25lZCBpZGVudGlmaWVySW5kZXg7CisgICAgICAgIFNjb3BlT2Zmc2V0IHNjb3BlT2Zm
c2V0OworICAgIH07CisKKyAgICB2b2lkIHJ1bigpOworCisgICAgQnl0ZWNvZGVHcmFwaDxVbmxp
bmtlZENvZGVCbG9jaz4mIGdyYXBoKCkgeyByZXR1cm4gbV9ncmFwaDsgfQorCitwcml2YXRlOgor
ICAgIFN0b3JhZ2Ugc3RvcmFnZUZvckdlbmVyYXRvckxvY2FsKHVuc2lnbmVkIGluZGV4KQorICAg
IHsKKyAgICAgICAgLy8gV2UgYXNzaWduIGEgc3ltYm9sIHRvIGEgcmVnaXN0ZXIuIFRoZXJlIGlz
IG9uZS1vbi1vbmUgY29ycmVzcG9uZGluZyBiZXR3ZWVuIGEgcmVnaXN0ZXIgYW5kIGEgc3ltYm9s
LgorICAgICAgICAvLyBCeSBkb2luZyBzbywgd2UgYWxsb2NhdGUgdGhlIHNwZWNpZmljIHN0b3Jh
Z2UgdG8gc2F2ZSB0aGUgZ2l2ZW4gcmVnaXN0ZXIuCisgICAgICAgIC8vIFRoaXMgYWxsb3cgdXMg
bm90IHRvIHNhdmUgYWxsIHRoZSBsaXZlIHJlZ2lzdGVycyBldmVuIGlmIHRoZSByZWdpc3RlcnMg
YXJlIG5vdCBvdmVyd3JpdHRlbiBmcm9tIHRoZSBwcmV2aW91cyByZXN1bWluZyB0aW1lLgorICAg
ICAgICAvLyBJdCBtZWFucyB0aGF0LCB0aGUgcmVnaXN0ZXIgY2FuIGJlIHJldHJpZXZlZCBldmVu
IGlmIHRoZSBpbW1lZGlhdGUgcHJldmlvdXMgb3Bfc2F2ZSBkb2VzIG5vdCBzYXZlIGl0LgorCisg
ICAgICAgIGlmIChtX3N0b3JhZ2VzLnNpemUoKSA8PSBpbmRleCkKKyAgICAgICAgICAgIG1fc3Rv
cmFnZXMucmVzaXplKGluZGV4ICsgMSk7CisgICAgICAgIGlmIChPcHRpb25hbDxTdG9yYWdlPiBz
dG9yYWdlID0gbV9zdG9yYWdlc1tpbmRleF0pCisgICAgICAgICAgICByZXR1cm4gKnN0b3JhZ2U7
CisKKyAgICAgICAgVW5saW5rZWRDb2RlQmxvY2sqIGNvZGVCbG9jayA9IG1fZ3JhcGguY29kZUJs
b2NrKCk7CisgICAgICAgIElkZW50aWZpZXIgaWRlbnRpZmllciA9IElkZW50aWZpZXI6OmZyb21V
aWQoUHJpdmF0ZU5hbWUoKSk7CisgICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXJJbmRleCA9IGNv
ZGVCbG9jay0+bnVtYmVyT2ZJZGVudGlmaWVycygpOworICAgICAgICBjb2RlQmxvY2stPmFkZElk
ZW50aWZpZXIoaWRlbnRpZmllcik7CisgICAgICAgIFNjb3BlT2Zmc2V0IHNjb3BlT2Zmc2V0ID0g
bV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlLT50YWtlTmV4dFNjb3BlT2Zmc2V0KE5vTG9ja2lu
Z05lY2Vzc2FyeSk7CisgICAgICAgIG1fZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZS0+c2V0KE5v
TG9ja2luZ05lY2Vzc2FyeSwgaWRlbnRpZmllci5pbXBsKCksIFN5bWJvbFRhYmxlRW50cnkoVmFy
T2Zmc2V0KHNjb3BlT2Zmc2V0KSkpOworCisgICAgICAgIFN0b3JhZ2Ugc3RvcmFnZSA9IHsKKyAg
ICAgICAgICAgIGlkZW50aWZpZXIsCisgICAgICAgICAgICBpZGVudGlmaWVySW5kZXgsCisgICAg
ICAgICAgICBzY29wZU9mZnNldAorICAgICAgICB9OworICAgICAgICBtX3N0b3JhZ2VzW2luZGV4
XSA9IHN0b3JhZ2U7CisgICAgICAgIHJldHVybiBzdG9yYWdlOworICAgIH0KKworICAgIHN0cnVj
dCBZaWVsZERhdGEgeworICAgICAgICBzaXplX3Qgc2F2ZVBvaW50OworICAgICAgICBzaXplX3Qg
bWVyZ2VQb2ludDsKKyAgICAgICAgc2l6ZV90IHJlc3VtZVBvaW50OworICAgICAgICBGYXN0Qml0
VmVjdG9yIGxpdmVuZXNzOworICAgICAgICBGYXN0Qml0VmVjdG9yIHJlc3VtZWQ7CisgICAgICAg
IEZhc3RCaXRWZWN0b3Igc2F2ZWQ7CisgICAgfTsKKworICAgIEJ5dGVjb2RlR3JhcGg8VW5saW5r
ZWRDb2RlQmxvY2s+IG1fZ3JhcGg7CisgICAgQnl0ZWNvZGVNb2RpZmljYXRpb25TZXQgbV9pbnNl
cnRpb25TZXQ7CisgICAgVmVjdG9yPE9wdGlvbmFsPFN0b3JhZ2U+PiBtX3N0b3JhZ2VzOworICAg
IFZlY3RvcjxZaWVsZERhdGE+IG1feWllbGRzOworICAgIEZhc3RCaXRWZWN0b3IgbV9tZXJnZUJs
b2NrczsKKyAgICBGYXN0Qml0VmVjdG9yIG1fc2F2ZUJsb2NrczsKKyAgICBTdHJvbmc8U3ltYm9s
VGFibGU+IG1fZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZTsKKyAgICBpbnQgbV9nZW5lcmF0b3JG
cmFtZVN5bWJvbFRhYmxlSW5kZXg7Cit9OworCitjbGFzcyBHZW5lcmF0b3JMaXZlbmVzc0FuYWx5
c2lzIHsKK3B1YmxpYzoKKyAgICBHZW5lcmF0b3JMaXZlbmVzc0FuYWx5c2lzKEJ5dGVjb2RlR2Vu
ZXJhdG9yaWZpY2F0aW9uJiBwYXNzKQorICAgICAgICA6IG1fZ2VuZXJhdG9yaWZpY2F0aW9uKHBh
c3MpCisgICAgeworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+CisgICAg
dm9pZCBjb21wdXRlTGl2ZW5lc3NEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoVW5saW5rZWRDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgT3Bjb2RlSUQgb3Bjb2RlSUQsIFVubGlua2VkSW5zdHJ1Y3Rpb24qIGlu
c3RydWN0aW9uLCBGYXN0Qml0VmVjdG9yJiBvdXQsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCisg
ICAgeworICAgICAgICBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9jaywgb3Bj
b2RlSUQsIGluc3RydWN0aW9uLCBmdW5jdG9yKTsKKworICAgICAgICBzd2l0Y2ggKG9wY29kZUlE
KSB7CisgICAgICAgIGNhc2Ugb3Bfc2F2ZToKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAg
ICBjYXNlIG9wX3Jlc3VtZTogeworICAgICAgICAgICAgLy8gcmVzdW1lIGRlZmluZXMgYWxsIHRo
ZSByZWdpc3RlcnMuCisgICAgICAgICAgICBvdXQuY2xlYXJBbGwoKTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgorICAg
IHZvaWQgY29tcHV0ZUxpdmVuZXNzVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KFVubGlua2VkQ29kZUJs
b2NrKiBjb2RlQmxvY2ssIE9wY29kZUlEIG9wY29kZUlELCBVbmxpbmtlZEluc3RydWN0aW9uKiBp
bnN0cnVjdGlvbiwgRmFzdEJpdFZlY3RvciYsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCisgICAg
eworICAgICAgICBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9jaywgb3Bjb2Rl
SUQsIGluc3RydWN0aW9uLCBmdW5jdG9yKTsKKworICAgICAgICBzd2l0Y2ggKG9wY29kZUlEKSB7
CisgICAgICAgIGNhc2Ugb3Bfc2F2ZToKKyAgICAgICAgY2FzZSBvcF9yZXN1bWU6IHsKKyAgICAg
ICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0
aW9uWzFdLnUub3BlcmFuZCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAg
ICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorCisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVXNlRnVuY3RvciwgdHlwZW5hbWUgRGVmRnVuY3Rvcj4KKyAg
ICB2b2lkIHN0ZXBPdmVySW5zdHJ1Y3Rpb25Gb3JMaXZlbmVzcyh1bnNpZ25lZCBieXRlY29kZU9m
ZnNldCwgRmFzdEJpdFZlY3RvciYgb3V0LCBjb25zdCBVc2VGdW5jdG9yJiB1c2UsIGNvbnN0IERl
ZkZ1bmN0b3ImIGRlZikKKyAgICB7CisgICAgICAgIEJ5dGVjb2RlR3JhcGg8VW5saW5rZWRDb2Rl
QmxvY2s+JiBncmFwaCA9IG1fZ2VuZXJhdG9yaWZpY2F0aW9uLmdyYXBoKCk7CisgICAgICAgIGF1
dG8mIGluc3RydWN0aW9ucyA9IGdyYXBoLmluc3RydWN0aW9ucygpOworICAgICAgICBVbmxpbmtl
ZEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9ICZpbnN0cnVjdGlvbnNbYnl0ZWNvZGVPZmZzZXRd
OworICAgICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGluc3RydWN0aW9uLT51Lm9wY29kZTsKKyAg
ICAgICAgVW5saW5rZWRDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGdyYXBoLmNvZGVCbG9jaygpOwor
CisgICAgICAgIGNvbXB1dGVMaXZlbmVzc0RlZnNGb3JCeXRlY29kZU9mZnNldCgKKyAgICAgICAg
ICAgIGNvZGVCbG9jaywgb3Bjb2RlSUQsIGluc3RydWN0aW9uLCBvdXQsCisgICAgICAgICAgICBb
Jl0gKFVubGlua2VkQ29kZUJsb2NrKiwgVW5saW5rZWRJbnN0cnVjdGlvbiosIE9wY29kZUlELCBp
bnQgb3BlcmFuZCkgeworICAgICAgICAgICAgICAgIGlmIChpc1ZhbGlkUmVnaXN0ZXJGb3JMaXZl
bmVzcyhvcGVyYW5kKSkKKyAgICAgICAgICAgICAgICAgICAgZGVmKFZpcnR1YWxSZWdpc3Rlcihv
cGVyYW5kKS50b0xvY2FsKCkpOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgY29tcHV0ZUxp
dmVuZXNzVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAorICAgICAgICAgICAgY29kZUJsb2NrLCBvcGNv
ZGVJRCwgaW5zdHJ1Y3Rpb24sIG91dCwKKyAgICAgICAgICAgIFsmXSAoVW5saW5rZWRDb2RlQmxv
Y2sqLCBVbmxpbmtlZEluc3RydWN0aW9uKiwgT3Bjb2RlSUQsIGludCBvcGVyYW5kKSB7CisgICAg
ICAgICAgICAgICAgaWYgKGlzVmFsaWRSZWdpc3RlckZvckxpdmVuZXNzKG9wZXJhbmQpKQorICAg
ICAgICAgICAgICAgICAgICB1c2UoVmlydHVhbFJlZ2lzdGVyKG9wZXJhbmQpLnRvTG9jYWwoKSk7
CisgICAgICAgICAgICB9KTsKKworICAgICAgICAvLyBJZiB3ZSBoYXZlIGFuIGV4Y2VwdGlvbiBo
YW5kbGVyLCB3ZSB3YW50IHRoZSBsaXZlLWluIHZhcmlhYmxlcyBvZiB0aGUKKyAgICAgICAgLy8g
ZXhjZXB0aW9uIGhhbmRsZXIgYmxvY2sgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIGxpdmUtaW4gb2Yg
dGhpcyBwYXJ0aWN1bGFyIGJ5dGVjb2RlLgorICAgICAgICBpZiAoVW5saW5rZWRIYW5kbGVySW5m
byogaGFuZGxlciA9IGNvZGVCbG9jay0+aGFuZGxlckZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2Rl
T2Zmc2V0KSkgeworICAgICAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBoYW5kbGVyQmxvY2sg
PSBncmFwaC5maW5kQmFzaWNCbG9ja1dpdGhMZWFkZXJPZmZzZXQoaGFuZGxlci0+dGFyZ2V0KTsK
KyAgICAgICAgICAgIEFTU0VSVChoYW5kbGVyQmxvY2spOworICAgICAgICAgICAgaGFuZGxlckJs
b2NrLT5pbigpLmZvckVhY2hTZXRCaXQodXNlKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZv
aWQgY29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCeXRlY29kZU9mZnNldChCeXRlY29kZUJhc2ljQmxv
Y2sqIGJsb2NrLCB1bnNpZ25lZCB0YXJnZXRPZmZzZXQsIEZhc3RCaXRWZWN0b3ImIHJlc3VsdCkK
KyAgICB7CisgICAgICAgIEFTU0VSVCghYmxvY2stPmlzRXhpdEJsb2NrKCkpOworICAgICAgICBB
U1NFUlQoIWJsb2NrLT5pc0VudHJ5QmxvY2soKSk7CisKKyAgICAgICAgRmFzdEJpdFZlY3RvciBv
dXQgPSBibG9jay0+b3V0KCk7CisKKyAgICAgICAgZm9yIChpbnQgaSA9IGJsb2NrLT5ieXRlY29k
ZU9mZnNldHMoKS5zaXplKCkgLSAxOyBpID49IDA7IGktLSkgeworICAgICAgICAgICAgdW5zaWdu
ZWQgYnl0ZWNvZGVPZmZzZXQgPSBibG9jay0+Ynl0ZWNvZGVPZmZzZXRzKClbaV07CisgICAgICAg
ICAgICBpZiAodGFyZ2V0T2Zmc2V0ID4gYnl0ZWNvZGVPZmZzZXQpCisgICAgICAgICAgICAgICAg
YnJlYWs7CisKKyAgICAgICAgICAgIHN0ZXBPdmVySW5zdHJ1Y3Rpb25Gb3JMaXZlbmVzcygKKyAg
ICAgICAgICAgICAgICBieXRlY29kZU9mZnNldCwgb3V0LAorICAgICAgICAgICAgICAgIFsmXSAo
dW5zaWduZWQgYml0SW5kZXgpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyB0aGUg
dXNlIGZ1bmN0b3IsIHNvIHdlIHNldCB0aGUgYml0LgorICAgICAgICAgICAgICAgICAgICBvdXQu
c2V0KGJpdEluZGV4KTsKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIFsmXSAo
dW5zaWduZWQgYml0SW5kZXgpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyB0aGUg
ZGVmIGZ1bmN0b3IsIHNvIHdlIGNsZWFyIHRoZSBiaXQuCisgICAgICAgICAgICAgICAgICAgIG91
dC5jbGVhcihiaXRJbmRleCk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKworICAg
ICAgICByZXN1bHQuc2V0KG91dCk7CisgICAgfQorCisgICAgdm9pZCBjb21wdXRlTG9jYWxMaXZl
bmVzc0ZvckJsb2NrKEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2spCisgICAgeworICAgICAgICBp
ZiAoYmxvY2stPmlzRXhpdEJsb2NrKCkgfHwgYmxvY2stPmlzRW50cnlCbG9jaygpKQorICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICBjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJ5dGVjb2RlT2Zm
c2V0KGJsb2NrLCBibG9jay0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKSwgYmxvY2stPmluKCkpOwor
ICAgIH0KKworICAgIEZhc3RCaXRWZWN0b3IgZ2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29kZU9mZnNl
dCh1bnNpZ25lZCBieXRlY29kZU9mZnNldCkKKyAgICB7CisgICAgICAgIEJ5dGVjb2RlQmFzaWNC
bG9jayogYmxvY2sgPSBtX2dlbmVyYXRvcmlmaWNhdGlvbi5ncmFwaCgpLmZpbmRCYXNpY0Jsb2Nr
Rm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpOworICAgICAgICBBU1NFUlQoYmxvY2sp
OworICAgICAgICBBU1NFUlQoIWJsb2NrLT5pc0VudHJ5QmxvY2soKSk7CisgICAgICAgIEFTU0VS
VCghYmxvY2stPmlzRXhpdEJsb2NrKCkpOworICAgICAgICBGYXN0Qml0VmVjdG9yIG91dDsKKyAg
ICAgICAgb3V0LnJlc2l6ZShibG9jay0+b3V0KCkubnVtQml0cygpKTsKKyAgICAgICAgY29tcHV0
ZUxvY2FsTGl2ZW5lc3NGb3JCeXRlY29kZU9mZnNldChibG9jaywgYnl0ZWNvZGVPZmZzZXQsIG91
dCk7CisgICAgICAgIHJldHVybiBvdXQ7CisgICAgfQorCisgICAgdm9pZCBydW4oKQorICAgIHsK
KyAgICAgICAgLy8gUGVyZm9ybSBtb2RpZmllZCBsaXZlbmVzcyBhbmFseXNpcyB0byBkZXRlcm1p
bmUgd2hpY2ggbG9jYWxzIGFyZSBsaXZlIGF0IHRoZSBtZXJnZSBwb2ludHMuCisgICAgICAgIC8v
IFRoaXMgcHJvZHVjZXMgdGhlIGNvbnNlcnZhdGl2ZSByZXN1bHRzIGZvciB0aGUgcXVlc3Rpb24s
ICJ3aGljaCB2YXJpYWJsZXMgc2hvdWxkIGJlIHNhdmVkIGFuZCByZXN1bWVkPyIuCisKKyAgICAg
ICAgQnl0ZWNvZGVHcmFwaDxVbmxpbmtlZENvZGVCbG9jaz4mIGdyYXBoID0gbV9nZW5lcmF0b3Jp
ZmljYXRpb24uZ3JhcGgoKTsKKyAgICAgICAgVW5saW5rZWRDb2RlQmxvY2sqIHVubGlua2VkQ29k
ZUJsb2NrID0gZ3JhcGguY29kZUJsb2NrKCk7CisgICAgICAgIHVuc2lnbmVkIG51bWJlck9mVmFy
aWFibGVzID0gdW5saW5rZWRDb2RlQmxvY2stPm1fbnVtQ2FsbGVlTG9jYWxzOworICAgICAgICBm
b3IgKHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+JiBibG9jayA6IGdyYXBoLmJh
c2ljQmxvY2tzKCkpIHsKKyAgICAgICAgICAgIGJsb2NrLT5pbigpLnJlc2l6ZShudW1iZXJPZlZh
cmlhYmxlcyk7CisgICAgICAgICAgICBibG9jay0+b3V0KCkucmVzaXplKG51bWJlck9mVmFyaWFi
bGVzKTsKKyAgICAgICAgICAgIGJsb2NrLT5pbigpLmNsZWFyQWxsKCk7CisgICAgICAgICAgICBi
bG9jay0+b3V0KCkuY2xlYXJBbGwoKTsKKyAgICAgICAgfQorCisgICAgICAgIGJvb2wgY2hhbmdl
ZDsKKyAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBsYXN0QmxvY2sgPSBncmFwaC5iYXNpY0Js
b2NrcygpLmxhc3QoKS5nZXQoKTsKKyAgICAgICAgbGFzdEJsb2NrLT5pbigpLmNsZWFyQWxsKCk7
CisgICAgICAgIGxhc3RCbG9jay0+b3V0KCkuY2xlYXJBbGwoKTsKKyAgICAgICAgRmFzdEJpdFZl
Y3RvciBuZXdPdXQ7CisgICAgICAgIG5ld091dC5yZXNpemUobGFzdEJsb2NrLT5vdXQoKS5udW1C
aXRzKCkpOworICAgICAgICBkbyB7CisgICAgICAgICAgICBjaGFuZ2VkID0gZmFsc2U7CisgICAg
ICAgICAgICBmb3IgKHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+JiBibG9jayA6
IGdyYXBoLmJhc2ljQmxvY2tzSW5SZXZlcnNlT3JkZXIoKSkgeworICAgICAgICAgICAgICAgIG5l
d091dC5jbGVhckFsbCgpOworICAgICAgICAgICAgICAgIGZvciAoQnl0ZWNvZGVCYXNpY0Jsb2Nr
KiBzdWNjZXNzb3IgOiBibG9jay0+c3VjY2Vzc29ycygpKQorICAgICAgICAgICAgICAgICAgICBu
ZXdPdXQubWVyZ2Uoc3VjY2Vzc29yLT5pbigpKTsKKyAgICAgICAgICAgICAgICBib29sIG91dERp
ZENoYW5nZSA9IGJsb2NrLT5vdXQoKS5zZXRBbmRDaGVjayhuZXdPdXQpOworICAgICAgICAgICAg
ICAgIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQmxvY2soYmxvY2suZ2V0KCkpOworICAgICAgICAg
ICAgICAgIGNoYW5nZWQgfD0gb3V0RGlkQ2hhbmdlOworICAgICAgICAgICAgfQorICAgICAgICB9
IHdoaWxlIChjaGFuZ2VkKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQnl0ZWNvZGVHZW5lcmF0
b3JpZmljYXRpb24mIG1fZ2VuZXJhdG9yaWZpY2F0aW9uOworfTsKKworY2xhc3MgUmVzdW1lZFZh
cmlhYmxlc0FuYWx5c2lzIHsKK3B1YmxpYzoKKyAgICBSZXN1bWVkVmFyaWFibGVzQW5hbHlzaXMo
Qnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24mIHBhc3MpCisgICAgICAgIDogbV9nZW5lcmF0b3Jp
ZmljYXRpb24ocGFzcykKKyAgICAgICAgLCBtX2xpdmVuZXNzQW5hbHlzaXMocGFzcykKKyAgICB7
CisgICAgfQorCisgICAgRmFzdEJpdFZlY3RvciBnZXRSZXN1bWVkVmFyaWFibGVzSW5mb0F0Qnl0
ZWNvZGVPZmZzZXQodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpCisgICAgeworICAgICAgICBCeXRl
Y29kZUJhc2ljQmxvY2sqIGJsb2NrID0gbV9nZW5lcmF0b3JpZmljYXRpb24uZ3JhcGgoKS5maW5k
QmFzaWNCbG9ja0ZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KTsKKyAgICAgICAgQVNT
RVJUKGJsb2NrKTsKKyAgICAgICAgQVNTRVJUKCFibG9jay0+aXNFbnRyeUJsb2NrKCkpOworICAg
ICAgICBBU1NFUlQoIWJsb2NrLT5pc0V4aXRCbG9jaygpKTsKKyAgICAgICAgRmFzdEJpdFZlY3Rv
ciBvdXQ7CisgICAgICAgIG91dC5yZXNpemUoYmxvY2stPm91dCgpLm51bUJpdHMoKSk7CisgICAg
ICAgIG1fbGl2ZW5lc3NBbmFseXNpcy5jb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJ5dGVjb2RlT2Zm
c2V0KGJsb2NrLCBieXRlY29kZU9mZnNldCwgb3V0KTsKKyAgICAgICAgcmV0dXJuIG91dDsKKyAg
ICB9CisKKyAgICB2b2lkIHJ1bigpCisgICAgeworICAgICAgICAvLyBUaGUgcmVzdW1lZCB2YXJp
YWJsZXMgYW5hbHlzaXMgaXMgYWxtb3N0IHRoZSBzYW1lIHRvIHRoZSBnZW5lcmF0b3JpZmljYXRp
b24ncyB1c3VhbCBsaXZlbmVzcyBhbmFseXNpcywKKyAgICAgICAgLy8gZXhjZXB0IGZvciBkcm9w
cGluZyB0aGUgZWRnZXMgYmV0d2VlbiB0aGUgc2F2ZSBwb2ludHMgYW5kIHRoZSBtZXJnZSBwb2lu
dHMuCisKKyAgICAgICAgQnl0ZWNvZGVHcmFwaDxVbmxpbmtlZENvZGVCbG9jaz4mIGdyYXBoID0g
bV9nZW5lcmF0b3JpZmljYXRpb24uZ3JhcGgoKTsKKyAgICAgICAgVW5saW5rZWRDb2RlQmxvY2sq
IHVubGlua2VkQ29kZUJsb2NrID0gZ3JhcGguY29kZUJsb2NrKCk7CisgICAgICAgIHVuc2lnbmVk
IG51bWJlck9mVmFyaWFibGVzID0gdW5saW5rZWRDb2RlQmxvY2stPm1fbnVtQ2FsbGVlTG9jYWxz
OworICAgICAgICBmb3IgKHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+JiBibG9j
ayA6IGdyYXBoLmJhc2ljQmxvY2tzKCkpIHsKKyAgICAgICAgICAgIGJsb2NrLT5pbigpLnJlc2l6
ZShudW1iZXJPZlZhcmlhYmxlcyk7CisgICAgICAgICAgICBibG9jay0+b3V0KCkucmVzaXplKG51
bWJlck9mVmFyaWFibGVzKTsKKyAgICAgICAgICAgIGJsb2NrLT5pbigpLmNsZWFyQWxsKCk7Cisg
ICAgICAgICAgICBibG9jay0+b3V0KCkuY2xlYXJBbGwoKTsKKyAgICAgICAgfQorCisgICAgICAg
IGJvb2wgY2hhbmdlZDsKKyAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBsYXN0QmxvY2sgPSBn
cmFwaC5iYXNpY0Jsb2NrcygpLmxhc3QoKS5nZXQoKTsKKyAgICAgICAgbGFzdEJsb2NrLT5pbigp
LmNsZWFyQWxsKCk7CisgICAgICAgIGxhc3RCbG9jay0+b3V0KCkuY2xlYXJBbGwoKTsKKyAgICAg
ICAgRmFzdEJpdFZlY3RvciBuZXdPdXQ7CisgICAgICAgIG5ld091dC5yZXNpemUobGFzdEJsb2Nr
LT5vdXQoKS5udW1CaXRzKCkpOworICAgICAgICBkbyB7CisgICAgICAgICAgICBjaGFuZ2VkID0g
ZmFsc2U7CisgICAgICAgICAgICBmb3IgKHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxv
Y2s+JiBibG9jayA6IGdyYXBoLmJhc2ljQmxvY2tzSW5SZXZlcnNlT3JkZXIoKSkgeworICAgICAg
ICAgICAgICAgIG5ld091dC5jbGVhckFsbCgpOworICAgICAgICAgICAgICAgIGJvb2wgc2F2ZUJs
b2NrID0gbV9nZW5lcmF0b3JpZmljYXRpb24uaXNTYXZlQmxvY2soYmxvY2suZ2V0KCkpOworICAg
ICAgICAgICAgICAgIGZvciAoQnl0ZWNvZGVCYXNpY0Jsb2NrKiBzdWNjZXNzb3IgOiBibG9jay0+
c3VjY2Vzc29ycygpKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIERvIG5vdCBoYW5kbGUgdGhl
IGVkZ2VzIGJldHdlZW4gdGhlIHNhdmUgcG9pbnRzIGFuZCB0aGUgbWVyZ2UgcG9pbnRzLgorICAg
ICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgY3VycmVudCBibG9jayBpcyB0aGUgc2F2ZSBibG9j
ayAodGhhdCBicmFuY2ggaXMgb3Bfc2F2ZSksCisgICAgICAgICAgICAgICAgICAgIC8vIGFuZCBp
ZiB0aGUgc3VjY2Vzc29yIGlzIHRoZSBibG9jayB0aGF0IHN0YXJ0cyB3aXRoIHRoZSBtZXJnZSBw
b2ludCwgd2UgZHJvcCB0aGlzIGVkZ2UuCisgICAgICAgICAgICAgICAgICAgIGlmICghKHNhdmVC
bG9jayAmJiBtX2dlbmVyYXRvcmlmaWNhdGlvbi5pc01lcmdlQmxvY2soc3VjY2Vzc29yKSkpCisg
ICAgICAgICAgICAgICAgICAgICAgICBuZXdPdXQubWVyZ2Uoc3VjY2Vzc29yLT5pbigpKTsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYm9vbCBvdXREaWRDaGFuZ2UgPSBibG9j
ay0+b3V0KCkuc2V0QW5kQ2hlY2sobmV3T3V0KTsKKyAgICAgICAgICAgICAgICBtX2xpdmVuZXNz
QW5hbHlzaXMuY29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCbG9jayhibG9jay5nZXQoKSk7CisgICAg
ICAgICAgICAgICAgY2hhbmdlZCB8PSBvdXREaWRDaGFuZ2U7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0gd2hpbGUgKGNoYW5nZWQpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBCeXRlY29kZUdl
bmVyYXRvcmlmaWNhdGlvbiYgbV9nZW5lcmF0b3JpZmljYXRpb247CisgICAgR2VuZXJhdG9yTGl2
ZW5lc3NBbmFseXNpcyBtX2xpdmVuZXNzQW5hbHlzaXM7Cit9OworCitjbGFzcyBTYXZlZFZhcmlh
Ymxlc0FuYWx5c2lzIHsKK3B1YmxpYzoKKyAgICBTYXZlZFZhcmlhYmxlc0FuYWx5c2lzKEJ5dGVj
b2RlR2VuZXJhdG9yaWZpY2F0aW9uJiBwYXNzKQorICAgICAgICA6IG1fZ2VuZXJhdG9yaWZpY2F0
aW9uKHBhc3MpCisgICAgeworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIERlZkZ1bmN0
b3I+CisgICAgdm9pZCBzdGVwT3Zlckluc3RydWN0aW9uRm9yU2F2ZWRWYXJpYWJsZXMoQnl0ZWNv
ZGVCYXNpY0Jsb2NrKiwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIEZhc3RCaXRWZWN0b3ImIGlu
LCBjb25zdCBEZWZGdW5jdG9yJiBkZWYpCisgICAgeworICAgICAgICBCeXRlY29kZUdyYXBoPFVu
bGlua2VkQ29kZUJsb2NrPiYgZ3JhcGggPSBtX2dlbmVyYXRvcmlmaWNhdGlvbi5ncmFwaCgpOwor
ICAgICAgICBhdXRvJiBpbnN0cnVjdGlvbnMgPSBncmFwaC5pbnN0cnVjdGlvbnMoKTsKKyAgICAg
ICAgVW5saW5rZWRJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSAmaW5zdHJ1Y3Rpb25zW2J5dGVj
b2RlT2Zmc2V0XTsKKyAgICAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnN0cnVjdGlvbi0+dS5v
cGNvZGU7CisgICAgICAgIFVubGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBncmFwaC5jb2Rl
QmxvY2soKTsKKworICAgICAgICAvLyBvcF9yZXN1bWUgY2xlYXJzIGFsbCB0aGUgZGVmcy4KKyAg
ICAgICAgaWYgKG9wY29kZUlEID09IG9wX3Jlc3VtZSkgeworICAgICAgICAgICAgaW4uY2xlYXJB
bGwoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGNvbXB1dGVE
ZWZzRm9yQnl0ZWNvZGVPZmZzZXQoY29kZUJsb2NrLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb24sIFsm
XSAoVW5saW5rZWRDb2RlQmxvY2sqLCBVbmxpbmtlZEluc3RydWN0aW9uKiwgT3Bjb2RlSUQsIGlu
dCBvcGVyYW5kKSB7CisgICAgICAgICAgICBpZiAoaXNWYWxpZFJlZ2lzdGVyRm9yTGl2ZW5lc3Mo
b3BlcmFuZCkpCisgICAgICAgICAgICAgICAgZGVmKFZpcnR1YWxSZWdpc3RlcihvcGVyYW5kKS50
b0xvY2FsKCkpOworICAgICAgICB9KTsKKyAgICB9CisKKyAgICBib29sIGNvbXB1dGVMb2NhbFNh
dmVkVmFyaWFibGVzRm9yQnl0ZWNvZGVPZmZzZXQoQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaywg
dW5zaWduZWQgdGFyZ2V0T2Zmc2V0LCBGYXN0Qml0VmVjdG9yJiByZXN1bHQpCisgICAgeworICAg
ICAgICBBU1NFUlQoIWJsb2NrLT5pc0V4aXRCbG9jaygpKTsKKyAgICAgICAgQVNTRVJUKCFibG9j
ay0+aXNFbnRyeUJsb2NrKCkpOworCisgICAgICAgIEZhc3RCaXRWZWN0b3IgaW4gPSBibG9jay0+
aW4oKTsKKworICAgICAgICBmb3IgKHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0IDogYmxvY2stPmJ5
dGVjb2RlT2Zmc2V0cygpKSB7CisgICAgICAgICAgICBpZiAodGFyZ2V0T2Zmc2V0IDw9IGJ5dGVj
b2RlT2Zmc2V0KQorICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBzdGVwT3Zl
ckluc3RydWN0aW9uRm9yU2F2ZWRWYXJpYWJsZXMoCisgICAgICAgICAgICAgICAgYmxvY2ssIGJ5
dGVjb2RlT2Zmc2V0LCBpbiwKKyAgICAgICAgICAgICAgICBbJl0gKHVuc2lnbmVkIGJpdEluZGV4
KSB7CisgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIGRlZiBmdW5jdG9yLCBzbyB3
ZSBzZXQgdGhlIGJpdC4KKyAgICAgICAgICAgICAgICAgICAgaW4uc2V0KGJpdEluZGV4KTsKKyAg
ICAgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiByZXN1bHQuc2V0
QW5kQ2hlY2soaW4pOworICAgIH0KKworICAgIGJvb2wgY29tcHV0ZUxvY2FsU2F2ZWRWYXJpYWJs
ZXNGb3JCbG9jayhCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrKQorICAgIHsKKyAgICAgICAgaWYg
KGJsb2NrLT5pc0V4aXRCbG9jaygpIHx8IGJsb2NrLT5pc0VudHJ5QmxvY2soKSkKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIGNvbXB1dGVMb2NhbFNhdmVkVmFyaWFi
bGVzRm9yQnl0ZWNvZGVPZmZzZXQoYmxvY2ssIGJsb2NrLT5sZWFkZXJCeXRlY29kZU9mZnNldCgp
ICsgYmxvY2stPnRvdGFsQnl0ZWNvZGVMZW5ndGgoKSwgYmxvY2stPm91dCgpKTsKKyAgICB9CisK
KyAgICBGYXN0Qml0VmVjdG9yIGdldFNhdmVkVmFyaWFibGVzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQo
dW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpCisgICAgeworICAgICAgICBCeXRlY29kZUJhc2ljQmxv
Y2sqIGJsb2NrID0gbV9nZW5lcmF0b3JpZmljYXRpb24uZ3JhcGgoKS5maW5kQmFzaWNCbG9ja0Zv
ckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KTsKKyAgICAgICAgQVNTRVJUKGJsb2NrKTsK
KyAgICAgICAgQVNTRVJUKCFibG9jay0+aXNFbnRyeUJsb2NrKCkpOworICAgICAgICBBU1NFUlQo
IWJsb2NrLT5pc0V4aXRCbG9jaygpKTsKKyAgICAgICAgRmFzdEJpdFZlY3RvciBpbjsKKyAgICAg
ICAgaW4ucmVzaXplKGJsb2NrLT5pbigpLm51bUJpdHMoKSk7CisgICAgICAgIGNvbXB1dGVMb2Nh
bFNhdmVkVmFyaWFibGVzRm9yQnl0ZWNvZGVPZmZzZXQoYmxvY2ssIGJ5dGVjb2RlT2Zmc2V0LCBp
bik7CisgICAgICAgIHJldHVybiBpbjsKKyAgICB9CisKKyAgICB2b2lkIHJ1bigpCisgICAgewor
ICAgICAgICAvLyBJZiB3ZSBzYXZlIGFsbCB0aGUgdmFyaWFibGUgdGhhdCB3aWxsIGJlIHJlc3Vt
ZWQsIGl0J3MgT0suCisgICAgICAgIC8vIEJ1dCB3ZSBjYW4gYXZvaWQgc29tZSBzYXZlZCB2YXJp
YWJsZXMgdGhhdCBhcmUgb25seSBkZWZpbmVkIGJ5IHRoZSBwcmV2aW91cyBvcF9yZXN1bWUuCisg
ICAgICAgIC8vCisgICAgICAgIC8vIEluIHRoaXMgcGhhc2UsIHdlIHBlcmZvcm0gZm9yd2FyZCBh
bmFseXNpcyB0byBleHRyYWN0IHdoaWNoIHZhcmlhYmxlcyBuZWVkIHRvIGJlIG5ld2x5IHNhdmVk
IHdoZW4gZXhlY3V0aW5nIG9wX3NhdmUuCisgICAgICAgIC8vIFdlIGNhbGN1bGF0ZSB0aGUgcmVn
aXN0ZXJzIHRoYXQgaXMgZGVmaW5lZCBpbiBub24tb3BfcmVzdW1lIGFuZCBjYW4gcmVhY2ggdG8g
dGhlIG9wX3NhdmUuCisgICAgICAgIC8vCisgICAgICAgIC8vICAgb3BfcmVzdW1lLCBkZWZpbmUg
cjEKKyAgICAgICAgLy8gICAuLi4KKyAgICAgICAgLy8gICAuLi4KKyAgICAgICAgLy8gICBuby1q
dW1wcyAmIG5vIHIxIGRlZnMuCisgICAgICAgIC8vICAgLi4uCisgICAgICAgIC8vICAgb3Bfc2F2
ZSAgIyBIZXJlLCBpdCBpcyBub3QgbmVjZXNzYXJ5IHRvIHNhdmUgcjEuCisgICAgICAgIEJ5dGVj
b2RlR3JhcGg8VW5saW5rZWRDb2RlQmxvY2s+JiBncmFwaCA9IG1fZ2VuZXJhdG9yaWZpY2F0aW9u
LmdyYXBoKCk7CisgICAgICAgIFVubGlua2VkQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jayA9
IGdyYXBoLmNvZGVCbG9jaygpOworCisgICAgICAgIC8vIFdlIGNvbnNpZGVyIHRoZSBiYXNpYyBi
bG9ja3Mgd2l0aGluIHRoZSB0cnkgcmFuZ2UgYXJlIGNvbnNpZGVyZWQgYXMgdGhlIGltcGxpY2l0
IHByZWRlY2Vzc29ycyBvZiB0aGUgaGFuZGxlcnMuCisgICAgICAgIC8vIFRoZSBkZWZzIGluIHRo
ZXNlIGJhc2ljIGJsb2NrcyBhcmUgY2FycmllZCB0byB0aGUgZXhjZXB0aW9uIGhhbmRsZXIuIEFu
ZCBpZiB0aGUgb3Bfc2F2ZSBpcyBleGVjdXRlZCBpbiB0aGUgaGFuZGxlciwKKyAgICAgICAgLy8g
Y2FycmllZCBkZWZzIHNob3VsZCBiZSBhbHNvIGNvbnNpZGVyZWQuCisgICAgICAgIC8vCisgICAg
ICAgIC8vIEhlcmUsIHdlIGFkZCB0aGUgd2hvbGUgYmFzaWMgYmxvY2tzIGFzIHRoZSBpbXBsaWNp
dCBwcmVkZWNlc3NvcnMgb2YgdGhlIGhhbmRsZXJzIGZvciBzaW1wbGljaXR5LgorICAgICAgICAv
LyBUaGlzIGlzIGEgbGl0dGxlIGJpdCBjb25zZXJ2YXRpdmU6IHRoZSB0cnkgcmFuZ2UgbWF5IG5v
dCBjb3ZlciBhbGwgdGhlIGJhc2ljIGJsb2NrLiBCdXQgc2luY2UgdGhlIG91dCBzZXQgc3RhdHVz
IGF0CisgICAgICAgIC8vIHRoZSB0YWlsIG9mIHRoZSBiYXNpYyBibG9jayBpcyBhbHdheXMgbGFy
Z2VyIHRoYW4gdGhlIG91dCBzZXQgc3RhdHVzIGluIHRoZSBtaWRkbGUgb2YgdGhlIGJhc2ljIGJs
b2NrcywgdGhpcyBkb2VzIG5vdAorICAgICAgICAvLyBmYWlsIHRvIGtlZXAgdGhlIHZhcmlhYmxl
cyB0aGF0IHNob3VsZCBiZSBzYXZlZC4KKyAgICAgICAgLy8KKyAgICAgICAgLy8gT25seSB0aGUg
ZXhjZXB0aW9uIGlzIHRoZSBvcF9yZXN1bWUgYmxvY2s6IG9wX3Jlc3VtZSBjbGVhcnMgYWxsIHRo
ZSBkZWZzLiBCdXQgc2luY2UgdGhlIHJhbmdlIGJldHdlZW4gdGhlIGp1bXAgdGFyZ2V0CisgICAg
ICAgIC8vIGZyb20gdGhlIGdsb2JhbCBkaXNwYXRjaCBhbmQgb3BfcmVzdW1lIGlzIG5ldmVyIGNv
dmVyZWQgYnkgdGhlIHRyeSByYW5nZSwgaXQgaXMgbm90IGEgcHJvYmxlbS4KKyAgICAgICAgVmVj
dG9yPE9wdGlvbmFsPEZhc3RCaXRWZWN0b3I+PiBwb3NzaWJsZVByZWRlY2Vzc29yc0ZvckhhbmRs
ZXJzOworICAgICAgICBwb3NzaWJsZVByZWRlY2Vzc29yc0ZvckhhbmRsZXJzLnJlc2l6ZShncmFw
aC5iYXNpY0Jsb2NrcygpLnNpemUoKSk7CisgICAgICAgIHsKKyAgICAgICAgICAgIGF1dG8mIGlu
c3RydWN0aW9ucyA9IGdyYXBoLmluc3RydWN0aW9ucygpOworICAgICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IHVubGlua2VkQ29kZUJsb2NrLT5udW1iZXJPZkV4Y2VwdGlvbkhhbmRs
ZXJzKCk7ICsraSkgeworICAgICAgICAgICAgICAgIGF1dG8mIGhhbmRsZXIgPSB1bmxpbmtlZENv
ZGVCbG9jay0+ZXhjZXB0aW9uSGFuZGxlcihpKTsKKworICAgICAgICAgICAgICAgIEZhc3RCaXRW
ZWN0b3IgcHJlZGVjZXNzb3JzOworICAgICAgICAgICAgICAgIHByZWRlY2Vzc29ycy5yZXNpemUo
Z3JhcGguYmFzaWNCbG9ja3MoKS5zaXplKCkpOworICAgICAgICAgICAgICAgIGZvciAodW5zaWdu
ZWQgYnl0ZWNvZGVPZmZzZXQgPSBoYW5kbGVyLnN0YXJ0OyBieXRlY29kZU9mZnNldCA8IGhhbmRs
ZXIuZW5kOykgeworICAgICAgICAgICAgICAgICAgICBVbmxpbmtlZEluc3RydWN0aW9uKiBpbnN0
cnVjdGlvbiA9ICZpbnN0cnVjdGlvbnNbYnl0ZWNvZGVPZmZzZXRdOworICAgICAgICAgICAgICAg
ICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGluc3RydWN0aW9uLT51Lm9wY29kZTsKKyAgICAgICAg
ICAgICAgICAgICAgdW5zaWduZWQgb3Bjb2RlTGVuZ3RoID0gb3Bjb2RlTGVuZ3Roc1tvcGNvZGVJ
RF07CisKKyAgICAgICAgICAgICAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBwb3NzaWJsZVBy
ZWRlY2Vzc29yID0gZ3JhcGguZmluZEJhc2ljQmxvY2tGb3JCeXRlY29kZU9mZnNldChieXRlY29k
ZU9mZnNldCk7CisgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHBvc3NpYmxlUHJl
ZGVjZXNzb3IpOworICAgICAgICAgICAgICAgICAgICBwcmVkZWNlc3NvcnMuc2V0KHBvc3NpYmxl
UHJlZGVjZXNzb3ItPmluZGV4KCkpOworCisgICAgICAgICAgICAgICAgICAgIGJ5dGVjb2RlT2Zm
c2V0ICs9IG9wY29kZUxlbmd0aDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
Qnl0ZWNvZGVCYXNpY0Jsb2NrKiBoYW5kbGVyQmxvY2sgPSBncmFwaC5maW5kQmFzaWNCbG9ja1dp
dGhMZWFkZXJPZmZzZXQoaGFuZGxlci50YXJnZXQpOworICAgICAgICAgICAgICAgIHBvc3NpYmxl
UHJlZGVjZXNzb3JzRm9ySGFuZGxlcnNbaGFuZGxlckJsb2NrLT5pbmRleCgpXSA9IFdURk1vdmUo
cHJlZGVjZXNzb3JzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHVuc2ln
bmVkIG51bWJlck9mVmFyaWFibGVzID0gdW5saW5rZWRDb2RlQmxvY2stPm1fbnVtQ2FsbGVlTG9j
YWxzOworICAgICAgICBmb3IgKHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+JiBi
bG9jayA6IGdyYXBoLmJhc2ljQmxvY2tzKCkpIHsKKyAgICAgICAgICAgIGJsb2NrLT5pbigpLnJl
c2l6ZShudW1iZXJPZlZhcmlhYmxlcyk7CisgICAgICAgICAgICBibG9jay0+b3V0KCkucmVzaXpl
KG51bWJlck9mVmFyaWFibGVzKTsKKyAgICAgICAgICAgIGJsb2NrLT5pbigpLmNsZWFyQWxsKCk7
CisgICAgICAgICAgICBibG9jay0+b3V0KCkuY2xlYXJBbGwoKTsKKyAgICAgICAgfQorCisgICAg
ICAgIGJvb2wgY2hhbmdlZDsKKyAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBmaXJzdEJsb2Nr
ID0gZ3JhcGguYmFzaWNCbG9ja3MoKS5maXJzdCgpLmdldCgpOworICAgICAgICBGYXN0Qml0VmVj
dG9yIG5ld0luOworICAgICAgICBuZXdJbi5yZXNpemUoZmlyc3RCbG9jay0+aW4oKS5udW1CaXRz
KCkpOworICAgICAgICBkbyB7CisgICAgICAgICAgICBjaGFuZ2VkID0gZmFsc2U7CisgICAgICAg
ICAgICBmb3IgKHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+JiBibG9jayA6IGdy
YXBoLmJhc2ljQmxvY2tzKCkpIHsKKyAgICAgICAgICAgICAgICBuZXdJbi5jbGVhckFsbCgpOwor
ICAgICAgICAgICAgICAgIGJvb2wgbWVyZ2VCbG9jayA9IG1fZ2VuZXJhdG9yaWZpY2F0aW9uLmlz
TWVyZ2VCbG9jayhibG9jay5nZXQoKSk7CisgICAgICAgICAgICAgICAgZm9yIChCeXRlY29kZUJh
c2ljQmxvY2sqIHByZWRlY2Vzc29yIDogYmxvY2stPnByZWRlY2Vzc29ycygpKSB7CisgICAgICAg
ICAgICAgICAgICAgIC8vIE1lcmdlIHRoZSBvdXQgc2V0IG9mIHRoZSBpbmNvbWluZyBwcmVkZWNl
c3NvcnMgdW5sZXNzIHRoZSBjdXJyZW50IGJsb2NrIHN0YXJ0cworICAgICAgICAgICAgICAgICAg
ICAvLyB3aXRoIHRoZSBtZXJnZSBwb2ludCBhbmQgdGhlIHByZWRlY2Vzc29yIGVuZHMgd2l0aCB0
aGUgc2F2ZSBwb2ludC4KKyAgICAgICAgICAgICAgICAgICAgaWYgKCEobWVyZ2VCbG9jayAmJiBt
X2dlbmVyYXRvcmlmaWNhdGlvbi5pc1NhdmVCbG9jayhwcmVkZWNlc3NvcikpKQorICAgICAgICAg
ICAgICAgICAgICAgICAgbmV3SW4ubWVyZ2UocHJlZGVjZXNzb3ItPm91dCgpKTsKKyAgICAgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAoYXV0byYgb3B0aW9uYWxQcmVkZWNlc3Nv
clNldCA9IHBvc3NpYmxlUHJlZGVjZXNzb3JzRm9ySGFuZGxlcnNbYmxvY2stPmluZGV4KCldKSB7
CisgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsUHJlZGVjZXNzb3JTZXQtPmZvckVhY2hTZXRC
aXQoWyZdICh1bnNpZ25lZCBibG9ja0luZGV4KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBu
ZXdJbi5tZXJnZShncmFwaC5iYXNpY0Jsb2NrcygpW2Jsb2NrSW5kZXhdLT5vdXQoKSk7CisgICAg
ICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAg
IGJsb2NrLT5pbigpLnNldChuZXdJbik7CisgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBjb21w
dXRlTG9jYWxTYXZlZFZhcmlhYmxlc0ZvckJsb2NrKGJsb2NrLmdldCgpKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfSB3aGlsZSAoY2hhbmdlZCk7CisgICAgfQorCitwcml2YXRlOgorICAgIEJ5
dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uJiBtX2dlbmVyYXRvcmlmaWNhdGlvbjsKK307CisKKwor
dm9pZCBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbjo6cnVuKCkKK3sKKyAgICAvLyBGaXJzdCwg
d2UgY2FsY3VsYXRlIHRoZSBsaXZlbmVzcyBhdCBlYWNoIG1lcmdlIHBvaW50LiBUaGlzIGdpdmVz
IHVzIHRoZSBpbmZvcm1hdGlvbiB3aGljaCByZWdpc3RlcnMgc2hvdWxkIGJlIHNhdmVkIGFuZCBy
ZXN1bWVkIGNvbnNlcnZhdGl2ZWx5LgorICAgIC8vIEhvd2V2ZXIsIHRoaXMgaW5mb3JtYXRpb24g
aXMgdG9vIGNvbnNlcnZhdGl2ZS4gV2Ugbm93IHVubmVjZXNzYXJpbHkgc2F2ZSBhbmQgcmVzdW1l
IHRoZSByZWdpc3RlcnMuCisgICAgLy8gV2hlbiB0aGUgbG9jYWwgcmVnaXN0ZXIgaXMgcmVmZXJl
bmNlZCBmcm9tIHRoZSBwb2ludCB3aGljaCBpcyBvdmVyIG11bHRpcGxlIHlpZWxkcywgdGhlIHBy
b2JsZW0gaGFwcGVucy4KKyAgICAvLworICAgIC8vICAgZnVuY3Rpb24gKmdlbigpCisgICAgLy8g
ICB7CisgICAgLy8gICAgICAgdmFyIHRhcmdldCA9IDQyOworICAgIC8vICAgICAgIHlpZWxkIDMw
OyAgLy8gSGVyZSwgd2Ugc2hvdWxkIHNhdmUgInRhcmdldCIuIEl0IGlzIE9LLiBCdXQgYXQgdGhl
IHJlc3VtZSBwb2ludCwgd2UgdW5uZWNlc3NhcnkgcmVzdW1lICJ0YXJnZXQiIGhlcmUuCisgICAg
Ly8gICAgICAgeWllbGQgNDA7ICAvLyBBbmQgaGVyZSwgd2UgdW5uZWNlc3NhcmlseSBzYXZlICJ0
YXJnZXQiLCBzaW5jZSBpdCBpcyAqZGVmKmluZWQgYnkgdGhlIHByZXZpb3VzIHJlc3VtZS4KKyAg
ICAvLyAgICAgICB5aWVsZCB0YXJnZXQ7ICAvLyBBbmQgcmVmZXJlbmNlIHRoZSAidGFyZ2V0IiBo
ZXJlLgorICAgIC8vICAgfQorICAgIC8vCisgICAgLy8gSW4gdGhlIGFib3ZlIGV4YW1wbGUsIGZp
cnN0IHlpZWxkJ3MgcmVzdW1lIGFuZCBzZWNvbmQgeWllbGQncyBzYXZlIGlzIHVubmVjZXNzYXJ5
IHNpbmNlIHRoZSB2YWx1ZSBpcyBub3QgY2hhbmdlZCBkdXJpbmcgdGhlIHNlY29uZCBjYWxsIG9m
IG5leHQoKS4KKyAgICAvLyBUbyByZWR1Y2UgdGhlIHVubmVjZXNzYXJ5IHJlZ2lzdGVyIHNhdmUg
YW5kIHJlc3VtZSwgd2UgcnVuIDIgYW5hbHlzaXMsICJyZXN1bWVkIHZhcmlhYmxlcyBhbmFseXNp
cyIgYW5kICJzYXZlZCB2YXJpYWJsZXMgYW5hbHlzaXMiLgorICAgIC8vIEF0IHRoYXQgdGltZSwg
d2UgZHJvcCB0aGUgZWRnZSBmcm9tIG9wX3NhdmUgdG8gdGhlIG1lcmdlIHBvaW50LiBTbyB0aGUg
Z3JhcGggbm93IGJlY29tZXMgYXMgZm9sbG93cy4KKyAgICAvLworICAgIC8vIEJlZm9yZToKKyAg
ICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAob2YgY291cnNlLCBzdWNoIGVkZ2VzIGNhbiBiZSBz
ZWVuKQorICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcF9y
ZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0rCisgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIF4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwKKyAgICAvLyAgICAgICAgIGVudHJ5IC0+IGdlbmVyYXRvciBz
d2l0Y2ggLS0tLT4gb3Bfc2F2ZSAtLS0tLS0tLS0tLS0tLSsgICAgICAgICAgICAgICB8ICAgICAg
ICBvcF9yZXQgICAgICAgICAgICAgICAgICAgfAorICAgIC8vICAgICAgICAgICAgICAgICAgICAg
ICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdiAgICAgICAgICAgICAg
IHwgICAgICAgICAgXiAgICAgICAgICAgICAgICAgICAgICB8CisgICAgLy8gICAgICAgICAgICAg
ICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0+IG9wX3Jlc3VtZSAtLS0tLT4gbWVyZ2UgcG9pbnQg
LT4gLi4uLi4uKy4uLi4uLT4gb3Bfc2F2ZSAtLS0tLSsgICAgICAgICAgIHwKKyAgICAvLyAgICAg
ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdiAgICAgICAgICAgdgorICAg
IC8vICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPiBvcF9yZXN1bWUgLS0tLT4gbWVyZ2UgcG9pbnQgLT4g
Li4uLi4uCisgICAgLy8KKyAgICAvLyBBZnRlcjoKKyAgICAvLyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAob2YgY291cnNlLCBzdWNoIGVkZ2VzIGNhbiBiZSBzZWVuKQorICAgIC8vICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcF9yZXQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICAgLy8gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAg
ICAvLyAgICAgICAgIGVudHJ5IC0+IGdlbmVyYXRvciBzd2l0Y2ggLS0tLT4gb3Bfc2F2ZSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICBvcF9yZXQgICAgICAgICAgICAgICAg
ICAgfAorICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgXiAgICAgICAgICAg
ICAgICAgICAgICB8CisgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0t
LS0+IG9wX3Jlc3VtZSAtLS0tLT4gbWVyZ2UgcG9pbnQgLT4gLi4uLi4uKy4uLi4uLT4gb3Bfc2F2
ZSAgICAgICAgICAgICAgICAgIHwKKyAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgIHwgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdgorICAgIC8vICAgICAgICAgICAgICAgICAgICAg
ICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
PiBvcF9yZXN1bWUgLS0tLT4gbWVyZ2UgcG9pbnQgLT4gLi4uLi4uCisgICAgLy8KKyAgICAvLyBJ
biByZXN1bWVkIHZhcmlhYmxlcyBhbmFseXNpcywgd2UganVzdCBydW4gdGhlIGxpdmVuZXNzIGFu
YWx5c2lzIGFnYWluIG9udG8gdGhpcyAiQWZ0ZXIiIGdyYXBoLiBUaGUgYW5hbHlzaXMgZXh0cmFj
dHMgdGhlIGxpdmVuZXNzIGF0IGVhY2ggbWVyZ2UgcG9pbnQsCisgICAgLy8gYW5kIHRoaXMgbGl2
ZW5lc3Mgb25seSBjb25zaWRlcnMgdGhlIHJlYWNoYWJsZSBibG9ja3MgZnJvbSB0aGUgdGFyZ2V0
IG9wX3Jlc3VtZS4gVGhlIHJlc3VsdCByZWdpc3RlcnMgYXJlIHNtYWxsZXIgc2V0IHRoYW4gdGhl
IHNldCB3aGljaCBpcyBleHRyYWN0ZWQgaW4KKyAgICAvLyB0aGUgcHJldmlvdXMgbGl2ZW5lc3Mg
YW5hbHlzaXMuCisgICAgLy8KKyAgICAvLyBJbiBzYXZlZCB2YXJpYWJsZXMgYW5hbHlzaXMsIHdl
IHJ1biB0aGUgZm9yd2FyZCBhbmFseXNpcyBvbnRvIHRoaXMgIkFmdGVyIiBncmFwaC4gSW4gdGhp
cyBmb3J3YXJkIGFuYWx5c2lzLCB3ZSBwcm9wYWdhdGUgdGhlICJkZWYicy4KKyAgICAvLyBUaGlz
IGFuYWx5c2lzIGV4dHJhY3RzIHRoZSBuZXdseSBkZWYtZWQgcmVnaXN0ZXJzIHRoYXQgY2FuIHJl
YWNoIHRvIHRoZSBvcF9zYXZlIHBvaW50LiBCdXQgdGhpcyBuZXdseSBkZWYtZWQgcmVnaXN0ZXJz
IGluY2x1ZGUgdGhlIHJlZ2lzdGVycyB0aGF0IHdvbid0IGJlCisgICAgLy8gdXNlZCBpbiB0aGUg
c3Vic2VxdWVudCBuZXh0KCkgY2FsbHMgYWZ0ZXIgdGhpcyBvcF9zYXZlLiBTbyB3ZSBleHRyYWN0
IHRoZSBuZWNlc3NhcmlseSBzYXZlZCByZWdpc3RlcnMgYnkgbWFza2luZyBsaXZlIHJlZ2lzdGVy
cyB3aXRoIHRoaXMgbmV3bHkgZGVmLWVkIHJlZ2lzdGVycyBiaXQgc2V0LgorCisgICAgeworICAg
ICAgICBHZW5lcmF0b3JMaXZlbmVzc0FuYWx5c2lzIHBhc3MoKnRoaXMpOworICAgICAgICBwYXNz
LnJ1bigpOworICAgICAgICBmb3IgKFlpZWxkRGF0YSYgZGF0YSA6IG1feWllbGRzKQorICAgICAg
ICAgICAgZGF0YS5saXZlbmVzcyA9IHBhc3MuZ2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29kZU9mZnNl
dChkYXRhLm1lcmdlUG9pbnQpOworICAgIH0KKworICAgIHsKKyAgICAgICAgUmVzdW1lZFZhcmlh
Ymxlc0FuYWx5c2lzIHBhc3MoKnRoaXMpOworICAgICAgICBwYXNzLnJ1bigpOworICAgICAgICBm
b3IgKFlpZWxkRGF0YSYgZGF0YSA6IG1feWllbGRzKSB7CisgICAgICAgICAgICBkYXRhLnJlc3Vt
ZWQgPSBkYXRhLmxpdmVuZXNzOworICAgICAgICAgICAgZGF0YS5yZXN1bWVkLmZpbHRlcihwYXNz
LmdldFJlc3VtZWRWYXJpYWJsZXNJbmZvQXRCeXRlY29kZU9mZnNldChkYXRhLm1lcmdlUG9pbnQp
KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHsKKyAgICAgICAgU2F2ZWRWYXJpYWJsZXNBbmFs
eXNpcyBwYXNzKCp0aGlzKTsKKyAgICAgICAgcGFzcy5ydW4oKTsKKyAgICAgICAgZm9yIChZaWVs
ZERhdGEmIGRhdGEgOiBtX3lpZWxkcykgeworICAgICAgICAgICAgZGF0YS5zYXZlZCA9IGRhdGEu
bGl2ZW5lc3M7CisgICAgICAgICAgICBkYXRhLnNhdmVkLmZpbHRlcihwYXNzLmdldFNhdmVkVmFy
aWFibGVzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQoZGF0YS5zYXZlUG9pbnQpKTsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIFVubGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBtX2dyYXBoLmNvZGVC
bG9jaygpOworICAgIGZvciAoY29uc3QgWWllbGREYXRhJiBkYXRhIDogbV95aWVsZHMpIHsKKyAg
ICAgICAgVmlydHVhbFJlZ2lzdGVyIHNjb3BlID0gdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQo
NSk7CisKKyAgICAgICAgLy8gb3Bfc2F2ZS4KKyAgICAgICAgZGF0YS5zYXZlZC5mb3JFYWNoU2V0
Qml0KFsmXShzaXplX3QgaW5kZXgpIHsKKyAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBvcGVy
YW5kID0gdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaW5kZXgpOworICAgICAgICAgICAgU3RvcmFn
ZSBzdG9yYWdlID0gc3RvcmFnZUZvckdlbmVyYXRvckxvY2FsKGluZGV4KTsKKworICAgICAgICAg
ICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0KGRhdGEuc2F2ZVBvaW50LAorICAgICAgICAgICAgICAg
IG9wX3B1dF90b19zY29wZSwKKyAgICAgICAgICAgICAgICBzY29wZS5vZmZzZXQoKSwgLy8gc2Nv
cGUKKyAgICAgICAgICAgICAgICBzdG9yYWdlLmlkZW50aWZpZXJJbmRleCwgLy8gaWRlbnRpZmll
cgorICAgICAgICAgICAgICAgIG9wZXJhbmQub2Zmc2V0KCksIC8vIHZhbHVlCisgICAgICAgICAg
ICAgICAgR2V0UHV0SW5mbyhEb05vdFRocm93SWZOb3RGb3VuZCwgTG9jYWxDbG9zdXJlVmFyLCBJ
bml0aWFsaXphdGlvbk1vZGU6Ok5vdEluaXRpYWxpemF0aW9uKS5vcGVyYW5kKCksIC8vIGluZm8K
KyAgICAgICAgICAgICAgICBtX2dlbmVyYXRvckZyYW1lU3ltYm9sVGFibGVJbmRleCwgLy8gc3lt
Ym9sIHRhYmxlIGNvbnN0YW50IGluZGV4CisgICAgICAgICAgICAgICAgc3RvcmFnZS5zY29wZU9m
ZnNldC5vZmZzZXQoKSAvLyBzY29wZSBvZmZzZXQKKyAgICAgICAgICAgICk7CisgICAgICAgIH0p
OworCisgICAgICAgIC8vIG9wX3Jlc3VtZS4KKyAgICAgICAgZGF0YS5yZXN1bWVkLmZvckVhY2hT
ZXRCaXQoWyZdKHNpemVfdCBpbmRleCkgeworICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIG9w
ZXJhbmQgPSB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChpbmRleCk7CisgICAgICAgICAgICBTdG9y
YWdlIHN0b3JhZ2UgPSBzdG9yYWdlRm9yR2VuZXJhdG9yTG9jYWwoaW5kZXgpOworCisgICAgICAg
ICAgICBVbmxpbmtlZFZhbHVlUHJvZmlsZSBwcm9maWxlID0gY29kZUJsb2NrLT5hZGRWYWx1ZVBy
b2ZpbGUoKTsKKyAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydChkYXRhLnJlc3VtZVBv
aW50LAorICAgICAgICAgICAgICAgIG9wX2dldF9mcm9tX3Njb3BlLAorICAgICAgICAgICAgICAg
IG9wZXJhbmQub2Zmc2V0KCksIC8vIGRzdAorICAgICAgICAgICAgICAgIHNjb3BlLm9mZnNldCgp
LCAvLyBzY29wZQorICAgICAgICAgICAgICAgIHN0b3JhZ2UuaWRlbnRpZmllckluZGV4LCAvLyBp
ZGVudGlmaWVyCisgICAgICAgICAgICAgICAgR2V0UHV0SW5mbyhEb05vdFRocm93SWZOb3RGb3Vu
ZCwgTG9jYWxDbG9zdXJlVmFyLCBJbml0aWFsaXphdGlvbk1vZGU6Ok5vdEluaXRpYWxpemF0aW9u
KS5vcGVyYW5kKCksIC8vIGluZm8KKyAgICAgICAgICAgICAgICAwLCAvLyBsb2NhbCBzY29wZSBk
ZXB0aAorICAgICAgICAgICAgICAgIHN0b3JhZ2Uuc2NvcGVPZmZzZXQub2Zmc2V0KCksIC8vIHNj
b3BlIG9mZnNldAorICAgICAgICAgICAgICAgIHByb2ZpbGUgLy8gcHJvZmlsZQorICAgICAgICAg
ICAgKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgLy8gQ2xpcCB0aGUgdW5uZWNlc3NhcnkgYnl0
ZWNvZGVzLgorICAgICAgICBtX2luc2VydGlvblNldC5yZW1vdmVCeXRlY29kZShkYXRhLnNhdmVQ
b2ludCk7CisgICAgICAgIG1faW5zZXJ0aW9uU2V0LnJlbW92ZUJ5dGVjb2RlKGRhdGEucmVzdW1l
UG9pbnQpOworICAgIH0KKworICAgIG1faW5zZXJ0aW9uU2V0LmV4ZWN1dGUoKTsKK30KKwordm9p
ZCBwZXJmb3JtR2VuZXJhdG9yaWZpY2F0aW9uKFVubGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IFVubGlua2VkQ29kZUJsb2NrOjpVbnBhY2tlZEluc3RydWN0aW9ucyYgaW5zdHJ1Y3Rpb25zLCBT
eW1ib2xUYWJsZSogZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZSwgaW50IGdlbmVyYXRvckZyYW1l
U3ltYm9sVGFibGVJbmRleCkKK3sKKyAgICBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbiBwYXNz
KGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb25zLCBnZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlLCBnZW5l
cmF0b3JGcmFtZVN5bWJvbFRhYmxlSW5kZXgpOworICAgIHBhc3MucnVuKCk7Cit9CisKK30gLy8g
bmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYjdlYzk2ZWQ3
MGRiYmEyMjExMWViMTM3NzMzZmIyMDA1NWIxMTFhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmgKQEAg
LTAsMCArMSwzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBZdXN1a2UgU3V6dWtpIDx1
dGF0YW5lLnRlYUBnbWFpbC5jb20+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVk
ZSAiVW5saW5rZWRDb2RlQmxvY2suaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIFN5bWJv
bFRhYmxlOworCit2b2lkIHBlcmZvcm1HZW5lcmF0b3JpZmljYXRpb24oVW5saW5rZWRDb2RlQmxv
Y2sqLCBVbmxpbmtlZENvZGVCbG9jazo6VW5wYWNrZWRJbnN0cnVjdGlvbnMmLCBTeW1ib2xUYWJs
ZSogZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZSwgaW50IGdlbmVyYXRvckZyYW1lU3ltYm9sVGFi
bGVJbmRleCk7CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlR3JhcGguaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUdyYXBoLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmYyMDg0NDIwNWQyOTBkY2Iz
MjdhNTYwNDgwOWJmZWNkYjRhMTcyYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUdyYXBoLmgKQEAgLTAsMCArMSwxMTIgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTYgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29t
PgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkJ5dGVjb2RlQmFzaWNCbG9j
ay5oIgorI2luY2x1ZGUgPHd0Zi9JdGVyYXRvclJhbmdlLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgQnl0ZWNvZGVCYXNpY0Jsb2NrOworCit0
ZW1wbGF0ZTx0eXBlbmFtZSBCbG9jaz4KK2NsYXNzIEJ5dGVjb2RlR3JhcGggeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEJ5dGVjb2RlR3Jh
cGgpOworcHVibGljOgorICAgIHR5cGVkZWYgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29k
ZUJhc2ljQmxvY2s+PiBCYXNpY0Jsb2Nrc1ZlY3RvcjsKKworICAgIGlubGluZSBCeXRlY29kZUdy
YXBoKEJsb2NrKiwgdHlwZW5hbWUgQmxvY2s6OlVucGFja2VkSW5zdHJ1Y3Rpb25zJik7CisKKyAg
ICBCbG9jayogY29kZUJsb2NrKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2s7IH0KKworICAg
IEJhc2ljQmxvY2tzVmVjdG9yJiBiYXNpY0Jsb2NrcygpIHsgcmV0dXJuIG1fYmFzaWNCbG9ja3M7
IH0KKworICAgIHR5cGVuYW1lIEJsb2NrOjpVbnBhY2tlZEluc3RydWN0aW9ucyYgaW5zdHJ1Y3Rp
b25zKCkgeyByZXR1cm4gbV9pbnN0cnVjdGlvbnM7IH0KKworICAgIFdURjo6SXRlcmF0b3JSYW5n
ZTxCYXNpY0Jsb2Nrc1ZlY3Rvcjo6cmV2ZXJzZV9pdGVyYXRvcj4gYmFzaWNCbG9ja3NJblJldmVy
c2VPcmRlcigpCisgICAgeworICAgICAgICByZXR1cm4gV1RGOjptYWtlSXRlcmF0b3JSYW5nZSht
X2Jhc2ljQmxvY2tzLnJiZWdpbigpLCBtX2Jhc2ljQmxvY2tzLnJlbmQoKSk7CisgICAgfQorCisg
ICAgc3RhdGljIGJvb2wgYmxvY2tDb250YWluc0J5dGVjb2RlT2Zmc2V0KEJ5dGVjb2RlQmFzaWNC
bG9jayogYmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KQorICAgIHsKKyAgICAgICAgdW5z
aWduZWQgbGVhZGVyT2Zmc2V0ID0gYmxvY2stPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCk7CisgICAg
ICAgIHJldHVybiBieXRlY29kZU9mZnNldCA+PSBsZWFkZXJPZmZzZXQgJiYgYnl0ZWNvZGVPZmZz
ZXQgPCBsZWFkZXJPZmZzZXQgKyBibG9jay0+dG90YWxCeXRlY29kZUxlbmd0aCgpOworICAgIH0K
KworICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogZmluZEJhc2ljQmxvY2tGb3JCeXRlY29kZU9mZnNl
dCh1bnNpZ25lZCBieXRlY29kZU9mZnNldCkKKyAgICB7CisgICAgICAgIC8qCisgICAgICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9iYXNpY0Jsb2Nrcy5zaXplKCk7IGkrKykgewor
ICAgICAgICAgICAgICAgIGlmIChibG9ja0NvbnRhaW5zQnl0ZWNvZGVPZmZzZXQobV9iYXNpY0Js
b2Nrc1tpXS5nZXQoKSwgYnl0ZWNvZGVPZmZzZXQpKQorICAgICAgICAgICAgICAgICAgICByZXR1
cm4gbV9iYXNpY0Jsb2Nrc1tpXS5nZXQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJl
dHVybiAwOworICAgICAgICAqLworCisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJh
c2ljQmxvY2s+KiBiYXNpY0Jsb2NrID0gYXBwcm94aW1hdGVCaW5hcnlTZWFyY2g8c3RkOjp1bmlx
dWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4sIHVuc2lnbmVkPihtX2Jhc2ljQmxvY2tzLCBtX2Jh
c2ljQmxvY2tzLnNpemUoKSwgYnl0ZWNvZGVPZmZzZXQsIFtdIChzdGQ6OnVuaXF1ZV9wdHI8Qnl0
ZWNvZGVCYXNpY0Jsb2NrPiogYmFzaWNCbG9jaykgeyByZXR1cm4gKCpiYXNpY0Jsb2NrKS0+bGVh
ZGVyQnl0ZWNvZGVPZmZzZXQoKTsgfSk7CisgICAgICAgIC8vIFdlIGZvdW5kIHRoZSBibG9jayB3
ZSB3ZXJlIGxvb2tpbmcgZm9yLgorICAgICAgICBpZiAoYmxvY2tDb250YWluc0J5dGVjb2RlT2Zm
c2V0KCgqYmFzaWNCbG9jaykuZ2V0KCksIGJ5dGVjb2RlT2Zmc2V0KSkKKyAgICAgICAgICAgIHJl
dHVybiAoKmJhc2ljQmxvY2spLmdldCgpOworCisgICAgICAgIC8vIEJhc2ljIGJsb2NrIGlzIHRv
IHRoZSBsZWZ0IG9mIHRoZSByZXR1cm5lZCBibG9jay4KKyAgICAgICAgaWYgKGJ5dGVjb2RlT2Zm
c2V0IDwgKCpiYXNpY0Jsb2NrKS0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKSkgeworICAgICAgICAg
ICAgQVNTRVJUKGJhc2ljQmxvY2sgLSAxID49IG1fYmFzaWNCbG9ja3MuZGF0YSgpKTsKKyAgICAg
ICAgICAgIEFTU0VSVChibG9ja0NvbnRhaW5zQnl0ZWNvZGVPZmZzZXQoYmFzaWNCbG9ja1stMV0u
Z2V0KCksIGJ5dGVjb2RlT2Zmc2V0KSk7CisgICAgICAgICAgICByZXR1cm4gYmFzaWNCbG9ja1st
MV0uZ2V0KCk7CisgICAgICAgIH0KKworICAgICAgICAvLyBCYXNpYyBibG9jayBpcyB0byB0aGUg
cmlnaHQgb2YgdGhlIHJldHVybmVkIGJsb2NrLgorICAgICAgICBBU1NFUlQoJmJhc2ljQmxvY2tb
MV0gPD0gJm1fYmFzaWNCbG9ja3MubGFzdCgpKTsKKyAgICAgICAgQVNTRVJUKGJsb2NrQ29udGFp
bnNCeXRlY29kZU9mZnNldChiYXNpY0Jsb2NrWzFdLmdldCgpLCBieXRlY29kZU9mZnNldCkpOwor
ICAgICAgICByZXR1cm4gYmFzaWNCbG9ja1sxXS5nZXQoKTsKKyAgICB9CisKKyAgICBCeXRlY29k
ZUJhc2ljQmxvY2sqIGZpbmRCYXNpY0Jsb2NrV2l0aExlYWRlck9mZnNldCh1bnNpZ25lZCBsZWFk
ZXJPZmZzZXQpCisgICAgeworICAgICAgICByZXR1cm4gKCp0cnlCaW5hcnlTZWFyY2g8c3RkOjp1
bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4sIHVuc2lnbmVkPihtX2Jhc2ljQmxvY2tzLCBt
X2Jhc2ljQmxvY2tzLnNpemUoKSwgbGVhZGVyT2Zmc2V0LCBbXSAoc3RkOjp1bmlxdWVfcHRyPEJ5
dGVjb2RlQmFzaWNCbG9jaz4qIGJhc2ljQmxvY2spIHsgcmV0dXJuICgqYmFzaWNCbG9jayktPmxl
YWRlckJ5dGVjb2RlT2Zmc2V0KCk7IH0pKS5nZXQoKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAg
QmxvY2sqIG1fY29kZUJsb2NrOworICAgIEJhc2ljQmxvY2tzVmVjdG9yIG1fYmFzaWNCbG9ja3M7
CisgICAgdHlwZW5hbWUgQmxvY2s6OlVucGFja2VkSW5zdHJ1Y3Rpb25zJiBtX2luc3RydWN0aW9u
czsKK307CisKKwordGVtcGxhdGU8dHlwZW5hbWUgQmxvY2s+CitCeXRlY29kZUdyYXBoPEJsb2Nr
Pjo6Qnl0ZWNvZGVHcmFwaChCbG9jayogY29kZUJsb2NrLCB0eXBlbmFtZSBCbG9jazo6VW5wYWNr
ZWRJbnN0cnVjdGlvbnMmIGluc3RydWN0aW9ucykKKyAgICA6IG1fY29kZUJsb2NrKGNvZGVCbG9j
aykKKyAgICAsIG1faW5zdHJ1Y3Rpb25zKGluc3RydWN0aW9ucykKK3sKKyAgICBBU1NFUlQobV9j
b2RlQmxvY2spOworICAgIEJ5dGVjb2RlQmFzaWNCbG9jazo6Y29tcHV0ZUJ5dGVjb2RlQmFzaWNC
bG9ja3MobV9jb2RlQmxvY2ssIGluc3RydWN0aW9ucy5iZWdpbigpLCBpbnN0cnVjdGlvbnMuc2l6
ZSgpLCBtX2Jhc2ljQmxvY2tzKTsKKyAgICBBU1NFUlQobV9iYXNpY0Jsb2Nrcy5zaXplKCkpOwor
fQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAKaW5kZXggMTdlODJh
MmZiYmEwMTUwNDNlOTlkMzRlZDI1NjkzNzJiMzZmN2E4NS4uZWI0NTlkMTI5N2M5ZjczOWVlOWZi
YWExMzAzN2Y4OWY4ZTg2YWIyZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAKQEAgLTMxLDc0ICsz
MSwyMSBAQAogI2luY2x1ZGUgIkJ5dGVjb2RlVXNlRGVmLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2Nr
LmgiCiAjaW5jbHVkZSAiRnVsbEJ5dGVjb2RlTGl2ZW5lc3MuaCIKKyNpbmNsdWRlICJJbnRlcnBy
ZXRlcklubGluZXMuaCIKICNpbmNsdWRlICJQcmVjaXNlSnVtcFRhcmdldHMuaCIKIAogbmFtZXNw
YWNlIEpTQyB7CiAKIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Qnl0ZWNvZGVMaXZlbmVzc0Fu
YWx5c2lzKENvZGVCbG9jayogY29kZUJsb2NrKQotICAgIDogbV9jb2RlQmxvY2soY29kZUJsb2Nr
KQorICAgIDogbV9ncmFwaChjb2RlQmxvY2ssIGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkpCiB7
Ci0gICAgQVNTRVJUKG1fY29kZUJsb2NrKTsKICAgICBjb21wdXRlKCk7CiB9CiAKLXN0YXRpYyBi
b29sIGlzVmFsaWRSZWdpc3RlckZvckxpdmVuZXNzKENvZGVCbG9jayogY29kZUJsb2NrLCBpbnQg
b3BlcmFuZCkKLXsKLSAgICBpZiAoY29kZUJsb2NrLT5pc0NvbnN0YW50UmVnaXN0ZXJJbmRleChv
cGVyYW5kKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIAotICAgIFZpcnR1YWxSZWdpc3Rl
ciB2aXJ0dWFsUmVnKG9wZXJhbmQpOwotICAgIHJldHVybiB2aXJ0dWFsUmVnLmlzTG9jYWwoKTsK
LX0KLQotc3RhdGljIHVuc2lnbmVkIGdldExlYWRlck9mZnNldEZvckJhc2ljQmxvY2soc3RkOjp1
bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4qIGJhc2ljQmxvY2spCi17Ci0gICAgcmV0dXJu
ICgqYmFzaWNCbG9jayktPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCk7Ci19Ci0KLXN0YXRpYyBCeXRl
Y29kZUJhc2ljQmxvY2sqIGZpbmRCYXNpY0Jsb2NrV2l0aExlYWRlck9mZnNldChWZWN0b3I8c3Rk
Ojp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+JiBiYXNpY0Jsb2NrcywgdW5zaWduZWQg
bGVhZGVyT2Zmc2V0KQotewotICAgIHJldHVybiAoKnRyeUJpbmFyeVNlYXJjaDxzdGQ6OnVuaXF1
ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiwgdW5zaWduZWQ+KGJhc2ljQmxvY2tzLCBiYXNpY0Js
b2Nrcy5zaXplKCksIGxlYWRlck9mZnNldCwgZ2V0TGVhZGVyT2Zmc2V0Rm9yQmFzaWNCbG9jaykp
LmdldCgpOwotfQotCi1zdGF0aWMgYm9vbCBibG9ja0NvbnRhaW5zQnl0ZWNvZGVPZmZzZXQoQnl0
ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaywgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpCi17Ci0gICAg
dW5zaWduZWQgbGVhZGVyT2Zmc2V0ID0gYmxvY2stPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCk7Ci0g
ICAgcmV0dXJuIGJ5dGVjb2RlT2Zmc2V0ID49IGxlYWRlck9mZnNldCAmJiBieXRlY29kZU9mZnNl
dCA8IGxlYWRlck9mZnNldCArIGJsb2NrLT50b3RhbEJ5dGVjb2RlTGVuZ3RoKCk7Ci19Ci0KLXN0
YXRpYyBCeXRlY29kZUJhc2ljQmxvY2sqIGZpbmRCYXNpY0Jsb2NrRm9yQnl0ZWNvZGVPZmZzZXQo
VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9ja3Ms
IHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KQotewotLyoKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgYmFzaWNCbG9ja3Muc2l6ZSgpOyBpKyspIHsKLSAgICAgICAgaWYgKGJsb2NrQ29udGFp
bnNCeXRlY29kZU9mZnNldChiYXNpY0Jsb2Nrc1tpXS5nZXQoKSwgYnl0ZWNvZGVPZmZzZXQpKQot
ICAgICAgICAgICAgcmV0dXJuIGJhc2ljQmxvY2tzW2ldLmdldCgpOwotICAgIH0KLSAgICByZXR1
cm4gMDsKLSovCi0gICAgc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4qIGJhc2lj
QmxvY2sgPSBhcHByb3hpbWF0ZUJpbmFyeVNlYXJjaDxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVC
YXNpY0Jsb2NrPiwgdW5zaWduZWQ+KAotICAgICAgICBiYXNpY0Jsb2NrcywgYmFzaWNCbG9ja3Mu
c2l6ZSgpLCBieXRlY29kZU9mZnNldCwgZ2V0TGVhZGVyT2Zmc2V0Rm9yQmFzaWNCbG9jayk7Ci0g
ICAgLy8gV2UgZm91bmQgdGhlIGJsb2NrIHdlIHdlcmUgbG9va2luZyBmb3IuCi0gICAgaWYgKGJs
b2NrQ29udGFpbnNCeXRlY29kZU9mZnNldCgoKmJhc2ljQmxvY2spLmdldCgpLCBieXRlY29kZU9m
ZnNldCkpCi0gICAgICAgIHJldHVybiAoKmJhc2ljQmxvY2spLmdldCgpOwotCi0gICAgLy8gQmFz
aWMgYmxvY2sgaXMgdG8gdGhlIGxlZnQgb2YgdGhlIHJldHVybmVkIGJsb2NrLgotICAgIGlmIChi
eXRlY29kZU9mZnNldCA8ICgqYmFzaWNCbG9jayktPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCkpIHsK
LSAgICAgICAgQVNTRVJUKGJhc2ljQmxvY2sgLSAxID49IGJhc2ljQmxvY2tzLmRhdGEoKSk7Ci0g
ICAgICAgIEFTU0VSVChibG9ja0NvbnRhaW5zQnl0ZWNvZGVPZmZzZXQoYmFzaWNCbG9ja1stMV0u
Z2V0KCksIGJ5dGVjb2RlT2Zmc2V0KSk7Ci0gICAgICAgIHJldHVybiBiYXNpY0Jsb2NrWy0xXS5n
ZXQoKTsKLSAgICB9Ci0KLSAgICAvLyBCYXNpYyBibG9jayBpcyB0byB0aGUgcmlnaHQgb2YgdGhl
IHJldHVybmVkIGJsb2NrLgotICAgIEFTU0VSVCgmYmFzaWNCbG9ja1sxXSA8PSAmYmFzaWNCbG9j
a3MubGFzdCgpKTsKLSAgICBBU1NFUlQoYmxvY2tDb250YWluc0J5dGVjb2RlT2Zmc2V0KGJhc2lj
QmxvY2tbMV0uZ2V0KCksIGJ5dGVjb2RlT2Zmc2V0KSk7Ci0gICAgcmV0dXJuIGJhc2ljQmxvY2tb
MV0uZ2V0KCk7Ci19Ci0KIC8vIFNpbXBsaWZpZWQgaW50ZXJmYWNlIHRvIGJ5dGVjb2RlIHVzZS9k
ZWYsIHdoaWNoIGRldGVybWluZXMgZGVmcyBmaXJzdCBhbmQgdGhlbiB1c2VzLCBhbmQgaW5jbHVk
ZXMKIC8vIGV4Y2VwdGlvbiBoYW5kbGVycyBpbiB0aGUgdXNlcy4KIHRlbXBsYXRlPHR5cGVuYW1l
IFVzZUZ1bmN0b3IsIHR5cGVuYW1lIERlZkZ1bmN0b3I+Ci1zdGF0aWMgdm9pZCBzdGVwT3Zlcklu
c3RydWN0aW9uKENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2Nr
LCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+JiBiYXNpY0Jsb2Nr
cywgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIGNvbnN0IFVzZUZ1bmN0b3ImIHVzZSwgY29uc3Qg
RGVmRnVuY3RvciYgZGVmKQorc3RhdGljIHZvaWQgc3RlcE92ZXJJbnN0cnVjdGlvbihCeXRlY29k
ZUdyYXBoPENvZGVCbG9jaz4mIGdyYXBoLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgY29uc3Qg
VXNlRnVuY3RvciYgdXNlLCBjb25zdCBEZWZGdW5jdG9yJiBkZWYpCiB7CiAgICAgLy8gVGhpcyBh
YnN0cmFjdGx5IGV4ZWN1dGUgdGhlIGluc3RydWN0aW9uIGluIHJldmVyc2UuIEluc3RydWN0aW9u
cyBsb2dpY2FsbHkgZmlyc3QgdXNlIG9wZXJhbmRzIGFuZAogICAgIC8vIHRoZW4gZGVmaW5lIG9w
ZXJhbmRzLiBUaGlzIGxvZ2ljYWwgb3JkZXJpbmcgaXMgbmVjZXNzYXJ5IGZvciBvcGVyYXRpb25z
IHRoYXQgdXNlIGFuZCBkZWYgdGhlIHNhbWUKQEAgLTExNSw0MSArNjIsMzUgQEAgc3RhdGljIHZv
aWQgc3RlcE92ZXJJbnN0cnVjdGlvbihDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVCYXNp
Y0Jsb2NrKiBibG9jaywKICAgICAvLyB1c2VzIGJlZm9yZSBkZWZzLCB0aGVuIHRoZSBhZGQgb3Bl
cmF0aW9uIGFib3ZlIHdvdWxkIGFwcGVhciB0byBub3QgaGF2ZSBsb2MxIGxpdmUsIHNpbmNlIHdl
J2QKICAgICAvLyBmaXJzdCBhZGQgaXQgdG8gdGhlIG91dCBzZXQgKHRoZSB1c2UpLCBhbmQgdGhl
biB3ZSdkIHJlbW92ZSBpdCAodGhlIGRlZikuCiAgICAgCisgICAgQ29kZUJsb2NrKiBjb2RlQmxv
Y2sgPSBncmFwaC5jb2RlQmxvY2soKTsKKwogICAgIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZz
ZXQoCi0gICAgICAgIGNvZGVCbG9jaywgYmxvY2ssIGJ5dGVjb2RlT2Zmc2V0LAotICAgICAgICBb
Jl0gKENvZGVCbG9jayogY29kZUJsb2NrLCBJbnN0cnVjdGlvbiosIE9wY29kZUlELCBpbnQgb3Bl
cmFuZCkgewotICAgICAgICAgICAgaWYgKGlzVmFsaWRSZWdpc3RlckZvckxpdmVuZXNzKGNvZGVC
bG9jaywgb3BlcmFuZCkpCisgICAgICAgIGNvZGVCbG9jaywgYnl0ZWNvZGVPZmZzZXQsCisgICAg
ICAgIFsmXSAoQ29kZUJsb2NrKiwgSW5zdHJ1Y3Rpb24qLCBPcGNvZGVJRCwgaW50IG9wZXJhbmQp
IHsKKyAgICAgICAgICAgIGlmIChpc1ZhbGlkUmVnaXN0ZXJGb3JMaXZlbmVzcyhvcGVyYW5kKSkK
ICAgICAgICAgICAgICAgICBkZWYoVmlydHVhbFJlZ2lzdGVyKG9wZXJhbmQpLnRvTG9jYWwoKSk7
CiAgICAgICAgIH0pOwogCiAgICAgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCgKLSAgICAg
ICAgY29kZUJsb2NrLCBibG9jaywgYnl0ZWNvZGVPZmZzZXQsCi0gICAgICAgIFsmXSAoQ29kZUJs
b2NrKiBjb2RlQmxvY2ssIEluc3RydWN0aW9uKiwgT3Bjb2RlSUQsIGludCBvcGVyYW5kKSB7Ci0g
ICAgICAgICAgICBpZiAoaXNWYWxpZFJlZ2lzdGVyRm9yTGl2ZW5lc3MoY29kZUJsb2NrLCBvcGVy
YW5kKSkKKyAgICAgICAgY29kZUJsb2NrLCBieXRlY29kZU9mZnNldCwKKyAgICAgICAgWyZdIChD
b2RlQmxvY2sqLCBJbnN0cnVjdGlvbiosIE9wY29kZUlELCBpbnQgb3BlcmFuZCkgeworICAgICAg
ICAgICAgaWYgKGlzVmFsaWRSZWdpc3RlckZvckxpdmVuZXNzKG9wZXJhbmQpKQogICAgICAgICAg
ICAgICAgIHVzZShWaXJ0dWFsUmVnaXN0ZXIob3BlcmFuZCkudG9Mb2NhbCgpKTsKICAgICAgICAg
fSk7CiAKICAgICAvLyBJZiB3ZSBoYXZlIGFuIGV4Y2VwdGlvbiBoYW5kbGVyLCB3ZSB3YW50IHRo
ZSBsaXZlLWluIHZhcmlhYmxlcyBvZiB0aGUgCiAgICAgLy8gZXhjZXB0aW9uIGhhbmRsZXIgYmxv
Y2sgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIGxpdmUtaW4gb2YgdGhpcyBwYXJ0aWN1bGFyIGJ5dGVj
b2RlLgogICAgIGlmIChIYW5kbGVySW5mbyogaGFuZGxlciA9IGNvZGVCbG9jay0+aGFuZGxlckZv
ckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KSkgewotICAgICAgICAvLyBGSVhNRTogVGhp
cyByZXN1bWUgY2hlY2sgc2hvdWxkIG5vdCBiZSBuZWVkZWQuCi0gICAgICAgIC8vIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTkyODEKLSAgICAgICAgSW50ZXJwcmV0
ZXIqIGludGVycHJldGVyID0gY29kZUJsb2NrLT52bSgpLT5pbnRlcnByZXRlcjsKLSAgICAgICAg
SW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luID0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMo
KS5iZWdpbigpOwotICAgICAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSAmaW5zdHJ1Y3Rp
b25zQmVnaW5bYnl0ZWNvZGVPZmZzZXRdOwotICAgICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGlu
dGVycHJldGVyLT5nZXRPcGNvZGVJRChpbnN0cnVjdGlvbi0+dS5vcGNvZGUpOwotICAgICAgICBp
ZiAob3Bjb2RlSUQgIT0gb3BfcmVzdW1lKSB7Ci0gICAgICAgICAgICBCeXRlY29kZUJhc2ljQmxv
Y2sqIGhhbmRsZXJCbG9jayA9IGZpbmRCYXNpY0Jsb2NrV2l0aExlYWRlck9mZnNldChiYXNpY0Js
b2NrcywgaGFuZGxlci0+dGFyZ2V0KTsKLSAgICAgICAgICAgIEFTU0VSVChoYW5kbGVyQmxvY2sp
OwotICAgICAgICAgICAgaGFuZGxlckJsb2NrLT5pbigpLmZvckVhY2hTZXRCaXQodXNlKTsKLSAg
ICAgICAgfQorICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGhhbmRsZXJCbG9jayA9IGdyYXBo
LmZpbmRCYXNpY0Jsb2NrV2l0aExlYWRlck9mZnNldChoYW5kbGVyLT50YXJnZXQpOworICAgICAg
ICBBU1NFUlQoaGFuZGxlckJsb2NrKTsKKyAgICAgICAgaGFuZGxlckJsb2NrLT5pbigpLmZvckVh
Y2hTZXRCaXQodXNlKTsKICAgICB9CiB9CiAKLXN0YXRpYyB2b2lkIHN0ZXBPdmVySW5zdHJ1Y3Rp
b24oQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2ssIFZlY3Rv
cjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mIGJhc2ljQmxvY2tzLCB1bnNp
Z25lZCBieXRlY29kZU9mZnNldCwgRmFzdEJpdFZlY3RvciYgb3V0KQorc3RhdGljIHZvaWQgc3Rl
cE92ZXJJbnN0cnVjdGlvbihCeXRlY29kZUdyYXBoPENvZGVCbG9jaz4mIGdyYXBoLCB1bnNpZ25l
ZCBieXRlY29kZU9mZnNldCwgRmFzdEJpdFZlY3RvciYgb3V0KQogewogICAgIHN0ZXBPdmVySW5z
dHJ1Y3Rpb24oCi0gICAgICAgIGNvZGVCbG9jaywgYmxvY2ssIGJhc2ljQmxvY2tzLCBieXRlY29k
ZU9mZnNldCwKKyAgICAgICAgZ3JhcGgsIGJ5dGVjb2RlT2Zmc2V0LAogICAgICAgICBbJl0gKHVu
c2lnbmVkIGJpdEluZGV4KSB7CiAgICAgICAgICAgICAvLyBUaGlzIGlzIHRoZSB1c2UgZnVuY3Rv
ciwgc28gd2Ugc2V0IHRoZSBiaXQuCiAgICAgICAgICAgICBvdXQuc2V0KGJpdEluZGV4KTsKQEAg
LTE2MCw3ICsxMDEsNyBAQCBzdGF0aWMgdm9pZCBzdGVwT3Zlckluc3RydWN0aW9uKENvZGVCbG9j
ayogY29kZUJsb2NrLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrLAogICAgICAgICB9KTsKIH0K
IAotc3RhdGljIHZvaWQgY29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCeXRlY29kZU9mZnNldChDb2Rl
QmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaywgVmVjdG9yPHN0ZDo6
dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9ja3MsIHVuc2lnbmVkIHRh
cmdldE9mZnNldCwgRmFzdEJpdFZlY3RvciYgcmVzdWx0KQorc3RhdGljIHZvaWQgY29tcHV0ZUxv
Y2FsTGl2ZW5lc3NGb3JCeXRlY29kZU9mZnNldChCeXRlY29kZUdyYXBoPENvZGVCbG9jaz4mIGdy
YXBoLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrLCB1bnNpZ25lZCB0YXJnZXRPZmZzZXQsIEZh
c3RCaXRWZWN0b3ImIHJlc3VsdCkKIHsKICAgICBBU1NFUlQoIWJsb2NrLT5pc0V4aXRCbG9jaygp
KTsKICAgICBBU1NFUlQoIWJsb2NrLT5pc0VudHJ5QmxvY2soKSk7CkBAIC0xNzIsNDQgKzExMyw0
NCBAQCBzdGF0aWMgdm9pZCBjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJ5dGVjb2RlT2Zmc2V0KENv
ZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29kZQogICAgICAgICBpZiAodGFyZ2V0T2Zmc2V0ID4g
Ynl0ZWNvZGVPZmZzZXQpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgCi0gICAgICAgIHN0
ZXBPdmVySW5zdHJ1Y3Rpb24oY29kZUJsb2NrLCBibG9jaywgYmFzaWNCbG9ja3MsIGJ5dGVjb2Rl
T2Zmc2V0LCBvdXQpOworICAgICAgICBzdGVwT3Zlckluc3RydWN0aW9uKGdyYXBoLCBieXRlY29k
ZU9mZnNldCwgb3V0KTsKICAgICB9CiAKICAgICByZXN1bHQuc2V0KG91dCk7CiB9CiAKLXN0YXRp
YyB2b2lkIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQmxvY2soQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2ssIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNv
ZGVCYXNpY0Jsb2NrPj4mIGJhc2ljQmxvY2tzKQorc3RhdGljIHZvaWQgY29tcHV0ZUxvY2FsTGl2
ZW5lc3NGb3JCbG9jayhCeXRlY29kZUdyYXBoPENvZGVCbG9jaz4mIGdyYXBoLCBCeXRlY29kZUJh
c2ljQmxvY2sqIGJsb2NrKQogewogICAgIGlmIChibG9jay0+aXNFeGl0QmxvY2soKSB8fCBibG9j
ay0+aXNFbnRyeUJsb2NrKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBjb21wdXRlTG9jYWxMaXZl
bmVzc0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9jaywgYmxvY2ssIGJhc2ljQmxvY2tzLCBibG9j
ay0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKSwgYmxvY2stPmluKCkpOworICAgIGNvbXB1dGVMb2Nh
bExpdmVuZXNzRm9yQnl0ZWNvZGVPZmZzZXQoZ3JhcGgsIGJsb2NrLCBibG9jay0+bGVhZGVyQnl0
ZWNvZGVPZmZzZXQoKSwgYmxvY2stPmluKCkpOwogfQogCiB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NB
bmFseXNpczo6cnVuTGl2ZW5lc3NGaXhwb2ludCgpCiB7Ci0gICAgVW5saW5rZWRDb2RlQmxvY2sq
IHVubGlua2VkQ29kZUJsb2NrID0gbV9jb2RlQmxvY2stPnVubGlua2VkQ29kZUJsb2NrKCk7Cisg
ICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBtX2dyYXBoLmNvZGVCbG9jaygpOworICAgIFVubGlu
a2VkQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jayA9IGNvZGVCbG9jay0+dW5saW5rZWRDb2Rl
QmxvY2soKTsKICAgICB1bnNpZ25lZCBudW1iZXJPZlZhcmlhYmxlcyA9IHVubGlua2VkQ29kZUJs
b2NrLT5tX251bUNhbGxlZUxvY2FsczsKIAotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBt
X2Jhc2ljQmxvY2tzLnNpemUoKTsgaSsrKSB7Ci0gICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9jayog
YmxvY2sgPSBtX2Jhc2ljQmxvY2tzW2ldLmdldCgpOworICAgIGZvciAoc3RkOjp1bmlxdWVfcHRy
PEJ5dGVjb2RlQmFzaWNCbG9jaz4mIGJsb2NrIDogbV9ncmFwaC5iYXNpY0Jsb2NrcygpKSB7CiAg
ICAgICAgIGJsb2NrLT5pbigpLnJlc2l6ZShudW1iZXJPZlZhcmlhYmxlcyk7CiAgICAgICAgIGJs
b2NrLT5vdXQoKS5yZXNpemUobnVtYmVyT2ZWYXJpYWJsZXMpOwogICAgIH0KIAogICAgIGJvb2wg
Y2hhbmdlZDsKLSAgICBtX2Jhc2ljQmxvY2tzLmxhc3QoKS0+aW4oKS5jbGVhckFsbCgpOwotICAg
IG1fYmFzaWNCbG9ja3MubGFzdCgpLT5vdXQoKS5jbGVhckFsbCgpOworICAgIEJ5dGVjb2RlQmFz
aWNCbG9jayogbGFzdEJsb2NrID0gbV9ncmFwaC5iYXNpY0Jsb2NrcygpLmxhc3QoKS5nZXQoKTsK
KyAgICBsYXN0QmxvY2stPmluKCkuY2xlYXJBbGwoKTsKKyAgICBsYXN0QmxvY2stPm91dCgpLmNs
ZWFyQWxsKCk7CiAgICAgRmFzdEJpdFZlY3RvciBuZXdPdXQ7Ci0gICAgbmV3T3V0LnJlc2l6ZSht
X2Jhc2ljQmxvY2tzLmxhc3QoKS0+b3V0KCkubnVtQml0cygpKTsKKyAgICBuZXdPdXQucmVzaXpl
KGxhc3RCbG9jay0+b3V0KCkubnVtQml0cygpKTsKICAgICBkbyB7CiAgICAgICAgIGNoYW5nZWQg
PSBmYWxzZTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9iYXNpY0Jsb2Nrcy5zaXplKCkg
LSAxOyBpLS07KSB7Ci0gICAgICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrID0gbV9i
YXNpY0Jsb2Nrc1tpXS5nZXQoKTsKKyAgICAgICAgZm9yIChzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNv
ZGVCYXNpY0Jsb2NrPiYgYmxvY2sgOiBtX2dyYXBoLmJhc2ljQmxvY2tzSW5SZXZlcnNlT3JkZXIo
KSkgewogICAgICAgICAgICAgbmV3T3V0LmNsZWFyQWxsKCk7Ci0gICAgICAgICAgICBmb3IgKHVu
c2lnbmVkIGogPSAwOyBqIDwgYmxvY2stPnN1Y2Nlc3NvcnMoKS5zaXplKCk7IGorKykKLSAgICAg
ICAgICAgICAgICBuZXdPdXQubWVyZ2UoYmxvY2stPnN1Y2Nlc3NvcnMoKVtqXS0+aW4oKSk7Cisg
ICAgICAgICAgICBmb3IgKEJ5dGVjb2RlQmFzaWNCbG9jayogc3VjY2Vzc29yIDogYmxvY2stPnN1
Y2Nlc3NvcnMoKSkKKyAgICAgICAgICAgICAgICBuZXdPdXQubWVyZ2Uoc3VjY2Vzc29yLT5pbigp
KTsKICAgICAgICAgICAgIGJvb2wgb3V0RGlkQ2hhbmdlID0gYmxvY2stPm91dCgpLnNldEFuZENo
ZWNrKG5ld091dCk7Ci0gICAgICAgICAgICBjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJsb2NrKG1f
Y29kZUJsb2NrLCBibG9jaywgbV9iYXNpY0Jsb2Nrcyk7CisgICAgICAgICAgICBjb21wdXRlTG9j
YWxMaXZlbmVzc0ZvckJsb2NrKG1fZ3JhcGgsIGJsb2NrLmdldCgpKTsKICAgICAgICAgICAgIGNo
YW5nZWQgfD0gb3V0RGlkQ2hhbmdlOwogICAgICAgICB9CiAgICAgfSB3aGlsZSAoY2hhbmdlZCk7
CkBAIC0yMTcsMTIgKzE1OCwxMiBAQCB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6cnVu
TGl2ZW5lc3NGaXhwb2ludCgpCiAKIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpnZXRM
aXZlbmVzc0luZm9BdEJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBGYXN0
Qml0VmVjdG9yJiByZXN1bHQpCiB7Ci0gICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jayA9IGZp
bmRCYXNpY0Jsb2NrRm9yQnl0ZWNvZGVPZmZzZXQobV9iYXNpY0Jsb2NrcywgYnl0ZWNvZGVPZmZz
ZXQpOworICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2sgPSBtX2dyYXBoLmZpbmRCYXNpY0Js
b2NrRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpOwogICAgIEFTU0VSVChibG9jayk7
CiAgICAgQVNTRVJUKCFibG9jay0+aXNFbnRyeUJsb2NrKCkpOwogICAgIEFTU0VSVCghYmxvY2st
PmlzRXhpdEJsb2NrKCkpOwogICAgIHJlc3VsdC5yZXNpemUoYmxvY2stPm91dCgpLm51bUJpdHMo
KSk7Ci0gICAgY29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCeXRlY29kZU9mZnNldChtX2NvZGVCbG9j
aywgYmxvY2ssIG1fYmFzaWNCbG9ja3MsIGJ5dGVjb2RlT2Zmc2V0LCByZXN1bHQpOworICAgIGNv
bXB1dGVMb2NhbExpdmVuZXNzRm9yQnl0ZWNvZGVPZmZzZXQobV9ncmFwaCwgYmxvY2ssIGJ5dGVj
b2RlT2Zmc2V0LCByZXN1bHQpOwogfQogCiBib29sIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6
b3BlcmFuZElzTGl2ZUF0Qnl0ZWNvZGVPZmZzZXQoaW50IG9wZXJhbmQsIHVuc2lnbmVkIGJ5dGVj
b2RlT2Zmc2V0KQpAQCAtMjQ0LDExICsxODUsMTEgQEAgRmFzdEJpdFZlY3RvciBCeXRlY29kZUxp
dmVuZXNzQW5hbHlzaXM6OmdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQodW5zaWduZWQK
IHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlRnVsbExpdmVuZXNzKEZ1bGxC
eXRlY29kZUxpdmVuZXNzJiByZXN1bHQpCiB7CiAgICAgRmFzdEJpdFZlY3RvciBvdXQ7CisgICAg
Q29kZUJsb2NrKiBjb2RlQmxvY2sgPSBtX2dyYXBoLmNvZGVCbG9jaygpOwogICAgIAotICAgIHJl
c3VsdC5tX21hcC5yZXNpemUobV9jb2RlQmxvY2stPmluc3RydWN0aW9ucygpLnNpemUoKSk7Cisg
ICAgcmVzdWx0Lm1fbWFwLnJlc2l6ZShjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLnNpemUoKSk7
CiAgICAgCi0gICAgZm9yICh1bnNpZ25lZCBpID0gbV9iYXNpY0Jsb2Nrcy5zaXplKCk7IGktLTsp
IHsKLSAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jayA9IG1fYmFzaWNCbG9ja3NbaV0u
Z2V0KCk7CisgICAgZm9yIChzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiYgYmxv
Y2sgOiBtX2dyYXBoLmJhc2ljQmxvY2tzSW5SZXZlcnNlT3JkZXIoKSkgewogICAgICAgICBpZiAo
YmxvY2stPmlzRW50cnlCbG9jaygpIHx8IGJsb2NrLT5pc0V4aXRCbG9jaygpKQogICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgIApAQCAtMjU2LDcgKzE5Nyw3IEBAIHZvaWQgQnl0ZWNvZGVM
aXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlRnVsbExpdmVuZXNzKEZ1bGxCeXRlY29kZUxpdmVuZXNz
JiByZXN1bHQpCiAgICAgICAgIAogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBibG9jay0+Ynl0
ZWNvZGVPZmZzZXRzKCkuc2l6ZSgpOyBpLS07KSB7CiAgICAgICAgICAgICB1bnNpZ25lZCBieXRl
Y29kZU9mZnNldCA9IGJsb2NrLT5ieXRlY29kZU9mZnNldHMoKVtpXTsKLSAgICAgICAgICAgIHN0
ZXBPdmVySW5zdHJ1Y3Rpb24obV9jb2RlQmxvY2ssIGJsb2NrLCBtX2Jhc2ljQmxvY2tzLCBieXRl
Y29kZU9mZnNldCwgb3V0KTsKKyAgICAgICAgICAgIHN0ZXBPdmVySW5zdHJ1Y3Rpb24obV9ncmFw
aCwgYnl0ZWNvZGVPZmZzZXQsIG91dCk7CiAgICAgICAgICAgICByZXN1bHQubV9tYXBbYnl0ZWNv
ZGVPZmZzZXRdID0gb3V0OwogICAgICAgICB9CiAgICAgfQpAQCAtMjY2LDExICsyMDcsMTEgQEAg
dm9pZCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGVLaWxscyhCeXRlY29kZUtpbGxz
JiByZXN1bHQpCiB7CiAgICAgRmFzdEJpdFZlY3RvciBvdXQ7CiAgICAgCi0gICAgcmVzdWx0Lm1f
Y29kZUJsb2NrID0gbV9jb2RlQmxvY2s7Ci0gICAgcmVzdWx0Lm1fa2lsbFNldHMgPSBzdGQ6Om1h
a2VfdW5pcXVlPEJ5dGVjb2RlS2lsbHM6OktpbGxTZXRbXT4obV9jb2RlQmxvY2stPmluc3RydWN0
aW9ucygpLnNpemUoKSk7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBtX2dyYXBoLmNvZGVC
bG9jaygpOworICAgIHJlc3VsdC5tX2NvZGVCbG9jayA9IGNvZGVCbG9jazsKKyAgICByZXN1bHQu
bV9raWxsU2V0cyA9IHN0ZDo6bWFrZV91bmlxdWU8Qnl0ZWNvZGVLaWxsczo6S2lsbFNldFtdPihj
b2RlQmxvY2stPmluc3RydWN0aW9ucygpLnNpemUoKSk7CiAgICAgCi0gICAgZm9yICh1bnNpZ25l
ZCBpID0gbV9iYXNpY0Jsb2Nrcy5zaXplKCk7IGktLTspIHsKLSAgICAgICAgQnl0ZWNvZGVCYXNp
Y0Jsb2NrKiBibG9jayA9IG1fYmFzaWNCbG9ja3NbaV0uZ2V0KCk7CisgICAgZm9yIChzdGQ6OnVu
aXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiYgYmxvY2sgOiBtX2dyYXBoLmJhc2ljQmxvY2tz
SW5SZXZlcnNlT3JkZXIoKSkgewogICAgICAgICBpZiAoYmxvY2stPmlzRW50cnlCbG9jaygpIHx8
IGJsb2NrLT5pc0V4aXRCbG9jaygpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIApA
QCAtMjc5LDcgKzIyMCw3IEBAIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpjb21wdXRl
S2lsbHMoQnl0ZWNvZGVLaWxscyYgcmVzdWx0KQogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBi
bG9jay0+Ynl0ZWNvZGVPZmZzZXRzKCkuc2l6ZSgpOyBpLS07KSB7CiAgICAgICAgICAgICB1bnNp
Z25lZCBieXRlY29kZU9mZnNldCA9IGJsb2NrLT5ieXRlY29kZU9mZnNldHMoKVtpXTsKICAgICAg
ICAgICAgIHN0ZXBPdmVySW5zdHJ1Y3Rpb24oCi0gICAgICAgICAgICAgICAgbV9jb2RlQmxvY2ss
IGJsb2NrLCBtX2Jhc2ljQmxvY2tzLCBieXRlY29kZU9mZnNldCwKKyAgICAgICAgICAgICAgICBt
X2dyYXBoLCBieXRlY29kZU9mZnNldCwKICAgICAgICAgICAgICAgICBbJl0gKHVuc2lnbmVkIGlu
ZGV4KSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgZm9yIHVzZXMuCiAgICAgICAg
ICAgICAgICAgICAgIGlmIChvdXQuZ2V0KGluZGV4KSkKQEAgLTI5NywxMiArMjM4LDEzIEBAIHZv
aWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlS2lsbHMoQnl0ZWNvZGVLaWxscyYg
cmVzdWx0KQogCiB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6ZHVtcFJlc3VsdHMoKQog
ewotICAgIGRhdGFMb2coIlxuRHVtcGluZyBieXRlY29kZSBsaXZlbmVzcyBmb3IgIiwgKm1fY29k
ZUJsb2NrLCAiOlxuIik7Ci0gICAgSW50ZXJwcmV0ZXIqIGludGVycHJldGVyID0gbV9jb2RlQmxv
Y2stPnZtKCktPmludGVycHJldGVyOwotICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdp
biA9IG1fY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpOwotICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBtX2Jhc2ljQmxvY2tzLnNpemUoKTsgaSsrKSB7Ci0gICAgICAgIEJ5dGVj
b2RlQmFzaWNCbG9jayogYmxvY2sgPSBtX2Jhc2ljQmxvY2tzW2ldLmdldCgpOwotICAgICAgICBk
YXRhTG9nRigiXG5CeXRlY29kZSBiYXNpYyBibG9jayAldTogJXAgKG9mZnNldDogJXUsIGxlbmd0
aDogJXUpXG4iLCBpLCBibG9jaywgYmxvY2stPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCksIGJsb2Nr
LT50b3RhbEJ5dGVjb2RlTGVuZ3RoKCkpOworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gbV9n
cmFwaC5jb2RlQmxvY2soKTsKKyAgICBkYXRhTG9nKCJcbkR1bXBpbmcgYnl0ZWNvZGUgbGl2ZW5l
c3MgZm9yICIsICpjb2RlQmxvY2ssICI6XG4iKTsKKyAgICBJbnRlcnByZXRlciogaW50ZXJwcmV0
ZXIgPSBjb2RlQmxvY2stPnZtKCktPmludGVycHJldGVyOworICAgIEluc3RydWN0aW9uKiBpbnN0
cnVjdGlvbnNCZWdpbiA9IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsKKyAgICB1
bnNpZ25lZCBpID0gMDsKKyAgICBmb3IgKHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxv
Y2s+JiBibG9jayA6IG1fZ3JhcGguYmFzaWNCbG9ja3MoKSkgeworICAgICAgICBkYXRhTG9nRigi
XG5CeXRlY29kZSBiYXNpYyBibG9jayAldTogJXAgKG9mZnNldDogJXUsIGxlbmd0aDogJXUpXG4i
LCBpKyssIGJsb2NrLmdldCgpLCBibG9jay0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKSwgYmxvY2st
PnRvdGFsQnl0ZWNvZGVMZW5ndGgoKSk7CiAgICAgICAgIGRhdGFMb2dGKCJTdWNjZXNzb3JzOiAi
KTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8IGJsb2NrLT5zdWNjZXNzb3JzKCku
c2l6ZSgpOyBqKyspIHsKICAgICAgICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogc3VjY2Vzc29y
ID0gYmxvY2stPnN1Y2Nlc3NvcnMoKVtqXTsKQEAgLTMxMCwxMSArMjUyLDExIEBAIHZvaWQgQnl0
ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpkdW1wUmVzdWx0cygpCiAgICAgICAgIH0KICAgICAgICAg
ZGF0YUxvZ0YoIlxuIik7CiAgICAgICAgIGlmIChibG9jay0+aXNFbnRyeUJsb2NrKCkpIHsKLSAg
ICAgICAgICAgIGRhdGFMb2dGKCJFbnRyeSBibG9jayAlcFxuIiwgYmxvY2spOworICAgICAgICAg
ICAgZGF0YUxvZ0YoIkVudHJ5IGJsb2NrICVwXG4iLCBibG9jay5nZXQoKSk7CiAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgfQogICAgICAgICBpZiAoYmxvY2stPmlzRXhpdEJsb2NrKCkp
IHsKLSAgICAgICAgICAgIGRhdGFMb2dGKCJFeGl0IGJsb2NrOiAlcFxuIiwgYmxvY2spOworICAg
ICAgICAgICAgZGF0YUxvZ0YoIkV4aXQgYmxvY2s6ICVwXG4iLCBibG9jay5nZXQoKSk7CiAgICAg
ICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogICAgICAgICBmb3IgKHVuc2lnbmVkIGJ5dGVj
b2RlT2Zmc2V0ID0gYmxvY2stPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCk7IGJ5dGVjb2RlT2Zmc2V0
IDwgYmxvY2stPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCkgKyBibG9jay0+dG90YWxCeXRlY29kZUxl
bmd0aCgpOykgewpAQCAtMzI3LDcgKzI2OSw3IEBAIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5
c2lzOjpkdW1wUmVzdWx0cygpCiAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2dGKCIldSAiLCBq
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGRhdGFMb2dGKCJcbiIpOwotICAgICAgICAg
ICAgbV9jb2RlQmxvY2stPmR1bXBCeXRlY29kZShXVEY6OmRhdGFGaWxlKCksIG1fY29kZUJsb2Nr
LT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpLCBpbnN0cnVjdGlvbnNCZWdpbiwgY3VycmVu
dEluc3RydWN0aW9uKTsKKyAgICAgICAgICAgIGNvZGVCbG9jay0+ZHVtcEJ5dGVjb2RlKFdURjo6
ZGF0YUZpbGUoKSwgY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpLCBpbnN0
cnVjdGlvbnNCZWdpbiwgY3VycmVudEluc3RydWN0aW9uKTsKIAogICAgICAgICAgICAgT3Bjb2Rl
SUQgb3Bjb2RlSUQgPSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25zQmVnaW5b
Ynl0ZWNvZGVPZmZzZXRdLnUub3Bjb2RlKTsKICAgICAgICAgICAgIHVuc2lnbmVkIG9wY29kZUxl
bmd0aCA9IG9wY29kZUxlbmd0aHNbb3Bjb2RlSURdOwpAQCAtMzQ2LDggKzI4OCw2IEBAIHZvaWQg
Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpkdW1wUmVzdWx0cygpCiAKIHZvaWQgQnl0ZWNvZGVM
aXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlKCkKIHsKLSAgICBjb21wdXRlQnl0ZWNvZGVCYXNpY0Js
b2NrcyhtX2NvZGVCbG9jaywgbV9iYXNpY0Jsb2Nrcyk7Ci0gICAgQVNTRVJUKG1fYmFzaWNCbG9j
a3Muc2l6ZSgpKTsKICAgICBydW5MaXZlbmVzc0ZpeHBvaW50KCk7CiAKICAgICBpZiAoT3B0aW9u
czo6ZHVtcEJ5dGVjb2RlTGl2ZW5lc3NSZXN1bHRzKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmgKaW5kZXgg
ZWNlMTZmMjFmMDE1MTBhNjQyN2ZkODQxMTQwNzliZWQ4NzBjMDg3NS4uMjE4MmMyMDBjZWI4NzM5
MjQ1MzI3NDY2MWY4Yzc0ZTIyNjIzNGYyMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuaApAQCAtMjMsMTAg
KzIzLDExIEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lm
bmRlZiBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNfaAotI2RlZmluZSBCeXRlY29kZUxpdmVuZXNz
QW5hbHlzaXNfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJCeXRlY29kZUJhc2ljQmxvY2su
aCIKKyNpbmNsdWRlICJCeXRlY29kZUdyYXBoLmgiCisjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAj
aW5jbHVkZSA8d3RmL0Zhc3RCaXRWZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgog
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTM0LDcgKzM1LDYgQEAKIG5hbWVzcGFjZSBKU0Mg
ewogCiBjbGFzcyBCeXRlY29kZUtpbGxzOwotY2xhc3MgQ29kZUJsb2NrOwogY2xhc3MgRnVsbEJ5
dGVjb2RlTGl2ZW5lc3M7CiAKIGNsYXNzIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcyB7CkBAIC01
NiwxNCArNTYsMTIgQEAgY2xhc3MgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzIHsKIAogICAgIHZv
aWQgZ2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29kZU9mZnNldCh1bnNpZ25lZCBieXRlY29kZU9mZnNl
dCwgRmFzdEJpdFZlY3RvciYpOwogCi0gICAgQ29kZUJsb2NrKiBtX2NvZGVCbG9jazsKLSAgICBW
ZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+IG1fYmFzaWNCbG9ja3M7
CisgICAgQnl0ZWNvZGVHcmFwaDxDb2RlQmxvY2s+IG1fZ3JhcGg7CiB9OwogCiBpbmxpbmUgYm9v
bCBvcGVyYW5kSXNBbHdheXNMaXZlKGludCBvcGVyYW5kKTsKIGlubGluZSBib29sIG9wZXJhbmRU
aGF0SXNOb3RBbHdheXNMaXZlSXNMaXZlKGNvbnN0IEZhc3RCaXRWZWN0b3ImIG91dCwgaW50IG9w
ZXJhbmQpOwogaW5saW5lIGJvb2wgb3BlcmFuZElzTGl2ZShjb25zdCBGYXN0Qml0VmVjdG9yJiBv
dXQsIGludCBvcGVyYW5kKTsKK2lubGluZSBib29sIGlzVmFsaWRSZWdpc3RlckZvckxpdmVuZXNz
KGludCBvcGVyYW5kKTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCi0KLSNlbmRpZiAvLyBCeXRlY29k
ZUxpdmVuZXNzQW5hbHlzaXNfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGluZXMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNJbmxpbmVzLmgKaW5kZXgg
OWI1Yzc1NWZjYjZjZDUxODA1MTQ1MDA3ODkyMmFjNGQ2ZDRkMjM4Zi4uOTBjMjkyOTlhMjVmNTc5
Y2RhNjQ5ZDk4NzhjZTE1NDhjNDhjNzU4OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGluZXMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzSW5saW5l
cy5oCkBAIC01MCw2ICs1MCwxNCBAQCBpbmxpbmUgYm9vbCBvcGVyYW5kSXNMaXZlKGNvbnN0IEZh
c3RCaXRWZWN0b3ImIG91dCwgaW50IG9wZXJhbmQpCiAgICAgcmV0dXJuIG9wZXJhbmRJc0Fsd2F5
c0xpdmUob3BlcmFuZCkgfHwgb3BlcmFuZFRoYXRJc05vdEFsd2F5c0xpdmVJc0xpdmUob3V0LCBv
cGVyYW5kKTsKIH0KIAoraW5saW5lIGJvb2wgaXNWYWxpZFJlZ2lzdGVyRm9yTGl2ZW5lc3MoaW50
IG9wZXJhbmQpCit7CisgICAgVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWcob3BlcmFuZCk7Cisg
ICAgaWYgKHZpcnR1YWxSZWcuaXNDb25zdGFudCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgcmV0dXJuIHZpcnR1YWxSZWcuaXNMb2NhbCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MK
IAogI2VuZGlmIC8vIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGluZXNfaApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTW9kaWZpY2F0aW9uU2V0
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZU1vZGlmaWNhdGlv
blNldC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uOGFjMmY4ZWNhMTE1OWMyMzE2YWI1MThiM2NhYWE3NDc0OGVi
YTU2MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZU1vZGlmaWNhdGlvblNldC5jcHAKQEAgLTAsMCArMSw4NCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNiBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJCeXRlY29kZU1vZGlmaWNhdGlv
blNldC5oIgorCisjaW5jbHVkZSA8d3RmL0J1YmJsZVNvcnQuaD4KKworbmFtZXNwYWNlIEpTQyB7
CisKK2ludCBCeXRlY29kZU1vZGlmaWNhdGlvblNldDo6YWRqdXN0T2Zmc2V0KGludCBieXRlY29k
ZU9mZnNldCwgaW50IGp1bXBUYXJnZXQpCit7CisgICAgaWYgKGJ5dGVjb2RlT2Zmc2V0IDwganVt
cFRhcmdldCkgeworICAgICAgICBhdXRvIHN0YXJ0ID0gc3RkOjpsb3dlcl9ib3VuZChtX2luc2Vy
dGlvbnMuYmVnaW4oKSwgbV9pbnNlcnRpb25zLmVuZCgpLCBieXRlY29kZU9mZnNldCwgWyZdIChj
b25zdCBJbnNlcnRpb24mIGluc2VydGlvbiwgaW50IGJ5dGVjb2RlT2Zmc2V0KSB7CisgICAgICAg
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihpbnNlcnRpb24uaW5kZXgoKSkgPCBieXRlY29k
ZU9mZnNldDsKKyAgICAgICAgfSk7CisgICAgICAgIGlmIChzdGFydCAhPSBtX2luc2VydGlvbnMu
ZW5kKCkpIHsKKyAgICAgICAgICAgIGF1dG8gZW5kID0gc3RkOjpsb3dlcl9ib3VuZChtX2luc2Vy
dGlvbnMuYmVnaW4oKSwgbV9pbnNlcnRpb25zLmVuZCgpLCBqdW1wVGFyZ2V0LCBbJl0gKGNvbnN0
IEluc2VydGlvbiYgaW5zZXJ0aW9uLCBpbnQganVtcFRhcmdldCkgeworICAgICAgICAgICAgICAg
IHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KGluc2VydGlvbi5pbmRleCgpKSA8IGp1bXBUYXJnZXQ7
CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIGZvciAoOyBzdGFydCAhPSBlbmQ7ICsrc3Rh
cnQpIHsKKyAgICAgICAgICAgICAgICBpZiAoc3RhcnQtPmVsZW1lbnQoKS50eXBlID09IENvbW1h
bmQ6OlR5cGU6OlJlbW92ZSkKKyAgICAgICAgICAgICAgICAgICAganVtcFRhcmdldCAtPSBzdGFy
dC0+ZWxlbWVudCgpLmxlbmd0aDsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgICAgIGp1bXBUYXJnZXQgKz0gc3RhcnQtPmVsZW1lbnQoKS5sZW5ndGg7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGp1bXBUYXJnZXQgLSBieXRlY29kZU9mZnNl
dDsKKyAgICB9CisKKyAgICBpZiAoYnl0ZWNvZGVPZmZzZXQgPT0ganVtcFRhcmdldCkKKyAgICAg
ICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4gLWFkanVzdE9mZnNldChqdW1wVGFyZ2V0LCBieXRl
Y29kZU9mZnNldCk7Cit9CisKK3ZvaWQgQnl0ZWNvZGVNb2RpZmljYXRpb25TZXQ6OmFwcGx5TW9k
aWZpY2F0aW9uKCkKK3sKKyAgICBmb3IgKHNpemVfdCBpbnNlcnRpb25JbmRleCA9IG1faW5zZXJ0
aW9ucy5zaXplKCk7IGluc2VydGlvbkluZGV4LS07KSB7CisgICAgICAgIGNvbnN0IEluc2VydGlv
biYgaW5zZXJ0aW9uID0gbV9pbnNlcnRpb25zW2luc2VydGlvbkluZGV4XTsKKyAgICAgICAgaWYg
KGluc2VydGlvbi5lbGVtZW50KCkudHlwZSA9PSBDb21tYW5kOjpUeXBlOjpSZW1vdmUpCisgICAg
ICAgICAgICBtX2dyYXBoLmluc3RydWN0aW9ucygpLnJlbW92ZShpbnNlcnRpb24uaW5kZXgoKSwg
aW5zZXJ0aW9uLmVsZW1lbnQoKS5sZW5ndGgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBt
X2dyYXBoLmluc3RydWN0aW9ucygpLmluc2VydChpbnNlcnRpb24uaW5kZXgoKSwgaW5zZXJ0aW9u
LmVsZW1lbnQoKS5ieXRlY29kZS5pbnN0cnVjdGlvbnMsIG9wY29kZUxlbmd0aChpbnNlcnRpb24u
ZWxlbWVudCgpLmJ5dGVjb2RlLmluc3RydWN0aW9uc1swXS51Lm9wY29kZSkpOworICAgIH0KKyAg
ICBtX2luc2VydGlvbnMuY2xlYXIoKTsKK30KKwordm9pZCBCeXRlY29kZU1vZGlmaWNhdGlvblNl
dDo6ZXhlY3V0ZSgpCit7CisgICAgV1RGOjpidWJibGVTb3J0KG1faW5zZXJ0aW9ucy5iZWdpbigp
LCBtX2luc2VydGlvbnMuZW5kKCksIFtdIChjb25zdCBJbnNlcnRpb24mIGxocywgY29uc3QgSW5z
ZXJ0aW9uJiByaHMpIHsKKyAgICAgICAgLy8gV2Ugd291bGQgbGlrZSB0byBwZXJmb3JtIHJlbW92
ZSBvcGVyYXRpb24gYmVmb3JlIGluc2VydGlvbi4KKyAgICAgICAgaWYgKGxocy5pbmRleCgpID09
IHJocy5pbmRleCgpKQorICAgICAgICAgICAgcmV0dXJuIHJocy5lbGVtZW50KCkudHlwZSA9PSBD
b21tYW5kOjpUeXBlOjpSZW1vdmU7CisgICAgICAgIHJldHVybiBsaHMgPCByaHM7CisgICAgfSk7
CisKKyAgICBVbmxpbmtlZENvZGVCbG9jayogY29kZUJsb2NrID0gbV9ncmFwaC5jb2RlQmxvY2so
KTsKKyAgICBjb2RlQmxvY2stPmFwcGx5TW9kaWZpY2F0aW9uKCp0aGlzKTsKK30KKworfSAvLyBu
YW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Qnl0ZWNvZGVNb2RpZmljYXRpb25TZXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZU1vZGlmaWNhdGlvblNldC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc5MzlkYWE0NWM4ZTI2NDIw
OWU3YTIyZWNmM2UwZDc4YTRhZDM3YTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVNb2RpZmljYXRpb25TZXQuaApAQCAtMCwwICsxLDg4
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVh
QGdtYWlsLmNvbT4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJCeXRlY29k
ZUdyYXBoLmgiCisjaW5jbHVkZSAiQnl0ZWNvZGVzLmgiCisjaW5jbHVkZSAiVW5saW5rZWRDb2Rl
QmxvY2suaCIKKyNpbmNsdWRlIDx3dGYvSW5zZXJ0aW9uLmg+CisKK25hbWVzcGFjZSBKU0Mgewor
CitjbGFzcyBCeXRlY29kZU1vZGlmaWNhdGlvblNldCB7CitwdWJsaWM6CisgICAgc3RydWN0IElu
c2VydGVkQnl0ZWNvZGUgeworICAgICAgICBVbmxpbmtlZEluc3RydWN0aW9uIGluc3RydWN0aW9u
c1tNQVhfT1BDT0RFX0xFTkdUSF9PRl9CWVRFQ09ERV07CisgICAgfTsKKworICAgIHN0cnVjdCBD
b21tYW5kIHsKKyAgICAgICAgZW51bSBjbGFzcyBUeXBlIHsKKyAgICAgICAgICAgIEluc2VydCwK
KyAgICAgICAgICAgIFJlbW92ZSwKKyAgICAgICAgfTsKKworICAgICAgICBUeXBlIHR5cGU7Cisg
ICAgICAgIHNpemVfdCBsZW5ndGg7CisgICAgICAgIEluc2VydGVkQnl0ZWNvZGUgYnl0ZWNvZGU7
CisgICAgfTsKKworICAgIHR5cGVkZWYgV1RGOjpJbnNlcnRpb248Q29tbWFuZD4gSW5zZXJ0aW9u
OworCisgICAgQnl0ZWNvZGVNb2RpZmljYXRpb25TZXQoQnl0ZWNvZGVHcmFwaDxVbmxpbmtlZENv
ZGVCbG9jaz4mIGdyYXBoKQorICAgICAgICA6IG1fZ3JhcGgoZ3JhcGgpCisgICAgeworICAgIH0K
KworICAgIHRlbXBsYXRlPGNsYXNzLi4uIEFyZ3M+CisgICAgdm9pZCBpbnNlcnQodW5zaWduZWQg
Ynl0ZWNvZGVPZmZzZXQsIE9wY29kZUlEIG9wY29kZUlELCBBcmdzLi4uIGFyZ3MpCisgICAgewor
ICAgICAgICBJbnNlcnRlZEJ5dGVjb2RlIGJ5dGVjb2RlID0geyB7CisgICAgICAgICAgICBVbmxp
bmtlZEluc3RydWN0aW9uKG9wY29kZUlEKSwKKyAgICAgICAgICAgIFVubGlua2VkSW5zdHJ1Y3Rp
b24oYXJncykuLi4KKyAgICAgICAgfSB9OworICAgICAgICBtX2luc2VydGlvbnMuYXBwZW5kKElu
c2VydGlvbihieXRlY29kZU9mZnNldCwgQ29tbWFuZCB7IENvbW1hbmQ6OlR5cGU6Okluc2VydCwg
b3Bjb2RlTGVuZ3RoKG9wY29kZUlEKSwgYnl0ZWNvZGUgfSkpOworICAgIH0KKworICAgIHZvaWQg
cmVtb3ZlQnl0ZWNvZGUodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpCisgICAgeworICAgICAgICBt
X2luc2VydGlvbnMuYXBwZW5kKEluc2VydGlvbihieXRlY29kZU9mZnNldCwgQ29tbWFuZCB7IENv
bW1hbmQ6OlR5cGU6OlJlbW92ZSwgb3Bjb2RlTGVuZ3RoKG1fZ3JhcGguaW5zdHJ1Y3Rpb25zKClb
Ynl0ZWNvZGVPZmZzZXRdLnUub3Bjb2RlKSwgSW5zZXJ0ZWRCeXRlY29kZSB7IH0gfSkpOworICAg
IH0KKworICAgIHZvaWQgZXhlY3V0ZSgpOworCisgICAgQnl0ZWNvZGVHcmFwaDxVbmxpbmtlZENv
ZGVCbG9jaz4mIGdyYXBoKCkgeyByZXR1cm4gbV9ncmFwaDsgfQorCisgICAgaW50IGFkanVzdE9m
ZnNldChpbnQgYnl0ZWNvZGVPZmZzZXQsIGludCBqdW1wVGFyZ2V0KTsKKworcHJpdmF0ZToKKyAg
ICBmcmllbmQgY2xhc3MgVW5saW5rZWRDb2RlQmxvY2s7CisgICAgdm9pZCBhcHBseU1vZGlmaWNh
dGlvbigpOworCisgICAgQnl0ZWNvZGVHcmFwaDxVbmxpbmtlZENvZGVCbG9jaz4mIG1fZ3JhcGg7
CisgICAgVmVjdG9yPEluc2VydGlvbiwgOD4gbV9pbnNlcnRpb25zOworfTsKKworfSAvLyBuYW1l
c3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVVc2VEZWYuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVz
ZURlZi5oCmluZGV4IDU3MDg0NGMzNWQ5MDI1ZWU5MWFkNDY5OGJhYjliYzFhNjdmZDgzNDkuLjRj
YTU4ZDAzZmM5Zjc3NjAwYjEwZmM5NzYyMzc5ZGY2ZjVkOWE1NDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCkBAIC0yNywxOCArMjcsMTMg
QEAKICNkZWZpbmUgQnl0ZWNvZGVVc2VEZWZfaAogCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisj
aW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKLXRlbXBsYXRlPHR5
cGVuYW1lIEZ1bmN0b3I+Ci12b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoCi0gICAg
Q29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2ssIHVuc2lnbmVk
IGJ5dGVjb2RlT2Zmc2V0LCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQordGVtcGxhdGU8dHlwZW5h
bWUgQmxvY2ssIHR5cGVuYW1lIEZ1bmN0b3IsIHR5cGVuYW1lIEluc3RydWN0aW9uPgordm9pZCBj
b21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KEJsb2NrKiBjb2RlQmxvY2ssIE9wY29kZUlEIG9w
Y29kZUlELCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3Ip
CiB7Ci0gICAgSW50ZXJwcmV0ZXIqIGludGVycHJldGVyID0gY29kZUJsb2NrLT52bSgpLT5pbnRl
cnByZXRlcjsKLSAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4gPSBjb2RlQmxvY2st
Pmluc3RydWN0aW9ucygpLmJlZ2luKCk7Ci0gICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uID0g
Jmluc3RydWN0aW9uc0JlZ2luW2J5dGVjb2RlT2Zmc2V0XTsKLSAgICBPcGNvZGVJRCBvcGNvZGVJ
RCA9IGludGVycHJldGVyLT5nZXRPcGNvZGVJRChpbnN0cnVjdGlvbi0+dS5vcGNvZGUpOwotCiAg
ICAgaWYgKG9wY29kZUlEICE9IG9wX2VudGVyICYmIGNvZGVCbG9jay0+d2FzQ29tcGlsZWRXaXRo
RGVidWdnaW5nT3Bjb2RlcygpICYmIGNvZGVCbG9jay0+c2NvcGVSZWdpc3RlcigpLmlzVmFsaWQo
KSkKICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgY29k
ZUJsb2NrLT5zY29wZVJlZ2lzdGVyKCkub2Zmc2V0KCkpOwogCkBAIC03NSw4ICs3MCw3IEBAIHZv
aWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCgKICAgICBjYXNlIG9wX2puZXFfbnVsbDoK
ICAgICBjYXNlIG9wX2RlYzoKICAgICBjYXNlIG9wX2luYzoKLSAgICBjYXNlIG9wX2xvZ19zaGFk
b3dfY2hpY2tlbl9wcm9sb2d1ZToKLSAgICBjYXNlIG9wX3Jlc3VtZTogeworICAgIGNhc2Ugb3Bf
bG9nX3NoYWRvd19jaGlja2VuX3Byb2xvZ3VlOiB7CiAgICAgICAgIEFTU0VSVChvcGNvZGVMZW5n
dGhzW29wY29kZUlEXSA+IDEpOwogICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rp
b24sIG9wY29kZUlELCBpbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOwogICAgICAgICByZXR1cm47
CkBAIC0yODcsMjIgKzI4MSwxMyBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQo
CiAgICAgICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBj
b2RlQmxvY2stPnNjb3BlUmVnaXN0ZXIoKS5vZmZzZXQoKSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9Ci0gICAgY2FzZSBvcF9zYXZlOiB7Ci0gICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0
cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7Ci0gICAgICAgIHVu
c2lnbmVkIG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldCA9IGJ5dGVjb2RlT2Zmc2V0ICsgaW5zdHJ1
Y3Rpb25bM10udS5vcGVyYW5kOwotICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIG1lcmdlUG9p
bnRCbG9jayA9IG51bGxwdHI7Ci0gICAgICAgIGZvciAoQnl0ZWNvZGVCYXNpY0Jsb2NrKiBzdWNj
ZXNzb3IgOiBibG9jay0+c3VjY2Vzc29ycygpKSB7Ci0gICAgICAgICAgICBpZiAoc3VjY2Vzc29y
LT5sZWFkZXJCeXRlY29kZU9mZnNldCgpID09IG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldCkgewot
ICAgICAgICAgICAgICAgIG1lcmdlUG9pbnRCbG9jayA9IHN1Y2Nlc3NvcjsKLSAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBBU1NFUlQobWVy
Z2VQb2ludEJsb2NrKTsKLSAgICAgICAgbWVyZ2VQb2ludEJsb2NrLT5pbigpLmZvckVhY2hTZXRC
aXQoWyZdKHVuc2lnbmVkIGxvY2FsKSB7Ci0gICAgICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywg
aW5zdHJ1Y3Rpb24sIG9wY29kZUlELCB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChsb2NhbCkub2Zm
c2V0KCkpOwotICAgICAgICB9KTsKKworICAgIGNhc2Ugb3Bfc2F2ZToKKyAgICBjYXNlIG9wX3Jl
c3VtZTogeworICAgICAgICAvLyBEbyBub3RoaW5nIGluIGxpdmVuZXNzIGFuYWx5c2lzLgogICAg
ICAgICByZXR1cm47CiAgICAgfQorCiAgICAgZGVmYXVsdDoKICAgICAgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgYnJlYWs7CkBAIC0zMTAsMTIgKzI5NSwxOCBAQCB2
b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1l
IEZ1bmN0b3I+Ci12b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlT2Zm
c2V0LCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQordm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2Rl
T2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgY29u
c3QgRnVuY3RvciYgZnVuY3RvcikKIHsKICAgICBJbnRlcnByZXRlciogaW50ZXJwcmV0ZXIgPSBj
b2RlQmxvY2stPnZtKCktPmludGVycHJldGVyOwogICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlv
bnNCZWdpbiA9IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsKICAgICBJbnN0cnVj
dGlvbiogaW5zdHJ1Y3Rpb24gPSAmaW5zdHJ1Y3Rpb25zQmVnaW5bYnl0ZWNvZGVPZmZzZXRdOwog
ICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGluc3RydWN0
aW9uLT51Lm9wY29kZSk7CisgICAgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldChjb2RlQmxv
Y2ssIG9wY29kZUlELCBpbnN0cnVjdGlvbiwgZnVuY3Rvcik7Cit9CisKK3RlbXBsYXRlPHR5cGVu
YW1lIEJsb2NrLCB0eXBlbmFtZSBJbnN0cnVjdGlvbiwgdHlwZW5hbWUgRnVuY3Rvcj4KK3ZvaWQg
Y29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChCbG9jayogY29kZUJsb2NrLCBPcGNvZGVJRCBv
cGNvZGVJRCwgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9y
KQorewogICAgIHN3aXRjaCAob3Bjb2RlSUQpIHsKICAgICAvLyBUaGVzZSBkb24ndCBkZWZpbmUg
YW55dGhpbmcuCiAgICAgY2FzZSBvcF9jb3B5X3Jlc3Q6CkBAIC0zMjMsNyArMzE0LDYgQEAgdm9p
ZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRl
Y29kZUJhc2ljQmxvY2sqIGJsb2MKICAgICBjYXNlIG9wX2VuZDoKICAgICBjYXNlIG9wX3Rocm93
OgogICAgIGNhc2Ugb3BfdGhyb3dfc3RhdGljX2Vycm9yOgotICAgIGNhc2Ugb3Bfc2F2ZToKICAg
ICBjYXNlIG9wX2Fzc2VydDoKICAgICBjYXNlIG9wX2RlYnVnOgogICAgIGNhc2Ugb3BfcmV0OgpA
QCAtNDYzLDcgKzQ1Myw3IEBAIHZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChDb2Rl
QmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jCiAgICAgY2FzZSBvcF9k
ZWxfYnlfaWQ6CiAgICAgY2FzZSBvcF9kZWxfYnlfdmFsOgogICAgIGNhc2Ugb3BfdW5zaWduZWQ6
Ci0gICAgY2FzZSBvcF9nZXRfZnJvbV9hcmd1bWVudHM6IAorICAgIGNhc2Ugb3BfZ2V0X2Zyb21f
YXJndW1lbnRzOgogICAgIGNhc2Ugb3BfZ2V0X3Jlc3RfbGVuZ3RoOiB7CiAgICAgICAgIEFTU0VS
VChvcGNvZGVMZW5ndGhzW29wY29kZUlEXSA+IDEpOwogICAgICAgICBmdW5jdG9yKGNvZGVCbG9j
aywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBpbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOwpAQCAt
NDgwLDE4ICs0NzAsMjcgQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVC
bG9jayogY29kZUJsb2NrLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2MKICAgICAgICAgICAgIGZ1
bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIHZpcnR1YWxSZWdpc3RlckZv
ckxvY2FsKGkpLm9mZnNldCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICBjYXNlIG9w
X3NhdmU6CiAgICAgY2FzZSBvcF9yZXN1bWU6IHsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoYmxv
Y2stPnN1Y2Nlc3NvcnMoKS5zaXplKCkgPT0gMSk7Ci0gICAgICAgIC8vIEZJWE1FOiBUaGlzIGlz
IHJlYWxseSBkaXJ0eS4KLSAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE1OTI4MQotICAgICAgICBibG9jay0+c3VjY2Vzc29ycygpWzBdLT5pbigpLmZv
ckVhY2hTZXRCaXQoWyZdKHVuc2lnbmVkIGxvY2FsKSB7Ci0gICAgICAgICAgICBmdW5jdG9yKGNv
ZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChs
b2NhbCkub2Zmc2V0KCkpOwotICAgICAgICB9KTsKKyAgICAgICAgLy8gRG8gbm90aGluZyBpbiBs
aXZlbmVzcyBhbmFseXNpcy4KICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICBkZWZhdWx0Ogor
ICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm47CiAg
ICAgfQogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgordm9pZCBjb21wdXRlRGVmc0Zv
ckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9m
ZnNldCwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikKK3sKKyAgICBJbnRlcnByZXRlciogaW50ZXJw
cmV0ZXIgPSBjb2RlQmxvY2stPnZtKCktPmludGVycHJldGVyOworICAgIEluc3RydWN0aW9uKiBp
bnN0cnVjdGlvbnNCZWdpbiA9IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsKKyAg
ICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSAmaW5zdHJ1Y3Rpb25zQmVnaW5bYnl0ZWNvZGVP
ZmZzZXRdOworICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0ZXItPmdldE9wY29kZUlE
KGluc3RydWN0aW9uLT51Lm9wY29kZSk7CisgICAgY29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNl
dChjb2RlQmxvY2ssIG9wY29kZUlELCBpbnN0cnVjdGlvbiwgZnVuY3Rvcik7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gQnl0ZWNvZGVVc2VEZWZfaApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCAzZjdkMmYwNWI5OTAwNTMy
Yjk2YTdkNmIyZDYxZWQyYTNlNjhkOGIzLi41MjE5ZWJjMTQ2YmJlMzRlMWU4ZWRhNzUxOTU1MmMw
YjcxNmFmN2E2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmNwcApAQCAtMzIsNiArMzIsNyBAQAogCiAjaW5jbHVkZSAiQmFzaWNCbG9ja0xvY2F0aW9uLmgi
CiAjaW5jbHVkZSAiQnl0ZWNvZGVHZW5lcmF0b3IuaCIKKyNpbmNsdWRlICJCeXRlY29kZUxpdmVu
ZXNzQW5hbHlzaXMuaCIKICNpbmNsdWRlICJCeXRlY29kZVVzZURlZi5oIgogI2luY2x1ZGUgIkNh
bGxMaW5rU3RhdHVzLmgiCiAjaW5jbHVkZSAiREZHQ2FwYWJpbGl0aWVzLmgiCkBAIC02OTQsMTgg
KzY5NSw2IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoUHJpbnRTdHJlYW0mIG91dCkK
ICAgICAgICAgfSB3aGlsZSAoaSA8IG1fcmFyZURhdGEtPm1fc3RyaW5nU3dpdGNoSnVtcFRhYmxl
cy5zaXplKCkpOwogICAgIH0KIAotICAgIGlmIChtX3JhcmVEYXRhICYmICFtX3JhcmVEYXRhLT5t
X2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkLmlzRW1wdHkoKSkgewotICAgICAgICBvdXQucHJpbnRm
KCJcbkxpdmUgQ2FsbGVlIExvY2FsczpcbiIpOwotICAgICAgICB1bnNpZ25lZCBpID0gMDsKLSAg
ICAgICAgZG8gewotICAgICAgICAgICAgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZW5lc3MgPSBt
X3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkW2ldOwotICAgICAgICAgICAgb3V0
LnByaW50ZigiICBsaXZlJTF1ID0gIiwgaSk7Ci0gICAgICAgICAgICBsaXZlbmVzcy5kdW1wKG91
dCk7Ci0gICAgICAgICAgICBvdXQucHJpbnRmKCJcbiIpOwotICAgICAgICAgICAgKytpOwotICAg
ICAgICB9IHdoaWxlIChpIDwgbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZC5z
aXplKCkpOwotICAgIH0KLQogICAgIG91dC5wcmludGYoIlxuIik7CiB9CiAKQEAgLTE2NjksMzEg
KzE2NTgsNiBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKAogICAgICAgICAgICAgb3V0
LnByaW50ZigiJXMsICVkIiwgZGVidWdIb29rTmFtZShkZWJ1Z0hvb2tJRCksIGhhc0JyZWFrcG9p
bnRGbGFnKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIGNhc2Ugb3Bf
c2F2ZTogewotICAgICAgICAgICAgaW50IGdlbmVyYXRvciA9ICgrK2l0KS0+dS5vcGVyYW5kOwot
ICAgICAgICAgICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gKCsraXQpLT51LnVu
c2lnbmVkVmFsdWU7Ci0gICAgICAgICAgICBpbnQgb2Zmc2V0ID0gKCsraXQpLT51Lm9wZXJhbmQ7
Ci0gICAgICAgICAgICBGYXN0Qml0VmVjdG9yIGxpdmVuZXNzOwotICAgICAgICAgICAgaWYgKGxp
dmVDYWxsZWVMb2NhbHNJbmRleCA8IG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWll
bGQuc2l6ZSgpKQotICAgICAgICAgICAgICAgIGxpdmVuZXNzID0gbV9yYXJlRGF0YS0+bV9saXZl
Q2FsbGVlTG9jYWxzQXRZaWVsZFtsaXZlQ2FsbGVlTG9jYWxzSW5kZXhdOwotICAgICAgICAgICAg
cHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAic2F2ZSIpOwotICAg
ICAgICAgICAgb3V0LnByaW50ZigiJXMsICIsIHJlZ2lzdGVyTmFtZShnZW5lcmF0b3IpLmRhdGEo
KSk7Ci0gICAgICAgICAgICBsaXZlbmVzcy5kdW1wKG91dCk7Ci0gICAgICAgICAgICBvdXQucHJp
bnRmKCIoQGxpdmUlMXUpLCAlZCgtPiVkKSIsIGxpdmVDYWxsZWVMb2NhbHNJbmRleCwgb2Zmc2V0
LCBsb2NhdGlvbiArIG9mZnNldCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAg
ICAgICBjYXNlIG9wX3Jlc3VtZTogewotICAgICAgICAgICAgaW50IGdlbmVyYXRvciA9ICgrK2l0
KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4
ID0gKCsraXQpLT51LnVuc2lnbmVkVmFsdWU7Ci0gICAgICAgICAgICBGYXN0Qml0VmVjdG9yIGxp
dmVuZXNzOwotICAgICAgICAgICAgaWYgKGxpdmVDYWxsZWVMb2NhbHNJbmRleCA8IG1fcmFyZURh
dGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQuc2l6ZSgpKQotICAgICAgICAgICAgICAgIGxp
dmVuZXNzID0gbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZFtsaXZlQ2FsbGVl
TG9jYWxzSW5kZXhdOwotICAgICAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywg
bG9jYXRpb24sIGl0LCAicmVzdW1lIik7Ci0gICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgIiwg
cmVnaXN0ZXJOYW1lKGdlbmVyYXRvcikuZGF0YSgpKTsKLSAgICAgICAgICAgIGxpdmVuZXNzLmR1
bXAob3V0KTsKLSAgICAgICAgICAgIG91dC5wcmludGYoIihAbGl2ZSUxdSkiLCBsaXZlQ2FsbGVl
TG9jYWxzSW5kZXgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KICAgICAgICAgY2Fz
ZSBvcF9hc3NlcnQ6IHsKICAgICAgICAgICAgIGludCBjb25kaXRpb24gPSAoKytpdCktPnUub3Bl
cmFuZDsKICAgICAgICAgICAgIGludCBsaW5lID0gKCsraXQpLT51Lm9wZXJhbmQ7CkBAIC0xOTA2
LDcgKzE4NzAsNiBAQCB2b2lkIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBDb3B5
UGFyc2VkQmxvY2tUYWcsIENvZGVCbG9jayYgb3RoZXIpCiAgICAgICAgIG1fcmFyZURhdGEtPm1f
Y29uc3RhbnRCdWZmZXJzID0gb3RoZXIubV9yYXJlRGF0YS0+bV9jb25zdGFudEJ1ZmZlcnM7CiAg
ICAgICAgIG1fcmFyZURhdGEtPm1fc3dpdGNoSnVtcFRhYmxlcyA9IG90aGVyLm1fcmFyZURhdGEt
Pm1fc3dpdGNoSnVtcFRhYmxlczsKICAgICAgICAgbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hK
dW1wVGFibGVzID0gb3RoZXIubV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzOwot
ICAgICAgICBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkID0gb3RoZXIubV9y
YXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZDsKICAgICB9CiAgICAgCiAgICAgaGVh
cCgpLT5tX2NvZGVCbG9ja3MuYWRkKHRoaXMpOwpAQCAtMjAyOCw3ICsxOTkxLDcgQEAgdm9pZCBD
b2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJF
eGVjdXRhYmxlLCBVbmxpbmsKICAgICAgICAgICAgICAgICBVbmxpbmtlZFN0cmluZ0p1bXBUYWJs
ZTo6U3RyaW5nT2Zmc2V0VGFibGU6Oml0ZXJhdG9yIGVuZCA9IHVubGlua2VkQ29kZUJsb2NrLT5z
dHJpbmdTd2l0Y2hKdW1wVGFibGUoaSkub2Zmc2V0VGFibGUuZW5kKCk7CiAgICAgICAgICAgICAg
ICAgZm9yICg7IHB0ciAhPSBlbmQ7ICsrcHRyKSB7CiAgICAgICAgICAgICAgICAgICAgIE9mZnNl
dExvY2F0aW9uIG9mZnNldDsKLSAgICAgICAgICAgICAgICAgICAgb2Zmc2V0LmJyYW5jaE9mZnNl
dCA9IHB0ci0+dmFsdWU7CisgICAgICAgICAgICAgICAgICAgIG9mZnNldC5icmFuY2hPZmZzZXQg
PSBwdHItPnZhbHVlLmJyYW5jaE9mZnNldDsKICAgICAgICAgICAgICAgICAgICAgbV9yYXJlRGF0
YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzW2ldLm9mZnNldFRhYmxlLmFkZChwdHItPmtleSwg
b2Zmc2V0KTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CkBAIC0yMDY4LDExICsy
MDMxLDE3IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4
ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAgLy8gQm9va2tlZXAgdGhlIHN0
cm9uZ2x5IHJlZmVyZW5jZWQgbW9kdWxlIGVudmlyb25tZW50cy4KICAgICBIYXNoU2V0PEpTTW9k
dWxlRW52aXJvbm1lbnQqPiBzdHJvbmdseVJlZmVyZW5jZWRNb2R1bGVFbnZpcm9ubWVudHM7CiAK
LSAgICAvLyBCb29ra2VlcCB0aGUgbWVyZ2UgcG9pbnQgYnl0ZWNvZGUgb2Zmc2V0cy4KLSAgICBW
ZWN0b3I8c2l6ZV90PiBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXRzOwotCiAgICAgUmVmQ291bnRl
ZEFycmF5PEluc3RydWN0aW9uPiBpbnN0cnVjdGlvbnMoaW5zdHJ1Y3Rpb25Db3VudCk7CiAKKyAg
ICB1bnNpZ25lZCB2YWx1ZVByb2ZpbGVDb3VudCA9IDA7CisgICAgYXV0byBsaW5rVmFsdWVQcm9m
aWxlID0gWyZdKHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCB1bnNpZ25lZCBvcExlbmd0aCkgewor
ICAgICAgICB1bnNpZ25lZCB2YWx1ZVByb2ZpbGVJbmRleCA9IHZhbHVlUHJvZmlsZUNvdW50Kys7
CisgICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9ICZtX3ZhbHVlUHJvZmlsZXNbdmFsdWVQ
cm9maWxlSW5kZXhdOworICAgICAgICBBU1NFUlQocHJvZmlsZS0+bV9ieXRlY29kZU9mZnNldCA9
PSAtMSk7CisgICAgICAgIHByb2ZpbGUtPm1fYnl0ZWNvZGVPZmZzZXQgPSBieXRlY29kZU9mZnNl
dDsKKyAgICAgICAgaW5zdHJ1Y3Rpb25zW2J5dGVjb2RlT2Zmc2V0ICsgb3BMZW5ndGggLSAxXSA9
IHByb2ZpbGU7CisgICAgfTsKKwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7ICFpbnN0cnVjdGlv
blJlYWRlci5hdEVuZCgpOyApIHsKICAgICAgICAgY29uc3QgVW5saW5rZWRJbnN0cnVjdGlvbiog
cGMgPSBpbnN0cnVjdGlvblJlYWRlci5uZXh0KCk7CiAKQEAgLTIxMDcsMTAgKzIwNzYsNyBAQCB2
b2lkIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBv
d25lckV4ZWN1dGFibGUsIFVubGluawogICAgICAgICBjYXNlIG9wX2dldF9ieV9pZDoKICAgICAg
ICAgY2FzZSBvcF9nZXRfZnJvbV9hcmd1bWVudHM6CiAgICAgICAgIGNhc2Ugb3BfdG9fbnVtYmVy
OiB7Ci0gICAgICAgICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSAmbV92YWx1ZVByb2ZpbGVz
W3BjW29wTGVuZ3RoIC0gMV0udS5vcGVyYW5kXTsKLSAgICAgICAgICAgIEFTU0VSVChwcm9maWxl
LT5tX2J5dGVjb2RlT2Zmc2V0ID09IC0xKTsKLSAgICAgICAgICAgIHByb2ZpbGUtPm1fYnl0ZWNv
ZGVPZmZzZXQgPSBpOwotICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zW2kgKyBvcExlbmd0aCAtIDFd
ID0gcHJvZmlsZTsKKyAgICAgICAgICAgIGxpbmtWYWx1ZVByb2ZpbGUoaSwgb3BMZW5ndGgpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9wdXRfYnlfdmFs
OiB7CkBAIC0yMTQ3LDEwICsyMTEzLDcgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9u
KFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICAg
ICAgY2FzZSBvcF9jYWxsOgogICAgICAgICBjYXNlIG9wX3RhaWxfY2FsbDoKICAgICAgICAgY2Fz
ZSBvcF9jYWxsX2V2YWw6IHsKLSAgICAgICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9ICZt
X3ZhbHVlUHJvZmlsZXNbcGNbb3BMZW5ndGggLSAxXS51Lm9wZXJhbmRdOwotICAgICAgICAgICAg
QVNTRVJUKHByb2ZpbGUtPm1fYnl0ZWNvZGVPZmZzZXQgPT0gLTEpOwotICAgICAgICAgICAgcHJv
ZmlsZS0+bV9ieXRlY29kZU9mZnNldCA9IGk7Ci0gICAgICAgICAgICBpbnN0cnVjdGlvbnNbaSAr
IG9wTGVuZ3RoIC0gMV0gPSBwcm9maWxlOworICAgICAgICAgICAgbGlua1ZhbHVlUHJvZmlsZShp
LCBvcExlbmd0aCk7CiAgICAgICAgICAgICBpbnQgYXJyYXlQcm9maWxlSW5kZXggPSBwY1tvcExl
bmd0aCAtIDJdLnUub3BlcmFuZDsKICAgICAgICAgICAgIG1fYXJyYXlQcm9maWxlc1thcnJheVBy
b2ZpbGVJbmRleF0gPSBBcnJheVByb2ZpbGUoaSk7CiAgICAgICAgICAgICBpbnN0cnVjdGlvbnNb
aSArIG9wTGVuZ3RoIC0gMl0gPSAmbV9hcnJheVByb2ZpbGVzW2FycmF5UHJvZmlsZUluZGV4XTsK
QEAgLTIxNTksMTAgKzIxMjIsNyBAQCB2b2lkIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0m
IHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGluawogICAgICAgICB9
CiAgICAgICAgIGNhc2Ugb3BfY29uc3RydWN0OiB7CiAgICAgICAgICAgICBpbnN0cnVjdGlvbnNb
aSArIDVdID0gJm1fbGxpbnRDYWxsTGlua0luZm9zW3BjWzVdLnUub3BlcmFuZF07Ci0gICAgICAg
ICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSAmbV92YWx1ZVByb2ZpbGVzW3BjW29wTGVuZ3Ro
IC0gMV0udS5vcGVyYW5kXTsKLSAgICAgICAgICAgIEFTU0VSVChwcm9maWxlLT5tX2J5dGVjb2Rl
T2Zmc2V0ID09IC0xKTsKLSAgICAgICAgICAgIHByb2ZpbGUtPm1fYnl0ZWNvZGVPZmZzZXQgPSBp
OwotICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zW2kgKyBvcExlbmd0aCAtIDFdID0gcHJvZmlsZTsK
KyAgICAgICAgICAgIGxpbmtWYWx1ZVByb2ZpbGUoaSwgb3BMZW5ndGgpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9nZXRfYXJyYXlfbGVuZ3RoOgpAQCAt
MjE5MywxMCArMjE1Myw3IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0s
IFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAgICAgIH0KIAog
ICAgICAgICBjYXNlIG9wX2dldF9mcm9tX3Njb3BlOiB7Ci0gICAgICAgICAgICBWYWx1ZVByb2Zp
bGUqIHByb2ZpbGUgPSAmbV92YWx1ZVByb2ZpbGVzW3BjW29wTGVuZ3RoIC0gMV0udS5vcGVyYW5k
XTsKLSAgICAgICAgICAgIEFTU0VSVChwcm9maWxlLT5tX2J5dGVjb2RlT2Zmc2V0ID09IC0xKTsK
LSAgICAgICAgICAgIHByb2ZpbGUtPm1fYnl0ZWNvZGVPZmZzZXQgPSBpOwotICAgICAgICAgICAg
aW5zdHJ1Y3Rpb25zW2kgKyBvcExlbmd0aCAtIDFdID0gcHJvZmlsZTsKKyAgICAgICAgICAgIGxp
bmtWYWx1ZVByb2ZpbGUoaSwgb3BMZW5ndGgpOwogCiAgICAgICAgICAgICAvLyBnZXRfZnJvbV9z
Y29wZSBkc3QsIHNjb3BlLCBpZCwgR2V0UHV0SW5mbywgU3RydWN0dXJlLCBPcGVyYW5kCiAKQEAg
LTIzNTMsMTUgKzIzMTAsNiBAQCB2b2lkIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZt
LCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGluawogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KIAotICAgICAgICBjYXNlIG9wX3NhdmU6IHsKLSAgICAgICAgICAg
IHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9IHBjWzJdLnUuaW5kZXg7Ci0gICAgICAg
ICAgICBpbnQgb2Zmc2V0ID0gcGNbM10udS5vcGVyYW5kOwotICAgICAgICAgICAgaWYgKGxpdmVD
YWxsZWVMb2NhbHNJbmRleCA+PSBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXRzLnNpemUoKSkKLSAg
ICAgICAgICAgICAgICBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXRzLnJlc2l6ZShsaXZlQ2FsbGVl
TG9jYWxzSW5kZXggKyAxKTsKLSAgICAgICAgICAgIG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldHNb
bGl2ZUNhbGxlZUxvY2Fsc0luZGV4XSA9IGkgKyBvZmZzZXQ7Ci0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgfQotCiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQpAQCAtMjM3MywyMCArMjMyMSw2IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlv
bihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAKICAg
ICBtX2luc3RydWN0aW9ucyA9IFdURk1vdmUoaW5zdHJ1Y3Rpb25zKTsKIAotICAgIC8vIFBlcmZv
cm0gYnl0ZWNvZGUgbGl2ZW5lc3MgYW5hbHlzaXMgdG8gZGV0ZXJtaW5lIHdoaWNoIGxvY2FscyBh
cmUgbGl2ZSBhbmQgc2hvdWxkIGJlIHJlc3VtZWQgd2hlbiBleGVjdXRpbmcgb3BfcmVzdW1lLgot
ICAgIGlmICh1bmxpbmtlZENvZGVCbG9jay0+cGFyc2VNb2RlKCkgPT0gU291cmNlUGFyc2VNb2Rl
OjpHZW5lcmF0b3JCb2R5TW9kZSkgewotICAgICAgICBpZiAoc2l6ZV90IGNvdW50ID0gbWVyZ2VQ
b2ludEJ5dGVjb2RlT2Zmc2V0cy5zaXplKCkpIHsKLSAgICAgICAgICAgIGNyZWF0ZVJhcmVEYXRh
SWZOZWNlc3NhcnkoKTsKLSAgICAgICAgICAgIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcyBsaXZl
bmVzcyh0aGlzKTsKLSAgICAgICAgICAgIG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0
WWllbGQuZ3Jvdyhjb3VudCk7Ci0gICAgICAgICAgICBzaXplX3QgbGl2ZUNhbGxlZUxvY2Fsc0lu
ZGV4ID0gMDsKLSAgICAgICAgICAgIGZvciAoc2l6ZV90IGJ5dGVjb2RlT2Zmc2V0IDogbWVyZ2VQ
b2ludEJ5dGVjb2RlT2Zmc2V0cykgewotICAgICAgICAgICAgICAgIG1fcmFyZURhdGEtPm1fbGl2
ZUNhbGxlZUxvY2Fsc0F0WWllbGRbbGl2ZUNhbGxlZUxvY2Fsc0luZGV4XSA9IGxpdmVuZXNzLmdl
dExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpOwotICAgICAgICAg
ICAgICAgICsrbGl2ZUNhbGxlZUxvY2Fsc0luZGV4OwotICAgICAgICAgICAgfQotICAgICAgICB9
Ci0gICAgfQotCiAgICAgLy8gU2V0IG9wdGltaXphdGlvbiB0aHJlc2hvbGRzIG9ubHkgYWZ0ZXIg
bV9pbnN0cnVjdGlvbnMgaXMgaW5pdGlhbGl6ZWQsIHNpbmNlIHRoZXNlCiAgICAgLy8gcmVseSBv
biB0aGUgaW5zdHJ1Y3Rpb24gY291bnQgKGFuZCBhcmUgaW4gdGhlb3J5IHBlcm1pdHRlZCB0byBh
bHNvIGluc3BlY3QgdGhlCiAgICAgLy8gaW5zdHJ1Y3Rpb24gc3RyZWFtIHRvIG1vcmUgYWNjdXJh
dGUgYXNzZXNzIHRoZSBjb3N0IG9mIHRpZXItdXApLgpAQCAtMzE4NiwyMSArMzEyMCw3IEBAIEhh
bmRsZXJJbmZvKiBDb2RlQmxvY2s6OmhhbmRsZXJGb3JJbmRleCh1bnNpZ25lZCBpbmRleCwgUmVx
dWlyZWRIYW5kbGVyIHJlcXVpcmVkCiB7CiAgICAgaWYgKCFtX3JhcmVEYXRhKQogICAgICAgICBy
ZXR1cm4gMDsKLSAgICAKLSAgICBWZWN0b3I8SGFuZGxlckluZm8+JiBleGNlcHRpb25IYW5kbGVy
cyA9IG1fcmFyZURhdGEtPm1fZXhjZXB0aW9uSGFuZGxlcnM7Ci0gICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBleGNlcHRpb25IYW5kbGVycy5zaXplKCk7ICsraSkgewotICAgICAgICBIYW5kbGVy
SW5mbyYgaGFuZGxlciA9IGV4Y2VwdGlvbkhhbmRsZXJzW2ldOwotICAgICAgICBpZiAoKHJlcXVp
cmVkSGFuZGxlciA9PSBSZXF1aXJlZEhhbmRsZXI6OkNhdGNoSGFuZGxlcikgJiYgIWhhbmRsZXIu
aXNDYXRjaEhhbmRsZXIoKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIC8vIEhh
bmRsZXJzIGFyZSBvcmRlcmVkIGlubmVybW9zdCBmaXJzdCwgc28gdGhlIGZpcnN0IGhhbmRsZXIg
d2UgZW5jb3VudGVyCi0gICAgICAgIC8vIHRoYXQgY29udGFpbnMgdGhlIHNvdXJjZSBhZGRyZXNz
IGlzIHRoZSBjb3JyZWN0IGhhbmRsZXIgdG8gdXNlLgotICAgICAgICAvLyBUaGlzIGluZGV4IHVz
ZWQgaXMgZWl0aGVyIHRoZSBCeXRlY29kZU9mZnNldCBvciBhIENhbGxTaXRlSW5kZXguCi0gICAg
ICAgIGlmIChoYW5kbGVyLnN0YXJ0IDw9IGluZGV4ICYmIGhhbmRsZXIuZW5kID4gaW5kZXgpCi0g
ICAgICAgICAgICByZXR1cm4gJmhhbmRsZXI7Ci0gICAgfQotCi0gICAgcmV0dXJuIDA7CisgICAg
cmV0dXJuIEhhbmRsZXJJbmZvOjpoYW5kbGVyRm9ySW5kZXgobV9yYXJlRGF0YS0+bV9leGNlcHRp
b25IYW5kbGVycywgaW5kZXgsIHJlcXVpcmVkSGFuZGxlcik7CiB9CiAKIENhbGxTaXRlSW5kZXgg
Q29kZUJsb2NrOjpuZXdFeGNlcHRpb25IYW5kbGluZ0NhbGxTaXRlSW5kZXgoQ2FsbFNpdGVJbmRl
eCBvcmlnaW5hbENhbGxTaXRlKQpAQCAtMzI5Niw3ICszMjE2LDYgQEAgdm9pZCBDb2RlQmxvY2s6
OnNocmlua1RvRml0KFNocmlua01vZGUgc2hyaW5rTW9kZSkKICAgICAgICAgaWYgKG1fcmFyZURh
dGEpIHsKICAgICAgICAgICAgIG1fcmFyZURhdGEtPm1fc3dpdGNoSnVtcFRhYmxlcy5zaHJpbmtU
b0ZpdCgpOwogICAgICAgICAgICAgbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVz
LnNocmlua1RvRml0KCk7Ci0gICAgICAgICAgICBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2Nh
bHNBdFlpZWxkLnNocmlua1RvRml0KCk7CiAgICAgICAgIH0KICAgICB9IC8vIGVsc2UgZG9uJ3Qg
c2hyaW5rIHRoZXNlLCBiZWNhdXNlIHdlIHdvdWxkIGhhdmUgYWxyZWFkeSBwb2ludGVkIHBvaW50
ZXJzIGludG8gdGhlc2UgdGFibGVzLgogfQpAQCAtNDI4MywxNCArNDIwMiw5IEBAIFN0cmluZyBD
b2RlQmxvY2s6Om5hbWVGb3JSZWdpc3RlcihWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVy
KQogCiBWYWx1ZVByb2ZpbGUqIENvZGVCbG9jazo6dmFsdWVQcm9maWxlRm9yQnl0ZWNvZGVPZmZz
ZXQoaW50IGJ5dGVjb2RlT2Zmc2V0KQogewotICAgIFZhbHVlUHJvZmlsZSogcmVzdWx0ID0gYmlu
YXJ5U2VhcmNoPFZhbHVlUHJvZmlsZSwgaW50PigKLSAgICAgICAgbV92YWx1ZVByb2ZpbGVzLCBt
X3ZhbHVlUHJvZmlsZXMuc2l6ZSgpLCBieXRlY29kZU9mZnNldCwKLSAgICAgICAgZ2V0VmFsdWVQ
cm9maWxlQnl0ZWNvZGVPZmZzZXQ8VmFsdWVQcm9maWxlPik7Ci0gICAgQVNTRVJUKHJlc3VsdC0+
bV9ieXRlY29kZU9mZnNldCAhPSAtMSk7Ci0gICAgQVNTRVJUKGluc3RydWN0aW9ucygpW2J5dGVj
b2RlT2Zmc2V0ICsgb3Bjb2RlTGVuZ3RoKAotICAgICAgICBtX3ZtLT5pbnRlcnByZXRlci0+Z2V0
T3Bjb2RlSUQoCi0gICAgICAgICAgICBpbnN0cnVjdGlvbnMoKVtieXRlY29kZU9mZnNldF0udS5v
cGNvZGUpKSAtIDFdLnUucHJvZmlsZSA9PSByZXN1bHQpOwotICAgIHJldHVybiByZXN1bHQ7Cisg
ICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBtX3ZtLT5pbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoaW5z
dHJ1Y3Rpb25zKClbYnl0ZWNvZGVPZmZzZXRdLnUub3Bjb2RlKTsKKyAgICB1bnNpZ25lZCBsZW5n
dGggPSBvcGNvZGVMZW5ndGgob3Bjb2RlSUQpOworICAgIHJldHVybiBpbnN0cnVjdGlvbnMoKVti
eXRlY29kZU9mZnNldCArIGxlbmd0aCAtIDFdLnUucHJvZmlsZTsKIH0KIAogdm9pZCBDb2RlQmxv
Y2s6OnZhbGlkYXRlKCkKQEAgLTQ1NzQsNCArNDQ4OCwxNiBAQCB2b2lkIENvZGVCbG9jazo6aml0
U29vbigpCiAgICAgbV9sbGludEV4ZWN1dGVDb3VudGVyLnNldE5ld1RocmVzaG9sZCh0aHJlc2hv
bGRGb3JKSVQoT3B0aW9uczo6dGhyZXNob2xkRm9ySklUU29vbigpKSwgdGhpcyk7CiB9CiAKK0J5
dGVjb2RlTGl2ZW5lc3NBbmFseXNpcyYgQ29kZUJsb2NrOjpsaXZlbmVzc0FuYWx5c2lzU2xvdygp
Cit7CisgICAgc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcz4gYW5hbHlz
aXMgPSBzdGQ6Om1ha2VfdW5pcXVlPEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcz4odGhpcyk7Cisg
ICAgeworICAgICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihtX2xvY2spOworICAgICAg
ICBpZiAoIW1fbGl2ZW5lc3NBbmFseXNpcykKKyAgICAgICAgICAgIG1fbGl2ZW5lc3NBbmFseXNp
cyA9IFdURk1vdmUoYW5hbHlzaXMpOworICAgICAgICByZXR1cm4gKm1fbGl2ZW5lc3NBbmFseXNp
czsKKyAgICB9Cit9CisKKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKaW5kZXggYjI4ODM2NTRiZTM0NWU3YWIwMTEwZWMxYjZm
NWQ2OTdhMThjMjdjMi4uMGI5MGI3ZWJkN2NiNmEzNmM1MTA4ZmNlMmM2OTZmNzljNTRjNWUwOCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaApAQCAtMzMsNyAr
MzMsNiBAQAogI2luY2x1ZGUgIkFycmF5UHJvZmlsZS5oIgogI2luY2x1ZGUgIkJ5VmFsSW5mby5o
IgogI2luY2x1ZGUgIkJ5dGVjb2RlQ29udmVudGlvbnMuaCIKLSNpbmNsdWRlICJCeXRlY29kZUxp
dmVuZXNzQW5hbHlzaXMuaCIKICNpbmNsdWRlICJDYWxsTGlua0luZm8uaCIKICNpbmNsdWRlICJD
YWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldC5oIgogI2luY2x1ZGUgIkNvZGVCbG9ja0hh
c2guaCIKQEAgLTc4LDYgKzc3LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKK2NsYXNzIEJ5dGVj
b2RlTGl2ZW5lc3NBbmFseXNpczsKIGNsYXNzIEV4ZWNTdGF0ZTsKIGNsYXNzIEpTTW9kdWxlRW52
aXJvbm1lbnQ7CiBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CkBAIC0yMjAsMTAgKzIyMCw2
IEBAIGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgICAgICByZXR1cm4gaW5k
ZXggPj0gbV9udW1WYXJzOwogICAgIH0KIAotICAgIGVudW0gY2xhc3MgUmVxdWlyZWRIYW5kbGVy
IHsKLSAgICAgICAgQ2F0Y2hIYW5kbGVyLAotICAgICAgICBBbnlIYW5kbGVyCi0gICAgfTsKICAg
ICBIYW5kbGVySW5mbyogaGFuZGxlckZvckJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2Rl
T2Zmc2V0LCBSZXF1aXJlZEhhbmRsZXIgPSBSZXF1aXJlZEhhbmRsZXI6OkFueUhhbmRsZXIpOwog
ICAgIEhhbmRsZXJJbmZvKiBoYW5kbGVyRm9ySW5kZXgodW5zaWduZWQsIFJlcXVpcmVkSGFuZGxl
ciA9IFJlcXVpcmVkSGFuZGxlcjo6QW55SGFuZGxlcik7CiAgICAgdm9pZCByZW1vdmVFeGNlcHRp
b25IYW5kbGVyRm9yQ2FsbFNpdGUoQ2FsbFNpdGVJbmRleCk7CkBAIC0yOTUsNiArMjkxLDggQEAg
Y2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxJbnN0cnVjdGlvbio+KHJldHVybkFkZHJlc3MpIC0gaW5zdHJ1Y3Rpb25zKCkuYmVnaW4o
KTsKICAgICB9CiAKKyAgICB0eXBlZGVmIFJlZkNvdW50ZWRBcnJheTxJbnN0cnVjdGlvbj4mIFVu
cGFja2VkSW5zdHJ1Y3Rpb25zOworCiAgICAgdW5zaWduZWQgbnVtYmVyT2ZJbnN0cnVjdGlvbnMo
KSBjb25zdCB7IHJldHVybiBtX2luc3RydWN0aW9ucy5zaXplKCk7IH0KICAgICBSZWZDb3VudGVk
QXJyYXk8SW5zdHJ1Y3Rpb24+JiBpbnN0cnVjdGlvbnMoKSB7IHJldHVybiBtX2luc3RydWN0aW9u
czsgfQogICAgIGNvbnN0IFJlZkNvdW50ZWRBcnJheTxJbnN0cnVjdGlvbj4mIGluc3RydWN0aW9u
cygpIGNvbnN0IHsgcmV0dXJuIG1faW5zdHJ1Y3Rpb25zOyB9CkBAIC01NDIsNyArNTQwLDcgQEAg
Y2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgfQogCiAgICAgV3JpdGVCYXJy
aWVyPFVua25vd24+JiBjb25zdGFudFJlZ2lzdGVyKGludCBpbmRleCkgeyByZXR1cm4gbV9jb25z
dGFudFJlZ2lzdGVyc1tpbmRleCAtIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4XTsgfQotICAg
IEFMV0FZU19JTkxJTkUgYm9vbCBpc0NvbnN0YW50UmVnaXN0ZXJJbmRleChpbnQgaW5kZXgpIGNv
bnN0IHsgcmV0dXJuIGluZGV4ID49IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4OyB9CisgICAg
c3RhdGljIEFMV0FZU19JTkxJTkUgYm9vbCBpc0NvbnN0YW50UmVnaXN0ZXJJbmRleChpbnQgaW5k
ZXgpIHsgcmV0dXJuIGluZGV4ID49IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4OyB9CiAgICAg
QUxXQVlTX0lOTElORSBKU1ZhbHVlIGdldENvbnN0YW50KGludCBpbmRleCkgY29uc3QgeyByZXR1
cm4gbV9jb25zdGFudFJlZ2lzdGVyc1tpbmRleCAtIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4
XS5nZXQoKTsgfQogICAgIEFMV0FZU19JTkxJTkUgU291cmNlQ29kZVJlcHJlc2VudGF0aW9uIGNv
bnN0YW50U291cmNlQ29kZVJlcHJlc2VudGF0aW9uKGludCBpbmRleCkgY29uc3QgeyByZXR1cm4g
bV9jb25zdGFudHNTb3VyY2VDb2RlUmVwcmVzZW50YXRpb25baW5kZXggLSBGaXJzdENvbnN0YW50
UmVnaXN0ZXJJbmRleF07IH0KIApAQCAtNTg4LDE0ICs1ODYsNyBAQCBjbGFzcyBDb2RlQmxvY2sg
OiBwdWJsaWMgSlNDZWxsIHsKICAgICAgICAgICAgIGlmICghIW1fbGl2ZW5lc3NBbmFseXNpcykK
ICAgICAgICAgICAgICAgICByZXR1cm4gKm1fbGl2ZW5lc3NBbmFseXNpczsKICAgICAgICAgfQot
ICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzPiBhbmFseXNp
cyA9Ci0gICAgICAgICAgICBzdGQ6Om1ha2VfdW5pcXVlPEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNp
cz4odGhpcyk7Ci0gICAgICAgIHsKLSAgICAgICAgICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9j
a2VyKG1fbG9jayk7Ci0gICAgICAgICAgICBpZiAoIW1fbGl2ZW5lc3NBbmFseXNpcykKLSAgICAg
ICAgICAgICAgICBtX2xpdmVuZXNzQW5hbHlzaXMgPSBXVEZNb3ZlKGFuYWx5c2lzKTsKLSAgICAg
ICAgICAgIHJldHVybiAqbV9saXZlbmVzc0FuYWx5c2lzOwotICAgICAgICB9CisgICAgICAgIHJl
dHVybiBsaXZlbmVzc0FuYWx5c2lzU2xvdygpOwogICAgIH0KICAgICAKICAgICB2b2lkIHZhbGlk
YXRlKCk7CkBAIC02MTYsMTggKzYwNyw2IEBAIGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBKU0Nl
bGwgewogICAgIFN0cmluZ0p1bXBUYWJsZSYgYWRkU3RyaW5nU3dpdGNoSnVtcFRhYmxlKCkgeyBj
cmVhdGVSYXJlRGF0YUlmTmVjZXNzYXJ5KCk7IG1fcmFyZURhdGEtPm1fc3RyaW5nU3dpdGNoSnVt
cFRhYmxlcy5hcHBlbmQoU3RyaW5nSnVtcFRhYmxlKCkpOyByZXR1cm4gbV9yYXJlRGF0YS0+bV9z
dHJpbmdTd2l0Y2hKdW1wVGFibGVzLmxhc3QoKTsgfQogICAgIFN0cmluZ0p1bXBUYWJsZSYgc3Ry
aW5nU3dpdGNoSnVtcFRhYmxlKGludCB0YWJsZUluZGV4KSB7IFJFTEVBU0VfQVNTRVJUKG1fcmFy
ZURhdGEpOyByZXR1cm4gbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzW3RhYmxl
SW5kZXhdOyB9CiAKLSAgICAvLyBMaXZlIGNhbGxlZSByZWdpc3RlcnMgYXQgeWllbGQgcG9pbnRz
LgotICAgIGNvbnN0IEZhc3RCaXRWZWN0b3ImIGxpdmVDYWxsZWVMb2NhbHNBdFlpZWxkKHVuc2ln
bmVkIGluZGV4KSBjb25zdAotICAgIHsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9yYXJlRGF0
YSk7Ci0gICAgICAgIHJldHVybiBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxk
W2luZGV4XTsKLSAgICB9Ci0gICAgRmFzdEJpdFZlY3RvciYgbGl2ZUNhbGxlZUxvY2Fsc0F0WWll
bGQodW5zaWduZWQgaW5kZXgpCi0gICAgewotICAgICAgICBSRUxFQVNFX0FTU0VSVChtX3JhcmVE
YXRhKTsKLSAgICAgICAgcmV0dXJuIG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWll
bGRbaW5kZXhdOwotICAgIH0KLQogICAgIEV2YWxDb2RlQ2FjaGUmIGV2YWxDb2RlQ2FjaGUoKSB7
IGNyZWF0ZVJhcmVEYXRhSWZOZWNlc3NhcnkoKTsgcmV0dXJuIG1fcmFyZURhdGEtPm1fZXZhbENv
ZGVDYWNoZTsgfQogCiAgICAgZW51bSBTaHJpbmtNb2RlIHsKQEAgLTg4Miw4ICs4NjEsNiBAQCBj
bGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAgICAgVmVjdG9yPFNpbXBsZUp1
bXBUYWJsZT4gbV9zd2l0Y2hKdW1wVGFibGVzOwogICAgICAgICBWZWN0b3I8U3RyaW5nSnVtcFRh
YmxlPiBtX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXM7CiAKLSAgICAgICAgVmVjdG9yPEZhc3RCaXRW
ZWN0b3I+IG1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQ7Ci0KICAgICAgICAgRXZhbENvZGVDYWNo
ZSBtX2V2YWxDb2RlQ2FjaGU7CiAgICAgfTsKIApAQCAtOTE4LDYgKzg5NSw4IEBAIGNsYXNzIENv
ZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBD
b2RlQmxvY2tTZXQ7CisKKyAgICBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMmIGxpdmVuZXNzQW5h
bHlzaXNTbG93KCk7CiAgICAgCiAgICAgQ29kZUJsb2NrKiBzcGVjaWFsT1NSRW50cnlCbG9ja09y
TnVsbCgpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0hhbmRsZXJJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSGFuZGxlcklu
Zm8uaAppbmRleCBhY2RkYTA4ZWQxNGNiZjlmMDk3MTI3NTA0MDVhNDE3NDFmNzZhMjEzLi5iYjY5
MmI5ZGMxNzBiMDlmNDNjZTg2N2Y5NDFmNzUzNWFjZmVjZjYzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSGFuZGxlckluZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvSGFuZGxlckluZm8uaApAQCAtMzcsNiArMzcsMTEgQEAgZW51bSBj
bGFzcyBIYW5kbGVyVHlwZSB7CiAgICAgU3ludGhlc2l6ZWRGaW5hbGx5ID0gMwogfTsKIAorZW51
bSBjbGFzcyBSZXF1aXJlZEhhbmRsZXIgeworICAgIENhdGNoSGFuZGxlciwKKyAgICBBbnlIYW5k
bGVyCit9OworCiBzdHJ1Y3QgSGFuZGxlckluZm9CYXNlIHsKICAgICBIYW5kbGVyVHlwZSB0eXBl
KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8SGFuZGxlclR5cGU+KHR5cGVCaXRzKTsgfQog
ICAgIHZvaWQgc2V0VHlwZShIYW5kbGVyVHlwZSB0eXBlKSB7IHR5cGVCaXRzID0gc3RhdGljX2Nh
c3Q8dWludDMyX3Q+KHR5cGUpOyB9CkBAIC01OCw2ICs2MywyMyBAQCBzdHJ1Y3QgSGFuZGxlcklu
Zm9CYXNlIHsKIAogICAgIGJvb2wgaXNDYXRjaEhhbmRsZXIoKSBjb25zdCB7IHJldHVybiB0eXBl
KCkgPT0gSGFuZGxlclR5cGU6OkNhdGNoOyB9CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIYW5k
bGVyPgorICAgIHN0YXRpYyBIYW5kbGVyKiBoYW5kbGVyRm9ySW5kZXgoVmVjdG9yPEhhbmRsZXI+
JiBleGVwdGlvbkhhbmRsZXJzLCB1bnNpZ25lZCBpbmRleCwgUmVxdWlyZWRIYW5kbGVyIHJlcXVp
cmVkSGFuZGxlcikKKyAgICB7CisgICAgICAgIGZvciAoSGFuZGxlciYgaGFuZGxlciA6IGV4ZXB0
aW9uSGFuZGxlcnMpIHsKKyAgICAgICAgICAgIGlmICgocmVxdWlyZWRIYW5kbGVyID09IFJlcXVp
cmVkSGFuZGxlcjo6Q2F0Y2hIYW5kbGVyKSAmJiAhaGFuZGxlci5pc0NhdGNoSGFuZGxlcigpKQor
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICAvLyBIYW5kbGVycyBhcmUg
b3JkZXJlZCBpbm5lcm1vc3QgZmlyc3QsIHNvIHRoZSBmaXJzdCBoYW5kbGVyIHdlIGVuY291bnRl
cgorICAgICAgICAgICAgLy8gdGhhdCBjb250YWlucyB0aGUgc291cmNlIGFkZHJlc3MgaXMgdGhl
IGNvcnJlY3QgaGFuZGxlciB0byB1c2UuCisgICAgICAgICAgICAvLyBUaGlzIGluZGV4IHVzZWQg
aXMgZWl0aGVyIHRoZSBCeXRlY29kZU9mZnNldCBvciBhIENhbGxTaXRlSW5kZXguCisgICAgICAg
ICAgICBpZiAoaGFuZGxlci5zdGFydCA8PSBpbmRleCAmJiBoYW5kbGVyLmVuZCA+IGluZGV4KQor
ICAgICAgICAgICAgICAgIHJldHVybiAmaGFuZGxlcjsKKyAgICAgICAgfQorCisgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgIH0KKwogICAgIHVpbnQzMl90IHN0YXJ0OwogICAgIHVpbnQzMl90
IGVuZDsKICAgICB1aW50MzJfdCB0YXJnZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHMuY3BwCmluZGV4IGUyY2IwMDA0ODM3OTRi
YTkyZDUxMGRjZjVmYTk5NDg4NWEyM2RjM2QuLmNhYjlmYmRjNGU4MzlmYmI4OWE2OTMzNTYyMjJk
YjAwZTEwMjIzY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Q
cmVjaXNlSnVtcFRhcmdldHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9QcmVjaXNlSnVtcFRhcmdldHMuY3BwCkBAIC0yNiwxNCArMjYsMTUgQEAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJQcmVjaXNlSnVtcFRhcmdldHMuaCIKIAorI2luY2x1ZGUgIklu
dGVycHJldGVySW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKIAogbmFtZXNwYWNl
IEpTQyB7CiAKLXRlbXBsYXRlIDxzaXplX3QgdmVjdG9yU2l6ZT4KLXN0YXRpYyB2b2lkIGdldEp1
bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEludGVycHJl
dGVyKiBpbnRlcnByZXRlciwgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25l
ZCBieXRlY29kZU9mZnNldCwgVmVjdG9yPHVuc2lnbmVkLCB2ZWN0b3JTaXplPiYgb3V0KQordGVt
cGxhdGUgPHNpemVfdCB2ZWN0b3JTaXplLCB0eXBlbmFtZSBCbG9jaywgdHlwZW5hbWUgSW5zdHJ1
Y3Rpb24+CitzdGF0aWMgdm9pZCBnZXRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KEJsb2Nr
KiBjb2RlQmxvY2ssIEludGVycHJldGVyKiBpbnRlcnByZXRlciwgSW5zdHJ1Y3Rpb24qIGluc3Ry
dWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgVmVjdG9yPHVuc2lnbmVkLCB2
ZWN0b3JTaXplPiYgb3V0KQogewotICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0ZXIt
PmdldE9wY29kZUlEKGluc3RydWN0aW9uc0JlZ2luW2J5dGVjb2RlT2Zmc2V0XS51Lm9wY29kZSk7
CisgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoaW5zdHJ1
Y3Rpb25zQmVnaW5bYnl0ZWNvZGVPZmZzZXRdKTsKICAgICBJbnN0cnVjdGlvbiogY3VycmVudCA9
IGluc3RydWN0aW9uc0JlZ2luICsgYnl0ZWNvZGVPZmZzZXQ7CiAgICAgc3dpdGNoIChvcGNvZGVJ
RCkgewogICAgIGNhc2Ugb3Bfam1wOgpAQCAtNTQsMjEgKzU1LDI1IEBAIHN0YXRpYyB2b2lkIGdl
dEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEludGVy
cHJldGVyKiBpCiAgICAgY2FzZSBvcF9qbmxlc3NlcToKICAgICBjYXNlIG9wX2puZ3JlYXRlcjoK
ICAgICBjYXNlIG9wX2puZ3JlYXRlcmVxOgotICAgIGNhc2Ugb3Bfc2F2ZTogLy8gVGhlIGp1bXAg
b2Ygb3Bfc2F2ZSBpcyBwdXJlbHkgZm9yIGNhbGN1bGF0aW5nIGxpdmVuZXNzLgogICAgICAgICBv
dXQuYXBwZW5kKGJ5dGVjb2RlT2Zmc2V0ICsgY3VycmVudFszXS51Lm9wZXJhbmQpOwogICAgICAg
ICBicmVhazsKKyAgICBjYXNlIG9wX3NhdmU6IHsKKyAgICAgICAgLy8gVGhlIGp1bXAgb2Ygb3Bf
c2F2ZSB1bmRlciBFeHRyYWN0R2VuZXJhdG9yTGl2ZUNhbGxlZUxvY2FscyBtb2RlIGlzIHB1cmVs
eSBmb3IgY2FsY3VsYXRpbmcgbGl2ZW5lc3MuCisgICAgICAgIG91dC5hcHBlbmQoYnl0ZWNvZGVP
ZmZzZXQgKyBjdXJyZW50WzNdLnUub3BlcmFuZCk7CisgICAgICAgIGJyZWFrOworICAgIH0KICAg
ICBjYXNlIG9wX3N3aXRjaF9pbW06CiAgICAgY2FzZSBvcF9zd2l0Y2hfY2hhcjogewotICAgICAg
ICBTaW1wbGVKdW1wVGFibGUmIHRhYmxlID0gY29kZUJsb2NrLT5zd2l0Y2hKdW1wVGFibGUoY3Vy
cmVudFsxXS51Lm9wZXJhbmQpOworICAgICAgICBhdXRvJiB0YWJsZSA9IGNvZGVCbG9jay0+c3dp
dGNoSnVtcFRhYmxlKGN1cnJlbnRbMV0udS5vcGVyYW5kKTsKICAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gdGFibGUuYnJhbmNoT2Zmc2V0cy5zaXplKCk7IGktLTspCiAgICAgICAgICAgICBvdXQu
YXBwZW5kKGJ5dGVjb2RlT2Zmc2V0ICsgdGFibGUuYnJhbmNoT2Zmc2V0c1tpXSk7CiAgICAgICAg
IG91dC5hcHBlbmQoYnl0ZWNvZGVPZmZzZXQgKyBjdXJyZW50WzJdLnUub3BlcmFuZCk7CiAgICAg
ICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIG9wX3N3aXRjaF9zdHJpbmc6IHsKLSAgICAgICAg
U3RyaW5nSnVtcFRhYmxlJiB0YWJsZSA9IGNvZGVCbG9jay0+c3RyaW5nU3dpdGNoSnVtcFRhYmxl
KGN1cnJlbnRbMV0udS5vcGVyYW5kKTsKLSAgICAgICAgU3RyaW5nSnVtcFRhYmxlOjpTdHJpbmdP
ZmZzZXRUYWJsZTo6aXRlcmF0b3IgaXRlciA9IHRhYmxlLm9mZnNldFRhYmxlLmJlZ2luKCk7Ci0g
ICAgICAgIFN0cmluZ0p1bXBUYWJsZTo6U3RyaW5nT2Zmc2V0VGFibGU6Oml0ZXJhdG9yIGVuZCA9
IHRhYmxlLm9mZnNldFRhYmxlLmVuZCgpOworICAgICAgICBhdXRvJiB0YWJsZSA9IGNvZGVCbG9j
ay0+c3RyaW5nU3dpdGNoSnVtcFRhYmxlKGN1cnJlbnRbMV0udS5vcGVyYW5kKTsKKyAgICAgICAg
YXV0byBpdGVyID0gdGFibGUub2Zmc2V0VGFibGUuYmVnaW4oKTsKKyAgICAgICAgYXV0byBlbmQg
PSB0YWJsZS5vZmZzZXRUYWJsZS5lbmQoKTsKICAgICAgICAgZm9yICg7IGl0ZXIgIT0gZW5kOyAr
K2l0ZXIpCiAgICAgICAgICAgICBvdXQuYXBwZW5kKGJ5dGVjb2RlT2Zmc2V0ICsgaXRlci0+dmFs
dWUuYnJhbmNoT2Zmc2V0KTsKICAgICAgICAgb3V0LmFwcGVuZChieXRlY29kZU9mZnNldCArIGN1
cnJlbnRbMl0udS5vcGVyYW5kKTsKQEAgLTgyLDEzICs4NywxOSBAQCBzdGF0aWMgdm9pZCBnZXRK
dW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBJbnRlcnBy
ZXRlciogaQogICAgIH0KIH0KIAotdm9pZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKENvZGVC
bG9jayogY29kZUJsb2NrLCBWZWN0b3I8dW5zaWduZWQsIDMyPiYgb3V0KQorZW51bSBjbGFzcyBD
b21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzTW9kZSB7CisgICAgRm9sbG93Q29kZUJsb2NrQ2xhaW0s
CisgICAgRm9yY2VDb21wdXRlLAorfTsKKwordGVtcGxhdGU8Q29tcHV0ZVByZWNpc2VKdW1wVGFy
Z2V0c01vZGUgTW9kZSwgdHlwZW5hbWUgQmxvY2ssIHR5cGVuYW1lIEluc3RydWN0aW9uLCBzaXpl
X3QgdmVjdG9yU2l6ZT4KK3ZvaWQgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0c0ludGVybmFsKEJs
b2NrKiBjb2RlQmxvY2ssIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQg
aW5zdHJ1Y3Rpb25Db3VudCwgVmVjdG9yPHVuc2lnbmVkLCB2ZWN0b3JTaXplPiYgb3V0KQogewog
ICAgIEFTU0VSVChvdXQuaXNFbXB0eSgpKTsKICAgICAKICAgICAvLyBXZSB3aWxsIGRlcml2ZSBh
IHN1cGVyc2V0IG9mIHRoZSBqdW1wIHRhcmdldHMgdGhhdCB0aGUgY29kZSBibG9jayB0aGlua3Mg
aXQgaGFzLgogICAgIC8vIFNvLCBpZiB0aGUgY29kZSBibG9jayBjbGFpbXMgdGhlcmUgYXJlIG5v
bmUsIHRoZW4gd2UgYXJlIGRvbmUuCi0gICAgaWYgKCFjb2RlQmxvY2stPm51bWJlck9mSnVtcFRh
cmdldHMoKSkKKyAgICBpZiAoTW9kZSA9PSBDb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzTW9kZTo6
Rm9sbG93Q29kZUJsb2NrQ2xhaW0gJiYgIWNvZGVCbG9jay0+bnVtYmVyT2ZKdW1wVGFyZ2V0cygp
KQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgZm9yICh1bnNpZ25lZCBpID0gY29kZUJsb2Nr
LT5udW1iZXJPZkV4Y2VwdGlvbkhhbmRsZXJzKCk7IGktLTspIHsKQEAgLTk4LDEwICsxMDksOCBA
QCB2b2lkIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFZl
Y3Rvcjx1bnNpZ25lZCwgMzI+JiBvdXQpCiAgICAgfQogCiAgICAgSW50ZXJwcmV0ZXIqIGludGVy
cHJldGVyID0gY29kZUJsb2NrLT52bSgpLT5pbnRlcnByZXRlcjsKLSAgICBJbnN0cnVjdGlvbiog
aW5zdHJ1Y3Rpb25zQmVnaW4gPSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCk7Ci0g
ICAgdW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCA9IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCku
c2l6ZSgpOwogICAgIGZvciAodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQgPSAwOyBieXRlY29kZU9m
ZnNldCA8IGluc3RydWN0aW9uQ291bnQ7KSB7Ci0gICAgICAgIE9wY29kZUlEIG9wY29kZUlEID0g
aW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGluc3RydWN0aW9uc0JlZ2luW2J5dGVjb2RlT2Zmc2V0
XS51Lm9wY29kZSk7CisgICAgICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0ZXItPmdl
dE9wY29kZUlEKGluc3RydWN0aW9uc0JlZ2luW2J5dGVjb2RlT2Zmc2V0XSk7CiAgICAgICAgIGdl
dEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoY29kZUJsb2NrLCBpbnRlcnByZXRlciwgaW5z
dHJ1Y3Rpb25zQmVnaW4sIGJ5dGVjb2RlT2Zmc2V0LCBvdXQpOwogICAgICAgICBieXRlY29kZU9m
ZnNldCArPSBvcGNvZGVMZW5ndGhzW29wY29kZUlEXTsKICAgICB9CkBAIC0xMjMsMTEgKzEzMiwz
NCBAQCB2b2lkIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMoQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IFZlY3Rvcjx1bnNpZ25lZCwgMzI+JiBvdXQpCiAgICAgb3V0LnNocmlua1RvRml0KCk7CiB9CiAK
LXZvaWQgZmluZEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBWZWN0b3I8dW5zaWduZWQsIDE+JiBvdXQpCit2
b2lkIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFZlY3Rv
cjx1bnNpZ25lZCwgMzI+JiBvdXQpCiB7Ci0gICAgSW50ZXJwcmV0ZXIqIGludGVycHJldGVyID0g
Y29kZUJsb2NrLT52bSgpLT5pbnRlcnByZXRlcjsKLSAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rp
b25zQmVnaW4gPSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCk7Ci0gICAgZ2V0SnVt
cFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChjb2RlQmxvY2ssIGludGVycHJldGVyLCBpbnN0cnVj
dGlvbnNCZWdpbiwgYnl0ZWNvZGVPZmZzZXQsIG91dCk7CisgICAgY29tcHV0ZVByZWNpc2VKdW1w
VGFyZ2V0c0ludGVybmFsPENvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHNNb2RlOjpGb2xsb3dDb2Rl
QmxvY2tDbGFpbT4oY29kZUJsb2NrLCBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCks
IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpLCBvdXQpOworfQorCit2b2lkIGNvbXB1
dGVQcmVjaXNlSnVtcFRhcmdldHMoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEluc3RydWN0aW9uKiBp
bnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCwgVmVjdG9yPHVuc2ln
bmVkLCAzMj4mIG91dCkKK3sKKyAgICBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzSW50ZXJuYWw8
Q29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0c01vZGU6OkZvbGxvd0NvZGVCbG9ja0NsYWltPihjb2Rl
QmxvY2ssIGluc3RydWN0aW9uc0JlZ2luLCBpbnN0cnVjdGlvbkNvdW50LCBvdXQpOworfQorCit2
b2lkIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMoVW5saW5rZWRDb2RlQmxvY2sqIGNvZGVCbG9j
aywgVW5saW5rZWRJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGluc3Ry
dWN0aW9uQ291bnQsIFZlY3Rvcjx1bnNpZ25lZCwgMzI+JiBvdXQpCit7CisgICAgY29tcHV0ZVBy
ZWNpc2VKdW1wVGFyZ2V0c0ludGVybmFsPENvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHNNb2RlOjpG
b2xsb3dDb2RlQmxvY2tDbGFpbT4oY29kZUJsb2NrLCBpbnN0cnVjdGlvbnNCZWdpbiwgaW5zdHJ1
Y3Rpb25Db3VudCwgb3V0KTsKK30KKwordm9pZCByZWNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMo
VW5saW5rZWRDb2RlQmxvY2sqIGNvZGVCbG9jaywgVW5saW5rZWRJbnN0cnVjdGlvbiogaW5zdHJ1
Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQsIFZlY3Rvcjx1bnNpZ25lZD4m
IG91dCkKK3sKKyAgICBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzSW50ZXJuYWw8Q29tcHV0ZVBy
ZWNpc2VKdW1wVGFyZ2V0c01vZGU6OkZvcmNlQ29tcHV0ZT4oY29kZUJsb2NrLCBpbnN0cnVjdGlv
bnNCZWdpbiwgaW5zdHJ1Y3Rpb25Db3VudCwgb3V0KTsKK30KKwordm9pZCBmaW5kSnVtcFRhcmdl
dHNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgSW5zdHJ1Y3Rpb24qIGlu
c3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgVmVjdG9yPHVuc2lnbmVk
LCAxPiYgb3V0KQoreworICAgIGdldEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoY29kZUJs
b2NrLCBjb2RlQmxvY2stPnZtKCktPmludGVycHJldGVyLCBpbnN0cnVjdGlvbnNCZWdpbiwgYnl0
ZWNvZGVPZmZzZXQsIG91dCk7Cit9CisKK3ZvaWQgZmluZEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVP
ZmZzZXQoVW5saW5rZWRDb2RlQmxvY2sqIGNvZGVCbG9jaywgVW5saW5rZWRJbnN0cnVjdGlvbiog
aW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBWZWN0b3I8dW5zaWdu
ZWQsIDE+JiBvdXQpCit7CisgICAgZ2V0SnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChjb2Rl
QmxvY2ssIGNvZGVCbG9jay0+dm0oKS0+aW50ZXJwcmV0ZXIsIGluc3RydWN0aW9uc0JlZ2luLCBi
eXRlY29kZU9mZnNldCwgb3V0KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmgKaW5kZXgg
ODUyNDEzZDc3Yjc5ODk4NGIyN2NlZjBlZDYyYmM5NGM2ODllMjEyYy4uZGI5YmQzODNiOGFjNDU1
N2QzMjY3MTdiNzJkNGIwZjUwYjFkMTgzOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHMuaApAQCAtMzAsMTAgKzMwLDE4IEBACiAK
IG5hbWVzcGFjZSBKU0MgewogCitjbGFzcyBVbmxpbmtlZENvZGVCbG9jazsKK3N0cnVjdCBVbmxp
bmtlZEluc3RydWN0aW9uOworCiAvLyBSZXR1cm4gYSBzb3J0ZWQgbGlzdCBvZiBieXRlY29kZSBp
bmRleCB0aGF0IGFyZSB0aGUgZGVzdGluYXRpb24gb2YgYSBqdW1wLgogdm9pZCBjb21wdXRlUHJl
Y2lzZUp1bXBUYXJnZXRzKENvZGVCbG9jayosIFZlY3Rvcjx1bnNpZ25lZCwgMzI+JiBvdXQpOwor
dm9pZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKENvZGVCbG9jayosIEluc3RydWN0aW9uKiBp
bnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCwgVmVjdG9yPHVuc2ln
bmVkLCAzMj4mIG91dCk7Cit2b2lkIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMoVW5saW5rZWRD
b2RlQmxvY2sqLCBVbmxpbmtlZEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWdu
ZWQgaW5zdHJ1Y3Rpb25Db3VudCwgVmVjdG9yPHVuc2lnbmVkLCAzMj4mIG91dCk7CisKK3ZvaWQg
cmVjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKFVubGlua2VkQ29kZUJsb2NrKiwgVW5saW5rZWRJ
bnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQs
IFZlY3Rvcjx1bnNpZ25lZD4mIG91dCk7CiAKLXZvaWQgZmluZEp1bXBUYXJnZXRzRm9yQnl0ZWNv
ZGVPZmZzZXQoQ29kZUJsb2NrKiwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIFZlY3Rvcjx1bnNp
Z25lZCwgMT4mIG91dCk7Cit2b2lkIGZpbmRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KENv
ZGVCbG9jayosIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgYnl0ZWNv
ZGVPZmZzZXQsIFZlY3Rvcjx1bnNpZ25lZCwgMT4mIG91dCk7Cit2b2lkIGZpbmRKdW1wVGFyZ2V0
c0ZvckJ5dGVjb2RlT2Zmc2V0KFVubGlua2VkQ29kZUJsb2NrKiwgVW5saW5rZWRJbnN0cnVjdGlv
biogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBWZWN0b3I8dW5z
aWduZWQsIDE+JiBvdXQpOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKaW5kZXggMjk5
YWM2ODBkOWExZDFlNWE5MGQ5ZmFlMWEyMmY4NDRlMjkyZTNlMi4uZjdiNWFlMGI2YjQ3MjE3MGQy
ODk0NjQxNjc2NjE4YzU3YzQ5ZWMyZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5j
bHVkZSAiVW5saW5rZWRDb2RlQmxvY2suaCIKIAogI2luY2x1ZGUgIkJ5dGVjb2RlR2VuZXJhdG9y
LmgiCisjaW5jbHVkZSAiQnl0ZWNvZGVNb2RpZmljYXRpb25TZXQuaCIKICNpbmNsdWRlICJDbGFz
c0luZm8uaCIKICNpbmNsdWRlICJDb2RlQ2FjaGUuaCIKICNpbmNsdWRlICJFeGVjdXRhYmxlLmgi
CkBAIC0zNiw2ICszNyw3IEBACiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIKICNpbmNsdWRlICJKU0NJ
bmxpbmVzLmgiCiAjaW5jbHVkZSAiUGFyc2VyLmgiCisjaW5jbHVkZSAiUHJlY2lzZUp1bXBUYXJn
ZXRzLmgiCiAjaW5jbHVkZSAiU291cmNlUHJvdmlkZXIuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmUu
aCIKICNpbmNsdWRlICJTeW1ib2xUYWJsZS5oIgpAQCAtMzY2LDUgKzM2OCwxMTEgQEAgY29uc3Qg
VW5saW5rZWRJbnN0cnVjdGlvblN0cmVhbSYgVW5saW5rZWRDb2RlQmxvY2s6Omluc3RydWN0aW9u
cygpIGNvbnN0CiAgICAgcmV0dXJuICptX3VubGlua2VkSW5zdHJ1Y3Rpb25zOwogfQogCitVbmxp
bmtlZEhhbmRsZXJJbmZvKiBVbmxpbmtlZENvZGVCbG9jazo6aGFuZGxlckZvckJ5dGVjb2RlT2Zm
c2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBSZXF1aXJlZEhhbmRsZXIgcmVxdWlyZWRIYW5k
bGVyKQoreworICAgIHJldHVybiBoYW5kbGVyRm9ySW5kZXgoYnl0ZWNvZGVPZmZzZXQsIHJlcXVp
cmVkSGFuZGxlcik7Cit9CisKK1VubGlua2VkSGFuZGxlckluZm8qIFVubGlua2VkQ29kZUJsb2Nr
OjpoYW5kbGVyRm9ySW5kZXgodW5zaWduZWQgaW5kZXgsIFJlcXVpcmVkSGFuZGxlciByZXF1aXJl
ZEhhbmRsZXIpCit7CisgICAgaWYgKCFtX3JhcmVEYXRhKQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICByZXR1cm4gVW5saW5rZWRIYW5kbGVySW5mbzo6aGFuZGxlckZvckluZGV4KG1fcmFy
ZURhdGEtPm1fZXhjZXB0aW9uSGFuZGxlcnMsIGluZGV4LCByZXF1aXJlZEhhbmRsZXIpOworfQor
Cit2b2lkIFVubGlua2VkQ29kZUJsb2NrOjphcHBseU1vZGlmaWNhdGlvbihCeXRlY29kZU1vZGlm
aWNhdGlvblNldCYgaW5zZXJ0aW9uU2V0KQoreworICAgIC8vIEJlZm9yZSBhcHBseWluZyB0aGUg
Y2hhbmdlcywgd2UgYWRqdXN0IHRoZSBqdW1wcyBiYXNlZCBvbiB0aGUgb3JpZ2luYWwgYnl0ZWNv
ZGUgb2Zmc2V0LCB0aGUgb2Zmc2V0IHRvIHRoZSBqdW1wIHRhcmdldCwgYW5kCisgICAgLy8gdGhl
IGluc2VydGlvbiBpbmZvcm1hdGlvbi4KKworICAgIEJ5dGVjb2RlR3JhcGg8VW5saW5rZWRDb2Rl
QmxvY2s+JiBncmFwaCA9IGluc2VydGlvblNldC5ncmFwaCgpOworICAgIFVubGlua2VkSW5zdHJ1
Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luID0gZ3JhcGguaW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsK
KyAgICBmb3IgKGludCBieXRlY29kZU9mZnNldCA9IDAsIGluc3RydWN0aW9uQ291bnQgPSBncmFw
aC5pbnN0cnVjdGlvbnMoKS5zaXplKCk7IGJ5dGVjb2RlT2Zmc2V0IDwgaW5zdHJ1Y3Rpb25Db3Vu
dDspIHsKKyAgICAgICAgVW5saW5rZWRJbnN0cnVjdGlvbiogY3VycmVudCA9IGluc3RydWN0aW9u
c0JlZ2luICsgYnl0ZWNvZGVPZmZzZXQ7CisgICAgICAgIE9wY29kZUlEIG9wY29kZUlEID0gY3Vy
cmVudFswXS51Lm9wY29kZTsKKworICAgICAgICBzd2l0Y2ggKG9wY29kZUlEKSB7CisgICAgICAg
IGNhc2Ugb3Bfam1wOgorICAgICAgICAgICAgY3VycmVudFsxXS51Lm9wZXJhbmQgPSBpbnNlcnRp
b25TZXQuYWRqdXN0T2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0LCBieXRlY29kZU9mZnNldCArIGN1cnJl
bnRbMV0udS5vcGVyYW5kKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2Ugb3Bf
anRydWU6CisgICAgICAgIGNhc2Ugb3BfamZhbHNlOgorICAgICAgICBjYXNlIG9wX2plcV9udWxs
OgorICAgICAgICBjYXNlIG9wX2puZXFfbnVsbDoKKyAgICAgICAgICAgIGN1cnJlbnRbMl0udS5v
cGVyYW5kID0gaW5zZXJ0aW9uU2V0LmFkanVzdE9mZnNldChieXRlY29kZU9mZnNldCwgYnl0ZWNv
ZGVPZmZzZXQgKyBjdXJyZW50WzJdLnUub3BlcmFuZCk7CisgICAgICAgICAgICBicmVhazsKKwor
ICAgICAgICBjYXNlIG9wX2puZXFfcHRyOgorICAgICAgICBjYXNlIG9wX2psZXNzOgorICAgICAg
ICBjYXNlIG9wX2psZXNzZXE6CisgICAgICAgIGNhc2Ugb3BfamdyZWF0ZXI6CisgICAgICAgIGNh
c2Ugb3BfamdyZWF0ZXJlcToKKyAgICAgICAgY2FzZSBvcF9qbmxlc3M6CisgICAgICAgIGNhc2Ug
b3Bfam5sZXNzZXE6CisgICAgICAgIGNhc2Ugb3Bfam5ncmVhdGVyOgorICAgICAgICBjYXNlIG9w
X2puZ3JlYXRlcmVxOgorICAgICAgICAgICAgY3VycmVudFszXS51Lm9wZXJhbmQgPSBpbnNlcnRp
b25TZXQuYWRqdXN0T2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0LCBieXRlY29kZU9mZnNldCArIGN1cnJl
bnRbM10udS5vcGVyYW5kKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2Ugb3Bf
c3dpdGNoX2ltbToKKyAgICAgICAgY2FzZSBvcF9zd2l0Y2hfY2hhcjogeworICAgICAgICAgICAg
YXV0byYgdGFibGUgPSBzd2l0Y2hKdW1wVGFibGUoY3VycmVudFsxXS51Lm9wZXJhbmQpOworICAg
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gdGFibGUuYnJhbmNoT2Zmc2V0cy5zaXplKCk7IGkt
LTspCisgICAgICAgICAgICAgICAgdGFibGUuYnJhbmNoT2Zmc2V0c1tpXSA9IGluc2VydGlvblNl
dC5hZGp1c3RPZmZzZXQoYnl0ZWNvZGVPZmZzZXQsIGJ5dGVjb2RlT2Zmc2V0ICsgdGFibGUuYnJh
bmNoT2Zmc2V0c1tpXSk7CisgICAgICAgICAgICBjdXJyZW50WzJdLnUub3BlcmFuZCA9IGluc2Vy
dGlvblNldC5hZGp1c3RPZmZzZXQoYnl0ZWNvZGVPZmZzZXQsIGJ5dGVjb2RlT2Zmc2V0ICsgY3Vy
cmVudFsyXS51Lm9wZXJhbmQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAg
ICAgICBjYXNlIG9wX3N3aXRjaF9zdHJpbmc6IHsKKyAgICAgICAgICAgIGF1dG8mIHRhYmxlID0g
c3RyaW5nU3dpdGNoSnVtcFRhYmxlKGN1cnJlbnRbMV0udS5vcGVyYW5kKTsKKyAgICAgICAgICAg
IGF1dG8gaXRlciA9IHRhYmxlLm9mZnNldFRhYmxlLmJlZ2luKCk7CisgICAgICAgICAgICBhdXRv
IGVuZCA9IHRhYmxlLm9mZnNldFRhYmxlLmVuZCgpOworICAgICAgICAgICAgZm9yICg7IGl0ZXIg
IT0gZW5kOyArK2l0ZXIpCisgICAgICAgICAgICAgICAgaXRlci0+dmFsdWUuYnJhbmNoT2Zmc2V0
ID0gaW5zZXJ0aW9uU2V0LmFkanVzdE9mZnNldChieXRlY29kZU9mZnNldCwgYnl0ZWNvZGVPZmZz
ZXQgKyBpdGVyLT52YWx1ZS5icmFuY2hPZmZzZXQpOworICAgICAgICAgICAgY3VycmVudFsyXS51
Lm9wZXJhbmQgPSBpbnNlcnRpb25TZXQuYWRqdXN0T2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0LCBieXRl
Y29kZU9mZnNldCArIGN1cnJlbnRbMl0udS5vcGVyYW5kKTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CisKKyAgICAgICAgYnl0ZWNvZGVPZmZzZXQgKz0gb3Bjb2RlTGVuZ3RoKG9wY29kZUlEKTsK
KyAgICB9CisKKyAgICAvLyBUaGVuLCBleGNlcHRpb24gaGFuZGxlcnMgc2hvdWxkIGJlIGFkanVz
dGVkLgorICAgIGlmIChtX3JhcmVEYXRhKSB7CisgICAgICAgIGZvciAoVW5saW5rZWRIYW5kbGVy
SW5mbyYgaGFuZGxlciA6IG1fcmFyZURhdGEtPm1fZXhjZXB0aW9uSGFuZGxlcnMpIHsKKyAgICAg
ICAgICAgIGhhbmRsZXIudGFyZ2V0ID0gaW5zZXJ0aW9uU2V0LmFkanVzdE9mZnNldCgwLCBoYW5k
bGVyLnRhcmdldCk7CisgICAgICAgICAgICBoYW5kbGVyLnN0YXJ0ID0gaW5zZXJ0aW9uU2V0LmFk
anVzdE9mZnNldCgwLCBoYW5kbGVyLnN0YXJ0KTsKKyAgICAgICAgICAgIGhhbmRsZXIuZW5kID0g
aW5zZXJ0aW9uU2V0LmFkanVzdE9mZnNldCgwLCBoYW5kbGVyLmVuZCk7CisgICAgICAgIH0KKwor
ICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fcmFyZURhdGEtPm1fb3BQcm9maWxlQ29u
dHJvbEZsb3dCeXRlY29kZU9mZnNldHMuc2l6ZSgpOyArK2kpCisgICAgICAgICAgICBtX3JhcmVE
YXRhLT5tX29wUHJvZmlsZUNvbnRyb2xGbG93Qnl0ZWNvZGVPZmZzZXRzW2ldID0gaW5zZXJ0aW9u
U2V0LmFkanVzdE9mZnNldCgwLCBtX3JhcmVEYXRhLT5tX29wUHJvZmlsZUNvbnRyb2xGbG93Qnl0
ZWNvZGVPZmZzZXRzW2ldKTsKKworICAgICAgICBpZiAoIW1fcmFyZURhdGEtPm1fdHlwZVByb2Zp
bGVySW5mb01hcC5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIEhhc2hNYXA8dW5zaWduZWQsIFJh
cmVEYXRhOjpUeXBlUHJvZmlsZXJFeHByZXNzaW9uUmFuZ2U+IGFkanVzdGVkVHlwZVByb2ZpbGVy
SW5mb01hcDsKKyAgICAgICAgICAgIGZvciAoYXV0byYgZW50cnkgOiBtX3JhcmVEYXRhLT5tX3R5
cGVQcm9maWxlckluZm9NYXApCisgICAgICAgICAgICAgICAgYWRqdXN0ZWRUeXBlUHJvZmlsZXJJ
bmZvTWFwLnNldChpbnNlcnRpb25TZXQuYWRqdXN0T2Zmc2V0KDAsIGVudHJ5LmtleSksIGVudHJ5
LnZhbHVlKTsKKyAgICAgICAgICAgIG1fcmFyZURhdGEtPm1fdHlwZVByb2ZpbGVySW5mb01hcC5z
d2FwKGFkanVzdGVkVHlwZVByb2ZpbGVySW5mb01hcCk7CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnMuc2l6
ZSgpOyArK2kpCisgICAgICAgIG1fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnNbaV0gPSBpbnNl
cnRpb25TZXQuYWRqdXN0T2Zmc2V0KDAsIG1fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnNbaV0p
OworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2V4cHJlc3Npb25JbmZvLnNpemUoKTsg
KytpKQorICAgICAgICBtX2V4cHJlc3Npb25JbmZvW2ldLmluc3RydWN0aW9uT2Zmc2V0ID0gaW5z
ZXJ0aW9uU2V0LmFkanVzdE9mZnNldCgwLCBtX2V4cHJlc3Npb25JbmZvW2ldLmluc3RydWN0aW9u
T2Zmc2V0KTsKKworICAgIC8vIFRoZW4sIG1vZGlmeSB0aGUgdW5saW5rZWQgaW5zdHJ1Y3Rpb25z
LgorICAgIGluc2VydGlvblNldC5hcHBseU1vZGlmaWNhdGlvbigpOworCisgICAgLy8gQW5kIHJl
Y29tcHV0ZSB0aGUganVtcCB0YXJnZXQgYmFzZWQgb24gdGhlIG1vZGlmaWVkIHVubGlua2VkIGlu
c3RydWN0aW9ucy4KKyAgICBtX2p1bXBUYXJnZXRzLmNsZWFyKCk7CisgICAgcmVjb21wdXRlUHJl
Y2lzZUp1bXBUYXJnZXRzKHRoaXMsIGdyYXBoLmluc3RydWN0aW9ucygpLmJlZ2luKCksIGdyYXBo
Lmluc3RydWN0aW9ucygpLnNpemUoKSwgbV9qdW1wVGFyZ2V0cyk7Cit9CisKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAppbmRl
eCA5MWZkY2E0OGMxZTM5ZThiZWZiMGM1ZmQ1NWZkOWJkOTFjMWYzNzA3Li44OGNmMGM4ZjA5ZTQ0
MDMzNDE3ZTA0YmFhMzJkYzUwMmRlMTgwMjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaApAQCAtNDgsNiArNDgsNyBAQAogCiBu
YW1lc3BhY2UgSlNDIHsKIAorY2xhc3MgQnl0ZWNvZGVNb2RpZmljYXRpb25TZXQ7CiBjbGFzcyBE
ZWJ1Z2dlcjsKIGNsYXNzIEZ1bmN0aW9uTWV0YWRhdGFOb2RlOwogY2xhc3MgRnVuY3Rpb25FeGVj
dXRhYmxlOwpAQCAtNjksNyArNzAsMTEgQEAgdHlwZWRlZiB1bnNpZ25lZCBVbmxpbmtlZE9iamVj
dEFsbG9jYXRpb25Qcm9maWxlOwogdHlwZWRlZiB1bnNpZ25lZCBVbmxpbmtlZExMSW50Q2FsbExp
bmtJbmZvOwogCiBzdHJ1Y3QgVW5saW5rZWRTdHJpbmdKdW1wVGFibGUgewotICAgIHR5cGVkZWYg
SGFzaE1hcDxSZWZQdHI8U3RyaW5nSW1wbD4sIGludDMyX3Q+IFN0cmluZ09mZnNldFRhYmxlOwor
ICAgIHN0cnVjdCBPZmZzZXRMb2NhdGlvbiB7CisgICAgICAgIGludDMyX3QgYnJhbmNoT2Zmc2V0
OworICAgIH07CisKKyAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFN0cmluZ0ltcGw+LCBPZmZz
ZXRMb2NhdGlvbj4gU3RyaW5nT2Zmc2V0VGFibGU7CiAgICAgU3RyaW5nT2Zmc2V0VGFibGUgb2Zm
c2V0VGFibGU7CiAKICAgICBpbmxpbmUgaW50MzJfdCBvZmZzZXRGb3JWYWx1ZShTdHJpbmdJbXBs
KiB2YWx1ZSwgaW50MzJfdCBkZWZhdWx0T2Zmc2V0KQpAQCAtNzgsNyArODMsNyBAQCBzdHJ1Y3Qg
VW5saW5rZWRTdHJpbmdKdW1wVGFibGUgewogICAgICAgICBTdHJpbmdPZmZzZXRUYWJsZTo6Y29u
c3RfaXRlcmF0b3IgbG9jID0gb2Zmc2V0VGFibGUuZmluZCh2YWx1ZSk7CiAgICAgICAgIGlmIChs
b2MgPT0gZW5kKQogICAgICAgICAgICAgcmV0dXJuIGRlZmF1bHRPZmZzZXQ7Ci0gICAgICAgIHJl
dHVybiBsb2MtPnZhbHVlOworICAgICAgICByZXR1cm4gbG9jLT52YWx1ZS5icmFuY2hPZmZzZXQ7
CiAgICAgfQogCiB9OwpAQCAtMTA2LDYgKzExMSw4IEBAIHN0cnVjdCBVbmxpbmtlZEluc3RydWN0
aW9uIHsKICAgICB9IHU7CiB9OwogCitjbGFzcyBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbjsK
KwogY2xhc3MgVW5saW5rZWRDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKIHB1YmxpYzoKICAg
ICB0eXBlZGVmIEpTQ2VsbCBCYXNlOwpAQCAtMTE1LDYgKzEyMiw4IEBAIGNsYXNzIFVubGlua2Vk
Q29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAKICAgICBlbnVtIHsgQ2FsbEZ1bmN0aW9uLCBB
cHBseUZ1bmN0aW9uIH07CiAKKyAgICB0eXBlZGVmIFZlY3RvcjxVbmxpbmtlZEluc3RydWN0aW9u
LCAwLCBVbnNhZmVWZWN0b3JPdmVyZmxvdz4gVW5wYWNrZWRJbnN0cnVjdGlvbnM7CisKICAgICBi
b29sIGlzQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2lzQ29uc3RydWN0b3I7IH0KICAg
ICBib29sIGlzU3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNTdHJpY3RNb2RlOyB9CiAg
ICAgYm9vbCB1c2VzRXZhbCgpIGNvbnN0IHsgcmV0dXJuIG1fdXNlc0V2YWw7IH0KQEAgLTIwNCw2
ICsyMTMsOSBAQCBjbGFzcyBVbmxpbmtlZENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAg
IHVuc2lnbmVkIGp1bXBUYXJnZXQoaW50IGluZGV4KSBjb25zdCB7IHJldHVybiBtX2p1bXBUYXJn
ZXRzW2luZGV4XTsgfQogICAgIHVuc2lnbmVkIGxhc3RKdW1wVGFyZ2V0KCkgY29uc3QgeyByZXR1
cm4gbV9qdW1wVGFyZ2V0cy5sYXN0KCk7IH0KIAorICAgIFVubGlua2VkSGFuZGxlckluZm8qIGhh
bmRsZXJGb3JCeXRlY29kZU9mZnNldCh1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgUmVxdWlyZWRI
YW5kbGVyID0gUmVxdWlyZWRIYW5kbGVyOjpBbnlIYW5kbGVyKTsKKyAgICBVbmxpbmtlZEhhbmRs
ZXJJbmZvKiBoYW5kbGVyRm9ySW5kZXgodW5zaWduZWQsIFJlcXVpcmVkSGFuZGxlciA9IFJlcXVp
cmVkSGFuZGxlcjo6QW55SGFuZGxlcik7CisKICAgICBib29sIGlzQnVpbHRpbkZ1bmN0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9pc0J1aWx0aW5GdW5jdGlvbjsgfQogCiAgICAgQ29uc3RydWN0b3JL
aW5kIGNvbnN0cnVjdG9yS2luZCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PENvbnN0cnVj
dG9yS2luZD4obV9jb25zdHJ1Y3RvcktpbmQpOyB9CkBAIC0zODQsNiArMzk2LDggQEAgY2xhc3Mg
VW5saW5rZWRDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICB9CiAKIHByaXZhdGU6Cisg
ICAgZnJpZW5kIGNsYXNzIEJ5dGVjb2RlTW9kaWZpY2F0aW9uU2V0OworICAgIHZvaWQgYXBwbHlN
b2RpZmljYXRpb24oQnl0ZWNvZGVNb2RpZmljYXRpb25TZXQmKTsKIAogICAgIHZvaWQgY3JlYXRl
UmFyZURhdGFJZk5lY2Vzc2FyeSgpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1ZpcnR1YWxSZWdpc3Rlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1ZpcnR1YWxSZWdpc3Rlci5oCmluZGV4IGQzZGY0MDk1N2I1MTc1NjhlM2FlZmJl
M2ExYTYwOWZkODc4YmFhYzMuLmRhZjUwOWY2YzdkMTE1ZTQ1YmNiMTA3YzY3ZDNkMzhkODA0ZjI4
OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WaXJ0dWFsUmVn
aXN0ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmlydHVhbFJlZ2lz
dGVyLmgKQEAgLTI2LDggKzI2LDggQEAKICNpZm5kZWYgVmlydHVhbFJlZ2lzdGVyX2gKICNkZWZp
bmUgVmlydHVhbFJlZ2lzdGVyX2gKIAorI2luY2x1ZGUgIkJ5dGVjb2RlQ29udmVudGlvbnMuaCIK
ICNpbmNsdWRlICJDYWxsRnJhbWUuaCIKLQogI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgog
CiBuYW1lc3BhY2UgSlNDIHsKQEAgLTEwMyw3ICsxMDMsNyBAQCBjbGFzcyBWaXJ0dWFsUmVnaXN0
ZXIgewogCiBwcml2YXRlOgogICAgIHN0YXRpYyBjb25zdCBpbnQgc19pbnZhbGlkVmlydHVhbFJl
Z2lzdGVyID0gMHgzZmZmZmZmZjsKLSAgICBzdGF0aWMgY29uc3QgaW50IHNfZmlyc3RDb25zdGFu
dFJlZ2lzdGVySW5kZXggPSAweDQwMDAwMDAwOworICAgIHN0YXRpYyBjb25zdCBpbnQgc19maXJz
dENvbnN0YW50UmVnaXN0ZXJJbmRleCA9IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4OwogCiAg
ICAgc3RhdGljIGludCBsb2NhbFRvT3BlcmFuZChpbnQgbG9jYWwpIHsgcmV0dXJuIC0xIC0gbG9j
YWw7IH0KICAgICBzdGF0aWMgaW50IG9wZXJhbmRUb0xvY2FsKGludCBvcGVyYW5kKSB7IHJldHVy
biAtMSAtIG9wZXJhbmQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXggMGZjOGNlYjNiZDU2YmI1ZWI4
YzdjYjczM2RhM2EwNGFjNjM2M2UyNi4uOWEwYTRhNzZlYzZkZjRjNTBmOWQ2MjZmYTc1ZjBhNGRk
MzExMDlkZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJC
eXRlY29kZUdlbmVyYXRvci5oIgogCiAjaW5jbHVkZSAiQnVpbHRpbkV4ZWN1dGFibGVzLmgiCisj
aW5jbHVkZSAiQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uaCIKICNpbmNsdWRlICJCeXRlY29k
ZUxpdmVuZXNzQW5hbHlzaXMuaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUg
IkpTRnVuY3Rpb24uaCIKQEAgLTE1NCw2ICsxNTUsMTAgQEAgUGFyc2VyRXJyb3IgQnl0ZWNvZGVH
ZW5lcmF0b3I6OmdlbmVyYXRlKCkKICAgICAgICAgbV9jb2RlQmxvY2stPmFkZEV4Y2VwdGlvbkhh
bmRsZXIoaW5mbyk7CiAgICAgfQogICAgIAorCisgICAgaWYgKG1fY29kZUJsb2NrLT5wYXJzZU1v
ZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckJvZHlNb2RlKQorICAgICAgICBwZXJm
b3JtR2VuZXJhdG9yaWZpY2F0aW9uKG1fY29kZUJsb2NrLmdldCgpLCBtX2luc3RydWN0aW9ucywg
bV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlLmdldCgpLCBtX2dlbmVyYXRvckZyYW1lU3ltYm9s
VGFibGVJbmRleCk7CisKICAgICBtX2NvZGVCbG9jay0+c2V0SW5zdHJ1Y3Rpb25zKHN0ZDo6bWFr
ZV91bmlxdWU8VW5saW5rZWRJbnN0cnVjdGlvblN0cmVhbT4obV9pbnN0cnVjdGlvbnMpKTsKIAog
ICAgIG1fY29kZUJsb2NrLT5zaHJpbmtUb0ZpdCgpOwpAQCAtMjYxLDEwICsyNjYsMTQgQEAgQnl0
ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25Ob2RlKiBm
dW5jdGlvbk5vZGUsIFVubGlua2UKICAgICBib29sIHNob3VsZENhcHR1cmVBbGxPZlRoZVRoaW5n
cyA9IG1fc2hvdWxkRW1pdERlYnVnSG9va3MgfHwgY29kZUJsb2NrLT51c2VzRXZhbCgpOwogICAg
IGJvb2wgbmVlZHNBcmd1bWVudHMgPSAoZnVuY3Rpb25Ob2RlLT51c2VzQXJndW1lbnRzKCkgfHwg
Y29kZUJsb2NrLT51c2VzRXZhbCgpIHx8IChmdW5jdGlvbk5vZGUtPnVzZXNBcnJvd0Z1bmN0aW9u
KCkgJiYgIWNvZGVCbG9jay0+aXNBcnJvd0Z1bmN0aW9uKCkgJiYgaXNBcmd1bWVudHNVc2VkSW5J
bm5lckFycm93RnVuY3Rpb24oKSkpOwogCi0gICAgLy8gR2VuZXJhdG9yIG5ldmVyIHByb3ZpZGVz
ICJhcmd1bWVudHMiLiAiYXJndW1lbnRzIiByZWZlcmVuY2Ugd2lsbCBiZSByZXNvbHZlZCBpbiBh
biB1cHBlciBnZW5lcmF0b3IgZnVuY3Rpb24gc2NvcGUuCi0gICAgaWYgKHBhcnNlTW9kZSA9PSBT
b3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckJvZHlNb2RlKQorICAgIGlmIChwYXJzZU1vZGUgPT0g
U291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JCb2R5TW9kZSkgeworICAgICAgICAvLyBHZW5lcmF0
b3IgbmV2ZXIgcHJvdmlkZXMgImFyZ3VtZW50cyIuICJhcmd1bWVudHMiIHJlZmVyZW5jZSB3aWxs
IGJlIHJlc29sdmVkIGluIGFuIHVwcGVyIGdlbmVyYXRvciBmdW5jdGlvbiBzY29wZS4KICAgICAg
ICAgbmVlZHNBcmd1bWVudHMgPSBmYWxzZTsKIAorICAgICAgICAvLyBHZW5lcmF0b3IgdXNlcyB0
aGUgdmFyIHNjb3BlIHRvIHNhdmUgYW5kIHJlc3VtZSBpdHMgdmFyaWFibGVzLiBTbyB0aGUgbGV4
aWNhbCBzY29wZSBpcyBhbHdheXMgaW5zdGFudGlhdGVkLgorICAgICAgICBzaG91bGRDYXB0dXJl
U29tZU9mVGhlVGhpbmdzID0gdHJ1ZTsKKyAgICB9CisKICAgICBpZiAocGFyc2VNb2RlID09IFNv
dXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yV3JhcHBlckZ1bmN0aW9uTW9kZSAmJiBuZWVkc0FyZ3Vt
ZW50cykgewogICAgICAgICAvLyBHZW5lcmF0b3IgZG9lcyBub3QgcHJvdmlkZSAiYXJndW1lbnRz
Ii4gSW5zdGVhZCwgd3JhcHBpbmcgR2VuZXJhdG9yRnVuY3Rpb24gcHJvdmlkZXMgImFyZ3VtZW50
cyIuCiAgICAgICAgIC8vIFRoaXMgaXMgYmVjYXVzZSBhcmd1bWVudHMgb2YgYSBnZW5lcmF0b3Ig
c2hvdWxkIGJlIGV2YWx1YXRlZCBiZWZvcmUgc3RhcnRpbmcgaXQuCkBAIC0yNzMsNyArMjgyLDcg
QEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25O
b2RlKiBmdW5jdGlvbk5vZGUsIFVubGlua2UKICAgICAgICAgLy8gICAgZnVuY3Rpb24gKmdlbihh
LCBiID0gaGVsbG8oKSkKICAgICAgICAgLy8gICAgewogICAgICAgICAvLyAgICAgICAgcmV0dXJu
IHsKLSAgICAgICAgLy8gICAgICAgICAgICBAZ2VuZXJhdG9yTmV4dDogZnVuY3Rpb24gKEBnZW5l
cmF0b3IsIEBnZW5lcmF0b3JTdGF0ZSwgQGdlbmVyYXRvclZhbHVlLCBAZ2VuZXJhdG9yUmVzdW1l
TW9kZSkKKyAgICAgICAgLy8gICAgICAgICAgICBAZ2VuZXJhdG9yTmV4dDogZnVuY3Rpb24gKEBn
ZW5lcmF0b3IsIEBnZW5lcmF0b3JTdGF0ZSwgQGdlbmVyYXRvclZhbHVlLCBAZ2VuZXJhdG9yUmVz
dW1lTW9kZSwgQGdlbmVyYXRvckZyYW1lKQogICAgICAgICAvLyAgICAgICAgICAgIHsKICAgICAg
ICAgLy8gICAgICAgICAgICAgICAgYXJndW1lbnRzOyAgLy8gVGhpcyBgYXJndW1lbnRzYCBzaG91
bGQgcmVmZXJlbmNlIHRvIHRoZSBnZW4ncyBhcmd1bWVudHMuCiAgICAgICAgIC8vICAgICAgICAg
ICAgICAgIC4uLgpAQCAtMzAyLDE2ICszMTEsMTQgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVj
b2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25Ob2RlKiBmdW5jdGlvbk5vZGUsIFVubGlua2UK
ICAgICAgICAgcmV0dXJuIGNhcHR1cmVzKHVpZCkgPyBWYXJLaW5kOjpTY29wZSA6IFZhcktpbmQ6
OlN0YWNrOwogICAgIH07CiAKLSAgICBlbWl0RW50ZXIoKTsKLQotICAgIGFsbG9jYXRlQW5kRW1p
dFNjb3BlKCk7Ci0KICAgICBtX2NhbGxlZVJlZ2lzdGVyLnNldEluZGV4KENhbGxGcmFtZVNsb3Q6
OmNhbGxlZSk7CiAKICAgICBpbml0aWFsaXplUGFyYW1ldGVycyhwYXJhbWV0ZXJzKTsKICAgICBB
U1NFUlQoIShpc1NpbXBsZVBhcmFtZXRlckxpc3QgJiYgbV9yZXN0UGFyYW1ldGVyKSk7CiAKLSAg
ICAvLyBCZWZvcmUgZW1pdHRpbmcgYSBzY29wZSBjcmVhdGlvbiwgZW1pdCBhIGdlbmVyYXRvciBw
cm9sb2d1ZSB0aGF0IGNvbnRhaW5zIGp1bXAgYmFzZWQgb24gYSBnZW5lcmF0b3IncyBzdGF0ZS4K
KyAgICBlbWl0RW50ZXIoKTsKKworICAgIC8vIEJlZm9yZSBlbWl0dGluZyBhbnkgb2YgdGhlIGFj
dHVhbCBjb2RlIGV4Y2VwdCBmb3Igb3BfZW50ZXIsIGVtaXQgYSBnZW5lcmF0b3IgcHJvbG9ndWUg
dGhhdCBjb250YWlucyBqdW1wIGJhc2VkIG9uIGEgZ2VuZXJhdG9yJ3Mgc3RhdGUuCiAgICAgaWYg
KHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckJvZHlNb2RlKSB7CiAgICAg
ICAgIG1fZ2VuZXJhdG9yUmVnaXN0ZXIgPSAmbV9wYXJhbWV0ZXJzWzFdOwogCkBAIC0zMjUsNiAr
MzMyLDggQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVu
Y3Rpb25Ob2RlKiBmdW5jdGlvbk5vZGUsIFVubGlua2UKICAgICAgICAgZW1pdEdlbmVyYXRvclN0
YXRlTGFiZWwoKTsKICAgICB9CiAKKyAgICBhbGxvY2F0ZUFuZEVtaXRTY29wZSgpOworCiAgICAg
aWYgKGZ1bmN0aW9uTmFtZUlzSW5TY29wZShmdW5jdGlvbk5vZGUtPmlkZW50KCksIGZ1bmN0aW9u
Tm9kZS0+ZnVuY3Rpb25Nb2RlKCkpKSB7CiAgICAgICAgIEFTU0VSVChwYXJzZU1vZGUgIT0gU291
cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JCb2R5TW9kZSk7CiAgICAgICAgIGJvb2wgaXNEeW5hbWlj
U2NvcGUgPSBmdW5jdGlvbk5hbWVTY29wZUlzRHluYW1pYyhjb2RlQmxvY2stPnVzZXNFdmFsKCks
IGNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpOwpAQCAtNjMxLDYgKzY0MCwxNiBAQCBCeXRlY29k
ZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0
aW9uTm9kZSwgVW5saW5rZQogICAgICAgICAgICAgZW1pdExvYWROZXdUYXJnZXRGcm9tQXJyb3dG
dW5jdGlvbkxleGljYWxFbnZpcm9ubWVudCgpOwogICAgIH0KICAgICAKKyAgICAvLyBTZXQgdXAg
dGhlIGxleGljYWwgZW52aXJvbm1lbnQgc2NvcGUgYXMgdGhlIGdlbmVyYXRvciBmcmFtZS4gV2Ug
c3RvcmUgdGhlIHNhdmVkIGFuZCByZXN1bWVkIGdlbmVyYXRvciByZWdpc3RlcnMgaW50byB0aGlz
IHNjb3BlIHdpdGggdGhlIHN5bWJvbCBrZXlzLgorICAgIC8vIFNpbmNlIHRoZXkgYXJlIHN5bWJv
bCBrZXllZCwgdGhlc2UgdmFyaWFibGVzIGNhbm5vdCBiZSByZWFjaGVkIGZyb20gdGhlIHVzdWFs
IGNvZGUuCisgICAgaWYgKFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yQm9keU1vZGUgPT0gcGFy
c2VNb2RlKSB7CisgICAgICAgIEFTU0VSVChtX2xleGljYWxFbnZpcm9ubWVudFJlZ2lzdGVyKTsK
KyAgICAgICAgbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlLnNldCgqbV92bSwgZnVuY3Rpb25T
eW1ib2xUYWJsZSk7CisgICAgICAgIG1fZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZUluZGV4ID0g
c3ltYm9sVGFibGVDb25zdGFudEluZGV4OworICAgICAgICBlbWl0TW92ZShnZW5lcmF0b3JGcmFt
ZVJlZ2lzdGVyKCksIG1fbGV4aWNhbEVudmlyb25tZW50UmVnaXN0ZXIpOworICAgICAgICBlbWl0
UHV0QnlJZChnZW5lcmF0b3JSZWdpc3RlcigpLCBwcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVz
KCkuZ2VuZXJhdG9yRnJhbWVQcml2YXRlTmFtZSgpLCBnZW5lcmF0b3JGcmFtZVJlZ2lzdGVyKCkp
OworICAgIH0KKwogICAgIGJvb2wgc2hvdWxkSW5pdGlhbGl6ZUJsb2NrU2NvcGVkRnVuY3Rpb25z
ID0gZmFsc2U7IC8vIFdlIGdlbmVyYXRlIHRvcC1sZXZlbCBmdW5jdGlvbiBkZWNsYXJhdGlvbnMg
aW4gOjpnZW5lcmF0ZSgpLgogICAgIHB1c2hMZXhpY2FsU2NvcGUobV9zY29wZU5vZGUsIFREWkNo
ZWNrT3B0aW1pemF0aW9uOjpPcHRpbWl6ZSwgTmVzdGVkU2NvcGVUeXBlOjpJc05vdE5lc3RlZCwg
bnVsbHB0ciwgc2hvdWxkSW5pdGlhbGl6ZUJsb2NrU2NvcGVkRnVuY3Rpb25zKTsKIH0KQEAgLTM2
NjIsOCArMzY4MSw3IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDb21wbGV4UG9wU2Nv
cGVzKFJlZ2lzdGVySUQqIHNjb3BlLCBDb250cm9sRmxvd0NvbnRlCiAgICAgICAgICAgICBpZiAo
ZmxpcFRyaWVzKSB7CiAgICAgICAgICAgICAgICAgd2hpbGUgKG1fdHJ5Q29udGV4dFN0YWNrLnNp
emUoKSAhPSBmaW5hbGx5Q29udGV4dC50cnlDb250ZXh0U3RhY2tTaXplKSB7CiAgICAgICAgICAg
ICAgICAgICAgIEFTU0VSVChtX3RyeUNvbnRleHRTdGFjay5zaXplKCkgPiBmaW5hbGx5Q29udGV4
dC50cnlDb250ZXh0U3RhY2tTaXplKTsKLSAgICAgICAgICAgICAgICAgICAgVHJ5Q29udGV4dCBj
b250ZXh0ID0gbV90cnlDb250ZXh0U3RhY2subGFzdCgpOwotICAgICAgICAgICAgICAgICAgICBt
X3RyeUNvbnRleHRTdGFjay5yZW1vdmVMYXN0KCk7CisgICAgICAgICAgICAgICAgICAgIFRyeUNv
bnRleHQgY29udGV4dCA9IG1fdHJ5Q29udGV4dFN0YWNrLnRha2VMYXN0KCk7CiAgICAgICAgICAg
ICAgICAgICAgIFRyeVJhbmdlIHJhbmdlOwogICAgICAgICAgICAgICAgICAgICByYW5nZS5zdGFy
dCA9IGNvbnRleHQuc3RhcnQ7CiAgICAgICAgICAgICAgICAgICAgIHJhbmdlLmVuZCA9IGJlZm9y
ZUZpbmFsbHk7CkBAIC0zOTQ3LDcgKzM5NjUsNyBAQCBzdGF0aWMgdm9pZCBwcmVwYXJlSnVtcFRh
YmxlRm9yU3RyaW5nU3dpdGNoKFVubGlua2VkU3RyaW5nSnVtcFRhYmxlJiBqdW1wVGFibGUsCiAg
ICAgICAgIAogICAgICAgICBBU1NFUlQobm9kZXNbaV0tPmlzU3RyaW5nKCkpOwogICAgICAgICBT
dHJpbmdJbXBsKiBjbGF1c2UgPSBzdGF0aWNfY2FzdDxTdHJpbmdOb2RlKj4obm9kZXNbaV0pLT52
YWx1ZSgpLmltcGwoKTsKLSAgICAgICAganVtcFRhYmxlLm9mZnNldFRhYmxlLmFkZChjbGF1c2Us
IGxhYmVsc1tpXS0+YmluZChzd2l0Y2hBZGRyZXNzLCBzd2l0Y2hBZGRyZXNzICsgMykpOworICAg
ICAgICBqdW1wVGFibGUub2Zmc2V0VGFibGUuYWRkKGNsYXVzZSwgVW5saW5rZWRTdHJpbmdKdW1w
VGFibGU6Ok9mZnNldExvY2F0aW9uIHsgbGFiZWxzW2ldLT5iaW5kKHN3aXRjaEFkZHJlc3MsIHN3
aXRjaEFkZHJlc3MgKyAzKSB9KTsKICAgICB9CiB9CiAKQEAgLTQ0NTUsMTYgKzQ0NzMsMzYgQEAg
dm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFlpZWxkUG9pbnQoUmVnaXN0ZXJJRCogYXJndW1l
bnQpCiAgICAgZW1pdEdlbmVyYXRvclN0YXRlQ2hhbmdlKHlpZWxkUG9pbnRJbmRleCk7CiAgICAg
Ly8gRmlyc3QgeWllbGQgcG9pbnQgaXMgdXNlZCBmb3IgaW5pdGlhbCBzZXF1ZW5jZS4KICAgICB1
bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSB5aWVsZFBvaW50SW5kZXggLSAxOworCisg
ICAgLy8gU3BsaXQgdGhlIHRyeSByYW5nZSBoZXJlLgorICAgIFJlZlB0cjxMYWJlbD4gc2F2ZVBv
aW50ID0gZW1pdExhYmVsKG5ld0xhYmVsKCkuZ2V0KCkpOworICAgIGZvciAodW5zaWduZWQgaSA9
IG1fdHJ5Q29udGV4dFN0YWNrLnNpemUoKTsgaS0tOykgeworICAgICAgICBUcnlDb250ZXh0JiBj
b250ZXh0ID0gbV90cnlDb250ZXh0U3RhY2tbaV07CisgICAgICAgIFRyeVJhbmdlIHJhbmdlOwor
ICAgICAgICByYW5nZS5zdGFydCA9IGNvbnRleHQuc3RhcnQ7CisgICAgICAgIHJhbmdlLmVuZCA9
IHNhdmVQb2ludDsKKyAgICAgICAgcmFuZ2UudHJ5RGF0YSA9IGNvbnRleHQudHJ5RGF0YTsKKyAg
ICAgICAgbV90cnlSYW5nZXMuYXBwZW5kKHJhbmdlKTsKKworICAgICAgICAvLyBUcnkgcmFuZ2Ug
d2lsbCBiZSByZXN0YXJlZCBhdCB0aGUgbWVyZ2UgcG9pbnQuCisgICAgICAgIGNvbnRleHQuc3Rh
cnQgPSBtZXJnZVBvaW50OworICAgIH0KKyAgICBWZWN0b3I8VHJ5Q29udGV4dD4gc2F2ZWRUcnlD
b250ZXh0U3RhY2s7CisgICAgbV90cnlDb250ZXh0U3RhY2suc3dhcChzYXZlZFRyeUNvbnRleHRT
dGFjayk7CisKICAgICBlbWl0U2F2ZShtZXJnZVBvaW50LmdldCgpLCBsaXZlQ2FsbGVlTG9jYWxz
SW5kZXgpOwogICAgIGVtaXRSZXR1cm4oYXJndW1lbnQpOwogICAgIGVtaXRSZXN1bWUobWVyZ2VQ
b2ludC5nZXQoKSwgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4KTsKKworICAgIC8vIFJlc3RvcmUgdGhl
IHRyeSBjb250ZXh0cywgd2hpY2ggc3RhcnQgb2Zmc2V0IGlzIHVwZGF0ZWQgdG8gdGhlIG1lcmdl
IHBvaW50LgorICAgIG1fdHJ5Q29udGV4dFN0YWNrLnN3YXAoc2F2ZWRUcnlDb250ZXh0U3RhY2sp
OwogfQogCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0U2F2ZShMYWJlbCogbWVyZ2VQb2lu
dCwgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4KQogewogICAgIHNpemVfdCBiZWdpbiA9
IGluc3RydWN0aW9ucygpLnNpemUoKTsKICAgICBlbWl0T3Bjb2RlKG9wX3NhdmUpOwotICAgIGlu
c3RydWN0aW9ucygpLmFwcGVuZChtX2dlbmVyYXRvclJlZ2lzdGVyLT5pbmRleCgpKTsKKyAgICBp
bnN0cnVjdGlvbnMoKS5hcHBlbmQoZ2VuZXJhdG9yRnJhbWVSZWdpc3RlcigpLT5pbmRleCgpKTsK
ICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobGl2ZUNhbGxlZUxvY2Fsc0luZGV4KTsKICAgICBp
bnN0cnVjdGlvbnMoKS5hcHBlbmQobWVyZ2VQb2ludC0+YmluZChiZWdpbiwgaW5zdHJ1Y3Rpb25z
KCkuc2l6ZSgpKSk7CiB9CkBAIC00NDczLDcgKzQ1MTEsNyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0UmVzdW1lKExhYmVsKiBtZXJnZVBvaW50LCB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9j
YWxzSQogewogICAgIGVtaXRHZW5lcmF0b3JTdGF0ZUxhYmVsKCk7CiAgICAgZW1pdE9wY29kZShv
cF9yZXN1bWUpOwotICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChtX2dlbmVyYXRvclJlZ2lzdGVy
LT5pbmRleCgpKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZ2VuZXJhdG9yRnJhbWVSZWdp
c3RlcigpLT5pbmRleCgpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobGl2ZUNhbGxlZUxv
Y2Fsc0luZGV4KTsKICAgICBlbWl0TGFiZWwobWVyZ2VQb2ludCk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5k
ZXggNWZhZjA0ZjJmM2RiYTE4YWRiMDc4OWUzMjNlOWRhYWU2MWFiMTE2Yi4uZWMyYTBlNmIwNjZj
YWFkYWNmMmI3YjA3ZmFhZjY1NWJmYzQ1MWIxMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAtNzA1LDYgKzcw
NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBSZWdpc3RlcklEKiBnZW5lcmF0b3JTdGF0
ZVJlZ2lzdGVyKCkgeyByZXR1cm4gJm1fcGFyYW1ldGVyc1syXTsgfQogICAgICAgICBSZWdpc3Rl
cklEKiBnZW5lcmF0b3JWYWx1ZVJlZ2lzdGVyKCkgeyByZXR1cm4gJm1fcGFyYW1ldGVyc1szXTsg
fQogICAgICAgICBSZWdpc3RlcklEKiBnZW5lcmF0b3JSZXN1bWVNb2RlUmVnaXN0ZXIoKSB7IHJl
dHVybiAmbV9wYXJhbWV0ZXJzWzRdOyB9CisgICAgICAgIFJlZ2lzdGVySUQqIGdlbmVyYXRvckZy
YW1lUmVnaXN0ZXIoKSB7IHJldHVybiAmbV9wYXJhbWV0ZXJzWzVdOyB9CiAKICAgICAgICAgQ29k
ZVR5cGUgY29kZVR5cGUoKSBjb25zdCB7IHJldHVybiBtX2NvZGVUeXBlOyB9CiAKQEAgLTkzMiw2
ICs5MzMsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFZlY3RvcjxSZWZQdHI8Rm9ySW5D
b250ZXh0Pj4gbV9mb3JJbkNvbnRleHRTdGFjazsKICAgICAgICAgVmVjdG9yPFRyeUNvbnRleHQ+
IG1fdHJ5Q29udGV4dFN0YWNrOwogICAgICAgICBWZWN0b3I8UmVmUHRyPExhYmVsPj4gbV9nZW5l
cmF0b3JSZXN1bWVMYWJlbHM7CisKKyAgICAgICAgU3Ryb25nPFN5bWJvbFRhYmxlPiBtX2dlbmVy
YXRvckZyYW1lU3ltYm9sVGFibGU7CisgICAgICAgIGludCBtX2dlbmVyYXRvckZyYW1lU3ltYm9s
VGFibGVJbmRleCB7IDAgfTsKKwogICAgICAgICBlbnVtIEZ1bmN0aW9uVmFyaWFibGVUeXBlIDog
dWludDhfdCB7IE5vcm1hbEZ1bmN0aW9uVmFyaWFibGUsIEdsb2JhbEZ1bmN0aW9uVmFyaWFibGUg
fTsKICAgICAgICAgVmVjdG9yPHN0ZDo6cGFpcjxGdW5jdGlvbk1ldGFkYXRhTm9kZSosIEZ1bmN0
aW9uVmFyaWFibGVUeXBlPj4gbV9mdW5jdGlvbnNUb0luaXRpYWxpemU7CiAgICAgICAgIGJvb2wg
bV9uZWVkVG9Jbml0aWFsaXplQXJndW1lbnRzIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCmluZGV4IDY5YTE2ZWI1ZGE0MzU1YmM3OTI1YzVk
ZmRjYjA2MjAyM2U5OTY1MDIuLmM0NTcyM2IxOTAxMzIwMjVkZmNlMzI2ZjYwMTVlY2E2Y2U1OGQ3
MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcApAQCAt
NDIsOCArNDIsOCBAQAogI2luY2x1ZGUgIkRpcmVjdEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIkZU
TEZvck9TUkVudHJ5SklUQ29kZS5oIgogI2luY2x1ZGUgIkZUTE9TUkVudHJ5LmgiCi0jaW5jbHVk
ZSAiSG9zdENhbGxSZXR1cm5WYWx1ZS5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgorI2lu
Y2x1ZGUgIkhvc3RDYWxsUmV0dXJuVmFsdWUuaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgog
I2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUgIkpJVEV4Y2VwdGlvbnMuaCIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0ZS1ieXRlY29kZS1maWxlcyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9nZW5lcmF0ZS1ieXRlY29kZS1maWxlcwppbmRleCA1NjY2YTNmOTI0YzEx
OWIyMTZkM2ZmMGZmZTljNjcyYjdjNzFiYjc5Li44Zjc5MGVkOWZhODMxNmQzOWRhMTVkM2I3NTg5
NDZiZjQ5ZjNiZDNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdGUt
Ynl0ZWNvZGUtZmlsZXMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRlLWJ5dGVj
b2RlLWZpbGVzCkBAIC05NCwxMyArOTQsMTQgQEAgZGVmIG9wZW5PckV4aXQocGF0aCwgbW9kZSk6
CiAgICAgICAgIHByaW50ICJJL08gZXJyb3Igb3BlbmluZyB7MH0sICh7MX0pOiB7Mn0iLmZvcm1h
dChwYXRoLCBlLmVycm5vLCBlLnN0cmVycm9yKQogICAgICAgICBleGl0KDEpCiAKLWRlZiBoYXNo
RmlsZShmaWxlKToKK2RlZiBoYXNoRmlsZShmaWxlcyk6CiAgICAgc2hhMSA9IGhhc2hsaWIuc2hh
MSgpCi0gICAgZmlsZS5zZWVrKDApCi0gICAgZm9yIGxpbmUgaW4gZmlsZToKLSAgICAgICAgc2hh
MS51cGRhdGUobGluZSkKKyAgICBmb3IgZmlsZSBpbiBmaWxlczoKKyAgICAgICAgZmlsZS5zZWVr
KDApCisgICAgICAgIGZvciBsaW5lIGluIGZpbGU6CisgICAgICAgICAgICBzaGExLnVwZGF0ZShs
aW5lKQogCi0gICAgZmlsZS5zZWVrKDApCisgICAgICAgIGZpbGUuc2VlaygwKQogCiAgICAgcmV0
dXJuIHNoYTEuaGV4ZGlnZXN0KCkKIApAQCAtMTE1LDcgKzExNiw4IEBAIGlmIF9fbmFtZV9fID09
ICJfX21haW5fXyI6CiAKICAgICBieXRlY29kZUpTT05GaWxlID0gYXJnc1swXQogICAgIGJ5dGVj
b2RlRmlsZSA9IG9wZW5PckV4aXQoYnl0ZWNvZGVKU09ORmlsZSwgInJiIikKLSAgICBzaGExSGFz
aCA9IGhhc2hGaWxlKGJ5dGVjb2RlRmlsZSkKKyAgICBnZW5lcmF0b3JGaWxlID0gb3Blbk9yRXhp
dChfX2ZpbGVfXywgInJiIikKKyAgICBzaGExSGFzaCA9IGhhc2hGaWxlKFtieXRlY29kZUZpbGUs
IGdlbmVyYXRvckZpbGVdKQogCiAgICAgaEZpbGVIYXNoU3RyaW5nID0gIi8vIFNIQTFIYXNoOiB7
MH1cbiIuZm9ybWF0KHNoYTFIYXNoKQogICAgIGFzbUZpbGVIYXNoU3RyaW5nID0gIiMgU0hBMUhh
c2g6IHswfVxuIi5mb3JtYXQoc2hhMUhhc2gpCkBAIC0xODcsNiArMTg5LDcgQEAgaWYgX19uYW1l
X18gPT0gIl9fbWFpbl9fIjoKICAgICAgICAgICAgICAgICBkZWZhdWx0TGVuZ3RoID0gc2VjdGlv
blsiZGVmYXVsdExlbmd0aCJdCiAKICAgICAgICAgICAgIGJ5dGVjb2RlTnVtID0gMAorICAgICAg
ICAgICAgbWF4TGVuZ3RoID0gMAogICAgICAgICAgICAgZm9yIGJ5dGVjb2RlIGluIHNlY3Rpb25b
ImJ5dGVjb2RlcyJdOgogICAgICAgICAgICAgICAgIGlmIG5vdCBmaXJzdE1hY3JvOgogICAgICAg
ICAgICAgICAgICAgICBieXRlY29kZUhGaWxlLndyaXRlKCIgXFxcbiIpCkBAIC0xOTQsNiArMTk3
LDcgQEAgaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgICAgICAgICAgICAgICBsZW5ndGgg
PSBkZWZhdWx0TGVuZ3RoCiAgICAgICAgICAgICAgICAgaWYgImxlbmd0aCIgaW4gYnl0ZWNvZGU6
CiAgICAgICAgICAgICAgICAgICAgIGxlbmd0aCA9IGJ5dGVjb2RlWyJsZW5ndGgiXQorICAgICAg
ICAgICAgICAgICAgICBtYXhMZW5ndGggPSBtYXgoW2xlbmd0aCwgbWF4TGVuZ3RoXSkKIAogICAg
ICAgICAgICAgICAgIGJ5dGVjb2RlSEZpbGUud3JpdGUoIiAgICBtYWNybyh7MH0sIHsxfSkiLmZv
cm1hdChieXRlY29kZVsibmFtZSJdLCBsZW5ndGgpKQogICAgICAgICAgICAgICAgIGZpcnN0TWFj
cm8gPSBGYWxzZQpAQCAtMjAxLDYgKzIwNSw3IEBAIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6
CiAKICAgICAgICAgICAgIGJ5dGVjb2RlSEZpbGUud3JpdGUoIlxuXG4iKQogICAgICAgICAgICAg
Ynl0ZWNvZGVIRmlsZS53cml0ZSgiI2RlZmluZSBOVU1CRVJfT0ZfezB9X0lEUyB7MX1cblxuIi5m
b3JtYXQoc2VjdGlvblsibWFjcm9OYW1lQ29tcG9uZW50Il0sIGJ5dGVjb2RlTnVtKSkKKyAgICAg
ICAgICAgIGJ5dGVjb2RlSEZpbGUud3JpdGUoIiNkZWZpbmUgTUFYX09QQ09ERV9MRU5HVEhfT0Zf
ezB9IHsxfVxuXG4iLmZvcm1hdChzZWN0aW9uWyJtYWNyb05hbWVDb21wb25lbnQiXSwgbWF4TGVu
Z3RoKSkKIAogICAgICAgICBpZiBpbml0QVNNRmlsZU5hbWUgYW5kIHNlY3Rpb25bJ2VtaXRJbkFT
TUZpbGUnXToKICAgICAgICAgICAgIHByZWZpeCA9ICIiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAppbmRleCAyYjRjN2M5YjNlYjM2ZDYz
MDZlYTg0NGU4NTM3NmZmYTdmZDBmMWY3Li5mZTM2OGYzOTFjYzI3YzFhMDViOGJkOTBmZjkxYWMx
NjIxYjYyNDcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIv
SW50ZXJwcmV0ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9J
bnRlcnByZXRlci5jcHAKQEAgLTYwOCw3ICs2MDgsNyBAQCBKU1N0cmluZyogSW50ZXJwcmV0ZXI6
OnN0YWNrVHJhY2VBc1N0cmluZyhWTSYgdm0sIGNvbnN0IFZlY3RvcjxTdGFja0ZyYW1lPiYgc3Rh
YwogICAgIHJldHVybiBqc1N0cmluZygmdm0sIGJ1aWxkZXIudG9TdHJpbmcoKSk7CiB9CiAKLUFM
V0FZU19JTkxJTkUgc3RhdGljIEhhbmRsZXJJbmZvKiBmaW5kRXhjZXB0aW9uSGFuZGxlcihTdGFj
a1Zpc2l0b3ImIHZpc2l0b3IsIENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlQmxvY2s6OlJlcXVp
cmVkSGFuZGxlciByZXF1aXJlZEhhbmRsZXIpCitBTFdBWVNfSU5MSU5FIHN0YXRpYyBIYW5kbGVy
SW5mbyogZmluZEV4Y2VwdGlvbkhhbmRsZXIoU3RhY2tWaXNpdG9yJiB2aXNpdG9yLCBDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgUmVxdWlyZWRIYW5kbGVyIHJlcXVpcmVkSGFuZGxlcikKIHsKICAgICBB
U1NFUlQoY29kZUJsb2NrKTsKICNpZiBFTkFCTEUoREZHX0pJVCkKQEAgLTY0Miw3ICs2NDIsNyBA
QCBjbGFzcyBHZXRDYXRjaEhhbmRsZXJGdW5jdG9yIHsKICAgICAgICAgaWYgKCFjb2RlQmxvY2sp
CiAgICAgICAgICAgICByZXR1cm4gU3RhY2tWaXNpdG9yOjpDb250aW51ZTsKIAotICAgICAgICBt
X2hhbmRsZXIgPSBmaW5kRXhjZXB0aW9uSGFuZGxlcih2aXNpdG9yLCBjb2RlQmxvY2ssIENvZGVC
bG9jazo6UmVxdWlyZWRIYW5kbGVyOjpDYXRjaEhhbmRsZXIpOworICAgICAgICBtX2hhbmRsZXIg
PSBmaW5kRXhjZXB0aW9uSGFuZGxlcih2aXNpdG9yLCBjb2RlQmxvY2ssIFJlcXVpcmVkSGFuZGxl
cjo6Q2F0Y2hIYW5kbGVyKTsKICAgICAgICAgaWYgKG1faGFuZGxlcikKICAgICAgICAgICAgIHJl
dHVybiBTdGFja1Zpc2l0b3I6OkRvbmU7CiAKQEAgLTY4NCw3ICs2ODQsNyBAQCBjbGFzcyBVbndp
bmRGdW5jdG9yIHsKICAgICAgICAgbV9oYW5kbGVyID0gbnVsbHB0cjsKICAgICAgICAgaWYgKCFt
X2lzVGVybWluYXRpb24pIHsKICAgICAgICAgICAgIGlmIChtX2NvZGVCbG9jayAmJiAhaXNXZWJB
c3NlbWJseUV4ZWN1dGFibGUobV9jb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpKSkKLSAgICAg
ICAgICAgICAgICBtX2hhbmRsZXIgPSBmaW5kRXhjZXB0aW9uSGFuZGxlcih2aXNpdG9yLCBtX2Nv
ZGVCbG9jaywgQ29kZUJsb2NrOjpSZXF1aXJlZEhhbmRsZXI6OkFueUhhbmRsZXIpOworICAgICAg
ICAgICAgICAgIG1faGFuZGxlciA9IGZpbmRFeGNlcHRpb25IYW5kbGVyKHZpc2l0b3IsIG1fY29k
ZUJsb2NrLCBSZXF1aXJlZEhhbmRsZXI6OkFueUhhbmRsZXIpOwogICAgICAgICB9CiAKICAgICAg
ICAgaWYgKG1faGFuZGxlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRl
cnByZXRlci9JbnRlcnByZXRlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVy
L0ludGVycHJldGVyLmgKaW5kZXggZDIwOTRkZWU3ZDI4NWFjNDk1YjE1NDE3MmEyM2I5NGZmZTg1
N2YxZS4uMDczMmIzZWJiZDlhZGZkMjIzMzYyZWM5YTZiYWFhZmQ4NjFmNTI2NyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgKQEAgLTY2LDYg
KzY2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgc3RydWN0IEhhbmRsZXJJbmZvOwogICAgIHN0
cnVjdCBJbnN0cnVjdGlvbjsKICAgICBzdHJ1Y3QgUHJvdG9DYWxsRnJhbWU7CisgICAgc3RydWN0
IFVubGlua2VkSW5zdHJ1Y3Rpb247CiAKICAgICBlbnVtIFVud2luZFN0YXJ0IHsgVW53aW5kRnJv
bUN1cnJlbnRGcmFtZSwgVW53aW5kRnJvbUNhbGxlckZyYW1lIH07CiAKQEAgLTIwOCw3ICsyMDks
MTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gb3Bjb2RlOwogI2VuZGlm
CiAgICAgICAgIH0KLSAgICAgICAgCisKKyAgICAgICAgT3Bjb2RlSUQgZ2V0T3Bjb2RlSUQoY29u
c3QgSW5zdHJ1Y3Rpb24mKTsKKyAgICAgICAgT3Bjb2RlSUQgZ2V0T3Bjb2RlSUQoY29uc3QgVW5s
aW5rZWRJbnN0cnVjdGlvbiYpOworCiAgICAgICAgIGJvb2wgaXNPcGNvZGUoT3Bjb2RlKTsKIAog
ICAgICAgICBKU1ZhbHVlIGV4ZWN1dGUoUHJvZ3JhbUV4ZWN1dGFibGUqLCBDYWxsRnJhbWUqLCBK
U09iamVjdCogdGhpc09iaik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50
ZXJwcmV0ZXIvSW50ZXJwcmV0ZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50
ZXJwcmV0ZXIvSW50ZXJwcmV0ZXJJbmxpbmVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODZkMDcxNDhhNTJlNjVl
Mzc1Zjk3ZTZlYmI5MWFkYmUxZGQ0NTYwZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlcklubGluZXMuaApAQCAtMCwwICsxLDQ0
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVh
QGdtYWlsLmNvbT4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJJbnN0cnVjdGlvbi5oIgorI2luY2x1ZGUgIkludGVy
cHJldGVyLmgiCisjaW5jbHVkZSAiVW5saW5rZWRDb2RlQmxvY2suaCIKKworbmFtZXNwYWNlIEpT
QyB7CisKK2lubGluZSBPcGNvZGVJRCBJbnRlcnByZXRlcjo6Z2V0T3Bjb2RlSUQoY29uc3QgSW5z
dHJ1Y3Rpb24mIGluc3RydWN0aW9uKQoreworICAgIHJldHVybiBnZXRPcGNvZGVJRChpbnN0cnVj
dGlvbi51Lm9wY29kZSk7Cit9CisKK2lubGluZSBPcGNvZGVJRCBJbnRlcnByZXRlcjo6Z2V0T3Bj
b2RlSUQoY29uc3QgVW5saW5rZWRJbnN0cnVjdGlvbiYgaW5zdHJ1Y3Rpb24pCit7CisgICAgcmV0
dXJuIGluc3RydWN0aW9uLnUub3Bjb2RlOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklULmNwcAppbmRleCA4ZmQzZjU4ZWQ0MTZhNzc0YmIyNzY1ZTRkNGQ1M2Q2
OGJlOTE4MmU1Li42MzE4YzYxZDM3YThkYTEyM2VjNmYzOGEyOGUxOTU1Yzg1ODMxMDMzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCkBAIC0yMzUsOCArMjM1LDYgQEAgdm9pZCBKSVQ6OnBy
aXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBERUZJTkVfT1Aob3BfZ2V0X3Jlc3RfbGVu
Z3RoKQogICAgICAgICBERUZJTkVfT1Aob3BfY2hlY2tfdGR6KQogICAgICAgICBERUZJTkVfT1Ao
b3BfYXNzZXJ0KQotICAgICAgICBERUZJTkVfT1Aob3Bfc2F2ZSkKLSAgICAgICAgREVGSU5FX09Q
KG9wX3Jlc3VtZSkKICAgICAgICAgREVGSU5FX09QKG9wX2RlYnVnKQogICAgICAgICBERUZJTkVf
T1Aob3BfZGVsX2J5X2lkKQogICAgICAgICBERUZJTkVfT1Aob3BfZGVsX2J5X3ZhbCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVC5oCmluZGV4IDA5M2Q3ZGFiZDMwM2Y1N2M0YWRiYmU1MGFkOWIyZTQwZjZm
YWQ2MDguLmIzYmRhNGFhNTcwMTAzNjgxMmNjNjk2Y2JiMTU1ZGM0YTNjNDkyYjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVQuaApAQCAtNTAxLDggKzUwMSw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICB2b2lkIGVtaXRfb3BfZ2V0X3Jlc3RfbGVuZ3RoKEluc3RydWN0aW9uKik7CiAgICAgICAg
IHZvaWQgZW1pdF9vcF9jaGVja190ZHooSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0
X29wX2Fzc2VydChJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3Bfc2F2ZShJbnN0
cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfcmVzdW1lKEluc3RydWN0aW9uKik7CiAg
ICAgICAgIHZvaWQgZW1pdF9vcF9kZWJ1ZyhJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVt
aXRfb3BfZGVsX2J5X2lkKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9kZWxf
YnlfdmFsKEluc3RydWN0aW9uKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wY29kZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVz
LmNwcAppbmRleCBkOTlkNDE1YTMzYjc1MmRjYzNmYWIxNWI5NGI5NjRhMTExMWNlODMxLi4wMTIz
MjBhMGE2ZjAzMDczNzM1MzAzMTViNGIxODllYTZhYWYzZmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKQEAgLTE0ODksMTggKzE0ODksNiBAQCB2b2lkIEpJVDo6
ZW1pdF9vcF9nZXRfcmVzdF9sZW5ndGgoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
ICNlbmRpZgogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9zYXZlKEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCi17Ci0gICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBj
dXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9zYXZlKTsKLSAgICBzbG93UGF0aENhbGwuY2Fs
bCgpOwotfQotCi12b2lkIEpJVDo6ZW1pdF9vcF9yZXN1bWUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKLXsKLSAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1
cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX3Jlc3VtZSk7Ci0gICAgc2xvd1BhdGhDYWxsLmNh
bGwoKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBFTkFCTEUoSklUKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIu
YXNtCmluZGV4IDNlMGRiZDg5ODZiOWRiMWFiMGEyMzVhMzkwODRjMTBhZWY0NTY1MTYuLjA0YmNi
N2MwMGU0OGMwZDIzOTM3ZGQzMTQwOTNhMTI3OTdlNDg2MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KQEAgLTE2NTcsMTUg
KzE2NTcsMTEgQEAgX2xsaW50X29wX2Fzc2VydDoKIAogCiBfbGxpbnRfb3Bfc2F2ZToKLSAgICB0
cmFjZUV4ZWN1dGlvbigpCi0gICAgY2FsbE9wY29kZVNsb3dQYXRoKF9zbG93X3BhdGhfc2F2ZSkK
LSAgICBkaXNwYXRjaCg0KQorICAgIG5vdFN1cHBvcnRlZCgpCiAKIAogX2xsaW50X29wX3Jlc3Vt
ZToKLSAgICB0cmFjZUV4ZWN1dGlvbigpCi0gICAgY2FsbE9wY29kZVNsb3dQYXRoKF9zbG93X3Bh
dGhfcmVzdW1lKQotICAgIGRpc3BhdGNoKDMpCisgICAgbm90U3VwcG9ydGVkKCkKIAogCiBfbGxp
bnRfb3BfY3JlYXRlX2xleGljYWxfZW52aXJvbm1lbnQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1BhcnNlci5jcHAKaW5kZXggZmU1NDk1MmIzODU2MzJhMTMwMGRiYTRhZGZmYTAwYWE1YTM3
ZDIwMS4uZmU5NjE2YjAzNjVjMzNhODg1ZTUwOGU4NGRiZDBjYTEwYjhiMGY1NCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcApAQCAtMjU2LDcgKzI1Niw3IEBAIFN0cmlu
ZyBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJbm5lcihjb25zdCBJZGVudGlmaWVyJiBjYWxsZWVO
YW1lLCBTb3VyY2VQYXJzZU1vCiAgICAgaWYgKG1fbGV4ZXItPmlzUmVwYXJzaW5nRnVuY3Rpb24o
KSkgewogICAgICAgICBQYXJzZXJGdW5jdGlvbkluZm88QVNUQnVpbGRlcj4gZnVuY3Rpb25JbmZv
OwogICAgICAgICBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yQm9k
eU1vZGUpCi0gICAgICAgICAgICBtX3BhcmFtZXRlcnMgPSBjcmVhdGVHZW5lcmF0b3JQYXJhbWV0
ZXJzKGNvbnRleHQpOworICAgICAgICAgICAgbV9wYXJhbWV0ZXJzID0gY3JlYXRlR2VuZXJhdG9y
UGFyYW1ldGVycyhjb250ZXh0LCBmdW5jdGlvbkluZm8ucGFyYW1ldGVyQ291bnQpOwogICAgICAg
ICBlbHNlCiAgICAgICAgICAgICBtX3BhcmFtZXRlcnMgPSBwYXJzZUZ1bmN0aW9uUGFyYW1ldGVy
cyhjb250ZXh0LCBwYXJzZU1vZGUsIGZ1bmN0aW9uSW5mbyk7CiAKQEAgLTUwNywxMCArNTA3LDkg
QEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU291cmNlRWxlbWVudHMgUGFyc2Vy
PExleGVyVHlwZT46OnBhcnNlR2VuZXJhdG8KIAogICAgIFBhcnNlckZ1bmN0aW9uSW5mbzxUcmVl
QnVpbGRlcj4gaW5mbzsKICAgICBpbmZvLm5hbWUgPSAmbV92bS0+cHJvcGVydHlOYW1lcy0+bnVs
bElkZW50aWZpZXI7Ci0gICAgY3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhjb250ZXh0KTsKKyAg
ICBjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKGNvbnRleHQsIGluZm8ucGFyYW1ldGVyQ291bnQp
OwogICAgIGluZm8uc3RhcnRPZmZzZXQgPSBwYXJhbWV0ZXJzU3RhcnQ7CiAgICAgaW5mby5zdGFy
dExpbmUgPSB0b2tlbkxpbmUoKTsKLSAgICBpbmZvLnBhcmFtZXRlckNvdW50ID0gNDsgLy8gZ2Vu
ZXJhdG9yLCBzdGF0ZSwgdmFsdWUsIHJlc3VtZSBtb2RlCiAKICAgICB7CiAgICAgICAgIEF1dG9Q
b3BTY29wZVJlZiBnZW5lcmF0b3JCb2R5U2NvcGUodGhpcywgcHVzaFNjb3BlKCkpOwpAQCAtMTkw
MSwzMiArMTkwMCwzMCBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPiB0ZW1wbGF0ZSA8
Y2xhc3MgVHJlZUJ1aWxkZXIsIGNsYXNzIEZ1bmN0aW9uSW5mb1R5cAogfQogCiB0ZW1wbGF0ZSA8
dHlwZW5hbWUgTGV4ZXJUeXBlPgotdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiB0eXBlbmFt
ZSBUcmVlQnVpbGRlcjo6Rm9ybWFsUGFyYW1ldGVyTGlzdCBQYXJzZXI8TGV4ZXJUeXBlPjo6Y3Jl
YXRlR2VuZXJhdG9yUGFyYW1ldGVycyhUcmVlQnVpbGRlciYgY29udGV4dCkKK3RlbXBsYXRlIDxj
bGFzcyBUcmVlQnVpbGRlcj4gdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkZvcm1hbFBhcmFtZXRlckxp
c3QgUGFyc2VyPExleGVyVHlwZT46OmNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMoVHJlZUJ1aWxk
ZXImIGNvbnRleHQsIHVuc2lnbmVkJiBwYXJhbWV0ZXJDb3VudCkKIHsKICAgICBhdXRvIHBhcmFt
ZXRlcnMgPSBjb250ZXh0LmNyZWF0ZUZvcm1hbFBhcmFtZXRlckxpc3QoKTsKIAogICAgIEpTVG9r
ZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOwogICAgIEpTVGV4dFBvc2l0aW9u
IHBvc2l0aW9uID0gdG9rZW5TdGFydFBvc2l0aW9uKCk7CiAKLSAgICAvLyBAZ2VuZXJhdG9yCi0g
ICAgZGVjbGFyZVBhcmFtZXRlcigmbV92bS0+cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCku
Z2VuZXJhdG9yUHJpdmF0ZU5hbWUoKSk7Ci0gICAgYXV0byBnZW5lcmF0b3IgPSBjb250ZXh0LmNy
ZWF0ZUJpbmRpbmdMb2NhdGlvbihsb2NhdGlvbiwgbV92bS0+cHJvcGVydHlOYW1lcy0+YnVpbHRp
bk5hbWVzKCkuZ2VuZXJhdG9yUHJpdmF0ZU5hbWUoKSwgcG9zaXRpb24sIHBvc2l0aW9uLCBBc3Np
Z25tZW50Q29udGV4dDo6RGVjbGFyYXRpb25TdGF0ZW1lbnQpOwotICAgIGNvbnRleHQuYXBwZW5k
UGFyYW1ldGVyKHBhcmFtZXRlcnMsIGdlbmVyYXRvciwgMCk7CisgICAgYXV0byBhZGRQYXJhbWV0
ZXIgPSBbJl0oY29uc3QgSWRlbnRpZmllciYgbmFtZSkgeworICAgICAgICBkZWNsYXJlUGFyYW1l
dGVyKCZuYW1lKTsKKyAgICAgICAgYXV0byBiaW5kaW5nID0gY29udGV4dC5jcmVhdGVCaW5kaW5n
TG9jYXRpb24obG9jYXRpb24sIG5hbWUsIHBvc2l0aW9uLCBwb3NpdGlvbiwgQXNzaWdubWVudENv
bnRleHQ6OkRlY2xhcmF0aW9uU3RhdGVtZW50KTsKKyAgICAgICAgY29udGV4dC5hcHBlbmRQYXJh
bWV0ZXIocGFyYW1ldGVycywgYmluZGluZywgMCk7CisgICAgICAgICsrcGFyYW1ldGVyQ291bnQ7
CisgICAgfTsKIAorICAgIC8vIEBnZW5lcmF0b3IKKyAgICBhZGRQYXJhbWV0ZXIobV92bS0+cHJv
cGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yUHJpdmF0ZU5hbWUoKSk7CiAgICAg
Ly8gQGdlbmVyYXRvclN0YXRlCi0gICAgZGVjbGFyZVBhcmFtZXRlcigmbV92bS0+cHJvcGVydHlO
YW1lcy0+YnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yU3RhdGVQcml2YXRlTmFtZSgpKTsKLSAgICBh
dXRvIGdlbmVyYXRvclN0YXRlID0gY29udGV4dC5jcmVhdGVCaW5kaW5nTG9jYXRpb24obG9jYXRp
b24sIG1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclN0YXRlUHJp
dmF0ZU5hbWUoKSwgcG9zaXRpb24sIHBvc2l0aW9uLCBBc3NpZ25tZW50Q29udGV4dDo6RGVjbGFy
YXRpb25TdGF0ZW1lbnQpOwotICAgIGNvbnRleHQuYXBwZW5kUGFyYW1ldGVyKHBhcmFtZXRlcnMs
IGdlbmVyYXRvclN0YXRlLCAwKTsKLQorICAgIGFkZFBhcmFtZXRlcihtX3ZtLT5wcm9wZXJ0eU5h
bWVzLT5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JTdGF0ZVByaXZhdGVOYW1lKCkpOwogICAgIC8v
IEBnZW5lcmF0b3JWYWx1ZQotICAgIGRlY2xhcmVQYXJhbWV0ZXIoJm1fdm0tPnByb3BlcnR5TmFt
ZXMtPmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclZhbHVlUHJpdmF0ZU5hbWUoKSk7Ci0gICAgYXV0
byBnZW5lcmF0b3JWYWx1ZSA9IGNvbnRleHQuY3JlYXRlQmluZGluZ0xvY2F0aW9uKGxvY2F0aW9u
LCBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JWYWx1ZVByaXZh
dGVOYW1lKCksIHBvc2l0aW9uLCBwb3NpdGlvbiwgQXNzaWdubWVudENvbnRleHQ6OkRlY2xhcmF0
aW9uU3RhdGVtZW50KTsKLSAgICBjb250ZXh0LmFwcGVuZFBhcmFtZXRlcihwYXJhbWV0ZXJzLCBn
ZW5lcmF0b3JWYWx1ZSwgMCk7Ci0KKyAgICBhZGRQYXJhbWV0ZXIobV92bS0+cHJvcGVydHlOYW1l
cy0+YnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yVmFsdWVQcml2YXRlTmFtZSgpKTsKICAgICAvLyBA
Z2VuZXJhdG9yUmVzdW1lTW9kZQotICAgIGRlY2xhcmVQYXJhbWV0ZXIoJm1fdm0tPnByb3BlcnR5
TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclJlc3VtZU1vZGVQcml2YXRlTmFtZSgpKTsK
LSAgICBhdXRvIGdlbmVyYXRvclJlc3VtZU1vZGUgPSBjb250ZXh0LmNyZWF0ZUJpbmRpbmdMb2Nh
dGlvbihsb2NhdGlvbiwgbV92bS0+cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZ2VuZXJh
dG9yUmVzdW1lTW9kZVByaXZhdGVOYW1lKCksIHBvc2l0aW9uLCBwb3NpdGlvbiwgQXNzaWdubWVu
dENvbnRleHQ6OkRlY2xhcmF0aW9uU3RhdGVtZW50KTsKLSAgICBjb250ZXh0LmFwcGVuZFBhcmFt
ZXRlcihwYXJhbWV0ZXJzLCBnZW5lcmF0b3JSZXN1bWVNb2RlLCAwKTsKKyAgICBhZGRQYXJhbWV0
ZXIobV92bS0+cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yUmVzdW1lTW9k
ZVByaXZhdGVOYW1lKCkpOworICAgIC8vIEBnZW5lcmF0b3JGcmFtZQorICAgIGFkZFBhcmFtZXRl
cihtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JGcmFtZVByaXZh
dGVOYW1lKCkpOwogCiAgICAgcmV0dXJuIHBhcmFtZXRlcnM7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9QYXJzZXIuaAppbmRleCAyNWNlYzk1YTc2MWNjZDhjMjYzMzgzNzMwZWIwNGUxNTY5
NzIwYmEyLi5kZWQ2MjRmNjE3ZmI2ZDI0ZDAwYmYxYWM0NmM0NWMyMmQ5OWI3MjFmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKQEAgLTE0NTEsNyArMTQ1MSw3IEBAIGNsYXNz
IFBhcnNlciB7CiAgICAgQUxXQVlTX0lOTElORSBib29sIGlzQXJyb3dGdW5jdGlvblBhcmFtZXRl
cnMoKTsKICAgICAKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXIsIGNsYXNzIEZ1bmN0
aW9uSW5mb1R5cGU+IE5FVkVSX0lOTElORSB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6Rm9ybWFsUGFy
YW1ldGVyTGlzdCBwYXJzZUZ1bmN0aW9uUGFyYW1ldGVycyhUcmVlQnVpbGRlciYsIFNvdXJjZVBh
cnNlTW9kZSwgRnVuY3Rpb25JbmZvVHlwZSYpOwotICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVp
bGRlcj4gTkVWRVJfSU5MSU5FIHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpGb3JtYWxQYXJhbWV0ZXJM
aXN0IGNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMoVHJlZUJ1aWxkZXImKTsKKyAgICB0ZW1wbGF0
ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElORSB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6
Rm9ybWFsUGFyYW1ldGVyTGlzdCBjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKFRyZWVCdWlsZGVy
JiwgdW5zaWduZWQmIHBhcmFtZXRlckNvdW50KTsKIAogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVl
QnVpbGRlcj4gTkVWRVJfSU5MSU5FIFRyZWVDbGFzc0V4cHJlc3Npb24gcGFyc2VDbGFzcyhUcmVl
QnVpbGRlciYsIEZ1bmN0aW9uUmVxdWlyZW1lbnRzLCBQYXJzZXJDbGFzc0luZm88VHJlZUJ1aWxk
ZXI+Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1v
blNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93
UGF0aHMuY3BwCmluZGV4IDY1ZmRhNjg1NGNjY2U4ZGM5NDE5MzAwNGE5ZjAyOTU0OGY5OGJjNWYu
LjA3MzViMDkyNmVhODk4ZTYyNjMyMWY5MjQzOGJkOGIxZTFmZjU2ZmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcApAQCAtMzYsNyAr
MzYsNiBAQAogI2luY2x1ZGUgIkVycm9yLmgiCiAjaW5jbHVkZSAiRXJyb3JIYW5kbGluZ1Njb3Bl
LmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uRnV6ei5oIgotI2luY2x1ZGUgIkdlbmVyYXRvckZyYW1l
LmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiSG9zdENhbGxSZXR1cm5W
YWx1ZS5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCkBAIC03MjIsMzggKzcyMSw2IEBAIFNM
T1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9hc3NlcnQpCiAgICAgRU5EKCk7CiB9CiAKLVNMT1dfUEFU
SF9ERUNMKHNsb3dfcGF0aF9zYXZlKQotewotICAgIC8vIE9ubHkgc2F2ZSB2YXJpYWJsZXMgYW5k
IHRlbXBvcmFyeSByZWdpc3RlcnMuIFRoZSBzY29wZSByZWdpc3RlcnMgYXJlIGluY2x1ZGVkIGlu
IHRoZW0uCi0gICAgLy8gQnV0IHBhcmFtZXRlcnMgYXJlIG5vdCBpbmNsdWRlZC4gQmVjYXVzZSB0
aGUgZ2VuZXJhdG9yIGltcGxlbWVudGF0aW9uIHJlcGxhY2VzIHRoZSB2YWx1ZXMgb2YgcGFyYW1l
dGVycyBvbiBlYWNoIGdlbmVyYXRvci5uZXh0KCkgY2FsbC4KLSAgICBCRUdJTigpOwotICAgIEpT
VmFsdWUgZ2VuZXJhdG9yID0gT1AoMSkuanNWYWx1ZSgpOwotICAgIEdlbmVyYXRvckZyYW1lKiBm
cmFtZSA9IG51bGxwdHI7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IGdlbmVyYXRvci5nZXQoZXhlYywg
ZXhlYy0+cHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvckZyYW1lUHJpdmF0
ZU5hbWUoKSk7Ci0gICAgaWYgKCF2YWx1ZS5pc051bGwoKSkKLSAgICAgICAgZnJhbWUgPSBqc0Nh
c3Q8R2VuZXJhdG9yRnJhbWUqPih2YWx1ZSk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIC8vIEZJWE1F
OiBPbmNlIEpTR2VuZXJhdG9yIHNwZWNpYWxpemVkIG9iamVjdCBpcyBpbnRyb2R1Y2VkLCB0aGlz
IEdlbmVyYXRvckZyYW1lIHNob3VsZCBiZSBlbWJlZGVkIGludG8gaXQgdG8gYXZvaWQgYWxsb2Nh
dGlvbnMuCi0gICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNTE1NDUKLSAgICAgICAgZnJhbWUgPSBHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlKGV4ZWMtPnZt
KCksICBleGVjLT5jb2RlQmxvY2soKS0+bnVtQ2FsbGVlTG9jYWxzKCkpOwotICAgICAgICBQdXRQ
cm9wZXJ0eVNsb3Qgc2xvdChnZW5lcmF0b3IsIHRydWUsIFB1dFByb3BlcnR5U2xvdDo6UHV0QnlJ
ZCk7Ci0gICAgICAgIGFzT2JqZWN0KGdlbmVyYXRvciktPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkp
LT5wdXQoYXNPYmplY3QoZ2VuZXJhdG9yKSwgZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLmJ1
aWx0aW5OYW1lcygpLmdlbmVyYXRvckZyYW1lUHJpdmF0ZU5hbWUoKSwgZnJhbWUsIHNsb3QpOwot
ICAgIH0KLSAgICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSBwY1syXS51LnVuc2ln
bmVkVmFsdWU7Ci0gICAgZnJhbWUtPnNhdmUoZXhlYywgZXhlYy0+Y29kZUJsb2NrKCktPmxpdmVD
YWxsZWVMb2NhbHNBdFlpZWxkKGxpdmVDYWxsZWVMb2NhbHNJbmRleCkpOwotICAgIEVORCgpOwot
fQotCi1TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcmVzdW1lKQotewotICAgIEJFR0lOKCk7Ci0g
ICAgSlNWYWx1ZSBnZW5lcmF0b3IgPSBPUCgxKS5qc1ZhbHVlKCk7Ci0gICAgR2VuZXJhdG9yRnJh
bWUqIGZyYW1lID0ganNDYXN0PEdlbmVyYXRvckZyYW1lKj4oZ2VuZXJhdG9yLmdldChleGVjLCBl
eGVjLT5wcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yRnJhbWVQcml2YXRl
TmFtZSgpKSk7Ci0gICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gcGNbMl0udS51
bnNpZ25lZFZhbHVlOwotICAgIGZyYW1lLT5yZXN1bWUoZXhlYywgZXhlYy0+Y29kZUJsb2NrKCkt
PmxpdmVDYWxsZWVMb2NhbHNBdFlpZWxkKGxpdmVDYWxsZWVMb2NhbHNJbmRleCkpOwotICAgIEVO
RCgpOwotfQotCiBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfY3JlYXRlX2xleGljYWxfZW52aXJv
bm1lbnQpCiB7CiAgICAgQkVHSU4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29tbW9uU2xvd1BhdGhzLmgKaW5kZXggOGM3MDc4NDI4MDJkNmEwM2QxMjhjZDhkMjkyYWZm
NzM1Y2RhMDMyZi4uNmViMjFiZGZkZTAzNDEyZmVlNjEwMDJkNWU1YWE4YTgzNDgwNTNhMCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKQEAg
LTI0Niw4ICsyNDYsNiBAQCBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX25leHRfZ2Vu
ZXJpY19lbnVtZXJhdG9yX3BuYW1lKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhf
dG9faW5kZXhfc3RyaW5nKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcHJvZmls
ZV90eXBlX2NsZWFyX2xvZyk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2Fzc2Vy
dCk7Ci1TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3NhdmUpOwotU0xPV19QQVRIX0hJ
RERFTl9ERUNMKHNsb3dfcGF0aF9yZXN1bWUpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3df
cGF0aF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudCk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0wo
c2xvd19wYXRoX3B1c2hfd2l0aF9zY29wZSk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19w
YXRoX3Jlc29sdmVfc2NvcGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvR2VuZXJhdG9yRnJhbWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
R2VuZXJhdG9yRnJhbWUuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZjZlYTdh
MTAwMjU4YzNlY2UwNGRhYWI0M2JkYWE4NTFlYzhmNzE1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dl
bmVyYXRvckZyYW1lLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDk3ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkdlbmVyYXRvckZyYW1l
LmgiCi0KLSNpbmNsdWRlICJDb2RlQmxvY2suaCIKLSNpbmNsdWRlICJIZWFwSXRlcmF0aW9uU2Nv
cGUuaCIKLSNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgotI2luY2x1ZGUgIkpTQ2VsbElu
bGluZXMuaCIKLSNpbmNsdWRlICJTbG90VmlzaXRvcklubGluZXMuaCIKLSNpbmNsdWRlICJTdHJ1
Y3R1cmVJbmxpbmVzLmgiCi0KLW5hbWVzcGFjZSBKU0MgewotCi1jb25zdCBDbGFzc0luZm8gR2Vu
ZXJhdG9yRnJhbWU6OnNfaW5mbyA9IHsgIkdlbmVyYXRvckZyYW1lIiwgbnVsbHB0ciwgbnVsbHB0
ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShHZW5lcmF0b3JGcmFtZSkgfTsKLQotR2VuZXJhdG9yRnJh
bWU6OkdlbmVyYXRvckZyYW1lKFZNJiB2bSwgc2l6ZV90IG51bWJlck9mQ2FsbGVlTG9jYWxzKQot
ICAgIDogQmFzZSh2bSwgdm0uZ2VuZXJhdG9yRnJhbWVTdHJ1Y3R1cmUuZ2V0KCkpCi0gICAgLCBt
X251bWJlck9mQ2FsbGVlTG9jYWxzKG51bWJlck9mQ2FsbGVlTG9jYWxzKQotewotfQotCi12b2lk
IEdlbmVyYXRvckZyYW1lOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCi17Ci0gICAgQmFzZTo6Zmlu
aXNoQ3JlYXRpb24odm0pOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9udW1iZXJPZkNh
bGxlZUxvY2FsczsgKytpKQotICAgICAgICBsb2NhbEF0KGkpLmNsZWFyKCk7Ci19Ci0KLVN0cnVj
dHVyZSogR2VuZXJhdG9yRnJhbWU6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQotewotICAgIHJldHVybiBTdHJ1
Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKENlbGxU
eXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Ci19Ci0KLUdlbmVyYXRvckZyYW1lKiBHZW5l
cmF0b3JGcmFtZTo6Y3JlYXRlKFZNJiB2bSwgc2l6ZV90IG51bWJlck9mTG9jYWxzKQotewotICAg
IEdlbmVyYXRvckZyYW1lKiByZXN1bHQgPQotICAgICAgICBuZXcgKAotICAgICAgICAgICAgTm90
TnVsbCwKLSAgICAgICAgICAgIGFsbG9jYXRlQ2VsbDxHZW5lcmF0b3JGcmFtZT4odm0uaGVhcCwg
YWxsb2NhdGlvblNpemVGb3JMb2NhbHMobnVtYmVyT2ZMb2NhbHMpKSkKLSAgICAgICAgR2VuZXJh
dG9yRnJhbWUodm0sIG51bWJlck9mTG9jYWxzKTsKLSAgICByZXN1bHQtPmZpbmlzaENyZWF0aW9u
KHZtKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi12b2lkIEdlbmVyYXRvckZyYW1lOjpzYXZl
KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZUNhbGxlZUxvY2FscykK
LXsKLSAgICAvLyBPbmx5IHNhdmUgY2FsbGVlIGxvY2Fscy4KLSAgICAvLyBFdmVyeSB0aW1lIGEg
Z2VuZXJhdG9yIGlzIGNhbGxlZCAob3IgcmVzdW1lZCksIHBhcmFtZXRlcnMgc2hvdWxkIGJlIHJl
cGxhY2VkLgotICAgIEFTU0VSVChsaXZlQ2FsbGVlTG9jYWxzLm51bUJpdHMoKSA8PSBtX251bWJl
ck9mQ2FsbGVlTG9jYWxzKTsKLSAgICBsaXZlQ2FsbGVlTG9jYWxzLmZvckVhY2hTZXRCaXQoWyZd
KHNpemVfdCBpbmRleCkgewotICAgICAgICBsb2NhbEF0KGluZGV4KS5zZXQoZXhlYy0+dm0oKSwg
dGhpcywgZXhlYy0+dW5jaGVja2VkUih2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChpbmRleCkpLmpz
VmFsdWUoKSk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgR2VuZXJhdG9yRnJhbWU6OnJlc3VtZShFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IEZhc3RCaXRWZWN0b3ImIGxpdmVDYWxsZWVMb2NhbHMpCi17Ci0g
ICAgLy8gT25seSByZXN1bWUgY2FsbGVlIGxvY2Fscy4KLSAgICAvLyBFdmVyeSB0aW1lIGEgZ2Vu
ZXJhdG9yIGlzIGNhbGxlZCAob3IgcmVzdW1lZCksIHBhcmFtZXRlcnMgc2hvdWxkIGJlIHJlcGxh
Y2VkLgotICAgIGxpdmVDYWxsZWVMb2NhbHMuZm9yRWFjaFNldEJpdChbJl0oc2l6ZV90IGluZGV4
KSB7Ci0gICAgICAgIGV4ZWMtPnVuY2hlY2tlZFIodmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaW5k
ZXgpKSA9IGxvY2FsQXQoaW5kZXgpLmdldCgpOwotICAgICAgICBsb2NhbEF0KGluZGV4KS5jbGVh
cigpOwotICAgIH0pOwotfQotCi12b2lkIEdlbmVyYXRvckZyYW1lOjp2aXNpdENoaWxkcmVuKEpT
Q2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCi17Ci0gICAgR2VuZXJhdG9yRnJhbWUq
IHRoaXNPYmplY3QgPSBqc0Nhc3Q8R2VuZXJhdG9yRnJhbWUqPihjZWxsKTsKLSAgICBCYXNlOjp2
aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwotICAgIC8vIFNpbmNlIG9ubHkgdHJ1
ZSBjZWxsIHBvaW50ZXJzIGFyZSBzdG9yZWQgYXMgYSBjZWxsLCB3ZSBjYW4gc2FmZWx5IG1hcmsg
dGhlbS4KLSAgICB2aXNpdG9yLmFwcGVuZFZhbHVlcyh0aGlzT2JqZWN0LT5sb2NhbHMoKSwgdGhp
c09iamVjdC0+bV9udW1iZXJPZkNhbGxlZUxvY2Fscyk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIEpT
QwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJh
bWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZyYW1lLmgKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNkNTQ1YjE0N2RkNGFiZmIyYmJiOWI1YTcxOTRl
OGY3NDg0MWM0OWEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJhbWUuaAorKysgL2Rl
di9udWxsCkBAIC0xLDkwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtl
IFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
Ci0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBHZW5l
cmF0b3JGcmFtZV9oCi0jZGVmaW5lIEdlbmVyYXRvckZyYW1lX2gKLQotI2luY2x1ZGUgIkpTQ2Vs
bC5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0Qml0VmVjdG9yLmg+Ci0KLW5hbWVzcGFjZSBKU0Mgewot
Ci1jbGFzcyBHZW5lcmF0b3JGcmFtZSA6IHB1YmxpYyBKU0NlbGwgewotICAgIGZyaWVuZCBjbGFz
cyBKSVQ7Ci0jaWYgRU5BQkxFKERGR19KSVQpCi0gICAgZnJpZW5kIGNsYXNzIERGRzo6U3BlY3Vs
YXRpdmVKSVQ7Ci0gICAgZnJpZW5kIGNsYXNzIERGRzo6SklUQ29tcGlsZXI7Ci0jZW5kaWYKLSAg
ICBmcmllbmQgY2xhc3MgVk07Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBKU0NlbGwgQmFzZTsKLSAg
ICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBTdHJ1Y3R1cmVJc0ltbW9y
dGFsIHwgQmFzZTo6U3RydWN0dXJlRmxhZ3M7Ci0KLSAgICBERUNMQVJFX0VYUE9SVF9JTkZPOwot
Ci0gICAgc3RhdGljIEdlbmVyYXRvckZyYW1lKiBjcmVhdGUoVk0mLCBzaXplX3QgbnVtYmVyT2ZD
YWxsZWVMb2NhbHMpOwotCi0gICAgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiogbG9jYWxzKCkK
LSAgICB7Ci0gICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8V3JpdGVCYXJyaWVyQmFzZTxVbmtu
b3duPio+KGJpdHdpc2VfY2FzdDxjaGFyKj4odGhpcykgKyBvZmZzZXRPZkxvY2FscygpKTsKLSAg
ICB9Ci0KLSAgICBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+JiBsb2NhbEF0KHNpemVfdCBpbmRl
eCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChpbmRleCA8IG1fbnVtYmVyT2ZDYWxsZWVMb2NhbHMp
OwotICAgICAgICByZXR1cm4gbG9jYWxzKClbaW5kZXhdOwotICAgIH0KLQotICAgIHN0YXRpYyBz
aXplX3Qgb2Zmc2V0T2ZMb2NhbHMoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIFdURjo6cm91bmRV
cFRvTXVsdGlwbGVPZjxzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KT4oc2l6ZW9mKEdlbmVy
YXRvckZyYW1lKSk7Ci0gICAgfQotCi0gICAgc3RhdGljIHNpemVfdCBhbGxvY2F0aW9uU2l6ZUZv
ckxvY2Fscyh1bnNpZ25lZCBudW1iZXJPZkxvY2FscykKLSAgICB7Ci0gICAgICAgIHJldHVybiBv
ZmZzZXRPZkxvY2FscygpICsgbnVtYmVyT2ZMb2NhbHMgKiBzaXplb2YoV3JpdGVCYXJyaWVyPFVu
a25vd24+KTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUo
Vk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgcHJvdG90eXBlKTsKLQotICAgIHZvaWQgc2F2
ZShFeGVjU3RhdGUqLCBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlQ2FsbGVlTG9jYWxzKTsKLSAg
ICB2b2lkIHJlc3VtZShFeGVjU3RhdGUqLCBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlQ2FsbGVl
TG9jYWxzKTsKLQotcHJpdmF0ZToKLSAgICBHZW5lcmF0b3JGcmFtZShWTSYsIHNpemVfdCBudW1i
ZXJPZkNhbGxlZUxvY2Fscyk7Ci0KLSAgICBzaXplX3QgbV9udW1iZXJPZkNhbGxlZUxvY2FsczsK
LQotICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7Ci0KLSAgICB2b2lkIGZp
bmlzaENyZWF0aW9uKFZNJik7Ci0KLXByb3RlY3RlZDoKLSAgICBzdGF0aWMgdm9pZCB2aXNpdENo
aWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBKU0MK
LQotI2VuZGlmIC8vIEdlbmVyYXRvckZyYW1lX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZN
LmNwcAppbmRleCBiMWZmNDI0OGEzNDg0YTRjYmJjMjA1YzMyZDRkMDRjMTYwNjBjYWM2Li44NWU2
N2ZmYjU5NjQ0ZDNiNTQzMzI1N2I3Y2IwZWQxZGQwZTY5Y2RjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVk0uY3BwCkBAIC00Niw3ICs0Niw2IEBACiAjaW5jbHVkZSAiRlRMVGh1bmtzLmgi
CiAjaW5jbHVkZSAiRnVuY3Rpb25Db25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkdDQWN0aXZpdHlD
YWxsYmFjay5oIgotI2luY2x1ZGUgIkdlbmVyYXRvckZyYW1lLmgiCiAjaW5jbHVkZSAiR2V0dGVy
U2V0dGVyLmgiCiAjaW5jbHVkZSAiSGVhcC5oIgogI2luY2x1ZGUgIkhlYXBJdGVyYXRpb25TY29w
ZS5oIgpAQCAtMjQwLDcgKzIzOSw2IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBo
ZWFwVHlwZSkKICAgICBpbmZlcnJlZFR5cGVTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBJbmZlcnJlZFR5
cGU6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICBpbmZlcnJlZFR5
cGVUYWJsZVN0cnVjdHVyZS5zZXQoKnRoaXMsIEluZmVycmVkVHlwZVRhYmxlOjpjcmVhdGVTdHJ1
Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgZnVuY3Rpb25SYXJlRGF0YVN0cnVjdHVy
ZS5zZXQoKnRoaXMsIEZ1bmN0aW9uUmFyZURhdGE6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwg
anNOdWxsKCkpKTsKLSAgICBnZW5lcmF0b3JGcmFtZVN0cnVjdHVyZS5zZXQoKnRoaXMsIEdlbmVy
YXRvckZyYW1lOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgZXhj
ZXB0aW9uU3RydWN0dXJlLnNldCgqdGhpcywgRXhjZXB0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUoKnRo
aXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgcHJvbWlzZURlZmVycmVkU3RydWN0dXJlLnNldCgqdGhp
cywgSlNQcm9taXNlRGVmZXJyZWQ6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkp
KTsKICAgICBpbnRlcm5hbFByb21pc2VEZWZlcnJlZFN0cnVjdHVyZS5zZXQoKnRoaXMsIEpTSW50
ZXJuYWxQcm9taXNlRGVmZXJyZWQ6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCmluZGV4IGYwZGUxNTEzNWE5MDc4NzhiNDdh
MWQzNDM0ZjY4MjkxY2I1ZGM3M2UuLjRmZjllZGQwYTc3NDZjMjllNWU2N2MzODFmY2UzYjIwNzQ3
OTk1NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaApAQCAtMzE2LDcgKzMxNiw2IEBA
IGNsYXNzIFZNIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFZNPiB7CiAgICAgU3Ryb25n
PFN0cnVjdHVyZT4gaW5mZXJyZWRUeXBlU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+
IGluZmVycmVkVHlwZVRhYmxlU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGZ1bmN0
aW9uUmFyZURhdGFTdHJ1Y3R1cmU7Ci0gICAgU3Ryb25nPFN0cnVjdHVyZT4gZ2VuZXJhdG9yRnJh
bWVTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gZXhjZXB0aW9uU3RydWN0dXJlOwog
ICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHByb21pc2VEZWZlcnJlZFN0cnVjdHVyZTsKICAgICBTdHJv
bmc8U3RydWN0dXJlPiBpbnRlcm5hbFByb21pc2VEZWZlcnJlZFN0cnVjdHVyZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwt
YW5kLWFycmF5LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0
b3ItZmliLWZ0bC1hbmQtYXJyYXkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmU5Mzk4MTJmZGJhZWM2YjgzMmJm
ZDAwZjIxNTNkZWY4NGJiNzU5MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwtYW5kLWFycmF5LmpzCkBAIC0wLDAg
KzEsMjMgQEAKKyhmdW5jdGlvbiAoKSB7CisgICAgZnVuY3Rpb24gKmZpYigpCisgICAgeworICAg
ICAgICBsZXQgYSA9IDE7CisgICAgICAgIGxldCBiID0gMTsKKyAgICAgICAgbGV0IGMgPSBbIDAg
XTsKKyAgICAgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgICAgIGNbMF0gPSBhOworICAgICAg
ICAgICAgeWllbGQgYzsKKyAgICAgICAgICAgIFthLCBiXSA9IFtiLCBhICsgYl07CisgICAgICAg
IH0KKyAgICB9CisKKyAgICBsZXQgdmFsdWUgPSAwOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwg
MWU0OyArK2kpIHsKKyAgICAgICAgbGV0IGYgPSBmaWIoKTsKKyAgICAgICAgZm9yIChsZXQgaSA9
IDA7IGkgPCAxMDA7ICsraSkgeworICAgICAgICAgICAgdmFsdWUgPSBmLm5leHQoKS52YWx1ZTsK
KyAgICAgICAgfQorICAgICAgICBpZiAodmFsdWVbMF0gIT09IDM1NDIyNDg0ODE3OTI2MjAwMDAw
MCkKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIHZhbHVlOiR7cmVzdWx0fWApOwor
ICAgIH0KK30oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3Ry
ZXNzL2dlbmVyYXRvci1maWItZnRsLWFuZC1vYmplY3QuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLWFuZC1vYmplY3QuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNjY3MzQwZjJlYTRjNzQzOGEyZDIwOWFhNDBkMDY3N2U0YWI3ZDNmYgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1m
dGwtYW5kLW9iamVjdC5qcwpAQCAtMCwwICsxLDIzIEBACisoZnVuY3Rpb24gKCkgeworICAgIGZ1
bmN0aW9uICpmaWIoKQorICAgIHsKKyAgICAgICAgbGV0IGEgPSAxOworICAgICAgICBsZXQgYiA9
IDE7CisgICAgICAgIGxldCBjID0geyBmaWI6IDAgfTsKKyAgICAgICAgd2hpbGUgKHRydWUpIHsK
KyAgICAgICAgICAgIGMuZmliID0gYTsKKyAgICAgICAgICAgIHlpZWxkIGM7CisgICAgICAgICAg
ICBbYSwgYl0gPSBbYiwgYSArIGJdOworICAgICAgICB9CisgICAgfQorCisgICAgbGV0IHZhbHVl
ID0gMDsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDFlNDsgKytpKSB7CisgICAgICAgIGxldCBm
ID0gZmliKCk7CisgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwOyArK2kpIHsKKyAgICAg
ICAgICAgIHZhbHVlID0gZi5uZXh0KCkudmFsdWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHZh
bHVlLmZpYiAhPT0gMzU0MjI0ODQ4MTc5MjYyMDAwMDAwKQorICAgICAgICAgICAgdGhyb3cgbmV3
IEVycm9yKGBiYWQgdmFsdWU6JHtyZXN1bHR9YCk7CisgICAgfQorfSgpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwtYW5k
LXN0cmluZy5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9y
LWZpYi1mdGwtYW5kLXN0cmluZy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MzhhZTZhYjMzNDcwNDY4MjI4NDlm
NDMwMDRlYTVjNDAzZWVkYTI4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQtc3RyaW5nLmpzCkBAIC0wLDAg
KzEsMjIgQEAKKyhmdW5jdGlvbiAoKSB7CisgICAgZnVuY3Rpb24gKmZpYigpCisgICAgeworICAg
ICAgICBsZXQgYSA9IDE7CisgICAgICAgIGxldCBiID0gMTsKKyAgICAgICAgbGV0IGMgPSAiUmVz
dWx0ISAiOworICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAgeWllbGQgYyArIGE7
CisgICAgICAgICAgICBbYSwgYl0gPSBbYiwgYSArIGJdOworICAgICAgICB9CisgICAgfQorCisg
ICAgbGV0IHZhbHVlID0gMDsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDFlNDsgKytpKSB7Cisg
ICAgICAgIGxldCBmID0gZmliKCk7CisgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwOyAr
K2kpIHsKKyAgICAgICAgICAgIHZhbHVlID0gZi5uZXh0KCkudmFsdWU7CisgICAgICAgIH0KKyAg
ICAgICAgaWYgKHZhbHVlICE9PSBgUmVzdWx0ISAzNTQyMjQ4NDgxNzkyNjIwMDAwMDBgKQorICAg
ICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgdmFsdWU6JHtyZXN1bHR9YCk7CisgICAgfQor
fSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2Vu
ZXJhdG9yLWZpYi1mdGwuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dl
bmVyYXRvci1maWItZnRsLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM0MGUzM2RiYzg2OGJlYTdhODkzYzllYzE2
Yjc3OWVjMjZiZGIxOWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLmpzCkBAIC0wLDAgKzEsMjEgQEAKKyhmdW5j
dGlvbiAoKSB7CisgICAgZnVuY3Rpb24gKmZpYigpCisgICAgeworICAgICAgICBsZXQgYSA9IDE7
CisgICAgICAgIGxldCBiID0gMTsKKyAgICAgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgICAg
IHlpZWxkIGE7CisgICAgICAgICAgICBbYSwgYl0gPSBbYiwgYSArIGJdOworICAgICAgICB9Cisg
ICAgfQorCisgICAgbGV0IHZhbHVlID0gMDsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDFlNDsg
KytpKSB7CisgICAgICAgIGxldCBmID0gZmliKCk7CisgICAgICAgIGZvciAobGV0IGkgPSAwOyBp
IDwgMTAwOyArK2kpIHsKKyAgICAgICAgICAgIHZhbHVlID0gZi5uZXh0KCkudmFsdWU7CisgICAg
ICAgIH0KKyAgICAgICAgaWYgKHZhbHVlICE9PSAzNTQyMjQ4NDgxNzkyNjIwMDAwMDApCisgICAg
ICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCB2YWx1ZToke3Jlc3VsdH1gKTsKKyAgICB9Cit9
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5l
cmF0b3ItZnJhbWUtZW1wdHkuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNz
L2dlbmVyYXRvci1mcmFtZS1lbXB0eS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41OWU4ODU1YmZhYzNjNTZkZjky
NmFiZDQyOGMwMTNjMzM0MTYyNzQ2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZnJhbWUtZW1wdHkuanMKQEAgLTAsMCArMSwz
NCBAQAorZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVuYywgZXJyb3JNZXNzYWdlKSB7CisgICAgdmFy
IGVycm9yVGhyb3duID0gZmFsc2U7CisgICAgdmFyIGVycm9yID0gbnVsbDsKKyAgICB0cnkgewor
ICAgICAgICBmdW5jKCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBlcnJvclRocm93biA9
IHRydWU7CisgICAgICAgIGVycm9yID0gZTsKKyAgICB9CisgICAgaWYgKCFlcnJvclRocm93bikK
KyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdub3QgdGhyb3duJyk7CisgICAgaWYgKFN0cmluZyhl
cnJvcikgIT09IGVycm9yTWVzc2FnZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgZXJy
b3I6ICR7U3RyaW5nKGVycm9yKX1gKTsKK30KKworc2hvdWxkVGhyb3coZnVuY3Rpb24gKCkgewor
ICAgIGZ1bmN0aW9uICpmaWIoZmxhZykKKyAgICB7CisgICAgICAgIGxldCBhID0gMTsKKyAgICAg
ICAgbGV0IGIgPSAxOworICAgICAgICB5aWVsZCA0MjsKKyAgICAgICAgaWYgKGZsYWcpCisgICAg
ICAgICAgICByZXR1cm4gYzsKKyAgICAgICAgbGV0IGMgPSA1MDA7CisgICAgfQorCisgICAgbGV0
IHZhbHVlID0gMDsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDFlNDsgKytpKSB7CisgICAgICAg
IGZvciAobGV0IHYgb2YgZmliKGZhbHNlKSkgeworICAgICAgICB9CisgICAgfQorICAgIGZvciAo
bGV0IHYgb2YgZmliKHRydWUpKSB7CisgICAgfQorfSwgYFJlZmVyZW5jZUVycm9yOiBDYW5ub3Qg
YWNjZXNzIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUuYCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1yZWR1Y2VkLXNhdmUtcG9pbnQtcHV0
LXRvLXNjb3BlLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0
b3ItcmVkdWNlZC1zYXZlLXBvaW50LXB1dC10by1zY29wZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMGM3NWZh
NDkxNDNjMTdiZTE0ZjMyODFlM2Y2NTQzNGYzNTEzOWU4Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItcmVkdWNlZC1zYXZlLXBv
aW50LXB1dC10by1zY29wZS5qcwpAQCAtMCwwICsxLDI4IEBACitmdW5jdGlvbiBzaG91bGRCZShh
Y3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAg
IHRocm93IG5ldyBFcnJvcihgYmFkIHZhbHVlOiAke1N0cmluZyhhY3R1YWwpfWApOworfQorCitm
dW5jdGlvbiBlcnJvcigpCit7CisgICAgdGhyb3cgIm9rIjsKK30KKworZnVuY3Rpb24qIGdlbigp
Cit7CisgICAgdmFyIHZhbHVlID0gNDI7CisgICAgdHJ5IHsKKyAgICAgICAgeWllbGQgMzAwOwor
ICAgICAgICB2YWx1ZSA9IDUwMDsKKyAgICAgICAgZXJyb3IoKTsKKyAgICB9IGNhdGNoIChlKSB7
CisgICAgICAgIHlpZWxkIDQyOworICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgfQorICAgIHJl
dHVybiAyMDA7Cit9CisKK3ZhciBnID0gZ2VuKCk7CitzaG91bGRCZShnLm5leHQoKS52YWx1ZSwg
MzAwKTsKK3Nob3VsZEJlKGcubmV4dCgpLnZhbHVlLCA0Mik7CitzaG91bGRCZShnLm5leHQoKS52
YWx1ZSwgNTAwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJl
c3MvZ2VuZXJhdG9yLXRyYW5zZmVyLXJlZ2lzdGVyLWJleW9uZC1tdXRpcGxlLXlpZWxkcy5qcyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXRyYW5zZmVyLXJl
Z2lzdGVyLWJleW9uZC1tdXRpcGxlLXlpZWxkcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZTIwOGY1ODEyOTZm
OWFlMDhhNmJmYjM5OGI0ODIyNTc0MmQ2Yjc4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItdHJhbnNmZXItcmVnaXN0ZXItYmV5
b25kLW11dGlwbGUteWllbGRzLmpzCkBAIC0wLDAgKzEsMTggQEAKK2Z1bmN0aW9uIHNob3VsZEJl
KGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCisKK2Z1bmN0
aW9uICpnZW4oKQoreworICAgIHZhciB0ZXN0ID0gNDI7CisgICAgeWllbGQgMzI7CisgICAgeWll
bGQgMzM7CisgICAgeWllbGQgdGVzdDsKK30KKwordmFyIGcgPSBnZW4oKTsKK3Nob3VsZEJlKGcu
bmV4dCgpLnZhbHVlLCAzMik7CitzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgMzMpOworc2hvdWxk
QmUoZy5uZXh0KCkudmFsdWUsIDQyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0Zhc3RC
aXRWZWN0b3IuaCBiL1NvdXJjZS9XVEYvd3RmL0Zhc3RCaXRWZWN0b3IuaAppbmRleCA5OGZmZjVj
ZjczNTNlNmJjNjdkYTVjNTU5NDBjY2NlNGU0YjE1NmQwLi5mZjAwYjdiNTRkNGEwY2ZmNGJlZjdk
MDM4NTRkZTZiOTBjZTFkYjkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9GYXN0Qml0VmVj
dG9yLmgKKysrIGIvU291cmNlL1dURi93dGYvRmFzdEJpdFZlY3Rvci5oCkBAIC0yMyw4ICsyMyw3
IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCi0jaWZuZGVmIEZhc3RCaXRWZWN0b3JfaAotI2Rl
ZmluZSBGYXN0Qml0VmVjdG9yX2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSA8c3RyaW5nLmg+
CiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KQEAgLTM2LDEyICszNSwxNCBAQCBjbGFzcyBQ
cmludFN0cmVhbTsKIAogY2xhc3MgRmFzdEJpdFZlY3RvciB7CiBwdWJsaWM6Ci0gICAgRmFzdEJp
dFZlY3RvcigpCi0gICAgICAgIDogbV9hcnJheSgwKQotICAgICAgICAsIG1fbnVtQml0cygwKQor
ICAgIEZhc3RCaXRWZWN0b3IoKSA9IGRlZmF1bHQ7CisKKyAgICBGYXN0Qml0VmVjdG9yKEZhc3RC
aXRWZWN0b3ImJiBvdGhlcikKKyAgICAgICAgOiBtX2FycmF5KHN0ZDo6ZXhjaGFuZ2Uob3RoZXIu
bV9hcnJheSwgbnVsbHB0cikpCisgICAgICAgICwgbV9udW1CaXRzKHN0ZDo6ZXhjaGFuZ2Uob3Ro
ZXIubV9udW1CaXRzLCAwKSkKICAgICB7CiAgICAgfQotICAgIAorCiAgICAgRmFzdEJpdFZlY3Rv
cihjb25zdCBGYXN0Qml0VmVjdG9yJiBvdGhlcikKICAgICAgICAgOiBtX2FycmF5KDApCiAgICAg
ICAgICwgbV9udW1CaXRzKDApCkBAIC0yMDIsMTMgKzIwMywxMCBAQCBjbGFzcyBGYXN0Qml0VmVj
dG9yIHsKICAgICBzdGF0aWMgc2l6ZV90IGFycmF5TGVuZ3RoKHNpemVfdCBudW1CaXRzKSB7IHJl
dHVybiAobnVtQml0cyArIDMxKSA+PiA1OyB9CiAgICAgc2l6ZV90IGFycmF5TGVuZ3RoKCkgY29u
c3QgeyByZXR1cm4gYXJyYXlMZW5ndGgobV9udW1CaXRzKTsgfQogICAgIAotICAgIHVpbnQzMl90
KiBtX2FycmF5OyAvLyBObywgdGhpcyBjYW4ndCBiZSBhbiBzdGQ6OnVuaXF1ZV9wdHI8dWludDMy
X3RbXT4uCi0gICAgc2l6ZV90IG1fbnVtQml0czsKKyAgICB1aW50MzJfdCogbV9hcnJheSB7IG51
bGxwdHIgfTsgLy8gTm8sIHRoaXMgY2FuJ3QgYmUgYW4gc3RkOjp1bmlxdWVfcHRyPHVpbnQzMl90
W10+LgorICAgIHNpemVfdCBtX251bUJpdHMgeyAwIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
VEYKIAogdXNpbmcgV1RGOjpGYXN0Qml0VmVjdG9yOwotCi0jZW5kaWYgLy8gRmFzdEJpdFZlY3Rv
cl9oCi0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>284224</attachid>
            <date>2016-07-21 10:26:11 -0700</date>
            <delta_ts>2016-07-25 07:40:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-152723-20160722022510.patch</filename>
            <type>text/plain</type>
            <size>195704</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAzNTAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
MTg5OTNhYjdiZWYyMDRmYjhkMjVkN2EyODExNzBiODE5NjI4ZGEzLi5hNGE1NDZkNmQxNDNkZjQw
MTAxOWRiYTZkNGZmN2E3YmQyNTMxOTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNjAgQEAKKzIwMTYtMDctMjEgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0RGR11bRlRMXSBJbXBsZW1lbnQgRVM2IEdlbmVyYXRvcnMgaW4g
REZHIC8gRlRMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNTI3MjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUaGlzIHBhdGNoIGludHJvZHVjZXMgREZHIGFuZCBGVEwgc3VwcG9ydCBmb3IgRVM2IGdlbmVy
YXRvcnMuCisgICAgICAgIEVTNiBnZW5lcmF0b3IgaXMgY29tcGlsZWQgYnkgdGhlIEJ5dGVjb2Rl
R2VuZXJhdG9yLiBCdXQgYXQgdGhlIGxhc3QgcGhhc2UsIEJ5dGVjb2RlR2VuZXJhdG9yIHBlcmZv
cm1zICJnZW5lcmF0b3JpZmljYXRpb24iIG9udG8gdGhlIHVubGlua2VkIGNvZGUuCisgICAgICAg
IEluIEJ5dGVjb2RlR2VuZXJhdG9yIHBoYXNlLCB3ZSBpbnNlcnRlZCBzZXZlcmFsIHNwZWNpYWwg
bWFya2VycyBmb3IgdGhlIGdlbmVyYXRvcnMsIG9wX3NhdmUgYW5kIG9wX3Jlc3VtZS4KKyAgICAg
ICAgVGhlIG9wX3NhdmUsIG9wX3Jlc3VtZSwgYW5kIHRoZSBtZXJnZSBwb2ludCBibG9jayBhcmUg
Y29ubmVjdGVkIGFzIGZvbGxvd3MuCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBvcF9yZXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBeCisgICAgICAgIGVudHJ5IC0+IGdlbmVyYXRvciBzd2l0Y2ggLS0tLT4gb3Bfc2F2ZSAtPiBt
ZXJnZSBwb2ludCAtPiAuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBeCisgICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0t
LT4gb3BfcmVzdW1lIC0tLS0tKworCisgICAgICAgIEluIHRoZSBnZW5lcmF0b3JpZmljYXRpb24g
cGhhc2UsIHdlIHR1cm4gb3V0IHdoaWNoIHZhcmlhYmxlcyBzaG91bGQgYmUgc2F2ZWQgYW5kIHJl
c3VtZWQgYXQgZWFjaCBvcF9zYXZlIGFuZCBvcF9yZXN1bWUsIGFuZCBjb252ZXJ0IHRoZXNlIGJ5
dGVjb2RlcworICAgICAgICB0byB0aGUgc2VxdWVuY2VzIG9mIHRoZSBnZXRfZnJvbV9zY29wZSBh
bmQgcHV0X3RvX3Njb3BlLiBUaGUgcmVnaXN0ZXJzIGFyZSBzYXZlZCBhbmQgcmVzdW1lZCBvdmVy
IHRoZSBnZW5lcmF0b3IncyBuZXh0KCkgY2FsbHMgYnkgdXNpbmcgdGhpcyBzcGVjaWFsCisgICAg
ICAgIGdlbmVyYXRvciBmcmFtZSBzY29wZS4KKworICAgICAgICBJbiB0aGUgZ2VuZXJhdG9yaWZp
Y2F0aW9uIHBoYXNlLAorCisgICAgICAgIDEuIFdlIGNvbnN0cnVjdCB0aGUgQnl0ZWNvZGVHcmFw
aCBmcm9tIHRoZSB1bmlua2VkIGluc3RydWN0aW9ucy4gVGhpcyBjb25zdHJ1Y3RzIHRoZSBiYXNp
YyBibG9ja3MsIGFuZCBpdCBpcyB1c2VkIGluIHRoZSBzdWJzZXF1ZW50IGFuYWx5c2lzLgorICAg
ICAgICAyLiBXZSBwZXJmb3JtIHRoZSBhbmFseXNpcyBvbnRvIHRoZSB1bmxpbmtlZCBjb2RlLiBX
ZSBoYXZlIDMgYW5hbHlzaXM6IHRoZSBsaXZlbmVzcyBhbmFseXNpcywgdGhlIHNhdmVkIHZhcmlh
YmxlcyBhbmFseXNpcywgYW5kIHRoZSByZXN1bWVkIHZhcmlhYmxlcyBhbmFseXNpcy4KKyAgICAg
ICAgICAgRmlyc3QsIGluIHRoZSBsaXZlbmVzcyBhbmFseXNpcywgd2UgZXh0cmFjdCB0aGUgbGl2
ZSB2YXJpYWJsZXMgYXQgZWFjaCBtZXJnZSBwb2ludC4gVGhlc2UgdmFyaWFibGVzIHNob3VsZCBi
ZSBjb25zaWRlcmVkIGFzIHRoZSBjb25zZXJ2YXRpdmUgcmVnaXN0ZXJzCisgICAgICAgICAgIHRv
IGJlIHNhdmVkIGFuZCByZXN1bWVkIGF0IGVhY2ggcG9pbnQuCisgICAgICAgIDMuIFNlY29uZCwg
d2UgZHJpdmUgdGhlIGZvcndhcmQgYW5hbHlzaXMsIGNhbGxlZCB0aGUgc2F2ZWQgdmFyaWFibGVz
IGFuYWx5c2lzLiBUaGlzIHRpbWUsIHdlIGV4cGxpY2l0bHkgaWdub3JlIHRoZSBlZGdlcyBiZXR3
ZWVuIHRoZSBzYXZlIHBvaW50cyBhbmQgdGhlIG1lcmdlIHBvaW50cy4KKyAgICAgICAgICAgQXQg
b3Bfc2F2ZSwgd2Ugc2hvdWxkIHNhdmUgdGhlIHZhcmlhYmxlcyB0aGF0IChpKSB3aWxsIGJlIHVz
ZWQgYWZ0ZXIgdGhlIG1lcmdlIHBvaW50IEFORCAoaWkpIHRoZSBuZXdseSBkZWZpbmVkIHZhcmlh
YmxlcyBmcm9tIHRoZSBwcmV2aW91cyBvcF9yZXN1bWUuIFNvLCB3ZSBwcm9wYWdhdGUKKyAgICAg
ICAgICAgdGhlIGRlZnMgYW5kIGNvbGxlY3QgdGhlIG5ld2x5IGRlZmluZWQgcmVnaXN0ZXJzIGF0
IGVhY2ggb3Bfc2F2ZSBwb2ludCBpbiB0aGUgZ3JhcGguIFRoaXMgcmVzdWx0IHJlcHJlc2VudHMg
KGlpKS4gU28gdGhlbiwgd2UgZmlsdGVyIHRoZSBsaXZlIHZhcmlhYmxlcyAoaSkgKGdhaW5lZCBp
biAoMikpCisgICAgICAgICAgIGF0IGVhY2ggbWVyZ2UgcG9pbnQgd2l0aCB0aGlzIG5ld2x5IGRl
Zi1lZCByZWdpc3RlcnMgYml0IG1hc2soaWkpLgorICAgICAgICAgICBPbmUgaW1wb3J0YW50IHRo
aW5nIG9mIHRoaXMgYW5hbHlzaXMgaXMgdGhhdCwgd2UgY29uc2lkZXJzIHRoZSBiYXNpYyBibG9j
a3Mgd2hpY2ggcmFuZ2Ugb3ZlcmxhcHMgdGhlIHRyeS1yYW5nZSBhcyB0aGUgaW1wbGljaXQgcHJl
ZGVjZXNzb3JzIG9mIHRoZSBoYW5kbGVycy4KKyAgICAgICAgICAgV2hlbiBwcm9wYWdhdGluZyB0
aGUgb3V0Z29pbmcgcmVzdWx0cywgdGhlIGhhbmRsZXIgbWVyZ2VzIGFsbCB0aGUgcHJlZGVjZXNz
b3JzJyBvdXQgc2V0cy4gVGhpcyBpcyBhIGxpdHRsZSBiaXQgY29uc2VydmF0aXZlIGJlY2F1c2Ug
dGhlIHRyeS1yYW5nZSBtYXkgbm90IGNvdmVyIGFsbAorICAgICAgICAgICB0aGUgcGFydCBvZiB0
aGUgaW1wbGljaXQgcHJlZGVjZXNzb3JzLiBTbyBvcF9zYXZlIGNvdWxkIHNhdmUgdGhlIHZhcmlh
YmxlcyBjb25zZXJ2YXRpdmVseS4KKyAgICAgICAgNC4gVGhpcmQsIHdlIHBlcmZvcm0gdGhlIGxp
dmVuZXNzIGFuYWx5c2lzIGFnYWluLCBidXQgb250byB0aGUgZ3JhcGggd2hpY2ggZHJvcHMgdGhl
IGVkZ2VzIGJldHdlZW4gdGhlIHNhdmUgcG9pbnRzIGFuZCB0aGUgbWVyZ2UgcG9pbnRzLiBUaGlz
IGFuYWx5c2lzLCByZWZlcnJlZCB0byBhcworICAgICAgICAgICB0aGUgcmVzdW1lZCB2YXJpYWJs
ZXMgYW5hbHlzaXMsIGV4dHJhY3RzIHRoZSBsaXZlbmVzcyBhdCBlYWNoIG1lcmdlIHBvaW50LiBU
aGlzIGxpdmVuZXNzIGluZm9ybWF0aW9uIG9ubHkgY29uc2lkZXJzIHRoZSByZWFjaGFibGUgYmxv
Y2tzIGZyb20gdGhlIHRhcmdldCBvcF9yZXN1bWUuCisgICAgICAgICAgIFNvLCB0aGlzIHJlZ2lz
dGVyIHNldCByZXByZXNlbnRzIHRoZSBzYXZlZCByZWdpc3RlcnMgd2hpY2ggdGhlIHJlYWNoYWJs
ZSBibG9ja3MgdXNlLiBXZSBjb25zaWRlciB0aGVzZSByZWdpc3RlcnMgYXMgdGhlIHJlZ2lzdGVy
cyB0byBiZSByZXN1bWVkIGhlcmUuCisgICAgICAgICAgIFRoaXMgYW5hbHlzaXMgc2hvdWxkIGJl
IGRvbmUgYWZ0ZXIgKDMpIGFuZCBzaG91bGQgdXNlICgzKSdzIHJlc3VsdHMuIFRoaXMgaXMgYmVj
YXVzZSB0aGUgb3Bfc2F2ZSBjb3VsZCBzYXZlIHRoZSB2YXJpYWJsZXMgY29uc2VydmF0aXZlbHku
IFNvIG9wX3Jlc3VtZSBzaG91bGQgcmVzdW1lCisgICAgICAgICAgIHRoZSB2YXJpYWJsZXMgdGhh
dCBpcyBzYXZlZCBjb25zZXJ2YXRpdmVseSBpbiAoMykuCisgICAgICAgIDUuIFdlIGluc2VydCB0
aGUgZ2V0X2Zyb21fc2NvcGUgYW5kIHB1dF90b19zY29wZSBhdCBlYWNoIG9wX3NhdmUgYW5kIG9w
X3Jlc3VtZS4gV2hpY2ggcmVnaXN0ZXJzIHNob3VsZCBiZSBzYXZlZCBhbmQgcmVzdW1lZCBpcyBv
ZmZlcmVkIGJ5ICgzKSBhbmQgKDQpLgorICAgICAgICAgICBUaGVuLCBjbGlwIHRoZSBvcF9zYXZl
IGFuZCBvcF9yZXN1bWUgdGhlbXNlbHZlcy4gVGhleSBhcmUgZXhlY3V0ZWQgaW4gYSBiYXRjaCBt
YW5uZXIgYnkgQnl0ZWNvZGVNb2RpZmljYXRpb25TZXQuIFNpbmNlIHRoZXNlIG1vZGlmaWNhdGlv
biBjaGFuZ2VzIHRoZSBiYXNpYyBibG9ja3MKKyAgICAgICAgICAgYW5kIHNpemUgb2YgdW5saW5r
ZWQgaW5zdHJ1Y3Rpb25zLCBCeXRlY29kZU1vZGlmaWNhdGlvblNldCBhbHNvIHBlcmZvcm1zIHRo
ZSBvZmZzZXQgYWRqdXN0bWVudCBmb3IgVW5saW5rZWRDb2RlQmxvY2suIFNvLCB0aGlzIEJ5dGVj
b2RlTW9kaWZpY2F0aW9uU2V0IGlzIHBlcmZvcm1lZAorICAgICAgICAgICBvbnRvIHRoZSBCeXRl
Y29kZUdyYXBoIGluc3RlYWQgb2YgQnl0ZWNvZGVCYXNpY0Jsb2NrLiBUaGUgcmVhc29uIHdoeSB3
ZSB0YWtlIHRoaXMgZGVzaWduIGlzIHNpbXBsZTogd2UgZG9uJ3Qgd2FudCB0byBuZXdseSBjcmVh
dGUgdGhlIGJhc2ljIGJsb2NrcyBhbmQgb3Bjb2RlcworICAgICAgICAgICBmb3IgdGhpcyBlYXJs
eSBwaGFzZSBsaWtlIERGRy4gSW5zdGVhZCwgd2UgcGVyZm9ybSB0aGUgbW9kaWZpY2F0aW9uIGFu
ZCBhZGp1c3RtZW50IHRvIHRoZSB1bmxpbmtlZCBpbnN0cnVjdGlvbnMgYW5kIFVubGlua2VkQ29k
ZUJsb2NrIGluIGEgaW4tcGxhY2UgbWFubmVyLgorCisgICAgICAgIEFmdGVyIHRoYXQgcGhhc2Us
IHRoZSBkYXRhIGZsb3cgb2YgdGhlIGdlbmVyYXRvci1zYXZlZC1hbmQtcmVzdW1lZC1yZWdpc3Rl
cnMgYXJlIGV4cGxpY2l0bHkgcmVwcmVzZW50ZWQgYnkgdGhlIGdldF9mcm9tX3Njb3BlIGFuZCBw
dXRfdG9fc2NvcGUuCisgICAgICAgIEFuZCBvcF9zYXZlIGFuZCBvcF9yZXN1bWUgYXJlIHJlbW92
ZWQuIFNpbmNlIHdlIHVzZSB0aGUgZXhpc3RpbmcgYnl0ZWNvZGVzLCBERkcgYW5kIEZUTCBjaGFu
Z2VzIGFyZSBub3QgbmVjZXNzYXJ5LgorCisgICAgICAgIENvbXBpbGluZyBFUzYgZ2VuZXJhdG9y
cyBpbiBERkcgYW5kIEZUTCBnaXZlcyB1cyBzaWduaWZpY2FudCBwZXJmb3JtYW5jZSBpbXByb3Zl
bWVudHMuCisgICAgICAgIEluIHg2NCBMaW51eCBib3ggKGhhbmF5YW1hdGEpLCB0aGUgcmVzdWx0
IG9mIEpTQ09ubHkgcG9ydCBpcyB0aGUgZm9sbG93aW5ncy4KKworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlbGluZSAgICAgICAgICAg
ICAgICAgICBwYXRjaAorCisgICAgICAgICAgICBnZW5lcmF0b3ItZmliICAgICAgICAgICAgICAg
ICAgICAgICAgICAxMDkuMTg0NSstOC44OTA1ICAgICBeICAgICAzNS44NjM4Ky0wLjc1NjcgICAg
ICAgIF4gZGVmaW5pdGVseSAzLjA0NDR4IGZhc3RlcgorICAgICAgICAgICAgZ2VuZXJhdG9yLXdp
dGgtc2V2ZXJhbC10eXBlcyAgICAgICAgICAgMzUxLjgzNTQrLTE3LjM4OTggICAgXiAgICAxMzIu
MzIzOSstMTguNjMxMCAgICAgICBeIGRlZmluaXRlbHkgMi42NTg5eCBmYXN0ZXIKKyAgICAgICAg
ICAgIGdlbmVyYXRvci1zdW5zcGlkZXItYWNjZXNzLW5zaWV2ZSAgICAgICAgNS45MTM2Ky0wLjAy
NjggICAgIF4gICAgICA1LjAwOTArLTAuMDM5NCAgICAgICAgXiBkZWZpbml0ZWx5IDEuMTgwNngg
ZmFzdGVyCisKKyAgICAgICAgSW4geDY0IE9TIFggbGFwdG9wLCB0aGUgcmVzdWx0cyBvZiBFUzZT
YW1wbGVCZW5jaCBhcmUgdGhlIGZvbGxvd2luZ3MuCisgICAgICAgIFRoZSBFUzYgQmFzaWMgYmVu
Y2htYXJrIHNob3cgdGhhdCB0aGUgcGVyZm9ybWFuY2Ugb2YgdGhlIHBhdGNoZWQgb25lIGlzIDMz
JSBmYXN0ZXIgdGhhbiB0aGUgcGVyZm9ybWFuY2Ugb2YgdGhlIGJhc2VsaW5lLgorCisgICAgICAg
ICAgICBCYXNlbGluZToKKyAgICAgICAgICAgICAgICBHZW9tZXRyaWMgTWVhbiBSZXN1bHQ6IDE4
MS44MyBtcyDCsSA0LjgyIG1zCisKKyAgICAgICAgICAgICAgICBCZW5jaG1hcmsgICAgRmlyc3Qg
SXRlcmF0aW9uICAgICAgIFdvcnN0IDIlICAgICAgICAgICAgICBTdGVhZHkgU3RhdGUKKyAgICAg
ICAgICAgICAgICBBaXIgICAgICAgICAgNzAuNzQgbXMgwrEgNi41NSBtcyAgICAzNC43NCBtcyDC
sSAxLjY1IG1zICAgIDI5ODkuMDYgbXMgwrEgMzQuNDUgbXMKKyAgICAgICAgICAgICAgICBCYXNp
YyAgICAgICAgNDAuMDMgbXMgwrEgMS45NiBtcyAgICAyOC41MCBtcyDCsSAwLjYwIG1zICAgIDQz
NDIuOTEgbXMgwrEgNjQuMTAgbXMKKworICAgICAgICAgICAgUGF0Y2hlZDoKKyAgICAgICAgICAg
ICAgICBHZW9tZXRyaWMgTWVhbiBSZXN1bHQ6IDE2OC4xNCBtcyDCsSAxLjM5IG1zCisKKyAgICAg
ICAgICAgICAgICBCZW5jaG1hcmsgICAgRmlyc3QgSXRlcmF0aW9uICAgICAgIFdvcnN0IDIlICAg
ICAgICAgICAgICBTdGVhZHkgU3RhdGUKKyAgICAgICAgICAgICAgICBBaXIgICAgICAgICAgNjgu
NjcgbXMgwrEgMC44MiBtcyAgICAzNS42MiBtcyDCsSAwLjMyIG1zICAgIDMwNjUuODkgbXMgwrEg
NTUuNTkgbXMKKyAgICAgICAgICAgICAgICBCYXNpYyAgICAgICAgMzguNjEgbXMgwrEgMS42NSBt
cyAgICAyMy45NyBtcyDCsSAwLjM4IG1zICAgIDMyNjIuNDYgbXMgwrEgNzQuMTIgbXMKKworICAg
ICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYnVpbHRpbnMvR2VuZXJhdG9yUHJvdG90eXBl
LmpzOgorICAgICAgICAoZ2xvYmFsUHJpdmF0ZS5nZW5lcmF0b3JSZXN1bWUpOgorICAgICAgICAq
IGJ5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
QmFzaWNCbG9jazo6Y29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3NJbnRlcm5hbCk6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlQmFzaWNCbG9jazo6Y29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MpOgor
ICAgICAgICAoSlNDOjpsaW5rQmxvY2tzKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Y29tcHV0
ZUJ5dGVjb2RlQmFzaWNCbG9ja3MpOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVj
b2RlQmFzaWNCbG9jay5oOgorICAgICAgICAoSlNDOjpCeXRlY29kZUJhc2ljQmxvY2s6OmJ5dGVj
b2RlT2Zmc2V0cyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlQmFzaWNCbG9jazo6c3VjY2Vzc29y
cyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlQmFzaWNCbG9jazo6cHJlZGVjZXNzb3JzKToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVCYXNpY0Jsb2NrOjppbmRleCk6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlQmFzaWNCbG9jazo6YWRkU3VjY2Vzc29yKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVC
YXNpY0Jsb2NrOjphZGRQcmVkZWNlc3Nvcik6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVH
ZW5lcmF0b3JpZmljYXRpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5l
cmF0b3JpZmljYXRpb246OkJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uKToKKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb246OmlzTWVyZ2VCbG9jayk6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uOjppc1NhdmVCbG9jayk6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uOjpncmFwaCk6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uOjp5aWVsZHMpOgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUdlbmVyYXRvcmlmaWNhdGlvbjo6c3RvcmFnZUZvckdlbmVyYXRvckxvY2FsKToKKyAgICAgICAg
KEpTQzo6TGl2ZW5lc3NBbmFseXNpczo6TGl2ZW5lc3NBbmFseXNpcyk6CisgICAgICAgIChKU0M6
OkxpdmVuZXNzQW5hbHlzaXM6OmdlbmVyYXRvcmlmaWNhdGlvbik6CisgICAgICAgIChKU0M6Okxp
dmVuZXNzQW5hbHlzaXM6OnN0ZXBPdmVySW5zdHJ1Y3Rpb25Gb3JMaXZlbmVzcyk6CisgICAgICAg
IChKU0M6OkxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQnl0ZWNvZGVP
ZmZzZXQpOgorICAgICAgICAoSlNDOjpMaXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlTG9jYWxMaXZl
bmVzc0ZvckJsb2NrKToKKyAgICAgICAgKEpTQzo6TGl2ZW5lc3NBbmFseXNpczo6Z2V0TGl2ZW5l
c3NJbmZvQXRCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckxpdmVuZXNz
QW5hbHlzaXM6OkdlbmVyYXRvckxpdmVuZXNzQW5hbHlzaXMpOgorICAgICAgICAoSlNDOjpHZW5l
cmF0b3JMaXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlTGl2ZW5lc3NEZWZzRm9yQnl0ZWNvZGVPZmZz
ZXQpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JMaXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlTGl2
ZW5lc3NVc2VzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JMaXZl
bmVzc0FuYWx5c2lzOjpydW4pOgorICAgICAgICAoSlNDOjpTYXZlZFZhcmlhYmxlc0FuYWx5c2lz
OjpTYXZlZFZhcmlhYmxlc0FuYWx5c2lzKToKKyAgICAgICAgKEpTQzo6U2F2ZWRWYXJpYWJsZXNB
bmFseXNpczo6Z2VuZXJhdG9yaWZpY2F0aW9uKToKKyAgICAgICAgKEpTQzo6U2F2ZWRWYXJpYWJs
ZXNBbmFseXNpczo6c3RlcE92ZXJJbnN0cnVjdGlvbkZvclNhdmVkVmFyaWFibGVzKToKKyAgICAg
ICAgKEpTQzo6U2F2ZWRWYXJpYWJsZXNBbmFseXNpczo6Y29tcHV0ZUxvY2FsU2F2ZWRWYXJpYWJs
ZXNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OlNhdmVkVmFyaWFibGVzQW5hbHlz
aXM6OmNvbXB1dGVMb2NhbFNhdmVkVmFyaWFibGVzRm9yQmxvY2spOgorICAgICAgICAoSlNDOjpT
YXZlZFZhcmlhYmxlc0FuYWx5c2lzOjpnZXRTYXZlZFZhcmlhYmxlc0luZm9BdEJ5dGVjb2RlT2Zm
c2V0KToKKyAgICAgICAgKEpTQzo6U2F2ZWRWYXJpYWJsZXNBbmFseXNpczo6cnVuKToKKyAgICAg
ICAgKEpTQzo6UmVzdW1lZFZhcmlhYmxlc0FuYWx5c2lzOjpSZXN1bWVkVmFyaWFibGVzQW5hbHlz
aXMpOgorICAgICAgICAoSlNDOjpSZXN1bWVkVmFyaWFibGVzQW5hbHlzaXM6OmNvbXB1dGVMaXZl
bmVzc0RlZnNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OlJlc3VtZWRWYXJpYWJs
ZXNBbmFseXNpczo6Y29tcHV0ZUxpdmVuZXNzVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAg
ICAgKEpTQzo6UmVzdW1lZFZhcmlhYmxlc0FuYWx5c2lzOjpydW4pOgorICAgICAgICAoSlNDOjpC
eXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbjo6cnVuKToKKyAgICAgICAgKEpTQzo6cGVyZm9ybUdl
bmVyYXRvcmlmaWNhdGlvbik6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3Jp
ZmljYXRpb24uaDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGluZXMuaC4KKyAgICAgICAgKiBieXRlY29kZS9CeXRl
Y29kZUdyYXBoLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpCeXRlY29kZUdyYXBoOjpjb2RlQmxv
Y2spOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdyYXBoOjpiYXNpY0Jsb2Nrcyk6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlR3JhcGg6Omluc3RydWN0aW9ucyk6CisgICAgICAgIChKU0M6OkJ5dGVj
b2RlR3JhcGg6OmJhc2ljQmxvY2tzSW5SZXZlcnNlT3JkZXIpOgorICAgICAgICAoSlNDOjpCeXRl
Y29kZUdyYXBoOjpibG9ja0NvbnRhaW5zQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpC
eXRlY29kZUdyYXBoOjpmaW5kQmFzaWNCbG9ja0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHcmFwaDo6ZmluZEJhc2ljQmxvY2tXaXRoTGVhZGVyT2Zmc2V0KToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVHcmFwaDxCbG9jaz46OkJ5dGVjb2RlR3JhcGgpOgorICAgICAg
ICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHA6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzKToKKyAg
ICAgICAgKEpTQzo6c3RlcE92ZXJJbnN0cnVjdGlvbik6CisgICAgICAgIChKU0M6OmNvbXB1dGVM
b2NhbExpdmVuZXNzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpjb21wdXRlTG9j
YWxMaXZlbmVzc0ZvckJsb2NrKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5
c2lzOjpydW5MaXZlbmVzc0ZpeHBvaW50KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVz
c0FuYWx5c2lzOjpnZXRMaXZlbmVzc0luZm9BdEJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlRnVsbExpdmVuZXNzKToKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlS2lsbHMpOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmR1bXBSZXN1bHRzKToKKyAgICAgICAg
KEpTQzo6aXNWYWxpZFJlZ2lzdGVyRm9yTGl2ZW5lc3MpOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpnZXRMZWFkZXJPZmZzZXRGb3JCYXNpY0Jsb2NrKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
ZmluZEJhc2ljQmxvY2tXaXRoTGVhZGVyT2Zmc2V0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
YmxvY2tDb250YWluc0J5dGVjb2RlT2Zmc2V0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Zmlu
ZEJhc2ljQmxvY2tGb3JCeXRlY29kZU9mZnNldCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkJ5
dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0ZSk6IERlbGV0ZWQuCisgICAgICAgICogYnl0
ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmg6CisgICAgICAgICogYnl0ZWNvZGUvQnl0
ZWNvZGVMaXZlbmVzc0FuYWx5c2lzSW5saW5lcy5oOgorICAgICAgICAoSlNDOjppc1ZhbGlkUmVn
aXN0ZXJGb3JMaXZlbmVzcyk6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVNb2RpZmljYXRp
b25TZXQuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVNb2RpZmljYXRpb25TZXQ6
OmFkanVzdE9mZnNldCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlTW9kaWZpY2F0aW9uU2V0Ojph
cHBseU1vZGlmaWNhdGlvbik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlTW9kaWZpY2F0aW9uU2V0
OjpleGVjdXRlKToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZU1vZGlmaWNhdGlvblNldC5o
OiBBZGRlZC4KKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVNb2RpZmljYXRpb25TZXQ6OkJ5dGVjb2Rl
TW9kaWZpY2F0aW9uU2V0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVNb2RpZmljYXRpb25TZXQ6
Omluc2VydCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlTW9kaWZpY2F0aW9uU2V0OjpyZW1vdmVC
eXRlY29kZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlTW9kaWZpY2F0aW9uU2V0OjpncmFwaCk6
CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaDoKKyAgICAgICAgKEpTQzo6Y29t
cHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OmNvbXB1dGVEZWZzRm9y
Qnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAg
ICAgIChKU0M6OkNvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpDb2Rl
QmxvY2s6OmhhbmRsZXJGb3JJbmRleCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6dmFsdWVQ
cm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmxpdmVu
ZXNzQW5hbHlzaXNTbG93KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUp
OiBEZWxldGVkLgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnNocmlua1RvRml0KTogRGVsZXRl
ZC4KKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6Q29kZUJs
b2NrOjppc0NvbnN0YW50UmVnaXN0ZXJJbmRleCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6
bGl2ZW5lc3NBbmFseXNpcyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bGl2ZUNhbGxlZUxv
Y2Fsc0F0WWllbGQpOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2RlL0hhbmRsZXJJbmZvLmg6
CisgICAgICAgIChKU0M6OkhhbmRsZXJJbmZvQmFzZTo6aGFuZGxlckZvckluZGV4KToKKyAgICAg
ICAgKiBieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHMuY3BwOgorICAgICAgICAoSlNDOjpnZXRK
dW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZVByZWNp
c2VKdW1wVGFyZ2V0c0ludGVybmFsKToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZVByZWNpc2VKdW1w
VGFyZ2V0cyk6CisgICAgICAgIChKU0M6OnJlY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyk6Cisg
ICAgICAgIChKU0M6OmZpbmRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAg
KiBieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHMuaDoKKyAgICAgICAgKiBieXRlY29kZS9Vbmxp
bmtlZENvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjpoYW5k
bGVyRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6
aGFuZGxlckZvckluZGV4KToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OmFwcGx5
TW9kaWZpY2F0aW9uKToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oOgor
ICAgICAgICAoSlNDOjpVbmxpbmtlZFN0cmluZ0p1bXBUYWJsZTo6b2Zmc2V0Rm9yVmFsdWUpOgor
ICAgICAgICAqIGJ5dGVjb2RlL1ZpcnR1YWxSZWdpc3Rlci5oOgorICAgICAgICAqIGJ5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJh
dG9yOjpnZW5lcmF0ZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29k
ZUdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q29tcGxl
eFBvcFNjb3Blcyk6CisgICAgICAgIChKU0M6OnByZXBhcmVKdW1wVGFibGVGb3JTdHJpbmdTd2l0
Y2gpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFlpZWxkUG9pbnQpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFNhdmUpOgorICAgICAgICAoSlND
OjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlc3VtZSk6CisgICAgICAgICogYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpn
ZW5lcmF0b3JGcmFtZVJlZ2lzdGVyKToKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6
CisgICAgICAgICogZ2VuZXJhdGUtYnl0ZWNvZGUtZmlsZXM6CisgICAgICAgICogaW50ZXJwcmV0
ZXIvSW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlNDOjpmaW5kRXhjZXB0aW9uSGFuZGxlcik6
CisgICAgICAgIChKU0M6OkdldENhdGNoSGFuZGxlckZ1bmN0b3I6Om9wZXJhdG9yKCkpOgorICAg
ICAgICAoSlNDOjpVbndpbmRGdW5jdG9yOjpvcGVyYXRvcigpKToKKyAgICAgICAgKiBpbnRlcnBy
ZXRlci9JbnRlcnByZXRlci5oOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVySW5s
aW5lcy5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lz
ZUp1bXBUYXJnZXRzLmguCisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpnZXRPcGNvZGVJRCk6
CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBp
bGVNYWluUGFzcyk6IERlbGV0ZWQuCisgICAgICAgICogaml0L0pJVC5oOgorICAgICAgICAqIGpp
dC9KSVRPcGNvZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3NhdmUpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcmVzdW1lKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbToKKyAgICAgICAgKiBwYXJzZXIvUGFy
c2VyLmNwcDoKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlSW5uZXIpOgor
ICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VHZW5lcmF0b3JGdW5jdGlvblNv
dXJjZUVsZW1lbnRzKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OmNyZWF0ZUdl
bmVyYXRvclBhcmFtZXRlcnMpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuaDoKKyAgICAgICAg
KiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OlNMT1dfUEFUSF9E
RUNMKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5oOgorICAg
ICAgICAqIHJ1bnRpbWUvR2VuZXJhdG9yRnJhbWUuY3BwOiBSZW1vdmVkLgorICAgICAgICAoSlND
OjpHZW5lcmF0b3JGcmFtZTo6R2VuZXJhdG9yRnJhbWUpOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpHZW5lcmF0b3JGcmFtZTo6ZmluaXNoQ3JlYXRpb24pOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlU3RydWN0dXJlKTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6R2VuZXJhdG9yRnJhbWU6OmNyZWF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkdlbmVy
YXRvckZyYW1lOjpzYXZlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6
OnJlc3VtZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjp2aXNpdENo
aWxkcmVuKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0dlbmVyYXRvckZyYW1lLmg6IFJl
bW92ZWQuCisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpsb2NhbHMpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6bG9jYWxBdCk6IERlbGV0ZWQuCisgICAgICAg
IChKU0M6OkdlbmVyYXRvckZyYW1lOjpvZmZzZXRPZkxvY2Fscyk6IERlbGV0ZWQuCisgICAgICAg
IChKU0M6OkdlbmVyYXRvckZyYW1lOjphbGxvY2F0aW9uU2l6ZUZvckxvY2Fscyk6IERlbGV0ZWQu
CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpWTSk6IERlbGV0
ZWQuCisgICAgICAgICogcnVudGltZS9WTS5oOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9nZW5l
cmF0b3ItZmliLWZ0bC1hbmQtYXJyYXkuanM6IEFkZGVkLgorICAgICAgICAoZmliKToKKyAgICAg
ICAgKiB0ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwtYW5kLW9iamVjdC5qczogQWRkZWQu
CisgICAgICAgIChmaWIpOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0
bC1hbmQtc3RyaW5nLmpzOiBBZGRlZC4KKyAgICAgICAgKGZpYik6CisgICAgICAgICogdGVzdHMv
c3RyZXNzL2dlbmVyYXRvci1maWItZnRsLmpzOiBBZGRlZC4KKyAgICAgICAgKGZpYik6CisgICAg
ICAgICogdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1mcmFtZS1lbXB0eS5qczogQWRkZWQuCisgICAg
ICAgIChzaG91bGRUaHJvdyk6CisgICAgICAgIChzaG91bGRUaHJvdy5maWIpOgorICAgICAgICAq
IHRlc3RzL3N0cmVzcy9nZW5lcmF0b3ItcmVkdWNlZC1zYXZlLXBvaW50LXB1dC10by1zY29wZS5q
czogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgIChnZW4pOgorICAgICAgICAq
IHRlc3RzL3N0cmVzcy9nZW5lcmF0b3ItdHJhbnNmZXItcmVnaXN0ZXItYmV5b25kLW11dGlwbGUt
eWllbGRzLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKGdlbik6CisK
IDIwMTYtMDctMjAgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAKICAg
ICAgICAgW0VTN10gSW50cm9kdWNlIGV4cG9uZW50aWF0aW9uIGV4cHJlc3Npb24KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggMWMy
OWFkOGY5MDY3MjE3ZDA5YzFiNDQ3NWZiOGM4YmUxM2VjNjdlMy4uMTY4YjA4MmQwYWJmNTUyZDIw
Y2E5YzY5MDY2ZmYxNzkxZTY3N2Q1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxNi0wNy0yMSAg
WXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbREZHXVtG
VExdIEltcGxlbWVudCBFUzYgR2VuZXJhdG9ycyBpbiBERkcgLyBGVEwKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MjcyMworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBtb3ZlIGNvbnN0cnVjdG9yIGZv
ciBGYXN0Qml0VmVjdG9yLgorCisgICAgICAgICogd3RmL0Zhc3RCaXRWZWN0b3IuaDoKKyAgICAg
ICAgKFdURjo6RmFzdEJpdFZlY3Rvcjo6RmFzdEJpdFZlY3Rvcik6CisKIDIwMTYtMDctMjAgIFJh
amVldiBNaXNyYSAgPHJhamVldm1pc3JhZm9yYXBwbGVAZ21haWwuY29tPgogCiAgICAgICAgIFJl
bW92ZSB1bm5lY2Vzc2FyeSBpZiBjaGVjayBmcm9tIFBhcmtpbmdMb3QuY3BwCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggNmZlMGE1ZmUwY2NjZWFhNjhiZTA2MGIwN2YzY2Nm
YjdkOTU3M2E5Mi4uNjhiMjJhNzgyZjdmZDU1NmY4Zjg0MzU2YzdjMmQ1YWQ3MTliNGEwZSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTc5LDYgKzE3OSw4IEBAIHNldChK
YXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgYnl0ZWNvZGUvQXJyYXlBbGxvY2F0aW9uUHJvZmls
ZS5jcHAKICAgICBieXRlY29kZS9BcnJheVByb2ZpbGUuY3BwCiAgICAgYnl0ZWNvZGUvQnl0ZWNv
ZGVCYXNpY0Jsb2NrLmNwcAorICAgIGJ5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9u
LmNwcAorICAgIGJ5dGVjb2RlL0J5dGVjb2RlTW9kaWZpY2F0aW9uU2V0LmNwcAogICAgIGJ5dGVj
b2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuY3BwCiAgICAgYnl0ZWNvZGUvQnl0ZWNvZGVM
aXZlbmVzc0FuYWx5c2lzLmNwcAogICAgIGJ5dGVjb2RlL0NhbGxFZGdlLmNwcApAQCAtNjU3LDcg
KzY1OSw2IEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgcnVudGltZS9GdW5jdGlv
bkhhc0V4ZWN1dGVkQ2FjaGUuY3BwCiAgICAgcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAK
ICAgICBydW50aW1lL0Z1bmN0aW9uUmFyZURhdGEuY3BwCi0gICAgcnVudGltZS9HZW5lcmF0b3JG
cmFtZS5jcHAKICAgICBydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwCiAg
ICAgcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5jcHAKICAgICBydW50aW1lL0dl
bmVyYXRvclByb3RvdHlwZS5jcHAKQEAgLTk3Miw2ICs5NzMsMTAgQEAgYWRkX2N1c3RvbV9jb21t
YW5kKAogICAgIENPTU1BTkQgJHtQWVRIT05fRVhFQ1VUQUJMRX0gJHtKQVZBU0NSSVBUQ09SRV9E
SVJ9L2dlbmVyYXRlLWJ5dGVjb2RlLWZpbGVzIC0tYnl0ZWNvZGVzX2ggJHtERVJJVkVEX1NPVVJD
RVNfSkFWQVNDUklQVENPUkVfRElSfS9CeXRlY29kZXMuaCAtLWluaXRfYnl0ZWNvZGVzX2FzbSAk
e0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0luaXRCeXRlY29kZXMuYXNtICR7
SkFWQVNDUklQVENPUkVfRElSfS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgogICAgIFZFUkJB
VElNKQogCitsaXN0KEFQUEVORCBKYXZhU2NyaXB0Q29yZV9IRUFERVJTCisgICAgJHtERVJJVkVE
X1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9CeXRlY29kZXMuaAorKQorCiBhZGRfY3VzdG9t
X2NvbW1hbmQoCiAgICAgT1VUUFVUICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJ
Un0vTExJbnREZXNpcmVkT2Zmc2V0cy5oCiAgICAgTUFJTl9ERVBFTkRFTkNZICR7SkFWQVNDUklQ
VENPUkVfRElSfS9vZmZsaW5lYXNtL2dlbmVyYXRlX29mZnNldF9leHRyYWN0b3IucmIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNmI3NjY4ZDQwNGMzYzQwOTZkOTg0YjQ0ZGMxZjAw
ZGUzN2YzYTQ4Yy4uNTY5MDk2NTQ5Y2ZjMWQ4NzRkZDJmNjAwYTgzNzI5NDdjY2I2ZDc0ZCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEyNTAsOCArMTI1MCw2IEBACiAJCTcwOUZC
ODZDMUFFMzM1QzYwMDM5RDA2OSAvKiBXZWFrU2V0UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MDlGQjg2NjFBRTMzNUM2MDAzOUQwNjkg
LyogV2Vha1NldFByb3RvdHlwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTcwQjBBOUQxMUE5QjY2NDYwMDAxMzA2QSAvKiBSdW50aW1lRmxhZ3Mu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwQjBBOUQw
MUE5QjY2MjAwMDAxMzA2QSAvKiBSdW50aW1lRmxhZ3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MEI3OTE5MTFDMDI0QTEzMDAyNDgxRTIgLyog
U291cmNlQ29kZUtleS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNzBCNzkxOEUxQzAyNDRDOTAwMjQ4MUUyIC8qIFNvdXJjZUNvZGVLZXkuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk3MEI3OTE5MjFDMDI0
QTIzMDAyNDgxRTIgLyogR2VuZXJhdG9yRnJhbWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBCNzkxODMxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVy
YXRvckZyYW1lLmNwcCAqLzsgfTsKLQkJNzBCNzkxOTMxQzAyNEEyODAwMjQ4MUUyIC8qIEdlbmVy
YXRvckZyYW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3MEI3OTE4NDFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnJhbWUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MEI3OTE5NDFDMDI0QTI4
MDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEI3OTE4NTFDMDI0NDMyMDAyNDgx
RTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAgKi87IH07CiAJCTcwQjc5MTk1
MUMwMjRBMjgwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEI3OTE4NjFDMDI0NDMy
MDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcwQjc5MTk2MUMwMjRBMjgwMDI0
ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEI3OTE4NzFDMDI0NDMyMDAyNDgxRTIgLyog
R2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3BwICovOyB9OwpAQCAtMjAyNyw2ICsyMDI1LDEx
IEBACiAJCUUxOEUzQTU5MERGOTI3OEMwMEQ5MEIzNCAvKiBWTS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMThFM0E1NzBERjkyNzhDMDBEOTBCMzQg
LyogVk0uY3BwICovOyB9OwogCQlFMzE4Q0JDMDFCOEFFRjUxMDBBMjkyOUQgLyogSlNNb2R1bGVO
YW1lc3BhY2VPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTMxOENCQkUxQjhBRUY1MTAwQTI5MjlEIC8qIEpTTW9kdWxlTmFtZXNwYWNlT2Jq
ZWN0LmNwcCAqLzsgfTsKIAkJRTMxOENCQzExQjhBRUY1MTAwQTI5MjlEIC8qIEpTTW9kdWxlTmFt
ZXNwYWNlT2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFMzE4Q0JCRjFCOEFFRjUxMDBBMjkyOUQgLyogSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Qu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFMzI4
REFFNzFEMzhEMDA0MDAxQTI1MjkgLyogQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNEMjY0MjYxRDM4
QzA0MjAwMEJFMTc0IC8qIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcCAqLzsgfTsKKwkJ
RTMyOERBRTgxRDM4RDAwNTAwMUEyNTI5IC8qIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0QyNjQyNzFE
MzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFMzI4REFFOTFEMzhEMDA1
MDAxQTI1MjkgLyogQnl0ZWNvZGVHcmFwaC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTNEMjY0MjgxRDM4QzA0MjAwMEJFMTc0IC8qIEJ5dGVjb2RlR3Jh
cGguaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlF
MzI4REFFQTFEMzhEMDA1MDAxQTI1MjkgLyogQnl0ZWNvZGVNb2RpZmljYXRpb25TZXQuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNEMjY0MjkxRDM4
QzA0MjAwMEJFMTc0IC8qIEJ5dGVjb2RlTW9kaWZpY2F0aW9uU2V0LmNwcCAqLzsgfTsKKwkJRTMy
OERBRUIxRDM4RDAwNTAwMUEyNTI5IC8qIEJ5dGVjb2RlTW9kaWZpY2F0aW9uU2V0LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0QyNjQyQTFEMzhDMDQy
MDAwQkUxNzQgLyogQnl0ZWNvZGVNb2RpZmljYXRpb25TZXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzM2MzdBNTFCNjMyMjAyMDBFRTA4NDAg
LyogUmVmbGVjdE9iamVjdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFMzM2MzdBMzFCNjMyMjAyMDBFRTA4NDAgLyogUmVmbGVjdE9iamVjdC5jcHAg
Ki87IH07CiAJCUUzMzYzN0E2MUI2MzIyMDIwMEVFMDg0MCAvKiBSZWZsZWN0T2JqZWN0LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzM2MzdBNDFCNjMy
MjAyMDBFRTA4NDAgLyogUmVmbGVjdE9iamVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzM0IzRTI2MUI3QUJENzUwMDQ4REIyRSAvKiBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QubHV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzNCM0UyNTFCN0FCRDc1MDA0OERCMkUgLyogSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0Lmx1dC5oICovOyB9OwpAQCAtMjA1MSw2ICsyMDU0LDcg
QEAKIAkJRTM3OTRFNzUxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNzk0RTczMUI3N0VC
OTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFseXplci5jcHAgKi87IH07CiAJCUUzNzk0RTc2MUI3N0VC
OTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFseXplci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTM3OTRFNzQxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFu
YWx5emVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJRTM5NjNDRUUxQjczRjc1MDAwRUI0Q0U1IC8qIE5vZGVzQW5hbHl6ZU1vZHVsZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzk2M0NFQzFCNzNG
NzUwMDBFQjRDRTUgLyogTm9kZXNBbmFseXplTW9kdWxlLmNwcCAqLzsgfTsKKwkJRTM5RDQ1RjUx
RDM5MDA1NjAwQjNCMzc3IC8qIEludGVycHJldGVySW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5RDlEODQxRDM5MDAwNjAwNjY3MjgyIC8q
IEludGVycHJldGVySW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUUzOURBNEE2MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29y
ZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzlE
QTRBNDFCN0U4QjdDMDA4NEYzM0EgLyogSlNNb2R1bGVSZWNvcmQuY3BwICovOyB9OwogCQlFMzlE
QTRBNzFCN0U4QjdDMDA4NEYzM0EgLyogSlNNb2R1bGVSZWNvcmQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOURBNEE1MUI3RThCN0MwMDg0RjMzQSAv
KiBKU01vZHVsZVJlY29yZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUUzRDIzOUM4MUI4MjlDMUMwMEJCRUY2NyAvKiBKU01vZHVsZUVudmlyb25t
ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUz
RDIzOUM2MUI4MjlDMUMwMEJCRUY2NyAvKiBKU01vZHVsZUVudmlyb25tZW50LmNwcCAqLzsgfTsK
QEAgLTM0NDgsOCArMzQ1Miw2IEBACiAJCTcwOUZCODY1MUFFMzM1QzYwMDM5RDA2OSAvKiBXZWFr
U2V0UHJvdG90eXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdl
YWtTZXRQcm90b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MDlGQjg2
NjFBRTMzNUM2MDAzOUQwNjkgLyogV2Vha1NldFByb3RvdHlwZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXZWFrU2V0UHJvdG90eXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTcwQjBBOUQwMUE5QjY2MjAwMDAxMzA2QSAvKiBSdW50aW1lRmxhZ3MuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUnVudGltZUZsYWdzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTcwQjc5MTgzMUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JG
cmFtZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHZW5lcmF0b3JG
cmFtZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTcwQjc5MTg0MUMwMjQ0MzIw
MDI0ODFFMiAvKiBHZW5lcmF0b3JGcmFtZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBHZW5lcmF0b3JGcmFtZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MEI3
OTE4NTFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHZW5lcmF0b3JGdW5jdGlvbkNv
bnN0cnVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzBCNzkxODYxQzAy
NDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MEI3OTE4NzFDMDI0NDMyMDAyNDgxRTIgLyog
R2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtNDI5MiwxMCArNDI5NCwxNiBAQAogCQlFMzc5NEU3MzFCNzdFQjk3
MDA1NTQzQUUgLyogTW9kdWxlQW5hbHl6ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gTW9kdWxlQW5hbHl6ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlFMzc5NEU3NDFCNzdFQjk3MDA1NTQzQUUgLyogTW9kdWxlQW5hbHl6ZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW9kdWxlQW5hbHl6ZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRTM5NjNDRUMxQjczRjc1MDAwRUI0Q0U1IC8qIE5vZGVzQW5hbHl6
ZU1vZHVsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOb2Rlc0Fu
YWx5emVNb2R1bGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzlEOUQ4NDFE
MzkwMDA2MDA2NjcyODIgLyogSW50ZXJwcmV0ZXJJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEludGVycHJldGVySW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlFMzlEQTRBNDFCN0U4QjdDMDA4NEYzM0EgLyogSlNNb2R1bGVSZWNvcmQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNNb2R1bGVSZWNvcmQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzlEQTRBNTFCN0U4QjdDMDA4NEYzM0Eg
LyogSlNNb2R1bGVSZWNvcmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNN
b2R1bGVSZWNvcmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNEMjM5QzYxQjgy
OUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxlRW52aXJvbm1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSlNNb2R1bGVFbnZpcm9ubWVudC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUUzRDIzOUM3MUI4MjlDMUMwMEJCRUY2NyAvKiBKU01vZHVsZUVu
dmlyb25tZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTW9kdWxlRW52
aXJvbm1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTNEMjY0MjYxRDM4QzA0
MjAwMEJFMTc0IC8qIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTNEMjY0MjcxRDM4QzA0MjAwMEJFMTc0IC8q
IEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUUzRDI2NDI4MUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRlY29kZUdyYXBoLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJ5dGVjb2RlR3JhcGguaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTNEMjY0MjkxRDM4QzA0MjAwMEJFMTc0IC8qIEJ5dGVjb2Rl
TW9kaWZpY2F0aW9uU2V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEJ5dGVjb2RlTW9kaWZpY2F0aW9uU2V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJRTNEMjY0MkExRDM4QzA0MjAwMEJFMTc0IC8qIEJ5dGVjb2RlTW9kaWZpY2F0aW9uU2V0Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJ5dGVjb2RlTW9kaWZpY2F0aW9uU2V0
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzRUY4ODcyMUI2NkRGMjMwMDNGMjZD
QiAvKiBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlFM0VGODg3MzFCNjZERjIzMDAzRjI2Q0IgLyogSlNQcm9wZXJ0eU5hbWVJ
dGVyYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1Byb3BlcnR5TmFt
ZUl0ZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0OURDMTQ5MTJFRjI2
MUEwMDE4NEExRiAvKiBTb3VyY2VQcm92aWRlckNhY2hlSXRlbS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBTb3VyY2VQcm92aWRlckNhY2hlSXRlbS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtNTAxMSw2ICs1MDE5LDcgQEAKIAkJMTQyOUQ3N0EwRUQyMEQ3MzAw
Qjg5NjE5IC8qIGludGVycHJldGVyICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGls
ZHJlbiA9ICgKKwkJCQlFMzlEOUQ4NDFEMzkwMDA2MDA2NjcyODIgLyogSW50ZXJwcmV0ZXJJbmxp
bmVzLmggKi8sCiAJCQkJMEY1NUYwRjExNEQxMDYzNjAwQUM3NjQ5IC8qIEFic3RyYWN0UEMuY3Bw
ICovLAogCQkJCTBGNTVGMEYyMTREMTA2MzYwMEFDNzY0OSAvKiBBYnN0cmFjdFBDLmggKi8sCiAJ
CQkJMTQyOUQ4NUIwRUQyMThFOTAwQjg5NjE5IC8qIENMb29wU3RhY2suY3BwICovLApAQCAtNTY4
Miw4ICs1NjkxLDYgQEAKIAkJCQlGNjkyQTg1RDAyNTU1OTdEMDFGRjYwRjcgLyogRnVuY3Rpb25Q
cm90b3R5cGUuaCAqLywKIAkJCQk2MkQyRDM4RDFBREYxMDNGMDAwMjA2QzEgLyogRnVuY3Rpb25S
YXJlRGF0YS5jcHAgKi8sCiAJCQkJNjJEMkQzOEUxQURGMTAzRjAwMDIwNkMxIC8qIEZ1bmN0aW9u
UmFyZURhdGEuaCAqLywKLQkJCQk3MEI3OTE4MzFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9y
RnJhbWUuY3BwICovLAotCQkJCTcwQjc5MTg0MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JG
cmFtZS5oICovLAogCQkJCTcwQjc5MTg1MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5j
dGlvbkNvbnN0cnVjdG9yLmNwcCAqLywKIAkJCQk3MEI3OTE4NjFDMDI0NDMyMDAyNDgxRTIgLyog
R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5oICovLAogCQkJCTcwQjc5MTg3MUMwMjQ0MzIw
MDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5jcHAgKi8sCkBAIC02NTY1LDYg
KzY1NzIsMTEgQEAKIAkJOTY5QTA3OEYwRUQxRDNBRTAwRjFGNjgxIC8qIGJ5dGVjb2RlICovID0g
ewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlFM0QyNjQyNjFEMzhD
MDQyMDAwQkUxNzQgLyogQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwICovLAorCQkJCUUz
RDI2NDI3MUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5oICov
LAorCQkJCUUzRDI2NDI4MUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRlY29kZUdyYXBoLmggKi8sCisJ
CQkJRTNEMjY0MjkxRDM4QzA0MjAwMEJFMTc0IC8qIEJ5dGVjb2RlTW9kaWZpY2F0aW9uU2V0LmNw
cCAqLywKKwkJCQlFM0QyNjQyQTFEMzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNvZGVNb2RpZmljYXRp
b25TZXQuaCAqLywKIAkJCQk1MzcwQjRGMzFCRjI1RUEyMDA1QzQwRkMgLyogQWRhcHRpdmVJbmZl
cnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50QmFzZS5jcHAgKi8sCiAJCQkJNTM3MEI0RjQxQkYy
NUVBMjAwNUM0MEZDIC8qIEFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJh
c2UuaCAqLywKIAkJCQkwRjgzMzVCNDE2MzlDMUUzMDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9u
UHJvZmlsZS5jcHAgKi8sCkBAIC03MTE4LDYgKzcxMzAsNyBAQAogCQkJCTBGRUM4NTJEMUJEQUNE
QUMwMDgwRkY3NCAvKiBCM1Byb2NlZHVyZUlubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
RUM4NUJEMUJFMTQ2MkYwMDgwRkY3NCAvKiBCM1JlZHVjZVN0cmVuZ3RoLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRkVDODUzMTFCREFDREFDMDA4MEZGNzQgLyogQjNTdGFja21hcFNwZWNpYWwuaCBp
biBIZWFkZXJzICovLAorCQkJCUUzMjhEQUU4MUQzOEQwMDUwMDFBMjUyOSAvKiBCeXRlY29kZUdl
bmVyYXRvcmlmaWNhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQzg1MzUxQkRBQ0RBQzAw
ODBGRjc0IC8qIEIzU2xvdEJhc2VWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQzg1MzYx
QkRBQ0RBQzAwODBGRjc0IC8qIEIzU3VjY2Vzc29yQ29sbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEZFQzg1MzgxQkRBQ0RBQzAwODBGRjc0IC8qIEIzU3dpdGNoQ2FzZS5oIGluIEhlYWRl
cnMgKi8sCkBAIC03MzgwLDcgKzczOTMsNiBAQAogCQkJCUE3Mzc4MTBFMTc5OUVBMkUwMDgxNzUz
MyAvKiBERkdOYXR1cmFsTG9vcHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2RUNBM0VBMTMyREVG
MUMwMDJCMkFENyAvKiBERkdOb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkZCOTIxQjE2RDAy
RjAxMDA1NUE1REIgLyogREZHTm9kZUFsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNzBC
NzkxOTMxQzAyNEEyODAwMjQ4MUUyIC8qIEdlbmVyYXRvckZyYW1lLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRkE1ODFCQjE1MEU5NTMwMDBCOUEyRDkgLyogREZHTm9kZUZsYWdzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRjMwMEI3ODE4QUIwNTExMDBBNkQ3MkUgLyogREZHTm9kZU9yaWdpbi5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEZBNTgxQkMxNTBFOTUzMDAwQjlBMkQ5IC8qIERGR05vZGVUeXBl
LmggaW4gSGVhZGVycyAqLywKQEAgLTczOTUsNiArNzQwNyw3IEBACiAJCQkJMEZEOEEzMjYxN0Q1
MUY1NzAwQ0EyQzQwIC8qIERGR09TUkVudHJ5cG9pbnRDcmVhdGlvblBoYXNlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRkMwOTc2QTE0NjhBNkY3MDBDRjI0NDIgLyogREZHT1NSRXhpdC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEYyMzVCRUMxNzE3OEU3MzAwNjkwQzdGIC8qIERGR09TUkV4aXRCYXNl
LmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzlENDVGNTFEMzkwMDU2MDBCM0IzNzcgLyogSW50ZXJw
cmV0ZXJJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkZCOTIxQzE2RDAyRjExMDA1NUE1
REIgLyogREZHT1NSRXhpdENvbXBpbGF0aW9uSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZD
MDk3NzExNDY5M0FGNTAwQ0YyNDQyIC8qIERGR09TUkV4aXRDb21waWxlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEY3MDI1QUExNzE0QjBGQzAwMzgyQzBFIC8qIERGR09TUkV4aXRDb21waWxlckNv
bW1vbi5oIGluIEhlYWRlcnMgKi8sCkBAIC03NjU0LDYgKzc2NjcsNyBAQAogCQkJCUUzM0IzRTI2
MUI3QUJENzUwMDQ4REIyRSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QubHV0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBNTMyNDM4QzE4NTY4MzM1MDAyRUQ2OTIgLyogSW5zcGVjdG9y
UHJvdG9jb2xPYmplY3RzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTVEOTNBQzE4NTE0Rjc5MDA0
MDBERUQgLyogSW5zcGVjdG9yUHJvdG9jb2xUeXBlcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTMy
OERBRUIxRDM4RDAwNTAwMUEyNTI5IC8qIEJ5dGVjb2RlTW9kaWZpY2F0aW9uU2V0LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBNTBFNEI2MjE4ODA5REQ1MDA2OEE0NkQgLyogSW5zcGVjdG9yUnVudGlt
ZUFnZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTkzQ0Y4MzE4NDAzNzcxMDBCRkNFMjcgLyog
SW5zcGVjdG9yVmFsdWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NjlBMDc5OTBFRDFEM0FFMDBG
MUY2ODEgLyogSW5zdHJ1Y3Rpb24uaCBpbiBIZWFkZXJzICovLApAQCAtNzc4Miw2ICs3Nzk2LDcg
QEAKIAkJCQlFMzNGNTA4MTFCODQyOUE0MDA0MTM4NTYgLyogSlNJbnRlcm5hbFByb21pc2UuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGNjE4MzJBMUM0NUJGMDcwMDcyNDUwQiAvKiBBaXJDQ2FsbGlu
Z0NvbnZlbnRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUUzM0Y1MDc5MUI4NDIyNTcwMDQxMzg1
NiAvKiBKU0ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQlF
MzI4REFFOTFEMzhEMDA1MDAxQTI1MjkgLyogQnl0ZWNvZGVHcmFwaC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRTMzRjUwODcxQjg0NDlFRjAwNDEzODU2IC8qIEpTSW50ZXJuYWxQcm9taXNlQ29uc3Ry
dWN0b3IubHV0LmggaW4gSGVhZGVycyAqLywKIAkJCQlFMzNGNTA4NTFCODQzN0EwMDA0MTM4NTYg
LyogSlNJbnRlcm5hbFByb21pc2VEZWZlcnJlZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTMzRjUw
NzUxQjg0MjFDMDAwNDEzODU2IC8qIEpTSW50ZXJuYWxQcm9taXNlUHJvdG90eXBlLmggaW4gSGVh
ZGVycyAqLywKQEAgLTg3MjMsNiArODczOCw3IEBACiAJCQkJMTQ3RjM5QkQxMDdFQzM3NjAwNDI3
QTQ4IC8qIEFyZ0xpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY3NDNCQUExNkI4ODI0OTAw
OUY5Mjc3IC8qIEFSTTY0RGlzYXNzZW1ibGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2RDNC
MkMzMTAxNTZCREUwMDI4NjVFNyAvKiBBUk1Bc3NlbWJsZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJRTMyOERBRTcxRDM4RDAwNDAwMUEyNTI5IC8qIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9u
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTY1QzAyODUwMTcxNzk1RTIwMDM1MUUzNSAvKiBBUk12
N0Rpc2Fzc2VtYmxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2NUMwMjg1QzE3MTc5NjY4MDAz
NTFFMzUgLyogQVJNdjdET3Bjb2RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGODMzNUI3MTYz
OUMxRTYwMDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcCBpbiBTb3VyY2VzICov
LApAQCAtOTA1Nyw2ICs5MDczLDcgQEAKIAkJCQkwRjI1RjFCMTE4MTYzNUYzMDA1MjJGMzkgLyog
RlRMU2xvd1BhdGhDYWxsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMzM4REYxMUJFOTNBRDEw
MDEzQzg4RiAvKiBCM1N0YWNrbWFwVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyNUYx
QjMxODE2MzVGMzAwNTIyRjM5IC8qIEZUTFNsb3dQYXRoQ2FsbEtleS5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQlFMzI4REFFQTFEMzhEMDA1MDAxQTI1MjkgLyogQnl0ZWNvZGVNb2RpZmljYXRpb25T
ZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDMxOURBMDMxQzFCRTQwQTAwMUQyNjBCIC8qIEIz
TG93ZXJNYWNyb3NBZnRlck9wdGltaXphdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZF
QTBBMTYxNzA2QkI5MDAwQkI3MjJDIC8qIEZUTFN0YXRlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTBGMjM1QkUxMTcxNzhFMUMwMDY5MEM3RiAvKiBGVExUaHVua3MuY3BwIGluIFNvdXJjZXMgKi8s
CkBAIC05NDYwLDcgKzk0NzcsNiBAQAogCQkJCTc5RUUwQkZGMUI0QUZCODUwMDAzODVDOSAvKiBW
YXJpYWJsZUVudmlyb25tZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNkM3MzUwMUFDOUY5
OUYwMEJFMTY4MiAvKiBWYXJpYWJsZVdyaXRlRmlyZURldGFpbC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkwRkUwNTAyQzFBQTkwOTU2MDBEMzNCMzMgLyogVmFyT2Zmc2V0LmNwcCBpbiBTb3VyY2Vz
ICovLAotCQkJCTcwQjc5MTkyMUMwMjRBMjMwMDI0ODFFMiAvKiBHZW5lcmF0b3JGcmFtZS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkwRjIwQzI1OTFBODAxM0FCMDBEQTMyMjkgLyogVmlydHVhbFJl
Z2lzdGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxOEUzQTU5MERGOTI3OEMwMEQ5MEIzNCAv
KiBWTS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRTU5MzJBNzE4M0M1QTI2MDBBMUVDQ0MgLyog
Vk1FbnRyeVNjb3BlLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J1aWx0aW5zL0dlbmVyYXRvclByb3RvdHlwZS5qcyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9idWlsdGlucy9HZW5lcmF0b3JQcm90b3R5cGUuanMKaW5kZXggM2MxNDA2ODdkZmM3
ZTAwZWZlOTFhZTgwYjJhYzY3NmZhOWJmNDhmNC4uNDk5ZGJkMzkyZTgzMTNkY2RkODZlYzhjMTYw
NTY5ZDdkNmY1NDliMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5z
L0dlbmVyYXRvclByb3RvdHlwZS5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRp
bnMvR2VuZXJhdG9yUHJvdG90eXBlLmpzCkBAIC01MSw3ICs1MSw3IEBAIGZ1bmN0aW9uIGdlbmVy
YXRvclJlc3VtZShnZW5lcmF0b3IsIHNlbnRWYWx1ZSwgcmVzdW1lTW9kZSkKICAgICB9IGVsc2Ug
ewogICAgICAgICB0cnkgewogICAgICAgICAgICAgZ2VuZXJhdG9yLkBnZW5lcmF0b3JTdGF0ZSA9
IEBHZW5lcmF0b3JTdGF0ZUV4ZWN1dGluZzsKLSAgICAgICAgICAgIHZhbHVlID0gZ2VuZXJhdG9y
LkBnZW5lcmF0b3JOZXh0LkBjYWxsKGdlbmVyYXRvci5AZ2VuZXJhdG9yVGhpcywgZ2VuZXJhdG9y
LCBzdGF0ZSwgc2VudFZhbHVlLCByZXN1bWVNb2RlKTsKKyAgICAgICAgICAgIHZhbHVlID0gZ2Vu
ZXJhdG9yLkBnZW5lcmF0b3JOZXh0LkBjYWxsKGdlbmVyYXRvci5AZ2VuZXJhdG9yVGhpcywgZ2Vu
ZXJhdG9yLCBzdGF0ZSwgc2VudFZhbHVlLCByZXN1bWVNb2RlLCBnZW5lcmF0b3IuQGdlbmVyYXRv
ckZyYW1lKTsKICAgICAgICAgICAgIGlmIChnZW5lcmF0b3IuQGdlbmVyYXRvclN0YXRlID09PSBA
R2VuZXJhdG9yU3RhdGVFeGVjdXRpbmcpIHsKICAgICAgICAgICAgICAgICBnZW5lcmF0b3IuQGdl
bmVyYXRvclN0YXRlID0gQEdlbmVyYXRvclN0YXRlQ29tcGxldGVkOwogICAgICAgICAgICAgICAg
IGRvbmUgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlQmFzaWNCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Qnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcAppbmRleCA3ZjE3YzBlZjEwYjQzM2ZhYzhmNThjYjNiOWNh
NWQ0ZDAxNWJiYTA4Li42MjU0ZjkwNmIyYmQ5MDRkMWQ5M2ZhOTAyNGNjOTNhOTA3NDY4YjVmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Js
b2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVCYXNp
Y0Jsb2NrLmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkJ5dGVjb2RlQmFzaWNCbG9j
ay5oIgogCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiSW50ZXJwcmV0ZXJJbmxp
bmVzLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIlByZWNpc2VKdW1wVGFy
Z2V0cy5oIgogCkBAIC0xMDUsMTUgKzEwNiwyMSBAQCBzdGF0aWMgYm9vbCBpc0p1bXBUYXJnZXQo
T3Bjb2RlSUQgb3Bjb2RlSUQsIGNvbnN0IFZlY3Rvcjx1bnNpZ25lZCwgMzI+JiBqdW1wVGFyZwog
ICAgIHJldHVybiBzdGQ6OmJpbmFyeV9zZWFyY2goanVtcFRhcmdldHMuYmVnaW4oKSwganVtcFRh
cmdldHMuZW5kKCksIGJ5dGVjb2RlT2Zmc2V0KTsKIH0KIAotc3RhdGljIHZvaWQgbGlua0Jsb2Nr
cyhCeXRlY29kZUJhc2ljQmxvY2sqIHByZWRlY2Vzc29yLCBCeXRlY29kZUJhc2ljQmxvY2sqIHN1
Y2Nlc3NvcikKLXsKLSAgICBwcmVkZWNlc3Nvci0+YWRkU3VjY2Vzc29yKHN1Y2Nlc3Nvcik7Ci19
Ci0KLXZvaWQgY29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MoQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mIGJhc2ljQmxvY2tz
KQordGVtcGxhdGU8dHlwZW5hbWUgQmxvY2ssIHR5cGVuYW1lIEluc3RydWN0aW9uPgordm9pZCBC
eXRlY29kZUJhc2ljQmxvY2s6OmNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzSW50ZXJuYWwoQmxv
Y2sqIGNvZGVCbG9jaywgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBp
bnN0cnVjdGlvbkNvdW50LCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9j
az4+JiBiYXNpY0Jsb2NrcykKIHsKICAgICBWZWN0b3I8dW5zaWduZWQsIDMyPiBqdW1wVGFyZ2V0
czsKLSAgICBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKGNvZGVCbG9jaywganVtcFRhcmdldHMp
OworICAgIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMoY29kZUJsb2NrLCBpbnN0cnVjdGlvbnNC
ZWdpbiwgaW5zdHJ1Y3Rpb25Db3VudCwganVtcFRhcmdldHMpOworCisgICAgYXV0byBhcHBlbmRC
bG9jayA9IFsmXSAoc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4mJiBibG9jaykg
eworICAgICAgICBibG9jay0+bV9pbmRleCA9IGJhc2ljQmxvY2tzLnNpemUoKTsKKyAgICAgICAg
YmFzaWNCbG9ja3MuYXBwZW5kKFdURk1vdmUoYmxvY2spKTsKKyAgICB9OworCisgICAgYXV0byBs
aW5rQmxvY2tzID0gWyZdIChCeXRlY29kZUJhc2ljQmxvY2sqIHByZWRlY2Vzc29yLCBCeXRlY29k
ZUJhc2ljQmxvY2sqIHN1Y2Nlc3NvcikgeworICAgICAgICBwcmVkZWNlc3Nvci0+YWRkU3VjY2Vz
c29yKHN1Y2Nlc3Nvcik7CisgICAgICAgIHN1Y2Nlc3Nvci0+YWRkUHJlZGVjZXNzb3IocHJlZGVj
ZXNzb3IpOworICAgIH07CiAKICAgICAvLyBDcmVhdGUgdGhlIGVudHJ5IGFuZCBleGl0IGJhc2lj
IGJsb2Nrcy4KICAgICBiYXNpY0Jsb2Nrcy5yZXNlcnZlQ2FwYWNpdHkoanVtcFRhcmdldHMuc2l6
ZSgpICsgMik7CkBAIC0xMjIsMTkgKzEyOSwxNyBAQCB2b2lkIGNvbXB1dGVCeXRlY29kZUJhc2lj
QmxvY2tzKENvZGVCbG9jayogY29kZUJsb2NrLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dAog
ICAgIGF1dG8gZmlyc3RCbG9jayA9IHN0ZDo6bWFrZV91bmlxdWU8Qnl0ZWNvZGVCYXNpY0Jsb2Nr
PigwLCAwKTsKICAgICBsaW5rQmxvY2tzKGVudHJ5LmdldCgpLCBmaXJzdEJsb2NrLmdldCgpKTsK
IAotICAgIGJhc2ljQmxvY2tzLmFwcGVuZChXVEZNb3ZlKGVudHJ5KSk7CisgICAgYXBwZW5kQmxv
Y2soV1RGTW92ZShlbnRyeSkpOwogICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogY3VycmVudCA9IGZp
cnN0QmxvY2suZ2V0KCk7Ci0gICAgYmFzaWNCbG9ja3MuYXBwZW5kKFdURk1vdmUoZmlyc3RCbG9j
aykpOworICAgIGFwcGVuZEJsb2NrKFdURk1vdmUoZmlyc3RCbG9jaykpOwogCiAgICAgYXV0byBl
eGl0ID0gc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZUJhc2ljQmxvY2s+KEJ5dGVjb2RlQmFzaWNC
bG9jazo6RXhpdEJsb2NrKTsKIAogICAgIGJvb2wgbmV4dEluc3RydWN0aW9uSXNMZWFkZXIgPSBm
YWxzZTsKIAogICAgIEludGVycHJldGVyKiBpbnRlcnByZXRlciA9IGNvZGVCbG9jay0+dm0oKS0+
aW50ZXJwcmV0ZXI7Ci0gICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luID0gY29kZUJs
b2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpOwotICAgIHVuc2lnbmVkIGluc3RydWN0aW9uQ291
bnQgPSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLnNpemUoKTsKICAgICBmb3IgKHVuc2lnbmVk
IGJ5dGVjb2RlT2Zmc2V0ID0gMDsgYnl0ZWNvZGVPZmZzZXQgPCBpbnN0cnVjdGlvbkNvdW50Oykg
ewotICAgICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGludGVycHJldGVyLT5nZXRPcGNvZGVJRChp
bnN0cnVjdGlvbnNCZWdpbltieXRlY29kZU9mZnNldF0udS5vcGNvZGUpOworICAgICAgICBPcGNv
ZGVJRCBvcGNvZGVJRCA9IGludGVycHJldGVyLT5nZXRPcGNvZGVJRChpbnN0cnVjdGlvbnNCZWdp
bltieXRlY29kZU9mZnNldF0pOwogICAgICAgICB1bnNpZ25lZCBvcGNvZGVMZW5ndGggPSBvcGNv
ZGVMZW5ndGhzW29wY29kZUlEXTsKIAogICAgICAgICBib29sIGNyZWF0ZWRCbG9jayA9IGZhbHNl
OwpAQCAtMTQyLDcgKzE0Nyw3IEBAIHZvaWQgY29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MoQ29k
ZUJsb2NrKiBjb2RlQmxvY2ssIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0CiAgICAgICAgIGlm
IChpc0p1bXBUYXJnZXQob3Bjb2RlSUQsIGp1bXBUYXJnZXRzLCBieXRlY29kZU9mZnNldCkgfHwg
bmV4dEluc3RydWN0aW9uSXNMZWFkZXIpIHsKICAgICAgICAgICAgIGF1dG8gbmV3QmxvY2sgPSBz
dGQ6Om1ha2VfdW5pcXVlPEJ5dGVjb2RlQmFzaWNCbG9jaz4oYnl0ZWNvZGVPZmZzZXQsIG9wY29k
ZUxlbmd0aCk7CiAgICAgICAgICAgICBjdXJyZW50ID0gbmV3QmxvY2suZ2V0KCk7Ci0gICAgICAg
ICAgICBiYXNpY0Jsb2Nrcy5hcHBlbmQoV1RGTW92ZShuZXdCbG9jaykpOworICAgICAgICAgICAg
YXBwZW5kQmxvY2soV1RGTW92ZShuZXdCbG9jaykpOwogICAgICAgICAgICAgY3JlYXRlZEJsb2Nr
ID0gdHJ1ZTsKICAgICAgICAgICAgIG5leHRJbnN0cnVjdGlvbklzTGVhZGVyID0gZmFsc2U7CiAg
ICAgICAgICAgICBieXRlY29kZU9mZnNldCArPSBvcGNvZGVMZW5ndGg7CkBAIC0xNjksOCArMTc0
LDcgQEAgdm9pZCBjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2NrcyhDb2RlQmxvY2sqIGNvZGVCbG9j
aywgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXQKIAogICAgICAgICBib29sIGZhbGxzVGhyb3Vn
aCA9IHRydWU7IAogICAgICAgICBmb3IgKHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0ID0gYmxvY2st
PmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCk7IGJ5dGVjb2RlT2Zmc2V0IDwgYmxvY2stPmxlYWRlckJ5
dGVjb2RlT2Zmc2V0KCkgKyBibG9jay0+dG90YWxCeXRlY29kZUxlbmd0aCgpOykgewotICAgICAg
ICAgICAgY29uc3QgSW5zdHJ1Y3Rpb24mIGN1cnJlbnRJbnN0cnVjdGlvbiA9IGluc3RydWN0aW9u
c0JlZ2luW2J5dGVjb2RlT2Zmc2V0XTsKLSAgICAgICAgICAgIE9wY29kZUlEIG9wY29kZUlEID0g
aW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGN1cnJlbnRJbnN0cnVjdGlvbi51Lm9wY29kZSk7Cisg
ICAgICAgICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGludGVycHJldGVyLT5nZXRPcGNvZGVJRChp
bnN0cnVjdGlvbnNCZWdpbltieXRlY29kZU9mZnNldF0pOwogICAgICAgICAgICAgdW5zaWduZWQg
b3Bjb2RlTGVuZ3RoID0gb3Bjb2RlTGVuZ3Roc1tvcGNvZGVJRF07CiAgICAgICAgICAgICAvLyBJ
ZiB3ZSBmb3VuZCBhIHRlcm1pbmFsIGJ5dGVjb2RlLCBsaW5rIHRvIHRoZSBleGl0IGJsb2NrLgog
ICAgICAgICAgICAgaWYgKGlzVGVybWluYWwob3Bjb2RlSUQpKSB7CkBAIC0xODUsNyArMTg5LDcg
QEAgdm9pZCBjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2NrcyhDb2RlQmxvY2sqIGNvZGVCbG9jaywg
VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXQKICAgICAgICAgICAgIC8vIGJsb2NrIGJlY2F1c2Ug
dGhlIGZpbmFsbHkgYmxvY2sgd2lsbCBjcmVhdGUgaXRzIG93biBjYXRjaCwgd2hpY2ggd2lsbCBn
ZW5lcmF0ZSBhIEhhbmRsZXJJbmZvLgogICAgICAgICAgICAgaWYgKGlzVGhyb3cob3Bjb2RlSUQp
KSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKGJ5dGVjb2RlT2Zmc2V0ICsgb3Bjb2RlTGVuZ3Ro
ID09IGJsb2NrLT5sZWFkZXJCeXRlY29kZU9mZnNldCgpICsgYmxvY2stPnRvdGFsQnl0ZWNvZGVM
ZW5ndGgoKSk7Ci0gICAgICAgICAgICAgICAgSGFuZGxlckluZm8qIGhhbmRsZXIgPSBjb2RlQmxv
Y2stPmhhbmRsZXJGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCk7CisgICAgICAgICAg
ICAgICAgYXV0byogaGFuZGxlciA9IGNvZGVCbG9jay0+aGFuZGxlckZvckJ5dGVjb2RlT2Zmc2V0
KGJ5dGVjb2RlT2Zmc2V0KTsKICAgICAgICAgICAgICAgICBmYWxsc1Rocm91Z2ggPSBmYWxzZTsK
ICAgICAgICAgICAgICAgICBpZiAoIWhhbmRsZXIpIHsKICAgICAgICAgICAgICAgICAgICAgbGlu
a0Jsb2NrcyhibG9jaywgZXhpdC5nZXQoKSk7CkBAIC0yMDUsNyArMjA5LDcgQEAgdm9pZCBjb21w
dXRlQnl0ZWNvZGVCYXNpY0Jsb2NrcyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgVmVjdG9yPHN0ZDo6
dW5pcXVlX3B0cjxCeXQKICAgICAgICAgICAgIGlmIChpc0JyYW5jaChvcGNvZGVJRCkpIHsKICAg
ICAgICAgICAgICAgICBBU1NFUlQoYnl0ZWNvZGVPZmZzZXQgKyBvcGNvZGVMZW5ndGggPT0gYmxv
Y2stPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCkgKyBibG9jay0+dG90YWxCeXRlY29kZUxlbmd0aCgp
KTsKICAgICAgICAgICAgICAgICBWZWN0b3I8dW5zaWduZWQsIDE+IGJ5dGVjb2RlT2Zmc2V0c0p1
bXBlZFRvOwotICAgICAgICAgICAgICAgIGZpbmRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0
KGNvZGVCbG9jaywgYnl0ZWNvZGVPZmZzZXQsIGJ5dGVjb2RlT2Zmc2V0c0p1bXBlZFRvKTsKKyAg
ICAgICAgICAgICAgICBmaW5kSnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChjb2RlQmxvY2ss
IGluc3RydWN0aW9uc0JlZ2luLCBieXRlY29kZU9mZnNldCwgYnl0ZWNvZGVPZmZzZXRzSnVtcGVk
VG8pOwogCiAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGJhc2ljQmxv
Y2tzLnNpemUoKTsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9j
ayogb3RoZXJCbG9jayA9IGJhc2ljQmxvY2tzW2ldLmdldCgpOwpAQCAtMjI5LDEwICsyMzMsMjAg
QEAgdm9pZCBjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2NrcyhDb2RlQmxvY2sqIGNvZGVCbG9jaywg
VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXQKICAgICAgICAgfQogICAgIH0KIAotICAgIGJhc2lj
QmxvY2tzLmFwcGVuZChXVEZNb3ZlKGV4aXQpKTsKKyAgICBhcHBlbmRCbG9jayhXVEZNb3ZlKGV4
aXQpKTsKICAgICAKICAgICBmb3IgKGF1dG8mIGJhc2ljQmxvY2sgOiBiYXNpY0Jsb2NrcykKICAg
ICAgICAgYmFzaWNCbG9jay0+c2hyaW5rVG9GaXQoKTsKIH0KIAordm9pZCBCeXRlY29kZUJhc2lj
QmxvY2s6OmNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzKENvZGVCbG9jayogY29kZUJsb2NrLCBJ
bnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQs
IFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mIGJhc2ljQmxvY2tz
KQoreworICAgIGNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzSW50ZXJuYWwoY29kZUJsb2NrLCBp
bnN0cnVjdGlvbnNCZWdpbiwgaW5zdHJ1Y3Rpb25Db3VudCwgYmFzaWNCbG9ja3MpOworfQorCit2
b2lkIEJ5dGVjb2RlQmFzaWNCbG9jazo6Y29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MoVW5saW5r
ZWRDb2RlQmxvY2sqIGNvZGVCbG9jaywgVW5saW5rZWRJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25z
QmVnaW4sIHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQsIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8
Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mIGJhc2ljQmxvY2tzKQoreworICAgIEJ5dGVjb2RlQmFzaWNC
bG9jazo6Y29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3NJbnRlcm5hbChjb2RlQmxvY2ssIGluc3Ry
dWN0aW9uc0JlZ2luLCBpbnN0cnVjdGlvbkNvdW50LCBiYXNpY0Jsb2Nrcyk7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlQmFzaWNCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlQmFzaWNCbG9jay5oCmluZGV4IGJkN2QzYWU5YmEzNDNlMWIwNzE3OWU5OGYxZWU4OWRh
NjViYTdlMjAuLjExOWJlN2M2NjIzMGM5OGVhOWQ3ZmIyODA4Y2JmMjk0ZGMxYTJhNzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2su
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2Nr
LmgKQEAgLTM1LDYgKzM1LDkgQEAKIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBDb2RlQmxvY2s7
CitjbGFzcyBVbmxpbmtlZENvZGVCbG9jazsKK3N0cnVjdCBJbnN0cnVjdGlvbjsKK3N0cnVjdCBV
bmxpbmtlZEluc3RydWN0aW9uOwogCiBjbGFzcyBCeXRlY29kZUJhc2ljQmxvY2sgewogICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtNTAsMjggKzUzLDM5IEBAIGNsYXNzIEJ5dGVjb2Rl
QmFzaWNCbG9jayB7CiAgICAgdW5zaWduZWQgbGVhZGVyQnl0ZWNvZGVPZmZzZXQoKSB7IHJldHVy
biBtX2xlYWRlckJ5dGVjb2RlT2Zmc2V0OyB9CiAgICAgdW5zaWduZWQgdG90YWxCeXRlY29kZUxl
bmd0aCgpIHsgcmV0dXJuIG1fdG90YWxCeXRlY29kZUxlbmd0aDsgfQogCi0gICAgVmVjdG9yPHVu
c2lnbmVkPiYgYnl0ZWNvZGVPZmZzZXRzKCkgeyByZXR1cm4gbV9ieXRlY29kZU9mZnNldHM7IH0K
LSAgICB2b2lkIGFkZEJ5dGVjb2RlTGVuZ3RoKHVuc2lnbmVkKTsKKyAgICBjb25zdCBWZWN0b3I8
dW5zaWduZWQ+JiBieXRlY29kZU9mZnNldHMoKSBjb25zdCB7IHJldHVybiBtX2J5dGVjb2RlT2Zm
c2V0czsgfQogCi0gICAgVmVjdG9yPEJ5dGVjb2RlQmFzaWNCbG9jayo+JiBzdWNjZXNzb3JzKCkg
eyByZXR1cm4gbV9zdWNjZXNzb3JzOyB9Ci0gICAgdm9pZCBhZGRTdWNjZXNzb3IoQnl0ZWNvZGVC
YXNpY0Jsb2NrKiBibG9jaykgeyBtX3N1Y2Nlc3NvcnMuYXBwZW5kKGJsb2NrKTsgfQorICAgIGNv
bnN0IFZlY3RvcjxCeXRlY29kZUJhc2ljQmxvY2sqPiYgc3VjY2Vzc29ycygpIGNvbnN0IHsgcmV0
dXJuIG1fc3VjY2Vzc29yczsgfQorICAgIGNvbnN0IFZlY3RvcjxCeXRlY29kZUJhc2ljQmxvY2sq
PiYgcHJlZGVjZXNzb3JzKCkgY29uc3QgeyByZXR1cm4gbV9wcmVkZWNlc3NvcnM7IH0KIAogICAg
IEZhc3RCaXRWZWN0b3ImIGluKCkgeyByZXR1cm4gbV9pbjsgfQogICAgIEZhc3RCaXRWZWN0b3Im
IG91dCgpIHsgcmV0dXJuIG1fb3V0OyB9CiAKKyAgICB1bnNpZ25lZCBpbmRleCgpIGNvbnN0IHsg
cmV0dXJuIG1faW5kZXg7IH0KKworICAgIHN0YXRpYyB2b2lkIGNvbXB1dGVCeXRlY29kZUJhc2lj
QmxvY2tzKENvZGVCbG9jayosIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWdu
ZWQgaW5zdHJ1Y3Rpb25Db3VudCwgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2lj
QmxvY2s+PiYpOworICAgIHN0YXRpYyB2b2lkIGNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzKFVu
bGlua2VkQ29kZUJsb2NrKiwgVW5saW5rZWRJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4s
IHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQsIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNv
ZGVCYXNpY0Jsb2NrPj4mKTsKKwogcHJpdmF0ZToKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBCbG9j
aywgdHlwZW5hbWUgSW5zdHJ1Y3Rpb24+IHN0YXRpYyB2b2lkIGNvbXB1dGVCeXRlY29kZUJhc2lj
QmxvY2tzSW50ZXJuYWwoQmxvY2sqIGNvZGVCbG9jaywgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9u
c0JlZ2luLCB1bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50LCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRy
PEJ5dGVjb2RlQmFzaWNCbG9jaz4+JiBiYXNpY0Jsb2Nrcyk7CisKKyAgICB2b2lkIGFkZFN1Y2Nl
c3NvcihCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrKSB7IG1fc3VjY2Vzc29ycy5hcHBlbmQoYmxv
Y2spOyB9CisgICAgdm9pZCBhZGRQcmVkZWNlc3NvcihCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2Nr
KSB7IG1fcHJlZGVjZXNzb3JzLmFwcGVuZChibG9jayk7IH0KKworICAgIHZvaWQgYWRkQnl0ZWNv
ZGVMZW5ndGgodW5zaWduZWQpOworCiAgICAgdW5zaWduZWQgbV9sZWFkZXJCeXRlY29kZU9mZnNl
dDsKICAgICB1bnNpZ25lZCBtX3RvdGFsQnl0ZWNvZGVMZW5ndGg7CisgICAgdW5zaWduZWQgbV9p
bmRleDsKIAogICAgIFZlY3Rvcjx1bnNpZ25lZD4gbV9ieXRlY29kZU9mZnNldHM7CiAgICAgVmVj
dG9yPEJ5dGVjb2RlQmFzaWNCbG9jayo+IG1fc3VjY2Vzc29yczsKKyAgICBWZWN0b3I8Qnl0ZWNv
ZGVCYXNpY0Jsb2NrKj4gbV9wcmVkZWNlc3NvcnM7CiAKICAgICBGYXN0Qml0VmVjdG9yIG1faW47
CiAgICAgRmFzdEJpdFZlY3RvciBtX291dDsKIH07CiAKLXZvaWQgY29tcHV0ZUJ5dGVjb2RlQmFz
aWNCbG9ja3MoQ29kZUJsb2NrKiwgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2lj
QmxvY2s+PiYpOwotCiBpbmxpbmUgQnl0ZWNvZGVCYXNpY0Jsb2NrOjpCeXRlY29kZUJhc2ljQmxv
Y2sodW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGxlbmd0aCkKICAgICA6IG1fbGVhZGVyQnl0ZWNv
ZGVPZmZzZXQoc3RhcnQpCiAgICAgLCBtX3RvdGFsQnl0ZWNvZGVMZW5ndGgobGVuZ3RoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9y
aWZpY2F0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUdl
bmVyYXRvcmlmaWNhdGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWUxNDZlMjg3NDk4NDRhMjhhNDEwYjE3
YmVmMDdmYmZjN2IzZTY4ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHAKQEAgLTAsMCArMSw3NDIg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFA
Z21haWwuY29tPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQnl0
ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uaCIKKworI2luY2x1ZGUgIkJ5dGVjb2RlTGl2ZW5lc3NB
bmFseXNpc0lubGluZXMuaCIKKyNpbmNsdWRlICJCeXRlY29kZU1vZGlmaWNhdGlvblNldC5oIgor
I2luY2x1ZGUgIkJ5dGVjb2RlVXNlRGVmLmgiCisjaW5jbHVkZSAiSWRlbnRpZmllcklubGluZXMu
aCIKKyNpbmNsdWRlICJJbnRlcnByZXRlci5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVz
LmgiCisjaW5jbHVkZSAiU3Ryb25nSW5saW5lcy5oIgorI2luY2x1ZGUgIlVubGlua2VkQ29kZUJs
b2NrLmgiCisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitz
dHJ1Y3QgWWllbGREYXRhIHsKKyAgICBzaXplX3Qgc2F2ZVBvaW50OworICAgIHNpemVfdCBtZXJn
ZVBvaW50OworICAgIHNpemVfdCByZXN1bWVQb2ludDsKKyAgICBGYXN0Qml0VmVjdG9yIGxpdmVu
ZXNzOworICAgIEZhc3RCaXRWZWN0b3IgcmVzdW1lZDsKKyAgICBGYXN0Qml0VmVjdG9yIHNhdmVk
OworfTsKKworY2xhc3MgQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24geworcHVibGljOgorICAg
IHR5cGVkZWYgVmVjdG9yPFlpZWxkRGF0YT4gWWllbGRzOworCisgICAgQnl0ZWNvZGVHZW5lcmF0
b3JpZmljYXRpb24oVW5saW5rZWRDb2RlQmxvY2sqIGNvZGVCbG9jaywgVW5saW5rZWRDb2RlQmxv
Y2s6OlVucGFja2VkSW5zdHJ1Y3Rpb25zJiBpbnN0cnVjdGlvbnMsIFN5bWJvbFRhYmxlKiBnZW5l
cmF0b3JGcmFtZVN5bWJvbFRhYmxlLCBpbnQgZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZUluZGV4
KQorICAgICAgICA6IG1fZ3JhcGgoY29kZUJsb2NrLCBpbnN0cnVjdGlvbnMpCisgICAgICAgICwg
bV9pbnNlcnRpb25TZXQobV9ncmFwaCkKKyAgICAgICAgLCBtX2dlbmVyYXRvckZyYW1lU3ltYm9s
VGFibGUoKmNvZGVCbG9jay0+dm0oKSwgZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZSkKKyAgICAg
ICAgLCBtX2dlbmVyYXRvckZyYW1lU3ltYm9sVGFibGVJbmRleChnZW5lcmF0b3JGcmFtZVN5bWJv
bFRhYmxlSW5kZXgpCisgICAgeworICAgICAgICBtX21lcmdlQmxvY2tzLnJlc2l6ZShtX2dyYXBo
LmJhc2ljQmxvY2tzKCkuc2l6ZSgpKTsKKyAgICAgICAgbV9zYXZlQmxvY2tzLnJlc2l6ZShtX2dy
YXBoLmJhc2ljQmxvY2tzKCkuc2l6ZSgpKTsKKworICAgICAgICBmb3IgKHN0ZDo6dW5pcXVlX3B0
cjxCeXRlY29kZUJhc2ljQmxvY2s+JiBibG9jayA6IG1fZ3JhcGguYmFzaWNCbG9ja3MoKSkgewor
ICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBieXRlY29kZU9mZnNldCA6IGJsb2NrLT5ieXRlY29k
ZU9mZnNldHMoKSkgeworICAgICAgICAgICAgICAgIGNvbnN0IFVubGlua2VkSW5zdHJ1Y3Rpb24q
IHBjID0gJm1fZ3JhcGguaW5zdHJ1Y3Rpb25zKClbYnl0ZWNvZGVPZmZzZXRdOworICAgICAgICAg
ICAgICAgIHN3aXRjaCAocGMtPnUub3Bjb2RlKSB7CisgICAgICAgICAgICAgICAgY2FzZSBvcF9z
YXZlOiB7CisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRl
eCA9IHBjWzJdLnUuaW5kZXg7CisgICAgICAgICAgICAgICAgICAgIGludCBvZmZzZXQgPSBwY1sz
XS51Lm9wZXJhbmQ7CisgICAgICAgICAgICAgICAgICAgIGlmIChsaXZlQ2FsbGVlTG9jYWxzSW5k
ZXggPj0gbV95aWVsZHMuc2l6ZSgpKQorICAgICAgICAgICAgICAgICAgICAgICAgbV95aWVsZHMu
cmVzaXplKGxpdmVDYWxsZWVMb2NhbHNJbmRleCArIDEpOworICAgICAgICAgICAgICAgICAgICBt
X3lpZWxkc1tsaXZlQ2FsbGVlTG9jYWxzSW5kZXhdLnNhdmVQb2ludCA9IGJ5dGVjb2RlT2Zmc2V0
OworICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBtZXJnZVBvaW50ID0gYnl0ZWNvZGVPZmZz
ZXQgKyBvZmZzZXQ7CisgICAgICAgICAgICAgICAgICAgIG1feWllbGRzW2xpdmVDYWxsZWVMb2Nh
bHNJbmRleF0ubWVyZ2VQb2ludCA9IG1lcmdlUG9pbnQ7CisgICAgICAgICAgICAgICAgICAgIG1f
bWVyZ2VCbG9ja3Muc2V0KG1fZ3JhcGguZmluZEJhc2ljQmxvY2tGb3JCeXRlY29kZU9mZnNldCht
ZXJnZVBvaW50KS0+aW5kZXgoKSk7CisgICAgICAgICAgICAgICAgICAgIG1fc2F2ZUJsb2Nrcy5z
ZXQoYmxvY2stPmluZGV4KCkpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBjYXNlIG9wX3Jlc3VtZTogeworICAgICAgICAg
ICAgICAgICAgICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSBwY1syXS51LmluZGV4
OworICAgICAgICAgICAgICAgICAgICBpZiAobGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID49IG1feWll
bGRzLnNpemUoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIG1feWllbGRzLnJlc2l6ZShsaXZl
Q2FsbGVlTG9jYWxzSW5kZXggKyAxKTsKKyAgICAgICAgICAgICAgICAgICAgbV95aWVsZHNbbGl2
ZUNhbGxlZUxvY2Fsc0luZGV4XS5yZXN1bWVQb2ludCA9IGJ5dGVjb2RlT2Zmc2V0OworICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAg
ICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBib29sIGlzTWVyZ2VCbG9j
ayhCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fbWVy
Z2VCbG9ja3MuZ2V0KGJsb2NrLT5pbmRleCgpKTsKKyAgICB9CisKKyAgICBib29sIGlzU2F2ZUJs
b2NrKEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2spCisgICAgeworICAgICAgICByZXR1cm4gbV9z
YXZlQmxvY2tzLmdldChibG9jay0+aW5kZXgoKSk7CisgICAgfQorCisgICAgc3RydWN0IFN0b3Jh
Z2UgeworICAgICAgICBJZGVudGlmaWVyIGlkZW50aWZpZXI7CisgICAgICAgIHVuc2lnbmVkIGlk
ZW50aWZpZXJJbmRleDsKKyAgICAgICAgU2NvcGVPZmZzZXQgc2NvcGVPZmZzZXQ7CisgICAgfTsK
KworICAgIHZvaWQgcnVuKCk7CisKKyAgICBCeXRlY29kZUdyYXBoPFVubGlua2VkQ29kZUJsb2Nr
PiYgZ3JhcGgoKSB7IHJldHVybiBtX2dyYXBoOyB9CisKKyAgICBjb25zdCBZaWVsZHMmIHlpZWxk
cygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV95aWVsZHM7CisgICAgfQorCisgICAg
WWllbGRzJiB5aWVsZHMoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1feWllbGRzOworICAgIH0K
KworcHJpdmF0ZToKKyAgICBTdG9yYWdlIHN0b3JhZ2VGb3JHZW5lcmF0b3JMb2NhbCh1bnNpZ25l
ZCBpbmRleCkKKyAgICB7CisgICAgICAgIC8vIFdlIGFzc2lnbiBhIHN5bWJvbCB0byBhIHJlZ2lz
dGVyLiBUaGVyZSBpcyBvbmUtb24tb25lIGNvcnJlc3BvbmRpbmcgYmV0d2VlbiBhIHJlZ2lzdGVy
IGFuZCBhIHN5bWJvbC4KKyAgICAgICAgLy8gQnkgZG9pbmcgc28sIHdlIGFsbG9jYXRlIHRoZSBz
cGVjaWZpYyBzdG9yYWdlIHRvIHNhdmUgdGhlIGdpdmVuIHJlZ2lzdGVyLgorICAgICAgICAvLyBU
aGlzIGFsbG93IHVzIG5vdCB0byBzYXZlIGFsbCB0aGUgbGl2ZSByZWdpc3RlcnMgZXZlbiBpZiB0
aGUgcmVnaXN0ZXJzIGFyZSBub3Qgb3ZlcndyaXR0ZW4gZnJvbSB0aGUgcHJldmlvdXMgcmVzdW1p
bmcgdGltZS4KKyAgICAgICAgLy8gSXQgbWVhbnMgdGhhdCwgdGhlIHJlZ2lzdGVyIGNhbiBiZSBy
ZXRyaWV2ZWQgZXZlbiBpZiB0aGUgaW1tZWRpYXRlIHByZXZpb3VzIG9wX3NhdmUgZG9lcyBub3Qg
c2F2ZSBpdC4KKworICAgICAgICBpZiAobV9zdG9yYWdlcy5zaXplKCkgPD0gaW5kZXgpCisgICAg
ICAgICAgICBtX3N0b3JhZ2VzLnJlc2l6ZShpbmRleCArIDEpOworICAgICAgICBpZiAoT3B0aW9u
YWw8U3RvcmFnZT4gc3RvcmFnZSA9IG1fc3RvcmFnZXNbaW5kZXhdKQorICAgICAgICAgICAgcmV0
dXJuICpzdG9yYWdlOworCisgICAgICAgIFVubGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBt
X2dyYXBoLmNvZGVCbG9jaygpOworICAgICAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIgPSBJZGVu
dGlmaWVyOjpmcm9tVWlkKFByaXZhdGVOYW1lKCkpOworICAgICAgICB1bnNpZ25lZCBpZGVudGlm
aWVySW5kZXggPSBjb2RlQmxvY2stPm51bWJlck9mSWRlbnRpZmllcnMoKTsKKyAgICAgICAgY29k
ZUJsb2NrLT5hZGRJZGVudGlmaWVyKGlkZW50aWZpZXIpOworICAgICAgICBTY29wZU9mZnNldCBz
Y29wZU9mZnNldCA9IG1fZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZS0+dGFrZU5leHRTY29wZU9m
ZnNldChOb0xvY2tpbmdOZWNlc3NhcnkpOworICAgICAgICBtX2dlbmVyYXRvckZyYW1lU3ltYm9s
VGFibGUtPnNldChOb0xvY2tpbmdOZWNlc3NhcnksIGlkZW50aWZpZXIuaW1wbCgpLCBTeW1ib2xU
YWJsZUVudHJ5KFZhck9mZnNldChzY29wZU9mZnNldCkpKTsKKworICAgICAgICBTdG9yYWdlIHN0
b3JhZ2UgPSB7CisgICAgICAgICAgICBpZGVudGlmaWVyLAorICAgICAgICAgICAgaWRlbnRpZmll
ckluZGV4LAorICAgICAgICAgICAgc2NvcGVPZmZzZXQKKyAgICAgICAgfTsKKyAgICAgICAgbV9z
dG9yYWdlc1tpbmRleF0gPSBzdG9yYWdlOworICAgICAgICByZXR1cm4gc3RvcmFnZTsKKyAgICB9
CisKKyAgICBCeXRlY29kZUdyYXBoPFVubGlua2VkQ29kZUJsb2NrPiBtX2dyYXBoOworICAgIEJ5
dGVjb2RlTW9kaWZpY2F0aW9uU2V0IG1faW5zZXJ0aW9uU2V0OworICAgIFZlY3RvcjxPcHRpb25h
bDxTdG9yYWdlPj4gbV9zdG9yYWdlczsKKyAgICBZaWVsZHMgbV95aWVsZHM7CisgICAgRmFzdEJp
dFZlY3RvciBtX21lcmdlQmxvY2tzOworICAgIEZhc3RCaXRWZWN0b3IgbV9zYXZlQmxvY2tzOwor
ICAgIFN0cm9uZzxTeW1ib2xUYWJsZT4gbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlOworICAg
IGludCBtX2dlbmVyYXRvckZyYW1lU3ltYm9sVGFibGVJbmRleDsKK307CisKK3RlbXBsYXRlPGNs
YXNzIERlcml2ZWRBbmFseXNpcz4KK2NsYXNzIExpdmVuZXNzQW5hbHlzaXMgeworcHVibGljOgor
ICAgIExpdmVuZXNzQW5hbHlzaXMoQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24mIGdlbmVyYXRv
cmlmaWNhdGlvbikKKyAgICAgICAgOiBtX2dlbmVyYXRvcmlmaWNhdGlvbihnZW5lcmF0b3JpZmlj
YXRpb24pCisgICAgeworICAgIH0KKworICAgIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uJiBn
ZW5lcmF0b3JpZmljYXRpb24oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZ2VuZXJhdG9yaWZp
Y2F0aW9uOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEluc3RydWN0aW9uRnVuY3Rv
cj4KKyAgICB2b2lkIHN0ZXBPdmVySW5zdHJ1Y3Rpb25Gb3JMaXZlbmVzcyh1bnNpZ25lZCBieXRl
Y29kZU9mZnNldCwgRmFzdEJpdFZlY3RvciYgb3V0LCBJbnN0cnVjdGlvbkZ1bmN0b3IgaW5zdHJ1
Y3Rpb25GdW5jdG9yKQorICAgIHsKKyAgICAgICAgQnl0ZWNvZGVHcmFwaDxVbmxpbmtlZENvZGVC
bG9jaz4mIGdyYXBoID0gZ2VuZXJhdG9yaWZpY2F0aW9uKCkuZ3JhcGgoKTsKKyAgICAgICAgYXV0
byYgaW5zdHJ1Y3Rpb25zID0gZ3JhcGguaW5zdHJ1Y3Rpb25zKCk7CisgICAgICAgIFVubGlua2Vk
SW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uID0gJmluc3RydWN0aW9uc1tieXRlY29kZU9mZnNldF07
CisgICAgICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW5zdHJ1Y3Rpb24tPnUub3Bjb2RlOworCisg
ICAgICAgIGluc3RydWN0aW9uRnVuY3RvcihieXRlY29kZU9mZnNldCwgb3Bjb2RlSUQsIGluc3Ry
dWN0aW9uLCBvdXQpOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEluc3RydWN0aW9u
RnVuY3Rvcj4KKyAgICB2b2lkIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQnl0ZWNvZGVPZmZzZXQo
Qnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaywgdW5zaWduZWQgdGFyZ2V0T2Zmc2V0LCBGYXN0Qml0
VmVjdG9yJiByZXN1bHQsIEluc3RydWN0aW9uRnVuY3RvciBpbnN0cnVjdGlvbkZ1bmN0b3IpCisg
ICAgeworICAgICAgICBBU1NFUlQoIWJsb2NrLT5pc0V4aXRCbG9jaygpKTsKKyAgICAgICAgQVNT
RVJUKCFibG9jay0+aXNFbnRyeUJsb2NrKCkpOworCisgICAgICAgIEZhc3RCaXRWZWN0b3Igb3V0
ID0gYmxvY2stPm91dCgpOworCisgICAgICAgIGZvciAoaW50IGkgPSBibG9jay0+Ynl0ZWNvZGVP
ZmZzZXRzKCkuc2l6ZSgpIC0gMTsgaSA+PSAwOyBpLS0pIHsKKyAgICAgICAgICAgIHVuc2lnbmVk
IGJ5dGVjb2RlT2Zmc2V0ID0gYmxvY2stPmJ5dGVjb2RlT2Zmc2V0cygpW2ldOworICAgICAgICAg
ICAgaWYgKHRhcmdldE9mZnNldCA+IGJ5dGVjb2RlT2Zmc2V0KQorICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgc3RlcE92ZXJJbnN0cnVjdGlvbkZvckxpdmVuZXNzKGJ5dGVjb2Rl
T2Zmc2V0LCBvdXQsIGluc3RydWN0aW9uRnVuY3Rvcik7CisgICAgICAgIH0KKworICAgICAgICBy
ZXN1bHQuc2V0KG91dCk7CisgICAgfQorCisgICAgdm9pZCBjb21wdXRlTG9jYWxMaXZlbmVzc0Zv
ckJ5dGVjb2RlT2Zmc2V0KEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2ssIHVuc2lnbmVkIHRhcmdl
dE9mZnNldCwgRmFzdEJpdFZlY3RvciYgcmVzdWx0KQorICAgIHsKKyAgICAgICAgY29tcHV0ZUxv
Y2FsTGl2ZW5lc3NGb3JCeXRlY29kZU9mZnNldChibG9jaywgdGFyZ2V0T2Zmc2V0LCByZXN1bHQs
IFsmXSAodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIE9wY29kZUlEIG9wY29kZUlELCBVbmxpbmtl
ZEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgRmFzdEJpdFZlY3RvciYgb3V0KSB7CisgICAgICAg
ICAgICAvLyBUaGlzIGlzIHRoZSB1c2UgZnVuY3Rvciwgc28gd2Ugc2V0IHRoZSBiaXQuCisgICAg
ICAgICAgICBhdXRvIHVzZSA9IFsmXSAodW5zaWduZWQgYml0SW5kZXgpIHsKKyAgICAgICAgICAg
ICAgICBvdXQuc2V0KGJpdEluZGV4KTsKKyAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgIC8v
IFRoaXMgaXMgdGhlIGRlZiBmdW5jdG9yLCBzbyB3ZSBjbGVhciB0aGUgYml0LgorICAgICAgICAg
ICAgYXV0byBkZWYgPSBbJl0gKHVuc2lnbmVkIGJpdEluZGV4KSB7CisgICAgICAgICAgICAgICAg
b3V0LmNsZWFyKGJpdEluZGV4KTsKKyAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgIEJ5dGVj
b2RlR3JhcGg8VW5saW5rZWRDb2RlQmxvY2s+JiBncmFwaCA9IGdlbmVyYXRvcmlmaWNhdGlvbigp
LmdyYXBoKCk7CisgICAgICAgICAgICBVbmxpbmtlZENvZGVCbG9jayogY29kZUJsb2NrID0gZ3Jh
cGguY29kZUJsb2NrKCk7CisKKyAgICAgICAgICAgIHN0YXRpY19jYXN0PERlcml2ZWRBbmFseXNp
cyo+KHRoaXMpLT5jb21wdXRlTGl2ZW5lc3NEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoCisgICAgICAg
ICAgICAgICAgY29kZUJsb2NrLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb24sIG91dCwKKyAgICAgICAg
ICAgICAgICBbJl0gKFVubGlua2VkQ29kZUJsb2NrKiwgVW5saW5rZWRJbnN0cnVjdGlvbiosIE9w
Y29kZUlELCBpbnQgb3BlcmFuZCkgeworICAgICAgICAgICAgICAgICAgICBpZiAoaXNWYWxpZFJl
Z2lzdGVyRm9yTGl2ZW5lc3Mob3BlcmFuZCkpCisgICAgICAgICAgICAgICAgICAgICAgICBkZWYo
VmlydHVhbFJlZ2lzdGVyKG9wZXJhbmQpLnRvTG9jYWwoKSk7CisgICAgICAgICAgICAgICAgfSk7
CisKKyAgICAgICAgICAgIHN0YXRpY19jYXN0PERlcml2ZWRBbmFseXNpcyo+KHRoaXMpLT5jb21w
dXRlTGl2ZW5lc3NVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoCisgICAgICAgICAgICAgICAgY29kZUJs
b2NrLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb24sIG91dCwKKyAgICAgICAgICAgICAgICBbJl0gKFVu
bGlua2VkQ29kZUJsb2NrKiwgVW5saW5rZWRJbnN0cnVjdGlvbiosIE9wY29kZUlELCBpbnQgb3Bl
cmFuZCkgeworICAgICAgICAgICAgICAgICAgICBpZiAoaXNWYWxpZFJlZ2lzdGVyRm9yTGl2ZW5l
c3Mob3BlcmFuZCkpCisgICAgICAgICAgICAgICAgICAgICAgICB1c2UoVmlydHVhbFJlZ2lzdGVy
KG9wZXJhbmQpLnRvTG9jYWwoKSk7CisgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAg
IC8vIElmIHdlIGhhdmUgYW4gZXhjZXB0aW9uIGhhbmRsZXIsIHdlIHdhbnQgdGhlIGxpdmUtaW4g
dmFyaWFibGVzIG9mIHRoZQorICAgICAgICAgICAgLy8gZXhjZXB0aW9uIGhhbmRsZXIgYmxvY2sg
dG8gYmUgaW5jbHVkZWQgaW4gdGhlIGxpdmUtaW4gb2YgdGhpcyBwYXJ0aWN1bGFyIGJ5dGVjb2Rl
LgorICAgICAgICAgICAgaWYgKFVubGlua2VkSGFuZGxlckluZm8qIGhhbmRsZXIgPSBjb2RlQmxv
Y2stPmhhbmRsZXJGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCkpIHsKKyAgICAgICAg
ICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGhhbmRsZXJCbG9jayA9IGdyYXBoLmZpbmRCYXNp
Y0Jsb2NrV2l0aExlYWRlck9mZnNldChoYW5kbGVyLT50YXJnZXQpOworICAgICAgICAgICAgICAg
IEFTU0VSVChoYW5kbGVyQmxvY2spOworICAgICAgICAgICAgICAgIGhhbmRsZXJCbG9jay0+aW4o
KS5mb3JFYWNoU2V0Qml0KHVzZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0pOworICAgIH0K
KworICAgIHZvaWQgY29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCbG9jayhCeXRlY29kZUJhc2ljQmxv
Y2sqIGJsb2NrKQorICAgIHsKKyAgICAgICAgaWYgKGJsb2NrLT5pc0V4aXRCbG9jaygpIHx8IGJs
b2NrLT5pc0VudHJ5QmxvY2soKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgY29tcHV0
ZUxvY2FsTGl2ZW5lc3NGb3JCeXRlY29kZU9mZnNldChibG9jaywgYmxvY2stPmxlYWRlckJ5dGVj
b2RlT2Zmc2V0KCksIGJsb2NrLT5pbigpKTsKKyAgICB9CisKKyAgICBGYXN0Qml0VmVjdG9yIGdl
dExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpCisg
ICAgeworICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrID0gZ2VuZXJhdG9yaWZpY2F0
aW9uKCkuZ3JhcGgoKS5maW5kQmFzaWNCbG9ja0ZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zm
c2V0KTsKKyAgICAgICAgQVNTRVJUKGJsb2NrKTsKKyAgICAgICAgQVNTRVJUKCFibG9jay0+aXNF
bnRyeUJsb2NrKCkpOworICAgICAgICBBU1NFUlQoIWJsb2NrLT5pc0V4aXRCbG9jaygpKTsKKyAg
ICAgICAgRmFzdEJpdFZlY3RvciBvdXQ7CisgICAgICAgIG91dC5yZXNpemUoYmxvY2stPm91dCgp
Lm51bUJpdHMoKSk7CisgICAgICAgIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQnl0ZWNvZGVPZmZz
ZXQoYmxvY2ssIGJ5dGVjb2RlT2Zmc2V0LCBvdXQpOworICAgICAgICByZXR1cm4gb3V0OworICAg
IH0KKworcHJvdGVjdGVkOgorICAgIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uJiBtX2dlbmVy
YXRvcmlmaWNhdGlvbjsKK307CisKK2NsYXNzIEdlbmVyYXRvckxpdmVuZXNzQW5hbHlzaXMgOiBw
dWJsaWMgTGl2ZW5lc3NBbmFseXNpczxHZW5lcmF0b3JMaXZlbmVzc0FuYWx5c2lzPiB7CitwdWJs
aWM6CisgICAgR2VuZXJhdG9yTGl2ZW5lc3NBbmFseXNpcyhCeXRlY29kZUdlbmVyYXRvcmlmaWNh
dGlvbiYgZ2VuZXJhdG9yaWZpY2F0aW9uKQorICAgICAgICA6IExpdmVuZXNzQW5hbHlzaXMoZ2Vu
ZXJhdG9yaWZpY2F0aW9uKQorICAgIHsKKyAgICB9CisKKyAgICAvLyBTcGVjaWFsaXplZCBpbnN0
cnVjdGlvbiBoYW5kbGVycy4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgorICAgIHZv
aWQgY29tcHV0ZUxpdmVuZXNzRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KFVubGlua2VkQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIE9wY29kZUlEIG9wY29kZUlELCBVbmxpbmtlZEluc3RydWN0aW9uKiBpbnN0
cnVjdGlvbiwgRmFzdEJpdFZlY3RvciYgb3V0LCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQorICAg
IHsKKyAgICAgICAgY29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChjb2RlQmxvY2ssIG9wY29k
ZUlELCBpbnN0cnVjdGlvbiwgZnVuY3Rvcik7CisKKyAgICAgICAgc3dpdGNoIChvcGNvZGVJRCkg
eworICAgICAgICBjYXNlIG9wX3NhdmU6CisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAg
Y2FzZSBvcF9yZXN1bWU6IHsKKyAgICAgICAgICAgIC8vIHJlc3VtZSBkZWZpbmVzIGFsbCB0aGUg
cmVnaXN0ZXJzLgorICAgICAgICAgICAgb3V0LmNsZWFyQWxsKCk7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KKyAgICB2
b2lkIGNvbXB1dGVMaXZlbmVzc1VzZXNGb3JCeXRlY29kZU9mZnNldChVbmxpbmtlZENvZGVCbG9j
ayogY29kZUJsb2NrLCBPcGNvZGVJRCBvcGNvZGVJRCwgVW5saW5rZWRJbnN0cnVjdGlvbiogaW5z
dHJ1Y3Rpb24sIEZhc3RCaXRWZWN0b3ImLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQorICAgIHsK
KyAgICAgICAgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldChjb2RlQmxvY2ssIG9wY29kZUlE
LCBpbnN0cnVjdGlvbiwgZnVuY3Rvcik7CisKKyAgICAgICAgc3dpdGNoIChvcGNvZGVJRCkgewor
ICAgICAgICBjYXNlIG9wX3NhdmU6CisgICAgICAgIGNhc2Ugb3BfcmVzdW1lOiB7CisgICAgICAg
ICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBpbnN0cnVjdGlv
blsxXS51Lm9wZXJhbmQpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKworICAg
IHZvaWQgcnVuKCkKKyAgICB7CisgICAgICAgIC8vIFBlcmZvcm0gbW9kaWZpZWQgbGl2ZW5lc3Mg
YW5hbHlzaXMgdG8gZGV0ZXJtaW5lIHdoaWNoIGxvY2FscyBhcmUgbGl2ZSBhdCB0aGUgbWVyZ2Ug
cG9pbnRzLgorICAgICAgICAvLyBUaGlzIHByb2R1Y2VzIHRoZSBjb25zZXJ2YXRpdmUgcmVzdWx0
cyBmb3IgdGhlIHF1ZXN0aW9uLCAid2hpY2ggdmFyaWFibGVzIHNob3VsZCBiZSBzYXZlZCBhbmQg
cmVzdW1lZD8iLgorCisgICAgICAgIEJ5dGVjb2RlR3JhcGg8VW5saW5rZWRDb2RlQmxvY2s+JiBn
cmFwaCA9IGdlbmVyYXRvcmlmaWNhdGlvbigpLmdyYXBoKCk7CisgICAgICAgIFVubGlua2VkQ29k
ZUJsb2NrKiBjb2RlQmxvY2sgPSBncmFwaC5jb2RlQmxvY2soKTsKKyAgICAgICAgdW5zaWduZWQg
bnVtYmVyT2ZWYXJpYWJsZXMgPSBjb2RlQmxvY2stPm1fbnVtQ2FsbGVlTG9jYWxzOworICAgICAg
ICBmb3IgKHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+JiBibG9jayA6IGdyYXBo
LmJhc2ljQmxvY2tzKCkpIHsKKyAgICAgICAgICAgIGJsb2NrLT5pbigpLnJlc2l6ZShudW1iZXJP
ZlZhcmlhYmxlcyk7CisgICAgICAgICAgICBibG9jay0+b3V0KCkucmVzaXplKG51bWJlck9mVmFy
aWFibGVzKTsKKyAgICAgICAgICAgIGJsb2NrLT5pbigpLmNsZWFyQWxsKCk7CisgICAgICAgICAg
ICBibG9jay0+b3V0KCkuY2xlYXJBbGwoKTsKKyAgICAgICAgfQorCisgICAgICAgIGJvb2wgY2hh
bmdlZDsKKyAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBsYXN0QmxvY2sgPSBncmFwaC5iYXNp
Y0Jsb2NrcygpLmxhc3QoKS5nZXQoKTsKKyAgICAgICAgbGFzdEJsb2NrLT5pbigpLmNsZWFyQWxs
KCk7CisgICAgICAgIGxhc3RCbG9jay0+b3V0KCkuY2xlYXJBbGwoKTsKKyAgICAgICAgRmFzdEJp
dFZlY3RvciBuZXdPdXQ7CisgICAgICAgIG5ld091dC5yZXNpemUobGFzdEJsb2NrLT5vdXQoKS5u
dW1CaXRzKCkpOworICAgICAgICBkbyB7CisgICAgICAgICAgICBjaGFuZ2VkID0gZmFsc2U7Cisg
ICAgICAgICAgICBmb3IgKHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+JiBibG9j
ayA6IGdyYXBoLmJhc2ljQmxvY2tzSW5SZXZlcnNlT3JkZXIoKSkgeworICAgICAgICAgICAgICAg
IG5ld091dC5jbGVhckFsbCgpOworICAgICAgICAgICAgICAgIGZvciAoQnl0ZWNvZGVCYXNpY0Js
b2NrKiBzdWNjZXNzb3IgOiBibG9jay0+c3VjY2Vzc29ycygpKQorICAgICAgICAgICAgICAgICAg
ICBuZXdPdXQubWVyZ2Uoc3VjY2Vzc29yLT5pbigpKTsKKyAgICAgICAgICAgICAgICBib29sIG91
dERpZENoYW5nZSA9IGJsb2NrLT5vdXQoKS5zZXRBbmRDaGVjayhuZXdPdXQpOworICAgICAgICAg
ICAgICAgIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQmxvY2soYmxvY2suZ2V0KCkpOworICAgICAg
ICAgICAgICAgIGNoYW5nZWQgfD0gb3V0RGlkQ2hhbmdlOworICAgICAgICAgICAgfQorICAgICAg
ICB9IHdoaWxlIChjaGFuZ2VkKTsKKworICAgICAgICBmb3IgKFlpZWxkRGF0YSYgZGF0YSA6IGdl
bmVyYXRvcmlmaWNhdGlvbigpLnlpZWxkcygpKQorICAgICAgICAgICAgZGF0YS5saXZlbmVzcyA9
IGdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQoZGF0YS5tZXJnZVBvaW50KTsKKyAgICB9
Cit9OworCitjbGFzcyBTYXZlZFZhcmlhYmxlc0FuYWx5c2lzIHsKK3B1YmxpYzoKKyAgICBTYXZl
ZFZhcmlhYmxlc0FuYWx5c2lzKEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uJiBnZW5lcmF0b3Jp
ZmljYXRpb24pCisgICAgICAgIDogbV9nZW5lcmF0b3JpZmljYXRpb24oZ2VuZXJhdG9yaWZpY2F0
aW9uKQorICAgIHsKKyAgICB9CisKKyAgICBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbiYgZ2Vu
ZXJhdG9yaWZpY2F0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX2dlbmVyYXRvcmlmaWNh
dGlvbjsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEZWZGdW5jdG9yPgorICAgIHZv
aWQgc3RlcE92ZXJJbnN0cnVjdGlvbkZvclNhdmVkVmFyaWFibGVzKEJ5dGVjb2RlQmFzaWNCbG9j
ayosIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBGYXN0Qml0VmVjdG9yJiBpbiwgY29uc3QgRGVm
RnVuY3RvciYgZGVmKQorICAgIHsKKyAgICAgICAgQnl0ZWNvZGVHcmFwaDxVbmxpbmtlZENvZGVC
bG9jaz4mIGdyYXBoID0gZ2VuZXJhdG9yaWZpY2F0aW9uKCkuZ3JhcGgoKTsKKyAgICAgICAgYXV0
byYgaW5zdHJ1Y3Rpb25zID0gZ3JhcGguaW5zdHJ1Y3Rpb25zKCk7CisgICAgICAgIFVubGlua2Vk
SW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uID0gJmluc3RydWN0aW9uc1tieXRlY29kZU9mZnNldF07
CisgICAgICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW5zdHJ1Y3Rpb24tPnUub3Bjb2RlOworICAg
ICAgICBVbmxpbmtlZENvZGVCbG9jayogY29kZUJsb2NrID0gZ3JhcGguY29kZUJsb2NrKCk7CisK
KyAgICAgICAgLy8gb3BfcmVzdW1lIGNsZWFycyBhbGwgdGhlIGRlZnMuCisgICAgICAgIGlmIChv
cGNvZGVJRCA9PSBvcF9yZXN1bWUpIHsKKyAgICAgICAgICAgIGluLmNsZWFyQWxsKCk7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBjb21wdXRlRGVmc0ZvckJ5dGVj
b2RlT2Zmc2V0KGNvZGVCbG9jaywgb3Bjb2RlSUQsIGluc3RydWN0aW9uLCBbJl0gKFVubGlua2Vk
Q29kZUJsb2NrKiwgVW5saW5rZWRJbnN0cnVjdGlvbiosIE9wY29kZUlELCBpbnQgb3BlcmFuZCkg
eworICAgICAgICAgICAgaWYgKGlzVmFsaWRSZWdpc3RlckZvckxpdmVuZXNzKG9wZXJhbmQpKQor
ICAgICAgICAgICAgICAgIGRlZihWaXJ0dWFsUmVnaXN0ZXIob3BlcmFuZCkudG9Mb2NhbCgpKTsK
KyAgICAgICAgfSk7CisgICAgfQorCisgICAgYm9vbCBjb21wdXRlTG9jYWxTYXZlZFZhcmlhYmxl
c0ZvckJ5dGVjb2RlT2Zmc2V0KEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2ssIHVuc2lnbmVkIHRh
cmdldE9mZnNldCwgRmFzdEJpdFZlY3RvciYgcmVzdWx0KQorICAgIHsKKyAgICAgICAgQVNTRVJU
KCFibG9jay0+aXNFeGl0QmxvY2soKSk7CisgICAgICAgIEFTU0VSVCghYmxvY2stPmlzRW50cnlC
bG9jaygpKTsKKworICAgICAgICBGYXN0Qml0VmVjdG9yIGluID0gYmxvY2stPmluKCk7CisKKyAg
ICAgICAgZm9yICh1bnNpZ25lZCBieXRlY29kZU9mZnNldCA6IGJsb2NrLT5ieXRlY29kZU9mZnNl
dHMoKSkgeworICAgICAgICAgICAgaWYgKHRhcmdldE9mZnNldCA8PSBieXRlY29kZU9mZnNldCkK
KyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgc3RlcE92ZXJJbnN0cnVjdGlv
bkZvclNhdmVkVmFyaWFibGVzKAorICAgICAgICAgICAgICAgIGJsb2NrLCBieXRlY29kZU9mZnNl
dCwgaW4sCisgICAgICAgICAgICAgICAgWyZdICh1bnNpZ25lZCBiaXRJbmRleCkgeworICAgICAg
ICAgICAgICAgICAgICAvLyBUaGlzIGlzIHRoZSBkZWYgZnVuY3Rvciwgc28gd2Ugc2V0IHRoZSBi
aXQuCisgICAgICAgICAgICAgICAgICAgIGluLnNldChiaXRJbmRleCk7CisgICAgICAgICAgICAg
ICAgfSk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gcmVzdWx0LnNldEFuZENoZWNrKGlu
KTsKKyAgICB9CisKKyAgICBib29sIGNvbXB1dGVMb2NhbFNhdmVkVmFyaWFibGVzRm9yQmxvY2so
Qnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaykKKyAgICB7CisgICAgICAgIGlmIChibG9jay0+aXNF
eGl0QmxvY2soKSB8fCBibG9jay0+aXNFbnRyeUJsb2NrKCkpCisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIHJldHVybiBjb21wdXRlTG9jYWxTYXZlZFZhcmlhYmxlc0ZvckJ5dGVj
b2RlT2Zmc2V0KGJsb2NrLCBibG9jay0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKSArIGJsb2NrLT50
b3RhbEJ5dGVjb2RlTGVuZ3RoKCksIGJsb2NrLT5vdXQoKSk7CisgICAgfQorCisgICAgRmFzdEJp
dFZlY3RvciBnZXRTYXZlZFZhcmlhYmxlc0luZm9BdEJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5
dGVjb2RlT2Zmc2V0KQorICAgIHsKKyAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jayA9
IGdlbmVyYXRvcmlmaWNhdGlvbigpLmdyYXBoKCkuZmluZEJhc2ljQmxvY2tGb3JCeXRlY29kZU9m
ZnNldChieXRlY29kZU9mZnNldCk7CisgICAgICAgIEFTU0VSVChibG9jayk7CisgICAgICAgIEFT
U0VSVCghYmxvY2stPmlzRW50cnlCbG9jaygpKTsKKyAgICAgICAgQVNTRVJUKCFibG9jay0+aXNF
eGl0QmxvY2soKSk7CisgICAgICAgIEZhc3RCaXRWZWN0b3IgaW47CisgICAgICAgIGluLnJlc2l6
ZShibG9jay0+aW4oKS5udW1CaXRzKCkpOworICAgICAgICBjb21wdXRlTG9jYWxTYXZlZFZhcmlh
Ymxlc0ZvckJ5dGVjb2RlT2Zmc2V0KGJsb2NrLCBieXRlY29kZU9mZnNldCwgaW4pOworICAgICAg
ICByZXR1cm4gaW47CisgICAgfQorCisgICAgdm9pZCBydW4oKQorICAgIHsKKyAgICAgICAgLy8g
SWYgd2Ugc2F2ZSBhbGwgdGhlIHZhcmlhYmxlIHRoYXQgd2lsbCBiZSByZXN1bWVkLCBpdCdzIE9L
LgorICAgICAgICAvLyBCdXQgd2UgY2FuIGF2b2lkIHNvbWUgc2F2ZWQgdmFyaWFibGVzIHRoYXQg
YXJlIG9ubHkgZGVmaW5lZCBieSB0aGUgcHJldmlvdXMgb3BfcmVzdW1lLgorICAgICAgICAvLwor
ICAgICAgICAvLyBJbiB0aGlzIHBoYXNlLCB3ZSBwZXJmb3JtIGZvcndhcmQgYW5hbHlzaXMgdG8g
ZXh0cmFjdCB3aGljaCB2YXJpYWJsZXMgbmVlZCB0byBiZSBuZXdseSBzYXZlZCB3aGVuIGV4ZWN1
dGluZyBvcF9zYXZlLgorICAgICAgICAvLyBXZSBjYWxjdWxhdGUgdGhlIHJlZ2lzdGVycyB0aGF0
IGlzIGRlZmluZWQgaW4gbm9uLW9wX3Jlc3VtZSBhbmQgY2FuIHJlYWNoIHRvIHRoZSBvcF9zYXZl
LgorICAgICAgICAvLworICAgICAgICAvLyAgIG9wX3Jlc3VtZSwgZGVmaW5lIHIxCisgICAgICAg
IC8vICAgLi4uCisgICAgICAgIC8vICAgLi4uCisgICAgICAgIC8vICAgbm8tanVtcHMgJiBubyBy
MSBkZWZzLgorICAgICAgICAvLyAgIC4uLgorICAgICAgICAvLyAgIG9wX3NhdmUgICMgSGVyZSwg
aXQgaXMgbm90IG5lY2Vzc2FyeSB0byBzYXZlIHIxLgorICAgICAgICBCeXRlY29kZUdyYXBoPFVu
bGlua2VkQ29kZUJsb2NrPiYgZ3JhcGggPSBnZW5lcmF0b3JpZmljYXRpb24oKS5ncmFwaCgpOwor
ICAgICAgICBVbmxpbmtlZENvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2sgPSBncmFwaC5jb2Rl
QmxvY2soKTsKKworICAgICAgICAvLyBXZSBjb25zaWRlciB0aGUgYmFzaWMgYmxvY2tzIHdpdGhp
biB0aGUgdHJ5IHJhbmdlIGFyZSBjb25zaWRlcmVkIGFzIHRoZSBpbXBsaWNpdCBwcmVkZWNlc3Nv
cnMgb2YgdGhlIGhhbmRsZXJzLgorICAgICAgICAvLyBUaGUgZGVmcyBpbiB0aGVzZSBiYXNpYyBi
bG9ja3MgYXJlIGNhcnJpZWQgdG8gdGhlIGV4Y2VwdGlvbiBoYW5kbGVyLiBBbmQgaWYgdGhlIG9w
X3NhdmUgaXMgZXhlY3V0ZWQgaW4gdGhlIGhhbmRsZXIsCisgICAgICAgIC8vIGNhcnJpZWQgZGVm
cyBzaG91bGQgYmUgYWxzbyBjb25zaWRlcmVkLgorICAgICAgICAvLworICAgICAgICAvLyBIZXJl
LCB3ZSBhZGQgdGhlIHdob2xlIGJhc2ljIGJsb2NrcyBhcyB0aGUgaW1wbGljaXQgcHJlZGVjZXNz
b3JzIG9mIHRoZSBoYW5kbGVycyBmb3Igc2ltcGxpY2l0eS4KKyAgICAgICAgLy8gVGhpcyBpcyBh
IGxpdHRsZSBiaXQgY29uc2VydmF0aXZlOiB0aGUgdHJ5IHJhbmdlIG1heSBub3QgY292ZXIgYWxs
IHRoZSBiYXNpYyBibG9jay4gQnV0IHNpbmNlIHRoZSBvdXQgc2V0IHN0YXR1cyBhdAorICAgICAg
ICAvLyB0aGUgdGFpbCBvZiB0aGUgYmFzaWMgYmxvY2sgaXMgYWx3YXlzIGxhcmdlciB0aGFuIHRo
ZSBvdXQgc2V0IHN0YXR1cyBpbiB0aGUgbWlkZGxlIG9mIHRoZSBiYXNpYyBibG9ja3MsIHRoaXMg
ZG9lcyBub3QKKyAgICAgICAgLy8gZmFpbCB0byBrZWVwIHRoZSB2YXJpYWJsZXMgdGhhdCBzaG91
bGQgYmUgc2F2ZWQuCisgICAgICAgIC8vCisgICAgICAgIC8vIE9ubHkgdGhlIGV4Y2VwdGlvbiBp
cyB0aGUgb3BfcmVzdW1lIGJsb2NrOiBvcF9yZXN1bWUgY2xlYXJzIGFsbCB0aGUgZGVmcy4gQnV0
IHNpbmNlIHRoZSByYW5nZSBiZXR3ZWVuIHRoZSBqdW1wIHRhcmdldAorICAgICAgICAvLyBmcm9t
IHRoZSBnbG9iYWwgZGlzcGF0Y2ggYW5kIG9wX3Jlc3VtZSBpcyBuZXZlciBjb3ZlcmVkIGJ5IHRo
ZSB0cnkgcmFuZ2UsIGl0IGlzIG5vdCBhIHByb2JsZW0uCisgICAgICAgIFZlY3RvcjxPcHRpb25h
bDxGYXN0Qml0VmVjdG9yPj4gcG9zc2libGVQcmVkZWNlc3NvcnNGb3JIYW5kbGVyczsKKyAgICAg
ICAgcG9zc2libGVQcmVkZWNlc3NvcnNGb3JIYW5kbGVycy5yZXNpemUoZ3JhcGguYmFzaWNCbG9j
a3MoKS5zaXplKCkpOworICAgICAgICB7CisgICAgICAgICAgICBhdXRvJiBpbnN0cnVjdGlvbnMg
PSBncmFwaC5pbnN0cnVjdGlvbnMoKTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCB1bmxpbmtlZENvZGVCbG9jay0+bnVtYmVyT2ZFeGNlcHRpb25IYW5kbGVycygpOyArK2kp
IHsKKyAgICAgICAgICAgICAgICBhdXRvJiBoYW5kbGVyID0gdW5saW5rZWRDb2RlQmxvY2stPmV4
Y2VwdGlvbkhhbmRsZXIoaSk7CisKKyAgICAgICAgICAgICAgICBGYXN0Qml0VmVjdG9yIHByZWRl
Y2Vzc29yczsKKyAgICAgICAgICAgICAgICBwcmVkZWNlc3NvcnMucmVzaXplKGdyYXBoLmJhc2lj
QmxvY2tzKCkuc2l6ZSgpKTsKKyAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGJ5dGVjb2Rl
T2Zmc2V0ID0gaGFuZGxlci5zdGFydDsgYnl0ZWNvZGVPZmZzZXQgPCBoYW5kbGVyLmVuZDspIHsK
KyAgICAgICAgICAgICAgICAgICAgVW5saW5rZWRJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSAm
aW5zdHJ1Y3Rpb25zW2J5dGVjb2RlT2Zmc2V0XTsKKyAgICAgICAgICAgICAgICAgICAgT3Bjb2Rl
SUQgb3Bjb2RlSUQgPSBpbnN0cnVjdGlvbi0+dS5vcGNvZGU7CisgICAgICAgICAgICAgICAgICAg
IHVuc2lnbmVkIG9wY29kZUxlbmd0aCA9IG9wY29kZUxlbmd0aHNbb3Bjb2RlSURdOworCisgICAg
ICAgICAgICAgICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogcG9zc2libGVQcmVkZWNlc3NvciA9
IGdyYXBoLmZpbmRCYXNpY0Jsb2NrRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpOwor
ICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChwb3NzaWJsZVByZWRlY2Vzc29yKTsK
KyAgICAgICAgICAgICAgICAgICAgcHJlZGVjZXNzb3JzLnNldChwb3NzaWJsZVByZWRlY2Vzc29y
LT5pbmRleCgpKTsKKworICAgICAgICAgICAgICAgICAgICBieXRlY29kZU9mZnNldCArPSBvcGNv
ZGVMZW5ndGg7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIEJ5dGVjb2RlQmFz
aWNCbG9jayogaGFuZGxlckJsb2NrID0gZ3JhcGguZmluZEJhc2ljQmxvY2tXaXRoTGVhZGVyT2Zm
c2V0KGhhbmRsZXIudGFyZ2V0KTsKKyAgICAgICAgICAgICAgICBwb3NzaWJsZVByZWRlY2Vzc29y
c0ZvckhhbmRsZXJzW2hhbmRsZXJCbG9jay0+aW5kZXgoKV0gPSBXVEZNb3ZlKHByZWRlY2Vzc29y
cyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICB1bnNpZ25lZCBudW1iZXJP
ZlZhcmlhYmxlcyA9IHVubGlua2VkQ29kZUJsb2NrLT5tX251bUNhbGxlZUxvY2FsczsKKyAgICAg
ICAgZm9yIChzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiYgYmxvY2sgOiBncmFw
aC5iYXNpY0Jsb2NrcygpKSB7CisgICAgICAgICAgICBibG9jay0+aW4oKS5yZXNpemUobnVtYmVy
T2ZWYXJpYWJsZXMpOworICAgICAgICAgICAgYmxvY2stPm91dCgpLnJlc2l6ZShudW1iZXJPZlZh
cmlhYmxlcyk7CisgICAgICAgICAgICBibG9jay0+aW4oKS5jbGVhckFsbCgpOworICAgICAgICAg
ICAgYmxvY2stPm91dCgpLmNsZWFyQWxsKCk7CisgICAgICAgIH0KKworICAgICAgICBib29sIGNo
YW5nZWQ7CisgICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogZmlyc3RCbG9jayA9IGdyYXBoLmJh
c2ljQmxvY2tzKCkuZmlyc3QoKS5nZXQoKTsKKyAgICAgICAgRmFzdEJpdFZlY3RvciBuZXdJbjsK
KyAgICAgICAgbmV3SW4ucmVzaXplKGZpcnN0QmxvY2stPmluKCkubnVtQml0cygpKTsKKyAgICAg
ICAgZG8geworICAgICAgICAgICAgY2hhbmdlZCA9IGZhbHNlOworICAgICAgICAgICAgZm9yIChz
dGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiYgYmxvY2sgOiBncmFwaC5iYXNpY0Js
b2NrcygpKSB7CisgICAgICAgICAgICAgICAgbmV3SW4uY2xlYXJBbGwoKTsKKyAgICAgICAgICAg
ICAgICBib29sIG1lcmdlQmxvY2sgPSBnZW5lcmF0b3JpZmljYXRpb24oKS5pc01lcmdlQmxvY2so
YmxvY2suZ2V0KCkpOworICAgICAgICAgICAgICAgIGZvciAoQnl0ZWNvZGVCYXNpY0Jsb2NrKiBw
cmVkZWNlc3NvciA6IGJsb2NrLT5wcmVkZWNlc3NvcnMoKSkgeworICAgICAgICAgICAgICAgICAg
ICAvLyBNZXJnZSB0aGUgb3V0IHNldCBvZiB0aGUgaW5jb21pbmcgcHJlZGVjZXNzb3JzIHVubGVz
cyB0aGUgY3VycmVudCBibG9jayBzdGFydHMKKyAgICAgICAgICAgICAgICAgICAgLy8gd2l0aCB0
aGUgbWVyZ2UgcG9pbnQgYW5kIHRoZSBwcmVkZWNlc3NvciBlbmRzIHdpdGggdGhlIHNhdmUgcG9p
bnQuCisgICAgICAgICAgICAgICAgICAgIGlmICghKG1lcmdlQmxvY2sgJiYgZ2VuZXJhdG9yaWZp
Y2F0aW9uKCkuaXNTYXZlQmxvY2socHJlZGVjZXNzb3IpKSkKKyAgICAgICAgICAgICAgICAgICAg
ICAgIG5ld0luLm1lcmdlKHByZWRlY2Vzc29yLT5vdXQoKSk7CisgICAgICAgICAgICAgICAgfQor
CisgICAgICAgICAgICAgICAgaWYgKGF1dG8mIG9wdGlvbmFsUHJlZGVjZXNzb3JTZXQgPSBwb3Nz
aWJsZVByZWRlY2Vzc29yc0ZvckhhbmRsZXJzW2Jsb2NrLT5pbmRleCgpXSkgeworICAgICAgICAg
ICAgICAgICAgICBvcHRpb25hbFByZWRlY2Vzc29yU2V0LT5mb3JFYWNoU2V0Qml0KFsmXSAodW5z
aWduZWQgYmxvY2tJbmRleCkgeworICAgICAgICAgICAgICAgICAgICAgICAgbmV3SW4ubWVyZ2Uo
Z3JhcGguYmFzaWNCbG9ja3MoKVtibG9ja0luZGV4XS0+b3V0KCkpOworICAgICAgICAgICAgICAg
ICAgICB9KTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBibG9jay0+aW4o
KS5zZXQobmV3SW4pOworICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gY29tcHV0ZUxvY2FsU2F2
ZWRWYXJpYWJsZXNGb3JCbG9jayhibG9jay5nZXQoKSk7CisgICAgICAgICAgICB9CisgICAgICAg
IH0gd2hpbGUgKGNoYW5nZWQpOworCisgICAgICAgIGZvciAoWWllbGREYXRhJiBkYXRhIDogZ2Vu
ZXJhdG9yaWZpY2F0aW9uKCkueWllbGRzKCkpIHsKKyAgICAgICAgICAgIGRhdGEuc2F2ZWQgPSBk
YXRhLmxpdmVuZXNzOworICAgICAgICAgICAgZGF0YS5zYXZlZC5maWx0ZXIoZ2V0U2F2ZWRWYXJp
YWJsZXNJbmZvQXRCeXRlY29kZU9mZnNldChkYXRhLnNhdmVQb2ludCkpOworICAgICAgICB9Cisg
ICAgfQorCitwcml2YXRlOgorICAgIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uJiBtX2dlbmVy
YXRvcmlmaWNhdGlvbjsKK307CisKK2NsYXNzIFJlc3VtZWRWYXJpYWJsZXNBbmFseXNpcyA6IHB1
YmxpYyBMaXZlbmVzc0FuYWx5c2lzPFJlc3VtZWRWYXJpYWJsZXNBbmFseXNpcz4geworcHVibGlj
OgorICAgIFJlc3VtZWRWYXJpYWJsZXNBbmFseXNpcyhCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlv
biYgZ2VuZXJhdG9yaWZpY2F0aW9uKQorICAgICAgICA6IExpdmVuZXNzQW5hbHlzaXMoZ2VuZXJh
dG9yaWZpY2F0aW9uKQorICAgIHsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5j
dG9yPgorICAgIHZvaWQgY29tcHV0ZUxpdmVuZXNzRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KFVubGlu
a2VkQ29kZUJsb2NrKiBjb2RlQmxvY2ssIE9wY29kZUlEIG9wY29kZUlELCBVbmxpbmtlZEluc3Ry
dWN0aW9uKiBpbnN0cnVjdGlvbiwgRmFzdEJpdFZlY3RvciYgb3V0LCBjb25zdCBGdW5jdG9yJiBm
dW5jdG9yKQorICAgIHsKKyAgICAgICAgY29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChjb2Rl
QmxvY2ssIG9wY29kZUlELCBpbnN0cnVjdGlvbiwgZnVuY3Rvcik7CisKKyAgICAgICAgc3dpdGNo
IChvcGNvZGVJRCkgeworICAgICAgICBjYXNlIG9wX3NhdmU6CisgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgY2FzZSBvcF9yZXN1bWU6IHsKKyAgICAgICAgICAgIC8vIHJlc3VtZSBkZWZp
bmVzIGFsbCB0aGUgcmVnaXN0ZXJzLgorICAgICAgICAgICAgb3V0LmNsZWFyQWxsKCk7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVu
Y3Rvcj4KKyAgICB2b2lkIGNvbXB1dGVMaXZlbmVzc1VzZXNGb3JCeXRlY29kZU9mZnNldChVbmxp
bmtlZENvZGVCbG9jayogY29kZUJsb2NrLCBPcGNvZGVJRCBvcGNvZGVJRCwgVW5saW5rZWRJbnN0
cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIEZhc3RCaXRWZWN0b3ImLCBjb25zdCBGdW5jdG9yJiBmdW5j
dG9yKQorICAgIHsKKyAgICAgICAgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldChjb2RlQmxv
Y2ssIG9wY29kZUlELCBpbnN0cnVjdGlvbiwgZnVuY3Rvcik7CisKKyAgICAgICAgc3dpdGNoIChv
cGNvZGVJRCkgeworICAgICAgICBjYXNlIG9wX3NhdmU6IHsKKyAgICAgICAgICAgIGZ1bmN0b3Io
Y29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzFdLnUub3BlcmFu
ZCk7CisKKyAgICAgICAgICAgIC8vIExldCdzIGRlY2xhcmUgdGhlIHVzZXMgYmFzZWQgb24gdGhl
IHNhdmVkIHZhcmlhYmxlcyBhbmFseXNpcyBpbmZvcm1hdGlvbi4KKyAgICAgICAgICAgIHVuc2ln
bmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9IGluc3RydWN0aW9uWzJdLnUuaW5kZXg7CisgICAg
ICAgICAgICBjb25zdCBZaWVsZERhdGEmIGRhdGEgPSBnZW5lcmF0b3JpZmljYXRpb24oKS55aWVs
ZHMoKVtsaXZlQ2FsbGVlTG9jYWxzSW5kZXhdOworICAgICAgICAgICAgZGF0YS5zYXZlZC5mb3JF
YWNoU2V0Qml0KFsmXShzaXplX3QgbG9jYWwpIHsKKyAgICAgICAgICAgICAgICBWaXJ0dWFsUmVn
aXN0ZXIgb3BlcmFuZCA9IHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGxvY2FsKTsKKyAgICAgICAg
ICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBvcGVyYW5k
Lm9mZnNldCgpKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisKKyAgICAgICAgY2FzZSBvcF9yZXN1bWU6IHsKKyAgICAgICAgICAgIGZ1bmN0b3IoY29k
ZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBkZWZhdWx0OgorICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCBydW4oKQorICAg
IHsKKyAgICAgICAgLy8gVGhlIHJlc3VtZWQgdmFyaWFibGVzIGFuYWx5c2lzIGlzIGFsbW9zdCB0
aGUgc2FtZSB0byB0aGUgZ2VuZXJhdG9yaWZpY2F0aW9uJ3MgdXN1YWwgbGl2ZW5lc3MgYW5hbHlz
aXMsCisgICAgICAgIC8vIGV4Y2VwdCBmb3IgZHJvcHBpbmcgdGhlIGVkZ2VzIGJldHdlZW4gdGhl
IHNhdmUgcG9pbnRzIGFuZCB0aGUgbWVyZ2UgcG9pbnRzLgorCisgICAgICAgIEJ5dGVjb2RlR3Jh
cGg8VW5saW5rZWRDb2RlQmxvY2s+JiBncmFwaCA9IGdlbmVyYXRvcmlmaWNhdGlvbigpLmdyYXBo
KCk7CisgICAgICAgIFVubGlua2VkQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jayA9IGdyYXBo
LmNvZGVCbG9jaygpOworICAgICAgICB1bnNpZ25lZCBudW1iZXJPZlZhcmlhYmxlcyA9IHVubGlu
a2VkQ29kZUJsb2NrLT5tX251bUNhbGxlZUxvY2FsczsKKyAgICAgICAgZm9yIChzdGQ6OnVuaXF1
ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiYgYmxvY2sgOiBncmFwaC5iYXNpY0Jsb2NrcygpKSB7
CisgICAgICAgICAgICBibG9jay0+aW4oKS5yZXNpemUobnVtYmVyT2ZWYXJpYWJsZXMpOworICAg
ICAgICAgICAgYmxvY2stPm91dCgpLnJlc2l6ZShudW1iZXJPZlZhcmlhYmxlcyk7CisgICAgICAg
ICAgICBibG9jay0+aW4oKS5jbGVhckFsbCgpOworICAgICAgICAgICAgYmxvY2stPm91dCgpLmNs
ZWFyQWxsKCk7CisgICAgICAgIH0KKworICAgICAgICBib29sIGNoYW5nZWQ7CisgICAgICAgIEJ5
dGVjb2RlQmFzaWNCbG9jayogbGFzdEJsb2NrID0gZ3JhcGguYmFzaWNCbG9ja3MoKS5sYXN0KCku
Z2V0KCk7CisgICAgICAgIGxhc3RCbG9jay0+aW4oKS5jbGVhckFsbCgpOworICAgICAgICBsYXN0
QmxvY2stPm91dCgpLmNsZWFyQWxsKCk7CisgICAgICAgIEZhc3RCaXRWZWN0b3IgbmV3T3V0Owor
ICAgICAgICBuZXdPdXQucmVzaXplKGxhc3RCbG9jay0+b3V0KCkubnVtQml0cygpKTsKKyAgICAg
ICAgZG8geworICAgICAgICAgICAgY2hhbmdlZCA9IGZhbHNlOworICAgICAgICAgICAgZm9yIChz
dGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiYgYmxvY2sgOiBncmFwaC5iYXNpY0Js
b2Nrc0luUmV2ZXJzZU9yZGVyKCkpIHsKKyAgICAgICAgICAgICAgICBuZXdPdXQuY2xlYXJBbGwo
KTsKKyAgICAgICAgICAgICAgICBib29sIHNhdmVCbG9jayA9IGdlbmVyYXRvcmlmaWNhdGlvbigp
LmlzU2F2ZUJsb2NrKGJsb2NrLmdldCgpKTsKKyAgICAgICAgICAgICAgICBmb3IgKEJ5dGVjb2Rl
QmFzaWNCbG9jayogc3VjY2Vzc29yIDogYmxvY2stPnN1Y2Nlc3NvcnMoKSkgeworICAgICAgICAg
ICAgICAgICAgICAvLyBEbyBub3QgaGFuZGxlIHRoZSBlZGdlcyBiZXR3ZWVuIHRoZSBzYXZlIHBv
aW50cyBhbmQgdGhlIG1lcmdlIHBvaW50cy4KKyAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhl
IGN1cnJlbnQgYmxvY2sgaXMgdGhlIHNhdmUgYmxvY2sgKHRoYXQgYnJhbmNoIGlzIG9wX3NhdmUp
LAorICAgICAgICAgICAgICAgICAgICAvLyBhbmQgaWYgdGhlIHN1Y2Nlc3NvciBpcyB0aGUgYmxv
Y2sgdGhhdCBzdGFydHMgd2l0aCB0aGUgbWVyZ2UgcG9pbnQsIHdlIGRyb3AgdGhpcyBlZGdlLgor
ICAgICAgICAgICAgICAgICAgICBpZiAoIShzYXZlQmxvY2sgJiYgZ2VuZXJhdG9yaWZpY2F0aW9u
KCkuaXNNZXJnZUJsb2NrKHN1Y2Nlc3NvcikpKQorICAgICAgICAgICAgICAgICAgICAgICAgbmV3
T3V0Lm1lcmdlKHN1Y2Nlc3Nvci0+aW4oKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIGJvb2wgb3V0RGlkQ2hhbmdlID0gYmxvY2stPm91dCgpLnNldEFuZENoZWNrKG5ld091
dCk7CisgICAgICAgICAgICAgICAgY29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCbG9jayhibG9jay5n
ZXQoKSk7CisgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBvdXREaWRDaGFuZ2U7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0gd2hpbGUgKGNoYW5nZWQpOworCisgICAgICAgIGZvciAoWWllbGRE
YXRhJiBkYXRhIDogZ2VuZXJhdG9yaWZpY2F0aW9uKCkueWllbGRzKCkpIHsKKyAgICAgICAgICAg
IGRhdGEucmVzdW1lZCA9IGRhdGEubGl2ZW5lc3M7CisgICAgICAgICAgICBkYXRhLnJlc3VtZWQu
ZmlsdGVyKGdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQoZGF0YS5tZXJnZVBvaW50KSk7
CisgICAgICAgIH0KKyAgICB9Cit9OworCit2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9u
OjpydW4oKQoreworICAgIC8vIEZpcnN0LCB3ZSBjYWxjdWxhdGUgdGhlIGxpdmVuZXNzIGF0IGVh
Y2ggbWVyZ2UgcG9pbnQuIFRoaXMgZ2l2ZXMgdXMgdGhlIGluZm9ybWF0aW9uIHdoaWNoIHJlZ2lz
dGVycyBzaG91bGQgYmUgc2F2ZWQgYW5kIHJlc3VtZWQgY29uc2VydmF0aXZlbHkuCisgICAgLy8g
SG93ZXZlciwgdGhpcyBpbmZvcm1hdGlvbiBpcyB0b28gY29uc2VydmF0aXZlLiBXZSB1bm5lY2Vz
c2FyaWx5IHNhdmUgYW5kIHJlc3VtZSB0aGUgcmVnaXN0ZXJzLgorICAgIC8vIFdoZW4gdGhlIGxv
Y2FsIHJlZ2lzdGVyIGlzIHJlZmVyZW5jZWQgZnJvbSB0aGUgcG9pbnQgd2hpY2ggaXMgb3ZlciBt
dWx0aXBsZSB5aWVsZHMsIHRoZSBwcm9ibGVtIGhhcHBlbnMuCisgICAgLy8KKyAgICAvLyAgIGZ1
bmN0aW9uICpnZW4oKQorICAgIC8vICAgeworICAgIC8vICAgICAgIHZhciB0YXJnZXQgPSA0MjsK
KyAgICAvLyAgICAgICB5aWVsZCAzMDsgIC8vIEhlcmUsIHdlIHNob3VsZCBzYXZlICJ0YXJnZXQi
LiBJdCBpcyBPSy4gQnV0IGF0IHRoZSByZXN1bWUgcG9pbnQsIHdlIHVubmVjZXNzYXJ5IHJlc3Vt
ZSAidGFyZ2V0IiBoZXJlLgorICAgIC8vICAgICAgIHlpZWxkIDQwOyAgLy8gQW5kIGhlcmUsIHdl
IHVubmVjZXNzYXJpbHkgc2F2ZSAidGFyZ2V0Iiwgc2luY2UgaXQgaXMgKmRlZippbmVkIGJ5IHRo
ZSBwcmV2aW91cyByZXN1bWUuCisgICAgLy8gICAgICAgeWllbGQgdGFyZ2V0OyAgLy8gQW5kIHJl
ZmVyZW5jZSB0aGUgInRhcmdldCIgaGVyZS4KKyAgICAvLyAgIH0KKyAgICAvLworICAgIC8vIElu
IHRoZSBhYm92ZSBleGFtcGxlLCBmaXJzdCB5aWVsZCdzIHJlc3VtZSBhbmQgc2Vjb25kIHlpZWxk
J3Mgc2F2ZSBpcyB1bm5lY2Vzc2FyeSBzaW5jZSB0aGUgdmFsdWUgaXMgbm90IGNoYW5nZWQgZHVy
aW5nIHRoZSBzZWNvbmQgY2FsbCBvZiBuZXh0KCkuCisgICAgLy8gVG8gcmVkdWNlIHRoZSB1bm5l
Y2Vzc2FyeSByZWdpc3RlciBzYXZlIGFuZCByZXN1bWUsIHdlIHJ1biAyIGFuYWx5c2lzLCAic2F2
ZWQgdmFyaWFibGVzIGFuYWx5c2lzIiBhbmQgInJlc3VtZWQgdmFyaWFibGVzIGFuYWx5c2lzIi4K
KyAgICAvLyBJbiBib3RoIGFuYWx5c2lzLCB3ZSBkcm9wIHRoZSBlZGdlIGZyb20gb3Bfc2F2ZSB0
byB0aGUgbWVyZ2UgcG9pbnQuIFNvIHRoZSBncmFwaCBub3cgYmVjb21lcyBhcyBmb2xsb3dzLgor
ICAgIC8vCisgICAgLy8gQmVmb3JlOgorICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvZiBj
b3Vyc2UsIHN1Y2ggZWRnZXMgY2FuIGJlIHNlZW4pCisgICAgLy8gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG9wX3JldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgICAvLyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgIC8vICAg
ICAgICAgZW50cnkgLT4gZ2VuZXJhdG9yIHN3aXRjaCAtLS0tPiBvcF9zYXZlIC0tLS0tLS0tLS0t
LS0tKyAgICAgICAgICAgICAgIHwgICAgICAgIG9wX3JldCAgICAgICAgICAgICAgICAgICB8Cisg
ICAgLy8gICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB2ICAgICAgICAgICAgICAgfCAgICAgICAgICBeICAgICAgICAgICAgICAgICAg
ICAgIHwKKyAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLT4gb3Bf
cmVzdW1lIC0tLS0tPiBtZXJnZSBwb2ludCAtPiAuLi4uLi4rLi4uLi4tPiBvcF9zYXZlIC0tLS0t
KyAgICAgICAgICAgfAorICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB2ICAgICAgICAgICB2CisgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICArLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+IG9wX3Jl
c3VtZSAtLS0tPiBtZXJnZSBwb2ludCAtPiAuLi4uLi4KKyAgICAvLworICAgIC8vIEFmdGVyOgor
ICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvZiBjb3Vyc2UsIHN1Y2ggZWRnZXMgY2FuIGJl
IHNlZW4pCisgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9w
X3JldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLSsKKyAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfAorICAgIC8vICAgICAgICAgZW50cnkgLT4gZ2VuZXJhdG9y
IHN3aXRjaCAtLS0tPiBvcF9zYXZlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAg
ICAgIG9wX3JldCAgICAgICAgICAgICAgICAgICB8CisgICAgLy8gICAgICAgICAgICAgICAgICAg
ICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfCAgICAgICAgICBeICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAvLyAgICAgICAgICAg
ICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLT4gb3BfcmVzdW1lIC0tLS0tPiBtZXJnZSBwb2lu
dCAtPiAuLi4uLi4rLi4uLi4tPiBvcF9zYXZlICAgICAgICAgICAgICAgICAgfAorICAgIC8vICAg
ICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2Cisg
ICAgLy8gICAgICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+IG9wX3Jlc3VtZSAtLS0tPiBtZXJnZSBwb2ludCAt
PiAuLi4uLi4KKyAgICAvLworICAgIC8vIEluIHNhdmVkIHZhcmlhYmxlcyBhbmFseXNpcywgd2Ug
cnVuIHRoZSBmb3J3YXJkIGFuYWx5c2lzIG9udG8gdGhpcyAiQWZ0ZXIiIGdyYXBoLiBJbiB0aGlz
IGZvcndhcmQgYW5hbHlzaXMsIHdlIHByb3BhZ2F0ZSB0aGUgImRlZiJzLgorICAgIC8vIFRoaXMg
YW5hbHlzaXMgZXh0cmFjdHMgdGhlIG5ld2x5IGRlZi1lZCByZWdpc3RlcnMgdGhhdCBjYW4gcmVh
Y2ggdG8gdGhlIG9wX3NhdmUgcG9pbnQuIEJ1dCB0aGlzIG5ld2x5IGRlZi1lZCByZWdpc3RlcnMg
aW5jbHVkZSB0aGUgcmVnaXN0ZXJzIHRoYXQgd29uJ3QgYmUKKyAgICAvLyB1c2VkIGluIHRoZSBz
dWJzZXF1ZW50IG5leHQoKSBjYWxscyBhZnRlciB0aGlzIG9wX3NhdmUuIFNvIHdlIGV4dHJhY3Qg
dGhlIG5lY2Vzc2FyaWx5IHNhdmVkIHJlZ2lzdGVycyBieSBtYXNraW5nIGxpdmUgcmVnaXN0ZXJz
IHdpdGggdGhpcyBuZXdseSBkZWYtZWQgcmVnaXN0ZXJzIGJpdCBzZXQuCisgICAgLy8KKyAgICAv
LyBJbiByZXN1bWVkIHZhcmlhYmxlcyBhbmFseXNpcywgd2UganVzdCBydW4gdGhlIGxpdmVuZXNz
IGFuYWx5c2lzIGFnYWluIG9udG8gdGhpcyAiQWZ0ZXIiIGdyYXBoLiBUaGUgYW5hbHlzaXMgZXh0
cmFjdHMgdGhlIGxpdmVuZXNzIGF0IGVhY2ggbWVyZ2UgcG9pbnQsCisgICAgLy8gYW5kIHRoaXMg
bGl2ZW5lc3Mgb25seSBjb25zaWRlcnMgdGhlIHJlYWNoYWJsZSBibG9ja3MgZnJvbSB0aGUgdGFy
Z2V0IG9wX3Jlc3VtZS4gVGhlIHJlc3VsdCByZWdpc3RlcnMgYXJlIHNtYWxsZXIgc2V0IHRoYW4g
dGhlIHNldCB3aGljaCBpcyBleHRyYWN0ZWQgaW4KKyAgICAvLyB0aGUgcHJldmlvdXMgbGl2ZW5l
c3MgYW5hbHlzaXMuCisgICAgLy8gVGhpcyB0aW1lLCB3ZSB1c2UgdGhlIHNhdmVkIHZhcmlhYmxl
cyBpbmZvcm1hdGlvbiB0byBkZXRlcm1pbmUgdGhlIHJlc3VtZWQgdmFyaWFibGVzLiBUaGlzIGlz
IGJlY2F1c2UgdGhlIHNhdmVkIHZhcmlhYmxlIGFuYWx5c2lzIGhhcyBhIGxpdHRsZSBiaXQgY29u
c2VydmF0aXZlIHBhcnQ6CisgICAgLy8gdGhlIGV4Y2VwdGlvbiBoYW5kbGVyIGNvbnNpZGVycyB0
aGUgYmFzaWMgYmxvY2tzIHRoYXQgcmFuZ2Ugb3ZlcmxhcHMgdGhlIHRyeSByYW5nZXMgYXMgdGhl
IGltcGxpY2l0IHByZWRlY2Vzc29ycy4gQW5kIHRoZSBoYW5kbGVyIGNvbnNlcnZhdGl2ZWx5IGNv
bnNpZGVycyBuZXdseS1kZWYtZWQKKyAgICAvLyB2YXJpYWJsZXMgYnkgbWVyZ2luZyBhbGwgdGhl
IHByZWRlY2Vzc29ycydzIG91dCBzZXQgZXZlbiBpZiB0aGUgaGFuZGxlcidzIHRyeSByYW5nZSBk
b2VzIG5vdCBjb3ZlciBhbGwgdGhlIHBhcnQgb2YgdGhlIGltcGxpY2l0IGJhc2ljIGJsb2Nrcy4K
KworICAgIHsKKyAgICAgICAgR2VuZXJhdG9yTGl2ZW5lc3NBbmFseXNpcyBwYXNzKCp0aGlzKTsK
KyAgICAgICAgcGFzcy5ydW4oKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIFNhdmVkVmFyaWFi
bGVzQW5hbHlzaXMgcGFzcygqdGhpcyk7CisgICAgICAgIHBhc3MucnVuKCk7CisgICAgfQorCisg
ICAgeworICAgICAgICBSZXN1bWVkVmFyaWFibGVzQW5hbHlzaXMgcGFzcygqdGhpcyk7CisgICAg
ICAgIHBhc3MucnVuKCk7CisgICAgfQorCisgICAgVW5saW5rZWRDb2RlQmxvY2sqIGNvZGVCbG9j
ayA9IG1fZ3JhcGguY29kZUJsb2NrKCk7CisgICAgZm9yIChjb25zdCBZaWVsZERhdGEmIGRhdGEg
OiBtX3lpZWxkcykgeworICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgc2NvcGUgPSB2aXJ0dWFsUmVn
aXN0ZXJGb3JBcmd1bWVudCg1KTsKKworICAgICAgICAvLyBvcF9zYXZlLgorICAgICAgICBkYXRh
LnNhdmVkLmZvckVhY2hTZXRCaXQoWyZdKHNpemVfdCBpbmRleCkgeworICAgICAgICAgICAgVmly
dHVhbFJlZ2lzdGVyIG9wZXJhbmQgPSB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChpbmRleCk7Cisg
ICAgICAgICAgICBTdG9yYWdlIHN0b3JhZ2UgPSBzdG9yYWdlRm9yR2VuZXJhdG9yTG9jYWwoaW5k
ZXgpOworCisgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnQoZGF0YS5zYXZlUG9pbnQs
CisgICAgICAgICAgICAgICAgb3BfcHV0X3RvX3Njb3BlLAorICAgICAgICAgICAgICAgIHNjb3Bl
Lm9mZnNldCgpLCAvLyBzY29wZQorICAgICAgICAgICAgICAgIHN0b3JhZ2UuaWRlbnRpZmllcklu
ZGV4LCAvLyBpZGVudGlmaWVyCisgICAgICAgICAgICAgICAgb3BlcmFuZC5vZmZzZXQoKSwgLy8g
dmFsdWUKKyAgICAgICAgICAgICAgICBHZXRQdXRJbmZvKERvTm90VGhyb3dJZk5vdEZvdW5kLCBM
b2NhbENsb3N1cmVWYXIsIEluaXRpYWxpemF0aW9uTW9kZTo6Tm90SW5pdGlhbGl6YXRpb24pLm9w
ZXJhbmQoKSwgLy8gaW5mbworICAgICAgICAgICAgICAgIG1fZ2VuZXJhdG9yRnJhbWVTeW1ib2xU
YWJsZUluZGV4LCAvLyBzeW1ib2wgdGFibGUgY29uc3RhbnQgaW5kZXgKKyAgICAgICAgICAgICAg
ICBzdG9yYWdlLnNjb3BlT2Zmc2V0Lm9mZnNldCgpIC8vIHNjb3BlIG9mZnNldAorICAgICAgICAg
ICAgKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgLy8gb3BfcmVzdW1lLgorICAgICAgICBkYXRh
LnJlc3VtZWQuZm9yRWFjaFNldEJpdChbJl0oc2l6ZV90IGluZGV4KSB7CisgICAgICAgICAgICBW
aXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCA9IHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGluZGV4KTsK
KyAgICAgICAgICAgIFN0b3JhZ2Ugc3RvcmFnZSA9IHN0b3JhZ2VGb3JHZW5lcmF0b3JMb2NhbChp
bmRleCk7CisKKyAgICAgICAgICAgIFVubGlua2VkVmFsdWVQcm9maWxlIHByb2ZpbGUgPSBjb2Rl
QmxvY2stPmFkZFZhbHVlUHJvZmlsZSgpOworICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5z
ZXJ0KGRhdGEucmVzdW1lUG9pbnQsCisgICAgICAgICAgICAgICAgb3BfZ2V0X2Zyb21fc2NvcGUs
CisgICAgICAgICAgICAgICAgb3BlcmFuZC5vZmZzZXQoKSwgLy8gZHN0CisgICAgICAgICAgICAg
ICAgc2NvcGUub2Zmc2V0KCksIC8vIHNjb3BlCisgICAgICAgICAgICAgICAgc3RvcmFnZS5pZGVu
dGlmaWVySW5kZXgsIC8vIGlkZW50aWZpZXIKKyAgICAgICAgICAgICAgICBHZXRQdXRJbmZvKERv
Tm90VGhyb3dJZk5vdEZvdW5kLCBMb2NhbENsb3N1cmVWYXIsIEluaXRpYWxpemF0aW9uTW9kZTo6
Tm90SW5pdGlhbGl6YXRpb24pLm9wZXJhbmQoKSwgLy8gaW5mbworICAgICAgICAgICAgICAgIDAs
IC8vIGxvY2FsIHNjb3BlIGRlcHRoCisgICAgICAgICAgICAgICAgc3RvcmFnZS5zY29wZU9mZnNl
dC5vZmZzZXQoKSwgLy8gc2NvcGUgb2Zmc2V0CisgICAgICAgICAgICAgICAgcHJvZmlsZSAvLyBw
cm9maWxlCisgICAgICAgICAgICApOworICAgICAgICB9KTsKKworICAgICAgICAvLyBDbGlwIHRo
ZSB1bm5lY2Vzc2FyeSBieXRlY29kZXMuCisgICAgICAgIG1faW5zZXJ0aW9uU2V0LnJlbW92ZUJ5
dGVjb2RlKGRhdGEuc2F2ZVBvaW50KTsKKyAgICAgICAgbV9pbnNlcnRpb25TZXQucmVtb3ZlQnl0
ZWNvZGUoZGF0YS5yZXN1bWVQb2ludCk7CisgICAgfQorCisgICAgbV9pbnNlcnRpb25TZXQuZXhl
Y3V0ZSgpOworfQorCit2b2lkIHBlcmZvcm1HZW5lcmF0b3JpZmljYXRpb24oVW5saW5rZWRDb2Rl
QmxvY2sqIGNvZGVCbG9jaywgVW5saW5rZWRDb2RlQmxvY2s6OlVucGFja2VkSW5zdHJ1Y3Rpb25z
JiBpbnN0cnVjdGlvbnMsIFN5bWJvbFRhYmxlKiBnZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlLCBp
bnQgZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZUluZGV4KQoreworICAgIEJ5dGVjb2RlR2VuZXJh
dG9yaWZpY2F0aW9uIHBhc3MoY29kZUJsb2NrLCBpbnN0cnVjdGlvbnMsIGdlbmVyYXRvckZyYW1l
U3ltYm9sVGFibGUsIGdlbmVyYXRvckZyYW1lU3ltYm9sVGFibGVJbmRleCk7CisgICAgcGFzcy5y
dW4oKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmViN2VjOTZlZDcwZGJiYTIyMTExZWIxMzc3MzNmYjIwMDU1YjExMWEKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0
b3JpZmljYXRpb24uaApAQCAtMCwwICsxLDM2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2
IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpbmNsdWRlICJVbmxpbmtlZENvZGVCbG9jay5oIgorCituYW1lc3BhY2UgSlND
IHsKKworY2xhc3MgU3ltYm9sVGFibGU7CisKK3ZvaWQgcGVyZm9ybUdlbmVyYXRvcmlmaWNhdGlv
bihVbmxpbmtlZENvZGVCbG9jayosIFVubGlua2VkQ29kZUJsb2NrOjpVbnBhY2tlZEluc3RydWN0
aW9ucyYsIFN5bWJvbFRhYmxlKiBnZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlLCBpbnQgZ2VuZXJh
dG9yRnJhbWVTeW1ib2xUYWJsZUluZGV4KTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVHcmFwaC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlR3JhcGguaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
ZjIwODQ0MjA1ZDI5MGRjYjMyN2E1NjA0ODA5YmZlY2RiNGExNzJjCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlR3JhcGguaApAQCAtMCww
ICsxLDExMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBZdXN1a2UgU3V6dWtpIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAi
Qnl0ZWNvZGVCYXNpY0Jsb2NrLmgiCisjaW5jbHVkZSA8d3RmL0l0ZXJhdG9yUmFuZ2UuaD4KKyNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBCeXRlY29k
ZUJhc2ljQmxvY2s7CisKK3RlbXBsYXRlPHR5cGVuYW1lIEJsb2NrPgorY2xhc3MgQnl0ZWNvZGVH
cmFwaCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoQnl0ZWNvZGVHcmFwaCk7CitwdWJsaWM6CisgICAgdHlwZWRlZiBWZWN0b3I8c3RkOjp1
bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+IEJhc2ljQmxvY2tzVmVjdG9yOworCisgICAg
aW5saW5lIEJ5dGVjb2RlR3JhcGgoQmxvY2sqLCB0eXBlbmFtZSBCbG9jazo6VW5wYWNrZWRJbnN0
cnVjdGlvbnMmKTsKKworICAgIEJsb2NrKiBjb2RlQmxvY2soKSBjb25zdCB7IHJldHVybiBtX2Nv
ZGVCbG9jazsgfQorCisgICAgQmFzaWNCbG9ja3NWZWN0b3ImIGJhc2ljQmxvY2tzKCkgeyByZXR1
cm4gbV9iYXNpY0Jsb2NrczsgfQorCisgICAgdHlwZW5hbWUgQmxvY2s6OlVucGFja2VkSW5zdHJ1
Y3Rpb25zJiBpbnN0cnVjdGlvbnMoKSB7IHJldHVybiBtX2luc3RydWN0aW9uczsgfQorCisgICAg
V1RGOjpJdGVyYXRvclJhbmdlPEJhc2ljQmxvY2tzVmVjdG9yOjpyZXZlcnNlX2l0ZXJhdG9yPiBi
YXNpY0Jsb2Nrc0luUmV2ZXJzZU9yZGVyKCkKKyAgICB7CisgICAgICAgIHJldHVybiBXVEY6Om1h
a2VJdGVyYXRvclJhbmdlKG1fYmFzaWNCbG9ja3MucmJlZ2luKCksIG1fYmFzaWNCbG9ja3MucmVu
ZCgpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgYm9vbCBibG9ja0NvbnRhaW5zQnl0ZWNvZGVPZmZz
ZXQoQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaywgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpCisg
ICAgeworICAgICAgICB1bnNpZ25lZCBsZWFkZXJPZmZzZXQgPSBibG9jay0+bGVhZGVyQnl0ZWNv
ZGVPZmZzZXQoKTsKKyAgICAgICAgcmV0dXJuIGJ5dGVjb2RlT2Zmc2V0ID49IGxlYWRlck9mZnNl
dCAmJiBieXRlY29kZU9mZnNldCA8IGxlYWRlck9mZnNldCArIGJsb2NrLT50b3RhbEJ5dGVjb2Rl
TGVuZ3RoKCk7CisgICAgfQorCisgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBmaW5kQmFzaWNCbG9j
a0ZvckJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KQorICAgIHsKKyAgICAg
ICAgLyoKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2Jhc2ljQmxvY2tz
LnNpemUoKTsgaSsrKSB7CisgICAgICAgICAgICAgICAgaWYgKGJsb2NrQ29udGFpbnNCeXRlY29k
ZU9mZnNldChtX2Jhc2ljQmxvY2tzW2ldLmdldCgpLCBieXRlY29kZU9mZnNldCkpCisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBtX2Jhc2ljQmxvY2tzW2ldLmdldCgpOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICovCisKKyAgICAgICAgc3RkOjp1bmlx
dWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4qIGJhc2ljQmxvY2sgPSBhcHByb3hpbWF0ZUJpbmFy
eVNlYXJjaDxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiwgdW5zaWduZWQ+KG1f
YmFzaWNCbG9ja3MsIG1fYmFzaWNCbG9ja3Muc2l6ZSgpLCBieXRlY29kZU9mZnNldCwgW10gKHN0
ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+KiBiYXNpY0Jsb2NrKSB7IHJldHVybiAo
KmJhc2ljQmxvY2spLT5sZWFkZXJCeXRlY29kZU9mZnNldCgpOyB9KTsKKyAgICAgICAgLy8gV2Ug
Zm91bmQgdGhlIGJsb2NrIHdlIHdlcmUgbG9va2luZyBmb3IuCisgICAgICAgIGlmIChibG9ja0Nv
bnRhaW5zQnl0ZWNvZGVPZmZzZXQoKCpiYXNpY0Jsb2NrKS5nZXQoKSwgYnl0ZWNvZGVPZmZzZXQp
KQorICAgICAgICAgICAgcmV0dXJuICgqYmFzaWNCbG9jaykuZ2V0KCk7CisKKyAgICAgICAgLy8g
QmFzaWMgYmxvY2sgaXMgdG8gdGhlIGxlZnQgb2YgdGhlIHJldHVybmVkIGJsb2NrLgorICAgICAg
ICBpZiAoYnl0ZWNvZGVPZmZzZXQgPCAoKmJhc2ljQmxvY2spLT5sZWFkZXJCeXRlY29kZU9mZnNl
dCgpKSB7CisgICAgICAgICAgICBBU1NFUlQoYmFzaWNCbG9jayAtIDEgPj0gbV9iYXNpY0Jsb2Nr
cy5kYXRhKCkpOworICAgICAgICAgICAgQVNTRVJUKGJsb2NrQ29udGFpbnNCeXRlY29kZU9mZnNl
dChiYXNpY0Jsb2NrWy0xXS5nZXQoKSwgYnl0ZWNvZGVPZmZzZXQpKTsKKyAgICAgICAgICAgIHJl
dHVybiBiYXNpY0Jsb2NrWy0xXS5nZXQoKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEJhc2lj
IGJsb2NrIGlzIHRvIHRoZSByaWdodCBvZiB0aGUgcmV0dXJuZWQgYmxvY2suCisgICAgICAgIEFT
U0VSVCgmYmFzaWNCbG9ja1sxXSA8PSAmbV9iYXNpY0Jsb2Nrcy5sYXN0KCkpOworICAgICAgICBB
U1NFUlQoYmxvY2tDb250YWluc0J5dGVjb2RlT2Zmc2V0KGJhc2ljQmxvY2tbMV0uZ2V0KCksIGJ5
dGVjb2RlT2Zmc2V0KSk7CisgICAgICAgIHJldHVybiBiYXNpY0Jsb2NrWzFdLmdldCgpOworICAg
IH0KKworICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogZmluZEJhc2ljQmxvY2tXaXRoTGVhZGVyT2Zm
c2V0KHVuc2lnbmVkIGxlYWRlck9mZnNldCkKKyAgICB7CisgICAgICAgIHJldHVybiAoKnRyeUJp
bmFyeVNlYXJjaDxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiwgdW5zaWduZWQ+
KG1fYmFzaWNCbG9ja3MsIG1fYmFzaWNCbG9ja3Muc2l6ZSgpLCBsZWFkZXJPZmZzZXQsIFtdIChz
dGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiogYmFzaWNCbG9jaykgeyByZXR1cm4g
KCpiYXNpY0Jsb2NrKS0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKTsgfSkpLmdldCgpOworICAgIH0K
KworcHJpdmF0ZToKKyAgICBCbG9jayogbV9jb2RlQmxvY2s7CisgICAgQmFzaWNCbG9ja3NWZWN0
b3IgbV9iYXNpY0Jsb2NrczsKKyAgICB0eXBlbmFtZSBCbG9jazo6VW5wYWNrZWRJbnN0cnVjdGlv
bnMmIG1faW5zdHJ1Y3Rpb25zOworfTsKKworCit0ZW1wbGF0ZTx0eXBlbmFtZSBCbG9jaz4KK0J5
dGVjb2RlR3JhcGg8QmxvY2s+OjpCeXRlY29kZUdyYXBoKEJsb2NrKiBjb2RlQmxvY2ssIHR5cGVu
YW1lIEJsb2NrOjpVbnBhY2tlZEluc3RydWN0aW9ucyYgaW5zdHJ1Y3Rpb25zKQorICAgIDogbV9j
b2RlQmxvY2soY29kZUJsb2NrKQorICAgICwgbV9pbnN0cnVjdGlvbnMoaW5zdHJ1Y3Rpb25zKQor
eworICAgIEFTU0VSVChtX2NvZGVCbG9jayk7CisgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrOjpjb21w
dXRlQnl0ZWNvZGVCYXNpY0Jsb2NrcyhtX2NvZGVCbG9jaywgaW5zdHJ1Y3Rpb25zLmJlZ2luKCks
IGluc3RydWN0aW9ucy5zaXplKCksIG1fYmFzaWNCbG9ja3MpOworICAgIEFTU0VSVChtX2Jhc2lj
QmxvY2tzLnNpemUoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lz
LmNwcAppbmRleCAxN2U4MmEyZmJiYTAxNTA0M2U5OWQzNGVkMjU2OTM3MmIzNmY3YTg1Li5lYjQ1
OWQxMjk3YzlmNzM5ZWU5ZmJhYTEzMDM3Zjg5ZjhlODZhYjJkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lz
LmNwcApAQCAtMzEsNzQgKzMxLDIxIEBACiAjaW5jbHVkZSAiQnl0ZWNvZGVVc2VEZWYuaCIKICNp
bmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJGdWxsQnl0ZWNvZGVMaXZlbmVzcy5oIgor
I2luY2x1ZGUgIkludGVycHJldGVySW5saW5lcy5oIgogI2luY2x1ZGUgIlByZWNpc2VKdW1wVGFy
Z2V0cy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAogQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpC
eXRlY29kZUxpdmVuZXNzQW5hbHlzaXMoQ29kZUJsb2NrKiBjb2RlQmxvY2spCi0gICAgOiBtX2Nv
ZGVCbG9jayhjb2RlQmxvY2spCisgICAgOiBtX2dyYXBoKGNvZGVCbG9jaywgY29kZUJsb2NrLT5p
bnN0cnVjdGlvbnMoKSkKIHsKLSAgICBBU1NFUlQobV9jb2RlQmxvY2spOwogICAgIGNvbXB1dGUo
KTsKIH0KIAotc3RhdGljIGJvb2wgaXNWYWxpZFJlZ2lzdGVyRm9yTGl2ZW5lc3MoQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIGludCBvcGVyYW5kKQotewotICAgIGlmIChjb2RlQmxvY2stPmlzQ29uc3Rh
bnRSZWdpc3RlckluZGV4KG9wZXJhbmQpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCi0g
ICAgVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWcob3BlcmFuZCk7Ci0gICAgcmV0dXJuIHZpcnR1
YWxSZWcuaXNMb2NhbCgpOwotfQotCi1zdGF0aWMgdW5zaWduZWQgZ2V0TGVhZGVyT2Zmc2V0Rm9y
QmFzaWNCbG9jayhzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiogYmFzaWNCbG9j
aykKLXsKLSAgICByZXR1cm4gKCpiYXNpY0Jsb2NrKS0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKTsK
LX0KLQotc3RhdGljIEJ5dGVjb2RlQmFzaWNCbG9jayogZmluZEJhc2ljQmxvY2tXaXRoTGVhZGVy
T2Zmc2V0KFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mIGJhc2lj
QmxvY2tzLCB1bnNpZ25lZCBsZWFkZXJPZmZzZXQpCi17Ci0gICAgcmV0dXJuICgqdHJ5QmluYXJ5
U2VhcmNoPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+LCB1bnNpZ25lZD4oYmFz
aWNCbG9ja3MsIGJhc2ljQmxvY2tzLnNpemUoKSwgbGVhZGVyT2Zmc2V0LCBnZXRMZWFkZXJPZmZz
ZXRGb3JCYXNpY0Jsb2NrKSkuZ2V0KCk7Ci19Ci0KLXN0YXRpYyBib29sIGJsb2NrQ29udGFpbnNC
eXRlY29kZU9mZnNldChCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrLCB1bnNpZ25lZCBieXRlY29k
ZU9mZnNldCkKLXsKLSAgICB1bnNpZ25lZCBsZWFkZXJPZmZzZXQgPSBibG9jay0+bGVhZGVyQnl0
ZWNvZGVPZmZzZXQoKTsKLSAgICByZXR1cm4gYnl0ZWNvZGVPZmZzZXQgPj0gbGVhZGVyT2Zmc2V0
ICYmIGJ5dGVjb2RlT2Zmc2V0IDwgbGVhZGVyT2Zmc2V0ICsgYmxvY2stPnRvdGFsQnl0ZWNvZGVM
ZW5ndGgoKTsKLX0KLQotc3RhdGljIEJ5dGVjb2RlQmFzaWNCbG9jayogZmluZEJhc2ljQmxvY2tG
b3JCeXRlY29kZU9mZnNldChWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9j
az4+JiBiYXNpY0Jsb2NrcywgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpCi17Ci0vKgotICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBiYXNpY0Jsb2Nrcy5zaXplKCk7IGkrKykgewotICAgICAg
ICBpZiAoYmxvY2tDb250YWluc0J5dGVjb2RlT2Zmc2V0KGJhc2ljQmxvY2tzW2ldLmdldCgpLCBi
eXRlY29kZU9mZnNldCkpCi0gICAgICAgICAgICByZXR1cm4gYmFzaWNCbG9ja3NbaV0uZ2V0KCk7
Ci0gICAgfQotICAgIHJldHVybiAwOwotKi8KLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVC
YXNpY0Jsb2NrPiogYmFzaWNCbG9jayA9IGFwcHJveGltYXRlQmluYXJ5U2VhcmNoPHN0ZDo6dW5p
cXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+LCB1bnNpZ25lZD4oCi0gICAgICAgIGJhc2ljQmxv
Y2tzLCBiYXNpY0Jsb2Nrcy5zaXplKCksIGJ5dGVjb2RlT2Zmc2V0LCBnZXRMZWFkZXJPZmZzZXRG
b3JCYXNpY0Jsb2NrKTsKLSAgICAvLyBXZSBmb3VuZCB0aGUgYmxvY2sgd2Ugd2VyZSBsb29raW5n
IGZvci4KLSAgICBpZiAoYmxvY2tDb250YWluc0J5dGVjb2RlT2Zmc2V0KCgqYmFzaWNCbG9jayku
Z2V0KCksIGJ5dGVjb2RlT2Zmc2V0KSkKLSAgICAgICAgcmV0dXJuICgqYmFzaWNCbG9jaykuZ2V0
KCk7Ci0KLSAgICAvLyBCYXNpYyBibG9jayBpcyB0byB0aGUgbGVmdCBvZiB0aGUgcmV0dXJuZWQg
YmxvY2suCi0gICAgaWYgKGJ5dGVjb2RlT2Zmc2V0IDwgKCpiYXNpY0Jsb2NrKS0+bGVhZGVyQnl0
ZWNvZGVPZmZzZXQoKSkgewotICAgICAgICBBU1NFUlQoYmFzaWNCbG9jayAtIDEgPj0gYmFzaWNC
bG9ja3MuZGF0YSgpKTsKLSAgICAgICAgQVNTRVJUKGJsb2NrQ29udGFpbnNCeXRlY29kZU9mZnNl
dChiYXNpY0Jsb2NrWy0xXS5nZXQoKSwgYnl0ZWNvZGVPZmZzZXQpKTsKLSAgICAgICAgcmV0dXJu
IGJhc2ljQmxvY2tbLTFdLmdldCgpOwotICAgIH0KLQotICAgIC8vIEJhc2ljIGJsb2NrIGlzIHRv
IHRoZSByaWdodCBvZiB0aGUgcmV0dXJuZWQgYmxvY2suCi0gICAgQVNTRVJUKCZiYXNpY0Jsb2Nr
WzFdIDw9ICZiYXNpY0Jsb2Nrcy5sYXN0KCkpOwotICAgIEFTU0VSVChibG9ja0NvbnRhaW5zQnl0
ZWNvZGVPZmZzZXQoYmFzaWNCbG9ja1sxXS5nZXQoKSwgYnl0ZWNvZGVPZmZzZXQpKTsKLSAgICBy
ZXR1cm4gYmFzaWNCbG9ja1sxXS5nZXQoKTsKLX0KLQogLy8gU2ltcGxpZmllZCBpbnRlcmZhY2Ug
dG8gYnl0ZWNvZGUgdXNlL2RlZiwgd2hpY2ggZGV0ZXJtaW5lcyBkZWZzIGZpcnN0IGFuZCB0aGVu
IHVzZXMsIGFuZCBpbmNsdWRlcwogLy8gZXhjZXB0aW9uIGhhbmRsZXJzIGluIHRoZSB1c2VzLgog
dGVtcGxhdGU8dHlwZW5hbWUgVXNlRnVuY3RvciwgdHlwZW5hbWUgRGVmRnVuY3Rvcj4KLXN0YXRp
YyB2b2lkIHN0ZXBPdmVySW5zdHJ1Y3Rpb24oQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2Rl
QmFzaWNCbG9jayogYmxvY2ssIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Js
b2NrPj4mIGJhc2ljQmxvY2tzLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgY29uc3QgVXNlRnVu
Y3RvciYgdXNlLCBjb25zdCBEZWZGdW5jdG9yJiBkZWYpCitzdGF0aWMgdm9pZCBzdGVwT3Zlcklu
c3RydWN0aW9uKEJ5dGVjb2RlR3JhcGg8Q29kZUJsb2NrPiYgZ3JhcGgsIHVuc2lnbmVkIGJ5dGVj
b2RlT2Zmc2V0LCBjb25zdCBVc2VGdW5jdG9yJiB1c2UsIGNvbnN0IERlZkZ1bmN0b3ImIGRlZikK
IHsKICAgICAvLyBUaGlzIGFic3RyYWN0bHkgZXhlY3V0ZSB0aGUgaW5zdHJ1Y3Rpb24gaW4gcmV2
ZXJzZS4gSW5zdHJ1Y3Rpb25zIGxvZ2ljYWxseSBmaXJzdCB1c2Ugb3BlcmFuZHMgYW5kCiAgICAg
Ly8gdGhlbiBkZWZpbmUgb3BlcmFuZHMuIFRoaXMgbG9naWNhbCBvcmRlcmluZyBpcyBuZWNlc3Nh
cnkgZm9yIG9wZXJhdGlvbnMgdGhhdCB1c2UgYW5kIGRlZiB0aGUgc2FtZQpAQCAtMTE1LDQxICs2
MiwzNSBAQCBzdGF0aWMgdm9pZCBzdGVwT3Zlckluc3RydWN0aW9uKENvZGVCbG9jayogY29kZUJs
b2NrLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrLAogICAgIC8vIHVzZXMgYmVmb3JlIGRlZnMs
IHRoZW4gdGhlIGFkZCBvcGVyYXRpb24gYWJvdmUgd291bGQgYXBwZWFyIHRvIG5vdCBoYXZlIGxv
YzEgbGl2ZSwgc2luY2Ugd2UnZAogICAgIC8vIGZpcnN0IGFkZCBpdCB0byB0aGUgb3V0IHNldCAo
dGhlIHVzZSksIGFuZCB0aGVuIHdlJ2QgcmVtb3ZlIGl0ICh0aGUgZGVmKS4KICAgICAKKyAgICBD
b2RlQmxvY2sqIGNvZGVCbG9jayA9IGdyYXBoLmNvZGVCbG9jaygpOworCiAgICAgY29tcHV0ZURl
ZnNGb3JCeXRlY29kZU9mZnNldCgKLSAgICAgICAgY29kZUJsb2NrLCBibG9jaywgYnl0ZWNvZGVP
ZmZzZXQsCi0gICAgICAgIFsmXSAoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEluc3RydWN0aW9uKiwg
T3Bjb2RlSUQsIGludCBvcGVyYW5kKSB7Ci0gICAgICAgICAgICBpZiAoaXNWYWxpZFJlZ2lzdGVy
Rm9yTGl2ZW5lc3MoY29kZUJsb2NrLCBvcGVyYW5kKSkKKyAgICAgICAgY29kZUJsb2NrLCBieXRl
Y29kZU9mZnNldCwKKyAgICAgICAgWyZdIChDb2RlQmxvY2sqLCBJbnN0cnVjdGlvbiosIE9wY29k
ZUlELCBpbnQgb3BlcmFuZCkgeworICAgICAgICAgICAgaWYgKGlzVmFsaWRSZWdpc3RlckZvckxp
dmVuZXNzKG9wZXJhbmQpKQogICAgICAgICAgICAgICAgIGRlZihWaXJ0dWFsUmVnaXN0ZXIob3Bl
cmFuZCkudG9Mb2NhbCgpKTsKICAgICAgICAgfSk7CiAKICAgICBjb21wdXRlVXNlc0ZvckJ5dGVj
b2RlT2Zmc2V0KAotICAgICAgICBjb2RlQmxvY2ssIGJsb2NrLCBieXRlY29kZU9mZnNldCwKLSAg
ICAgICAgWyZdIChDb2RlQmxvY2sqIGNvZGVCbG9jaywgSW5zdHJ1Y3Rpb24qLCBPcGNvZGVJRCwg
aW50IG9wZXJhbmQpIHsKLSAgICAgICAgICAgIGlmIChpc1ZhbGlkUmVnaXN0ZXJGb3JMaXZlbmVz
cyhjb2RlQmxvY2ssIG9wZXJhbmQpKQorICAgICAgICBjb2RlQmxvY2ssIGJ5dGVjb2RlT2Zmc2V0
LAorICAgICAgICBbJl0gKENvZGVCbG9jayosIEluc3RydWN0aW9uKiwgT3Bjb2RlSUQsIGludCBv
cGVyYW5kKSB7CisgICAgICAgICAgICBpZiAoaXNWYWxpZFJlZ2lzdGVyRm9yTGl2ZW5lc3Mob3Bl
cmFuZCkpCiAgICAgICAgICAgICAgICAgdXNlKFZpcnR1YWxSZWdpc3RlcihvcGVyYW5kKS50b0xv
Y2FsKCkpOwogICAgICAgICB9KTsKIAogICAgIC8vIElmIHdlIGhhdmUgYW4gZXhjZXB0aW9uIGhh
bmRsZXIsIHdlIHdhbnQgdGhlIGxpdmUtaW4gdmFyaWFibGVzIG9mIHRoZSAKICAgICAvLyBleGNl
cHRpb24gaGFuZGxlciBibG9jayB0byBiZSBpbmNsdWRlZCBpbiB0aGUgbGl2ZS1pbiBvZiB0aGlz
IHBhcnRpY3VsYXIgYnl0ZWNvZGUuCiAgICAgaWYgKEhhbmRsZXJJbmZvKiBoYW5kbGVyID0gY29k
ZUJsb2NrLT5oYW5kbGVyRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpKSB7Ci0gICAg
ICAgIC8vIEZJWE1FOiBUaGlzIHJlc3VtZSBjaGVjayBzaG91bGQgbm90IGJlIG5lZWRlZC4KLSAg
ICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1OTI4MQot
ICAgICAgICBJbnRlcnByZXRlciogaW50ZXJwcmV0ZXIgPSBjb2RlQmxvY2stPnZtKCktPmludGVy
cHJldGVyOwotICAgICAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4gPSBjb2RlQmxv
Y2stPmluc3RydWN0aW9ucygpLmJlZ2luKCk7Ci0gICAgICAgIEluc3RydWN0aW9uKiBpbnN0cnVj
dGlvbiA9ICZpbnN0cnVjdGlvbnNCZWdpbltieXRlY29kZU9mZnNldF07Ci0gICAgICAgIE9wY29k
ZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGluc3RydWN0aW9uLT51Lm9w
Y29kZSk7Ci0gICAgICAgIGlmIChvcGNvZGVJRCAhPSBvcF9yZXN1bWUpIHsKLSAgICAgICAgICAg
IEJ5dGVjb2RlQmFzaWNCbG9jayogaGFuZGxlckJsb2NrID0gZmluZEJhc2ljQmxvY2tXaXRoTGVh
ZGVyT2Zmc2V0KGJhc2ljQmxvY2tzLCBoYW5kbGVyLT50YXJnZXQpOwotICAgICAgICAgICAgQVNT
RVJUKGhhbmRsZXJCbG9jayk7Ci0gICAgICAgICAgICBoYW5kbGVyQmxvY2stPmluKCkuZm9yRWFj
aFNldEJpdCh1c2UpOwotICAgICAgICB9CisgICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogaGFu
ZGxlckJsb2NrID0gZ3JhcGguZmluZEJhc2ljQmxvY2tXaXRoTGVhZGVyT2Zmc2V0KGhhbmRsZXIt
PnRhcmdldCk7CisgICAgICAgIEFTU0VSVChoYW5kbGVyQmxvY2spOworICAgICAgICBoYW5kbGVy
QmxvY2stPmluKCkuZm9yRWFjaFNldEJpdCh1c2UpOwogICAgIH0KIH0KIAotc3RhdGljIHZvaWQg
c3RlcE92ZXJJbnN0cnVjdGlvbihDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Js
b2NrKiBibG9jaywgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYg
YmFzaWNCbG9ja3MsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBGYXN0Qml0VmVjdG9yJiBvdXQp
CitzdGF0aWMgdm9pZCBzdGVwT3Zlckluc3RydWN0aW9uKEJ5dGVjb2RlR3JhcGg8Q29kZUJsb2Nr
PiYgZ3JhcGgsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBGYXN0Qml0VmVjdG9yJiBvdXQpCiB7
CiAgICAgc3RlcE92ZXJJbnN0cnVjdGlvbigKLSAgICAgICAgY29kZUJsb2NrLCBibG9jaywgYmFz
aWNCbG9ja3MsIGJ5dGVjb2RlT2Zmc2V0LAorICAgICAgICBncmFwaCwgYnl0ZWNvZGVPZmZzZXQs
CiAgICAgICAgIFsmXSAodW5zaWduZWQgYml0SW5kZXgpIHsKICAgICAgICAgICAgIC8vIFRoaXMg
aXMgdGhlIHVzZSBmdW5jdG9yLCBzbyB3ZSBzZXQgdGhlIGJpdC4KICAgICAgICAgICAgIG91dC5z
ZXQoYml0SW5kZXgpOwpAQCAtMTYwLDcgKzEwMSw3IEBAIHN0YXRpYyB2b2lkIHN0ZXBPdmVySW5z
dHJ1Y3Rpb24oQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2ss
CiAgICAgICAgIH0pOwogfQogCi1zdGF0aWMgdm9pZCBjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJ5
dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJs
b2NrLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+JiBiYXNpY0Js
b2NrcywgdW5zaWduZWQgdGFyZ2V0T2Zmc2V0LCBGYXN0Qml0VmVjdG9yJiByZXN1bHQpCitzdGF0
aWMgdm9pZCBjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJ5dGVjb2RlT2Zmc2V0KEJ5dGVjb2RlR3Jh
cGg8Q29kZUJsb2NrPiYgZ3JhcGgsIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2ssIHVuc2lnbmVk
IHRhcmdldE9mZnNldCwgRmFzdEJpdFZlY3RvciYgcmVzdWx0KQogewogICAgIEFTU0VSVCghYmxv
Y2stPmlzRXhpdEJsb2NrKCkpOwogICAgIEFTU0VSVCghYmxvY2stPmlzRW50cnlCbG9jaygpKTsK
QEAgLTE3Miw0NCArMTEzLDQ0IEBAIHN0YXRpYyB2b2lkIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9y
Qnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlCiAgICAgICAgIGlm
ICh0YXJnZXRPZmZzZXQgPiBieXRlY29kZU9mZnNldCkKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAKLSAgICAgICAgc3RlcE92ZXJJbnN0cnVjdGlvbihjb2RlQmxvY2ssIGJsb2NrLCBiYXNp
Y0Jsb2NrcywgYnl0ZWNvZGVPZmZzZXQsIG91dCk7CisgICAgICAgIHN0ZXBPdmVySW5zdHJ1Y3Rp
b24oZ3JhcGgsIGJ5dGVjb2RlT2Zmc2V0LCBvdXQpOwogICAgIH0KIAogICAgIHJlc3VsdC5zZXQo
b3V0KTsKIH0KIAotc3RhdGljIHZvaWQgY29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCbG9jayhDb2Rl
QmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaywgVmVjdG9yPHN0ZDo6
dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9ja3MpCitzdGF0aWMgdm9p
ZCBjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJsb2NrKEJ5dGVjb2RlR3JhcGg8Q29kZUJsb2NrPiYg
Z3JhcGgsIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2spCiB7CiAgICAgaWYgKGJsb2NrLT5pc0V4
aXRCbG9jaygpIHx8IGJsb2NrLT5pc0VudHJ5QmxvY2soKSkKICAgICAgICAgcmV0dXJuOwotICAg
IGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQnl0ZWNvZGVPZmZzZXQoY29kZUJsb2NrLCBibG9jaywg
YmFzaWNCbG9ja3MsIGJsb2NrLT5sZWFkZXJCeXRlY29kZU9mZnNldCgpLCBibG9jay0+aW4oKSk7
CisgICAgY29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCeXRlY29kZU9mZnNldChncmFwaCwgYmxvY2ss
IGJsb2NrLT5sZWFkZXJCeXRlY29kZU9mZnNldCgpLCBibG9jay0+aW4oKSk7CiB9CiAKIHZvaWQg
Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpydW5MaXZlbmVzc0ZpeHBvaW50KCkKIHsKLSAgICBV
bmxpbmtlZENvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2sgPSBtX2NvZGVCbG9jay0+dW5saW5r
ZWRDb2RlQmxvY2soKTsKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IG1fZ3JhcGguY29kZUJs
b2NrKCk7CisgICAgVW5saW5rZWRDb2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrID0gY29kZUJs
b2NrLT51bmxpbmtlZENvZGVCbG9jaygpOwogICAgIHVuc2lnbmVkIG51bWJlck9mVmFyaWFibGVz
ID0gdW5saW5rZWRDb2RlQmxvY2stPm1fbnVtQ2FsbGVlTG9jYWxzOwogCi0gICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IG1fYmFzaWNCbG9ja3Muc2l6ZSgpOyBpKyspIHsKLSAgICAgICAgQnl0
ZWNvZGVCYXNpY0Jsb2NrKiBibG9jayA9IG1fYmFzaWNCbG9ja3NbaV0uZ2V0KCk7CisgICAgZm9y
IChzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiYgYmxvY2sgOiBtX2dyYXBoLmJh
c2ljQmxvY2tzKCkpIHsKICAgICAgICAgYmxvY2stPmluKCkucmVzaXplKG51bWJlck9mVmFyaWFi
bGVzKTsKICAgICAgICAgYmxvY2stPm91dCgpLnJlc2l6ZShudW1iZXJPZlZhcmlhYmxlcyk7CiAg
ICAgfQogCiAgICAgYm9vbCBjaGFuZ2VkOwotICAgIG1fYmFzaWNCbG9ja3MubGFzdCgpLT5pbigp
LmNsZWFyQWxsKCk7Ci0gICAgbV9iYXNpY0Jsb2Nrcy5sYXN0KCktPm91dCgpLmNsZWFyQWxsKCk7
CisgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBsYXN0QmxvY2sgPSBtX2dyYXBoLmJhc2ljQmxvY2tz
KCkubGFzdCgpLmdldCgpOworICAgIGxhc3RCbG9jay0+aW4oKS5jbGVhckFsbCgpOworICAgIGxh
c3RCbG9jay0+b3V0KCkuY2xlYXJBbGwoKTsKICAgICBGYXN0Qml0VmVjdG9yIG5ld091dDsKLSAg
ICBuZXdPdXQucmVzaXplKG1fYmFzaWNCbG9ja3MubGFzdCgpLT5vdXQoKS5udW1CaXRzKCkpOwor
ICAgIG5ld091dC5yZXNpemUobGFzdEJsb2NrLT5vdXQoKS5udW1CaXRzKCkpOwogICAgIGRvIHsK
ICAgICAgICAgY2hhbmdlZCA9IGZhbHNlOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2Jh
c2ljQmxvY2tzLnNpemUoKSAtIDE7IGktLTspIHsKLSAgICAgICAgICAgIEJ5dGVjb2RlQmFzaWNC
bG9jayogYmxvY2sgPSBtX2Jhc2ljQmxvY2tzW2ldLmdldCgpOworICAgICAgICBmb3IgKHN0ZDo6
dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+JiBibG9jayA6IG1fZ3JhcGguYmFzaWNCbG9j
a3NJblJldmVyc2VPcmRlcigpKSB7CiAgICAgICAgICAgICBuZXdPdXQuY2xlYXJBbGwoKTsKLSAg
ICAgICAgICAgIGZvciAodW5zaWduZWQgaiA9IDA7IGogPCBibG9jay0+c3VjY2Vzc29ycygpLnNp
emUoKTsgaisrKQotICAgICAgICAgICAgICAgIG5ld091dC5tZXJnZShibG9jay0+c3VjY2Vzc29y
cygpW2pdLT5pbigpKTsKKyAgICAgICAgICAgIGZvciAoQnl0ZWNvZGVCYXNpY0Jsb2NrKiBzdWNj
ZXNzb3IgOiBibG9jay0+c3VjY2Vzc29ycygpKQorICAgICAgICAgICAgICAgIG5ld091dC5tZXJn
ZShzdWNjZXNzb3ItPmluKCkpOwogICAgICAgICAgICAgYm9vbCBvdXREaWRDaGFuZ2UgPSBibG9j
ay0+b3V0KCkuc2V0QW5kQ2hlY2sobmV3T3V0KTsKLSAgICAgICAgICAgIGNvbXB1dGVMb2NhbExp
dmVuZXNzRm9yQmxvY2sobV9jb2RlQmxvY2ssIGJsb2NrLCBtX2Jhc2ljQmxvY2tzKTsKKyAgICAg
ICAgICAgIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQmxvY2sobV9ncmFwaCwgYmxvY2suZ2V0KCkp
OwogICAgICAgICAgICAgY2hhbmdlZCB8PSBvdXREaWRDaGFuZ2U7CiAgICAgICAgIH0KICAgICB9
IHdoaWxlIChjaGFuZ2VkKTsKQEAgLTIxNywxMiArMTU4LDEyIEBAIHZvaWQgQnl0ZWNvZGVMaXZl
bmVzc0FuYWx5c2lzOjpydW5MaXZlbmVzc0ZpeHBvaW50KCkKIAogdm9pZCBCeXRlY29kZUxpdmVu
ZXNzQW5hbHlzaXM6OmdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQodW5zaWduZWQgYnl0
ZWNvZGVPZmZzZXQsIEZhc3RCaXRWZWN0b3ImIHJlc3VsdCkKIHsKLSAgICBCeXRlY29kZUJhc2lj
QmxvY2sqIGJsb2NrID0gZmluZEJhc2ljQmxvY2tGb3JCeXRlY29kZU9mZnNldChtX2Jhc2ljQmxv
Y2tzLCBieXRlY29kZU9mZnNldCk7CisgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jayA9IG1f
Z3JhcGguZmluZEJhc2ljQmxvY2tGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCk7CiAg
ICAgQVNTRVJUKGJsb2NrKTsKICAgICBBU1NFUlQoIWJsb2NrLT5pc0VudHJ5QmxvY2soKSk7CiAg
ICAgQVNTRVJUKCFibG9jay0+aXNFeGl0QmxvY2soKSk7CiAgICAgcmVzdWx0LnJlc2l6ZShibG9j
ay0+b3V0KCkubnVtQml0cygpKTsKLSAgICBjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJ5dGVjb2Rl
T2Zmc2V0KG1fY29kZUJsb2NrLCBibG9jaywgbV9iYXNpY0Jsb2NrcywgYnl0ZWNvZGVPZmZzZXQs
IHJlc3VsdCk7CisgICAgY29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCeXRlY29kZU9mZnNldChtX2dy
YXBoLCBibG9jaywgYnl0ZWNvZGVPZmZzZXQsIHJlc3VsdCk7CiB9CiAKIGJvb2wgQnl0ZWNvZGVM
aXZlbmVzc0FuYWx5c2lzOjpvcGVyYW5kSXNMaXZlQXRCeXRlY29kZU9mZnNldChpbnQgb3BlcmFu
ZCwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpCkBAIC0yNDQsMTEgKzE4NSwxMSBAQCBGYXN0Qml0
VmVjdG9yIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Z2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29k
ZU9mZnNldCh1bnNpZ25lZAogdm9pZCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGVG
dWxsTGl2ZW5lc3MoRnVsbEJ5dGVjb2RlTGl2ZW5lc3MmIHJlc3VsdCkKIHsKICAgICBGYXN0Qml0
VmVjdG9yIG91dDsKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IG1fZ3JhcGguY29kZUJsb2Nr
KCk7CiAgICAgCi0gICAgcmVzdWx0Lm1fbWFwLnJlc2l6ZShtX2NvZGVCbG9jay0+aW5zdHJ1Y3Rp
b25zKCkuc2l6ZSgpKTsKKyAgICByZXN1bHQubV9tYXAucmVzaXplKGNvZGVCbG9jay0+aW5zdHJ1
Y3Rpb25zKCkuc2l6ZSgpKTsKICAgICAKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2Jhc2ljQmxv
Y2tzLnNpemUoKTsgaS0tOykgewotICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrID0g
bV9iYXNpY0Jsb2Nrc1tpXS5nZXQoKTsKKyAgICBmb3IgKHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29k
ZUJhc2ljQmxvY2s+JiBibG9jayA6IG1fZ3JhcGguYmFzaWNCbG9ja3NJblJldmVyc2VPcmRlcigp
KSB7CiAgICAgICAgIGlmIChibG9jay0+aXNFbnRyeUJsb2NrKCkgfHwgYmxvY2stPmlzRXhpdEJs
b2NrKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgCkBAIC0yNTYsNyArMTk3LDcg
QEAgdm9pZCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGVGdWxsTGl2ZW5lc3MoRnVs
bEJ5dGVjb2RlTGl2ZW5lc3MmIHJlc3VsdCkKICAgICAgICAgCiAgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IGJsb2NrLT5ieXRlY29kZU9mZnNldHMoKS5zaXplKCk7IGktLTspIHsKICAgICAgICAg
ICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0ID0gYmxvY2stPmJ5dGVjb2RlT2Zmc2V0cygpW2ld
OwotICAgICAgICAgICAgc3RlcE92ZXJJbnN0cnVjdGlvbihtX2NvZGVCbG9jaywgYmxvY2ssIG1f
YmFzaWNCbG9ja3MsIGJ5dGVjb2RlT2Zmc2V0LCBvdXQpOworICAgICAgICAgICAgc3RlcE92ZXJJ
bnN0cnVjdGlvbihtX2dyYXBoLCBieXRlY29kZU9mZnNldCwgb3V0KTsKICAgICAgICAgICAgIHJl
c3VsdC5tX21hcFtieXRlY29kZU9mZnNldF0gPSBvdXQ7CiAgICAgICAgIH0KICAgICB9CkBAIC0y
NjYsMTEgKzIwNywxMSBAQCB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0ZUtp
bGxzKEJ5dGVjb2RlS2lsbHMmIHJlc3VsdCkKIHsKICAgICBGYXN0Qml0VmVjdG9yIG91dDsKICAg
ICAKLSAgICByZXN1bHQubV9jb2RlQmxvY2sgPSBtX2NvZGVCbG9jazsKLSAgICByZXN1bHQubV9r
aWxsU2V0cyA9IHN0ZDo6bWFrZV91bmlxdWU8Qnl0ZWNvZGVLaWxsczo6S2lsbFNldFtdPihtX2Nv
ZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9j
ayA9IG1fZ3JhcGguY29kZUJsb2NrKCk7CisgICAgcmVzdWx0Lm1fY29kZUJsb2NrID0gY29kZUJs
b2NrOworICAgIHJlc3VsdC5tX2tpbGxTZXRzID0gc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZUtp
bGxzOjpLaWxsU2V0W10+KGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKICAgICAK
LSAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2Jhc2ljQmxvY2tzLnNpemUoKTsgaS0tOykgewotICAg
ICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrID0gbV9iYXNpY0Jsb2Nrc1tpXS5nZXQoKTsK
KyAgICBmb3IgKHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+JiBibG9jayA6IG1f
Z3JhcGguYmFzaWNCbG9ja3NJblJldmVyc2VPcmRlcigpKSB7CiAgICAgICAgIGlmIChibG9jay0+
aXNFbnRyeUJsb2NrKCkgfHwgYmxvY2stPmlzRXhpdEJsb2NrKCkpCiAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgCkBAIC0yNzksNyArMjIwLDcgQEAgdm9pZCBCeXRlY29kZUxpdmVuZXNz
QW5hbHlzaXM6OmNvbXB1dGVLaWxscyhCeXRlY29kZUtpbGxzJiByZXN1bHQpCiAgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IGJsb2NrLT5ieXRlY29kZU9mZnNldHMoKS5zaXplKCk7IGktLTspIHsK
ICAgICAgICAgICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0ID0gYmxvY2stPmJ5dGVjb2RlT2Zm
c2V0cygpW2ldOwogICAgICAgICAgICAgc3RlcE92ZXJJbnN0cnVjdGlvbigKLSAgICAgICAgICAg
ICAgICBtX2NvZGVCbG9jaywgYmxvY2ssIG1fYmFzaWNCbG9ja3MsIGJ5dGVjb2RlT2Zmc2V0LAor
ICAgICAgICAgICAgICAgIG1fZ3JhcGgsIGJ5dGVjb2RlT2Zmc2V0LAogICAgICAgICAgICAgICAg
IFsmXSAodW5zaWduZWQgaW5kZXgpIHsKICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyBm
b3IgdXNlcy4KICAgICAgICAgICAgICAgICAgICAgaWYgKG91dC5nZXQoaW5kZXgpKQpAQCAtMjk3
LDEyICsyMzgsMTMgQEAgdm9pZCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGVLaWxs
cyhCeXRlY29kZUtpbGxzJiByZXN1bHQpCiAKIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lz
OjpkdW1wUmVzdWx0cygpCiB7Ci0gICAgZGF0YUxvZygiXG5EdW1waW5nIGJ5dGVjb2RlIGxpdmVu
ZXNzIGZvciAiLCAqbV9jb2RlQmxvY2ssICI6XG4iKTsKLSAgICBJbnRlcnByZXRlciogaW50ZXJw
cmV0ZXIgPSBtX2NvZGVCbG9jay0+dm0oKS0+aW50ZXJwcmV0ZXI7Ci0gICAgSW5zdHJ1Y3Rpb24q
IGluc3RydWN0aW9uc0JlZ2luID0gbV9jb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCk7
Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fYmFzaWNCbG9ja3Muc2l6ZSgpOyBpKysp
IHsKLSAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jayA9IG1fYmFzaWNCbG9ja3NbaV0u
Z2V0KCk7Ci0gICAgICAgIGRhdGFMb2dGKCJcbkJ5dGVjb2RlIGJhc2ljIGJsb2NrICV1OiAlcCAo
b2Zmc2V0OiAldSwgbGVuZ3RoOiAldSlcbiIsIGksIGJsb2NrLCBibG9jay0+bGVhZGVyQnl0ZWNv
ZGVPZmZzZXQoKSwgYmxvY2stPnRvdGFsQnl0ZWNvZGVMZW5ndGgoKSk7CisgICAgQ29kZUJsb2Nr
KiBjb2RlQmxvY2sgPSBtX2dyYXBoLmNvZGVCbG9jaygpOworICAgIGRhdGFMb2coIlxuRHVtcGlu
ZyBieXRlY29kZSBsaXZlbmVzcyBmb3IgIiwgKmNvZGVCbG9jaywgIjpcbiIpOworICAgIEludGVy
cHJldGVyKiBpbnRlcnByZXRlciA9IGNvZGVCbG9jay0+dm0oKS0+aW50ZXJwcmV0ZXI7CisgICAg
SW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luID0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMo
KS5iZWdpbigpOworICAgIHVuc2lnbmVkIGkgPSAwOworICAgIGZvciAoc3RkOjp1bmlxdWVfcHRy
PEJ5dGVjb2RlQmFzaWNCbG9jaz4mIGJsb2NrIDogbV9ncmFwaC5iYXNpY0Jsb2NrcygpKSB7Cisg
ICAgICAgIGRhdGFMb2dGKCJcbkJ5dGVjb2RlIGJhc2ljIGJsb2NrICV1OiAlcCAob2Zmc2V0OiAl
dSwgbGVuZ3RoOiAldSlcbiIsIGkrKywgYmxvY2suZ2V0KCksIGJsb2NrLT5sZWFkZXJCeXRlY29k
ZU9mZnNldCgpLCBibG9jay0+dG90YWxCeXRlY29kZUxlbmd0aCgpKTsKICAgICAgICAgZGF0YUxv
Z0YoIlN1Y2Nlc3NvcnM6ICIpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSAwOyBqIDwgYmxv
Y2stPnN1Y2Nlc3NvcnMoKS5zaXplKCk7IGorKykgewogICAgICAgICAgICAgQnl0ZWNvZGVCYXNp
Y0Jsb2NrKiBzdWNjZXNzb3IgPSBibG9jay0+c3VjY2Vzc29ycygpW2pdOwpAQCAtMzEwLDExICsy
NTIsMTEgQEAgdm9pZCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmR1bXBSZXN1bHRzKCkKICAg
ICAgICAgfQogICAgICAgICBkYXRhTG9nRigiXG4iKTsKICAgICAgICAgaWYgKGJsb2NrLT5pc0Vu
dHJ5QmxvY2soKSkgewotICAgICAgICAgICAgZGF0YUxvZ0YoIkVudHJ5IGJsb2NrICVwXG4iLCBi
bG9jayk7CisgICAgICAgICAgICBkYXRhTG9nRigiRW50cnkgYmxvY2sgJXBcbiIsIGJsb2NrLmdl
dCgpKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAgICAgICAgIGlmIChibG9j
ay0+aXNFeGl0QmxvY2soKSkgewotICAgICAgICAgICAgZGF0YUxvZ0YoIkV4aXQgYmxvY2s6ICVw
XG4iLCBibG9jayk7CisgICAgICAgICAgICBkYXRhTG9nRigiRXhpdCBibG9jazogJXBcbiIsIGJs
b2NrLmdldCgpKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAgICAgICAgIGZv
ciAodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQgPSBibG9jay0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQo
KTsgYnl0ZWNvZGVPZmZzZXQgPCBibG9jay0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKSArIGJsb2Nr
LT50b3RhbEJ5dGVjb2RlTGVuZ3RoKCk7KSB7CkBAIC0zMjcsNyArMjY5LDcgQEAgdm9pZCBCeXRl
Y29kZUxpdmVuZXNzQW5hbHlzaXM6OmR1bXBSZXN1bHRzKCkKICAgICAgICAgICAgICAgICAgICAg
ZGF0YUxvZ0YoIiV1ICIsIGopOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZGF0YUxvZ0Yo
IlxuIik7Ci0gICAgICAgICAgICBtX2NvZGVCbG9jay0+ZHVtcEJ5dGVjb2RlKFdURjo6ZGF0YUZp
bGUoKSwgbV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVjKCksIGluc3RydWN0
aW9uc0JlZ2luLCBjdXJyZW50SW5zdHJ1Y3Rpb24pOworICAgICAgICAgICAgY29kZUJsb2NrLT5k
dW1wQnl0ZWNvZGUoV1RGOjpkYXRhRmlsZSgpLCBjb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpLT5n
bG9iYWxFeGVjKCksIGluc3RydWN0aW9uc0JlZ2luLCBjdXJyZW50SW5zdHJ1Y3Rpb24pOwogCiAg
ICAgICAgICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGludGVycHJldGVyLT5nZXRPcGNvZGVJRChp
bnN0cnVjdGlvbnNCZWdpbltieXRlY29kZU9mZnNldF0udS5vcGNvZGUpOwogICAgICAgICAgICAg
dW5zaWduZWQgb3Bjb2RlTGVuZ3RoID0gb3Bjb2RlTGVuZ3Roc1tvcGNvZGVJRF07CkBAIC0zNDYs
OCArMjg4LDYgQEAgdm9pZCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmR1bXBSZXN1bHRzKCkK
IAogdm9pZCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGUoKQogewotICAgIGNvbXB1
dGVCeXRlY29kZUJhc2ljQmxvY2tzKG1fY29kZUJsb2NrLCBtX2Jhc2ljQmxvY2tzKTsKLSAgICBB
U1NFUlQobV9iYXNpY0Jsb2Nrcy5zaXplKCkpOwogICAgIHJ1bkxpdmVuZXNzRml4cG9pbnQoKTsK
IAogICAgIGlmIChPcHRpb25zOjpkdW1wQnl0ZWNvZGVMaXZlbmVzc1Jlc3VsdHMoKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5h
bHlzaXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNz
QW5hbHlzaXMuaAppbmRleCBlY2UxNmYyMWYwMTUxMGE2NDI3ZmQ4NDExNDA3OWJlZDg3MGMwODc1
Li4yMTgyYzIwMGNlYjg3MzkyNDUzMjc0NjYxZjhjNzRlMjI2MjM0ZjIwIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFs
eXNpcy5oCkBAIC0yMywxMCArMjMsMTEgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KICAqLwogCi0jaWZuZGVmIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc19oCi0jZGVmaW5l
IEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc19oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkJ5
dGVjb2RlQmFzaWNCbG9jay5oIgorI2luY2x1ZGUgIkJ5dGVjb2RlR3JhcGguaCIKKyNpbmNsdWRl
ICJDb2RlQmxvY2suaCIKICNpbmNsdWRlIDx3dGYvRmFzdEJpdFZlY3Rvci5oPgogI2luY2x1ZGUg
PHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtMzQsNyArMzUsNiBA
QAogbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIEJ5dGVjb2RlS2lsbHM7Ci1jbGFzcyBDb2RlQmxv
Y2s7CiBjbGFzcyBGdWxsQnl0ZWNvZGVMaXZlbmVzczsKIAogY2xhc3MgQnl0ZWNvZGVMaXZlbmVz
c0FuYWx5c2lzIHsKQEAgLTU2LDE0ICs1NiwxMiBAQCBjbGFzcyBCeXRlY29kZUxpdmVuZXNzQW5h
bHlzaXMgewogCiAgICAgdm9pZCBnZXRMaXZlbmVzc0luZm9BdEJ5dGVjb2RlT2Zmc2V0KHVuc2ln
bmVkIGJ5dGVjb2RlT2Zmc2V0LCBGYXN0Qml0VmVjdG9yJik7CiAKLSAgICBDb2RlQmxvY2sqIG1f
Y29kZUJsb2NrOwotICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2Nr
Pj4gbV9iYXNpY0Jsb2NrczsKKyAgICBCeXRlY29kZUdyYXBoPENvZGVCbG9jaz4gbV9ncmFwaDsK
IH07CiAKIGlubGluZSBib29sIG9wZXJhbmRJc0Fsd2F5c0xpdmUoaW50IG9wZXJhbmQpOwogaW5s
aW5lIGJvb2wgb3BlcmFuZFRoYXRJc05vdEFsd2F5c0xpdmVJc0xpdmUoY29uc3QgRmFzdEJpdFZl
Y3RvciYgb3V0LCBpbnQgb3BlcmFuZCk7CiBpbmxpbmUgYm9vbCBvcGVyYW5kSXNMaXZlKGNvbnN0
IEZhc3RCaXRWZWN0b3ImIG91dCwgaW50IG9wZXJhbmQpOworaW5saW5lIGJvb2wgaXNWYWxpZFJl
Z2lzdGVyRm9yTGl2ZW5lc3MoaW50IG9wZXJhbmQpOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKLQot
I2VuZGlmIC8vIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc19oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzSW5saW5lcy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNp
c0lubGluZXMuaAppbmRleCA5YjVjNzU1ZmNiNmNkNTE4MDUxNDUwMDc4OTIyYWM0ZDZkNGQyMzhm
Li45MGMyOTI5OWEyNWY1NzljZGE2NDlkOTg3OGNlMTU0OGM0OGM3NTg4IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzSW5s
aW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVu
ZXNzQW5hbHlzaXNJbmxpbmVzLmgKQEAgLTUwLDYgKzUwLDE0IEBAIGlubGluZSBib29sIG9wZXJh
bmRJc0xpdmUoY29uc3QgRmFzdEJpdFZlY3RvciYgb3V0LCBpbnQgb3BlcmFuZCkKICAgICByZXR1
cm4gb3BlcmFuZElzQWx3YXlzTGl2ZShvcGVyYW5kKSB8fCBvcGVyYW5kVGhhdElzTm90QWx3YXlz
TGl2ZUlzTGl2ZShvdXQsIG9wZXJhbmQpOwogfQogCitpbmxpbmUgYm9vbCBpc1ZhbGlkUmVnaXN0
ZXJGb3JMaXZlbmVzcyhpbnQgb3BlcmFuZCkKK3sKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgdmlydHVh
bFJlZyhvcGVyYW5kKTsKKyAgICBpZiAodmlydHVhbFJlZy5pc0NvbnN0YW50KCkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gdmlydHVhbFJlZy5pc0xvY2FsKCk7Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzSW5s
aW5lc19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVNb2RpZmljYXRpb25TZXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlTW9kaWZpY2F0aW9uU2V0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YWMyZjhlY2ExMTU5YzIzMTZh
YjUxOGIzY2FhYTc0NzQ4ZWJhNTYwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTW9kaWZpY2F0aW9uU2V0LmNwcApAQCAtMCwwICsxLDg0
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVh
QGdtYWlsLmNvbT4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkJ5
dGVjb2RlTW9kaWZpY2F0aW9uU2V0LmgiCisKKyNpbmNsdWRlIDx3dGYvQnViYmxlU29ydC5oPgor
CituYW1lc3BhY2UgSlNDIHsKKworaW50IEJ5dGVjb2RlTW9kaWZpY2F0aW9uU2V0OjphZGp1c3RP
ZmZzZXQoaW50IGJ5dGVjb2RlT2Zmc2V0LCBpbnQganVtcFRhcmdldCkKK3sKKyAgICBpZiAoYnl0
ZWNvZGVPZmZzZXQgPCBqdW1wVGFyZ2V0KSB7CisgICAgICAgIGF1dG8gc3RhcnQgPSBzdGQ6Omxv
d2VyX2JvdW5kKG1faW5zZXJ0aW9ucy5iZWdpbigpLCBtX2luc2VydGlvbnMuZW5kKCksIGJ5dGVj
b2RlT2Zmc2V0LCBbJl0gKGNvbnN0IEluc2VydGlvbiYgaW5zZXJ0aW9uLCBpbnQgYnl0ZWNvZGVP
ZmZzZXQpIHsKKyAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KGluc2VydGlvbi5p
bmRleCgpKSA8IGJ5dGVjb2RlT2Zmc2V0OworICAgICAgICB9KTsKKyAgICAgICAgaWYgKHN0YXJ0
ICE9IG1faW5zZXJ0aW9ucy5lbmQoKSkgeworICAgICAgICAgICAgYXV0byBlbmQgPSBzdGQ6Omxv
d2VyX2JvdW5kKG1faW5zZXJ0aW9ucy5iZWdpbigpLCBtX2luc2VydGlvbnMuZW5kKCksIGp1bXBU
YXJnZXQsIFsmXSAoY29uc3QgSW5zZXJ0aW9uJiBpbnNlcnRpb24sIGludCBqdW1wVGFyZ2V0KSB7
CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oaW5zZXJ0aW9uLmluZGV4
KCkpIDwganVtcFRhcmdldDsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgZm9yICg7IHN0
YXJ0ICE9IGVuZDsgKytzdGFydCkgeworICAgICAgICAgICAgICAgIGlmIChzdGFydC0+ZWxlbWVu
dCgpLnR5cGUgPT0gQ29tbWFuZDo6VHlwZTo6UmVtb3ZlKQorICAgICAgICAgICAgICAgICAgICBq
dW1wVGFyZ2V0IC09IHN0YXJ0LT5lbGVtZW50KCkubGVuZ3RoOworICAgICAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICAgICAganVtcFRhcmdldCArPSBzdGFydC0+ZWxlbWVudCgpLmxl
bmd0aDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4ganVtcFRhcmdl
dCAtIGJ5dGVjb2RlT2Zmc2V0OworICAgIH0KKworICAgIGlmIChieXRlY29kZU9mZnNldCA9PSBq
dW1wVGFyZ2V0KQorICAgICAgICByZXR1cm4gMDsKKworICAgIHJldHVybiAtYWRqdXN0T2Zmc2V0
KGp1bXBUYXJnZXQsIGJ5dGVjb2RlT2Zmc2V0KTsKK30KKwordm9pZCBCeXRlY29kZU1vZGlmaWNh
dGlvblNldDo6YXBwbHlNb2RpZmljYXRpb24oKQoreworICAgIGZvciAoc2l6ZV90IGluc2VydGlv
bkluZGV4ID0gbV9pbnNlcnRpb25zLnNpemUoKTsgaW5zZXJ0aW9uSW5kZXgtLTspIHsKKyAgICAg
ICAgY29uc3QgSW5zZXJ0aW9uJiBpbnNlcnRpb24gPSBtX2luc2VydGlvbnNbaW5zZXJ0aW9uSW5k
ZXhdOworICAgICAgICBpZiAoaW5zZXJ0aW9uLmVsZW1lbnQoKS50eXBlID09IENvbW1hbmQ6OlR5
cGU6OlJlbW92ZSkKKyAgICAgICAgICAgIG1fZ3JhcGguaW5zdHJ1Y3Rpb25zKCkucmVtb3ZlKGlu
c2VydGlvbi5pbmRleCgpLCBpbnNlcnRpb24uZWxlbWVudCgpLmxlbmd0aCk7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIG1fZ3JhcGguaW5zdHJ1Y3Rpb25zKCkuaW5zZXJ0KGluc2VydGlvbi5p
bmRleCgpLCBpbnNlcnRpb24uZWxlbWVudCgpLmJ5dGVjb2RlLmluc3RydWN0aW9ucywgb3Bjb2Rl
TGVuZ3RoKGluc2VydGlvbi5lbGVtZW50KCkuYnl0ZWNvZGUuaW5zdHJ1Y3Rpb25zWzBdLnUub3Bj
b2RlKSk7CisgICAgfQorICAgIG1faW5zZXJ0aW9ucy5jbGVhcigpOworfQorCit2b2lkIEJ5dGVj
b2RlTW9kaWZpY2F0aW9uU2V0OjpleGVjdXRlKCkKK3sKKyAgICBXVEY6OmJ1YmJsZVNvcnQobV9p
bnNlcnRpb25zLmJlZ2luKCksIG1faW5zZXJ0aW9ucy5lbmQoKSwgW10gKGNvbnN0IEluc2VydGlv
biYgbGhzLCBjb25zdCBJbnNlcnRpb24mIHJocykgeworICAgICAgICAvLyBXZSB3b3VsZCBsaWtl
IHRvIHBlcmZvcm0gcmVtb3ZlIG9wZXJhdGlvbiBiZWZvcmUgaW5zZXJ0aW9uLgorICAgICAgICBp
ZiAobGhzLmluZGV4KCkgPT0gcmhzLmluZGV4KCkpCisgICAgICAgICAgICByZXR1cm4gcmhzLmVs
ZW1lbnQoKS50eXBlID09IENvbW1hbmQ6OlR5cGU6OlJlbW92ZTsKKyAgICAgICAgcmV0dXJuIGxo
cyA8IHJoczsKKyAgICB9KTsKKworICAgIFVubGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBt
X2dyYXBoLmNvZGVCbG9jaygpOworICAgIGNvZGVCbG9jay0+YXBwbHlNb2RpZmljYXRpb24oKnRo
aXMpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZU1vZGlmaWNhdGlvblNldC5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTW9kaWZpY2F0aW9uU2V0LmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NzkzOWRhYTQ1YzhlMjY0MjA5ZTdhMjJlY2YzZTBkNzhhNGFkMzdhNwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZU1vZGlmaWNhdGlvblNl
dC5oCkBAIC0wLDAgKzEsODggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgWXVzdWtlIFN1
enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2luY2x1ZGUgIkJ5dGVjb2RlR3JhcGguaCIKKyNpbmNsdWRlICJCeXRlY29kZXMuaCIKKyNpbmNs
dWRlICJVbmxpbmtlZENvZGVCbG9jay5oIgorI2luY2x1ZGUgPHd0Zi9JbnNlcnRpb24uaD4KKwor
bmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEJ5dGVjb2RlTW9kaWZpY2F0aW9uU2V0IHsKK3B1Ymxp
YzoKKyAgICBzdHJ1Y3QgSW5zZXJ0ZWRCeXRlY29kZSB7CisgICAgICAgIFVubGlua2VkSW5zdHJ1
Y3Rpb24gaW5zdHJ1Y3Rpb25zW01BWF9PUENPREVfTEVOR1RIX09GX0JZVEVDT0RFXTsKKyAgICB9
OworCisgICAgc3RydWN0IENvbW1hbmQgeworICAgICAgICBlbnVtIGNsYXNzIFR5cGUgeworICAg
ICAgICAgICAgSW5zZXJ0LAorICAgICAgICAgICAgUmVtb3ZlLAorICAgICAgICB9OworCisgICAg
ICAgIFR5cGUgdHlwZTsKKyAgICAgICAgc2l6ZV90IGxlbmd0aDsKKyAgICAgICAgSW5zZXJ0ZWRC
eXRlY29kZSBieXRlY29kZTsKKyAgICB9OworCisgICAgdHlwZWRlZiBXVEY6Okluc2VydGlvbjxD
b21tYW5kPiBJbnNlcnRpb247CisKKyAgICBCeXRlY29kZU1vZGlmaWNhdGlvblNldChCeXRlY29k
ZUdyYXBoPFVubGlua2VkQ29kZUJsb2NrPiYgZ3JhcGgpCisgICAgICAgIDogbV9ncmFwaChncmFw
aCkKKyAgICB7CisgICAgfQorCisgICAgdGVtcGxhdGU8Y2xhc3MuLi4gQXJncz4KKyAgICB2b2lk
IGluc2VydCh1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgT3Bjb2RlSUQgb3Bjb2RlSUQsIEFyZ3Mu
Li4gYXJncykKKyAgICB7CisgICAgICAgIEluc2VydGVkQnl0ZWNvZGUgYnl0ZWNvZGUgPSB7IHsK
KyAgICAgICAgICAgIFVubGlua2VkSW5zdHJ1Y3Rpb24ob3Bjb2RlSUQpLAorICAgICAgICAgICAg
VW5saW5rZWRJbnN0cnVjdGlvbihhcmdzKS4uLgorICAgICAgICB9IH07CisgICAgICAgIG1faW5z
ZXJ0aW9ucy5hcHBlbmQoSW5zZXJ0aW9uKGJ5dGVjb2RlT2Zmc2V0LCBDb21tYW5kIHsgQ29tbWFu
ZDo6VHlwZTo6SW5zZXJ0LCBvcGNvZGVMZW5ndGgob3Bjb2RlSUQpLCBieXRlY29kZSB9KSk7Cisg
ICAgfQorCisgICAgdm9pZCByZW1vdmVCeXRlY29kZSh1bnNpZ25lZCBieXRlY29kZU9mZnNldCkK
KyAgICB7CisgICAgICAgIG1faW5zZXJ0aW9ucy5hcHBlbmQoSW5zZXJ0aW9uKGJ5dGVjb2RlT2Zm
c2V0LCBDb21tYW5kIHsgQ29tbWFuZDo6VHlwZTo6UmVtb3ZlLCBvcGNvZGVMZW5ndGgobV9ncmFw
aC5pbnN0cnVjdGlvbnMoKVtieXRlY29kZU9mZnNldF0udS5vcGNvZGUpLCBJbnNlcnRlZEJ5dGVj
b2RlIHsgfSB9KSk7CisgICAgfQorCisgICAgdm9pZCBleGVjdXRlKCk7CisKKyAgICBCeXRlY29k
ZUdyYXBoPFVubGlua2VkQ29kZUJsb2NrPiYgZ3JhcGgoKSB7IHJldHVybiBtX2dyYXBoOyB9CisK
KyAgICBpbnQgYWRqdXN0T2Zmc2V0KGludCBieXRlY29kZU9mZnNldCwgaW50IGp1bXBUYXJnZXQp
OworCitwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBVbmxpbmtlZENvZGVCbG9jazsKKyAgICB2
b2lkIGFwcGx5TW9kaWZpY2F0aW9uKCk7CisKKyAgICBCeXRlY29kZUdyYXBoPFVubGlua2VkQ29k
ZUJsb2NrPiYgbV9ncmFwaDsKKyAgICBWZWN0b3I8SW5zZXJ0aW9uLCA4PiBtX2luc2VydGlvbnM7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKaW5kZXggNTcwODQ0YzM1ZDkwMjVlZTkxYWQ0Njk4YmFi
OWJjMWE2N2ZkODM0OS4uNGNhNThkMDNmYzlmNzc2MDBiMTBmYzk3NjIzNzlkZjZmNWQ5YTU0MyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVm
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgK
QEAgLTI3LDE4ICsyNywxMyBAQAogI2RlZmluZSBCeXRlY29kZVVzZURlZl9oCiAKICNpbmNsdWRl
ICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogCiBuYW1lc3BhY2UgSlND
IHsKIAotdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KLXZvaWQgY29tcHV0ZVVzZXNGb3JCeXRl
Y29kZU9mZnNldCgKLSAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Jsb2Nr
KiBibG9jaywgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3Ip
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBCbG9jaywgdHlwZW5hbWUgRnVuY3RvciwgdHlwZW5hbWUgSW5z
dHJ1Y3Rpb24+Cit2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoQmxvY2sqIGNvZGVC
bG9jaywgT3Bjb2RlSUQgb3Bjb2RlSUQsIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgY29uc3Qg
RnVuY3RvciYgZnVuY3RvcikKIHsKLSAgICBJbnRlcnByZXRlciogaW50ZXJwcmV0ZXIgPSBjb2Rl
QmxvY2stPnZtKCktPmludGVycHJldGVyOwotICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNC
ZWdpbiA9IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsKLSAgICBJbnN0cnVjdGlv
biogaW5zdHJ1Y3Rpb24gPSAmaW5zdHJ1Y3Rpb25zQmVnaW5bYnl0ZWNvZGVPZmZzZXRdOwotICAg
IE9wY29kZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGluc3RydWN0aW9u
LT51Lm9wY29kZSk7Ci0KICAgICBpZiAob3Bjb2RlSUQgIT0gb3BfZW50ZXIgJiYgY29kZUJsb2Nr
LT53YXNDb21waWxlZFdpdGhEZWJ1Z2dpbmdPcGNvZGVzKCkgJiYgY29kZUJsb2NrLT5zY29wZVJl
Z2lzdGVyKCkuaXNWYWxpZCgpKQogICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rp
b24sIG9wY29kZUlELCBjb2RlQmxvY2stPnNjb3BlUmVnaXN0ZXIoKS5vZmZzZXQoKSk7CiAKQEAg
LTc1LDggKzcwLDcgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAogICAgIGNh
c2Ugb3Bfam5lcV9udWxsOgogICAgIGNhc2Ugb3BfZGVjOgogICAgIGNhc2Ugb3BfaW5jOgotICAg
IGNhc2Ugb3BfbG9nX3NoYWRvd19jaGlja2VuX3Byb2xvZ3VlOgotICAgIGNhc2Ugb3BfcmVzdW1l
OiB7CisgICAgY2FzZSBvcF9sb2dfc2hhZG93X2NoaWNrZW5fcHJvbG9ndWU6IHsKICAgICAgICAg
QVNTRVJUKG9wY29kZUxlbmd0aHNbb3Bjb2RlSURdID4gMSk7CiAgICAgICAgIGZ1bmN0b3IoY29k
ZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7
CiAgICAgICAgIHJldHVybjsKQEAgLTI4NywyMiArMjgxLDEzIEBAIHZvaWQgY29tcHV0ZVVzZXNG
b3JCeXRlY29kZU9mZnNldCgKICAgICAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVj
dGlvbiwgb3Bjb2RlSUQsIGNvZGVCbG9jay0+c2NvcGVSZWdpc3RlcigpLm9mZnNldCgpKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBjYXNlIG9wX3NhdmU6IHsKLSAgICAgICAgZnVuY3Rv
cihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb25bMV0udS5vcGVy
YW5kKTsKLSAgICAgICAgdW5zaWduZWQgbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0ID0gYnl0ZWNv
ZGVPZmZzZXQgKyBpbnN0cnVjdGlvblszXS51Lm9wZXJhbmQ7Ci0gICAgICAgIEJ5dGVjb2RlQmFz
aWNCbG9jayogbWVyZ2VQb2ludEJsb2NrID0gbnVsbHB0cjsKLSAgICAgICAgZm9yIChCeXRlY29k
ZUJhc2ljQmxvY2sqIHN1Y2Nlc3NvciA6IGJsb2NrLT5zdWNjZXNzb3JzKCkpIHsKLSAgICAgICAg
ICAgIGlmIChzdWNjZXNzb3ItPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCkgPT0gbWVyZ2VQb2ludEJ5
dGVjb2RlT2Zmc2V0KSB7Ci0gICAgICAgICAgICAgICAgbWVyZ2VQb2ludEJsb2NrID0gc3VjY2Vz
c29yOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0g
ICAgICAgIEFTU0VSVChtZXJnZVBvaW50QmxvY2spOwotICAgICAgICBtZXJnZVBvaW50QmxvY2st
PmluKCkuZm9yRWFjaFNldEJpdChbJl0odW5zaWduZWQgbG9jYWwpIHsKLSAgICAgICAgICAgIGZ1
bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIHZpcnR1YWxSZWdpc3RlckZv
ckxvY2FsKGxvY2FsKS5vZmZzZXQoKSk7Ci0gICAgICAgIH0pOworCisgICAgY2FzZSBvcF9zYXZl
OgorICAgIGNhc2Ugb3BfcmVzdW1lOiB7CisgICAgICAgIC8vIERvIG5vdGhpbmcgaW4gbGl2ZW5l
c3MgYW5hbHlzaXMuCiAgICAgICAgIHJldHVybjsKICAgICB9CisKICAgICBkZWZhdWx0OgogICAg
ICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBicmVhazsKQEAgLTMx
MCwxMiArMjk1LDE4IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCgKIH0KIAog
dGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KLXZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZU9m
ZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaywgdW5z
aWduZWQgYnl0ZWNvZGVPZmZzZXQsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCit2b2lkIGNvbXB1
dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIHVuc2lnbmVkIGJ5
dGVjb2RlT2Zmc2V0LCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQogewogICAgIEludGVycHJldGVy
KiBpbnRlcnByZXRlciA9IGNvZGVCbG9jay0+dm0oKS0+aW50ZXJwcmV0ZXI7CiAgICAgSW5zdHJ1
Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luID0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdp
bigpOwogICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9ICZpbnN0cnVjdGlvbnNCZWdpblti
eXRlY29kZU9mZnNldF07CiAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnRlcnByZXRlci0+Z2V0
T3Bjb2RlSUQoaW5zdHJ1Y3Rpb24tPnUub3Bjb2RlKTsKKyAgICBjb21wdXRlVXNlc0ZvckJ5dGVj
b2RlT2Zmc2V0KGNvZGVCbG9jaywgb3Bjb2RlSUQsIGluc3RydWN0aW9uLCBmdW5jdG9yKTsKK30K
KwordGVtcGxhdGU8dHlwZW5hbWUgQmxvY2ssIHR5cGVuYW1lIEluc3RydWN0aW9uLCB0eXBlbmFt
ZSBGdW5jdG9yPgordm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KEJsb2NrKiBjb2Rl
QmxvY2ssIE9wY29kZUlEIG9wY29kZUlELCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIGNvbnN0
IEZ1bmN0b3ImIGZ1bmN0b3IpCit7CiAgICAgc3dpdGNoIChvcGNvZGVJRCkgewogICAgIC8vIFRo
ZXNlIGRvbid0IGRlZmluZSBhbnl0aGluZy4KICAgICBjYXNlIG9wX2NvcHlfcmVzdDoKQEAgLTMy
Myw3ICszMTQsNiBAQCB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvYwogICAgIGNhc2Ugb3BfZW5kOgog
ICAgIGNhc2Ugb3BfdGhyb3c6CiAgICAgY2FzZSBvcF90aHJvd19zdGF0aWNfZXJyb3I6Ci0gICAg
Y2FzZSBvcF9zYXZlOgogICAgIGNhc2Ugb3BfYXNzZXJ0OgogICAgIGNhc2Ugb3BfZGVidWc6CiAg
ICAgY2FzZSBvcF9yZXQ6CkBAIC00NjMsNyArNDUzLDcgQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5
dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJs
b2MKICAgICBjYXNlIG9wX2RlbF9ieV9pZDoKICAgICBjYXNlIG9wX2RlbF9ieV92YWw6CiAgICAg
Y2FzZSBvcF91bnNpZ25lZDoKLSAgICBjYXNlIG9wX2dldF9mcm9tX2FyZ3VtZW50czogCisgICAg
Y2FzZSBvcF9nZXRfZnJvbV9hcmd1bWVudHM6CiAgICAgY2FzZSBvcF9nZXRfcmVzdF9sZW5ndGg6
IHsKICAgICAgICAgQVNTRVJUKG9wY29kZUxlbmd0aHNbb3Bjb2RlSURdID4gMSk7CiAgICAgICAg
IGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzFd
LnUub3BlcmFuZCk7CkBAIC00ODAsMTggKzQ3MCwyNyBAQCB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0
ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxv
YwogICAgICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwg
dmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaSkub2Zmc2V0KCkpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQorICAgIGNhc2Ugb3Bfc2F2ZToKICAgICBjYXNlIG9wX3Jlc3VtZTogewotICAgICAgICBS
RUxFQVNFX0FTU0VSVChibG9jay0+c3VjY2Vzc29ycygpLnNpemUoKSA9PSAxKTsKLSAgICAgICAg
Ly8gRklYTUU6IFRoaXMgaXMgcmVhbGx5IGRpcnR5LgotICAgICAgICAvLyBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU5MjgxCi0gICAgICAgIGJsb2NrLT5zdWNjZXNz
b3JzKClbMF0tPmluKCkuZm9yRWFjaFNldEJpdChbJl0odW5zaWduZWQgbG9jYWwpIHsKLSAgICAg
ICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIHZpcnR1YWxS
ZWdpc3RlckZvckxvY2FsKGxvY2FsKS5vZmZzZXQoKSk7Ci0gICAgICAgIH0pOworICAgICAgICAv
LyBEbyBub3RoaW5nIGluIGxpdmVuZXNzIGFuYWx5c2lzLgogICAgICAgICByZXR1cm47CiAgICAg
fQorICAgIGRlZmF1bHQ6CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgIHJldHVybjsKICAgICB9CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+Cit2
b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIHVu
c2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQoreworICAgIElu
dGVycHJldGVyKiBpbnRlcnByZXRlciA9IGNvZGVCbG9jay0+dm0oKS0+aW50ZXJwcmV0ZXI7Cisg
ICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luID0gY29kZUJsb2NrLT5pbnN0cnVjdGlv
bnMoKS5iZWdpbigpOworICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9ICZpbnN0cnVjdGlv
bnNCZWdpbltieXRlY29kZU9mZnNldF07CisgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnRlcnBy
ZXRlci0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb24tPnUub3Bjb2RlKTsKKyAgICBjb21wdXRlRGVm
c0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9jaywgb3Bjb2RlSUQsIGluc3RydWN0aW9uLCBmdW5j
dG9yKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBCeXRlY29kZVVzZURl
Zl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4
IDNmN2QyZjA1Yjk5MDA1MzJiOTZhN2Q2YjJkNjFlZDJhM2U2OGQ4YjMuLjUyMTllYmMxNDZiYmUz
NGUxZThlZGE3NTE5NTUyYzBiNzE2YWY3YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC0zMiw2ICszMiw3IEBACiAKICNpbmNsdWRlICJCYXNp
Y0Jsb2NrTG9jYXRpb24uaCIKICNpbmNsdWRlICJCeXRlY29kZUdlbmVyYXRvci5oIgorI2luY2x1
ZGUgIkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5oIgogI2luY2x1ZGUgIkJ5dGVjb2RlVXNlRGVm
LmgiCiAjaW5jbHVkZSAiQ2FsbExpbmtTdGF0dXMuaCIKICNpbmNsdWRlICJERkdDYXBhYmlsaXRp
ZXMuaCIKQEAgLTY5NCwxOCArNjk1LDYgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZShQ
cmludFN0cmVhbSYgb3V0KQogICAgICAgICB9IHdoaWxlIChpIDwgbV9yYXJlRGF0YS0+bV9zdHJp
bmdTd2l0Y2hKdW1wVGFibGVzLnNpemUoKSk7CiAgICAgfQogCi0gICAgaWYgKG1fcmFyZURhdGEg
JiYgIW1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQuaXNFbXB0eSgpKSB7Ci0g
ICAgICAgIG91dC5wcmludGYoIlxuTGl2ZSBDYWxsZWUgTG9jYWxzOlxuIik7Ci0gICAgICAgIHVu
c2lnbmVkIGkgPSAwOwotICAgICAgICBkbyB7Ci0gICAgICAgICAgICBjb25zdCBGYXN0Qml0VmVj
dG9yJiBsaXZlbmVzcyA9IG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGRbaV07
Ci0gICAgICAgICAgICBvdXQucHJpbnRmKCIgIGxpdmUlMXUgPSAiLCBpKTsKLSAgICAgICAgICAg
IGxpdmVuZXNzLmR1bXAob3V0KTsKLSAgICAgICAgICAgIG91dC5wcmludGYoIlxuIik7Ci0gICAg
ICAgICAgICArK2k7Ci0gICAgICAgIH0gd2hpbGUgKGkgPCBtX3JhcmVEYXRhLT5tX2xpdmVDYWxs
ZWVMb2NhbHNBdFlpZWxkLnNpemUoKSk7Ci0gICAgfQotCiAgICAgb3V0LnByaW50ZigiXG4iKTsK
IH0KIApAQCAtMTY2OSwzMSArMTY1OCw2IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUo
CiAgICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgJWQiLCBkZWJ1Z0hvb2tOYW1lKGRlYnVnSG9v
a0lEKSwgaGFzQnJlYWtwb2ludEZsYWcpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
LSAgICAgICAgY2FzZSBvcF9zYXZlOiB7Ci0gICAgICAgICAgICBpbnQgZ2VuZXJhdG9yID0gKCsr
aXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5k
ZXggPSAoKytpdCktPnUudW5zaWduZWRWYWx1ZTsKLSAgICAgICAgICAgIGludCBvZmZzZXQgPSAo
KytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIEZhc3RCaXRWZWN0b3IgbGl2ZW5lc3M7Ci0g
ICAgICAgICAgICBpZiAobGl2ZUNhbGxlZUxvY2Fsc0luZGV4IDwgbV9yYXJlRGF0YS0+bV9saXZl
Q2FsbGVlTG9jYWxzQXRZaWVsZC5zaXplKCkpCi0gICAgICAgICAgICAgICAgbGl2ZW5lc3MgPSBt
X3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkW2xpdmVDYWxsZWVMb2NhbHNJbmRl
eF07Ci0gICAgICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwg
aXQsICJzYXZlIik7Ci0gICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgIiwgcmVnaXN0ZXJOYW1l
KGdlbmVyYXRvcikuZGF0YSgpKTsKLSAgICAgICAgICAgIGxpdmVuZXNzLmR1bXAob3V0KTsKLSAg
ICAgICAgICAgIG91dC5wcmludGYoIihAbGl2ZSUxdSksICVkKC0+JWQpIiwgbGl2ZUNhbGxlZUxv
Y2Fsc0luZGV4LCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICB9Ci0gICAgICAgIGNhc2Ugb3BfcmVzdW1lOiB7Ci0gICAgICAgICAgICBpbnQg
Z2VuZXJhdG9yID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICB1bnNpZ25lZCBsaXZl
Q2FsbGVlTG9jYWxzSW5kZXggPSAoKytpdCktPnUudW5zaWduZWRWYWx1ZTsKLSAgICAgICAgICAg
IEZhc3RCaXRWZWN0b3IgbGl2ZW5lc3M7Ci0gICAgICAgICAgICBpZiAobGl2ZUNhbGxlZUxvY2Fs
c0luZGV4IDwgbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZC5zaXplKCkpCi0g
ICAgICAgICAgICAgICAgbGl2ZW5lc3MgPSBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNB
dFlpZWxkW2xpdmVDYWxsZWVMb2NhbHNJbmRleF07Ci0gICAgICAgICAgICBwcmludExvY2F0aW9u
QW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJyZXN1bWUiKTsKLSAgICAgICAgICAgIG91
dC5wcmludGYoIiVzLCAiLCByZWdpc3Rlck5hbWUoZ2VuZXJhdG9yKS5kYXRhKCkpOwotICAgICAg
ICAgICAgbGl2ZW5lc3MuZHVtcChvdXQpOwotICAgICAgICAgICAgb3V0LnByaW50ZigiKEBsaXZl
JTF1KSIsIGxpdmVDYWxsZWVMb2NhbHNJbmRleCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgfQogICAgICAgICBjYXNlIG9wX2Fzc2VydDogewogICAgICAgICAgICAgaW50IGNvbmRpdGlv
biA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IGxpbmUgPSAoKytpdCktPnUu
b3BlcmFuZDsKQEAgLTE5MDYsNyArMTg3MCw2IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5pc2hDcmVh
dGlvbihWTSYgdm0sIENvcHlQYXJzZWRCbG9ja1RhZywgQ29kZUJsb2NrJiBvdGhlcikKICAgICAg
ICAgbV9yYXJlRGF0YS0+bV9jb25zdGFudEJ1ZmZlcnMgPSBvdGhlci5tX3JhcmVEYXRhLT5tX2Nv
bnN0YW50QnVmZmVyczsKICAgICAgICAgbV9yYXJlRGF0YS0+bV9zd2l0Y2hKdW1wVGFibGVzID0g
b3RoZXIubV9yYXJlRGF0YS0+bV9zd2l0Y2hKdW1wVGFibGVzOwogICAgICAgICBtX3JhcmVEYXRh
LT5tX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXMgPSBvdGhlci5tX3JhcmVEYXRhLT5tX3N0cmluZ1N3
aXRjaEp1bXBUYWJsZXM7Ci0gICAgICAgIG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0
WWllbGQgPSBvdGhlci5tX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkOwogICAg
IH0KICAgICAKICAgICBoZWFwKCktPm1fY29kZUJsb2Nrcy5hZGQodGhpcyk7CkBAIC0yMDI4LDcg
KzE5OTEsNyBAQCB2b2lkIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRF
eGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGluawogICAgICAgICAgICAgICAgIFVubGlu
a2VkU3RyaW5nSnVtcFRhYmxlOjpTdHJpbmdPZmZzZXRUYWJsZTo6aXRlcmF0b3IgZW5kID0gdW5s
aW5rZWRDb2RlQmxvY2stPnN0cmluZ1N3aXRjaEp1bXBUYWJsZShpKS5vZmZzZXRUYWJsZS5lbmQo
KTsKICAgICAgICAgICAgICAgICBmb3IgKDsgcHRyICE9IGVuZDsgKytwdHIpIHsKICAgICAgICAg
ICAgICAgICAgICAgT2Zmc2V0TG9jYXRpb24gb2Zmc2V0OwotICAgICAgICAgICAgICAgICAgICBv
ZmZzZXQuYnJhbmNoT2Zmc2V0ID0gcHRyLT52YWx1ZTsKKyAgICAgICAgICAgICAgICAgICAgb2Zm
c2V0LmJyYW5jaE9mZnNldCA9IHB0ci0+dmFsdWUuYnJhbmNoT2Zmc2V0OwogICAgICAgICAgICAg
ICAgICAgICBtX3JhcmVEYXRhLT5tX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXNbaV0ub2Zmc2V0VGFi
bGUuYWRkKHB0ci0+a2V5LCBvZmZzZXQpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IH0KQEAgLTIwNjgsMTEgKzIwMzEsMTcgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9u
KFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICAv
LyBCb29ra2VlcCB0aGUgc3Ryb25nbHkgcmVmZXJlbmNlZCBtb2R1bGUgZW52aXJvbm1lbnRzLgog
ICAgIEhhc2hTZXQ8SlNNb2R1bGVFbnZpcm9ubWVudCo+IHN0cm9uZ2x5UmVmZXJlbmNlZE1vZHVs
ZUVudmlyb25tZW50czsKIAotICAgIC8vIEJvb2trZWVwIHRoZSBtZXJnZSBwb2ludCBieXRlY29k
ZSBvZmZzZXRzLgotICAgIFZlY3RvcjxzaXplX3Q+IG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldHM7
Ci0KICAgICBSZWZDb3VudGVkQXJyYXk8SW5zdHJ1Y3Rpb24+IGluc3RydWN0aW9ucyhpbnN0cnVj
dGlvbkNvdW50KTsKIAorICAgIHVuc2lnbmVkIHZhbHVlUHJvZmlsZUNvdW50ID0gMDsKKyAgICBh
dXRvIGxpbmtWYWx1ZVByb2ZpbGUgPSBbJl0odW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIHVuc2ln
bmVkIG9wTGVuZ3RoKSB7CisgICAgICAgIHVuc2lnbmVkIHZhbHVlUHJvZmlsZUluZGV4ID0gdmFs
dWVQcm9maWxlQ291bnQrKzsKKyAgICAgICAgVmFsdWVQcm9maWxlKiBwcm9maWxlID0gJm1fdmFs
dWVQcm9maWxlc1t2YWx1ZVByb2ZpbGVJbmRleF07CisgICAgICAgIEFTU0VSVChwcm9maWxlLT5t
X2J5dGVjb2RlT2Zmc2V0ID09IC0xKTsKKyAgICAgICAgcHJvZmlsZS0+bV9ieXRlY29kZU9mZnNl
dCA9IGJ5dGVjb2RlT2Zmc2V0OworICAgICAgICBpbnN0cnVjdGlvbnNbYnl0ZWNvZGVPZmZzZXQg
KyBvcExlbmd0aCAtIDFdID0gcHJvZmlsZTsKKyAgICB9OworCiAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgIWluc3RydWN0aW9uUmVhZGVyLmF0RW5kKCk7ICkgewogICAgICAgICBjb25zdCBVbmxp
bmtlZEluc3RydWN0aW9uKiBwYyA9IGluc3RydWN0aW9uUmVhZGVyLm5leHQoKTsKIApAQCAtMjEw
NywxMCArMjA3Niw3IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNj
cmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAgICAgIGNhc2Ugb3Bf
Z2V0X2J5X2lkOgogICAgICAgICBjYXNlIG9wX2dldF9mcm9tX2FyZ3VtZW50czoKICAgICAgICAg
Y2FzZSBvcF90b19udW1iZXI6IHsKLSAgICAgICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9
ICZtX3ZhbHVlUHJvZmlsZXNbcGNbb3BMZW5ndGggLSAxXS51Lm9wZXJhbmRdOwotICAgICAgICAg
ICAgQVNTRVJUKHByb2ZpbGUtPm1fYnl0ZWNvZGVPZmZzZXQgPT0gLTEpOwotICAgICAgICAgICAg
cHJvZmlsZS0+bV9ieXRlY29kZU9mZnNldCA9IGk7Ci0gICAgICAgICAgICBpbnN0cnVjdGlvbnNb
aSArIG9wTGVuZ3RoIC0gMV0gPSBwcm9maWxlOworICAgICAgICAgICAgbGlua1ZhbHVlUHJvZmls
ZShpLCBvcExlbmd0aCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBj
YXNlIG9wX3B1dF9ieV92YWw6IHsKQEAgLTIxNDcsMTAgKzIxMTMsNyBAQCB2b2lkIENvZGVCbG9j
azo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFi
bGUsIFVubGluawogICAgICAgICBjYXNlIG9wX2NhbGw6CiAgICAgICAgIGNhc2Ugb3BfdGFpbF9j
YWxsOgogICAgICAgICBjYXNlIG9wX2NhbGxfZXZhbDogewotICAgICAgICAgICAgVmFsdWVQcm9m
aWxlKiBwcm9maWxlID0gJm1fdmFsdWVQcm9maWxlc1twY1tvcExlbmd0aCAtIDFdLnUub3BlcmFu
ZF07Ci0gICAgICAgICAgICBBU1NFUlQocHJvZmlsZS0+bV9ieXRlY29kZU9mZnNldCA9PSAtMSk7
Ci0gICAgICAgICAgICBwcm9maWxlLT5tX2J5dGVjb2RlT2Zmc2V0ID0gaTsKLSAgICAgICAgICAg
IGluc3RydWN0aW9uc1tpICsgb3BMZW5ndGggLSAxXSA9IHByb2ZpbGU7CisgICAgICAgICAgICBs
aW5rVmFsdWVQcm9maWxlKGksIG9wTGVuZ3RoKTsKICAgICAgICAgICAgIGludCBhcnJheVByb2Zp
bGVJbmRleCA9IHBjW29wTGVuZ3RoIC0gMl0udS5vcGVyYW5kOwogICAgICAgICAgICAgbV9hcnJh
eVByb2ZpbGVzW2FycmF5UHJvZmlsZUluZGV4XSA9IEFycmF5UHJvZmlsZShpKTsKICAgICAgICAg
ICAgIGluc3RydWN0aW9uc1tpICsgb3BMZW5ndGggLSAyXSA9ICZtX2FycmF5UHJvZmlsZXNbYXJy
YXlQcm9maWxlSW5kZXhdOwpAQCAtMjE1OSwxMCArMjEyMiw3IEBAIHZvaWQgQ29kZUJsb2NrOjpm
aW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwg
VW5saW5rCiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9jb25zdHJ1Y3Q6IHsKICAgICAgICAg
ICAgIGluc3RydWN0aW9uc1tpICsgNV0gPSAmbV9sbGludENhbGxMaW5rSW5mb3NbcGNbNV0udS5v
cGVyYW5kXTsKLSAgICAgICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9ICZtX3ZhbHVlUHJv
ZmlsZXNbcGNbb3BMZW5ndGggLSAxXS51Lm9wZXJhbmRdOwotICAgICAgICAgICAgQVNTRVJUKHBy
b2ZpbGUtPm1fYnl0ZWNvZGVPZmZzZXQgPT0gLTEpOwotICAgICAgICAgICAgcHJvZmlsZS0+bV9i
eXRlY29kZU9mZnNldCA9IGk7Ci0gICAgICAgICAgICBpbnN0cnVjdGlvbnNbaSArIG9wTGVuZ3Ro
IC0gMV0gPSBwcm9maWxlOworICAgICAgICAgICAgbGlua1ZhbHVlUHJvZmlsZShpLCBvcExlbmd0
aCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2dldF9h
cnJheV9sZW5ndGg6CkBAIC0yMTkzLDEwICsyMTUzLDcgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmlz
aENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxp
bmsKICAgICAgICAgfQogCiAgICAgICAgIGNhc2Ugb3BfZ2V0X2Zyb21fc2NvcGU6IHsKLSAgICAg
ICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9ICZtX3ZhbHVlUHJvZmlsZXNbcGNbb3BMZW5n
dGggLSAxXS51Lm9wZXJhbmRdOwotICAgICAgICAgICAgQVNTRVJUKHByb2ZpbGUtPm1fYnl0ZWNv
ZGVPZmZzZXQgPT0gLTEpOwotICAgICAgICAgICAgcHJvZmlsZS0+bV9ieXRlY29kZU9mZnNldCA9
IGk7Ci0gICAgICAgICAgICBpbnN0cnVjdGlvbnNbaSArIG9wTGVuZ3RoIC0gMV0gPSBwcm9maWxl
OworICAgICAgICAgICAgbGlua1ZhbHVlUHJvZmlsZShpLCBvcExlbmd0aCk7CiAKICAgICAgICAg
ICAgIC8vIGdldF9mcm9tX3Njb3BlIGRzdCwgc2NvcGUsIGlkLCBHZXRQdXRJbmZvLCBTdHJ1Y3R1
cmUsIE9wZXJhbmQKIApAQCAtMjM1MywxNSArMjMxMCw2IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5p
c2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5s
aW5rCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCi0gICAgICAgIGNhc2Ugb3Bfc2F2
ZTogewotICAgICAgICAgICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gcGNbMl0u
dS5pbmRleDsKLSAgICAgICAgICAgIGludCBvZmZzZXQgPSBwY1szXS51Lm9wZXJhbmQ7Ci0gICAg
ICAgICAgICBpZiAobGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID49IG1lcmdlUG9pbnRCeXRlY29kZU9m
ZnNldHMuc2l6ZSgpKQotICAgICAgICAgICAgICAgIG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldHMu
cmVzaXplKGxpdmVDYWxsZWVMb2NhbHNJbmRleCArIDEpOwotICAgICAgICAgICAgbWVyZ2VQb2lu
dEJ5dGVjb2RlT2Zmc2V0c1tsaXZlQ2FsbGVlTG9jYWxzSW5kZXhdID0gaSArIG9mZnNldDsKLSAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0KICAgICAgICAgZGVmYXVsdDoKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0yMzczLDIwICsyMzIxLDYgQEAgdm9pZCBDb2RlQmxv
Y2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRh
YmxlLCBVbmxpbmsKIAogICAgIG1faW5zdHJ1Y3Rpb25zID0gV1RGTW92ZShpbnN0cnVjdGlvbnMp
OwogCi0gICAgLy8gUGVyZm9ybSBieXRlY29kZSBsaXZlbmVzcyBhbmFseXNpcyB0byBkZXRlcm1p
bmUgd2hpY2ggbG9jYWxzIGFyZSBsaXZlIGFuZCBzaG91bGQgYmUgcmVzdW1lZCB3aGVuIGV4ZWN1
dGluZyBvcF9yZXN1bWUuCi0gICAgaWYgKHVubGlua2VkQ29kZUJsb2NrLT5wYXJzZU1vZGUoKSA9
PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckJvZHlNb2RlKSB7Ci0gICAgICAgIGlmIChzaXpl
X3QgY291bnQgPSBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXRzLnNpemUoKSkgewotICAgICAgICAg
ICAgY3JlYXRlUmFyZURhdGFJZk5lY2Vzc2FyeSgpOwotICAgICAgICAgICAgQnl0ZWNvZGVMaXZl
bmVzc0FuYWx5c2lzIGxpdmVuZXNzKHRoaXMpOwotICAgICAgICAgICAgbV9yYXJlRGF0YS0+bV9s
aXZlQ2FsbGVlTG9jYWxzQXRZaWVsZC5ncm93KGNvdW50KTsKLSAgICAgICAgICAgIHNpemVfdCBs
aXZlQ2FsbGVlTG9jYWxzSW5kZXggPSAwOwotICAgICAgICAgICAgZm9yIChzaXplX3QgYnl0ZWNv
ZGVPZmZzZXQgOiBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXRzKSB7Ci0gICAgICAgICAgICAgICAg
bV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZFtsaXZlQ2FsbGVlTG9jYWxzSW5k
ZXhdID0gbGl2ZW5lc3MuZ2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29kZU9mZnNldChieXRlY29kZU9m
ZnNldCk7Ci0gICAgICAgICAgICAgICAgKytsaXZlQ2FsbGVlTG9jYWxzSW5kZXg7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KICAgICAvLyBTZXQgb3B0aW1pemF0aW9uIHRocmVz
aG9sZHMgb25seSBhZnRlciBtX2luc3RydWN0aW9ucyBpcyBpbml0aWFsaXplZCwgc2luY2UgdGhl
c2UKICAgICAvLyByZWx5IG9uIHRoZSBpbnN0cnVjdGlvbiBjb3VudCAoYW5kIGFyZSBpbiB0aGVv
cnkgcGVybWl0dGVkIHRvIGFsc28gaW5zcGVjdCB0aGUKICAgICAvLyBpbnN0cnVjdGlvbiBzdHJl
YW0gdG8gbW9yZSBhY2N1cmF0ZSBhc3Nlc3MgdGhlIGNvc3Qgb2YgdGllci11cCkuCkBAIC0zMTg2
LDIxICszMTIwLDcgQEAgSGFuZGxlckluZm8qIENvZGVCbG9jazo6aGFuZGxlckZvckluZGV4KHVu
c2lnbmVkIGluZGV4LCBSZXF1aXJlZEhhbmRsZXIgcmVxdWlyZWQKIHsKICAgICBpZiAoIW1fcmFy
ZURhdGEpCiAgICAgICAgIHJldHVybiAwOwotICAgIAotICAgIFZlY3RvcjxIYW5kbGVySW5mbz4m
IGV4Y2VwdGlvbkhhbmRsZXJzID0gbV9yYXJlRGF0YS0+bV9leGNlcHRpb25IYW5kbGVyczsKLSAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGV4Y2VwdGlvbkhhbmRsZXJzLnNpemUoKTsgKytpKSB7
Ci0gICAgICAgIEhhbmRsZXJJbmZvJiBoYW5kbGVyID0gZXhjZXB0aW9uSGFuZGxlcnNbaV07Ci0g
ICAgICAgIGlmICgocmVxdWlyZWRIYW5kbGVyID09IFJlcXVpcmVkSGFuZGxlcjo6Q2F0Y2hIYW5k
bGVyKSAmJiAhaGFuZGxlci5pc0NhdGNoSGFuZGxlcigpKQotICAgICAgICAgICAgY29udGludWU7
Ci0KLSAgICAgICAgLy8gSGFuZGxlcnMgYXJlIG9yZGVyZWQgaW5uZXJtb3N0IGZpcnN0LCBzbyB0
aGUgZmlyc3QgaGFuZGxlciB3ZSBlbmNvdW50ZXIKLSAgICAgICAgLy8gdGhhdCBjb250YWlucyB0
aGUgc291cmNlIGFkZHJlc3MgaXMgdGhlIGNvcnJlY3QgaGFuZGxlciB0byB1c2UuCi0gICAgICAg
IC8vIFRoaXMgaW5kZXggdXNlZCBpcyBlaXRoZXIgdGhlIEJ5dGVjb2RlT2Zmc2V0IG9yIGEgQ2Fs
bFNpdGVJbmRleC4KLSAgICAgICAgaWYgKGhhbmRsZXIuc3RhcnQgPD0gaW5kZXggJiYgaGFuZGxl
ci5lbmQgPiBpbmRleCkKLSAgICAgICAgICAgIHJldHVybiAmaGFuZGxlcjsKLSAgICB9Ci0KLSAg
ICByZXR1cm4gMDsKKyAgICByZXR1cm4gSGFuZGxlckluZm86OmhhbmRsZXJGb3JJbmRleChtX3Jh
cmVEYXRhLT5tX2V4Y2VwdGlvbkhhbmRsZXJzLCBpbmRleCwgcmVxdWlyZWRIYW5kbGVyKTsKIH0K
IAogQ2FsbFNpdGVJbmRleCBDb2RlQmxvY2s6Om5ld0V4Y2VwdGlvbkhhbmRsaW5nQ2FsbFNpdGVJ
bmRleChDYWxsU2l0ZUluZGV4IG9yaWdpbmFsQ2FsbFNpdGUpCkBAIC0zMjk2LDcgKzMyMTYsNiBA
QCB2b2lkIENvZGVCbG9jazo6c2hyaW5rVG9GaXQoU2hyaW5rTW9kZSBzaHJpbmtNb2RlKQogICAg
ICAgICBpZiAobV9yYXJlRGF0YSkgewogICAgICAgICAgICAgbV9yYXJlRGF0YS0+bV9zd2l0Y2hK
dW1wVGFibGVzLnNocmlua1RvRml0KCk7CiAgICAgICAgICAgICBtX3JhcmVEYXRhLT5tX3N0cmlu
Z1N3aXRjaEp1bXBUYWJsZXMuc2hyaW5rVG9GaXQoKTsKLSAgICAgICAgICAgIG1fcmFyZURhdGEt
Pm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQuc2hyaW5rVG9GaXQoKTsKICAgICAgICAgfQogICAg
IH0gLy8gZWxzZSBkb24ndCBzaHJpbmsgdGhlc2UsIGJlY2F1c2Ugd2Ugd291bGQgaGF2ZSBhbHJl
YWR5IHBvaW50ZWQgcG9pbnRlcnMgaW50byB0aGVzZSB0YWJsZXMuCiB9CkBAIC00MjgzLDE0ICs0
MjAyLDkgQEAgU3RyaW5nIENvZGVCbG9jazo6bmFtZUZvclJlZ2lzdGVyKFZpcnR1YWxSZWdpc3Rl
ciB2aXJ0dWFsUmVnaXN0ZXIpCiAKIFZhbHVlUHJvZmlsZSogQ29kZUJsb2NrOjp2YWx1ZVByb2Zp
bGVGb3JCeXRlY29kZU9mZnNldChpbnQgYnl0ZWNvZGVPZmZzZXQpCiB7Ci0gICAgVmFsdWVQcm9m
aWxlKiByZXN1bHQgPSBiaW5hcnlTZWFyY2g8VmFsdWVQcm9maWxlLCBpbnQ+KAotICAgICAgICBt
X3ZhbHVlUHJvZmlsZXMsIG1fdmFsdWVQcm9maWxlcy5zaXplKCksIGJ5dGVjb2RlT2Zmc2V0LAot
ICAgICAgICBnZXRWYWx1ZVByb2ZpbGVCeXRlY29kZU9mZnNldDxWYWx1ZVByb2ZpbGU+KTsKLSAg
ICBBU1NFUlQocmVzdWx0LT5tX2J5dGVjb2RlT2Zmc2V0ICE9IC0xKTsKLSAgICBBU1NFUlQoaW5z
dHJ1Y3Rpb25zKClbYnl0ZWNvZGVPZmZzZXQgKyBvcGNvZGVMZW5ndGgoCi0gICAgICAgIG1fdm0t
PmludGVycHJldGVyLT5nZXRPcGNvZGVJRCgKLSAgICAgICAgICAgIGluc3RydWN0aW9ucygpW2J5
dGVjb2RlT2Zmc2V0XS51Lm9wY29kZSkpIC0gMV0udS5wcm9maWxlID09IHJlc3VsdCk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKKyAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IG1fdm0tPmludGVycHJldGVy
LT5nZXRPcGNvZGVJRChpbnN0cnVjdGlvbnMoKVtieXRlY29kZU9mZnNldF0udS5vcGNvZGUpOwor
ICAgIHVuc2lnbmVkIGxlbmd0aCA9IG9wY29kZUxlbmd0aChvcGNvZGVJRCk7CisgICAgcmV0dXJu
IGluc3RydWN0aW9ucygpW2J5dGVjb2RlT2Zmc2V0ICsgbGVuZ3RoIC0gMV0udS5wcm9maWxlOwog
fQogCiB2b2lkIENvZGVCbG9jazo6dmFsaWRhdGUoKQpAQCAtNDU3NCw0ICs0NDg4LDE2IEBAIHZv
aWQgQ29kZUJsb2NrOjpqaXRTb29uKCkKICAgICBtX2xsaW50RXhlY3V0ZUNvdW50ZXIuc2V0TmV3
VGhyZXNob2xkKHRocmVzaG9sZEZvckpJVChPcHRpb25zOjp0aHJlc2hvbGRGb3JKSVRTb29uKCkp
LCB0aGlzKTsKIH0KIAorQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzJiBDb2RlQmxvY2s6OmxpdmVu
ZXNzQW5hbHlzaXNTbG93KCkKK3sKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVMaXZlbmVz
c0FuYWx5c2lzPiBhbmFseXNpcyA9IHN0ZDo6bWFrZV91bmlxdWU8Qnl0ZWNvZGVMaXZlbmVzc0Fu
YWx5c2lzPih0aGlzKTsKKyAgICB7CisgICAgICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2Vy
KG1fbG9jayk7CisgICAgICAgIGlmICghbV9saXZlbmVzc0FuYWx5c2lzKQorICAgICAgICAgICAg
bV9saXZlbmVzc0FuYWx5c2lzID0gV1RGTW92ZShhbmFseXNpcyk7CisgICAgICAgIHJldHVybiAq
bV9saXZlbmVzc0FuYWx5c2lzOworICAgIH0KK30KKworCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAppbmRleCBiMjg4MzY1NGJl
MzQ1ZTdhYjAxMTBlYzFiNmY1ZDY5N2ExOGMyN2MyLi4wYjkwYjdlYmQ3Y2I2YTM2YzUxMDhmY2Uy
YzY5NmY3OWM1NGM1ZTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVC
bG9jay5oCkBAIC0zMyw3ICszMyw2IEBACiAjaW5jbHVkZSAiQXJyYXlQcm9maWxlLmgiCiAjaW5j
bHVkZSAiQnlWYWxJbmZvLmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVDb252ZW50aW9ucy5oIgotI2lu
Y2x1ZGUgIkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5oIgogI2luY2x1ZGUgIkNhbGxMaW5rSW5m
by5oIgogI2luY2x1ZGUgIkNhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0LmgiCiAjaW5j
bHVkZSAiQ29kZUJsb2NrSGFzaC5oIgpAQCAtNzgsNiArNzcsNyBAQAogCiBuYW1lc3BhY2UgSlND
IHsKIAorY2xhc3MgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOwogY2xhc3MgRXhlY1N0YXRlOwog
Y2xhc3MgSlNNb2R1bGVFbnZpcm9ubWVudDsKIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsK
QEAgLTIyMCwxMCArMjIwLDYgQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAg
ICAgICAgIHJldHVybiBpbmRleCA+PSBtX251bVZhcnM7CiAgICAgfQogCi0gICAgZW51bSBjbGFz
cyBSZXF1aXJlZEhhbmRsZXIgewotICAgICAgICBDYXRjaEhhbmRsZXIsCi0gICAgICAgIEFueUhh
bmRsZXIKLSAgICB9OwogICAgIEhhbmRsZXJJbmZvKiBoYW5kbGVyRm9yQnl0ZWNvZGVPZmZzZXQo
dW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIFJlcXVpcmVkSGFuZGxlciA9IFJlcXVpcmVkSGFuZGxl
cjo6QW55SGFuZGxlcik7CiAgICAgSGFuZGxlckluZm8qIGhhbmRsZXJGb3JJbmRleCh1bnNpZ25l
ZCwgUmVxdWlyZWRIYW5kbGVyID0gUmVxdWlyZWRIYW5kbGVyOjpBbnlIYW5kbGVyKTsKICAgICB2
b2lkIHJlbW92ZUV4Y2VwdGlvbkhhbmRsZXJGb3JDYWxsU2l0ZShDYWxsU2l0ZUluZGV4KTsKQEAg
LTI5NSw2ICsyOTEsOCBAQCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PEluc3RydWN0aW9uKj4ocmV0dXJuQWRkcmVzcykgLSBpbnN0
cnVjdGlvbnMoKS5iZWdpbigpOwogICAgIH0KIAorICAgIHR5cGVkZWYgUmVmQ291bnRlZEFycmF5
PEluc3RydWN0aW9uPiYgVW5wYWNrZWRJbnN0cnVjdGlvbnM7CisKICAgICB1bnNpZ25lZCBudW1i
ZXJPZkluc3RydWN0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1faW5zdHJ1Y3Rpb25zLnNpemUoKTsg
fQogICAgIFJlZkNvdW50ZWRBcnJheTxJbnN0cnVjdGlvbj4mIGluc3RydWN0aW9ucygpIHsgcmV0
dXJuIG1faW5zdHJ1Y3Rpb25zOyB9CiAgICAgY29uc3QgUmVmQ291bnRlZEFycmF5PEluc3RydWN0
aW9uPiYgaW5zdHJ1Y3Rpb25zKCkgY29uc3QgeyByZXR1cm4gbV9pbnN0cnVjdGlvbnM7IH0KQEAg
LTU0Miw3ICs1NDAsNyBAQCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICB9
CiAKICAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4mIGNvbnN0YW50UmVnaXN0ZXIoaW50IGluZGV4
KSB7IHJldHVybiBtX2NvbnN0YW50UmVnaXN0ZXJzW2luZGV4IC0gRmlyc3RDb25zdGFudFJlZ2lz
dGVySW5kZXhdOyB9Ci0gICAgQUxXQVlTX0lOTElORSBib29sIGlzQ29uc3RhbnRSZWdpc3Rlcklu
ZGV4KGludCBpbmRleCkgY29uc3QgeyByZXR1cm4gaW5kZXggPj0gRmlyc3RDb25zdGFudFJlZ2lz
dGVySW5kZXg7IH0KKyAgICBzdGF0aWMgQUxXQVlTX0lOTElORSBib29sIGlzQ29uc3RhbnRSZWdp
c3RlckluZGV4KGludCBpbmRleCkgeyByZXR1cm4gaW5kZXggPj0gRmlyc3RDb25zdGFudFJlZ2lz
dGVySW5kZXg7IH0KICAgICBBTFdBWVNfSU5MSU5FIEpTVmFsdWUgZ2V0Q29uc3RhbnQoaW50IGlu
ZGV4KSBjb25zdCB7IHJldHVybiBtX2NvbnN0YW50UmVnaXN0ZXJzW2luZGV4IC0gRmlyc3RDb25z
dGFudFJlZ2lzdGVySW5kZXhdLmdldCgpOyB9CiAgICAgQUxXQVlTX0lOTElORSBTb3VyY2VDb2Rl
UmVwcmVzZW50YXRpb24gY29uc3RhbnRTb3VyY2VDb2RlUmVwcmVzZW50YXRpb24oaW50IGluZGV4
KSBjb25zdCB7IHJldHVybiBtX2NvbnN0YW50c1NvdXJjZUNvZGVSZXByZXNlbnRhdGlvbltpbmRl
eCAtIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4XTsgfQogCkBAIC01ODgsMTQgKzU4Niw3IEBA
IGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgICAgICAgICAgaWYgKCEhbV9s
aXZlbmVzc0FuYWx5c2lzKQogICAgICAgICAgICAgICAgIHJldHVybiAqbV9saXZlbmVzc0FuYWx5
c2lzOwogICAgICAgICB9Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUxpdmVuZXNz
QW5hbHlzaXM+IGFuYWx5c2lzID0KLSAgICAgICAgICAgIHN0ZDo6bWFrZV91bmlxdWU8Qnl0ZWNv
ZGVMaXZlbmVzc0FuYWx5c2lzPih0aGlzKTsKLSAgICAgICAgewotICAgICAgICAgICAgQ29uY3Vy
cmVudEpJVExvY2tlciBsb2NrZXIobV9sb2NrKTsKLSAgICAgICAgICAgIGlmICghbV9saXZlbmVz
c0FuYWx5c2lzKQotICAgICAgICAgICAgICAgIG1fbGl2ZW5lc3NBbmFseXNpcyA9IFdURk1vdmUo
YW5hbHlzaXMpOwotICAgICAgICAgICAgcmV0dXJuICptX2xpdmVuZXNzQW5hbHlzaXM7Ci0gICAg
ICAgIH0KKyAgICAgICAgcmV0dXJuIGxpdmVuZXNzQW5hbHlzaXNTbG93KCk7CiAgICAgfQogICAg
IAogICAgIHZvaWQgdmFsaWRhdGUoKTsKQEAgLTYxNiwxOCArNjA3LDYgQEAgY2xhc3MgQ29kZUJs
b2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgU3RyaW5nSnVtcFRhYmxlJiBhZGRTdHJpbmdTd2l0
Y2hKdW1wVGFibGUoKSB7IGNyZWF0ZVJhcmVEYXRhSWZOZWNlc3NhcnkoKTsgbV9yYXJlRGF0YS0+
bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzLmFwcGVuZChTdHJpbmdKdW1wVGFibGUoKSk7IHJldHVy
biBtX3JhcmVEYXRhLT5tX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXMubGFzdCgpOyB9CiAgICAgU3Ry
aW5nSnVtcFRhYmxlJiBzdHJpbmdTd2l0Y2hKdW1wVGFibGUoaW50IHRhYmxlSW5kZXgpIHsgUkVM
RUFTRV9BU1NFUlQobV9yYXJlRGF0YSk7IHJldHVybiBtX3JhcmVEYXRhLT5tX3N0cmluZ1N3aXRj
aEp1bXBUYWJsZXNbdGFibGVJbmRleF07IH0KIAotICAgIC8vIExpdmUgY2FsbGVlIHJlZ2lzdGVy
cyBhdCB5aWVsZCBwb2ludHMuCi0gICAgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZUNhbGxlZUxv
Y2Fsc0F0WWllbGQodW5zaWduZWQgaW5kZXgpIGNvbnN0Ci0gICAgewotICAgICAgICBSRUxFQVNF
X0FTU0VSVChtX3JhcmVEYXRhKTsKLSAgICAgICAgcmV0dXJuIG1fcmFyZURhdGEtPm1fbGl2ZUNh
bGxlZUxvY2Fsc0F0WWllbGRbaW5kZXhdOwotICAgIH0KLSAgICBGYXN0Qml0VmVjdG9yJiBsaXZl
Q2FsbGVlTG9jYWxzQXRZaWVsZCh1bnNpZ25lZCBpbmRleCkKLSAgICB7Ci0gICAgICAgIFJFTEVB
U0VfQVNTRVJUKG1fcmFyZURhdGEpOwotICAgICAgICByZXR1cm4gbV9yYXJlRGF0YS0+bV9saXZl
Q2FsbGVlTG9jYWxzQXRZaWVsZFtpbmRleF07Ci0gICAgfQotCiAgICAgRXZhbENvZGVDYWNoZSYg
ZXZhbENvZGVDYWNoZSgpIHsgY3JlYXRlUmFyZURhdGFJZk5lY2Vzc2FyeSgpOyByZXR1cm4gbV9y
YXJlRGF0YS0+bV9ldmFsQ29kZUNhY2hlOyB9CiAKICAgICBlbnVtIFNocmlua01vZGUgewpAQCAt
ODgyLDggKzg2MSw2IEBAIGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgICAg
ICBWZWN0b3I8U2ltcGxlSnVtcFRhYmxlPiBtX3N3aXRjaEp1bXBUYWJsZXM7CiAgICAgICAgIFZl
Y3RvcjxTdHJpbmdKdW1wVGFibGU+IG1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlczsKIAotICAgICAg
ICBWZWN0b3I8RmFzdEJpdFZlY3Rvcj4gbV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZDsKLQogICAg
ICAgICBFdmFsQ29kZUNhY2hlIG1fZXZhbENvZGVDYWNoZTsKICAgICB9OwogCkBAIC05MTgsNiAr
ODk1LDggQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAKIHByaXZhdGU6CiAg
ICAgZnJpZW5kIGNsYXNzIENvZGVCbG9ja1NldDsKKworICAgIEJ5dGVjb2RlTGl2ZW5lc3NBbmFs
eXNpcyYgbGl2ZW5lc3NBbmFseXNpc1Nsb3coKTsKICAgICAKICAgICBDb2RlQmxvY2sqIHNwZWNp
YWxPU1JFbnRyeUJsb2NrT3JOdWxsKCk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvSGFuZGxlckluZm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9IYW5kbGVySW5mby5oCmluZGV4IGFjZGRhMDhlZDE0Y2JmOWYwOTcxMjc1MDQwNWE0
MTc0MWY3NmEyMTMuLmJiNjkyYjlkYzE3MGIwOWY0M2NlODY3Zjk0MWY3NTM1YWNmZWNmNjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9IYW5kbGVySW5mby5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9IYW5kbGVySW5mby5oCkBAIC0zNyw2
ICszNywxMSBAQCBlbnVtIGNsYXNzIEhhbmRsZXJUeXBlIHsKICAgICBTeW50aGVzaXplZEZpbmFs
bHkgPSAzCiB9OwogCitlbnVtIGNsYXNzIFJlcXVpcmVkSGFuZGxlciB7CisgICAgQ2F0Y2hIYW5k
bGVyLAorICAgIEFueUhhbmRsZXIKK307CisKIHN0cnVjdCBIYW5kbGVySW5mb0Jhc2UgewogICAg
IEhhbmRsZXJUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxIYW5kbGVyVHlw
ZT4odHlwZUJpdHMpOyB9CiAgICAgdm9pZCBzZXRUeXBlKEhhbmRsZXJUeXBlIHR5cGUpIHsgdHlw
ZUJpdHMgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4odHlwZSk7IH0KQEAgLTU4LDYgKzYzLDIzIEBA
IHN0cnVjdCBIYW5kbGVySW5mb0Jhc2UgewogCiAgICAgYm9vbCBpc0NhdGNoSGFuZGxlcigpIGNv
bnN0IHsgcmV0dXJuIHR5cGUoKSA9PSBIYW5kbGVyVHlwZTo6Q2F0Y2g7IH0KIAorICAgIHRlbXBs
YXRlPHR5cGVuYW1lIEhhbmRsZXI+CisgICAgc3RhdGljIEhhbmRsZXIqIGhhbmRsZXJGb3JJbmRl
eChWZWN0b3I8SGFuZGxlcj4mIGV4ZXB0aW9uSGFuZGxlcnMsIHVuc2lnbmVkIGluZGV4LCBSZXF1
aXJlZEhhbmRsZXIgcmVxdWlyZWRIYW5kbGVyKQorICAgIHsKKyAgICAgICAgZm9yIChIYW5kbGVy
JiBoYW5kbGVyIDogZXhlcHRpb25IYW5kbGVycykgeworICAgICAgICAgICAgaWYgKChyZXF1aXJl
ZEhhbmRsZXIgPT0gUmVxdWlyZWRIYW5kbGVyOjpDYXRjaEhhbmRsZXIpICYmICFoYW5kbGVyLmlz
Q2F0Y2hIYW5kbGVyKCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAg
IC8vIEhhbmRsZXJzIGFyZSBvcmRlcmVkIGlubmVybW9zdCBmaXJzdCwgc28gdGhlIGZpcnN0IGhh
bmRsZXIgd2UgZW5jb3VudGVyCisgICAgICAgICAgICAvLyB0aGF0IGNvbnRhaW5zIHRoZSBzb3Vy
Y2UgYWRkcmVzcyBpcyB0aGUgY29ycmVjdCBoYW5kbGVyIHRvIHVzZS4KKyAgICAgICAgICAgIC8v
IFRoaXMgaW5kZXggdXNlZCBpcyBlaXRoZXIgdGhlIEJ5dGVjb2RlT2Zmc2V0IG9yIGEgQ2FsbFNp
dGVJbmRleC4KKyAgICAgICAgICAgIGlmIChoYW5kbGVyLnN0YXJ0IDw9IGluZGV4ICYmIGhhbmRs
ZXIuZW5kID4gaW5kZXgpCisgICAgICAgICAgICAgICAgcmV0dXJuICZoYW5kbGVyOworICAgICAg
ICB9CisKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCiAgICAgdWludDMyX3Qgc3Rh
cnQ7CiAgICAgdWludDMyX3QgZW5kOwogICAgIHVpbnQzMl90IHRhcmdldDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHMuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5jcHAKaW5k
ZXggZTJjYjAwMDQ4Mzc5NGJhOTJkNTEwZGNmNWZhOTk0ODg1YTIzZGMzZC4uY2FiOWZiZGM0ZTgz
OWZiYjg5YTY5MzM1NjIyMmRiMDBlMTAyMjNjYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5jcHAKQEAgLTI2LDE0ICsyNiwx
NSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlByZWNpc2VKdW1wVGFyZ2V0cy5o
IgogCisjaW5jbHVkZSAiSW50ZXJwcmV0ZXJJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5l
cy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAotdGVtcGxhdGUgPHNpemVfdCB2ZWN0b3JTaXplPgot
c3RhdGljIHZvaWQgZ2V0SnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNv
ZGVCbG9jaywgSW50ZXJwcmV0ZXIqIGludGVycHJldGVyLCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rp
b25zQmVnaW4sIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBWZWN0b3I8dW5zaWduZWQsIHZlY3Rv
clNpemU+JiBvdXQpCit0ZW1wbGF0ZSA8c2l6ZV90IHZlY3RvclNpemUsIHR5cGVuYW1lIEJsb2Nr
LCB0eXBlbmFtZSBJbnN0cnVjdGlvbj4KK3N0YXRpYyB2b2lkIGdldEp1bXBUYXJnZXRzRm9yQnl0
ZWNvZGVPZmZzZXQoQmxvY2sqIGNvZGVCbG9jaywgSW50ZXJwcmV0ZXIqIGludGVycHJldGVyLCBJ
bnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBW
ZWN0b3I8dW5zaWduZWQsIHZlY3RvclNpemU+JiBvdXQpCiB7Ci0gICAgT3Bjb2RlSUQgb3Bjb2Rl
SUQgPSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25zQmVnaW5bYnl0ZWNvZGVP
ZmZzZXRdLnUub3Bjb2RlKTsKKyAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGludGVycHJldGVyLT5n
ZXRPcGNvZGVJRChpbnN0cnVjdGlvbnNCZWdpbltieXRlY29kZU9mZnNldF0pOwogICAgIEluc3Ry
dWN0aW9uKiBjdXJyZW50ID0gaW5zdHJ1Y3Rpb25zQmVnaW4gKyBieXRlY29kZU9mZnNldDsKICAg
ICBzd2l0Y2ggKG9wY29kZUlEKSB7CiAgICAgY2FzZSBvcF9qbXA6CkBAIC01NCwyMSArNTUsMjUg
QEAgc3RhdGljIHZvaWQgZ2V0SnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sq
IGNvZGVCbG9jaywgSW50ZXJwcmV0ZXIqIGkKICAgICBjYXNlIG9wX2pubGVzc2VxOgogICAgIGNh
c2Ugb3Bfam5ncmVhdGVyOgogICAgIGNhc2Ugb3Bfam5ncmVhdGVyZXE6Ci0gICAgY2FzZSBvcF9z
YXZlOiAvLyBUaGUganVtcCBvZiBvcF9zYXZlIGlzIHB1cmVseSBmb3IgY2FsY3VsYXRpbmcgbGl2
ZW5lc3MuCiAgICAgICAgIG91dC5hcHBlbmQoYnl0ZWNvZGVPZmZzZXQgKyBjdXJyZW50WzNdLnUu
b3BlcmFuZCk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2Ugb3Bfc2F2ZTogeworICAgICAgICAv
LyBUaGUganVtcCBvZiBvcF9zYXZlIHVuZGVyIEV4dHJhY3RHZW5lcmF0b3JMaXZlQ2FsbGVlTG9j
YWxzIG1vZGUgaXMgcHVyZWx5IGZvciBjYWxjdWxhdGluZyBsaXZlbmVzcy4KKyAgICAgICAgb3V0
LmFwcGVuZChieXRlY29kZU9mZnNldCArIGN1cnJlbnRbM10udS5vcGVyYW5kKTsKKyAgICAgICAg
YnJlYWs7CisgICAgfQogICAgIGNhc2Ugb3Bfc3dpdGNoX2ltbToKICAgICBjYXNlIG9wX3N3aXRj
aF9jaGFyOiB7Ci0gICAgICAgIFNpbXBsZUp1bXBUYWJsZSYgdGFibGUgPSBjb2RlQmxvY2stPnN3
aXRjaEp1bXBUYWJsZShjdXJyZW50WzFdLnUub3BlcmFuZCk7CisgICAgICAgIGF1dG8mIHRhYmxl
ID0gY29kZUJsb2NrLT5zd2l0Y2hKdW1wVGFibGUoY3VycmVudFsxXS51Lm9wZXJhbmQpOwogICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSB0YWJsZS5icmFuY2hPZmZzZXRzLnNpemUoKTsgaS0tOykK
ICAgICAgICAgICAgIG91dC5hcHBlbmQoYnl0ZWNvZGVPZmZzZXQgKyB0YWJsZS5icmFuY2hPZmZz
ZXRzW2ldKTsKICAgICAgICAgb3V0LmFwcGVuZChieXRlY29kZU9mZnNldCArIGN1cnJlbnRbMl0u
dS5vcGVyYW5kKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2Ugb3Bfc3dpdGNoX3N0
cmluZzogewotICAgICAgICBTdHJpbmdKdW1wVGFibGUmIHRhYmxlID0gY29kZUJsb2NrLT5zdHJp
bmdTd2l0Y2hKdW1wVGFibGUoY3VycmVudFsxXS51Lm9wZXJhbmQpOwotICAgICAgICBTdHJpbmdK
dW1wVGFibGU6OlN0cmluZ09mZnNldFRhYmxlOjppdGVyYXRvciBpdGVyID0gdGFibGUub2Zmc2V0
VGFibGUuYmVnaW4oKTsKLSAgICAgICAgU3RyaW5nSnVtcFRhYmxlOjpTdHJpbmdPZmZzZXRUYWJs
ZTo6aXRlcmF0b3IgZW5kID0gdGFibGUub2Zmc2V0VGFibGUuZW5kKCk7CisgICAgICAgIGF1dG8m
IHRhYmxlID0gY29kZUJsb2NrLT5zdHJpbmdTd2l0Y2hKdW1wVGFibGUoY3VycmVudFsxXS51Lm9w
ZXJhbmQpOworICAgICAgICBhdXRvIGl0ZXIgPSB0YWJsZS5vZmZzZXRUYWJsZS5iZWdpbigpOwor
ICAgICAgICBhdXRvIGVuZCA9IHRhYmxlLm9mZnNldFRhYmxlLmVuZCgpOwogICAgICAgICBmb3Ig
KDsgaXRlciAhPSBlbmQ7ICsraXRlcikKICAgICAgICAgICAgIG91dC5hcHBlbmQoYnl0ZWNvZGVP
ZmZzZXQgKyBpdGVyLT52YWx1ZS5icmFuY2hPZmZzZXQpOwogICAgICAgICBvdXQuYXBwZW5kKGJ5
dGVjb2RlT2Zmc2V0ICsgY3VycmVudFsyXS51Lm9wZXJhbmQpOwpAQCAtODIsMTMgKzg3LDE5IEBA
IHN0YXRpYyB2b2lkIGdldEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIEludGVycHJldGVyKiBpCiAgICAgfQogfQogCi12b2lkIGNvbXB1dGVQcmVjaXNl
SnVtcFRhcmdldHMoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFZlY3Rvcjx1bnNpZ25lZCwgMzI+JiBv
dXQpCitlbnVtIGNsYXNzIENvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHNNb2RlIHsKKyAgICBGb2xs
b3dDb2RlQmxvY2tDbGFpbSwKKyAgICBGb3JjZUNvbXB1dGUsCit9OworCit0ZW1wbGF0ZTxDb21w
dXRlUHJlY2lzZUp1bXBUYXJnZXRzTW9kZSBNb2RlLCB0eXBlbmFtZSBCbG9jaywgdHlwZW5hbWUg
SW5zdHJ1Y3Rpb24sIHNpemVfdCB2ZWN0b3JTaXplPgordm9pZCBjb21wdXRlUHJlY2lzZUp1bXBU
YXJnZXRzSW50ZXJuYWwoQmxvY2sqIGNvZGVCbG9jaywgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9u
c0JlZ2luLCB1bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50LCBWZWN0b3I8dW5zaWduZWQsIHZlY3Rv
clNpemU+JiBvdXQpCiB7CiAgICAgQVNTRVJUKG91dC5pc0VtcHR5KCkpOwogICAgIAogICAgIC8v
IFdlIHdpbGwgZGVyaXZlIGEgc3VwZXJzZXQgb2YgdGhlIGp1bXAgdGFyZ2V0cyB0aGF0IHRoZSBj
b2RlIGJsb2NrIHRoaW5rcyBpdCBoYXMuCiAgICAgLy8gU28sIGlmIHRoZSBjb2RlIGJsb2NrIGNs
YWltcyB0aGVyZSBhcmUgbm9uZSwgdGhlbiB3ZSBhcmUgZG9uZS4KLSAgICBpZiAoIWNvZGVCbG9j
ay0+bnVtYmVyT2ZKdW1wVGFyZ2V0cygpKQorICAgIGlmIChNb2RlID09IENvbXB1dGVQcmVjaXNl
SnVtcFRhcmdldHNNb2RlOjpGb2xsb3dDb2RlQmxvY2tDbGFpbSAmJiAhY29kZUJsb2NrLT5udW1i
ZXJPZkp1bXBUYXJnZXRzKCkpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBmb3IgKHVuc2ln
bmVkIGkgPSBjb2RlQmxvY2stPm51bWJlck9mRXhjZXB0aW9uSGFuZGxlcnMoKTsgaS0tOykgewpA
QCAtOTgsMTAgKzEwOSw4IEBAIHZvaWQgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgVmVjdG9yPHVuc2lnbmVkLCAzMj4mIG91dCkKICAgICB9CiAKICAgICBJ
bnRlcnByZXRlciogaW50ZXJwcmV0ZXIgPSBjb2RlQmxvY2stPnZtKCktPmludGVycHJldGVyOwot
ICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiA9IGNvZGVCbG9jay0+aW5zdHJ1Y3Rp
b25zKCkuYmVnaW4oKTsKLSAgICB1bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50ID0gY29kZUJsb2Nr
LT5pbnN0cnVjdGlvbnMoKS5zaXplKCk7CiAgICAgZm9yICh1bnNpZ25lZCBieXRlY29kZU9mZnNl
dCA9IDA7IGJ5dGVjb2RlT2Zmc2V0IDwgaW5zdHJ1Y3Rpb25Db3VudDspIHsKLSAgICAgICAgT3Bj
b2RlSUQgb3Bjb2RlSUQgPSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25zQmVn
aW5bYnl0ZWNvZGVPZmZzZXRdLnUub3Bjb2RlKTsKKyAgICAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQg
PSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25zQmVnaW5bYnl0ZWNvZGVPZmZz
ZXRdKTsKICAgICAgICAgZ2V0SnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChjb2RlQmxvY2ss
IGludGVycHJldGVyLCBpbnN0cnVjdGlvbnNCZWdpbiwgYnl0ZWNvZGVPZmZzZXQsIG91dCk7CiAg
ICAgICAgIGJ5dGVjb2RlT2Zmc2V0ICs9IG9wY29kZUxlbmd0aHNbb3Bjb2RlSURdOwogICAgIH0K
QEAgLTEyMywxMSArMTMyLDM0IEBAIHZvaWQgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhDb2Rl
QmxvY2sqIGNvZGVCbG9jaywgVmVjdG9yPHVuc2lnbmVkLCAzMj4mIG91dCkKICAgICBvdXQuc2hy
aW5rVG9GaXQoKTsKIH0KIAotdm9pZCBmaW5kSnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChD
b2RlQmxvY2sqIGNvZGVCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIFZlY3Rvcjx1bnNp
Z25lZCwgMT4mIG91dCkKK3ZvaWQgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhDb2RlQmxvY2sq
IGNvZGVCbG9jaywgVmVjdG9yPHVuc2lnbmVkLCAzMj4mIG91dCkKIHsKLSAgICBJbnRlcnByZXRl
ciogaW50ZXJwcmV0ZXIgPSBjb2RlQmxvY2stPnZtKCktPmludGVycHJldGVyOwotICAgIEluc3Ry
dWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiA9IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVn
aW4oKTsKLSAgICBnZXRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9jaywgaW50
ZXJwcmV0ZXIsIGluc3RydWN0aW9uc0JlZ2luLCBieXRlY29kZU9mZnNldCwgb3V0KTsKKyAgICBj
b21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzSW50ZXJuYWw8Q29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0
c01vZGU6OkZvbGxvd0NvZGVCbG9ja0NsYWltPihjb2RlQmxvY2ssIGNvZGVCbG9jay0+aW5zdHJ1
Y3Rpb25zKCkuYmVnaW4oKSwgY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5zaXplKCksIG91dCk7
Cit9CisKK3ZvaWQgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhDb2RlQmxvY2sqIGNvZGVCbG9j
aywgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBpbnN0cnVjdGlvbkNv
dW50LCBWZWN0b3I8dW5zaWduZWQsIDMyPiYgb3V0KQoreworICAgIGNvbXB1dGVQcmVjaXNlSnVt
cFRhcmdldHNJbnRlcm5hbDxDb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzTW9kZTo6Rm9sbG93Q29k
ZUJsb2NrQ2xhaW0+KGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb25zQmVnaW4sIGluc3RydWN0aW9uQ291
bnQsIG91dCk7Cit9CisKK3ZvaWQgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhVbmxpbmtlZENv
ZGVCbG9jayogY29kZUJsb2NrLCBVbmxpbmtlZEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdp
biwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCwgVmVjdG9yPHVuc2lnbmVkLCAzMj4mIG91dCkK
K3sKKyAgICBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzSW50ZXJuYWw8Q29tcHV0ZVByZWNpc2VK
dW1wVGFyZ2V0c01vZGU6OkZvbGxvd0NvZGVCbG9ja0NsYWltPihjb2RlQmxvY2ssIGluc3RydWN0
aW9uc0JlZ2luLCBpbnN0cnVjdGlvbkNvdW50LCBvdXQpOworfQorCit2b2lkIHJlY29tcHV0ZVBy
ZWNpc2VKdW1wVGFyZ2V0cyhVbmxpbmtlZENvZGVCbG9jayogY29kZUJsb2NrLCBVbmxpbmtlZElu
c3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCwg
VmVjdG9yPHVuc2lnbmVkPiYgb3V0KQoreworICAgIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHNJ
bnRlcm5hbDxDb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzTW9kZTo6Rm9yY2VDb21wdXRlPihjb2Rl
QmxvY2ssIGluc3RydWN0aW9uc0JlZ2luLCBpbnN0cnVjdGlvbkNvdW50LCBvdXQpOworfQorCit2
b2lkIGZpbmRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2Nr
LCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0
LCBWZWN0b3I8dW5zaWduZWQsIDE+JiBvdXQpCit7CisgICAgZ2V0SnVtcFRhcmdldHNGb3JCeXRl
Y29kZU9mZnNldChjb2RlQmxvY2ssIGNvZGVCbG9jay0+dm0oKS0+aW50ZXJwcmV0ZXIsIGluc3Ry
dWN0aW9uc0JlZ2luLCBieXRlY29kZU9mZnNldCwgb3V0KTsKK30KKwordm9pZCBmaW5kSnVtcFRh
cmdldHNGb3JCeXRlY29kZU9mZnNldChVbmxpbmtlZENvZGVCbG9jayogY29kZUJsb2NrLCBVbmxp
bmtlZEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgYnl0ZWNvZGVPZmZz
ZXQsIFZlY3Rvcjx1bnNpZ25lZCwgMT4mIG91dCkKK3sKKyAgICBnZXRKdW1wVGFyZ2V0c0ZvckJ5
dGVjb2RlT2Zmc2V0KGNvZGVCbG9jaywgY29kZUJsb2NrLT52bSgpLT5pbnRlcnByZXRlciwgaW5z
dHJ1Y3Rpb25zQmVnaW4sIGJ5dGVjb2RlT2Zmc2V0LCBvdXQpOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVjaXNl
SnVtcFRhcmdldHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVt
cFRhcmdldHMuaAppbmRleCA4NTI0MTNkNzdiNzk4OTg0YjI3Y2VmMGVkNjJiYzk0YzY4OWUyMTJj
Li5kYjliZDM4M2I4YWM0NTU3ZDMyNjcxN2I3MmQ0YjBmNTBiMWQxODM4IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5oCkBAIC0z
MCwxMCArMzAsMTggQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKK2NsYXNzIFVubGlua2VkQ29kZUJs
b2NrOworc3RydWN0IFVubGlua2VkSW5zdHJ1Y3Rpb247CisKIC8vIFJldHVybiBhIHNvcnRlZCBs
aXN0IG9mIGJ5dGVjb2RlIGluZGV4IHRoYXQgYXJlIHRoZSBkZXN0aW5hdGlvbiBvZiBhIGp1bXAu
CiB2b2lkIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMoQ29kZUJsb2NrKiwgVmVjdG9yPHVuc2ln
bmVkLCAzMj4mIG91dCk7Cit2b2lkIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMoQ29kZUJsb2Nr
KiwgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBpbnN0cnVjdGlvbkNv
dW50LCBWZWN0b3I8dW5zaWduZWQsIDMyPiYgb3V0KTsKK3ZvaWQgY29tcHV0ZVByZWNpc2VKdW1w
VGFyZ2V0cyhVbmxpbmtlZENvZGVCbG9jayosIFVubGlua2VkSW5zdHJ1Y3Rpb24qIGluc3RydWN0
aW9uc0JlZ2luLCB1bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50LCBWZWN0b3I8dW5zaWduZWQsIDMy
PiYgb3V0KTsKKwordm9pZCByZWNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMoVW5saW5rZWRDb2Rl
QmxvY2sqLCBVbmxpbmtlZEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQg
aW5zdHJ1Y3Rpb25Db3VudCwgVmVjdG9yPHVuc2lnbmVkPiYgb3V0KTsKIAotdm9pZCBmaW5kSnVt
cFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqLCB1bnNpZ25lZCBieXRlY29kZU9m
ZnNldCwgVmVjdG9yPHVuc2lnbmVkLCAxPiYgb3V0KTsKK3ZvaWQgZmluZEp1bXBUYXJnZXRzRm9y
Qnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiwgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2lu
LCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgVmVjdG9yPHVuc2lnbmVkLCAxPiYgb3V0KTsKK3Zv
aWQgZmluZEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoVW5saW5rZWRDb2RlQmxvY2sqLCBV
bmxpbmtlZEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgYnl0ZWNvZGVP
ZmZzZXQsIFZlY3Rvcjx1bnNpZ25lZCwgMT4mIG91dCk7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2Rl
QmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJs
b2NrLmNwcAppbmRleCAyOTlhYzY4MGQ5YTFkMWU1YTkwZDlmYWUxYTIyZjg0NGUyOTJlM2UyLi5m
N2I1YWUwYjZiNDcyMTcwZDI4OTQ2NDE2NzY2MThjNTdjNDllYzJmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKQEAgLTI4
LDYgKzI4LDcgQEAKICNpbmNsdWRlICJVbmxpbmtlZENvZGVCbG9jay5oIgogCiAjaW5jbHVkZSAi
Qnl0ZWNvZGVHZW5lcmF0b3IuaCIKKyNpbmNsdWRlICJCeXRlY29kZU1vZGlmaWNhdGlvblNldC5o
IgogI2luY2x1ZGUgIkNsYXNzSW5mby5oIgogI2luY2x1ZGUgIkNvZGVDYWNoZS5oIgogI2luY2x1
ZGUgIkV4ZWN1dGFibGUuaCIKQEAgLTM2LDYgKzM3LDcgQEAKICNpbmNsdWRlICJKU1N0cmluZy5o
IgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJQYXJzZXIuaCIKKyNpbmNsdWRl
ICJQcmVjaXNlSnVtcFRhcmdldHMuaCIKICNpbmNsdWRlICJTb3VyY2VQcm92aWRlci5oIgogI2lu
Y2x1ZGUgIlN0cnVjdHVyZS5oIgogI2luY2x1ZGUgIlN5bWJvbFRhYmxlLmgiCkBAIC0zNjYsNSAr
MzY4LDExMSBAQCBjb25zdCBVbmxpbmtlZEluc3RydWN0aW9uU3RyZWFtJiBVbmxpbmtlZENvZGVC
bG9jazo6aW5zdHJ1Y3Rpb25zKCkgY29uc3QKICAgICByZXR1cm4gKm1fdW5saW5rZWRJbnN0cnVj
dGlvbnM7CiB9CiAKK1VubGlua2VkSGFuZGxlckluZm8qIFVubGlua2VkQ29kZUJsb2NrOjpoYW5k
bGVyRm9yQnl0ZWNvZGVPZmZzZXQodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIFJlcXVpcmVkSGFu
ZGxlciByZXF1aXJlZEhhbmRsZXIpCit7CisgICAgcmV0dXJuIGhhbmRsZXJGb3JJbmRleChieXRl
Y29kZU9mZnNldCwgcmVxdWlyZWRIYW5kbGVyKTsKK30KKworVW5saW5rZWRIYW5kbGVySW5mbyog
VW5saW5rZWRDb2RlQmxvY2s6OmhhbmRsZXJGb3JJbmRleCh1bnNpZ25lZCBpbmRleCwgUmVxdWly
ZWRIYW5kbGVyIHJlcXVpcmVkSGFuZGxlcikKK3sKKyAgICBpZiAoIW1fcmFyZURhdGEpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBVbmxpbmtlZEhhbmRsZXJJbmZvOjpoYW5k
bGVyRm9ySW5kZXgobV9yYXJlRGF0YS0+bV9leGNlcHRpb25IYW5kbGVycywgaW5kZXgsIHJlcXVp
cmVkSGFuZGxlcik7Cit9CisKK3ZvaWQgVW5saW5rZWRDb2RlQmxvY2s6OmFwcGx5TW9kaWZpY2F0
aW9uKEJ5dGVjb2RlTW9kaWZpY2F0aW9uU2V0JiBpbnNlcnRpb25TZXQpCit7CisgICAgLy8gQmVm
b3JlIGFwcGx5aW5nIHRoZSBjaGFuZ2VzLCB3ZSBhZGp1c3QgdGhlIGp1bXBzIGJhc2VkIG9uIHRo
ZSBvcmlnaW5hbCBieXRlY29kZSBvZmZzZXQsIHRoZSBvZmZzZXQgdG8gdGhlIGp1bXAgdGFyZ2V0
LCBhbmQKKyAgICAvLyB0aGUgaW5zZXJ0aW9uIGluZm9ybWF0aW9uLgorCisgICAgQnl0ZWNvZGVH
cmFwaDxVbmxpbmtlZENvZGVCbG9jaz4mIGdyYXBoID0gaW5zZXJ0aW9uU2V0LmdyYXBoKCk7Cisg
ICAgVW5saW5rZWRJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4gPSBncmFwaC5pbnN0cnVj
dGlvbnMoKS5iZWdpbigpOworICAgIGZvciAoaW50IGJ5dGVjb2RlT2Zmc2V0ID0gMCwgaW5zdHJ1
Y3Rpb25Db3VudCA9IGdyYXBoLmluc3RydWN0aW9ucygpLnNpemUoKTsgYnl0ZWNvZGVPZmZzZXQg
PCBpbnN0cnVjdGlvbkNvdW50OykgeworICAgICAgICBVbmxpbmtlZEluc3RydWN0aW9uKiBjdXJy
ZW50ID0gaW5zdHJ1Y3Rpb25zQmVnaW4gKyBieXRlY29kZU9mZnNldDsKKyAgICAgICAgT3Bjb2Rl
SUQgb3Bjb2RlSUQgPSBjdXJyZW50WzBdLnUub3Bjb2RlOworCisgICAgICAgIHN3aXRjaCAob3Bj
b2RlSUQpIHsKKyAgICAgICAgY2FzZSBvcF9qbXA6CisgICAgICAgICAgICBjdXJyZW50WzFdLnUu
b3BlcmFuZCA9IGluc2VydGlvblNldC5hZGp1c3RPZmZzZXQoYnl0ZWNvZGVPZmZzZXQsIGJ5dGVj
b2RlT2Zmc2V0ICsgY3VycmVudFsxXS51Lm9wZXJhbmQpOworICAgICAgICAgICAgYnJlYWs7CisK
KyAgICAgICAgY2FzZSBvcF9qdHJ1ZToKKyAgICAgICAgY2FzZSBvcF9qZmFsc2U6CisgICAgICAg
IGNhc2Ugb3BfamVxX251bGw6CisgICAgICAgIGNhc2Ugb3Bfam5lcV9udWxsOgorICAgICAgICAg
ICAgY3VycmVudFsyXS51Lm9wZXJhbmQgPSBpbnNlcnRpb25TZXQuYWRqdXN0T2Zmc2V0KGJ5dGVj
b2RlT2Zmc2V0LCBieXRlY29kZU9mZnNldCArIGN1cnJlbnRbMl0udS5vcGVyYW5kKTsKKyAgICAg
ICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2Ugb3Bfam5lcV9wdHI6CisgICAgICAgIGNhc2Ug
b3Bfamxlc3M6CisgICAgICAgIGNhc2Ugb3Bfamxlc3NlcToKKyAgICAgICAgY2FzZSBvcF9qZ3Jl
YXRlcjoKKyAgICAgICAgY2FzZSBvcF9qZ3JlYXRlcmVxOgorICAgICAgICBjYXNlIG9wX2pubGVz
czoKKyAgICAgICAgY2FzZSBvcF9qbmxlc3NlcToKKyAgICAgICAgY2FzZSBvcF9qbmdyZWF0ZXI6
CisgICAgICAgIGNhc2Ugb3Bfam5ncmVhdGVyZXE6CisgICAgICAgICAgICBjdXJyZW50WzNdLnUu
b3BlcmFuZCA9IGluc2VydGlvblNldC5hZGp1c3RPZmZzZXQoYnl0ZWNvZGVPZmZzZXQsIGJ5dGVj
b2RlT2Zmc2V0ICsgY3VycmVudFszXS51Lm9wZXJhbmQpOworICAgICAgICAgICAgYnJlYWs7CisK
KyAgICAgICAgY2FzZSBvcF9zd2l0Y2hfaW1tOgorICAgICAgICBjYXNlIG9wX3N3aXRjaF9jaGFy
OiB7CisgICAgICAgICAgICBhdXRvJiB0YWJsZSA9IHN3aXRjaEp1bXBUYWJsZShjdXJyZW50WzFd
LnUub3BlcmFuZCk7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSB0YWJsZS5icmFuY2hP
ZmZzZXRzLnNpemUoKTsgaS0tOykKKyAgICAgICAgICAgICAgICB0YWJsZS5icmFuY2hPZmZzZXRz
W2ldID0gaW5zZXJ0aW9uU2V0LmFkanVzdE9mZnNldChieXRlY29kZU9mZnNldCwgYnl0ZWNvZGVP
ZmZzZXQgKyB0YWJsZS5icmFuY2hPZmZzZXRzW2ldKTsKKyAgICAgICAgICAgIGN1cnJlbnRbMl0u
dS5vcGVyYW5kID0gaW5zZXJ0aW9uU2V0LmFkanVzdE9mZnNldChieXRlY29kZU9mZnNldCwgYnl0
ZWNvZGVPZmZzZXQgKyBjdXJyZW50WzJdLnUub3BlcmFuZCk7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorCisgICAgICAgIGNhc2Ugb3Bfc3dpdGNoX3N0cmluZzogeworICAgICAgICAg
ICAgYXV0byYgdGFibGUgPSBzdHJpbmdTd2l0Y2hKdW1wVGFibGUoY3VycmVudFsxXS51Lm9wZXJh
bmQpOworICAgICAgICAgICAgYXV0byBpdGVyID0gdGFibGUub2Zmc2V0VGFibGUuYmVnaW4oKTsK
KyAgICAgICAgICAgIGF1dG8gZW5kID0gdGFibGUub2Zmc2V0VGFibGUuZW5kKCk7CisgICAgICAg
ICAgICBmb3IgKDsgaXRlciAhPSBlbmQ7ICsraXRlcikKKyAgICAgICAgICAgICAgICBpdGVyLT52
YWx1ZS5icmFuY2hPZmZzZXQgPSBpbnNlcnRpb25TZXQuYWRqdXN0T2Zmc2V0KGJ5dGVjb2RlT2Zm
c2V0LCBieXRlY29kZU9mZnNldCArIGl0ZXItPnZhbHVlLmJyYW5jaE9mZnNldCk7CisgICAgICAg
ICAgICBjdXJyZW50WzJdLnUub3BlcmFuZCA9IGluc2VydGlvblNldC5hZGp1c3RPZmZzZXQoYnl0
ZWNvZGVPZmZzZXQsIGJ5dGVjb2RlT2Zmc2V0ICsgY3VycmVudFsyXS51Lm9wZXJhbmQpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBieXRlY29kZU9mZnNldCArPSBvcGNvZGVM
ZW5ndGgob3Bjb2RlSUQpOworICAgIH0KKworICAgIC8vIFRoZW4sIGV4Y2VwdGlvbiBoYW5kbGVy
cyBzaG91bGQgYmUgYWRqdXN0ZWQuCisgICAgaWYgKG1fcmFyZURhdGEpIHsKKyAgICAgICAgZm9y
IChVbmxpbmtlZEhhbmRsZXJJbmZvJiBoYW5kbGVyIDogbV9yYXJlRGF0YS0+bV9leGNlcHRpb25I
YW5kbGVycykgeworICAgICAgICAgICAgaGFuZGxlci50YXJnZXQgPSBpbnNlcnRpb25TZXQuYWRq
dXN0T2Zmc2V0KDAsIGhhbmRsZXIudGFyZ2V0KTsKKyAgICAgICAgICAgIGhhbmRsZXIuc3RhcnQg
PSBpbnNlcnRpb25TZXQuYWRqdXN0T2Zmc2V0KDAsIGhhbmRsZXIuc3RhcnQpOworICAgICAgICAg
ICAgaGFuZGxlci5lbmQgPSBpbnNlcnRpb25TZXQuYWRqdXN0T2Zmc2V0KDAsIGhhbmRsZXIuZW5k
KTsKKyAgICAgICAgfQorCisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9yYXJlRGF0
YS0+bV9vcFByb2ZpbGVDb250cm9sRmxvd0J5dGVjb2RlT2Zmc2V0cy5zaXplKCk7ICsraSkKKyAg
ICAgICAgICAgIG1fcmFyZURhdGEtPm1fb3BQcm9maWxlQ29udHJvbEZsb3dCeXRlY29kZU9mZnNl
dHNbaV0gPSBpbnNlcnRpb25TZXQuYWRqdXN0T2Zmc2V0KDAsIG1fcmFyZURhdGEtPm1fb3BQcm9m
aWxlQ29udHJvbEZsb3dCeXRlY29kZU9mZnNldHNbaV0pOworCisgICAgICAgIGlmICghbV9yYXJl
RGF0YS0+bV90eXBlUHJvZmlsZXJJbmZvTWFwLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgSGFz
aE1hcDx1bnNpZ25lZCwgUmFyZURhdGE6OlR5cGVQcm9maWxlckV4cHJlc3Npb25SYW5nZT4gYWRq
dXN0ZWRUeXBlUHJvZmlsZXJJbmZvTWFwOworICAgICAgICAgICAgZm9yIChhdXRvJiBlbnRyeSA6
IG1fcmFyZURhdGEtPm1fdHlwZVByb2ZpbGVySW5mb01hcCkKKyAgICAgICAgICAgICAgICBhZGp1
c3RlZFR5cGVQcm9maWxlckluZm9NYXAuc2V0KGluc2VydGlvblNldC5hZGp1c3RPZmZzZXQoMCwg
ZW50cnkua2V5KSwgZW50cnkudmFsdWUpOworICAgICAgICAgICAgbV9yYXJlRGF0YS0+bV90eXBl
UHJvZmlsZXJJbmZvTWFwLnN3YXAoYWRqdXN0ZWRUeXBlUHJvZmlsZXJJbmZvTWFwKTsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9wcm9wZXJ0eUFjY2Vz
c0luc3RydWN0aW9ucy5zaXplKCk7ICsraSkKKyAgICAgICAgbV9wcm9wZXJ0eUFjY2Vzc0luc3Ry
dWN0aW9uc1tpXSA9IGluc2VydGlvblNldC5hZGp1c3RPZmZzZXQoMCwgbV9wcm9wZXJ0eUFjY2Vz
c0luc3RydWN0aW9uc1tpXSk7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZXhwcmVz
c2lvbkluZm8uc2l6ZSgpOyArK2kpCisgICAgICAgIG1fZXhwcmVzc2lvbkluZm9baV0uaW5zdHJ1
Y3Rpb25PZmZzZXQgPSBpbnNlcnRpb25TZXQuYWRqdXN0T2Zmc2V0KDAsIG1fZXhwcmVzc2lvbklu
Zm9baV0uaW5zdHJ1Y3Rpb25PZmZzZXQpOworCisgICAgLy8gVGhlbiwgbW9kaWZ5IHRoZSB1bmxp
bmtlZCBpbnN0cnVjdGlvbnMuCisgICAgaW5zZXJ0aW9uU2V0LmFwcGx5TW9kaWZpY2F0aW9uKCk7
CisKKyAgICAvLyBBbmQgcmVjb21wdXRlIHRoZSBqdW1wIHRhcmdldCBiYXNlZCBvbiB0aGUgbW9k
aWZpZWQgdW5saW5rZWQgaW5zdHJ1Y3Rpb25zLgorICAgIG1fanVtcFRhcmdldHMuY2xlYXIoKTsK
KyAgICByZWNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHModGhpcywgZ3JhcGguaW5zdHJ1Y3Rpb25z
KCkuYmVnaW4oKSwgZ3JhcGguaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpLCBtX2p1bXBUYXJnZXRzKTsK
K30KKwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRDb2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Vbmxpbmtl
ZENvZGVCbG9jay5oCmluZGV4IDkxZmRjYTQ4YzFlMzllOGJlZmIwYzVmZDU1ZmQ5YmQ5MWMxZjM3
MDcuLjg4Y2YwYzhmMDllNDQwMzM0MTdlMDRiYWEzMmRjNTAyZGUxODAyMDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCkBAIC00
OCw2ICs0OCw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCitjbGFzcyBCeXRlY29kZU1vZGlmaWNh
dGlvblNldDsKIGNsYXNzIERlYnVnZ2VyOwogY2xhc3MgRnVuY3Rpb25NZXRhZGF0YU5vZGU7CiBj
bGFzcyBGdW5jdGlvbkV4ZWN1dGFibGU7CkBAIC02OSw3ICs3MCwxMSBAQCB0eXBlZGVmIHVuc2ln
bmVkIFVubGlua2VkT2JqZWN0QWxsb2NhdGlvblByb2ZpbGU7CiB0eXBlZGVmIHVuc2lnbmVkIFVu
bGlua2VkTExJbnRDYWxsTGlua0luZm87CiAKIHN0cnVjdCBVbmxpbmtlZFN0cmluZ0p1bXBUYWJs
ZSB7Ci0gICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxTdHJpbmdJbXBsPiwgaW50MzJfdD4gU3Ry
aW5nT2Zmc2V0VGFibGU7CisgICAgc3RydWN0IE9mZnNldExvY2F0aW9uIHsKKyAgICAgICAgaW50
MzJfdCBicmFuY2hPZmZzZXQ7CisgICAgfTsKKworICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8
U3RyaW5nSW1wbD4sIE9mZnNldExvY2F0aW9uPiBTdHJpbmdPZmZzZXRUYWJsZTsKICAgICBTdHJp
bmdPZmZzZXRUYWJsZSBvZmZzZXRUYWJsZTsKIAogICAgIGlubGluZSBpbnQzMl90IG9mZnNldEZv
clZhbHVlKFN0cmluZ0ltcGwqIHZhbHVlLCBpbnQzMl90IGRlZmF1bHRPZmZzZXQpCkBAIC03OCw3
ICs4Myw3IEBAIHN0cnVjdCBVbmxpbmtlZFN0cmluZ0p1bXBUYWJsZSB7CiAgICAgICAgIFN0cmlu
Z09mZnNldFRhYmxlOjpjb25zdF9pdGVyYXRvciBsb2MgPSBvZmZzZXRUYWJsZS5maW5kKHZhbHVl
KTsKICAgICAgICAgaWYgKGxvYyA9PSBlbmQpCiAgICAgICAgICAgICByZXR1cm4gZGVmYXVsdE9m
ZnNldDsKLSAgICAgICAgcmV0dXJuIGxvYy0+dmFsdWU7CisgICAgICAgIHJldHVybiBsb2MtPnZh
bHVlLmJyYW5jaE9mZnNldDsKICAgICB9CiAKIH07CkBAIC0xMDYsNiArMTExLDggQEAgc3RydWN0
IFVubGlua2VkSW5zdHJ1Y3Rpb24gewogICAgIH0gdTsKIH07CiAKK2NsYXNzIEJ5dGVjb2RlR2Vu
ZXJhdG9yaWZpY2F0aW9uOworCiBjbGFzcyBVbmxpbmtlZENvZGVCbG9jayA6IHB1YmxpYyBKU0Nl
bGwgewogcHVibGljOgogICAgIHR5cGVkZWYgSlNDZWxsIEJhc2U7CkBAIC0xMTUsNiArMTIyLDgg
QEAgY2xhc3MgVW5saW5rZWRDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKIAogICAgIGVudW0g
eyBDYWxsRnVuY3Rpb24sIEFwcGx5RnVuY3Rpb24gfTsKIAorICAgIHR5cGVkZWYgVmVjdG9yPFVu
bGlua2VkSW5zdHJ1Y3Rpb24sIDAsIFVuc2FmZVZlY3Rvck92ZXJmbG93PiBVbnBhY2tlZEluc3Ry
dWN0aW9uczsKKwogICAgIGJvb2wgaXNDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1faXND
b25zdHJ1Y3RvcjsgfQogICAgIGJvb2wgaXNTdHJpY3RNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9p
c1N0cmljdE1vZGU7IH0KICAgICBib29sIHVzZXNFdmFsKCkgY29uc3QgeyByZXR1cm4gbV91c2Vz
RXZhbDsgfQpAQCAtMjA0LDYgKzIxMyw5IEBAIGNsYXNzIFVubGlua2VkQ29kZUJsb2NrIDogcHVi
bGljIEpTQ2VsbCB7CiAgICAgdW5zaWduZWQganVtcFRhcmdldChpbnQgaW5kZXgpIGNvbnN0IHsg
cmV0dXJuIG1fanVtcFRhcmdldHNbaW5kZXhdOyB9CiAgICAgdW5zaWduZWQgbGFzdEp1bXBUYXJn
ZXQoKSBjb25zdCB7IHJldHVybiBtX2p1bXBUYXJnZXRzLmxhc3QoKTsgfQogCisgICAgVW5saW5r
ZWRIYW5kbGVySW5mbyogaGFuZGxlckZvckJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2Rl
T2Zmc2V0LCBSZXF1aXJlZEhhbmRsZXIgPSBSZXF1aXJlZEhhbmRsZXI6OkFueUhhbmRsZXIpOwor
ICAgIFVubGlua2VkSGFuZGxlckluZm8qIGhhbmRsZXJGb3JJbmRleCh1bnNpZ25lZCwgUmVxdWly
ZWRIYW5kbGVyID0gUmVxdWlyZWRIYW5kbGVyOjpBbnlIYW5kbGVyKTsKKwogICAgIGJvb2wgaXNC
dWlsdGluRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2lzQnVpbHRpbkZ1bmN0aW9uOyB9CiAK
ICAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kKCkgY29uc3QgeyByZXR1cm4gc3Rh
dGljX2Nhc3Q8Q29uc3RydWN0b3JLaW5kPihtX2NvbnN0cnVjdG9yS2luZCk7IH0KQEAgLTM4NCw2
ICszOTYsOCBAQCBjbGFzcyBVbmxpbmtlZENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAg
IH0KIAogcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgQnl0ZWNvZGVNb2RpZmljYXRpb25TZXQ7
CisgICAgdm9pZCBhcHBseU1vZGlmaWNhdGlvbihCeXRlY29kZU1vZGlmaWNhdGlvblNldCYpOwog
CiAgICAgdm9pZCBjcmVhdGVSYXJlRGF0YUlmTmVjZXNzYXJ5KCkKICAgICB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmlydHVhbFJlZ2lzdGVyLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmlydHVhbFJlZ2lzdGVyLmgKaW5kZXggZDNkZjQw
OTU3YjUxNzU2OGUzYWVmYmUzYTFhNjA5ZmQ4NzhiYWFjMy4uZGFmNTA5ZjZjN2QxMTVlNDViY2Ix
MDdjNjdkM2QzOGQ4MDRmMjg5NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1ZpcnR1YWxSZWdpc3Rlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9WaXJ0dWFsUmVnaXN0ZXIuaApAQCAtMjYsOCArMjYsOCBAQAogI2lmbmRlZiBWaXJ0dWFs
UmVnaXN0ZXJfaAogI2RlZmluZSBWaXJ0dWFsUmVnaXN0ZXJfaAogCisjaW5jbHVkZSAiQnl0ZWNv
ZGVDb252ZW50aW9ucy5oIgogI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgotCiAjaW5jbHVkZSA8d3Rm
L1ByaW50U3RyZWFtLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtMTAzLDcgKzEwMyw3IEBAIGNs
YXNzIFZpcnR1YWxSZWdpc3RlciB7CiAKIHByaXZhdGU6CiAgICAgc3RhdGljIGNvbnN0IGludCBz
X2ludmFsaWRWaXJ0dWFsUmVnaXN0ZXIgPSAweDNmZmZmZmZmOwotICAgIHN0YXRpYyBjb25zdCBp
bnQgc19maXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCA9IDB4NDAwMDAwMDA7CisgICAgc3RhdGlj
IGNvbnN0IGludCBzX2ZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4ID0gRmlyc3RDb25zdGFudFJl
Z2lzdGVySW5kZXg7CiAKICAgICBzdGF0aWMgaW50IGxvY2FsVG9PcGVyYW5kKGludCBsb2NhbCkg
eyByZXR1cm4gLTEgLSBsb2NhbDsgfQogICAgIHN0YXRpYyBpbnQgb3BlcmFuZFRvTG9jYWwoaW50
IG9wZXJhbmQpIHsgcmV0dXJuIC0xIC0gb3BlcmFuZDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCAw
ZmM4Y2ViM2JkNTZiYjVlYjhjN2NiNzMzZGEzYTA0YWM2MzYzZTI2Li45YTBhNGE3NmVjNmRmNGM1
MGY5ZDYyNmZhNzVmMGE0ZGQzMTEwOWRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAtMzIsNiArMzIs
NyBAQAogI2luY2x1ZGUgIkJ5dGVjb2RlR2VuZXJhdG9yLmgiCiAKICNpbmNsdWRlICJCdWlsdGlu
RXhlY3V0YWJsZXMuaCIKKyNpbmNsdWRlICJCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5oIgog
I2luY2x1ZGUgIkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5oIgogI2luY2x1ZGUgIkludGVycHJl
dGVyLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgpAQCAtMTU0LDYgKzE1NSwxMCBAQCBQYXJz
ZXJFcnJvciBCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUoKQogICAgICAgICBtX2NvZGVCbG9j
ay0+YWRkRXhjZXB0aW9uSGFuZGxlcihpbmZvKTsKICAgICB9CiAgICAgCisKKyAgICBpZiAobV9j
b2RlQmxvY2stPnBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yQm9keU1v
ZGUpCisgICAgICAgIHBlcmZvcm1HZW5lcmF0b3JpZmljYXRpb24obV9jb2RlQmxvY2suZ2V0KCks
IG1faW5zdHJ1Y3Rpb25zLCBtX2dlbmVyYXRvckZyYW1lU3ltYm9sVGFibGUuZ2V0KCksIG1fZ2Vu
ZXJhdG9yRnJhbWVTeW1ib2xUYWJsZUluZGV4KTsKKwogICAgIG1fY29kZUJsb2NrLT5zZXRJbnN0
cnVjdGlvbnMoc3RkOjptYWtlX3VuaXF1ZTxVbmxpbmtlZEluc3RydWN0aW9uU3RyZWFtPihtX2lu
c3RydWN0aW9ucykpOwogCiAgICAgbV9jb2RlQmxvY2stPnNocmlua1RvRml0KCk7CkBAIC0yNjEs
MTAgKzI2NiwxNCBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZt
LCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAgIGJvb2wgc2hvdWxkQ2Fw
dHVyZUFsbE9mVGhlVGhpbmdzID0gbV9zaG91bGRFbWl0RGVidWdIb29rcyB8fCBjb2RlQmxvY2st
PnVzZXNFdmFsKCk7CiAgICAgYm9vbCBuZWVkc0FyZ3VtZW50cyA9IChmdW5jdGlvbk5vZGUtPnVz
ZXNBcmd1bWVudHMoKSB8fCBjb2RlQmxvY2stPnVzZXNFdmFsKCkgfHwgKGZ1bmN0aW9uTm9kZS0+
dXNlc0Fycm93RnVuY3Rpb24oKSAmJiAhY29kZUJsb2NrLT5pc0Fycm93RnVuY3Rpb24oKSAmJiBp
c0FyZ3VtZW50c1VzZWRJbklubmVyQXJyb3dGdW5jdGlvbigpKSk7CiAKLSAgICAvLyBHZW5lcmF0
b3IgbmV2ZXIgcHJvdmlkZXMgImFyZ3VtZW50cyIuICJhcmd1bWVudHMiIHJlZmVyZW5jZSB3aWxs
IGJlIHJlc29sdmVkIGluIGFuIHVwcGVyIGdlbmVyYXRvciBmdW5jdGlvbiBzY29wZS4KLSAgICBp
ZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yQm9keU1vZGUpCisgICAg
aWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckJvZHlNb2RlKSB7Cisg
ICAgICAgIC8vIEdlbmVyYXRvciBuZXZlciBwcm92aWRlcyAiYXJndW1lbnRzIi4gImFyZ3VtZW50
cyIgcmVmZXJlbmNlIHdpbGwgYmUgcmVzb2x2ZWQgaW4gYW4gdXBwZXIgZ2VuZXJhdG9yIGZ1bmN0
aW9uIHNjb3BlLgogICAgICAgICBuZWVkc0FyZ3VtZW50cyA9IGZhbHNlOwogCisgICAgICAgIC8v
IEdlbmVyYXRvciB1c2VzIHRoZSB2YXIgc2NvcGUgdG8gc2F2ZSBhbmQgcmVzdW1lIGl0cyB2YXJp
YWJsZXMuIFNvIHRoZSBsZXhpY2FsIHNjb3BlIGlzIGFsd2F5cyBpbnN0YW50aWF0ZWQuCisgICAg
ICAgIHNob3VsZENhcHR1cmVTb21lT2ZUaGVUaGluZ3MgPSB0cnVlOworICAgIH0KKwogICAgIGlm
IChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JXcmFwcGVyRnVuY3Rpb25N
b2RlICYmIG5lZWRzQXJndW1lbnRzKSB7CiAgICAgICAgIC8vIEdlbmVyYXRvciBkb2VzIG5vdCBw
cm92aWRlICJhcmd1bWVudHMiLiBJbnN0ZWFkLCB3cmFwcGluZyBHZW5lcmF0b3JGdW5jdGlvbiBw
cm92aWRlcyAiYXJndW1lbnRzIi4KICAgICAgICAgLy8gVGhpcyBpcyBiZWNhdXNlIGFyZ3VtZW50
cyBvZiBhIGdlbmVyYXRvciBzaG91bGQgYmUgZXZhbHVhdGVkIGJlZm9yZSBzdGFydGluZyBpdC4K
QEAgLTI3Myw3ICsyODIsNyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3Io
Vk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAgICAgICAvLyAg
ICBmdW5jdGlvbiAqZ2VuKGEsIGIgPSBoZWxsbygpKQogICAgICAgICAvLyAgICB7CiAgICAgICAg
IC8vICAgICAgICByZXR1cm4gewotICAgICAgICAvLyAgICAgICAgICAgIEBnZW5lcmF0b3JOZXh0
OiBmdW5jdGlvbiAoQGdlbmVyYXRvciwgQGdlbmVyYXRvclN0YXRlLCBAZ2VuZXJhdG9yVmFsdWUs
IEBnZW5lcmF0b3JSZXN1bWVNb2RlKQorICAgICAgICAvLyAgICAgICAgICAgIEBnZW5lcmF0b3JO
ZXh0OiBmdW5jdGlvbiAoQGdlbmVyYXRvciwgQGdlbmVyYXRvclN0YXRlLCBAZ2VuZXJhdG9yVmFs
dWUsIEBnZW5lcmF0b3JSZXN1bWVNb2RlLCBAZ2VuZXJhdG9yRnJhbWUpCiAgICAgICAgIC8vICAg
ICAgICAgICAgewogICAgICAgICAvLyAgICAgICAgICAgICAgICBhcmd1bWVudHM7ICAvLyBUaGlz
IGBhcmd1bWVudHNgIHNob3VsZCByZWZlcmVuY2UgdG8gdGhlIGdlbidzIGFyZ3VtZW50cy4KICAg
ICAgICAgLy8gICAgICAgICAgICAgICAgLi4uCkBAIC0zMDIsMTYgKzMxMSwxNCBAQCBCeXRlY29k
ZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0
aW9uTm9kZSwgVW5saW5rZQogICAgICAgICByZXR1cm4gY2FwdHVyZXModWlkKSA/IFZhcktpbmQ6
OlNjb3BlIDogVmFyS2luZDo6U3RhY2s7CiAgICAgfTsKIAotICAgIGVtaXRFbnRlcigpOwotCi0g
ICAgYWxsb2NhdGVBbmRFbWl0U2NvcGUoKTsKLQogICAgIG1fY2FsbGVlUmVnaXN0ZXIuc2V0SW5k
ZXgoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlKTsKIAogICAgIGluaXRpYWxpemVQYXJhbWV0ZXJzKHBh
cmFtZXRlcnMpOwogICAgIEFTU0VSVCghKGlzU2ltcGxlUGFyYW1ldGVyTGlzdCAmJiBtX3Jlc3RQ
YXJhbWV0ZXIpKTsKIAotICAgIC8vIEJlZm9yZSBlbWl0dGluZyBhIHNjb3BlIGNyZWF0aW9uLCBl
bWl0IGEgZ2VuZXJhdG9yIHByb2xvZ3VlIHRoYXQgY29udGFpbnMganVtcCBiYXNlZCBvbiBhIGdl
bmVyYXRvcidzIHN0YXRlLgorICAgIGVtaXRFbnRlcigpOworCisgICAgLy8gQmVmb3JlIGVtaXR0
aW5nIGFueSBvZiB0aGUgYWN0dWFsIGNvZGUgZXhjZXB0IGZvciBvcF9lbnRlciwgZW1pdCBhIGdl
bmVyYXRvciBwcm9sb2d1ZSB0aGF0IGNvbnRhaW5zIGp1bXAgYmFzZWQgb24gYSBnZW5lcmF0b3In
cyBzdGF0ZS4KICAgICBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9y
Qm9keU1vZGUpIHsKICAgICAgICAgbV9nZW5lcmF0b3JSZWdpc3RlciA9ICZtX3BhcmFtZXRlcnNb
MV07CiAKQEAgLTMyNSw2ICszMzIsOCBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5l
cmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAgICAg
ICBlbWl0R2VuZXJhdG9yU3RhdGVMYWJlbCgpOwogICAgIH0KIAorICAgIGFsbG9jYXRlQW5kRW1p
dFNjb3BlKCk7CisKICAgICBpZiAoZnVuY3Rpb25OYW1lSXNJblNjb3BlKGZ1bmN0aW9uTm9kZS0+
aWRlbnQoKSwgZnVuY3Rpb25Ob2RlLT5mdW5jdGlvbk1vZGUoKSkpIHsKICAgICAgICAgQVNTRVJU
KHBhcnNlTW9kZSAhPSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckJvZHlNb2RlKTsKICAgICAg
ICAgYm9vbCBpc0R5bmFtaWNTY29wZSA9IGZ1bmN0aW9uTmFtZVNjb3BlSXNEeW5hbWljKGNvZGVC
bG9jay0+dXNlc0V2YWwoKSwgY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSk7CkBAIC02MzEsNiAr
NjQwLDE2IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1
bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtlCiAgICAgICAgICAgICBlbWl0TG9hZE5l
d1RhcmdldEZyb21BcnJvd0Z1bmN0aW9uTGV4aWNhbEVudmlyb25tZW50KCk7CiAgICAgfQogICAg
IAorICAgIC8vIFNldCB1cCB0aGUgbGV4aWNhbCBlbnZpcm9ubWVudCBzY29wZSBhcyB0aGUgZ2Vu
ZXJhdG9yIGZyYW1lLiBXZSBzdG9yZSB0aGUgc2F2ZWQgYW5kIHJlc3VtZWQgZ2VuZXJhdG9yIHJl
Z2lzdGVycyBpbnRvIHRoaXMgc2NvcGUgd2l0aCB0aGUgc3ltYm9sIGtleXMuCisgICAgLy8gU2lu
Y2UgdGhleSBhcmUgc3ltYm9sIGtleWVkLCB0aGVzZSB2YXJpYWJsZXMgY2Fubm90IGJlIHJlYWNo
ZWQgZnJvbSB0aGUgdXN1YWwgY29kZS4KKyAgICBpZiAoU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0
b3JCb2R5TW9kZSA9PSBwYXJzZU1vZGUpIHsKKyAgICAgICAgQVNTRVJUKG1fbGV4aWNhbEVudmly
b25tZW50UmVnaXN0ZXIpOworICAgICAgICBtX2dlbmVyYXRvckZyYW1lU3ltYm9sVGFibGUuc2V0
KCptX3ZtLCBmdW5jdGlvblN5bWJvbFRhYmxlKTsKKyAgICAgICAgbV9nZW5lcmF0b3JGcmFtZVN5
bWJvbFRhYmxlSW5kZXggPSBzeW1ib2xUYWJsZUNvbnN0YW50SW5kZXg7CisgICAgICAgIGVtaXRN
b3ZlKGdlbmVyYXRvckZyYW1lUmVnaXN0ZXIoKSwgbV9sZXhpY2FsRW52aXJvbm1lbnRSZWdpc3Rl
cik7CisgICAgICAgIGVtaXRQdXRCeUlkKGdlbmVyYXRvclJlZ2lzdGVyKCksIHByb3BlcnR5TmFt
ZXMoKS5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JGcmFtZVByaXZhdGVOYW1lKCksIGdlbmVyYXRv
ckZyYW1lUmVnaXN0ZXIoKSk7CisgICAgfQorCiAgICAgYm9vbCBzaG91bGRJbml0aWFsaXplQmxv
Y2tTY29wZWRGdW5jdGlvbnMgPSBmYWxzZTsgLy8gV2UgZ2VuZXJhdGUgdG9wLWxldmVsIGZ1bmN0
aW9uIGRlY2xhcmF0aW9ucyBpbiA6OmdlbmVyYXRlKCkuCiAgICAgcHVzaExleGljYWxTY29wZSht
X3Njb3BlTm9kZSwgVERaQ2hlY2tPcHRpbWl6YXRpb246Ok9wdGltaXplLCBOZXN0ZWRTY29wZVR5
cGU6OklzTm90TmVzdGVkLCBudWxscHRyLCBzaG91bGRJbml0aWFsaXplQmxvY2tTY29wZWRGdW5j
dGlvbnMpOwogfQpAQCAtMzY2Miw4ICszNjgxLDcgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdENvbXBsZXhQb3BTY29wZXMoUmVnaXN0ZXJJRCogc2NvcGUsIENvbnRyb2xGbG93Q29udGUK
ICAgICAgICAgICAgIGlmIChmbGlwVHJpZXMpIHsKICAgICAgICAgICAgICAgICB3aGlsZSAobV90
cnlDb250ZXh0U3RhY2suc2l6ZSgpICE9IGZpbmFsbHlDb250ZXh0LnRyeUNvbnRleHRTdGFja1Np
emUpIHsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKG1fdHJ5Q29udGV4dFN0YWNrLnNpemUo
KSA+IGZpbmFsbHlDb250ZXh0LnRyeUNvbnRleHRTdGFja1NpemUpOwotICAgICAgICAgICAgICAg
ICAgICBUcnlDb250ZXh0IGNvbnRleHQgPSBtX3RyeUNvbnRleHRTdGFjay5sYXN0KCk7Ci0gICAg
ICAgICAgICAgICAgICAgIG1fdHJ5Q29udGV4dFN0YWNrLnJlbW92ZUxhc3QoKTsKKyAgICAgICAg
ICAgICAgICAgICAgVHJ5Q29udGV4dCBjb250ZXh0ID0gbV90cnlDb250ZXh0U3RhY2sudGFrZUxh
c3QoKTsKICAgICAgICAgICAgICAgICAgICAgVHJ5UmFuZ2UgcmFuZ2U7CiAgICAgICAgICAgICAg
ICAgICAgIHJhbmdlLnN0YXJ0ID0gY29udGV4dC5zdGFydDsKICAgICAgICAgICAgICAgICAgICAg
cmFuZ2UuZW5kID0gYmVmb3JlRmluYWxseTsKQEAgLTM5NDcsNyArMzk2NSw3IEBAIHN0YXRpYyB2
b2lkIHByZXBhcmVKdW1wVGFibGVGb3JTdHJpbmdTd2l0Y2goVW5saW5rZWRTdHJpbmdKdW1wVGFi
bGUmIGp1bXBUYWJsZSwKICAgICAgICAgCiAgICAgICAgIEFTU0VSVChub2Rlc1tpXS0+aXNTdHJp
bmcoKSk7CiAgICAgICAgIFN0cmluZ0ltcGwqIGNsYXVzZSA9IHN0YXRpY19jYXN0PFN0cmluZ05v
ZGUqPihub2Rlc1tpXSktPnZhbHVlKCkuaW1wbCgpOwotICAgICAgICBqdW1wVGFibGUub2Zmc2V0
VGFibGUuYWRkKGNsYXVzZSwgbGFiZWxzW2ldLT5iaW5kKHN3aXRjaEFkZHJlc3MsIHN3aXRjaEFk
ZHJlc3MgKyAzKSk7CisgICAgICAgIGp1bXBUYWJsZS5vZmZzZXRUYWJsZS5hZGQoY2xhdXNlLCBV
bmxpbmtlZFN0cmluZ0p1bXBUYWJsZTo6T2Zmc2V0TG9jYXRpb24geyBsYWJlbHNbaV0tPmJpbmQo
c3dpdGNoQWRkcmVzcywgc3dpdGNoQWRkcmVzcyArIDMpIH0pOwogICAgIH0KIH0KIApAQCAtNDQ1
NSwxNiArNDQ3MywzNiBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0WWllbGRQb2ludChS
ZWdpc3RlcklEKiBhcmd1bWVudCkKICAgICBlbWl0R2VuZXJhdG9yU3RhdGVDaGFuZ2UoeWllbGRQ
b2ludEluZGV4KTsKICAgICAvLyBGaXJzdCB5aWVsZCBwb2ludCBpcyB1c2VkIGZvciBpbml0aWFs
IHNlcXVlbmNlLgogICAgIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9IHlpZWxkUG9p
bnRJbmRleCAtIDE7CisKKyAgICAvLyBTcGxpdCB0aGUgdHJ5IHJhbmdlIGhlcmUuCisgICAgUmVm
UHRyPExhYmVsPiBzYXZlUG9pbnQgPSBlbWl0TGFiZWwobmV3TGFiZWwoKS5nZXQoKSk7CisgICAg
Zm9yICh1bnNpZ25lZCBpID0gbV90cnlDb250ZXh0U3RhY2suc2l6ZSgpOyBpLS07KSB7CisgICAg
ICAgIFRyeUNvbnRleHQmIGNvbnRleHQgPSBtX3RyeUNvbnRleHRTdGFja1tpXTsKKyAgICAgICAg
VHJ5UmFuZ2UgcmFuZ2U7CisgICAgICAgIHJhbmdlLnN0YXJ0ID0gY29udGV4dC5zdGFydDsKKyAg
ICAgICAgcmFuZ2UuZW5kID0gc2F2ZVBvaW50OworICAgICAgICByYW5nZS50cnlEYXRhID0gY29u
dGV4dC50cnlEYXRhOworICAgICAgICBtX3RyeVJhbmdlcy5hcHBlbmQocmFuZ2UpOworCisgICAg
ICAgIC8vIFRyeSByYW5nZSB3aWxsIGJlIHJlc3RhcmVkIGF0IHRoZSBtZXJnZSBwb2ludC4KKyAg
ICAgICAgY29udGV4dC5zdGFydCA9IG1lcmdlUG9pbnQ7CisgICAgfQorICAgIFZlY3RvcjxUcnlD
b250ZXh0PiBzYXZlZFRyeUNvbnRleHRTdGFjazsKKyAgICBtX3RyeUNvbnRleHRTdGFjay5zd2Fw
KHNhdmVkVHJ5Q29udGV4dFN0YWNrKTsKKwogICAgIGVtaXRTYXZlKG1lcmdlUG9pbnQuZ2V0KCks
IGxpdmVDYWxsZWVMb2NhbHNJbmRleCk7CiAgICAgZW1pdFJldHVybihhcmd1bWVudCk7CiAgICAg
ZW1pdFJlc3VtZShtZXJnZVBvaW50LmdldCgpLCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpOworCisg
ICAgLy8gUmVzdG9yZSB0aGUgdHJ5IGNvbnRleHRzLCB3aGljaCBzdGFydCBvZmZzZXQgaXMgdXBk
YXRlZCB0byB0aGUgbWVyZ2UgcG9pbnQuCisgICAgbV90cnlDb250ZXh0U3RhY2suc3dhcChzYXZl
ZFRyeUNvbnRleHRTdGFjayk7CiB9CiAKIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRTYXZl
KExhYmVsKiBtZXJnZVBvaW50LCB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpCiB7CiAg
ICAgc2l6ZV90IGJlZ2luID0gaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpOwogICAgIGVtaXRPcGNvZGUo
b3Bfc2F2ZSk7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fZ2VuZXJhdG9yUmVnaXN0ZXIt
PmluZGV4KCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChnZW5lcmF0b3JGcmFtZVJlZ2lz
dGVyKCktPmluZGV4KCkpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChsaXZlQ2FsbGVlTG9j
YWxzSW5kZXgpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChtZXJnZVBvaW50LT5iaW5kKGJl
Z2luLCBpbnN0cnVjdGlvbnMoKS5zaXplKCkpKTsKIH0KQEAgLTQ0NzMsNyArNDUxMSw3IEBAIHZv
aWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXN1bWUoTGFiZWwqIG1lcmdlUG9pbnQsIHVuc2ln
bmVkIGxpdmVDYWxsZWVMb2NhbHNJCiB7CiAgICAgZW1pdEdlbmVyYXRvclN0YXRlTGFiZWwoKTsK
ICAgICBlbWl0T3Bjb2RlKG9wX3Jlc3VtZSk7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1f
Z2VuZXJhdG9yUmVnaXN0ZXItPmluZGV4KCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChn
ZW5lcmF0b3JGcmFtZVJlZ2lzdGVyKCktPmluZGV4KCkpOwogICAgIGluc3RydWN0aW9ucygpLmFw
cGVuZChsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpOwogICAgIGVtaXRMYWJlbChtZXJnZVBvaW50KTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuaAppbmRleCA1ZmFmMDRmMmYzZGJhMThhZGIwNzg5ZTMyM2U5ZGFhZTYxYWIx
MTZiLi5lYzJhMGU2YjA2NmNhYWRhY2YyYjdiMDdmYWFmNjU1YmZjNDUxYjEyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5oCkBAIC03MDUsNiArNzA1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFJlZ2lzdGVy
SUQqIGdlbmVyYXRvclN0YXRlUmVnaXN0ZXIoKSB7IHJldHVybiAmbV9wYXJhbWV0ZXJzWzJdOyB9
CiAgICAgICAgIFJlZ2lzdGVySUQqIGdlbmVyYXRvclZhbHVlUmVnaXN0ZXIoKSB7IHJldHVybiAm
bV9wYXJhbWV0ZXJzWzNdOyB9CiAgICAgICAgIFJlZ2lzdGVySUQqIGdlbmVyYXRvclJlc3VtZU1v
ZGVSZWdpc3RlcigpIHsgcmV0dXJuICZtX3BhcmFtZXRlcnNbNF07IH0KKyAgICAgICAgUmVnaXN0
ZXJJRCogZ2VuZXJhdG9yRnJhbWVSZWdpc3RlcigpIHsgcmV0dXJuICZtX3BhcmFtZXRlcnNbNV07
IH0KIAogICAgICAgICBDb2RlVHlwZSBjb2RlVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZVR5
cGU7IH0KIApAQCAtOTMyLDYgKzkzMywxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgVmVj
dG9yPFJlZlB0cjxGb3JJbkNvbnRleHQ+PiBtX2ZvckluQ29udGV4dFN0YWNrOwogICAgICAgICBW
ZWN0b3I8VHJ5Q29udGV4dD4gbV90cnlDb250ZXh0U3RhY2s7CiAgICAgICAgIFZlY3RvcjxSZWZQ
dHI8TGFiZWw+PiBtX2dlbmVyYXRvclJlc3VtZUxhYmVsczsKKworICAgICAgICBTdHJvbmc8U3lt
Ym9sVGFibGU+IG1fZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZTsKKyAgICAgICAgaW50IG1fZ2Vu
ZXJhdG9yRnJhbWVTeW1ib2xUYWJsZUluZGV4IHsgMCB9OworCiAgICAgICAgIGVudW0gRnVuY3Rp
b25WYXJpYWJsZVR5cGUgOiB1aW50OF90IHsgTm9ybWFsRnVuY3Rpb25WYXJpYWJsZSwgR2xvYmFs
RnVuY3Rpb25WYXJpYWJsZSB9OwogICAgICAgICBWZWN0b3I8c3RkOjpwYWlyPEZ1bmN0aW9uTWV0
YWRhdGFOb2RlKiwgRnVuY3Rpb25WYXJpYWJsZVR5cGU+PiBtX2Z1bmN0aW9uc1RvSW5pdGlhbGl6
ZTsKICAgICAgICAgYm9vbCBtX25lZWRUb0luaXRpYWxpemVBcmd1bWVudHMgeyBmYWxzZSB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKaW5kZXggNjlhMTZl
YjVkYTQzNTViYzc5MjVjNWRmZGNiMDYyMDIzZTk5NjUwMi4uYzQ1NzIzYjE5MDEzMjAyNWRmY2Uz
MjZmNjAxNWVjYTZjZTU4ZDcxYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09w
ZXJhdGlvbnMuY3BwCkBAIC00Miw4ICs0Miw4IEBACiAjaW5jbHVkZSAiRGlyZWN0QXJndW1lbnRz
LmgiCiAjaW5jbHVkZSAiRlRMRm9yT1NSRW50cnlKSVRDb2RlLmgiCiAjaW5jbHVkZSAiRlRMT1NS
RW50cnkuaCIKLSNpbmNsdWRlICJIb3N0Q2FsbFJldHVyblZhbHVlLmgiCiAjaW5jbHVkZSAiR2V0
dGVyU2V0dGVyLmgiCisjaW5jbHVkZSAiSG9zdENhbGxSZXR1cm5WYWx1ZS5oIgogI2luY2x1ZGUg
IkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSklURXhjZXB0aW9u
cy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRlLWJ5dGVjb2Rl
LWZpbGVzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRlLWJ5dGVjb2RlLWZpbGVzCmlu
ZGV4IDU2NjZhM2Y5MjRjMTE5YjIxNmQzZmYwZmZlOWM2NzJiN2M3MWJiNzkuLjhmNzkwZWQ5ZmE4
MzE2ZDM5ZGExNWQzYjc1ODk0NmJmNDlmM2JkM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9nZW5lcmF0ZS1ieXRlY29kZS1maWxlcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZ2VuZXJhdGUtYnl0ZWNvZGUtZmlsZXMKQEAgLTk0LDEzICs5NCwxNCBAQCBkZWYgb3Blbk9y
RXhpdChwYXRoLCBtb2RlKToKICAgICAgICAgcHJpbnQgIkkvTyBlcnJvciBvcGVuaW5nIHswfSwg
KHsxfSk6IHsyfSIuZm9ybWF0KHBhdGgsIGUuZXJybm8sIGUuc3RyZXJyb3IpCiAgICAgICAgIGV4
aXQoMSkKIAotZGVmIGhhc2hGaWxlKGZpbGUpOgorZGVmIGhhc2hGaWxlKGZpbGVzKToKICAgICBz
aGExID0gaGFzaGxpYi5zaGExKCkKLSAgICBmaWxlLnNlZWsoMCkKLSAgICBmb3IgbGluZSBpbiBm
aWxlOgotICAgICAgICBzaGExLnVwZGF0ZShsaW5lKQorICAgIGZvciBmaWxlIGluIGZpbGVzOgor
ICAgICAgICBmaWxlLnNlZWsoMCkKKyAgICAgICAgZm9yIGxpbmUgaW4gZmlsZToKKyAgICAgICAg
ICAgIHNoYTEudXBkYXRlKGxpbmUpCiAKLSAgICBmaWxlLnNlZWsoMCkKKyAgICAgICAgZmlsZS5z
ZWVrKDApCiAKICAgICByZXR1cm4gc2hhMS5oZXhkaWdlc3QoKQogCkBAIC0xMTUsNyArMTE2LDgg
QEAgaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKIAogICAgIGJ5dGVjb2RlSlNPTkZpbGUgPSBh
cmdzWzBdCiAgICAgYnl0ZWNvZGVGaWxlID0gb3Blbk9yRXhpdChieXRlY29kZUpTT05GaWxlLCAi
cmIiKQotICAgIHNoYTFIYXNoID0gaGFzaEZpbGUoYnl0ZWNvZGVGaWxlKQorICAgIGdlbmVyYXRv
ckZpbGUgPSBvcGVuT3JFeGl0KF9fZmlsZV9fLCAicmIiKQorICAgIHNoYTFIYXNoID0gaGFzaEZp
bGUoW2J5dGVjb2RlRmlsZSwgZ2VuZXJhdG9yRmlsZV0pCiAKICAgICBoRmlsZUhhc2hTdHJpbmcg
PSAiLy8gU0hBMUhhc2g6IHswfVxuIi5mb3JtYXQoc2hhMUhhc2gpCiAgICAgYXNtRmlsZUhhc2hT
dHJpbmcgPSAiIyBTSEExSGFzaDogezB9XG4iLmZvcm1hdChzaGExSGFzaCkKQEAgLTE4Nyw2ICsx
ODksNyBAQCBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgICAgICAgICAgICAgIGRlZmF1
bHRMZW5ndGggPSBzZWN0aW9uWyJkZWZhdWx0TGVuZ3RoIl0KIAogICAgICAgICAgICAgYnl0ZWNv
ZGVOdW0gPSAwCisgICAgICAgICAgICBtYXhMZW5ndGggPSAwCiAgICAgICAgICAgICBmb3IgYnl0
ZWNvZGUgaW4gc2VjdGlvblsiYnl0ZWNvZGVzIl06CiAgICAgICAgICAgICAgICAgaWYgbm90IGZp
cnN0TWFjcm86CiAgICAgICAgICAgICAgICAgICAgIGJ5dGVjb2RlSEZpbGUud3JpdGUoIiBcXFxu
IikKQEAgLTE5NCw2ICsxOTcsNyBAQCBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgICAg
ICAgICAgICAgIGxlbmd0aCA9IGRlZmF1bHRMZW5ndGgKICAgICAgICAgICAgICAgICBpZiAibGVu
Z3RoIiBpbiBieXRlY29kZToKICAgICAgICAgICAgICAgICAgICAgbGVuZ3RoID0gYnl0ZWNvZGVb
Imxlbmd0aCJdCisgICAgICAgICAgICAgICAgICAgIG1heExlbmd0aCA9IG1heChbbGVuZ3RoLCBt
YXhMZW5ndGhdKQogCiAgICAgICAgICAgICAgICAgYnl0ZWNvZGVIRmlsZS53cml0ZSgiICAgIG1h
Y3JvKHswfSwgezF9KSIuZm9ybWF0KGJ5dGVjb2RlWyJuYW1lIl0sIGxlbmd0aCkpCiAgICAgICAg
ICAgICAgICAgZmlyc3RNYWNybyA9IEZhbHNlCkBAIC0yMDEsNiArMjA1LDcgQEAgaWYgX19uYW1l
X18gPT0gIl9fbWFpbl9fIjoKIAogICAgICAgICAgICAgYnl0ZWNvZGVIRmlsZS53cml0ZSgiXG5c
biIpCiAgICAgICAgICAgICBieXRlY29kZUhGaWxlLndyaXRlKCIjZGVmaW5lIE5VTUJFUl9PRl97
MH1fSURTIHsxfVxuXG4iLmZvcm1hdChzZWN0aW9uWyJtYWNyb05hbWVDb21wb25lbnQiXSwgYnl0
ZWNvZGVOdW0pKQorICAgICAgICAgICAgYnl0ZWNvZGVIRmlsZS53cml0ZSgiI2RlZmluZSBNQVhf
T1BDT0RFX0xFTkdUSF9PRl97MH0gezF9XG5cbiIuZm9ybWF0KHNlY3Rpb25bIm1hY3JvTmFtZUNv
bXBvbmVudCJdLCBtYXhMZW5ndGgpKQogCiAgICAgICAgIGlmIGluaXRBU01GaWxlTmFtZSBhbmQg
c2VjdGlvblsnZW1pdEluQVNNRmlsZSddOgogICAgICAgICAgICAgcHJlZml4ID0gIiIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCmluZGV4
IDJiNGM3YzliM2ViMzZkNjMwNmVhODQ0ZTg1Mzc2ZmZhN2ZkMGYxZjcuLmZlMzY4ZjM5MWNjMjdj
MWEwNWI4YmQ5MGZmOTFhYzE2MjFiNjI0NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcApAQCAtNjA4LDcgKzYwOCw3IEBAIEpTU3Ry
aW5nKiBJbnRlcnByZXRlcjo6c3RhY2tUcmFjZUFzU3RyaW5nKFZNJiB2bSwgY29uc3QgVmVjdG9y
PFN0YWNrRnJhbWU+JiBzdGFjCiAgICAgcmV0dXJuIGpzU3RyaW5nKCZ2bSwgYnVpbGRlci50b1N0
cmluZygpKTsKIH0KIAotQUxXQVlTX0lOTElORSBzdGF0aWMgSGFuZGxlckluZm8qIGZpbmRFeGNl
cHRpb25IYW5kbGVyKFN0YWNrVmlzaXRvciYgdmlzaXRvciwgQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IENvZGVCbG9jazo6UmVxdWlyZWRIYW5kbGVyIHJlcXVpcmVkSGFuZGxlcikKK0FMV0FZU19JTkxJ
TkUgc3RhdGljIEhhbmRsZXJJbmZvKiBmaW5kRXhjZXB0aW9uSGFuZGxlcihTdGFja1Zpc2l0b3Im
IHZpc2l0b3IsIENvZGVCbG9jayogY29kZUJsb2NrLCBSZXF1aXJlZEhhbmRsZXIgcmVxdWlyZWRI
YW5kbGVyKQogewogICAgIEFTU0VSVChjb2RlQmxvY2spOwogI2lmIEVOQUJMRShERkdfSklUKQpA
QCAtNjQyLDcgKzY0Miw3IEBAIGNsYXNzIEdldENhdGNoSGFuZGxlckZ1bmN0b3IgewogICAgICAg
ICBpZiAoIWNvZGVCbG9jaykKICAgICAgICAgICAgIHJldHVybiBTdGFja1Zpc2l0b3I6OkNvbnRp
bnVlOwogCi0gICAgICAgIG1faGFuZGxlciA9IGZpbmRFeGNlcHRpb25IYW5kbGVyKHZpc2l0b3Is
IGNvZGVCbG9jaywgQ29kZUJsb2NrOjpSZXF1aXJlZEhhbmRsZXI6OkNhdGNoSGFuZGxlcik7Cisg
ICAgICAgIG1faGFuZGxlciA9IGZpbmRFeGNlcHRpb25IYW5kbGVyKHZpc2l0b3IsIGNvZGVCbG9j
aywgUmVxdWlyZWRIYW5kbGVyOjpDYXRjaEhhbmRsZXIpOwogICAgICAgICBpZiAobV9oYW5kbGVy
KQogICAgICAgICAgICAgcmV0dXJuIFN0YWNrVmlzaXRvcjo6RG9uZTsKIApAQCAtNjg0LDcgKzY4
NCw3IEBAIGNsYXNzIFVud2luZEZ1bmN0b3IgewogICAgICAgICBtX2hhbmRsZXIgPSBudWxscHRy
OwogICAgICAgICBpZiAoIW1faXNUZXJtaW5hdGlvbikgewogICAgICAgICAgICAgaWYgKG1fY29k
ZUJsb2NrICYmICFpc1dlYkFzc2VtYmx5RXhlY3V0YWJsZShtX2NvZGVCbG9jay0+b3duZXJFeGVj
dXRhYmxlKCkpKQotICAgICAgICAgICAgICAgIG1faGFuZGxlciA9IGZpbmRFeGNlcHRpb25IYW5k
bGVyKHZpc2l0b3IsIG1fY29kZUJsb2NrLCBDb2RlQmxvY2s6OlJlcXVpcmVkSGFuZGxlcjo6QW55
SGFuZGxlcik7CisgICAgICAgICAgICAgICAgbV9oYW5kbGVyID0gZmluZEV4Y2VwdGlvbkhhbmRs
ZXIodmlzaXRvciwgbV9jb2RlQmxvY2ssIFJlcXVpcmVkSGFuZGxlcjo6QW55SGFuZGxlcik7CiAg
ICAgICAgIH0KIAogICAgICAgICBpZiAobV9oYW5kbGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAppbmRleCBkMjA5NGRlZTdkMjg1YWM0OTVi
MTU0MTcyYTIzYjk0ZmZlODU3ZjFlLi4wNzMyYjNlYmJkOWFkZmQyMjMzNjJlYzlhNmJhYWFmZDg2
MWY1MjY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50
ZXJwcmV0ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJw
cmV0ZXIuaApAQCAtNjYsNiArNjYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBzdHJ1Y3QgSGFu
ZGxlckluZm87CiAgICAgc3RydWN0IEluc3RydWN0aW9uOwogICAgIHN0cnVjdCBQcm90b0NhbGxG
cmFtZTsKKyAgICBzdHJ1Y3QgVW5saW5rZWRJbnN0cnVjdGlvbjsKIAogICAgIGVudW0gVW53aW5k
U3RhcnQgeyBVbndpbmRGcm9tQ3VycmVudEZyYW1lLCBVbndpbmRGcm9tQ2FsbGVyRnJhbWUgfTsK
IApAQCAtMjA4LDcgKzIwOSwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVy
biBvcGNvZGU7CiAjZW5kaWYKICAgICAgICAgfQotICAgICAgICAKKworICAgICAgICBPcGNvZGVJ
RCBnZXRPcGNvZGVJRChjb25zdCBJbnN0cnVjdGlvbiYpOworICAgICAgICBPcGNvZGVJRCBnZXRP
cGNvZGVJRChjb25zdCBVbmxpbmtlZEluc3RydWN0aW9uJik7CisKICAgICAgICAgYm9vbCBpc09w
Y29kZShPcGNvZGUpOwogCiAgICAgICAgIEpTVmFsdWUgZXhlY3V0ZShQcm9ncmFtRXhlY3V0YWJs
ZSosIENhbGxGcmFtZSosIEpTT2JqZWN0KiB0aGlzT2JqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlcklubGluZXMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlcklubGluZXMuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li44NmQwNzE0OGE1MmU2NWUzNzVmOTdlNmViYjkxYWRiZTFkZDQ1NjBkCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVySW5saW5l
cy5oCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgWXVzdWtlIFN1
enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkluc3RydWN0aW9uLmgi
CisjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKKyNpbmNsdWRlICJVbmxpbmtlZENvZGVCbG9jay5o
IgorCituYW1lc3BhY2UgSlNDIHsKKworaW5saW5lIE9wY29kZUlEIEludGVycHJldGVyOjpnZXRP
cGNvZGVJRChjb25zdCBJbnN0cnVjdGlvbiYgaW5zdHJ1Y3Rpb24pCit7CisgICAgcmV0dXJuIGdl
dE9wY29kZUlEKGluc3RydWN0aW9uLnUub3Bjb2RlKTsKK30KKworaW5saW5lIE9wY29kZUlEIElu
dGVycHJldGVyOjpnZXRPcGNvZGVJRChjb25zdCBVbmxpbmtlZEluc3RydWN0aW9uJiBpbnN0cnVj
dGlvbikKK3sKKyAgICByZXR1cm4gaW5zdHJ1Y3Rpb24udS5vcGNvZGU7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCmluZGV4IDhmZDNmNThlZDQxNmE3
NzRiYjI3NjVlNGQ0ZDUzZDY4YmU5MTgyZTUuLjYzMThjNjFkMzdhOGRhMTIzZWM2ZjM4YTI4ZTE5
NTVjODU4MzEwMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKQEAgLTIzNSw4ICsyMzUs
NiBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9P
UChvcF9nZXRfcmVzdF9sZW5ndGgpCiAgICAgICAgIERFRklORV9PUChvcF9jaGVja190ZHopCiAg
ICAgICAgIERFRklORV9PUChvcF9hc3NlcnQpCi0gICAgICAgIERFRklORV9PUChvcF9zYXZlKQot
ICAgICAgICBERUZJTkVfT1Aob3BfcmVzdW1lKQogICAgICAgICBERUZJTkVfT1Aob3BfZGVidWcp
CiAgICAgICAgIERFRklORV9PUChvcF9kZWxfYnlfaWQpCiAgICAgICAgIERFRklORV9PUChvcF9k
ZWxfYnlfdmFsKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKaW5kZXggMDkzZDdkYWJkMzAzZjU3YzRh
ZGJiZTUwYWQ5YjJlNDBmNmZhZDYwOC4uYjNiZGE0YWE1NzAxMDM2ODEyY2M2OTZjYmIxNTVkYzRh
M2M0OTJiOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCkBAIC01MDEsOCArNTAxLDYgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9nZXRfcmVzdF9sZW5ndGgoSW5zdHJ1
Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2NoZWNrX3RkeihJbnN0cnVjdGlvbiopOwog
ICAgICAgICB2b2lkIGVtaXRfb3BfYXNzZXJ0KEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQg
ZW1pdF9vcF9zYXZlKEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9yZXN1bWUo
SW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2RlYnVnKEluc3RydWN0aW9uKik7
CiAgICAgICAgIHZvaWQgZW1pdF9vcF9kZWxfYnlfaWQoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAg
dm9pZCBlbWl0X29wX2RlbF9ieV92YWwoSW5zdHJ1Y3Rpb24qKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wY29kZXMuY3BwCmluZGV4IGQ5OWQ0MTVhMzNiNzUyZGNjM2ZhYjE1Yjk0Yjk2
NGExMTExY2U4MzEuLjAxMjMyMGEwYTZmMDMwNzM3MzUzMDMxNWI0YjE4OWVhNmFhZjNmZDcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcApAQCAtMTQ4OSwxOCArMTQ4
OSw2IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9yZXN0X2xlbmd0aChJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQogI2VuZGlmCiB9CiAKLXZvaWQgSklUOjplbWl0X29wX3NhdmUoSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKLXsKLSAgICBKSVRTbG93UGF0aENhbGwgc2xv
d1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX3NhdmUpOwotICAg
IHNsb3dQYXRoQ2FsbC5jYWxsKCk7Ci19Ci0KLXZvaWQgSklUOjplbWl0X29wX3Jlc3VtZShJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQotewotICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93
UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfcmVzdW1lKTsKLSAg
ICBzbG93UGF0aENhbGwuY2FsbCgpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlm
IC8vIEVOQUJMRShKSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlci5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlci5hc20KaW5kZXggM2UwZGJkODk4NmI5ZGIxYWIwYTIzNWEzOTA4NGMx
MGFlZjQ1NjUxNi4uMDRiY2I3YzAwZTQ4YzBkMjM5MzdkZDMxNDA5M2ExMjc5N2U0ODYzNSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIu
YXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVy
LmFzbQpAQCAtMTY1NywxNSArMTY1NywxMSBAQCBfbGxpbnRfb3BfYXNzZXJ0OgogCiAKIF9sbGlu
dF9vcF9zYXZlOgotICAgIHRyYWNlRXhlY3V0aW9uKCkKLSAgICBjYWxsT3Bjb2RlU2xvd1BhdGgo
X3Nsb3dfcGF0aF9zYXZlKQotICAgIGRpc3BhdGNoKDQpCisgICAgbm90U3VwcG9ydGVkKCkKIAog
CiBfbGxpbnRfb3BfcmVzdW1lOgotICAgIHRyYWNlRXhlY3V0aW9uKCkKLSAgICBjYWxsT3Bjb2Rl
U2xvd1BhdGgoX3Nsb3dfcGF0aF9yZXN1bWUpCi0gICAgZGlzcGF0Y2goMykKKyAgICBub3RTdXBw
b3J0ZWQoKQogCiAKIF9sbGludF9vcF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudDoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAppbmRleCBmZTU0OTUyYjM4NTYzMmExMzAw
ZGJhNGFkZmZhMDBhYTVhMzdkMjAxLi5mZTk2MTZiMDM2NWMzM2E4ODVlNTA4ZTg0ZGJkMGNhMTBi
OGIwZjU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCkBAIC0yNTYs
NyArMjU2LDcgQEAgU3RyaW5nIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUlubmVyKGNvbnN0IElk
ZW50aWZpZXImIGNhbGxlZU5hbWUsIFNvdXJjZVBhcnNlTW8KICAgICBpZiAobV9sZXhlci0+aXNS
ZXBhcnNpbmdGdW5jdGlvbigpKSB7CiAgICAgICAgIFBhcnNlckZ1bmN0aW9uSW5mbzxBU1RCdWls
ZGVyPiBmdW5jdGlvbkluZm87CiAgICAgICAgIGlmIChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VN
b2RlOjpHZW5lcmF0b3JCb2R5TW9kZSkKLSAgICAgICAgICAgIG1fcGFyYW1ldGVycyA9IGNyZWF0
ZUdlbmVyYXRvclBhcmFtZXRlcnMoY29udGV4dCk7CisgICAgICAgICAgICBtX3BhcmFtZXRlcnMg
PSBjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKGNvbnRleHQsIGZ1bmN0aW9uSW5mby5wYXJhbWV0
ZXJDb3VudCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG1fcGFyYW1ldGVycyA9IHBhcnNl
RnVuY3Rpb25QYXJhbWV0ZXJzKGNvbnRleHQsIHBhcnNlTW9kZSwgZnVuY3Rpb25JbmZvKTsKIApA
QCAtNTA3LDEwICs1MDcsOSBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTb3Vy
Y2VFbGVtZW50cyBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VHZW5lcmF0bwogCiAgICAgUGFyc2Vy
RnVuY3Rpb25JbmZvPFRyZWVCdWlsZGVyPiBpbmZvOwogICAgIGluZm8ubmFtZSA9ICZtX3ZtLT5w
cm9wZXJ0eU5hbWVzLT5udWxsSWRlbnRpZmllcjsKLSAgICBjcmVhdGVHZW5lcmF0b3JQYXJhbWV0
ZXJzKGNvbnRleHQpOworICAgIGNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMoY29udGV4dCwgaW5m
by5wYXJhbWV0ZXJDb3VudCk7CiAgICAgaW5mby5zdGFydE9mZnNldCA9IHBhcmFtZXRlcnNTdGFy
dDsKICAgICBpbmZvLnN0YXJ0TGluZSA9IHRva2VuTGluZSgpOwotICAgIGluZm8ucGFyYW1ldGVy
Q291bnQgPSA0OyAvLyBnZW5lcmF0b3IsIHN0YXRlLCB2YWx1ZSwgcmVzdW1lIG1vZGUKIAogICAg
IHsKICAgICAgICAgQXV0b1BvcFNjb3BlUmVmIGdlbmVyYXRvckJvZHlTY29wZSh0aGlzLCBwdXNo
U2NvcGUoKSk7CkBAIC0xOTAxLDMyICsxOTAwLDMwIEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhl
clR5cGU+IHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlciwgY2xhc3MgRnVuY3Rpb25JbmZvVHlw
CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+Ci10ZW1wbGF0ZSA8Y2xhc3MgVHJl
ZUJ1aWxkZXI+IHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpGb3JtYWxQYXJhbWV0ZXJMaXN0IFBhcnNl
cjxMZXhlclR5cGU+OjpjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKFRyZWVCdWlsZGVyJiBjb250
ZXh0KQordGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6
Rm9ybWFsUGFyYW1ldGVyTGlzdCBQYXJzZXI8TGV4ZXJUeXBlPjo6Y3JlYXRlR2VuZXJhdG9yUGFy
YW1ldGVycyhUcmVlQnVpbGRlciYgY29udGV4dCwgdW5zaWduZWQmIHBhcmFtZXRlckNvdW50KQog
ewogICAgIGF1dG8gcGFyYW1ldGVycyA9IGNvbnRleHQuY3JlYXRlRm9ybWFsUGFyYW1ldGVyTGlz
dCgpOwogCiAgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CiAg
ICAgSlNUZXh0UG9zaXRpb24gcG9zaXRpb24gPSB0b2tlblN0YXJ0UG9zaXRpb24oKTsKIAotICAg
IC8vIEBnZW5lcmF0b3IKLSAgICBkZWNsYXJlUGFyYW1ldGVyKCZtX3ZtLT5wcm9wZXJ0eU5hbWVz
LT5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JQcml2YXRlTmFtZSgpKTsKLSAgICBhdXRvIGdlbmVy
YXRvciA9IGNvbnRleHQuY3JlYXRlQmluZGluZ0xvY2F0aW9uKGxvY2F0aW9uLCBtX3ZtLT5wcm9w
ZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JQcml2YXRlTmFtZSgpLCBwb3NpdGlv
biwgcG9zaXRpb24sIEFzc2lnbm1lbnRDb250ZXh0OjpEZWNsYXJhdGlvblN0YXRlbWVudCk7Ci0g
ICAgY29udGV4dC5hcHBlbmRQYXJhbWV0ZXIocGFyYW1ldGVycywgZ2VuZXJhdG9yLCAwKTsKKyAg
ICBhdXRvIGFkZFBhcmFtZXRlciA9IFsmXShjb25zdCBJZGVudGlmaWVyJiBuYW1lKSB7CisgICAg
ICAgIGRlY2xhcmVQYXJhbWV0ZXIoJm5hbWUpOworICAgICAgICBhdXRvIGJpbmRpbmcgPSBjb250
ZXh0LmNyZWF0ZUJpbmRpbmdMb2NhdGlvbihsb2NhdGlvbiwgbmFtZSwgcG9zaXRpb24sIHBvc2l0
aW9uLCBBc3NpZ25tZW50Q29udGV4dDo6RGVjbGFyYXRpb25TdGF0ZW1lbnQpOworICAgICAgICBj
b250ZXh0LmFwcGVuZFBhcmFtZXRlcihwYXJhbWV0ZXJzLCBiaW5kaW5nLCAwKTsKKyAgICAgICAg
KytwYXJhbWV0ZXJDb3VudDsKKyAgICB9OwogCisgICAgLy8gQGdlbmVyYXRvcgorICAgIGFkZFBh
cmFtZXRlcihtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JQcml2
YXRlTmFtZSgpKTsKICAgICAvLyBAZ2VuZXJhdG9yU3RhdGUKLSAgICBkZWNsYXJlUGFyYW1ldGVy
KCZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JTdGF0ZVByaXZh
dGVOYW1lKCkpOwotICAgIGF1dG8gZ2VuZXJhdG9yU3RhdGUgPSBjb250ZXh0LmNyZWF0ZUJpbmRp
bmdMb2NhdGlvbihsb2NhdGlvbiwgbV92bS0+cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCku
Z2VuZXJhdG9yU3RhdGVQcml2YXRlTmFtZSgpLCBwb3NpdGlvbiwgcG9zaXRpb24sIEFzc2lnbm1l
bnRDb250ZXh0OjpEZWNsYXJhdGlvblN0YXRlbWVudCk7Ci0gICAgY29udGV4dC5hcHBlbmRQYXJh
bWV0ZXIocGFyYW1ldGVycywgZ2VuZXJhdG9yU3RhdGUsIDApOwotCisgICAgYWRkUGFyYW1ldGVy
KG1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclN0YXRlUHJpdmF0
ZU5hbWUoKSk7CiAgICAgLy8gQGdlbmVyYXRvclZhbHVlCi0gICAgZGVjbGFyZVBhcmFtZXRlcigm
bV92bS0+cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yVmFsdWVQcml2YXRl
TmFtZSgpKTsKLSAgICBhdXRvIGdlbmVyYXRvclZhbHVlID0gY29udGV4dC5jcmVhdGVCaW5kaW5n
TG9jYXRpb24obG9jYXRpb24sIG1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdl
bmVyYXRvclZhbHVlUHJpdmF0ZU5hbWUoKSwgcG9zaXRpb24sIHBvc2l0aW9uLCBBc3NpZ25tZW50
Q29udGV4dDo6RGVjbGFyYXRpb25TdGF0ZW1lbnQpOwotICAgIGNvbnRleHQuYXBwZW5kUGFyYW1l
dGVyKHBhcmFtZXRlcnMsIGdlbmVyYXRvclZhbHVlLCAwKTsKLQorICAgIGFkZFBhcmFtZXRlciht
X3ZtLT5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JWYWx1ZVByaXZhdGVO
YW1lKCkpOwogICAgIC8vIEBnZW5lcmF0b3JSZXN1bWVNb2RlCi0gICAgZGVjbGFyZVBhcmFtZXRl
cigmbV92bS0+cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yUmVzdW1lTW9k
ZVByaXZhdGVOYW1lKCkpOwotICAgIGF1dG8gZ2VuZXJhdG9yUmVzdW1lTW9kZSA9IGNvbnRleHQu
Y3JlYXRlQmluZGluZ0xvY2F0aW9uKGxvY2F0aW9uLCBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5idWls
dGluTmFtZXMoKS5nZW5lcmF0b3JSZXN1bWVNb2RlUHJpdmF0ZU5hbWUoKSwgcG9zaXRpb24sIHBv
c2l0aW9uLCBBc3NpZ25tZW50Q29udGV4dDo6RGVjbGFyYXRpb25TdGF0ZW1lbnQpOwotICAgIGNv
bnRleHQuYXBwZW5kUGFyYW1ldGVyKHBhcmFtZXRlcnMsIGdlbmVyYXRvclJlc3VtZU1vZGUsIDAp
OworICAgIGFkZFBhcmFtZXRlcihtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5n
ZW5lcmF0b3JSZXN1bWVNb2RlUHJpdmF0ZU5hbWUoKSk7CisgICAgLy8gQGdlbmVyYXRvckZyYW1l
CisgICAgYWRkUGFyYW1ldGVyKG1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdl
bmVyYXRvckZyYW1lUHJpdmF0ZU5hbWUoKSk7CiAKICAgICByZXR1cm4gcGFyYW1ldGVyczsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCmluZGV4IDI1Y2VjOTVhNzYxY2NkOGMy
NjMzODM3MzBlYjA0ZTE1Njk3MjBiYTIuLmRlZDYyNGY2MTdmYjZkMjRkMDBiZjFhYzQ2YzQ1YzIy
ZDk5YjcyMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2Vy
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaApAQCAtMTQ1MSw3
ICsxNDUxLDcgQEAgY2xhc3MgUGFyc2VyIHsKICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNBcnJv
d0Z1bmN0aW9uUGFyYW1ldGVycygpOwogICAgIAogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVp
bGRlciwgY2xhc3MgRnVuY3Rpb25JbmZvVHlwZT4gTkVWRVJfSU5MSU5FIHR5cGVuYW1lIFRyZWVC
dWlsZGVyOjpGb3JtYWxQYXJhbWV0ZXJMaXN0IHBhcnNlRnVuY3Rpb25QYXJhbWV0ZXJzKFRyZWVC
dWlsZGVyJiwgU291cmNlUGFyc2VNb2RlLCBGdW5jdGlvbkluZm9UeXBlJik7Ci0gICAgdGVtcGxh
dGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBORVZFUl9JTkxJTkUgdHlwZW5hbWUgVHJlZUJ1aWxkZXI6
OkZvcm1hbFBhcmFtZXRlckxpc3QgY3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhUcmVlQnVpbGRl
ciYpOworICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gTkVWRVJfSU5MSU5FIHR5cGVu
YW1lIFRyZWVCdWlsZGVyOjpGb3JtYWxQYXJhbWV0ZXJMaXN0IGNyZWF0ZUdlbmVyYXRvclBhcmFt
ZXRlcnMoVHJlZUJ1aWxkZXImLCB1bnNpZ25lZCYgcGFyYW1ldGVyQ291bnQpOwogCiAgICAgdGVt
cGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBORVZFUl9JTkxJTkUgVHJlZUNsYXNzRXhwcmVzc2lv
biBwYXJzZUNsYXNzKFRyZWVCdWlsZGVyJiwgRnVuY3Rpb25SZXF1aXJlbWVudHMsIFBhcnNlckNs
YXNzSW5mbzxUcmVlQnVpbGRlcj4mKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKaW5kZXggNjVmZGE2ODU0Y2NjZThkYzk0MTkzMDA0
YTlmMDI5NTQ4Zjk4YmM1Zi4uMDczNWIwOTI2ZWE4OThlNjI2MzIxZjkyNDM4YmQ4YjFlMWZmNTZm
ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1Bh
dGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0
aHMuY3BwCkBAIC0zNiw3ICszNiw2IEBACiAjaW5jbHVkZSAiRXJyb3IuaCIKICNpbmNsdWRlICJF
cnJvckhhbmRsaW5nU2NvcGUuaCIKICNpbmNsdWRlICJFeGNlcHRpb25GdXp6LmgiCi0jaW5jbHVk
ZSAiR2VuZXJhdG9yRnJhbWUuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRl
ICJIb3N0Q2FsbFJldHVyblZhbHVlLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKQEAgLTcy
MiwzOCArNzIxLDYgQEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2Fzc2VydCkKICAgICBFTkQo
KTsKIH0KIAotU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3NhdmUpCi17Ci0gICAgLy8gT25seSBz
YXZlIHZhcmlhYmxlcyBhbmQgdGVtcG9yYXJ5IHJlZ2lzdGVycy4gVGhlIHNjb3BlIHJlZ2lzdGVy
cyBhcmUgaW5jbHVkZWQgaW4gdGhlbS4KLSAgICAvLyBCdXQgcGFyYW1ldGVycyBhcmUgbm90IGlu
Y2x1ZGVkLiBCZWNhdXNlIHRoZSBnZW5lcmF0b3IgaW1wbGVtZW50YXRpb24gcmVwbGFjZXMgdGhl
IHZhbHVlcyBvZiBwYXJhbWV0ZXJzIG9uIGVhY2ggZ2VuZXJhdG9yLm5leHQoKSBjYWxsLgotICAg
IEJFR0lOKCk7Ci0gICAgSlNWYWx1ZSBnZW5lcmF0b3IgPSBPUCgxKS5qc1ZhbHVlKCk7Ci0gICAg
R2VuZXJhdG9yRnJhbWUqIGZyYW1lID0gbnVsbHB0cjsKLSAgICBKU1ZhbHVlIHZhbHVlID0gZ2Vu
ZXJhdG9yLmdldChleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCkuZ2Vu
ZXJhdG9yRnJhbWVQcml2YXRlTmFtZSgpKTsKLSAgICBpZiAoIXZhbHVlLmlzTnVsbCgpKQotICAg
ICAgICBmcmFtZSA9IGpzQ2FzdDxHZW5lcmF0b3JGcmFtZSo+KHZhbHVlKTsKLSAgICBlbHNlIHsK
LSAgICAgICAgLy8gRklYTUU6IE9uY2UgSlNHZW5lcmF0b3Igc3BlY2lhbGl6ZWQgb2JqZWN0IGlz
IGludHJvZHVjZWQsIHRoaXMgR2VuZXJhdG9yRnJhbWUgc2hvdWxkIGJlIGVtYmVkZWQgaW50byBp
dCB0byBhdm9pZCBhbGxvY2F0aW9ucy4KLSAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE1MTU0NQotICAgICAgICBmcmFtZSA9IEdlbmVyYXRvckZyYW1l
OjpjcmVhdGUoZXhlYy0+dm0oKSwgIGV4ZWMtPmNvZGVCbG9jaygpLT5udW1DYWxsZWVMb2NhbHMo
KSk7Ci0gICAgICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGdlbmVyYXRvciwgdHJ1ZSwgUHV0UHJv
cGVydHlTbG90OjpQdXRCeUlkKTsKLSAgICAgICAgYXNPYmplY3QoZ2VuZXJhdG9yKS0+bWV0aG9k
VGFibGUoZXhlYy0+dm0oKSktPnB1dChhc09iamVjdChnZW5lcmF0b3IpLCBleGVjLCBleGVjLT5w
cm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yRnJhbWVQcml2YXRlTmFtZSgp
LCBmcmFtZSwgc2xvdCk7Ci0gICAgfQotICAgIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRl
eCA9IHBjWzJdLnUudW5zaWduZWRWYWx1ZTsKLSAgICBmcmFtZS0+c2F2ZShleGVjLCBleGVjLT5j
b2RlQmxvY2soKS0+bGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQobGl2ZUNhbGxlZUxvY2Fsc0luZGV4
KSk7Ci0gICAgRU5EKCk7Ci19Ci0KLVNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9yZXN1bWUpCi17
Ci0gICAgQkVHSU4oKTsKLSAgICBKU1ZhbHVlIGdlbmVyYXRvciA9IE9QKDEpLmpzVmFsdWUoKTsK
LSAgICBHZW5lcmF0b3JGcmFtZSogZnJhbWUgPSBqc0Nhc3Q8R2VuZXJhdG9yRnJhbWUqPihnZW5l
cmF0b3IuZ2V0KGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5nZW5l
cmF0b3JGcmFtZVByaXZhdGVOYW1lKCkpKTsKLSAgICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxz
SW5kZXggPSBwY1syXS51LnVuc2lnbmVkVmFsdWU7Ci0gICAgZnJhbWUtPnJlc3VtZShleGVjLCBl
eGVjLT5jb2RlQmxvY2soKS0+bGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQobGl2ZUNhbGxlZUxvY2Fs
c0luZGV4KSk7Ci0gICAgRU5EKCk7Ci19Ci0KIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9jcmVh
dGVfbGV4aWNhbF9lbnZpcm9ubWVudCkKIHsKICAgICBCRUdJTigpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAppbmRleCA4YzcwNzg0MjgwMmQ2
YTAzZDEyOGNkOGQyOTJhZmY3MzVjZGEwMzJmLi42ZWIyMWJkZmRlMDM0MTJmZWU2MTAwMmQ1ZTVh
YThhODM0ODA1M2EwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21tb25TbG93UGF0aHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21t
b25TbG93UGF0aHMuaApAQCAtMjQ2LDggKzI0Niw2IEBAIFNMT1dfUEFUSF9ISURERU5fREVDTChz
bG93X3BhdGhfbmV4dF9nZW5lcmljX2VudW1lcmF0b3JfcG5hbWUpOwogU0xPV19QQVRIX0hJRERF
Tl9ERUNMKHNsb3dfcGF0aF90b19pbmRleF9zdHJpbmcpOwogU0xPV19QQVRIX0hJRERFTl9ERUNM
KHNsb3dfcGF0aF9wcm9maWxlX3R5cGVfY2xlYXJfbG9nKTsKIFNMT1dfUEFUSF9ISURERU5fREVD
TChzbG93X3BhdGhfYXNzZXJ0KTsKLVNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfc2F2
ZSk7Ci1TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3Jlc3VtZSk7CiBTTE9XX1BBVEhf
SElEREVOX0RFQ0woc2xvd19wYXRoX2NyZWF0ZV9sZXhpY2FsX2Vudmlyb25tZW50KTsKIFNMT1df
UEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcHVzaF93aXRoX3Njb3BlKTsKIFNMT1dfUEFUSF9I
SURERU5fREVDTChzbG93X3BhdGhfcmVzb2x2ZV9zY29wZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGcmFtZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGcmFtZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGVmNmVhN2ExMDAyNThjM2VjZTA0ZGFhYjQzYmRhYTg1MWVjOGY3MTUuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJhbWUuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsOTcg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5l
LnRlYUBnbWFpbC5jb20+LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiR2VuZXJhdG9yRnJhbWUuaCIKLQotI2luY2x1ZGUgIkNvZGVCbG9jay5oIgotI2luY2x1ZGUg
IkhlYXBJdGVyYXRpb25TY29wZS5oIgotI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCi0j
aW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgotI2luY2x1ZGUgIlNsb3RWaXNpdG9ySW5saW5lcy5o
IgotI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKLQotbmFtZXNwYWNlIEpTQyB7Ci0KLWNv
bnN0IENsYXNzSW5mbyBHZW5lcmF0b3JGcmFtZTo6c19pbmZvID0geyAiR2VuZXJhdG9yRnJhbWUi
LCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEdlbmVyYXRvckZyYW1lKSB9
OwotCi1HZW5lcmF0b3JGcmFtZTo6R2VuZXJhdG9yRnJhbWUoVk0mIHZtLCBzaXplX3QgbnVtYmVy
T2ZDYWxsZWVMb2NhbHMpCi0gICAgOiBCYXNlKHZtLCB2bS5nZW5lcmF0b3JGcmFtZVN0cnVjdHVy
ZS5nZXQoKSkKLSAgICAsIG1fbnVtYmVyT2ZDYWxsZWVMb2NhbHMobnVtYmVyT2ZDYWxsZWVMb2Nh
bHMpCi17Ci19Ci0KLXZvaWQgR2VuZXJhdG9yRnJhbWU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkK
LXsKLSAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBtX251bWJlck9mQ2FsbGVlTG9jYWxzOyArK2kpCi0gICAgICAgIGxvY2FsQXQoaSkuY2xl
YXIoKTsKLX0KLQotU3RydWN0dXJlKiBHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlU3RydWN0dXJlKFZN
JiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCi17
Ci0gICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlw
ZSwgVHlwZUluZm8oQ2VsbFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKLX0KLQotR2Vu
ZXJhdG9yRnJhbWUqIEdlbmVyYXRvckZyYW1lOjpjcmVhdGUoVk0mIHZtLCBzaXplX3QgbnVtYmVy
T2ZMb2NhbHMpCi17Ci0gICAgR2VuZXJhdG9yRnJhbWUqIHJlc3VsdCA9Ci0gICAgICAgIG5ldyAo
Ci0gICAgICAgICAgICBOb3ROdWxsLAotICAgICAgICAgICAgYWxsb2NhdGVDZWxsPEdlbmVyYXRv
ckZyYW1lPih2bS5oZWFwLCBhbGxvY2F0aW9uU2l6ZUZvckxvY2FscyhudW1iZXJPZkxvY2Fscykp
KQotICAgICAgICBHZW5lcmF0b3JGcmFtZSh2bSwgbnVtYmVyT2ZMb2NhbHMpOwotICAgIHJlc3Vs
dC0+ZmluaXNoQ3JlYXRpb24odm0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLXZvaWQgR2Vu
ZXJhdG9yRnJhbWU6OnNhdmUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBGYXN0Qml0VmVjdG9yJiBs
aXZlQ2FsbGVlTG9jYWxzKQotewotICAgIC8vIE9ubHkgc2F2ZSBjYWxsZWUgbG9jYWxzLgotICAg
IC8vIEV2ZXJ5IHRpbWUgYSBnZW5lcmF0b3IgaXMgY2FsbGVkIChvciByZXN1bWVkKSwgcGFyYW1l
dGVycyBzaG91bGQgYmUgcmVwbGFjZWQuCi0gICAgQVNTRVJUKGxpdmVDYWxsZWVMb2NhbHMubnVt
Qml0cygpIDw9IG1fbnVtYmVyT2ZDYWxsZWVMb2NhbHMpOwotICAgIGxpdmVDYWxsZWVMb2NhbHMu
Zm9yRWFjaFNldEJpdChbJl0oc2l6ZV90IGluZGV4KSB7Ci0gICAgICAgIGxvY2FsQXQoaW5kZXgp
LnNldChleGVjLT52bSgpLCB0aGlzLCBleGVjLT51bmNoZWNrZWRSKHZpcnR1YWxSZWdpc3RlckZv
ckxvY2FsKGluZGV4KSkuanNWYWx1ZSgpKTsKLSAgICB9KTsKLX0KLQotdm9pZCBHZW5lcmF0b3JG
cmFtZTo6cmVzdW1lKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZUNh
bGxlZUxvY2FscykKLXsKLSAgICAvLyBPbmx5IHJlc3VtZSBjYWxsZWUgbG9jYWxzLgotICAgIC8v
IEV2ZXJ5IHRpbWUgYSBnZW5lcmF0b3IgaXMgY2FsbGVkIChvciByZXN1bWVkKSwgcGFyYW1ldGVy
cyBzaG91bGQgYmUgcmVwbGFjZWQuCi0gICAgbGl2ZUNhbGxlZUxvY2Fscy5mb3JFYWNoU2V0Qml0
KFsmXShzaXplX3QgaW5kZXgpIHsKLSAgICAgICAgZXhlYy0+dW5jaGVja2VkUih2aXJ0dWFsUmVn
aXN0ZXJGb3JMb2NhbChpbmRleCkpID0gbG9jYWxBdChpbmRleCkuZ2V0KCk7Ci0gICAgICAgIGxv
Y2FsQXQoaW5kZXgpLmNsZWFyKCk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgR2VuZXJhdG9yRnJhbWU6
OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKLXsKLSAg
ICBHZW5lcmF0b3JGcmFtZSogdGhpc09iamVjdCA9IGpzQ2FzdDxHZW5lcmF0b3JGcmFtZSo+KGNl
bGwpOwotICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7Ci0gICAg
Ly8gU2luY2Ugb25seSB0cnVlIGNlbGwgcG9pbnRlcnMgYXJlIHN0b3JlZCBhcyBhIGNlbGwsIHdl
IGNhbiBzYWZlbHkgbWFyayB0aGVtLgotICAgIHZpc2l0b3IuYXBwZW5kVmFsdWVzKHRoaXNPYmpl
Y3QtPmxvY2FscygpLCB0aGlzT2JqZWN0LT5tX251bWJlck9mQ2FsbGVlTG9jYWxzKTsKLX0KLQot
fSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9HZW5lcmF0b3JGcmFtZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2Vu
ZXJhdG9yRnJhbWUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2Q1NDViMTQ3ZGQ0
YWJmYjJiYmI5YjVhNzE5NGU4Zjc0ODQxYzQ5YS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0
b3JGcmFtZS5oCisrKyAvZGV2L251bGwKQEAgLTEsOTAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaWZuZGVmIEdlbmVyYXRvckZyYW1lX2gKLSNkZWZpbmUgR2VuZXJhdG9yRnJhbWVfaAot
Ci0jaW5jbHVkZSAiSlNDZWxsLmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RCaXRWZWN0b3IuaD4KLQot
bmFtZXNwYWNlIEpTQyB7Ci0KLWNsYXNzIEdlbmVyYXRvckZyYW1lIDogcHVibGljIEpTQ2VsbCB7
Ci0gICAgZnJpZW5kIGNsYXNzIEpJVDsKLSNpZiBFTkFCTEUoREZHX0pJVCkKLSAgICBmcmllbmQg
Y2xhc3MgREZHOjpTcGVjdWxhdGl2ZUpJVDsKLSAgICBmcmllbmQgY2xhc3MgREZHOjpKSVRDb21w
aWxlcjsKLSNlbmRpZgotICAgIGZyaWVuZCBjbGFzcyBWTTsKLXB1YmxpYzoKLSAgICB0eXBlZGVm
IEpTQ2VsbCBCYXNlOwotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9
IFN0cnVjdHVyZUlzSW1tb3J0YWwgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKLQotICAgIERFQ0xB
UkVfRVhQT1JUX0lORk87Ci0KLSAgICBzdGF0aWMgR2VuZXJhdG9yRnJhbWUqIGNyZWF0ZShWTSYs
IHNpemVfdCBudW1iZXJPZkNhbGxlZUxvY2Fscyk7Ci0KLSAgICBXcml0ZUJhcnJpZXJCYXNlPFVu
a25vd24+KiBsb2NhbHMoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxXcml0
ZUJhcnJpZXJCYXNlPFVua25vd24+Kj4oYml0d2lzZV9jYXN0PGNoYXIqPih0aGlzKSArIG9mZnNl
dE9mTG9jYWxzKCkpOwotICAgIH0KLQotICAgIFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4mIGxv
Y2FsQXQoc2l6ZV90IGluZGV4KQotICAgIHsKLSAgICAgICAgQVNTRVJUKGluZGV4IDwgbV9udW1i
ZXJPZkNhbGxlZUxvY2Fscyk7Ci0gICAgICAgIHJldHVybiBsb2NhbHMoKVtpbmRleF07Ci0gICAg
fQotCi0gICAgc3RhdGljIHNpemVfdCBvZmZzZXRPZkxvY2FscygpCi0gICAgewotICAgICAgICBy
ZXR1cm4gV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mPHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93
bj4pPihzaXplb2YoR2VuZXJhdG9yRnJhbWUpKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgc2l6ZV90
IGFsbG9jYXRpb25TaXplRm9yTG9jYWxzKHVuc2lnbmVkIG51bWJlck9mTG9jYWxzKQotICAgIHsK
LSAgICAgICAgcmV0dXJuIG9mZnNldE9mTG9jYWxzKCkgKyBudW1iZXJPZkxvY2FscyAqIHNpemVv
ZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pOwotICAgIH0KLQotICAgIHN0YXRpYyBTdHJ1Y3R1cmUq
IGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBwcm90b3R5cGUp
OwotCi0gICAgdm9pZCBzYXZlKEV4ZWNTdGF0ZSosIGNvbnN0IEZhc3RCaXRWZWN0b3ImIGxpdmVD
YWxsZWVMb2NhbHMpOwotICAgIHZvaWQgcmVzdW1lKEV4ZWNTdGF0ZSosIGNvbnN0IEZhc3RCaXRW
ZWN0b3ImIGxpdmVDYWxsZWVMb2NhbHMpOwotCi1wcml2YXRlOgotICAgIEdlbmVyYXRvckZyYW1l
KFZNJiwgc2l6ZV90IG51bWJlck9mQ2FsbGVlTG9jYWxzKTsKLQotICAgIHNpemVfdCBtX251bWJl
ck9mQ2FsbGVlTG9jYWxzOwotCi0gICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3Rv
cjsKLQotICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKLQotcHJvdGVjdGVkOgotICAgIHN0
YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKLX07Ci0KLX0g
Ly8gbmFtZXNwYWNlIEpTQwotCi0jZW5kaWYgLy8gR2VuZXJhdG9yRnJhbWVfaApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVk0uY3BwCmluZGV4IGIxZmY0MjQ4YTM0ODRhNGNiYmMyMDVjMzJkNGQw
NGMxNjA2MGNhYzYuLjg1ZTY3ZmZiNTk2NDRkM2I1NDMzMjU3YjdjYjBlZDFkZDBlNjljZGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKQEAgLTQ2LDcgKzQ2LDYgQEAKICNpbmNs
dWRlICJGVExUaHVua3MuaCIKICNpbmNsdWRlICJGdW5jdGlvbkNvbnN0cnVjdG9yLmgiCiAjaW5j
bHVkZSAiR0NBY3Rpdml0eUNhbGxiYWNrLmgiCi0jaW5jbHVkZSAiR2VuZXJhdG9yRnJhbWUuaCIK
ICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJIZWFwLmgiCiAjaW5jbHVkZSAi
SGVhcEl0ZXJhdGlvblNjb3BlLmgiCkBAIC0yNDAsNyArMjM5LDYgQEAgVk06OlZNKFZNVHlwZSB2
bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgIGluZmVycmVkVHlwZVN0cnVjdHVyZS5zZXQo
KnRoaXMsIEluZmVycmVkVHlwZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkp
OwogICAgIGluZmVycmVkVHlwZVRhYmxlU3RydWN0dXJlLnNldCgqdGhpcywgSW5mZXJyZWRUeXBl
VGFibGU6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICBmdW5jdGlv
blJhcmVEYXRhU3RydWN0dXJlLnNldCgqdGhpcywgRnVuY3Rpb25SYXJlRGF0YTo6Y3JlYXRlU3Ry
dWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwotICAgIGdlbmVyYXRvckZyYW1lU3RydWN0dXJl
LnNldCgqdGhpcywgR2VuZXJhdG9yRnJhbWU6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNO
dWxsKCkpKTsKICAgICBleGNlcHRpb25TdHJ1Y3R1cmUuc2V0KCp0aGlzLCBFeGNlcHRpb246OmNy
ZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICBwcm9taXNlRGVmZXJyZWRT
dHJ1Y3R1cmUuc2V0KCp0aGlzLCBKU1Byb21pc2VEZWZlcnJlZDo6Y3JlYXRlU3RydWN0dXJlKCp0
aGlzLCAwLCBqc051bGwoKSkpOwogICAgIGludGVybmFsUHJvbWlzZURlZmVycmVkU3RydWN0dXJl
LnNldCgqdGhpcywgSlNJbnRlcm5hbFByb21pc2VEZWZlcnJlZDo6Y3JlYXRlU3RydWN0dXJlKCp0
aGlzLCAwLCBqc051bGwoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVk0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKaW5kZXggZjBk
ZTE1MTM1YTkwNzg3OGI0N2ExZDM0MzRmNjgyOTFjYjVkYzczZS4uNGZmOWVkZDBhNzc0NmMyOWU1
ZTY3YzM4MWZjZTNiMjA3NDc5OTU0OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVk0uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCkBA
IC0zMTYsNyArMzE2LDYgQEAgY2xhc3MgVk0gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8
Vk0+IHsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBpbmZlcnJlZFR5cGVTdHJ1Y3R1cmU7CiAgICAg
U3Ryb25nPFN0cnVjdHVyZT4gaW5mZXJyZWRUeXBlVGFibGVTdHJ1Y3R1cmU7CiAgICAgU3Ryb25n
PFN0cnVjdHVyZT4gZnVuY3Rpb25SYXJlRGF0YVN0cnVjdHVyZTsKLSAgICBTdHJvbmc8U3RydWN0
dXJlPiBnZW5lcmF0b3JGcmFtZVN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBleGNl
cHRpb25TdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gcHJvbWlzZURlZmVycmVkU3Ry
dWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGludGVybmFsUHJvbWlzZURlZmVycmVkU3Ry
dWN0dXJlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9n
ZW5lcmF0b3ItZmliLWZ0bC1hbmQtYXJyYXkuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLWFuZC1hcnJheS5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZTkz
OTgxMmZkYmFlYzZiODMyYmZkMDBmMjE1M2RlZjg0YmI3NTkyCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQt
YXJyYXkuanMKQEAgLTAsMCArMSwyMyBAQAorKGZ1bmN0aW9uICgpIHsKKyAgICBmdW5jdGlvbiAq
ZmliKCkKKyAgICB7CisgICAgICAgIGxldCBhID0gMTsKKyAgICAgICAgbGV0IGIgPSAxOworICAg
ICAgICBsZXQgYyA9IFsgMCBdOworICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAg
Y1swXSA9IGE7CisgICAgICAgICAgICB5aWVsZCBjOworICAgICAgICAgICAgW2EsIGJdID0gW2Is
IGEgKyBiXTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGxldCB2YWx1ZSA9IDA7CisgICAgZm9y
IChsZXQgaSA9IDA7IGkgPCAxZTQ7ICsraSkgeworICAgICAgICBsZXQgZiA9IGZpYigpOworICAg
ICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDsgKytpKSB7CisgICAgICAgICAgICB2YWx1ZSA9
IGYubmV4dCgpLnZhbHVlOworICAgICAgICB9CisgICAgICAgIGlmICh2YWx1ZVswXSAhPT0gMzU0
MjI0ODQ4MTc5MjYyMDAwMDAwKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgdmFs
dWU6JHtyZXN1bHR9YCk7CisgICAgfQorfSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwtYW5kLW9iamVjdC5qcyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwtYW5kLW9i
amVjdC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42NjczNDBmMmVhNGM3NDM4YTJkMjA5YWE0MGQwNjc3ZTRhYjdk
M2ZiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVz
cy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQtb2JqZWN0LmpzCkBAIC0wLDAgKzEsMjMgQEAKKyhmdW5j
dGlvbiAoKSB7CisgICAgZnVuY3Rpb24gKmZpYigpCisgICAgeworICAgICAgICBsZXQgYSA9IDE7
CisgICAgICAgIGxldCBiID0gMTsKKyAgICAgICAgbGV0IGMgPSB7IGZpYjogMCB9OworICAgICAg
ICB3aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAgYy5maWIgPSBhOworICAgICAgICAgICAgeWll
bGQgYzsKKyAgICAgICAgICAgIFthLCBiXSA9IFtiLCBhICsgYl07CisgICAgICAgIH0KKyAgICB9
CisKKyAgICBsZXQgdmFsdWUgPSAwOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMWU0OyArK2kp
IHsKKyAgICAgICAgbGV0IGYgPSBmaWIoKTsKKyAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAx
MDA7ICsraSkgeworICAgICAgICAgICAgdmFsdWUgPSBmLm5leHQoKS52YWx1ZTsKKyAgICAgICAg
fQorICAgICAgICBpZiAodmFsdWUuZmliICE9PSAzNTQyMjQ4NDgxNzkyNjIwMDAwMDApCisgICAg
ICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCB2YWx1ZToke3Jlc3VsdH1gKTsKKyAgICB9Cit9
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5l
cmF0b3ItZmliLWZ0bC1hbmQtc3RyaW5nLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3Rz
L3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQtc3RyaW5nLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQzOGFl
NmFiMzM0NzA0NjgyMjg0OWY0MzAwNGVhNWM0MDNlZWRhMjgKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLWFuZC1z
dHJpbmcuanMKQEAgLTAsMCArMSwyMiBAQAorKGZ1bmN0aW9uICgpIHsKKyAgICBmdW5jdGlvbiAq
ZmliKCkKKyAgICB7CisgICAgICAgIGxldCBhID0gMTsKKyAgICAgICAgbGV0IGIgPSAxOworICAg
ICAgICBsZXQgYyA9ICJSZXN1bHQhICI7CisgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAg
ICAgICB5aWVsZCBjICsgYTsKKyAgICAgICAgICAgIFthLCBiXSA9IFtiLCBhICsgYl07CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICBsZXQgdmFsdWUgPSAwOworICAgIGZvciAobGV0IGkgPSAwOyBp
IDwgMWU0OyArK2kpIHsKKyAgICAgICAgbGV0IGYgPSBmaWIoKTsKKyAgICAgICAgZm9yIChsZXQg
aSA9IDA7IGkgPCAxMDA7ICsraSkgeworICAgICAgICAgICAgdmFsdWUgPSBmLm5leHQoKS52YWx1
ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAodmFsdWUgIT09IGBSZXN1bHQhIDM1NDIyNDg0ODE3
OTI2MjAwMDAwMGApCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCB2YWx1ZToke3Jl
c3VsdH1gKTsKKyAgICB9Cit9KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzQwZTMzZGJj
ODY4YmVhN2E4OTNjOWVjMTZiNzc5ZWMyNmJkYjE5YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwuanMKQEAgLTAs
MCArMSwyMSBAQAorKGZ1bmN0aW9uICgpIHsKKyAgICBmdW5jdGlvbiAqZmliKCkKKyAgICB7Cisg
ICAgICAgIGxldCBhID0gMTsKKyAgICAgICAgbGV0IGIgPSAxOworICAgICAgICB3aGlsZSAodHJ1
ZSkgeworICAgICAgICAgICAgeWllbGQgYTsKKyAgICAgICAgICAgIFthLCBiXSA9IFtiLCBhICsg
Yl07CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQgdmFsdWUgPSAwOworICAgIGZvciAobGV0
IGkgPSAwOyBpIDwgMWU0OyArK2kpIHsKKyAgICAgICAgbGV0IGYgPSBmaWIoKTsKKyAgICAgICAg
Zm9yIChsZXQgaSA9IDA7IGkgPCAxMDA7ICsraSkgeworICAgICAgICAgICAgdmFsdWUgPSBmLm5l
eHQoKS52YWx1ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAodmFsdWUgIT09IDM1NDIyNDg0ODE3
OTI2MjAwMDAwMCkKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIHZhbHVlOiR7cmVz
dWx0fWApOworICAgIH0KK30oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dGVzdHMvc3RyZXNzL2dlbmVyYXRvci1mcmFtZS1lbXB0eS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZyYW1lLWVtcHR5LmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU5
ZTg4NTViZmFjM2M1NmRmOTI2YWJkNDI4YzAxM2MzMzQxNjI3NDYKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1mcmFtZS1lbXB0
eS5qcwpAQCAtMCwwICsxLDM0IEBACitmdW5jdGlvbiBzaG91bGRUaHJvdyhmdW5jLCBlcnJvck1l
c3NhZ2UpIHsKKyAgICB2YXIgZXJyb3JUaHJvd24gPSBmYWxzZTsKKyAgICB2YXIgZXJyb3IgPSBu
dWxsOworICAgIHRyeSB7CisgICAgICAgIGZ1bmMoKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAg
ICAgIGVycm9yVGhyb3duID0gdHJ1ZTsKKyAgICAgICAgZXJyb3IgPSBlOworICAgIH0KKyAgICBp
ZiAoIWVycm9yVGhyb3duKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ25vdCB0aHJvd24nKTsK
KyAgICBpZiAoU3RyaW5nKGVycm9yKSAhPT0gZXJyb3JNZXNzYWdlKQorICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoYGJhZCBlcnJvcjogJHtTdHJpbmcoZXJyb3IpfWApOworfQorCitzaG91bGRUaHJv
dyhmdW5jdGlvbiAoKSB7CisgICAgZnVuY3Rpb24gKmZpYihmbGFnKQorICAgIHsKKyAgICAgICAg
bGV0IGEgPSAxOworICAgICAgICBsZXQgYiA9IDE7CisgICAgICAgIHlpZWxkIDQyOworICAgICAg
ICBpZiAoZmxhZykKKyAgICAgICAgICAgIHJldHVybiBjOworICAgICAgICBsZXQgYyA9IDUwMDsK
KyAgICB9CisKKyAgICBsZXQgdmFsdWUgPSAwOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMWU0
OyArK2kpIHsKKyAgICAgICAgZm9yIChsZXQgdiBvZiBmaWIoZmFsc2UpKSB7CisgICAgICAgIH0K
KyAgICB9CisgICAgZm9yIChsZXQgdiBvZiBmaWIodHJ1ZSkpIHsKKyAgICB9Cit9LCBgUmVmZXJl
bmNlRXJyb3I6IENhbm5vdCBhY2Nlc3MgdW5pbml0aWFsaXplZCB2YXJpYWJsZS5gKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXJlZHVj
ZWQtc2F2ZS1wb2ludC1wdXQtdG8tc2NvcGUuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dHMvc3RyZXNzL2dlbmVyYXRvci1yZWR1Y2VkLXNhdmUtcG9pbnQtcHV0LXRvLXNjb3BlLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmMwYzc1ZmE0OTE0M2MxN2JlMTRmMzI4MWUzZjY1NDM0ZjM1MTM5ZTgKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRv
ci1yZWR1Y2VkLXNhdmUtcG9pbnQtcHV0LXRvLXNjb3BlLmpzCkBAIC0wLDAgKzEsMjggQEAKK2Z1
bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBl
eHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgdmFsdWU6ICR7U3RyaW5nKGFj
dHVhbCl9YCk7Cit9CisKK2Z1bmN0aW9uIGVycm9yKCkKK3sKKyAgICB0aHJvdyAib2siOworfQor
CitmdW5jdGlvbiogZ2VuKCkKK3sKKyAgICB2YXIgdmFsdWUgPSA0MjsKKyAgICB0cnkgeworICAg
ICAgICB5aWVsZCAzMDA7CisgICAgICAgIHZhbHVlID0gNTAwOworICAgICAgICBlcnJvcigpOwor
ICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgeWllbGQgNDI7CisgICAgICAgIHJldHVybiB2YWx1
ZTsKKyAgICB9CisgICAgcmV0dXJuIDIwMDsKK30KKwordmFyIGcgPSBnZW4oKTsKK3Nob3VsZEJl
KGcubmV4dCgpLnZhbHVlLCAzMDApOworc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIDQyKTsKK3No
b3VsZEJlKGcubmV4dCgpLnZhbHVlLCA1MDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItdHJhbnNmZXItcmVnaXN0ZXItYmV5b25kLW11
dGlwbGUteWllbGRzLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5l
cmF0b3ItdHJhbnNmZXItcmVnaXN0ZXItYmV5b25kLW11dGlwbGUteWllbGRzLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmZlMjA4ZjU4MTI5NmY5YWUwOGE2YmZiMzk4YjQ4MjI1NzQyZDZiNzgKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci10cmFu
c2Zlci1yZWdpc3Rlci1iZXlvbmQtbXV0aXBsZS15aWVsZHMuanMKQEAgLTAsMCArMSwxOCBAQAor
ZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09
IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVh
bCk7Cit9CisKKworZnVuY3Rpb24gKmdlbigpCit7CisgICAgdmFyIHRlc3QgPSA0MjsKKyAgICB5
aWVsZCAzMjsKKyAgICB5aWVsZCAzMzsKKyAgICB5aWVsZCB0ZXN0OworfQorCit2YXIgZyA9IGdl
bigpOworc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIDMyKTsKK3Nob3VsZEJlKGcubmV4dCgpLnZh
bHVlLCAzMyk7CitzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgNDIpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvRmFzdEJpdFZlY3Rvci5oIGIvU291cmNlL1dURi93dGYvRmFzdEJpdFZlY3Rv
ci5oCmluZGV4IDk4ZmZmNWNmNzM1M2U2YmM2N2RhNWM1NTk0MGNjY2U0ZTRiMTU2ZDAuLmZmMDBi
N2I1NGQ0YTBjZmY0YmVmN2QwMzg1NGRlNmI5MGNlMWRiOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL0Zhc3RCaXRWZWN0b3IuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GYXN0Qml0VmVjdG9y
LmgKQEAgLTIzLDggKzIzLDcgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAKLSNpZm5kZWYgRmFz
dEJpdFZlY3Rvcl9oCi0jZGVmaW5lIEZhc3RCaXRWZWN0b3JfaAorI3ByYWdtYSBvbmNlCiAKICNp
bmNsdWRlIDxzdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgpAQCAtMzYsMTIg
KzM1LDE0IEBAIGNsYXNzIFByaW50U3RyZWFtOwogCiBjbGFzcyBGYXN0Qml0VmVjdG9yIHsKIHB1
YmxpYzoKLSAgICBGYXN0Qml0VmVjdG9yKCkKLSAgICAgICAgOiBtX2FycmF5KDApCi0gICAgICAg
ICwgbV9udW1CaXRzKDApCisgICAgRmFzdEJpdFZlY3RvcigpID0gZGVmYXVsdDsKKworICAgIEZh
c3RCaXRWZWN0b3IoRmFzdEJpdFZlY3RvciYmIG90aGVyKQorICAgICAgICA6IG1fYXJyYXkoc3Rk
OjpleGNoYW5nZShvdGhlci5tX2FycmF5LCBudWxscHRyKSkKKyAgICAgICAgLCBtX251bUJpdHMo
c3RkOjpleGNoYW5nZShvdGhlci5tX251bUJpdHMsIDApKQogICAgIHsKICAgICB9Ci0gICAgCisK
ICAgICBGYXN0Qml0VmVjdG9yKGNvbnN0IEZhc3RCaXRWZWN0b3ImIG90aGVyKQogICAgICAgICA6
IG1fYXJyYXkoMCkKICAgICAgICAgLCBtX251bUJpdHMoMCkKQEAgLTIwMiwxMyArMjAzLDEwIEBA
IGNsYXNzIEZhc3RCaXRWZWN0b3IgewogICAgIHN0YXRpYyBzaXplX3QgYXJyYXlMZW5ndGgoc2l6
ZV90IG51bUJpdHMpIHsgcmV0dXJuIChudW1CaXRzICsgMzEpID4+IDU7IH0KICAgICBzaXplX3Qg
YXJyYXlMZW5ndGgoKSBjb25zdCB7IHJldHVybiBhcnJheUxlbmd0aChtX251bUJpdHMpOyB9CiAg
ICAgCi0gICAgdWludDMyX3QqIG1fYXJyYXk7IC8vIE5vLCB0aGlzIGNhbid0IGJlIGFuIHN0ZDo6
dW5pcXVlX3B0cjx1aW50MzJfdFtdPi4KLSAgICBzaXplX3QgbV9udW1CaXRzOworICAgIHVpbnQz
Ml90KiBtX2FycmF5IHsgbnVsbHB0ciB9OyAvLyBObywgdGhpcyBjYW4ndCBiZSBhbiBzdGQ6OnVu
aXF1ZV9wdHI8dWludDMyX3RbXT4uCisgICAgc2l6ZV90IG1fbnVtQml0cyB7IDAgfTsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdURgogCiB1c2luZyBXVEY6OkZhc3RCaXRWZWN0b3I7Ci0KLSNlbmRp
ZiAvLyBGYXN0Qml0VmVjdG9yX2gKLQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>284482</attachid>
            <date>2016-07-25 07:40:15 -0700</date>
            <delta_ts>2016-07-25 08:50:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-152723-20160725233907.patch</filename>
            <type>text/plain</type>
            <size>198090</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAzNjgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
MjQxN2U0Y2Y0MGEyODUzZmU0ZTkyNzM3MDY1ZmIzMmRiODMzMjdiLi4xMjEzNjczMWMxYWMwYmVl
OTNmZDg4Yzg3ZTcxOWVmYmU1Mjg2MTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNjggQEAKKzIwMTYtMDctMjUgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0RGR11bRlRMXSBJbXBsZW1lbnQgRVM2IEdlbmVyYXRvcnMgaW4g
REZHIC8gRlRMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNTI3MjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUaGlzIHBhdGNoIGludHJvZHVjZXMgREZHIGFuZCBGVEwgc3VwcG9ydCBmb3IgRVM2IGdlbmVy
YXRvcnMuCisgICAgICAgIEVTNiBnZW5lcmF0b3IgaXMgY29tcGlsZWQgYnkgdGhlIEJ5dGVjb2Rl
R2VuZXJhdG9yLiBCdXQgYXQgdGhlIGxhc3QgcGhhc2UsIEJ5dGVjb2RlR2VuZXJhdG9yIHBlcmZv
cm1zICJnZW5lcmF0b3JpZmljYXRpb24iIG9udG8gdGhlIHVubGlua2VkIGNvZGUuCisgICAgICAg
IEluIEJ5dGVjb2RlR2VuZXJhdG9yIHBoYXNlLCB3ZSBpbnNlcnRlZCBzZXZlcmFsIHNwZWNpYWwg
bWFya2VycyBmb3IgdGhlIGdlbmVyYXRvcnMsIG9wX3NhdmUgYW5kIG9wX3Jlc3VtZS4KKyAgICAg
ICAgVGhlIG9wX3NhdmUsIG9wX3Jlc3VtZSwgYW5kIHRoZSBtZXJnZSBwb2ludCBibG9jayBhcmUg
Y29ubmVjdGVkIGFzIGZvbGxvd3MuCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBvcF9yZXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBeCisgICAgICAgIGVudHJ5IC0+IGdlbmVyYXRvciBzd2l0Y2ggLS0tLT4gb3Bfc2F2ZSAtPiBt
ZXJnZSBwb2ludCAtPiAuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBeCisgICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0t
LT4gb3BfcmVzdW1lIC0tLS0tKworCisgICAgICAgIEluIHRoZSBnZW5lcmF0b3JpZmljYXRpb24g
cGhhc2UsIHdlIHR1cm4gb3V0IHdoaWNoIHZhcmlhYmxlcyBzaG91bGQgYmUgc2F2ZWQgYW5kIHJl
c3VtZWQgYXQgZWFjaCBvcF9zYXZlIGFuZCBvcF9yZXN1bWUsIGFuZCBjb252ZXJ0IHRoZXNlIGJ5
dGVjb2RlcworICAgICAgICB0byB0aGUgc2VxdWVuY2VzIG9mIHRoZSBnZXRfZnJvbV9zY29wZSBh
bmQgcHV0X3RvX3Njb3BlLiBUaGUgcmVnaXN0ZXJzIGFyZSBzYXZlZCBhbmQgcmVzdW1lZCBvdmVy
IHRoZSBnZW5lcmF0b3IncyBuZXh0KCkgY2FsbHMgYnkgdXNpbmcgdGhpcyBzcGVjaWFsCisgICAg
ICAgIGdlbmVyYXRvciBmcmFtZSBzY29wZS4KKworICAgICAgICBJbiB0aGUgZ2VuZXJhdG9yaWZp
Y2F0aW9uIHBoYXNlLAorCisgICAgICAgIDEuIFdlIGNvbnN0cnVjdCB0aGUgQnl0ZWNvZGVHcmFw
aCBmcm9tIHRoZSB1bmxpbmtlZCBpbnN0cnVjdGlvbnMuIFRoaXMgY29uc3RydWN0cyB0aGUgYmFz
aWMgYmxvY2tzLCBhbmQgaXQgaXMgdXNlZCBpbiB0aGUgc3Vic2VxdWVudCBhbmFseXNpcy4KKyAg
ICAgICAgMi4gV2UgcGVyZm9ybSB0aGUgYW5hbHlzaXMgb250byB0aGUgdW5saW5rZWQgY29kZS4g
V2UgaGF2ZSAzIGFuYWx5c2lzOiB0aGUgbGl2ZW5lc3MgYW5hbHlzaXMsIHRoZSBzYXZlZCB2YXJp
YWJsZXMgYW5hbHlzaXMsIGFuZCB0aGUgcmVzdW1lZCB2YXJpYWJsZXMgYW5hbHlzaXMuCisgICAg
ICAgICAgIEZpcnN0LCBpbiB0aGUgbGl2ZW5lc3MgYW5hbHlzaXMsIHdlIGV4dHJhY3QgdGhlIGxp
dmUgdmFyaWFibGVzIGF0IGVhY2ggbWVyZ2UgcG9pbnQuIFRoZXNlIHZhcmlhYmxlcyBzaG91bGQg
YmUgY29uc2lkZXJlZCBhcyB0aGUgY29uc2VydmF0aXZlIHJlZ2lzdGVycworICAgICAgICAgICB0
byBiZSBzYXZlZCBhbmQgcmVzdW1lZCBhdCBlYWNoIHBvaW50LgorICAgICAgICAzLiBTZWNvbmQs
IHdlIGRyaXZlIHRoZSBmb3J3YXJkIGFuYWx5c2lzLCBjYWxsZWQgdGhlIHNhdmVkIHZhcmlhYmxl
cyBhbmFseXNpcy4gVGhpcyB0aW1lLCB3ZSBleHBsaWNpdGx5IGlnbm9yZSB0aGUgZWRnZXMgYmV0
d2VlbiB0aGUgc2F2ZSBwb2ludHMgYW5kIHRoZSBtZXJnZSBwb2ludHMuCisgICAgICAgICAgIEF0
IG9wX3NhdmUsIHdlIHNob3VsZCBzYXZlIHRoZSB2YXJpYWJsZXMgdGhhdCAoaSkgd2lsbCBiZSB1
c2VkIGFmdGVyIHRoZSBtZXJnZSBwb2ludCBBTkQgKGlpKSB0aGUgbmV3bHkgZGVmaW5lZCB2YXJp
YWJsZXMgZnJvbSB0aGUgcHJldmlvdXMgb3BfcmVzdW1lLiBTbywgd2UgcHJvcGFnYXRlCisgICAg
ICAgICAgIHRoZSBkZWZzIGFuZCBjb2xsZWN0IHRoZSBuZXdseSBkZWZpbmVkIHJlZ2lzdGVycyBh
dCBlYWNoIG9wX3NhdmUgcG9pbnQgaW4gdGhlIGdyYXBoLiBUaGlzIHJlc3VsdCByZXByZXNlbnRz
IChpaSkuIFNvIHRoZW4sIHdlIGZpbHRlciB0aGUgbGl2ZSB2YXJpYWJsZXMgKGkpIChnYWluZWQg
aW4gKDIpKQorICAgICAgICAgICBhdCBlYWNoIG1lcmdlIHBvaW50IHdpdGggdGhpcyBuZXdseSBk
ZWYtZWQgcmVnaXN0ZXJzIGJpdCBtYXNrKGlpKS4KKyAgICAgICAgICAgT25lIGltcG9ydGFudCB0
aGluZyBvZiB0aGlzIGFuYWx5c2lzIGlzIHRoYXQsIHdlIGNvbnNpZGVycyB0aGUgYmFzaWMgYmxv
Y2tzIHdoaWNoIHJhbmdlIG92ZXJsYXBzIHRoZSB0cnktcmFuZ2UgYXMgdGhlIGltcGxpY2l0IHBy
ZWRlY2Vzc29ycyBvZiB0aGUgaGFuZGxlcnMuCisgICAgICAgICAgIFdoZW4gcHJvcGFnYXRpbmcg
dGhlIG91dGdvaW5nIHJlc3VsdHMsIHRoZSBoYW5kbGVyIG1lcmdlcyBhbGwgdGhlIHByZWRlY2Vz
c29ycycgb3V0IHNldHMuIFRoaXMgaXMgYSBsaXR0bGUgYml0IGNvbnNlcnZhdGl2ZSBiZWNhdXNl
IHRoZSB0cnktcmFuZ2UgbWF5IG5vdCBjb3ZlciBhbGwKKyAgICAgICAgICAgdGhlIHBhcnQgb2Yg
dGhlIGltcGxpY2l0IHByZWRlY2Vzc29ycy4gU28gb3Bfc2F2ZSBjb3VsZCBzYXZlIHRoZSB2YXJp
YWJsZXMgY29uc2VydmF0aXZlbHkuCisgICAgICAgIDQuIFRoaXJkLCB3ZSBwZXJmb3JtIHRoZSBs
aXZlbmVzcyBhbmFseXNpcyBhZ2FpbiwgYnV0IG9udG8gdGhlIGdyYXBoIHdoaWNoIGRyb3BzIHRo
ZSBlZGdlcyBiZXR3ZWVuIHRoZSBzYXZlIHBvaW50cyBhbmQgdGhlIG1lcmdlIHBvaW50cy4gVGhp
cyBhbmFseXNpcywgcmVmZXJyZWQgdG8gYXMKKyAgICAgICAgICAgdGhlIHJlc3VtZWQgdmFyaWFi
bGVzIGFuYWx5c2lzLCBleHRyYWN0cyB0aGUgbGl2ZW5lc3MgYXQgZWFjaCBtZXJnZSBwb2ludC4g
VGhpcyBsaXZlbmVzcyBpbmZvcm1hdGlvbiBvbmx5IGNvbnNpZGVycyB0aGUgcmVhY2hhYmxlIGJs
b2NrcyBmcm9tIHRoZSB0YXJnZXQgb3BfcmVzdW1lLgorICAgICAgICAgICBTbywgdGhpcyByZWdp
c3RlciBzZXQgcmVwcmVzZW50cyB0aGUgc2F2ZWQgcmVnaXN0ZXJzIHdoaWNoIHRoZSByZWFjaGFi
bGUgYmxvY2tzIHVzZS4gV2UgY29uc2lkZXIgdGhlc2UgcmVnaXN0ZXJzIGFzIHRoZSByZWdpc3Rl
cnMgdG8gYmUgcmVzdW1lZCBoZXJlLgorICAgICAgICAgICBUaGlzIGFuYWx5c2lzIHNob3VsZCBi
ZSBkb25lIGFmdGVyICgzKSBhbmQgc2hvdWxkIHVzZSAoMykncyByZXN1bHRzLiBUaGlzIGlzIGJl
Y2F1c2UgdGhlIG9wX3NhdmUgY291bGQgc2F2ZSB0aGUgdmFyaWFibGVzIGNvbnNlcnZhdGl2ZWx5
LiBTbyBvcF9yZXN1bWUgc2hvdWxkIHJlc3VtZQorICAgICAgICAgICB0aGUgdmFyaWFibGVzIHRo
YXQgaXMgc2F2ZWQgY29uc2VydmF0aXZlbHkgaW4gKDMpLgorICAgICAgICA1LiBXZSBpbnNlcnQg
dGhlIGdldF9mcm9tX3Njb3BlIGFuZCBwdXRfdG9fc2NvcGUgYXQgZWFjaCBvcF9zYXZlIGFuZCBv
cF9yZXN1bWUuIFdoaWNoIHJlZ2lzdGVycyBzaG91bGQgYmUgc2F2ZWQgYW5kIHJlc3VtZWQgaXMg
b2ZmZXJlZCBieSAoMykgYW5kICg0KS4KKyAgICAgICAgICAgVGhlbiwgY2xpcCB0aGUgb3Bfc2F2
ZSBhbmQgb3BfcmVzdW1lIHRoZW1zZWx2ZXMuIFRoZXkgYXJlIGV4ZWN1dGVkIGluIGEgYmF0Y2gg
bWFubmVyIGJ5IEJ5dGVjb2RlTW9kaWZpY2F0aW9uU2V0LiBTaW5jZSB0aGVzZSBtb2RpZmljYXRp
b24gY2hhbmdlcyB0aGUgYmFzaWMgYmxvY2tzCisgICAgICAgICAgIGFuZCBzaXplIG9mIHVubGlu
a2VkIGluc3RydWN0aW9ucywgQnl0ZWNvZGVNb2RpZmljYXRpb25TZXQgYWxzbyBwZXJmb3JtcyB0
aGUgb2Zmc2V0IGFkanVzdG1lbnQgZm9yIFVubGlua2VkQ29kZUJsb2NrLiBTbywgdGhpcyBCeXRl
Y29kZU1vZGlmaWNhdGlvblNldCBpcyBwZXJmb3JtZWQKKyAgICAgICAgICAgb250byB0aGUgQnl0
ZWNvZGVHcmFwaCBpbnN0ZWFkIG9mIEJ5dGVjb2RlQmFzaWNCbG9jay4gVGhlIHJlYXNvbiB3aHkg
d2UgdGFrZSB0aGlzIGRlc2lnbiBpcyBzaW1wbGU6IHdlIGRvbid0IHdhbnQgdG8gbmV3bHkgY3Jl
YXRlIHRoZSBiYXNpYyBibG9ja3MgYW5kIG9wY29kZXMKKyAgICAgICAgICAgZm9yIHRoaXMgZWFy
bHkgcGhhc2UgbGlrZSBERkcuIEluc3RlYWQsIHdlIHBlcmZvcm0gdGhlIG1vZGlmaWNhdGlvbiBh
bmQgYWRqdXN0bWVudCB0byB0aGUgdW5saW5rZWQgaW5zdHJ1Y3Rpb25zIGFuZCBVbmxpbmtlZENv
ZGVCbG9jayBpbiBhIGluLXBsYWNlIG1hbm5lci4KKworICAgICAgICBBZnRlciB0aGF0IHBoYXNl
LCB0aGUgZGF0YSBmbG93IG9mIHRoZSBnZW5lcmF0b3Itc2F2ZWQtYW5kLXJlc3VtZWQtcmVnaXN0
ZXJzIGFyZSBleHBsaWNpdGx5IHJlcHJlc2VudGVkIGJ5IHRoZSBnZXRfZnJvbV9zY29wZSBhbmQg
cHV0X3RvX3Njb3BlLgorICAgICAgICBBbmQgb3Bfc2F2ZSBhbmQgb3BfcmVzdW1lIGFyZSByZW1v
dmVkLiBTaW5jZSB3ZSB1c2UgdGhlIGV4aXN0aW5nIGJ5dGVjb2RlcywgREZHIGFuZCBGVEwgY2hh
bmdlcyBhcmUgbm90IG5lY2Vzc2FyeS4KKyAgICAgICAgVGhpcyBwYXRjaCBhbHNvIGRyb3BzIGRh
dGEgc3RydWN0dXJlcyBhbmQgaW1wbGVtZW50YXRpb25zIGZvciB0aGUgb2xkIGdlbmVyYXRvciwg
b3BfcmVzdW1lLCBvcF9zYXZlIGltcGxlbWVudGF0aW9ucyBhbmQgR2VuZXJhdG9yRnJhbWUuCisK
KyAgICAgICAgTm90ZSB0aGF0IHRoaXMgcGF0Y2ggZG9lcyBub3QgbGV2ZXJhZ2UgdGhlIHJlY2Vu
dCBtdWx0aSBlbnRyeXBvaW50cyBzdXBwb3J0IGluIEIzLiBBZnRlciB0aGlzIHBhdGNoIGlzIGlu
dHJvZHVjZWQsIHdlIHdpbGwgc3VibWl0IGEgbmV3IHBhdGNoIHRoYXQgbGV2ZXJhZ2VzIHRoZSBt
dWx0aQorICAgICAgICBlbnRyeXBvaW50cyBmb3IgZ2VuZXJhdG9yJ3MgcmVzdW1lIGFuZCBzZWVz
IHRoZSBwZXJmb3JtYW5jZSBnYWluLgorCisgICAgICAgIENvbXBpbGluZyBFUzYgZ2VuZXJhdG9y
cyBpbiBERkcgYW5kIEZUTCBnaXZlcyB1cyBzaWduaWZpY2FudCBwZXJmb3JtYW5jZSBpbXByb3Zl
bWVudHMuCisgICAgICAgIEluIHg2NCBMaW51eCBib3ggKGhhbmF5YW1hdGEpLCB0aGUgcmVzdWx0
IG9mIEpTQ09ubHkgcG9ydCBpcyB0aGUgZm9sbG93aW5ncy4KKworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlbGluZSAgICAgICAgICAg
ICAgICAgICBwYXRjaAorCisgICAgICAgICAgICBnZW5lcmF0b3ItZmliICAgICAgICAgICAgICAg
ICAgICAgICAgICAxMDkuMTg0NSstOC44OTA1ICAgICBeICAgICAzNS44NjM4Ky0wLjc1NjcgICAg
ICAgIF4gZGVmaW5pdGVseSAzLjA0NDR4IGZhc3RlcgorICAgICAgICAgICAgZ2VuZXJhdG9yLXdp
dGgtc2V2ZXJhbC10eXBlcyAgICAgICAgICAgMzUxLjgzNTQrLTE3LjM4OTggICAgXiAgICAxMzIu
MzIzOSstMTguNjMxMCAgICAgICBeIGRlZmluaXRlbHkgMi42NTg5eCBmYXN0ZXIKKyAgICAgICAg
ICAgIGdlbmVyYXRvci1zdW5zcGlkZXItYWNjZXNzLW5zaWV2ZSAgICAgICAgNS45MTM2Ky0wLjAy
NjggICAgIF4gICAgICA1LjAwOTArLTAuMDM5NCAgICAgICAgXiBkZWZpbml0ZWx5IDEuMTgwNngg
ZmFzdGVyCisKKyAgICAgICAgSW4geDY0IE9TIFggbGFwdG9wLCB0aGUgcmVzdWx0cyBvZiBFUzZT
YW1wbGVCZW5jaCBhcmUgdGhlIGZvbGxvd2luZ3MuCisgICAgICAgIFRoZSBFUzYgQmFzaWMgYmVu
Y2htYXJrIHNob3cgdGhhdCB0aGUgcGVyZm9ybWFuY2Ugb2YgdGhlIHBhdGNoZWQgb25lIGlzIDMz
JSBmYXN0ZXIgdGhhbiB0aGUgcGVyZm9ybWFuY2Ugb2YgdGhlIGJhc2VsaW5lLgorCisgICAgICAg
ICAgICBCYXNlbGluZToKKyAgICAgICAgICAgICAgICBHZW9tZXRyaWMgTWVhbiBSZXN1bHQ6IDE4
MS44MyBtcyDCsSA0LjgyIG1zCisKKyAgICAgICAgICAgICAgICBCZW5jaG1hcmsgICAgRmlyc3Qg
SXRlcmF0aW9uICAgICAgIFdvcnN0IDIlICAgICAgICAgICAgICBTdGVhZHkgU3RhdGUKKyAgICAg
ICAgICAgICAgICBBaXIgICAgICAgICAgNzAuNzQgbXMgwrEgNi41NSBtcyAgICAzNC43NCBtcyDC
sSAxLjY1IG1zICAgIDI5ODkuMDYgbXMgwrEgMzQuNDUgbXMKKyAgICAgICAgICAgICAgICBCYXNp
YyAgICAgICAgNDAuMDMgbXMgwrEgMS45NiBtcyAgICAyOC41MCBtcyDCsSAwLjYwIG1zICAgIDQz
NDIuOTEgbXMgwrEgNjQuMTAgbXMKKworICAgICAgICAgICAgUGF0Y2hlZDoKKyAgICAgICAgICAg
ICAgICBHZW9tZXRyaWMgTWVhbiBSZXN1bHQ6IDE2OC4xNCBtcyDCsSAxLjM5IG1zCisKKyAgICAg
ICAgICAgICAgICBCZW5jaG1hcmsgICAgRmlyc3QgSXRlcmF0aW9uICAgICAgIFdvcnN0IDIlICAg
ICAgICAgICAgICBTdGVhZHkgU3RhdGUKKyAgICAgICAgICAgICAgICBBaXIgICAgICAgICAgNjgu
NjcgbXMgwrEgMC44MiBtcyAgICAzNS42MiBtcyDCsSAwLjMyIG1zICAgIDMwNjUuODkgbXMgwrEg
NTUuNTkgbXMKKyAgICAgICAgICAgICAgICBCYXNpYyAgICAgICAgMzguNjEgbXMgwrEgMS42NSBt
cyAgICAyMy45NyBtcyDCsSAwLjM4IG1zICAgIDMyNjIuNDYgbXMgwrEgNzQuMTIgbXMKKworICAg
ICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYnVpbHRpbnMvR2VuZXJhdG9yUHJvdG90eXBl
LmpzOgorICAgICAgICAoZ2xvYmFsUHJpdmF0ZS5nZW5lcmF0b3JSZXN1bWUpOgorICAgICAgICAq
IGJ5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
QmFzaWNCbG9jazo6Y29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3NJbnRlcm5hbCk6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlQmFzaWNCbG9jazo6Y29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MpOgor
ICAgICAgICAoSlNDOjpsaW5rQmxvY2tzKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Y29tcHV0
ZUJ5dGVjb2RlQmFzaWNCbG9ja3MpOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVj
b2RlQmFzaWNCbG9jay5oOgorICAgICAgICAoSlNDOjpCeXRlY29kZUJhc2ljQmxvY2s6OmJ5dGVj
b2RlT2Zmc2V0cyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlQmFzaWNCbG9jazo6c3VjY2Vzc29y
cyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlQmFzaWNCbG9jazo6cHJlZGVjZXNzb3JzKToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVCYXNpY0Jsb2NrOjppbmRleCk6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlQmFzaWNCbG9jazo6YWRkU3VjY2Vzc29yKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVC
YXNpY0Jsb2NrOjphZGRQcmVkZWNlc3Nvcik6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVH
ZW5lcmF0b3JpZmljYXRpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5l
cmF0b3JpZmljYXRpb246OkJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uKToKKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb246OmlzTWVyZ2VCbG9jayk6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uOjppc1NhdmVCbG9jayk6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uOjpncmFwaCk6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uOjp5aWVsZHMpOgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUdlbmVyYXRvcmlmaWNhdGlvbjo6c3RvcmFnZUZvckdlbmVyYXRvckxvY2FsKToKKyAgICAgICAg
KEpTQzo6TGl2ZW5lc3NBbmFseXNpczo6TGl2ZW5lc3NBbmFseXNpcyk6CisgICAgICAgIChKU0M6
OkxpdmVuZXNzQW5hbHlzaXM6OmdlbmVyYXRvcmlmaWNhdGlvbik6CisgICAgICAgIChKU0M6Okxp
dmVuZXNzQW5hbHlzaXM6OnN0ZXBPdmVySW5zdHJ1Y3Rpb25Gb3JMaXZlbmVzcyk6CisgICAgICAg
IChKU0M6OkxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQnl0ZWNvZGVP
ZmZzZXQpOgorICAgICAgICAoSlNDOjpMaXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlTG9jYWxMaXZl
bmVzc0ZvckJsb2NrKToKKyAgICAgICAgKEpTQzo6TGl2ZW5lc3NBbmFseXNpczo6Z2V0TGl2ZW5l
c3NJbmZvQXRCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckxpdmVuZXNz
QW5hbHlzaXM6OkdlbmVyYXRvckxpdmVuZXNzQW5hbHlzaXMpOgorICAgICAgICAoSlNDOjpHZW5l
cmF0b3JMaXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlTGl2ZW5lc3NEZWZzRm9yQnl0ZWNvZGVPZmZz
ZXQpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JMaXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlTGl2
ZW5lc3NVc2VzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JMaXZl
bmVzc0FuYWx5c2lzOjpydW4pOgorICAgICAgICAoSlNDOjpTYXZlZFZhcmlhYmxlc0FuYWx5c2lz
OjpTYXZlZFZhcmlhYmxlc0FuYWx5c2lzKToKKyAgICAgICAgKEpTQzo6U2F2ZWRWYXJpYWJsZXNB
bmFseXNpczo6Z2VuZXJhdG9yaWZpY2F0aW9uKToKKyAgICAgICAgKEpTQzo6U2F2ZWRWYXJpYWJs
ZXNBbmFseXNpczo6c3RlcE92ZXJJbnN0cnVjdGlvbkZvclNhdmVkVmFyaWFibGVzKToKKyAgICAg
ICAgKEpTQzo6U2F2ZWRWYXJpYWJsZXNBbmFseXNpczo6Y29tcHV0ZUxvY2FsU2F2ZWRWYXJpYWJs
ZXNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OlNhdmVkVmFyaWFibGVzQW5hbHlz
aXM6OmNvbXB1dGVMb2NhbFNhdmVkVmFyaWFibGVzRm9yQmxvY2spOgorICAgICAgICAoSlNDOjpT
YXZlZFZhcmlhYmxlc0FuYWx5c2lzOjpnZXRTYXZlZFZhcmlhYmxlc0luZm9BdEJ5dGVjb2RlT2Zm
c2V0KToKKyAgICAgICAgKEpTQzo6U2F2ZWRWYXJpYWJsZXNBbmFseXNpczo6cnVuKToKKyAgICAg
ICAgKEpTQzo6UmVzdW1lZFZhcmlhYmxlc0FuYWx5c2lzOjpSZXN1bWVkVmFyaWFibGVzQW5hbHlz
aXMpOgorICAgICAgICAoSlNDOjpSZXN1bWVkVmFyaWFibGVzQW5hbHlzaXM6OmNvbXB1dGVMaXZl
bmVzc0RlZnNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OlJlc3VtZWRWYXJpYWJs
ZXNBbmFseXNpczo6Y29tcHV0ZUxpdmVuZXNzVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAg
ICAgKEpTQzo6UmVzdW1lZFZhcmlhYmxlc0FuYWx5c2lzOjpydW4pOgorICAgICAgICAoSlNDOjpC
eXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbjo6cnVuKToKKyAgICAgICAgKEpTQzo6cGVyZm9ybUdl
bmVyYXRvcmlmaWNhdGlvbik6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3Jp
ZmljYXRpb24uaDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGluZXMuaC4KKyAgICAgICAgKiBieXRlY29kZS9CeXRl
Y29kZUdyYXBoLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpCeXRlY29kZUdyYXBoOjpjb2RlQmxv
Y2spOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdyYXBoOjpiYXNpY0Jsb2Nrcyk6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlR3JhcGg6Omluc3RydWN0aW9ucyk6CisgICAgICAgIChKU0M6OkJ5dGVj
b2RlR3JhcGg6OmJhc2ljQmxvY2tzSW5SZXZlcnNlT3JkZXIpOgorICAgICAgICAoSlNDOjpCeXRl
Y29kZUdyYXBoOjpibG9ja0NvbnRhaW5zQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpC
eXRlY29kZUdyYXBoOjpmaW5kQmFzaWNCbG9ja0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHcmFwaDo6ZmluZEJhc2ljQmxvY2tXaXRoTGVhZGVyT2Zmc2V0KToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVHcmFwaDxCbG9jaz46OkJ5dGVjb2RlR3JhcGgpOgorICAgICAg
ICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHA6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzKToKKyAg
ICAgICAgKEpTQzo6c3RlcE92ZXJJbnN0cnVjdGlvbik6CisgICAgICAgIChKU0M6OmNvbXB1dGVM
b2NhbExpdmVuZXNzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpjb21wdXRlTG9j
YWxMaXZlbmVzc0ZvckJsb2NrKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5
c2lzOjpydW5MaXZlbmVzc0ZpeHBvaW50KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVz
c0FuYWx5c2lzOjpnZXRMaXZlbmVzc0luZm9BdEJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlRnVsbExpdmVuZXNzKToKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlS2lsbHMpOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmR1bXBSZXN1bHRzKToKKyAgICAgICAg
KEpTQzo6aXNWYWxpZFJlZ2lzdGVyRm9yTGl2ZW5lc3MpOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpnZXRMZWFkZXJPZmZzZXRGb3JCYXNpY0Jsb2NrKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
ZmluZEJhc2ljQmxvY2tXaXRoTGVhZGVyT2Zmc2V0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
YmxvY2tDb250YWluc0J5dGVjb2RlT2Zmc2V0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Zmlu
ZEJhc2ljQmxvY2tGb3JCeXRlY29kZU9mZnNldCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkJ5
dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0ZSk6IERlbGV0ZWQuCisgICAgICAgICogYnl0
ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmg6CisgICAgICAgICogYnl0ZWNvZGUvQnl0
ZWNvZGVMaXZlbmVzc0FuYWx5c2lzSW5saW5lcy5oOgorICAgICAgICAoSlNDOjppc1ZhbGlkUmVn
aXN0ZXJGb3JMaXZlbmVzcyk6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVNb2RpZmljYXRp
b25TZXQuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVNb2RpZmljYXRpb25TZXQ6
OmFkanVzdE9mZnNldCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlTW9kaWZpY2F0aW9uU2V0Ojph
cHBseU1vZGlmaWNhdGlvbik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlTW9kaWZpY2F0aW9uU2V0
OjpleGVjdXRlKToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZU1vZGlmaWNhdGlvblNldC5o
OiBBZGRlZC4KKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVNb2RpZmljYXRpb25TZXQ6OkJ5dGVjb2Rl
TW9kaWZpY2F0aW9uU2V0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVNb2RpZmljYXRpb25TZXQ6
Omluc2VydCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlTW9kaWZpY2F0aW9uU2V0OjpyZW1vdmVC
eXRlY29kZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlTW9kaWZpY2F0aW9uU2V0OjpncmFwaCk6
CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaDoKKyAgICAgICAgKEpTQzo6Y29t
cHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OmNvbXB1dGVEZWZzRm9y
Qnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAg
ICAgIChKU0M6OkNvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpDb2Rl
QmxvY2s6OmhhbmRsZXJGb3JJbmRleCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6dmFsdWVQ
cm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmxpdmVu
ZXNzQW5hbHlzaXNTbG93KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUp
OiBEZWxldGVkLgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnNocmlua1RvRml0KTogRGVsZXRl
ZC4KKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6Q29kZUJs
b2NrOjppc0NvbnN0YW50UmVnaXN0ZXJJbmRleCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6
bGl2ZW5lc3NBbmFseXNpcyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bGl2ZUNhbGxlZUxv
Y2Fsc0F0WWllbGQpOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2RlL0hhbmRsZXJJbmZvLmg6
CisgICAgICAgIChKU0M6OkhhbmRsZXJJbmZvQmFzZTo6aGFuZGxlckZvckluZGV4KToKKyAgICAg
ICAgKiBieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHMuY3BwOgorICAgICAgICAoSlNDOjpnZXRK
dW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZVByZWNp
c2VKdW1wVGFyZ2V0c0ludGVybmFsKToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZVByZWNpc2VKdW1w
VGFyZ2V0cyk6CisgICAgICAgIChKU0M6OnJlY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyk6Cisg
ICAgICAgIChKU0M6OmZpbmRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAg
KiBieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHMuaDoKKyAgICAgICAgKiBieXRlY29kZS9Vbmxp
bmtlZENvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjpoYW5k
bGVyRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6
aGFuZGxlckZvckluZGV4KToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OmFwcGx5
TW9kaWZpY2F0aW9uKToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oOgor
ICAgICAgICAoSlNDOjpVbmxpbmtlZFN0cmluZ0p1bXBUYWJsZTo6b2Zmc2V0Rm9yVmFsdWUpOgor
ICAgICAgICAqIGJ5dGVjb2RlL1ZpcnR1YWxSZWdpc3Rlci5oOgorICAgICAgICAqIGJ5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJh
dG9yOjpnZW5lcmF0ZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29k
ZUdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q29tcGxl
eFBvcFNjb3Blcyk6CisgICAgICAgIChKU0M6OnByZXBhcmVKdW1wVGFibGVGb3JTdHJpbmdTd2l0
Y2gpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFlpZWxkUG9pbnQpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFNhdmUpOgorICAgICAgICAoSlND
OjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlc3VtZSk6CisgICAgICAgICogYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpn
ZW5lcmF0b3JTdGF0ZVJlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6
OmdlbmVyYXRvclZhbHVlUmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRv
cjo6Z2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVH
ZW5lcmF0b3I6OmdlbmVyYXRvckZyYW1lUmVnaXN0ZXIpOgorICAgICAgICAqIGRmZy9ERkdPcGVy
YXRpb25zLmNwcDoKKyAgICAgICAgKiBnZW5lcmF0ZS1ieXRlY29kZS1maWxlczoKKyAgICAgICAg
KiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6OmZpbmRFeGNlcHRp
b25IYW5kbGVyKToKKyAgICAgICAgKEpTQzo6R2V0Q2F0Y2hIYW5kbGVyRnVuY3Rvcjo6b3BlcmF0
b3IoKSk6CisgICAgICAgIChKU0M6OlVud2luZEZ1bmN0b3I6Om9wZXJhdG9yKCkpOgorICAgICAg
ICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmg6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50
ZXJwcmV0ZXJJbmxpbmVzLmg6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9QcmVjaXNlSnVtcFRhcmdldHMuaC4KKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6Omdl
dE9wY29kZUlEKToKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpw
cml2YXRlQ29tcGlsZU1haW5QYXNzKTogRGVsZXRlZC4KKyAgICAgICAgKiBqaXQvSklULmg6Cisg
ICAgICAgICogaml0L0pJVE9wY29kZXMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bf
c2F2ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9yZXN1bWUpOiBEZWxl
dGVkLgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAgICAgICAq
IHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFy
c2VJbm5lcik6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUdlbmVyYXRv
ckZ1bmN0aW9uU291cmNlRWxlbWVudHMpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBl
Pjo6Y3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyk6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5o
OgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6
U0xPV19QQVRIX0RFQ0wpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1Bh
dGhzLmg6CisgICAgICAgICogcnVudGltZS9HZW5lcmF0b3JGcmFtZS5jcHA6IFJlbW92ZWQuCisg
ICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpHZW5lcmF0b3JGcmFtZSk6IERlbGV0ZWQuCisg
ICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpmaW5pc2hDcmVhdGlvbik6IERlbGV0ZWQuCisg
ICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpjcmVhdGVTdHJ1Y3R1cmUpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlKTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6R2VuZXJhdG9yRnJhbWU6OnNhdmUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpHZW5l
cmF0b3JGcmFtZTo6cmVzdW1lKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJh
bWU6OnZpc2l0Q2hpbGRyZW4pOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJhdG9y
RnJhbWUuaDogUmVtb3ZlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OmxvY2Fscyk6
IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpsb2NhbEF0KTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6Om9mZnNldE9mTG9jYWxzKTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OmFsbG9jYXRpb25TaXplRm9yTG9jYWxz
KTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJhdG9yRnVuY3Rpb24uaDoKKyAg
ICAgICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OlZNKTogRGVsZXRlZC4K
KyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisgICAgICAgICogdGVzdHMvc3RyZXNzL2dlbmVyYXRv
ci1maWItZnRsLWFuZC1hcnJheS5qczogQWRkZWQuCisgICAgICAgIChmaWIpOgorICAgICAgICAq
IHRlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQtb2JqZWN0LmpzOiBBZGRlZC4KKyAg
ICAgICAgKGZpYik6CisgICAgICAgICogdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLWFu
ZC1zdHJpbmcuanM6IEFkZGVkLgorICAgICAgICAoZmliKToKKyAgICAgICAgKiB0ZXN0cy9zdHJl
c3MvZ2VuZXJhdG9yLWZpYi1mdGwuanM6IEFkZGVkLgorICAgICAgICAoZmliKToKKyAgICAgICAg
KiB0ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZyYW1lLWVtcHR5LmpzOiBBZGRlZC4KKyAgICAgICAg
KHNob3VsZFRocm93KToKKyAgICAgICAgKHNob3VsZFRocm93LmZpYik6CisgICAgICAgICogdGVz
dHMvc3RyZXNzL2dlbmVyYXRvci1yZWR1Y2VkLXNhdmUtcG9pbnQtcHV0LXRvLXNjb3BlLmpzOiBB
ZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKGdlbik6CisgICAgICAgICogdGVz
dHMvc3RyZXNzL2dlbmVyYXRvci10cmFuc2Zlci1yZWdpc3Rlci1iZXlvbmQtbXV0aXBsZS15aWVs
ZHMuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoZ2VuKToKKwogMjAx
Ni0wNy0yNCAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgW0Zl
dGNoIEFQSV0gUmVxdWVzdCBzaG91bGQgYmUgY3JlYXRlZCB3aXRoIGFueSBIZWFkZXJzSW5pdCBk
YXRhCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdl
TG9nCmluZGV4IGEzNGE1YWM0YjYxZWQ5NjY1MWFmYmRjYjkwMTM3YjY5NDMxNjE1NTYuLmI1NTNl
NWEyMWQyNmI4YjJkNGM2NGZmYjYxMzVjMmMwY2FjYTBkMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAK
KzIwMTYtMDctMjUgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAg
ICAgICAgW0RGR11bRlRMXSBJbXBsZW1lbnQgRVM2IEdlbmVyYXRvcnMgaW4gREZHIC8gRlRMCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTI3MjMKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgbW92ZSBj
b25zdHJ1Y3RvciBmb3IgRmFzdEJpdFZlY3Rvci4KKworICAgICAgICAqIHd0Zi9GYXN0Qml0VmVj
dG9yLmg6CisgICAgICAgIChXVEY6OkZhc3RCaXRWZWN0b3I6OkZhc3RCaXRWZWN0b3IpOgorCiAy
MDE2LTA3LTI0ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgQjMg
c2hvdWxkIHN1cHBvcnQgbXVsdGlwbGUgZW50cnlwb2ludHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFr
ZUxpc3RzLnR4dAppbmRleCBmOGYyMzA5N2JhOWNkNzM4ZDc0MzNmMzZkNjFkYzg4MmNkZGVmOGJj
Li4zNjI0YWExNGUwZmQ2ZGQ1Y2UyMTIzMmFkZWI3Zjc4MGViYTRlODZiIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0xODEsNiArMTgxLDggQEAgc2V0KEphdmFTY3JpcHRD
b3JlX1NPVVJDRVMKICAgICBieXRlY29kZS9BcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcAogICAg
IGJ5dGVjb2RlL0FycmF5UHJvZmlsZS5jcHAKICAgICBieXRlY29kZS9CeXRlY29kZUJhc2ljQmxv
Y2suY3BwCisgICAgYnl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwCisgICAg
Ynl0ZWNvZGUvQnl0ZWNvZGVNb2RpZmljYXRpb25TZXQuY3BwCiAgICAgYnl0ZWNvZGUvQnl0ZWNv
ZGVJbnRyaW5zaWNSZWdpc3RyeS5jcHAKICAgICBieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5h
bHlzaXMuY3BwCiAgICAgYnl0ZWNvZGUvQ2FsbEVkZ2UuY3BwCkBAIC02NjEsNyArNjYzLDYgQEAg
c2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBydW50aW1lL0Z1bmN0aW9uSGFzRXhlY3V0
ZWRDYWNoZS5jcHAKICAgICBydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcAogICAgIHJ1bnRp
bWUvRnVuY3Rpb25SYXJlRGF0YS5jcHAKLSAgICBydW50aW1lL0dlbmVyYXRvckZyYW1lLmNwcAog
ICAgIHJ1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKICAgICBydW50aW1l
L0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcAogICAgIHJ1bnRpbWUvR2VuZXJhdG9yUHJv
dG90eXBlLmNwcApAQCAtOTc2LDYgKzk3NywxMCBAQCBhZGRfY3VzdG9tX2NvbW1hbmQoCiAgICAg
Q09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vZ2VuZXJh
dGUtYnl0ZWNvZGUtZmlsZXMgLS1ieXRlY29kZXNfaCAke0RFUklWRURfU09VUkNFU19KQVZBU0NS
SVBUQ09SRV9ESVJ9L0J5dGVjb2Rlcy5oIC0taW5pdF9ieXRlY29kZXNfYXNtICR7REVSSVZFRF9T
T1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5pdEJ5dGVjb2Rlcy5hc20gJHtKQVZBU0NSSVBU
Q09SRV9ESVJ9L2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCiAgICAgVkVSQkFUSU0pCiAKK2xp
c3QoQVBQRU5EIEphdmFTY3JpcHRDb3JlX0hFQURFUlMKKyAgICAke0RFUklWRURfU09VUkNFU19K
QVZBU0NSSVBUQ09SRV9ESVJ9L0J5dGVjb2Rlcy5oCispCisKIGFkZF9jdXN0b21fY29tbWFuZCgK
ICAgICBPVVRQVVQgJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9MTEludERl
c2lyZWRPZmZzZXRzLmgKICAgICBNQUlOX0RFUEVOREVOQ1kgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9
L29mZmxpbmVhc20vZ2VuZXJhdGVfb2Zmc2V0X2V4dHJhY3Rvci5yYgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCBjMzFiMzk3ODFjNjQzZTNmOTc0MDllNzhiYmQxYTJhYzNiZjdlNjBj
Li5hMmRlNTY2OGJlYzNiMWE3NGJhMjk1ZmIxMTU4MGZhNzFjYzBhZDQwIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtMTI1Niw4ICsxMjU2LDYgQEAKIAkJNzA5RkI4NkMxQUUzMzVD
NjAwMzlEMDY5IC8qIFdlYWtTZXRQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwOUZCODY2MUFFMzM1QzYwMDM5RDA2OSAvKiBXZWFrU2V0
UHJvdG90eXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJNzBCMEE5RDExQTlCNjY0NjAwMDEzMDZBIC8qIFJ1bnRpbWVGbGFncy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBCMEE5RDAxQTlCNjYyMDAw
MDEzMDZBIC8qIFJ1bnRpbWVGbGFncy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTcwQjc5MTkxMUMwMjRBMTMwMDI0ODFFMiAvKiBTb3VyY2VDb2Rl
S2V5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEI3
OTE4RTFDMDI0NEM5MDAyNDgxRTIgLyogU291cmNlQ29kZUtleS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTcwQjc5MTkyMUMwMjRBMjMwMDI0ODFF
MiAvKiBHZW5lcmF0b3JGcmFtZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3MEI3OTE4MzFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnJhbWUu
Y3BwICovOyB9OwotCQk3MEI3OTE5MzFDMDI0QTI4MDAyNDgxRTIgLyogR2VuZXJhdG9yRnJhbWUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwQjc5MTg0
MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGcmFtZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcwQjc5MTk0MUMwMjRBMjgwMDI0ODFFMiAv
KiBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwQjc5MTg1MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5l
cmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCAqLzsgfTsKIAkJNzBCNzkxOTUxQzAyNEEyODAw
MjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwQjc5MTg2MUMwMjQ0MzIwMDI0ODFFMiAv
KiBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzBCNzkxOTYxQzAyNEEyODAwMjQ4MUUyIC8qIEdl
bmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDcwQjc5MTg3MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JG
dW5jdGlvblByb3RvdHlwZS5jcHAgKi87IH07CkBAIC0yMDM4LDYgKzIwMzYsMTEgQEAKIAkJRTE4
RTNBNTkwREY5Mjc4QzAwRDkwQjM0IC8qIFZNLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxOEUzQTU3MERGOTI3OEMwMEQ5MEIzNCAvKiBWTS5jcHAg
Ki87IH07CiAJCUUzMThDQkMwMUI4QUVGNTEwMEEyOTI5RCAvKiBKU01vZHVsZU5hbWVzcGFjZU9i
amVjdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
MzE4Q0JCRTFCOEFFRjUxMDBBMjkyOUQgLyogSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuY3BwICov
OyB9OwogCQlFMzE4Q0JDMTFCOEFFRjUxMDBBMjkyOUQgLyogSlNNb2R1bGVOYW1lc3BhY2VPYmpl
Y3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMThD
QkJGMUI4QUVGNTEwMEEyOTI5RCAvKiBKU01vZHVsZU5hbWVzcGFjZU9iamVjdC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUUzMjhEQUU3MUQzOEQw
MDQwMDFBMjUyOSAvKiBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0QyNjQyNjFEMzhDMDQyMDAwQkUx
NzQgLyogQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwICovOyB9OworCQlFMzI4REFFODFE
MzhEMDA1MDAxQTI1MjkgLyogQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzRDI2NDI3MUQzOEMwNDIwMDBC
RTE3NCAvKiBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUUzMjhEQUU5MUQzOEQwMDUwMDFBMjUyOSAv
KiBCeXRlY29kZUdyYXBoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFM0QyNjQyODFEMzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNvZGVHcmFwaC5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUUzMjhEQUVBMUQz
OEQwMDUwMDFBMjUyOSAvKiBCeXRlY29kZU1vZGlmaWNhdGlvblNldC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0QyNjQyOTFEMzhDMDQyMDAwQkUx
NzQgLyogQnl0ZWNvZGVNb2RpZmljYXRpb25TZXQuY3BwICovOyB9OworCQlFMzI4REFFQjFEMzhE
MDA1MDAxQTI1MjkgLyogQnl0ZWNvZGVNb2RpZmljYXRpb25TZXQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzRDI2NDJBMUQzOEMwNDIwMDBCRTE3NCAv
KiBCeXRlY29kZU1vZGlmaWNhdGlvblNldC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCUUzMzYzN0E1MUI2MzIyMDIwMEVFMDg0MCAvKiBSZWZsZWN0
T2JqZWN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUzMzYzN0EzMUI2MzIyMDIwMEVFMDg0MCAvKiBSZWZsZWN0T2JqZWN0LmNwcCAqLzsgfTsKIAkJ
RTMzNjM3QTYxQjYzMjIwMjAwRUUwODQwIC8qIFJlZmxlY3RPYmplY3QuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMzYzN0E0MUI2MzIyMDIwMEVFMDg0
MCAvKiBSZWZsZWN0T2JqZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJRTMzQjNFMjYxQjdBQkQ3NTAwNDhEQjJFIC8qIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbk9iamVjdC5sdXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEUzM0IzRTI1MUI3QUJENzUwMDQ4REIyRSAvKiBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb25PYmplY3QubHV0LmggKi87IH07CkBAIC0yMDYyLDYgKzIwNjUsNyBAQAogCQlFMzc5
NEU3NTFCNzdFQjk3MDA1NTQzQUUgLyogTW9kdWxlQW5hbHl6ZXIuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM3OTRFNzMxQjc3RUI5NzAwNTU0M0FF
IC8qIE1vZHVsZUFuYWx5emVyLmNwcCAqLzsgfTsKIAkJRTM3OTRFNzYxQjc3RUI5NzAwNTU0M0FF
IC8qIE1vZHVsZUFuYWx5emVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFMzc5NEU3NDFCNzdFQjk3MDA1NTQzQUUgLyogTW9kdWxlQW5hbHl6ZXIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzk2M0NF
RTFCNzNGNzUwMDBFQjRDRTUgLyogTm9kZXNBbmFseXplTW9kdWxlLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOTYzQ0VDMUI3M0Y3NTAwMEVCNENF
NSAvKiBOb2Rlc0FuYWx5emVNb2R1bGUuY3BwICovOyB9OworCQlFMzlENDVGNTFEMzkwMDU2MDBC
M0IzNzcgLyogSW50ZXJwcmV0ZXJJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFMzlEOUQ4NDFEMzkwMDA2MDA2NjcyODIgLyogSW50ZXJwcmV0
ZXJJbmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJRTM5REE0QTYxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOURBNEE0MUI3RThC
N0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29yZC5jcHAgKi87IH07CiAJCUUzOURBNEE3MUI3RThC
N0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29yZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5REE0QTUxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxl
UmVjb3JkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJRTNEMjM5QzgxQjgyOUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxlRW52aXJvbm1lbnQuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNEMjM5QzYxQjgy
OUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxlRW52aXJvbm1lbnQuY3BwICovOyB9OwpAQCAtMzQ2NSw4
ICszNDY5LDYgQEAKIAkJNzA5RkI4NjUxQUUzMzVDNjAwMzlEMDY5IC8qIFdlYWtTZXRQcm90b3R5
cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2Vha1NldFByb3Rv
dHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcwOUZCODY2MUFFMzM1QzYw
MDM5RDA2OSAvKiBXZWFrU2V0UHJvdG90eXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdlYWtTZXRQcm90b3R5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NzBCMEE5RDAxQTlCNjYyMDAwMDEzMDZBIC8qIFJ1bnRpbWVGbGFncy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBSdW50aW1lRmxhZ3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJNzBCNzkxODMxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZyYW1lLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdlbmVyYXRvckZyYW1lLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNzBCNzkxODQxQzAyNDQzMjAwMjQ4MUUyIC8q
IEdlbmVyYXRvckZyYW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdlbmVy
YXRvckZyYW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcwQjc5MTg1MUMwMjQ0
MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3Iu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MEI3OTE4NjFDMDI0NDMyMDAyNDgx
RTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTcwQjc5MTg3MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JG
dW5jdGlvblByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC00MzE0LDEwICs0MzE2LDE2IEBACiAJCUUzNzk0RTczMUI3N0VCOTcwMDU1NDNBRSAv
KiBNb2R1bGVBbmFseXplci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBNb2R1bGVBbmFseXplci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNzk0
RTc0MUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFseXplci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBNb2R1bGVBbmFseXplci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlFMzk2M0NFQzFCNzNGNzUwMDBFQjRDRTUgLyogTm9kZXNBbmFseXplTW9kdWxlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5vZGVzQW5hbHl6ZU1vZHVs
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzOUQ5RDg0MUQzOTAwMDYwMDY2
NzI4MiAvKiBJbnRlcnByZXRlcklubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSW50ZXJwcmV0ZXJJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUUzOURBNEE0MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29yZC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU01vZHVsZVJlY29yZC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOURBNEE1MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVs
ZVJlY29yZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU01vZHVsZVJlY29y
ZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0QyMzlDNjFCODI5QzFDMDBCQkVG
NjcgLyogSlNNb2R1bGVFbnZpcm9ubWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBKU01vZHVsZUVudmlyb25tZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRTNEMjM5QzcxQjgyOUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxlRW52aXJvbm1lbnQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNNb2R1bGVFbnZpcm9ubWVudC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFM0QyNjQyNjFEMzhDMDQyMDAwQkUxNzQg
LyogQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlFM0QyNjQyNzFEMzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNvZGVH
ZW5lcmF0b3JpZmljYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnl0
ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
RTNEMjY0MjgxRDM4QzA0MjAwMEJFMTc0IC8qIEJ5dGVjb2RlR3JhcGguaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQnl0ZWNvZGVHcmFwaC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlFM0QyNjQyOTFEMzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNvZGVNb2RpZmljYXRp
b25TZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQnl0ZWNvZGVN
b2RpZmljYXRpb25TZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFM0QyNjQy
QTFEMzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNvZGVNb2RpZmljYXRpb25TZXQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnl0ZWNvZGVNb2RpZmljYXRpb25TZXQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNFRjg4NzIxQjY2REYyMzAwM0YyNkNCIC8qIEpTUHJv
cGVydHlOYW1lSXRlcmF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUUzRUY4ODczMUI2NkRGMjMwMDNGMjZDQiAvKiBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTUHJvcGVydHlOYW1lSXRlcmF0b3Iu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTQ5REMxNDkxMkVGMjYxQTAwMTg0QTFG
IC8qIFNvdXJjZVByb3ZpZGVyQ2FjaGVJdGVtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFNvdXJjZVByb3ZpZGVyQ2FjaGVJdGVtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC01MDM1LDYgKzUwNDMsNyBAQAogCQkxNDI5RDc3QTBFRDIwRDczMDBCODk2MTkgLyog
aW50ZXJwcmV0ZXIgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAor
CQkJCUUzOUQ5RDg0MUQzOTAwMDYwMDY2NzI4MiAvKiBJbnRlcnByZXRlcklubGluZXMuaCAqLywK
IAkJCQkwRjU1RjBGMTE0RDEwNjM2MDBBQzc2NDkgLyogQWJzdHJhY3RQQy5jcHAgKi8sCiAJCQkJ
MEY1NUYwRjIxNEQxMDYzNjAwQUM3NjQ5IC8qIEFic3RyYWN0UEMuaCAqLywKIAkJCQkxNDI5RDg1
QjBFRDIxOEU5MDBCODk2MTkgLyogQ0xvb3BTdGFjay5jcHAgKi8sCkBAIC01NzEzLDggKzU3MjIs
NiBAQAogCQkJCUY2OTJBODVEMDI1NTU5N0QwMUZGNjBGNyAvKiBGdW5jdGlvblByb3RvdHlwZS5o
ICovLAogCQkJCTYyRDJEMzhEMUFERjEwM0YwMDAyMDZDMSAvKiBGdW5jdGlvblJhcmVEYXRhLmNw
cCAqLywKIAkJCQk2MkQyRDM4RTFBREYxMDNGMDAwMjA2QzEgLyogRnVuY3Rpb25SYXJlRGF0YS5o
ICovLAotCQkJCTcwQjc5MTgzMUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGcmFtZS5jcHAg
Ki8sCi0JCQkJNzBCNzkxODQxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZyYW1lLmggKi8s
CiAJCQkJNzBCNzkxODUxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3Ry
dWN0b3IuY3BwICovLAogCQkJCTcwQjc5MTg2MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JG
dW5jdGlvbkNvbnN0cnVjdG9yLmggKi8sCiAJCQkJNzBCNzkxODcxQzAyNDQzMjAwMjQ4MUUyIC8q
IEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcCAqLywKQEAgLTY1OTYsNiArNjYwMywxMSBA
QAogCQk5NjlBMDc4RjBFRDFEM0FFMDBGMUY2ODEgLyogYnl0ZWNvZGUgKi8gPSB7CiAJCQlpc2Eg
PSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUUzRDI2NDI2MUQzOEMwNDIwMDBCRTE3
NCAvKiBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHAgKi8sCisJCQkJRTNEMjY0MjcxRDM4
QzA0MjAwMEJFMTc0IC8qIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmggKi8sCisJCQkJRTNE
MjY0MjgxRDM4QzA0MjAwMEJFMTc0IC8qIEJ5dGVjb2RlR3JhcGguaCAqLywKKwkJCQlFM0QyNjQy
OTFEMzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNvZGVNb2RpZmljYXRpb25TZXQuY3BwICovLAorCQkJ
CUUzRDI2NDJBMUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRlY29kZU1vZGlmaWNhdGlvblNldC5oICov
LAogCQkJCTUzNzBCNEYzMUJGMjVFQTIwMDVDNDBGQyAvKiBBZGFwdGl2ZUluZmVycmVkUHJvcGVy
dHlWYWx1ZVdhdGNocG9pbnRCYXNlLmNwcCAqLywKIAkJCQk1MzcwQjRGNDFCRjI1RUEyMDA1QzQw
RkMgLyogQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50QmFzZS5oICovLAog
CQkJCTBGODMzNUI0MTYzOUMxRTMwMDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmNw
cCAqLywKQEAgLTcxNTMsNiArNzE2NSw3IEBACiAJCQkJMEZFQzg1MkQxQkRBQ0RBQzAwODBGRjc0
IC8qIEIzUHJvY2VkdXJlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQzg1QkQxQkUx
NDYyRjAwODBGRjc0IC8qIEIzUmVkdWNlU3RyZW5ndGguaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
RUM4NTMxMUJEQUNEQUMwMDgwRkY3NCAvKiBCM1N0YWNrbWFwU3BlY2lhbC5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJRTMyOERBRTgxRDM4RDAwNTAwMUEyNTI5IC8qIEJ5dGVjb2RlR2VuZXJhdG9yaWZp
Y2F0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVDODUzNTFCREFDREFDMDA4MEZGNzQgLyog
QjNTbG90QmFzZVZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVDODUzNjFCREFDREFDMDA4
MEZGNzQgLyogQjNTdWNjZXNzb3JDb2xsZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVD
ODUzODFCREFDREFDMDA4MEZGNzQgLyogQjNTd2l0Y2hDYXNlLmggaW4gSGVhZGVycyAqLywKQEAg
LTc0MTUsNyArNzQyOCw2IEBACiAJCQkJQTczNzgxMEUxNzk5RUEyRTAwODE3NTMzIC8qIERGR05h
dHVyYWxMb29wcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZFQ0EzRUExMzJERUYxQzAwMkIyQUQ3
IC8qIERGR05vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRkI5MjFCMTZEMDJGMDEwMDU1QTVE
QiAvKiBERkdOb2RlQWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLywKLQkJCQk3MEI3OTE5MzFDMDI0
QTI4MDAyNDgxRTIgLyogR2VuZXJhdG9yRnJhbWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQTU4
MUJCMTUwRTk1MzAwMEI5QTJEOSAvKiBERkdOb2RlRmxhZ3MuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGMzAwQjc4MThBQjA1MTEwMEE2RDcyRSAvKiBERkdOb2RlT3JpZ2luLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRkE1ODFCQzE1MEU5NTMwMDBCOUEyRDkgLyogREZHTm9kZVR5cGUuaCBpbiBIZWFk
ZXJzICovLApAQCAtNzQzMCw2ICs3NDQyLDcgQEAKIAkJCQkwRkQ4QTMyNjE3RDUxRjU3MDBDQTJD
NDAgLyogREZHT1NSRW50cnlwb2ludENyZWF0aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGQzA5NzZBMTQ2OEE2RjcwMENGMjQ0MiAvKiBERkdPU1JFeGl0LmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjIzNUJFQzE3MTc4RTczMDA2OTBDN0YgLyogREZHT1NSRXhpdEJhc2UuaCBpbiBIZWFk
ZXJzICovLAorCQkJCUUzOUQ0NUY1MUQzOTAwNTYwMEIzQjM3NyAvKiBJbnRlcnByZXRlcklubGlu
ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRkI5MjFDMTZEMDJGMTEwMDU1QTVEQiAvKiBERkdP
U1JFeGl0Q29tcGlsYXRpb25JbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkMwOTc3MTE0Njkz
QUY1MDBDRjI0NDIgLyogREZHT1NSRXhpdENvbXBpbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RjcwMjVBQTE3MTRCMEZDMDAzODJDMEUgLyogREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmggaW4g
SGVhZGVycyAqLywKQEAgLTc2OTAsNiArNzcwMyw3IEBACiAJCQkJRTMzQjNFMjYxQjdBQkQ3NTAw
NDhEQjJFIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5sdXQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUE1MzI0MzhDMTg1NjgzMzUwMDJFRDY5MiAvKiBJbnNwZWN0b3JQcm90b2NvbE9i
amVjdHMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1NUQ5M0FDMTg1MTRGNzkwMDQwMERFRCAvKiBJ
bnNwZWN0b3JQcm90b2NvbFR5cGVzLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzI4REFFQjFEMzhE
MDA1MDAxQTI1MjkgLyogQnl0ZWNvZGVNb2RpZmljYXRpb25TZXQuaCBpbiBIZWFkZXJzICovLAog
CQkJCUE1MEU0QjYyMTg4MDlERDUwMDY4QTQ2RCAvKiBJbnNwZWN0b3JSdW50aW1lQWdlbnQuaCBp
biBIZWFkZXJzICovLAogCQkJCUE1OTNDRjgzMTg0MDM3NzEwMEJGQ0UyNyAvKiBJbnNwZWN0b3JW
YWx1ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTk2OUEwNzk5MEVEMUQzQUUwMEYxRjY4MSAvKiBJ
bnN0cnVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCkBAIC03ODIwLDYgKzc4MzQsNyBAQAogCQkJCUUz
M0Y1MDgxMUI4NDI5QTQwMDQxMzg1NiAvKiBKU0ludGVybmFsUHJvbWlzZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEY2MTgzMkExQzQ1QkYwNzAwNzI0NTBCIC8qIEFpckNDYWxsaW5nQ29udmVudGlv
bi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTMzRjUwNzkxQjg0MjI1NzAwNDEzODU2IC8qIEpTSW50
ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzMjhEQUU5MUQz
OEQwMDUwMDFBMjUyOSAvKiBCeXRlY29kZUdyYXBoLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMzNG
NTA4NzFCODQ0OUVGMDA0MTM4NTYgLyogSlNJbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvci5sdXQu
aCBpbiBIZWFkZXJzICovLAogCQkJCUUzM0Y1MDg1MUI4NDM3QTAwMDQxMzg1NiAvKiBKU0ludGVy
bmFsUHJvbWlzZURlZmVycmVkLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMzNGNTA3NTFCODQyMUMw
MDA0MTM4NTYgLyogSlNJbnRlcm5hbFByb21pc2VQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLApA
QCAtODc2Myw2ICs4Nzc4LDcgQEAKIAkJCQkxNDdGMzlCRDEwN0VDMzc2MDA0MjdBNDggLyogQXJn
TGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjc0M0JBQTE2Qjg4MjQ5MDA5RjkyNzcgLyog
QVJNNjREaXNhc3NlbWJsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODZEM0IyQzMxMDE1NkJE
RTAwMjg2NUU3IC8qIEFSTUFzc2VtYmxlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFMzI4REFF
NzFEMzhEMDA0MDAxQTI1MjkgLyogQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJNjVDMDI4NTAxNzE3OTVFMjAwMzUxRTM1IC8qIEFSTXY3RGlzYXNzZW1i
bGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTY1QzAyODVDMTcxNzk2NjgwMDM1MUUzNSAvKiBB
Uk12N0RPcGNvZGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY4MzM1QjcxNjM5QzFFNjAwMTQ0
M0I1IC8qIEFycmF5QWxsb2NhdGlvblByb2ZpbGUuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC05MDk3
LDYgKzkxMTMsNyBAQAogCQkJCTBGMjVGMUIxMTgxNjM1RjMwMDUyMkYzOSAvKiBGVExTbG93UGF0
aENhbGwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYzMzhERjExQkU5M0FEMTAwMTNDODhGIC8q
IEIzU3RhY2ttYXBWYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjI1RjFCMzE4MTYzNUYz
MDA1MjJGMzkgLyogRlRMU2xvd1BhdGhDYWxsS2V5LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUUz
MjhEQUVBMUQzOEQwMDUwMDFBMjUyOSAvKiBCeXRlY29kZU1vZGlmaWNhdGlvblNldC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk0MzE5REEwMzFDMUJFNDBBMDAxRDI2MEIgLyogQjNMb3dlck1hY3Jv
c0FmdGVyT3B0aW1pemF0aW9ucy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkVBMEExNjE3MDZC
QjkwMDBCQjcyMkMgLyogRlRMU3RhdGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyMzVCRTEx
NzE3OEUxQzAwNjkwQzdGIC8qIEZUTFRodW5rcy5jcHAgaW4gU291cmNlcyAqLywKQEAgLTk1MDQs
NyArOTUyMSw2IEBACiAJCQkJNzlFRTBCRkYxQjRBRkI4NTAwMDM4NUM5IC8qIFZhcmlhYmxlRW52
aXJvbm1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY2QzczNTAxQUM5Rjk5RjAwQkUxNjgy
IC8qIFZhcmlhYmxlV3JpdGVGaXJlRGV0YWlsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRTA1
MDJDMUFBOTA5NTYwMEQzM0IzMyAvKiBWYXJPZmZzZXQuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJ
NzBCNzkxOTIxQzAyNEEyMzAwMjQ4MUUyIC8qIEdlbmVyYXRvckZyYW1lLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTBGMjBDMjU5MUE4MDEzQUIwMERBMzIyOSAvKiBWaXJ0dWFsUmVnaXN0ZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJRTE4RTNBNTkwREY5Mjc4QzAwRDkwQjM0IC8qIFZNLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUZFNTkzMkE3MTgzQzVBMjYwMEExRUNDQyAvKiBWTUVudHJ5U2Nv
cGUuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YnVpbHRpbnMvR2VuZXJhdG9yUHJvdG90eXBlLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1
aWx0aW5zL0dlbmVyYXRvclByb3RvdHlwZS5qcwppbmRleCAzYzE0MDY4N2RmYzdlMDBlZmU5MWFl
ODBiMmFjNjc2ZmE5YmY0OGY0Li40OTlkYmQzOTJlODMxM2RjZGQ4NmVjOGMxNjA1NjlkN2Q2ZjU0
OWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvR2VuZXJhdG9y
UHJvdG90eXBlLmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9HZW5lcmF0
b3JQcm90b3R5cGUuanMKQEAgLTUxLDcgKzUxLDcgQEAgZnVuY3Rpb24gZ2VuZXJhdG9yUmVzdW1l
KGdlbmVyYXRvciwgc2VudFZhbHVlLCByZXN1bWVNb2RlKQogICAgIH0gZWxzZSB7CiAgICAgICAg
IHRyeSB7CiAgICAgICAgICAgICBnZW5lcmF0b3IuQGdlbmVyYXRvclN0YXRlID0gQEdlbmVyYXRv
clN0YXRlRXhlY3V0aW5nOwotICAgICAgICAgICAgdmFsdWUgPSBnZW5lcmF0b3IuQGdlbmVyYXRv
ck5leHQuQGNhbGwoZ2VuZXJhdG9yLkBnZW5lcmF0b3JUaGlzLCBnZW5lcmF0b3IsIHN0YXRlLCBz
ZW50VmFsdWUsIHJlc3VtZU1vZGUpOworICAgICAgICAgICAgdmFsdWUgPSBnZW5lcmF0b3IuQGdl
bmVyYXRvck5leHQuQGNhbGwoZ2VuZXJhdG9yLkBnZW5lcmF0b3JUaGlzLCBnZW5lcmF0b3IsIHN0
YXRlLCBzZW50VmFsdWUsIHJlc3VtZU1vZGUsIGdlbmVyYXRvci5AZ2VuZXJhdG9yRnJhbWUpOwog
ICAgICAgICAgICAgaWYgKGdlbmVyYXRvci5AZ2VuZXJhdG9yU3RhdGUgPT09IEBHZW5lcmF0b3JT
dGF0ZUV4ZWN1dGluZykgewogICAgICAgICAgICAgICAgIGdlbmVyYXRvci5AZ2VuZXJhdG9yU3Rh
dGUgPSBAR2VuZXJhdG9yU3RhdGVDb21wbGV0ZWQ7CiAgICAgICAgICAgICAgICAgZG9uZSA9IHRy
dWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVC
YXNpY0Jsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJh
c2ljQmxvY2suY3BwCmluZGV4IDdmMTdjMGVmMTBiNDMzZmFjOGY1OGNiM2I5Y2E1ZDRkMDE1YmJh
MDguLjI5OTA4MmRkZDFlYzdlY2ZmN2E2YzE5ODNjMWVkYWJkZTUzYmNjM2UgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suY3Bw
CkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiQnl0ZWNvZGVCYXNpY0Jsb2NrLmgiCiAKICNp
bmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJJbnRlcnByZXRlcklubGluZXMuaCIKICNp
bmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiUHJlY2lzZUp1bXBUYXJnZXRzLmgiCiAK
QEAgLTEwNSwxNSArMTA2LDIxIEBAIHN0YXRpYyBib29sIGlzSnVtcFRhcmdldChPcGNvZGVJRCBv
cGNvZGVJRCwgY29uc3QgVmVjdG9yPHVuc2lnbmVkLCAzMj4mIGp1bXBUYXJnCiAgICAgcmV0dXJu
IHN0ZDo6YmluYXJ5X3NlYXJjaChqdW1wVGFyZ2V0cy5iZWdpbigpLCBqdW1wVGFyZ2V0cy5lbmQo
KSwgYnl0ZWNvZGVPZmZzZXQpOwogfQogCi1zdGF0aWMgdm9pZCBsaW5rQmxvY2tzKEJ5dGVjb2Rl
QmFzaWNCbG9jayogcHJlZGVjZXNzb3IsIEJ5dGVjb2RlQmFzaWNCbG9jayogc3VjY2Vzc29yKQot
ewotICAgIHByZWRlY2Vzc29yLT5hZGRTdWNjZXNzb3Ioc3VjY2Vzc29yKTsKLX0KLQotdm9pZCBj
b21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2NrcyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgVmVjdG9yPHN0
ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9ja3MpCit0ZW1wbGF0
ZTx0eXBlbmFtZSBCbG9jaywgdHlwZW5hbWUgSW5zdHJ1Y3Rpb24+Cit2b2lkIEJ5dGVjb2RlQmFz
aWNCbG9jazo6Y29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3NJbnRlcm5hbChCbG9jayogY29kZUJs
b2NrLCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGluc3RydWN0aW9u
Q291bnQsIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mIGJhc2lj
QmxvY2tzKQogewogICAgIFZlY3Rvcjx1bnNpZ25lZCwgMzI+IGp1bXBUYXJnZXRzOwotICAgIGNv
bXB1dGVQcmVjaXNlSnVtcFRhcmdldHMoY29kZUJsb2NrLCBqdW1wVGFyZ2V0cyk7CisgICAgY29t
cHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhjb2RlQmxvY2ssIGluc3RydWN0aW9uc0JlZ2luLCBpbnN0
cnVjdGlvbkNvdW50LCBqdW1wVGFyZ2V0cyk7CisKKyAgICBhdXRvIGFwcGVuZEJsb2NrID0gWyZd
IChzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiYmIGJsb2NrKSB7CisgICAgICAg
IGJsb2NrLT5tX2luZGV4ID0gYmFzaWNCbG9ja3Muc2l6ZSgpOworICAgICAgICBiYXNpY0Jsb2Nr
cy5hcHBlbmQoV1RGTW92ZShibG9jaykpOworICAgIH07CisKKyAgICBhdXRvIGxpbmtCbG9ja3Mg
PSBbJl0gKEJ5dGVjb2RlQmFzaWNCbG9jayogZnJvbSwgQnl0ZWNvZGVCYXNpY0Jsb2NrKiB0bykg
eworICAgICAgICBmcm9tLT5hZGRTdWNjZXNzb3IodG8pOworICAgICAgICB0by0+YWRkUHJlZGVj
ZXNzb3IoZnJvbSk7CisgICAgfTsKIAogICAgIC8vIENyZWF0ZSB0aGUgZW50cnkgYW5kIGV4aXQg
YmFzaWMgYmxvY2tzLgogICAgIGJhc2ljQmxvY2tzLnJlc2VydmVDYXBhY2l0eShqdW1wVGFyZ2V0
cy5zaXplKCkgKyAyKTsKQEAgLTEyMiwxOSArMTI5LDE3IEBAIHZvaWQgY29tcHV0ZUJ5dGVjb2Rl
QmFzaWNCbG9ja3MoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8
Qnl0CiAgICAgYXV0byBmaXJzdEJsb2NrID0gc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZUJhc2lj
QmxvY2s+KDAsIDApOwogICAgIGxpbmtCbG9ja3MoZW50cnkuZ2V0KCksIGZpcnN0QmxvY2suZ2V0
KCkpOwogCi0gICAgYmFzaWNCbG9ja3MuYXBwZW5kKFdURk1vdmUoZW50cnkpKTsKKyAgICBhcHBl
bmRCbG9jayhXVEZNb3ZlKGVudHJ5KSk7CiAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBjdXJyZW50
ID0gZmlyc3RCbG9jay5nZXQoKTsKLSAgICBiYXNpY0Jsb2Nrcy5hcHBlbmQoV1RGTW92ZShmaXJz
dEJsb2NrKSk7CisgICAgYXBwZW5kQmxvY2soV1RGTW92ZShmaXJzdEJsb2NrKSk7CiAKICAgICBh
dXRvIGV4aXQgPSBzdGQ6Om1ha2VfdW5pcXVlPEJ5dGVjb2RlQmFzaWNCbG9jaz4oQnl0ZWNvZGVC
YXNpY0Jsb2NrOjpFeGl0QmxvY2spOwogCiAgICAgYm9vbCBuZXh0SW5zdHJ1Y3Rpb25Jc0xlYWRl
ciA9IGZhbHNlOwogCiAgICAgSW50ZXJwcmV0ZXIqIGludGVycHJldGVyID0gY29kZUJsb2NrLT52
bSgpLT5pbnRlcnByZXRlcjsKLSAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4gPSBj
b2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCk7Ci0gICAgdW5zaWduZWQgaW5zdHJ1Y3Rp
b25Db3VudCA9IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpOwogICAgIGZvciAodW5z
aWduZWQgYnl0ZWNvZGVPZmZzZXQgPSAwOyBieXRlY29kZU9mZnNldCA8IGluc3RydWN0aW9uQ291
bnQ7KSB7Ci0gICAgICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0ZXItPmdldE9wY29k
ZUlEKGluc3RydWN0aW9uc0JlZ2luW2J5dGVjb2RlT2Zmc2V0XS51Lm9wY29kZSk7CisgICAgICAg
IE9wY29kZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGluc3RydWN0aW9u
c0JlZ2luW2J5dGVjb2RlT2Zmc2V0XSk7CiAgICAgICAgIHVuc2lnbmVkIG9wY29kZUxlbmd0aCA9
IG9wY29kZUxlbmd0aHNbb3Bjb2RlSURdOwogCiAgICAgICAgIGJvb2wgY3JlYXRlZEJsb2NrID0g
ZmFsc2U7CkBAIC0xNDIsNyArMTQ3LDcgQEAgdm9pZCBjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2Nr
cyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXQKICAgICAg
ICAgaWYgKGlzSnVtcFRhcmdldChvcGNvZGVJRCwganVtcFRhcmdldHMsIGJ5dGVjb2RlT2Zmc2V0
KSB8fCBuZXh0SW5zdHJ1Y3Rpb25Jc0xlYWRlcikgewogICAgICAgICAgICAgYXV0byBuZXdCbG9j
ayA9IHN0ZDo6bWFrZV91bmlxdWU8Qnl0ZWNvZGVCYXNpY0Jsb2NrPihieXRlY29kZU9mZnNldCwg
b3Bjb2RlTGVuZ3RoKTsKICAgICAgICAgICAgIGN1cnJlbnQgPSBuZXdCbG9jay5nZXQoKTsKLSAg
ICAgICAgICAgIGJhc2ljQmxvY2tzLmFwcGVuZChXVEZNb3ZlKG5ld0Jsb2NrKSk7CisgICAgICAg
ICAgICBhcHBlbmRCbG9jayhXVEZNb3ZlKG5ld0Jsb2NrKSk7CiAgICAgICAgICAgICBjcmVhdGVk
QmxvY2sgPSB0cnVlOwogICAgICAgICAgICAgbmV4dEluc3RydWN0aW9uSXNMZWFkZXIgPSBmYWxz
ZTsKICAgICAgICAgICAgIGJ5dGVjb2RlT2Zmc2V0ICs9IG9wY29kZUxlbmd0aDsKQEAgLTE2OSw4
ICsxNzQsNyBAQCB2b2lkIGNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzKENvZGVCbG9jayogY29k
ZUJsb2NrLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dAogCiAgICAgICAgIGJvb2wgZmFsbHNU
aHJvdWdoID0gdHJ1ZTsgCiAgICAgICAgIGZvciAodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQgPSBi
bG9jay0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKTsgYnl0ZWNvZGVPZmZzZXQgPCBibG9jay0+bGVh
ZGVyQnl0ZWNvZGVPZmZzZXQoKSArIGJsb2NrLT50b3RhbEJ5dGVjb2RlTGVuZ3RoKCk7KSB7Ci0g
ICAgICAgICAgICBjb25zdCBJbnN0cnVjdGlvbiYgY3VycmVudEluc3RydWN0aW9uID0gaW5zdHJ1
Y3Rpb25zQmVnaW5bYnl0ZWNvZGVPZmZzZXRdOwotICAgICAgICAgICAgT3Bjb2RlSUQgb3Bjb2Rl
SUQgPSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoY3VycmVudEluc3RydWN0aW9uLnUub3Bjb2Rl
KTsKKyAgICAgICAgICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0ZXItPmdldE9wY29k
ZUlEKGluc3RydWN0aW9uc0JlZ2luW2J5dGVjb2RlT2Zmc2V0XSk7CiAgICAgICAgICAgICB1bnNp
Z25lZCBvcGNvZGVMZW5ndGggPSBvcGNvZGVMZW5ndGhzW29wY29kZUlEXTsKICAgICAgICAgICAg
IC8vIElmIHdlIGZvdW5kIGEgdGVybWluYWwgYnl0ZWNvZGUsIGxpbmsgdG8gdGhlIGV4aXQgYmxv
Y2suCiAgICAgICAgICAgICBpZiAoaXNUZXJtaW5hbChvcGNvZGVJRCkpIHsKQEAgLTE4NSw3ICsx
ODksNyBAQCB2b2lkIGNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzKENvZGVCbG9jayogY29kZUJs
b2NrLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dAogICAgICAgICAgICAgLy8gYmxvY2sgYmVj
YXVzZSB0aGUgZmluYWxseSBibG9jayB3aWxsIGNyZWF0ZSBpdHMgb3duIGNhdGNoLCB3aGljaCB3
aWxsIGdlbmVyYXRlIGEgSGFuZGxlckluZm8uCiAgICAgICAgICAgICBpZiAoaXNUaHJvdyhvcGNv
ZGVJRCkpIHsKICAgICAgICAgICAgICAgICBBU1NFUlQoYnl0ZWNvZGVPZmZzZXQgKyBvcGNvZGVM
ZW5ndGggPT0gYmxvY2stPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCkgKyBibG9jay0+dG90YWxCeXRl
Y29kZUxlbmd0aCgpKTsKLSAgICAgICAgICAgICAgICBIYW5kbGVySW5mbyogaGFuZGxlciA9IGNv
ZGVCbG9jay0+aGFuZGxlckZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KTsKKyAgICAg
ICAgICAgICAgICBhdXRvKiBoYW5kbGVyID0gY29kZUJsb2NrLT5oYW5kbGVyRm9yQnl0ZWNvZGVP
ZmZzZXQoYnl0ZWNvZGVPZmZzZXQpOwogICAgICAgICAgICAgICAgIGZhbGxzVGhyb3VnaCA9IGZh
bHNlOwogICAgICAgICAgICAgICAgIGlmICghaGFuZGxlcikgewogICAgICAgICAgICAgICAgICAg
ICBsaW5rQmxvY2tzKGJsb2NrLCBleGl0LmdldCgpKTsKQEAgLTIwNSw3ICsyMDksNyBAQCB2b2lk
IGNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzKENvZGVCbG9jayogY29kZUJsb2NrLCBWZWN0b3I8
c3RkOjp1bmlxdWVfcHRyPEJ5dAogICAgICAgICAgICAgaWYgKGlzQnJhbmNoKG9wY29kZUlEKSkg
ewogICAgICAgICAgICAgICAgIEFTU0VSVChieXRlY29kZU9mZnNldCArIG9wY29kZUxlbmd0aCA9
PSBibG9jay0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKSArIGJsb2NrLT50b3RhbEJ5dGVjb2RlTGVu
Z3RoKCkpOwogICAgICAgICAgICAgICAgIFZlY3Rvcjx1bnNpZ25lZCwgMT4gYnl0ZWNvZGVPZmZz
ZXRzSnVtcGVkVG87Ci0gICAgICAgICAgICAgICAgZmluZEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVP
ZmZzZXQoY29kZUJsb2NrLCBieXRlY29kZU9mZnNldCwgYnl0ZWNvZGVPZmZzZXRzSnVtcGVkVG8p
OworICAgICAgICAgICAgICAgIGZpbmRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVC
bG9jaywgaW5zdHJ1Y3Rpb25zQmVnaW4sIGJ5dGVjb2RlT2Zmc2V0LCBieXRlY29kZU9mZnNldHNK
dW1wZWRUbyk7CiAKICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYmFz
aWNCbG9ja3Muc2l6ZSgpOyBpKyspIHsKICAgICAgICAgICAgICAgICAgICAgQnl0ZWNvZGVCYXNp
Y0Jsb2NrKiBvdGhlckJsb2NrID0gYmFzaWNCbG9ja3NbaV0uZ2V0KCk7CkBAIC0yMjksMTAgKzIz
MywyMCBAQCB2b2lkIGNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzKENvZGVCbG9jayogY29kZUJs
b2NrLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dAogICAgICAgICB9CiAgICAgfQogCi0gICAg
YmFzaWNCbG9ja3MuYXBwZW5kKFdURk1vdmUoZXhpdCkpOworICAgIGFwcGVuZEJsb2NrKFdURk1v
dmUoZXhpdCkpOwogICAgIAogICAgIGZvciAoYXV0byYgYmFzaWNCbG9jayA6IGJhc2ljQmxvY2tz
KQogICAgICAgICBiYXNpY0Jsb2NrLT5zaHJpbmtUb0ZpdCgpOwogfQogCit2b2lkIEJ5dGVjb2Rl
QmFzaWNCbG9jazo6Y29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MoQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25D
b3VudCwgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYgYmFzaWNC
bG9ja3MpCit7CisgICAgY29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3NJbnRlcm5hbChjb2RlQmxv
Y2ssIGluc3RydWN0aW9uc0JlZ2luLCBpbnN0cnVjdGlvbkNvdW50LCBiYXNpY0Jsb2Nrcyk7Cit9
CisKK3ZvaWQgQnl0ZWNvZGVCYXNpY0Jsb2NrOjpjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2NrcyhV
bmxpbmtlZENvZGVCbG9jayogY29kZUJsb2NrLCBVbmxpbmtlZEluc3RydWN0aW9uKiBpbnN0cnVj
dGlvbnNCZWdpbiwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCwgVmVjdG9yPHN0ZDo6dW5pcXVl
X3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9ja3MpCit7CisgICAgQnl0ZWNvZGVC
YXNpY0Jsb2NrOjpjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2Nrc0ludGVybmFsKGNvZGVCbG9jaywg
aW5zdHJ1Y3Rpb25zQmVnaW4sIGluc3RydWN0aW9uQ291bnQsIGJhc2ljQmxvY2tzKTsKK30KKwog
fSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmgKaW5kZXggYmQ3ZDNhZTliYTM0M2UxYjA3MTc5ZTk4ZjFl
ZTg5ZGE2NWJhN2UyMC4uMTE5YmU3YzY2MjMwYzk4ZWE5ZDdmYjI4MDhjYmYyOTRkYzFhMmE3NyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNC
bG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2lj
QmxvY2suaApAQCAtMzUsNiArMzUsOSBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIENvZGVC
bG9jazsKK2NsYXNzIFVubGlua2VkQ29kZUJsb2NrOworc3RydWN0IEluc3RydWN0aW9uOworc3Ry
dWN0IFVubGlua2VkSW5zdHJ1Y3Rpb247CiAKIGNsYXNzIEJ5dGVjb2RlQmFzaWNCbG9jayB7CiAg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC01MCwyOCArNTMsMzkgQEAgY2xhc3MgQnl0
ZWNvZGVCYXNpY0Jsb2NrIHsKICAgICB1bnNpZ25lZCBsZWFkZXJCeXRlY29kZU9mZnNldCgpIHsg
cmV0dXJuIG1fbGVhZGVyQnl0ZWNvZGVPZmZzZXQ7IH0KICAgICB1bnNpZ25lZCB0b3RhbEJ5dGVj
b2RlTGVuZ3RoKCkgeyByZXR1cm4gbV90b3RhbEJ5dGVjb2RlTGVuZ3RoOyB9CiAKLSAgICBWZWN0
b3I8dW5zaWduZWQ+JiBieXRlY29kZU9mZnNldHMoKSB7IHJldHVybiBtX2J5dGVjb2RlT2Zmc2V0
czsgfQotICAgIHZvaWQgYWRkQnl0ZWNvZGVMZW5ndGgodW5zaWduZWQpOworICAgIGNvbnN0IFZl
Y3Rvcjx1bnNpZ25lZD4mIGJ5dGVjb2RlT2Zmc2V0cygpIGNvbnN0IHsgcmV0dXJuIG1fYnl0ZWNv
ZGVPZmZzZXRzOyB9CiAKLSAgICBWZWN0b3I8Qnl0ZWNvZGVCYXNpY0Jsb2NrKj4mIHN1Y2Nlc3Nv
cnMoKSB7IHJldHVybiBtX3N1Y2Nlc3NvcnM7IH0KLSAgICB2b2lkIGFkZFN1Y2Nlc3NvcihCeXRl
Y29kZUJhc2ljQmxvY2sqIGJsb2NrKSB7IG1fc3VjY2Vzc29ycy5hcHBlbmQoYmxvY2spOyB9Cisg
ICAgY29uc3QgVmVjdG9yPEJ5dGVjb2RlQmFzaWNCbG9jayo+JiBzdWNjZXNzb3JzKCkgY29uc3Qg
eyByZXR1cm4gbV9zdWNjZXNzb3JzOyB9CisgICAgY29uc3QgVmVjdG9yPEJ5dGVjb2RlQmFzaWNC
bG9jayo+JiBwcmVkZWNlc3NvcnMoKSBjb25zdCB7IHJldHVybiBtX3ByZWRlY2Vzc29yczsgfQog
CiAgICAgRmFzdEJpdFZlY3RvciYgaW4oKSB7IHJldHVybiBtX2luOyB9CiAgICAgRmFzdEJpdFZl
Y3RvciYgb3V0KCkgeyByZXR1cm4gbV9vdXQ7IH0KIAorICAgIHVuc2lnbmVkIGluZGV4KCkgY29u
c3QgeyByZXR1cm4gbV9pbmRleDsgfQorCisgICAgc3RhdGljIHZvaWQgY29tcHV0ZUJ5dGVjb2Rl
QmFzaWNCbG9ja3MoQ29kZUJsb2NrKiwgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1
bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50LCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2Rl
QmFzaWNCbG9jaz4+Jik7CisgICAgc3RhdGljIHZvaWQgY29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9j
a3MoVW5saW5rZWRDb2RlQmxvY2sqLCBVbmxpbmtlZEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNC
ZWdpbiwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCwgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxC
eXRlY29kZUJhc2ljQmxvY2s+PiYpOworCiBwcml2YXRlOgorICAgIHRlbXBsYXRlPHR5cGVuYW1l
IEJsb2NrLCB0eXBlbmFtZSBJbnN0cnVjdGlvbj4gc3RhdGljIHZvaWQgY29tcHV0ZUJ5dGVjb2Rl
QmFzaWNCbG9ja3NJbnRlcm5hbChCbG9jayogY29kZUJsb2NrLCBJbnN0cnVjdGlvbiogaW5zdHJ1
Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQsIFZlY3RvcjxzdGQ6OnVuaXF1
ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mIGJhc2ljQmxvY2tzKTsKKworICAgIHZvaWQgYWRk
U3VjY2Vzc29yKEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2spIHsgbV9zdWNjZXNzb3JzLmFwcGVu
ZChibG9jayk7IH0KKyAgICB2b2lkIGFkZFByZWRlY2Vzc29yKEJ5dGVjb2RlQmFzaWNCbG9jayog
YmxvY2spIHsgbV9wcmVkZWNlc3NvcnMuYXBwZW5kKGJsb2NrKTsgfQorCisgICAgdm9pZCBhZGRC
eXRlY29kZUxlbmd0aCh1bnNpZ25lZCk7CisKICAgICB1bnNpZ25lZCBtX2xlYWRlckJ5dGVjb2Rl
T2Zmc2V0OwogICAgIHVuc2lnbmVkIG1fdG90YWxCeXRlY29kZUxlbmd0aDsKKyAgICB1bnNpZ25l
ZCBtX2luZGV4OwogCiAgICAgVmVjdG9yPHVuc2lnbmVkPiBtX2J5dGVjb2RlT2Zmc2V0czsKICAg
ICBWZWN0b3I8Qnl0ZWNvZGVCYXNpY0Jsb2NrKj4gbV9zdWNjZXNzb3JzOworICAgIFZlY3RvcjxC
eXRlY29kZUJhc2ljQmxvY2sqPiBtX3ByZWRlY2Vzc29yczsKIAogICAgIEZhc3RCaXRWZWN0b3Ig
bV9pbjsKICAgICBGYXN0Qml0VmVjdG9yIG1fb3V0OwogfTsKIAotdm9pZCBjb21wdXRlQnl0ZWNv
ZGVCYXNpY0Jsb2NrcyhDb2RlQmxvY2sqLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2Rl
QmFzaWNCbG9jaz4+Jik7Ci0KIGlubGluZSBCeXRlY29kZUJhc2ljQmxvY2s6OkJ5dGVjb2RlQmFz
aWNCbG9jayh1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgbGVuZ3RoKQogICAgIDogbV9sZWFkZXJC
eXRlY29kZU9mZnNldChzdGFydCkKICAgICAsIG1fdG90YWxCeXRlY29kZUxlbmd0aChsZW5ndGgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVHZW5l
cmF0b3JpZmljYXRpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVj
b2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZGRiZmU2NDRjODk1N2MxMjEw
MDAzY2JlMjcxNzRlMjJiYTQ3ZGVhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcApAQCAtMCwwICsx
LDc0MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBZdXN1a2UgU3V6dWtpIDx1dGF0YW5l
LnRlYUBnbWFpbC5jb20+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5oIgorCisjaW5jbHVkZSAiQnl0ZWNvZGVMaXZl
bmVzc0FuYWx5c2lzSW5saW5lcy5oIgorI2luY2x1ZGUgIkJ5dGVjb2RlTW9kaWZpY2F0aW9uU2V0
LmgiCisjaW5jbHVkZSAiQnl0ZWNvZGVVc2VEZWYuaCIKKyNpbmNsdWRlICJJZGVudGlmaWVySW5s
aW5lcy5oIgorI2luY2x1ZGUgIkludGVycHJldGVyLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlu
bGluZXMuaCIKKyNpbmNsdWRlICJKU0dlbmVyYXRvckZ1bmN0aW9uLmgiCisjaW5jbHVkZSAiU3Ry
b25nSW5saW5lcy5oIgorI2luY2x1ZGUgIlVubGlua2VkQ29kZUJsb2NrLmgiCisjaW5jbHVkZSA8
d3RmL09wdGlvbmFsLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitzdHJ1Y3QgWWllbGREYXRhIHsK
KyAgICBzaXplX3Qgc2F2ZVBvaW50OworICAgIHNpemVfdCBtZXJnZVBvaW50OworICAgIHNpemVf
dCByZXN1bWVQb2ludDsKKyAgICBGYXN0Qml0VmVjdG9yIGxpdmVuZXNzOworICAgIEZhc3RCaXRW
ZWN0b3IgcmVzdW1lZDsKKyAgICBGYXN0Qml0VmVjdG9yIHNhdmVkOworfTsKKworY2xhc3MgQnl0
ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24geworcHVibGljOgorICAgIHR5cGVkZWYgVmVjdG9yPFlp
ZWxkRGF0YT4gWWllbGRzOworCisgICAgQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24oVW5saW5r
ZWRDb2RlQmxvY2sqIGNvZGVCbG9jaywgVW5saW5rZWRDb2RlQmxvY2s6OlVucGFja2VkSW5zdHJ1
Y3Rpb25zJiBpbnN0cnVjdGlvbnMsIFN5bWJvbFRhYmxlKiBnZW5lcmF0b3JGcmFtZVN5bWJvbFRh
YmxlLCBpbnQgZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZUluZGV4KQorICAgICAgICA6IG1fZ3Jh
cGgoY29kZUJsb2NrLCBpbnN0cnVjdGlvbnMpCisgICAgICAgICwgbV9pbnNlcnRpb25TZXQobV9n
cmFwaCkKKyAgICAgICAgLCBtX2dlbmVyYXRvckZyYW1lU3ltYm9sVGFibGUoKmNvZGVCbG9jay0+
dm0oKSwgZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZSkKKyAgICAgICAgLCBtX2dlbmVyYXRvckZy
YW1lU3ltYm9sVGFibGVJbmRleChnZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlSW5kZXgpCisgICAg
eworICAgICAgICBtX21lcmdlQmxvY2tzLnJlc2l6ZShtX2dyYXBoLmJhc2ljQmxvY2tzKCkuc2l6
ZSgpKTsKKyAgICAgICAgbV9zYXZlQmxvY2tzLnJlc2l6ZShtX2dyYXBoLmJhc2ljQmxvY2tzKCku
c2l6ZSgpKTsKKworICAgICAgICBmb3IgKHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxv
Y2s+JiBibG9jayA6IG1fZ3JhcGguYmFzaWNCbG9ja3MoKSkgeworICAgICAgICAgICAgZm9yICh1
bnNpZ25lZCBieXRlY29kZU9mZnNldCA6IGJsb2NrLT5ieXRlY29kZU9mZnNldHMoKSkgeworICAg
ICAgICAgICAgICAgIGNvbnN0IFVubGlua2VkSW5zdHJ1Y3Rpb24qIHBjID0gJm1fZ3JhcGguaW5z
dHJ1Y3Rpb25zKClbYnl0ZWNvZGVPZmZzZXRdOworICAgICAgICAgICAgICAgIHN3aXRjaCAocGMt
PnUub3Bjb2RlKSB7CisgICAgICAgICAgICAgICAgY2FzZSBvcF9zYXZlOiB7CisgICAgICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9IHBjWzJdLnUuaW5kZXg7
CisgICAgICAgICAgICAgICAgICAgIGludCBvZmZzZXQgPSBwY1szXS51Lm9wZXJhbmQ7CisgICAg
ICAgICAgICAgICAgICAgIGlmIChsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPj0gbV95aWVsZHMuc2l6
ZSgpKQorICAgICAgICAgICAgICAgICAgICAgICAgbV95aWVsZHMucmVzaXplKGxpdmVDYWxsZWVM
b2NhbHNJbmRleCArIDEpOworICAgICAgICAgICAgICAgICAgICBtX3lpZWxkc1tsaXZlQ2FsbGVl
TG9jYWxzSW5kZXhdLnNhdmVQb2ludCA9IGJ5dGVjb2RlT2Zmc2V0OworICAgICAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBtZXJnZVBvaW50ID0gYnl0ZWNvZGVPZmZzZXQgKyBvZmZzZXQ7CisgICAg
ICAgICAgICAgICAgICAgIG1feWllbGRzW2xpdmVDYWxsZWVMb2NhbHNJbmRleF0ubWVyZ2VQb2lu
dCA9IG1lcmdlUG9pbnQ7CisgICAgICAgICAgICAgICAgICAgIG1fbWVyZ2VCbG9ja3Muc2V0KG1f
Z3JhcGguZmluZEJhc2ljQmxvY2tGb3JCeXRlY29kZU9mZnNldChtZXJnZVBvaW50KS0+aW5kZXgo
KSk7CisgICAgICAgICAgICAgICAgICAgIG1fc2F2ZUJsb2Nrcy5zZXQoYmxvY2stPmluZGV4KCkp
OworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgICAgICBjYXNlIG9wX3Jlc3VtZTogeworICAgICAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSBwY1syXS51LmluZGV4OworICAgICAgICAgICAgICAg
ICAgICBpZiAobGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID49IG1feWllbGRzLnNpemUoKSkKKyAgICAg
ICAgICAgICAgICAgICAgICAgIG1feWllbGRzLnJlc2l6ZShsaXZlQ2FsbGVlTG9jYWxzSW5kZXgg
KyAxKTsKKyAgICAgICAgICAgICAgICAgICAgbV95aWVsZHNbbGl2ZUNhbGxlZUxvY2Fsc0luZGV4
XS5yZXN1bWVQb2ludCA9IGJ5dGVjb2RlT2Zmc2V0OworICAgICAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICBib29sIGlzTWVyZ2VCbG9jayhCeXRlY29kZUJhc2ljQmxv
Y2sqIGJsb2NrKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fbWVyZ2VCbG9ja3MuZ2V0KGJsb2Nr
LT5pbmRleCgpKTsKKyAgICB9CisKKyAgICBib29sIGlzU2F2ZUJsb2NrKEJ5dGVjb2RlQmFzaWNC
bG9jayogYmxvY2spCisgICAgeworICAgICAgICByZXR1cm4gbV9zYXZlQmxvY2tzLmdldChibG9j
ay0+aW5kZXgoKSk7CisgICAgfQorCisgICAgc3RydWN0IFN0b3JhZ2UgeworICAgICAgICBJZGVu
dGlmaWVyIGlkZW50aWZpZXI7CisgICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXJJbmRleDsKKyAg
ICAgICAgU2NvcGVPZmZzZXQgc2NvcGVPZmZzZXQ7CisgICAgfTsKKworICAgIHZvaWQgcnVuKCk7
CisKKyAgICBCeXRlY29kZUdyYXBoPFVubGlua2VkQ29kZUJsb2NrPiYgZ3JhcGgoKSB7IHJldHVy
biBtX2dyYXBoOyB9CisKKyAgICBjb25zdCBZaWVsZHMmIHlpZWxkcygpIGNvbnN0CisgICAgewor
ICAgICAgICByZXR1cm4gbV95aWVsZHM7CisgICAgfQorCisgICAgWWllbGRzJiB5aWVsZHMoKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIG1feWllbGRzOworICAgIH0KKworcHJpdmF0ZToKKyAgICBT
dG9yYWdlIHN0b3JhZ2VGb3JHZW5lcmF0b3JMb2NhbCh1bnNpZ25lZCBpbmRleCkKKyAgICB7Cisg
ICAgICAgIC8vIFdlIGFzc2lnbiBhIHN5bWJvbCB0byBhIHJlZ2lzdGVyLiBUaGVyZSBpcyBvbmUt
b24tb25lIGNvcnJlc3BvbmRpbmcgYmV0d2VlbiBhIHJlZ2lzdGVyIGFuZCBhIHN5bWJvbC4KKyAg
ICAgICAgLy8gQnkgZG9pbmcgc28sIHdlIGFsbG9jYXRlIHRoZSBzcGVjaWZpYyBzdG9yYWdlIHRv
IHNhdmUgdGhlIGdpdmVuIHJlZ2lzdGVyLgorICAgICAgICAvLyBUaGlzIGFsbG93IHVzIG5vdCB0
byBzYXZlIGFsbCB0aGUgbGl2ZSByZWdpc3RlcnMgZXZlbiBpZiB0aGUgcmVnaXN0ZXJzIGFyZSBu
b3Qgb3ZlcndyaXR0ZW4gZnJvbSB0aGUgcHJldmlvdXMgcmVzdW1pbmcgdGltZS4KKyAgICAgICAg
Ly8gSXQgbWVhbnMgdGhhdCwgdGhlIHJlZ2lzdGVyIGNhbiBiZSByZXRyaWV2ZWQgZXZlbiBpZiB0
aGUgaW1tZWRpYXRlIHByZXZpb3VzIG9wX3NhdmUgZG9lcyBub3Qgc2F2ZSBpdC4KKworICAgICAg
ICBpZiAobV9zdG9yYWdlcy5zaXplKCkgPD0gaW5kZXgpCisgICAgICAgICAgICBtX3N0b3JhZ2Vz
LnJlc2l6ZShpbmRleCArIDEpOworICAgICAgICBpZiAoT3B0aW9uYWw8U3RvcmFnZT4gc3RvcmFn
ZSA9IG1fc3RvcmFnZXNbaW5kZXhdKQorICAgICAgICAgICAgcmV0dXJuICpzdG9yYWdlOworCisg
ICAgICAgIFVubGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBtX2dyYXBoLmNvZGVCbG9jaygp
OworICAgICAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIgPSBJZGVudGlmaWVyOjpmcm9tVWlkKFBy
aXZhdGVOYW1lKCkpOworICAgICAgICB1bnNpZ25lZCBpZGVudGlmaWVySW5kZXggPSBjb2RlQmxv
Y2stPm51bWJlck9mSWRlbnRpZmllcnMoKTsKKyAgICAgICAgY29kZUJsb2NrLT5hZGRJZGVudGlm
aWVyKGlkZW50aWZpZXIpOworICAgICAgICBTY29wZU9mZnNldCBzY29wZU9mZnNldCA9IG1fZ2Vu
ZXJhdG9yRnJhbWVTeW1ib2xUYWJsZS0+dGFrZU5leHRTY29wZU9mZnNldChOb0xvY2tpbmdOZWNl
c3NhcnkpOworICAgICAgICBtX2dlbmVyYXRvckZyYW1lU3ltYm9sVGFibGUtPnNldChOb0xvY2tp
bmdOZWNlc3NhcnksIGlkZW50aWZpZXIuaW1wbCgpLCBTeW1ib2xUYWJsZUVudHJ5KFZhck9mZnNl
dChzY29wZU9mZnNldCkpKTsKKworICAgICAgICBTdG9yYWdlIHN0b3JhZ2UgPSB7CisgICAgICAg
ICAgICBpZGVudGlmaWVyLAorICAgICAgICAgICAgaWRlbnRpZmllckluZGV4LAorICAgICAgICAg
ICAgc2NvcGVPZmZzZXQKKyAgICAgICAgfTsKKyAgICAgICAgbV9zdG9yYWdlc1tpbmRleF0gPSBz
dG9yYWdlOworICAgICAgICByZXR1cm4gc3RvcmFnZTsKKyAgICB9CisKKyAgICBCeXRlY29kZUdy
YXBoPFVubGlua2VkQ29kZUJsb2NrPiBtX2dyYXBoOworICAgIEJ5dGVjb2RlTW9kaWZpY2F0aW9u
U2V0IG1faW5zZXJ0aW9uU2V0OworICAgIFZlY3RvcjxPcHRpb25hbDxTdG9yYWdlPj4gbV9zdG9y
YWdlczsKKyAgICBZaWVsZHMgbV95aWVsZHM7CisgICAgRmFzdEJpdFZlY3RvciBtX21lcmdlQmxv
Y2tzOworICAgIEZhc3RCaXRWZWN0b3IgbV9zYXZlQmxvY2tzOworICAgIFN0cm9uZzxTeW1ib2xU
YWJsZT4gbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlOworICAgIGludCBtX2dlbmVyYXRvckZy
YW1lU3ltYm9sVGFibGVJbmRleDsKK307CisKK3RlbXBsYXRlPGNsYXNzIERlcml2ZWRBbmFseXNp
cz4KK2NsYXNzIExpdmVuZXNzQW5hbHlzaXMgeworcHVibGljOgorICAgIExpdmVuZXNzQW5hbHlz
aXMoQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24mIGdlbmVyYXRvcmlmaWNhdGlvbikKKyAgICAg
ICAgOiBtX2dlbmVyYXRvcmlmaWNhdGlvbihnZW5lcmF0b3JpZmljYXRpb24pCisgICAgeworICAg
IH0KKworICAgIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uJiBnZW5lcmF0b3JpZmljYXRpb24o
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZ2VuZXJhdG9yaWZpY2F0aW9uOworICAgIH0KKwor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEluc3RydWN0aW9uRnVuY3Rvcj4KKyAgICB2b2lkIHN0ZXBP
dmVySW5zdHJ1Y3Rpb25Gb3JMaXZlbmVzcyh1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgRmFzdEJp
dFZlY3RvciYgb3V0LCBJbnN0cnVjdGlvbkZ1bmN0b3IgaW5zdHJ1Y3Rpb25GdW5jdG9yKQorICAg
IHsKKyAgICAgICAgQnl0ZWNvZGVHcmFwaDxVbmxpbmtlZENvZGVCbG9jaz4mIGdyYXBoID0gZ2Vu
ZXJhdG9yaWZpY2F0aW9uKCkuZ3JhcGgoKTsKKyAgICAgICAgYXV0byYgaW5zdHJ1Y3Rpb25zID0g
Z3JhcGguaW5zdHJ1Y3Rpb25zKCk7CisgICAgICAgIFVubGlua2VkSW5zdHJ1Y3Rpb24qIGluc3Ry
dWN0aW9uID0gJmluc3RydWN0aW9uc1tieXRlY29kZU9mZnNldF07CisgICAgICAgIE9wY29kZUlE
IG9wY29kZUlEID0gaW5zdHJ1Y3Rpb24tPnUub3Bjb2RlOworCisgICAgICAgIGluc3RydWN0aW9u
RnVuY3RvcihieXRlY29kZU9mZnNldCwgb3Bjb2RlSUQsIGluc3RydWN0aW9uLCBvdXQpOworICAg
IH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEluc3RydWN0aW9uRnVuY3Rvcj4KKyAgICB2b2lk
IGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQnl0ZWNvZGVPZmZzZXQoQnl0ZWNvZGVCYXNpY0Jsb2Nr
KiBibG9jaywgdW5zaWduZWQgdGFyZ2V0T2Zmc2V0LCBGYXN0Qml0VmVjdG9yJiByZXN1bHQsIElu
c3RydWN0aW9uRnVuY3RvciBpbnN0cnVjdGlvbkZ1bmN0b3IpCisgICAgeworICAgICAgICBBU1NF
UlQoIWJsb2NrLT5pc0V4aXRCbG9jaygpKTsKKyAgICAgICAgQVNTRVJUKCFibG9jay0+aXNFbnRy
eUJsb2NrKCkpOworCisgICAgICAgIEZhc3RCaXRWZWN0b3Igb3V0ID0gYmxvY2stPm91dCgpOwor
CisgICAgICAgIGZvciAoaW50IGkgPSBibG9jay0+Ynl0ZWNvZGVPZmZzZXRzKCkuc2l6ZSgpIC0g
MTsgaSA+PSAwOyBpLS0pIHsKKyAgICAgICAgICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0ID0g
YmxvY2stPmJ5dGVjb2RlT2Zmc2V0cygpW2ldOworICAgICAgICAgICAgaWYgKHRhcmdldE9mZnNl
dCA+IGJ5dGVjb2RlT2Zmc2V0KQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
c3RlcE92ZXJJbnN0cnVjdGlvbkZvckxpdmVuZXNzKGJ5dGVjb2RlT2Zmc2V0LCBvdXQsIGluc3Ry
dWN0aW9uRnVuY3Rvcik7CisgICAgICAgIH0KKworICAgICAgICByZXN1bHQuc2V0KG91dCk7Cisg
ICAgfQorCisgICAgdm9pZCBjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJ5dGVjb2RlT2Zmc2V0KEJ5
dGVjb2RlQmFzaWNCbG9jayogYmxvY2ssIHVuc2lnbmVkIHRhcmdldE9mZnNldCwgRmFzdEJpdFZl
Y3RvciYgcmVzdWx0KQorICAgIHsKKyAgICAgICAgY29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCeXRl
Y29kZU9mZnNldChibG9jaywgdGFyZ2V0T2Zmc2V0LCByZXN1bHQsIFsmXSAodW5zaWduZWQgYnl0
ZWNvZGVPZmZzZXQsIE9wY29kZUlEIG9wY29kZUlELCBVbmxpbmtlZEluc3RydWN0aW9uKiBpbnN0
cnVjdGlvbiwgRmFzdEJpdFZlY3RvciYgb3V0KSB7CisgICAgICAgICAgICAvLyBUaGlzIGlzIHRo
ZSB1c2UgZnVuY3Rvciwgc28gd2Ugc2V0IHRoZSBiaXQuCisgICAgICAgICAgICBhdXRvIHVzZSA9
IFsmXSAodW5zaWduZWQgYml0SW5kZXgpIHsKKyAgICAgICAgICAgICAgICBvdXQuc2V0KGJpdElu
ZGV4KTsKKyAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIGRlZiBm
dW5jdG9yLCBzbyB3ZSBjbGVhciB0aGUgYml0LgorICAgICAgICAgICAgYXV0byBkZWYgPSBbJl0g
KHVuc2lnbmVkIGJpdEluZGV4KSB7CisgICAgICAgICAgICAgICAgb3V0LmNsZWFyKGJpdEluZGV4
KTsKKyAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgIEJ5dGVjb2RlR3JhcGg8VW5saW5rZWRD
b2RlQmxvY2s+JiBncmFwaCA9IGdlbmVyYXRvcmlmaWNhdGlvbigpLmdyYXBoKCk7CisgICAgICAg
ICAgICBVbmxpbmtlZENvZGVCbG9jayogY29kZUJsb2NrID0gZ3JhcGguY29kZUJsb2NrKCk7CisK
KyAgICAgICAgICAgIHN0YXRpY19jYXN0PERlcml2ZWRBbmFseXNpcyo+KHRoaXMpLT5jb21wdXRl
TGl2ZW5lc3NEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoCisgICAgICAgICAgICAgICAgY29kZUJsb2Nr
LCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb24sIG91dCwKKyAgICAgICAgICAgICAgICBbJl0gKFVubGlu
a2VkQ29kZUJsb2NrKiwgVW5saW5rZWRJbnN0cnVjdGlvbiosIE9wY29kZUlELCBpbnQgb3BlcmFu
ZCkgeworICAgICAgICAgICAgICAgICAgICBpZiAoaXNWYWxpZFJlZ2lzdGVyRm9yTGl2ZW5lc3Mo
b3BlcmFuZCkpCisgICAgICAgICAgICAgICAgICAgICAgICBkZWYoVmlydHVhbFJlZ2lzdGVyKG9w
ZXJhbmQpLnRvTG9jYWwoKSk7CisgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIHN0
YXRpY19jYXN0PERlcml2ZWRBbmFseXNpcyo+KHRoaXMpLT5jb21wdXRlTGl2ZW5lc3NVc2VzRm9y
Qnl0ZWNvZGVPZmZzZXQoCisgICAgICAgICAgICAgICAgY29kZUJsb2NrLCBvcGNvZGVJRCwgaW5z
dHJ1Y3Rpb24sIG91dCwKKyAgICAgICAgICAgICAgICBbJl0gKFVubGlua2VkQ29kZUJsb2NrKiwg
VW5saW5rZWRJbnN0cnVjdGlvbiosIE9wY29kZUlELCBpbnQgb3BlcmFuZCkgeworICAgICAgICAg
ICAgICAgICAgICBpZiAoaXNWYWxpZFJlZ2lzdGVyRm9yTGl2ZW5lc3Mob3BlcmFuZCkpCisgICAg
ICAgICAgICAgICAgICAgICAgICB1c2UoVmlydHVhbFJlZ2lzdGVyKG9wZXJhbmQpLnRvTG9jYWwo
KSk7CisgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIC8vIElmIHdlIGhhdmUgYW4g
ZXhjZXB0aW9uIGhhbmRsZXIsIHdlIHdhbnQgdGhlIGxpdmUtaW4gdmFyaWFibGVzIG9mIHRoZQor
ICAgICAgICAgICAgLy8gZXhjZXB0aW9uIGhhbmRsZXIgYmxvY2sgdG8gYmUgaW5jbHVkZWQgaW4g
dGhlIGxpdmUtaW4gb2YgdGhpcyBwYXJ0aWN1bGFyIGJ5dGVjb2RlLgorICAgICAgICAgICAgaWYg
KFVubGlua2VkSGFuZGxlckluZm8qIGhhbmRsZXIgPSBjb2RlQmxvY2stPmhhbmRsZXJGb3JCeXRl
Y29kZU9mZnNldChieXRlY29kZU9mZnNldCkpIHsKKyAgICAgICAgICAgICAgICBCeXRlY29kZUJh
c2ljQmxvY2sqIGhhbmRsZXJCbG9jayA9IGdyYXBoLmZpbmRCYXNpY0Jsb2NrV2l0aExlYWRlck9m
ZnNldChoYW5kbGVyLT50YXJnZXQpOworICAgICAgICAgICAgICAgIEFTU0VSVChoYW5kbGVyQmxv
Y2spOworICAgICAgICAgICAgICAgIGhhbmRsZXJCbG9jay0+aW4oKS5mb3JFYWNoU2V0Qml0KHVz
ZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0pOworICAgIH0KKworICAgIHZvaWQgY29tcHV0
ZUxvY2FsTGl2ZW5lc3NGb3JCbG9jayhCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrKQorICAgIHsK
KyAgICAgICAgaWYgKGJsb2NrLT5pc0V4aXRCbG9jaygpIHx8IGJsb2NrLT5pc0VudHJ5QmxvY2so
KSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgY29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JC
eXRlY29kZU9mZnNldChibG9jaywgYmxvY2stPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCksIGJsb2Nr
LT5pbigpKTsKKyAgICB9CisKKyAgICBGYXN0Qml0VmVjdG9yIGdldExpdmVuZXNzSW5mb0F0Qnl0
ZWNvZGVPZmZzZXQodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpCisgICAgeworICAgICAgICBCeXRl
Y29kZUJhc2ljQmxvY2sqIGJsb2NrID0gZ2VuZXJhdG9yaWZpY2F0aW9uKCkuZ3JhcGgoKS5maW5k
QmFzaWNCbG9ja0ZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KTsKKyAgICAgICAgQVNT
RVJUKGJsb2NrKTsKKyAgICAgICAgQVNTRVJUKCFibG9jay0+aXNFbnRyeUJsb2NrKCkpOworICAg
ICAgICBBU1NFUlQoIWJsb2NrLT5pc0V4aXRCbG9jaygpKTsKKyAgICAgICAgRmFzdEJpdFZlY3Rv
ciBvdXQ7CisgICAgICAgIG91dC5yZXNpemUoYmxvY2stPm91dCgpLm51bUJpdHMoKSk7CisgICAg
ICAgIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQnl0ZWNvZGVPZmZzZXQoYmxvY2ssIGJ5dGVjb2Rl
T2Zmc2V0LCBvdXQpOworICAgICAgICByZXR1cm4gb3V0OworICAgIH0KKworcHJvdGVjdGVkOgor
ICAgIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uJiBtX2dlbmVyYXRvcmlmaWNhdGlvbjsKK307
CisKK2NsYXNzIEdlbmVyYXRvckxpdmVuZXNzQW5hbHlzaXMgOiBwdWJsaWMgTGl2ZW5lc3NBbmFs
eXNpczxHZW5lcmF0b3JMaXZlbmVzc0FuYWx5c2lzPiB7CitwdWJsaWM6CisgICAgR2VuZXJhdG9y
TGl2ZW5lc3NBbmFseXNpcyhCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbiYgZ2VuZXJhdG9yaWZp
Y2F0aW9uKQorICAgICAgICA6IExpdmVuZXNzQW5hbHlzaXMoZ2VuZXJhdG9yaWZpY2F0aW9uKQor
ICAgIHsKKyAgICB9CisKKyAgICAvLyBTcGVjaWFsaXplZCBpbnN0cnVjdGlvbiBoYW5kbGVycy4K
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgorICAgIHZvaWQgY29tcHV0ZUxpdmVuZXNz
RGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KFVubGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2ssIE9wY29k
ZUlEIG9wY29kZUlELCBVbmxpbmtlZEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgRmFzdEJpdFZl
Y3RvciYgb3V0LCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQorICAgIHsKKyAgICAgICAgY29tcHV0
ZURlZnNGb3JCeXRlY29kZU9mZnNldChjb2RlQmxvY2ssIG9wY29kZUlELCBpbnN0cnVjdGlvbiwg
ZnVuY3Rvcik7CisKKyAgICAgICAgc3dpdGNoIChvcGNvZGVJRCkgeworICAgICAgICBjYXNlIG9w
X3NhdmU6CisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgY2FzZSBvcF9yZXN1bWU6IHsK
KyAgICAgICAgICAgIC8vIHJlc3VtZSBkZWZpbmVzIGFsbCB0aGUgcmVnaXN0ZXJzLgorICAgICAg
ICAgICAgb3V0LmNsZWFyQWxsKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwor
ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQor
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KKyAgICB2b2lkIGNvbXB1dGVMaXZlbmVz
c1VzZXNGb3JCeXRlY29kZU9mZnNldChVbmxpbmtlZENvZGVCbG9jayogY29kZUJsb2NrLCBPcGNv
ZGVJRCBvcGNvZGVJRCwgVW5saW5rZWRJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIEZhc3RCaXRW
ZWN0b3ImLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQorICAgIHsKKyAgICAgICAgY29tcHV0ZVVz
ZXNGb3JCeXRlY29kZU9mZnNldChjb2RlQmxvY2ssIG9wY29kZUlELCBpbnN0cnVjdGlvbiwgZnVu
Y3Rvcik7CisKKyAgICAgICAgc3dpdGNoIChvcGNvZGVJRCkgeworICAgICAgICBjYXNlIG9wX3Nh
dmU6CisgICAgICAgIGNhc2Ugb3BfcmVzdW1lOiB7CisgICAgICAgICAgICBmdW5jdG9yKGNvZGVC
bG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBpbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQgcnVuKCkKKyAgICB7
CisgICAgICAgIC8vIFBlcmZvcm0gbW9kaWZpZWQgbGl2ZW5lc3MgYW5hbHlzaXMgdG8gZGV0ZXJt
aW5lIHdoaWNoIGxvY2FscyBhcmUgbGl2ZSBhdCB0aGUgbWVyZ2UgcG9pbnRzLgorICAgICAgICAv
LyBUaGlzIHByb2R1Y2VzIHRoZSBjb25zZXJ2YXRpdmUgcmVzdWx0cyBmb3IgdGhlIHF1ZXN0aW9u
LCAid2hpY2ggdmFyaWFibGVzIHNob3VsZCBiZSBzYXZlZCBhbmQgcmVzdW1lZD8iLgorCisgICAg
ICAgIEJ5dGVjb2RlR3JhcGg8VW5saW5rZWRDb2RlQmxvY2s+JiBncmFwaCA9IGdlbmVyYXRvcmlm
aWNhdGlvbigpLmdyYXBoKCk7CisgICAgICAgIFVubGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2sg
PSBncmFwaC5jb2RlQmxvY2soKTsKKyAgICAgICAgdW5zaWduZWQgbnVtYmVyT2ZWYXJpYWJsZXMg
PSBjb2RlQmxvY2stPm1fbnVtQ2FsbGVlTG9jYWxzOworICAgICAgICBmb3IgKHN0ZDo6dW5pcXVl
X3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+JiBibG9jayA6IGdyYXBoLmJhc2ljQmxvY2tzKCkpIHsK
KyAgICAgICAgICAgIGJsb2NrLT5pbigpLnJlc2l6ZShudW1iZXJPZlZhcmlhYmxlcyk7CisgICAg
ICAgICAgICBibG9jay0+b3V0KCkucmVzaXplKG51bWJlck9mVmFyaWFibGVzKTsKKyAgICAgICAg
ICAgIGJsb2NrLT5pbigpLmNsZWFyQWxsKCk7CisgICAgICAgICAgICBibG9jay0+b3V0KCkuY2xl
YXJBbGwoKTsKKyAgICAgICAgfQorCisgICAgICAgIGJvb2wgY2hhbmdlZDsKKyAgICAgICAgQnl0
ZWNvZGVCYXNpY0Jsb2NrKiBsYXN0QmxvY2sgPSBncmFwaC5iYXNpY0Jsb2NrcygpLmxhc3QoKS5n
ZXQoKTsKKyAgICAgICAgbGFzdEJsb2NrLT5pbigpLmNsZWFyQWxsKCk7CisgICAgICAgIGxhc3RC
bG9jay0+b3V0KCkuY2xlYXJBbGwoKTsKKyAgICAgICAgRmFzdEJpdFZlY3RvciBuZXdPdXQ7Cisg
ICAgICAgIG5ld091dC5yZXNpemUobGFzdEJsb2NrLT5vdXQoKS5udW1CaXRzKCkpOworICAgICAg
ICBkbyB7CisgICAgICAgICAgICBjaGFuZ2VkID0gZmFsc2U7CisgICAgICAgICAgICBmb3IgKHN0
ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+JiBibG9jayA6IGdyYXBoLmJhc2ljQmxv
Y2tzSW5SZXZlcnNlT3JkZXIoKSkgeworICAgICAgICAgICAgICAgIG5ld091dC5jbGVhckFsbCgp
OworICAgICAgICAgICAgICAgIGZvciAoQnl0ZWNvZGVCYXNpY0Jsb2NrKiBzdWNjZXNzb3IgOiBi
bG9jay0+c3VjY2Vzc29ycygpKQorICAgICAgICAgICAgICAgICAgICBuZXdPdXQubWVyZ2Uoc3Vj
Y2Vzc29yLT5pbigpKTsKKyAgICAgICAgICAgICAgICBib29sIG91dERpZENoYW5nZSA9IGJsb2Nr
LT5vdXQoKS5zZXRBbmRDaGVjayhuZXdPdXQpOworICAgICAgICAgICAgICAgIGNvbXB1dGVMb2Nh
bExpdmVuZXNzRm9yQmxvY2soYmxvY2suZ2V0KCkpOworICAgICAgICAgICAgICAgIGNoYW5nZWQg
fD0gb3V0RGlkQ2hhbmdlOworICAgICAgICAgICAgfQorICAgICAgICB9IHdoaWxlIChjaGFuZ2Vk
KTsKKworICAgICAgICBmb3IgKFlpZWxkRGF0YSYgZGF0YSA6IGdlbmVyYXRvcmlmaWNhdGlvbigp
LnlpZWxkcygpKQorICAgICAgICAgICAgZGF0YS5saXZlbmVzcyA9IGdldExpdmVuZXNzSW5mb0F0
Qnl0ZWNvZGVPZmZzZXQoZGF0YS5tZXJnZVBvaW50KTsKKyAgICB9Cit9OworCitjbGFzcyBTYXZl
ZFZhcmlhYmxlc0FuYWx5c2lzIHsKK3B1YmxpYzoKKyAgICBTYXZlZFZhcmlhYmxlc0FuYWx5c2lz
KEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uJiBnZW5lcmF0b3JpZmljYXRpb24pCisgICAgICAg
IDogbV9nZW5lcmF0b3JpZmljYXRpb24oZ2VuZXJhdG9yaWZpY2F0aW9uKQorICAgIHsKKyAgICB9
CisKKyAgICBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbiYgZ2VuZXJhdG9yaWZpY2F0aW9uKCkK
KyAgICB7CisgICAgICAgIHJldHVybiBtX2dlbmVyYXRvcmlmaWNhdGlvbjsKKyAgICB9CisKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBEZWZGdW5jdG9yPgorICAgIHZvaWQgc3RlcE92ZXJJbnN0cnVj
dGlvbkZvclNhdmVkVmFyaWFibGVzKEJ5dGVjb2RlQmFzaWNCbG9jayosIHVuc2lnbmVkIGJ5dGVj
b2RlT2Zmc2V0LCBGYXN0Qml0VmVjdG9yJiBpbiwgY29uc3QgRGVmRnVuY3RvciYgZGVmKQorICAg
IHsKKyAgICAgICAgQnl0ZWNvZGVHcmFwaDxVbmxpbmtlZENvZGVCbG9jaz4mIGdyYXBoID0gZ2Vu
ZXJhdG9yaWZpY2F0aW9uKCkuZ3JhcGgoKTsKKyAgICAgICAgYXV0byYgaW5zdHJ1Y3Rpb25zID0g
Z3JhcGguaW5zdHJ1Y3Rpb25zKCk7CisgICAgICAgIFVubGlua2VkSW5zdHJ1Y3Rpb24qIGluc3Ry
dWN0aW9uID0gJmluc3RydWN0aW9uc1tieXRlY29kZU9mZnNldF07CisgICAgICAgIE9wY29kZUlE
IG9wY29kZUlEID0gaW5zdHJ1Y3Rpb24tPnUub3Bjb2RlOworICAgICAgICBVbmxpbmtlZENvZGVC
bG9jayogY29kZUJsb2NrID0gZ3JhcGguY29kZUJsb2NrKCk7CisKKyAgICAgICAgLy8gb3BfcmVz
dW1lIGNsZWFycyBhbGwgdGhlIGRlZnMuCisgICAgICAgIGlmIChvcGNvZGVJRCA9PSBvcF9yZXN1
bWUpIHsKKyAgICAgICAgICAgIGluLmNsZWFyQWxsKCk7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKworICAgICAgICBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9j
aywgb3Bjb2RlSUQsIGluc3RydWN0aW9uLCBbJl0gKFVubGlua2VkQ29kZUJsb2NrKiwgVW5saW5r
ZWRJbnN0cnVjdGlvbiosIE9wY29kZUlELCBpbnQgb3BlcmFuZCkgeworICAgICAgICAgICAgaWYg
KGlzVmFsaWRSZWdpc3RlckZvckxpdmVuZXNzKG9wZXJhbmQpKQorICAgICAgICAgICAgICAgIGRl
ZihWaXJ0dWFsUmVnaXN0ZXIob3BlcmFuZCkudG9Mb2NhbCgpKTsKKyAgICAgICAgfSk7CisgICAg
fQorCisgICAgYm9vbCBjb21wdXRlTG9jYWxTYXZlZFZhcmlhYmxlc0ZvckJ5dGVjb2RlT2Zmc2V0
KEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2ssIHVuc2lnbmVkIHRhcmdldE9mZnNldCwgRmFzdEJp
dFZlY3RvciYgcmVzdWx0KQorICAgIHsKKyAgICAgICAgQVNTRVJUKCFibG9jay0+aXNFeGl0Qmxv
Y2soKSk7CisgICAgICAgIEFTU0VSVCghYmxvY2stPmlzRW50cnlCbG9jaygpKTsKKworICAgICAg
ICBGYXN0Qml0VmVjdG9yIGluID0gYmxvY2stPmluKCk7CisKKyAgICAgICAgZm9yICh1bnNpZ25l
ZCBieXRlY29kZU9mZnNldCA6IGJsb2NrLT5ieXRlY29kZU9mZnNldHMoKSkgeworICAgICAgICAg
ICAgaWYgKHRhcmdldE9mZnNldCA8PSBieXRlY29kZU9mZnNldCkKKyAgICAgICAgICAgICAgICBi
cmVhazsKKworICAgICAgICAgICAgc3RlcE92ZXJJbnN0cnVjdGlvbkZvclNhdmVkVmFyaWFibGVz
KAorICAgICAgICAgICAgICAgIGJsb2NrLCBieXRlY29kZU9mZnNldCwgaW4sCisgICAgICAgICAg
ICAgICAgWyZdICh1bnNpZ25lZCBiaXRJbmRleCkgeworICAgICAgICAgICAgICAgICAgICAvLyBU
aGlzIGlzIHRoZSBkZWYgZnVuY3Rvciwgc28gd2Ugc2V0IHRoZSBiaXQuCisgICAgICAgICAgICAg
ICAgICAgIGluLnNldChiaXRJbmRleCk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgIH0K
KworICAgICAgICByZXR1cm4gcmVzdWx0LnNldEFuZENoZWNrKGluKTsKKyAgICB9CisKKyAgICBi
b29sIGNvbXB1dGVMb2NhbFNhdmVkVmFyaWFibGVzRm9yQmxvY2soQnl0ZWNvZGVCYXNpY0Jsb2Nr
KiBibG9jaykKKyAgICB7CisgICAgICAgIGlmIChibG9jay0+aXNFeGl0QmxvY2soKSB8fCBibG9j
ay0+aXNFbnRyeUJsb2NrKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJl
dHVybiBjb21wdXRlTG9jYWxTYXZlZFZhcmlhYmxlc0ZvckJ5dGVjb2RlT2Zmc2V0KGJsb2NrLCBi
bG9jay0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKSArIGJsb2NrLT50b3RhbEJ5dGVjb2RlTGVuZ3Ro
KCksIGJsb2NrLT5vdXQoKSk7CisgICAgfQorCisgICAgRmFzdEJpdFZlY3RvciBnZXRTYXZlZFZh
cmlhYmxlc0luZm9BdEJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KQorICAg
IHsKKyAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jayA9IGdlbmVyYXRvcmlmaWNhdGlv
bigpLmdyYXBoKCkuZmluZEJhc2ljQmxvY2tGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNl
dCk7CisgICAgICAgIEFTU0VSVChibG9jayk7CisgICAgICAgIEFTU0VSVCghYmxvY2stPmlzRW50
cnlCbG9jaygpKTsKKyAgICAgICAgQVNTRVJUKCFibG9jay0+aXNFeGl0QmxvY2soKSk7CisgICAg
ICAgIEZhc3RCaXRWZWN0b3IgaW47CisgICAgICAgIGluLnJlc2l6ZShibG9jay0+aW4oKS5udW1C
aXRzKCkpOworICAgICAgICBjb21wdXRlTG9jYWxTYXZlZFZhcmlhYmxlc0ZvckJ5dGVjb2RlT2Zm
c2V0KGJsb2NrLCBieXRlY29kZU9mZnNldCwgaW4pOworICAgICAgICByZXR1cm4gaW47CisgICAg
fQorCisgICAgdm9pZCBydW4oKQorICAgIHsKKyAgICAgICAgLy8gSWYgd2Ugc2F2ZSBhbGwgdGhl
IHZhcmlhYmxlIHRoYXQgd2lsbCBiZSByZXN1bWVkLCBpdCdzIE9LLgorICAgICAgICAvLyBCdXQg
d2UgY2FuIGF2b2lkIHNvbWUgc2F2ZWQgdmFyaWFibGVzIHRoYXQgYXJlIG9ubHkgZGVmaW5lZCBi
eSB0aGUgcHJldmlvdXMgb3BfcmVzdW1lLgorICAgICAgICAvLworICAgICAgICAvLyBJbiB0aGlz
IHBoYXNlLCB3ZSBwZXJmb3JtIGZvcndhcmQgYW5hbHlzaXMgdG8gZXh0cmFjdCB3aGljaCB2YXJp
YWJsZXMgbmVlZCB0byBiZSBuZXdseSBzYXZlZCB3aGVuIGV4ZWN1dGluZyBvcF9zYXZlLgorICAg
ICAgICAvLyBXZSBjYWxjdWxhdGUgdGhlIHJlZ2lzdGVycyB0aGF0IGlzIGRlZmluZWQgaW4gbm9u
LW9wX3Jlc3VtZSBhbmQgY2FuIHJlYWNoIHRvIHRoZSBvcF9zYXZlLgorICAgICAgICAvLworICAg
ICAgICAvLyAgIG9wX3Jlc3VtZSwgZGVmaW5lIHIxCisgICAgICAgIC8vICAgLi4uCisgICAgICAg
IC8vICAgLi4uCisgICAgICAgIC8vICAgbm8tanVtcHMgJiBubyByMSBkZWZzLgorICAgICAgICAv
LyAgIC4uLgorICAgICAgICAvLyAgIG9wX3NhdmUgICMgSGVyZSwgaXQgaXMgbm90IG5lY2Vzc2Fy
eSB0byBzYXZlIHIxLgorICAgICAgICBCeXRlY29kZUdyYXBoPFVubGlua2VkQ29kZUJsb2NrPiYg
Z3JhcGggPSBnZW5lcmF0b3JpZmljYXRpb24oKS5ncmFwaCgpOworICAgICAgICBVbmxpbmtlZENv
ZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2sgPSBncmFwaC5jb2RlQmxvY2soKTsKKworICAgICAg
ICAvLyBXZSBjb25zaWRlciB0aGUgYmFzaWMgYmxvY2tzIHdpdGhpbiB0aGUgdHJ5IHJhbmdlIGFy
ZSBjb25zaWRlcmVkIGFzIHRoZSBpbXBsaWNpdCBwcmVkZWNlc3NvcnMgb2YgdGhlIGhhbmRsZXJz
LgorICAgICAgICAvLyBUaGUgZGVmcyBpbiB0aGVzZSBiYXNpYyBibG9ja3MgYXJlIGNhcnJpZWQg
dG8gdGhlIGV4Y2VwdGlvbiBoYW5kbGVyLiBBbmQgaWYgdGhlIG9wX3NhdmUgaXMgZXhlY3V0ZWQg
aW4gdGhlIGhhbmRsZXIsCisgICAgICAgIC8vIGNhcnJpZWQgZGVmcyBzaG91bGQgYmUgYWxzbyBj
b25zaWRlcmVkLgorICAgICAgICAvLworICAgICAgICAvLyBIZXJlLCB3ZSBhZGQgdGhlIHdob2xl
IGJhc2ljIGJsb2NrcyBhcyB0aGUgaW1wbGljaXQgcHJlZGVjZXNzb3JzIG9mIHRoZSBoYW5kbGVy
cyBmb3Igc2ltcGxpY2l0eS4KKyAgICAgICAgLy8gVGhpcyBpcyBhIGxpdHRsZSBiaXQgY29uc2Vy
dmF0aXZlOiB0aGUgdHJ5IHJhbmdlIG1heSBub3QgY292ZXIgYWxsIHRoZSBiYXNpYyBibG9jay4g
QnV0IHNpbmNlIHRoZSBvdXQgc2V0IHN0YXR1cyBhdAorICAgICAgICAvLyB0aGUgdGFpbCBvZiB0
aGUgYmFzaWMgYmxvY2sgaXMgYWx3YXlzIGxhcmdlciB0aGFuIHRoZSBvdXQgc2V0IHN0YXR1cyBp
biB0aGUgbWlkZGxlIG9mIHRoZSBiYXNpYyBibG9ja3MsIHRoaXMgZG9lcyBub3QKKyAgICAgICAg
Ly8gZmFpbCB0byBrZWVwIHRoZSB2YXJpYWJsZXMgdGhhdCBzaG91bGQgYmUgc2F2ZWQuCisgICAg
ICAgIC8vCisgICAgICAgIC8vIE9ubHkgdGhlIGV4Y2VwdGlvbiBpcyB0aGUgb3BfcmVzdW1lIGJs
b2NrOiBvcF9yZXN1bWUgY2xlYXJzIGFsbCB0aGUgZGVmcy4gQnV0IHNpbmNlIHRoZSByYW5nZSBi
ZXR3ZWVuIHRoZSBqdW1wIHRhcmdldAorICAgICAgICAvLyBmcm9tIHRoZSBnbG9iYWwgZGlzcGF0
Y2ggYW5kIG9wX3Jlc3VtZSBpcyBuZXZlciBjb3ZlcmVkIGJ5IHRoZSB0cnkgcmFuZ2UsIGl0IGlz
IG5vdCBhIHByb2JsZW0uCisgICAgICAgIFZlY3RvcjxPcHRpb25hbDxGYXN0Qml0VmVjdG9yPj4g
cG9zc2libGVQcmVkZWNlc3NvcnNGb3JIYW5kbGVyczsKKyAgICAgICAgcG9zc2libGVQcmVkZWNl
c3NvcnNGb3JIYW5kbGVycy5yZXNpemUoZ3JhcGguYmFzaWNCbG9ja3MoKS5zaXplKCkpOworICAg
ICAgICB7CisgICAgICAgICAgICBhdXRvJiBpbnN0cnVjdGlvbnMgPSBncmFwaC5pbnN0cnVjdGlv
bnMoKTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB1bmxpbmtlZENvZGVC
bG9jay0+bnVtYmVyT2ZFeGNlcHRpb25IYW5kbGVycygpOyArK2kpIHsKKyAgICAgICAgICAgICAg
ICBhdXRvJiBoYW5kbGVyID0gdW5saW5rZWRDb2RlQmxvY2stPmV4Y2VwdGlvbkhhbmRsZXIoaSk7
CisKKyAgICAgICAgICAgICAgICBGYXN0Qml0VmVjdG9yIHByZWRlY2Vzc29yczsKKyAgICAgICAg
ICAgICAgICBwcmVkZWNlc3NvcnMucmVzaXplKGdyYXBoLmJhc2ljQmxvY2tzKCkuc2l6ZSgpKTsK
KyAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0ID0gaGFuZGxlci5z
dGFydDsgYnl0ZWNvZGVPZmZzZXQgPCBoYW5kbGVyLmVuZDspIHsKKyAgICAgICAgICAgICAgICAg
ICAgVW5saW5rZWRJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSAmaW5zdHJ1Y3Rpb25zW2J5dGVj
b2RlT2Zmc2V0XTsKKyAgICAgICAgICAgICAgICAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnN0
cnVjdGlvbi0+dS5vcGNvZGU7CisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIG9wY29kZUxl
bmd0aCA9IG9wY29kZUxlbmd0aHNbb3Bjb2RlSURdOworCisgICAgICAgICAgICAgICAgICAgIEJ5
dGVjb2RlQmFzaWNCbG9jayogcG9zc2libGVQcmVkZWNlc3NvciA9IGdyYXBoLmZpbmRCYXNpY0Js
b2NrRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpOworICAgICAgICAgICAgICAgICAg
ICBSRUxFQVNFX0FTU0VSVChwb3NzaWJsZVByZWRlY2Vzc29yKTsKKyAgICAgICAgICAgICAgICAg
ICAgcHJlZGVjZXNzb3JzLnNldChwb3NzaWJsZVByZWRlY2Vzc29yLT5pbmRleCgpKTsKKworICAg
ICAgICAgICAgICAgICAgICBieXRlY29kZU9mZnNldCArPSBvcGNvZGVMZW5ndGg7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogaGFuZGxlckJs
b2NrID0gZ3JhcGguZmluZEJhc2ljQmxvY2tXaXRoTGVhZGVyT2Zmc2V0KGhhbmRsZXIudGFyZ2V0
KTsKKyAgICAgICAgICAgICAgICBwb3NzaWJsZVByZWRlY2Vzc29yc0ZvckhhbmRsZXJzW2hhbmRs
ZXJCbG9jay0+aW5kZXgoKV0gPSBXVEZNb3ZlKHByZWRlY2Vzc29ycyk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKworICAgICAgICB1bnNpZ25lZCBudW1iZXJPZlZhcmlhYmxlcyA9IHVubGlu
a2VkQ29kZUJsb2NrLT5tX251bUNhbGxlZUxvY2FsczsKKyAgICAgICAgZm9yIChzdGQ6OnVuaXF1
ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiYgYmxvY2sgOiBncmFwaC5iYXNpY0Jsb2NrcygpKSB7
CisgICAgICAgICAgICBibG9jay0+aW4oKS5yZXNpemUobnVtYmVyT2ZWYXJpYWJsZXMpOworICAg
ICAgICAgICAgYmxvY2stPm91dCgpLnJlc2l6ZShudW1iZXJPZlZhcmlhYmxlcyk7CisgICAgICAg
ICAgICBibG9jay0+aW4oKS5jbGVhckFsbCgpOworICAgICAgICAgICAgYmxvY2stPm91dCgpLmNs
ZWFyQWxsKCk7CisgICAgICAgIH0KKworICAgICAgICBib29sIGNoYW5nZWQ7CisgICAgICAgIEJ5
dGVjb2RlQmFzaWNCbG9jayogZmlyc3RCbG9jayA9IGdyYXBoLmJhc2ljQmxvY2tzKCkuZmlyc3Qo
KS5nZXQoKTsKKyAgICAgICAgRmFzdEJpdFZlY3RvciBuZXdJbjsKKyAgICAgICAgbmV3SW4ucmVz
aXplKGZpcnN0QmxvY2stPmluKCkubnVtQml0cygpKTsKKyAgICAgICAgZG8geworICAgICAgICAg
ICAgY2hhbmdlZCA9IGZhbHNlOworICAgICAgICAgICAgZm9yIChzdGQ6OnVuaXF1ZV9wdHI8Qnl0
ZWNvZGVCYXNpY0Jsb2NrPiYgYmxvY2sgOiBncmFwaC5iYXNpY0Jsb2NrcygpKSB7CisgICAgICAg
ICAgICAgICAgbmV3SW4uY2xlYXJBbGwoKTsKKyAgICAgICAgICAgICAgICBib29sIG1lcmdlQmxv
Y2sgPSBnZW5lcmF0b3JpZmljYXRpb24oKS5pc01lcmdlQmxvY2soYmxvY2suZ2V0KCkpOworICAg
ICAgICAgICAgICAgIGZvciAoQnl0ZWNvZGVCYXNpY0Jsb2NrKiBwcmVkZWNlc3NvciA6IGJsb2Nr
LT5wcmVkZWNlc3NvcnMoKSkgeworICAgICAgICAgICAgICAgICAgICAvLyBNZXJnZSB0aGUgb3V0
IHNldCBvZiB0aGUgaW5jb21pbmcgcHJlZGVjZXNzb3JzIHVubGVzcyB0aGUgY3VycmVudCBibG9j
ayBzdGFydHMKKyAgICAgICAgICAgICAgICAgICAgLy8gd2l0aCB0aGUgbWVyZ2UgcG9pbnQgYW5k
IHRoZSBwcmVkZWNlc3NvciBlbmRzIHdpdGggdGhlIHNhdmUgcG9pbnQuCisgICAgICAgICAgICAg
ICAgICAgIGlmICghKG1lcmdlQmxvY2sgJiYgZ2VuZXJhdG9yaWZpY2F0aW9uKCkuaXNTYXZlQmxv
Y2socHJlZGVjZXNzb3IpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ld0luLm1lcmdlKHBy
ZWRlY2Vzc29yLT5vdXQoKSk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAg
aWYgKGF1dG8mIG9wdGlvbmFsUHJlZGVjZXNzb3JTZXQgPSBwb3NzaWJsZVByZWRlY2Vzc29yc0Zv
ckhhbmRsZXJzW2Jsb2NrLT5pbmRleCgpXSkgeworICAgICAgICAgICAgICAgICAgICBvcHRpb25h
bFByZWRlY2Vzc29yU2V0LT5mb3JFYWNoU2V0Qml0KFsmXSAodW5zaWduZWQgYmxvY2tJbmRleCkg
eworICAgICAgICAgICAgICAgICAgICAgICAgbmV3SW4ubWVyZ2UoZ3JhcGguYmFzaWNCbG9ja3Mo
KVtibG9ja0luZGV4XS0+b3V0KCkpOworICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBibG9jay0+aW4oKS5zZXQobmV3SW4pOworICAg
ICAgICAgICAgICAgIGNoYW5nZWQgfD0gY29tcHV0ZUxvY2FsU2F2ZWRWYXJpYWJsZXNGb3JCbG9j
ayhibG9jay5nZXQoKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gd2hpbGUgKGNoYW5nZWQp
OworCisgICAgICAgIGZvciAoWWllbGREYXRhJiBkYXRhIDogZ2VuZXJhdG9yaWZpY2F0aW9uKCku
eWllbGRzKCkpIHsKKyAgICAgICAgICAgIGRhdGEuc2F2ZWQgPSBkYXRhLmxpdmVuZXNzOworICAg
ICAgICAgICAgZGF0YS5zYXZlZC5maWx0ZXIoZ2V0U2F2ZWRWYXJpYWJsZXNJbmZvQXRCeXRlY29k
ZU9mZnNldChkYXRhLnNhdmVQb2ludCkpOworICAgICAgICB9CisgICAgfQorCitwcml2YXRlOgor
ICAgIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uJiBtX2dlbmVyYXRvcmlmaWNhdGlvbjsKK307
CisKK2NsYXNzIFJlc3VtZWRWYXJpYWJsZXNBbmFseXNpcyA6IHB1YmxpYyBMaXZlbmVzc0FuYWx5
c2lzPFJlc3VtZWRWYXJpYWJsZXNBbmFseXNpcz4geworcHVibGljOgorICAgIFJlc3VtZWRWYXJp
YWJsZXNBbmFseXNpcyhCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbiYgZ2VuZXJhdG9yaWZpY2F0
aW9uKQorICAgICAgICA6IExpdmVuZXNzQW5hbHlzaXMoZ2VuZXJhdG9yaWZpY2F0aW9uKQorICAg
IHsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgorICAgIHZvaWQgY29t
cHV0ZUxpdmVuZXNzRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KFVubGlua2VkQ29kZUJsb2NrKiBjb2Rl
QmxvY2ssIE9wY29kZUlEIG9wY29kZUlELCBVbmxpbmtlZEluc3RydWN0aW9uKiBpbnN0cnVjdGlv
biwgRmFzdEJpdFZlY3RvciYgb3V0LCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQorICAgIHsKKyAg
ICAgICAgY29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChjb2RlQmxvY2ssIG9wY29kZUlELCBp
bnN0cnVjdGlvbiwgZnVuY3Rvcik7CisKKyAgICAgICAgc3dpdGNoIChvcGNvZGVJRCkgeworICAg
ICAgICBjYXNlIG9wX3NhdmU6CisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgY2FzZSBv
cF9yZXN1bWU6IHsKKyAgICAgICAgICAgIC8vIHJlc3VtZSBkZWZpbmVzIGFsbCB0aGUgcmVnaXN0
ZXJzLgorICAgICAgICAgICAgb3V0LmNsZWFyQWxsKCk7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KKyAgICB2b2lkIGNv
bXB1dGVMaXZlbmVzc1VzZXNGb3JCeXRlY29kZU9mZnNldChVbmxpbmtlZENvZGVCbG9jayogY29k
ZUJsb2NrLCBPcGNvZGVJRCBvcGNvZGVJRCwgVW5saW5rZWRJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rp
b24sIEZhc3RCaXRWZWN0b3ImLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQorICAgIHsKKyAgICAg
ICAgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldChjb2RlQmxvY2ssIG9wY29kZUlELCBpbnN0
cnVjdGlvbiwgZnVuY3Rvcik7CisKKyAgICAgICAgc3dpdGNoIChvcGNvZGVJRCkgeworICAgICAg
ICBjYXNlIG9wX3NhdmU6IHsKKyAgICAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVj
dGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CisKKyAgICAgICAgICAg
IC8vIExldCdzIGRlY2xhcmUgdGhlIHVzZXMgYmFzZWQgb24gdGhlIHNhdmVkIHZhcmlhYmxlcyBh
bmFseXNpcyBpbmZvcm1hdGlvbi4KKyAgICAgICAgICAgIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2Nh
bHNJbmRleCA9IGluc3RydWN0aW9uWzJdLnUuaW5kZXg7CisgICAgICAgICAgICBjb25zdCBZaWVs
ZERhdGEmIGRhdGEgPSBnZW5lcmF0b3JpZmljYXRpb24oKS55aWVsZHMoKVtsaXZlQ2FsbGVlTG9j
YWxzSW5kZXhdOworICAgICAgICAgICAgZGF0YS5zYXZlZC5mb3JFYWNoU2V0Qml0KFsmXShzaXpl
X3QgbG9jYWwpIHsKKyAgICAgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCA9IHZp
cnR1YWxSZWdpc3RlckZvckxvY2FsKGxvY2FsKTsKKyAgICAgICAgICAgICAgICBmdW5jdG9yKGNv
ZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBvcGVyYW5kLm9mZnNldCgpKTsKKyAgICAg
ICAgICAgIH0pOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgY2Fz
ZSBvcF9yZXN1bWU6IHsKKyAgICAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlv
biwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCBydW4oKQorICAgIHsKKyAgICAgICAgLy8gVGhl
IHJlc3VtZWQgdmFyaWFibGVzIGFuYWx5c2lzIGlzIGFsbW9zdCB0aGUgc2FtZSB0byB0aGUgZ2Vu
ZXJhdG9yaWZpY2F0aW9uJ3MgdXN1YWwgbGl2ZW5lc3MgYW5hbHlzaXMsCisgICAgICAgIC8vIGV4
Y2VwdCBmb3IgZHJvcHBpbmcgdGhlIGVkZ2VzIGJldHdlZW4gdGhlIHNhdmUgcG9pbnRzIGFuZCB0
aGUgbWVyZ2UgcG9pbnRzLgorCisgICAgICAgIEJ5dGVjb2RlR3JhcGg8VW5saW5rZWRDb2RlQmxv
Y2s+JiBncmFwaCA9IGdlbmVyYXRvcmlmaWNhdGlvbigpLmdyYXBoKCk7CisgICAgICAgIFVubGlu
a2VkQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jayA9IGdyYXBoLmNvZGVCbG9jaygpOworICAg
ICAgICB1bnNpZ25lZCBudW1iZXJPZlZhcmlhYmxlcyA9IHVubGlua2VkQ29kZUJsb2NrLT5tX251
bUNhbGxlZUxvY2FsczsKKyAgICAgICAgZm9yIChzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNp
Y0Jsb2NrPiYgYmxvY2sgOiBncmFwaC5iYXNpY0Jsb2NrcygpKSB7CisgICAgICAgICAgICBibG9j
ay0+aW4oKS5yZXNpemUobnVtYmVyT2ZWYXJpYWJsZXMpOworICAgICAgICAgICAgYmxvY2stPm91
dCgpLnJlc2l6ZShudW1iZXJPZlZhcmlhYmxlcyk7CisgICAgICAgICAgICBibG9jay0+aW4oKS5j
bGVhckFsbCgpOworICAgICAgICAgICAgYmxvY2stPm91dCgpLmNsZWFyQWxsKCk7CisgICAgICAg
IH0KKworICAgICAgICBib29sIGNoYW5nZWQ7CisgICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9jayog
bGFzdEJsb2NrID0gZ3JhcGguYmFzaWNCbG9ja3MoKS5sYXN0KCkuZ2V0KCk7CisgICAgICAgIGxh
c3RCbG9jay0+aW4oKS5jbGVhckFsbCgpOworICAgICAgICBsYXN0QmxvY2stPm91dCgpLmNsZWFy
QWxsKCk7CisgICAgICAgIEZhc3RCaXRWZWN0b3IgbmV3T3V0OworICAgICAgICBuZXdPdXQucmVz
aXplKGxhc3RCbG9jay0+b3V0KCkubnVtQml0cygpKTsKKyAgICAgICAgZG8geworICAgICAgICAg
ICAgY2hhbmdlZCA9IGZhbHNlOworICAgICAgICAgICAgZm9yIChzdGQ6OnVuaXF1ZV9wdHI8Qnl0
ZWNvZGVCYXNpY0Jsb2NrPiYgYmxvY2sgOiBncmFwaC5iYXNpY0Jsb2Nrc0luUmV2ZXJzZU9yZGVy
KCkpIHsKKyAgICAgICAgICAgICAgICBuZXdPdXQuY2xlYXJBbGwoKTsKKyAgICAgICAgICAgICAg
ICBib29sIHNhdmVCbG9jayA9IGdlbmVyYXRvcmlmaWNhdGlvbigpLmlzU2F2ZUJsb2NrKGJsb2Nr
LmdldCgpKTsKKyAgICAgICAgICAgICAgICBmb3IgKEJ5dGVjb2RlQmFzaWNCbG9jayogc3VjY2Vz
c29yIDogYmxvY2stPnN1Y2Nlc3NvcnMoKSkgeworICAgICAgICAgICAgICAgICAgICAvLyBEbyBu
b3QgaGFuZGxlIHRoZSBlZGdlcyBiZXR3ZWVuIHRoZSBzYXZlIHBvaW50cyBhbmQgdGhlIG1lcmdl
IHBvaW50cy4KKyAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIGN1cnJlbnQgYmxvY2sgaXMg
dGhlIHNhdmUgYmxvY2sgKHRoYXQgYnJhbmNoIGlzIG9wX3NhdmUpLAorICAgICAgICAgICAgICAg
ICAgICAvLyBhbmQgaWYgdGhlIHN1Y2Nlc3NvciBpcyB0aGUgYmxvY2sgdGhhdCBzdGFydHMgd2l0
aCB0aGUgbWVyZ2UgcG9pbnQsIHdlIGRyb3AgdGhpcyBlZGdlLgorICAgICAgICAgICAgICAgICAg
ICBpZiAoIShzYXZlQmxvY2sgJiYgZ2VuZXJhdG9yaWZpY2F0aW9uKCkuaXNNZXJnZUJsb2NrKHN1
Y2Nlc3NvcikpKQorICAgICAgICAgICAgICAgICAgICAgICAgbmV3T3V0Lm1lcmdlKHN1Y2Nlc3Nv
ci0+aW4oKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJvb2wgb3V0RGlk
Q2hhbmdlID0gYmxvY2stPm91dCgpLnNldEFuZENoZWNrKG5ld091dCk7CisgICAgICAgICAgICAg
ICAgY29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCbG9jayhibG9jay5nZXQoKSk7CisgICAgICAgICAg
ICAgICAgY2hhbmdlZCB8PSBvdXREaWRDaGFuZ2U7CisgICAgICAgICAgICB9CisgICAgICAgIH0g
d2hpbGUgKGNoYW5nZWQpOworCisgICAgICAgIGZvciAoWWllbGREYXRhJiBkYXRhIDogZ2VuZXJh
dG9yaWZpY2F0aW9uKCkueWllbGRzKCkpIHsKKyAgICAgICAgICAgIGRhdGEucmVzdW1lZCA9IGRh
dGEubGl2ZW5lc3M7CisgICAgICAgICAgICBkYXRhLnJlc3VtZWQuZmlsdGVyKGdldExpdmVuZXNz
SW5mb0F0Qnl0ZWNvZGVPZmZzZXQoZGF0YS5tZXJnZVBvaW50KSk7CisgICAgICAgIH0KKyAgICB9
Cit9OworCit2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uOjpydW4oKQoreworICAgIC8v
IEZpcnN0LCB3ZSBjYWxjdWxhdGUgdGhlIGxpdmVuZXNzIGF0IGVhY2ggbWVyZ2UgcG9pbnQuIFRo
aXMgZ2l2ZXMgdXMgdGhlIGluZm9ybWF0aW9uIHdoaWNoIHJlZ2lzdGVycyBzaG91bGQgYmUgc2F2
ZWQgYW5kIHJlc3VtZWQgY29uc2VydmF0aXZlbHkuCisgICAgLy8gSG93ZXZlciwgdGhpcyBpbmZv
cm1hdGlvbiBpcyB0b28gY29uc2VydmF0aXZlLiBXZSB1bm5lY2Vzc2FyaWx5IHNhdmUgYW5kIHJl
c3VtZSB0aGUgcmVnaXN0ZXJzLgorICAgIC8vIFdoZW4gdGhlIGxvY2FsIHJlZ2lzdGVyIGlzIHJl
ZmVyZW5jZWQgZnJvbSB0aGUgcG9pbnQgd2hpY2ggaXMgb3ZlciBtdWx0aXBsZSB5aWVsZHMsIHRo
ZSBwcm9ibGVtIGhhcHBlbnMuCisgICAgLy8KKyAgICAvLyAgIGZ1bmN0aW9uICpnZW4oKQorICAg
IC8vICAgeworICAgIC8vICAgICAgIHZhciB0YXJnZXQgPSA0MjsKKyAgICAvLyAgICAgICB5aWVs
ZCAzMDsgIC8vIEhlcmUsIHdlIHNob3VsZCBzYXZlICJ0YXJnZXQiLiBJdCBpcyBPSy4gQnV0IGF0
IHRoZSByZXN1bWUgcG9pbnQsIHdlIHVubmVjZXNzYXJ5IHJlc3VtZSAidGFyZ2V0IiBoZXJlLgor
ICAgIC8vICAgICAgIHlpZWxkIDQwOyAgLy8gQW5kIGhlcmUsIHdlIHVubmVjZXNzYXJpbHkgc2F2
ZSAidGFyZ2V0Iiwgc2luY2UgaXQgaXMgKmRlZippbmVkIGJ5IHRoZSBwcmV2aW91cyByZXN1bWUu
CisgICAgLy8gICAgICAgeWllbGQgdGFyZ2V0OyAgLy8gQW5kIHJlZmVyZW5jZSB0aGUgInRhcmdl
dCIgaGVyZS4KKyAgICAvLyAgIH0KKyAgICAvLworICAgIC8vIEluIHRoZSBhYm92ZSBleGFtcGxl
LCBmaXJzdCB5aWVsZCdzIHJlc3VtZSBhbmQgc2Vjb25kIHlpZWxkJ3Mgc2F2ZSBpcyB1bm5lY2Vz
c2FyeSBzaW5jZSB0aGUgdmFsdWUgaXMgbm90IGNoYW5nZWQgZHVyaW5nIHRoZSBzZWNvbmQgY2Fs
bCBvZiBuZXh0KCkuCisgICAgLy8gVG8gcmVkdWNlIHRoZSB1bm5lY2Vzc2FyeSByZWdpc3RlciBz
YXZlIGFuZCByZXN1bWUsIHdlIHJ1biAyIGFuYWx5c2lzLCAic2F2ZWQgdmFyaWFibGVzIGFuYWx5
c2lzIiBhbmQgInJlc3VtZWQgdmFyaWFibGVzIGFuYWx5c2lzIi4KKyAgICAvLyBJbiBib3RoIGFu
YWx5c2lzLCB3ZSBkcm9wIHRoZSBlZGdlIGZyb20gb3Bfc2F2ZSB0byB0aGUgbWVyZ2UgcG9pbnQu
IFNvIHRoZSBncmFwaCBub3cgYmVjb21lcyBhcyBmb2xsb3dzLgorICAgIC8vCisgICAgLy8gQmVm
b3JlOgorICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvZiBjb3Vyc2UsIHN1Y2ggZWRnZXMg
Y2FuIGJlIHNlZW4pCisgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG9wX3JldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgIC8vICAgICAgICAgZW50cnkgLT4gZ2Vu
ZXJhdG9yIHN3aXRjaCAtLS0tPiBvcF9zYXZlIC0tLS0tLS0tLS0tLS0tKyAgICAgICAgICAgICAg
IHwgICAgICAgIG9wX3JldCAgICAgICAgICAgICAgICAgICB8CisgICAgLy8gICAgICAgICAgICAg
ICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ICAgICAg
ICAgICAgICAgfCAgICAgICAgICBeICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAvLyAgICAg
ICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLT4gb3BfcmVzdW1lIC0tLS0tPiBtZXJn
ZSBwb2ludCAtPiAuLi4uLi4rLi4uLi4tPiBvcF9zYXZlIC0tLS0tKyAgICAgICAgICAgfAorICAg
IC8vICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ICAgICAgICAg
ICB2CisgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+IG9wX3Jlc3VtZSAtLS0tPiBtZXJnZSBw
b2ludCAtPiAuLi4uLi4KKyAgICAvLworICAgIC8vIEFmdGVyOgorICAgIC8vICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIChvZiBjb3Vyc2UsIHN1Y2ggZWRnZXMgY2FuIGJlIHNlZW4pCisgICAgLy8gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wX3JldCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAg
ICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfAorICAgIC8vICAgICAgICAgZW50cnkgLT4gZ2VuZXJhdG9yIHN3aXRjaCAtLS0tPiBvcF9z
YXZlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgIG9wX3JldCAgICAgICAg
ICAgICAgICAgICB8CisgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICBeICAg
ICAgICAgICAgICAgICAgICAgIHwKKyAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICstLS0t
LS0tLS0tLS0tLT4gb3BfcmVzdW1lIC0tLS0tPiBtZXJnZSBwb2ludCAtPiAuLi4uLi4rLi4uLi4t
PiBvcF9zYXZlICAgICAgICAgICAgICAgICAgfAorICAgIC8vICAgICAgICAgICAgICAgICAgICAg
ICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2CisgICAgLy8gICAgICAgICAgICAg
ICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0+IG9wX3Jlc3VtZSAtLS0tPiBtZXJnZSBwb2ludCAtPiAuLi4uLi4KKyAgICAvLwor
ICAgIC8vIEluIHNhdmVkIHZhcmlhYmxlcyBhbmFseXNpcywgd2UgcnVuIHRoZSBmb3J3YXJkIGFu
YWx5c2lzIG9udG8gdGhpcyAiQWZ0ZXIiIGdyYXBoLiBJbiB0aGlzIGZvcndhcmQgYW5hbHlzaXMs
IHdlIHByb3BhZ2F0ZSB0aGUgImRlZiJzLgorICAgIC8vIFRoaXMgYW5hbHlzaXMgZXh0cmFjdHMg
dGhlIG5ld2x5IGRlZi1lZCByZWdpc3RlcnMgdGhhdCBjYW4gcmVhY2ggdG8gdGhlIG9wX3NhdmUg
cG9pbnQuIEJ1dCB0aGlzIG5ld2x5IGRlZi1lZCByZWdpc3RlcnMgaW5jbHVkZSB0aGUgcmVnaXN0
ZXJzIHRoYXQgd29uJ3QgYmUKKyAgICAvLyB1c2VkIGluIHRoZSBzdWJzZXF1ZW50IG5leHQoKSBj
YWxscyBhZnRlciB0aGlzIG9wX3NhdmUuIFNvIHdlIGV4dHJhY3QgdGhlIG5lY2Vzc2FyaWx5IHNh
dmVkIHJlZ2lzdGVycyBieSBtYXNraW5nIGxpdmUgcmVnaXN0ZXJzIHdpdGggdGhpcyBuZXdseSBk
ZWYtZWQgcmVnaXN0ZXJzIGJpdCBzZXQuCisgICAgLy8KKyAgICAvLyBJbiByZXN1bWVkIHZhcmlh
YmxlcyBhbmFseXNpcywgd2UganVzdCBydW4gdGhlIGxpdmVuZXNzIGFuYWx5c2lzIGFnYWluIG9u
dG8gdGhpcyAiQWZ0ZXIiIGdyYXBoLiBUaGUgYW5hbHlzaXMgZXh0cmFjdHMgdGhlIGxpdmVuZXNz
IGF0IGVhY2ggbWVyZ2UgcG9pbnQsCisgICAgLy8gYW5kIHRoaXMgbGl2ZW5lc3Mgb25seSBjb25z
aWRlcnMgdGhlIHJlYWNoYWJsZSBibG9ja3MgZnJvbSB0aGUgdGFyZ2V0IG9wX3Jlc3VtZS4gVGhl
IHJlc3VsdCByZWdpc3RlcnMgYXJlIHNtYWxsZXIgc2V0IHRoYW4gdGhlIHNldCB3aGljaCBpcyBl
eHRyYWN0ZWQgaW4KKyAgICAvLyB0aGUgcHJldmlvdXMgbGl2ZW5lc3MgYW5hbHlzaXMuCisgICAg
Ly8gVGhpcyB0aW1lLCB3ZSB1c2UgdGhlIHNhdmVkIHZhcmlhYmxlcyBpbmZvcm1hdGlvbiB0byBk
ZXRlcm1pbmUgdGhlIHJlc3VtZWQgdmFyaWFibGVzLiBUaGlzIGlzIGJlY2F1c2UgdGhlIHNhdmVk
IHZhcmlhYmxlIGFuYWx5c2lzIGhhcyBhIGxpdHRsZSBiaXQgY29uc2VydmF0aXZlIHBhcnQ6Cisg
ICAgLy8gdGhlIGV4Y2VwdGlvbiBoYW5kbGVyIGNvbnNpZGVycyB0aGUgYmFzaWMgYmxvY2tzIHRo
YXQgcmFuZ2Ugb3ZlcmxhcHMgdGhlIHRyeSByYW5nZXMgYXMgdGhlIGltcGxpY2l0IHByZWRlY2Vz
c29ycy4gQW5kIHRoZSBoYW5kbGVyIGNvbnNlcnZhdGl2ZWx5IGNvbnNpZGVycyBuZXdseS1kZWYt
ZWQKKyAgICAvLyB2YXJpYWJsZXMgYnkgbWVyZ2luZyBhbGwgdGhlIHByZWRlY2Vzc29ycydzIG91
dCBzZXQgZXZlbiBpZiB0aGUgaGFuZGxlcidzIHRyeSByYW5nZSBkb2VzIG5vdCBjb3ZlciBhbGwg
dGhlIHBhcnQgb2YgdGhlIGltcGxpY2l0IGJhc2ljIGJsb2Nrcy4KKworICAgIHsKKyAgICAgICAg
R2VuZXJhdG9yTGl2ZW5lc3NBbmFseXNpcyBwYXNzKCp0aGlzKTsKKyAgICAgICAgcGFzcy5ydW4o
KTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIFNhdmVkVmFyaWFibGVzQW5hbHlzaXMgcGFzcygq
dGhpcyk7CisgICAgICAgIHBhc3MucnVuKCk7CisgICAgfQorCisgICAgeworICAgICAgICBSZXN1
bWVkVmFyaWFibGVzQW5hbHlzaXMgcGFzcygqdGhpcyk7CisgICAgICAgIHBhc3MucnVuKCk7Cisg
ICAgfQorCisgICAgVW5saW5rZWRDb2RlQmxvY2sqIGNvZGVCbG9jayA9IG1fZ3JhcGguY29kZUJs
b2NrKCk7CisgICAgZm9yIChjb25zdCBZaWVsZERhdGEmIGRhdGEgOiBtX3lpZWxkcykgeworICAg
ICAgICBWaXJ0dWFsUmVnaXN0ZXIgc2NvcGUgPSB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChz
dGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JBcmd1bWVu
dDo6RnJhbWUpKTsKKworICAgICAgICAvLyBvcF9zYXZlLgorICAgICAgICBkYXRhLnNhdmVkLmZv
ckVhY2hTZXRCaXQoWyZdKHNpemVfdCBpbmRleCkgeworICAgICAgICAgICAgVmlydHVhbFJlZ2lz
dGVyIG9wZXJhbmQgPSB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChpbmRleCk7CisgICAgICAgICAg
ICBTdG9yYWdlIHN0b3JhZ2UgPSBzdG9yYWdlRm9yR2VuZXJhdG9yTG9jYWwoaW5kZXgpOworCisg
ICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnQoZGF0YS5zYXZlUG9pbnQsCisgICAgICAg
ICAgICAgICAgb3BfcHV0X3RvX3Njb3BlLAorICAgICAgICAgICAgICAgIHNjb3BlLm9mZnNldCgp
LCAvLyBzY29wZQorICAgICAgICAgICAgICAgIHN0b3JhZ2UuaWRlbnRpZmllckluZGV4LCAvLyBp
ZGVudGlmaWVyCisgICAgICAgICAgICAgICAgb3BlcmFuZC5vZmZzZXQoKSwgLy8gdmFsdWUKKyAg
ICAgICAgICAgICAgICBHZXRQdXRJbmZvKERvTm90VGhyb3dJZk5vdEZvdW5kLCBMb2NhbENsb3N1
cmVWYXIsIEluaXRpYWxpemF0aW9uTW9kZTo6Tm90SW5pdGlhbGl6YXRpb24pLm9wZXJhbmQoKSwg
Ly8gaW5mbworICAgICAgICAgICAgICAgIG1fZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZUluZGV4
LCAvLyBzeW1ib2wgdGFibGUgY29uc3RhbnQgaW5kZXgKKyAgICAgICAgICAgICAgICBzdG9yYWdl
LnNjb3BlT2Zmc2V0Lm9mZnNldCgpIC8vIHNjb3BlIG9mZnNldAorICAgICAgICAgICAgKTsKKyAg
ICAgICAgfSk7CisKKyAgICAgICAgLy8gb3BfcmVzdW1lLgorICAgICAgICBkYXRhLnJlc3VtZWQu
Zm9yRWFjaFNldEJpdChbJl0oc2l6ZV90IGluZGV4KSB7CisgICAgICAgICAgICBWaXJ0dWFsUmVn
aXN0ZXIgb3BlcmFuZCA9IHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGluZGV4KTsKKyAgICAgICAg
ICAgIFN0b3JhZ2Ugc3RvcmFnZSA9IHN0b3JhZ2VGb3JHZW5lcmF0b3JMb2NhbChpbmRleCk7CisK
KyAgICAgICAgICAgIFVubGlua2VkVmFsdWVQcm9maWxlIHByb2ZpbGUgPSBjb2RlQmxvY2stPmFk
ZFZhbHVlUHJvZmlsZSgpOworICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0KGRhdGEu
cmVzdW1lUG9pbnQsCisgICAgICAgICAgICAgICAgb3BfZ2V0X2Zyb21fc2NvcGUsCisgICAgICAg
ICAgICAgICAgb3BlcmFuZC5vZmZzZXQoKSwgLy8gZHN0CisgICAgICAgICAgICAgICAgc2NvcGUu
b2Zmc2V0KCksIC8vIHNjb3BlCisgICAgICAgICAgICAgICAgc3RvcmFnZS5pZGVudGlmaWVySW5k
ZXgsIC8vIGlkZW50aWZpZXIKKyAgICAgICAgICAgICAgICBHZXRQdXRJbmZvKERvTm90VGhyb3dJ
Zk5vdEZvdW5kLCBMb2NhbENsb3N1cmVWYXIsIEluaXRpYWxpemF0aW9uTW9kZTo6Tm90SW5pdGlh
bGl6YXRpb24pLm9wZXJhbmQoKSwgLy8gaW5mbworICAgICAgICAgICAgICAgIDAsIC8vIGxvY2Fs
IHNjb3BlIGRlcHRoCisgICAgICAgICAgICAgICAgc3RvcmFnZS5zY29wZU9mZnNldC5vZmZzZXQo
KSwgLy8gc2NvcGUgb2Zmc2V0CisgICAgICAgICAgICAgICAgcHJvZmlsZSAvLyBwcm9maWxlCisg
ICAgICAgICAgICApOworICAgICAgICB9KTsKKworICAgICAgICAvLyBDbGlwIHRoZSB1bm5lY2Vz
c2FyeSBieXRlY29kZXMuCisgICAgICAgIG1faW5zZXJ0aW9uU2V0LnJlbW92ZUJ5dGVjb2RlKGRh
dGEuc2F2ZVBvaW50KTsKKyAgICAgICAgbV9pbnNlcnRpb25TZXQucmVtb3ZlQnl0ZWNvZGUoZGF0
YS5yZXN1bWVQb2ludCk7CisgICAgfQorCisgICAgbV9pbnNlcnRpb25TZXQuZXhlY3V0ZSgpOwor
fQorCit2b2lkIHBlcmZvcm1HZW5lcmF0b3JpZmljYXRpb24oVW5saW5rZWRDb2RlQmxvY2sqIGNv
ZGVCbG9jaywgVW5saW5rZWRDb2RlQmxvY2s6OlVucGFja2VkSW5zdHJ1Y3Rpb25zJiBpbnN0cnVj
dGlvbnMsIFN5bWJvbFRhYmxlKiBnZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlLCBpbnQgZ2VuZXJh
dG9yRnJhbWVTeW1ib2xUYWJsZUluZGV4KQoreworICAgIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0
aW9uIHBhc3MoY29kZUJsb2NrLCBpbnN0cnVjdGlvbnMsIGdlbmVyYXRvckZyYW1lU3ltYm9sVGFi
bGUsIGdlbmVyYXRvckZyYW1lU3ltYm9sVGFibGVJbmRleCk7CisgICAgcGFzcy5ydW4oKTsKK30K
KworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVi
N2VjOTZlZDcwZGJiYTIyMTExZWIxMzc3MzNmYjIwMDU1YjExMWEKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRp
b24uaApAQCAtMCwwICsxLDM2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IFl1c3VrZSBT
dXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpbmNsdWRlICJVbmxpbmtlZENvZGVCbG9jay5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xh
c3MgU3ltYm9sVGFibGU7CisKK3ZvaWQgcGVyZm9ybUdlbmVyYXRvcmlmaWNhdGlvbihVbmxpbmtl
ZENvZGVCbG9jayosIFVubGlua2VkQ29kZUJsb2NrOjpVbnBhY2tlZEluc3RydWN0aW9ucyYsIFN5
bWJvbFRhYmxlKiBnZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlLCBpbnQgZ2VuZXJhdG9yRnJhbWVT
eW1ib2xUYWJsZUluZGV4KTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVHcmFwaC5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlR3JhcGguaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZjIwODQ0MjA1
ZDI5MGRjYjMyN2E1NjA0ODA5YmZlY2RiNGExNzJjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlR3JhcGguaApAQCAtMCwwICsxLDExMiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBn
bWFpbC5jb20+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQnl0ZWNvZGVC
YXNpY0Jsb2NrLmgiCisjaW5jbHVkZSA8d3RmL0l0ZXJhdG9yUmFuZ2UuaD4KKyNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBCeXRlY29kZUJhc2ljQmxv
Y2s7CisKK3RlbXBsYXRlPHR5cGVuYW1lIEJsb2NrPgorY2xhc3MgQnl0ZWNvZGVHcmFwaCB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQnl0
ZWNvZGVHcmFwaCk7CitwdWJsaWM6CisgICAgdHlwZWRlZiBWZWN0b3I8c3RkOjp1bmlxdWVfcHRy
PEJ5dGVjb2RlQmFzaWNCbG9jaz4+IEJhc2ljQmxvY2tzVmVjdG9yOworCisgICAgaW5saW5lIEJ5
dGVjb2RlR3JhcGgoQmxvY2sqLCB0eXBlbmFtZSBCbG9jazo6VW5wYWNrZWRJbnN0cnVjdGlvbnMm
KTsKKworICAgIEJsb2NrKiBjb2RlQmxvY2soKSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9jazsg
fQorCisgICAgQmFzaWNCbG9ja3NWZWN0b3ImIGJhc2ljQmxvY2tzKCkgeyByZXR1cm4gbV9iYXNp
Y0Jsb2NrczsgfQorCisgICAgdHlwZW5hbWUgQmxvY2s6OlVucGFja2VkSW5zdHJ1Y3Rpb25zJiBp
bnN0cnVjdGlvbnMoKSB7IHJldHVybiBtX2luc3RydWN0aW9uczsgfQorCisgICAgV1RGOjpJdGVy
YXRvclJhbmdlPEJhc2ljQmxvY2tzVmVjdG9yOjpyZXZlcnNlX2l0ZXJhdG9yPiBiYXNpY0Jsb2Nr
c0luUmV2ZXJzZU9yZGVyKCkKKyAgICB7CisgICAgICAgIHJldHVybiBXVEY6Om1ha2VJdGVyYXRv
clJhbmdlKG1fYmFzaWNCbG9ja3MucmJlZ2luKCksIG1fYmFzaWNCbG9ja3MucmVuZCgpKTsKKyAg
ICB9CisKKyAgICBzdGF0aWMgYm9vbCBibG9ja0NvbnRhaW5zQnl0ZWNvZGVPZmZzZXQoQnl0ZWNv
ZGVCYXNpY0Jsb2NrKiBibG9jaywgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpCisgICAgeworICAg
ICAgICB1bnNpZ25lZCBsZWFkZXJPZmZzZXQgPSBibG9jay0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQo
KTsKKyAgICAgICAgcmV0dXJuIGJ5dGVjb2RlT2Zmc2V0ID49IGxlYWRlck9mZnNldCAmJiBieXRl
Y29kZU9mZnNldCA8IGxlYWRlck9mZnNldCArIGJsb2NrLT50b3RhbEJ5dGVjb2RlTGVuZ3RoKCk7
CisgICAgfQorCisgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBmaW5kQmFzaWNCbG9ja0ZvckJ5dGVj
b2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KQorICAgIHsKKyAgICAgICAgLyoKKyAg
ICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2Jhc2ljQmxvY2tzLnNpemUoKTsg
aSsrKSB7CisgICAgICAgICAgICAgICAgaWYgKGJsb2NrQ29udGFpbnNCeXRlY29kZU9mZnNldCht
X2Jhc2ljQmxvY2tzW2ldLmdldCgpLCBieXRlY29kZU9mZnNldCkpCisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBtX2Jhc2ljQmxvY2tzW2ldLmdldCgpOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgcmV0dXJuIDA7CisgICAgICAgICovCisKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEJ5
dGVjb2RlQmFzaWNCbG9jaz4qIGJhc2ljQmxvY2sgPSBhcHByb3hpbWF0ZUJpbmFyeVNlYXJjaDxz
dGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiwgdW5zaWduZWQ+KG1fYmFzaWNCbG9j
a3MsIG1fYmFzaWNCbG9ja3Muc2l6ZSgpLCBieXRlY29kZU9mZnNldCwgW10gKHN0ZDo6dW5pcXVl
X3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+KiBiYXNpY0Jsb2NrKSB7IHJldHVybiAoKmJhc2ljQmxv
Y2spLT5sZWFkZXJCeXRlY29kZU9mZnNldCgpOyB9KTsKKyAgICAgICAgLy8gV2UgZm91bmQgdGhl
IGJsb2NrIHdlIHdlcmUgbG9va2luZyBmb3IuCisgICAgICAgIGlmIChibG9ja0NvbnRhaW5zQnl0
ZWNvZGVPZmZzZXQoKCpiYXNpY0Jsb2NrKS5nZXQoKSwgYnl0ZWNvZGVPZmZzZXQpKQorICAgICAg
ICAgICAgcmV0dXJuICgqYmFzaWNCbG9jaykuZ2V0KCk7CisKKyAgICAgICAgLy8gQmFzaWMgYmxv
Y2sgaXMgdG8gdGhlIGxlZnQgb2YgdGhlIHJldHVybmVkIGJsb2NrLgorICAgICAgICBpZiAoYnl0
ZWNvZGVPZmZzZXQgPCAoKmJhc2ljQmxvY2spLT5sZWFkZXJCeXRlY29kZU9mZnNldCgpKSB7Cisg
ICAgICAgICAgICBBU1NFUlQoYmFzaWNCbG9jayAtIDEgPj0gbV9iYXNpY0Jsb2Nrcy5kYXRhKCkp
OworICAgICAgICAgICAgQVNTRVJUKGJsb2NrQ29udGFpbnNCeXRlY29kZU9mZnNldChiYXNpY0Js
b2NrWy0xXS5nZXQoKSwgYnl0ZWNvZGVPZmZzZXQpKTsKKyAgICAgICAgICAgIHJldHVybiBiYXNp
Y0Jsb2NrWy0xXS5nZXQoKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEJhc2ljIGJsb2NrIGlz
IHRvIHRoZSByaWdodCBvZiB0aGUgcmV0dXJuZWQgYmxvY2suCisgICAgICAgIEFTU0VSVCgmYmFz
aWNCbG9ja1sxXSA8PSAmbV9iYXNpY0Jsb2Nrcy5sYXN0KCkpOworICAgICAgICBBU1NFUlQoYmxv
Y2tDb250YWluc0J5dGVjb2RlT2Zmc2V0KGJhc2ljQmxvY2tbMV0uZ2V0KCksIGJ5dGVjb2RlT2Zm
c2V0KSk7CisgICAgICAgIHJldHVybiBiYXNpY0Jsb2NrWzFdLmdldCgpOworICAgIH0KKworICAg
IEJ5dGVjb2RlQmFzaWNCbG9jayogZmluZEJhc2ljQmxvY2tXaXRoTGVhZGVyT2Zmc2V0KHVuc2ln
bmVkIGxlYWRlck9mZnNldCkKKyAgICB7CisgICAgICAgIHJldHVybiAoKnRyeUJpbmFyeVNlYXJj
aDxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiwgdW5zaWduZWQ+KG1fYmFzaWNC
bG9ja3MsIG1fYmFzaWNCbG9ja3Muc2l6ZSgpLCBsZWFkZXJPZmZzZXQsIFtdIChzdGQ6OnVuaXF1
ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiogYmFzaWNCbG9jaykgeyByZXR1cm4gKCpiYXNpY0Js
b2NrKS0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKTsgfSkpLmdldCgpOworICAgIH0KKworcHJpdmF0
ZToKKyAgICBCbG9jayogbV9jb2RlQmxvY2s7CisgICAgQmFzaWNCbG9ja3NWZWN0b3IgbV9iYXNp
Y0Jsb2NrczsKKyAgICB0eXBlbmFtZSBCbG9jazo6VW5wYWNrZWRJbnN0cnVjdGlvbnMmIG1faW5z
dHJ1Y3Rpb25zOworfTsKKworCit0ZW1wbGF0ZTx0eXBlbmFtZSBCbG9jaz4KK0J5dGVjb2RlR3Jh
cGg8QmxvY2s+OjpCeXRlY29kZUdyYXBoKEJsb2NrKiBjb2RlQmxvY2ssIHR5cGVuYW1lIEJsb2Nr
OjpVbnBhY2tlZEluc3RydWN0aW9ucyYgaW5zdHJ1Y3Rpb25zKQorICAgIDogbV9jb2RlQmxvY2so
Y29kZUJsb2NrKQorICAgICwgbV9pbnN0cnVjdGlvbnMoaW5zdHJ1Y3Rpb25zKQoreworICAgIEFT
U0VSVChtX2NvZGVCbG9jayk7CisgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrOjpjb21wdXRlQnl0ZWNv
ZGVCYXNpY0Jsb2NrcyhtX2NvZGVCbG9jaywgaW5zdHJ1Y3Rpb25zLmJlZ2luKCksIGluc3RydWN0
aW9ucy5zaXplKCksIG1fYmFzaWNCbG9ja3MpOworICAgIEFTU0VSVChtX2Jhc2ljQmxvY2tzLnNp
emUoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNwcAppbmRl
eCAxN2U4MmEyZmJiYTAxNTA0M2U5OWQzNGVkMjU2OTM3MmIzNmY3YTg1Li5lYjQ1OWQxMjk3Yzlm
NzM5ZWU5ZmJhYTEzMDM3Zjg5ZjhlODZhYjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNwcApAQCAt
MzEsNzQgKzMxLDIxIEBACiAjaW5jbHVkZSAiQnl0ZWNvZGVVc2VEZWYuaCIKICNpbmNsdWRlICJD
b2RlQmxvY2suaCIKICNpbmNsdWRlICJGdWxsQnl0ZWNvZGVMaXZlbmVzcy5oIgorI2luY2x1ZGUg
IkludGVycHJldGVySW5saW5lcy5oIgogI2luY2x1ZGUgIlByZWNpc2VKdW1wVGFyZ2V0cy5oIgog
CiBuYW1lc3BhY2UgSlNDIHsKIAogQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpCeXRlY29kZUxp
dmVuZXNzQW5hbHlzaXMoQ29kZUJsb2NrKiBjb2RlQmxvY2spCi0gICAgOiBtX2NvZGVCbG9jayhj
b2RlQmxvY2spCisgICAgOiBtX2dyYXBoKGNvZGVCbG9jaywgY29kZUJsb2NrLT5pbnN0cnVjdGlv
bnMoKSkKIHsKLSAgICBBU1NFUlQobV9jb2RlQmxvY2spOwogICAgIGNvbXB1dGUoKTsKIH0KIAot
c3RhdGljIGJvb2wgaXNWYWxpZFJlZ2lzdGVyRm9yTGl2ZW5lc3MoQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssIGludCBvcGVyYW5kKQotewotICAgIGlmIChjb2RlQmxvY2stPmlzQ29uc3RhbnRSZWdpc3Rl
ckluZGV4KG9wZXJhbmQpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCi0gICAgVmlydHVh
bFJlZ2lzdGVyIHZpcnR1YWxSZWcob3BlcmFuZCk7Ci0gICAgcmV0dXJuIHZpcnR1YWxSZWcuaXNM
b2NhbCgpOwotfQotCi1zdGF0aWMgdW5zaWduZWQgZ2V0TGVhZGVyT2Zmc2V0Rm9yQmFzaWNCbG9j
ayhzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiogYmFzaWNCbG9jaykKLXsKLSAg
ICByZXR1cm4gKCpiYXNpY0Jsb2NrKS0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKTsKLX0KLQotc3Rh
dGljIEJ5dGVjb2RlQmFzaWNCbG9jayogZmluZEJhc2ljQmxvY2tXaXRoTGVhZGVyT2Zmc2V0KFZl
Y3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mIGJhc2ljQmxvY2tzLCB1
bnNpZ25lZCBsZWFkZXJPZmZzZXQpCi17Ci0gICAgcmV0dXJuICgqdHJ5QmluYXJ5U2VhcmNoPHN0
ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+LCB1bnNpZ25lZD4oYmFzaWNCbG9ja3Ms
IGJhc2ljQmxvY2tzLnNpemUoKSwgbGVhZGVyT2Zmc2V0LCBnZXRMZWFkZXJPZmZzZXRGb3JCYXNp
Y0Jsb2NrKSkuZ2V0KCk7Ci19Ci0KLXN0YXRpYyBib29sIGJsb2NrQ29udGFpbnNCeXRlY29kZU9m
ZnNldChCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCkK
LXsKLSAgICB1bnNpZ25lZCBsZWFkZXJPZmZzZXQgPSBibG9jay0+bGVhZGVyQnl0ZWNvZGVPZmZz
ZXQoKTsKLSAgICByZXR1cm4gYnl0ZWNvZGVPZmZzZXQgPj0gbGVhZGVyT2Zmc2V0ICYmIGJ5dGVj
b2RlT2Zmc2V0IDwgbGVhZGVyT2Zmc2V0ICsgYmxvY2stPnRvdGFsQnl0ZWNvZGVMZW5ndGgoKTsK
LX0KLQotc3RhdGljIEJ5dGVjb2RlQmFzaWNCbG9jayogZmluZEJhc2ljQmxvY2tGb3JCeXRlY29k
ZU9mZnNldChWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+JiBiYXNp
Y0Jsb2NrcywgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpCi17Ci0vKgotICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBiYXNpY0Jsb2Nrcy5zaXplKCk7IGkrKykgewotICAgICAgICBpZiAoYmxv
Y2tDb250YWluc0J5dGVjb2RlT2Zmc2V0KGJhc2ljQmxvY2tzW2ldLmdldCgpLCBieXRlY29kZU9m
ZnNldCkpCi0gICAgICAgICAgICByZXR1cm4gYmFzaWNCbG9ja3NbaV0uZ2V0KCk7Ci0gICAgfQot
ICAgIHJldHVybiAwOwotKi8KLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2Nr
PiogYmFzaWNCbG9jayA9IGFwcHJveGltYXRlQmluYXJ5U2VhcmNoPHN0ZDo6dW5pcXVlX3B0cjxC
eXRlY29kZUJhc2ljQmxvY2s+LCB1bnNpZ25lZD4oCi0gICAgICAgIGJhc2ljQmxvY2tzLCBiYXNp
Y0Jsb2Nrcy5zaXplKCksIGJ5dGVjb2RlT2Zmc2V0LCBnZXRMZWFkZXJPZmZzZXRGb3JCYXNpY0Js
b2NrKTsKLSAgICAvLyBXZSBmb3VuZCB0aGUgYmxvY2sgd2Ugd2VyZSBsb29raW5nIGZvci4KLSAg
ICBpZiAoYmxvY2tDb250YWluc0J5dGVjb2RlT2Zmc2V0KCgqYmFzaWNCbG9jaykuZ2V0KCksIGJ5
dGVjb2RlT2Zmc2V0KSkKLSAgICAgICAgcmV0dXJuICgqYmFzaWNCbG9jaykuZ2V0KCk7Ci0KLSAg
ICAvLyBCYXNpYyBibG9jayBpcyB0byB0aGUgbGVmdCBvZiB0aGUgcmV0dXJuZWQgYmxvY2suCi0g
ICAgaWYgKGJ5dGVjb2RlT2Zmc2V0IDwgKCpiYXNpY0Jsb2NrKS0+bGVhZGVyQnl0ZWNvZGVPZmZz
ZXQoKSkgewotICAgICAgICBBU1NFUlQoYmFzaWNCbG9jayAtIDEgPj0gYmFzaWNCbG9ja3MuZGF0
YSgpKTsKLSAgICAgICAgQVNTRVJUKGJsb2NrQ29udGFpbnNCeXRlY29kZU9mZnNldChiYXNpY0Js
b2NrWy0xXS5nZXQoKSwgYnl0ZWNvZGVPZmZzZXQpKTsKLSAgICAgICAgcmV0dXJuIGJhc2ljQmxv
Y2tbLTFdLmdldCgpOwotICAgIH0KLQotICAgIC8vIEJhc2ljIGJsb2NrIGlzIHRvIHRoZSByaWdo
dCBvZiB0aGUgcmV0dXJuZWQgYmxvY2suCi0gICAgQVNTRVJUKCZiYXNpY0Jsb2NrWzFdIDw9ICZi
YXNpY0Jsb2Nrcy5sYXN0KCkpOwotICAgIEFTU0VSVChibG9ja0NvbnRhaW5zQnl0ZWNvZGVPZmZz
ZXQoYmFzaWNCbG9ja1sxXS5nZXQoKSwgYnl0ZWNvZGVPZmZzZXQpKTsKLSAgICByZXR1cm4gYmFz
aWNCbG9ja1sxXS5nZXQoKTsKLX0KLQogLy8gU2ltcGxpZmllZCBpbnRlcmZhY2UgdG8gYnl0ZWNv
ZGUgdXNlL2RlZiwgd2hpY2ggZGV0ZXJtaW5lcyBkZWZzIGZpcnN0IGFuZCB0aGVuIHVzZXMsIGFu
ZCBpbmNsdWRlcwogLy8gZXhjZXB0aW9uIGhhbmRsZXJzIGluIHRoZSB1c2VzLgogdGVtcGxhdGU8
dHlwZW5hbWUgVXNlRnVuY3RvciwgdHlwZW5hbWUgRGVmRnVuY3Rvcj4KLXN0YXRpYyB2b2lkIHN0
ZXBPdmVySW5zdHJ1Y3Rpb24oQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFzaWNCbG9j
ayogYmxvY2ssIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mIGJh
c2ljQmxvY2tzLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgY29uc3QgVXNlRnVuY3RvciYgdXNl
LCBjb25zdCBEZWZGdW5jdG9yJiBkZWYpCitzdGF0aWMgdm9pZCBzdGVwT3Zlckluc3RydWN0aW9u
KEJ5dGVjb2RlR3JhcGg8Q29kZUJsb2NrPiYgZ3JhcGgsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0
LCBjb25zdCBVc2VGdW5jdG9yJiB1c2UsIGNvbnN0IERlZkZ1bmN0b3ImIGRlZikKIHsKICAgICAv
LyBUaGlzIGFic3RyYWN0bHkgZXhlY3V0ZSB0aGUgaW5zdHJ1Y3Rpb24gaW4gcmV2ZXJzZS4gSW5z
dHJ1Y3Rpb25zIGxvZ2ljYWxseSBmaXJzdCB1c2Ugb3BlcmFuZHMgYW5kCiAgICAgLy8gdGhlbiBk
ZWZpbmUgb3BlcmFuZHMuIFRoaXMgbG9naWNhbCBvcmRlcmluZyBpcyBuZWNlc3NhcnkgZm9yIG9w
ZXJhdGlvbnMgdGhhdCB1c2UgYW5kIGRlZiB0aGUgc2FtZQpAQCAtMTE1LDQxICs2MiwzNSBAQCBz
dGF0aWMgdm9pZCBzdGVwT3Zlckluc3RydWN0aW9uKENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRl
Y29kZUJhc2ljQmxvY2sqIGJsb2NrLAogICAgIC8vIHVzZXMgYmVmb3JlIGRlZnMsIHRoZW4gdGhl
IGFkZCBvcGVyYXRpb24gYWJvdmUgd291bGQgYXBwZWFyIHRvIG5vdCBoYXZlIGxvYzEgbGl2ZSwg
c2luY2Ugd2UnZAogICAgIC8vIGZpcnN0IGFkZCBpdCB0byB0aGUgb3V0IHNldCAodGhlIHVzZSks
IGFuZCB0aGVuIHdlJ2QgcmVtb3ZlIGl0ICh0aGUgZGVmKS4KICAgICAKKyAgICBDb2RlQmxvY2sq
IGNvZGVCbG9jayA9IGdyYXBoLmNvZGVCbG9jaygpOworCiAgICAgY29tcHV0ZURlZnNGb3JCeXRl
Y29kZU9mZnNldCgKLSAgICAgICAgY29kZUJsb2NrLCBibG9jaywgYnl0ZWNvZGVPZmZzZXQsCi0g
ICAgICAgIFsmXSAoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEluc3RydWN0aW9uKiwgT3Bjb2RlSUQs
IGludCBvcGVyYW5kKSB7Ci0gICAgICAgICAgICBpZiAoaXNWYWxpZFJlZ2lzdGVyRm9yTGl2ZW5l
c3MoY29kZUJsb2NrLCBvcGVyYW5kKSkKKyAgICAgICAgY29kZUJsb2NrLCBieXRlY29kZU9mZnNl
dCwKKyAgICAgICAgWyZdIChDb2RlQmxvY2sqLCBJbnN0cnVjdGlvbiosIE9wY29kZUlELCBpbnQg
b3BlcmFuZCkgeworICAgICAgICAgICAgaWYgKGlzVmFsaWRSZWdpc3RlckZvckxpdmVuZXNzKG9w
ZXJhbmQpKQogICAgICAgICAgICAgICAgIGRlZihWaXJ0dWFsUmVnaXN0ZXIob3BlcmFuZCkudG9M
b2NhbCgpKTsKICAgICAgICAgfSk7CiAKICAgICBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0
KAotICAgICAgICBjb2RlQmxvY2ssIGJsb2NrLCBieXRlY29kZU9mZnNldCwKLSAgICAgICAgWyZd
IChDb2RlQmxvY2sqIGNvZGVCbG9jaywgSW5zdHJ1Y3Rpb24qLCBPcGNvZGVJRCwgaW50IG9wZXJh
bmQpIHsKLSAgICAgICAgICAgIGlmIChpc1ZhbGlkUmVnaXN0ZXJGb3JMaXZlbmVzcyhjb2RlQmxv
Y2ssIG9wZXJhbmQpKQorICAgICAgICBjb2RlQmxvY2ssIGJ5dGVjb2RlT2Zmc2V0LAorICAgICAg
ICBbJl0gKENvZGVCbG9jayosIEluc3RydWN0aW9uKiwgT3Bjb2RlSUQsIGludCBvcGVyYW5kKSB7
CisgICAgICAgICAgICBpZiAoaXNWYWxpZFJlZ2lzdGVyRm9yTGl2ZW5lc3Mob3BlcmFuZCkpCiAg
ICAgICAgICAgICAgICAgdXNlKFZpcnR1YWxSZWdpc3RlcihvcGVyYW5kKS50b0xvY2FsKCkpOwog
ICAgICAgICB9KTsKIAogICAgIC8vIElmIHdlIGhhdmUgYW4gZXhjZXB0aW9uIGhhbmRsZXIsIHdl
IHdhbnQgdGhlIGxpdmUtaW4gdmFyaWFibGVzIG9mIHRoZSAKICAgICAvLyBleGNlcHRpb24gaGFu
ZGxlciBibG9jayB0byBiZSBpbmNsdWRlZCBpbiB0aGUgbGl2ZS1pbiBvZiB0aGlzIHBhcnRpY3Vs
YXIgYnl0ZWNvZGUuCiAgICAgaWYgKEhhbmRsZXJJbmZvKiBoYW5kbGVyID0gY29kZUJsb2NrLT5o
YW5kbGVyRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpKSB7Ci0gICAgICAgIC8vIEZJ
WE1FOiBUaGlzIHJlc3VtZSBjaGVjayBzaG91bGQgbm90IGJlIG5lZWRlZC4KLSAgICAgICAgLy8g
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1OTI4MQotICAgICAgICBJ
bnRlcnByZXRlciogaW50ZXJwcmV0ZXIgPSBjb2RlQmxvY2stPnZtKCktPmludGVycHJldGVyOwot
ICAgICAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4gPSBjb2RlQmxvY2stPmluc3Ry
dWN0aW9ucygpLmJlZ2luKCk7Ci0gICAgICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9ICZp
bnN0cnVjdGlvbnNCZWdpbltieXRlY29kZU9mZnNldF07Ci0gICAgICAgIE9wY29kZUlEIG9wY29k
ZUlEID0gaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGluc3RydWN0aW9uLT51Lm9wY29kZSk7Ci0g
ICAgICAgIGlmIChvcGNvZGVJRCAhPSBvcF9yZXN1bWUpIHsKLSAgICAgICAgICAgIEJ5dGVjb2Rl
QmFzaWNCbG9jayogaGFuZGxlckJsb2NrID0gZmluZEJhc2ljQmxvY2tXaXRoTGVhZGVyT2Zmc2V0
KGJhc2ljQmxvY2tzLCBoYW5kbGVyLT50YXJnZXQpOwotICAgICAgICAgICAgQVNTRVJUKGhhbmRs
ZXJCbG9jayk7Ci0gICAgICAgICAgICBoYW5kbGVyQmxvY2stPmluKCkuZm9yRWFjaFNldEJpdCh1
c2UpOwotICAgICAgICB9CisgICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogaGFuZGxlckJsb2Nr
ID0gZ3JhcGguZmluZEJhc2ljQmxvY2tXaXRoTGVhZGVyT2Zmc2V0KGhhbmRsZXItPnRhcmdldCk7
CisgICAgICAgIEFTU0VSVChoYW5kbGVyQmxvY2spOworICAgICAgICBoYW5kbGVyQmxvY2stPmlu
KCkuZm9yRWFjaFNldEJpdCh1c2UpOwogICAgIH0KIH0KIAotc3RhdGljIHZvaWQgc3RlcE92ZXJJ
bnN0cnVjdGlvbihDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9j
aywgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9j
a3MsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBGYXN0Qml0VmVjdG9yJiBvdXQpCitzdGF0aWMg
dm9pZCBzdGVwT3Zlckluc3RydWN0aW9uKEJ5dGVjb2RlR3JhcGg8Q29kZUJsb2NrPiYgZ3JhcGgs
IHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBGYXN0Qml0VmVjdG9yJiBvdXQpCiB7CiAgICAgc3Rl
cE92ZXJJbnN0cnVjdGlvbigKLSAgICAgICAgY29kZUJsb2NrLCBibG9jaywgYmFzaWNCbG9ja3Ms
IGJ5dGVjb2RlT2Zmc2V0LAorICAgICAgICBncmFwaCwgYnl0ZWNvZGVPZmZzZXQsCiAgICAgICAg
IFsmXSAodW5zaWduZWQgYml0SW5kZXgpIHsKICAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIHVz
ZSBmdW5jdG9yLCBzbyB3ZSBzZXQgdGhlIGJpdC4KICAgICAgICAgICAgIG91dC5zZXQoYml0SW5k
ZXgpOwpAQCAtMTYwLDcgKzEwMSw3IEBAIHN0YXRpYyB2b2lkIHN0ZXBPdmVySW5zdHJ1Y3Rpb24o
Q29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2ssCiAgICAgICAg
IH0pOwogfQogCi1zdGF0aWMgdm9pZCBjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJ5dGVjb2RlT2Zm
c2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrLCBWZWN0
b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+JiBiYXNpY0Jsb2NrcywgdW5z
aWduZWQgdGFyZ2V0T2Zmc2V0LCBGYXN0Qml0VmVjdG9yJiByZXN1bHQpCitzdGF0aWMgdm9pZCBj
b21wdXRlTG9jYWxMaXZlbmVzc0ZvckJ5dGVjb2RlT2Zmc2V0KEJ5dGVjb2RlR3JhcGg8Q29kZUJs
b2NrPiYgZ3JhcGgsIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2ssIHVuc2lnbmVkIHRhcmdldE9m
ZnNldCwgRmFzdEJpdFZlY3RvciYgcmVzdWx0KQogewogICAgIEFTU0VSVCghYmxvY2stPmlzRXhp
dEJsb2NrKCkpOwogICAgIEFTU0VSVCghYmxvY2stPmlzRW50cnlCbG9jaygpKTsKQEAgLTE3Miw0
NCArMTEzLDQ0IEBAIHN0YXRpYyB2b2lkIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQnl0ZWNvZGVP
ZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlCiAgICAgICAgIGlmICh0YXJnZXRP
ZmZzZXQgPiBieXRlY29kZU9mZnNldCkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAKLSAg
ICAgICAgc3RlcE92ZXJJbnN0cnVjdGlvbihjb2RlQmxvY2ssIGJsb2NrLCBiYXNpY0Jsb2Nrcywg
Ynl0ZWNvZGVPZmZzZXQsIG91dCk7CisgICAgICAgIHN0ZXBPdmVySW5zdHJ1Y3Rpb24oZ3JhcGgs
IGJ5dGVjb2RlT2Zmc2V0LCBvdXQpOwogICAgIH0KIAogICAgIHJlc3VsdC5zZXQob3V0KTsKIH0K
IAotc3RhdGljIHZvaWQgY29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCbG9jayhDb2RlQmxvY2sqIGNv
ZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaywgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0
cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9ja3MpCitzdGF0aWMgdm9pZCBjb21wdXRl
TG9jYWxMaXZlbmVzc0ZvckJsb2NrKEJ5dGVjb2RlR3JhcGg8Q29kZUJsb2NrPiYgZ3JhcGgsIEJ5
dGVjb2RlQmFzaWNCbG9jayogYmxvY2spCiB7CiAgICAgaWYgKGJsb2NrLT5pc0V4aXRCbG9jaygp
IHx8IGJsb2NrLT5pc0VudHJ5QmxvY2soKSkKICAgICAgICAgcmV0dXJuOwotICAgIGNvbXB1dGVM
b2NhbExpdmVuZXNzRm9yQnl0ZWNvZGVPZmZzZXQoY29kZUJsb2NrLCBibG9jaywgYmFzaWNCbG9j
a3MsIGJsb2NrLT5sZWFkZXJCeXRlY29kZU9mZnNldCgpLCBibG9jay0+aW4oKSk7CisgICAgY29t
cHV0ZUxvY2FsTGl2ZW5lc3NGb3JCeXRlY29kZU9mZnNldChncmFwaCwgYmxvY2ssIGJsb2NrLT5s
ZWFkZXJCeXRlY29kZU9mZnNldCgpLCBibG9jay0+aW4oKSk7CiB9CiAKIHZvaWQgQnl0ZWNvZGVM
aXZlbmVzc0FuYWx5c2lzOjpydW5MaXZlbmVzc0ZpeHBvaW50KCkKIHsKLSAgICBVbmxpbmtlZENv
ZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2sgPSBtX2NvZGVCbG9jay0+dW5saW5rZWRDb2RlQmxv
Y2soKTsKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IG1fZ3JhcGguY29kZUJsb2NrKCk7Cisg
ICAgVW5saW5rZWRDb2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrID0gY29kZUJsb2NrLT51bmxp
bmtlZENvZGVCbG9jaygpOwogICAgIHVuc2lnbmVkIG51bWJlck9mVmFyaWFibGVzID0gdW5saW5r
ZWRDb2RlQmxvY2stPm1fbnVtQ2FsbGVlTG9jYWxzOwogCi0gICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IG1fYmFzaWNCbG9ja3Muc2l6ZSgpOyBpKyspIHsKLSAgICAgICAgQnl0ZWNvZGVCYXNp
Y0Jsb2NrKiBibG9jayA9IG1fYmFzaWNCbG9ja3NbaV0uZ2V0KCk7CisgICAgZm9yIChzdGQ6OnVu
aXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiYgYmxvY2sgOiBtX2dyYXBoLmJhc2ljQmxvY2tz
KCkpIHsKICAgICAgICAgYmxvY2stPmluKCkucmVzaXplKG51bWJlck9mVmFyaWFibGVzKTsKICAg
ICAgICAgYmxvY2stPm91dCgpLnJlc2l6ZShudW1iZXJPZlZhcmlhYmxlcyk7CiAgICAgfQogCiAg
ICAgYm9vbCBjaGFuZ2VkOwotICAgIG1fYmFzaWNCbG9ja3MubGFzdCgpLT5pbigpLmNsZWFyQWxs
KCk7Ci0gICAgbV9iYXNpY0Jsb2Nrcy5sYXN0KCktPm91dCgpLmNsZWFyQWxsKCk7CisgICAgQnl0
ZWNvZGVCYXNpY0Jsb2NrKiBsYXN0QmxvY2sgPSBtX2dyYXBoLmJhc2ljQmxvY2tzKCkubGFzdCgp
LmdldCgpOworICAgIGxhc3RCbG9jay0+aW4oKS5jbGVhckFsbCgpOworICAgIGxhc3RCbG9jay0+
b3V0KCkuY2xlYXJBbGwoKTsKICAgICBGYXN0Qml0VmVjdG9yIG5ld091dDsKLSAgICBuZXdPdXQu
cmVzaXplKG1fYmFzaWNCbG9ja3MubGFzdCgpLT5vdXQoKS5udW1CaXRzKCkpOworICAgIG5ld091
dC5yZXNpemUobGFzdEJsb2NrLT5vdXQoKS5udW1CaXRzKCkpOwogICAgIGRvIHsKICAgICAgICAg
Y2hhbmdlZCA9IGZhbHNlOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2Jhc2ljQmxvY2tz
LnNpemUoKSAtIDE7IGktLTspIHsKLSAgICAgICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxv
Y2sgPSBtX2Jhc2ljQmxvY2tzW2ldLmdldCgpOworICAgICAgICBmb3IgKHN0ZDo6dW5pcXVlX3B0
cjxCeXRlY29kZUJhc2ljQmxvY2s+JiBibG9jayA6IG1fZ3JhcGguYmFzaWNCbG9ja3NJblJldmVy
c2VPcmRlcigpKSB7CiAgICAgICAgICAgICBuZXdPdXQuY2xlYXJBbGwoKTsKLSAgICAgICAgICAg
IGZvciAodW5zaWduZWQgaiA9IDA7IGogPCBibG9jay0+c3VjY2Vzc29ycygpLnNpemUoKTsgaisr
KQotICAgICAgICAgICAgICAgIG5ld091dC5tZXJnZShibG9jay0+c3VjY2Vzc29ycygpW2pdLT5p
bigpKTsKKyAgICAgICAgICAgIGZvciAoQnl0ZWNvZGVCYXNpY0Jsb2NrKiBzdWNjZXNzb3IgOiBi
bG9jay0+c3VjY2Vzc29ycygpKQorICAgICAgICAgICAgICAgIG5ld091dC5tZXJnZShzdWNjZXNz
b3ItPmluKCkpOwogICAgICAgICAgICAgYm9vbCBvdXREaWRDaGFuZ2UgPSBibG9jay0+b3V0KCku
c2V0QW5kQ2hlY2sobmV3T3V0KTsKLSAgICAgICAgICAgIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9y
QmxvY2sobV9jb2RlQmxvY2ssIGJsb2NrLCBtX2Jhc2ljQmxvY2tzKTsKKyAgICAgICAgICAgIGNv
bXB1dGVMb2NhbExpdmVuZXNzRm9yQmxvY2sobV9ncmFwaCwgYmxvY2suZ2V0KCkpOwogICAgICAg
ICAgICAgY2hhbmdlZCB8PSBvdXREaWRDaGFuZ2U7CiAgICAgICAgIH0KICAgICB9IHdoaWxlIChj
aGFuZ2VkKTsKQEAgLTIxNywxMiArMTU4LDEyIEBAIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5
c2lzOjpydW5MaXZlbmVzc0ZpeHBvaW50KCkKIAogdm9pZCBCeXRlY29kZUxpdmVuZXNzQW5hbHlz
aXM6OmdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQodW5zaWduZWQgYnl0ZWNvZGVPZmZz
ZXQsIEZhc3RCaXRWZWN0b3ImIHJlc3VsdCkKIHsKLSAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGJs
b2NrID0gZmluZEJhc2ljQmxvY2tGb3JCeXRlY29kZU9mZnNldChtX2Jhc2ljQmxvY2tzLCBieXRl
Y29kZU9mZnNldCk7CisgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jayA9IG1fZ3JhcGguZmlu
ZEJhc2ljQmxvY2tGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCk7CiAgICAgQVNTRVJU
KGJsb2NrKTsKICAgICBBU1NFUlQoIWJsb2NrLT5pc0VudHJ5QmxvY2soKSk7CiAgICAgQVNTRVJU
KCFibG9jay0+aXNFeGl0QmxvY2soKSk7CiAgICAgcmVzdWx0LnJlc2l6ZShibG9jay0+b3V0KCku
bnVtQml0cygpKTsKLSAgICBjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJ5dGVjb2RlT2Zmc2V0KG1f
Y29kZUJsb2NrLCBibG9jaywgbV9iYXNpY0Jsb2NrcywgYnl0ZWNvZGVPZmZzZXQsIHJlc3VsdCk7
CisgICAgY29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCeXRlY29kZU9mZnNldChtX2dyYXBoLCBibG9j
aywgYnl0ZWNvZGVPZmZzZXQsIHJlc3VsdCk7CiB9CiAKIGJvb2wgQnl0ZWNvZGVMaXZlbmVzc0Fu
YWx5c2lzOjpvcGVyYW5kSXNMaXZlQXRCeXRlY29kZU9mZnNldChpbnQgb3BlcmFuZCwgdW5zaWdu
ZWQgYnl0ZWNvZGVPZmZzZXQpCkBAIC0yNDQsMTEgKzE4NSwxMSBAQCBGYXN0Qml0VmVjdG9yIEJ5
dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Z2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29kZU9mZnNldCh1
bnNpZ25lZAogdm9pZCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGVGdWxsTGl2ZW5l
c3MoRnVsbEJ5dGVjb2RlTGl2ZW5lc3MmIHJlc3VsdCkKIHsKICAgICBGYXN0Qml0VmVjdG9yIG91
dDsKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IG1fZ3JhcGguY29kZUJsb2NrKCk7CiAgICAg
Ci0gICAgcmVzdWx0Lm1fbWFwLnJlc2l6ZShtX2NvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuc2l6
ZSgpKTsKKyAgICByZXN1bHQubV9tYXAucmVzaXplKGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCku
c2l6ZSgpKTsKICAgICAKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2Jhc2ljQmxvY2tzLnNpemUo
KTsgaS0tOykgewotICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrID0gbV9iYXNpY0Js
b2Nrc1tpXS5nZXQoKTsKKyAgICBmb3IgKHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxv
Y2s+JiBibG9jayA6IG1fZ3JhcGguYmFzaWNCbG9ja3NJblJldmVyc2VPcmRlcigpKSB7CiAgICAg
ICAgIGlmIChibG9jay0+aXNFbnRyeUJsb2NrKCkgfHwgYmxvY2stPmlzRXhpdEJsb2NrKCkpCiAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgCkBAIC0yNTYsNyArMTk3LDcgQEAgdm9pZCBC
eXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGVGdWxsTGl2ZW5lc3MoRnVsbEJ5dGVjb2Rl
TGl2ZW5lc3MmIHJlc3VsdCkKICAgICAgICAgCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGJs
b2NrLT5ieXRlY29kZU9mZnNldHMoKS5zaXplKCk7IGktLTspIHsKICAgICAgICAgICAgIHVuc2ln
bmVkIGJ5dGVjb2RlT2Zmc2V0ID0gYmxvY2stPmJ5dGVjb2RlT2Zmc2V0cygpW2ldOwotICAgICAg
ICAgICAgc3RlcE92ZXJJbnN0cnVjdGlvbihtX2NvZGVCbG9jaywgYmxvY2ssIG1fYmFzaWNCbG9j
a3MsIGJ5dGVjb2RlT2Zmc2V0LCBvdXQpOworICAgICAgICAgICAgc3RlcE92ZXJJbnN0cnVjdGlv
bihtX2dyYXBoLCBieXRlY29kZU9mZnNldCwgb3V0KTsKICAgICAgICAgICAgIHJlc3VsdC5tX21h
cFtieXRlY29kZU9mZnNldF0gPSBvdXQ7CiAgICAgICAgIH0KICAgICB9CkBAIC0yNjYsMTEgKzIw
NywxMSBAQCB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0ZUtpbGxzKEJ5dGVj
b2RlS2lsbHMmIHJlc3VsdCkKIHsKICAgICBGYXN0Qml0VmVjdG9yIG91dDsKICAgICAKLSAgICBy
ZXN1bHQubV9jb2RlQmxvY2sgPSBtX2NvZGVCbG9jazsKLSAgICByZXN1bHQubV9raWxsU2V0cyA9
IHN0ZDo6bWFrZV91bmlxdWU8Qnl0ZWNvZGVLaWxsczo6S2lsbFNldFtdPihtX2NvZGVCbG9jay0+
aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IG1fZ3Jh
cGguY29kZUJsb2NrKCk7CisgICAgcmVzdWx0Lm1fY29kZUJsb2NrID0gY29kZUJsb2NrOworICAg
IHJlc3VsdC5tX2tpbGxTZXRzID0gc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZUtpbGxzOjpLaWxs
U2V0W10+KGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKICAgICAKLSAgICBmb3Ig
KHVuc2lnbmVkIGkgPSBtX2Jhc2ljQmxvY2tzLnNpemUoKTsgaS0tOykgewotICAgICAgICBCeXRl
Y29kZUJhc2ljQmxvY2sqIGJsb2NrID0gbV9iYXNpY0Jsb2Nrc1tpXS5nZXQoKTsKKyAgICBmb3Ig
KHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+JiBibG9jayA6IG1fZ3JhcGguYmFz
aWNCbG9ja3NJblJldmVyc2VPcmRlcigpKSB7CiAgICAgICAgIGlmIChibG9jay0+aXNFbnRyeUJs
b2NrKCkgfHwgYmxvY2stPmlzRXhpdEJsb2NrKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgCkBAIC0yNzksNyArMjIwLDcgQEAgdm9pZCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6
OmNvbXB1dGVLaWxscyhCeXRlY29kZUtpbGxzJiByZXN1bHQpCiAgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IGJsb2NrLT5ieXRlY29kZU9mZnNldHMoKS5zaXplKCk7IGktLTspIHsKICAgICAgICAg
ICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0ID0gYmxvY2stPmJ5dGVjb2RlT2Zmc2V0cygpW2ld
OwogICAgICAgICAgICAgc3RlcE92ZXJJbnN0cnVjdGlvbigKLSAgICAgICAgICAgICAgICBtX2Nv
ZGVCbG9jaywgYmxvY2ssIG1fYmFzaWNCbG9ja3MsIGJ5dGVjb2RlT2Zmc2V0LAorICAgICAgICAg
ICAgICAgIG1fZ3JhcGgsIGJ5dGVjb2RlT2Zmc2V0LAogICAgICAgICAgICAgICAgIFsmXSAodW5z
aWduZWQgaW5kZXgpIHsKICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyBmb3IgdXNlcy4K
ICAgICAgICAgICAgICAgICAgICAgaWYgKG91dC5nZXQoaW5kZXgpKQpAQCAtMjk3LDEyICsyMzgs
MTMgQEAgdm9pZCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGVLaWxscyhCeXRlY29k
ZUtpbGxzJiByZXN1bHQpCiAKIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpkdW1wUmVz
dWx0cygpCiB7Ci0gICAgZGF0YUxvZygiXG5EdW1waW5nIGJ5dGVjb2RlIGxpdmVuZXNzIGZvciAi
LCAqbV9jb2RlQmxvY2ssICI6XG4iKTsKLSAgICBJbnRlcnByZXRlciogaW50ZXJwcmV0ZXIgPSBt
X2NvZGVCbG9jay0+dm0oKS0+aW50ZXJwcmV0ZXI7Ci0gICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0
aW9uc0JlZ2luID0gbV9jb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCk7Ci0gICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fYmFzaWNCbG9ja3Muc2l6ZSgpOyBpKyspIHsKLSAgICAg
ICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jayA9IG1fYmFzaWNCbG9ja3NbaV0uZ2V0KCk7Ci0g
ICAgICAgIGRhdGFMb2dGKCJcbkJ5dGVjb2RlIGJhc2ljIGJsb2NrICV1OiAlcCAob2Zmc2V0OiAl
dSwgbGVuZ3RoOiAldSlcbiIsIGksIGJsb2NrLCBibG9jay0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQo
KSwgYmxvY2stPnRvdGFsQnl0ZWNvZGVMZW5ndGgoKSk7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxv
Y2sgPSBtX2dyYXBoLmNvZGVCbG9jaygpOworICAgIGRhdGFMb2coIlxuRHVtcGluZyBieXRlY29k
ZSBsaXZlbmVzcyBmb3IgIiwgKmNvZGVCbG9jaywgIjpcbiIpOworICAgIEludGVycHJldGVyKiBp
bnRlcnByZXRlciA9IGNvZGVCbG9jay0+dm0oKS0+aW50ZXJwcmV0ZXI7CisgICAgSW5zdHJ1Y3Rp
b24qIGluc3RydWN0aW9uc0JlZ2luID0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigp
OworICAgIHVuc2lnbmVkIGkgPSAwOworICAgIGZvciAoc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2Rl
QmFzaWNCbG9jaz4mIGJsb2NrIDogbV9ncmFwaC5iYXNpY0Jsb2NrcygpKSB7CisgICAgICAgIGRh
dGFMb2dGKCJcbkJ5dGVjb2RlIGJhc2ljIGJsb2NrICV1OiAlcCAob2Zmc2V0OiAldSwgbGVuZ3Ro
OiAldSlcbiIsIGkrKywgYmxvY2suZ2V0KCksIGJsb2NrLT5sZWFkZXJCeXRlY29kZU9mZnNldCgp
LCBibG9jay0+dG90YWxCeXRlY29kZUxlbmd0aCgpKTsKICAgICAgICAgZGF0YUxvZ0YoIlN1Y2Nl
c3NvcnM6ICIpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSAwOyBqIDwgYmxvY2stPnN1Y2Nl
c3NvcnMoKS5zaXplKCk7IGorKykgewogICAgICAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBz
dWNjZXNzb3IgPSBibG9jay0+c3VjY2Vzc29ycygpW2pdOwpAQCAtMzEwLDExICsyNTIsMTEgQEAg
dm9pZCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmR1bXBSZXN1bHRzKCkKICAgICAgICAgfQog
ICAgICAgICBkYXRhTG9nRigiXG4iKTsKICAgICAgICAgaWYgKGJsb2NrLT5pc0VudHJ5QmxvY2so
KSkgewotICAgICAgICAgICAgZGF0YUxvZ0YoIkVudHJ5IGJsb2NrICVwXG4iLCBibG9jayk7Cisg
ICAgICAgICAgICBkYXRhTG9nRigiRW50cnkgYmxvY2sgJXBcbiIsIGJsb2NrLmdldCgpKTsKICAg
ICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAgICAgICAgIGlmIChibG9jay0+aXNFeGl0
QmxvY2soKSkgewotICAgICAgICAgICAgZGF0YUxvZ0YoIkV4aXQgYmxvY2s6ICVwXG4iLCBibG9j
ayk7CisgICAgICAgICAgICBkYXRhTG9nRigiRXhpdCBibG9jazogJXBcbiIsIGJsb2NrLmdldCgp
KTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAgICAgICAgIGZvciAodW5zaWdu
ZWQgYnl0ZWNvZGVPZmZzZXQgPSBibG9jay0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKTsgYnl0ZWNv
ZGVPZmZzZXQgPCBibG9jay0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKSArIGJsb2NrLT50b3RhbEJ5
dGVjb2RlTGVuZ3RoKCk7KSB7CkBAIC0zMjcsNyArMjY5LDcgQEAgdm9pZCBCeXRlY29kZUxpdmVu
ZXNzQW5hbHlzaXM6OmR1bXBSZXN1bHRzKCkKICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZ0Yo
IiV1ICIsIGopOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZGF0YUxvZ0YoIlxuIik7Ci0g
ICAgICAgICAgICBtX2NvZGVCbG9jay0+ZHVtcEJ5dGVjb2RlKFdURjo6ZGF0YUZpbGUoKSwgbV9j
b2RlQmxvY2stPmdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVjKCksIGluc3RydWN0aW9uc0JlZ2lu
LCBjdXJyZW50SW5zdHJ1Y3Rpb24pOworICAgICAgICAgICAgY29kZUJsb2NrLT5kdW1wQnl0ZWNv
ZGUoV1RGOjpkYXRhRmlsZSgpLCBjb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVj
KCksIGluc3RydWN0aW9uc0JlZ2luLCBjdXJyZW50SW5zdHJ1Y3Rpb24pOwogCiAgICAgICAgICAg
ICBPcGNvZGVJRCBvcGNvZGVJRCA9IGludGVycHJldGVyLT5nZXRPcGNvZGVJRChpbnN0cnVjdGlv
bnNCZWdpbltieXRlY29kZU9mZnNldF0udS5vcGNvZGUpOwogICAgICAgICAgICAgdW5zaWduZWQg
b3Bjb2RlTGVuZ3RoID0gb3Bjb2RlTGVuZ3Roc1tvcGNvZGVJRF07CkBAIC0zNDYsOCArMjg4LDYg
QEAgdm9pZCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmR1bXBSZXN1bHRzKCkKIAogdm9pZCBC
eXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGUoKQogewotICAgIGNvbXB1dGVCeXRlY29k
ZUJhc2ljQmxvY2tzKG1fY29kZUJsb2NrLCBtX2Jhc2ljQmxvY2tzKTsKLSAgICBBU1NFUlQobV9i
YXNpY0Jsb2Nrcy5zaXplKCkpOwogICAgIHJ1bkxpdmVuZXNzRml4cG9pbnQoKTsKIAogICAgIGlm
IChPcHRpb25zOjpkdW1wQnl0ZWNvZGVMaXZlbmVzc1Jlc3VsdHMoKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMu
aAppbmRleCBlY2UxNmYyMWYwMTUxMGE2NDI3ZmQ4NDExNDA3OWJlZDg3MGMwODc1Li4yMTgyYzIw
MGNlYjg3MzkyNDUzMjc0NjYxZjhjNzRlMjI2MjM0ZjIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5oCkBA
IC0yMywxMCArMjMsMTEgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAq
LwogCi0jaWZuZGVmIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc19oCi0jZGVmaW5lIEJ5dGVjb2Rl
TGl2ZW5lc3NBbmFseXNpc19oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkJ5dGVjb2RlQmFz
aWNCbG9jay5oIgorI2luY2x1ZGUgIkJ5dGVjb2RlR3JhcGguaCIKKyNpbmNsdWRlICJDb2RlQmxv
Y2suaCIKICNpbmNsdWRlIDx3dGYvRmFzdEJpdFZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9IYXNo
TWFwLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtMzQsNyArMzUsNiBAQAogbmFtZXNw
YWNlIEpTQyB7CiAKIGNsYXNzIEJ5dGVjb2RlS2lsbHM7Ci1jbGFzcyBDb2RlQmxvY2s7CiBjbGFz
cyBGdWxsQnl0ZWNvZGVMaXZlbmVzczsKIAogY2xhc3MgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lz
IHsKQEAgLTU2LDE0ICs1NiwxMiBAQCBjbGFzcyBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMgewog
CiAgICAgdm9pZCBnZXRMaXZlbmVzc0luZm9BdEJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVj
b2RlT2Zmc2V0LCBGYXN0Qml0VmVjdG9yJik7CiAKLSAgICBDb2RlQmxvY2sqIG1fY29kZUJsb2Nr
OwotICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4gbV9iYXNp
Y0Jsb2NrczsKKyAgICBCeXRlY29kZUdyYXBoPENvZGVCbG9jaz4gbV9ncmFwaDsKIH07CiAKIGlu
bGluZSBib29sIG9wZXJhbmRJc0Fsd2F5c0xpdmUoaW50IG9wZXJhbmQpOwogaW5saW5lIGJvb2wg
b3BlcmFuZFRoYXRJc05vdEFsd2F5c0xpdmVJc0xpdmUoY29uc3QgRmFzdEJpdFZlY3RvciYgb3V0
LCBpbnQgb3BlcmFuZCk7CiBpbmxpbmUgYm9vbCBvcGVyYW5kSXNMaXZlKGNvbnN0IEZhc3RCaXRW
ZWN0b3ImIG91dCwgaW50IG9wZXJhbmQpOworaW5saW5lIGJvb2wgaXNWYWxpZFJlZ2lzdGVyRm9y
TGl2ZW5lc3MoaW50IG9wZXJhbmQpOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKLQotI2VuZGlmIC8v
IEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzSW5saW5lcy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGluZXMu
aAppbmRleCA5YjVjNzU1ZmNiNmNkNTE4MDUxNDUwMDc4OTIyYWM0ZDZkNGQyMzhmLi45MGMyOTI5
OWEyNWY1NzljZGE2NDlkOTg3OGNlMTU0OGM0OGM3NTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzSW5saW5lcy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlz
aXNJbmxpbmVzLmgKQEAgLTUwLDYgKzUwLDE0IEBAIGlubGluZSBib29sIG9wZXJhbmRJc0xpdmUo
Y29uc3QgRmFzdEJpdFZlY3RvciYgb3V0LCBpbnQgb3BlcmFuZCkKICAgICByZXR1cm4gb3BlcmFu
ZElzQWx3YXlzTGl2ZShvcGVyYW5kKSB8fCBvcGVyYW5kVGhhdElzTm90QWx3YXlzTGl2ZUlzTGl2
ZShvdXQsIG9wZXJhbmQpOwogfQogCitpbmxpbmUgYm9vbCBpc1ZhbGlkUmVnaXN0ZXJGb3JMaXZl
bmVzcyhpbnQgb3BlcmFuZCkKK3sKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZyhvcGVy
YW5kKTsKKyAgICBpZiAodmlydHVhbFJlZy5pc0NvbnN0YW50KCkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICByZXR1cm4gdmlydHVhbFJlZy5pc0xvY2FsKCk7Cit9CisKIH0gLy8gbmFtZXNw
YWNlIEpTQwogCiAjZW5kaWYgLy8gQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzSW5saW5lc19oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVNb2RpZmlj
YXRpb25TZXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTW9k
aWZpY2F0aW9uU2V0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YWMyZjhlY2ExMTU5YzIzMTZhYjUxOGIzY2Fh
YTc0NzQ4ZWJhNTYwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlTW9kaWZpY2F0aW9uU2V0LmNwcApAQCAtMCwwICsxLDg0IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE2IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNv
bT4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkJ5dGVjb2RlTW9k
aWZpY2F0aW9uU2V0LmgiCisKKyNpbmNsdWRlIDx3dGYvQnViYmxlU29ydC5oPgorCituYW1lc3Bh
Y2UgSlNDIHsKKworaW50IEJ5dGVjb2RlTW9kaWZpY2F0aW9uU2V0OjphZGp1c3RPZmZzZXQoaW50
IGJ5dGVjb2RlT2Zmc2V0LCBpbnQganVtcFRhcmdldCkKK3sKKyAgICBpZiAoYnl0ZWNvZGVPZmZz
ZXQgPCBqdW1wVGFyZ2V0KSB7CisgICAgICAgIGF1dG8gc3RhcnQgPSBzdGQ6Omxvd2VyX2JvdW5k
KG1faW5zZXJ0aW9ucy5iZWdpbigpLCBtX2luc2VydGlvbnMuZW5kKCksIGJ5dGVjb2RlT2Zmc2V0
LCBbJl0gKGNvbnN0IEluc2VydGlvbiYgaW5zZXJ0aW9uLCBpbnQgYnl0ZWNvZGVPZmZzZXQpIHsK
KyAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KGluc2VydGlvbi5pbmRleCgpKSA8
IGJ5dGVjb2RlT2Zmc2V0OworICAgICAgICB9KTsKKyAgICAgICAgaWYgKHN0YXJ0ICE9IG1faW5z
ZXJ0aW9ucy5lbmQoKSkgeworICAgICAgICAgICAgYXV0byBlbmQgPSBzdGQ6Omxvd2VyX2JvdW5k
KG1faW5zZXJ0aW9ucy5iZWdpbigpLCBtX2luc2VydGlvbnMuZW5kKCksIGp1bXBUYXJnZXQsIFsm
XSAoY29uc3QgSW5zZXJ0aW9uJiBpbnNlcnRpb24sIGludCBqdW1wVGFyZ2V0KSB7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oaW5zZXJ0aW9uLmluZGV4KCkpIDwganVt
cFRhcmdldDsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgZm9yICg7IHN0YXJ0ICE9IGVu
ZDsgKytzdGFydCkgeworICAgICAgICAgICAgICAgIGlmIChzdGFydC0+ZWxlbWVudCgpLnR5cGUg
PT0gQ29tbWFuZDo6VHlwZTo6UmVtb3ZlKQorICAgICAgICAgICAgICAgICAgICBqdW1wVGFyZ2V0
IC09IHN0YXJ0LT5lbGVtZW50KCkubGVuZ3RoOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICAgICAganVtcFRhcmdldCArPSBzdGFydC0+ZWxlbWVudCgpLmxlbmd0aDsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4ganVtcFRhcmdldCAtIGJ5dGVj
b2RlT2Zmc2V0OworICAgIH0KKworICAgIGlmIChieXRlY29kZU9mZnNldCA9PSBqdW1wVGFyZ2V0
KQorICAgICAgICByZXR1cm4gMDsKKworICAgIHJldHVybiAtYWRqdXN0T2Zmc2V0KGp1bXBUYXJn
ZXQsIGJ5dGVjb2RlT2Zmc2V0KTsKK30KKwordm9pZCBCeXRlY29kZU1vZGlmaWNhdGlvblNldDo6
YXBwbHlNb2RpZmljYXRpb24oKQoreworICAgIGZvciAoc2l6ZV90IGluc2VydGlvbkluZGV4ID0g
bV9pbnNlcnRpb25zLnNpemUoKTsgaW5zZXJ0aW9uSW5kZXgtLTspIHsKKyAgICAgICAgY29uc3Qg
SW5zZXJ0aW9uJiBpbnNlcnRpb24gPSBtX2luc2VydGlvbnNbaW5zZXJ0aW9uSW5kZXhdOworICAg
ICAgICBpZiAoaW5zZXJ0aW9uLmVsZW1lbnQoKS50eXBlID09IENvbW1hbmQ6OlR5cGU6OlJlbW92
ZSkKKyAgICAgICAgICAgIG1fZ3JhcGguaW5zdHJ1Y3Rpb25zKCkucmVtb3ZlKGluc2VydGlvbi5p
bmRleCgpLCBpbnNlcnRpb24uZWxlbWVudCgpLmxlbmd0aCk7CisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIG1fZ3JhcGguaW5zdHJ1Y3Rpb25zKCkuaW5zZXJ0KGluc2VydGlvbi5pbmRleCgpLCBp
bnNlcnRpb24uZWxlbWVudCgpLmJ5dGVjb2RlLmluc3RydWN0aW9ucywgb3Bjb2RlTGVuZ3RoKGlu
c2VydGlvbi5lbGVtZW50KCkuYnl0ZWNvZGUuaW5zdHJ1Y3Rpb25zWzBdLnUub3Bjb2RlKSk7Cisg
ICAgfQorICAgIG1faW5zZXJ0aW9ucy5jbGVhcigpOworfQorCit2b2lkIEJ5dGVjb2RlTW9kaWZp
Y2F0aW9uU2V0OjpleGVjdXRlKCkKK3sKKyAgICBXVEY6OmJ1YmJsZVNvcnQobV9pbnNlcnRpb25z
LmJlZ2luKCksIG1faW5zZXJ0aW9ucy5lbmQoKSwgW10gKGNvbnN0IEluc2VydGlvbiYgbGhzLCBj
b25zdCBJbnNlcnRpb24mIHJocykgeworICAgICAgICAvLyBXZSB3b3VsZCBsaWtlIHRvIHBlcmZv
cm0gcmVtb3ZlIG9wZXJhdGlvbiBiZWZvcmUgaW5zZXJ0aW9uLgorICAgICAgICBpZiAobGhzLmlu
ZGV4KCkgPT0gcmhzLmluZGV4KCkpCisgICAgICAgICAgICByZXR1cm4gcmhzLmVsZW1lbnQoKS50
eXBlID09IENvbW1hbmQ6OlR5cGU6OlJlbW92ZTsKKyAgICAgICAgcmV0dXJuIGxocyA8IHJoczsK
KyAgICB9KTsKKworICAgIFVubGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBtX2dyYXBoLmNv
ZGVCbG9jaygpOworICAgIGNvZGVCbG9jay0+YXBwbHlNb2RpZmljYXRpb24oKnRoaXMpOworfQor
Cit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZU1vZGlmaWNhdGlvblNldC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlTW9kaWZpY2F0aW9uU2V0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzkzOWRhYTQ1
YzhlMjY0MjA5ZTdhMjJlY2YzZTBkNzhhNGFkMzdhNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZU1vZGlmaWNhdGlvblNldC5oCkBAIC0w
LDAgKzEsODggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgWXVzdWtlIFN1enVraSA8dXRh
dGFuZS50ZWFAZ21haWwuY29tPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUg
IkJ5dGVjb2RlR3JhcGguaCIKKyNpbmNsdWRlICJCeXRlY29kZXMuaCIKKyNpbmNsdWRlICJVbmxp
bmtlZENvZGVCbG9jay5oIgorI2luY2x1ZGUgPHd0Zi9JbnNlcnRpb24uaD4KKworbmFtZXNwYWNl
IEpTQyB7CisKK2NsYXNzIEJ5dGVjb2RlTW9kaWZpY2F0aW9uU2V0IHsKK3B1YmxpYzoKKyAgICBz
dHJ1Y3QgSW5zZXJ0ZWRCeXRlY29kZSB7CisgICAgICAgIFVubGlua2VkSW5zdHJ1Y3Rpb24gaW5z
dHJ1Y3Rpb25zW01BWF9PUENPREVfTEVOR1RIX09GX0JZVEVDT0RFXTsKKyAgICB9OworCisgICAg
c3RydWN0IENvbW1hbmQgeworICAgICAgICBlbnVtIGNsYXNzIFR5cGUgeworICAgICAgICAgICAg
SW5zZXJ0LAorICAgICAgICAgICAgUmVtb3ZlLAorICAgICAgICB9OworCisgICAgICAgIFR5cGUg
dHlwZTsKKyAgICAgICAgc2l6ZV90IGxlbmd0aDsKKyAgICAgICAgSW5zZXJ0ZWRCeXRlY29kZSBi
eXRlY29kZTsKKyAgICB9OworCisgICAgdHlwZWRlZiBXVEY6Okluc2VydGlvbjxDb21tYW5kPiBJ
bnNlcnRpb247CisKKyAgICBCeXRlY29kZU1vZGlmaWNhdGlvblNldChCeXRlY29kZUdyYXBoPFVu
bGlua2VkQ29kZUJsb2NrPiYgZ3JhcGgpCisgICAgICAgIDogbV9ncmFwaChncmFwaCkKKyAgICB7
CisgICAgfQorCisgICAgdGVtcGxhdGU8Y2xhc3MuLi4gQXJncz4KKyAgICB2b2lkIGluc2VydCh1
bnNpZ25lZCBieXRlY29kZU9mZnNldCwgT3Bjb2RlSUQgb3Bjb2RlSUQsIEFyZ3MuLi4gYXJncykK
KyAgICB7CisgICAgICAgIEluc2VydGVkQnl0ZWNvZGUgYnl0ZWNvZGUgPSB7IHsKKyAgICAgICAg
ICAgIFVubGlua2VkSW5zdHJ1Y3Rpb24ob3Bjb2RlSUQpLAorICAgICAgICAgICAgVW5saW5rZWRJ
bnN0cnVjdGlvbihhcmdzKS4uLgorICAgICAgICB9IH07CisgICAgICAgIG1faW5zZXJ0aW9ucy5h
cHBlbmQoSW5zZXJ0aW9uKGJ5dGVjb2RlT2Zmc2V0LCBDb21tYW5kIHsgQ29tbWFuZDo6VHlwZTo6
SW5zZXJ0LCBvcGNvZGVMZW5ndGgob3Bjb2RlSUQpLCBieXRlY29kZSB9KSk7CisgICAgfQorCisg
ICAgdm9pZCByZW1vdmVCeXRlY29kZSh1bnNpZ25lZCBieXRlY29kZU9mZnNldCkKKyAgICB7Cisg
ICAgICAgIG1faW5zZXJ0aW9ucy5hcHBlbmQoSW5zZXJ0aW9uKGJ5dGVjb2RlT2Zmc2V0LCBDb21t
YW5kIHsgQ29tbWFuZDo6VHlwZTo6UmVtb3ZlLCBvcGNvZGVMZW5ndGgobV9ncmFwaC5pbnN0cnVj
dGlvbnMoKVtieXRlY29kZU9mZnNldF0udS5vcGNvZGUpLCBJbnNlcnRlZEJ5dGVjb2RlIHsgfSB9
KSk7CisgICAgfQorCisgICAgdm9pZCBleGVjdXRlKCk7CisKKyAgICBCeXRlY29kZUdyYXBoPFVu
bGlua2VkQ29kZUJsb2NrPiYgZ3JhcGgoKSB7IHJldHVybiBtX2dyYXBoOyB9CisKKyAgICBpbnQg
YWRqdXN0T2Zmc2V0KGludCBieXRlY29kZU9mZnNldCwgaW50IGp1bXBUYXJnZXQpOworCitwcml2
YXRlOgorICAgIGZyaWVuZCBjbGFzcyBVbmxpbmtlZENvZGVCbG9jazsKKyAgICB2b2lkIGFwcGx5
TW9kaWZpY2F0aW9uKCk7CisKKyAgICBCeXRlY29kZUdyYXBoPFVubGlua2VkQ29kZUJsb2NrPiYg
bV9ncmFwaDsKKyAgICBWZWN0b3I8SW5zZXJ0aW9uLCA4PiBtX2luc2VydGlvbnM7Cit9OworCit9
IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZVVzZURlZi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlVXNlRGVmLmgKaW5kZXggNTcwODQ0YzM1ZDkwMjVlZTkxYWQ0Njk4YmFiOWJjMWE2N2Zk
ODM0OS4uNGNhNThkMDNmYzlmNzc2MDBiMTBmYzk3NjIzNzlkZjZmNWQ5YTU0MyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKQEAgLTI3LDE4
ICsyNywxMyBAQAogI2RlZmluZSBCeXRlY29kZVVzZURlZl9oCiAKICNpbmNsdWRlICJDb2RlQmxv
Y2suaCIKKyNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAotdGVt
cGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KLXZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNl
dCgKLSAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaywg
dW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCit0ZW1wbGF0
ZTx0eXBlbmFtZSBCbG9jaywgdHlwZW5hbWUgRnVuY3RvciwgdHlwZW5hbWUgSW5zdHJ1Y3Rpb24+
Cit2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoQmxvY2sqIGNvZGVCbG9jaywgT3Bj
b2RlSUQgb3Bjb2RlSUQsIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgY29uc3QgRnVuY3RvciYg
ZnVuY3RvcikKIHsKLSAgICBJbnRlcnByZXRlciogaW50ZXJwcmV0ZXIgPSBjb2RlQmxvY2stPnZt
KCktPmludGVycHJldGVyOwotICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiA9IGNv
ZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsKLSAgICBJbnN0cnVjdGlvbiogaW5zdHJ1
Y3Rpb24gPSAmaW5zdHJ1Y3Rpb25zQmVnaW5bYnl0ZWNvZGVPZmZzZXRdOwotICAgIE9wY29kZUlE
IG9wY29kZUlEID0gaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGluc3RydWN0aW9uLT51Lm9wY29k
ZSk7Ci0KICAgICBpZiAob3Bjb2RlSUQgIT0gb3BfZW50ZXIgJiYgY29kZUJsb2NrLT53YXNDb21w
aWxlZFdpdGhEZWJ1Z2dpbmdPcGNvZGVzKCkgJiYgY29kZUJsb2NrLT5zY29wZVJlZ2lzdGVyKCku
aXNWYWxpZCgpKQogICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29k
ZUlELCBjb2RlQmxvY2stPnNjb3BlUmVnaXN0ZXIoKS5vZmZzZXQoKSk7CiAKQEAgLTc1LDggKzcw
LDcgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAogICAgIGNhc2Ugb3Bfam5l
cV9udWxsOgogICAgIGNhc2Ugb3BfZGVjOgogICAgIGNhc2Ugb3BfaW5jOgotICAgIGNhc2Ugb3Bf
bG9nX3NoYWRvd19jaGlja2VuX3Byb2xvZ3VlOgotICAgIGNhc2Ugb3BfcmVzdW1lOiB7CisgICAg
Y2FzZSBvcF9sb2dfc2hhZG93X2NoaWNrZW5fcHJvbG9ndWU6IHsKICAgICAgICAgQVNTRVJUKG9w
Y29kZUxlbmd0aHNbb3Bjb2RlSURdID4gMSk7CiAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBp
bnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CiAgICAgICAg
IHJldHVybjsKQEAgLTI4NywyMiArMjgxLDEzIEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29k
ZU9mZnNldCgKICAgICAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bj
b2RlSUQsIGNvZGVCbG9jay0+c2NvcGVSZWdpc3RlcigpLm9mZnNldCgpKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KLSAgICBjYXNlIG9wX3NhdmU6IHsKLSAgICAgICAgZnVuY3Rvcihjb2RlQmxv
Y2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKTsKLSAg
ICAgICAgdW5zaWduZWQgbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0ID0gYnl0ZWNvZGVPZmZzZXQg
KyBpbnN0cnVjdGlvblszXS51Lm9wZXJhbmQ7Ci0gICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9jayog
bWVyZ2VQb2ludEJsb2NrID0gbnVsbHB0cjsKLSAgICAgICAgZm9yIChCeXRlY29kZUJhc2ljQmxv
Y2sqIHN1Y2Nlc3NvciA6IGJsb2NrLT5zdWNjZXNzb3JzKCkpIHsKLSAgICAgICAgICAgIGlmIChz
dWNjZXNzb3ItPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCkgPT0gbWVyZ2VQb2ludEJ5dGVjb2RlT2Zm
c2V0KSB7Ci0gICAgICAgICAgICAgICAgbWVyZ2VQb2ludEJsb2NrID0gc3VjY2Vzc29yOwotICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIEFT
U0VSVChtZXJnZVBvaW50QmxvY2spOwotICAgICAgICBtZXJnZVBvaW50QmxvY2stPmluKCkuZm9y
RWFjaFNldEJpdChbJl0odW5zaWduZWQgbG9jYWwpIHsKLSAgICAgICAgICAgIGZ1bmN0b3IoY29k
ZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGxv
Y2FsKS5vZmZzZXQoKSk7Ci0gICAgICAgIH0pOworCisgICAgY2FzZSBvcF9zYXZlOgorICAgIGNh
c2Ugb3BfcmVzdW1lOiB7CisgICAgICAgIC8vIERvIG5vdGhpbmcgaW4gbGl2ZW5lc3MgYW5hbHlz
aXMuCiAgICAgICAgIHJldHVybjsKICAgICB9CisKICAgICBkZWZhdWx0OgogICAgICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBicmVhazsKQEAgLTMxMCwxMiArMjk1
LDE4IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCgKIH0KIAogdGVtcGxhdGU8
dHlwZW5hbWUgRnVuY3Rvcj4KLXZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChDb2Rl
QmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaywgdW5zaWduZWQgYnl0
ZWNvZGVPZmZzZXQsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCit2b2lkIGNvbXB1dGVVc2VzRm9y
Qnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlT2Zm
c2V0LCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQogewogICAgIEludGVycHJldGVyKiBpbnRlcnBy
ZXRlciA9IGNvZGVCbG9jay0+dm0oKS0+aW50ZXJwcmV0ZXI7CiAgICAgSW5zdHJ1Y3Rpb24qIGlu
c3RydWN0aW9uc0JlZ2luID0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpOwogICAg
IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9ICZpbnN0cnVjdGlvbnNCZWdpbltieXRlY29kZU9m
ZnNldF07CiAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQo
aW5zdHJ1Y3Rpb24tPnUub3Bjb2RlKTsKKyAgICBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0
KGNvZGVCbG9jaywgb3Bjb2RlSUQsIGluc3RydWN0aW9uLCBmdW5jdG9yKTsKK30KKwordGVtcGxh
dGU8dHlwZW5hbWUgQmxvY2ssIHR5cGVuYW1lIEluc3RydWN0aW9uLCB0eXBlbmFtZSBGdW5jdG9y
Pgordm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KEJsb2NrKiBjb2RlQmxvY2ssIE9w
Y29kZUlEIG9wY29kZUlELCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIGNvbnN0IEZ1bmN0b3Im
IGZ1bmN0b3IpCit7CiAgICAgc3dpdGNoIChvcGNvZGVJRCkgewogICAgIC8vIFRoZXNlIGRvbid0
IGRlZmluZSBhbnl0aGluZy4KICAgICBjYXNlIG9wX2NvcHlfcmVzdDoKQEAgLTMyMyw3ICszMTQs
NiBAQCB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvYwogICAgIGNhc2Ugb3BfZW5kOgogICAgIGNhc2Ug
b3BfdGhyb3c6CiAgICAgY2FzZSBvcF90aHJvd19zdGF0aWNfZXJyb3I6Ci0gICAgY2FzZSBvcF9z
YXZlOgogICAgIGNhc2Ugb3BfYXNzZXJ0OgogICAgIGNhc2Ugb3BfZGVidWc6CiAgICAgY2FzZSBv
cF9yZXQ6CkBAIC00NjMsNyArNDUzLDcgQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zm
c2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2MKICAgICBj
YXNlIG9wX2RlbF9ieV9pZDoKICAgICBjYXNlIG9wX2RlbF9ieV92YWw6CiAgICAgY2FzZSBvcF91
bnNpZ25lZDoKLSAgICBjYXNlIG9wX2dldF9mcm9tX2FyZ3VtZW50czogCisgICAgY2FzZSBvcF9n
ZXRfZnJvbV9hcmd1bWVudHM6CiAgICAgY2FzZSBvcF9nZXRfcmVzdF9sZW5ndGg6IHsKICAgICAg
ICAgQVNTRVJUKG9wY29kZUxlbmd0aHNbb3Bjb2RlSURdID4gMSk7CiAgICAgICAgIGZ1bmN0b3Io
Y29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzFdLnUub3BlcmFu
ZCk7CkBAIC00ODAsMTggKzQ3MCwyNyBAQCB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZz
ZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvYwogICAgICAg
ICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgdmlydHVhbFJl
Z2lzdGVyRm9yTG9jYWwoaSkub2Zmc2V0KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQorICAg
IGNhc2Ugb3Bfc2F2ZToKICAgICBjYXNlIG9wX3Jlc3VtZTogewotICAgICAgICBSRUxFQVNFX0FT
U0VSVChibG9jay0+c3VjY2Vzc29ycygpLnNpemUoKSA9PSAxKTsKLSAgICAgICAgLy8gRklYTUU6
IFRoaXMgaXMgcmVhbGx5IGRpcnR5LgotICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTU5MjgxCi0gICAgICAgIGJsb2NrLT5zdWNjZXNzb3JzKClbMF0t
PmluKCkuZm9yRWFjaFNldEJpdChbJl0odW5zaWduZWQgbG9jYWwpIHsKLSAgICAgICAgICAgIGZ1
bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIHZpcnR1YWxSZWdpc3RlckZv
ckxvY2FsKGxvY2FsKS5vZmZzZXQoKSk7Ci0gICAgICAgIH0pOworICAgICAgICAvLyBEbyBub3Ro
aW5nIGluIGxpdmVuZXNzIGFuYWx5c2lzLgogICAgICAgICByZXR1cm47CiAgICAgfQorICAgIGRl
ZmF1bHQ6CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJl
dHVybjsKICAgICB9CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+Cit2b2lkIGNvbXB1
dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIHVuc2lnbmVkIGJ5
dGVjb2RlT2Zmc2V0LCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQoreworICAgIEludGVycHJldGVy
KiBpbnRlcnByZXRlciA9IGNvZGVCbG9jay0+dm0oKS0+aW50ZXJwcmV0ZXI7CisgICAgSW5zdHJ1
Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luID0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdp
bigpOworICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9ICZpbnN0cnVjdGlvbnNCZWdpblti
eXRlY29kZU9mZnNldF07CisgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnRlcnByZXRlci0+Z2V0
T3Bjb2RlSUQoaW5zdHJ1Y3Rpb24tPnUub3Bjb2RlKTsKKyAgICBjb21wdXRlRGVmc0ZvckJ5dGVj
b2RlT2Zmc2V0KGNvZGVCbG9jaywgb3Bjb2RlSUQsIGluc3RydWN0aW9uLCBmdW5jdG9yKTsKK30K
KwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBCeXRlY29kZVVzZURlZl9oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IGVlODE5MTZm
YjBmNWYyMDUwNWRkYjVkZTk0NWU4NWJmNmU0YjZkOWEuLmQ5YjgxZWU1OGExMDhiMWMxZDkxNzhi
MDI5ZDE4OGM5OGI5YmE2NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2suY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiQXJpdGhQcm9maWxlLmgi
CiAjaW5jbHVkZSAiQmFzaWNCbG9ja0xvY2F0aW9uLmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVHZW5l
cmF0b3IuaCIKKyNpbmNsdWRlICJCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuaCIKICNpbmNsdWRl
ICJCeXRlY29kZVVzZURlZi5oIgogI2luY2x1ZGUgIkNhbGxMaW5rU3RhdHVzLmgiCiAjaW5jbHVk
ZSAiREZHQ2FwYWJpbGl0aWVzLmgiCkBAIC02OTYsMTggKzY5Nyw2IEBAIHZvaWQgQ29kZUJsb2Nr
OjpkdW1wQnl0ZWNvZGUoUHJpbnRTdHJlYW0mIG91dCkKICAgICAgICAgfSB3aGlsZSAoaSA8IG1f
cmFyZURhdGEtPm1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlcy5zaXplKCkpOwogICAgIH0KIAotICAg
IGlmIChtX3JhcmVEYXRhICYmICFtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxk
LmlzRW1wdHkoKSkgewotICAgICAgICBvdXQucHJpbnRmKCJcbkxpdmUgQ2FsbGVlIExvY2Fsczpc
biIpOwotICAgICAgICB1bnNpZ25lZCBpID0gMDsKLSAgICAgICAgZG8gewotICAgICAgICAgICAg
Y29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZW5lc3MgPSBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVM
b2NhbHNBdFlpZWxkW2ldOwotICAgICAgICAgICAgb3V0LnByaW50ZigiICBsaXZlJTF1ID0gIiwg
aSk7Ci0gICAgICAgICAgICBsaXZlbmVzcy5kdW1wKG91dCk7Ci0gICAgICAgICAgICBvdXQucHJp
bnRmKCJcbiIpOwotICAgICAgICAgICAgKytpOwotICAgICAgICB9IHdoaWxlIChpIDwgbV9yYXJl
RGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZC5zaXplKCkpOwotICAgIH0KLQogICAgIG91
dC5wcmludGYoIlxuIik7CiB9CiAKQEAgLTE2NzEsMzEgKzE2NjAsNiBAQCB2b2lkIENvZGVCbG9j
azo6ZHVtcEJ5dGVjb2RlKAogICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVkIiwgZGVidWdI
b29rTmFtZShkZWJ1Z0hvb2tJRCksIGhhc0JyZWFrcG9pbnRGbGFnKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9Ci0gICAgICAgIGNhc2Ugb3Bfc2F2ZTogewotICAgICAgICAgICAgaW50
IGdlbmVyYXRvciA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgdW5zaWduZWQgbGl2
ZUNhbGxlZUxvY2Fsc0luZGV4ID0gKCsraXQpLT51LnVuc2lnbmVkVmFsdWU7Ci0gICAgICAgICAg
ICBpbnQgb2Zmc2V0ID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBGYXN0Qml0VmVj
dG9yIGxpdmVuZXNzOwotICAgICAgICAgICAgaWYgKGxpdmVDYWxsZWVMb2NhbHNJbmRleCA8IG1f
cmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQuc2l6ZSgpKQotICAgICAgICAgICAg
ICAgIGxpdmVuZXNzID0gbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZFtsaXZl
Q2FsbGVlTG9jYWxzSW5kZXhdOwotICAgICAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwg
ZXhlYywgbG9jYXRpb24sIGl0LCAic2F2ZSIpOwotICAgICAgICAgICAgb3V0LnByaW50ZigiJXMs
ICIsIHJlZ2lzdGVyTmFtZShnZW5lcmF0b3IpLmRhdGEoKSk7Ci0gICAgICAgICAgICBsaXZlbmVz
cy5kdW1wKG91dCk7Ci0gICAgICAgICAgICBvdXQucHJpbnRmKCIoQGxpdmUlMXUpLCAlZCgtPiVk
KSIsIGxpdmVDYWxsZWVMb2NhbHNJbmRleCwgb2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNldCk7Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIG9wX3Jlc3VtZTogewot
ICAgICAgICAgICAgaW50IGdlbmVyYXRvciA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAg
ICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gKCsraXQpLT51LnVuc2lnbmVkVmFs
dWU7Ci0gICAgICAgICAgICBGYXN0Qml0VmVjdG9yIGxpdmVuZXNzOwotICAgICAgICAgICAgaWYg
KGxpdmVDYWxsZWVMb2NhbHNJbmRleCA8IG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0
WWllbGQuc2l6ZSgpKQotICAgICAgICAgICAgICAgIGxpdmVuZXNzID0gbV9yYXJlRGF0YS0+bV9s
aXZlQ2FsbGVlTG9jYWxzQXRZaWVsZFtsaXZlQ2FsbGVlTG9jYWxzSW5kZXhdOwotICAgICAgICAg
ICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAicmVzdW1lIik7
Ci0gICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgIiwgcmVnaXN0ZXJOYW1lKGdlbmVyYXRvciku
ZGF0YSgpKTsKLSAgICAgICAgICAgIGxpdmVuZXNzLmR1bXAob3V0KTsKLSAgICAgICAgICAgIG91
dC5wcmludGYoIihAbGl2ZSUxdSkiLCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpOwotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9hc3NlcnQ6IHsKICAgICAgICAg
ICAgIGludCBjb25kaXRpb24gPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBs
aW5lID0gKCsraXQpLT51Lm9wZXJhbmQ7CkBAIC0xOTA3LDcgKzE4NzEsNiBAQCB2b2lkIENvZGVC
bG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBDb3B5UGFyc2VkQmxvY2tUYWcsIENvZGVCbG9j
ayYgb3RoZXIpCiAgICAgICAgIG1fcmFyZURhdGEtPm1fY29uc3RhbnRCdWZmZXJzID0gb3RoZXIu
bV9yYXJlRGF0YS0+bV9jb25zdGFudEJ1ZmZlcnM7CiAgICAgICAgIG1fcmFyZURhdGEtPm1fc3dp
dGNoSnVtcFRhYmxlcyA9IG90aGVyLm1fcmFyZURhdGEtPm1fc3dpdGNoSnVtcFRhYmxlczsKICAg
ICAgICAgbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzID0gb3RoZXIubV9yYXJl
RGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzOwotICAgICAgICBtX3JhcmVEYXRhLT5tX2xp
dmVDYWxsZWVMb2NhbHNBdFlpZWxkID0gb3RoZXIubV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9j
YWxzQXRZaWVsZDsKICAgICB9CiAgICAgCiAgICAgaGVhcCgpLT5tX2NvZGVCbG9ja3MuYWRkKHRo
aXMpOwpAQCAtMjAyOSw3ICsxOTkyLDcgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9u
KFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICAg
ICAgICAgICAgICBVbmxpbmtlZFN0cmluZ0p1bXBUYWJsZTo6U3RyaW5nT2Zmc2V0VGFibGU6Oml0
ZXJhdG9yIGVuZCA9IHVubGlua2VkQ29kZUJsb2NrLT5zdHJpbmdTd2l0Y2hKdW1wVGFibGUoaSku
b2Zmc2V0VGFibGUuZW5kKCk7CiAgICAgICAgICAgICAgICAgZm9yICg7IHB0ciAhPSBlbmQ7ICsr
cHRyKSB7CiAgICAgICAgICAgICAgICAgICAgIE9mZnNldExvY2F0aW9uIG9mZnNldDsKLSAgICAg
ICAgICAgICAgICAgICAgb2Zmc2V0LmJyYW5jaE9mZnNldCA9IHB0ci0+dmFsdWU7CisgICAgICAg
ICAgICAgICAgICAgIG9mZnNldC5icmFuY2hPZmZzZXQgPSBwdHItPnZhbHVlLmJyYW5jaE9mZnNl
dDsKICAgICAgICAgICAgICAgICAgICAgbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFi
bGVzW2ldLm9mZnNldFRhYmxlLmFkZChwdHItPmtleSwgb2Zmc2V0KTsKICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICB9CkBAIC0yMDY5LDExICsyMDMyLDE3IEBAIHZvaWQgQ29kZUJsb2Nr
OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJs
ZSwgVW5saW5rCiAgICAgLy8gQm9va2tlZXAgdGhlIHN0cm9uZ2x5IHJlZmVyZW5jZWQgbW9kdWxl
IGVudmlyb25tZW50cy4KICAgICBIYXNoU2V0PEpTTW9kdWxlRW52aXJvbm1lbnQqPiBzdHJvbmds
eVJlZmVyZW5jZWRNb2R1bGVFbnZpcm9ubWVudHM7CiAKLSAgICAvLyBCb29ra2VlcCB0aGUgbWVy
Z2UgcG9pbnQgYnl0ZWNvZGUgb2Zmc2V0cy4KLSAgICBWZWN0b3I8c2l6ZV90PiBtZXJnZVBvaW50
Qnl0ZWNvZGVPZmZzZXRzOwotCiAgICAgUmVmQ291bnRlZEFycmF5PEluc3RydWN0aW9uPiBpbnN0
cnVjdGlvbnMoaW5zdHJ1Y3Rpb25Db3VudCk7CiAKKyAgICB1bnNpZ25lZCB2YWx1ZVByb2ZpbGVD
b3VudCA9IDA7CisgICAgYXV0byBsaW5rVmFsdWVQcm9maWxlID0gWyZdKHVuc2lnbmVkIGJ5dGVj
b2RlT2Zmc2V0LCB1bnNpZ25lZCBvcExlbmd0aCkgeworICAgICAgICB1bnNpZ25lZCB2YWx1ZVBy
b2ZpbGVJbmRleCA9IHZhbHVlUHJvZmlsZUNvdW50Kys7CisgICAgICAgIFZhbHVlUHJvZmlsZSog
cHJvZmlsZSA9ICZtX3ZhbHVlUHJvZmlsZXNbdmFsdWVQcm9maWxlSW5kZXhdOworICAgICAgICBB
U1NFUlQocHJvZmlsZS0+bV9ieXRlY29kZU9mZnNldCA9PSAtMSk7CisgICAgICAgIHByb2ZpbGUt
Pm1fYnl0ZWNvZGVPZmZzZXQgPSBieXRlY29kZU9mZnNldDsKKyAgICAgICAgaW5zdHJ1Y3Rpb25z
W2J5dGVjb2RlT2Zmc2V0ICsgb3BMZW5ndGggLSAxXSA9IHByb2ZpbGU7CisgICAgfTsKKwogICAg
IGZvciAodW5zaWduZWQgaSA9IDA7ICFpbnN0cnVjdGlvblJlYWRlci5hdEVuZCgpOyApIHsKICAg
ICAgICAgY29uc3QgVW5saW5rZWRJbnN0cnVjdGlvbiogcGMgPSBpbnN0cnVjdGlvblJlYWRlci5u
ZXh0KCk7CiAKQEAgLTIxMDgsMTAgKzIwNzcsNyBAQCB2b2lkIENvZGVCbG9jazo6ZmluaXNoQ3Jl
YXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGluawog
ICAgICAgICBjYXNlIG9wX2dldF9ieV9pZDoKICAgICAgICAgY2FzZSBvcF9nZXRfZnJvbV9hcmd1
bWVudHM6CiAgICAgICAgIGNhc2Ugb3BfdG9fbnVtYmVyOiB7Ci0gICAgICAgICAgICBWYWx1ZVBy
b2ZpbGUqIHByb2ZpbGUgPSAmbV92YWx1ZVByb2ZpbGVzW3BjW29wTGVuZ3RoIC0gMV0udS5vcGVy
YW5kXTsKLSAgICAgICAgICAgIEFTU0VSVChwcm9maWxlLT5tX2J5dGVjb2RlT2Zmc2V0ID09IC0x
KTsKLSAgICAgICAgICAgIHByb2ZpbGUtPm1fYnl0ZWNvZGVPZmZzZXQgPSBpOwotICAgICAgICAg
ICAgaW5zdHJ1Y3Rpb25zW2kgKyBvcExlbmd0aCAtIDFdID0gcHJvZmlsZTsKKyAgICAgICAgICAg
IGxpbmtWYWx1ZVByb2ZpbGUoaSwgb3BMZW5ndGgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KICAgICAgICAgY2FzZSBvcF9wdXRfYnlfdmFsOiB7CkBAIC0yMTQ4LDEwICsyMTE0LDcg
QEAgdm9pZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJs
ZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICAgICAgY2FzZSBvcF9jYWxsOgogICAgICAg
ICBjYXNlIG9wX3RhaWxfY2FsbDoKICAgICAgICAgY2FzZSBvcF9jYWxsX2V2YWw6IHsKLSAgICAg
ICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9ICZtX3ZhbHVlUHJvZmlsZXNbcGNbb3BMZW5n
dGggLSAxXS51Lm9wZXJhbmRdOwotICAgICAgICAgICAgQVNTRVJUKHByb2ZpbGUtPm1fYnl0ZWNv
ZGVPZmZzZXQgPT0gLTEpOwotICAgICAgICAgICAgcHJvZmlsZS0+bV9ieXRlY29kZU9mZnNldCA9
IGk7Ci0gICAgICAgICAgICBpbnN0cnVjdGlvbnNbaSArIG9wTGVuZ3RoIC0gMV0gPSBwcm9maWxl
OworICAgICAgICAgICAgbGlua1ZhbHVlUHJvZmlsZShpLCBvcExlbmd0aCk7CiAgICAgICAgICAg
ICBpbnQgYXJyYXlQcm9maWxlSW5kZXggPSBwY1tvcExlbmd0aCAtIDJdLnUub3BlcmFuZDsKICAg
ICAgICAgICAgIG1fYXJyYXlQcm9maWxlc1thcnJheVByb2ZpbGVJbmRleF0gPSBBcnJheVByb2Zp
bGUoaSk7CiAgICAgICAgICAgICBpbnN0cnVjdGlvbnNbaSArIG9wTGVuZ3RoIC0gMl0gPSAmbV9h
cnJheVByb2ZpbGVzW2FycmF5UHJvZmlsZUluZGV4XTsKQEAgLTIxNjAsMTAgKzIxMjMsNyBAQCB2
b2lkIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBv
d25lckV4ZWN1dGFibGUsIFVubGluawogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfY29uc3Ry
dWN0OiB7CiAgICAgICAgICAgICBpbnN0cnVjdGlvbnNbaSArIDVdID0gJm1fbGxpbnRDYWxsTGlu
a0luZm9zW3BjWzVdLnUub3BlcmFuZF07Ci0gICAgICAgICAgICBWYWx1ZVByb2ZpbGUqIHByb2Zp
bGUgPSAmbV92YWx1ZVByb2ZpbGVzW3BjW29wTGVuZ3RoIC0gMV0udS5vcGVyYW5kXTsKLSAgICAg
ICAgICAgIEFTU0VSVChwcm9maWxlLT5tX2J5dGVjb2RlT2Zmc2V0ID09IC0xKTsKLSAgICAgICAg
ICAgIHByb2ZpbGUtPm1fYnl0ZWNvZGVPZmZzZXQgPSBpOwotICAgICAgICAgICAgaW5zdHJ1Y3Rp
b25zW2kgKyBvcExlbmd0aCAtIDFdID0gcHJvZmlsZTsKKyAgICAgICAgICAgIGxpbmtWYWx1ZVBy
b2ZpbGUoaSwgb3BMZW5ndGgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAg
ICAgY2FzZSBvcF9nZXRfYXJyYXlfbGVuZ3RoOgpAQCAtMjE5NCwxMCArMjE1NCw3IEBAIHZvaWQg
Q29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVy
RXhlY3V0YWJsZSwgVW5saW5rCiAgICAgICAgIH0KIAogICAgICAgICBjYXNlIG9wX2dldF9mcm9t
X3Njb3BlOiB7Ci0gICAgICAgICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSAmbV92YWx1ZVBy
b2ZpbGVzW3BjW29wTGVuZ3RoIC0gMV0udS5vcGVyYW5kXTsKLSAgICAgICAgICAgIEFTU0VSVChw
cm9maWxlLT5tX2J5dGVjb2RlT2Zmc2V0ID09IC0xKTsKLSAgICAgICAgICAgIHByb2ZpbGUtPm1f
Ynl0ZWNvZGVPZmZzZXQgPSBpOwotICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zW2kgKyBvcExlbmd0
aCAtIDFdID0gcHJvZmlsZTsKKyAgICAgICAgICAgIGxpbmtWYWx1ZVByb2ZpbGUoaSwgb3BMZW5n
dGgpOwogCiAgICAgICAgICAgICAvLyBnZXRfZnJvbV9zY29wZSBkc3QsIHNjb3BlLCBpZCwgR2V0
UHV0SW5mbywgU3RydWN0dXJlLCBPcGVyYW5kCiAKQEAgLTIzNTQsMTUgKzIzMTEsNiBAQCB2b2lk
IENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25l
ckV4ZWN1dGFibGUsIFVubGluawogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAotICAg
ICAgICBjYXNlIG9wX3NhdmU6IHsKLSAgICAgICAgICAgIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2Nh
bHNJbmRleCA9IHBjWzJdLnUuaW5kZXg7Ci0gICAgICAgICAgICBpbnQgb2Zmc2V0ID0gcGNbM10u
dS5vcGVyYW5kOwotICAgICAgICAgICAgaWYgKGxpdmVDYWxsZWVMb2NhbHNJbmRleCA+PSBtZXJn
ZVBvaW50Qnl0ZWNvZGVPZmZzZXRzLnNpemUoKSkKLSAgICAgICAgICAgICAgICBtZXJnZVBvaW50
Qnl0ZWNvZGVPZmZzZXRzLnJlc2l6ZShsaXZlQ2FsbGVlTG9jYWxzSW5kZXggKyAxKTsKLSAgICAg
ICAgICAgIG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldHNbbGl2ZUNhbGxlZUxvY2Fsc0luZGV4XSA9
IGkgKyBvZmZzZXQ7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotCiAgICAgICAgIGRl
ZmF1bHQ6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMjM3NCwyMCArMjMyMiw2
IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFi
bGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAKICAgICBtX2luc3RydWN0aW9ucyA9IFdURk1v
dmUoaW5zdHJ1Y3Rpb25zKTsKIAotICAgIC8vIFBlcmZvcm0gYnl0ZWNvZGUgbGl2ZW5lc3MgYW5h
bHlzaXMgdG8gZGV0ZXJtaW5lIHdoaWNoIGxvY2FscyBhcmUgbGl2ZSBhbmQgc2hvdWxkIGJlIHJl
c3VtZWQgd2hlbiBleGVjdXRpbmcgb3BfcmVzdW1lLgotICAgIGlmICh1bmxpbmtlZENvZGVCbG9j
ay0+cGFyc2VNb2RlKCkgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JCb2R5TW9kZSkgewot
ICAgICAgICBpZiAoc2l6ZV90IGNvdW50ID0gbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0cy5zaXpl
KCkpIHsKLSAgICAgICAgICAgIGNyZWF0ZVJhcmVEYXRhSWZOZWNlc3NhcnkoKTsKLSAgICAgICAg
ICAgIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcyBsaXZlbmVzcyh0aGlzKTsKLSAgICAgICAgICAg
IG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQuZ3Jvdyhjb3VudCk7Ci0gICAg
ICAgICAgICBzaXplX3QgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gMDsKLSAgICAgICAgICAgIGZv
ciAoc2l6ZV90IGJ5dGVjb2RlT2Zmc2V0IDogbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0cykgewot
ICAgICAgICAgICAgICAgIG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGRbbGl2
ZUNhbGxlZUxvY2Fsc0luZGV4XSA9IGxpdmVuZXNzLmdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVP
ZmZzZXQoYnl0ZWNvZGVPZmZzZXQpOwotICAgICAgICAgICAgICAgICsrbGl2ZUNhbGxlZUxvY2Fs
c0luZGV4OwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCiAgICAgLy8gU2V0IG9w
dGltaXphdGlvbiB0aHJlc2hvbGRzIG9ubHkgYWZ0ZXIgbV9pbnN0cnVjdGlvbnMgaXMgaW5pdGlh
bGl6ZWQsIHNpbmNlIHRoZXNlCiAgICAgLy8gcmVseSBvbiB0aGUgaW5zdHJ1Y3Rpb24gY291bnQg
KGFuZCBhcmUgaW4gdGhlb3J5IHBlcm1pdHRlZCB0byBhbHNvIGluc3BlY3QgdGhlCiAgICAgLy8g
aW5zdHJ1Y3Rpb24gc3RyZWFtIHRvIG1vcmUgYWNjdXJhdGUgYXNzZXNzIHRoZSBjb3N0IG9mIHRp
ZXItdXApLgpAQCAtMzE4NywyMSArMzEyMSw3IEBAIEhhbmRsZXJJbmZvKiBDb2RlQmxvY2s6Omhh
bmRsZXJGb3JJbmRleCh1bnNpZ25lZCBpbmRleCwgUmVxdWlyZWRIYW5kbGVyIHJlcXVpcmVkCiB7
CiAgICAgaWYgKCFtX3JhcmVEYXRhKQogICAgICAgICByZXR1cm4gMDsKLSAgICAKLSAgICBWZWN0
b3I8SGFuZGxlckluZm8+JiBleGNlcHRpb25IYW5kbGVycyA9IG1fcmFyZURhdGEtPm1fZXhjZXB0
aW9uSGFuZGxlcnM7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBleGNlcHRpb25IYW5kbGVy
cy5zaXplKCk7ICsraSkgewotICAgICAgICBIYW5kbGVySW5mbyYgaGFuZGxlciA9IGV4Y2VwdGlv
bkhhbmRsZXJzW2ldOwotICAgICAgICBpZiAoKHJlcXVpcmVkSGFuZGxlciA9PSBSZXF1aXJlZEhh
bmRsZXI6OkNhdGNoSGFuZGxlcikgJiYgIWhhbmRsZXIuaXNDYXRjaEhhbmRsZXIoKSkKLSAgICAg
ICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIC8vIEhhbmRsZXJzIGFyZSBvcmRlcmVkIGlubmVy
bW9zdCBmaXJzdCwgc28gdGhlIGZpcnN0IGhhbmRsZXIgd2UgZW5jb3VudGVyCi0gICAgICAgIC8v
IHRoYXQgY29udGFpbnMgdGhlIHNvdXJjZSBhZGRyZXNzIGlzIHRoZSBjb3JyZWN0IGhhbmRsZXIg
dG8gdXNlLgotICAgICAgICAvLyBUaGlzIGluZGV4IHVzZWQgaXMgZWl0aGVyIHRoZSBCeXRlY29k
ZU9mZnNldCBvciBhIENhbGxTaXRlSW5kZXguCi0gICAgICAgIGlmIChoYW5kbGVyLnN0YXJ0IDw9
IGluZGV4ICYmIGhhbmRsZXIuZW5kID4gaW5kZXgpCi0gICAgICAgICAgICByZXR1cm4gJmhhbmRs
ZXI7Ci0gICAgfQotCi0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIEhhbmRsZXJJbmZvOjpoYW5k
bGVyRm9ySW5kZXgobV9yYXJlRGF0YS0+bV9leGNlcHRpb25IYW5kbGVycywgaW5kZXgsIHJlcXVp
cmVkSGFuZGxlcik7CiB9CiAKIENhbGxTaXRlSW5kZXggQ29kZUJsb2NrOjpuZXdFeGNlcHRpb25I
YW5kbGluZ0NhbGxTaXRlSW5kZXgoQ2FsbFNpdGVJbmRleCBvcmlnaW5hbENhbGxTaXRlKQpAQCAt
MzI5Niw3ICszMjE2LDYgQEAgdm9pZCBDb2RlQmxvY2s6OnNocmlua1RvRml0KFNocmlua01vZGUg
c2hyaW5rTW9kZSkKICAgICAgICAgaWYgKG1fcmFyZURhdGEpIHsKICAgICAgICAgICAgIG1fcmFy
ZURhdGEtPm1fc3dpdGNoSnVtcFRhYmxlcy5zaHJpbmtUb0ZpdCgpOwogICAgICAgICAgICAgbV9y
YXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzLnNocmlua1RvRml0KCk7Ci0gICAgICAg
ICAgICBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkLnNocmlua1RvRml0KCk7
CiAgICAgICAgIH0KICAgICB9IC8vIGVsc2UgZG9uJ3Qgc2hyaW5rIHRoZXNlLCBiZWNhdXNlIHdl
IHdvdWxkIGhhdmUgYWxyZWFkeSBwb2ludGVkIHBvaW50ZXJzIGludG8gdGhlc2UgdGFibGVzLgog
fQpAQCAtNDI3OCwxNCArNDE5Nyw5IEBAIFN0cmluZyBDb2RlQmxvY2s6Om5hbWVGb3JSZWdpc3Rl
cihWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVyKQogCiBWYWx1ZVByb2ZpbGUqIENvZGVC
bG9jazo6dmFsdWVQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoaW50IGJ5dGVjb2RlT2Zmc2V0KQog
ewotICAgIFZhbHVlUHJvZmlsZSogcmVzdWx0ID0gYmluYXJ5U2VhcmNoPFZhbHVlUHJvZmlsZSwg
aW50PigKLSAgICAgICAgbV92YWx1ZVByb2ZpbGVzLCBtX3ZhbHVlUHJvZmlsZXMuc2l6ZSgpLCBi
eXRlY29kZU9mZnNldCwKLSAgICAgICAgZ2V0VmFsdWVQcm9maWxlQnl0ZWNvZGVPZmZzZXQ8VmFs
dWVQcm9maWxlPik7Ci0gICAgQVNTRVJUKHJlc3VsdC0+bV9ieXRlY29kZU9mZnNldCAhPSAtMSk7
Ci0gICAgQVNTRVJUKGluc3RydWN0aW9ucygpW2J5dGVjb2RlT2Zmc2V0ICsgb3Bjb2RlTGVuZ3Ro
KAotICAgICAgICBtX3ZtLT5pbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoCi0gICAgICAgICAgICBp
bnN0cnVjdGlvbnMoKVtieXRlY29kZU9mZnNldF0udS5vcGNvZGUpKSAtIDFdLnUucHJvZmlsZSA9
PSByZXN1bHQpOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBt
X3ZtLT5pbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25zKClbYnl0ZWNvZGVPZmZz
ZXRdLnUub3Bjb2RlKTsKKyAgICB1bnNpZ25lZCBsZW5ndGggPSBvcGNvZGVMZW5ndGgob3Bjb2Rl
SUQpOworICAgIHJldHVybiBpbnN0cnVjdGlvbnMoKVtieXRlY29kZU9mZnNldCArIGxlbmd0aCAt
IDFdLnUucHJvZmlsZTsKIH0KIAogdm9pZCBDb2RlQmxvY2s6OnZhbGlkYXRlKCkKQEAgLTQ1Njgs
NCArNDQ4MiwxNiBAQCB2b2lkIENvZGVCbG9jazo6aml0U29vbigpCiAgICAgbV9sbGludEV4ZWN1
dGVDb3VudGVyLnNldE5ld1RocmVzaG9sZCh0aHJlc2hvbGRGb3JKSVQoT3B0aW9uczo6dGhyZXNo
b2xkRm9ySklUU29vbigpKSwgdGhpcyk7CiB9CiAKK0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcyYg
Q29kZUJsb2NrOjpsaXZlbmVzc0FuYWx5c2lzU2xvdygpCit7CisgICAgc3RkOjp1bmlxdWVfcHRy
PEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcz4gYW5hbHlzaXMgPSBzdGQ6Om1ha2VfdW5pcXVlPEJ5
dGVjb2RlTGl2ZW5lc3NBbmFseXNpcz4odGhpcyk7CisgICAgeworICAgICAgICBDb25jdXJyZW50
SklUTG9ja2VyIGxvY2tlcihtX2xvY2spOworICAgICAgICBpZiAoIW1fbGl2ZW5lc3NBbmFseXNp
cykKKyAgICAgICAgICAgIG1fbGl2ZW5lc3NBbmFseXNpcyA9IFdURk1vdmUoYW5hbHlzaXMpOwor
ICAgICAgICByZXR1cm4gKm1fbGl2ZW5lc3NBbmFseXNpczsKKyAgICB9Cit9CisKKwogfSAvLyBu
YW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgK
aW5kZXggNDgwYTFjYjVmODkxMzAyNzUxNTdhM2MyZDg1NTczMzY3MmZmZjYxZi4uNGNkMWUwY2E5
YjNiYjhiODFkZGNhZTQ0NTAxOTUxZDIyOWU5MzMyOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db2RlQmxvY2suaApAQCAtMzMsNyArMzMsNiBAQAogI2luY2x1ZGUgIkFycmF5
UHJvZmlsZS5oIgogI2luY2x1ZGUgIkJ5VmFsSW5mby5oIgogI2luY2x1ZGUgIkJ5dGVjb2RlQ29u
dmVudGlvbnMuaCIKLSNpbmNsdWRlICJCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuaCIKICNpbmNs
dWRlICJDYWxsTGlua0luZm8uaCIKICNpbmNsdWRlICJDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29k
ZU9mZnNldC5oIgogI2luY2x1ZGUgIkNvZGVCbG9ja0hhc2guaCIKQEAgLTc5LDYgKzc4LDcgQEAK
IAogbmFtZXNwYWNlIEpTQyB7CiAKK2NsYXNzIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczsKIGNs
YXNzIEV4ZWNTdGF0ZTsKIGNsYXNzIEpJVEFkZEdlbmVyYXRvcjsKIGNsYXNzIEpTTW9kdWxlRW52
aXJvbm1lbnQ7CkBAIC0yMjQsMTAgKzIyNCw2IEBAIGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBK
U0NlbGwgewogICAgICAgICByZXR1cm4gaW5kZXggPj0gbV9udW1WYXJzOwogICAgIH0KIAotICAg
IGVudW0gY2xhc3MgUmVxdWlyZWRIYW5kbGVyIHsKLSAgICAgICAgQ2F0Y2hIYW5kbGVyLAotICAg
ICAgICBBbnlIYW5kbGVyCi0gICAgfTsKICAgICBIYW5kbGVySW5mbyogaGFuZGxlckZvckJ5dGVj
b2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBSZXF1aXJlZEhhbmRsZXIgPSBSZXF1
aXJlZEhhbmRsZXI6OkFueUhhbmRsZXIpOwogICAgIEhhbmRsZXJJbmZvKiBoYW5kbGVyRm9ySW5k
ZXgodW5zaWduZWQsIFJlcXVpcmVkSGFuZGxlciA9IFJlcXVpcmVkSGFuZGxlcjo6QW55SGFuZGxl
cik7CiAgICAgdm9pZCByZW1vdmVFeGNlcHRpb25IYW5kbGVyRm9yQ2FsbFNpdGUoQ2FsbFNpdGVJ
bmRleCk7CkBAIC0zMDAsNiArMjk2LDggQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2Vs
bCB7CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxJbnN0cnVjdGlvbio+KHJldHVybkFkZHJl
c3MpIC0gaW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsKICAgICB9CiAKKyAgICB0eXBlZGVmIFJlZkNv
dW50ZWRBcnJheTxJbnN0cnVjdGlvbj4mIFVucGFja2VkSW5zdHJ1Y3Rpb25zOworCiAgICAgdW5z
aWduZWQgbnVtYmVyT2ZJbnN0cnVjdGlvbnMoKSBjb25zdCB7IHJldHVybiBtX2luc3RydWN0aW9u
cy5zaXplKCk7IH0KICAgICBSZWZDb3VudGVkQXJyYXk8SW5zdHJ1Y3Rpb24+JiBpbnN0cnVjdGlv
bnMoKSB7IHJldHVybiBtX2luc3RydWN0aW9uczsgfQogICAgIGNvbnN0IFJlZkNvdW50ZWRBcnJh
eTxJbnN0cnVjdGlvbj4mIGluc3RydWN0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1faW5zdHJ1Y3Rp
b25zOyB9CkBAIC01NDIsNyArNTQwLDcgQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2Vs
bCB7CiAgICAgfQogCiAgICAgV3JpdGVCYXJyaWVyPFVua25vd24+JiBjb25zdGFudFJlZ2lzdGVy
KGludCBpbmRleCkgeyByZXR1cm4gbV9jb25zdGFudFJlZ2lzdGVyc1tpbmRleCAtIEZpcnN0Q29u
c3RhbnRSZWdpc3RlckluZGV4XTsgfQotICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc0NvbnN0YW50
UmVnaXN0ZXJJbmRleChpbnQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIGluZGV4ID49IEZpcnN0Q29u
c3RhbnRSZWdpc3RlckluZGV4OyB9CisgICAgc3RhdGljIEFMV0FZU19JTkxJTkUgYm9vbCBpc0Nv
bnN0YW50UmVnaXN0ZXJJbmRleChpbnQgaW5kZXgpIHsgcmV0dXJuIGluZGV4ID49IEZpcnN0Q29u
c3RhbnRSZWdpc3RlckluZGV4OyB9CiAgICAgQUxXQVlTX0lOTElORSBKU1ZhbHVlIGdldENvbnN0
YW50KGludCBpbmRleCkgY29uc3QgeyByZXR1cm4gbV9jb25zdGFudFJlZ2lzdGVyc1tpbmRleCAt
IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4XS5nZXQoKTsgfQogICAgIEFMV0FZU19JTkxJTkUg
U291cmNlQ29kZVJlcHJlc2VudGF0aW9uIGNvbnN0YW50U291cmNlQ29kZVJlcHJlc2VudGF0aW9u
KGludCBpbmRleCkgY29uc3QgeyByZXR1cm4gbV9jb25zdGFudHNTb3VyY2VDb2RlUmVwcmVzZW50
YXRpb25baW5kZXggLSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleF07IH0KIApAQCAtNTg4LDE0
ICs1ODYsNyBAQCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAgICAgICAg
IGlmICghIW1fbGl2ZW5lc3NBbmFseXNpcykKICAgICAgICAgICAgICAgICByZXR1cm4gKm1fbGl2
ZW5lc3NBbmFseXNpczsKICAgICAgICAgfQotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNv
ZGVMaXZlbmVzc0FuYWx5c2lzPiBhbmFseXNpcyA9Ci0gICAgICAgICAgICBzdGQ6Om1ha2VfdW5p
cXVlPEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcz4odGhpcyk7Ci0gICAgICAgIHsKLSAgICAgICAg
ICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKG1fbG9jayk7Ci0gICAgICAgICAgICBpZiAo
IW1fbGl2ZW5lc3NBbmFseXNpcykKLSAgICAgICAgICAgICAgICBtX2xpdmVuZXNzQW5hbHlzaXMg
PSBXVEZNb3ZlKGFuYWx5c2lzKTsKLSAgICAgICAgICAgIHJldHVybiAqbV9saXZlbmVzc0FuYWx5
c2lzOwotICAgICAgICB9CisgICAgICAgIHJldHVybiBsaXZlbmVzc0FuYWx5c2lzU2xvdygpOwog
ICAgIH0KICAgICAKICAgICB2b2lkIHZhbGlkYXRlKCk7CkBAIC02MTYsMTggKzYwNyw2IEBAIGNs
YXNzIENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgIFN0cmluZ0p1bXBUYWJsZSYgYWRk
U3RyaW5nU3dpdGNoSnVtcFRhYmxlKCkgeyBjcmVhdGVSYXJlRGF0YUlmTmVjZXNzYXJ5KCk7IG1f
cmFyZURhdGEtPm1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlcy5hcHBlbmQoU3RyaW5nSnVtcFRhYmxl
KCkpOyByZXR1cm4gbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzLmxhc3QoKTsg
fQogICAgIFN0cmluZ0p1bXBUYWJsZSYgc3RyaW5nU3dpdGNoSnVtcFRhYmxlKGludCB0YWJsZUlu
ZGV4KSB7IFJFTEVBU0VfQVNTRVJUKG1fcmFyZURhdGEpOyByZXR1cm4gbV9yYXJlRGF0YS0+bV9z
dHJpbmdTd2l0Y2hKdW1wVGFibGVzW3RhYmxlSW5kZXhdOyB9CiAKLSAgICAvLyBMaXZlIGNhbGxl
ZSByZWdpc3RlcnMgYXQgeWllbGQgcG9pbnRzLgotICAgIGNvbnN0IEZhc3RCaXRWZWN0b3ImIGxp
dmVDYWxsZWVMb2NhbHNBdFlpZWxkKHVuc2lnbmVkIGluZGV4KSBjb25zdAotICAgIHsKLSAgICAg
ICAgUkVMRUFTRV9BU1NFUlQobV9yYXJlRGF0YSk7Ci0gICAgICAgIHJldHVybiBtX3JhcmVEYXRh
LT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkW2luZGV4XTsKLSAgICB9Ci0gICAgRmFzdEJpdFZl
Y3RvciYgbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQodW5zaWduZWQgaW5kZXgpCi0gICAgewotICAg
ICAgICBSRUxFQVNFX0FTU0VSVChtX3JhcmVEYXRhKTsKLSAgICAgICAgcmV0dXJuIG1fcmFyZURh
dGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGRbaW5kZXhdOwotICAgIH0KLQogICAgIEV2YWxD
b2RlQ2FjaGUmIGV2YWxDb2RlQ2FjaGUoKSB7IGNyZWF0ZVJhcmVEYXRhSWZOZWNlc3NhcnkoKTsg
cmV0dXJuIG1fcmFyZURhdGEtPm1fZXZhbENvZGVDYWNoZTsgfQogCiAgICAgZW51bSBTaHJpbmtN
b2RlIHsKQEAgLTg4Miw4ICs4NjEsNiBAQCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxs
IHsKICAgICAgICAgVmVjdG9yPFNpbXBsZUp1bXBUYWJsZT4gbV9zd2l0Y2hKdW1wVGFibGVzOwog
ICAgICAgICBWZWN0b3I8U3RyaW5nSnVtcFRhYmxlPiBtX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXM7
CiAKLSAgICAgICAgVmVjdG9yPEZhc3RCaXRWZWN0b3I+IG1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWll
bGQ7Ci0KICAgICAgICAgRXZhbENvZGVDYWNoZSBtX2V2YWxDb2RlQ2FjaGU7CiAgICAgfTsKIApA
QCAtOTE4LDYgKzg5NSw4IEBAIGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogCiBw
cml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBDb2RlQmxvY2tTZXQ7CisKKyAgICBCeXRlY29kZUxp
dmVuZXNzQW5hbHlzaXMmIGxpdmVuZXNzQW5hbHlzaXNTbG93KCk7CiAgICAgCiAgICAgQ29kZUJs
b2NrKiBzcGVjaWFsT1NSRW50cnlCbG9ja09yTnVsbCgpOwogICAgIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0hhbmRsZXJJbmZvLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvSGFuZGxlckluZm8uaAppbmRleCBhY2RkYTA4ZWQxNGNiZjlmMDk3
MTI3NTA0MDVhNDE3NDFmNzZhMjEzLi5iYjY5MmI5ZGMxNzBiMDlmNDNjZTg2N2Y5NDFmNzUzNWFj
ZmVjZjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSGFuZGxl
ckluZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSGFuZGxlckluZm8u
aApAQCAtMzcsNiArMzcsMTEgQEAgZW51bSBjbGFzcyBIYW5kbGVyVHlwZSB7CiAgICAgU3ludGhl
c2l6ZWRGaW5hbGx5ID0gMwogfTsKIAorZW51bSBjbGFzcyBSZXF1aXJlZEhhbmRsZXIgeworICAg
IENhdGNoSGFuZGxlciwKKyAgICBBbnlIYW5kbGVyCit9OworCiBzdHJ1Y3QgSGFuZGxlckluZm9C
YXNlIHsKICAgICBIYW5kbGVyVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8
SGFuZGxlclR5cGU+KHR5cGVCaXRzKTsgfQogICAgIHZvaWQgc2V0VHlwZShIYW5kbGVyVHlwZSB0
eXBlKSB7IHR5cGVCaXRzID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHR5cGUpOyB9CkBAIC01OCw2
ICs2MywyMyBAQCBzdHJ1Y3QgSGFuZGxlckluZm9CYXNlIHsKIAogICAgIGJvb2wgaXNDYXRjaEhh
bmRsZXIoKSBjb25zdCB7IHJldHVybiB0eXBlKCkgPT0gSGFuZGxlclR5cGU6OkNhdGNoOyB9CiAK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIYW5kbGVyPgorICAgIHN0YXRpYyBIYW5kbGVyKiBoYW5k
bGVyRm9ySW5kZXgoVmVjdG9yPEhhbmRsZXI+JiBleGVwdGlvbkhhbmRsZXJzLCB1bnNpZ25lZCBp
bmRleCwgUmVxdWlyZWRIYW5kbGVyIHJlcXVpcmVkSGFuZGxlcikKKyAgICB7CisgICAgICAgIGZv
ciAoSGFuZGxlciYgaGFuZGxlciA6IGV4ZXB0aW9uSGFuZGxlcnMpIHsKKyAgICAgICAgICAgIGlm
ICgocmVxdWlyZWRIYW5kbGVyID09IFJlcXVpcmVkSGFuZGxlcjo6Q2F0Y2hIYW5kbGVyKSAmJiAh
aGFuZGxlci5pc0NhdGNoSGFuZGxlcigpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisg
ICAgICAgICAgICAvLyBIYW5kbGVycyBhcmUgb3JkZXJlZCBpbm5lcm1vc3QgZmlyc3QsIHNvIHRo
ZSBmaXJzdCBoYW5kbGVyIHdlIGVuY291bnRlcgorICAgICAgICAgICAgLy8gdGhhdCBjb250YWlu
cyB0aGUgc291cmNlIGFkZHJlc3MgaXMgdGhlIGNvcnJlY3QgaGFuZGxlciB0byB1c2UuCisgICAg
ICAgICAgICAvLyBUaGlzIGluZGV4IHVzZWQgaXMgZWl0aGVyIHRoZSBCeXRlY29kZU9mZnNldCBv
ciBhIENhbGxTaXRlSW5kZXguCisgICAgICAgICAgICBpZiAoaGFuZGxlci5zdGFydCA8PSBpbmRl
eCAmJiBoYW5kbGVyLmVuZCA+IGluZGV4KQorICAgICAgICAgICAgICAgIHJldHVybiAmaGFuZGxl
cjsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKwogICAgIHVp
bnQzMl90IHN0YXJ0OwogICAgIHVpbnQzMl90IGVuZDsKICAgICB1aW50MzJfdCB0YXJnZXQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJn
ZXRzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdl
dHMuY3BwCmluZGV4IGUyY2IwMDA0ODM3OTRiYTkyZDUxMGRjZjVmYTk5NDg4NWEyM2RjM2QuLmNh
YjlmYmRjNGU4MzlmYmI4OWE2OTMzNTYyMjJkYjAwZTEwMjIzY2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHMuY3BwCkBAIC0y
NiwxNCArMjYsMTUgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJQcmVjaXNlSnVt
cFRhcmdldHMuaCIKIAorI2luY2x1ZGUgIkludGVycHJldGVySW5saW5lcy5oIgogI2luY2x1ZGUg
IkpTQ0lubGluZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKLXRlbXBsYXRlIDxzaXplX3QgdmVj
dG9yU2l6ZT4KLXN0YXRpYyB2b2lkIGdldEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoQ29k
ZUJsb2NrKiBjb2RlQmxvY2ssIEludGVycHJldGVyKiBpbnRlcnByZXRlciwgSW5zdHJ1Y3Rpb24q
IGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgVmVjdG9yPHVuc2ln
bmVkLCB2ZWN0b3JTaXplPiYgb3V0KQordGVtcGxhdGUgPHNpemVfdCB2ZWN0b3JTaXplLCB0eXBl
bmFtZSBCbG9jaywgdHlwZW5hbWUgSW5zdHJ1Y3Rpb24+CitzdGF0aWMgdm9pZCBnZXRKdW1wVGFy
Z2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KEJsb2NrKiBjb2RlQmxvY2ssIEludGVycHJldGVyKiBpbnRl
cnByZXRlciwgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBieXRlY29k
ZU9mZnNldCwgVmVjdG9yPHVuc2lnbmVkLCB2ZWN0b3JTaXplPiYgb3V0KQogewotICAgIE9wY29k
ZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGluc3RydWN0aW9uc0JlZ2lu
W2J5dGVjb2RlT2Zmc2V0XS51Lm9wY29kZSk7CisgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnRl
cnByZXRlci0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25zQmVnaW5bYnl0ZWNvZGVPZmZzZXRdKTsK
ICAgICBJbnN0cnVjdGlvbiogY3VycmVudCA9IGluc3RydWN0aW9uc0JlZ2luICsgYnl0ZWNvZGVP
ZmZzZXQ7CiAgICAgc3dpdGNoIChvcGNvZGVJRCkgewogICAgIGNhc2Ugb3Bfam1wOgpAQCAtNTQs
MjEgKzU1LDI1IEBAIHN0YXRpYyB2b2lkIGdldEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQo
Q29kZUJsb2NrKiBjb2RlQmxvY2ssIEludGVycHJldGVyKiBpCiAgICAgY2FzZSBvcF9qbmxlc3Nl
cToKICAgICBjYXNlIG9wX2puZ3JlYXRlcjoKICAgICBjYXNlIG9wX2puZ3JlYXRlcmVxOgotICAg
IGNhc2Ugb3Bfc2F2ZTogLy8gVGhlIGp1bXAgb2Ygb3Bfc2F2ZSBpcyBwdXJlbHkgZm9yIGNhbGN1
bGF0aW5nIGxpdmVuZXNzLgogICAgICAgICBvdXQuYXBwZW5kKGJ5dGVjb2RlT2Zmc2V0ICsgY3Vy
cmVudFszXS51Lm9wZXJhbmQpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIG9wX3NhdmU6IHsK
KyAgICAgICAgLy8gVGhlIGp1bXAgb2Ygb3Bfc2F2ZSB1bmRlciBFeHRyYWN0R2VuZXJhdG9yTGl2
ZUNhbGxlZUxvY2FscyBtb2RlIGlzIHB1cmVseSBmb3IgY2FsY3VsYXRpbmcgbGl2ZW5lc3MuCisg
ICAgICAgIG91dC5hcHBlbmQoYnl0ZWNvZGVPZmZzZXQgKyBjdXJyZW50WzNdLnUub3BlcmFuZCk7
CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICBjYXNlIG9wX3N3aXRjaF9pbW06CiAgICAgY2Fz
ZSBvcF9zd2l0Y2hfY2hhcjogewotICAgICAgICBTaW1wbGVKdW1wVGFibGUmIHRhYmxlID0gY29k
ZUJsb2NrLT5zd2l0Y2hKdW1wVGFibGUoY3VycmVudFsxXS51Lm9wZXJhbmQpOworICAgICAgICBh
dXRvJiB0YWJsZSA9IGNvZGVCbG9jay0+c3dpdGNoSnVtcFRhYmxlKGN1cnJlbnRbMV0udS5vcGVy
YW5kKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gdGFibGUuYnJhbmNoT2Zmc2V0cy5zaXpl
KCk7IGktLTspCiAgICAgICAgICAgICBvdXQuYXBwZW5kKGJ5dGVjb2RlT2Zmc2V0ICsgdGFibGUu
YnJhbmNoT2Zmc2V0c1tpXSk7CiAgICAgICAgIG91dC5hcHBlbmQoYnl0ZWNvZGVPZmZzZXQgKyBj
dXJyZW50WzJdLnUub3BlcmFuZCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIG9w
X3N3aXRjaF9zdHJpbmc6IHsKLSAgICAgICAgU3RyaW5nSnVtcFRhYmxlJiB0YWJsZSA9IGNvZGVC
bG9jay0+c3RyaW5nU3dpdGNoSnVtcFRhYmxlKGN1cnJlbnRbMV0udS5vcGVyYW5kKTsKLSAgICAg
ICAgU3RyaW5nSnVtcFRhYmxlOjpTdHJpbmdPZmZzZXRUYWJsZTo6aXRlcmF0b3IgaXRlciA9IHRh
YmxlLm9mZnNldFRhYmxlLmJlZ2luKCk7Ci0gICAgICAgIFN0cmluZ0p1bXBUYWJsZTo6U3RyaW5n
T2Zmc2V0VGFibGU6Oml0ZXJhdG9yIGVuZCA9IHRhYmxlLm9mZnNldFRhYmxlLmVuZCgpOworICAg
ICAgICBhdXRvJiB0YWJsZSA9IGNvZGVCbG9jay0+c3RyaW5nU3dpdGNoSnVtcFRhYmxlKGN1cnJl
bnRbMV0udS5vcGVyYW5kKTsKKyAgICAgICAgYXV0byBpdGVyID0gdGFibGUub2Zmc2V0VGFibGUu
YmVnaW4oKTsKKyAgICAgICAgYXV0byBlbmQgPSB0YWJsZS5vZmZzZXRUYWJsZS5lbmQoKTsKICAg
ICAgICAgZm9yICg7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpCiAgICAgICAgICAgICBvdXQuYXBwZW5k
KGJ5dGVjb2RlT2Zmc2V0ICsgaXRlci0+dmFsdWUuYnJhbmNoT2Zmc2V0KTsKICAgICAgICAgb3V0
LmFwcGVuZChieXRlY29kZU9mZnNldCArIGN1cnJlbnRbMl0udS5vcGVyYW5kKTsKQEAgLTgyLDEz
ICs4NywxOSBAQCBzdGF0aWMgdm9pZCBnZXRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KENv
ZGVCbG9jayogY29kZUJsb2NrLCBJbnRlcnByZXRlciogaQogICAgIH0KIH0KIAotdm9pZCBjb21w
dXRlUHJlY2lzZUp1bXBUYXJnZXRzKENvZGVCbG9jayogY29kZUJsb2NrLCBWZWN0b3I8dW5zaWdu
ZWQsIDMyPiYgb3V0KQorZW51bSBjbGFzcyBDb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzTW9kZSB7
CisgICAgRm9sbG93Q29kZUJsb2NrQ2xhaW0sCisgICAgRm9yY2VDb21wdXRlLAorfTsKKwordGVt
cGxhdGU8Q29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0c01vZGUgTW9kZSwgdHlwZW5hbWUgQmxvY2ss
IHR5cGVuYW1lIEluc3RydWN0aW9uLCBzaXplX3QgdmVjdG9yU2l6ZT4KK3ZvaWQgY29tcHV0ZVBy
ZWNpc2VKdW1wVGFyZ2V0c0ludGVybmFsKEJsb2NrKiBjb2RlQmxvY2ssIEluc3RydWN0aW9uKiBp
bnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCwgVmVjdG9yPHVuc2ln
bmVkLCB2ZWN0b3JTaXplPiYgb3V0KQogewogICAgIEFTU0VSVChvdXQuaXNFbXB0eSgpKTsKICAg
ICAKICAgICAvLyBXZSB3aWxsIGRlcml2ZSBhIHN1cGVyc2V0IG9mIHRoZSBqdW1wIHRhcmdldHMg
dGhhdCB0aGUgY29kZSBibG9jayB0aGlua3MgaXQgaGFzLgogICAgIC8vIFNvLCBpZiB0aGUgY29k
ZSBibG9jayBjbGFpbXMgdGhlcmUgYXJlIG5vbmUsIHRoZW4gd2UgYXJlIGRvbmUuCi0gICAgaWYg
KCFjb2RlQmxvY2stPm51bWJlck9mSnVtcFRhcmdldHMoKSkKKyAgICBpZiAoTW9kZSA9PSBDb21w
dXRlUHJlY2lzZUp1bXBUYXJnZXRzTW9kZTo6Rm9sbG93Q29kZUJsb2NrQ2xhaW0gJiYgIWNvZGVC
bG9jay0+bnVtYmVyT2ZKdW1wVGFyZ2V0cygpKQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAg
Zm9yICh1bnNpZ25lZCBpID0gY29kZUJsb2NrLT5udW1iZXJPZkV4Y2VwdGlvbkhhbmRsZXJzKCk7
IGktLTspIHsKQEAgLTk4LDEwICsxMDksOCBAQCB2b2lkIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdl
dHMoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFZlY3Rvcjx1bnNpZ25lZCwgMzI+JiBvdXQpCiAgICAg
fQogCiAgICAgSW50ZXJwcmV0ZXIqIGludGVycHJldGVyID0gY29kZUJsb2NrLT52bSgpLT5pbnRl
cnByZXRlcjsKLSAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4gPSBjb2RlQmxvY2st
Pmluc3RydWN0aW9ucygpLmJlZ2luKCk7Ci0gICAgdW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCA9
IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpOwogICAgIGZvciAodW5zaWduZWQgYnl0
ZWNvZGVPZmZzZXQgPSAwOyBieXRlY29kZU9mZnNldCA8IGluc3RydWN0aW9uQ291bnQ7KSB7Ci0g
ICAgICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGluc3Ry
dWN0aW9uc0JlZ2luW2J5dGVjb2RlT2Zmc2V0XS51Lm9wY29kZSk7CisgICAgICAgIE9wY29kZUlE
IG9wY29kZUlEID0gaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGluc3RydWN0aW9uc0JlZ2luW2J5
dGVjb2RlT2Zmc2V0XSk7CiAgICAgICAgIGdldEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQo
Y29kZUJsb2NrLCBpbnRlcnByZXRlciwgaW5zdHJ1Y3Rpb25zQmVnaW4sIGJ5dGVjb2RlT2Zmc2V0
LCBvdXQpOwogICAgICAgICBieXRlY29kZU9mZnNldCArPSBvcGNvZGVMZW5ndGhzW29wY29kZUlE
XTsKICAgICB9CkBAIC0xMjMsMTEgKzEzMiwzNCBAQCB2b2lkIGNvbXB1dGVQcmVjaXNlSnVtcFRh
cmdldHMoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFZlY3Rvcjx1bnNpZ25lZCwgMzI+JiBvdXQpCiAg
ICAgb3V0LnNocmlua1RvRml0KCk7CiB9CiAKLXZvaWQgZmluZEp1bXBUYXJnZXRzRm9yQnl0ZWNv
ZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBW
ZWN0b3I8dW5zaWduZWQsIDE+JiBvdXQpCit2b2lkIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMo
Q29kZUJsb2NrKiBjb2RlQmxvY2ssIFZlY3Rvcjx1bnNpZ25lZCwgMzI+JiBvdXQpCiB7Ci0gICAg
SW50ZXJwcmV0ZXIqIGludGVycHJldGVyID0gY29kZUJsb2NrLT52bSgpLT5pbnRlcnByZXRlcjsK
LSAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4gPSBjb2RlQmxvY2stPmluc3RydWN0
aW9ucygpLmJlZ2luKCk7Ci0gICAgZ2V0SnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChjb2Rl
QmxvY2ssIGludGVycHJldGVyLCBpbnN0cnVjdGlvbnNCZWdpbiwgYnl0ZWNvZGVPZmZzZXQsIG91
dCk7CisgICAgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0c0ludGVybmFsPENvbXB1dGVQcmVjaXNl
SnVtcFRhcmdldHNNb2RlOjpGb2xsb3dDb2RlQmxvY2tDbGFpbT4oY29kZUJsb2NrLCBjb2RlQmxv
Y2stPmluc3RydWN0aW9ucygpLmJlZ2luKCksIGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuc2l6
ZSgpLCBvdXQpOworfQorCit2b2lkIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMoQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgaW5z
dHJ1Y3Rpb25Db3VudCwgVmVjdG9yPHVuc2lnbmVkLCAzMj4mIG91dCkKK3sKKyAgICBjb21wdXRl
UHJlY2lzZUp1bXBUYXJnZXRzSW50ZXJuYWw8Q29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0c01vZGU6
OkZvbGxvd0NvZGVCbG9ja0NsYWltPihjb2RlQmxvY2ssIGluc3RydWN0aW9uc0JlZ2luLCBpbnN0
cnVjdGlvbkNvdW50LCBvdXQpOworfQorCit2b2lkIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMo
VW5saW5rZWRDb2RlQmxvY2sqIGNvZGVCbG9jaywgVW5saW5rZWRJbnN0cnVjdGlvbiogaW5zdHJ1
Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQsIFZlY3Rvcjx1bnNpZ25lZCwg
MzI+JiBvdXQpCit7CisgICAgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0c0ludGVybmFsPENvbXB1
dGVQcmVjaXNlSnVtcFRhcmdldHNNb2RlOjpGb2xsb3dDb2RlQmxvY2tDbGFpbT4oY29kZUJsb2Nr
LCBpbnN0cnVjdGlvbnNCZWdpbiwgaW5zdHJ1Y3Rpb25Db3VudCwgb3V0KTsKK30KKwordm9pZCBy
ZWNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMoVW5saW5rZWRDb2RlQmxvY2sqIGNvZGVCbG9jaywg
VW5saW5rZWRJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGluc3RydWN0
aW9uQ291bnQsIFZlY3Rvcjx1bnNpZ25lZD4mIG91dCkKK3sKKyAgICBjb21wdXRlUHJlY2lzZUp1
bXBUYXJnZXRzSW50ZXJuYWw8Q29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0c01vZGU6OkZvcmNlQ29t
cHV0ZT4oY29kZUJsb2NrLCBpbnN0cnVjdGlvbnNCZWdpbiwgaW5zdHJ1Y3Rpb25Db3VudCwgb3V0
KTsKK30KKwordm9pZCBmaW5kSnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sq
IGNvZGVCbG9jaywgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBieXRl
Y29kZU9mZnNldCwgVmVjdG9yPHVuc2lnbmVkLCAxPiYgb3V0KQoreworICAgIGdldEp1bXBUYXJn
ZXRzRm9yQnl0ZWNvZGVPZmZzZXQoY29kZUJsb2NrLCBjb2RlQmxvY2stPnZtKCktPmludGVycHJl
dGVyLCBpbnN0cnVjdGlvbnNCZWdpbiwgYnl0ZWNvZGVPZmZzZXQsIG91dCk7Cit9CisKK3ZvaWQg
ZmluZEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoVW5saW5rZWRDb2RlQmxvY2sqIGNvZGVC
bG9jaywgVW5saW5rZWRJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGJ5
dGVjb2RlT2Zmc2V0LCBWZWN0b3I8dW5zaWduZWQsIDE+JiBvdXQpCit7CisgICAgZ2V0SnVtcFRh
cmdldHNGb3JCeXRlY29kZU9mZnNldChjb2RlQmxvY2ssIGNvZGVCbG9jay0+dm0oKS0+aW50ZXJw
cmV0ZXIsIGluc3RydWN0aW9uc0JlZ2luLCBieXRlY29kZU9mZnNldCwgb3V0KTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
UHJlY2lzZUp1bXBUYXJnZXRzLmgKaW5kZXggODUyNDEzZDc3Yjc5ODk4NGIyN2NlZjBlZDYyYmM5
NGM2ODllMjEyYy4uZGI5YmQzODNiOGFjNDU1N2QzMjY3MTdiNzJkNGIwZjUwYjFkMTgzOCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0
cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdl
dHMuaApAQCAtMzAsMTAgKzMwLDE4IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCitjbGFzcyBVbmxp
bmtlZENvZGVCbG9jazsKK3N0cnVjdCBVbmxpbmtlZEluc3RydWN0aW9uOworCiAvLyBSZXR1cm4g
YSBzb3J0ZWQgbGlzdCBvZiBieXRlY29kZSBpbmRleCB0aGF0IGFyZSB0aGUgZGVzdGluYXRpb24g
b2YgYSBqdW1wLgogdm9pZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKENvZGVCbG9jayosIFZl
Y3Rvcjx1bnNpZ25lZCwgMzI+JiBvdXQpOwordm9pZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRz
KENvZGVCbG9jayosIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgaW5z
dHJ1Y3Rpb25Db3VudCwgVmVjdG9yPHVuc2lnbmVkLCAzMj4mIG91dCk7Cit2b2lkIGNvbXB1dGVQ
cmVjaXNlSnVtcFRhcmdldHMoVW5saW5rZWRDb2RlQmxvY2sqLCBVbmxpbmtlZEluc3RydWN0aW9u
KiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCwgVmVjdG9yPHVu
c2lnbmVkLCAzMj4mIG91dCk7CisKK3ZvaWQgcmVjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKFVu
bGlua2VkQ29kZUJsb2NrKiwgVW5saW5rZWRJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4s
IHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQsIFZlY3Rvcjx1bnNpZ25lZD4mIG91dCk7CiAKLXZv
aWQgZmluZEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiwgdW5zaWduZWQg
Ynl0ZWNvZGVPZmZzZXQsIFZlY3Rvcjx1bnNpZ25lZCwgMT4mIG91dCk7Cit2b2lkIGZpbmRKdW1w
VGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayosIEluc3RydWN0aW9uKiBpbnN0cnVj
dGlvbnNCZWdpbiwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIFZlY3Rvcjx1bnNpZ25lZCwgMT4m
IG91dCk7Cit2b2lkIGZpbmRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KFVubGlua2VkQ29k
ZUJsb2NrKiwgVW5saW5rZWRJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVk
IGJ5dGVjb2RlT2Zmc2V0LCBWZWN0b3I8dW5zaWduZWQsIDE+JiBvdXQpOwogCiB9IC8vIG5hbWVz
cGFjZSBKU0MKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Vu
bGlua2VkQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Vbmxp
bmtlZENvZGVCbG9jay5jcHAKaW5kZXggMjk5YWM2ODBkOWExZDFlNWE5MGQ5ZmFlMWEyMmY4NDRl
MjkyZTNlMi4uZjdiNWFlMGI2YjQ3MjE3MGQyODk0NjQxNjc2NjE4YzU3YzQ5ZWMyZiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2su
Y3BwCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiVW5saW5rZWRDb2RlQmxvY2suaCIKIAog
I2luY2x1ZGUgIkJ5dGVjb2RlR2VuZXJhdG9yLmgiCisjaW5jbHVkZSAiQnl0ZWNvZGVNb2RpZmlj
YXRpb25TZXQuaCIKICNpbmNsdWRlICJDbGFzc0luZm8uaCIKICNpbmNsdWRlICJDb2RlQ2FjaGUu
aCIKICNpbmNsdWRlICJFeGVjdXRhYmxlLmgiCkBAIC0zNiw2ICszNyw3IEBACiAjaW5jbHVkZSAi
SlNTdHJpbmcuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiUGFyc2VyLmgi
CisjaW5jbHVkZSAiUHJlY2lzZUp1bXBUYXJnZXRzLmgiCiAjaW5jbHVkZSAiU291cmNlUHJvdmlk
ZXIuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIKICNpbmNsdWRlICJTeW1ib2xUYWJsZS5oIgpA
QCAtMzY2LDUgKzM2OCwxMTEgQEAgY29uc3QgVW5saW5rZWRJbnN0cnVjdGlvblN0cmVhbSYgVW5s
aW5rZWRDb2RlQmxvY2s6Omluc3RydWN0aW9ucygpIGNvbnN0CiAgICAgcmV0dXJuICptX3VubGlu
a2VkSW5zdHJ1Y3Rpb25zOwogfQogCitVbmxpbmtlZEhhbmRsZXJJbmZvKiBVbmxpbmtlZENvZGVC
bG9jazo6aGFuZGxlckZvckJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBS
ZXF1aXJlZEhhbmRsZXIgcmVxdWlyZWRIYW5kbGVyKQoreworICAgIHJldHVybiBoYW5kbGVyRm9y
SW5kZXgoYnl0ZWNvZGVPZmZzZXQsIHJlcXVpcmVkSGFuZGxlcik7Cit9CisKK1VubGlua2VkSGFu
ZGxlckluZm8qIFVubGlua2VkQ29kZUJsb2NrOjpoYW5kbGVyRm9ySW5kZXgodW5zaWduZWQgaW5k
ZXgsIFJlcXVpcmVkSGFuZGxlciByZXF1aXJlZEhhbmRsZXIpCit7CisgICAgaWYgKCFtX3JhcmVE
YXRhKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gVW5saW5rZWRIYW5kbGVy
SW5mbzo6aGFuZGxlckZvckluZGV4KG1fcmFyZURhdGEtPm1fZXhjZXB0aW9uSGFuZGxlcnMsIGlu
ZGV4LCByZXF1aXJlZEhhbmRsZXIpOworfQorCit2b2lkIFVubGlua2VkQ29kZUJsb2NrOjphcHBs
eU1vZGlmaWNhdGlvbihCeXRlY29kZU1vZGlmaWNhdGlvblNldCYgaW5zZXJ0aW9uU2V0KQorewor
ICAgIC8vIEJlZm9yZSBhcHBseWluZyB0aGUgY2hhbmdlcywgd2UgYWRqdXN0IHRoZSBqdW1wcyBi
YXNlZCBvbiB0aGUgb3JpZ2luYWwgYnl0ZWNvZGUgb2Zmc2V0LCB0aGUgb2Zmc2V0IHRvIHRoZSBq
dW1wIHRhcmdldCwgYW5kCisgICAgLy8gdGhlIGluc2VydGlvbiBpbmZvcm1hdGlvbi4KKworICAg
IEJ5dGVjb2RlR3JhcGg8VW5saW5rZWRDb2RlQmxvY2s+JiBncmFwaCA9IGluc2VydGlvblNldC5n
cmFwaCgpOworICAgIFVubGlua2VkSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luID0gZ3Jh
cGguaW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsKKyAgICBmb3IgKGludCBieXRlY29kZU9mZnNldCA9
IDAsIGluc3RydWN0aW9uQ291bnQgPSBncmFwaC5pbnN0cnVjdGlvbnMoKS5zaXplKCk7IGJ5dGVj
b2RlT2Zmc2V0IDwgaW5zdHJ1Y3Rpb25Db3VudDspIHsKKyAgICAgICAgVW5saW5rZWRJbnN0cnVj
dGlvbiogY3VycmVudCA9IGluc3RydWN0aW9uc0JlZ2luICsgYnl0ZWNvZGVPZmZzZXQ7CisgICAg
ICAgIE9wY29kZUlEIG9wY29kZUlEID0gY3VycmVudFswXS51Lm9wY29kZTsKKworICAgICAgICBz
d2l0Y2ggKG9wY29kZUlEKSB7CisgICAgICAgIGNhc2Ugb3Bfam1wOgorICAgICAgICAgICAgY3Vy
cmVudFsxXS51Lm9wZXJhbmQgPSBpbnNlcnRpb25TZXQuYWRqdXN0T2Zmc2V0KGJ5dGVjb2RlT2Zm
c2V0LCBieXRlY29kZU9mZnNldCArIGN1cnJlbnRbMV0udS5vcGVyYW5kKTsKKyAgICAgICAgICAg
IGJyZWFrOworCisgICAgICAgIGNhc2Ugb3BfanRydWU6CisgICAgICAgIGNhc2Ugb3BfamZhbHNl
OgorICAgICAgICBjYXNlIG9wX2plcV9udWxsOgorICAgICAgICBjYXNlIG9wX2puZXFfbnVsbDoK
KyAgICAgICAgICAgIGN1cnJlbnRbMl0udS5vcGVyYW5kID0gaW5zZXJ0aW9uU2V0LmFkanVzdE9m
ZnNldChieXRlY29kZU9mZnNldCwgYnl0ZWNvZGVPZmZzZXQgKyBjdXJyZW50WzJdLnUub3BlcmFu
ZCk7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIG9wX2puZXFfcHRyOgorICAg
ICAgICBjYXNlIG9wX2psZXNzOgorICAgICAgICBjYXNlIG9wX2psZXNzZXE6CisgICAgICAgIGNh
c2Ugb3BfamdyZWF0ZXI6CisgICAgICAgIGNhc2Ugb3BfamdyZWF0ZXJlcToKKyAgICAgICAgY2Fz
ZSBvcF9qbmxlc3M6CisgICAgICAgIGNhc2Ugb3Bfam5sZXNzZXE6CisgICAgICAgIGNhc2Ugb3Bf
am5ncmVhdGVyOgorICAgICAgICBjYXNlIG9wX2puZ3JlYXRlcmVxOgorICAgICAgICAgICAgY3Vy
cmVudFszXS51Lm9wZXJhbmQgPSBpbnNlcnRpb25TZXQuYWRqdXN0T2Zmc2V0KGJ5dGVjb2RlT2Zm
c2V0LCBieXRlY29kZU9mZnNldCArIGN1cnJlbnRbM10udS5vcGVyYW5kKTsKKyAgICAgICAgICAg
IGJyZWFrOworCisgICAgICAgIGNhc2Ugb3Bfc3dpdGNoX2ltbToKKyAgICAgICAgY2FzZSBvcF9z
d2l0Y2hfY2hhcjogeworICAgICAgICAgICAgYXV0byYgdGFibGUgPSBzd2l0Y2hKdW1wVGFibGUo
Y3VycmVudFsxXS51Lm9wZXJhbmQpOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gdGFi
bGUuYnJhbmNoT2Zmc2V0cy5zaXplKCk7IGktLTspCisgICAgICAgICAgICAgICAgdGFibGUuYnJh
bmNoT2Zmc2V0c1tpXSA9IGluc2VydGlvblNldC5hZGp1c3RPZmZzZXQoYnl0ZWNvZGVPZmZzZXQs
IGJ5dGVjb2RlT2Zmc2V0ICsgdGFibGUuYnJhbmNoT2Zmc2V0c1tpXSk7CisgICAgICAgICAgICBj
dXJyZW50WzJdLnUub3BlcmFuZCA9IGluc2VydGlvblNldC5hZGp1c3RPZmZzZXQoYnl0ZWNvZGVP
ZmZzZXQsIGJ5dGVjb2RlT2Zmc2V0ICsgY3VycmVudFsyXS51Lm9wZXJhbmQpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBjYXNlIG9wX3N3aXRjaF9zdHJpbmc6IHsK
KyAgICAgICAgICAgIGF1dG8mIHRhYmxlID0gc3RyaW5nU3dpdGNoSnVtcFRhYmxlKGN1cnJlbnRb
MV0udS5vcGVyYW5kKTsKKyAgICAgICAgICAgIGF1dG8gaXRlciA9IHRhYmxlLm9mZnNldFRhYmxl
LmJlZ2luKCk7CisgICAgICAgICAgICBhdXRvIGVuZCA9IHRhYmxlLm9mZnNldFRhYmxlLmVuZCgp
OworICAgICAgICAgICAgZm9yICg7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpCisgICAgICAgICAgICAg
ICAgaXRlci0+dmFsdWUuYnJhbmNoT2Zmc2V0ID0gaW5zZXJ0aW9uU2V0LmFkanVzdE9mZnNldChi
eXRlY29kZU9mZnNldCwgYnl0ZWNvZGVPZmZzZXQgKyBpdGVyLT52YWx1ZS5icmFuY2hPZmZzZXQp
OworICAgICAgICAgICAgY3VycmVudFsyXS51Lm9wZXJhbmQgPSBpbnNlcnRpb25TZXQuYWRqdXN0
T2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0LCBieXRlY29kZU9mZnNldCArIGN1cnJlbnRbMl0udS5vcGVy
YW5kKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgYnl0ZWNvZGVPZmZzZXQg
Kz0gb3Bjb2RlTGVuZ3RoKG9wY29kZUlEKTsKKyAgICB9CisKKyAgICAvLyBUaGVuLCBleGNlcHRp
b24gaGFuZGxlcnMgc2hvdWxkIGJlIGFkanVzdGVkLgorICAgIGlmIChtX3JhcmVEYXRhKSB7Cisg
ICAgICAgIGZvciAoVW5saW5rZWRIYW5kbGVySW5mbyYgaGFuZGxlciA6IG1fcmFyZURhdGEtPm1f
ZXhjZXB0aW9uSGFuZGxlcnMpIHsKKyAgICAgICAgICAgIGhhbmRsZXIudGFyZ2V0ID0gaW5zZXJ0
aW9uU2V0LmFkanVzdE9mZnNldCgwLCBoYW5kbGVyLnRhcmdldCk7CisgICAgICAgICAgICBoYW5k
bGVyLnN0YXJ0ID0gaW5zZXJ0aW9uU2V0LmFkanVzdE9mZnNldCgwLCBoYW5kbGVyLnN0YXJ0KTsK
KyAgICAgICAgICAgIGhhbmRsZXIuZW5kID0gaW5zZXJ0aW9uU2V0LmFkanVzdE9mZnNldCgwLCBo
YW5kbGVyLmVuZCk7CisgICAgICAgIH0KKworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IG1fcmFyZURhdGEtPm1fb3BQcm9maWxlQ29udHJvbEZsb3dCeXRlY29kZU9mZnNldHMuc2l6ZSgp
OyArK2kpCisgICAgICAgICAgICBtX3JhcmVEYXRhLT5tX29wUHJvZmlsZUNvbnRyb2xGbG93Qnl0
ZWNvZGVPZmZzZXRzW2ldID0gaW5zZXJ0aW9uU2V0LmFkanVzdE9mZnNldCgwLCBtX3JhcmVEYXRh
LT5tX29wUHJvZmlsZUNvbnRyb2xGbG93Qnl0ZWNvZGVPZmZzZXRzW2ldKTsKKworICAgICAgICBp
ZiAoIW1fcmFyZURhdGEtPm1fdHlwZVByb2ZpbGVySW5mb01hcC5pc0VtcHR5KCkpIHsKKyAgICAg
ICAgICAgIEhhc2hNYXA8dW5zaWduZWQsIFJhcmVEYXRhOjpUeXBlUHJvZmlsZXJFeHByZXNzaW9u
UmFuZ2U+IGFkanVzdGVkVHlwZVByb2ZpbGVySW5mb01hcDsKKyAgICAgICAgICAgIGZvciAoYXV0
byYgZW50cnkgOiBtX3JhcmVEYXRhLT5tX3R5cGVQcm9maWxlckluZm9NYXApCisgICAgICAgICAg
ICAgICAgYWRqdXN0ZWRUeXBlUHJvZmlsZXJJbmZvTWFwLnNldChpbnNlcnRpb25TZXQuYWRqdXN0
T2Zmc2V0KDAsIGVudHJ5LmtleSksIGVudHJ5LnZhbHVlKTsKKyAgICAgICAgICAgIG1fcmFyZURh
dGEtPm1fdHlwZVByb2ZpbGVySW5mb01hcC5zd2FwKGFkanVzdGVkVHlwZVByb2ZpbGVySW5mb01h
cCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fcHJv
cGVydHlBY2Nlc3NJbnN0cnVjdGlvbnMuc2l6ZSgpOyArK2kpCisgICAgICAgIG1fcHJvcGVydHlB
Y2Nlc3NJbnN0cnVjdGlvbnNbaV0gPSBpbnNlcnRpb25TZXQuYWRqdXN0T2Zmc2V0KDAsIG1fcHJv
cGVydHlBY2Nlc3NJbnN0cnVjdGlvbnNbaV0pOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBtX2V4cHJlc3Npb25JbmZvLnNpemUoKTsgKytpKQorICAgICAgICBtX2V4cHJlc3Npb25JbmZv
W2ldLmluc3RydWN0aW9uT2Zmc2V0ID0gaW5zZXJ0aW9uU2V0LmFkanVzdE9mZnNldCgwLCBtX2V4
cHJlc3Npb25JbmZvW2ldLmluc3RydWN0aW9uT2Zmc2V0KTsKKworICAgIC8vIFRoZW4sIG1vZGlm
eSB0aGUgdW5saW5rZWQgaW5zdHJ1Y3Rpb25zLgorICAgIGluc2VydGlvblNldC5hcHBseU1vZGlm
aWNhdGlvbigpOworCisgICAgLy8gQW5kIHJlY29tcHV0ZSB0aGUganVtcCB0YXJnZXQgYmFzZWQg
b24gdGhlIG1vZGlmaWVkIHVubGlua2VkIGluc3RydWN0aW9ucy4KKyAgICBtX2p1bXBUYXJnZXRz
LmNsZWFyKCk7CisgICAgcmVjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKHRoaXMsIGdyYXBoLmlu
c3RydWN0aW9ucygpLmJlZ2luKCksIGdyYXBoLmluc3RydWN0aW9ucygpLnNpemUoKSwgbV9qdW1w
VGFyZ2V0cyk7Cit9CisKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvVW5saW5rZWRDb2RlQmxvY2suaAppbmRleCA5MWZkY2E0OGMxZTM5ZThiZWZiMGM1ZmQ1NWZk
OWJkOTFjMWYzNzA3Li44OGNmMGM4ZjA5ZTQ0MDMzNDE3ZTA0YmFhMzJkYzUwMmRlMTgwMjA5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxv
Y2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxv
Y2suaApAQCAtNDgsNiArNDgsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorY2xhc3MgQnl0ZWNv
ZGVNb2RpZmljYXRpb25TZXQ7CiBjbGFzcyBEZWJ1Z2dlcjsKIGNsYXNzIEZ1bmN0aW9uTWV0YWRh
dGFOb2RlOwogY2xhc3MgRnVuY3Rpb25FeGVjdXRhYmxlOwpAQCAtNjksNyArNzAsMTEgQEAgdHlw
ZWRlZiB1bnNpZ25lZCBVbmxpbmtlZE9iamVjdEFsbG9jYXRpb25Qcm9maWxlOwogdHlwZWRlZiB1
bnNpZ25lZCBVbmxpbmtlZExMSW50Q2FsbExpbmtJbmZvOwogCiBzdHJ1Y3QgVW5saW5rZWRTdHJp
bmdKdW1wVGFibGUgewotICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8U3RyaW5nSW1wbD4sIGlu
dDMyX3Q+IFN0cmluZ09mZnNldFRhYmxlOworICAgIHN0cnVjdCBPZmZzZXRMb2NhdGlvbiB7Cisg
ICAgICAgIGludDMyX3QgYnJhbmNoT2Zmc2V0OworICAgIH07CisKKyAgICB0eXBlZGVmIEhhc2hN
YXA8UmVmUHRyPFN0cmluZ0ltcGw+LCBPZmZzZXRMb2NhdGlvbj4gU3RyaW5nT2Zmc2V0VGFibGU7
CiAgICAgU3RyaW5nT2Zmc2V0VGFibGUgb2Zmc2V0VGFibGU7CiAKICAgICBpbmxpbmUgaW50MzJf
dCBvZmZzZXRGb3JWYWx1ZShTdHJpbmdJbXBsKiB2YWx1ZSwgaW50MzJfdCBkZWZhdWx0T2Zmc2V0
KQpAQCAtNzgsNyArODMsNyBAQCBzdHJ1Y3QgVW5saW5rZWRTdHJpbmdKdW1wVGFibGUgewogICAg
ICAgICBTdHJpbmdPZmZzZXRUYWJsZTo6Y29uc3RfaXRlcmF0b3IgbG9jID0gb2Zmc2V0VGFibGUu
ZmluZCh2YWx1ZSk7CiAgICAgICAgIGlmIChsb2MgPT0gZW5kKQogICAgICAgICAgICAgcmV0dXJu
IGRlZmF1bHRPZmZzZXQ7Ci0gICAgICAgIHJldHVybiBsb2MtPnZhbHVlOworICAgICAgICByZXR1
cm4gbG9jLT52YWx1ZS5icmFuY2hPZmZzZXQ7CiAgICAgfQogCiB9OwpAQCAtMTA2LDYgKzExMSw4
IEBAIHN0cnVjdCBVbmxpbmtlZEluc3RydWN0aW9uIHsKICAgICB9IHU7CiB9OwogCitjbGFzcyBC
eXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbjsKKwogY2xhc3MgVW5saW5rZWRDb2RlQmxvY2sgOiBw
dWJsaWMgSlNDZWxsIHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOwpAQCAtMTE1
LDYgKzEyMiw4IEBAIGNsYXNzIFVubGlua2VkQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAK
ICAgICBlbnVtIHsgQ2FsbEZ1bmN0aW9uLCBBcHBseUZ1bmN0aW9uIH07CiAKKyAgICB0eXBlZGVm
IFZlY3RvcjxVbmxpbmtlZEluc3RydWN0aW9uLCAwLCBVbnNhZmVWZWN0b3JPdmVyZmxvdz4gVW5w
YWNrZWRJbnN0cnVjdGlvbnM7CisKICAgICBib29sIGlzQ29uc3RydWN0b3IoKSBjb25zdCB7IHJl
dHVybiBtX2lzQ29uc3RydWN0b3I7IH0KICAgICBib29sIGlzU3RyaWN0TW9kZSgpIGNvbnN0IHsg
cmV0dXJuIG1faXNTdHJpY3RNb2RlOyB9CiAgICAgYm9vbCB1c2VzRXZhbCgpIGNvbnN0IHsgcmV0
dXJuIG1fdXNlc0V2YWw7IH0KQEAgLTIwNCw2ICsyMTMsOSBAQCBjbGFzcyBVbmxpbmtlZENvZGVC
bG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgIHVuc2lnbmVkIGp1bXBUYXJnZXQoaW50IGluZGV4
KSBjb25zdCB7IHJldHVybiBtX2p1bXBUYXJnZXRzW2luZGV4XTsgfQogICAgIHVuc2lnbmVkIGxh
c3RKdW1wVGFyZ2V0KCkgY29uc3QgeyByZXR1cm4gbV9qdW1wVGFyZ2V0cy5sYXN0KCk7IH0KIAor
ICAgIFVubGlua2VkSGFuZGxlckluZm8qIGhhbmRsZXJGb3JCeXRlY29kZU9mZnNldCh1bnNpZ25l
ZCBieXRlY29kZU9mZnNldCwgUmVxdWlyZWRIYW5kbGVyID0gUmVxdWlyZWRIYW5kbGVyOjpBbnlI
YW5kbGVyKTsKKyAgICBVbmxpbmtlZEhhbmRsZXJJbmZvKiBoYW5kbGVyRm9ySW5kZXgodW5zaWdu
ZWQsIFJlcXVpcmVkSGFuZGxlciA9IFJlcXVpcmVkSGFuZGxlcjo6QW55SGFuZGxlcik7CisKICAg
ICBib29sIGlzQnVpbHRpbkZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc0J1aWx0aW5GdW5j
dGlvbjsgfQogCiAgICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCgpIGNvbnN0IHsg
cmV0dXJuIHN0YXRpY19jYXN0PENvbnN0cnVjdG9yS2luZD4obV9jb25zdHJ1Y3RvcktpbmQpOyB9
CkBAIC0zODQsNiArMzk2LDggQEAgY2xhc3MgVW5saW5rZWRDb2RlQmxvY2sgOiBwdWJsaWMgSlND
ZWxsIHsKICAgICB9CiAKIHByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIEJ5dGVjb2RlTW9kaWZp
Y2F0aW9uU2V0OworICAgIHZvaWQgYXBwbHlNb2RpZmljYXRpb24oQnl0ZWNvZGVNb2RpZmljYXRp
b25TZXQmKTsKIAogICAgIHZvaWQgY3JlYXRlUmFyZURhdGFJZk5lY2Vzc2FyeSgpCiAgICAgewpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZpcnR1YWxSZWdpc3Rl
ci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZpcnR1YWxSZWdpc3Rlci5oCmlu
ZGV4IGQzZGY0MDk1N2I1MTc1NjhlM2FlZmJlM2ExYTYwOWZkODc4YmFhYzMuLmRhZjUwOWY2Yzdk
MTE1ZTQ1YmNiMTA3YzY3ZDNkMzhkODA0ZjI4OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9WaXJ0dWFsUmVnaXN0ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvVmlydHVhbFJlZ2lzdGVyLmgKQEAgLTI2LDggKzI2LDggQEAKICNpZm5k
ZWYgVmlydHVhbFJlZ2lzdGVyX2gKICNkZWZpbmUgVmlydHVhbFJlZ2lzdGVyX2gKIAorI2luY2x1
ZGUgIkJ5dGVjb2RlQ29udmVudGlvbnMuaCIKICNpbmNsdWRlICJDYWxsRnJhbWUuaCIKLQogI2lu
Y2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTEwMyw3ICsx
MDMsNyBAQCBjbGFzcyBWaXJ0dWFsUmVnaXN0ZXIgewogCiBwcml2YXRlOgogICAgIHN0YXRpYyBj
b25zdCBpbnQgc19pbnZhbGlkVmlydHVhbFJlZ2lzdGVyID0gMHgzZmZmZmZmZjsKLSAgICBzdGF0
aWMgY29uc3QgaW50IHNfZmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXggPSAweDQwMDAwMDAwOwor
ICAgIHN0YXRpYyBjb25zdCBpbnQgc19maXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCA9IEZpcnN0
Q29uc3RhbnRSZWdpc3RlckluZGV4OwogCiAgICAgc3RhdGljIGludCBsb2NhbFRvT3BlcmFuZChp
bnQgbG9jYWwpIHsgcmV0dXJuIC0xIC0gbG9jYWw7IH0KICAgICBzdGF0aWMgaW50IG9wZXJhbmRU
b0xvY2FsKGludCBvcGVyYW5kKSB7IHJldHVybiAtMSAtIG9wZXJhbmQ7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5j
cHAKaW5kZXggNjE3ZjQ0MjZjN2I0ZDE1NDVmN2QyOTI3Yzg0NmE5MDNlMTUxYmYzZi4uN2IxZjhk
ODEwZTJiYjA2YTE1NjYxZTdkOTE5MjFhNGZkZjk2Y2ZhMiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAg
LTMzLDYgKzMzLDcgQEAKIAogI2luY2x1ZGUgIkFyaXRoUHJvZmlsZS5oIgogI2luY2x1ZGUgIkJ1
aWx0aW5FeGVjdXRhYmxlcy5oIgorI2luY2x1ZGUgIkJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9u
LmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmgiCiAjaW5jbHVkZSAiSW50
ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCkBAIC0xNTUsNiArMTU2LDEwIEBA
IFBhcnNlckVycm9yIEJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZSgpCiAgICAgICAgIG1fY29k
ZUJsb2NrLT5hZGRFeGNlcHRpb25IYW5kbGVyKGluZm8pOwogICAgIH0KICAgICAKKworICAgIGlm
IChtX2NvZGVCbG9jay0+cGFyc2VNb2RlKCkgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JC
b2R5TW9kZSkKKyAgICAgICAgcGVyZm9ybUdlbmVyYXRvcmlmaWNhdGlvbihtX2NvZGVCbG9jay5n
ZXQoKSwgbV9pbnN0cnVjdGlvbnMsIG1fZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZS5nZXQoKSwg
bV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlSW5kZXgpOworCiAgICAgbV9jb2RlQmxvY2stPnNl
dEluc3RydWN0aW9ucyhzdGQ6Om1ha2VfdW5pcXVlPFVubGlua2VkSW5zdHJ1Y3Rpb25TdHJlYW0+
KG1faW5zdHJ1Y3Rpb25zKSk7CiAKICAgICBtX2NvZGVCbG9jay0+c2hyaW5rVG9GaXQoKTsKQEAg
LTI2MiwxMCArMjY3LDE0IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihW
TSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtlCiAgICAgYm9vbCBzaG91
bGRDYXB0dXJlQWxsT2ZUaGVUaGluZ3MgPSBtX3Nob3VsZEVtaXREZWJ1Z0hvb2tzIHx8IGNvZGVC
bG9jay0+dXNlc0V2YWwoKTsKICAgICBib29sIG5lZWRzQXJndW1lbnRzID0gKGZ1bmN0aW9uTm9k
ZS0+dXNlc0FyZ3VtZW50cygpIHx8IGNvZGVCbG9jay0+dXNlc0V2YWwoKSB8fCAoZnVuY3Rpb25O
b2RlLT51c2VzQXJyb3dGdW5jdGlvbigpICYmICFjb2RlQmxvY2stPmlzQXJyb3dGdW5jdGlvbigp
ICYmIGlzQXJndW1lbnRzVXNlZEluSW5uZXJBcnJvd0Z1bmN0aW9uKCkpKTsKIAotICAgIC8vIEdl
bmVyYXRvciBuZXZlciBwcm92aWRlcyAiYXJndW1lbnRzIi4gImFyZ3VtZW50cyIgcmVmZXJlbmNl
IHdpbGwgYmUgcmVzb2x2ZWQgaW4gYW4gdXBwZXIgZ2VuZXJhdG9yIGZ1bmN0aW9uIHNjb3BlLgot
ICAgIGlmIChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JCb2R5TW9kZSkK
KyAgICBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yQm9keU1vZGUp
IHsKKyAgICAgICAgLy8gR2VuZXJhdG9yIG5ldmVyIHByb3ZpZGVzICJhcmd1bWVudHMiLiAiYXJn
dW1lbnRzIiByZWZlcmVuY2Ugd2lsbCBiZSByZXNvbHZlZCBpbiBhbiB1cHBlciBnZW5lcmF0b3Ig
ZnVuY3Rpb24gc2NvcGUuCiAgICAgICAgIG5lZWRzQXJndW1lbnRzID0gZmFsc2U7CiAKKyAgICAg
ICAgLy8gR2VuZXJhdG9yIHVzZXMgdGhlIHZhciBzY29wZSB0byBzYXZlIGFuZCByZXN1bWUgaXRz
IHZhcmlhYmxlcy4gU28gdGhlIGxleGljYWwgc2NvcGUgaXMgYWx3YXlzIGluc3RhbnRpYXRlZC4K
KyAgICAgICAgc2hvdWxkQ2FwdHVyZVNvbWVPZlRoZVRoaW5ncyA9IHRydWU7CisgICAgfQorCiAg
ICAgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvcldyYXBwZXJGdW5j
dGlvbk1vZGUgJiYgbmVlZHNBcmd1bWVudHMpIHsKICAgICAgICAgLy8gR2VuZXJhdG9yIGRvZXMg
bm90IHByb3ZpZGUgImFyZ3VtZW50cyIuIEluc3RlYWQsIHdyYXBwaW5nIEdlbmVyYXRvckZ1bmN0
aW9uIHByb3ZpZGVzICJhcmd1bWVudHMiLgogICAgICAgICAvLyBUaGlzIGlzIGJlY2F1c2UgYXJn
dW1lbnRzIG9mIGEgZ2VuZXJhdG9yIHNob3VsZCBiZSBldmFsdWF0ZWQgYmVmb3JlIHN0YXJ0aW5n
IGl0LgpAQCAtMjc0LDcgKzI4Myw3IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVy
YXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtlCiAgICAgICAg
IC8vICAgIGZ1bmN0aW9uICpnZW4oYSwgYiA9IGhlbGxvKCkpCiAgICAgICAgIC8vICAgIHsKICAg
ICAgICAgLy8gICAgICAgIHJldHVybiB7Ci0gICAgICAgIC8vICAgICAgICAgICAgQGdlbmVyYXRv
ck5leHQ6IGZ1bmN0aW9uIChAZ2VuZXJhdG9yLCBAZ2VuZXJhdG9yU3RhdGUsIEBnZW5lcmF0b3JW
YWx1ZSwgQGdlbmVyYXRvclJlc3VtZU1vZGUpCisgICAgICAgIC8vICAgICAgICAgICAgQGdlbmVy
YXRvck5leHQ6IGZ1bmN0aW9uIChAZ2VuZXJhdG9yLCBAZ2VuZXJhdG9yU3RhdGUsIEBnZW5lcmF0
b3JWYWx1ZSwgQGdlbmVyYXRvclJlc3VtZU1vZGUsIEBnZW5lcmF0b3JGcmFtZSkKICAgICAgICAg
Ly8gICAgICAgICAgICB7CiAgICAgICAgIC8vICAgICAgICAgICAgICAgIGFyZ3VtZW50czsgIC8v
IFRoaXMgYGFyZ3VtZW50c2Agc2hvdWxkIHJlZmVyZW5jZSB0byB0aGUgZ2VuJ3MgYXJndW1lbnRz
LgogICAgICAgICAvLyAgICAgICAgICAgICAgICAuLi4KQEAgLTMwMywxNiArMzEyLDE0IEBAIEJ5
dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSog
ZnVuY3Rpb25Ob2RlLCBVbmxpbmtlCiAgICAgICAgIHJldHVybiBjYXB0dXJlcyh1aWQpID8gVmFy
S2luZDo6U2NvcGUgOiBWYXJLaW5kOjpTdGFjazsKICAgICB9OwogCi0gICAgZW1pdEVudGVyKCk7
Ci0KLSAgICBhbGxvY2F0ZUFuZEVtaXRTY29wZSgpOwotCiAgICAgbV9jYWxsZWVSZWdpc3Rlci5z
ZXRJbmRleChDYWxsRnJhbWVTbG90OjpjYWxsZWUpOwogCiAgICAgaW5pdGlhbGl6ZVBhcmFtZXRl
cnMocGFyYW1ldGVycyk7CiAgICAgQVNTRVJUKCEoaXNTaW1wbGVQYXJhbWV0ZXJMaXN0ICYmIG1f
cmVzdFBhcmFtZXRlcikpOwogCi0gICAgLy8gQmVmb3JlIGVtaXR0aW5nIGEgc2NvcGUgY3JlYXRp
b24sIGVtaXQgYSBnZW5lcmF0b3IgcHJvbG9ndWUgdGhhdCBjb250YWlucyBqdW1wIGJhc2VkIG9u
IGEgZ2VuZXJhdG9yJ3Mgc3RhdGUuCisgICAgZW1pdEVudGVyKCk7CisKKyAgICAvLyBCZWZvcmUg
ZW1pdHRpbmcgYW55IG9mIHRoZSBhY3R1YWwgY29kZSBleGNlcHQgZm9yIG9wX2VudGVyLCBlbWl0
IGEgZ2VuZXJhdG9yIHByb2xvZ3VlIHRoYXQgY29udGFpbnMganVtcCBiYXNlZCBvbiBhIGdlbmVy
YXRvcidzIHN0YXRlLgogICAgIGlmIChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5l
cmF0b3JCb2R5TW9kZSkgewogICAgICAgICBtX2dlbmVyYXRvclJlZ2lzdGVyID0gJm1fcGFyYW1l
dGVyc1sxXTsKIApAQCAtMzI2LDYgKzMzMyw4IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29k
ZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtlCiAg
ICAgICAgIGVtaXRHZW5lcmF0b3JTdGF0ZUxhYmVsKCk7CiAgICAgfQogCisgICAgYWxsb2NhdGVB
bmRFbWl0U2NvcGUoKTsKKwogICAgIGlmIChmdW5jdGlvbk5hbWVJc0luU2NvcGUoZnVuY3Rpb25O
b2RlLT5pZGVudCgpLCBmdW5jdGlvbk5vZGUtPmZ1bmN0aW9uTW9kZSgpKSkgewogICAgICAgICBB
U1NFUlQocGFyc2VNb2RlICE9IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yQm9keU1vZGUpOwog
ICAgICAgICBib29sIGlzRHluYW1pY1Njb3BlID0gZnVuY3Rpb25OYW1lU2NvcGVJc0R5bmFtaWMo
Y29kZUJsb2NrLT51c2VzRXZhbCgpLCBjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKTsKQEAgLTYz
Miw2ICs2NDEsMTYgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2
bSwgRnVuY3Rpb25Ob2RlKiBmdW5jdGlvbk5vZGUsIFVubGlua2UKICAgICAgICAgICAgIGVtaXRM
b2FkTmV3VGFyZ2V0RnJvbUFycm93RnVuY3Rpb25MZXhpY2FsRW52aXJvbm1lbnQoKTsKICAgICB9
CiAgICAgCisgICAgLy8gU2V0IHVwIHRoZSBsZXhpY2FsIGVudmlyb25tZW50IHNjb3BlIGFzIHRo
ZSBnZW5lcmF0b3IgZnJhbWUuIFdlIHN0b3JlIHRoZSBzYXZlZCBhbmQgcmVzdW1lZCBnZW5lcmF0
b3IgcmVnaXN0ZXJzIGludG8gdGhpcyBzY29wZSB3aXRoIHRoZSBzeW1ib2wga2V5cy4KKyAgICAv
LyBTaW5jZSB0aGV5IGFyZSBzeW1ib2wga2V5ZWQsIHRoZXNlIHZhcmlhYmxlcyBjYW5ub3QgYmUg
cmVhY2hlZCBmcm9tIHRoZSB1c3VhbCBjb2RlLgorICAgIGlmIChTb3VyY2VQYXJzZU1vZGU6Okdl
bmVyYXRvckJvZHlNb2RlID09IHBhcnNlTW9kZSkgeworICAgICAgICBBU1NFUlQobV9sZXhpY2Fs
RW52aXJvbm1lbnRSZWdpc3Rlcik7CisgICAgICAgIG1fZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJs
ZS5zZXQoKm1fdm0sIGZ1bmN0aW9uU3ltYm9sVGFibGUpOworICAgICAgICBtX2dlbmVyYXRvckZy
YW1lU3ltYm9sVGFibGVJbmRleCA9IHN5bWJvbFRhYmxlQ29uc3RhbnRJbmRleDsKKyAgICAgICAg
ZW1pdE1vdmUoZ2VuZXJhdG9yRnJhbWVSZWdpc3RlcigpLCBtX2xleGljYWxFbnZpcm9ubWVudFJl
Z2lzdGVyKTsKKyAgICAgICAgZW1pdFB1dEJ5SWQoZ2VuZXJhdG9yUmVnaXN0ZXIoKSwgcHJvcGVy
dHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvckZyYW1lUHJpdmF0ZU5hbWUoKSwgZ2Vu
ZXJhdG9yRnJhbWVSZWdpc3RlcigpKTsKKyAgICB9CisKICAgICBib29sIHNob3VsZEluaXRpYWxp
emVCbG9ja1Njb3BlZEZ1bmN0aW9ucyA9IGZhbHNlOyAvLyBXZSBnZW5lcmF0ZSB0b3AtbGV2ZWwg
ZnVuY3Rpb24gZGVjbGFyYXRpb25zIGluIDo6Z2VuZXJhdGUoKS4KICAgICBwdXNoTGV4aWNhbFNj
b3BlKG1fc2NvcGVOb2RlLCBURFpDaGVja09wdGltaXphdGlvbjo6T3B0aW1pemUsIE5lc3RlZFNj
b3BlVHlwZTo6SXNOb3ROZXN0ZWQsIG51bGxwdHIsIHNob3VsZEluaXRpYWxpemVCbG9ja1Njb3Bl
ZEZ1bmN0aW9ucyk7CiB9CkBAIC0zNjYzLDggKzM2ODIsNyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0Q29tcGxleFBvcFNjb3BlcyhSZWdpc3RlcklEKiBzY29wZSwgQ29udHJvbEZsb3dD
b250ZQogICAgICAgICAgICAgaWYgKGZsaXBUcmllcykgewogICAgICAgICAgICAgICAgIHdoaWxl
IChtX3RyeUNvbnRleHRTdGFjay5zaXplKCkgIT0gZmluYWxseUNvbnRleHQudHJ5Q29udGV4dFN0
YWNrU2l6ZSkgewogICAgICAgICAgICAgICAgICAgICBBU1NFUlQobV90cnlDb250ZXh0U3RhY2su
c2l6ZSgpID4gZmluYWxseUNvbnRleHQudHJ5Q29udGV4dFN0YWNrU2l6ZSk7Ci0gICAgICAgICAg
ICAgICAgICAgIFRyeUNvbnRleHQgY29udGV4dCA9IG1fdHJ5Q29udGV4dFN0YWNrLmxhc3QoKTsK
LSAgICAgICAgICAgICAgICAgICAgbV90cnlDb250ZXh0U3RhY2sucmVtb3ZlTGFzdCgpOworICAg
ICAgICAgICAgICAgICAgICBUcnlDb250ZXh0IGNvbnRleHQgPSBtX3RyeUNvbnRleHRTdGFjay50
YWtlTGFzdCgpOwogICAgICAgICAgICAgICAgICAgICBUcnlSYW5nZSByYW5nZTsKICAgICAgICAg
ICAgICAgICAgICAgcmFuZ2Uuc3RhcnQgPSBjb250ZXh0LnN0YXJ0OwogICAgICAgICAgICAgICAg
ICAgICByYW5nZS5lbmQgPSBiZWZvcmVGaW5hbGx5OwpAQCAtMzk0OCw3ICszOTY2LDcgQEAgc3Rh
dGljIHZvaWQgcHJlcGFyZUp1bXBUYWJsZUZvclN0cmluZ1N3aXRjaChVbmxpbmtlZFN0cmluZ0p1
bXBUYWJsZSYganVtcFRhYmxlLAogICAgICAgICAKICAgICAgICAgQVNTRVJUKG5vZGVzW2ldLT5p
c1N0cmluZygpKTsKICAgICAgICAgU3RyaW5nSW1wbCogY2xhdXNlID0gc3RhdGljX2Nhc3Q8U3Ry
aW5nTm9kZSo+KG5vZGVzW2ldKS0+dmFsdWUoKS5pbXBsKCk7Ci0gICAgICAgIGp1bXBUYWJsZS5v
ZmZzZXRUYWJsZS5hZGQoY2xhdXNlLCBsYWJlbHNbaV0tPmJpbmQoc3dpdGNoQWRkcmVzcywgc3dp
dGNoQWRkcmVzcyArIDMpKTsKKyAgICAgICAganVtcFRhYmxlLm9mZnNldFRhYmxlLmFkZChjbGF1
c2UsIFVubGlua2VkU3RyaW5nSnVtcFRhYmxlOjpPZmZzZXRMb2NhdGlvbiB7IGxhYmVsc1tpXS0+
YmluZChzd2l0Y2hBZGRyZXNzLCBzd2l0Y2hBZGRyZXNzICsgMykgfSk7CiAgICAgfQogfQogCkBA
IC00NDU2LDE2ICs0NDc0LDM2IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRZaWVsZFBv
aW50KFJlZ2lzdGVySUQqIGFyZ3VtZW50KQogICAgIGVtaXRHZW5lcmF0b3JTdGF0ZUNoYW5nZSh5
aWVsZFBvaW50SW5kZXgpOwogICAgIC8vIEZpcnN0IHlpZWxkIHBvaW50IGlzIHVzZWQgZm9yIGlu
aXRpYWwgc2VxdWVuY2UuCiAgICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0geWll
bGRQb2ludEluZGV4IC0gMTsKKworICAgIC8vIFNwbGl0IHRoZSB0cnkgcmFuZ2UgaGVyZS4KKyAg
ICBSZWZQdHI8TGFiZWw+IHNhdmVQb2ludCA9IGVtaXRMYWJlbChuZXdMYWJlbCgpLmdldCgpKTsK
KyAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX3RyeUNvbnRleHRTdGFjay5zaXplKCk7IGktLTspIHsK
KyAgICAgICAgVHJ5Q29udGV4dCYgY29udGV4dCA9IG1fdHJ5Q29udGV4dFN0YWNrW2ldOworICAg
ICAgICBUcnlSYW5nZSByYW5nZTsKKyAgICAgICAgcmFuZ2Uuc3RhcnQgPSBjb250ZXh0LnN0YXJ0
OworICAgICAgICByYW5nZS5lbmQgPSBzYXZlUG9pbnQ7CisgICAgICAgIHJhbmdlLnRyeURhdGEg
PSBjb250ZXh0LnRyeURhdGE7CisgICAgICAgIG1fdHJ5UmFuZ2VzLmFwcGVuZChyYW5nZSk7CisK
KyAgICAgICAgLy8gVHJ5IHJhbmdlIHdpbGwgYmUgcmVzdGFyZWQgYXQgdGhlIG1lcmdlIHBvaW50
LgorICAgICAgICBjb250ZXh0LnN0YXJ0ID0gbWVyZ2VQb2ludDsKKyAgICB9CisgICAgVmVjdG9y
PFRyeUNvbnRleHQ+IHNhdmVkVHJ5Q29udGV4dFN0YWNrOworICAgIG1fdHJ5Q29udGV4dFN0YWNr
LnN3YXAoc2F2ZWRUcnlDb250ZXh0U3RhY2spOworCiAgICAgZW1pdFNhdmUobWVyZ2VQb2ludC5n
ZXQoKSwgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4KTsKICAgICBlbWl0UmV0dXJuKGFyZ3VtZW50KTsK
ICAgICBlbWl0UmVzdW1lKG1lcmdlUG9pbnQuZ2V0KCksIGxpdmVDYWxsZWVMb2NhbHNJbmRleCk7
CisKKyAgICAvLyBSZXN0b3JlIHRoZSB0cnkgY29udGV4dHMsIHdoaWNoIHN0YXJ0IG9mZnNldCBp
cyB1cGRhdGVkIHRvIHRoZSBtZXJnZSBwb2ludC4KKyAgICBtX3RyeUNvbnRleHRTdGFjay5zd2Fw
KHNhdmVkVHJ5Q29udGV4dFN0YWNrKTsKIH0KIAogdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dFNhdmUoTGFiZWwqIG1lcmdlUG9pbnQsIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCkK
IHsKICAgICBzaXplX3QgYmVnaW4gPSBpbnN0cnVjdGlvbnMoKS5zaXplKCk7CiAgICAgZW1pdE9w
Y29kZShvcF9zYXZlKTsKLSAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobV9nZW5lcmF0b3JSZWdp
c3Rlci0+aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGdlbmVyYXRvckZyYW1l
UmVnaXN0ZXIoKS0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGxpdmVDYWxs
ZWVMb2NhbHNJbmRleCk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1lcmdlUG9pbnQtPmJp
bmQoYmVnaW4sIGluc3RydWN0aW9ucygpLnNpemUoKSkpOwogfQpAQCAtNDQ3NCw3ICs0NTEyLDcg
QEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlc3VtZShMYWJlbCogbWVyZ2VQb2ludCwg
dW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0kKIHsKICAgICBlbWl0R2VuZXJhdG9yU3RhdGVMYWJl
bCgpOwogICAgIGVtaXRPcGNvZGUob3BfcmVzdW1lKTsKLSAgICBpbnN0cnVjdGlvbnMoKS5hcHBl
bmQobV9nZW5lcmF0b3JSZWdpc3Rlci0+aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKGdlbmVyYXRvckZyYW1lUmVnaXN0ZXIoKS0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25z
KCkuYXBwZW5kKGxpdmVDYWxsZWVMb2NhbHNJbmRleCk7CiAgICAgZW1pdExhYmVsKG1lcmdlUG9p
bnQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5oCmluZGV4IDVmYWYwNGYyZjNkYmExOGFkYjA3ODllMzIzZTlkYWFl
NjFhYjExNmIuLmE5MTZlMmU2MjhiNDY0OTgzMzIzNjFmZDIzOTY1MTM5ZjFlNmJkNTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmgKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJMYWJlbC5oIgogI2luY2x1ZGUg
IkxhYmVsU2NvcGUuaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgorI2luY2x1ZGUgIkpTR2Vu
ZXJhdG9yRnVuY3Rpb24uaCIKICNpbmNsdWRlICJQYXJzZXJFcnJvci5oIgogI2luY2x1ZGUgIlJl
Z2lzdGVySUQuaCIKICNpbmNsdWRlICJTZXRGb3JTY29wZS5oIgpAQCAtNzAyLDkgKzcwMywxMCBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdERlbGVnYXRlWWllbGQo
UmVnaXN0ZXJJRCogYXJndW1lbnQsIFRocm93YWJsZUV4cHJlc3Npb25EYXRhKik7CiAgICAgICAg
IHZvaWQgYmVnaW5HZW5lcmF0b3IoUmVnaXN0ZXJJRCopOwogICAgICAgICB2b2lkIGVuZEdlbmVy
YXRvcihMYWJlbCogZGVmYXVsdExhYmVsKTsKLSAgICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9y
U3RhdGVSZWdpc3RlcigpIHsgcmV0dXJuICZtX3BhcmFtZXRlcnNbMl07IH0KLSAgICAgICAgUmVn
aXN0ZXJJRCogZ2VuZXJhdG9yVmFsdWVSZWdpc3RlcigpIHsgcmV0dXJuICZtX3BhcmFtZXRlcnNb
M107IH0KLSAgICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKCkg
eyByZXR1cm4gJm1fcGFyYW1ldGVyc1s0XTsgfQorICAgICAgICBSZWdpc3RlcklEKiBnZW5lcmF0
b3JTdGF0ZVJlZ2lzdGVyKCkgeyByZXR1cm4gJm1fcGFyYW1ldGVyc1tzdGF0aWNfY2FzdDxpbnQz
Ml90PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JBcmd1bWVudDo6U3RhdGUpXTsgfQor
ICAgICAgICBSZWdpc3RlcklEKiBnZW5lcmF0b3JWYWx1ZVJlZ2lzdGVyKCkgeyByZXR1cm4gJm1f
cGFyYW1ldGVyc1tzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5l
cmF0b3JBcmd1bWVudDo6VmFsdWUpXTsgfQorICAgICAgICBSZWdpc3RlcklEKiBnZW5lcmF0b3JS
ZXN1bWVNb2RlUmVnaXN0ZXIoKSB7IHJldHVybiAmbV9wYXJhbWV0ZXJzW3N0YXRpY19jYXN0PGlu
dDMyX3Q+KEpTR2VuZXJhdG9yRnVuY3Rpb246OkdlbmVyYXRvckFyZ3VtZW50OjpSZXN1bWVNb2Rl
KV07IH0KKyAgICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9yRnJhbWVSZWdpc3RlcigpIHsgcmV0
dXJuICZtX3BhcmFtZXRlcnNbc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3JGdW5jdGlv
bjo6R2VuZXJhdG9yQXJndW1lbnQ6OkZyYW1lKV07IH0KIAogICAgICAgICBDb2RlVHlwZSBjb2Rl
VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZVR5cGU7IH0KIApAQCAtOTMyLDYgKzkzNCwxMCBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgVmVjdG9yPFJlZlB0cjxGb3JJbkNvbnRleHQ+PiBt
X2ZvckluQ29udGV4dFN0YWNrOwogICAgICAgICBWZWN0b3I8VHJ5Q29udGV4dD4gbV90cnlDb250
ZXh0U3RhY2s7CiAgICAgICAgIFZlY3RvcjxSZWZQdHI8TGFiZWw+PiBtX2dlbmVyYXRvclJlc3Vt
ZUxhYmVsczsKKworICAgICAgICBTdHJvbmc8U3ltYm9sVGFibGU+IG1fZ2VuZXJhdG9yRnJhbWVT
eW1ib2xUYWJsZTsKKyAgICAgICAgaW50IG1fZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZUluZGV4
IHsgMCB9OworCiAgICAgICAgIGVudW0gRnVuY3Rpb25WYXJpYWJsZVR5cGUgOiB1aW50OF90IHsg
Tm9ybWFsRnVuY3Rpb25WYXJpYWJsZSwgR2xvYmFsRnVuY3Rpb25WYXJpYWJsZSB9OwogICAgICAg
ICBWZWN0b3I8c3RkOjpwYWlyPEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiwgRnVuY3Rpb25WYXJpYWJs
ZVR5cGU+PiBtX2Z1bmN0aW9uc1RvSW5pdGlhbGl6ZTsKICAgICAgICAgYm9vbCBtX25lZWRUb0lu
aXRpYWxpemVBcmd1bWVudHMgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT3BlcmF0aW9ucy5jcHAKaW5kZXggNjlhMTZlYjVkYTQzNTViYzc5MjVjNWRmZGNiMDYyMDIz
ZTk5NjUwMi4uYzQ1NzIzYjE5MDEzMjAyNWRmY2UzMjZmNjAxNWVjYTZjZTU4ZDcxYSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCkBAIC00Miw4ICs0Miw4
IEBACiAjaW5jbHVkZSAiRGlyZWN0QXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiRlRMRm9yT1NSRW50
cnlKSVRDb2RlLmgiCiAjaW5jbHVkZSAiRlRMT1NSRW50cnkuaCIKLSNpbmNsdWRlICJIb3N0Q2Fs
bFJldHVyblZhbHVlLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCisjaW5jbHVkZSAiSG9z
dENhbGxSZXR1cm5WYWx1ZS5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAi
SklULmgiCiAjaW5jbHVkZSAiSklURXhjZXB0aW9ucy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2dlbmVyYXRlLWJ5dGVjb2RlLWZpbGVzIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2dlbmVyYXRlLWJ5dGVjb2RlLWZpbGVzCmluZGV4IDU2NjZhM2Y5MjRjMTE5YjIxNmQzZmYw
ZmZlOWM2NzJiN2M3MWJiNzkuLjhmNzkwZWQ5ZmE4MzE2ZDM5ZGExNWQzYjc1ODk0NmJmNDlmM2Jk
M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0ZS1ieXRlY29kZS1m
aWxlcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdGUtYnl0ZWNvZGUtZmlsZXMK
QEAgLTk0LDEzICs5NCwxNCBAQCBkZWYgb3Blbk9yRXhpdChwYXRoLCBtb2RlKToKICAgICAgICAg
cHJpbnQgIkkvTyBlcnJvciBvcGVuaW5nIHswfSwgKHsxfSk6IHsyfSIuZm9ybWF0KHBhdGgsIGUu
ZXJybm8sIGUuc3RyZXJyb3IpCiAgICAgICAgIGV4aXQoMSkKIAotZGVmIGhhc2hGaWxlKGZpbGUp
OgorZGVmIGhhc2hGaWxlKGZpbGVzKToKICAgICBzaGExID0gaGFzaGxpYi5zaGExKCkKLSAgICBm
aWxlLnNlZWsoMCkKLSAgICBmb3IgbGluZSBpbiBmaWxlOgotICAgICAgICBzaGExLnVwZGF0ZShs
aW5lKQorICAgIGZvciBmaWxlIGluIGZpbGVzOgorICAgICAgICBmaWxlLnNlZWsoMCkKKyAgICAg
ICAgZm9yIGxpbmUgaW4gZmlsZToKKyAgICAgICAgICAgIHNoYTEudXBkYXRlKGxpbmUpCiAKLSAg
ICBmaWxlLnNlZWsoMCkKKyAgICAgICAgZmlsZS5zZWVrKDApCiAKICAgICByZXR1cm4gc2hhMS5o
ZXhkaWdlc3QoKQogCkBAIC0xMTUsNyArMTE2LDggQEAgaWYgX19uYW1lX18gPT0gIl9fbWFpbl9f
IjoKIAogICAgIGJ5dGVjb2RlSlNPTkZpbGUgPSBhcmdzWzBdCiAgICAgYnl0ZWNvZGVGaWxlID0g
b3Blbk9yRXhpdChieXRlY29kZUpTT05GaWxlLCAicmIiKQotICAgIHNoYTFIYXNoID0gaGFzaEZp
bGUoYnl0ZWNvZGVGaWxlKQorICAgIGdlbmVyYXRvckZpbGUgPSBvcGVuT3JFeGl0KF9fZmlsZV9f
LCAicmIiKQorICAgIHNoYTFIYXNoID0gaGFzaEZpbGUoW2J5dGVjb2RlRmlsZSwgZ2VuZXJhdG9y
RmlsZV0pCiAKICAgICBoRmlsZUhhc2hTdHJpbmcgPSAiLy8gU0hBMUhhc2g6IHswfVxuIi5mb3Jt
YXQoc2hhMUhhc2gpCiAgICAgYXNtRmlsZUhhc2hTdHJpbmcgPSAiIyBTSEExSGFzaDogezB9XG4i
LmZvcm1hdChzaGExSGFzaCkKQEAgLTE4Nyw2ICsxODksNyBAQCBpZiBfX25hbWVfXyA9PSAiX19t
YWluX18iOgogICAgICAgICAgICAgICAgIGRlZmF1bHRMZW5ndGggPSBzZWN0aW9uWyJkZWZhdWx0
TGVuZ3RoIl0KIAogICAgICAgICAgICAgYnl0ZWNvZGVOdW0gPSAwCisgICAgICAgICAgICBtYXhM
ZW5ndGggPSAwCiAgICAgICAgICAgICBmb3IgYnl0ZWNvZGUgaW4gc2VjdGlvblsiYnl0ZWNvZGVz
Il06CiAgICAgICAgICAgICAgICAgaWYgbm90IGZpcnN0TWFjcm86CiAgICAgICAgICAgICAgICAg
ICAgIGJ5dGVjb2RlSEZpbGUud3JpdGUoIiBcXFxuIikKQEAgLTE5NCw2ICsxOTcsNyBAQCBpZiBf
X25hbWVfXyA9PSAiX19tYWluX18iOgogICAgICAgICAgICAgICAgIGxlbmd0aCA9IGRlZmF1bHRM
ZW5ndGgKICAgICAgICAgICAgICAgICBpZiAibGVuZ3RoIiBpbiBieXRlY29kZToKICAgICAgICAg
ICAgICAgICAgICAgbGVuZ3RoID0gYnl0ZWNvZGVbImxlbmd0aCJdCisgICAgICAgICAgICAgICAg
ICAgIG1heExlbmd0aCA9IG1heChbbGVuZ3RoLCBtYXhMZW5ndGhdKQogCiAgICAgICAgICAgICAg
ICAgYnl0ZWNvZGVIRmlsZS53cml0ZSgiICAgIG1hY3JvKHswfSwgezF9KSIuZm9ybWF0KGJ5dGVj
b2RlWyJuYW1lIl0sIGxlbmd0aCkpCiAgICAgICAgICAgICAgICAgZmlyc3RNYWNybyA9IEZhbHNl
CkBAIC0yMDEsNiArMjA1LDcgQEAgaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKIAogICAgICAg
ICAgICAgYnl0ZWNvZGVIRmlsZS53cml0ZSgiXG5cbiIpCiAgICAgICAgICAgICBieXRlY29kZUhG
aWxlLndyaXRlKCIjZGVmaW5lIE5VTUJFUl9PRl97MH1fSURTIHsxfVxuXG4iLmZvcm1hdChzZWN0
aW9uWyJtYWNyb05hbWVDb21wb25lbnQiXSwgYnl0ZWNvZGVOdW0pKQorICAgICAgICAgICAgYnl0
ZWNvZGVIRmlsZS53cml0ZSgiI2RlZmluZSBNQVhfT1BDT0RFX0xFTkdUSF9PRl97MH0gezF9XG5c
biIuZm9ybWF0KHNlY3Rpb25bIm1hY3JvTmFtZUNvbXBvbmVudCJdLCBtYXhMZW5ndGgpKQogCiAg
ICAgICAgIGlmIGluaXRBU01GaWxlTmFtZSBhbmQgc2VjdGlvblsnZW1pdEluQVNNRmlsZSddOgog
ICAgICAgICAgICAgcHJlZml4ID0gIiIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50
ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCmluZGV4IDJiNGM3YzliM2ViMzZkNjMwNmVhODQ0ZTg1
Mzc2ZmZhN2ZkMGYxZjcuLmZlMzY4ZjM5MWNjMjdjMWEwNWI4YmQ5MGZmOTFhYzE2MjFiNjI0NzAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRl
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVy
LmNwcApAQCAtNjA4LDcgKzYwOCw3IEBAIEpTU3RyaW5nKiBJbnRlcnByZXRlcjo6c3RhY2tUcmFj
ZUFzU3RyaW5nKFZNJiB2bSwgY29uc3QgVmVjdG9yPFN0YWNrRnJhbWU+JiBzdGFjCiAgICAgcmV0
dXJuIGpzU3RyaW5nKCZ2bSwgYnVpbGRlci50b1N0cmluZygpKTsKIH0KIAotQUxXQVlTX0lOTElO
RSBzdGF0aWMgSGFuZGxlckluZm8qIGZpbmRFeGNlcHRpb25IYW5kbGVyKFN0YWNrVmlzaXRvciYg
dmlzaXRvciwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVCbG9jazo6UmVxdWlyZWRIYW5kbGVy
IHJlcXVpcmVkSGFuZGxlcikKK0FMV0FZU19JTkxJTkUgc3RhdGljIEhhbmRsZXJJbmZvKiBmaW5k
RXhjZXB0aW9uSGFuZGxlcihTdGFja1Zpc2l0b3ImIHZpc2l0b3IsIENvZGVCbG9jayogY29kZUJs
b2NrLCBSZXF1aXJlZEhhbmRsZXIgcmVxdWlyZWRIYW5kbGVyKQogewogICAgIEFTU0VSVChjb2Rl
QmxvY2spOwogI2lmIEVOQUJMRShERkdfSklUKQpAQCAtNjQyLDcgKzY0Miw3IEBAIGNsYXNzIEdl
dENhdGNoSGFuZGxlckZ1bmN0b3IgewogICAgICAgICBpZiAoIWNvZGVCbG9jaykKICAgICAgICAg
ICAgIHJldHVybiBTdGFja1Zpc2l0b3I6OkNvbnRpbnVlOwogCi0gICAgICAgIG1faGFuZGxlciA9
IGZpbmRFeGNlcHRpb25IYW5kbGVyKHZpc2l0b3IsIGNvZGVCbG9jaywgQ29kZUJsb2NrOjpSZXF1
aXJlZEhhbmRsZXI6OkNhdGNoSGFuZGxlcik7CisgICAgICAgIG1faGFuZGxlciA9IGZpbmRFeGNl
cHRpb25IYW5kbGVyKHZpc2l0b3IsIGNvZGVCbG9jaywgUmVxdWlyZWRIYW5kbGVyOjpDYXRjaEhh
bmRsZXIpOwogICAgICAgICBpZiAobV9oYW5kbGVyKQogICAgICAgICAgICAgcmV0dXJuIFN0YWNr
VmlzaXRvcjo6RG9uZTsKIApAQCAtNjg0LDcgKzY4NCw3IEBAIGNsYXNzIFVud2luZEZ1bmN0b3Ig
ewogICAgICAgICBtX2hhbmRsZXIgPSBudWxscHRyOwogICAgICAgICBpZiAoIW1faXNUZXJtaW5h
dGlvbikgewogICAgICAgICAgICAgaWYgKG1fY29kZUJsb2NrICYmICFpc1dlYkFzc2VtYmx5RXhl
Y3V0YWJsZShtX2NvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCkpKQotICAgICAgICAgICAgICAg
IG1faGFuZGxlciA9IGZpbmRFeGNlcHRpb25IYW5kbGVyKHZpc2l0b3IsIG1fY29kZUJsb2NrLCBD
b2RlQmxvY2s6OlJlcXVpcmVkSGFuZGxlcjo6QW55SGFuZGxlcik7CisgICAgICAgICAgICAgICAg
bV9oYW5kbGVyID0gZmluZEV4Y2VwdGlvbkhhbmRsZXIodmlzaXRvciwgbV9jb2RlQmxvY2ssIFJl
cXVpcmVkSGFuZGxlcjo6QW55SGFuZGxlcik7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAobV9o
YW5kbGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0lu
dGVycHJldGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0
ZXIuaAppbmRleCBkMjA5NGRlZTdkMjg1YWM0OTViMTU0MTcyYTIzYjk0ZmZlODU3ZjFlLi4wNzMy
YjNlYmJkOWFkZmQyMjMzNjJlYzlhNmJhYWFmZDg2MWY1MjY3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaApAQCAtNjYsNiArNjYsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICBzdHJ1Y3QgSGFuZGxlckluZm87CiAgICAgc3RydWN0IEluc3Ry
dWN0aW9uOwogICAgIHN0cnVjdCBQcm90b0NhbGxGcmFtZTsKKyAgICBzdHJ1Y3QgVW5saW5rZWRJ
bnN0cnVjdGlvbjsKIAogICAgIGVudW0gVW53aW5kU3RhcnQgeyBVbndpbmRGcm9tQ3VycmVudEZy
YW1lLCBVbndpbmRGcm9tQ2FsbGVyRnJhbWUgfTsKIApAQCAtMjA4LDcgKzIwOSwxMCBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBvcGNvZGU7CiAjZW5kaWYKICAgICAgICAg
fQotICAgICAgICAKKworICAgICAgICBPcGNvZGVJRCBnZXRPcGNvZGVJRChjb25zdCBJbnN0cnVj
dGlvbiYpOworICAgICAgICBPcGNvZGVJRCBnZXRPcGNvZGVJRChjb25zdCBVbmxpbmtlZEluc3Ry
dWN0aW9uJik7CisKICAgICAgICAgYm9vbCBpc09wY29kZShPcGNvZGUpOwogCiAgICAgICAgIEpT
VmFsdWUgZXhlY3V0ZShQcm9ncmFtRXhlY3V0YWJsZSosIENhbGxGcmFtZSosIEpTT2JqZWN0KiB0
aGlzT2JqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9J
bnRlcnByZXRlcklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9J
bnRlcnByZXRlcklubGluZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NmQwNzE0OGE1MmU2NWUzNzVmOTdlNmVi
YjkxYWRiZTFkZDQ1NjBkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL0ludGVycHJldGVySW5saW5lcy5oCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTYgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29t
PgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2luY2x1ZGUgIkluc3RydWN0aW9uLmgiCisjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIK
KyNpbmNsdWRlICJVbmxpbmtlZENvZGVCbG9jay5oIgorCituYW1lc3BhY2UgSlNDIHsKKworaW5s
aW5lIE9wY29kZUlEIEludGVycHJldGVyOjpnZXRPcGNvZGVJRChjb25zdCBJbnN0cnVjdGlvbiYg
aW5zdHJ1Y3Rpb24pCit7CisgICAgcmV0dXJuIGdldE9wY29kZUlEKGluc3RydWN0aW9uLnUub3Bj
b2RlKTsKK30KKworaW5saW5lIE9wY29kZUlEIEludGVycHJldGVyOjpnZXRPcGNvZGVJRChjb25z
dCBVbmxpbmtlZEluc3RydWN0aW9uJiBpbnN0cnVjdGlvbikKK3sKKyAgICByZXR1cm4gaW5zdHJ1
Y3Rpb24udS5vcGNvZGU7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVQuY3BwCmluZGV4IDhmZDNmNThlZDQxNmE3NzRiYjI3NjVlNGQ0ZDUzZDY4YmU5MTgyZTUu
LjYzMThjNjFkMzdhOGRhMTIzZWM2ZjM4YTI4ZTE5NTVjODU4MzEwMzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5jcHAKQEAgLTIzNSw4ICsyMzUsNiBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBp
bGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9PUChvcF9nZXRfcmVzdF9sZW5ndGgpCiAgICAg
ICAgIERFRklORV9PUChvcF9jaGVja190ZHopCiAgICAgICAgIERFRklORV9PUChvcF9hc3NlcnQp
Ci0gICAgICAgIERFRklORV9PUChvcF9zYXZlKQotICAgICAgICBERUZJTkVfT1Aob3BfcmVzdW1l
KQogICAgICAgICBERUZJTkVfT1Aob3BfZGVidWcpCiAgICAgICAgIERFRklORV9PUChvcF9kZWxf
YnlfaWQpCiAgICAgICAgIERFRklORV9PUChvcF9kZWxfYnlfdmFsKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklULmgKaW5kZXggYzk0Yjc0MGJjY2U1MjU1MDdlYjI4YzcwZDg2YWI2MTc1ZDcwNzViYi4uZmY1
MjAzMjcwMTZlY2QyM2VhYTY4OTJkMzUzYmVjM2ZmMzY0MDI1YyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVC5oCkBAIC01MDAsOCArNTAwLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQg
ZW1pdF9vcF9nZXRfcmVzdF9sZW5ndGgoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0
X29wX2NoZWNrX3RkeihJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfYXNzZXJ0
KEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9zYXZlKEluc3RydWN0aW9uKik7
Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9yZXN1bWUoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9p
ZCBlbWl0X29wX2RlYnVnKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9kZWxf
YnlfaWQoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2RlbF9ieV92YWwoSW5z
dHJ1Y3Rpb24qKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bj
b2Rlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCmluZGV4
IGQ5OWQ0MTVhMzNiNzUyZGNjM2ZhYjE1Yjk0Yjk2NGExMTExY2U4MzEuLjAxMjMyMGEwYTZmMDMw
NzM3MzUzMDMxNWI0YjE4OWVhNmFhZjNmZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGNvZGVzLmNwcApAQCAtMTQ4OSwxOCArMTQ4OSw2IEBAIHZvaWQgSklUOjplbWl0X29wX2dl
dF9yZXN0X2xlbmd0aChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogI2VuZGlmCiB9
CiAKLXZvaWQgSklUOjplbWl0X29wX3NhdmUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKLXsKLSAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0
cnVjdGlvbiwgc2xvd19wYXRoX3NhdmUpOwotICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7Ci19Ci0K
LXZvaWQgSklUOjplbWl0X29wX3Jlc3VtZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQotewotICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3Ry
dWN0aW9uLCBzbG93X3BhdGhfcmVzdW1lKTsKLSAgICBzbG93UGF0aENhbGwuY2FsbCgpOwotfQot
CiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEVOQUJMRShKSVQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KaW5kZXgg
MzJiNTBjMDk1YjBmYWM1MDAyOGZjODAxNWY0NDUzOTBlZDE0YTdhNi4uYzk2YmYxYzhlYzFhNWU1
OThlYzA3NmM3M2NlMDMyOWQzODhlZDU3MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQpAQCAtMTY3MSwxNSArMTY3MSwxMSBA
QCBfbGxpbnRfb3BfYXNzZXJ0OgogCiAKIF9sbGludF9vcF9zYXZlOgotICAgIHRyYWNlRXhlY3V0
aW9uKCkKLSAgICBjYWxsT3Bjb2RlU2xvd1BhdGgoX3Nsb3dfcGF0aF9zYXZlKQotICAgIGRpc3Bh
dGNoKDQpCisgICAgbm90U3VwcG9ydGVkKCkKIAogCiBfbGxpbnRfb3BfcmVzdW1lOgotICAgIHRy
YWNlRXhlY3V0aW9uKCkKLSAgICBjYWxsT3Bjb2RlU2xvd1BhdGgoX3Nsb3dfcGF0aF9yZXN1bWUp
Ci0gICAgZGlzcGF0Y2goMykKKyAgICBub3RTdXBwb3J0ZWQoKQogCiAKIF9sbGludF9vcF9jcmVh
dGVfbGV4aWNhbF9lbnZpcm9ubWVudDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2Vy
LmNwcAppbmRleCAyNGQ5NDM2NjFjMmNlM2M4NmIyNWIzYmZlMDE1OThmYzc1OGY0NzI5Li4zY2Y4
ZGQwZTQ2NGQ0YTU1NmJiODRjMTY2OTE3NzI1YmI5MjJkMjVkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9QYXJzZXIuY3BwCkBAIC0yNTYsNyArMjU2LDcgQEAgU3RyaW5nIFBhcnNlcjxM
ZXhlclR5cGU+OjpwYXJzZUlubmVyKGNvbnN0IElkZW50aWZpZXImIGNhbGxlZU5hbWUsIFNvdXJj
ZVBhcnNlTW8KICAgICBpZiAobV9sZXhlci0+aXNSZXBhcnNpbmdGdW5jdGlvbigpKSB7CiAgICAg
ICAgIFBhcnNlckZ1bmN0aW9uSW5mbzxBU1RCdWlsZGVyPiBmdW5jdGlvbkluZm87CiAgICAgICAg
IGlmIChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JCb2R5TW9kZSkKLSAg
ICAgICAgICAgIG1fcGFyYW1ldGVycyA9IGNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMoY29udGV4
dCk7CisgICAgICAgICAgICBtX3BhcmFtZXRlcnMgPSBjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJz
KGNvbnRleHQsIGZ1bmN0aW9uSW5mby5wYXJhbWV0ZXJDb3VudCk7CiAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgIG1fcGFyYW1ldGVycyA9IHBhcnNlRnVuY3Rpb25QYXJhbWV0ZXJzKGNvbnRleHQs
IHBhcnNlTW9kZSwgZnVuY3Rpb25JbmZvKTsKIApAQCAtNTA3LDEwICs1MDcsOSBAQCB0ZW1wbGF0
ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTb3VyY2VFbGVtZW50cyBQYXJzZXI8TGV4ZXJUeXBl
Pjo6cGFyc2VHZW5lcmF0bwogCiAgICAgUGFyc2VyRnVuY3Rpb25JbmZvPFRyZWVCdWlsZGVyPiBp
bmZvOwogICAgIGluZm8ubmFtZSA9ICZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5udWxsSWRlbnRpZmll
cjsKLSAgICBjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKGNvbnRleHQpOworICAgIGNyZWF0ZUdl
bmVyYXRvclBhcmFtZXRlcnMoY29udGV4dCwgaW5mby5wYXJhbWV0ZXJDb3VudCk7CiAgICAgaW5m
by5zdGFydE9mZnNldCA9IHBhcmFtZXRlcnNTdGFydDsKICAgICBpbmZvLnN0YXJ0TGluZSA9IHRv
a2VuTGluZSgpOwotICAgIGluZm8ucGFyYW1ldGVyQ291bnQgPSA0OyAvLyBnZW5lcmF0b3IsIHN0
YXRlLCB2YWx1ZSwgcmVzdW1lIG1vZGUKIAogICAgIHsKICAgICAgICAgQXV0b1BvcFNjb3BlUmVm
IGdlbmVyYXRvckJvZHlTY29wZSh0aGlzLCBwdXNoU2NvcGUoKSk7CkBAIC0xOTAxLDMyICsxOTAw
LDMwIEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+IHRlbXBsYXRlIDxjbGFzcyBUcmVl
QnVpbGRlciwgY2xhc3MgRnVuY3Rpb25JbmZvVHlwCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBM
ZXhlclR5cGU+Ci10ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IHR5cGVuYW1lIFRyZWVCdWls
ZGVyOjpGb3JtYWxQYXJhbWV0ZXJMaXN0IFBhcnNlcjxMZXhlclR5cGU+OjpjcmVhdGVHZW5lcmF0
b3JQYXJhbWV0ZXJzKFRyZWVCdWlsZGVyJiBjb250ZXh0KQordGVtcGxhdGUgPGNsYXNzIFRyZWVC
dWlsZGVyPiB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6Rm9ybWFsUGFyYW1ldGVyTGlzdCBQYXJzZXI8
TGV4ZXJUeXBlPjo6Y3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhUcmVlQnVpbGRlciYgY29udGV4
dCwgdW5zaWduZWQmIHBhcmFtZXRlckNvdW50KQogewogICAgIGF1dG8gcGFyYW1ldGVycyA9IGNv
bnRleHQuY3JlYXRlRm9ybWFsUGFyYW1ldGVyTGlzdCgpOwogCiAgICAgSlNUb2tlbkxvY2F0aW9u
IGxvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CiAgICAgSlNUZXh0UG9zaXRpb24gcG9zaXRpb24g
PSB0b2tlblN0YXJ0UG9zaXRpb24oKTsKIAotICAgIC8vIEBnZW5lcmF0b3IKLSAgICBkZWNsYXJl
UGFyYW1ldGVyKCZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JQ
cml2YXRlTmFtZSgpKTsKLSAgICBhdXRvIGdlbmVyYXRvciA9IGNvbnRleHQuY3JlYXRlQmluZGlu
Z0xvY2F0aW9uKGxvY2F0aW9uLCBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5n
ZW5lcmF0b3JQcml2YXRlTmFtZSgpLCBwb3NpdGlvbiwgcG9zaXRpb24sIEFzc2lnbm1lbnRDb250
ZXh0OjpEZWNsYXJhdGlvblN0YXRlbWVudCk7Ci0gICAgY29udGV4dC5hcHBlbmRQYXJhbWV0ZXIo
cGFyYW1ldGVycywgZ2VuZXJhdG9yLCAwKTsKKyAgICBhdXRvIGFkZFBhcmFtZXRlciA9IFsmXShj
b25zdCBJZGVudGlmaWVyJiBuYW1lKSB7CisgICAgICAgIGRlY2xhcmVQYXJhbWV0ZXIoJm5hbWUp
OworICAgICAgICBhdXRvIGJpbmRpbmcgPSBjb250ZXh0LmNyZWF0ZUJpbmRpbmdMb2NhdGlvbihs
b2NhdGlvbiwgbmFtZSwgcG9zaXRpb24sIHBvc2l0aW9uLCBBc3NpZ25tZW50Q29udGV4dDo6RGVj
bGFyYXRpb25TdGF0ZW1lbnQpOworICAgICAgICBjb250ZXh0LmFwcGVuZFBhcmFtZXRlcihwYXJh
bWV0ZXJzLCBiaW5kaW5nLCAwKTsKKyAgICAgICAgKytwYXJhbWV0ZXJDb3VudDsKKyAgICB9Owog
CisgICAgLy8gQGdlbmVyYXRvcgorICAgIGFkZFBhcmFtZXRlcihtX3ZtLT5wcm9wZXJ0eU5hbWVz
LT5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JQcml2YXRlTmFtZSgpKTsKICAgICAvLyBAZ2VuZXJh
dG9yU3RhdGUKLSAgICBkZWNsYXJlUGFyYW1ldGVyKCZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5idWls
dGluTmFtZXMoKS5nZW5lcmF0b3JTdGF0ZVByaXZhdGVOYW1lKCkpOwotICAgIGF1dG8gZ2VuZXJh
dG9yU3RhdGUgPSBjb250ZXh0LmNyZWF0ZUJpbmRpbmdMb2NhdGlvbihsb2NhdGlvbiwgbV92bS0+
cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yU3RhdGVQcml2YXRlTmFtZSgp
LCBwb3NpdGlvbiwgcG9zaXRpb24sIEFzc2lnbm1lbnRDb250ZXh0OjpEZWNsYXJhdGlvblN0YXRl
bWVudCk7Ci0gICAgY29udGV4dC5hcHBlbmRQYXJhbWV0ZXIocGFyYW1ldGVycywgZ2VuZXJhdG9y
U3RhdGUsIDApOwotCisgICAgYWRkUGFyYW1ldGVyKG1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0
aW5OYW1lcygpLmdlbmVyYXRvclN0YXRlUHJpdmF0ZU5hbWUoKSk7CiAgICAgLy8gQGdlbmVyYXRv
clZhbHVlCi0gICAgZGVjbGFyZVBhcmFtZXRlcigmbV92bS0+cHJvcGVydHlOYW1lcy0+YnVpbHRp
bk5hbWVzKCkuZ2VuZXJhdG9yVmFsdWVQcml2YXRlTmFtZSgpKTsKLSAgICBhdXRvIGdlbmVyYXRv
clZhbHVlID0gY29udGV4dC5jcmVhdGVCaW5kaW5nTG9jYXRpb24obG9jYXRpb24sIG1fdm0tPnBy
b3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclZhbHVlUHJpdmF0ZU5hbWUoKSwg
cG9zaXRpb24sIHBvc2l0aW9uLCBBc3NpZ25tZW50Q29udGV4dDo6RGVjbGFyYXRpb25TdGF0ZW1l
bnQpOwotICAgIGNvbnRleHQuYXBwZW5kUGFyYW1ldGVyKHBhcmFtZXRlcnMsIGdlbmVyYXRvclZh
bHVlLCAwKTsKLQorICAgIGFkZFBhcmFtZXRlcihtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5idWlsdGlu
TmFtZXMoKS5nZW5lcmF0b3JWYWx1ZVByaXZhdGVOYW1lKCkpOwogICAgIC8vIEBnZW5lcmF0b3JS
ZXN1bWVNb2RlCi0gICAgZGVjbGFyZVBhcmFtZXRlcigmbV92bS0+cHJvcGVydHlOYW1lcy0+YnVp
bHRpbk5hbWVzKCkuZ2VuZXJhdG9yUmVzdW1lTW9kZVByaXZhdGVOYW1lKCkpOwotICAgIGF1dG8g
Z2VuZXJhdG9yUmVzdW1lTW9kZSA9IGNvbnRleHQuY3JlYXRlQmluZGluZ0xvY2F0aW9uKGxvY2F0
aW9uLCBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JSZXN1bWVN
b2RlUHJpdmF0ZU5hbWUoKSwgcG9zaXRpb24sIHBvc2l0aW9uLCBBc3NpZ25tZW50Q29udGV4dDo6
RGVjbGFyYXRpb25TdGF0ZW1lbnQpOwotICAgIGNvbnRleHQuYXBwZW5kUGFyYW1ldGVyKHBhcmFt
ZXRlcnMsIGdlbmVyYXRvclJlc3VtZU1vZGUsIDApOworICAgIGFkZFBhcmFtZXRlcihtX3ZtLT5w
cm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JSZXN1bWVNb2RlUHJpdmF0ZU5h
bWUoKSk7CisgICAgLy8gQGdlbmVyYXRvckZyYW1lCisgICAgYWRkUGFyYW1ldGVyKG1fdm0tPnBy
b3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvckZyYW1lUHJpdmF0ZU5hbWUoKSk7
CiAKICAgICByZXR1cm4gcGFyYW1ldGVyczsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvUGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Bh
cnNlci5oCmluZGV4IDI1Y2VjOTVhNzYxY2NkOGMyNjMzODM3MzBlYjA0ZTE1Njk3MjBiYTIuLmRl
ZDYyNGY2MTdmYjZkMjRkMDBiZjFhYzQ2YzQ1YzIyZDk5YjcyMWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9QYXJzZXIuaApAQCAtMTQ1MSw3ICsxNDUxLDcgQEAgY2xhc3MgUGFyc2VyIHsK
ICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNBcnJvd0Z1bmN0aW9uUGFyYW1ldGVycygpOwogICAg
IAogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlciwgY2xhc3MgRnVuY3Rpb25JbmZvVHlw
ZT4gTkVWRVJfSU5MSU5FIHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpGb3JtYWxQYXJhbWV0ZXJMaXN0
IHBhcnNlRnVuY3Rpb25QYXJhbWV0ZXJzKFRyZWVCdWlsZGVyJiwgU291cmNlUGFyc2VNb2RlLCBG
dW5jdGlvbkluZm9UeXBlJik7Ci0gICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBORVZF
Ul9JTkxJTkUgdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkZvcm1hbFBhcmFtZXRlckxpc3QgY3JlYXRl
R2VuZXJhdG9yUGFyYW1ldGVycyhUcmVlQnVpbGRlciYpOworICAgIHRlbXBsYXRlIDxjbGFzcyBU
cmVlQnVpbGRlcj4gTkVWRVJfSU5MSU5FIHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpGb3JtYWxQYXJh
bWV0ZXJMaXN0IGNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMoVHJlZUJ1aWxkZXImLCB1bnNpZ25l
ZCYgcGFyYW1ldGVyQ291bnQpOwogCiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBO
RVZFUl9JTkxJTkUgVHJlZUNsYXNzRXhwcmVzc2lvbiBwYXJzZUNsYXNzKFRyZWVCdWlsZGVyJiwg
RnVuY3Rpb25SZXF1aXJlbWVudHMsIFBhcnNlckNsYXNzSW5mbzxUcmVlQnVpbGRlcj4mKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhz
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAK
aW5kZXggNDU5M2IwNjUxNDAwZTUxMDExMDBjNWMyZWRkNTY3NDU1Y2Q2NGNlOC4uZmJhNDhjODYw
NWIyNzY4MDgyOGI5YmY4OTQ3MTg5MjcxOGMyYzg1NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCkBAIC0zNyw3ICszNyw2IEBACiAj
aW5jbHVkZSAiRXJyb3IuaCIKICNpbmNsdWRlICJFcnJvckhhbmRsaW5nU2NvcGUuaCIKICNpbmNs
dWRlICJFeGNlcHRpb25GdXp6LmgiCi0jaW5jbHVkZSAiR2VuZXJhdG9yRnJhbWUuaCIKICNpbmNs
dWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJIb3N0Q2FsbFJldHVyblZhbHVlLmgiCiAj
aW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKQEAgLTcyNSwzOCArNzI0LDYgQEAgU0xPV19QQVRIX0RF
Q0woc2xvd19wYXRoX2Fzc2VydCkKICAgICBFTkQoKTsKIH0KIAotU0xPV19QQVRIX0RFQ0woc2xv
d19wYXRoX3NhdmUpCi17Ci0gICAgLy8gT25seSBzYXZlIHZhcmlhYmxlcyBhbmQgdGVtcG9yYXJ5
IHJlZ2lzdGVycy4gVGhlIHNjb3BlIHJlZ2lzdGVycyBhcmUgaW5jbHVkZWQgaW4gdGhlbS4KLSAg
ICAvLyBCdXQgcGFyYW1ldGVycyBhcmUgbm90IGluY2x1ZGVkLiBCZWNhdXNlIHRoZSBnZW5lcmF0
b3IgaW1wbGVtZW50YXRpb24gcmVwbGFjZXMgdGhlIHZhbHVlcyBvZiBwYXJhbWV0ZXJzIG9uIGVh
Y2ggZ2VuZXJhdG9yLm5leHQoKSBjYWxsLgotICAgIEJFR0lOKCk7Ci0gICAgSlNWYWx1ZSBnZW5l
cmF0b3IgPSBPUCgxKS5qc1ZhbHVlKCk7Ci0gICAgR2VuZXJhdG9yRnJhbWUqIGZyYW1lID0gbnVs
bHB0cjsKLSAgICBKU1ZhbHVlIHZhbHVlID0gZ2VuZXJhdG9yLmdldChleGVjLCBleGVjLT5wcm9w
ZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yRnJhbWVQcml2YXRlTmFtZSgpKTsK
LSAgICBpZiAoIXZhbHVlLmlzTnVsbCgpKQotICAgICAgICBmcmFtZSA9IGpzQ2FzdDxHZW5lcmF0
b3JGcmFtZSo+KHZhbHVlKTsKLSAgICBlbHNlIHsKLSAgICAgICAgLy8gRklYTUU6IE9uY2UgSlNH
ZW5lcmF0b3Igc3BlY2lhbGl6ZWQgb2JqZWN0IGlzIGludHJvZHVjZWQsIHRoaXMgR2VuZXJhdG9y
RnJhbWUgc2hvdWxkIGJlIGVtYmVkZWQgaW50byBpdCB0byBhdm9pZCBhbGxvY2F0aW9ucy4KLSAg
ICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTU0NQot
ICAgICAgICBmcmFtZSA9IEdlbmVyYXRvckZyYW1lOjpjcmVhdGUoZXhlYy0+dm0oKSwgIGV4ZWMt
PmNvZGVCbG9jaygpLT5udW1DYWxsZWVMb2NhbHMoKSk7Ci0gICAgICAgIFB1dFByb3BlcnR5U2xv
dCBzbG90KGdlbmVyYXRvciwgdHJ1ZSwgUHV0UHJvcGVydHlTbG90OjpQdXRCeUlkKTsKLSAgICAg
ICAgYXNPYmplY3QoZ2VuZXJhdG9yKS0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPnB1dChhc09i
amVjdChnZW5lcmF0b3IpLCBleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVz
KCkuZ2VuZXJhdG9yRnJhbWVQcml2YXRlTmFtZSgpLCBmcmFtZSwgc2xvdCk7Ci0gICAgfQotICAg
IHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9IHBjWzJdLnUudW5zaWduZWRWYWx1ZTsK
LSAgICBmcmFtZS0+c2F2ZShleGVjLCBleGVjLT5jb2RlQmxvY2soKS0+bGl2ZUNhbGxlZUxvY2Fs
c0F0WWllbGQobGl2ZUNhbGxlZUxvY2Fsc0luZGV4KSk7Ci0gICAgRU5EKCk7Ci19Ci0KLVNMT1df
UEFUSF9ERUNMKHNsb3dfcGF0aF9yZXN1bWUpCi17Ci0gICAgQkVHSU4oKTsKLSAgICBKU1ZhbHVl
IGdlbmVyYXRvciA9IE9QKDEpLmpzVmFsdWUoKTsKLSAgICBHZW5lcmF0b3JGcmFtZSogZnJhbWUg
PSBqc0Nhc3Q8R2VuZXJhdG9yRnJhbWUqPihnZW5lcmF0b3IuZ2V0KGV4ZWMsIGV4ZWMtPnByb3Bl
cnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JGcmFtZVByaXZhdGVOYW1lKCkpKTsK
LSAgICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSBwY1syXS51LnVuc2lnbmVkVmFs
dWU7Ci0gICAgZnJhbWUtPnJlc3VtZShleGVjLCBleGVjLT5jb2RlQmxvY2soKS0+bGl2ZUNhbGxl
ZUxvY2Fsc0F0WWllbGQobGl2ZUNhbGxlZUxvY2Fsc0luZGV4KSk7Ci0gICAgRU5EKCk7Ci19Ci0K
IFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudCkKIHsK
ICAgICBCRUdJTigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29tbW9uU2xvd1BhdGhzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25T
bG93UGF0aHMuaAppbmRleCA4YzcwNzg0MjgwMmQ2YTAzZDEyOGNkOGQyOTJhZmY3MzVjZGEwMzJm
Li42ZWIyMWJkZmRlMDM0MTJmZWU2MTAwMmQ1ZTVhYThhODM0ODA1M2EwIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaApAQCAtMjQ2LDggKzI0
Niw2IEBAIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfbmV4dF9nZW5lcmljX2VudW1l
cmF0b3JfcG5hbWUpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF90b19pbmRleF9z
dHJpbmcpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9wcm9maWxlX3R5cGVfY2xl
YXJfbG9nKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfYXNzZXJ0KTsKLVNMT1df
UEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfc2F2ZSk7Ci1TTE9XX1BBVEhfSElEREVOX0RFQ0wo
c2xvd19wYXRoX3Jlc3VtZSk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2NyZWF0
ZV9sZXhpY2FsX2Vudmlyb25tZW50KTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhf
cHVzaF93aXRoX3Njb3BlKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcmVzb2x2
ZV9zY29wZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5l
cmF0b3JGcmFtZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JG
cmFtZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVmNmVhN2ExMDAyNThjM2Vj
ZTA0ZGFhYjQzYmRhYTg1MWVjOGY3MTUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJh
bWUuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsOTcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiR2VuZXJhdG9yRnJhbWUuaCIKLQotI2lu
Y2x1ZGUgIkNvZGVCbG9jay5oIgotI2luY2x1ZGUgIkhlYXBJdGVyYXRpb25TY29wZS5oIgotI2lu
Y2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCi0jaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgot
I2luY2x1ZGUgIlNsb3RWaXNpdG9ySW5saW5lcy5oIgotI2luY2x1ZGUgIlN0cnVjdHVyZUlubGlu
ZXMuaCIKLQotbmFtZXNwYWNlIEpTQyB7Ci0KLWNvbnN0IENsYXNzSW5mbyBHZW5lcmF0b3JGcmFt
ZTo6c19pbmZvID0geyAiR2VuZXJhdG9yRnJhbWUiLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVf
TUVUSE9EX1RBQkxFKEdlbmVyYXRvckZyYW1lKSB9OwotCi1HZW5lcmF0b3JGcmFtZTo6R2VuZXJh
dG9yRnJhbWUoVk0mIHZtLCBzaXplX3QgbnVtYmVyT2ZDYWxsZWVMb2NhbHMpCi0gICAgOiBCYXNl
KHZtLCB2bS5nZW5lcmF0b3JGcmFtZVN0cnVjdHVyZS5nZXQoKSkKLSAgICAsIG1fbnVtYmVyT2ZD
YWxsZWVMb2NhbHMobnVtYmVyT2ZDYWxsZWVMb2NhbHMpCi17Ci19Ci0KLXZvaWQgR2VuZXJhdG9y
RnJhbWU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKLXsKLSAgICBCYXNlOjpmaW5pc2hDcmVhdGlv
bih2bSk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX251bWJlck9mQ2FsbGVlTG9jYWxz
OyArK2kpCi0gICAgICAgIGxvY2FsQXQoaSkuY2xlYXIoKTsKLX0KLQotU3RydWN0dXJlKiBHZW5l
cmF0b3JGcmFtZTo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCi17Ci0gICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3Jl
YXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oQ2VsbFR5cGUsIFN0cnVj
dHVyZUZsYWdzKSwgaW5mbygpKTsKLX0KLQotR2VuZXJhdG9yRnJhbWUqIEdlbmVyYXRvckZyYW1l
OjpjcmVhdGUoVk0mIHZtLCBzaXplX3QgbnVtYmVyT2ZMb2NhbHMpCi17Ci0gICAgR2VuZXJhdG9y
RnJhbWUqIHJlc3VsdCA9Ci0gICAgICAgIG5ldyAoCi0gICAgICAgICAgICBOb3ROdWxsLAotICAg
ICAgICAgICAgYWxsb2NhdGVDZWxsPEdlbmVyYXRvckZyYW1lPih2bS5oZWFwLCBhbGxvY2F0aW9u
U2l6ZUZvckxvY2FscyhudW1iZXJPZkxvY2FscykpKQotICAgICAgICBHZW5lcmF0b3JGcmFtZSh2
bSwgbnVtYmVyT2ZMb2NhbHMpOwotICAgIHJlc3VsdC0+ZmluaXNoQ3JlYXRpb24odm0pOwotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci0KLXZvaWQgR2VuZXJhdG9yRnJhbWU6OnNhdmUoRXhlY1N0YXRl
KiBleGVjLCBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlQ2FsbGVlTG9jYWxzKQotewotICAgIC8v
IE9ubHkgc2F2ZSBjYWxsZWUgbG9jYWxzLgotICAgIC8vIEV2ZXJ5IHRpbWUgYSBnZW5lcmF0b3Ig
aXMgY2FsbGVkIChvciByZXN1bWVkKSwgcGFyYW1ldGVycyBzaG91bGQgYmUgcmVwbGFjZWQuCi0g
ICAgQVNTRVJUKGxpdmVDYWxsZWVMb2NhbHMubnVtQml0cygpIDw9IG1fbnVtYmVyT2ZDYWxsZWVM
b2NhbHMpOwotICAgIGxpdmVDYWxsZWVMb2NhbHMuZm9yRWFjaFNldEJpdChbJl0oc2l6ZV90IGlu
ZGV4KSB7Ci0gICAgICAgIGxvY2FsQXQoaW5kZXgpLnNldChleGVjLT52bSgpLCB0aGlzLCBleGVj
LT51bmNoZWNrZWRSKHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGluZGV4KSkuanNWYWx1ZSgpKTsK
LSAgICB9KTsKLX0KLQotdm9pZCBHZW5lcmF0b3JGcmFtZTo6cmVzdW1lKEV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZUNhbGxlZUxvY2FscykKLXsKLSAgICAvLyBPbmx5
IHJlc3VtZSBjYWxsZWUgbG9jYWxzLgotICAgIC8vIEV2ZXJ5IHRpbWUgYSBnZW5lcmF0b3IgaXMg
Y2FsbGVkIChvciByZXN1bWVkKSwgcGFyYW1ldGVycyBzaG91bGQgYmUgcmVwbGFjZWQuCi0gICAg
bGl2ZUNhbGxlZUxvY2Fscy5mb3JFYWNoU2V0Qml0KFsmXShzaXplX3QgaW5kZXgpIHsKLSAgICAg
ICAgZXhlYy0+dW5jaGVja2VkUih2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChpbmRleCkpID0gbG9j
YWxBdChpbmRleCkuZ2V0KCk7Ci0gICAgICAgIGxvY2FsQXQoaW5kZXgpLmNsZWFyKCk7Ci0gICAg
fSk7Ci19Ci0KLXZvaWQgR2VuZXJhdG9yRnJhbWU6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxs
LCBTbG90VmlzaXRvciYgdmlzaXRvcikKLXsKLSAgICBHZW5lcmF0b3JGcmFtZSogdGhpc09iamVj
dCA9IGpzQ2FzdDxHZW5lcmF0b3JGcmFtZSo+KGNlbGwpOwotICAgIEJhc2U6OnZpc2l0Q2hpbGRy
ZW4odGhpc09iamVjdCwgdmlzaXRvcik7Ci0gICAgLy8gU2luY2Ugb25seSB0cnVlIGNlbGwgcG9p
bnRlcnMgYXJlIHN0b3JlZCBhcyBhIGNlbGwsIHdlIGNhbiBzYWZlbHkgbWFyayB0aGVtLgotICAg
IHZpc2l0b3IuYXBwZW5kVmFsdWVzKHRoaXNPYmplY3QtPmxvY2FscygpLCB0aGlzT2JqZWN0LT5t
X251bWJlck9mQ2FsbGVlTG9jYWxzKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGcmFtZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJhbWUuaApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggM2Q1NDViMTQ3ZGQ0YWJmYjJiYmI5YjVhNzE5NGU4Zjc0ODQxYzQ5
YS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGcmFtZS5oCisrKyAvZGV2L251bGwKQEAg
LTEsOTAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1
dGF0YW5lLnRlYUBnbWFpbC5jb20+LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIEdlbmVyYXRvckZyYW1l
X2gKLSNkZWZpbmUgR2VuZXJhdG9yRnJhbWVfaAotCi0jaW5jbHVkZSAiSlNDZWxsLmgiCi0jaW5j
bHVkZSA8d3RmL0Zhc3RCaXRWZWN0b3IuaD4KLQotbmFtZXNwYWNlIEpTQyB7Ci0KLWNsYXNzIEdl
bmVyYXRvckZyYW1lIDogcHVibGljIEpTQ2VsbCB7Ci0gICAgZnJpZW5kIGNsYXNzIEpJVDsKLSNp
ZiBFTkFCTEUoREZHX0pJVCkKLSAgICBmcmllbmQgY2xhc3MgREZHOjpTcGVjdWxhdGl2ZUpJVDsK
LSAgICBmcmllbmQgY2xhc3MgREZHOjpKSVRDb21waWxlcjsKLSNlbmRpZgotICAgIGZyaWVuZCBj
bGFzcyBWTTsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOwotICAgIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IFN0cnVjdHVyZUlzSW1tb3J0YWwgfCBCYXNl
OjpTdHJ1Y3R1cmVGbGFnczsKLQotICAgIERFQ0xBUkVfRVhQT1JUX0lORk87Ci0KLSAgICBzdGF0
aWMgR2VuZXJhdG9yRnJhbWUqIGNyZWF0ZShWTSYsIHNpemVfdCBudW1iZXJPZkNhbGxlZUxvY2Fs
cyk7Ci0KLSAgICBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiBsb2NhbHMoKQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+Kj4oYml0
d2lzZV9jYXN0PGNoYXIqPih0aGlzKSArIG9mZnNldE9mTG9jYWxzKCkpOwotICAgIH0KLQotICAg
IFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4mIGxvY2FsQXQoc2l6ZV90IGluZGV4KQotICAgIHsK
LSAgICAgICAgQVNTRVJUKGluZGV4IDwgbV9udW1iZXJPZkNhbGxlZUxvY2Fscyk7Ci0gICAgICAg
IHJldHVybiBsb2NhbHMoKVtpbmRleF07Ci0gICAgfQotCi0gICAgc3RhdGljIHNpemVfdCBvZmZz
ZXRPZkxvY2FscygpCi0gICAgewotICAgICAgICByZXR1cm4gV1RGOjpyb3VuZFVwVG9NdWx0aXBs
ZU9mPHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pPihzaXplb2YoR2VuZXJhdG9yRnJhbWUp
KTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgc2l6ZV90IGFsbG9jYXRpb25TaXplRm9yTG9jYWxzKHVu
c2lnbmVkIG51bWJlck9mTG9jYWxzKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG9mZnNldE9mTG9j
YWxzKCkgKyBudW1iZXJPZkxvY2FscyAqIHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pOwot
ICAgIH0KLQotICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xv
YmFsT2JqZWN0KiwgSlNWYWx1ZSBwcm90b3R5cGUpOwotCi0gICAgdm9pZCBzYXZlKEV4ZWNTdGF0
ZSosIGNvbnN0IEZhc3RCaXRWZWN0b3ImIGxpdmVDYWxsZWVMb2NhbHMpOwotICAgIHZvaWQgcmVz
dW1lKEV4ZWNTdGF0ZSosIGNvbnN0IEZhc3RCaXRWZWN0b3ImIGxpdmVDYWxsZWVMb2NhbHMpOwot
Ci1wcml2YXRlOgotICAgIEdlbmVyYXRvckZyYW1lKFZNJiwgc2l6ZV90IG51bWJlck9mQ2FsbGVl
TG9jYWxzKTsKLQotICAgIHNpemVfdCBtX251bWJlck9mQ2FsbGVlTG9jYWxzOwotCi0gICAgZnJp
ZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKLQotICAgIHZvaWQgZmluaXNoQ3JlYXRp
b24oVk0mKTsKLQotcHJvdGVjdGVkOgotICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlND
ZWxsKiwgU2xvdFZpc2l0b3ImKTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEpTQwotCi0jZW5kaWYg
Ly8gR2VuZXJhdG9yRnJhbWVfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHZW5lcmF0b3JGdW5jdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHZW5lcmF0b3JGdW5jdGlvbi5oCmluZGV4IDM2ZjYxYzVmMjBmNTZiZWZkNmM1NTc4NDJi
MTllMzliMTlhM2E5MTkuLmExY2JhZDk0NmRjNTY4MjllZDFhMjE1NTc5MGI0NDBhOGRmNDMwMDQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJhdG9yRnVu
Y3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyYXRvckZ1
bmN0aW9uLmgKQEAgLTU1LDYgKzU1LDE2IEBAIGNsYXNzIEpTR2VuZXJhdG9yRnVuY3Rpb24gOiBw
dWJsaWMgSlNGdW5jdGlvbiB7CiAgICAgICAgIEV4ZWN1dGluZyA9IC0yLAogICAgIH07CiAKKyAg
ICAvLyBbdGhpc10sIEBnZW5lcmF0b3IsIEBnZW5lcmF0b3JTdGF0ZSwgQGdlbmVyYXRvclZhbHVl
LCBAZ2VuZXJhdG9yUmVzdW1lTW9kZSwgQGdlbmVyYXRvckZyYW1lLgorICAgIGVudW0gY2xhc3Mg
R2VuZXJhdG9yQXJndW1lbnQgOiBpbnQzMl90IHsKKyAgICAgICAgVGhpc1ZhbHVlID0gMCwKKyAg
ICAgICAgR2VuZXJhdG9yID0gMSwKKyAgICAgICAgU3RhdGUgPSAyLAorICAgICAgICBWYWx1ZSA9
IDMsCisgICAgICAgIFJlc3VtZU1vZGUgPSA0LAorICAgICAgICBGcmFtZSA9IDUsCisgICAgfTsK
KwogICAgIGNvbnN0IHN0YXRpYyB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVj
dHVyZUZsYWdzOwogCiAgICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ZNLmNwcAppbmRleCBiMWZmNDI0OGEzNDg0YTRjYmJjMjA1YzMyZDRkMDRjMTYwNjBj
YWM2Li44NWU2N2ZmYjU5NjQ0ZDNiNTQzMzI1N2I3Y2IwZWQxZGQwZTY5Y2RjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC00Niw3ICs0Niw2IEBACiAjaW5jbHVkZSAiRlRM
VGh1bmtzLmgiCiAjaW5jbHVkZSAiRnVuY3Rpb25Db25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkdD
QWN0aXZpdHlDYWxsYmFjay5oIgotI2luY2x1ZGUgIkdlbmVyYXRvckZyYW1lLmgiCiAjaW5jbHVk
ZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiSGVhcC5oIgogI2luY2x1ZGUgIkhlYXBJdGVy
YXRpb25TY29wZS5oIgpAQCAtMjQwLDcgKzIzOSw2IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBI
ZWFwVHlwZSBoZWFwVHlwZSkKICAgICBpbmZlcnJlZFR5cGVTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBJ
bmZlcnJlZFR5cGU6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICBp
bmZlcnJlZFR5cGVUYWJsZVN0cnVjdHVyZS5zZXQoKnRoaXMsIEluZmVycmVkVHlwZVRhYmxlOjpj
cmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgZnVuY3Rpb25SYXJlRGF0
YVN0cnVjdHVyZS5zZXQoKnRoaXMsIEZ1bmN0aW9uUmFyZURhdGE6OmNyZWF0ZVN0cnVjdHVyZSgq
dGhpcywgMCwganNOdWxsKCkpKTsKLSAgICBnZW5lcmF0b3JGcmFtZVN0cnVjdHVyZS5zZXQoKnRo
aXMsIEdlbmVyYXRvckZyYW1lOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7
CiAgICAgZXhjZXB0aW9uU3RydWN0dXJlLnNldCgqdGhpcywgRXhjZXB0aW9uOjpjcmVhdGVTdHJ1
Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgcHJvbWlzZURlZmVycmVkU3RydWN0dXJl
LnNldCgqdGhpcywgSlNQcm9taXNlRGVmZXJyZWQ6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwg
anNOdWxsKCkpKTsKICAgICBpbnRlcm5hbFByb21pc2VEZWZlcnJlZFN0cnVjdHVyZS5zZXQoKnRo
aXMsIEpTSW50ZXJuYWxQcm9taXNlRGVmZXJyZWQ6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwg
anNOdWxsKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZN
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCmluZGV4IGYwZGUxNTEzNWE5
MDc4NzhiNDdhMWQzNDM0ZjY4MjkxY2I1ZGM3M2UuLjRmZjllZGQwYTc3NDZjMjllNWU2N2MzODFm
Y2UzYjIwNzQ3OTk1NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1ZNLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaApAQCAtMzE2LDcg
KzMxNiw2IEBAIGNsYXNzIFZNIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFZNPiB7CiAg
ICAgU3Ryb25nPFN0cnVjdHVyZT4gaW5mZXJyZWRUeXBlU3RydWN0dXJlOwogICAgIFN0cm9uZzxT
dHJ1Y3R1cmU+IGluZmVycmVkVHlwZVRhYmxlU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1
cmU+IGZ1bmN0aW9uUmFyZURhdGFTdHJ1Y3R1cmU7Ci0gICAgU3Ryb25nPFN0cnVjdHVyZT4gZ2Vu
ZXJhdG9yRnJhbWVTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gZXhjZXB0aW9uU3Ry
dWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHByb21pc2VEZWZlcnJlZFN0cnVjdHVyZTsK
ICAgICBTdHJvbmc8U3RydWN0dXJlPiBpbnRlcm5hbFByb21pc2VEZWZlcnJlZFN0cnVjdHVyZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9y
LWZpYi1mdGwtYW5kLWFycmF5LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVz
cy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQtYXJyYXkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmU5Mzk4MTJmZGJh
ZWM2YjgzMmJmZDAwZjIxNTNkZWY4NGJiNzU5MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwtYW5kLWFycmF5Lmpz
CkBAIC0wLDAgKzEsMjMgQEAKKyhmdW5jdGlvbiAoKSB7CisgICAgZnVuY3Rpb24gKmZpYigpCisg
ICAgeworICAgICAgICBsZXQgYSA9IDE7CisgICAgICAgIGxldCBiID0gMTsKKyAgICAgICAgbGV0
IGMgPSBbIDAgXTsKKyAgICAgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgICAgIGNbMF0gPSBh
OworICAgICAgICAgICAgeWllbGQgYzsKKyAgICAgICAgICAgIFthLCBiXSA9IFtiLCBhICsgYl07
CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQgdmFsdWUgPSAwOworICAgIGZvciAobGV0IGkg
PSAwOyBpIDwgMWU0OyArK2kpIHsKKyAgICAgICAgbGV0IGYgPSBmaWIoKTsKKyAgICAgICAgZm9y
IChsZXQgaSA9IDA7IGkgPCAxMDA7ICsraSkgeworICAgICAgICAgICAgdmFsdWUgPSBmLm5leHQo
KS52YWx1ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAodmFsdWVbMF0gIT09IDM1NDIyNDg0ODE3
OTI2MjAwMDAwMCkKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIHZhbHVlOiR7cmVz
dWx0fWApOworICAgIH0KK30oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLWFuZC1vYmplY3QuanMgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLWFuZC1vYmplY3QuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNjY3MzQwZjJlYTRjNzQzOGEyZDIwOWFhNDBkMDY3N2U0YWI3ZDNmYgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJh
dG9yLWZpYi1mdGwtYW5kLW9iamVjdC5qcwpAQCAtMCwwICsxLDIzIEBACisoZnVuY3Rpb24gKCkg
eworICAgIGZ1bmN0aW9uICpmaWIoKQorICAgIHsKKyAgICAgICAgbGV0IGEgPSAxOworICAgICAg
ICBsZXQgYiA9IDE7CisgICAgICAgIGxldCBjID0geyBmaWI6IDAgfTsKKyAgICAgICAgd2hpbGUg
KHRydWUpIHsKKyAgICAgICAgICAgIGMuZmliID0gYTsKKyAgICAgICAgICAgIHlpZWxkIGM7Cisg
ICAgICAgICAgICBbYSwgYl0gPSBbYiwgYSArIGJdOworICAgICAgICB9CisgICAgfQorCisgICAg
bGV0IHZhbHVlID0gMDsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDFlNDsgKytpKSB7CisgICAg
ICAgIGxldCBmID0gZmliKCk7CisgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwOyArK2kp
IHsKKyAgICAgICAgICAgIHZhbHVlID0gZi5uZXh0KCkudmFsdWU7CisgICAgICAgIH0KKyAgICAg
ICAgaWYgKHZhbHVlLmZpYiAhPT0gMzU0MjI0ODQ4MTc5MjYyMDAwMDAwKQorICAgICAgICAgICAg
dGhyb3cgbmV3IEVycm9yKGBiYWQgdmFsdWU6JHtyZXN1bHR9YCk7CisgICAgfQorfSgpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZp
Yi1mdGwtYW5kLXN0cmluZy5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mv
Z2VuZXJhdG9yLWZpYi1mdGwtYW5kLXN0cmluZy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MzhhZTZhYjMzNDcw
NDY4MjI4NDlmNDMwMDRlYTVjNDAzZWVkYTI4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQtc3RyaW5nLmpz
CkBAIC0wLDAgKzEsMjIgQEAKKyhmdW5jdGlvbiAoKSB7CisgICAgZnVuY3Rpb24gKmZpYigpCisg
ICAgeworICAgICAgICBsZXQgYSA9IDE7CisgICAgICAgIGxldCBiID0gMTsKKyAgICAgICAgbGV0
IGMgPSAiUmVzdWx0ISAiOworICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAgeWll
bGQgYyArIGE7CisgICAgICAgICAgICBbYSwgYl0gPSBbYiwgYSArIGJdOworICAgICAgICB9Cisg
ICAgfQorCisgICAgbGV0IHZhbHVlID0gMDsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDFlNDsg
KytpKSB7CisgICAgICAgIGxldCBmID0gZmliKCk7CisgICAgICAgIGZvciAobGV0IGkgPSAwOyBp
IDwgMTAwOyArK2kpIHsKKyAgICAgICAgICAgIHZhbHVlID0gZi5uZXh0KCkudmFsdWU7CisgICAg
ICAgIH0KKyAgICAgICAgaWYgKHZhbHVlICE9PSBgUmVzdWx0ISAzNTQyMjQ4NDgxNzkyNjIwMDAw
MDBgKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgdmFsdWU6JHtyZXN1bHR9YCk7
CisgICAgfQorfSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9z
dHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMv
c3RyZXNzL2dlbmVyYXRvci1maWItZnRsLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM0MGUzM2RiYzg2OGJlYTdh
ODkzYzllYzE2Yjc3OWVjMjZiZGIxOWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLmpzCkBAIC0wLDAgKzEsMjEg
QEAKKyhmdW5jdGlvbiAoKSB7CisgICAgZnVuY3Rpb24gKmZpYigpCisgICAgeworICAgICAgICBs
ZXQgYSA9IDE7CisgICAgICAgIGxldCBiID0gMTsKKyAgICAgICAgd2hpbGUgKHRydWUpIHsKKyAg
ICAgICAgICAgIHlpZWxkIGE7CisgICAgICAgICAgICBbYSwgYl0gPSBbYiwgYSArIGJdOworICAg
ICAgICB9CisgICAgfQorCisgICAgbGV0IHZhbHVlID0gMDsKKyAgICBmb3IgKGxldCBpID0gMDsg
aSA8IDFlNDsgKytpKSB7CisgICAgICAgIGxldCBmID0gZmliKCk7CisgICAgICAgIGZvciAobGV0
IGkgPSAwOyBpIDwgMTAwOyArK2kpIHsKKyAgICAgICAgICAgIHZhbHVlID0gZi5uZXh0KCkudmFs
dWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHZhbHVlICE9PSAzNTQyMjQ4NDgxNzkyNjIwMDAw
MDApCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCB2YWx1ZToke3Jlc3VsdH1gKTsK
KyAgICB9Cit9KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0
cmVzcy9nZW5lcmF0b3ItZnJhbWUtZW1wdHkuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dHMvc3RyZXNzL2dlbmVyYXRvci1mcmFtZS1lbXB0eS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41OWU4ODU1YmZh
YzNjNTZkZjkyNmFiZDQyOGMwMTNjMzM0MTYyNzQ2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZnJhbWUtZW1wdHkuanMKQEAg
LTAsMCArMSwzNCBAQAorZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVuYywgZXJyb3JNZXNzYWdlKSB7
CisgICAgdmFyIGVycm9yVGhyb3duID0gZmFsc2U7CisgICAgdmFyIGVycm9yID0gbnVsbDsKKyAg
ICB0cnkgeworICAgICAgICBmdW5jKCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBlcnJv
clRocm93biA9IHRydWU7CisgICAgICAgIGVycm9yID0gZTsKKyAgICB9CisgICAgaWYgKCFlcnJv
clRocm93bikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdub3QgdGhyb3duJyk7CisgICAgaWYg
KFN0cmluZyhlcnJvcikgIT09IGVycm9yTWVzc2FnZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9y
KGBiYWQgZXJyb3I6ICR7U3RyaW5nKGVycm9yKX1gKTsKK30KKworc2hvdWxkVGhyb3coZnVuY3Rp
b24gKCkgeworICAgIGZ1bmN0aW9uICpmaWIoZmxhZykKKyAgICB7CisgICAgICAgIGxldCBhID0g
MTsKKyAgICAgICAgbGV0IGIgPSAxOworICAgICAgICB5aWVsZCA0MjsKKyAgICAgICAgaWYgKGZs
YWcpCisgICAgICAgICAgICByZXR1cm4gYzsKKyAgICAgICAgbGV0IGMgPSA1MDA7CisgICAgfQor
CisgICAgbGV0IHZhbHVlID0gMDsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDFlNDsgKytpKSB7
CisgICAgICAgIGZvciAobGV0IHYgb2YgZmliKGZhbHNlKSkgeworICAgICAgICB9CisgICAgfQor
ICAgIGZvciAobGV0IHYgb2YgZmliKHRydWUpKSB7CisgICAgfQorfSwgYFJlZmVyZW5jZUVycm9y
OiBDYW5ub3QgYWNjZXNzIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUuYCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1yZWR1Y2VkLXNhdmUt
cG9pbnQtcHV0LXRvLXNjb3BlLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVz
cy9nZW5lcmF0b3ItcmVkdWNlZC1zYXZlLXBvaW50LXB1dC10by1zY29wZS5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5jMGM3NWZhNDkxNDNjMTdiZTE0ZjMyODFlM2Y2NTQzNGYzNTEzOWU4Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItcmVkdWNl
ZC1zYXZlLXBvaW50LXB1dC10by1zY29wZS5qcwpAQCAtMCwwICsxLDI4IEBACitmdW5jdGlvbiBz
aG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQp
CisgICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIHZhbHVlOiAke1N0cmluZyhhY3R1YWwpfWAp
OworfQorCitmdW5jdGlvbiBlcnJvcigpCit7CisgICAgdGhyb3cgIm9rIjsKK30KKworZnVuY3Rp
b24qIGdlbigpCit7CisgICAgdmFyIHZhbHVlID0gNDI7CisgICAgdHJ5IHsKKyAgICAgICAgeWll
bGQgMzAwOworICAgICAgICB2YWx1ZSA9IDUwMDsKKyAgICAgICAgZXJyb3IoKTsKKyAgICB9IGNh
dGNoIChlKSB7CisgICAgICAgIHlpZWxkIDQyOworICAgICAgICByZXR1cm4gdmFsdWU7CisgICAg
fQorICAgIHJldHVybiAyMDA7Cit9CisKK3ZhciBnID0gZ2VuKCk7CitzaG91bGRCZShnLm5leHQo
KS52YWx1ZSwgMzAwKTsKK3Nob3VsZEJlKGcubmV4dCgpLnZhbHVlLCA0Mik7CitzaG91bGRCZShn
Lm5leHQoKS52YWx1ZSwgNTAwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXRyYW5zZmVyLXJlZ2lzdGVyLWJleW9uZC1tdXRpcGxlLXlp
ZWxkcy5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXRy
YW5zZmVyLXJlZ2lzdGVyLWJleW9uZC1tdXRpcGxlLXlpZWxkcy5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZTIw
OGY1ODEyOTZmOWFlMDhhNmJmYjM5OGI0ODIyNTc0MmQ2Yjc4Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItdHJhbnNmZXItcmVn
aXN0ZXItYmV5b25kLW11dGlwbGUteWllbGRzLmpzCkBAIC0wLDAgKzEsMTggQEAKK2Z1bmN0aW9u
IHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3Rl
ZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQor
CisKK2Z1bmN0aW9uICpnZW4oKQoreworICAgIHZhciB0ZXN0ID0gNDI7CisgICAgeWllbGQgMzI7
CisgICAgeWllbGQgMzM7CisgICAgeWllbGQgdGVzdDsKK30KKwordmFyIGcgPSBnZW4oKTsKK3No
b3VsZEJlKGcubmV4dCgpLnZhbHVlLCAzMik7CitzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgMzMp
Oworc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIDQyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL0Zhc3RCaXRWZWN0b3IuaCBiL1NvdXJjZS9XVEYvd3RmL0Zhc3RCaXRWZWN0b3IuaAppbmRl
eCA5OGZmZjVjZjczNTNlNmJjNjdkYTVjNTU5NDBjY2NlNGU0YjE1NmQwLi5mZjAwYjdiNTRkNGEw
Y2ZmNGJlZjdkMDM4NTRkZTZiOTBjZTFkYjkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9G
YXN0Qml0VmVjdG9yLmgKKysrIGIvU291cmNlL1dURi93dGYvRmFzdEJpdFZlY3Rvci5oCkBAIC0y
Myw4ICsyMyw3IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCi0jaWZuZGVmIEZhc3RCaXRWZWN0
b3JfaAotI2RlZmluZSBGYXN0Qml0VmVjdG9yX2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSA8
c3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KQEAgLTM2LDEyICszNSwxNCBA
QCBjbGFzcyBQcmludFN0cmVhbTsKIAogY2xhc3MgRmFzdEJpdFZlY3RvciB7CiBwdWJsaWM6Ci0g
ICAgRmFzdEJpdFZlY3RvcigpCi0gICAgICAgIDogbV9hcnJheSgwKQotICAgICAgICAsIG1fbnVt
Qml0cygwKQorICAgIEZhc3RCaXRWZWN0b3IoKSA9IGRlZmF1bHQ7CisKKyAgICBGYXN0Qml0VmVj
dG9yKEZhc3RCaXRWZWN0b3ImJiBvdGhlcikKKyAgICAgICAgOiBtX2FycmF5KHN0ZDo6ZXhjaGFu
Z2Uob3RoZXIubV9hcnJheSwgbnVsbHB0cikpCisgICAgICAgICwgbV9udW1CaXRzKHN0ZDo6ZXhj
aGFuZ2Uob3RoZXIubV9udW1CaXRzLCAwKSkKICAgICB7CiAgICAgfQotICAgIAorCiAgICAgRmFz
dEJpdFZlY3Rvcihjb25zdCBGYXN0Qml0VmVjdG9yJiBvdGhlcikKICAgICAgICAgOiBtX2FycmF5
KDApCiAgICAgICAgICwgbV9udW1CaXRzKDApCkBAIC0yMDIsMTMgKzIwMywxMCBAQCBjbGFzcyBG
YXN0Qml0VmVjdG9yIHsKICAgICBzdGF0aWMgc2l6ZV90IGFycmF5TGVuZ3RoKHNpemVfdCBudW1C
aXRzKSB7IHJldHVybiAobnVtQml0cyArIDMxKSA+PiA1OyB9CiAgICAgc2l6ZV90IGFycmF5TGVu
Z3RoKCkgY29uc3QgeyByZXR1cm4gYXJyYXlMZW5ndGgobV9udW1CaXRzKTsgfQogICAgIAotICAg
IHVpbnQzMl90KiBtX2FycmF5OyAvLyBObywgdGhpcyBjYW4ndCBiZSBhbiBzdGQ6OnVuaXF1ZV9w
dHI8dWludDMyX3RbXT4uCi0gICAgc2l6ZV90IG1fbnVtQml0czsKKyAgICB1aW50MzJfdCogbV9h
cnJheSB7IG51bGxwdHIgfTsgLy8gTm8sIHRoaXMgY2FuJ3QgYmUgYW4gc3RkOjp1bmlxdWVfcHRy
PHVpbnQzMl90W10+LgorICAgIHNpemVfdCBtX251bUJpdHMgeyAwIH07CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXVEYKIAogdXNpbmcgV1RGOjpGYXN0Qml0VmVjdG9yOwotCi0jZW5kaWYgLy8gRmFz
dEJpdFZlY3Rvcl9oCi0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>284487</attachid>
            <date>2016-07-25 08:50:55 -0700</date>
            <delta_ts>2016-07-25 08:56:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-152723-20160726004947.patch</filename>
            <type>text/plain</type>
            <size>199738</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAzNjgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
MjQxN2U0Y2Y0MGEyODUzZmU0ZTkyNzM3MDY1ZmIzMmRiODMzMjdiLi5lYjE2YjJlODM4ZjY1NzQ3
ZjBlZmVjMjA4NzFhNDAzNGY2ODE4ZTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNjcgQEAKKzIwMTYtMDctMjUgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0RGR11bRlRMXSBJbXBsZW1lbnQgRVM2IEdlbmVyYXRvcnMgaW4g
REZHIC8gRlRMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNTI3MjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUaGlzIHBhdGNoIGludHJvZHVjZXMgREZHIGFuZCBGVEwgc3VwcG9ydCBmb3IgRVM2IGdlbmVy
YXRvcnMuCisgICAgICAgIEVTNiBnZW5lcmF0b3IgaXMgY29tcGlsZWQgYnkgdGhlIEJ5dGVjb2Rl
R2VuZXJhdG9yLiBCdXQgYXQgdGhlIGxhc3QgcGhhc2UsIEJ5dGVjb2RlR2VuZXJhdG9yIHBlcmZv
cm1zICJnZW5lcmF0b3JpZmljYXRpb24iIG9udG8gdGhlIHVubGlua2VkIGNvZGUuCisgICAgICAg
IEluIEJ5dGVjb2RlR2VuZXJhdG9yIHBoYXNlLCB3ZSBpbnNlcnRlZCBzZXZlcmFsIHNwZWNpYWwg
bWFya2VycyBmb3IgdGhlIGdlbmVyYXRvcnMsIG9wX3NhdmUgYW5kIG9wX3Jlc3VtZS4KKyAgICAg
ICAgVGhlIG9wX3NhdmUsIG9wX3Jlc3VtZSwgYW5kIHRoZSBtZXJnZSBwb2ludCBibG9jayBhcmUg
Y29ubmVjdGVkIGFzIGZvbGxvd3MuCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBvcF9yZXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBeCisgICAgICAgIGVudHJ5IC0+IGdlbmVyYXRvciBzd2l0Y2ggLS0tLT4gb3Bfc2F2ZSAtPiBt
ZXJnZSBwb2ludCAtPiAuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBeCisgICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0t
LT4gb3BfcmVzdW1lIC0tLS0tKworCisgICAgICAgIEluIHRoZSBnZW5lcmF0b3JpZmljYXRpb24g
cGhhc2UsIHdlIHR1cm4gb3V0IHdoaWNoIHZhcmlhYmxlcyBzaG91bGQgYmUgc2F2ZWQgYW5kIHJl
c3VtZWQgYXQgZWFjaCBvcF9zYXZlIGFuZCBvcF9yZXN1bWUsIGFuZCBjb252ZXJ0IHRoZXNlIGJ5
dGVjb2RlcworICAgICAgICB0byB0aGUgc2VxdWVuY2VzIG9mIHRoZSBnZXRfZnJvbV9zY29wZSBh
bmQgcHV0X3RvX3Njb3BlLiBUaGUgcmVnaXN0ZXJzIGFyZSBzYXZlZCBhbmQgcmVzdW1lZCBvdmVy
IHRoZSBnZW5lcmF0b3IncyBuZXh0KCkgY2FsbHMgYnkgdXNpbmcgdGhpcyBzcGVjaWFsCisgICAg
ICAgIGdlbmVyYXRvciBmcmFtZSBzY29wZS4KKworICAgICAgICBJbiB0aGUgZ2VuZXJhdG9yaWZp
Y2F0aW9uIHBoYXNlLAorCisgICAgICAgIDEuIFdlIGNvbnN0cnVjdCB0aGUgQnl0ZWNvZGVHcmFw
aCBmcm9tIHRoZSB1bmxpbmtlZCBpbnN0cnVjdGlvbnMuIFRoaXMgY29uc3RydWN0cyB0aGUgYmFz
aWMgYmxvY2tzLCBhbmQgaXQgaXMgdXNlZCBpbiB0aGUgc3Vic2VxdWVudCBhbmFseXNpcy4KKyAg
ICAgICAgMi4gV2UgcGVyZm9ybSB0aGUgYW5hbHlzaXMgb250byB0aGUgdW5saW5rZWQgY29kZS4g
V2UgaGF2ZSAzIGFuYWx5c2lzOiB0aGUgbGl2ZW5lc3MgYW5hbHlzaXMsIHRoZSBzYXZlZCB2YXJp
YWJsZXMgYW5hbHlzaXMsIGFuZCB0aGUgcmVzdW1lZCB2YXJpYWJsZXMgYW5hbHlzaXMuCisgICAg
ICAgICAgIEZpcnN0LCBpbiB0aGUgbGl2ZW5lc3MgYW5hbHlzaXMsIHdlIGV4dHJhY3QgdGhlIGxp
dmUgdmFyaWFibGVzIGF0IGVhY2ggbWVyZ2UgcG9pbnQuIFRoZXNlIHZhcmlhYmxlcyBzaG91bGQg
YmUgY29uc2lkZXJlZCBhcyB0aGUgY29uc2VydmF0aXZlIHJlZ2lzdGVycworICAgICAgICAgICB0
byBiZSBzYXZlZCBhbmQgcmVzdW1lZCBhdCBlYWNoIHBvaW50LgorICAgICAgICAzLiBTZWNvbmQs
IHdlIGRyaXZlIHRoZSBmb3J3YXJkIGFuYWx5c2lzLCBjYWxsZWQgdGhlIHNhdmVkIHZhcmlhYmxl
cyBhbmFseXNpcy4gVGhpcyB0aW1lLCB3ZSBleHBsaWNpdGx5IGlnbm9yZSB0aGUgZWRnZXMgYmV0
d2VlbiB0aGUgc2F2ZSBwb2ludHMgYW5kIHRoZSBtZXJnZSBwb2ludHMuCisgICAgICAgICAgIEF0
IG9wX3NhdmUsIHdlIHNob3VsZCBzYXZlIHRoZSB2YXJpYWJsZXMgdGhhdCAoaSkgd2lsbCBiZSB1
c2VkIGFmdGVyIHRoZSBtZXJnZSBwb2ludCBBTkQgKGlpKSB0aGUgbmV3bHkgZGVmaW5lZCB2YXJp
YWJsZXMgZnJvbSB0aGUgcHJldmlvdXMgb3BfcmVzdW1lLiBTbywgd2UgcHJvcGFnYXRlCisgICAg
ICAgICAgIHRoZSBkZWZzIGFuZCBjb2xsZWN0IHRoZSBuZXdseSBkZWZpbmVkIHJlZ2lzdGVycyBh
dCBlYWNoIG9wX3NhdmUgcG9pbnQgaW4gdGhlIGdyYXBoLiBUaGlzIHJlc3VsdCByZXByZXNlbnRz
IChpaSkuIFNvIHRoZW4sIHdlIGZpbHRlciB0aGUgbGl2ZSB2YXJpYWJsZXMgKGkpIChnYWluZWQg
aW4gKDIpKQorICAgICAgICAgICBhdCBlYWNoIG1lcmdlIHBvaW50IHdpdGggdGhpcyBuZXdseSBk
ZWYtZWQgcmVnaXN0ZXJzIGJpdCBtYXNrKGlpKS4KKyAgICAgICAgICAgT25lIGltcG9ydGFudCB0
aGluZyBvZiB0aGlzIGFuYWx5c2lzIGlzIHRoYXQsIHdlIGNvbnNpZGVycyB0aGUgYmFzaWMgYmxv
Y2tzIHdoaWNoIHJhbmdlIG92ZXJsYXBzIHRoZSB0cnktcmFuZ2UgYXMgdGhlIGltcGxpY2l0IHBy
ZWRlY2Vzc29ycyBvZiB0aGUgaGFuZGxlcnMuCisgICAgICAgICAgIFdoZW4gcHJvcGFnYXRpbmcg
dGhlIG91dGdvaW5nIHJlc3VsdHMsIHRoZSBoYW5kbGVyIG1lcmdlcyBhbGwgdGhlIHByZWRlY2Vz
c29ycycgb3V0IHNldHMuIFRoaXMgaXMgYSBsaXR0bGUgYml0IGNvbnNlcnZhdGl2ZSBiZWNhdXNl
IHRoZSB0cnktcmFuZ2UgbWF5IG5vdCBjb3ZlciBhbGwKKyAgICAgICAgICAgdGhlIHBhcnQgb2Yg
dGhlIGltcGxpY2l0IHByZWRlY2Vzc29ycy4gU28gb3Bfc2F2ZSBjb3VsZCBzYXZlIHRoZSB2YXJp
YWJsZXMgY29uc2VydmF0aXZlbHkuCisgICAgICAgIDQuIFRoaXJkLCB3ZSBwZXJmb3JtIHRoZSBs
aXZlbmVzcyBhbmFseXNpcyBhZ2FpbiwgYnV0IG9udG8gdGhlIGdyYXBoIHdoaWNoIGRyb3BzIHRo
ZSBlZGdlcyBiZXR3ZWVuIHRoZSBzYXZlIHBvaW50cyBhbmQgdGhlIG1lcmdlIHBvaW50cy4gVGhp
cyBhbmFseXNpcywgcmVmZXJyZWQgdG8gYXMKKyAgICAgICAgICAgdGhlIHJlc3VtZWQgdmFyaWFi
bGVzIGFuYWx5c2lzLCBleHRyYWN0cyB0aGUgbGl2ZW5lc3MgYXQgZWFjaCBtZXJnZSBwb2ludC4g
VGhpcyBsaXZlbmVzcyBpbmZvcm1hdGlvbiBvbmx5IGNvbnNpZGVycyB0aGUgcmVhY2hhYmxlIGJs
b2NrcyBmcm9tIHRoZSB0YXJnZXQgb3BfcmVzdW1lLgorICAgICAgICAgICBTbywgdGhpcyByZWdp
c3RlciBzZXQgcmVwcmVzZW50cyB0aGUgc2F2ZWQgcmVnaXN0ZXJzIHdoaWNoIHRoZSByZWFjaGFi
bGUgYmxvY2tzIHVzZS4gV2UgY29uc2lkZXIgdGhlc2UgcmVnaXN0ZXJzIGFzIHRoZSByZWdpc3Rl
cnMgdG8gYmUgcmVzdW1lZCBoZXJlLgorICAgICAgICAgICBUaGlzIGFuYWx5c2lzIHNob3VsZCBi
ZSBkb25lIGFmdGVyICgzKSBhbmQgc2hvdWxkIHVzZSAoMykncyByZXN1bHRzLiBUaGlzIGlzIGJl
Y2F1c2UgdGhlIG9wX3NhdmUgY291bGQgc2F2ZSB0aGUgdmFyaWFibGVzIGNvbnNlcnZhdGl2ZWx5
LiBTbyBvcF9yZXN1bWUgc2hvdWxkIHJlc3VtZQorICAgICAgICAgICB0aGUgdmFyaWFibGVzIHRo
YXQgaXMgc2F2ZWQgY29uc2VydmF0aXZlbHkgaW4gKDMpLgorICAgICAgICA1LiBXZSBpbnNlcnQg
dGhlIGdldF9mcm9tX3Njb3BlIGFuZCBwdXRfdG9fc2NvcGUgYXQgZWFjaCBvcF9zYXZlIGFuZCBv
cF9yZXN1bWUuIFdoaWNoIHJlZ2lzdGVycyBzaG91bGQgYmUgc2F2ZWQgYW5kIHJlc3VtZWQgaXMg
b2ZmZXJlZCBieSAoMykgYW5kICg0KS4KKyAgICAgICAgICAgVGhlbiwgY2xpcCB0aGUgb3Bfc2F2
ZSBhbmQgb3BfcmVzdW1lIHRoZW1zZWx2ZXMuIFRoZXkgYXJlIGV4ZWN1dGVkIGluIGEgYmF0Y2gg
bWFubmVyIGJ5IEJ5dGVjb2RlTW9kaWZpY2F0aW9uU2V0LiBTaW5jZSB0aGVzZSBtb2RpZmljYXRp
b24gY2hhbmdlcyB0aGUgYmFzaWMgYmxvY2tzCisgICAgICAgICAgIGFuZCBzaXplIG9mIHVubGlu
a2VkIGluc3RydWN0aW9ucywgQnl0ZWNvZGVNb2RpZmljYXRpb25TZXQgYWxzbyBwZXJmb3JtcyB0
aGUgb2Zmc2V0IGFkanVzdG1lbnQgZm9yIFVubGlua2VkQ29kZUJsb2NrLiBTbywgdGhpcyBCeXRl
Y29kZU1vZGlmaWNhdGlvblNldCBpcyBwZXJmb3JtZWQKKyAgICAgICAgICAgb250byB0aGUgQnl0
ZWNvZGVHcmFwaCBpbnN0ZWFkIG9mIEJ5dGVjb2RlQmFzaWNCbG9jay4gVGhlIHJlYXNvbiB3aHkg
d2UgdGFrZSB0aGlzIGRlc2lnbiBpcyBzaW1wbGU6IHdlIGRvbid0IHdhbnQgdG8gbmV3bHkgY3Jl
YXRlIHRoZSBiYXNpYyBibG9ja3MgYW5kIG9wY29kZXMKKyAgICAgICAgICAgZm9yIHRoaXMgZWFy
bHkgcGhhc2UgbGlrZSBERkcuIEluc3RlYWQsIHdlIHBlcmZvcm0gdGhlIG1vZGlmaWNhdGlvbiBh
bmQgYWRqdXN0bWVudCB0byB0aGUgdW5saW5rZWQgaW5zdHJ1Y3Rpb25zIGFuZCBVbmxpbmtlZENv
ZGVCbG9jayBpbiBhIGluLXBsYWNlIG1hbm5lci4KKworICAgICAgICBBZnRlciB0aGF0IHBoYXNl
LCB0aGUgZGF0YSBmbG93IG9mIHRoZSBnZW5lcmF0b3Itc2F2ZWQtYW5kLXJlc3VtZWQtcmVnaXN0
ZXJzIGFyZSBleHBsaWNpdGx5IHJlcHJlc2VudGVkIGJ5IHRoZSBnZXRfZnJvbV9zY29wZSBhbmQg
cHV0X3RvX3Njb3BlLgorICAgICAgICBBbmQgb3Bfc2F2ZSBhbmQgb3BfcmVzdW1lIGFyZSByZW1v
dmVkLiBTaW5jZSB3ZSB1c2UgdGhlIGV4aXN0aW5nIGJ5dGVjb2RlcywgREZHIGFuZCBGVEwgY2hh
bmdlcyBhcmUgbm90IG5lY2Vzc2FyeS4KKyAgICAgICAgVGhpcyBwYXRjaCBhbHNvIGRyb3BzIGRh
dGEgc3RydWN0dXJlcyBhbmQgaW1wbGVtZW50YXRpb25zIGZvciB0aGUgb2xkIGdlbmVyYXRvciwg
b3BfcmVzdW1lLCBvcF9zYXZlIGltcGxlbWVudGF0aW9ucyBhbmQgR2VuZXJhdG9yRnJhbWUuCisK
KyAgICAgICAgTm90ZSB0aGF0IHRoaXMgcGF0Y2ggZG9lcyBub3QgbGV2ZXJhZ2UgdGhlIHJlY2Vu
dCBtdWx0aSBlbnRyeXBvaW50cyBzdXBwb3J0IGluIEIzLiBBZnRlciB0aGlzIHBhdGNoIGlzIGlu
dHJvZHVjZWQsIHdlIHdpbGwgc3VibWl0IGEgbmV3IHBhdGNoIHRoYXQgbGV2ZXJhZ2VzIHRoZSBt
dWx0aQorICAgICAgICBlbnRyeXBvaW50cyBmb3IgZ2VuZXJhdG9yJ3MgcmVzdW1lIGFuZCBzZWVz
IHRoZSBwZXJmb3JtYW5jZSBnYWluLgorCisgICAgICAgIENvbXBpbGluZyBFUzYgZ2VuZXJhdG9y
cyBpbiBERkcgYW5kIEZUTCBnaXZlcyB1cyBzaWduaWZpY2FudCBwZXJmb3JtYW5jZSBpbXByb3Zl
bWVudHMuCisgICAgICAgIEluIHg2NCBMaW51eCBib3ggKGhhbmF5YW1hdGEpLCB0aGUgcmVzdWx0
IG9mIEpTQ09ubHkgcG9ydCBpcyB0aGUgZm9sbG93aW5ncy4KKworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlbGluZSAgICAgICAgICAg
ICAgICAgICBwYXRjaAorCisgICAgICAgICAgICBnZW5lcmF0b3ItZmliICAgICAgICAgICAgICAg
ICAgICAgICAgICAxMDkuMTg0NSstOC44OTA1ICAgICBeICAgICAzNS44NjM4Ky0wLjc1NjcgICAg
ICAgIF4gZGVmaW5pdGVseSAzLjA0NDR4IGZhc3RlcgorICAgICAgICAgICAgZ2VuZXJhdG9yLXdp
dGgtc2V2ZXJhbC10eXBlcyAgICAgICAgICAgMzUxLjgzNTQrLTE3LjM4OTggICAgXiAgICAxMzIu
MzIzOSstMTguNjMxMCAgICAgICBeIGRlZmluaXRlbHkgMi42NTg5eCBmYXN0ZXIKKyAgICAgICAg
ICAgIGdlbmVyYXRvci1zdW5zcGlkZXItYWNjZXNzLW5zaWV2ZSAgICAgICAgNS45MTM2Ky0wLjAy
NjggICAgIF4gICAgICA1LjAwOTArLTAuMDM5NCAgICAgICAgXiBkZWZpbml0ZWx5IDEuMTgwNngg
ZmFzdGVyCisKKyAgICAgICAgSW4geDY0IE9TIFggbGFwdG9wLCB0aGUgcmVzdWx0cyBvZiBFUzZT
YW1wbGVCZW5jaCBhcmUgdGhlIGZvbGxvd2luZ3MuCisgICAgICAgIFRoZSBFUzYgQmFzaWMgYmVu
Y2htYXJrIHNob3cgdGhhdCB0aGUgcGVyZm9ybWFuY2Ugb2YgdGhlIHBhdGNoZWQgb25lIGlzIDMz
JSBmYXN0ZXIgdGhhbiB0aGUgcGVyZm9ybWFuY2Ugb2YgdGhlIGJhc2VsaW5lLgorCisgICAgICAg
ICAgICBCYXNlbGluZToKKyAgICAgICAgICAgICAgICBHZW9tZXRyaWMgTWVhbiBSZXN1bHQ6IDE4
MS44MyBtcyDCsSA0LjgyIG1zCisKKyAgICAgICAgICAgICAgICBCZW5jaG1hcmsgICAgRmlyc3Qg
SXRlcmF0aW9uICAgICAgIFdvcnN0IDIlICAgICAgICAgICAgICBTdGVhZHkgU3RhdGUKKyAgICAg
ICAgICAgICAgICBBaXIgICAgICAgICAgNzAuNzQgbXMgwrEgNi41NSBtcyAgICAzNC43NCBtcyDC
sSAxLjY1IG1zICAgIDI5ODkuMDYgbXMgwrEgMzQuNDUgbXMKKyAgICAgICAgICAgICAgICBCYXNp
YyAgICAgICAgNDAuMDMgbXMgwrEgMS45NiBtcyAgICAyOC41MCBtcyDCsSAwLjYwIG1zICAgIDQz
NDIuOTEgbXMgwrEgNjQuMTAgbXMKKworICAgICAgICAgICAgUGF0Y2hlZDoKKyAgICAgICAgICAg
ICAgICBHZW9tZXRyaWMgTWVhbiBSZXN1bHQ6IDE2OC4xNCBtcyDCsSAxLjM5IG1zCisKKyAgICAg
ICAgICAgICAgICBCZW5jaG1hcmsgICAgRmlyc3QgSXRlcmF0aW9uICAgICAgIFdvcnN0IDIlICAg
ICAgICAgICAgICBTdGVhZHkgU3RhdGUKKyAgICAgICAgICAgICAgICBBaXIgICAgICAgICAgNjgu
NjcgbXMgwrEgMC44MiBtcyAgICAzNS42MiBtcyDCsSAwLjMyIG1zICAgIDMwNjUuODkgbXMgwrEg
NTUuNTkgbXMKKyAgICAgICAgICAgICAgICBCYXNpYyAgICAgICAgMzguNjEgbXMgwrEgMS42NSBt
cyAgICAyMy45NyBtcyDCsSAwLjM4IG1zICAgIDMyNjIuNDYgbXMgwrEgNzQuMTIgbXMKKworICAg
ICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYnVpbHRpbnMvR2VuZXJhdG9yUHJvdG90eXBl
LmpzOgorICAgICAgICAoZ2xvYmFsUHJpdmF0ZS5nZW5lcmF0b3JSZXN1bWUpOgorICAgICAgICAq
IGJ5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
QmFzaWNCbG9jazo6Y29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3NJbnRlcm5hbCk6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlQmFzaWNCbG9jazo6Y29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MpOgor
ICAgICAgICAoSlNDOjpsaW5rQmxvY2tzKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Y29tcHV0
ZUJ5dGVjb2RlQmFzaWNCbG9ja3MpOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVj
b2RlQmFzaWNCbG9jay5oOgorICAgICAgICAoSlNDOjpCeXRlY29kZUJhc2ljQmxvY2s6OmJ5dGVj
b2RlT2Zmc2V0cyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlQmFzaWNCbG9jazo6c3VjY2Vzc29y
cyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlQmFzaWNCbG9jazo6cHJlZGVjZXNzb3JzKToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVCYXNpY0Jsb2NrOjppbmRleCk6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlQmFzaWNCbG9jazo6YWRkU3VjY2Vzc29yKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVC
YXNpY0Jsb2NrOjphZGRQcmVkZWNlc3Nvcik6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVH
ZW5lcmF0b3JpZmljYXRpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5l
cmF0b3JpZmljYXRpb246OkJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uKToKKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb246OmlzTWVyZ2VCbG9jayk6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uOjppc1NhdmVCbG9jayk6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uOjpncmFwaCk6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uOjp5aWVsZHMpOgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUdlbmVyYXRvcmlmaWNhdGlvbjo6c3RvcmFnZUZvckdlbmVyYXRvckxvY2FsKToKKyAgICAgICAg
KEpTQzo6R2VuZXJhdG9yTGl2ZW5lc3NBbmFseXNpczo6R2VuZXJhdG9yTGl2ZW5lc3NBbmFseXNp
cyk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGVEZWZz
Rm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JMaXZlbmVzc0FuYWx5
c2lzOjpjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6R2VuZXJh
dG9yTGl2ZW5lc3NBbmFseXNpczo6cnVuKToKKyAgICAgICAgKEpTQzo6U2F2ZWRWYXJpYWJsZXNB
bmFseXNpczo6U2F2ZWRWYXJpYWJsZXNBbmFseXNpcyk6CisgICAgICAgIChKU0M6OlNhdmVkVmFy
aWFibGVzQW5hbHlzaXM6OnN0ZXBPdmVySW5zdHJ1Y3Rpb24pOgorICAgICAgICAoSlNDOjpTYXZl
ZFZhcmlhYmxlc0FuYWx5c2lzOjpjb21wdXRlTG9jYWxTYXZlZFZhcmlhYmxlc0ZvckJ5dGVjb2Rl
T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6U2F2ZWRWYXJpYWJsZXNBbmFseXNpczo6Y29tcHV0ZUxv
Y2FsU2F2ZWRWYXJpYWJsZXNGb3JCbG9jayk6CisgICAgICAgIChKU0M6OlNhdmVkVmFyaWFibGVz
QW5hbHlzaXM6OmdldFNhdmVkVmFyaWFibGVzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQpOgorICAgICAg
ICAoSlNDOjpTYXZlZFZhcmlhYmxlc0FuYWx5c2lzOjpydW4pOgorICAgICAgICAoSlNDOjpSZXN1
bWVkVmFyaWFibGVzQW5hbHlzaXM6OlJlc3VtZWRWYXJpYWJsZXNBbmFseXNpcyk6CisgICAgICAg
IChKU0M6OlJlc3VtZWRWYXJpYWJsZXNBbmFseXNpczo6Y29tcHV0ZURlZnNGb3JCeXRlY29kZU9m
ZnNldCk6CisgICAgICAgIChKU0M6OlJlc3VtZWRWYXJpYWJsZXNBbmFseXNpczo6Y29tcHV0ZVVz
ZXNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OlJlc3VtZWRWYXJpYWJsZXNBbmFs
eXNpczo6cnVuKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb246OnJ1
bik6CisgICAgICAgIChKU0M6OnBlcmZvcm1HZW5lcmF0b3JpZmljYXRpb24pOgorICAgICAgICAq
IGJ5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmg6IENvcGllZCBmcm9tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNJbmxpbmVz
LmguCisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVHcmFwaC5oOiBBZGRlZC4KKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHcmFwaDo6Y29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVH
cmFwaDo6YmFzaWNCbG9ja3MpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdyYXBoOjppbnN0cnVj
dGlvbnMpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdyYXBoOjpiYXNpY0Jsb2Nrc0luUmV2ZXJz
ZU9yZGVyKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHcmFwaDo6YmxvY2tDb250YWluc0J5dGVj
b2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHcmFwaDo6ZmluZEJhc2ljQmxvY2tG
b3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR3JhcGg6OmZpbmRCYXNp
Y0Jsb2NrV2l0aExlYWRlck9mZnNldCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR3JhcGg8Qmxv
Y2s+OjpCeXRlY29kZUdyYXBoKToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpdmVuZXNz
QW5hbHlzaXMuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OkJ5
dGVjb2RlTGl2ZW5lc3NBbmFseXNpcyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlTGl2ZW5lc3NB
bmFseXNpczo6Y29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCk6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6cnVuTGl2ZW5lc3NGaXhwb2lu
dCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Z2V0TGl2ZW5lc3NJ
bmZvQXRCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlTGl2ZW5lc3NBbmFs
eXNpczo6Y29tcHV0ZUZ1bGxMaXZlbmVzcyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlTGl2ZW5l
c3NBbmFseXNpczo6Y29tcHV0ZUtpbGxzKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVz
c0FuYWx5c2lzOjpkdW1wUmVzdWx0cyk6CisgICAgICAgIChKU0M6OmlzVmFsaWRSZWdpc3RlckZv
ckxpdmVuZXNzKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Z2V0TGVhZGVyT2Zmc2V0Rm9yQmFz
aWNCbG9jayk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OmZpbmRCYXNpY0Jsb2NrV2l0aExlYWRl
ck9mZnNldCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OmJsb2NrQ29udGFpbnNCeXRlY29kZU9m
ZnNldCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OmZpbmRCYXNpY0Jsb2NrRm9yQnl0ZWNvZGVP
ZmZzZXQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpzdGVwT3Zlckluc3RydWN0aW9uKTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6Y29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCeXRlY29kZU9mZnNl
dCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OmNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQmxvY2sp
OiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1
dGUpOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNp
cy5oOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGluZXMu
aDoKKyAgICAgICAgKEpTQzo6aXNWYWxpZFJlZ2lzdGVyRm9yTGl2ZW5lc3MpOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUxpdmVuZXNzTG9jYWxQcm9wYWdhdGlvbjxEZXJpdmVkQW5hbHlzaXM+Ojpz
dGVwT3Zlckluc3RydWN0aW9uKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc0xvY2Fs
UHJvcGFnYXRpb248RGVyaXZlZEFuYWx5c2lzPjo6Y29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCeXRl
Y29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlTGl2ZW5lc3NMb2NhbFByb3BhZ2F0
aW9uPERlcml2ZWRBbmFseXNpcz46OmNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQmxvY2spOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzTG9jYWxQcm9wYWdhdGlvbjxEZXJpdmVkQW5hbHlz
aXM+OjpnZXRMaXZlbmVzc0luZm9BdEJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKiBieXRlY29k
ZS9CeXRlY29kZU1vZGlmaWNhdGlvblNldC5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpCeXRl
Y29kZU1vZGlmaWNhdGlvblNldDo6YWRqdXN0T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNv
ZGVNb2RpZmljYXRpb25TZXQ6OmFwcGx5TW9kaWZpY2F0aW9uKToKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVNb2RpZmljYXRpb25TZXQ6OmV4ZWN1dGUpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVj
b2RlTW9kaWZpY2F0aW9uU2V0Lmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpCeXRlY29kZU1vZGlm
aWNhdGlvblNldDo6Qnl0ZWNvZGVNb2RpZmljYXRpb25TZXQpOgorICAgICAgICAoSlNDOjpCeXRl
Y29kZU1vZGlmaWNhdGlvblNldDo6aW5zZXJ0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVNb2Rp
ZmljYXRpb25TZXQ6OnJlbW92ZUJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVNb2Rp
ZmljYXRpb25TZXQ6OmdyYXBoKToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZVVzZURlZi5o
OgorICAgICAgICAoSlNDOjpjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAg
KEpTQzo6Y29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgICogYnl0ZWNvZGUv
Q29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbik6
CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6aGFuZGxlckZvckluZGV4KToKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjp2YWx1ZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChK
U0M6OkNvZGVCbG9jazo6bGl2ZW5lc3NBbmFseXNpc1Nsb3cpOgorICAgICAgICAoSlNDOjpDb2Rl
QmxvY2s6OmR1bXBCeXRlY29kZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6
c2hyaW5rVG9GaXQpOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5oOgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmlzQ29uc3RhbnRSZWdpc3RlckluZGV4KToKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjpsaXZlbmVzc0FuYWx5c2lzKToKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjpsaXZlQ2FsbGVlTG9jYWxzQXRZaWVsZCk6IERlbGV0ZWQuCisgICAgICAgICogYnl0
ZWNvZGUvSGFuZGxlckluZm8uaDoKKyAgICAgICAgKEpTQzo6SGFuZGxlckluZm9CYXNlOjpoYW5k
bGVyRm9ySW5kZXgpOgorICAgICAgICAqIGJ5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5jcHA6
CisgICAgICAgIChKU0M6OmdldEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAg
ICAoSlNDOjpjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzSW50ZXJuYWwpOgorICAgICAgICAoSlND
Ojpjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKToKKyAgICAgICAgKEpTQzo6cmVjb21wdXRlUHJl
Y2lzZUp1bXBUYXJnZXRzKToKKyAgICAgICAgKEpTQzo6ZmluZEp1bXBUYXJnZXRzRm9yQnl0ZWNv
ZGVPZmZzZXQpOgorICAgICAgICAqIGJ5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5oOgorICAg
ICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6VW5s
aW5rZWRDb2RlQmxvY2s6OmhhbmRsZXJGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6
OlVubGlua2VkQ29kZUJsb2NrOjpoYW5kbGVyRm9ySW5kZXgpOgorICAgICAgICAoSlNDOjpVbmxp
bmtlZENvZGVCbG9jazo6YXBwbHlNb2RpZmljYXRpb24pOgorICAgICAgICAqIGJ5dGVjb2RlL1Vu
bGlua2VkQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6OlVubGlua2VkU3RyaW5nSnVtcFRhYmxl
OjpvZmZzZXRGb3JWYWx1ZSk6CisgICAgICAgICogYnl0ZWNvZGUvVmlydHVhbFJlZ2lzdGVyLmg6
CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNv
ZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXRDb21wbGV4UG9wU2NvcGVzKToKKyAgICAgICAgKEpTQzo6cHJlcGFyZUp1
bXBUYWJsZUZvclN0cmluZ1N3aXRjaCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0WWllbGRQb2ludCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
U2F2ZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzdW1lKToKKyAg
ICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRvclN0YXRlUmVnaXN0ZXIpOgorICAgICAgICAoSlND
OjpCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdG9yVmFsdWVSZWdpc3Rlcik6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0b3JSZXN1bWVNb2RlUmVnaXN0ZXIpOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdG9yRnJhbWVSZWdpc3Rlcik6Cisg
ICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGdlbmVyYXRlLWJ5dGVj
b2RlLWZpbGVzOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAg
ICAgKEpTQzo6ZmluZEV4Y2VwdGlvbkhhbmRsZXIpOgorICAgICAgICAoSlNDOjpHZXRDYXRjaEhh
bmRsZXJGdW5jdG9yOjpvcGVyYXRvcigpKToKKyAgICAgICAgKEpTQzo6VW53aW5kRnVuY3Rvcjo6
b3BlcmF0b3IoKSk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaDoKKyAgICAg
ICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlcklubGluZXMuaDogQ29waWVkIGZyb20gU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5oLgorICAgICAgICAo
SlNDOjpJbnRlcnByZXRlcjo6Z2V0T3Bjb2RlSUQpOgorICAgICAgICAqIGppdC9KSVQuY3BwOgor
ICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MpOiBEZWxldGVkLgorICAg
ICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUT3Bjb2Rlcy5jcHA6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdF9vcF9zYXZlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0X29wX3Jlc3VtZSk6IERlbGV0ZWQuCisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlci5hc206CisgICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6CisgICAgICAgIChKU0M6OlBh
cnNlcjxMZXhlclR5cGU+OjpwYXJzZUlubmVyKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVy
VHlwZT46OnBhcnNlR2VuZXJhdG9yRnVuY3Rpb25Tb3VyY2VFbGVtZW50cyk6CisgICAgICAgIChK
U0M6OlBhcnNlcjxMZXhlclR5cGU+OjpjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKToKKyAgICAg
ICAgKiBwYXJzZXIvUGFyc2VyLmg6CisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMu
Y3BwOgorICAgICAgICAoSlNDOjpTTE9XX1BBVEhfREVDTCk6IERlbGV0ZWQuCisgICAgICAgICog
cnVudGltZS9Db21tb25TbG93UGF0aHMuaDoKKyAgICAgICAgKiBydW50aW1lL0dlbmVyYXRvckZy
YW1lLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OkdlbmVyYXRv
ckZyYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OmZpbmlzaENy
ZWF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OmNyZWF0ZVN0
cnVjdHVyZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpjcmVhdGUp
OiBEZWxldGVkLgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6c2F2ZSk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpyZXN1bWUpOiBEZWxldGVkLgorICAgICAg
ICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6dmlzaXRDaGlsZHJlbik6IERlbGV0ZWQuCisgICAgICAg
ICogcnVudGltZS9HZW5lcmF0b3JGcmFtZS5oOiBSZW1vdmVkLgorICAgICAgICAoSlNDOjpHZW5l
cmF0b3JGcmFtZTo6bG9jYWxzKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJh
bWU6OmxvY2FsQXQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6b2Zm
c2V0T2ZMb2NhbHMpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6YWxs
b2NhdGlvblNpemVGb3JMb2NhbHMpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNHZW5l
cmF0b3JGdW5jdGlvbi5oOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlND
OjpWTTo6Vk0pOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKyAgICAgICAgKiB0
ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwtYW5kLWFycmF5LmpzOiBBZGRlZC4KKyAgICAg
ICAgKGZpYik6CisgICAgICAgICogdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLWFuZC1v
YmplY3QuanM6IEFkZGVkLgorICAgICAgICAoZmliKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3Mv
Z2VuZXJhdG9yLWZpYi1mdGwtYW5kLXN0cmluZy5qczogQWRkZWQuCisgICAgICAgIChmaWIpOgor
ICAgICAgICAqIHRlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC5qczogQWRkZWQuCisgICAg
ICAgIChmaWIpOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZnJhbWUtZW1wdHku
anM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkVGhyb3cpOgorICAgICAgICAoc2hvdWxkVGhyb3cu
ZmliKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXJlZHVjZWQtc2F2ZS1wb2lu
dC1wdXQtdG8tc2NvcGUuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAo
Z2VuKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXRyYW5zZmVyLXJlZ2lzdGVy
LWJleW9uZC1tdXRpcGxlLXlpZWxkcy5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6Cisg
ICAgICAgIChnZW4pOgorCiAyMDE2LTA3LTI0ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxl
LmNvbT4KIAogICAgICAgICBbRmV0Y2ggQVBJXSBSZXF1ZXN0IHNob3VsZCBiZSBjcmVhdGVkIHdp
dGggYW55IEhlYWRlcnNJbml0IGRhdGEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9n
IGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggYTM0YTVhYzRiNjFlZDk2NjUxYWZiZGNiOTAx
MzdiNjk0MzE2MTU1Ni4uYjU1M2U1YTIxZDI2YjhiMmQ0YzY0ZmZiNjEzNWMyYzBjYWNhMGQyNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNSBAQAorMjAxNi0wNy0yNSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUu
dGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbREZHXVtGVExdIEltcGxlbWVudCBFUzYgR2VuZXJh
dG9ycyBpbiBERkcgLyBGVEwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE1MjcyMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEFkZCBtb3ZlIGNvbnN0cnVjdG9yIGZvciBGYXN0Qml0VmVjdG9yLgorCisgICAg
ICAgICogd3RmL0Zhc3RCaXRWZWN0b3IuaDoKKyAgICAgICAgKFdURjo6RmFzdEJpdFZlY3Rvcjo6
RmFzdEJpdFZlY3Rvcik6CisKIDIwMTYtMDctMjQgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxl
LmNvbT4KIAogICAgICAgICBCMyBzaG91bGQgc3VwcG9ydCBtdWx0aXBsZSBlbnRyeXBvaW50cwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IGY4ZjIzMDk3YmE5Y2Q3MzhkNzQz
M2YzNmQ2MWRjODgyY2RkZWY4YmMuLjM2MjRhYTE0ZTBmZDZkZDVjZTIxMjMyYWRlYjdmNzgwZWJh
NGU4NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTE4MSw2ICsxODEs
OCBAQCBzZXQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIGJ5dGVjb2RlL0FycmF5QWxsb2Nh
dGlvblByb2ZpbGUuY3BwCiAgICAgYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmNwcAogICAgIGJ5dGVj
b2RlL0J5dGVjb2RlQmFzaWNCbG9jay5jcHAKKyAgICBieXRlY29kZS9CeXRlY29kZUdlbmVyYXRv
cmlmaWNhdGlvbi5jcHAKKyAgICBieXRlY29kZS9CeXRlY29kZU1vZGlmaWNhdGlvblNldC5jcHAK
ICAgICBieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmNwcAogICAgIGJ5dGVjb2Rl
L0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAKICAgICBieXRlY29kZS9DYWxsRWRnZS5jcHAK
QEAgLTY2MSw3ICs2NjMsNiBAQCBzZXQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIHJ1bnRp
bWUvRnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlLmNwcAogICAgIHJ1bnRpbWUvRnVuY3Rpb25Qcm90
b3R5cGUuY3BwCiAgICAgcnVudGltZS9GdW5jdGlvblJhcmVEYXRhLmNwcAotICAgIHJ1bnRpbWUv
R2VuZXJhdG9yRnJhbWUuY3BwCiAgICAgcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVj
dG9yLmNwcAogICAgIHJ1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3BwCiAgICAg
cnVudGltZS9HZW5lcmF0b3JQcm90b3R5cGUuY3BwCkBAIC05NzYsNiArOTc3LDEwIEBAIGFkZF9j
dXN0b21fY29tbWFuZCgKICAgICBDT01NQU5EICR7UFlUSE9OX0VYRUNVVEFCTEV9ICR7SkFWQVND
UklQVENPUkVfRElSfS9nZW5lcmF0ZS1ieXRlY29kZS1maWxlcyAtLWJ5dGVjb2Rlc19oICR7REVS
SVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vQnl0ZWNvZGVzLmggLS1pbml0X2J5dGVj
b2Rlc19hc20gJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9Jbml0Qnl0ZWNv
ZGVzLmFzbSAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24K
ICAgICBWRVJCQVRJTSkKIAorbGlzdChBUFBFTkQgSmF2YVNjcmlwdENvcmVfSEVBREVSUworICAg
ICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vQnl0ZWNvZGVzLmgKKykKKwog
YWRkX2N1c3RvbV9jb21tYW5kKAogICAgIE9VVFBVVCAke0RFUklWRURfU09VUkNFU19KQVZBU0NS
SVBUQ09SRV9ESVJ9L0xMSW50RGVzaXJlZE9mZnNldHMuaAogICAgIE1BSU5fREVQRU5ERU5DWSAk
e0pBVkFTQ1JJUFRDT1JFX0RJUn0vb2ZmbGluZWFzbS9nZW5lcmF0ZV9vZmZzZXRfZXh0cmFjdG9y
LnJiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGMzMWIzOTc4MWM2NDNlM2Y5NzQw
OWU3OGJiZDFhMmFjM2JmN2U2MGMuLmEyZGU1NjY4YmVjM2IxYTc0YmEyOTVmYjExNTgwZmE3MWNj
MGFkNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMjU2LDggKzEyNTYsNiBA
QAogCQk3MDlGQjg2QzFBRTMzNUM2MDAzOUQwNjkgLyogV2Vha1NldFByb3RvdHlwZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzA5RkI4NjYxQUUzMzVD
NjAwMzlEMDY5IC8qIFdlYWtTZXRQcm90b3R5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MEIwQTlEMTFBOUI2NjQ2MDAwMTMwNkEgLyogUnVu
dGltZUZsYWdzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3MEIwQTlEMDFBOUI2NjIwMDAwMTMwNkEgLyogUnVudGltZUZsYWdzLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzBCNzkxOTExQzAyNEExMzAw
MjQ4MUUyIC8qIFNvdXJjZUNvZGVLZXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDcwQjc5MThFMUMwMjQ0QzkwMDI0ODFFMiAvKiBTb3VyY2VDb2RlS2V5
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNzBC
NzkxOTIxQzAyNEEyMzAwMjQ4MUUyIC8qIEdlbmVyYXRvckZyYW1lLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwQjc5MTgzMUMwMjQ0MzIwMDI0ODFF
MiAvKiBHZW5lcmF0b3JGcmFtZS5jcHAgKi87IH07Ci0JCTcwQjc5MTkzMUMwMjRBMjgwMDI0ODFF
MiAvKiBHZW5lcmF0b3JGcmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNzBCNzkxODQxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZyYW1lLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzBCNzkx
OTQxQzAyNEEyODAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBCNzkxODUxQzAy
NDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwICovOyB9Owog
CQk3MEI3OTE5NTFDMDI0QTI4MDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rv
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBCNzkx
ODYxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MEI3OTE5NjFD
MDI0QTI4MDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBCNzkxODcxQzAyNDQzMjAw
MjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcCAqLzsgfTsKQEAgLTIwMzgs
NiArMjAzNiwxMSBAQAogCQlFMThFM0E1OTBERjkyNzhDMDBEOTBCMzQgLyogVk0uY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTE4RTNBNTcwREY5Mjc4
QzAwRDkwQjM0IC8qIFZNLmNwcCAqLzsgfTsKIAkJRTMxOENCQzAxQjhBRUY1MTAwQTI5MjlEIC8q
IEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEUzMThDQkJFMUI4QUVGNTEwMEEyOTI5RCAvKiBKU01vZHVsZU5h
bWVzcGFjZU9iamVjdC5jcHAgKi87IH07CiAJCUUzMThDQkMxMUI4QUVGNTEwMEEyOTI5RCAvKiBK
U01vZHVsZU5hbWVzcGFjZU9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTMxOENCQkYxQjhBRUY1MTAwQTI5MjlEIC8qIEpTTW9kdWxlTmFtZXNw
YWNlT2JqZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJRTMyOERBRTcxRDM4RDAwNDAwMUEyNTI5IC8qIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0
aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUz
RDI2NDI2MUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHAg
Ki87IH07CisJCUUzMjhEQUU4MUQzOEQwMDUwMDFBMjUyOSAvKiBCeXRlY29kZUdlbmVyYXRvcmlm
aWNhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTNEMjY0MjcxRDM4QzA0MjAwMEJFMTc0IC8qIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTMyOERB
RTkxRDM4RDAwNTAwMUEyNTI5IC8qIEJ5dGVjb2RlR3JhcGguaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzRDI2NDI4MUQzOEMwNDIwMDBCRTE3NCAvKiBC
eXRlY29kZUdyYXBoLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJRTMyOERBRUExRDM4RDAwNTAwMUEyNTI5IC8qIEJ5dGVjb2RlTW9kaWZpY2F0aW9u
U2V0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUz
RDI2NDI5MUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRlY29kZU1vZGlmaWNhdGlvblNldC5jcHAgKi87
IH07CisJCUUzMjhEQUVCMUQzOEQwMDUwMDFBMjUyOSAvKiBCeXRlY29kZU1vZGlmaWNhdGlvblNl
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNEMjY0
MkExRDM4QzA0MjAwMEJFMTc0IC8qIEJ5dGVjb2RlTW9kaWZpY2F0aW9uU2V0LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTMzNjM3QTUxQjYzMjIw
MjAwRUUwODQwIC8qIFJlZmxlY3RPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTMzNjM3QTMxQjYzMjIwMjAwRUUwODQwIC8qIFJlZmxlY3RP
YmplY3QuY3BwICovOyB9OwogCQlFMzM2MzdBNjFCNjMyMjAyMDBFRTA4NDAgLyogUmVmbGVjdE9i
amVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMz
NjM3QTQxQjYzMjIwMjAwRUUwODQwIC8qIFJlZmxlY3RPYmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzNCM0UyNjFCN0FCRDc1MDA0OERC
MkUgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0Lmx1dC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMzQjNFMjUxQjdBQkQ3NTAwNDhEQjJF
IC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5sdXQuaCAqLzsgfTsKQEAgLTIwNjIs
NiArMjA2NSw3IEBACiAJCUUzNzk0RTc1MUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFseXpl
ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzc5
NEU3MzFCNzdFQjk3MDA1NTQzQUUgLyogTW9kdWxlQW5hbHl6ZXIuY3BwICovOyB9OwogCQlFMzc5
NEU3NjFCNzdFQjk3MDA1NTQzQUUgLyogTW9kdWxlQW5hbHl6ZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNzk0RTc0MUI3N0VCOTcwMDU1NDNBRSAv
KiBNb2R1bGVBbmFseXplci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUUzOTYzQ0VFMUI3M0Y3NTAwMEVCNENFNSAvKiBOb2Rlc0FuYWx5emVNb2R1
bGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5
NjNDRUMxQjczRjc1MDAwRUI0Q0U1IC8qIE5vZGVzQW5hbHl6ZU1vZHVsZS5jcHAgKi87IH07CisJ
CUUzOUQ0NUY1MUQzOTAwNTYwMEIzQjM3NyAvKiBJbnRlcnByZXRlcklubGluZXMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOUQ5RDg0MUQzOTAwMDYw
MDY2NzI4MiAvKiBJbnRlcnByZXRlcklubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzlEQTRBNjFCN0U4QjdDMDA4NEYzM0EgLyogSlNN
b2R1bGVSZWNvcmQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTM5REE0QTQxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmNwcCAqLzsg
fTsKIAkJRTM5REE0QTcxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzlEQTRBNTFCN0U4QjdD
MDA4NEYzM0EgLyogSlNNb2R1bGVSZWNvcmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlFM0QyMzlDODFCODI5QzFDMDBCQkVGNjcgLyogSlNNb2R1
bGVFbnZpcm9ubWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFM0QyMzlDNjFCODI5QzFDMDBCQkVGNjcgLyogSlNNb2R1bGVFbnZpcm9ubWVudC5j
cHAgKi87IH07CkBAIC0zNDY1LDggKzM0NjksNiBAQAogCQk3MDlGQjg2NTFBRTMzNUM2MDAzOUQw
NjkgLyogV2Vha1NldFByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBXZWFrU2V0UHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNzA5RkI4NjYxQUUzMzVDNjAwMzlEMDY5IC8qIFdlYWtTZXRQcm90b3R5cGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vha1NldFByb3RvdHlwZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3MEIwQTlEMDFBOUI2NjIwMDAwMTMwNkEgLyogUnVudGltZUZs
YWdzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJ1bnRpbWVGbGFncy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3MEI3OTE4MzFDMDI0NDMyMDAyNDgxRTIgLyog
R2VuZXJhdG9yRnJhbWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
R2VuZXJhdG9yRnJhbWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3MEI3OTE4
NDFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnJhbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gR2VuZXJhdG9yRnJhbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNzBCNzkxODUxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3Ry
dWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR2VuZXJhdG9y
RnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcw
Qjc5MTg2MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdlbmVyYXRvckZ1bmN0aW9uQ29uc3Ry
dWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzBCNzkxODcxQzAyNDQzMjAw
MjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQzMTQsMTAgKzQzMTYsMTYgQEAKIAkJRTM3OTRF
NzMxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1vZHVsZUFuYWx5emVyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRTM3OTRFNzQxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vZHVsZUFuYWx5emVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOTYzQ0VDMUI3M0Y3NTAwMEVCNENFNSAvKiBO
b2Rlc0FuYWx5emVNb2R1bGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gTm9kZXNBbmFseXplTW9kdWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
RTM5RDlEODQxRDM5MDAwNjAwNjY3MjgyIC8qIEludGVycHJldGVySW5saW5lcy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRlcnByZXRlcklubGluZXMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM5REE0QTQxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxl
UmVjb3JkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTW9kdWxl
UmVjb3JkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM5REE0QTUxQjdFOEI3
QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEpTTW9kdWxlUmVjb3JkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUz
RDIzOUM2MUI4MjlDMUMwMEJCRUY2NyAvKiBKU01vZHVsZUVudmlyb25tZW50LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTW9kdWxlRW52aXJvbm1lbnQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0QyMzlDNzFCODI5QzFDMDBCQkVGNjcgLyog
SlNNb2R1bGVFbnZpcm9ubWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBK
U01vZHVsZUVudmlyb25tZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzRDI2
NDI2MUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCeXRlY29kZUdlbmVyYXRvcmlmaWNh
dGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzRDI2NDI3MUQzOEMwNDIw
MDBCRTE3NCAvKiBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlFM0QyNjQyODFEMzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNvZGVH
cmFwaC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCeXRlY29kZUdyYXBoLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzRDI2NDI5MUQzOEMwNDIwMDBCRTE3NCAv
KiBCeXRlY29kZU1vZGlmaWNhdGlvblNldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBCeXRlY29kZU1vZGlmaWNhdGlvblNldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUUzRDI2NDJBMUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRlY29kZU1vZGlmaWNh
dGlvblNldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCeXRlY29kZU1vZGlm
aWNhdGlvblNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0VGODg3MjFCNjZE
RjIzMDAzRjI2Q0IgLyogSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNFRjg4NzMxQjY2REYyMzAwM0YyNkNCIC8qIEpTUHJv
cGVydHlOYW1lSXRlcmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNQ
cm9wZXJ0eU5hbWVJdGVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNDlE
QzE0OTEyRUYyNjFBMDAxODRBMUYgLyogU291cmNlUHJvdmlkZXJDYWNoZUl0ZW0uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU291cmNlUHJvdmlkZXJDYWNoZUl0ZW0uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUwMzUsNiArNTA0Myw3IEBACiAJCTE0MjlENzdB
MEVEMjBENzMwMEI4OTYxOSAvKiBpbnRlcnByZXRlciAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3Vw
OwogCQkJY2hpbGRyZW4gPSAoCisJCQkJRTM5RDlEODQxRDM5MDAwNjAwNjY3MjgyIC8qIEludGVy
cHJldGVySW5saW5lcy5oICovLAogCQkJCTBGNTVGMEYxMTREMTA2MzYwMEFDNzY0OSAvKiBBYnN0
cmFjdFBDLmNwcCAqLywKIAkJCQkwRjU1RjBGMjE0RDEwNjM2MDBBQzc2NDkgLyogQWJzdHJhY3RQ
Qy5oICovLAogCQkJCTE0MjlEODVCMEVEMjE4RTkwMEI4OTYxOSAvKiBDTG9vcFN0YWNrLmNwcCAq
LywKQEAgLTU3MTMsOCArNTcyMiw2IEBACiAJCQkJRjY5MkE4NUQwMjU1NTk3RDAxRkY2MEY3IC8q
IEZ1bmN0aW9uUHJvdG90eXBlLmggKi8sCiAJCQkJNjJEMkQzOEQxQURGMTAzRjAwMDIwNkMxIC8q
IEZ1bmN0aW9uUmFyZURhdGEuY3BwICovLAogCQkJCTYyRDJEMzhFMUFERjEwM0YwMDAyMDZDMSAv
KiBGdW5jdGlvblJhcmVEYXRhLmggKi8sCi0JCQkJNzBCNzkxODMxQzAyNDQzMjAwMjQ4MUUyIC8q
IEdlbmVyYXRvckZyYW1lLmNwcCAqLywKLQkJCQk3MEI3OTE4NDFDMDI0NDMyMDAyNDgxRTIgLyog
R2VuZXJhdG9yRnJhbWUuaCAqLywKIAkJCQk3MEI3OTE4NTFDMDI0NDMyMDAyNDgxRTIgLyogR2Vu
ZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAgKi8sCiAJCQkJNzBCNzkxODYxQzAyNDQzMjAw
MjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaCAqLywKIAkJCQk3MEI3OTE4
NzFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3BwICovLApA
QCAtNjU5Niw2ICs2NjAzLDExIEBACiAJCTk2OUEwNzhGMEVEMUQzQUUwMEYxRjY4MSAvKiBieXRl
Y29kZSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJRTNE
MjY0MjYxRDM4QzA0MjAwMEJFMTc0IC8qIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcCAq
LywKKwkJCQlFM0QyNjQyNzFEMzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNvZGVHZW5lcmF0b3JpZmlj
YXRpb24uaCAqLywKKwkJCQlFM0QyNjQyODFEMzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNvZGVHcmFw
aC5oICovLAorCQkJCUUzRDI2NDI5MUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRlY29kZU1vZGlmaWNh
dGlvblNldC5jcHAgKi8sCisJCQkJRTNEMjY0MkExRDM4QzA0MjAwMEJFMTc0IC8qIEJ5dGVjb2Rl
TW9kaWZpY2F0aW9uU2V0LmggKi8sCiAJCQkJNTM3MEI0RjMxQkYyNUVBMjAwNUM0MEZDIC8qIEFk
YXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2UuY3BwICovLAogCQkJCTUz
NzBCNEY0MUJGMjVFQTIwMDVDNDBGQyAvKiBBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdh
dGNocG9pbnRCYXNlLmggKi8sCiAJCQkJMEY4MzM1QjQxNjM5QzFFMzAwMTQ0M0I1IC8qIEFycmF5
QWxsb2NhdGlvblByb2ZpbGUuY3BwICovLApAQCAtNzE1Myw2ICs3MTY1LDcgQEAKIAkJCQkwRkVD
ODUyRDFCREFDREFDMDA4MEZGNzQgLyogQjNQcm9jZWR1cmVJbmxpbmVzLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRkVDODVCRDFCRTE0NjJGMDA4MEZGNzQgLyogQjNSZWR1Y2VTdHJlbmd0aC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEZFQzg1MzExQkRBQ0RBQzAwODBGRjc0IC8qIEIzU3RhY2ttYXBT
cGVjaWFsLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzI4REFFODFEMzhEMDA1MDAxQTI1MjkgLyog
Qnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUM4NTM1
MUJEQUNEQUMwMDgwRkY3NCAvKiBCM1Nsb3RCYXNlVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGRUM4NTM2MUJEQUNEQUMwMDgwRkY3NCAvKiBCM1N1Y2Nlc3NvckNvbGxlY3Rpb24uaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGRUM4NTM4MUJEQUNEQUMwMDgwRkY3NCAvKiBCM1N3aXRjaENhc2Uu
aCBpbiBIZWFkZXJzICovLApAQCAtNzQxNSw3ICs3NDI4LDYgQEAKIAkJCQlBNzM3ODEwRTE3OTlF
QTJFMDA4MTc1MzMgLyogREZHTmF0dXJhbExvb3BzLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkVD
QTNFQTEzMkRFRjFDMDAyQjJBRDcgLyogREZHTm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZG
QjkyMUIxNkQwMkYwMTAwNTVBNURCIC8qIERGR05vZGVBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICov
LAotCQkJCTcwQjc5MTkzMUMwMjRBMjgwMDI0ODFFMiAvKiBHZW5lcmF0b3JGcmFtZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEZBNTgxQkIxNTBFOTUzMDAwQjlBMkQ5IC8qIERGR05vZGVGbGFncy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEYzMDBCNzgxOEFCMDUxMTAwQTZENzJFIC8qIERGR05vZGVP
cmlnaW4uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQTU4MUJDMTUwRTk1MzAwMEI5QTJEOSAvKiBE
RkdOb2RlVHlwZS5oIGluIEhlYWRlcnMgKi8sCkBAIC03NDMwLDYgKzc0NDIsNyBAQAogCQkJCTBG
RDhBMzI2MTdENTFGNTcwMENBMkM0MCAvKiBERkdPU1JFbnRyeXBvaW50Q3JlYXRpb25QaGFzZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDMDk3NkExNDY4QTZGNzAwQ0YyNDQyIC8qIERGR09TUkV4
aXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjM1QkVDMTcxNzhFNzMwMDY5MEM3RiAvKiBERkdP
U1JFeGl0QmFzZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM5RDQ1RjUxRDM5MDA1NjAwQjNCMzc3
IC8qIEludGVycHJldGVySW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGQjkyMUMxNkQw
MkYxMTAwNTVBNURCIC8qIERGR09TUkV4aXRDb21waWxhdGlvbkluZm8uaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGQzA5NzcxMTQ2OTNBRjUwMENGMjQ0MiAvKiBERkdPU1JFeGl0Q29tcGlsZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGNzAyNUFBMTcxNEIwRkMwMDM4MkMwRSAvKiBERkdPU1JFeGl0
Q29tcGlsZXJDb21tb24uaCBpbiBIZWFkZXJzICovLApAQCAtNzY5MCw2ICs3NzAzLDcgQEAKIAkJ
CQlFMzNCM0UyNjFCN0FCRDc1MDA0OERCMkUgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2Jq
ZWN0Lmx1dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTUzMjQzOEMxODU2ODMzNTAwMkVENjkyIC8q
IEluc3BlY3RvclByb3RvY29sT2JqZWN0cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU1RDkzQUMx
ODUxNEY3OTAwNDAwREVEIC8qIEluc3BlY3RvclByb3RvY29sVHlwZXMuaCBpbiBIZWFkZXJzICov
LAorCQkJCUUzMjhEQUVCMUQzOEQwMDUwMDFBMjUyOSAvKiBCeXRlY29kZU1vZGlmaWNhdGlvblNl
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTUwRTRCNjIxODgwOURENTAwNjhBNDZEIC8qIEluc3Bl
Y3RvclJ1bnRpbWVBZ2VudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU5M0NGODMxODQwMzc3MTAw
QkZDRTI3IC8qIEluc3BlY3RvclZhbHVlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTY5QTA3OTkw
RUQxRDNBRTAwRjFGNjgxIC8qIEluc3RydWN0aW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTc4MjAs
NiArNzgzNCw3IEBACiAJCQkJRTMzRjUwODExQjg0MjlBNDAwNDEzODU2IC8qIEpTSW50ZXJuYWxQ
cm9taXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjYxODMyQTFDNDVCRjA3MDA3MjQ1MEIgLyog
QWlyQ0NhbGxpbmdDb252ZW50aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMzNGNTA3OTFCODQy
MjU3MDA0MTM4NTYgLyogSlNJbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJRTMyOERBRTkxRDM4RDAwNTAwMUEyNTI5IC8qIEJ5dGVjb2RlR3JhcGguaCBpbiBI
ZWFkZXJzICovLAogCQkJCUUzM0Y1MDg3MUI4NDQ5RUYwMDQxMzg1NiAvKiBKU0ludGVybmFsUHJv
bWlzZUNvbnN0cnVjdG9yLmx1dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTMzRjUwODUxQjg0MzdB
MDAwNDEzODU2IC8qIEpTSW50ZXJuYWxQcm9taXNlRGVmZXJyZWQuaCBpbiBIZWFkZXJzICovLAog
CQkJCUUzM0Y1MDc1MUI4NDIxQzAwMDQxMzg1NiAvKiBKU0ludGVybmFsUHJvbWlzZVByb3RvdHlw
ZS5oIGluIEhlYWRlcnMgKi8sCkBAIC04NzYzLDYgKzg3NzgsNyBAQAogCQkJCTE0N0YzOUJEMTA3
RUMzNzYwMDQyN0E0OCAvKiBBcmdMaXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNzQzQkFB
MTZCODgyNDkwMDlGOTI3NyAvKiBBUk02NERpc2Fzc2VtYmxlci5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk4NkQzQjJDMzEwMTU2QkRFMDAyODY1RTcgLyogQVJNQXNzZW1ibGVyLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCUUzMjhEQUU3MUQzOEQwMDQwMDFBMjUyOSAvKiBCeXRlY29kZUdlbmVyYXRv
cmlmaWNhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2NUMwMjg1MDE3MTc5NUUyMDAzNTFF
MzUgLyogQVJNdjdEaXNhc3NlbWJsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNjVDMDI4NUMx
NzE3OTY2ODAwMzUxRTM1IC8qIEFSTXY3RE9wY29kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkw
RjgzMzVCNzE2MzlDMUU2MDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAgaW4g
U291cmNlcyAqLywKQEAgLTkwOTcsNiArOTExMyw3IEBACiAJCQkJMEYyNUYxQjExODE2MzVGMzAw
NTIyRjM5IC8qIEZUTFNsb3dQYXRoQ2FsbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjMzOERG
MTFCRTkzQUQxMDAxM0M4OEYgLyogQjNTdGFja21hcFZhbHVlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTBGMjVGMUIzMTgxNjM1RjMwMDUyMkYzOSAvKiBGVExTbG93UGF0aENhbGxLZXkuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJRTMyOERBRUExRDM4RDAwNTAwMUEyNTI5IC8qIEJ5dGVjb2RlTW9k
aWZpY2F0aW9uU2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQzMTlEQTAzMUMxQkU0MEEwMDFE
MjYwQiAvKiBCM0xvd2VyTWFjcm9zQWZ0ZXJPcHRpbWl6YXRpb25zLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGRUEwQTE2MTcwNkJCOTAwMEJCNzIyQyAvKiBGVExTdGF0ZS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkwRjIzNUJFMTE3MTc4RTFDMDA2OTBDN0YgLyogRlRMVGh1bmtzLmNwcCBpbiBT
b3VyY2VzICovLApAQCAtOTUwNCw3ICs5NTIxLDYgQEAKIAkJCQk3OUVFMEJGRjFCNEFGQjg1MDAw
Mzg1QzkgLyogVmFyaWFibGVFbnZpcm9ubWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjZD
NzM1MDFBQzlGOTlGMDBCRTE2ODIgLyogVmFyaWFibGVXcml0ZUZpcmVEZXRhaWwuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEZFMDUwMkMxQUE5MDk1NjAwRDMzQjMzIC8qIFZhck9mZnNldC5jcHAg
aW4gU291cmNlcyAqLywKLQkJCQk3MEI3OTE5MjFDMDI0QTIzMDAyNDgxRTIgLyogR2VuZXJhdG9y
RnJhbWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyMEMyNTkxQTgwMTNBQjAwREEzMjI5IC8q
IFZpcnR1YWxSZWdpc3Rlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMThFM0E1OTBERjkyNzhD
MDBEOTBCMzQgLyogVk0uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkU1OTMyQTcxODNDNUEyNjAw
QTFFQ0NDIC8qIFZNRW50cnlTY29wZS5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9HZW5lcmF0b3JQcm90b3R5cGUuanMgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvR2VuZXJhdG9yUHJvdG90eXBlLmpzCmluZGV4IDNj
MTQwNjg3ZGZjN2UwMGVmZTkxYWU4MGIyYWM2NzZmYTliZjQ4ZjQuLjQ5OWRiZDM5MmU4MzEzZGNk
ZDg2ZWM4YzE2MDU2OWQ3ZDZmNTQ5YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9idWlsdGlucy9HZW5lcmF0b3JQcm90b3R5cGUuanMKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J1aWx0aW5zL0dlbmVyYXRvclByb3RvdHlwZS5qcwpAQCAtNTEsNyArNTEsNyBAQCBmdW5j
dGlvbiBnZW5lcmF0b3JSZXN1bWUoZ2VuZXJhdG9yLCBzZW50VmFsdWUsIHJlc3VtZU1vZGUpCiAg
ICAgfSBlbHNlIHsKICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgIGdlbmVyYXRvci5AZ2VuZXJh
dG9yU3RhdGUgPSBAR2VuZXJhdG9yU3RhdGVFeGVjdXRpbmc7Ci0gICAgICAgICAgICB2YWx1ZSA9
IGdlbmVyYXRvci5AZ2VuZXJhdG9yTmV4dC5AY2FsbChnZW5lcmF0b3IuQGdlbmVyYXRvclRoaXMs
IGdlbmVyYXRvciwgc3RhdGUsIHNlbnRWYWx1ZSwgcmVzdW1lTW9kZSk7CisgICAgICAgICAgICB2
YWx1ZSA9IGdlbmVyYXRvci5AZ2VuZXJhdG9yTmV4dC5AY2FsbChnZW5lcmF0b3IuQGdlbmVyYXRv
clRoaXMsIGdlbmVyYXRvciwgc3RhdGUsIHNlbnRWYWx1ZSwgcmVzdW1lTW9kZSwgZ2VuZXJhdG9y
LkBnZW5lcmF0b3JGcmFtZSk7CiAgICAgICAgICAgICBpZiAoZ2VuZXJhdG9yLkBnZW5lcmF0b3JT
dGF0ZSA9PT0gQEdlbmVyYXRvclN0YXRlRXhlY3V0aW5nKSB7CiAgICAgICAgICAgICAgICAgZ2Vu
ZXJhdG9yLkBnZW5lcmF0b3JTdGF0ZSA9IEBHZW5lcmF0b3JTdGF0ZUNvbXBsZXRlZDsKICAgICAg
ICAgICAgICAgICBkb25lID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5jcHAKaW5kZXggN2YxN2MwZWYxMGI0MzNmYWM4
ZjU4Y2IzYjljYTVkNGQwMTViYmEwOC4uMjk5MDgyZGRkMWVjN2VjZmY3YTZjMTk4M2MxZWRhYmRl
NTNiY2MzZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVj
b2RlQmFzaWNCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlQmFzaWNCbG9jay5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJCeXRlY29k
ZUJhc2ljQmxvY2suaCIKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkludGVy
cHJldGVySW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJQcmVj
aXNlSnVtcFRhcmdldHMuaCIKIApAQCAtMTA1LDE1ICsxMDYsMjEgQEAgc3RhdGljIGJvb2wgaXNK
dW1wVGFyZ2V0KE9wY29kZUlEIG9wY29kZUlELCBjb25zdCBWZWN0b3I8dW5zaWduZWQsIDMyPiYg
anVtcFRhcmcKICAgICByZXR1cm4gc3RkOjpiaW5hcnlfc2VhcmNoKGp1bXBUYXJnZXRzLmJlZ2lu
KCksIGp1bXBUYXJnZXRzLmVuZCgpLCBieXRlY29kZU9mZnNldCk7CiB9CiAKLXN0YXRpYyB2b2lk
IGxpbmtCbG9ja3MoQnl0ZWNvZGVCYXNpY0Jsb2NrKiBwcmVkZWNlc3NvciwgQnl0ZWNvZGVCYXNp
Y0Jsb2NrKiBzdWNjZXNzb3IpCi17Ci0gICAgcHJlZGVjZXNzb3ItPmFkZFN1Y2Nlc3NvcihzdWNj
ZXNzb3IpOwotfQotCi12b2lkIGNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzKENvZGVCbG9jayog
Y29kZUJsb2NrLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+JiBi
YXNpY0Jsb2NrcykKK3RlbXBsYXRlPHR5cGVuYW1lIEJsb2NrLCB0eXBlbmFtZSBJbnN0cnVjdGlv
bj4KK3ZvaWQgQnl0ZWNvZGVCYXNpY0Jsb2NrOjpjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2Nrc0lu
dGVybmFsKEJsb2NrKiBjb2RlQmxvY2ssIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwg
dW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCwgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29k
ZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9ja3MpCiB7CiAgICAgVmVjdG9yPHVuc2lnbmVkLCAzMj4g
anVtcFRhcmdldHM7Ci0gICAgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhjb2RlQmxvY2ssIGp1
bXBUYXJnZXRzKTsKKyAgICBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKGNvZGVCbG9jaywgaW5z
dHJ1Y3Rpb25zQmVnaW4sIGluc3RydWN0aW9uQ291bnQsIGp1bXBUYXJnZXRzKTsKKworICAgIGF1
dG8gYXBwZW5kQmxvY2sgPSBbJl0gKHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+
JiYgYmxvY2spIHsKKyAgICAgICAgYmxvY2stPm1faW5kZXggPSBiYXNpY0Jsb2Nrcy5zaXplKCk7
CisgICAgICAgIGJhc2ljQmxvY2tzLmFwcGVuZChXVEZNb3ZlKGJsb2NrKSk7CisgICAgfTsKKwor
ICAgIGF1dG8gbGlua0Jsb2NrcyA9IFsmXSAoQnl0ZWNvZGVCYXNpY0Jsb2NrKiBmcm9tLCBCeXRl
Y29kZUJhc2ljQmxvY2sqIHRvKSB7CisgICAgICAgIGZyb20tPmFkZFN1Y2Nlc3Nvcih0byk7Cisg
ICAgICAgIHRvLT5hZGRQcmVkZWNlc3Nvcihmcm9tKTsKKyAgICB9OwogCiAgICAgLy8gQ3JlYXRl
IHRoZSBlbnRyeSBhbmQgZXhpdCBiYXNpYyBibG9ja3MuCiAgICAgYmFzaWNCbG9ja3MucmVzZXJ2
ZUNhcGFjaXR5KGp1bXBUYXJnZXRzLnNpemUoKSArIDIpOwpAQCAtMTIyLDE5ICsxMjksMTcgQEAg
dm9pZCBjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2NrcyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgVmVj
dG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXQKICAgICBhdXRvIGZpcnN0QmxvY2sgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEJ5dGVjb2RlQmFzaWNCbG9jaz4oMCwgMCk7CiAgICAgbGlua0Jsb2NrcyhlbnRyeS5n
ZXQoKSwgZmlyc3RCbG9jay5nZXQoKSk7CiAKLSAgICBiYXNpY0Jsb2Nrcy5hcHBlbmQoV1RGTW92
ZShlbnRyeSkpOworICAgIGFwcGVuZEJsb2NrKFdURk1vdmUoZW50cnkpKTsKICAgICBCeXRlY29k
ZUJhc2ljQmxvY2sqIGN1cnJlbnQgPSBmaXJzdEJsb2NrLmdldCgpOwotICAgIGJhc2ljQmxvY2tz
LmFwcGVuZChXVEZNb3ZlKGZpcnN0QmxvY2spKTsKKyAgICBhcHBlbmRCbG9jayhXVEZNb3ZlKGZp
cnN0QmxvY2spKTsKIAogICAgIGF1dG8gZXhpdCA9IHN0ZDo6bWFrZV91bmlxdWU8Qnl0ZWNvZGVC
YXNpY0Jsb2NrPihCeXRlY29kZUJhc2ljQmxvY2s6OkV4aXRCbG9jayk7CiAKICAgICBib29sIG5l
eHRJbnN0cnVjdGlvbklzTGVhZGVyID0gZmFsc2U7CiAKICAgICBJbnRlcnByZXRlciogaW50ZXJw
cmV0ZXIgPSBjb2RlQmxvY2stPnZtKCktPmludGVycHJldGVyOwotICAgIEluc3RydWN0aW9uKiBp
bnN0cnVjdGlvbnNCZWdpbiA9IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsKLSAg
ICB1bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50ID0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5z
aXplKCk7CiAgICAgZm9yICh1bnNpZ25lZCBieXRlY29kZU9mZnNldCA9IDA7IGJ5dGVjb2RlT2Zm
c2V0IDwgaW5zdHJ1Y3Rpb25Db3VudDspIHsKLSAgICAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBp
bnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25zQmVnaW5bYnl0ZWNvZGVPZmZzZXRd
LnUub3Bjb2RlKTsKKyAgICAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnRlcnByZXRlci0+Z2V0
T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25zQmVnaW5bYnl0ZWNvZGVPZmZzZXRdKTsKICAgICAgICAgdW5z
aWduZWQgb3Bjb2RlTGVuZ3RoID0gb3Bjb2RlTGVuZ3Roc1tvcGNvZGVJRF07CiAKICAgICAgICAg
Ym9vbCBjcmVhdGVkQmxvY2sgPSBmYWxzZTsKQEAgLTE0Miw3ICsxNDcsNyBAQCB2b2lkIGNvbXB1
dGVCeXRlY29kZUJhc2ljQmxvY2tzKENvZGVCbG9jayogY29kZUJsb2NrLCBWZWN0b3I8c3RkOjp1
bmlxdWVfcHRyPEJ5dAogICAgICAgICBpZiAoaXNKdW1wVGFyZ2V0KG9wY29kZUlELCBqdW1wVGFy
Z2V0cywgYnl0ZWNvZGVPZmZzZXQpIHx8IG5leHRJbnN0cnVjdGlvbklzTGVhZGVyKSB7CiAgICAg
ICAgICAgICBhdXRvIG5ld0Jsb2NrID0gc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZUJhc2ljQmxv
Y2s+KGJ5dGVjb2RlT2Zmc2V0LCBvcGNvZGVMZW5ndGgpOwogICAgICAgICAgICAgY3VycmVudCA9
IG5ld0Jsb2NrLmdldCgpOwotICAgICAgICAgICAgYmFzaWNCbG9ja3MuYXBwZW5kKFdURk1vdmUo
bmV3QmxvY2spKTsKKyAgICAgICAgICAgIGFwcGVuZEJsb2NrKFdURk1vdmUobmV3QmxvY2spKTsK
ICAgICAgICAgICAgIGNyZWF0ZWRCbG9jayA9IHRydWU7CiAgICAgICAgICAgICBuZXh0SW5zdHJ1
Y3Rpb25Jc0xlYWRlciA9IGZhbHNlOwogICAgICAgICAgICAgYnl0ZWNvZGVPZmZzZXQgKz0gb3Bj
b2RlTGVuZ3RoOwpAQCAtMTY5LDggKzE3NCw3IEBAIHZvaWQgY29tcHV0ZUJ5dGVjb2RlQmFzaWNC
bG9ja3MoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0CiAK
ICAgICAgICAgYm9vbCBmYWxsc1Rocm91Z2ggPSB0cnVlOyAKICAgICAgICAgZm9yICh1bnNpZ25l
ZCBieXRlY29kZU9mZnNldCA9IGJsb2NrLT5sZWFkZXJCeXRlY29kZU9mZnNldCgpOyBieXRlY29k
ZU9mZnNldCA8IGJsb2NrLT5sZWFkZXJCeXRlY29kZU9mZnNldCgpICsgYmxvY2stPnRvdGFsQnl0
ZWNvZGVMZW5ndGgoKTspIHsKLSAgICAgICAgICAgIGNvbnN0IEluc3RydWN0aW9uJiBjdXJyZW50
SW5zdHJ1Y3Rpb24gPSBpbnN0cnVjdGlvbnNCZWdpbltieXRlY29kZU9mZnNldF07Ci0gICAgICAg
ICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGludGVycHJldGVyLT5nZXRPcGNvZGVJRChjdXJyZW50
SW5zdHJ1Y3Rpb24udS5vcGNvZGUpOworICAgICAgICAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBp
bnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25zQmVnaW5bYnl0ZWNvZGVPZmZzZXRd
KTsKICAgICAgICAgICAgIHVuc2lnbmVkIG9wY29kZUxlbmd0aCA9IG9wY29kZUxlbmd0aHNbb3Bj
b2RlSURdOwogICAgICAgICAgICAgLy8gSWYgd2UgZm91bmQgYSB0ZXJtaW5hbCBieXRlY29kZSwg
bGluayB0byB0aGUgZXhpdCBibG9jay4KICAgICAgICAgICAgIGlmIChpc1Rlcm1pbmFsKG9wY29k
ZUlEKSkgewpAQCAtMTg1LDcgKzE4OSw3IEBAIHZvaWQgY29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9j
a3MoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0CiAgICAg
ICAgICAgICAvLyBibG9jayBiZWNhdXNlIHRoZSBmaW5hbGx5IGJsb2NrIHdpbGwgY3JlYXRlIGl0
cyBvd24gY2F0Y2gsIHdoaWNoIHdpbGwgZ2VuZXJhdGUgYSBIYW5kbGVySW5mby4KICAgICAgICAg
ICAgIGlmIChpc1Rocm93KG9wY29kZUlEKSkgewogICAgICAgICAgICAgICAgIEFTU0VSVChieXRl
Y29kZU9mZnNldCArIG9wY29kZUxlbmd0aCA9PSBibG9jay0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQo
KSArIGJsb2NrLT50b3RhbEJ5dGVjb2RlTGVuZ3RoKCkpOwotICAgICAgICAgICAgICAgIEhhbmRs
ZXJJbmZvKiBoYW5kbGVyID0gY29kZUJsb2NrLT5oYW5kbGVyRm9yQnl0ZWNvZGVPZmZzZXQoYnl0
ZWNvZGVPZmZzZXQpOworICAgICAgICAgICAgICAgIGF1dG8qIGhhbmRsZXIgPSBjb2RlQmxvY2st
PmhhbmRsZXJGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCk7CiAgICAgICAgICAgICAg
ICAgZmFsbHNUaHJvdWdoID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgaWYgKCFoYW5kbGVyKSB7
CiAgICAgICAgICAgICAgICAgICAgIGxpbmtCbG9ja3MoYmxvY2ssIGV4aXQuZ2V0KCkpOwpAQCAt
MjA1LDcgKzIwOSw3IEBAIHZvaWQgY29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MoQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0CiAgICAgICAgICAgICBpZiAo
aXNCcmFuY2gob3Bjb2RlSUQpKSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKGJ5dGVjb2RlT2Zm
c2V0ICsgb3Bjb2RlTGVuZ3RoID09IGJsb2NrLT5sZWFkZXJCeXRlY29kZU9mZnNldCgpICsgYmxv
Y2stPnRvdGFsQnl0ZWNvZGVMZW5ndGgoKSk7CiAgICAgICAgICAgICAgICAgVmVjdG9yPHVuc2ln
bmVkLCAxPiBieXRlY29kZU9mZnNldHNKdW1wZWRUbzsKLSAgICAgICAgICAgICAgICBmaW5kSnVt
cFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChjb2RlQmxvY2ssIGJ5dGVjb2RlT2Zmc2V0LCBieXRl
Y29kZU9mZnNldHNKdW1wZWRUbyk7CisgICAgICAgICAgICAgICAgZmluZEp1bXBUYXJnZXRzRm9y
Qnl0ZWNvZGVPZmZzZXQoY29kZUJsb2NrLCBpbnN0cnVjdGlvbnNCZWdpbiwgYnl0ZWNvZGVPZmZz
ZXQsIGJ5dGVjb2RlT2Zmc2V0c0p1bXBlZFRvKTsKIAogICAgICAgICAgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBiYXNpY0Jsb2Nrcy5zaXplKCk7IGkrKykgewogICAgICAgICAgICAg
ICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIG90aGVyQmxvY2sgPSBiYXNpY0Jsb2Nrc1tpXS5n
ZXQoKTsKQEAgLTIyOSwxMCArMjMzLDIwIEBAIHZvaWQgY29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9j
a3MoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0CiAgICAg
ICAgIH0KICAgICB9CiAKLSAgICBiYXNpY0Jsb2Nrcy5hcHBlbmQoV1RGTW92ZShleGl0KSk7Cisg
ICAgYXBwZW5kQmxvY2soV1RGTW92ZShleGl0KSk7CiAgICAgCiAgICAgZm9yIChhdXRvJiBiYXNp
Y0Jsb2NrIDogYmFzaWNCbG9ja3MpCiAgICAgICAgIGJhc2ljQmxvY2stPnNocmlua1RvRml0KCk7
CiB9CiAKK3ZvaWQgQnl0ZWNvZGVCYXNpY0Jsb2NrOjpjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2Nr
cyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1
bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50LCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2Rl
QmFzaWNCbG9jaz4+JiBiYXNpY0Jsb2NrcykKK3sKKyAgICBjb21wdXRlQnl0ZWNvZGVCYXNpY0Js
b2Nrc0ludGVybmFsKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb25zQmVnaW4sIGluc3RydWN0aW9uQ291
bnQsIGJhc2ljQmxvY2tzKTsKK30KKwordm9pZCBCeXRlY29kZUJhc2ljQmxvY2s6OmNvbXB1dGVC
eXRlY29kZUJhc2ljQmxvY2tzKFVubGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFVubGlua2Vk
SW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50
LCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+JiBiYXNpY0Jsb2Nr
cykKK3sKKyAgICBCeXRlY29kZUJhc2ljQmxvY2s6OmNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tz
SW50ZXJuYWwoY29kZUJsb2NrLCBpbnN0cnVjdGlvbnNCZWdpbiwgaW5zdHJ1Y3Rpb25Db3VudCwg
YmFzaWNCbG9ja3MpOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suaAppbmRleCBiZDdkM2Fl
OWJhMzQzZTFiMDcxNzllOThmMWVlODlkYTY1YmE3ZTIwLi4xMTliZTdjNjYyMzBjOThlYTlkN2Zi
MjgwOGNiZjI5NGRjMWEyYTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5oCkBAIC0zNSw2ICszNSw5IEBACiBuYW1lc3BhY2Ug
SlNDIHsKIAogY2xhc3MgQ29kZUJsb2NrOworY2xhc3MgVW5saW5rZWRDb2RlQmxvY2s7CitzdHJ1
Y3QgSW5zdHJ1Y3Rpb247CitzdHJ1Y3QgVW5saW5rZWRJbnN0cnVjdGlvbjsKIAogY2xhc3MgQnl0
ZWNvZGVCYXNpY0Jsb2NrIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTUwLDI4
ICs1MywzOSBAQCBjbGFzcyBCeXRlY29kZUJhc2ljQmxvY2sgewogICAgIHVuc2lnbmVkIGxlYWRl
ckJ5dGVjb2RlT2Zmc2V0KCkgeyByZXR1cm4gbV9sZWFkZXJCeXRlY29kZU9mZnNldDsgfQogICAg
IHVuc2lnbmVkIHRvdGFsQnl0ZWNvZGVMZW5ndGgoKSB7IHJldHVybiBtX3RvdGFsQnl0ZWNvZGVM
ZW5ndGg7IH0KIAotICAgIFZlY3Rvcjx1bnNpZ25lZD4mIGJ5dGVjb2RlT2Zmc2V0cygpIHsgcmV0
dXJuIG1fYnl0ZWNvZGVPZmZzZXRzOyB9Ci0gICAgdm9pZCBhZGRCeXRlY29kZUxlbmd0aCh1bnNp
Z25lZCk7CisgICAgY29uc3QgVmVjdG9yPHVuc2lnbmVkPiYgYnl0ZWNvZGVPZmZzZXRzKCkgY29u
c3QgeyByZXR1cm4gbV9ieXRlY29kZU9mZnNldHM7IH0KIAotICAgIFZlY3RvcjxCeXRlY29kZUJh
c2ljQmxvY2sqPiYgc3VjY2Vzc29ycygpIHsgcmV0dXJuIG1fc3VjY2Vzc29yczsgfQotICAgIHZv
aWQgYWRkU3VjY2Vzc29yKEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2spIHsgbV9zdWNjZXNzb3Jz
LmFwcGVuZChibG9jayk7IH0KKyAgICBjb25zdCBWZWN0b3I8Qnl0ZWNvZGVCYXNpY0Jsb2NrKj4m
IHN1Y2Nlc3NvcnMoKSBjb25zdCB7IHJldHVybiBtX3N1Y2Nlc3NvcnM7IH0KKyAgICBjb25zdCBW
ZWN0b3I8Qnl0ZWNvZGVCYXNpY0Jsb2NrKj4mIHByZWRlY2Vzc29ycygpIGNvbnN0IHsgcmV0dXJu
IG1fcHJlZGVjZXNzb3JzOyB9CiAKICAgICBGYXN0Qml0VmVjdG9yJiBpbigpIHsgcmV0dXJuIG1f
aW47IH0KICAgICBGYXN0Qml0VmVjdG9yJiBvdXQoKSB7IHJldHVybiBtX291dDsgfQogCisgICAg
dW5zaWduZWQgaW5kZXgoKSBjb25zdCB7IHJldHVybiBtX2luZGV4OyB9CisKKyAgICBzdGF0aWMg
dm9pZCBjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2NrcyhDb2RlQmxvY2sqLCBJbnN0cnVjdGlvbiog
aW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQsIFZlY3RvcjxzdGQ6
OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mKTsKKyAgICBzdGF0aWMgdm9pZCBjb21w
dXRlQnl0ZWNvZGVCYXNpY0Jsb2NrcyhVbmxpbmtlZENvZGVCbG9jayosIFVubGlua2VkSW5zdHJ1
Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50LCBWZWN0
b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+Jik7CisKIHByaXZhdGU6Cisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgQmxvY2ssIHR5cGVuYW1lIEluc3RydWN0aW9uPiBzdGF0aWMg
dm9pZCBjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2Nrc0ludGVybmFsKEJsb2NrKiBjb2RlQmxvY2ss
IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3Vu
dCwgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9j
a3MpOworCisgICAgdm9pZCBhZGRTdWNjZXNzb3IoQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaykg
eyBtX3N1Y2Nlc3NvcnMuYXBwZW5kKGJsb2NrKTsgfQorICAgIHZvaWQgYWRkUHJlZGVjZXNzb3Io
Qnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaykgeyBtX3ByZWRlY2Vzc29ycy5hcHBlbmQoYmxvY2sp
OyB9CisKKyAgICB2b2lkIGFkZEJ5dGVjb2RlTGVuZ3RoKHVuc2lnbmVkKTsKKwogICAgIHVuc2ln
bmVkIG1fbGVhZGVyQnl0ZWNvZGVPZmZzZXQ7CiAgICAgdW5zaWduZWQgbV90b3RhbEJ5dGVjb2Rl
TGVuZ3RoOworICAgIHVuc2lnbmVkIG1faW5kZXg7CiAKICAgICBWZWN0b3I8dW5zaWduZWQ+IG1f
Ynl0ZWNvZGVPZmZzZXRzOwogICAgIFZlY3RvcjxCeXRlY29kZUJhc2ljQmxvY2sqPiBtX3N1Y2Nl
c3NvcnM7CisgICAgVmVjdG9yPEJ5dGVjb2RlQmFzaWNCbG9jayo+IG1fcHJlZGVjZXNzb3JzOwog
CiAgICAgRmFzdEJpdFZlY3RvciBtX2luOwogICAgIEZhc3RCaXRWZWN0b3IgbV9vdXQ7CiB9Owog
Ci12b2lkIGNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzKENvZGVCbG9jayosIFZlY3RvcjxzdGQ6
OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mKTsKLQogaW5saW5lIEJ5dGVjb2RlQmFz
aWNCbG9jazo6Qnl0ZWNvZGVCYXNpY0Jsb2NrKHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBsZW5n
dGgpCiAgICAgOiBtX2xlYWRlckJ5dGVjb2RlT2Zmc2V0KHN0YXJ0KQogICAgICwgbV90b3RhbEJ5
dGVjb2RlTGVuZ3RoKGxlbmd0aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjQ5ZDk0MWFlYjY4Y2E1Y2JmMWZmYzNkMDdjOTFjNDM2OTAxYjBhNDkKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmlj
YXRpb24uY3BwCkBAIC0wLDAgKzEsNjM5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IFl1
c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIkJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmgiCisKKyNp
bmNsdWRlICJCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNJbmxpbmVzLmgiCisjaW5jbHVkZSAiQnl0
ZWNvZGVNb2RpZmljYXRpb25TZXQuaCIKKyNpbmNsdWRlICJCeXRlY29kZVVzZURlZi5oIgorI2lu
Y2x1ZGUgIklkZW50aWZpZXJJbmxpbmVzLmgiCisjaW5jbHVkZSAiSW50ZXJwcmV0ZXJJbmxpbmVz
LmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRlICJKU0dlbmVyYXRv
ckZ1bmN0aW9uLmgiCisjaW5jbHVkZSAiU3Ryb25nSW5saW5lcy5oIgorI2luY2x1ZGUgIlVubGlu
a2VkQ29kZUJsb2NrLmgiCisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CisKK25hbWVzcGFjZSBK
U0MgeworCitzdHJ1Y3QgWWllbGREYXRhIHsKKyAgICBzaXplX3Qgc2F2ZVBvaW50OworICAgIHNp
emVfdCBtZXJnZVBvaW50OworICAgIHNpemVfdCByZXN1bWVQb2ludDsKKyAgICBGYXN0Qml0VmVj
dG9yIGxpdmVuZXNzOworICAgIEZhc3RCaXRWZWN0b3IgcmVzdW1lZDsKKyAgICBGYXN0Qml0VmVj
dG9yIHNhdmVkOworfTsKKworY2xhc3MgQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24geworcHVi
bGljOgorICAgIHR5cGVkZWYgVmVjdG9yPFlpZWxkRGF0YT4gWWllbGRzOworCisgICAgQnl0ZWNv
ZGVHZW5lcmF0b3JpZmljYXRpb24oVW5saW5rZWRDb2RlQmxvY2sqIGNvZGVCbG9jaywgVW5saW5r
ZWRDb2RlQmxvY2s6OlVucGFja2VkSW5zdHJ1Y3Rpb25zJiBpbnN0cnVjdGlvbnMsIFN5bWJvbFRh
YmxlKiBnZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlLCBpbnQgZ2VuZXJhdG9yRnJhbWVTeW1ib2xU
YWJsZUluZGV4KQorICAgICAgICA6IG1fZ3JhcGgoY29kZUJsb2NrLCBpbnN0cnVjdGlvbnMpCisg
ICAgICAgICwgbV9pbnNlcnRpb25TZXQobV9ncmFwaCkKKyAgICAgICAgLCBtX2dlbmVyYXRvckZy
YW1lU3ltYm9sVGFibGUoKmNvZGVCbG9jay0+dm0oKSwgZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJs
ZSkKKyAgICAgICAgLCBtX2dlbmVyYXRvckZyYW1lU3ltYm9sVGFibGVJbmRleChnZW5lcmF0b3JG
cmFtZVN5bWJvbFRhYmxlSW5kZXgpCisgICAgeworICAgICAgICBtX21lcmdlQmxvY2tzLnJlc2l6
ZShtX2dyYXBoLmJhc2ljQmxvY2tzKCkuc2l6ZSgpKTsKKyAgICAgICAgbV9zYXZlQmxvY2tzLnJl
c2l6ZShtX2dyYXBoLmJhc2ljQmxvY2tzKCkuc2l6ZSgpKTsKKworICAgICAgICBmb3IgKHN0ZDo6
dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+JiBibG9jayA6IG1fZ3JhcGguYmFzaWNCbG9j
a3MoKSkgeworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBieXRlY29kZU9mZnNldCA6IGJsb2Nr
LT5ieXRlY29kZU9mZnNldHMoKSkgeworICAgICAgICAgICAgICAgIGNvbnN0IFVubGlua2VkSW5z
dHJ1Y3Rpb24qIHBjID0gJm1fZ3JhcGguaW5zdHJ1Y3Rpb25zKClbYnl0ZWNvZGVPZmZzZXRdOwor
ICAgICAgICAgICAgICAgIHN3aXRjaCAocGMtPnUub3Bjb2RlKSB7CisgICAgICAgICAgICAgICAg
Y2FzZSBvcF9zYXZlOiB7CisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxpdmVDYWxsZWVM
b2NhbHNJbmRleCA9IHBjWzJdLnUuaW5kZXg7CisgICAgICAgICAgICAgICAgICAgIGludCBvZmZz
ZXQgPSBwY1szXS51Lm9wZXJhbmQ7CisgICAgICAgICAgICAgICAgICAgIGlmIChsaXZlQ2FsbGVl
TG9jYWxzSW5kZXggPj0gbV95aWVsZHMuc2l6ZSgpKQorICAgICAgICAgICAgICAgICAgICAgICAg
bV95aWVsZHMucmVzaXplKGxpdmVDYWxsZWVMb2NhbHNJbmRleCArIDEpOworICAgICAgICAgICAg
ICAgICAgICBtX3lpZWxkc1tsaXZlQ2FsbGVlTG9jYWxzSW5kZXhdLnNhdmVQb2ludCA9IGJ5dGVj
b2RlT2Zmc2V0OworICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBtZXJnZVBvaW50ID0gYnl0
ZWNvZGVPZmZzZXQgKyBvZmZzZXQ7CisgICAgICAgICAgICAgICAgICAgIG1feWllbGRzW2xpdmVD
YWxsZWVMb2NhbHNJbmRleF0ubWVyZ2VQb2ludCA9IG1lcmdlUG9pbnQ7CisgICAgICAgICAgICAg
ICAgICAgIG1fbWVyZ2VCbG9ja3Muc2V0KG1fZ3JhcGguZmluZEJhc2ljQmxvY2tGb3JCeXRlY29k
ZU9mZnNldChtZXJnZVBvaW50KS0+aW5kZXgoKSk7CisgICAgICAgICAgICAgICAgICAgIG1fc2F2
ZUJsb2Nrcy5zZXQoYmxvY2stPmluZGV4KCkpOworICAgICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBjYXNlIG9wX3Jlc3VtZTogewor
ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSBwY1sy
XS51LmluZGV4OworICAgICAgICAgICAgICAgICAgICBpZiAobGl2ZUNhbGxlZUxvY2Fsc0luZGV4
ID49IG1feWllbGRzLnNpemUoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIG1feWllbGRzLnJl
c2l6ZShsaXZlQ2FsbGVlTG9jYWxzSW5kZXggKyAxKTsKKyAgICAgICAgICAgICAgICAgICAgbV95
aWVsZHNbbGl2ZUNhbGxlZUxvY2Fsc0luZGV4XS5yZXN1bWVQb2ludCA9IGJ5dGVjb2RlT2Zmc2V0
OworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBib29sIGlz
TWVyZ2VCbG9jayhCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIG1fbWVyZ2VCbG9ja3MuZ2V0KGJsb2NrLT5pbmRleCgpKTsKKyAgICB9CisKKyAgICBib29s
IGlzU2F2ZUJsb2NrKEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2spCisgICAgeworICAgICAgICBy
ZXR1cm4gbV9zYXZlQmxvY2tzLmdldChibG9jay0+aW5kZXgoKSk7CisgICAgfQorCisgICAgc3Ry
dWN0IFN0b3JhZ2UgeworICAgICAgICBJZGVudGlmaWVyIGlkZW50aWZpZXI7CisgICAgICAgIHVu
c2lnbmVkIGlkZW50aWZpZXJJbmRleDsKKyAgICAgICAgU2NvcGVPZmZzZXQgc2NvcGVPZmZzZXQ7
CisgICAgfTsKKworICAgIHZvaWQgcnVuKCk7CisKKyAgICBCeXRlY29kZUdyYXBoPFVubGlua2Vk
Q29kZUJsb2NrPiYgZ3JhcGgoKSB7IHJldHVybiBtX2dyYXBoOyB9CisKKyAgICBjb25zdCBZaWVs
ZHMmIHlpZWxkcygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV95aWVsZHM7CisgICAg
fQorCisgICAgWWllbGRzJiB5aWVsZHMoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1feWllbGRz
OworICAgIH0KKworcHJpdmF0ZToKKyAgICBTdG9yYWdlIHN0b3JhZ2VGb3JHZW5lcmF0b3JMb2Nh
bCh1bnNpZ25lZCBpbmRleCkKKyAgICB7CisgICAgICAgIC8vIFdlIGFzc2lnbiBhIHN5bWJvbCB0
byBhIHJlZ2lzdGVyLiBUaGVyZSBpcyBvbmUtb24tb25lIGNvcnJlc3BvbmRpbmcgYmV0d2VlbiBh
IHJlZ2lzdGVyIGFuZCBhIHN5bWJvbC4KKyAgICAgICAgLy8gQnkgZG9pbmcgc28sIHdlIGFsbG9j
YXRlIHRoZSBzcGVjaWZpYyBzdG9yYWdlIHRvIHNhdmUgdGhlIGdpdmVuIHJlZ2lzdGVyLgorICAg
ICAgICAvLyBUaGlzIGFsbG93IHVzIG5vdCB0byBzYXZlIGFsbCB0aGUgbGl2ZSByZWdpc3RlcnMg
ZXZlbiBpZiB0aGUgcmVnaXN0ZXJzIGFyZSBub3Qgb3ZlcndyaXR0ZW4gZnJvbSB0aGUgcHJldmlv
dXMgcmVzdW1pbmcgdGltZS4KKyAgICAgICAgLy8gSXQgbWVhbnMgdGhhdCwgdGhlIHJlZ2lzdGVy
IGNhbiBiZSByZXRyaWV2ZWQgZXZlbiBpZiB0aGUgaW1tZWRpYXRlIHByZXZpb3VzIG9wX3NhdmUg
ZG9lcyBub3Qgc2F2ZSBpdC4KKworICAgICAgICBpZiAobV9zdG9yYWdlcy5zaXplKCkgPD0gaW5k
ZXgpCisgICAgICAgICAgICBtX3N0b3JhZ2VzLnJlc2l6ZShpbmRleCArIDEpOworICAgICAgICBp
ZiAoT3B0aW9uYWw8U3RvcmFnZT4gc3RvcmFnZSA9IG1fc3RvcmFnZXNbaW5kZXhdKQorICAgICAg
ICAgICAgcmV0dXJuICpzdG9yYWdlOworCisgICAgICAgIFVubGlua2VkQ29kZUJsb2NrKiBjb2Rl
QmxvY2sgPSBtX2dyYXBoLmNvZGVCbG9jaygpOworICAgICAgICBJZGVudGlmaWVyIGlkZW50aWZp
ZXIgPSBJZGVudGlmaWVyOjpmcm9tVWlkKFByaXZhdGVOYW1lKCkpOworICAgICAgICB1bnNpZ25l
ZCBpZGVudGlmaWVySW5kZXggPSBjb2RlQmxvY2stPm51bWJlck9mSWRlbnRpZmllcnMoKTsKKyAg
ICAgICAgY29kZUJsb2NrLT5hZGRJZGVudGlmaWVyKGlkZW50aWZpZXIpOworICAgICAgICBTY29w
ZU9mZnNldCBzY29wZU9mZnNldCA9IG1fZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZS0+dGFrZU5l
eHRTY29wZU9mZnNldChOb0xvY2tpbmdOZWNlc3NhcnkpOworICAgICAgICBtX2dlbmVyYXRvckZy
YW1lU3ltYm9sVGFibGUtPnNldChOb0xvY2tpbmdOZWNlc3NhcnksIGlkZW50aWZpZXIuaW1wbCgp
LCBTeW1ib2xUYWJsZUVudHJ5KFZhck9mZnNldChzY29wZU9mZnNldCkpKTsKKworICAgICAgICBT
dG9yYWdlIHN0b3JhZ2UgPSB7CisgICAgICAgICAgICBpZGVudGlmaWVyLAorICAgICAgICAgICAg
aWRlbnRpZmllckluZGV4LAorICAgICAgICAgICAgc2NvcGVPZmZzZXQKKyAgICAgICAgfTsKKyAg
ICAgICAgbV9zdG9yYWdlc1tpbmRleF0gPSBzdG9yYWdlOworICAgICAgICByZXR1cm4gc3RvcmFn
ZTsKKyAgICB9CisKKyAgICBCeXRlY29kZUdyYXBoPFVubGlua2VkQ29kZUJsb2NrPiBtX2dyYXBo
OworICAgIEJ5dGVjb2RlTW9kaWZpY2F0aW9uU2V0IG1faW5zZXJ0aW9uU2V0OworICAgIFZlY3Rv
cjxPcHRpb25hbDxTdG9yYWdlPj4gbV9zdG9yYWdlczsKKyAgICBZaWVsZHMgbV95aWVsZHM7Cisg
ICAgRmFzdEJpdFZlY3RvciBtX21lcmdlQmxvY2tzOworICAgIEZhc3RCaXRWZWN0b3IgbV9zYXZl
QmxvY2tzOworICAgIFN0cm9uZzxTeW1ib2xUYWJsZT4gbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRh
YmxlOworICAgIGludCBtX2dlbmVyYXRvckZyYW1lU3ltYm9sVGFibGVJbmRleDsKK307CisKK2Ns
YXNzIEdlbmVyYXRvckxpdmVuZXNzQW5hbHlzaXMgOiBwdWJsaWMgQnl0ZWNvZGVMaXZlbmVzc0xv
Y2FsUHJvcGFnYXRpb248R2VuZXJhdG9yTGl2ZW5lc3NBbmFseXNpcz4geworcHVibGljOgorICAg
IEdlbmVyYXRvckxpdmVuZXNzQW5hbHlzaXMoQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24mIGdl
bmVyYXRvcmlmaWNhdGlvbikKKyAgICAgICAgOiBtX2dlbmVyYXRvcmlmaWNhdGlvbihnZW5lcmF0
b3JpZmljYXRpb24pCisgICAgeworICAgIH0KKworICAgIC8vIFNwZWNpYWxpemVkIGluc3RydWN0
aW9uIGhhbmRsZXJzLgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+CisgICAgdm9pZCBj
b21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KFVubGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IE9wY29kZUlEIG9wY29kZUlELCBVbmxpbmtlZEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgRmFz
dEJpdFZlY3RvciYgb3V0LCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQorICAgIHsKKyAgICAgICAg
SlNDOjpjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9jaywgb3Bjb2RlSUQsIGlu
c3RydWN0aW9uLCBmdW5jdG9yKTsKKworICAgICAgICBzd2l0Y2ggKG9wY29kZUlEKSB7CisgICAg
ICAgIGNhc2Ugb3Bfc2F2ZToKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBjYXNlIG9w
X3Jlc3VtZTogeworICAgICAgICAgICAgLy8gcmVzdW1lIGRlZmluZXMgYWxsIHRoZSByZWdpc3Rl
cnMuCisgICAgICAgICAgICBvdXQuY2xlYXJBbGwoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgorICAgIHZvaWQgY29t
cHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldChVbmxpbmtlZENvZGVCbG9jayogY29kZUJsb2NrLCBP
cGNvZGVJRCBvcGNvZGVJRCwgVW5saW5rZWRJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIEZhc3RC
aXRWZWN0b3ImLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQorICAgIHsKKyAgICAgICAgSlNDOjpj
b21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9jaywgb3Bjb2RlSUQsIGluc3RydWN0
aW9uLCBmdW5jdG9yKTsKKworICAgICAgICBzd2l0Y2ggKG9wY29kZUlEKSB7CisgICAgICAgIGNh
c2Ugb3Bfc2F2ZToKKyAgICAgICAgY2FzZSBvcF9yZXN1bWU6IHsKKyAgICAgICAgICAgIGZ1bmN0
b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzFdLnUub3Bl
cmFuZCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCBydW4o
KQorICAgIHsKKyAgICAgICAgLy8gUGVyZm9ybSBtb2RpZmllZCBsaXZlbmVzcyBhbmFseXNpcyB0
byBkZXRlcm1pbmUgd2hpY2ggbG9jYWxzIGFyZSBsaXZlIGF0IHRoZSBtZXJnZSBwb2ludHMuCisg
ICAgICAgIC8vIFRoaXMgcHJvZHVjZXMgdGhlIGNvbnNlcnZhdGl2ZSByZXN1bHRzIGZvciB0aGUg
cXVlc3Rpb24sICJ3aGljaCB2YXJpYWJsZXMgc2hvdWxkIGJlIHNhdmVkIGFuZCByZXN1bWVkPyIu
CisKKyAgICAgICAgQnl0ZWNvZGVHcmFwaDxVbmxpbmtlZENvZGVCbG9jaz4mIGdyYXBoID0gbV9n
ZW5lcmF0b3JpZmljYXRpb24uZ3JhcGgoKTsKKyAgICAgICAgVW5saW5rZWRDb2RlQmxvY2sqIGNv
ZGVCbG9jayA9IGdyYXBoLmNvZGVCbG9jaygpOworICAgICAgICB1bnNpZ25lZCBudW1iZXJPZlZh
cmlhYmxlcyA9IGNvZGVCbG9jay0+bV9udW1DYWxsZWVMb2NhbHM7CisgICAgICAgIGZvciAoc3Rk
Ojp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4mIGJsb2NrIDogZ3JhcGguYmFzaWNCbG9j
a3MoKSkgeworICAgICAgICAgICAgYmxvY2stPmluKCkucmVzaXplKG51bWJlck9mVmFyaWFibGVz
KTsKKyAgICAgICAgICAgIGJsb2NrLT5vdXQoKS5yZXNpemUobnVtYmVyT2ZWYXJpYWJsZXMpOwor
ICAgICAgICAgICAgYmxvY2stPmluKCkuY2xlYXJBbGwoKTsKKyAgICAgICAgICAgIGJsb2NrLT5v
dXQoKS5jbGVhckFsbCgpOworICAgICAgICB9CisKKyAgICAgICAgYm9vbCBjaGFuZ2VkOworICAg
ICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGxhc3RCbG9jayA9IGdyYXBoLmJhc2ljQmxvY2tzKCku
bGFzdCgpLmdldCgpOworICAgICAgICBsYXN0QmxvY2stPmluKCkuY2xlYXJBbGwoKTsKKyAgICAg
ICAgbGFzdEJsb2NrLT5vdXQoKS5jbGVhckFsbCgpOworICAgICAgICBGYXN0Qml0VmVjdG9yIG5l
d091dDsKKyAgICAgICAgbmV3T3V0LnJlc2l6ZShsYXN0QmxvY2stPm91dCgpLm51bUJpdHMoKSk7
CisgICAgICAgIGRvIHsKKyAgICAgICAgICAgIGNoYW5nZWQgPSBmYWxzZTsKKyAgICAgICAgICAg
IGZvciAoc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4mIGJsb2NrIDogZ3JhcGgu
YmFzaWNCbG9ja3NJblJldmVyc2VPcmRlcigpKSB7CisgICAgICAgICAgICAgICAgbmV3T3V0LmNs
ZWFyQWxsKCk7CisgICAgICAgICAgICAgICAgZm9yIChCeXRlY29kZUJhc2ljQmxvY2sqIHN1Y2Nl
c3NvciA6IGJsb2NrLT5zdWNjZXNzb3JzKCkpCisgICAgICAgICAgICAgICAgICAgIG5ld091dC5t
ZXJnZShzdWNjZXNzb3ItPmluKCkpOworICAgICAgICAgICAgICAgIGJvb2wgb3V0RGlkQ2hhbmdl
ID0gYmxvY2stPm91dCgpLnNldEFuZENoZWNrKG5ld091dCk7CisgICAgICAgICAgICAgICAgY29t
cHV0ZUxvY2FsTGl2ZW5lc3NGb3JCbG9jayhtX2dlbmVyYXRvcmlmaWNhdGlvbi5ncmFwaCgpLCBi
bG9jay5nZXQoKSk7CisgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBvdXREaWRDaGFuZ2U7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0gd2hpbGUgKGNoYW5nZWQpOworCisgICAgICAgIGZvciAo
WWllbGREYXRhJiBkYXRhIDogbV9nZW5lcmF0b3JpZmljYXRpb24ueWllbGRzKCkpCisgICAgICAg
ICAgICBkYXRhLmxpdmVuZXNzID0gZ2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29kZU9mZnNldChtX2dl
bmVyYXRvcmlmaWNhdGlvbi5ncmFwaCgpLCBkYXRhLm1lcmdlUG9pbnQpOworICAgIH0KKworcHJp
dmF0ZToKKyAgICBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbiYgbV9nZW5lcmF0b3JpZmljYXRp
b247Cit9OworCitjbGFzcyBTYXZlZFZhcmlhYmxlc0FuYWx5c2lzIHsKK3B1YmxpYzoKKyAgICBT
YXZlZFZhcmlhYmxlc0FuYWx5c2lzKEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uJiBnZW5lcmF0
b3JpZmljYXRpb24pCisgICAgICAgIDogbV9nZW5lcmF0b3JpZmljYXRpb24oZ2VuZXJhdG9yaWZp
Y2F0aW9uKQorICAgIHsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEZWZGdW5jdG9y
PgorICAgIHZvaWQgc3RlcE92ZXJJbnN0cnVjdGlvbihCeXRlY29kZUJhc2ljQmxvY2sqLCB1bnNp
Z25lZCBieXRlY29kZU9mZnNldCwgRmFzdEJpdFZlY3RvciYgaW4sIGNvbnN0IERlZkZ1bmN0b3Im
IGRlZikKKyAgICB7CisgICAgICAgIEJ5dGVjb2RlR3JhcGg8VW5saW5rZWRDb2RlQmxvY2s+JiBn
cmFwaCA9IG1fZ2VuZXJhdG9yaWZpY2F0aW9uLmdyYXBoKCk7CisgICAgICAgIGF1dG8mIGluc3Ry
dWN0aW9ucyA9IGdyYXBoLmluc3RydWN0aW9ucygpOworICAgICAgICBVbmxpbmtlZEluc3RydWN0
aW9uKiBpbnN0cnVjdGlvbiA9ICZpbnN0cnVjdGlvbnNbYnl0ZWNvZGVPZmZzZXRdOworICAgICAg
ICBPcGNvZGVJRCBvcGNvZGVJRCA9IGluc3RydWN0aW9uLT51Lm9wY29kZTsKKyAgICAgICAgVW5s
aW5rZWRDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGdyYXBoLmNvZGVCbG9jaygpOworCisgICAgICAg
IC8vIG9wX3Jlc3VtZSBjbGVhcnMgYWxsIHRoZSBkZWZzLgorICAgICAgICBpZiAob3Bjb2RlSUQg
PT0gb3BfcmVzdW1lKSB7CisgICAgICAgICAgICBpbi5jbGVhckFsbCgpOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgSlNDOjpjb21wdXRlRGVmc0ZvckJ5dGVjb2Rl
T2Zmc2V0KGNvZGVCbG9jaywgb3Bjb2RlSUQsIGluc3RydWN0aW9uLCBbJl0gKFVubGlua2VkQ29k
ZUJsb2NrKiwgVW5saW5rZWRJbnN0cnVjdGlvbiosIE9wY29kZUlELCBpbnQgb3BlcmFuZCkgewor
ICAgICAgICAgICAgaWYgKGlzVmFsaWRSZWdpc3RlckZvckxpdmVuZXNzKG9wZXJhbmQpKQorICAg
ICAgICAgICAgICAgIGRlZihWaXJ0dWFsUmVnaXN0ZXIob3BlcmFuZCkudG9Mb2NhbCgpKTsKKyAg
ICAgICAgfSk7CisgICAgfQorCisgICAgYm9vbCBjb21wdXRlTG9jYWxTYXZlZFZhcmlhYmxlc0Zv
ckJ5dGVjb2RlT2Zmc2V0KEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2ssIHVuc2lnbmVkIHRhcmdl
dE9mZnNldCwgRmFzdEJpdFZlY3RvciYgcmVzdWx0KQorICAgIHsKKyAgICAgICAgQVNTRVJUKCFi
bG9jay0+aXNFeGl0QmxvY2soKSk7CisgICAgICAgIEFTU0VSVCghYmxvY2stPmlzRW50cnlCbG9j
aygpKTsKKworICAgICAgICBGYXN0Qml0VmVjdG9yIGluID0gYmxvY2stPmluKCk7CisKKyAgICAg
ICAgZm9yICh1bnNpZ25lZCBieXRlY29kZU9mZnNldCA6IGJsb2NrLT5ieXRlY29kZU9mZnNldHMo
KSkgeworICAgICAgICAgICAgaWYgKHRhcmdldE9mZnNldCA8PSBieXRlY29kZU9mZnNldCkKKyAg
ICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgc3RlcE92ZXJJbnN0cnVjdGlvbigK
KyAgICAgICAgICAgICAgICBibG9jaywgYnl0ZWNvZGVPZmZzZXQsIGluLAorICAgICAgICAgICAg
ICAgIFsmXSAodW5zaWduZWQgYml0SW5kZXgpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gVGhp
cyBpcyB0aGUgZGVmIGZ1bmN0b3IsIHNvIHdlIHNldCB0aGUgYml0LgorICAgICAgICAgICAgICAg
ICAgICBpbi5zZXQoYml0SW5kZXgpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICB9CisK
KyAgICAgICAgcmV0dXJuIHJlc3VsdC5zZXRBbmRDaGVjayhpbik7CisgICAgfQorCisgICAgYm9v
bCBjb21wdXRlTG9jYWxTYXZlZFZhcmlhYmxlc0ZvckJsb2NrKEJ5dGVjb2RlQmFzaWNCbG9jayog
YmxvY2spCisgICAgeworICAgICAgICBpZiAoYmxvY2stPmlzRXhpdEJsb2NrKCkgfHwgYmxvY2st
PmlzRW50cnlCbG9jaygpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1
cm4gY29tcHV0ZUxvY2FsU2F2ZWRWYXJpYWJsZXNGb3JCeXRlY29kZU9mZnNldChibG9jaywgYmxv
Y2stPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCkgKyBibG9jay0+dG90YWxCeXRlY29kZUxlbmd0aCgp
LCBibG9jay0+b3V0KCkpOworICAgIH0KKworICAgIEZhc3RCaXRWZWN0b3IgZ2V0U2F2ZWRWYXJp
YWJsZXNJbmZvQXRCeXRlY29kZU9mZnNldCh1bnNpZ25lZCBieXRlY29kZU9mZnNldCkKKyAgICB7
CisgICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2sgPSBtX2dlbmVyYXRvcmlmaWNhdGlv
bi5ncmFwaCgpLmZpbmRCYXNpY0Jsb2NrRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQp
OworICAgICAgICBBU1NFUlQoYmxvY2spOworICAgICAgICBBU1NFUlQoIWJsb2NrLT5pc0VudHJ5
QmxvY2soKSk7CisgICAgICAgIEFTU0VSVCghYmxvY2stPmlzRXhpdEJsb2NrKCkpOworICAgICAg
ICBGYXN0Qml0VmVjdG9yIGluOworICAgICAgICBpbi5yZXNpemUoYmxvY2stPmluKCkubnVtQml0
cygpKTsKKyAgICAgICAgY29tcHV0ZUxvY2FsU2F2ZWRWYXJpYWJsZXNGb3JCeXRlY29kZU9mZnNl
dChibG9jaywgYnl0ZWNvZGVPZmZzZXQsIGluKTsKKyAgICAgICAgcmV0dXJuIGluOworICAgIH0K
KworICAgIHZvaWQgcnVuKCkKKyAgICB7CisgICAgICAgIC8vIElmIHdlIHNhdmUgYWxsIHRoZSB2
YXJpYWJsZSB0aGF0IHdpbGwgYmUgcmVzdW1lZCwgaXQncyBPSy4KKyAgICAgICAgLy8gQnV0IHdl
IGNhbiBhdm9pZCBzb21lIHNhdmVkIHZhcmlhYmxlcyB0aGF0IGFyZSBvbmx5IGRlZmluZWQgYnkg
dGhlIHByZXZpb3VzIG9wX3Jlc3VtZS4KKyAgICAgICAgLy8KKyAgICAgICAgLy8gSW4gdGhpcyBw
aGFzZSwgd2UgcGVyZm9ybSBmb3J3YXJkIGFuYWx5c2lzIHRvIGV4dHJhY3Qgd2hpY2ggdmFyaWFi
bGVzIG5lZWQgdG8gYmUgbmV3bHkgc2F2ZWQgd2hlbiBleGVjdXRpbmcgb3Bfc2F2ZS4KKyAgICAg
ICAgLy8gV2UgY2FsY3VsYXRlIHRoZSByZWdpc3RlcnMgdGhhdCBpcyBkZWZpbmVkIGluIG5vbi1v
cF9yZXN1bWUgYW5kIGNhbiByZWFjaCB0byB0aGUgb3Bfc2F2ZS4KKyAgICAgICAgLy8KKyAgICAg
ICAgLy8gICBvcF9yZXN1bWUsIGRlZmluZSByMQorICAgICAgICAvLyAgIC4uLgorICAgICAgICAv
LyAgIC4uLgorICAgICAgICAvLyAgIG5vLWp1bXBzICYgbm8gcjEgZGVmcy4KKyAgICAgICAgLy8g
ICAuLi4KKyAgICAgICAgLy8gICBvcF9zYXZlICAjIEhlcmUsIGl0IGlzIG5vdCBuZWNlc3Nhcnkg
dG8gc2F2ZSByMS4KKyAgICAgICAgQnl0ZWNvZGVHcmFwaDxVbmxpbmtlZENvZGVCbG9jaz4mIGdy
YXBoID0gbV9nZW5lcmF0b3JpZmljYXRpb24uZ3JhcGgoKTsKKyAgICAgICAgVW5saW5rZWRDb2Rl
QmxvY2sqIHVubGlua2VkQ29kZUJsb2NrID0gZ3JhcGguY29kZUJsb2NrKCk7CisKKyAgICAgICAg
Ly8gV2UgY29uc2lkZXIgdGhlIGJhc2ljIGJsb2NrcyB3aXRoaW4gdGhlIHRyeSByYW5nZSBhcmUg
Y29uc2lkZXJlZCBhcyB0aGUgaW1wbGljaXQgcHJlZGVjZXNzb3JzIG9mIHRoZSBoYW5kbGVycy4K
KyAgICAgICAgLy8gVGhlIGRlZnMgaW4gdGhlc2UgYmFzaWMgYmxvY2tzIGFyZSBjYXJyaWVkIHRv
IHRoZSBleGNlcHRpb24gaGFuZGxlci4gQW5kIGlmIHRoZSBvcF9zYXZlIGlzIGV4ZWN1dGVkIGlu
IHRoZSBoYW5kbGVyLAorICAgICAgICAvLyBjYXJyaWVkIGRlZnMgc2hvdWxkIGJlIGFsc28gY29u
c2lkZXJlZC4KKyAgICAgICAgLy8KKyAgICAgICAgLy8gSGVyZSwgd2UgYWRkIHRoZSB3aG9sZSBi
YXNpYyBibG9ja3MgYXMgdGhlIGltcGxpY2l0IHByZWRlY2Vzc29ycyBvZiB0aGUgaGFuZGxlcnMg
Zm9yIHNpbXBsaWNpdHkuCisgICAgICAgIC8vIFRoaXMgaXMgYSBsaXR0bGUgYml0IGNvbnNlcnZh
dGl2ZTogdGhlIHRyeSByYW5nZSBtYXkgbm90IGNvdmVyIGFsbCB0aGUgYmFzaWMgYmxvY2suIEJ1
dCBzaW5jZSB0aGUgb3V0IHNldCBzdGF0dXMgYXQKKyAgICAgICAgLy8gdGhlIHRhaWwgb2YgdGhl
IGJhc2ljIGJsb2NrIGlzIGFsd2F5cyBsYXJnZXIgdGhhbiB0aGUgb3V0IHNldCBzdGF0dXMgaW4g
dGhlIG1pZGRsZSBvZiB0aGUgYmFzaWMgYmxvY2tzLCB0aGlzIGRvZXMgbm90CisgICAgICAgIC8v
IGZhaWwgdG8ga2VlcCB0aGUgdmFyaWFibGVzIHRoYXQgc2hvdWxkIGJlIHNhdmVkLgorICAgICAg
ICAvLworICAgICAgICAvLyBPbmx5IHRoZSBleGNlcHRpb24gaXMgdGhlIG9wX3Jlc3VtZSBibG9j
azogb3BfcmVzdW1lIGNsZWFycyBhbGwgdGhlIGRlZnMuIEJ1dCBzaW5jZSB0aGUgcmFuZ2UgYmV0
d2VlbiB0aGUganVtcCB0YXJnZXQKKyAgICAgICAgLy8gZnJvbSB0aGUgZ2xvYmFsIGRpc3BhdGNo
IGFuZCBvcF9yZXN1bWUgaXMgbmV2ZXIgY292ZXJlZCBieSB0aGUgdHJ5IHJhbmdlLCBpdCBpcyBu
b3QgYSBwcm9ibGVtLgorICAgICAgICBWZWN0b3I8T3B0aW9uYWw8RmFzdEJpdFZlY3Rvcj4+IHBv
c3NpYmxlUHJlZGVjZXNzb3JzRm9ySGFuZGxlcnM7CisgICAgICAgIHBvc3NpYmxlUHJlZGVjZXNz
b3JzRm9ySGFuZGxlcnMucmVzaXplKGdyYXBoLmJhc2ljQmxvY2tzKCkuc2l6ZSgpKTsKKyAgICAg
ICAgeworICAgICAgICAgICAgYXV0byYgaW5zdHJ1Y3Rpb25zID0gZ3JhcGguaW5zdHJ1Y3Rpb25z
KCk7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdW5saW5rZWRDb2RlQmxv
Y2stPm51bWJlck9mRXhjZXB0aW9uSGFuZGxlcnMoKTsgKytpKSB7CisgICAgICAgICAgICAgICAg
YXV0byYgaGFuZGxlciA9IHVubGlua2VkQ29kZUJsb2NrLT5leGNlcHRpb25IYW5kbGVyKGkpOwor
CisgICAgICAgICAgICAgICAgRmFzdEJpdFZlY3RvciBwcmVkZWNlc3NvcnM7CisgICAgICAgICAg
ICAgICAgcHJlZGVjZXNzb3JzLnJlc2l6ZShncmFwaC5iYXNpY0Jsb2NrcygpLnNpemUoKSk7Cisg
ICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBieXRlY29kZU9mZnNldCA9IGhhbmRsZXIuc3Rh
cnQ7IGJ5dGVjb2RlT2Zmc2V0IDwgaGFuZGxlci5lbmQ7KSB7CisgICAgICAgICAgICAgICAgICAg
IFVubGlua2VkSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uID0gJmluc3RydWN0aW9uc1tieXRlY29k
ZU9mZnNldF07CisgICAgICAgICAgICAgICAgICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW5zdHJ1
Y3Rpb24tPnUub3Bjb2RlOworICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBvcGNvZGVMZW5n
dGggPSBvcGNvZGVMZW5ndGhzW29wY29kZUlEXTsKKworICAgICAgICAgICAgICAgICAgICBCeXRl
Y29kZUJhc2ljQmxvY2sqIHBvc3NpYmxlUHJlZGVjZXNzb3IgPSBncmFwaC5maW5kQmFzaWNCbG9j
a0ZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KTsKKyAgICAgICAgICAgICAgICAgICAg
UkVMRUFTRV9BU1NFUlQocG9zc2libGVQcmVkZWNlc3Nvcik7CisgICAgICAgICAgICAgICAgICAg
IHByZWRlY2Vzc29ycy5zZXQocG9zc2libGVQcmVkZWNlc3Nvci0+aW5kZXgoKSk7CisKKyAgICAg
ICAgICAgICAgICAgICAgYnl0ZWNvZGVPZmZzZXQgKz0gb3Bjb2RlTGVuZ3RoOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGhhbmRsZXJCbG9j
ayA9IGdyYXBoLmZpbmRCYXNpY0Jsb2NrV2l0aExlYWRlck9mZnNldChoYW5kbGVyLnRhcmdldCk7
CisgICAgICAgICAgICAgICAgcG9zc2libGVQcmVkZWNlc3NvcnNGb3JIYW5kbGVyc1toYW5kbGVy
QmxvY2stPmluZGV4KCldID0gV1RGTW92ZShwcmVkZWNlc3NvcnMpOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisKKyAgICAgICAgdW5zaWduZWQgbnVtYmVyT2ZWYXJpYWJsZXMgPSB1bmxpbmtl
ZENvZGVCbG9jay0+bV9udW1DYWxsZWVMb2NhbHM7CisgICAgICAgIGZvciAoc3RkOjp1bmlxdWVf
cHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4mIGJsb2NrIDogZ3JhcGguYmFzaWNCbG9ja3MoKSkgewor
ICAgICAgICAgICAgYmxvY2stPmluKCkucmVzaXplKG51bWJlck9mVmFyaWFibGVzKTsKKyAgICAg
ICAgICAgIGJsb2NrLT5vdXQoKS5yZXNpemUobnVtYmVyT2ZWYXJpYWJsZXMpOworICAgICAgICAg
ICAgYmxvY2stPmluKCkuY2xlYXJBbGwoKTsKKyAgICAgICAgICAgIGJsb2NrLT5vdXQoKS5jbGVh
ckFsbCgpOworICAgICAgICB9CisKKyAgICAgICAgYm9vbCBjaGFuZ2VkOworICAgICAgICBCeXRl
Y29kZUJhc2ljQmxvY2sqIGZpcnN0QmxvY2sgPSBncmFwaC5iYXNpY0Jsb2NrcygpLmZpcnN0KCku
Z2V0KCk7CisgICAgICAgIEZhc3RCaXRWZWN0b3IgbmV3SW47CisgICAgICAgIG5ld0luLnJlc2l6
ZShmaXJzdEJsb2NrLT5pbigpLm51bUJpdHMoKSk7CisgICAgICAgIGRvIHsKKyAgICAgICAgICAg
IGNoYW5nZWQgPSBmYWxzZTsKKyAgICAgICAgICAgIGZvciAoc3RkOjp1bmlxdWVfcHRyPEJ5dGVj
b2RlQmFzaWNCbG9jaz4mIGJsb2NrIDogZ3JhcGguYmFzaWNCbG9ja3MoKSkgeworICAgICAgICAg
ICAgICAgIG5ld0luLmNsZWFyQWxsKCk7CisgICAgICAgICAgICAgICAgYm9vbCBtZXJnZUJsb2Nr
ID0gbV9nZW5lcmF0b3JpZmljYXRpb24uaXNNZXJnZUJsb2NrKGJsb2NrLmdldCgpKTsKKyAgICAg
ICAgICAgICAgICBmb3IgKEJ5dGVjb2RlQmFzaWNCbG9jayogcHJlZGVjZXNzb3IgOiBibG9jay0+
cHJlZGVjZXNzb3JzKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gTWVyZ2UgdGhlIG91dCBz
ZXQgb2YgdGhlIGluY29taW5nIHByZWRlY2Vzc29ycyB1bmxlc3MgdGhlIGN1cnJlbnQgYmxvY2sg
c3RhcnRzCisgICAgICAgICAgICAgICAgICAgIC8vIHdpdGggdGhlIG1lcmdlIHBvaW50IGFuZCB0
aGUgcHJlZGVjZXNzb3IgZW5kcyB3aXRoIHRoZSBzYXZlIHBvaW50LgorICAgICAgICAgICAgICAg
ICAgICBpZiAoIShtZXJnZUJsb2NrICYmIG1fZ2VuZXJhdG9yaWZpY2F0aW9uLmlzU2F2ZUJsb2Nr
KHByZWRlY2Vzc29yKSkpCisgICAgICAgICAgICAgICAgICAgICAgICBuZXdJbi5tZXJnZShwcmVk
ZWNlc3Nvci0+b3V0KCkpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlm
IChhdXRvJiBvcHRpb25hbFByZWRlY2Vzc29yU2V0ID0gcG9zc2libGVQcmVkZWNlc3NvcnNGb3JI
YW5kbGVyc1tibG9jay0+aW5kZXgoKV0pIHsKKyAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWxQ
cmVkZWNlc3NvclNldC0+Zm9yRWFjaFNldEJpdChbJl0gKHVuc2lnbmVkIGJsb2NrSW5kZXgpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIG5ld0luLm1lcmdlKGdyYXBoLmJhc2ljQmxvY2tzKClb
YmxvY2tJbmRleF0tPm91dCgpKTsKKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICAgICAgYmxvY2stPmluKCkuc2V0KG5ld0luKTsKKyAgICAg
ICAgICAgICAgICBjaGFuZ2VkIHw9IGNvbXB1dGVMb2NhbFNhdmVkVmFyaWFibGVzRm9yQmxvY2so
YmxvY2suZ2V0KCkpOworICAgICAgICAgICAgfQorICAgICAgICB9IHdoaWxlIChjaGFuZ2VkKTsK
KworICAgICAgICBmb3IgKFlpZWxkRGF0YSYgZGF0YSA6IG1fZ2VuZXJhdG9yaWZpY2F0aW9uLnlp
ZWxkcygpKSB7CisgICAgICAgICAgICBkYXRhLnNhdmVkID0gZGF0YS5saXZlbmVzczsKKyAgICAg
ICAgICAgIGRhdGEuc2F2ZWQuZmlsdGVyKGdldFNhdmVkVmFyaWFibGVzSW5mb0F0Qnl0ZWNvZGVP
ZmZzZXQoZGF0YS5zYXZlUG9pbnQpKTsKKyAgICAgICAgfQorICAgIH0KKworcHJpdmF0ZToKKyAg
ICBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbiYgbV9nZW5lcmF0b3JpZmljYXRpb247Cit9Owor
CitjbGFzcyBSZXN1bWVkVmFyaWFibGVzQW5hbHlzaXMgOiBwdWJsaWMgQnl0ZWNvZGVMaXZlbmVz
c0xvY2FsUHJvcGFnYXRpb248UmVzdW1lZFZhcmlhYmxlc0FuYWx5c2lzPiB7CitwdWJsaWM6Cisg
ICAgUmVzdW1lZFZhcmlhYmxlc0FuYWx5c2lzKEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uJiBn
ZW5lcmF0b3JpZmljYXRpb24pCisgICAgICAgIDogbV9nZW5lcmF0b3JpZmljYXRpb24oZ2VuZXJh
dG9yaWZpY2F0aW9uKQorICAgIHsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5j
dG9yPgorICAgIHZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChVbmxpbmtlZENvZGVC
bG9jayogY29kZUJsb2NrLCBPcGNvZGVJRCBvcGNvZGVJRCwgVW5saW5rZWRJbnN0cnVjdGlvbiog
aW5zdHJ1Y3Rpb24sIEZhc3RCaXRWZWN0b3ImIG91dCwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikK
KyAgICB7CisgICAgICAgIEpTQzo6Y29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChjb2RlQmxv
Y2ssIG9wY29kZUlELCBpbnN0cnVjdGlvbiwgZnVuY3Rvcik7CisKKyAgICAgICAgc3dpdGNoIChv
cGNvZGVJRCkgeworICAgICAgICBjYXNlIG9wX3NhdmU6CisgICAgICAgICAgICByZXR1cm47CisK
KyAgICAgICAgY2FzZSBvcF9yZXN1bWU6IHsKKyAgICAgICAgICAgIC8vIHJlc3VtZSBkZWZpbmVz
IGFsbCB0aGUgcmVnaXN0ZXJzLgorICAgICAgICAgICAgb3V0LmNsZWFyQWxsKCk7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rv
cj4KKyAgICB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoVW5saW5rZWRDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgT3Bjb2RlSUQgb3Bjb2RlSUQsIFVubGlua2VkSW5zdHJ1Y3Rpb24qIGlu
c3RydWN0aW9uLCBGYXN0Qml0VmVjdG9yJiwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikKKyAgICB7
CisgICAgICAgIEpTQzo6Y29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldChjb2RlQmxvY2ssIG9w
Y29kZUlELCBpbnN0cnVjdGlvbiwgZnVuY3Rvcik7CisKKyAgICAgICAgc3dpdGNoIChvcGNvZGVJ
RCkgeworICAgICAgICBjYXNlIG9wX3NhdmU6IHsKKyAgICAgICAgICAgIGZ1bmN0b3IoY29kZUJs
b2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CisK
KyAgICAgICAgICAgIC8vIExldCdzIGRlY2xhcmUgdGhlIHVzZXMgYmFzZWQgb24gdGhlIHNhdmVk
IHZhcmlhYmxlcyBhbmFseXNpcyBpbmZvcm1hdGlvbi4KKyAgICAgICAgICAgIHVuc2lnbmVkIGxp
dmVDYWxsZWVMb2NhbHNJbmRleCA9IGluc3RydWN0aW9uWzJdLnUuaW5kZXg7CisgICAgICAgICAg
ICBjb25zdCBZaWVsZERhdGEmIGRhdGEgPSBtX2dlbmVyYXRvcmlmaWNhdGlvbi55aWVsZHMoKVts
aXZlQ2FsbGVlTG9jYWxzSW5kZXhdOworICAgICAgICAgICAgZGF0YS5zYXZlZC5mb3JFYWNoU2V0
Qml0KFsmXShzaXplX3QgbG9jYWwpIHsKKyAgICAgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIg
b3BlcmFuZCA9IHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGxvY2FsKTsKKyAgICAgICAgICAgICAg
ICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBvcGVyYW5kLm9mZnNl
dCgpKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisK
KyAgICAgICAgY2FzZSBvcF9yZXN1bWU6IHsKKyAgICAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2Nr
LCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCBydW4oKQorICAgIHsKKyAg
ICAgICAgLy8gVGhlIHJlc3VtZWQgdmFyaWFibGVzIGFuYWx5c2lzIGlzIGFsbW9zdCB0aGUgc2Ft
ZSB0byB0aGUgZ2VuZXJhdG9yaWZpY2F0aW9uJ3MgdXN1YWwgbGl2ZW5lc3MgYW5hbHlzaXMsCisg
ICAgICAgIC8vIGV4Y2VwdCBmb3IgZHJvcHBpbmcgdGhlIGVkZ2VzIGJldHdlZW4gdGhlIHNhdmUg
cG9pbnRzIGFuZCB0aGUgbWVyZ2UgcG9pbnRzLgorCisgICAgICAgIEJ5dGVjb2RlR3JhcGg8VW5s
aW5rZWRDb2RlQmxvY2s+JiBncmFwaCA9IG1fZ2VuZXJhdG9yaWZpY2F0aW9uLmdyYXBoKCk7Cisg
ICAgICAgIFVubGlua2VkQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jayA9IGdyYXBoLmNvZGVC
bG9jaygpOworICAgICAgICB1bnNpZ25lZCBudW1iZXJPZlZhcmlhYmxlcyA9IHVubGlua2VkQ29k
ZUJsb2NrLT5tX251bUNhbGxlZUxvY2FsczsKKyAgICAgICAgZm9yIChzdGQ6OnVuaXF1ZV9wdHI8
Qnl0ZWNvZGVCYXNpY0Jsb2NrPiYgYmxvY2sgOiBncmFwaC5iYXNpY0Jsb2NrcygpKSB7CisgICAg
ICAgICAgICBibG9jay0+aW4oKS5yZXNpemUobnVtYmVyT2ZWYXJpYWJsZXMpOworICAgICAgICAg
ICAgYmxvY2stPm91dCgpLnJlc2l6ZShudW1iZXJPZlZhcmlhYmxlcyk7CisgICAgICAgICAgICBi
bG9jay0+aW4oKS5jbGVhckFsbCgpOworICAgICAgICAgICAgYmxvY2stPm91dCgpLmNsZWFyQWxs
KCk7CisgICAgICAgIH0KKworICAgICAgICBib29sIGNoYW5nZWQ7CisgICAgICAgIEJ5dGVjb2Rl
QmFzaWNCbG9jayogbGFzdEJsb2NrID0gZ3JhcGguYmFzaWNCbG9ja3MoKS5sYXN0KCkuZ2V0KCk7
CisgICAgICAgIGxhc3RCbG9jay0+aW4oKS5jbGVhckFsbCgpOworICAgICAgICBsYXN0QmxvY2st
Pm91dCgpLmNsZWFyQWxsKCk7CisgICAgICAgIEZhc3RCaXRWZWN0b3IgbmV3T3V0OworICAgICAg
ICBuZXdPdXQucmVzaXplKGxhc3RCbG9jay0+b3V0KCkubnVtQml0cygpKTsKKyAgICAgICAgZG8g
eworICAgICAgICAgICAgY2hhbmdlZCA9IGZhbHNlOworICAgICAgICAgICAgZm9yIChzdGQ6OnVu
aXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiYgYmxvY2sgOiBncmFwaC5iYXNpY0Jsb2Nrc0lu
UmV2ZXJzZU9yZGVyKCkpIHsKKyAgICAgICAgICAgICAgICBuZXdPdXQuY2xlYXJBbGwoKTsKKyAg
ICAgICAgICAgICAgICBib29sIHNhdmVCbG9jayA9IG1fZ2VuZXJhdG9yaWZpY2F0aW9uLmlzU2F2
ZUJsb2NrKGJsb2NrLmdldCgpKTsKKyAgICAgICAgICAgICAgICBmb3IgKEJ5dGVjb2RlQmFzaWNC
bG9jayogc3VjY2Vzc29yIDogYmxvY2stPnN1Y2Nlc3NvcnMoKSkgeworICAgICAgICAgICAgICAg
ICAgICAvLyBEbyBub3QgaGFuZGxlIHRoZSBlZGdlcyBiZXR3ZWVuIHRoZSBzYXZlIHBvaW50cyBh
bmQgdGhlIG1lcmdlIHBvaW50cy4KKyAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIGN1cnJl
bnQgYmxvY2sgaXMgdGhlIHNhdmUgYmxvY2sgKHRoYXQgYnJhbmNoIGlzIG9wX3NhdmUpLAorICAg
ICAgICAgICAgICAgICAgICAvLyBhbmQgaWYgdGhlIHN1Y2Nlc3NvciBpcyB0aGUgYmxvY2sgdGhh
dCBzdGFydHMgd2l0aCB0aGUgbWVyZ2UgcG9pbnQsIHdlIGRyb3AgdGhpcyBlZGdlLgorICAgICAg
ICAgICAgICAgICAgICBpZiAoIShzYXZlQmxvY2sgJiYgbV9nZW5lcmF0b3JpZmljYXRpb24uaXNN
ZXJnZUJsb2NrKHN1Y2Nlc3NvcikpKQorICAgICAgICAgICAgICAgICAgICAgICAgbmV3T3V0Lm1l
cmdlKHN1Y2Nlc3Nvci0+aW4oKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IGJvb2wgb3V0RGlkQ2hhbmdlID0gYmxvY2stPm91dCgpLnNldEFuZENoZWNrKG5ld091dCk7Cisg
ICAgICAgICAgICAgICAgY29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCbG9jayhtX2dlbmVyYXRvcmlm
aWNhdGlvbi5ncmFwaCgpLCBibG9jay5nZXQoKSk7CisgICAgICAgICAgICAgICAgY2hhbmdlZCB8
PSBvdXREaWRDaGFuZ2U7CisgICAgICAgICAgICB9CisgICAgICAgIH0gd2hpbGUgKGNoYW5nZWQp
OworCisgICAgICAgIGZvciAoWWllbGREYXRhJiBkYXRhIDogbV9nZW5lcmF0b3JpZmljYXRpb24u
eWllbGRzKCkpIHsKKyAgICAgICAgICAgIGRhdGEucmVzdW1lZCA9IGRhdGEubGl2ZW5lc3M7Cisg
ICAgICAgICAgICBkYXRhLnJlc3VtZWQuZmlsdGVyKGdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVP
ZmZzZXQobV9nZW5lcmF0b3JpZmljYXRpb24uZ3JhcGgoKSwgZGF0YS5tZXJnZVBvaW50KSk7Cisg
ICAgICAgIH0KKyAgICB9CisKK3ByaXZhdGU6CisgICAgQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRp
b24mIG1fZ2VuZXJhdG9yaWZpY2F0aW9uOworfTsKKwordm9pZCBCeXRlY29kZUdlbmVyYXRvcmlm
aWNhdGlvbjo6cnVuKCkKK3sKKyAgICAvLyBGaXJzdCwgd2UgY2FsY3VsYXRlIHRoZSBsaXZlbmVz
cyBhdCBlYWNoIG1lcmdlIHBvaW50LiBUaGlzIGdpdmVzIHVzIHRoZSBpbmZvcm1hdGlvbiB3aGlj
aCByZWdpc3RlcnMgc2hvdWxkIGJlIHNhdmVkIGFuZCByZXN1bWVkIGNvbnNlcnZhdGl2ZWx5Lgor
ICAgIC8vIEhvd2V2ZXIsIHRoaXMgaW5mb3JtYXRpb24gaXMgdG9vIGNvbnNlcnZhdGl2ZS4gV2Ug
dW5uZWNlc3NhcmlseSBzYXZlIGFuZCByZXN1bWUgdGhlIHJlZ2lzdGVycy4KKyAgICAvLyBXaGVu
IHRoZSBsb2NhbCByZWdpc3RlciBpcyByZWZlcmVuY2VkIGZyb20gdGhlIHBvaW50IHdoaWNoIGlz
IG92ZXIgbXVsdGlwbGUgeWllbGRzLCB0aGUgcHJvYmxlbSBoYXBwZW5zLgorICAgIC8vCisgICAg
Ly8gICBmdW5jdGlvbiAqZ2VuKCkKKyAgICAvLyAgIHsKKyAgICAvLyAgICAgICB2YXIgdGFyZ2V0
ID0gNDI7CisgICAgLy8gICAgICAgeWllbGQgMzA7ICAvLyBIZXJlLCB3ZSBzaG91bGQgc2F2ZSAi
dGFyZ2V0Ii4gSXQgaXMgT0suIEJ1dCBhdCB0aGUgcmVzdW1lIHBvaW50LCB3ZSB1bm5lY2Vzc2Fy
eSByZXN1bWUgInRhcmdldCIgaGVyZS4KKyAgICAvLyAgICAgICB5aWVsZCA0MDsgIC8vIEFuZCBo
ZXJlLCB3ZSB1bm5lY2Vzc2FyaWx5IHNhdmUgInRhcmdldCIsIHNpbmNlIGl0IGlzICpkZWYqaW5l
ZCBieSB0aGUgcHJldmlvdXMgcmVzdW1lLgorICAgIC8vICAgICAgIHlpZWxkIHRhcmdldDsgIC8v
IEFuZCByZWZlcmVuY2UgdGhlICJ0YXJnZXQiIGhlcmUuCisgICAgLy8gICB9CisgICAgLy8KKyAg
ICAvLyBJbiB0aGUgYWJvdmUgZXhhbXBsZSwgZmlyc3QgeWllbGQncyByZXN1bWUgYW5kIHNlY29u
ZCB5aWVsZCdzIHNhdmUgaXMgdW5uZWNlc3Nhcnkgc2luY2UgdGhlIHZhbHVlIGlzIG5vdCBjaGFu
Z2VkIGR1cmluZyB0aGUgc2Vjb25kIGNhbGwgb2YgbmV4dCgpLgorICAgIC8vIFRvIHJlZHVjZSB0
aGUgdW5uZWNlc3NhcnkgcmVnaXN0ZXIgc2F2ZSBhbmQgcmVzdW1lLCB3ZSBydW4gMiBhbmFseXNp
cywgInNhdmVkIHZhcmlhYmxlcyBhbmFseXNpcyIgYW5kICJyZXN1bWVkIHZhcmlhYmxlcyBhbmFs
eXNpcyIuCisgICAgLy8gSW4gYm90aCBhbmFseXNpcywgd2UgZHJvcCB0aGUgZWRnZSBmcm9tIG9w
X3NhdmUgdG8gdGhlIG1lcmdlIHBvaW50LiBTbyB0aGUgZ3JhcGggbm93IGJlY29tZXMgYXMgZm9s
bG93cy4KKyAgICAvLworICAgIC8vIEJlZm9yZToKKyAgICAvLyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAob2YgY291cnNlLCBzdWNoIGVkZ2VzIGNhbiBiZSBzZWVuKQorICAgIC8vICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcF9yZXQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICAgLy8gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAg
ICAvLyAgICAgICAgIGVudHJ5IC0+IGdlbmVyYXRvciBzd2l0Y2ggLS0tLT4gb3Bfc2F2ZSAtLS0t
LS0tLS0tLS0tLSsgICAgICAgICAgICAgICB8ICAgICAgICBvcF9yZXQgICAgICAgICAgICAgICAg
ICAgfAorICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdiAgICAgICAgICAgICAgIHwgICAgICAgICAgXiAgICAgICAgICAg
ICAgICAgICAgICB8CisgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0t
LS0+IG9wX3Jlc3VtZSAtLS0tLT4gbWVyZ2UgcG9pbnQgLT4gLi4uLi4uKy4uLi4uLT4gb3Bfc2F2
ZSAtLS0tLSsgICAgICAgICAgIHwKKyAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgIHwgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdiAgICAgICAgICAgdgorICAgIC8vICAgICAgICAgICAgICAgICAgICAg
ICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
PiBvcF9yZXN1bWUgLS0tLT4gbWVyZ2UgcG9pbnQgLT4gLi4uLi4uCisgICAgLy8KKyAgICAvLyBB
ZnRlcjoKKyAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob2YgY291cnNlLCBzdWNoIGVkZ2Vz
IGNhbiBiZSBzZWVuKQorICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBvcF9yZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIF4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAvLyAgICAgICAgIGVudHJ5IC0+IGdl
bmVyYXRvciBzd2l0Y2ggLS0tLT4gb3Bfc2F2ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB8ICAgICAgICBvcF9yZXQgICAgICAgICAgICAgICAgICAgfAorICAgIC8vICAgICAgICAgICAg
ICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHwgICAgICAgICAgXiAgICAgICAgICAgICAgICAgICAgICB8CisgICAgLy8gICAg
ICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0+IG9wX3Jlc3VtZSAtLS0tLT4gbWVy
Z2UgcG9pbnQgLT4gLi4uLi4uKy4uLi4uLT4gb3Bfc2F2ZSAgICAgICAgICAgICAgICAgIHwKKyAg
ICAvLyAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdgorICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPiBvcF9yZXN1bWUgLS0tLT4gbWVyZ2Ug
cG9pbnQgLT4gLi4uLi4uCisgICAgLy8KKyAgICAvLyBJbiBzYXZlZCB2YXJpYWJsZXMgYW5hbHlz
aXMsIHdlIHJ1biB0aGUgZm9yd2FyZCBhbmFseXNpcyBvbnRvIHRoaXMgIkFmdGVyIiBncmFwaC4g
SW4gdGhpcyBmb3J3YXJkIGFuYWx5c2lzLCB3ZSBwcm9wYWdhdGUgdGhlICJkZWYicy4KKyAgICAv
LyBUaGlzIGFuYWx5c2lzIGV4dHJhY3RzIHRoZSBuZXdseSBkZWYtZWQgcmVnaXN0ZXJzIHRoYXQg
Y2FuIHJlYWNoIHRvIHRoZSBvcF9zYXZlIHBvaW50LiBCdXQgdGhpcyBuZXdseSBkZWYtZWQgcmVn
aXN0ZXJzIGluY2x1ZGUgdGhlIHJlZ2lzdGVycyB0aGF0IHdvbid0IGJlCisgICAgLy8gdXNlZCBp
biB0aGUgc3Vic2VxdWVudCBuZXh0KCkgY2FsbHMgYWZ0ZXIgdGhpcyBvcF9zYXZlLiBTbyB3ZSBl
eHRyYWN0IHRoZSBuZWNlc3NhcmlseSBzYXZlZCByZWdpc3RlcnMgYnkgbWFza2luZyBsaXZlIHJl
Z2lzdGVycyB3aXRoIHRoaXMgbmV3bHkgZGVmLWVkIHJlZ2lzdGVycyBiaXQgc2V0LgorICAgIC8v
CisgICAgLy8gSW4gcmVzdW1lZCB2YXJpYWJsZXMgYW5hbHlzaXMsIHdlIGp1c3QgcnVuIHRoZSBs
aXZlbmVzcyBhbmFseXNpcyBhZ2FpbiBvbnRvIHRoaXMgIkFmdGVyIiBncmFwaC4gVGhlIGFuYWx5
c2lzIGV4dHJhY3RzIHRoZSBsaXZlbmVzcyBhdCBlYWNoIG1lcmdlIHBvaW50LAorICAgIC8vIGFu
ZCB0aGlzIGxpdmVuZXNzIG9ubHkgY29uc2lkZXJzIHRoZSByZWFjaGFibGUgYmxvY2tzIGZyb20g
dGhlIHRhcmdldCBvcF9yZXN1bWUuIFRoZSByZXN1bHQgcmVnaXN0ZXJzIGFyZSBzbWFsbGVyIHNl
dCB0aGFuIHRoZSBzZXQgd2hpY2ggaXMgZXh0cmFjdGVkIGluCisgICAgLy8gdGhlIHByZXZpb3Vz
IGxpdmVuZXNzIGFuYWx5c2lzLgorICAgIC8vIFRoaXMgdGltZSwgd2UgdXNlIHRoZSBzYXZlZCB2
YXJpYWJsZXMgaW5mb3JtYXRpb24gdG8gZGV0ZXJtaW5lIHRoZSByZXN1bWVkIHZhcmlhYmxlcy4g
VGhpcyBpcyBiZWNhdXNlIHRoZSBzYXZlZCB2YXJpYWJsZSBhbmFseXNpcyBoYXMgYSBsaXR0bGUg
Yml0IGNvbnNlcnZhdGl2ZSBwYXJ0OgorICAgIC8vIHRoZSBleGNlcHRpb24gaGFuZGxlciBjb25z
aWRlcnMgdGhlIGJhc2ljIGJsb2NrcyB0aGF0IHJhbmdlIG92ZXJsYXBzIHRoZSB0cnkgcmFuZ2Vz
IGFzIHRoZSBpbXBsaWNpdCBwcmVkZWNlc3NvcnMuIEFuZCB0aGUgaGFuZGxlciBjb25zZXJ2YXRp
dmVseSBjb25zaWRlcnMgbmV3bHktZGVmLWVkCisgICAgLy8gdmFyaWFibGVzIGJ5IG1lcmdpbmcg
YWxsIHRoZSBwcmVkZWNlc3NvcnMncyBvdXQgc2V0IGV2ZW4gaWYgdGhlIGhhbmRsZXIncyB0cnkg
cmFuZ2UgZG9lcyBub3QgY292ZXIgYWxsIHRoZSBwYXJ0IG9mIHRoZSBpbXBsaWNpdCBiYXNpYyBi
bG9ja3MuCisKKyAgICB7CisgICAgICAgIEdlbmVyYXRvckxpdmVuZXNzQW5hbHlzaXMgcGFzcygq
dGhpcyk7CisgICAgICAgIHBhc3MucnVuKCk7CisgICAgfQorCisgICAgeworICAgICAgICBTYXZl
ZFZhcmlhYmxlc0FuYWx5c2lzIHBhc3MoKnRoaXMpOworICAgICAgICBwYXNzLnJ1bigpOworICAg
IH0KKworICAgIHsKKyAgICAgICAgUmVzdW1lZFZhcmlhYmxlc0FuYWx5c2lzIHBhc3MoKnRoaXMp
OworICAgICAgICBwYXNzLnJ1bigpOworICAgIH0KKworICAgIFVubGlua2VkQ29kZUJsb2NrKiBj
b2RlQmxvY2sgPSBtX2dyYXBoLmNvZGVCbG9jaygpOworICAgIGZvciAoY29uc3QgWWllbGREYXRh
JiBkYXRhIDogbV95aWVsZHMpIHsKKyAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHNjb3BlID0gdmly
dHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3JG
dW5jdGlvbjo6R2VuZXJhdG9yQXJndW1lbnQ6OkZyYW1lKSk7CisKKyAgICAgICAgLy8gb3Bfc2F2
ZS4KKyAgICAgICAgZGF0YS5zYXZlZC5mb3JFYWNoU2V0Qml0KFsmXShzaXplX3QgaW5kZXgpIHsK
KyAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kID0gdmlydHVhbFJlZ2lzdGVyRm9y
TG9jYWwoaW5kZXgpOworICAgICAgICAgICAgU3RvcmFnZSBzdG9yYWdlID0gc3RvcmFnZUZvckdl
bmVyYXRvckxvY2FsKGluZGV4KTsKKworICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0
KGRhdGEuc2F2ZVBvaW50LAorICAgICAgICAgICAgICAgIG9wX3B1dF90b19zY29wZSwKKyAgICAg
ICAgICAgICAgICBzY29wZS5vZmZzZXQoKSwgLy8gc2NvcGUKKyAgICAgICAgICAgICAgICBzdG9y
YWdlLmlkZW50aWZpZXJJbmRleCwgLy8gaWRlbnRpZmllcgorICAgICAgICAgICAgICAgIG9wZXJh
bmQub2Zmc2V0KCksIC8vIHZhbHVlCisgICAgICAgICAgICAgICAgR2V0UHV0SW5mbyhEb05vdFRo
cm93SWZOb3RGb3VuZCwgTG9jYWxDbG9zdXJlVmFyLCBJbml0aWFsaXphdGlvbk1vZGU6Ok5vdElu
aXRpYWxpemF0aW9uKS5vcGVyYW5kKCksIC8vIGluZm8KKyAgICAgICAgICAgICAgICBtX2dlbmVy
YXRvckZyYW1lU3ltYm9sVGFibGVJbmRleCwgLy8gc3ltYm9sIHRhYmxlIGNvbnN0YW50IGluZGV4
CisgICAgICAgICAgICAgICAgc3RvcmFnZS5zY29wZU9mZnNldC5vZmZzZXQoKSAvLyBzY29wZSBv
ZmZzZXQKKyAgICAgICAgICAgICk7CisgICAgICAgIH0pOworCisgICAgICAgIC8vIG9wX3Jlc3Vt
ZS4KKyAgICAgICAgZGF0YS5yZXN1bWVkLmZvckVhY2hTZXRCaXQoWyZdKHNpemVfdCBpbmRleCkg
eworICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQgPSB2aXJ0dWFsUmVnaXN0ZXJG
b3JMb2NhbChpbmRleCk7CisgICAgICAgICAgICBTdG9yYWdlIHN0b3JhZ2UgPSBzdG9yYWdlRm9y
R2VuZXJhdG9yTG9jYWwoaW5kZXgpOworCisgICAgICAgICAgICBVbmxpbmtlZFZhbHVlUHJvZmls
ZSBwcm9maWxlID0gY29kZUJsb2NrLT5hZGRWYWx1ZVByb2ZpbGUoKTsKKyAgICAgICAgICAgIG1f
aW5zZXJ0aW9uU2V0Lmluc2VydChkYXRhLnJlc3VtZVBvaW50LAorICAgICAgICAgICAgICAgIG9w
X2dldF9mcm9tX3Njb3BlLAorICAgICAgICAgICAgICAgIG9wZXJhbmQub2Zmc2V0KCksIC8vIGRz
dAorICAgICAgICAgICAgICAgIHNjb3BlLm9mZnNldCgpLCAvLyBzY29wZQorICAgICAgICAgICAg
ICAgIHN0b3JhZ2UuaWRlbnRpZmllckluZGV4LCAvLyBpZGVudGlmaWVyCisgICAgICAgICAgICAg
ICAgR2V0UHV0SW5mbyhEb05vdFRocm93SWZOb3RGb3VuZCwgTG9jYWxDbG9zdXJlVmFyLCBJbml0
aWFsaXphdGlvbk1vZGU6Ok5vdEluaXRpYWxpemF0aW9uKS5vcGVyYW5kKCksIC8vIGluZm8KKyAg
ICAgICAgICAgICAgICAwLCAvLyBsb2NhbCBzY29wZSBkZXB0aAorICAgICAgICAgICAgICAgIHN0
b3JhZ2Uuc2NvcGVPZmZzZXQub2Zmc2V0KCksIC8vIHNjb3BlIG9mZnNldAorICAgICAgICAgICAg
ICAgIHByb2ZpbGUgLy8gcHJvZmlsZQorICAgICAgICAgICAgKTsKKyAgICAgICAgfSk7CisKKyAg
ICAgICAgLy8gQ2xpcCB0aGUgdW5uZWNlc3NhcnkgYnl0ZWNvZGVzLgorICAgICAgICBtX2luc2Vy
dGlvblNldC5yZW1vdmVCeXRlY29kZShkYXRhLnNhdmVQb2ludCk7CisgICAgICAgIG1faW5zZXJ0
aW9uU2V0LnJlbW92ZUJ5dGVjb2RlKGRhdGEucmVzdW1lUG9pbnQpOworICAgIH0KKworICAgIG1f
aW5zZXJ0aW9uU2V0LmV4ZWN1dGUoKTsKK30KKwordm9pZCBwZXJmb3JtR2VuZXJhdG9yaWZpY2F0
aW9uKFVubGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFVubGlua2VkQ29kZUJsb2NrOjpVbnBh
Y2tlZEluc3RydWN0aW9ucyYgaW5zdHJ1Y3Rpb25zLCBTeW1ib2xUYWJsZSogZ2VuZXJhdG9yRnJh
bWVTeW1ib2xUYWJsZSwgaW50IGdlbmVyYXRvckZyYW1lU3ltYm9sVGFibGVJbmRleCkKK3sKKyAg
ICBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbiBwYXNzKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb25z
LCBnZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlLCBnZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlSW5k
ZXgpOworICAgIHBhc3MucnVuKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0
aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3Jp
ZmljYXRpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYjdlYzk2ZWQ3MGRiYmEyMjExMWViMTM3NzMzZmIyMDA1
NWIxMTFhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmgKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNiBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+Cisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiVW5saW5rZWRDb2RlQmxvY2suaCIK
KworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIFN5bWJvbFRhYmxlOworCit2b2lkIHBlcmZvcm1H
ZW5lcmF0b3JpZmljYXRpb24oVW5saW5rZWRDb2RlQmxvY2sqLCBVbmxpbmtlZENvZGVCbG9jazo6
VW5wYWNrZWRJbnN0cnVjdGlvbnMmLCBTeW1ib2xUYWJsZSogZ2VuZXJhdG9yRnJhbWVTeW1ib2xU
YWJsZSwgaW50IGdlbmVyYXRvckZyYW1lU3ltYm9sVGFibGVJbmRleCk7CisKK30gLy8gbmFtZXNw
YWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVj
b2RlR3JhcGguaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUdyYXBo
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uODY4YWQzNDg1NzE5NDNlOWE0MmQwYTc0ZTA0NTFmNTJmZTYwNjRlMQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZUdyYXBoLmgKQEAgLTAsMCArMSwxMTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgWXVz
dWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2luY2x1ZGUgIkJ5dGVjb2RlQmFzaWNCbG9jay5oIgorI2luY2x1ZGUgPHd0Zi9JdGVy
YXRvclJhbmdlLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgSlNDIHsK
KworY2xhc3MgQnl0ZWNvZGVCYXNpY0Jsb2NrOworCit0ZW1wbGF0ZTx0eXBlbmFtZSBCbG9jaz4K
K2NsYXNzIEJ5dGVjb2RlR3JhcGggeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKEJ5dGVjb2RlR3JhcGgpOworcHVibGljOgorICAgIHR5cGVk
ZWYgQmxvY2sgQ29kZUJsb2NrOworICAgIHR5cGVkZWYgdHlwZW5hbWUgQmxvY2s6Okluc3RydWN0
aW9uIEluc3RydWN0aW9uOworICAgIHR5cGVkZWYgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRl
Y29kZUJhc2ljQmxvY2s+PiBCYXNpY0Jsb2Nrc1ZlY3RvcjsKKworICAgIGlubGluZSBCeXRlY29k
ZUdyYXBoKEJsb2NrKiwgdHlwZW5hbWUgQmxvY2s6OlVucGFja2VkSW5zdHJ1Y3Rpb25zJik7CisK
KyAgICBCbG9jayogY29kZUJsb2NrKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2s7IH0KKwor
ICAgIEJhc2ljQmxvY2tzVmVjdG9yJiBiYXNpY0Jsb2NrcygpIHsgcmV0dXJuIG1fYmFzaWNCbG9j
a3M7IH0KKworICAgIHR5cGVuYW1lIEJsb2NrOjpVbnBhY2tlZEluc3RydWN0aW9ucyYgaW5zdHJ1
Y3Rpb25zKCkgeyByZXR1cm4gbV9pbnN0cnVjdGlvbnM7IH0KKworICAgIFdURjo6SXRlcmF0b3JS
YW5nZTxCYXNpY0Jsb2Nrc1ZlY3Rvcjo6cmV2ZXJzZV9pdGVyYXRvcj4gYmFzaWNCbG9ja3NJblJl
dmVyc2VPcmRlcigpCisgICAgeworICAgICAgICByZXR1cm4gV1RGOjptYWtlSXRlcmF0b3JSYW5n
ZShtX2Jhc2ljQmxvY2tzLnJiZWdpbigpLCBtX2Jhc2ljQmxvY2tzLnJlbmQoKSk7CisgICAgfQor
CisgICAgc3RhdGljIGJvb2wgYmxvY2tDb250YWluc0J5dGVjb2RlT2Zmc2V0KEJ5dGVjb2RlQmFz
aWNCbG9jayogYmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KQorICAgIHsKKyAgICAgICAg
dW5zaWduZWQgbGVhZGVyT2Zmc2V0ID0gYmxvY2stPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCk7Cisg
ICAgICAgIHJldHVybiBieXRlY29kZU9mZnNldCA+PSBsZWFkZXJPZmZzZXQgJiYgYnl0ZWNvZGVP
ZmZzZXQgPCBsZWFkZXJPZmZzZXQgKyBibG9jay0+dG90YWxCeXRlY29kZUxlbmd0aCgpOworICAg
IH0KKworICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogZmluZEJhc2ljQmxvY2tGb3JCeXRlY29kZU9m
ZnNldCh1bnNpZ25lZCBieXRlY29kZU9mZnNldCkKKyAgICB7CisgICAgICAgIC8qCisgICAgICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9iYXNpY0Jsb2Nrcy5zaXplKCk7IGkrKykg
eworICAgICAgICAgICAgICAgIGlmIChibG9ja0NvbnRhaW5zQnl0ZWNvZGVPZmZzZXQobV9iYXNp
Y0Jsb2Nrc1tpXS5nZXQoKSwgYnl0ZWNvZGVPZmZzZXQpKQorICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gbV9iYXNpY0Jsb2Nrc1tpXS5nZXQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IHJldHVybiAwOworICAgICAgICAqLworCisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29k
ZUJhc2ljQmxvY2s+KiBiYXNpY0Jsb2NrID0gYXBwcm94aW1hdGVCaW5hcnlTZWFyY2g8c3RkOjp1
bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4sIHVuc2lnbmVkPihtX2Jhc2ljQmxvY2tzLCBt
X2Jhc2ljQmxvY2tzLnNpemUoKSwgYnl0ZWNvZGVPZmZzZXQsIFtdIChzdGQ6OnVuaXF1ZV9wdHI8
Qnl0ZWNvZGVCYXNpY0Jsb2NrPiogYmFzaWNCbG9jaykgeyByZXR1cm4gKCpiYXNpY0Jsb2NrKS0+
bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKTsgfSk7CisgICAgICAgIC8vIFdlIGZvdW5kIHRoZSBibG9j
ayB3ZSB3ZXJlIGxvb2tpbmcgZm9yLgorICAgICAgICBpZiAoYmxvY2tDb250YWluc0J5dGVjb2Rl
T2Zmc2V0KCgqYmFzaWNCbG9jaykuZ2V0KCksIGJ5dGVjb2RlT2Zmc2V0KSkKKyAgICAgICAgICAg
IHJldHVybiAoKmJhc2ljQmxvY2spLmdldCgpOworCisgICAgICAgIC8vIEJhc2ljIGJsb2NrIGlz
IHRvIHRoZSBsZWZ0IG9mIHRoZSByZXR1cm5lZCBibG9jay4KKyAgICAgICAgaWYgKGJ5dGVjb2Rl
T2Zmc2V0IDwgKCpiYXNpY0Jsb2NrKS0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKSkgeworICAgICAg
ICAgICAgQVNTRVJUKGJhc2ljQmxvY2sgLSAxID49IG1fYmFzaWNCbG9ja3MuZGF0YSgpKTsKKyAg
ICAgICAgICAgIEFTU0VSVChibG9ja0NvbnRhaW5zQnl0ZWNvZGVPZmZzZXQoYmFzaWNCbG9ja1st
MV0uZ2V0KCksIGJ5dGVjb2RlT2Zmc2V0KSk7CisgICAgICAgICAgICByZXR1cm4gYmFzaWNCbG9j
a1stMV0uZ2V0KCk7CisgICAgICAgIH0KKworICAgICAgICAvLyBCYXNpYyBibG9jayBpcyB0byB0
aGUgcmlnaHQgb2YgdGhlIHJldHVybmVkIGJsb2NrLgorICAgICAgICBBU1NFUlQoJmJhc2ljQmxv
Y2tbMV0gPD0gJm1fYmFzaWNCbG9ja3MubGFzdCgpKTsKKyAgICAgICAgQVNTRVJUKGJsb2NrQ29u
dGFpbnNCeXRlY29kZU9mZnNldChiYXNpY0Jsb2NrWzFdLmdldCgpLCBieXRlY29kZU9mZnNldCkp
OworICAgICAgICByZXR1cm4gYmFzaWNCbG9ja1sxXS5nZXQoKTsKKyAgICB9CisKKyAgICBCeXRl
Y29kZUJhc2ljQmxvY2sqIGZpbmRCYXNpY0Jsb2NrV2l0aExlYWRlck9mZnNldCh1bnNpZ25lZCBs
ZWFkZXJPZmZzZXQpCisgICAgeworICAgICAgICByZXR1cm4gKCp0cnlCaW5hcnlTZWFyY2g8c3Rk
Ojp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4sIHVuc2lnbmVkPihtX2Jhc2ljQmxvY2tz
LCBtX2Jhc2ljQmxvY2tzLnNpemUoKSwgbGVhZGVyT2Zmc2V0LCBbXSAoc3RkOjp1bmlxdWVfcHRy
PEJ5dGVjb2RlQmFzaWNCbG9jaz4qIGJhc2ljQmxvY2spIHsgcmV0dXJuICgqYmFzaWNCbG9jaykt
PmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCk7IH0pKS5nZXQoKTsKKyAgICB9CisKK3ByaXZhdGU6Cisg
ICAgQmxvY2sqIG1fY29kZUJsb2NrOworICAgIEJhc2ljQmxvY2tzVmVjdG9yIG1fYmFzaWNCbG9j
a3M7CisgICAgdHlwZW5hbWUgQmxvY2s6OlVucGFja2VkSW5zdHJ1Y3Rpb25zJiBtX2luc3RydWN0
aW9uczsKK307CisKKwordGVtcGxhdGU8dHlwZW5hbWUgQmxvY2s+CitCeXRlY29kZUdyYXBoPEJs
b2NrPjo6Qnl0ZWNvZGVHcmFwaChCbG9jayogY29kZUJsb2NrLCB0eXBlbmFtZSBCbG9jazo6VW5w
YWNrZWRJbnN0cnVjdGlvbnMmIGluc3RydWN0aW9ucykKKyAgICA6IG1fY29kZUJsb2NrKGNvZGVC
bG9jaykKKyAgICAsIG1faW5zdHJ1Y3Rpb25zKGluc3RydWN0aW9ucykKK3sKKyAgICBBU1NFUlQo
bV9jb2RlQmxvY2spOworICAgIEJ5dGVjb2RlQmFzaWNCbG9jazo6Y29tcHV0ZUJ5dGVjb2RlQmFz
aWNCbG9ja3MobV9jb2RlQmxvY2ssIGluc3RydWN0aW9ucy5iZWdpbigpLCBpbnN0cnVjdGlvbnMu
c2l6ZSgpLCBtX2Jhc2ljQmxvY2tzKTsKKyAgICBBU1NFUlQobV9iYXNpY0Jsb2Nrcy5zaXplKCkp
OworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAKaW5kZXggMTdl
ODJhMmZiYmEwMTUwNDNlOTlkMzRlZDI1NjkzNzJiMzZmN2E4NS4uZDNlMGZjYmY4Zjc2MmVjZThm
OGUzNTE4NTJkMTNlZWNkNTU0YmMyNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAKQEAgLTMxLDE4
NSArMzEsNTQgQEAKICNpbmNsdWRlICJCeXRlY29kZVVzZURlZi5oIgogI2luY2x1ZGUgIkNvZGVC
bG9jay5oIgogI2luY2x1ZGUgIkZ1bGxCeXRlY29kZUxpdmVuZXNzLmgiCisjaW5jbHVkZSAiSW50
ZXJwcmV0ZXJJbmxpbmVzLmgiCiAjaW5jbHVkZSAiUHJlY2lzZUp1bXBUYXJnZXRzLmgiCiAKIG5h
bWVzcGFjZSBKU0MgewogCiBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OkJ5dGVjb2RlTGl2ZW5l
c3NBbmFseXNpcyhDb2RlQmxvY2sqIGNvZGVCbG9jaykKLSAgICA6IG1fY29kZUJsb2NrKGNvZGVC
bG9jaykKKyAgICA6IG1fZ3JhcGgoY29kZUJsb2NrLCBjb2RlQmxvY2stPmluc3RydWN0aW9ucygp
KQogewotICAgIEFTU0VSVChtX2NvZGVCbG9jayk7CiAgICAgY29tcHV0ZSgpOwogfQogCi1zdGF0
aWMgYm9vbCBpc1ZhbGlkUmVnaXN0ZXJGb3JMaXZlbmVzcyhDb2RlQmxvY2sqIGNvZGVCbG9jaywg
aW50IG9wZXJhbmQpCit0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgordm9pZCBCeXRlY29kZUxp
dmVuZXNzQW5hbHlzaXM6OmNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIE9wY29kZUlEIG9wY29kZUlELCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIEZh
c3RCaXRWZWN0b3ImLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQogewotICAgIGlmIChjb2RlQmxv
Y2stPmlzQ29uc3RhbnRSZWdpc3RlckluZGV4KG9wZXJhbmQpKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgCi0gICAgVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWcob3BlcmFuZCk7Ci0gICAg
cmV0dXJuIHZpcnR1YWxSZWcuaXNMb2NhbCgpOwotfQotCi1zdGF0aWMgdW5zaWduZWQgZ2V0TGVh
ZGVyT2Zmc2V0Rm9yQmFzaWNCbG9jayhzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2Nr
PiogYmFzaWNCbG9jaykKLXsKLSAgICByZXR1cm4gKCpiYXNpY0Jsb2NrKS0+bGVhZGVyQnl0ZWNv
ZGVPZmZzZXQoKTsKLX0KLQotc3RhdGljIEJ5dGVjb2RlQmFzaWNCbG9jayogZmluZEJhc2ljQmxv
Y2tXaXRoTGVhZGVyT2Zmc2V0KFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Js
b2NrPj4mIGJhc2ljQmxvY2tzLCB1bnNpZ25lZCBsZWFkZXJPZmZzZXQpCi17Ci0gICAgcmV0dXJu
ICgqdHJ5QmluYXJ5U2VhcmNoPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+LCB1
bnNpZ25lZD4oYmFzaWNCbG9ja3MsIGJhc2ljQmxvY2tzLnNpemUoKSwgbGVhZGVyT2Zmc2V0LCBn
ZXRMZWFkZXJPZmZzZXRGb3JCYXNpY0Jsb2NrKSkuZ2V0KCk7Ci19Ci0KLXN0YXRpYyBib29sIGJs
b2NrQ29udGFpbnNCeXRlY29kZU9mZnNldChCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrLCB1bnNp
Z25lZCBieXRlY29kZU9mZnNldCkKLXsKLSAgICB1bnNpZ25lZCBsZWFkZXJPZmZzZXQgPSBibG9j
ay0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKTsKLSAgICByZXR1cm4gYnl0ZWNvZGVPZmZzZXQgPj0g
bGVhZGVyT2Zmc2V0ICYmIGJ5dGVjb2RlT2Zmc2V0IDwgbGVhZGVyT2Zmc2V0ICsgYmxvY2stPnRv
dGFsQnl0ZWNvZGVMZW5ndGgoKTsKLX0KLQotc3RhdGljIEJ5dGVjb2RlQmFzaWNCbG9jayogZmlu
ZEJhc2ljQmxvY2tGb3JCeXRlY29kZU9mZnNldChWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVj
b2RlQmFzaWNCbG9jaz4+JiBiYXNpY0Jsb2NrcywgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpCi17
Ci0vKgotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBiYXNpY0Jsb2Nrcy5zaXplKCk7IGkr
KykgewotICAgICAgICBpZiAoYmxvY2tDb250YWluc0J5dGVjb2RlT2Zmc2V0KGJhc2ljQmxvY2tz
W2ldLmdldCgpLCBieXRlY29kZU9mZnNldCkpCi0gICAgICAgICAgICByZXR1cm4gYmFzaWNCbG9j
a3NbaV0uZ2V0KCk7Ci0gICAgfQotICAgIHJldHVybiAwOwotKi8KLSAgICBzdGQ6OnVuaXF1ZV9w
dHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiogYmFzaWNCbG9jayA9IGFwcHJveGltYXRlQmluYXJ5U2Vh
cmNoPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+LCB1bnNpZ25lZD4oCi0gICAg
ICAgIGJhc2ljQmxvY2tzLCBiYXNpY0Jsb2Nrcy5zaXplKCksIGJ5dGVjb2RlT2Zmc2V0LCBnZXRM
ZWFkZXJPZmZzZXRGb3JCYXNpY0Jsb2NrKTsKLSAgICAvLyBXZSBmb3VuZCB0aGUgYmxvY2sgd2Ug
d2VyZSBsb29raW5nIGZvci4KLSAgICBpZiAoYmxvY2tDb250YWluc0J5dGVjb2RlT2Zmc2V0KCgq
YmFzaWNCbG9jaykuZ2V0KCksIGJ5dGVjb2RlT2Zmc2V0KSkKLSAgICAgICAgcmV0dXJuICgqYmFz
aWNCbG9jaykuZ2V0KCk7Ci0KLSAgICAvLyBCYXNpYyBibG9jayBpcyB0byB0aGUgbGVmdCBvZiB0
aGUgcmV0dXJuZWQgYmxvY2suCi0gICAgaWYgKGJ5dGVjb2RlT2Zmc2V0IDwgKCpiYXNpY0Jsb2Nr
KS0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKSkgewotICAgICAgICBBU1NFUlQoYmFzaWNCbG9jayAt
IDEgPj0gYmFzaWNCbG9ja3MuZGF0YSgpKTsKLSAgICAgICAgQVNTRVJUKGJsb2NrQ29udGFpbnNC
eXRlY29kZU9mZnNldChiYXNpY0Jsb2NrWy0xXS5nZXQoKSwgYnl0ZWNvZGVPZmZzZXQpKTsKLSAg
ICAgICAgcmV0dXJuIGJhc2ljQmxvY2tbLTFdLmdldCgpOwotICAgIH0KLQotICAgIC8vIEJhc2lj
IGJsb2NrIGlzIHRvIHRoZSByaWdodCBvZiB0aGUgcmV0dXJuZWQgYmxvY2suCi0gICAgQVNTRVJU
KCZiYXNpY0Jsb2NrWzFdIDw9ICZiYXNpY0Jsb2Nrcy5sYXN0KCkpOwotICAgIEFTU0VSVChibG9j
a0NvbnRhaW5zQnl0ZWNvZGVPZmZzZXQoYmFzaWNCbG9ja1sxXS5nZXQoKSwgYnl0ZWNvZGVPZmZz
ZXQpKTsKLSAgICByZXR1cm4gYmFzaWNCbG9ja1sxXS5nZXQoKTsKLX0KLQotLy8gU2ltcGxpZmll
ZCBpbnRlcmZhY2UgdG8gYnl0ZWNvZGUgdXNlL2RlZiwgd2hpY2ggZGV0ZXJtaW5lcyBkZWZzIGZp
cnN0IGFuZCB0aGVuIHVzZXMsIGFuZCBpbmNsdWRlcwotLy8gZXhjZXB0aW9uIGhhbmRsZXJzIGlu
IHRoZSB1c2VzLgotdGVtcGxhdGU8dHlwZW5hbWUgVXNlRnVuY3RvciwgdHlwZW5hbWUgRGVmRnVu
Y3Rvcj4KLXN0YXRpYyB2b2lkIHN0ZXBPdmVySW5zdHJ1Y3Rpb24oQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2ssIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0
ZWNvZGVCYXNpY0Jsb2NrPj4mIGJhc2ljQmxvY2tzLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwg
Y29uc3QgVXNlRnVuY3RvciYgdXNlLCBjb25zdCBEZWZGdW5jdG9yJiBkZWYpCi17Ci0gICAgLy8g
VGhpcyBhYnN0cmFjdGx5IGV4ZWN1dGUgdGhlIGluc3RydWN0aW9uIGluIHJldmVyc2UuIEluc3Ry
dWN0aW9ucyBsb2dpY2FsbHkgZmlyc3QgdXNlIG9wZXJhbmRzIGFuZAotICAgIC8vIHRoZW4gZGVm
aW5lIG9wZXJhbmRzLiBUaGlzIGxvZ2ljYWwgb3JkZXJpbmcgaXMgbmVjZXNzYXJ5IGZvciBvcGVy
YXRpb25zIHRoYXQgdXNlIGFuZCBkZWYgdGhlIHNhbWUKLSAgICAvLyBvcGVyYW5kLCBsaWtlOgot
ICAgIC8vCi0gICAgLy8gICAgIG9wX2FkZCBsb2MxLCBsb2MxLCBsb2MyCi0gICAgLy8KLSAgICAv
LyBUaGUgdXNlIG9mIGxvYzEgaGFwcGVucyBiZWZvcmUgdGhlIGRlZiBvZiBsb2MxLiBUaGF0J3Mg
YSBzZW1hbnRpYyByZXF1aXJlbWVudCBzaW5jZSB0aGUgYWRkCi0gICAgLy8gb3BlcmF0aW9uIGNh
bm5vdCB0cmF2ZWwgZm9yd2FyZCBpbiB0aW1lIHRvIHJlYWQgdGhlIHZhbHVlIHRoYXQgaXQgd2ls
bCBwcm9kdWNlIGFmdGVyIHJlYWRpbmcgdGhhdAotICAgIC8vIHZhbHVlLiBTaW5jZSB3ZSBhcmUg
ZXhlY3V0aW5nIGluIHJldmVyc2UsIHRoaXMgbWVhbnMgdGhhdCB3ZSBtdXN0IGRvIGRlZnMgYmVm
b3JlIHVzZXMgKHJldmVyc2Ugb2YKLSAgICAvLyB1c2VzIGJlZm9yZSBkZWZzKS4KLSAgICAvLwot
ICAgIC8vIFNpbmNlIHRoaXMgaXMgYSBsaXZlbmVzcyBhbmFseXNpcywgdGhpcyBvcmRlcmluZyBl
bmRzIHVwIGJlaW5nIHBhcnRpY3VsYXJseSBpbXBvcnRhbnQ6IGlmIHdlIGRpZAotICAgIC8vIHVz
ZXMgYmVmb3JlIGRlZnMsIHRoZW4gdGhlIGFkZCBvcGVyYXRpb24gYWJvdmUgd291bGQgYXBwZWFy
IHRvIG5vdCBoYXZlIGxvYzEgbGl2ZSwgc2luY2Ugd2UnZAotICAgIC8vIGZpcnN0IGFkZCBpdCB0
byB0aGUgb3V0IHNldCAodGhlIHVzZSksIGFuZCB0aGVuIHdlJ2QgcmVtb3ZlIGl0ICh0aGUgZGVm
KS4KLSAgICAKLSAgICBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KAotICAgICAgICBjb2Rl
QmxvY2ssIGJsb2NrLCBieXRlY29kZU9mZnNldCwKLSAgICAgICAgWyZdIChDb2RlQmxvY2sqIGNv
ZGVCbG9jaywgSW5zdHJ1Y3Rpb24qLCBPcGNvZGVJRCwgaW50IG9wZXJhbmQpIHsKLSAgICAgICAg
ICAgIGlmIChpc1ZhbGlkUmVnaXN0ZXJGb3JMaXZlbmVzcyhjb2RlQmxvY2ssIG9wZXJhbmQpKQot
ICAgICAgICAgICAgICAgIGRlZihWaXJ0dWFsUmVnaXN0ZXIob3BlcmFuZCkudG9Mb2NhbCgpKTsK
LSAgICAgICAgfSk7Ci0KLSAgICBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAotICAgICAg
ICBjb2RlQmxvY2ssIGJsb2NrLCBieXRlY29kZU9mZnNldCwKLSAgICAgICAgWyZdIChDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgSW5zdHJ1Y3Rpb24qLCBPcGNvZGVJRCwgaW50IG9wZXJhbmQpIHsKLSAg
ICAgICAgICAgIGlmIChpc1ZhbGlkUmVnaXN0ZXJGb3JMaXZlbmVzcyhjb2RlQmxvY2ssIG9wZXJh
bmQpKQotICAgICAgICAgICAgICAgIHVzZShWaXJ0dWFsUmVnaXN0ZXIob3BlcmFuZCkudG9Mb2Nh
bCgpKTsKLSAgICAgICAgfSk7Ci0KLSAgICAvLyBJZiB3ZSBoYXZlIGFuIGV4Y2VwdGlvbiBoYW5k
bGVyLCB3ZSB3YW50IHRoZSBsaXZlLWluIHZhcmlhYmxlcyBvZiB0aGUgCi0gICAgLy8gZXhjZXB0
aW9uIGhhbmRsZXIgYmxvY2sgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIGxpdmUtaW4gb2YgdGhpcyBw
YXJ0aWN1bGFyIGJ5dGVjb2RlLgotICAgIGlmIChIYW5kbGVySW5mbyogaGFuZGxlciA9IGNvZGVC
bG9jay0+aGFuZGxlckZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KSkgewotICAgICAg
ICAvLyBGSVhNRTogVGhpcyByZXN1bWUgY2hlY2sgc2hvdWxkIG5vdCBiZSBuZWVkZWQuCi0gICAg
ICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTkyODEKLSAg
ICAgICAgSW50ZXJwcmV0ZXIqIGludGVycHJldGVyID0gY29kZUJsb2NrLT52bSgpLT5pbnRlcnBy
ZXRlcjsKLSAgICAgICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luID0gY29kZUJsb2Nr
LT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpOwotICAgICAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rp
b24gPSAmaW5zdHJ1Y3Rpb25zQmVnaW5bYnl0ZWNvZGVPZmZzZXRdOwotICAgICAgICBPcGNvZGVJ
RCBvcGNvZGVJRCA9IGludGVycHJldGVyLT5nZXRPcGNvZGVJRChpbnN0cnVjdGlvbi0+dS5vcGNv
ZGUpOwotICAgICAgICBpZiAob3Bjb2RlSUQgIT0gb3BfcmVzdW1lKSB7Ci0gICAgICAgICAgICBC
eXRlY29kZUJhc2ljQmxvY2sqIGhhbmRsZXJCbG9jayA9IGZpbmRCYXNpY0Jsb2NrV2l0aExlYWRl
ck9mZnNldChiYXNpY0Jsb2NrcywgaGFuZGxlci0+dGFyZ2V0KTsKLSAgICAgICAgICAgIEFTU0VS
VChoYW5kbGVyQmxvY2spOwotICAgICAgICAgICAgaGFuZGxlckJsb2NrLT5pbigpLmZvckVhY2hT
ZXRCaXQodXNlKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotc3RhdGljIHZvaWQgc3RlcE92ZXJJ
bnN0cnVjdGlvbihDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9j
aywgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9j
a3MsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBGYXN0Qml0VmVjdG9yJiBvdXQpCi17Ci0gICAg
c3RlcE92ZXJJbnN0cnVjdGlvbigKLSAgICAgICAgY29kZUJsb2NrLCBibG9jaywgYmFzaWNCbG9j
a3MsIGJ5dGVjb2RlT2Zmc2V0LAotICAgICAgICBbJl0gKHVuc2lnbmVkIGJpdEluZGV4KSB7Ci0g
ICAgICAgICAgICAvLyBUaGlzIGlzIHRoZSB1c2UgZnVuY3Rvciwgc28gd2Ugc2V0IHRoZSBiaXQu
Ci0gICAgICAgICAgICBvdXQuc2V0KGJpdEluZGV4KTsKLSAgICAgICAgfSwKLSAgICAgICAgWyZd
ICh1bnNpZ25lZCBiaXRJbmRleCkgewotICAgICAgICAgICAgLy8gVGhpcyBpcyB0aGUgZGVmIGZ1
bmN0b3IsIHNvIHdlIGNsZWFyIHRoZSBiaXQuCi0gICAgICAgICAgICBvdXQuY2xlYXIoYml0SW5k
ZXgpOwotICAgICAgICB9KTsKLX0KLQotc3RhdGljIHZvaWQgY29tcHV0ZUxvY2FsTGl2ZW5lc3NG
b3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Jsb2Nr
KiBibG9jaywgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYgYmFz
aWNCbG9ja3MsIHVuc2lnbmVkIHRhcmdldE9mZnNldCwgRmFzdEJpdFZlY3RvciYgcmVzdWx0KQot
ewotICAgIEFTU0VSVCghYmxvY2stPmlzRXhpdEJsb2NrKCkpOwotICAgIEFTU0VSVCghYmxvY2st
PmlzRW50cnlCbG9jaygpKTsKLQotICAgIEZhc3RCaXRWZWN0b3Igb3V0ID0gYmxvY2stPm91dCgp
OwotCi0gICAgZm9yIChpbnQgaSA9IGJsb2NrLT5ieXRlY29kZU9mZnNldHMoKS5zaXplKCkgLSAx
OyBpID49IDA7IGktLSkgewotICAgICAgICB1bnNpZ25lZCBieXRlY29kZU9mZnNldCA9IGJsb2Nr
LT5ieXRlY29kZU9mZnNldHMoKVtpXTsKLSAgICAgICAgaWYgKHRhcmdldE9mZnNldCA+IGJ5dGVj
b2RlT2Zmc2V0KQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIAotICAgICAgICBzdGVwT3Zl
ckluc3RydWN0aW9uKGNvZGVCbG9jaywgYmxvY2ssIGJhc2ljQmxvY2tzLCBieXRlY29kZU9mZnNl
dCwgb3V0KTsKLSAgICB9Ci0KLSAgICByZXN1bHQuc2V0KG91dCk7CisgICAgSlNDOjpjb21wdXRl
RGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9jaywgb3Bjb2RlSUQsIGluc3RydWN0aW9uLCBm
dW5jdG9yKTsKIH0KIAotc3RhdGljIHZvaWQgY29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCbG9jayhD
b2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaywgVmVjdG9yPHN0
ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9ja3MpCit0ZW1wbGF0
ZTx0eXBlbmFtZSBGdW5jdG9yPgordm9pZCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1
dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIE9wY29kZUlEIG9w
Y29kZUlELCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIEZhc3RCaXRWZWN0b3ImLCBjb25zdCBG
dW5jdG9yJiBmdW5jdG9yKQogewotICAgIGlmIChibG9jay0+aXNFeGl0QmxvY2soKSB8fCBibG9j
ay0+aXNFbnRyeUJsb2NrKCkpCi0gICAgICAgIHJldHVybjsKLSAgICBjb21wdXRlTG9jYWxMaXZl
bmVzc0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9jaywgYmxvY2ssIGJhc2ljQmxvY2tzLCBibG9j
ay0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKSwgYmxvY2stPmluKCkpOworICAgIEpTQzo6Y29tcHV0
ZVVzZXNGb3JCeXRlY29kZU9mZnNldChjb2RlQmxvY2ssIG9wY29kZUlELCBpbnN0cnVjdGlvbiwg
ZnVuY3Rvcik7CiB9CiAKIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpydW5MaXZlbmVz
c0ZpeHBvaW50KCkKIHsKLSAgICBVbmxpbmtlZENvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2sg
PSBtX2NvZGVCbG9jay0+dW5saW5rZWRDb2RlQmxvY2soKTsKKyAgICBDb2RlQmxvY2sqIGNvZGVC
bG9jayA9IG1fZ3JhcGguY29kZUJsb2NrKCk7CisgICAgVW5saW5rZWRDb2RlQmxvY2sqIHVubGlu
a2VkQ29kZUJsb2NrID0gY29kZUJsb2NrLT51bmxpbmtlZENvZGVCbG9jaygpOwogICAgIHVuc2ln
bmVkIG51bWJlck9mVmFyaWFibGVzID0gdW5saW5rZWRDb2RlQmxvY2stPm1fbnVtQ2FsbGVlTG9j
YWxzOwogCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fYmFzaWNCbG9ja3Muc2l6ZSgp
OyBpKyspIHsKLSAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jayA9IG1fYmFzaWNCbG9j
a3NbaV0uZ2V0KCk7CisgICAgZm9yIChzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2Nr
PiYgYmxvY2sgOiBtX2dyYXBoLmJhc2ljQmxvY2tzKCkpIHsKICAgICAgICAgYmxvY2stPmluKCku
cmVzaXplKG51bWJlck9mVmFyaWFibGVzKTsKICAgICAgICAgYmxvY2stPm91dCgpLnJlc2l6ZShu
dW1iZXJPZlZhcmlhYmxlcyk7CiAgICAgfQogCiAgICAgYm9vbCBjaGFuZ2VkOwotICAgIG1fYmFz
aWNCbG9ja3MubGFzdCgpLT5pbigpLmNsZWFyQWxsKCk7Ci0gICAgbV9iYXNpY0Jsb2Nrcy5sYXN0
KCktPm91dCgpLmNsZWFyQWxsKCk7CisgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBsYXN0QmxvY2sg
PSBtX2dyYXBoLmJhc2ljQmxvY2tzKCkubGFzdCgpLmdldCgpOworICAgIGxhc3RCbG9jay0+aW4o
KS5jbGVhckFsbCgpOworICAgIGxhc3RCbG9jay0+b3V0KCkuY2xlYXJBbGwoKTsKICAgICBGYXN0
Qml0VmVjdG9yIG5ld091dDsKLSAgICBuZXdPdXQucmVzaXplKG1fYmFzaWNCbG9ja3MubGFzdCgp
LT5vdXQoKS5udW1CaXRzKCkpOworICAgIG5ld091dC5yZXNpemUobGFzdEJsb2NrLT5vdXQoKS5u
dW1CaXRzKCkpOwogICAgIGRvIHsKICAgICAgICAgY2hhbmdlZCA9IGZhbHNlOwotICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSBtX2Jhc2ljQmxvY2tzLnNpemUoKSAtIDE7IGktLTspIHsKLSAgICAg
ICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2sgPSBtX2Jhc2ljQmxvY2tzW2ldLmdldCgp
OworICAgICAgICBmb3IgKHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+JiBibG9j
ayA6IG1fZ3JhcGguYmFzaWNCbG9ja3NJblJldmVyc2VPcmRlcigpKSB7CiAgICAgICAgICAgICBu
ZXdPdXQuY2xlYXJBbGwoKTsKLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgaiA9IDA7IGogPCBi
bG9jay0+c3VjY2Vzc29ycygpLnNpemUoKTsgaisrKQotICAgICAgICAgICAgICAgIG5ld091dC5t
ZXJnZShibG9jay0+c3VjY2Vzc29ycygpW2pdLT5pbigpKTsKKyAgICAgICAgICAgIGZvciAoQnl0
ZWNvZGVCYXNpY0Jsb2NrKiBzdWNjZXNzb3IgOiBibG9jay0+c3VjY2Vzc29ycygpKQorICAgICAg
ICAgICAgICAgIG5ld091dC5tZXJnZShzdWNjZXNzb3ItPmluKCkpOwogICAgICAgICAgICAgYm9v
bCBvdXREaWRDaGFuZ2UgPSBibG9jay0+b3V0KCkuc2V0QW5kQ2hlY2sobmV3T3V0KTsKLSAgICAg
ICAgICAgIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQmxvY2sobV9jb2RlQmxvY2ssIGJsb2NrLCBt
X2Jhc2ljQmxvY2tzKTsKKyAgICAgICAgICAgIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQmxvY2so
bV9ncmFwaCwgYmxvY2suZ2V0KCkpOwogICAgICAgICAgICAgY2hhbmdlZCB8PSBvdXREaWRDaGFu
Z2U7CiAgICAgICAgIH0KICAgICB9IHdoaWxlIChjaGFuZ2VkKTsKQEAgLTIxNywxMiArODYsMTIg
QEAgdm9pZCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OnJ1bkxpdmVuZXNzRml4cG9pbnQoKQog
CiB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Z2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29k
ZU9mZnNldCh1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgRmFzdEJpdFZlY3RvciYgcmVzdWx0KQog
ewotICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2sgPSBmaW5kQmFzaWNCbG9ja0ZvckJ5dGVj
b2RlT2Zmc2V0KG1fYmFzaWNCbG9ja3MsIGJ5dGVjb2RlT2Zmc2V0KTsKKyAgICBCeXRlY29kZUJh
c2ljQmxvY2sqIGJsb2NrID0gbV9ncmFwaC5maW5kQmFzaWNCbG9ja0ZvckJ5dGVjb2RlT2Zmc2V0
KGJ5dGVjb2RlT2Zmc2V0KTsKICAgICBBU1NFUlQoYmxvY2spOwogICAgIEFTU0VSVCghYmxvY2st
PmlzRW50cnlCbG9jaygpKTsKICAgICBBU1NFUlQoIWJsb2NrLT5pc0V4aXRCbG9jaygpKTsKICAg
ICByZXN1bHQucmVzaXplKGJsb2NrLT5vdXQoKS5udW1CaXRzKCkpOwotICAgIGNvbXB1dGVMb2Nh
bExpdmVuZXNzRm9yQnl0ZWNvZGVPZmZzZXQobV9jb2RlQmxvY2ssIGJsb2NrLCBtX2Jhc2ljQmxv
Y2tzLCBieXRlY29kZU9mZnNldCwgcmVzdWx0KTsKKyAgICBjb21wdXRlTG9jYWxMaXZlbmVzc0Zv
ckJ5dGVjb2RlT2Zmc2V0KG1fZ3JhcGgsIGJsb2NrLCBieXRlY29kZU9mZnNldCwgcmVzdWx0KTsK
IH0KIAogYm9vbCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6Om9wZXJhbmRJc0xpdmVBdEJ5dGVj
b2RlT2Zmc2V0KGludCBvcGVyYW5kLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCkKQEAgLTI0NCwx
MSArMTEzLDExIEBAIEZhc3RCaXRWZWN0b3IgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpnZXRM
aXZlbmVzc0luZm9BdEJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkCiB2b2lkIEJ5dGVjb2RlTGl2ZW5l
c3NBbmFseXNpczo6Y29tcHV0ZUZ1bGxMaXZlbmVzcyhGdWxsQnl0ZWNvZGVMaXZlbmVzcyYgcmVz
dWx0KQogewogICAgIEZhc3RCaXRWZWN0b3Igb3V0OworICAgIENvZGVCbG9jayogY29kZUJsb2Nr
ID0gbV9ncmFwaC5jb2RlQmxvY2soKTsKICAgICAKLSAgICByZXN1bHQubV9tYXAucmVzaXplKG1f
Y29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5zaXplKCkpOworICAgIHJlc3VsdC5tX21hcC5yZXNp
emUoY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5zaXplKCkpOwogICAgIAotICAgIGZvciAodW5z
aWduZWQgaSA9IG1fYmFzaWNCbG9ja3Muc2l6ZSgpOyBpLS07KSB7Ci0gICAgICAgIEJ5dGVjb2Rl
QmFzaWNCbG9jayogYmxvY2sgPSBtX2Jhc2ljQmxvY2tzW2ldLmdldCgpOworICAgIGZvciAoc3Rk
Ojp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4mIGJsb2NrIDogbV9ncmFwaC5iYXNpY0Js
b2Nrc0luUmV2ZXJzZU9yZGVyKCkpIHsKICAgICAgICAgaWYgKGJsb2NrLT5pc0VudHJ5QmxvY2so
KSB8fCBibG9jay0+aXNFeGl0QmxvY2soKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICAKQEAgLTI1Niw3ICsxMjUsNyBAQCB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Y29t
cHV0ZUZ1bGxMaXZlbmVzcyhGdWxsQnl0ZWNvZGVMaXZlbmVzcyYgcmVzdWx0KQogICAgICAgICAK
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gYmxvY2stPmJ5dGVjb2RlT2Zmc2V0cygpLnNpemUo
KTsgaS0tOykgewogICAgICAgICAgICAgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQgPSBibG9jay0+
Ynl0ZWNvZGVPZmZzZXRzKClbaV07Ci0gICAgICAgICAgICBzdGVwT3Zlckluc3RydWN0aW9uKG1f
Y29kZUJsb2NrLCBibG9jaywgbV9iYXNpY0Jsb2NrcywgYnl0ZWNvZGVPZmZzZXQsIG91dCk7Cisg
ICAgICAgICAgICBzdGVwT3Zlckluc3RydWN0aW9uKG1fZ3JhcGgsIGJ5dGVjb2RlT2Zmc2V0LCBv
dXQpOwogICAgICAgICAgICAgcmVzdWx0Lm1fbWFwW2J5dGVjb2RlT2Zmc2V0XSA9IG91dDsKICAg
ICAgICAgfQogICAgIH0KQEAgLTI2NiwxMSArMTM1LDExIEBAIHZvaWQgQnl0ZWNvZGVMaXZlbmVz
c0FuYWx5c2lzOjpjb21wdXRlS2lsbHMoQnl0ZWNvZGVLaWxscyYgcmVzdWx0KQogewogICAgIEZh
c3RCaXRWZWN0b3Igb3V0OwogICAgIAotICAgIHJlc3VsdC5tX2NvZGVCbG9jayA9IG1fY29kZUJs
b2NrOwotICAgIHJlc3VsdC5tX2tpbGxTZXRzID0gc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZUtp
bGxzOjpLaWxsU2V0W10+KG1fY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5zaXplKCkpOworICAg
IENvZGVCbG9jayogY29kZUJsb2NrID0gbV9ncmFwaC5jb2RlQmxvY2soKTsKKyAgICByZXN1bHQu
bV9jb2RlQmxvY2sgPSBjb2RlQmxvY2s7CisgICAgcmVzdWx0Lm1fa2lsbFNldHMgPSBzdGQ6Om1h
a2VfdW5pcXVlPEJ5dGVjb2RlS2lsbHM6OktpbGxTZXRbXT4oY29kZUJsb2NrLT5pbnN0cnVjdGlv
bnMoKS5zaXplKCkpOwogICAgIAotICAgIGZvciAodW5zaWduZWQgaSA9IG1fYmFzaWNCbG9ja3Mu
c2l6ZSgpOyBpLS07KSB7Ci0gICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2sgPSBtX2Jh
c2ljQmxvY2tzW2ldLmdldCgpOworICAgIGZvciAoc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFz
aWNCbG9jaz4mIGJsb2NrIDogbV9ncmFwaC5iYXNpY0Jsb2Nrc0luUmV2ZXJzZU9yZGVyKCkpIHsK
ICAgICAgICAgaWYgKGJsb2NrLT5pc0VudHJ5QmxvY2soKSB8fCBibG9jay0+aXNFeGl0QmxvY2so
KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAKQEAgLTI3OSw3ICsxNDgsNyBAQCB2
b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0ZUtpbGxzKEJ5dGVjb2RlS2lsbHMm
IHJlc3VsdCkKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gYmxvY2stPmJ5dGVjb2RlT2Zmc2V0
cygpLnNpemUoKTsgaS0tOykgewogICAgICAgICAgICAgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQg
PSBibG9jay0+Ynl0ZWNvZGVPZmZzZXRzKClbaV07CiAgICAgICAgICAgICBzdGVwT3Zlckluc3Ry
dWN0aW9uKAotICAgICAgICAgICAgICAgIG1fY29kZUJsb2NrLCBibG9jaywgbV9iYXNpY0Jsb2Nr
cywgYnl0ZWNvZGVPZmZzZXQsCisgICAgICAgICAgICAgICAgbV9ncmFwaCwgYnl0ZWNvZGVPZmZz
ZXQsIG91dCwKICAgICAgICAgICAgICAgICBbJl0gKHVuc2lnbmVkIGluZGV4KSB7CiAgICAgICAg
ICAgICAgICAgICAgIC8vIFRoaXMgaXMgZm9yIHVzZXMuCiAgICAgICAgICAgICAgICAgICAgIGlm
IChvdXQuZ2V0KGluZGV4KSkKQEAgLTI5NywxMiArMTY2LDEzIEBAIHZvaWQgQnl0ZWNvZGVMaXZl
bmVzc0FuYWx5c2lzOjpjb21wdXRlS2lsbHMoQnl0ZWNvZGVLaWxscyYgcmVzdWx0KQogCiB2b2lk
IEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6ZHVtcFJlc3VsdHMoKQogewotICAgIGRhdGFMb2co
IlxuRHVtcGluZyBieXRlY29kZSBsaXZlbmVzcyBmb3IgIiwgKm1fY29kZUJsb2NrLCAiOlxuIik7
Ci0gICAgSW50ZXJwcmV0ZXIqIGludGVycHJldGVyID0gbV9jb2RlQmxvY2stPnZtKCktPmludGVy
cHJldGVyOwotICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiA9IG1fY29kZUJsb2Nr
LT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBt
X2Jhc2ljQmxvY2tzLnNpemUoKTsgaSsrKSB7Ci0gICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9jayog
YmxvY2sgPSBtX2Jhc2ljQmxvY2tzW2ldLmdldCgpOwotICAgICAgICBkYXRhTG9nRigiXG5CeXRl
Y29kZSBiYXNpYyBibG9jayAldTogJXAgKG9mZnNldDogJXUsIGxlbmd0aDogJXUpXG4iLCBpLCBi
bG9jaywgYmxvY2stPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCksIGJsb2NrLT50b3RhbEJ5dGVjb2Rl
TGVuZ3RoKCkpOworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gbV9ncmFwaC5jb2RlQmxvY2so
KTsKKyAgICBkYXRhTG9nKCJcbkR1bXBpbmcgYnl0ZWNvZGUgbGl2ZW5lc3MgZm9yICIsICpjb2Rl
QmxvY2ssICI6XG4iKTsKKyAgICBJbnRlcnByZXRlciogaW50ZXJwcmV0ZXIgPSBjb2RlQmxvY2st
PnZtKCktPmludGVycHJldGVyOworICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiA9
IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsKKyAgICB1bnNpZ25lZCBpID0gMDsK
KyAgICBmb3IgKHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+JiBibG9jayA6IG1f
Z3JhcGguYmFzaWNCbG9ja3MoKSkgeworICAgICAgICBkYXRhTG9nRigiXG5CeXRlY29kZSBiYXNp
YyBibG9jayAldTogJXAgKG9mZnNldDogJXUsIGxlbmd0aDogJXUpXG4iLCBpKyssIGJsb2NrLmdl
dCgpLCBibG9jay0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKSwgYmxvY2stPnRvdGFsQnl0ZWNvZGVM
ZW5ndGgoKSk7CiAgICAgICAgIGRhdGFMb2dGKCJTdWNjZXNzb3JzOiAiKTsKICAgICAgICAgZm9y
ICh1bnNpZ25lZCBqID0gMDsgaiA8IGJsb2NrLT5zdWNjZXNzb3JzKCkuc2l6ZSgpOyBqKyspIHsK
ICAgICAgICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogc3VjY2Vzc29yID0gYmxvY2stPnN1Y2Nl
c3NvcnMoKVtqXTsKQEAgLTMxMCwxMSArMTgwLDExIEBAIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0Fu
YWx5c2lzOjpkdW1wUmVzdWx0cygpCiAgICAgICAgIH0KICAgICAgICAgZGF0YUxvZ0YoIlxuIik7
CiAgICAgICAgIGlmIChibG9jay0+aXNFbnRyeUJsb2NrKCkpIHsKLSAgICAgICAgICAgIGRhdGFM
b2dGKCJFbnRyeSBibG9jayAlcFxuIiwgYmxvY2spOworICAgICAgICAgICAgZGF0YUxvZ0YoIkVu
dHJ5IGJsb2NrICVwXG4iLCBibG9jay5nZXQoKSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgfQogICAgICAgICBpZiAoYmxvY2stPmlzRXhpdEJsb2NrKCkpIHsKLSAgICAgICAgICAg
IGRhdGFMb2dGKCJFeGl0IGJsb2NrOiAlcFxuIiwgYmxvY2spOworICAgICAgICAgICAgZGF0YUxv
Z0YoIkV4aXQgYmxvY2s6ICVwXG4iLCBibG9jay5nZXQoKSk7CiAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgfQogICAgICAgICBmb3IgKHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0ID0gYmxv
Y2stPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCk7IGJ5dGVjb2RlT2Zmc2V0IDwgYmxvY2stPmxlYWRl
ckJ5dGVjb2RlT2Zmc2V0KCkgKyBibG9jay0+dG90YWxCeXRlY29kZUxlbmd0aCgpOykgewpAQCAt
MzI3LDcgKzE5Nyw3IEBAIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpkdW1wUmVzdWx0
cygpCiAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2dGKCIldSAiLCBqKTsKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIGRhdGFMb2dGKCJcbiIpOwotICAgICAgICAgICAgbV9jb2RlQmxvY2st
PmR1bXBCeXRlY29kZShXVEY6OmRhdGFGaWxlKCksIG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3Qo
KS0+Z2xvYmFsRXhlYygpLCBpbnN0cnVjdGlvbnNCZWdpbiwgY3VycmVudEluc3RydWN0aW9uKTsK
KyAgICAgICAgICAgIGNvZGVCbG9jay0+ZHVtcEJ5dGVjb2RlKFdURjo6ZGF0YUZpbGUoKSwgY29k
ZUJsb2NrLT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpLCBpbnN0cnVjdGlvbnNCZWdpbiwg
Y3VycmVudEluc3RydWN0aW9uKTsKIAogICAgICAgICAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBp
bnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25zQmVnaW5bYnl0ZWNvZGVPZmZzZXRd
LnUub3Bjb2RlKTsKICAgICAgICAgICAgIHVuc2lnbmVkIG9wY29kZUxlbmd0aCA9IG9wY29kZUxl
bmd0aHNbb3Bjb2RlSURdOwpAQCAtMzQ2LDggKzIxNiw2IEBAIHZvaWQgQnl0ZWNvZGVMaXZlbmVz
c0FuYWx5c2lzOjpkdW1wUmVzdWx0cygpCiAKIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lz
Ojpjb21wdXRlKCkKIHsKLSAgICBjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2NrcyhtX2NvZGVCbG9j
aywgbV9iYXNpY0Jsb2Nrcyk7Ci0gICAgQVNTRVJUKG1fYmFzaWNCbG9ja3Muc2l6ZSgpKTsKICAg
ICBydW5MaXZlbmVzc0ZpeHBvaW50KCk7CiAKICAgICBpZiAoT3B0aW9uczo6ZHVtcEJ5dGVjb2Rl
TGl2ZW5lc3NSZXN1bHRzKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmgKaW5kZXggZWNlMTZmMjFmMDE1MTBh
NjQyN2ZkODQxMTQwNzliZWQ4NzBjMDg3NS4uYTEwYzM1YzE2ZmVjZjg5MTZhN2RhZTA4ZmNlYTcw
Mjc4NjFhYzExOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuaApAQCAtMjMsMTAgKzIzLDExIEBACiAgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBCeXRlY29kZUxp
dmVuZXNzQW5hbHlzaXNfaAotI2RlZmluZSBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNfaAorI3By
YWdtYSBvbmNlCiAKICNpbmNsdWRlICJCeXRlY29kZUJhc2ljQmxvY2suaCIKKyNpbmNsdWRlICJC
eXRlY29kZUdyYXBoLmgiCisjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSA8d3RmL0Zh
c3RCaXRWZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KQEAgLTM0LDEzICszNSwyNyBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIEJ5
dGVjb2RlS2lsbHM7Ci1jbGFzcyBDb2RlQmxvY2s7CiBjbGFzcyBGdWxsQnl0ZWNvZGVMaXZlbmVz
czsKIAotY2xhc3MgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzIHsKK3RlbXBsYXRlPHR5cGVuYW1l
IERlcml2ZWRBbmFseXNpcz4KK2NsYXNzIEJ5dGVjb2RlTGl2ZW5lc3NMb2NhbFByb3BhZ2F0aW9u
IHsKK3Byb3RlY3RlZDoKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBHcmFwaCwgdHlwZW5hbWUgVXNl
RnVuY3RvciwgdHlwZW5hbWUgRGVmRnVuY3Rvcj4gdm9pZCBzdGVwT3Zlckluc3RydWN0aW9uKEdy
YXBoJiwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIEZhc3RCaXRWZWN0b3ImIG91dCwgY29uc3Qg
VXNlRnVuY3RvciYsIGNvbnN0IERlZkZ1bmN0b3ImKTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1l
IEdyYXBoPiB2b2lkIHN0ZXBPdmVySW5zdHJ1Y3Rpb24oR3JhcGgmLCB1bnNpZ25lZCBieXRlY29k
ZU9mZnNldCwgRmFzdEJpdFZlY3RvciYgb3V0KTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEdy
YXBoPiB2b2lkIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQnl0ZWNvZGVPZmZzZXQoR3JhcGgmLCBC
eXRlY29kZUJhc2ljQmxvY2sqLCB1bnNpZ25lZCB0YXJnZXRPZmZzZXQsIEZhc3RCaXRWZWN0b3Im
IHJlc3VsdCk7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBHcmFwaD4gdm9pZCBjb21wdXRlTG9j
YWxMaXZlbmVzc0ZvckJsb2NrKEdyYXBoJiwgQnl0ZWNvZGVCYXNpY0Jsb2NrKik7CisKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBHcmFwaD4gRmFzdEJpdFZlY3RvciBnZXRMaXZlbmVzc0luZm9BdEJ5
dGVjb2RlT2Zmc2V0KEdyYXBoJiwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpOworfTsKKworY2xh
c3MgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzIDogcHJpdmF0ZSBCeXRlY29kZUxpdmVuZXNzTG9j
YWxQcm9wYWdhdGlvbjxCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM+IHsKICAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShCeXRlY29kZUxpdmVuZXNz
QW5hbHlzaXMpOwogcHVibGljOgorICAgIGZyaWVuZCBjbGFzcyBCeXRlY29kZUxpdmVuZXNzTG9j
YWxQcm9wYWdhdGlvbjxCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM+OwogICAgIEJ5dGVjb2RlTGl2
ZW5lc3NBbmFseXNpcyhDb2RlQmxvY2sqKTsKICAgICAKICAgICBib29sIG9wZXJhbmRJc0xpdmVB
dEJ5dGVjb2RlT2Zmc2V0KGludCBvcGVyYW5kLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCk7CkBA
IC01NiwxNCArNzEsMTUgQEAgY2xhc3MgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzIHsKIAogICAg
IHZvaWQgZ2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29kZU9mZnNldCh1bnNpZ25lZCBieXRlY29kZU9m
ZnNldCwgRmFzdEJpdFZlY3RvciYpOwogCi0gICAgQ29kZUJsb2NrKiBtX2NvZGVCbG9jazsKLSAg
ICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+IG1fYmFzaWNCbG9j
a3M7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdm9pZCBjb21wdXRlRGVmc0ZvckJ5
dGVjb2RlT2Zmc2V0KENvZGVCbG9jayosIE9wY29kZUlELCBJbnN0cnVjdGlvbiosIEZhc3RCaXRW
ZWN0b3ImLCBjb25zdCBGdW5jdG9yJik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4g
dm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayosIE9wY29kZUlELCBJ
bnN0cnVjdGlvbiosIEZhc3RCaXRWZWN0b3ImLCBjb25zdCBGdW5jdG9yJik7CisKKyAgICBCeXRl
Y29kZUdyYXBoPENvZGVCbG9jaz4gbV9ncmFwaDsKIH07CiAKIGlubGluZSBib29sIG9wZXJhbmRJ
c0Fsd2F5c0xpdmUoaW50IG9wZXJhbmQpOwogaW5saW5lIGJvb2wgb3BlcmFuZFRoYXRJc05vdEFs
d2F5c0xpdmVJc0xpdmUoY29uc3QgRmFzdEJpdFZlY3RvciYgb3V0LCBpbnQgb3BlcmFuZCk7CiBp
bmxpbmUgYm9vbCBvcGVyYW5kSXNMaXZlKGNvbnN0IEZhc3RCaXRWZWN0b3ImIG91dCwgaW50IG9w
ZXJhbmQpOworaW5saW5lIGJvb2wgaXNWYWxpZFJlZ2lzdGVyRm9yTGl2ZW5lc3MoaW50IG9wZXJh
bmQpOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKLQotI2VuZGlmIC8vIEJ5dGVjb2RlTGl2ZW5lc3NB
bmFseXNpc19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVMaXZlbmVzc0FuYWx5c2lzSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGluZXMuaAppbmRleCA5YjVjNzU1ZmNi
NmNkNTE4MDUxNDUwMDc4OTIyYWM0ZDZkNGQyMzhmLi5jZjI3YzBmZGQzMTEyZDdmZWFiZWVhYTg0
ZDlmMmZhN2Q1ZGNjOWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNJbmxpbmVzLmgKQEAgLTI2
LDYgKzI2LDcgQEAKICNpZm5kZWYgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzSW5saW5lc19oCiAj
ZGVmaW5lIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGluZXNfaAogCisjaW5jbHVkZSAiQnl0
ZWNvZGVHcmFwaC5oIgogI2luY2x1ZGUgIkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5oIgogI2lu
Y2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKQEAgLTUwLDYgKzUx
LDEyMiBAQCBpbmxpbmUgYm9vbCBvcGVyYW5kSXNMaXZlKGNvbnN0IEZhc3RCaXRWZWN0b3ImIG91
dCwgaW50IG9wZXJhbmQpCiAgICAgcmV0dXJuIG9wZXJhbmRJc0Fsd2F5c0xpdmUob3BlcmFuZCkg
fHwgb3BlcmFuZFRoYXRJc05vdEFsd2F5c0xpdmVJc0xpdmUob3V0LCBvcGVyYW5kKTsKIH0KIAor
aW5saW5lIGJvb2wgaXNWYWxpZFJlZ2lzdGVyRm9yTGl2ZW5lc3MoaW50IG9wZXJhbmQpCit7Cisg
ICAgVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWcob3BlcmFuZCk7CisgICAgaWYgKHZpcnR1YWxS
ZWcuaXNDb25zdGFudCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHZpcnR1
YWxSZWcuaXNMb2NhbCgpOworfQorCisvLyBTaW1wbGlmaWVkIGludGVyZmFjZSB0byBieXRlY29k
ZSB1c2UvZGVmLCB3aGljaCBkZXRlcm1pbmVzIGRlZnMgZmlyc3QgYW5kIHRoZW4gdXNlcywgYW5k
IGluY2x1ZGVzCisvLyBleGNlcHRpb24gaGFuZGxlcnMgaW4gdGhlIHVzZXMuCit0ZW1wbGF0ZTx0
eXBlbmFtZSBEZXJpdmVkQW5hbHlzaXM+Cit0ZW1wbGF0ZTx0eXBlbmFtZSBHcmFwaCwgdHlwZW5h
bWUgVXNlRnVuY3RvciwgdHlwZW5hbWUgRGVmRnVuY3Rvcj4KK2lubGluZSB2b2lkIEJ5dGVjb2Rl
TGl2ZW5lc3NMb2NhbFByb3BhZ2F0aW9uPERlcml2ZWRBbmFseXNpcz46OnN0ZXBPdmVySW5zdHJ1
Y3Rpb24oR3JhcGgmIGdyYXBoLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgRmFzdEJpdFZlY3Rv
ciYgb3V0LCBjb25zdCBVc2VGdW5jdG9yJiB1c2UsIGNvbnN0IERlZkZ1bmN0b3ImIGRlZikKK3sK
KyAgICAvLyBUaGlzIGFic3RyYWN0bHkgZXhlY3V0ZSB0aGUgaW5zdHJ1Y3Rpb24gaW4gcmV2ZXJz
ZS4gSW5zdHJ1Y3Rpb25zIGxvZ2ljYWxseSBmaXJzdCB1c2Ugb3BlcmFuZHMgYW5kCisgICAgLy8g
dGhlbiBkZWZpbmUgb3BlcmFuZHMuIFRoaXMgbG9naWNhbCBvcmRlcmluZyBpcyBuZWNlc3Nhcnkg
Zm9yIG9wZXJhdGlvbnMgdGhhdCB1c2UgYW5kIGRlZiB0aGUgc2FtZQorICAgIC8vIG9wZXJhbmQs
IGxpa2U6CisgICAgLy8KKyAgICAvLyAgICAgb3BfYWRkIGxvYzEsIGxvYzEsIGxvYzIKKyAgICAv
LworICAgIC8vIFRoZSB1c2Ugb2YgbG9jMSBoYXBwZW5zIGJlZm9yZSB0aGUgZGVmIG9mIGxvYzEu
IFRoYXQncyBhIHNlbWFudGljIHJlcXVpcmVtZW50IHNpbmNlIHRoZSBhZGQKKyAgICAvLyBvcGVy
YXRpb24gY2Fubm90IHRyYXZlbCBmb3J3YXJkIGluIHRpbWUgdG8gcmVhZCB0aGUgdmFsdWUgdGhh
dCBpdCB3aWxsIHByb2R1Y2UgYWZ0ZXIgcmVhZGluZyB0aGF0CisgICAgLy8gdmFsdWUuIFNpbmNl
IHdlIGFyZSBleGVjdXRpbmcgaW4gcmV2ZXJzZSwgdGhpcyBtZWFucyB0aGF0IHdlIG11c3QgZG8g
ZGVmcyBiZWZvcmUgdXNlcyAocmV2ZXJzZSBvZgorICAgIC8vIHVzZXMgYmVmb3JlIGRlZnMpLgor
ICAgIC8vCisgICAgLy8gU2luY2UgdGhpcyBpcyBhIGxpdmVuZXNzIGFuYWx5c2lzLCB0aGlzIG9y
ZGVyaW5nIGVuZHMgdXAgYmVpbmcgcGFydGljdWxhcmx5IGltcG9ydGFudDogaWYgd2UgZGlkCisg
ICAgLy8gdXNlcyBiZWZvcmUgZGVmcywgdGhlbiB0aGUgYWRkIG9wZXJhdGlvbiBhYm92ZSB3b3Vs
ZCBhcHBlYXIgdG8gbm90IGhhdmUgbG9jMSBsaXZlLCBzaW5jZSB3ZSdkCisgICAgLy8gZmlyc3Qg
YWRkIGl0IHRvIHRoZSBvdXQgc2V0ICh0aGUgdXNlKSwgYW5kIHRoZW4gd2UnZCByZW1vdmUgaXQg
KHRoZSBkZWYpLgorCisgICAgYXV0byogY29kZUJsb2NrID0gZ3JhcGguY29kZUJsb2NrKCk7Cisg
ICAgSW50ZXJwcmV0ZXIqIGludGVycHJldGVyID0gY29kZUJsb2NrLT52bSgpLT5pbnRlcnByZXRl
cjsKKyAgICBhdXRvKiBpbnN0cnVjdGlvbnNCZWdpbiA9IGdyYXBoLmluc3RydWN0aW9ucygpLmJl
Z2luKCk7CisgICAgYXV0byogaW5zdHJ1Y3Rpb24gPSAmaW5zdHJ1Y3Rpb25zQmVnaW5bYnl0ZWNv
ZGVPZmZzZXRdOworICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0ZXItPmdldE9wY29k
ZUlEKCppbnN0cnVjdGlvbik7CisKKyAgICBzdGF0aWNfY2FzdDxEZXJpdmVkQW5hbHlzaXMqPih0
aGlzKS0+Y29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldCgKKyAgICAgICAgY29kZUJsb2NrLCBv
cGNvZGVJRCwgaW5zdHJ1Y3Rpb24sIG91dCwKKyAgICAgICAgWyZdICh0eXBlbmFtZSBHcmFwaDo6
Q29kZUJsb2NrKiwgdHlwZW5hbWUgR3JhcGg6Okluc3RydWN0aW9uKiwgT3Bjb2RlSUQsIGludCBv
cGVyYW5kKSB7CisgICAgICAgICAgICBpZiAoaXNWYWxpZFJlZ2lzdGVyRm9yTGl2ZW5lc3Mob3Bl
cmFuZCkpCisgICAgICAgICAgICAgICAgZGVmKFZpcnR1YWxSZWdpc3RlcihvcGVyYW5kKS50b0xv
Y2FsKCkpOworICAgICAgICB9KTsKKworICAgIHN0YXRpY19jYXN0PERlcml2ZWRBbmFseXNpcyo+
KHRoaXMpLT5jb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAorICAgICAgICBjb2RlQmxvY2ss
IG9wY29kZUlELCBpbnN0cnVjdGlvbiwgb3V0LAorICAgICAgICBbJl0gKHR5cGVuYW1lIEdyYXBo
OjpDb2RlQmxvY2sqLCB0eXBlbmFtZSBHcmFwaDo6SW5zdHJ1Y3Rpb24qLCBPcGNvZGVJRCwgaW50
IG9wZXJhbmQpIHsKKyAgICAgICAgICAgIGlmIChpc1ZhbGlkUmVnaXN0ZXJGb3JMaXZlbmVzcyhv
cGVyYW5kKSkKKyAgICAgICAgICAgICAgICB1c2UoVmlydHVhbFJlZ2lzdGVyKG9wZXJhbmQpLnRv
TG9jYWwoKSk7CisgICAgICAgIH0pOworCisgICAgLy8gSWYgd2UgaGF2ZSBhbiBleGNlcHRpb24g
aGFuZGxlciwgd2Ugd2FudCB0aGUgbGl2ZS1pbiB2YXJpYWJsZXMgb2YgdGhlIAorICAgIC8vIGV4
Y2VwdGlvbiBoYW5kbGVyIGJsb2NrIHRvIGJlIGluY2x1ZGVkIGluIHRoZSBsaXZlLWluIG9mIHRo
aXMgcGFydGljdWxhciBieXRlY29kZS4KKyAgICBpZiAoYXV0byogaGFuZGxlciA9IGNvZGVCbG9j
ay0+aGFuZGxlckZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KSkgeworICAgICAgICBC
eXRlY29kZUJhc2ljQmxvY2sqIGhhbmRsZXJCbG9jayA9IGdyYXBoLmZpbmRCYXNpY0Jsb2NrV2l0
aExlYWRlck9mZnNldChoYW5kbGVyLT50YXJnZXQpOworICAgICAgICBBU1NFUlQoaGFuZGxlckJs
b2NrKTsKKyAgICAgICAgaGFuZGxlckJsb2NrLT5pbigpLmZvckVhY2hTZXRCaXQodXNlKTsKKyAg
ICB9Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIERlcml2ZWRBbmFseXNpcz4KK3RlbXBsYXRlPHR5
cGVuYW1lIEdyYXBoPgoraW5saW5lIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0xvY2FsUHJvcGFnYXRp
b248RGVyaXZlZEFuYWx5c2lzPjo6c3RlcE92ZXJJbnN0cnVjdGlvbihHcmFwaCYgZ3JhcGgsIHVu
c2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBGYXN0Qml0VmVjdG9yJiBvdXQpCit7CisgICAgc3RlcE92
ZXJJbnN0cnVjdGlvbigKKyAgICAgICAgZ3JhcGgsIGJ5dGVjb2RlT2Zmc2V0LCBvdXQsCisgICAg
ICAgIFsmXSAodW5zaWduZWQgYml0SW5kZXgpIHsKKyAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhl
IHVzZSBmdW5jdG9yLCBzbyB3ZSBzZXQgdGhlIGJpdC4KKyAgICAgICAgICAgIG91dC5zZXQoYml0
SW5kZXgpOworICAgICAgICB9LAorICAgICAgICBbJl0gKHVuc2lnbmVkIGJpdEluZGV4KSB7Cisg
ICAgICAgICAgICAvLyBUaGlzIGlzIHRoZSBkZWYgZnVuY3Rvciwgc28gd2UgY2xlYXIgdGhlIGJp
dC4KKyAgICAgICAgICAgIG91dC5jbGVhcihiaXRJbmRleCk7CisgICAgICAgIH0pOworfQorCit0
ZW1wbGF0ZTx0eXBlbmFtZSBEZXJpdmVkQW5hbHlzaXM+Cit0ZW1wbGF0ZTx0eXBlbmFtZSBHcmFw
aD4KK2lubGluZSB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NMb2NhbFByb3BhZ2F0aW9uPERlcml2ZWRB
bmFseXNpcz46OmNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQnl0ZWNvZGVPZmZzZXQoR3JhcGgmIGdy
YXBoLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrLCB1bnNpZ25lZCB0YXJnZXRPZmZzZXQsIEZh
c3RCaXRWZWN0b3ImIHJlc3VsdCkKK3sKKyAgICBBU1NFUlQoIWJsb2NrLT5pc0V4aXRCbG9jaygp
KTsKKyAgICBBU1NFUlQoIWJsb2NrLT5pc0VudHJ5QmxvY2soKSk7CisKKyAgICBGYXN0Qml0VmVj
dG9yIG91dCA9IGJsb2NrLT5vdXQoKTsKKworICAgIGZvciAoaW50IGkgPSBibG9jay0+Ynl0ZWNv
ZGVPZmZzZXRzKCkuc2l6ZSgpIC0gMTsgaSA+PSAwOyBpLS0pIHsKKyAgICAgICAgdW5zaWduZWQg
Ynl0ZWNvZGVPZmZzZXQgPSBibG9jay0+Ynl0ZWNvZGVPZmZzZXRzKClbaV07CisgICAgICAgIGlm
ICh0YXJnZXRPZmZzZXQgPiBieXRlY29kZU9mZnNldCkKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBzdGVwT3Zlckluc3RydWN0aW9uKGdyYXBoLCBieXRlY29kZU9mZnNldCwgb3V0KTsKKyAg
ICB9CisKKyAgICByZXN1bHQuc2V0KG91dCk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIERlcml2
ZWRBbmFseXNpcz4KK3RlbXBsYXRlPHR5cGVuYW1lIEdyYXBoPgoraW5saW5lIHZvaWQgQnl0ZWNv
ZGVMaXZlbmVzc0xvY2FsUHJvcGFnYXRpb248RGVyaXZlZEFuYWx5c2lzPjo6Y29tcHV0ZUxvY2Fs
TGl2ZW5lc3NGb3JCbG9jayhHcmFwaCYgZ3JhcGgsIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2sp
Cit7CisgICAgaWYgKGJsb2NrLT5pc0V4aXRCbG9jaygpIHx8IGJsb2NrLT5pc0VudHJ5QmxvY2so
KSkKKyAgICAgICAgcmV0dXJuOworICAgIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQnl0ZWNvZGVP
ZmZzZXQoZ3JhcGgsIGJsb2NrLCBibG9jay0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKSwgYmxvY2st
PmluKCkpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBEZXJpdmVkQW5hbHlzaXM+Cit0ZW1wbGF0
ZTx0eXBlbmFtZSBHcmFwaD4KK2lubGluZSBGYXN0Qml0VmVjdG9yIEJ5dGVjb2RlTGl2ZW5lc3NM
b2NhbFByb3BhZ2F0aW9uPERlcml2ZWRBbmFseXNpcz46OmdldExpdmVuZXNzSW5mb0F0Qnl0ZWNv
ZGVPZmZzZXQoR3JhcGgmIGdyYXBoLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCkKK3sKKyAgICBC
eXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrID0gZ3JhcGguZmluZEJhc2ljQmxvY2tGb3JCeXRlY29k
ZU9mZnNldChieXRlY29kZU9mZnNldCk7CisgICAgQVNTRVJUKGJsb2NrKTsKKyAgICBBU1NFUlQo
IWJsb2NrLT5pc0VudHJ5QmxvY2soKSk7CisgICAgQVNTRVJUKCFibG9jay0+aXNFeGl0QmxvY2so
KSk7CisgICAgRmFzdEJpdFZlY3RvciBvdXQ7CisgICAgb3V0LnJlc2l6ZShibG9jay0+b3V0KCku
bnVtQml0cygpKTsKKyAgICBjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJ5dGVjb2RlT2Zmc2V0KGdy
YXBoLCBibG9jaywgYnl0ZWNvZGVPZmZzZXQsIG91dCk7CisgICAgcmV0dXJuIG91dDsKK30KKwog
fSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNJ
bmxpbmVzX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZU1vZGlmaWNhdGlvblNldC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Qnl0ZWNvZGVNb2RpZmljYXRpb25TZXQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhhYzJmOGVjYTExNTljMjMx
NmFiNTE4YjNjYWFhNzQ3NDhlYmE1NjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVNb2RpZmljYXRpb25TZXQuY3BwCkBAIC0wLDAgKzEs
ODQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50
ZWFAZ21haWwuY29tPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
Qnl0ZWNvZGVNb2RpZmljYXRpb25TZXQuaCIKKworI2luY2x1ZGUgPHd0Zi9CdWJibGVTb3J0Lmg+
CisKK25hbWVzcGFjZSBKU0MgeworCitpbnQgQnl0ZWNvZGVNb2RpZmljYXRpb25TZXQ6OmFkanVz
dE9mZnNldChpbnQgYnl0ZWNvZGVPZmZzZXQsIGludCBqdW1wVGFyZ2V0KQoreworICAgIGlmIChi
eXRlY29kZU9mZnNldCA8IGp1bXBUYXJnZXQpIHsKKyAgICAgICAgYXV0byBzdGFydCA9IHN0ZDo6
bG93ZXJfYm91bmQobV9pbnNlcnRpb25zLmJlZ2luKCksIG1faW5zZXJ0aW9ucy5lbmQoKSwgYnl0
ZWNvZGVPZmZzZXQsIFsmXSAoY29uc3QgSW5zZXJ0aW9uJiBpbnNlcnRpb24sIGludCBieXRlY29k
ZU9mZnNldCkgeworICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oaW5zZXJ0aW9u
LmluZGV4KCkpIDwgYnl0ZWNvZGVPZmZzZXQ7CisgICAgICAgIH0pOworICAgICAgICBpZiAoc3Rh
cnQgIT0gbV9pbnNlcnRpb25zLmVuZCgpKSB7CisgICAgICAgICAgICBhdXRvIGVuZCA9IHN0ZDo6
bG93ZXJfYm91bmQobV9pbnNlcnRpb25zLmJlZ2luKCksIG1faW5zZXJ0aW9ucy5lbmQoKSwganVt
cFRhcmdldCwgWyZdIChjb25zdCBJbnNlcnRpb24mIGluc2VydGlvbiwgaW50IGp1bXBUYXJnZXQp
IHsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihpbnNlcnRpb24uaW5k
ZXgoKSkgPCBqdW1wVGFyZ2V0OworICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBmb3IgKDsg
c3RhcnQgIT0gZW5kOyArK3N0YXJ0KSB7CisgICAgICAgICAgICAgICAgaWYgKHN0YXJ0LT5lbGVt
ZW50KCkudHlwZSA9PSBDb21tYW5kOjpUeXBlOjpSZW1vdmUpCisgICAgICAgICAgICAgICAgICAg
IGp1bXBUYXJnZXQgLT0gc3RhcnQtPmVsZW1lbnQoKS5sZW5ndGg7CisgICAgICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgICAgICBqdW1wVGFyZ2V0ICs9IHN0YXJ0LT5lbGVtZW50KCku
bGVuZ3RoOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiBqdW1wVGFy
Z2V0IC0gYnl0ZWNvZGVPZmZzZXQ7CisgICAgfQorCisgICAgaWYgKGJ5dGVjb2RlT2Zmc2V0ID09
IGp1bXBUYXJnZXQpCisgICAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIC1hZGp1c3RPZmZz
ZXQoanVtcFRhcmdldCwgYnl0ZWNvZGVPZmZzZXQpOworfQorCit2b2lkIEJ5dGVjb2RlTW9kaWZp
Y2F0aW9uU2V0OjphcHBseU1vZGlmaWNhdGlvbigpCit7CisgICAgZm9yIChzaXplX3QgaW5zZXJ0
aW9uSW5kZXggPSBtX2luc2VydGlvbnMuc2l6ZSgpOyBpbnNlcnRpb25JbmRleC0tOykgeworICAg
ICAgICBjb25zdCBJbnNlcnRpb24mIGluc2VydGlvbiA9IG1faW5zZXJ0aW9uc1tpbnNlcnRpb25J
bmRleF07CisgICAgICAgIGlmIChpbnNlcnRpb24uZWxlbWVudCgpLnR5cGUgPT0gQ29tbWFuZDo6
VHlwZTo6UmVtb3ZlKQorICAgICAgICAgICAgbV9ncmFwaC5pbnN0cnVjdGlvbnMoKS5yZW1vdmUo
aW5zZXJ0aW9uLmluZGV4KCksIGluc2VydGlvbi5lbGVtZW50KCkubGVuZ3RoKTsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgbV9ncmFwaC5pbnN0cnVjdGlvbnMoKS5pbnNlcnQoaW5zZXJ0aW9u
LmluZGV4KCksIGluc2VydGlvbi5lbGVtZW50KCkuYnl0ZWNvZGUuaW5zdHJ1Y3Rpb25zLCBvcGNv
ZGVMZW5ndGgoaW5zZXJ0aW9uLmVsZW1lbnQoKS5ieXRlY29kZS5pbnN0cnVjdGlvbnNbMF0udS5v
cGNvZGUpKTsKKyAgICB9CisgICAgbV9pbnNlcnRpb25zLmNsZWFyKCk7Cit9CisKK3ZvaWQgQnl0
ZWNvZGVNb2RpZmljYXRpb25TZXQ6OmV4ZWN1dGUoKQoreworICAgIFdURjo6YnViYmxlU29ydCht
X2luc2VydGlvbnMuYmVnaW4oKSwgbV9pbnNlcnRpb25zLmVuZCgpLCBbXSAoY29uc3QgSW5zZXJ0
aW9uJiBsaHMsIGNvbnN0IEluc2VydGlvbiYgcmhzKSB7CisgICAgICAgIC8vIFdlIHdvdWxkIGxp
a2UgdG8gcGVyZm9ybSByZW1vdmUgb3BlcmF0aW9uIGJlZm9yZSBpbnNlcnRpb24uCisgICAgICAg
IGlmIChsaHMuaW5kZXgoKSA9PSByaHMuaW5kZXgoKSkKKyAgICAgICAgICAgIHJldHVybiByaHMu
ZWxlbWVudCgpLnR5cGUgPT0gQ29tbWFuZDo6VHlwZTo6UmVtb3ZlOworICAgICAgICByZXR1cm4g
bGhzIDwgcmhzOworICAgIH0pOworCisgICAgVW5saW5rZWRDb2RlQmxvY2sqIGNvZGVCbG9jayA9
IG1fZ3JhcGguY29kZUJsb2NrKCk7CisgICAgY29kZUJsb2NrLT5hcHBseU1vZGlmaWNhdGlvbigq
dGhpcyk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTW9kaWZpY2F0aW9uU2V0LmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVNb2RpZmljYXRpb25TZXQuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li43OTM5ZGFhNDVjOGUyNjQyMDllN2EyMmVjZjNlMGQ3OGE0YWQzN2E3Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTW9kaWZpY2F0aW9u
U2V0LmgKQEAgLTAsMCArMSw4OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBZdXN1a2Ug
U3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaW5jbHVkZSAiQnl0ZWNvZGVHcmFwaC5oIgorI2luY2x1ZGUgIkJ5dGVjb2Rlcy5oIgorI2lu
Y2x1ZGUgIlVubGlua2VkQ29kZUJsb2NrLmgiCisjaW5jbHVkZSA8d3RmL0luc2VydGlvbi5oPgor
CituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgQnl0ZWNvZGVNb2RpZmljYXRpb25TZXQgeworcHVi
bGljOgorICAgIHN0cnVjdCBJbnNlcnRlZEJ5dGVjb2RlIHsKKyAgICAgICAgVW5saW5rZWRJbnN0
cnVjdGlvbiBpbnN0cnVjdGlvbnNbTUFYX09QQ09ERV9MRU5HVEhfT0ZfQllURUNPREVdOworICAg
IH07CisKKyAgICBzdHJ1Y3QgQ29tbWFuZCB7CisgICAgICAgIGVudW0gY2xhc3MgVHlwZSB7Cisg
ICAgICAgICAgICBJbnNlcnQsCisgICAgICAgICAgICBSZW1vdmUsCisgICAgICAgIH07CisKKyAg
ICAgICAgVHlwZSB0eXBlOworICAgICAgICBzaXplX3QgbGVuZ3RoOworICAgICAgICBJbnNlcnRl
ZEJ5dGVjb2RlIGJ5dGVjb2RlOworICAgIH07CisKKyAgICB0eXBlZGVmIFdURjo6SW5zZXJ0aW9u
PENvbW1hbmQ+IEluc2VydGlvbjsKKworICAgIEJ5dGVjb2RlTW9kaWZpY2F0aW9uU2V0KEJ5dGVj
b2RlR3JhcGg8VW5saW5rZWRDb2RlQmxvY2s+JiBncmFwaCkKKyAgICAgICAgOiBtX2dyYXBoKGdy
YXBoKQorICAgIHsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTxjbGFzcy4uLiBBcmdzPgorICAgIHZv
aWQgaW5zZXJ0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBPcGNvZGVJRCBvcGNvZGVJRCwgQXJn
cy4uLiBhcmdzKQorICAgIHsKKyAgICAgICAgSW5zZXJ0ZWRCeXRlY29kZSBieXRlY29kZSA9IHsg
eworICAgICAgICAgICAgVW5saW5rZWRJbnN0cnVjdGlvbihvcGNvZGVJRCksCisgICAgICAgICAg
ICBVbmxpbmtlZEluc3RydWN0aW9uKGFyZ3MpLi4uCisgICAgICAgIH0gfTsKKyAgICAgICAgbV9p
bnNlcnRpb25zLmFwcGVuZChJbnNlcnRpb24oYnl0ZWNvZGVPZmZzZXQsIENvbW1hbmQgeyBDb21t
YW5kOjpUeXBlOjpJbnNlcnQsIG9wY29kZUxlbmd0aChvcGNvZGVJRCksIGJ5dGVjb2RlIH0pKTsK
KyAgICB9CisKKyAgICB2b2lkIHJlbW92ZUJ5dGVjb2RlKHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0
KQorICAgIHsKKyAgICAgICAgbV9pbnNlcnRpb25zLmFwcGVuZChJbnNlcnRpb24oYnl0ZWNvZGVP
ZmZzZXQsIENvbW1hbmQgeyBDb21tYW5kOjpUeXBlOjpSZW1vdmUsIG9wY29kZUxlbmd0aChtX2dy
YXBoLmluc3RydWN0aW9ucygpW2J5dGVjb2RlT2Zmc2V0XS51Lm9wY29kZSksIEluc2VydGVkQnl0
ZWNvZGUgeyB9IH0pKTsKKyAgICB9CisKKyAgICB2b2lkIGV4ZWN1dGUoKTsKKworICAgIEJ5dGVj
b2RlR3JhcGg8VW5saW5rZWRDb2RlQmxvY2s+JiBncmFwaCgpIHsgcmV0dXJuIG1fZ3JhcGg7IH0K
KworICAgIGludCBhZGp1c3RPZmZzZXQoaW50IGJ5dGVjb2RlT2Zmc2V0LCBpbnQganVtcFRhcmdl
dCk7CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIFVubGlua2VkQ29kZUJsb2NrOworICAg
IHZvaWQgYXBwbHlNb2RpZmljYXRpb24oKTsKKworICAgIEJ5dGVjb2RlR3JhcGg8VW5saW5rZWRD
b2RlQmxvY2s+JiBtX2dyYXBoOworICAgIFZlY3RvcjxJbnNlcnRpb24sIDg+IG1faW5zZXJ0aW9u
czsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaAppbmRleCA1NzA4NDRjMzVkOTAyNWVlOTFhZDQ2OThi
YWI5YmMxYTY3ZmQ4MzQ5Li43NTlmNzhjODEyOGJhNzYwY2M5Y2U1MmRmZjUzYTQ4YWZiNzIyZTY1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VE
ZWYuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYu
aApAQCAtMjcsMTggKzI3LDEzIEBACiAjZGVmaW5lIEJ5dGVjb2RlVXNlRGVmX2gKIAogI2luY2x1
ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAKIG5hbWVzcGFjZSBK
U0MgewogCi10ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgotdm9pZCBjb21wdXRlVXNlc0ZvckJ5
dGVjb2RlT2Zmc2V0KAotICAgIENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29kZUJhc2ljQmxv
Y2sqIGJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgY29uc3QgRnVuY3RvciYgZnVuY3Rv
cikKK3RlbXBsYXRlPHR5cGVuYW1lIEJsb2NrLCB0eXBlbmFtZSBGdW5jdG9yLCB0eXBlbmFtZSBJ
bnN0cnVjdGlvbj4KK3ZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldChCbG9jayogY29k
ZUJsb2NrLCBPcGNvZGVJRCBvcGNvZGVJRCwgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBjb25z
dCBGdW5jdG9yJiBmdW5jdG9yKQogewotICAgIEludGVycHJldGVyKiBpbnRlcnByZXRlciA9IGNv
ZGVCbG9jay0+dm0oKS0+aW50ZXJwcmV0ZXI7Ci0gICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9u
c0JlZ2luID0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpOwotICAgIEluc3RydWN0
aW9uKiBpbnN0cnVjdGlvbiA9ICZpbnN0cnVjdGlvbnNCZWdpbltieXRlY29kZU9mZnNldF07Ci0g
ICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rp
b24tPnUub3Bjb2RlKTsKLQogICAgIGlmIChvcGNvZGVJRCAhPSBvcF9lbnRlciAmJiBjb2RlQmxv
Y2stPndhc0NvbXBpbGVkV2l0aERlYnVnZ2luZ09wY29kZXMoKSAmJiBjb2RlQmxvY2stPnNjb3Bl
UmVnaXN0ZXIoKS5pc1ZhbGlkKCkpCiAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVj
dGlvbiwgb3Bjb2RlSUQsIGNvZGVCbG9jay0+c2NvcGVSZWdpc3RlcigpLm9mZnNldCgpKTsKIApA
QCAtNzUsOCArNzAsNyBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoCiAgICAg
Y2FzZSBvcF9qbmVxX251bGw6CiAgICAgY2FzZSBvcF9kZWM6CiAgICAgY2FzZSBvcF9pbmM6Ci0g
ICAgY2FzZSBvcF9sb2dfc2hhZG93X2NoaWNrZW5fcHJvbG9ndWU6Ci0gICAgY2FzZSBvcF9yZXN1
bWU6IHsKKyAgICBjYXNlIG9wX2xvZ19zaGFkb3dfY2hpY2tlbl9wcm9sb2d1ZTogewogICAgICAg
ICBBU1NFUlQob3Bjb2RlTGVuZ3Roc1tvcGNvZGVJRF0gPiAxKTsKICAgICAgICAgZnVuY3Rvcihj
b2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5k
KTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjg3LDM1ICsyODEsMjIgQEAgdm9pZCBjb21wdXRlVXNl
c0ZvckJ5dGVjb2RlT2Zmc2V0KAogICAgICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3Ry
dWN0aW9uLCBvcGNvZGVJRCwgY29kZUJsb2NrLT5zY29wZVJlZ2lzdGVyKCkub2Zmc2V0KCkpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGNhc2Ugb3Bfc2F2ZTogewotICAgICAgICBmdW5j
dG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBpbnN0cnVjdGlvblsxXS51Lm9w
ZXJhbmQpOwotICAgICAgICB1bnNpZ25lZCBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXQgPSBieXRl
Y29kZU9mZnNldCArIGluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKLSAgICAgICAgQnl0ZWNvZGVC
YXNpY0Jsb2NrKiBtZXJnZVBvaW50QmxvY2sgPSBudWxscHRyOwotICAgICAgICBmb3IgKEJ5dGVj
b2RlQmFzaWNCbG9jayogc3VjY2Vzc29yIDogYmxvY2stPnN1Y2Nlc3NvcnMoKSkgewotICAgICAg
ICAgICAgaWYgKHN1Y2Nlc3Nvci0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKSA9PSBtZXJnZVBvaW50
Qnl0ZWNvZGVPZmZzZXQpIHsKLSAgICAgICAgICAgICAgICBtZXJnZVBvaW50QmxvY2sgPSBzdWNj
ZXNzb3I7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0K
LSAgICAgICAgQVNTRVJUKG1lcmdlUG9pbnRCbG9jayk7Ci0gICAgICAgIG1lcmdlUG9pbnRCbG9j
ay0+aW4oKS5mb3JFYWNoU2V0Qml0KFsmXSh1bnNpZ25lZCBsb2NhbCkgewotICAgICAgICAgICAg
ZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgdmlydHVhbFJlZ2lzdGVy
Rm9yTG9jYWwobG9jYWwpLm9mZnNldCgpKTsKLSAgICAgICAgfSk7CisKKyAgICBjYXNlIG9wX3Nh
dmU6CisgICAgY2FzZSBvcF9yZXN1bWU6IHsKKyAgICAgICAgLy8gRG8gbm90aGluZyBpbiBsaXZl
bmVzcyBhbmFseXNpcy4KICAgICAgICAgcmV0dXJuOwogICAgIH0KKwogICAgIGRlZmF1bHQ6CiAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIGJyZWFrOwogICAg
IH0KIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KLXZvaWQgY29tcHV0ZURlZnNGb3JC
eXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBi
bG9jaywgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCit0
ZW1wbGF0ZTx0eXBlbmFtZSBCbG9jaywgdHlwZW5hbWUgSW5zdHJ1Y3Rpb24sIHR5cGVuYW1lIEZ1
bmN0b3I+Cit2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQmxvY2sqIGNvZGVCbG9j
aywgT3Bjb2RlSUQgb3Bjb2RlSUQsIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgY29uc3QgRnVu
Y3RvciYgZnVuY3RvcikKIHsKLSAgICBJbnRlcnByZXRlciogaW50ZXJwcmV0ZXIgPSBjb2RlQmxv
Y2stPnZtKCktPmludGVycHJldGVyOwotICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdp
biA9IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsKLSAgICBJbnN0cnVjdGlvbiog
aW5zdHJ1Y3Rpb24gPSAmaW5zdHJ1Y3Rpb25zQmVnaW5bYnl0ZWNvZGVPZmZzZXRdOwotICAgIE9w
Y29kZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGluc3RydWN0aW9uLT51
Lm9wY29kZSk7CiAgICAgc3dpdGNoIChvcGNvZGVJRCkgewogICAgIC8vIFRoZXNlIGRvbid0IGRl
ZmluZSBhbnl0aGluZy4KICAgICBjYXNlIG9wX2NvcHlfcmVzdDoKQEAgLTMyMyw3ICszMDQsNiBA
QCB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvYwogICAgIGNhc2Ugb3BfZW5kOgogICAgIGNhc2Ugb3Bf
dGhyb3c6CiAgICAgY2FzZSBvcF90aHJvd19zdGF0aWNfZXJyb3I6Ci0gICAgY2FzZSBvcF9zYXZl
OgogICAgIGNhc2Ugb3BfYXNzZXJ0OgogICAgIGNhc2Ugb3BfZGVidWc6CiAgICAgY2FzZSBvcF9y
ZXQ6CkBAIC00NjMsNyArNDQzLDcgQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0
KENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2MKICAgICBjYXNl
IG9wX2RlbF9ieV9pZDoKICAgICBjYXNlIG9wX2RlbF9ieV92YWw6CiAgICAgY2FzZSBvcF91bnNp
Z25lZDoKLSAgICBjYXNlIG9wX2dldF9mcm9tX2FyZ3VtZW50czogCisgICAgY2FzZSBvcF9nZXRf
ZnJvbV9hcmd1bWVudHM6CiAgICAgY2FzZSBvcF9nZXRfcmVzdF9sZW5ndGg6IHsKICAgICAgICAg
QVNTRVJUKG9wY29kZUxlbmd0aHNbb3Bjb2RlSURdID4gMSk7CiAgICAgICAgIGZ1bmN0b3IoY29k
ZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7
CkBAIC00ODAsMTUgKzQ2MCwxNCBAQCB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQo
Q29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvYwogICAgICAgICAg
ICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgdmlydHVhbFJlZ2lz
dGVyRm9yTG9jYWwoaSkub2Zmc2V0KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQorICAgIGNh
c2Ugb3Bfc2F2ZToKICAgICBjYXNlIG9wX3Jlc3VtZTogewotICAgICAgICBSRUxFQVNFX0FTU0VS
VChibG9jay0+c3VjY2Vzc29ycygpLnNpemUoKSA9PSAxKTsKLSAgICAgICAgLy8gRklYTUU6IFRo
aXMgaXMgcmVhbGx5IGRpcnR5LgotICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTU5MjgxCi0gICAgICAgIGJsb2NrLT5zdWNjZXNzb3JzKClbMF0tPmlu
KCkuZm9yRWFjaFNldEJpdChbJl0odW5zaWduZWQgbG9jYWwpIHsKLSAgICAgICAgICAgIGZ1bmN0
b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIHZpcnR1YWxSZWdpc3RlckZvckxv
Y2FsKGxvY2FsKS5vZmZzZXQoKSk7Ci0gICAgICAgIH0pOworICAgICAgICAvLyBEbyBub3RoaW5n
IGluIGxpdmVuZXNzIGFuYWx5c2lzLgogICAgICAgICByZXR1cm47CiAgICAgfQorICAgIGRlZmF1
bHQ6CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVy
bjsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
ay5jcHAKaW5kZXggZWU4MTkxNmZiMGY1ZjIwNTA1ZGRiNWRlOTQ1ZTg1YmY2ZTRiNmQ5YS4uZDli
ODFlZTU4YTEwOGIxYzFkOTE3OGIwMjlkMTg4Yzk4YjliYTY0ZiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNs
dWRlICJBcml0aFByb2ZpbGUuaCIKICNpbmNsdWRlICJCYXNpY0Jsb2NrTG9jYXRpb24uaCIKICNp
bmNsdWRlICJCeXRlY29kZUdlbmVyYXRvci5oIgorI2luY2x1ZGUgIkJ5dGVjb2RlTGl2ZW5lc3NB
bmFseXNpcy5oIgogI2luY2x1ZGUgIkJ5dGVjb2RlVXNlRGVmLmgiCiAjaW5jbHVkZSAiQ2FsbExp
bmtTdGF0dXMuaCIKICNpbmNsdWRlICJERkdDYXBhYmlsaXRpZXMuaCIKQEAgLTY5NiwxOCArNjk3
LDYgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZShQcmludFN0cmVhbSYgb3V0KQogICAg
ICAgICB9IHdoaWxlIChpIDwgbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzLnNp
emUoKSk7CiAgICAgfQogCi0gICAgaWYgKG1fcmFyZURhdGEgJiYgIW1fcmFyZURhdGEtPm1fbGl2
ZUNhbGxlZUxvY2Fsc0F0WWllbGQuaXNFbXB0eSgpKSB7Ci0gICAgICAgIG91dC5wcmludGYoIlxu
TGl2ZSBDYWxsZWUgTG9jYWxzOlxuIik7Ci0gICAgICAgIHVuc2lnbmVkIGkgPSAwOwotICAgICAg
ICBkbyB7Ci0gICAgICAgICAgICBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlbmVzcyA9IG1fcmFy
ZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGRbaV07Ci0gICAgICAgICAgICBvdXQucHJp
bnRmKCIgIGxpdmUlMXUgPSAiLCBpKTsKLSAgICAgICAgICAgIGxpdmVuZXNzLmR1bXAob3V0KTsK
LSAgICAgICAgICAgIG91dC5wcmludGYoIlxuIik7Ci0gICAgICAgICAgICArK2k7Ci0gICAgICAg
IH0gd2hpbGUgKGkgPCBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkLnNpemUo
KSk7Ci0gICAgfQotCiAgICAgb3V0LnByaW50ZigiXG4iKTsKIH0KIApAQCAtMTY3MSwzMSArMTY2
MCw2IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoCiAgICAgICAgICAgICBvdXQucHJp
bnRmKCIlcywgJWQiLCBkZWJ1Z0hvb2tOYW1lKGRlYnVnSG9va0lEKSwgaGFzQnJlYWtwb2ludEZs
YWcpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgY2FzZSBvcF9zYXZl
OiB7Ci0gICAgICAgICAgICBpbnQgZ2VuZXJhdG9yID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAg
ICAgICAgICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSAoKytpdCktPnUudW5zaWdu
ZWRWYWx1ZTsKLSAgICAgICAgICAgIGludCBvZmZzZXQgPSAoKytpdCktPnUub3BlcmFuZDsKLSAg
ICAgICAgICAgIEZhc3RCaXRWZWN0b3IgbGl2ZW5lc3M7Ci0gICAgICAgICAgICBpZiAobGl2ZUNh
bGxlZUxvY2Fsc0luZGV4IDwgbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZC5z
aXplKCkpCi0gICAgICAgICAgICAgICAgbGl2ZW5lc3MgPSBtX3JhcmVEYXRhLT5tX2xpdmVDYWxs
ZWVMb2NhbHNBdFlpZWxkW2xpdmVDYWxsZWVMb2NhbHNJbmRleF07Ci0gICAgICAgICAgICBwcmlu
dExvY2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJzYXZlIik7Ci0gICAgICAg
ICAgICBvdXQucHJpbnRmKCIlcywgIiwgcmVnaXN0ZXJOYW1lKGdlbmVyYXRvcikuZGF0YSgpKTsK
LSAgICAgICAgICAgIGxpdmVuZXNzLmR1bXAob3V0KTsKLSAgICAgICAgICAgIG91dC5wcmludGYo
IihAbGl2ZSUxdSksICVkKC0+JWQpIiwgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4LCBvZmZzZXQsIGxv
Y2F0aW9uICsgb2Zmc2V0KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAg
IGNhc2Ugb3BfcmVzdW1lOiB7Ci0gICAgICAgICAgICBpbnQgZ2VuZXJhdG9yID0gKCsraXQpLT51
Lm9wZXJhbmQ7Ci0gICAgICAgICAgICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSAo
KytpdCktPnUudW5zaWduZWRWYWx1ZTsKLSAgICAgICAgICAgIEZhc3RCaXRWZWN0b3IgbGl2ZW5l
c3M7Ci0gICAgICAgICAgICBpZiAobGl2ZUNhbGxlZUxvY2Fsc0luZGV4IDwgbV9yYXJlRGF0YS0+
bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZC5zaXplKCkpCi0gICAgICAgICAgICAgICAgbGl2ZW5l
c3MgPSBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkW2xpdmVDYWxsZWVMb2Nh
bHNJbmRleF07Ci0gICAgICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2Nh
dGlvbiwgaXQsICJyZXN1bWUiKTsKLSAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAiLCByZWdp
c3Rlck5hbWUoZ2VuZXJhdG9yKS5kYXRhKCkpOwotICAgICAgICAgICAgbGl2ZW5lc3MuZHVtcChv
dXQpOwotICAgICAgICAgICAgb3V0LnByaW50ZigiKEBsaXZlJTF1KSIsIGxpdmVDYWxsZWVMb2Nh
bHNJbmRleCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQogICAgICAgICBjYXNlIG9w
X2Fzc2VydDogewogICAgICAgICAgICAgaW50IGNvbmRpdGlvbiA9ICgrK2l0KS0+dS5vcGVyYW5k
OwogICAgICAgICAgICAgaW50IGxpbmUgPSAoKytpdCktPnUub3BlcmFuZDsKQEAgLTE5MDcsNyAr
MTg3MSw2IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIENvcHlQYXJz
ZWRCbG9ja1RhZywgQ29kZUJsb2NrJiBvdGhlcikKICAgICAgICAgbV9yYXJlRGF0YS0+bV9jb25z
dGFudEJ1ZmZlcnMgPSBvdGhlci5tX3JhcmVEYXRhLT5tX2NvbnN0YW50QnVmZmVyczsKICAgICAg
ICAgbV9yYXJlRGF0YS0+bV9zd2l0Y2hKdW1wVGFibGVzID0gb3RoZXIubV9yYXJlRGF0YS0+bV9z
d2l0Y2hKdW1wVGFibGVzOwogICAgICAgICBtX3JhcmVEYXRhLT5tX3N0cmluZ1N3aXRjaEp1bXBU
YWJsZXMgPSBvdGhlci5tX3JhcmVEYXRhLT5tX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXM7Ci0gICAg
ICAgIG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQgPSBvdGhlci5tX3JhcmVE
YXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkOwogICAgIH0KICAgICAKICAgICBoZWFwKCkt
Pm1fY29kZUJsb2Nrcy5hZGQodGhpcyk7CkBAIC0yMDI5LDcgKzE5OTIsNyBAQCB2b2lkIENvZGVC
bG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1
dGFibGUsIFVubGluawogICAgICAgICAgICAgICAgIFVubGlua2VkU3RyaW5nSnVtcFRhYmxlOjpT
dHJpbmdPZmZzZXRUYWJsZTo6aXRlcmF0b3IgZW5kID0gdW5saW5rZWRDb2RlQmxvY2stPnN0cmlu
Z1N3aXRjaEp1bXBUYWJsZShpKS5vZmZzZXRUYWJsZS5lbmQoKTsKICAgICAgICAgICAgICAgICBm
b3IgKDsgcHRyICE9IGVuZDsgKytwdHIpIHsKICAgICAgICAgICAgICAgICAgICAgT2Zmc2V0TG9j
YXRpb24gb2Zmc2V0OwotICAgICAgICAgICAgICAgICAgICBvZmZzZXQuYnJhbmNoT2Zmc2V0ID0g
cHRyLT52YWx1ZTsKKyAgICAgICAgICAgICAgICAgICAgb2Zmc2V0LmJyYW5jaE9mZnNldCA9IHB0
ci0+dmFsdWUuYnJhbmNoT2Zmc2V0OwogICAgICAgICAgICAgICAgICAgICBtX3JhcmVEYXRhLT5t
X3N0cmluZ1N3aXRjaEp1bXBUYWJsZXNbaV0ub2Zmc2V0VGFibGUuYWRkKHB0ci0+a2V5LCBvZmZz
ZXQpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KQEAgLTIwNjksMTEgKzIwMzIs
MTcgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0
YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICAvLyBCb29ra2VlcCB0aGUgc3Ryb25n
bHkgcmVmZXJlbmNlZCBtb2R1bGUgZW52aXJvbm1lbnRzLgogICAgIEhhc2hTZXQ8SlNNb2R1bGVF
bnZpcm9ubWVudCo+IHN0cm9uZ2x5UmVmZXJlbmNlZE1vZHVsZUVudmlyb25tZW50czsKIAotICAg
IC8vIEJvb2trZWVwIHRoZSBtZXJnZSBwb2ludCBieXRlY29kZSBvZmZzZXRzLgotICAgIFZlY3Rv
cjxzaXplX3Q+IG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldHM7Ci0KICAgICBSZWZDb3VudGVkQXJy
YXk8SW5zdHJ1Y3Rpb24+IGluc3RydWN0aW9ucyhpbnN0cnVjdGlvbkNvdW50KTsKIAorICAgIHVu
c2lnbmVkIHZhbHVlUHJvZmlsZUNvdW50ID0gMDsKKyAgICBhdXRvIGxpbmtWYWx1ZVByb2ZpbGUg
PSBbJl0odW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIHVuc2lnbmVkIG9wTGVuZ3RoKSB7CisgICAg
ICAgIHVuc2lnbmVkIHZhbHVlUHJvZmlsZUluZGV4ID0gdmFsdWVQcm9maWxlQ291bnQrKzsKKyAg
ICAgICAgVmFsdWVQcm9maWxlKiBwcm9maWxlID0gJm1fdmFsdWVQcm9maWxlc1t2YWx1ZVByb2Zp
bGVJbmRleF07CisgICAgICAgIEFTU0VSVChwcm9maWxlLT5tX2J5dGVjb2RlT2Zmc2V0ID09IC0x
KTsKKyAgICAgICAgcHJvZmlsZS0+bV9ieXRlY29kZU9mZnNldCA9IGJ5dGVjb2RlT2Zmc2V0Owor
ICAgICAgICBpbnN0cnVjdGlvbnNbYnl0ZWNvZGVPZmZzZXQgKyBvcExlbmd0aCAtIDFdID0gcHJv
ZmlsZTsKKyAgICB9OworCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgIWluc3RydWN0aW9uUmVh
ZGVyLmF0RW5kKCk7ICkgewogICAgICAgICBjb25zdCBVbmxpbmtlZEluc3RydWN0aW9uKiBwYyA9
IGluc3RydWN0aW9uUmVhZGVyLm5leHQoKTsKIApAQCAtMjEwOCwxMCArMjA3Nyw3IEBAIHZvaWQg
Q29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVy
RXhlY3V0YWJsZSwgVW5saW5rCiAgICAgICAgIGNhc2Ugb3BfZ2V0X2J5X2lkOgogICAgICAgICBj
YXNlIG9wX2dldF9mcm9tX2FyZ3VtZW50czoKICAgICAgICAgY2FzZSBvcF90b19udW1iZXI6IHsK
LSAgICAgICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9ICZtX3ZhbHVlUHJvZmlsZXNbcGNb
b3BMZW5ndGggLSAxXS51Lm9wZXJhbmRdOwotICAgICAgICAgICAgQVNTRVJUKHByb2ZpbGUtPm1f
Ynl0ZWNvZGVPZmZzZXQgPT0gLTEpOwotICAgICAgICAgICAgcHJvZmlsZS0+bV9ieXRlY29kZU9m
ZnNldCA9IGk7Ci0gICAgICAgICAgICBpbnN0cnVjdGlvbnNbaSArIG9wTGVuZ3RoIC0gMV0gPSBw
cm9maWxlOworICAgICAgICAgICAgbGlua1ZhbHVlUHJvZmlsZShpLCBvcExlbmd0aCk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX3B1dF9ieV92YWw6IHsK
QEAgLTIxNDgsMTAgKzIxMTQsNyBAQCB2b2lkIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0m
IHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGluawogICAgICAgICBj
YXNlIG9wX2NhbGw6CiAgICAgICAgIGNhc2Ugb3BfdGFpbF9jYWxsOgogICAgICAgICBjYXNlIG9w
X2NhbGxfZXZhbDogewotICAgICAgICAgICAgVmFsdWVQcm9maWxlKiBwcm9maWxlID0gJm1fdmFs
dWVQcm9maWxlc1twY1tvcExlbmd0aCAtIDFdLnUub3BlcmFuZF07Ci0gICAgICAgICAgICBBU1NF
UlQocHJvZmlsZS0+bV9ieXRlY29kZU9mZnNldCA9PSAtMSk7Ci0gICAgICAgICAgICBwcm9maWxl
LT5tX2J5dGVjb2RlT2Zmc2V0ID0gaTsKLSAgICAgICAgICAgIGluc3RydWN0aW9uc1tpICsgb3BM
ZW5ndGggLSAxXSA9IHByb2ZpbGU7CisgICAgICAgICAgICBsaW5rVmFsdWVQcm9maWxlKGksIG9w
TGVuZ3RoKTsKICAgICAgICAgICAgIGludCBhcnJheVByb2ZpbGVJbmRleCA9IHBjW29wTGVuZ3Ro
IC0gMl0udS5vcGVyYW5kOwogICAgICAgICAgICAgbV9hcnJheVByb2ZpbGVzW2FycmF5UHJvZmls
ZUluZGV4XSA9IEFycmF5UHJvZmlsZShpKTsKICAgICAgICAgICAgIGluc3RydWN0aW9uc1tpICsg
b3BMZW5ndGggLSAyXSA9ICZtX2FycmF5UHJvZmlsZXNbYXJyYXlQcm9maWxlSW5kZXhdOwpAQCAt
MjE2MCwxMCArMjEyMyw3IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0s
IFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAgICAgIH0KICAg
ICAgICAgY2FzZSBvcF9jb25zdHJ1Y3Q6IHsKICAgICAgICAgICAgIGluc3RydWN0aW9uc1tpICsg
NV0gPSAmbV9sbGludENhbGxMaW5rSW5mb3NbcGNbNV0udS5vcGVyYW5kXTsKLSAgICAgICAgICAg
IFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9ICZtX3ZhbHVlUHJvZmlsZXNbcGNbb3BMZW5ndGggLSAx
XS51Lm9wZXJhbmRdOwotICAgICAgICAgICAgQVNTRVJUKHByb2ZpbGUtPm1fYnl0ZWNvZGVPZmZz
ZXQgPT0gLTEpOwotICAgICAgICAgICAgcHJvZmlsZS0+bV9ieXRlY29kZU9mZnNldCA9IGk7Ci0g
ICAgICAgICAgICBpbnN0cnVjdGlvbnNbaSArIG9wTGVuZ3RoIC0gMV0gPSBwcm9maWxlOworICAg
ICAgICAgICAgbGlua1ZhbHVlUHJvZmlsZShpLCBvcExlbmd0aCk7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2dldF9hcnJheV9sZW5ndGg6CkBAIC0yMTk0
LDEwICsyMTU0LDcgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2Ny
aXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICAgICAgfQogCiAgICAg
ICAgIGNhc2Ugb3BfZ2V0X2Zyb21fc2NvcGU6IHsKLSAgICAgICAgICAgIFZhbHVlUHJvZmlsZSog
cHJvZmlsZSA9ICZtX3ZhbHVlUHJvZmlsZXNbcGNbb3BMZW5ndGggLSAxXS51Lm9wZXJhbmRdOwot
ICAgICAgICAgICAgQVNTRVJUKHByb2ZpbGUtPm1fYnl0ZWNvZGVPZmZzZXQgPT0gLTEpOwotICAg
ICAgICAgICAgcHJvZmlsZS0+bV9ieXRlY29kZU9mZnNldCA9IGk7Ci0gICAgICAgICAgICBpbnN0
cnVjdGlvbnNbaSArIG9wTGVuZ3RoIC0gMV0gPSBwcm9maWxlOworICAgICAgICAgICAgbGlua1Zh
bHVlUHJvZmlsZShpLCBvcExlbmd0aCk7CiAKICAgICAgICAgICAgIC8vIGdldF9mcm9tX3Njb3Bl
IGRzdCwgc2NvcGUsIGlkLCBHZXRQdXRJbmZvLCBTdHJ1Y3R1cmUsIE9wZXJhbmQKIApAQCAtMjM1
NCwxNSArMjMxMSw2IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNj
cmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQogCi0gICAgICAgIGNhc2Ugb3Bfc2F2ZTogewotICAgICAgICAgICAgdW5z
aWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gcGNbMl0udS5pbmRleDsKLSAgICAgICAgICAg
IGludCBvZmZzZXQgPSBwY1szXS51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBpZiAobGl2ZUNhbGxl
ZUxvY2Fsc0luZGV4ID49IG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldHMuc2l6ZSgpKQotICAgICAg
ICAgICAgICAgIG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldHMucmVzaXplKGxpdmVDYWxsZWVMb2Nh
bHNJbmRleCArIDEpOwotICAgICAgICAgICAgbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0c1tsaXZl
Q2FsbGVlTG9jYWxzSW5kZXhdID0gaSArIG9mZnNldDsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICB9Ci0KICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CkBAIC0yMzc0LDIwICsyMzIyLDYgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZN
JiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKIAogICAgIG1f
aW5zdHJ1Y3Rpb25zID0gV1RGTW92ZShpbnN0cnVjdGlvbnMpOwogCi0gICAgLy8gUGVyZm9ybSBi
eXRlY29kZSBsaXZlbmVzcyBhbmFseXNpcyB0byBkZXRlcm1pbmUgd2hpY2ggbG9jYWxzIGFyZSBs
aXZlIGFuZCBzaG91bGQgYmUgcmVzdW1lZCB3aGVuIGV4ZWN1dGluZyBvcF9yZXN1bWUuCi0gICAg
aWYgKHVubGlua2VkQ29kZUJsb2NrLT5wYXJzZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6Okdl
bmVyYXRvckJvZHlNb2RlKSB7Ci0gICAgICAgIGlmIChzaXplX3QgY291bnQgPSBtZXJnZVBvaW50
Qnl0ZWNvZGVPZmZzZXRzLnNpemUoKSkgewotICAgICAgICAgICAgY3JlYXRlUmFyZURhdGFJZk5l
Y2Vzc2FyeSgpOwotICAgICAgICAgICAgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzIGxpdmVuZXNz
KHRoaXMpOwotICAgICAgICAgICAgbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVs
ZC5ncm93KGNvdW50KTsKLSAgICAgICAgICAgIHNpemVfdCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXgg
PSAwOwotICAgICAgICAgICAgZm9yIChzaXplX3QgYnl0ZWNvZGVPZmZzZXQgOiBtZXJnZVBvaW50
Qnl0ZWNvZGVPZmZzZXRzKSB7Ci0gICAgICAgICAgICAgICAgbV9yYXJlRGF0YS0+bV9saXZlQ2Fs
bGVlTG9jYWxzQXRZaWVsZFtsaXZlQ2FsbGVlTG9jYWxzSW5kZXhdID0gbGl2ZW5lc3MuZ2V0TGl2
ZW5lc3NJbmZvQXRCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCk7Ci0gICAgICAgICAgICAg
ICAgKytsaXZlQ2FsbGVlTG9jYWxzSW5kZXg7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAg
ICB9Ci0KICAgICAvLyBTZXQgb3B0aW1pemF0aW9uIHRocmVzaG9sZHMgb25seSBhZnRlciBtX2lu
c3RydWN0aW9ucyBpcyBpbml0aWFsaXplZCwgc2luY2UgdGhlc2UKICAgICAvLyByZWx5IG9uIHRo
ZSBpbnN0cnVjdGlvbiBjb3VudCAoYW5kIGFyZSBpbiB0aGVvcnkgcGVybWl0dGVkIHRvIGFsc28g
aW5zcGVjdCB0aGUKICAgICAvLyBpbnN0cnVjdGlvbiBzdHJlYW0gdG8gbW9yZSBhY2N1cmF0ZSBh
c3Nlc3MgdGhlIGNvc3Qgb2YgdGllci11cCkuCkBAIC0zMTg3LDIxICszMTIxLDcgQEAgSGFuZGxl
ckluZm8qIENvZGVCbG9jazo6aGFuZGxlckZvckluZGV4KHVuc2lnbmVkIGluZGV4LCBSZXF1aXJl
ZEhhbmRsZXIgcmVxdWlyZWQKIHsKICAgICBpZiAoIW1fcmFyZURhdGEpCiAgICAgICAgIHJldHVy
biAwOwotICAgIAotICAgIFZlY3RvcjxIYW5kbGVySW5mbz4mIGV4Y2VwdGlvbkhhbmRsZXJzID0g
bV9yYXJlRGF0YS0+bV9leGNlcHRpb25IYW5kbGVyczsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGV4Y2VwdGlvbkhhbmRsZXJzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIEhhbmRsZXJJbmZv
JiBoYW5kbGVyID0gZXhjZXB0aW9uSGFuZGxlcnNbaV07Ci0gICAgICAgIGlmICgocmVxdWlyZWRI
YW5kbGVyID09IFJlcXVpcmVkSGFuZGxlcjo6Q2F0Y2hIYW5kbGVyKSAmJiAhaGFuZGxlci5pc0Nh
dGNoSGFuZGxlcigpKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgLy8gSGFuZGxl
cnMgYXJlIG9yZGVyZWQgaW5uZXJtb3N0IGZpcnN0LCBzbyB0aGUgZmlyc3QgaGFuZGxlciB3ZSBl
bmNvdW50ZXIKLSAgICAgICAgLy8gdGhhdCBjb250YWlucyB0aGUgc291cmNlIGFkZHJlc3MgaXMg
dGhlIGNvcnJlY3QgaGFuZGxlciB0byB1c2UuCi0gICAgICAgIC8vIFRoaXMgaW5kZXggdXNlZCBp
cyBlaXRoZXIgdGhlIEJ5dGVjb2RlT2Zmc2V0IG9yIGEgQ2FsbFNpdGVJbmRleC4KLSAgICAgICAg
aWYgKGhhbmRsZXIuc3RhcnQgPD0gaW5kZXggJiYgaGFuZGxlci5lbmQgPiBpbmRleCkKLSAgICAg
ICAgICAgIHJldHVybiAmaGFuZGxlcjsKLSAgICB9Ci0KLSAgICByZXR1cm4gMDsKKyAgICByZXR1
cm4gSGFuZGxlckluZm86OmhhbmRsZXJGb3JJbmRleChtX3JhcmVEYXRhLT5tX2V4Y2VwdGlvbkhh
bmRsZXJzLCBpbmRleCwgcmVxdWlyZWRIYW5kbGVyKTsKIH0KIAogQ2FsbFNpdGVJbmRleCBDb2Rl
QmxvY2s6Om5ld0V4Y2VwdGlvbkhhbmRsaW5nQ2FsbFNpdGVJbmRleChDYWxsU2l0ZUluZGV4IG9y
aWdpbmFsQ2FsbFNpdGUpCkBAIC0zMjk2LDcgKzMyMTYsNiBAQCB2b2lkIENvZGVCbG9jazo6c2hy
aW5rVG9GaXQoU2hyaW5rTW9kZSBzaHJpbmtNb2RlKQogICAgICAgICBpZiAobV9yYXJlRGF0YSkg
ewogICAgICAgICAgICAgbV9yYXJlRGF0YS0+bV9zd2l0Y2hKdW1wVGFibGVzLnNocmlua1RvRml0
KCk7CiAgICAgICAgICAgICBtX3JhcmVEYXRhLT5tX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXMuc2hy
aW5rVG9GaXQoKTsKLSAgICAgICAgICAgIG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0
WWllbGQuc2hyaW5rVG9GaXQoKTsKICAgICAgICAgfQogICAgIH0gLy8gZWxzZSBkb24ndCBzaHJp
bmsgdGhlc2UsIGJlY2F1c2Ugd2Ugd291bGQgaGF2ZSBhbHJlYWR5IHBvaW50ZWQgcG9pbnRlcnMg
aW50byB0aGVzZSB0YWJsZXMuCiB9CkBAIC00Mjc4LDE0ICs0MTk3LDkgQEAgU3RyaW5nIENvZGVC
bG9jazo6bmFtZUZvclJlZ2lzdGVyKFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIpCiAK
IFZhbHVlUHJvZmlsZSogQ29kZUJsb2NrOjp2YWx1ZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChp
bnQgYnl0ZWNvZGVPZmZzZXQpCiB7Ci0gICAgVmFsdWVQcm9maWxlKiByZXN1bHQgPSBiaW5hcnlT
ZWFyY2g8VmFsdWVQcm9maWxlLCBpbnQ+KAotICAgICAgICBtX3ZhbHVlUHJvZmlsZXMsIG1fdmFs
dWVQcm9maWxlcy5zaXplKCksIGJ5dGVjb2RlT2Zmc2V0LAotICAgICAgICBnZXRWYWx1ZVByb2Zp
bGVCeXRlY29kZU9mZnNldDxWYWx1ZVByb2ZpbGU+KTsKLSAgICBBU1NFUlQocmVzdWx0LT5tX2J5
dGVjb2RlT2Zmc2V0ICE9IC0xKTsKLSAgICBBU1NFUlQoaW5zdHJ1Y3Rpb25zKClbYnl0ZWNvZGVP
ZmZzZXQgKyBvcGNvZGVMZW5ndGgoCi0gICAgICAgIG1fdm0tPmludGVycHJldGVyLT5nZXRPcGNv
ZGVJRCgKLSAgICAgICAgICAgIGluc3RydWN0aW9ucygpW2J5dGVjb2RlT2Zmc2V0XS51Lm9wY29k
ZSkpIC0gMV0udS5wcm9maWxlID09IHJlc3VsdCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICBP
cGNvZGVJRCBvcGNvZGVJRCA9IG1fdm0tPmludGVycHJldGVyLT5nZXRPcGNvZGVJRChpbnN0cnVj
dGlvbnMoKVtieXRlY29kZU9mZnNldF0udS5vcGNvZGUpOworICAgIHVuc2lnbmVkIGxlbmd0aCA9
IG9wY29kZUxlbmd0aChvcGNvZGVJRCk7CisgICAgcmV0dXJuIGluc3RydWN0aW9ucygpW2J5dGVj
b2RlT2Zmc2V0ICsgbGVuZ3RoIC0gMV0udS5wcm9maWxlOwogfQogCiB2b2lkIENvZGVCbG9jazo6
dmFsaWRhdGUoKQpAQCAtNDU2OCw0ICs0NDgyLDE2IEBAIHZvaWQgQ29kZUJsb2NrOjpqaXRTb29u
KCkKICAgICBtX2xsaW50RXhlY3V0ZUNvdW50ZXIuc2V0TmV3VGhyZXNob2xkKHRocmVzaG9sZEZv
ckpJVChPcHRpb25zOjp0aHJlc2hvbGRGb3JKSVRTb29uKCkpLCB0aGlzKTsKIH0KIAorQnl0ZWNv
ZGVMaXZlbmVzc0FuYWx5c2lzJiBDb2RlQmxvY2s6OmxpdmVuZXNzQW5hbHlzaXNTbG93KCkKK3sK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzPiBhbmFseXNpcyA9
IHN0ZDo6bWFrZV91bmlxdWU8Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzPih0aGlzKTsKKyAgICB7
CisgICAgICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKG1fbG9jayk7CisgICAgICAgIGlm
ICghbV9saXZlbmVzc0FuYWx5c2lzKQorICAgICAgICAgICAgbV9saXZlbmVzc0FuYWx5c2lzID0g
V1RGTW92ZShhbmFseXNpcyk7CisgICAgICAgIHJldHVybiAqbV9saXZlbmVzc0FuYWx5c2lzOwor
ICAgIH0KK30KKworCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2suaAppbmRleCA0ODBhMWNiNWY4OTEzMDI3NTE1N2EzYzJkODU1NzMz
NjcyZmZmNjFmLi4wODg0Y2Y1M2U1YmQzYjhkMGYzOWFjYjRmZDgzYmMwNzcxYmY5YTUwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCkBAIC0zMyw3ICszMyw2
IEBACiAjaW5jbHVkZSAiQXJyYXlQcm9maWxlLmgiCiAjaW5jbHVkZSAiQnlWYWxJbmZvLmgiCiAj
aW5jbHVkZSAiQnl0ZWNvZGVDb252ZW50aW9ucy5oIgotI2luY2x1ZGUgIkJ5dGVjb2RlTGl2ZW5l
c3NBbmFseXNpcy5oIgogI2luY2x1ZGUgIkNhbGxMaW5rSW5mby5oIgogI2luY2x1ZGUgIkNhbGxS
ZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0LmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrSGFzaC5o
IgpAQCAtNzksNiArNzgsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorY2xhc3MgQnl0ZWNvZGVM
aXZlbmVzc0FuYWx5c2lzOwogY2xhc3MgRXhlY1N0YXRlOwogY2xhc3MgSklUQWRkR2VuZXJhdG9y
OwogY2xhc3MgSlNNb2R1bGVFbnZpcm9ubWVudDsKQEAgLTIyNCwxMCArMjI0LDYgQEAgY2xhc3Mg
Q29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgICAgIHJldHVybiBpbmRleCA+PSBtX251
bVZhcnM7CiAgICAgfQogCi0gICAgZW51bSBjbGFzcyBSZXF1aXJlZEhhbmRsZXIgewotICAgICAg
ICBDYXRjaEhhbmRsZXIsCi0gICAgICAgIEFueUhhbmRsZXIKLSAgICB9OwogICAgIEhhbmRsZXJJ
bmZvKiBoYW5kbGVyRm9yQnl0ZWNvZGVPZmZzZXQodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIFJl
cXVpcmVkSGFuZGxlciA9IFJlcXVpcmVkSGFuZGxlcjo6QW55SGFuZGxlcik7CiAgICAgSGFuZGxl
ckluZm8qIGhhbmRsZXJGb3JJbmRleCh1bnNpZ25lZCwgUmVxdWlyZWRIYW5kbGVyID0gUmVxdWly
ZWRIYW5kbGVyOjpBbnlIYW5kbGVyKTsKICAgICB2b2lkIHJlbW92ZUV4Y2VwdGlvbkhhbmRsZXJG
b3JDYWxsU2l0ZShDYWxsU2l0ZUluZGV4KTsKQEAgLTMwMCw2ICsyOTYsOSBAQCBjbGFzcyBDb2Rl
QmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEluc3Ry
dWN0aW9uKj4ocmV0dXJuQWRkcmVzcykgLSBpbnN0cnVjdGlvbnMoKS5iZWdpbigpOwogICAgIH0K
IAorICAgIHR5cGVkZWYgSlNDOjpJbnN0cnVjdGlvbiBJbnN0cnVjdGlvbjsKKyAgICB0eXBlZGVm
IFJlZkNvdW50ZWRBcnJheTxJbnN0cnVjdGlvbj4mIFVucGFja2VkSW5zdHJ1Y3Rpb25zOworCiAg
ICAgdW5zaWduZWQgbnVtYmVyT2ZJbnN0cnVjdGlvbnMoKSBjb25zdCB7IHJldHVybiBtX2luc3Ry
dWN0aW9ucy5zaXplKCk7IH0KICAgICBSZWZDb3VudGVkQXJyYXk8SW5zdHJ1Y3Rpb24+JiBpbnN0
cnVjdGlvbnMoKSB7IHJldHVybiBtX2luc3RydWN0aW9uczsgfQogICAgIGNvbnN0IFJlZkNvdW50
ZWRBcnJheTxJbnN0cnVjdGlvbj4mIGluc3RydWN0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1faW5z
dHJ1Y3Rpb25zOyB9CkBAIC01NDIsNyArNTQxLDcgQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGlj
IEpTQ2VsbCB7CiAgICAgfQogCiAgICAgV3JpdGVCYXJyaWVyPFVua25vd24+JiBjb25zdGFudFJl
Z2lzdGVyKGludCBpbmRleCkgeyByZXR1cm4gbV9jb25zdGFudFJlZ2lzdGVyc1tpbmRleCAtIEZp
cnN0Q29uc3RhbnRSZWdpc3RlckluZGV4XTsgfQotICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc0Nv
bnN0YW50UmVnaXN0ZXJJbmRleChpbnQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIGluZGV4ID49IEZp
cnN0Q29uc3RhbnRSZWdpc3RlckluZGV4OyB9CisgICAgc3RhdGljIEFMV0FZU19JTkxJTkUgYm9v
bCBpc0NvbnN0YW50UmVnaXN0ZXJJbmRleChpbnQgaW5kZXgpIHsgcmV0dXJuIGluZGV4ID49IEZp
cnN0Q29uc3RhbnRSZWdpc3RlckluZGV4OyB9CiAgICAgQUxXQVlTX0lOTElORSBKU1ZhbHVlIGdl
dENvbnN0YW50KGludCBpbmRleCkgY29uc3QgeyByZXR1cm4gbV9jb25zdGFudFJlZ2lzdGVyc1tp
bmRleCAtIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4XS5nZXQoKTsgfQogICAgIEFMV0FZU19J
TkxJTkUgU291cmNlQ29kZVJlcHJlc2VudGF0aW9uIGNvbnN0YW50U291cmNlQ29kZVJlcHJlc2Vu
dGF0aW9uKGludCBpbmRleCkgY29uc3QgeyByZXR1cm4gbV9jb25zdGFudHNTb3VyY2VDb2RlUmVw
cmVzZW50YXRpb25baW5kZXggLSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleF07IH0KIApAQCAt
NTg4LDE0ICs1ODcsNyBAQCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAg
ICAgICAgIGlmICghIW1fbGl2ZW5lc3NBbmFseXNpcykKICAgICAgICAgICAgICAgICByZXR1cm4g
Km1fbGl2ZW5lc3NBbmFseXNpczsKICAgICAgICAgfQotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8
Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzPiBhbmFseXNpcyA9Ci0gICAgICAgICAgICBzdGQ6Om1h
a2VfdW5pcXVlPEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcz4odGhpcyk7Ci0gICAgICAgIHsKLSAg
ICAgICAgICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKG1fbG9jayk7Ci0gICAgICAgICAg
ICBpZiAoIW1fbGl2ZW5lc3NBbmFseXNpcykKLSAgICAgICAgICAgICAgICBtX2xpdmVuZXNzQW5h
bHlzaXMgPSBXVEZNb3ZlKGFuYWx5c2lzKTsKLSAgICAgICAgICAgIHJldHVybiAqbV9saXZlbmVz
c0FuYWx5c2lzOwotICAgICAgICB9CisgICAgICAgIHJldHVybiBsaXZlbmVzc0FuYWx5c2lzU2xv
dygpOwogICAgIH0KICAgICAKICAgICB2b2lkIHZhbGlkYXRlKCk7CkBAIC02MTYsMTggKzYwOCw2
IEBAIGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgIFN0cmluZ0p1bXBUYWJs
ZSYgYWRkU3RyaW5nU3dpdGNoSnVtcFRhYmxlKCkgeyBjcmVhdGVSYXJlRGF0YUlmTmVjZXNzYXJ5
KCk7IG1fcmFyZURhdGEtPm1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlcy5hcHBlbmQoU3RyaW5nSnVt
cFRhYmxlKCkpOyByZXR1cm4gbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzLmxh
c3QoKTsgfQogICAgIFN0cmluZ0p1bXBUYWJsZSYgc3RyaW5nU3dpdGNoSnVtcFRhYmxlKGludCB0
YWJsZUluZGV4KSB7IFJFTEVBU0VfQVNTRVJUKG1fcmFyZURhdGEpOyByZXR1cm4gbV9yYXJlRGF0
YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzW3RhYmxlSW5kZXhdOyB9CiAKLSAgICAvLyBMaXZl
IGNhbGxlZSByZWdpc3RlcnMgYXQgeWllbGQgcG9pbnRzLgotICAgIGNvbnN0IEZhc3RCaXRWZWN0
b3ImIGxpdmVDYWxsZWVMb2NhbHNBdFlpZWxkKHVuc2lnbmVkIGluZGV4KSBjb25zdAotICAgIHsK
LSAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9yYXJlRGF0YSk7Ci0gICAgICAgIHJldHVybiBtX3Jh
cmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkW2luZGV4XTsKLSAgICB9Ci0gICAgRmFz
dEJpdFZlY3RvciYgbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQodW5zaWduZWQgaW5kZXgpCi0gICAg
ewotICAgICAgICBSRUxFQVNFX0FTU0VSVChtX3JhcmVEYXRhKTsKLSAgICAgICAgcmV0dXJuIG1f
cmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGRbaW5kZXhdOwotICAgIH0KLQogICAg
IEV2YWxDb2RlQ2FjaGUmIGV2YWxDb2RlQ2FjaGUoKSB7IGNyZWF0ZVJhcmVEYXRhSWZOZWNlc3Nh
cnkoKTsgcmV0dXJuIG1fcmFyZURhdGEtPm1fZXZhbENvZGVDYWNoZTsgfQogCiAgICAgZW51bSBT
aHJpbmtNb2RlIHsKQEAgLTg4Miw4ICs4NjIsNiBAQCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMg
SlNDZWxsIHsKICAgICAgICAgVmVjdG9yPFNpbXBsZUp1bXBUYWJsZT4gbV9zd2l0Y2hKdW1wVGFi
bGVzOwogICAgICAgICBWZWN0b3I8U3RyaW5nSnVtcFRhYmxlPiBtX3N0cmluZ1N3aXRjaEp1bXBU
YWJsZXM7CiAKLSAgICAgICAgVmVjdG9yPEZhc3RCaXRWZWN0b3I+IG1fbGl2ZUNhbGxlZUxvY2Fs
c0F0WWllbGQ7Ci0KICAgICAgICAgRXZhbENvZGVDYWNoZSBtX2V2YWxDb2RlQ2FjaGU7CiAgICAg
fTsKIApAQCAtOTE4LDYgKzg5Niw4IEBAIGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwg
ewogCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBDb2RlQmxvY2tTZXQ7CisKKyAgICBCeXRl
Y29kZUxpdmVuZXNzQW5hbHlzaXMmIGxpdmVuZXNzQW5hbHlzaXNTbG93KCk7CiAgICAgCiAgICAg
Q29kZUJsb2NrKiBzcGVjaWFsT1NSRW50cnlCbG9ja09yTnVsbCgpOwogICAgIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0hhbmRsZXJJbmZvLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSGFuZGxlckluZm8uaAppbmRleCBhY2RkYTA4ZWQxNGNi
ZjlmMDk3MTI3NTA0MDVhNDE3NDFmNzZhMjEzLi5iYjY5MmI5ZGMxNzBiMDlmNDNjZTg2N2Y5NDFm
NzUzNWFjZmVjZjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
SGFuZGxlckluZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSGFuZGxl
ckluZm8uaApAQCAtMzcsNiArMzcsMTEgQEAgZW51bSBjbGFzcyBIYW5kbGVyVHlwZSB7CiAgICAg
U3ludGhlc2l6ZWRGaW5hbGx5ID0gMwogfTsKIAorZW51bSBjbGFzcyBSZXF1aXJlZEhhbmRsZXIg
eworICAgIENhdGNoSGFuZGxlciwKKyAgICBBbnlIYW5kbGVyCit9OworCiBzdHJ1Y3QgSGFuZGxl
ckluZm9CYXNlIHsKICAgICBIYW5kbGVyVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8SGFuZGxlclR5cGU+KHR5cGVCaXRzKTsgfQogICAgIHZvaWQgc2V0VHlwZShIYW5kbGVy
VHlwZSB0eXBlKSB7IHR5cGVCaXRzID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHR5cGUpOyB9CkBA
IC01OCw2ICs2MywyMyBAQCBzdHJ1Y3QgSGFuZGxlckluZm9CYXNlIHsKIAogICAgIGJvb2wgaXND
YXRjaEhhbmRsZXIoKSBjb25zdCB7IHJldHVybiB0eXBlKCkgPT0gSGFuZGxlclR5cGU6OkNhdGNo
OyB9CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIYW5kbGVyPgorICAgIHN0YXRpYyBIYW5kbGVy
KiBoYW5kbGVyRm9ySW5kZXgoVmVjdG9yPEhhbmRsZXI+JiBleGVwdGlvbkhhbmRsZXJzLCB1bnNp
Z25lZCBpbmRleCwgUmVxdWlyZWRIYW5kbGVyIHJlcXVpcmVkSGFuZGxlcikKKyAgICB7CisgICAg
ICAgIGZvciAoSGFuZGxlciYgaGFuZGxlciA6IGV4ZXB0aW9uSGFuZGxlcnMpIHsKKyAgICAgICAg
ICAgIGlmICgocmVxdWlyZWRIYW5kbGVyID09IFJlcXVpcmVkSGFuZGxlcjo6Q2F0Y2hIYW5kbGVy
KSAmJiAhaGFuZGxlci5pc0NhdGNoSGFuZGxlcigpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVl
OworCisgICAgICAgICAgICAvLyBIYW5kbGVycyBhcmUgb3JkZXJlZCBpbm5lcm1vc3QgZmlyc3Qs
IHNvIHRoZSBmaXJzdCBoYW5kbGVyIHdlIGVuY291bnRlcgorICAgICAgICAgICAgLy8gdGhhdCBj
b250YWlucyB0aGUgc291cmNlIGFkZHJlc3MgaXMgdGhlIGNvcnJlY3QgaGFuZGxlciB0byB1c2Uu
CisgICAgICAgICAgICAvLyBUaGlzIGluZGV4IHVzZWQgaXMgZWl0aGVyIHRoZSBCeXRlY29kZU9m
ZnNldCBvciBhIENhbGxTaXRlSW5kZXguCisgICAgICAgICAgICBpZiAoaGFuZGxlci5zdGFydCA8
PSBpbmRleCAmJiBoYW5kbGVyLmVuZCA+IGluZGV4KQorICAgICAgICAgICAgICAgIHJldHVybiAm
aGFuZGxlcjsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKwog
ICAgIHVpbnQzMl90IHN0YXJ0OwogICAgIHVpbnQzMl90IGVuZDsKICAgICB1aW50MzJfdCB0YXJn
ZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1
bXBUYXJnZXRzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVt
cFRhcmdldHMuY3BwCmluZGV4IGUyY2IwMDA0ODM3OTRiYTkyZDUxMGRjZjVmYTk5NDg4NWEyM2Rj
M2QuLmNhYjlmYmRjNGU4MzlmYmI4OWE2OTMzNTYyMjJkYjAwZTEwMjIzY2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHMuY3Bw
CkBAIC0yNiwxNCArMjYsMTUgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJQcmVj
aXNlSnVtcFRhcmdldHMuaCIKIAorI2luY2x1ZGUgIkludGVycHJldGVySW5saW5lcy5oIgogI2lu
Y2x1ZGUgIkpTQ0lubGluZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKLXRlbXBsYXRlIDxzaXpl
X3QgdmVjdG9yU2l6ZT4KLXN0YXRpYyB2b2lkIGdldEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZz
ZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEludGVycHJldGVyKiBpbnRlcnByZXRlciwgSW5zdHJ1
Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgVmVjdG9y
PHVuc2lnbmVkLCB2ZWN0b3JTaXplPiYgb3V0KQordGVtcGxhdGUgPHNpemVfdCB2ZWN0b3JTaXpl
LCB0eXBlbmFtZSBCbG9jaywgdHlwZW5hbWUgSW5zdHJ1Y3Rpb24+CitzdGF0aWMgdm9pZCBnZXRK
dW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KEJsb2NrKiBjb2RlQmxvY2ssIEludGVycHJldGVy
KiBpbnRlcnByZXRlciwgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBi
eXRlY29kZU9mZnNldCwgVmVjdG9yPHVuc2lnbmVkLCB2ZWN0b3JTaXplPiYgb3V0KQogewotICAg
IE9wY29kZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGluc3RydWN0aW9u
c0JlZ2luW2J5dGVjb2RlT2Zmc2V0XS51Lm9wY29kZSk7CisgICAgT3Bjb2RlSUQgb3Bjb2RlSUQg
PSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25zQmVnaW5bYnl0ZWNvZGVPZmZz
ZXRdKTsKICAgICBJbnN0cnVjdGlvbiogY3VycmVudCA9IGluc3RydWN0aW9uc0JlZ2luICsgYnl0
ZWNvZGVPZmZzZXQ7CiAgICAgc3dpdGNoIChvcGNvZGVJRCkgewogICAgIGNhc2Ugb3Bfam1wOgpA
QCAtNTQsMjEgKzU1LDI1IEBAIHN0YXRpYyB2b2lkIGdldEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVP
ZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEludGVycHJldGVyKiBpCiAgICAgY2FzZSBvcF9q
bmxlc3NlcToKICAgICBjYXNlIG9wX2puZ3JlYXRlcjoKICAgICBjYXNlIG9wX2puZ3JlYXRlcmVx
OgotICAgIGNhc2Ugb3Bfc2F2ZTogLy8gVGhlIGp1bXAgb2Ygb3Bfc2F2ZSBpcyBwdXJlbHkgZm9y
IGNhbGN1bGF0aW5nIGxpdmVuZXNzLgogICAgICAgICBvdXQuYXBwZW5kKGJ5dGVjb2RlT2Zmc2V0
ICsgY3VycmVudFszXS51Lm9wZXJhbmQpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIG9wX3Nh
dmU6IHsKKyAgICAgICAgLy8gVGhlIGp1bXAgb2Ygb3Bfc2F2ZSB1bmRlciBFeHRyYWN0R2VuZXJh
dG9yTGl2ZUNhbGxlZUxvY2FscyBtb2RlIGlzIHB1cmVseSBmb3IgY2FsY3VsYXRpbmcgbGl2ZW5l
c3MuCisgICAgICAgIG91dC5hcHBlbmQoYnl0ZWNvZGVPZmZzZXQgKyBjdXJyZW50WzNdLnUub3Bl
cmFuZCk7CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICBjYXNlIG9wX3N3aXRjaF9pbW06CiAg
ICAgY2FzZSBvcF9zd2l0Y2hfY2hhcjogewotICAgICAgICBTaW1wbGVKdW1wVGFibGUmIHRhYmxl
ID0gY29kZUJsb2NrLT5zd2l0Y2hKdW1wVGFibGUoY3VycmVudFsxXS51Lm9wZXJhbmQpOworICAg
ICAgICBhdXRvJiB0YWJsZSA9IGNvZGVCbG9jay0+c3dpdGNoSnVtcFRhYmxlKGN1cnJlbnRbMV0u
dS5vcGVyYW5kKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gdGFibGUuYnJhbmNoT2Zmc2V0
cy5zaXplKCk7IGktLTspCiAgICAgICAgICAgICBvdXQuYXBwZW5kKGJ5dGVjb2RlT2Zmc2V0ICsg
dGFibGUuYnJhbmNoT2Zmc2V0c1tpXSk7CiAgICAgICAgIG91dC5hcHBlbmQoYnl0ZWNvZGVPZmZz
ZXQgKyBjdXJyZW50WzJdLnUub3BlcmFuZCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBj
YXNlIG9wX3N3aXRjaF9zdHJpbmc6IHsKLSAgICAgICAgU3RyaW5nSnVtcFRhYmxlJiB0YWJsZSA9
IGNvZGVCbG9jay0+c3RyaW5nU3dpdGNoSnVtcFRhYmxlKGN1cnJlbnRbMV0udS5vcGVyYW5kKTsK
LSAgICAgICAgU3RyaW5nSnVtcFRhYmxlOjpTdHJpbmdPZmZzZXRUYWJsZTo6aXRlcmF0b3IgaXRl
ciA9IHRhYmxlLm9mZnNldFRhYmxlLmJlZ2luKCk7Ci0gICAgICAgIFN0cmluZ0p1bXBUYWJsZTo6
U3RyaW5nT2Zmc2V0VGFibGU6Oml0ZXJhdG9yIGVuZCA9IHRhYmxlLm9mZnNldFRhYmxlLmVuZCgp
OworICAgICAgICBhdXRvJiB0YWJsZSA9IGNvZGVCbG9jay0+c3RyaW5nU3dpdGNoSnVtcFRhYmxl
KGN1cnJlbnRbMV0udS5vcGVyYW5kKTsKKyAgICAgICAgYXV0byBpdGVyID0gdGFibGUub2Zmc2V0
VGFibGUuYmVnaW4oKTsKKyAgICAgICAgYXV0byBlbmQgPSB0YWJsZS5vZmZzZXRUYWJsZS5lbmQo
KTsKICAgICAgICAgZm9yICg7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpCiAgICAgICAgICAgICBvdXQu
YXBwZW5kKGJ5dGVjb2RlT2Zmc2V0ICsgaXRlci0+dmFsdWUuYnJhbmNoT2Zmc2V0KTsKICAgICAg
ICAgb3V0LmFwcGVuZChieXRlY29kZU9mZnNldCArIGN1cnJlbnRbMl0udS5vcGVyYW5kKTsKQEAg
LTgyLDEzICs4NywxOSBAQCBzdGF0aWMgdm9pZCBnZXRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zm
c2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBJbnRlcnByZXRlciogaQogICAgIH0KIH0KIAotdm9p
ZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKENvZGVCbG9jayogY29kZUJsb2NrLCBWZWN0b3I8
dW5zaWduZWQsIDMyPiYgb3V0KQorZW51bSBjbGFzcyBDb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRz
TW9kZSB7CisgICAgRm9sbG93Q29kZUJsb2NrQ2xhaW0sCisgICAgRm9yY2VDb21wdXRlLAorfTsK
KwordGVtcGxhdGU8Q29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0c01vZGUgTW9kZSwgdHlwZW5hbWUg
QmxvY2ssIHR5cGVuYW1lIEluc3RydWN0aW9uLCBzaXplX3QgdmVjdG9yU2l6ZT4KK3ZvaWQgY29t
cHV0ZVByZWNpc2VKdW1wVGFyZ2V0c0ludGVybmFsKEJsb2NrKiBjb2RlQmxvY2ssIEluc3RydWN0
aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCwgVmVjdG9y
PHVuc2lnbmVkLCB2ZWN0b3JTaXplPiYgb3V0KQogewogICAgIEFTU0VSVChvdXQuaXNFbXB0eSgp
KTsKICAgICAKICAgICAvLyBXZSB3aWxsIGRlcml2ZSBhIHN1cGVyc2V0IG9mIHRoZSBqdW1wIHRh
cmdldHMgdGhhdCB0aGUgY29kZSBibG9jayB0aGlua3MgaXQgaGFzLgogICAgIC8vIFNvLCBpZiB0
aGUgY29kZSBibG9jayBjbGFpbXMgdGhlcmUgYXJlIG5vbmUsIHRoZW4gd2UgYXJlIGRvbmUuCi0g
ICAgaWYgKCFjb2RlQmxvY2stPm51bWJlck9mSnVtcFRhcmdldHMoKSkKKyAgICBpZiAoTW9kZSA9
PSBDb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzTW9kZTo6Rm9sbG93Q29kZUJsb2NrQ2xhaW0gJiYg
IWNvZGVCbG9jay0+bnVtYmVyT2ZKdW1wVGFyZ2V0cygpKQogICAgICAgICByZXR1cm47CiAgICAg
CiAgICAgZm9yICh1bnNpZ25lZCBpID0gY29kZUJsb2NrLT5udW1iZXJPZkV4Y2VwdGlvbkhhbmRs
ZXJzKCk7IGktLTspIHsKQEAgLTk4LDEwICsxMDksOCBAQCB2b2lkIGNvbXB1dGVQcmVjaXNlSnVt
cFRhcmdldHMoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFZlY3Rvcjx1bnNpZ25lZCwgMzI+JiBvdXQp
CiAgICAgfQogCiAgICAgSW50ZXJwcmV0ZXIqIGludGVycHJldGVyID0gY29kZUJsb2NrLT52bSgp
LT5pbnRlcnByZXRlcjsKLSAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4gPSBjb2Rl
QmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCk7Ci0gICAgdW5zaWduZWQgaW5zdHJ1Y3Rpb25D
b3VudCA9IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpOwogICAgIGZvciAodW5zaWdu
ZWQgYnl0ZWNvZGVPZmZzZXQgPSAwOyBieXRlY29kZU9mZnNldCA8IGluc3RydWN0aW9uQ291bnQ7
KSB7Ci0gICAgICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0ZXItPmdldE9wY29kZUlE
KGluc3RydWN0aW9uc0JlZ2luW2J5dGVjb2RlT2Zmc2V0XS51Lm9wY29kZSk7CisgICAgICAgIE9w
Y29kZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGluc3RydWN0aW9uc0Jl
Z2luW2J5dGVjb2RlT2Zmc2V0XSk7CiAgICAgICAgIGdldEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVP
ZmZzZXQoY29kZUJsb2NrLCBpbnRlcnByZXRlciwgaW5zdHJ1Y3Rpb25zQmVnaW4sIGJ5dGVjb2Rl
T2Zmc2V0LCBvdXQpOwogICAgICAgICBieXRlY29kZU9mZnNldCArPSBvcGNvZGVMZW5ndGhzW29w
Y29kZUlEXTsKICAgICB9CkBAIC0xMjMsMTEgKzEzMiwzNCBAQCB2b2lkIGNvbXB1dGVQcmVjaXNl
SnVtcFRhcmdldHMoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFZlY3Rvcjx1bnNpZ25lZCwgMzI+JiBv
dXQpCiAgICAgb3V0LnNocmlua1RvRml0KCk7CiB9CiAKLXZvaWQgZmluZEp1bXBUYXJnZXRzRm9y
Qnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlT2Zm
c2V0LCBWZWN0b3I8dW5zaWduZWQsIDE+JiBvdXQpCit2b2lkIGNvbXB1dGVQcmVjaXNlSnVtcFRh
cmdldHMoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFZlY3Rvcjx1bnNpZ25lZCwgMzI+JiBvdXQpCiB7
Ci0gICAgSW50ZXJwcmV0ZXIqIGludGVycHJldGVyID0gY29kZUJsb2NrLT52bSgpLT5pbnRlcnBy
ZXRlcjsKLSAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4gPSBjb2RlQmxvY2stPmlu
c3RydWN0aW9ucygpLmJlZ2luKCk7Ci0gICAgZ2V0SnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNl
dChjb2RlQmxvY2ssIGludGVycHJldGVyLCBpbnN0cnVjdGlvbnNCZWdpbiwgYnl0ZWNvZGVPZmZz
ZXQsIG91dCk7CisgICAgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0c0ludGVybmFsPENvbXB1dGVQ
cmVjaXNlSnVtcFRhcmdldHNNb2RlOjpGb2xsb3dDb2RlQmxvY2tDbGFpbT4oY29kZUJsb2NrLCBj
b2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCksIGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25z
KCkuc2l6ZSgpLCBvdXQpOworfQorCit2b2lkIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMoQ29k
ZUJsb2NrKiBjb2RlQmxvY2ssIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWdu
ZWQgaW5zdHJ1Y3Rpb25Db3VudCwgVmVjdG9yPHVuc2lnbmVkLCAzMj4mIG91dCkKK3sKKyAgICBj
b21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzSW50ZXJuYWw8Q29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0
c01vZGU6OkZvbGxvd0NvZGVCbG9ja0NsYWltPihjb2RlQmxvY2ssIGluc3RydWN0aW9uc0JlZ2lu
LCBpbnN0cnVjdGlvbkNvdW50LCBvdXQpOworfQorCit2b2lkIGNvbXB1dGVQcmVjaXNlSnVtcFRh
cmdldHMoVW5saW5rZWRDb2RlQmxvY2sqIGNvZGVCbG9jaywgVW5saW5rZWRJbnN0cnVjdGlvbiog
aW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQsIFZlY3Rvcjx1bnNp
Z25lZCwgMzI+JiBvdXQpCit7CisgICAgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0c0ludGVybmFs
PENvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHNNb2RlOjpGb2xsb3dDb2RlQmxvY2tDbGFpbT4oY29k
ZUJsb2NrLCBpbnN0cnVjdGlvbnNCZWdpbiwgaW5zdHJ1Y3Rpb25Db3VudCwgb3V0KTsKK30KKwor
dm9pZCByZWNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMoVW5saW5rZWRDb2RlQmxvY2sqIGNvZGVC
bG9jaywgVW5saW5rZWRJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGlu
c3RydWN0aW9uQ291bnQsIFZlY3Rvcjx1bnNpZ25lZD4mIG91dCkKK3sKKyAgICBjb21wdXRlUHJl
Y2lzZUp1bXBUYXJnZXRzSW50ZXJuYWw8Q29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0c01vZGU6OkZv
cmNlQ29tcHV0ZT4oY29kZUJsb2NrLCBpbnN0cnVjdGlvbnNCZWdpbiwgaW5zdHJ1Y3Rpb25Db3Vu
dCwgb3V0KTsKK30KKwordm9pZCBmaW5kSnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChDb2Rl
QmxvY2sqIGNvZGVCbG9jaywgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25l
ZCBieXRlY29kZU9mZnNldCwgVmVjdG9yPHVuc2lnbmVkLCAxPiYgb3V0KQoreworICAgIGdldEp1
bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoY29kZUJsb2NrLCBjb2RlQmxvY2stPnZtKCktPmlu
dGVycHJldGVyLCBpbnN0cnVjdGlvbnNCZWdpbiwgYnl0ZWNvZGVPZmZzZXQsIG91dCk7Cit9CisK
K3ZvaWQgZmluZEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoVW5saW5rZWRDb2RlQmxvY2sq
IGNvZGVCbG9jaywgVW5saW5rZWRJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2ln
bmVkIGJ5dGVjb2RlT2Zmc2V0LCBWZWN0b3I8dW5zaWduZWQsIDE+JiBvdXQpCit7CisgICAgZ2V0
SnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChjb2RlQmxvY2ssIGNvZGVCbG9jay0+dm0oKS0+
aW50ZXJwcmV0ZXIsIGluc3RydWN0aW9uc0JlZ2luLCBieXRlY29kZU9mZnNldCwgb3V0KTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmgKaW5kZXggODUyNDEzZDc3Yjc5ODk4NGIyN2NlZjBl
ZDYyYmM5NGM2ODllMjEyYy4uZGI5YmQzODNiOGFjNDU1N2QzMjY3MTdiNzJkNGIwZjUwYjFkMTgz
OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1w
VGFyZ2V0cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVt
cFRhcmdldHMuaApAQCAtMzAsMTAgKzMwLDE4IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCitjbGFz
cyBVbmxpbmtlZENvZGVCbG9jazsKK3N0cnVjdCBVbmxpbmtlZEluc3RydWN0aW9uOworCiAvLyBS
ZXR1cm4gYSBzb3J0ZWQgbGlzdCBvZiBieXRlY29kZSBpbmRleCB0aGF0IGFyZSB0aGUgZGVzdGlu
YXRpb24gb2YgYSBqdW1wLgogdm9pZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKENvZGVCbG9j
ayosIFZlY3Rvcjx1bnNpZ25lZCwgMzI+JiBvdXQpOwordm9pZCBjb21wdXRlUHJlY2lzZUp1bXBU
YXJnZXRzKENvZGVCbG9jayosIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWdu
ZWQgaW5zdHJ1Y3Rpb25Db3VudCwgVmVjdG9yPHVuc2lnbmVkLCAzMj4mIG91dCk7Cit2b2lkIGNv
bXB1dGVQcmVjaXNlSnVtcFRhcmdldHMoVW5saW5rZWRDb2RlQmxvY2sqLCBVbmxpbmtlZEluc3Ry
dWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCwgVmVj
dG9yPHVuc2lnbmVkLCAzMj4mIG91dCk7CisKK3ZvaWQgcmVjb21wdXRlUHJlY2lzZUp1bXBUYXJn
ZXRzKFVubGlua2VkQ29kZUJsb2NrKiwgVW5saW5rZWRJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25z
QmVnaW4sIHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQsIFZlY3Rvcjx1bnNpZ25lZD4mIG91dCk7
CiAKLXZvaWQgZmluZEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiwgdW5z
aWduZWQgYnl0ZWNvZGVPZmZzZXQsIFZlY3Rvcjx1bnNpZ25lZCwgMT4mIG91dCk7Cit2b2lkIGZp
bmRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayosIEluc3RydWN0aW9uKiBp
bnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIFZlY3Rvcjx1bnNpZ25l
ZCwgMT4mIG91dCk7Cit2b2lkIGZpbmRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KFVubGlu
a2VkQ29kZUJsb2NrKiwgVW5saW5rZWRJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVu
c2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBWZWN0b3I8dW5zaWduZWQsIDE+JiBvdXQpOwogCiB9IC8v
IG5hbWVzcGFjZSBKU0MKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKaW5kZXggMjk5YWM2ODBkOWExZDFlNWE5MGQ5ZmFlMWEy
MmY4NDRlMjkyZTNlMi4uZjdiNWFlMGI2YjQ3MjE3MGQyODk0NjQxNjc2NjE4YzU3YzQ5ZWMyZiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJs
b2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2Rl
QmxvY2suY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiVW5saW5rZWRDb2RlQmxvY2su
aCIKIAogI2luY2x1ZGUgIkJ5dGVjb2RlR2VuZXJhdG9yLmgiCisjaW5jbHVkZSAiQnl0ZWNvZGVN
b2RpZmljYXRpb25TZXQuaCIKICNpbmNsdWRlICJDbGFzc0luZm8uaCIKICNpbmNsdWRlICJDb2Rl
Q2FjaGUuaCIKICNpbmNsdWRlICJFeGVjdXRhYmxlLmgiCkBAIC0zNiw2ICszNyw3IEBACiAjaW5j
bHVkZSAiSlNTdHJpbmcuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiUGFy
c2VyLmgiCisjaW5jbHVkZSAiUHJlY2lzZUp1bXBUYXJnZXRzLmgiCiAjaW5jbHVkZSAiU291cmNl
UHJvdmlkZXIuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIKICNpbmNsdWRlICJTeW1ib2xUYWJs
ZS5oIgpAQCAtMzY2LDUgKzM2OCwxMTEgQEAgY29uc3QgVW5saW5rZWRJbnN0cnVjdGlvblN0cmVh
bSYgVW5saW5rZWRDb2RlQmxvY2s6Omluc3RydWN0aW9ucygpIGNvbnN0CiAgICAgcmV0dXJuICpt
X3VubGlua2VkSW5zdHJ1Y3Rpb25zOwogfQogCitVbmxpbmtlZEhhbmRsZXJJbmZvKiBVbmxpbmtl
ZENvZGVCbG9jazo6aGFuZGxlckZvckJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zm
c2V0LCBSZXF1aXJlZEhhbmRsZXIgcmVxdWlyZWRIYW5kbGVyKQoreworICAgIHJldHVybiBoYW5k
bGVyRm9ySW5kZXgoYnl0ZWNvZGVPZmZzZXQsIHJlcXVpcmVkSGFuZGxlcik7Cit9CisKK1VubGlu
a2VkSGFuZGxlckluZm8qIFVubGlua2VkQ29kZUJsb2NrOjpoYW5kbGVyRm9ySW5kZXgodW5zaWdu
ZWQgaW5kZXgsIFJlcXVpcmVkSGFuZGxlciByZXF1aXJlZEhhbmRsZXIpCit7CisgICAgaWYgKCFt
X3JhcmVEYXRhKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gVW5saW5rZWRI
YW5kbGVySW5mbzo6aGFuZGxlckZvckluZGV4KG1fcmFyZURhdGEtPm1fZXhjZXB0aW9uSGFuZGxl
cnMsIGluZGV4LCByZXF1aXJlZEhhbmRsZXIpOworfQorCit2b2lkIFVubGlua2VkQ29kZUJsb2Nr
OjphcHBseU1vZGlmaWNhdGlvbihCeXRlY29kZU1vZGlmaWNhdGlvblNldCYgaW5zZXJ0aW9uU2V0
KQoreworICAgIC8vIEJlZm9yZSBhcHBseWluZyB0aGUgY2hhbmdlcywgd2UgYWRqdXN0IHRoZSBq
dW1wcyBiYXNlZCBvbiB0aGUgb3JpZ2luYWwgYnl0ZWNvZGUgb2Zmc2V0LCB0aGUgb2Zmc2V0IHRv
IHRoZSBqdW1wIHRhcmdldCwgYW5kCisgICAgLy8gdGhlIGluc2VydGlvbiBpbmZvcm1hdGlvbi4K
KworICAgIEJ5dGVjb2RlR3JhcGg8VW5saW5rZWRDb2RlQmxvY2s+JiBncmFwaCA9IGluc2VydGlv
blNldC5ncmFwaCgpOworICAgIFVubGlua2VkSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2lu
ID0gZ3JhcGguaW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsKKyAgICBmb3IgKGludCBieXRlY29kZU9m
ZnNldCA9IDAsIGluc3RydWN0aW9uQ291bnQgPSBncmFwaC5pbnN0cnVjdGlvbnMoKS5zaXplKCk7
IGJ5dGVjb2RlT2Zmc2V0IDwgaW5zdHJ1Y3Rpb25Db3VudDspIHsKKyAgICAgICAgVW5saW5rZWRJ
bnN0cnVjdGlvbiogY3VycmVudCA9IGluc3RydWN0aW9uc0JlZ2luICsgYnl0ZWNvZGVPZmZzZXQ7
CisgICAgICAgIE9wY29kZUlEIG9wY29kZUlEID0gY3VycmVudFswXS51Lm9wY29kZTsKKworICAg
ICAgICBzd2l0Y2ggKG9wY29kZUlEKSB7CisgICAgICAgIGNhc2Ugb3Bfam1wOgorICAgICAgICAg
ICAgY3VycmVudFsxXS51Lm9wZXJhbmQgPSBpbnNlcnRpb25TZXQuYWRqdXN0T2Zmc2V0KGJ5dGVj
b2RlT2Zmc2V0LCBieXRlY29kZU9mZnNldCArIGN1cnJlbnRbMV0udS5vcGVyYW5kKTsKKyAgICAg
ICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2Ugb3BfanRydWU6CisgICAgICAgIGNhc2Ugb3Bf
amZhbHNlOgorICAgICAgICBjYXNlIG9wX2plcV9udWxsOgorICAgICAgICBjYXNlIG9wX2puZXFf
bnVsbDoKKyAgICAgICAgICAgIGN1cnJlbnRbMl0udS5vcGVyYW5kID0gaW5zZXJ0aW9uU2V0LmFk
anVzdE9mZnNldChieXRlY29kZU9mZnNldCwgYnl0ZWNvZGVPZmZzZXQgKyBjdXJyZW50WzJdLnUu
b3BlcmFuZCk7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIG9wX2puZXFfcHRy
OgorICAgICAgICBjYXNlIG9wX2psZXNzOgorICAgICAgICBjYXNlIG9wX2psZXNzZXE6CisgICAg
ICAgIGNhc2Ugb3BfamdyZWF0ZXI6CisgICAgICAgIGNhc2Ugb3BfamdyZWF0ZXJlcToKKyAgICAg
ICAgY2FzZSBvcF9qbmxlc3M6CisgICAgICAgIGNhc2Ugb3Bfam5sZXNzZXE6CisgICAgICAgIGNh
c2Ugb3Bfam5ncmVhdGVyOgorICAgICAgICBjYXNlIG9wX2puZ3JlYXRlcmVxOgorICAgICAgICAg
ICAgY3VycmVudFszXS51Lm9wZXJhbmQgPSBpbnNlcnRpb25TZXQuYWRqdXN0T2Zmc2V0KGJ5dGVj
b2RlT2Zmc2V0LCBieXRlY29kZU9mZnNldCArIGN1cnJlbnRbM10udS5vcGVyYW5kKTsKKyAgICAg
ICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2Ugb3Bfc3dpdGNoX2ltbToKKyAgICAgICAgY2Fz
ZSBvcF9zd2l0Y2hfY2hhcjogeworICAgICAgICAgICAgYXV0byYgdGFibGUgPSBzd2l0Y2hKdW1w
VGFibGUoY3VycmVudFsxXS51Lm9wZXJhbmQpOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gdGFibGUuYnJhbmNoT2Zmc2V0cy5zaXplKCk7IGktLTspCisgICAgICAgICAgICAgICAgdGFi
bGUuYnJhbmNoT2Zmc2V0c1tpXSA9IGluc2VydGlvblNldC5hZGp1c3RPZmZzZXQoYnl0ZWNvZGVP
ZmZzZXQsIGJ5dGVjb2RlT2Zmc2V0ICsgdGFibGUuYnJhbmNoT2Zmc2V0c1tpXSk7CisgICAgICAg
ICAgICBjdXJyZW50WzJdLnUub3BlcmFuZCA9IGluc2VydGlvblNldC5hZGp1c3RPZmZzZXQoYnl0
ZWNvZGVPZmZzZXQsIGJ5dGVjb2RlT2Zmc2V0ICsgY3VycmVudFsyXS51Lm9wZXJhbmQpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBjYXNlIG9wX3N3aXRjaF9zdHJp
bmc6IHsKKyAgICAgICAgICAgIGF1dG8mIHRhYmxlID0gc3RyaW5nU3dpdGNoSnVtcFRhYmxlKGN1
cnJlbnRbMV0udS5vcGVyYW5kKTsKKyAgICAgICAgICAgIGF1dG8gaXRlciA9IHRhYmxlLm9mZnNl
dFRhYmxlLmJlZ2luKCk7CisgICAgICAgICAgICBhdXRvIGVuZCA9IHRhYmxlLm9mZnNldFRhYmxl
LmVuZCgpOworICAgICAgICAgICAgZm9yICg7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpCisgICAgICAg
ICAgICAgICAgaXRlci0+dmFsdWUuYnJhbmNoT2Zmc2V0ID0gaW5zZXJ0aW9uU2V0LmFkanVzdE9m
ZnNldChieXRlY29kZU9mZnNldCwgYnl0ZWNvZGVPZmZzZXQgKyBpdGVyLT52YWx1ZS5icmFuY2hP
ZmZzZXQpOworICAgICAgICAgICAgY3VycmVudFsyXS51Lm9wZXJhbmQgPSBpbnNlcnRpb25TZXQu
YWRqdXN0T2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0LCBieXRlY29kZU9mZnNldCArIGN1cnJlbnRbMl0u
dS5vcGVyYW5kKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgYnl0ZWNvZGVP
ZmZzZXQgKz0gb3Bjb2RlTGVuZ3RoKG9wY29kZUlEKTsKKyAgICB9CisKKyAgICAvLyBUaGVuLCBl
eGNlcHRpb24gaGFuZGxlcnMgc2hvdWxkIGJlIGFkanVzdGVkLgorICAgIGlmIChtX3JhcmVEYXRh
KSB7CisgICAgICAgIGZvciAoVW5saW5rZWRIYW5kbGVySW5mbyYgaGFuZGxlciA6IG1fcmFyZURh
dGEtPm1fZXhjZXB0aW9uSGFuZGxlcnMpIHsKKyAgICAgICAgICAgIGhhbmRsZXIudGFyZ2V0ID0g
aW5zZXJ0aW9uU2V0LmFkanVzdE9mZnNldCgwLCBoYW5kbGVyLnRhcmdldCk7CisgICAgICAgICAg
ICBoYW5kbGVyLnN0YXJ0ID0gaW5zZXJ0aW9uU2V0LmFkanVzdE9mZnNldCgwLCBoYW5kbGVyLnN0
YXJ0KTsKKyAgICAgICAgICAgIGhhbmRsZXIuZW5kID0gaW5zZXJ0aW9uU2V0LmFkanVzdE9mZnNl
dCgwLCBoYW5kbGVyLmVuZCk7CisgICAgICAgIH0KKworICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IG1fcmFyZURhdGEtPm1fb3BQcm9maWxlQ29udHJvbEZsb3dCeXRlY29kZU9mZnNldHMu
c2l6ZSgpOyArK2kpCisgICAgICAgICAgICBtX3JhcmVEYXRhLT5tX29wUHJvZmlsZUNvbnRyb2xG
bG93Qnl0ZWNvZGVPZmZzZXRzW2ldID0gaW5zZXJ0aW9uU2V0LmFkanVzdE9mZnNldCgwLCBtX3Jh
cmVEYXRhLT5tX29wUHJvZmlsZUNvbnRyb2xGbG93Qnl0ZWNvZGVPZmZzZXRzW2ldKTsKKworICAg
ICAgICBpZiAoIW1fcmFyZURhdGEtPm1fdHlwZVByb2ZpbGVySW5mb01hcC5pc0VtcHR5KCkpIHsK
KyAgICAgICAgICAgIEhhc2hNYXA8dW5zaWduZWQsIFJhcmVEYXRhOjpUeXBlUHJvZmlsZXJFeHBy
ZXNzaW9uUmFuZ2U+IGFkanVzdGVkVHlwZVByb2ZpbGVySW5mb01hcDsKKyAgICAgICAgICAgIGZv
ciAoYXV0byYgZW50cnkgOiBtX3JhcmVEYXRhLT5tX3R5cGVQcm9maWxlckluZm9NYXApCisgICAg
ICAgICAgICAgICAgYWRqdXN0ZWRUeXBlUHJvZmlsZXJJbmZvTWFwLnNldChpbnNlcnRpb25TZXQu
YWRqdXN0T2Zmc2V0KDAsIGVudHJ5LmtleSksIGVudHJ5LnZhbHVlKTsKKyAgICAgICAgICAgIG1f
cmFyZURhdGEtPm1fdHlwZVByb2ZpbGVySW5mb01hcC5zd2FwKGFkanVzdGVkVHlwZVByb2ZpbGVy
SW5mb01hcCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IG1fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnMuc2l6ZSgpOyArK2kpCisgICAgICAgIG1fcHJv
cGVydHlBY2Nlc3NJbnN0cnVjdGlvbnNbaV0gPSBpbnNlcnRpb25TZXQuYWRqdXN0T2Zmc2V0KDAs
IG1fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnNbaV0pOworCisgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBtX2V4cHJlc3Npb25JbmZvLnNpemUoKTsgKytpKQorICAgICAgICBtX2V4cHJlc3Np
b25JbmZvW2ldLmluc3RydWN0aW9uT2Zmc2V0ID0gaW5zZXJ0aW9uU2V0LmFkanVzdE9mZnNldCgw
LCBtX2V4cHJlc3Npb25JbmZvW2ldLmluc3RydWN0aW9uT2Zmc2V0KTsKKworICAgIC8vIFRoZW4s
IG1vZGlmeSB0aGUgdW5saW5rZWQgaW5zdHJ1Y3Rpb25zLgorICAgIGluc2VydGlvblNldC5hcHBs
eU1vZGlmaWNhdGlvbigpOworCisgICAgLy8gQW5kIHJlY29tcHV0ZSB0aGUganVtcCB0YXJnZXQg
YmFzZWQgb24gdGhlIG1vZGlmaWVkIHVubGlua2VkIGluc3RydWN0aW9ucy4KKyAgICBtX2p1bXBU
YXJnZXRzLmNsZWFyKCk7CisgICAgcmVjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKHRoaXMsIGdy
YXBoLmluc3RydWN0aW9ucygpLmJlZ2luKCksIGdyYXBoLmluc3RydWN0aW9ucygpLnNpemUoKSwg
bV9qdW1wVGFyZ2V0cyk7Cit9CisKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAppbmRleCA5MWZkY2E0OGMxZTM5ZThiZWZiMGM1
ZmQ1NWZkOWJkOTFjMWYzNzA3Li42MmYxNGIwODk0MDgyODA2N2YzODhhZjMyNzhlODFkNDVhM2Vm
OGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRD
b2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRD
b2RlQmxvY2suaApAQCAtNDgsNiArNDgsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorY2xhc3Mg
Qnl0ZWNvZGVNb2RpZmljYXRpb25TZXQ7CiBjbGFzcyBEZWJ1Z2dlcjsKIGNsYXNzIEZ1bmN0aW9u
TWV0YWRhdGFOb2RlOwogY2xhc3MgRnVuY3Rpb25FeGVjdXRhYmxlOwpAQCAtNjksNyArNzAsMTEg
QEAgdHlwZWRlZiB1bnNpZ25lZCBVbmxpbmtlZE9iamVjdEFsbG9jYXRpb25Qcm9maWxlOwogdHlw
ZWRlZiB1bnNpZ25lZCBVbmxpbmtlZExMSW50Q2FsbExpbmtJbmZvOwogCiBzdHJ1Y3QgVW5saW5r
ZWRTdHJpbmdKdW1wVGFibGUgewotICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8U3RyaW5nSW1w
bD4sIGludDMyX3Q+IFN0cmluZ09mZnNldFRhYmxlOworICAgIHN0cnVjdCBPZmZzZXRMb2NhdGlv
biB7CisgICAgICAgIGludDMyX3QgYnJhbmNoT2Zmc2V0OworICAgIH07CisKKyAgICB0eXBlZGVm
IEhhc2hNYXA8UmVmUHRyPFN0cmluZ0ltcGw+LCBPZmZzZXRMb2NhdGlvbj4gU3RyaW5nT2Zmc2V0
VGFibGU7CiAgICAgU3RyaW5nT2Zmc2V0VGFibGUgb2Zmc2V0VGFibGU7CiAKICAgICBpbmxpbmUg
aW50MzJfdCBvZmZzZXRGb3JWYWx1ZShTdHJpbmdJbXBsKiB2YWx1ZSwgaW50MzJfdCBkZWZhdWx0
T2Zmc2V0KQpAQCAtNzgsNyArODMsNyBAQCBzdHJ1Y3QgVW5saW5rZWRTdHJpbmdKdW1wVGFibGUg
ewogICAgICAgICBTdHJpbmdPZmZzZXRUYWJsZTo6Y29uc3RfaXRlcmF0b3IgbG9jID0gb2Zmc2V0
VGFibGUuZmluZCh2YWx1ZSk7CiAgICAgICAgIGlmIChsb2MgPT0gZW5kKQogICAgICAgICAgICAg
cmV0dXJuIGRlZmF1bHRPZmZzZXQ7Ci0gICAgICAgIHJldHVybiBsb2MtPnZhbHVlOworICAgICAg
ICByZXR1cm4gbG9jLT52YWx1ZS5icmFuY2hPZmZzZXQ7CiAgICAgfQogCiB9OwpAQCAtMTA2LDYg
KzExMSw4IEBAIHN0cnVjdCBVbmxpbmtlZEluc3RydWN0aW9uIHsKICAgICB9IHU7CiB9OwogCitj
bGFzcyBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbjsKKwogY2xhc3MgVW5saW5rZWRDb2RlQmxv
Y2sgOiBwdWJsaWMgSlNDZWxsIHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOwpA
QCAtMTE1LDYgKzEyMiw5IEBAIGNsYXNzIFVubGlua2VkQ29kZUJsb2NrIDogcHVibGljIEpTQ2Vs
bCB7CiAKICAgICBlbnVtIHsgQ2FsbEZ1bmN0aW9uLCBBcHBseUZ1bmN0aW9uIH07CiAKKyAgICB0
eXBlZGVmIFVubGlua2VkSW5zdHJ1Y3Rpb24gSW5zdHJ1Y3Rpb247CisgICAgdHlwZWRlZiBWZWN0
b3I8VW5saW5rZWRJbnN0cnVjdGlvbiwgMCwgVW5zYWZlVmVjdG9yT3ZlcmZsb3c+IFVucGFja2Vk
SW5zdHJ1Y3Rpb25zOworCiAgICAgYm9vbCBpc0NvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4g
bV9pc0NvbnN0cnVjdG9yOyB9CiAgICAgYm9vbCBpc1N0cmljdE1vZGUoKSBjb25zdCB7IHJldHVy
biBtX2lzU3RyaWN0TW9kZTsgfQogICAgIGJvb2wgdXNlc0V2YWwoKSBjb25zdCB7IHJldHVybiBt
X3VzZXNFdmFsOyB9CkBAIC0yMDQsNiArMjE0LDkgQEAgY2xhc3MgVW5saW5rZWRDb2RlQmxvY2sg
OiBwdWJsaWMgSlNDZWxsIHsKICAgICB1bnNpZ25lZCBqdW1wVGFyZ2V0KGludCBpbmRleCkgY29u
c3QgeyByZXR1cm4gbV9qdW1wVGFyZ2V0c1tpbmRleF07IH0KICAgICB1bnNpZ25lZCBsYXN0SnVt
cFRhcmdldCgpIGNvbnN0IHsgcmV0dXJuIG1fanVtcFRhcmdldHMubGFzdCgpOyB9CiAKKyAgICBV
bmxpbmtlZEhhbmRsZXJJbmZvKiBoYW5kbGVyRm9yQnl0ZWNvZGVPZmZzZXQodW5zaWduZWQgYnl0
ZWNvZGVPZmZzZXQsIFJlcXVpcmVkSGFuZGxlciA9IFJlcXVpcmVkSGFuZGxlcjo6QW55SGFuZGxl
cik7CisgICAgVW5saW5rZWRIYW5kbGVySW5mbyogaGFuZGxlckZvckluZGV4KHVuc2lnbmVkLCBS
ZXF1aXJlZEhhbmRsZXIgPSBSZXF1aXJlZEhhbmRsZXI6OkFueUhhbmRsZXIpOworCiAgICAgYm9v
bCBpc0J1aWx0aW5GdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNCdWlsdGluRnVuY3Rpb247
IH0KIAogICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQoKSBjb25zdCB7IHJldHVy
biBzdGF0aWNfY2FzdDxDb25zdHJ1Y3RvcktpbmQ+KG1fY29uc3RydWN0b3JLaW5kKTsgfQpAQCAt
Mzg0LDYgKzM5Nyw4IEBAIGNsYXNzIFVubGlua2VkQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7
CiAgICAgfQogCiBwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBCeXRlY29kZU1vZGlmaWNhdGlv
blNldDsKKyAgICB2b2lkIGFwcGx5TW9kaWZpY2F0aW9uKEJ5dGVjb2RlTW9kaWZpY2F0aW9uU2V0
Jik7CiAKICAgICB2b2lkIGNyZWF0ZVJhcmVEYXRhSWZOZWNlc3NhcnkoKQogICAgIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WaXJ0dWFsUmVnaXN0ZXIuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WaXJ0dWFsUmVnaXN0ZXIuaAppbmRleCBk
M2RmNDA5NTdiNTE3NTY4ZTNhZWZiZTNhMWE2MDlmZDg3OGJhYWMzLi5kYWY1MDlmNmM3ZDExNWU0
NWJjYjEwN2M2N2QzZDM4ZDgwNGYyODk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvVmlydHVhbFJlZ2lzdGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1ZpcnR1YWxSZWdpc3Rlci5oCkBAIC0yNiw4ICsyNiw4IEBACiAjaWZuZGVmIFZp
cnR1YWxSZWdpc3Rlcl9oCiAjZGVmaW5lIFZpcnR1YWxSZWdpc3Rlcl9oCiAKKyNpbmNsdWRlICJC
eXRlY29kZUNvbnZlbnRpb25zLmgiCiAjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCi0KICNpbmNsdWRl
IDx3dGYvUHJpbnRTdHJlYW0uaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC0xMDMsNyArMTAzLDcg
QEAgY2xhc3MgVmlydHVhbFJlZ2lzdGVyIHsKIAogcHJpdmF0ZToKICAgICBzdGF0aWMgY29uc3Qg
aW50IHNfaW52YWxpZFZpcnR1YWxSZWdpc3RlciA9IDB4M2ZmZmZmZmY7Ci0gICAgc3RhdGljIGNv
bnN0IGludCBzX2ZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4ID0gMHg0MDAwMDAwMDsKKyAgICBz
dGF0aWMgY29uc3QgaW50IHNfZmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXggPSBGaXJzdENvbnN0
YW50UmVnaXN0ZXJJbmRleDsKIAogICAgIHN0YXRpYyBpbnQgbG9jYWxUb09wZXJhbmQoaW50IGxv
Y2FsKSB7IHJldHVybiAtMSAtIGxvY2FsOyB9CiAgICAgc3RhdGljIGludCBvcGVyYW5kVG9Mb2Nh
bChpbnQgb3BlcmFuZCkgeyByZXR1cm4gLTEgLSBvcGVyYW5kOyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmlu
ZGV4IDYxN2Y0NDI2YzdiNGQxNTQ1ZjdkMjkyN2M4NDZhOTAzZTE1MWJmM2YuLjdiMWY4ZDgxMGUy
YmIwNmExNTY2MWU3ZDkxOTIxYTRmZGY5NmNmYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC0zMyw2
ICszMyw3IEBACiAKICNpbmNsdWRlICJBcml0aFByb2ZpbGUuaCIKICNpbmNsdWRlICJCdWlsdGlu
RXhlY3V0YWJsZXMuaCIKKyNpbmNsdWRlICJCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5oIgog
I2luY2x1ZGUgIkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5oIgogI2luY2x1ZGUgIkludGVycHJl
dGVyLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgpAQCAtMTU1LDYgKzE1NiwxMCBAQCBQYXJz
ZXJFcnJvciBCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUoKQogICAgICAgICBtX2NvZGVCbG9j
ay0+YWRkRXhjZXB0aW9uSGFuZGxlcihpbmZvKTsKICAgICB9CiAgICAgCisKKyAgICBpZiAobV9j
b2RlQmxvY2stPnBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yQm9keU1v
ZGUpCisgICAgICAgIHBlcmZvcm1HZW5lcmF0b3JpZmljYXRpb24obV9jb2RlQmxvY2suZ2V0KCks
IG1faW5zdHJ1Y3Rpb25zLCBtX2dlbmVyYXRvckZyYW1lU3ltYm9sVGFibGUuZ2V0KCksIG1fZ2Vu
ZXJhdG9yRnJhbWVTeW1ib2xUYWJsZUluZGV4KTsKKwogICAgIG1fY29kZUJsb2NrLT5zZXRJbnN0
cnVjdGlvbnMoc3RkOjptYWtlX3VuaXF1ZTxVbmxpbmtlZEluc3RydWN0aW9uU3RyZWFtPihtX2lu
c3RydWN0aW9ucykpOwogCiAgICAgbV9jb2RlQmxvY2stPnNocmlua1RvRml0KCk7CkBAIC0yNjIs
MTAgKzI2NywxNCBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZt
LCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAgIGJvb2wgc2hvdWxkQ2Fw
dHVyZUFsbE9mVGhlVGhpbmdzID0gbV9zaG91bGRFbWl0RGVidWdIb29rcyB8fCBjb2RlQmxvY2st
PnVzZXNFdmFsKCk7CiAgICAgYm9vbCBuZWVkc0FyZ3VtZW50cyA9IChmdW5jdGlvbk5vZGUtPnVz
ZXNBcmd1bWVudHMoKSB8fCBjb2RlQmxvY2stPnVzZXNFdmFsKCkgfHwgKGZ1bmN0aW9uTm9kZS0+
dXNlc0Fycm93RnVuY3Rpb24oKSAmJiAhY29kZUJsb2NrLT5pc0Fycm93RnVuY3Rpb24oKSAmJiBp
c0FyZ3VtZW50c1VzZWRJbklubmVyQXJyb3dGdW5jdGlvbigpKSk7CiAKLSAgICAvLyBHZW5lcmF0
b3IgbmV2ZXIgcHJvdmlkZXMgImFyZ3VtZW50cyIuICJhcmd1bWVudHMiIHJlZmVyZW5jZSB3aWxs
IGJlIHJlc29sdmVkIGluIGFuIHVwcGVyIGdlbmVyYXRvciBmdW5jdGlvbiBzY29wZS4KLSAgICBp
ZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yQm9keU1vZGUpCisgICAg
aWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckJvZHlNb2RlKSB7Cisg
ICAgICAgIC8vIEdlbmVyYXRvciBuZXZlciBwcm92aWRlcyAiYXJndW1lbnRzIi4gImFyZ3VtZW50
cyIgcmVmZXJlbmNlIHdpbGwgYmUgcmVzb2x2ZWQgaW4gYW4gdXBwZXIgZ2VuZXJhdG9yIGZ1bmN0
aW9uIHNjb3BlLgogICAgICAgICBuZWVkc0FyZ3VtZW50cyA9IGZhbHNlOwogCisgICAgICAgIC8v
IEdlbmVyYXRvciB1c2VzIHRoZSB2YXIgc2NvcGUgdG8gc2F2ZSBhbmQgcmVzdW1lIGl0cyB2YXJp
YWJsZXMuIFNvIHRoZSBsZXhpY2FsIHNjb3BlIGlzIGFsd2F5cyBpbnN0YW50aWF0ZWQuCisgICAg
ICAgIHNob3VsZENhcHR1cmVTb21lT2ZUaGVUaGluZ3MgPSB0cnVlOworICAgIH0KKwogICAgIGlm
IChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JXcmFwcGVyRnVuY3Rpb25N
b2RlICYmIG5lZWRzQXJndW1lbnRzKSB7CiAgICAgICAgIC8vIEdlbmVyYXRvciBkb2VzIG5vdCBw
cm92aWRlICJhcmd1bWVudHMiLiBJbnN0ZWFkLCB3cmFwcGluZyBHZW5lcmF0b3JGdW5jdGlvbiBw
cm92aWRlcyAiYXJndW1lbnRzIi4KICAgICAgICAgLy8gVGhpcyBpcyBiZWNhdXNlIGFyZ3VtZW50
cyBvZiBhIGdlbmVyYXRvciBzaG91bGQgYmUgZXZhbHVhdGVkIGJlZm9yZSBzdGFydGluZyBpdC4K
QEAgLTI3NCw3ICsyODMsNyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3Io
Vk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAgICAgICAvLyAg
ICBmdW5jdGlvbiAqZ2VuKGEsIGIgPSBoZWxsbygpKQogICAgICAgICAvLyAgICB7CiAgICAgICAg
IC8vICAgICAgICByZXR1cm4gewotICAgICAgICAvLyAgICAgICAgICAgIEBnZW5lcmF0b3JOZXh0
OiBmdW5jdGlvbiAoQGdlbmVyYXRvciwgQGdlbmVyYXRvclN0YXRlLCBAZ2VuZXJhdG9yVmFsdWUs
IEBnZW5lcmF0b3JSZXN1bWVNb2RlKQorICAgICAgICAvLyAgICAgICAgICAgIEBnZW5lcmF0b3JO
ZXh0OiBmdW5jdGlvbiAoQGdlbmVyYXRvciwgQGdlbmVyYXRvclN0YXRlLCBAZ2VuZXJhdG9yVmFs
dWUsIEBnZW5lcmF0b3JSZXN1bWVNb2RlLCBAZ2VuZXJhdG9yRnJhbWUpCiAgICAgICAgIC8vICAg
ICAgICAgICAgewogICAgICAgICAvLyAgICAgICAgICAgICAgICBhcmd1bWVudHM7ICAvLyBUaGlz
IGBhcmd1bWVudHNgIHNob3VsZCByZWZlcmVuY2UgdG8gdGhlIGdlbidzIGFyZ3VtZW50cy4KICAg
ICAgICAgLy8gICAgICAgICAgICAgICAgLi4uCkBAIC0zMDMsMTYgKzMxMiwxNCBAQCBCeXRlY29k
ZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0
aW9uTm9kZSwgVW5saW5rZQogICAgICAgICByZXR1cm4gY2FwdHVyZXModWlkKSA/IFZhcktpbmQ6
OlNjb3BlIDogVmFyS2luZDo6U3RhY2s7CiAgICAgfTsKIAotICAgIGVtaXRFbnRlcigpOwotCi0g
ICAgYWxsb2NhdGVBbmRFbWl0U2NvcGUoKTsKLQogICAgIG1fY2FsbGVlUmVnaXN0ZXIuc2V0SW5k
ZXgoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlKTsKIAogICAgIGluaXRpYWxpemVQYXJhbWV0ZXJzKHBh
cmFtZXRlcnMpOwogICAgIEFTU0VSVCghKGlzU2ltcGxlUGFyYW1ldGVyTGlzdCAmJiBtX3Jlc3RQ
YXJhbWV0ZXIpKTsKIAotICAgIC8vIEJlZm9yZSBlbWl0dGluZyBhIHNjb3BlIGNyZWF0aW9uLCBl
bWl0IGEgZ2VuZXJhdG9yIHByb2xvZ3VlIHRoYXQgY29udGFpbnMganVtcCBiYXNlZCBvbiBhIGdl
bmVyYXRvcidzIHN0YXRlLgorICAgIGVtaXRFbnRlcigpOworCisgICAgLy8gQmVmb3JlIGVtaXR0
aW5nIGFueSBvZiB0aGUgYWN0dWFsIGNvZGUgZXhjZXB0IGZvciBvcF9lbnRlciwgZW1pdCBhIGdl
bmVyYXRvciBwcm9sb2d1ZSB0aGF0IGNvbnRhaW5zIGp1bXAgYmFzZWQgb24gYSBnZW5lcmF0b3In
cyBzdGF0ZS4KICAgICBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9y
Qm9keU1vZGUpIHsKICAgICAgICAgbV9nZW5lcmF0b3JSZWdpc3RlciA9ICZtX3BhcmFtZXRlcnNb
MV07CiAKQEAgLTMyNiw2ICszMzMsOCBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5l
cmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAgICAg
ICBlbWl0R2VuZXJhdG9yU3RhdGVMYWJlbCgpOwogICAgIH0KIAorICAgIGFsbG9jYXRlQW5kRW1p
dFNjb3BlKCk7CisKICAgICBpZiAoZnVuY3Rpb25OYW1lSXNJblNjb3BlKGZ1bmN0aW9uTm9kZS0+
aWRlbnQoKSwgZnVuY3Rpb25Ob2RlLT5mdW5jdGlvbk1vZGUoKSkpIHsKICAgICAgICAgQVNTRVJU
KHBhcnNlTW9kZSAhPSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckJvZHlNb2RlKTsKICAgICAg
ICAgYm9vbCBpc0R5bmFtaWNTY29wZSA9IGZ1bmN0aW9uTmFtZVNjb3BlSXNEeW5hbWljKGNvZGVC
bG9jay0+dXNlc0V2YWwoKSwgY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSk7CkBAIC02MzIsNiAr
NjQxLDE2IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1
bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtlCiAgICAgICAgICAgICBlbWl0TG9hZE5l
d1RhcmdldEZyb21BcnJvd0Z1bmN0aW9uTGV4aWNhbEVudmlyb25tZW50KCk7CiAgICAgfQogICAg
IAorICAgIC8vIFNldCB1cCB0aGUgbGV4aWNhbCBlbnZpcm9ubWVudCBzY29wZSBhcyB0aGUgZ2Vu
ZXJhdG9yIGZyYW1lLiBXZSBzdG9yZSB0aGUgc2F2ZWQgYW5kIHJlc3VtZWQgZ2VuZXJhdG9yIHJl
Z2lzdGVycyBpbnRvIHRoaXMgc2NvcGUgd2l0aCB0aGUgc3ltYm9sIGtleXMuCisgICAgLy8gU2lu
Y2UgdGhleSBhcmUgc3ltYm9sIGtleWVkLCB0aGVzZSB2YXJpYWJsZXMgY2Fubm90IGJlIHJlYWNo
ZWQgZnJvbSB0aGUgdXN1YWwgY29kZS4KKyAgICBpZiAoU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0
b3JCb2R5TW9kZSA9PSBwYXJzZU1vZGUpIHsKKyAgICAgICAgQVNTRVJUKG1fbGV4aWNhbEVudmly
b25tZW50UmVnaXN0ZXIpOworICAgICAgICBtX2dlbmVyYXRvckZyYW1lU3ltYm9sVGFibGUuc2V0
KCptX3ZtLCBmdW5jdGlvblN5bWJvbFRhYmxlKTsKKyAgICAgICAgbV9nZW5lcmF0b3JGcmFtZVN5
bWJvbFRhYmxlSW5kZXggPSBzeW1ib2xUYWJsZUNvbnN0YW50SW5kZXg7CisgICAgICAgIGVtaXRN
b3ZlKGdlbmVyYXRvckZyYW1lUmVnaXN0ZXIoKSwgbV9sZXhpY2FsRW52aXJvbm1lbnRSZWdpc3Rl
cik7CisgICAgICAgIGVtaXRQdXRCeUlkKGdlbmVyYXRvclJlZ2lzdGVyKCksIHByb3BlcnR5TmFt
ZXMoKS5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JGcmFtZVByaXZhdGVOYW1lKCksIGdlbmVyYXRv
ckZyYW1lUmVnaXN0ZXIoKSk7CisgICAgfQorCiAgICAgYm9vbCBzaG91bGRJbml0aWFsaXplQmxv
Y2tTY29wZWRGdW5jdGlvbnMgPSBmYWxzZTsgLy8gV2UgZ2VuZXJhdGUgdG9wLWxldmVsIGZ1bmN0
aW9uIGRlY2xhcmF0aW9ucyBpbiA6OmdlbmVyYXRlKCkuCiAgICAgcHVzaExleGljYWxTY29wZSht
X3Njb3BlTm9kZSwgVERaQ2hlY2tPcHRpbWl6YXRpb246Ok9wdGltaXplLCBOZXN0ZWRTY29wZVR5
cGU6OklzTm90TmVzdGVkLCBudWxscHRyLCBzaG91bGRJbml0aWFsaXplQmxvY2tTY29wZWRGdW5j
dGlvbnMpOwogfQpAQCAtMzY2Myw4ICszNjgyLDcgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdENvbXBsZXhQb3BTY29wZXMoUmVnaXN0ZXJJRCogc2NvcGUsIENvbnRyb2xGbG93Q29udGUK
ICAgICAgICAgICAgIGlmIChmbGlwVHJpZXMpIHsKICAgICAgICAgICAgICAgICB3aGlsZSAobV90
cnlDb250ZXh0U3RhY2suc2l6ZSgpICE9IGZpbmFsbHlDb250ZXh0LnRyeUNvbnRleHRTdGFja1Np
emUpIHsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKG1fdHJ5Q29udGV4dFN0YWNrLnNpemUo
KSA+IGZpbmFsbHlDb250ZXh0LnRyeUNvbnRleHRTdGFja1NpemUpOwotICAgICAgICAgICAgICAg
ICAgICBUcnlDb250ZXh0IGNvbnRleHQgPSBtX3RyeUNvbnRleHRTdGFjay5sYXN0KCk7Ci0gICAg
ICAgICAgICAgICAgICAgIG1fdHJ5Q29udGV4dFN0YWNrLnJlbW92ZUxhc3QoKTsKKyAgICAgICAg
ICAgICAgICAgICAgVHJ5Q29udGV4dCBjb250ZXh0ID0gbV90cnlDb250ZXh0U3RhY2sudGFrZUxh
c3QoKTsKICAgICAgICAgICAgICAgICAgICAgVHJ5UmFuZ2UgcmFuZ2U7CiAgICAgICAgICAgICAg
ICAgICAgIHJhbmdlLnN0YXJ0ID0gY29udGV4dC5zdGFydDsKICAgICAgICAgICAgICAgICAgICAg
cmFuZ2UuZW5kID0gYmVmb3JlRmluYWxseTsKQEAgLTM5NDgsNyArMzk2Niw3IEBAIHN0YXRpYyB2
b2lkIHByZXBhcmVKdW1wVGFibGVGb3JTdHJpbmdTd2l0Y2goVW5saW5rZWRTdHJpbmdKdW1wVGFi
bGUmIGp1bXBUYWJsZSwKICAgICAgICAgCiAgICAgICAgIEFTU0VSVChub2Rlc1tpXS0+aXNTdHJp
bmcoKSk7CiAgICAgICAgIFN0cmluZ0ltcGwqIGNsYXVzZSA9IHN0YXRpY19jYXN0PFN0cmluZ05v
ZGUqPihub2Rlc1tpXSktPnZhbHVlKCkuaW1wbCgpOwotICAgICAgICBqdW1wVGFibGUub2Zmc2V0
VGFibGUuYWRkKGNsYXVzZSwgbGFiZWxzW2ldLT5iaW5kKHN3aXRjaEFkZHJlc3MsIHN3aXRjaEFk
ZHJlc3MgKyAzKSk7CisgICAgICAgIGp1bXBUYWJsZS5vZmZzZXRUYWJsZS5hZGQoY2xhdXNlLCBV
bmxpbmtlZFN0cmluZ0p1bXBUYWJsZTo6T2Zmc2V0TG9jYXRpb24geyBsYWJlbHNbaV0tPmJpbmQo
c3dpdGNoQWRkcmVzcywgc3dpdGNoQWRkcmVzcyArIDMpIH0pOwogICAgIH0KIH0KIApAQCAtNDQ1
NiwxNiArNDQ3NCwzNiBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0WWllbGRQb2ludChS
ZWdpc3RlcklEKiBhcmd1bWVudCkKICAgICBlbWl0R2VuZXJhdG9yU3RhdGVDaGFuZ2UoeWllbGRQ
b2ludEluZGV4KTsKICAgICAvLyBGaXJzdCB5aWVsZCBwb2ludCBpcyB1c2VkIGZvciBpbml0aWFs
IHNlcXVlbmNlLgogICAgIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9IHlpZWxkUG9p
bnRJbmRleCAtIDE7CisKKyAgICAvLyBTcGxpdCB0aGUgdHJ5IHJhbmdlIGhlcmUuCisgICAgUmVm
UHRyPExhYmVsPiBzYXZlUG9pbnQgPSBlbWl0TGFiZWwobmV3TGFiZWwoKS5nZXQoKSk7CisgICAg
Zm9yICh1bnNpZ25lZCBpID0gbV90cnlDb250ZXh0U3RhY2suc2l6ZSgpOyBpLS07KSB7CisgICAg
ICAgIFRyeUNvbnRleHQmIGNvbnRleHQgPSBtX3RyeUNvbnRleHRTdGFja1tpXTsKKyAgICAgICAg
VHJ5UmFuZ2UgcmFuZ2U7CisgICAgICAgIHJhbmdlLnN0YXJ0ID0gY29udGV4dC5zdGFydDsKKyAg
ICAgICAgcmFuZ2UuZW5kID0gc2F2ZVBvaW50OworICAgICAgICByYW5nZS50cnlEYXRhID0gY29u
dGV4dC50cnlEYXRhOworICAgICAgICBtX3RyeVJhbmdlcy5hcHBlbmQocmFuZ2UpOworCisgICAg
ICAgIC8vIFRyeSByYW5nZSB3aWxsIGJlIHJlc3RhcmVkIGF0IHRoZSBtZXJnZSBwb2ludC4KKyAg
ICAgICAgY29udGV4dC5zdGFydCA9IG1lcmdlUG9pbnQ7CisgICAgfQorICAgIFZlY3RvcjxUcnlD
b250ZXh0PiBzYXZlZFRyeUNvbnRleHRTdGFjazsKKyAgICBtX3RyeUNvbnRleHRTdGFjay5zd2Fw
KHNhdmVkVHJ5Q29udGV4dFN0YWNrKTsKKwogICAgIGVtaXRTYXZlKG1lcmdlUG9pbnQuZ2V0KCks
IGxpdmVDYWxsZWVMb2NhbHNJbmRleCk7CiAgICAgZW1pdFJldHVybihhcmd1bWVudCk7CiAgICAg
ZW1pdFJlc3VtZShtZXJnZVBvaW50LmdldCgpLCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpOworCisg
ICAgLy8gUmVzdG9yZSB0aGUgdHJ5IGNvbnRleHRzLCB3aGljaCBzdGFydCBvZmZzZXQgaXMgdXBk
YXRlZCB0byB0aGUgbWVyZ2UgcG9pbnQuCisgICAgbV90cnlDb250ZXh0U3RhY2suc3dhcChzYXZl
ZFRyeUNvbnRleHRTdGFjayk7CiB9CiAKIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRTYXZl
KExhYmVsKiBtZXJnZVBvaW50LCB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpCiB7CiAg
ICAgc2l6ZV90IGJlZ2luID0gaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpOwogICAgIGVtaXRPcGNvZGUo
b3Bfc2F2ZSk7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fZ2VuZXJhdG9yUmVnaXN0ZXIt
PmluZGV4KCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChnZW5lcmF0b3JGcmFtZVJlZ2lz
dGVyKCktPmluZGV4KCkpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChsaXZlQ2FsbGVlTG9j
YWxzSW5kZXgpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChtZXJnZVBvaW50LT5iaW5kKGJl
Z2luLCBpbnN0cnVjdGlvbnMoKS5zaXplKCkpKTsKIH0KQEAgLTQ0NzQsNyArNDUxMiw3IEBAIHZv
aWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXN1bWUoTGFiZWwqIG1lcmdlUG9pbnQsIHVuc2ln
bmVkIGxpdmVDYWxsZWVMb2NhbHNJCiB7CiAgICAgZW1pdEdlbmVyYXRvclN0YXRlTGFiZWwoKTsK
ICAgICBlbWl0T3Bjb2RlKG9wX3Jlc3VtZSk7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1f
Z2VuZXJhdG9yUmVnaXN0ZXItPmluZGV4KCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChn
ZW5lcmF0b3JGcmFtZVJlZ2lzdGVyKCktPmluZGV4KCkpOwogICAgIGluc3RydWN0aW9ucygpLmFw
cGVuZChsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpOwogICAgIGVtaXRMYWJlbChtZXJnZVBvaW50KTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuaAppbmRleCA1ZmFmMDRmMmYzZGJhMThhZGIwNzg5ZTMyM2U5ZGFhZTYxYWIx
MTZiLi5hOTE2ZTJlNjI4YjQ2NDk4MzMyMzYxZmQyMzk2NTEzOWYxZTZiZDUwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5oCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiTGFiZWwuaCIKICNpbmNsdWRlICJMYWJl
bFNjb3BlLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKKyNpbmNsdWRlICJKU0dlbmVyYXRv
ckZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiUGFyc2VyRXJyb3IuaCIKICNpbmNsdWRlICJSZWdpc3Rl
cklELmgiCiAjaW5jbHVkZSAiU2V0Rm9yU2NvcGUuaCIKQEAgLTcwMiw5ICs3MDMsMTAgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXREZWxlZ2F0ZVlpZWxkKFJlZ2lz
dGVySUQqIGFyZ3VtZW50LCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSopOwogICAgICAgICB2b2lk
IGJlZ2luR2VuZXJhdG9yKFJlZ2lzdGVySUQqKTsKICAgICAgICAgdm9pZCBlbmRHZW5lcmF0b3Io
TGFiZWwqIGRlZmF1bHRMYWJlbCk7Ci0gICAgICAgIFJlZ2lzdGVySUQqIGdlbmVyYXRvclN0YXRl
UmVnaXN0ZXIoKSB7IHJldHVybiAmbV9wYXJhbWV0ZXJzWzJdOyB9Ci0gICAgICAgIFJlZ2lzdGVy
SUQqIGdlbmVyYXRvclZhbHVlUmVnaXN0ZXIoKSB7IHJldHVybiAmbV9wYXJhbWV0ZXJzWzNdOyB9
Ci0gICAgICAgIFJlZ2lzdGVySUQqIGdlbmVyYXRvclJlc3VtZU1vZGVSZWdpc3RlcigpIHsgcmV0
dXJuICZtX3BhcmFtZXRlcnNbNF07IH0KKyAgICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9yU3Rh
dGVSZWdpc3RlcigpIHsgcmV0dXJuICZtX3BhcmFtZXRlcnNbc3RhdGljX2Nhc3Q8aW50MzJfdD4o
SlNHZW5lcmF0b3JGdW5jdGlvbjo6R2VuZXJhdG9yQXJndW1lbnQ6OlN0YXRlKV07IH0KKyAgICAg
ICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9yVmFsdWVSZWdpc3RlcigpIHsgcmV0dXJuICZtX3BhcmFt
ZXRlcnNbc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6R2VuZXJhdG9y
QXJndW1lbnQ6OlZhbHVlKV07IH0KKyAgICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9yUmVzdW1l
TW9kZVJlZ2lzdGVyKCkgeyByZXR1cm4gJm1fcGFyYW1ldGVyc1tzdGF0aWNfY2FzdDxpbnQzMl90
PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JBcmd1bWVudDo6UmVzdW1lTW9kZSldOyB9
CisgICAgICAgIFJlZ2lzdGVySUQqIGdlbmVyYXRvckZyYW1lUmVnaXN0ZXIoKSB7IHJldHVybiAm
bV9wYXJhbWV0ZXJzW3N0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yRnVuY3Rpb246Okdl
bmVyYXRvckFyZ3VtZW50OjpGcmFtZSldOyB9CiAKICAgICAgICAgQ29kZVR5cGUgY29kZVR5cGUo
KSBjb25zdCB7IHJldHVybiBtX2NvZGVUeXBlOyB9CiAKQEAgLTkzMiw2ICs5MzQsMTAgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIFZlY3RvcjxSZWZQdHI8Rm9ySW5Db250ZXh0Pj4gbV9mb3JJ
bkNvbnRleHRTdGFjazsKICAgICAgICAgVmVjdG9yPFRyeUNvbnRleHQ+IG1fdHJ5Q29udGV4dFN0
YWNrOwogICAgICAgICBWZWN0b3I8UmVmUHRyPExhYmVsPj4gbV9nZW5lcmF0b3JSZXN1bWVMYWJl
bHM7CisKKyAgICAgICAgU3Ryb25nPFN5bWJvbFRhYmxlPiBtX2dlbmVyYXRvckZyYW1lU3ltYm9s
VGFibGU7CisgICAgICAgIGludCBtX2dlbmVyYXRvckZyYW1lU3ltYm9sVGFibGVJbmRleCB7IDAg
fTsKKwogICAgICAgICBlbnVtIEZ1bmN0aW9uVmFyaWFibGVUeXBlIDogdWludDhfdCB7IE5vcm1h
bEZ1bmN0aW9uVmFyaWFibGUsIEdsb2JhbEZ1bmN0aW9uVmFyaWFibGUgfTsKICAgICAgICAgVmVj
dG9yPHN0ZDo6cGFpcjxGdW5jdGlvbk1ldGFkYXRhTm9kZSosIEZ1bmN0aW9uVmFyaWFibGVUeXBl
Pj4gbV9mdW5jdGlvbnNUb0luaXRpYWxpemU7CiAgICAgICAgIGJvb2wgbV9uZWVkVG9Jbml0aWFs
aXplQXJndW1lbnRzIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09w
ZXJhdGlvbnMuY3BwCmluZGV4IDY5YTE2ZWI1ZGE0MzU1YmM3OTI1YzVkZmRjYjA2MjAyM2U5OTY1
MDIuLmM0NTcyM2IxOTAxMzIwMjVkZmNlMzI2ZjYwMTVlY2E2Y2U1OGQ3MWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcApAQCAtNDIsOCArNDIsOCBAQAog
I2luY2x1ZGUgIkRpcmVjdEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIkZUTEZvck9TUkVudHJ5SklU
Q29kZS5oIgogI2luY2x1ZGUgIkZUTE9TUkVudHJ5LmgiCi0jaW5jbHVkZSAiSG9zdENhbGxSZXR1
cm5WYWx1ZS5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgorI2luY2x1ZGUgIkhvc3RDYWxs
UmV0dXJuVmFsdWUuaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpJVC5o
IgogI2luY2x1ZGUgIkpJVEV4Y2VwdGlvbnMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9nZW5lcmF0ZS1ieXRlY29kZS1maWxlcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9n
ZW5lcmF0ZS1ieXRlY29kZS1maWxlcwppbmRleCA1NjY2YTNmOTI0YzExOWIyMTZkM2ZmMGZmZTlj
NjcyYjdjNzFiYjc5Li44Zjc5MGVkOWZhODMxNmQzOWRhMTVkM2I3NTg5NDZiZjQ5ZjNiZDNlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdGUtYnl0ZWNvZGUtZmlsZXMK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRlLWJ5dGVjb2RlLWZpbGVzCkBAIC05
NCwxMyArOTQsMTQgQEAgZGVmIG9wZW5PckV4aXQocGF0aCwgbW9kZSk6CiAgICAgICAgIHByaW50
ICJJL08gZXJyb3Igb3BlbmluZyB7MH0sICh7MX0pOiB7Mn0iLmZvcm1hdChwYXRoLCBlLmVycm5v
LCBlLnN0cmVycm9yKQogICAgICAgICBleGl0KDEpCiAKLWRlZiBoYXNoRmlsZShmaWxlKToKK2Rl
ZiBoYXNoRmlsZShmaWxlcyk6CiAgICAgc2hhMSA9IGhhc2hsaWIuc2hhMSgpCi0gICAgZmlsZS5z
ZWVrKDApCi0gICAgZm9yIGxpbmUgaW4gZmlsZToKLSAgICAgICAgc2hhMS51cGRhdGUobGluZSkK
KyAgICBmb3IgZmlsZSBpbiBmaWxlczoKKyAgICAgICAgZmlsZS5zZWVrKDApCisgICAgICAgIGZv
ciBsaW5lIGluIGZpbGU6CisgICAgICAgICAgICBzaGExLnVwZGF0ZShsaW5lKQogCi0gICAgZmls
ZS5zZWVrKDApCisgICAgICAgIGZpbGUuc2VlaygwKQogCiAgICAgcmV0dXJuIHNoYTEuaGV4ZGln
ZXN0KCkKIApAQCAtMTE1LDcgKzExNiw4IEBAIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAK
ICAgICBieXRlY29kZUpTT05GaWxlID0gYXJnc1swXQogICAgIGJ5dGVjb2RlRmlsZSA9IG9wZW5P
ckV4aXQoYnl0ZWNvZGVKU09ORmlsZSwgInJiIikKLSAgICBzaGExSGFzaCA9IGhhc2hGaWxlKGJ5
dGVjb2RlRmlsZSkKKyAgICBnZW5lcmF0b3JGaWxlID0gb3Blbk9yRXhpdChfX2ZpbGVfXywgInJi
IikKKyAgICBzaGExSGFzaCA9IGhhc2hGaWxlKFtieXRlY29kZUZpbGUsIGdlbmVyYXRvckZpbGVd
KQogCiAgICAgaEZpbGVIYXNoU3RyaW5nID0gIi8vIFNIQTFIYXNoOiB7MH1cbiIuZm9ybWF0KHNo
YTFIYXNoKQogICAgIGFzbUZpbGVIYXNoU3RyaW5nID0gIiMgU0hBMUhhc2g6IHswfVxuIi5mb3Jt
YXQoc2hhMUhhc2gpCkBAIC0xODcsNiArMTg5LDcgQEAgaWYgX19uYW1lX18gPT0gIl9fbWFpbl9f
IjoKICAgICAgICAgICAgICAgICBkZWZhdWx0TGVuZ3RoID0gc2VjdGlvblsiZGVmYXVsdExlbmd0
aCJdCiAKICAgICAgICAgICAgIGJ5dGVjb2RlTnVtID0gMAorICAgICAgICAgICAgbWF4TGVuZ3Ro
ID0gMAogICAgICAgICAgICAgZm9yIGJ5dGVjb2RlIGluIHNlY3Rpb25bImJ5dGVjb2RlcyJdOgog
ICAgICAgICAgICAgICAgIGlmIG5vdCBmaXJzdE1hY3JvOgogICAgICAgICAgICAgICAgICAgICBi
eXRlY29kZUhGaWxlLndyaXRlKCIgXFxcbiIpCkBAIC0xOTQsNiArMTk3LDcgQEAgaWYgX19uYW1l
X18gPT0gIl9fbWFpbl9fIjoKICAgICAgICAgICAgICAgICBsZW5ndGggPSBkZWZhdWx0TGVuZ3Ro
CiAgICAgICAgICAgICAgICAgaWYgImxlbmd0aCIgaW4gYnl0ZWNvZGU6CiAgICAgICAgICAgICAg
ICAgICAgIGxlbmd0aCA9IGJ5dGVjb2RlWyJsZW5ndGgiXQorICAgICAgICAgICAgICAgICAgICBt
YXhMZW5ndGggPSBtYXgoW2xlbmd0aCwgbWF4TGVuZ3RoXSkKIAogICAgICAgICAgICAgICAgIGJ5
dGVjb2RlSEZpbGUud3JpdGUoIiAgICBtYWNybyh7MH0sIHsxfSkiLmZvcm1hdChieXRlY29kZVsi
bmFtZSJdLCBsZW5ndGgpKQogICAgICAgICAgICAgICAgIGZpcnN0TWFjcm8gPSBGYWxzZQpAQCAt
MjAxLDYgKzIwNSw3IEBAIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAKICAgICAgICAgICAg
IGJ5dGVjb2RlSEZpbGUud3JpdGUoIlxuXG4iKQogICAgICAgICAgICAgYnl0ZWNvZGVIRmlsZS53
cml0ZSgiI2RlZmluZSBOVU1CRVJfT0ZfezB9X0lEUyB7MX1cblxuIi5mb3JtYXQoc2VjdGlvblsi
bWFjcm9OYW1lQ29tcG9uZW50Il0sIGJ5dGVjb2RlTnVtKSkKKyAgICAgICAgICAgIGJ5dGVjb2Rl
SEZpbGUud3JpdGUoIiNkZWZpbmUgTUFYX09QQ09ERV9MRU5HVEhfT0ZfezB9IHsxfVxuXG4iLmZv
cm1hdChzZWN0aW9uWyJtYWNyb05hbWVDb21wb25lbnQiXSwgbWF4TGVuZ3RoKSkKIAogICAgICAg
ICBpZiBpbml0QVNNRmlsZU5hbWUgYW5kIHNlY3Rpb25bJ2VtaXRJbkFTTUZpbGUnXToKICAgICAg
ICAgICAgIHByZWZpeCA9ICIiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50
ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL0ludGVycHJldGVyLmNwcAppbmRleCAyYjRjN2M5YjNlYjM2ZDYzMDZlYTg0NGU4NTM3NmZm
YTdmZDBmMWY3Li5mZTM2OGYzOTFjYzI3YzFhMDViOGJkOTBmZjkxYWMxNjIxYjYyNDcwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAK
QEAgLTYwOCw3ICs2MDgsNyBAQCBKU1N0cmluZyogSW50ZXJwcmV0ZXI6OnN0YWNrVHJhY2VBc1N0
cmluZyhWTSYgdm0sIGNvbnN0IFZlY3RvcjxTdGFja0ZyYW1lPiYgc3RhYwogICAgIHJldHVybiBq
c1N0cmluZygmdm0sIGJ1aWxkZXIudG9TdHJpbmcoKSk7CiB9CiAKLUFMV0FZU19JTkxJTkUgc3Rh
dGljIEhhbmRsZXJJbmZvKiBmaW5kRXhjZXB0aW9uSGFuZGxlcihTdGFja1Zpc2l0b3ImIHZpc2l0
b3IsIENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlQmxvY2s6OlJlcXVpcmVkSGFuZGxlciByZXF1
aXJlZEhhbmRsZXIpCitBTFdBWVNfSU5MSU5FIHN0YXRpYyBIYW5kbGVySW5mbyogZmluZEV4Y2Vw
dGlvbkhhbmRsZXIoU3RhY2tWaXNpdG9yJiB2aXNpdG9yLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywg
UmVxdWlyZWRIYW5kbGVyIHJlcXVpcmVkSGFuZGxlcikKIHsKICAgICBBU1NFUlQoY29kZUJsb2Nr
KTsKICNpZiBFTkFCTEUoREZHX0pJVCkKQEAgLTY0Miw3ICs2NDIsNyBAQCBjbGFzcyBHZXRDYXRj
aEhhbmRsZXJGdW5jdG9yIHsKICAgICAgICAgaWYgKCFjb2RlQmxvY2spCiAgICAgICAgICAgICBy
ZXR1cm4gU3RhY2tWaXNpdG9yOjpDb250aW51ZTsKIAotICAgICAgICBtX2hhbmRsZXIgPSBmaW5k
RXhjZXB0aW9uSGFuZGxlcih2aXNpdG9yLCBjb2RlQmxvY2ssIENvZGVCbG9jazo6UmVxdWlyZWRI
YW5kbGVyOjpDYXRjaEhhbmRsZXIpOworICAgICAgICBtX2hhbmRsZXIgPSBmaW5kRXhjZXB0aW9u
SGFuZGxlcih2aXNpdG9yLCBjb2RlQmxvY2ssIFJlcXVpcmVkSGFuZGxlcjo6Q2F0Y2hIYW5kbGVy
KTsKICAgICAgICAgaWYgKG1faGFuZGxlcikKICAgICAgICAgICAgIHJldHVybiBTdGFja1Zpc2l0
b3I6OkRvbmU7CiAKQEAgLTY4NCw3ICs2ODQsNyBAQCBjbGFzcyBVbndpbmRGdW5jdG9yIHsKICAg
ICAgICAgbV9oYW5kbGVyID0gbnVsbHB0cjsKICAgICAgICAgaWYgKCFtX2lzVGVybWluYXRpb24p
IHsKICAgICAgICAgICAgIGlmIChtX2NvZGVCbG9jayAmJiAhaXNXZWJBc3NlbWJseUV4ZWN1dGFi
bGUobV9jb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpKSkKLSAgICAgICAgICAgICAgICBtX2hh
bmRsZXIgPSBmaW5kRXhjZXB0aW9uSGFuZGxlcih2aXNpdG9yLCBtX2NvZGVCbG9jaywgQ29kZUJs
b2NrOjpSZXF1aXJlZEhhbmRsZXI6OkFueUhhbmRsZXIpOworICAgICAgICAgICAgICAgIG1faGFu
ZGxlciA9IGZpbmRFeGNlcHRpb25IYW5kbGVyKHZpc2l0b3IsIG1fY29kZUJsb2NrLCBSZXF1aXJl
ZEhhbmRsZXI6OkFueUhhbmRsZXIpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKG1faGFuZGxl
cikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnBy
ZXRlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgK
aW5kZXggZDIwOTRkZWU3ZDI4NWFjNDk1YjE1NDE3MmEyM2I5NGZmZTg1N2YxZS4uMDczMmIzZWJi
ZDlhZGZkMjIzMzYyZWM5YTZiYWFhZmQ4NjFmNTI2NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgKQEAgLTY2LDYgKzY2LDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgc3RydWN0IEhhbmRsZXJJbmZvOwogICAgIHN0cnVjdCBJbnN0cnVjdGlv
bjsKICAgICBzdHJ1Y3QgUHJvdG9DYWxsRnJhbWU7CisgICAgc3RydWN0IFVubGlua2VkSW5zdHJ1
Y3Rpb247CiAKICAgICBlbnVtIFVud2luZFN0YXJ0IHsgVW53aW5kRnJvbUN1cnJlbnRGcmFtZSwg
VW53aW5kRnJvbUNhbGxlckZyYW1lIH07CiAKQEAgLTIwOCw3ICsyMDksMTAgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gb3Bjb2RlOwogI2VuZGlmCiAgICAgICAgIH0KLSAg
ICAgICAgCisKKyAgICAgICAgT3Bjb2RlSUQgZ2V0T3Bjb2RlSUQoY29uc3QgSW5zdHJ1Y3Rpb24m
KTsKKyAgICAgICAgT3Bjb2RlSUQgZ2V0T3Bjb2RlSUQoY29uc3QgVW5saW5rZWRJbnN0cnVjdGlv
biYpOworCiAgICAgICAgIGJvb2wgaXNPcGNvZGUoT3Bjb2RlKTsKIAogICAgICAgICBKU1ZhbHVl
IGV4ZWN1dGUoUHJvZ3JhbUV4ZWN1dGFibGUqLCBDYWxsRnJhbWUqLCBKU09iamVjdCogdGhpc09i
aik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJw
cmV0ZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJw
cmV0ZXJJbmxpbmVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODZkMDcxNDhhNTJlNjVlMzc1Zjk3ZTZlYmI5MWFk
YmUxZGQ0NTYwZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRl
cnByZXRlci9JbnRlcnByZXRlcklubGluZXMuaApAQCAtMCwwICsxLDQ0IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE2IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpbmNsdWRlICJJbnN0cnVjdGlvbi5oIgorI2luY2x1ZGUgIkludGVycHJldGVyLmgiCisjaW5j
bHVkZSAiVW5saW5rZWRDb2RlQmxvY2suaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2lubGluZSBP
cGNvZGVJRCBJbnRlcnByZXRlcjo6Z2V0T3Bjb2RlSUQoY29uc3QgSW5zdHJ1Y3Rpb24mIGluc3Ry
dWN0aW9uKQoreworICAgIHJldHVybiBnZXRPcGNvZGVJRChpbnN0cnVjdGlvbi51Lm9wY29kZSk7
Cit9CisKK2lubGluZSBPcGNvZGVJRCBJbnRlcnByZXRlcjo6Z2V0T3Bjb2RlSUQoY29uc3QgVW5s
aW5rZWRJbnN0cnVjdGlvbiYgaW5zdHJ1Y3Rpb24pCit7CisgICAgcmV0dXJuIGluc3RydWN0aW9u
LnUub3Bjb2RlOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
LmNwcAppbmRleCA4ZmQzZjU4ZWQ0MTZhNzc0YmIyNzY1ZTRkNGQ1M2Q2OGJlOTE4MmU1Li42MzE4
YzYxZDM3YThkYTEyM2VjNmYzOGEyOGUxOTU1Yzg1ODMxMDMzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVQuY3BwCkBAIC0yMzUsOCArMjM1LDYgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFp
blBhc3MoKQogICAgICAgICBERUZJTkVfT1Aob3BfZ2V0X3Jlc3RfbGVuZ3RoKQogICAgICAgICBE
RUZJTkVfT1Aob3BfY2hlY2tfdGR6KQogICAgICAgICBERUZJTkVfT1Aob3BfYXNzZXJ0KQotICAg
ICAgICBERUZJTkVfT1Aob3Bfc2F2ZSkKLSAgICAgICAgREVGSU5FX09QKG9wX3Jlc3VtZSkKICAg
ICAgICAgREVGSU5FX09QKG9wX2RlYnVnKQogICAgICAgICBERUZJTkVfT1Aob3BfZGVsX2J5X2lk
KQogICAgICAgICBERUZJTkVfT1Aob3BfZGVsX2J5X3ZhbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5o
CmluZGV4IGM5NGI3NDBiY2NlNTI1NTA3ZWIyOGM3MGQ4NmFiNjE3NWQ3MDc1YmIuLmZmNTIwMzI3
MDE2ZWNkMjNlYWE2ODkyZDM1M2JlYzNmZjM2NDAyNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQu
aApAQCAtNTAwLDggKzUwMCw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRf
b3BfZ2V0X3Jlc3RfbGVuZ3RoKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9j
aGVja190ZHooSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2Fzc2VydChJbnN0
cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3Bfc2F2ZShJbnN0cnVjdGlvbiopOwotICAg
ICAgICB2b2lkIGVtaXRfb3BfcmVzdW1lKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1p
dF9vcF9kZWJ1ZyhJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZGVsX2J5X2lk
KEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9kZWxfYnlfdmFsKEluc3RydWN0
aW9uKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAppbmRleCBkOTlk
NDE1YTMzYjc1MmRjYzNmYWIxNWI5NGI5NjRhMTExMWNlODMxLi4wMTIzMjBhMGE2ZjAzMDczNzM1
MzAzMTViNGIxODllYTZhYWYzZmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wY29kZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bj
b2Rlcy5jcHAKQEAgLTE0ODksMTggKzE0ODksNiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfcmVz
dF9sZW5ndGgoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICNlbmRpZgogfQogCi12
b2lkIEpJVDo6ZW1pdF9vcF9zYXZlKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCi17
Ci0gICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rp
b24sIHNsb3dfcGF0aF9zYXZlKTsKLSAgICBzbG93UGF0aENhbGwuY2FsbCgpOwotfQotCi12b2lk
IEpJVDo6ZW1pdF9vcF9yZXN1bWUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKLXsK
LSAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlv
biwgc2xvd19wYXRoX3Jlc3VtZSk7Ci0gICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKLX0KLQogfSAv
LyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBFTkFCTEUoSklUKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCmluZGV4IDMyYjUw
YzA5NWIwZmFjNTAwMjhmYzgwMTVmNDQ1MzkwZWQxNGE3YTYuLmM5NmJmMWM4ZWMxYTVlNTk4ZWMw
NzZjNzNjZTAzMjlkMzg4ZWQ1NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KQEAgLTE2NzEsMTUgKzE2NzEsMTEgQEAgX2xs
aW50X29wX2Fzc2VydDoKIAogCiBfbGxpbnRfb3Bfc2F2ZToKLSAgICB0cmFjZUV4ZWN1dGlvbigp
Ci0gICAgY2FsbE9wY29kZVNsb3dQYXRoKF9zbG93X3BhdGhfc2F2ZSkKLSAgICBkaXNwYXRjaCg0
KQorICAgIG5vdFN1cHBvcnRlZCgpCiAKIAogX2xsaW50X29wX3Jlc3VtZToKLSAgICB0cmFjZUV4
ZWN1dGlvbigpCi0gICAgY2FsbE9wY29kZVNsb3dQYXRoKF9zbG93X3BhdGhfcmVzdW1lKQotICAg
IGRpc3BhdGNoKDMpCisgICAgbm90U3VwcG9ydGVkKCkKIAogCiBfbGxpbnRfb3BfY3JlYXRlX2xl
eGljYWxfZW52aXJvbm1lbnQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1BhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAK
aW5kZXggMjRkOTQzNjYxYzJjZTNjODZiMjViM2JmZTAxNTk4ZmM3NThmNDcyOS4uM2NmOGRkMGU0
NjRkNGE1NTZiYjg0YzE2NjkxNzcyNWJiOTIyZDI1ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvUGFyc2VyLmNwcApAQCAtMjU2LDcgKzI1Niw3IEBAIFN0cmluZyBQYXJzZXI8TGV4ZXJU
eXBlPjo6cGFyc2VJbm5lcihjb25zdCBJZGVudGlmaWVyJiBjYWxsZWVOYW1lLCBTb3VyY2VQYXJz
ZU1vCiAgICAgaWYgKG1fbGV4ZXItPmlzUmVwYXJzaW5nRnVuY3Rpb24oKSkgewogICAgICAgICBQ
YXJzZXJGdW5jdGlvbkluZm88QVNUQnVpbGRlcj4gZnVuY3Rpb25JbmZvOwogICAgICAgICBpZiAo
cGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yQm9keU1vZGUpCi0gICAgICAg
ICAgICBtX3BhcmFtZXRlcnMgPSBjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKGNvbnRleHQpOwor
ICAgICAgICAgICAgbV9wYXJhbWV0ZXJzID0gY3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhjb250
ZXh0LCBmdW5jdGlvbkluZm8ucGFyYW1ldGVyQ291bnQpOwogICAgICAgICBlbHNlCiAgICAgICAg
ICAgICBtX3BhcmFtZXRlcnMgPSBwYXJzZUZ1bmN0aW9uUGFyYW1ldGVycyhjb250ZXh0LCBwYXJz
ZU1vZGUsIGZ1bmN0aW9uSW5mbyk7CiAKQEAgLTUwNywxMCArNTA3LDkgQEAgdGVtcGxhdGUgPGNs
YXNzIFRyZWVCdWlsZGVyPiBUcmVlU291cmNlRWxlbWVudHMgUGFyc2VyPExleGVyVHlwZT46OnBh
cnNlR2VuZXJhdG8KIAogICAgIFBhcnNlckZ1bmN0aW9uSW5mbzxUcmVlQnVpbGRlcj4gaW5mbzsK
ICAgICBpbmZvLm5hbWUgPSAmbV92bS0+cHJvcGVydHlOYW1lcy0+bnVsbElkZW50aWZpZXI7Ci0g
ICAgY3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhjb250ZXh0KTsKKyAgICBjcmVhdGVHZW5lcmF0
b3JQYXJhbWV0ZXJzKGNvbnRleHQsIGluZm8ucGFyYW1ldGVyQ291bnQpOwogICAgIGluZm8uc3Rh
cnRPZmZzZXQgPSBwYXJhbWV0ZXJzU3RhcnQ7CiAgICAgaW5mby5zdGFydExpbmUgPSB0b2tlbkxp
bmUoKTsKLSAgICBpbmZvLnBhcmFtZXRlckNvdW50ID0gNDsgLy8gZ2VuZXJhdG9yLCBzdGF0ZSwg
dmFsdWUsIHJlc3VtZSBtb2RlCiAKICAgICB7CiAgICAgICAgIEF1dG9Qb3BTY29wZVJlZiBnZW5l
cmF0b3JCb2R5U2NvcGUodGhpcywgcHVzaFNjb3BlKCkpOwpAQCAtMTkwMSwzMiArMTkwMCwzMCBA
QCB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPiB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxk
ZXIsIGNsYXNzIEZ1bmN0aW9uSW5mb1R5cAogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJU
eXBlPgotdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6
Rm9ybWFsUGFyYW1ldGVyTGlzdCBQYXJzZXI8TGV4ZXJUeXBlPjo6Y3JlYXRlR2VuZXJhdG9yUGFy
YW1ldGVycyhUcmVlQnVpbGRlciYgY29udGV4dCkKK3RlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRl
cj4gdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkZvcm1hbFBhcmFtZXRlckxpc3QgUGFyc2VyPExleGVy
VHlwZT46OmNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMoVHJlZUJ1aWxkZXImIGNvbnRleHQsIHVu
c2lnbmVkJiBwYXJhbWV0ZXJDb3VudCkKIHsKICAgICBhdXRvIHBhcmFtZXRlcnMgPSBjb250ZXh0
LmNyZWF0ZUZvcm1hbFBhcmFtZXRlckxpc3QoKTsKIAogICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2Nh
dGlvbih0b2tlbkxvY2F0aW9uKCkpOwogICAgIEpTVGV4dFBvc2l0aW9uIHBvc2l0aW9uID0gdG9r
ZW5TdGFydFBvc2l0aW9uKCk7CiAKLSAgICAvLyBAZ2VuZXJhdG9yCi0gICAgZGVjbGFyZVBhcmFt
ZXRlcigmbV92bS0+cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yUHJpdmF0
ZU5hbWUoKSk7Ci0gICAgYXV0byBnZW5lcmF0b3IgPSBjb250ZXh0LmNyZWF0ZUJpbmRpbmdMb2Nh
dGlvbihsb2NhdGlvbiwgbV92bS0+cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZ2VuZXJh
dG9yUHJpdmF0ZU5hbWUoKSwgcG9zaXRpb24sIHBvc2l0aW9uLCBBc3NpZ25tZW50Q29udGV4dDo6
RGVjbGFyYXRpb25TdGF0ZW1lbnQpOwotICAgIGNvbnRleHQuYXBwZW5kUGFyYW1ldGVyKHBhcmFt
ZXRlcnMsIGdlbmVyYXRvciwgMCk7CisgICAgYXV0byBhZGRQYXJhbWV0ZXIgPSBbJl0oY29uc3Qg
SWRlbnRpZmllciYgbmFtZSkgeworICAgICAgICBkZWNsYXJlUGFyYW1ldGVyKCZuYW1lKTsKKyAg
ICAgICAgYXV0byBiaW5kaW5nID0gY29udGV4dC5jcmVhdGVCaW5kaW5nTG9jYXRpb24obG9jYXRp
b24sIG5hbWUsIHBvc2l0aW9uLCBwb3NpdGlvbiwgQXNzaWdubWVudENvbnRleHQ6OkRlY2xhcmF0
aW9uU3RhdGVtZW50KTsKKyAgICAgICAgY29udGV4dC5hcHBlbmRQYXJhbWV0ZXIocGFyYW1ldGVy
cywgYmluZGluZywgMCk7CisgICAgICAgICsrcGFyYW1ldGVyQ291bnQ7CisgICAgfTsKIAorICAg
IC8vIEBnZW5lcmF0b3IKKyAgICBhZGRQYXJhbWV0ZXIobV92bS0+cHJvcGVydHlOYW1lcy0+YnVp
bHRpbk5hbWVzKCkuZ2VuZXJhdG9yUHJpdmF0ZU5hbWUoKSk7CiAgICAgLy8gQGdlbmVyYXRvclN0
YXRlCi0gICAgZGVjbGFyZVBhcmFtZXRlcigmbV92bS0+cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5h
bWVzKCkuZ2VuZXJhdG9yU3RhdGVQcml2YXRlTmFtZSgpKTsKLSAgICBhdXRvIGdlbmVyYXRvclN0
YXRlID0gY29udGV4dC5jcmVhdGVCaW5kaW5nTG9jYXRpb24obG9jYXRpb24sIG1fdm0tPnByb3Bl
cnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclN0YXRlUHJpdmF0ZU5hbWUoKSwgcG9z
aXRpb24sIHBvc2l0aW9uLCBBc3NpZ25tZW50Q29udGV4dDo6RGVjbGFyYXRpb25TdGF0ZW1lbnQp
OwotICAgIGNvbnRleHQuYXBwZW5kUGFyYW1ldGVyKHBhcmFtZXRlcnMsIGdlbmVyYXRvclN0YXRl
LCAwKTsKLQorICAgIGFkZFBhcmFtZXRlcihtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFt
ZXMoKS5nZW5lcmF0b3JTdGF0ZVByaXZhdGVOYW1lKCkpOwogICAgIC8vIEBnZW5lcmF0b3JWYWx1
ZQotICAgIGRlY2xhcmVQYXJhbWV0ZXIoJm1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1l
cygpLmdlbmVyYXRvclZhbHVlUHJpdmF0ZU5hbWUoKSk7Ci0gICAgYXV0byBnZW5lcmF0b3JWYWx1
ZSA9IGNvbnRleHQuY3JlYXRlQmluZGluZ0xvY2F0aW9uKGxvY2F0aW9uLCBtX3ZtLT5wcm9wZXJ0
eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JWYWx1ZVByaXZhdGVOYW1lKCksIHBvc2l0
aW9uLCBwb3NpdGlvbiwgQXNzaWdubWVudENvbnRleHQ6OkRlY2xhcmF0aW9uU3RhdGVtZW50KTsK
LSAgICBjb250ZXh0LmFwcGVuZFBhcmFtZXRlcihwYXJhbWV0ZXJzLCBnZW5lcmF0b3JWYWx1ZSwg
MCk7Ci0KKyAgICBhZGRQYXJhbWV0ZXIobV92bS0+cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVz
KCkuZ2VuZXJhdG9yVmFsdWVQcml2YXRlTmFtZSgpKTsKICAgICAvLyBAZ2VuZXJhdG9yUmVzdW1l
TW9kZQotICAgIGRlY2xhcmVQYXJhbWV0ZXIoJm1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5O
YW1lcygpLmdlbmVyYXRvclJlc3VtZU1vZGVQcml2YXRlTmFtZSgpKTsKLSAgICBhdXRvIGdlbmVy
YXRvclJlc3VtZU1vZGUgPSBjb250ZXh0LmNyZWF0ZUJpbmRpbmdMb2NhdGlvbihsb2NhdGlvbiwg
bV92bS0+cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yUmVzdW1lTW9kZVBy
aXZhdGVOYW1lKCksIHBvc2l0aW9uLCBwb3NpdGlvbiwgQXNzaWdubWVudENvbnRleHQ6OkRlY2xh
cmF0aW9uU3RhdGVtZW50KTsKLSAgICBjb250ZXh0LmFwcGVuZFBhcmFtZXRlcihwYXJhbWV0ZXJz
LCBnZW5lcmF0b3JSZXN1bWVNb2RlLCAwKTsKKyAgICBhZGRQYXJhbWV0ZXIobV92bS0+cHJvcGVy
dHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yUmVzdW1lTW9kZVByaXZhdGVOYW1lKCkp
OworICAgIC8vIEBnZW5lcmF0b3JGcmFtZQorICAgIGFkZFBhcmFtZXRlcihtX3ZtLT5wcm9wZXJ0
eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JGcmFtZVByaXZhdGVOYW1lKCkpOwogCiAg
ICAgcmV0dXJuIHBhcmFtZXRlcnM7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL1BhcnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIu
aAppbmRleCAyNWNlYzk1YTc2MWNjZDhjMjYzMzgzNzMwZWIwNGUxNTY5NzIwYmEyLi5kZWQ2MjRm
NjE3ZmI2ZDI0ZDAwYmYxYWM0NmM0NWMyMmQ5OWI3MjFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvUGFyc2VyLmgKQEAgLTE0NTEsNyArMTQ1MSw3IEBAIGNsYXNzIFBhcnNlciB7CiAgICAg
QUxXQVlTX0lOTElORSBib29sIGlzQXJyb3dGdW5jdGlvblBhcmFtZXRlcnMoKTsKICAgICAKICAg
ICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXIsIGNsYXNzIEZ1bmN0aW9uSW5mb1R5cGU+IE5F
VkVSX0lOTElORSB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6Rm9ybWFsUGFyYW1ldGVyTGlzdCBwYXJz
ZUZ1bmN0aW9uUGFyYW1ldGVycyhUcmVlQnVpbGRlciYsIFNvdXJjZVBhcnNlTW9kZSwgRnVuY3Rp
b25JbmZvVHlwZSYpOwotICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gTkVWRVJfSU5M
SU5FIHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpGb3JtYWxQYXJhbWV0ZXJMaXN0IGNyZWF0ZUdlbmVy
YXRvclBhcmFtZXRlcnMoVHJlZUJ1aWxkZXImKTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1
aWxkZXI+IE5FVkVSX0lOTElORSB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6Rm9ybWFsUGFyYW1ldGVy
TGlzdCBjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKFRyZWVCdWlsZGVyJiwgdW5zaWduZWQmIHBh
cmFtZXRlckNvdW50KTsKIAogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gTkVWRVJf
SU5MSU5FIFRyZWVDbGFzc0V4cHJlc3Npb24gcGFyc2VDbGFzcyhUcmVlQnVpbGRlciYsIEZ1bmN0
aW9uUmVxdWlyZW1lbnRzLCBQYXJzZXJDbGFzc0luZm88VHJlZUJ1aWxkZXI+Jik7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCmluZGV4
IDQ1OTNiMDY1MTQwMGU1MTAxMTAwYzVjMmVkZDU2NzQ1NWNkNjRjZTguLmZiYTQ4Yzg2MDViMjc2
ODA4MjhiOWJmODk0NzE4OTI3MThjMmM4NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcApAQCAtMzcsNyArMzcsNiBAQAogI2luY2x1
ZGUgIkVycm9yLmgiCiAjaW5jbHVkZSAiRXJyb3JIYW5kbGluZ1Njb3BlLmgiCiAjaW5jbHVkZSAi
RXhjZXB0aW9uRnV6ei5oIgotI2luY2x1ZGUgIkdlbmVyYXRvckZyYW1lLmgiCiAjaW5jbHVkZSAi
R2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiSG9zdENhbGxSZXR1cm5WYWx1ZS5oIgogI2luY2x1
ZGUgIkludGVycHJldGVyLmgiCkBAIC03MjUsMzggKzcyNCw2IEBAIFNMT1dfUEFUSF9ERUNMKHNs
b3dfcGF0aF9hc3NlcnQpCiAgICAgRU5EKCk7CiB9CiAKLVNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0
aF9zYXZlKQotewotICAgIC8vIE9ubHkgc2F2ZSB2YXJpYWJsZXMgYW5kIHRlbXBvcmFyeSByZWdp
c3RlcnMuIFRoZSBzY29wZSByZWdpc3RlcnMgYXJlIGluY2x1ZGVkIGluIHRoZW0uCi0gICAgLy8g
QnV0IHBhcmFtZXRlcnMgYXJlIG5vdCBpbmNsdWRlZC4gQmVjYXVzZSB0aGUgZ2VuZXJhdG9yIGlt
cGxlbWVudGF0aW9uIHJlcGxhY2VzIHRoZSB2YWx1ZXMgb2YgcGFyYW1ldGVycyBvbiBlYWNoIGdl
bmVyYXRvci5uZXh0KCkgY2FsbC4KLSAgICBCRUdJTigpOwotICAgIEpTVmFsdWUgZ2VuZXJhdG9y
ID0gT1AoMSkuanNWYWx1ZSgpOwotICAgIEdlbmVyYXRvckZyYW1lKiBmcmFtZSA9IG51bGxwdHI7
Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IGdlbmVyYXRvci5nZXQoZXhlYywgZXhlYy0+cHJvcGVydHlO
YW1lcygpLmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvckZyYW1lUHJpdmF0ZU5hbWUoKSk7Ci0gICAg
aWYgKCF2YWx1ZS5pc051bGwoKSkKLSAgICAgICAgZnJhbWUgPSBqc0Nhc3Q8R2VuZXJhdG9yRnJh
bWUqPih2YWx1ZSk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIC8vIEZJWE1FOiBPbmNlIEpTR2VuZXJh
dG9yIHNwZWNpYWxpemVkIG9iamVjdCBpcyBpbnRyb2R1Y2VkLCB0aGlzIEdlbmVyYXRvckZyYW1l
IHNob3VsZCBiZSBlbWJlZGVkIGludG8gaXQgdG8gYXZvaWQgYWxsb2NhdGlvbnMuCi0gICAgICAg
IC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE1NDUKLSAgICAg
ICAgZnJhbWUgPSBHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlKGV4ZWMtPnZtKCksICBleGVjLT5jb2Rl
QmxvY2soKS0+bnVtQ2FsbGVlTG9jYWxzKCkpOwotICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xv
dChnZW5lcmF0b3IsIHRydWUsIFB1dFByb3BlcnR5U2xvdDo6UHV0QnlJZCk7Ci0gICAgICAgIGFz
T2JqZWN0KGdlbmVyYXRvciktPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5wdXQoYXNPYmplY3Qo
Z2VuZXJhdG9yKSwgZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmdl
bmVyYXRvckZyYW1lUHJpdmF0ZU5hbWUoKSwgZnJhbWUsIHNsb3QpOwotICAgIH0KLSAgICB1bnNp
Z25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSBwY1syXS51LnVuc2lnbmVkVmFsdWU7Ci0gICAg
ZnJhbWUtPnNhdmUoZXhlYywgZXhlYy0+Y29kZUJsb2NrKCktPmxpdmVDYWxsZWVMb2NhbHNBdFlp
ZWxkKGxpdmVDYWxsZWVMb2NhbHNJbmRleCkpOwotICAgIEVORCgpOwotfQotCi1TTE9XX1BBVEhf
REVDTChzbG93X3BhdGhfcmVzdW1lKQotewotICAgIEJFR0lOKCk7Ci0gICAgSlNWYWx1ZSBnZW5l
cmF0b3IgPSBPUCgxKS5qc1ZhbHVlKCk7Ci0gICAgR2VuZXJhdG9yRnJhbWUqIGZyYW1lID0ganND
YXN0PEdlbmVyYXRvckZyYW1lKj4oZ2VuZXJhdG9yLmdldChleGVjLCBleGVjLT5wcm9wZXJ0eU5h
bWVzKCkuYnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yRnJhbWVQcml2YXRlTmFtZSgpKSk7Ci0gICAg
dW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gcGNbMl0udS51bnNpZ25lZFZhbHVlOwot
ICAgIGZyYW1lLT5yZXN1bWUoZXhlYywgZXhlYy0+Y29kZUJsb2NrKCktPmxpdmVDYWxsZWVMb2Nh
bHNBdFlpZWxkKGxpdmVDYWxsZWVMb2NhbHNJbmRleCkpOwotICAgIEVORCgpOwotfQotCiBTTE9X
X1BBVEhfREVDTChzbG93X3BhdGhfY3JlYXRlX2xleGljYWxfZW52aXJvbm1lbnQpCiB7CiAgICAg
QkVHSU4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1v
blNsb3dQYXRocy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1Bh
dGhzLmgKaW5kZXggOGM3MDc4NDI4MDJkNmEwM2QxMjhjZDhkMjkyYWZmNzM1Y2RhMDMyZi4uNmVi
MjFiZGZkZTAzNDEyZmVlNjEwMDJkNWU1YWE4YTgzNDgwNTNhMCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKQEAgLTI0Niw4ICsyNDYsNiBA
QCBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX25leHRfZ2VuZXJpY19lbnVtZXJhdG9y
X3BuYW1lKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfdG9faW5kZXhfc3RyaW5n
KTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcHJvZmlsZV90eXBlX2NsZWFyX2xv
Zyk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2Fzc2VydCk7Ci1TTE9XX1BBVEhf
SElEREVOX0RFQ0woc2xvd19wYXRoX3NhdmUpOwotU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3df
cGF0aF9yZXN1bWUpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9jcmVhdGVfbGV4
aWNhbF9lbnZpcm9ubWVudCk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3B1c2hf
d2l0aF9zY29wZSk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3Jlc29sdmVfc2Nv
cGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9y
RnJhbWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJhbWUu
Y3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZjZlYTdhMTAwMjU4YzNlY2UwNGRh
YWI0M2JkYWE4NTFlYzhmNzE1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZyYW1lLmNw
cAorKysgL2Rldi9udWxsCkBAIC0xLDk3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lu
Y2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkdlbmVyYXRvckZyYW1lLmgiCi0KLSNpbmNsdWRl
ICJDb2RlQmxvY2suaCIKLSNpbmNsdWRlICJIZWFwSXRlcmF0aW9uU2NvcGUuaCIKLSNpbmNsdWRl
ICJKU0NKU1ZhbHVlSW5saW5lcy5oIgotI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKLSNpbmNs
dWRlICJTbG90VmlzaXRvcklubGluZXMuaCIKLSNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgi
Ci0KLW5hbWVzcGFjZSBKU0MgewotCi1jb25zdCBDbGFzc0luZm8gR2VuZXJhdG9yRnJhbWU6OnNf
aW5mbyA9IHsgIkdlbmVyYXRvckZyYW1lIiwgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhP
RF9UQUJMRShHZW5lcmF0b3JGcmFtZSkgfTsKLQotR2VuZXJhdG9yRnJhbWU6OkdlbmVyYXRvckZy
YW1lKFZNJiB2bSwgc2l6ZV90IG51bWJlck9mQ2FsbGVlTG9jYWxzKQotICAgIDogQmFzZSh2bSwg
dm0uZ2VuZXJhdG9yRnJhbWVTdHJ1Y3R1cmUuZ2V0KCkpCi0gICAgLCBtX251bWJlck9mQ2FsbGVl
TG9jYWxzKG51bWJlck9mQ2FsbGVlTG9jYWxzKQotewotfQotCi12b2lkIEdlbmVyYXRvckZyYW1l
OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCi17Ci0gICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0p
OwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9udW1iZXJPZkNhbGxlZUxvY2FsczsgKytp
KQotICAgICAgICBsb2NhbEF0KGkpLmNsZWFyKCk7Ci19Ci0KLVN0cnVjdHVyZSogR2VuZXJhdG9y
RnJhbWU6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTVmFsdWUgcHJvdG90eXBlKQotewotICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2
bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKENlbGxUeXBlLCBTdHJ1Y3R1cmVG
bGFncyksIGluZm8oKSk7Ci19Ci0KLUdlbmVyYXRvckZyYW1lKiBHZW5lcmF0b3JGcmFtZTo6Y3Jl
YXRlKFZNJiB2bSwgc2l6ZV90IG51bWJlck9mTG9jYWxzKQotewotICAgIEdlbmVyYXRvckZyYW1l
KiByZXN1bHQgPQotICAgICAgICBuZXcgKAotICAgICAgICAgICAgTm90TnVsbCwKLSAgICAgICAg
ICAgIGFsbG9jYXRlQ2VsbDxHZW5lcmF0b3JGcmFtZT4odm0uaGVhcCwgYWxsb2NhdGlvblNpemVG
b3JMb2NhbHMobnVtYmVyT2ZMb2NhbHMpKSkKLSAgICAgICAgR2VuZXJhdG9yRnJhbWUodm0sIG51
bWJlck9mTG9jYWxzKTsKLSAgICByZXN1bHQtPmZpbmlzaENyZWF0aW9uKHZtKTsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotCi12b2lkIEdlbmVyYXRvckZyYW1lOjpzYXZlKEV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZUNhbGxlZUxvY2FscykKLXsKLSAgICAvLyBPbmx5
IHNhdmUgY2FsbGVlIGxvY2Fscy4KLSAgICAvLyBFdmVyeSB0aW1lIGEgZ2VuZXJhdG9yIGlzIGNh
bGxlZCAob3IgcmVzdW1lZCksIHBhcmFtZXRlcnMgc2hvdWxkIGJlIHJlcGxhY2VkLgotICAgIEFT
U0VSVChsaXZlQ2FsbGVlTG9jYWxzLm51bUJpdHMoKSA8PSBtX251bWJlck9mQ2FsbGVlTG9jYWxz
KTsKLSAgICBsaXZlQ2FsbGVlTG9jYWxzLmZvckVhY2hTZXRCaXQoWyZdKHNpemVfdCBpbmRleCkg
ewotICAgICAgICBsb2NhbEF0KGluZGV4KS5zZXQoZXhlYy0+dm0oKSwgdGhpcywgZXhlYy0+dW5j
aGVja2VkUih2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChpbmRleCkpLmpzVmFsdWUoKSk7Ci0gICAg
fSk7Ci19Ci0KLXZvaWQgR2VuZXJhdG9yRnJhbWU6OnJlc3VtZShFeGVjU3RhdGUqIGV4ZWMsIGNv
bnN0IEZhc3RCaXRWZWN0b3ImIGxpdmVDYWxsZWVMb2NhbHMpCi17Ci0gICAgLy8gT25seSByZXN1
bWUgY2FsbGVlIGxvY2Fscy4KLSAgICAvLyBFdmVyeSB0aW1lIGEgZ2VuZXJhdG9yIGlzIGNhbGxl
ZCAob3IgcmVzdW1lZCksIHBhcmFtZXRlcnMgc2hvdWxkIGJlIHJlcGxhY2VkLgotICAgIGxpdmVD
YWxsZWVMb2NhbHMuZm9yRWFjaFNldEJpdChbJl0oc2l6ZV90IGluZGV4KSB7Ci0gICAgICAgIGV4
ZWMtPnVuY2hlY2tlZFIodmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaW5kZXgpKSA9IGxvY2FsQXQo
aW5kZXgpLmdldCgpOwotICAgICAgICBsb2NhbEF0KGluZGV4KS5jbGVhcigpOwotICAgIH0pOwot
fQotCi12b2lkIEdlbmVyYXRvckZyYW1lOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xv
dFZpc2l0b3ImIHZpc2l0b3IpCi17Ci0gICAgR2VuZXJhdG9yRnJhbWUqIHRoaXNPYmplY3QgPSBq
c0Nhc3Q8R2VuZXJhdG9yRnJhbWUqPihjZWxsKTsKLSAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRo
aXNPYmplY3QsIHZpc2l0b3IpOwotICAgIC8vIFNpbmNlIG9ubHkgdHJ1ZSBjZWxsIHBvaW50ZXJz
IGFyZSBzdG9yZWQgYXMgYSBjZWxsLCB3ZSBjYW4gc2FmZWx5IG1hcmsgdGhlbS4KLSAgICB2aXNp
dG9yLmFwcGVuZFZhbHVlcyh0aGlzT2JqZWN0LT5sb2NhbHMoKSwgdGhpc09iamVjdC0+bV9udW1i
ZXJPZkNhbGxlZUxvY2Fscyk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJhbWUuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZyYW1lLmgKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDNkNTQ1YjE0N2RkNGFiZmIyYmJiOWI1YTcxOTRlOGY3NDg0MWM0OWEuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJhbWUuaAorKysgL2Rldi9udWxsCkBAIC0xLDkw
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFu
ZS50ZWFAZ21haWwuY29tPi4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBHZW5lcmF0b3JGcmFtZV9oCi0j
ZGVmaW5lIEdlbmVyYXRvckZyYW1lX2gKLQotI2luY2x1ZGUgIkpTQ2VsbC5oIgotI2luY2x1ZGUg
PHd0Zi9GYXN0Qml0VmVjdG9yLmg+Ci0KLW5hbWVzcGFjZSBKU0MgewotCi1jbGFzcyBHZW5lcmF0
b3JGcmFtZSA6IHB1YmxpYyBKU0NlbGwgewotICAgIGZyaWVuZCBjbGFzcyBKSVQ7Ci0jaWYgRU5B
QkxFKERGR19KSVQpCi0gICAgZnJpZW5kIGNsYXNzIERGRzo6U3BlY3VsYXRpdmVKSVQ7Ci0gICAg
ZnJpZW5kIGNsYXNzIERGRzo6SklUQ29tcGlsZXI7Ci0jZW5kaWYKLSAgICBmcmllbmQgY2xhc3Mg
Vk07Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBKU0NlbGwgQmFzZTsKLSAgICBzdGF0aWMgY29uc3Qg
dW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBTdHJ1Y3R1cmVJc0ltbW9ydGFsIHwgQmFzZTo6U3Ry
dWN0dXJlRmxhZ3M7Ci0KLSAgICBERUNMQVJFX0VYUE9SVF9JTkZPOwotCi0gICAgc3RhdGljIEdl
bmVyYXRvckZyYW1lKiBjcmVhdGUoVk0mLCBzaXplX3QgbnVtYmVyT2ZDYWxsZWVMb2NhbHMpOwot
Ci0gICAgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiogbG9jYWxzKCkKLSAgICB7Ci0gICAgICAg
IHJldHVybiBiaXR3aXNlX2Nhc3Q8V3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPio+KGJpdHdpc2Vf
Y2FzdDxjaGFyKj4odGhpcykgKyBvZmZzZXRPZkxvY2FscygpKTsKLSAgICB9Ci0KLSAgICBXcml0
ZUJhcnJpZXJCYXNlPFVua25vd24+JiBsb2NhbEF0KHNpemVfdCBpbmRleCkKLSAgICB7Ci0gICAg
ICAgIEFTU0VSVChpbmRleCA8IG1fbnVtYmVyT2ZDYWxsZWVMb2NhbHMpOwotICAgICAgICByZXR1
cm4gbG9jYWxzKClbaW5kZXhdOwotICAgIH0KLQotICAgIHN0YXRpYyBzaXplX3Qgb2Zmc2V0T2ZM
b2NhbHMoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZjxz
aXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KT4oc2l6ZW9mKEdlbmVyYXRvckZyYW1lKSk7Ci0g
ICAgfQotCi0gICAgc3RhdGljIHNpemVfdCBhbGxvY2F0aW9uU2l6ZUZvckxvY2Fscyh1bnNpZ25l
ZCBudW1iZXJPZkxvY2FscykKLSAgICB7Ci0gICAgICAgIHJldHVybiBvZmZzZXRPZkxvY2Fscygp
ICsgbnVtYmVyT2ZMb2NhbHMgKiBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KTsKLSAgICB9
Ci0KLSAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9i
amVjdCosIEpTVmFsdWUgcHJvdG90eXBlKTsKLQotICAgIHZvaWQgc2F2ZShFeGVjU3RhdGUqLCBj
b25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlQ2FsbGVlTG9jYWxzKTsKLSAgICB2b2lkIHJlc3VtZShF
eGVjU3RhdGUqLCBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlQ2FsbGVlTG9jYWxzKTsKLQotcHJp
dmF0ZToKLSAgICBHZW5lcmF0b3JGcmFtZShWTSYsIHNpemVfdCBudW1iZXJPZkNhbGxlZUxvY2Fs
cyk7Ci0KLSAgICBzaXplX3QgbV9udW1iZXJPZkNhbGxlZUxvY2FsczsKLQotICAgIGZyaWVuZCBj
bGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7Ci0KLSAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZN
Jik7Ci0KLXByb3RlY3RlZDoKLSAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCos
IFNsb3RWaXNpdG9yJik7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBKU0MKLQotI2VuZGlmIC8vIEdl
bmVyYXRvckZyYW1lX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2VuZXJhdG9yRnVuY3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2VuZXJhdG9yRnVuY3Rpb24uaAppbmRleCAzNmY2MWM1ZjIwZjU2YmVmZDZjNTU3ODQyYjE5ZTM5
YjE5YTNhOTE5Li5hMWNiYWQ5NDZkYzU2ODI5ZWQxYTIxNTU3OTBiNDQwYThkZjQzMDA0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyYXRvckZ1bmN0aW9u
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0b3JGdW5jdGlv
bi5oCkBAIC01NSw2ICs1NSwxNiBAQCBjbGFzcyBKU0dlbmVyYXRvckZ1bmN0aW9uIDogcHVibGlj
IEpTRnVuY3Rpb24gewogICAgICAgICBFeGVjdXRpbmcgPSAtMiwKICAgICB9OwogCisgICAgLy8g
W3RoaXNdLCBAZ2VuZXJhdG9yLCBAZ2VuZXJhdG9yU3RhdGUsIEBnZW5lcmF0b3JWYWx1ZSwgQGdl
bmVyYXRvclJlc3VtZU1vZGUsIEBnZW5lcmF0b3JGcmFtZS4KKyAgICBlbnVtIGNsYXNzIEdlbmVy
YXRvckFyZ3VtZW50IDogaW50MzJfdCB7CisgICAgICAgIFRoaXNWYWx1ZSA9IDAsCisgICAgICAg
IEdlbmVyYXRvciA9IDEsCisgICAgICAgIFN0YXRlID0gMiwKKyAgICAgICAgVmFsdWUgPSAzLAor
ICAgICAgICBSZXN1bWVNb2RlID0gNCwKKyAgICAgICAgRnJhbWUgPSA1LAorICAgIH07CisKICAg
ICBjb25zdCBzdGF0aWMgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVG
bGFnczsKIAogICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTS5jcHAKaW5kZXggYjFmZjQyNDhhMzQ4NGE0Y2JiYzIwNWMzMmQ0ZDA0YzE2MDYwY2FjNi4u
ODVlNjdmZmI1OTY0NGQzYjU0MzMyNTdiN2NiMGVkMWRkMGU2OWNkYyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtNDYsNyArNDYsNiBAQAogI2luY2x1ZGUgIkZUTFRodW5r
cy5oIgogI2luY2x1ZGUgIkZ1bmN0aW9uQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJHQ0FjdGl2
aXR5Q2FsbGJhY2suaCIKLSNpbmNsdWRlICJHZW5lcmF0b3JGcmFtZS5oIgogI2luY2x1ZGUgIkdl
dHRlclNldHRlci5oIgogI2luY2x1ZGUgIkhlYXAuaCIKICNpbmNsdWRlICJIZWFwSXRlcmF0aW9u
U2NvcGUuaCIKQEAgLTI0MCw3ICsyMzksNiBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5
cGUgaGVhcFR5cGUpCiAgICAgaW5mZXJyZWRUeXBlU3RydWN0dXJlLnNldCgqdGhpcywgSW5mZXJy
ZWRUeXBlOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgaW5mZXJy
ZWRUeXBlVGFibGVTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBJbmZlcnJlZFR5cGVUYWJsZTo6Y3JlYXRl
U3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIGZ1bmN0aW9uUmFyZURhdGFTdHJ1
Y3R1cmUuc2V0KCp0aGlzLCBGdW5jdGlvblJhcmVEYXRhOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMs
IDAsIGpzTnVsbCgpKSk7Ci0gICAgZ2VuZXJhdG9yRnJhbWVTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBH
ZW5lcmF0b3JGcmFtZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAg
IGV4Y2VwdGlvblN0cnVjdHVyZS5zZXQoKnRoaXMsIEV4Y2VwdGlvbjo6Y3JlYXRlU3RydWN0dXJl
KCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIHByb21pc2VEZWZlcnJlZFN0cnVjdHVyZS5zZXQo
KnRoaXMsIEpTUHJvbWlzZURlZmVycmVkOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVs
bCgpKSk7CiAgICAgaW50ZXJuYWxQcm9taXNlRGVmZXJyZWRTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBK
U0ludGVybmFsUHJvbWlzZURlZmVycmVkOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVs
bCgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAppbmRleCBmMGRlMTUxMzVhOTA3ODc4
YjQ3YTFkMzQzNGY2ODI5MWNiNWRjNzNlLi40ZmY5ZWRkMGE3NzQ2YzI5ZTVlNjdjMzgxZmNlM2Iy
MDc0Nzk5NTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKQEAgLTMxNiw3ICszMTYs
NiBAQCBjbGFzcyBWTSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxWTT4gewogICAgIFN0
cm9uZzxTdHJ1Y3R1cmU+IGluZmVycmVkVHlwZVN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0
dXJlPiBpbmZlcnJlZFR5cGVUYWJsZVN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBm
dW5jdGlvblJhcmVEYXRhU3RydWN0dXJlOwotICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGdlbmVyYXRv
ckZyYW1lU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGV4Y2VwdGlvblN0cnVjdHVy
ZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBwcm9taXNlRGVmZXJyZWRTdHJ1Y3R1cmU7CiAgICAg
U3Ryb25nPFN0cnVjdHVyZT4gaW50ZXJuYWxQcm9taXNlRGVmZXJyZWRTdHJ1Y3R1cmU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWIt
ZnRsLWFuZC1hcnJheS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2Vu
ZXJhdG9yLWZpYi1mdGwtYW5kLWFycmF5LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZlOTM5ODEyZmRiYWVjNmI4
MzJiZmQwMGYyMTUzZGVmODRiYjc1OTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLWFuZC1hcnJheS5qcwpAQCAt
MCwwICsxLDIzIEBACisoZnVuY3Rpb24gKCkgeworICAgIGZ1bmN0aW9uICpmaWIoKQorICAgIHsK
KyAgICAgICAgbGV0IGEgPSAxOworICAgICAgICBsZXQgYiA9IDE7CisgICAgICAgIGxldCBjID0g
WyAwIF07CisgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICBjWzBdID0gYTsKKyAg
ICAgICAgICAgIHlpZWxkIGM7CisgICAgICAgICAgICBbYSwgYl0gPSBbYiwgYSArIGJdOworICAg
ICAgICB9CisgICAgfQorCisgICAgbGV0IHZhbHVlID0gMDsKKyAgICBmb3IgKGxldCBpID0gMDsg
aSA8IDFlNDsgKytpKSB7CisgICAgICAgIGxldCBmID0gZmliKCk7CisgICAgICAgIGZvciAobGV0
IGkgPSAwOyBpIDwgMTAwOyArK2kpIHsKKyAgICAgICAgICAgIHZhbHVlID0gZi5uZXh0KCkudmFs
dWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHZhbHVlWzBdICE9PSAzNTQyMjQ4NDgxNzkyNjIw
MDAwMDApCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCB2YWx1ZToke3Jlc3VsdH1g
KTsKKyAgICB9Cit9KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3Rz
L3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQtb2JqZWN0LmpzIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQtb2JqZWN0LmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjY2NzM0MGYyZWE0Yzc0MzhhMmQyMDlhYTQwZDA2NzdlNGFiN2QzZmIKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1m
aWItZnRsLWFuZC1vYmplY3QuanMKQEAgLTAsMCArMSwyMyBAQAorKGZ1bmN0aW9uICgpIHsKKyAg
ICBmdW5jdGlvbiAqZmliKCkKKyAgICB7CisgICAgICAgIGxldCBhID0gMTsKKyAgICAgICAgbGV0
IGIgPSAxOworICAgICAgICBsZXQgYyA9IHsgZmliOiAwIH07CisgICAgICAgIHdoaWxlICh0cnVl
KSB7CisgICAgICAgICAgICBjLmZpYiA9IGE7CisgICAgICAgICAgICB5aWVsZCBjOworICAgICAg
ICAgICAgW2EsIGJdID0gW2IsIGEgKyBiXTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGxldCB2
YWx1ZSA9IDA7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxZTQ7ICsraSkgeworICAgICAgICBs
ZXQgZiA9IGZpYigpOworICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDsgKytpKSB7Cisg
ICAgICAgICAgICB2YWx1ZSA9IGYubmV4dCgpLnZhbHVlOworICAgICAgICB9CisgICAgICAgIGlm
ICh2YWx1ZS5maWIgIT09IDM1NDIyNDg0ODE3OTI2MjAwMDAwMCkKKyAgICAgICAgICAgIHRocm93
IG5ldyBFcnJvcihgYmFkIHZhbHVlOiR7cmVzdWx0fWApOworICAgIH0KK30oKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRs
LWFuZC1zdHJpbmcuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVy
YXRvci1maWItZnRsLWFuZC1zdHJpbmcuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDM4YWU2YWIzMzQ3MDQ2ODIy
ODQ5ZjQzMDA0ZWE1YzQwM2VlZGEyOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwtYW5kLXN0cmluZy5qcwpAQCAt
MCwwICsxLDIyIEBACisoZnVuY3Rpb24gKCkgeworICAgIGZ1bmN0aW9uICpmaWIoKQorICAgIHsK
KyAgICAgICAgbGV0IGEgPSAxOworICAgICAgICBsZXQgYiA9IDE7CisgICAgICAgIGxldCBjID0g
IlJlc3VsdCEgIjsKKyAgICAgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgICAgIHlpZWxkIGMg
KyBhOworICAgICAgICAgICAgW2EsIGJdID0gW2IsIGEgKyBiXTsKKyAgICAgICAgfQorICAgIH0K
KworICAgIGxldCB2YWx1ZSA9IDA7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxZTQ7ICsraSkg
eworICAgICAgICBsZXQgZiA9IGZpYigpOworICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEw
MDsgKytpKSB7CisgICAgICAgICAgICB2YWx1ZSA9IGYubmV4dCgpLnZhbHVlOworICAgICAgICB9
CisgICAgICAgIGlmICh2YWx1ZSAhPT0gYFJlc3VsdCEgMzU0MjI0ODQ4MTc5MjYyMDAwMDAwYCkK
KyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIHZhbHVlOiR7cmVzdWx0fWApOworICAg
IH0KK30oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNz
L2dlbmVyYXRvci1maWItZnRsLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVz
cy9nZW5lcmF0b3ItZmliLWZ0bC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNDBlMzNkYmM4NjhiZWE3YTg5M2M5
ZWMxNmI3NzllYzI2YmRiMTljCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC5qcwpAQCAtMCwwICsxLDIxIEBACiso
ZnVuY3Rpb24gKCkgeworICAgIGZ1bmN0aW9uICpmaWIoKQorICAgIHsKKyAgICAgICAgbGV0IGEg
PSAxOworICAgICAgICBsZXQgYiA9IDE7CisgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAg
ICAgICB5aWVsZCBhOworICAgICAgICAgICAgW2EsIGJdID0gW2IsIGEgKyBiXTsKKyAgICAgICAg
fQorICAgIH0KKworICAgIGxldCB2YWx1ZSA9IDA7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAx
ZTQ7ICsraSkgeworICAgICAgICBsZXQgZiA9IGZpYigpOworICAgICAgICBmb3IgKGxldCBpID0g
MDsgaSA8IDEwMDsgKytpKSB7CisgICAgICAgICAgICB2YWx1ZSA9IGYubmV4dCgpLnZhbHVlOwor
ICAgICAgICB9CisgICAgICAgIGlmICh2YWx1ZSAhPT0gMzU0MjI0ODQ4MTc5MjYyMDAwMDAwKQor
ICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgdmFsdWU6JHtyZXN1bHR9YCk7CisgICAg
fQorfSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mv
Z2VuZXJhdG9yLWZyYW1lLWVtcHR5LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0
cmVzcy9nZW5lcmF0b3ItZnJhbWUtZW1wdHkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTllODg1NWJmYWMzYzU2
ZGY5MjZhYmQ0MjhjMDEzYzMzNDE2Mjc0NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZyYW1lLWVtcHR5LmpzCkBAIC0wLDAg
KzEsMzQgQEAKK2Z1bmN0aW9uIHNob3VsZFRocm93KGZ1bmMsIGVycm9yTWVzc2FnZSkgeworICAg
IHZhciBlcnJvclRocm93biA9IGZhbHNlOworICAgIHZhciBlcnJvciA9IG51bGw7CisgICAgdHJ5
IHsKKyAgICAgICAgZnVuYygpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgZXJyb3JUaHJv
d24gPSB0cnVlOworICAgICAgICBlcnJvciA9IGU7CisgICAgfQorICAgIGlmICghZXJyb3JUaHJv
d24pCisgICAgICAgIHRocm93IG5ldyBFcnJvcignbm90IHRocm93bicpOworICAgIGlmIChTdHJp
bmcoZXJyb3IpICE9PSBlcnJvck1lc3NhZ2UpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFk
IGVycm9yOiAke1N0cmluZyhlcnJvcil9YCk7Cit9CisKK3Nob3VsZFRocm93KGZ1bmN0aW9uICgp
IHsKKyAgICBmdW5jdGlvbiAqZmliKGZsYWcpCisgICAgeworICAgICAgICBsZXQgYSA9IDE7Cisg
ICAgICAgIGxldCBiID0gMTsKKyAgICAgICAgeWllbGQgNDI7CisgICAgICAgIGlmIChmbGFnKQor
ICAgICAgICAgICAgcmV0dXJuIGM7CisgICAgICAgIGxldCBjID0gNTAwOworICAgIH0KKworICAg
IGxldCB2YWx1ZSA9IDA7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxZTQ7ICsraSkgeworICAg
ICAgICBmb3IgKGxldCB2IG9mIGZpYihmYWxzZSkpIHsKKyAgICAgICAgfQorICAgIH0KKyAgICBm
b3IgKGxldCB2IG9mIGZpYih0cnVlKSkgeworICAgIH0KK30sIGBSZWZlcmVuY2VFcnJvcjogQ2Fu
bm90IGFjY2VzcyB1bmluaXRpYWxpemVkIHZhcmlhYmxlLmApOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItcmVkdWNlZC1zYXZlLXBvaW50
LXB1dC10by1zY29wZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2Vu
ZXJhdG9yLXJlZHVjZWQtc2F2ZS1wb2ludC1wdXQtdG8tc2NvcGUuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzBj
NzVmYTQ5MTQzYzE3YmUxNGYzMjgxZTNmNjU0MzRmMzUxMzllOAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXJlZHVjZWQtc2F2
ZS1wb2ludC1wdXQtdG8tc2NvcGUuanMKQEAgLTAsMCArMSwyOCBAQAorZnVuY3Rpb24gc2hvdWxk
QmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCB2YWx1ZTogJHtTdHJpbmcoYWN0dWFsKX1gKTsKK30K
KworZnVuY3Rpb24gZXJyb3IoKQoreworICAgIHRocm93ICJvayI7Cit9CisKK2Z1bmN0aW9uKiBn
ZW4oKQoreworICAgIHZhciB2YWx1ZSA9IDQyOworICAgIHRyeSB7CisgICAgICAgIHlpZWxkIDMw
MDsKKyAgICAgICAgdmFsdWUgPSA1MDA7CisgICAgICAgIGVycm9yKCk7CisgICAgfSBjYXRjaCAo
ZSkgeworICAgICAgICB5aWVsZCA0MjsKKyAgICAgICAgcmV0dXJuIHZhbHVlOworICAgIH0KKyAg
ICByZXR1cm4gMjAwOworfQorCit2YXIgZyA9IGdlbigpOworc2hvdWxkQmUoZy5uZXh0KCkudmFs
dWUsIDMwMCk7CitzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgNDIpOworc2hvdWxkQmUoZy5uZXh0
KCkudmFsdWUsIDUwMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMv
c3RyZXNzL2dlbmVyYXRvci10cmFuc2Zlci1yZWdpc3Rlci1iZXlvbmQtbXV0aXBsZS15aWVsZHMu
anMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci10cmFuc2Zl
ci1yZWdpc3Rlci1iZXlvbmQtbXV0aXBsZS15aWVsZHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmUyMDhmNTgx
Mjk2ZjlhZTA4YTZiZmIzOThiNDgyMjU3NDJkNmI3OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXRyYW5zZmVyLXJlZ2lzdGVy
LWJleW9uZC1tdXRpcGxlLXlpZWxkcy5qcwpAQCAtMCwwICsxLDE4IEBACitmdW5jdGlvbiBzaG91
bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisg
ICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKworCitm
dW5jdGlvbiAqZ2VuKCkKK3sKKyAgICB2YXIgdGVzdCA9IDQyOworICAgIHlpZWxkIDMyOworICAg
IHlpZWxkIDMzOworICAgIHlpZWxkIHRlc3Q7Cit9CisKK3ZhciBnID0gZ2VuKCk7CitzaG91bGRC
ZShnLm5leHQoKS52YWx1ZSwgMzIpOworc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIDMzKTsKK3No
b3VsZEJlKGcubmV4dCgpLnZhbHVlLCA0Mik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9G
YXN0Qml0VmVjdG9yLmggYi9Tb3VyY2UvV1RGL3d0Zi9GYXN0Qml0VmVjdG9yLmgKaW5kZXggOThm
ZmY1Y2Y3MzUzZTZiYzY3ZGE1YzU1OTQwY2NjZTRlNGIxNTZkMC4uZmYwMGI3YjU0ZDRhMGNmZjRi
ZWY3ZDAzODU0ZGU2YjkwY2UxZGI5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRmFzdEJp
dFZlY3Rvci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0Zhc3RCaXRWZWN0b3IuaApAQCAtMjMsOCAr
MjMsNyBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAotI2lmbmRlZiBGYXN0Qml0VmVjdG9yX2gK
LSNkZWZpbmUgRmFzdEJpdFZlY3Rvcl9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgPHN0cmlu
Zy5oPgogI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CkBAIC0zNiwxMiArMzUsMTQgQEAgY2xh
c3MgUHJpbnRTdHJlYW07CiAKIGNsYXNzIEZhc3RCaXRWZWN0b3IgewogcHVibGljOgotICAgIEZh
c3RCaXRWZWN0b3IoKQotICAgICAgICA6IG1fYXJyYXkoMCkKLSAgICAgICAgLCBtX251bUJpdHMo
MCkKKyAgICBGYXN0Qml0VmVjdG9yKCkgPSBkZWZhdWx0OworCisgICAgRmFzdEJpdFZlY3RvcihG
YXN0Qml0VmVjdG9yJiYgb3RoZXIpCisgICAgICAgIDogbV9hcnJheShzdGQ6OmV4Y2hhbmdlKG90
aGVyLm1fYXJyYXksIG51bGxwdHIpKQorICAgICAgICAsIG1fbnVtQml0cyhzdGQ6OmV4Y2hhbmdl
KG90aGVyLm1fbnVtQml0cywgMCkpCiAgICAgewogICAgIH0KLSAgICAKKwogICAgIEZhc3RCaXRW
ZWN0b3IoY29uc3QgRmFzdEJpdFZlY3RvciYgb3RoZXIpCiAgICAgICAgIDogbV9hcnJheSgwKQog
ICAgICAgICAsIG1fbnVtQml0cygwKQpAQCAtMjAyLDEzICsyMDMsMTAgQEAgY2xhc3MgRmFzdEJp
dFZlY3RvciB7CiAgICAgc3RhdGljIHNpemVfdCBhcnJheUxlbmd0aChzaXplX3QgbnVtQml0cykg
eyByZXR1cm4gKG51bUJpdHMgKyAzMSkgPj4gNTsgfQogICAgIHNpemVfdCBhcnJheUxlbmd0aCgp
IGNvbnN0IHsgcmV0dXJuIGFycmF5TGVuZ3RoKG1fbnVtQml0cyk7IH0KICAgICAKLSAgICB1aW50
MzJfdCogbV9hcnJheTsgLy8gTm8sIHRoaXMgY2FuJ3QgYmUgYW4gc3RkOjp1bmlxdWVfcHRyPHVp
bnQzMl90W10+LgotICAgIHNpemVfdCBtX251bUJpdHM7CisgICAgdWludDMyX3QqIG1fYXJyYXkg
eyBudWxscHRyIH07IC8vIE5vLCB0aGlzIGNhbid0IGJlIGFuIHN0ZDo6dW5pcXVlX3B0cjx1aW50
MzJfdFtdPi4KKyAgICBzaXplX3QgbV9udW1CaXRzIHsgMCB9OwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV1RGCiAKIHVzaW5nIFdURjo6RmFzdEJpdFZlY3RvcjsKLQotI2VuZGlmIC8vIEZhc3RCaXRW
ZWN0b3JfaAotCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>284488</attachid>
            <date>2016-07-25 08:57:05 -0700</date>
            <delta_ts>2016-08-08 07:57:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-152723-20160726005557.patch</filename>
            <type>text/plain</type>
            <size>199696</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAzNjgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
MjQxN2U0Y2Y0MGEyODUzZmU0ZTkyNzM3MDY1ZmIzMmRiODMzMjdiLi5lYjE2YjJlODM4ZjY1NzQ3
ZjBlZmVjMjA4NzFhNDAzNGY2ODE4ZTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNjcgQEAKKzIwMTYtMDctMjUgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0RGR11bRlRMXSBJbXBsZW1lbnQgRVM2IEdlbmVyYXRvcnMgaW4g
REZHIC8gRlRMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNTI3MjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUaGlzIHBhdGNoIGludHJvZHVjZXMgREZHIGFuZCBGVEwgc3VwcG9ydCBmb3IgRVM2IGdlbmVy
YXRvcnMuCisgICAgICAgIEVTNiBnZW5lcmF0b3IgaXMgY29tcGlsZWQgYnkgdGhlIEJ5dGVjb2Rl
R2VuZXJhdG9yLiBCdXQgYXQgdGhlIGxhc3QgcGhhc2UsIEJ5dGVjb2RlR2VuZXJhdG9yIHBlcmZv
cm1zICJnZW5lcmF0b3JpZmljYXRpb24iIG9udG8gdGhlIHVubGlua2VkIGNvZGUuCisgICAgICAg
IEluIEJ5dGVjb2RlR2VuZXJhdG9yIHBoYXNlLCB3ZSBpbnNlcnRlZCBzZXZlcmFsIHNwZWNpYWwg
bWFya2VycyBmb3IgdGhlIGdlbmVyYXRvcnMsIG9wX3NhdmUgYW5kIG9wX3Jlc3VtZS4KKyAgICAg
ICAgVGhlIG9wX3NhdmUsIG9wX3Jlc3VtZSwgYW5kIHRoZSBtZXJnZSBwb2ludCBibG9jayBhcmUg
Y29ubmVjdGVkIGFzIGZvbGxvd3MuCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBvcF9yZXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBeCisgICAgICAgIGVudHJ5IC0+IGdlbmVyYXRvciBzd2l0Y2ggLS0tLT4gb3Bfc2F2ZSAtPiBt
ZXJnZSBwb2ludCAtPiAuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBeCisgICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0t
LT4gb3BfcmVzdW1lIC0tLS0tKworCisgICAgICAgIEluIHRoZSBnZW5lcmF0b3JpZmljYXRpb24g
cGhhc2UsIHdlIHR1cm4gb3V0IHdoaWNoIHZhcmlhYmxlcyBzaG91bGQgYmUgc2F2ZWQgYW5kIHJl
c3VtZWQgYXQgZWFjaCBvcF9zYXZlIGFuZCBvcF9yZXN1bWUsIGFuZCBjb252ZXJ0IHRoZXNlIGJ5
dGVjb2RlcworICAgICAgICB0byB0aGUgc2VxdWVuY2VzIG9mIHRoZSBnZXRfZnJvbV9zY29wZSBh
bmQgcHV0X3RvX3Njb3BlLiBUaGUgcmVnaXN0ZXJzIGFyZSBzYXZlZCBhbmQgcmVzdW1lZCBvdmVy
IHRoZSBnZW5lcmF0b3IncyBuZXh0KCkgY2FsbHMgYnkgdXNpbmcgdGhpcyBzcGVjaWFsCisgICAg
ICAgIGdlbmVyYXRvciBmcmFtZSBzY29wZS4KKworICAgICAgICBJbiB0aGUgZ2VuZXJhdG9yaWZp
Y2F0aW9uIHBoYXNlLAorCisgICAgICAgIDEuIFdlIGNvbnN0cnVjdCB0aGUgQnl0ZWNvZGVHcmFw
aCBmcm9tIHRoZSB1bmxpbmtlZCBpbnN0cnVjdGlvbnMuIFRoaXMgY29uc3RydWN0cyB0aGUgYmFz
aWMgYmxvY2tzLCBhbmQgaXQgaXMgdXNlZCBpbiB0aGUgc3Vic2VxdWVudCBhbmFseXNpcy4KKyAg
ICAgICAgMi4gV2UgcGVyZm9ybSB0aGUgYW5hbHlzaXMgb250byB0aGUgdW5saW5rZWQgY29kZS4g
V2UgaGF2ZSAzIGFuYWx5c2lzOiB0aGUgbGl2ZW5lc3MgYW5hbHlzaXMsIHRoZSBzYXZlZCB2YXJp
YWJsZXMgYW5hbHlzaXMsIGFuZCB0aGUgcmVzdW1lZCB2YXJpYWJsZXMgYW5hbHlzaXMuCisgICAg
ICAgICAgIEZpcnN0LCBpbiB0aGUgbGl2ZW5lc3MgYW5hbHlzaXMsIHdlIGV4dHJhY3QgdGhlIGxp
dmUgdmFyaWFibGVzIGF0IGVhY2ggbWVyZ2UgcG9pbnQuIFRoZXNlIHZhcmlhYmxlcyBzaG91bGQg
YmUgY29uc2lkZXJlZCBhcyB0aGUgY29uc2VydmF0aXZlIHJlZ2lzdGVycworICAgICAgICAgICB0
byBiZSBzYXZlZCBhbmQgcmVzdW1lZCBhdCBlYWNoIHBvaW50LgorICAgICAgICAzLiBTZWNvbmQs
IHdlIGRyaXZlIHRoZSBmb3J3YXJkIGFuYWx5c2lzLCBjYWxsZWQgdGhlIHNhdmVkIHZhcmlhYmxl
cyBhbmFseXNpcy4gVGhpcyB0aW1lLCB3ZSBleHBsaWNpdGx5IGlnbm9yZSB0aGUgZWRnZXMgYmV0
d2VlbiB0aGUgc2F2ZSBwb2ludHMgYW5kIHRoZSBtZXJnZSBwb2ludHMuCisgICAgICAgICAgIEF0
IG9wX3NhdmUsIHdlIHNob3VsZCBzYXZlIHRoZSB2YXJpYWJsZXMgdGhhdCAoaSkgd2lsbCBiZSB1
c2VkIGFmdGVyIHRoZSBtZXJnZSBwb2ludCBBTkQgKGlpKSB0aGUgbmV3bHkgZGVmaW5lZCB2YXJp
YWJsZXMgZnJvbSB0aGUgcHJldmlvdXMgb3BfcmVzdW1lLiBTbywgd2UgcHJvcGFnYXRlCisgICAg
ICAgICAgIHRoZSBkZWZzIGFuZCBjb2xsZWN0IHRoZSBuZXdseSBkZWZpbmVkIHJlZ2lzdGVycyBh
dCBlYWNoIG9wX3NhdmUgcG9pbnQgaW4gdGhlIGdyYXBoLiBUaGlzIHJlc3VsdCByZXByZXNlbnRz
IChpaSkuIFNvIHRoZW4sIHdlIGZpbHRlciB0aGUgbGl2ZSB2YXJpYWJsZXMgKGkpIChnYWluZWQg
aW4gKDIpKQorICAgICAgICAgICBhdCBlYWNoIG1lcmdlIHBvaW50IHdpdGggdGhpcyBuZXdseSBk
ZWYtZWQgcmVnaXN0ZXJzIGJpdCBtYXNrKGlpKS4KKyAgICAgICAgICAgT25lIGltcG9ydGFudCB0
aGluZyBvZiB0aGlzIGFuYWx5c2lzIGlzIHRoYXQsIHdlIGNvbnNpZGVycyB0aGUgYmFzaWMgYmxv
Y2tzIHdoaWNoIHJhbmdlIG92ZXJsYXBzIHRoZSB0cnktcmFuZ2UgYXMgdGhlIGltcGxpY2l0IHBy
ZWRlY2Vzc29ycyBvZiB0aGUgaGFuZGxlcnMuCisgICAgICAgICAgIFdoZW4gcHJvcGFnYXRpbmcg
dGhlIG91dGdvaW5nIHJlc3VsdHMsIHRoZSBoYW5kbGVyIG1lcmdlcyBhbGwgdGhlIHByZWRlY2Vz
c29ycycgb3V0IHNldHMuIFRoaXMgaXMgYSBsaXR0bGUgYml0IGNvbnNlcnZhdGl2ZSBiZWNhdXNl
IHRoZSB0cnktcmFuZ2UgbWF5IG5vdCBjb3ZlciBhbGwKKyAgICAgICAgICAgdGhlIHBhcnQgb2Yg
dGhlIGltcGxpY2l0IHByZWRlY2Vzc29ycy4gU28gb3Bfc2F2ZSBjb3VsZCBzYXZlIHRoZSB2YXJp
YWJsZXMgY29uc2VydmF0aXZlbHkuCisgICAgICAgIDQuIFRoaXJkLCB3ZSBwZXJmb3JtIHRoZSBs
aXZlbmVzcyBhbmFseXNpcyBhZ2FpbiwgYnV0IG9udG8gdGhlIGdyYXBoIHdoaWNoIGRyb3BzIHRo
ZSBlZGdlcyBiZXR3ZWVuIHRoZSBzYXZlIHBvaW50cyBhbmQgdGhlIG1lcmdlIHBvaW50cy4gVGhp
cyBhbmFseXNpcywgcmVmZXJyZWQgdG8gYXMKKyAgICAgICAgICAgdGhlIHJlc3VtZWQgdmFyaWFi
bGVzIGFuYWx5c2lzLCBleHRyYWN0cyB0aGUgbGl2ZW5lc3MgYXQgZWFjaCBtZXJnZSBwb2ludC4g
VGhpcyBsaXZlbmVzcyBpbmZvcm1hdGlvbiBvbmx5IGNvbnNpZGVycyB0aGUgcmVhY2hhYmxlIGJs
b2NrcyBmcm9tIHRoZSB0YXJnZXQgb3BfcmVzdW1lLgorICAgICAgICAgICBTbywgdGhpcyByZWdp
c3RlciBzZXQgcmVwcmVzZW50cyB0aGUgc2F2ZWQgcmVnaXN0ZXJzIHdoaWNoIHRoZSByZWFjaGFi
bGUgYmxvY2tzIHVzZS4gV2UgY29uc2lkZXIgdGhlc2UgcmVnaXN0ZXJzIGFzIHRoZSByZWdpc3Rl
cnMgdG8gYmUgcmVzdW1lZCBoZXJlLgorICAgICAgICAgICBUaGlzIGFuYWx5c2lzIHNob3VsZCBi
ZSBkb25lIGFmdGVyICgzKSBhbmQgc2hvdWxkIHVzZSAoMykncyByZXN1bHRzLiBUaGlzIGlzIGJl
Y2F1c2UgdGhlIG9wX3NhdmUgY291bGQgc2F2ZSB0aGUgdmFyaWFibGVzIGNvbnNlcnZhdGl2ZWx5
LiBTbyBvcF9yZXN1bWUgc2hvdWxkIHJlc3VtZQorICAgICAgICAgICB0aGUgdmFyaWFibGVzIHRo
YXQgaXMgc2F2ZWQgY29uc2VydmF0aXZlbHkgaW4gKDMpLgorICAgICAgICA1LiBXZSBpbnNlcnQg
dGhlIGdldF9mcm9tX3Njb3BlIGFuZCBwdXRfdG9fc2NvcGUgYXQgZWFjaCBvcF9zYXZlIGFuZCBv
cF9yZXN1bWUuIFdoaWNoIHJlZ2lzdGVycyBzaG91bGQgYmUgc2F2ZWQgYW5kIHJlc3VtZWQgaXMg
b2ZmZXJlZCBieSAoMykgYW5kICg0KS4KKyAgICAgICAgICAgVGhlbiwgY2xpcCB0aGUgb3Bfc2F2
ZSBhbmQgb3BfcmVzdW1lIHRoZW1zZWx2ZXMuIFRoZXkgYXJlIGV4ZWN1dGVkIGluIGEgYmF0Y2gg
bWFubmVyIGJ5IEJ5dGVjb2RlTW9kaWZpY2F0aW9uU2V0LiBTaW5jZSB0aGVzZSBtb2RpZmljYXRp
b24gY2hhbmdlcyB0aGUgYmFzaWMgYmxvY2tzCisgICAgICAgICAgIGFuZCBzaXplIG9mIHVubGlu
a2VkIGluc3RydWN0aW9ucywgQnl0ZWNvZGVNb2RpZmljYXRpb25TZXQgYWxzbyBwZXJmb3JtcyB0
aGUgb2Zmc2V0IGFkanVzdG1lbnQgZm9yIFVubGlua2VkQ29kZUJsb2NrLiBTbywgdGhpcyBCeXRl
Y29kZU1vZGlmaWNhdGlvblNldCBpcyBwZXJmb3JtZWQKKyAgICAgICAgICAgb250byB0aGUgQnl0
ZWNvZGVHcmFwaCBpbnN0ZWFkIG9mIEJ5dGVjb2RlQmFzaWNCbG9jay4gVGhlIHJlYXNvbiB3aHkg
d2UgdGFrZSB0aGlzIGRlc2lnbiBpcyBzaW1wbGU6IHdlIGRvbid0IHdhbnQgdG8gbmV3bHkgY3Jl
YXRlIHRoZSBiYXNpYyBibG9ja3MgYW5kIG9wY29kZXMKKyAgICAgICAgICAgZm9yIHRoaXMgZWFy
bHkgcGhhc2UgbGlrZSBERkcuIEluc3RlYWQsIHdlIHBlcmZvcm0gdGhlIG1vZGlmaWNhdGlvbiBh
bmQgYWRqdXN0bWVudCB0byB0aGUgdW5saW5rZWQgaW5zdHJ1Y3Rpb25zIGFuZCBVbmxpbmtlZENv
ZGVCbG9jayBpbiBhIGluLXBsYWNlIG1hbm5lci4KKworICAgICAgICBBZnRlciB0aGF0IHBoYXNl
LCB0aGUgZGF0YSBmbG93IG9mIHRoZSBnZW5lcmF0b3Itc2F2ZWQtYW5kLXJlc3VtZWQtcmVnaXN0
ZXJzIGFyZSBleHBsaWNpdGx5IHJlcHJlc2VudGVkIGJ5IHRoZSBnZXRfZnJvbV9zY29wZSBhbmQg
cHV0X3RvX3Njb3BlLgorICAgICAgICBBbmQgb3Bfc2F2ZSBhbmQgb3BfcmVzdW1lIGFyZSByZW1v
dmVkLiBTaW5jZSB3ZSB1c2UgdGhlIGV4aXN0aW5nIGJ5dGVjb2RlcywgREZHIGFuZCBGVEwgY2hh
bmdlcyBhcmUgbm90IG5lY2Vzc2FyeS4KKyAgICAgICAgVGhpcyBwYXRjaCBhbHNvIGRyb3BzIGRh
dGEgc3RydWN0dXJlcyBhbmQgaW1wbGVtZW50YXRpb25zIGZvciB0aGUgb2xkIGdlbmVyYXRvciwg
b3BfcmVzdW1lLCBvcF9zYXZlIGltcGxlbWVudGF0aW9ucyBhbmQgR2VuZXJhdG9yRnJhbWUuCisK
KyAgICAgICAgTm90ZSB0aGF0IHRoaXMgcGF0Y2ggZG9lcyBub3QgbGV2ZXJhZ2UgdGhlIHJlY2Vu
dCBtdWx0aSBlbnRyeXBvaW50cyBzdXBwb3J0IGluIEIzLiBBZnRlciB0aGlzIHBhdGNoIGlzIGlu
dHJvZHVjZWQsIHdlIHdpbGwgc3VibWl0IGEgbmV3IHBhdGNoIHRoYXQgbGV2ZXJhZ2VzIHRoZSBt
dWx0aQorICAgICAgICBlbnRyeXBvaW50cyBmb3IgZ2VuZXJhdG9yJ3MgcmVzdW1lIGFuZCBzZWVz
IHRoZSBwZXJmb3JtYW5jZSBnYWluLgorCisgICAgICAgIENvbXBpbGluZyBFUzYgZ2VuZXJhdG9y
cyBpbiBERkcgYW5kIEZUTCBnaXZlcyB1cyBzaWduaWZpY2FudCBwZXJmb3JtYW5jZSBpbXByb3Zl
bWVudHMuCisgICAgICAgIEluIHg2NCBMaW51eCBib3ggKGhhbmF5YW1hdGEpLCB0aGUgcmVzdWx0
IG9mIEpTQ09ubHkgcG9ydCBpcyB0aGUgZm9sbG93aW5ncy4KKworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlbGluZSAgICAgICAgICAg
ICAgICAgICBwYXRjaAorCisgICAgICAgICAgICBnZW5lcmF0b3ItZmliICAgICAgICAgICAgICAg
ICAgICAgICAgICAxMDkuMTg0NSstOC44OTA1ICAgICBeICAgICAzNS44NjM4Ky0wLjc1NjcgICAg
ICAgIF4gZGVmaW5pdGVseSAzLjA0NDR4IGZhc3RlcgorICAgICAgICAgICAgZ2VuZXJhdG9yLXdp
dGgtc2V2ZXJhbC10eXBlcyAgICAgICAgICAgMzUxLjgzNTQrLTE3LjM4OTggICAgXiAgICAxMzIu
MzIzOSstMTguNjMxMCAgICAgICBeIGRlZmluaXRlbHkgMi42NTg5eCBmYXN0ZXIKKyAgICAgICAg
ICAgIGdlbmVyYXRvci1zdW5zcGlkZXItYWNjZXNzLW5zaWV2ZSAgICAgICAgNS45MTM2Ky0wLjAy
NjggICAgIF4gICAgICA1LjAwOTArLTAuMDM5NCAgICAgICAgXiBkZWZpbml0ZWx5IDEuMTgwNngg
ZmFzdGVyCisKKyAgICAgICAgSW4geDY0IE9TIFggbGFwdG9wLCB0aGUgcmVzdWx0cyBvZiBFUzZT
YW1wbGVCZW5jaCBhcmUgdGhlIGZvbGxvd2luZ3MuCisgICAgICAgIFRoZSBFUzYgQmFzaWMgYmVu
Y2htYXJrIHNob3cgdGhhdCB0aGUgcGVyZm9ybWFuY2Ugb2YgdGhlIHBhdGNoZWQgb25lIGlzIDMz
JSBmYXN0ZXIgdGhhbiB0aGUgcGVyZm9ybWFuY2Ugb2YgdGhlIGJhc2VsaW5lLgorCisgICAgICAg
ICAgICBCYXNlbGluZToKKyAgICAgICAgICAgICAgICBHZW9tZXRyaWMgTWVhbiBSZXN1bHQ6IDE4
MS44MyBtcyDCsSA0LjgyIG1zCisKKyAgICAgICAgICAgICAgICBCZW5jaG1hcmsgICAgRmlyc3Qg
SXRlcmF0aW9uICAgICAgIFdvcnN0IDIlICAgICAgICAgICAgICBTdGVhZHkgU3RhdGUKKyAgICAg
ICAgICAgICAgICBBaXIgICAgICAgICAgNzAuNzQgbXMgwrEgNi41NSBtcyAgICAzNC43NCBtcyDC
sSAxLjY1IG1zICAgIDI5ODkuMDYgbXMgwrEgMzQuNDUgbXMKKyAgICAgICAgICAgICAgICBCYXNp
YyAgICAgICAgNDAuMDMgbXMgwrEgMS45NiBtcyAgICAyOC41MCBtcyDCsSAwLjYwIG1zICAgIDQz
NDIuOTEgbXMgwrEgNjQuMTAgbXMKKworICAgICAgICAgICAgUGF0Y2hlZDoKKyAgICAgICAgICAg
ICAgICBHZW9tZXRyaWMgTWVhbiBSZXN1bHQ6IDE2OC4xNCBtcyDCsSAxLjM5IG1zCisKKyAgICAg
ICAgICAgICAgICBCZW5jaG1hcmsgICAgRmlyc3QgSXRlcmF0aW9uICAgICAgIFdvcnN0IDIlICAg
ICAgICAgICAgICBTdGVhZHkgU3RhdGUKKyAgICAgICAgICAgICAgICBBaXIgICAgICAgICAgNjgu
NjcgbXMgwrEgMC44MiBtcyAgICAzNS42MiBtcyDCsSAwLjMyIG1zICAgIDMwNjUuODkgbXMgwrEg
NTUuNTkgbXMKKyAgICAgICAgICAgICAgICBCYXNpYyAgICAgICAgMzguNjEgbXMgwrEgMS42NSBt
cyAgICAyMy45NyBtcyDCsSAwLjM4IG1zICAgIDMyNjIuNDYgbXMgwrEgNzQuMTIgbXMKKworICAg
ICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYnVpbHRpbnMvR2VuZXJhdG9yUHJvdG90eXBl
LmpzOgorICAgICAgICAoZ2xvYmFsUHJpdmF0ZS5nZW5lcmF0b3JSZXN1bWUpOgorICAgICAgICAq
IGJ5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
QmFzaWNCbG9jazo6Y29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3NJbnRlcm5hbCk6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlQmFzaWNCbG9jazo6Y29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MpOgor
ICAgICAgICAoSlNDOjpsaW5rQmxvY2tzKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Y29tcHV0
ZUJ5dGVjb2RlQmFzaWNCbG9ja3MpOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVj
b2RlQmFzaWNCbG9jay5oOgorICAgICAgICAoSlNDOjpCeXRlY29kZUJhc2ljQmxvY2s6OmJ5dGVj
b2RlT2Zmc2V0cyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlQmFzaWNCbG9jazo6c3VjY2Vzc29y
cyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlQmFzaWNCbG9jazo6cHJlZGVjZXNzb3JzKToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVCYXNpY0Jsb2NrOjppbmRleCk6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlQmFzaWNCbG9jazo6YWRkU3VjY2Vzc29yKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVC
YXNpY0Jsb2NrOjphZGRQcmVkZWNlc3Nvcik6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVH
ZW5lcmF0b3JpZmljYXRpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5l
cmF0b3JpZmljYXRpb246OkJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uKToKKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb246OmlzTWVyZ2VCbG9jayk6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uOjppc1NhdmVCbG9jayk6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uOjpncmFwaCk6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uOjp5aWVsZHMpOgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUdlbmVyYXRvcmlmaWNhdGlvbjo6c3RvcmFnZUZvckdlbmVyYXRvckxvY2FsKToKKyAgICAgICAg
KEpTQzo6R2VuZXJhdG9yTGl2ZW5lc3NBbmFseXNpczo6R2VuZXJhdG9yTGl2ZW5lc3NBbmFseXNp
cyk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGVEZWZz
Rm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JMaXZlbmVzc0FuYWx5
c2lzOjpjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6R2VuZXJh
dG9yTGl2ZW5lc3NBbmFseXNpczo6cnVuKToKKyAgICAgICAgKEpTQzo6U2F2ZWRWYXJpYWJsZXNB
bmFseXNpczo6U2F2ZWRWYXJpYWJsZXNBbmFseXNpcyk6CisgICAgICAgIChKU0M6OlNhdmVkVmFy
aWFibGVzQW5hbHlzaXM6OnN0ZXBPdmVySW5zdHJ1Y3Rpb24pOgorICAgICAgICAoSlNDOjpTYXZl
ZFZhcmlhYmxlc0FuYWx5c2lzOjpjb21wdXRlTG9jYWxTYXZlZFZhcmlhYmxlc0ZvckJ5dGVjb2Rl
T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6U2F2ZWRWYXJpYWJsZXNBbmFseXNpczo6Y29tcHV0ZUxv
Y2FsU2F2ZWRWYXJpYWJsZXNGb3JCbG9jayk6CisgICAgICAgIChKU0M6OlNhdmVkVmFyaWFibGVz
QW5hbHlzaXM6OmdldFNhdmVkVmFyaWFibGVzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQpOgorICAgICAg
ICAoSlNDOjpTYXZlZFZhcmlhYmxlc0FuYWx5c2lzOjpydW4pOgorICAgICAgICAoSlNDOjpSZXN1
bWVkVmFyaWFibGVzQW5hbHlzaXM6OlJlc3VtZWRWYXJpYWJsZXNBbmFseXNpcyk6CisgICAgICAg
IChKU0M6OlJlc3VtZWRWYXJpYWJsZXNBbmFseXNpczo6Y29tcHV0ZURlZnNGb3JCeXRlY29kZU9m
ZnNldCk6CisgICAgICAgIChKU0M6OlJlc3VtZWRWYXJpYWJsZXNBbmFseXNpczo6Y29tcHV0ZVVz
ZXNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OlJlc3VtZWRWYXJpYWJsZXNBbmFs
eXNpczo6cnVuKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb246OnJ1
bik6CisgICAgICAgIChKU0M6OnBlcmZvcm1HZW5lcmF0b3JpZmljYXRpb24pOgorICAgICAgICAq
IGJ5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmg6IENvcGllZCBmcm9tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNJbmxpbmVz
LmguCisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVHcmFwaC5oOiBBZGRlZC4KKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHcmFwaDo6Y29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVH
cmFwaDo6YmFzaWNCbG9ja3MpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdyYXBoOjppbnN0cnVj
dGlvbnMpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdyYXBoOjpiYXNpY0Jsb2Nrc0luUmV2ZXJz
ZU9yZGVyKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHcmFwaDo6YmxvY2tDb250YWluc0J5dGVj
b2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHcmFwaDo6ZmluZEJhc2ljQmxvY2tG
b3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR3JhcGg6OmZpbmRCYXNp
Y0Jsb2NrV2l0aExlYWRlck9mZnNldCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR3JhcGg8Qmxv
Y2s+OjpCeXRlY29kZUdyYXBoKToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpdmVuZXNz
QW5hbHlzaXMuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OkJ5
dGVjb2RlTGl2ZW5lc3NBbmFseXNpcyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlTGl2ZW5lc3NB
bmFseXNpczo6Y29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCk6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6cnVuTGl2ZW5lc3NGaXhwb2lu
dCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Z2V0TGl2ZW5lc3NJ
bmZvQXRCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlTGl2ZW5lc3NBbmFs
eXNpczo6Y29tcHV0ZUZ1bGxMaXZlbmVzcyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlTGl2ZW5l
c3NBbmFseXNpczo6Y29tcHV0ZUtpbGxzKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVz
c0FuYWx5c2lzOjpkdW1wUmVzdWx0cyk6CisgICAgICAgIChKU0M6OmlzVmFsaWRSZWdpc3RlckZv
ckxpdmVuZXNzKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Z2V0TGVhZGVyT2Zmc2V0Rm9yQmFz
aWNCbG9jayk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OmZpbmRCYXNpY0Jsb2NrV2l0aExlYWRl
ck9mZnNldCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OmJsb2NrQ29udGFpbnNCeXRlY29kZU9m
ZnNldCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OmZpbmRCYXNpY0Jsb2NrRm9yQnl0ZWNvZGVP
ZmZzZXQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpzdGVwT3Zlckluc3RydWN0aW9uKTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6Y29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCeXRlY29kZU9mZnNl
dCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OmNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQmxvY2sp
OiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1
dGUpOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNp
cy5oOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGluZXMu
aDoKKyAgICAgICAgKEpTQzo6aXNWYWxpZFJlZ2lzdGVyRm9yTGl2ZW5lc3MpOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUxpdmVuZXNzTG9jYWxQcm9wYWdhdGlvbjxEZXJpdmVkQW5hbHlzaXM+Ojpz
dGVwT3Zlckluc3RydWN0aW9uKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc0xvY2Fs
UHJvcGFnYXRpb248RGVyaXZlZEFuYWx5c2lzPjo6Y29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCeXRl
Y29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlTGl2ZW5lc3NMb2NhbFByb3BhZ2F0
aW9uPERlcml2ZWRBbmFseXNpcz46OmNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQmxvY2spOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzTG9jYWxQcm9wYWdhdGlvbjxEZXJpdmVkQW5hbHlz
aXM+OjpnZXRMaXZlbmVzc0luZm9BdEJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKiBieXRlY29k
ZS9CeXRlY29kZU1vZGlmaWNhdGlvblNldC5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpCeXRl
Y29kZU1vZGlmaWNhdGlvblNldDo6YWRqdXN0T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNv
ZGVNb2RpZmljYXRpb25TZXQ6OmFwcGx5TW9kaWZpY2F0aW9uKToKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVNb2RpZmljYXRpb25TZXQ6OmV4ZWN1dGUpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVj
b2RlTW9kaWZpY2F0aW9uU2V0Lmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpCeXRlY29kZU1vZGlm
aWNhdGlvblNldDo6Qnl0ZWNvZGVNb2RpZmljYXRpb25TZXQpOgorICAgICAgICAoSlNDOjpCeXRl
Y29kZU1vZGlmaWNhdGlvblNldDo6aW5zZXJ0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVNb2Rp
ZmljYXRpb25TZXQ6OnJlbW92ZUJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVNb2Rp
ZmljYXRpb25TZXQ6OmdyYXBoKToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZVVzZURlZi5o
OgorICAgICAgICAoSlNDOjpjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAg
KEpTQzo6Y29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgICogYnl0ZWNvZGUv
Q29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbik6
CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6aGFuZGxlckZvckluZGV4KToKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjp2YWx1ZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChK
U0M6OkNvZGVCbG9jazo6bGl2ZW5lc3NBbmFseXNpc1Nsb3cpOgorICAgICAgICAoSlNDOjpDb2Rl
QmxvY2s6OmR1bXBCeXRlY29kZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6
c2hyaW5rVG9GaXQpOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5oOgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmlzQ29uc3RhbnRSZWdpc3RlckluZGV4KToKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjpsaXZlbmVzc0FuYWx5c2lzKToKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjpsaXZlQ2FsbGVlTG9jYWxzQXRZaWVsZCk6IERlbGV0ZWQuCisgICAgICAgICogYnl0
ZWNvZGUvSGFuZGxlckluZm8uaDoKKyAgICAgICAgKEpTQzo6SGFuZGxlckluZm9CYXNlOjpoYW5k
bGVyRm9ySW5kZXgpOgorICAgICAgICAqIGJ5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5jcHA6
CisgICAgICAgIChKU0M6OmdldEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAg
ICAoSlNDOjpjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzSW50ZXJuYWwpOgorICAgICAgICAoSlND
Ojpjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKToKKyAgICAgICAgKEpTQzo6cmVjb21wdXRlUHJl
Y2lzZUp1bXBUYXJnZXRzKToKKyAgICAgICAgKEpTQzo6ZmluZEp1bXBUYXJnZXRzRm9yQnl0ZWNv
ZGVPZmZzZXQpOgorICAgICAgICAqIGJ5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5oOgorICAg
ICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6VW5s
aW5rZWRDb2RlQmxvY2s6OmhhbmRsZXJGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6
OlVubGlua2VkQ29kZUJsb2NrOjpoYW5kbGVyRm9ySW5kZXgpOgorICAgICAgICAoSlNDOjpVbmxp
bmtlZENvZGVCbG9jazo6YXBwbHlNb2RpZmljYXRpb24pOgorICAgICAgICAqIGJ5dGVjb2RlL1Vu
bGlua2VkQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6OlVubGlua2VkU3RyaW5nSnVtcFRhYmxl
OjpvZmZzZXRGb3JWYWx1ZSk6CisgICAgICAgICogYnl0ZWNvZGUvVmlydHVhbFJlZ2lzdGVyLmg6
CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNv
ZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXRDb21wbGV4UG9wU2NvcGVzKToKKyAgICAgICAgKEpTQzo6cHJlcGFyZUp1
bXBUYWJsZUZvclN0cmluZ1N3aXRjaCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0WWllbGRQb2ludCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
U2F2ZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzdW1lKToKKyAg
ICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRvclN0YXRlUmVnaXN0ZXIpOgorICAgICAgICAoSlND
OjpCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdG9yVmFsdWVSZWdpc3Rlcik6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0b3JSZXN1bWVNb2RlUmVnaXN0ZXIpOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdG9yRnJhbWVSZWdpc3Rlcik6Cisg
ICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGdlbmVyYXRlLWJ5dGVj
b2RlLWZpbGVzOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAg
ICAgKEpTQzo6ZmluZEV4Y2VwdGlvbkhhbmRsZXIpOgorICAgICAgICAoSlNDOjpHZXRDYXRjaEhh
bmRsZXJGdW5jdG9yOjpvcGVyYXRvcigpKToKKyAgICAgICAgKEpTQzo6VW53aW5kRnVuY3Rvcjo6
b3BlcmF0b3IoKSk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaDoKKyAgICAg
ICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlcklubGluZXMuaDogQ29waWVkIGZyb20gU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5oLgorICAgICAgICAo
SlNDOjpJbnRlcnByZXRlcjo6Z2V0T3Bjb2RlSUQpOgorICAgICAgICAqIGppdC9KSVQuY3BwOgor
ICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MpOiBEZWxldGVkLgorICAg
ICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUT3Bjb2Rlcy5jcHA6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdF9vcF9zYXZlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0X29wX3Jlc3VtZSk6IERlbGV0ZWQuCisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlci5hc206CisgICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6CisgICAgICAgIChKU0M6OlBh
cnNlcjxMZXhlclR5cGU+OjpwYXJzZUlubmVyKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVy
VHlwZT46OnBhcnNlR2VuZXJhdG9yRnVuY3Rpb25Tb3VyY2VFbGVtZW50cyk6CisgICAgICAgIChK
U0M6OlBhcnNlcjxMZXhlclR5cGU+OjpjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKToKKyAgICAg
ICAgKiBwYXJzZXIvUGFyc2VyLmg6CisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMu
Y3BwOgorICAgICAgICAoSlNDOjpTTE9XX1BBVEhfREVDTCk6IERlbGV0ZWQuCisgICAgICAgICog
cnVudGltZS9Db21tb25TbG93UGF0aHMuaDoKKyAgICAgICAgKiBydW50aW1lL0dlbmVyYXRvckZy
YW1lLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OkdlbmVyYXRv
ckZyYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OmZpbmlzaENy
ZWF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OmNyZWF0ZVN0
cnVjdHVyZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpjcmVhdGUp
OiBEZWxldGVkLgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6c2F2ZSk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpyZXN1bWUpOiBEZWxldGVkLgorICAgICAg
ICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6dmlzaXRDaGlsZHJlbik6IERlbGV0ZWQuCisgICAgICAg
ICogcnVudGltZS9HZW5lcmF0b3JGcmFtZS5oOiBSZW1vdmVkLgorICAgICAgICAoSlNDOjpHZW5l
cmF0b3JGcmFtZTo6bG9jYWxzKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJh
bWU6OmxvY2FsQXQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6b2Zm
c2V0T2ZMb2NhbHMpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6YWxs
b2NhdGlvblNpemVGb3JMb2NhbHMpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNHZW5l
cmF0b3JGdW5jdGlvbi5oOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlND
OjpWTTo6Vk0pOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKyAgICAgICAgKiB0
ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwtYW5kLWFycmF5LmpzOiBBZGRlZC4KKyAgICAg
ICAgKGZpYik6CisgICAgICAgICogdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLWFuZC1v
YmplY3QuanM6IEFkZGVkLgorICAgICAgICAoZmliKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3Mv
Z2VuZXJhdG9yLWZpYi1mdGwtYW5kLXN0cmluZy5qczogQWRkZWQuCisgICAgICAgIChmaWIpOgor
ICAgICAgICAqIHRlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC5qczogQWRkZWQuCisgICAg
ICAgIChmaWIpOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZnJhbWUtZW1wdHku
anM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkVGhyb3cpOgorICAgICAgICAoc2hvdWxkVGhyb3cu
ZmliKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXJlZHVjZWQtc2F2ZS1wb2lu
dC1wdXQtdG8tc2NvcGUuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAo
Z2VuKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXRyYW5zZmVyLXJlZ2lzdGVy
LWJleW9uZC1tdXRpcGxlLXlpZWxkcy5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6Cisg
ICAgICAgIChnZW4pOgorCiAyMDE2LTA3LTI0ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxl
LmNvbT4KIAogICAgICAgICBbRmV0Y2ggQVBJXSBSZXF1ZXN0IHNob3VsZCBiZSBjcmVhdGVkIHdp
dGggYW55IEhlYWRlcnNJbml0IGRhdGEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9n
IGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggYTM0YTVhYzRiNjFlZDk2NjUxYWZiZGNiOTAx
MzdiNjk0MzE2MTU1Ni4uYjU1M2U1YTIxZDI2YjhiMmQ0YzY0ZmZiNjEzNWMyYzBjYWNhMGQyNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNSBAQAorMjAxNi0wNy0yNSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUu
dGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbREZHXVtGVExdIEltcGxlbWVudCBFUzYgR2VuZXJh
dG9ycyBpbiBERkcgLyBGVEwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE1MjcyMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEFkZCBtb3ZlIGNvbnN0cnVjdG9yIGZvciBGYXN0Qml0VmVjdG9yLgorCisgICAg
ICAgICogd3RmL0Zhc3RCaXRWZWN0b3IuaDoKKyAgICAgICAgKFdURjo6RmFzdEJpdFZlY3Rvcjo6
RmFzdEJpdFZlY3Rvcik6CisKIDIwMTYtMDctMjQgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxl
LmNvbT4KIAogICAgICAgICBCMyBzaG91bGQgc3VwcG9ydCBtdWx0aXBsZSBlbnRyeXBvaW50cwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IGY4ZjIzMDk3YmE5Y2Q3MzhkNzQz
M2YzNmQ2MWRjODgyY2RkZWY4YmMuLjM2MjRhYTE0ZTBmZDZkZDVjZTIxMjMyYWRlYjdmNzgwZWJh
NGU4NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTE4MSw2ICsxODEs
OCBAQCBzZXQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIGJ5dGVjb2RlL0FycmF5QWxsb2Nh
dGlvblByb2ZpbGUuY3BwCiAgICAgYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmNwcAogICAgIGJ5dGVj
b2RlL0J5dGVjb2RlQmFzaWNCbG9jay5jcHAKKyAgICBieXRlY29kZS9CeXRlY29kZUdlbmVyYXRv
cmlmaWNhdGlvbi5jcHAKKyAgICBieXRlY29kZS9CeXRlY29kZU1vZGlmaWNhdGlvblNldC5jcHAK
ICAgICBieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5LmNwcAogICAgIGJ5dGVjb2Rl
L0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAKICAgICBieXRlY29kZS9DYWxsRWRnZS5jcHAK
QEAgLTY2MSw3ICs2NjMsNiBAQCBzZXQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIHJ1bnRp
bWUvRnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlLmNwcAogICAgIHJ1bnRpbWUvRnVuY3Rpb25Qcm90
b3R5cGUuY3BwCiAgICAgcnVudGltZS9GdW5jdGlvblJhcmVEYXRhLmNwcAotICAgIHJ1bnRpbWUv
R2VuZXJhdG9yRnJhbWUuY3BwCiAgICAgcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVj
dG9yLmNwcAogICAgIHJ1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3BwCiAgICAg
cnVudGltZS9HZW5lcmF0b3JQcm90b3R5cGUuY3BwCkBAIC05NzYsNiArOTc3LDEwIEBAIGFkZF9j
dXN0b21fY29tbWFuZCgKICAgICBDT01NQU5EICR7UFlUSE9OX0VYRUNVVEFCTEV9ICR7SkFWQVND
UklQVENPUkVfRElSfS9nZW5lcmF0ZS1ieXRlY29kZS1maWxlcyAtLWJ5dGVjb2Rlc19oICR7REVS
SVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vQnl0ZWNvZGVzLmggLS1pbml0X2J5dGVj
b2Rlc19hc20gJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9Jbml0Qnl0ZWNv
ZGVzLmFzbSAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24K
ICAgICBWRVJCQVRJTSkKIAorbGlzdChBUFBFTkQgSmF2YVNjcmlwdENvcmVfSEVBREVSUworICAg
ICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vQnl0ZWNvZGVzLmgKKykKKwog
YWRkX2N1c3RvbV9jb21tYW5kKAogICAgIE9VVFBVVCAke0RFUklWRURfU09VUkNFU19KQVZBU0NS
SVBUQ09SRV9ESVJ9L0xMSW50RGVzaXJlZE9mZnNldHMuaAogICAgIE1BSU5fREVQRU5ERU5DWSAk
e0pBVkFTQ1JJUFRDT1JFX0RJUn0vb2ZmbGluZWFzbS9nZW5lcmF0ZV9vZmZzZXRfZXh0cmFjdG9y
LnJiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGMzMWIzOTc4MWM2NDNlM2Y5NzQw
OWU3OGJiZDFhMmFjM2JmN2U2MGMuLmEyZGU1NjY4YmVjM2IxYTc0YmEyOTVmYjExNTgwZmE3MWNj
MGFkNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMjU2LDggKzEyNTYsNiBA
QAogCQk3MDlGQjg2QzFBRTMzNUM2MDAzOUQwNjkgLyogV2Vha1NldFByb3RvdHlwZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzA5RkI4NjYxQUUzMzVD
NjAwMzlEMDY5IC8qIFdlYWtTZXRQcm90b3R5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MEIwQTlEMTFBOUI2NjQ2MDAwMTMwNkEgLyogUnVu
dGltZUZsYWdzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3MEIwQTlEMDFBOUI2NjIwMDAwMTMwNkEgLyogUnVudGltZUZsYWdzLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzBCNzkxOTExQzAyNEExMzAw
MjQ4MUUyIC8qIFNvdXJjZUNvZGVLZXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDcwQjc5MThFMUMwMjQ0QzkwMDI0ODFFMiAvKiBTb3VyY2VDb2RlS2V5
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNzBC
NzkxOTIxQzAyNEEyMzAwMjQ4MUUyIC8qIEdlbmVyYXRvckZyYW1lLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwQjc5MTgzMUMwMjQ0MzIwMDI0ODFF
MiAvKiBHZW5lcmF0b3JGcmFtZS5jcHAgKi87IH07Ci0JCTcwQjc5MTkzMUMwMjRBMjgwMDI0ODFF
MiAvKiBHZW5lcmF0b3JGcmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNzBCNzkxODQxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZyYW1lLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzBCNzkx
OTQxQzAyNEEyODAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBCNzkxODUxQzAy
NDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwICovOyB9Owog
CQk3MEI3OTE5NTFDMDI0QTI4MDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rv
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBCNzkx
ODYxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MEI3OTE5NjFD
MDI0QTI4MDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBCNzkxODcxQzAyNDQzMjAw
MjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcCAqLzsgfTsKQEAgLTIwMzgs
NiArMjAzNiwxMSBAQAogCQlFMThFM0E1OTBERjkyNzhDMDBEOTBCMzQgLyogVk0uY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTE4RTNBNTcwREY5Mjc4
QzAwRDkwQjM0IC8qIFZNLmNwcCAqLzsgfTsKIAkJRTMxOENCQzAxQjhBRUY1MTAwQTI5MjlEIC8q
IEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEUzMThDQkJFMUI4QUVGNTEwMEEyOTI5RCAvKiBKU01vZHVsZU5h
bWVzcGFjZU9iamVjdC5jcHAgKi87IH07CiAJCUUzMThDQkMxMUI4QUVGNTEwMEEyOTI5RCAvKiBK
U01vZHVsZU5hbWVzcGFjZU9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTMxOENCQkYxQjhBRUY1MTAwQTI5MjlEIC8qIEpTTW9kdWxlTmFtZXNw
YWNlT2JqZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJRTMyOERBRTcxRDM4RDAwNDAwMUEyNTI5IC8qIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0
aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUz
RDI2NDI2MUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHAg
Ki87IH07CisJCUUzMjhEQUU4MUQzOEQwMDUwMDFBMjUyOSAvKiBCeXRlY29kZUdlbmVyYXRvcmlm
aWNhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTNEMjY0MjcxRDM4QzA0MjAwMEJFMTc0IC8qIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTMyOERB
RTkxRDM4RDAwNTAwMUEyNTI5IC8qIEJ5dGVjb2RlR3JhcGguaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzRDI2NDI4MUQzOEMwNDIwMDBCRTE3NCAvKiBC
eXRlY29kZUdyYXBoLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJRTMyOERBRUExRDM4RDAwNTAwMUEyNTI5IC8qIEJ5dGVjb2RlTW9kaWZpY2F0aW9u
U2V0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUz
RDI2NDI5MUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRlY29kZU1vZGlmaWNhdGlvblNldC5jcHAgKi87
IH07CisJCUUzMjhEQUVCMUQzOEQwMDUwMDFBMjUyOSAvKiBCeXRlY29kZU1vZGlmaWNhdGlvblNl
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNEMjY0
MkExRDM4QzA0MjAwMEJFMTc0IC8qIEJ5dGVjb2RlTW9kaWZpY2F0aW9uU2V0LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTMzNjM3QTUxQjYzMjIw
MjAwRUUwODQwIC8qIFJlZmxlY3RPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTMzNjM3QTMxQjYzMjIwMjAwRUUwODQwIC8qIFJlZmxlY3RP
YmplY3QuY3BwICovOyB9OwogCQlFMzM2MzdBNjFCNjMyMjAyMDBFRTA4NDAgLyogUmVmbGVjdE9i
amVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMz
NjM3QTQxQjYzMjIwMjAwRUUwODQwIC8qIFJlZmxlY3RPYmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzNCM0UyNjFCN0FCRDc1MDA0OERC
MkUgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0Lmx1dC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMzQjNFMjUxQjdBQkQ3NTAwNDhEQjJF
IC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5sdXQuaCAqLzsgfTsKQEAgLTIwNjIs
NiArMjA2NSw3IEBACiAJCUUzNzk0RTc1MUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFseXpl
ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzc5
NEU3MzFCNzdFQjk3MDA1NTQzQUUgLyogTW9kdWxlQW5hbHl6ZXIuY3BwICovOyB9OwogCQlFMzc5
NEU3NjFCNzdFQjk3MDA1NTQzQUUgLyogTW9kdWxlQW5hbHl6ZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNzk0RTc0MUI3N0VCOTcwMDU1NDNBRSAv
KiBNb2R1bGVBbmFseXplci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUUzOTYzQ0VFMUI3M0Y3NTAwMEVCNENFNSAvKiBOb2Rlc0FuYWx5emVNb2R1
bGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5
NjNDRUMxQjczRjc1MDAwRUI0Q0U1IC8qIE5vZGVzQW5hbHl6ZU1vZHVsZS5jcHAgKi87IH07CisJ
CUUzOUQ0NUY1MUQzOTAwNTYwMEIzQjM3NyAvKiBJbnRlcnByZXRlcklubGluZXMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOUQ5RDg0MUQzOTAwMDYw
MDY2NzI4MiAvKiBJbnRlcnByZXRlcklubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzlEQTRBNjFCN0U4QjdDMDA4NEYzM0EgLyogSlNN
b2R1bGVSZWNvcmQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTM5REE0QTQxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmNwcCAqLzsg
fTsKIAkJRTM5REE0QTcxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzlEQTRBNTFCN0U4QjdD
MDA4NEYzM0EgLyogSlNNb2R1bGVSZWNvcmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlFM0QyMzlDODFCODI5QzFDMDBCQkVGNjcgLyogSlNNb2R1
bGVFbnZpcm9ubWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFM0QyMzlDNjFCODI5QzFDMDBCQkVGNjcgLyogSlNNb2R1bGVFbnZpcm9ubWVudC5j
cHAgKi87IH07CkBAIC0zNDY1LDggKzM0NjksNiBAQAogCQk3MDlGQjg2NTFBRTMzNUM2MDAzOUQw
NjkgLyogV2Vha1NldFByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBXZWFrU2V0UHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNzA5RkI4NjYxQUUzMzVDNjAwMzlEMDY5IC8qIFdlYWtTZXRQcm90b3R5cGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vha1NldFByb3RvdHlwZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3MEIwQTlEMDFBOUI2NjIwMDAwMTMwNkEgLyogUnVudGltZUZs
YWdzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJ1bnRpbWVGbGFncy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3MEI3OTE4MzFDMDI0NDMyMDAyNDgxRTIgLyog
R2VuZXJhdG9yRnJhbWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
R2VuZXJhdG9yRnJhbWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3MEI3OTE4
NDFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnJhbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gR2VuZXJhdG9yRnJhbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNzBCNzkxODUxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3Ry
dWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR2VuZXJhdG9y
RnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcw
Qjc5MTg2MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdlbmVyYXRvckZ1bmN0aW9uQ29uc3Ry
dWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzBCNzkxODcxQzAyNDQzMjAw
MjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQzMTQsMTAgKzQzMTYsMTYgQEAKIAkJRTM3OTRF
NzMxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1vZHVsZUFuYWx5emVyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRTM3OTRFNzQxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vZHVsZUFuYWx5emVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOTYzQ0VDMUI3M0Y3NTAwMEVCNENFNSAvKiBO
b2Rlc0FuYWx5emVNb2R1bGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gTm9kZXNBbmFseXplTW9kdWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
RTM5RDlEODQxRDM5MDAwNjAwNjY3MjgyIC8qIEludGVycHJldGVySW5saW5lcy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRlcnByZXRlcklubGluZXMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM5REE0QTQxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxl
UmVjb3JkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTW9kdWxl
UmVjb3JkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM5REE0QTUxQjdFOEI3
QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEpTTW9kdWxlUmVjb3JkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUz
RDIzOUM2MUI4MjlDMUMwMEJCRUY2NyAvKiBKU01vZHVsZUVudmlyb25tZW50LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTW9kdWxlRW52aXJvbm1lbnQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0QyMzlDNzFCODI5QzFDMDBCQkVGNjcgLyog
SlNNb2R1bGVFbnZpcm9ubWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBK
U01vZHVsZUVudmlyb25tZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzRDI2
NDI2MUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCeXRlY29kZUdlbmVyYXRvcmlmaWNh
dGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzRDI2NDI3MUQzOEMwNDIw
MDBCRTE3NCAvKiBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlFM0QyNjQyODFEMzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNvZGVH
cmFwaC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCeXRlY29kZUdyYXBoLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzRDI2NDI5MUQzOEMwNDIwMDBCRTE3NCAv
KiBCeXRlY29kZU1vZGlmaWNhdGlvblNldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBCeXRlY29kZU1vZGlmaWNhdGlvblNldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUUzRDI2NDJBMUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRlY29kZU1vZGlmaWNh
dGlvblNldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCeXRlY29kZU1vZGlm
aWNhdGlvblNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0VGODg3MjFCNjZE
RjIzMDAzRjI2Q0IgLyogSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNFRjg4NzMxQjY2REYyMzAwM0YyNkNCIC8qIEpTUHJv
cGVydHlOYW1lSXRlcmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNQ
cm9wZXJ0eU5hbWVJdGVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNDlE
QzE0OTEyRUYyNjFBMDAxODRBMUYgLyogU291cmNlUHJvdmlkZXJDYWNoZUl0ZW0uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU291cmNlUHJvdmlkZXJDYWNoZUl0ZW0uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUwMzUsNiArNTA0Myw3IEBACiAJCTE0MjlENzdB
MEVEMjBENzMwMEI4OTYxOSAvKiBpbnRlcnByZXRlciAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3Vw
OwogCQkJY2hpbGRyZW4gPSAoCisJCQkJRTM5RDlEODQxRDM5MDAwNjAwNjY3MjgyIC8qIEludGVy
cHJldGVySW5saW5lcy5oICovLAogCQkJCTBGNTVGMEYxMTREMTA2MzYwMEFDNzY0OSAvKiBBYnN0
cmFjdFBDLmNwcCAqLywKIAkJCQkwRjU1RjBGMjE0RDEwNjM2MDBBQzc2NDkgLyogQWJzdHJhY3RQ
Qy5oICovLAogCQkJCTE0MjlEODVCMEVEMjE4RTkwMEI4OTYxOSAvKiBDTG9vcFN0YWNrLmNwcCAq
LywKQEAgLTU3MTMsOCArNTcyMiw2IEBACiAJCQkJRjY5MkE4NUQwMjU1NTk3RDAxRkY2MEY3IC8q
IEZ1bmN0aW9uUHJvdG90eXBlLmggKi8sCiAJCQkJNjJEMkQzOEQxQURGMTAzRjAwMDIwNkMxIC8q
IEZ1bmN0aW9uUmFyZURhdGEuY3BwICovLAogCQkJCTYyRDJEMzhFMUFERjEwM0YwMDAyMDZDMSAv
KiBGdW5jdGlvblJhcmVEYXRhLmggKi8sCi0JCQkJNzBCNzkxODMxQzAyNDQzMjAwMjQ4MUUyIC8q
IEdlbmVyYXRvckZyYW1lLmNwcCAqLywKLQkJCQk3MEI3OTE4NDFDMDI0NDMyMDAyNDgxRTIgLyog
R2VuZXJhdG9yRnJhbWUuaCAqLywKIAkJCQk3MEI3OTE4NTFDMDI0NDMyMDAyNDgxRTIgLyogR2Vu
ZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAgKi8sCiAJCQkJNzBCNzkxODYxQzAyNDQzMjAw
MjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaCAqLywKIAkJCQk3MEI3OTE4
NzFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3BwICovLApA
QCAtNjU5Niw2ICs2NjAzLDExIEBACiAJCTk2OUEwNzhGMEVEMUQzQUUwMEYxRjY4MSAvKiBieXRl
Y29kZSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJRTNE
MjY0MjYxRDM4QzA0MjAwMEJFMTc0IC8qIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcCAq
LywKKwkJCQlFM0QyNjQyNzFEMzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNvZGVHZW5lcmF0b3JpZmlj
YXRpb24uaCAqLywKKwkJCQlFM0QyNjQyODFEMzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNvZGVHcmFw
aC5oICovLAorCQkJCUUzRDI2NDI5MUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRlY29kZU1vZGlmaWNh
dGlvblNldC5jcHAgKi8sCisJCQkJRTNEMjY0MkExRDM4QzA0MjAwMEJFMTc0IC8qIEJ5dGVjb2Rl
TW9kaWZpY2F0aW9uU2V0LmggKi8sCiAJCQkJNTM3MEI0RjMxQkYyNUVBMjAwNUM0MEZDIC8qIEFk
YXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2UuY3BwICovLAogCQkJCTUz
NzBCNEY0MUJGMjVFQTIwMDVDNDBGQyAvKiBBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdh
dGNocG9pbnRCYXNlLmggKi8sCiAJCQkJMEY4MzM1QjQxNjM5QzFFMzAwMTQ0M0I1IC8qIEFycmF5
QWxsb2NhdGlvblByb2ZpbGUuY3BwICovLApAQCAtNzE1Myw2ICs3MTY1LDcgQEAKIAkJCQkwRkVD
ODUyRDFCREFDREFDMDA4MEZGNzQgLyogQjNQcm9jZWR1cmVJbmxpbmVzLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRkVDODVCRDFCRTE0NjJGMDA4MEZGNzQgLyogQjNSZWR1Y2VTdHJlbmd0aC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEZFQzg1MzExQkRBQ0RBQzAwODBGRjc0IC8qIEIzU3RhY2ttYXBT
cGVjaWFsLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzI4REFFODFEMzhEMDA1MDAxQTI1MjkgLyog
Qnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUM4NTM1
MUJEQUNEQUMwMDgwRkY3NCAvKiBCM1Nsb3RCYXNlVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGRUM4NTM2MUJEQUNEQUMwMDgwRkY3NCAvKiBCM1N1Y2Nlc3NvckNvbGxlY3Rpb24uaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGRUM4NTM4MUJEQUNEQUMwMDgwRkY3NCAvKiBCM1N3aXRjaENhc2Uu
aCBpbiBIZWFkZXJzICovLApAQCAtNzQxNSw3ICs3NDI4LDYgQEAKIAkJCQlBNzM3ODEwRTE3OTlF
QTJFMDA4MTc1MzMgLyogREZHTmF0dXJhbExvb3BzLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkVD
QTNFQTEzMkRFRjFDMDAyQjJBRDcgLyogREZHTm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZG
QjkyMUIxNkQwMkYwMTAwNTVBNURCIC8qIERGR05vZGVBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICov
LAotCQkJCTcwQjc5MTkzMUMwMjRBMjgwMDI0ODFFMiAvKiBHZW5lcmF0b3JGcmFtZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEZBNTgxQkIxNTBFOTUzMDAwQjlBMkQ5IC8qIERGR05vZGVGbGFncy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEYzMDBCNzgxOEFCMDUxMTAwQTZENzJFIC8qIERGR05vZGVP
cmlnaW4uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQTU4MUJDMTUwRTk1MzAwMEI5QTJEOSAvKiBE
RkdOb2RlVHlwZS5oIGluIEhlYWRlcnMgKi8sCkBAIC03NDMwLDYgKzc0NDIsNyBAQAogCQkJCTBG
RDhBMzI2MTdENTFGNTcwMENBMkM0MCAvKiBERkdPU1JFbnRyeXBvaW50Q3JlYXRpb25QaGFzZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDMDk3NkExNDY4QTZGNzAwQ0YyNDQyIC8qIERGR09TUkV4
aXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjM1QkVDMTcxNzhFNzMwMDY5MEM3RiAvKiBERkdP
U1JFeGl0QmFzZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM5RDQ1RjUxRDM5MDA1NjAwQjNCMzc3
IC8qIEludGVycHJldGVySW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGQjkyMUMxNkQw
MkYxMTAwNTVBNURCIC8qIERGR09TUkV4aXRDb21waWxhdGlvbkluZm8uaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGQzA5NzcxMTQ2OTNBRjUwMENGMjQ0MiAvKiBERkdPU1JFeGl0Q29tcGlsZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGNzAyNUFBMTcxNEIwRkMwMDM4MkMwRSAvKiBERkdPU1JFeGl0
Q29tcGlsZXJDb21tb24uaCBpbiBIZWFkZXJzICovLApAQCAtNzY5MCw2ICs3NzAzLDcgQEAKIAkJ
CQlFMzNCM0UyNjFCN0FCRDc1MDA0OERCMkUgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2Jq
ZWN0Lmx1dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTUzMjQzOEMxODU2ODMzNTAwMkVENjkyIC8q
IEluc3BlY3RvclByb3RvY29sT2JqZWN0cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU1RDkzQUMx
ODUxNEY3OTAwNDAwREVEIC8qIEluc3BlY3RvclByb3RvY29sVHlwZXMuaCBpbiBIZWFkZXJzICov
LAorCQkJCUUzMjhEQUVCMUQzOEQwMDUwMDFBMjUyOSAvKiBCeXRlY29kZU1vZGlmaWNhdGlvblNl
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTUwRTRCNjIxODgwOURENTAwNjhBNDZEIC8qIEluc3Bl
Y3RvclJ1bnRpbWVBZ2VudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU5M0NGODMxODQwMzc3MTAw
QkZDRTI3IC8qIEluc3BlY3RvclZhbHVlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTY5QTA3OTkw
RUQxRDNBRTAwRjFGNjgxIC8qIEluc3RydWN0aW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTc4MjAs
NiArNzgzNCw3IEBACiAJCQkJRTMzRjUwODExQjg0MjlBNDAwNDEzODU2IC8qIEpTSW50ZXJuYWxQ
cm9taXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjYxODMyQTFDNDVCRjA3MDA3MjQ1MEIgLyog
QWlyQ0NhbGxpbmdDb252ZW50aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMzNGNTA3OTFCODQy
MjU3MDA0MTM4NTYgLyogSlNJbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJRTMyOERBRTkxRDM4RDAwNTAwMUEyNTI5IC8qIEJ5dGVjb2RlR3JhcGguaCBpbiBI
ZWFkZXJzICovLAogCQkJCUUzM0Y1MDg3MUI4NDQ5RUYwMDQxMzg1NiAvKiBKU0ludGVybmFsUHJv
bWlzZUNvbnN0cnVjdG9yLmx1dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTMzRjUwODUxQjg0MzdB
MDAwNDEzODU2IC8qIEpTSW50ZXJuYWxQcm9taXNlRGVmZXJyZWQuaCBpbiBIZWFkZXJzICovLAog
CQkJCUUzM0Y1MDc1MUI4NDIxQzAwMDQxMzg1NiAvKiBKU0ludGVybmFsUHJvbWlzZVByb3RvdHlw
ZS5oIGluIEhlYWRlcnMgKi8sCkBAIC04NzYzLDYgKzg3NzgsNyBAQAogCQkJCTE0N0YzOUJEMTA3
RUMzNzYwMDQyN0E0OCAvKiBBcmdMaXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNzQzQkFB
MTZCODgyNDkwMDlGOTI3NyAvKiBBUk02NERpc2Fzc2VtYmxlci5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk4NkQzQjJDMzEwMTU2QkRFMDAyODY1RTcgLyogQVJNQXNzZW1ibGVyLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCUUzMjhEQUU3MUQzOEQwMDQwMDFBMjUyOSAvKiBCeXRlY29kZUdlbmVyYXRv
cmlmaWNhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2NUMwMjg1MDE3MTc5NUUyMDAzNTFF
MzUgLyogQVJNdjdEaXNhc3NlbWJsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNjVDMDI4NUMx
NzE3OTY2ODAwMzUxRTM1IC8qIEFSTXY3RE9wY29kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkw
RjgzMzVCNzE2MzlDMUU2MDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAgaW4g
U291cmNlcyAqLywKQEAgLTkwOTcsNiArOTExMyw3IEBACiAJCQkJMEYyNUYxQjExODE2MzVGMzAw
NTIyRjM5IC8qIEZUTFNsb3dQYXRoQ2FsbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjMzOERG
MTFCRTkzQUQxMDAxM0M4OEYgLyogQjNTdGFja21hcFZhbHVlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTBGMjVGMUIzMTgxNjM1RjMwMDUyMkYzOSAvKiBGVExTbG93UGF0aENhbGxLZXkuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJRTMyOERBRUExRDM4RDAwNTAwMUEyNTI5IC8qIEJ5dGVjb2RlTW9k
aWZpY2F0aW9uU2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQzMTlEQTAzMUMxQkU0MEEwMDFE
MjYwQiAvKiBCM0xvd2VyTWFjcm9zQWZ0ZXJPcHRpbWl6YXRpb25zLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGRUEwQTE2MTcwNkJCOTAwMEJCNzIyQyAvKiBGVExTdGF0ZS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkwRjIzNUJFMTE3MTc4RTFDMDA2OTBDN0YgLyogRlRMVGh1bmtzLmNwcCBpbiBT
b3VyY2VzICovLApAQCAtOTUwNCw3ICs5NTIxLDYgQEAKIAkJCQk3OUVFMEJGRjFCNEFGQjg1MDAw
Mzg1QzkgLyogVmFyaWFibGVFbnZpcm9ubWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjZD
NzM1MDFBQzlGOTlGMDBCRTE2ODIgLyogVmFyaWFibGVXcml0ZUZpcmVEZXRhaWwuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEZFMDUwMkMxQUE5MDk1NjAwRDMzQjMzIC8qIFZhck9mZnNldC5jcHAg
aW4gU291cmNlcyAqLywKLQkJCQk3MEI3OTE5MjFDMDI0QTIzMDAyNDgxRTIgLyogR2VuZXJhdG9y
RnJhbWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyMEMyNTkxQTgwMTNBQjAwREEzMjI5IC8q
IFZpcnR1YWxSZWdpc3Rlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMThFM0E1OTBERjkyNzhD
MDBEOTBCMzQgLyogVk0uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkU1OTMyQTcxODNDNUEyNjAw
QTFFQ0NDIC8qIFZNRW50cnlTY29wZS5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9HZW5lcmF0b3JQcm90b3R5cGUuanMgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvR2VuZXJhdG9yUHJvdG90eXBlLmpzCmluZGV4IDNj
MTQwNjg3ZGZjN2UwMGVmZTkxYWU4MGIyYWM2NzZmYTliZjQ4ZjQuLjQ5OWRiZDM5MmU4MzEzZGNk
ZDg2ZWM4YzE2MDU2OWQ3ZDZmNTQ5YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9idWlsdGlucy9HZW5lcmF0b3JQcm90b3R5cGUuanMKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J1aWx0aW5zL0dlbmVyYXRvclByb3RvdHlwZS5qcwpAQCAtNTEsNyArNTEsNyBAQCBmdW5j
dGlvbiBnZW5lcmF0b3JSZXN1bWUoZ2VuZXJhdG9yLCBzZW50VmFsdWUsIHJlc3VtZU1vZGUpCiAg
ICAgfSBlbHNlIHsKICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgIGdlbmVyYXRvci5AZ2VuZXJh
dG9yU3RhdGUgPSBAR2VuZXJhdG9yU3RhdGVFeGVjdXRpbmc7Ci0gICAgICAgICAgICB2YWx1ZSA9
IGdlbmVyYXRvci5AZ2VuZXJhdG9yTmV4dC5AY2FsbChnZW5lcmF0b3IuQGdlbmVyYXRvclRoaXMs
IGdlbmVyYXRvciwgc3RhdGUsIHNlbnRWYWx1ZSwgcmVzdW1lTW9kZSk7CisgICAgICAgICAgICB2
YWx1ZSA9IGdlbmVyYXRvci5AZ2VuZXJhdG9yTmV4dC5AY2FsbChnZW5lcmF0b3IuQGdlbmVyYXRv
clRoaXMsIGdlbmVyYXRvciwgc3RhdGUsIHNlbnRWYWx1ZSwgcmVzdW1lTW9kZSwgZ2VuZXJhdG9y
LkBnZW5lcmF0b3JGcmFtZSk7CiAgICAgICAgICAgICBpZiAoZ2VuZXJhdG9yLkBnZW5lcmF0b3JT
dGF0ZSA9PT0gQEdlbmVyYXRvclN0YXRlRXhlY3V0aW5nKSB7CiAgICAgICAgICAgICAgICAgZ2Vu
ZXJhdG9yLkBnZW5lcmF0b3JTdGF0ZSA9IEBHZW5lcmF0b3JTdGF0ZUNvbXBsZXRlZDsKICAgICAg
ICAgICAgICAgICBkb25lID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5jcHAKaW5kZXggN2YxN2MwZWYxMGI0MzNmYWM4
ZjU4Y2IzYjljYTVkNGQwMTViYmEwOC4uMjk5MDgyZGRkMWVjN2VjZmY3YTZjMTk4M2MxZWRhYmRl
NTNiY2MzZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVj
b2RlQmFzaWNCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlQmFzaWNCbG9jay5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJCeXRlY29k
ZUJhc2ljQmxvY2suaCIKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkludGVy
cHJldGVySW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJQcmVj
aXNlSnVtcFRhcmdldHMuaCIKIApAQCAtMTA1LDE1ICsxMDYsMjEgQEAgc3RhdGljIGJvb2wgaXNK
dW1wVGFyZ2V0KE9wY29kZUlEIG9wY29kZUlELCBjb25zdCBWZWN0b3I8dW5zaWduZWQsIDMyPiYg
anVtcFRhcmcKICAgICByZXR1cm4gc3RkOjpiaW5hcnlfc2VhcmNoKGp1bXBUYXJnZXRzLmJlZ2lu
KCksIGp1bXBUYXJnZXRzLmVuZCgpLCBieXRlY29kZU9mZnNldCk7CiB9CiAKLXN0YXRpYyB2b2lk
IGxpbmtCbG9ja3MoQnl0ZWNvZGVCYXNpY0Jsb2NrKiBwcmVkZWNlc3NvciwgQnl0ZWNvZGVCYXNp
Y0Jsb2NrKiBzdWNjZXNzb3IpCi17Ci0gICAgcHJlZGVjZXNzb3ItPmFkZFN1Y2Nlc3NvcihzdWNj
ZXNzb3IpOwotfQotCi12b2lkIGNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzKENvZGVCbG9jayog
Y29kZUJsb2NrLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+JiBi
YXNpY0Jsb2NrcykKK3RlbXBsYXRlPHR5cGVuYW1lIEJsb2NrLCB0eXBlbmFtZSBJbnN0cnVjdGlv
bj4KK3ZvaWQgQnl0ZWNvZGVCYXNpY0Jsb2NrOjpjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2Nrc0lu
dGVybmFsKEJsb2NrKiBjb2RlQmxvY2ssIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwg
dW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCwgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29k
ZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9ja3MpCiB7CiAgICAgVmVjdG9yPHVuc2lnbmVkLCAzMj4g
anVtcFRhcmdldHM7Ci0gICAgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhjb2RlQmxvY2ssIGp1
bXBUYXJnZXRzKTsKKyAgICBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKGNvZGVCbG9jaywgaW5z
dHJ1Y3Rpb25zQmVnaW4sIGluc3RydWN0aW9uQ291bnQsIGp1bXBUYXJnZXRzKTsKKworICAgIGF1
dG8gYXBwZW5kQmxvY2sgPSBbJl0gKHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+
JiYgYmxvY2spIHsKKyAgICAgICAgYmxvY2stPm1faW5kZXggPSBiYXNpY0Jsb2Nrcy5zaXplKCk7
CisgICAgICAgIGJhc2ljQmxvY2tzLmFwcGVuZChXVEZNb3ZlKGJsb2NrKSk7CisgICAgfTsKKwor
ICAgIGF1dG8gbGlua0Jsb2NrcyA9IFsmXSAoQnl0ZWNvZGVCYXNpY0Jsb2NrKiBmcm9tLCBCeXRl
Y29kZUJhc2ljQmxvY2sqIHRvKSB7CisgICAgICAgIGZyb20tPmFkZFN1Y2Nlc3Nvcih0byk7Cisg
ICAgICAgIHRvLT5hZGRQcmVkZWNlc3Nvcihmcm9tKTsKKyAgICB9OwogCiAgICAgLy8gQ3JlYXRl
IHRoZSBlbnRyeSBhbmQgZXhpdCBiYXNpYyBibG9ja3MuCiAgICAgYmFzaWNCbG9ja3MucmVzZXJ2
ZUNhcGFjaXR5KGp1bXBUYXJnZXRzLnNpemUoKSArIDIpOwpAQCAtMTIyLDE5ICsxMjksMTcgQEAg
dm9pZCBjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2NrcyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgVmVj
dG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXQKICAgICBhdXRvIGZpcnN0QmxvY2sgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEJ5dGVjb2RlQmFzaWNCbG9jaz4oMCwgMCk7CiAgICAgbGlua0Jsb2NrcyhlbnRyeS5n
ZXQoKSwgZmlyc3RCbG9jay5nZXQoKSk7CiAKLSAgICBiYXNpY0Jsb2Nrcy5hcHBlbmQoV1RGTW92
ZShlbnRyeSkpOworICAgIGFwcGVuZEJsb2NrKFdURk1vdmUoZW50cnkpKTsKICAgICBCeXRlY29k
ZUJhc2ljQmxvY2sqIGN1cnJlbnQgPSBmaXJzdEJsb2NrLmdldCgpOwotICAgIGJhc2ljQmxvY2tz
LmFwcGVuZChXVEZNb3ZlKGZpcnN0QmxvY2spKTsKKyAgICBhcHBlbmRCbG9jayhXVEZNb3ZlKGZp
cnN0QmxvY2spKTsKIAogICAgIGF1dG8gZXhpdCA9IHN0ZDo6bWFrZV91bmlxdWU8Qnl0ZWNvZGVC
YXNpY0Jsb2NrPihCeXRlY29kZUJhc2ljQmxvY2s6OkV4aXRCbG9jayk7CiAKICAgICBib29sIG5l
eHRJbnN0cnVjdGlvbklzTGVhZGVyID0gZmFsc2U7CiAKICAgICBJbnRlcnByZXRlciogaW50ZXJw
cmV0ZXIgPSBjb2RlQmxvY2stPnZtKCktPmludGVycHJldGVyOwotICAgIEluc3RydWN0aW9uKiBp
bnN0cnVjdGlvbnNCZWdpbiA9IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsKLSAg
ICB1bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50ID0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5z
aXplKCk7CiAgICAgZm9yICh1bnNpZ25lZCBieXRlY29kZU9mZnNldCA9IDA7IGJ5dGVjb2RlT2Zm
c2V0IDwgaW5zdHJ1Y3Rpb25Db3VudDspIHsKLSAgICAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBp
bnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25zQmVnaW5bYnl0ZWNvZGVPZmZzZXRd
LnUub3Bjb2RlKTsKKyAgICAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnRlcnByZXRlci0+Z2V0
T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25zQmVnaW5bYnl0ZWNvZGVPZmZzZXRdKTsKICAgICAgICAgdW5z
aWduZWQgb3Bjb2RlTGVuZ3RoID0gb3Bjb2RlTGVuZ3Roc1tvcGNvZGVJRF07CiAKICAgICAgICAg
Ym9vbCBjcmVhdGVkQmxvY2sgPSBmYWxzZTsKQEAgLTE0Miw3ICsxNDcsNyBAQCB2b2lkIGNvbXB1
dGVCeXRlY29kZUJhc2ljQmxvY2tzKENvZGVCbG9jayogY29kZUJsb2NrLCBWZWN0b3I8c3RkOjp1
bmlxdWVfcHRyPEJ5dAogICAgICAgICBpZiAoaXNKdW1wVGFyZ2V0KG9wY29kZUlELCBqdW1wVGFy
Z2V0cywgYnl0ZWNvZGVPZmZzZXQpIHx8IG5leHRJbnN0cnVjdGlvbklzTGVhZGVyKSB7CiAgICAg
ICAgICAgICBhdXRvIG5ld0Jsb2NrID0gc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZUJhc2ljQmxv
Y2s+KGJ5dGVjb2RlT2Zmc2V0LCBvcGNvZGVMZW5ndGgpOwogICAgICAgICAgICAgY3VycmVudCA9
IG5ld0Jsb2NrLmdldCgpOwotICAgICAgICAgICAgYmFzaWNCbG9ja3MuYXBwZW5kKFdURk1vdmUo
bmV3QmxvY2spKTsKKyAgICAgICAgICAgIGFwcGVuZEJsb2NrKFdURk1vdmUobmV3QmxvY2spKTsK
ICAgICAgICAgICAgIGNyZWF0ZWRCbG9jayA9IHRydWU7CiAgICAgICAgICAgICBuZXh0SW5zdHJ1
Y3Rpb25Jc0xlYWRlciA9IGZhbHNlOwogICAgICAgICAgICAgYnl0ZWNvZGVPZmZzZXQgKz0gb3Bj
b2RlTGVuZ3RoOwpAQCAtMTY5LDggKzE3NCw3IEBAIHZvaWQgY29tcHV0ZUJ5dGVjb2RlQmFzaWNC
bG9ja3MoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0CiAK
ICAgICAgICAgYm9vbCBmYWxsc1Rocm91Z2ggPSB0cnVlOyAKICAgICAgICAgZm9yICh1bnNpZ25l
ZCBieXRlY29kZU9mZnNldCA9IGJsb2NrLT5sZWFkZXJCeXRlY29kZU9mZnNldCgpOyBieXRlY29k
ZU9mZnNldCA8IGJsb2NrLT5sZWFkZXJCeXRlY29kZU9mZnNldCgpICsgYmxvY2stPnRvdGFsQnl0
ZWNvZGVMZW5ndGgoKTspIHsKLSAgICAgICAgICAgIGNvbnN0IEluc3RydWN0aW9uJiBjdXJyZW50
SW5zdHJ1Y3Rpb24gPSBpbnN0cnVjdGlvbnNCZWdpbltieXRlY29kZU9mZnNldF07Ci0gICAgICAg
ICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGludGVycHJldGVyLT5nZXRPcGNvZGVJRChjdXJyZW50
SW5zdHJ1Y3Rpb24udS5vcGNvZGUpOworICAgICAgICAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBp
bnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25zQmVnaW5bYnl0ZWNvZGVPZmZzZXRd
KTsKICAgICAgICAgICAgIHVuc2lnbmVkIG9wY29kZUxlbmd0aCA9IG9wY29kZUxlbmd0aHNbb3Bj
b2RlSURdOwogICAgICAgICAgICAgLy8gSWYgd2UgZm91bmQgYSB0ZXJtaW5hbCBieXRlY29kZSwg
bGluayB0byB0aGUgZXhpdCBibG9jay4KICAgICAgICAgICAgIGlmIChpc1Rlcm1pbmFsKG9wY29k
ZUlEKSkgewpAQCAtMTg1LDcgKzE4OSw3IEBAIHZvaWQgY29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9j
a3MoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0CiAgICAg
ICAgICAgICAvLyBibG9jayBiZWNhdXNlIHRoZSBmaW5hbGx5IGJsb2NrIHdpbGwgY3JlYXRlIGl0
cyBvd24gY2F0Y2gsIHdoaWNoIHdpbGwgZ2VuZXJhdGUgYSBIYW5kbGVySW5mby4KICAgICAgICAg
ICAgIGlmIChpc1Rocm93KG9wY29kZUlEKSkgewogICAgICAgICAgICAgICAgIEFTU0VSVChieXRl
Y29kZU9mZnNldCArIG9wY29kZUxlbmd0aCA9PSBibG9jay0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQo
KSArIGJsb2NrLT50b3RhbEJ5dGVjb2RlTGVuZ3RoKCkpOwotICAgICAgICAgICAgICAgIEhhbmRs
ZXJJbmZvKiBoYW5kbGVyID0gY29kZUJsb2NrLT5oYW5kbGVyRm9yQnl0ZWNvZGVPZmZzZXQoYnl0
ZWNvZGVPZmZzZXQpOworICAgICAgICAgICAgICAgIGF1dG8qIGhhbmRsZXIgPSBjb2RlQmxvY2st
PmhhbmRsZXJGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCk7CiAgICAgICAgICAgICAg
ICAgZmFsbHNUaHJvdWdoID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgaWYgKCFoYW5kbGVyKSB7
CiAgICAgICAgICAgICAgICAgICAgIGxpbmtCbG9ja3MoYmxvY2ssIGV4aXQuZ2V0KCkpOwpAQCAt
MjA1LDcgKzIwOSw3IEBAIHZvaWQgY29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MoQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0CiAgICAgICAgICAgICBpZiAo
aXNCcmFuY2gob3Bjb2RlSUQpKSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKGJ5dGVjb2RlT2Zm
c2V0ICsgb3Bjb2RlTGVuZ3RoID09IGJsb2NrLT5sZWFkZXJCeXRlY29kZU9mZnNldCgpICsgYmxv
Y2stPnRvdGFsQnl0ZWNvZGVMZW5ndGgoKSk7CiAgICAgICAgICAgICAgICAgVmVjdG9yPHVuc2ln
bmVkLCAxPiBieXRlY29kZU9mZnNldHNKdW1wZWRUbzsKLSAgICAgICAgICAgICAgICBmaW5kSnVt
cFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChjb2RlQmxvY2ssIGJ5dGVjb2RlT2Zmc2V0LCBieXRl
Y29kZU9mZnNldHNKdW1wZWRUbyk7CisgICAgICAgICAgICAgICAgZmluZEp1bXBUYXJnZXRzRm9y
Qnl0ZWNvZGVPZmZzZXQoY29kZUJsb2NrLCBpbnN0cnVjdGlvbnNCZWdpbiwgYnl0ZWNvZGVPZmZz
ZXQsIGJ5dGVjb2RlT2Zmc2V0c0p1bXBlZFRvKTsKIAogICAgICAgICAgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBiYXNpY0Jsb2Nrcy5zaXplKCk7IGkrKykgewogICAgICAgICAgICAg
ICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIG90aGVyQmxvY2sgPSBiYXNpY0Jsb2Nrc1tpXS5n
ZXQoKTsKQEAgLTIyOSwxMCArMjMzLDIwIEBAIHZvaWQgY29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9j
a3MoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0CiAgICAg
ICAgIH0KICAgICB9CiAKLSAgICBiYXNpY0Jsb2Nrcy5hcHBlbmQoV1RGTW92ZShleGl0KSk7Cisg
ICAgYXBwZW5kQmxvY2soV1RGTW92ZShleGl0KSk7CiAgICAgCiAgICAgZm9yIChhdXRvJiBiYXNp
Y0Jsb2NrIDogYmFzaWNCbG9ja3MpCiAgICAgICAgIGJhc2ljQmxvY2stPnNocmlua1RvRml0KCk7
CiB9CiAKK3ZvaWQgQnl0ZWNvZGVCYXNpY0Jsb2NrOjpjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2Nr
cyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1
bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50LCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2Rl
QmFzaWNCbG9jaz4+JiBiYXNpY0Jsb2NrcykKK3sKKyAgICBjb21wdXRlQnl0ZWNvZGVCYXNpY0Js
b2Nrc0ludGVybmFsKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb25zQmVnaW4sIGluc3RydWN0aW9uQ291
bnQsIGJhc2ljQmxvY2tzKTsKK30KKwordm9pZCBCeXRlY29kZUJhc2ljQmxvY2s6OmNvbXB1dGVC
eXRlY29kZUJhc2ljQmxvY2tzKFVubGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFVubGlua2Vk
SW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50
LCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+JiBiYXNpY0Jsb2Nr
cykKK3sKKyAgICBCeXRlY29kZUJhc2ljQmxvY2s6OmNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tz
SW50ZXJuYWwoY29kZUJsb2NrLCBpbnN0cnVjdGlvbnNCZWdpbiwgaW5zdHJ1Y3Rpb25Db3VudCwg
YmFzaWNCbG9ja3MpOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suaAppbmRleCBiZDdkM2Fl
OWJhMzQzZTFiMDcxNzllOThmMWVlODlkYTY1YmE3ZTIwLi4xMTliZTdjNjYyMzBjOThlYTlkN2Zi
MjgwOGNiZjI5NGRjMWEyYTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5oCkBAIC0zNSw2ICszNSw5IEBACiBuYW1lc3BhY2Ug
SlNDIHsKIAogY2xhc3MgQ29kZUJsb2NrOworY2xhc3MgVW5saW5rZWRDb2RlQmxvY2s7CitzdHJ1
Y3QgSW5zdHJ1Y3Rpb247CitzdHJ1Y3QgVW5saW5rZWRJbnN0cnVjdGlvbjsKIAogY2xhc3MgQnl0
ZWNvZGVCYXNpY0Jsb2NrIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTUwLDI4
ICs1MywzOSBAQCBjbGFzcyBCeXRlY29kZUJhc2ljQmxvY2sgewogICAgIHVuc2lnbmVkIGxlYWRl
ckJ5dGVjb2RlT2Zmc2V0KCkgeyByZXR1cm4gbV9sZWFkZXJCeXRlY29kZU9mZnNldDsgfQogICAg
IHVuc2lnbmVkIHRvdGFsQnl0ZWNvZGVMZW5ndGgoKSB7IHJldHVybiBtX3RvdGFsQnl0ZWNvZGVM
ZW5ndGg7IH0KIAotICAgIFZlY3Rvcjx1bnNpZ25lZD4mIGJ5dGVjb2RlT2Zmc2V0cygpIHsgcmV0
dXJuIG1fYnl0ZWNvZGVPZmZzZXRzOyB9Ci0gICAgdm9pZCBhZGRCeXRlY29kZUxlbmd0aCh1bnNp
Z25lZCk7CisgICAgY29uc3QgVmVjdG9yPHVuc2lnbmVkPiYgYnl0ZWNvZGVPZmZzZXRzKCkgY29u
c3QgeyByZXR1cm4gbV9ieXRlY29kZU9mZnNldHM7IH0KIAotICAgIFZlY3RvcjxCeXRlY29kZUJh
c2ljQmxvY2sqPiYgc3VjY2Vzc29ycygpIHsgcmV0dXJuIG1fc3VjY2Vzc29yczsgfQotICAgIHZv
aWQgYWRkU3VjY2Vzc29yKEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2spIHsgbV9zdWNjZXNzb3Jz
LmFwcGVuZChibG9jayk7IH0KKyAgICBjb25zdCBWZWN0b3I8Qnl0ZWNvZGVCYXNpY0Jsb2NrKj4m
IHN1Y2Nlc3NvcnMoKSBjb25zdCB7IHJldHVybiBtX3N1Y2Nlc3NvcnM7IH0KKyAgICBjb25zdCBW
ZWN0b3I8Qnl0ZWNvZGVCYXNpY0Jsb2NrKj4mIHByZWRlY2Vzc29ycygpIGNvbnN0IHsgcmV0dXJu
IG1fcHJlZGVjZXNzb3JzOyB9CiAKICAgICBGYXN0Qml0VmVjdG9yJiBpbigpIHsgcmV0dXJuIG1f
aW47IH0KICAgICBGYXN0Qml0VmVjdG9yJiBvdXQoKSB7IHJldHVybiBtX291dDsgfQogCisgICAg
dW5zaWduZWQgaW5kZXgoKSBjb25zdCB7IHJldHVybiBtX2luZGV4OyB9CisKKyAgICBzdGF0aWMg
dm9pZCBjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2NrcyhDb2RlQmxvY2sqLCBJbnN0cnVjdGlvbiog
aW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQsIFZlY3RvcjxzdGQ6
OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mKTsKKyAgICBzdGF0aWMgdm9pZCBjb21w
dXRlQnl0ZWNvZGVCYXNpY0Jsb2NrcyhVbmxpbmtlZENvZGVCbG9jayosIFVubGlua2VkSW5zdHJ1
Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50LCBWZWN0
b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+Jik7CisKIHByaXZhdGU6Cisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgQmxvY2ssIHR5cGVuYW1lIEluc3RydWN0aW9uPiBzdGF0aWMg
dm9pZCBjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2Nrc0ludGVybmFsKEJsb2NrKiBjb2RlQmxvY2ss
IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3Vu
dCwgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9j
a3MpOworCisgICAgdm9pZCBhZGRTdWNjZXNzb3IoQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaykg
eyBtX3N1Y2Nlc3NvcnMuYXBwZW5kKGJsb2NrKTsgfQorICAgIHZvaWQgYWRkUHJlZGVjZXNzb3Io
Qnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaykgeyBtX3ByZWRlY2Vzc29ycy5hcHBlbmQoYmxvY2sp
OyB9CisKKyAgICB2b2lkIGFkZEJ5dGVjb2RlTGVuZ3RoKHVuc2lnbmVkKTsKKwogICAgIHVuc2ln
bmVkIG1fbGVhZGVyQnl0ZWNvZGVPZmZzZXQ7CiAgICAgdW5zaWduZWQgbV90b3RhbEJ5dGVjb2Rl
TGVuZ3RoOworICAgIHVuc2lnbmVkIG1faW5kZXg7CiAKICAgICBWZWN0b3I8dW5zaWduZWQ+IG1f
Ynl0ZWNvZGVPZmZzZXRzOwogICAgIFZlY3RvcjxCeXRlY29kZUJhc2ljQmxvY2sqPiBtX3N1Y2Nl
c3NvcnM7CisgICAgVmVjdG9yPEJ5dGVjb2RlQmFzaWNCbG9jayo+IG1fcHJlZGVjZXNzb3JzOwog
CiAgICAgRmFzdEJpdFZlY3RvciBtX2luOwogICAgIEZhc3RCaXRWZWN0b3IgbV9vdXQ7CiB9Owog
Ci12b2lkIGNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzKENvZGVCbG9jayosIFZlY3RvcjxzdGQ6
OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mKTsKLQogaW5saW5lIEJ5dGVjb2RlQmFz
aWNCbG9jazo6Qnl0ZWNvZGVCYXNpY0Jsb2NrKHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBsZW5n
dGgpCiAgICAgOiBtX2xlYWRlckJ5dGVjb2RlT2Zmc2V0KHN0YXJ0KQogICAgICwgbV90b3RhbEJ5
dGVjb2RlTGVuZ3RoKGxlbmd0aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjAyZTFiM2JkMWQ1ZDU4ZTFhOGViY2M3ZTRjOGFiYjg1MjY1NGEwNGEKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmlj
YXRpb24uY3BwCkBAIC0wLDAgKzEsNjM4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IFl1
c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIkJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmgiCisKKyNp
bmNsdWRlICJCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNJbmxpbmVzLmgiCisjaW5jbHVkZSAiQnl0
ZWNvZGVNb2RpZmljYXRpb25TZXQuaCIKKyNpbmNsdWRlICJCeXRlY29kZVVzZURlZi5oIgorI2lu
Y2x1ZGUgIklkZW50aWZpZXJJbmxpbmVzLmgiCisjaW5jbHVkZSAiSW50ZXJwcmV0ZXJJbmxpbmVz
LmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRlICJKU0dlbmVyYXRv
ckZ1bmN0aW9uLmgiCisjaW5jbHVkZSAiU3Ryb25nSW5saW5lcy5oIgorI2luY2x1ZGUgIlVubGlu
a2VkQ29kZUJsb2NrLmgiCisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CisKK25hbWVzcGFjZSBK
U0MgeworCitzdHJ1Y3QgWWllbGREYXRhIHsKKyAgICBzaXplX3Qgc2F2ZVBvaW50OworICAgIHNp
emVfdCBtZXJnZVBvaW50OworICAgIHNpemVfdCByZXN1bWVQb2ludDsKKyAgICBGYXN0Qml0VmVj
dG9yIGxpdmVuZXNzOworICAgIEZhc3RCaXRWZWN0b3IgcmVzdW1lZDsKKyAgICBGYXN0Qml0VmVj
dG9yIHNhdmVkOworfTsKKworY2xhc3MgQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24geworcHVi
bGljOgorICAgIHR5cGVkZWYgVmVjdG9yPFlpZWxkRGF0YT4gWWllbGRzOworCisgICAgQnl0ZWNv
ZGVHZW5lcmF0b3JpZmljYXRpb24oVW5saW5rZWRDb2RlQmxvY2sqIGNvZGVCbG9jaywgVW5saW5r
ZWRDb2RlQmxvY2s6OlVucGFja2VkSW5zdHJ1Y3Rpb25zJiBpbnN0cnVjdGlvbnMsIFN5bWJvbFRh
YmxlKiBnZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlLCBpbnQgZ2VuZXJhdG9yRnJhbWVTeW1ib2xU
YWJsZUluZGV4KQorICAgICAgICA6IG1fZ3JhcGgoY29kZUJsb2NrLCBpbnN0cnVjdGlvbnMpCisg
ICAgICAgICwgbV9pbnNlcnRpb25TZXQobV9ncmFwaCkKKyAgICAgICAgLCBtX2dlbmVyYXRvckZy
YW1lU3ltYm9sVGFibGUoKmNvZGVCbG9jay0+dm0oKSwgZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJs
ZSkKKyAgICAgICAgLCBtX2dlbmVyYXRvckZyYW1lU3ltYm9sVGFibGVJbmRleChnZW5lcmF0b3JG
cmFtZVN5bWJvbFRhYmxlSW5kZXgpCisgICAgeworICAgICAgICBtX21lcmdlQmxvY2tzLnJlc2l6
ZShtX2dyYXBoLmJhc2ljQmxvY2tzKCkuc2l6ZSgpKTsKKyAgICAgICAgbV9zYXZlQmxvY2tzLnJl
c2l6ZShtX2dyYXBoLmJhc2ljQmxvY2tzKCkuc2l6ZSgpKTsKKworICAgICAgICBmb3IgKHN0ZDo6
dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+JiBibG9jayA6IG1fZ3JhcGguYmFzaWNCbG9j
a3MoKSkgeworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBieXRlY29kZU9mZnNldCA6IGJsb2Nr
LT5ieXRlY29kZU9mZnNldHMoKSkgeworICAgICAgICAgICAgICAgIGNvbnN0IFVubGlua2VkSW5z
dHJ1Y3Rpb24qIHBjID0gJm1fZ3JhcGguaW5zdHJ1Y3Rpb25zKClbYnl0ZWNvZGVPZmZzZXRdOwor
ICAgICAgICAgICAgICAgIHN3aXRjaCAocGMtPnUub3Bjb2RlKSB7CisgICAgICAgICAgICAgICAg
Y2FzZSBvcF9zYXZlOiB7CisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxpdmVDYWxsZWVM
b2NhbHNJbmRleCA9IHBjWzJdLnUuaW5kZXg7CisgICAgICAgICAgICAgICAgICAgIGludCBvZmZz
ZXQgPSBwY1szXS51Lm9wZXJhbmQ7CisgICAgICAgICAgICAgICAgICAgIGlmIChsaXZlQ2FsbGVl
TG9jYWxzSW5kZXggPj0gbV95aWVsZHMuc2l6ZSgpKQorICAgICAgICAgICAgICAgICAgICAgICAg
bV95aWVsZHMucmVzaXplKGxpdmVDYWxsZWVMb2NhbHNJbmRleCArIDEpOworICAgICAgICAgICAg
ICAgICAgICBtX3lpZWxkc1tsaXZlQ2FsbGVlTG9jYWxzSW5kZXhdLnNhdmVQb2ludCA9IGJ5dGVj
b2RlT2Zmc2V0OworICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBtZXJnZVBvaW50ID0gYnl0
ZWNvZGVPZmZzZXQgKyBvZmZzZXQ7CisgICAgICAgICAgICAgICAgICAgIG1feWllbGRzW2xpdmVD
YWxsZWVMb2NhbHNJbmRleF0ubWVyZ2VQb2ludCA9IG1lcmdlUG9pbnQ7CisgICAgICAgICAgICAg
ICAgICAgIG1fbWVyZ2VCbG9ja3Muc2V0KG1fZ3JhcGguZmluZEJhc2ljQmxvY2tGb3JCeXRlY29k
ZU9mZnNldChtZXJnZVBvaW50KS0+aW5kZXgoKSk7CisgICAgICAgICAgICAgICAgICAgIG1fc2F2
ZUJsb2Nrcy5zZXQoYmxvY2stPmluZGV4KCkpOworICAgICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBjYXNlIG9wX3Jlc3VtZTogewor
ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSBwY1sy
XS51LmluZGV4OworICAgICAgICAgICAgICAgICAgICBpZiAobGl2ZUNhbGxlZUxvY2Fsc0luZGV4
ID49IG1feWllbGRzLnNpemUoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIG1feWllbGRzLnJl
c2l6ZShsaXZlQ2FsbGVlTG9jYWxzSW5kZXggKyAxKTsKKyAgICAgICAgICAgICAgICAgICAgbV95
aWVsZHNbbGl2ZUNhbGxlZUxvY2Fsc0luZGV4XS5yZXN1bWVQb2ludCA9IGJ5dGVjb2RlT2Zmc2V0
OworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBib29sIGlz
TWVyZ2VCbG9jayhCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIG1fbWVyZ2VCbG9ja3MuZ2V0KGJsb2NrLT5pbmRleCgpKTsKKyAgICB9CisKKyAgICBib29s
IGlzU2F2ZUJsb2NrKEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2spCisgICAgeworICAgICAgICBy
ZXR1cm4gbV9zYXZlQmxvY2tzLmdldChibG9jay0+aW5kZXgoKSk7CisgICAgfQorCisgICAgc3Ry
dWN0IFN0b3JhZ2UgeworICAgICAgICBJZGVudGlmaWVyIGlkZW50aWZpZXI7CisgICAgICAgIHVu
c2lnbmVkIGlkZW50aWZpZXJJbmRleDsKKyAgICAgICAgU2NvcGVPZmZzZXQgc2NvcGVPZmZzZXQ7
CisgICAgfTsKKworICAgIHZvaWQgcnVuKCk7CisKKyAgICBCeXRlY29kZUdyYXBoPFVubGlua2Vk
Q29kZUJsb2NrPiYgZ3JhcGgoKSB7IHJldHVybiBtX2dyYXBoOyB9CisKKyAgICBjb25zdCBZaWVs
ZHMmIHlpZWxkcygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV95aWVsZHM7CisgICAg
fQorCisgICAgWWllbGRzJiB5aWVsZHMoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1feWllbGRz
OworICAgIH0KKworcHJpdmF0ZToKKyAgICBTdG9yYWdlIHN0b3JhZ2VGb3JHZW5lcmF0b3JMb2Nh
bCh1bnNpZ25lZCBpbmRleCkKKyAgICB7CisgICAgICAgIC8vIFdlIGFzc2lnbiBhIHN5bWJvbCB0
byBhIHJlZ2lzdGVyLiBUaGVyZSBpcyBvbmUtb24tb25lIGNvcnJlc3BvbmRpbmcgYmV0d2VlbiBh
IHJlZ2lzdGVyIGFuZCBhIHN5bWJvbC4KKyAgICAgICAgLy8gQnkgZG9pbmcgc28sIHdlIGFsbG9j
YXRlIHRoZSBzcGVjaWZpYyBzdG9yYWdlIHRvIHNhdmUgdGhlIGdpdmVuIHJlZ2lzdGVyLgorICAg
ICAgICAvLyBUaGlzIGFsbG93IHVzIG5vdCB0byBzYXZlIGFsbCB0aGUgbGl2ZSByZWdpc3RlcnMg
ZXZlbiBpZiB0aGUgcmVnaXN0ZXJzIGFyZSBub3Qgb3ZlcndyaXR0ZW4gZnJvbSB0aGUgcHJldmlv
dXMgcmVzdW1pbmcgdGltZS4KKyAgICAgICAgLy8gSXQgbWVhbnMgdGhhdCwgdGhlIHJlZ2lzdGVy
IGNhbiBiZSByZXRyaWV2ZWQgZXZlbiBpZiB0aGUgaW1tZWRpYXRlIHByZXZpb3VzIG9wX3NhdmUg
ZG9lcyBub3Qgc2F2ZSBpdC4KKworICAgICAgICBpZiAobV9zdG9yYWdlcy5zaXplKCkgPD0gaW5k
ZXgpCisgICAgICAgICAgICBtX3N0b3JhZ2VzLnJlc2l6ZShpbmRleCArIDEpOworICAgICAgICBp
ZiAoT3B0aW9uYWw8U3RvcmFnZT4gc3RvcmFnZSA9IG1fc3RvcmFnZXNbaW5kZXhdKQorICAgICAg
ICAgICAgcmV0dXJuICpzdG9yYWdlOworCisgICAgICAgIFVubGlua2VkQ29kZUJsb2NrKiBjb2Rl
QmxvY2sgPSBtX2dyYXBoLmNvZGVCbG9jaygpOworICAgICAgICBJZGVudGlmaWVyIGlkZW50aWZp
ZXIgPSBJZGVudGlmaWVyOjpmcm9tVWlkKFByaXZhdGVOYW1lKCkpOworICAgICAgICB1bnNpZ25l
ZCBpZGVudGlmaWVySW5kZXggPSBjb2RlQmxvY2stPm51bWJlck9mSWRlbnRpZmllcnMoKTsKKyAg
ICAgICAgY29kZUJsb2NrLT5hZGRJZGVudGlmaWVyKGlkZW50aWZpZXIpOworICAgICAgICBTY29w
ZU9mZnNldCBzY29wZU9mZnNldCA9IG1fZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZS0+dGFrZU5l
eHRTY29wZU9mZnNldChOb0xvY2tpbmdOZWNlc3NhcnkpOworICAgICAgICBtX2dlbmVyYXRvckZy
YW1lU3ltYm9sVGFibGUtPnNldChOb0xvY2tpbmdOZWNlc3NhcnksIGlkZW50aWZpZXIuaW1wbCgp
LCBTeW1ib2xUYWJsZUVudHJ5KFZhck9mZnNldChzY29wZU9mZnNldCkpKTsKKworICAgICAgICBT
dG9yYWdlIHN0b3JhZ2UgPSB7CisgICAgICAgICAgICBpZGVudGlmaWVyLAorICAgICAgICAgICAg
aWRlbnRpZmllckluZGV4LAorICAgICAgICAgICAgc2NvcGVPZmZzZXQKKyAgICAgICAgfTsKKyAg
ICAgICAgbV9zdG9yYWdlc1tpbmRleF0gPSBzdG9yYWdlOworICAgICAgICByZXR1cm4gc3RvcmFn
ZTsKKyAgICB9CisKKyAgICBCeXRlY29kZUdyYXBoPFVubGlua2VkQ29kZUJsb2NrPiBtX2dyYXBo
OworICAgIEJ5dGVjb2RlTW9kaWZpY2F0aW9uU2V0IG1faW5zZXJ0aW9uU2V0OworICAgIFZlY3Rv
cjxPcHRpb25hbDxTdG9yYWdlPj4gbV9zdG9yYWdlczsKKyAgICBZaWVsZHMgbV95aWVsZHM7Cisg
ICAgRmFzdEJpdFZlY3RvciBtX21lcmdlQmxvY2tzOworICAgIEZhc3RCaXRWZWN0b3IgbV9zYXZl
QmxvY2tzOworICAgIFN0cm9uZzxTeW1ib2xUYWJsZT4gbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRh
YmxlOworICAgIGludCBtX2dlbmVyYXRvckZyYW1lU3ltYm9sVGFibGVJbmRleDsKK307CisKK2Ns
YXNzIEdlbmVyYXRvckxpdmVuZXNzQW5hbHlzaXMgOiBwdWJsaWMgQnl0ZWNvZGVMaXZlbmVzc0xv
Y2FsUHJvcGFnYXRpb248R2VuZXJhdG9yTGl2ZW5lc3NBbmFseXNpcz4geworcHVibGljOgorICAg
IEdlbmVyYXRvckxpdmVuZXNzQW5hbHlzaXMoQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24mIGdl
bmVyYXRvcmlmaWNhdGlvbikKKyAgICAgICAgOiBtX2dlbmVyYXRvcmlmaWNhdGlvbihnZW5lcmF0
b3JpZmljYXRpb24pCisgICAgeworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0
b3I+CisgICAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KFVubGlua2VkQ29kZUJs
b2NrKiBjb2RlQmxvY2ssIE9wY29kZUlEIG9wY29kZUlELCBVbmxpbmtlZEluc3RydWN0aW9uKiBp
bnN0cnVjdGlvbiwgRmFzdEJpdFZlY3RvciYgb3V0LCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQor
ICAgIHsKKyAgICAgICAgSlNDOjpjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9j
aywgb3Bjb2RlSUQsIGluc3RydWN0aW9uLCBmdW5jdG9yKTsKKworICAgICAgICBzd2l0Y2ggKG9w
Y29kZUlEKSB7CisgICAgICAgIGNhc2Ugb3Bfc2F2ZToKKyAgICAgICAgICAgIHJldHVybjsKKwor
ICAgICAgICBjYXNlIG9wX3Jlc3VtZTogeworICAgICAgICAgICAgLy8gcmVzdW1lIGRlZmluZXMg
YWxsIHRoZSByZWdpc3RlcnMuCisgICAgICAgICAgICBvdXQuY2xlYXJBbGwoKTsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9y
PgorICAgIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldChVbmxpbmtlZENvZGVCbG9j
ayogY29kZUJsb2NrLCBPcGNvZGVJRCBvcGNvZGVJRCwgVW5saW5rZWRJbnN0cnVjdGlvbiogaW5z
dHJ1Y3Rpb24sIEZhc3RCaXRWZWN0b3ImLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQorICAgIHsK
KyAgICAgICAgSlNDOjpjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9jaywgb3Bj
b2RlSUQsIGluc3RydWN0aW9uLCBmdW5jdG9yKTsKKworICAgICAgICBzd2l0Y2ggKG9wY29kZUlE
KSB7CisgICAgICAgIGNhc2Ugb3Bfc2F2ZToKKyAgICAgICAgY2FzZSBvcF9yZXN1bWU6IHsKKyAg
ICAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3Ry
dWN0aW9uWzFdLnUub3BlcmFuZCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwor
ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQor
CisgICAgdm9pZCBydW4oKQorICAgIHsKKyAgICAgICAgLy8gUGVyZm9ybSBtb2RpZmllZCBsaXZl
bmVzcyBhbmFseXNpcyB0byBkZXRlcm1pbmUgd2hpY2ggbG9jYWxzIGFyZSBsaXZlIGF0IHRoZSBt
ZXJnZSBwb2ludHMuCisgICAgICAgIC8vIFRoaXMgcHJvZHVjZXMgdGhlIGNvbnNlcnZhdGl2ZSBy
ZXN1bHRzIGZvciB0aGUgcXVlc3Rpb24sICJ3aGljaCB2YXJpYWJsZXMgc2hvdWxkIGJlIHNhdmVk
IGFuZCByZXN1bWVkPyIuCisKKyAgICAgICAgQnl0ZWNvZGVHcmFwaDxVbmxpbmtlZENvZGVCbG9j
az4mIGdyYXBoID0gbV9nZW5lcmF0b3JpZmljYXRpb24uZ3JhcGgoKTsKKyAgICAgICAgVW5saW5r
ZWRDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGdyYXBoLmNvZGVCbG9jaygpOworICAgICAgICB1bnNp
Z25lZCBudW1iZXJPZlZhcmlhYmxlcyA9IGNvZGVCbG9jay0+bV9udW1DYWxsZWVMb2NhbHM7Cisg
ICAgICAgIGZvciAoc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4mIGJsb2NrIDog
Z3JhcGguYmFzaWNCbG9ja3MoKSkgeworICAgICAgICAgICAgYmxvY2stPmluKCkucmVzaXplKG51
bWJlck9mVmFyaWFibGVzKTsKKyAgICAgICAgICAgIGJsb2NrLT5vdXQoKS5yZXNpemUobnVtYmVy
T2ZWYXJpYWJsZXMpOworICAgICAgICAgICAgYmxvY2stPmluKCkuY2xlYXJBbGwoKTsKKyAgICAg
ICAgICAgIGJsb2NrLT5vdXQoKS5jbGVhckFsbCgpOworICAgICAgICB9CisKKyAgICAgICAgYm9v
bCBjaGFuZ2VkOworICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGxhc3RCbG9jayA9IGdyYXBo
LmJhc2ljQmxvY2tzKCkubGFzdCgpLmdldCgpOworICAgICAgICBsYXN0QmxvY2stPmluKCkuY2xl
YXJBbGwoKTsKKyAgICAgICAgbGFzdEJsb2NrLT5vdXQoKS5jbGVhckFsbCgpOworICAgICAgICBG
YXN0Qml0VmVjdG9yIG5ld091dDsKKyAgICAgICAgbmV3T3V0LnJlc2l6ZShsYXN0QmxvY2stPm91
dCgpLm51bUJpdHMoKSk7CisgICAgICAgIGRvIHsKKyAgICAgICAgICAgIGNoYW5nZWQgPSBmYWxz
ZTsKKyAgICAgICAgICAgIGZvciAoc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4m
IGJsb2NrIDogZ3JhcGguYmFzaWNCbG9ja3NJblJldmVyc2VPcmRlcigpKSB7CisgICAgICAgICAg
ICAgICAgbmV3T3V0LmNsZWFyQWxsKCk7CisgICAgICAgICAgICAgICAgZm9yIChCeXRlY29kZUJh
c2ljQmxvY2sqIHN1Y2Nlc3NvciA6IGJsb2NrLT5zdWNjZXNzb3JzKCkpCisgICAgICAgICAgICAg
ICAgICAgIG5ld091dC5tZXJnZShzdWNjZXNzb3ItPmluKCkpOworICAgICAgICAgICAgICAgIGJv
b2wgb3V0RGlkQ2hhbmdlID0gYmxvY2stPm91dCgpLnNldEFuZENoZWNrKG5ld091dCk7CisgICAg
ICAgICAgICAgICAgY29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCbG9jayhtX2dlbmVyYXRvcmlmaWNh
dGlvbi5ncmFwaCgpLCBibG9jay5nZXQoKSk7CisgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBv
dXREaWRDaGFuZ2U7CisgICAgICAgICAgICB9CisgICAgICAgIH0gd2hpbGUgKGNoYW5nZWQpOwor
CisgICAgICAgIGZvciAoWWllbGREYXRhJiBkYXRhIDogbV9nZW5lcmF0b3JpZmljYXRpb24ueWll
bGRzKCkpCisgICAgICAgICAgICBkYXRhLmxpdmVuZXNzID0gZ2V0TGl2ZW5lc3NJbmZvQXRCeXRl
Y29kZU9mZnNldChtX2dlbmVyYXRvcmlmaWNhdGlvbi5ncmFwaCgpLCBkYXRhLm1lcmdlUG9pbnQp
OworICAgIH0KKworcHJpdmF0ZToKKyAgICBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbiYgbV9n
ZW5lcmF0b3JpZmljYXRpb247Cit9OworCitjbGFzcyBTYXZlZFZhcmlhYmxlc0FuYWx5c2lzIHsK
K3B1YmxpYzoKKyAgICBTYXZlZFZhcmlhYmxlc0FuYWx5c2lzKEJ5dGVjb2RlR2VuZXJhdG9yaWZp
Y2F0aW9uJiBnZW5lcmF0b3JpZmljYXRpb24pCisgICAgICAgIDogbV9nZW5lcmF0b3JpZmljYXRp
b24oZ2VuZXJhdG9yaWZpY2F0aW9uKQorICAgIHsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBEZWZGdW5jdG9yPgorICAgIHZvaWQgc3RlcE92ZXJJbnN0cnVjdGlvbihCeXRlY29kZUJh
c2ljQmxvY2sqLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgRmFzdEJpdFZlY3RvciYgaW4sIGNv
bnN0IERlZkZ1bmN0b3ImIGRlZikKKyAgICB7CisgICAgICAgIEJ5dGVjb2RlR3JhcGg8VW5saW5r
ZWRDb2RlQmxvY2s+JiBncmFwaCA9IG1fZ2VuZXJhdG9yaWZpY2F0aW9uLmdyYXBoKCk7CisgICAg
ICAgIGF1dG8mIGluc3RydWN0aW9ucyA9IGdyYXBoLmluc3RydWN0aW9ucygpOworICAgICAgICBV
bmxpbmtlZEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9ICZpbnN0cnVjdGlvbnNbYnl0ZWNvZGVP
ZmZzZXRdOworICAgICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGluc3RydWN0aW9uLT51Lm9wY29k
ZTsKKyAgICAgICAgVW5saW5rZWRDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGdyYXBoLmNvZGVCbG9j
aygpOworCisgICAgICAgIC8vIG9wX3Jlc3VtZSBjbGVhcnMgYWxsIHRoZSBkZWZzLgorICAgICAg
ICBpZiAob3Bjb2RlSUQgPT0gb3BfcmVzdW1lKSB7CisgICAgICAgICAgICBpbi5jbGVhckFsbCgp
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgSlNDOjpjb21wdXRl
RGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9jaywgb3Bjb2RlSUQsIGluc3RydWN0aW9uLCBb
Jl0gKFVubGlua2VkQ29kZUJsb2NrKiwgVW5saW5rZWRJbnN0cnVjdGlvbiosIE9wY29kZUlELCBp
bnQgb3BlcmFuZCkgeworICAgICAgICAgICAgaWYgKGlzVmFsaWRSZWdpc3RlckZvckxpdmVuZXNz
KG9wZXJhbmQpKQorICAgICAgICAgICAgICAgIGRlZihWaXJ0dWFsUmVnaXN0ZXIob3BlcmFuZCku
dG9Mb2NhbCgpKTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgYm9vbCBjb21wdXRlTG9jYWxT
YXZlZFZhcmlhYmxlc0ZvckJ5dGVjb2RlT2Zmc2V0KEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2ss
IHVuc2lnbmVkIHRhcmdldE9mZnNldCwgRmFzdEJpdFZlY3RvciYgcmVzdWx0KQorICAgIHsKKyAg
ICAgICAgQVNTRVJUKCFibG9jay0+aXNFeGl0QmxvY2soKSk7CisgICAgICAgIEFTU0VSVCghYmxv
Y2stPmlzRW50cnlCbG9jaygpKTsKKworICAgICAgICBGYXN0Qml0VmVjdG9yIGluID0gYmxvY2st
PmluKCk7CisKKyAgICAgICAgZm9yICh1bnNpZ25lZCBieXRlY29kZU9mZnNldCA6IGJsb2NrLT5i
eXRlY29kZU9mZnNldHMoKSkgeworICAgICAgICAgICAgaWYgKHRhcmdldE9mZnNldCA8PSBieXRl
Y29kZU9mZnNldCkKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgc3RlcE92
ZXJJbnN0cnVjdGlvbigKKyAgICAgICAgICAgICAgICBibG9jaywgYnl0ZWNvZGVPZmZzZXQsIGlu
LAorICAgICAgICAgICAgICAgIFsmXSAodW5zaWduZWQgYml0SW5kZXgpIHsKKyAgICAgICAgICAg
ICAgICAgICAgLy8gVGhpcyBpcyB0aGUgZGVmIGZ1bmN0b3IsIHNvIHdlIHNldCB0aGUgYml0Lgor
ICAgICAgICAgICAgICAgICAgICBpbi5zZXQoYml0SW5kZXgpOworICAgICAgICAgICAgICAgIH0p
OworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHJlc3VsdC5zZXRBbmRDaGVjayhpbik7Cisg
ICAgfQorCisgICAgYm9vbCBjb21wdXRlTG9jYWxTYXZlZFZhcmlhYmxlc0ZvckJsb2NrKEJ5dGVj
b2RlQmFzaWNCbG9jayogYmxvY2spCisgICAgeworICAgICAgICBpZiAoYmxvY2stPmlzRXhpdEJs
b2NrKCkgfHwgYmxvY2stPmlzRW50cnlCbG9jaygpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICByZXR1cm4gY29tcHV0ZUxvY2FsU2F2ZWRWYXJpYWJsZXNGb3JCeXRlY29kZU9m
ZnNldChibG9jaywgYmxvY2stPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCkgKyBibG9jay0+dG90YWxC
eXRlY29kZUxlbmd0aCgpLCBibG9jay0+b3V0KCkpOworICAgIH0KKworICAgIEZhc3RCaXRWZWN0
b3IgZ2V0U2F2ZWRWYXJpYWJsZXNJbmZvQXRCeXRlY29kZU9mZnNldCh1bnNpZ25lZCBieXRlY29k
ZU9mZnNldCkKKyAgICB7CisgICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2sgPSBtX2dl
bmVyYXRvcmlmaWNhdGlvbi5ncmFwaCgpLmZpbmRCYXNpY0Jsb2NrRm9yQnl0ZWNvZGVPZmZzZXQo
Ynl0ZWNvZGVPZmZzZXQpOworICAgICAgICBBU1NFUlQoYmxvY2spOworICAgICAgICBBU1NFUlQo
IWJsb2NrLT5pc0VudHJ5QmxvY2soKSk7CisgICAgICAgIEFTU0VSVCghYmxvY2stPmlzRXhpdEJs
b2NrKCkpOworICAgICAgICBGYXN0Qml0VmVjdG9yIGluOworICAgICAgICBpbi5yZXNpemUoYmxv
Y2stPmluKCkubnVtQml0cygpKTsKKyAgICAgICAgY29tcHV0ZUxvY2FsU2F2ZWRWYXJpYWJsZXNG
b3JCeXRlY29kZU9mZnNldChibG9jaywgYnl0ZWNvZGVPZmZzZXQsIGluKTsKKyAgICAgICAgcmV0
dXJuIGluOworICAgIH0KKworICAgIHZvaWQgcnVuKCkKKyAgICB7CisgICAgICAgIC8vIElmIHdl
IHNhdmUgYWxsIHRoZSB2YXJpYWJsZSB0aGF0IHdpbGwgYmUgcmVzdW1lZCwgaXQncyBPSy4KKyAg
ICAgICAgLy8gQnV0IHdlIGNhbiBhdm9pZCBzb21lIHNhdmVkIHZhcmlhYmxlcyB0aGF0IGFyZSBv
bmx5IGRlZmluZWQgYnkgdGhlIHByZXZpb3VzIG9wX3Jlc3VtZS4KKyAgICAgICAgLy8KKyAgICAg
ICAgLy8gSW4gdGhpcyBwaGFzZSwgd2UgcGVyZm9ybSBmb3J3YXJkIGFuYWx5c2lzIHRvIGV4dHJh
Y3Qgd2hpY2ggdmFyaWFibGVzIG5lZWQgdG8gYmUgbmV3bHkgc2F2ZWQgd2hlbiBleGVjdXRpbmcg
b3Bfc2F2ZS4KKyAgICAgICAgLy8gV2UgY2FsY3VsYXRlIHRoZSByZWdpc3RlcnMgdGhhdCBpcyBk
ZWZpbmVkIGluIG5vbi1vcF9yZXN1bWUgYW5kIGNhbiByZWFjaCB0byB0aGUgb3Bfc2F2ZS4KKyAg
ICAgICAgLy8KKyAgICAgICAgLy8gICBvcF9yZXN1bWUsIGRlZmluZSByMQorICAgICAgICAvLyAg
IC4uLgorICAgICAgICAvLyAgIC4uLgorICAgICAgICAvLyAgIG5vLWp1bXBzICYgbm8gcjEgZGVm
cy4KKyAgICAgICAgLy8gICAuLi4KKyAgICAgICAgLy8gICBvcF9zYXZlICAjIEhlcmUsIGl0IGlz
IG5vdCBuZWNlc3NhcnkgdG8gc2F2ZSByMS4KKyAgICAgICAgQnl0ZWNvZGVHcmFwaDxVbmxpbmtl
ZENvZGVCbG9jaz4mIGdyYXBoID0gbV9nZW5lcmF0b3JpZmljYXRpb24uZ3JhcGgoKTsKKyAgICAg
ICAgVW5saW5rZWRDb2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrID0gZ3JhcGguY29kZUJsb2Nr
KCk7CisKKyAgICAgICAgLy8gV2UgY29uc2lkZXIgdGhlIGJhc2ljIGJsb2NrcyB3aXRoaW4gdGhl
IHRyeSByYW5nZSBhcmUgY29uc2lkZXJlZCBhcyB0aGUgaW1wbGljaXQgcHJlZGVjZXNzb3JzIG9m
IHRoZSBoYW5kbGVycy4KKyAgICAgICAgLy8gVGhlIGRlZnMgaW4gdGhlc2UgYmFzaWMgYmxvY2tz
IGFyZSBjYXJyaWVkIHRvIHRoZSBleGNlcHRpb24gaGFuZGxlci4gQW5kIGlmIHRoZSBvcF9zYXZl
IGlzIGV4ZWN1dGVkIGluIHRoZSBoYW5kbGVyLAorICAgICAgICAvLyBjYXJyaWVkIGRlZnMgc2hv
dWxkIGJlIGFsc28gY29uc2lkZXJlZC4KKyAgICAgICAgLy8KKyAgICAgICAgLy8gSGVyZSwgd2Ug
YWRkIHRoZSB3aG9sZSBiYXNpYyBibG9ja3MgYXMgdGhlIGltcGxpY2l0IHByZWRlY2Vzc29ycyBv
ZiB0aGUgaGFuZGxlcnMgZm9yIHNpbXBsaWNpdHkuCisgICAgICAgIC8vIFRoaXMgaXMgYSBsaXR0
bGUgYml0IGNvbnNlcnZhdGl2ZTogdGhlIHRyeSByYW5nZSBtYXkgbm90IGNvdmVyIGFsbCB0aGUg
YmFzaWMgYmxvY2suIEJ1dCBzaW5jZSB0aGUgb3V0IHNldCBzdGF0dXMgYXQKKyAgICAgICAgLy8g
dGhlIHRhaWwgb2YgdGhlIGJhc2ljIGJsb2NrIGlzIGFsd2F5cyBsYXJnZXIgdGhhbiB0aGUgb3V0
IHNldCBzdGF0dXMgaW4gdGhlIG1pZGRsZSBvZiB0aGUgYmFzaWMgYmxvY2tzLCB0aGlzIGRvZXMg
bm90CisgICAgICAgIC8vIGZhaWwgdG8ga2VlcCB0aGUgdmFyaWFibGVzIHRoYXQgc2hvdWxkIGJl
IHNhdmVkLgorICAgICAgICAvLworICAgICAgICAvLyBPbmx5IHRoZSBleGNlcHRpb24gaXMgdGhl
IG9wX3Jlc3VtZSBibG9jazogb3BfcmVzdW1lIGNsZWFycyBhbGwgdGhlIGRlZnMuIEJ1dCBzaW5j
ZSB0aGUgcmFuZ2UgYmV0d2VlbiB0aGUganVtcCB0YXJnZXQKKyAgICAgICAgLy8gZnJvbSB0aGUg
Z2xvYmFsIGRpc3BhdGNoIGFuZCBvcF9yZXN1bWUgaXMgbmV2ZXIgY292ZXJlZCBieSB0aGUgdHJ5
IHJhbmdlLCBpdCBpcyBub3QgYSBwcm9ibGVtLgorICAgICAgICBWZWN0b3I8T3B0aW9uYWw8RmFz
dEJpdFZlY3Rvcj4+IHBvc3NpYmxlUHJlZGVjZXNzb3JzRm9ySGFuZGxlcnM7CisgICAgICAgIHBv
c3NpYmxlUHJlZGVjZXNzb3JzRm9ySGFuZGxlcnMucmVzaXplKGdyYXBoLmJhc2ljQmxvY2tzKCku
c2l6ZSgpKTsKKyAgICAgICAgeworICAgICAgICAgICAgYXV0byYgaW5zdHJ1Y3Rpb25zID0gZ3Jh
cGguaW5zdHJ1Y3Rpb25zKCk7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
dW5saW5rZWRDb2RlQmxvY2stPm51bWJlck9mRXhjZXB0aW9uSGFuZGxlcnMoKTsgKytpKSB7Cisg
ICAgICAgICAgICAgICAgYXV0byYgaGFuZGxlciA9IHVubGlua2VkQ29kZUJsb2NrLT5leGNlcHRp
b25IYW5kbGVyKGkpOworCisgICAgICAgICAgICAgICAgRmFzdEJpdFZlY3RvciBwcmVkZWNlc3Nv
cnM7CisgICAgICAgICAgICAgICAgcHJlZGVjZXNzb3JzLnJlc2l6ZShncmFwaC5iYXNpY0Jsb2Nr
cygpLnNpemUoKSk7CisgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBieXRlY29kZU9mZnNl
dCA9IGhhbmRsZXIuc3RhcnQ7IGJ5dGVjb2RlT2Zmc2V0IDwgaGFuZGxlci5lbmQ7KSB7CisgICAg
ICAgICAgICAgICAgICAgIFVubGlua2VkSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uID0gJmluc3Ry
dWN0aW9uc1tieXRlY29kZU9mZnNldF07CisgICAgICAgICAgICAgICAgICAgIE9wY29kZUlEIG9w
Y29kZUlEID0gaW5zdHJ1Y3Rpb24tPnUub3Bjb2RlOworICAgICAgICAgICAgICAgICAgICB1bnNp
Z25lZCBvcGNvZGVMZW5ndGggPSBvcGNvZGVMZW5ndGhzW29wY29kZUlEXTsKKworICAgICAgICAg
ICAgICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIHBvc3NpYmxlUHJlZGVjZXNzb3IgPSBncmFw
aC5maW5kQmFzaWNCbG9ja0ZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KTsKKyAgICAg
ICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQocG9zc2libGVQcmVkZWNlc3Nvcik7CisgICAg
ICAgICAgICAgICAgICAgIHByZWRlY2Vzc29ycy5zZXQocG9zc2libGVQcmVkZWNlc3Nvci0+aW5k
ZXgoKSk7CisKKyAgICAgICAgICAgICAgICAgICAgYnl0ZWNvZGVPZmZzZXQgKz0gb3Bjb2RlTGVu
Z3RoOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBCeXRlY29kZUJhc2ljQmxv
Y2sqIGhhbmRsZXJCbG9jayA9IGdyYXBoLmZpbmRCYXNpY0Jsb2NrV2l0aExlYWRlck9mZnNldCho
YW5kbGVyLnRhcmdldCk7CisgICAgICAgICAgICAgICAgcG9zc2libGVQcmVkZWNlc3NvcnNGb3JI
YW5kbGVyc1toYW5kbGVyQmxvY2stPmluZGV4KCldID0gV1RGTW92ZShwcmVkZWNlc3NvcnMpOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgdW5zaWduZWQgbnVtYmVyT2ZWYXJp
YWJsZXMgPSB1bmxpbmtlZENvZGVCbG9jay0+bV9udW1DYWxsZWVMb2NhbHM7CisgICAgICAgIGZv
ciAoc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4mIGJsb2NrIDogZ3JhcGguYmFz
aWNCbG9ja3MoKSkgeworICAgICAgICAgICAgYmxvY2stPmluKCkucmVzaXplKG51bWJlck9mVmFy
aWFibGVzKTsKKyAgICAgICAgICAgIGJsb2NrLT5vdXQoKS5yZXNpemUobnVtYmVyT2ZWYXJpYWJs
ZXMpOworICAgICAgICAgICAgYmxvY2stPmluKCkuY2xlYXJBbGwoKTsKKyAgICAgICAgICAgIGJs
b2NrLT5vdXQoKS5jbGVhckFsbCgpOworICAgICAgICB9CisKKyAgICAgICAgYm9vbCBjaGFuZ2Vk
OworICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGZpcnN0QmxvY2sgPSBncmFwaC5iYXNpY0Js
b2NrcygpLmZpcnN0KCkuZ2V0KCk7CisgICAgICAgIEZhc3RCaXRWZWN0b3IgbmV3SW47CisgICAg
ICAgIG5ld0luLnJlc2l6ZShmaXJzdEJsb2NrLT5pbigpLm51bUJpdHMoKSk7CisgICAgICAgIGRv
IHsKKyAgICAgICAgICAgIGNoYW5nZWQgPSBmYWxzZTsKKyAgICAgICAgICAgIGZvciAoc3RkOjp1
bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4mIGJsb2NrIDogZ3JhcGguYmFzaWNCbG9ja3Mo
KSkgeworICAgICAgICAgICAgICAgIG5ld0luLmNsZWFyQWxsKCk7CisgICAgICAgICAgICAgICAg
Ym9vbCBtZXJnZUJsb2NrID0gbV9nZW5lcmF0b3JpZmljYXRpb24uaXNNZXJnZUJsb2NrKGJsb2Nr
LmdldCgpKTsKKyAgICAgICAgICAgICAgICBmb3IgKEJ5dGVjb2RlQmFzaWNCbG9jayogcHJlZGVj
ZXNzb3IgOiBibG9jay0+cHJlZGVjZXNzb3JzKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8g
TWVyZ2UgdGhlIG91dCBzZXQgb2YgdGhlIGluY29taW5nIHByZWRlY2Vzc29ycyB1bmxlc3MgdGhl
IGN1cnJlbnQgYmxvY2sgc3RhcnRzCisgICAgICAgICAgICAgICAgICAgIC8vIHdpdGggdGhlIG1l
cmdlIHBvaW50IGFuZCB0aGUgcHJlZGVjZXNzb3IgZW5kcyB3aXRoIHRoZSBzYXZlIHBvaW50Lgor
ICAgICAgICAgICAgICAgICAgICBpZiAoIShtZXJnZUJsb2NrICYmIG1fZ2VuZXJhdG9yaWZpY2F0
aW9uLmlzU2F2ZUJsb2NrKHByZWRlY2Vzc29yKSkpCisgICAgICAgICAgICAgICAgICAgICAgICBu
ZXdJbi5tZXJnZShwcmVkZWNlc3Nvci0+b3V0KCkpOworICAgICAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgICAgIGlmIChhdXRvJiBvcHRpb25hbFByZWRlY2Vzc29yU2V0ID0gcG9zc2libGVQ
cmVkZWNlc3NvcnNGb3JIYW5kbGVyc1tibG9jay0+aW5kZXgoKV0pIHsKKyAgICAgICAgICAgICAg
ICAgICAgb3B0aW9uYWxQcmVkZWNlc3NvclNldC0+Zm9yRWFjaFNldEJpdChbJl0gKHVuc2lnbmVk
IGJsb2NrSW5kZXgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ld0luLm1lcmdlKGdyYXBo
LmJhc2ljQmxvY2tzKClbYmxvY2tJbmRleF0tPm91dCgpKTsKKyAgICAgICAgICAgICAgICAgICAg
fSk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgYmxvY2stPmluKCkuc2V0
KG5ld0luKTsKKyAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IGNvbXB1dGVMb2NhbFNhdmVkVmFy
aWFibGVzRm9yQmxvY2soYmxvY2suZ2V0KCkpOworICAgICAgICAgICAgfQorICAgICAgICB9IHdo
aWxlIChjaGFuZ2VkKTsKKworICAgICAgICBmb3IgKFlpZWxkRGF0YSYgZGF0YSA6IG1fZ2VuZXJh
dG9yaWZpY2F0aW9uLnlpZWxkcygpKSB7CisgICAgICAgICAgICBkYXRhLnNhdmVkID0gZGF0YS5s
aXZlbmVzczsKKyAgICAgICAgICAgIGRhdGEuc2F2ZWQuZmlsdGVyKGdldFNhdmVkVmFyaWFibGVz
SW5mb0F0Qnl0ZWNvZGVPZmZzZXQoZGF0YS5zYXZlUG9pbnQpKTsKKyAgICAgICAgfQorICAgIH0K
KworcHJpdmF0ZToKKyAgICBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbiYgbV9nZW5lcmF0b3Jp
ZmljYXRpb247Cit9OworCitjbGFzcyBSZXN1bWVkVmFyaWFibGVzQW5hbHlzaXMgOiBwdWJsaWMg
Qnl0ZWNvZGVMaXZlbmVzc0xvY2FsUHJvcGFnYXRpb248UmVzdW1lZFZhcmlhYmxlc0FuYWx5c2lz
PiB7CitwdWJsaWM6CisgICAgUmVzdW1lZFZhcmlhYmxlc0FuYWx5c2lzKEJ5dGVjb2RlR2VuZXJh
dG9yaWZpY2F0aW9uJiBnZW5lcmF0b3JpZmljYXRpb24pCisgICAgICAgIDogbV9nZW5lcmF0b3Jp
ZmljYXRpb24oZ2VuZXJhdG9yaWZpY2F0aW9uKQorICAgIHsKKyAgICB9CisKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBGdW5jdG9yPgorICAgIHZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNl
dChVbmxpbmtlZENvZGVCbG9jayogY29kZUJsb2NrLCBPcGNvZGVJRCBvcGNvZGVJRCwgVW5saW5r
ZWRJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIEZhc3RCaXRWZWN0b3ImIG91dCwgY29uc3QgRnVu
Y3RvciYgZnVuY3RvcikKKyAgICB7CisgICAgICAgIEpTQzo6Y29tcHV0ZURlZnNGb3JCeXRlY29k
ZU9mZnNldChjb2RlQmxvY2ssIG9wY29kZUlELCBpbnN0cnVjdGlvbiwgZnVuY3Rvcik7CisKKyAg
ICAgICAgc3dpdGNoIChvcGNvZGVJRCkgeworICAgICAgICBjYXNlIG9wX3NhdmU6CisgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgY2FzZSBvcF9yZXN1bWU6IHsKKyAgICAgICAgICAgIC8v
IHJlc3VtZSBkZWZpbmVzIGFsbCB0aGUgcmVnaXN0ZXJzLgorICAgICAgICAgICAgb3V0LmNsZWFy
QWxsKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorCisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgRnVuY3Rvcj4KKyAgICB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQo
VW5saW5rZWRDb2RlQmxvY2sqIGNvZGVCbG9jaywgT3Bjb2RlSUQgb3Bjb2RlSUQsIFVubGlua2Vk
SW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBGYXN0Qml0VmVjdG9yJiwgY29uc3QgRnVuY3RvciYg
ZnVuY3RvcikKKyAgICB7CisgICAgICAgIEpTQzo6Y29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNl
dChjb2RlQmxvY2ssIG9wY29kZUlELCBpbnN0cnVjdGlvbiwgZnVuY3Rvcik7CisKKyAgICAgICAg
c3dpdGNoIChvcGNvZGVJRCkgeworICAgICAgICBjYXNlIG9wX3NhdmU6IHsKKyAgICAgICAgICAg
IGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzFd
LnUub3BlcmFuZCk7CisKKyAgICAgICAgICAgIC8vIExldCdzIGRlY2xhcmUgdGhlIHVzZXMgYmFz
ZWQgb24gdGhlIHNhdmVkIHZhcmlhYmxlcyBhbmFseXNpcyBpbmZvcm1hdGlvbi4KKyAgICAgICAg
ICAgIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9IGluc3RydWN0aW9uWzJdLnUuaW5k
ZXg7CisgICAgICAgICAgICBjb25zdCBZaWVsZERhdGEmIGRhdGEgPSBtX2dlbmVyYXRvcmlmaWNh
dGlvbi55aWVsZHMoKVtsaXZlQ2FsbGVlTG9jYWxzSW5kZXhdOworICAgICAgICAgICAgZGF0YS5z
YXZlZC5mb3JFYWNoU2V0Qml0KFsmXShzaXplX3QgbG9jYWwpIHsKKyAgICAgICAgICAgICAgICBW
aXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCA9IHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGxvY2FsKTsK
KyAgICAgICAgICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlE
LCBvcGVyYW5kLm9mZnNldCgpKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBvcF9yZXN1bWU6IHsKKyAgICAgICAgICAgIGZ1
bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzFdLnUu
b3BlcmFuZCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCBy
dW4oKQorICAgIHsKKyAgICAgICAgLy8gVGhlIHJlc3VtZWQgdmFyaWFibGVzIGFuYWx5c2lzIGlz
IGFsbW9zdCB0aGUgc2FtZSB0byB0aGUgZ2VuZXJhdG9yaWZpY2F0aW9uJ3MgdXN1YWwgbGl2ZW5l
c3MgYW5hbHlzaXMsCisgICAgICAgIC8vIGV4Y2VwdCBmb3IgZHJvcHBpbmcgdGhlIGVkZ2VzIGJl
dHdlZW4gdGhlIHNhdmUgcG9pbnRzIGFuZCB0aGUgbWVyZ2UgcG9pbnRzLgorCisgICAgICAgIEJ5
dGVjb2RlR3JhcGg8VW5saW5rZWRDb2RlQmxvY2s+JiBncmFwaCA9IG1fZ2VuZXJhdG9yaWZpY2F0
aW9uLmdyYXBoKCk7CisgICAgICAgIFVubGlua2VkQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9j
ayA9IGdyYXBoLmNvZGVCbG9jaygpOworICAgICAgICB1bnNpZ25lZCBudW1iZXJPZlZhcmlhYmxl
cyA9IHVubGlua2VkQ29kZUJsb2NrLT5tX251bUNhbGxlZUxvY2FsczsKKyAgICAgICAgZm9yIChz
dGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiYgYmxvY2sgOiBncmFwaC5iYXNpY0Js
b2NrcygpKSB7CisgICAgICAgICAgICBibG9jay0+aW4oKS5yZXNpemUobnVtYmVyT2ZWYXJpYWJs
ZXMpOworICAgICAgICAgICAgYmxvY2stPm91dCgpLnJlc2l6ZShudW1iZXJPZlZhcmlhYmxlcyk7
CisgICAgICAgICAgICBibG9jay0+aW4oKS5jbGVhckFsbCgpOworICAgICAgICAgICAgYmxvY2st
Pm91dCgpLmNsZWFyQWxsKCk7CisgICAgICAgIH0KKworICAgICAgICBib29sIGNoYW5nZWQ7Cisg
ICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogbGFzdEJsb2NrID0gZ3JhcGguYmFzaWNCbG9ja3Mo
KS5sYXN0KCkuZ2V0KCk7CisgICAgICAgIGxhc3RCbG9jay0+aW4oKS5jbGVhckFsbCgpOworICAg
ICAgICBsYXN0QmxvY2stPm91dCgpLmNsZWFyQWxsKCk7CisgICAgICAgIEZhc3RCaXRWZWN0b3Ig
bmV3T3V0OworICAgICAgICBuZXdPdXQucmVzaXplKGxhc3RCbG9jay0+b3V0KCkubnVtQml0cygp
KTsKKyAgICAgICAgZG8geworICAgICAgICAgICAgY2hhbmdlZCA9IGZhbHNlOworICAgICAgICAg
ICAgZm9yIChzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiYgYmxvY2sgOiBncmFw
aC5iYXNpY0Jsb2Nrc0luUmV2ZXJzZU9yZGVyKCkpIHsKKyAgICAgICAgICAgICAgICBuZXdPdXQu
Y2xlYXJBbGwoKTsKKyAgICAgICAgICAgICAgICBib29sIHNhdmVCbG9jayA9IG1fZ2VuZXJhdG9y
aWZpY2F0aW9uLmlzU2F2ZUJsb2NrKGJsb2NrLmdldCgpKTsKKyAgICAgICAgICAgICAgICBmb3Ig
KEJ5dGVjb2RlQmFzaWNCbG9jayogc3VjY2Vzc29yIDogYmxvY2stPnN1Y2Nlc3NvcnMoKSkgewor
ICAgICAgICAgICAgICAgICAgICAvLyBEbyBub3QgaGFuZGxlIHRoZSBlZGdlcyBiZXR3ZWVuIHRo
ZSBzYXZlIHBvaW50cyBhbmQgdGhlIG1lcmdlIHBvaW50cy4KKyAgICAgICAgICAgICAgICAgICAg
Ly8gSWYgdGhlIGN1cnJlbnQgYmxvY2sgaXMgdGhlIHNhdmUgYmxvY2sgKHRoYXQgYnJhbmNoIGlz
IG9wX3NhdmUpLAorICAgICAgICAgICAgICAgICAgICAvLyBhbmQgaWYgdGhlIHN1Y2Nlc3NvciBp
cyB0aGUgYmxvY2sgdGhhdCBzdGFydHMgd2l0aCB0aGUgbWVyZ2UgcG9pbnQsIHdlIGRyb3AgdGhp
cyBlZGdlLgorICAgICAgICAgICAgICAgICAgICBpZiAoIShzYXZlQmxvY2sgJiYgbV9nZW5lcmF0
b3JpZmljYXRpb24uaXNNZXJnZUJsb2NrKHN1Y2Nlc3NvcikpKQorICAgICAgICAgICAgICAgICAg
ICAgICAgbmV3T3V0Lm1lcmdlKHN1Y2Nlc3Nvci0+aW4oKSk7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIGJvb2wgb3V0RGlkQ2hhbmdlID0gYmxvY2stPm91dCgpLnNldEFuZENo
ZWNrKG5ld091dCk7CisgICAgICAgICAgICAgICAgY29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCbG9j
ayhtX2dlbmVyYXRvcmlmaWNhdGlvbi5ncmFwaCgpLCBibG9jay5nZXQoKSk7CisgICAgICAgICAg
ICAgICAgY2hhbmdlZCB8PSBvdXREaWRDaGFuZ2U7CisgICAgICAgICAgICB9CisgICAgICAgIH0g
d2hpbGUgKGNoYW5nZWQpOworCisgICAgICAgIGZvciAoWWllbGREYXRhJiBkYXRhIDogbV9nZW5l
cmF0b3JpZmljYXRpb24ueWllbGRzKCkpIHsKKyAgICAgICAgICAgIGRhdGEucmVzdW1lZCA9IGRh
dGEubGl2ZW5lc3M7CisgICAgICAgICAgICBkYXRhLnJlc3VtZWQuZmlsdGVyKGdldExpdmVuZXNz
SW5mb0F0Qnl0ZWNvZGVPZmZzZXQobV9nZW5lcmF0b3JpZmljYXRpb24uZ3JhcGgoKSwgZGF0YS5t
ZXJnZVBvaW50KSk7CisgICAgICAgIH0KKyAgICB9CisKK3ByaXZhdGU6CisgICAgQnl0ZWNvZGVH
ZW5lcmF0b3JpZmljYXRpb24mIG1fZ2VuZXJhdG9yaWZpY2F0aW9uOworfTsKKwordm9pZCBCeXRl
Y29kZUdlbmVyYXRvcmlmaWNhdGlvbjo6cnVuKCkKK3sKKyAgICAvLyBGaXJzdCwgd2UgY2FsY3Vs
YXRlIHRoZSBsaXZlbmVzcyBhdCBlYWNoIG1lcmdlIHBvaW50LiBUaGlzIGdpdmVzIHVzIHRoZSBp
bmZvcm1hdGlvbiB3aGljaCByZWdpc3RlcnMgc2hvdWxkIGJlIHNhdmVkIGFuZCByZXN1bWVkIGNv
bnNlcnZhdGl2ZWx5LgorICAgIC8vIEhvd2V2ZXIsIHRoaXMgaW5mb3JtYXRpb24gaXMgdG9vIGNv
bnNlcnZhdGl2ZS4gV2UgdW5uZWNlc3NhcmlseSBzYXZlIGFuZCByZXN1bWUgdGhlIHJlZ2lzdGVy
cy4KKyAgICAvLyBXaGVuIHRoZSBsb2NhbCByZWdpc3RlciBpcyByZWZlcmVuY2VkIGZyb20gdGhl
IHBvaW50IHdoaWNoIGlzIG92ZXIgbXVsdGlwbGUgeWllbGRzLCB0aGUgcHJvYmxlbSBoYXBwZW5z
LgorICAgIC8vCisgICAgLy8gICBmdW5jdGlvbiAqZ2VuKCkKKyAgICAvLyAgIHsKKyAgICAvLyAg
ICAgICB2YXIgdGFyZ2V0ID0gNDI7CisgICAgLy8gICAgICAgeWllbGQgMzA7ICAvLyBIZXJlLCB3
ZSBzaG91bGQgc2F2ZSAidGFyZ2V0Ii4gSXQgaXMgT0suIEJ1dCBhdCB0aGUgcmVzdW1lIHBvaW50
LCB3ZSB1bm5lY2Vzc2FyeSByZXN1bWUgInRhcmdldCIgaGVyZS4KKyAgICAvLyAgICAgICB5aWVs
ZCA0MDsgIC8vIEFuZCBoZXJlLCB3ZSB1bm5lY2Vzc2FyaWx5IHNhdmUgInRhcmdldCIsIHNpbmNl
IGl0IGlzICpkZWYqaW5lZCBieSB0aGUgcHJldmlvdXMgcmVzdW1lLgorICAgIC8vICAgICAgIHlp
ZWxkIHRhcmdldDsgIC8vIEFuZCByZWZlcmVuY2UgdGhlICJ0YXJnZXQiIGhlcmUuCisgICAgLy8g
ICB9CisgICAgLy8KKyAgICAvLyBJbiB0aGUgYWJvdmUgZXhhbXBsZSwgZmlyc3QgeWllbGQncyBy
ZXN1bWUgYW5kIHNlY29uZCB5aWVsZCdzIHNhdmUgaXMgdW5uZWNlc3Nhcnkgc2luY2UgdGhlIHZh
bHVlIGlzIG5vdCBjaGFuZ2VkIGR1cmluZyB0aGUgc2Vjb25kIGNhbGwgb2YgbmV4dCgpLgorICAg
IC8vIFRvIHJlZHVjZSB0aGUgdW5uZWNlc3NhcnkgcmVnaXN0ZXIgc2F2ZSBhbmQgcmVzdW1lLCB3
ZSBydW4gMiBhbmFseXNpcywgInNhdmVkIHZhcmlhYmxlcyBhbmFseXNpcyIgYW5kICJyZXN1bWVk
IHZhcmlhYmxlcyBhbmFseXNpcyIuCisgICAgLy8gSW4gYm90aCBhbmFseXNpcywgd2UgZHJvcCB0
aGUgZWRnZSBmcm9tIG9wX3NhdmUgdG8gdGhlIG1lcmdlIHBvaW50LiBTbyB0aGUgZ3JhcGggbm93
IGJlY29tZXMgYXMgZm9sbG93cy4KKyAgICAvLworICAgIC8vIEJlZm9yZToKKyAgICAvLyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAob2YgY291cnNlLCBzdWNoIGVkZ2VzIGNhbiBiZSBzZWVuKQorICAg
IC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcF9yZXQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0rCisgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHwKKyAgICAvLyAgICAgICAgIGVudHJ5IC0+IGdlbmVyYXRvciBzd2l0Y2ggLS0t
LT4gb3Bfc2F2ZSAtLS0tLS0tLS0tLS0tLSsgICAgICAgICAgICAgICB8ICAgICAgICBvcF9yZXQg
ICAgICAgICAgICAgICAgICAgfAorICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdiAgICAgICAgICAgICAgIHwgICAgICAg
ICAgXiAgICAgICAgICAgICAgICAgICAgICB8CisgICAgLy8gICAgICAgICAgICAgICAgICAgICAg
ICArLS0tLS0tLS0tLS0tLS0+IG9wX3Jlc3VtZSAtLS0tLT4gbWVyZ2UgcG9pbnQgLT4gLi4uLi4u
Ky4uLi4uLT4gb3Bfc2F2ZSAtLS0tLSsgICAgICAgICAgIHwKKyAgICAvLyAgICAgICAgICAgICAg
ICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdiAgICAgICAgICAgdgorICAgIC8vICAgICAg
ICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tPiBvcF9yZXN1bWUgLS0tLT4gbWVyZ2UgcG9pbnQgLT4gLi4uLi4uCisg
ICAgLy8KKyAgICAvLyBBZnRlcjoKKyAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob2YgY291
cnNlLCBzdWNoIGVkZ2VzIGNhbiBiZSBzZWVuKQorICAgIC8vICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBvcF9yZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICAgLy8gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAvLyAgICAg
ICAgIGVudHJ5IC0+IGdlbmVyYXRvciBzd2l0Y2ggLS0tLT4gb3Bfc2F2ZSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB8ICAgICAgICBvcF9yZXQgICAgICAgICAgICAgICAgICAgfAorICAg
IC8vICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgXiAgICAgICAgICAgICAgICAgICAg
ICB8CisgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0+IG9wX3Jl
c3VtZSAtLS0tLT4gbWVyZ2UgcG9pbnQgLT4gLi4uLi4uKy4uLi4uLT4gb3Bfc2F2ZSAgICAgICAg
ICAgICAgICAgIHwKKyAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdgorICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPiBvcF9yZXN1
bWUgLS0tLT4gbWVyZ2UgcG9pbnQgLT4gLi4uLi4uCisgICAgLy8KKyAgICAvLyBJbiBzYXZlZCB2
YXJpYWJsZXMgYW5hbHlzaXMsIHdlIHJ1biB0aGUgZm9yd2FyZCBhbmFseXNpcyBvbnRvIHRoaXMg
IkFmdGVyIiBncmFwaC4gSW4gdGhpcyBmb3J3YXJkIGFuYWx5c2lzLCB3ZSBwcm9wYWdhdGUgdGhl
ICJkZWYicy4KKyAgICAvLyBUaGlzIGFuYWx5c2lzIGV4dHJhY3RzIHRoZSBuZXdseSBkZWYtZWQg
cmVnaXN0ZXJzIHRoYXQgY2FuIHJlYWNoIHRvIHRoZSBvcF9zYXZlIHBvaW50LiBCdXQgdGhpcyBu
ZXdseSBkZWYtZWQgcmVnaXN0ZXJzIGluY2x1ZGUgdGhlIHJlZ2lzdGVycyB0aGF0IHdvbid0IGJl
CisgICAgLy8gdXNlZCBpbiB0aGUgc3Vic2VxdWVudCBuZXh0KCkgY2FsbHMgYWZ0ZXIgdGhpcyBv
cF9zYXZlLiBTbyB3ZSBleHRyYWN0IHRoZSBuZWNlc3NhcmlseSBzYXZlZCByZWdpc3RlcnMgYnkg
bWFza2luZyBsaXZlIHJlZ2lzdGVycyB3aXRoIHRoaXMgbmV3bHkgZGVmLWVkIHJlZ2lzdGVycyBi
aXQgc2V0LgorICAgIC8vCisgICAgLy8gSW4gcmVzdW1lZCB2YXJpYWJsZXMgYW5hbHlzaXMsIHdl
IGp1c3QgcnVuIHRoZSBsaXZlbmVzcyBhbmFseXNpcyBhZ2FpbiBvbnRvIHRoaXMgIkFmdGVyIiBn
cmFwaC4gVGhlIGFuYWx5c2lzIGV4dHJhY3RzIHRoZSBsaXZlbmVzcyBhdCBlYWNoIG1lcmdlIHBv
aW50LAorICAgIC8vIGFuZCB0aGlzIGxpdmVuZXNzIG9ubHkgY29uc2lkZXJzIHRoZSByZWFjaGFi
bGUgYmxvY2tzIGZyb20gdGhlIHRhcmdldCBvcF9yZXN1bWUuIFRoZSByZXN1bHQgcmVnaXN0ZXJz
IGFyZSBzbWFsbGVyIHNldCB0aGFuIHRoZSBzZXQgd2hpY2ggaXMgZXh0cmFjdGVkIGluCisgICAg
Ly8gdGhlIHByZXZpb3VzIGxpdmVuZXNzIGFuYWx5c2lzLgorICAgIC8vIFRoaXMgdGltZSwgd2Ug
dXNlIHRoZSBzYXZlZCB2YXJpYWJsZXMgaW5mb3JtYXRpb24gdG8gZGV0ZXJtaW5lIHRoZSByZXN1
bWVkIHZhcmlhYmxlcy4gVGhpcyBpcyBiZWNhdXNlIHRoZSBzYXZlZCB2YXJpYWJsZSBhbmFseXNp
cyBoYXMgYSBsaXR0bGUgYml0IGNvbnNlcnZhdGl2ZSBwYXJ0OgorICAgIC8vIHRoZSBleGNlcHRp
b24gaGFuZGxlciBjb25zaWRlcnMgdGhlIGJhc2ljIGJsb2NrcyB0aGF0IHJhbmdlIG92ZXJsYXBz
IHRoZSB0cnkgcmFuZ2VzIGFzIHRoZSBpbXBsaWNpdCBwcmVkZWNlc3NvcnMuIEFuZCB0aGUgaGFu
ZGxlciBjb25zZXJ2YXRpdmVseSBjb25zaWRlcnMgbmV3bHktZGVmLWVkCisgICAgLy8gdmFyaWFi
bGVzIGJ5IG1lcmdpbmcgYWxsIHRoZSBwcmVkZWNlc3NvcnMncyBvdXQgc2V0IGV2ZW4gaWYgdGhl
IGhhbmRsZXIncyB0cnkgcmFuZ2UgZG9lcyBub3QgY292ZXIgYWxsIHRoZSBwYXJ0IG9mIHRoZSBp
bXBsaWNpdCBiYXNpYyBibG9ja3MuCisKKyAgICB7CisgICAgICAgIEdlbmVyYXRvckxpdmVuZXNz
QW5hbHlzaXMgcGFzcygqdGhpcyk7CisgICAgICAgIHBhc3MucnVuKCk7CisgICAgfQorCisgICAg
eworICAgICAgICBTYXZlZFZhcmlhYmxlc0FuYWx5c2lzIHBhc3MoKnRoaXMpOworICAgICAgICBw
YXNzLnJ1bigpOworICAgIH0KKworICAgIHsKKyAgICAgICAgUmVzdW1lZFZhcmlhYmxlc0FuYWx5
c2lzIHBhc3MoKnRoaXMpOworICAgICAgICBwYXNzLnJ1bigpOworICAgIH0KKworICAgIFVubGlu
a2VkQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBtX2dyYXBoLmNvZGVCbG9jaygpOworICAgIGZvciAo
Y29uc3QgWWllbGREYXRhJiBkYXRhIDogbV95aWVsZHMpIHsKKyAgICAgICAgVmlydHVhbFJlZ2lz
dGVyIHNjb3BlID0gdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoc3RhdGljX2Nhc3Q8aW50MzJf
dD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6R2VuZXJhdG9yQXJndW1lbnQ6OkZyYW1lKSk7CisKKyAg
ICAgICAgLy8gb3Bfc2F2ZS4KKyAgICAgICAgZGF0YS5zYXZlZC5mb3JFYWNoU2V0Qml0KFsmXShz
aXplX3QgaW5kZXgpIHsKKyAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kID0gdmly
dHVhbFJlZ2lzdGVyRm9yTG9jYWwoaW5kZXgpOworICAgICAgICAgICAgU3RvcmFnZSBzdG9yYWdl
ID0gc3RvcmFnZUZvckdlbmVyYXRvckxvY2FsKGluZGV4KTsKKworICAgICAgICAgICAgbV9pbnNl
cnRpb25TZXQuaW5zZXJ0KGRhdGEuc2F2ZVBvaW50LAorICAgICAgICAgICAgICAgIG9wX3B1dF90
b19zY29wZSwKKyAgICAgICAgICAgICAgICBzY29wZS5vZmZzZXQoKSwgLy8gc2NvcGUKKyAgICAg
ICAgICAgICAgICBzdG9yYWdlLmlkZW50aWZpZXJJbmRleCwgLy8gaWRlbnRpZmllcgorICAgICAg
ICAgICAgICAgIG9wZXJhbmQub2Zmc2V0KCksIC8vIHZhbHVlCisgICAgICAgICAgICAgICAgR2V0
UHV0SW5mbyhEb05vdFRocm93SWZOb3RGb3VuZCwgTG9jYWxDbG9zdXJlVmFyLCBJbml0aWFsaXph
dGlvbk1vZGU6Ok5vdEluaXRpYWxpemF0aW9uKS5vcGVyYW5kKCksIC8vIGluZm8KKyAgICAgICAg
ICAgICAgICBtX2dlbmVyYXRvckZyYW1lU3ltYm9sVGFibGVJbmRleCwgLy8gc3ltYm9sIHRhYmxl
IGNvbnN0YW50IGluZGV4CisgICAgICAgICAgICAgICAgc3RvcmFnZS5zY29wZU9mZnNldC5vZmZz
ZXQoKSAvLyBzY29wZSBvZmZzZXQKKyAgICAgICAgICAgICk7CisgICAgICAgIH0pOworCisgICAg
ICAgIC8vIG9wX3Jlc3VtZS4KKyAgICAgICAgZGF0YS5yZXN1bWVkLmZvckVhY2hTZXRCaXQoWyZd
KHNpemVfdCBpbmRleCkgeworICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQgPSB2
aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChpbmRleCk7CisgICAgICAgICAgICBTdG9yYWdlIHN0b3Jh
Z2UgPSBzdG9yYWdlRm9yR2VuZXJhdG9yTG9jYWwoaW5kZXgpOworCisgICAgICAgICAgICBVbmxp
bmtlZFZhbHVlUHJvZmlsZSBwcm9maWxlID0gY29kZUJsb2NrLT5hZGRWYWx1ZVByb2ZpbGUoKTsK
KyAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydChkYXRhLnJlc3VtZVBvaW50LAorICAg
ICAgICAgICAgICAgIG9wX2dldF9mcm9tX3Njb3BlLAorICAgICAgICAgICAgICAgIG9wZXJhbmQu
b2Zmc2V0KCksIC8vIGRzdAorICAgICAgICAgICAgICAgIHNjb3BlLm9mZnNldCgpLCAvLyBzY29w
ZQorICAgICAgICAgICAgICAgIHN0b3JhZ2UuaWRlbnRpZmllckluZGV4LCAvLyBpZGVudGlmaWVy
CisgICAgICAgICAgICAgICAgR2V0UHV0SW5mbyhEb05vdFRocm93SWZOb3RGb3VuZCwgTG9jYWxD
bG9zdXJlVmFyLCBJbml0aWFsaXphdGlvbk1vZGU6Ok5vdEluaXRpYWxpemF0aW9uKS5vcGVyYW5k
KCksIC8vIGluZm8KKyAgICAgICAgICAgICAgICAwLCAvLyBsb2NhbCBzY29wZSBkZXB0aAorICAg
ICAgICAgICAgICAgIHN0b3JhZ2Uuc2NvcGVPZmZzZXQub2Zmc2V0KCksIC8vIHNjb3BlIG9mZnNl
dAorICAgICAgICAgICAgICAgIHByb2ZpbGUgLy8gcHJvZmlsZQorICAgICAgICAgICAgKTsKKyAg
ICAgICAgfSk7CisKKyAgICAgICAgLy8gQ2xpcCB0aGUgdW5uZWNlc3NhcnkgYnl0ZWNvZGVzLgor
ICAgICAgICBtX2luc2VydGlvblNldC5yZW1vdmVCeXRlY29kZShkYXRhLnNhdmVQb2ludCk7Cisg
ICAgICAgIG1faW5zZXJ0aW9uU2V0LnJlbW92ZUJ5dGVjb2RlKGRhdGEucmVzdW1lUG9pbnQpOwor
ICAgIH0KKworICAgIG1faW5zZXJ0aW9uU2V0LmV4ZWN1dGUoKTsKK30KKwordm9pZCBwZXJmb3Jt
R2VuZXJhdG9yaWZpY2F0aW9uKFVubGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFVubGlua2Vk
Q29kZUJsb2NrOjpVbnBhY2tlZEluc3RydWN0aW9ucyYgaW5zdHJ1Y3Rpb25zLCBTeW1ib2xUYWJs
ZSogZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZSwgaW50IGdlbmVyYXRvckZyYW1lU3ltYm9sVGFi
bGVJbmRleCkKK3sKKyAgICBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbiBwYXNzKGNvZGVCbG9j
aywgaW5zdHJ1Y3Rpb25zLCBnZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlLCBnZW5lcmF0b3JGcmFt
ZVN5bWJvbFRhYmxlSW5kZXgpOworICAgIHBhc3MucnVuKCk7Cit9CisKK30gLy8gbmFtZXNwYWNl
IEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
R2VuZXJhdG9yaWZpY2F0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYjdlYzk2ZWQ3MGRiYmEyMjEx
MWViMTM3NzMzZmIyMDA1NWIxMTFhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmgKQEAgLTAsMCArMSwz
NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRl
YUBnbWFpbC5jb20+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiVW5saW5r
ZWRDb2RlQmxvY2suaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIFN5bWJvbFRhYmxlOwor
Cit2b2lkIHBlcmZvcm1HZW5lcmF0b3JpZmljYXRpb24oVW5saW5rZWRDb2RlQmxvY2sqLCBVbmxp
bmtlZENvZGVCbG9jazo6VW5wYWNrZWRJbnN0cnVjdGlvbnMmLCBTeW1ib2xUYWJsZSogZ2VuZXJh
dG9yRnJhbWVTeW1ib2xUYWJsZSwgaW50IGdlbmVyYXRvckZyYW1lU3ltYm9sVGFibGVJbmRleCk7
CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlR3JhcGguaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZUdyYXBoLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODY4YWQzNDg1NzE5NDNlOWE0MmQwYTc0ZTA0
NTFmNTJmZTYwNjRlMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZUdyYXBoLmgKQEAgLTAsMCArMSwxMTQgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTYgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkJ5dGVjb2RlQmFzaWNCbG9jay5oIgorI2lu
Y2x1ZGUgPHd0Zi9JdGVyYXRvclJhbmdlLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCitu
YW1lc3BhY2UgSlNDIHsKKworY2xhc3MgQnl0ZWNvZGVCYXNpY0Jsb2NrOworCit0ZW1wbGF0ZTx0
eXBlbmFtZSBCbG9jaz4KK2NsYXNzIEJ5dGVjb2RlR3JhcGggeworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEJ5dGVjb2RlR3JhcGgpOworcHVi
bGljOgorICAgIHR5cGVkZWYgQmxvY2sgQ29kZUJsb2NrOworICAgIHR5cGVkZWYgdHlwZW5hbWUg
QmxvY2s6Okluc3RydWN0aW9uIEluc3RydWN0aW9uOworICAgIHR5cGVkZWYgVmVjdG9yPHN0ZDo6
dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiBCYXNpY0Jsb2Nrc1ZlY3RvcjsKKworICAg
IGlubGluZSBCeXRlY29kZUdyYXBoKEJsb2NrKiwgdHlwZW5hbWUgQmxvY2s6OlVucGFja2VkSW5z
dHJ1Y3Rpb25zJik7CisKKyAgICBCbG9jayogY29kZUJsb2NrKCkgY29uc3QgeyByZXR1cm4gbV9j
b2RlQmxvY2s7IH0KKworICAgIEJhc2ljQmxvY2tzVmVjdG9yJiBiYXNpY0Jsb2NrcygpIHsgcmV0
dXJuIG1fYmFzaWNCbG9ja3M7IH0KKworICAgIHR5cGVuYW1lIEJsb2NrOjpVbnBhY2tlZEluc3Ry
dWN0aW9ucyYgaW5zdHJ1Y3Rpb25zKCkgeyByZXR1cm4gbV9pbnN0cnVjdGlvbnM7IH0KKworICAg
IFdURjo6SXRlcmF0b3JSYW5nZTxCYXNpY0Jsb2Nrc1ZlY3Rvcjo6cmV2ZXJzZV9pdGVyYXRvcj4g
YmFzaWNCbG9ja3NJblJldmVyc2VPcmRlcigpCisgICAgeworICAgICAgICByZXR1cm4gV1RGOjpt
YWtlSXRlcmF0b3JSYW5nZShtX2Jhc2ljQmxvY2tzLnJiZWdpbigpLCBtX2Jhc2ljQmxvY2tzLnJl
bmQoKSk7CisgICAgfQorCisgICAgc3RhdGljIGJvb2wgYmxvY2tDb250YWluc0J5dGVjb2RlT2Zm
c2V0KEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KQor
ICAgIHsKKyAgICAgICAgdW5zaWduZWQgbGVhZGVyT2Zmc2V0ID0gYmxvY2stPmxlYWRlckJ5dGVj
b2RlT2Zmc2V0KCk7CisgICAgICAgIHJldHVybiBieXRlY29kZU9mZnNldCA+PSBsZWFkZXJPZmZz
ZXQgJiYgYnl0ZWNvZGVPZmZzZXQgPCBsZWFkZXJPZmZzZXQgKyBibG9jay0+dG90YWxCeXRlY29k
ZUxlbmd0aCgpOworICAgIH0KKworICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogZmluZEJhc2ljQmxv
Y2tGb3JCeXRlY29kZU9mZnNldCh1bnNpZ25lZCBieXRlY29kZU9mZnNldCkKKyAgICB7CisgICAg
ICAgIC8qCisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9iYXNpY0Jsb2Nr
cy5zaXplKCk7IGkrKykgeworICAgICAgICAgICAgICAgIGlmIChibG9ja0NvbnRhaW5zQnl0ZWNv
ZGVPZmZzZXQobV9iYXNpY0Jsb2Nrc1tpXS5nZXQoKSwgYnl0ZWNvZGVPZmZzZXQpKQorICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gbV9iYXNpY0Jsb2Nrc1tpXS5nZXQoKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAqLworCisgICAgICAgIHN0ZDo6dW5p
cXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+KiBiYXNpY0Jsb2NrID0gYXBwcm94aW1hdGVCaW5h
cnlTZWFyY2g8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4sIHVuc2lnbmVkPiht
X2Jhc2ljQmxvY2tzLCBtX2Jhc2ljQmxvY2tzLnNpemUoKSwgYnl0ZWNvZGVPZmZzZXQsIFtdIChz
dGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiogYmFzaWNCbG9jaykgeyByZXR1cm4g
KCpiYXNpY0Jsb2NrKS0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKTsgfSk7CisgICAgICAgIC8vIFdl
IGZvdW5kIHRoZSBibG9jayB3ZSB3ZXJlIGxvb2tpbmcgZm9yLgorICAgICAgICBpZiAoYmxvY2tD
b250YWluc0J5dGVjb2RlT2Zmc2V0KCgqYmFzaWNCbG9jaykuZ2V0KCksIGJ5dGVjb2RlT2Zmc2V0
KSkKKyAgICAgICAgICAgIHJldHVybiAoKmJhc2ljQmxvY2spLmdldCgpOworCisgICAgICAgIC8v
IEJhc2ljIGJsb2NrIGlzIHRvIHRoZSBsZWZ0IG9mIHRoZSByZXR1cm5lZCBibG9jay4KKyAgICAg
ICAgaWYgKGJ5dGVjb2RlT2Zmc2V0IDwgKCpiYXNpY0Jsb2NrKS0+bGVhZGVyQnl0ZWNvZGVPZmZz
ZXQoKSkgeworICAgICAgICAgICAgQVNTRVJUKGJhc2ljQmxvY2sgLSAxID49IG1fYmFzaWNCbG9j
a3MuZGF0YSgpKTsKKyAgICAgICAgICAgIEFTU0VSVChibG9ja0NvbnRhaW5zQnl0ZWNvZGVPZmZz
ZXQoYmFzaWNCbG9ja1stMV0uZ2V0KCksIGJ5dGVjb2RlT2Zmc2V0KSk7CisgICAgICAgICAgICBy
ZXR1cm4gYmFzaWNCbG9ja1stMV0uZ2V0KCk7CisgICAgICAgIH0KKworICAgICAgICAvLyBCYXNp
YyBibG9jayBpcyB0byB0aGUgcmlnaHQgb2YgdGhlIHJldHVybmVkIGJsb2NrLgorICAgICAgICBB
U1NFUlQoJmJhc2ljQmxvY2tbMV0gPD0gJm1fYmFzaWNCbG9ja3MubGFzdCgpKTsKKyAgICAgICAg
QVNTRVJUKGJsb2NrQ29udGFpbnNCeXRlY29kZU9mZnNldChiYXNpY0Jsb2NrWzFdLmdldCgpLCBi
eXRlY29kZU9mZnNldCkpOworICAgICAgICByZXR1cm4gYmFzaWNCbG9ja1sxXS5nZXQoKTsKKyAg
ICB9CisKKyAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGZpbmRCYXNpY0Jsb2NrV2l0aExlYWRlck9m
ZnNldCh1bnNpZ25lZCBsZWFkZXJPZmZzZXQpCisgICAgeworICAgICAgICByZXR1cm4gKCp0cnlC
aW5hcnlTZWFyY2g8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4sIHVuc2lnbmVk
PihtX2Jhc2ljQmxvY2tzLCBtX2Jhc2ljQmxvY2tzLnNpemUoKSwgbGVhZGVyT2Zmc2V0LCBbXSAo
c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4qIGJhc2ljQmxvY2spIHsgcmV0dXJu
ICgqYmFzaWNCbG9jayktPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCk7IH0pKS5nZXQoKTsKKyAgICB9
CisKK3ByaXZhdGU6CisgICAgQmxvY2sqIG1fY29kZUJsb2NrOworICAgIEJhc2ljQmxvY2tzVmVj
dG9yIG1fYmFzaWNCbG9ja3M7CisgICAgdHlwZW5hbWUgQmxvY2s6OlVucGFja2VkSW5zdHJ1Y3Rp
b25zJiBtX2luc3RydWN0aW9uczsKK307CisKKwordGVtcGxhdGU8dHlwZW5hbWUgQmxvY2s+CitC
eXRlY29kZUdyYXBoPEJsb2NrPjo6Qnl0ZWNvZGVHcmFwaChCbG9jayogY29kZUJsb2NrLCB0eXBl
bmFtZSBCbG9jazo6VW5wYWNrZWRJbnN0cnVjdGlvbnMmIGluc3RydWN0aW9ucykKKyAgICA6IG1f
Y29kZUJsb2NrKGNvZGVCbG9jaykKKyAgICAsIG1faW5zdHJ1Y3Rpb25zKGluc3RydWN0aW9ucykK
K3sKKyAgICBBU1NFUlQobV9jb2RlQmxvY2spOworICAgIEJ5dGVjb2RlQmFzaWNCbG9jazo6Y29t
cHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MobV9jb2RlQmxvY2ssIGluc3RydWN0aW9ucy5iZWdpbigp
LCBpbnN0cnVjdGlvbnMuc2l6ZSgpLCBtX2Jhc2ljQmxvY2tzKTsKKyAgICBBU1NFUlQobV9iYXNp
Y0Jsb2Nrcy5zaXplKCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNp
cy5jcHAKaW5kZXggMTdlODJhMmZiYmEwMTUwNDNlOTlkMzRlZDI1NjkzNzJiMzZmN2E4NS4uZDNl
MGZjYmY4Zjc2MmVjZThmOGUzNTE4NTJkMTNlZWNkNTU0YmMyNiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNp
cy5jcHAKQEAgLTMxLDE4NSArMzEsNTQgQEAKICNpbmNsdWRlICJCeXRlY29kZVVzZURlZi5oIgog
I2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkZ1bGxCeXRlY29kZUxpdmVuZXNzLmgi
CisjaW5jbHVkZSAiSW50ZXJwcmV0ZXJJbmxpbmVzLmgiCiAjaW5jbHVkZSAiUHJlY2lzZUp1bXBU
YXJnZXRzLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCiBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6
OkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcyhDb2RlQmxvY2sqIGNvZGVCbG9jaykKLSAgICA6IG1f
Y29kZUJsb2NrKGNvZGVCbG9jaykKKyAgICA6IG1fZ3JhcGgoY29kZUJsb2NrLCBjb2RlQmxvY2st
Pmluc3RydWN0aW9ucygpKQogewotICAgIEFTU0VSVChtX2NvZGVCbG9jayk7CiAgICAgY29tcHV0
ZSgpOwogfQogCi1zdGF0aWMgYm9vbCBpc1ZhbGlkUmVnaXN0ZXJGb3JMaXZlbmVzcyhDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgaW50IG9wZXJhbmQpCit0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgor
dm9pZCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZz
ZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIE9wY29kZUlEIG9wY29kZUlELCBJbnN0cnVjdGlvbiog
aW5zdHJ1Y3Rpb24sIEZhc3RCaXRWZWN0b3ImLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQogewot
ICAgIGlmIChjb2RlQmxvY2stPmlzQ29uc3RhbnRSZWdpc3RlckluZGV4KG9wZXJhbmQpKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCi0gICAgVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWco
b3BlcmFuZCk7Ci0gICAgcmV0dXJuIHZpcnR1YWxSZWcuaXNMb2NhbCgpOwotfQotCi1zdGF0aWMg
dW5zaWduZWQgZ2V0TGVhZGVyT2Zmc2V0Rm9yQmFzaWNCbG9jayhzdGQ6OnVuaXF1ZV9wdHI8Qnl0
ZWNvZGVCYXNpY0Jsb2NrPiogYmFzaWNCbG9jaykKLXsKLSAgICByZXR1cm4gKCpiYXNpY0Jsb2Nr
KS0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKTsKLX0KLQotc3RhdGljIEJ5dGVjb2RlQmFzaWNCbG9j
ayogZmluZEJhc2ljQmxvY2tXaXRoTGVhZGVyT2Zmc2V0KFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8
Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mIGJhc2ljQmxvY2tzLCB1bnNpZ25lZCBsZWFkZXJPZmZzZXQp
Ci17Ci0gICAgcmV0dXJuICgqdHJ5QmluYXJ5U2VhcmNoPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29k
ZUJhc2ljQmxvY2s+LCB1bnNpZ25lZD4oYmFzaWNCbG9ja3MsIGJhc2ljQmxvY2tzLnNpemUoKSwg
bGVhZGVyT2Zmc2V0LCBnZXRMZWFkZXJPZmZzZXRGb3JCYXNpY0Jsb2NrKSkuZ2V0KCk7Ci19Ci0K
LXN0YXRpYyBib29sIGJsb2NrQ29udGFpbnNCeXRlY29kZU9mZnNldChCeXRlY29kZUJhc2ljQmxv
Y2sqIGJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCkKLXsKLSAgICB1bnNpZ25lZCBsZWFk
ZXJPZmZzZXQgPSBibG9jay0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKTsKLSAgICByZXR1cm4gYnl0
ZWNvZGVPZmZzZXQgPj0gbGVhZGVyT2Zmc2V0ICYmIGJ5dGVjb2RlT2Zmc2V0IDwgbGVhZGVyT2Zm
c2V0ICsgYmxvY2stPnRvdGFsQnl0ZWNvZGVMZW5ndGgoKTsKLX0KLQotc3RhdGljIEJ5dGVjb2Rl
QmFzaWNCbG9jayogZmluZEJhc2ljQmxvY2tGb3JCeXRlY29kZU9mZnNldChWZWN0b3I8c3RkOjp1
bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+JiBiYXNpY0Jsb2NrcywgdW5zaWduZWQgYnl0
ZWNvZGVPZmZzZXQpCi17Ci0vKgotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBiYXNpY0Js
b2Nrcy5zaXplKCk7IGkrKykgewotICAgICAgICBpZiAoYmxvY2tDb250YWluc0J5dGVjb2RlT2Zm
c2V0KGJhc2ljQmxvY2tzW2ldLmdldCgpLCBieXRlY29kZU9mZnNldCkpCi0gICAgICAgICAgICBy
ZXR1cm4gYmFzaWNCbG9ja3NbaV0uZ2V0KCk7Ci0gICAgfQotICAgIHJldHVybiAwOwotKi8KLSAg
ICBzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiogYmFzaWNCbG9jayA9IGFwcHJv
eGltYXRlQmluYXJ5U2VhcmNoPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+LCB1
bnNpZ25lZD4oCi0gICAgICAgIGJhc2ljQmxvY2tzLCBiYXNpY0Jsb2Nrcy5zaXplKCksIGJ5dGVj
b2RlT2Zmc2V0LCBnZXRMZWFkZXJPZmZzZXRGb3JCYXNpY0Jsb2NrKTsKLSAgICAvLyBXZSBmb3Vu
ZCB0aGUgYmxvY2sgd2Ugd2VyZSBsb29raW5nIGZvci4KLSAgICBpZiAoYmxvY2tDb250YWluc0J5
dGVjb2RlT2Zmc2V0KCgqYmFzaWNCbG9jaykuZ2V0KCksIGJ5dGVjb2RlT2Zmc2V0KSkKLSAgICAg
ICAgcmV0dXJuICgqYmFzaWNCbG9jaykuZ2V0KCk7Ci0KLSAgICAvLyBCYXNpYyBibG9jayBpcyB0
byB0aGUgbGVmdCBvZiB0aGUgcmV0dXJuZWQgYmxvY2suCi0gICAgaWYgKGJ5dGVjb2RlT2Zmc2V0
IDwgKCpiYXNpY0Jsb2NrKS0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKSkgewotICAgICAgICBBU1NF
UlQoYmFzaWNCbG9jayAtIDEgPj0gYmFzaWNCbG9ja3MuZGF0YSgpKTsKLSAgICAgICAgQVNTRVJU
KGJsb2NrQ29udGFpbnNCeXRlY29kZU9mZnNldChiYXNpY0Jsb2NrWy0xXS5nZXQoKSwgYnl0ZWNv
ZGVPZmZzZXQpKTsKLSAgICAgICAgcmV0dXJuIGJhc2ljQmxvY2tbLTFdLmdldCgpOwotICAgIH0K
LQotICAgIC8vIEJhc2ljIGJsb2NrIGlzIHRvIHRoZSByaWdodCBvZiB0aGUgcmV0dXJuZWQgYmxv
Y2suCi0gICAgQVNTRVJUKCZiYXNpY0Jsb2NrWzFdIDw9ICZiYXNpY0Jsb2Nrcy5sYXN0KCkpOwot
ICAgIEFTU0VSVChibG9ja0NvbnRhaW5zQnl0ZWNvZGVPZmZzZXQoYmFzaWNCbG9ja1sxXS5nZXQo
KSwgYnl0ZWNvZGVPZmZzZXQpKTsKLSAgICByZXR1cm4gYmFzaWNCbG9ja1sxXS5nZXQoKTsKLX0K
LQotLy8gU2ltcGxpZmllZCBpbnRlcmZhY2UgdG8gYnl0ZWNvZGUgdXNlL2RlZiwgd2hpY2ggZGV0
ZXJtaW5lcyBkZWZzIGZpcnN0IGFuZCB0aGVuIHVzZXMsIGFuZCBpbmNsdWRlcwotLy8gZXhjZXB0
aW9uIGhhbmRsZXJzIGluIHRoZSB1c2VzLgotdGVtcGxhdGU8dHlwZW5hbWUgVXNlRnVuY3Rvciwg
dHlwZW5hbWUgRGVmRnVuY3Rvcj4KLXN0YXRpYyB2b2lkIHN0ZXBPdmVySW5zdHJ1Y3Rpb24oQ29k
ZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2ssIFZlY3RvcjxzdGQ6
OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mIGJhc2ljQmxvY2tzLCB1bnNpZ25lZCBi
eXRlY29kZU9mZnNldCwgY29uc3QgVXNlRnVuY3RvciYgdXNlLCBjb25zdCBEZWZGdW5jdG9yJiBk
ZWYpCi17Ci0gICAgLy8gVGhpcyBhYnN0cmFjdGx5IGV4ZWN1dGUgdGhlIGluc3RydWN0aW9uIGlu
IHJldmVyc2UuIEluc3RydWN0aW9ucyBsb2dpY2FsbHkgZmlyc3QgdXNlIG9wZXJhbmRzIGFuZAot
ICAgIC8vIHRoZW4gZGVmaW5lIG9wZXJhbmRzLiBUaGlzIGxvZ2ljYWwgb3JkZXJpbmcgaXMgbmVj
ZXNzYXJ5IGZvciBvcGVyYXRpb25zIHRoYXQgdXNlIGFuZCBkZWYgdGhlIHNhbWUKLSAgICAvLyBv
cGVyYW5kLCBsaWtlOgotICAgIC8vCi0gICAgLy8gICAgIG9wX2FkZCBsb2MxLCBsb2MxLCBsb2My
Ci0gICAgLy8KLSAgICAvLyBUaGUgdXNlIG9mIGxvYzEgaGFwcGVucyBiZWZvcmUgdGhlIGRlZiBv
ZiBsb2MxLiBUaGF0J3MgYSBzZW1hbnRpYyByZXF1aXJlbWVudCBzaW5jZSB0aGUgYWRkCi0gICAg
Ly8gb3BlcmF0aW9uIGNhbm5vdCB0cmF2ZWwgZm9yd2FyZCBpbiB0aW1lIHRvIHJlYWQgdGhlIHZh
bHVlIHRoYXQgaXQgd2lsbCBwcm9kdWNlIGFmdGVyIHJlYWRpbmcgdGhhdAotICAgIC8vIHZhbHVl
LiBTaW5jZSB3ZSBhcmUgZXhlY3V0aW5nIGluIHJldmVyc2UsIHRoaXMgbWVhbnMgdGhhdCB3ZSBt
dXN0IGRvIGRlZnMgYmVmb3JlIHVzZXMgKHJldmVyc2Ugb2YKLSAgICAvLyB1c2VzIGJlZm9yZSBk
ZWZzKS4KLSAgICAvLwotICAgIC8vIFNpbmNlIHRoaXMgaXMgYSBsaXZlbmVzcyBhbmFseXNpcywg
dGhpcyBvcmRlcmluZyBlbmRzIHVwIGJlaW5nIHBhcnRpY3VsYXJseSBpbXBvcnRhbnQ6IGlmIHdl
IGRpZAotICAgIC8vIHVzZXMgYmVmb3JlIGRlZnMsIHRoZW4gdGhlIGFkZCBvcGVyYXRpb24gYWJv
dmUgd291bGQgYXBwZWFyIHRvIG5vdCBoYXZlIGxvYzEgbGl2ZSwgc2luY2Ugd2UnZAotICAgIC8v
IGZpcnN0IGFkZCBpdCB0byB0aGUgb3V0IHNldCAodGhlIHVzZSksIGFuZCB0aGVuIHdlJ2QgcmVt
b3ZlIGl0ICh0aGUgZGVmKS4KLSAgICAKLSAgICBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0
KAotICAgICAgICBjb2RlQmxvY2ssIGJsb2NrLCBieXRlY29kZU9mZnNldCwKLSAgICAgICAgWyZd
IChDb2RlQmxvY2sqIGNvZGVCbG9jaywgSW5zdHJ1Y3Rpb24qLCBPcGNvZGVJRCwgaW50IG9wZXJh
bmQpIHsKLSAgICAgICAgICAgIGlmIChpc1ZhbGlkUmVnaXN0ZXJGb3JMaXZlbmVzcyhjb2RlQmxv
Y2ssIG9wZXJhbmQpKQotICAgICAgICAgICAgICAgIGRlZihWaXJ0dWFsUmVnaXN0ZXIob3BlcmFu
ZCkudG9Mb2NhbCgpKTsKLSAgICAgICAgfSk7Ci0KLSAgICBjb21wdXRlVXNlc0ZvckJ5dGVjb2Rl
T2Zmc2V0KAotICAgICAgICBjb2RlQmxvY2ssIGJsb2NrLCBieXRlY29kZU9mZnNldCwKLSAgICAg
ICAgWyZdIChDb2RlQmxvY2sqIGNvZGVCbG9jaywgSW5zdHJ1Y3Rpb24qLCBPcGNvZGVJRCwgaW50
IG9wZXJhbmQpIHsKLSAgICAgICAgICAgIGlmIChpc1ZhbGlkUmVnaXN0ZXJGb3JMaXZlbmVzcyhj
b2RlQmxvY2ssIG9wZXJhbmQpKQotICAgICAgICAgICAgICAgIHVzZShWaXJ0dWFsUmVnaXN0ZXIo
b3BlcmFuZCkudG9Mb2NhbCgpKTsKLSAgICAgICAgfSk7Ci0KLSAgICAvLyBJZiB3ZSBoYXZlIGFu
IGV4Y2VwdGlvbiBoYW5kbGVyLCB3ZSB3YW50IHRoZSBsaXZlLWluIHZhcmlhYmxlcyBvZiB0aGUg
Ci0gICAgLy8gZXhjZXB0aW9uIGhhbmRsZXIgYmxvY2sgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIGxp
dmUtaW4gb2YgdGhpcyBwYXJ0aWN1bGFyIGJ5dGVjb2RlLgotICAgIGlmIChIYW5kbGVySW5mbyog
aGFuZGxlciA9IGNvZGVCbG9jay0+aGFuZGxlckZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zm
c2V0KSkgewotICAgICAgICAvLyBGSVhNRTogVGhpcyByZXN1bWUgY2hlY2sgc2hvdWxkIG5vdCBi
ZSBuZWVkZWQuCi0gICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNTkyODEKLSAgICAgICAgSW50ZXJwcmV0ZXIqIGludGVycHJldGVyID0gY29kZUJsb2Nr
LT52bSgpLT5pbnRlcnByZXRlcjsKLSAgICAgICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0Jl
Z2luID0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpOwotICAgICAgICBJbnN0cnVj
dGlvbiogaW5zdHJ1Y3Rpb24gPSAmaW5zdHJ1Y3Rpb25zQmVnaW5bYnl0ZWNvZGVPZmZzZXRdOwot
ICAgICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGludGVycHJldGVyLT5nZXRPcGNvZGVJRChpbnN0
cnVjdGlvbi0+dS5vcGNvZGUpOwotICAgICAgICBpZiAob3Bjb2RlSUQgIT0gb3BfcmVzdW1lKSB7
Ci0gICAgICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGhhbmRsZXJCbG9jayA9IGZpbmRCYXNp
Y0Jsb2NrV2l0aExlYWRlck9mZnNldChiYXNpY0Jsb2NrcywgaGFuZGxlci0+dGFyZ2V0KTsKLSAg
ICAgICAgICAgIEFTU0VSVChoYW5kbGVyQmxvY2spOwotICAgICAgICAgICAgaGFuZGxlckJsb2Nr
LT5pbigpLmZvckVhY2hTZXRCaXQodXNlKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotc3RhdGlj
IHZvaWQgc3RlcE92ZXJJbnN0cnVjdGlvbihDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVC
YXNpY0Jsb2NrKiBibG9jaywgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxv
Y2s+PiYgYmFzaWNCbG9ja3MsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBGYXN0Qml0VmVjdG9y
JiBvdXQpCi17Ci0gICAgc3RlcE92ZXJJbnN0cnVjdGlvbigKLSAgICAgICAgY29kZUJsb2NrLCBi
bG9jaywgYmFzaWNCbG9ja3MsIGJ5dGVjb2RlT2Zmc2V0LAotICAgICAgICBbJl0gKHVuc2lnbmVk
IGJpdEluZGV4KSB7Ci0gICAgICAgICAgICAvLyBUaGlzIGlzIHRoZSB1c2UgZnVuY3Rvciwgc28g
d2Ugc2V0IHRoZSBiaXQuCi0gICAgICAgICAgICBvdXQuc2V0KGJpdEluZGV4KTsKLSAgICAgICAg
fSwKLSAgICAgICAgWyZdICh1bnNpZ25lZCBiaXRJbmRleCkgewotICAgICAgICAgICAgLy8gVGhp
cyBpcyB0aGUgZGVmIGZ1bmN0b3IsIHNvIHdlIGNsZWFyIHRoZSBiaXQuCi0gICAgICAgICAgICBv
dXQuY2xlYXIoYml0SW5kZXgpOwotICAgICAgICB9KTsKLX0KLQotc3RhdGljIHZvaWQgY29tcHV0
ZUxvY2FsTGl2ZW5lc3NGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0
ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaywgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJh
c2ljQmxvY2s+PiYgYmFzaWNCbG9ja3MsIHVuc2lnbmVkIHRhcmdldE9mZnNldCwgRmFzdEJpdFZl
Y3RvciYgcmVzdWx0KQotewotICAgIEFTU0VSVCghYmxvY2stPmlzRXhpdEJsb2NrKCkpOwotICAg
IEFTU0VSVCghYmxvY2stPmlzRW50cnlCbG9jaygpKTsKLQotICAgIEZhc3RCaXRWZWN0b3Igb3V0
ID0gYmxvY2stPm91dCgpOwotCi0gICAgZm9yIChpbnQgaSA9IGJsb2NrLT5ieXRlY29kZU9mZnNl
dHMoKS5zaXplKCkgLSAxOyBpID49IDA7IGktLSkgewotICAgICAgICB1bnNpZ25lZCBieXRlY29k
ZU9mZnNldCA9IGJsb2NrLT5ieXRlY29kZU9mZnNldHMoKVtpXTsKLSAgICAgICAgaWYgKHRhcmdl
dE9mZnNldCA+IGJ5dGVjb2RlT2Zmc2V0KQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIAot
ICAgICAgICBzdGVwT3Zlckluc3RydWN0aW9uKGNvZGVCbG9jaywgYmxvY2ssIGJhc2ljQmxvY2tz
LCBieXRlY29kZU9mZnNldCwgb3V0KTsKLSAgICB9Ci0KLSAgICByZXN1bHQuc2V0KG91dCk7Cisg
ICAgSlNDOjpjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9jaywgb3Bjb2RlSUQs
IGluc3RydWN0aW9uLCBmdW5jdG9yKTsKIH0KIAotc3RhdGljIHZvaWQgY29tcHV0ZUxvY2FsTGl2
ZW5lc3NGb3JCbG9jayhDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBi
bG9jaywgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYgYmFzaWNC
bG9ja3MpCit0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgordm9pZCBCeXRlY29kZUxpdmVuZXNz
QW5hbHlzaXM6OmNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssIE9wY29kZUlEIG9wY29kZUlELCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIEZhc3RCaXRW
ZWN0b3ImLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQogewotICAgIGlmIChibG9jay0+aXNFeGl0
QmxvY2soKSB8fCBibG9jay0+aXNFbnRyeUJsb2NrKCkpCi0gICAgICAgIHJldHVybjsKLSAgICBj
b21wdXRlTG9jYWxMaXZlbmVzc0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9jaywgYmxvY2ssIGJh
c2ljQmxvY2tzLCBibG9jay0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKSwgYmxvY2stPmluKCkpOwor
ICAgIEpTQzo6Y29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldChjb2RlQmxvY2ssIG9wY29kZUlE
LCBpbnN0cnVjdGlvbiwgZnVuY3Rvcik7CiB9CiAKIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5
c2lzOjpydW5MaXZlbmVzc0ZpeHBvaW50KCkKIHsKLSAgICBVbmxpbmtlZENvZGVCbG9jayogdW5s
aW5rZWRDb2RlQmxvY2sgPSBtX2NvZGVCbG9jay0+dW5saW5rZWRDb2RlQmxvY2soKTsKKyAgICBD
b2RlQmxvY2sqIGNvZGVCbG9jayA9IG1fZ3JhcGguY29kZUJsb2NrKCk7CisgICAgVW5saW5rZWRD
b2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrID0gY29kZUJsb2NrLT51bmxpbmtlZENvZGVCbG9j
aygpOwogICAgIHVuc2lnbmVkIG51bWJlck9mVmFyaWFibGVzID0gdW5saW5rZWRDb2RlQmxvY2st
Pm1fbnVtQ2FsbGVlTG9jYWxzOwogCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fYmFz
aWNCbG9ja3Muc2l6ZSgpOyBpKyspIHsKLSAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9j
ayA9IG1fYmFzaWNCbG9ja3NbaV0uZ2V0KCk7CisgICAgZm9yIChzdGQ6OnVuaXF1ZV9wdHI8Qnl0
ZWNvZGVCYXNpY0Jsb2NrPiYgYmxvY2sgOiBtX2dyYXBoLmJhc2ljQmxvY2tzKCkpIHsKICAgICAg
ICAgYmxvY2stPmluKCkucmVzaXplKG51bWJlck9mVmFyaWFibGVzKTsKICAgICAgICAgYmxvY2st
Pm91dCgpLnJlc2l6ZShudW1iZXJPZlZhcmlhYmxlcyk7CiAgICAgfQogCiAgICAgYm9vbCBjaGFu
Z2VkOwotICAgIG1fYmFzaWNCbG9ja3MubGFzdCgpLT5pbigpLmNsZWFyQWxsKCk7Ci0gICAgbV9i
YXNpY0Jsb2Nrcy5sYXN0KCktPm91dCgpLmNsZWFyQWxsKCk7CisgICAgQnl0ZWNvZGVCYXNpY0Js
b2NrKiBsYXN0QmxvY2sgPSBtX2dyYXBoLmJhc2ljQmxvY2tzKCkubGFzdCgpLmdldCgpOworICAg
IGxhc3RCbG9jay0+aW4oKS5jbGVhckFsbCgpOworICAgIGxhc3RCbG9jay0+b3V0KCkuY2xlYXJB
bGwoKTsKICAgICBGYXN0Qml0VmVjdG9yIG5ld091dDsKLSAgICBuZXdPdXQucmVzaXplKG1fYmFz
aWNCbG9ja3MubGFzdCgpLT5vdXQoKS5udW1CaXRzKCkpOworICAgIG5ld091dC5yZXNpemUobGFz
dEJsb2NrLT5vdXQoKS5udW1CaXRzKCkpOwogICAgIGRvIHsKICAgICAgICAgY2hhbmdlZCA9IGZh
bHNlOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2Jhc2ljQmxvY2tzLnNpemUoKSAtIDE7
IGktLTspIHsKLSAgICAgICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2sgPSBtX2Jhc2lj
QmxvY2tzW2ldLmdldCgpOworICAgICAgICBmb3IgKHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJh
c2ljQmxvY2s+JiBibG9jayA6IG1fZ3JhcGguYmFzaWNCbG9ja3NJblJldmVyc2VPcmRlcigpKSB7
CiAgICAgICAgICAgICBuZXdPdXQuY2xlYXJBbGwoKTsKLSAgICAgICAgICAgIGZvciAodW5zaWdu
ZWQgaiA9IDA7IGogPCBibG9jay0+c3VjY2Vzc29ycygpLnNpemUoKTsgaisrKQotICAgICAgICAg
ICAgICAgIG5ld091dC5tZXJnZShibG9jay0+c3VjY2Vzc29ycygpW2pdLT5pbigpKTsKKyAgICAg
ICAgICAgIGZvciAoQnl0ZWNvZGVCYXNpY0Jsb2NrKiBzdWNjZXNzb3IgOiBibG9jay0+c3VjY2Vz
c29ycygpKQorICAgICAgICAgICAgICAgIG5ld091dC5tZXJnZShzdWNjZXNzb3ItPmluKCkpOwog
ICAgICAgICAgICAgYm9vbCBvdXREaWRDaGFuZ2UgPSBibG9jay0+b3V0KCkuc2V0QW5kQ2hlY2so
bmV3T3V0KTsKLSAgICAgICAgICAgIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQmxvY2sobV9jb2Rl
QmxvY2ssIGJsb2NrLCBtX2Jhc2ljQmxvY2tzKTsKKyAgICAgICAgICAgIGNvbXB1dGVMb2NhbExp
dmVuZXNzRm9yQmxvY2sobV9ncmFwaCwgYmxvY2suZ2V0KCkpOwogICAgICAgICAgICAgY2hhbmdl
ZCB8PSBvdXREaWRDaGFuZ2U7CiAgICAgICAgIH0KICAgICB9IHdoaWxlIChjaGFuZ2VkKTsKQEAg
LTIxNywxMiArODYsMTIgQEAgdm9pZCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OnJ1bkxpdmVu
ZXNzRml4cG9pbnQoKQogCiB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Z2V0TGl2ZW5l
c3NJbmZvQXRCeXRlY29kZU9mZnNldCh1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgRmFzdEJpdFZl
Y3RvciYgcmVzdWx0KQogewotICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2sgPSBmaW5kQmFz
aWNCbG9ja0ZvckJ5dGVjb2RlT2Zmc2V0KG1fYmFzaWNCbG9ja3MsIGJ5dGVjb2RlT2Zmc2V0KTsK
KyAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrID0gbV9ncmFwaC5maW5kQmFzaWNCbG9ja0Zv
ckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KTsKICAgICBBU1NFUlQoYmxvY2spOwogICAg
IEFTU0VSVCghYmxvY2stPmlzRW50cnlCbG9jaygpKTsKICAgICBBU1NFUlQoIWJsb2NrLT5pc0V4
aXRCbG9jaygpKTsKICAgICByZXN1bHQucmVzaXplKGJsb2NrLT5vdXQoKS5udW1CaXRzKCkpOwot
ICAgIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQnl0ZWNvZGVPZmZzZXQobV9jb2RlQmxvY2ssIGJs
b2NrLCBtX2Jhc2ljQmxvY2tzLCBieXRlY29kZU9mZnNldCwgcmVzdWx0KTsKKyAgICBjb21wdXRl
TG9jYWxMaXZlbmVzc0ZvckJ5dGVjb2RlT2Zmc2V0KG1fZ3JhcGgsIGJsb2NrLCBieXRlY29kZU9m
ZnNldCwgcmVzdWx0KTsKIH0KIAogYm9vbCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6Om9wZXJh
bmRJc0xpdmVBdEJ5dGVjb2RlT2Zmc2V0KGludCBvcGVyYW5kLCB1bnNpZ25lZCBieXRlY29kZU9m
ZnNldCkKQEAgLTI0NCwxMSArMTEzLDExIEBAIEZhc3RCaXRWZWN0b3IgQnl0ZWNvZGVMaXZlbmVz
c0FuYWx5c2lzOjpnZXRMaXZlbmVzc0luZm9BdEJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkCiB2b2lk
IEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0ZUZ1bGxMaXZlbmVzcyhGdWxsQnl0ZWNv
ZGVMaXZlbmVzcyYgcmVzdWx0KQogewogICAgIEZhc3RCaXRWZWN0b3Igb3V0OworICAgIENvZGVC
bG9jayogY29kZUJsb2NrID0gbV9ncmFwaC5jb2RlQmxvY2soKTsKICAgICAKLSAgICByZXN1bHQu
bV9tYXAucmVzaXplKG1fY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5zaXplKCkpOworICAgIHJl
c3VsdC5tX21hcC5yZXNpemUoY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5zaXplKCkpOwogICAg
IAotICAgIGZvciAodW5zaWduZWQgaSA9IG1fYmFzaWNCbG9ja3Muc2l6ZSgpOyBpLS07KSB7Ci0g
ICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2sgPSBtX2Jhc2ljQmxvY2tzW2ldLmdldCgp
OworICAgIGZvciAoc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4mIGJsb2NrIDog
bV9ncmFwaC5iYXNpY0Jsb2Nrc0luUmV2ZXJzZU9yZGVyKCkpIHsKICAgICAgICAgaWYgKGJsb2Nr
LT5pc0VudHJ5QmxvY2soKSB8fCBibG9jay0+aXNFeGl0QmxvY2soKSkKICAgICAgICAgICAgIGNv
bnRpbnVlOwogICAgICAgICAKQEAgLTI1Niw3ICsxMjUsNyBAQCB2b2lkIEJ5dGVjb2RlTGl2ZW5l
c3NBbmFseXNpczo6Y29tcHV0ZUZ1bGxMaXZlbmVzcyhGdWxsQnl0ZWNvZGVMaXZlbmVzcyYgcmVz
dWx0KQogICAgICAgICAKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gYmxvY2stPmJ5dGVjb2Rl
T2Zmc2V0cygpLnNpemUoKTsgaS0tOykgewogICAgICAgICAgICAgdW5zaWduZWQgYnl0ZWNvZGVP
ZmZzZXQgPSBibG9jay0+Ynl0ZWNvZGVPZmZzZXRzKClbaV07Ci0gICAgICAgICAgICBzdGVwT3Zl
ckluc3RydWN0aW9uKG1fY29kZUJsb2NrLCBibG9jaywgbV9iYXNpY0Jsb2NrcywgYnl0ZWNvZGVP
ZmZzZXQsIG91dCk7CisgICAgICAgICAgICBzdGVwT3Zlckluc3RydWN0aW9uKG1fZ3JhcGgsIGJ5
dGVjb2RlT2Zmc2V0LCBvdXQpOwogICAgICAgICAgICAgcmVzdWx0Lm1fbWFwW2J5dGVjb2RlT2Zm
c2V0XSA9IG91dDsKICAgICAgICAgfQogICAgIH0KQEAgLTI2NiwxMSArMTM1LDExIEBAIHZvaWQg
Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlS2lsbHMoQnl0ZWNvZGVLaWxscyYgcmVz
dWx0KQogewogICAgIEZhc3RCaXRWZWN0b3Igb3V0OwogICAgIAotICAgIHJlc3VsdC5tX2NvZGVC
bG9jayA9IG1fY29kZUJsb2NrOwotICAgIHJlc3VsdC5tX2tpbGxTZXRzID0gc3RkOjptYWtlX3Vu
aXF1ZTxCeXRlY29kZUtpbGxzOjpLaWxsU2V0W10+KG1fY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMo
KS5zaXplKCkpOworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gbV9ncmFwaC5jb2RlQmxvY2so
KTsKKyAgICByZXN1bHQubV9jb2RlQmxvY2sgPSBjb2RlQmxvY2s7CisgICAgcmVzdWx0Lm1fa2ls
bFNldHMgPSBzdGQ6Om1ha2VfdW5pcXVlPEJ5dGVjb2RlS2lsbHM6OktpbGxTZXRbXT4oY29kZUJs
b2NrLT5pbnN0cnVjdGlvbnMoKS5zaXplKCkpOwogICAgIAotICAgIGZvciAodW5zaWduZWQgaSA9
IG1fYmFzaWNCbG9ja3Muc2l6ZSgpOyBpLS07KSB7Ci0gICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9j
ayogYmxvY2sgPSBtX2Jhc2ljQmxvY2tzW2ldLmdldCgpOworICAgIGZvciAoc3RkOjp1bmlxdWVf
cHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4mIGJsb2NrIDogbV9ncmFwaC5iYXNpY0Jsb2Nrc0luUmV2
ZXJzZU9yZGVyKCkpIHsKICAgICAgICAgaWYgKGJsb2NrLT5pc0VudHJ5QmxvY2soKSB8fCBibG9j
ay0+aXNFeGl0QmxvY2soKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAKQEAgLTI3
OSw3ICsxNDgsNyBAQCB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0ZUtpbGxz
KEJ5dGVjb2RlS2lsbHMmIHJlc3VsdCkKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gYmxvY2st
PmJ5dGVjb2RlT2Zmc2V0cygpLnNpemUoKTsgaS0tOykgewogICAgICAgICAgICAgdW5zaWduZWQg
Ynl0ZWNvZGVPZmZzZXQgPSBibG9jay0+Ynl0ZWNvZGVPZmZzZXRzKClbaV07CiAgICAgICAgICAg
ICBzdGVwT3Zlckluc3RydWN0aW9uKAotICAgICAgICAgICAgICAgIG1fY29kZUJsb2NrLCBibG9j
aywgbV9iYXNpY0Jsb2NrcywgYnl0ZWNvZGVPZmZzZXQsCisgICAgICAgICAgICAgICAgbV9ncmFw
aCwgYnl0ZWNvZGVPZmZzZXQsIG91dCwKICAgICAgICAgICAgICAgICBbJl0gKHVuc2lnbmVkIGlu
ZGV4KSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgZm9yIHVzZXMuCiAgICAgICAg
ICAgICAgICAgICAgIGlmIChvdXQuZ2V0KGluZGV4KSkKQEAgLTI5NywxMiArMTY2LDEzIEBAIHZv
aWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlS2lsbHMoQnl0ZWNvZGVLaWxscyYg
cmVzdWx0KQogCiB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6ZHVtcFJlc3VsdHMoKQog
ewotICAgIGRhdGFMb2coIlxuRHVtcGluZyBieXRlY29kZSBsaXZlbmVzcyBmb3IgIiwgKm1fY29k
ZUJsb2NrLCAiOlxuIik7Ci0gICAgSW50ZXJwcmV0ZXIqIGludGVycHJldGVyID0gbV9jb2RlQmxv
Y2stPnZtKCktPmludGVycHJldGVyOwotICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdp
biA9IG1fY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpOwotICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBtX2Jhc2ljQmxvY2tzLnNpemUoKTsgaSsrKSB7Ci0gICAgICAgIEJ5dGVj
b2RlQmFzaWNCbG9jayogYmxvY2sgPSBtX2Jhc2ljQmxvY2tzW2ldLmdldCgpOwotICAgICAgICBk
YXRhTG9nRigiXG5CeXRlY29kZSBiYXNpYyBibG9jayAldTogJXAgKG9mZnNldDogJXUsIGxlbmd0
aDogJXUpXG4iLCBpLCBibG9jaywgYmxvY2stPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCksIGJsb2Nr
LT50b3RhbEJ5dGVjb2RlTGVuZ3RoKCkpOworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gbV9n
cmFwaC5jb2RlQmxvY2soKTsKKyAgICBkYXRhTG9nKCJcbkR1bXBpbmcgYnl0ZWNvZGUgbGl2ZW5l
c3MgZm9yICIsICpjb2RlQmxvY2ssICI6XG4iKTsKKyAgICBJbnRlcnByZXRlciogaW50ZXJwcmV0
ZXIgPSBjb2RlQmxvY2stPnZtKCktPmludGVycHJldGVyOworICAgIEluc3RydWN0aW9uKiBpbnN0
cnVjdGlvbnNCZWdpbiA9IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsKKyAgICB1
bnNpZ25lZCBpID0gMDsKKyAgICBmb3IgKHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxv
Y2s+JiBibG9jayA6IG1fZ3JhcGguYmFzaWNCbG9ja3MoKSkgeworICAgICAgICBkYXRhTG9nRigi
XG5CeXRlY29kZSBiYXNpYyBibG9jayAldTogJXAgKG9mZnNldDogJXUsIGxlbmd0aDogJXUpXG4i
LCBpKyssIGJsb2NrLmdldCgpLCBibG9jay0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKSwgYmxvY2st
PnRvdGFsQnl0ZWNvZGVMZW5ndGgoKSk7CiAgICAgICAgIGRhdGFMb2dGKCJTdWNjZXNzb3JzOiAi
KTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8IGJsb2NrLT5zdWNjZXNzb3JzKCku
c2l6ZSgpOyBqKyspIHsKICAgICAgICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogc3VjY2Vzc29y
ID0gYmxvY2stPnN1Y2Nlc3NvcnMoKVtqXTsKQEAgLTMxMCwxMSArMTgwLDExIEBAIHZvaWQgQnl0
ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpkdW1wUmVzdWx0cygpCiAgICAgICAgIH0KICAgICAgICAg
ZGF0YUxvZ0YoIlxuIik7CiAgICAgICAgIGlmIChibG9jay0+aXNFbnRyeUJsb2NrKCkpIHsKLSAg
ICAgICAgICAgIGRhdGFMb2dGKCJFbnRyeSBibG9jayAlcFxuIiwgYmxvY2spOworICAgICAgICAg
ICAgZGF0YUxvZ0YoIkVudHJ5IGJsb2NrICVwXG4iLCBibG9jay5nZXQoKSk7CiAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgfQogICAgICAgICBpZiAoYmxvY2stPmlzRXhpdEJsb2NrKCkp
IHsKLSAgICAgICAgICAgIGRhdGFMb2dGKCJFeGl0IGJsb2NrOiAlcFxuIiwgYmxvY2spOworICAg
ICAgICAgICAgZGF0YUxvZ0YoIkV4aXQgYmxvY2s6ICVwXG4iLCBibG9jay5nZXQoKSk7CiAgICAg
ICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogICAgICAgICBmb3IgKHVuc2lnbmVkIGJ5dGVj
b2RlT2Zmc2V0ID0gYmxvY2stPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCk7IGJ5dGVjb2RlT2Zmc2V0
IDwgYmxvY2stPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCkgKyBibG9jay0+dG90YWxCeXRlY29kZUxl
bmd0aCgpOykgewpAQCAtMzI3LDcgKzE5Nyw3IEBAIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5
c2lzOjpkdW1wUmVzdWx0cygpCiAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2dGKCIldSAiLCBq
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGRhdGFMb2dGKCJcbiIpOwotICAgICAgICAg
ICAgbV9jb2RlQmxvY2stPmR1bXBCeXRlY29kZShXVEY6OmRhdGFGaWxlKCksIG1fY29kZUJsb2Nr
LT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpLCBpbnN0cnVjdGlvbnNCZWdpbiwgY3VycmVu
dEluc3RydWN0aW9uKTsKKyAgICAgICAgICAgIGNvZGVCbG9jay0+ZHVtcEJ5dGVjb2RlKFdURjo6
ZGF0YUZpbGUoKSwgY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpLCBpbnN0
cnVjdGlvbnNCZWdpbiwgY3VycmVudEluc3RydWN0aW9uKTsKIAogICAgICAgICAgICAgT3Bjb2Rl
SUQgb3Bjb2RlSUQgPSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25zQmVnaW5b
Ynl0ZWNvZGVPZmZzZXRdLnUub3Bjb2RlKTsKICAgICAgICAgICAgIHVuc2lnbmVkIG9wY29kZUxl
bmd0aCA9IG9wY29kZUxlbmd0aHNbb3Bjb2RlSURdOwpAQCAtMzQ2LDggKzIxNiw2IEBAIHZvaWQg
Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpkdW1wUmVzdWx0cygpCiAKIHZvaWQgQnl0ZWNvZGVM
aXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlKCkKIHsKLSAgICBjb21wdXRlQnl0ZWNvZGVCYXNpY0Js
b2NrcyhtX2NvZGVCbG9jaywgbV9iYXNpY0Jsb2Nrcyk7Ci0gICAgQVNTRVJUKG1fYmFzaWNCbG9j
a3Muc2l6ZSgpKTsKICAgICBydW5MaXZlbmVzc0ZpeHBvaW50KCk7CiAKICAgICBpZiAoT3B0aW9u
czo6ZHVtcEJ5dGVjb2RlTGl2ZW5lc3NSZXN1bHRzKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmgKaW5kZXgg
ZWNlMTZmMjFmMDE1MTBhNjQyN2ZkODQxMTQwNzliZWQ4NzBjMDg3NS4uYTEwYzM1YzE2ZmVjZjg5
MTZhN2RhZTA4ZmNlYTcwMjc4NjFhYzExOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuaApAQCAtMjMsMTAg
KzIzLDExIEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lm
bmRlZiBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNfaAotI2RlZmluZSBCeXRlY29kZUxpdmVuZXNz
QW5hbHlzaXNfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJCeXRlY29kZUJhc2ljQmxvY2su
aCIKKyNpbmNsdWRlICJCeXRlY29kZUdyYXBoLmgiCisjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAj
aW5jbHVkZSA8d3RmL0Zhc3RCaXRWZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgog
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTM0LDEzICszNSwyNyBAQAogbmFtZXNwYWNlIEpT
QyB7CiAKIGNsYXNzIEJ5dGVjb2RlS2lsbHM7Ci1jbGFzcyBDb2RlQmxvY2s7CiBjbGFzcyBGdWxs
Qnl0ZWNvZGVMaXZlbmVzczsKIAotY2xhc3MgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzIHsKK3Rl
bXBsYXRlPHR5cGVuYW1lIERlcml2ZWRBbmFseXNpcz4KK2NsYXNzIEJ5dGVjb2RlTGl2ZW5lc3NM
b2NhbFByb3BhZ2F0aW9uIHsKK3Byb3RlY3RlZDoKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBHcmFw
aCwgdHlwZW5hbWUgVXNlRnVuY3RvciwgdHlwZW5hbWUgRGVmRnVuY3Rvcj4gdm9pZCBzdGVwT3Zl
ckluc3RydWN0aW9uKEdyYXBoJiwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIEZhc3RCaXRWZWN0
b3ImIG91dCwgY29uc3QgVXNlRnVuY3RvciYsIGNvbnN0IERlZkZ1bmN0b3ImKTsKKworICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEdyYXBoPiB2b2lkIHN0ZXBPdmVySW5zdHJ1Y3Rpb24oR3JhcGgmLCB1
bnNpZ25lZCBieXRlY29kZU9mZnNldCwgRmFzdEJpdFZlY3RvciYgb3V0KTsKKworICAgIHRlbXBs
YXRlPHR5cGVuYW1lIEdyYXBoPiB2b2lkIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQnl0ZWNvZGVP
ZmZzZXQoR3JhcGgmLCBCeXRlY29kZUJhc2ljQmxvY2sqLCB1bnNpZ25lZCB0YXJnZXRPZmZzZXQs
IEZhc3RCaXRWZWN0b3ImIHJlc3VsdCk7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBHcmFwaD4g
dm9pZCBjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJsb2NrKEdyYXBoJiwgQnl0ZWNvZGVCYXNpY0Js
b2NrKik7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBHcmFwaD4gRmFzdEJpdFZlY3RvciBnZXRM
aXZlbmVzc0luZm9BdEJ5dGVjb2RlT2Zmc2V0KEdyYXBoJiwgdW5zaWduZWQgYnl0ZWNvZGVPZmZz
ZXQpOworfTsKKworY2xhc3MgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzIDogcHJpdmF0ZSBCeXRl
Y29kZUxpdmVuZXNzTG9jYWxQcm9wYWdhdGlvbjxCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM+IHsK
ICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShC
eXRlY29kZUxpdmVuZXNzQW5hbHlzaXMpOwogcHVibGljOgorICAgIGZyaWVuZCBjbGFzcyBCeXRl
Y29kZUxpdmVuZXNzTG9jYWxQcm9wYWdhdGlvbjxCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM+Owog
ICAgIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcyhDb2RlQmxvY2sqKTsKICAgICAKICAgICBib29s
IG9wZXJhbmRJc0xpdmVBdEJ5dGVjb2RlT2Zmc2V0KGludCBvcGVyYW5kLCB1bnNpZ25lZCBieXRl
Y29kZU9mZnNldCk7CkBAIC01NiwxNCArNzEsMTUgQEAgY2xhc3MgQnl0ZWNvZGVMaXZlbmVzc0Fu
YWx5c2lzIHsKIAogICAgIHZvaWQgZ2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29kZU9mZnNldCh1bnNp
Z25lZCBieXRlY29kZU9mZnNldCwgRmFzdEJpdFZlY3RvciYpOwogCi0gICAgQ29kZUJsb2NrKiBt
X2NvZGVCbG9jazsKLSAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9j
az4+IG1fYmFzaWNCbG9ja3M7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdm9pZCBj
b21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayosIE9wY29kZUlELCBJbnN0cnVj
dGlvbiosIEZhc3RCaXRWZWN0b3ImLCBjb25zdCBGdW5jdG9yJik7CisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgRnVuY3Rvcj4gdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9j
ayosIE9wY29kZUlELCBJbnN0cnVjdGlvbiosIEZhc3RCaXRWZWN0b3ImLCBjb25zdCBGdW5jdG9y
Jik7CisKKyAgICBCeXRlY29kZUdyYXBoPENvZGVCbG9jaz4gbV9ncmFwaDsKIH07CiAKIGlubGlu
ZSBib29sIG9wZXJhbmRJc0Fsd2F5c0xpdmUoaW50IG9wZXJhbmQpOwogaW5saW5lIGJvb2wgb3Bl
cmFuZFRoYXRJc05vdEFsd2F5c0xpdmVJc0xpdmUoY29uc3QgRmFzdEJpdFZlY3RvciYgb3V0LCBp
bnQgb3BlcmFuZCk7CiBpbmxpbmUgYm9vbCBvcGVyYW5kSXNMaXZlKGNvbnN0IEZhc3RCaXRWZWN0
b3ImIG91dCwgaW50IG9wZXJhbmQpOworaW5saW5lIGJvb2wgaXNWYWxpZFJlZ2lzdGVyRm9yTGl2
ZW5lc3MoaW50IG9wZXJhbmQpOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKLQotI2VuZGlmIC8vIEJ5
dGVjb2RlTGl2ZW5lc3NBbmFseXNpc19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzSW5saW5lcy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGluZXMuaApp
bmRleCA5YjVjNzU1ZmNiNmNkNTE4MDUxNDUwMDc4OTIyYWM0ZDZkNGQyMzhmLi5jZjI3YzBmZGQz
MTEyZDdmZWFiZWVhYTg0ZDlmMmZhN2Q1ZGNjOWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzSW5saW5lcy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNJ
bmxpbmVzLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNpZm5kZWYgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5
c2lzSW5saW5lc19oCiAjZGVmaW5lIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGluZXNfaAog
CisjaW5jbHVkZSAiQnl0ZWNvZGVHcmFwaC5oIgogI2luY2x1ZGUgIkJ5dGVjb2RlTGl2ZW5lc3NB
bmFseXNpcy5oIgogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIk9wZXJhdGlvbnMu
aCIKQEAgLTUwLDYgKzUxLDEyMiBAQCBpbmxpbmUgYm9vbCBvcGVyYW5kSXNMaXZlKGNvbnN0IEZh
c3RCaXRWZWN0b3ImIG91dCwgaW50IG9wZXJhbmQpCiAgICAgcmV0dXJuIG9wZXJhbmRJc0Fsd2F5
c0xpdmUob3BlcmFuZCkgfHwgb3BlcmFuZFRoYXRJc05vdEFsd2F5c0xpdmVJc0xpdmUob3V0LCBv
cGVyYW5kKTsKIH0KIAoraW5saW5lIGJvb2wgaXNWYWxpZFJlZ2lzdGVyRm9yTGl2ZW5lc3MoaW50
IG9wZXJhbmQpCit7CisgICAgVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWcob3BlcmFuZCk7Cisg
ICAgaWYgKHZpcnR1YWxSZWcuaXNDb25zdGFudCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgcmV0dXJuIHZpcnR1YWxSZWcuaXNMb2NhbCgpOworfQorCisvLyBTaW1wbGlmaWVkIGludGVy
ZmFjZSB0byBieXRlY29kZSB1c2UvZGVmLCB3aGljaCBkZXRlcm1pbmVzIGRlZnMgZmlyc3QgYW5k
IHRoZW4gdXNlcywgYW5kIGluY2x1ZGVzCisvLyBleGNlcHRpb24gaGFuZGxlcnMgaW4gdGhlIHVz
ZXMuCit0ZW1wbGF0ZTx0eXBlbmFtZSBEZXJpdmVkQW5hbHlzaXM+Cit0ZW1wbGF0ZTx0eXBlbmFt
ZSBHcmFwaCwgdHlwZW5hbWUgVXNlRnVuY3RvciwgdHlwZW5hbWUgRGVmRnVuY3Rvcj4KK2lubGlu
ZSB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NMb2NhbFByb3BhZ2F0aW9uPERlcml2ZWRBbmFseXNpcz46
OnN0ZXBPdmVySW5zdHJ1Y3Rpb24oR3JhcGgmIGdyYXBoLCB1bnNpZ25lZCBieXRlY29kZU9mZnNl
dCwgRmFzdEJpdFZlY3RvciYgb3V0LCBjb25zdCBVc2VGdW5jdG9yJiB1c2UsIGNvbnN0IERlZkZ1
bmN0b3ImIGRlZikKK3sKKyAgICAvLyBUaGlzIGFic3RyYWN0bHkgZXhlY3V0ZSB0aGUgaW5zdHJ1
Y3Rpb24gaW4gcmV2ZXJzZS4gSW5zdHJ1Y3Rpb25zIGxvZ2ljYWxseSBmaXJzdCB1c2Ugb3BlcmFu
ZHMgYW5kCisgICAgLy8gdGhlbiBkZWZpbmUgb3BlcmFuZHMuIFRoaXMgbG9naWNhbCBvcmRlcmlu
ZyBpcyBuZWNlc3NhcnkgZm9yIG9wZXJhdGlvbnMgdGhhdCB1c2UgYW5kIGRlZiB0aGUgc2FtZQor
ICAgIC8vIG9wZXJhbmQsIGxpa2U6CisgICAgLy8KKyAgICAvLyAgICAgb3BfYWRkIGxvYzEsIGxv
YzEsIGxvYzIKKyAgICAvLworICAgIC8vIFRoZSB1c2Ugb2YgbG9jMSBoYXBwZW5zIGJlZm9yZSB0
aGUgZGVmIG9mIGxvYzEuIFRoYXQncyBhIHNlbWFudGljIHJlcXVpcmVtZW50IHNpbmNlIHRoZSBh
ZGQKKyAgICAvLyBvcGVyYXRpb24gY2Fubm90IHRyYXZlbCBmb3J3YXJkIGluIHRpbWUgdG8gcmVh
ZCB0aGUgdmFsdWUgdGhhdCBpdCB3aWxsIHByb2R1Y2UgYWZ0ZXIgcmVhZGluZyB0aGF0CisgICAg
Ly8gdmFsdWUuIFNpbmNlIHdlIGFyZSBleGVjdXRpbmcgaW4gcmV2ZXJzZSwgdGhpcyBtZWFucyB0
aGF0IHdlIG11c3QgZG8gZGVmcyBiZWZvcmUgdXNlcyAocmV2ZXJzZSBvZgorICAgIC8vIHVzZXMg
YmVmb3JlIGRlZnMpLgorICAgIC8vCisgICAgLy8gU2luY2UgdGhpcyBpcyBhIGxpdmVuZXNzIGFu
YWx5c2lzLCB0aGlzIG9yZGVyaW5nIGVuZHMgdXAgYmVpbmcgcGFydGljdWxhcmx5IGltcG9ydGFu
dDogaWYgd2UgZGlkCisgICAgLy8gdXNlcyBiZWZvcmUgZGVmcywgdGhlbiB0aGUgYWRkIG9wZXJh
dGlvbiBhYm92ZSB3b3VsZCBhcHBlYXIgdG8gbm90IGhhdmUgbG9jMSBsaXZlLCBzaW5jZSB3ZSdk
CisgICAgLy8gZmlyc3QgYWRkIGl0IHRvIHRoZSBvdXQgc2V0ICh0aGUgdXNlKSwgYW5kIHRoZW4g
d2UnZCByZW1vdmUgaXQgKHRoZSBkZWYpLgorCisgICAgYXV0byogY29kZUJsb2NrID0gZ3JhcGgu
Y29kZUJsb2NrKCk7CisgICAgSW50ZXJwcmV0ZXIqIGludGVycHJldGVyID0gY29kZUJsb2NrLT52
bSgpLT5pbnRlcnByZXRlcjsKKyAgICBhdXRvKiBpbnN0cnVjdGlvbnNCZWdpbiA9IGdyYXBoLmlu
c3RydWN0aW9ucygpLmJlZ2luKCk7CisgICAgYXV0byogaW5zdHJ1Y3Rpb24gPSAmaW5zdHJ1Y3Rp
b25zQmVnaW5bYnl0ZWNvZGVPZmZzZXRdOworICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW50ZXJw
cmV0ZXItPmdldE9wY29kZUlEKCppbnN0cnVjdGlvbik7CisKKyAgICBzdGF0aWNfY2FzdDxEZXJp
dmVkQW5hbHlzaXMqPih0aGlzKS0+Y29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldCgKKyAgICAg
ICAgY29kZUJsb2NrLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb24sIG91dCwKKyAgICAgICAgWyZdICh0
eXBlbmFtZSBHcmFwaDo6Q29kZUJsb2NrKiwgdHlwZW5hbWUgR3JhcGg6Okluc3RydWN0aW9uKiwg
T3Bjb2RlSUQsIGludCBvcGVyYW5kKSB7CisgICAgICAgICAgICBpZiAoaXNWYWxpZFJlZ2lzdGVy
Rm9yTGl2ZW5lc3Mob3BlcmFuZCkpCisgICAgICAgICAgICAgICAgZGVmKFZpcnR1YWxSZWdpc3Rl
cihvcGVyYW5kKS50b0xvY2FsKCkpOworICAgICAgICB9KTsKKworICAgIHN0YXRpY19jYXN0PERl
cml2ZWRBbmFseXNpcyo+KHRoaXMpLT5jb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAorICAg
ICAgICBjb2RlQmxvY2ssIG9wY29kZUlELCBpbnN0cnVjdGlvbiwgb3V0LAorICAgICAgICBbJl0g
KHR5cGVuYW1lIEdyYXBoOjpDb2RlQmxvY2sqLCB0eXBlbmFtZSBHcmFwaDo6SW5zdHJ1Y3Rpb24q
LCBPcGNvZGVJRCwgaW50IG9wZXJhbmQpIHsKKyAgICAgICAgICAgIGlmIChpc1ZhbGlkUmVnaXN0
ZXJGb3JMaXZlbmVzcyhvcGVyYW5kKSkKKyAgICAgICAgICAgICAgICB1c2UoVmlydHVhbFJlZ2lz
dGVyKG9wZXJhbmQpLnRvTG9jYWwoKSk7CisgICAgICAgIH0pOworCisgICAgLy8gSWYgd2UgaGF2
ZSBhbiBleGNlcHRpb24gaGFuZGxlciwgd2Ugd2FudCB0aGUgbGl2ZS1pbiB2YXJpYWJsZXMgb2Yg
dGhlIAorICAgIC8vIGV4Y2VwdGlvbiBoYW5kbGVyIGJsb2NrIHRvIGJlIGluY2x1ZGVkIGluIHRo
ZSBsaXZlLWluIG9mIHRoaXMgcGFydGljdWxhciBieXRlY29kZS4KKyAgICBpZiAoYXV0byogaGFu
ZGxlciA9IGNvZGVCbG9jay0+aGFuZGxlckZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0
KSkgeworICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGhhbmRsZXJCbG9jayA9IGdyYXBoLmZp
bmRCYXNpY0Jsb2NrV2l0aExlYWRlck9mZnNldChoYW5kbGVyLT50YXJnZXQpOworICAgICAgICBB
U1NFUlQoaGFuZGxlckJsb2NrKTsKKyAgICAgICAgaGFuZGxlckJsb2NrLT5pbigpLmZvckVhY2hT
ZXRCaXQodXNlKTsKKyAgICB9Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIERlcml2ZWRBbmFseXNp
cz4KK3RlbXBsYXRlPHR5cGVuYW1lIEdyYXBoPgoraW5saW5lIHZvaWQgQnl0ZWNvZGVMaXZlbmVz
c0xvY2FsUHJvcGFnYXRpb248RGVyaXZlZEFuYWx5c2lzPjo6c3RlcE92ZXJJbnN0cnVjdGlvbihH
cmFwaCYgZ3JhcGgsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBGYXN0Qml0VmVjdG9yJiBvdXQp
Cit7CisgICAgc3RlcE92ZXJJbnN0cnVjdGlvbigKKyAgICAgICAgZ3JhcGgsIGJ5dGVjb2RlT2Zm
c2V0LCBvdXQsCisgICAgICAgIFsmXSAodW5zaWduZWQgYml0SW5kZXgpIHsKKyAgICAgICAgICAg
IC8vIFRoaXMgaXMgdGhlIHVzZSBmdW5jdG9yLCBzbyB3ZSBzZXQgdGhlIGJpdC4KKyAgICAgICAg
ICAgIG91dC5zZXQoYml0SW5kZXgpOworICAgICAgICB9LAorICAgICAgICBbJl0gKHVuc2lnbmVk
IGJpdEluZGV4KSB7CisgICAgICAgICAgICAvLyBUaGlzIGlzIHRoZSBkZWYgZnVuY3Rvciwgc28g
d2UgY2xlYXIgdGhlIGJpdC4KKyAgICAgICAgICAgIG91dC5jbGVhcihiaXRJbmRleCk7CisgICAg
ICAgIH0pOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBEZXJpdmVkQW5hbHlzaXM+Cit0ZW1wbGF0
ZTx0eXBlbmFtZSBHcmFwaD4KK2lubGluZSB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NMb2NhbFByb3Bh
Z2F0aW9uPERlcml2ZWRBbmFseXNpcz46OmNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQnl0ZWNvZGVP
ZmZzZXQoR3JhcGgmIGdyYXBoLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrLCB1bnNpZ25lZCB0
YXJnZXRPZmZzZXQsIEZhc3RCaXRWZWN0b3ImIHJlc3VsdCkKK3sKKyAgICBBU1NFUlQoIWJsb2Nr
LT5pc0V4aXRCbG9jaygpKTsKKyAgICBBU1NFUlQoIWJsb2NrLT5pc0VudHJ5QmxvY2soKSk7CisK
KyAgICBGYXN0Qml0VmVjdG9yIG91dCA9IGJsb2NrLT5vdXQoKTsKKworICAgIGZvciAoaW50IGkg
PSBibG9jay0+Ynl0ZWNvZGVPZmZzZXRzKCkuc2l6ZSgpIC0gMTsgaSA+PSAwOyBpLS0pIHsKKyAg
ICAgICAgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQgPSBibG9jay0+Ynl0ZWNvZGVPZmZzZXRzKClb
aV07CisgICAgICAgIGlmICh0YXJnZXRPZmZzZXQgPiBieXRlY29kZU9mZnNldCkKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBzdGVwT3Zlckluc3RydWN0aW9uKGdyYXBoLCBieXRlY29kZU9m
ZnNldCwgb3V0KTsKKyAgICB9CisKKyAgICByZXN1bHQuc2V0KG91dCk7Cit9CisKK3RlbXBsYXRl
PHR5cGVuYW1lIERlcml2ZWRBbmFseXNpcz4KK3RlbXBsYXRlPHR5cGVuYW1lIEdyYXBoPgoraW5s
aW5lIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0xvY2FsUHJvcGFnYXRpb248RGVyaXZlZEFuYWx5c2lz
Pjo6Y29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCbG9jayhHcmFwaCYgZ3JhcGgsIEJ5dGVjb2RlQmFz
aWNCbG9jayogYmxvY2spCit7CisgICAgaWYgKGJsb2NrLT5pc0V4aXRCbG9jaygpIHx8IGJsb2Nr
LT5pc0VudHJ5QmxvY2soKSkKKyAgICAgICAgcmV0dXJuOworICAgIGNvbXB1dGVMb2NhbExpdmVu
ZXNzRm9yQnl0ZWNvZGVPZmZzZXQoZ3JhcGgsIGJsb2NrLCBibG9jay0+bGVhZGVyQnl0ZWNvZGVP
ZmZzZXQoKSwgYmxvY2stPmluKCkpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBEZXJpdmVkQW5h
bHlzaXM+Cit0ZW1wbGF0ZTx0eXBlbmFtZSBHcmFwaD4KK2lubGluZSBGYXN0Qml0VmVjdG9yIEJ5
dGVjb2RlTGl2ZW5lc3NMb2NhbFByb3BhZ2F0aW9uPERlcml2ZWRBbmFseXNpcz46OmdldExpdmVu
ZXNzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQoR3JhcGgmIGdyYXBoLCB1bnNpZ25lZCBieXRlY29kZU9m
ZnNldCkKK3sKKyAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrID0gZ3JhcGguZmluZEJhc2lj
QmxvY2tGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCk7CisgICAgQVNTRVJUKGJsb2Nr
KTsKKyAgICBBU1NFUlQoIWJsb2NrLT5pc0VudHJ5QmxvY2soKSk7CisgICAgQVNTRVJUKCFibG9j
ay0+aXNFeGl0QmxvY2soKSk7CisgICAgRmFzdEJpdFZlY3RvciBvdXQ7CisgICAgb3V0LnJlc2l6
ZShibG9jay0+b3V0KCkubnVtQml0cygpKTsKKyAgICBjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJ5
dGVjb2RlT2Zmc2V0KGdyYXBoLCBibG9jaywgYnl0ZWNvZGVPZmZzZXQsIG91dCk7CisgICAgcmV0
dXJuIG91dDsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBCeXRlY29kZUxp
dmVuZXNzQW5hbHlzaXNJbmxpbmVzX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZU1vZGlmaWNhdGlvblNldC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVNb2RpZmljYXRpb25TZXQuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhh
YzJmOGVjYTExNTljMjMxNmFiNTE4YjNjYWFhNzQ3NDhlYmE1NjAKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVNb2RpZmljYXRpb25TZXQu
Y3BwCkBAIC0wLDAgKzEsODQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgWXVzdWtlIFN1
enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiQnl0ZWNvZGVNb2RpZmljYXRpb25TZXQuaCIKKworI2luY2x1ZGUgPHd0
Zi9CdWJibGVTb3J0Lmg+CisKK25hbWVzcGFjZSBKU0MgeworCitpbnQgQnl0ZWNvZGVNb2RpZmlj
YXRpb25TZXQ6OmFkanVzdE9mZnNldChpbnQgYnl0ZWNvZGVPZmZzZXQsIGludCBqdW1wVGFyZ2V0
KQoreworICAgIGlmIChieXRlY29kZU9mZnNldCA8IGp1bXBUYXJnZXQpIHsKKyAgICAgICAgYXV0
byBzdGFydCA9IHN0ZDo6bG93ZXJfYm91bmQobV9pbnNlcnRpb25zLmJlZ2luKCksIG1faW5zZXJ0
aW9ucy5lbmQoKSwgYnl0ZWNvZGVPZmZzZXQsIFsmXSAoY29uc3QgSW5zZXJ0aW9uJiBpbnNlcnRp
b24sIGludCBieXRlY29kZU9mZnNldCkgeworICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PGludD4oaW5zZXJ0aW9uLmluZGV4KCkpIDwgYnl0ZWNvZGVPZmZzZXQ7CisgICAgICAgIH0pOwor
ICAgICAgICBpZiAoc3RhcnQgIT0gbV9pbnNlcnRpb25zLmVuZCgpKSB7CisgICAgICAgICAgICBh
dXRvIGVuZCA9IHN0ZDo6bG93ZXJfYm91bmQobV9pbnNlcnRpb25zLmJlZ2luKCksIG1faW5zZXJ0
aW9ucy5lbmQoKSwganVtcFRhcmdldCwgWyZdIChjb25zdCBJbnNlcnRpb24mIGluc2VydGlvbiwg
aW50IGp1bXBUYXJnZXQpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50
PihpbnNlcnRpb24uaW5kZXgoKSkgPCBqdW1wVGFyZ2V0OworICAgICAgICAgICAgfSk7CisgICAg
ICAgICAgICBmb3IgKDsgc3RhcnQgIT0gZW5kOyArK3N0YXJ0KSB7CisgICAgICAgICAgICAgICAg
aWYgKHN0YXJ0LT5lbGVtZW50KCkudHlwZSA9PSBDb21tYW5kOjpUeXBlOjpSZW1vdmUpCisgICAg
ICAgICAgICAgICAgICAgIGp1bXBUYXJnZXQgLT0gc3RhcnQtPmVsZW1lbnQoKS5sZW5ndGg7Cisg
ICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBqdW1wVGFyZ2V0ICs9IHN0
YXJ0LT5lbGVtZW50KCkubGVuZ3RoOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAg
IHJldHVybiBqdW1wVGFyZ2V0IC0gYnl0ZWNvZGVPZmZzZXQ7CisgICAgfQorCisgICAgaWYgKGJ5
dGVjb2RlT2Zmc2V0ID09IGp1bXBUYXJnZXQpCisgICAgICAgIHJldHVybiAwOworCisgICAgcmV0
dXJuIC1hZGp1c3RPZmZzZXQoanVtcFRhcmdldCwgYnl0ZWNvZGVPZmZzZXQpOworfQorCit2b2lk
IEJ5dGVjb2RlTW9kaWZpY2F0aW9uU2V0OjphcHBseU1vZGlmaWNhdGlvbigpCit7CisgICAgZm9y
IChzaXplX3QgaW5zZXJ0aW9uSW5kZXggPSBtX2luc2VydGlvbnMuc2l6ZSgpOyBpbnNlcnRpb25J
bmRleC0tOykgeworICAgICAgICBjb25zdCBJbnNlcnRpb24mIGluc2VydGlvbiA9IG1faW5zZXJ0
aW9uc1tpbnNlcnRpb25JbmRleF07CisgICAgICAgIGlmIChpbnNlcnRpb24uZWxlbWVudCgpLnR5
cGUgPT0gQ29tbWFuZDo6VHlwZTo6UmVtb3ZlKQorICAgICAgICAgICAgbV9ncmFwaC5pbnN0cnVj
dGlvbnMoKS5yZW1vdmUoaW5zZXJ0aW9uLmluZGV4KCksIGluc2VydGlvbi5lbGVtZW50KCkubGVu
Z3RoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV9ncmFwaC5pbnN0cnVjdGlvbnMoKS5p
bnNlcnQoaW5zZXJ0aW9uLmluZGV4KCksIGluc2VydGlvbi5lbGVtZW50KCkuYnl0ZWNvZGUuaW5z
dHJ1Y3Rpb25zLCBvcGNvZGVMZW5ndGgoaW5zZXJ0aW9uLmVsZW1lbnQoKS5ieXRlY29kZS5pbnN0
cnVjdGlvbnNbMF0udS5vcGNvZGUpKTsKKyAgICB9CisgICAgbV9pbnNlcnRpb25zLmNsZWFyKCk7
Cit9CisKK3ZvaWQgQnl0ZWNvZGVNb2RpZmljYXRpb25TZXQ6OmV4ZWN1dGUoKQoreworICAgIFdU
Rjo6YnViYmxlU29ydChtX2luc2VydGlvbnMuYmVnaW4oKSwgbV9pbnNlcnRpb25zLmVuZCgpLCBb
XSAoY29uc3QgSW5zZXJ0aW9uJiBsaHMsIGNvbnN0IEluc2VydGlvbiYgcmhzKSB7CisgICAgICAg
IC8vIFdlIHdvdWxkIGxpa2UgdG8gcGVyZm9ybSByZW1vdmUgb3BlcmF0aW9uIGJlZm9yZSBpbnNl
cnRpb24uCisgICAgICAgIGlmIChsaHMuaW5kZXgoKSA9PSByaHMuaW5kZXgoKSkKKyAgICAgICAg
ICAgIHJldHVybiByaHMuZWxlbWVudCgpLnR5cGUgPT0gQ29tbWFuZDo6VHlwZTo6UmVtb3ZlOwor
ICAgICAgICByZXR1cm4gbGhzIDwgcmhzOworICAgIH0pOworCisgICAgVW5saW5rZWRDb2RlQmxv
Y2sqIGNvZGVCbG9jayA9IG1fZ3JhcGguY29kZUJsb2NrKCk7CisgICAgY29kZUJsb2NrLT5hcHBs
eU1vZGlmaWNhdGlvbigqdGhpcyk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTW9kaWZpY2F0aW9uU2V0
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVNb2RpZmljYXRpb25T
ZXQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi43OTM5ZGFhNDVjOGUyNjQyMDllN2EyMmVjZjNlMGQ3OGE0YWQzN2E3
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVj
b2RlTW9kaWZpY2F0aW9uU2V0LmgKQEAgLTAsMCArMSw4OCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNiBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQnl0ZWNvZGVHcmFwaC5oIgorI2luY2x1ZGUgIkJ5
dGVjb2Rlcy5oIgorI2luY2x1ZGUgIlVubGlua2VkQ29kZUJsb2NrLmgiCisjaW5jbHVkZSA8d3Rm
L0luc2VydGlvbi5oPgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgQnl0ZWNvZGVNb2RpZmlj
YXRpb25TZXQgeworcHVibGljOgorICAgIHN0cnVjdCBJbnNlcnRlZEJ5dGVjb2RlIHsKKyAgICAg
ICAgVW5saW5rZWRJbnN0cnVjdGlvbiBpbnN0cnVjdGlvbnNbTUFYX09QQ09ERV9MRU5HVEhfT0Zf
QllURUNPREVdOworICAgIH07CisKKyAgICBzdHJ1Y3QgQ29tbWFuZCB7CisgICAgICAgIGVudW0g
Y2xhc3MgVHlwZSB7CisgICAgICAgICAgICBJbnNlcnQsCisgICAgICAgICAgICBSZW1vdmUsCisg
ICAgICAgIH07CisKKyAgICAgICAgVHlwZSB0eXBlOworICAgICAgICBzaXplX3QgbGVuZ3RoOwor
ICAgICAgICBJbnNlcnRlZEJ5dGVjb2RlIGJ5dGVjb2RlOworICAgIH07CisKKyAgICB0eXBlZGVm
IFdURjo6SW5zZXJ0aW9uPENvbW1hbmQ+IEluc2VydGlvbjsKKworICAgIEJ5dGVjb2RlTW9kaWZp
Y2F0aW9uU2V0KEJ5dGVjb2RlR3JhcGg8VW5saW5rZWRDb2RlQmxvY2s+JiBncmFwaCkKKyAgICAg
ICAgOiBtX2dyYXBoKGdyYXBoKQorICAgIHsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTxjbGFzcy4u
LiBBcmdzPgorICAgIHZvaWQgaW5zZXJ0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBPcGNvZGVJ
RCBvcGNvZGVJRCwgQXJncy4uLiBhcmdzKQorICAgIHsKKyAgICAgICAgSW5zZXJ0ZWRCeXRlY29k
ZSBieXRlY29kZSA9IHsgeworICAgICAgICAgICAgVW5saW5rZWRJbnN0cnVjdGlvbihvcGNvZGVJ
RCksCisgICAgICAgICAgICBVbmxpbmtlZEluc3RydWN0aW9uKGFyZ3MpLi4uCisgICAgICAgIH0g
fTsKKyAgICAgICAgbV9pbnNlcnRpb25zLmFwcGVuZChJbnNlcnRpb24oYnl0ZWNvZGVPZmZzZXQs
IENvbW1hbmQgeyBDb21tYW5kOjpUeXBlOjpJbnNlcnQsIG9wY29kZUxlbmd0aChvcGNvZGVJRCks
IGJ5dGVjb2RlIH0pKTsKKyAgICB9CisKKyAgICB2b2lkIHJlbW92ZUJ5dGVjb2RlKHVuc2lnbmVk
IGJ5dGVjb2RlT2Zmc2V0KQorICAgIHsKKyAgICAgICAgbV9pbnNlcnRpb25zLmFwcGVuZChJbnNl
cnRpb24oYnl0ZWNvZGVPZmZzZXQsIENvbW1hbmQgeyBDb21tYW5kOjpUeXBlOjpSZW1vdmUsIG9w
Y29kZUxlbmd0aChtX2dyYXBoLmluc3RydWN0aW9ucygpW2J5dGVjb2RlT2Zmc2V0XS51Lm9wY29k
ZSksIEluc2VydGVkQnl0ZWNvZGUgeyB9IH0pKTsKKyAgICB9CisKKyAgICB2b2lkIGV4ZWN1dGUo
KTsKKworICAgIEJ5dGVjb2RlR3JhcGg8VW5saW5rZWRDb2RlQmxvY2s+JiBncmFwaCgpIHsgcmV0
dXJuIG1fZ3JhcGg7IH0KKworICAgIGludCBhZGp1c3RPZmZzZXQoaW50IGJ5dGVjb2RlT2Zmc2V0
LCBpbnQganVtcFRhcmdldCk7CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIFVubGlua2Vk
Q29kZUJsb2NrOworICAgIHZvaWQgYXBwbHlNb2RpZmljYXRpb24oKTsKKworICAgIEJ5dGVjb2Rl
R3JhcGg8VW5saW5rZWRDb2RlQmxvY2s+JiBtX2dyYXBoOworICAgIFZlY3RvcjxJbnNlcnRpb24s
IDg+IG1faW5zZXJ0aW9uczsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaAppbmRleCA1NzA4NDRjMzVk
OTAyNWVlOTFhZDQ2OThiYWI5YmMxYTY3ZmQ4MzQ5Li43NTlmNzhjODEyOGJhNzYwY2M5Y2U1MmRm
ZjUzYTQ4YWZiNzIyZTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVVc2VEZWYuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Qnl0ZWNvZGVVc2VEZWYuaApAQCAtMjcsMTggKzI3LDEzIEBACiAjZGVmaW5lIEJ5dGVjb2RlVXNl
RGVmX2gKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkludGVycHJldGVyLmgi
CiAKIG5hbWVzcGFjZSBKU0MgewogCi10ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgotdm9pZCBj
b21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAotICAgIENvZGVCbG9jayogY29kZUJsb2NrLCBC
eXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgY29uc3Qg
RnVuY3RvciYgZnVuY3RvcikKK3RlbXBsYXRlPHR5cGVuYW1lIEJsb2NrLCB0eXBlbmFtZSBGdW5j
dG9yLCB0eXBlbmFtZSBJbnN0cnVjdGlvbj4KK3ZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9m
ZnNldChCbG9jayogY29kZUJsb2NrLCBPcGNvZGVJRCBvcGNvZGVJRCwgSW5zdHJ1Y3Rpb24qIGlu
c3RydWN0aW9uLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQogewotICAgIEludGVycHJldGVyKiBp
bnRlcnByZXRlciA9IGNvZGVCbG9jay0+dm0oKS0+aW50ZXJwcmV0ZXI7Ci0gICAgSW5zdHJ1Y3Rp
b24qIGluc3RydWN0aW9uc0JlZ2luID0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigp
OwotICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9ICZpbnN0cnVjdGlvbnNCZWdpbltieXRl
Y29kZU9mZnNldF07Ci0gICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnRlcnByZXRlci0+Z2V0T3Bj
b2RlSUQoaW5zdHJ1Y3Rpb24tPnUub3Bjb2RlKTsKLQogICAgIGlmIChvcGNvZGVJRCAhPSBvcF9l
bnRlciAmJiBjb2RlQmxvY2stPndhc0NvbXBpbGVkV2l0aERlYnVnZ2luZ09wY29kZXMoKSAmJiBj
b2RlQmxvY2stPnNjb3BlUmVnaXN0ZXIoKS5pc1ZhbGlkKCkpCiAgICAgICAgIGZ1bmN0b3IoY29k
ZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGNvZGVCbG9jay0+c2NvcGVSZWdpc3Rlcigp
Lm9mZnNldCgpKTsKIApAQCAtNzUsOCArNzAsNyBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNv
ZGVPZmZzZXQoCiAgICAgY2FzZSBvcF9qbmVxX251bGw6CiAgICAgY2FzZSBvcF9kZWM6CiAgICAg
Y2FzZSBvcF9pbmM6Ci0gICAgY2FzZSBvcF9sb2dfc2hhZG93X2NoaWNrZW5fcHJvbG9ndWU6Ci0g
ICAgY2FzZSBvcF9yZXN1bWU6IHsKKyAgICBjYXNlIG9wX2xvZ19zaGFkb3dfY2hpY2tlbl9wcm9s
b2d1ZTogewogICAgICAgICBBU1NFUlQob3Bjb2RlTGVuZ3Roc1tvcGNvZGVJRF0gPiAxKTsKICAg
ICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rp
b25bMV0udS5vcGVyYW5kKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjg3LDM1ICsyODEsMjIgQEAg
dm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAogICAgICAgICAgICAgZnVuY3Rvcihj
b2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgY29kZUJsb2NrLT5zY29wZVJlZ2lzdGVy
KCkub2Zmc2V0KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGNhc2Ugb3Bfc2F2ZTog
ewotICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBpbnN0
cnVjdGlvblsxXS51Lm9wZXJhbmQpOwotICAgICAgICB1bnNpZ25lZCBtZXJnZVBvaW50Qnl0ZWNv
ZGVPZmZzZXQgPSBieXRlY29kZU9mZnNldCArIGluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKLSAg
ICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBtZXJnZVBvaW50QmxvY2sgPSBudWxscHRyOwotICAg
ICAgICBmb3IgKEJ5dGVjb2RlQmFzaWNCbG9jayogc3VjY2Vzc29yIDogYmxvY2stPnN1Y2Nlc3Nv
cnMoKSkgewotICAgICAgICAgICAgaWYgKHN1Y2Nlc3Nvci0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQo
KSA9PSBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXQpIHsKLSAgICAgICAgICAgICAgICBtZXJnZVBv
aW50QmxvY2sgPSBzdWNjZXNzb3I7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIH0KLSAgICAgICAgQVNTRVJUKG1lcmdlUG9pbnRCbG9jayk7Ci0gICAgICAg
IG1lcmdlUG9pbnRCbG9jay0+aW4oKS5mb3JFYWNoU2V0Qml0KFsmXSh1bnNpZ25lZCBsb2NhbCkg
ewotICAgICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwg
dmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwobG9jYWwpLm9mZnNldCgpKTsKLSAgICAgICAgfSk7CisK
KyAgICBjYXNlIG9wX3NhdmU6CisgICAgY2FzZSBvcF9yZXN1bWU6IHsKKyAgICAgICAgLy8gRG8g
bm90aGluZyBpbiBsaXZlbmVzcyBhbmFseXNpcy4KICAgICAgICAgcmV0dXJuOwogICAgIH0KKwog
ICAgIGRlZmF1bHQ6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAg
ICAgIGJyZWFrOwogICAgIH0KIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KLXZvaWQg
Y29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNv
ZGVCYXNpY0Jsb2NrKiBibG9jaywgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIGNvbnN0IEZ1bmN0
b3ImIGZ1bmN0b3IpCit0ZW1wbGF0ZTx0eXBlbmFtZSBCbG9jaywgdHlwZW5hbWUgSW5zdHJ1Y3Rp
b24sIHR5cGVuYW1lIEZ1bmN0b3I+Cit2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQo
QmxvY2sqIGNvZGVCbG9jaywgT3Bjb2RlSUQgb3Bjb2RlSUQsIEluc3RydWN0aW9uKiBpbnN0cnVj
dGlvbiwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikKIHsKLSAgICBJbnRlcnByZXRlciogaW50ZXJw
cmV0ZXIgPSBjb2RlQmxvY2stPnZtKCktPmludGVycHJldGVyOwotICAgIEluc3RydWN0aW9uKiBp
bnN0cnVjdGlvbnNCZWdpbiA9IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsKLSAg
ICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSAmaW5zdHJ1Y3Rpb25zQmVnaW5bYnl0ZWNvZGVP
ZmZzZXRdOwotICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0ZXItPmdldE9wY29kZUlE
KGluc3RydWN0aW9uLT51Lm9wY29kZSk7CiAgICAgc3dpdGNoIChvcGNvZGVJRCkgewogICAgIC8v
IFRoZXNlIGRvbid0IGRlZmluZSBhbnl0aGluZy4KICAgICBjYXNlIG9wX2NvcHlfcmVzdDoKQEAg
LTMyMyw3ICszMDQsNiBAQCB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJs
b2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvYwogICAgIGNhc2Ugb3BfZW5k
OgogICAgIGNhc2Ugb3BfdGhyb3c6CiAgICAgY2FzZSBvcF90aHJvd19zdGF0aWNfZXJyb3I6Ci0g
ICAgY2FzZSBvcF9zYXZlOgogICAgIGNhc2Ugb3BfYXNzZXJ0OgogICAgIGNhc2Ugb3BfZGVidWc6
CiAgICAgY2FzZSBvcF9yZXQ6CkBAIC00NjMsNyArNDQzLDcgQEAgdm9pZCBjb21wdXRlRGVmc0Zv
ckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29kZUJhc2ljQmxvY2sq
IGJsb2MKICAgICBjYXNlIG9wX2RlbF9ieV9pZDoKICAgICBjYXNlIG9wX2RlbF9ieV92YWw6CiAg
ICAgY2FzZSBvcF91bnNpZ25lZDoKLSAgICBjYXNlIG9wX2dldF9mcm9tX2FyZ3VtZW50czogCisg
ICAgY2FzZSBvcF9nZXRfZnJvbV9hcmd1bWVudHM6CiAgICAgY2FzZSBvcF9nZXRfcmVzdF9sZW5n
dGg6IHsKICAgICAgICAgQVNTRVJUKG9wY29kZUxlbmd0aHNbb3Bjb2RlSURdID4gMSk7CiAgICAg
ICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9u
WzFdLnUub3BlcmFuZCk7CkBAIC00ODAsMTUgKzQ2MCwxNCBAQCB2b2lkIGNvbXB1dGVEZWZzRm9y
Qnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFzaWNCbG9jayog
YmxvYwogICAgICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJ
RCwgdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaSkub2Zmc2V0KCkpOwogICAgICAgICByZXR1cm47
CiAgICAgfQorICAgIGNhc2Ugb3Bfc2F2ZToKICAgICBjYXNlIG9wX3Jlc3VtZTogewotICAgICAg
ICBSRUxFQVNFX0FTU0VSVChibG9jay0+c3VjY2Vzc29ycygpLnNpemUoKSA9PSAxKTsKLSAgICAg
ICAgLy8gRklYTUU6IFRoaXMgaXMgcmVhbGx5IGRpcnR5LgotICAgICAgICAvLyBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU5MjgxCi0gICAgICAgIGJsb2NrLT5zdWNj
ZXNzb3JzKClbMF0tPmluKCkuZm9yRWFjaFNldEJpdChbJl0odW5zaWduZWQgbG9jYWwpIHsKLSAg
ICAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIHZpcnR1
YWxSZWdpc3RlckZvckxvY2FsKGxvY2FsKS5vZmZzZXQoKSk7Ci0gICAgICAgIH0pOworICAgICAg
ICAvLyBEbyBub3RoaW5nIGluIGxpdmVuZXNzIGFuYWx5c2lzLgogICAgICAgICByZXR1cm47CiAg
ICAgfQorICAgIGRlZmF1bHQ6CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgICAgIHJldHVybjsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5jcHAKaW5kZXggZWU4MTkxNmZiMGY1ZjIwNTA1ZGRiNWRlOTQ1ZTg1
YmY2ZTRiNmQ5YS4uZDliODFlZTU4YTEwOGIxYzFkOTE3OGIwMjlkMTg4Yzk4YjliYTY0ZiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTMzLDYg
KzMzLDcgQEAKICNpbmNsdWRlICJBcml0aFByb2ZpbGUuaCIKICNpbmNsdWRlICJCYXNpY0Jsb2Nr
TG9jYXRpb24uaCIKICNpbmNsdWRlICJCeXRlY29kZUdlbmVyYXRvci5oIgorI2luY2x1ZGUgIkJ5
dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5oIgogI2luY2x1ZGUgIkJ5dGVjb2RlVXNlRGVmLmgiCiAj
aW5jbHVkZSAiQ2FsbExpbmtTdGF0dXMuaCIKICNpbmNsdWRlICJERkdDYXBhYmlsaXRpZXMuaCIK
QEAgLTY5NiwxOCArNjk3LDYgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZShQcmludFN0
cmVhbSYgb3V0KQogICAgICAgICB9IHdoaWxlIChpIDwgbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0
Y2hKdW1wVGFibGVzLnNpemUoKSk7CiAgICAgfQogCi0gICAgaWYgKG1fcmFyZURhdGEgJiYgIW1f
cmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQuaXNFbXB0eSgpKSB7Ci0gICAgICAg
IG91dC5wcmludGYoIlxuTGl2ZSBDYWxsZWUgTG9jYWxzOlxuIik7Ci0gICAgICAgIHVuc2lnbmVk
IGkgPSAwOwotICAgICAgICBkbyB7Ci0gICAgICAgICAgICBjb25zdCBGYXN0Qml0VmVjdG9yJiBs
aXZlbmVzcyA9IG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGRbaV07Ci0gICAg
ICAgICAgICBvdXQucHJpbnRmKCIgIGxpdmUlMXUgPSAiLCBpKTsKLSAgICAgICAgICAgIGxpdmVu
ZXNzLmR1bXAob3V0KTsKLSAgICAgICAgICAgIG91dC5wcmludGYoIlxuIik7Ci0gICAgICAgICAg
ICArK2k7Ci0gICAgICAgIH0gd2hpbGUgKGkgPCBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2Nh
bHNBdFlpZWxkLnNpemUoKSk7Ci0gICAgfQotCiAgICAgb3V0LnByaW50ZigiXG4iKTsKIH0KIApA
QCAtMTY3MSwzMSArMTY2MCw2IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoCiAgICAg
ICAgICAgICBvdXQucHJpbnRmKCIlcywgJWQiLCBkZWJ1Z0hvb2tOYW1lKGRlYnVnSG9va0lEKSwg
aGFzQnJlYWtwb2ludEZsYWcpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAg
ICAgY2FzZSBvcF9zYXZlOiB7Ci0gICAgICAgICAgICBpbnQgZ2VuZXJhdG9yID0gKCsraXQpLT51
Lm9wZXJhbmQ7Ci0gICAgICAgICAgICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSAo
KytpdCktPnUudW5zaWduZWRWYWx1ZTsKLSAgICAgICAgICAgIGludCBvZmZzZXQgPSAoKytpdCkt
PnUub3BlcmFuZDsKLSAgICAgICAgICAgIEZhc3RCaXRWZWN0b3IgbGl2ZW5lc3M7Ci0gICAgICAg
ICAgICBpZiAobGl2ZUNhbGxlZUxvY2Fsc0luZGV4IDwgbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVl
TG9jYWxzQXRZaWVsZC5zaXplKCkpCi0gICAgICAgICAgICAgICAgbGl2ZW5lc3MgPSBtX3JhcmVE
YXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkW2xpdmVDYWxsZWVMb2NhbHNJbmRleF07Ci0g
ICAgICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJz
YXZlIik7Ci0gICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgIiwgcmVnaXN0ZXJOYW1lKGdlbmVy
YXRvcikuZGF0YSgpKTsKLSAgICAgICAgICAgIGxpdmVuZXNzLmR1bXAob3V0KTsKLSAgICAgICAg
ICAgIG91dC5wcmludGYoIihAbGl2ZSUxdSksICVkKC0+JWQpIiwgbGl2ZUNhbGxlZUxvY2Fsc0lu
ZGV4LCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICB9Ci0gICAgICAgIGNhc2Ugb3BfcmVzdW1lOiB7Ci0gICAgICAgICAgICBpbnQgZ2VuZXJh
dG9yID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICB1bnNpZ25lZCBsaXZlQ2FsbGVl
TG9jYWxzSW5kZXggPSAoKytpdCktPnUudW5zaWduZWRWYWx1ZTsKLSAgICAgICAgICAgIEZhc3RC
aXRWZWN0b3IgbGl2ZW5lc3M7Ci0gICAgICAgICAgICBpZiAobGl2ZUNhbGxlZUxvY2Fsc0luZGV4
IDwgbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZC5zaXplKCkpCi0gICAgICAg
ICAgICAgICAgbGl2ZW5lc3MgPSBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxk
W2xpdmVDYWxsZWVMb2NhbHNJbmRleF07Ci0gICAgICAgICAgICBwcmludExvY2F0aW9uQW5kT3Ao
b3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJyZXN1bWUiKTsKLSAgICAgICAgICAgIG91dC5wcmlu
dGYoIiVzLCAiLCByZWdpc3Rlck5hbWUoZ2VuZXJhdG9yKS5kYXRhKCkpOwotICAgICAgICAgICAg
bGl2ZW5lc3MuZHVtcChvdXQpOwotICAgICAgICAgICAgb3V0LnByaW50ZigiKEBsaXZlJTF1KSIs
IGxpdmVDYWxsZWVMb2NhbHNJbmRleCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQog
ICAgICAgICBjYXNlIG9wX2Fzc2VydDogewogICAgICAgICAgICAgaW50IGNvbmRpdGlvbiA9ICgr
K2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IGxpbmUgPSAoKytpdCktPnUub3BlcmFu
ZDsKQEAgLTE5MDcsNyArMTg3MSw2IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihW
TSYgdm0sIENvcHlQYXJzZWRCbG9ja1RhZywgQ29kZUJsb2NrJiBvdGhlcikKICAgICAgICAgbV9y
YXJlRGF0YS0+bV9jb25zdGFudEJ1ZmZlcnMgPSBvdGhlci5tX3JhcmVEYXRhLT5tX2NvbnN0YW50
QnVmZmVyczsKICAgICAgICAgbV9yYXJlRGF0YS0+bV9zd2l0Y2hKdW1wVGFibGVzID0gb3RoZXIu
bV9yYXJlRGF0YS0+bV9zd2l0Y2hKdW1wVGFibGVzOwogICAgICAgICBtX3JhcmVEYXRhLT5tX3N0
cmluZ1N3aXRjaEp1bXBUYWJsZXMgPSBvdGhlci5tX3JhcmVEYXRhLT5tX3N0cmluZ1N3aXRjaEp1
bXBUYWJsZXM7Ci0gICAgICAgIG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQg
PSBvdGhlci5tX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkOwogICAgIH0KICAg
ICAKICAgICBoZWFwKCktPm1fY29kZUJsb2Nrcy5hZGQodGhpcyk7CkBAIC0yMDI5LDcgKzE5OTIs
NyBAQCB2b2lkIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRh
YmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGluawogICAgICAgICAgICAgICAgIFVubGlua2VkU3Ry
aW5nSnVtcFRhYmxlOjpTdHJpbmdPZmZzZXRUYWJsZTo6aXRlcmF0b3IgZW5kID0gdW5saW5rZWRD
b2RlQmxvY2stPnN0cmluZ1N3aXRjaEp1bXBUYWJsZShpKS5vZmZzZXRUYWJsZS5lbmQoKTsKICAg
ICAgICAgICAgICAgICBmb3IgKDsgcHRyICE9IGVuZDsgKytwdHIpIHsKICAgICAgICAgICAgICAg
ICAgICAgT2Zmc2V0TG9jYXRpb24gb2Zmc2V0OwotICAgICAgICAgICAgICAgICAgICBvZmZzZXQu
YnJhbmNoT2Zmc2V0ID0gcHRyLT52YWx1ZTsKKyAgICAgICAgICAgICAgICAgICAgb2Zmc2V0LmJy
YW5jaE9mZnNldCA9IHB0ci0+dmFsdWUuYnJhbmNoT2Zmc2V0OwogICAgICAgICAgICAgICAgICAg
ICBtX3JhcmVEYXRhLT5tX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXNbaV0ub2Zmc2V0VGFibGUuYWRk
KHB0ci0+a2V5LCBvZmZzZXQpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KQEAg
LTIwNjksMTEgKzIwMzIsMTcgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2
bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICAvLyBCb29r
a2VlcCB0aGUgc3Ryb25nbHkgcmVmZXJlbmNlZCBtb2R1bGUgZW52aXJvbm1lbnRzLgogICAgIEhh
c2hTZXQ8SlNNb2R1bGVFbnZpcm9ubWVudCo+IHN0cm9uZ2x5UmVmZXJlbmNlZE1vZHVsZUVudmly
b25tZW50czsKIAotICAgIC8vIEJvb2trZWVwIHRoZSBtZXJnZSBwb2ludCBieXRlY29kZSBvZmZz
ZXRzLgotICAgIFZlY3RvcjxzaXplX3Q+IG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldHM7Ci0KICAg
ICBSZWZDb3VudGVkQXJyYXk8SW5zdHJ1Y3Rpb24+IGluc3RydWN0aW9ucyhpbnN0cnVjdGlvbkNv
dW50KTsKIAorICAgIHVuc2lnbmVkIHZhbHVlUHJvZmlsZUNvdW50ID0gMDsKKyAgICBhdXRvIGxp
bmtWYWx1ZVByb2ZpbGUgPSBbJl0odW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIHVuc2lnbmVkIG9w
TGVuZ3RoKSB7CisgICAgICAgIHVuc2lnbmVkIHZhbHVlUHJvZmlsZUluZGV4ID0gdmFsdWVQcm9m
aWxlQ291bnQrKzsKKyAgICAgICAgVmFsdWVQcm9maWxlKiBwcm9maWxlID0gJm1fdmFsdWVQcm9m
aWxlc1t2YWx1ZVByb2ZpbGVJbmRleF07CisgICAgICAgIEFTU0VSVChwcm9maWxlLT5tX2J5dGVj
b2RlT2Zmc2V0ID09IC0xKTsKKyAgICAgICAgcHJvZmlsZS0+bV9ieXRlY29kZU9mZnNldCA9IGJ5
dGVjb2RlT2Zmc2V0OworICAgICAgICBpbnN0cnVjdGlvbnNbYnl0ZWNvZGVPZmZzZXQgKyBvcExl
bmd0aCAtIDFdID0gcHJvZmlsZTsKKyAgICB9OworCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
IWluc3RydWN0aW9uUmVhZGVyLmF0RW5kKCk7ICkgewogICAgICAgICBjb25zdCBVbmxpbmtlZElu
c3RydWN0aW9uKiBwYyA9IGluc3RydWN0aW9uUmVhZGVyLm5leHQoKTsKIApAQCAtMjEwOCwxMCAr
MjA3Nyw3IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4
ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAgICAgIGNhc2Ugb3BfZ2V0X2J5
X2lkOgogICAgICAgICBjYXNlIG9wX2dldF9mcm9tX2FyZ3VtZW50czoKICAgICAgICAgY2FzZSBv
cF90b19udW1iZXI6IHsKLSAgICAgICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9ICZtX3Zh
bHVlUHJvZmlsZXNbcGNbb3BMZW5ndGggLSAxXS51Lm9wZXJhbmRdOwotICAgICAgICAgICAgQVNT
RVJUKHByb2ZpbGUtPm1fYnl0ZWNvZGVPZmZzZXQgPT0gLTEpOwotICAgICAgICAgICAgcHJvZmls
ZS0+bV9ieXRlY29kZU9mZnNldCA9IGk7Ci0gICAgICAgICAgICBpbnN0cnVjdGlvbnNbaSArIG9w
TGVuZ3RoIC0gMV0gPSBwcm9maWxlOworICAgICAgICAgICAgbGlua1ZhbHVlUHJvZmlsZShpLCBv
cExlbmd0aCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9w
X3B1dF9ieV92YWw6IHsKQEAgLTIxNDgsMTAgKzIxMTQsNyBAQCB2b2lkIENvZGVCbG9jazo6Zmlu
aXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVu
bGluawogICAgICAgICBjYXNlIG9wX2NhbGw6CiAgICAgICAgIGNhc2Ugb3BfdGFpbF9jYWxsOgog
ICAgICAgICBjYXNlIG9wX2NhbGxfZXZhbDogewotICAgICAgICAgICAgVmFsdWVQcm9maWxlKiBw
cm9maWxlID0gJm1fdmFsdWVQcm9maWxlc1twY1tvcExlbmd0aCAtIDFdLnUub3BlcmFuZF07Ci0g
ICAgICAgICAgICBBU1NFUlQocHJvZmlsZS0+bV9ieXRlY29kZU9mZnNldCA9PSAtMSk7Ci0gICAg
ICAgICAgICBwcm9maWxlLT5tX2J5dGVjb2RlT2Zmc2V0ID0gaTsKLSAgICAgICAgICAgIGluc3Ry
dWN0aW9uc1tpICsgb3BMZW5ndGggLSAxXSA9IHByb2ZpbGU7CisgICAgICAgICAgICBsaW5rVmFs
dWVQcm9maWxlKGksIG9wTGVuZ3RoKTsKICAgICAgICAgICAgIGludCBhcnJheVByb2ZpbGVJbmRl
eCA9IHBjW29wTGVuZ3RoIC0gMl0udS5vcGVyYW5kOwogICAgICAgICAgICAgbV9hcnJheVByb2Zp
bGVzW2FycmF5UHJvZmlsZUluZGV4XSA9IEFycmF5UHJvZmlsZShpKTsKICAgICAgICAgICAgIGlu
c3RydWN0aW9uc1tpICsgb3BMZW5ndGggLSAyXSA9ICZtX2FycmF5UHJvZmlsZXNbYXJyYXlQcm9m
aWxlSW5kZXhdOwpAQCAtMjE2MCwxMCArMjEyMyw3IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5pc2hD
cmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5r
CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9jb25zdHJ1Y3Q6IHsKICAgICAgICAgICAgIGlu
c3RydWN0aW9uc1tpICsgNV0gPSAmbV9sbGludENhbGxMaW5rSW5mb3NbcGNbNV0udS5vcGVyYW5k
XTsKLSAgICAgICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9ICZtX3ZhbHVlUHJvZmlsZXNb
cGNbb3BMZW5ndGggLSAxXS51Lm9wZXJhbmRdOwotICAgICAgICAgICAgQVNTRVJUKHByb2ZpbGUt
Pm1fYnl0ZWNvZGVPZmZzZXQgPT0gLTEpOwotICAgICAgICAgICAgcHJvZmlsZS0+bV9ieXRlY29k
ZU9mZnNldCA9IGk7Ci0gICAgICAgICAgICBpbnN0cnVjdGlvbnNbaSArIG9wTGVuZ3RoIC0gMV0g
PSBwcm9maWxlOworICAgICAgICAgICAgbGlua1ZhbHVlUHJvZmlsZShpLCBvcExlbmd0aCk7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2dldF9hcnJheV9s
ZW5ndGg6CkBAIC0yMTk0LDEwICsyMTU0LDcgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0
aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAg
ICAgICAgfQogCiAgICAgICAgIGNhc2Ugb3BfZ2V0X2Zyb21fc2NvcGU6IHsKLSAgICAgICAgICAg
IFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9ICZtX3ZhbHVlUHJvZmlsZXNbcGNbb3BMZW5ndGggLSAx
XS51Lm9wZXJhbmRdOwotICAgICAgICAgICAgQVNTRVJUKHByb2ZpbGUtPm1fYnl0ZWNvZGVPZmZz
ZXQgPT0gLTEpOwotICAgICAgICAgICAgcHJvZmlsZS0+bV9ieXRlY29kZU9mZnNldCA9IGk7Ci0g
ICAgICAgICAgICBpbnN0cnVjdGlvbnNbaSArIG9wTGVuZ3RoIC0gMV0gPSBwcm9maWxlOworICAg
ICAgICAgICAgbGlua1ZhbHVlUHJvZmlsZShpLCBvcExlbmd0aCk7CiAKICAgICAgICAgICAgIC8v
IGdldF9mcm9tX3Njb3BlIGRzdCwgc2NvcGUsIGlkLCBHZXRQdXRJbmZvLCBTdHJ1Y3R1cmUsIE9w
ZXJhbmQKIApAQCAtMjM1NCwxNSArMjMxMSw2IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5pc2hDcmVh
dGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCi0gICAgICAgIGNhc2Ugb3Bfc2F2ZTogewot
ICAgICAgICAgICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gcGNbMl0udS5pbmRl
eDsKLSAgICAgICAgICAgIGludCBvZmZzZXQgPSBwY1szXS51Lm9wZXJhbmQ7Ci0gICAgICAgICAg
ICBpZiAobGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID49IG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldHMu
c2l6ZSgpKQotICAgICAgICAgICAgICAgIG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldHMucmVzaXpl
KGxpdmVDYWxsZWVMb2NhbHNJbmRleCArIDEpOwotICAgICAgICAgICAgbWVyZ2VQb2ludEJ5dGVj
b2RlT2Zmc2V0c1tsaXZlQ2FsbGVlTG9jYWxzSW5kZXhdID0gaSArIG9mZnNldDsKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICB9Ci0KICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CkBAIC0yMzc0LDIwICsyMzIyLDYgQEAgdm9pZCBDb2RlQmxvY2s6OmZp
bmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBV
bmxpbmsKIAogICAgIG1faW5zdHJ1Y3Rpb25zID0gV1RGTW92ZShpbnN0cnVjdGlvbnMpOwogCi0g
ICAgLy8gUGVyZm9ybSBieXRlY29kZSBsaXZlbmVzcyBhbmFseXNpcyB0byBkZXRlcm1pbmUgd2hp
Y2ggbG9jYWxzIGFyZSBsaXZlIGFuZCBzaG91bGQgYmUgcmVzdW1lZCB3aGVuIGV4ZWN1dGluZyBv
cF9yZXN1bWUuCi0gICAgaWYgKHVubGlua2VkQ29kZUJsb2NrLT5wYXJzZU1vZGUoKSA9PSBTb3Vy
Y2VQYXJzZU1vZGU6OkdlbmVyYXRvckJvZHlNb2RlKSB7Ci0gICAgICAgIGlmIChzaXplX3QgY291
bnQgPSBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXRzLnNpemUoKSkgewotICAgICAgICAgICAgY3Jl
YXRlUmFyZURhdGFJZk5lY2Vzc2FyeSgpOwotICAgICAgICAgICAgQnl0ZWNvZGVMaXZlbmVzc0Fu
YWx5c2lzIGxpdmVuZXNzKHRoaXMpOwotICAgICAgICAgICAgbV9yYXJlRGF0YS0+bV9saXZlQ2Fs
bGVlTG9jYWxzQXRZaWVsZC5ncm93KGNvdW50KTsKLSAgICAgICAgICAgIHNpemVfdCBsaXZlQ2Fs
bGVlTG9jYWxzSW5kZXggPSAwOwotICAgICAgICAgICAgZm9yIChzaXplX3QgYnl0ZWNvZGVPZmZz
ZXQgOiBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXRzKSB7Ci0gICAgICAgICAgICAgICAgbV9yYXJl
RGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZFtsaXZlQ2FsbGVlTG9jYWxzSW5kZXhdID0g
bGl2ZW5lc3MuZ2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCk7
Ci0gICAgICAgICAgICAgICAgKytsaXZlQ2FsbGVlTG9jYWxzSW5kZXg7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIH0KLSAgICB9Ci0KICAgICAvLyBTZXQgb3B0aW1pemF0aW9uIHRocmVzaG9sZHMg
b25seSBhZnRlciBtX2luc3RydWN0aW9ucyBpcyBpbml0aWFsaXplZCwgc2luY2UgdGhlc2UKICAg
ICAvLyByZWx5IG9uIHRoZSBpbnN0cnVjdGlvbiBjb3VudCAoYW5kIGFyZSBpbiB0aGVvcnkgcGVy
bWl0dGVkIHRvIGFsc28gaW5zcGVjdCB0aGUKICAgICAvLyBpbnN0cnVjdGlvbiBzdHJlYW0gdG8g
bW9yZSBhY2N1cmF0ZSBhc3Nlc3MgdGhlIGNvc3Qgb2YgdGllci11cCkuCkBAIC0zMTg3LDIxICsz
MTIxLDcgQEAgSGFuZGxlckluZm8qIENvZGVCbG9jazo6aGFuZGxlckZvckluZGV4KHVuc2lnbmVk
IGluZGV4LCBSZXF1aXJlZEhhbmRsZXIgcmVxdWlyZWQKIHsKICAgICBpZiAoIW1fcmFyZURhdGEp
CiAgICAgICAgIHJldHVybiAwOwotICAgIAotICAgIFZlY3RvcjxIYW5kbGVySW5mbz4mIGV4Y2Vw
dGlvbkhhbmRsZXJzID0gbV9yYXJlRGF0YS0+bV9leGNlcHRpb25IYW5kbGVyczsKLSAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGV4Y2VwdGlvbkhhbmRsZXJzLnNpemUoKTsgKytpKSB7Ci0gICAg
ICAgIEhhbmRsZXJJbmZvJiBoYW5kbGVyID0gZXhjZXB0aW9uSGFuZGxlcnNbaV07Ci0gICAgICAg
IGlmICgocmVxdWlyZWRIYW5kbGVyID09IFJlcXVpcmVkSGFuZGxlcjo6Q2F0Y2hIYW5kbGVyKSAm
JiAhaGFuZGxlci5pc0NhdGNoSGFuZGxlcigpKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAg
ICAgICAgLy8gSGFuZGxlcnMgYXJlIG9yZGVyZWQgaW5uZXJtb3N0IGZpcnN0LCBzbyB0aGUgZmly
c3QgaGFuZGxlciB3ZSBlbmNvdW50ZXIKLSAgICAgICAgLy8gdGhhdCBjb250YWlucyB0aGUgc291
cmNlIGFkZHJlc3MgaXMgdGhlIGNvcnJlY3QgaGFuZGxlciB0byB1c2UuCi0gICAgICAgIC8vIFRo
aXMgaW5kZXggdXNlZCBpcyBlaXRoZXIgdGhlIEJ5dGVjb2RlT2Zmc2V0IG9yIGEgQ2FsbFNpdGVJ
bmRleC4KLSAgICAgICAgaWYgKGhhbmRsZXIuc3RhcnQgPD0gaW5kZXggJiYgaGFuZGxlci5lbmQg
PiBpbmRleCkKLSAgICAgICAgICAgIHJldHVybiAmaGFuZGxlcjsKLSAgICB9Ci0KLSAgICByZXR1
cm4gMDsKKyAgICByZXR1cm4gSGFuZGxlckluZm86OmhhbmRsZXJGb3JJbmRleChtX3JhcmVEYXRh
LT5tX2V4Y2VwdGlvbkhhbmRsZXJzLCBpbmRleCwgcmVxdWlyZWRIYW5kbGVyKTsKIH0KIAogQ2Fs
bFNpdGVJbmRleCBDb2RlQmxvY2s6Om5ld0V4Y2VwdGlvbkhhbmRsaW5nQ2FsbFNpdGVJbmRleChD
YWxsU2l0ZUluZGV4IG9yaWdpbmFsQ2FsbFNpdGUpCkBAIC0zMjk2LDcgKzMyMTYsNiBAQCB2b2lk
IENvZGVCbG9jazo6c2hyaW5rVG9GaXQoU2hyaW5rTW9kZSBzaHJpbmtNb2RlKQogICAgICAgICBp
ZiAobV9yYXJlRGF0YSkgewogICAgICAgICAgICAgbV9yYXJlRGF0YS0+bV9zd2l0Y2hKdW1wVGFi
bGVzLnNocmlua1RvRml0KCk7CiAgICAgICAgICAgICBtX3JhcmVEYXRhLT5tX3N0cmluZ1N3aXRj
aEp1bXBUYWJsZXMuc2hyaW5rVG9GaXQoKTsKLSAgICAgICAgICAgIG1fcmFyZURhdGEtPm1fbGl2
ZUNhbGxlZUxvY2Fsc0F0WWllbGQuc2hyaW5rVG9GaXQoKTsKICAgICAgICAgfQogICAgIH0gLy8g
ZWxzZSBkb24ndCBzaHJpbmsgdGhlc2UsIGJlY2F1c2Ugd2Ugd291bGQgaGF2ZSBhbHJlYWR5IHBv
aW50ZWQgcG9pbnRlcnMgaW50byB0aGVzZSB0YWJsZXMuCiB9CkBAIC00Mjc4LDE0ICs0MTk3LDkg
QEAgU3RyaW5nIENvZGVCbG9jazo6bmFtZUZvclJlZ2lzdGVyKFZpcnR1YWxSZWdpc3RlciB2aXJ0
dWFsUmVnaXN0ZXIpCiAKIFZhbHVlUHJvZmlsZSogQ29kZUJsb2NrOjp2YWx1ZVByb2ZpbGVGb3JC
eXRlY29kZU9mZnNldChpbnQgYnl0ZWNvZGVPZmZzZXQpCiB7Ci0gICAgVmFsdWVQcm9maWxlKiBy
ZXN1bHQgPSBiaW5hcnlTZWFyY2g8VmFsdWVQcm9maWxlLCBpbnQ+KAotICAgICAgICBtX3ZhbHVl
UHJvZmlsZXMsIG1fdmFsdWVQcm9maWxlcy5zaXplKCksIGJ5dGVjb2RlT2Zmc2V0LAotICAgICAg
ICBnZXRWYWx1ZVByb2ZpbGVCeXRlY29kZU9mZnNldDxWYWx1ZVByb2ZpbGU+KTsKLSAgICBBU1NF
UlQocmVzdWx0LT5tX2J5dGVjb2RlT2Zmc2V0ICE9IC0xKTsKLSAgICBBU1NFUlQoaW5zdHJ1Y3Rp
b25zKClbYnl0ZWNvZGVPZmZzZXQgKyBvcGNvZGVMZW5ndGgoCi0gICAgICAgIG1fdm0tPmludGVy
cHJldGVyLT5nZXRPcGNvZGVJRCgKLSAgICAgICAgICAgIGluc3RydWN0aW9ucygpW2J5dGVjb2Rl
T2Zmc2V0XS51Lm9wY29kZSkpIC0gMV0udS5wcm9maWxlID09IHJlc3VsdCk7Ci0gICAgcmV0dXJu
IHJlc3VsdDsKKyAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IG1fdm0tPmludGVycHJldGVyLT5nZXRP
cGNvZGVJRChpbnN0cnVjdGlvbnMoKVtieXRlY29kZU9mZnNldF0udS5vcGNvZGUpOworICAgIHVu
c2lnbmVkIGxlbmd0aCA9IG9wY29kZUxlbmd0aChvcGNvZGVJRCk7CisgICAgcmV0dXJuIGluc3Ry
dWN0aW9ucygpW2J5dGVjb2RlT2Zmc2V0ICsgbGVuZ3RoIC0gMV0udS5wcm9maWxlOwogfQogCiB2
b2lkIENvZGVCbG9jazo6dmFsaWRhdGUoKQpAQCAtNDU2OCw0ICs0NDgyLDE2IEBAIHZvaWQgQ29k
ZUJsb2NrOjpqaXRTb29uKCkKICAgICBtX2xsaW50RXhlY3V0ZUNvdW50ZXIuc2V0TmV3VGhyZXNo
b2xkKHRocmVzaG9sZEZvckpJVChPcHRpb25zOjp0aHJlc2hvbGRGb3JKSVRTb29uKCkpLCB0aGlz
KTsKIH0KIAorQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzJiBDb2RlQmxvY2s6OmxpdmVuZXNzQW5h
bHlzaXNTbG93KCkKK3sKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5
c2lzPiBhbmFseXNpcyA9IHN0ZDo6bWFrZV91bmlxdWU8Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lz
Pih0aGlzKTsKKyAgICB7CisgICAgICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKG1fbG9j
ayk7CisgICAgICAgIGlmICghbV9saXZlbmVzc0FuYWx5c2lzKQorICAgICAgICAgICAgbV9saXZl
bmVzc0FuYWx5c2lzID0gV1RGTW92ZShhbmFseXNpcyk7CisgICAgICAgIHJldHVybiAqbV9saXZl
bmVzc0FuYWx5c2lzOworICAgIH0KK30KKworCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAppbmRleCA0ODBhMWNiNWY4OTEzMDI3
NTE1N2EzYzJkODU1NzMzNjcyZmZmNjFmLi4wODg0Y2Y1M2U1YmQzYjhkMGYzOWFjYjRmZDgzYmMw
NzcxYmY5YTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5o
CkBAIC0zMyw3ICszMyw2IEBACiAjaW5jbHVkZSAiQXJyYXlQcm9maWxlLmgiCiAjaW5jbHVkZSAi
QnlWYWxJbmZvLmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVDb252ZW50aW9ucy5oIgotI2luY2x1ZGUg
IkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5oIgogI2luY2x1ZGUgIkNhbGxMaW5rSW5mby5oIgog
I2luY2x1ZGUgIkNhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0LmgiCiAjaW5jbHVkZSAi
Q29kZUJsb2NrSGFzaC5oIgpAQCAtNzksNiArNzgsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAor
Y2xhc3MgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOwogY2xhc3MgRXhlY1N0YXRlOwogY2xhc3Mg
SklUQWRkR2VuZXJhdG9yOwogY2xhc3MgSlNNb2R1bGVFbnZpcm9ubWVudDsKQEAgLTIyNCwxMCAr
MjI0LDYgQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgICAgIHJldHVy
biBpbmRleCA+PSBtX251bVZhcnM7CiAgICAgfQogCi0gICAgZW51bSBjbGFzcyBSZXF1aXJlZEhh
bmRsZXIgewotICAgICAgICBDYXRjaEhhbmRsZXIsCi0gICAgICAgIEFueUhhbmRsZXIKLSAgICB9
OwogICAgIEhhbmRsZXJJbmZvKiBoYW5kbGVyRm9yQnl0ZWNvZGVPZmZzZXQodW5zaWduZWQgYnl0
ZWNvZGVPZmZzZXQsIFJlcXVpcmVkSGFuZGxlciA9IFJlcXVpcmVkSGFuZGxlcjo6QW55SGFuZGxl
cik7CiAgICAgSGFuZGxlckluZm8qIGhhbmRsZXJGb3JJbmRleCh1bnNpZ25lZCwgUmVxdWlyZWRI
YW5kbGVyID0gUmVxdWlyZWRIYW5kbGVyOjpBbnlIYW5kbGVyKTsKICAgICB2b2lkIHJlbW92ZUV4
Y2VwdGlvbkhhbmRsZXJGb3JDYWxsU2l0ZShDYWxsU2l0ZUluZGV4KTsKQEAgLTMwMCw2ICsyOTYs
OSBAQCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PEluc3RydWN0aW9uKj4ocmV0dXJuQWRkcmVzcykgLSBpbnN0cnVjdGlvbnMoKS5i
ZWdpbigpOwogICAgIH0KIAorICAgIHR5cGVkZWYgSlNDOjpJbnN0cnVjdGlvbiBJbnN0cnVjdGlv
bjsKKyAgICB0eXBlZGVmIFJlZkNvdW50ZWRBcnJheTxJbnN0cnVjdGlvbj4mIFVucGFja2VkSW5z
dHJ1Y3Rpb25zOworCiAgICAgdW5zaWduZWQgbnVtYmVyT2ZJbnN0cnVjdGlvbnMoKSBjb25zdCB7
IHJldHVybiBtX2luc3RydWN0aW9ucy5zaXplKCk7IH0KICAgICBSZWZDb3VudGVkQXJyYXk8SW5z
dHJ1Y3Rpb24+JiBpbnN0cnVjdGlvbnMoKSB7IHJldHVybiBtX2luc3RydWN0aW9uczsgfQogICAg
IGNvbnN0IFJlZkNvdW50ZWRBcnJheTxJbnN0cnVjdGlvbj4mIGluc3RydWN0aW9ucygpIGNvbnN0
IHsgcmV0dXJuIG1faW5zdHJ1Y3Rpb25zOyB9CkBAIC01NDIsNyArNTQxLDcgQEAgY2xhc3MgQ29k
ZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgfQogCiAgICAgV3JpdGVCYXJyaWVyPFVua25v
d24+JiBjb25zdGFudFJlZ2lzdGVyKGludCBpbmRleCkgeyByZXR1cm4gbV9jb25zdGFudFJlZ2lz
dGVyc1tpbmRleCAtIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4XTsgfQotICAgIEFMV0FZU19J
TkxJTkUgYm9vbCBpc0NvbnN0YW50UmVnaXN0ZXJJbmRleChpbnQgaW5kZXgpIGNvbnN0IHsgcmV0
dXJuIGluZGV4ID49IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4OyB9CisgICAgc3RhdGljIEFM
V0FZU19JTkxJTkUgYm9vbCBpc0NvbnN0YW50UmVnaXN0ZXJJbmRleChpbnQgaW5kZXgpIHsgcmV0
dXJuIGluZGV4ID49IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4OyB9CiAgICAgQUxXQVlTX0lO
TElORSBKU1ZhbHVlIGdldENvbnN0YW50KGludCBpbmRleCkgY29uc3QgeyByZXR1cm4gbV9jb25z
dGFudFJlZ2lzdGVyc1tpbmRleCAtIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4XS5nZXQoKTsg
fQogICAgIEFMV0FZU19JTkxJTkUgU291cmNlQ29kZVJlcHJlc2VudGF0aW9uIGNvbnN0YW50U291
cmNlQ29kZVJlcHJlc2VudGF0aW9uKGludCBpbmRleCkgY29uc3QgeyByZXR1cm4gbV9jb25zdGFu
dHNTb3VyY2VDb2RlUmVwcmVzZW50YXRpb25baW5kZXggLSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJ
bmRleF07IH0KIApAQCAtNTg4LDE0ICs1ODcsNyBAQCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMg
SlNDZWxsIHsKICAgICAgICAgICAgIGlmICghIW1fbGl2ZW5lc3NBbmFseXNpcykKICAgICAgICAg
ICAgICAgICByZXR1cm4gKm1fbGl2ZW5lc3NBbmFseXNpczsKICAgICAgICAgfQotICAgICAgICBz
dGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzPiBhbmFseXNpcyA9Ci0gICAg
ICAgICAgICBzdGQ6Om1ha2VfdW5pcXVlPEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcz4odGhpcyk7
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKG1fbG9j
ayk7Ci0gICAgICAgICAgICBpZiAoIW1fbGl2ZW5lc3NBbmFseXNpcykKLSAgICAgICAgICAgICAg
ICBtX2xpdmVuZXNzQW5hbHlzaXMgPSBXVEZNb3ZlKGFuYWx5c2lzKTsKLSAgICAgICAgICAgIHJl
dHVybiAqbV9saXZlbmVzc0FuYWx5c2lzOwotICAgICAgICB9CisgICAgICAgIHJldHVybiBsaXZl
bmVzc0FuYWx5c2lzU2xvdygpOwogICAgIH0KICAgICAKICAgICB2b2lkIHZhbGlkYXRlKCk7CkBA
IC02MTYsMTggKzYwOCw2IEBAIGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAg
IFN0cmluZ0p1bXBUYWJsZSYgYWRkU3RyaW5nU3dpdGNoSnVtcFRhYmxlKCkgeyBjcmVhdGVSYXJl
RGF0YUlmTmVjZXNzYXJ5KCk7IG1fcmFyZURhdGEtPm1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlcy5h
cHBlbmQoU3RyaW5nSnVtcFRhYmxlKCkpOyByZXR1cm4gbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0
Y2hKdW1wVGFibGVzLmxhc3QoKTsgfQogICAgIFN0cmluZ0p1bXBUYWJsZSYgc3RyaW5nU3dpdGNo
SnVtcFRhYmxlKGludCB0YWJsZUluZGV4KSB7IFJFTEVBU0VfQVNTRVJUKG1fcmFyZURhdGEpOyBy
ZXR1cm4gbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzW3RhYmxlSW5kZXhdOyB9
CiAKLSAgICAvLyBMaXZlIGNhbGxlZSByZWdpc3RlcnMgYXQgeWllbGQgcG9pbnRzLgotICAgIGNv
bnN0IEZhc3RCaXRWZWN0b3ImIGxpdmVDYWxsZWVMb2NhbHNBdFlpZWxkKHVuc2lnbmVkIGluZGV4
KSBjb25zdAotICAgIHsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9yYXJlRGF0YSk7Ci0gICAg
ICAgIHJldHVybiBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkW2luZGV4XTsK
LSAgICB9Ci0gICAgRmFzdEJpdFZlY3RvciYgbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQodW5zaWdu
ZWQgaW5kZXgpCi0gICAgewotICAgICAgICBSRUxFQVNFX0FTU0VSVChtX3JhcmVEYXRhKTsKLSAg
ICAgICAgcmV0dXJuIG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGRbaW5kZXhd
OwotICAgIH0KLQogICAgIEV2YWxDb2RlQ2FjaGUmIGV2YWxDb2RlQ2FjaGUoKSB7IGNyZWF0ZVJh
cmVEYXRhSWZOZWNlc3NhcnkoKTsgcmV0dXJuIG1fcmFyZURhdGEtPm1fZXZhbENvZGVDYWNoZTsg
fQogCiAgICAgZW51bSBTaHJpbmtNb2RlIHsKQEAgLTg4Miw4ICs4NjIsNiBAQCBjbGFzcyBDb2Rl
QmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAgICAgVmVjdG9yPFNpbXBsZUp1bXBUYWJsZT4g
bV9zd2l0Y2hKdW1wVGFibGVzOwogICAgICAgICBWZWN0b3I8U3RyaW5nSnVtcFRhYmxlPiBtX3N0
cmluZ1N3aXRjaEp1bXBUYWJsZXM7CiAKLSAgICAgICAgVmVjdG9yPEZhc3RCaXRWZWN0b3I+IG1f
bGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQ7Ci0KICAgICAgICAgRXZhbENvZGVDYWNoZSBtX2V2YWxD
b2RlQ2FjaGU7CiAgICAgfTsKIApAQCAtOTE4LDYgKzg5Niw4IEBAIGNsYXNzIENvZGVCbG9jayA6
IHB1YmxpYyBKU0NlbGwgewogCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBDb2RlQmxvY2tT
ZXQ7CisKKyAgICBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMmIGxpdmVuZXNzQW5hbHlzaXNTbG93
KCk7CiAgICAgCiAgICAgQ29kZUJsb2NrKiBzcGVjaWFsT1NSRW50cnlCbG9ja09yTnVsbCgpOwog
ICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0hhbmRsZXJJ
bmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSGFuZGxlckluZm8uaAppbmRl
eCBhY2RkYTA4ZWQxNGNiZjlmMDk3MTI3NTA0MDVhNDE3NDFmNzZhMjEzLi5iYjY5MmI5ZGMxNzBi
MDlmNDNjZTg2N2Y5NDFmNzUzNWFjZmVjZjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvSGFuZGxlckluZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvSGFuZGxlckluZm8uaApAQCAtMzcsNiArMzcsMTEgQEAgZW51bSBjbGFzcyBIYW5k
bGVyVHlwZSB7CiAgICAgU3ludGhlc2l6ZWRGaW5hbGx5ID0gMwogfTsKIAorZW51bSBjbGFzcyBS
ZXF1aXJlZEhhbmRsZXIgeworICAgIENhdGNoSGFuZGxlciwKKyAgICBBbnlIYW5kbGVyCit9Owor
CiBzdHJ1Y3QgSGFuZGxlckluZm9CYXNlIHsKICAgICBIYW5kbGVyVHlwZSB0eXBlKCkgY29uc3Qg
eyByZXR1cm4gc3RhdGljX2Nhc3Q8SGFuZGxlclR5cGU+KHR5cGVCaXRzKTsgfQogICAgIHZvaWQg
c2V0VHlwZShIYW5kbGVyVHlwZSB0eXBlKSB7IHR5cGVCaXRzID0gc3RhdGljX2Nhc3Q8dWludDMy
X3Q+KHR5cGUpOyB9CkBAIC01OCw2ICs2MywyMyBAQCBzdHJ1Y3QgSGFuZGxlckluZm9CYXNlIHsK
IAogICAgIGJvb2wgaXNDYXRjaEhhbmRsZXIoKSBjb25zdCB7IHJldHVybiB0eXBlKCkgPT0gSGFu
ZGxlclR5cGU6OkNhdGNoOyB9CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIYW5kbGVyPgorICAg
IHN0YXRpYyBIYW5kbGVyKiBoYW5kbGVyRm9ySW5kZXgoVmVjdG9yPEhhbmRsZXI+JiBleGVwdGlv
bkhhbmRsZXJzLCB1bnNpZ25lZCBpbmRleCwgUmVxdWlyZWRIYW5kbGVyIHJlcXVpcmVkSGFuZGxl
cikKKyAgICB7CisgICAgICAgIGZvciAoSGFuZGxlciYgaGFuZGxlciA6IGV4ZXB0aW9uSGFuZGxl
cnMpIHsKKyAgICAgICAgICAgIGlmICgocmVxdWlyZWRIYW5kbGVyID09IFJlcXVpcmVkSGFuZGxl
cjo6Q2F0Y2hIYW5kbGVyKSAmJiAhaGFuZGxlci5pc0NhdGNoSGFuZGxlcigpKQorICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICAvLyBIYW5kbGVycyBhcmUgb3JkZXJlZCBp
bm5lcm1vc3QgZmlyc3QsIHNvIHRoZSBmaXJzdCBoYW5kbGVyIHdlIGVuY291bnRlcgorICAgICAg
ICAgICAgLy8gdGhhdCBjb250YWlucyB0aGUgc291cmNlIGFkZHJlc3MgaXMgdGhlIGNvcnJlY3Qg
aGFuZGxlciB0byB1c2UuCisgICAgICAgICAgICAvLyBUaGlzIGluZGV4IHVzZWQgaXMgZWl0aGVy
IHRoZSBCeXRlY29kZU9mZnNldCBvciBhIENhbGxTaXRlSW5kZXguCisgICAgICAgICAgICBpZiAo
aGFuZGxlci5zdGFydCA8PSBpbmRleCAmJiBoYW5kbGVyLmVuZCA+IGluZGV4KQorICAgICAgICAg
ICAgICAgIHJldHVybiAmaGFuZGxlcjsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgIH0KKwogICAgIHVpbnQzMl90IHN0YXJ0OwogICAgIHVpbnQzMl90IGVuZDsKICAg
ICB1aW50MzJfdCB0YXJnZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9QcmVjaXNlSnVtcFRhcmdldHMuY3BwCmluZGV4IGUyY2IwMDA0ODM3OTRiYTkyZDUxMGRj
ZjVmYTk5NDg4NWEyM2RjM2QuLmNhYjlmYmRjNGU4MzlmYmI4OWE2OTMzNTYyMjJkYjAwZTEwMjIz
Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVt
cFRhcmdldHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVjaXNl
SnVtcFRhcmdldHMuY3BwCkBAIC0yNiwxNCArMjYsMTUgQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJQcmVjaXNlSnVtcFRhcmdldHMuaCIKIAorI2luY2x1ZGUgIkludGVycHJldGVy
SW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAK
LXRlbXBsYXRlIDxzaXplX3QgdmVjdG9yU2l6ZT4KLXN0YXRpYyB2b2lkIGdldEp1bXBUYXJnZXRz
Rm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEludGVycHJldGVyKiBpbnRl
cnByZXRlciwgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBieXRlY29k
ZU9mZnNldCwgVmVjdG9yPHVuc2lnbmVkLCB2ZWN0b3JTaXplPiYgb3V0KQordGVtcGxhdGUgPHNp
emVfdCB2ZWN0b3JTaXplLCB0eXBlbmFtZSBCbG9jaywgdHlwZW5hbWUgSW5zdHJ1Y3Rpb24+Citz
dGF0aWMgdm9pZCBnZXRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KEJsb2NrKiBjb2RlQmxv
Y2ssIEludGVycHJldGVyKiBpbnRlcnByZXRlciwgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0Jl
Z2luLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgVmVjdG9yPHVuc2lnbmVkLCB2ZWN0b3JTaXpl
PiYgb3V0KQogewotICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0ZXItPmdldE9wY29k
ZUlEKGluc3RydWN0aW9uc0JlZ2luW2J5dGVjb2RlT2Zmc2V0XS51Lm9wY29kZSk7CisgICAgT3Bj
b2RlSUQgb3Bjb2RlSUQgPSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25zQmVn
aW5bYnl0ZWNvZGVPZmZzZXRdKTsKICAgICBJbnN0cnVjdGlvbiogY3VycmVudCA9IGluc3RydWN0
aW9uc0JlZ2luICsgYnl0ZWNvZGVPZmZzZXQ7CiAgICAgc3dpdGNoIChvcGNvZGVJRCkgewogICAg
IGNhc2Ugb3Bfam1wOgpAQCAtNTQsMjEgKzU1LDI1IEBAIHN0YXRpYyB2b2lkIGdldEp1bXBUYXJn
ZXRzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEludGVycHJldGVyKiBp
CiAgICAgY2FzZSBvcF9qbmxlc3NlcToKICAgICBjYXNlIG9wX2puZ3JlYXRlcjoKICAgICBjYXNl
IG9wX2puZ3JlYXRlcmVxOgotICAgIGNhc2Ugb3Bfc2F2ZTogLy8gVGhlIGp1bXAgb2Ygb3Bfc2F2
ZSBpcyBwdXJlbHkgZm9yIGNhbGN1bGF0aW5nIGxpdmVuZXNzLgogICAgICAgICBvdXQuYXBwZW5k
KGJ5dGVjb2RlT2Zmc2V0ICsgY3VycmVudFszXS51Lm9wZXJhbmQpOwogICAgICAgICBicmVhazsK
KyAgICBjYXNlIG9wX3NhdmU6IHsKKyAgICAgICAgLy8gVGhlIGp1bXAgb2Ygb3Bfc2F2ZSB1bmRl
ciBFeHRyYWN0R2VuZXJhdG9yTGl2ZUNhbGxlZUxvY2FscyBtb2RlIGlzIHB1cmVseSBmb3IgY2Fs
Y3VsYXRpbmcgbGl2ZW5lc3MuCisgICAgICAgIG91dC5hcHBlbmQoYnl0ZWNvZGVPZmZzZXQgKyBj
dXJyZW50WzNdLnUub3BlcmFuZCk7CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICBjYXNlIG9w
X3N3aXRjaF9pbW06CiAgICAgY2FzZSBvcF9zd2l0Y2hfY2hhcjogewotICAgICAgICBTaW1wbGVK
dW1wVGFibGUmIHRhYmxlID0gY29kZUJsb2NrLT5zd2l0Y2hKdW1wVGFibGUoY3VycmVudFsxXS51
Lm9wZXJhbmQpOworICAgICAgICBhdXRvJiB0YWJsZSA9IGNvZGVCbG9jay0+c3dpdGNoSnVtcFRh
YmxlKGN1cnJlbnRbMV0udS5vcGVyYW5kKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gdGFi
bGUuYnJhbmNoT2Zmc2V0cy5zaXplKCk7IGktLTspCiAgICAgICAgICAgICBvdXQuYXBwZW5kKGJ5
dGVjb2RlT2Zmc2V0ICsgdGFibGUuYnJhbmNoT2Zmc2V0c1tpXSk7CiAgICAgICAgIG91dC5hcHBl
bmQoYnl0ZWNvZGVPZmZzZXQgKyBjdXJyZW50WzJdLnUub3BlcmFuZCk7CiAgICAgICAgIGJyZWFr
OwogICAgIH0KICAgICBjYXNlIG9wX3N3aXRjaF9zdHJpbmc6IHsKLSAgICAgICAgU3RyaW5nSnVt
cFRhYmxlJiB0YWJsZSA9IGNvZGVCbG9jay0+c3RyaW5nU3dpdGNoSnVtcFRhYmxlKGN1cnJlbnRb
MV0udS5vcGVyYW5kKTsKLSAgICAgICAgU3RyaW5nSnVtcFRhYmxlOjpTdHJpbmdPZmZzZXRUYWJs
ZTo6aXRlcmF0b3IgaXRlciA9IHRhYmxlLm9mZnNldFRhYmxlLmJlZ2luKCk7Ci0gICAgICAgIFN0
cmluZ0p1bXBUYWJsZTo6U3RyaW5nT2Zmc2V0VGFibGU6Oml0ZXJhdG9yIGVuZCA9IHRhYmxlLm9m
ZnNldFRhYmxlLmVuZCgpOworICAgICAgICBhdXRvJiB0YWJsZSA9IGNvZGVCbG9jay0+c3RyaW5n
U3dpdGNoSnVtcFRhYmxlKGN1cnJlbnRbMV0udS5vcGVyYW5kKTsKKyAgICAgICAgYXV0byBpdGVy
ID0gdGFibGUub2Zmc2V0VGFibGUuYmVnaW4oKTsKKyAgICAgICAgYXV0byBlbmQgPSB0YWJsZS5v
ZmZzZXRUYWJsZS5lbmQoKTsKICAgICAgICAgZm9yICg7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpCiAg
ICAgICAgICAgICBvdXQuYXBwZW5kKGJ5dGVjb2RlT2Zmc2V0ICsgaXRlci0+dmFsdWUuYnJhbmNo
T2Zmc2V0KTsKICAgICAgICAgb3V0LmFwcGVuZChieXRlY29kZU9mZnNldCArIGN1cnJlbnRbMl0u
dS5vcGVyYW5kKTsKQEAgLTgyLDEzICs4NywxOSBAQCBzdGF0aWMgdm9pZCBnZXRKdW1wVGFyZ2V0
c0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBJbnRlcnByZXRlciogaQog
ICAgIH0KIH0KIAotdm9pZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKENvZGVCbG9jayogY29k
ZUJsb2NrLCBWZWN0b3I8dW5zaWduZWQsIDMyPiYgb3V0KQorZW51bSBjbGFzcyBDb21wdXRlUHJl
Y2lzZUp1bXBUYXJnZXRzTW9kZSB7CisgICAgRm9sbG93Q29kZUJsb2NrQ2xhaW0sCisgICAgRm9y
Y2VDb21wdXRlLAorfTsKKwordGVtcGxhdGU8Q29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0c01vZGUg
TW9kZSwgdHlwZW5hbWUgQmxvY2ssIHR5cGVuYW1lIEluc3RydWN0aW9uLCBzaXplX3QgdmVjdG9y
U2l6ZT4KK3ZvaWQgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0c0ludGVybmFsKEJsb2NrKiBjb2Rl
QmxvY2ssIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgaW5zdHJ1Y3Rp
b25Db3VudCwgVmVjdG9yPHVuc2lnbmVkLCB2ZWN0b3JTaXplPiYgb3V0KQogewogICAgIEFTU0VS
VChvdXQuaXNFbXB0eSgpKTsKICAgICAKICAgICAvLyBXZSB3aWxsIGRlcml2ZSBhIHN1cGVyc2V0
IG9mIHRoZSBqdW1wIHRhcmdldHMgdGhhdCB0aGUgY29kZSBibG9jayB0aGlua3MgaXQgaGFzLgog
ICAgIC8vIFNvLCBpZiB0aGUgY29kZSBibG9jayBjbGFpbXMgdGhlcmUgYXJlIG5vbmUsIHRoZW4g
d2UgYXJlIGRvbmUuCi0gICAgaWYgKCFjb2RlQmxvY2stPm51bWJlck9mSnVtcFRhcmdldHMoKSkK
KyAgICBpZiAoTW9kZSA9PSBDb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzTW9kZTo6Rm9sbG93Q29k
ZUJsb2NrQ2xhaW0gJiYgIWNvZGVCbG9jay0+bnVtYmVyT2ZKdW1wVGFyZ2V0cygpKQogICAgICAg
ICByZXR1cm47CiAgICAgCiAgICAgZm9yICh1bnNpZ25lZCBpID0gY29kZUJsb2NrLT5udW1iZXJP
ZkV4Y2VwdGlvbkhhbmRsZXJzKCk7IGktLTspIHsKQEAgLTk4LDEwICsxMDksOCBAQCB2b2lkIGNv
bXB1dGVQcmVjaXNlSnVtcFRhcmdldHMoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFZlY3Rvcjx1bnNp
Z25lZCwgMzI+JiBvdXQpCiAgICAgfQogCiAgICAgSW50ZXJwcmV0ZXIqIGludGVycHJldGVyID0g
Y29kZUJsb2NrLT52bSgpLT5pbnRlcnByZXRlcjsKLSAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rp
b25zQmVnaW4gPSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCk7Ci0gICAgdW5zaWdu
ZWQgaW5zdHJ1Y3Rpb25Db3VudCA9IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpOwog
ICAgIGZvciAodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQgPSAwOyBieXRlY29kZU9mZnNldCA8IGlu
c3RydWN0aW9uQ291bnQ7KSB7Ci0gICAgICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0
ZXItPmdldE9wY29kZUlEKGluc3RydWN0aW9uc0JlZ2luW2J5dGVjb2RlT2Zmc2V0XS51Lm9wY29k
ZSk7CisgICAgICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0ZXItPmdldE9wY29kZUlE
KGluc3RydWN0aW9uc0JlZ2luW2J5dGVjb2RlT2Zmc2V0XSk7CiAgICAgICAgIGdldEp1bXBUYXJn
ZXRzRm9yQnl0ZWNvZGVPZmZzZXQoY29kZUJsb2NrLCBpbnRlcnByZXRlciwgaW5zdHJ1Y3Rpb25z
QmVnaW4sIGJ5dGVjb2RlT2Zmc2V0LCBvdXQpOwogICAgICAgICBieXRlY29kZU9mZnNldCArPSBv
cGNvZGVMZW5ndGhzW29wY29kZUlEXTsKICAgICB9CkBAIC0xMjMsMTEgKzEzMiwzNCBAQCB2b2lk
IGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFZlY3Rvcjx1
bnNpZ25lZCwgMzI+JiBvdXQpCiAgICAgb3V0LnNocmlua1RvRml0KCk7CiB9CiAKLXZvaWQgZmlu
ZEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIHVuc2ln
bmVkIGJ5dGVjb2RlT2Zmc2V0LCBWZWN0b3I8dW5zaWduZWQsIDE+JiBvdXQpCit2b2lkIGNvbXB1
dGVQcmVjaXNlSnVtcFRhcmdldHMoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFZlY3Rvcjx1bnNpZ25l
ZCwgMzI+JiBvdXQpCiB7Ci0gICAgSW50ZXJwcmV0ZXIqIGludGVycHJldGVyID0gY29kZUJsb2Nr
LT52bSgpLT5pbnRlcnByZXRlcjsKLSAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4g
PSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCk7Ci0gICAgZ2V0SnVtcFRhcmdldHNG
b3JCeXRlY29kZU9mZnNldChjb2RlQmxvY2ssIGludGVycHJldGVyLCBpbnN0cnVjdGlvbnNCZWdp
biwgYnl0ZWNvZGVPZmZzZXQsIG91dCk7CisgICAgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0c0lu
dGVybmFsPENvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHNNb2RlOjpGb2xsb3dDb2RlQmxvY2tDbGFp
bT4oY29kZUJsb2NrLCBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCksIGNvZGVCbG9j
ay0+aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpLCBvdXQpOworfQorCit2b2lkIGNvbXB1dGVQcmVjaXNl
SnVtcFRhcmdldHMoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEluc3RydWN0aW9uKiBpbnN0cnVjdGlv
bnNCZWdpbiwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCwgVmVjdG9yPHVuc2lnbmVkLCAzMj4m
IG91dCkKK3sKKyAgICBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzSW50ZXJuYWw8Q29tcHV0ZVBy
ZWNpc2VKdW1wVGFyZ2V0c01vZGU6OkZvbGxvd0NvZGVCbG9ja0NsYWltPihjb2RlQmxvY2ssIGlu
c3RydWN0aW9uc0JlZ2luLCBpbnN0cnVjdGlvbkNvdW50LCBvdXQpOworfQorCit2b2lkIGNvbXB1
dGVQcmVjaXNlSnVtcFRhcmdldHMoVW5saW5rZWRDb2RlQmxvY2sqIGNvZGVCbG9jaywgVW5saW5r
ZWRJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGluc3RydWN0aW9uQ291
bnQsIFZlY3Rvcjx1bnNpZ25lZCwgMzI+JiBvdXQpCit7CisgICAgY29tcHV0ZVByZWNpc2VKdW1w
VGFyZ2V0c0ludGVybmFsPENvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHNNb2RlOjpGb2xsb3dDb2Rl
QmxvY2tDbGFpbT4oY29kZUJsb2NrLCBpbnN0cnVjdGlvbnNCZWdpbiwgaW5zdHJ1Y3Rpb25Db3Vu
dCwgb3V0KTsKK30KKwordm9pZCByZWNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMoVW5saW5rZWRD
b2RlQmxvY2sqIGNvZGVCbG9jaywgVW5saW5rZWRJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVn
aW4sIHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQsIFZlY3Rvcjx1bnNpZ25lZD4mIG91dCkKK3sK
KyAgICBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzSW50ZXJuYWw8Q29tcHV0ZVByZWNpc2VKdW1w
VGFyZ2V0c01vZGU6OkZvcmNlQ29tcHV0ZT4oY29kZUJsb2NrLCBpbnN0cnVjdGlvbnNCZWdpbiwg
aW5zdHJ1Y3Rpb25Db3VudCwgb3V0KTsKK30KKwordm9pZCBmaW5kSnVtcFRhcmdldHNGb3JCeXRl
Y29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9u
c0JlZ2luLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgVmVjdG9yPHVuc2lnbmVkLCAxPiYgb3V0
KQoreworICAgIGdldEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoY29kZUJsb2NrLCBjb2Rl
QmxvY2stPnZtKCktPmludGVycHJldGVyLCBpbnN0cnVjdGlvbnNCZWdpbiwgYnl0ZWNvZGVPZmZz
ZXQsIG91dCk7Cit9CisKK3ZvaWQgZmluZEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoVW5s
aW5rZWRDb2RlQmxvY2sqIGNvZGVCbG9jaywgVW5saW5rZWRJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rp
b25zQmVnaW4sIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBWZWN0b3I8dW5zaWduZWQsIDE+JiBv
dXQpCit7CisgICAgZ2V0SnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChjb2RlQmxvY2ssIGNv
ZGVCbG9jay0+dm0oKS0+aW50ZXJwcmV0ZXIsIGluc3RydWN0aW9uc0JlZ2luLCBieXRlY29kZU9m
ZnNldCwgb3V0KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmgKaW5kZXggODUyNDEzZDc3
Yjc5ODk4NGIyN2NlZjBlZDYyYmM5NGM2ODllMjEyYy4uZGI5YmQzODNiOGFjNDU1N2QzMjY3MTdi
NzJkNGIwZjUwYjFkMTgzOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9QcmVjaXNlSnVtcFRhcmdldHMuaApAQCAtMzAsMTAgKzMwLDE4IEBACiAKIG5hbWVzcGFj
ZSBKU0MgewogCitjbGFzcyBVbmxpbmtlZENvZGVCbG9jazsKK3N0cnVjdCBVbmxpbmtlZEluc3Ry
dWN0aW9uOworCiAvLyBSZXR1cm4gYSBzb3J0ZWQgbGlzdCBvZiBieXRlY29kZSBpbmRleCB0aGF0
IGFyZSB0aGUgZGVzdGluYXRpb24gb2YgYSBqdW1wLgogdm9pZCBjb21wdXRlUHJlY2lzZUp1bXBU
YXJnZXRzKENvZGVCbG9jayosIFZlY3Rvcjx1bnNpZ25lZCwgMzI+JiBvdXQpOwordm9pZCBjb21w
dXRlUHJlY2lzZUp1bXBUYXJnZXRzKENvZGVCbG9jayosIEluc3RydWN0aW9uKiBpbnN0cnVjdGlv
bnNCZWdpbiwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCwgVmVjdG9yPHVuc2lnbmVkLCAzMj4m
IG91dCk7Cit2b2lkIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMoVW5saW5rZWRDb2RlQmxvY2sq
LCBVbmxpbmtlZEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgaW5zdHJ1
Y3Rpb25Db3VudCwgVmVjdG9yPHVuc2lnbmVkLCAzMj4mIG91dCk7CisKK3ZvaWQgcmVjb21wdXRl
UHJlY2lzZUp1bXBUYXJnZXRzKFVubGlua2VkQ29kZUJsb2NrKiwgVW5saW5rZWRJbnN0cnVjdGlv
biogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQsIFZlY3Rvcjx1
bnNpZ25lZD4mIG91dCk7CiAKLXZvaWQgZmluZEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQo
Q29kZUJsb2NrKiwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIFZlY3Rvcjx1bnNpZ25lZCwgMT4m
IG91dCk7Cit2b2lkIGZpbmRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayos
IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQs
IFZlY3Rvcjx1bnNpZ25lZCwgMT4mIG91dCk7Cit2b2lkIGZpbmRKdW1wVGFyZ2V0c0ZvckJ5dGVj
b2RlT2Zmc2V0KFVubGlua2VkQ29kZUJsb2NrKiwgVW5saW5rZWRJbnN0cnVjdGlvbiogaW5zdHJ1
Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBWZWN0b3I8dW5zaWduZWQsIDE+
JiBvdXQpOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKaW5kZXggMjk5YWM2ODBkOWEx
ZDFlNWE5MGQ5ZmFlMWEyMmY4NDRlMjkyZTNlMi4uZjdiNWFlMGI2YjQ3MjE3MGQyODk0NjQxNjc2
NjE4YzU3YzQ5ZWMyZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1VubGlua2VkQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiVW5s
aW5rZWRDb2RlQmxvY2suaCIKIAogI2luY2x1ZGUgIkJ5dGVjb2RlR2VuZXJhdG9yLmgiCisjaW5j
bHVkZSAiQnl0ZWNvZGVNb2RpZmljYXRpb25TZXQuaCIKICNpbmNsdWRlICJDbGFzc0luZm8uaCIK
ICNpbmNsdWRlICJDb2RlQ2FjaGUuaCIKICNpbmNsdWRlICJFeGVjdXRhYmxlLmgiCkBAIC0zNiw2
ICszNyw3IEBACiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgi
CiAjaW5jbHVkZSAiUGFyc2VyLmgiCisjaW5jbHVkZSAiUHJlY2lzZUp1bXBUYXJnZXRzLmgiCiAj
aW5jbHVkZSAiU291cmNlUHJvdmlkZXIuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIKICNpbmNs
dWRlICJTeW1ib2xUYWJsZS5oIgpAQCAtMzY2LDUgKzM2OCwxMTEgQEAgY29uc3QgVW5saW5rZWRJ
bnN0cnVjdGlvblN0cmVhbSYgVW5saW5rZWRDb2RlQmxvY2s6Omluc3RydWN0aW9ucygpIGNvbnN0
CiAgICAgcmV0dXJuICptX3VubGlua2VkSW5zdHJ1Y3Rpb25zOwogfQogCitVbmxpbmtlZEhhbmRs
ZXJJbmZvKiBVbmxpbmtlZENvZGVCbG9jazo6aGFuZGxlckZvckJ5dGVjb2RlT2Zmc2V0KHVuc2ln
bmVkIGJ5dGVjb2RlT2Zmc2V0LCBSZXF1aXJlZEhhbmRsZXIgcmVxdWlyZWRIYW5kbGVyKQorewor
ICAgIHJldHVybiBoYW5kbGVyRm9ySW5kZXgoYnl0ZWNvZGVPZmZzZXQsIHJlcXVpcmVkSGFuZGxl
cik7Cit9CisKK1VubGlua2VkSGFuZGxlckluZm8qIFVubGlua2VkQ29kZUJsb2NrOjpoYW5kbGVy
Rm9ySW5kZXgodW5zaWduZWQgaW5kZXgsIFJlcXVpcmVkSGFuZGxlciByZXF1aXJlZEhhbmRsZXIp
Cit7CisgICAgaWYgKCFtX3JhcmVEYXRhKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBy
ZXR1cm4gVW5saW5rZWRIYW5kbGVySW5mbzo6aGFuZGxlckZvckluZGV4KG1fcmFyZURhdGEtPm1f
ZXhjZXB0aW9uSGFuZGxlcnMsIGluZGV4LCByZXF1aXJlZEhhbmRsZXIpOworfQorCit2b2lkIFVu
bGlua2VkQ29kZUJsb2NrOjphcHBseU1vZGlmaWNhdGlvbihCeXRlY29kZU1vZGlmaWNhdGlvblNl
dCYgaW5zZXJ0aW9uU2V0KQoreworICAgIC8vIEJlZm9yZSBhcHBseWluZyB0aGUgY2hhbmdlcywg
d2UgYWRqdXN0IHRoZSBqdW1wcyBiYXNlZCBvbiB0aGUgb3JpZ2luYWwgYnl0ZWNvZGUgb2Zmc2V0
LCB0aGUgb2Zmc2V0IHRvIHRoZSBqdW1wIHRhcmdldCwgYW5kCisgICAgLy8gdGhlIGluc2VydGlv
biBpbmZvcm1hdGlvbi4KKworICAgIEJ5dGVjb2RlR3JhcGg8VW5saW5rZWRDb2RlQmxvY2s+JiBn
cmFwaCA9IGluc2VydGlvblNldC5ncmFwaCgpOworICAgIFVubGlua2VkSW5zdHJ1Y3Rpb24qIGlu
c3RydWN0aW9uc0JlZ2luID0gZ3JhcGguaW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsKKyAgICBmb3Ig
KGludCBieXRlY29kZU9mZnNldCA9IDAsIGluc3RydWN0aW9uQ291bnQgPSBncmFwaC5pbnN0cnVj
dGlvbnMoKS5zaXplKCk7IGJ5dGVjb2RlT2Zmc2V0IDwgaW5zdHJ1Y3Rpb25Db3VudDspIHsKKyAg
ICAgICAgVW5saW5rZWRJbnN0cnVjdGlvbiogY3VycmVudCA9IGluc3RydWN0aW9uc0JlZ2luICsg
Ynl0ZWNvZGVPZmZzZXQ7CisgICAgICAgIE9wY29kZUlEIG9wY29kZUlEID0gY3VycmVudFswXS51
Lm9wY29kZTsKKworICAgICAgICBzd2l0Y2ggKG9wY29kZUlEKSB7CisgICAgICAgIGNhc2Ugb3Bf
am1wOgorICAgICAgICAgICAgY3VycmVudFsxXS51Lm9wZXJhbmQgPSBpbnNlcnRpb25TZXQuYWRq
dXN0T2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0LCBieXRlY29kZU9mZnNldCArIGN1cnJlbnRbMV0udS5v
cGVyYW5kKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2Ugb3BfanRydWU6Cisg
ICAgICAgIGNhc2Ugb3BfamZhbHNlOgorICAgICAgICBjYXNlIG9wX2plcV9udWxsOgorICAgICAg
ICBjYXNlIG9wX2puZXFfbnVsbDoKKyAgICAgICAgICAgIGN1cnJlbnRbMl0udS5vcGVyYW5kID0g
aW5zZXJ0aW9uU2V0LmFkanVzdE9mZnNldChieXRlY29kZU9mZnNldCwgYnl0ZWNvZGVPZmZzZXQg
KyBjdXJyZW50WzJdLnUub3BlcmFuZCk7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBj
YXNlIG9wX2puZXFfcHRyOgorICAgICAgICBjYXNlIG9wX2psZXNzOgorICAgICAgICBjYXNlIG9w
X2psZXNzZXE6CisgICAgICAgIGNhc2Ugb3BfamdyZWF0ZXI6CisgICAgICAgIGNhc2Ugb3Bfamdy
ZWF0ZXJlcToKKyAgICAgICAgY2FzZSBvcF9qbmxlc3M6CisgICAgICAgIGNhc2Ugb3Bfam5sZXNz
ZXE6CisgICAgICAgIGNhc2Ugb3Bfam5ncmVhdGVyOgorICAgICAgICBjYXNlIG9wX2puZ3JlYXRl
cmVxOgorICAgICAgICAgICAgY3VycmVudFszXS51Lm9wZXJhbmQgPSBpbnNlcnRpb25TZXQuYWRq
dXN0T2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0LCBieXRlY29kZU9mZnNldCArIGN1cnJlbnRbM10udS5v
cGVyYW5kKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2Ugb3Bfc3dpdGNoX2lt
bToKKyAgICAgICAgY2FzZSBvcF9zd2l0Y2hfY2hhcjogeworICAgICAgICAgICAgYXV0byYgdGFi
bGUgPSBzd2l0Y2hKdW1wVGFibGUoY3VycmVudFsxXS51Lm9wZXJhbmQpOworICAgICAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gdGFibGUuYnJhbmNoT2Zmc2V0cy5zaXplKCk7IGktLTspCisgICAg
ICAgICAgICAgICAgdGFibGUuYnJhbmNoT2Zmc2V0c1tpXSA9IGluc2VydGlvblNldC5hZGp1c3RP
ZmZzZXQoYnl0ZWNvZGVPZmZzZXQsIGJ5dGVjb2RlT2Zmc2V0ICsgdGFibGUuYnJhbmNoT2Zmc2V0
c1tpXSk7CisgICAgICAgICAgICBjdXJyZW50WzJdLnUub3BlcmFuZCA9IGluc2VydGlvblNldC5h
ZGp1c3RPZmZzZXQoYnl0ZWNvZGVPZmZzZXQsIGJ5dGVjb2RlT2Zmc2V0ICsgY3VycmVudFsyXS51
Lm9wZXJhbmQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBjYXNl
IG9wX3N3aXRjaF9zdHJpbmc6IHsKKyAgICAgICAgICAgIGF1dG8mIHRhYmxlID0gc3RyaW5nU3dp
dGNoSnVtcFRhYmxlKGN1cnJlbnRbMV0udS5vcGVyYW5kKTsKKyAgICAgICAgICAgIGF1dG8gaXRl
ciA9IHRhYmxlLm9mZnNldFRhYmxlLmJlZ2luKCk7CisgICAgICAgICAgICBhdXRvIGVuZCA9IHRh
YmxlLm9mZnNldFRhYmxlLmVuZCgpOworICAgICAgICAgICAgZm9yICg7IGl0ZXIgIT0gZW5kOyAr
K2l0ZXIpCisgICAgICAgICAgICAgICAgaXRlci0+dmFsdWUuYnJhbmNoT2Zmc2V0ID0gaW5zZXJ0
aW9uU2V0LmFkanVzdE9mZnNldChieXRlY29kZU9mZnNldCwgYnl0ZWNvZGVPZmZzZXQgKyBpdGVy
LT52YWx1ZS5icmFuY2hPZmZzZXQpOworICAgICAgICAgICAgY3VycmVudFsyXS51Lm9wZXJhbmQg
PSBpbnNlcnRpb25TZXQuYWRqdXN0T2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0LCBieXRlY29kZU9mZnNl
dCArIGN1cnJlbnRbMl0udS5vcGVyYW5kKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9
CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAg
ICAgICAgYnl0ZWNvZGVPZmZzZXQgKz0gb3Bjb2RlTGVuZ3RoKG9wY29kZUlEKTsKKyAgICB9CisK
KyAgICAvLyBUaGVuLCBleGNlcHRpb24gaGFuZGxlcnMgc2hvdWxkIGJlIGFkanVzdGVkLgorICAg
IGlmIChtX3JhcmVEYXRhKSB7CisgICAgICAgIGZvciAoVW5saW5rZWRIYW5kbGVySW5mbyYgaGFu
ZGxlciA6IG1fcmFyZURhdGEtPm1fZXhjZXB0aW9uSGFuZGxlcnMpIHsKKyAgICAgICAgICAgIGhh
bmRsZXIudGFyZ2V0ID0gaW5zZXJ0aW9uU2V0LmFkanVzdE9mZnNldCgwLCBoYW5kbGVyLnRhcmdl
dCk7CisgICAgICAgICAgICBoYW5kbGVyLnN0YXJ0ID0gaW5zZXJ0aW9uU2V0LmFkanVzdE9mZnNl
dCgwLCBoYW5kbGVyLnN0YXJ0KTsKKyAgICAgICAgICAgIGhhbmRsZXIuZW5kID0gaW5zZXJ0aW9u
U2V0LmFkanVzdE9mZnNldCgwLCBoYW5kbGVyLmVuZCk7CisgICAgICAgIH0KKworICAgICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IG1fcmFyZURhdGEtPm1fb3BQcm9maWxlQ29udHJvbEZsb3dC
eXRlY29kZU9mZnNldHMuc2l6ZSgpOyArK2kpCisgICAgICAgICAgICBtX3JhcmVEYXRhLT5tX29w
UHJvZmlsZUNvbnRyb2xGbG93Qnl0ZWNvZGVPZmZzZXRzW2ldID0gaW5zZXJ0aW9uU2V0LmFkanVz
dE9mZnNldCgwLCBtX3JhcmVEYXRhLT5tX29wUHJvZmlsZUNvbnRyb2xGbG93Qnl0ZWNvZGVPZmZz
ZXRzW2ldKTsKKworICAgICAgICBpZiAoIW1fcmFyZURhdGEtPm1fdHlwZVByb2ZpbGVySW5mb01h
cC5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIEhhc2hNYXA8dW5zaWduZWQsIFJhcmVEYXRhOjpU
eXBlUHJvZmlsZXJFeHByZXNzaW9uUmFuZ2U+IGFkanVzdGVkVHlwZVByb2ZpbGVySW5mb01hcDsK
KyAgICAgICAgICAgIGZvciAoYXV0byYgZW50cnkgOiBtX3JhcmVEYXRhLT5tX3R5cGVQcm9maWxl
ckluZm9NYXApCisgICAgICAgICAgICAgICAgYWRqdXN0ZWRUeXBlUHJvZmlsZXJJbmZvTWFwLnNl
dChpbnNlcnRpb25TZXQuYWRqdXN0T2Zmc2V0KDAsIGVudHJ5LmtleSksIGVudHJ5LnZhbHVlKTsK
KyAgICAgICAgICAgIG1fcmFyZURhdGEtPm1fdHlwZVByb2ZpbGVySW5mb01hcC5zd2FwKGFkanVz
dGVkVHlwZVByb2ZpbGVySW5mb01hcCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IG1fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnMuc2l6ZSgpOyArK2kp
CisgICAgICAgIG1fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnNbaV0gPSBpbnNlcnRpb25TZXQu
YWRqdXN0T2Zmc2V0KDAsIG1fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnNbaV0pOworCisgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2V4cHJlc3Npb25JbmZvLnNpemUoKTsgKytpKQorICAg
ICAgICBtX2V4cHJlc3Npb25JbmZvW2ldLmluc3RydWN0aW9uT2Zmc2V0ID0gaW5zZXJ0aW9uU2V0
LmFkanVzdE9mZnNldCgwLCBtX2V4cHJlc3Npb25JbmZvW2ldLmluc3RydWN0aW9uT2Zmc2V0KTsK
KworICAgIC8vIFRoZW4sIG1vZGlmeSB0aGUgdW5saW5rZWQgaW5zdHJ1Y3Rpb25zLgorICAgIGlu
c2VydGlvblNldC5hcHBseU1vZGlmaWNhdGlvbigpOworCisgICAgLy8gQW5kIHJlY29tcHV0ZSB0
aGUganVtcCB0YXJnZXQgYmFzZWQgb24gdGhlIG1vZGlmaWVkIHVubGlua2VkIGluc3RydWN0aW9u
cy4KKyAgICBtX2p1bXBUYXJnZXRzLmNsZWFyKCk7CisgICAgcmVjb21wdXRlUHJlY2lzZUp1bXBU
YXJnZXRzKHRoaXMsIGdyYXBoLmluc3RydWN0aW9ucygpLmJlZ2luKCksIGdyYXBoLmluc3RydWN0
aW9ucygpLnNpemUoKSwgbV9qdW1wVGFyZ2V0cyk7Cit9CisKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAppbmRleCA5MWZkY2E0
OGMxZTM5ZThiZWZiMGM1ZmQ1NWZkOWJkOTFjMWYzNzA3Li42MmYxNGIwODk0MDgyODA2N2YzODhh
ZjMyNzhlODFkNDVhM2VmOGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaApAQCAtNDgsNiArNDgsNyBAQAogCiBuYW1lc3BhY2Ug
SlNDIHsKIAorY2xhc3MgQnl0ZWNvZGVNb2RpZmljYXRpb25TZXQ7CiBjbGFzcyBEZWJ1Z2dlcjsK
IGNsYXNzIEZ1bmN0aW9uTWV0YWRhdGFOb2RlOwogY2xhc3MgRnVuY3Rpb25FeGVjdXRhYmxlOwpA
QCAtNjksNyArNzAsMTEgQEAgdHlwZWRlZiB1bnNpZ25lZCBVbmxpbmtlZE9iamVjdEFsbG9jYXRp
b25Qcm9maWxlOwogdHlwZWRlZiB1bnNpZ25lZCBVbmxpbmtlZExMSW50Q2FsbExpbmtJbmZvOwog
CiBzdHJ1Y3QgVW5saW5rZWRTdHJpbmdKdW1wVGFibGUgewotICAgIHR5cGVkZWYgSGFzaE1hcDxS
ZWZQdHI8U3RyaW5nSW1wbD4sIGludDMyX3Q+IFN0cmluZ09mZnNldFRhYmxlOworICAgIHN0cnVj
dCBPZmZzZXRMb2NhdGlvbiB7CisgICAgICAgIGludDMyX3QgYnJhbmNoT2Zmc2V0OworICAgIH07
CisKKyAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFN0cmluZ0ltcGw+LCBPZmZzZXRMb2NhdGlv
bj4gU3RyaW5nT2Zmc2V0VGFibGU7CiAgICAgU3RyaW5nT2Zmc2V0VGFibGUgb2Zmc2V0VGFibGU7
CiAKICAgICBpbmxpbmUgaW50MzJfdCBvZmZzZXRGb3JWYWx1ZShTdHJpbmdJbXBsKiB2YWx1ZSwg
aW50MzJfdCBkZWZhdWx0T2Zmc2V0KQpAQCAtNzgsNyArODMsNyBAQCBzdHJ1Y3QgVW5saW5rZWRT
dHJpbmdKdW1wVGFibGUgewogICAgICAgICBTdHJpbmdPZmZzZXRUYWJsZTo6Y29uc3RfaXRlcmF0
b3IgbG9jID0gb2Zmc2V0VGFibGUuZmluZCh2YWx1ZSk7CiAgICAgICAgIGlmIChsb2MgPT0gZW5k
KQogICAgICAgICAgICAgcmV0dXJuIGRlZmF1bHRPZmZzZXQ7Ci0gICAgICAgIHJldHVybiBsb2Mt
PnZhbHVlOworICAgICAgICByZXR1cm4gbG9jLT52YWx1ZS5icmFuY2hPZmZzZXQ7CiAgICAgfQog
CiB9OwpAQCAtMTA2LDYgKzExMSw4IEBAIHN0cnVjdCBVbmxpbmtlZEluc3RydWN0aW9uIHsKICAg
ICB9IHU7CiB9OwogCitjbGFzcyBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbjsKKwogY2xhc3Mg
VW5saW5rZWRDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKIHB1YmxpYzoKICAgICB0eXBlZGVm
IEpTQ2VsbCBCYXNlOwpAQCAtMTE1LDYgKzEyMiw5IEBAIGNsYXNzIFVubGlua2VkQ29kZUJsb2Nr
IDogcHVibGljIEpTQ2VsbCB7CiAKICAgICBlbnVtIHsgQ2FsbEZ1bmN0aW9uLCBBcHBseUZ1bmN0
aW9uIH07CiAKKyAgICB0eXBlZGVmIFVubGlua2VkSW5zdHJ1Y3Rpb24gSW5zdHJ1Y3Rpb247Cisg
ICAgdHlwZWRlZiBWZWN0b3I8VW5saW5rZWRJbnN0cnVjdGlvbiwgMCwgVW5zYWZlVmVjdG9yT3Zl
cmZsb3c+IFVucGFja2VkSW5zdHJ1Y3Rpb25zOworCiAgICAgYm9vbCBpc0NvbnN0cnVjdG9yKCkg
Y29uc3QgeyByZXR1cm4gbV9pc0NvbnN0cnVjdG9yOyB9CiAgICAgYm9vbCBpc1N0cmljdE1vZGUo
KSBjb25zdCB7IHJldHVybiBtX2lzU3RyaWN0TW9kZTsgfQogICAgIGJvb2wgdXNlc0V2YWwoKSBj
b25zdCB7IHJldHVybiBtX3VzZXNFdmFsOyB9CkBAIC0yMDQsNiArMjE0LDkgQEAgY2xhc3MgVW5s
aW5rZWRDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICB1bnNpZ25lZCBqdW1wVGFyZ2V0
KGludCBpbmRleCkgY29uc3QgeyByZXR1cm4gbV9qdW1wVGFyZ2V0c1tpbmRleF07IH0KICAgICB1
bnNpZ25lZCBsYXN0SnVtcFRhcmdldCgpIGNvbnN0IHsgcmV0dXJuIG1fanVtcFRhcmdldHMubGFz
dCgpOyB9CiAKKyAgICBVbmxpbmtlZEhhbmRsZXJJbmZvKiBoYW5kbGVyRm9yQnl0ZWNvZGVPZmZz
ZXQodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIFJlcXVpcmVkSGFuZGxlciA9IFJlcXVpcmVkSGFu
ZGxlcjo6QW55SGFuZGxlcik7CisgICAgVW5saW5rZWRIYW5kbGVySW5mbyogaGFuZGxlckZvcklu
ZGV4KHVuc2lnbmVkLCBSZXF1aXJlZEhhbmRsZXIgPSBSZXF1aXJlZEhhbmRsZXI6OkFueUhhbmRs
ZXIpOworCiAgICAgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNC
dWlsdGluRnVuY3Rpb247IH0KIAogICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQo
KSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxDb25zdHJ1Y3RvcktpbmQ+KG1fY29uc3RydWN0
b3JLaW5kKTsgfQpAQCAtMzg0LDYgKzM5Nyw4IEBAIGNsYXNzIFVubGlua2VkQ29kZUJsb2NrIDog
cHVibGljIEpTQ2VsbCB7CiAgICAgfQogCiBwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBCeXRl
Y29kZU1vZGlmaWNhdGlvblNldDsKKyAgICB2b2lkIGFwcGx5TW9kaWZpY2F0aW9uKEJ5dGVjb2Rl
TW9kaWZpY2F0aW9uU2V0Jik7CiAKICAgICB2b2lkIGNyZWF0ZVJhcmVEYXRhSWZOZWNlc3Nhcnko
KQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WaXJ0
dWFsUmVnaXN0ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WaXJ0dWFsUmVn
aXN0ZXIuaAppbmRleCBkM2RmNDA5NTdiNTE3NTY4ZTNhZWZiZTNhMWE2MDlmZDg3OGJhYWMzLi5k
YWY1MDlmNmM3ZDExNWU0NWJjYjEwN2M2N2QzZDM4ZDgwNGYyODk0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmlydHVhbFJlZ2lzdGVyLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZpcnR1YWxSZWdpc3Rlci5oCkBAIC0yNiw4ICsyNiw4
IEBACiAjaWZuZGVmIFZpcnR1YWxSZWdpc3Rlcl9oCiAjZGVmaW5lIFZpcnR1YWxSZWdpc3Rlcl9o
CiAKKyNpbmNsdWRlICJCeXRlY29kZUNvbnZlbnRpb25zLmgiCiAjaW5jbHVkZSAiQ2FsbEZyYW1l
LmgiCi0KICNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBA
IC0xMDMsNyArMTAzLDcgQEAgY2xhc3MgVmlydHVhbFJlZ2lzdGVyIHsKIAogcHJpdmF0ZToKICAg
ICBzdGF0aWMgY29uc3QgaW50IHNfaW52YWxpZFZpcnR1YWxSZWdpc3RlciA9IDB4M2ZmZmZmZmY7
Ci0gICAgc3RhdGljIGNvbnN0IGludCBzX2ZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4ID0gMHg0
MDAwMDAwMDsKKyAgICBzdGF0aWMgY29uc3QgaW50IHNfZmlyc3RDb25zdGFudFJlZ2lzdGVySW5k
ZXggPSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleDsKIAogICAgIHN0YXRpYyBpbnQgbG9jYWxU
b09wZXJhbmQoaW50IGxvY2FsKSB7IHJldHVybiAtMSAtIGxvY2FsOyB9CiAgICAgc3RhdGljIGlu
dCBvcGVyYW5kVG9Mb2NhbChpbnQgb3BlcmFuZCkgeyByZXR1cm4gLTEgLSBvcGVyYW5kOyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVH
ZW5lcmF0b3IuY3BwCmluZGV4IDYxN2Y0NDI2YzdiNGQxNTQ1ZjdkMjkyN2M4NDZhOTAzZTE1MWJm
M2YuLjdiMWY4ZDgxMGUyYmIwNmExNTY2MWU3ZDkxOTIxYTRmZGY5NmNmYTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAKICNpbmNsdWRlICJBcml0aFByb2ZpbGUuaCIKICNp
bmNsdWRlICJCdWlsdGluRXhlY3V0YWJsZXMuaCIKKyNpbmNsdWRlICJCeXRlY29kZUdlbmVyYXRv
cmlmaWNhdGlvbi5oIgogI2luY2x1ZGUgIkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5oIgogI2lu
Y2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgpAQCAtMTU1LDYg
KzE1NiwxMCBAQCBQYXJzZXJFcnJvciBCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUoKQogICAg
ICAgICBtX2NvZGVCbG9jay0+YWRkRXhjZXB0aW9uSGFuZGxlcihpbmZvKTsKICAgICB9CiAgICAg
CisKKyAgICBpZiAobV9jb2RlQmxvY2stPnBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6
R2VuZXJhdG9yQm9keU1vZGUpCisgICAgICAgIHBlcmZvcm1HZW5lcmF0b3JpZmljYXRpb24obV9j
b2RlQmxvY2suZ2V0KCksIG1faW5zdHJ1Y3Rpb25zLCBtX2dlbmVyYXRvckZyYW1lU3ltYm9sVGFi
bGUuZ2V0KCksIG1fZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZUluZGV4KTsKKwogICAgIG1fY29k
ZUJsb2NrLT5zZXRJbnN0cnVjdGlvbnMoc3RkOjptYWtlX3VuaXF1ZTxVbmxpbmtlZEluc3RydWN0
aW9uU3RyZWFtPihtX2luc3RydWN0aW9ucykpOwogCiAgICAgbV9jb2RlQmxvY2stPnNocmlua1Rv
Rml0KCk7CkBAIC0yNjIsMTAgKzI2NywxNCBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVH
ZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAg
IGJvb2wgc2hvdWxkQ2FwdHVyZUFsbE9mVGhlVGhpbmdzID0gbV9zaG91bGRFbWl0RGVidWdIb29r
cyB8fCBjb2RlQmxvY2stPnVzZXNFdmFsKCk7CiAgICAgYm9vbCBuZWVkc0FyZ3VtZW50cyA9IChm
dW5jdGlvbk5vZGUtPnVzZXNBcmd1bWVudHMoKSB8fCBjb2RlQmxvY2stPnVzZXNFdmFsKCkgfHwg
KGZ1bmN0aW9uTm9kZS0+dXNlc0Fycm93RnVuY3Rpb24oKSAmJiAhY29kZUJsb2NrLT5pc0Fycm93
RnVuY3Rpb24oKSAmJiBpc0FyZ3VtZW50c1VzZWRJbklubmVyQXJyb3dGdW5jdGlvbigpKSk7CiAK
LSAgICAvLyBHZW5lcmF0b3IgbmV2ZXIgcHJvdmlkZXMgImFyZ3VtZW50cyIuICJhcmd1bWVudHMi
IHJlZmVyZW5jZSB3aWxsIGJlIHJlc29sdmVkIGluIGFuIHVwcGVyIGdlbmVyYXRvciBmdW5jdGlv
biBzY29wZS4KLSAgICBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9y
Qm9keU1vZGUpCisgICAgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRv
ckJvZHlNb2RlKSB7CisgICAgICAgIC8vIEdlbmVyYXRvciBuZXZlciBwcm92aWRlcyAiYXJndW1l
bnRzIi4gImFyZ3VtZW50cyIgcmVmZXJlbmNlIHdpbGwgYmUgcmVzb2x2ZWQgaW4gYW4gdXBwZXIg
Z2VuZXJhdG9yIGZ1bmN0aW9uIHNjb3BlLgogICAgICAgICBuZWVkc0FyZ3VtZW50cyA9IGZhbHNl
OwogCisgICAgICAgIC8vIEdlbmVyYXRvciB1c2VzIHRoZSB2YXIgc2NvcGUgdG8gc2F2ZSBhbmQg
cmVzdW1lIGl0cyB2YXJpYWJsZXMuIFNvIHRoZSBsZXhpY2FsIHNjb3BlIGlzIGFsd2F5cyBpbnN0
YW50aWF0ZWQuCisgICAgICAgIHNob3VsZENhcHR1cmVTb21lT2ZUaGVUaGluZ3MgPSB0cnVlOwor
ICAgIH0KKwogICAgIGlmIChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JX
cmFwcGVyRnVuY3Rpb25Nb2RlICYmIG5lZWRzQXJndW1lbnRzKSB7CiAgICAgICAgIC8vIEdlbmVy
YXRvciBkb2VzIG5vdCBwcm92aWRlICJhcmd1bWVudHMiLiBJbnN0ZWFkLCB3cmFwcGluZyBHZW5l
cmF0b3JGdW5jdGlvbiBwcm92aWRlcyAiYXJndW1lbnRzIi4KICAgICAgICAgLy8gVGhpcyBpcyBi
ZWNhdXNlIGFyZ3VtZW50cyBvZiBhIGdlbmVyYXRvciBzaG91bGQgYmUgZXZhbHVhdGVkIGJlZm9y
ZSBzdGFydGluZyBpdC4KQEAgLTI3NCw3ICsyODMsNyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0
ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5r
ZQogICAgICAgICAvLyAgICBmdW5jdGlvbiAqZ2VuKGEsIGIgPSBoZWxsbygpKQogICAgICAgICAv
LyAgICB7CiAgICAgICAgIC8vICAgICAgICByZXR1cm4gewotICAgICAgICAvLyAgICAgICAgICAg
IEBnZW5lcmF0b3JOZXh0OiBmdW5jdGlvbiAoQGdlbmVyYXRvciwgQGdlbmVyYXRvclN0YXRlLCBA
Z2VuZXJhdG9yVmFsdWUsIEBnZW5lcmF0b3JSZXN1bWVNb2RlKQorICAgICAgICAvLyAgICAgICAg
ICAgIEBnZW5lcmF0b3JOZXh0OiBmdW5jdGlvbiAoQGdlbmVyYXRvciwgQGdlbmVyYXRvclN0YXRl
LCBAZ2VuZXJhdG9yVmFsdWUsIEBnZW5lcmF0b3JSZXN1bWVNb2RlLCBAZ2VuZXJhdG9yRnJhbWUp
CiAgICAgICAgIC8vICAgICAgICAgICAgewogICAgICAgICAvLyAgICAgICAgICAgICAgICBhcmd1
bWVudHM7ICAvLyBUaGlzIGBhcmd1bWVudHNgIHNob3VsZCByZWZlcmVuY2UgdG8gdGhlIGdlbidz
IGFyZ3VtZW50cy4KICAgICAgICAgLy8gICAgICAgICAgICAgICAgLi4uCkBAIC0zMDMsMTYgKzMx
MiwxNCBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5j
dGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAgICAgICByZXR1cm4gY2FwdHVyZXMo
dWlkKSA/IFZhcktpbmQ6OlNjb3BlIDogVmFyS2luZDo6U3RhY2s7CiAgICAgfTsKIAotICAgIGVt
aXRFbnRlcigpOwotCi0gICAgYWxsb2NhdGVBbmRFbWl0U2NvcGUoKTsKLQogICAgIG1fY2FsbGVl
UmVnaXN0ZXIuc2V0SW5kZXgoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlKTsKIAogICAgIGluaXRpYWxp
emVQYXJhbWV0ZXJzKHBhcmFtZXRlcnMpOwogICAgIEFTU0VSVCghKGlzU2ltcGxlUGFyYW1ldGVy
TGlzdCAmJiBtX3Jlc3RQYXJhbWV0ZXIpKTsKIAotICAgIC8vIEJlZm9yZSBlbWl0dGluZyBhIHNj
b3BlIGNyZWF0aW9uLCBlbWl0IGEgZ2VuZXJhdG9yIHByb2xvZ3VlIHRoYXQgY29udGFpbnMganVt
cCBiYXNlZCBvbiBhIGdlbmVyYXRvcidzIHN0YXRlLgorICAgIGVtaXRFbnRlcigpOworCisgICAg
Ly8gQmVmb3JlIGVtaXR0aW5nIGFueSBvZiB0aGUgYWN0dWFsIGNvZGUgZXhjZXB0IGZvciBvcF9l
bnRlciwgZW1pdCBhIGdlbmVyYXRvciBwcm9sb2d1ZSB0aGF0IGNvbnRhaW5zIGp1bXAgYmFzZWQg
b24gYSBnZW5lcmF0b3IncyBzdGF0ZS4KICAgICBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNl
TW9kZTo6R2VuZXJhdG9yQm9keU1vZGUpIHsKICAgICAgICAgbV9nZW5lcmF0b3JSZWdpc3RlciA9
ICZtX3BhcmFtZXRlcnNbMV07CiAKQEAgLTMyNiw2ICszMzMsOCBAQCBCeXRlY29kZUdlbmVyYXRv
cjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwg
VW5saW5rZQogICAgICAgICBlbWl0R2VuZXJhdG9yU3RhdGVMYWJlbCgpOwogICAgIH0KIAorICAg
IGFsbG9jYXRlQW5kRW1pdFNjb3BlKCk7CisKICAgICBpZiAoZnVuY3Rpb25OYW1lSXNJblNjb3Bl
KGZ1bmN0aW9uTm9kZS0+aWRlbnQoKSwgZnVuY3Rpb25Ob2RlLT5mdW5jdGlvbk1vZGUoKSkpIHsK
ICAgICAgICAgQVNTRVJUKHBhcnNlTW9kZSAhPSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckJv
ZHlNb2RlKTsKICAgICAgICAgYm9vbCBpc0R5bmFtaWNTY29wZSA9IGZ1bmN0aW9uTmFtZVNjb3Bl
SXNEeW5hbWljKGNvZGVCbG9jay0+dXNlc0V2YWwoKSwgY29kZUJsb2NrLT5pc1N0cmljdE1vZGUo
KSk7CkBAIC02MzIsNiArNjQxLDE2IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVy
YXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtlCiAgICAgICAg
ICAgICBlbWl0TG9hZE5ld1RhcmdldEZyb21BcnJvd0Z1bmN0aW9uTGV4aWNhbEVudmlyb25tZW50
KCk7CiAgICAgfQogICAgIAorICAgIC8vIFNldCB1cCB0aGUgbGV4aWNhbCBlbnZpcm9ubWVudCBz
Y29wZSBhcyB0aGUgZ2VuZXJhdG9yIGZyYW1lLiBXZSBzdG9yZSB0aGUgc2F2ZWQgYW5kIHJlc3Vt
ZWQgZ2VuZXJhdG9yIHJlZ2lzdGVycyBpbnRvIHRoaXMgc2NvcGUgd2l0aCB0aGUgc3ltYm9sIGtl
eXMuCisgICAgLy8gU2luY2UgdGhleSBhcmUgc3ltYm9sIGtleWVkLCB0aGVzZSB2YXJpYWJsZXMg
Y2Fubm90IGJlIHJlYWNoZWQgZnJvbSB0aGUgdXN1YWwgY29kZS4KKyAgICBpZiAoU291cmNlUGFy
c2VNb2RlOjpHZW5lcmF0b3JCb2R5TW9kZSA9PSBwYXJzZU1vZGUpIHsKKyAgICAgICAgQVNTRVJU
KG1fbGV4aWNhbEVudmlyb25tZW50UmVnaXN0ZXIpOworICAgICAgICBtX2dlbmVyYXRvckZyYW1l
U3ltYm9sVGFibGUuc2V0KCptX3ZtLCBmdW5jdGlvblN5bWJvbFRhYmxlKTsKKyAgICAgICAgbV9n
ZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlSW5kZXggPSBzeW1ib2xUYWJsZUNvbnN0YW50SW5kZXg7
CisgICAgICAgIGVtaXRNb3ZlKGdlbmVyYXRvckZyYW1lUmVnaXN0ZXIoKSwgbV9sZXhpY2FsRW52
aXJvbm1lbnRSZWdpc3Rlcik7CisgICAgICAgIGVtaXRQdXRCeUlkKGdlbmVyYXRvclJlZ2lzdGVy
KCksIHByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JGcmFtZVByaXZhdGVO
YW1lKCksIGdlbmVyYXRvckZyYW1lUmVnaXN0ZXIoKSk7CisgICAgfQorCiAgICAgYm9vbCBzaG91
bGRJbml0aWFsaXplQmxvY2tTY29wZWRGdW5jdGlvbnMgPSBmYWxzZTsgLy8gV2UgZ2VuZXJhdGUg
dG9wLWxldmVsIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucyBpbiA6OmdlbmVyYXRlKCkuCiAgICAgcHVz
aExleGljYWxTY29wZShtX3Njb3BlTm9kZSwgVERaQ2hlY2tPcHRpbWl6YXRpb246Ok9wdGltaXpl
LCBOZXN0ZWRTY29wZVR5cGU6OklzTm90TmVzdGVkLCBudWxscHRyLCBzaG91bGRJbml0aWFsaXpl
QmxvY2tTY29wZWRGdW5jdGlvbnMpOwogfQpAQCAtMzY2Myw4ICszNjgyLDcgQEAgdm9pZCBCeXRl
Y29kZUdlbmVyYXRvcjo6ZW1pdENvbXBsZXhQb3BTY29wZXMoUmVnaXN0ZXJJRCogc2NvcGUsIENv
bnRyb2xGbG93Q29udGUKICAgICAgICAgICAgIGlmIChmbGlwVHJpZXMpIHsKICAgICAgICAgICAg
ICAgICB3aGlsZSAobV90cnlDb250ZXh0U3RhY2suc2l6ZSgpICE9IGZpbmFsbHlDb250ZXh0LnRy
eUNvbnRleHRTdGFja1NpemUpIHsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKG1fdHJ5Q29u
dGV4dFN0YWNrLnNpemUoKSA+IGZpbmFsbHlDb250ZXh0LnRyeUNvbnRleHRTdGFja1NpemUpOwot
ICAgICAgICAgICAgICAgICAgICBUcnlDb250ZXh0IGNvbnRleHQgPSBtX3RyeUNvbnRleHRTdGFj
ay5sYXN0KCk7Ci0gICAgICAgICAgICAgICAgICAgIG1fdHJ5Q29udGV4dFN0YWNrLnJlbW92ZUxh
c3QoKTsKKyAgICAgICAgICAgICAgICAgICAgVHJ5Q29udGV4dCBjb250ZXh0ID0gbV90cnlDb250
ZXh0U3RhY2sudGFrZUxhc3QoKTsKICAgICAgICAgICAgICAgICAgICAgVHJ5UmFuZ2UgcmFuZ2U7
CiAgICAgICAgICAgICAgICAgICAgIHJhbmdlLnN0YXJ0ID0gY29udGV4dC5zdGFydDsKICAgICAg
ICAgICAgICAgICAgICAgcmFuZ2UuZW5kID0gYmVmb3JlRmluYWxseTsKQEAgLTM5NDgsNyArMzk2
Niw3IEBAIHN0YXRpYyB2b2lkIHByZXBhcmVKdW1wVGFibGVGb3JTdHJpbmdTd2l0Y2goVW5saW5r
ZWRTdHJpbmdKdW1wVGFibGUmIGp1bXBUYWJsZSwKICAgICAgICAgCiAgICAgICAgIEFTU0VSVChu
b2Rlc1tpXS0+aXNTdHJpbmcoKSk7CiAgICAgICAgIFN0cmluZ0ltcGwqIGNsYXVzZSA9IHN0YXRp
Y19jYXN0PFN0cmluZ05vZGUqPihub2Rlc1tpXSktPnZhbHVlKCkuaW1wbCgpOwotICAgICAgICBq
dW1wVGFibGUub2Zmc2V0VGFibGUuYWRkKGNsYXVzZSwgbGFiZWxzW2ldLT5iaW5kKHN3aXRjaEFk
ZHJlc3MsIHN3aXRjaEFkZHJlc3MgKyAzKSk7CisgICAgICAgIGp1bXBUYWJsZS5vZmZzZXRUYWJs
ZS5hZGQoY2xhdXNlLCBVbmxpbmtlZFN0cmluZ0p1bXBUYWJsZTo6T2Zmc2V0TG9jYXRpb24geyBs
YWJlbHNbaV0tPmJpbmQoc3dpdGNoQWRkcmVzcywgc3dpdGNoQWRkcmVzcyArIDMpIH0pOwogICAg
IH0KIH0KIApAQCAtNDQ1NiwxNiArNDQ3NCwzNiBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0WWllbGRQb2ludChSZWdpc3RlcklEKiBhcmd1bWVudCkKICAgICBlbWl0R2VuZXJhdG9yU3Rh
dGVDaGFuZ2UoeWllbGRQb2ludEluZGV4KTsKICAgICAvLyBGaXJzdCB5aWVsZCBwb2ludCBpcyB1
c2VkIGZvciBpbml0aWFsIHNlcXVlbmNlLgogICAgIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJ
bmRleCA9IHlpZWxkUG9pbnRJbmRleCAtIDE7CisKKyAgICAvLyBTcGxpdCB0aGUgdHJ5IHJhbmdl
IGhlcmUuCisgICAgUmVmUHRyPExhYmVsPiBzYXZlUG9pbnQgPSBlbWl0TGFiZWwobmV3TGFiZWwo
KS5nZXQoKSk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gbV90cnlDb250ZXh0U3RhY2suc2l6ZSgp
OyBpLS07KSB7CisgICAgICAgIFRyeUNvbnRleHQmIGNvbnRleHQgPSBtX3RyeUNvbnRleHRTdGFj
a1tpXTsKKyAgICAgICAgVHJ5UmFuZ2UgcmFuZ2U7CisgICAgICAgIHJhbmdlLnN0YXJ0ID0gY29u
dGV4dC5zdGFydDsKKyAgICAgICAgcmFuZ2UuZW5kID0gc2F2ZVBvaW50OworICAgICAgICByYW5n
ZS50cnlEYXRhID0gY29udGV4dC50cnlEYXRhOworICAgICAgICBtX3RyeVJhbmdlcy5hcHBlbmQo
cmFuZ2UpOworCisgICAgICAgIC8vIFRyeSByYW5nZSB3aWxsIGJlIHJlc3RhcmVkIGF0IHRoZSBt
ZXJnZSBwb2ludC4KKyAgICAgICAgY29udGV4dC5zdGFydCA9IG1lcmdlUG9pbnQ7CisgICAgfQor
ICAgIFZlY3RvcjxUcnlDb250ZXh0PiBzYXZlZFRyeUNvbnRleHRTdGFjazsKKyAgICBtX3RyeUNv
bnRleHRTdGFjay5zd2FwKHNhdmVkVHJ5Q29udGV4dFN0YWNrKTsKKwogICAgIGVtaXRTYXZlKG1l
cmdlUG9pbnQuZ2V0KCksIGxpdmVDYWxsZWVMb2NhbHNJbmRleCk7CiAgICAgZW1pdFJldHVybihh
cmd1bWVudCk7CiAgICAgZW1pdFJlc3VtZShtZXJnZVBvaW50LmdldCgpLCBsaXZlQ2FsbGVlTG9j
YWxzSW5kZXgpOworCisgICAgLy8gUmVzdG9yZSB0aGUgdHJ5IGNvbnRleHRzLCB3aGljaCBzdGFy
dCBvZmZzZXQgaXMgdXBkYXRlZCB0byB0aGUgbWVyZ2UgcG9pbnQuCisgICAgbV90cnlDb250ZXh0
U3RhY2suc3dhcChzYXZlZFRyeUNvbnRleHRTdGFjayk7CiB9CiAKIHZvaWQgQnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXRTYXZlKExhYmVsKiBtZXJnZVBvaW50LCB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9j
YWxzSW5kZXgpCiB7CiAgICAgc2l6ZV90IGJlZ2luID0gaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpOwog
ICAgIGVtaXRPcGNvZGUob3Bfc2F2ZSk7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fZ2Vu
ZXJhdG9yUmVnaXN0ZXItPmluZGV4KCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChnZW5l
cmF0b3JGcmFtZVJlZ2lzdGVyKCktPmluZGV4KCkpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVu
ZChsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChtZXJn
ZVBvaW50LT5iaW5kKGJlZ2luLCBpbnN0cnVjdGlvbnMoKS5zaXplKCkpKTsKIH0KQEAgLTQ0NzQs
NyArNDUxMiw3IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXN1bWUoTGFiZWwqIG1l
cmdlUG9pbnQsIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJCiB7CiAgICAgZW1pdEdlbmVyYXRv
clN0YXRlTGFiZWwoKTsKICAgICBlbWl0T3Bjb2RlKG9wX3Jlc3VtZSk7Ci0gICAgaW5zdHJ1Y3Rp
b25zKCkuYXBwZW5kKG1fZ2VuZXJhdG9yUmVnaXN0ZXItPmluZGV4KCkpOworICAgIGluc3RydWN0
aW9ucygpLmFwcGVuZChnZW5lcmF0b3JGcmFtZVJlZ2lzdGVyKCktPmluZGV4KCkpOwogICAgIGlu
c3RydWN0aW9ucygpLmFwcGVuZChsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpOwogICAgIGVtaXRMYWJl
bChtZXJnZVBvaW50KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAppbmRleCA1ZmFmMDRmMmYzZGJhMThhZGIwNzg5
ZTMyM2U5ZGFhZTYxYWIxMTZiLi5hOTE2ZTJlNjI4YjQ2NDk4MzMyMzYxZmQyMzk2NTEzOWYxZTZi
ZDUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5oCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiTGFiZWwuaCIK
ICNpbmNsdWRlICJMYWJlbFNjb3BlLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKKyNpbmNs
dWRlICJKU0dlbmVyYXRvckZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiUGFyc2VyRXJyb3IuaCIKICNp
bmNsdWRlICJSZWdpc3RlcklELmgiCiAjaW5jbHVkZSAiU2V0Rm9yU2NvcGUuaCIKQEAgLTcwMiw5
ICs3MDMsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXREZWxl
Z2F0ZVlpZWxkKFJlZ2lzdGVySUQqIGFyZ3VtZW50LCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSop
OwogICAgICAgICB2b2lkIGJlZ2luR2VuZXJhdG9yKFJlZ2lzdGVySUQqKTsKICAgICAgICAgdm9p
ZCBlbmRHZW5lcmF0b3IoTGFiZWwqIGRlZmF1bHRMYWJlbCk7Ci0gICAgICAgIFJlZ2lzdGVySUQq
IGdlbmVyYXRvclN0YXRlUmVnaXN0ZXIoKSB7IHJldHVybiAmbV9wYXJhbWV0ZXJzWzJdOyB9Ci0g
ICAgICAgIFJlZ2lzdGVySUQqIGdlbmVyYXRvclZhbHVlUmVnaXN0ZXIoKSB7IHJldHVybiAmbV9w
YXJhbWV0ZXJzWzNdOyB9Ci0gICAgICAgIFJlZ2lzdGVySUQqIGdlbmVyYXRvclJlc3VtZU1vZGVS
ZWdpc3RlcigpIHsgcmV0dXJuICZtX3BhcmFtZXRlcnNbNF07IH0KKyAgICAgICAgUmVnaXN0ZXJJ
RCogZ2VuZXJhdG9yU3RhdGVSZWdpc3RlcigpIHsgcmV0dXJuICZtX3BhcmFtZXRlcnNbc3RhdGlj
X2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6R2VuZXJhdG9yQXJndW1lbnQ6OlN0
YXRlKV07IH0KKyAgICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9yVmFsdWVSZWdpc3RlcigpIHsg
cmV0dXJuICZtX3BhcmFtZXRlcnNbc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3JGdW5j
dGlvbjo6R2VuZXJhdG9yQXJndW1lbnQ6OlZhbHVlKV07IH0KKyAgICAgICAgUmVnaXN0ZXJJRCog
Z2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKCkgeyByZXR1cm4gJm1fcGFyYW1ldGVyc1tzdGF0
aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JBcmd1bWVudDo6
UmVzdW1lTW9kZSldOyB9CisgICAgICAgIFJlZ2lzdGVySUQqIGdlbmVyYXRvckZyYW1lUmVnaXN0
ZXIoKSB7IHJldHVybiAmbV9wYXJhbWV0ZXJzW3N0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJh
dG9yRnVuY3Rpb246OkdlbmVyYXRvckFyZ3VtZW50OjpGcmFtZSldOyB9CiAKICAgICAgICAgQ29k
ZVR5cGUgY29kZVR5cGUoKSBjb25zdCB7IHJldHVybiBtX2NvZGVUeXBlOyB9CiAKQEAgLTkzMiw2
ICs5MzQsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFZlY3RvcjxSZWZQdHI8Rm9ySW5D
b250ZXh0Pj4gbV9mb3JJbkNvbnRleHRTdGFjazsKICAgICAgICAgVmVjdG9yPFRyeUNvbnRleHQ+
IG1fdHJ5Q29udGV4dFN0YWNrOwogICAgICAgICBWZWN0b3I8UmVmUHRyPExhYmVsPj4gbV9nZW5l
cmF0b3JSZXN1bWVMYWJlbHM7CisKKyAgICAgICAgU3Ryb25nPFN5bWJvbFRhYmxlPiBtX2dlbmVy
YXRvckZyYW1lU3ltYm9sVGFibGU7CisgICAgICAgIGludCBtX2dlbmVyYXRvckZyYW1lU3ltYm9s
VGFibGVJbmRleCB7IDAgfTsKKwogICAgICAgICBlbnVtIEZ1bmN0aW9uVmFyaWFibGVUeXBlIDog
dWludDhfdCB7IE5vcm1hbEZ1bmN0aW9uVmFyaWFibGUsIEdsb2JhbEZ1bmN0aW9uVmFyaWFibGUg
fTsKICAgICAgICAgVmVjdG9yPHN0ZDo6cGFpcjxGdW5jdGlvbk1ldGFkYXRhTm9kZSosIEZ1bmN0
aW9uVmFyaWFibGVUeXBlPj4gbV9mdW5jdGlvbnNUb0luaXRpYWxpemU7CiAgICAgICAgIGJvb2wg
bV9uZWVkVG9Jbml0aWFsaXplQXJndW1lbnRzIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCmluZGV4IDY5YTE2ZWI1ZGE0MzU1YmM3OTI1YzVk
ZmRjYjA2MjAyM2U5OTY1MDIuLmM0NTcyM2IxOTAxMzIwMjVkZmNlMzI2ZjYwMTVlY2E2Y2U1OGQ3
MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcApAQCAt
NDIsOCArNDIsOCBAQAogI2luY2x1ZGUgIkRpcmVjdEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIkZU
TEZvck9TUkVudHJ5SklUQ29kZS5oIgogI2luY2x1ZGUgIkZUTE9TUkVudHJ5LmgiCi0jaW5jbHVk
ZSAiSG9zdENhbGxSZXR1cm5WYWx1ZS5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgorI2lu
Y2x1ZGUgIkhvc3RDYWxsUmV0dXJuVmFsdWUuaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgog
I2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUgIkpJVEV4Y2VwdGlvbnMuaCIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0ZS1ieXRlY29kZS1maWxlcyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9nZW5lcmF0ZS1ieXRlY29kZS1maWxlcwppbmRleCA1NjY2YTNmOTI0YzEx
OWIyMTZkM2ZmMGZmZTljNjcyYjdjNzFiYjc5Li44Zjc5MGVkOWZhODMxNmQzOWRhMTVkM2I3NTg5
NDZiZjQ5ZjNiZDNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdGUt
Ynl0ZWNvZGUtZmlsZXMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRlLWJ5dGVj
b2RlLWZpbGVzCkBAIC05NCwxMyArOTQsMTQgQEAgZGVmIG9wZW5PckV4aXQocGF0aCwgbW9kZSk6
CiAgICAgICAgIHByaW50ICJJL08gZXJyb3Igb3BlbmluZyB7MH0sICh7MX0pOiB7Mn0iLmZvcm1h
dChwYXRoLCBlLmVycm5vLCBlLnN0cmVycm9yKQogICAgICAgICBleGl0KDEpCiAKLWRlZiBoYXNo
RmlsZShmaWxlKToKK2RlZiBoYXNoRmlsZShmaWxlcyk6CiAgICAgc2hhMSA9IGhhc2hsaWIuc2hh
MSgpCi0gICAgZmlsZS5zZWVrKDApCi0gICAgZm9yIGxpbmUgaW4gZmlsZToKLSAgICAgICAgc2hh
MS51cGRhdGUobGluZSkKKyAgICBmb3IgZmlsZSBpbiBmaWxlczoKKyAgICAgICAgZmlsZS5zZWVr
KDApCisgICAgICAgIGZvciBsaW5lIGluIGZpbGU6CisgICAgICAgICAgICBzaGExLnVwZGF0ZShs
aW5lKQogCi0gICAgZmlsZS5zZWVrKDApCisgICAgICAgIGZpbGUuc2VlaygwKQogCiAgICAgcmV0
dXJuIHNoYTEuaGV4ZGlnZXN0KCkKIApAQCAtMTE1LDcgKzExNiw4IEBAIGlmIF9fbmFtZV9fID09
ICJfX21haW5fXyI6CiAKICAgICBieXRlY29kZUpTT05GaWxlID0gYXJnc1swXQogICAgIGJ5dGVj
b2RlRmlsZSA9IG9wZW5PckV4aXQoYnl0ZWNvZGVKU09ORmlsZSwgInJiIikKLSAgICBzaGExSGFz
aCA9IGhhc2hGaWxlKGJ5dGVjb2RlRmlsZSkKKyAgICBnZW5lcmF0b3JGaWxlID0gb3Blbk9yRXhp
dChfX2ZpbGVfXywgInJiIikKKyAgICBzaGExSGFzaCA9IGhhc2hGaWxlKFtieXRlY29kZUZpbGUs
IGdlbmVyYXRvckZpbGVdKQogCiAgICAgaEZpbGVIYXNoU3RyaW5nID0gIi8vIFNIQTFIYXNoOiB7
MH1cbiIuZm9ybWF0KHNoYTFIYXNoKQogICAgIGFzbUZpbGVIYXNoU3RyaW5nID0gIiMgU0hBMUhh
c2g6IHswfVxuIi5mb3JtYXQoc2hhMUhhc2gpCkBAIC0xODcsNiArMTg5LDcgQEAgaWYgX19uYW1l
X18gPT0gIl9fbWFpbl9fIjoKICAgICAgICAgICAgICAgICBkZWZhdWx0TGVuZ3RoID0gc2VjdGlv
blsiZGVmYXVsdExlbmd0aCJdCiAKICAgICAgICAgICAgIGJ5dGVjb2RlTnVtID0gMAorICAgICAg
ICAgICAgbWF4TGVuZ3RoID0gMAogICAgICAgICAgICAgZm9yIGJ5dGVjb2RlIGluIHNlY3Rpb25b
ImJ5dGVjb2RlcyJdOgogICAgICAgICAgICAgICAgIGlmIG5vdCBmaXJzdE1hY3JvOgogICAgICAg
ICAgICAgICAgICAgICBieXRlY29kZUhGaWxlLndyaXRlKCIgXFxcbiIpCkBAIC0xOTQsNiArMTk3
LDcgQEAgaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgICAgICAgICAgICAgICBsZW5ndGgg
PSBkZWZhdWx0TGVuZ3RoCiAgICAgICAgICAgICAgICAgaWYgImxlbmd0aCIgaW4gYnl0ZWNvZGU6
CiAgICAgICAgICAgICAgICAgICAgIGxlbmd0aCA9IGJ5dGVjb2RlWyJsZW5ndGgiXQorICAgICAg
ICAgICAgICAgICAgICBtYXhMZW5ndGggPSBtYXgoW2xlbmd0aCwgbWF4TGVuZ3RoXSkKIAogICAg
ICAgICAgICAgICAgIGJ5dGVjb2RlSEZpbGUud3JpdGUoIiAgICBtYWNybyh7MH0sIHsxfSkiLmZv
cm1hdChieXRlY29kZVsibmFtZSJdLCBsZW5ndGgpKQogICAgICAgICAgICAgICAgIGZpcnN0TWFj
cm8gPSBGYWxzZQpAQCAtMjAxLDYgKzIwNSw3IEBAIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6
CiAKICAgICAgICAgICAgIGJ5dGVjb2RlSEZpbGUud3JpdGUoIlxuXG4iKQogICAgICAgICAgICAg
Ynl0ZWNvZGVIRmlsZS53cml0ZSgiI2RlZmluZSBOVU1CRVJfT0ZfezB9X0lEUyB7MX1cblxuIi5m
b3JtYXQoc2VjdGlvblsibWFjcm9OYW1lQ29tcG9uZW50Il0sIGJ5dGVjb2RlTnVtKSkKKyAgICAg
ICAgICAgIGJ5dGVjb2RlSEZpbGUud3JpdGUoIiNkZWZpbmUgTUFYX09QQ09ERV9MRU5HVEhfT0Zf
ezB9IHsxfVxuXG4iLmZvcm1hdChzZWN0aW9uWyJtYWNyb05hbWVDb21wb25lbnQiXSwgbWF4TGVu
Z3RoKSkKIAogICAgICAgICBpZiBpbml0QVNNRmlsZU5hbWUgYW5kIHNlY3Rpb25bJ2VtaXRJbkFT
TUZpbGUnXToKICAgICAgICAgICAgIHByZWZpeCA9ICIiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAppbmRleCAyYjRjN2M5YjNlYjM2ZDYz
MDZlYTg0NGU4NTM3NmZmYTdmZDBmMWY3Li5mZTM2OGYzOTFjYzI3YzFhMDViOGJkOTBmZjkxYWMx
NjIxYjYyNDcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIv
SW50ZXJwcmV0ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9J
bnRlcnByZXRlci5jcHAKQEAgLTYwOCw3ICs2MDgsNyBAQCBKU1N0cmluZyogSW50ZXJwcmV0ZXI6
OnN0YWNrVHJhY2VBc1N0cmluZyhWTSYgdm0sIGNvbnN0IFZlY3RvcjxTdGFja0ZyYW1lPiYgc3Rh
YwogICAgIHJldHVybiBqc1N0cmluZygmdm0sIGJ1aWxkZXIudG9TdHJpbmcoKSk7CiB9CiAKLUFM
V0FZU19JTkxJTkUgc3RhdGljIEhhbmRsZXJJbmZvKiBmaW5kRXhjZXB0aW9uSGFuZGxlcihTdGFj
a1Zpc2l0b3ImIHZpc2l0b3IsIENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlQmxvY2s6OlJlcXVp
cmVkSGFuZGxlciByZXF1aXJlZEhhbmRsZXIpCitBTFdBWVNfSU5MSU5FIHN0YXRpYyBIYW5kbGVy
SW5mbyogZmluZEV4Y2VwdGlvbkhhbmRsZXIoU3RhY2tWaXNpdG9yJiB2aXNpdG9yLCBDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgUmVxdWlyZWRIYW5kbGVyIHJlcXVpcmVkSGFuZGxlcikKIHsKICAgICBB
U1NFUlQoY29kZUJsb2NrKTsKICNpZiBFTkFCTEUoREZHX0pJVCkKQEAgLTY0Miw3ICs2NDIsNyBA
QCBjbGFzcyBHZXRDYXRjaEhhbmRsZXJGdW5jdG9yIHsKICAgICAgICAgaWYgKCFjb2RlQmxvY2sp
CiAgICAgICAgICAgICByZXR1cm4gU3RhY2tWaXNpdG9yOjpDb250aW51ZTsKIAotICAgICAgICBt
X2hhbmRsZXIgPSBmaW5kRXhjZXB0aW9uSGFuZGxlcih2aXNpdG9yLCBjb2RlQmxvY2ssIENvZGVC
bG9jazo6UmVxdWlyZWRIYW5kbGVyOjpDYXRjaEhhbmRsZXIpOworICAgICAgICBtX2hhbmRsZXIg
PSBmaW5kRXhjZXB0aW9uSGFuZGxlcih2aXNpdG9yLCBjb2RlQmxvY2ssIFJlcXVpcmVkSGFuZGxl
cjo6Q2F0Y2hIYW5kbGVyKTsKICAgICAgICAgaWYgKG1faGFuZGxlcikKICAgICAgICAgICAgIHJl
dHVybiBTdGFja1Zpc2l0b3I6OkRvbmU7CiAKQEAgLTY4NCw3ICs2ODQsNyBAQCBjbGFzcyBVbndp
bmRGdW5jdG9yIHsKICAgICAgICAgbV9oYW5kbGVyID0gbnVsbHB0cjsKICAgICAgICAgaWYgKCFt
X2lzVGVybWluYXRpb24pIHsKICAgICAgICAgICAgIGlmIChtX2NvZGVCbG9jayAmJiAhaXNXZWJB
c3NlbWJseUV4ZWN1dGFibGUobV9jb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpKSkKLSAgICAg
ICAgICAgICAgICBtX2hhbmRsZXIgPSBmaW5kRXhjZXB0aW9uSGFuZGxlcih2aXNpdG9yLCBtX2Nv
ZGVCbG9jaywgQ29kZUJsb2NrOjpSZXF1aXJlZEhhbmRsZXI6OkFueUhhbmRsZXIpOworICAgICAg
ICAgICAgICAgIG1faGFuZGxlciA9IGZpbmRFeGNlcHRpb25IYW5kbGVyKHZpc2l0b3IsIG1fY29k
ZUJsb2NrLCBSZXF1aXJlZEhhbmRsZXI6OkFueUhhbmRsZXIpOwogICAgICAgICB9CiAKICAgICAg
ICAgaWYgKG1faGFuZGxlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRl
cnByZXRlci9JbnRlcnByZXRlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVy
L0ludGVycHJldGVyLmgKaW5kZXggZDIwOTRkZWU3ZDI4NWFjNDk1YjE1NDE3MmEyM2I5NGZmZTg1
N2YxZS4uMDczMmIzZWJiZDlhZGZkMjIzMzYyZWM5YTZiYWFhZmQ4NjFmNTI2NyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgKQEAgLTY2LDYg
KzY2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgc3RydWN0IEhhbmRsZXJJbmZvOwogICAgIHN0
cnVjdCBJbnN0cnVjdGlvbjsKICAgICBzdHJ1Y3QgUHJvdG9DYWxsRnJhbWU7CisgICAgc3RydWN0
IFVubGlua2VkSW5zdHJ1Y3Rpb247CiAKICAgICBlbnVtIFVud2luZFN0YXJ0IHsgVW53aW5kRnJv
bUN1cnJlbnRGcmFtZSwgVW53aW5kRnJvbUNhbGxlckZyYW1lIH07CiAKQEAgLTIwOCw3ICsyMDks
MTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gb3Bjb2RlOwogI2VuZGlm
CiAgICAgICAgIH0KLSAgICAgICAgCisKKyAgICAgICAgT3Bjb2RlSUQgZ2V0T3Bjb2RlSUQoY29u
c3QgSW5zdHJ1Y3Rpb24mKTsKKyAgICAgICAgT3Bjb2RlSUQgZ2V0T3Bjb2RlSUQoY29uc3QgVW5s
aW5rZWRJbnN0cnVjdGlvbiYpOworCiAgICAgICAgIGJvb2wgaXNPcGNvZGUoT3Bjb2RlKTsKIAog
ICAgICAgICBKU1ZhbHVlIGV4ZWN1dGUoUHJvZ3JhbUV4ZWN1dGFibGUqLCBDYWxsRnJhbWUqLCBK
U09iamVjdCogdGhpc09iaik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50
ZXJwcmV0ZXIvSW50ZXJwcmV0ZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50
ZXJwcmV0ZXIvSW50ZXJwcmV0ZXJJbmxpbmVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODZkMDcxNDhhNTJlNjVl
Mzc1Zjk3ZTZlYmI5MWFkYmUxZGQ0NTYwZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlcklubGluZXMuaApAQCAtMCwwICsxLDQ0
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVh
QGdtYWlsLmNvbT4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJJbnN0cnVjdGlvbi5oIgorI2luY2x1ZGUgIkludGVy
cHJldGVyLmgiCisjaW5jbHVkZSAiVW5saW5rZWRDb2RlQmxvY2suaCIKKworbmFtZXNwYWNlIEpT
QyB7CisKK2lubGluZSBPcGNvZGVJRCBJbnRlcnByZXRlcjo6Z2V0T3Bjb2RlSUQoY29uc3QgSW5z
dHJ1Y3Rpb24mIGluc3RydWN0aW9uKQoreworICAgIHJldHVybiBnZXRPcGNvZGVJRChpbnN0cnVj
dGlvbi51Lm9wY29kZSk7Cit9CisKK2lubGluZSBPcGNvZGVJRCBJbnRlcnByZXRlcjo6Z2V0T3Bj
b2RlSUQoY29uc3QgVW5saW5rZWRJbnN0cnVjdGlvbiYgaW5zdHJ1Y3Rpb24pCit7CisgICAgcmV0
dXJuIGluc3RydWN0aW9uLnUub3Bjb2RlOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklULmNwcAppbmRleCA4ZmQzZjU4ZWQ0MTZhNzc0YmIyNzY1ZTRkNGQ1M2Q2
OGJlOTE4MmU1Li42MzE4YzYxZDM3YThkYTEyM2VjNmYzOGEyOGUxOTU1Yzg1ODMxMDMzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCkBAIC0yMzUsOCArMjM1LDYgQEAgdm9pZCBKSVQ6OnBy
aXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBERUZJTkVfT1Aob3BfZ2V0X3Jlc3RfbGVu
Z3RoKQogICAgICAgICBERUZJTkVfT1Aob3BfY2hlY2tfdGR6KQogICAgICAgICBERUZJTkVfT1Ao
b3BfYXNzZXJ0KQotICAgICAgICBERUZJTkVfT1Aob3Bfc2F2ZSkKLSAgICAgICAgREVGSU5FX09Q
KG9wX3Jlc3VtZSkKICAgICAgICAgREVGSU5FX09QKG9wX2RlYnVnKQogICAgICAgICBERUZJTkVf
T1Aob3BfZGVsX2J5X2lkKQogICAgICAgICBERUZJTkVfT1Aob3BfZGVsX2J5X3ZhbCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVC5oCmluZGV4IGM5NGI3NDBiY2NlNTI1NTA3ZWIyOGM3MGQ4NmFiNjE3NWQ3
MDc1YmIuLmZmNTIwMzI3MDE2ZWNkMjNlYWE2ODkyZDM1M2JlYzNmZjM2NDAyNWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVQuaApAQCAtNTAwLDggKzUwMCw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICB2b2lkIGVtaXRfb3BfZ2V0X3Jlc3RfbGVuZ3RoKEluc3RydWN0aW9uKik7CiAgICAgICAg
IHZvaWQgZW1pdF9vcF9jaGVja190ZHooSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0
X29wX2Fzc2VydChJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3Bfc2F2ZShJbnN0
cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfcmVzdW1lKEluc3RydWN0aW9uKik7CiAg
ICAgICAgIHZvaWQgZW1pdF9vcF9kZWJ1ZyhJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVt
aXRfb3BfZGVsX2J5X2lkKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9kZWxf
YnlfdmFsKEluc3RydWN0aW9uKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wY29kZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVz
LmNwcAppbmRleCBkOTlkNDE1YTMzYjc1MmRjYzNmYWIxNWI5NGI5NjRhMTExMWNlODMxLi4wMTIz
MjBhMGE2ZjAzMDczNzM1MzAzMTViNGIxODllYTZhYWYzZmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKQEAgLTE0ODksMTggKzE0ODksNiBAQCB2b2lkIEpJVDo6
ZW1pdF9vcF9nZXRfcmVzdF9sZW5ndGgoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
ICNlbmRpZgogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9zYXZlKEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCi17Ci0gICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBj
dXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9zYXZlKTsKLSAgICBzbG93UGF0aENhbGwuY2Fs
bCgpOwotfQotCi12b2lkIEpJVDo6ZW1pdF9vcF9yZXN1bWUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKLXsKLSAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1
cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX3Jlc3VtZSk7Ci0gICAgc2xvd1BhdGhDYWxsLmNh
bGwoKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBFTkFCTEUoSklUKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIu
YXNtCmluZGV4IDMyYjUwYzA5NWIwZmFjNTAwMjhmYzgwMTVmNDQ1MzkwZWQxNGE3YTYuLmM5NmJm
MWM4ZWMxYTVlNTk4ZWMwNzZjNzNjZTAzMjlkMzg4ZWQ1NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KQEAgLTE2NzEsMTUg
KzE2NzEsMTEgQEAgX2xsaW50X29wX2Fzc2VydDoKIAogCiBfbGxpbnRfb3Bfc2F2ZToKLSAgICB0
cmFjZUV4ZWN1dGlvbigpCi0gICAgY2FsbE9wY29kZVNsb3dQYXRoKF9zbG93X3BhdGhfc2F2ZSkK
LSAgICBkaXNwYXRjaCg0KQorICAgIG5vdFN1cHBvcnRlZCgpCiAKIAogX2xsaW50X29wX3Jlc3Vt
ZToKLSAgICB0cmFjZUV4ZWN1dGlvbigpCi0gICAgY2FsbE9wY29kZVNsb3dQYXRoKF9zbG93X3Bh
dGhfcmVzdW1lKQotICAgIGRpc3BhdGNoKDMpCisgICAgbm90U3VwcG9ydGVkKCkKIAogCiBfbGxp
bnRfb3BfY3JlYXRlX2xleGljYWxfZW52aXJvbm1lbnQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1BhcnNlci5jcHAKaW5kZXggMjRkOTQzNjYxYzJjZTNjODZiMjViM2JmZTAxNTk4ZmM3NThm
NDcyOS4uM2NmOGRkMGU0NjRkNGE1NTZiYjg0YzE2NjkxNzcyNWJiOTIyZDI1ZCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcApAQCAtMjU2LDcgKzI1Niw3IEBAIFN0cmlu
ZyBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJbm5lcihjb25zdCBJZGVudGlmaWVyJiBjYWxsZWVO
YW1lLCBTb3VyY2VQYXJzZU1vCiAgICAgaWYgKG1fbGV4ZXItPmlzUmVwYXJzaW5nRnVuY3Rpb24o
KSkgewogICAgICAgICBQYXJzZXJGdW5jdGlvbkluZm88QVNUQnVpbGRlcj4gZnVuY3Rpb25JbmZv
OwogICAgICAgICBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yQm9k
eU1vZGUpCi0gICAgICAgICAgICBtX3BhcmFtZXRlcnMgPSBjcmVhdGVHZW5lcmF0b3JQYXJhbWV0
ZXJzKGNvbnRleHQpOworICAgICAgICAgICAgbV9wYXJhbWV0ZXJzID0gY3JlYXRlR2VuZXJhdG9y
UGFyYW1ldGVycyhjb250ZXh0LCBmdW5jdGlvbkluZm8ucGFyYW1ldGVyQ291bnQpOwogICAgICAg
ICBlbHNlCiAgICAgICAgICAgICBtX3BhcmFtZXRlcnMgPSBwYXJzZUZ1bmN0aW9uUGFyYW1ldGVy
cyhjb250ZXh0LCBwYXJzZU1vZGUsIGZ1bmN0aW9uSW5mbyk7CiAKQEAgLTUwNywxMCArNTA3LDkg
QEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU291cmNlRWxlbWVudHMgUGFyc2Vy
PExleGVyVHlwZT46OnBhcnNlR2VuZXJhdG8KIAogICAgIFBhcnNlckZ1bmN0aW9uSW5mbzxUcmVl
QnVpbGRlcj4gaW5mbzsKICAgICBpbmZvLm5hbWUgPSAmbV92bS0+cHJvcGVydHlOYW1lcy0+bnVs
bElkZW50aWZpZXI7Ci0gICAgY3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhjb250ZXh0KTsKKyAg
ICBjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKGNvbnRleHQsIGluZm8ucGFyYW1ldGVyQ291bnQp
OwogICAgIGluZm8uc3RhcnRPZmZzZXQgPSBwYXJhbWV0ZXJzU3RhcnQ7CiAgICAgaW5mby5zdGFy
dExpbmUgPSB0b2tlbkxpbmUoKTsKLSAgICBpbmZvLnBhcmFtZXRlckNvdW50ID0gNDsgLy8gZ2Vu
ZXJhdG9yLCBzdGF0ZSwgdmFsdWUsIHJlc3VtZSBtb2RlCiAKICAgICB7CiAgICAgICAgIEF1dG9Q
b3BTY29wZVJlZiBnZW5lcmF0b3JCb2R5U2NvcGUodGhpcywgcHVzaFNjb3BlKCkpOwpAQCAtMTkw
MSwzMiArMTkwMCwzMCBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPiB0ZW1wbGF0ZSA8
Y2xhc3MgVHJlZUJ1aWxkZXIsIGNsYXNzIEZ1bmN0aW9uSW5mb1R5cAogfQogCiB0ZW1wbGF0ZSA8
dHlwZW5hbWUgTGV4ZXJUeXBlPgotdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiB0eXBlbmFt
ZSBUcmVlQnVpbGRlcjo6Rm9ybWFsUGFyYW1ldGVyTGlzdCBQYXJzZXI8TGV4ZXJUeXBlPjo6Y3Jl
YXRlR2VuZXJhdG9yUGFyYW1ldGVycyhUcmVlQnVpbGRlciYgY29udGV4dCkKK3RlbXBsYXRlIDxj
bGFzcyBUcmVlQnVpbGRlcj4gdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkZvcm1hbFBhcmFtZXRlckxp
c3QgUGFyc2VyPExleGVyVHlwZT46OmNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMoVHJlZUJ1aWxk
ZXImIGNvbnRleHQsIHVuc2lnbmVkJiBwYXJhbWV0ZXJDb3VudCkKIHsKICAgICBhdXRvIHBhcmFt
ZXRlcnMgPSBjb250ZXh0LmNyZWF0ZUZvcm1hbFBhcmFtZXRlckxpc3QoKTsKIAogICAgIEpTVG9r
ZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOwogICAgIEpTVGV4dFBvc2l0aW9u
IHBvc2l0aW9uID0gdG9rZW5TdGFydFBvc2l0aW9uKCk7CiAKLSAgICAvLyBAZ2VuZXJhdG9yCi0g
ICAgZGVjbGFyZVBhcmFtZXRlcigmbV92bS0+cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCku
Z2VuZXJhdG9yUHJpdmF0ZU5hbWUoKSk7Ci0gICAgYXV0byBnZW5lcmF0b3IgPSBjb250ZXh0LmNy
ZWF0ZUJpbmRpbmdMb2NhdGlvbihsb2NhdGlvbiwgbV92bS0+cHJvcGVydHlOYW1lcy0+YnVpbHRp
bk5hbWVzKCkuZ2VuZXJhdG9yUHJpdmF0ZU5hbWUoKSwgcG9zaXRpb24sIHBvc2l0aW9uLCBBc3Np
Z25tZW50Q29udGV4dDo6RGVjbGFyYXRpb25TdGF0ZW1lbnQpOwotICAgIGNvbnRleHQuYXBwZW5k
UGFyYW1ldGVyKHBhcmFtZXRlcnMsIGdlbmVyYXRvciwgMCk7CisgICAgYXV0byBhZGRQYXJhbWV0
ZXIgPSBbJl0oY29uc3QgSWRlbnRpZmllciYgbmFtZSkgeworICAgICAgICBkZWNsYXJlUGFyYW1l
dGVyKCZuYW1lKTsKKyAgICAgICAgYXV0byBiaW5kaW5nID0gY29udGV4dC5jcmVhdGVCaW5kaW5n
TG9jYXRpb24obG9jYXRpb24sIG5hbWUsIHBvc2l0aW9uLCBwb3NpdGlvbiwgQXNzaWdubWVudENv
bnRleHQ6OkRlY2xhcmF0aW9uU3RhdGVtZW50KTsKKyAgICAgICAgY29udGV4dC5hcHBlbmRQYXJh
bWV0ZXIocGFyYW1ldGVycywgYmluZGluZywgMCk7CisgICAgICAgICsrcGFyYW1ldGVyQ291bnQ7
CisgICAgfTsKIAorICAgIC8vIEBnZW5lcmF0b3IKKyAgICBhZGRQYXJhbWV0ZXIobV92bS0+cHJv
cGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yUHJpdmF0ZU5hbWUoKSk7CiAgICAg
Ly8gQGdlbmVyYXRvclN0YXRlCi0gICAgZGVjbGFyZVBhcmFtZXRlcigmbV92bS0+cHJvcGVydHlO
YW1lcy0+YnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yU3RhdGVQcml2YXRlTmFtZSgpKTsKLSAgICBh
dXRvIGdlbmVyYXRvclN0YXRlID0gY29udGV4dC5jcmVhdGVCaW5kaW5nTG9jYXRpb24obG9jYXRp
b24sIG1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclN0YXRlUHJp
dmF0ZU5hbWUoKSwgcG9zaXRpb24sIHBvc2l0aW9uLCBBc3NpZ25tZW50Q29udGV4dDo6RGVjbGFy
YXRpb25TdGF0ZW1lbnQpOwotICAgIGNvbnRleHQuYXBwZW5kUGFyYW1ldGVyKHBhcmFtZXRlcnMs
IGdlbmVyYXRvclN0YXRlLCAwKTsKLQorICAgIGFkZFBhcmFtZXRlcihtX3ZtLT5wcm9wZXJ0eU5h
bWVzLT5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JTdGF0ZVByaXZhdGVOYW1lKCkpOwogICAgIC8v
IEBnZW5lcmF0b3JWYWx1ZQotICAgIGRlY2xhcmVQYXJhbWV0ZXIoJm1fdm0tPnByb3BlcnR5TmFt
ZXMtPmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclZhbHVlUHJpdmF0ZU5hbWUoKSk7Ci0gICAgYXV0
byBnZW5lcmF0b3JWYWx1ZSA9IGNvbnRleHQuY3JlYXRlQmluZGluZ0xvY2F0aW9uKGxvY2F0aW9u
LCBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JWYWx1ZVByaXZh
dGVOYW1lKCksIHBvc2l0aW9uLCBwb3NpdGlvbiwgQXNzaWdubWVudENvbnRleHQ6OkRlY2xhcmF0
aW9uU3RhdGVtZW50KTsKLSAgICBjb250ZXh0LmFwcGVuZFBhcmFtZXRlcihwYXJhbWV0ZXJzLCBn
ZW5lcmF0b3JWYWx1ZSwgMCk7Ci0KKyAgICBhZGRQYXJhbWV0ZXIobV92bS0+cHJvcGVydHlOYW1l
cy0+YnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yVmFsdWVQcml2YXRlTmFtZSgpKTsKICAgICAvLyBA
Z2VuZXJhdG9yUmVzdW1lTW9kZQotICAgIGRlY2xhcmVQYXJhbWV0ZXIoJm1fdm0tPnByb3BlcnR5
TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclJlc3VtZU1vZGVQcml2YXRlTmFtZSgpKTsK
LSAgICBhdXRvIGdlbmVyYXRvclJlc3VtZU1vZGUgPSBjb250ZXh0LmNyZWF0ZUJpbmRpbmdMb2Nh
dGlvbihsb2NhdGlvbiwgbV92bS0+cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZ2VuZXJh
dG9yUmVzdW1lTW9kZVByaXZhdGVOYW1lKCksIHBvc2l0aW9uLCBwb3NpdGlvbiwgQXNzaWdubWVu
dENvbnRleHQ6OkRlY2xhcmF0aW9uU3RhdGVtZW50KTsKLSAgICBjb250ZXh0LmFwcGVuZFBhcmFt
ZXRlcihwYXJhbWV0ZXJzLCBnZW5lcmF0b3JSZXN1bWVNb2RlLCAwKTsKKyAgICBhZGRQYXJhbWV0
ZXIobV92bS0+cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yUmVzdW1lTW9k
ZVByaXZhdGVOYW1lKCkpOworICAgIC8vIEBnZW5lcmF0b3JGcmFtZQorICAgIGFkZFBhcmFtZXRl
cihtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JGcmFtZVByaXZh
dGVOYW1lKCkpOwogCiAgICAgcmV0dXJuIHBhcmFtZXRlcnM7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9QYXJzZXIuaAppbmRleCAyNWNlYzk1YTc2MWNjZDhjMjYzMzgzNzMwZWIwNGUxNTY5
NzIwYmEyLi5kZWQ2MjRmNjE3ZmI2ZDI0ZDAwYmYxYWM0NmM0NWMyMmQ5OWI3MjFmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKQEAgLTE0NTEsNyArMTQ1MSw3IEBAIGNsYXNz
IFBhcnNlciB7CiAgICAgQUxXQVlTX0lOTElORSBib29sIGlzQXJyb3dGdW5jdGlvblBhcmFtZXRl
cnMoKTsKICAgICAKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXIsIGNsYXNzIEZ1bmN0
aW9uSW5mb1R5cGU+IE5FVkVSX0lOTElORSB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6Rm9ybWFsUGFy
YW1ldGVyTGlzdCBwYXJzZUZ1bmN0aW9uUGFyYW1ldGVycyhUcmVlQnVpbGRlciYsIFNvdXJjZVBh
cnNlTW9kZSwgRnVuY3Rpb25JbmZvVHlwZSYpOwotICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVp
bGRlcj4gTkVWRVJfSU5MSU5FIHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpGb3JtYWxQYXJhbWV0ZXJM
aXN0IGNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMoVHJlZUJ1aWxkZXImKTsKKyAgICB0ZW1wbGF0
ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElORSB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6
Rm9ybWFsUGFyYW1ldGVyTGlzdCBjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKFRyZWVCdWlsZGVy
JiwgdW5zaWduZWQmIHBhcmFtZXRlckNvdW50KTsKIAogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVl
QnVpbGRlcj4gTkVWRVJfSU5MSU5FIFRyZWVDbGFzc0V4cHJlc3Npb24gcGFyc2VDbGFzcyhUcmVl
QnVpbGRlciYsIEZ1bmN0aW9uUmVxdWlyZW1lbnRzLCBQYXJzZXJDbGFzc0luZm88VHJlZUJ1aWxk
ZXI+Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1v
blNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93
UGF0aHMuY3BwCmluZGV4IDQ1OTNiMDY1MTQwMGU1MTAxMTAwYzVjMmVkZDU2NzQ1NWNkNjRjZTgu
LmZiYTQ4Yzg2MDViMjc2ODA4MjhiOWJmODk0NzE4OTI3MThjMmM4NTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcApAQCAtMzcsNyAr
MzcsNiBAQAogI2luY2x1ZGUgIkVycm9yLmgiCiAjaW5jbHVkZSAiRXJyb3JIYW5kbGluZ1Njb3Bl
LmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uRnV6ei5oIgotI2luY2x1ZGUgIkdlbmVyYXRvckZyYW1l
LmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiSG9zdENhbGxSZXR1cm5W
YWx1ZS5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCkBAIC03MjUsMzggKzcyNCw2IEBAIFNM
T1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9hc3NlcnQpCiAgICAgRU5EKCk7CiB9CiAKLVNMT1dfUEFU
SF9ERUNMKHNsb3dfcGF0aF9zYXZlKQotewotICAgIC8vIE9ubHkgc2F2ZSB2YXJpYWJsZXMgYW5k
IHRlbXBvcmFyeSByZWdpc3RlcnMuIFRoZSBzY29wZSByZWdpc3RlcnMgYXJlIGluY2x1ZGVkIGlu
IHRoZW0uCi0gICAgLy8gQnV0IHBhcmFtZXRlcnMgYXJlIG5vdCBpbmNsdWRlZC4gQmVjYXVzZSB0
aGUgZ2VuZXJhdG9yIGltcGxlbWVudGF0aW9uIHJlcGxhY2VzIHRoZSB2YWx1ZXMgb2YgcGFyYW1l
dGVycyBvbiBlYWNoIGdlbmVyYXRvci5uZXh0KCkgY2FsbC4KLSAgICBCRUdJTigpOwotICAgIEpT
VmFsdWUgZ2VuZXJhdG9yID0gT1AoMSkuanNWYWx1ZSgpOwotICAgIEdlbmVyYXRvckZyYW1lKiBm
cmFtZSA9IG51bGxwdHI7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IGdlbmVyYXRvci5nZXQoZXhlYywg
ZXhlYy0+cHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvckZyYW1lUHJpdmF0
ZU5hbWUoKSk7Ci0gICAgaWYgKCF2YWx1ZS5pc051bGwoKSkKLSAgICAgICAgZnJhbWUgPSBqc0Nh
c3Q8R2VuZXJhdG9yRnJhbWUqPih2YWx1ZSk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIC8vIEZJWE1F
OiBPbmNlIEpTR2VuZXJhdG9yIHNwZWNpYWxpemVkIG9iamVjdCBpcyBpbnRyb2R1Y2VkLCB0aGlz
IEdlbmVyYXRvckZyYW1lIHNob3VsZCBiZSBlbWJlZGVkIGludG8gaXQgdG8gYXZvaWQgYWxsb2Nh
dGlvbnMuCi0gICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNTE1NDUKLSAgICAgICAgZnJhbWUgPSBHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlKGV4ZWMtPnZt
KCksICBleGVjLT5jb2RlQmxvY2soKS0+bnVtQ2FsbGVlTG9jYWxzKCkpOwotICAgICAgICBQdXRQ
cm9wZXJ0eVNsb3Qgc2xvdChnZW5lcmF0b3IsIHRydWUsIFB1dFByb3BlcnR5U2xvdDo6UHV0QnlJ
ZCk7Ci0gICAgICAgIGFzT2JqZWN0KGdlbmVyYXRvciktPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkp
LT5wdXQoYXNPYmplY3QoZ2VuZXJhdG9yKSwgZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLmJ1
aWx0aW5OYW1lcygpLmdlbmVyYXRvckZyYW1lUHJpdmF0ZU5hbWUoKSwgZnJhbWUsIHNsb3QpOwot
ICAgIH0KLSAgICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSBwY1syXS51LnVuc2ln
bmVkVmFsdWU7Ci0gICAgZnJhbWUtPnNhdmUoZXhlYywgZXhlYy0+Y29kZUJsb2NrKCktPmxpdmVD
YWxsZWVMb2NhbHNBdFlpZWxkKGxpdmVDYWxsZWVMb2NhbHNJbmRleCkpOwotICAgIEVORCgpOwot
fQotCi1TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcmVzdW1lKQotewotICAgIEJFR0lOKCk7Ci0g
ICAgSlNWYWx1ZSBnZW5lcmF0b3IgPSBPUCgxKS5qc1ZhbHVlKCk7Ci0gICAgR2VuZXJhdG9yRnJh
bWUqIGZyYW1lID0ganNDYXN0PEdlbmVyYXRvckZyYW1lKj4oZ2VuZXJhdG9yLmdldChleGVjLCBl
eGVjLT5wcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yRnJhbWVQcml2YXRl
TmFtZSgpKSk7Ci0gICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gcGNbMl0udS51
bnNpZ25lZFZhbHVlOwotICAgIGZyYW1lLT5yZXN1bWUoZXhlYywgZXhlYy0+Y29kZUJsb2NrKCkt
PmxpdmVDYWxsZWVMb2NhbHNBdFlpZWxkKGxpdmVDYWxsZWVMb2NhbHNJbmRleCkpOwotICAgIEVO
RCgpOwotfQotCiBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfY3JlYXRlX2xleGljYWxfZW52aXJv
bm1lbnQpCiB7CiAgICAgQkVHSU4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29tbW9uU2xvd1BhdGhzLmgKaW5kZXggOGM3MDc4NDI4MDJkNmEwM2QxMjhjZDhkMjkyYWZm
NzM1Y2RhMDMyZi4uNmViMjFiZGZkZTAzNDEyZmVlNjEwMDJkNWU1YWE4YTgzNDgwNTNhMCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKQEAg
LTI0Niw4ICsyNDYsNiBAQCBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX25leHRfZ2Vu
ZXJpY19lbnVtZXJhdG9yX3BuYW1lKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhf
dG9faW5kZXhfc3RyaW5nKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcHJvZmls
ZV90eXBlX2NsZWFyX2xvZyk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2Fzc2Vy
dCk7Ci1TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3NhdmUpOwotU0xPV19QQVRIX0hJ
RERFTl9ERUNMKHNsb3dfcGF0aF9yZXN1bWUpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3df
cGF0aF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudCk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0wo
c2xvd19wYXRoX3B1c2hfd2l0aF9zY29wZSk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19w
YXRoX3Jlc29sdmVfc2NvcGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvR2VuZXJhdG9yRnJhbWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
R2VuZXJhdG9yRnJhbWUuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZjZlYTdh
MTAwMjU4YzNlY2UwNGRhYWI0M2JkYWE4NTFlYzhmNzE1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dl
bmVyYXRvckZyYW1lLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDk3ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkdlbmVyYXRvckZyYW1l
LmgiCi0KLSNpbmNsdWRlICJDb2RlQmxvY2suaCIKLSNpbmNsdWRlICJIZWFwSXRlcmF0aW9uU2Nv
cGUuaCIKLSNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgotI2luY2x1ZGUgIkpTQ2VsbElu
bGluZXMuaCIKLSNpbmNsdWRlICJTbG90VmlzaXRvcklubGluZXMuaCIKLSNpbmNsdWRlICJTdHJ1
Y3R1cmVJbmxpbmVzLmgiCi0KLW5hbWVzcGFjZSBKU0MgewotCi1jb25zdCBDbGFzc0luZm8gR2Vu
ZXJhdG9yRnJhbWU6OnNfaW5mbyA9IHsgIkdlbmVyYXRvckZyYW1lIiwgbnVsbHB0ciwgbnVsbHB0
ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShHZW5lcmF0b3JGcmFtZSkgfTsKLQotR2VuZXJhdG9yRnJh
bWU6OkdlbmVyYXRvckZyYW1lKFZNJiB2bSwgc2l6ZV90IG51bWJlck9mQ2FsbGVlTG9jYWxzKQot
ICAgIDogQmFzZSh2bSwgdm0uZ2VuZXJhdG9yRnJhbWVTdHJ1Y3R1cmUuZ2V0KCkpCi0gICAgLCBt
X251bWJlck9mQ2FsbGVlTG9jYWxzKG51bWJlck9mQ2FsbGVlTG9jYWxzKQotewotfQotCi12b2lk
IEdlbmVyYXRvckZyYW1lOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCi17Ci0gICAgQmFzZTo6Zmlu
aXNoQ3JlYXRpb24odm0pOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9udW1iZXJPZkNh
bGxlZUxvY2FsczsgKytpKQotICAgICAgICBsb2NhbEF0KGkpLmNsZWFyKCk7Ci19Ci0KLVN0cnVj
dHVyZSogR2VuZXJhdG9yRnJhbWU6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQotewotICAgIHJldHVybiBTdHJ1
Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKENlbGxU
eXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Ci19Ci0KLUdlbmVyYXRvckZyYW1lKiBHZW5l
cmF0b3JGcmFtZTo6Y3JlYXRlKFZNJiB2bSwgc2l6ZV90IG51bWJlck9mTG9jYWxzKQotewotICAg
IEdlbmVyYXRvckZyYW1lKiByZXN1bHQgPQotICAgICAgICBuZXcgKAotICAgICAgICAgICAgTm90
TnVsbCwKLSAgICAgICAgICAgIGFsbG9jYXRlQ2VsbDxHZW5lcmF0b3JGcmFtZT4odm0uaGVhcCwg
YWxsb2NhdGlvblNpemVGb3JMb2NhbHMobnVtYmVyT2ZMb2NhbHMpKSkKLSAgICAgICAgR2VuZXJh
dG9yRnJhbWUodm0sIG51bWJlck9mTG9jYWxzKTsKLSAgICByZXN1bHQtPmZpbmlzaENyZWF0aW9u
KHZtKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi12b2lkIEdlbmVyYXRvckZyYW1lOjpzYXZl
KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZUNhbGxlZUxvY2FscykK
LXsKLSAgICAvLyBPbmx5IHNhdmUgY2FsbGVlIGxvY2Fscy4KLSAgICAvLyBFdmVyeSB0aW1lIGEg
Z2VuZXJhdG9yIGlzIGNhbGxlZCAob3IgcmVzdW1lZCksIHBhcmFtZXRlcnMgc2hvdWxkIGJlIHJl
cGxhY2VkLgotICAgIEFTU0VSVChsaXZlQ2FsbGVlTG9jYWxzLm51bUJpdHMoKSA8PSBtX251bWJl
ck9mQ2FsbGVlTG9jYWxzKTsKLSAgICBsaXZlQ2FsbGVlTG9jYWxzLmZvckVhY2hTZXRCaXQoWyZd
KHNpemVfdCBpbmRleCkgewotICAgICAgICBsb2NhbEF0KGluZGV4KS5zZXQoZXhlYy0+dm0oKSwg
dGhpcywgZXhlYy0+dW5jaGVja2VkUih2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChpbmRleCkpLmpz
VmFsdWUoKSk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgR2VuZXJhdG9yRnJhbWU6OnJlc3VtZShFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IEZhc3RCaXRWZWN0b3ImIGxpdmVDYWxsZWVMb2NhbHMpCi17Ci0g
ICAgLy8gT25seSByZXN1bWUgY2FsbGVlIGxvY2Fscy4KLSAgICAvLyBFdmVyeSB0aW1lIGEgZ2Vu
ZXJhdG9yIGlzIGNhbGxlZCAob3IgcmVzdW1lZCksIHBhcmFtZXRlcnMgc2hvdWxkIGJlIHJlcGxh
Y2VkLgotICAgIGxpdmVDYWxsZWVMb2NhbHMuZm9yRWFjaFNldEJpdChbJl0oc2l6ZV90IGluZGV4
KSB7Ci0gICAgICAgIGV4ZWMtPnVuY2hlY2tlZFIodmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaW5k
ZXgpKSA9IGxvY2FsQXQoaW5kZXgpLmdldCgpOwotICAgICAgICBsb2NhbEF0KGluZGV4KS5jbGVh
cigpOwotICAgIH0pOwotfQotCi12b2lkIEdlbmVyYXRvckZyYW1lOjp2aXNpdENoaWxkcmVuKEpT
Q2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCi17Ci0gICAgR2VuZXJhdG9yRnJhbWUq
IHRoaXNPYmplY3QgPSBqc0Nhc3Q8R2VuZXJhdG9yRnJhbWUqPihjZWxsKTsKLSAgICBCYXNlOjp2
aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwotICAgIC8vIFNpbmNlIG9ubHkgdHJ1
ZSBjZWxsIHBvaW50ZXJzIGFyZSBzdG9yZWQgYXMgYSBjZWxsLCB3ZSBjYW4gc2FmZWx5IG1hcmsg
dGhlbS4KLSAgICB2aXNpdG9yLmFwcGVuZFZhbHVlcyh0aGlzT2JqZWN0LT5sb2NhbHMoKSwgdGhp
c09iamVjdC0+bV9udW1iZXJPZkNhbGxlZUxvY2Fscyk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIEpT
QwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJh
bWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZyYW1lLmgKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNkNTQ1YjE0N2RkNGFiZmIyYmJiOWI1YTcxOTRl
OGY3NDg0MWM0OWEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJhbWUuaAorKysgL2Rl
di9udWxsCkBAIC0xLDkwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtl
IFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
Ci0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBHZW5l
cmF0b3JGcmFtZV9oCi0jZGVmaW5lIEdlbmVyYXRvckZyYW1lX2gKLQotI2luY2x1ZGUgIkpTQ2Vs
bC5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0Qml0VmVjdG9yLmg+Ci0KLW5hbWVzcGFjZSBKU0Mgewot
Ci1jbGFzcyBHZW5lcmF0b3JGcmFtZSA6IHB1YmxpYyBKU0NlbGwgewotICAgIGZyaWVuZCBjbGFz
cyBKSVQ7Ci0jaWYgRU5BQkxFKERGR19KSVQpCi0gICAgZnJpZW5kIGNsYXNzIERGRzo6U3BlY3Vs
YXRpdmVKSVQ7Ci0gICAgZnJpZW5kIGNsYXNzIERGRzo6SklUQ29tcGlsZXI7Ci0jZW5kaWYKLSAg
ICBmcmllbmQgY2xhc3MgVk07Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBKU0NlbGwgQmFzZTsKLSAg
ICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBTdHJ1Y3R1cmVJc0ltbW9y
dGFsIHwgQmFzZTo6U3RydWN0dXJlRmxhZ3M7Ci0KLSAgICBERUNMQVJFX0VYUE9SVF9JTkZPOwot
Ci0gICAgc3RhdGljIEdlbmVyYXRvckZyYW1lKiBjcmVhdGUoVk0mLCBzaXplX3QgbnVtYmVyT2ZD
YWxsZWVMb2NhbHMpOwotCi0gICAgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiogbG9jYWxzKCkK
LSAgICB7Ci0gICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8V3JpdGVCYXJyaWVyQmFzZTxVbmtu
b3duPio+KGJpdHdpc2VfY2FzdDxjaGFyKj4odGhpcykgKyBvZmZzZXRPZkxvY2FscygpKTsKLSAg
ICB9Ci0KLSAgICBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+JiBsb2NhbEF0KHNpemVfdCBpbmRl
eCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChpbmRleCA8IG1fbnVtYmVyT2ZDYWxsZWVMb2NhbHMp
OwotICAgICAgICByZXR1cm4gbG9jYWxzKClbaW5kZXhdOwotICAgIH0KLQotICAgIHN0YXRpYyBz
aXplX3Qgb2Zmc2V0T2ZMb2NhbHMoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIFdURjo6cm91bmRV
cFRvTXVsdGlwbGVPZjxzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KT4oc2l6ZW9mKEdlbmVy
YXRvckZyYW1lKSk7Ci0gICAgfQotCi0gICAgc3RhdGljIHNpemVfdCBhbGxvY2F0aW9uU2l6ZUZv
ckxvY2Fscyh1bnNpZ25lZCBudW1iZXJPZkxvY2FscykKLSAgICB7Ci0gICAgICAgIHJldHVybiBv
ZmZzZXRPZkxvY2FscygpICsgbnVtYmVyT2ZMb2NhbHMgKiBzaXplb2YoV3JpdGVCYXJyaWVyPFVu
a25vd24+KTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUo
Vk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgcHJvdG90eXBlKTsKLQotICAgIHZvaWQgc2F2
ZShFeGVjU3RhdGUqLCBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlQ2FsbGVlTG9jYWxzKTsKLSAg
ICB2b2lkIHJlc3VtZShFeGVjU3RhdGUqLCBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlQ2FsbGVl
TG9jYWxzKTsKLQotcHJpdmF0ZToKLSAgICBHZW5lcmF0b3JGcmFtZShWTSYsIHNpemVfdCBudW1i
ZXJPZkNhbGxlZUxvY2Fscyk7Ci0KLSAgICBzaXplX3QgbV9udW1iZXJPZkNhbGxlZUxvY2FsczsK
LQotICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7Ci0KLSAgICB2b2lkIGZp
bmlzaENyZWF0aW9uKFZNJik7Ci0KLXByb3RlY3RlZDoKLSAgICBzdGF0aWMgdm9pZCB2aXNpdENo
aWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBKU0MK
LQotI2VuZGlmIC8vIEdlbmVyYXRvckZyYW1lX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2VuZXJhdG9yRnVuY3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2VuZXJhdG9yRnVuY3Rpb24uaAppbmRleCAzNmY2MWM1ZjIwZjU2YmVm
ZDZjNTU3ODQyYjE5ZTM5YjE5YTNhOTE5Li5hMWNiYWQ5NDZkYzU2ODI5ZWQxYTIxNTU3OTBiNDQw
YThkZjQzMDA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dl
bmVyYXRvckZ1bmN0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
ZW5lcmF0b3JGdW5jdGlvbi5oCkBAIC01NSw2ICs1NSwxNiBAQCBjbGFzcyBKU0dlbmVyYXRvckZ1
bmN0aW9uIDogcHVibGljIEpTRnVuY3Rpb24gewogICAgICAgICBFeGVjdXRpbmcgPSAtMiwKICAg
ICB9OwogCisgICAgLy8gW3RoaXNdLCBAZ2VuZXJhdG9yLCBAZ2VuZXJhdG9yU3RhdGUsIEBnZW5l
cmF0b3JWYWx1ZSwgQGdlbmVyYXRvclJlc3VtZU1vZGUsIEBnZW5lcmF0b3JGcmFtZS4KKyAgICBl
bnVtIGNsYXNzIEdlbmVyYXRvckFyZ3VtZW50IDogaW50MzJfdCB7CisgICAgICAgIFRoaXNWYWx1
ZSA9IDAsCisgICAgICAgIEdlbmVyYXRvciA9IDEsCisgICAgICAgIFN0YXRlID0gMiwKKyAgICAg
ICAgVmFsdWUgPSAzLAorICAgICAgICBSZXN1bWVNb2RlID0gNCwKKyAgICAgICAgRnJhbWUgPSA1
LAorICAgIH07CisKICAgICBjb25zdCBzdGF0aWMgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBC
YXNlOjpTdHJ1Y3R1cmVGbGFnczsKIAogICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXggYjFmZjQyNDhhMzQ4NGE0Y2JiYzIwNWMzMmQ0
ZDA0YzE2MDYwY2FjNi4uODVlNjdmZmI1OTY0NGQzYjU0MzMyNTdiN2NiMGVkMWRkMGU2OWNkYyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtNDYsNyArNDYsNiBAQAogI2lu
Y2x1ZGUgIkZUTFRodW5rcy5oIgogI2luY2x1ZGUgIkZ1bmN0aW9uQ29uc3RydWN0b3IuaCIKICNp
bmNsdWRlICJHQ0FjdGl2aXR5Q2FsbGJhY2suaCIKLSNpbmNsdWRlICJHZW5lcmF0b3JGcmFtZS5o
IgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIkhlYXAuaCIKICNpbmNsdWRl
ICJIZWFwSXRlcmF0aW9uU2NvcGUuaCIKQEAgLTI0MCw3ICsyMzksNiBAQCBWTTo6Vk0oVk1UeXBl
IHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgaW5mZXJyZWRUeXBlU3RydWN0dXJlLnNl
dCgqdGhpcywgSW5mZXJyZWRUeXBlOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgp
KSk7CiAgICAgaW5mZXJyZWRUeXBlVGFibGVTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBJbmZlcnJlZFR5
cGVUYWJsZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIGZ1bmN0
aW9uUmFyZURhdGFTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBGdW5jdGlvblJhcmVEYXRhOjpjcmVhdGVT
dHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7Ci0gICAgZ2VuZXJhdG9yRnJhbWVTdHJ1Y3R1
cmUuc2V0KCp0aGlzLCBHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBq
c051bGwoKSkpOwogICAgIGV4Y2VwdGlvblN0cnVjdHVyZS5zZXQoKnRoaXMsIEV4Y2VwdGlvbjo6
Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIHByb21pc2VEZWZlcnJl
ZFN0cnVjdHVyZS5zZXQoKnRoaXMsIEpTUHJvbWlzZURlZmVycmVkOjpjcmVhdGVTdHJ1Y3R1cmUo
KnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgaW50ZXJuYWxQcm9taXNlRGVmZXJyZWRTdHJ1Y3R1
cmUuc2V0KCp0aGlzLCBKU0ludGVybmFsUHJvbWlzZURlZmVycmVkOjpjcmVhdGVTdHJ1Y3R1cmUo
KnRoaXMsIDAsIGpzTnVsbCgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAppbmRleCBm
MGRlMTUxMzVhOTA3ODc4YjQ3YTFkMzQzNGY2ODI5MWNiNWRjNzNlLi40ZmY5ZWRkMGE3NzQ2YzI5
ZTVlNjdjMzgxZmNlM2IyMDc0Nzk5NTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgK
QEAgLTMxNiw3ICszMTYsNiBAQCBjbGFzcyBWTSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRl
ZDxWTT4gewogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGluZmVycmVkVHlwZVN0cnVjdHVyZTsKICAg
ICBTdHJvbmc8U3RydWN0dXJlPiBpbmZlcnJlZFR5cGVUYWJsZVN0cnVjdHVyZTsKICAgICBTdHJv
bmc8U3RydWN0dXJlPiBmdW5jdGlvblJhcmVEYXRhU3RydWN0dXJlOwotICAgIFN0cm9uZzxTdHJ1
Y3R1cmU+IGdlbmVyYXRvckZyYW1lU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGV4
Y2VwdGlvblN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBwcm9taXNlRGVmZXJyZWRT
dHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gaW50ZXJuYWxQcm9taXNlRGVmZXJyZWRT
dHJ1Y3R1cmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNz
L2dlbmVyYXRvci1maWItZnRsLWFuZC1hcnJheS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwtYW5kLWFycmF5LmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZl
OTM5ODEyZmRiYWVjNmI4MzJiZmQwMGYyMTUzZGVmODRiYjc1OTIKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLWFu
ZC1hcnJheS5qcwpAQCAtMCwwICsxLDIzIEBACisoZnVuY3Rpb24gKCkgeworICAgIGZ1bmN0aW9u
ICpmaWIoKQorICAgIHsKKyAgICAgICAgbGV0IGEgPSAxOworICAgICAgICBsZXQgYiA9IDE7Cisg
ICAgICAgIGxldCBjID0gWyAwIF07CisgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAg
ICBjWzBdID0gYTsKKyAgICAgICAgICAgIHlpZWxkIGM7CisgICAgICAgICAgICBbYSwgYl0gPSBb
YiwgYSArIGJdOworICAgICAgICB9CisgICAgfQorCisgICAgbGV0IHZhbHVlID0gMDsKKyAgICBm
b3IgKGxldCBpID0gMDsgaSA8IDFlNDsgKytpKSB7CisgICAgICAgIGxldCBmID0gZmliKCk7Cisg
ICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwOyArK2kpIHsKKyAgICAgICAgICAgIHZhbHVl
ID0gZi5uZXh0KCkudmFsdWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHZhbHVlWzBdICE9PSAz
NTQyMjQ4NDgxNzkyNjIwMDAwMDApCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCB2
YWx1ZToke3Jlc3VsdH1gKTsKKyAgICB9Cit9KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQtb2JqZWN0LmpzIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQt
b2JqZWN0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY2NzM0MGYyZWE0Yzc0MzhhMmQyMDlhYTQwZDA2NzdlNGFi
N2QzZmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3Ry
ZXNzL2dlbmVyYXRvci1maWItZnRsLWFuZC1vYmplY3QuanMKQEAgLTAsMCArMSwyMyBAQAorKGZ1
bmN0aW9uICgpIHsKKyAgICBmdW5jdGlvbiAqZmliKCkKKyAgICB7CisgICAgICAgIGxldCBhID0g
MTsKKyAgICAgICAgbGV0IGIgPSAxOworICAgICAgICBsZXQgYyA9IHsgZmliOiAwIH07CisgICAg
ICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICBjLmZpYiA9IGE7CisgICAgICAgICAgICB5
aWVsZCBjOworICAgICAgICAgICAgW2EsIGJdID0gW2IsIGEgKyBiXTsKKyAgICAgICAgfQorICAg
IH0KKworICAgIGxldCB2YWx1ZSA9IDA7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxZTQ7ICsr
aSkgeworICAgICAgICBsZXQgZiA9IGZpYigpOworICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8
IDEwMDsgKytpKSB7CisgICAgICAgICAgICB2YWx1ZSA9IGYubmV4dCgpLnZhbHVlOworICAgICAg
ICB9CisgICAgICAgIGlmICh2YWx1ZS5maWIgIT09IDM1NDIyNDg0ODE3OTI2MjAwMDAwMCkKKyAg
ICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIHZhbHVlOiR7cmVzdWx0fWApOworICAgIH0K
K30oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dl
bmVyYXRvci1maWItZnRsLWFuZC1zdHJpbmcuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLWFuZC1zdHJpbmcuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDM4
YWU2YWIzMzQ3MDQ2ODIyODQ5ZjQzMDA0ZWE1YzQwM2VlZGEyOAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwtYW5k
LXN0cmluZy5qcwpAQCAtMCwwICsxLDIyIEBACisoZnVuY3Rpb24gKCkgeworICAgIGZ1bmN0aW9u
ICpmaWIoKQorICAgIHsKKyAgICAgICAgbGV0IGEgPSAxOworICAgICAgICBsZXQgYiA9IDE7Cisg
ICAgICAgIGxldCBjID0gIlJlc3VsdCEgIjsKKyAgICAgICAgd2hpbGUgKHRydWUpIHsKKyAgICAg
ICAgICAgIHlpZWxkIGMgKyBhOworICAgICAgICAgICAgW2EsIGJdID0gW2IsIGEgKyBiXTsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIGxldCB2YWx1ZSA9IDA7CisgICAgZm9yIChsZXQgaSA9IDA7
IGkgPCAxZTQ7ICsraSkgeworICAgICAgICBsZXQgZiA9IGZpYigpOworICAgICAgICBmb3IgKGxl
dCBpID0gMDsgaSA8IDEwMDsgKytpKSB7CisgICAgICAgICAgICB2YWx1ZSA9IGYubmV4dCgpLnZh
bHVlOworICAgICAgICB9CisgICAgICAgIGlmICh2YWx1ZSAhPT0gYFJlc3VsdCEgMzU0MjI0ODQ4
MTc5MjYyMDAwMDAwYCkKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIHZhbHVlOiR7
cmVzdWx0fWApOworICAgIH0KK30oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLmpzIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNDBlMzNk
YmM4NjhiZWE3YTg5M2M5ZWMxNmI3NzllYzI2YmRiMTljCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC5qcwpAQCAt
MCwwICsxLDIxIEBACisoZnVuY3Rpb24gKCkgeworICAgIGZ1bmN0aW9uICpmaWIoKQorICAgIHsK
KyAgICAgICAgbGV0IGEgPSAxOworICAgICAgICBsZXQgYiA9IDE7CisgICAgICAgIHdoaWxlICh0
cnVlKSB7CisgICAgICAgICAgICB5aWVsZCBhOworICAgICAgICAgICAgW2EsIGJdID0gW2IsIGEg
KyBiXTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGxldCB2YWx1ZSA9IDA7CisgICAgZm9yIChs
ZXQgaSA9IDA7IGkgPCAxZTQ7ICsraSkgeworICAgICAgICBsZXQgZiA9IGZpYigpOworICAgICAg
ICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDsgKytpKSB7CisgICAgICAgICAgICB2YWx1ZSA9IGYu
bmV4dCgpLnZhbHVlOworICAgICAgICB9CisgICAgICAgIGlmICh2YWx1ZSAhPT0gMzU0MjI0ODQ4
MTc5MjYyMDAwMDAwKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgdmFsdWU6JHty
ZXN1bHR9YCk7CisgICAgfQorfSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZyYW1lLWVtcHR5LmpzIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZnJhbWUtZW1wdHkuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NTllODg1NWJmYWMzYzU2ZGY5MjZhYmQ0MjhjMDEzYzMzNDE2Mjc0NgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZyYW1lLWVt
cHR5LmpzCkBAIC0wLDAgKzEsMzQgQEAKK2Z1bmN0aW9uIHNob3VsZFRocm93KGZ1bmMsIGVycm9y
TWVzc2FnZSkgeworICAgIHZhciBlcnJvclRocm93biA9IGZhbHNlOworICAgIHZhciBlcnJvciA9
IG51bGw7CisgICAgdHJ5IHsKKyAgICAgICAgZnVuYygpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAg
ICAgICAgZXJyb3JUaHJvd24gPSB0cnVlOworICAgICAgICBlcnJvciA9IGU7CisgICAgfQorICAg
IGlmICghZXJyb3JUaHJvd24pCisgICAgICAgIHRocm93IG5ldyBFcnJvcignbm90IHRocm93bicp
OworICAgIGlmIChTdHJpbmcoZXJyb3IpICE9PSBlcnJvck1lc3NhZ2UpCisgICAgICAgIHRocm93
IG5ldyBFcnJvcihgYmFkIGVycm9yOiAke1N0cmluZyhlcnJvcil9YCk7Cit9CisKK3Nob3VsZFRo
cm93KGZ1bmN0aW9uICgpIHsKKyAgICBmdW5jdGlvbiAqZmliKGZsYWcpCisgICAgeworICAgICAg
ICBsZXQgYSA9IDE7CisgICAgICAgIGxldCBiID0gMTsKKyAgICAgICAgeWllbGQgNDI7CisgICAg
ICAgIGlmIChmbGFnKQorICAgICAgICAgICAgcmV0dXJuIGM7CisgICAgICAgIGxldCBjID0gNTAw
OworICAgIH0KKworICAgIGxldCB2YWx1ZSA9IDA7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAx
ZTQ7ICsraSkgeworICAgICAgICBmb3IgKGxldCB2IG9mIGZpYihmYWxzZSkpIHsKKyAgICAgICAg
fQorICAgIH0KKyAgICBmb3IgKGxldCB2IG9mIGZpYih0cnVlKSkgeworICAgIH0KK30sIGBSZWZl
cmVuY2VFcnJvcjogQ2Fubm90IGFjY2VzcyB1bmluaXRpYWxpemVkIHZhcmlhYmxlLmApOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItcmVk
dWNlZC1zYXZlLXBvaW50LXB1dC10by1zY29wZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXJlZHVjZWQtc2F2ZS1wb2ludC1wdXQtdG8tc2NvcGUuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYzBjNzVmYTQ5MTQzYzE3YmUxNGYzMjgxZTNmNjU0MzRmMzUxMzllOAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJh
dG9yLXJlZHVjZWQtc2F2ZS1wb2ludC1wdXQtdG8tc2NvcGUuanMKQEAgLTAsMCArMSwyOCBAQAor
ZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09
IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCB2YWx1ZTogJHtTdHJpbmco
YWN0dWFsKX1gKTsKK30KKworZnVuY3Rpb24gZXJyb3IoKQoreworICAgIHRocm93ICJvayI7Cit9
CisKK2Z1bmN0aW9uKiBnZW4oKQoreworICAgIHZhciB2YWx1ZSA9IDQyOworICAgIHRyeSB7Cisg
ICAgICAgIHlpZWxkIDMwMDsKKyAgICAgICAgdmFsdWUgPSA1MDA7CisgICAgICAgIGVycm9yKCk7
CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICB5aWVsZCA0MjsKKyAgICAgICAgcmV0dXJuIHZh
bHVlOworICAgIH0KKyAgICByZXR1cm4gMjAwOworfQorCit2YXIgZyA9IGdlbigpOworc2hvdWxk
QmUoZy5uZXh0KCkudmFsdWUsIDMwMCk7CitzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgNDIpOwor
c2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIDUwMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci10cmFuc2Zlci1yZWdpc3Rlci1iZXlvbmQt
bXV0aXBsZS15aWVsZHMuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dl
bmVyYXRvci10cmFuc2Zlci1yZWdpc3Rlci1iZXlvbmQtbXV0aXBsZS15aWVsZHMuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZmUyMDhmNTgxMjk2ZjlhZTA4YTZiZmIzOThiNDgyMjU3NDJkNmI3OAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXRy
YW5zZmVyLXJlZ2lzdGVyLWJleW9uZC1tdXRpcGxlLXlpZWxkcy5qcwpAQCAtMCwwICsxLDE4IEBA
CitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAh
PT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0
dWFsKTsKK30KKworCitmdW5jdGlvbiAqZ2VuKCkKK3sKKyAgICB2YXIgdGVzdCA9IDQyOworICAg
IHlpZWxkIDMyOworICAgIHlpZWxkIDMzOworICAgIHlpZWxkIHRlc3Q7Cit9CisKK3ZhciBnID0g
Z2VuKCk7CitzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgMzIpOworc2hvdWxkQmUoZy5uZXh0KCku
dmFsdWUsIDMzKTsKK3Nob3VsZEJlKGcubmV4dCgpLnZhbHVlLCA0Mik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi9GYXN0Qml0VmVjdG9yLmggYi9Tb3VyY2UvV1RGL3d0Zi9GYXN0Qml0VmVj
dG9yLmgKaW5kZXggOThmZmY1Y2Y3MzUzZTZiYzY3ZGE1YzU1OTQwY2NjZTRlNGIxNTZkMC4uZmYw
MGI3YjU0ZDRhMGNmZjRiZWY3ZDAzODU0ZGU2YjkwY2UxZGI5MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvRmFzdEJpdFZlY3Rvci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0Zhc3RCaXRWZWN0
b3IuaApAQCAtMjMsOCArMjMsNyBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAotI2lmbmRlZiBG
YXN0Qml0VmVjdG9yX2gKLSNkZWZpbmUgRmFzdEJpdFZlY3Rvcl9oCisjcHJhZ21hIG9uY2UKIAog
I2luY2x1ZGUgPHN0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CkBAIC0zNiwx
MiArMzUsMTQgQEAgY2xhc3MgUHJpbnRTdHJlYW07CiAKIGNsYXNzIEZhc3RCaXRWZWN0b3Igewog
cHVibGljOgotICAgIEZhc3RCaXRWZWN0b3IoKQotICAgICAgICA6IG1fYXJyYXkoMCkKLSAgICAg
ICAgLCBtX251bUJpdHMoMCkKKyAgICBGYXN0Qml0VmVjdG9yKCkgPSBkZWZhdWx0OworCisgICAg
RmFzdEJpdFZlY3RvcihGYXN0Qml0VmVjdG9yJiYgb3RoZXIpCisgICAgICAgIDogbV9hcnJheShz
dGQ6OmV4Y2hhbmdlKG90aGVyLm1fYXJyYXksIG51bGxwdHIpKQorICAgICAgICAsIG1fbnVtQml0
cyhzdGQ6OmV4Y2hhbmdlKG90aGVyLm1fbnVtQml0cywgMCkpCiAgICAgewogICAgIH0KLSAgICAK
KwogICAgIEZhc3RCaXRWZWN0b3IoY29uc3QgRmFzdEJpdFZlY3RvciYgb3RoZXIpCiAgICAgICAg
IDogbV9hcnJheSgwKQogICAgICAgICAsIG1fbnVtQml0cygwKQpAQCAtMjAyLDEzICsyMDMsMTAg
QEAgY2xhc3MgRmFzdEJpdFZlY3RvciB7CiAgICAgc3RhdGljIHNpemVfdCBhcnJheUxlbmd0aChz
aXplX3QgbnVtQml0cykgeyByZXR1cm4gKG51bUJpdHMgKyAzMSkgPj4gNTsgfQogICAgIHNpemVf
dCBhcnJheUxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIGFycmF5TGVuZ3RoKG1fbnVtQml0cyk7IH0K
ICAgICAKLSAgICB1aW50MzJfdCogbV9hcnJheTsgLy8gTm8sIHRoaXMgY2FuJ3QgYmUgYW4gc3Rk
Ojp1bmlxdWVfcHRyPHVpbnQzMl90W10+LgotICAgIHNpemVfdCBtX251bUJpdHM7CisgICAgdWlu
dDMyX3QqIG1fYXJyYXkgeyBudWxscHRyIH07IC8vIE5vLCB0aGlzIGNhbid0IGJlIGFuIHN0ZDo6
dW5pcXVlX3B0cjx1aW50MzJfdFtdPi4KKyAgICBzaXplX3QgbV9udW1CaXRzIHsgMCB9OwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV1RGCiAKIHVzaW5nIFdURjo6RmFzdEJpdFZlY3RvcjsKLQotI2Vu
ZGlmIC8vIEZhc3RCaXRWZWN0b3JfaAotCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>285565</attachid>
            <date>2016-08-08 07:57:14 -0700</date>
            <delta_ts>2016-08-09 01:17:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-152723-20160808235541.patch</filename>
            <type>text/plain</type>
            <size>244155</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA0MjUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
YzY4YzkyYmY5ZDJjMzFiM2RlMTE1MWM3MzkzMDM5ODdjYjIyMmYxLi5lNTliNWNkNDY5NmNiMGNm
MjQ2OTQ4NDBlZjc0ZjE4OTI0MzE1MGYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMjUgQEAKKzIwMTYtMDgtMDggIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0RGR11bRlRMXSBJbXBsZW1lbnQgRVM2IEdlbmVyYXRvcnMgaW4g
REZHIC8gRlRMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNTI3MjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUaGlzIHBhdGNoIGludHJvZHVjZXMgREZHIGFuZCBGVEwgc3VwcG9ydCBmb3IgRVM2IGdlbmVy
YXRvcnMuCisgICAgICAgIEVTNiBnZW5lcmF0b3IgaXMgY29tcGlsZWQgYnkgdGhlIEJ5dGVjb2Rl
R2VuZXJhdG9yLiBCdXQgYXQgdGhlIGxhc3QgcGhhc2UsIEJ5dGVjb2RlR2VuZXJhdG9yIHBlcmZv
cm1zICJnZW5lcmF0b3JpZmljYXRpb24iIG9udG8gdGhlIHVubGlua2VkIGNvZGUuCisgICAgICAg
IEluIEJ5dGVjb2RlR2VuZXJhdG9yIHBoYXNlLCB3ZSBpbnNlcnRlZCBzZXZlcmFsIHNwZWNpYWwg
bWFya2VycyBmb3IgdGhlIGdlbmVyYXRvcnMsIG9wX3NhdmUgYW5kIG9wX3Jlc3VtZS4KKyAgICAg
ICAgVGhlIG9wX3NhdmUsIG9wX3Jlc3VtZSwgYW5kIHRoZSBtZXJnZSBwb2ludCBibG9jayBhcmUg
Y29ubmVjdGVkIGFzIGZvbGxvd3MuCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBvcF9yZXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBeCisgICAgICAgIGVudHJ5IC0+IGdlbmVyYXRvciBzd2l0Y2ggLS0tLT4gb3Bfc2F2ZSAtPiBt
ZXJnZSBwb2ludCAtPiAuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBeCisgICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0t
LT4gb3BfcmVzdW1lIC0tLS0tKworCisgICAgICAgIEluIHRoZSBnZW5lcmF0b3JpZmljYXRpb24g
cGhhc2UsIHdlIHR1cm4gb3V0IHdoaWNoIHZhcmlhYmxlcyBzaG91bGQgYmUgc2F2ZWQgYW5kIHJl
c3VtZWQgYXQgZWFjaCBvcF9zYXZlIGFuZCBvcF9yZXN1bWUsIGFuZCBjb252ZXJ0IHRoZXNlIGJ5
dGVjb2RlcworICAgICAgICB0byB0aGUgc2VxdWVuY2VzIG9mIHRoZSBnZXRfZnJvbV9zY29wZSBh
bmQgcHV0X3RvX3Njb3BlLiBUaGUgcmVnaXN0ZXJzIGFyZSBzYXZlZCBhbmQgcmVzdW1lZCBvdmVy
IHRoZSBnZW5lcmF0b3IncyBuZXh0KCkgY2FsbHMgYnkgdXNpbmcgdGhpcyBzcGVjaWFsCisgICAg
ICAgIGdlbmVyYXRvciBmcmFtZSBzY29wZS4KKworICAgICAgICBJbiB0aGUgZ2VuZXJhdG9yaWZp
Y2F0aW9uIHBoYXNlLAorCisgICAgICAgIDEuIFdlIGNvbnN0cnVjdCB0aGUgQnl0ZWNvZGVHcmFw
aCBmcm9tIHRoZSB1bmxpbmtlZCBpbnN0cnVjdGlvbnMuIFRoaXMgY29uc3RydWN0cyB0aGUgYmFz
aWMgYmxvY2tzLCBhbmQgaXQgaXMgdXNlZCBpbiB0aGUgc3Vic2VxdWVudCBhbmFseXNpcy4KKyAg
ICAgICAgMi4gV2UgcGVyZm9ybSB0aGUgYW5hbHlzaXMgb250byB0aGUgdW5saW5rZWQgY29kZS4g
V2UgaGF2ZSAzIGFuYWx5c2lzOiB0aGUgbGl2ZW5lc3MgYW5hbHlzaXMsIHRoZSBzYXZlZCB2YXJp
YWJsZXMgYW5hbHlzaXMsIGFuZCB0aGUgcmVzdW1lZCB2YXJpYWJsZXMgYW5hbHlzaXMuCisgICAg
ICAgICAgIEZpcnN0LCBpbiB0aGUgbGl2ZW5lc3MgYW5hbHlzaXMsIHdlIGV4dHJhY3QgdGhlIGxp
dmUgdmFyaWFibGVzIGF0IGVhY2ggbWVyZ2UgcG9pbnQuIFRoZXNlIHZhcmlhYmxlcyBzaG91bGQg
YmUgY29uc2lkZXJlZCBhcyB0aGUgY29uc2VydmF0aXZlIHJlZ2lzdGVycworICAgICAgICAgICB0
byBiZSBzYXZlZCBhbmQgcmVzdW1lZCBhdCBlYWNoIHBvaW50LgorICAgICAgICAzLiBTZWNvbmQs
IHdlIGRyaXZlIHRoZSBmb3J3YXJkIGFuYWx5c2lzLCBjYWxsZWQgdGhlIHNhdmVkIHZhcmlhYmxl
cyBhbmFseXNpcy4gVGhpcyB0aW1lLCB3ZSBleHBsaWNpdGx5IGlnbm9yZSB0aGUgZWRnZXMgYmV0
d2VlbiB0aGUgc2F2ZSBwb2ludHMgYW5kIHRoZSBtZXJnZSBwb2ludHMuCisgICAgICAgICAgIEF0
IG9wX3NhdmUsIHdlIHNob3VsZCBzYXZlIHRoZSB2YXJpYWJsZXMgdGhhdCAoaSkgd2lsbCBiZSB1
c2VkIGFmdGVyIHRoZSBtZXJnZSBwb2ludCBBTkQgKGlpKSB0aGUgbmV3bHkgZGVmaW5lZCB2YXJp
YWJsZXMgZnJvbSB0aGUgcHJldmlvdXMgb3BfcmVzdW1lLiBTbywgd2UgcHJvcGFnYXRlCisgICAg
ICAgICAgIHRoZSBkZWZzIGFuZCBjb2xsZWN0IHRoZSBuZXdseSBkZWZpbmVkIHJlZ2lzdGVycyBh
dCBlYWNoIG9wX3NhdmUgcG9pbnQgaW4gdGhlIGdyYXBoLiBUaGlzIHJlc3VsdCByZXByZXNlbnRz
IChpaSkuIFNvIHRoZW4sIHdlIGZpbHRlciB0aGUgbGl2ZSB2YXJpYWJsZXMgKGkpIChnYWluZWQg
aW4gKDIpKQorICAgICAgICAgICBhdCBlYWNoIG1lcmdlIHBvaW50IHdpdGggdGhpcyBuZXdseSBk
ZWYtZWQgcmVnaXN0ZXJzIGJpdCBtYXNrKGlpKS4KKyAgICAgICAgICAgT25lIGltcG9ydGFudCB0
aGluZyBvZiB0aGlzIGFuYWx5c2lzIGlzIHRoYXQsIHdlIGNvbnNpZGVycyB0aGUgYmFzaWMgYmxv
Y2tzIHdoaWNoIHJhbmdlIG92ZXJsYXBzIHRoZSB0cnktcmFuZ2UgYXMgdGhlIGltcGxpY2l0IHBy
ZWRlY2Vzc29ycyBvZiB0aGUgaGFuZGxlcnMuCisgICAgICAgICAgIFdoZW4gcHJvcGFnYXRpbmcg
dGhlIG91dGdvaW5nIHJlc3VsdHMsIHRoZSBoYW5kbGVyIG1lcmdlcyBhbGwgdGhlIHByZWRlY2Vz
c29ycycgb3V0IHNldHMuIFRoaXMgaXMgYSBsaXR0bGUgYml0IGNvbnNlcnZhdGl2ZSBiZWNhdXNl
IHRoZSB0cnktcmFuZ2UgbWF5IG5vdCBjb3ZlciBhbGwKKyAgICAgICAgICAgdGhlIHBhcnQgb2Yg
dGhlIGltcGxpY2l0IHByZWRlY2Vzc29ycy4gU28gb3Bfc2F2ZSBjb3VsZCBzYXZlIHRoZSB2YXJp
YWJsZXMgY29uc2VydmF0aXZlbHkuCisgICAgICAgIDQuIFRoaXJkLCB3ZSBwZXJmb3JtIHRoZSBs
aXZlbmVzcyBhbmFseXNpcyBhZ2FpbiwgYnV0IG9udG8gdGhlIGdyYXBoIHdoaWNoIGRyb3BzIHRo
ZSBlZGdlcyBiZXR3ZWVuIHRoZSBzYXZlIHBvaW50cyBhbmQgdGhlIG1lcmdlIHBvaW50cy4gVGhp
cyBhbmFseXNpcywgcmVmZXJyZWQgdG8gYXMKKyAgICAgICAgICAgdGhlIHJlc3VtZWQgdmFyaWFi
bGVzIGFuYWx5c2lzLCBleHRyYWN0cyB0aGUgbGl2ZW5lc3MgYXQgZWFjaCBtZXJnZSBwb2ludC4g
VGhpcyBsaXZlbmVzcyBpbmZvcm1hdGlvbiBvbmx5IGNvbnNpZGVycyB0aGUgcmVhY2hhYmxlIGJs
b2NrcyBmcm9tIHRoZSB0YXJnZXQgb3BfcmVzdW1lLgorICAgICAgICAgICBTbywgdGhpcyByZWdp
c3RlciBzZXQgcmVwcmVzZW50cyB0aGUgc2F2ZWQgcmVnaXN0ZXJzIHdoaWNoIHRoZSByZWFjaGFi
bGUgYmxvY2tzIHVzZS4gV2UgY29uc2lkZXIgdGhlc2UgcmVnaXN0ZXJzIGFzIHRoZSByZWdpc3Rl
cnMgdG8gYmUgcmVzdW1lZCBoZXJlLgorICAgICAgICAgICBUaGlzIGFuYWx5c2lzIHNob3VsZCBi
ZSBkb25lIGFmdGVyICgzKSBhbmQgc2hvdWxkIHVzZSAoMykncyByZXN1bHRzLiBUaGlzIGlzIGJl
Y2F1c2UgdGhlIG9wX3NhdmUgY291bGQgc2F2ZSB0aGUgdmFyaWFibGVzIGNvbnNlcnZhdGl2ZWx5
LiBTbyBvcF9yZXN1bWUgc2hvdWxkIHJlc3VtZQorICAgICAgICAgICB0aGUgdmFyaWFibGVzIHRo
YXQgaXMgc2F2ZWQgY29uc2VydmF0aXZlbHkgaW4gKDMpLgorICAgICAgICA1LiBXZSBpbnNlcnQg
dGhlIGdldF9mcm9tX3Njb3BlIGFuZCBwdXRfdG9fc2NvcGUgYXQgZWFjaCBvcF9zYXZlIGFuZCBv
cF9yZXN1bWUuIFdoaWNoIHJlZ2lzdGVycyBzaG91bGQgYmUgc2F2ZWQgYW5kIHJlc3VtZWQgaXMg
b2ZmZXJlZCBieSAoMykgYW5kICg0KS4KKyAgICAgICAgICAgVGhlbiwgY2xpcCB0aGUgb3Bfc2F2
ZSBhbmQgb3BfcmVzdW1lIHRoZW1zZWx2ZXMuIFRoZXkgYXJlIGV4ZWN1dGVkIGluIGEgYmF0Y2gg
bWFubmVyIGJ5IEJ5dGVjb2RlTW9kaWZpY2F0aW9uU2V0LiBTaW5jZSB0aGVzZSBtb2RpZmljYXRp
b24gY2hhbmdlcyB0aGUgYmFzaWMgYmxvY2tzCisgICAgICAgICAgIGFuZCBzaXplIG9mIHVubGlu
a2VkIGluc3RydWN0aW9ucywgQnl0ZWNvZGVNb2RpZmljYXRpb25TZXQgYWxzbyBwZXJmb3JtcyB0
aGUgb2Zmc2V0IGFkanVzdG1lbnQgZm9yIFVubGlua2VkQ29kZUJsb2NrLiBTbywgdGhpcyBCeXRl
Y29kZU1vZGlmaWNhdGlvblNldCBpcyBwZXJmb3JtZWQKKyAgICAgICAgICAgb250byB0aGUgQnl0
ZWNvZGVHcmFwaCBpbnN0ZWFkIG9mIEJ5dGVjb2RlQmFzaWNCbG9jay4gVGhlIHJlYXNvbiB3aHkg
d2UgdGFrZSB0aGlzIGRlc2lnbiBpcyBzaW1wbGU6IHdlIGRvbid0IHdhbnQgdG8gbmV3bHkgY3Jl
YXRlIHRoZSBiYXNpYyBibG9ja3MgYW5kIG9wY29kZXMKKyAgICAgICAgICAgZm9yIHRoaXMgZWFy
bHkgcGhhc2UgbGlrZSBERkcuIEluc3RlYWQsIHdlIHBlcmZvcm0gdGhlIG1vZGlmaWNhdGlvbiBh
bmQgYWRqdXN0bWVudCB0byB0aGUgdW5saW5rZWQgaW5zdHJ1Y3Rpb25zIGFuZCBVbmxpbmtlZENv
ZGVCbG9jayBpbiBhIGluLXBsYWNlIG1hbm5lci4KKworICAgICAgICBBZnRlciB0aGF0IHBoYXNl
LCB0aGUgZGF0YSBmbG93IG9mIHRoZSBnZW5lcmF0b3Itc2F2ZWQtYW5kLXJlc3VtZWQtcmVnaXN0
ZXJzIGFyZSBleHBsaWNpdGx5IHJlcHJlc2VudGVkIGJ5IHRoZSBnZXRfZnJvbV9zY29wZSBhbmQg
cHV0X3RvX3Njb3BlLgorICAgICAgICBBbmQgb3Bfc2F2ZSBhbmQgb3BfcmVzdW1lIGFyZSByZW1v
dmVkLiBTaW5jZSB3ZSB1c2UgdGhlIGV4aXN0aW5nIGJ5dGVjb2RlcywgREZHIGFuZCBGVEwgY2hh
bmdlcyBhcmUgbm90IG5lY2Vzc2FyeS4KKyAgICAgICAgVGhpcyBwYXRjaCBhbHNvIGRyb3BzIGRh
dGEgc3RydWN0dXJlcyBhbmQgaW1wbGVtZW50YXRpb25zIGZvciB0aGUgb2xkIGdlbmVyYXRvciwg
b3BfcmVzdW1lLCBvcF9zYXZlIGltcGxlbWVudGF0aW9ucyBhbmQgR2VuZXJhdG9yRnJhbWUuCisK
KyAgICAgICAgTm90ZSB0aGF0IHRoaXMgcGF0Y2ggZG9lcyBub3QgbGV2ZXJhZ2UgdGhlIHJlY2Vu
dCBtdWx0aSBlbnRyeXBvaW50cyBzdXBwb3J0IGluIEIzLiBBZnRlciB0aGlzIHBhdGNoIGlzIGlu
dHJvZHVjZWQsIHdlIHdpbGwgc3VibWl0IGEgbmV3IHBhdGNoIHRoYXQgbGV2ZXJhZ2VzIHRoZSBt
dWx0aQorICAgICAgICBlbnRyeXBvaW50cyBmb3IgZ2VuZXJhdG9yJ3MgcmVzdW1lIGFuZCBzZWVz
IHRoZSBwZXJmb3JtYW5jZSBnYWluLgorCisgICAgICAgIENvbXBpbGluZyBFUzYgZ2VuZXJhdG9y
cyBpbiBERkcgYW5kIEZUTCBnaXZlcyB1cyBzaWduaWZpY2FudCBwZXJmb3JtYW5jZSBpbXByb3Zl
bWVudHMuCisgICAgICAgIEluIHg2NCBMaW51eCBib3ggKGhhbmF5YW1hdGEpLCB0aGUgcmVzdWx0
IG9mIEpTQ09ubHkgcG9ydCBpcyB0aGUgZm9sbG93aW5ncy4KKworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlbGluZSAgICAgICAgICAg
ICAgICAgICBwYXRjaAorCisgICAgICAgICAgICBnZW5lcmF0b3ItZmliICAgICAgICAgICAgICAg
ICAgICAgICAgICAxMDkuMTg0NSstOC44OTA1ICAgICBeICAgICAzNS44NjM4Ky0wLjc1NjcgICAg
ICAgIF4gZGVmaW5pdGVseSAzLjA0NDR4IGZhc3RlcgorICAgICAgICAgICAgZ2VuZXJhdG9yLXdp
dGgtc2V2ZXJhbC10eXBlcyAgICAgICAgICAgMzUxLjgzNTQrLTE3LjM4OTggICAgXiAgICAxMzIu
MzIzOSstMTguNjMxMCAgICAgICBeIGRlZmluaXRlbHkgMi42NTg5eCBmYXN0ZXIKKyAgICAgICAg
ICAgIGdlbmVyYXRvci1zdW5zcGlkZXItYWNjZXNzLW5zaWV2ZSAgICAgICAgNS45MTM2Ky0wLjAy
NjggICAgIF4gICAgICA1LjAwOTArLTAuMDM5NCAgICAgICAgXiBkZWZpbml0ZWx5IDEuMTgwNngg
ZmFzdGVyCisKKyAgICAgICAgSW4geDY0IE9TIFggbGFwdG9wLCB0aGUgcmVzdWx0cyBvZiBFUzZT
YW1wbGVCZW5jaCBhcmUgdGhlIGZvbGxvd2luZ3MuCisgICAgICAgIFRoZSBFUzYgQmFzaWMgYmVu
Y2htYXJrIHNob3cgdGhhdCB0aGUgcGVyZm9ybWFuY2Ugb2YgdGhlIHBhdGNoZWQgb25lIGlzIDMz
JSBmYXN0ZXIgdGhhbiB0aGUgcGVyZm9ybWFuY2Ugb2YgdGhlIGJhc2VsaW5lLgorCisgICAgICAg
ICAgICBCYXNlbGluZToKKyAgICAgICAgICAgICAgICBHZW9tZXRyaWMgTWVhbiBSZXN1bHQ6IDE4
MS44MyBtcyDCsSA0LjgyIG1zCisKKyAgICAgICAgICAgICAgICBCZW5jaG1hcmsgICAgRmlyc3Qg
SXRlcmF0aW9uICAgICAgIFdvcnN0IDIlICAgICAgICAgICAgICBTdGVhZHkgU3RhdGUKKyAgICAg
ICAgICAgICAgICBBaXIgICAgICAgICAgNzAuNzQgbXMgwrEgNi41NSBtcyAgICAzNC43NCBtcyDC
sSAxLjY1IG1zICAgIDI5ODkuMDYgbXMgwrEgMzQuNDUgbXMKKyAgICAgICAgICAgICAgICBCYXNp
YyAgICAgICAgNDAuMDMgbXMgwrEgMS45NiBtcyAgICAyOC41MCBtcyDCsSAwLjYwIG1zICAgIDQz
NDIuOTEgbXMgwrEgNjQuMTAgbXMKKworICAgICAgICAgICAgUGF0Y2hlZDoKKyAgICAgICAgICAg
ICAgICBHZW9tZXRyaWMgTWVhbiBSZXN1bHQ6IDE2OC4xNCBtcyDCsSAxLjM5IG1zCisKKyAgICAg
ICAgICAgICAgICBCZW5jaG1hcmsgICAgRmlyc3QgSXRlcmF0aW9uICAgICAgIFdvcnN0IDIlICAg
ICAgICAgICAgICBTdGVhZHkgU3RhdGUKKyAgICAgICAgICAgICAgICBBaXIgICAgICAgICAgNjgu
NjcgbXMgwrEgMC44MiBtcyAgICAzNS42MiBtcyDCsSAwLjMyIG1zICAgIDMwNjUuODkgbXMgwrEg
NTUuNTkgbXMKKyAgICAgICAgICAgICAgICBCYXNpYyAgICAgICAgMzguNjEgbXMgwrEgMS42NSBt
cyAgICAyMy45NyBtcyDCsSAwLjM4IG1zICAgIDMyNjIuNDYgbXMgwrEgNzQuMTIgbXMKKworICAg
ICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYjMvQjNCYXNpY0Jsb2NrVXRpbHMuaDoKKyAg
ICAgICAgKiBiMy9CM0Jsb2NrV29ya2xpc3QuaDoKKyAgICAgICAgKiBiMy9CM0NGRy5oOgorICAg
ICAgICAqIGIzL0IzRHVwbGljYXRlVGFpbHMuY3BwOgorICAgICAgICAqIGIzL0IzRml4U1NBLmNw
cDoKKyAgICAgICAgKiBiMy9CM0ZpeFNTQS5oOgorICAgICAgICAqIGIzL0IzSW5kZXhNYXAuaDoK
KyAgICAgICAgKEpTQzo6QjM6OkluZGV4TWFwOjpJbmRleE1hcCk6IERlbGV0ZWQuCisgICAgICAg
IChKU0M6OkIzOjpJbmRleE1hcDo6cmVzaXplKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6
OkluZGV4TWFwOjpjbGVhcik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpJbmRleE1hcDo6
c2l6ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpJbmRleE1hcDo6b3BlcmF0b3JbXSk6
IERlbGV0ZWQuCisgICAgICAgICogYjMvQjNJbmRleFNldC5oOgorICAgICAgICAoSlNDOjpCMzo6
SW5kZXhTZXQ6OkluZGV4U2V0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkluZGV4U2V0
OjphZGQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6SW5kZXhTZXQ6OmFkZEFsbCk6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpJbmRleFNldDo6cmVtb3ZlKTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6QjM6OkluZGV4U2V0Ojpjb250YWlucyk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OkIzOjpJbmRleFNldDo6c2l6ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpJbmRl
eFNldDo6aXNFbXB0eSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpJbmRleFNldDo6SXRl
cmFibGU6Okl0ZXJhYmxlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkluZGV4U2V0OjpJ
dGVyYWJsZTo6aXRlcmF0b3I6Oml0ZXJhdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6
OkluZGV4U2V0OjpJdGVyYWJsZTo6aXRlcmF0b3I6Om9wZXJhdG9yKik6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OkIzOjpJbmRleFNldDo6SXRlcmFibGU6Oml0ZXJhdG9yOjpvcGVyYXRvcisrKTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkluZGV4U2V0OjpJdGVyYWJsZTo6aXRlcmF0b3I6
Om9wZXJhdG9yPT0pOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6SW5kZXhTZXQ6Okl0ZXJh
YmxlOjppdGVyYXRvcjo6b3BlcmF0b3IhPSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpJ
bmRleFNldDo6SXRlcmFibGU6OmJlZ2luKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6Oklu
ZGV4U2V0OjpJdGVyYWJsZTo6ZW5kKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkluZGV4
U2V0Ojp2YWx1ZXMpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6SW5kZXhTZXQ6OmluZGlj
ZXMpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6SW5kZXhTZXQ6OmR1bXApOiBEZWxldGVk
LgorICAgICAgICAqIGIzL0IzTG93ZXJUb0Fpci5jcHA6CisgICAgICAgICogYjMvQjNQaGlDaGls
ZHJlbi5oOgorICAgICAgICAqIGIzL0IzUHJvY2VkdXJlLmg6CisgICAgICAgIChKU0M6OkIzOjpQ
cm9jZWR1cmU6Oml0ZXJhdG9yOjppdGVyYXRvcik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIz
OjpQcm9jZWR1cmU6Oml0ZXJhdG9yOjpvcGVyYXRvciopOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpCMzo6UHJvY2VkdXJlOjppdGVyYXRvcjo6b3BlcmF0b3IrKyk6IERlbGV0ZWQuCisgICAgICAg
IChKU0M6OkIzOjpQcm9jZWR1cmU6Oml0ZXJhdG9yOjpvcGVyYXRvcj09KTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6QjM6OlByb2NlZHVyZTo6aXRlcmF0b3I6Om9wZXJhdG9yIT0pOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpCMzo6UHJvY2VkdXJlOjppdGVyYXRvcjo6ZmluZE5leHQpOiBEZWxl
dGVkLgorICAgICAgICAqIGIzL0IzUmVkdWNlRG91YmxlVG9GbG9hdC5jcHA6CisgICAgICAgICog
YjMvQjNSZWR1Y2VTdHJlbmd0aC5jcHA6CisgICAgICAgICogYjMvQjNTU0FDYWxjdWxhdG9yLmg6
CisgICAgICAgICogYjMvQjNVc2VDb3VudHMuaDoKKyAgICAgICAgKiBiMy9haXIvQWlyQ29kZS5o
OgorICAgICAgICAqIGIzL2Fpci9BaXJFbGltaW5hdGVEZWFkQ29kZS5jcHA6CisgICAgICAgICog
YjMvYWlyL0FpckZpeE9idmlvdXNTcGlsbHMuY3BwOgorICAgICAgICAqIGIzL2Fpci9BaXJGaXhQ
YXJ0aWFsUmVnaXN0ZXJTdGFsbHMuY3BwOgorICAgICAgICAqIGIzL2Fpci9BaXJHZW5lcmF0ZS5j
cHA6CisgICAgICAgICogYjMvYWlyL0FpckdlbmVyYXRpb25Db250ZXh0Lmg6CisgICAgICAgICog
YjMvYWlyL0FpckxpdmVuZXNzLmg6CisgICAgICAgICogYjMvYWlyL0FpclNwaWxsRXZlcnl0aGlu
Zy5jcHA6CisgICAgICAgICogYnVpbHRpbnMvR2VuZXJhdG9yUHJvdG90eXBlLmpzOgorICAgICAg
ICAoZ2xvYmFsUHJpdmF0ZS5nZW5lcmF0b3JSZXN1bWUpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5
dGVjb2RlQmFzaWNCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlQmFzaWNCbG9jazo6
Y29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3NJbnRlcm5hbCk6CisgICAgICAgIChKU0M6OkJ5dGVj
b2RlQmFzaWNCbG9jazo6Y29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MpOgorICAgICAgICAoSlND
OjpsaW5rQmxvY2tzKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Y29tcHV0ZUJ5dGVjb2RlQmFz
aWNCbG9ja3MpOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9j
ay5oOgorICAgICAgICAoSlNDOjpCeXRlY29kZUJhc2ljQmxvY2s6OmJ5dGVjb2RlT2Zmc2V0cyk6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlQmFzaWNCbG9jazo6c3VjY2Vzc29ycyk6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlQmFzaWNCbG9jazo6cHJlZGVjZXNzb3JzKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVCYXNpY0Jsb2NrOjppbmRleCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlQmFzaWNC
bG9jazo6YWRkU3VjY2Vzc29yKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVCYXNpY0Jsb2NrOjph
ZGRQcmVkZWNlc3Nvcik6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmlj
YXRpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRp
b246OkJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVH
ZW5lcmF0b3JpZmljYXRpb246OmlzTWVyZ2VCbG9jayk6CisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
R2VuZXJhdG9yaWZpY2F0aW9uOjppc1NhdmVCbG9jayk6CisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
R2VuZXJhdG9yaWZpY2F0aW9uOjpncmFwaCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJh
dG9yaWZpY2F0aW9uOjp5aWVsZHMpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcmlm
aWNhdGlvbjo6c3RvcmFnZUZvckdlbmVyYXRvckxvY2FsKToKKyAgICAgICAgKEpTQzo6R2VuZXJh
dG9yTGl2ZW5lc3NBbmFseXNpczo6R2VuZXJhdG9yTGl2ZW5lc3NBbmFseXNpcyk6CisgICAgICAg
IChKU0M6OkdlbmVyYXRvckxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVP
ZmZzZXQpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JMaXZlbmVzc0FuYWx5c2lzOjpjb21wdXRl
VXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yTGl2ZW5lc3NB
bmFseXNpczo6cnVuKToKKyAgICAgICAgKEpTQzo6U2F2ZWRWYXJpYWJsZXNBbmFseXNpczo6U2F2
ZWRWYXJpYWJsZXNBbmFseXNpcyk6CisgICAgICAgIChKU0M6OlNhdmVkVmFyaWFibGVzQW5hbHlz
aXM6OnN0ZXBPdmVySW5zdHJ1Y3Rpb24pOgorICAgICAgICAoSlNDOjpTYXZlZFZhcmlhYmxlc0Fu
YWx5c2lzOjpjb21wdXRlTG9jYWxTYXZlZFZhcmlhYmxlc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAg
ICAgICAgKEpTQzo6U2F2ZWRWYXJpYWJsZXNBbmFseXNpczo6Y29tcHV0ZUxvY2FsU2F2ZWRWYXJp
YWJsZXNGb3JCbG9jayk6CisgICAgICAgIChKU0M6OlNhdmVkVmFyaWFibGVzQW5hbHlzaXM6Omdl
dFNhdmVkVmFyaWFibGVzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpTYXZl
ZFZhcmlhYmxlc0FuYWx5c2lzOjpydW4pOgorICAgICAgICAoSlNDOjpSZXN1bWVkVmFyaWFibGVz
QW5hbHlzaXM6OlJlc3VtZWRWYXJpYWJsZXNBbmFseXNpcyk6CisgICAgICAgIChKU0M6OlJlc3Vt
ZWRWYXJpYWJsZXNBbmFseXNpczo6Y29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldCk6CisgICAg
ICAgIChKU0M6OlJlc3VtZWRWYXJpYWJsZXNBbmFseXNpczo6Y29tcHV0ZVVzZXNGb3JCeXRlY29k
ZU9mZnNldCk6CisgICAgICAgIChKU0M6OlJlc3VtZWRWYXJpYWJsZXNBbmFseXNpczo6cnVuKToK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb246OnJ1bik6CisgICAgICAg
IChKU0M6OnBlcmZvcm1HZW5lcmF0b3JpZmljYXRpb24pOgorICAgICAgICAqIGJ5dGVjb2RlL0J5
dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmg6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNJbmxpbmVzLmguCisgICAgICAg
ICogYnl0ZWNvZGUvQnl0ZWNvZGVHcmFwaC5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6Qnl0ZWNv
ZGVHcmFwaDo6Y29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHcmFwaDo6aW5zdHJ1
Y3Rpb25zKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHcmFwaDo6YmFzaWNCbG9ja3NJblJldmVy
c2VPcmRlcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR3JhcGg6OmJsb2NrQ29udGFpbnNCeXRl
Y29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR3JhcGg6OmZpbmRCYXNpY0Jsb2Nr
Rm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdyYXBoOjpmaW5kQmFz
aWNCbG9ja1dpdGhMZWFkZXJPZmZzZXQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdyYXBoOjpz
aXplKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHcmFwaDo6YXQpOgorICAgICAgICAoSlNDOjpC
eXRlY29kZUdyYXBoOjpvcGVyYXRvcltdKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHcmFwaDo6
YmVnaW4pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdyYXBoOjplbmQpOgorICAgICAgICAoSlND
OjpCeXRlY29kZUdyYXBoOjpmaXJzdCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR3JhcGg6Omxh
c3QpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdyYXBoPEJsb2NrPjo6Qnl0ZWNvZGVHcmFwaCk6
CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNwcDoKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlz
aXMpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGVEZWZz
Rm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlz
aXM6OmNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUxpdmVuZXNzQW5hbHlzaXM6OnJ1bkxpdmVuZXNzRml4cG9pbnQpOgorICAgICAgICAoSlNDOjpC
eXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQp
OgorICAgICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGVGdWxsTGl2
ZW5lc3MpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGVL
aWxscyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6ZHVtcFJlc3Vs
dHMpOgorICAgICAgICAoSlNDOjppc1ZhbGlkUmVnaXN0ZXJGb3JMaXZlbmVzcyk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OmdldExlYWRlck9mZnNldEZvckJhc2ljQmxvY2spOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpmaW5kQmFzaWNCbG9ja1dpdGhMZWFkZXJPZmZzZXQpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpibG9ja0NvbnRhaW5zQnl0ZWNvZGVPZmZzZXQpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpmaW5kQmFzaWNCbG9ja0ZvckJ5dGVjb2RlT2Zmc2V0KTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6c3RlcE92ZXJJbnN0cnVjdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
OmNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQnl0ZWNvZGVPZmZzZXQpOiBEZWxldGVkLgorICAgICAg
ICAoSlNDOjpjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJsb2NrKTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuaDoKKyAgICAgICAgKiBieXRl
Y29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNJbmxpbmVzLmg6CisgICAgICAgIChKU0M6Omlz
VmFsaWRSZWdpc3RlckZvckxpdmVuZXNzKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVz
c0xvY2FsUHJvcGFnYXRpb248RGVyaXZlZEFuYWx5c2lzPjo6c3RlcE92ZXJJbnN0cnVjdGlvbik6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlTGl2ZW5lc3NMb2NhbFByb3BhZ2F0aW9uPERlcml2ZWRB
bmFseXNpcz46OmNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzTG9jYWxQcm9wYWdhdGlvbjxEZXJpdmVkQW5hbHlzaXM+
Ojpjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJsb2NrKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVM
aXZlbmVzc0xvY2FsUHJvcGFnYXRpb248RGVyaXZlZEFuYWx5c2lzPjo6Z2V0TGl2ZW5lc3NJbmZv
QXRCeXRlY29kZU9mZnNldCk6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVNb2RpZmljYXRp
b25TZXQuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVNb2RpZmljYXRpb25TZXQ6
OmFkanVzdE9mZnNldCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlTW9kaWZpY2F0aW9uU2V0Ojph
cHBseU1vZGlmaWNhdGlvbik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlTW9kaWZpY2F0aW9uU2V0
OjpleGVjdXRlKToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZU1vZGlmaWNhdGlvblNldC5o
OiBBZGRlZC4KKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVNb2RpZmljYXRpb25TZXQ6OkJ5dGVjb2Rl
TW9kaWZpY2F0aW9uU2V0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVNb2RpZmljYXRpb25TZXQ6
Omluc2VydCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlTW9kaWZpY2F0aW9uU2V0OjpyZW1vdmVC
eXRlY29kZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlTW9kaWZpY2F0aW9uU2V0OjpncmFwaCk6
CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaDoKKyAgICAgICAgKEpTQzo6Y29t
cHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OmNvbXB1dGVEZWZzRm9y
Qnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAg
ICAgIChKU0M6OkNvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpDb2Rl
QmxvY2s6OmhhbmRsZXJGb3JJbmRleCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6dmFsdWVQ
cm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmxpdmVu
ZXNzQW5hbHlzaXNTbG93KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUp
OiBEZWxldGVkLgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnNocmlua1RvRml0KTogRGVsZXRl
ZC4KKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6Q29kZUJs
b2NrOjppc0NvbnN0YW50UmVnaXN0ZXJJbmRleCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6
bGl2ZW5lc3NBbmFseXNpcyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bGl2ZUNhbGxlZUxv
Y2Fsc0F0WWllbGQpOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2RlL0hhbmRsZXJJbmZvLmg6
CisgICAgICAgIChKU0M6OkhhbmRsZXJJbmZvQmFzZTo6aGFuZGxlckZvckluZGV4KToKKyAgICAg
ICAgKiBieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHMuY3BwOgorICAgICAgICAoSlNDOjpnZXRK
dW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZVByZWNp
c2VKdW1wVGFyZ2V0c0ludGVybmFsKToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZVByZWNpc2VKdW1w
VGFyZ2V0cyk6CisgICAgICAgIChKU0M6OnJlY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyk6Cisg
ICAgICAgIChKU0M6OmZpbmRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAg
KiBieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHMuaDoKKyAgICAgICAgKiBieXRlY29kZS9Vbmxp
bmtlZENvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjpoYW5k
bGVyRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6
aGFuZGxlckZvckluZGV4KToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OmFwcGx5
TW9kaWZpY2F0aW9uKToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oOgor
ICAgICAgICAoSlNDOjpVbmxpbmtlZFN0cmluZ0p1bXBUYWJsZTo6b2Zmc2V0Rm9yVmFsdWUpOgor
ICAgICAgICAqIGJ5dGVjb2RlL1ZpcnR1YWxSZWdpc3Rlci5oOgorICAgICAgICAqIGJ5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJh
dG9yOjpnZW5lcmF0ZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29k
ZUdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q29tcGxl
eFBvcFNjb3Blcyk6CisgICAgICAgIChKU0M6OnByZXBhcmVKdW1wVGFibGVGb3JTdHJpbmdTd2l0
Y2gpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFlpZWxkUG9pbnQpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFNhdmUpOgorICAgICAgICAoSlND
OjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlc3VtZSk6CisgICAgICAgICogYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpn
ZW5lcmF0b3JTdGF0ZVJlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6
OmdlbmVyYXRvclZhbHVlUmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRv
cjo6Z2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVH
ZW5lcmF0b3I6OmdlbmVyYXRvckZyYW1lUmVnaXN0ZXIpOgorICAgICAgICAqIGRmZy9ERkdPcGVy
YXRpb25zLmNwcDoKKyAgICAgICAgKiBnZW5lcmF0ZS1ieXRlY29kZS1maWxlczoKKyAgICAgICAg
KiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6OmZpbmRFeGNlcHRp
b25IYW5kbGVyKToKKyAgICAgICAgKEpTQzo6R2V0Q2F0Y2hIYW5kbGVyRnVuY3Rvcjo6b3BlcmF0
b3IoKSk6CisgICAgICAgIChKU0M6OlVud2luZEZ1bmN0b3I6Om9wZXJhdG9yKCkpOgorICAgICAg
ICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmg6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50
ZXJwcmV0ZXJJbmxpbmVzLmg6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9QcmVjaXNlSnVtcFRhcmdldHMuaC4KKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6Omdl
dE9wY29kZUlEKToKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpw
cml2YXRlQ29tcGlsZU1haW5QYXNzKTogRGVsZXRlZC4KKyAgICAgICAgKiBqaXQvSklULmg6Cisg
ICAgICAgICogaml0L0pJVE9wY29kZXMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bf
c2F2ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9yZXN1bWUpOiBEZWxl
dGVkLgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAgICAgICAq
IHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFy
c2VJbm5lcik6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUdlbmVyYXRv
ckZ1bmN0aW9uU291cmNlRWxlbWVudHMpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBl
Pjo6Y3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyk6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5o
OgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6
U0xPV19QQVRIX0RFQ0wpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1Bh
dGhzLmg6CisgICAgICAgICogcnVudGltZS9HZW5lcmF0b3JGcmFtZS5jcHA6IFJlbW92ZWQuCisg
ICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpHZW5lcmF0b3JGcmFtZSk6IERlbGV0ZWQuCisg
ICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpmaW5pc2hDcmVhdGlvbik6IERlbGV0ZWQuCisg
ICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpjcmVhdGVTdHJ1Y3R1cmUpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlKTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6R2VuZXJhdG9yRnJhbWU6OnNhdmUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpHZW5l
cmF0b3JGcmFtZTo6cmVzdW1lKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJh
bWU6OnZpc2l0Q2hpbGRyZW4pOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJhdG9y
RnJhbWUuaDogUmVtb3ZlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OmxvY2Fscyk6
IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpsb2NhbEF0KTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6Om9mZnNldE9mTG9jYWxzKTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OmFsbG9jYXRpb25TaXplRm9yTG9jYWxz
KTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJhdG9yRnVuY3Rpb24uaDoKKyAg
ICAgICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OlZNKTogRGVsZXRlZC4K
KyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisgICAgICAgICogdGVzdHMvc3RyZXNzL2dlbmVyYXRv
ci1maWItZnRsLWFuZC1hcnJheS5qczogQWRkZWQuCisgICAgICAgIChmaWIpOgorICAgICAgICAq
IHRlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQtb2JqZWN0LmpzOiBBZGRlZC4KKyAg
ICAgICAgKGZpYik6CisgICAgICAgICogdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLWFu
ZC1zdHJpbmcuanM6IEFkZGVkLgorICAgICAgICAoZmliKToKKyAgICAgICAgKiB0ZXN0cy9zdHJl
c3MvZ2VuZXJhdG9yLWZpYi1mdGwuanM6IEFkZGVkLgorICAgICAgICAoZmliKToKKyAgICAgICAg
KiB0ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZyYW1lLWVtcHR5LmpzOiBBZGRlZC4KKyAgICAgICAg
KHNob3VsZFRocm93KToKKyAgICAgICAgKHNob3VsZFRocm93LmZpYik6CisgICAgICAgICogdGVz
dHMvc3RyZXNzL2dlbmVyYXRvci1yZWR1Y2VkLXNhdmUtcG9pbnQtcHV0LXRvLXNjb3BlLmpzOiBB
ZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKGdlbik6CisgICAgICAgICogdGVz
dHMvc3RyZXNzL2dlbmVyYXRvci10cmFuc2Zlci1yZWdpc3Rlci1iZXlvbmQtbXV0aXBsZS15aWVs
ZHMuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoZ2VuKToKKwogMjAx
Ni0wOC0wNyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KIAogICAgICAg
ICBbRVM2XSBNb2R1bGUgbmFtZXNwYWNlIG9iamVjdCBzaG91bGQgbm90IGFsbG93IHVuc2V0IElD
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9n
CmluZGV4IGYyNmIyZWJmZmUyY2FkYTM3Y2NkYWUzY2VkZjZlZmM4NTNiNjE2YjEuLmU1M2NiNGE5
N2U0NzI1NDc1ODFlM2JkOTljODIxODFhNmUwMzg2OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDggQEAKKzIw
MTYtMDgtMDggIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAg
ICAgW0RGR11bRlRMXSBJbXBsZW1lbnQgRVM2IEdlbmVyYXRvcnMgaW4gREZHIC8gRlRMCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTI3MjMKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgbW92ZSBjb25z
dHJ1Y3RvciBmb3IgRmFzdEJpdFZlY3Rvci4KKworICAgICAgICAqIFdURi54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIHd0Zi9DTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiB3
dGYvRmFzdEJpdFZlY3Rvci5oOgorICAgICAgICAoV1RGOjpGYXN0Qml0VmVjdG9yOjpGYXN0Qml0
VmVjdG9yKToKKyAgICAgICAgKiB3dGYvSW5kZXhNYXAuaDogQ29waWVkIGZyb20gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzSW5kZXhNYXAuaC4KKyAgICAgICAgKFdURjo6SW5kZXhNYXA6Oklu
ZGV4TWFwKToKKyAgICAgICAgKFdURjo6SW5kZXhNYXA6OnJlc2l6ZSk6CisgICAgICAgIChXVEY6
OkluZGV4TWFwOjpjbGVhcik6CisgICAgICAgIChXVEY6OkluZGV4TWFwOjpzaXplKToKKyAgICAg
ICAgKFdURjo6SW5kZXhNYXA6Om9wZXJhdG9yW10pOgorICAgICAgICAqIHd0Zi9JbmRleFNldC5o
OiBSZW5hbWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzSW5kZXhTZXQuaC4KKyAg
ICAgICAgKFdURjo6SW5kZXhTZXQ6OkluZGV4U2V0KToKKyAgICAgICAgKFdURjo6SW5kZXhTZXQ6
OmFkZCk6CisgICAgICAgIChXVEY6OkluZGV4U2V0OjphZGRBbGwpOgorICAgICAgICAoV1RGOjpJ
bmRleFNldDo6cmVtb3ZlKToKKyAgICAgICAgKFdURjo6SW5kZXhTZXQ6OmNvbnRhaW5zKToKKyAg
ICAgICAgKFdURjo6SW5kZXhTZXQ6OnNpemUpOgorICAgICAgICAoV1RGOjpJbmRleFNldDo6aXNF
bXB0eSk6CisgICAgICAgIChXVEY6OkluZGV4U2V0OjpJdGVyYWJsZTo6SXRlcmFibGUpOgorICAg
ICAgICAoV1RGOjpJbmRleFNldDo6SXRlcmFibGU6Oml0ZXJhdG9yOjppdGVyYXRvcik6CisgICAg
ICAgIChXVEY6OkluZGV4U2V0OjpJdGVyYWJsZTo6aXRlcmF0b3I6Om9wZXJhdG9yKik6CisgICAg
ICAgIChXVEY6OkluZGV4U2V0OjpJdGVyYWJsZTo6aXRlcmF0b3I6Om9wZXJhdG9yKyspOgorICAg
ICAgICAoV1RGOjpJbmRleFNldDo6SXRlcmFibGU6Oml0ZXJhdG9yOjpvcGVyYXRvcj09KToKKyAg
ICAgICAgKFdURjo6SW5kZXhTZXQ6Okl0ZXJhYmxlOjppdGVyYXRvcjo6b3BlcmF0b3IhPSk6Cisg
ICAgICAgIChXVEY6OkluZGV4U2V0OjpJdGVyYWJsZTo6YmVnaW4pOgorICAgICAgICAoV1RGOjpJ
bmRleFNldDo6SXRlcmFibGU6OmVuZCk6CisgICAgICAgIChXVEY6OkluZGV4U2V0Ojp2YWx1ZXMp
OgorICAgICAgICAoV1RGOjpJbmRleFNldDo6aW5kaWNlcyk6CisgICAgICAgIChXVEY6OkluZGV4
U2V0OjpkdW1wKToKKyAgICAgICAgKiB3dGYvSW5kZXhlZENvbnRhaW5lckl0ZXJhdG9yLmg6IFJl
bmFtZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNJbmRleE1hcC5oLgorICAgICAg
ICAoV1RGOjpJbmRleGVkQ29udGFpbmVySXRlcmF0b3I6OkluZGV4ZWRDb250YWluZXJJdGVyYXRv
cik6CisgICAgICAgIChXVEY6OkluZGV4ZWRDb250YWluZXJJdGVyYXRvcjo6b3BlcmF0b3IrKyk6
CisgICAgICAgIChXVEY6OkluZGV4ZWRDb250YWluZXJJdGVyYXRvcjo6b3BlcmF0b3I9PSk6Cisg
ICAgICAgIChXVEY6OkluZGV4ZWRDb250YWluZXJJdGVyYXRvcjo6b3BlcmF0b3IhPSk6CisgICAg
ICAgIChXVEY6OkluZGV4ZWRDb250YWluZXJJdGVyYXRvcjo6ZmluZE5leHQpOgorCiAyMDE2LTA4
LTA2ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgV1RGIG5lZWRzIGEg
dmFyaWFudCBpbXBsZW1lbnRhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NNYWtlTGlzdHMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0Cmlu
ZGV4IDg0NThiOTM5Y2JkMjIyZWJhMDRjNjIyOThlZjA2ZTA3NzA3ODI1YzYuLmVlMzE2ODIzN2Zj
NDBjMDg3YzJmMWQwMjIzOWY0NDA2NDYyYWYyMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VM
aXN0cy50eHQKQEAgLTE4MSw2ICsxODEsOCBAQCBzZXQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwog
ICAgIGJ5dGVjb2RlL0FycmF5QWxsb2NhdGlvblByb2ZpbGUuY3BwCiAgICAgYnl0ZWNvZGUvQXJy
YXlQcm9maWxlLmNwcAogICAgIGJ5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5jcHAKKyAgICBi
eXRlY29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHAKKyAgICBieXRlY29kZS9CeXRl
Y29kZU1vZGlmaWNhdGlvblNldC5jcHAKICAgICBieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1Jl
Z2lzdHJ5LmNwcAogICAgIGJ5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAKICAg
ICBieXRlY29kZS9DYWxsRWRnZS5jcHAKQEAgLTY2MSw3ICs2NjMsNiBAQCBzZXQoSmF2YVNjcmlw
dENvcmVfU09VUkNFUwogICAgIHJ1bnRpbWUvRnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlLmNwcAog
ICAgIHJ1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9GdW5jdGlvblJh
cmVEYXRhLmNwcAotICAgIHJ1bnRpbWUvR2VuZXJhdG9yRnJhbWUuY3BwCiAgICAgcnVudGltZS9H
ZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcAogICAgIHJ1bnRpbWUvR2VuZXJhdG9yRnVu
Y3Rpb25Qcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9HZW5lcmF0b3JQcm90b3R5cGUuY3BwCkBA
IC05NzQsNiArOTc1LDEwIEBAIGFkZF9jdXN0b21fY29tbWFuZCgKICAgICBDT01NQU5EICR7UFlU
SE9OX0VYRUNVVEFCTEV9ICR7SkFWQVNDUklQVENPUkVfRElSfS9nZW5lcmF0ZS1ieXRlY29kZS1m
aWxlcyAtLWJ5dGVjb2Rlc19oICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0v
Qnl0ZWNvZGVzLmggLS1pbml0X2J5dGVjb2Rlc19hc20gJHtERVJJVkVEX1NPVVJDRVNfSkFWQVND
UklQVENPUkVfRElSfS9Jbml0Qnl0ZWNvZGVzLmFzbSAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnl0
ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24KICAgICBWRVJCQVRJTSkKIAorbGlzdChBUFBFTkQgSmF2
YVNjcmlwdENvcmVfSEVBREVSUworICAgICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JF
X0RJUn0vQnl0ZWNvZGVzLmgKKykKKwogYWRkX2N1c3RvbV9jb21tYW5kKAogICAgIE9VVFBVVCAk
e0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0xMSW50RGVzaXJlZE9mZnNldHMu
aAogICAgIE1BSU5fREVQRU5ERU5DWSAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vb2ZmbGluZWFzbS9n
ZW5lcmF0ZV9vZmZzZXRfZXh0cmFjdG9yLnJiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IGUzMGRjOWU0ZDAyMDM2MjBiMTRjYTIyOGI0ZWIyYmI0ZmRlY2VmMGQuLmViMjYwYmI0Yjgy
OTc2ODg1MmM4MjYwNWM3ODkxOWI4NjkwZjNmYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC03ODYsOCArNzg2LDYgQEAKIAkJMEZFQzg1MTgxQkRBQ0RBQzAwODBGRjc0IC8qIEIz
R2VuZXJhdGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEZFQzg0Q0UxQkRBQ0RBQzAwODBGRjc0IC8qIEIzR2VuZXJhdGUuY3BwICovOyB9OwogCQkw
RkVDODUxOTFCREFDREFDMDA4MEZGNzQgLyogQjNHZW5lcmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFQzg0Q0YxQkRBQ0RBQzAwODBGRjc0IC8q
IEIzR2VuZXJhdGUuaCAqLzsgfTsKIAkJMEZFQzg1MUExQkRBQ0RBQzAwODBGRjc0IC8qIEIzR2Vu
ZXJpY0ZyZXF1ZW50ZWRCbG9jay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEZFQzg0RDAxQkRBQ0RBQzAwODBGRjc0IC8qIEIzR2VuZXJpY0ZyZXF1ZW50
ZWRCbG9jay5oICovOyB9OwotCQkwRkVDODUxQjFCREFDREFDMDA4MEZGNzQgLyogQjNJbmRleE1h
cC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFQzg0
RDExQkRBQ0RBQzAwODBGRjc0IC8qIEIzSW5kZXhNYXAuaCAqLzsgfTsKLQkJMEZFQzg1MUMxQkRB
Q0RBQzAwODBGRjc0IC8qIEIzSW5kZXhTZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGRUM4NEQyMUJEQUNEQUMwMDgwRkY3NCAvKiBCM0luZGV4U2V0
LmggKi87IH07CiAJCTBGRUM4NTFEMUJEQUNEQUMwMDgwRkY3NCAvKiBCM0xvd2VyVG9BaXIuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFQzg0RDMx
QkRBQ0RBQzAwODBGRjc0IC8qIEIzTG93ZXJUb0Fpci5jcHAgKi87IH07CiAJCTBGRUM4NTFFMUJE
QUNEQUMwMDgwRkY3NCAvKiBCM0xvd2VyVG9BaXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRUM4NEQ0MUJEQUNEQUMwMDgwRkY3NCAvKiBCM0xvd2Vy
VG9BaXIuaCAqLzsgfTsKIAkJMEZFQzg1MUYxQkRBQ0RBQzAwODBGRjc0IC8qIEIzTWVtb3J5VmFs
dWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZF
Qzg0RDUxQkRBQ0RBQzAwODBGRjc0IC8qIEIzTWVtb3J5VmFsdWUuY3BwICovOyB9OwpAQCAtMTI1
Niw4ICsxMjU0LDYgQEAKIAkJNzA5RkI4NkMxQUUzMzVDNjAwMzlEMDY5IC8qIFdlYWtTZXRQcm90
b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcw
OUZCODY2MUFFMzM1QzYwMDM5RDA2OSAvKiBXZWFrU2V0UHJvdG90eXBlLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzBCMEE5RDExQTlCNjY0NjAw
MDEzMDZBIC8qIFJ1bnRpbWVGbGFncy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNzBCMEE5RDAxQTlCNjYyMDAwMDEzMDZBIC8qIFJ1bnRpbWVGbGFncy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcwQjc5
MTkxMUMwMjRBMTMwMDI0ODFFMiAvKiBTb3VyY2VDb2RlS2V5LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEI3OTE4RTFDMDI0NEM5MDAyNDgxRTIgLyog
U291cmNlQ29kZUtleS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07Ci0JCTcwQjc5MTkyMUMwMjRBMjMwMDI0ODFFMiAvKiBHZW5lcmF0b3JGcmFtZS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEI3OTE4MzFD
MDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnJhbWUuY3BwICovOyB9OwotCQk3MEI3OTE5MzFD
MDI0QTI4MDAyNDgxRTIgLyogR2VuZXJhdG9yRnJhbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwQjc5MTg0MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5l
cmF0b3JGcmFtZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTcwQjc5MTk0MUMwMjRBMjgwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0
cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDcwQjc5MTg1MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9y
LmNwcCAqLzsgfTsKIAkJNzBCNzkxOTUxQzAyNEEyODAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0
aW9uQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDcwQjc5MTg2MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0
cnVjdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJNzBCNzkxOTYxQzAyNEEyODAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBl
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwQjc5
MTg3MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5jcHAgKi87
IH07CkBAIC0yMDI5LDYgKzIwMjUsMTEgQEAKIAkJRTE4RTNBNTkwREY5Mjc4QzAwRDkwQjM0IC8q
IFZNLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUx
OEUzQTU3MERGOTI3OEMwMEQ5MEIzNCAvKiBWTS5jcHAgKi87IH07CiAJCUUzMThDQkMwMUI4QUVG
NTEwMEEyOTI5RCAvKiBKU01vZHVsZU5hbWVzcGFjZU9iamVjdC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzE4Q0JCRTFCOEFFRjUxMDBBMjkyOUQg
LyogSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuY3BwICovOyB9OwogCQlFMzE4Q0JDMTFCOEFFRjUx
MDBBMjkyOUQgLyogSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMThDQkJGMUI4QUVGNTEwMEEyOTI5RCAvKiBK
U01vZHVsZU5hbWVzcGFjZU9iamVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCUUzMjhEQUU3MUQzOEQwMDQwMDFBMjUyOSAvKiBCeXRlY29kZUdl
bmVyYXRvcmlmaWNhdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFM0QyNjQyNjFEMzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNvZGVHZW5lcmF0b3Jp
ZmljYXRpb24uY3BwICovOyB9OworCQlFMzI4REFFODFEMzhEMDA1MDAxQTI1MjkgLyogQnl0ZWNv
ZGVHZW5lcmF0b3JpZmljYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEUzRDI2NDI3MUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRlY29kZUdlbmVyYXRv
cmlmaWNhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCUUzMjhEQUU5MUQzOEQwMDUwMDFBMjUyOSAvKiBCeXRlY29kZUdyYXBoLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0QyNjQyODFEMzhDMDQy
MDAwQkUxNzQgLyogQnl0ZWNvZGVHcmFwaC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCUUzMjhEQUVBMUQzOEQwMDUwMDFBMjUyOSAvKiBCeXRlY29k
ZU1vZGlmaWNhdGlvblNldC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFM0QyNjQyOTFEMzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNvZGVNb2RpZmljYXRp
b25TZXQuY3BwICovOyB9OworCQlFMzI4REFFQjFEMzhEMDA1MDAxQTI1MjkgLyogQnl0ZWNvZGVN
b2RpZmljYXRpb25TZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEUzRDI2NDJBMUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRlY29kZU1vZGlmaWNhdGlvblNl
dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUz
MzYzN0E1MUI2MzIyMDIwMEVFMDg0MCAvKiBSZWZsZWN0T2JqZWN0LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMzYzN0EzMUI2MzIyMDIwMEVFMDg0
MCAvKiBSZWZsZWN0T2JqZWN0LmNwcCAqLzsgfTsKIAkJRTMzNjM3QTYxQjYzMjIwMjAwRUUwODQw
IC8qIFJlZmxlY3RPYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEUzMzYzN0E0MUI2MzIyMDIwMEVFMDg0MCAvKiBSZWZsZWN0T2JqZWN0LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTMzQjNFMjYx
QjdBQkQ3NTAwNDhEQjJFIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5sdXQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzM0IzRTI1MUI3
QUJENzUwMDQ4REIyRSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QubHV0LmggKi87
IH07CkBAIC0yMDUzLDYgKzIwNTQsNyBAQAogCQlFMzc5NEU3NTFCNzdFQjk3MDA1NTQzQUUgLyog
TW9kdWxlQW5hbHl6ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTM3OTRFNzMxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmNwcCAq
LzsgfTsKIAkJRTM3OTRFNzYxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzc5NEU3NDFCNzdF
Qjk3MDA1NTQzQUUgLyogTW9kdWxlQW5hbHl6ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzk2M0NFRTFCNzNGNzUwMDBFQjRDRTUgLyogTm9k
ZXNBbmFseXplTW9kdWxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEUzOTYzQ0VDMUI3M0Y3NTAwMEVCNENFNSAvKiBOb2Rlc0FuYWx5emVNb2R1bGUu
Y3BwICovOyB9OworCQlFMzlENDVGNTFEMzkwMDU2MDBCM0IzNzcgLyogSW50ZXJwcmV0ZXJJbmxp
bmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzlE
OUQ4NDFEMzkwMDA2MDA2NjcyODIgLyogSW50ZXJwcmV0ZXJJbmxpbmVzLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM5REE0QTYxQjdFOEI3QzAw
ODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEUzOURBNEE0MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJl
Y29yZC5jcHAgKi87IH07CiAJCUUzOURBNEE3MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJl
Y29yZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5
REE0QTUxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTNEMjM5QzgxQjgyOUMxQzAwQkJF
RjY3IC8qIEpTTW9kdWxlRW52aXJvbm1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTNEMjM5QzYxQjgyOUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxl
RW52aXJvbm1lbnQuY3BwICovOyB9OwpAQCAtMjk5MSw4ICsyOTkzLDYgQEAKIAkJMEZFQzg0Q0Ux
QkRBQ0RBQzAwODBGRjc0IC8qIEIzR2VuZXJhdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gQjNHZW5lcmF0ZS5jcHA7IHBhdGggPSBiMy9CM0dlbmVyYXRlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZFQzg0Q0YxQkRBQ0RBQzAwODBGRjc0IC8q
IEIzR2VuZXJhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQjNHZW5lcmF0
ZS5oOyBwYXRoID0gYjMvQjNHZW5lcmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwRkVDODREMDFCREFDREFDMDA4MEZGNzQgLyogQjNHZW5lcmljRnJlcXVlbnRlZEJsb2NrLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEIzR2VuZXJpY0ZyZXF1ZW50ZWRCbG9j
ay5oOyBwYXRoID0gYjMvQjNHZW5lcmljRnJlcXVlbnRlZEJsb2NrLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTBGRUM4NEQxMUJEQUNEQUMwMDgwRkY3NCAvKiBCM0luZGV4TWFwLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEIzSW5kZXhNYXAuaDsgcGF0aCA9IGIz
L0IzSW5kZXhNYXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMEZFQzg0RDIxQkRB
Q0RBQzAwODBGRjc0IC8qIEIzSW5kZXhTZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gQjNJbmRleFNldC5oOyBwYXRoID0gYjMvQjNJbmRleFNldC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwRkVDODREMzFCREFDREFDMDA4MEZGNzQgLyogQjNMb3dlclRvQWly
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEIzTG93ZXJUb0Fpci5j
cHA7IHBhdGggPSBiMy9CM0xvd2VyVG9BaXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwRkVDODRENDFCREFDREFDMDA4MEZGNzQgLyogQjNMb3dlclRvQWlyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEIzTG93ZXJUb0Fpci5oOyBwYXRoID0gYjMvQjNMb3dl
clRvQWlyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRUM4NEQ1MUJEQUNEQUMw
MDgwRkY3NCAvKiBCM01lbW9yeVZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IEIzTWVtb3J5VmFsdWUuY3BwOyBwYXRoID0gYjMvQjNNZW1vcnlWYWx1ZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zNDYyLDggKzM0NjIsNiBAQAogCQk3MDlG
Qjg2NTFBRTMzNUM2MDAzOUQwNjkgLyogV2Vha1NldFByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWFrU2V0UHJvdG90eXBlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzA5RkI4NjYxQUUzMzVDNjAwMzlEMDY5IC8qIFdlYWtTZXRQ
cm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vha1NldFByb3Rv
dHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MEIwQTlEMDFBOUI2NjIwMDAw
MTMwNkEgLyogUnVudGltZUZsYWdzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFJ1bnRpbWVGbGFncy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3MEI3OTE4MzFD
MDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnJhbWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gR2VuZXJhdG9yRnJhbWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQk3MEI3OTE4NDFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnJhbWUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2VuZXJhdG9yRnJhbWUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzBCNzkxODUxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVy
YXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTcwQjc5MTg2MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5j
dGlvbkNvbnN0cnVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdlbmVy
YXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NzBCNzkxODcxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdlbmVyYXRvckZ1bmN0aW9u
UHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQzMDEsMTAgKzQy
OTksMTYgQEAKIAkJRTM3OTRFNzMxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1vZHVsZUFuYWx5emVyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM3OTRFNzQxQjc3RUI5NzAwNTU0M0FF
IC8qIE1vZHVsZUFuYWx5emVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1v
ZHVsZUFuYWx5emVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOTYzQ0VDMUI3
M0Y3NTAwMEVCNENFNSAvKiBOb2Rlc0FuYWx5emVNb2R1bGUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gTm9kZXNBbmFseXplTW9kdWxlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJRTM5RDlEODQxRDM5MDAwNjAwNjY3MjgyIC8qIEludGVycHJldGVy
SW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRlcnByZXRlcklu
bGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM5REE0QTQxQjdFOEI3QzAw
ODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTTW9kdWxlUmVjb3JkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRTM5REE0QTUxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTW9kdWxlUmVjb3JkLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUUzRDIzOUM2MUI4MjlDMUMwMEJCRUY2NyAvKiBKU01vZHVsZUVudmly
b25tZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTW9kdWxl
RW52aXJvbm1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0QyMzlDNzFC
ODI5QzFDMDBCQkVGNjcgLyogSlNNb2R1bGVFbnZpcm9ubWVudC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBKU01vZHVsZUVudmlyb25tZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUUzRDI2NDI2MUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRlY29kZUdlbmVyYXRv
cmlmaWNhdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCeXRl
Y29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUUzRDI2NDI3MUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCeXRlY29kZUdlbmVyYXRvcmlmaWNh
dGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFM0QyNjQyODFEMzhDMDQyMDAw
QkUxNzQgLyogQnl0ZWNvZGVHcmFwaC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBCeXRlY29kZUdyYXBoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzRDI2NDI5
MUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRlY29kZU1vZGlmaWNhdGlvblNldC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCeXRlY29kZU1vZGlmaWNhdGlvblNldC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzRDI2NDJBMUQzOEMwNDIwMDBCRTE3NCAv
KiBCeXRlY29kZU1vZGlmaWNhdGlvblNldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBCeXRlY29kZU1vZGlmaWNhdGlvblNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlFM0VGODg3MjFCNjZERjIzMDAzRjI2Q0IgLyogSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1Byb3BlcnR5TmFtZUl0
ZXJhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNFRjg4NzMxQjY2REYy
MzAwM0YyNkNCIC8qIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlFNDlEQzE0OTEyRUYyNjFBMDAxODRBMUYgLyogU291cmNlUHJvdmlkZXJD
YWNoZUl0ZW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU291cmNlUHJvdmlk
ZXJDYWNoZUl0ZW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ3NzYsOCArNDc4
MCw2IEBACiAJCQkJMEZFQzg0RDAxQkRBQ0RBQzAwODBGRjc0IC8qIEIzR2VuZXJpY0ZyZXF1ZW50
ZWRCbG9jay5oICovLAogCQkJCTBGRUM4NUJGMUJFMTY3QTAwMDgwRkY3NCAvKiBCM0hlYXBSYW5n
ZS5jcHAgKi8sCiAJCQkJMEZFQzg1QzAxQkUxNjdBMDAwODBGRjc0IC8qIEIzSGVhcFJhbmdlLmgg
Ki8sCi0JCQkJMEZFQzg0RDExQkRBQ0RBQzAwODBGRjc0IC8qIEIzSW5kZXhNYXAuaCAqLywKLQkJ
CQkwRkVDODREMjFCREFDREFDMDA4MEZGNzQgLyogQjNJbmRleFNldC5oICovLAogCQkJCURDNjlC
OTlBMUQxNUY5MEYwMDJFM0MwMCAvKiBCM0luZmVyU3dpdGNoZXMuY3BwICovLAogCQkJCURDNjlC
OTlCMUQxNUY5MEYwMDJFM0MwMCAvKiBCM0luZmVyU3dpdGNoZXMuaCAqLywKIAkJCQkwRkVDODVC
NDFCRTE0NjJGMDA4MEZGNzQgLyogQjNJbnNlcnRpb25TZXQuY3BwICovLApAQCAtNTAzMyw2ICs1
MDM1LDcgQEAKIAkJMTQyOUQ3N0EwRUQyMEQ3MzAwQjg5NjE5IC8qIGludGVycHJldGVyICovID0g
ewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlFMzlEOUQ4NDFEMzkw
MDA2MDA2NjcyODIgLyogSW50ZXJwcmV0ZXJJbmxpbmVzLmggKi8sCiAJCQkJMEY1NUYwRjExNEQx
MDYzNjAwQUM3NjQ5IC8qIEFic3RyYWN0UEMuY3BwICovLAogCQkJCTBGNTVGMEYyMTREMTA2MzYw
MEFDNzY0OSAvKiBBYnN0cmFjdFBDLmggKi8sCiAJCQkJMTQyOUQ4NUIwRUQyMThFOTAwQjg5NjE5
IC8qIENMb29wU3RhY2suY3BwICovLApAQCAtNTcwMiw4ICs1NzA1LDYgQEAKIAkJCQlGNjkyQTg1
RDAyNTU1OTdEMDFGRjYwRjcgLyogRnVuY3Rpb25Qcm90b3R5cGUuaCAqLywKIAkJCQk2MkQyRDM4
RDFBREYxMDNGMDAwMjA2QzEgLyogRnVuY3Rpb25SYXJlRGF0YS5jcHAgKi8sCiAJCQkJNjJEMkQz
OEUxQURGMTAzRjAwMDIwNkMxIC8qIEZ1bmN0aW9uUmFyZURhdGEuaCAqLywKLQkJCQk3MEI3OTE4
MzFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnJhbWUuY3BwICovLAotCQkJCTcwQjc5MTg0
MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGcmFtZS5oICovLAogCQkJCTcwQjc5MTg1MUMw
MjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCAqLywKIAkJ
CQk3MEI3OTE4NjFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rv
ci5oICovLAogCQkJCTcwQjc5MTg3MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlv
blByb3RvdHlwZS5jcHAgKi8sCkBAIC02NTgxLDYgKzY1ODIsMTEgQEAKIAkJOTY5QTA3OEYwRUQx
RDNBRTAwRjFGNjgxIC8qIGJ5dGVjb2RlICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQlj
aGlsZHJlbiA9ICgKKwkJCQlFM0QyNjQyNjFEMzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNvZGVHZW5l
cmF0b3JpZmljYXRpb24uY3BwICovLAorCQkJCUUzRDI2NDI3MUQzOEMwNDIwMDBCRTE3NCAvKiBC
eXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5oICovLAorCQkJCUUzRDI2NDI4MUQzOEMwNDIwMDBC
RTE3NCAvKiBCeXRlY29kZUdyYXBoLmggKi8sCisJCQkJRTNEMjY0MjkxRDM4QzA0MjAwMEJFMTc0
IC8qIEJ5dGVjb2RlTW9kaWZpY2F0aW9uU2V0LmNwcCAqLywKKwkJCQlFM0QyNjQyQTFEMzhDMDQy
MDAwQkUxNzQgLyogQnl0ZWNvZGVNb2RpZmljYXRpb25TZXQuaCAqLywKIAkJCQk1MzcwQjRGMzFC
RjI1RUEyMDA1QzQwRkMgLyogQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50
QmFzZS5jcHAgKi8sCiAJCQkJNTM3MEI0RjQxQkYyNUVBMjAwNUM0MEZDIC8qIEFkYXB0aXZlSW5m
ZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2UuaCAqLywKIAkJCQkwRjgzMzVCNDE2MzlD
MUUzMDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAgKi8sCkBAIC03MTIzLDgg
KzcxMjksNiBAQAogCQkJCTBGRUM4NUMzMUJFMTY3QTAwMDgwRkY3NCAvKiBCM0hlYXBSYW5nZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMjY3MThCQTUxQkU5OUY3ODAwNTIwMTdCIC8qIEFpckl0ZXJh
dGVkUmVnaXN0ZXJDb2FsZXNjaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjk2MzAzQzFENDE5
MkNEMDA1NjA5RDkgLyogRGVzdHJ1Y3Rpb25Nb2RlLmggaW4gSGVhZGVycyAqLywKLQkJCQkwRkVD
ODUxQjFCREFDREFDMDA4MEZGNzQgLyogQjNJbmRleE1hcC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJ
MEZFQzg1MUMxQkRBQ0RBQzAwODBGRjc0IC8qIEIzSW5kZXhTZXQuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGRUM4NUJBMUJFMTQ2MkYwMDgwRkY3NCAvKiBCM0luc2VydGlvblNldC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEZFQzg1QkIxQkUxNDYyRjAwODBGRjc0IC8qIEIzSW5zZXJ0aW9uU2V0SW5s
aW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQzg1MUUxQkRBQ0RBQzAwODBGRjc0IC8qIEIz
TG93ZXJUb0Fpci5oIGluIEhlYWRlcnMgKi8sCkBAIC03MTM4LDYgKzcxNDIsNyBAQAogCQkJCTBG
RUM4NTJEMUJEQUNEQUMwMDgwRkY3NCAvKiBCM1Byb2NlZHVyZUlubGluZXMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGRUM4NUJEMUJFMTQ2MkYwMDgwRkY3NCAvKiBCM1JlZHVjZVN0cmVuZ3RoLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRkVDODUzMTFCREFDREFDMDA4MEZGNzQgLyogQjNTdGFja21h
cFNwZWNpYWwuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzMjhEQUU4MUQzOEQwMDUwMDFBMjUyOSAv
KiBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQzg1
MzUxQkRBQ0RBQzAwODBGRjc0IC8qIEIzU2xvdEJhc2VWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEZFQzg1MzYxQkRBQ0RBQzAwODBGRjc0IC8qIEIzU3VjY2Vzc29yQ29sbGVjdGlvbi5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEZFQzg1MzgxQkRBQ0RBQzAwODBGRjc0IC8qIEIzU3dpdGNoQ2Fz
ZS5oIGluIEhlYWRlcnMgKi8sCkBAIC03Mzk3LDcgKzc0MDIsNiBAQAogCQkJCTBGRjJDRDVDMUI2
MUE0RjgwMDQ5NTVBOCAvKiBERkdNdWx0aUdldEJ5T2Zmc2V0RGF0YS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQTczNzgxMEUxNzk5RUEyRTAwODE3NTMzIC8qIERGR05hdHVyYWxMb29wcy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJODZFQ0EzRUExMzJERUYxQzAwMkIyQUQ3IC8qIERGR05vZGUuaCBpbiBI
ZWFkZXJzICovLAotCQkJCTcwQjc5MTkzMUMwMjRBMjgwMDI0ODFFMiAvKiBHZW5lcmF0b3JGcmFt
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZBNTgxQkIxNTBFOTUzMDAwQjlBMkQ5IC8qIERGR05v
ZGVGbGFncy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYzMDBCNzgxOEFCMDUxMTAwQTZENzJFIC8q
IERGR05vZGVPcmlnaW4uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQTU4MUJDMTUwRTk1MzAwMEI5
QTJEOSAvKiBERkdOb2RlVHlwZS5oIGluIEhlYWRlcnMgKi8sCkBAIC03NDEyLDYgKzc0MTYsNyBA
QAogCQkJCTBGRDhBMzI2MTdENTFGNTcwMENBMkM0MCAvKiBERkdPU1JFbnRyeXBvaW50Q3JlYXRp
b25QaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDMDk3NkExNDY4QTZGNzAwQ0YyNDQyIC8q
IERGR09TUkV4aXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjM1QkVDMTcxNzhFNzMwMDY5MEM3
RiAvKiBERkdPU1JFeGl0QmFzZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM5RDQ1RjUxRDM5MDA1
NjAwQjNCMzc3IC8qIEludGVycHJldGVySW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZG
QjkyMUMxNkQwMkYxMTAwNTVBNURCIC8qIERGR09TUkV4aXRDb21waWxhdGlvbkluZm8uaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGQzA5NzcxMTQ2OTNBRjUwMENGMjQ0MiAvKiBERkdPU1JFeGl0Q29t
cGlsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNzAyNUFBMTcxNEIwRkMwMDM4MkMwRSAvKiBE
RkdPU1JFeGl0Q29tcGlsZXJDb21tb24uaCBpbiBIZWFkZXJzICovLApAQCAtNzY3Miw2ICs3Njc3
LDcgQEAKIAkJCQlFMzNCM0UyNjFCN0FCRDc1MDA0OERCMkUgLyogSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uT2JqZWN0Lmx1dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTUzMjQzOEMxODU2ODMzNTAw
MkVENjkyIC8qIEluc3BlY3RvclByb3RvY29sT2JqZWN0cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QTU1RDkzQUMxODUxNEY3OTAwNDAwREVEIC8qIEluc3BlY3RvclByb3RvY29sVHlwZXMuaCBpbiBI
ZWFkZXJzICovLAorCQkJCUUzMjhEQUVCMUQzOEQwMDUwMDFBMjUyOSAvKiBCeXRlY29kZU1vZGlm
aWNhdGlvblNldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTUwRTRCNjIxODgwOURENTAwNjhBNDZE
IC8qIEluc3BlY3RvclJ1bnRpbWVBZ2VudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU5M0NGODMx
ODQwMzc3MTAwQkZDRTI3IC8qIEluc3BlY3RvclZhbHVlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
OTY5QTA3OTkwRUQxRDNBRTAwRjFGNjgxIC8qIEluc3RydWN0aW9uLmggaW4gSGVhZGVycyAqLywK
QEAgLTc4MDIsNiArNzgwOCw3IEBACiAJCQkJRTMzRjUwODExQjg0MjlBNDAwNDEzODU2IC8qIEpT
SW50ZXJuYWxQcm9taXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjYxODMyQTFDNDVCRjA3MDA3
MjQ1MEIgLyogQWlyQ0NhbGxpbmdDb252ZW50aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMzNG
NTA3OTFCODQyMjU3MDA0MTM4NTYgLyogSlNJbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvci5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJRTMyOERBRTkxRDM4RDAwNTAwMUEyNTI5IC8qIEJ5dGVjb2RlR3Jh
cGguaCBpbiBIZWFkZXJzICovLAogCQkJCUUzM0Y1MDg3MUI4NDQ5RUYwMDQxMzg1NiAvKiBKU0lu
dGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yLmx1dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTMzRjUw
ODUxQjg0MzdBMDAwNDEzODU2IC8qIEpTSW50ZXJuYWxQcm9taXNlRGVmZXJyZWQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUUzM0Y1MDc1MUI4NDIxQzAwMDQxMzg1NiAvKiBKU0ludGVybmFsUHJvbWlz
ZVByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCkBAIC04NzY0LDYgKzg3NzEsNyBAQAogCQkJCTE0
N0YzOUJEMTA3RUMzNzYwMDQyN0E0OCAvKiBBcmdMaXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTBGNzQzQkFBMTZCODgyNDkwMDlGOTI3NyAvKiBBUk02NERpc2Fzc2VtYmxlci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk4NkQzQjJDMzEwMTU2QkRFMDAyODY1RTcgLyogQVJNQXNzZW1ibGVyLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCUUzMjhEQUU3MUQzOEQwMDQwMDFBMjUyOSAvKiBCeXRlY29k
ZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2NUMwMjg1MDE3MTc5
NUUyMDAzNTFFMzUgLyogQVJNdjdEaXNhc3NlbWJsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NjVDMDI4NUMxNzE3OTY2ODAwMzUxRTM1IC8qIEFSTXY3RE9wY29kZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwRjgzMzVCNzE2MzlDMUU2MDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmls
ZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTkwOTcsNiArOTEwNSw3IEBACiAJCQkJMEYyNUYxQjEx
ODE2MzVGMzAwNTIyRjM5IC8qIEZUTFNsb3dQYXRoQ2FsbC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkwRjMzOERGMTFCRTkzQUQxMDAxM0M4OEYgLyogQjNTdGFja21hcFZhbHVlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTBGMjVGMUIzMTgxNjM1RjMwMDUyMkYzOSAvKiBGVExTbG93UGF0aENhbGxL
ZXkuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTMyOERBRUExRDM4RDAwNTAwMUEyNTI5IC8qIEJ5
dGVjb2RlTW9kaWZpY2F0aW9uU2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQzMTlEQTAzMUMx
QkU0MEEwMDFEMjYwQiAvKiBCM0xvd2VyTWFjcm9zQWZ0ZXJPcHRpbWl6YXRpb25zLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTBGRUEwQTE2MTcwNkJCOTAwMEJCNzIyQyAvKiBGVExTdGF0ZS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkwRjIzNUJFMTE3MTc4RTFDMDA2OTBDN0YgLyogRlRMVGh1bmtz
LmNwcCBpbiBTb3VyY2VzICovLApAQCAtOTUwNCw3ICs5NTEzLDYgQEAKIAkJCQk3OUVFMEJGRjFC
NEFGQjg1MDAwMzg1QzkgLyogVmFyaWFibGVFbnZpcm9ubWVudC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkwRjZDNzM1MDFBQzlGOTlGMDBCRTE2ODIgLyogVmFyaWFibGVXcml0ZUZpcmVEZXRhaWwu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFMDUwMkMxQUE5MDk1NjAwRDMzQjMzIC8qIFZhck9m
ZnNldC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk3MEI3OTE5MjFDMDI0QTIzMDAyNDgxRTIgLyog
R2VuZXJhdG9yRnJhbWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyMEMyNTkxQTgwMTNBQjAw
REEzMjI5IC8qIFZpcnR1YWxSZWdpc3Rlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMThFM0E1
OTBERjkyNzhDMDBEOTBCMzQgLyogVk0uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkU1OTMyQTcx
ODNDNUEyNjAwQTFFQ0NDIC8qIFZNRW50cnlTY29wZS5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0Jhc2ljQmxvY2tVdGlscy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQmFzaWNCbG9ja1V0aWxzLmgKaW5kZXggNGE3MTc2Nzg3
OGM2ZWIzNzIzMDUwZGU5MjE5NWVkZWE1ODUwMTlmNy4uMzJhNTlmYzEyMGNiODQwZmFiYTA2YjFm
N2QxZDdiMWI1YTlhYWQ5YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
QmFzaWNCbG9ja1V0aWxzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQmFzaWNC
bG9ja1V0aWxzLmgKQEAgLTI4LDggKzI4LDggQEAKIAogI2lmIEVOQUJMRShCM19KSVQpCiAKLSNp
bmNsdWRlICJCM0luZGV4U2V0LmgiCiAjaW5jbHVkZSA8d3RmL0dyYXBoTm9kZVdvcmtsaXN0Lmg+
CisjaW5jbHVkZSA8d3RmL0luZGV4U2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBu
YW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM0Jsb2NrV29ya2xpc3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M0Jsb2NrV29ya2xpc3QuaAppbmRleCBhZjdlZTJjOTZiYzk4ODg5YmQwZDc4YjE2ZTYyNzhkNTcz
Y2Y2MjIxLi45ZTZiZTRiYjlmNzAxOTIyM2UxNWUyYWM0OWM4ZjZkZTE2Yzg4OTY2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNCbG9ja1dvcmtsaXN0LmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQmxvY2tXb3JrbGlzdC5oCkBAIC0yOCwxMyArMjgsMTQg
QEAKIAogI2lmIEVOQUJMRShCM19KSVQpCiAKLSNpbmNsdWRlICJCM0Jhc2ljQmxvY2suaCIKLSNp
bmNsdWRlICJCM0luZGV4U2V0LmgiCiAjaW5jbHVkZSA8d3RmL0dyYXBoTm9kZVdvcmtsaXN0Lmg+
CisjaW5jbHVkZSA8d3RmL0luZGV4U2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBu
YW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKIAorY2xhc3MgQmFzaWNCbG9jazsKKwogdHlw
ZWRlZiBHcmFwaE5vZGVXb3JrbGlzdDxCYXNpY0Jsb2NrKiwgSW5kZXhTZXQ8QmFzaWNCbG9jaz4+
IEJsb2NrV29ya2xpc3Q7CiAKIC8vIFdoZW4geW91IHNheSBCbG9ja1dpdGg8aW50PiB5b3Ugc2hv
dWxkIHJlYWQgaXQgYXMgImJsb2NrIHdpdGggYW4gaW50Ii4KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM0NGRy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ0ZH
LmgKaW5kZXggNThjNDBiMWJiYWY3N2RkZWZhMWQyMDYzZjkzZTU4OTQ1OTFkMTdiMy4uOTA0YWIz
ZjlhMzYwYzI5OTU2MjBhMDAyZmFhN2MxNWRlMjI1ZWFhMyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzQ0ZHLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
Q0ZHLmgKQEAgLTI5LDkgKzI5LDkgQEAKICNpZiBFTkFCTEUoQjNfSklUKQogCiAjaW5jbHVkZSAi
QjNCYXNpY0Jsb2NrLmgiCi0jaW5jbHVkZSAiQjNJbmRleE1hcC5oIgotI2luY2x1ZGUgIkIzSW5k
ZXhTZXQuaCIKICNpbmNsdWRlICJCM1Byb2NlZHVyZS5oIgorI2luY2x1ZGUgPHd0Zi9JbmRleE1h
cC5oPgorI2luY2x1ZGUgPHd0Zi9JbmRleFNldC5oPgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNw
YWNlIEIzIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRHVwbGlj
YXRlVGFpbHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRHVwbGljYXRlVGFpbHMu
Y3BwCmluZGV4IDhhODQzNGIyNmNkZjA5MjU5ZTEzNjM2MGNhMjcwZjYyY2ExODgzNjguLjk1NDky
YmNlNjc1MWM1YzE3MGJkMmUyYjlhOWRkNDc0NWQ5ZDIzY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM0R1cGxpY2F0ZVRhaWxzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNEdXBsaWNhdGVUYWlscy5jcHAKQEAgLTMyLDEzICszMiwxMyBAQAogI2lu
Y2x1ZGUgIkIzQnJlYWtDcml0aWNhbEVkZ2VzLmgiCiAjaW5jbHVkZSAiQjNEb21pbmF0b3JzLmgi
CiAjaW5jbHVkZSAiQjNGaXhTU0EuaCIKLSNpbmNsdWRlICJCM0luZGV4U2V0LmgiCiAjaW5jbHVk
ZSAiQjNJbnNlcnRpb25TZXRJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQjNQaGFzZVNjb3BlLmgiCiAj
aW5jbHVkZSAiQjNQcm9jZWR1cmVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQjNTd2l0Y2hWYWx1ZS5o
IgogI2luY2x1ZGUgIkIzVXBzaWxvblZhbHVlLmgiCiAjaW5jbHVkZSAiQjNWYWx1ZUlubGluZXMu
aCIKKyNpbmNsdWRlIDx3dGYvSW5kZXhTZXQuaD4KIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFj
ZSBCMyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0ZpeFNTQS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNGaXhTU0EuY3BwCmluZGV4IGY0YjAxMjJj
NGRlY2RlOTVjM2RiMmQ4MjQxZjY5MjgyZDViYTM5NmEuLjczMGMyYzg3NjZjNjU2NTQ2YjQ4NzQ2
ZTEyNTAzY2QzNTkzMjRmOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M0ZpeFNTQS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRml4U1NBLmNwcApA
QCAtMzEsNyArMzEsNiBAQAogI2luY2x1ZGUgIkIzQmFzaWNCbG9ja0lubGluZXMuaCIKICNpbmNs
dWRlICJCM0JyZWFrQ3JpdGljYWxFZGdlcy5oIgogI2luY2x1ZGUgIkIzRG9taW5hdG9ycy5oIgot
I2luY2x1ZGUgIkIzSW5kZXhTZXQuaCIKICNpbmNsdWRlICJCM0luc2VydGlvblNldElubGluZXMu
aCIKICNpbmNsdWRlICJCM1BoYXNlU2NvcGUuaCIKICNpbmNsdWRlICJCM1Byb2NlZHVyZUlubGlu
ZXMuaCIKQEAgLTQxLDYgKzQwLDcgQEAKICNpbmNsdWRlICJCM1ZhcmlhYmxlLmgiCiAjaW5jbHVk
ZSAiQjNWYXJpYWJsZVZhbHVlLmgiCiAjaW5jbHVkZSA8d3RmL0NvbW1hUHJpbnRlci5oPgorI2lu
Y2x1ZGUgPHd0Zi9JbmRleFNldC5oPgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRml4U1NBLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNGaXhTU0EuaAppbmRleCA0NWQ1ZmZjYzI5MWJiMzRkYTNl
M2RjMmZlOWZhNmYwNWQzM2ExM2NlLi44ODU5Mjc2ZTJkOTI2ZGYzMTAyMDYwNzdlYTc1YjIwYWE3
NDg4YTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNGaXhTU0EuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNGaXhTU0EuaApAQCAtMjgsOCArMjgsOCBA
QAogCiAjaWYgRU5BQkxFKEIzX0pJVCkKIAotI2luY2x1ZGUgIkIzSW5kZXhTZXQuaCIKICNpbmNs
dWRlICJCM1ZhbHVlLmgiCisjaW5jbHVkZSA8d3RmL0luZGV4U2V0Lmg+CiAjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0luZGV4TWFwLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNJbmRleE1hcC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYWEz
MzlmMDlkZTQyYzBiNGQ1OWJkNmFmMmU5ODI2NGZiYzExYjYxLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0lu
ZGV4TWFwLmgKKysrIC9kZXYvbnVsbApAQCAtMSw4NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAot
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2lmbmRlZiBCM0luZGV4TWFwX2gK
LSNkZWZpbmUgQjNJbmRleE1hcF9oCi0KLSNpZiBFTkFCTEUoQjNfSklUKQotCi0jaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgotCi1uYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKLQotLy8gVGhp
cyBpcyBhIG1hcCBmb3Iga2V5cyB0aGF0IGhhdmUgYW4gaW5kZXgoKS4gSXQncyBzdXBlciBlZmZp
Y2llbnQgZm9yIEJhc2ljQmxvY2tzLiBJdCdzIG9ubHkKLS8vIGVmZmljaWVudCBmb3IgVmFsdWVz
IGlmIHlvdSBkb24ndCBjcmVhdGUgdG9vIG1hbnkgb2YgdGhlc2UgbWFwcywgc2luY2UgVmFsdWVz
IGNhbiBoYXZlIHZlcnkKLS8vIHNwYXJzZSBpbmRpY2VzIGFuZCB0aGVyZSBhcmUgYSBsb3Qgb2Yg
VmFsdWVzLgotCi10ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlPgotY2xhc3Mg
SW5kZXhNYXAgewotcHVibGljOgotICAgIGV4cGxpY2l0IEluZGV4TWFwKHNpemVfdCBzaXplID0g
MCkKLSAgICB7Ci0gICAgICAgIG1fdmVjdG9yLmZpbGwoVmFsdWUoKSwgc2l6ZSk7Ci0gICAgfQot
Ci0gICAgdm9pZCByZXNpemUoc2l6ZV90IHNpemUpCi0gICAgewotICAgICAgICBtX3ZlY3Rvci5m
aWxsKFZhbHVlKCksIHNpemUpOwotICAgIH0KLQotICAgIHZvaWQgY2xlYXIoKQotICAgIHsKLSAg
ICAgICAgbV92ZWN0b3IuZmlsbChWYWx1ZSgpLCBtX3ZlY3Rvci5zaXplKCkpOwotICAgIH0KLQot
ICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV92ZWN0b3Iuc2l6ZSgpOyB9Ci0KLSAg
ICBWYWx1ZSYgb3BlcmF0b3JbXShzaXplX3QgaW5kZXgpCi0gICAgewotICAgICAgICByZXR1cm4g
bV92ZWN0b3JbaW5kZXhdOwotICAgIH0KLQotICAgIGNvbnN0IFZhbHVlJiBvcGVyYXRvcltdKHNp
emVfdCBpbmRleCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX3ZlY3RvcltpbmRleF07
Ci0gICAgfQotICAgIAotICAgIFZhbHVlJiBvcGVyYXRvcltdKEtleSoga2V5KQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIG1fdmVjdG9yW2tleS0+aW5kZXgoKV07Ci0gICAgfQotICAgIAotICAgIGNv
bnN0IFZhbHVlJiBvcGVyYXRvcltdKEtleSoga2V5KSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0
dXJuIG1fdmVjdG9yW2tleS0+aW5kZXgoKV07Ci0gICAgfQotCi1wcml2YXRlOgotICAgIFZlY3Rv
cjxWYWx1ZT4gbV92ZWN0b3I7Ci19OwotCi19IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKLQotI2Vu
ZGlmIC8vIEVOQUJMRShCM19KSVQpCi0KLSNlbmRpZiAvLyBCM0luZGV4TWFwX2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0luZGV4U2V0LmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNJbmRleFNldC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBh
YjliMmI0ZTM0YmY0MzgwMDdhZDIxN2NiNWM3YTNlYTk0Y2I5YTQ2Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M0luZGV4U2V0LmgKKysrIC9kZXYvbnVsbApAQCAtMSwxNjUgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0g
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpZm5kZWYgQjNJbmRleFNl
dF9oCi0jZGVmaW5lIEIzSW5kZXhTZXRfaAotCi0jaW5jbHVkZSA8d3RmL0JpdFZlY3Rvci5oPgot
I2luY2x1ZGUgPHd0Zi9Db21tYVByaW50ZXIuaD4KLQotbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFj
ZSBCMyB7Ci0KLS8vIFRoaXMgaXMgYSBzZXQgZm9yIHRoaW5ncyB0aGF0IGhhdmUgYW4gaW5kZXgo
KS4gSXQncyBzdXBlciBlZmZpY2llbnQgZm9yIEJhc2ljQmxvY2tzLiBJdCdzIG9ubHkKLS8vIGVm
ZmljaWVudCBmb3IgVmFsdWVzIGlmIHlvdSBkb24ndCBjcmVhdGUgdG9vIG1hbnkgb2YgdGhlc2Ug
c2V0cywgc2luY2UgVmFsdWVzIGNhbiBoYXZlIHZlcnkgc3BhcnNlCi0vLyBpbmRpY2VzIGFuZCB0
aGVyZSBhcmUgYSBsb3Qgb2YgVmFsdWVzLgotCi0vLyBJZiB5b3Ugd2FudCBhIHNldCBvZiBCYXNp
Y0Jsb2NrcywgeW91IGRvIEluZGV4U2V0PEJhc2ljQmxvY2s+LiBTbywgVCA9IEJhc2ljQmxvY2su
Ci10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotY2xhc3MgSW5kZXhTZXQgewotcHVibGljOgotICAgIElu
ZGV4U2V0KCkKLSAgICB7Ci0gICAgfQotCi0gICAgYm9vbCBhZGQoVCogdmFsdWUpCi0gICAgewot
ICAgICAgICByZXR1cm4gIW1fc2V0LnNldCh2YWx1ZS0+aW5kZXgoKSk7Ci0gICAgfQotCi0gICAg
dGVtcGxhdGU8dHlwZW5hbWUgSXRlcmFibGU+Ci0gICAgYm9vbCBhZGRBbGwoY29uc3QgSXRlcmFi
bGUmIGl0ZXJhYmxlKQotICAgIHsKLSAgICAgICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKLSAgICAg
ICAgZm9yIChUKiB2YWx1ZSA6IGl0ZXJhYmxlKQotICAgICAgICAgICAgcmVzdWx0IHw9IGFkZCh2
YWx1ZSk7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotCi0gICAgYm9vbCByZW1vdmUo
VCogdmFsdWUpCi0gICAgewotICAgICAgICByZXR1cm4gbV9zZXQuY2xlYXIodmFsdWUtPmluZGV4
KCkpOwotICAgIH0KLQotICAgIGJvb2wgY29udGFpbnMoVCogdmFsdWUpIGNvbnN0Ci0gICAgewot
ICAgICAgICBpZiAoIXZhbHVlKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBy
ZXR1cm4gbV9zZXQuZ2V0KHZhbHVlLT5pbmRleCgpKTsKLSAgICB9Ci0KLSAgICBzaXplX3Qgc2l6
ZSgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9zZXQuYml0Q291bnQoKTsKLSAgICB9
Ci0KLSAgICBib29sIGlzRW1wdHkoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuICFzaXpl
KCk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ29sbGVjdGlvblR5cGU+Ci0gICAg
Y2xhc3MgSXRlcmFibGUgewotICAgIHB1YmxpYzoKLSAgICAgICAgSXRlcmFibGUoY29uc3QgQ29s
bGVjdGlvblR5cGUmIGNvbGxlY3Rpb24sIGNvbnN0IEJpdFZlY3RvciYgc2V0KQotICAgICAgICAg
ICAgOiBtX2NvbGxlY3Rpb24oY29sbGVjdGlvbikKLSAgICAgICAgICAgICwgbV9zZXQoc2V0KQot
ICAgICAgICB7Ci0gICAgICAgIH0KLQotICAgICAgICBjbGFzcyBpdGVyYXRvciB7Ci0gICAgICAg
IHB1YmxpYzoKLSAgICAgICAgICAgIGl0ZXJhdG9yKCkKLSAgICAgICAgICAgICAgICA6IG1fY29s
bGVjdGlvbihudWxscHRyKQotICAgICAgICAgICAgewotICAgICAgICAgICAgfQotCi0gICAgICAg
ICAgICBpdGVyYXRvcihjb25zdCBDb2xsZWN0aW9uVHlwZSYgY29sbGVjdGlvbiwgQml0VmVjdG9y
OjppdGVyYXRvciBpdGVyKQotICAgICAgICAgICAgICAgIDogbV9jb2xsZWN0aW9uKCZjb2xsZWN0
aW9uKQotICAgICAgICAgICAgICAgICwgbV9pdGVyKGl0ZXIpCi0gICAgICAgICAgICB7Ci0gICAg
ICAgICAgICB9Ci0KLSAgICAgICAgICAgIFQqIG9wZXJhdG9yKigpCi0gICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuIG1fY29sbGVjdGlvbi0+YXQoKm1faXRlcik7Ci0gICAgICAg
ICAgICB9Ci0KLSAgICAgICAgICAgIGl0ZXJhdG9yJiBvcGVyYXRvcisrKCkKLSAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICArK21faXRlcjsKLSAgICAgICAgICAgICAgICByZXR1cm4gKnRo
aXM7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBp
dGVyYXRvciYgb3RoZXIpIGNvbnN0Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIG1faXRlciA9PSBvdGhlci5tX2l0ZXI7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAg
IGJvb2wgb3BlcmF0b3IhPShjb25zdCBpdGVyYXRvciYgb3RoZXIpIGNvbnN0Ci0gICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwotICAgICAgICAg
ICAgfQotCi0gICAgICAgIHByaXZhdGU6Ci0gICAgICAgICAgICBjb25zdCBDb2xsZWN0aW9uVHlw
ZSogbV9jb2xsZWN0aW9uOwotICAgICAgICAgICAgQml0VmVjdG9yOjppdGVyYXRvciBtX2l0ZXI7
Ci0gICAgICAgIH07Ci0KLSAgICAgICAgaXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVybiBp
dGVyYXRvcihtX2NvbGxlY3Rpb24sIG1fc2V0LmJlZ2luKCkpOyB9Ci0gICAgICAgIGl0ZXJhdG9y
IGVuZCgpIGNvbnN0IHsgcmV0dXJuIGl0ZXJhdG9yKG1fY29sbGVjdGlvbiwgbV9zZXQuZW5kKCkp
OyB9Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBjb25zdCBDb2xsZWN0aW9uVHlwZSYgbV9jb2xs
ZWN0aW9uOwotICAgICAgICBjb25zdCBCaXRWZWN0b3ImIG1fc2V0OwotICAgIH07Ci0KLSAgICAv
LyBGb3IgYmFzaWMgYmxvY2tzLCB5b3UgZG86Ci0gICAgLy8gaW5kZXhTZXQudmFsdWVzKHByb2Nl
ZHVyZSk7Ci0gICAgLy8KLSAgICAvLyBGb3IgdmFsdWVzLCB5b3UgZG86Ci0gICAgLy8gaW5kZXhT
ZXQudmFsdWVzKHByb2NlZHVyZS52YWx1ZXMoKSk7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ29s
bGVjdGlvblR5cGU+Ci0gICAgSXRlcmFibGU8Q29sbGVjdGlvblR5cGU+IHZhbHVlcyhjb25zdCBD
b2xsZWN0aW9uVHlwZSYgY29sbGVjdGlvbikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBJ
dGVyYWJsZTxDb2xsZWN0aW9uVHlwZT4oY29sbGVjdGlvbiwgaW5kaWNlcygpKTsKLSAgICB9Ci0K
LSAgICBjb25zdCBCaXRWZWN0b3ImIGluZGljZXMoKSBjb25zdCB7IHJldHVybiBtX3NldDsgfQot
Ci0gICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Ci0gICAgewotICAgICAgICBD
b21tYVByaW50ZXIgY29tbWE7Ci0gICAgICAgIGZvciAoc2l6ZV90IGluZGV4IDogaW5kaWNlcygp
KQotICAgICAgICAgICAgb3V0LnByaW50KGNvbW1hLCBUOjpkdW1wUHJlZml4LCBpbmRleCk7Ci0g
ICAgfQotCi1wcml2YXRlOgotICAgIEJpdFZlY3RvciBtX3NldDsKLX07Ci0KLX0gfSAvLyBuYW1l
c3BhY2UgSlNDOjpCMwotCi0jZW5kaWYgLy8gQjNJbmRleFNldF9oCi0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAKaW5kZXggZTI0NzA0M2I2NzhiMjA4M2YxMjI3MjMz
OTk1NTA0ZDhkNTM5YWUwNS4uOTQyZTI4ZjM0ZTY3YjNhYThhNTM2Y2MyYTE4OWEwZWFjYThmNmZl
OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAKQEAgLTQwLDgg
KzQwLDYgQEAKICNpbmNsdWRlICJCM0NoZWNrU3BlY2lhbC5oIgogI2luY2x1ZGUgIkIzQ29tbXV0
YXRpdml0eS5oIgogI2luY2x1ZGUgIkIzRG9taW5hdG9ycy5oIgotI2luY2x1ZGUgIkIzSW5kZXhN
YXAuaCIKLSNpbmNsdWRlICJCM0luZGV4U2V0LmgiCiAjaW5jbHVkZSAiQjNNZW1vcnlWYWx1ZS5o
IgogI2luY2x1ZGUgIkIzUGF0Y2hwb2ludFNwZWNpYWwuaCIKICNpbmNsdWRlICJCM1BhdGNocG9p
bnRWYWx1ZS5oIgpAQCAtNTUsNiArNTMsOCBAQAogI2luY2x1ZGUgIkIzVmFsdWVJbmxpbmVzLmgi
CiAjaW5jbHVkZSAiQjNWYXJpYWJsZS5oIgogI2luY2x1ZGUgIkIzVmFyaWFibGVWYWx1ZS5oIgor
I2luY2x1ZGUgPHd0Zi9JbmRleE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9JbmRleFNldC5oPgogI2lu
Y2x1ZGUgPHd0Zi9MaXN0RHVtcC5oPgogCiAjaWYgQ09NUElMRVIoR0NDKSAmJiBBU1NFUlRfRElT
QUJMRUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1BoaUNoaWxkcmVu
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQaGlDaGlsZHJlbi5oCmluZGV4IGNkZjM2
OGYyNGFhNmU1YTU4MzlmM2ZhYTY1ZGYwOWRhMDYzNDVjZTcuLmUxMWZjYmViODk2NTAxYzY2YWQz
YWNjMzdkMjAxYjAxNmU1NTBmY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM1BoaUNoaWxkcmVuLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUGhpQ2hp
bGRyZW4uaApAQCAtMjgsMTAgKzI4LDEwIEBACiAKICNpZiBFTkFCTEUoQjNfSklUKQogCi0jaW5j
bHVkZSAiQjNJbmRleE1hcC5oIgogI2luY2x1ZGUgIkIzUHJvY2VkdXJlLmgiCiAjaW5jbHVkZSAi
QjNVcHNpbG9uVmFsdWUuaCIKICNpbmNsdWRlIDx3dGYvR3JhcGhOb2RlV29ya2xpc3QuaD4KKyNp
bmNsdWRlIDx3dGYvSW5kZXhNYXAuaD4KIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Byb2NlZHVyZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJlLmgKaW5kZXggNTc2NDEzZTEwOTBh
ODQ3N2UzNGQ0MjM1OGM2OTg0NjVjMWFkNTkxZC4uZTJlMTM0ZGFiZWNkMDM3NDlmZTdhOTdmNDg4
YmU4ZmEwYmNjNDhkOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHJv
Y2VkdXJlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJlLmgKQEAg
LTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlIDx3dGYvQmFnLmg+CiAjaW5jbHVkZSA8d3RmL0Zhc3RN
YWxsb2MuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9JbmRleGVk
Q29udGFpbmVySXRlcmF0b3IuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNs
dWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KICNpbmNsdWRlIDx3dGYvU2hhcmVkVGFzay5oPgpAQCAt
MTMzLDUzICsxMzQsNyBAQCBjbGFzcyBQcm9jZWR1cmUgewogICAgIEJhc2ljQmxvY2sqIGF0KHVu
c2lnbmVkIGluZGV4KSBjb25zdCB7IHJldHVybiBtX2Jsb2Nrc1tpbmRleF0uZ2V0KCk7IH0KICAg
ICBCYXNpY0Jsb2NrKiBvcGVyYXRvcltdKHVuc2lnbmVkIGluZGV4KSBjb25zdCB7IHJldHVybiBh
dChpbmRleCk7IH0KIAotICAgIGNsYXNzIGl0ZXJhdG9yIHsKLSAgICBwdWJsaWM6Ci0gICAgICAg
IGl0ZXJhdG9yKCkKLSAgICAgICAgICAgIDogbV9wcm9jZWR1cmUobnVsbHB0cikKLSAgICAgICAg
ICAgICwgbV9pbmRleCgwKQotICAgICAgICB7Ci0gICAgICAgIH0KLQotICAgICAgICBpdGVyYXRv
cihjb25zdCBQcm9jZWR1cmUmIHByb2NlZHVyZSwgdW5zaWduZWQgaW5kZXgpCi0gICAgICAgICAg
ICA6IG1fcHJvY2VkdXJlKCZwcm9jZWR1cmUpCi0gICAgICAgICAgICAsIG1faW5kZXgoZmluZE5l
eHQoaW5kZXgpKQotICAgICAgICB7Ci0gICAgICAgIH0KLQotICAgICAgICBCYXNpY0Jsb2NrKiBv
cGVyYXRvciooKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbV9wcm9jZWR1cmUtPmF0
KG1faW5kZXgpOwotICAgICAgICB9Ci0KLSAgICAgICAgaXRlcmF0b3ImIG9wZXJhdG9yKysoKQot
ICAgICAgICB7Ci0gICAgICAgICAgICBtX2luZGV4ID0gZmluZE5leHQobV9pbmRleCArIDEpOwot
ICAgICAgICAgICAgcmV0dXJuICp0aGlzOwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IGl0ZXJhdG9yJiBvdGhlcikgY29uc3QKLSAgICAgICAgewotICAgICAgICAg
ICAgQVNTRVJUKG1fcHJvY2VkdXJlID09IG90aGVyLm1fcHJvY2VkdXJlKTsKLSAgICAgICAgICAg
IHJldHVybiBtX2luZGV4ID09IG90aGVyLm1faW5kZXg7Ci0gICAgICAgIH0KLSAgICAgICAgCi0g
ICAgICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBpdGVyYXRvciYgb3RoZXIpIGNvbnN0Ci0gICAg
ICAgIHsKLSAgICAgICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKLSAgICAgICAgfQot
Ci0gICAgcHJpdmF0ZToKLSAgICAgICAgdW5zaWduZWQgZmluZE5leHQodW5zaWduZWQgaW5kZXgp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHdoaWxlIChpbmRleCA8IG1fcHJvY2VkdXJlLT5zaXpl
KCkgJiYgIW1fcHJvY2VkdXJlLT5hdChpbmRleCkpCi0gICAgICAgICAgICAgICAgaW5kZXgrKzsK
LSAgICAgICAgICAgIHJldHVybiBpbmRleDsKLSAgICAgICAgfQotCi0gICAgICAgIGNvbnN0IFBy
b2NlZHVyZSogbV9wcm9jZWR1cmU7Ci0gICAgICAgIHVuc2lnbmVkIG1faW5kZXg7Ci0gICAgfTsK
KyAgICB0eXBlZGVmIFdURjo6SW5kZXhlZENvbnRhaW5lckl0ZXJhdG9yPFByb2NlZHVyZT4gaXRl
cmF0b3I7CiAKICAgICBpdGVyYXRvciBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIGl0ZXJhdG9yKCp0
aGlzLCAwKTsgfQogICAgIGl0ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0dXJuIGl0ZXJhdG9yKCp0
aGlzLCBzaXplKCkpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNS
ZWR1Y2VEb3VibGVUb0Zsb2F0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVj
ZURvdWJsZVRvRmxvYXQuY3BwCmluZGV4IDRjNzIxYzgyMDY0MzE3YTY0NjIxYWU5N2Y5ODk4ODU5
OTI1NDFhZDMuLmZjNGY1MjIyMDhjOTljNjJjOGI0ZWUzOWYyNzljMWM0NmM0ZjU2NTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVjZURvdWJsZVRvRmxvYXQuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVjZURvdWJsZVRvRmxvYXQuY3Bw
CkBAIC0yOSwxMSArMjksMTEgQEAKICNpZiBFTkFCTEUoQjNfSklUKQogCiAjaW5jbHVkZSAiQjNC
YXNpY0Jsb2NrLmgiCi0jaW5jbHVkZSAiQjNJbmRleFNldC5oIgogI2luY2x1ZGUgIkIzSW5zZXJ0
aW9uU2V0SW5saW5lcy5oIgogI2luY2x1ZGUgIkIzUGhhc2VTY29wZS5oIgogI2luY2x1ZGUgIkIz
VXNlQ291bnRzLmgiCiAjaW5jbHVkZSAiQjNWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRlIDx3dGYv
SW5kZXhTZXQuaD4KIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVjZVN0cmVuZ3RoLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVjZVN0cmVuZ3RoLmNwcAppbmRleCA0Y2JmMjUyODg2
Yjk3Y2NiZmIzNzY0MDU3ZjlmNjA0MmM2YTFlNWEwLi4wYmQxZWEwYjQ4Y2UxOWE2MGJlZjcyNmRi
ZTk4ODUwM2U5NDhjZDA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNS
ZWR1Y2VTdHJlbmd0aC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUmVkdWNl
U3RyZW5ndGguY3BwCkBAIC0zMiw3ICszMiw2IEBACiAjaW5jbHVkZSAiQjNCbG9ja0luc2VydGlv
blNldC5oIgogI2luY2x1ZGUgIkIzQ29tcHV0ZURpdmlzaW9uTWFnaWMuaCIKICNpbmNsdWRlICJC
M0RvbWluYXRvcnMuaCIKLSNpbmNsdWRlICJCM0luZGV4U2V0LmgiCiAjaW5jbHVkZSAiQjNJbnNl
cnRpb25TZXRJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQjNNZW1vcnlWYWx1ZS5oIgogI2luY2x1ZGUg
IkIzUGhhc2VTY29wZS5oIgpAQCAtNDgsNiArNDcsNyBAQAogI2luY2x1ZGUgIkIzVmFyaWFibGVW
YWx1ZS5oIgogI2luY2x1ZGUgPHd0Zi9HcmFwaE5vZGVXb3JrbGlzdC5oPgogI2luY2x1ZGUgPHd0
Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL0luZGV4U2V0Lmg+CiAKIG5hbWVzcGFjZSBKU0Mg
eyBuYW1lc3BhY2UgQjMgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNTU0FDYWxjdWxhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNTU0FDYWxjdWxh
dG9yLmgKaW5kZXggZjU3NjY4MjJmNGZmYzM2YmQ2YTIyYTk3NzBmMjAyMGRmNTEyNDQ2Yi4uMWU5
NjI4MjYyZmYzZmVkMjI5MDMxYWVhM2QxN2QwYjY4MTJhZmYzMSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzU1NBQ2FsY3VsYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM1NTQUNhbGN1bGF0b3IuaApAQCAtMjksOSArMjksOSBAQAogI2lmIEVOQUJM
RShCM19KSVQpCiAKICNpbmNsdWRlICJCM0RvbWluYXRvcnMuaCIKLSNpbmNsdWRlICJCM0luZGV4
TWFwLmgiCiAjaW5jbHVkZSAiQjNQcm9jZWR1cmVJbmxpbmVzLmgiCiAjaW5jbHVkZSA8d3RmL0Jh
Zy5oPgorI2luY2x1ZGUgPHd0Zi9JbmRleE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9TZWdtZW50ZWRW
ZWN0b3IuaD4KIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNVc2VDb3VudHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM1VzZUNvdW50cy5oCmluZGV4IGE1OWQ1OGFhNDZjNjI3Mjg1N2U4MjlkMzhhMTRl
ZjA4MDdiNzM3ZTkuLjZlOWU0ODJiNzk5ZDI0MGIwZTY1OTU2ZWY0NWJiNDY4NDMzZmZmNmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1VzZUNvdW50cy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1VzZUNvdW50cy5oCkBAIC0yOCw4ICsyOCw4IEBACiAK
ICNpZiBFTkFCTEUoQjNfSklUKQogCi0jaW5jbHVkZSAiQjNJbmRleE1hcC5oIgogI2luY2x1ZGUg
IkIzVmFsdWUuaCIKKyNpbmNsdWRlIDx3dGYvSW5kZXhNYXAuaD4KIAogbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBCMyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9h
aXIvQWlyQ29kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJDb2RlLmgKaW5k
ZXggNjRhNzQ1ZDAyMTBiNmE3ZmNiN2E5MzUxYjEzMGFlMDlhMjZkMjUwZC4uZjE5ZWZiMjgwMmY2
YWQ1NThlZTg3YmRlMmU2YWI2MjQ4YjYxNWEwZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL2Fpci9BaXJDb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fp
ci9BaXJDb2RlLmgKQEAgLTMzLDExICszMywxMSBAQAogI2luY2x1ZGUgIkFpclNwZWNpYWwuaCIK
ICNpbmNsdWRlICJBaXJTdGFja1Nsb3QuaCIKICNpbmNsdWRlICJBaXJUbXAuaCIKLSNpbmNsdWRl
ICJCM0luZGV4TWFwLmgiCiAjaW5jbHVkZSAiQjNTcGFyc2VDb2xsZWN0aW9uLmgiCiAjaW5jbHVk
ZSAiQ0NhbGxIZWxwZXJzLmgiCiAjaW5jbHVkZSAiUmVnaXN0ZXJBdE9mZnNldExpc3QuaCIKICNp
bmNsdWRlICJTdGFja0FsaWdubWVudC5oIgorI2luY2x1ZGUgPHd0Zi9JbmRleE1hcC5oPgogCiBu
YW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL2Fpci9BaXJFbGltaW5hdGVEZWFkQ29kZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvYWlyL0FpckVsaW1pbmF0ZURlYWRDb2RlLmNwcAppbmRleCAzNjYzZWFhOTk3
OTY3ZjU3ZTQ1MWJiNjFhNDZkOWFkYzMwMDEzYjc1Li5jYTM2YWY5M2U3OTEwNzk5Y2M3YmQ0ODEx
YjMwNzQ1NjVjNzM4ZjMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWly
L0FpckVsaW1pbmF0ZURlYWRDb2RlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
YWlyL0FpckVsaW1pbmF0ZURlYWRDb2RlLmNwcApAQCAtMzEsNyArMzEsNyBAQAogI2luY2x1ZGUg
IkFpckNvZGUuaCIKICNpbmNsdWRlICJBaXJJbnN0SW5saW5lcy5oIgogI2luY2x1ZGUgIkFpclBo
YXNlU2NvcGUuaCIKLSNpbmNsdWRlICJCM0luZGV4U2V0LmgiCisjaW5jbHVkZSA8d3RmL0luZGV4
U2V0Lmg+CiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgeyBuYW1lc3BhY2UgQWlyIHsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJGaXhPYnZpb3Vz
U3BpbGxzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRml4T2J2aW91c1Nw
aWxscy5jcHAKaW5kZXggNzFkOTkwZjIxZWY2NDYwNjRkMTI5M2YwZGIwZjdhMWVkMGIwZWJhNC4u
YmFiZDE3MzU4YmE4ZjQ5YjM0NGJlNWRhNmYwY2Y2YWYzMGI0NTY3MiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJGaXhPYnZpb3VzU3BpbGxzLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckZpeE9idmlvdXNTcGlsbHMuY3BwCkBAIC0z
Miw3ICszMiw3IEBACiAjaW5jbHVkZSAiQWlyQ29kZS5oIgogI2luY2x1ZGUgIkFpckluc3RJbmxp
bmVzLmgiCiAjaW5jbHVkZSAiQWlyUGhhc2VTY29wZS5oIgotI2luY2x1ZGUgIkIzSW5kZXhNYXAu
aCIKKyNpbmNsdWRlIDx3dGYvSW5kZXhNYXAuaD4KICNpbmNsdWRlIDx3dGYvTGlzdER1bXAuaD4K
IAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7IG5hbWVzcGFjZSBBaXIgewpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJGaXhQYXJ0aWFsUmVnaXN0ZXJT
dGFsbHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJGaXhQYXJ0aWFsUmVn
aXN0ZXJTdGFsbHMuY3BwCmluZGV4IGVkN2I4MGEwYzhiNDZhYTI0Y2JhYzZkOTdiZTM5ZGFkNmQy
MTdjZmIuLjUzOTk3OTkyZDg2Y2I3MjAzYmMwZWM4MzRjMGY4NmQ0ZjE1NWM0MzYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRml4UGFydGlhbFJlZ2lzdGVyU3Rh
bGxzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckZpeFBhcnRpYWxS
ZWdpc3RlclN0YWxscy5jcHAKQEAgLTM0LDkgKzM0LDkgQEAKICNpbmNsdWRlICJBaXJJbnN0Lmgi
CiAjaW5jbHVkZSAiQWlySW5zdElubGluZXMuaCIKICNpbmNsdWRlICJBaXJQaGFzZVNjb3BlLmgi
Ci0jaW5jbHVkZSAiQjNJbmRleE1hcC5oIgotI2luY2x1ZGUgIkIzSW5kZXhTZXQuaCIKICNpbmNs
dWRlICJNYWNyb0Fzc2VtYmxlci5oIgorI2luY2x1ZGUgPHd0Zi9JbmRleE1hcC5oPgorI2luY2x1
ZGUgPHd0Zi9JbmRleFNldC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNl
IEpTQyB7IG5hbWVzcGFjZSBCMyB7IG5hbWVzcGFjZSBBaXIgewpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJHZW5lcmF0ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvYWlyL0FpckdlbmVyYXRlLmNwcAppbmRleCA0MTE4NDEyMWM4NTBjMzdiNTM2MThk
ZmU4YmEzOTRmNDQwN2JkYTAwLi4wYTE4YWRhNjBjYjZkNTUyMDkzMjlkOWM2NzZmN2FlODlkMmNi
MTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckdlbmVyYXRl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckdlbmVyYXRlLmNwcApA
QCAtNDgsMTMgKzQ4LDEzIEBACiAjaW5jbHVkZSAiQWlyU3BpbGxFdmVyeXRoaW5nLmgiCiAjaW5j
bHVkZSAiQWlyVmFsaWRhdGUuaCIKICNpbmNsdWRlICJCM0NvbW1vbi5oIgotI2luY2x1ZGUgIkIz
SW5kZXhNYXAuaCIKICNpbmNsdWRlICJCM1Byb2NlZHVyZS5oIgogI2luY2x1ZGUgIkIzVGltaW5n
U2NvcGUuaCIKICNpbmNsdWRlICJCM1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkNDYWxsSGVs
cGVycy5oIgogI2luY2x1ZGUgIkRpc2FsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZS5oIgog
I2luY2x1ZGUgIkxpbmtCdWZmZXIuaCIKKyNpbmNsdWRlIDx3dGYvSW5kZXhNYXAuaD4KIAogbmFt
ZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7IG5hbWVzcGFjZSBBaXIgewogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckdlbmVyYXRpb25Db250ZXh0LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckdlbmVyYXRpb25Db250ZXh0LmgKaW5kZXgg
ZWNhOTA3ZjAxZWRmY2Y1MTA2N2Q5ODk1ZDkxZDljMzE2MmZhMzc4MS4uN2RjNmUwZDMyNDQ3ZGY2
YjM1NzY4NWQ5ODgxM2YxOTNlZTQyM2U3MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL2Fpci9BaXJHZW5lcmF0aW9uQ29udGV4dC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9haXIvQWlyR2VuZXJhdGlvbkNvbnRleHQuaApAQCAtMjksOSArMjksOSBAQAogI2lm
IEVOQUJMRShCM19KSVQpCiAKICNpbmNsdWRlICJBaXJCYXNpY0Jsb2NrLmgiCi0jaW5jbHVkZSAi
QjNJbmRleE1hcC5oIgogI2luY2x1ZGUgIkNDYWxsSGVscGVycy5oIgogI2luY2x1ZGUgPHd0Zi9C
b3guaD4KKyNpbmNsdWRlIDx3dGYvSW5kZXhNYXAuaD4KICNpbmNsdWRlIDx3dGYvU2hhcmVkVGFz
ay5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL2Fpci9BaXJMaXZlbmVzcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L2Fpci9BaXJMaXZlbmVzcy5oCmluZGV4IGFjMTE4YWFmNWYyMzBjOGQwZGM5YWIzYzUyZTVjMTY2
OTcxYmM4YWUuLmYwMTQ2MGE0MTk1ZDJiMDAwY2U1YmZhZDBiMmM3ZDE3NTlkNmNjNDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyTGl2ZW5lc3MuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckxpdmVuZXNzLmgKQEAgLTMzLDggKzMzLDgg
QEAKICNpbmNsdWRlICJBaXJJbnN0SW5saW5lcy5oIgogI2luY2x1ZGUgIkFpclN0YWNrU2xvdC5o
IgogI2luY2x1ZGUgIkFpclRtcElubGluZXMuaCIKLSNpbmNsdWRlICJCM0luZGV4TWFwLmgiCi0j
aW5jbHVkZSAiQjNJbmRleFNldC5oIgorI2luY2x1ZGUgPHd0Zi9JbmRleE1hcC5oPgorI2luY2x1
ZGUgPHd0Zi9JbmRleFNldC5oPgogI2luY2x1ZGUgPHd0Zi9JbmRleFNwYXJzZVNldC5oPgogI2lu
Y2x1ZGUgPHd0Zi9MaXN0RHVtcC5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvYWlyL0FpclNwaWxsRXZlcnl0aGluZy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvYWlyL0FpclNwaWxsRXZlcnl0aGluZy5jcHAKaW5kZXggM2EwNjM2ZGU5YTFiZWFhYzlkZGZh
YWNkYzgzNDQwNzZmZGUzM2VjOC4uMTY3NjcwNThmZjU4ZmVkOGRmYmU5MzEwYzA5N2MzOGMyZmU1
YWM1MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJTcGlsbEV2
ZXJ5dGhpbmcuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyU3BpbGxF
dmVyeXRoaW5nLmNwcApAQCAtMzUsNyArMzUsNyBAQAogI2luY2x1ZGUgIkFpckxpdmVuZXNzLmgi
CiAjaW5jbHVkZSAiQWlyUGhhc2VTY29wZS5oIgogI2luY2x1ZGUgIkFpclJlZ2lzdGVyUHJpb3Jp
dHkuaCIKLSNpbmNsdWRlICJCM0luZGV4TWFwLmgiCisjaW5jbHVkZSA8d3RmL0luZGV4TWFwLmg+
CiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgeyBuYW1lc3BhY2UgQWlyIHsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0dlbmVyYXRvclByb3RvdHlw
ZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9HZW5lcmF0b3JQcm90b3R5cGUu
anMKaW5kZXggM2MxNDA2ODdkZmM3ZTAwZWZlOTFhZTgwYjJhYzY3NmZhOWJmNDhmNC4uNDk5ZGJk
MzkyZTgzMTNkY2RkODZlYzhjMTYwNTY5ZDdkNmY1NDliMSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J1aWx0aW5zL0dlbmVyYXRvclByb3RvdHlwZS5qcworKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvR2VuZXJhdG9yUHJvdG90eXBlLmpzCkBAIC01MSw3ICs1
MSw3IEBAIGZ1bmN0aW9uIGdlbmVyYXRvclJlc3VtZShnZW5lcmF0b3IsIHNlbnRWYWx1ZSwgcmVz
dW1lTW9kZSkKICAgICB9IGVsc2UgewogICAgICAgICB0cnkgewogICAgICAgICAgICAgZ2VuZXJh
dG9yLkBnZW5lcmF0b3JTdGF0ZSA9IEBHZW5lcmF0b3JTdGF0ZUV4ZWN1dGluZzsKLSAgICAgICAg
ICAgIHZhbHVlID0gZ2VuZXJhdG9yLkBnZW5lcmF0b3JOZXh0LkBjYWxsKGdlbmVyYXRvci5AZ2Vu
ZXJhdG9yVGhpcywgZ2VuZXJhdG9yLCBzdGF0ZSwgc2VudFZhbHVlLCByZXN1bWVNb2RlKTsKKyAg
ICAgICAgICAgIHZhbHVlID0gZ2VuZXJhdG9yLkBnZW5lcmF0b3JOZXh0LkBjYWxsKGdlbmVyYXRv
ci5AZ2VuZXJhdG9yVGhpcywgZ2VuZXJhdG9yLCBzdGF0ZSwgc2VudFZhbHVlLCByZXN1bWVNb2Rl
LCBnZW5lcmF0b3IuQGdlbmVyYXRvckZyYW1lKTsKICAgICAgICAgICAgIGlmIChnZW5lcmF0b3Iu
QGdlbmVyYXRvclN0YXRlID09PSBAR2VuZXJhdG9yU3RhdGVFeGVjdXRpbmcpIHsKICAgICAgICAg
ICAgICAgICBnZW5lcmF0b3IuQGdlbmVyYXRvclN0YXRlID0gQEdlbmVyYXRvclN0YXRlQ29tcGxl
dGVkOwogICAgICAgICAgICAgICAgIGRvbmUgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcAppbmRleCA3ZjE3YzBl
ZjEwYjQzM2ZhYzhmNThjYjNiOWNhNWQ0ZDAxNWJiYTA4Li4yOTkwODJkZGQxZWM3ZWNmZjdhNmMx
OTgzYzFlZGFiZGU1M2JjYzNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1
ZGUgIkJ5dGVjb2RlQmFzaWNCbG9jay5oIgogCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5j
bHVkZSAiSW50ZXJwcmV0ZXJJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2lu
Y2x1ZGUgIlByZWNpc2VKdW1wVGFyZ2V0cy5oIgogCkBAIC0xMDUsMTUgKzEwNiwyMSBAQCBzdGF0
aWMgYm9vbCBpc0p1bXBUYXJnZXQoT3Bjb2RlSUQgb3Bjb2RlSUQsIGNvbnN0IFZlY3Rvcjx1bnNp
Z25lZCwgMzI+JiBqdW1wVGFyZwogICAgIHJldHVybiBzdGQ6OmJpbmFyeV9zZWFyY2goanVtcFRh
cmdldHMuYmVnaW4oKSwganVtcFRhcmdldHMuZW5kKCksIGJ5dGVjb2RlT2Zmc2V0KTsKIH0KIAot
c3RhdGljIHZvaWQgbGlua0Jsb2NrcyhCeXRlY29kZUJhc2ljQmxvY2sqIHByZWRlY2Vzc29yLCBC
eXRlY29kZUJhc2ljQmxvY2sqIHN1Y2Nlc3NvcikKLXsKLSAgICBwcmVkZWNlc3Nvci0+YWRkU3Vj
Y2Vzc29yKHN1Y2Nlc3Nvcik7Ci19Ci0KLXZvaWQgY29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3Mo
Q29kZUJsb2NrKiBjb2RlQmxvY2ssIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNp
Y0Jsb2NrPj4mIGJhc2ljQmxvY2tzKQordGVtcGxhdGU8dHlwZW5hbWUgQmxvY2ssIHR5cGVuYW1l
IEluc3RydWN0aW9uPgordm9pZCBCeXRlY29kZUJhc2ljQmxvY2s6OmNvbXB1dGVCeXRlY29kZUJh
c2ljQmxvY2tzSW50ZXJuYWwoQmxvY2sqIGNvZGVCbG9jaywgSW5zdHJ1Y3Rpb24qIGluc3RydWN0
aW9uc0JlZ2luLCB1bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50LCBWZWN0b3I8c3RkOjp1bmlxdWVf
cHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+JiBiYXNpY0Jsb2NrcykKIHsKICAgICBWZWN0b3I8dW5z
aWduZWQsIDMyPiBqdW1wVGFyZ2V0czsKLSAgICBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKGNv
ZGVCbG9jaywganVtcFRhcmdldHMpOworICAgIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMoY29k
ZUJsb2NrLCBpbnN0cnVjdGlvbnNCZWdpbiwgaW5zdHJ1Y3Rpb25Db3VudCwganVtcFRhcmdldHMp
OworCisgICAgYXV0byBhcHBlbmRCbG9jayA9IFsmXSAoc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2Rl
QmFzaWNCbG9jaz4mJiBibG9jaykgeworICAgICAgICBibG9jay0+bV9pbmRleCA9IGJhc2ljQmxv
Y2tzLnNpemUoKTsKKyAgICAgICAgYmFzaWNCbG9ja3MuYXBwZW5kKFdURk1vdmUoYmxvY2spKTsK
KyAgICB9OworCisgICAgYXV0byBsaW5rQmxvY2tzID0gWyZdIChCeXRlY29kZUJhc2ljQmxvY2sq
IGZyb20sIEJ5dGVjb2RlQmFzaWNCbG9jayogdG8pIHsKKyAgICAgICAgZnJvbS0+YWRkU3VjY2Vz
c29yKHRvKTsKKyAgICAgICAgdG8tPmFkZFByZWRlY2Vzc29yKGZyb20pOworICAgIH07CiAKICAg
ICAvLyBDcmVhdGUgdGhlIGVudHJ5IGFuZCBleGl0IGJhc2ljIGJsb2Nrcy4KICAgICBiYXNpY0Js
b2Nrcy5yZXNlcnZlQ2FwYWNpdHkoanVtcFRhcmdldHMuc2l6ZSgpICsgMik7CkBAIC0xMjIsMTkg
KzEyOSwxNyBAQCB2b2lkIGNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzKENvZGVCbG9jayogY29k
ZUJsb2NrLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dAogICAgIGF1dG8gZmlyc3RCbG9jayA9
IHN0ZDo6bWFrZV91bmlxdWU8Qnl0ZWNvZGVCYXNpY0Jsb2NrPigwLCAwKTsKICAgICBsaW5rQmxv
Y2tzKGVudHJ5LmdldCgpLCBmaXJzdEJsb2NrLmdldCgpKTsKIAotICAgIGJhc2ljQmxvY2tzLmFw
cGVuZChXVEZNb3ZlKGVudHJ5KSk7CisgICAgYXBwZW5kQmxvY2soV1RGTW92ZShlbnRyeSkpOwog
ICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogY3VycmVudCA9IGZpcnN0QmxvY2suZ2V0KCk7Ci0gICAg
YmFzaWNCbG9ja3MuYXBwZW5kKFdURk1vdmUoZmlyc3RCbG9jaykpOworICAgIGFwcGVuZEJsb2Nr
KFdURk1vdmUoZmlyc3RCbG9jaykpOwogCiAgICAgYXV0byBleGl0ID0gc3RkOjptYWtlX3VuaXF1
ZTxCeXRlY29kZUJhc2ljQmxvY2s+KEJ5dGVjb2RlQmFzaWNCbG9jazo6RXhpdEJsb2NrKTsKIAog
ICAgIGJvb2wgbmV4dEluc3RydWN0aW9uSXNMZWFkZXIgPSBmYWxzZTsKIAogICAgIEludGVycHJl
dGVyKiBpbnRlcnByZXRlciA9IGNvZGVCbG9jay0+dm0oKS0+aW50ZXJwcmV0ZXI7Ci0gICAgSW5z
dHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luID0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5i
ZWdpbigpOwotICAgIHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQgPSBjb2RlQmxvY2stPmluc3Ry
dWN0aW9ucygpLnNpemUoKTsKICAgICBmb3IgKHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0ID0gMDsg
Ynl0ZWNvZGVPZmZzZXQgPCBpbnN0cnVjdGlvbkNvdW50OykgewotICAgICAgICBPcGNvZGVJRCBv
cGNvZGVJRCA9IGludGVycHJldGVyLT5nZXRPcGNvZGVJRChpbnN0cnVjdGlvbnNCZWdpbltieXRl
Y29kZU9mZnNldF0udS5vcGNvZGUpOworICAgICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGludGVy
cHJldGVyLT5nZXRPcGNvZGVJRChpbnN0cnVjdGlvbnNCZWdpbltieXRlY29kZU9mZnNldF0pOwog
ICAgICAgICB1bnNpZ25lZCBvcGNvZGVMZW5ndGggPSBvcGNvZGVMZW5ndGhzW29wY29kZUlEXTsK
IAogICAgICAgICBib29sIGNyZWF0ZWRCbG9jayA9IGZhbHNlOwpAQCAtMTQyLDcgKzE0Nyw3IEBA
IHZvaWQgY29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFZl
Y3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0CiAgICAgICAgIGlmIChpc0p1bXBUYXJnZXQob3Bjb2Rl
SUQsIGp1bXBUYXJnZXRzLCBieXRlY29kZU9mZnNldCkgfHwgbmV4dEluc3RydWN0aW9uSXNMZWFk
ZXIpIHsKICAgICAgICAgICAgIGF1dG8gbmV3QmxvY2sgPSBzdGQ6Om1ha2VfdW5pcXVlPEJ5dGVj
b2RlQmFzaWNCbG9jaz4oYnl0ZWNvZGVPZmZzZXQsIG9wY29kZUxlbmd0aCk7CiAgICAgICAgICAg
ICBjdXJyZW50ID0gbmV3QmxvY2suZ2V0KCk7Ci0gICAgICAgICAgICBiYXNpY0Jsb2Nrcy5hcHBl
bmQoV1RGTW92ZShuZXdCbG9jaykpOworICAgICAgICAgICAgYXBwZW5kQmxvY2soV1RGTW92ZShu
ZXdCbG9jaykpOwogICAgICAgICAgICAgY3JlYXRlZEJsb2NrID0gdHJ1ZTsKICAgICAgICAgICAg
IG5leHRJbnN0cnVjdGlvbklzTGVhZGVyID0gZmFsc2U7CiAgICAgICAgICAgICBieXRlY29kZU9m
ZnNldCArPSBvcGNvZGVMZW5ndGg7CkBAIC0xNjksOCArMTc0LDcgQEAgdm9pZCBjb21wdXRlQnl0
ZWNvZGVCYXNpY0Jsb2NrcyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgVmVjdG9yPHN0ZDo6dW5pcXVl
X3B0cjxCeXQKIAogICAgICAgICBib29sIGZhbGxzVGhyb3VnaCA9IHRydWU7IAogICAgICAgICBm
b3IgKHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0ID0gYmxvY2stPmxlYWRlckJ5dGVjb2RlT2Zmc2V0
KCk7IGJ5dGVjb2RlT2Zmc2V0IDwgYmxvY2stPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCkgKyBibG9j
ay0+dG90YWxCeXRlY29kZUxlbmd0aCgpOykgewotICAgICAgICAgICAgY29uc3QgSW5zdHJ1Y3Rp
b24mIGN1cnJlbnRJbnN0cnVjdGlvbiA9IGluc3RydWN0aW9uc0JlZ2luW2J5dGVjb2RlT2Zmc2V0
XTsKLSAgICAgICAgICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0ZXItPmdldE9wY29k
ZUlEKGN1cnJlbnRJbnN0cnVjdGlvbi51Lm9wY29kZSk7CisgICAgICAgICAgICBPcGNvZGVJRCBv
cGNvZGVJRCA9IGludGVycHJldGVyLT5nZXRPcGNvZGVJRChpbnN0cnVjdGlvbnNCZWdpbltieXRl
Y29kZU9mZnNldF0pOwogICAgICAgICAgICAgdW5zaWduZWQgb3Bjb2RlTGVuZ3RoID0gb3Bjb2Rl
TGVuZ3Roc1tvcGNvZGVJRF07CiAgICAgICAgICAgICAvLyBJZiB3ZSBmb3VuZCBhIHRlcm1pbmFs
IGJ5dGVjb2RlLCBsaW5rIHRvIHRoZSBleGl0IGJsb2NrLgogICAgICAgICAgICAgaWYgKGlzVGVy
bWluYWwob3Bjb2RlSUQpKSB7CkBAIC0xODUsNyArMTg5LDcgQEAgdm9pZCBjb21wdXRlQnl0ZWNv
ZGVCYXNpY0Jsb2NrcyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0
cjxCeXQKICAgICAgICAgICAgIC8vIGJsb2NrIGJlY2F1c2UgdGhlIGZpbmFsbHkgYmxvY2sgd2ls
bCBjcmVhdGUgaXRzIG93biBjYXRjaCwgd2hpY2ggd2lsbCBnZW5lcmF0ZSBhIEhhbmRsZXJJbmZv
LgogICAgICAgICAgICAgaWYgKGlzVGhyb3cob3Bjb2RlSUQpKSB7CiAgICAgICAgICAgICAgICAg
QVNTRVJUKGJ5dGVjb2RlT2Zmc2V0ICsgb3Bjb2RlTGVuZ3RoID09IGJsb2NrLT5sZWFkZXJCeXRl
Y29kZU9mZnNldCgpICsgYmxvY2stPnRvdGFsQnl0ZWNvZGVMZW5ndGgoKSk7Ci0gICAgICAgICAg
ICAgICAgSGFuZGxlckluZm8qIGhhbmRsZXIgPSBjb2RlQmxvY2stPmhhbmRsZXJGb3JCeXRlY29k
ZU9mZnNldChieXRlY29kZU9mZnNldCk7CisgICAgICAgICAgICAgICAgYXV0byogaGFuZGxlciA9
IGNvZGVCbG9jay0+aGFuZGxlckZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KTsKICAg
ICAgICAgICAgICAgICBmYWxsc1Rocm91Z2ggPSBmYWxzZTsKICAgICAgICAgICAgICAgICBpZiAo
IWhhbmRsZXIpIHsKICAgICAgICAgICAgICAgICAgICAgbGlua0Jsb2NrcyhibG9jaywgZXhpdC5n
ZXQoKSk7CkBAIC0yMDUsNyArMjA5LDcgQEAgdm9pZCBjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2Nr
cyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXQKICAgICAg
ICAgICAgIGlmIChpc0JyYW5jaChvcGNvZGVJRCkpIHsKICAgICAgICAgICAgICAgICBBU1NFUlQo
Ynl0ZWNvZGVPZmZzZXQgKyBvcGNvZGVMZW5ndGggPT0gYmxvY2stPmxlYWRlckJ5dGVjb2RlT2Zm
c2V0KCkgKyBibG9jay0+dG90YWxCeXRlY29kZUxlbmd0aCgpKTsKICAgICAgICAgICAgICAgICBW
ZWN0b3I8dW5zaWduZWQsIDE+IGJ5dGVjb2RlT2Zmc2V0c0p1bXBlZFRvOwotICAgICAgICAgICAg
ICAgIGZpbmRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9jaywgYnl0ZWNvZGVP
ZmZzZXQsIGJ5dGVjb2RlT2Zmc2V0c0p1bXBlZFRvKTsKKyAgICAgICAgICAgICAgICBmaW5kSnVt
cFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChjb2RlQmxvY2ssIGluc3RydWN0aW9uc0JlZ2luLCBi
eXRlY29kZU9mZnNldCwgYnl0ZWNvZGVPZmZzZXRzSnVtcGVkVG8pOwogCiAgICAgICAgICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGJhc2ljQmxvY2tzLnNpemUoKTsgaSsrKSB7CiAg
ICAgICAgICAgICAgICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogb3RoZXJCbG9jayA9IGJhc2lj
QmxvY2tzW2ldLmdldCgpOwpAQCAtMjI5LDEwICsyMzMsMjAgQEAgdm9pZCBjb21wdXRlQnl0ZWNv
ZGVCYXNpY0Jsb2NrcyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0
cjxCeXQKICAgICAgICAgfQogICAgIH0KIAotICAgIGJhc2ljQmxvY2tzLmFwcGVuZChXVEZNb3Zl
KGV4aXQpKTsKKyAgICBhcHBlbmRCbG9jayhXVEZNb3ZlKGV4aXQpKTsKICAgICAKICAgICBmb3Ig
KGF1dG8mIGJhc2ljQmxvY2sgOiBiYXNpY0Jsb2NrcykKICAgICAgICAgYmFzaWNCbG9jay0+c2hy
aW5rVG9GaXQoKTsKIH0KIAordm9pZCBCeXRlY29kZUJhc2ljQmxvY2s6OmNvbXB1dGVCeXRlY29k
ZUJhc2ljQmxvY2tzKENvZGVCbG9jayogY29kZUJsb2NrLCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rp
b25zQmVnaW4sIHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQsIFZlY3RvcjxzdGQ6OnVuaXF1ZV9w
dHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mIGJhc2ljQmxvY2tzKQoreworICAgIGNvbXB1dGVCeXRl
Y29kZUJhc2ljQmxvY2tzSW50ZXJuYWwoY29kZUJsb2NrLCBpbnN0cnVjdGlvbnNCZWdpbiwgaW5z
dHJ1Y3Rpb25Db3VudCwgYmFzaWNCbG9ja3MpOworfQorCit2b2lkIEJ5dGVjb2RlQmFzaWNCbG9j
azo6Y29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MoVW5saW5rZWRDb2RlQmxvY2sqIGNvZGVCbG9j
aywgVW5saW5rZWRJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGluc3Ry
dWN0aW9uQ291bnQsIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4m
IGJhc2ljQmxvY2tzKQoreworICAgIEJ5dGVjb2RlQmFzaWNCbG9jazo6Y29tcHV0ZUJ5dGVjb2Rl
QmFzaWNCbG9ja3NJbnRlcm5hbChjb2RlQmxvY2ssIGluc3RydWN0aW9uc0JlZ2luLCBpbnN0cnVj
dGlvbkNvdW50LCBiYXNpY0Jsb2Nrcyk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5oCmlu
ZGV4IGJkN2QzYWU5YmEzNDNlMWIwNzE3OWU5OGYxZWU4OWRhNjViYTdlMjAuLjExOWJlN2M2NjIz
MGM5OGVhOWQ3ZmIyODA4Y2JmMjk0ZGMxYTJhNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmgKQEAgLTM1LDYgKzM1LDkgQEAK
IG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBDb2RlQmxvY2s7CitjbGFzcyBVbmxpbmtlZENvZGVC
bG9jazsKK3N0cnVjdCBJbnN0cnVjdGlvbjsKK3N0cnVjdCBVbmxpbmtlZEluc3RydWN0aW9uOwog
CiBjbGFzcyBCeXRlY29kZUJhc2ljQmxvY2sgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwpAQCAtNTAsMjggKzUzLDM5IEBAIGNsYXNzIEJ5dGVjb2RlQmFzaWNCbG9jayB7CiAgICAgdW5z
aWduZWQgbGVhZGVyQnl0ZWNvZGVPZmZzZXQoKSB7IHJldHVybiBtX2xlYWRlckJ5dGVjb2RlT2Zm
c2V0OyB9CiAgICAgdW5zaWduZWQgdG90YWxCeXRlY29kZUxlbmd0aCgpIHsgcmV0dXJuIG1fdG90
YWxCeXRlY29kZUxlbmd0aDsgfQogCi0gICAgVmVjdG9yPHVuc2lnbmVkPiYgYnl0ZWNvZGVPZmZz
ZXRzKCkgeyByZXR1cm4gbV9ieXRlY29kZU9mZnNldHM7IH0KLSAgICB2b2lkIGFkZEJ5dGVjb2Rl
TGVuZ3RoKHVuc2lnbmVkKTsKKyAgICBjb25zdCBWZWN0b3I8dW5zaWduZWQ+JiBieXRlY29kZU9m
ZnNldHMoKSBjb25zdCB7IHJldHVybiBtX2J5dGVjb2RlT2Zmc2V0czsgfQogCi0gICAgVmVjdG9y
PEJ5dGVjb2RlQmFzaWNCbG9jayo+JiBzdWNjZXNzb3JzKCkgeyByZXR1cm4gbV9zdWNjZXNzb3Jz
OyB9Ci0gICAgdm9pZCBhZGRTdWNjZXNzb3IoQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaykgeyBt
X3N1Y2Nlc3NvcnMuYXBwZW5kKGJsb2NrKTsgfQorICAgIGNvbnN0IFZlY3RvcjxCeXRlY29kZUJh
c2ljQmxvY2sqPiYgc3VjY2Vzc29ycygpIGNvbnN0IHsgcmV0dXJuIG1fc3VjY2Vzc29yczsgfQor
ICAgIGNvbnN0IFZlY3RvcjxCeXRlY29kZUJhc2ljQmxvY2sqPiYgcHJlZGVjZXNzb3JzKCkgY29u
c3QgeyByZXR1cm4gbV9wcmVkZWNlc3NvcnM7IH0KIAogICAgIEZhc3RCaXRWZWN0b3ImIGluKCkg
eyByZXR1cm4gbV9pbjsgfQogICAgIEZhc3RCaXRWZWN0b3ImIG91dCgpIHsgcmV0dXJuIG1fb3V0
OyB9CiAKKyAgICB1bnNpZ25lZCBpbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1faW5kZXg7IH0KKwor
ICAgIHN0YXRpYyB2b2lkIGNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzKENvZGVCbG9jayosIElu
c3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCwg
VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYpOworICAgIHN0YXRp
YyB2b2lkIGNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzKFVubGlua2VkQ29kZUJsb2NrKiwgVW5s
aW5rZWRJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGluc3RydWN0aW9u
Q291bnQsIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mKTsKKwog
cHJpdmF0ZToKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBCbG9jaywgdHlwZW5hbWUgSW5zdHJ1Y3Rp
b24+IHN0YXRpYyB2b2lkIGNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzSW50ZXJuYWwoQmxvY2sq
IGNvZGVCbG9jaywgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBpbnN0
cnVjdGlvbkNvdW50LCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+
JiBiYXNpY0Jsb2Nrcyk7CisKKyAgICB2b2lkIGFkZFN1Y2Nlc3NvcihCeXRlY29kZUJhc2ljQmxv
Y2sqIGJsb2NrKSB7IG1fc3VjY2Vzc29ycy5hcHBlbmQoYmxvY2spOyB9CisgICAgdm9pZCBhZGRQ
cmVkZWNlc3NvcihCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrKSB7IG1fcHJlZGVjZXNzb3JzLmFw
cGVuZChibG9jayk7IH0KKworICAgIHZvaWQgYWRkQnl0ZWNvZGVMZW5ndGgodW5zaWduZWQpOwor
CiAgICAgdW5zaWduZWQgbV9sZWFkZXJCeXRlY29kZU9mZnNldDsKICAgICB1bnNpZ25lZCBtX3Rv
dGFsQnl0ZWNvZGVMZW5ndGg7CisgICAgdW5zaWduZWQgbV9pbmRleDsKIAogICAgIFZlY3Rvcjx1
bnNpZ25lZD4gbV9ieXRlY29kZU9mZnNldHM7CiAgICAgVmVjdG9yPEJ5dGVjb2RlQmFzaWNCbG9j
ayo+IG1fc3VjY2Vzc29yczsKKyAgICBWZWN0b3I8Qnl0ZWNvZGVCYXNpY0Jsb2NrKj4gbV9wcmVk
ZWNlc3NvcnM7CiAKICAgICBGYXN0Qml0VmVjdG9yIG1faW47CiAgICAgRmFzdEJpdFZlY3RvciBt
X291dDsKIH07CiAKLXZvaWQgY29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MoQ29kZUJsb2NrKiwg
VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYpOwotCiBpbmxpbmUg
Qnl0ZWNvZGVCYXNpY0Jsb2NrOjpCeXRlY29kZUJhc2ljQmxvY2sodW5zaWduZWQgc3RhcnQsIHVu
c2lnbmVkIGxlbmd0aCkKICAgICA6IG1fbGVhZGVyQnl0ZWNvZGVPZmZzZXQoc3RhcnQpCiAgICAg
LCBtX3RvdGFsQnl0ZWNvZGVMZW5ndGgobGVuZ3RoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMTE5YTU4ZTM2NDkxY2FkYmE5MWI0NTk5MjdkYTE1Mjc1ODk2ZjE5YgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUdl
bmVyYXRvcmlmaWNhdGlvbi5jcHAKQEAgLTAsMCArMSw2NDEgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTYgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRp
b24uaCIKKworI2luY2x1ZGUgIkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGluZXMuaCIKKyNp
bmNsdWRlICJCeXRlY29kZU1vZGlmaWNhdGlvblNldC5oIgorI2luY2x1ZGUgIkJ5dGVjb2RlVXNl
RGVmLmgiCisjaW5jbHVkZSAiSWRlbnRpZmllcklubGluZXMuaCIKKyNpbmNsdWRlICJJbnRlcnBy
ZXRlcklubGluZXMuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgorI2luY2x1ZGUg
IkpTR2VuZXJhdG9yRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJTdHJvbmdJbmxpbmVzLmgiCisjaW5j
bHVkZSAiVW5saW5rZWRDb2RlQmxvY2suaCIKKyNpbmNsdWRlIDx3dGYvSW5kZXhNYXAuaD4KKyNp
bmNsdWRlIDx3dGYvSW5kZXhTZXQuaD4KKyNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KKworbmFt
ZXNwYWNlIEpTQyB7CisKK3N0cnVjdCBZaWVsZERhdGEgeworICAgIHNpemVfdCBzYXZlUG9pbnQ7
CisgICAgc2l6ZV90IG1lcmdlUG9pbnQ7CisgICAgc2l6ZV90IHJlc3VtZVBvaW50OworICAgIEZh
c3RCaXRWZWN0b3IgbGl2ZW5lc3M7CisgICAgRmFzdEJpdFZlY3RvciByZXN1bWVkOworICAgIEZh
c3RCaXRWZWN0b3Igc2F2ZWQ7Cit9OworCitjbGFzcyBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlv
biB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBWZWN0b3I8WWllbGREYXRhPiBZaWVsZHM7CisKKyAg
ICBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbihVbmxpbmtlZENvZGVCbG9jayogY29kZUJsb2Nr
LCBVbmxpbmtlZENvZGVCbG9jazo6VW5wYWNrZWRJbnN0cnVjdGlvbnMmIGluc3RydWN0aW9ucywg
U3ltYm9sVGFibGUqIGdlbmVyYXRvckZyYW1lU3ltYm9sVGFibGUsIGludCBnZW5lcmF0b3JGcmFt
ZVN5bWJvbFRhYmxlSW5kZXgpCisgICAgICAgIDogbV9ncmFwaChjb2RlQmxvY2ssIGluc3RydWN0
aW9ucykKKyAgICAgICAgLCBtX2luc2VydGlvblNldChtX2dyYXBoKQorICAgICAgICAsIG1fZ2Vu
ZXJhdG9yRnJhbWVTeW1ib2xUYWJsZSgqY29kZUJsb2NrLT52bSgpLCBnZW5lcmF0b3JGcmFtZVN5
bWJvbFRhYmxlKQorICAgICAgICAsIG1fZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZUluZGV4KGdl
bmVyYXRvckZyYW1lU3ltYm9sVGFibGVJbmRleCkKKyAgICB7CisgICAgICAgIGZvciAoQnl0ZWNv
ZGVCYXNpY0Jsb2NrKiBibG9jayA6IG1fZ3JhcGgpIHsKKyAgICAgICAgICAgIGZvciAodW5zaWdu
ZWQgYnl0ZWNvZGVPZmZzZXQgOiBibG9jay0+Ynl0ZWNvZGVPZmZzZXRzKCkpIHsKKyAgICAgICAg
ICAgICAgICBjb25zdCBVbmxpbmtlZEluc3RydWN0aW9uKiBwYyA9ICZtX2dyYXBoLmluc3RydWN0
aW9ucygpW2J5dGVjb2RlT2Zmc2V0XTsKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKHBjLT51Lm9w
Y29kZSkgeworICAgICAgICAgICAgICAgIGNhc2Ugb3Bfc2F2ZTogeworICAgICAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSBwY1syXS51LmluZGV4OworICAg
ICAgICAgICAgICAgICAgICBpbnQgb2Zmc2V0ID0gcGNbM10udS5vcGVyYW5kOworICAgICAgICAg
ICAgICAgICAgICBpZiAobGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID49IG1feWllbGRzLnNpemUoKSkK
KyAgICAgICAgICAgICAgICAgICAgICAgIG1feWllbGRzLnJlc2l6ZShsaXZlQ2FsbGVlTG9jYWxz
SW5kZXggKyAxKTsKKyAgICAgICAgICAgICAgICAgICAgbV95aWVsZHNbbGl2ZUNhbGxlZUxvY2Fs
c0luZGV4XS5zYXZlUG9pbnQgPSBieXRlY29kZU9mZnNldDsKKyAgICAgICAgICAgICAgICAgICAg
dW5zaWduZWQgbWVyZ2VQb2ludCA9IGJ5dGVjb2RlT2Zmc2V0ICsgb2Zmc2V0OworICAgICAgICAg
ICAgICAgICAgICBtX3lpZWxkc1tsaXZlQ2FsbGVlTG9jYWxzSW5kZXhdLm1lcmdlUG9pbnQgPSBt
ZXJnZVBvaW50OworICAgICAgICAgICAgICAgICAgICBtX21lcmdlQmxvY2tzLmFkZChtX2dyYXBo
LmZpbmRCYXNpY0Jsb2NrRm9yQnl0ZWNvZGVPZmZzZXQobWVyZ2VQb2ludCkpOworICAgICAgICAg
ICAgICAgICAgICBtX3NhdmVCbG9ja3MuYWRkKGJsb2NrKTsKKyAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgY2FzZSBvcF9yZXN1
bWU6IHsKKyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4
ID0gcGNbMl0udS5pbmRleDsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxpdmVDYWxsZWVMb2Nh
bHNJbmRleCA+PSBtX3lpZWxkcy5zaXplKCkpCisgICAgICAgICAgICAgICAgICAgICAgICBtX3lp
ZWxkcy5yZXNpemUobGl2ZUNhbGxlZUxvY2Fsc0luZGV4ICsgMSk7CisgICAgICAgICAgICAgICAg
ICAgIG1feWllbGRzW2xpdmVDYWxsZWVMb2NhbHNJbmRleF0ucmVzdW1lUG9pbnQgPSBieXRlY29k
ZU9mZnNldDsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQor
CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAg
Ym9vbCBpc01lcmdlQmxvY2soQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaykKKyAgICB7CisgICAg
ICAgIHJldHVybiBtX21lcmdlQmxvY2tzLmNvbnRhaW5zKGJsb2NrKTsKKyAgICB9CisKKyAgICBi
b29sIGlzU2F2ZUJsb2NrKEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2spCisgICAgeworICAgICAg
ICByZXR1cm4gbV9zYXZlQmxvY2tzLmNvbnRhaW5zKGJsb2NrKTsKKyAgICB9CisKKyAgICBzdHJ1
Y3QgU3RvcmFnZSB7CisgICAgICAgIElkZW50aWZpZXIgaWRlbnRpZmllcjsKKyAgICAgICAgdW5z
aWduZWQgaWRlbnRpZmllckluZGV4OworICAgICAgICBTY29wZU9mZnNldCBzY29wZU9mZnNldDsK
KyAgICB9OworCisgICAgdm9pZCBydW4oKTsKKworICAgIEJ5dGVjb2RlR3JhcGg8VW5saW5rZWRD
b2RlQmxvY2s+JiBncmFwaCgpIHsgcmV0dXJuIG1fZ3JhcGg7IH0KKworICAgIGNvbnN0IFlpZWxk
cyYgeWllbGRzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX3lpZWxkczsKKyAgICB9
CisKKyAgICBZaWVsZHMmIHlpZWxkcygpCisgICAgeworICAgICAgICByZXR1cm4gbV95aWVsZHM7
CisgICAgfQorCitwcml2YXRlOgorICAgIFN0b3JhZ2Ugc3RvcmFnZUZvckdlbmVyYXRvckxvY2Fs
KHVuc2lnbmVkIGluZGV4KQorICAgIHsKKyAgICAgICAgLy8gV2UgYXNzaWduIGEgc3ltYm9sIHRv
IGEgcmVnaXN0ZXIuIFRoZXJlIGlzIG9uZS1vbi1vbmUgY29ycmVzcG9uZGluZyBiZXR3ZWVuIGEg
cmVnaXN0ZXIgYW5kIGEgc3ltYm9sLgorICAgICAgICAvLyBCeSBkb2luZyBzbywgd2UgYWxsb2Nh
dGUgdGhlIHNwZWNpZmljIHN0b3JhZ2UgdG8gc2F2ZSB0aGUgZ2l2ZW4gcmVnaXN0ZXIuCisgICAg
ICAgIC8vIFRoaXMgYWxsb3cgdXMgbm90IHRvIHNhdmUgYWxsIHRoZSBsaXZlIHJlZ2lzdGVycyBl
dmVuIGlmIHRoZSByZWdpc3RlcnMgYXJlIG5vdCBvdmVyd3JpdHRlbiBmcm9tIHRoZSBwcmV2aW91
cyByZXN1bWluZyB0aW1lLgorICAgICAgICAvLyBJdCBtZWFucyB0aGF0LCB0aGUgcmVnaXN0ZXIg
Y2FuIGJlIHJldHJpZXZlZCBldmVuIGlmIHRoZSBpbW1lZGlhdGUgcHJldmlvdXMgb3Bfc2F2ZSBk
b2VzIG5vdCBzYXZlIGl0LgorCisgICAgICAgIGlmIChtX3N0b3JhZ2VzLnNpemUoKSA8PSBpbmRl
eCkKKyAgICAgICAgICAgIG1fc3RvcmFnZXMucmVzaXplKGluZGV4ICsgMSk7CisgICAgICAgIGlm
IChPcHRpb25hbDxTdG9yYWdlPiBzdG9yYWdlID0gbV9zdG9yYWdlc1tpbmRleF0pCisgICAgICAg
ICAgICByZXR1cm4gKnN0b3JhZ2U7CisKKyAgICAgICAgVW5saW5rZWRDb2RlQmxvY2sqIGNvZGVC
bG9jayA9IG1fZ3JhcGguY29kZUJsb2NrKCk7CisgICAgICAgIElkZW50aWZpZXIgaWRlbnRpZmll
ciA9IElkZW50aWZpZXI6OmZyb21VaWQoUHJpdmF0ZU5hbWUoKSk7CisgICAgICAgIHVuc2lnbmVk
IGlkZW50aWZpZXJJbmRleCA9IGNvZGVCbG9jay0+bnVtYmVyT2ZJZGVudGlmaWVycygpOworICAg
ICAgICBjb2RlQmxvY2stPmFkZElkZW50aWZpZXIoaWRlbnRpZmllcik7CisgICAgICAgIFNjb3Bl
T2Zmc2V0IHNjb3BlT2Zmc2V0ID0gbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlLT50YWtlTmV4
dFNjb3BlT2Zmc2V0KE5vTG9ja2luZ05lY2Vzc2FyeSk7CisgICAgICAgIG1fZ2VuZXJhdG9yRnJh
bWVTeW1ib2xUYWJsZS0+c2V0KE5vTG9ja2luZ05lY2Vzc2FyeSwgaWRlbnRpZmllci5pbXBsKCks
IFN5bWJvbFRhYmxlRW50cnkoVmFyT2Zmc2V0KHNjb3BlT2Zmc2V0KSkpOworCisgICAgICAgIFN0
b3JhZ2Ugc3RvcmFnZSA9IHsKKyAgICAgICAgICAgIGlkZW50aWZpZXIsCisgICAgICAgICAgICBp
ZGVudGlmaWVySW5kZXgsCisgICAgICAgICAgICBzY29wZU9mZnNldAorICAgICAgICB9OworICAg
ICAgICBtX3N0b3JhZ2VzW2luZGV4XSA9IHN0b3JhZ2U7CisgICAgICAgIHJldHVybiBzdG9yYWdl
OworICAgIH0KKworICAgIEJ5dGVjb2RlR3JhcGg8VW5saW5rZWRDb2RlQmxvY2s+IG1fZ3JhcGg7
CisgICAgQnl0ZWNvZGVNb2RpZmljYXRpb25TZXQgbV9pbnNlcnRpb25TZXQ7CisgICAgVmVjdG9y
PE9wdGlvbmFsPFN0b3JhZ2U+PiBtX3N0b3JhZ2VzOworICAgIFlpZWxkcyBtX3lpZWxkczsKKyAg
ICBJbmRleFNldDxCeXRlY29kZUJhc2ljQmxvY2s+IG1fbWVyZ2VCbG9ja3M7CisgICAgSW5kZXhT
ZXQ8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiBtX3NhdmVCbG9ja3M7CisgICAgU3Ryb25nPFN5bWJvbFRh
YmxlPiBtX2dlbmVyYXRvckZyYW1lU3ltYm9sVGFibGU7CisgICAgaW50IG1fZ2VuZXJhdG9yRnJh
bWVTeW1ib2xUYWJsZUluZGV4OworfTsKKworY2xhc3MgR2VuZXJhdG9yTGl2ZW5lc3NBbmFseXNp
cyA6IHB1YmxpYyBCeXRlY29kZUxpdmVuZXNzTG9jYWxQcm9wYWdhdGlvbjxHZW5lcmF0b3JMaXZl
bmVzc0FuYWx5c2lzPiB7CitwdWJsaWM6CisgICAgR2VuZXJhdG9yTGl2ZW5lc3NBbmFseXNpcyhC
eXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbiYgZ2VuZXJhdG9yaWZpY2F0aW9uKQorICAgICAgICA6
IG1fZ2VuZXJhdG9yaWZpY2F0aW9uKGdlbmVyYXRvcmlmaWNhdGlvbikKKyAgICB7CisgICAgfQor
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KKyAgICB2b2lkIGNvbXB1dGVEZWZzRm9y
Qnl0ZWNvZGVPZmZzZXQoVW5saW5rZWRDb2RlQmxvY2sqIGNvZGVCbG9jaywgT3Bjb2RlSUQgb3Bj
b2RlSUQsIFVubGlua2VkSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBGYXN0Qml0VmVjdG9yJiBv
dXQsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCisgICAgeworICAgICAgICBKU0M6OmNvbXB1dGVE
ZWZzRm9yQnl0ZWNvZGVPZmZzZXQoY29kZUJsb2NrLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb24sIGZ1
bmN0b3IpOworCisgICAgICAgIHN3aXRjaCAob3Bjb2RlSUQpIHsKKyAgICAgICAgY2FzZSBvcF9z
YXZlOgorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGNhc2Ugb3BfcmVzdW1lOiB7Cisg
ICAgICAgICAgICAvLyByZXN1bWUgZGVmaW5lcyBhbGwgdGhlIHJlZ2lzdGVycy4KKyAgICAgICAg
ICAgIG91dC5jbGVhckFsbCgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+CisgICAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5
dGVjb2RlT2Zmc2V0KFVubGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2ssIE9wY29kZUlEIG9wY29k
ZUlELCBVbmxpbmtlZEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgRmFzdEJpdFZlY3RvciYsIGNv
bnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCisgICAgeworICAgICAgICBKU0M6OmNvbXB1dGVVc2VzRm9y
Qnl0ZWNvZGVPZmZzZXQoY29kZUJsb2NrLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb24sIGZ1bmN0b3Ip
OworCisgICAgICAgIHN3aXRjaCAob3Bjb2RlSUQpIHsKKyAgICAgICAgY2FzZSBvcF9zYXZlOgor
ICAgICAgICBjYXNlIG9wX3Jlc3VtZTogeworICAgICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ss
IGluc3RydWN0aW9uLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKTsKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIHJ1bigpCisgICAgeworICAg
ICAgICAvLyBQZXJmb3JtIG1vZGlmaWVkIGxpdmVuZXNzIGFuYWx5c2lzIHRvIGRldGVybWluZSB3
aGljaCBsb2NhbHMgYXJlIGxpdmUgYXQgdGhlIG1lcmdlIHBvaW50cy4KKyAgICAgICAgLy8gVGhp
cyBwcm9kdWNlcyB0aGUgY29uc2VydmF0aXZlIHJlc3VsdHMgZm9yIHRoZSBxdWVzdGlvbiwgIndo
aWNoIHZhcmlhYmxlcyBzaG91bGQgYmUgc2F2ZWQgYW5kIHJlc3VtZWQ/Ii4KKworICAgICAgICBC
eXRlY29kZUdyYXBoPFVubGlua2VkQ29kZUJsb2NrPiYgZ3JhcGggPSBtX2dlbmVyYXRvcmlmaWNh
dGlvbi5ncmFwaCgpOworICAgICAgICBVbmxpbmtlZENvZGVCbG9jayogY29kZUJsb2NrID0gZ3Jh
cGguY29kZUJsb2NrKCk7CisgICAgICAgIHVuc2lnbmVkIG51bWJlck9mVmFyaWFibGVzID0gY29k
ZUJsb2NrLT5tX251bUNhbGxlZUxvY2FsczsKKyAgICAgICAgZm9yIChCeXRlY29kZUJhc2ljQmxv
Y2sqIGJsb2NrIDogZ3JhcGgpIHsKKyAgICAgICAgICAgIGJsb2NrLT5pbigpLnJlc2l6ZShudW1i
ZXJPZlZhcmlhYmxlcyk7CisgICAgICAgICAgICBibG9jay0+b3V0KCkucmVzaXplKG51bWJlck9m
VmFyaWFibGVzKTsKKyAgICAgICAgICAgIGJsb2NrLT5pbigpLmNsZWFyQWxsKCk7CisgICAgICAg
ICAgICBibG9jay0+b3V0KCkuY2xlYXJBbGwoKTsKKyAgICAgICAgfQorCisgICAgICAgIGJvb2wg
Y2hhbmdlZDsKKyAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBsYXN0QmxvY2sgPSBncmFwaC5s
YXN0KCk7CisgICAgICAgIGxhc3RCbG9jay0+aW4oKS5jbGVhckFsbCgpOworICAgICAgICBsYXN0
QmxvY2stPm91dCgpLmNsZWFyQWxsKCk7CisgICAgICAgIEZhc3RCaXRWZWN0b3IgbmV3T3V0Owor
ICAgICAgICBuZXdPdXQucmVzaXplKGxhc3RCbG9jay0+b3V0KCkubnVtQml0cygpKTsKKyAgICAg
ICAgZG8geworICAgICAgICAgICAgY2hhbmdlZCA9IGZhbHNlOworICAgICAgICAgICAgZm9yIChz
dGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiYgYmxvY2sgOiBncmFwaC5iYXNpY0Js
b2Nrc0luUmV2ZXJzZU9yZGVyKCkpIHsKKyAgICAgICAgICAgICAgICBuZXdPdXQuY2xlYXJBbGwo
KTsKKyAgICAgICAgICAgICAgICBmb3IgKEJ5dGVjb2RlQmFzaWNCbG9jayogc3VjY2Vzc29yIDog
YmxvY2stPnN1Y2Nlc3NvcnMoKSkKKyAgICAgICAgICAgICAgICAgICAgbmV3T3V0Lm1lcmdlKHN1
Y2Nlc3Nvci0+aW4oKSk7CisgICAgICAgICAgICAgICAgYmxvY2stPm91dCgpLnNldChuZXdPdXQp
OworICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gY29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCbG9j
ayhtX2dlbmVyYXRvcmlmaWNhdGlvbi5ncmFwaCgpLCBibG9jay5nZXQoKSk7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0gd2hpbGUgKGNoYW5nZWQpOworCisgICAgICAgIGZvciAoWWllbGREYXRh
JiBkYXRhIDogbV9nZW5lcmF0b3JpZmljYXRpb24ueWllbGRzKCkpCisgICAgICAgICAgICBkYXRh
LmxpdmVuZXNzID0gZ2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29kZU9mZnNldChtX2dlbmVyYXRvcmlm
aWNhdGlvbi5ncmFwaCgpLCBkYXRhLm1lcmdlUG9pbnQpOworICAgIH0KKworcHJpdmF0ZToKKyAg
ICBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbiYgbV9nZW5lcmF0b3JpZmljYXRpb247Cit9Owor
CitjbGFzcyBTYXZlZFZhcmlhYmxlc0FuYWx5c2lzIHsKK3B1YmxpYzoKKyAgICBTYXZlZFZhcmlh
Ymxlc0FuYWx5c2lzKEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uJiBnZW5lcmF0b3JpZmljYXRp
b24pCisgICAgICAgIDogbV9nZW5lcmF0b3JpZmljYXRpb24oZ2VuZXJhdG9yaWZpY2F0aW9uKQor
ICAgIHsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEZWZGdW5jdG9yPgorICAgIHZv
aWQgc3RlcE92ZXJJbnN0cnVjdGlvbihCeXRlY29kZUJhc2ljQmxvY2sqLCB1bnNpZ25lZCBieXRl
Y29kZU9mZnNldCwgRmFzdEJpdFZlY3RvciYgaW4sIGNvbnN0IERlZkZ1bmN0b3ImIGRlZikKKyAg
ICB7CisgICAgICAgIEJ5dGVjb2RlR3JhcGg8VW5saW5rZWRDb2RlQmxvY2s+JiBncmFwaCA9IG1f
Z2VuZXJhdG9yaWZpY2F0aW9uLmdyYXBoKCk7CisgICAgICAgIGF1dG8mIGluc3RydWN0aW9ucyA9
IGdyYXBoLmluc3RydWN0aW9ucygpOworICAgICAgICBVbmxpbmtlZEluc3RydWN0aW9uKiBpbnN0
cnVjdGlvbiA9ICZpbnN0cnVjdGlvbnNbYnl0ZWNvZGVPZmZzZXRdOworICAgICAgICBPcGNvZGVJ
RCBvcGNvZGVJRCA9IGluc3RydWN0aW9uLT51Lm9wY29kZTsKKyAgICAgICAgVW5saW5rZWRDb2Rl
QmxvY2sqIGNvZGVCbG9jayA9IGdyYXBoLmNvZGVCbG9jaygpOworCisgICAgICAgIC8vIG9wX3Jl
c3VtZSBjbGVhcnMgYWxsIHRoZSBkZWZzLgorICAgICAgICBpZiAob3Bjb2RlSUQgPT0gb3BfcmVz
dW1lKSB7CisgICAgICAgICAgICBpbi5jbGVhckFsbCgpOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisKKyAgICAgICAgSlNDOjpjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KGNv
ZGVCbG9jaywgb3Bjb2RlSUQsIGluc3RydWN0aW9uLCBbJl0gKFVubGlua2VkQ29kZUJsb2NrKiwg
VW5saW5rZWRJbnN0cnVjdGlvbiosIE9wY29kZUlELCBpbnQgb3BlcmFuZCkgeworICAgICAgICAg
ICAgaWYgKGlzVmFsaWRSZWdpc3RlckZvckxpdmVuZXNzKG9wZXJhbmQpKQorICAgICAgICAgICAg
ICAgIGRlZihWaXJ0dWFsUmVnaXN0ZXIob3BlcmFuZCkudG9Mb2NhbCgpKTsKKyAgICAgICAgfSk7
CisgICAgfQorCisgICAgYm9vbCBjb21wdXRlTG9jYWxTYXZlZFZhcmlhYmxlc0ZvckJ5dGVjb2Rl
T2Zmc2V0KEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2ssIHVuc2lnbmVkIHRhcmdldE9mZnNldCwg
RmFzdEJpdFZlY3RvciYgcmVzdWx0KQorICAgIHsKKyAgICAgICAgQVNTRVJUKCFibG9jay0+aXNF
eGl0QmxvY2soKSk7CisgICAgICAgIEFTU0VSVCghYmxvY2stPmlzRW50cnlCbG9jaygpKTsKKwor
ICAgICAgICBGYXN0Qml0VmVjdG9yIGluID0gYmxvY2stPmluKCk7CisKKyAgICAgICAgZm9yICh1
bnNpZ25lZCBieXRlY29kZU9mZnNldCA6IGJsb2NrLT5ieXRlY29kZU9mZnNldHMoKSkgeworICAg
ICAgICAgICAgaWYgKHRhcmdldE9mZnNldCA8PSBieXRlY29kZU9mZnNldCkKKyAgICAgICAgICAg
ICAgICBicmVhazsKKworICAgICAgICAgICAgc3RlcE92ZXJJbnN0cnVjdGlvbigKKyAgICAgICAg
ICAgICAgICBibG9jaywgYnl0ZWNvZGVPZmZzZXQsIGluLAorICAgICAgICAgICAgICAgIFsmXSAo
dW5zaWduZWQgYml0SW5kZXgpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyB0aGUg
ZGVmIGZ1bmN0b3IsIHNvIHdlIHNldCB0aGUgYml0LgorICAgICAgICAgICAgICAgICAgICBpbi5z
ZXQoYml0SW5kZXgpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICB9CisKKyAgICAgICAg
cmV0dXJuIHJlc3VsdC5zZXRBbmRDaGVjayhpbik7CisgICAgfQorCisgICAgYm9vbCBjb21wdXRl
TG9jYWxTYXZlZFZhcmlhYmxlc0ZvckJsb2NrKEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2spCisg
ICAgeworICAgICAgICBpZiAoYmxvY2stPmlzRXhpdEJsb2NrKCkgfHwgYmxvY2stPmlzRW50cnlC
bG9jaygpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gY29tcHV0
ZUxvY2FsU2F2ZWRWYXJpYWJsZXNGb3JCeXRlY29kZU9mZnNldChibG9jaywgYmxvY2stPmxlYWRl
ckJ5dGVjb2RlT2Zmc2V0KCkgKyBibG9jay0+dG90YWxCeXRlY29kZUxlbmd0aCgpLCBibG9jay0+
b3V0KCkpOworICAgIH0KKworICAgIEZhc3RCaXRWZWN0b3IgZ2V0U2F2ZWRWYXJpYWJsZXNJbmZv
QXRCeXRlY29kZU9mZnNldCh1bnNpZ25lZCBieXRlY29kZU9mZnNldCkKKyAgICB7CisgICAgICAg
IEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2sgPSBtX2dlbmVyYXRvcmlmaWNhdGlvbi5ncmFwaCgp
LmZpbmRCYXNpY0Jsb2NrRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpOworICAgICAg
ICBBU1NFUlQoYmxvY2spOworICAgICAgICBBU1NFUlQoIWJsb2NrLT5pc0VudHJ5QmxvY2soKSk7
CisgICAgICAgIEFTU0VSVCghYmxvY2stPmlzRXhpdEJsb2NrKCkpOworICAgICAgICBGYXN0Qml0
VmVjdG9yIGluOworICAgICAgICBpbi5yZXNpemUoYmxvY2stPmluKCkubnVtQml0cygpKTsKKyAg
ICAgICAgY29tcHV0ZUxvY2FsU2F2ZWRWYXJpYWJsZXNGb3JCeXRlY29kZU9mZnNldChibG9jaywg
Ynl0ZWNvZGVPZmZzZXQsIGluKTsKKyAgICAgICAgcmV0dXJuIGluOworICAgIH0KKworICAgIHZv
aWQgcnVuKCkKKyAgICB7CisgICAgICAgIC8vIElmIHdlIHNhdmUgYWxsIHRoZSB2YXJpYWJsZSB0
aGF0IHdpbGwgYmUgcmVzdW1lZCwgaXQncyBPSy4KKyAgICAgICAgLy8gQnV0IHdlIGNhbiBhdm9p
ZCBzb21lIHNhdmVkIHZhcmlhYmxlcyB0aGF0IGFyZSBvbmx5IGRlZmluZWQgYnkgdGhlIHByZXZp
b3VzIG9wX3Jlc3VtZS4KKyAgICAgICAgLy8KKyAgICAgICAgLy8gSW4gdGhpcyBwaGFzZSwgd2Ug
cGVyZm9ybSBmb3J3YXJkIGFuYWx5c2lzIHRvIGV4dHJhY3Qgd2hpY2ggdmFyaWFibGVzIG5lZWQg
dG8gYmUgbmV3bHkgc2F2ZWQgd2hlbiBleGVjdXRpbmcgb3Bfc2F2ZS4KKyAgICAgICAgLy8gV2Ug
Y2FsY3VsYXRlIHRoZSByZWdpc3RlcnMgdGhhdCBpcyBkZWZpbmVkIGluIG5vbi1vcF9yZXN1bWUg
YW5kIGNhbiByZWFjaCB0byB0aGUgb3Bfc2F2ZS4KKyAgICAgICAgLy8KKyAgICAgICAgLy8gICBv
cF9yZXN1bWUsIGRlZmluZSByMQorICAgICAgICAvLyAgIC4uLgorICAgICAgICAvLyAgIC4uLgor
ICAgICAgICAvLyAgIG5vLWp1bXBzICYgbm8gcjEgZGVmcy4KKyAgICAgICAgLy8gICAuLi4KKyAg
ICAgICAgLy8gICBvcF9zYXZlICAjIEhlcmUsIGl0IGlzIG5vdCBuZWNlc3NhcnkgdG8gc2F2ZSBy
MS4KKyAgICAgICAgQnl0ZWNvZGVHcmFwaDxVbmxpbmtlZENvZGVCbG9jaz4mIGdyYXBoID0gbV9n
ZW5lcmF0b3JpZmljYXRpb24uZ3JhcGgoKTsKKyAgICAgICAgVW5saW5rZWRDb2RlQmxvY2sqIHVu
bGlua2VkQ29kZUJsb2NrID0gZ3JhcGguY29kZUJsb2NrKCk7CisKKyAgICAgICAgLy8gV2UgY29u
c2lkZXIgdGhlIGJhc2ljIGJsb2NrcyB3aXRoaW4gdGhlIHRyeSByYW5nZSBhcmUgY29uc2lkZXJl
ZCBhcyB0aGUgaW1wbGljaXQgcHJlZGVjZXNzb3JzIG9mIHRoZSBoYW5kbGVycy4KKyAgICAgICAg
Ly8gVGhlIGRlZnMgaW4gdGhlc2UgYmFzaWMgYmxvY2tzIGFyZSBjYXJyaWVkIHRvIHRoZSBleGNl
cHRpb24gaGFuZGxlci4gQW5kIGlmIHRoZSBvcF9zYXZlIGlzIGV4ZWN1dGVkIGluIHRoZSBoYW5k
bGVyLAorICAgICAgICAvLyBjYXJyaWVkIGRlZnMgc2hvdWxkIGJlIGFsc28gY29uc2lkZXJlZC4K
KyAgICAgICAgLy8KKyAgICAgICAgLy8gSGVyZSwgd2UgYWRkIHRoZSB3aG9sZSBiYXNpYyBibG9j
a3MgYXMgdGhlIGltcGxpY2l0IHByZWRlY2Vzc29ycyBvZiB0aGUgaGFuZGxlcnMgZm9yIHNpbXBs
aWNpdHkuCisgICAgICAgIC8vIFRoaXMgaXMgYSBsaXR0bGUgYml0IGNvbnNlcnZhdGl2ZTogdGhl
IHRyeSByYW5nZSBtYXkgbm90IGNvdmVyIGFsbCB0aGUgYmFzaWMgYmxvY2suIEJ1dCBzaW5jZSB0
aGUgb3V0IHNldCBzdGF0dXMgYXQKKyAgICAgICAgLy8gdGhlIHRhaWwgb2YgdGhlIGJhc2ljIGJs
b2NrIGlzIGFsd2F5cyBsYXJnZXIgdGhhbiB0aGUgb3V0IHNldCBzdGF0dXMgaW4gdGhlIG1pZGRs
ZSBvZiB0aGUgYmFzaWMgYmxvY2tzLCB0aGlzIGRvZXMgbm90CisgICAgICAgIC8vIGZhaWwgdG8g
a2VlcCB0aGUgdmFyaWFibGVzIHRoYXQgc2hvdWxkIGJlIHNhdmVkLgorICAgICAgICAvLworICAg
ICAgICAvLyBPbmx5IHRoZSBleGNlcHRpb24gaXMgdGhlIG9wX3Jlc3VtZSBibG9jazogb3BfcmVz
dW1lIGNsZWFycyBhbGwgdGhlIGRlZnMuIEJ1dCBzaW5jZSB0aGUgcmFuZ2UgYmV0d2VlbiB0aGUg
anVtcCB0YXJnZXQKKyAgICAgICAgLy8gZnJvbSB0aGUgZ2xvYmFsIGRpc3BhdGNoIGFuZCBvcF9y
ZXN1bWUgaXMgbmV2ZXIgY292ZXJlZCBieSB0aGUgdHJ5IHJhbmdlLCBpdCBpcyBub3QgYSBwcm9i
bGVtLgorICAgICAgICBJbmRleE1hcDxCeXRlY29kZUJhc2ljQmxvY2ssIE9wdGlvbmFsPEluZGV4
U2V0PEJ5dGVjb2RlQmFzaWNCbG9jaz4+PiBwb3NzaWJsZVByZWRlY2Vzc29yc0ZvckhhbmRsZXJz
KGdyYXBoLnNpemUoKSk7CisgICAgICAgIHsKKyAgICAgICAgICAgIGF1dG8mIGluc3RydWN0aW9u
cyA9IGdyYXBoLmluc3RydWN0aW9ucygpOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IHVubGlua2VkQ29kZUJsb2NrLT5udW1iZXJPZkV4Y2VwdGlvbkhhbmRsZXJzKCk7ICsr
aSkgeworICAgICAgICAgICAgICAgIGF1dG8mIGhhbmRsZXIgPSB1bmxpbmtlZENvZGVCbG9jay0+
ZXhjZXB0aW9uSGFuZGxlcihpKTsKKworICAgICAgICAgICAgICAgIEluZGV4U2V0PEJ5dGVjb2Rl
QmFzaWNCbG9jaz4gcHJlZGVjZXNzb3JzOworICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQg
Ynl0ZWNvZGVPZmZzZXQgPSBoYW5kbGVyLnN0YXJ0OyBieXRlY29kZU9mZnNldCA8IGhhbmRsZXIu
ZW5kOykgeworICAgICAgICAgICAgICAgICAgICBVbmxpbmtlZEluc3RydWN0aW9uKiBpbnN0cnVj
dGlvbiA9ICZpbnN0cnVjdGlvbnNbYnl0ZWNvZGVPZmZzZXRdOworICAgICAgICAgICAgICAgICAg
ICBPcGNvZGVJRCBvcGNvZGVJRCA9IGluc3RydWN0aW9uLT51Lm9wY29kZTsKKyAgICAgICAgICAg
ICAgICAgICAgdW5zaWduZWQgb3Bjb2RlTGVuZ3RoID0gb3Bjb2RlTGVuZ3Roc1tvcGNvZGVJRF07
CisKKyAgICAgICAgICAgICAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBwb3NzaWJsZVByZWRl
Y2Vzc29yID0gZ3JhcGguZmluZEJhc2ljQmxvY2tGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9m
ZnNldCk7CisgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHBvc3NpYmxlUHJlZGVj
ZXNzb3IpOworICAgICAgICAgICAgICAgICAgICBwcmVkZWNlc3NvcnMuYWRkKHBvc3NpYmxlUHJl
ZGVjZXNzb3IpOworCisgICAgICAgICAgICAgICAgICAgIGJ5dGVjb2RlT2Zmc2V0ICs9IG9wY29k
ZUxlbmd0aDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgQnl0ZWNvZGVCYXNp
Y0Jsb2NrKiBoYW5kbGVyQmxvY2sgPSBncmFwaC5maW5kQmFzaWNCbG9ja1dpdGhMZWFkZXJPZmZz
ZXQoaGFuZGxlci50YXJnZXQpOworICAgICAgICAgICAgICAgIHBvc3NpYmxlUHJlZGVjZXNzb3Jz
Rm9ySGFuZGxlcnNbaGFuZGxlckJsb2NrXSA9IFdURk1vdmUocHJlZGVjZXNzb3JzKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHVuc2lnbmVkIG51bWJlck9mVmFyaWFibGVz
ID0gdW5saW5rZWRDb2RlQmxvY2stPm1fbnVtQ2FsbGVlTG9jYWxzOworICAgICAgICBmb3IgKEJ5
dGVjb2RlQmFzaWNCbG9jayogYmxvY2sgOiBncmFwaCkgeworICAgICAgICAgICAgYmxvY2stPmlu
KCkucmVzaXplKG51bWJlck9mVmFyaWFibGVzKTsKKyAgICAgICAgICAgIGJsb2NrLT5vdXQoKS5y
ZXNpemUobnVtYmVyT2ZWYXJpYWJsZXMpOworICAgICAgICAgICAgYmxvY2stPmluKCkuY2xlYXJB
bGwoKTsKKyAgICAgICAgICAgIGJsb2NrLT5vdXQoKS5jbGVhckFsbCgpOworICAgICAgICB9CisK
KyAgICAgICAgYm9vbCBjaGFuZ2VkOworICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGZpcnN0
QmxvY2sgPSBncmFwaC5maXJzdCgpOworICAgICAgICBGYXN0Qml0VmVjdG9yIG5ld0luOworICAg
ICAgICBuZXdJbi5yZXNpemUoZmlyc3RCbG9jay0+aW4oKS5udW1CaXRzKCkpOworICAgICAgICBk
byB7CisgICAgICAgICAgICBjaGFuZ2VkID0gZmFsc2U7CisgICAgICAgICAgICBmb3IgKEJ5dGVj
b2RlQmFzaWNCbG9jayogYmxvY2sgOiBncmFwaCkgeworICAgICAgICAgICAgICAgIG5ld0luLmNs
ZWFyQWxsKCk7CisgICAgICAgICAgICAgICAgLy8gSWYgdGhlIGJsb2NrIGlzIHRoZSBtZXJnZSBi
bG9jaywgdGhlIGJsb2NrIGFsd2F5cyBzdGFydHMgd2l0aCB0aGUgc2VxdWVuY2Ugb2YgY2hlY2tp
bmcgdGhlIHJlc3VtZSBtb2RlLgorICAgICAgICAgICAgICAgIC8vIFRodXMsIHRoZSBtZXJnZSBi
bG9jayBpcyBvbmx5IHVzZWQgZm9yIHRoZSBnZW5lcmF0b3IgcmVzdW1lIGNhc2UuIEl0IG1lYW5z
IHRoYXQgdGhlcmUgYXJlIG9ubHkgMiBpbmNvbWluZyBlZGdlcyBpbnRvCisgICAgICAgICAgICAg
ICAgLy8gdGhlIG1lcmdlIGJsb2NrOiB0aGUgZWRnZSBmcm9tIHRoZSByZXN1bWUgYmxvY2sgYW5k
IHRoZSBlZGdlIGZyb20gdGhlIHNhdmUgYmxvY2suCisgICAgICAgICAgICAgICAgLy8gV2UgZHJv
cCB0aGUgZWRnZSBmcm9tIHRoZSBzYXZlIGJsb2NrLiBUaGUgZWRnZSBmcm9tIHRoZSBzYXZlIGJs
b2NrIGlzIGEgcHNldWRvIGVkZ2UgdG8gdHJhbnNmZXIgdGhlIGRhdGEgZmxvdyBpbgorICAgICAg
ICAgICAgICAgIC8vIHRoZSBmaXJzdCBsaXZlbmVzcyBhbmFseXNpcy4gVGhpcyBlZGdlIHNob3Vs
ZCBub3QgYmUgYWNjb3VudGVkIGluIHRoaXMgc2F2ZWQgdmFyaWFibGUgYW5hbHlzaXMgcGhhc2UK
KyAgICAgICAgICAgICAgICAvLyBzaW5jZSBXZSB3b3VsZCBsaWtlIHRvIGNvbGxlY3QgYWN0dWFs
IGRlZnMgdGhhdCBjb3VsZCByZWFjaCB0byB0aGUgb3Bfc2F2ZSBmcm9tIHRoZSBvcF9yZXN1bWUu
CisgICAgICAgICAgICAgICAgLy8gQW5kIGJlY2F1c2UgdGhlIHJlc3VtZSBibG9jayBkb2VzIG5v
dCBkZWYgYW55dGhpbmcsIG5ld0luIGZvciB0aGUgbWVyZ2UgYmxvY2sgaXMgYWx3YXlzIGNsZWFy
ZWQgb25lLgorICAgICAgICAgICAgICAgIGlmICghbV9nZW5lcmF0b3JpZmljYXRpb24uaXNNZXJn
ZUJsb2NrKGJsb2NrKSkgeworICAgICAgICAgICAgICAgICAgICBmb3IgKEJ5dGVjb2RlQmFzaWNC
bG9jayogcHJlZGVjZXNzb3IgOiBibG9jay0+cHJlZGVjZXNzb3JzKCkpCisgICAgICAgICAgICAg
ICAgICAgICAgICBuZXdJbi5tZXJnZShwcmVkZWNlc3Nvci0+b3V0KCkpOworCisgICAgICAgICAg
ICAgICAgICAgIGlmIChhdXRvJiBvcHRpb25hbFByZWRlY2Vzc29yU2V0ID0gcG9zc2libGVQcmVk
ZWNlc3NvcnNGb3JIYW5kbGVyc1tibG9ja10pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZv
ciAoQnl0ZWNvZGVCYXNpY0Jsb2NrKiBwcmVkZWNlc3NvciA6IG9wdGlvbmFsUHJlZGVjZXNzb3JT
ZXQtPnZhbHVlcyhncmFwaCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3SW4ubWVy
Z2UocHJlZGVjZXNzb3ItPm91dCgpKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgICAgIGJsb2NrLT5pbigpLnNldChuZXdJbik7CisgICAg
ICAgICAgICAgICAgY2hhbmdlZCB8PSBjb21wdXRlTG9jYWxTYXZlZFZhcmlhYmxlc0ZvckJsb2Nr
KGJsb2NrKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSB3aGlsZSAoY2hhbmdlZCk7CisKKyAg
ICAgICAgZm9yIChZaWVsZERhdGEmIGRhdGEgOiBtX2dlbmVyYXRvcmlmaWNhdGlvbi55aWVsZHMo
KSkgeworICAgICAgICAgICAgZGF0YS5zYXZlZCA9IGRhdGEubGl2ZW5lc3M7CisgICAgICAgICAg
ICBkYXRhLnNhdmVkLmZpbHRlcihnZXRTYXZlZFZhcmlhYmxlc0luZm9BdEJ5dGVjb2RlT2Zmc2V0
KGRhdGEuc2F2ZVBvaW50KSk7CisgICAgICAgIH0KKyAgICB9CisKK3ByaXZhdGU6CisgICAgQnl0
ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24mIG1fZ2VuZXJhdG9yaWZpY2F0aW9uOworfTsKKworY2xh
c3MgUmVzdW1lZFZhcmlhYmxlc0FuYWx5c2lzIDogcHVibGljIEJ5dGVjb2RlTGl2ZW5lc3NMb2Nh
bFByb3BhZ2F0aW9uPFJlc3VtZWRWYXJpYWJsZXNBbmFseXNpcz4geworcHVibGljOgorICAgIFJl
c3VtZWRWYXJpYWJsZXNBbmFseXNpcyhCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbiYgZ2VuZXJh
dG9yaWZpY2F0aW9uKQorICAgICAgICA6IG1fZ2VuZXJhdG9yaWZpY2F0aW9uKGdlbmVyYXRvcmlm
aWNhdGlvbikKKyAgICB7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4K
KyAgICB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoVW5saW5rZWRDb2RlQmxvY2sq
IGNvZGVCbG9jaywgT3Bjb2RlSUQgb3Bjb2RlSUQsIFVubGlua2VkSW5zdHJ1Y3Rpb24qIGluc3Ry
dWN0aW9uLCBGYXN0Qml0VmVjdG9yJiBvdXQsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCisgICAg
eworICAgICAgICBKU0M6OmNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoY29kZUJsb2NrLCBv
cGNvZGVJRCwgaW5zdHJ1Y3Rpb24sIGZ1bmN0b3IpOworCisgICAgICAgIHN3aXRjaCAob3Bjb2Rl
SUQpIHsKKyAgICAgICAgY2FzZSBvcF9zYXZlOgorICAgICAgICAgICAgcmV0dXJuOworCisgICAg
ICAgIGNhc2Ugb3BfcmVzdW1lOiB7CisgICAgICAgICAgICAvLyByZXN1bWUgZGVmaW5lcyBhbGwg
dGhlIHJlZ2lzdGVycy4KKyAgICAgICAgICAgIG91dC5jbGVhckFsbCgpOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQorICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+Cisg
ICAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KFVubGlua2VkQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIE9wY29kZUlEIG9wY29kZUlELCBVbmxpbmtlZEluc3RydWN0aW9uKiBpbnN0cnVj
dGlvbiwgRmFzdEJpdFZlY3RvciYsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCisgICAgeworICAg
ICAgICBKU0M6OmNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoY29kZUJsb2NrLCBvcGNvZGVJ
RCwgaW5zdHJ1Y3Rpb24sIGZ1bmN0b3IpOworCisgICAgICAgIHN3aXRjaCAob3Bjb2RlSUQpIHsK
KyAgICAgICAgY2FzZSBvcF9zYXZlOiB7CisgICAgICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywg
aW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBpbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOworCisgICAg
ICAgICAgICAvLyBEZWNsYXJlIHRoZSB1c2VzIGJhc2VkIG9uIHRoZSBzYXZlZCB2YXJpYWJsZXMg
YW5hbHlzaXMgaW5mb3JtYXRpb24gYmVjYXVzZSB0aGUgb3Bfc2F2ZSBjb3VsZCBzYXZlIHRoZSB2
YXJpYWJsZXMgY29uc2VydmF0aXZlbHkuCisgICAgICAgICAgICAvLyBTbyBvcF9yZXN1bWUgc2hv
dWxkIHJlc3VtZSB0aGUgdmFyaWFibGVzIHRoYXQgaXMgc2F2ZWQgY29uc2VydmF0aXZlbHkgaW4g
dGhlIHNhdmVkIHZhcmlhYmxlcyBhbmFseXNpcy4KKyAgICAgICAgICAgIHVuc2lnbmVkIGxpdmVD
YWxsZWVMb2NhbHNJbmRleCA9IGluc3RydWN0aW9uWzJdLnUuaW5kZXg7CisgICAgICAgICAgICBj
b25zdCBZaWVsZERhdGEmIGRhdGEgPSBtX2dlbmVyYXRvcmlmaWNhdGlvbi55aWVsZHMoKVtsaXZl
Q2FsbGVlTG9jYWxzSW5kZXhdOworICAgICAgICAgICAgZGF0YS5zYXZlZC5mb3JFYWNoU2V0Qml0
KFsmXShzaXplX3QgbG9jYWwpIHsKKyAgICAgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgb3Bl
cmFuZCA9IHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGxvY2FsKTsKKyAgICAgICAgICAgICAgICBm
dW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBvcGVyYW5kLm9mZnNldCgp
KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAg
ICAgICAgY2FzZSBvcF9yZXN1bWU6IHsKKyAgICAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBp
bnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCBydW4oKQorICAgIHsKKyAgICAg
ICAgLy8gVGhlIHJlc3VtZWQgdmFyaWFibGVzIGFuYWx5c2lzIGlzIGFsbW9zdCB0aGUgc2FtZSB0
byB0aGUgZ2VuZXJhdG9yaWZpY2F0aW9uJ3MgdXN1YWwgbGl2ZW5lc3MgYW5hbHlzaXMsCisgICAg
ICAgIC8vIGV4Y2VwdCBmb3IgZHJvcHBpbmcgdGhlIGVkZ2VzIGJldHdlZW4gdGhlIHNhdmUgcG9p
bnRzIGFuZCB0aGUgbWVyZ2UgcG9pbnRzLgorCisgICAgICAgIEJ5dGVjb2RlR3JhcGg8VW5saW5r
ZWRDb2RlQmxvY2s+JiBncmFwaCA9IG1fZ2VuZXJhdG9yaWZpY2F0aW9uLmdyYXBoKCk7CisgICAg
ICAgIFVubGlua2VkQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jayA9IGdyYXBoLmNvZGVCbG9j
aygpOworICAgICAgICB1bnNpZ25lZCBudW1iZXJPZlZhcmlhYmxlcyA9IHVubGlua2VkQ29kZUJs
b2NrLT5tX251bUNhbGxlZUxvY2FsczsKKyAgICAgICAgZm9yIChCeXRlY29kZUJhc2ljQmxvY2sq
IGJsb2NrIDogZ3JhcGgpIHsKKyAgICAgICAgICAgIGJsb2NrLT5pbigpLnJlc2l6ZShudW1iZXJP
ZlZhcmlhYmxlcyk7CisgICAgICAgICAgICBibG9jay0+b3V0KCkucmVzaXplKG51bWJlck9mVmFy
aWFibGVzKTsKKyAgICAgICAgICAgIGJsb2NrLT5pbigpLmNsZWFyQWxsKCk7CisgICAgICAgICAg
ICBibG9jay0+b3V0KCkuY2xlYXJBbGwoKTsKKyAgICAgICAgfQorCisgICAgICAgIGJvb2wgY2hh
bmdlZDsKKyAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBsYXN0QmxvY2sgPSBncmFwaC5sYXN0
KCk7CisgICAgICAgIGxhc3RCbG9jay0+aW4oKS5jbGVhckFsbCgpOworICAgICAgICBsYXN0Qmxv
Y2stPm91dCgpLmNsZWFyQWxsKCk7CisgICAgICAgIEZhc3RCaXRWZWN0b3IgbmV3T3V0OworICAg
ICAgICBuZXdPdXQucmVzaXplKGxhc3RCbG9jay0+b3V0KCkubnVtQml0cygpKTsKKyAgICAgICAg
ZG8geworICAgICAgICAgICAgY2hhbmdlZCA9IGZhbHNlOworICAgICAgICAgICAgZm9yIChzdGQ6
OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiYgYmxvY2sgOiBncmFwaC5iYXNpY0Jsb2Nr
c0luUmV2ZXJzZU9yZGVyKCkpIHsKKyAgICAgICAgICAgICAgICBuZXdPdXQuY2xlYXJBbGwoKTsK
KyAgICAgICAgICAgICAgICBib29sIHNhdmVCbG9jayA9IG1fZ2VuZXJhdG9yaWZpY2F0aW9uLmlz
U2F2ZUJsb2NrKGJsb2NrLmdldCgpKTsKKyAgICAgICAgICAgICAgICBmb3IgKEJ5dGVjb2RlQmFz
aWNCbG9jayogc3VjY2Vzc29yIDogYmxvY2stPnN1Y2Nlc3NvcnMoKSkgeworICAgICAgICAgICAg
ICAgICAgICAvLyBEbyBub3QgaGFuZGxlIHRoZSBlZGdlcyBiZXR3ZWVuIHRoZSBzYXZlIHBvaW50
cyBhbmQgdGhlIG1lcmdlIHBvaW50cy4KKyAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIGN1
cnJlbnQgYmxvY2sgaXMgdGhlIHNhdmUgYmxvY2sgKHRoYXQgYnJhbmNoIGlzIG9wX3NhdmUpLAor
ICAgICAgICAgICAgICAgICAgICAvLyBhbmQgaWYgdGhlIHN1Y2Nlc3NvciBpcyB0aGUgYmxvY2sg
dGhhdCBzdGFydHMgd2l0aCB0aGUgbWVyZ2UgcG9pbnQsIHdlIGRyb3AgdGhpcyBlZGdlLgorICAg
ICAgICAgICAgICAgICAgICAvLworICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGVkZ2UgaXMg
dXNlZCBpbiB0aGUgZmlyc3QgbGl2ZW5lc3MgYW5hbHlzaXMgdG8gdHJhbnNmZXIgdGhlIGRhdGEg
ZmxvdywgYnV0IGluIHRoaXMgcmVzdW1lZCB2YXJpYWJsZXMgYW5hbHlzaXMsCisgICAgICAgICAg
ICAgICAgICAgIC8vIHdlIGRvIG5vdCBwcm9wYWdhdGUgdXNlZCB2YXJpYWJsZXMgaW5mb3JtYXRp
b24gYmV5b25kIHRoaXMgc2F2ZSB0byBtZXJnZSBlZGdlIHNpbmNlIHRoaXMgZWRnZSBpcyBhIHBz
ZXVkbyBlZGdlIChpdCBpcyBub3QgYWN0dWFsbHkgdXNlZCkKKyAgICAgICAgICAgICAgICAgICAg
Ly8gYW5kIHdlIHdhbnQgdG8gY29sbGVjdCBwZXItbmV4dCgpLWludm9jYXRpb24gcmVzdW1lZCB2
YXJpYWJsZXMuCisgICAgICAgICAgICAgICAgICAgIGlmICghKHNhdmVCbG9jayAmJiBtX2dlbmVy
YXRvcmlmaWNhdGlvbi5pc01lcmdlQmxvY2soc3VjY2Vzc29yKSkpCisgICAgICAgICAgICAgICAg
ICAgICAgICBuZXdPdXQubWVyZ2Uoc3VjY2Vzc29yLT5pbigpKTsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgYmxvY2stPm91dCgpLnNldChuZXdPdXQpOworICAgICAgICAgICAg
ICAgIGNoYW5nZWQgfD0gY29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCbG9jayhtX2dlbmVyYXRvcmlm
aWNhdGlvbi5ncmFwaCgpLCBibG9jay5nZXQoKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0g
d2hpbGUgKGNoYW5nZWQpOworCisgICAgICAgIGZvciAoWWllbGREYXRhJiBkYXRhIDogbV9nZW5l
cmF0b3JpZmljYXRpb24ueWllbGRzKCkpIHsKKyAgICAgICAgICAgIGRhdGEucmVzdW1lZCA9IGRh
dGEubGl2ZW5lc3M7CisgICAgICAgICAgICBkYXRhLnJlc3VtZWQuZmlsdGVyKGdldExpdmVuZXNz
SW5mb0F0Qnl0ZWNvZGVPZmZzZXQobV9nZW5lcmF0b3JpZmljYXRpb24uZ3JhcGgoKSwgZGF0YS5t
ZXJnZVBvaW50KSk7CisgICAgICAgIH0KKyAgICB9CisKK3ByaXZhdGU6CisgICAgQnl0ZWNvZGVH
ZW5lcmF0b3JpZmljYXRpb24mIG1fZ2VuZXJhdG9yaWZpY2F0aW9uOworfTsKKwordm9pZCBCeXRl
Y29kZUdlbmVyYXRvcmlmaWNhdGlvbjo6cnVuKCkKK3sKKyAgICAvLyBGaXJzdCwgd2UgY2FsY3Vs
YXRlIHRoZSBsaXZlbmVzcyBhdCBlYWNoIG1lcmdlIHBvaW50LiBUaGlzIGdpdmVzIHVzIHRoZSBp
bmZvcm1hdGlvbiB3aGljaCByZWdpc3RlcnMgc2hvdWxkIGJlIHNhdmVkIGFuZCByZXN1bWVkIGNv
bnNlcnZhdGl2ZWx5LgorICAgIC8vIEhvd2V2ZXIsIHRoaXMgaW5mb3JtYXRpb24gaXMgdG9vIGNv
bnNlcnZhdGl2ZS4gV2UgdW5uZWNlc3NhcmlseSBzYXZlIGFuZCByZXN1bWUgdGhlIHJlZ2lzdGVy
cy4KKyAgICAvLyBXaGVuIHRoZSBsb2NhbCByZWdpc3RlciBpcyByZWZlcmVuY2VkIGZyb20gdGhl
IHBvaW50IHdoaWNoIGlzIG92ZXIgbXVsdGlwbGUgeWllbGRzLCB0aGUgcHJvYmxlbSBoYXBwZW5z
LgorICAgIC8vCisgICAgLy8gICBmdW5jdGlvbiAqZ2VuKCkKKyAgICAvLyAgIHsKKyAgICAvLyAg
ICAgICB2YXIgdGFyZ2V0ID0gNDI7CisgICAgLy8gICAgICAgeWllbGQgMzA7ICAvLyBIZXJlLCB3
ZSBzaG91bGQgc2F2ZSAidGFyZ2V0Ii4gSXQgaXMgT0suIEJ1dCBhdCB0aGUgcmVzdW1lIHBvaW50
LCB3ZSB1bm5lY2Vzc2FyeSByZXN1bWUgInRhcmdldCIgaGVyZS4KKyAgICAvLyAgICAgICB5aWVs
ZCA0MDsgIC8vIEFuZCBoZXJlLCB3ZSB1bm5lY2Vzc2FyaWx5IHNhdmUgInRhcmdldCIsIHNpbmNl
IGl0IGlzICpkZWYqaW5lZCBieSB0aGUgcHJldmlvdXMgcmVzdW1lLgorICAgIC8vICAgICAgIHlp
ZWxkIHRhcmdldDsgIC8vIEFuZCByZWZlcmVuY2UgdGhlICJ0YXJnZXQiIGhlcmUuCisgICAgLy8g
ICB9CisgICAgLy8KKyAgICAvLyBJbiB0aGUgYWJvdmUgZXhhbXBsZSwgZmlyc3QgeWllbGQncyBy
ZXN1bWUgYW5kIHNlY29uZCB5aWVsZCdzIHNhdmUgaXMgdW5uZWNlc3Nhcnkgc2luY2UgdGhlIHZh
bHVlIGlzIG5vdCBjaGFuZ2VkIGR1cmluZyB0aGUgc2Vjb25kIGNhbGwgb2YgbmV4dCgpLgorICAg
IC8vIFRvIHJlZHVjZSB0aGUgdW5uZWNlc3NhcnkgcmVnaXN0ZXIgc2F2ZSBhbmQgcmVzdW1lLCB3
ZSBydW4gMiBhbmFseXNpcywgInNhdmVkIHZhcmlhYmxlcyBhbmFseXNpcyIgYW5kICJyZXN1bWVk
IHZhcmlhYmxlcyBhbmFseXNpcyIuCisgICAgLy8gSW4gYm90aCBhbmFseXNpcywgd2UgZHJvcCB0
aGUgZWRnZSBmcm9tIG9wX3NhdmUgdG8gdGhlIG1lcmdlIHBvaW50LiBTbyB0aGUgZ3JhcGggbm93
IGJlY29tZXMgYXMgZm9sbG93cy4KKyAgICAvLworICAgIC8vIEJlZm9yZToKKyAgICAvLyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAob2YgY291cnNlLCBzdWNoIGVkZ2VzIGNhbiBiZSBzZWVuKQorICAg
IC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcF9yZXQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0rCisgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHwKKyAgICAvLyAgICAgICAgIGVudHJ5IC0+IGdlbmVyYXRvciBzd2l0Y2ggLS0t
LT4gb3Bfc2F2ZSAtLS0tLS0tLS0tLS0tLSsgICAgICAgICAgICAgICB8ICAgICAgICBvcF9yZXQg
ICAgICAgICAgICAgICAgICAgfAorICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdiAgICAgICAgICAgICAgIHwgICAgICAg
ICAgXiAgICAgICAgICAgICAgICAgICAgICB8CisgICAgLy8gICAgICAgICAgICAgICAgICAgICAg
ICArLS0tLS0tLS0tLS0tLS0+IG9wX3Jlc3VtZSAtLS0tLT4gbWVyZ2UgcG9pbnQgLT4gLi4uLi4u
Ky4uLi4uLT4gb3Bfc2F2ZSAtLS0tLSsgICAgICAgICAgIHwKKyAgICAvLyAgICAgICAgICAgICAg
ICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdiAgICAgICAgICAgdgorICAgIC8vICAgICAg
ICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tPiBvcF9yZXN1bWUgLS0tLT4gbWVyZ2UgcG9pbnQgLT4gLi4uLi4uCisg
ICAgLy8KKyAgICAvLyBBZnRlcjoKKyAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob2YgY291
cnNlLCBzdWNoIGVkZ2VzIGNhbiBiZSBzZWVuKQorICAgIC8vICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBvcF9yZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICAgLy8gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAvLyAgICAg
ICAgIGVudHJ5IC0+IGdlbmVyYXRvciBzd2l0Y2ggLS0tLT4gb3Bfc2F2ZSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB8ICAgICAgICBvcF9yZXQgICAgICAgICAgICAgICAgICAgfAorICAg
IC8vICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgXiAgICAgICAgICAgICAgICAgICAg
ICB8CisgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0+IG9wX3Jl
c3VtZSAtLS0tLT4gbWVyZ2UgcG9pbnQgLT4gLi4uLi4uKy4uLi4uLT4gb3Bfc2F2ZSAgICAgICAg
ICAgICAgICAgIHwKKyAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdgorICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPiBvcF9yZXN1
bWUgLS0tLT4gbWVyZ2UgcG9pbnQgLT4gLi4uLi4uCisgICAgLy8KKyAgICAvLyBJbiBzYXZlZCB2
YXJpYWJsZXMgYW5hbHlzaXMsIHdlIHJ1biB0aGUgZm9yd2FyZCBhbmFseXNpcyBvbnRvIHRoaXMg
IkFmdGVyIiBncmFwaC4gSW4gdGhpcyBmb3J3YXJkIGFuYWx5c2lzLCB3ZSBwcm9wYWdhdGUgdGhl
ICJkZWYicy4KKyAgICAvLyBUaGlzIGFuYWx5c2lzIGV4dHJhY3RzIHRoZSBuZXdseSBkZWYtZWQg
cmVnaXN0ZXJzIHRoYXQgY2FuIHJlYWNoIHRvIHRoZSBvcF9zYXZlIHBvaW50LiBCdXQgdGhpcyBu
ZXdseSBkZWYtZWQgcmVnaXN0ZXJzIGluY2x1ZGUgdGhlIHJlZ2lzdGVycyB0aGF0IHdvbid0IGJl
CisgICAgLy8gdXNlZCBpbiB0aGUgc3Vic2VxdWVudCBuZXh0KCkgY2FsbHMgYWZ0ZXIgdGhpcyBv
cF9zYXZlLiBTbyB3ZSBleHRyYWN0IHRoZSBuZWNlc3NhcmlseSBzYXZlZCByZWdpc3RlcnMgYnkg
bWFza2luZyBsaXZlIHJlZ2lzdGVycyB3aXRoIHRoaXMgbmV3bHkgZGVmLWVkIHJlZ2lzdGVycyBi
aXQgc2V0LgorICAgIC8vCisgICAgLy8gSW4gcmVzdW1lZCB2YXJpYWJsZXMgYW5hbHlzaXMsIHdl
IGp1c3QgcnVuIHRoZSBsaXZlbmVzcyBhbmFseXNpcyBhZ2FpbiBvbnRvIHRoaXMgIkFmdGVyIiBn
cmFwaC4gVGhlIGFuYWx5c2lzIGV4dHJhY3RzIHRoZSBsaXZlbmVzcyBhdCBlYWNoIG1lcmdlIHBv
aW50LAorICAgIC8vIGFuZCB0aGlzIGxpdmVuZXNzIG9ubHkgY29uc2lkZXJzIHRoZSByZWFjaGFi
bGUgYmxvY2tzIGZyb20gdGhlIHRhcmdldCBvcF9yZXN1bWUuIFRoZSByZXN1bHQgcmVnaXN0ZXJz
IGFyZSBzbWFsbGVyIHNldCB0aGFuIHRoZSBzZXQgd2hpY2ggaXMgZXh0cmFjdGVkIGluCisgICAg
Ly8gdGhlIHByZXZpb3VzIGxpdmVuZXNzIGFuYWx5c2lzLgorICAgIC8vIFRoaXMgdGltZSwgd2Ug
dXNlIHRoZSBzYXZlZCB2YXJpYWJsZXMgaW5mb3JtYXRpb24gdG8gZGV0ZXJtaW5lIHRoZSByZXN1
bWVkIHZhcmlhYmxlcy4gVGhpcyBpcyBiZWNhdXNlIHRoZSBzYXZlZCB2YXJpYWJsZSBhbmFseXNp
cyBoYXMgYSBsaXR0bGUgYml0IGNvbnNlcnZhdGl2ZSBwYXJ0OgorICAgIC8vIHRoZSBleGNlcHRp
b24gaGFuZGxlciBjb25zaWRlcnMgdGhlIGJhc2ljIGJsb2NrcyB0aGF0IHJhbmdlIG92ZXJsYXBz
IHRoZSB0cnkgcmFuZ2VzIGFzIHRoZSBpbXBsaWNpdCBwcmVkZWNlc3NvcnMuIEFuZCB0aGUgaGFu
ZGxlciBjb25zZXJ2YXRpdmVseSBjb25zaWRlcnMgbmV3bHktZGVmLWVkCisgICAgLy8gdmFyaWFi
bGVzIGJ5IG1lcmdpbmcgYWxsIHRoZSBwcmVkZWNlc3NvcnMncyBvdXQgc2V0IGV2ZW4gaWYgdGhl
IGhhbmRsZXIncyB0cnkgcmFuZ2UgZG9lcyBub3QgY292ZXIgYWxsIHRoZSBwYXJ0IG9mIHRoZSBp
bXBsaWNpdCBiYXNpYyBibG9ja3MuCisKKyAgICB7CisgICAgICAgIEdlbmVyYXRvckxpdmVuZXNz
QW5hbHlzaXMgcGFzcygqdGhpcyk7CisgICAgICAgIHBhc3MucnVuKCk7CisgICAgfQorCisgICAg
eworICAgICAgICBTYXZlZFZhcmlhYmxlc0FuYWx5c2lzIHBhc3MoKnRoaXMpOworICAgICAgICBw
YXNzLnJ1bigpOworICAgIH0KKworICAgIHsKKyAgICAgICAgUmVzdW1lZFZhcmlhYmxlc0FuYWx5
c2lzIHBhc3MoKnRoaXMpOworICAgICAgICBwYXNzLnJ1bigpOworICAgIH0KKworICAgIFVubGlu
a2VkQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBtX2dyYXBoLmNvZGVCbG9jaygpOworICAgIGZvciAo
Y29uc3QgWWllbGREYXRhJiBkYXRhIDogbV95aWVsZHMpIHsKKyAgICAgICAgVmlydHVhbFJlZ2lz
dGVyIHNjb3BlID0gdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoc3RhdGljX2Nhc3Q8aW50MzJf
dD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6R2VuZXJhdG9yQXJndW1lbnQ6OkZyYW1lKSk7CisKKyAg
ICAgICAgLy8gb3Bfc2F2ZS4KKyAgICAgICAgZGF0YS5zYXZlZC5mb3JFYWNoU2V0Qml0KFsmXShz
aXplX3QgaW5kZXgpIHsKKyAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kID0gdmly
dHVhbFJlZ2lzdGVyRm9yTG9jYWwoaW5kZXgpOworICAgICAgICAgICAgU3RvcmFnZSBzdG9yYWdl
ID0gc3RvcmFnZUZvckdlbmVyYXRvckxvY2FsKGluZGV4KTsKKworICAgICAgICAgICAgbV9pbnNl
cnRpb25TZXQuaW5zZXJ0KGRhdGEuc2F2ZVBvaW50LAorICAgICAgICAgICAgICAgIG9wX3B1dF90
b19zY29wZSwKKyAgICAgICAgICAgICAgICBzY29wZS5vZmZzZXQoKSwgLy8gc2NvcGUKKyAgICAg
ICAgICAgICAgICBzdG9yYWdlLmlkZW50aWZpZXJJbmRleCwgLy8gaWRlbnRpZmllcgorICAgICAg
ICAgICAgICAgIG9wZXJhbmQub2Zmc2V0KCksIC8vIHZhbHVlCisgICAgICAgICAgICAgICAgR2V0
UHV0SW5mbyhEb05vdFRocm93SWZOb3RGb3VuZCwgTG9jYWxDbG9zdXJlVmFyLCBJbml0aWFsaXph
dGlvbk1vZGU6Ok5vdEluaXRpYWxpemF0aW9uKS5vcGVyYW5kKCksIC8vIGluZm8KKyAgICAgICAg
ICAgICAgICBtX2dlbmVyYXRvckZyYW1lU3ltYm9sVGFibGVJbmRleCwgLy8gc3ltYm9sIHRhYmxl
IGNvbnN0YW50IGluZGV4CisgICAgICAgICAgICAgICAgc3RvcmFnZS5zY29wZU9mZnNldC5vZmZz
ZXQoKSAvLyBzY29wZSBvZmZzZXQKKyAgICAgICAgICAgICk7CisgICAgICAgIH0pOworCisgICAg
ICAgIC8vIG9wX3Jlc3VtZS4KKyAgICAgICAgZGF0YS5yZXN1bWVkLmZvckVhY2hTZXRCaXQoWyZd
KHNpemVfdCBpbmRleCkgeworICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQgPSB2
aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChpbmRleCk7CisgICAgICAgICAgICBTdG9yYWdlIHN0b3Jh
Z2UgPSBzdG9yYWdlRm9yR2VuZXJhdG9yTG9jYWwoaW5kZXgpOworCisgICAgICAgICAgICBVbmxp
bmtlZFZhbHVlUHJvZmlsZSBwcm9maWxlID0gY29kZUJsb2NrLT5hZGRWYWx1ZVByb2ZpbGUoKTsK
KyAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydChkYXRhLnJlc3VtZVBvaW50LAorICAg
ICAgICAgICAgICAgIG9wX2dldF9mcm9tX3Njb3BlLAorICAgICAgICAgICAgICAgIG9wZXJhbmQu
b2Zmc2V0KCksIC8vIGRzdAorICAgICAgICAgICAgICAgIHNjb3BlLm9mZnNldCgpLCAvLyBzY29w
ZQorICAgICAgICAgICAgICAgIHN0b3JhZ2UuaWRlbnRpZmllckluZGV4LCAvLyBpZGVudGlmaWVy
CisgICAgICAgICAgICAgICAgR2V0UHV0SW5mbyhEb05vdFRocm93SWZOb3RGb3VuZCwgTG9jYWxD
bG9zdXJlVmFyLCBJbml0aWFsaXphdGlvbk1vZGU6Ok5vdEluaXRpYWxpemF0aW9uKS5vcGVyYW5k
KCksIC8vIGluZm8KKyAgICAgICAgICAgICAgICAwLCAvLyBsb2NhbCBzY29wZSBkZXB0aAorICAg
ICAgICAgICAgICAgIHN0b3JhZ2Uuc2NvcGVPZmZzZXQub2Zmc2V0KCksIC8vIHNjb3BlIG9mZnNl
dAorICAgICAgICAgICAgICAgIHByb2ZpbGUgLy8gcHJvZmlsZQorICAgICAgICAgICAgKTsKKyAg
ICAgICAgfSk7CisKKyAgICAgICAgLy8gQ2xpcCB0aGUgdW5uZWNlc3NhcnkgYnl0ZWNvZGVzLgor
ICAgICAgICBtX2luc2VydGlvblNldC5yZW1vdmVCeXRlY29kZShkYXRhLnNhdmVQb2ludCk7Cisg
ICAgICAgIG1faW5zZXJ0aW9uU2V0LnJlbW92ZUJ5dGVjb2RlKGRhdGEucmVzdW1lUG9pbnQpOwor
ICAgIH0KKworICAgIG1faW5zZXJ0aW9uU2V0LmV4ZWN1dGUoKTsKK30KKwordm9pZCBwZXJmb3Jt
R2VuZXJhdG9yaWZpY2F0aW9uKFVubGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFVubGlua2Vk
Q29kZUJsb2NrOjpVbnBhY2tlZEluc3RydWN0aW9ucyYgaW5zdHJ1Y3Rpb25zLCBTeW1ib2xUYWJs
ZSogZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZSwgaW50IGdlbmVyYXRvckZyYW1lU3ltYm9sVGFi
bGVJbmRleCkKK3sKKyAgICBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbiBwYXNzKGNvZGVCbG9j
aywgaW5zdHJ1Y3Rpb25zLCBnZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlLCBnZW5lcmF0b3JGcmFt
ZVN5bWJvbFRhYmxlSW5kZXgpOworICAgIHBhc3MucnVuKCk7Cit9CisKK30gLy8gbmFtZXNwYWNl
IEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
R2VuZXJhdG9yaWZpY2F0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYjdlYzk2ZWQ3MGRiYmEyMjEx
MWViMTM3NzMzZmIyMDA1NWIxMTFhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmgKQEAgLTAsMCArMSwz
NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRl
YUBnbWFpbC5jb20+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiVW5saW5r
ZWRDb2RlQmxvY2suaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIFN5bWJvbFRhYmxlOwor
Cit2b2lkIHBlcmZvcm1HZW5lcmF0b3JpZmljYXRpb24oVW5saW5rZWRDb2RlQmxvY2sqLCBVbmxp
bmtlZENvZGVCbG9jazo6VW5wYWNrZWRJbnN0cnVjdGlvbnMmLCBTeW1ib2xUYWJsZSogZ2VuZXJh
dG9yRnJhbWVTeW1ib2xUYWJsZSwgaW50IGdlbmVyYXRvckZyYW1lU3ltYm9sVGFibGVJbmRleCk7
CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlR3JhcGguaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZUdyYXBoLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGMzNjgxNmMwNjQzMjE1YWUzMTU3N2E1MmFk
ODQ1YTU3OTIzNWRmNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZUdyYXBoLmgKQEAgLTAsMCArMSwxMjQgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTYgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkJ5dGVjb2RlQmFzaWNCbG9jay5oIgorI2lu
Y2x1ZGUgPHd0Zi9JbmRleGVkQ29udGFpbmVySXRlcmF0b3IuaD4KKyNpbmNsdWRlIDx3dGYvSXRl
cmF0b3JSYW5nZS5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIEpTQyB7
CisKK2NsYXNzIEJ5dGVjb2RlQmFzaWNCbG9jazsKKwordGVtcGxhdGU8dHlwZW5hbWUgQmxvY2s+
CitjbGFzcyBCeXRlY29kZUdyYXBoIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShCeXRlY29kZUdyYXBoKTsKK3B1YmxpYzoKKyAgICB0eXBl
ZGVmIEJsb2NrIENvZGVCbG9jazsKKyAgICB0eXBlZGVmIHR5cGVuYW1lIEJsb2NrOjpJbnN0cnVj
dGlvbiBJbnN0cnVjdGlvbjsKKyAgICB0eXBlZGVmIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0
ZWNvZGVCYXNpY0Jsb2NrPj4gQmFzaWNCbG9ja3NWZWN0b3I7CisKKyAgICBpbmxpbmUgQnl0ZWNv
ZGVHcmFwaChCbG9jayosIHR5cGVuYW1lIEJsb2NrOjpVbnBhY2tlZEluc3RydWN0aW9ucyYpOwor
CisgICAgQmxvY2sqIGNvZGVCbG9jaygpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrOyB9CisK
KyAgICB0eXBlbmFtZSBCbG9jazo6VW5wYWNrZWRJbnN0cnVjdGlvbnMmIGluc3RydWN0aW9ucygp
IHsgcmV0dXJuIG1faW5zdHJ1Y3Rpb25zOyB9CisKKyAgICBXVEY6Okl0ZXJhdG9yUmFuZ2U8QmFz
aWNCbG9ja3NWZWN0b3I6OnJldmVyc2VfaXRlcmF0b3I+IGJhc2ljQmxvY2tzSW5SZXZlcnNlT3Jk
ZXIoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFdURjo6bWFrZUl0ZXJhdG9yUmFuZ2UobV9iYXNp
Y0Jsb2Nrcy5yYmVnaW4oKSwgbV9iYXNpY0Jsb2Nrcy5yZW5kKCkpOworICAgIH0KKworICAgIHN0
YXRpYyBib29sIGJsb2NrQ29udGFpbnNCeXRlY29kZU9mZnNldChCeXRlY29kZUJhc2ljQmxvY2sq
IGJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCkKKyAgICB7CisgICAgICAgIHVuc2lnbmVk
IGxlYWRlck9mZnNldCA9IGJsb2NrLT5sZWFkZXJCeXRlY29kZU9mZnNldCgpOworICAgICAgICBy
ZXR1cm4gYnl0ZWNvZGVPZmZzZXQgPj0gbGVhZGVyT2Zmc2V0ICYmIGJ5dGVjb2RlT2Zmc2V0IDwg
bGVhZGVyT2Zmc2V0ICsgYmxvY2stPnRvdGFsQnl0ZWNvZGVMZW5ndGgoKTsKKyAgICB9CisKKyAg
ICBCeXRlY29kZUJhc2ljQmxvY2sqIGZpbmRCYXNpY0Jsb2NrRm9yQnl0ZWNvZGVPZmZzZXQodW5z
aWduZWQgYnl0ZWNvZGVPZmZzZXQpCisgICAgeworICAgICAgICAvKgorICAgICAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fYmFzaWNCbG9ja3Muc2l6ZSgpOyBpKyspIHsKKyAgICAg
ICAgICAgICAgICBpZiAoYmxvY2tDb250YWluc0J5dGVjb2RlT2Zmc2V0KG1fYmFzaWNCbG9ja3Nb
aV0uZ2V0KCksIGJ5dGVjb2RlT2Zmc2V0KSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1f
YmFzaWNCbG9ja3NbaV0uZ2V0KCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4g
MDsKKyAgICAgICAgKi8KKworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Js
b2NrPiogYmFzaWNCbG9jayA9IGFwcHJveGltYXRlQmluYXJ5U2VhcmNoPHN0ZDo6dW5pcXVlX3B0
cjxCeXRlY29kZUJhc2ljQmxvY2s+LCB1bnNpZ25lZD4obV9iYXNpY0Jsb2NrcywgbV9iYXNpY0Js
b2Nrcy5zaXplKCksIGJ5dGVjb2RlT2Zmc2V0LCBbXSAoc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2Rl
QmFzaWNCbG9jaz4qIGJhc2ljQmxvY2spIHsgcmV0dXJuICgqYmFzaWNCbG9jayktPmxlYWRlckJ5
dGVjb2RlT2Zmc2V0KCk7IH0pOworICAgICAgICAvLyBXZSBmb3VuZCB0aGUgYmxvY2sgd2Ugd2Vy
ZSBsb29raW5nIGZvci4KKyAgICAgICAgaWYgKGJsb2NrQ29udGFpbnNCeXRlY29kZU9mZnNldCgo
KmJhc2ljQmxvY2spLmdldCgpLCBieXRlY29kZU9mZnNldCkpCisgICAgICAgICAgICByZXR1cm4g
KCpiYXNpY0Jsb2NrKS5nZXQoKTsKKworICAgICAgICAvLyBCYXNpYyBibG9jayBpcyB0byB0aGUg
bGVmdCBvZiB0aGUgcmV0dXJuZWQgYmxvY2suCisgICAgICAgIGlmIChieXRlY29kZU9mZnNldCA8
ICgqYmFzaWNCbG9jayktPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCkpIHsKKyAgICAgICAgICAgIEFT
U0VSVChiYXNpY0Jsb2NrIC0gMSA+PSBtX2Jhc2ljQmxvY2tzLmRhdGEoKSk7CisgICAgICAgICAg
ICBBU1NFUlQoYmxvY2tDb250YWluc0J5dGVjb2RlT2Zmc2V0KGJhc2ljQmxvY2tbLTFdLmdldCgp
LCBieXRlY29kZU9mZnNldCkpOworICAgICAgICAgICAgcmV0dXJuIGJhc2ljQmxvY2tbLTFdLmdl
dCgpOworICAgICAgICB9CisKKyAgICAgICAgLy8gQmFzaWMgYmxvY2sgaXMgdG8gdGhlIHJpZ2h0
IG9mIHRoZSByZXR1cm5lZCBibG9jay4KKyAgICAgICAgQVNTRVJUKCZiYXNpY0Jsb2NrWzFdIDw9
ICZtX2Jhc2ljQmxvY2tzLmxhc3QoKSk7CisgICAgICAgIEFTU0VSVChibG9ja0NvbnRhaW5zQnl0
ZWNvZGVPZmZzZXQoYmFzaWNCbG9ja1sxXS5nZXQoKSwgYnl0ZWNvZGVPZmZzZXQpKTsKKyAgICAg
ICAgcmV0dXJuIGJhc2ljQmxvY2tbMV0uZ2V0KCk7CisgICAgfQorCisgICAgQnl0ZWNvZGVCYXNp
Y0Jsb2NrKiBmaW5kQmFzaWNCbG9ja1dpdGhMZWFkZXJPZmZzZXQodW5zaWduZWQgbGVhZGVyT2Zm
c2V0KQorICAgIHsKKyAgICAgICAgcmV0dXJuICgqdHJ5QmluYXJ5U2VhcmNoPHN0ZDo6dW5pcXVl
X3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+LCB1bnNpZ25lZD4obV9iYXNpY0Jsb2NrcywgbV9iYXNp
Y0Jsb2Nrcy5zaXplKCksIGxlYWRlck9mZnNldCwgW10gKHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29k
ZUJhc2ljQmxvY2s+KiBiYXNpY0Jsb2NrKSB7IHJldHVybiAoKmJhc2ljQmxvY2spLT5sZWFkZXJC
eXRlY29kZU9mZnNldCgpOyB9KSkuZ2V0KCk7CisgICAgfQorCisgICAgdW5zaWduZWQgc2l6ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fYmFzaWNCbG9ja3Muc2l6ZSgpOyB9CisgICAgQnl0ZWNvZGVCYXNp
Y0Jsb2NrKiBhdCh1bnNpZ25lZCBpbmRleCkgY29uc3QgeyByZXR1cm4gbV9iYXNpY0Jsb2Nrc1tp
bmRleF0uZ2V0KCk7IH0KKyAgICBCeXRlY29kZUJhc2ljQmxvY2sqIG9wZXJhdG9yW10odW5zaWdu
ZWQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIGF0KGluZGV4KTsgfQorCisgICAgdHlwZWRlZiBXVEY6
OkluZGV4ZWRDb250YWluZXJJdGVyYXRvcjxCeXRlY29kZUdyYXBoPEJsb2NrPj4gaXRlcmF0b3I7
CisKKyAgICBpdGVyYXRvciBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIGl0ZXJhdG9yKCp0aGlzLCAw
KTsgfQorICAgIGl0ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0dXJuIGl0ZXJhdG9yKCp0aGlzLCBz
aXplKCkpOyB9CisgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBmaXJzdCgpIHsgcmV0dXJuIGF0KDAp
OyB9CisgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBsYXN0KCkgeyByZXR1cm4gYXQoc2l6ZSgpIC0g
MSk7IH0KKworcHJpdmF0ZToKKyAgICBCbG9jayogbV9jb2RlQmxvY2s7CisgICAgQmFzaWNCbG9j
a3NWZWN0b3IgbV9iYXNpY0Jsb2NrczsKKyAgICB0eXBlbmFtZSBCbG9jazo6VW5wYWNrZWRJbnN0
cnVjdGlvbnMmIG1faW5zdHJ1Y3Rpb25zOworfTsKKworCit0ZW1wbGF0ZTx0eXBlbmFtZSBCbG9j
az4KK0J5dGVjb2RlR3JhcGg8QmxvY2s+OjpCeXRlY29kZUdyYXBoKEJsb2NrKiBjb2RlQmxvY2ss
IHR5cGVuYW1lIEJsb2NrOjpVbnBhY2tlZEluc3RydWN0aW9ucyYgaW5zdHJ1Y3Rpb25zKQorICAg
IDogbV9jb2RlQmxvY2soY29kZUJsb2NrKQorICAgICwgbV9pbnN0cnVjdGlvbnMoaW5zdHJ1Y3Rp
b25zKQoreworICAgIEFTU0VSVChtX2NvZGVCbG9jayk7CisgICAgQnl0ZWNvZGVCYXNpY0Jsb2Nr
Ojpjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2NrcyhtX2NvZGVCbG9jaywgaW5zdHJ1Y3Rpb25zLmJl
Z2luKCksIGluc3RydWN0aW9ucy5zaXplKCksIG1fYmFzaWNCbG9ja3MpOworICAgIEFTU0VSVCht
X2Jhc2ljQmxvY2tzLnNpemUoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNp
cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0Fu
YWx5c2lzLmNwcAppbmRleCAxN2U4MmEyZmJiYTAxNTA0M2U5OWQzNGVkMjU2OTM3MmIzNmY3YTg1
Li5hZDNjMDIxZTFlYTQzN2EzMDM2NDk1MGQ1YTBiYjQ4YzI2NDE5ZTVjIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0Fu
YWx5c2lzLmNwcApAQCAtMzEsMTk4ICszMSw2NiBAQAogI2luY2x1ZGUgIkJ5dGVjb2RlVXNlRGVm
LmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiRnVsbEJ5dGVjb2RlTGl2ZW5l
c3MuaCIKKyNpbmNsdWRlICJJbnRlcnByZXRlcklubGluZXMuaCIKICNpbmNsdWRlICJQcmVjaXNl
SnVtcFRhcmdldHMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKIEJ5dGVjb2RlTGl2ZW5lc3NBbmFs
eXNpczo6Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzKENvZGVCbG9jayogY29kZUJsb2NrKQotICAg
IDogbV9jb2RlQmxvY2soY29kZUJsb2NrKQorICAgIDogbV9ncmFwaChjb2RlQmxvY2ssIGNvZGVC
bG9jay0+aW5zdHJ1Y3Rpb25zKCkpCiB7Ci0gICAgQVNTRVJUKG1fY29kZUJsb2NrKTsKICAgICBj
b21wdXRlKCk7CiB9CiAKLXN0YXRpYyBib29sIGlzVmFsaWRSZWdpc3RlckZvckxpdmVuZXNzKENv
ZGVCbG9jayogY29kZUJsb2NrLCBpbnQgb3BlcmFuZCkKK3RlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0
b3I+Cit2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0ZURlZnNGb3JCeXRlY29k
ZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgT3Bjb2RlSUQgb3Bjb2RlSUQsIEluc3RydWN0
aW9uKiBpbnN0cnVjdGlvbiwgRmFzdEJpdFZlY3RvciYsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3Ip
CiB7Ci0gICAgaWYgKGNvZGVCbG9jay0+aXNDb25zdGFudFJlZ2lzdGVySW5kZXgob3BlcmFuZCkp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKLSAgICBWaXJ0dWFsUmVnaXN0ZXIgdmlydHVh
bFJlZyhvcGVyYW5kKTsKLSAgICByZXR1cm4gdmlydHVhbFJlZy5pc0xvY2FsKCk7Ci19Ci0KLXN0
YXRpYyB1bnNpZ25lZCBnZXRMZWFkZXJPZmZzZXRGb3JCYXNpY0Jsb2NrKHN0ZDo6dW5pcXVlX3B0
cjxCeXRlY29kZUJhc2ljQmxvY2s+KiBiYXNpY0Jsb2NrKQotewotICAgIHJldHVybiAoKmJhc2lj
QmxvY2spLT5sZWFkZXJCeXRlY29kZU9mZnNldCgpOwotfQotCi1zdGF0aWMgQnl0ZWNvZGVCYXNp
Y0Jsb2NrKiBmaW5kQmFzaWNCbG9ja1dpdGhMZWFkZXJPZmZzZXQoVmVjdG9yPHN0ZDo6dW5pcXVl
X3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9ja3MsIHVuc2lnbmVkIGxlYWRlck9m
ZnNldCkKLXsKLSAgICByZXR1cm4gKCp0cnlCaW5hcnlTZWFyY2g8c3RkOjp1bmlxdWVfcHRyPEJ5
dGVjb2RlQmFzaWNCbG9jaz4sIHVuc2lnbmVkPihiYXNpY0Jsb2NrcywgYmFzaWNCbG9ja3Muc2l6
ZSgpLCBsZWFkZXJPZmZzZXQsIGdldExlYWRlck9mZnNldEZvckJhc2ljQmxvY2spKS5nZXQoKTsK
LX0KLQotc3RhdGljIGJvb2wgYmxvY2tDb250YWluc0J5dGVjb2RlT2Zmc2V0KEJ5dGVjb2RlQmFz
aWNCbG9jayogYmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KQotewotICAgIHVuc2lnbmVk
IGxlYWRlck9mZnNldCA9IGJsb2NrLT5sZWFkZXJCeXRlY29kZU9mZnNldCgpOwotICAgIHJldHVy
biBieXRlY29kZU9mZnNldCA+PSBsZWFkZXJPZmZzZXQgJiYgYnl0ZWNvZGVPZmZzZXQgPCBsZWFk
ZXJPZmZzZXQgKyBibG9jay0+dG90YWxCeXRlY29kZUxlbmd0aCgpOwotfQotCi1zdGF0aWMgQnl0
ZWNvZGVCYXNpY0Jsb2NrKiBmaW5kQmFzaWNCbG9ja0ZvckJ5dGVjb2RlT2Zmc2V0KFZlY3Rvcjxz
dGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mIGJhc2ljQmxvY2tzLCB1bnNpZ25l
ZCBieXRlY29kZU9mZnNldCkKLXsKLS8qCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGJh
c2ljQmxvY2tzLnNpemUoKTsgaSsrKSB7Ci0gICAgICAgIGlmIChibG9ja0NvbnRhaW5zQnl0ZWNv
ZGVPZmZzZXQoYmFzaWNCbG9ja3NbaV0uZ2V0KCksIGJ5dGVjb2RlT2Zmc2V0KSkKLSAgICAgICAg
ICAgIHJldHVybiBiYXNpY0Jsb2Nrc1tpXS5nZXQoKTsKLSAgICB9Ci0gICAgcmV0dXJuIDA7Ci0q
LwotICAgIHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+KiBiYXNpY0Jsb2NrID0g
YXBwcm94aW1hdGVCaW5hcnlTZWFyY2g8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9j
az4sIHVuc2lnbmVkPigKLSAgICAgICAgYmFzaWNCbG9ja3MsIGJhc2ljQmxvY2tzLnNpemUoKSwg
Ynl0ZWNvZGVPZmZzZXQsIGdldExlYWRlck9mZnNldEZvckJhc2ljQmxvY2spOwotICAgIC8vIFdl
IGZvdW5kIHRoZSBibG9jayB3ZSB3ZXJlIGxvb2tpbmcgZm9yLgotICAgIGlmIChibG9ja0NvbnRh
aW5zQnl0ZWNvZGVPZmZzZXQoKCpiYXNpY0Jsb2NrKS5nZXQoKSwgYnl0ZWNvZGVPZmZzZXQpKQot
ICAgICAgICByZXR1cm4gKCpiYXNpY0Jsb2NrKS5nZXQoKTsKLQotICAgIC8vIEJhc2ljIGJsb2Nr
IGlzIHRvIHRoZSBsZWZ0IG9mIHRoZSByZXR1cm5lZCBibG9jay4KLSAgICBpZiAoYnl0ZWNvZGVP
ZmZzZXQgPCAoKmJhc2ljQmxvY2spLT5sZWFkZXJCeXRlY29kZU9mZnNldCgpKSB7Ci0gICAgICAg
IEFTU0VSVChiYXNpY0Jsb2NrIC0gMSA+PSBiYXNpY0Jsb2Nrcy5kYXRhKCkpOwotICAgICAgICBB
U1NFUlQoYmxvY2tDb250YWluc0J5dGVjb2RlT2Zmc2V0KGJhc2ljQmxvY2tbLTFdLmdldCgpLCBi
eXRlY29kZU9mZnNldCkpOwotICAgICAgICByZXR1cm4gYmFzaWNCbG9ja1stMV0uZ2V0KCk7Ci0g
ICAgfQotCi0gICAgLy8gQmFzaWMgYmxvY2sgaXMgdG8gdGhlIHJpZ2h0IG9mIHRoZSByZXR1cm5l
ZCBibG9jay4KLSAgICBBU1NFUlQoJmJhc2ljQmxvY2tbMV0gPD0gJmJhc2ljQmxvY2tzLmxhc3Qo
KSk7Ci0gICAgQVNTRVJUKGJsb2NrQ29udGFpbnNCeXRlY29kZU9mZnNldChiYXNpY0Jsb2NrWzFd
LmdldCgpLCBieXRlY29kZU9mZnNldCkpOwotICAgIHJldHVybiBiYXNpY0Jsb2NrWzFdLmdldCgp
OwotfQotCi0vLyBTaW1wbGlmaWVkIGludGVyZmFjZSB0byBieXRlY29kZSB1c2UvZGVmLCB3aGlj
aCBkZXRlcm1pbmVzIGRlZnMgZmlyc3QgYW5kIHRoZW4gdXNlcywgYW5kIGluY2x1ZGVzCi0vLyBl
eGNlcHRpb24gaGFuZGxlcnMgaW4gdGhlIHVzZXMuCi10ZW1wbGF0ZTx0eXBlbmFtZSBVc2VGdW5j
dG9yLCB0eXBlbmFtZSBEZWZGdW5jdG9yPgotc3RhdGljIHZvaWQgc3RlcE92ZXJJbnN0cnVjdGlv
bihDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaywgVmVjdG9y
PHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9ja3MsIHVuc2ln
bmVkIGJ5dGVjb2RlT2Zmc2V0LCBjb25zdCBVc2VGdW5jdG9yJiB1c2UsIGNvbnN0IERlZkZ1bmN0
b3ImIGRlZikKLXsKLSAgICAvLyBUaGlzIGFic3RyYWN0bHkgZXhlY3V0ZSB0aGUgaW5zdHJ1Y3Rp
b24gaW4gcmV2ZXJzZS4gSW5zdHJ1Y3Rpb25zIGxvZ2ljYWxseSBmaXJzdCB1c2Ugb3BlcmFuZHMg
YW5kCi0gICAgLy8gdGhlbiBkZWZpbmUgb3BlcmFuZHMuIFRoaXMgbG9naWNhbCBvcmRlcmluZyBp
cyBuZWNlc3NhcnkgZm9yIG9wZXJhdGlvbnMgdGhhdCB1c2UgYW5kIGRlZiB0aGUgc2FtZQotICAg
IC8vIG9wZXJhbmQsIGxpa2U6Ci0gICAgLy8KLSAgICAvLyAgICAgb3BfYWRkIGxvYzEsIGxvYzEs
IGxvYzIKLSAgICAvLwotICAgIC8vIFRoZSB1c2Ugb2YgbG9jMSBoYXBwZW5zIGJlZm9yZSB0aGUg
ZGVmIG9mIGxvYzEuIFRoYXQncyBhIHNlbWFudGljIHJlcXVpcmVtZW50IHNpbmNlIHRoZSBhZGQK
LSAgICAvLyBvcGVyYXRpb24gY2Fubm90IHRyYXZlbCBmb3J3YXJkIGluIHRpbWUgdG8gcmVhZCB0
aGUgdmFsdWUgdGhhdCBpdCB3aWxsIHByb2R1Y2UgYWZ0ZXIgcmVhZGluZyB0aGF0Ci0gICAgLy8g
dmFsdWUuIFNpbmNlIHdlIGFyZSBleGVjdXRpbmcgaW4gcmV2ZXJzZSwgdGhpcyBtZWFucyB0aGF0
IHdlIG11c3QgZG8gZGVmcyBiZWZvcmUgdXNlcyAocmV2ZXJzZSBvZgotICAgIC8vIHVzZXMgYmVm
b3JlIGRlZnMpLgotICAgIC8vCi0gICAgLy8gU2luY2UgdGhpcyBpcyBhIGxpdmVuZXNzIGFuYWx5
c2lzLCB0aGlzIG9yZGVyaW5nIGVuZHMgdXAgYmVpbmcgcGFydGljdWxhcmx5IGltcG9ydGFudDog
aWYgd2UgZGlkCi0gICAgLy8gdXNlcyBiZWZvcmUgZGVmcywgdGhlbiB0aGUgYWRkIG9wZXJhdGlv
biBhYm92ZSB3b3VsZCBhcHBlYXIgdG8gbm90IGhhdmUgbG9jMSBsaXZlLCBzaW5jZSB3ZSdkCi0g
ICAgLy8gZmlyc3QgYWRkIGl0IHRvIHRoZSBvdXQgc2V0ICh0aGUgdXNlKSwgYW5kIHRoZW4gd2Un
ZCByZW1vdmUgaXQgKHRoZSBkZWYpLgotICAgIAotICAgIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVP
ZmZzZXQoCi0gICAgICAgIGNvZGVCbG9jaywgYmxvY2ssIGJ5dGVjb2RlT2Zmc2V0LAotICAgICAg
ICBbJl0gKENvZGVCbG9jayogY29kZUJsb2NrLCBJbnN0cnVjdGlvbiosIE9wY29kZUlELCBpbnQg
b3BlcmFuZCkgewotICAgICAgICAgICAgaWYgKGlzVmFsaWRSZWdpc3RlckZvckxpdmVuZXNzKGNv
ZGVCbG9jaywgb3BlcmFuZCkpCi0gICAgICAgICAgICAgICAgZGVmKFZpcnR1YWxSZWdpc3Rlcihv
cGVyYW5kKS50b0xvY2FsKCkpOwotICAgICAgICB9KTsKLQotICAgIGNvbXB1dGVVc2VzRm9yQnl0
ZWNvZGVPZmZzZXQoCi0gICAgICAgIGNvZGVCbG9jaywgYmxvY2ssIGJ5dGVjb2RlT2Zmc2V0LAot
ICAgICAgICBbJl0gKENvZGVCbG9jayogY29kZUJsb2NrLCBJbnN0cnVjdGlvbiosIE9wY29kZUlE
LCBpbnQgb3BlcmFuZCkgewotICAgICAgICAgICAgaWYgKGlzVmFsaWRSZWdpc3RlckZvckxpdmVu
ZXNzKGNvZGVCbG9jaywgb3BlcmFuZCkpCi0gICAgICAgICAgICAgICAgdXNlKFZpcnR1YWxSZWdp
c3RlcihvcGVyYW5kKS50b0xvY2FsKCkpOwotICAgICAgICB9KTsKLQotICAgIC8vIElmIHdlIGhh
dmUgYW4gZXhjZXB0aW9uIGhhbmRsZXIsIHdlIHdhbnQgdGhlIGxpdmUtaW4gdmFyaWFibGVzIG9m
IHRoZSAKLSAgICAvLyBleGNlcHRpb24gaGFuZGxlciBibG9jayB0byBiZSBpbmNsdWRlZCBpbiB0
aGUgbGl2ZS1pbiBvZiB0aGlzIHBhcnRpY3VsYXIgYnl0ZWNvZGUuCi0gICAgaWYgKEhhbmRsZXJJ
bmZvKiBoYW5kbGVyID0gY29kZUJsb2NrLT5oYW5kbGVyRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNv
ZGVPZmZzZXQpKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBUaGlzIHJlc3VtZSBjaGVjayBzaG91bGQg
bm90IGJlIG5lZWRlZC4KLSAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE1OTI4MQotICAgICAgICBJbnRlcnByZXRlciogaW50ZXJwcmV0ZXIgPSBjb2Rl
QmxvY2stPnZtKCktPmludGVycHJldGVyOwotICAgICAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rp
b25zQmVnaW4gPSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCk7Ci0gICAgICAgIElu
c3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9ICZpbnN0cnVjdGlvbnNCZWdpbltieXRlY29kZU9mZnNl
dF07Ci0gICAgICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0ZXItPmdldE9wY29kZUlE
KGluc3RydWN0aW9uLT51Lm9wY29kZSk7Ci0gICAgICAgIGlmIChvcGNvZGVJRCAhPSBvcF9yZXN1
bWUpIHsKLSAgICAgICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogaGFuZGxlckJsb2NrID0gZmlu
ZEJhc2ljQmxvY2tXaXRoTGVhZGVyT2Zmc2V0KGJhc2ljQmxvY2tzLCBoYW5kbGVyLT50YXJnZXQp
OwotICAgICAgICAgICAgQVNTRVJUKGhhbmRsZXJCbG9jayk7Ci0gICAgICAgICAgICBoYW5kbGVy
QmxvY2stPmluKCkuZm9yRWFjaFNldEJpdCh1c2UpOwotICAgICAgICB9Ci0gICAgfQotfQotCi1z
dGF0aWMgdm9pZCBzdGVwT3Zlckluc3RydWN0aW9uKENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRl
Y29kZUJhc2ljQmxvY2sqIGJsb2NrLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFz
aWNCbG9jaz4+JiBiYXNpY0Jsb2NrcywgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIEZhc3RCaXRW
ZWN0b3ImIG91dCkKLXsKLSAgICBzdGVwT3Zlckluc3RydWN0aW9uKAotICAgICAgICBjb2RlQmxv
Y2ssIGJsb2NrLCBiYXNpY0Jsb2NrcywgYnl0ZWNvZGVPZmZzZXQsCi0gICAgICAgIFsmXSAodW5z
aWduZWQgYml0SW5kZXgpIHsKLSAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIHVzZSBmdW5jdG9y
LCBzbyB3ZSBzZXQgdGhlIGJpdC4KLSAgICAgICAgICAgIG91dC5zZXQoYml0SW5kZXgpOwotICAg
ICAgICB9LAotICAgICAgICBbJl0gKHVuc2lnbmVkIGJpdEluZGV4KSB7Ci0gICAgICAgICAgICAv
LyBUaGlzIGlzIHRoZSBkZWYgZnVuY3Rvciwgc28gd2UgY2xlYXIgdGhlIGJpdC4KLSAgICAgICAg
ICAgIG91dC5jbGVhcihiaXRJbmRleCk7Ci0gICAgICAgIH0pOwotfQotCi1zdGF0aWMgdm9pZCBj
b21wdXRlTG9jYWxMaXZlbmVzc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2Nr
LCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVj
b2RlQmFzaWNCbG9jaz4+JiBiYXNpY0Jsb2NrcywgdW5zaWduZWQgdGFyZ2V0T2Zmc2V0LCBGYXN0
Qml0VmVjdG9yJiByZXN1bHQpCi17Ci0gICAgQVNTRVJUKCFibG9jay0+aXNFeGl0QmxvY2soKSk7
Ci0gICAgQVNTRVJUKCFibG9jay0+aXNFbnRyeUJsb2NrKCkpOwotCi0gICAgRmFzdEJpdFZlY3Rv
ciBvdXQgPSBibG9jay0+b3V0KCk7Ci0KLSAgICBmb3IgKGludCBpID0gYmxvY2stPmJ5dGVjb2Rl
T2Zmc2V0cygpLnNpemUoKSAtIDE7IGkgPj0gMDsgaS0tKSB7Ci0gICAgICAgIHVuc2lnbmVkIGJ5
dGVjb2RlT2Zmc2V0ID0gYmxvY2stPmJ5dGVjb2RlT2Zmc2V0cygpW2ldOwotICAgICAgICBpZiAo
dGFyZ2V0T2Zmc2V0ID4gYnl0ZWNvZGVPZmZzZXQpCi0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgCi0gICAgICAgIHN0ZXBPdmVySW5zdHJ1Y3Rpb24oY29kZUJsb2NrLCBibG9jaywgYmFzaWNC
bG9ja3MsIGJ5dGVjb2RlT2Zmc2V0LCBvdXQpOwotICAgIH0KLQotICAgIHJlc3VsdC5zZXQob3V0
KTsKKyAgICBKU0M6OmNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoY29kZUJsb2NrLCBvcGNv
ZGVJRCwgaW5zdHJ1Y3Rpb24sIGZ1bmN0b3IpOwogfQogCi1zdGF0aWMgdm9pZCBjb21wdXRlTG9j
YWxMaXZlbmVzc0ZvckJsb2NrKENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29kZUJhc2ljQmxv
Y2sqIGJsb2NrLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+JiBi
YXNpY0Jsb2NrcykKK3RlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+Cit2b2lkIEJ5dGVjb2RlTGl2
ZW5lc3NBbmFseXNpczo6Y29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNv
ZGVCbG9jaywgT3Bjb2RlSUQgb3Bjb2RlSUQsIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgRmFz
dEJpdFZlY3RvciYsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiB7Ci0gICAgaWYgKGJsb2NrLT5p
c0V4aXRCbG9jaygpIHx8IGJsb2NrLT5pc0VudHJ5QmxvY2soKSkKLSAgICAgICAgcmV0dXJuOwot
ICAgIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQnl0ZWNvZGVPZmZzZXQoY29kZUJsb2NrLCBibG9j
aywgYmFzaWNCbG9ja3MsIGJsb2NrLT5sZWFkZXJCeXRlY29kZU9mZnNldCgpLCBibG9jay0+aW4o
KSk7CisgICAgSlNDOjpjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9jaywgb3Bj
b2RlSUQsIGluc3RydWN0aW9uLCBmdW5jdG9yKTsKIH0KIAogdm9pZCBCeXRlY29kZUxpdmVuZXNz
QW5hbHlzaXM6OnJ1bkxpdmVuZXNzRml4cG9pbnQoKQogewotICAgIFVubGlua2VkQ29kZUJsb2Nr
KiB1bmxpbmtlZENvZGVCbG9jayA9IG1fY29kZUJsb2NrLT51bmxpbmtlZENvZGVCbG9jaygpOwor
ICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gbV9ncmFwaC5jb2RlQmxvY2soKTsKKyAgICBVbmxp
bmtlZENvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2sgPSBjb2RlQmxvY2stPnVubGlua2VkQ29k
ZUJsb2NrKCk7CiAgICAgdW5zaWduZWQgbnVtYmVyT2ZWYXJpYWJsZXMgPSB1bmxpbmtlZENvZGVC
bG9jay0+bV9udW1DYWxsZWVMb2NhbHM7CiAKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bV9iYXNpY0Jsb2Nrcy5zaXplKCk7IGkrKykgewotICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2sq
IGJsb2NrID0gbV9iYXNpY0Jsb2Nrc1tpXS5nZXQoKTsKKyAgICBmb3IgKEJ5dGVjb2RlQmFzaWNC
bG9jayogYmxvY2sgOiBtX2dyYXBoKSB7CiAgICAgICAgIGJsb2NrLT5pbigpLnJlc2l6ZShudW1i
ZXJPZlZhcmlhYmxlcyk7CiAgICAgICAgIGJsb2NrLT5vdXQoKS5yZXNpemUobnVtYmVyT2ZWYXJp
YWJsZXMpOwogICAgIH0KIAogICAgIGJvb2wgY2hhbmdlZDsKLSAgICBtX2Jhc2ljQmxvY2tzLmxh
c3QoKS0+aW4oKS5jbGVhckFsbCgpOwotICAgIG1fYmFzaWNCbG9ja3MubGFzdCgpLT5vdXQoKS5j
bGVhckFsbCgpOworICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogbGFzdEJsb2NrID0gbV9ncmFwaC5s
YXN0KCk7CisgICAgbGFzdEJsb2NrLT5pbigpLmNsZWFyQWxsKCk7CisgICAgbGFzdEJsb2NrLT5v
dXQoKS5jbGVhckFsbCgpOwogICAgIEZhc3RCaXRWZWN0b3IgbmV3T3V0OwotICAgIG5ld091dC5y
ZXNpemUobV9iYXNpY0Jsb2Nrcy5sYXN0KCktPm91dCgpLm51bUJpdHMoKSk7CisgICAgbmV3T3V0
LnJlc2l6ZShsYXN0QmxvY2stPm91dCgpLm51bUJpdHMoKSk7CiAgICAgZG8gewogICAgICAgICBj
aGFuZ2VkID0gZmFsc2U7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1fYmFzaWNCbG9ja3Mu
c2l6ZSgpIC0gMTsgaS0tOykgewotICAgICAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9j
ayA9IG1fYmFzaWNCbG9ja3NbaV0uZ2V0KCk7CisgICAgICAgIGZvciAoc3RkOjp1bmlxdWVfcHRy
PEJ5dGVjb2RlQmFzaWNCbG9jaz4mIGJsb2NrIDogbV9ncmFwaC5iYXNpY0Jsb2Nrc0luUmV2ZXJz
ZU9yZGVyKCkpIHsKICAgICAgICAgICAgIG5ld091dC5jbGVhckFsbCgpOwotICAgICAgICAgICAg
Zm9yICh1bnNpZ25lZCBqID0gMDsgaiA8IGJsb2NrLT5zdWNjZXNzb3JzKCkuc2l6ZSgpOyBqKysp
Ci0gICAgICAgICAgICAgICAgbmV3T3V0Lm1lcmdlKGJsb2NrLT5zdWNjZXNzb3JzKClbal0tPmlu
KCkpOwotICAgICAgICAgICAgYm9vbCBvdXREaWRDaGFuZ2UgPSBibG9jay0+b3V0KCkuc2V0QW5k
Q2hlY2sobmV3T3V0KTsKLSAgICAgICAgICAgIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQmxvY2so
bV9jb2RlQmxvY2ssIGJsb2NrLCBtX2Jhc2ljQmxvY2tzKTsKLSAgICAgICAgICAgIGNoYW5nZWQg
fD0gb3V0RGlkQ2hhbmdlOworICAgICAgICAgICAgZm9yIChCeXRlY29kZUJhc2ljQmxvY2sqIHN1
Y2Nlc3NvciA6IGJsb2NrLT5zdWNjZXNzb3JzKCkpCisgICAgICAgICAgICAgICAgbmV3T3V0Lm1l
cmdlKHN1Y2Nlc3Nvci0+aW4oKSk7CisgICAgICAgICAgICBibG9jay0+b3V0KCkuc2V0KG5ld091
dCk7CisgICAgICAgICAgICBjaGFuZ2VkIHw9IGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQmxvY2so
bV9ncmFwaCwgYmxvY2suZ2V0KCkpOwogICAgICAgICB9CiAgICAgfSB3aGlsZSAoY2hhbmdlZCk7
CiB9CiAKIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpnZXRMaXZlbmVzc0luZm9BdEJ5
dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBGYXN0Qml0VmVjdG9yJiByZXN1
bHQpCiB7Ci0gICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jayA9IGZpbmRCYXNpY0Jsb2NrRm9y
Qnl0ZWNvZGVPZmZzZXQobV9iYXNpY0Jsb2NrcywgYnl0ZWNvZGVPZmZzZXQpOworICAgIEJ5dGVj
b2RlQmFzaWNCbG9jayogYmxvY2sgPSBtX2dyYXBoLmZpbmRCYXNpY0Jsb2NrRm9yQnl0ZWNvZGVP
ZmZzZXQoYnl0ZWNvZGVPZmZzZXQpOwogICAgIEFTU0VSVChibG9jayk7CiAgICAgQVNTRVJUKCFi
bG9jay0+aXNFbnRyeUJsb2NrKCkpOwogICAgIEFTU0VSVCghYmxvY2stPmlzRXhpdEJsb2NrKCkp
OwogICAgIHJlc3VsdC5yZXNpemUoYmxvY2stPm91dCgpLm51bUJpdHMoKSk7Ci0gICAgY29tcHV0
ZUxvY2FsTGl2ZW5lc3NGb3JCeXRlY29kZU9mZnNldChtX2NvZGVCbG9jaywgYmxvY2ssIG1fYmFz
aWNCbG9ja3MsIGJ5dGVjb2RlT2Zmc2V0LCByZXN1bHQpOworICAgIGNvbXB1dGVMb2NhbExpdmVu
ZXNzRm9yQnl0ZWNvZGVPZmZzZXQobV9ncmFwaCwgYmxvY2ssIGJ5dGVjb2RlT2Zmc2V0LCByZXN1
bHQpOwogfQogCiBib29sIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6b3BlcmFuZElzTGl2ZUF0
Qnl0ZWNvZGVPZmZzZXQoaW50IG9wZXJhbmQsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KQpAQCAt
MjQ0LDExICsxMTIsMTEgQEAgRmFzdEJpdFZlY3RvciBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6
OmdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQodW5zaWduZWQKIHZvaWQgQnl0ZWNvZGVM
aXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlRnVsbExpdmVuZXNzKEZ1bGxCeXRlY29kZUxpdmVuZXNz
JiByZXN1bHQpCiB7CiAgICAgRmFzdEJpdFZlY3RvciBvdXQ7CisgICAgQ29kZUJsb2NrKiBjb2Rl
QmxvY2sgPSBtX2dyYXBoLmNvZGVCbG9jaygpOwogICAgIAotICAgIHJlc3VsdC5tX21hcC5yZXNp
emUobV9jb2RlQmxvY2stPmluc3RydWN0aW9ucygpLnNpemUoKSk7CisgICAgcmVzdWx0Lm1fbWFw
LnJlc2l6ZShjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLnNpemUoKSk7CiAgICAgCi0gICAgZm9y
ICh1bnNpZ25lZCBpID0gbV9iYXNpY0Jsb2Nrcy5zaXplKCk7IGktLTspIHsKLSAgICAgICAgQnl0
ZWNvZGVCYXNpY0Jsb2NrKiBibG9jayA9IG1fYmFzaWNCbG9ja3NbaV0uZ2V0KCk7CisgICAgZm9y
IChzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiYgYmxvY2sgOiBtX2dyYXBoLmJh
c2ljQmxvY2tzSW5SZXZlcnNlT3JkZXIoKSkgewogICAgICAgICBpZiAoYmxvY2stPmlzRW50cnlC
bG9jaygpIHx8IGJsb2NrLT5pc0V4aXRCbG9jaygpKQogICAgICAgICAgICAgY29udGludWU7CiAg
ICAgICAgIApAQCAtMjU2LDcgKzEyNCw3IEBAIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lz
Ojpjb21wdXRlRnVsbExpdmVuZXNzKEZ1bGxCeXRlY29kZUxpdmVuZXNzJiByZXN1bHQpCiAgICAg
ICAgIAogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBibG9jay0+Ynl0ZWNvZGVPZmZzZXRzKCku
c2l6ZSgpOyBpLS07KSB7CiAgICAgICAgICAgICB1bnNpZ25lZCBieXRlY29kZU9mZnNldCA9IGJs
b2NrLT5ieXRlY29kZU9mZnNldHMoKVtpXTsKLSAgICAgICAgICAgIHN0ZXBPdmVySW5zdHJ1Y3Rp
b24obV9jb2RlQmxvY2ssIGJsb2NrLCBtX2Jhc2ljQmxvY2tzLCBieXRlY29kZU9mZnNldCwgb3V0
KTsKKyAgICAgICAgICAgIHN0ZXBPdmVySW5zdHJ1Y3Rpb24obV9ncmFwaCwgYnl0ZWNvZGVPZmZz
ZXQsIG91dCk7CiAgICAgICAgICAgICByZXN1bHQubV9tYXBbYnl0ZWNvZGVPZmZzZXRdID0gb3V0
OwogICAgICAgICB9CiAgICAgfQpAQCAtMjY2LDExICsxMzQsMTEgQEAgdm9pZCBCeXRlY29kZUxp
dmVuZXNzQW5hbHlzaXM6OmNvbXB1dGVLaWxscyhCeXRlY29kZUtpbGxzJiByZXN1bHQpCiB7CiAg
ICAgRmFzdEJpdFZlY3RvciBvdXQ7CiAgICAgCi0gICAgcmVzdWx0Lm1fY29kZUJsb2NrID0gbV9j
b2RlQmxvY2s7Ci0gICAgcmVzdWx0Lm1fa2lsbFNldHMgPSBzdGQ6Om1ha2VfdW5pcXVlPEJ5dGVj
b2RlS2lsbHM6OktpbGxTZXRbXT4obV9jb2RlQmxvY2stPmluc3RydWN0aW9ucygpLnNpemUoKSk7
CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBtX2dyYXBoLmNvZGVCbG9jaygpOworICAgIHJl
c3VsdC5tX2NvZGVCbG9jayA9IGNvZGVCbG9jazsKKyAgICByZXN1bHQubV9raWxsU2V0cyA9IHN0
ZDo6bWFrZV91bmlxdWU8Qnl0ZWNvZGVLaWxsczo6S2lsbFNldFtdPihjb2RlQmxvY2stPmluc3Ry
dWN0aW9ucygpLnNpemUoKSk7CiAgICAgCi0gICAgZm9yICh1bnNpZ25lZCBpID0gbV9iYXNpY0Js
b2Nrcy5zaXplKCk7IGktLTspIHsKLSAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jayA9
IG1fYmFzaWNCbG9ja3NbaV0uZ2V0KCk7CisgICAgZm9yIChzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNv
ZGVCYXNpY0Jsb2NrPiYgYmxvY2sgOiBtX2dyYXBoLmJhc2ljQmxvY2tzSW5SZXZlcnNlT3JkZXIo
KSkgewogICAgICAgICBpZiAoYmxvY2stPmlzRW50cnlCbG9jaygpIHx8IGJsb2NrLT5pc0V4aXRC
bG9jaygpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIApAQCAtMjc5LDcgKzE0Nyw3
IEBAIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlS2lsbHMoQnl0ZWNvZGVL
aWxscyYgcmVzdWx0KQogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBibG9jay0+Ynl0ZWNvZGVP
ZmZzZXRzKCkuc2l6ZSgpOyBpLS07KSB7CiAgICAgICAgICAgICB1bnNpZ25lZCBieXRlY29kZU9m
ZnNldCA9IGJsb2NrLT5ieXRlY29kZU9mZnNldHMoKVtpXTsKICAgICAgICAgICAgIHN0ZXBPdmVy
SW5zdHJ1Y3Rpb24oCi0gICAgICAgICAgICAgICAgbV9jb2RlQmxvY2ssIGJsb2NrLCBtX2Jhc2lj
QmxvY2tzLCBieXRlY29kZU9mZnNldCwKKyAgICAgICAgICAgICAgICBtX2dyYXBoLCBieXRlY29k
ZU9mZnNldCwgb3V0LAogICAgICAgICAgICAgICAgIFsmXSAodW5zaWduZWQgaW5kZXgpIHsKICAg
ICAgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyBmb3IgdXNlcy4KICAgICAgICAgICAgICAgICAg
ICAgaWYgKG91dC5nZXQoaW5kZXgpKQpAQCAtMjk3LDEyICsxNjUsMTMgQEAgdm9pZCBCeXRlY29k
ZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGVLaWxscyhCeXRlY29kZUtpbGxzJiByZXN1bHQpCiAK
IHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpkdW1wUmVzdWx0cygpCiB7Ci0gICAgZGF0
YUxvZygiXG5EdW1waW5nIGJ5dGVjb2RlIGxpdmVuZXNzIGZvciAiLCAqbV9jb2RlQmxvY2ssICI6
XG4iKTsKLSAgICBJbnRlcnByZXRlciogaW50ZXJwcmV0ZXIgPSBtX2NvZGVCbG9jay0+dm0oKS0+
aW50ZXJwcmV0ZXI7Ci0gICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luID0gbV9jb2Rl
QmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IG1fYmFzaWNCbG9ja3Muc2l6ZSgpOyBpKyspIHsKLSAgICAgICAgQnl0ZWNvZGVCYXNpY0Js
b2NrKiBibG9jayA9IG1fYmFzaWNCbG9ja3NbaV0uZ2V0KCk7Ci0gICAgICAgIGRhdGFMb2dGKCJc
bkJ5dGVjb2RlIGJhc2ljIGJsb2NrICV1OiAlcCAob2Zmc2V0OiAldSwgbGVuZ3RoOiAldSlcbiIs
IGksIGJsb2NrLCBibG9jay0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKSwgYmxvY2stPnRvdGFsQnl0
ZWNvZGVMZW5ndGgoKSk7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBtX2dyYXBoLmNvZGVC
bG9jaygpOworICAgIGRhdGFMb2coIlxuRHVtcGluZyBieXRlY29kZSBsaXZlbmVzcyBmb3IgIiwg
KmNvZGVCbG9jaywgIjpcbiIpOworICAgIEludGVycHJldGVyKiBpbnRlcnByZXRlciA9IGNvZGVC
bG9jay0+dm0oKS0+aW50ZXJwcmV0ZXI7CisgICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0Jl
Z2luID0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpOworICAgIHVuc2lnbmVkIGkg
PSAwOworICAgIGZvciAoQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jayA6IG1fZ3JhcGgpIHsKKyAg
ICAgICAgZGF0YUxvZ0YoIlxuQnl0ZWNvZGUgYmFzaWMgYmxvY2sgJXU6ICVwIChvZmZzZXQ6ICV1
LCBsZW5ndGg6ICV1KVxuIiwgaSsrLCBibG9jaywgYmxvY2stPmxlYWRlckJ5dGVjb2RlT2Zmc2V0
KCksIGJsb2NrLT50b3RhbEJ5dGVjb2RlTGVuZ3RoKCkpOwogICAgICAgICBkYXRhTG9nRigiU3Vj
Y2Vzc29yczogIik7CiAgICAgICAgIGZvciAodW5zaWduZWQgaiA9IDA7IGogPCBibG9jay0+c3Vj
Y2Vzc29ycygpLnNpemUoKTsgaisrKSB7CiAgICAgICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2sq
IHN1Y2Nlc3NvciA9IGJsb2NrLT5zdWNjZXNzb3JzKClbal07CkBAIC0zMjcsNyArMTk2LDcgQEAg
dm9pZCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmR1bXBSZXN1bHRzKCkKICAgICAgICAgICAg
ICAgICAgICAgZGF0YUxvZ0YoIiV1ICIsIGopOwogICAgICAgICAgICAgfQogICAgICAgICAgICAg
ZGF0YUxvZ0YoIlxuIik7Ci0gICAgICAgICAgICBtX2NvZGVCbG9jay0+ZHVtcEJ5dGVjb2RlKFdU
Rjo6ZGF0YUZpbGUoKSwgbV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVjKCks
IGluc3RydWN0aW9uc0JlZ2luLCBjdXJyZW50SW5zdHJ1Y3Rpb24pOworICAgICAgICAgICAgY29k
ZUJsb2NrLT5kdW1wQnl0ZWNvZGUoV1RGOjpkYXRhRmlsZSgpLCBjb2RlQmxvY2stPmdsb2JhbE9i
amVjdCgpLT5nbG9iYWxFeGVjKCksIGluc3RydWN0aW9uc0JlZ2luLCBjdXJyZW50SW5zdHJ1Y3Rp
b24pOwogCiAgICAgICAgICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGludGVycHJldGVyLT5nZXRP
cGNvZGVJRChpbnN0cnVjdGlvbnNCZWdpbltieXRlY29kZU9mZnNldF0udS5vcGNvZGUpOwogICAg
ICAgICAgICAgdW5zaWduZWQgb3Bjb2RlTGVuZ3RoID0gb3Bjb2RlTGVuZ3Roc1tvcGNvZGVJRF07
CkBAIC0zNDYsOCArMjE1LDYgQEAgdm9pZCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmR1bXBS
ZXN1bHRzKCkKIAogdm9pZCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGUoKQogewot
ICAgIGNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzKG1fY29kZUJsb2NrLCBtX2Jhc2ljQmxvY2tz
KTsKLSAgICBBU1NFUlQobV9iYXNpY0Jsb2Nrcy5zaXplKCkpOwogICAgIHJ1bkxpdmVuZXNzRml4
cG9pbnQoKTsKIAogICAgIGlmIChPcHRpb25zOjpkdW1wQnl0ZWNvZGVMaXZlbmVzc1Jlc3VsdHMo
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxp
dmVuZXNzQW5hbHlzaXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZUxpdmVuZXNzQW5hbHlzaXMuaAppbmRleCBlY2UxNmYyMWYwMTUxMGE2NDI3ZmQ4NDExNDA3OWJl
ZDg3MGMwODc1Li5hNDg1Zjg5NWRlZGY2OTlkYzZiYjI3ZDU0OWRjMTVkOGY1ZDdjODAyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0Fu
YWx5c2lzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2
ZW5lc3NBbmFseXNpcy5oCkBAIC0yMywxMCArMjMsMTEgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc19o
Ci0jZGVmaW5lIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc19oCisjcHJhZ21hIG9uY2UKIAogI2lu
Y2x1ZGUgIkJ5dGVjb2RlQmFzaWNCbG9jay5oIgorI2luY2x1ZGUgIkJ5dGVjb2RlR3JhcGguaCIK
KyNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlIDx3dGYvRmFzdEJpdFZlY3Rvci5oPgog
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtMzQs
MTMgKzM1LDI3IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgQnl0ZWNvZGVLaWxsczsKLWNs
YXNzIENvZGVCbG9jazsKIGNsYXNzIEZ1bGxCeXRlY29kZUxpdmVuZXNzOwogCi1jbGFzcyBCeXRl
Y29kZUxpdmVuZXNzQW5hbHlzaXMgewordGVtcGxhdGU8dHlwZW5hbWUgRGVyaXZlZEFuYWx5c2lz
PgorY2xhc3MgQnl0ZWNvZGVMaXZlbmVzc0xvY2FsUHJvcGFnYXRpb24geworcHJvdGVjdGVkOgor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEdyYXBoLCB0eXBlbmFtZSBVc2VGdW5jdG9yLCB0eXBlbmFt
ZSBEZWZGdW5jdG9yPiB2b2lkIHN0ZXBPdmVySW5zdHJ1Y3Rpb24oR3JhcGgmLCB1bnNpZ25lZCBi
eXRlY29kZU9mZnNldCwgRmFzdEJpdFZlY3RvciYgb3V0LCBjb25zdCBVc2VGdW5jdG9yJiwgY29u
c3QgRGVmRnVuY3RvciYpOworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgR3JhcGg+IHZvaWQgc3Rl
cE92ZXJJbnN0cnVjdGlvbihHcmFwaCYsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBGYXN0Qml0
VmVjdG9yJiBvdXQpOworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgR3JhcGg+IGJvb2wgY29tcHV0
ZUxvY2FsTGl2ZW5lc3NGb3JCeXRlY29kZU9mZnNldChHcmFwaCYsIEJ5dGVjb2RlQmFzaWNCbG9j
ayosIHVuc2lnbmVkIHRhcmdldE9mZnNldCwgRmFzdEJpdFZlY3RvciYgcmVzdWx0KTsKKworICAg
IHRlbXBsYXRlPHR5cGVuYW1lIEdyYXBoPiBib29sIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQmxv
Y2soR3JhcGgmLCBCeXRlY29kZUJhc2ljQmxvY2sqKTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1l
IEdyYXBoPiBGYXN0Qml0VmVjdG9yIGdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQoR3Jh
cGgmLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCk7Cit9OworCitjbGFzcyBCeXRlY29kZUxpdmVu
ZXNzQW5hbHlzaXMgOiBwcml2YXRlIEJ5dGVjb2RlTGl2ZW5lc3NMb2NhbFByb3BhZ2F0aW9uPEJ5
dGVjb2RlTGl2ZW5lc3NBbmFseXNpcz4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcyk7CiBwdWJs
aWM6CisgICAgZnJpZW5kIGNsYXNzIEJ5dGVjb2RlTGl2ZW5lc3NMb2NhbFByb3BhZ2F0aW9uPEJ5
dGVjb2RlTGl2ZW5lc3NBbmFseXNpcz47CiAgICAgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzKENv
ZGVCbG9jayopOwogICAgIAogICAgIGJvb2wgb3BlcmFuZElzTGl2ZUF0Qnl0ZWNvZGVPZmZzZXQo
aW50IG9wZXJhbmQsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KTsKQEAgLTU2LDE0ICs3MSwxNSBA
QCBjbGFzcyBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMgewogCiAgICAgdm9pZCBnZXRMaXZlbmVz
c0luZm9BdEJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBGYXN0Qml0VmVj
dG9yJik7CiAKLSAgICBDb2RlQmxvY2sqIG1fY29kZUJsb2NrOwotICAgIFZlY3RvcjxzdGQ6OnVu
aXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4gbV9iYXNpY0Jsb2NrczsKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBGdW5jdG9yPiB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQ29k
ZUJsb2NrKiwgT3Bjb2RlSUQsIEluc3RydWN0aW9uKiwgRmFzdEJpdFZlY3RvciYsIGNvbnN0IEZ1
bmN0b3ImKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB2b2lkIGNvbXB1dGVVc2Vz
Rm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiwgT3Bjb2RlSUQsIEluc3RydWN0aW9uKiwgRmFz
dEJpdFZlY3RvciYsIGNvbnN0IEZ1bmN0b3ImKTsKKworICAgIEJ5dGVjb2RlR3JhcGg8Q29kZUJs
b2NrPiBtX2dyYXBoOwogfTsKIAogaW5saW5lIGJvb2wgb3BlcmFuZElzQWx3YXlzTGl2ZShpbnQg
b3BlcmFuZCk7CiBpbmxpbmUgYm9vbCBvcGVyYW5kVGhhdElzTm90QWx3YXlzTGl2ZUlzTGl2ZShj
b25zdCBGYXN0Qml0VmVjdG9yJiBvdXQsIGludCBvcGVyYW5kKTsKIGlubGluZSBib29sIG9wZXJh
bmRJc0xpdmUoY29uc3QgRmFzdEJpdFZlY3RvciYgb3V0LCBpbnQgb3BlcmFuZCk7CitpbmxpbmUg
Ym9vbCBpc1ZhbGlkUmVnaXN0ZXJGb3JMaXZlbmVzcyhpbnQgb3BlcmFuZCk7CiAKIH0gLy8gbmFt
ZXNwYWNlIEpTQwotCi0jZW5kaWYgLy8gQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzX2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5h
bHlzaXNJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVM
aXZlbmVzc0FuYWx5c2lzSW5saW5lcy5oCmluZGV4IDliNWM3NTVmY2I2Y2Q1MTgwNTE0NTAwNzg5
MjJhYzRkNmQ0ZDIzOGYuLjljNTkwZDFhM2I1ZDM3NjQzYTU4YzlhNzRjMzVjYjE0MWQ3ODE3YTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVu
ZXNzQW5hbHlzaXNJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGluZXMuaApAQCAtMjYsNiArMjYsNyBAQAogI2lm
bmRlZiBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNJbmxpbmVzX2gKICNkZWZpbmUgQnl0ZWNvZGVM
aXZlbmVzc0FuYWx5c2lzSW5saW5lc19oCiAKKyNpbmNsdWRlICJCeXRlY29kZUdyYXBoLmgiCiAj
aW5jbHVkZSAiQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2Nr
LmgiCiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgpAQCAtNTAsNiArNTEsMTIyIEBAIGlubGluZSBi
b29sIG9wZXJhbmRJc0xpdmUoY29uc3QgRmFzdEJpdFZlY3RvciYgb3V0LCBpbnQgb3BlcmFuZCkK
ICAgICByZXR1cm4gb3BlcmFuZElzQWx3YXlzTGl2ZShvcGVyYW5kKSB8fCBvcGVyYW5kVGhhdElz
Tm90QWx3YXlzTGl2ZUlzTGl2ZShvdXQsIG9wZXJhbmQpOwogfQogCitpbmxpbmUgYm9vbCBpc1Zh
bGlkUmVnaXN0ZXJGb3JMaXZlbmVzcyhpbnQgb3BlcmFuZCkKK3sKKyAgICBWaXJ0dWFsUmVnaXN0
ZXIgdmlydHVhbFJlZyhvcGVyYW5kKTsKKyAgICBpZiAodmlydHVhbFJlZy5pc0NvbnN0YW50KCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gdmlydHVhbFJlZy5pc0xvY2FsKCk7
Cit9CisKKy8vIFNpbXBsaWZpZWQgaW50ZXJmYWNlIHRvIGJ5dGVjb2RlIHVzZS9kZWYsIHdoaWNo
IGRldGVybWluZXMgZGVmcyBmaXJzdCBhbmQgdGhlbiB1c2VzLCBhbmQgaW5jbHVkZXMKKy8vIGV4
Y2VwdGlvbiBoYW5kbGVycyBpbiB0aGUgdXNlcy4KK3RlbXBsYXRlPHR5cGVuYW1lIERlcml2ZWRB
bmFseXNpcz4KK3RlbXBsYXRlPHR5cGVuYW1lIEdyYXBoLCB0eXBlbmFtZSBVc2VGdW5jdG9yLCB0
eXBlbmFtZSBEZWZGdW5jdG9yPgoraW5saW5lIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0xvY2FsUHJv
cGFnYXRpb248RGVyaXZlZEFuYWx5c2lzPjo6c3RlcE92ZXJJbnN0cnVjdGlvbihHcmFwaCYgZ3Jh
cGgsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBGYXN0Qml0VmVjdG9yJiBvdXQsIGNvbnN0IFVz
ZUZ1bmN0b3ImIHVzZSwgY29uc3QgRGVmRnVuY3RvciYgZGVmKQoreworICAgIC8vIFRoaXMgYWJz
dHJhY3RseSBleGVjdXRlIHRoZSBpbnN0cnVjdGlvbiBpbiByZXZlcnNlLiBJbnN0cnVjdGlvbnMg
bG9naWNhbGx5IGZpcnN0IHVzZSBvcGVyYW5kcyBhbmQKKyAgICAvLyB0aGVuIGRlZmluZSBvcGVy
YW5kcy4gVGhpcyBsb2dpY2FsIG9yZGVyaW5nIGlzIG5lY2Vzc2FyeSBmb3Igb3BlcmF0aW9ucyB0
aGF0IHVzZSBhbmQgZGVmIHRoZSBzYW1lCisgICAgLy8gb3BlcmFuZCwgbGlrZToKKyAgICAvLwor
ICAgIC8vICAgICBvcF9hZGQgbG9jMSwgbG9jMSwgbG9jMgorICAgIC8vCisgICAgLy8gVGhlIHVz
ZSBvZiBsb2MxIGhhcHBlbnMgYmVmb3JlIHRoZSBkZWYgb2YgbG9jMS4gVGhhdCdzIGEgc2VtYW50
aWMgcmVxdWlyZW1lbnQgc2luY2UgdGhlIGFkZAorICAgIC8vIG9wZXJhdGlvbiBjYW5ub3QgdHJh
dmVsIGZvcndhcmQgaW4gdGltZSB0byByZWFkIHRoZSB2YWx1ZSB0aGF0IGl0IHdpbGwgcHJvZHVj
ZSBhZnRlciByZWFkaW5nIHRoYXQKKyAgICAvLyB2YWx1ZS4gU2luY2Ugd2UgYXJlIGV4ZWN1dGlu
ZyBpbiByZXZlcnNlLCB0aGlzIG1lYW5zIHRoYXQgd2UgbXVzdCBkbyBkZWZzIGJlZm9yZSB1c2Vz
IChyZXZlcnNlIG9mCisgICAgLy8gdXNlcyBiZWZvcmUgZGVmcykuCisgICAgLy8KKyAgICAvLyBT
aW5jZSB0aGlzIGlzIGEgbGl2ZW5lc3MgYW5hbHlzaXMsIHRoaXMgb3JkZXJpbmcgZW5kcyB1cCBi
ZWluZyBwYXJ0aWN1bGFybHkgaW1wb3J0YW50OiBpZiB3ZSBkaWQKKyAgICAvLyB1c2VzIGJlZm9y
ZSBkZWZzLCB0aGVuIHRoZSBhZGQgb3BlcmF0aW9uIGFib3ZlIHdvdWxkIGFwcGVhciB0byBub3Qg
aGF2ZSBsb2MxIGxpdmUsIHNpbmNlIHdlJ2QKKyAgICAvLyBmaXJzdCBhZGQgaXQgdG8gdGhlIG91
dCBzZXQgKHRoZSB1c2UpLCBhbmQgdGhlbiB3ZSdkIHJlbW92ZSBpdCAodGhlIGRlZikuCisKKyAg
ICBhdXRvKiBjb2RlQmxvY2sgPSBncmFwaC5jb2RlQmxvY2soKTsKKyAgICBJbnRlcnByZXRlciog
aW50ZXJwcmV0ZXIgPSBjb2RlQmxvY2stPnZtKCktPmludGVycHJldGVyOworICAgIGF1dG8qIGlu
c3RydWN0aW9uc0JlZ2luID0gZ3JhcGguaW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsKKyAgICBhdXRv
KiBpbnN0cnVjdGlvbiA9ICZpbnN0cnVjdGlvbnNCZWdpbltieXRlY29kZU9mZnNldF07CisgICAg
T3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoKmluc3RydWN0aW9u
KTsKKworICAgIHN0YXRpY19jYXN0PERlcml2ZWRBbmFseXNpcyo+KHRoaXMpLT5jb21wdXRlRGVm
c0ZvckJ5dGVjb2RlT2Zmc2V0KAorICAgICAgICBjb2RlQmxvY2ssIG9wY29kZUlELCBpbnN0cnVj
dGlvbiwgb3V0LAorICAgICAgICBbJl0gKHR5cGVuYW1lIEdyYXBoOjpDb2RlQmxvY2sqLCB0eXBl
bmFtZSBHcmFwaDo6SW5zdHJ1Y3Rpb24qLCBPcGNvZGVJRCwgaW50IG9wZXJhbmQpIHsKKyAgICAg
ICAgICAgIGlmIChpc1ZhbGlkUmVnaXN0ZXJGb3JMaXZlbmVzcyhvcGVyYW5kKSkKKyAgICAgICAg
ICAgICAgICBkZWYoVmlydHVhbFJlZ2lzdGVyKG9wZXJhbmQpLnRvTG9jYWwoKSk7CisgICAgICAg
IH0pOworCisgICAgc3RhdGljX2Nhc3Q8RGVyaXZlZEFuYWx5c2lzKj4odGhpcyktPmNvbXB1dGVV
c2VzRm9yQnl0ZWNvZGVPZmZzZXQoCisgICAgICAgIGNvZGVCbG9jaywgb3Bjb2RlSUQsIGluc3Ry
dWN0aW9uLCBvdXQsCisgICAgICAgIFsmXSAodHlwZW5hbWUgR3JhcGg6OkNvZGVCbG9jayosIHR5
cGVuYW1lIEdyYXBoOjpJbnN0cnVjdGlvbiosIE9wY29kZUlELCBpbnQgb3BlcmFuZCkgeworICAg
ICAgICAgICAgaWYgKGlzVmFsaWRSZWdpc3RlckZvckxpdmVuZXNzKG9wZXJhbmQpKQorICAgICAg
ICAgICAgICAgIHVzZShWaXJ0dWFsUmVnaXN0ZXIob3BlcmFuZCkudG9Mb2NhbCgpKTsKKyAgICAg
ICAgfSk7CisKKyAgICAvLyBJZiB3ZSBoYXZlIGFuIGV4Y2VwdGlvbiBoYW5kbGVyLCB3ZSB3YW50
IHRoZSBsaXZlLWluIHZhcmlhYmxlcyBvZiB0aGUgCisgICAgLy8gZXhjZXB0aW9uIGhhbmRsZXIg
YmxvY2sgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIGxpdmUtaW4gb2YgdGhpcyBwYXJ0aWN1bGFyIGJ5
dGVjb2RlLgorICAgIGlmIChhdXRvKiBoYW5kbGVyID0gY29kZUJsb2NrLT5oYW5kbGVyRm9yQnl0
ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpKSB7CisgICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9j
ayogaGFuZGxlckJsb2NrID0gZ3JhcGguZmluZEJhc2ljQmxvY2tXaXRoTGVhZGVyT2Zmc2V0KGhh
bmRsZXItPnRhcmdldCk7CisgICAgICAgIEFTU0VSVChoYW5kbGVyQmxvY2spOworICAgICAgICBo
YW5kbGVyQmxvY2stPmluKCkuZm9yRWFjaFNldEJpdCh1c2UpOworICAgIH0KK30KKwordGVtcGxh
dGU8dHlwZW5hbWUgRGVyaXZlZEFuYWx5c2lzPgordGVtcGxhdGU8dHlwZW5hbWUgR3JhcGg+Citp
bmxpbmUgdm9pZCBCeXRlY29kZUxpdmVuZXNzTG9jYWxQcm9wYWdhdGlvbjxEZXJpdmVkQW5hbHlz
aXM+OjpzdGVwT3Zlckluc3RydWN0aW9uKEdyYXBoJiBncmFwaCwgdW5zaWduZWQgYnl0ZWNvZGVP
ZmZzZXQsIEZhc3RCaXRWZWN0b3ImIG91dCkKK3sKKyAgICBzdGVwT3Zlckluc3RydWN0aW9uKAor
ICAgICAgICBncmFwaCwgYnl0ZWNvZGVPZmZzZXQsIG91dCwKKyAgICAgICAgWyZdICh1bnNpZ25l
ZCBiaXRJbmRleCkgeworICAgICAgICAgICAgLy8gVGhpcyBpcyB0aGUgdXNlIGZ1bmN0b3IsIHNv
IHdlIHNldCB0aGUgYml0LgorICAgICAgICAgICAgb3V0LnNldChiaXRJbmRleCk7CisgICAgICAg
IH0sCisgICAgICAgIFsmXSAodW5zaWduZWQgYml0SW5kZXgpIHsKKyAgICAgICAgICAgIC8vIFRo
aXMgaXMgdGhlIGRlZiBmdW5jdG9yLCBzbyB3ZSBjbGVhciB0aGUgYml0LgorICAgICAgICAgICAg
b3V0LmNsZWFyKGJpdEluZGV4KTsKKyAgICAgICAgfSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1l
IERlcml2ZWRBbmFseXNpcz4KK3RlbXBsYXRlPHR5cGVuYW1lIEdyYXBoPgoraW5saW5lIGJvb2wg
Qnl0ZWNvZGVMaXZlbmVzc0xvY2FsUHJvcGFnYXRpb248RGVyaXZlZEFuYWx5c2lzPjo6Y29tcHV0
ZUxvY2FsTGl2ZW5lc3NGb3JCeXRlY29kZU9mZnNldChHcmFwaCYgZ3JhcGgsIEJ5dGVjb2RlQmFz
aWNCbG9jayogYmxvY2ssIHVuc2lnbmVkIHRhcmdldE9mZnNldCwgRmFzdEJpdFZlY3RvciYgcmVz
dWx0KQoreworICAgIEFTU0VSVCghYmxvY2stPmlzRXhpdEJsb2NrKCkpOworICAgIEFTU0VSVCgh
YmxvY2stPmlzRW50cnlCbG9jaygpKTsKKworICAgIEZhc3RCaXRWZWN0b3Igb3V0ID0gYmxvY2st
Pm91dCgpOworCisgICAgZm9yIChpbnQgaSA9IGJsb2NrLT5ieXRlY29kZU9mZnNldHMoKS5zaXpl
KCkgLSAxOyBpID49IDA7IGktLSkgeworICAgICAgICB1bnNpZ25lZCBieXRlY29kZU9mZnNldCA9
IGJsb2NrLT5ieXRlY29kZU9mZnNldHMoKVtpXTsKKyAgICAgICAgaWYgKHRhcmdldE9mZnNldCA+
IGJ5dGVjb2RlT2Zmc2V0KQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIHN0ZXBPdmVySW5z
dHJ1Y3Rpb24oZ3JhcGgsIGJ5dGVjb2RlT2Zmc2V0LCBvdXQpOworICAgIH0KKworICAgIHJldHVy
biByZXN1bHQuc2V0QW5kQ2hlY2sob3V0KTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgRGVyaXZl
ZEFuYWx5c2lzPgordGVtcGxhdGU8dHlwZW5hbWUgR3JhcGg+CitpbmxpbmUgYm9vbCBCeXRlY29k
ZUxpdmVuZXNzTG9jYWxQcm9wYWdhdGlvbjxEZXJpdmVkQW5hbHlzaXM+Ojpjb21wdXRlTG9jYWxM
aXZlbmVzc0ZvckJsb2NrKEdyYXBoJiBncmFwaCwgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaykK
K3sKKyAgICBpZiAoYmxvY2stPmlzRXhpdEJsb2NrKCkgfHwgYmxvY2stPmlzRW50cnlCbG9jaygp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIGNvbXB1dGVMb2NhbExpdmVuZXNz
Rm9yQnl0ZWNvZGVPZmZzZXQoZ3JhcGgsIGJsb2NrLCBibG9jay0+bGVhZGVyQnl0ZWNvZGVPZmZz
ZXQoKSwgYmxvY2stPmluKCkpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBEZXJpdmVkQW5hbHlz
aXM+Cit0ZW1wbGF0ZTx0eXBlbmFtZSBHcmFwaD4KK2lubGluZSBGYXN0Qml0VmVjdG9yIEJ5dGVj
b2RlTGl2ZW5lc3NMb2NhbFByb3BhZ2F0aW9uPERlcml2ZWRBbmFseXNpcz46OmdldExpdmVuZXNz
SW5mb0F0Qnl0ZWNvZGVPZmZzZXQoR3JhcGgmIGdyYXBoLCB1bnNpZ25lZCBieXRlY29kZU9mZnNl
dCkKK3sKKyAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrID0gZ3JhcGguZmluZEJhc2ljQmxv
Y2tGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCk7CisgICAgQVNTRVJUKGJsb2NrKTsK
KyAgICBBU1NFUlQoIWJsb2NrLT5pc0VudHJ5QmxvY2soKSk7CisgICAgQVNTRVJUKCFibG9jay0+
aXNFeGl0QmxvY2soKSk7CisgICAgRmFzdEJpdFZlY3RvciBvdXQ7CisgICAgb3V0LnJlc2l6ZShi
bG9jay0+b3V0KCkubnVtQml0cygpKTsKKyAgICBjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJ5dGVj
b2RlT2Zmc2V0KGdyYXBoLCBibG9jaywgYnl0ZWNvZGVPZmZzZXQsIG91dCk7CisgICAgcmV0dXJu
IG91dDsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBCeXRlY29kZUxpdmVu
ZXNzQW5hbHlzaXNJbmxpbmVzX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZU1vZGlmaWNhdGlvblNldC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnl0ZWNvZGVNb2RpZmljYXRpb25TZXQuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhhYzJm
OGVjYTExNTljMjMxNmFiNTE4YjNjYWFhNzQ3NDhlYmE1NjAKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVNb2RpZmljYXRpb25TZXQuY3Bw
CkBAIC0wLDAgKzEsODQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgWXVzdWtlIFN1enVr
aSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiQnl0ZWNvZGVNb2RpZmljYXRpb25TZXQuaCIKKworI2luY2x1ZGUgPHd0Zi9C
dWJibGVTb3J0Lmg+CisKK25hbWVzcGFjZSBKU0MgeworCitpbnQgQnl0ZWNvZGVNb2RpZmljYXRp
b25TZXQ6OmFkanVzdE9mZnNldChpbnQgYnl0ZWNvZGVPZmZzZXQsIGludCBqdW1wVGFyZ2V0KQor
eworICAgIGlmIChieXRlY29kZU9mZnNldCA8IGp1bXBUYXJnZXQpIHsKKyAgICAgICAgYXV0byBz
dGFydCA9IHN0ZDo6bG93ZXJfYm91bmQobV9pbnNlcnRpb25zLmJlZ2luKCksIG1faW5zZXJ0aW9u
cy5lbmQoKSwgYnl0ZWNvZGVPZmZzZXQsIFsmXSAoY29uc3QgSW5zZXJ0aW9uJiBpbnNlcnRpb24s
IGludCBieXRlY29kZU9mZnNldCkgeworICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGlu
dD4oaW5zZXJ0aW9uLmluZGV4KCkpIDwgYnl0ZWNvZGVPZmZzZXQ7CisgICAgICAgIH0pOworICAg
ICAgICBpZiAoc3RhcnQgIT0gbV9pbnNlcnRpb25zLmVuZCgpKSB7CisgICAgICAgICAgICBhdXRv
IGVuZCA9IHN0ZDo6bG93ZXJfYm91bmQobV9pbnNlcnRpb25zLmJlZ2luKCksIG1faW5zZXJ0aW9u
cy5lbmQoKSwganVtcFRhcmdldCwgWyZdIChjb25zdCBJbnNlcnRpb24mIGluc2VydGlvbiwgaW50
IGp1bXBUYXJnZXQpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50Pihp
bnNlcnRpb24uaW5kZXgoKSkgPCBqdW1wVGFyZ2V0OworICAgICAgICAgICAgfSk7CisgICAgICAg
ICAgICBmb3IgKDsgc3RhcnQgIT0gZW5kOyArK3N0YXJ0KSB7CisgICAgICAgICAgICAgICAgaWYg
KHN0YXJ0LT5lbGVtZW50KCkudHlwZSA9PSBDb21tYW5kOjpUeXBlOjpSZW1vdmUpCisgICAgICAg
ICAgICAgICAgICAgIGp1bXBUYXJnZXQgLT0gc3RhcnQtPmVsZW1lbnQoKS5sZW5ndGg7CisgICAg
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBqdW1wVGFyZ2V0ICs9IHN0YXJ0
LT5lbGVtZW50KCkubGVuZ3RoOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJl
dHVybiBqdW1wVGFyZ2V0IC0gYnl0ZWNvZGVPZmZzZXQ7CisgICAgfQorCisgICAgaWYgKGJ5dGVj
b2RlT2Zmc2V0ID09IGp1bXBUYXJnZXQpCisgICAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJu
IC1hZGp1c3RPZmZzZXQoanVtcFRhcmdldCwgYnl0ZWNvZGVPZmZzZXQpOworfQorCit2b2lkIEJ5
dGVjb2RlTW9kaWZpY2F0aW9uU2V0OjphcHBseU1vZGlmaWNhdGlvbigpCit7CisgICAgZm9yIChz
aXplX3QgaW5zZXJ0aW9uSW5kZXggPSBtX2luc2VydGlvbnMuc2l6ZSgpOyBpbnNlcnRpb25JbmRl
eC0tOykgeworICAgICAgICBjb25zdCBJbnNlcnRpb24mIGluc2VydGlvbiA9IG1faW5zZXJ0aW9u
c1tpbnNlcnRpb25JbmRleF07CisgICAgICAgIGlmIChpbnNlcnRpb24uZWxlbWVudCgpLnR5cGUg
PT0gQ29tbWFuZDo6VHlwZTo6UmVtb3ZlKQorICAgICAgICAgICAgbV9ncmFwaC5pbnN0cnVjdGlv
bnMoKS5yZW1vdmUoaW5zZXJ0aW9uLmluZGV4KCksIGluc2VydGlvbi5lbGVtZW50KCkubGVuZ3Ro
KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV9ncmFwaC5pbnN0cnVjdGlvbnMoKS5pbnNl
cnQoaW5zZXJ0aW9uLmluZGV4KCksIGluc2VydGlvbi5lbGVtZW50KCkuYnl0ZWNvZGUuaW5zdHJ1
Y3Rpb25zLCBvcGNvZGVMZW5ndGgoaW5zZXJ0aW9uLmVsZW1lbnQoKS5ieXRlY29kZS5pbnN0cnVj
dGlvbnNbMF0udS5vcGNvZGUpKTsKKyAgICB9CisgICAgbV9pbnNlcnRpb25zLmNsZWFyKCk7Cit9
CisKK3ZvaWQgQnl0ZWNvZGVNb2RpZmljYXRpb25TZXQ6OmV4ZWN1dGUoKQoreworICAgIFdURjo6
YnViYmxlU29ydChtX2luc2VydGlvbnMuYmVnaW4oKSwgbV9pbnNlcnRpb25zLmVuZCgpLCBbXSAo
Y29uc3QgSW5zZXJ0aW9uJiBsaHMsIGNvbnN0IEluc2VydGlvbiYgcmhzKSB7CisgICAgICAgIC8v
IFdlIHdvdWxkIGxpa2UgdG8gcGVyZm9ybSByZW1vdmUgb3BlcmF0aW9uIGJlZm9yZSBpbnNlcnRp
b24uCisgICAgICAgIGlmIChsaHMuaW5kZXgoKSA9PSByaHMuaW5kZXgoKSkKKyAgICAgICAgICAg
IHJldHVybiByaHMuZWxlbWVudCgpLnR5cGUgPT0gQ29tbWFuZDo6VHlwZTo6UmVtb3ZlOworICAg
ICAgICByZXR1cm4gbGhzIDwgcmhzOworICAgIH0pOworCisgICAgVW5saW5rZWRDb2RlQmxvY2sq
IGNvZGVCbG9jayA9IG1fZ3JhcGguY29kZUJsb2NrKCk7CisgICAgY29kZUJsb2NrLT5hcHBseU1v
ZGlmaWNhdGlvbigqdGhpcyk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTW9kaWZpY2F0aW9uU2V0Lmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVNb2RpZmljYXRpb25TZXQu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi43OTM5ZGFhNDVjOGUyNjQyMDllN2EyMmVjZjNlMGQ3OGE0YWQzN2E3Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
TW9kaWZpY2F0aW9uU2V0LmgKQEAgLTAsMCArMSw4OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNiBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaW5jbHVkZSAiQnl0ZWNvZGVHcmFwaC5oIgorI2luY2x1ZGUgIkJ5dGVj
b2Rlcy5oIgorI2luY2x1ZGUgIlVubGlua2VkQ29kZUJsb2NrLmgiCisjaW5jbHVkZSA8d3RmL0lu
c2VydGlvbi5oPgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgQnl0ZWNvZGVNb2RpZmljYXRp
b25TZXQgeworcHVibGljOgorICAgIHN0cnVjdCBJbnNlcnRlZEJ5dGVjb2RlIHsKKyAgICAgICAg
VW5saW5rZWRJbnN0cnVjdGlvbiBpbnN0cnVjdGlvbnNbTUFYX09QQ09ERV9MRU5HVEhfT0ZfQllU
RUNPREVdOworICAgIH07CisKKyAgICBzdHJ1Y3QgQ29tbWFuZCB7CisgICAgICAgIGVudW0gY2xh
c3MgVHlwZSB7CisgICAgICAgICAgICBJbnNlcnQsCisgICAgICAgICAgICBSZW1vdmUsCisgICAg
ICAgIH07CisKKyAgICAgICAgVHlwZSB0eXBlOworICAgICAgICBzaXplX3QgbGVuZ3RoOworICAg
ICAgICBJbnNlcnRlZEJ5dGVjb2RlIGJ5dGVjb2RlOworICAgIH07CisKKyAgICB0eXBlZGVmIFdU
Rjo6SW5zZXJ0aW9uPENvbW1hbmQ+IEluc2VydGlvbjsKKworICAgIEJ5dGVjb2RlTW9kaWZpY2F0
aW9uU2V0KEJ5dGVjb2RlR3JhcGg8VW5saW5rZWRDb2RlQmxvY2s+JiBncmFwaCkKKyAgICAgICAg
OiBtX2dyYXBoKGdyYXBoKQorICAgIHsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTxjbGFzcy4uLiBB
cmdzPgorICAgIHZvaWQgaW5zZXJ0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBPcGNvZGVJRCBv
cGNvZGVJRCwgQXJncy4uLiBhcmdzKQorICAgIHsKKyAgICAgICAgSW5zZXJ0ZWRCeXRlY29kZSBi
eXRlY29kZSA9IHsgeworICAgICAgICAgICAgVW5saW5rZWRJbnN0cnVjdGlvbihvcGNvZGVJRCks
CisgICAgICAgICAgICBVbmxpbmtlZEluc3RydWN0aW9uKGFyZ3MpLi4uCisgICAgICAgIH0gfTsK
KyAgICAgICAgbV9pbnNlcnRpb25zLmFwcGVuZChJbnNlcnRpb24oYnl0ZWNvZGVPZmZzZXQsIENv
bW1hbmQgeyBDb21tYW5kOjpUeXBlOjpJbnNlcnQsIG9wY29kZUxlbmd0aChvcGNvZGVJRCksIGJ5
dGVjb2RlIH0pKTsKKyAgICB9CisKKyAgICB2b2lkIHJlbW92ZUJ5dGVjb2RlKHVuc2lnbmVkIGJ5
dGVjb2RlT2Zmc2V0KQorICAgIHsKKyAgICAgICAgbV9pbnNlcnRpb25zLmFwcGVuZChJbnNlcnRp
b24oYnl0ZWNvZGVPZmZzZXQsIENvbW1hbmQgeyBDb21tYW5kOjpUeXBlOjpSZW1vdmUsIG9wY29k
ZUxlbmd0aChtX2dyYXBoLmluc3RydWN0aW9ucygpW2J5dGVjb2RlT2Zmc2V0XS51Lm9wY29kZSks
IEluc2VydGVkQnl0ZWNvZGUgeyB9IH0pKTsKKyAgICB9CisKKyAgICB2b2lkIGV4ZWN1dGUoKTsK
KworICAgIEJ5dGVjb2RlR3JhcGg8VW5saW5rZWRDb2RlQmxvY2s+JiBncmFwaCgpIHsgcmV0dXJu
IG1fZ3JhcGg7IH0KKworICAgIGludCBhZGp1c3RPZmZzZXQoaW50IGJ5dGVjb2RlT2Zmc2V0LCBp
bnQganVtcFRhcmdldCk7CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIFVubGlua2VkQ29k
ZUJsb2NrOworICAgIHZvaWQgYXBwbHlNb2RpZmljYXRpb24oKTsKKworICAgIEJ5dGVjb2RlR3Jh
cGg8VW5saW5rZWRDb2RlQmxvY2s+JiBtX2dyYXBoOworICAgIFZlY3RvcjxJbnNlcnRpb24sIDg+
IG1faW5zZXJ0aW9uczsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaAppbmRleCA1NzA4NDRjMzVkOTAy
NWVlOTFhZDQ2OThiYWI5YmMxYTY3ZmQ4MzQ5Li43NTlmNzhjODEyOGJhNzYwY2M5Y2U1MmRmZjUz
YTQ4YWZiNzIyZTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Qnl0ZWNvZGVVc2VEZWYuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVVc2VEZWYuaApAQCAtMjcsMTggKzI3LDEzIEBACiAjZGVmaW5lIEJ5dGVjb2RlVXNlRGVm
X2gKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAK
IG5hbWVzcGFjZSBKU0MgewogCi10ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgotdm9pZCBjb21w
dXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAotICAgIENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRl
Y29kZUJhc2ljQmxvY2sqIGJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgY29uc3QgRnVu
Y3RvciYgZnVuY3RvcikKK3RlbXBsYXRlPHR5cGVuYW1lIEJsb2NrLCB0eXBlbmFtZSBGdW5jdG9y
LCB0eXBlbmFtZSBJbnN0cnVjdGlvbj4KK3ZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNl
dChCbG9jayogY29kZUJsb2NrLCBPcGNvZGVJRCBvcGNvZGVJRCwgSW5zdHJ1Y3Rpb24qIGluc3Ry
dWN0aW9uLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQogewotICAgIEludGVycHJldGVyKiBpbnRl
cnByZXRlciA9IGNvZGVCbG9jay0+dm0oKS0+aW50ZXJwcmV0ZXI7Ci0gICAgSW5zdHJ1Y3Rpb24q
IGluc3RydWN0aW9uc0JlZ2luID0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpOwot
ICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9ICZpbnN0cnVjdGlvbnNCZWdpbltieXRlY29k
ZU9mZnNldF07Ci0gICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnRlcnByZXRlci0+Z2V0T3Bjb2Rl
SUQoaW5zdHJ1Y3Rpb24tPnUub3Bjb2RlKTsKLQogICAgIGlmIChvcGNvZGVJRCAhPSBvcF9lbnRl
ciAmJiBjb2RlQmxvY2stPndhc0NvbXBpbGVkV2l0aERlYnVnZ2luZ09wY29kZXMoKSAmJiBjb2Rl
QmxvY2stPnNjb3BlUmVnaXN0ZXIoKS5pc1ZhbGlkKCkpCiAgICAgICAgIGZ1bmN0b3IoY29kZUJs
b2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGNvZGVCbG9jay0+c2NvcGVSZWdpc3RlcigpLm9m
ZnNldCgpKTsKIApAQCAtNzUsOCArNzAsNyBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVP
ZmZzZXQoCiAgICAgY2FzZSBvcF9qbmVxX251bGw6CiAgICAgY2FzZSBvcF9kZWM6CiAgICAgY2Fz
ZSBvcF9pbmM6Ci0gICAgY2FzZSBvcF9sb2dfc2hhZG93X2NoaWNrZW5fcHJvbG9ndWU6Ci0gICAg
Y2FzZSBvcF9yZXN1bWU6IHsKKyAgICBjYXNlIG9wX2xvZ19zaGFkb3dfY2hpY2tlbl9wcm9sb2d1
ZTogewogICAgICAgICBBU1NFUlQob3Bjb2RlTGVuZ3Roc1tvcGNvZGVJRF0gPiAxKTsKICAgICAg
ICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb25b
MV0udS5vcGVyYW5kKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjg3LDM1ICsyODEsMjIgQEAgdm9p
ZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAogICAgICAgICAgICAgZnVuY3Rvcihjb2Rl
QmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgY29kZUJsb2NrLT5zY29wZVJlZ2lzdGVyKCku
b2Zmc2V0KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGNhc2Ugb3Bfc2F2ZTogewot
ICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBpbnN0cnVj
dGlvblsxXS51Lm9wZXJhbmQpOwotICAgICAgICB1bnNpZ25lZCBtZXJnZVBvaW50Qnl0ZWNvZGVP
ZmZzZXQgPSBieXRlY29kZU9mZnNldCArIGluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKLSAgICAg
ICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBtZXJnZVBvaW50QmxvY2sgPSBudWxscHRyOwotICAgICAg
ICBmb3IgKEJ5dGVjb2RlQmFzaWNCbG9jayogc3VjY2Vzc29yIDogYmxvY2stPnN1Y2Nlc3NvcnMo
KSkgewotICAgICAgICAgICAgaWYgKHN1Y2Nlc3Nvci0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKSA9
PSBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXQpIHsKLSAgICAgICAgICAgICAgICBtZXJnZVBvaW50
QmxvY2sgPSBzdWNjZXNzb3I7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIH0KLSAgICAgICAgQVNTRVJUKG1lcmdlUG9pbnRCbG9jayk7Ci0gICAgICAgIG1l
cmdlUG9pbnRCbG9jay0+aW4oKS5mb3JFYWNoU2V0Qml0KFsmXSh1bnNpZ25lZCBsb2NhbCkgewot
ICAgICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgdmly
dHVhbFJlZ2lzdGVyRm9yTG9jYWwobG9jYWwpLm9mZnNldCgpKTsKLSAgICAgICAgfSk7CisKKyAg
ICBjYXNlIG9wX3NhdmU6CisgICAgY2FzZSBvcF9yZXN1bWU6IHsKKyAgICAgICAgLy8gRG8gbm90
aGluZyBpbiBsaXZlbmVzcyBhbmFseXNpcy4KICAgICAgICAgcmV0dXJuOwogICAgIH0KKwogICAg
IGRlZmF1bHQ6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAg
IGJyZWFrOwogICAgIH0KIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KLXZvaWQgY29t
cHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVC
YXNpY0Jsb2NrKiBibG9jaywgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIGNvbnN0IEZ1bmN0b3Im
IGZ1bmN0b3IpCit0ZW1wbGF0ZTx0eXBlbmFtZSBCbG9jaywgdHlwZW5hbWUgSW5zdHJ1Y3Rpb24s
IHR5cGVuYW1lIEZ1bmN0b3I+Cit2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQmxv
Y2sqIGNvZGVCbG9jaywgT3Bjb2RlSUQgb3Bjb2RlSUQsIEluc3RydWN0aW9uKiBpbnN0cnVjdGlv
biwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikKIHsKLSAgICBJbnRlcnByZXRlciogaW50ZXJwcmV0
ZXIgPSBjb2RlQmxvY2stPnZtKCktPmludGVycHJldGVyOwotICAgIEluc3RydWN0aW9uKiBpbnN0
cnVjdGlvbnNCZWdpbiA9IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsKLSAgICBJ
bnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSAmaW5zdHJ1Y3Rpb25zQmVnaW5bYnl0ZWNvZGVPZmZz
ZXRdOwotICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGlu
c3RydWN0aW9uLT51Lm9wY29kZSk7CiAgICAgc3dpdGNoIChvcGNvZGVJRCkgewogICAgIC8vIFRo
ZXNlIGRvbid0IGRlZmluZSBhbnl0aGluZy4KICAgICBjYXNlIG9wX2NvcHlfcmVzdDoKQEAgLTMy
Myw3ICszMDQsNiBAQCB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvYwogICAgIGNhc2Ugb3BfZW5kOgog
ICAgIGNhc2Ugb3BfdGhyb3c6CiAgICAgY2FzZSBvcF90aHJvd19zdGF0aWNfZXJyb3I6Ci0gICAg
Y2FzZSBvcF9zYXZlOgogICAgIGNhc2Ugb3BfYXNzZXJ0OgogICAgIGNhc2Ugb3BfZGVidWc6CiAg
ICAgY2FzZSBvcF9yZXQ6CkBAIC00NjMsNyArNDQzLDcgQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5
dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJs
b2MKICAgICBjYXNlIG9wX2RlbF9ieV9pZDoKICAgICBjYXNlIG9wX2RlbF9ieV92YWw6CiAgICAg
Y2FzZSBvcF91bnNpZ25lZDoKLSAgICBjYXNlIG9wX2dldF9mcm9tX2FyZ3VtZW50czogCisgICAg
Y2FzZSBvcF9nZXRfZnJvbV9hcmd1bWVudHM6CiAgICAgY2FzZSBvcF9nZXRfcmVzdF9sZW5ndGg6
IHsKICAgICAgICAgQVNTRVJUKG9wY29kZUxlbmd0aHNbb3Bjb2RlSURdID4gMSk7CiAgICAgICAg
IGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzFd
LnUub3BlcmFuZCk7CkBAIC00ODAsMTUgKzQ2MCwxNCBAQCB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0
ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxv
YwogICAgICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwg
dmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaSkub2Zmc2V0KCkpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQorICAgIGNhc2Ugb3Bfc2F2ZToKICAgICBjYXNlIG9wX3Jlc3VtZTogewotICAgICAgICBS
RUxFQVNFX0FTU0VSVChibG9jay0+c3VjY2Vzc29ycygpLnNpemUoKSA9PSAxKTsKLSAgICAgICAg
Ly8gRklYTUU6IFRoaXMgaXMgcmVhbGx5IGRpcnR5LgotICAgICAgICAvLyBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU5MjgxCi0gICAgICAgIGJsb2NrLT5zdWNjZXNz
b3JzKClbMF0tPmluKCkuZm9yRWFjaFNldEJpdChbJl0odW5zaWduZWQgbG9jYWwpIHsKLSAgICAg
ICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIHZpcnR1YWxS
ZWdpc3RlckZvckxvY2FsKGxvY2FsKS5vZmZzZXQoKSk7Ci0gICAgICAgIH0pOworICAgICAgICAv
LyBEbyBub3RoaW5nIGluIGxpdmVuZXNzIGFuYWx5c2lzLgogICAgICAgICByZXR1cm47CiAgICAg
fQorICAgIGRlZmF1bHQ6CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgIHJldHVybjsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5jcHAKaW5kZXggZTljMmU5MDBlOWQxN2E1NjVlZjgzMzI0YjhiZmMwNWFk
ZDYzYTkyMy4uZjljZTE1ZjgwYzk5MjgyMDc0YTU1YjA4ZGZiZDg0ODRhMWU0MjkxNiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTMzLDYgKzMz
LDcgQEAKICNpbmNsdWRlICJBcml0aFByb2ZpbGUuaCIKICNpbmNsdWRlICJCYXNpY0Jsb2NrTG9j
YXRpb24uaCIKICNpbmNsdWRlICJCeXRlY29kZUdlbmVyYXRvci5oIgorI2luY2x1ZGUgIkJ5dGVj
b2RlTGl2ZW5lc3NBbmFseXNpcy5oIgogI2luY2x1ZGUgIkJ5dGVjb2RlVXNlRGVmLmgiCiAjaW5j
bHVkZSAiQ2FsbExpbmtTdGF0dXMuaCIKICNpbmNsdWRlICJERkdDYXBhYmlsaXRpZXMuaCIKQEAg
LTY5NiwxOCArNjk3LDYgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZShQcmludFN0cmVh
bSYgb3V0KQogICAgICAgICB9IHdoaWxlIChpIDwgbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hK
dW1wVGFibGVzLnNpemUoKSk7CiAgICAgfQogCi0gICAgaWYgKG1fcmFyZURhdGEgJiYgIW1fcmFy
ZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQuaXNFbXB0eSgpKSB7Ci0gICAgICAgIG91
dC5wcmludGYoIlxuTGl2ZSBDYWxsZWUgTG9jYWxzOlxuIik7Ci0gICAgICAgIHVuc2lnbmVkIGkg
PSAwOwotICAgICAgICBkbyB7Ci0gICAgICAgICAgICBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZl
bmVzcyA9IG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGRbaV07Ci0gICAgICAg
ICAgICBvdXQucHJpbnRmKCIgIGxpdmUlMXUgPSAiLCBpKTsKLSAgICAgICAgICAgIGxpdmVuZXNz
LmR1bXAob3V0KTsKLSAgICAgICAgICAgIG91dC5wcmludGYoIlxuIik7Ci0gICAgICAgICAgICAr
K2k7Ci0gICAgICAgIH0gd2hpbGUgKGkgPCBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNB
dFlpZWxkLnNpemUoKSk7Ci0gICAgfQotCiAgICAgb3V0LnByaW50ZigiXG4iKTsKIH0KIApAQCAt
MTY3MSwzMSArMTY2MCw2IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoCiAgICAgICAg
ICAgICBvdXQucHJpbnRmKCIlcywgJWQiLCBkZWJ1Z0hvb2tOYW1lKGRlYnVnSG9va0lEKSwgaGFz
QnJlYWtwb2ludEZsYWcpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAg
Y2FzZSBvcF9zYXZlOiB7Ci0gICAgICAgICAgICBpbnQgZ2VuZXJhdG9yID0gKCsraXQpLT51Lm9w
ZXJhbmQ7Ci0gICAgICAgICAgICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSAoKytp
dCktPnUudW5zaWduZWRWYWx1ZTsKLSAgICAgICAgICAgIGludCBvZmZzZXQgPSAoKytpdCktPnUu
b3BlcmFuZDsKLSAgICAgICAgICAgIEZhc3RCaXRWZWN0b3IgbGl2ZW5lc3M7Ci0gICAgICAgICAg
ICBpZiAobGl2ZUNhbGxlZUxvY2Fsc0luZGV4IDwgbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9j
YWxzQXRZaWVsZC5zaXplKCkpCi0gICAgICAgICAgICAgICAgbGl2ZW5lc3MgPSBtX3JhcmVEYXRh
LT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkW2xpdmVDYWxsZWVMb2NhbHNJbmRleF07Ci0gICAg
ICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJzYXZl
Iik7Ci0gICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgIiwgcmVnaXN0ZXJOYW1lKGdlbmVyYXRv
cikuZGF0YSgpKTsKLSAgICAgICAgICAgIGxpdmVuZXNzLmR1bXAob3V0KTsKLSAgICAgICAgICAg
IG91dC5wcmludGYoIihAbGl2ZSUxdSksICVkKC0+JWQpIiwgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4
LCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICB9Ci0gICAgICAgIGNhc2Ugb3BfcmVzdW1lOiB7Ci0gICAgICAgICAgICBpbnQgZ2VuZXJhdG9y
ID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9j
YWxzSW5kZXggPSAoKytpdCktPnUudW5zaWduZWRWYWx1ZTsKLSAgICAgICAgICAgIEZhc3RCaXRW
ZWN0b3IgbGl2ZW5lc3M7Ci0gICAgICAgICAgICBpZiAobGl2ZUNhbGxlZUxvY2Fsc0luZGV4IDwg
bV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZC5zaXplKCkpCi0gICAgICAgICAg
ICAgICAgbGl2ZW5lc3MgPSBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkW2xp
dmVDYWxsZWVMb2NhbHNJbmRleF07Ci0gICAgICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0
LCBleGVjLCBsb2NhdGlvbiwgaXQsICJyZXN1bWUiKTsKLSAgICAgICAgICAgIG91dC5wcmludGYo
IiVzLCAiLCByZWdpc3Rlck5hbWUoZ2VuZXJhdG9yKS5kYXRhKCkpOwotICAgICAgICAgICAgbGl2
ZW5lc3MuZHVtcChvdXQpOwotICAgICAgICAgICAgb3V0LnByaW50ZigiKEBsaXZlJTF1KSIsIGxp
dmVDYWxsZWVMb2NhbHNJbmRleCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQogICAg
ICAgICBjYXNlIG9wX2Fzc2VydDogewogICAgICAgICAgICAgaW50IGNvbmRpdGlvbiA9ICgrK2l0
KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IGxpbmUgPSAoKytpdCktPnUub3BlcmFuZDsK
QEAgLTE5MDcsNyArMTg3MSw2IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYg
dm0sIENvcHlQYXJzZWRCbG9ja1RhZywgQ29kZUJsb2NrJiBvdGhlcikKICAgICAgICAgbV9yYXJl
RGF0YS0+bV9jb25zdGFudEJ1ZmZlcnMgPSBvdGhlci5tX3JhcmVEYXRhLT5tX2NvbnN0YW50QnVm
ZmVyczsKICAgICAgICAgbV9yYXJlRGF0YS0+bV9zd2l0Y2hKdW1wVGFibGVzID0gb3RoZXIubV9y
YXJlRGF0YS0+bV9zd2l0Y2hKdW1wVGFibGVzOwogICAgICAgICBtX3JhcmVEYXRhLT5tX3N0cmlu
Z1N3aXRjaEp1bXBUYWJsZXMgPSBvdGhlci5tX3JhcmVEYXRhLT5tX3N0cmluZ1N3aXRjaEp1bXBU
YWJsZXM7Ci0gICAgICAgIG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQgPSBv
dGhlci5tX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkOwogICAgIH0KICAgICAK
ICAgICBoZWFwKCktPm1fY29kZUJsb2Nrcy5hZGQodGhpcyk7CkBAIC0yMDI5LDcgKzE5OTIsNyBA
QCB2b2lkIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxl
KiBvd25lckV4ZWN1dGFibGUsIFVubGluawogICAgICAgICAgICAgICAgIFVubGlua2VkU3RyaW5n
SnVtcFRhYmxlOjpTdHJpbmdPZmZzZXRUYWJsZTo6aXRlcmF0b3IgZW5kID0gdW5saW5rZWRDb2Rl
QmxvY2stPnN0cmluZ1N3aXRjaEp1bXBUYWJsZShpKS5vZmZzZXRUYWJsZS5lbmQoKTsKICAgICAg
ICAgICAgICAgICBmb3IgKDsgcHRyICE9IGVuZDsgKytwdHIpIHsKICAgICAgICAgICAgICAgICAg
ICAgT2Zmc2V0TG9jYXRpb24gb2Zmc2V0OwotICAgICAgICAgICAgICAgICAgICBvZmZzZXQuYnJh
bmNoT2Zmc2V0ID0gcHRyLT52YWx1ZTsKKyAgICAgICAgICAgICAgICAgICAgb2Zmc2V0LmJyYW5j
aE9mZnNldCA9IHB0ci0+dmFsdWUuYnJhbmNoT2Zmc2V0OwogICAgICAgICAgICAgICAgICAgICBt
X3JhcmVEYXRhLT5tX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXNbaV0ub2Zmc2V0VGFibGUuYWRkKHB0
ci0+a2V5LCBvZmZzZXQpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KQEAgLTIw
NjksMTEgKzIwMzIsMTcgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwg
U2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICAvLyBCb29ra2Vl
cCB0aGUgc3Ryb25nbHkgcmVmZXJlbmNlZCBtb2R1bGUgZW52aXJvbm1lbnRzLgogICAgIEhhc2hT
ZXQ8SlNNb2R1bGVFbnZpcm9ubWVudCo+IHN0cm9uZ2x5UmVmZXJlbmNlZE1vZHVsZUVudmlyb25t
ZW50czsKIAotICAgIC8vIEJvb2trZWVwIHRoZSBtZXJnZSBwb2ludCBieXRlY29kZSBvZmZzZXRz
LgotICAgIFZlY3RvcjxzaXplX3Q+IG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldHM7Ci0KICAgICBS
ZWZDb3VudGVkQXJyYXk8SW5zdHJ1Y3Rpb24+IGluc3RydWN0aW9ucyhpbnN0cnVjdGlvbkNvdW50
KTsKIAorICAgIHVuc2lnbmVkIHZhbHVlUHJvZmlsZUNvdW50ID0gMDsKKyAgICBhdXRvIGxpbmtW
YWx1ZVByb2ZpbGUgPSBbJl0odW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIHVuc2lnbmVkIG9wTGVu
Z3RoKSB7CisgICAgICAgIHVuc2lnbmVkIHZhbHVlUHJvZmlsZUluZGV4ID0gdmFsdWVQcm9maWxl
Q291bnQrKzsKKyAgICAgICAgVmFsdWVQcm9maWxlKiBwcm9maWxlID0gJm1fdmFsdWVQcm9maWxl
c1t2YWx1ZVByb2ZpbGVJbmRleF07CisgICAgICAgIEFTU0VSVChwcm9maWxlLT5tX2J5dGVjb2Rl
T2Zmc2V0ID09IC0xKTsKKyAgICAgICAgcHJvZmlsZS0+bV9ieXRlY29kZU9mZnNldCA9IGJ5dGVj
b2RlT2Zmc2V0OworICAgICAgICBpbnN0cnVjdGlvbnNbYnl0ZWNvZGVPZmZzZXQgKyBvcExlbmd0
aCAtIDFdID0gcHJvZmlsZTsKKyAgICB9OworCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgIWlu
c3RydWN0aW9uUmVhZGVyLmF0RW5kKCk7ICkgewogICAgICAgICBjb25zdCBVbmxpbmtlZEluc3Ry
dWN0aW9uKiBwYyA9IGluc3RydWN0aW9uUmVhZGVyLm5leHQoKTsKIApAQCAtMjEwOCwxMCArMjA3
Nyw3IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1
dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAgICAgIGNhc2Ugb3BfZ2V0X2J5X2lk
OgogICAgICAgICBjYXNlIG9wX2dldF9mcm9tX2FyZ3VtZW50czoKICAgICAgICAgY2FzZSBvcF90
b19udW1iZXI6IHsKLSAgICAgICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9ICZtX3ZhbHVl
UHJvZmlsZXNbcGNbb3BMZW5ndGggLSAxXS51Lm9wZXJhbmRdOwotICAgICAgICAgICAgQVNTRVJU
KHByb2ZpbGUtPm1fYnl0ZWNvZGVPZmZzZXQgPT0gLTEpOwotICAgICAgICAgICAgcHJvZmlsZS0+
bV9ieXRlY29kZU9mZnNldCA9IGk7Ci0gICAgICAgICAgICBpbnN0cnVjdGlvbnNbaSArIG9wTGVu
Z3RoIC0gMV0gPSBwcm9maWxlOworICAgICAgICAgICAgbGlua1ZhbHVlUHJvZmlsZShpLCBvcExl
bmd0aCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX3B1
dF9ieV92YWw6IHsKQEAgLTIxNDgsMTAgKzIxMTQsNyBAQCB2b2lkIENvZGVCbG9jazo6ZmluaXNo
Q3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGlu
awogICAgICAgICBjYXNlIG9wX2NhbGw6CiAgICAgICAgIGNhc2Ugb3BfdGFpbF9jYWxsOgogICAg
ICAgICBjYXNlIG9wX2NhbGxfZXZhbDogewotICAgICAgICAgICAgVmFsdWVQcm9maWxlKiBwcm9m
aWxlID0gJm1fdmFsdWVQcm9maWxlc1twY1tvcExlbmd0aCAtIDFdLnUub3BlcmFuZF07Ci0gICAg
ICAgICAgICBBU1NFUlQocHJvZmlsZS0+bV9ieXRlY29kZU9mZnNldCA9PSAtMSk7Ci0gICAgICAg
ICAgICBwcm9maWxlLT5tX2J5dGVjb2RlT2Zmc2V0ID0gaTsKLSAgICAgICAgICAgIGluc3RydWN0
aW9uc1tpICsgb3BMZW5ndGggLSAxXSA9IHByb2ZpbGU7CisgICAgICAgICAgICBsaW5rVmFsdWVQ
cm9maWxlKGksIG9wTGVuZ3RoKTsKICAgICAgICAgICAgIGludCBhcnJheVByb2ZpbGVJbmRleCA9
IHBjW29wTGVuZ3RoIC0gMl0udS5vcGVyYW5kOwogICAgICAgICAgICAgbV9hcnJheVByb2ZpbGVz
W2FycmF5UHJvZmlsZUluZGV4XSA9IEFycmF5UHJvZmlsZShpKTsKICAgICAgICAgICAgIGluc3Ry
dWN0aW9uc1tpICsgb3BMZW5ndGggLSAyXSA9ICZtX2FycmF5UHJvZmlsZXNbYXJyYXlQcm9maWxl
SW5kZXhdOwpAQCAtMjE2MCwxMCArMjEyMyw3IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5pc2hDcmVh
dGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAg
ICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9jb25zdHJ1Y3Q6IHsKICAgICAgICAgICAgIGluc3Ry
dWN0aW9uc1tpICsgNV0gPSAmbV9sbGludENhbGxMaW5rSW5mb3NbcGNbNV0udS5vcGVyYW5kXTsK
LSAgICAgICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9ICZtX3ZhbHVlUHJvZmlsZXNbcGNb
b3BMZW5ndGggLSAxXS51Lm9wZXJhbmRdOwotICAgICAgICAgICAgQVNTRVJUKHByb2ZpbGUtPm1f
Ynl0ZWNvZGVPZmZzZXQgPT0gLTEpOwotICAgICAgICAgICAgcHJvZmlsZS0+bV9ieXRlY29kZU9m
ZnNldCA9IGk7Ci0gICAgICAgICAgICBpbnN0cnVjdGlvbnNbaSArIG9wTGVuZ3RoIC0gMV0gPSBw
cm9maWxlOworICAgICAgICAgICAgbGlua1ZhbHVlUHJvZmlsZShpLCBvcExlbmd0aCk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2dldF9hcnJheV9sZW5n
dGg6CkBAIC0yMTk0LDEwICsyMTU0LDcgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9u
KFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICAg
ICAgfQogCiAgICAgICAgIGNhc2Ugb3BfZ2V0X2Zyb21fc2NvcGU6IHsKLSAgICAgICAgICAgIFZh
bHVlUHJvZmlsZSogcHJvZmlsZSA9ICZtX3ZhbHVlUHJvZmlsZXNbcGNbb3BMZW5ndGggLSAxXS51
Lm9wZXJhbmRdOwotICAgICAgICAgICAgQVNTRVJUKHByb2ZpbGUtPm1fYnl0ZWNvZGVPZmZzZXQg
PT0gLTEpOwotICAgICAgICAgICAgcHJvZmlsZS0+bV9ieXRlY29kZU9mZnNldCA9IGk7Ci0gICAg
ICAgICAgICBpbnN0cnVjdGlvbnNbaSArIG9wTGVuZ3RoIC0gMV0gPSBwcm9maWxlOworICAgICAg
ICAgICAgbGlua1ZhbHVlUHJvZmlsZShpLCBvcExlbmd0aCk7CiAKICAgICAgICAgICAgIC8vIGdl
dF9mcm9tX3Njb3BlIGRzdCwgc2NvcGUsIGlkLCBHZXRQdXRJbmZvLCBTdHJ1Y3R1cmUsIE9wZXJh
bmQKIApAQCAtMjM1NCwxNSArMjMxMSw2IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlv
bihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogCi0gICAgICAgIGNhc2Ugb3Bfc2F2ZTogewotICAg
ICAgICAgICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gcGNbMl0udS5pbmRleDsK
LSAgICAgICAgICAgIGludCBvZmZzZXQgPSBwY1szXS51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBp
ZiAobGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID49IG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldHMuc2l6
ZSgpKQotICAgICAgICAgICAgICAgIG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldHMucmVzaXplKGxp
dmVDYWxsZWVMb2NhbHNJbmRleCArIDEpOwotICAgICAgICAgICAgbWVyZ2VQb2ludEJ5dGVjb2Rl
T2Zmc2V0c1tsaXZlQ2FsbGVlTG9jYWxzSW5kZXhdID0gaSArIG9mZnNldDsKLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICB9Ci0KICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CkBAIC0yMzc0LDIwICsyMzIyLDYgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmlz
aENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxp
bmsKIAogICAgIG1faW5zdHJ1Y3Rpb25zID0gV1RGTW92ZShpbnN0cnVjdGlvbnMpOwogCi0gICAg
Ly8gUGVyZm9ybSBieXRlY29kZSBsaXZlbmVzcyBhbmFseXNpcyB0byBkZXRlcm1pbmUgd2hpY2gg
bG9jYWxzIGFyZSBsaXZlIGFuZCBzaG91bGQgYmUgcmVzdW1lZCB3aGVuIGV4ZWN1dGluZyBvcF9y
ZXN1bWUuCi0gICAgaWYgKHVubGlua2VkQ29kZUJsb2NrLT5wYXJzZU1vZGUoKSA9PSBTb3VyY2VQ
YXJzZU1vZGU6OkdlbmVyYXRvckJvZHlNb2RlKSB7Ci0gICAgICAgIGlmIChzaXplX3QgY291bnQg
PSBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXRzLnNpemUoKSkgewotICAgICAgICAgICAgY3JlYXRl
UmFyZURhdGFJZk5lY2Vzc2FyeSgpOwotICAgICAgICAgICAgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5
c2lzIGxpdmVuZXNzKHRoaXMpOwotICAgICAgICAgICAgbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVl
TG9jYWxzQXRZaWVsZC5ncm93KGNvdW50KTsKLSAgICAgICAgICAgIHNpemVfdCBsaXZlQ2FsbGVl
TG9jYWxzSW5kZXggPSAwOwotICAgICAgICAgICAgZm9yIChzaXplX3QgYnl0ZWNvZGVPZmZzZXQg
OiBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXRzKSB7Ci0gICAgICAgICAgICAgICAgbV9yYXJlRGF0
YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZFtsaXZlQ2FsbGVlTG9jYWxzSW5kZXhdID0gbGl2
ZW5lc3MuZ2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCk7Ci0g
ICAgICAgICAgICAgICAgKytsaXZlQ2FsbGVlTG9jYWxzSW5kZXg7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgIH0KLSAgICB9Ci0KICAgICAvLyBTZXQgb3B0aW1pemF0aW9uIHRocmVzaG9sZHMgb25s
eSBhZnRlciBtX2luc3RydWN0aW9ucyBpcyBpbml0aWFsaXplZCwgc2luY2UgdGhlc2UKICAgICAv
LyByZWx5IG9uIHRoZSBpbnN0cnVjdGlvbiBjb3VudCAoYW5kIGFyZSBpbiB0aGVvcnkgcGVybWl0
dGVkIHRvIGFsc28gaW5zcGVjdCB0aGUKICAgICAvLyBpbnN0cnVjdGlvbiBzdHJlYW0gdG8gbW9y
ZSBhY2N1cmF0ZSBhc3Nlc3MgdGhlIGNvc3Qgb2YgdGllci11cCkuCkBAIC0zMjQ0LDIxICszMTc4
LDcgQEAgSGFuZGxlckluZm8qIENvZGVCbG9jazo6aGFuZGxlckZvckluZGV4KHVuc2lnbmVkIGlu
ZGV4LCBSZXF1aXJlZEhhbmRsZXIgcmVxdWlyZWQKIHsKICAgICBpZiAoIW1fcmFyZURhdGEpCiAg
ICAgICAgIHJldHVybiAwOwotICAgIAotICAgIFZlY3RvcjxIYW5kbGVySW5mbz4mIGV4Y2VwdGlv
bkhhbmRsZXJzID0gbV9yYXJlRGF0YS0+bV9leGNlcHRpb25IYW5kbGVyczsKLSAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGV4Y2VwdGlvbkhhbmRsZXJzLnNpemUoKTsgKytpKSB7Ci0gICAgICAg
IEhhbmRsZXJJbmZvJiBoYW5kbGVyID0gZXhjZXB0aW9uSGFuZGxlcnNbaV07Ci0gICAgICAgIGlm
ICgocmVxdWlyZWRIYW5kbGVyID09IFJlcXVpcmVkSGFuZGxlcjo6Q2F0Y2hIYW5kbGVyKSAmJiAh
aGFuZGxlci5pc0NhdGNoSGFuZGxlcigpKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAg
ICAgLy8gSGFuZGxlcnMgYXJlIG9yZGVyZWQgaW5uZXJtb3N0IGZpcnN0LCBzbyB0aGUgZmlyc3Qg
aGFuZGxlciB3ZSBlbmNvdW50ZXIKLSAgICAgICAgLy8gdGhhdCBjb250YWlucyB0aGUgc291cmNl
IGFkZHJlc3MgaXMgdGhlIGNvcnJlY3QgaGFuZGxlciB0byB1c2UuCi0gICAgICAgIC8vIFRoaXMg
aW5kZXggdXNlZCBpcyBlaXRoZXIgdGhlIEJ5dGVjb2RlT2Zmc2V0IG9yIGEgQ2FsbFNpdGVJbmRl
eC4KLSAgICAgICAgaWYgKGhhbmRsZXIuc3RhcnQgPD0gaW5kZXggJiYgaGFuZGxlci5lbmQgPiBp
bmRleCkKLSAgICAgICAgICAgIHJldHVybiAmaGFuZGxlcjsKLSAgICB9Ci0KLSAgICByZXR1cm4g
MDsKKyAgICByZXR1cm4gSGFuZGxlckluZm86OmhhbmRsZXJGb3JJbmRleChtX3JhcmVEYXRhLT5t
X2V4Y2VwdGlvbkhhbmRsZXJzLCBpbmRleCwgcmVxdWlyZWRIYW5kbGVyKTsKIH0KIAogQ2FsbFNp
dGVJbmRleCBDb2RlQmxvY2s6Om5ld0V4Y2VwdGlvbkhhbmRsaW5nQ2FsbFNpdGVJbmRleChDYWxs
U2l0ZUluZGV4IG9yaWdpbmFsQ2FsbFNpdGUpCkBAIC0zMzUzLDcgKzMyNzMsNiBAQCB2b2lkIENv
ZGVCbG9jazo6c2hyaW5rVG9GaXQoU2hyaW5rTW9kZSBzaHJpbmtNb2RlKQogICAgICAgICBpZiAo
bV9yYXJlRGF0YSkgewogICAgICAgICAgICAgbV9yYXJlRGF0YS0+bV9zd2l0Y2hKdW1wVGFibGVz
LnNocmlua1RvRml0KCk7CiAgICAgICAgICAgICBtX3JhcmVEYXRhLT5tX3N0cmluZ1N3aXRjaEp1
bXBUYWJsZXMuc2hyaW5rVG9GaXQoKTsKLSAgICAgICAgICAgIG1fcmFyZURhdGEtPm1fbGl2ZUNh
bGxlZUxvY2Fsc0F0WWllbGQuc2hyaW5rVG9GaXQoKTsKICAgICAgICAgfQogICAgIH0gLy8gZWxz
ZSBkb24ndCBzaHJpbmsgdGhlc2UsIGJlY2F1c2Ugd2Ugd291bGQgaGF2ZSBhbHJlYWR5IHBvaW50
ZWQgcG9pbnRlcnMgaW50byB0aGVzZSB0YWJsZXMuCiB9CkBAIC00MzM1LDE0ICs0MjU0LDkgQEAg
U3RyaW5nIENvZGVCbG9jazo6bmFtZUZvclJlZ2lzdGVyKFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFs
UmVnaXN0ZXIpCiAKIFZhbHVlUHJvZmlsZSogQ29kZUJsb2NrOjp2YWx1ZVByb2ZpbGVGb3JCeXRl
Y29kZU9mZnNldChpbnQgYnl0ZWNvZGVPZmZzZXQpCiB7Ci0gICAgVmFsdWVQcm9maWxlKiByZXN1
bHQgPSBiaW5hcnlTZWFyY2g8VmFsdWVQcm9maWxlLCBpbnQ+KAotICAgICAgICBtX3ZhbHVlUHJv
ZmlsZXMsIG1fdmFsdWVQcm9maWxlcy5zaXplKCksIGJ5dGVjb2RlT2Zmc2V0LAotICAgICAgICBn
ZXRWYWx1ZVByb2ZpbGVCeXRlY29kZU9mZnNldDxWYWx1ZVByb2ZpbGU+KTsKLSAgICBBU1NFUlQo
cmVzdWx0LT5tX2J5dGVjb2RlT2Zmc2V0ICE9IC0xKTsKLSAgICBBU1NFUlQoaW5zdHJ1Y3Rpb25z
KClbYnl0ZWNvZGVPZmZzZXQgKyBvcGNvZGVMZW5ndGgoCi0gICAgICAgIG1fdm0tPmludGVycHJl
dGVyLT5nZXRPcGNvZGVJRCgKLSAgICAgICAgICAgIGluc3RydWN0aW9ucygpW2J5dGVjb2RlT2Zm
c2V0XS51Lm9wY29kZSkpIC0gMV0udS5wcm9maWxlID09IHJlc3VsdCk7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKKyAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IG1fdm0tPmludGVycHJldGVyLT5nZXRPcGNv
ZGVJRChpbnN0cnVjdGlvbnMoKVtieXRlY29kZU9mZnNldF0udS5vcGNvZGUpOworICAgIHVuc2ln
bmVkIGxlbmd0aCA9IG9wY29kZUxlbmd0aChvcGNvZGVJRCk7CisgICAgcmV0dXJuIGluc3RydWN0
aW9ucygpW2J5dGVjb2RlT2Zmc2V0ICsgbGVuZ3RoIC0gMV0udS5wcm9maWxlOwogfQogCiB2b2lk
IENvZGVCbG9jazo6dmFsaWRhdGUoKQpAQCAtNDY3MSw0ICs0NTg1LDE2IEBAIHZvaWQgQ29kZUJs
b2NrOjpkdW1wTWF0aElDU3RhdHMoKQogI2VuZGlmCiB9CiAKK0J5dGVjb2RlTGl2ZW5lc3NBbmFs
eXNpcyYgQ29kZUJsb2NrOjpsaXZlbmVzc0FuYWx5c2lzU2xvdygpCit7CisgICAgc3RkOjp1bmlx
dWVfcHRyPEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcz4gYW5hbHlzaXMgPSBzdGQ6Om1ha2VfdW5p
cXVlPEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcz4odGhpcyk7CisgICAgeworICAgICAgICBDb25j
dXJyZW50SklUTG9ja2VyIGxvY2tlcihtX2xvY2spOworICAgICAgICBpZiAoIW1fbGl2ZW5lc3NB
bmFseXNpcykKKyAgICAgICAgICAgIG1fbGl2ZW5lc3NBbmFseXNpcyA9IFdURk1vdmUoYW5hbHlz
aXMpOworICAgICAgICByZXR1cm4gKm1fbGl2ZW5lc3NBbmFseXNpczsKKyAgICB9Cit9CisKKwog
fSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrLmgKaW5kZXggYWI5MjgwNGY2YmEzOWIzYjY3YmE2ZDc3NWU0NDllMmYzZGJmN2MwNS4uOWU1
ZDYwNzg3NzNmMzhjYmIyMmRjNmE1MGZhZmE3Y2ViMGUxZmZhMiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaApAQCAtMzMsNyArMzMsNiBAQAogI2luY2x1ZGUg
IkFycmF5UHJvZmlsZS5oIgogI2luY2x1ZGUgIkJ5VmFsSW5mby5oIgogI2luY2x1ZGUgIkJ5dGVj
b2RlQ29udmVudGlvbnMuaCIKLSNpbmNsdWRlICJCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuaCIK
ICNpbmNsdWRlICJDYWxsTGlua0luZm8uaCIKICNpbmNsdWRlICJDYWxsUmV0dXJuT2Zmc2V0VG9C
eXRlY29kZU9mZnNldC5oIgogI2luY2x1ZGUgIkNvZGVCbG9ja0hhc2guaCIKQEAgLTc5LDYgKzc4
LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKK2NsYXNzIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNp
czsKIGNsYXNzIEV4ZWNTdGF0ZTsKIGNsYXNzIEpJVEFkZEdlbmVyYXRvcjsKIGNsYXNzIEpTTW9k
dWxlRW52aXJvbm1lbnQ7CkBAIC0yMjYsMTAgKzIyNiw2IEBAIGNsYXNzIENvZGVCbG9jayA6IHB1
YmxpYyBKU0NlbGwgewogICAgICAgICByZXR1cm4gaW5kZXggPj0gbV9udW1WYXJzOwogICAgIH0K
IAotICAgIGVudW0gY2xhc3MgUmVxdWlyZWRIYW5kbGVyIHsKLSAgICAgICAgQ2F0Y2hIYW5kbGVy
LAotICAgICAgICBBbnlIYW5kbGVyCi0gICAgfTsKICAgICBIYW5kbGVySW5mbyogaGFuZGxlckZv
ckJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBSZXF1aXJlZEhhbmRsZXIg
PSBSZXF1aXJlZEhhbmRsZXI6OkFueUhhbmRsZXIpOwogICAgIEhhbmRsZXJJbmZvKiBoYW5kbGVy
Rm9ySW5kZXgodW5zaWduZWQsIFJlcXVpcmVkSGFuZGxlciA9IFJlcXVpcmVkSGFuZGxlcjo6QW55
SGFuZGxlcik7CiAgICAgdm9pZCByZW1vdmVFeGNlcHRpb25IYW5kbGVyRm9yQ2FsbFNpdGUoQ2Fs
bFNpdGVJbmRleCk7CkBAIC0zMDQsNiArMzAwLDkgQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGlj
IEpTQ2VsbCB7CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxJbnN0cnVjdGlvbio+KHJldHVy
bkFkZHJlc3MpIC0gaW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsKICAgICB9CiAKKyAgICB0eXBlZGVm
IEpTQzo6SW5zdHJ1Y3Rpb24gSW5zdHJ1Y3Rpb247CisgICAgdHlwZWRlZiBSZWZDb3VudGVkQXJy
YXk8SW5zdHJ1Y3Rpb24+JiBVbnBhY2tlZEluc3RydWN0aW9uczsKKwogICAgIHVuc2lnbmVkIG51
bWJlck9mSW5zdHJ1Y3Rpb25zKCkgY29uc3QgeyByZXR1cm4gbV9pbnN0cnVjdGlvbnMuc2l6ZSgp
OyB9CiAgICAgUmVmQ291bnRlZEFycmF5PEluc3RydWN0aW9uPiYgaW5zdHJ1Y3Rpb25zKCkgeyBy
ZXR1cm4gbV9pbnN0cnVjdGlvbnM7IH0KICAgICBjb25zdCBSZWZDb3VudGVkQXJyYXk8SW5zdHJ1
Y3Rpb24+JiBpbnN0cnVjdGlvbnMoKSBjb25zdCB7IHJldHVybiBtX2luc3RydWN0aW9uczsgfQpA
QCAtNTQ2LDcgKzU0NSw3IEBAIGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAg
IH0KIAogICAgIFdyaXRlQmFycmllcjxVbmtub3duPiYgY29uc3RhbnRSZWdpc3RlcihpbnQgaW5k
ZXgpIHsgcmV0dXJuIG1fY29uc3RhbnRSZWdpc3RlcnNbaW5kZXggLSBGaXJzdENvbnN0YW50UmVn
aXN0ZXJJbmRleF07IH0KLSAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNDb25zdGFudFJlZ2lzdGVy
SW5kZXgoaW50IGluZGV4KSBjb25zdCB7IHJldHVybiBpbmRleCA+PSBGaXJzdENvbnN0YW50UmVn
aXN0ZXJJbmRleDsgfQorICAgIHN0YXRpYyBBTFdBWVNfSU5MSU5FIGJvb2wgaXNDb25zdGFudFJl
Z2lzdGVySW5kZXgoaW50IGluZGV4KSB7IHJldHVybiBpbmRleCA+PSBGaXJzdENvbnN0YW50UmVn
aXN0ZXJJbmRleDsgfQogICAgIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBnZXRDb25zdGFudChpbnQg
aW5kZXgpIGNvbnN0IHsgcmV0dXJuIG1fY29uc3RhbnRSZWdpc3RlcnNbaW5kZXggLSBGaXJzdENv
bnN0YW50UmVnaXN0ZXJJbmRleF0uZ2V0KCk7IH0KICAgICBBTFdBWVNfSU5MSU5FIFNvdXJjZUNv
ZGVSZXByZXNlbnRhdGlvbiBjb25zdGFudFNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbihpbnQgaW5k
ZXgpIGNvbnN0IHsgcmV0dXJuIG1fY29uc3RhbnRzU291cmNlQ29kZVJlcHJlc2VudGF0aW9uW2lu
ZGV4IC0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXhdOyB9CiAKQEAgLTU5MiwxNCArNTkxLDcg
QEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgICAgICAgICBpZiAoISFt
X2xpdmVuZXNzQW5hbHlzaXMpCiAgICAgICAgICAgICAgICAgcmV0dXJuICptX2xpdmVuZXNzQW5h
bHlzaXM7CiAgICAgICAgIH0KLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlTGl2ZW5l
c3NBbmFseXNpcz4gYW5hbHlzaXMgPQotICAgICAgICAgICAgc3RkOjptYWtlX3VuaXF1ZTxCeXRl
Y29kZUxpdmVuZXNzQW5hbHlzaXM+KHRoaXMpOwotICAgICAgICB7Ci0gICAgICAgICAgICBDb25j
dXJyZW50SklUTG9ja2VyIGxvY2tlcihtX2xvY2spOwotICAgICAgICAgICAgaWYgKCFtX2xpdmVu
ZXNzQW5hbHlzaXMpCi0gICAgICAgICAgICAgICAgbV9saXZlbmVzc0FuYWx5c2lzID0gV1RGTW92
ZShhbmFseXNpcyk7Ci0gICAgICAgICAgICByZXR1cm4gKm1fbGl2ZW5lc3NBbmFseXNpczsKLSAg
ICAgICAgfQorICAgICAgICByZXR1cm4gbGl2ZW5lc3NBbmFseXNpc1Nsb3coKTsKICAgICB9CiAg
ICAgCiAgICAgdm9pZCB2YWxpZGF0ZSgpOwpAQCAtNjIwLDE4ICs2MTIsNiBAQCBjbGFzcyBDb2Rl
QmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICBTdHJpbmdKdW1wVGFibGUmIGFkZFN0cmluZ1N3
aXRjaEp1bXBUYWJsZSgpIHsgY3JlYXRlUmFyZURhdGFJZk5lY2Vzc2FyeSgpOyBtX3JhcmVEYXRh
LT5tX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXMuYXBwZW5kKFN0cmluZ0p1bXBUYWJsZSgpKTsgcmV0
dXJuIG1fcmFyZURhdGEtPm1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlcy5sYXN0KCk7IH0KICAgICBT
dHJpbmdKdW1wVGFibGUmIHN0cmluZ1N3aXRjaEp1bXBUYWJsZShpbnQgdGFibGVJbmRleCkgeyBS
RUxFQVNFX0FTU0VSVChtX3JhcmVEYXRhKTsgcmV0dXJuIG1fcmFyZURhdGEtPm1fc3RyaW5nU3dp
dGNoSnVtcFRhYmxlc1t0YWJsZUluZGV4XTsgfQogCi0gICAgLy8gTGl2ZSBjYWxsZWUgcmVnaXN0
ZXJzIGF0IHlpZWxkIHBvaW50cy4KLSAgICBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlQ2FsbGVl
TG9jYWxzQXRZaWVsZCh1bnNpZ25lZCBpbmRleCkgY29uc3QKLSAgICB7Ci0gICAgICAgIFJFTEVB
U0VfQVNTRVJUKG1fcmFyZURhdGEpOwotICAgICAgICByZXR1cm4gbV9yYXJlRGF0YS0+bV9saXZl
Q2FsbGVlTG9jYWxzQXRZaWVsZFtpbmRleF07Ci0gICAgfQotICAgIEZhc3RCaXRWZWN0b3ImIGxp
dmVDYWxsZWVMb2NhbHNBdFlpZWxkKHVuc2lnbmVkIGluZGV4KQotICAgIHsKLSAgICAgICAgUkVM
RUFTRV9BU1NFUlQobV9yYXJlRGF0YSk7Ci0gICAgICAgIHJldHVybiBtX3JhcmVEYXRhLT5tX2xp
dmVDYWxsZWVMb2NhbHNBdFlpZWxkW2luZGV4XTsKLSAgICB9Ci0KICAgICBFdmFsQ29kZUNhY2hl
JiBldmFsQ29kZUNhY2hlKCkgeyBjcmVhdGVSYXJlRGF0YUlmTmVjZXNzYXJ5KCk7IHJldHVybiBt
X3JhcmVEYXRhLT5tX2V2YWxDb2RlQ2FjaGU7IH0KIAogICAgIGVudW0gU2hyaW5rTW9kZSB7CkBA
IC04ODYsOCArODY2LDYgQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAg
ICAgIFZlY3RvcjxTaW1wbGVKdW1wVGFibGU+IG1fc3dpdGNoSnVtcFRhYmxlczsKICAgICAgICAg
VmVjdG9yPFN0cmluZ0p1bXBUYWJsZT4gbV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzOwogCi0gICAg
ICAgIFZlY3RvcjxGYXN0Qml0VmVjdG9yPiBtX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkOwotCiAg
ICAgICAgIEV2YWxDb2RlQ2FjaGUgbV9ldmFsQ29kZUNhY2hlOwogICAgIH07CiAKQEAgLTkyMiw2
ICs5MDAsOCBAQCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKIAogcHJpdmF0ZToK
ICAgICBmcmllbmQgY2xhc3MgQ29kZUJsb2NrU2V0OworCisgICAgQnl0ZWNvZGVMaXZlbmVzc0Fu
YWx5c2lzJiBsaXZlbmVzc0FuYWx5c2lzU2xvdygpOwogICAgIAogICAgIENvZGVCbG9jayogc3Bl
Y2lhbE9TUkVudHJ5QmxvY2tPck51bGwoKTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9IYW5kbGVySW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0hhbmRsZXJJbmZvLmgKaW5kZXggYWNkZGEwOGVkMTRjYmY5ZjA5NzEyNzUwNDA1
YTQxNzQxZjc2YTIxMy4uYmI2OTJiOWRjMTcwYjA5ZjQzY2U4NjdmOTQxZjc1MzVhY2ZlY2Y2MyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0hhbmRsZXJJbmZvLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0hhbmRsZXJJbmZvLmgKQEAgLTM3
LDYgKzM3LDExIEBAIGVudW0gY2xhc3MgSGFuZGxlclR5cGUgewogICAgIFN5bnRoZXNpemVkRmlu
YWxseSA9IDMKIH07CiAKK2VudW0gY2xhc3MgUmVxdWlyZWRIYW5kbGVyIHsKKyAgICBDYXRjaEhh
bmRsZXIsCisgICAgQW55SGFuZGxlcgorfTsKKwogc3RydWN0IEhhbmRsZXJJbmZvQmFzZSB7CiAg
ICAgSGFuZGxlclR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEhhbmRsZXJU
eXBlPih0eXBlQml0cyk7IH0KICAgICB2b2lkIHNldFR5cGUoSGFuZGxlclR5cGUgdHlwZSkgeyB0
eXBlQml0cyA9IHN0YXRpY19jYXN0PHVpbnQzMl90Pih0eXBlKTsgfQpAQCAtNTgsNiArNjMsMjMg
QEAgc3RydWN0IEhhbmRsZXJJbmZvQmFzZSB7CiAKICAgICBib29sIGlzQ2F0Y2hIYW5kbGVyKCkg
Y29uc3QgeyByZXR1cm4gdHlwZSgpID09IEhhbmRsZXJUeXBlOjpDYXRjaDsgfQogCisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgSGFuZGxlcj4KKyAgICBzdGF0aWMgSGFuZGxlciogaGFuZGxlckZvcklu
ZGV4KFZlY3RvcjxIYW5kbGVyPiYgZXhlcHRpb25IYW5kbGVycywgdW5zaWduZWQgaW5kZXgsIFJl
cXVpcmVkSGFuZGxlciByZXF1aXJlZEhhbmRsZXIpCisgICAgeworICAgICAgICBmb3IgKEhhbmRs
ZXImIGhhbmRsZXIgOiBleGVwdGlvbkhhbmRsZXJzKSB7CisgICAgICAgICAgICBpZiAoKHJlcXVp
cmVkSGFuZGxlciA9PSBSZXF1aXJlZEhhbmRsZXI6OkNhdGNoSGFuZGxlcikgJiYgIWhhbmRsZXIu
aXNDYXRjaEhhbmRsZXIoKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAg
ICAgLy8gSGFuZGxlcnMgYXJlIG9yZGVyZWQgaW5uZXJtb3N0IGZpcnN0LCBzbyB0aGUgZmlyc3Qg
aGFuZGxlciB3ZSBlbmNvdW50ZXIKKyAgICAgICAgICAgIC8vIHRoYXQgY29udGFpbnMgdGhlIHNv
dXJjZSBhZGRyZXNzIGlzIHRoZSBjb3JyZWN0IGhhbmRsZXIgdG8gdXNlLgorICAgICAgICAgICAg
Ly8gVGhpcyBpbmRleCB1c2VkIGlzIGVpdGhlciB0aGUgQnl0ZWNvZGVPZmZzZXQgb3IgYSBDYWxs
U2l0ZUluZGV4LgorICAgICAgICAgICAgaWYgKGhhbmRsZXIuc3RhcnQgPD0gaW5kZXggJiYgaGFu
ZGxlci5lbmQgPiBpbmRleCkKKyAgICAgICAgICAgICAgICByZXR1cm4gJmhhbmRsZXI7CisgICAg
ICAgIH0KKworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKICAgICB1aW50MzJfdCBz
dGFydDsKICAgICB1aW50MzJfdCBlbmQ7CiAgICAgdWludDMyX3QgdGFyZ2V0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmNwcApp
bmRleCBlMmNiMDAwNDgzNzk0YmE5MmQ1MTBkY2Y1ZmE5OTQ4ODVhMjNkYzNkLi5jYWI5ZmJkYzRl
ODM5ZmJiODlhNjkzMzU2MjIyZGIwMGUxMDIyM2NhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmNwcApAQCAtMjYsMTQgKzI2
LDE1IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUHJlY2lzZUp1bXBUYXJnZXRz
LmgiCiAKKyNpbmNsdWRlICJJbnRlcnByZXRlcklubGluZXMuaCIKICNpbmNsdWRlICJKU0NJbmxp
bmVzLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCi10ZW1wbGF0ZSA8c2l6ZV90IHZlY3RvclNpemU+
Ci1zdGF0aWMgdm9pZCBnZXRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayog
Y29kZUJsb2NrLCBJbnRlcnByZXRlciogaW50ZXJwcmV0ZXIsIEluc3RydWN0aW9uKiBpbnN0cnVj
dGlvbnNCZWdpbiwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIFZlY3Rvcjx1bnNpZ25lZCwgdmVj
dG9yU2l6ZT4mIG91dCkKK3RlbXBsYXRlIDxzaXplX3QgdmVjdG9yU2l6ZSwgdHlwZW5hbWUgQmxv
Y2ssIHR5cGVuYW1lIEluc3RydWN0aW9uPgorc3RhdGljIHZvaWQgZ2V0SnVtcFRhcmdldHNGb3JC
eXRlY29kZU9mZnNldChCbG9jayogY29kZUJsb2NrLCBJbnRlcnByZXRlciogaW50ZXJwcmV0ZXIs
IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQs
IFZlY3Rvcjx1bnNpZ25lZCwgdmVjdG9yU2l6ZT4mIG91dCkKIHsKLSAgICBPcGNvZGVJRCBvcGNv
ZGVJRCA9IGludGVycHJldGVyLT5nZXRPcGNvZGVJRChpbnN0cnVjdGlvbnNCZWdpbltieXRlY29k
ZU9mZnNldF0udS5vcGNvZGUpOworICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0ZXIt
PmdldE9wY29kZUlEKGluc3RydWN0aW9uc0JlZ2luW2J5dGVjb2RlT2Zmc2V0XSk7CiAgICAgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnQgPSBpbnN0cnVjdGlvbnNCZWdpbiArIGJ5dGVjb2RlT2Zmc2V0Owog
ICAgIHN3aXRjaCAob3Bjb2RlSUQpIHsKICAgICBjYXNlIG9wX2ptcDoKQEAgLTU0LDIxICs1NSwy
NSBAQCBzdGF0aWMgdm9pZCBnZXRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9j
ayogY29kZUJsb2NrLCBJbnRlcnByZXRlciogaQogICAgIGNhc2Ugb3Bfam5sZXNzZXE6CiAgICAg
Y2FzZSBvcF9qbmdyZWF0ZXI6CiAgICAgY2FzZSBvcF9qbmdyZWF0ZXJlcToKLSAgICBjYXNlIG9w
X3NhdmU6IC8vIFRoZSBqdW1wIG9mIG9wX3NhdmUgaXMgcHVyZWx5IGZvciBjYWxjdWxhdGluZyBs
aXZlbmVzcy4KICAgICAgICAgb3V0LmFwcGVuZChieXRlY29kZU9mZnNldCArIGN1cnJlbnRbM10u
dS5vcGVyYW5kKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBvcF9zYXZlOiB7CisgICAgICAg
IC8vIFRoZSBqdW1wIG9mIG9wX3NhdmUgdW5kZXIgRXh0cmFjdEdlbmVyYXRvckxpdmVDYWxsZWVM
b2NhbHMgbW9kZSBpcyBwdXJlbHkgZm9yIGNhbGN1bGF0aW5nIGxpdmVuZXNzLgorICAgICAgICBv
dXQuYXBwZW5kKGJ5dGVjb2RlT2Zmc2V0ICsgY3VycmVudFszXS51Lm9wZXJhbmQpOworICAgICAg
ICBicmVhazsKKyAgICB9CiAgICAgY2FzZSBvcF9zd2l0Y2hfaW1tOgogICAgIGNhc2Ugb3Bfc3dp
dGNoX2NoYXI6IHsKLSAgICAgICAgU2ltcGxlSnVtcFRhYmxlJiB0YWJsZSA9IGNvZGVCbG9jay0+
c3dpdGNoSnVtcFRhYmxlKGN1cnJlbnRbMV0udS5vcGVyYW5kKTsKKyAgICAgICAgYXV0byYgdGFi
bGUgPSBjb2RlQmxvY2stPnN3aXRjaEp1bXBUYWJsZShjdXJyZW50WzFdLnUub3BlcmFuZCk7CiAg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IHRhYmxlLmJyYW5jaE9mZnNldHMuc2l6ZSgpOyBpLS07
KQogICAgICAgICAgICAgb3V0LmFwcGVuZChieXRlY29kZU9mZnNldCArIHRhYmxlLmJyYW5jaE9m
ZnNldHNbaV0pOwogICAgICAgICBvdXQuYXBwZW5kKGJ5dGVjb2RlT2Zmc2V0ICsgY3VycmVudFsy
XS51Lm9wZXJhbmQpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBvcF9zd2l0Y2hf
c3RyaW5nOiB7Ci0gICAgICAgIFN0cmluZ0p1bXBUYWJsZSYgdGFibGUgPSBjb2RlQmxvY2stPnN0
cmluZ1N3aXRjaEp1bXBUYWJsZShjdXJyZW50WzFdLnUub3BlcmFuZCk7Ci0gICAgICAgIFN0cmlu
Z0p1bXBUYWJsZTo6U3RyaW5nT2Zmc2V0VGFibGU6Oml0ZXJhdG9yIGl0ZXIgPSB0YWJsZS5vZmZz
ZXRUYWJsZS5iZWdpbigpOwotICAgICAgICBTdHJpbmdKdW1wVGFibGU6OlN0cmluZ09mZnNldFRh
YmxlOjppdGVyYXRvciBlbmQgPSB0YWJsZS5vZmZzZXRUYWJsZS5lbmQoKTsKKyAgICAgICAgYXV0
byYgdGFibGUgPSBjb2RlQmxvY2stPnN0cmluZ1N3aXRjaEp1bXBUYWJsZShjdXJyZW50WzFdLnUu
b3BlcmFuZCk7CisgICAgICAgIGF1dG8gaXRlciA9IHRhYmxlLm9mZnNldFRhYmxlLmJlZ2luKCk7
CisgICAgICAgIGF1dG8gZW5kID0gdGFibGUub2Zmc2V0VGFibGUuZW5kKCk7CiAgICAgICAgIGZv
ciAoOyBpdGVyICE9IGVuZDsgKytpdGVyKQogICAgICAgICAgICAgb3V0LmFwcGVuZChieXRlY29k
ZU9mZnNldCArIGl0ZXItPnZhbHVlLmJyYW5jaE9mZnNldCk7CiAgICAgICAgIG91dC5hcHBlbmQo
Ynl0ZWNvZGVPZmZzZXQgKyBjdXJyZW50WzJdLnUub3BlcmFuZCk7CkBAIC04MiwxMyArODcsMTkg
QEAgc3RhdGljIHZvaWQgZ2V0SnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sq
IGNvZGVCbG9jaywgSW50ZXJwcmV0ZXIqIGkKICAgICB9CiB9CiAKLXZvaWQgY29tcHV0ZVByZWNp
c2VKdW1wVGFyZ2V0cyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgVmVjdG9yPHVuc2lnbmVkLCAzMj4m
IG91dCkKK2VudW0gY2xhc3MgQ29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0c01vZGUgeworICAgIEZv
bGxvd0NvZGVCbG9ja0NsYWltLAorICAgIEZvcmNlQ29tcHV0ZSwKK307CisKK3RlbXBsYXRlPENv
bXB1dGVQcmVjaXNlSnVtcFRhcmdldHNNb2RlIE1vZGUsIHR5cGVuYW1lIEJsb2NrLCB0eXBlbmFt
ZSBJbnN0cnVjdGlvbiwgc2l6ZV90IHZlY3RvclNpemU+Cit2b2lkIGNvbXB1dGVQcmVjaXNlSnVt
cFRhcmdldHNJbnRlcm5hbChCbG9jayogY29kZUJsb2NrLCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rp
b25zQmVnaW4sIHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQsIFZlY3Rvcjx1bnNpZ25lZCwgdmVj
dG9yU2l6ZT4mIG91dCkKIHsKICAgICBBU1NFUlQob3V0LmlzRW1wdHkoKSk7CiAgICAgCiAgICAg
Ly8gV2Ugd2lsbCBkZXJpdmUgYSBzdXBlcnNldCBvZiB0aGUganVtcCB0YXJnZXRzIHRoYXQgdGhl
IGNvZGUgYmxvY2sgdGhpbmtzIGl0IGhhcy4KICAgICAvLyBTbywgaWYgdGhlIGNvZGUgYmxvY2sg
Y2xhaW1zIHRoZXJlIGFyZSBub25lLCB0aGVuIHdlIGFyZSBkb25lLgotICAgIGlmICghY29kZUJs
b2NrLT5udW1iZXJPZkp1bXBUYXJnZXRzKCkpCisgICAgaWYgKE1vZGUgPT0gQ29tcHV0ZVByZWNp
c2VKdW1wVGFyZ2V0c01vZGU6OkZvbGxvd0NvZGVCbG9ja0NsYWltICYmICFjb2RlQmxvY2stPm51
bWJlck9mSnVtcFRhcmdldHMoKSkKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIGZvciAodW5z
aWduZWQgaSA9IGNvZGVCbG9jay0+bnVtYmVyT2ZFeGNlcHRpb25IYW5kbGVycygpOyBpLS07KSB7
CkBAIC05OCwxMCArMTA5LDggQEAgdm9pZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKENvZGVC
bG9jayogY29kZUJsb2NrLCBWZWN0b3I8dW5zaWduZWQsIDMyPiYgb3V0KQogICAgIH0KIAogICAg
IEludGVycHJldGVyKiBpbnRlcnByZXRlciA9IGNvZGVCbG9jay0+dm0oKS0+aW50ZXJwcmV0ZXI7
Ci0gICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luID0gY29kZUJsb2NrLT5pbnN0cnVj
dGlvbnMoKS5iZWdpbigpOwotICAgIHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQgPSBjb2RlQmxv
Y2stPmluc3RydWN0aW9ucygpLnNpemUoKTsKICAgICBmb3IgKHVuc2lnbmVkIGJ5dGVjb2RlT2Zm
c2V0ID0gMDsgYnl0ZWNvZGVPZmZzZXQgPCBpbnN0cnVjdGlvbkNvdW50OykgewotICAgICAgICBP
cGNvZGVJRCBvcGNvZGVJRCA9IGludGVycHJldGVyLT5nZXRPcGNvZGVJRChpbnN0cnVjdGlvbnNC
ZWdpbltieXRlY29kZU9mZnNldF0udS5vcGNvZGUpOworICAgICAgICBPcGNvZGVJRCBvcGNvZGVJ
RCA9IGludGVycHJldGVyLT5nZXRPcGNvZGVJRChpbnN0cnVjdGlvbnNCZWdpbltieXRlY29kZU9m
ZnNldF0pOwogICAgICAgICBnZXRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9j
aywgaW50ZXJwcmV0ZXIsIGluc3RydWN0aW9uc0JlZ2luLCBieXRlY29kZU9mZnNldCwgb3V0KTsK
ICAgICAgICAgYnl0ZWNvZGVPZmZzZXQgKz0gb3Bjb2RlTGVuZ3Roc1tvcGNvZGVJRF07CiAgICAg
fQpAQCAtMTIzLDExICsxMzIsMzQgQEAgdm9pZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKENv
ZGVCbG9jayogY29kZUJsb2NrLCBWZWN0b3I8dW5zaWduZWQsIDMyPiYgb3V0KQogICAgIG91dC5z
aHJpbmtUb0ZpdCgpOwogfQogCi12b2lkIGZpbmRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0
KENvZGVCbG9jayogY29kZUJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgVmVjdG9yPHVu
c2lnbmVkLCAxPiYgb3V0KQordm9pZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKENvZGVCbG9j
ayogY29kZUJsb2NrLCBWZWN0b3I8dW5zaWduZWQsIDMyPiYgb3V0KQogewotICAgIEludGVycHJl
dGVyKiBpbnRlcnByZXRlciA9IGNvZGVCbG9jay0+dm0oKS0+aW50ZXJwcmV0ZXI7Ci0gICAgSW5z
dHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luID0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5i
ZWdpbigpOwotICAgIGdldEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoY29kZUJsb2NrLCBp
bnRlcnByZXRlciwgaW5zdHJ1Y3Rpb25zQmVnaW4sIGJ5dGVjb2RlT2Zmc2V0LCBvdXQpOworICAg
IGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHNJbnRlcm5hbDxDb21wdXRlUHJlY2lzZUp1bXBUYXJn
ZXRzTW9kZTo6Rm9sbG93Q29kZUJsb2NrQ2xhaW0+KGNvZGVCbG9jaywgY29kZUJsb2NrLT5pbnN0
cnVjdGlvbnMoKS5iZWdpbigpLCBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLnNpemUoKSwgb3V0
KTsKK30KKwordm9pZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKENvZGVCbG9jayogY29kZUJs
b2NrLCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGluc3RydWN0aW9u
Q291bnQsIFZlY3Rvcjx1bnNpZ25lZCwgMzI+JiBvdXQpCit7CisgICAgY29tcHV0ZVByZWNpc2VK
dW1wVGFyZ2V0c0ludGVybmFsPENvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHNNb2RlOjpGb2xsb3dD
b2RlQmxvY2tDbGFpbT4oY29kZUJsb2NrLCBpbnN0cnVjdGlvbnNCZWdpbiwgaW5zdHJ1Y3Rpb25D
b3VudCwgb3V0KTsKK30KKwordm9pZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKFVubGlua2Vk
Q29kZUJsb2NrKiBjb2RlQmxvY2ssIFVubGlua2VkSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0Jl
Z2luLCB1bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50LCBWZWN0b3I8dW5zaWduZWQsIDMyPiYgb3V0
KQoreworICAgIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHNJbnRlcm5hbDxDb21wdXRlUHJlY2lz
ZUp1bXBUYXJnZXRzTW9kZTo6Rm9sbG93Q29kZUJsb2NrQ2xhaW0+KGNvZGVCbG9jaywgaW5zdHJ1
Y3Rpb25zQmVnaW4sIGluc3RydWN0aW9uQ291bnQsIG91dCk7Cit9CisKK3ZvaWQgcmVjb21wdXRl
UHJlY2lzZUp1bXBUYXJnZXRzKFVubGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFVubGlua2Vk
SW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50
LCBWZWN0b3I8dW5zaWduZWQ+JiBvdXQpCit7CisgICAgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0
c0ludGVybmFsPENvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHNNb2RlOjpGb3JjZUNvbXB1dGU+KGNv
ZGVCbG9jaywgaW5zdHJ1Y3Rpb25zQmVnaW4sIGluc3RydWN0aW9uQ291bnQsIG91dCk7Cit9CisK
K3ZvaWQgZmluZEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgYnl0ZWNvZGVPZmZz
ZXQsIFZlY3Rvcjx1bnNpZ25lZCwgMT4mIG91dCkKK3sKKyAgICBnZXRKdW1wVGFyZ2V0c0ZvckJ5
dGVjb2RlT2Zmc2V0KGNvZGVCbG9jaywgY29kZUJsb2NrLT52bSgpLT5pbnRlcnByZXRlciwgaW5z
dHJ1Y3Rpb25zQmVnaW4sIGJ5dGVjb2RlT2Zmc2V0LCBvdXQpOworfQorCit2b2lkIGZpbmRKdW1w
VGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KFVubGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFVu
bGlua2VkSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBieXRlY29kZU9m
ZnNldCwgVmVjdG9yPHVuc2lnbmVkLCAxPiYgb3V0KQoreworICAgIGdldEp1bXBUYXJnZXRzRm9y
Qnl0ZWNvZGVPZmZzZXQoY29kZUJsb2NrLCBjb2RlQmxvY2stPnZtKCktPmludGVycHJldGVyLCBp
bnN0cnVjdGlvbnNCZWdpbiwgYnl0ZWNvZGVPZmZzZXQsIG91dCk7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNp
c2VKdW1wVGFyZ2V0cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VK
dW1wVGFyZ2V0cy5oCmluZGV4IDg1MjQxM2Q3N2I3OTg5ODRiMjdjZWYwZWQ2MmJjOTRjNjg5ZTIx
MmMuLmRiOWJkMzgzYjhhYzQ1NTdkMzI2NzE3YjcyZDRiMGY1MGIxZDE4MzggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmgKQEAg
LTMwLDEwICszMCwxOCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorY2xhc3MgVW5saW5rZWRDb2Rl
QmxvY2s7CitzdHJ1Y3QgVW5saW5rZWRJbnN0cnVjdGlvbjsKKwogLy8gUmV0dXJuIGEgc29ydGVk
IGxpc3Qgb2YgYnl0ZWNvZGUgaW5kZXggdGhhdCBhcmUgdGhlIGRlc3RpbmF0aW9uIG9mIGEganVt
cC4KIHZvaWQgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhDb2RlQmxvY2sqLCBWZWN0b3I8dW5z
aWduZWQsIDMyPiYgb3V0KTsKK3ZvaWQgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhDb2RlQmxv
Y2sqLCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGluc3RydWN0aW9u
Q291bnQsIFZlY3Rvcjx1bnNpZ25lZCwgMzI+JiBvdXQpOwordm9pZCBjb21wdXRlUHJlY2lzZUp1
bXBUYXJnZXRzKFVubGlua2VkQ29kZUJsb2NrKiwgVW5saW5rZWRJbnN0cnVjdGlvbiogaW5zdHJ1
Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQsIFZlY3Rvcjx1bnNpZ25lZCwg
MzI+JiBvdXQpOworCit2b2lkIHJlY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhVbmxpbmtlZENv
ZGVCbG9jayosIFVubGlua2VkSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25l
ZCBpbnN0cnVjdGlvbkNvdW50LCBWZWN0b3I8dW5zaWduZWQ+JiBvdXQpOwogCi12b2lkIGZpbmRK
dW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayosIHVuc2lnbmVkIGJ5dGVjb2Rl
T2Zmc2V0LCBWZWN0b3I8dW5zaWduZWQsIDE+JiBvdXQpOwordm9pZCBmaW5kSnVtcFRhcmdldHNG
b3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqLCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVn
aW4sIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBWZWN0b3I8dW5zaWduZWQsIDE+JiBvdXQpOwor
dm9pZCBmaW5kSnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChVbmxpbmtlZENvZGVCbG9jayos
IFVubGlua2VkSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBieXRlY29k
ZU9mZnNldCwgVmVjdG9yPHVuc2lnbmVkLCAxPiYgb3V0KTsKIAogfSAvLyBuYW1lc3BhY2UgSlND
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENv
ZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2Rl
QmxvY2suY3BwCmluZGV4IDI5OWFjNjgwZDlhMWQxZTVhOTBkOWZhZTFhMjJmODQ0ZTI5MmUzZTIu
LmY3YjVhZTBiNmI0NzIxNzBkMjg5NDY0MTY3NjYxOGM1N2M0OWVjMmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcApAQCAt
MjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIlVubGlua2VkQ29kZUJsb2NrLmgiCiAKICNpbmNsdWRl
ICJCeXRlY29kZUdlbmVyYXRvci5oIgorI2luY2x1ZGUgIkJ5dGVjb2RlTW9kaWZpY2F0aW9uU2V0
LmgiCiAjaW5jbHVkZSAiQ2xhc3NJbmZvLmgiCiAjaW5jbHVkZSAiQ29kZUNhY2hlLmgiCiAjaW5j
bHVkZSAiRXhlY3V0YWJsZS5oIgpAQCAtMzYsNiArMzcsNyBAQAogI2luY2x1ZGUgIkpTU3RyaW5n
LmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIlBhcnNlci5oIgorI2luY2x1
ZGUgIlByZWNpc2VKdW1wVGFyZ2V0cy5oIgogI2luY2x1ZGUgIlNvdXJjZVByb3ZpZGVyLmgiCiAj
aW5jbHVkZSAiU3RydWN0dXJlLmgiCiAjaW5jbHVkZSAiU3ltYm9sVGFibGUuaCIKQEAgLTM2Niw1
ICszNjgsMTExIEBAIGNvbnN0IFVubGlua2VkSW5zdHJ1Y3Rpb25TdHJlYW0mIFVubGlua2VkQ29k
ZUJsb2NrOjppbnN0cnVjdGlvbnMoKSBjb25zdAogICAgIHJldHVybiAqbV91bmxpbmtlZEluc3Ry
dWN0aW9uczsKIH0KIAorVW5saW5rZWRIYW5kbGVySW5mbyogVW5saW5rZWRDb2RlQmxvY2s6Omhh
bmRsZXJGb3JCeXRlY29kZU9mZnNldCh1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgUmVxdWlyZWRI
YW5kbGVyIHJlcXVpcmVkSGFuZGxlcikKK3sKKyAgICByZXR1cm4gaGFuZGxlckZvckluZGV4KGJ5
dGVjb2RlT2Zmc2V0LCByZXF1aXJlZEhhbmRsZXIpOworfQorCitVbmxpbmtlZEhhbmRsZXJJbmZv
KiBVbmxpbmtlZENvZGVCbG9jazo6aGFuZGxlckZvckluZGV4KHVuc2lnbmVkIGluZGV4LCBSZXF1
aXJlZEhhbmRsZXIgcmVxdWlyZWRIYW5kbGVyKQoreworICAgIGlmICghbV9yYXJlRGF0YSkKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIFVubGlua2VkSGFuZGxlckluZm86Omhh
bmRsZXJGb3JJbmRleChtX3JhcmVEYXRhLT5tX2V4Y2VwdGlvbkhhbmRsZXJzLCBpbmRleCwgcmVx
dWlyZWRIYW5kbGVyKTsKK30KKwordm9pZCBVbmxpbmtlZENvZGVCbG9jazo6YXBwbHlNb2RpZmlj
YXRpb24oQnl0ZWNvZGVNb2RpZmljYXRpb25TZXQmIGluc2VydGlvblNldCkKK3sKKyAgICAvLyBC
ZWZvcmUgYXBwbHlpbmcgdGhlIGNoYW5nZXMsIHdlIGFkanVzdCB0aGUganVtcHMgYmFzZWQgb24g
dGhlIG9yaWdpbmFsIGJ5dGVjb2RlIG9mZnNldCwgdGhlIG9mZnNldCB0byB0aGUganVtcCB0YXJn
ZXQsIGFuZAorICAgIC8vIHRoZSBpbnNlcnRpb24gaW5mb3JtYXRpb24uCisKKyAgICBCeXRlY29k
ZUdyYXBoPFVubGlua2VkQ29kZUJsb2NrPiYgZ3JhcGggPSBpbnNlcnRpb25TZXQuZ3JhcGgoKTsK
KyAgICBVbmxpbmtlZEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiA9IGdyYXBoLmluc3Ry
dWN0aW9ucygpLmJlZ2luKCk7CisgICAgZm9yIChpbnQgYnl0ZWNvZGVPZmZzZXQgPSAwLCBpbnN0
cnVjdGlvbkNvdW50ID0gZ3JhcGguaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpOyBieXRlY29kZU9mZnNl
dCA8IGluc3RydWN0aW9uQ291bnQ7KSB7CisgICAgICAgIFVubGlua2VkSW5zdHJ1Y3Rpb24qIGN1
cnJlbnQgPSBpbnN0cnVjdGlvbnNCZWdpbiArIGJ5dGVjb2RlT2Zmc2V0OworICAgICAgICBPcGNv
ZGVJRCBvcGNvZGVJRCA9IGN1cnJlbnRbMF0udS5vcGNvZGU7CisKKyAgICAgICAgc3dpdGNoIChv
cGNvZGVJRCkgeworICAgICAgICBjYXNlIG9wX2ptcDoKKyAgICAgICAgICAgIGN1cnJlbnRbMV0u
dS5vcGVyYW5kID0gaW5zZXJ0aW9uU2V0LmFkanVzdE9mZnNldChieXRlY29kZU9mZnNldCwgYnl0
ZWNvZGVPZmZzZXQgKyBjdXJyZW50WzFdLnUub3BlcmFuZCk7CisgICAgICAgICAgICBicmVhazsK
KworICAgICAgICBjYXNlIG9wX2p0cnVlOgorICAgICAgICBjYXNlIG9wX2pmYWxzZToKKyAgICAg
ICAgY2FzZSBvcF9qZXFfbnVsbDoKKyAgICAgICAgY2FzZSBvcF9qbmVxX251bGw6CisgICAgICAg
ICAgICBjdXJyZW50WzJdLnUub3BlcmFuZCA9IGluc2VydGlvblNldC5hZGp1c3RPZmZzZXQoYnl0
ZWNvZGVPZmZzZXQsIGJ5dGVjb2RlT2Zmc2V0ICsgY3VycmVudFsyXS51Lm9wZXJhbmQpOworICAg
ICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBvcF9qbmVxX3B0cjoKKyAgICAgICAgY2Fz
ZSBvcF9qbGVzczoKKyAgICAgICAgY2FzZSBvcF9qbGVzc2VxOgorICAgICAgICBjYXNlIG9wX2pn
cmVhdGVyOgorICAgICAgICBjYXNlIG9wX2pncmVhdGVyZXE6CisgICAgICAgIGNhc2Ugb3Bfam5s
ZXNzOgorICAgICAgICBjYXNlIG9wX2pubGVzc2VxOgorICAgICAgICBjYXNlIG9wX2puZ3JlYXRl
cjoKKyAgICAgICAgY2FzZSBvcF9qbmdyZWF0ZXJlcToKKyAgICAgICAgICAgIGN1cnJlbnRbM10u
dS5vcGVyYW5kID0gaW5zZXJ0aW9uU2V0LmFkanVzdE9mZnNldChieXRlY29kZU9mZnNldCwgYnl0
ZWNvZGVPZmZzZXQgKyBjdXJyZW50WzNdLnUub3BlcmFuZCk7CisgICAgICAgICAgICBicmVhazsK
KworICAgICAgICBjYXNlIG9wX3N3aXRjaF9pbW06CisgICAgICAgIGNhc2Ugb3Bfc3dpdGNoX2No
YXI6IHsKKyAgICAgICAgICAgIGF1dG8mIHRhYmxlID0gc3dpdGNoSnVtcFRhYmxlKGN1cnJlbnRb
MV0udS5vcGVyYW5kKTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IHRhYmxlLmJyYW5j
aE9mZnNldHMuc2l6ZSgpOyBpLS07KQorICAgICAgICAgICAgICAgIHRhYmxlLmJyYW5jaE9mZnNl
dHNbaV0gPSBpbnNlcnRpb25TZXQuYWRqdXN0T2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0LCBieXRlY29k
ZU9mZnNldCArIHRhYmxlLmJyYW5jaE9mZnNldHNbaV0pOworICAgICAgICAgICAgY3VycmVudFsy
XS51Lm9wZXJhbmQgPSBpbnNlcnRpb25TZXQuYWRqdXN0T2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0LCBi
eXRlY29kZU9mZnNldCArIGN1cnJlbnRbMl0udS5vcGVyYW5kKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBvcF9zd2l0Y2hfc3RyaW5nOiB7CisgICAgICAg
ICAgICBhdXRvJiB0YWJsZSA9IHN0cmluZ1N3aXRjaEp1bXBUYWJsZShjdXJyZW50WzFdLnUub3Bl
cmFuZCk7CisgICAgICAgICAgICBhdXRvIGl0ZXIgPSB0YWJsZS5vZmZzZXRUYWJsZS5iZWdpbigp
OworICAgICAgICAgICAgYXV0byBlbmQgPSB0YWJsZS5vZmZzZXRUYWJsZS5lbmQoKTsKKyAgICAg
ICAgICAgIGZvciAoOyBpdGVyICE9IGVuZDsgKytpdGVyKQorICAgICAgICAgICAgICAgIGl0ZXIt
PnZhbHVlLmJyYW5jaE9mZnNldCA9IGluc2VydGlvblNldC5hZGp1c3RPZmZzZXQoYnl0ZWNvZGVP
ZmZzZXQsIGJ5dGVjb2RlT2Zmc2V0ICsgaXRlci0+dmFsdWUuYnJhbmNoT2Zmc2V0KTsKKyAgICAg
ICAgICAgIGN1cnJlbnRbMl0udS5vcGVyYW5kID0gaW5zZXJ0aW9uU2V0LmFkanVzdE9mZnNldChi
eXRlY29kZU9mZnNldCwgYnl0ZWNvZGVPZmZzZXQgKyBjdXJyZW50WzJdLnUub3BlcmFuZCk7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGJ5dGVjb2RlT2Zmc2V0ICs9IG9wY29k
ZUxlbmd0aChvcGNvZGVJRCk7CisgICAgfQorCisgICAgLy8gVGhlbiwgZXhjZXB0aW9uIGhhbmRs
ZXJzIHNob3VsZCBiZSBhZGp1c3RlZC4KKyAgICBpZiAobV9yYXJlRGF0YSkgeworICAgICAgICBm
b3IgKFVubGlua2VkSGFuZGxlckluZm8mIGhhbmRsZXIgOiBtX3JhcmVEYXRhLT5tX2V4Y2VwdGlv
bkhhbmRsZXJzKSB7CisgICAgICAgICAgICBoYW5kbGVyLnRhcmdldCA9IGluc2VydGlvblNldC5h
ZGp1c3RPZmZzZXQoMCwgaGFuZGxlci50YXJnZXQpOworICAgICAgICAgICAgaGFuZGxlci5zdGFy
dCA9IGluc2VydGlvblNldC5hZGp1c3RPZmZzZXQoMCwgaGFuZGxlci5zdGFydCk7CisgICAgICAg
ICAgICBoYW5kbGVyLmVuZCA9IGluc2VydGlvblNldC5hZGp1c3RPZmZzZXQoMCwgaGFuZGxlci5l
bmQpOworICAgICAgICB9CisKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3JhcmVE
YXRhLT5tX29wUHJvZmlsZUNvbnRyb2xGbG93Qnl0ZWNvZGVPZmZzZXRzLnNpemUoKTsgKytpKQor
ICAgICAgICAgICAgbV9yYXJlRGF0YS0+bV9vcFByb2ZpbGVDb250cm9sRmxvd0J5dGVjb2RlT2Zm
c2V0c1tpXSA9IGluc2VydGlvblNldC5hZGp1c3RPZmZzZXQoMCwgbV9yYXJlRGF0YS0+bV9vcFBy
b2ZpbGVDb250cm9sRmxvd0J5dGVjb2RlT2Zmc2V0c1tpXSk7CisKKyAgICAgICAgaWYgKCFtX3Jh
cmVEYXRhLT5tX3R5cGVQcm9maWxlckluZm9NYXAuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICBI
YXNoTWFwPHVuc2lnbmVkLCBSYXJlRGF0YTo6VHlwZVByb2ZpbGVyRXhwcmVzc2lvblJhbmdlPiBh
ZGp1c3RlZFR5cGVQcm9maWxlckluZm9NYXA7CisgICAgICAgICAgICBmb3IgKGF1dG8mIGVudHJ5
IDogbV9yYXJlRGF0YS0+bV90eXBlUHJvZmlsZXJJbmZvTWFwKQorICAgICAgICAgICAgICAgIGFk
anVzdGVkVHlwZVByb2ZpbGVySW5mb01hcC5zZXQoaW5zZXJ0aW9uU2V0LmFkanVzdE9mZnNldCgw
LCBlbnRyeS5rZXkpLCBlbnRyeS52YWx1ZSk7CisgICAgICAgICAgICBtX3JhcmVEYXRhLT5tX3R5
cGVQcm9maWxlckluZm9NYXAuc3dhcChhZGp1c3RlZFR5cGVQcm9maWxlckluZm9NYXApOworICAg
ICAgICB9CisgICAgfQorCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3Byb3BlcnR5QWNj
ZXNzSW5zdHJ1Y3Rpb25zLnNpemUoKTsgKytpKQorICAgICAgICBtX3Byb3BlcnR5QWNjZXNzSW5z
dHJ1Y3Rpb25zW2ldID0gaW5zZXJ0aW9uU2V0LmFkanVzdE9mZnNldCgwLCBtX3Byb3BlcnR5QWNj
ZXNzSW5zdHJ1Y3Rpb25zW2ldKTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9leHBy
ZXNzaW9uSW5mby5zaXplKCk7ICsraSkKKyAgICAgICAgbV9leHByZXNzaW9uSW5mb1tpXS5pbnN0
cnVjdGlvbk9mZnNldCA9IGluc2VydGlvblNldC5hZGp1c3RPZmZzZXQoMCwgbV9leHByZXNzaW9u
SW5mb1tpXS5pbnN0cnVjdGlvbk9mZnNldCk7CisKKyAgICAvLyBUaGVuLCBtb2RpZnkgdGhlIHVu
bGlua2VkIGluc3RydWN0aW9ucy4KKyAgICBpbnNlcnRpb25TZXQuYXBwbHlNb2RpZmljYXRpb24o
KTsKKworICAgIC8vIEFuZCByZWNvbXB1dGUgdGhlIGp1bXAgdGFyZ2V0IGJhc2VkIG9uIHRoZSBt
b2RpZmllZCB1bmxpbmtlZCBpbnN0cnVjdGlvbnMuCisgICAgbV9qdW1wVGFyZ2V0cy5jbGVhcigp
OworICAgIHJlY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyh0aGlzLCBncmFwaC5pbnN0cnVjdGlv
bnMoKS5iZWdpbigpLCBncmFwaC5pbnN0cnVjdGlvbnMoKS5zaXplKCksIG1fanVtcFRhcmdldHMp
OworfQorCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9V
bmxpbmtlZENvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlu
a2VkQ29kZUJsb2NrLmgKaW5kZXggOTFmZGNhNDhjMWUzOWU4YmVmYjBjNWZkNTVmZDliZDkxYzFm
MzcwNy4uNjJmMTRiMDg5NDA4MjgwNjdmMzg4YWYzMjc4ZTgxZDQ1YTNlZjhkNyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKQEAg
LTQ4LDYgKzQ4LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKK2NsYXNzIEJ5dGVjb2RlTW9kaWZp
Y2F0aW9uU2V0OwogY2xhc3MgRGVidWdnZXI7CiBjbGFzcyBGdW5jdGlvbk1ldGFkYXRhTm9kZTsK
IGNsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZTsKQEAgLTY5LDcgKzcwLDExIEBAIHR5cGVkZWYgdW5z
aWduZWQgVW5saW5rZWRPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTsKIHR5cGVkZWYgdW5zaWduZWQg
VW5saW5rZWRMTEludENhbGxMaW5rSW5mbzsKIAogc3RydWN0IFVubGlua2VkU3RyaW5nSnVtcFRh
YmxlIHsKLSAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFN0cmluZ0ltcGw+LCBpbnQzMl90PiBT
dHJpbmdPZmZzZXRUYWJsZTsKKyAgICBzdHJ1Y3QgT2Zmc2V0TG9jYXRpb24geworICAgICAgICBp
bnQzMl90IGJyYW5jaE9mZnNldDsKKyAgICB9OworCisgICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0
cjxTdHJpbmdJbXBsPiwgT2Zmc2V0TG9jYXRpb24+IFN0cmluZ09mZnNldFRhYmxlOwogICAgIFN0
cmluZ09mZnNldFRhYmxlIG9mZnNldFRhYmxlOwogCiAgICAgaW5saW5lIGludDMyX3Qgb2Zmc2V0
Rm9yVmFsdWUoU3RyaW5nSW1wbCogdmFsdWUsIGludDMyX3QgZGVmYXVsdE9mZnNldCkKQEAgLTc4
LDcgKzgzLDcgQEAgc3RydWN0IFVubGlua2VkU3RyaW5nSnVtcFRhYmxlIHsKICAgICAgICAgU3Ry
aW5nT2Zmc2V0VGFibGU6OmNvbnN0X2l0ZXJhdG9yIGxvYyA9IG9mZnNldFRhYmxlLmZpbmQodmFs
dWUpOwogICAgICAgICBpZiAobG9jID09IGVuZCkKICAgICAgICAgICAgIHJldHVybiBkZWZhdWx0
T2Zmc2V0OwotICAgICAgICByZXR1cm4gbG9jLT52YWx1ZTsKKyAgICAgICAgcmV0dXJuIGxvYy0+
dmFsdWUuYnJhbmNoT2Zmc2V0OwogICAgIH0KIAogfTsKQEAgLTEwNiw2ICsxMTEsOCBAQCBzdHJ1
Y3QgVW5saW5rZWRJbnN0cnVjdGlvbiB7CiAgICAgfSB1OwogfTsKIAorY2xhc3MgQnl0ZWNvZGVH
ZW5lcmF0b3JpZmljYXRpb247CisKIGNsYXNzIFVubGlua2VkQ29kZUJsb2NrIDogcHVibGljIEpT
Q2VsbCB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBKU0NlbGwgQmFzZTsKQEAgLTExNSw2ICsxMjIs
OSBAQCBjbGFzcyBVbmxpbmtlZENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogCiAgICAgZW51
bSB7IENhbGxGdW5jdGlvbiwgQXBwbHlGdW5jdGlvbiB9OwogCisgICAgdHlwZWRlZiBVbmxpbmtl
ZEluc3RydWN0aW9uIEluc3RydWN0aW9uOworICAgIHR5cGVkZWYgVmVjdG9yPFVubGlua2VkSW5z
dHJ1Y3Rpb24sIDAsIFVuc2FmZVZlY3Rvck92ZXJmbG93PiBVbnBhY2tlZEluc3RydWN0aW9uczsK
KwogICAgIGJvb2wgaXNDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1faXNDb25zdHJ1Y3Rv
cjsgfQogICAgIGJvb2wgaXNTdHJpY3RNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9pc1N0cmljdE1v
ZGU7IH0KICAgICBib29sIHVzZXNFdmFsKCkgY29uc3QgeyByZXR1cm4gbV91c2VzRXZhbDsgfQpA
QCAtMjA0LDYgKzIxNCw5IEBAIGNsYXNzIFVubGlua2VkQ29kZUJsb2NrIDogcHVibGljIEpTQ2Vs
bCB7CiAgICAgdW5zaWduZWQganVtcFRhcmdldChpbnQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIG1f
anVtcFRhcmdldHNbaW5kZXhdOyB9CiAgICAgdW5zaWduZWQgbGFzdEp1bXBUYXJnZXQoKSBjb25z
dCB7IHJldHVybiBtX2p1bXBUYXJnZXRzLmxhc3QoKTsgfQogCisgICAgVW5saW5rZWRIYW5kbGVy
SW5mbyogaGFuZGxlckZvckJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBS
ZXF1aXJlZEhhbmRsZXIgPSBSZXF1aXJlZEhhbmRsZXI6OkFueUhhbmRsZXIpOworICAgIFVubGlu
a2VkSGFuZGxlckluZm8qIGhhbmRsZXJGb3JJbmRleCh1bnNpZ25lZCwgUmVxdWlyZWRIYW5kbGVy
ID0gUmVxdWlyZWRIYW5kbGVyOjpBbnlIYW5kbGVyKTsKKwogICAgIGJvb2wgaXNCdWlsdGluRnVu
Y3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2lzQnVpbHRpbkZ1bmN0aW9uOyB9CiAKICAgICBDb25z
dHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8
Q29uc3RydWN0b3JLaW5kPihtX2NvbnN0cnVjdG9yS2luZCk7IH0KQEAgLTM4NCw2ICszOTcsOCBA
QCBjbGFzcyBVbmxpbmtlZENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgIH0KIAogcHJp
dmF0ZToKKyAgICBmcmllbmQgY2xhc3MgQnl0ZWNvZGVNb2RpZmljYXRpb25TZXQ7CisgICAgdm9p
ZCBhcHBseU1vZGlmaWNhdGlvbihCeXRlY29kZU1vZGlmaWNhdGlvblNldCYpOwogCiAgICAgdm9p
ZCBjcmVhdGVSYXJlRGF0YUlmTmVjZXNzYXJ5KCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmlydHVhbFJlZ2lzdGVyLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvVmlydHVhbFJlZ2lzdGVyLmgKaW5kZXggZDNkZjQwOTU3YjUxNzU2
OGUzYWVmYmUzYTFhNjA5ZmQ4NzhiYWFjMy4uZGFmNTA5ZjZjN2QxMTVlNDViY2IxMDdjNjdkM2Qz
OGQ4MDRmMjg5NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Zp
cnR1YWxSZWdpc3Rlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WaXJ0
dWFsUmVnaXN0ZXIuaApAQCAtMjYsOCArMjYsOCBAQAogI2lmbmRlZiBWaXJ0dWFsUmVnaXN0ZXJf
aAogI2RlZmluZSBWaXJ0dWFsUmVnaXN0ZXJfaAogCisjaW5jbHVkZSAiQnl0ZWNvZGVDb252ZW50
aW9ucy5oIgogI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgotCiAjaW5jbHVkZSA8d3RmL1ByaW50U3Ry
ZWFtLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtMTAzLDcgKzEwMyw3IEBAIGNsYXNzIFZpcnR1
YWxSZWdpc3RlciB7CiAKIHByaXZhdGU6CiAgICAgc3RhdGljIGNvbnN0IGludCBzX2ludmFsaWRW
aXJ0dWFsUmVnaXN0ZXIgPSAweDNmZmZmZmZmOwotICAgIHN0YXRpYyBjb25zdCBpbnQgc19maXJz
dENvbnN0YW50UmVnaXN0ZXJJbmRleCA9IDB4NDAwMDAwMDA7CisgICAgc3RhdGljIGNvbnN0IGlu
dCBzX2ZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4ID0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5k
ZXg7CiAKICAgICBzdGF0aWMgaW50IGxvY2FsVG9PcGVyYW5kKGludCBsb2NhbCkgeyByZXR1cm4g
LTEgLSBsb2NhbDsgfQogICAgIHN0YXRpYyBpbnQgb3BlcmFuZFRvTG9jYWwoaW50IG9wZXJhbmQp
IHsgcmV0dXJuIC0xIC0gb3BlcmFuZDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCA2NTI0YmU2ZjU2
YWQxZjhhYjRhM2M5ZjhkYmQxNWRlNTJiYTY4Y2U0Li43NTJjYzhjOGVjODdiMWI5OWNjMjc3ZDNh
NzY5ZTM1N2MxMTU1MTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAtMzMsNiArMzMsNyBAQAogCiAj
aW5jbHVkZSAiQXJpdGhQcm9maWxlLmgiCiAjaW5jbHVkZSAiQnVpbHRpbkV4ZWN1dGFibGVzLmgi
CisjaW5jbHVkZSAiQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uaCIKICNpbmNsdWRlICJCeXRl
Y29kZUxpdmVuZXNzQW5hbHlzaXMuaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1
ZGUgIkpTRnVuY3Rpb24uaCIKQEAgLTE1NSw2ICsxNTYsMTAgQEAgUGFyc2VyRXJyb3IgQnl0ZWNv
ZGVHZW5lcmF0b3I6OmdlbmVyYXRlKCkKICAgICAgICAgbV9jb2RlQmxvY2stPmFkZEV4Y2VwdGlv
bkhhbmRsZXIoaW5mbyk7CiAgICAgfQogICAgIAorCisgICAgaWYgKG1fY29kZUJsb2NrLT5wYXJz
ZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckJvZHlNb2RlKQorICAgICAgICBw
ZXJmb3JtR2VuZXJhdG9yaWZpY2F0aW9uKG1fY29kZUJsb2NrLmdldCgpLCBtX2luc3RydWN0aW9u
cywgbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlLmdldCgpLCBtX2dlbmVyYXRvckZyYW1lU3lt
Ym9sVGFibGVJbmRleCk7CisKICAgICBtX2NvZGVCbG9jay0+c2V0SW5zdHJ1Y3Rpb25zKHN0ZDo6
bWFrZV91bmlxdWU8VW5saW5rZWRJbnN0cnVjdGlvblN0cmVhbT4obV9pbnN0cnVjdGlvbnMpKTsK
IAogICAgIG1fY29kZUJsb2NrLT5zaHJpbmtUb0ZpdCgpOwpAQCAtMjYyLDEwICsyNjcsMTQgQEAg
Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25Ob2Rl
KiBmdW5jdGlvbk5vZGUsIFVubGlua2UKICAgICBib29sIHNob3VsZENhcHR1cmVBbGxPZlRoZVRo
aW5ncyA9IG1fc2hvdWxkRW1pdERlYnVnSG9va3MgfHwgY29kZUJsb2NrLT51c2VzRXZhbCgpOwog
ICAgIGJvb2wgbmVlZHNBcmd1bWVudHMgPSAoZnVuY3Rpb25Ob2RlLT51c2VzQXJndW1lbnRzKCkg
fHwgY29kZUJsb2NrLT51c2VzRXZhbCgpIHx8IChmdW5jdGlvbk5vZGUtPnVzZXNBcnJvd0Z1bmN0
aW9uKCkgJiYgIWNvZGVCbG9jay0+aXNBcnJvd0Z1bmN0aW9uKCkgJiYgaXNBcmd1bWVudHNVc2Vk
SW5Jbm5lckFycm93RnVuY3Rpb24oKSkpOwogCi0gICAgLy8gR2VuZXJhdG9yIG5ldmVyIHByb3Zp
ZGVzICJhcmd1bWVudHMiLiAiYXJndW1lbnRzIiByZWZlcmVuY2Ugd2lsbCBiZSByZXNvbHZlZCBp
biBhbiB1cHBlciBnZW5lcmF0b3IgZnVuY3Rpb24gc2NvcGUuCi0gICAgaWYgKHBhcnNlTW9kZSA9
PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckJvZHlNb2RlKQorICAgIGlmIChwYXJzZU1vZGUg
PT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JCb2R5TW9kZSkgeworICAgICAgICAvLyBHZW5l
cmF0b3IgbmV2ZXIgcHJvdmlkZXMgImFyZ3VtZW50cyIuICJhcmd1bWVudHMiIHJlZmVyZW5jZSB3
aWxsIGJlIHJlc29sdmVkIGluIGFuIHVwcGVyIGdlbmVyYXRvciBmdW5jdGlvbiBzY29wZS4KICAg
ICAgICAgbmVlZHNBcmd1bWVudHMgPSBmYWxzZTsKIAorICAgICAgICAvLyBHZW5lcmF0b3IgdXNl
cyB0aGUgdmFyIHNjb3BlIHRvIHNhdmUgYW5kIHJlc3VtZSBpdHMgdmFyaWFibGVzLiBTbyB0aGUg
bGV4aWNhbCBzY29wZSBpcyBhbHdheXMgaW5zdGFudGlhdGVkLgorICAgICAgICBzaG91bGRDYXB0
dXJlU29tZU9mVGhlVGhpbmdzID0gdHJ1ZTsKKyAgICB9CisKICAgICBpZiAocGFyc2VNb2RlID09
IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yV3JhcHBlckZ1bmN0aW9uTW9kZSAmJiBuZWVkc0Fy
Z3VtZW50cykgewogICAgICAgICAvLyBHZW5lcmF0b3IgZG9lcyBub3QgcHJvdmlkZSAiYXJndW1l
bnRzIi4gSW5zdGVhZCwgd3JhcHBpbmcgR2VuZXJhdG9yRnVuY3Rpb24gcHJvdmlkZXMgImFyZ3Vt
ZW50cyIuCiAgICAgICAgIC8vIFRoaXMgaXMgYmVjYXVzZSBhcmd1bWVudHMgb2YgYSBnZW5lcmF0
b3Igc2hvdWxkIGJlIGV2YWx1YXRlZCBiZWZvcmUgc3RhcnRpbmcgaXQuCkBAIC0yNzQsNyArMjgz
LDcgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rp
b25Ob2RlKiBmdW5jdGlvbk5vZGUsIFVubGlua2UKICAgICAgICAgLy8gICAgZnVuY3Rpb24gKmdl
bihhLCBiID0gaGVsbG8oKSkKICAgICAgICAgLy8gICAgewogICAgICAgICAvLyAgICAgICAgcmV0
dXJuIHsKLSAgICAgICAgLy8gICAgICAgICAgICBAZ2VuZXJhdG9yTmV4dDogZnVuY3Rpb24gKEBn
ZW5lcmF0b3IsIEBnZW5lcmF0b3JTdGF0ZSwgQGdlbmVyYXRvclZhbHVlLCBAZ2VuZXJhdG9yUmVz
dW1lTW9kZSkKKyAgICAgICAgLy8gICAgICAgICAgICBAZ2VuZXJhdG9yTmV4dDogZnVuY3Rpb24g
KEBnZW5lcmF0b3IsIEBnZW5lcmF0b3JTdGF0ZSwgQGdlbmVyYXRvclZhbHVlLCBAZ2VuZXJhdG9y
UmVzdW1lTW9kZSwgQGdlbmVyYXRvckZyYW1lKQogICAgICAgICAvLyAgICAgICAgICAgIHsKICAg
ICAgICAgLy8gICAgICAgICAgICAgICAgYXJndW1lbnRzOyAgLy8gVGhpcyBgYXJndW1lbnRzYCBz
aG91bGQgcmVmZXJlbmNlIHRvIHRoZSBnZW4ncyBhcmd1bWVudHMuCiAgICAgICAgIC8vICAgICAg
ICAgICAgICAgIC4uLgpAQCAtMzAzLDE2ICszMTIsMTQgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5
dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25Ob2RlKiBmdW5jdGlvbk5vZGUsIFVubGlu
a2UKICAgICAgICAgcmV0dXJuIGNhcHR1cmVzKHVpZCkgPyBWYXJLaW5kOjpTY29wZSA6IFZhcktp
bmQ6OlN0YWNrOwogICAgIH07CiAKLSAgICBlbWl0RW50ZXIoKTsKLQotICAgIGFsbG9jYXRlQW5k
RW1pdFNjb3BlKCk7Ci0KICAgICBtX2NhbGxlZVJlZ2lzdGVyLnNldEluZGV4KENhbGxGcmFtZVNs
b3Q6OmNhbGxlZSk7CiAKICAgICBpbml0aWFsaXplUGFyYW1ldGVycyhwYXJhbWV0ZXJzKTsKICAg
ICBBU1NFUlQoIShpc1NpbXBsZVBhcmFtZXRlckxpc3QgJiYgbV9yZXN0UGFyYW1ldGVyKSk7CiAK
LSAgICAvLyBCZWZvcmUgZW1pdHRpbmcgYSBzY29wZSBjcmVhdGlvbiwgZW1pdCBhIGdlbmVyYXRv
ciBwcm9sb2d1ZSB0aGF0IGNvbnRhaW5zIGp1bXAgYmFzZWQgb24gYSBnZW5lcmF0b3IncyBzdGF0
ZS4KKyAgICBlbWl0RW50ZXIoKTsKKworICAgIC8vIEJlZm9yZSBlbWl0dGluZyBhbnkgb2YgdGhl
IGFjdHVhbCBjb2RlIGV4Y2VwdCBmb3Igb3BfZW50ZXIsIGVtaXQgYSBnZW5lcmF0b3IgcHJvbG9n
dWUgdGhhdCBjb250YWlucyBqdW1wIGJhc2VkIG9uIGEgZ2VuZXJhdG9yJ3Mgc3RhdGUuCiAgICAg
aWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckJvZHlNb2RlKSB7CiAg
ICAgICAgIG1fZ2VuZXJhdG9yUmVnaXN0ZXIgPSAmbV9wYXJhbWV0ZXJzWzFdOwogCkBAIC0zMjYs
NiArMzMzLDggQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwg
RnVuY3Rpb25Ob2RlKiBmdW5jdGlvbk5vZGUsIFVubGlua2UKICAgICAgICAgZW1pdEdlbmVyYXRv
clN0YXRlTGFiZWwoKTsKICAgICB9CiAKKyAgICBhbGxvY2F0ZUFuZEVtaXRTY29wZSgpOworCiAg
ICAgaWYgKGZ1bmN0aW9uTmFtZUlzSW5TY29wZShmdW5jdGlvbk5vZGUtPmlkZW50KCksIGZ1bmN0
aW9uTm9kZS0+ZnVuY3Rpb25Nb2RlKCkpKSB7CiAgICAgICAgIEFTU0VSVChwYXJzZU1vZGUgIT0g
U291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JCb2R5TW9kZSk7CiAgICAgICAgIGJvb2wgaXNEeW5h
bWljU2NvcGUgPSBmdW5jdGlvbk5hbWVTY29wZUlzRHluYW1pYyhjb2RlQmxvY2stPnVzZXNFdmFs
KCksIGNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpOwpAQCAtNjQxLDYgKzY1MCwxNiBAQCBCeXRl
Y29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1
bmN0aW9uTm9kZSwgVW5saW5rZQogICAgICAgICAgICAgZW1pdExvYWROZXdUYXJnZXRGcm9tQXJy
b3dGdW5jdGlvbkxleGljYWxFbnZpcm9ubWVudCgpOwogICAgIH0KICAgICAKKyAgICAvLyBTZXQg
dXAgdGhlIGxleGljYWwgZW52aXJvbm1lbnQgc2NvcGUgYXMgdGhlIGdlbmVyYXRvciBmcmFtZS4g
V2Ugc3RvcmUgdGhlIHNhdmVkIGFuZCByZXN1bWVkIGdlbmVyYXRvciByZWdpc3RlcnMgaW50byB0
aGlzIHNjb3BlIHdpdGggdGhlIHN5bWJvbCBrZXlzLgorICAgIC8vIFNpbmNlIHRoZXkgYXJlIHN5
bWJvbCBrZXllZCwgdGhlc2UgdmFyaWFibGVzIGNhbm5vdCBiZSByZWFjaGVkIGZyb20gdGhlIHVz
dWFsIGNvZGUuCisgICAgaWYgKFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yQm9keU1vZGUgPT0g
cGFyc2VNb2RlKSB7CisgICAgICAgIEFTU0VSVChtX2xleGljYWxFbnZpcm9ubWVudFJlZ2lzdGVy
KTsKKyAgICAgICAgbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlLnNldCgqbV92bSwgZnVuY3Rp
b25TeW1ib2xUYWJsZSk7CisgICAgICAgIG1fZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZUluZGV4
ID0gc3ltYm9sVGFibGVDb25zdGFudEluZGV4OworICAgICAgICBlbWl0TW92ZShnZW5lcmF0b3JG
cmFtZVJlZ2lzdGVyKCksIG1fbGV4aWNhbEVudmlyb25tZW50UmVnaXN0ZXIpOworICAgICAgICBl
bWl0UHV0QnlJZChnZW5lcmF0b3JSZWdpc3RlcigpLCBwcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5h
bWVzKCkuZ2VuZXJhdG9yRnJhbWVQcml2YXRlTmFtZSgpLCBnZW5lcmF0b3JGcmFtZVJlZ2lzdGVy
KCkpOworICAgIH0KKwogICAgIGJvb2wgc2hvdWxkSW5pdGlhbGl6ZUJsb2NrU2NvcGVkRnVuY3Rp
b25zID0gZmFsc2U7IC8vIFdlIGdlbmVyYXRlIHRvcC1sZXZlbCBmdW5jdGlvbiBkZWNsYXJhdGlv
bnMgaW4gOjpnZW5lcmF0ZSgpLgogICAgIHB1c2hMZXhpY2FsU2NvcGUobV9zY29wZU5vZGUsIFRE
WkNoZWNrT3B0aW1pemF0aW9uOjpPcHRpbWl6ZSwgTmVzdGVkU2NvcGVUeXBlOjpJc05vdE5lc3Rl
ZCwgbnVsbHB0ciwgc2hvdWxkSW5pdGlhbGl6ZUJsb2NrU2NvcGVkRnVuY3Rpb25zKTsKIH0KQEAg
LTM2NzIsOCArMzY5MSw3IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDb21wbGV4UG9w
U2NvcGVzKFJlZ2lzdGVySUQqIHNjb3BlLCBDb250cm9sRmxvd0NvbnRlCiAgICAgICAgICAgICBp
ZiAoZmxpcFRyaWVzKSB7CiAgICAgICAgICAgICAgICAgd2hpbGUgKG1fdHJ5Q29udGV4dFN0YWNr
LnNpemUoKSAhPSBmaW5hbGx5Q29udGV4dC50cnlDb250ZXh0U3RhY2tTaXplKSB7CiAgICAgICAg
ICAgICAgICAgICAgIEFTU0VSVChtX3RyeUNvbnRleHRTdGFjay5zaXplKCkgPiBmaW5hbGx5Q29u
dGV4dC50cnlDb250ZXh0U3RhY2tTaXplKTsKLSAgICAgICAgICAgICAgICAgICAgVHJ5Q29udGV4
dCBjb250ZXh0ID0gbV90cnlDb250ZXh0U3RhY2subGFzdCgpOwotICAgICAgICAgICAgICAgICAg
ICBtX3RyeUNvbnRleHRTdGFjay5yZW1vdmVMYXN0KCk7CisgICAgICAgICAgICAgICAgICAgIFRy
eUNvbnRleHQgY29udGV4dCA9IG1fdHJ5Q29udGV4dFN0YWNrLnRha2VMYXN0KCk7CiAgICAgICAg
ICAgICAgICAgICAgIFRyeVJhbmdlIHJhbmdlOwogICAgICAgICAgICAgICAgICAgICByYW5nZS5z
dGFydCA9IGNvbnRleHQuc3RhcnQ7CiAgICAgICAgICAgICAgICAgICAgIHJhbmdlLmVuZCA9IGJl
Zm9yZUZpbmFsbHk7CkBAIC0zOTU3LDcgKzM5NzUsNyBAQCBzdGF0aWMgdm9pZCBwcmVwYXJlSnVt
cFRhYmxlRm9yU3RyaW5nU3dpdGNoKFVubGlua2VkU3RyaW5nSnVtcFRhYmxlJiBqdW1wVGFibGUs
CiAgICAgICAgIAogICAgICAgICBBU1NFUlQobm9kZXNbaV0tPmlzU3RyaW5nKCkpOwogICAgICAg
ICBTdHJpbmdJbXBsKiBjbGF1c2UgPSBzdGF0aWNfY2FzdDxTdHJpbmdOb2RlKj4obm9kZXNbaV0p
LT52YWx1ZSgpLmltcGwoKTsKLSAgICAgICAganVtcFRhYmxlLm9mZnNldFRhYmxlLmFkZChjbGF1
c2UsIGxhYmVsc1tpXS0+YmluZChzd2l0Y2hBZGRyZXNzLCBzd2l0Y2hBZGRyZXNzICsgMykpOwor
ICAgICAgICBqdW1wVGFibGUub2Zmc2V0VGFibGUuYWRkKGNsYXVzZSwgVW5saW5rZWRTdHJpbmdK
dW1wVGFibGU6Ok9mZnNldExvY2F0aW9uIHsgbGFiZWxzW2ldLT5iaW5kKHN3aXRjaEFkZHJlc3Ms
IHN3aXRjaEFkZHJlc3MgKyAzKSB9KTsKICAgICB9CiB9CiAKQEAgLTQ0NjUsMTYgKzQ0ODMsMzYg
QEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFlpZWxkUG9pbnQoUmVnaXN0ZXJJRCogYXJn
dW1lbnQpCiAgICAgZW1pdEdlbmVyYXRvclN0YXRlQ2hhbmdlKHlpZWxkUG9pbnRJbmRleCk7CiAg
ICAgLy8gRmlyc3QgeWllbGQgcG9pbnQgaXMgdXNlZCBmb3IgaW5pdGlhbCBzZXF1ZW5jZS4KICAg
ICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSB5aWVsZFBvaW50SW5kZXggLSAxOwor
CisgICAgLy8gU3BsaXQgdGhlIHRyeSByYW5nZSBoZXJlLgorICAgIFJlZlB0cjxMYWJlbD4gc2F2
ZVBvaW50ID0gZW1pdExhYmVsKG5ld0xhYmVsKCkuZ2V0KCkpOworICAgIGZvciAodW5zaWduZWQg
aSA9IG1fdHJ5Q29udGV4dFN0YWNrLnNpemUoKTsgaS0tOykgeworICAgICAgICBUcnlDb250ZXh0
JiBjb250ZXh0ID0gbV90cnlDb250ZXh0U3RhY2tbaV07CisgICAgICAgIFRyeVJhbmdlIHJhbmdl
OworICAgICAgICByYW5nZS5zdGFydCA9IGNvbnRleHQuc3RhcnQ7CisgICAgICAgIHJhbmdlLmVu
ZCA9IHNhdmVQb2ludDsKKyAgICAgICAgcmFuZ2UudHJ5RGF0YSA9IGNvbnRleHQudHJ5RGF0YTsK
KyAgICAgICAgbV90cnlSYW5nZXMuYXBwZW5kKHJhbmdlKTsKKworICAgICAgICAvLyBUcnkgcmFu
Z2Ugd2lsbCBiZSByZXN0YXJlZCBhdCB0aGUgbWVyZ2UgcG9pbnQuCisgICAgICAgIGNvbnRleHQu
c3RhcnQgPSBtZXJnZVBvaW50OworICAgIH0KKyAgICBWZWN0b3I8VHJ5Q29udGV4dD4gc2F2ZWRU
cnlDb250ZXh0U3RhY2s7CisgICAgbV90cnlDb250ZXh0U3RhY2suc3dhcChzYXZlZFRyeUNvbnRl
eHRTdGFjayk7CisKICAgICBlbWl0U2F2ZShtZXJnZVBvaW50LmdldCgpLCBsaXZlQ2FsbGVlTG9j
YWxzSW5kZXgpOwogICAgIGVtaXRSZXR1cm4oYXJndW1lbnQpOwogICAgIGVtaXRSZXN1bWUobWVy
Z2VQb2ludC5nZXQoKSwgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4KTsKKworICAgIC8vIFJlc3RvcmUg
dGhlIHRyeSBjb250ZXh0cywgd2hpY2ggc3RhcnQgb2Zmc2V0IGlzIHVwZGF0ZWQgdG8gdGhlIG1l
cmdlIHBvaW50LgorICAgIG1fdHJ5Q29udGV4dFN0YWNrLnN3YXAoc2F2ZWRUcnlDb250ZXh0U3Rh
Y2spOwogfQogCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0U2F2ZShMYWJlbCogbWVyZ2VQ
b2ludCwgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4KQogewogICAgIHNpemVfdCBiZWdp
biA9IGluc3RydWN0aW9ucygpLnNpemUoKTsKICAgICBlbWl0T3Bjb2RlKG9wX3NhdmUpOwotICAg
IGluc3RydWN0aW9ucygpLmFwcGVuZChtX2dlbmVyYXRvclJlZ2lzdGVyLT5pbmRleCgpKTsKKyAg
ICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZ2VuZXJhdG9yRnJhbWVSZWdpc3RlcigpLT5pbmRleCgp
KTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobGl2ZUNhbGxlZUxvY2Fsc0luZGV4KTsKICAg
ICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobWVyZ2VQb2ludC0+YmluZChiZWdpbiwgaW5zdHJ1Y3Rp
b25zKCkuc2l6ZSgpKSk7CiB9CkBAIC00NDgzLDcgKzQ1MjEsNyBAQCB2b2lkIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0UmVzdW1lKExhYmVsKiBtZXJnZVBvaW50LCB1bnNpZ25lZCBsaXZlQ2FsbGVl
TG9jYWxzSQogewogICAgIGVtaXRHZW5lcmF0b3JTdGF0ZUxhYmVsKCk7CiAgICAgZW1pdE9wY29k
ZShvcF9yZXN1bWUpOwotICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChtX2dlbmVyYXRvclJlZ2lz
dGVyLT5pbmRleCgpKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZ2VuZXJhdG9yRnJhbWVS
ZWdpc3RlcigpLT5pbmRleCgpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobGl2ZUNhbGxl
ZUxvY2Fsc0luZGV4KTsKICAgICBlbWl0TGFiZWwobWVyZ2VQb2ludCk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgK
aW5kZXggYmE5YTk0ZDBlMGYwNjUwOTY5YjBiZDJkODg0NDE3ZGUxZjcxMmI2Mi4uMGU4YmYzMDE5
OTVhZTNlZTIwODVkZDJiN2JjOTEyNzE2NDBmMmU4ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAtMzcsNiAr
MzcsNyBAQAogI2luY2x1ZGUgIkxhYmVsLmgiCiAjaW5jbHVkZSAiTGFiZWxTY29wZS5oIgogI2lu
Y2x1ZGUgIkludGVycHJldGVyLmgiCisjaW5jbHVkZSAiSlNHZW5lcmF0b3JGdW5jdGlvbi5oIgog
I2luY2x1ZGUgIlBhcnNlckVycm9yLmgiCiAjaW5jbHVkZSAiUmVnaXN0ZXJJRC5oIgogI2luY2x1
ZGUgIlNldEZvclNjb3BlLmgiCkBAIC03MDIsOSArNzAzLDEwIEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICBSZWdpc3RlcklEKiBlbWl0RGVsZWdhdGVZaWVsZChSZWdpc3RlcklEKiBhcmd1bWVu
dCwgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqKTsKICAgICAgICAgdm9pZCBiZWdpbkdlbmVyYXRv
cihSZWdpc3RlcklEKik7CiAgICAgICAgIHZvaWQgZW5kR2VuZXJhdG9yKExhYmVsKiBkZWZhdWx0
TGFiZWwpOwotICAgICAgICBSZWdpc3RlcklEKiBnZW5lcmF0b3JTdGF0ZVJlZ2lzdGVyKCkgeyBy
ZXR1cm4gJm1fcGFyYW1ldGVyc1syXTsgfQotICAgICAgICBSZWdpc3RlcklEKiBnZW5lcmF0b3JW
YWx1ZVJlZ2lzdGVyKCkgeyByZXR1cm4gJm1fcGFyYW1ldGVyc1szXTsgfQotICAgICAgICBSZWdp
c3RlcklEKiBnZW5lcmF0b3JSZXN1bWVNb2RlUmVnaXN0ZXIoKSB7IHJldHVybiAmbV9wYXJhbWV0
ZXJzWzRdOyB9CisgICAgICAgIFJlZ2lzdGVySUQqIGdlbmVyYXRvclN0YXRlUmVnaXN0ZXIoKSB7
IHJldHVybiAmbV9wYXJhbWV0ZXJzW3N0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yRnVu
Y3Rpb246OkdlbmVyYXRvckFyZ3VtZW50OjpTdGF0ZSldOyB9CisgICAgICAgIFJlZ2lzdGVySUQq
IGdlbmVyYXRvclZhbHVlUmVnaXN0ZXIoKSB7IHJldHVybiAmbV9wYXJhbWV0ZXJzW3N0YXRpY19j
YXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yRnVuY3Rpb246OkdlbmVyYXRvckFyZ3VtZW50OjpWYWx1
ZSldOyB9CisgICAgICAgIFJlZ2lzdGVySUQqIGdlbmVyYXRvclJlc3VtZU1vZGVSZWdpc3Rlcigp
IHsgcmV0dXJuICZtX3BhcmFtZXRlcnNbc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3JG
dW5jdGlvbjo6R2VuZXJhdG9yQXJndW1lbnQ6OlJlc3VtZU1vZGUpXTsgfQorICAgICAgICBSZWdp
c3RlcklEKiBnZW5lcmF0b3JGcmFtZVJlZ2lzdGVyKCkgeyByZXR1cm4gJm1fcGFyYW1ldGVyc1tz
dGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JBcmd1bWVu
dDo6RnJhbWUpXTsgfQogCiAgICAgICAgIENvZGVUeXBlIGNvZGVUeXBlKCkgY29uc3QgeyByZXR1
cm4gbV9jb2RlVHlwZTsgfQogCkBAIC05MzMsNiArOTM1LDEwIEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICBWZWN0b3I8UmVmUHRyPEZvckluQ29udGV4dD4+IG1fZm9ySW5Db250ZXh0U3RhY2s7
CiAgICAgICAgIFZlY3RvcjxUcnlDb250ZXh0PiBtX3RyeUNvbnRleHRTdGFjazsKICAgICAgICAg
VmVjdG9yPFJlZlB0cjxMYWJlbD4+IG1fZ2VuZXJhdG9yUmVzdW1lTGFiZWxzOworCisgICAgICAg
IFN0cm9uZzxTeW1ib2xUYWJsZT4gbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlOworICAgICAg
ICBpbnQgbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlSW5kZXggeyAwIH07CisKICAgICAgICAg
ZW51bSBGdW5jdGlvblZhcmlhYmxlVHlwZSA6IHVpbnQ4X3QgeyBOb3JtYWxGdW5jdGlvblZhcmlh
YmxlLCBHbG9iYWxGdW5jdGlvblZhcmlhYmxlIH07CiAgICAgICAgIFZlY3RvcjxzdGQ6OnBhaXI8
RnVuY3Rpb25NZXRhZGF0YU5vZGUqLCBGdW5jdGlvblZhcmlhYmxlVHlwZT4+IG1fZnVuY3Rpb25z
VG9Jbml0aWFsaXplOwogICAgICAgICBib29sIG1fbmVlZFRvSW5pdGlhbGl6ZUFyZ3VtZW50cyB7
IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJh
dGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcApp
bmRleCBlZDZkYjE2NGMwNGRmODk4YTBjODA2YjIwNjg1OTk3ZDY3NjU3ZTVjLi5mOGU2OTlmZWE5
YjE4NmQ1ZWZiODJmZjdmYzNjYmQwNWExYmJiOTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKQEAgLTQyLDggKzQyLDggQEAKICNpbmNsdWRlICJEaXJl
Y3RBcmd1bWVudHMuaCIKICNpbmNsdWRlICJGVExGb3JPU1JFbnRyeUpJVENvZGUuaCIKICNpbmNs
dWRlICJGVExPU1JFbnRyeS5oIgotI2luY2x1ZGUgIkhvc3RDYWxsUmV0dXJuVmFsdWUuaCIKICNp
bmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKKyNpbmNsdWRlICJIb3N0Q2FsbFJldHVyblZhbHVlLmgi
CiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKSVQuaCIKICNpbmNsdWRlICJK
SVRFeGNlcHRpb25zLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJh
dGUtYnl0ZWNvZGUtZmlsZXMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdGUtYnl0ZWNv
ZGUtZmlsZXMKaW5kZXggNTY2NmEzZjkyNGMxMTliMjE2ZDNmZjBmZmU5YzY3MmI3YzcxYmI3OS4u
OGY3OTBlZDlmYTgzMTZkMzlkYTE1ZDNiNzU4OTQ2YmY0OWYzYmQzZSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRlLWJ5dGVjb2RlLWZpbGVzCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9nZW5lcmF0ZS1ieXRlY29kZS1maWxlcwpAQCAtOTQsMTMgKzk0LDE0IEBA
IGRlZiBvcGVuT3JFeGl0KHBhdGgsIG1vZGUpOgogICAgICAgICBwcmludCAiSS9PIGVycm9yIG9w
ZW5pbmcgezB9LCAoezF9KTogezJ9Ii5mb3JtYXQocGF0aCwgZS5lcnJubywgZS5zdHJlcnJvcikK
ICAgICAgICAgZXhpdCgxKQogCi1kZWYgaGFzaEZpbGUoZmlsZSk6CitkZWYgaGFzaEZpbGUoZmls
ZXMpOgogICAgIHNoYTEgPSBoYXNobGliLnNoYTEoKQotICAgIGZpbGUuc2VlaygwKQotICAgIGZv
ciBsaW5lIGluIGZpbGU6Ci0gICAgICAgIHNoYTEudXBkYXRlKGxpbmUpCisgICAgZm9yIGZpbGUg
aW4gZmlsZXM6CisgICAgICAgIGZpbGUuc2VlaygwKQorICAgICAgICBmb3IgbGluZSBpbiBmaWxl
OgorICAgICAgICAgICAgc2hhMS51cGRhdGUobGluZSkKIAotICAgIGZpbGUuc2VlaygwKQorICAg
ICAgICBmaWxlLnNlZWsoMCkKIAogICAgIHJldHVybiBzaGExLmhleGRpZ2VzdCgpCiAKQEAgLTEx
NSw3ICsxMTYsOCBAQCBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogCiAgICAgYnl0ZWNvZGVK
U09ORmlsZSA9IGFyZ3NbMF0KICAgICBieXRlY29kZUZpbGUgPSBvcGVuT3JFeGl0KGJ5dGVjb2Rl
SlNPTkZpbGUsICJyYiIpCi0gICAgc2hhMUhhc2ggPSBoYXNoRmlsZShieXRlY29kZUZpbGUpCisg
ICAgZ2VuZXJhdG9yRmlsZSA9IG9wZW5PckV4aXQoX19maWxlX18sICJyYiIpCisgICAgc2hhMUhh
c2ggPSBoYXNoRmlsZShbYnl0ZWNvZGVGaWxlLCBnZW5lcmF0b3JGaWxlXSkKIAogICAgIGhGaWxl
SGFzaFN0cmluZyA9ICIvLyBTSEExSGFzaDogezB9XG4iLmZvcm1hdChzaGExSGFzaCkKICAgICBh
c21GaWxlSGFzaFN0cmluZyA9ICIjIFNIQTFIYXNoOiB7MH1cbiIuZm9ybWF0KHNoYTFIYXNoKQpA
QCAtMTg3LDYgKzE4OSw3IEBAIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgICAgICAg
ICAgICAgZGVmYXVsdExlbmd0aCA9IHNlY3Rpb25bImRlZmF1bHRMZW5ndGgiXQogCiAgICAgICAg
ICAgICBieXRlY29kZU51bSA9IDAKKyAgICAgICAgICAgIG1heExlbmd0aCA9IDAKICAgICAgICAg
ICAgIGZvciBieXRlY29kZSBpbiBzZWN0aW9uWyJieXRlY29kZXMiXToKICAgICAgICAgICAgICAg
ICBpZiBub3QgZmlyc3RNYWNybzoKICAgICAgICAgICAgICAgICAgICAgYnl0ZWNvZGVIRmlsZS53
cml0ZSgiIFxcXG4iKQpAQCAtMTk0LDYgKzE5Nyw3IEBAIGlmIF9fbmFtZV9fID09ICJfX21haW5f
XyI6CiAgICAgICAgICAgICAgICAgbGVuZ3RoID0gZGVmYXVsdExlbmd0aAogICAgICAgICAgICAg
ICAgIGlmICJsZW5ndGgiIGluIGJ5dGVjb2RlOgogICAgICAgICAgICAgICAgICAgICBsZW5ndGgg
PSBieXRlY29kZVsibGVuZ3RoIl0KKyAgICAgICAgICAgICAgICAgICAgbWF4TGVuZ3RoID0gbWF4
KFtsZW5ndGgsIG1heExlbmd0aF0pCiAKICAgICAgICAgICAgICAgICBieXRlY29kZUhGaWxlLndy
aXRlKCIgICAgbWFjcm8oezB9LCB7MX0pIi5mb3JtYXQoYnl0ZWNvZGVbIm5hbWUiXSwgbGVuZ3Ro
KSkKICAgICAgICAgICAgICAgICBmaXJzdE1hY3JvID0gRmFsc2UKQEAgLTIwMSw2ICsyMDUsNyBA
QCBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogCiAgICAgICAgICAgICBieXRlY29kZUhGaWxl
LndyaXRlKCJcblxuIikKICAgICAgICAgICAgIGJ5dGVjb2RlSEZpbGUud3JpdGUoIiNkZWZpbmUg
TlVNQkVSX09GX3swfV9JRFMgezF9XG5cbiIuZm9ybWF0KHNlY3Rpb25bIm1hY3JvTmFtZUNvbXBv
bmVudCJdLCBieXRlY29kZU51bSkpCisgICAgICAgICAgICBieXRlY29kZUhGaWxlLndyaXRlKCIj
ZGVmaW5lIE1BWF9PUENPREVfTEVOR1RIX09GX3swfSB7MX1cblxuIi5mb3JtYXQoc2VjdGlvblsi
bWFjcm9OYW1lQ29tcG9uZW50Il0sIG1heExlbmd0aCkpCiAKICAgICAgICAgaWYgaW5pdEFTTUZp
bGVOYW1lIGFuZCBzZWN0aW9uWydlbWl0SW5BU01GaWxlJ106CiAgICAgICAgICAgICBwcmVmaXgg
PSAiIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVy
cHJldGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRl
ci5jcHAKaW5kZXggMjUwZjg3NDE5NTAyYzg0Mzg0NzBhZDg1YTEyZmU5NDQ0OGQ4M2JmMy4uYTU2
ZDI3MjJhNzJhZjAwYmM4MDA1ZDc3NWRhMmYyYzYwM2QwNzdiZCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCkBAIC02MTAsNyArNjEw
LDcgQEAgSlNTdHJpbmcqIEludGVycHJldGVyOjpzdGFja1RyYWNlQXNTdHJpbmcoVk0mIHZtLCBj
b25zdCBWZWN0b3I8U3RhY2tGcmFtZT4mIHN0YWMKICAgICByZXR1cm4ganNTdHJpbmcoJnZtLCBi
dWlsZGVyLnRvU3RyaW5nKCkpOwogfQogCi1BTFdBWVNfSU5MSU5FIHN0YXRpYyBIYW5kbGVySW5m
byogZmluZEV4Y2VwdGlvbkhhbmRsZXIoU3RhY2tWaXNpdG9yJiB2aXNpdG9yLCBDb2RlQmxvY2sq
IGNvZGVCbG9jaywgQ29kZUJsb2NrOjpSZXF1aXJlZEhhbmRsZXIgcmVxdWlyZWRIYW5kbGVyKQor
QUxXQVlTX0lOTElORSBzdGF0aWMgSGFuZGxlckluZm8qIGZpbmRFeGNlcHRpb25IYW5kbGVyKFN0
YWNrVmlzaXRvciYgdmlzaXRvciwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFJlcXVpcmVkSGFuZGxl
ciByZXF1aXJlZEhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKGNvZGVCbG9jayk7CiAjaWYgRU5BQkxF
KERGR19KSVQpCkBAIC02NDQsNyArNjQ0LDcgQEAgY2xhc3MgR2V0Q2F0Y2hIYW5kbGVyRnVuY3Rv
ciB7CiAgICAgICAgIGlmICghY29kZUJsb2NrKQogICAgICAgICAgICAgcmV0dXJuIFN0YWNrVmlz
aXRvcjo6Q29udGludWU7CiAKLSAgICAgICAgbV9oYW5kbGVyID0gZmluZEV4Y2VwdGlvbkhhbmRs
ZXIodmlzaXRvciwgY29kZUJsb2NrLCBDb2RlQmxvY2s6OlJlcXVpcmVkSGFuZGxlcjo6Q2F0Y2hI
YW5kbGVyKTsKKyAgICAgICAgbV9oYW5kbGVyID0gZmluZEV4Y2VwdGlvbkhhbmRsZXIodmlzaXRv
ciwgY29kZUJsb2NrLCBSZXF1aXJlZEhhbmRsZXI6OkNhdGNoSGFuZGxlcik7CiAgICAgICAgIGlm
IChtX2hhbmRsZXIpCiAgICAgICAgICAgICByZXR1cm4gU3RhY2tWaXNpdG9yOjpEb25lOwogCkBA
IC02ODYsNyArNjg2LDcgQEAgY2xhc3MgVW53aW5kRnVuY3RvciB7CiAgICAgICAgIG1faGFuZGxl
ciA9IG51bGxwdHI7CiAgICAgICAgIGlmICghbV9pc1Rlcm1pbmF0aW9uKSB7CiAgICAgICAgICAg
ICBpZiAobV9jb2RlQmxvY2sgJiYgIWlzV2ViQXNzZW1ibHlFeGVjdXRhYmxlKG1fY29kZUJsb2Nr
LT5vd25lckV4ZWN1dGFibGUoKSkpCi0gICAgICAgICAgICAgICAgbV9oYW5kbGVyID0gZmluZEV4
Y2VwdGlvbkhhbmRsZXIodmlzaXRvciwgbV9jb2RlQmxvY2ssIENvZGVCbG9jazo6UmVxdWlyZWRI
YW5kbGVyOjpBbnlIYW5kbGVyKTsKKyAgICAgICAgICAgICAgICBtX2hhbmRsZXIgPSBmaW5kRXhj
ZXB0aW9uSGFuZGxlcih2aXNpdG9yLCBtX2NvZGVCbG9jaywgUmVxdWlyZWRIYW5kbGVyOjpBbnlI
YW5kbGVyKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChtX2hhbmRsZXIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCmluZGV4IGQyMDk0ZGVl
N2QyODVhYzQ5NWIxNTQxNzJhMjNiOTRmZmU4NTdmMWUuLjA3MzJiM2ViYmQ5YWRmZDIyMzM2MmVj
OWE2YmFhYWZkODYxZjUyNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRl
cnByZXRlci9JbnRlcnByZXRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9JbnRlcnByZXRlci5oCkBAIC02Niw2ICs2Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
IHN0cnVjdCBIYW5kbGVySW5mbzsKICAgICBzdHJ1Y3QgSW5zdHJ1Y3Rpb247CiAgICAgc3RydWN0
IFByb3RvQ2FsbEZyYW1lOworICAgIHN0cnVjdCBVbmxpbmtlZEluc3RydWN0aW9uOwogCiAgICAg
ZW51bSBVbndpbmRTdGFydCB7IFVud2luZEZyb21DdXJyZW50RnJhbWUsIFVud2luZEZyb21DYWxs
ZXJGcmFtZSB9OwogCkBAIC0yMDgsNyArMjA5LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICAgICAgcmV0dXJuIG9wY29kZTsKICNlbmRpZgogICAgICAgICB9Ci0gICAgICAgIAorCisgICAg
ICAgIE9wY29kZUlEIGdldE9wY29kZUlEKGNvbnN0IEluc3RydWN0aW9uJik7CisgICAgICAgIE9w
Y29kZUlEIGdldE9wY29kZUlEKGNvbnN0IFVubGlua2VkSW5zdHJ1Y3Rpb24mKTsKKwogICAgICAg
ICBib29sIGlzT3Bjb2RlKE9wY29kZSk7CiAKICAgICAgICAgSlNWYWx1ZSBleGVjdXRlKFByb2dy
YW1FeGVjdXRhYmxlKiwgQ2FsbEZyYW1lKiwgSlNPYmplY3QqIHRoaXNPYmopOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVySW5saW5lcy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVySW5saW5lcy5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjg2ZDA3MTQ4YTUyZTY1ZTM3NWY5N2U2ZWJiOTFhZGJlMWRkNDU2MGQKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJw
cmV0ZXJJbmxpbmVzLmgKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NiBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSW5z
dHJ1Y3Rpb24uaCIKKyNpbmNsdWRlICJJbnRlcnByZXRlci5oIgorI2luY2x1ZGUgIlVubGlua2Vk
Q29kZUJsb2NrLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitpbmxpbmUgT3Bjb2RlSUQgSW50ZXJw
cmV0ZXI6OmdldE9wY29kZUlEKGNvbnN0IEluc3RydWN0aW9uJiBpbnN0cnVjdGlvbikKK3sKKyAg
ICByZXR1cm4gZ2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb24udS5vcGNvZGUpOworfQorCitpbmxpbmUg
T3Bjb2RlSUQgSW50ZXJwcmV0ZXI6OmdldE9wY29kZUlEKGNvbnN0IFVubGlua2VkSW5zdHJ1Y3Rp
b24mIGluc3RydWN0aW9uKQoreworICAgIHJldHVybiBpbnN0cnVjdGlvbi51Lm9wY29kZTsKK30K
KworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKaW5kZXggOGZk
M2Y1OGVkNDE2YTc3NGJiMjc2NWU0ZDRkNTNkNjhiZTkxODJlNS4uNjMxOGM2MWQzN2E4ZGExMjNl
YzZmMzhhMjhlMTk1NWM4NTgzMTAzMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcApAQCAt
MjM1LDggKzIzNSw2IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAg
ICAgREVGSU5FX09QKG9wX2dldF9yZXN0X2xlbmd0aCkKICAgICAgICAgREVGSU5FX09QKG9wX2No
ZWNrX3RkeikKICAgICAgICAgREVGSU5FX09QKG9wX2Fzc2VydCkKLSAgICAgICAgREVGSU5FX09Q
KG9wX3NhdmUpCi0gICAgICAgIERFRklORV9PUChvcF9yZXN1bWUpCiAgICAgICAgIERFRklORV9P
UChvcF9kZWJ1ZykKICAgICAgICAgREVGSU5FX09QKG9wX2RlbF9ieV9pZCkKICAgICAgICAgREVG
SU5FX09QKG9wX2RlbF9ieV92YWwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAppbmRleCA1YzM2MDY2
ZTI3MmU2ZmY1ZmZmNmRhNTliNzNiYWUyZDFmODRhODFmLi45N2M0NWEwYmYzMjQ4YjRlNzM0YTFl
ZTMzNzE2ODNmNWM3OWFhMjZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKQEAgLTQ5Nyw4ICs0
OTcsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0X29wX2dldF9yZXN0X2xl
bmd0aChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfY2hlY2tfdGR6KEluc3Ry
dWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9hc3NlcnQoSW5zdHJ1Y3Rpb24qKTsKLSAg
ICAgICAgdm9pZCBlbWl0X29wX3NhdmUoSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBlbWl0
X29wX3Jlc3VtZShJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZGVidWcoSW5z
dHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2RlbF9ieV9pZChJbnN0cnVjdGlvbiop
OwogICAgICAgICB2b2lkIGVtaXRfb3BfZGVsX2J5X3ZhbChJbnN0cnVjdGlvbiopOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKaW5kZXggNTBjZTRjOTIwN2M1ZDY1YmRl
ZWY1OTAwYTUyMWQ4OGU4MzhkZDgxNC4uZTczYmM4MmZiZmE2MTljZGZjYTZmZGVmZjMzM2IzZTk3
NmEzMGZhMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVz
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCkBAIC0x
NDkzLDE4ICsxNDkzLDYgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X3Jlc3RfbGVuZ3RoKEluc3Ry
dWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAjZW5kaWYKIH0KIAotdm9pZCBKSVQ6OmVtaXRf
b3Bfc2F2ZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQotewotICAgIEpJVFNsb3dQ
YXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhf
c2F2ZSk7Ci0gICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKLX0KLQotdm9pZCBKSVQ6OmVtaXRfb3Bf
cmVzdW1lKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCi17Ci0gICAgSklUU2xvd1Bh
dGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9y
ZXN1bWUpOwotICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIEpT
QwogCiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQppbmRleCAzMmI1MGMwOTViMGZhYzUwMDI4
ZmM4MDE1ZjQ0NTM5MGVkMTRhN2E2Li5jOTZiZjFjOGVjMWE1ZTU5OGVjMDc2YzczY2UwMzI5ZDM4
OGVkNTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlci5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXIuYXNtCkBAIC0xNjcxLDE1ICsxNjcxLDExIEBAIF9sbGludF9vcF9hc3NlcnQ6
CiAKIAogX2xsaW50X29wX3NhdmU6Ci0gICAgdHJhY2VFeGVjdXRpb24oKQotICAgIGNhbGxPcGNv
ZGVTbG93UGF0aChfc2xvd19wYXRoX3NhdmUpCi0gICAgZGlzcGF0Y2goNCkKKyAgICBub3RTdXBw
b3J0ZWQoKQogCiAKIF9sbGludF9vcF9yZXN1bWU6Ci0gICAgdHJhY2VFeGVjdXRpb24oKQotICAg
IGNhbGxPcGNvZGVTbG93UGF0aChfc2xvd19wYXRoX3Jlc3VtZSkKLSAgICBkaXNwYXRjaCgzKQor
ICAgIG5vdFN1cHBvcnRlZCgpCiAKIAogX2xsaW50X29wX2NyZWF0ZV9sZXhpY2FsX2Vudmlyb25t
ZW50OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCmluZGV4IDUwOTY1M2Ez
NzBlNGY4NGRmMjk4YmIyMzc4MDkwZDc1NmNlNTkwNDkuLmU3NzQ4OWUzMzA1ZTQ2ZWVhNjQ0NWU3
MjNkMDk4MTdiYjU2YjZmYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5j
cHAKQEAgLTI2NSw3ICsyNjUsNyBAQCBTdHJpbmcgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlSW5u
ZXIoY29uc3QgSWRlbnRpZmllciYgY2FsbGVlTmFtZSwgU291cmNlUGFyc2VNbwogICAgIGlmICht
X2xleGVyLT5pc1JlcGFyc2luZ0Z1bmN0aW9uKCkpIHsKICAgICAgICAgUGFyc2VyRnVuY3Rpb25J
bmZvPEFTVEJ1aWxkZXI+IGZ1bmN0aW9uSW5mbzsKICAgICAgICAgaWYgKHBhcnNlTW9kZSA9PSBT
b3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckJvZHlNb2RlKQotICAgICAgICAgICAgbV9wYXJhbWV0
ZXJzID0gY3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhjb250ZXh0KTsKKyAgICAgICAgICAgIG1f
cGFyYW1ldGVycyA9IGNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMoY29udGV4dCwgZnVuY3Rpb25J
bmZvLnBhcmFtZXRlckNvdW50KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbV9wYXJhbWV0
ZXJzID0gcGFyc2VGdW5jdGlvblBhcmFtZXRlcnMoY29udGV4dCwgcGFyc2VNb2RlLCBmdW5jdGlv
bkluZm8pOwogCkBAIC01MTcsMTAgKzUxNyw5IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRl
cj4gVHJlZVNvdXJjZUVsZW1lbnRzIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUdlbmVyYXRvCiAK
ICAgICBQYXJzZXJGdW5jdGlvbkluZm88VHJlZUJ1aWxkZXI+IGluZm87CiAgICAgaW5mby5uYW1l
ID0gJm1fdm0tPnByb3BlcnR5TmFtZXMtPm51bGxJZGVudGlmaWVyOwotICAgIGNyZWF0ZUdlbmVy
YXRvclBhcmFtZXRlcnMoY29udGV4dCk7CisgICAgY3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhj
b250ZXh0LCBpbmZvLnBhcmFtZXRlckNvdW50KTsKICAgICBpbmZvLnN0YXJ0T2Zmc2V0ID0gcGFy
YW1ldGVyc1N0YXJ0OwogICAgIGluZm8uc3RhcnRMaW5lID0gdG9rZW5MaW5lKCk7Ci0gICAgaW5m
by5wYXJhbWV0ZXJDb3VudCA9IDQ7IC8vIGdlbmVyYXRvciwgc3RhdGUsIHZhbHVlLCByZXN1bWUg
bW9kZQogCiAgICAgewogICAgICAgICBBdXRvUG9wU2NvcGVSZWYgZ2VuZXJhdG9yQm9keVNjb3Bl
KHRoaXMsIHB1c2hTY29wZSgpKTsKQEAgLTE5MDQsMzIgKzE5MDMsMzAgQEAgdGVtcGxhdGUgPHR5
cGVuYW1lIExleGVyVHlwZT4gdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyLCBjbGFzcyBGdW5j
dGlvbkluZm9UeXAKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KLXRlbXBsYXRl
IDxjbGFzcyBUcmVlQnVpbGRlcj4gdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkZvcm1hbFBhcmFtZXRl
ckxpc3QgUGFyc2VyPExleGVyVHlwZT46OmNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMoVHJlZUJ1
aWxkZXImIGNvbnRleHQpCit0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IHR5cGVuYW1lIFRy
ZWVCdWlsZGVyOjpGb3JtYWxQYXJhbWV0ZXJMaXN0IFBhcnNlcjxMZXhlclR5cGU+OjpjcmVhdGVH
ZW5lcmF0b3JQYXJhbWV0ZXJzKFRyZWVCdWlsZGVyJiBjb250ZXh0LCB1bnNpZ25lZCYgcGFyYW1l
dGVyQ291bnQpCiB7CiAgICAgYXV0byBwYXJhbWV0ZXJzID0gY29udGV4dC5jcmVhdGVGb3JtYWxQ
YXJhbWV0ZXJMaXN0KCk7CiAKICAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb24odG9rZW5Mb2Nh
dGlvbigpKTsKICAgICBKU1RleHRQb3NpdGlvbiBwb3NpdGlvbiA9IHRva2VuU3RhcnRQb3NpdGlv
bigpOwogCi0gICAgLy8gQGdlbmVyYXRvcgotICAgIGRlY2xhcmVQYXJhbWV0ZXIoJm1fdm0tPnBy
b3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclByaXZhdGVOYW1lKCkpOwotICAg
IGF1dG8gZ2VuZXJhdG9yID0gY29udGV4dC5jcmVhdGVCaW5kaW5nTG9jYXRpb24obG9jYXRpb24s
IG1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclByaXZhdGVOYW1l
KCksIHBvc2l0aW9uLCBwb3NpdGlvbiwgQXNzaWdubWVudENvbnRleHQ6OkRlY2xhcmF0aW9uU3Rh
dGVtZW50KTsKLSAgICBjb250ZXh0LmFwcGVuZFBhcmFtZXRlcihwYXJhbWV0ZXJzLCBnZW5lcmF0
b3IsIDApOworICAgIGF1dG8gYWRkUGFyYW1ldGVyID0gWyZdKGNvbnN0IElkZW50aWZpZXImIG5h
bWUpIHsKKyAgICAgICAgZGVjbGFyZVBhcmFtZXRlcigmbmFtZSk7CisgICAgICAgIGF1dG8gYmlu
ZGluZyA9IGNvbnRleHQuY3JlYXRlQmluZGluZ0xvY2F0aW9uKGxvY2F0aW9uLCBuYW1lLCBwb3Np
dGlvbiwgcG9zaXRpb24sIEFzc2lnbm1lbnRDb250ZXh0OjpEZWNsYXJhdGlvblN0YXRlbWVudCk7
CisgICAgICAgIGNvbnRleHQuYXBwZW5kUGFyYW1ldGVyKHBhcmFtZXRlcnMsIGJpbmRpbmcsIDAp
OworICAgICAgICArK3BhcmFtZXRlckNvdW50OworICAgIH07CiAKKyAgICAvLyBAZ2VuZXJhdG9y
CisgICAgYWRkUGFyYW1ldGVyKG1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdl
bmVyYXRvclByaXZhdGVOYW1lKCkpOwogICAgIC8vIEBnZW5lcmF0b3JTdGF0ZQotICAgIGRlY2xh
cmVQYXJhbWV0ZXIoJm1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRv
clN0YXRlUHJpdmF0ZU5hbWUoKSk7Ci0gICAgYXV0byBnZW5lcmF0b3JTdGF0ZSA9IGNvbnRleHQu
Y3JlYXRlQmluZGluZ0xvY2F0aW9uKGxvY2F0aW9uLCBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5idWls
dGluTmFtZXMoKS5nZW5lcmF0b3JTdGF0ZVByaXZhdGVOYW1lKCksIHBvc2l0aW9uLCBwb3NpdGlv
biwgQXNzaWdubWVudENvbnRleHQ6OkRlY2xhcmF0aW9uU3RhdGVtZW50KTsKLSAgICBjb250ZXh0
LmFwcGVuZFBhcmFtZXRlcihwYXJhbWV0ZXJzLCBnZW5lcmF0b3JTdGF0ZSwgMCk7Ci0KKyAgICBh
ZGRQYXJhbWV0ZXIobV92bS0+cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9y
U3RhdGVQcml2YXRlTmFtZSgpKTsKICAgICAvLyBAZ2VuZXJhdG9yVmFsdWUKLSAgICBkZWNsYXJl
UGFyYW1ldGVyKCZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JW
YWx1ZVByaXZhdGVOYW1lKCkpOwotICAgIGF1dG8gZ2VuZXJhdG9yVmFsdWUgPSBjb250ZXh0LmNy
ZWF0ZUJpbmRpbmdMb2NhdGlvbihsb2NhdGlvbiwgbV92bS0+cHJvcGVydHlOYW1lcy0+YnVpbHRp
bk5hbWVzKCkuZ2VuZXJhdG9yVmFsdWVQcml2YXRlTmFtZSgpLCBwb3NpdGlvbiwgcG9zaXRpb24s
IEFzc2lnbm1lbnRDb250ZXh0OjpEZWNsYXJhdGlvblN0YXRlbWVudCk7Ci0gICAgY29udGV4dC5h
cHBlbmRQYXJhbWV0ZXIocGFyYW1ldGVycywgZ2VuZXJhdG9yVmFsdWUsIDApOwotCisgICAgYWRk
UGFyYW1ldGVyKG1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclZh
bHVlUHJpdmF0ZU5hbWUoKSk7CiAgICAgLy8gQGdlbmVyYXRvclJlc3VtZU1vZGUKLSAgICBkZWNs
YXJlUGFyYW1ldGVyKCZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZW5lcmF0
b3JSZXN1bWVNb2RlUHJpdmF0ZU5hbWUoKSk7Ci0gICAgYXV0byBnZW5lcmF0b3JSZXN1bWVNb2Rl
ID0gY29udGV4dC5jcmVhdGVCaW5kaW5nTG9jYXRpb24obG9jYXRpb24sIG1fdm0tPnByb3BlcnR5
TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclJlc3VtZU1vZGVQcml2YXRlTmFtZSgpLCBw
b3NpdGlvbiwgcG9zaXRpb24sIEFzc2lnbm1lbnRDb250ZXh0OjpEZWNsYXJhdGlvblN0YXRlbWVu
dCk7Ci0gICAgY29udGV4dC5hcHBlbmRQYXJhbWV0ZXIocGFyYW1ldGVycywgZ2VuZXJhdG9yUmVz
dW1lTW9kZSwgMCk7CisgICAgYWRkUGFyYW1ldGVyKG1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0
aW5OYW1lcygpLmdlbmVyYXRvclJlc3VtZU1vZGVQcml2YXRlTmFtZSgpKTsKKyAgICAvLyBAZ2Vu
ZXJhdG9yRnJhbWUKKyAgICBhZGRQYXJhbWV0ZXIobV92bS0+cHJvcGVydHlOYW1lcy0+YnVpbHRp
bk5hbWVzKCkuZ2VuZXJhdG9yRnJhbWVQcml2YXRlTmFtZSgpKTsKIAogICAgIHJldHVybiBwYXJh
bWV0ZXJzOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJz
ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKaW5kZXggNzY5N2Ey
NjQ5OGQ3YjgxMjYwNzg5NTVhNTFiYjVmZjM3OWNlNjQyNi4uOGQyNTFiMjZlZmZiYjY0YmNlYmIw
ZWRjZWQ5ZmZiYTk2MDg1NzcxOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9QYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5o
CkBAIC0xNDE4LDcgKzE0MTgsNyBAQCBjbGFzcyBQYXJzZXIgewogICAgIEFMV0FZU19JTkxJTkUg
Ym9vbCBpc0Fycm93RnVuY3Rpb25QYXJhbWV0ZXJzKCk7CiAgICAgCiAgICAgdGVtcGxhdGUgPGNs
YXNzIFRyZWVCdWlsZGVyLCBjbGFzcyBGdW5jdGlvbkluZm9UeXBlPiBORVZFUl9JTkxJTkUgdHlw
ZW5hbWUgVHJlZUJ1aWxkZXI6OkZvcm1hbFBhcmFtZXRlckxpc3QgcGFyc2VGdW5jdGlvblBhcmFt
ZXRlcnMoVHJlZUJ1aWxkZXImLCBTb3VyY2VQYXJzZU1vZGUsIEZ1bmN0aW9uSW5mb1R5cGUmKTsK
LSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElORSB0eXBlbmFtZSBU
cmVlQnVpbGRlcjo6Rm9ybWFsUGFyYW1ldGVyTGlzdCBjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJz
KFRyZWVCdWlsZGVyJik7CisgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBORVZFUl9J
TkxJTkUgdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkZvcm1hbFBhcmFtZXRlckxpc3QgY3JlYXRlR2Vu
ZXJhdG9yUGFyYW1ldGVycyhUcmVlQnVpbGRlciYsIHVuc2lnbmVkJiBwYXJhbWV0ZXJDb3VudCk7
CiAKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElORSBUcmVlQ2xh
c3NFeHByZXNzaW9uIHBhcnNlQ2xhc3MoVHJlZUJ1aWxkZXImLCBGdW5jdGlvblJlcXVpcmVtZW50
cywgUGFyc2VyQ2xhc3NJbmZvPFRyZWVCdWlsZGVyPiYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAppbmRleCBmYzJhOTEyMGNkYjVk
NzU3YTAzNzA3ZjQyMzIzNGQ3MDZjYzAzM2YwLi5lMDY2ZDU2YTkxNTA3ZWMwMjViYTJmZTY3OWVk
ZGU5YzM3YTdkZTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21tb25TbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bW1vblNsb3dQYXRocy5jcHAKQEAgLTM3LDcgKzM3LDYgQEAKICNpbmNsdWRlICJFcnJvci5oIgog
I2luY2x1ZGUgIkVycm9ySGFuZGxpbmdTY29wZS5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkZ1enou
aCIKLSNpbmNsdWRlICJHZW5lcmF0b3JGcmFtZS5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5o
IgogI2luY2x1ZGUgIkhvc3RDYWxsUmV0dXJuVmFsdWUuaCIKICNpbmNsdWRlICJJbnRlcnByZXRl
ci5oIgpAQCAtNzUzLDM4ICs3NTIsNiBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfYXNzZXJ0
KQogICAgIEVORCgpOwogfQogCi1TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfc2F2ZSkKLXsKLSAg
ICAvLyBPbmx5IHNhdmUgdmFyaWFibGVzIGFuZCB0ZW1wb3JhcnkgcmVnaXN0ZXJzLiBUaGUgc2Nv
cGUgcmVnaXN0ZXJzIGFyZSBpbmNsdWRlZCBpbiB0aGVtLgotICAgIC8vIEJ1dCBwYXJhbWV0ZXJz
IGFyZSBub3QgaW5jbHVkZWQuIEJlY2F1c2UgdGhlIGdlbmVyYXRvciBpbXBsZW1lbnRhdGlvbiBy
ZXBsYWNlcyB0aGUgdmFsdWVzIG9mIHBhcmFtZXRlcnMgb24gZWFjaCBnZW5lcmF0b3IubmV4dCgp
IGNhbGwuCi0gICAgQkVHSU4oKTsKLSAgICBKU1ZhbHVlIGdlbmVyYXRvciA9IE9QKDEpLmpzVmFs
dWUoKTsKLSAgICBHZW5lcmF0b3JGcmFtZSogZnJhbWUgPSBudWxscHRyOwotICAgIEpTVmFsdWUg
dmFsdWUgPSBnZW5lcmF0b3IuZ2V0KGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5idWlsdGlu
TmFtZXMoKS5nZW5lcmF0b3JGcmFtZVByaXZhdGVOYW1lKCkpOwotICAgIGlmICghdmFsdWUuaXNO
dWxsKCkpCi0gICAgICAgIGZyYW1lID0ganNDYXN0PEdlbmVyYXRvckZyYW1lKj4odmFsdWUpOwot
ICAgIGVsc2UgewotICAgICAgICAvLyBGSVhNRTogT25jZSBKU0dlbmVyYXRvciBzcGVjaWFsaXpl
ZCBvYmplY3QgaXMgaW50cm9kdWNlZCwgdGhpcyBHZW5lcmF0b3JGcmFtZSBzaG91bGQgYmUgZW1i
ZWRlZCBpbnRvIGl0IHRvIGF2b2lkIGFsbG9jYXRpb25zLgotICAgICAgICAvLyBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNTQ1Ci0gICAgICAgIGZyYW1lID0gR2Vu
ZXJhdG9yRnJhbWU6OmNyZWF0ZShleGVjLT52bSgpLCAgZXhlYy0+Y29kZUJsb2NrKCktPm51bUNh
bGxlZUxvY2FscygpKTsKLSAgICAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoZ2VuZXJhdG9yLCB0
cnVlLCBQdXRQcm9wZXJ0eVNsb3Q6OlB1dEJ5SWQpOwotICAgICAgICBhc09iamVjdChnZW5lcmF0
b3IpLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+cHV0KGFzT2JqZWN0KGdlbmVyYXRvciksIGV4
ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JGcmFtZVBy
aXZhdGVOYW1lKCksIGZyYW1lLCBzbG90KTsKLSAgICB9Ci0gICAgdW5zaWduZWQgbGl2ZUNhbGxl
ZUxvY2Fsc0luZGV4ID0gcGNbMl0udS51bnNpZ25lZFZhbHVlOwotICAgIGZyYW1lLT5zYXZlKGV4
ZWMsIGV4ZWMtPmNvZGVCbG9jaygpLT5saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZChsaXZlQ2FsbGVl
TG9jYWxzSW5kZXgpKTsKLSAgICBFTkQoKTsKLX0KLQotU0xPV19QQVRIX0RFQ0woc2xvd19wYXRo
X3Jlc3VtZSkKLXsKLSAgICBCRUdJTigpOwotICAgIEpTVmFsdWUgZ2VuZXJhdG9yID0gT1AoMSku
anNWYWx1ZSgpOwotICAgIEdlbmVyYXRvckZyYW1lKiBmcmFtZSA9IGpzQ2FzdDxHZW5lcmF0b3JG
cmFtZSo+KGdlbmVyYXRvci5nZXQoZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLmJ1aWx0aW5O
YW1lcygpLmdlbmVyYXRvckZyYW1lUHJpdmF0ZU5hbWUoKSkpOwotICAgIHVuc2lnbmVkIGxpdmVD
YWxsZWVMb2NhbHNJbmRleCA9IHBjWzJdLnUudW5zaWduZWRWYWx1ZTsKLSAgICBmcmFtZS0+cmVz
dW1lKGV4ZWMsIGV4ZWMtPmNvZGVCbG9jaygpLT5saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZChsaXZl
Q2FsbGVlTG9jYWxzSW5kZXgpKTsKLSAgICBFTkQoKTsKLX0KLQogU0xPV19QQVRIX0RFQ0woc2xv
d19wYXRoX2NyZWF0ZV9sZXhpY2FsX2Vudmlyb25tZW50KQogewogICAgIEJFR0lOKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCmluZGV4IGFm
N2ZlNzg4ZmVhNmExNzkwMDk4MTZkYTliOWFiYzQzMzBjNDFiNDguLjE2NzcwZjdjMzFkMDg2ZWFh
MWE3YWFlOWI1ZWFlNTZjNDJkYTg0MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbW1vblNsb3dQYXRocy5oCkBAIC0yNDgsOCArMjQ4LDYgQEAgU0xPV19QQVRIX0hJ
RERFTl9ERUNMKHNsb3dfcGF0aF9uZXh0X2dlbmVyaWNfZW51bWVyYXRvcl9wbmFtZSk7CiBTTE9X
X1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3RvX2luZGV4X3N0cmluZyk7CiBTTE9XX1BBVEhf
SElEREVOX0RFQ0woc2xvd19wYXRoX3Byb2ZpbGVfdHlwZV9jbGVhcl9sb2cpOwogU0xPV19QQVRI
X0hJRERFTl9ERUNMKHNsb3dfcGF0aF9hc3NlcnQpOwotU0xPV19QQVRIX0hJRERFTl9ERUNMKHNs
b3dfcGF0aF9zYXZlKTsKLVNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcmVzdW1lKTsK
IFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfY3JlYXRlX2xleGljYWxfZW52aXJvbm1l
bnQpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9wdXNoX3dpdGhfc2NvcGUpOwog
U0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9yZXNvbHZlX3Njb3BlKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZyYW1lLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZyYW1lLmNwcApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggZWY2ZWE3YTEwMDI1OGMzZWNlMDRkYWFiNDNiZGFhODUxZWM4
ZjcxNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGcmFtZS5jcHAKKysrIC9kZXYvbnVs
bApAQCAtMSw5NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1
a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcu
aCIKLSNpbmNsdWRlICJHZW5lcmF0b3JGcmFtZS5oIgotCi0jaW5jbHVkZSAiQ29kZUJsb2NrLmgi
Ci0jaW5jbHVkZSAiSGVhcEl0ZXJhdGlvblNjb3BlLmgiCi0jaW5jbHVkZSAiSlNDSlNWYWx1ZUlu
bGluZXMuaCIKLSNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCi0jaW5jbHVkZSAiU2xvdFZpc2l0
b3JJbmxpbmVzLmgiCi0jaW5jbHVkZSAiU3RydWN0dXJlSW5saW5lcy5oIgotCi1uYW1lc3BhY2Ug
SlNDIHsKLQotY29uc3QgQ2xhc3NJbmZvIEdlbmVyYXRvckZyYW1lOjpzX2luZm8gPSB7ICJHZW5l
cmF0b3JGcmFtZSIsIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoR2VuZXJh
dG9yRnJhbWUpIH07Ci0KLUdlbmVyYXRvckZyYW1lOjpHZW5lcmF0b3JGcmFtZShWTSYgdm0sIHNp
emVfdCBudW1iZXJPZkNhbGxlZUxvY2FscykKLSAgICA6IEJhc2Uodm0sIHZtLmdlbmVyYXRvckZy
YW1lU3RydWN0dXJlLmdldCgpKQotICAgICwgbV9udW1iZXJPZkNhbGxlZUxvY2FscyhudW1iZXJP
ZkNhbGxlZUxvY2FscykKLXsKLX0KLQotdm9pZCBHZW5lcmF0b3JGcmFtZTo6ZmluaXNoQ3JlYXRp
b24oVk0mIHZtKQotewotICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKLSAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IG1fbnVtYmVyT2ZDYWxsZWVMb2NhbHM7ICsraSkKLSAgICAgICAgbG9j
YWxBdChpKS5jbGVhcigpOwotfQotCi1TdHJ1Y3R1cmUqIEdlbmVyYXRvckZyYW1lOjpjcmVhdGVT
dHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHBy
b3RvdHlwZSkKLXsKLSAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVj
dCwgcHJvdG90eXBlLCBUeXBlSW5mbyhDZWxsVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkp
OwotfQotCi1HZW5lcmF0b3JGcmFtZSogR2VuZXJhdG9yRnJhbWU6OmNyZWF0ZShWTSYgdm0sIHNp
emVfdCBudW1iZXJPZkxvY2FscykKLXsKLSAgICBHZW5lcmF0b3JGcmFtZSogcmVzdWx0ID0KLSAg
ICAgICAgbmV3ICgKLSAgICAgICAgICAgIE5vdE51bGwsCi0gICAgICAgICAgICBhbGxvY2F0ZUNl
bGw8R2VuZXJhdG9yRnJhbWU+KHZtLmhlYXAsIGFsbG9jYXRpb25TaXplRm9yTG9jYWxzKG51bWJl
ck9mTG9jYWxzKSkpCi0gICAgICAgIEdlbmVyYXRvckZyYW1lKHZtLCBudW1iZXJPZkxvY2Fscyk7
Ci0gICAgcmVzdWx0LT5maW5pc2hDcmVhdGlvbih2bSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LQotdm9pZCBHZW5lcmF0b3JGcmFtZTo6c2F2ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEZhc3RC
aXRWZWN0b3ImIGxpdmVDYWxsZWVMb2NhbHMpCi17Ci0gICAgLy8gT25seSBzYXZlIGNhbGxlZSBs
b2NhbHMuCi0gICAgLy8gRXZlcnkgdGltZSBhIGdlbmVyYXRvciBpcyBjYWxsZWQgKG9yIHJlc3Vt
ZWQpLCBwYXJhbWV0ZXJzIHNob3VsZCBiZSByZXBsYWNlZC4KLSAgICBBU1NFUlQobGl2ZUNhbGxl
ZUxvY2Fscy5udW1CaXRzKCkgPD0gbV9udW1iZXJPZkNhbGxlZUxvY2Fscyk7Ci0gICAgbGl2ZUNh
bGxlZUxvY2Fscy5mb3JFYWNoU2V0Qml0KFsmXShzaXplX3QgaW5kZXgpIHsKLSAgICAgICAgbG9j
YWxBdChpbmRleCkuc2V0KGV4ZWMtPnZtKCksIHRoaXMsIGV4ZWMtPnVuY2hlY2tlZFIodmlydHVh
bFJlZ2lzdGVyRm9yTG9jYWwoaW5kZXgpKS5qc1ZhbHVlKCkpOwotICAgIH0pOwotfQotCi12b2lk
IEdlbmVyYXRvckZyYW1lOjpyZXN1bWUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBGYXN0Qml0VmVj
dG9yJiBsaXZlQ2FsbGVlTG9jYWxzKQotewotICAgIC8vIE9ubHkgcmVzdW1lIGNhbGxlZSBsb2Nh
bHMuCi0gICAgLy8gRXZlcnkgdGltZSBhIGdlbmVyYXRvciBpcyBjYWxsZWQgKG9yIHJlc3VtZWQp
LCBwYXJhbWV0ZXJzIHNob3VsZCBiZSByZXBsYWNlZC4KLSAgICBsaXZlQ2FsbGVlTG9jYWxzLmZv
ckVhY2hTZXRCaXQoWyZdKHNpemVfdCBpbmRleCkgewotICAgICAgICBleGVjLT51bmNoZWNrZWRS
KHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGluZGV4KSkgPSBsb2NhbEF0KGluZGV4KS5nZXQoKTsK
LSAgICAgICAgbG9jYWxBdChpbmRleCkuY2xlYXIoKTsKLSAgICB9KTsKLX0KLQotdm9pZCBHZW5l
cmF0b3JGcmFtZTo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNp
dG9yKQotewotICAgIEdlbmVyYXRvckZyYW1lKiB0aGlzT2JqZWN0ID0ganNDYXN0PEdlbmVyYXRv
ckZyYW1lKj4oY2VsbCk7Ci0gICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNp
dG9yKTsKLSAgICAvLyBTaW5jZSBvbmx5IHRydWUgY2VsbCBwb2ludGVycyBhcmUgc3RvcmVkIGFz
IGEgY2VsbCwgd2UgY2FuIHNhZmVseSBtYXJrIHRoZW0uCi0gICAgdmlzaXRvci5hcHBlbmRWYWx1
ZXModGhpc09iamVjdC0+bG9jYWxzKCksIHRoaXNPYmplY3QtPm1fbnVtYmVyT2ZDYWxsZWVMb2Nh
bHMpOwotfQotCi19IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZyYW1lLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9HZW5lcmF0b3JGcmFtZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAz
ZDU0NWIxNDdkZDRhYmZiMmJiYjliNWE3MTk0ZThmNzQ4NDFjNDlhLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0dlbmVyYXRvckZyYW1lLmgKKysrIC9kZXYvbnVsbApAQCAtMSw5MCArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNv
bT4uCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpZm5kZWYgR2VuZXJhdG9yRnJhbWVfaAotI2RlZmluZSBHZW5lcmF0
b3JGcmFtZV9oCi0KLSNpbmNsdWRlICJKU0NlbGwuaCIKLSNpbmNsdWRlIDx3dGYvRmFzdEJpdFZl
Y3Rvci5oPgotCi1uYW1lc3BhY2UgSlNDIHsKLQotY2xhc3MgR2VuZXJhdG9yRnJhbWUgOiBwdWJs
aWMgSlNDZWxsIHsKLSAgICBmcmllbmQgY2xhc3MgSklUOwotI2lmIEVOQUJMRShERkdfSklUKQot
ICAgIGZyaWVuZCBjbGFzcyBERkc6OlNwZWN1bGF0aXZlSklUOwotICAgIGZyaWVuZCBjbGFzcyBE
Rkc6OkpJVENvbXBpbGVyOwotI2VuZGlmCi0gICAgZnJpZW5kIGNsYXNzIFZNOwotcHVibGljOgot
ICAgIHR5cGVkZWYgSlNDZWxsIEJhc2U7Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVj
dHVyZUZsYWdzID0gU3RydWN0dXJlSXNJbW1vcnRhbCB8IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwot
Ci0gICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKLQotICAgIHN0YXRpYyBHZW5lcmF0b3JGcmFtZSog
Y3JlYXRlKFZNJiwgc2l6ZV90IG51bWJlck9mQ2FsbGVlTG9jYWxzKTsKLQotICAgIFdyaXRlQmFy
cmllckJhc2U8VW5rbm93bj4qIGxvY2FscygpCi0gICAgewotICAgICAgICByZXR1cm4gYml0d2lz
ZV9jYXN0PFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qPihiaXR3aXNlX2Nhc3Q8Y2hhcio+KHRo
aXMpICsgb2Zmc2V0T2ZMb2NhbHMoKSk7Ci0gICAgfQotCi0gICAgV3JpdGVCYXJyaWVyQmFzZTxV
bmtub3duPiYgbG9jYWxBdChzaXplX3QgaW5kZXgpCi0gICAgewotICAgICAgICBBU1NFUlQoaW5k
ZXggPCBtX251bWJlck9mQ2FsbGVlTG9jYWxzKTsKLSAgICAgICAgcmV0dXJuIGxvY2FscygpW2lu
ZGV4XTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgc2l6ZV90IG9mZnNldE9mTG9jYWxzKCkKLSAgICB7
Ci0gICAgICAgIHJldHVybiBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Y8c2l6ZW9mKFdyaXRlQmFy
cmllcjxVbmtub3duPik+KHNpemVvZihHZW5lcmF0b3JGcmFtZSkpOwotICAgIH0KLQotICAgIHN0
YXRpYyBzaXplX3QgYWxsb2NhdGlvblNpemVGb3JMb2NhbHModW5zaWduZWQgbnVtYmVyT2ZMb2Nh
bHMpCi0gICAgewotICAgICAgICByZXR1cm4gb2Zmc2V0T2ZMb2NhbHMoKSArIG51bWJlck9mTG9j
YWxzICogc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPik7Ci0gICAgfQotCi0gICAgc3RhdGlj
IFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVl
IHByb3RvdHlwZSk7Ci0KLSAgICB2b2lkIHNhdmUoRXhlY1N0YXRlKiwgY29uc3QgRmFzdEJpdFZl
Y3RvciYgbGl2ZUNhbGxlZUxvY2Fscyk7Ci0gICAgdm9pZCByZXN1bWUoRXhlY1N0YXRlKiwgY29u
c3QgRmFzdEJpdFZlY3RvciYgbGl2ZUNhbGxlZUxvY2Fscyk7Ci0KLXByaXZhdGU6Ci0gICAgR2Vu
ZXJhdG9yRnJhbWUoVk0mLCBzaXplX3QgbnVtYmVyT2ZDYWxsZWVMb2NhbHMpOwotCi0gICAgc2l6
ZV90IG1fbnVtYmVyT2ZDYWxsZWVMb2NhbHM7Ci0KLSAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZz
ZXRzRXh0cmFjdG9yOwotCi0gICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOwotCi1wcm90ZWN0
ZWQ6Ci0gICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYp
OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgSlNDCi0KLSNlbmRpZiAvLyBHZW5lcmF0b3JGcmFtZV9o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyYXRvckZ1
bmN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyYXRvckZ1bmN0
aW9uLmgKaW5kZXggMzZmNjFjNWYyMGY1NmJlZmQ2YzU1Nzg0MmIxOWUzOWIxOWEzYTkxOS4uYTFj
YmFkOTQ2ZGM1NjgyOWVkMWEyMTU1NzkwYjQ0MGE4ZGY0MzAwNCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0b3JGdW5jdGlvbi5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJhdG9yRnVuY3Rpb24uaApAQCAtNTUsNiAr
NTUsMTYgQEAgY2xhc3MgSlNHZW5lcmF0b3JGdW5jdGlvbiA6IHB1YmxpYyBKU0Z1bmN0aW9uIHsK
ICAgICAgICAgRXhlY3V0aW5nID0gLTIsCiAgICAgfTsKIAorICAgIC8vIFt0aGlzXSwgQGdlbmVy
YXRvciwgQGdlbmVyYXRvclN0YXRlLCBAZ2VuZXJhdG9yVmFsdWUsIEBnZW5lcmF0b3JSZXN1bWVN
b2RlLCBAZ2VuZXJhdG9yRnJhbWUuCisgICAgZW51bSBjbGFzcyBHZW5lcmF0b3JBcmd1bWVudCA6
IGludDMyX3QgeworICAgICAgICBUaGlzVmFsdWUgPSAwLAorICAgICAgICBHZW5lcmF0b3IgPSAx
LAorICAgICAgICBTdGF0ZSA9IDIsCisgICAgICAgIFZhbHVlID0gMywKKyAgICAgICAgUmVzdW1l
TW9kZSA9IDQsCisgICAgICAgIEZyYW1lID0gNSwKKyAgICB9OworCiAgICAgY29uc3Qgc3RhdGlj
IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3M7CiAKICAgICBE
RUNMQVJFX0VYUE9SVF9JTkZPOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCmluZGV4
IGNkNTM4ZDhmZGI2NGRmM2YyZTgxZDkyMDE4YjhkNTBkZDFmMzAxMTYuLjI3OTRlNjk4MTMwNWEz
OTY0MmY0MGJmYzdlZmY5NmYwNWEwODdjMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5jcHAKQEAgLTQ1LDcgKzQ1LDYgQEAKICNpbmNsdWRlICJGVExUaHVua3MuaCIKICNpbmNsdWRl
ICJGdW5jdGlvbkNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiR0NBY3Rpdml0eUNhbGxiYWNrLmgi
Ci0jaW5jbHVkZSAiR2VuZXJhdG9yRnJhbWUuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIK
ICNpbmNsdWRlICJIZWFwLmgiCiAjaW5jbHVkZSAiSGVhcEl0ZXJhdGlvblNjb3BlLmgiCkBAIC0y
NDAsNyArMjM5LDYgQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQog
ICAgIGluZmVycmVkVHlwZVN0cnVjdHVyZS5zZXQoKnRoaXMsIEluZmVycmVkVHlwZTo6Y3JlYXRl
U3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIGluZmVycmVkVHlwZVRhYmxlU3Ry
dWN0dXJlLnNldCgqdGhpcywgSW5mZXJyZWRUeXBlVGFibGU6OmNyZWF0ZVN0cnVjdHVyZSgqdGhp
cywgMCwganNOdWxsKCkpKTsKICAgICBmdW5jdGlvblJhcmVEYXRhU3RydWN0dXJlLnNldCgqdGhp
cywgRnVuY3Rpb25SYXJlRGF0YTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkp
OwotICAgIGdlbmVyYXRvckZyYW1lU3RydWN0dXJlLnNldCgqdGhpcywgR2VuZXJhdG9yRnJhbWU6
OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICBleGNlcHRpb25TdHJ1
Y3R1cmUuc2V0KCp0aGlzLCBFeGNlcHRpb246OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNO
dWxsKCkpKTsKICAgICBwcm9taXNlRGVmZXJyZWRTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBKU1Byb21p
c2VEZWZlcnJlZDo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIGlu
dGVybmFsUHJvbWlzZURlZmVycmVkU3RydWN0dXJlLnNldCgqdGhpcywgSlNJbnRlcm5hbFByb21p
c2VEZWZlcnJlZDo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ZNLmgKaW5kZXggNTk2NGU3ZmUwNWI0M2ZmMTVlZTI1YTM0NGM1OTRl
MWI0NDE2ZTQyZS4uMDk0NDQwOTQ0Njc2MDIxNjExYjI2ZDgzZjQ5MjczYTVmNGRkNTczYSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCkBAIC0zMTIsNyArMzEyLDYgQEAgY2xhc3MgVk0g
OiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Vk0+IHsKICAgICBTdHJvbmc8U3RydWN0dXJl
PiBpbmZlcnJlZFR5cGVTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gaW5mZXJyZWRU
eXBlVGFibGVTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gZnVuY3Rpb25SYXJlRGF0
YVN0cnVjdHVyZTsKLSAgICBTdHJvbmc8U3RydWN0dXJlPiBnZW5lcmF0b3JGcmFtZVN0cnVjdHVy
ZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBleGNlcHRpb25TdHJ1Y3R1cmU7CiAgICAgU3Ryb25n
PFN0cnVjdHVyZT4gcHJvbWlzZURlZmVycmVkU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1
cmU+IGludGVybmFsUHJvbWlzZURlZmVycmVkU3RydWN0dXJlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQtYXJyYXku
anMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRs
LWFuZC1hcnJheS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZTkzOTgxMmZkYmFlYzZiODMyYmZkMDBmMjE1M2Rl
Zjg0YmI3NTkyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3Rz
L3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQtYXJyYXkuanMKQEAgLTAsMCArMSwyMyBAQAor
KGZ1bmN0aW9uICgpIHsKKyAgICBmdW5jdGlvbiAqZmliKCkKKyAgICB7CisgICAgICAgIGxldCBh
ID0gMTsKKyAgICAgICAgbGV0IGIgPSAxOworICAgICAgICBsZXQgYyA9IFsgMCBdOworICAgICAg
ICB3aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAgY1swXSA9IGE7CisgICAgICAgICAgICB5aWVs
ZCBjOworICAgICAgICAgICAgW2EsIGJdID0gW2IsIGEgKyBiXTsKKyAgICAgICAgfQorICAgIH0K
KworICAgIGxldCB2YWx1ZSA9IDA7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxZTQ7ICsraSkg
eworICAgICAgICBsZXQgZiA9IGZpYigpOworICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEw
MDsgKytpKSB7CisgICAgICAgICAgICB2YWx1ZSA9IGYubmV4dCgpLnZhbHVlOworICAgICAgICB9
CisgICAgICAgIGlmICh2YWx1ZVswXSAhPT0gMzU0MjI0ODQ4MTc5MjYyMDAwMDAwKQorICAgICAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgdmFsdWU6JHtyZXN1bHR9YCk7CisgICAgfQorfSgp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJh
dG9yLWZpYi1mdGwtYW5kLW9iamVjdC5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9z
dHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwtYW5kLW9iamVjdC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NjczNDBm
MmVhNGM3NDM4YTJkMjA5YWE0MGQwNjc3ZTRhYjdkM2ZiCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQtb2Jq
ZWN0LmpzCkBAIC0wLDAgKzEsMjMgQEAKKyhmdW5jdGlvbiAoKSB7CisgICAgZnVuY3Rpb24gKmZp
YigpCisgICAgeworICAgICAgICBsZXQgYSA9IDE7CisgICAgICAgIGxldCBiID0gMTsKKyAgICAg
ICAgbGV0IGMgPSB7IGZpYjogMCB9OworICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICAg
ICAgYy5maWIgPSBhOworICAgICAgICAgICAgeWllbGQgYzsKKyAgICAgICAgICAgIFthLCBiXSA9
IFtiLCBhICsgYl07CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQgdmFsdWUgPSAwOworICAg
IGZvciAobGV0IGkgPSAwOyBpIDwgMWU0OyArK2kpIHsKKyAgICAgICAgbGV0IGYgPSBmaWIoKTsK
KyAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDA7ICsraSkgeworICAgICAgICAgICAgdmFs
dWUgPSBmLm5leHQoKS52YWx1ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAodmFsdWUuZmliICE9
PSAzNTQyMjQ4NDgxNzkyNjIwMDAwMDApCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJh
ZCB2YWx1ZToke3Jlc3VsdH1gKTsKKyAgICB9Cit9KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQtc3RyaW5nLmpz
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC1h
bmQtc3RyaW5nLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQzOGFlNmFiMzM0NzA0NjgyMjg0OWY0MzAwNGVhNWM0
MDNlZWRhMjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMv
c3RyZXNzL2dlbmVyYXRvci1maWItZnRsLWFuZC1zdHJpbmcuanMKQEAgLTAsMCArMSwyMiBAQAor
KGZ1bmN0aW9uICgpIHsKKyAgICBmdW5jdGlvbiAqZmliKCkKKyAgICB7CisgICAgICAgIGxldCBh
ID0gMTsKKyAgICAgICAgbGV0IGIgPSAxOworICAgICAgICBsZXQgYyA9ICJSZXN1bHQhICI7Cisg
ICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICB5aWVsZCBjICsgYTsKKyAgICAgICAg
ICAgIFthLCBiXSA9IFtiLCBhICsgYl07CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQgdmFs
dWUgPSAwOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMWU0OyArK2kpIHsKKyAgICAgICAgbGV0
IGYgPSBmaWIoKTsKKyAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDA7ICsraSkgeworICAg
ICAgICAgICAgdmFsdWUgPSBmLm5leHQoKS52YWx1ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAo
dmFsdWUgIT09IGBSZXN1bHQhIDM1NDIyNDg0ODE3OTI2MjAwMDAwMGApCisgICAgICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoYGJhZCB2YWx1ZToke3Jlc3VsdH1gKTsKKyAgICB9Cit9KCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmli
LWZ0bC5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZp
Yi1mdGwuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMzQwZTMzZGJjODY4YmVhN2E4OTNjOWVjMTZiNzc5ZWMyNmJk
YjE5YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJl
c3MvZ2VuZXJhdG9yLWZpYi1mdGwuanMKQEAgLTAsMCArMSwyMSBAQAorKGZ1bmN0aW9uICgpIHsK
KyAgICBmdW5jdGlvbiAqZmliKCkKKyAgICB7CisgICAgICAgIGxldCBhID0gMTsKKyAgICAgICAg
bGV0IGIgPSAxOworICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAgeWllbGQgYTsK
KyAgICAgICAgICAgIFthLCBiXSA9IFtiLCBhICsgYl07CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICBsZXQgdmFsdWUgPSAwOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMWU0OyArK2kpIHsKKyAg
ICAgICAgbGV0IGYgPSBmaWIoKTsKKyAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDA7ICsr
aSkgeworICAgICAgICAgICAgdmFsdWUgPSBmLm5leHQoKS52YWx1ZTsKKyAgICAgICAgfQorICAg
ICAgICBpZiAodmFsdWUgIT09IDM1NDIyNDg0ODE3OTI2MjAwMDAwMCkKKyAgICAgICAgICAgIHRo
cm93IG5ldyBFcnJvcihgYmFkIHZhbHVlOiR7cmVzdWx0fWApOworICAgIH0KK30oKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1mcmFt
ZS1lbXB0eS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9y
LWZyYW1lLWVtcHR5LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU5ZTg4NTViZmFjM2M1NmRmOTI2YWJkNDI4YzAx
M2MzMzQxNjI3NDYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dHMvc3RyZXNzL2dlbmVyYXRvci1mcmFtZS1lbXB0eS5qcwpAQCAtMCwwICsxLDM0IEBACitmdW5j
dGlvbiBzaG91bGRUaHJvdyhmdW5jLCBlcnJvck1lc3NhZ2UpIHsKKyAgICB2YXIgZXJyb3JUaHJv
d24gPSBmYWxzZTsKKyAgICB2YXIgZXJyb3IgPSBudWxsOworICAgIHRyeSB7CisgICAgICAgIGZ1
bmMoKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGVycm9yVGhyb3duID0gdHJ1ZTsKKyAg
ICAgICAgZXJyb3IgPSBlOworICAgIH0KKyAgICBpZiAoIWVycm9yVGhyb3duKQorICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoJ25vdCB0aHJvd24nKTsKKyAgICBpZiAoU3RyaW5nKGVycm9yKSAhPT0g
ZXJyb3JNZXNzYWdlKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCBlcnJvcjogJHtTdHJp
bmcoZXJyb3IpfWApOworfQorCitzaG91bGRUaHJvdyhmdW5jdGlvbiAoKSB7CisgICAgZnVuY3Rp
b24gKmZpYihmbGFnKQorICAgIHsKKyAgICAgICAgbGV0IGEgPSAxOworICAgICAgICBsZXQgYiA9
IDE7CisgICAgICAgIHlpZWxkIDQyOworICAgICAgICBpZiAoZmxhZykKKyAgICAgICAgICAgIHJl
dHVybiBjOworICAgICAgICBsZXQgYyA9IDUwMDsKKyAgICB9CisKKyAgICBsZXQgdmFsdWUgPSAw
OworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMWU0OyArK2kpIHsKKyAgICAgICAgZm9yIChsZXQg
diBvZiBmaWIoZmFsc2UpKSB7CisgICAgICAgIH0KKyAgICB9CisgICAgZm9yIChsZXQgdiBvZiBm
aWIodHJ1ZSkpIHsKKyAgICB9Cit9LCBgUmVmZXJlbmNlRXJyb3I6IENhbm5vdCBhY2Nlc3MgdW5p
bml0aWFsaXplZCB2YXJpYWJsZS5gKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXJlZHVjZWQtc2F2ZS1wb2ludC1wdXQtdG8tc2NvcGUu
anMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1yZWR1Y2Vk
LXNhdmUtcG9pbnQtcHV0LXRvLXNjb3BlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMwYzc1ZmE0OTE0M2MxN2Jl
MTRmMzI4MWUzZjY1NDM0ZjM1MTM5ZTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1yZWR1Y2VkLXNhdmUtcG9pbnQtcHV0LXRv
LXNjb3BlLmpzCkBAIC0wLDAgKzEsMjggQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhw
ZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3
IEVycm9yKGBiYWQgdmFsdWU6ICR7U3RyaW5nKGFjdHVhbCl9YCk7Cit9CisKK2Z1bmN0aW9uIGVy
cm9yKCkKK3sKKyAgICB0aHJvdyAib2siOworfQorCitmdW5jdGlvbiogZ2VuKCkKK3sKKyAgICB2
YXIgdmFsdWUgPSA0MjsKKyAgICB0cnkgeworICAgICAgICB5aWVsZCAzMDA7CisgICAgICAgIHZh
bHVlID0gNTAwOworICAgICAgICBlcnJvcigpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAg
eWllbGQgNDI7CisgICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICB9CisgICAgcmV0dXJuIDIwMDsK
K30KKwordmFyIGcgPSBnZW4oKTsKK3Nob3VsZEJlKGcubmV4dCgpLnZhbHVlLCAzMDApOworc2hv
dWxkQmUoZy5uZXh0KCkudmFsdWUsIDQyKTsKK3Nob3VsZEJlKGcubmV4dCgpLnZhbHVlLCA1MDAp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0
b3ItdHJhbnNmZXItcmVnaXN0ZXItYmV5b25kLW11dGlwbGUteWllbGRzLmpzIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItdHJhbnNmZXItcmVnaXN0ZXItYmV5
b25kLW11dGlwbGUteWllbGRzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZlMjA4ZjU4MTI5NmY5YWUwOGE2YmZi
Mzk4YjQ4MjI1NzQyZDZiNzgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci10cmFuc2Zlci1yZWdpc3Rlci1iZXlvbmQtbXV0aXBs
ZS15aWVsZHMuanMKQEAgLTAsMCArMSwxOCBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBl
eHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKKworZnVuY3Rpb24gKmdlbigp
Cit7CisgICAgdmFyIHRlc3QgPSA0MjsKKyAgICB5aWVsZCAzMjsKKyAgICB5aWVsZCAzMzsKKyAg
ICB5aWVsZCB0ZXN0OworfQorCit2YXIgZyA9IGdlbigpOworc2hvdWxkQmUoZy5uZXh0KCkudmFs
dWUsIDMyKTsKK3Nob3VsZEJlKGcubmV4dCgpLnZhbHVlLCAzMyk7CitzaG91bGRCZShnLm5leHQo
KS52YWx1ZSwgNDIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggM2JhODA0MDZiNjg3ODcyY2RjMmUzZTgxNmJlYjAwNDNhOTM5YzI3MC4uZWI0Y2I4YTZmOTQz
YmU5ZGViNGYzY2I4NTJmNzljNzNlNGVhMjkwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9XVEYu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC0zMzQsNiArMzM0LDkgQEAKIAkJRkU4OTI1QjAxRDAwREFFQzAw
NDY5MDdFIC8qIEluZGVudGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGRTg5MjVBRjFEMDBEQUVDMDA0NjkwN0UgLyogSW5kZW50ZXIuaCAqLzsgfTsK
IAkJRkVEQUNEM0QxNjMwRjgzRjAwQzY5NjM0IC8qIFN0YWNrU3RhdHMuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVEQUNEM0IxNjMwRjgzRjAwQzY5
NjM0IC8qIFN0YWNrU3RhdHMuY3BwICovOyB9OwogCQlGRURBQ0QzRTE2MzBGODNGMDBDNjk2MzQg
LyogU3RhY2tTdGF0cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRkVEQUNEM0MxNjMwRjgzRjAwQzY5NjM0IC8qIFN0YWNrU3RhdHMuaCAqLzsgfTsKKwkJ
QzhCMEUxQTFFMDFBNDg2RUI5NUUwRDExIC8qIEluZGV4U2V0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTM3RTFEN0RCRDg0QUMzOEZBRTREMzQgLyog
SW5kZXhTZXQuaCAqLzsgfTsKKwkJQzkxNkI5NzVGMDJGNEY3RThCNEFCMTJEIC8qIEluZGV4TWFw
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QjQzMzgz
QTVEMEI0NjNDOTQzM0Q5MzMgLyogSW5kZXhNYXAuaCAqLzsgfTsKKwkJNEIyNjgwREQ5Qjk3NDQw
Mjg5OUVENTcyIC8qIEluZGV4ZWRDb250YWluZXJJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUM2N0M1NDI1ODkzNDhFMjg1QjQ5Njk5IC8q
IEluZGV4ZWRDb250YWluZXJJdGVyYXRvci5oICovOyB9OwogLyogRW5kIFBCWEJ1aWxkRmlsZSBz
ZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWENvbnRhaW5lckl0ZW1Qcm94eSBzZWN0aW9uICovCkBA
IC02ODAsNiArNjgzLDkgQEAKIAkJRkU4OTI1QUYxRDAwREFFQzAwNDY5MDdFIC8qIEluZGVudGVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluZGVudGVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFREFDRDNCMTYzMEY4M0YwMEM2OTYzNCAvKiBTdGFja1N0
YXRzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0YWNrU3RhdHMu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRURBQ0QzQzE2MzBGODNGMDBDNjk2
MzQgLyogU3RhY2tTdGF0cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdGFj
a1N0YXRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxMzdFMUQ3REJEODRBQzM4
RkFFNEQzNCAvKiBJbmRleFNldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBJ
bmRleFNldC5oOyBwYXRoID0gSW5kZXhTZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNUI0MzM4M0E1RDBCNDYzQzk0MzNEOTMzIC8qIEluZGV4TWFwLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IEluZGV4TWFwLmg7IHBhdGggPSBJbmRleE1hcC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk5QzY3QzU0MjU4OTM0OEUyODVCNDk2OTkgLyogSW5kZXhl
ZENvbnRhaW5lckl0ZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IElu
ZGV4ZWRDb250YWluZXJJdGVyYXRvci5oOyBwYXRoID0gSW5kZXhlZENvbnRhaW5lckl0ZXJhdG9y
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAvKiBFbmQgUEJYRmlsZVJlZmVyZW5jZSBz
ZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlIHNlY3Rpb24gKi8K
QEAgLTEwMzgsNiArMTA0NCw5IEBACiAJCQkJRTRBMEFEMzgxQTk2MjQ1NTAwNTM2REY2IC8qIFdv
cmtRdWV1ZS5oICovLAogCQkJCUE4QTQ3MzdBMTUxQTgyNUIwMDQxMjNGRiAvKiBXVEZUaHJlYWRE
YXRhLmNwcCAqLywKIAkJCQlBOEE0NzM3QjE1MUE4MjVCMDA0MTIzRkYgLyogV1RGVGhyZWFkRGF0
YS5oICovLAorCQkJCTMxMzdFMUQ3REJEODRBQzM4RkFFNEQzNCAvKiBJbmRleFNldC5oICovLAor
CQkJCTVCNDMzODNBNUQwQjQ2M0M5NDMzRDkzMyAvKiBJbmRleE1hcC5oICovLAorCQkJCTlDNjdD
NTQyNTg5MzQ4RTI4NUI0OTY5OSAvKiBJbmRleGVkQ29udGFpbmVySXRlcmF0b3IuaCAqLywKIAkJ
CSk7CiAJCQlwYXRoID0gd3RmOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTE0MzUs
NiArMTQ0NCw5IEBACiAJCQkJQThBNDc0NDYxNTFBODI1QjAwNDEyM0ZGIC8qIFdURlN0cmluZy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQThBNDc0ODcxNTFBODI1QjAwNDEyM0ZGIC8qIFdURlRocmVh
ZERhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUNFNzNFMDI1MTlEQ0I3QUIwMDU4MEQ1QyAvKiBY
UENTUEkuaCBpbiBIZWFkZXJzICovLAorCQkJCUM4QjBFMUExRTAxQTQ4NkVCOTVFMEQxMSAvKiBJ
bmRleFNldC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQzkxNkI5NzVGMDJGNEY3RThCNEFCMTJEIC8q
IEluZGV4TWFwLmggaW4gSGVhZGVycyAqLywKKwkJCQk0QjI2ODBERDlCOTc0NDAyODk5RUQ1NzIg
LyogSW5kZXhlZENvbnRhaW5lckl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQly
dW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dURi93dGYvQ01ha2VMaXN0
cy50eHQKaW5kZXggMDk5N2Q5ZWFjNDc5NTgxZmYxZmQ0NzY5Y2NjNGI1NDY2MmVmZDcxNC4uOTI4
MWIzNjdhODI1NTQwYTYyNWFjZWQ5NTM4ZGU2MDQwMGFiODM0MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50
eHQKQEAgLTQ1LDYgKzQ1LDEwIEBAIHNldChXVEZfSEVBREVSUwogICAgIEhhc2hUYWJsZS5oCiAg
ICAgSGFzaFRyYWl0cy5oCiAgICAgSGV4TnVtYmVyLmgKKyAgICBJbmRleE1hcC5oCisgICAgSW5k
ZXhTZXQuaAorICAgIEluZGV4U3BhcnNlU2V0LmgKKyAgICBJbmRleGVkQ29udGFpbmVySXRlcmF0
b3IuaAogICAgIEl0ZXJhdG9yQWRhcHRvcnMuaAogICAgIEl0ZXJhdG9yUmFuZ2UuaAogICAgIExp
c3RIYXNoU2V0LmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0Zhc3RCaXRWZWN0b3IuaCBi
L1NvdXJjZS9XVEYvd3RmL0Zhc3RCaXRWZWN0b3IuaAppbmRleCA5OGZmZjVjZjczNTNlNmJjNjdk
YTVjNTU5NDBjY2NlNGU0YjE1NmQwLi5mZjAwYjdiNTRkNGEwY2ZmNGJlZjdkMDM4NTRkZTZiOTBj
ZTFkYjkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9GYXN0Qml0VmVjdG9yLmgKKysrIGIv
U291cmNlL1dURi93dGYvRmFzdEJpdFZlY3Rvci5oCkBAIC0yMyw4ICsyMyw3IEBACiAgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKICAqLwogCi0jaWZuZGVmIEZhc3RCaXRWZWN0b3JfaAotI2RlZmluZSBGYXN0Qml0
VmVjdG9yX2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAjaW5jbHVkZSA8
d3RmL0Zhc3RNYWxsb2MuaD4KQEAgLTM2LDEyICszNSwxNCBAQCBjbGFzcyBQcmludFN0cmVhbTsK
IAogY2xhc3MgRmFzdEJpdFZlY3RvciB7CiBwdWJsaWM6Ci0gICAgRmFzdEJpdFZlY3RvcigpCi0g
ICAgICAgIDogbV9hcnJheSgwKQotICAgICAgICAsIG1fbnVtQml0cygwKQorICAgIEZhc3RCaXRW
ZWN0b3IoKSA9IGRlZmF1bHQ7CisKKyAgICBGYXN0Qml0VmVjdG9yKEZhc3RCaXRWZWN0b3ImJiBv
dGhlcikKKyAgICAgICAgOiBtX2FycmF5KHN0ZDo6ZXhjaGFuZ2Uob3RoZXIubV9hcnJheSwgbnVs
bHB0cikpCisgICAgICAgICwgbV9udW1CaXRzKHN0ZDo6ZXhjaGFuZ2Uob3RoZXIubV9udW1CaXRz
LCAwKSkKICAgICB7CiAgICAgfQotICAgIAorCiAgICAgRmFzdEJpdFZlY3Rvcihjb25zdCBGYXN0
Qml0VmVjdG9yJiBvdGhlcikKICAgICAgICAgOiBtX2FycmF5KDApCiAgICAgICAgICwgbV9udW1C
aXRzKDApCkBAIC0yMDIsMTMgKzIwMywxMCBAQCBjbGFzcyBGYXN0Qml0VmVjdG9yIHsKICAgICBz
dGF0aWMgc2l6ZV90IGFycmF5TGVuZ3RoKHNpemVfdCBudW1CaXRzKSB7IHJldHVybiAobnVtQml0
cyArIDMxKSA+PiA1OyB9CiAgICAgc2l6ZV90IGFycmF5TGVuZ3RoKCkgY29uc3QgeyByZXR1cm4g
YXJyYXlMZW5ndGgobV9udW1CaXRzKTsgfQogICAgIAotICAgIHVpbnQzMl90KiBtX2FycmF5OyAv
LyBObywgdGhpcyBjYW4ndCBiZSBhbiBzdGQ6OnVuaXF1ZV9wdHI8dWludDMyX3RbXT4uCi0gICAg
c2l6ZV90IG1fbnVtQml0czsKKyAgICB1aW50MzJfdCogbV9hcnJheSB7IG51bGxwdHIgfTsgLy8g
Tm8sIHRoaXMgY2FuJ3QgYmUgYW4gc3RkOjp1bmlxdWVfcHRyPHVpbnQzMl90W10+LgorICAgIHNp
emVfdCBtX251bUJpdHMgeyAwIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXVEYKIAogdXNpbmcg
V1RGOjpGYXN0Qml0VmVjdG9yOwotCi0jZW5kaWYgLy8gRmFzdEJpdFZlY3Rvcl9oCi0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL0luZGV4TWFwLmggYi9Tb3VyY2UvV1RGL3d0Zi9JbmRleE1h
cC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjAyZDYxMDE3YTQxNWM0NzM5MTZhYjgxNjY4YzE2YjAwYmRlNTI0MmIK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9JbmRleE1hcC5oCkBAIC0wLDAgKzEs
ODIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdU
RiB7CisKKy8vIFRoaXMgaXMgYSBtYXAgZm9yIGtleXMgdGhhdCBoYXZlIGFuIGluZGV4KCkuIEl0
J3Mgc3VwZXIgZWZmaWNpZW50IGZvciBCYXNpY0Jsb2Nrcy4gSXQncyBvbmx5CisvLyBlZmZpY2ll
bnQgZm9yIFZhbHVlcyBpZiB5b3UgZG9uJ3QgY3JlYXRlIHRvbyBtYW55IG9mIHRoZXNlIG1hcHMs
IHNpbmNlIFZhbHVlcyBjYW4gaGF2ZSB2ZXJ5CisvLyBzcGFyc2UgaW5kaWNlcyBhbmQgdGhlcmUg
YXJlIGEgbG90IG9mIFZhbHVlcy4KKwordGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBW
YWx1ZT4KK2NsYXNzIEluZGV4TWFwIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBJbmRleE1hcChz
aXplX3Qgc2l6ZSA9IDApCisgICAgeworICAgICAgICBtX3ZlY3Rvci5maWxsKFZhbHVlKCksIHNp
emUpOworICAgIH0KKworICAgIHZvaWQgcmVzaXplKHNpemVfdCBzaXplKQorICAgIHsKKyAgICAg
ICAgbV92ZWN0b3IuZmlsbChWYWx1ZSgpLCBzaXplKTsKKyAgICB9CisKKyAgICB2b2lkIGNsZWFy
KCkKKyAgICB7CisgICAgICAgIG1fdmVjdG9yLmZpbGwoVmFsdWUoKSwgbV92ZWN0b3Iuc2l6ZSgp
KTsKKyAgICB9CisKKyAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmVjdG9yLnNp
emUoKTsgfQorCisgICAgVmFsdWUmIG9wZXJhdG9yW10oc2l6ZV90IGluZGV4KQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIG1fdmVjdG9yW2luZGV4XTsKKyAgICB9CisKKyAgICBjb25zdCBWYWx1ZSYg
b3BlcmF0b3JbXShzaXplX3QgaW5kZXgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV92
ZWN0b3JbaW5kZXhdOworICAgIH0KKyAgICAKKyAgICBWYWx1ZSYgb3BlcmF0b3JbXShLZXkqIGtl
eSkKKyAgICB7CisgICAgICAgIHJldHVybiBtX3ZlY3RvcltrZXktPmluZGV4KCldOworICAgIH0K
KyAgICAKKyAgICBjb25zdCBWYWx1ZSYgb3BlcmF0b3JbXShLZXkqIGtleSkgY29uc3QKKyAgICB7
CisgICAgICAgIHJldHVybiBtX3ZlY3RvcltrZXktPmluZGV4KCldOworICAgIH0KKworcHJpdmF0
ZToKKyAgICBWZWN0b3I8VmFsdWU+IG1fdmVjdG9yOworfTsKKworfSAvLyBuYW1lc3BhY2UgV1RG
CisKK3VzaW5nIFdURjo6SW5kZXhNYXA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9JbmRl
eFNldC5oIGIvU291cmNlL1dURi93dGYvSW5kZXhTZXQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MWJkMDRmMmQx
NWFiNmNkMmE2OWNjNDQ1YjhkNzM2YjIyYzA1YjY4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dURi93dGYvSW5kZXhTZXQuaApAQCAtMCwwICsxLDE2MyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVk
ZSA8d3RmL0JpdFZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi9Db21tYVByaW50ZXIuaD4KKworbmFt
ZXNwYWNlIFdURiB7CisKKy8vIFRoaXMgaXMgYSBzZXQgZm9yIHRoaW5ncyB0aGF0IGhhdmUgYW4g
aW5kZXgoKS4gSXQncyBzdXBlciBlZmZpY2llbnQgZm9yIEJhc2ljQmxvY2tzLiBJdCdzIG9ubHkK
Ky8vIGVmZmljaWVudCBmb3IgVmFsdWVzIGlmIHlvdSBkb24ndCBjcmVhdGUgdG9vIG1hbnkgb2Yg
dGhlc2Ugc2V0cywgc2luY2UgVmFsdWVzIGNhbiBoYXZlIHZlcnkgc3BhcnNlCisvLyBpbmRpY2Vz
IGFuZCB0aGVyZSBhcmUgYSBsb3Qgb2YgVmFsdWVzLgorCisvLyBJZiB5b3Ugd2FudCBhIHNldCBv
ZiBCYXNpY0Jsb2NrcywgeW91IGRvIEluZGV4U2V0PEJhc2ljQmxvY2s+LiBTbywgVCA9IEJhc2lj
QmxvY2suCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorY2xhc3MgSW5kZXhTZXQgeworcHVibGljOgor
ICAgIEluZGV4U2V0KCkKKyAgICB7CisgICAgfQorCisgICAgYm9vbCBhZGQoVCogdmFsdWUpCisg
ICAgeworICAgICAgICByZXR1cm4gIW1fc2V0LnNldCh2YWx1ZS0+aW5kZXgoKSk7CisgICAgfQor
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgSXRlcmFibGU+CisgICAgYm9vbCBhZGRBbGwoY29uc3Qg
SXRlcmFibGUmIGl0ZXJhYmxlKQorICAgIHsKKyAgICAgICAgYm9vbCByZXN1bHQgPSBmYWxzZTsK
KyAgICAgICAgZm9yIChUKiB2YWx1ZSA6IGl0ZXJhYmxlKQorICAgICAgICAgICAgcmVzdWx0IHw9
IGFkZCh2YWx1ZSk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgYm9vbCBy
ZW1vdmUoVCogdmFsdWUpCisgICAgeworICAgICAgICByZXR1cm4gbV9zZXQuY2xlYXIodmFsdWUt
PmluZGV4KCkpOworICAgIH0KKworICAgIGJvb2wgY29udGFpbnMoVCogdmFsdWUpIGNvbnN0Cisg
ICAgeworICAgICAgICBpZiAoIXZhbHVlKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICByZXR1cm4gbV9zZXQuZ2V0KHZhbHVlLT5pbmRleCgpKTsKKyAgICB9CisKKyAgICBzaXpl
X3Qgc2l6ZSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9zZXQuYml0Q291bnQoKTsK
KyAgICB9CisKKyAgICBib29sIGlzRW1wdHkoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJu
ICFzaXplKCk7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ29sbGVjdGlvblR5cGU+
CisgICAgY2xhc3MgSXRlcmFibGUgeworICAgIHB1YmxpYzoKKyAgICAgICAgSXRlcmFibGUoY29u
c3QgQ29sbGVjdGlvblR5cGUmIGNvbGxlY3Rpb24sIGNvbnN0IEJpdFZlY3RvciYgc2V0KQorICAg
ICAgICAgICAgOiBtX2NvbGxlY3Rpb24oY29sbGVjdGlvbikKKyAgICAgICAgICAgICwgbV9zZXQo
c2V0KQorICAgICAgICB7CisgICAgICAgIH0KKworICAgICAgICBjbGFzcyBpdGVyYXRvciB7Cisg
ICAgICAgIHB1YmxpYzoKKyAgICAgICAgICAgIGl0ZXJhdG9yKCkKKyAgICAgICAgICAgICAgICA6
IG1fY29sbGVjdGlvbihudWxscHRyKQorICAgICAgICAgICAgeworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICBpdGVyYXRvcihjb25zdCBDb2xsZWN0aW9uVHlwZSYgY29sbGVjdGlvbiwgQml0
VmVjdG9yOjppdGVyYXRvciBpdGVyKQorICAgICAgICAgICAgICAgIDogbV9jb2xsZWN0aW9uKCZj
b2xsZWN0aW9uKQorICAgICAgICAgICAgICAgICwgbV9pdGVyKGl0ZXIpCisgICAgICAgICAgICB7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIFQqIG9wZXJhdG9yKigpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIG1fY29sbGVjdGlvbi0+YXQoKm1faXRlcik7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGl0ZXJhdG9yJiBvcGVyYXRvcisrKCkKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICArK21faXRlcjsKKyAgICAgICAgICAgICAgICByZXR1
cm4gKnRoaXM7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBpdGVyYXRvciYgb3RoZXIpIGNvbnN0CisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIG1faXRlciA9PSBvdGhlci5tX2l0ZXI7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBpdGVyYXRvciYgb3RoZXIpIGNvbnN0CisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOworICAg
ICAgICAgICAgfQorCisgICAgICAgIHByaXZhdGU6CisgICAgICAgICAgICBjb25zdCBDb2xsZWN0
aW9uVHlwZSogbV9jb2xsZWN0aW9uOworICAgICAgICAgICAgQml0VmVjdG9yOjppdGVyYXRvciBt
X2l0ZXI7CisgICAgICAgIH07CisKKyAgICAgICAgaXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJl
dHVybiBpdGVyYXRvcihtX2NvbGxlY3Rpb24sIG1fc2V0LmJlZ2luKCkpOyB9CisgICAgICAgIGl0
ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0dXJuIGl0ZXJhdG9yKG1fY29sbGVjdGlvbiwgbV9zZXQu
ZW5kKCkpOyB9CisKKyAgICBwcml2YXRlOgorICAgICAgICBjb25zdCBDb2xsZWN0aW9uVHlwZSYg
bV9jb2xsZWN0aW9uOworICAgICAgICBjb25zdCBCaXRWZWN0b3ImIG1fc2V0OworICAgIH07CisK
KyAgICAvLyBGb3IgYmFzaWMgYmxvY2tzLCB5b3UgZG86CisgICAgLy8gaW5kZXhTZXQudmFsdWVz
KHByb2NlZHVyZSk7CisgICAgLy8KKyAgICAvLyBGb3IgdmFsdWVzLCB5b3UgZG86CisgICAgLy8g
aW5kZXhTZXQudmFsdWVzKHByb2NlZHVyZS52YWx1ZXMoKSk7CisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgQ29sbGVjdGlvblR5cGU+CisgICAgSXRlcmFibGU8Q29sbGVjdGlvblR5cGU+IHZhbHVlcyhj
b25zdCBDb2xsZWN0aW9uVHlwZSYgY29sbGVjdGlvbikgY29uc3QKKyAgICB7CisgICAgICAgIHJl
dHVybiBJdGVyYWJsZTxDb2xsZWN0aW9uVHlwZT4oY29sbGVjdGlvbiwgaW5kaWNlcygpKTsKKyAg
ICB9CisKKyAgICBjb25zdCBCaXRWZWN0b3ImIGluZGljZXMoKSBjb25zdCB7IHJldHVybiBtX3Nl
dDsgfQorCisgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CisgICAgeworICAg
ICAgICBDb21tYVByaW50ZXIgY29tbWE7CisgICAgICAgIGZvciAoc2l6ZV90IGluZGV4IDogaW5k
aWNlcygpKQorICAgICAgICAgICAgb3V0LnByaW50KGNvbW1hLCBUOjpkdW1wUHJlZml4LCBpbmRl
eCk7CisgICAgfQorCitwcml2YXRlOgorICAgIEJpdFZlY3RvciBtX3NldDsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdURgorCit1c2luZyBXVEY6OkluZGV4U2V0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvSW5kZXhlZENvbnRhaW5lckl0ZXJhdG9yLmggYi9Tb3VyY2UvV1RGL3d0Zi9JbmRl
eGVkQ29udGFpbmVySXRlcmF0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZTliOWUzN2ExMjQ3ZDkwN2JlODMw
YzlkMjAxMmY3N2ExYjczNzcxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvSW5k
ZXhlZENvbnRhaW5lckl0ZXJhdG9yLmgKQEAgLTAsMCArMSw4MSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNs
dWRlIDx0eXBlX3RyYWl0cz4KKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPGNsYXNzIENv
bnRhaW5lcj4KK2NsYXNzIEluZGV4ZWRDb250YWluZXJJdGVyYXRvciB7CitwdWJsaWM6CisgICAg
SW5kZXhlZENvbnRhaW5lckl0ZXJhdG9yKCkKKyAgICAgICAgOiBtX2NvbnRhaW5lcihudWxscHRy
KQorICAgICAgICAsIG1faW5kZXgoMCkKKyAgICB7CisgICAgfQorCisgICAgSW5kZXhlZENvbnRh
aW5lckl0ZXJhdG9yKGNvbnN0IENvbnRhaW5lciYgY29udGFpbmVyLCB1bnNpZ25lZCBpbmRleCkK
KyAgICAgICAgOiBtX2NvbnRhaW5lcigmY29udGFpbmVyKQorICAgICAgICAsIG1faW5kZXgoZmlu
ZE5leHQoaW5kZXgpKQorICAgIHsKKyAgICB9CisKKyAgICBhdXRvIG9wZXJhdG9yKigpIC0+IHR5
cGVuYW1lIHN0ZDo6cmVzdWx0X29mPGRlY2x0eXBlKCZDb250YWluZXI6OmF0KShjb25zdCBDb250
YWluZXIsIHVuc2lnbmVkKT46OnR5cGUKKyAgICB7CisgICAgICAgIHJldHVybiBtX2NvbnRhaW5l
ci0+YXQobV9pbmRleCk7CisgICAgfQorCisgICAgSW5kZXhlZENvbnRhaW5lckl0ZXJhdG9yJiBv
cGVyYXRvcisrKCkKKyAgICB7CisgICAgICAgIG1faW5kZXggPSBmaW5kTmV4dChtX2luZGV4ICsg
MSk7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisKKyAgICBib29sIG9wZXJhdG9yPT0o
Y29uc3QgSW5kZXhlZENvbnRhaW5lckl0ZXJhdG9yJiBvdGhlcikgY29uc3QKKyAgICB7CisgICAg
ICAgIEFTU0VSVChtX2NvbnRhaW5lciA9PSBvdGhlci5tX2NvbnRhaW5lcik7CisgICAgICAgIHJl
dHVybiBtX2luZGV4ID09IG90aGVyLm1faW5kZXg7CisgICAgfQorCisgICAgYm9vbCBvcGVyYXRv
ciE9KGNvbnN0IEluZGV4ZWRDb250YWluZXJJdGVyYXRvciYgb3RoZXIpIGNvbnN0CisgICAgewor
ICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7CisgICAgfQorCitwcml2YXRlOgorICAg
IHVuc2lnbmVkIGZpbmROZXh0KHVuc2lnbmVkIGluZGV4KQorICAgIHsKKyAgICAgICAgd2hpbGUg
KGluZGV4IDwgbV9jb250YWluZXItPnNpemUoKSAmJiAhbV9jb250YWluZXItPmF0KGluZGV4KSkK
KyAgICAgICAgICAgIGluZGV4Kys7CisgICAgICAgIHJldHVybiBpbmRleDsKKyAgICB9CisKKyAg
ICBjb25zdCBDb250YWluZXIqIG1fY29udGFpbmVyOworICAgIHVuc2lnbmVkIG1faW5kZXg7Cit9
OworCit9IC8vIG5hbWVzcGFjZSBXVEYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>285633</attachid>
            <date>2016-08-09 01:17:17 -0700</date>
            <delta_ts>2016-08-19 22:10:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-152723-20160809171543.patch</filename>
            <type>text/plain</type>
            <size>221945</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA0MjUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
YzY4YzkyYmY5ZDJjMzFiM2RlMTE1MWM3MzkzMDM5ODdjYjIyMmYxLi42YzAwZDAzYTcyOTAxY2Vm
Yzk1Yjc4Zjc1NGQ1NGVhZjMzOTdkMjA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNzcgQEAKKzIwMTYtMDgtMDkgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0RGR11bRlRMXSBJbXBsZW1lbnQgRVM2IEdlbmVyYXRvcnMgaW4g
REZHIC8gRlRMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNTI3MjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUaGlzIHBhdGNoIGludHJvZHVjZXMgREZHIGFuZCBGVEwgc3VwcG9ydCBmb3IgRVM2IGdlbmVy
YXRvcnMuCisgICAgICAgIEVTNiBnZW5lcmF0b3IgaXMgY29tcGlsZWQgYnkgdGhlIEJ5dGVjb2Rl
R2VuZXJhdG9yLiBCdXQgYXQgdGhlIGxhc3QgcGhhc2UsIEJ5dGVjb2RlR2VuZXJhdG9yIHBlcmZv
cm1zICJnZW5lcmF0b3JpZmljYXRpb24iIG9udG8gdGhlIHVubGlua2VkIGNvZGUuCisgICAgICAg
IEluIEJ5dGVjb2RlR2VuZXJhdG9yIHBoYXNlLCB3ZSBpbnNlcnRlZCBzZXZlcmFsIHNwZWNpYWwg
bWFya2VycyBmb3IgdGhlIGdlbmVyYXRvcnMsIG9wX3NhdmUgYW5kIG9wX3Jlc3VtZS4KKyAgICAg
ICAgVGhlIG9wX3NhdmUsIG9wX3Jlc3VtZSwgYW5kIHRoZSBtZXJnZSBwb2ludCBibG9jayBhcmUg
Y29ubmVjdGVkIGFzIGZvbGxvd3MuCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBvcF9yZXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBeCisgICAgICAgIGVudHJ5IC0+IGdlbmVyYXRvciBzd2l0Y2ggLS0tLT4gb3Bfc2F2ZSAtPiBt
ZXJnZSBwb2ludCAtPiAuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBeCisgICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0t
LT4gb3BfcmVzdW1lIC0tLS0tKworCisgICAgICAgIEluIHRoZSBnZW5lcmF0b3JpZmljYXRpb24g
cGhhc2UsIHdlIHR1cm4gb3V0IHdoaWNoIHZhcmlhYmxlcyBzaG91bGQgYmUgc2F2ZWQgYW5kIHJl
c3VtZWQgYXQgZWFjaCBvcF9zYXZlIGFuZCBvcF9yZXN1bWUsIGFuZCBjb252ZXJ0IHRoZXNlIGJ5
dGVjb2RlcworICAgICAgICB0byB0aGUgc2VxdWVuY2VzIG9mIHRoZSBnZXRfZnJvbV9zY29wZSBh
bmQgcHV0X3RvX3Njb3BlLiBUaGUgcmVnaXN0ZXJzIGFyZSBzYXZlZCBhbmQgcmVzdW1lZCBvdmVy
IHRoZSBnZW5lcmF0b3IncyBuZXh0KCkgY2FsbHMgYnkgdXNpbmcgdGhpcyBzcGVjaWFsCisgICAg
ICAgIGdlbmVyYXRvciBmcmFtZSBzY29wZS4KKworICAgICAgICBJbiB0aGUgZ2VuZXJhdG9yaWZp
Y2F0aW9uIHBoYXNlLAorCisgICAgICAgIDEuIFdlIGNvbnN0cnVjdCB0aGUgQnl0ZWNvZGVHcmFw
aCBmcm9tIHRoZSB1bmxpbmtlZCBpbnN0cnVjdGlvbnMuIFRoaXMgY29uc3RydWN0cyB0aGUgYmFz
aWMgYmxvY2tzLCBhbmQgaXQgaXMgdXNlZCBpbiB0aGUgc3Vic2VxdWVudCBhbmFseXNpcy4KKyAg
ICAgICAgMi4gV2UgcGVyZm9ybSB0aGUgYW5hbHlzaXMgb250byB0aGUgdW5saW5rZWQgY29kZS4g
V2UgaGF2ZSAzIGFuYWx5c2lzOiB0aGUgbGl2ZW5lc3MgYW5hbHlzaXMsIHRoZSBzYXZlZCB2YXJp
YWJsZXMgYW5hbHlzaXMsIGFuZCB0aGUgcmVzdW1lZCB2YXJpYWJsZXMgYW5hbHlzaXMuCisgICAg
ICAgICAgIEZpcnN0LCBpbiB0aGUgbGl2ZW5lc3MgYW5hbHlzaXMsIHdlIGV4dHJhY3QgdGhlIGxp
dmUgdmFyaWFibGVzIGF0IGVhY2ggbWVyZ2UgcG9pbnQuIFRoZXNlIHZhcmlhYmxlcyBzaG91bGQg
YmUgY29uc2lkZXJlZCBhcyB0aGUgY29uc2VydmF0aXZlIHJlZ2lzdGVycworICAgICAgICAgICB0
byBiZSBzYXZlZCBhbmQgcmVzdW1lZCBhdCBlYWNoIHBvaW50LgorICAgICAgICAzLiBXZSBpbnNl
cnQgdGhlIGdldF9mcm9tX3Njb3BlIGFuZCBwdXRfdG9fc2NvcGUgYXQgZWFjaCBvcF9zYXZlIGFu
ZCBvcF9yZXN1bWUuIFdoaWNoIHJlZ2lzdGVycyBzaG91bGQgYmUgc2F2ZWQgYW5kIHJlc3VtZWQg
aXMgb2ZmZXJlZCBieSAoMikuCisgICAgICAgICAgIFRoZW4sIGNsaXAgdGhlIG9wX3NhdmUgYW5k
IG9wX3Jlc3VtZSB0aGVtc2VsdmVzLiBUaGV5IGFyZSBleGVjdXRlZCBpbiBhIGJhdGNoIG1hbm5l
ciBieSBCeXRlY29kZU1vZGlmaWNhdGlvblNldC4gU2luY2UgdGhlc2UgbW9kaWZpY2F0aW9uIGNo
YW5nZXMgdGhlIGJhc2ljIGJsb2NrcworICAgICAgICAgICBhbmQgc2l6ZSBvZiB1bmxpbmtlZCBp
bnN0cnVjdGlvbnMsIEJ5dGVjb2RlTW9kaWZpY2F0aW9uU2V0IGFsc28gcGVyZm9ybXMgdGhlIG9m
ZnNldCBhZGp1c3RtZW50IGZvciBVbmxpbmtlZENvZGVCbG9jay4gU28sIHRoaXMgQnl0ZWNvZGVN
b2RpZmljYXRpb25TZXQgaXMgcGVyZm9ybWVkCisgICAgICAgICAgIG9udG8gdGhlIEJ5dGVjb2Rl
R3JhcGggaW5zdGVhZCBvZiBCeXRlY29kZUJhc2ljQmxvY2suIFRoZSByZWFzb24gd2h5IHdlIHRh
a2UgdGhpcyBkZXNpZ24gaXMgc2ltcGxlOiB3ZSBkb24ndCB3YW50IHRvIG5ld2x5IGNyZWF0ZSB0
aGUgYmFzaWMgYmxvY2tzIGFuZCBvcGNvZGVzCisgICAgICAgICAgIGZvciB0aGlzIGVhcmx5IHBo
YXNlIGxpa2UgREZHLiBJbnN0ZWFkLCB3ZSBwZXJmb3JtIHRoZSBtb2RpZmljYXRpb24gYW5kIGFk
anVzdG1lbnQgdG8gdGhlIHVubGlua2VkIGluc3RydWN0aW9ucyBhbmQgVW5saW5rZWRDb2RlQmxv
Y2sgaW4gYSBpbi1wbGFjZSBtYW5uZXIuCisKKyAgICAgICAgQWZ0ZXIgdGhhdCBwaGFzZSwgdGhl
IGRhdGEgZmxvdyBvZiB0aGUgZ2VuZXJhdG9yLXNhdmVkLWFuZC1yZXN1bWVkLXJlZ2lzdGVycyBh
cmUgZXhwbGljaXRseSByZXByZXNlbnRlZCBieSB0aGUgZ2V0X2Zyb21fc2NvcGUgYW5kIHB1dF90
b19zY29wZS4KKyAgICAgICAgQW5kIG9wX3NhdmUgYW5kIG9wX3Jlc3VtZSBhcmUgcmVtb3ZlZC4g
U2luY2Ugd2UgdXNlIHRoZSBleGlzdGluZyBieXRlY29kZXMsIERGRyBhbmQgRlRMIGNoYW5nZXMg
YXJlIG5vdCBuZWNlc3NhcnkuCisgICAgICAgIFRoaXMgcGF0Y2ggYWxzbyBkcm9wcyBkYXRhIHN0
cnVjdHVyZXMgYW5kIGltcGxlbWVudGF0aW9ucyBmb3IgdGhlIG9sZCBnZW5lcmF0b3IsIG9wX3Jl
c3VtZSwgb3Bfc2F2ZSBpbXBsZW1lbnRhdGlvbnMgYW5kIEdlbmVyYXRvckZyYW1lLgorCisgICAg
ICAgIE5vdGUgdGhhdCB0aGlzIHBhdGNoIGRvZXMgbm90IGxldmVyYWdlIHRoZSByZWNlbnQgbXVs
dGkgZW50cnlwb2ludHMgc3VwcG9ydCBpbiBCMy4gQWZ0ZXIgdGhpcyBwYXRjaCBpcyBpbnRyb2R1
Y2VkLCB3ZSB3aWxsIHN1Ym1pdCBhIG5ldyBwYXRjaCB0aGF0IGxldmVyYWdlcyB0aGUgbXVsdGkK
KyAgICAgICAgZW50cnlwb2ludHMgZm9yIGdlbmVyYXRvcidzIHJlc3VtZSBhbmQgc2VlcyB0aGUg
cGVyZm9ybWFuY2UgZ2Fpbi4KKworICAgICAgICBUT0RPOiBQZXJmIFRCQSBoZXJlLgorCisgICAg
ICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBiMy9CM0Jhc2ljQmxvY2tVdGlscy5oOgorICAg
ICAgICAqIGIzL0IzQmxvY2tXb3JrbGlzdC5oOgorICAgICAgICAqIGIzL0IzQ0ZHLmg6CisgICAg
ICAgICogYjMvQjNEdXBsaWNhdGVUYWlscy5jcHA6CisgICAgICAgICogYjMvQjNGaXhTU0EuY3Bw
OgorICAgICAgICAqIGIzL0IzRml4U1NBLmg6CisgICAgICAgICogYjMvQjNJbmRleE1hcC5oOgor
ICAgICAgICAoSlNDOjpCMzo6SW5kZXhNYXA6OkluZGV4TWFwKTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6QjM6OkluZGV4TWFwOjpyZXNpemUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6
SW5kZXhNYXA6OmNsZWFyKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkluZGV4TWFwOjpz
aXplKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkluZGV4TWFwOjpvcGVyYXRvcltdKTog
RGVsZXRlZC4KKyAgICAgICAgKiBiMy9CM0luZGV4U2V0Lmg6CisgICAgICAgIChKU0M6OkIzOjpJ
bmRleFNldDo6SW5kZXhTZXQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6SW5kZXhTZXQ6
OmFkZCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpJbmRleFNldDo6YWRkQWxsKTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkluZGV4U2V0OjpyZW1vdmUpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpCMzo6SW5kZXhTZXQ6OmNvbnRhaW5zKTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6QjM6OkluZGV4U2V0OjpzaXplKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkluZGV4
U2V0Ojppc0VtcHR5KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkluZGV4U2V0OjpJdGVy
YWJsZTo6SXRlcmFibGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6SW5kZXhTZXQ6Okl0
ZXJhYmxlOjppdGVyYXRvcjo6aXRlcmF0b3IpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6
SW5kZXhTZXQ6Okl0ZXJhYmxlOjppdGVyYXRvcjo6b3BlcmF0b3IqKTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6QjM6OkluZGV4U2V0OjpJdGVyYWJsZTo6aXRlcmF0b3I6Om9wZXJhdG9yKyspOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6SW5kZXhTZXQ6Okl0ZXJhYmxlOjppdGVyYXRvcjo6
b3BlcmF0b3I9PSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpJbmRleFNldDo6SXRlcmFi
bGU6Oml0ZXJhdG9yOjpvcGVyYXRvciE9KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6Oklu
ZGV4U2V0OjpJdGVyYWJsZTo6YmVnaW4pOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6SW5k
ZXhTZXQ6Okl0ZXJhYmxlOjplbmQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6SW5kZXhT
ZXQ6OnZhbHVlcyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpJbmRleFNldDo6aW5kaWNl
cyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpJbmRleFNldDo6ZHVtcCk6IERlbGV0ZWQu
CisgICAgICAgICogYjMvQjNMb3dlclRvQWlyLmNwcDoKKyAgICAgICAgKiBiMy9CM1BoaUNoaWxk
cmVuLmg6CisgICAgICAgICogYjMvQjNQcm9jZWR1cmUuaDoKKyAgICAgICAgKEpTQzo6QjM6OlBy
b2NlZHVyZTo6aXRlcmF0b3I6Oml0ZXJhdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6
OlByb2NlZHVyZTo6aXRlcmF0b3I6Om9wZXJhdG9yKik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
OkIzOjpQcm9jZWR1cmU6Oml0ZXJhdG9yOjpvcGVyYXRvcisrKTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6QjM6OlByb2NlZHVyZTo6aXRlcmF0b3I6Om9wZXJhdG9yPT0pOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpCMzo6UHJvY2VkdXJlOjppdGVyYXRvcjo6b3BlcmF0b3IhPSk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OkIzOjpQcm9jZWR1cmU6Oml0ZXJhdG9yOjpmaW5kTmV4dCk6IERlbGV0
ZWQuCisgICAgICAgICogYjMvQjNSZWR1Y2VEb3VibGVUb0Zsb2F0LmNwcDoKKyAgICAgICAgKiBi
My9CM1JlZHVjZVN0cmVuZ3RoLmNwcDoKKyAgICAgICAgKiBiMy9CM1NTQUNhbGN1bGF0b3IuaDoK
KyAgICAgICAgKiBiMy9CM1VzZUNvdW50cy5oOgorICAgICAgICAqIGIzL2Fpci9BaXJDb2RlLmg6
CisgICAgICAgICogYjMvYWlyL0FpckVsaW1pbmF0ZURlYWRDb2RlLmNwcDoKKyAgICAgICAgKiBi
My9haXIvQWlyRml4T2J2aW91c1NwaWxscy5jcHA6CisgICAgICAgICogYjMvYWlyL0FpckZpeFBh
cnRpYWxSZWdpc3RlclN0YWxscy5jcHA6CisgICAgICAgICogYjMvYWlyL0FpckdlbmVyYXRlLmNw
cDoKKyAgICAgICAgKiBiMy9haXIvQWlyR2VuZXJhdGlvbkNvbnRleHQuaDoKKyAgICAgICAgKiBi
My9haXIvQWlyTGl2ZW5lc3MuaDoKKyAgICAgICAgKiBiMy9haXIvQWlyU3BpbGxFdmVyeXRoaW5n
LmNwcDoKKyAgICAgICAgKiBidWlsdGlucy9HZW5lcmF0b3JQcm90b3R5cGUuanM6CisgICAgICAg
IChnbG9iYWxQcml2YXRlLmdlbmVyYXRvclJlc3VtZSk6CisgICAgICAgICogYnl0ZWNvZGUvQnl0
ZWNvZGVCYXNpY0Jsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVCYXNpY0Jsb2NrOjpj
b21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2Nrc0ludGVybmFsKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNv
ZGVCYXNpY0Jsb2NrOjpjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2Nrcyk6CisgICAgICAgIChKU0M6
OmxpbmtCbG9ja3MpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpjb21wdXRlQnl0ZWNvZGVCYXNp
Y0Jsb2Nrcyk6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2Nr
Lmg6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlQmFzaWNCbG9jazo6Ynl0ZWNvZGVPZmZzZXRzKToK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVCYXNpY0Jsb2NrOjpzdWNjZXNzb3JzKToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVCYXNpY0Jsb2NrOjpwcmVkZWNlc3NvcnMpOgorICAgICAgICAoSlNDOjpC
eXRlY29kZUJhc2ljQmxvY2s6OmluZGV4KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVCYXNpY0Js
b2NrOjphZGRTdWNjZXNzb3IpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUJhc2ljQmxvY2s6OmFk
ZFByZWRlY2Vzc29yKToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNh
dGlvbi5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlv
bjo6Qnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdl
bmVyYXRvcmlmaWNhdGlvbjo6Z3JhcGgpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRv
cmlmaWNhdGlvbjo6eWllbGRzKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3JpZmlj
YXRpb246OnN0b3JhZ2VGb3JHZW5lcmF0b3JMb2NhbCk6CisgICAgICAgIChKU0M6OkdlbmVyYXRv
ckxpdmVuZXNzQW5hbHlzaXM6OkdlbmVyYXRvckxpdmVuZXNzQW5hbHlzaXMpOgorICAgICAgICAo
SlNDOjpHZW5lcmF0b3JMaXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zm
c2V0KToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yTGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0ZVVz
ZXNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckxpdmVuZXNzQW5h
bHlzaXM6OnJ1bik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uOjpy
dW4pOgorICAgICAgICAoSlNDOjpwZXJmb3JtR2VuZXJhdG9yaWZpY2F0aW9uKToKKyAgICAgICAg
KiBieXRlY29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5oOiBDb3BpZWQgZnJvbSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzSW5saW5l
cy5oLgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlR3JhcGguaDogQWRkZWQuCisgICAgICAg
IChKU0M6OkJ5dGVjb2RlR3JhcGg6OmNvZGVCbG9jayk6CisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
R3JhcGg6Omluc3RydWN0aW9ucyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR3JhcGg6OmJhc2lj
QmxvY2tzSW5SZXZlcnNlT3JkZXIpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdyYXBoOjpibG9j
a0NvbnRhaW5zQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdyYXBoOjpm
aW5kQmFzaWNCbG9ja0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVH
cmFwaDo6ZmluZEJhc2ljQmxvY2tXaXRoTGVhZGVyT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVHcmFwaDo6c2l6ZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR3JhcGg6OmF0KToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVHcmFwaDo6b3BlcmF0b3JbXSk6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlR3JhcGg6OmJlZ2luKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHcmFwaDo6ZW5kKToK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHcmFwaDo6Zmlyc3QpOgorICAgICAgICAoSlNDOjpCeXRl
Y29kZUdyYXBoOjpsYXN0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHcmFwaDxCbG9jaz46OkJ5
dGVjb2RlR3JhcGgpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNp
cy5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Qnl0ZWNvZGVM
aXZlbmVzc0FuYWx5c2lzKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lz
Ojpjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVM
aXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpydW5MaXZlbmVzc0ZpeHBvaW50KToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpnZXRMaXZlbmVzc0luZm9BdEJ5
dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpj
b21wdXRlRnVsbExpdmVuZXNzKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5
c2lzOjpjb21wdXRlS2lsbHMpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlz
aXM6OmR1bXBSZXN1bHRzKToKKyAgICAgICAgKEpTQzo6aXNWYWxpZFJlZ2lzdGVyRm9yTGl2ZW5l
c3MpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpnZXRMZWFkZXJPZmZzZXRGb3JCYXNpY0Jsb2Nr
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6ZmluZEJhc2ljQmxvY2tXaXRoTGVhZGVyT2Zmc2V0
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6YmxvY2tDb250YWluc0J5dGVjb2RlT2Zmc2V0KTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6ZmluZEJhc2ljQmxvY2tGb3JCeXRlY29kZU9mZnNldCk6
IERlbGV0ZWQuCisgICAgICAgIChKU0M6OnN0ZXBPdmVySW5zdHJ1Y3Rpb24pOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJ5dGVjb2RlT2Zmc2V0KTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6Y29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCbG9jayk6IERlbGV0
ZWQuCisgICAgICAgIChKU0M6OkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0ZSk6IERl
bGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmg6Cisg
ICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzSW5saW5lcy5oOgorICAg
ICAgICAoSlNDOjppc1ZhbGlkUmVnaXN0ZXJGb3JMaXZlbmVzcyk6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlTGl2ZW5lc3NMb2NhbFByb3BhZ2F0aW9uPERlcml2ZWRBbmFseXNpcz46OnN0ZXBPdmVy
SW5zdHJ1Y3Rpb24pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzTG9jYWxQcm9wYWdh
dGlvbjxEZXJpdmVkQW5hbHlzaXM+Ojpjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJ5dGVjb2RlT2Zm
c2V0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc0xvY2FsUHJvcGFnYXRpb248RGVy
aXZlZEFuYWx5c2lzPjo6Y29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCbG9jayk6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlTGl2ZW5lc3NMb2NhbFByb3BhZ2F0aW9uPERlcml2ZWRBbmFseXNpcz46Omdl
dExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVj
b2RlTW9kaWZpY2F0aW9uU2V0LmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkJ5dGVjb2RlTW9k
aWZpY2F0aW9uU2V0OjphZGp1c3RPZmZzZXQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZU1vZGlm
aWNhdGlvblNldDo6YXBwbHlNb2RpZmljYXRpb24pOgorICAgICAgICAoSlNDOjpCeXRlY29kZU1v
ZGlmaWNhdGlvblNldDo6ZXhlY3V0ZSk6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVNb2Rp
ZmljYXRpb25TZXQuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkJ5dGVjb2RlTW9kaWZpY2F0aW9u
U2V0OjpCeXRlY29kZU1vZGlmaWNhdGlvblNldCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlTW9k
aWZpY2F0aW9uU2V0OjppbnNlcnQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZU1vZGlmaWNhdGlv
blNldDo6cmVtb3ZlQnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZU1vZGlmaWNhdGlv
blNldDo6Z3JhcGgpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmg6CisgICAg
ICAgIChKU0M6OmNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpj
b21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxv
Y2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKToKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjpoYW5kbGVyRm9ySW5kZXgpOgorICAgICAgICAoSlNDOjpDb2Rl
QmxvY2s6OnZhbHVlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjpsaXZlbmVzc0FuYWx5c2lzU2xvdyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6
ZHVtcEJ5dGVjb2RlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpzaHJpbmtU
b0ZpdCk6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAg
IChKU0M6OkNvZGVCbG9jazo6aXNDb25zdGFudFJlZ2lzdGVySW5kZXgpOgorICAgICAgICAoSlND
OjpDb2RlQmxvY2s6OmxpdmVuZXNzQW5hbHlzaXMpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6
OmxpdmVDYWxsZWVMb2NhbHNBdFlpZWxkKTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29kZS9I
YW5kbGVySW5mby5oOgorICAgICAgICAoSlNDOjpIYW5kbGVySW5mb0Jhc2U6OmhhbmRsZXJGb3JJ
bmRleCk6CisgICAgICAgICogYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmNwcDoKKyAgICAg
ICAgKEpTQzo6Z2V0SnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6
OmNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHNJbnRlcm5hbCk6CisgICAgICAgIChKU0M6OmNvbXB1
dGVQcmVjaXNlSnVtcFRhcmdldHMpOgorICAgICAgICAoSlNDOjpyZWNvbXB1dGVQcmVjaXNlSnVt
cFRhcmdldHMpOgorICAgICAgICAoSlNDOjpmaW5kSnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNl
dCk6CisgICAgICAgICogYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmg6CisgICAgICAgICog
Ynl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENv
ZGVCbG9jazo6aGFuZGxlckZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6VW5saW5r
ZWRDb2RlQmxvY2s6OmhhbmRsZXJGb3JJbmRleCk6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29k
ZUJsb2NrOjphcHBseU1vZGlmaWNhdGlvbik6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRD
b2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRTdHJpbmdKdW1wVGFibGU6Om9mZnNl
dEZvclZhbHVlKToKKyAgICAgICAgKiBieXRlY29kZS9WaXJ0dWFsUmVnaXN0ZXIuaDoKKyAgICAg
ICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpC
eXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVy
YXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRv
cjo6ZW1pdENvbXBsZXhQb3BTY29wZXMpOgorICAgICAgICAoSlNDOjpwcmVwYXJlSnVtcFRhYmxl
Rm9yU3RyaW5nU3dpdGNoKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRZ
aWVsZFBvaW50KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRTYXZlKToK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXN1bWUpOgorICAgICAgICAq
IGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUdlbmVyYXRvcjo6Z2VuZXJhdG9yU3RhdGVSZWdpc3Rlcik6CisgICAgICAgIChKU0M6OkJ5dGVj
b2RlR2VuZXJhdG9yOjpnZW5lcmF0b3JWYWx1ZVJlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRvclJlc3VtZU1vZGVSZWdpc3Rlcik6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0b3JGcmFtZVJlZ2lzdGVyKToKKyAgICAgICAg
KiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogZ2VuZXJhdGUtYnl0ZWNvZGUtZmls
ZXM6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlND
OjpmaW5kRXhjZXB0aW9uSGFuZGxlcik6CisgICAgICAgIChKU0M6OkdldENhdGNoSGFuZGxlckZ1
bmN0b3I6Om9wZXJhdG9yKCkpOgorICAgICAgICAoSlNDOjpVbndpbmRGdW5jdG9yOjpvcGVyYXRv
cigpKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5oOgorICAgICAgICAqIGlu
dGVycHJldGVyL0ludGVycHJldGVySW5saW5lcy5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmguCisgICAgICAgIChKU0M6Oklu
dGVycHJldGVyOjpnZXRPcGNvZGVJRCk6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAg
IChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcyk6IERlbGV0ZWQuCisgICAgICAgICog
aml0L0pJVC5oOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0X29wX3NhdmUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bf
cmVzdW1lKTogRGVsZXRlZC4KKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFz
bToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6UGFyc2VyPExl
eGVyVHlwZT46OnBhcnNlSW5uZXIpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6
cGFyc2VHZW5lcmF0b3JGdW5jdGlvblNvdXJjZUVsZW1lbnRzKToKKyAgICAgICAgKEpTQzo6UGFy
c2VyPExleGVyVHlwZT46OmNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMpOgorICAgICAgICAqIHBh
cnNlci9QYXJzZXIuaDoKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHA6Cisg
ICAgICAgIChKU0M6OlNMT1dfUEFUSF9ERUNMKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1l
L0NvbW1vblNsb3dQYXRocy5oOgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJhdG9yRnJhbWUuY3Bw
OiBSZW1vdmVkLgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6R2VuZXJhdG9yRnJhbWUp
OiBEZWxldGVkLgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6ZmluaXNoQ3JlYXRpb24p
OiBEZWxldGVkLgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlU3RydWN0dXJl
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OmNyZWF0ZSk6IERlbGV0
ZWQuCisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpzYXZlKTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OnJlc3VtZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
OkdlbmVyYXRvckZyYW1lOjp2aXNpdENoaWxkcmVuKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50
aW1lL0dlbmVyYXRvckZyYW1lLmg6IFJlbW92ZWQuCisgICAgICAgIChKU0M6OkdlbmVyYXRvckZy
YW1lOjpsb2NhbHMpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6bG9j
YWxBdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpvZmZzZXRPZkxv
Y2Fscyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjphbGxvY2F0aW9u
U2l6ZUZvckxvY2Fscyk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9KU0dlbmVyYXRvckZ1
bmN0aW9uLmg6CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpW
TSk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9WTS5oOgorICAgICAgICAqIHRlc3RzL3N0
cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQtYXJyYXkuanM6IEFkZGVkLgorICAgICAgICAoZmli
KToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwtYW5kLW9iamVjdC5q
czogQWRkZWQuCisgICAgICAgIChmaWIpOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9nZW5lcmF0
b3ItZmliLWZ0bC1hbmQtc3RyaW5nLmpzOiBBZGRlZC4KKyAgICAgICAgKGZpYik6CisgICAgICAg
ICogdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLmpzOiBBZGRlZC4KKyAgICAgICAgKGZp
Yik6CisgICAgICAgICogdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1mcmFtZS1lbXB0eS5qczogQWRk
ZWQuCisgICAgICAgIChzaG91bGRUaHJvdyk6CisgICAgICAgIChzaG91bGRUaHJvdy5maWIpOgor
ICAgICAgICAqIHRlc3RzL3N0cmVzcy9nZW5lcmF0b3ItcmVkdWNlZC1zYXZlLXBvaW50LXB1dC10
by1zY29wZS5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgIChnZW4pOgor
ICAgICAgICAqIHRlc3RzL3N0cmVzcy9nZW5lcmF0b3ItdHJhbnNmZXItcmVnaXN0ZXItYmV5b25k
LW11dGlwbGUteWllbGRzLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAg
KGdlbik6CisKIDIwMTYtMDgtMDcgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5j
b20+CiAKICAgICAgICAgW0VTNl0gTW9kdWxlIG5hbWVzcGFjZSBvYmplY3Qgc2hvdWxkIG5vdCBh
bGxvdyB1bnNldCBJQwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V1RGL0NoYW5nZUxvZwppbmRleCBmMjZiMmViZmZlMmNhZGEzN2NjZGFlM2NlZGY2ZWZjODUzYjYx
NmIxLi5lOWZhZjQ2NTUzMTVkOGUwZGU4YzU4ZGZmMDY2NTU5MDQ2NGYwNjVlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDQ4IEBACisyMDE2LTA4LTA5ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwu
Y29tPgorCisgICAgICAgIFtERkddW0ZUTF0gSW1wbGVtZW50IEVTNiBHZW5lcmF0b3JzIGluIERG
RyAvIEZUTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTUyNzIzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkIG1vdmUgY29uc3RydWN0b3IgZm9yIEZhc3RCaXRWZWN0b3IuCisKKyAgICAgICAgKiBXVEYu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiB3dGYvQ01ha2VMaXN0cy50eHQ6
CisgICAgICAgICogd3RmL0Zhc3RCaXRWZWN0b3IuaDoKKyAgICAgICAgKFdURjo6RmFzdEJpdFZl
Y3Rvcjo6RmFzdEJpdFZlY3Rvcik6CisgICAgICAgICogd3RmL0luZGV4TWFwLmg6IENvcGllZCBm
cm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0luZGV4TWFwLmguCisgICAgICAgIChXVEY6
OkluZGV4TWFwOjpJbmRleE1hcCk6CisgICAgICAgIChXVEY6OkluZGV4TWFwOjpyZXNpemUpOgor
ICAgICAgICAoV1RGOjpJbmRleE1hcDo6Y2xlYXIpOgorICAgICAgICAoV1RGOjpJbmRleE1hcDo6
c2l6ZSk6CisgICAgICAgIChXVEY6OkluZGV4TWFwOjpvcGVyYXRvcltdKToKKyAgICAgICAgKiB3
dGYvSW5kZXhTZXQuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0lu
ZGV4U2V0LmguCisgICAgICAgIChXVEY6OkluZGV4U2V0OjpJbmRleFNldCk6CisgICAgICAgIChX
VEY6OkluZGV4U2V0OjphZGQpOgorICAgICAgICAoV1RGOjpJbmRleFNldDo6YWRkQWxsKToKKyAg
ICAgICAgKFdURjo6SW5kZXhTZXQ6OnJlbW92ZSk6CisgICAgICAgIChXVEY6OkluZGV4U2V0Ojpj
b250YWlucyk6CisgICAgICAgIChXVEY6OkluZGV4U2V0OjpzaXplKToKKyAgICAgICAgKFdURjo6
SW5kZXhTZXQ6OmlzRW1wdHkpOgorICAgICAgICAoV1RGOjpJbmRleFNldDo6SXRlcmFibGU6Okl0
ZXJhYmxlKToKKyAgICAgICAgKFdURjo6SW5kZXhTZXQ6Okl0ZXJhYmxlOjppdGVyYXRvcjo6aXRl
cmF0b3IpOgorICAgICAgICAoV1RGOjpJbmRleFNldDo6SXRlcmFibGU6Oml0ZXJhdG9yOjpvcGVy
YXRvciopOgorICAgICAgICAoV1RGOjpJbmRleFNldDo6SXRlcmFibGU6Oml0ZXJhdG9yOjpvcGVy
YXRvcisrKToKKyAgICAgICAgKFdURjo6SW5kZXhTZXQ6Okl0ZXJhYmxlOjppdGVyYXRvcjo6b3Bl
cmF0b3I9PSk6CisgICAgICAgIChXVEY6OkluZGV4U2V0OjpJdGVyYWJsZTo6aXRlcmF0b3I6Om9w
ZXJhdG9yIT0pOgorICAgICAgICAoV1RGOjpJbmRleFNldDo6SXRlcmFibGU6OmJlZ2luKToKKyAg
ICAgICAgKFdURjo6SW5kZXhTZXQ6Okl0ZXJhYmxlOjplbmQpOgorICAgICAgICAoV1RGOjpJbmRl
eFNldDo6dmFsdWVzKToKKyAgICAgICAgKFdURjo6SW5kZXhTZXQ6OmluZGljZXMpOgorICAgICAg
ICAoV1RGOjpJbmRleFNldDo6ZHVtcCk6CisgICAgICAgICogd3RmL0luZGV4ZWRDb250YWluZXJJ
dGVyYXRvci5oOiBSZW5hbWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzSW5kZXhN
YXAuaC4KKyAgICAgICAgKFdURjo6SW5kZXhlZENvbnRhaW5lckl0ZXJhdG9yOjpJbmRleGVkQ29u
dGFpbmVySXRlcmF0b3IpOgorICAgICAgICAoV1RGOjpJbmRleGVkQ29udGFpbmVySXRlcmF0b3I6
Om9wZXJhdG9yKyspOgorICAgICAgICAoV1RGOjpJbmRleGVkQ29udGFpbmVySXRlcmF0b3I6Om9w
ZXJhdG9yPT0pOgorICAgICAgICAoV1RGOjpJbmRleGVkQ29udGFpbmVySXRlcmF0b3I6Om9wZXJh
dG9yIT0pOgorICAgICAgICAoV1RGOjpJbmRleGVkQ29udGFpbmVySXRlcmF0b3I6OmZpbmROZXh0
KToKKwogMjAxNi0wOC0wNiAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAg
IFdURiBuZWVkcyBhIHZhcmlhbnQgaW1wbGVtZW50YXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFr
ZUxpc3RzLnR4dAppbmRleCA4NDU4YjkzOWNiZDIyMmViYTA0YzYyMjk4ZWYwNmUwNzcwNzgyNWM2
Li5lZTMxNjgyMzdmYzQwYzA4N2MyZjFkMDIyMzlmNDQwNjQ2MmFmMjAwIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0xODEsNiArMTgxLDggQEAgc2V0KEphdmFTY3JpcHRD
b3JlX1NPVVJDRVMKICAgICBieXRlY29kZS9BcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcAogICAg
IGJ5dGVjb2RlL0FycmF5UHJvZmlsZS5jcHAKICAgICBieXRlY29kZS9CeXRlY29kZUJhc2ljQmxv
Y2suY3BwCisgICAgYnl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwCisgICAg
Ynl0ZWNvZGUvQnl0ZWNvZGVNb2RpZmljYXRpb25TZXQuY3BwCiAgICAgYnl0ZWNvZGUvQnl0ZWNv
ZGVJbnRyaW5zaWNSZWdpc3RyeS5jcHAKICAgICBieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5h
bHlzaXMuY3BwCiAgICAgYnl0ZWNvZGUvQ2FsbEVkZ2UuY3BwCkBAIC02NjEsNyArNjYzLDYgQEAg
c2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBydW50aW1lL0Z1bmN0aW9uSGFzRXhlY3V0
ZWRDYWNoZS5jcHAKICAgICBydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcAogICAgIHJ1bnRp
bWUvRnVuY3Rpb25SYXJlRGF0YS5jcHAKLSAgICBydW50aW1lL0dlbmVyYXRvckZyYW1lLmNwcAog
ICAgIHJ1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKICAgICBydW50aW1l
L0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcAogICAgIHJ1bnRpbWUvR2VuZXJhdG9yUHJv
dG90eXBlLmNwcApAQCAtOTc0LDYgKzk3NSwxMCBAQCBhZGRfY3VzdG9tX2NvbW1hbmQoCiAgICAg
Q09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vZ2VuZXJh
dGUtYnl0ZWNvZGUtZmlsZXMgLS1ieXRlY29kZXNfaCAke0RFUklWRURfU09VUkNFU19KQVZBU0NS
SVBUQ09SRV9ESVJ9L0J5dGVjb2Rlcy5oIC0taW5pdF9ieXRlY29kZXNfYXNtICR7REVSSVZFRF9T
T1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5pdEJ5dGVjb2Rlcy5hc20gJHtKQVZBU0NSSVBU
Q09SRV9ESVJ9L2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCiAgICAgVkVSQkFUSU0pCiAKK2xp
c3QoQVBQRU5EIEphdmFTY3JpcHRDb3JlX0hFQURFUlMKKyAgICAke0RFUklWRURfU09VUkNFU19K
QVZBU0NSSVBUQ09SRV9ESVJ9L0J5dGVjb2Rlcy5oCispCisKIGFkZF9jdXN0b21fY29tbWFuZCgK
ICAgICBPVVRQVVQgJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9MTEludERl
c2lyZWRPZmZzZXRzLmgKICAgICBNQUlOX0RFUEVOREVOQ1kgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9
L29mZmxpbmVhc20vZ2VuZXJhdGVfb2Zmc2V0X2V4dHJhY3Rvci5yYgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCBlMzBkYzllNGQwMjAzNjIwYjE0Y2EyMjhiNGViMmJiNGZkZWNlZjBk
Li5lYjI2MGJiNGI4Mjk3Njg4NTJjODI2MDVjNzg5MTliODY5MGYzZmM1IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtNzg2LDggKzc4Niw2IEBACiAJCTBGRUM4NTE4MUJEQUNEQUMw
MDgwRkY3NCAvKiBCM0dlbmVyYXRlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGRUM4NENFMUJEQUNEQUMwMDgwRkY3NCAvKiBCM0dlbmVyYXRlLmNw
cCAqLzsgfTsKIAkJMEZFQzg1MTkxQkRBQ0RBQzAwODBGRjc0IC8qIEIzR2VuZXJhdGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRUM4NENGMUJEQUNE
QUMwMDgwRkY3NCAvKiBCM0dlbmVyYXRlLmggKi87IH07CiAJCTBGRUM4NTFBMUJEQUNEQUMwMDgw
RkY3NCAvKiBCM0dlbmVyaWNGcmVxdWVudGVkQmxvY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRUM4NEQwMUJEQUNEQUMwMDgwRkY3NCAvKiBCM0dl
bmVyaWNGcmVxdWVudGVkQmxvY2suaCAqLzsgfTsKLQkJMEZFQzg1MUIxQkRBQ0RBQzAwODBGRjc0
IC8qIEIzSW5kZXhNYXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGRUM4NEQxMUJEQUNEQUMwMDgwRkY3NCAvKiBCM0luZGV4TWFwLmggKi87IH07Ci0J
CTBGRUM4NTFDMUJEQUNEQUMwMDgwRkY3NCAvKiBCM0luZGV4U2V0LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkVDODREMjFCREFDREFDMDA4MEZGNzQg
LyogQjNJbmRleFNldC5oICovOyB9OwogCQkwRkVDODUxRDFCREFDREFDMDA4MEZGNzQgLyogQjNM
b3dlclRvQWlyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGRUM4NEQzMUJEQUNEQUMwMDgwRkY3NCAvKiBCM0xvd2VyVG9BaXIuY3BwICovOyB9Owog
CQkwRkVDODUxRTFCREFDREFDMDA4MEZGNzQgLyogQjNMb3dlclRvQWlyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkVDODRENDFCREFDREFDMDA4MEZG
NzQgLyogQjNMb3dlclRvQWlyLmggKi87IH07CiAJCTBGRUM4NTFGMUJEQUNEQUMwMDgwRkY3NCAv
KiBCM01lbW9yeVZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGRUM4NEQ1MUJEQUNEQUMwMDgwRkY3NCAvKiBCM01lbW9yeVZhbHVlLmNwcCAq
LzsgfTsKQEAgLTEyNTYsOCArMTI1NCw2IEBACiAJCTcwOUZCODZDMUFFMzM1QzYwMDM5RDA2OSAv
KiBXZWFrU2V0UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3MDlGQjg2NjFBRTMzNUM2MDAzOUQwNjkgLyogV2Vha1NldFByb3RvdHlwZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcwQjBB
OUQxMUE5QjY2NDYwMDAxMzA2QSAvKiBSdW50aW1lRmxhZ3MuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwQjBBOUQwMUE5QjY2MjAwMDAxMzA2QSAvKiBS
dW50aW1lRmxhZ3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk3MEI3OTE5MTFDMDI0QTEzMDAyNDgxRTIgLyogU291cmNlQ29kZUtleS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBCNzkxOEUxQzAyNDRD
OTAwMjQ4MUUyIC8qIFNvdXJjZUNvZGVLZXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwotCQk3MEI3OTE5MjFDMDI0QTIzMDAyNDgxRTIgLyogR2VuZXJh
dG9yRnJhbWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNzBCNzkxODMxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZyYW1lLmNwcCAqLzsgfTsK
LQkJNzBCNzkxOTMxQzAyNEEyODAwMjQ4MUUyIC8qIEdlbmVyYXRvckZyYW1lLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEI3OTE4NDFDMDI0NDMyMDAy
NDgxRTIgLyogR2VuZXJhdG9yRnJhbWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk3MEI3OTE5NDFDMDI0QTI4MDAyNDgxRTIgLyogR2VuZXJhdG9y
RnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3MEI3OTE4NTFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rp
b25Db25zdHJ1Y3Rvci5jcHAgKi87IH07CiAJCTcwQjc5MTk1MUMwMjRBMjgwMDI0ODFFMiAvKiBH
ZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3MEI3OTE4NjFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9y
RnVuY3Rpb25Db25zdHJ1Y3Rvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTcwQjc5MTk2MUMwMjRBMjgwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5j
dGlvblByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3MEI3OTE4NzFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Qcm90
b3R5cGUuY3BwICovOyB9OwpAQCAtMjAyOSw2ICsyMDI1LDExIEBACiAJCUUxOEUzQTU5MERGOTI3
OEMwMEQ5MEIzNCAvKiBWTS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFMThFM0E1NzBERjkyNzhDMDBEOTBCMzQgLyogVk0uY3BwICovOyB9OwogCQlF
MzE4Q0JDMDFCOEFFRjUxMDBBMjkyOUQgLyogSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMxOENCQkUxQjhB
RUY1MTAwQTI5MjlEIC8qIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmNwcCAqLzsgfTsKIAkJRTMx
OENCQzExQjhBRUY1MTAwQTI5MjlEIC8qIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzE4Q0JCRjFCOEFFRjUx
MDBBMjkyOUQgLyogSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFMzI4REFFNzFEMzhEMDA0MDAxQTI1Mjkg
LyogQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNEMjY0MjYxRDM4QzA0MjAwMEJFMTc0IC8qIEJ5dGVj
b2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcCAqLzsgfTsKKwkJRTMyOERBRTgxRDM4RDAwNTAwMUEy
NTI5IC8qIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0QyNjQyNzFEMzhDMDQyMDAwQkUxNzQgLyogQnl0
ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQlFMzI4REFFOTFEMzhEMDA1MDAxQTI1MjkgLyogQnl0ZWNvZGVH
cmFwaC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNE
MjY0MjgxRDM4QzA0MjAwMEJFMTc0IC8qIEJ5dGVjb2RlR3JhcGguaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFMzI4REFFQTFEMzhEMDA1MDAxQTI1
MjkgLyogQnl0ZWNvZGVNb2RpZmljYXRpb25TZXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNEMjY0MjkxRDM4QzA0MjAwMEJFMTc0IC8qIEJ5dGVj
b2RlTW9kaWZpY2F0aW9uU2V0LmNwcCAqLzsgfTsKKwkJRTMyOERBRUIxRDM4RDAwNTAwMUEyNTI5
IC8qIEJ5dGVjb2RlTW9kaWZpY2F0aW9uU2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFM0QyNjQyQTFEMzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNvZGVN
b2RpZmljYXRpb25TZXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQlFMzM2MzdBNTFCNjMyMjAyMDBFRTA4NDAgLyogUmVmbGVjdE9iamVjdC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzM2MzdBMzFC
NjMyMjAyMDBFRTA4NDAgLyogUmVmbGVjdE9iamVjdC5jcHAgKi87IH07CiAJCUUzMzYzN0E2MUI2
MzIyMDIwMEVFMDg0MCAvKiBSZWZsZWN0T2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzM2MzdBNDFCNjMyMjAyMDBFRTA4NDAgLyogUmVmbGVj
dE9iamVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUUzM0IzRTI2MUI3QUJENzUwMDQ4REIyRSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25P
YmplY3QubHV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFMzNCM0UyNTFCN0FCRDc1MDA0OERCMkUgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2Jq
ZWN0Lmx1dC5oICovOyB9OwpAQCAtMjA1Myw2ICsyMDU0LDcgQEAKIAkJRTM3OTRFNzUxQjc3RUI5
NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNzk0RTczMUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVB
bmFseXplci5jcHAgKi87IH07CiAJCUUzNzk0RTc2MUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVB
bmFseXplci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTM3OTRFNzQxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM5NjNDRUUxQjczRjc1MDAw
RUI0Q0U1IC8qIE5vZGVzQW5hbHl6ZU1vZHVsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzk2M0NFQzFCNzNGNzUwMDBFQjRDRTUgLyogTm9kZXNB
bmFseXplTW9kdWxlLmNwcCAqLzsgfTsKKwkJRTM5RDQ1RjUxRDM5MDA1NjAwQjNCMzc3IC8qIElu
dGVycHJldGVySW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTM5RDlEODQxRDM5MDAwNjAwNjY3MjgyIC8qIEludGVycHJldGVySW5saW5lcy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzOURB
NEE2MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29yZC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzlEQTRBNDFCN0U4QjdDMDA4NEYzM0Eg
LyogSlNNb2R1bGVSZWNvcmQuY3BwICovOyB9OwogCQlFMzlEQTRBNzFCN0U4QjdDMDA4NEYzM0Eg
LyogSlNNb2R1bGVSZWNvcmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEUzOURBNEE1MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29yZC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzRDIzOUM4
MUI4MjlDMUMwMEJCRUY2NyAvKiBKU01vZHVsZUVudmlyb25tZW50LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzRDIzOUM2MUI4MjlDMUMwMEJCRUY2
NyAvKiBKU01vZHVsZUVudmlyb25tZW50LmNwcCAqLzsgfTsKQEAgLTI5OTEsOCArMjk5Myw2IEBA
CiAJCTBGRUM4NENFMUJEQUNEQUMwMDgwRkY3NCAvKiBCM0dlbmVyYXRlLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEIzR2VuZXJhdGUuY3BwOyBwYXRoID0gYjMvQjNH
ZW5lcmF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRUM4NENGMUJEQUNE
QUMwMDgwRkY3NCAvKiBCM0dlbmVyYXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IEIzR2VuZXJhdGUuaDsgcGF0aCA9IGIzL0IzR2VuZXJhdGUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMEZFQzg0RDAxQkRBQ0RBQzAwODBGRjc0IC8qIEIzR2VuZXJpY0ZyZXF1
ZW50ZWRCbG9jay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBCM0dlbmVyaWNG
cmVxdWVudGVkQmxvY2suaDsgcGF0aCA9IGIzL0IzR2VuZXJpY0ZyZXF1ZW50ZWRCbG9jay5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwRkVDODREMTFCREFDREFDMDA4MEZGNzQgLyog
QjNJbmRleE1hcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBCM0luZGV4TWFw
Lmg7IHBhdGggPSBiMy9CM0luZGV4TWFwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTBGRUM4NEQyMUJEQUNEQUMwMDgwRkY3NCAvKiBCM0luZGV4U2V0LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IEIzSW5kZXhTZXQuaDsgcGF0aCA9IGIzL0IzSW5kZXhTZXQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZFQzg0RDMxQkRBQ0RBQzAwODBGRjc0IC8q
IEIzTG93ZXJUb0Fpci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBC
M0xvd2VyVG9BaXIuY3BwOyBwYXRoID0gYjMvQjNMb3dlclRvQWlyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMEZFQzg0RDQxQkRBQ0RBQzAwODBGRjc0IC8qIEIzTG93ZXJUb0Fp
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBCM0xvd2VyVG9BaXIuaDsgcGF0
aCA9IGIzL0IzTG93ZXJUb0Fpci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkVD
ODRENTFCREFDREFDMDA4MEZGNzQgLyogQjNNZW1vcnlWYWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBCM01lbW9yeVZhbHVlLmNwcDsgcGF0aCA9IGIzL0IzTWVt
b3J5VmFsdWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzQ2Miw4ICszNDYy
LDYgQEAKIAkJNzA5RkI4NjUxQUUzMzVDNjAwMzlEMDY5IC8qIFdlYWtTZXRQcm90b3R5cGUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2Vha1NldFByb3RvdHlwZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcwOUZCODY2MUFFMzM1QzYwMDM5RDA2
OSAvKiBXZWFrU2V0UHJvdG90eXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdlYWtTZXRQcm90b3R5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzBCMEE5
RDAxQTlCNjYyMDAwMDEzMDZBIC8qIFJ1bnRpbWVGbGFncy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBSdW50aW1lRmxhZ3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJNzBCNzkxODMxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZyYW1lLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdlbmVyYXRvckZyYW1lLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNzBCNzkxODQxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVy
YXRvckZyYW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdlbmVyYXRvckZy
YW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcwQjc5MTg1MUMwMjQ0MzIwMDI0
ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MEI3OTE4NjFDMDI0NDMyMDAyNDgxRTIgLyog
R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTcwQjc5MTg3MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlv
blByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHZW5l
cmF0b3JGdW5jdGlvblByb3RvdHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC00MzAxLDEwICs0Mjk5LDE2IEBACiAJCUUzNzk0RTczMUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1
bGVBbmFseXplci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNb2R1
bGVBbmFseXplci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNzk0RTc0MUI3
N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFseXplci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBNb2R1bGVBbmFseXplci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlFMzk2M0NFQzFCNzNGNzUwMDBFQjRDRTUgLyogTm9kZXNBbmFseXplTW9kdWxlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5vZGVzQW5hbHl6ZU1vZHVsZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzOUQ5RDg0MUQzOTAwMDYwMDY2NzI4MiAv
KiBJbnRlcnByZXRlcklubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SW50ZXJwcmV0ZXJJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOURB
NEE0MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29yZC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU01vZHVsZVJlY29yZC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUUzOURBNEE1MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29y
ZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU01vZHVsZVJlY29yZC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0QyMzlDNjFCODI5QzFDMDBCQkVGNjcgLyog
SlNNb2R1bGVFbnZpcm9ubWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBKU01vZHVsZUVudmlyb25tZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRTNEMjM5QzcxQjgyOUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxlRW52aXJvbm1lbnQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNNb2R1bGVFbnZpcm9ubWVudC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFM0QyNjQyNjFEMzhDMDQyMDAwQkUxNzQgLyogQnl0
ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlFM0QyNjQyNzFEMzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNvZGVHZW5lcmF0
b3JpZmljYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnl0ZWNvZGVH
ZW5lcmF0b3JpZmljYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTNEMjY0
MjgxRDM4QzA0MjAwMEJFMTc0IC8qIEJ5dGVjb2RlR3JhcGguaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQnl0ZWNvZGVHcmFwaC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlFM0QyNjQyOTFEMzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNvZGVNb2RpZmljYXRpb25TZXQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQnl0ZWNvZGVNb2RpZmlj
YXRpb25TZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFM0QyNjQyQTFEMzhD
MDQyMDAwQkUxNzQgLyogQnl0ZWNvZGVNb2RpZmljYXRpb25TZXQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQnl0ZWNvZGVNb2RpZmljYXRpb25TZXQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRTNFRjg4NzIxQjY2REYyMzAwM0YyNkNCIC8qIEpTUHJvcGVydHlO
YW1lSXRlcmF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNQ
cm9wZXJ0eU5hbWVJdGVyYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUz
RUY4ODczMUI2NkRGMjMwMDNGMjZDQiAvKiBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTQ5REMxNDkxMkVGMjYxQTAwMTg0QTFGIC8qIFNv
dXJjZVByb3ZpZGVyQ2FjaGVJdGVtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFNvdXJjZVByb3ZpZGVyQ2FjaGVJdGVtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC00Nzc2LDggKzQ3ODAsNiBAQAogCQkJCTBGRUM4NEQwMUJEQUNEQUMwMDgwRkY3NCAvKiBCM0dl
bmVyaWNGcmVxdWVudGVkQmxvY2suaCAqLywKIAkJCQkwRkVDODVCRjFCRTE2N0EwMDA4MEZGNzQg
LyogQjNIZWFwUmFuZ2UuY3BwICovLAogCQkJCTBGRUM4NUMwMUJFMTY3QTAwMDgwRkY3NCAvKiBC
M0hlYXBSYW5nZS5oICovLAotCQkJCTBGRUM4NEQxMUJEQUNEQUMwMDgwRkY3NCAvKiBCM0luZGV4
TWFwLmggKi8sCi0JCQkJMEZFQzg0RDIxQkRBQ0RBQzAwODBGRjc0IC8qIEIzSW5kZXhTZXQuaCAq
LywKIAkJCQlEQzY5Qjk5QTFEMTVGOTBGMDAyRTNDMDAgLyogQjNJbmZlclN3aXRjaGVzLmNwcCAq
LywKIAkJCQlEQzY5Qjk5QjFEMTVGOTBGMDAyRTNDMDAgLyogQjNJbmZlclN3aXRjaGVzLmggKi8s
CiAJCQkJMEZFQzg1QjQxQkUxNDYyRjAwODBGRjc0IC8qIEIzSW5zZXJ0aW9uU2V0LmNwcCAqLywK
QEAgLTUwMzMsNiArNTAzNSw3IEBACiAJCTE0MjlENzdBMEVEMjBENzMwMEI4OTYxOSAvKiBpbnRl
cnByZXRlciAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJ
RTM5RDlEODQxRDM5MDAwNjAwNjY3MjgyIC8qIEludGVycHJldGVySW5saW5lcy5oICovLAogCQkJ
CTBGNTVGMEYxMTREMTA2MzYwMEFDNzY0OSAvKiBBYnN0cmFjdFBDLmNwcCAqLywKIAkJCQkwRjU1
RjBGMjE0RDEwNjM2MDBBQzc2NDkgLyogQWJzdHJhY3RQQy5oICovLAogCQkJCTE0MjlEODVCMEVE
MjE4RTkwMEI4OTYxOSAvKiBDTG9vcFN0YWNrLmNwcCAqLywKQEAgLTU3MDIsOCArNTcwNSw2IEBA
CiAJCQkJRjY5MkE4NUQwMjU1NTk3RDAxRkY2MEY3IC8qIEZ1bmN0aW9uUHJvdG90eXBlLmggKi8s
CiAJCQkJNjJEMkQzOEQxQURGMTAzRjAwMDIwNkMxIC8qIEZ1bmN0aW9uUmFyZURhdGEuY3BwICov
LAogCQkJCTYyRDJEMzhFMUFERjEwM0YwMDAyMDZDMSAvKiBGdW5jdGlvblJhcmVEYXRhLmggKi8s
Ci0JCQkJNzBCNzkxODMxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZyYW1lLmNwcCAqLywK
LQkJCQk3MEI3OTE4NDFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnJhbWUuaCAqLywKIAkJ
CQk3MEI3OTE4NTFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rv
ci5jcHAgKi8sCiAJCQkJNzBCNzkxODYxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0
aW9uQ29uc3RydWN0b3IuaCAqLywKIAkJCQk3MEI3OTE4NzFDMDI0NDMyMDAyNDgxRTIgLyogR2Vu
ZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3BwICovLApAQCAtNjU4MSw2ICs2NTgyLDExIEBACiAJ
CTk2OUEwNzhGMEVEMUQzQUUwMEYxRjY4MSAvKiBieXRlY29kZSAqLyA9IHsKIAkJCWlzYSA9IFBC
WEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJRTNEMjY0MjYxRDM4QzA0MjAwMEJFMTc0IC8q
IEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcCAqLywKKwkJCQlFM0QyNjQyNzFEMzhDMDQy
MDAwQkUxNzQgLyogQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uaCAqLywKKwkJCQlFM0QyNjQy
ODFEMzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNvZGVHcmFwaC5oICovLAorCQkJCUUzRDI2NDI5MUQz
OEMwNDIwMDBCRTE3NCAvKiBCeXRlY29kZU1vZGlmaWNhdGlvblNldC5jcHAgKi8sCisJCQkJRTNE
MjY0MkExRDM4QzA0MjAwMEJFMTc0IC8qIEJ5dGVjb2RlTW9kaWZpY2F0aW9uU2V0LmggKi8sCiAJ
CQkJNTM3MEI0RjMxQkYyNUVBMjAwNUM0MEZDIC8qIEFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZh
bHVlV2F0Y2hwb2ludEJhc2UuY3BwICovLAogCQkJCTUzNzBCNEY0MUJGMjVFQTIwMDVDNDBGQyAv
KiBBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnRCYXNlLmggKi8sCiAJCQkJ
MEY4MzM1QjQxNjM5QzFFMzAwMTQ0M0I1IC8qIEFycmF5QWxsb2NhdGlvblByb2ZpbGUuY3BwICov
LApAQCAtNzEyMyw4ICs3MTI5LDYgQEAKIAkJCQkwRkVDODVDMzFCRTE2N0EwMDA4MEZGNzQgLyog
QjNIZWFwUmFuZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTI2NzE4QkE1MUJFOTlGNzgwMDUyMDE3
QiAvKiBBaXJJdGVyYXRlZFJlZ2lzdGVyQ29hbGVzY2luZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEY5NjMwM0MxRDQxOTJDRDAwNTYwOUQ5IC8qIERlc3RydWN0aW9uTW9kZS5oIGluIEhlYWRlcnMg
Ki8sCi0JCQkJMEZFQzg1MUIxQkRBQ0RBQzAwODBGRjc0IC8qIEIzSW5kZXhNYXAuaCBpbiBIZWFk
ZXJzICovLAotCQkJCTBGRUM4NTFDMUJEQUNEQUMwMDgwRkY3NCAvKiBCM0luZGV4U2V0LmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRkVDODVCQTFCRTE0NjJGMDA4MEZGNzQgLyogQjNJbnNlcnRpb25T
ZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUM4NUJCMUJFMTQ2MkYwMDgwRkY3NCAvKiBCM0lu
c2VydGlvblNldElubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUM4NTFFMUJEQUNEQUMw
MDgwRkY3NCAvKiBCM0xvd2VyVG9BaXIuaCBpbiBIZWFkZXJzICovLApAQCAtNzEzOCw2ICs3MTQy
LDcgQEAKIAkJCQkwRkVDODUyRDFCREFDREFDMDA4MEZGNzQgLyogQjNQcm9jZWR1cmVJbmxpbmVz
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVDODVCRDFCRTE0NjJGMDA4MEZGNzQgLyogQjNSZWR1
Y2VTdHJlbmd0aC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQzg1MzExQkRBQ0RBQzAwODBGRjc0
IC8qIEIzU3RhY2ttYXBTcGVjaWFsLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzI4REFFODFEMzhE
MDA1MDAxQTI1MjkgLyogQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGRUM4NTM1MUJEQUNEQUMwMDgwRkY3NCAvKiBCM1Nsb3RCYXNlVmFsdWUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGRUM4NTM2MUJEQUNEQUMwMDgwRkY3NCAvKiBCM1N1Y2Nlc3NvckNv
bGxlY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUM4NTM4MUJEQUNEQUMwMDgwRkY3NCAv
KiBCM1N3aXRjaENhc2UuaCBpbiBIZWFkZXJzICovLApAQCAtNzM5Nyw3ICs3NDAyLDYgQEAKIAkJ
CQkwRkYyQ0Q1QzFCNjFBNEY4MDA0OTU1QTggLyogREZHTXVsdGlHZXRCeU9mZnNldERhdGEuaCBp
biBIZWFkZXJzICovLAogCQkJCUE3Mzc4MTBFMTc5OUVBMkUwMDgxNzUzMyAvKiBERkdOYXR1cmFs
TG9vcHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2RUNBM0VBMTMyREVGMUMwMDJCMkFENyAvKiBE
RkdOb2RlLmggaW4gSGVhZGVycyAqLywKLQkJCQk3MEI3OTE5MzFDMDI0QTI4MDAyNDgxRTIgLyog
R2VuZXJhdG9yRnJhbWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQTU4MUJCMTUwRTk1MzAwMEI5
QTJEOSAvKiBERkdOb2RlRmxhZ3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMzAwQjc4MThBQjA1
MTEwMEE2RDcyRSAvKiBERkdOb2RlT3JpZ2luLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkE1ODFC
QzE1MEU5NTMwMDBCOUEyRDkgLyogREZHTm9kZVR5cGUuaCBpbiBIZWFkZXJzICovLApAQCAtNzQx
Miw2ICs3NDE2LDcgQEAKIAkJCQkwRkQ4QTMyNjE3RDUxRjU3MDBDQTJDNDAgLyogREZHT1NSRW50
cnlwb2ludENyZWF0aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQzA5NzZBMTQ2OEE2
RjcwMENGMjQ0MiAvKiBERkdPU1JFeGl0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjIzNUJFQzE3
MTc4RTczMDA2OTBDN0YgLyogREZHT1NSRXhpdEJhc2UuaCBpbiBIZWFkZXJzICovLAorCQkJCUUz
OUQ0NUY1MUQzOTAwNTYwMEIzQjM3NyAvKiBJbnRlcnByZXRlcklubGluZXMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGRkI5MjFDMTZEMDJGMTEwMDU1QTVEQiAvKiBERkdPU1JFeGl0Q29tcGlsYXRp
b25JbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkMwOTc3MTE0NjkzQUY1MDBDRjI0NDIgLyog
REZHT1NSRXhpdENvbXBpbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjcwMjVBQTE3MTRCMEZD
MDAzODJDMEUgLyogREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmggaW4gSGVhZGVycyAqLywKQEAg
LTc2NzIsNiArNzY3Nyw3IEBACiAJCQkJRTMzQjNFMjYxQjdBQkQ3NTAwNDhEQjJFIC8qIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5sdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1MzI0
MzhDMTg1NjgzMzUwMDJFRDY5MiAvKiBJbnNwZWN0b3JQcm90b2NvbE9iamVjdHMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUE1NUQ5M0FDMTg1MTRGNzkwMDQwMERFRCAvKiBJbnNwZWN0b3JQcm90b2Nv
bFR5cGVzLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzI4REFFQjFEMzhEMDA1MDAxQTI1MjkgLyog
Qnl0ZWNvZGVNb2RpZmljYXRpb25TZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1MEU0QjYyMTg4
MDlERDUwMDY4QTQ2RCAvKiBJbnNwZWN0b3JSdW50aW1lQWdlbnQuaCBpbiBIZWFkZXJzICovLAog
CQkJCUE1OTNDRjgzMTg0MDM3NzEwMEJGQ0UyNyAvKiBJbnNwZWN0b3JWYWx1ZXMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTk2OUEwNzk5MEVEMUQzQUUwMEYxRjY4MSAvKiBJbnN0cnVjdGlvbi5oIGlu
IEhlYWRlcnMgKi8sCkBAIC03ODAyLDYgKzc4MDgsNyBAQAogCQkJCUUzM0Y1MDgxMUI4NDI5QTQw
MDQxMzg1NiAvKiBKU0ludGVybmFsUHJvbWlzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY2MTgz
MkExQzQ1QkYwNzAwNzI0NTBCIC8qIEFpckNDYWxsaW5nQ29udmVudGlvbi5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJRTMzRjUwNzkxQjg0MjI1NzAwNDEzODU2IC8qIEpTSW50ZXJuYWxQcm9taXNlQ29u
c3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzMjhEQUU5MUQzOEQwMDUwMDFBMjUyOSAv
KiBCeXRlY29kZUdyYXBoLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMzNGNTA4NzFCODQ0OUVGMDA0
MTM4NTYgLyogSlNJbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvci5sdXQuaCBpbiBIZWFkZXJzICov
LAogCQkJCUUzM0Y1MDg1MUI4NDM3QTAwMDQxMzg1NiAvKiBKU0ludGVybmFsUHJvbWlzZURlZmVy
cmVkLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMzNGNTA3NTFCODQyMUMwMDA0MTM4NTYgLyogSlNJ
bnRlcm5hbFByb21pc2VQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLApAQCAtODc2NCw2ICs4Nzcx
LDcgQEAKIAkJCQkxNDdGMzlCRDEwN0VDMzc2MDA0MjdBNDggLyogQXJnTGlzdC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkwRjc0M0JBQTE2Qjg4MjQ5MDA5RjkyNzcgLyogQVJNNjREaXNhc3NlbWJs
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODZEM0IyQzMxMDE1NkJERTAwMjg2NUU3IC8qIEFS
TUFzc2VtYmxlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFMzI4REFFNzFEMzhEMDA0MDAxQTI1
MjkgLyogQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NjVDMDI4NTAxNzE3OTVFMjAwMzUxRTM1IC8qIEFSTXY3RGlzYXNzZW1ibGVyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTY1QzAyODVDMTcxNzk2NjgwMDM1MUUzNSAvKiBBUk12N0RPcGNvZGUuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMEY4MzM1QjcxNjM5QzFFNjAwMTQ0M0I1IC8qIEFycmF5QWxs
b2NhdGlvblByb2ZpbGUuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC05MDk3LDYgKzkxMDUsNyBAQAog
CQkJCTBGMjVGMUIxMTgxNjM1RjMwMDUyMkYzOSAvKiBGVExTbG93UGF0aENhbGwuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEYzMzhERjExQkU5M0FEMTAwMTNDODhGIC8qIEIzU3RhY2ttYXBWYWx1
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjI1RjFCMzE4MTYzNUYzMDA1MjJGMzkgLyogRlRM
U2xvd1BhdGhDYWxsS2V5LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUUzMjhEQUVBMUQzOEQwMDUw
MDFBMjUyOSAvKiBCeXRlY29kZU1vZGlmaWNhdGlvblNldC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk0MzE5REEwMzFDMUJFNDBBMDAxRDI2MEIgLyogQjNMb3dlck1hY3Jvc0FmdGVyT3B0aW1pemF0
aW9ucy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkVBMEExNjE3MDZCQjkwMDBCQjcyMkMgLyog
RlRMU3RhdGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyMzVCRTExNzE3OEUxQzAwNjkwQzdG
IC8qIEZUTFRodW5rcy5jcHAgaW4gU291cmNlcyAqLywKQEAgLTk1MDQsNyArOTUxMyw2IEBACiAJ
CQkJNzlFRTBCRkYxQjRBRkI4NTAwMDM4NUM5IC8qIFZhcmlhYmxlRW52aXJvbm1lbnQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMEY2QzczNTAxQUM5Rjk5RjAwQkUxNjgyIC8qIFZhcmlhYmxlV3Jp
dGVGaXJlRGV0YWlsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRTA1MDJDMUFBOTA5NTYwMEQz
M0IzMyAvKiBWYXJPZmZzZXQuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNzBCNzkxOTIxQzAyNEEy
MzAwMjQ4MUUyIC8qIEdlbmVyYXRvckZyYW1lLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMjBD
MjU5MUE4MDEzQUIwMERBMzIyOSAvKiBWaXJ0dWFsUmVnaXN0ZXIuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJRTE4RTNBNTkwREY5Mjc4QzAwRDkwQjM0IC8qIFZNLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUZFNTkzMkE3MTgzQzVBMjYwMEExRUNDQyAvKiBWTUVudHJ5U2NvcGUuY3BwIGluIFNvdXJj
ZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNCYXNpY0Jsb2Nr
VXRpbHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0Jhc2ljQmxvY2tVdGlscy5oCmlu
ZGV4IDRhNzE3Njc4NzhjNmViMzcyMzA1MGRlOTIxOTVlZGVhNTg1MDE5ZjcuLjMyYTU5ZmMxMjBj
Yjg0MGZhYmEwNmIxZjdkMWQ3YjFiNWE5YWFkOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM0Jhc2ljQmxvY2tVdGlscy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM0Jhc2ljQmxvY2tVdGlscy5oCkBAIC0yOCw4ICsyOCw4IEBACiAKICNpZiBFTkFCTEUo
QjNfSklUKQogCi0jaW5jbHVkZSAiQjNJbmRleFNldC5oIgogI2luY2x1ZGUgPHd0Zi9HcmFwaE5v
ZGVXb3JrbGlzdC5oPgorI2luY2x1ZGUgPHd0Zi9JbmRleFNldC5oPgogI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNCbG9ja1dvcmtsaXN0LmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNCbG9ja1dvcmtsaXN0LmgKaW5kZXggYWY3ZWUyYzk2YmM5ODg4OWJkMGQ3
OGIxNmU2Mjc4ZDU3M2NmNjIyMS4uOWU2YmU0YmI5ZjcwMTkyMjNlMTVlMmFjNDljOGY2ZGUxNmM4
ODk2NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQmxvY2tXb3JrbGlz
dC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0Jsb2NrV29ya2xpc3QuaApAQCAt
MjgsMTMgKzI4LDE0IEBACiAKICNpZiBFTkFCTEUoQjNfSklUKQogCi0jaW5jbHVkZSAiQjNCYXNp
Y0Jsb2NrLmgiCi0jaW5jbHVkZSAiQjNJbmRleFNldC5oIgogI2luY2x1ZGUgPHd0Zi9HcmFwaE5v
ZGVXb3JrbGlzdC5oPgorI2luY2x1ZGUgPHd0Zi9JbmRleFNldC5oPgogI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CiAKK2NsYXNzIEJhc2lj
QmxvY2s7CisKIHR5cGVkZWYgR3JhcGhOb2RlV29ya2xpc3Q8QmFzaWNCbG9jayosIEluZGV4U2V0
PEJhc2ljQmxvY2s+PiBCbG9ja1dvcmtsaXN0OwogCiAvLyBXaGVuIHlvdSBzYXkgQmxvY2tXaXRo
PGludD4geW91IHNob3VsZCByZWFkIGl0IGFzICJibG9jayB3aXRoIGFuIGludCIuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDRkcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM0NGRy5oCmluZGV4IDU4YzQwYjFiYmFmNzdkZGVmYTFkMjA2M2Y5M2U1ODk0NTkx
ZDE3YjMuLjkwNGFiM2Y5YTM2MGMyOTk1NjIwYTAwMmZhYTdjMTVkZTIyNWVhYTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NGRy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM0NGRy5oCkBAIC0yOSw5ICsyOSw5IEBACiAjaWYgRU5BQkxFKEIzX0pJVCkK
IAogI2luY2x1ZGUgIkIzQmFzaWNCbG9jay5oIgotI2luY2x1ZGUgIkIzSW5kZXhNYXAuaCIKLSNp
bmNsdWRlICJCM0luZGV4U2V0LmgiCiAjaW5jbHVkZSAiQjNQcm9jZWR1cmUuaCIKKyNpbmNsdWRl
IDx3dGYvSW5kZXhNYXAuaD4KKyNpbmNsdWRlIDx3dGYvSW5kZXhTZXQuaD4KIAogbmFtZXNwYWNl
IEpTQyB7IG5hbWVzcGFjZSBCMyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM0R1cGxpY2F0ZVRhaWxzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0R1
cGxpY2F0ZVRhaWxzLmNwcAppbmRleCA4YTg0MzRiMjZjZGYwOTI1OWUxMzYzNjBjYTI3MGY2MmNh
MTg4MzY4Li45NTQ5MmJjZTY3NTFjNWMxNzBiZDJlMmI5YTlkZDQ3NDVkOWQyM2NlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNEdXBsaWNhdGVUYWlscy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRHVwbGljYXRlVGFpbHMuY3BwCkBAIC0zMiwxMyAr
MzIsMTMgQEAKICNpbmNsdWRlICJCM0JyZWFrQ3JpdGljYWxFZGdlcy5oIgogI2luY2x1ZGUgIkIz
RG9taW5hdG9ycy5oIgogI2luY2x1ZGUgIkIzRml4U1NBLmgiCi0jaW5jbHVkZSAiQjNJbmRleFNl
dC5oIgogI2luY2x1ZGUgIkIzSW5zZXJ0aW9uU2V0SW5saW5lcy5oIgogI2luY2x1ZGUgIkIzUGhh
c2VTY29wZS5oIgogI2luY2x1ZGUgIkIzUHJvY2VkdXJlSW5saW5lcy5oIgogI2luY2x1ZGUgIkIz
U3dpdGNoVmFsdWUuaCIKICNpbmNsdWRlICJCM1Vwc2lsb25WYWx1ZS5oIgogI2luY2x1ZGUgIkIz
VmFsdWVJbmxpbmVzLmgiCisjaW5jbHVkZSA8d3RmL0luZGV4U2V0Lmg+CiAKIG5hbWVzcGFjZSBK
U0MgeyBuYW1lc3BhY2UgQjMgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNGaXhTU0EuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRml4U1NBLmNwcApp
bmRleCBmNGIwMTIyYzRkZWNkZTk1YzNkYjJkODI0MWY2OTI4MmQ1YmEzOTZhLi43MzBjMmM4NzY2
YzY1NjU0NmI0ODc0NmUxMjUwM2NkMzU5MzI0ZjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNGaXhTU0EuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M0ZpeFNTQS5jcHAKQEAgLTMxLDcgKzMxLDYgQEAKICNpbmNsdWRlICJCM0Jhc2ljQmxvY2tJbmxp
bmVzLmgiCiAjaW5jbHVkZSAiQjNCcmVha0NyaXRpY2FsRWRnZXMuaCIKICNpbmNsdWRlICJCM0Rv
bWluYXRvcnMuaCIKLSNpbmNsdWRlICJCM0luZGV4U2V0LmgiCiAjaW5jbHVkZSAiQjNJbnNlcnRp
b25TZXRJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQjNQaGFzZVNjb3BlLmgiCiAjaW5jbHVkZSAiQjNQ
cm9jZWR1cmVJbmxpbmVzLmgiCkBAIC00MSw2ICs0MCw3IEBACiAjaW5jbHVkZSAiQjNWYXJpYWJs
ZS5oIgogI2luY2x1ZGUgIkIzVmFyaWFibGVWYWx1ZS5oIgogI2luY2x1ZGUgPHd0Zi9Db21tYVBy
aW50ZXIuaD4KKyNpbmNsdWRlIDx3dGYvSW5kZXhTZXQuaD4KIAogbmFtZXNwYWNlIEpTQyB7IG5h
bWVzcGFjZSBCMyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0Zp
eFNTQS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRml4U1NBLmgKaW5kZXggNDVkNWZm
Y2MyOTFiYjM0ZGEzZTNkYzJmZTlmYTZmMDVkMzNhMTNjZS4uODg1OTI3NmUyZDkyNmRmMzEwMjA2
MDc3ZWE3NWIyMGFhNzQ4OGE0MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzRml4U1NBLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRml4U1NBLmgKQEAg
LTI4LDggKzI4LDggQEAKIAogI2lmIEVOQUJMRShCM19KSVQpCiAKLSNpbmNsdWRlICJCM0luZGV4
U2V0LmgiCiAjaW5jbHVkZSAiQjNWYWx1ZS5oIgorI2luY2x1ZGUgPHd0Zi9JbmRleFNldC5oPgog
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNJbmRleE1hcC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzSW5kZXhNYXAuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMmFhMzM5ZjA5ZGU0MmMwYjRkNTliZDZhZjJlOTgyNjRmYmMxMWI2MS4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNJbmRleE1hcC5oCisrKyAvZGV2L251bGwKQEAgLTEsODcgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQot
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpZm5kZWYg
QjNJbmRleE1hcF9oCi0jZGVmaW5lIEIzSW5kZXhNYXBfaAotCi0jaWYgRU5BQkxFKEIzX0pJVCkK
LQotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBC
MyB7Ci0KLS8vIFRoaXMgaXMgYSBtYXAgZm9yIGtleXMgdGhhdCBoYXZlIGFuIGluZGV4KCkuIEl0
J3Mgc3VwZXIgZWZmaWNpZW50IGZvciBCYXNpY0Jsb2Nrcy4gSXQncyBvbmx5Ci0vLyBlZmZpY2ll
bnQgZm9yIFZhbHVlcyBpZiB5b3UgZG9uJ3QgY3JlYXRlIHRvbyBtYW55IG9mIHRoZXNlIG1hcHMs
IHNpbmNlIFZhbHVlcyBjYW4gaGF2ZSB2ZXJ5Ci0vLyBzcGFyc2UgaW5kaWNlcyBhbmQgdGhlcmUg
YXJlIGEgbG90IG9mIFZhbHVlcy4KLQotdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBW
YWx1ZT4KLWNsYXNzIEluZGV4TWFwIHsKLXB1YmxpYzoKLSAgICBleHBsaWNpdCBJbmRleE1hcChz
aXplX3Qgc2l6ZSA9IDApCi0gICAgewotICAgICAgICBtX3ZlY3Rvci5maWxsKFZhbHVlKCksIHNp
emUpOwotICAgIH0KLQotICAgIHZvaWQgcmVzaXplKHNpemVfdCBzaXplKQotICAgIHsKLSAgICAg
ICAgbV92ZWN0b3IuZmlsbChWYWx1ZSgpLCBzaXplKTsKLSAgICB9Ci0KLSAgICB2b2lkIGNsZWFy
KCkKLSAgICB7Ci0gICAgICAgIG1fdmVjdG9yLmZpbGwoVmFsdWUoKSwgbV92ZWN0b3Iuc2l6ZSgp
KTsKLSAgICB9Ci0KLSAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmVjdG9yLnNp
emUoKTsgfQotCi0gICAgVmFsdWUmIG9wZXJhdG9yW10oc2l6ZV90IGluZGV4KQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIG1fdmVjdG9yW2luZGV4XTsKLSAgICB9Ci0KLSAgICBjb25zdCBWYWx1ZSYg
b3BlcmF0b3JbXShzaXplX3QgaW5kZXgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV92
ZWN0b3JbaW5kZXhdOwotICAgIH0KLSAgICAKLSAgICBWYWx1ZSYgb3BlcmF0b3JbXShLZXkqIGtl
eSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX3ZlY3RvcltrZXktPmluZGV4KCldOwotICAgIH0K
LSAgICAKLSAgICBjb25zdCBWYWx1ZSYgb3BlcmF0b3JbXShLZXkqIGtleSkgY29uc3QKLSAgICB7
Ci0gICAgICAgIHJldHVybiBtX3ZlY3RvcltrZXktPmluZGV4KCldOwotICAgIH0KLQotcHJpdmF0
ZToKLSAgICBWZWN0b3I8VmFsdWU+IG1fdmVjdG9yOwotfTsKLQotfSB9IC8vIG5hbWVzcGFjZSBK
U0M6OkIzCi0KLSNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQotCi0jZW5kaWYgLy8gQjNJbmRleE1h
cF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNJbmRleFNldC5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzSW5kZXhTZXQuaApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggYWI5YjJiNGUzNGJmNDM4MDA3YWQyMTdjYjVjN2EzZWE5NGNiOWE0Ni4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNJbmRleFNldC5oCisrKyAvZGV2L251bGwKQEAgLTEsMTY1ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgot
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZu
ZGVmIEIzSW5kZXhTZXRfaAotI2RlZmluZSBCM0luZGV4U2V0X2gKLQotI2luY2x1ZGUgPHd0Zi9C
aXRWZWN0b3IuaD4KLSNpbmNsdWRlIDx3dGYvQ29tbWFQcmludGVyLmg+Ci0KLW5hbWVzcGFjZSBK
U0MgeyBuYW1lc3BhY2UgQjMgewotCi0vLyBUaGlzIGlzIGEgc2V0IGZvciB0aGluZ3MgdGhhdCBo
YXZlIGFuIGluZGV4KCkuIEl0J3Mgc3VwZXIgZWZmaWNpZW50IGZvciBCYXNpY0Jsb2Nrcy4gSXQn
cyBvbmx5Ci0vLyBlZmZpY2llbnQgZm9yIFZhbHVlcyBpZiB5b3UgZG9uJ3QgY3JlYXRlIHRvbyBt
YW55IG9mIHRoZXNlIHNldHMsIHNpbmNlIFZhbHVlcyBjYW4gaGF2ZSB2ZXJ5IHNwYXJzZQotLy8g
aW5kaWNlcyBhbmQgdGhlcmUgYXJlIGEgbG90IG9mIFZhbHVlcy4KLQotLy8gSWYgeW91IHdhbnQg
YSBzZXQgb2YgQmFzaWNCbG9ja3MsIHlvdSBkbyBJbmRleFNldDxCYXNpY0Jsb2NrPi4gU28sIFQg
PSBCYXNpY0Jsb2NrLgotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWNsYXNzIEluZGV4U2V0IHsKLXB1
YmxpYzoKLSAgICBJbmRleFNldCgpCi0gICAgewotICAgIH0KLQotICAgIGJvb2wgYWRkKFQqIHZh
bHVlKQotICAgIHsKLSAgICAgICAgcmV0dXJuICFtX3NldC5zZXQodmFsdWUtPmluZGV4KCkpOwot
ICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEl0ZXJhYmxlPgotICAgIGJvb2wgYWRkQWxs
KGNvbnN0IEl0ZXJhYmxlJiBpdGVyYWJsZSkKLSAgICB7Ci0gICAgICAgIGJvb2wgcmVzdWx0ID0g
ZmFsc2U7Ci0gICAgICAgIGZvciAoVCogdmFsdWUgOiBpdGVyYWJsZSkKLSAgICAgICAgICAgIHJl
c3VsdCB8PSBhZGQodmFsdWUpOwotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLQotICAg
IGJvb2wgcmVtb3ZlKFQqIHZhbHVlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fc2V0LmNsZWFy
KHZhbHVlLT5pbmRleCgpKTsKLSAgICB9Ci0KLSAgICBib29sIGNvbnRhaW5zKFQqIHZhbHVlKSBj
b25zdAotICAgIHsKLSAgICAgICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAgICAgcmV0dXJuIG1fc2V0LmdldCh2YWx1ZS0+aW5kZXgoKSk7Ci0gICAgfQotCi0g
ICAgc2l6ZV90IHNpemUoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fc2V0LmJpdENv
dW50KCk7Ci0gICAgfQotCi0gICAgYm9vbCBpc0VtcHR5KCkgY29uc3QKLSAgICB7Ci0gICAgICAg
IHJldHVybiAhc2l6ZSgpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENvbGxlY3Rp
b25UeXBlPgotICAgIGNsYXNzIEl0ZXJhYmxlIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIEl0ZXJh
YmxlKGNvbnN0IENvbGxlY3Rpb25UeXBlJiBjb2xsZWN0aW9uLCBjb25zdCBCaXRWZWN0b3ImIHNl
dCkKLSAgICAgICAgICAgIDogbV9jb2xsZWN0aW9uKGNvbGxlY3Rpb24pCi0gICAgICAgICAgICAs
IG1fc2V0KHNldCkKLSAgICAgICAgewotICAgICAgICB9Ci0KLSAgICAgICAgY2xhc3MgaXRlcmF0
b3IgewotICAgICAgICBwdWJsaWM6Ci0gICAgICAgICAgICBpdGVyYXRvcigpCi0gICAgICAgICAg
ICAgICAgOiBtX2NvbGxlY3Rpb24obnVsbHB0cikKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAg
IH0KLQotICAgICAgICAgICAgaXRlcmF0b3IoY29uc3QgQ29sbGVjdGlvblR5cGUmIGNvbGxlY3Rp
b24sIEJpdFZlY3Rvcjo6aXRlcmF0b3IgaXRlcikKLSAgICAgICAgICAgICAgICA6IG1fY29sbGVj
dGlvbigmY29sbGVjdGlvbikKLSAgICAgICAgICAgICAgICAsIG1faXRlcihpdGVyKQotICAgICAg
ICAgICAgewotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBUKiBvcGVyYXRvciooKQotICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiBtX2NvbGxlY3Rpb24tPmF0KCptX2l0
ZXIpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpdGVyYXRvciYgb3BlcmF0b3IrKygp
Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgKyttX2l0ZXI7Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuICp0aGlzOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBib29sIG9wZXJh
dG9yPT0oY29uc3QgaXRlcmF0b3ImIG90aGVyKSBjb25zdAotICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgIHJldHVybiBtX2l0ZXIgPT0gb3RoZXIubV9pdGVyOwotICAgICAgICAgICAgfQot
Ci0gICAgICAgICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgaXRlcmF0b3ImIG90aGVyKSBjb25z
dAotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVy
KTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICBwcml2YXRlOgotICAgICAgICAgICAgY29uc3Qg
Q29sbGVjdGlvblR5cGUqIG1fY29sbGVjdGlvbjsKLSAgICAgICAgICAgIEJpdFZlY3Rvcjo6aXRl
cmF0b3IgbV9pdGVyOwotICAgICAgICB9OwotCi0gICAgICAgIGl0ZXJhdG9yIGJlZ2luKCkgY29u
c3QgeyByZXR1cm4gaXRlcmF0b3IobV9jb2xsZWN0aW9uLCBtX3NldC5iZWdpbigpKTsgfQotICAg
ICAgICBpdGVyYXRvciBlbmQoKSBjb25zdCB7IHJldHVybiBpdGVyYXRvcihtX2NvbGxlY3Rpb24s
IG1fc2V0LmVuZCgpKTsgfQotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgY29uc3QgQ29sbGVjdGlv
blR5cGUmIG1fY29sbGVjdGlvbjsKLSAgICAgICAgY29uc3QgQml0VmVjdG9yJiBtX3NldDsKLSAg
ICB9OwotCi0gICAgLy8gRm9yIGJhc2ljIGJsb2NrcywgeW91IGRvOgotICAgIC8vIGluZGV4U2V0
LnZhbHVlcyhwcm9jZWR1cmUpOwotICAgIC8vCi0gICAgLy8gRm9yIHZhbHVlcywgeW91IGRvOgot
ICAgIC8vIGluZGV4U2V0LnZhbHVlcyhwcm9jZWR1cmUudmFsdWVzKCkpOwotICAgIHRlbXBsYXRl
PHR5cGVuYW1lIENvbGxlY3Rpb25UeXBlPgotICAgIEl0ZXJhYmxlPENvbGxlY3Rpb25UeXBlPiB2
YWx1ZXMoY29uc3QgQ29sbGVjdGlvblR5cGUmIGNvbGxlY3Rpb24pIGNvbnN0Ci0gICAgewotICAg
ICAgICByZXR1cm4gSXRlcmFibGU8Q29sbGVjdGlvblR5cGU+KGNvbGxlY3Rpb24sIGluZGljZXMo
KSk7Ci0gICAgfQotCi0gICAgY29uc3QgQml0VmVjdG9yJiBpbmRpY2VzKCkgY29uc3QgeyByZXR1
cm4gbV9zZXQ7IH0KLQotICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAotICAg
IHsKLSAgICAgICAgQ29tbWFQcmludGVyIGNvbW1hOwotICAgICAgICBmb3IgKHNpemVfdCBpbmRl
eCA6IGluZGljZXMoKSkKLSAgICAgICAgICAgIG91dC5wcmludChjb21tYSwgVDo6ZHVtcFByZWZp
eCwgaW5kZXgpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBCaXRWZWN0b3IgbV9zZXQ7Ci19Owot
Ci19IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKLQotI2VuZGlmIC8vIEIzSW5kZXhTZXRfaAotCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCmluZGV4IGUyNDcwNDNiNjc4
YjIwODNmMTIyNzIzMzk5NTUwNGQ4ZDUzOWFlMDUuLjk0MmUyOGYzNGU2N2IzYWE4YTUzNmNjMmEx
ODlhMGVhY2E4ZjZmZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xv
d2VyVG9BaXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIu
Y3BwCkBAIC00MCw4ICs0MCw2IEBACiAjaW5jbHVkZSAiQjNDaGVja1NwZWNpYWwuaCIKICNpbmNs
dWRlICJCM0NvbW11dGF0aXZpdHkuaCIKICNpbmNsdWRlICJCM0RvbWluYXRvcnMuaCIKLSNpbmNs
dWRlICJCM0luZGV4TWFwLmgiCi0jaW5jbHVkZSAiQjNJbmRleFNldC5oIgogI2luY2x1ZGUgIkIz
TWVtb3J5VmFsdWUuaCIKICNpbmNsdWRlICJCM1BhdGNocG9pbnRTcGVjaWFsLmgiCiAjaW5jbHVk
ZSAiQjNQYXRjaHBvaW50VmFsdWUuaCIKQEAgLTU1LDYgKzUzLDggQEAKICNpbmNsdWRlICJCM1Zh
bHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkIzVmFyaWFibGUuaCIKICNpbmNsdWRlICJCM1Zhcmlh
YmxlVmFsdWUuaCIKKyNpbmNsdWRlIDx3dGYvSW5kZXhNYXAuaD4KKyNpbmNsdWRlIDx3dGYvSW5k
ZXhTZXQuaD4KICNpbmNsdWRlIDx3dGYvTGlzdER1bXAuaD4KIAogI2lmIENPTVBJTEVSKEdDQykg
JiYgQVNTRVJUX0RJU0FCTEVECmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNQaGlDaGlsZHJlbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUGhpQ2hpbGRyZW4u
aAppbmRleCBjZGYzNjhmMjRhYTZlNWE1ODM5ZjNmYWE2NWRmMDlkYTA2MzQ1Y2U3Li5lMTFmY2Jl
Yjg5NjUwMWM2NmFkM2FjYzM3ZDIwMWIwMTZlNTUwZmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNQaGlDaGlsZHJlbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM1BoaUNoaWxkcmVuLmgKQEAgLTI4LDEwICsyOCwxMCBAQAogCiAjaWYgRU5BQkxFKEIz
X0pJVCkKIAotI2luY2x1ZGUgIkIzSW5kZXhNYXAuaCIKICNpbmNsdWRlICJCM1Byb2NlZHVyZS5o
IgogI2luY2x1ZGUgIkIzVXBzaWxvblZhbHVlLmgiCiAjaW5jbHVkZSA8d3RmL0dyYXBoTm9kZVdv
cmtsaXN0Lmg+CisjaW5jbHVkZSA8d3RmL0luZGV4TWFwLmg+CiAKIG5hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgQjMgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQ
cm9jZWR1cmUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Byb2NlZHVyZS5oCmluZGV4
IDU3NjQxM2UxMDkwYTg0NzdlMzRkNDIzNThjNjk4NDY1YzFhZDU5MWQuLmUyZTEzNGRhYmVjZDAz
NzQ5ZmU3YTk3ZjQ4OGJlOGZhMGJjYzQ4ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM1Byb2NlZHVyZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1By
b2NlZHVyZS5oCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSA8d3RmL0JhZy5oPgogI2luY2x1
ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRl
IDx3dGYvSW5kZXhlZENvbnRhaW5lckl0ZXJhdG9yLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlh
YmxlLmg+CiAjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CiAjaW5jbHVkZSA8d3RmL1NoYXJl
ZFRhc2suaD4KQEAgLTEzMyw1MyArMTM0LDcgQEAgY2xhc3MgUHJvY2VkdXJlIHsKICAgICBCYXNp
Y0Jsb2NrKiBhdCh1bnNpZ25lZCBpbmRleCkgY29uc3QgeyByZXR1cm4gbV9ibG9ja3NbaW5kZXhd
LmdldCgpOyB9CiAgICAgQmFzaWNCbG9jayogb3BlcmF0b3JbXSh1bnNpZ25lZCBpbmRleCkgY29u
c3QgeyByZXR1cm4gYXQoaW5kZXgpOyB9CiAKLSAgICBjbGFzcyBpdGVyYXRvciB7Ci0gICAgcHVi
bGljOgotICAgICAgICBpdGVyYXRvcigpCi0gICAgICAgICAgICA6IG1fcHJvY2VkdXJlKG51bGxw
dHIpCi0gICAgICAgICAgICAsIG1faW5kZXgoMCkKLSAgICAgICAgewotICAgICAgICB9Ci0KLSAg
ICAgICAgaXRlcmF0b3IoY29uc3QgUHJvY2VkdXJlJiBwcm9jZWR1cmUsIHVuc2lnbmVkIGluZGV4
KQotICAgICAgICAgICAgOiBtX3Byb2NlZHVyZSgmcHJvY2VkdXJlKQotICAgICAgICAgICAgLCBt
X2luZGV4KGZpbmROZXh0KGluZGV4KSkKLSAgICAgICAgewotICAgICAgICB9Ci0KLSAgICAgICAg
QmFzaWNCbG9jayogb3BlcmF0b3IqKCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG1f
cHJvY2VkdXJlLT5hdChtX2luZGV4KTsKLSAgICAgICAgfQotCi0gICAgICAgIGl0ZXJhdG9yJiBv
cGVyYXRvcisrKCkKLSAgICAgICAgewotICAgICAgICAgICAgbV9pbmRleCA9IGZpbmROZXh0KG1f
aW5kZXggKyAxKTsKLSAgICAgICAgICAgIHJldHVybiAqdGhpczsKLSAgICAgICAgfQotCi0gICAg
ICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBpdGVyYXRvciYgb3RoZXIpIGNvbnN0Ci0gICAgICAg
IHsKLSAgICAgICAgICAgIEFTU0VSVChtX3Byb2NlZHVyZSA9PSBvdGhlci5tX3Byb2NlZHVyZSk7
Ci0gICAgICAgICAgICByZXR1cm4gbV9pbmRleCA9PSBvdGhlci5tX2luZGV4OwotICAgICAgICB9
Ci0gICAgICAgIAotICAgICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgaXRlcmF0b3ImIG90aGVy
KSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7
Ci0gICAgICAgIH0KLQotICAgIHByaXZhdGU6Ci0gICAgICAgIHVuc2lnbmVkIGZpbmROZXh0KHVu
c2lnbmVkIGluZGV4KQotICAgICAgICB7Ci0gICAgICAgICAgICB3aGlsZSAoaW5kZXggPCBtX3By
b2NlZHVyZS0+c2l6ZSgpICYmICFtX3Byb2NlZHVyZS0+YXQoaW5kZXgpKQotICAgICAgICAgICAg
ICAgIGluZGV4Kys7Ci0gICAgICAgICAgICByZXR1cm4gaW5kZXg7Ci0gICAgICAgIH0KLQotICAg
ICAgICBjb25zdCBQcm9jZWR1cmUqIG1fcHJvY2VkdXJlOwotICAgICAgICB1bnNpZ25lZCBtX2lu
ZGV4OwotICAgIH07CisgICAgdHlwZWRlZiBXVEY6OkluZGV4ZWRDb250YWluZXJJdGVyYXRvcjxQ
cm9jZWR1cmU+IGl0ZXJhdG9yOwogCiAgICAgaXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVy
biBpdGVyYXRvcigqdGhpcywgMCk7IH0KICAgICBpdGVyYXRvciBlbmQoKSBjb25zdCB7IHJldHVy
biBpdGVyYXRvcigqdGhpcywgc2l6ZSgpKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzUmVkdWNlRG91YmxlVG9GbG9hdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNSZWR1Y2VEb3VibGVUb0Zsb2F0LmNwcAppbmRleCA0YzcyMWM4MjA2NDMxN2E2NDYy
MWFlOTdmOTg5ODg1OTkyNTQxYWQzLi5mYzRmNTIyMjA4Yzk5YzYyYzhiNGVlMzlmMjc5YzFjNDZj
NGY1NjU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNSZWR1Y2VEb3Vi
bGVUb0Zsb2F0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNSZWR1Y2VEb3Vi
bGVUb0Zsb2F0LmNwcApAQCAtMjksMTEgKzI5LDExIEBACiAjaWYgRU5BQkxFKEIzX0pJVCkKIAog
I2luY2x1ZGUgIkIzQmFzaWNCbG9jay5oIgotI2luY2x1ZGUgIkIzSW5kZXhTZXQuaCIKICNpbmNs
dWRlICJCM0luc2VydGlvblNldElubGluZXMuaCIKICNpbmNsdWRlICJCM1BoYXNlU2NvcGUuaCIK
ICNpbmNsdWRlICJCM1VzZUNvdW50cy5oIgogI2luY2x1ZGUgIkIzVmFsdWVJbmxpbmVzLmgiCisj
aW5jbHVkZSA8d3RmL0luZGV4U2V0Lmg+CiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMg
ewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNSZWR1Y2VTdHJlbmd0
aC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNSZWR1Y2VTdHJlbmd0aC5jcHAKaW5k
ZXggNGNiZjI1Mjg4NmI5N2NjYmZiMzc2NDA1N2Y5ZjYwNDJjNmExZTVhMC4uMGJkMWVhMGI0OGNl
MTlhNjBiZWY3MjZkYmU5ODg1MDNlOTQ4Y2QwNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzUmVkdWNlU3RyZW5ndGguY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM1JlZHVjZVN0cmVuZ3RoLmNwcApAQCAtMzIsNyArMzIsNiBAQAogI2luY2x1ZGUgIkIz
QmxvY2tJbnNlcnRpb25TZXQuaCIKICNpbmNsdWRlICJCM0NvbXB1dGVEaXZpc2lvbk1hZ2ljLmgi
CiAjaW5jbHVkZSAiQjNEb21pbmF0b3JzLmgiCi0jaW5jbHVkZSAiQjNJbmRleFNldC5oIgogI2lu
Y2x1ZGUgIkIzSW5zZXJ0aW9uU2V0SW5saW5lcy5oIgogI2luY2x1ZGUgIkIzTWVtb3J5VmFsdWUu
aCIKICNpbmNsdWRlICJCM1BoYXNlU2NvcGUuaCIKQEAgLTQ4LDYgKzQ3LDcgQEAKICNpbmNsdWRl
ICJCM1ZhcmlhYmxlVmFsdWUuaCIKICNpbmNsdWRlIDx3dGYvR3JhcGhOb2RlV29ya2xpc3QuaD4K
ICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9JbmRleFNldC5oPgogCiBu
YW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzU1NBQ2FsY3VsYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzU1NBQ2FsY3VsYXRvci5oCmluZGV4IGY1NzY2ODIyZjRmZmMzNmJkNmEyMmE5NzcwZjIwMjBk
ZjUxMjQ0NmIuLjFlOTYyODI2MmZmM2ZlZDIyOTAzMWFlYTNkMTdkMGI2ODEyYWZmMzEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1NTQUNhbGN1bGF0b3IuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNTU0FDYWxjdWxhdG9yLmgKQEAgLTI5LDkgKzI5LDkg
QEAKICNpZiBFTkFCTEUoQjNfSklUKQogCiAjaW5jbHVkZSAiQjNEb21pbmF0b3JzLmgiCi0jaW5j
bHVkZSAiQjNJbmRleE1hcC5oIgogI2luY2x1ZGUgIkIzUHJvY2VkdXJlSW5saW5lcy5oIgogI2lu
Y2x1ZGUgPHd0Zi9CYWcuaD4KKyNpbmNsdWRlIDx3dGYvSW5kZXhNYXAuaD4KICNpbmNsdWRlIDx3
dGYvU2VnbWVudGVkVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgewpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVXNlQ291bnRzLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNVc2VDb3VudHMuaAppbmRleCBhNTlkNThhYTQ2YzYyNzI4
NTdlODI5ZDM4YTE0ZWYwODA3YjczN2U5Li42ZTllNDgyYjc5OWQyNDBiMGU2NTk1NmVmNDViYjQ2
ODQzM2ZmZjZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNVc2VDb3Vu
dHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNVc2VDb3VudHMuaApAQCAtMjgs
OCArMjgsOCBAQAogCiAjaWYgRU5BQkxFKEIzX0pJVCkKIAotI2luY2x1ZGUgIkIzSW5kZXhNYXAu
aCIKICNpbmNsdWRlICJCM1ZhbHVlLmgiCisjaW5jbHVkZSA8d3RmL0luZGV4TWFwLmg+CiAKIG5h
bWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvYWlyL0FpckNvZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIv
QWlyQ29kZS5oCmluZGV4IDY0YTc0NWQwMjEwYjZhN2ZjYjdhOTM1MWIxMzBhZTA5YTI2ZDI1MGQu
LmYxOWVmYjI4MDJmNmFkNTU4ZWU4N2JkZTJlNmFiNjI0OGI2MTVhMGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQ29kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9haXIvQWlyQ29kZS5oCkBAIC0zMywxMSArMzMsMTEgQEAKICNpbmNsdWRlICJB
aXJTcGVjaWFsLmgiCiAjaW5jbHVkZSAiQWlyU3RhY2tTbG90LmgiCiAjaW5jbHVkZSAiQWlyVG1w
LmgiCi0jaW5jbHVkZSAiQjNJbmRleE1hcC5oIgogI2luY2x1ZGUgIkIzU3BhcnNlQ29sbGVjdGlv
bi5oIgogI2luY2x1ZGUgIkNDYWxsSGVscGVycy5oIgogI2luY2x1ZGUgIlJlZ2lzdGVyQXRPZmZz
ZXRMaXN0LmgiCiAjaW5jbHVkZSAiU3RhY2tBbGlnbm1lbnQuaCIKKyNpbmNsdWRlIDx3dGYvSW5k
ZXhNYXAuaD4KIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRWxpbWluYXRlRGVhZENvZGUuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJFbGltaW5hdGVEZWFkQ29kZS5jcHAKaW5k
ZXggMzY2M2VhYTk5Nzk2N2Y1N2U0NTFiYjYxYTQ2ZDlhZGMzMDAxM2I3NS4uY2EzNmFmOTNlNzkx
MDc5OWNjN2JkNDgxMWIzMDc0NTY1YzczOGYzMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL2Fpci9BaXJFbGltaW5hdGVEZWFkQ29kZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL2Fpci9BaXJFbGltaW5hdGVEZWFkQ29kZS5jcHAKQEAgLTMxLDcgKzMxLDcg
QEAKICNpbmNsdWRlICJBaXJDb2RlLmgiCiAjaW5jbHVkZSAiQWlySW5zdElubGluZXMuaCIKICNp
bmNsdWRlICJBaXJQaGFzZVNjb3BlLmgiCi0jaW5jbHVkZSAiQjNJbmRleFNldC5oIgorI2luY2x1
ZGUgPHd0Zi9JbmRleFNldC5oPgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsgbmFt
ZXNwYWNlIEFpciB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIv
QWlyRml4T2J2aW91c1NwaWxscy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fp
ckZpeE9idmlvdXNTcGlsbHMuY3BwCmluZGV4IDcxZDk5MGYyMWVmNjQ2MDY0ZDEyOTNmMGRiMGY3
YTFlZDBiMGViYTQuLmJhYmQxNzM1OGJhOGY0OWIzNDRiZTVkYTZmMGNmNmFmMzBiNDU2NzIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRml4T2J2aW91c1NwaWxs
cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJGaXhPYnZpb3VzU3Bp
bGxzLmNwcApAQCAtMzIsNyArMzIsNyBAQAogI2luY2x1ZGUgIkFpckNvZGUuaCIKICNpbmNsdWRl
ICJBaXJJbnN0SW5saW5lcy5oIgogI2luY2x1ZGUgIkFpclBoYXNlU2NvcGUuaCIKLSNpbmNsdWRl
ICJCM0luZGV4TWFwLmgiCisjaW5jbHVkZSA8d3RmL0luZGV4TWFwLmg+CiAjaW5jbHVkZSA8d3Rm
L0xpc3REdW1wLmg+CiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgeyBuYW1lc3BhY2Ug
QWlyIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRml4UGFy
dGlhbFJlZ2lzdGVyU3RhbGxzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWly
Rml4UGFydGlhbFJlZ2lzdGVyU3RhbGxzLmNwcAppbmRleCBlZDdiODBhMGM4YjQ2YWEyNGNiYWM2
ZDk3YmUzOWRhZDZkMjE3Y2ZiLi41Mzk5Nzk5MmQ4NmNiNzIwM2JjMGVjODM0YzBmODZkNGYxNTVj
NDM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckZpeFBhcnRp
YWxSZWdpc3RlclN0YWxscy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9B
aXJGaXhQYXJ0aWFsUmVnaXN0ZXJTdGFsbHMuY3BwCkBAIC0zNCw5ICszNCw5IEBACiAjaW5jbHVk
ZSAiQWlySW5zdC5oIgogI2luY2x1ZGUgIkFpckluc3RJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQWly
UGhhc2VTY29wZS5oIgotI2luY2x1ZGUgIkIzSW5kZXhNYXAuaCIKLSNpbmNsdWRlICJCM0luZGV4
U2V0LmgiCiAjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXIuaCIKKyNpbmNsdWRlIDx3dGYvSW5kZXhN
YXAuaD4KKyNpbmNsdWRlIDx3dGYvSW5kZXhTZXQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgeyBuYW1lc3BhY2UgQWlyIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyR2VuZXJhdGUuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJHZW5lcmF0ZS5jcHAKaW5kZXggNDExODQxMjFj
ODUwYzM3YjUzNjE4ZGZlOGJhMzk0ZjQ0MDdiZGEwMC4uMGExOGFkYTYwY2I2ZDU1MjA5MzI5ZDlj
Njc2ZjdhZTg5ZDJjYjEzNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fp
ci9BaXJHZW5lcmF0ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJH
ZW5lcmF0ZS5jcHAKQEAgLTQ4LDEzICs0OCwxMyBAQAogI2luY2x1ZGUgIkFpclNwaWxsRXZlcnl0
aGluZy5oIgogI2luY2x1ZGUgIkFpclZhbGlkYXRlLmgiCiAjaW5jbHVkZSAiQjNDb21tb24uaCIK
LSNpbmNsdWRlICJCM0luZGV4TWFwLmgiCiAjaW5jbHVkZSAiQjNQcm9jZWR1cmUuaCIKICNpbmNs
dWRlICJCM1RpbWluZ1Njb3BlLmgiCiAjaW5jbHVkZSAiQjNWYWx1ZUlubGluZXMuaCIKICNpbmNs
dWRlICJDQ2FsbEhlbHBlcnMuaCIKICNpbmNsdWRlICJEaXNhbGxvd01hY3JvU2NyYXRjaFJlZ2lz
dGVyVXNhZ2UuaCIKICNpbmNsdWRlICJMaW5rQnVmZmVyLmgiCisjaW5jbHVkZSA8d3RmL0luZGV4
TWFwLmg+CiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgeyBuYW1lc3BhY2UgQWlyIHsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJHZW5lcmF0aW9u
Q29udGV4dC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJHZW5lcmF0aW9uQ29u
dGV4dC5oCmluZGV4IGVjYTkwN2YwMWVkZmNmNTEwNjdkOTg5NWQ5MWQ5YzMxNjJmYTM3ODEuLjdk
YzZlMGQzMjQ0N2RmNmIzNTc2ODVkOTg4MTNmMTkzZWU0MjNlNzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyR2VuZXJhdGlvbkNvbnRleHQuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckdlbmVyYXRpb25Db250ZXh0LmgKQEAgLTI5LDkg
KzI5LDkgQEAKICNpZiBFTkFCTEUoQjNfSklUKQogCiAjaW5jbHVkZSAiQWlyQmFzaWNCbG9jay5o
IgotI2luY2x1ZGUgIkIzSW5kZXhNYXAuaCIKICNpbmNsdWRlICJDQ2FsbEhlbHBlcnMuaCIKICNp
bmNsdWRlIDx3dGYvQm94Lmg+CisjaW5jbHVkZSA8d3RmL0luZGV4TWFwLmg+CiAjaW5jbHVkZSA8
d3RmL1NoYXJlZFRhc2suaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyTGl2ZW5lc3MuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9haXIvQWlyTGl2ZW5lc3MuaAppbmRleCBhYzExOGFhZjVmMjMwYzhkMGRj
OWFiM2M1MmU1YzE2Njk3MWJjOGFlLi5mMDE0NjBhNDE5NWQyYjAwMGNlNWJmYWQwYjJjN2QxNzU5
ZDZjYzQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckxpdmVu
ZXNzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJMaXZlbmVzcy5oCkBA
IC0zMyw4ICszMyw4IEBACiAjaW5jbHVkZSAiQWlySW5zdElubGluZXMuaCIKICNpbmNsdWRlICJB
aXJTdGFja1Nsb3QuaCIKICNpbmNsdWRlICJBaXJUbXBJbmxpbmVzLmgiCi0jaW5jbHVkZSAiQjNJ
bmRleE1hcC5oIgotI2luY2x1ZGUgIkIzSW5kZXhTZXQuaCIKKyNpbmNsdWRlIDx3dGYvSW5kZXhN
YXAuaD4KKyNpbmNsdWRlIDx3dGYvSW5kZXhTZXQuaD4KICNpbmNsdWRlIDx3dGYvSW5kZXhTcGFy
c2VTZXQuaD4KICNpbmNsdWRlIDx3dGYvTGlzdER1bXAuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJTcGlsbEV2ZXJ5dGhpbmcuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJTcGlsbEV2ZXJ5dGhpbmcuY3BwCmluZGV4IDNhMDYzNmRl
OWExYmVhYWM5ZGRmYWFjZGM4MzQ0MDc2ZmRlMzNlYzguLjE2NzY3MDU4ZmY1OGZlZDhkZmJlOTMx
MGMwOTdjMzhjMmZlNWFjNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9h
aXIvQWlyU3BpbGxFdmVyeXRoaW5nLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
YWlyL0FpclNwaWxsRXZlcnl0aGluZy5jcHAKQEAgLTM1LDcgKzM1LDcgQEAKICNpbmNsdWRlICJB
aXJMaXZlbmVzcy5oIgogI2luY2x1ZGUgIkFpclBoYXNlU2NvcGUuaCIKICNpbmNsdWRlICJBaXJS
ZWdpc3RlclByaW9yaXR5LmgiCi0jaW5jbHVkZSAiQjNJbmRleE1hcC5oIgorI2luY2x1ZGUgPHd0
Zi9JbmRleE1hcC5oPgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsgbmFtZXNwYWNl
IEFpciB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9HZW5l
cmF0b3JQcm90b3R5cGUuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvR2VuZXJh
dG9yUHJvdG90eXBlLmpzCmluZGV4IDNjMTQwNjg3ZGZjN2UwMGVmZTkxYWU4MGIyYWM2NzZmYTli
ZjQ4ZjQuLjQ5OWRiZDM5MmU4MzEzZGNkZDg2ZWM4YzE2MDU2OWQ3ZDZmNTQ5YjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9HZW5lcmF0b3JQcm90b3R5cGUuanMK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0dlbmVyYXRvclByb3RvdHlwZS5q
cwpAQCAtNTEsNyArNTEsNyBAQCBmdW5jdGlvbiBnZW5lcmF0b3JSZXN1bWUoZ2VuZXJhdG9yLCBz
ZW50VmFsdWUsIHJlc3VtZU1vZGUpCiAgICAgfSBlbHNlIHsKICAgICAgICAgdHJ5IHsKICAgICAg
ICAgICAgIGdlbmVyYXRvci5AZ2VuZXJhdG9yU3RhdGUgPSBAR2VuZXJhdG9yU3RhdGVFeGVjdXRp
bmc7Ci0gICAgICAgICAgICB2YWx1ZSA9IGdlbmVyYXRvci5AZ2VuZXJhdG9yTmV4dC5AY2FsbChn
ZW5lcmF0b3IuQGdlbmVyYXRvclRoaXMsIGdlbmVyYXRvciwgc3RhdGUsIHNlbnRWYWx1ZSwgcmVz
dW1lTW9kZSk7CisgICAgICAgICAgICB2YWx1ZSA9IGdlbmVyYXRvci5AZ2VuZXJhdG9yTmV4dC5A
Y2FsbChnZW5lcmF0b3IuQGdlbmVyYXRvclRoaXMsIGdlbmVyYXRvciwgc3RhdGUsIHNlbnRWYWx1
ZSwgcmVzdW1lTW9kZSwgZ2VuZXJhdG9yLkBnZW5lcmF0b3JGcmFtZSk7CiAgICAgICAgICAgICBp
ZiAoZ2VuZXJhdG9yLkBnZW5lcmF0b3JTdGF0ZSA9PT0gQEdlbmVyYXRvclN0YXRlRXhlY3V0aW5n
KSB7CiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLkBnZW5lcmF0b3JTdGF0ZSA9IEBHZW5lcmF0
b3JTdGF0ZUNvbXBsZXRlZDsKICAgICAgICAgICAgICAgICBkb25lID0gdHJ1ZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5jcHAK
aW5kZXggN2YxN2MwZWYxMGI0MzNmYWM4ZjU4Y2IzYjljYTVkNGQwMTViYmEwOC4uMjk5MDgyZGRk
MWVjN2VjZmY3YTZjMTk4M2MxZWRhYmRlNTNiY2MzZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5jcHAKQEAgLTI3LDYgKzI3
LDcgQEAKICNpbmNsdWRlICJCeXRlY29kZUJhc2ljQmxvY2suaCIKIAogI2luY2x1ZGUgIkNvZGVC
bG9jay5oIgorI2luY2x1ZGUgIkludGVycHJldGVySW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ0lu
bGluZXMuaCIKICNpbmNsdWRlICJQcmVjaXNlSnVtcFRhcmdldHMuaCIKIApAQCAtMTA1LDE1ICsx
MDYsMjEgQEAgc3RhdGljIGJvb2wgaXNKdW1wVGFyZ2V0KE9wY29kZUlEIG9wY29kZUlELCBjb25z
dCBWZWN0b3I8dW5zaWduZWQsIDMyPiYganVtcFRhcmcKICAgICByZXR1cm4gc3RkOjpiaW5hcnlf
c2VhcmNoKGp1bXBUYXJnZXRzLmJlZ2luKCksIGp1bXBUYXJnZXRzLmVuZCgpLCBieXRlY29kZU9m
ZnNldCk7CiB9CiAKLXN0YXRpYyB2b2lkIGxpbmtCbG9ja3MoQnl0ZWNvZGVCYXNpY0Jsb2NrKiBw
cmVkZWNlc3NvciwgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBzdWNjZXNzb3IpCi17Ci0gICAgcHJlZGVj
ZXNzb3ItPmFkZFN1Y2Nlc3NvcihzdWNjZXNzb3IpOwotfQotCi12b2lkIGNvbXB1dGVCeXRlY29k
ZUJhc2ljQmxvY2tzKENvZGVCbG9jayogY29kZUJsb2NrLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRy
PEJ5dGVjb2RlQmFzaWNCbG9jaz4+JiBiYXNpY0Jsb2NrcykKK3RlbXBsYXRlPHR5cGVuYW1lIEJs
b2NrLCB0eXBlbmFtZSBJbnN0cnVjdGlvbj4KK3ZvaWQgQnl0ZWNvZGVCYXNpY0Jsb2NrOjpjb21w
dXRlQnl0ZWNvZGVCYXNpY0Jsb2Nrc0ludGVybmFsKEJsb2NrKiBjb2RlQmxvY2ssIEluc3RydWN0
aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCwgVmVjdG9y
PHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9ja3MpCiB7CiAg
ICAgVmVjdG9yPHVuc2lnbmVkLCAzMj4ganVtcFRhcmdldHM7Ci0gICAgY29tcHV0ZVByZWNpc2VK
dW1wVGFyZ2V0cyhjb2RlQmxvY2ssIGp1bXBUYXJnZXRzKTsKKyAgICBjb21wdXRlUHJlY2lzZUp1
bXBUYXJnZXRzKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb25zQmVnaW4sIGluc3RydWN0aW9uQ291bnQs
IGp1bXBUYXJnZXRzKTsKKworICAgIGF1dG8gYXBwZW5kQmxvY2sgPSBbJl0gKHN0ZDo6dW5pcXVl
X3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+JiYgYmxvY2spIHsKKyAgICAgICAgYmxvY2stPm1faW5k
ZXggPSBiYXNpY0Jsb2Nrcy5zaXplKCk7CisgICAgICAgIGJhc2ljQmxvY2tzLmFwcGVuZChXVEZN
b3ZlKGJsb2NrKSk7CisgICAgfTsKKworICAgIGF1dG8gbGlua0Jsb2NrcyA9IFsmXSAoQnl0ZWNv
ZGVCYXNpY0Jsb2NrKiBmcm9tLCBCeXRlY29kZUJhc2ljQmxvY2sqIHRvKSB7CisgICAgICAgIGZy
b20tPmFkZFN1Y2Nlc3Nvcih0byk7CisgICAgICAgIHRvLT5hZGRQcmVkZWNlc3Nvcihmcm9tKTsK
KyAgICB9OwogCiAgICAgLy8gQ3JlYXRlIHRoZSBlbnRyeSBhbmQgZXhpdCBiYXNpYyBibG9ja3Mu
CiAgICAgYmFzaWNCbG9ja3MucmVzZXJ2ZUNhcGFjaXR5KGp1bXBUYXJnZXRzLnNpemUoKSArIDIp
OwpAQCAtMTIyLDE5ICsxMjksMTcgQEAgdm9pZCBjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2NrcyhD
b2RlQmxvY2sqIGNvZGVCbG9jaywgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXQKICAgICBhdXRv
IGZpcnN0QmxvY2sgPSBzdGQ6Om1ha2VfdW5pcXVlPEJ5dGVjb2RlQmFzaWNCbG9jaz4oMCwgMCk7
CiAgICAgbGlua0Jsb2NrcyhlbnRyeS5nZXQoKSwgZmlyc3RCbG9jay5nZXQoKSk7CiAKLSAgICBi
YXNpY0Jsb2Nrcy5hcHBlbmQoV1RGTW92ZShlbnRyeSkpOworICAgIGFwcGVuZEJsb2NrKFdURk1v
dmUoZW50cnkpKTsKICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGN1cnJlbnQgPSBmaXJzdEJsb2Nr
LmdldCgpOwotICAgIGJhc2ljQmxvY2tzLmFwcGVuZChXVEZNb3ZlKGZpcnN0QmxvY2spKTsKKyAg
ICBhcHBlbmRCbG9jayhXVEZNb3ZlKGZpcnN0QmxvY2spKTsKIAogICAgIGF1dG8gZXhpdCA9IHN0
ZDo6bWFrZV91bmlxdWU8Qnl0ZWNvZGVCYXNpY0Jsb2NrPihCeXRlY29kZUJhc2ljQmxvY2s6OkV4
aXRCbG9jayk7CiAKICAgICBib29sIG5leHRJbnN0cnVjdGlvbklzTGVhZGVyID0gZmFsc2U7CiAK
ICAgICBJbnRlcnByZXRlciogaW50ZXJwcmV0ZXIgPSBjb2RlQmxvY2stPnZtKCktPmludGVycHJl
dGVyOwotICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiA9IGNvZGVCbG9jay0+aW5z
dHJ1Y3Rpb25zKCkuYmVnaW4oKTsKLSAgICB1bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50ID0gY29k
ZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5zaXplKCk7CiAgICAgZm9yICh1bnNpZ25lZCBieXRlY29k
ZU9mZnNldCA9IDA7IGJ5dGVjb2RlT2Zmc2V0IDwgaW5zdHJ1Y3Rpb25Db3VudDspIHsKLSAgICAg
ICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rp
b25zQmVnaW5bYnl0ZWNvZGVPZmZzZXRdLnUub3Bjb2RlKTsKKyAgICAgICAgT3Bjb2RlSUQgb3Bj
b2RlSUQgPSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25zQmVnaW5bYnl0ZWNv
ZGVPZmZzZXRdKTsKICAgICAgICAgdW5zaWduZWQgb3Bjb2RlTGVuZ3RoID0gb3Bjb2RlTGVuZ3Ro
c1tvcGNvZGVJRF07CiAKICAgICAgICAgYm9vbCBjcmVhdGVkQmxvY2sgPSBmYWxzZTsKQEAgLTE0
Miw3ICsxNDcsNyBAQCB2b2lkIGNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzKENvZGVCbG9jayog
Y29kZUJsb2NrLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dAogICAgICAgICBpZiAoaXNKdW1w
VGFyZ2V0KG9wY29kZUlELCBqdW1wVGFyZ2V0cywgYnl0ZWNvZGVPZmZzZXQpIHx8IG5leHRJbnN0
cnVjdGlvbklzTGVhZGVyKSB7CiAgICAgICAgICAgICBhdXRvIG5ld0Jsb2NrID0gc3RkOjptYWtl
X3VuaXF1ZTxCeXRlY29kZUJhc2ljQmxvY2s+KGJ5dGVjb2RlT2Zmc2V0LCBvcGNvZGVMZW5ndGgp
OwogICAgICAgICAgICAgY3VycmVudCA9IG5ld0Jsb2NrLmdldCgpOwotICAgICAgICAgICAgYmFz
aWNCbG9ja3MuYXBwZW5kKFdURk1vdmUobmV3QmxvY2spKTsKKyAgICAgICAgICAgIGFwcGVuZEJs
b2NrKFdURk1vdmUobmV3QmxvY2spKTsKICAgICAgICAgICAgIGNyZWF0ZWRCbG9jayA9IHRydWU7
CiAgICAgICAgICAgICBuZXh0SW5zdHJ1Y3Rpb25Jc0xlYWRlciA9IGZhbHNlOwogICAgICAgICAg
ICAgYnl0ZWNvZGVPZmZzZXQgKz0gb3Bjb2RlTGVuZ3RoOwpAQCAtMTY5LDggKzE3NCw3IEBAIHZv
aWQgY29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFZlY3Rv
cjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0CiAKICAgICAgICAgYm9vbCBmYWxsc1Rocm91Z2ggPSB0cnVl
OyAKICAgICAgICAgZm9yICh1bnNpZ25lZCBieXRlY29kZU9mZnNldCA9IGJsb2NrLT5sZWFkZXJC
eXRlY29kZU9mZnNldCgpOyBieXRlY29kZU9mZnNldCA8IGJsb2NrLT5sZWFkZXJCeXRlY29kZU9m
ZnNldCgpICsgYmxvY2stPnRvdGFsQnl0ZWNvZGVMZW5ndGgoKTspIHsKLSAgICAgICAgICAgIGNv
bnN0IEluc3RydWN0aW9uJiBjdXJyZW50SW5zdHJ1Y3Rpb24gPSBpbnN0cnVjdGlvbnNCZWdpblti
eXRlY29kZU9mZnNldF07Ci0gICAgICAgICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGludGVycHJl
dGVyLT5nZXRPcGNvZGVJRChjdXJyZW50SW5zdHJ1Y3Rpb24udS5vcGNvZGUpOworICAgICAgICAg
ICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rp
b25zQmVnaW5bYnl0ZWNvZGVPZmZzZXRdKTsKICAgICAgICAgICAgIHVuc2lnbmVkIG9wY29kZUxl
bmd0aCA9IG9wY29kZUxlbmd0aHNbb3Bjb2RlSURdOwogICAgICAgICAgICAgLy8gSWYgd2UgZm91
bmQgYSB0ZXJtaW5hbCBieXRlY29kZSwgbGluayB0byB0aGUgZXhpdCBibG9jay4KICAgICAgICAg
ICAgIGlmIChpc1Rlcm1pbmFsKG9wY29kZUlEKSkgewpAQCAtMTg1LDcgKzE4OSw3IEBAIHZvaWQg
Y29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFZlY3Rvcjxz
dGQ6OnVuaXF1ZV9wdHI8Qnl0CiAgICAgICAgICAgICAvLyBibG9jayBiZWNhdXNlIHRoZSBmaW5h
bGx5IGJsb2NrIHdpbGwgY3JlYXRlIGl0cyBvd24gY2F0Y2gsIHdoaWNoIHdpbGwgZ2VuZXJhdGUg
YSBIYW5kbGVySW5mby4KICAgICAgICAgICAgIGlmIChpc1Rocm93KG9wY29kZUlEKSkgewogICAg
ICAgICAgICAgICAgIEFTU0VSVChieXRlY29kZU9mZnNldCArIG9wY29kZUxlbmd0aCA9PSBibG9j
ay0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKSArIGJsb2NrLT50b3RhbEJ5dGVjb2RlTGVuZ3RoKCkp
OwotICAgICAgICAgICAgICAgIEhhbmRsZXJJbmZvKiBoYW5kbGVyID0gY29kZUJsb2NrLT5oYW5k
bGVyRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpOworICAgICAgICAgICAgICAgIGF1
dG8qIGhhbmRsZXIgPSBjb2RlQmxvY2stPmhhbmRsZXJGb3JCeXRlY29kZU9mZnNldChieXRlY29k
ZU9mZnNldCk7CiAgICAgICAgICAgICAgICAgZmFsbHNUaHJvdWdoID0gZmFsc2U7CiAgICAgICAg
ICAgICAgICAgaWYgKCFoYW5kbGVyKSB7CiAgICAgICAgICAgICAgICAgICAgIGxpbmtCbG9ja3Mo
YmxvY2ssIGV4aXQuZ2V0KCkpOwpAQCAtMjA1LDcgKzIwOSw3IEBAIHZvaWQgY29tcHV0ZUJ5dGVj
b2RlQmFzaWNCbG9ja3MoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFZlY3RvcjxzdGQ6OnVuaXF1ZV9w
dHI8Qnl0CiAgICAgICAgICAgICBpZiAoaXNCcmFuY2gob3Bjb2RlSUQpKSB7CiAgICAgICAgICAg
ICAgICAgQVNTRVJUKGJ5dGVjb2RlT2Zmc2V0ICsgb3Bjb2RlTGVuZ3RoID09IGJsb2NrLT5sZWFk
ZXJCeXRlY29kZU9mZnNldCgpICsgYmxvY2stPnRvdGFsQnl0ZWNvZGVMZW5ndGgoKSk7CiAgICAg
ICAgICAgICAgICAgVmVjdG9yPHVuc2lnbmVkLCAxPiBieXRlY29kZU9mZnNldHNKdW1wZWRUbzsK
LSAgICAgICAgICAgICAgICBmaW5kSnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChjb2RlQmxv
Y2ssIGJ5dGVjb2RlT2Zmc2V0LCBieXRlY29kZU9mZnNldHNKdW1wZWRUbyk7CisgICAgICAgICAg
ICAgICAgZmluZEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoY29kZUJsb2NrLCBpbnN0cnVj
dGlvbnNCZWdpbiwgYnl0ZWNvZGVPZmZzZXQsIGJ5dGVjb2RlT2Zmc2V0c0p1bXBlZFRvKTsKIAog
ICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBiYXNpY0Jsb2Nrcy5zaXpl
KCk7IGkrKykgewogICAgICAgICAgICAgICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIG90aGVy
QmxvY2sgPSBiYXNpY0Jsb2Nrc1tpXS5nZXQoKTsKQEAgLTIyOSwxMCArMjMzLDIwIEBAIHZvaWQg
Y29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFZlY3Rvcjxz
dGQ6OnVuaXF1ZV9wdHI8Qnl0CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBiYXNpY0Jsb2Nrcy5h
cHBlbmQoV1RGTW92ZShleGl0KSk7CisgICAgYXBwZW5kQmxvY2soV1RGTW92ZShleGl0KSk7CiAg
ICAgCiAgICAgZm9yIChhdXRvJiBiYXNpY0Jsb2NrIDogYmFzaWNCbG9ja3MpCiAgICAgICAgIGJh
c2ljQmxvY2stPnNocmlua1RvRml0KCk7CiB9CiAKK3ZvaWQgQnl0ZWNvZGVCYXNpY0Jsb2NrOjpj
b21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2NrcyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgSW5zdHJ1Y3Rp
b24qIGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50LCBWZWN0b3I8
c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+JiBiYXNpY0Jsb2NrcykKK3sKKyAg
ICBjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2Nrc0ludGVybmFsKGNvZGVCbG9jaywgaW5zdHJ1Y3Rp
b25zQmVnaW4sIGluc3RydWN0aW9uQ291bnQsIGJhc2ljQmxvY2tzKTsKK30KKwordm9pZCBCeXRl
Y29kZUJhc2ljQmxvY2s6OmNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzKFVubGlua2VkQ29kZUJs
b2NrKiBjb2RlQmxvY2ssIFVubGlua2VkSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1
bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50LCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2Rl
QmFzaWNCbG9jaz4+JiBiYXNpY0Jsb2NrcykKK3sKKyAgICBCeXRlY29kZUJhc2ljQmxvY2s6OmNv
bXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzSW50ZXJuYWwoY29kZUJsb2NrLCBpbnN0cnVjdGlvbnNC
ZWdpbiwgaW5zdHJ1Y3Rpb25Db3VudCwgYmFzaWNCbG9ja3MpOworfQorCiB9IC8vIG5hbWVzcGFj
ZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZUJhc2ljQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJh
c2ljQmxvY2suaAppbmRleCBiZDdkM2FlOWJhMzQzZTFiMDcxNzllOThmMWVlODlkYTY1YmE3ZTIw
Li4xMTliZTdjNjYyMzBjOThlYTlkN2ZiMjgwOGNiZjI5NGRjMWEyYTc3IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5oCkBAIC0z
NSw2ICszNSw5IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgQ29kZUJsb2NrOworY2xhc3Mg
VW5saW5rZWRDb2RlQmxvY2s7CitzdHJ1Y3QgSW5zdHJ1Y3Rpb247CitzdHJ1Y3QgVW5saW5rZWRJ
bnN0cnVjdGlvbjsKIAogY2xhc3MgQnl0ZWNvZGVCYXNpY0Jsb2NrIHsKICAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKQEAgLTUwLDI4ICs1MywzOSBAQCBjbGFzcyBCeXRlY29kZUJhc2ljQmxv
Y2sgewogICAgIHVuc2lnbmVkIGxlYWRlckJ5dGVjb2RlT2Zmc2V0KCkgeyByZXR1cm4gbV9sZWFk
ZXJCeXRlY29kZU9mZnNldDsgfQogICAgIHVuc2lnbmVkIHRvdGFsQnl0ZWNvZGVMZW5ndGgoKSB7
IHJldHVybiBtX3RvdGFsQnl0ZWNvZGVMZW5ndGg7IH0KIAotICAgIFZlY3Rvcjx1bnNpZ25lZD4m
IGJ5dGVjb2RlT2Zmc2V0cygpIHsgcmV0dXJuIG1fYnl0ZWNvZGVPZmZzZXRzOyB9Ci0gICAgdm9p
ZCBhZGRCeXRlY29kZUxlbmd0aCh1bnNpZ25lZCk7CisgICAgY29uc3QgVmVjdG9yPHVuc2lnbmVk
PiYgYnl0ZWNvZGVPZmZzZXRzKCkgY29uc3QgeyByZXR1cm4gbV9ieXRlY29kZU9mZnNldHM7IH0K
IAotICAgIFZlY3RvcjxCeXRlY29kZUJhc2ljQmxvY2sqPiYgc3VjY2Vzc29ycygpIHsgcmV0dXJu
IG1fc3VjY2Vzc29yczsgfQotICAgIHZvaWQgYWRkU3VjY2Vzc29yKEJ5dGVjb2RlQmFzaWNCbG9j
ayogYmxvY2spIHsgbV9zdWNjZXNzb3JzLmFwcGVuZChibG9jayk7IH0KKyAgICBjb25zdCBWZWN0
b3I8Qnl0ZWNvZGVCYXNpY0Jsb2NrKj4mIHN1Y2Nlc3NvcnMoKSBjb25zdCB7IHJldHVybiBtX3N1
Y2Nlc3NvcnM7IH0KKyAgICBjb25zdCBWZWN0b3I8Qnl0ZWNvZGVCYXNpY0Jsb2NrKj4mIHByZWRl
Y2Vzc29ycygpIGNvbnN0IHsgcmV0dXJuIG1fcHJlZGVjZXNzb3JzOyB9CiAKICAgICBGYXN0Qml0
VmVjdG9yJiBpbigpIHsgcmV0dXJuIG1faW47IH0KICAgICBGYXN0Qml0VmVjdG9yJiBvdXQoKSB7
IHJldHVybiBtX291dDsgfQogCisgICAgdW5zaWduZWQgaW5kZXgoKSBjb25zdCB7IHJldHVybiBt
X2luZGV4OyB9CisKKyAgICBzdGF0aWMgdm9pZCBjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2NrcyhD
b2RlQmxvY2sqLCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGluc3Ry
dWN0aW9uQ291bnQsIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4m
KTsKKyAgICBzdGF0aWMgdm9pZCBjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2NrcyhVbmxpbmtlZENv
ZGVCbG9jayosIFVubGlua2VkSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25l
ZCBpbnN0cnVjdGlvbkNvdW50LCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNC
bG9jaz4+Jik7CisKIHByaXZhdGU6CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQmxvY2ssIHR5cGVu
YW1lIEluc3RydWN0aW9uPiBzdGF0aWMgdm9pZCBjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2Nrc0lu
dGVybmFsKEJsb2NrKiBjb2RlQmxvY2ssIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwg
dW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCwgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29k
ZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9ja3MpOworCisgICAgdm9pZCBhZGRTdWNjZXNzb3IoQnl0
ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaykgeyBtX3N1Y2Nlc3NvcnMuYXBwZW5kKGJsb2NrKTsgfQor
ICAgIHZvaWQgYWRkUHJlZGVjZXNzb3IoQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaykgeyBtX3By
ZWRlY2Vzc29ycy5hcHBlbmQoYmxvY2spOyB9CisKKyAgICB2b2lkIGFkZEJ5dGVjb2RlTGVuZ3Ro
KHVuc2lnbmVkKTsKKwogICAgIHVuc2lnbmVkIG1fbGVhZGVyQnl0ZWNvZGVPZmZzZXQ7CiAgICAg
dW5zaWduZWQgbV90b3RhbEJ5dGVjb2RlTGVuZ3RoOworICAgIHVuc2lnbmVkIG1faW5kZXg7CiAK
ICAgICBWZWN0b3I8dW5zaWduZWQ+IG1fYnl0ZWNvZGVPZmZzZXRzOwogICAgIFZlY3RvcjxCeXRl
Y29kZUJhc2ljQmxvY2sqPiBtX3N1Y2Nlc3NvcnM7CisgICAgVmVjdG9yPEJ5dGVjb2RlQmFzaWNC
bG9jayo+IG1fcHJlZGVjZXNzb3JzOwogCiAgICAgRmFzdEJpdFZlY3RvciBtX2luOwogICAgIEZh
c3RCaXRWZWN0b3IgbV9vdXQ7CiB9OwogCi12b2lkIGNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tz
KENvZGVCbG9jayosIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4m
KTsKLQogaW5saW5lIEJ5dGVjb2RlQmFzaWNCbG9jazo6Qnl0ZWNvZGVCYXNpY0Jsb2NrKHVuc2ln
bmVkIHN0YXJ0LCB1bnNpZ25lZCBsZW5ndGgpCiAgICAgOiBtX2xlYWRlckJ5dGVjb2RlT2Zmc2V0
KHN0YXJ0KQogICAgICwgbV90b3RhbEJ5dGVjb2RlTGVuZ3RoKGxlbmd0aCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlv
bi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3Jp
ZmljYXRpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEzOTgxZjM4NWNjOTcwZmVlZWIyZmE0OWU2YmMyMjI3
YTk5NjQ3YTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwCkBAIC0wLDAgKzEsMjkxIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE2IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNv
bT4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkJ5dGVjb2RlR2Vu
ZXJhdG9yaWZpY2F0aW9uLmgiCisKKyNpbmNsdWRlICJCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNJ
bmxpbmVzLmgiCisjaW5jbHVkZSAiQnl0ZWNvZGVNb2RpZmljYXRpb25TZXQuaCIKKyNpbmNsdWRl
ICJCeXRlY29kZVVzZURlZi5oIgorI2luY2x1ZGUgIklkZW50aWZpZXJJbmxpbmVzLmgiCisjaW5j
bHVkZSAiSW50ZXJwcmV0ZXJJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMu
aCIKKyNpbmNsdWRlICJKU0dlbmVyYXRvckZ1bmN0aW9uLmgiCisjaW5jbHVkZSAiU3Ryb25nSW5s
aW5lcy5oIgorI2luY2x1ZGUgIlVubGlua2VkQ29kZUJsb2NrLmgiCisjaW5jbHVkZSA8d3RmL09w
dGlvbmFsLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitzdHJ1Y3QgWWllbGREYXRhIHsKKyAgICBz
aXplX3Qgc2F2ZVBvaW50OworICAgIHNpemVfdCBtZXJnZVBvaW50OworICAgIHNpemVfdCByZXN1
bWVQb2ludDsKKyAgICBGYXN0Qml0VmVjdG9yIGxpdmVuZXNzOworfTsKKworY2xhc3MgQnl0ZWNv
ZGVHZW5lcmF0b3JpZmljYXRpb24geworcHVibGljOgorICAgIHR5cGVkZWYgVmVjdG9yPFlpZWxk
RGF0YT4gWWllbGRzOworCisgICAgQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24oVW5saW5rZWRD
b2RlQmxvY2sqIGNvZGVCbG9jaywgVW5saW5rZWRDb2RlQmxvY2s6OlVucGFja2VkSW5zdHJ1Y3Rp
b25zJiBpbnN0cnVjdGlvbnMsIFN5bWJvbFRhYmxlKiBnZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxl
LCBpbnQgZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZUluZGV4KQorICAgICAgICA6IG1fZ3JhcGgo
Y29kZUJsb2NrLCBpbnN0cnVjdGlvbnMpCisgICAgICAgICwgbV9pbnNlcnRpb25TZXQobV9ncmFw
aCkKKyAgICAgICAgLCBtX2dlbmVyYXRvckZyYW1lU3ltYm9sVGFibGUoKmNvZGVCbG9jay0+dm0o
KSwgZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZSkKKyAgICAgICAgLCBtX2dlbmVyYXRvckZyYW1l
U3ltYm9sVGFibGVJbmRleChnZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlSW5kZXgpCisgICAgewor
ICAgICAgICBmb3IgKEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2sgOiBtX2dyYXBoKSB7CisgICAg
ICAgICAgICBmb3IgKHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0IDogYmxvY2stPmJ5dGVjb2RlT2Zm
c2V0cygpKSB7CisgICAgICAgICAgICAgICAgY29uc3QgVW5saW5rZWRJbnN0cnVjdGlvbiogcGMg
PSAmbV9ncmFwaC5pbnN0cnVjdGlvbnMoKVtieXRlY29kZU9mZnNldF07CisgICAgICAgICAgICAg
ICAgc3dpdGNoIChwYy0+dS5vcGNvZGUpIHsKKyAgICAgICAgICAgICAgICBjYXNlIG9wX3NhdmU6
IHsKKyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0g
cGNbMl0udS5pbmRleDsKKyAgICAgICAgICAgICAgICAgICAgaW50IG9mZnNldCA9IHBjWzNdLnUu
b3BlcmFuZDsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxpdmVDYWxsZWVMb2NhbHNJbmRleCA+
PSBtX3lpZWxkcy5zaXplKCkpCisgICAgICAgICAgICAgICAgICAgICAgICBtX3lpZWxkcy5yZXNp
emUobGl2ZUNhbGxlZUxvY2Fsc0luZGV4ICsgMSk7CisgICAgICAgICAgICAgICAgICAgIG1feWll
bGRzW2xpdmVDYWxsZWVMb2NhbHNJbmRleF0uc2F2ZVBvaW50ID0gYnl0ZWNvZGVPZmZzZXQ7Cisg
ICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIG1lcmdlUG9pbnQgPSBieXRlY29kZU9mZnNldCAr
IG9mZnNldDsKKyAgICAgICAgICAgICAgICAgICAgbV95aWVsZHNbbGl2ZUNhbGxlZUxvY2Fsc0lu
ZGV4XS5tZXJnZVBvaW50ID0gbWVyZ2VQb2ludDsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgY2FzZSBvcF9yZXN1bWU6IHsK
KyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gcGNb
Ml0udS5pbmRleDsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxpdmVDYWxsZWVMb2NhbHNJbmRl
eCA+PSBtX3lpZWxkcy5zaXplKCkpCisgICAgICAgICAgICAgICAgICAgICAgICBtX3lpZWxkcy5y
ZXNpemUobGl2ZUNhbGxlZUxvY2Fsc0luZGV4ICsgMSk7CisgICAgICAgICAgICAgICAgICAgIG1f
eWllbGRzW2xpdmVDYWxsZWVMb2NhbHNJbmRleF0ucmVzdW1lUG9pbnQgPSBieXRlY29kZU9mZnNl
dDsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgc3RydWN0
IFN0b3JhZ2UgeworICAgICAgICBJZGVudGlmaWVyIGlkZW50aWZpZXI7CisgICAgICAgIHVuc2ln
bmVkIGlkZW50aWZpZXJJbmRleDsKKyAgICAgICAgU2NvcGVPZmZzZXQgc2NvcGVPZmZzZXQ7Cisg
ICAgfTsKKworICAgIHZvaWQgcnVuKCk7CisKKyAgICBCeXRlY29kZUdyYXBoPFVubGlua2VkQ29k
ZUJsb2NrPiYgZ3JhcGgoKSB7IHJldHVybiBtX2dyYXBoOyB9CisKKyAgICBjb25zdCBZaWVsZHMm
IHlpZWxkcygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV95aWVsZHM7CisgICAgfQor
CisgICAgWWllbGRzJiB5aWVsZHMoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1feWllbGRzOwor
ICAgIH0KKworcHJpdmF0ZToKKyAgICBTdG9yYWdlIHN0b3JhZ2VGb3JHZW5lcmF0b3JMb2NhbCh1
bnNpZ25lZCBpbmRleCkKKyAgICB7CisgICAgICAgIC8vIFdlIGFzc2lnbiBhIHN5bWJvbCB0byBh
IHJlZ2lzdGVyLiBUaGVyZSBpcyBvbmUtb24tb25lIGNvcnJlc3BvbmRpbmcgYmV0d2VlbiBhIHJl
Z2lzdGVyIGFuZCBhIHN5bWJvbC4KKyAgICAgICAgLy8gQnkgZG9pbmcgc28sIHdlIGFsbG9jYXRl
IHRoZSBzcGVjaWZpYyBzdG9yYWdlIHRvIHNhdmUgdGhlIGdpdmVuIHJlZ2lzdGVyLgorICAgICAg
ICAvLyBUaGlzIGFsbG93IHVzIG5vdCB0byBzYXZlIGFsbCB0aGUgbGl2ZSByZWdpc3RlcnMgZXZl
biBpZiB0aGUgcmVnaXN0ZXJzIGFyZSBub3Qgb3ZlcndyaXR0ZW4gZnJvbSB0aGUgcHJldmlvdXMg
cmVzdW1pbmcgdGltZS4KKyAgICAgICAgLy8gSXQgbWVhbnMgdGhhdCwgdGhlIHJlZ2lzdGVyIGNh
biBiZSByZXRyaWV2ZWQgZXZlbiBpZiB0aGUgaW1tZWRpYXRlIHByZXZpb3VzIG9wX3NhdmUgZG9l
cyBub3Qgc2F2ZSBpdC4KKworICAgICAgICBpZiAobV9zdG9yYWdlcy5zaXplKCkgPD0gaW5kZXgp
CisgICAgICAgICAgICBtX3N0b3JhZ2VzLnJlc2l6ZShpbmRleCArIDEpOworICAgICAgICBpZiAo
T3B0aW9uYWw8U3RvcmFnZT4gc3RvcmFnZSA9IG1fc3RvcmFnZXNbaW5kZXhdKQorICAgICAgICAg
ICAgcmV0dXJuICpzdG9yYWdlOworCisgICAgICAgIFVubGlua2VkQ29kZUJsb2NrKiBjb2RlQmxv
Y2sgPSBtX2dyYXBoLmNvZGVCbG9jaygpOworICAgICAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIg
PSBJZGVudGlmaWVyOjpmcm9tVWlkKFByaXZhdGVOYW1lKCkpOworICAgICAgICB1bnNpZ25lZCBp
ZGVudGlmaWVySW5kZXggPSBjb2RlQmxvY2stPm51bWJlck9mSWRlbnRpZmllcnMoKTsKKyAgICAg
ICAgY29kZUJsb2NrLT5hZGRJZGVudGlmaWVyKGlkZW50aWZpZXIpOworICAgICAgICBTY29wZU9m
ZnNldCBzY29wZU9mZnNldCA9IG1fZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZS0+dGFrZU5leHRT
Y29wZU9mZnNldChOb0xvY2tpbmdOZWNlc3NhcnkpOworICAgICAgICBtX2dlbmVyYXRvckZyYW1l
U3ltYm9sVGFibGUtPnNldChOb0xvY2tpbmdOZWNlc3NhcnksIGlkZW50aWZpZXIuaW1wbCgpLCBT
eW1ib2xUYWJsZUVudHJ5KFZhck9mZnNldChzY29wZU9mZnNldCkpKTsKKworICAgICAgICBTdG9y
YWdlIHN0b3JhZ2UgPSB7CisgICAgICAgICAgICBpZGVudGlmaWVyLAorICAgICAgICAgICAgaWRl
bnRpZmllckluZGV4LAorICAgICAgICAgICAgc2NvcGVPZmZzZXQKKyAgICAgICAgfTsKKyAgICAg
ICAgbV9zdG9yYWdlc1tpbmRleF0gPSBzdG9yYWdlOworICAgICAgICByZXR1cm4gc3RvcmFnZTsK
KyAgICB9CisKKyAgICBCeXRlY29kZUdyYXBoPFVubGlua2VkQ29kZUJsb2NrPiBtX2dyYXBoOwor
ICAgIEJ5dGVjb2RlTW9kaWZpY2F0aW9uU2V0IG1faW5zZXJ0aW9uU2V0OworICAgIFZlY3RvcjxP
cHRpb25hbDxTdG9yYWdlPj4gbV9zdG9yYWdlczsKKyAgICBZaWVsZHMgbV95aWVsZHM7CisgICAg
U3Ryb25nPFN5bWJvbFRhYmxlPiBtX2dlbmVyYXRvckZyYW1lU3ltYm9sVGFibGU7CisgICAgaW50
IG1fZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZUluZGV4OworfTsKKworY2xhc3MgR2VuZXJhdG9y
TGl2ZW5lc3NBbmFseXNpcyA6IHB1YmxpYyBCeXRlY29kZUxpdmVuZXNzTG9jYWxQcm9wYWdhdGlv
bjxHZW5lcmF0b3JMaXZlbmVzc0FuYWx5c2lzPiB7CitwdWJsaWM6CisgICAgR2VuZXJhdG9yTGl2
ZW5lc3NBbmFseXNpcyhCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbiYgZ2VuZXJhdG9yaWZpY2F0
aW9uKQorICAgICAgICA6IG1fZ2VuZXJhdG9yaWZpY2F0aW9uKGdlbmVyYXRvcmlmaWNhdGlvbikK
KyAgICB7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KKyAgICB2b2lk
IGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoVW5saW5rZWRDb2RlQmxvY2sqIGNvZGVCbG9j
aywgT3Bjb2RlSUQgb3Bjb2RlSUQsIFVubGlua2VkSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBG
YXN0Qml0VmVjdG9yJiBvdXQsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCisgICAgeworICAgICAg
ICBKU0M6OmNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoY29kZUJsb2NrLCBvcGNvZGVJRCwg
aW5zdHJ1Y3Rpb24sIGZ1bmN0b3IpOworCisgICAgICAgIHN3aXRjaCAob3Bjb2RlSUQpIHsKKyAg
ICAgICAgY2FzZSBvcF9zYXZlOgorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGNhc2Ug
b3BfcmVzdW1lOiB7CisgICAgICAgICAgICAvLyByZXN1bWUgZGVmaW5lcyBhbGwgdGhlIHJlZ2lz
dGVycy4KKyAgICAgICAgICAgIG91dC5jbGVhckFsbCgpOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+CisgICAgdm9pZCBj
b21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KFVubGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IE9wY29kZUlEIG9wY29kZUlELCBVbmxpbmtlZEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgRmFz
dEJpdFZlY3RvciYsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCisgICAgeworICAgICAgICBKU0M6
OmNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoY29kZUJsb2NrLCBvcGNvZGVJRCwgaW5zdHJ1
Y3Rpb24sIGZ1bmN0b3IpOworCisgICAgICAgIHN3aXRjaCAob3Bjb2RlSUQpIHsKKyAgICAgICAg
Y2FzZSBvcF9zYXZlOgorICAgICAgICBjYXNlIG9wX3Jlc3VtZTogeworICAgICAgICAgICAgZnVu
Y3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb25bMV0udS5v
cGVyYW5kKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGRlZmF1
bHQ6CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIHJ1
bigpCisgICAgeworICAgICAgICAvLyBQZXJmb3JtIG1vZGlmaWVkIGxpdmVuZXNzIGFuYWx5c2lz
IHRvIGRldGVybWluZSB3aGljaCBsb2NhbHMgYXJlIGxpdmUgYXQgdGhlIG1lcmdlIHBvaW50cy4K
KyAgICAgICAgLy8gVGhpcyBwcm9kdWNlcyB0aGUgY29uc2VydmF0aXZlIHJlc3VsdHMgZm9yIHRo
ZSBxdWVzdGlvbiwgIndoaWNoIHZhcmlhYmxlcyBzaG91bGQgYmUgc2F2ZWQgYW5kIHJlc3VtZWQ/
Ii4KKworICAgICAgICBCeXRlY29kZUdyYXBoPFVubGlua2VkQ29kZUJsb2NrPiYgZ3JhcGggPSBt
X2dlbmVyYXRvcmlmaWNhdGlvbi5ncmFwaCgpOworICAgICAgICBVbmxpbmtlZENvZGVCbG9jayog
Y29kZUJsb2NrID0gZ3JhcGguY29kZUJsb2NrKCk7CisgICAgICAgIHVuc2lnbmVkIG51bWJlck9m
VmFyaWFibGVzID0gY29kZUJsb2NrLT5tX251bUNhbGxlZUxvY2FsczsKKyAgICAgICAgZm9yIChC
eXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrIDogZ3JhcGgpIHsKKyAgICAgICAgICAgIGJsb2NrLT5p
bigpLnJlc2l6ZShudW1iZXJPZlZhcmlhYmxlcyk7CisgICAgICAgICAgICBibG9jay0+b3V0KCku
cmVzaXplKG51bWJlck9mVmFyaWFibGVzKTsKKyAgICAgICAgICAgIGJsb2NrLT5pbigpLmNsZWFy
QWxsKCk7CisgICAgICAgICAgICBibG9jay0+b3V0KCkuY2xlYXJBbGwoKTsKKyAgICAgICAgfQor
CisgICAgICAgIGJvb2wgY2hhbmdlZDsKKyAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBsYXN0
QmxvY2sgPSBncmFwaC5sYXN0KCk7CisgICAgICAgIGxhc3RCbG9jay0+aW4oKS5jbGVhckFsbCgp
OworICAgICAgICBsYXN0QmxvY2stPm91dCgpLmNsZWFyQWxsKCk7CisgICAgICAgIEZhc3RCaXRW
ZWN0b3IgbmV3T3V0OworICAgICAgICBuZXdPdXQucmVzaXplKGxhc3RCbG9jay0+b3V0KCkubnVt
Qml0cygpKTsKKyAgICAgICAgZG8geworICAgICAgICAgICAgY2hhbmdlZCA9IGZhbHNlOworICAg
ICAgICAgICAgZm9yIChzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiYgYmxvY2sg
OiBncmFwaC5iYXNpY0Jsb2Nrc0luUmV2ZXJzZU9yZGVyKCkpIHsKKyAgICAgICAgICAgICAgICBu
ZXdPdXQuY2xlYXJBbGwoKTsKKyAgICAgICAgICAgICAgICBmb3IgKEJ5dGVjb2RlQmFzaWNCbG9j
ayogc3VjY2Vzc29yIDogYmxvY2stPnN1Y2Nlc3NvcnMoKSkKKyAgICAgICAgICAgICAgICAgICAg
bmV3T3V0Lm1lcmdlKHN1Y2Nlc3Nvci0+aW4oKSk7CisgICAgICAgICAgICAgICAgYmxvY2stPm91
dCgpLnNldChuZXdPdXQpOworICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gY29tcHV0ZUxvY2Fs
TGl2ZW5lc3NGb3JCbG9jayhtX2dlbmVyYXRvcmlmaWNhdGlvbi5ncmFwaCgpLCBibG9jay5nZXQo
KSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gd2hpbGUgKGNoYW5nZWQpOworCisgICAgICAg
IGZvciAoWWllbGREYXRhJiBkYXRhIDogbV9nZW5lcmF0b3JpZmljYXRpb24ueWllbGRzKCkpCisg
ICAgICAgICAgICBkYXRhLmxpdmVuZXNzID0gZ2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29kZU9mZnNl
dChtX2dlbmVyYXRvcmlmaWNhdGlvbi5ncmFwaCgpLCBkYXRhLm1lcmdlUG9pbnQpOworICAgIH0K
KworcHJpdmF0ZToKKyAgICBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbiYgbV9nZW5lcmF0b3Jp
ZmljYXRpb247Cit9OworCit2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uOjpydW4oKQor
eworICAgIC8vIFdlIGNhbGN1bGF0ZSB0aGUgbGl2ZW5lc3MgYXQgZWFjaCBtZXJnZSBwb2ludC4g
VGhpcyBnaXZlcyB1cyB0aGUgaW5mb3JtYXRpb24gd2hpY2ggcmVnaXN0ZXJzIHNob3VsZCBiZSBz
YXZlZCBhbmQgcmVzdW1lZCBjb25zZXJ2YXRpdmVseS4KKworICAgIHsKKyAgICAgICAgR2VuZXJh
dG9yTGl2ZW5lc3NBbmFseXNpcyBwYXNzKCp0aGlzKTsKKyAgICAgICAgcGFzcy5ydW4oKTsKKyAg
ICB9CisKKyAgICBVbmxpbmtlZENvZGVCbG9jayogY29kZUJsb2NrID0gbV9ncmFwaC5jb2RlQmxv
Y2soKTsKKyAgICBmb3IgKGNvbnN0IFlpZWxkRGF0YSYgZGF0YSA6IG1feWllbGRzKSB7CisgICAg
ICAgIFZpcnR1YWxSZWdpc3RlciBzY29wZSA9IHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KHN0
YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yRnVuY3Rpb246OkdlbmVyYXRvckFyZ3VtZW50
OjpGcmFtZSkpOworCisgICAgICAgIC8vIG9wX3NhdmUuCisgICAgICAgIGRhdGEubGl2ZW5lc3Mu
Zm9yRWFjaFNldEJpdChbJl0oc2l6ZV90IGluZGV4KSB7CisgICAgICAgICAgICBWaXJ0dWFsUmVn
aXN0ZXIgb3BlcmFuZCA9IHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGluZGV4KTsKKyAgICAgICAg
ICAgIFN0b3JhZ2Ugc3RvcmFnZSA9IHN0b3JhZ2VGb3JHZW5lcmF0b3JMb2NhbChpbmRleCk7CisK
KyAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydChkYXRhLnNhdmVQb2ludCwKKyAgICAg
ICAgICAgICAgICBvcF9wdXRfdG9fc2NvcGUsCisgICAgICAgICAgICAgICAgc2NvcGUub2Zmc2V0
KCksIC8vIHNjb3BlCisgICAgICAgICAgICAgICAgc3RvcmFnZS5pZGVudGlmaWVySW5kZXgsIC8v
IGlkZW50aWZpZXIKKyAgICAgICAgICAgICAgICBvcGVyYW5kLm9mZnNldCgpLCAvLyB2YWx1ZQor
ICAgICAgICAgICAgICAgIEdldFB1dEluZm8oRG9Ob3RUaHJvd0lmTm90Rm91bmQsIExvY2FsQ2xv
c3VyZVZhciwgSW5pdGlhbGl6YXRpb25Nb2RlOjpOb3RJbml0aWFsaXphdGlvbikub3BlcmFuZCgp
LCAvLyBpbmZvCisgICAgICAgICAgICAgICAgbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlSW5k
ZXgsIC8vIHN5bWJvbCB0YWJsZSBjb25zdGFudCBpbmRleAorICAgICAgICAgICAgICAgIHN0b3Jh
Z2Uuc2NvcGVPZmZzZXQub2Zmc2V0KCkgLy8gc2NvcGUgb2Zmc2V0CisgICAgICAgICAgICApOwor
ICAgICAgICB9KTsKKworICAgICAgICAvLyBvcF9yZXN1bWUuCisgICAgICAgIGRhdGEubGl2ZW5l
c3MuZm9yRWFjaFNldEJpdChbJl0oc2l6ZV90IGluZGV4KSB7CisgICAgICAgICAgICBWaXJ0dWFs
UmVnaXN0ZXIgb3BlcmFuZCA9IHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGluZGV4KTsKKyAgICAg
ICAgICAgIFN0b3JhZ2Ugc3RvcmFnZSA9IHN0b3JhZ2VGb3JHZW5lcmF0b3JMb2NhbChpbmRleCk7
CisKKyAgICAgICAgICAgIFVubGlua2VkVmFsdWVQcm9maWxlIHByb2ZpbGUgPSBjb2RlQmxvY2st
PmFkZFZhbHVlUHJvZmlsZSgpOworICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0KGRh
dGEucmVzdW1lUG9pbnQsCisgICAgICAgICAgICAgICAgb3BfZ2V0X2Zyb21fc2NvcGUsCisgICAg
ICAgICAgICAgICAgb3BlcmFuZC5vZmZzZXQoKSwgLy8gZHN0CisgICAgICAgICAgICAgICAgc2Nv
cGUub2Zmc2V0KCksIC8vIHNjb3BlCisgICAgICAgICAgICAgICAgc3RvcmFnZS5pZGVudGlmaWVy
SW5kZXgsIC8vIGlkZW50aWZpZXIKKyAgICAgICAgICAgICAgICBHZXRQdXRJbmZvKERvTm90VGhy
b3dJZk5vdEZvdW5kLCBMb2NhbENsb3N1cmVWYXIsIEluaXRpYWxpemF0aW9uTW9kZTo6Tm90SW5p
dGlhbGl6YXRpb24pLm9wZXJhbmQoKSwgLy8gaW5mbworICAgICAgICAgICAgICAgIDAsIC8vIGxv
Y2FsIHNjb3BlIGRlcHRoCisgICAgICAgICAgICAgICAgc3RvcmFnZS5zY29wZU9mZnNldC5vZmZz
ZXQoKSwgLy8gc2NvcGUgb2Zmc2V0CisgICAgICAgICAgICAgICAgcHJvZmlsZSAvLyBwcm9maWxl
CisgICAgICAgICAgICApOworICAgICAgICB9KTsKKworICAgICAgICAvLyBDbGlwIHRoZSB1bm5l
Y2Vzc2FyeSBieXRlY29kZXMuCisgICAgICAgIG1faW5zZXJ0aW9uU2V0LnJlbW92ZUJ5dGVjb2Rl
KGRhdGEuc2F2ZVBvaW50KTsKKyAgICAgICAgbV9pbnNlcnRpb25TZXQucmVtb3ZlQnl0ZWNvZGUo
ZGF0YS5yZXN1bWVQb2ludCk7CisgICAgfQorCisgICAgbV9pbnNlcnRpb25TZXQuZXhlY3V0ZSgp
OworfQorCit2b2lkIHBlcmZvcm1HZW5lcmF0b3JpZmljYXRpb24oVW5saW5rZWRDb2RlQmxvY2sq
IGNvZGVCbG9jaywgVW5saW5rZWRDb2RlQmxvY2s6OlVucGFja2VkSW5zdHJ1Y3Rpb25zJiBpbnN0
cnVjdGlvbnMsIFN5bWJvbFRhYmxlKiBnZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlLCBpbnQgZ2Vu
ZXJhdG9yRnJhbWVTeW1ib2xUYWJsZUluZGV4KQoreworICAgIEJ5dGVjb2RlR2VuZXJhdG9yaWZp
Y2F0aW9uIHBhc3MoY29kZUJsb2NrLCBpbnN0cnVjdGlvbnMsIGdlbmVyYXRvckZyYW1lU3ltYm9s
VGFibGUsIGdlbmVyYXRvckZyYW1lU3ltYm9sVGFibGVJbmRleCk7CisgICAgcGFzcy5ydW4oKTsK
K30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmViN2VjOTZlZDcwZGJiYTIyMTExZWIxMzc3MzNmYjIwMDU1YjExMWEKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmlj
YXRpb24uaApAQCAtMCwwICsxLDM2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IFl1c3Vr
ZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpbmNsdWRlICJVbmxpbmtlZENvZGVCbG9jay5oIgorCituYW1lc3BhY2UgSlNDIHsKKwor
Y2xhc3MgU3ltYm9sVGFibGU7CisKK3ZvaWQgcGVyZm9ybUdlbmVyYXRvcmlmaWNhdGlvbihVbmxp
bmtlZENvZGVCbG9jayosIFVubGlua2VkQ29kZUJsb2NrOjpVbnBhY2tlZEluc3RydWN0aW9ucyYs
IFN5bWJvbFRhYmxlKiBnZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlLCBpbnQgZ2VuZXJhdG9yRnJh
bWVTeW1ib2xUYWJsZUluZGV4KTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVHcmFwaC5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlR3JhcGguaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYzM2ODE2
YzA2NDMyMTVhZTMxNTc3YTUyYWQ4NDVhNTc5MjM1ZGY0Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlR3JhcGguaApAQCAtMCwwICsxLDEy
NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRl
YUBnbWFpbC5jb20+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQnl0ZWNv
ZGVCYXNpY0Jsb2NrLmgiCisjaW5jbHVkZSA8d3RmL0luZGV4ZWRDb250YWluZXJJdGVyYXRvci5o
PgorI2luY2x1ZGUgPHd0Zi9JdGVyYXRvclJhbmdlLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgQnl0ZWNvZGVCYXNpY0Jsb2NrOworCit0ZW1w
bGF0ZTx0eXBlbmFtZSBCbG9jaz4KK2NsYXNzIEJ5dGVjb2RlR3JhcGggeworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEJ5dGVjb2RlR3JhcGgp
OworcHVibGljOgorICAgIHR5cGVkZWYgQmxvY2sgQ29kZUJsb2NrOworICAgIHR5cGVkZWYgdHlw
ZW5hbWUgQmxvY2s6Okluc3RydWN0aW9uIEluc3RydWN0aW9uOworICAgIHR5cGVkZWYgVmVjdG9y
PHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiBCYXNpY0Jsb2Nrc1ZlY3RvcjsK
KworICAgIGlubGluZSBCeXRlY29kZUdyYXBoKEJsb2NrKiwgdHlwZW5hbWUgQmxvY2s6OlVucGFj
a2VkSW5zdHJ1Y3Rpb25zJik7CisKKyAgICBCbG9jayogY29kZUJsb2NrKCkgY29uc3QgeyByZXR1
cm4gbV9jb2RlQmxvY2s7IH0KKworICAgIHR5cGVuYW1lIEJsb2NrOjpVbnBhY2tlZEluc3RydWN0
aW9ucyYgaW5zdHJ1Y3Rpb25zKCkgeyByZXR1cm4gbV9pbnN0cnVjdGlvbnM7IH0KKworICAgIFdU
Rjo6SXRlcmF0b3JSYW5nZTxCYXNpY0Jsb2Nrc1ZlY3Rvcjo6cmV2ZXJzZV9pdGVyYXRvcj4gYmFz
aWNCbG9ja3NJblJldmVyc2VPcmRlcigpCisgICAgeworICAgICAgICByZXR1cm4gV1RGOjptYWtl
SXRlcmF0b3JSYW5nZShtX2Jhc2ljQmxvY2tzLnJiZWdpbigpLCBtX2Jhc2ljQmxvY2tzLnJlbmQo
KSk7CisgICAgfQorCisgICAgc3RhdGljIGJvb2wgYmxvY2tDb250YWluc0J5dGVjb2RlT2Zmc2V0
KEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KQorICAg
IHsKKyAgICAgICAgdW5zaWduZWQgbGVhZGVyT2Zmc2V0ID0gYmxvY2stPmxlYWRlckJ5dGVjb2Rl
T2Zmc2V0KCk7CisgICAgICAgIHJldHVybiBieXRlY29kZU9mZnNldCA+PSBsZWFkZXJPZmZzZXQg
JiYgYnl0ZWNvZGVPZmZzZXQgPCBsZWFkZXJPZmZzZXQgKyBibG9jay0+dG90YWxCeXRlY29kZUxl
bmd0aCgpOworICAgIH0KKworICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogZmluZEJhc2ljQmxvY2tG
b3JCeXRlY29kZU9mZnNldCh1bnNpZ25lZCBieXRlY29kZU9mZnNldCkKKyAgICB7CisgICAgICAg
IC8qCisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9iYXNpY0Jsb2Nrcy5z
aXplKCk7IGkrKykgeworICAgICAgICAgICAgICAgIGlmIChibG9ja0NvbnRhaW5zQnl0ZWNvZGVP
ZmZzZXQobV9iYXNpY0Jsb2Nrc1tpXS5nZXQoKSwgYnl0ZWNvZGVPZmZzZXQpKQorICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gbV9iYXNpY0Jsb2Nrc1tpXS5nZXQoKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAqLworCisgICAgICAgIHN0ZDo6dW5pcXVl
X3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+KiBiYXNpY0Jsb2NrID0gYXBwcm94aW1hdGVCaW5hcnlT
ZWFyY2g8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4sIHVuc2lnbmVkPihtX2Jh
c2ljQmxvY2tzLCBtX2Jhc2ljQmxvY2tzLnNpemUoKSwgYnl0ZWNvZGVPZmZzZXQsIFtdIChzdGQ6
OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiogYmFzaWNCbG9jaykgeyByZXR1cm4gKCpi
YXNpY0Jsb2NrKS0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKTsgfSk7CisgICAgICAgIC8vIFdlIGZv
dW5kIHRoZSBibG9jayB3ZSB3ZXJlIGxvb2tpbmcgZm9yLgorICAgICAgICBpZiAoYmxvY2tDb250
YWluc0J5dGVjb2RlT2Zmc2V0KCgqYmFzaWNCbG9jaykuZ2V0KCksIGJ5dGVjb2RlT2Zmc2V0KSkK
KyAgICAgICAgICAgIHJldHVybiAoKmJhc2ljQmxvY2spLmdldCgpOworCisgICAgICAgIC8vIEJh
c2ljIGJsb2NrIGlzIHRvIHRoZSBsZWZ0IG9mIHRoZSByZXR1cm5lZCBibG9jay4KKyAgICAgICAg
aWYgKGJ5dGVjb2RlT2Zmc2V0IDwgKCpiYXNpY0Jsb2NrKS0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQo
KSkgeworICAgICAgICAgICAgQVNTRVJUKGJhc2ljQmxvY2sgLSAxID49IG1fYmFzaWNCbG9ja3Mu
ZGF0YSgpKTsKKyAgICAgICAgICAgIEFTU0VSVChibG9ja0NvbnRhaW5zQnl0ZWNvZGVPZmZzZXQo
YmFzaWNCbG9ja1stMV0uZ2V0KCksIGJ5dGVjb2RlT2Zmc2V0KSk7CisgICAgICAgICAgICByZXR1
cm4gYmFzaWNCbG9ja1stMV0uZ2V0KCk7CisgICAgICAgIH0KKworICAgICAgICAvLyBCYXNpYyBi
bG9jayBpcyB0byB0aGUgcmlnaHQgb2YgdGhlIHJldHVybmVkIGJsb2NrLgorICAgICAgICBBU1NF
UlQoJmJhc2ljQmxvY2tbMV0gPD0gJm1fYmFzaWNCbG9ja3MubGFzdCgpKTsKKyAgICAgICAgQVNT
RVJUKGJsb2NrQ29udGFpbnNCeXRlY29kZU9mZnNldChiYXNpY0Jsb2NrWzFdLmdldCgpLCBieXRl
Y29kZU9mZnNldCkpOworICAgICAgICByZXR1cm4gYmFzaWNCbG9ja1sxXS5nZXQoKTsKKyAgICB9
CisKKyAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGZpbmRCYXNpY0Jsb2NrV2l0aExlYWRlck9mZnNl
dCh1bnNpZ25lZCBsZWFkZXJPZmZzZXQpCisgICAgeworICAgICAgICByZXR1cm4gKCp0cnlCaW5h
cnlTZWFyY2g8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4sIHVuc2lnbmVkPiht
X2Jhc2ljQmxvY2tzLCBtX2Jhc2ljQmxvY2tzLnNpemUoKSwgbGVhZGVyT2Zmc2V0LCBbXSAoc3Rk
Ojp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4qIGJhc2ljQmxvY2spIHsgcmV0dXJuICgq
YmFzaWNCbG9jayktPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCk7IH0pKS5nZXQoKTsKKyAgICB9CisK
KyAgICB1bnNpZ25lZCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9iYXNpY0Jsb2Nrcy5zaXplKCk7
IH0KKyAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGF0KHVuc2lnbmVkIGluZGV4KSBjb25zdCB7IHJl
dHVybiBtX2Jhc2ljQmxvY2tzW2luZGV4XS5nZXQoKTsgfQorICAgIEJ5dGVjb2RlQmFzaWNCbG9j
ayogb3BlcmF0b3JbXSh1bnNpZ25lZCBpbmRleCkgY29uc3QgeyByZXR1cm4gYXQoaW5kZXgpOyB9
CisKKyAgICB0eXBlZGVmIFdURjo6SW5kZXhlZENvbnRhaW5lckl0ZXJhdG9yPEJ5dGVjb2RlR3Jh
cGg8QmxvY2s+PiBpdGVyYXRvcjsKKworICAgIGl0ZXJhdG9yIGJlZ2luKCkgY29uc3QgeyByZXR1
cm4gaXRlcmF0b3IoKnRoaXMsIDApOyB9CisgICAgaXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1
cm4gaXRlcmF0b3IoKnRoaXMsIHNpemUoKSk7IH0KKyAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGZp
cnN0KCkgeyByZXR1cm4gYXQoMCk7IH0KKyAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGxhc3QoKSB7
IHJldHVybiBhdChzaXplKCkgLSAxKTsgfQorCitwcml2YXRlOgorICAgIEJsb2NrKiBtX2NvZGVC
bG9jazsKKyAgICBCYXNpY0Jsb2Nrc1ZlY3RvciBtX2Jhc2ljQmxvY2tzOworICAgIHR5cGVuYW1l
IEJsb2NrOjpVbnBhY2tlZEluc3RydWN0aW9ucyYgbV9pbnN0cnVjdGlvbnM7Cit9OworCisKK3Rl
bXBsYXRlPHR5cGVuYW1lIEJsb2NrPgorQnl0ZWNvZGVHcmFwaDxCbG9jaz46OkJ5dGVjb2RlR3Jh
cGgoQmxvY2sqIGNvZGVCbG9jaywgdHlwZW5hbWUgQmxvY2s6OlVucGFja2VkSW5zdHJ1Y3Rpb25z
JiBpbnN0cnVjdGlvbnMpCisgICAgOiBtX2NvZGVCbG9jayhjb2RlQmxvY2spCisgICAgLCBtX2lu
c3RydWN0aW9ucyhpbnN0cnVjdGlvbnMpCit7CisgICAgQVNTRVJUKG1fY29kZUJsb2NrKTsKKyAg
ICBCeXRlY29kZUJhc2ljQmxvY2s6OmNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzKG1fY29kZUJs
b2NrLCBpbnN0cnVjdGlvbnMuYmVnaW4oKSwgaW5zdHJ1Y3Rpb25zLnNpemUoKSwgbV9iYXNpY0Js
b2Nrcyk7CisgICAgQVNTRVJUKG1fYmFzaWNCbG9ja3Muc2l6ZSgpKTsKK30KKworfSAvLyBuYW1l
c3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwCmluZGV4IDE3ZTgyYTJmYmJhMDE1MDQzZTk5
ZDM0ZWQyNTY5MzcyYjM2ZjdhODUuLmFkM2MwMjFlMWVhNDM3YTMwMzY0OTUwZDVhMGJiNDhjMjY0
MTllNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZUxpdmVuZXNzQW5hbHlzaXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwCkBAIC0zMSwxOTggKzMxLDY2IEBACiAjaW5j
bHVkZSAiQnl0ZWNvZGVVc2VEZWYuaCIKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRl
ICJGdWxsQnl0ZWNvZGVMaXZlbmVzcy5oIgorI2luY2x1ZGUgIkludGVycHJldGVySW5saW5lcy5o
IgogI2luY2x1ZGUgIlByZWNpc2VKdW1wVGFyZ2V0cy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAog
Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMoQ29kZUJs
b2NrKiBjb2RlQmxvY2spCi0gICAgOiBtX2NvZGVCbG9jayhjb2RlQmxvY2spCisgICAgOiBtX2dy
YXBoKGNvZGVCbG9jaywgY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKSkKIHsKLSAgICBBU1NFUlQo
bV9jb2RlQmxvY2spOwogICAgIGNvbXB1dGUoKTsKIH0KIAotc3RhdGljIGJvb2wgaXNWYWxpZFJl
Z2lzdGVyRm9yTGl2ZW5lc3MoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGludCBvcGVyYW5kKQordGVt
cGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KK3ZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpj
b21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBPcGNvZGVJ
RCBvcGNvZGVJRCwgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBGYXN0Qml0VmVjdG9yJiwgY29u
c3QgRnVuY3RvciYgZnVuY3RvcikKIHsKLSAgICBpZiAoY29kZUJsb2NrLT5pc0NvbnN0YW50UmVn
aXN0ZXJJbmRleChvcGVyYW5kKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIAotICAgIFZp
cnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnKG9wZXJhbmQpOwotICAgIHJldHVybiB2aXJ0dWFsUmVn
LmlzTG9jYWwoKTsKLX0KLQotc3RhdGljIHVuc2lnbmVkIGdldExlYWRlck9mZnNldEZvckJhc2lj
QmxvY2soc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4qIGJhc2ljQmxvY2spCi17
Ci0gICAgcmV0dXJuICgqYmFzaWNCbG9jayktPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCk7Ci19Ci0K
LXN0YXRpYyBCeXRlY29kZUJhc2ljQmxvY2sqIGZpbmRCYXNpY0Jsb2NrV2l0aExlYWRlck9mZnNl
dChWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+JiBiYXNpY0Jsb2Nr
cywgdW5zaWduZWQgbGVhZGVyT2Zmc2V0KQotewotICAgIHJldHVybiAoKnRyeUJpbmFyeVNlYXJj
aDxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiwgdW5zaWduZWQ+KGJhc2ljQmxv
Y2tzLCBiYXNpY0Jsb2Nrcy5zaXplKCksIGxlYWRlck9mZnNldCwgZ2V0TGVhZGVyT2Zmc2V0Rm9y
QmFzaWNCbG9jaykpLmdldCgpOwotfQotCi1zdGF0aWMgYm9vbCBibG9ja0NvbnRhaW5zQnl0ZWNv
ZGVPZmZzZXQoQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaywgdW5zaWduZWQgYnl0ZWNvZGVPZmZz
ZXQpCi17Ci0gICAgdW5zaWduZWQgbGVhZGVyT2Zmc2V0ID0gYmxvY2stPmxlYWRlckJ5dGVjb2Rl
T2Zmc2V0KCk7Ci0gICAgcmV0dXJuIGJ5dGVjb2RlT2Zmc2V0ID49IGxlYWRlck9mZnNldCAmJiBi
eXRlY29kZU9mZnNldCA8IGxlYWRlck9mZnNldCArIGJsb2NrLT50b3RhbEJ5dGVjb2RlTGVuZ3Ro
KCk7Ci19Ci0KLXN0YXRpYyBCeXRlY29kZUJhc2ljQmxvY2sqIGZpbmRCYXNpY0Jsb2NrRm9yQnl0
ZWNvZGVPZmZzZXQoVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYg
YmFzaWNCbG9ja3MsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KQotewotLyoKLSAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgYmFzaWNCbG9ja3Muc2l6ZSgpOyBpKyspIHsKLSAgICAgICAgaWYg
KGJsb2NrQ29udGFpbnNCeXRlY29kZU9mZnNldChiYXNpY0Jsb2Nrc1tpXS5nZXQoKSwgYnl0ZWNv
ZGVPZmZzZXQpKQotICAgICAgICAgICAgcmV0dXJuIGJhc2ljQmxvY2tzW2ldLmdldCgpOwotICAg
IH0KLSAgICByZXR1cm4gMDsKLSovCi0gICAgc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNC
bG9jaz4qIGJhc2ljQmxvY2sgPSBhcHByb3hpbWF0ZUJpbmFyeVNlYXJjaDxzdGQ6OnVuaXF1ZV9w
dHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiwgdW5zaWduZWQ+KAotICAgICAgICBiYXNpY0Jsb2Nrcywg
YmFzaWNCbG9ja3Muc2l6ZSgpLCBieXRlY29kZU9mZnNldCwgZ2V0TGVhZGVyT2Zmc2V0Rm9yQmFz
aWNCbG9jayk7Ci0gICAgLy8gV2UgZm91bmQgdGhlIGJsb2NrIHdlIHdlcmUgbG9va2luZyBmb3Iu
Ci0gICAgaWYgKGJsb2NrQ29udGFpbnNCeXRlY29kZU9mZnNldCgoKmJhc2ljQmxvY2spLmdldCgp
LCBieXRlY29kZU9mZnNldCkpCi0gICAgICAgIHJldHVybiAoKmJhc2ljQmxvY2spLmdldCgpOwot
Ci0gICAgLy8gQmFzaWMgYmxvY2sgaXMgdG8gdGhlIGxlZnQgb2YgdGhlIHJldHVybmVkIGJsb2Nr
LgotICAgIGlmIChieXRlY29kZU9mZnNldCA8ICgqYmFzaWNCbG9jayktPmxlYWRlckJ5dGVjb2Rl
T2Zmc2V0KCkpIHsKLSAgICAgICAgQVNTRVJUKGJhc2ljQmxvY2sgLSAxID49IGJhc2ljQmxvY2tz
LmRhdGEoKSk7Ci0gICAgICAgIEFTU0VSVChibG9ja0NvbnRhaW5zQnl0ZWNvZGVPZmZzZXQoYmFz
aWNCbG9ja1stMV0uZ2V0KCksIGJ5dGVjb2RlT2Zmc2V0KSk7Ci0gICAgICAgIHJldHVybiBiYXNp
Y0Jsb2NrWy0xXS5nZXQoKTsKLSAgICB9Ci0KLSAgICAvLyBCYXNpYyBibG9jayBpcyB0byB0aGUg
cmlnaHQgb2YgdGhlIHJldHVybmVkIGJsb2NrLgotICAgIEFTU0VSVCgmYmFzaWNCbG9ja1sxXSA8
PSAmYmFzaWNCbG9ja3MubGFzdCgpKTsKLSAgICBBU1NFUlQoYmxvY2tDb250YWluc0J5dGVjb2Rl
T2Zmc2V0KGJhc2ljQmxvY2tbMV0uZ2V0KCksIGJ5dGVjb2RlT2Zmc2V0KSk7Ci0gICAgcmV0dXJu
IGJhc2ljQmxvY2tbMV0uZ2V0KCk7Ci19Ci0KLS8vIFNpbXBsaWZpZWQgaW50ZXJmYWNlIHRvIGJ5
dGVjb2RlIHVzZS9kZWYsIHdoaWNoIGRldGVybWluZXMgZGVmcyBmaXJzdCBhbmQgdGhlbiB1c2Vz
LCBhbmQgaW5jbHVkZXMKLS8vIGV4Y2VwdGlvbiBoYW5kbGVycyBpbiB0aGUgdXNlcy4KLXRlbXBs
YXRlPHR5cGVuYW1lIFVzZUZ1bmN0b3IsIHR5cGVuYW1lIERlZkZ1bmN0b3I+Ci1zdGF0aWMgdm9p
ZCBzdGVwT3Zlckluc3RydWN0aW9uKENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29kZUJhc2lj
QmxvY2sqIGJsb2NrLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+
JiBiYXNpY0Jsb2NrcywgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIGNvbnN0IFVzZUZ1bmN0b3Im
IHVzZSwgY29uc3QgRGVmRnVuY3RvciYgZGVmKQotewotICAgIC8vIFRoaXMgYWJzdHJhY3RseSBl
eGVjdXRlIHRoZSBpbnN0cnVjdGlvbiBpbiByZXZlcnNlLiBJbnN0cnVjdGlvbnMgbG9naWNhbGx5
IGZpcnN0IHVzZSBvcGVyYW5kcyBhbmQKLSAgICAvLyB0aGVuIGRlZmluZSBvcGVyYW5kcy4gVGhp
cyBsb2dpY2FsIG9yZGVyaW5nIGlzIG5lY2Vzc2FyeSBmb3Igb3BlcmF0aW9ucyB0aGF0IHVzZSBh
bmQgZGVmIHRoZSBzYW1lCi0gICAgLy8gb3BlcmFuZCwgbGlrZToKLSAgICAvLwotICAgIC8vICAg
ICBvcF9hZGQgbG9jMSwgbG9jMSwgbG9jMgotICAgIC8vCi0gICAgLy8gVGhlIHVzZSBvZiBsb2Mx
IGhhcHBlbnMgYmVmb3JlIHRoZSBkZWYgb2YgbG9jMS4gVGhhdCdzIGEgc2VtYW50aWMgcmVxdWly
ZW1lbnQgc2luY2UgdGhlIGFkZAotICAgIC8vIG9wZXJhdGlvbiBjYW5ub3QgdHJhdmVsIGZvcndh
cmQgaW4gdGltZSB0byByZWFkIHRoZSB2YWx1ZSB0aGF0IGl0IHdpbGwgcHJvZHVjZSBhZnRlciBy
ZWFkaW5nIHRoYXQKLSAgICAvLyB2YWx1ZS4gU2luY2Ugd2UgYXJlIGV4ZWN1dGluZyBpbiByZXZl
cnNlLCB0aGlzIG1lYW5zIHRoYXQgd2UgbXVzdCBkbyBkZWZzIGJlZm9yZSB1c2VzIChyZXZlcnNl
IG9mCi0gICAgLy8gdXNlcyBiZWZvcmUgZGVmcykuCi0gICAgLy8KLSAgICAvLyBTaW5jZSB0aGlz
IGlzIGEgbGl2ZW5lc3MgYW5hbHlzaXMsIHRoaXMgb3JkZXJpbmcgZW5kcyB1cCBiZWluZyBwYXJ0
aWN1bGFybHkgaW1wb3J0YW50OiBpZiB3ZSBkaWQKLSAgICAvLyB1c2VzIGJlZm9yZSBkZWZzLCB0
aGVuIHRoZSBhZGQgb3BlcmF0aW9uIGFib3ZlIHdvdWxkIGFwcGVhciB0byBub3QgaGF2ZSBsb2Mx
IGxpdmUsIHNpbmNlIHdlJ2QKLSAgICAvLyBmaXJzdCBhZGQgaXQgdG8gdGhlIG91dCBzZXQgKHRo
ZSB1c2UpLCBhbmQgdGhlbiB3ZSdkIHJlbW92ZSBpdCAodGhlIGRlZikuCi0gICAgCi0gICAgY29t
cHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldCgKLSAgICAgICAgY29kZUJsb2NrLCBibG9jaywgYnl0
ZWNvZGVPZmZzZXQsCi0gICAgICAgIFsmXSAoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEluc3RydWN0
aW9uKiwgT3Bjb2RlSUQsIGludCBvcGVyYW5kKSB7Ci0gICAgICAgICAgICBpZiAoaXNWYWxpZFJl
Z2lzdGVyRm9yTGl2ZW5lc3MoY29kZUJsb2NrLCBvcGVyYW5kKSkKLSAgICAgICAgICAgICAgICBk
ZWYoVmlydHVhbFJlZ2lzdGVyKG9wZXJhbmQpLnRvTG9jYWwoKSk7Ci0gICAgICAgIH0pOwotCi0g
ICAgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCgKLSAgICAgICAgY29kZUJsb2NrLCBibG9j
aywgYnl0ZWNvZGVPZmZzZXQsCi0gICAgICAgIFsmXSAoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIElu
c3RydWN0aW9uKiwgT3Bjb2RlSUQsIGludCBvcGVyYW5kKSB7Ci0gICAgICAgICAgICBpZiAoaXNW
YWxpZFJlZ2lzdGVyRm9yTGl2ZW5lc3MoY29kZUJsb2NrLCBvcGVyYW5kKSkKLSAgICAgICAgICAg
ICAgICB1c2UoVmlydHVhbFJlZ2lzdGVyKG9wZXJhbmQpLnRvTG9jYWwoKSk7Ci0gICAgICAgIH0p
OwotCi0gICAgLy8gSWYgd2UgaGF2ZSBhbiBleGNlcHRpb24gaGFuZGxlciwgd2Ugd2FudCB0aGUg
bGl2ZS1pbiB2YXJpYWJsZXMgb2YgdGhlIAotICAgIC8vIGV4Y2VwdGlvbiBoYW5kbGVyIGJsb2Nr
IHRvIGJlIGluY2x1ZGVkIGluIHRoZSBsaXZlLWluIG9mIHRoaXMgcGFydGljdWxhciBieXRlY29k
ZS4KLSAgICBpZiAoSGFuZGxlckluZm8qIGhhbmRsZXIgPSBjb2RlQmxvY2stPmhhbmRsZXJGb3JC
eXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCkpIHsKLSAgICAgICAgLy8gRklYTUU6IFRoaXMg
cmVzdW1lIGNoZWNrIHNob3VsZCBub3QgYmUgbmVlZGVkLgotICAgICAgICAvLyBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU5MjgxCi0gICAgICAgIEludGVycHJldGVy
KiBpbnRlcnByZXRlciA9IGNvZGVCbG9jay0+dm0oKS0+aW50ZXJwcmV0ZXI7Ci0gICAgICAgIElu
c3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiA9IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCku
YmVnaW4oKTsKLSAgICAgICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uID0gJmluc3RydWN0aW9u
c0JlZ2luW2J5dGVjb2RlT2Zmc2V0XTsKLSAgICAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnRl
cnByZXRlci0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb24tPnUub3Bjb2RlKTsKLSAgICAgICAgaWYg
KG9wY29kZUlEICE9IG9wX3Jlc3VtZSkgewotICAgICAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2Nr
KiBoYW5kbGVyQmxvY2sgPSBmaW5kQmFzaWNCbG9ja1dpdGhMZWFkZXJPZmZzZXQoYmFzaWNCbG9j
a3MsIGhhbmRsZXItPnRhcmdldCk7Ci0gICAgICAgICAgICBBU1NFUlQoaGFuZGxlckJsb2NrKTsK
LSAgICAgICAgICAgIGhhbmRsZXJCbG9jay0+aW4oKS5mb3JFYWNoU2V0Qml0KHVzZSk7Ci0gICAg
ICAgIH0KLSAgICB9Ci19Ci0KLXN0YXRpYyB2b2lkIHN0ZXBPdmVySW5zdHJ1Y3Rpb24oQ29kZUJs
b2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2ssIFZlY3RvcjxzdGQ6OnVu
aXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mIGJhc2ljQmxvY2tzLCB1bnNpZ25lZCBieXRl
Y29kZU9mZnNldCwgRmFzdEJpdFZlY3RvciYgb3V0KQotewotICAgIHN0ZXBPdmVySW5zdHJ1Y3Rp
b24oCi0gICAgICAgIGNvZGVCbG9jaywgYmxvY2ssIGJhc2ljQmxvY2tzLCBieXRlY29kZU9mZnNl
dCwKLSAgICAgICAgWyZdICh1bnNpZ25lZCBiaXRJbmRleCkgewotICAgICAgICAgICAgLy8gVGhp
cyBpcyB0aGUgdXNlIGZ1bmN0b3IsIHNvIHdlIHNldCB0aGUgYml0LgotICAgICAgICAgICAgb3V0
LnNldChiaXRJbmRleCk7Ci0gICAgICAgIH0sCi0gICAgICAgIFsmXSAodW5zaWduZWQgYml0SW5k
ZXgpIHsKLSAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIGRlZiBmdW5jdG9yLCBzbyB3ZSBjbGVh
ciB0aGUgYml0LgotICAgICAgICAgICAgb3V0LmNsZWFyKGJpdEluZGV4KTsKLSAgICAgICAgfSk7
Ci19Ci0KLXN0YXRpYyB2b2lkIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQnl0ZWNvZGVPZmZzZXQo
Q29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2ssIFZlY3Rvcjxz
dGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mIGJhc2ljQmxvY2tzLCB1bnNpZ25l
ZCB0YXJnZXRPZmZzZXQsIEZhc3RCaXRWZWN0b3ImIHJlc3VsdCkKLXsKLSAgICBBU1NFUlQoIWJs
b2NrLT5pc0V4aXRCbG9jaygpKTsKLSAgICBBU1NFUlQoIWJsb2NrLT5pc0VudHJ5QmxvY2soKSk7
Ci0KLSAgICBGYXN0Qml0VmVjdG9yIG91dCA9IGJsb2NrLT5vdXQoKTsKLQotICAgIGZvciAoaW50
IGkgPSBibG9jay0+Ynl0ZWNvZGVPZmZzZXRzKCkuc2l6ZSgpIC0gMTsgaSA+PSAwOyBpLS0pIHsK
LSAgICAgICAgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQgPSBibG9jay0+Ynl0ZWNvZGVPZmZzZXRz
KClbaV07Ci0gICAgICAgIGlmICh0YXJnZXRPZmZzZXQgPiBieXRlY29kZU9mZnNldCkKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAKLSAgICAgICAgc3RlcE92ZXJJbnN0cnVjdGlvbihjb2Rl
QmxvY2ssIGJsb2NrLCBiYXNpY0Jsb2NrcywgYnl0ZWNvZGVPZmZzZXQsIG91dCk7Ci0gICAgfQot
Ci0gICAgcmVzdWx0LnNldChvdXQpOworICAgIEpTQzo6Y29tcHV0ZURlZnNGb3JCeXRlY29kZU9m
ZnNldChjb2RlQmxvY2ssIG9wY29kZUlELCBpbnN0cnVjdGlvbiwgZnVuY3Rvcik7CiB9CiAKLXN0
YXRpYyB2b2lkIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQmxvY2soQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2ssIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0
ZWNvZGVCYXNpY0Jsb2NrPj4mIGJhc2ljQmxvY2tzKQordGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rv
cj4KK3ZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlVXNlc0ZvckJ5dGVjb2Rl
T2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBPcGNvZGVJRCBvcGNvZGVJRCwgSW5zdHJ1Y3Rp
b24qIGluc3RydWN0aW9uLCBGYXN0Qml0VmVjdG9yJiwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikK
IHsKLSAgICBpZiAoYmxvY2stPmlzRXhpdEJsb2NrKCkgfHwgYmxvY2stPmlzRW50cnlCbG9jaygp
KQotICAgICAgICByZXR1cm47Ci0gICAgY29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCeXRlY29kZU9m
ZnNldChjb2RlQmxvY2ssIGJsb2NrLCBiYXNpY0Jsb2NrcywgYmxvY2stPmxlYWRlckJ5dGVjb2Rl
T2Zmc2V0KCksIGJsb2NrLT5pbigpKTsKKyAgICBKU0M6OmNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVP
ZmZzZXQoY29kZUJsb2NrLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb24sIGZ1bmN0b3IpOwogfQogCiB2
b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6cnVuTGl2ZW5lc3NGaXhwb2ludCgpCiB7Ci0g
ICAgVW5saW5rZWRDb2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrID0gbV9jb2RlQmxvY2stPnVu
bGlua2VkQ29kZUJsb2NrKCk7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBtX2dyYXBoLmNv
ZGVCbG9jaygpOworICAgIFVubGlua2VkQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jayA9IGNv
ZGVCbG9jay0+dW5saW5rZWRDb2RlQmxvY2soKTsKICAgICB1bnNpZ25lZCBudW1iZXJPZlZhcmlh
YmxlcyA9IHVubGlua2VkQ29kZUJsb2NrLT5tX251bUNhbGxlZUxvY2FsczsKIAotICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBtX2Jhc2ljQmxvY2tzLnNpemUoKTsgaSsrKSB7Ci0gICAgICAg
IEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2sgPSBtX2Jhc2ljQmxvY2tzW2ldLmdldCgpOworICAg
IGZvciAoQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jayA6IG1fZ3JhcGgpIHsKICAgICAgICAgYmxv
Y2stPmluKCkucmVzaXplKG51bWJlck9mVmFyaWFibGVzKTsKICAgICAgICAgYmxvY2stPm91dCgp
LnJlc2l6ZShudW1iZXJPZlZhcmlhYmxlcyk7CiAgICAgfQogCiAgICAgYm9vbCBjaGFuZ2VkOwot
ICAgIG1fYmFzaWNCbG9ja3MubGFzdCgpLT5pbigpLmNsZWFyQWxsKCk7Ci0gICAgbV9iYXNpY0Js
b2Nrcy5sYXN0KCktPm91dCgpLmNsZWFyQWxsKCk7CisgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBs
YXN0QmxvY2sgPSBtX2dyYXBoLmxhc3QoKTsKKyAgICBsYXN0QmxvY2stPmluKCkuY2xlYXJBbGwo
KTsKKyAgICBsYXN0QmxvY2stPm91dCgpLmNsZWFyQWxsKCk7CiAgICAgRmFzdEJpdFZlY3RvciBu
ZXdPdXQ7Ci0gICAgbmV3T3V0LnJlc2l6ZShtX2Jhc2ljQmxvY2tzLmxhc3QoKS0+b3V0KCkubnVt
Qml0cygpKTsKKyAgICBuZXdPdXQucmVzaXplKGxhc3RCbG9jay0+b3V0KCkubnVtQml0cygpKTsK
ICAgICBkbyB7CiAgICAgICAgIGNoYW5nZWQgPSBmYWxzZTsKLSAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gbV9iYXNpY0Jsb2Nrcy5zaXplKCkgLSAxOyBpLS07KSB7Ci0gICAgICAgICAgICBCeXRl
Y29kZUJhc2ljQmxvY2sqIGJsb2NrID0gbV9iYXNpY0Jsb2Nrc1tpXS5nZXQoKTsKKyAgICAgICAg
Zm9yIChzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiYgYmxvY2sgOiBtX2dyYXBo
LmJhc2ljQmxvY2tzSW5SZXZlcnNlT3JkZXIoKSkgewogICAgICAgICAgICAgbmV3T3V0LmNsZWFy
QWxsKCk7Ci0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSAwOyBqIDwgYmxvY2stPnN1Y2Nl
c3NvcnMoKS5zaXplKCk7IGorKykKLSAgICAgICAgICAgICAgICBuZXdPdXQubWVyZ2UoYmxvY2st
PnN1Y2Nlc3NvcnMoKVtqXS0+aW4oKSk7Ci0gICAgICAgICAgICBib29sIG91dERpZENoYW5nZSA9
IGJsb2NrLT5vdXQoKS5zZXRBbmRDaGVjayhuZXdPdXQpOwotICAgICAgICAgICAgY29tcHV0ZUxv
Y2FsTGl2ZW5lc3NGb3JCbG9jayhtX2NvZGVCbG9jaywgYmxvY2ssIG1fYmFzaWNCbG9ja3MpOwot
ICAgICAgICAgICAgY2hhbmdlZCB8PSBvdXREaWRDaGFuZ2U7CisgICAgICAgICAgICBmb3IgKEJ5
dGVjb2RlQmFzaWNCbG9jayogc3VjY2Vzc29yIDogYmxvY2stPnN1Y2Nlc3NvcnMoKSkKKyAgICAg
ICAgICAgICAgICBuZXdPdXQubWVyZ2Uoc3VjY2Vzc29yLT5pbigpKTsKKyAgICAgICAgICAgIGJs
b2NrLT5vdXQoKS5zZXQobmV3T3V0KTsKKyAgICAgICAgICAgIGNoYW5nZWQgfD0gY29tcHV0ZUxv
Y2FsTGl2ZW5lc3NGb3JCbG9jayhtX2dyYXBoLCBibG9jay5nZXQoKSk7CiAgICAgICAgIH0KICAg
ICB9IHdoaWxlIChjaGFuZ2VkKTsKIH0KIAogdm9pZCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6
OmdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQs
IEZhc3RCaXRWZWN0b3ImIHJlc3VsdCkKIHsKLSAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2Nr
ID0gZmluZEJhc2ljQmxvY2tGb3JCeXRlY29kZU9mZnNldChtX2Jhc2ljQmxvY2tzLCBieXRlY29k
ZU9mZnNldCk7CisgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jayA9IG1fZ3JhcGguZmluZEJh
c2ljQmxvY2tGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCk7CiAgICAgQVNTRVJUKGJs
b2NrKTsKICAgICBBU1NFUlQoIWJsb2NrLT5pc0VudHJ5QmxvY2soKSk7CiAgICAgQVNTRVJUKCFi
bG9jay0+aXNFeGl0QmxvY2soKSk7CiAgICAgcmVzdWx0LnJlc2l6ZShibG9jay0+b3V0KCkubnVt
Qml0cygpKTsKLSAgICBjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJ5dGVjb2RlT2Zmc2V0KG1fY29k
ZUJsb2NrLCBibG9jaywgbV9iYXNpY0Jsb2NrcywgYnl0ZWNvZGVPZmZzZXQsIHJlc3VsdCk7Cisg
ICAgY29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCeXRlY29kZU9mZnNldChtX2dyYXBoLCBibG9jaywg
Ynl0ZWNvZGVPZmZzZXQsIHJlc3VsdCk7CiB9CiAKIGJvb2wgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5
c2lzOjpvcGVyYW5kSXNMaXZlQXRCeXRlY29kZU9mZnNldChpbnQgb3BlcmFuZCwgdW5zaWduZWQg
Ynl0ZWNvZGVPZmZzZXQpCkBAIC0yNDQsMTEgKzExMiwxMSBAQCBGYXN0Qml0VmVjdG9yIEJ5dGVj
b2RlTGl2ZW5lc3NBbmFseXNpczo6Z2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29kZU9mZnNldCh1bnNp
Z25lZAogdm9pZCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGVGdWxsTGl2ZW5lc3Mo
RnVsbEJ5dGVjb2RlTGl2ZW5lc3MmIHJlc3VsdCkKIHsKICAgICBGYXN0Qml0VmVjdG9yIG91dDsK
KyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IG1fZ3JhcGguY29kZUJsb2NrKCk7CiAgICAgCi0g
ICAgcmVzdWx0Lm1fbWFwLnJlc2l6ZShtX2NvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgp
KTsKKyAgICByZXN1bHQubV9tYXAucmVzaXplKGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuc2l6
ZSgpKTsKICAgICAKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2Jhc2ljQmxvY2tzLnNpemUoKTsg
aS0tOykgewotICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrID0gbV9iYXNpY0Jsb2Nr
c1tpXS5nZXQoKTsKKyAgICBmb3IgKHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+
JiBibG9jayA6IG1fZ3JhcGguYmFzaWNCbG9ja3NJblJldmVyc2VPcmRlcigpKSB7CiAgICAgICAg
IGlmIChibG9jay0+aXNFbnRyeUJsb2NrKCkgfHwgYmxvY2stPmlzRXhpdEJsb2NrKCkpCiAgICAg
ICAgICAgICBjb250aW51ZTsKICAgICAgICAgCkBAIC0yNTYsNyArMTI0LDcgQEAgdm9pZCBCeXRl
Y29kZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGVGdWxsTGl2ZW5lc3MoRnVsbEJ5dGVjb2RlTGl2
ZW5lc3MmIHJlc3VsdCkKICAgICAgICAgCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGJsb2Nr
LT5ieXRlY29kZU9mZnNldHMoKS5zaXplKCk7IGktLTspIHsKICAgICAgICAgICAgIHVuc2lnbmVk
IGJ5dGVjb2RlT2Zmc2V0ID0gYmxvY2stPmJ5dGVjb2RlT2Zmc2V0cygpW2ldOwotICAgICAgICAg
ICAgc3RlcE92ZXJJbnN0cnVjdGlvbihtX2NvZGVCbG9jaywgYmxvY2ssIG1fYmFzaWNCbG9ja3Ms
IGJ5dGVjb2RlT2Zmc2V0LCBvdXQpOworICAgICAgICAgICAgc3RlcE92ZXJJbnN0cnVjdGlvbiht
X2dyYXBoLCBieXRlY29kZU9mZnNldCwgb3V0KTsKICAgICAgICAgICAgIHJlc3VsdC5tX21hcFti
eXRlY29kZU9mZnNldF0gPSBvdXQ7CiAgICAgICAgIH0KICAgICB9CkBAIC0yNjYsMTEgKzEzNCwx
MSBAQCB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0ZUtpbGxzKEJ5dGVjb2Rl
S2lsbHMmIHJlc3VsdCkKIHsKICAgICBGYXN0Qml0VmVjdG9yIG91dDsKICAgICAKLSAgICByZXN1
bHQubV9jb2RlQmxvY2sgPSBtX2NvZGVCbG9jazsKLSAgICByZXN1bHQubV9raWxsU2V0cyA9IHN0
ZDo6bWFrZV91bmlxdWU8Qnl0ZWNvZGVLaWxsczo6S2lsbFNldFtdPihtX2NvZGVCbG9jay0+aW5z
dHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IG1fZ3JhcGgu
Y29kZUJsb2NrKCk7CisgICAgcmVzdWx0Lm1fY29kZUJsb2NrID0gY29kZUJsb2NrOworICAgIHJl
c3VsdC5tX2tpbGxTZXRzID0gc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZUtpbGxzOjpLaWxsU2V0
W10+KGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKICAgICAKLSAgICBmb3IgKHVu
c2lnbmVkIGkgPSBtX2Jhc2ljQmxvY2tzLnNpemUoKTsgaS0tOykgewotICAgICAgICBCeXRlY29k
ZUJhc2ljQmxvY2sqIGJsb2NrID0gbV9iYXNpY0Jsb2Nrc1tpXS5nZXQoKTsKKyAgICBmb3IgKHN0
ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+JiBibG9jayA6IG1fZ3JhcGguYmFzaWNC
bG9ja3NJblJldmVyc2VPcmRlcigpKSB7CiAgICAgICAgIGlmIChibG9jay0+aXNFbnRyeUJsb2Nr
KCkgfHwgYmxvY2stPmlzRXhpdEJsb2NrKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAg
ICAgCkBAIC0yNzksNyArMTQ3LDcgQEAgdm9pZCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmNv
bXB1dGVLaWxscyhCeXRlY29kZUtpbGxzJiByZXN1bHQpCiAgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IGJsb2NrLT5ieXRlY29kZU9mZnNldHMoKS5zaXplKCk7IGktLTspIHsKICAgICAgICAgICAg
IHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0ID0gYmxvY2stPmJ5dGVjb2RlT2Zmc2V0cygpW2ldOwog
ICAgICAgICAgICAgc3RlcE92ZXJJbnN0cnVjdGlvbigKLSAgICAgICAgICAgICAgICBtX2NvZGVC
bG9jaywgYmxvY2ssIG1fYmFzaWNCbG9ja3MsIGJ5dGVjb2RlT2Zmc2V0LAorICAgICAgICAgICAg
ICAgIG1fZ3JhcGgsIGJ5dGVjb2RlT2Zmc2V0LCBvdXQsCiAgICAgICAgICAgICAgICAgWyZdICh1
bnNpZ25lZCBpbmRleCkgewogICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIGZvciB1c2Vz
LgogICAgICAgICAgICAgICAgICAgICBpZiAob3V0LmdldChpbmRleCkpCkBAIC0yOTcsMTIgKzE2
NSwxMyBAQCB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0ZUtpbGxzKEJ5dGVj
b2RlS2lsbHMmIHJlc3VsdCkKIAogdm9pZCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmR1bXBS
ZXN1bHRzKCkKIHsKLSAgICBkYXRhTG9nKCJcbkR1bXBpbmcgYnl0ZWNvZGUgbGl2ZW5lc3MgZm9y
ICIsICptX2NvZGVCbG9jaywgIjpcbiIpOwotICAgIEludGVycHJldGVyKiBpbnRlcnByZXRlciA9
IG1fY29kZUJsb2NrLT52bSgpLT5pbnRlcnByZXRlcjsKLSAgICBJbnN0cnVjdGlvbiogaW5zdHJ1
Y3Rpb25zQmVnaW4gPSBtX2NvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsKLSAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9iYXNpY0Jsb2Nrcy5zaXplKCk7IGkrKykgewotICAg
ICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrID0gbV9iYXNpY0Jsb2Nrc1tpXS5nZXQoKTsK
LSAgICAgICAgZGF0YUxvZ0YoIlxuQnl0ZWNvZGUgYmFzaWMgYmxvY2sgJXU6ICVwIChvZmZzZXQ6
ICV1LCBsZW5ndGg6ICV1KVxuIiwgaSwgYmxvY2ssIGJsb2NrLT5sZWFkZXJCeXRlY29kZU9mZnNl
dCgpLCBibG9jay0+dG90YWxCeXRlY29kZUxlbmd0aCgpKTsKKyAgICBDb2RlQmxvY2sqIGNvZGVC
bG9jayA9IG1fZ3JhcGguY29kZUJsb2NrKCk7CisgICAgZGF0YUxvZygiXG5EdW1waW5nIGJ5dGVj
b2RlIGxpdmVuZXNzIGZvciAiLCAqY29kZUJsb2NrLCAiOlxuIik7CisgICAgSW50ZXJwcmV0ZXIq
IGludGVycHJldGVyID0gY29kZUJsb2NrLT52bSgpLT5pbnRlcnByZXRlcjsKKyAgICBJbnN0cnVj
dGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4gPSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2lu
KCk7CisgICAgdW5zaWduZWQgaSA9IDA7CisgICAgZm9yIChCeXRlY29kZUJhc2ljQmxvY2sqIGJs
b2NrIDogbV9ncmFwaCkgeworICAgICAgICBkYXRhTG9nRigiXG5CeXRlY29kZSBiYXNpYyBibG9j
ayAldTogJXAgKG9mZnNldDogJXUsIGxlbmd0aDogJXUpXG4iLCBpKyssIGJsb2NrLCBibG9jay0+
bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKSwgYmxvY2stPnRvdGFsQnl0ZWNvZGVMZW5ndGgoKSk7CiAg
ICAgICAgIGRhdGFMb2dGKCJTdWNjZXNzb3JzOiAiKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBq
ID0gMDsgaiA8IGJsb2NrLT5zdWNjZXNzb3JzKCkuc2l6ZSgpOyBqKyspIHsKICAgICAgICAgICAg
IEJ5dGVjb2RlQmFzaWNCbG9jayogc3VjY2Vzc29yID0gYmxvY2stPnN1Y2Nlc3NvcnMoKVtqXTsK
QEAgLTMyNyw3ICsxOTYsNyBAQCB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6ZHVtcFJl
c3VsdHMoKQogICAgICAgICAgICAgICAgICAgICBkYXRhTG9nRigiJXUgIiwgaik7CiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICBkYXRhTG9nRigiXG4iKTsKLSAgICAgICAgICAgIG1fY29kZUJs
b2NrLT5kdW1wQnl0ZWNvZGUoV1RGOjpkYXRhRmlsZSgpLCBtX2NvZGVCbG9jay0+Z2xvYmFsT2Jq
ZWN0KCktPmdsb2JhbEV4ZWMoKSwgaW5zdHJ1Y3Rpb25zQmVnaW4sIGN1cnJlbnRJbnN0cnVjdGlv
bik7CisgICAgICAgICAgICBjb2RlQmxvY2stPmR1bXBCeXRlY29kZShXVEY6OmRhdGFGaWxlKCks
IGNvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKSwgaW5zdHJ1Y3Rpb25zQmVn
aW4sIGN1cnJlbnRJbnN0cnVjdGlvbik7CiAKICAgICAgICAgICAgIE9wY29kZUlEIG9wY29kZUlE
ID0gaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGluc3RydWN0aW9uc0JlZ2luW2J5dGVjb2RlT2Zm
c2V0XS51Lm9wY29kZSk7CiAgICAgICAgICAgICB1bnNpZ25lZCBvcGNvZGVMZW5ndGggPSBvcGNv
ZGVMZW5ndGhzW29wY29kZUlEXTsKQEAgLTM0Niw4ICsyMTUsNiBAQCB2b2lkIEJ5dGVjb2RlTGl2
ZW5lc3NBbmFseXNpczo6ZHVtcFJlc3VsdHMoKQogCiB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFs
eXNpczo6Y29tcHV0ZSgpCiB7Ci0gICAgY29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MobV9jb2Rl
QmxvY2ssIG1fYmFzaWNCbG9ja3MpOwotICAgIEFTU0VSVChtX2Jhc2ljQmxvY2tzLnNpemUoKSk7
CiAgICAgcnVuTGl2ZW5lc3NGaXhwb2ludCgpOwogCiAgICAgaWYgKE9wdGlvbnM6OmR1bXBCeXRl
Y29kZUxpdmVuZXNzUmVzdWx0cygpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5oCmluZGV4IGVjZTE2ZjIxZjAx
NTEwYTY0MjdmZDg0MTE0MDc5YmVkODcwYzA4NzUuLmE0ODVmODk1ZGVkZjY5OWRjNmJiMjdkNTQ5
ZGMxNWQ4ZjVkN2M4MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmgKQEAgLTIzLDEwICsyMywxMSBAQAog
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgQnl0ZWNv
ZGVMaXZlbmVzc0FuYWx5c2lzX2gKLSNkZWZpbmUgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzX2gK
KyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQnl0ZWNvZGVCYXNpY0Jsb2NrLmgiCisjaW5jbHVk
ZSAiQnl0ZWNvZGVHcmFwaC5oIgorI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgPHd0
Zi9GYXN0Qml0VmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CkBAIC0zNCwxMyArMzUsMjcgQEAKIG5hbWVzcGFjZSBKU0MgewogCiBjbGFz
cyBCeXRlY29kZUtpbGxzOwotY2xhc3MgQ29kZUJsb2NrOwogY2xhc3MgRnVsbEJ5dGVjb2RlTGl2
ZW5lc3M7CiAKLWNsYXNzIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcyB7Cit0ZW1wbGF0ZTx0eXBl
bmFtZSBEZXJpdmVkQW5hbHlzaXM+CitjbGFzcyBCeXRlY29kZUxpdmVuZXNzTG9jYWxQcm9wYWdh
dGlvbiB7Citwcm90ZWN0ZWQ6CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgR3JhcGgsIHR5cGVuYW1l
IFVzZUZ1bmN0b3IsIHR5cGVuYW1lIERlZkZ1bmN0b3I+IHZvaWQgc3RlcE92ZXJJbnN0cnVjdGlv
bihHcmFwaCYsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBGYXN0Qml0VmVjdG9yJiBvdXQsIGNv
bnN0IFVzZUZ1bmN0b3ImLCBjb25zdCBEZWZGdW5jdG9yJik7CisKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBHcmFwaD4gdm9pZCBzdGVwT3Zlckluc3RydWN0aW9uKEdyYXBoJiwgdW5zaWduZWQgYnl0
ZWNvZGVPZmZzZXQsIEZhc3RCaXRWZWN0b3ImIG91dCk7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBHcmFwaD4gYm9vbCBjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJ5dGVjb2RlT2Zmc2V0KEdyYXBo
JiwgQnl0ZWNvZGVCYXNpY0Jsb2NrKiwgdW5zaWduZWQgdGFyZ2V0T2Zmc2V0LCBGYXN0Qml0VmVj
dG9yJiByZXN1bHQpOworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgR3JhcGg+IGJvb2wgY29tcHV0
ZUxvY2FsTGl2ZW5lc3NGb3JCbG9jayhHcmFwaCYsIEJ5dGVjb2RlQmFzaWNCbG9jayopOworCisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgR3JhcGg+IEZhc3RCaXRWZWN0b3IgZ2V0TGl2ZW5lc3NJbmZv
QXRCeXRlY29kZU9mZnNldChHcmFwaCYsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KTsKK307CisK
K2NsYXNzIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcyA6IHByaXZhdGUgQnl0ZWNvZGVMaXZlbmVz
c0xvY2FsUHJvcGFnYXRpb248Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzPiB7CiAgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQnl0ZWNvZGVMaXZl
bmVzc0FuYWx5c2lzKTsKIHB1YmxpYzoKKyAgICBmcmllbmQgY2xhc3MgQnl0ZWNvZGVMaXZlbmVz
c0xvY2FsUHJvcGFnYXRpb248Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzPjsKICAgICBCeXRlY29k
ZUxpdmVuZXNzQW5hbHlzaXMoQ29kZUJsb2NrKik7CiAgICAgCiAgICAgYm9vbCBvcGVyYW5kSXNM
aXZlQXRCeXRlY29kZU9mZnNldChpbnQgb3BlcmFuZCwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQp
OwpAQCAtNTYsMTQgKzcxLDE1IEBAIGNsYXNzIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcyB7CiAK
ICAgICB2b2lkIGdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQodW5zaWduZWQgYnl0ZWNv
ZGVPZmZzZXQsIEZhc3RCaXRWZWN0b3ImKTsKIAotICAgIENvZGVCbG9jayogbV9jb2RlQmxvY2s7
Ci0gICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiBtX2Jhc2lj
QmxvY2tzOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHZvaWQgY29tcHV0ZURlZnNG
b3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqLCBPcGNvZGVJRCwgSW5zdHJ1Y3Rpb24qLCBGYXN0
Qml0VmVjdG9yJiwgY29uc3QgRnVuY3RvciYpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0
b3I+IHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqLCBPcGNvZGVJ
RCwgSW5zdHJ1Y3Rpb24qLCBGYXN0Qml0VmVjdG9yJiwgY29uc3QgRnVuY3RvciYpOworCisgICAg
Qnl0ZWNvZGVHcmFwaDxDb2RlQmxvY2s+IG1fZ3JhcGg7CiB9OwogCiBpbmxpbmUgYm9vbCBvcGVy
YW5kSXNBbHdheXNMaXZlKGludCBvcGVyYW5kKTsKIGlubGluZSBib29sIG9wZXJhbmRUaGF0SXNO
b3RBbHdheXNMaXZlSXNMaXZlKGNvbnN0IEZhc3RCaXRWZWN0b3ImIG91dCwgaW50IG9wZXJhbmQp
OwogaW5saW5lIGJvb2wgb3BlcmFuZElzTGl2ZShjb25zdCBGYXN0Qml0VmVjdG9yJiBvdXQsIGlu
dCBvcGVyYW5kKTsKK2lubGluZSBib29sIGlzVmFsaWRSZWdpc3RlckZvckxpdmVuZXNzKGludCBv
cGVyYW5kKTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCi0KLSNlbmRpZiAvLyBCeXRlY29kZUxpdmVu
ZXNzQW5hbHlzaXNfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNJbmxpbmVzLmgKaW5kZXggOWI1Yzc1
NWZjYjZjZDUxODA1MTQ1MDA3ODkyMmFjNGQ2ZDRkMjM4Zi4uOWM1OTBkMWEzYjVkMzc2NDNhNThj
OWE3NGMzNWNiMTQxZDc4MTdhMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzSW5saW5lcy5oCkBA
IC0yNiw2ICsyNiw3IEBACiAjaWZuZGVmIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGluZXNf
aAogI2RlZmluZSBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNJbmxpbmVzX2gKIAorI2luY2x1ZGUg
IkJ5dGVjb2RlR3JhcGguaCIKICNpbmNsdWRlICJCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuaCIK
ICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJPcGVyYXRpb25zLmgiCkBAIC01MCw2
ICs1MSwxMjIgQEAgaW5saW5lIGJvb2wgb3BlcmFuZElzTGl2ZShjb25zdCBGYXN0Qml0VmVjdG9y
JiBvdXQsIGludCBvcGVyYW5kKQogICAgIHJldHVybiBvcGVyYW5kSXNBbHdheXNMaXZlKG9wZXJh
bmQpIHx8IG9wZXJhbmRUaGF0SXNOb3RBbHdheXNMaXZlSXNMaXZlKG91dCwgb3BlcmFuZCk7CiB9
CiAKK2lubGluZSBib29sIGlzVmFsaWRSZWdpc3RlckZvckxpdmVuZXNzKGludCBvcGVyYW5kKQor
eworICAgIFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnKG9wZXJhbmQpOworICAgIGlmICh2aXJ0
dWFsUmVnLmlzQ29uc3RhbnQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiB2
aXJ0dWFsUmVnLmlzTG9jYWwoKTsKK30KKworLy8gU2ltcGxpZmllZCBpbnRlcmZhY2UgdG8gYnl0
ZWNvZGUgdXNlL2RlZiwgd2hpY2ggZGV0ZXJtaW5lcyBkZWZzIGZpcnN0IGFuZCB0aGVuIHVzZXMs
IGFuZCBpbmNsdWRlcworLy8gZXhjZXB0aW9uIGhhbmRsZXJzIGluIHRoZSB1c2VzLgordGVtcGxh
dGU8dHlwZW5hbWUgRGVyaXZlZEFuYWx5c2lzPgordGVtcGxhdGU8dHlwZW5hbWUgR3JhcGgsIHR5
cGVuYW1lIFVzZUZ1bmN0b3IsIHR5cGVuYW1lIERlZkZ1bmN0b3I+CitpbmxpbmUgdm9pZCBCeXRl
Y29kZUxpdmVuZXNzTG9jYWxQcm9wYWdhdGlvbjxEZXJpdmVkQW5hbHlzaXM+OjpzdGVwT3Zlcklu
c3RydWN0aW9uKEdyYXBoJiBncmFwaCwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIEZhc3RCaXRW
ZWN0b3ImIG91dCwgY29uc3QgVXNlRnVuY3RvciYgdXNlLCBjb25zdCBEZWZGdW5jdG9yJiBkZWYp
Cit7CisgICAgLy8gVGhpcyBhYnN0cmFjdGx5IGV4ZWN1dGUgdGhlIGluc3RydWN0aW9uIGluIHJl
dmVyc2UuIEluc3RydWN0aW9ucyBsb2dpY2FsbHkgZmlyc3QgdXNlIG9wZXJhbmRzIGFuZAorICAg
IC8vIHRoZW4gZGVmaW5lIG9wZXJhbmRzLiBUaGlzIGxvZ2ljYWwgb3JkZXJpbmcgaXMgbmVjZXNz
YXJ5IGZvciBvcGVyYXRpb25zIHRoYXQgdXNlIGFuZCBkZWYgdGhlIHNhbWUKKyAgICAvLyBvcGVy
YW5kLCBsaWtlOgorICAgIC8vCisgICAgLy8gICAgIG9wX2FkZCBsb2MxLCBsb2MxLCBsb2MyCisg
ICAgLy8KKyAgICAvLyBUaGUgdXNlIG9mIGxvYzEgaGFwcGVucyBiZWZvcmUgdGhlIGRlZiBvZiBs
b2MxLiBUaGF0J3MgYSBzZW1hbnRpYyByZXF1aXJlbWVudCBzaW5jZSB0aGUgYWRkCisgICAgLy8g
b3BlcmF0aW9uIGNhbm5vdCB0cmF2ZWwgZm9yd2FyZCBpbiB0aW1lIHRvIHJlYWQgdGhlIHZhbHVl
IHRoYXQgaXQgd2lsbCBwcm9kdWNlIGFmdGVyIHJlYWRpbmcgdGhhdAorICAgIC8vIHZhbHVlLiBT
aW5jZSB3ZSBhcmUgZXhlY3V0aW5nIGluIHJldmVyc2UsIHRoaXMgbWVhbnMgdGhhdCB3ZSBtdXN0
IGRvIGRlZnMgYmVmb3JlIHVzZXMgKHJldmVyc2Ugb2YKKyAgICAvLyB1c2VzIGJlZm9yZSBkZWZz
KS4KKyAgICAvLworICAgIC8vIFNpbmNlIHRoaXMgaXMgYSBsaXZlbmVzcyBhbmFseXNpcywgdGhp
cyBvcmRlcmluZyBlbmRzIHVwIGJlaW5nIHBhcnRpY3VsYXJseSBpbXBvcnRhbnQ6IGlmIHdlIGRp
ZAorICAgIC8vIHVzZXMgYmVmb3JlIGRlZnMsIHRoZW4gdGhlIGFkZCBvcGVyYXRpb24gYWJvdmUg
d291bGQgYXBwZWFyIHRvIG5vdCBoYXZlIGxvYzEgbGl2ZSwgc2luY2Ugd2UnZAorICAgIC8vIGZp
cnN0IGFkZCBpdCB0byB0aGUgb3V0IHNldCAodGhlIHVzZSksIGFuZCB0aGVuIHdlJ2QgcmVtb3Zl
IGl0ICh0aGUgZGVmKS4KKworICAgIGF1dG8qIGNvZGVCbG9jayA9IGdyYXBoLmNvZGVCbG9jaygp
OworICAgIEludGVycHJldGVyKiBpbnRlcnByZXRlciA9IGNvZGVCbG9jay0+dm0oKS0+aW50ZXJw
cmV0ZXI7CisgICAgYXV0byogaW5zdHJ1Y3Rpb25zQmVnaW4gPSBncmFwaC5pbnN0cnVjdGlvbnMo
KS5iZWdpbigpOworICAgIGF1dG8qIGluc3RydWN0aW9uID0gJmluc3RydWN0aW9uc0JlZ2luW2J5
dGVjb2RlT2Zmc2V0XTsKKyAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGludGVycHJldGVyLT5nZXRP
cGNvZGVJRCgqaW5zdHJ1Y3Rpb24pOworCisgICAgc3RhdGljX2Nhc3Q8RGVyaXZlZEFuYWx5c2lz
Kj4odGhpcyktPmNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoCisgICAgICAgIGNvZGVCbG9j
aywgb3Bjb2RlSUQsIGluc3RydWN0aW9uLCBvdXQsCisgICAgICAgIFsmXSAodHlwZW5hbWUgR3Jh
cGg6OkNvZGVCbG9jayosIHR5cGVuYW1lIEdyYXBoOjpJbnN0cnVjdGlvbiosIE9wY29kZUlELCBp
bnQgb3BlcmFuZCkgeworICAgICAgICAgICAgaWYgKGlzVmFsaWRSZWdpc3RlckZvckxpdmVuZXNz
KG9wZXJhbmQpKQorICAgICAgICAgICAgICAgIGRlZihWaXJ0dWFsUmVnaXN0ZXIob3BlcmFuZCku
dG9Mb2NhbCgpKTsKKyAgICAgICAgfSk7CisKKyAgICBzdGF0aWNfY2FzdDxEZXJpdmVkQW5hbHlz
aXMqPih0aGlzKS0+Y29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCgKKyAgICAgICAgY29kZUJs
b2NrLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb24sIG91dCwKKyAgICAgICAgWyZdICh0eXBlbmFtZSBH
cmFwaDo6Q29kZUJsb2NrKiwgdHlwZW5hbWUgR3JhcGg6Okluc3RydWN0aW9uKiwgT3Bjb2RlSUQs
IGludCBvcGVyYW5kKSB7CisgICAgICAgICAgICBpZiAoaXNWYWxpZFJlZ2lzdGVyRm9yTGl2ZW5l
c3Mob3BlcmFuZCkpCisgICAgICAgICAgICAgICAgdXNlKFZpcnR1YWxSZWdpc3RlcihvcGVyYW5k
KS50b0xvY2FsKCkpOworICAgICAgICB9KTsKKworICAgIC8vIElmIHdlIGhhdmUgYW4gZXhjZXB0
aW9uIGhhbmRsZXIsIHdlIHdhbnQgdGhlIGxpdmUtaW4gdmFyaWFibGVzIG9mIHRoZSAKKyAgICAv
LyBleGNlcHRpb24gaGFuZGxlciBibG9jayB0byBiZSBpbmNsdWRlZCBpbiB0aGUgbGl2ZS1pbiBv
ZiB0aGlzIHBhcnRpY3VsYXIgYnl0ZWNvZGUuCisgICAgaWYgKGF1dG8qIGhhbmRsZXIgPSBjb2Rl
QmxvY2stPmhhbmRsZXJGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCkpIHsKKyAgICAg
ICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBoYW5kbGVyQmxvY2sgPSBncmFwaC5maW5kQmFzaWNCbG9j
a1dpdGhMZWFkZXJPZmZzZXQoaGFuZGxlci0+dGFyZ2V0KTsKKyAgICAgICAgQVNTRVJUKGhhbmRs
ZXJCbG9jayk7CisgICAgICAgIGhhbmRsZXJCbG9jay0+aW4oKS5mb3JFYWNoU2V0Qml0KHVzZSk7
CisgICAgfQorfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBEZXJpdmVkQW5hbHlzaXM+Cit0ZW1wbGF0
ZTx0eXBlbmFtZSBHcmFwaD4KK2lubGluZSB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NMb2NhbFByb3Bh
Z2F0aW9uPERlcml2ZWRBbmFseXNpcz46OnN0ZXBPdmVySW5zdHJ1Y3Rpb24oR3JhcGgmIGdyYXBo
LCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgRmFzdEJpdFZlY3RvciYgb3V0KQoreworICAgIHN0
ZXBPdmVySW5zdHJ1Y3Rpb24oCisgICAgICAgIGdyYXBoLCBieXRlY29kZU9mZnNldCwgb3V0LAor
ICAgICAgICBbJl0gKHVuc2lnbmVkIGJpdEluZGV4KSB7CisgICAgICAgICAgICAvLyBUaGlzIGlz
IHRoZSB1c2UgZnVuY3Rvciwgc28gd2Ugc2V0IHRoZSBiaXQuCisgICAgICAgICAgICBvdXQuc2V0
KGJpdEluZGV4KTsKKyAgICAgICAgfSwKKyAgICAgICAgWyZdICh1bnNpZ25lZCBiaXRJbmRleCkg
eworICAgICAgICAgICAgLy8gVGhpcyBpcyB0aGUgZGVmIGZ1bmN0b3IsIHNvIHdlIGNsZWFyIHRo
ZSBiaXQuCisgICAgICAgICAgICBvdXQuY2xlYXIoYml0SW5kZXgpOworICAgICAgICB9KTsKK30K
KwordGVtcGxhdGU8dHlwZW5hbWUgRGVyaXZlZEFuYWx5c2lzPgordGVtcGxhdGU8dHlwZW5hbWUg
R3JhcGg+CitpbmxpbmUgYm9vbCBCeXRlY29kZUxpdmVuZXNzTG9jYWxQcm9wYWdhdGlvbjxEZXJp
dmVkQW5hbHlzaXM+Ojpjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJ5dGVjb2RlT2Zmc2V0KEdyYXBo
JiBncmFwaCwgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaywgdW5zaWduZWQgdGFyZ2V0T2Zmc2V0
LCBGYXN0Qml0VmVjdG9yJiByZXN1bHQpCit7CisgICAgQVNTRVJUKCFibG9jay0+aXNFeGl0Qmxv
Y2soKSk7CisgICAgQVNTRVJUKCFibG9jay0+aXNFbnRyeUJsb2NrKCkpOworCisgICAgRmFzdEJp
dFZlY3RvciBvdXQgPSBibG9jay0+b3V0KCk7CisKKyAgICBmb3IgKGludCBpID0gYmxvY2stPmJ5
dGVjb2RlT2Zmc2V0cygpLnNpemUoKSAtIDE7IGkgPj0gMDsgaS0tKSB7CisgICAgICAgIHVuc2ln
bmVkIGJ5dGVjb2RlT2Zmc2V0ID0gYmxvY2stPmJ5dGVjb2RlT2Zmc2V0cygpW2ldOworICAgICAg
ICBpZiAodGFyZ2V0T2Zmc2V0ID4gYnl0ZWNvZGVPZmZzZXQpCisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgc3RlcE92ZXJJbnN0cnVjdGlvbihncmFwaCwgYnl0ZWNvZGVPZmZzZXQsIG91dCk7
CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdC5zZXRBbmRDaGVjayhvdXQpOworfQorCit0ZW1w
bGF0ZTx0eXBlbmFtZSBEZXJpdmVkQW5hbHlzaXM+Cit0ZW1wbGF0ZTx0eXBlbmFtZSBHcmFwaD4K
K2lubGluZSBib29sIEJ5dGVjb2RlTGl2ZW5lc3NMb2NhbFByb3BhZ2F0aW9uPERlcml2ZWRBbmFs
eXNpcz46OmNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQmxvY2soR3JhcGgmIGdyYXBoLCBCeXRlY29k
ZUJhc2ljQmxvY2sqIGJsb2NrKQoreworICAgIGlmIChibG9jay0+aXNFeGl0QmxvY2soKSB8fCBi
bG9jay0+aXNFbnRyeUJsb2NrKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4g
Y29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCeXRlY29kZU9mZnNldChncmFwaCwgYmxvY2ssIGJsb2Nr
LT5sZWFkZXJCeXRlY29kZU9mZnNldCgpLCBibG9jay0+aW4oKSk7Cit9CisKK3RlbXBsYXRlPHR5
cGVuYW1lIERlcml2ZWRBbmFseXNpcz4KK3RlbXBsYXRlPHR5cGVuYW1lIEdyYXBoPgoraW5saW5l
IEZhc3RCaXRWZWN0b3IgQnl0ZWNvZGVMaXZlbmVzc0xvY2FsUHJvcGFnYXRpb248RGVyaXZlZEFu
YWx5c2lzPjo6Z2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29kZU9mZnNldChHcmFwaCYgZ3JhcGgsIHVu
c2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KQoreworICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2sg
PSBncmFwaC5maW5kQmFzaWNCbG9ja0ZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KTsK
KyAgICBBU1NFUlQoYmxvY2spOworICAgIEFTU0VSVCghYmxvY2stPmlzRW50cnlCbG9jaygpKTsK
KyAgICBBU1NFUlQoIWJsb2NrLT5pc0V4aXRCbG9jaygpKTsKKyAgICBGYXN0Qml0VmVjdG9yIG91
dDsKKyAgICBvdXQucmVzaXplKGJsb2NrLT5vdXQoKS5udW1CaXRzKCkpOworICAgIGNvbXB1dGVM
b2NhbExpdmVuZXNzRm9yQnl0ZWNvZGVPZmZzZXQoZ3JhcGgsIGJsb2NrLCBieXRlY29kZU9mZnNl
dCwgb3V0KTsKKyAgICByZXR1cm4gb3V0OworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2Vu
ZGlmIC8vIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGluZXNfaApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTW9kaWZpY2F0aW9uU2V0LmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZU1vZGlmaWNhdGlvblNldC5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uOGFjMmY4ZWNhMTE1OWMyMzE2YWI1MThiM2NhYWE3NDc0OGViYTU2MAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZU1vZGlmaWNhdGlvblNldC5jcHAKQEAgLTAsMCArMSw4NCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNiBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJCeXRlY29kZU1vZGlmaWNhdGlvblNldC5o
IgorCisjaW5jbHVkZSA8d3RmL0J1YmJsZVNvcnQuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2lu
dCBCeXRlY29kZU1vZGlmaWNhdGlvblNldDo6YWRqdXN0T2Zmc2V0KGludCBieXRlY29kZU9mZnNl
dCwgaW50IGp1bXBUYXJnZXQpCit7CisgICAgaWYgKGJ5dGVjb2RlT2Zmc2V0IDwganVtcFRhcmdl
dCkgeworICAgICAgICBhdXRvIHN0YXJ0ID0gc3RkOjpsb3dlcl9ib3VuZChtX2luc2VydGlvbnMu
YmVnaW4oKSwgbV9pbnNlcnRpb25zLmVuZCgpLCBieXRlY29kZU9mZnNldCwgWyZdIChjb25zdCBJ
bnNlcnRpb24mIGluc2VydGlvbiwgaW50IGJ5dGVjb2RlT2Zmc2V0KSB7CisgICAgICAgICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihpbnNlcnRpb24uaW5kZXgoKSkgPCBieXRlY29kZU9mZnNl
dDsKKyAgICAgICAgfSk7CisgICAgICAgIGlmIChzdGFydCAhPSBtX2luc2VydGlvbnMuZW5kKCkp
IHsKKyAgICAgICAgICAgIGF1dG8gZW5kID0gc3RkOjpsb3dlcl9ib3VuZChtX2luc2VydGlvbnMu
YmVnaW4oKSwgbV9pbnNlcnRpb25zLmVuZCgpLCBqdW1wVGFyZ2V0LCBbJl0gKGNvbnN0IEluc2Vy
dGlvbiYgaW5zZXJ0aW9uLCBpbnQganVtcFRhcmdldCkgeworICAgICAgICAgICAgICAgIHJldHVy
biBzdGF0aWNfY2FzdDxpbnQ+KGluc2VydGlvbi5pbmRleCgpKSA8IGp1bXBUYXJnZXQ7CisgICAg
ICAgICAgICB9KTsKKyAgICAgICAgICAgIGZvciAoOyBzdGFydCAhPSBlbmQ7ICsrc3RhcnQpIHsK
KyAgICAgICAgICAgICAgICBpZiAoc3RhcnQtPmVsZW1lbnQoKS50eXBlID09IENvbW1hbmQ6OlR5
cGU6OlJlbW92ZSkKKyAgICAgICAgICAgICAgICAgICAganVtcFRhcmdldCAtPSBzdGFydC0+ZWxl
bWVudCgpLmxlbmd0aDsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAg
IGp1bXBUYXJnZXQgKz0gc3RhcnQtPmVsZW1lbnQoKS5sZW5ndGg7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGp1bXBUYXJnZXQgLSBieXRlY29kZU9mZnNldDsKKyAg
ICB9CisKKyAgICBpZiAoYnl0ZWNvZGVPZmZzZXQgPT0ganVtcFRhcmdldCkKKyAgICAgICAgcmV0
dXJuIDA7CisKKyAgICByZXR1cm4gLWFkanVzdE9mZnNldChqdW1wVGFyZ2V0LCBieXRlY29kZU9m
ZnNldCk7Cit9CisKK3ZvaWQgQnl0ZWNvZGVNb2RpZmljYXRpb25TZXQ6OmFwcGx5TW9kaWZpY2F0
aW9uKCkKK3sKKyAgICBmb3IgKHNpemVfdCBpbnNlcnRpb25JbmRleCA9IG1faW5zZXJ0aW9ucy5z
aXplKCk7IGluc2VydGlvbkluZGV4LS07KSB7CisgICAgICAgIGNvbnN0IEluc2VydGlvbiYgaW5z
ZXJ0aW9uID0gbV9pbnNlcnRpb25zW2luc2VydGlvbkluZGV4XTsKKyAgICAgICAgaWYgKGluc2Vy
dGlvbi5lbGVtZW50KCkudHlwZSA9PSBDb21tYW5kOjpUeXBlOjpSZW1vdmUpCisgICAgICAgICAg
ICBtX2dyYXBoLmluc3RydWN0aW9ucygpLnJlbW92ZShpbnNlcnRpb24uaW5kZXgoKSwgaW5zZXJ0
aW9uLmVsZW1lbnQoKS5sZW5ndGgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX2dyYXBo
Lmluc3RydWN0aW9ucygpLmluc2VydChpbnNlcnRpb24uaW5kZXgoKSwgaW5zZXJ0aW9uLmVsZW1l
bnQoKS5ieXRlY29kZS5pbnN0cnVjdGlvbnMsIG9wY29kZUxlbmd0aChpbnNlcnRpb24uZWxlbWVu
dCgpLmJ5dGVjb2RlLmluc3RydWN0aW9uc1swXS51Lm9wY29kZSkpOworICAgIH0KKyAgICBtX2lu
c2VydGlvbnMuY2xlYXIoKTsKK30KKwordm9pZCBCeXRlY29kZU1vZGlmaWNhdGlvblNldDo6ZXhl
Y3V0ZSgpCit7CisgICAgV1RGOjpidWJibGVTb3J0KG1faW5zZXJ0aW9ucy5iZWdpbigpLCBtX2lu
c2VydGlvbnMuZW5kKCksIFtdIChjb25zdCBJbnNlcnRpb24mIGxocywgY29uc3QgSW5zZXJ0aW9u
JiByaHMpIHsKKyAgICAgICAgLy8gV2Ugd291bGQgbGlrZSB0byBwZXJmb3JtIHJlbW92ZSBvcGVy
YXRpb24gYmVmb3JlIGluc2VydGlvbi4KKyAgICAgICAgaWYgKGxocy5pbmRleCgpID09IHJocy5p
bmRleCgpKQorICAgICAgICAgICAgcmV0dXJuIHJocy5lbGVtZW50KCkudHlwZSA9PSBDb21tYW5k
OjpUeXBlOjpSZW1vdmU7CisgICAgICAgIHJldHVybiBsaHMgPCByaHM7CisgICAgfSk7CisKKyAg
ICBVbmxpbmtlZENvZGVCbG9jayogY29kZUJsb2NrID0gbV9ncmFwaC5jb2RlQmxvY2soKTsKKyAg
ICBjb2RlQmxvY2stPmFwcGx5TW9kaWZpY2F0aW9uKCp0aGlzKTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVNb2RpZmljYXRpb25TZXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZU1vZGlmaWNhdGlvblNldC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc5MzlkYWE0NWM4ZTI2NDIwOWU3YTIy
ZWNmM2UwZDc4YTRhZDM3YTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnl0ZWNvZGVNb2RpZmljYXRpb25TZXQuaApAQCAtMCwwICsxLDg4IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE2IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJCeXRlY29kZUdyYXBo
LmgiCisjaW5jbHVkZSAiQnl0ZWNvZGVzLmgiCisjaW5jbHVkZSAiVW5saW5rZWRDb2RlQmxvY2su
aCIKKyNpbmNsdWRlIDx3dGYvSW5zZXJ0aW9uLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFz
cyBCeXRlY29kZU1vZGlmaWNhdGlvblNldCB7CitwdWJsaWM6CisgICAgc3RydWN0IEluc2VydGVk
Qnl0ZWNvZGUgeworICAgICAgICBVbmxpbmtlZEluc3RydWN0aW9uIGluc3RydWN0aW9uc1tNQVhf
T1BDT0RFX0xFTkdUSF9PRl9CWVRFQ09ERV07CisgICAgfTsKKworICAgIHN0cnVjdCBDb21tYW5k
IHsKKyAgICAgICAgZW51bSBjbGFzcyBUeXBlIHsKKyAgICAgICAgICAgIEluc2VydCwKKyAgICAg
ICAgICAgIFJlbW92ZSwKKyAgICAgICAgfTsKKworICAgICAgICBUeXBlIHR5cGU7CisgICAgICAg
IHNpemVfdCBsZW5ndGg7CisgICAgICAgIEluc2VydGVkQnl0ZWNvZGUgYnl0ZWNvZGU7CisgICAg
fTsKKworICAgIHR5cGVkZWYgV1RGOjpJbnNlcnRpb248Q29tbWFuZD4gSW5zZXJ0aW9uOworCisg
ICAgQnl0ZWNvZGVNb2RpZmljYXRpb25TZXQoQnl0ZWNvZGVHcmFwaDxVbmxpbmtlZENvZGVCbG9j
az4mIGdyYXBoKQorICAgICAgICA6IG1fZ3JhcGgoZ3JhcGgpCisgICAgeworICAgIH0KKworICAg
IHRlbXBsYXRlPGNsYXNzLi4uIEFyZ3M+CisgICAgdm9pZCBpbnNlcnQodW5zaWduZWQgYnl0ZWNv
ZGVPZmZzZXQsIE9wY29kZUlEIG9wY29kZUlELCBBcmdzLi4uIGFyZ3MpCisgICAgeworICAgICAg
ICBJbnNlcnRlZEJ5dGVjb2RlIGJ5dGVjb2RlID0geyB7CisgICAgICAgICAgICBVbmxpbmtlZElu
c3RydWN0aW9uKG9wY29kZUlEKSwKKyAgICAgICAgICAgIFVubGlua2VkSW5zdHJ1Y3Rpb24oYXJn
cykuLi4KKyAgICAgICAgfSB9OworICAgICAgICBtX2luc2VydGlvbnMuYXBwZW5kKEluc2VydGlv
bihieXRlY29kZU9mZnNldCwgQ29tbWFuZCB7IENvbW1hbmQ6OlR5cGU6Okluc2VydCwgb3Bjb2Rl
TGVuZ3RoKG9wY29kZUlEKSwgYnl0ZWNvZGUgfSkpOworICAgIH0KKworICAgIHZvaWQgcmVtb3Zl
Qnl0ZWNvZGUodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpCisgICAgeworICAgICAgICBtX2luc2Vy
dGlvbnMuYXBwZW5kKEluc2VydGlvbihieXRlY29kZU9mZnNldCwgQ29tbWFuZCB7IENvbW1hbmQ6
OlR5cGU6OlJlbW92ZSwgb3Bjb2RlTGVuZ3RoKG1fZ3JhcGguaW5zdHJ1Y3Rpb25zKClbYnl0ZWNv
ZGVPZmZzZXRdLnUub3Bjb2RlKSwgSW5zZXJ0ZWRCeXRlY29kZSB7IH0gfSkpOworICAgIH0KKwor
ICAgIHZvaWQgZXhlY3V0ZSgpOworCisgICAgQnl0ZWNvZGVHcmFwaDxVbmxpbmtlZENvZGVCbG9j
az4mIGdyYXBoKCkgeyByZXR1cm4gbV9ncmFwaDsgfQorCisgICAgaW50IGFkanVzdE9mZnNldChp
bnQgYnl0ZWNvZGVPZmZzZXQsIGludCBqdW1wVGFyZ2V0KTsKKworcHJpdmF0ZToKKyAgICBmcmll
bmQgY2xhc3MgVW5saW5rZWRDb2RlQmxvY2s7CisgICAgdm9pZCBhcHBseU1vZGlmaWNhdGlvbigp
OworCisgICAgQnl0ZWNvZGVHcmFwaDxVbmxpbmtlZENvZGVCbG9jaz4mIG1fZ3JhcGg7CisgICAg
VmVjdG9yPEluc2VydGlvbiwgOD4gbV9pbnNlcnRpb25zOworfTsKKworfSAvLyBuYW1lc3BhY2Ug
SlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVV
c2VEZWYuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5o
CmluZGV4IDU3MDg0NGMzNWQ5MDI1ZWU5MWFkNDY5OGJhYjliYzFhNjdmZDgzNDkuLjc1OWY3OGM4
MTI4YmE3NjBjYzljZTUyZGZmNTNhNDhhZmI3MjJlNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCkBAIC0yNywxOCArMjcsMTMgQEAKICNk
ZWZpbmUgQnl0ZWNvZGVVc2VEZWZfaAogCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVk
ZSAiSW50ZXJwcmV0ZXIuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKLXRlbXBsYXRlPHR5cGVuYW1l
IEZ1bmN0b3I+Ci12b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoCi0gICAgQ29kZUJs
b2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2ssIHVuc2lnbmVkIGJ5dGVj
b2RlT2Zmc2V0LCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQordGVtcGxhdGU8dHlwZW5hbWUgQmxv
Y2ssIHR5cGVuYW1lIEZ1bmN0b3IsIHR5cGVuYW1lIEluc3RydWN0aW9uPgordm9pZCBjb21wdXRl
VXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KEJsb2NrKiBjb2RlQmxvY2ssIE9wY29kZUlEIG9wY29kZUlE
LCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiB7Ci0g
ICAgSW50ZXJwcmV0ZXIqIGludGVycHJldGVyID0gY29kZUJsb2NrLT52bSgpLT5pbnRlcnByZXRl
cjsKLSAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4gPSBjb2RlQmxvY2stPmluc3Ry
dWN0aW9ucygpLmJlZ2luKCk7Ci0gICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uID0gJmluc3Ry
dWN0aW9uc0JlZ2luW2J5dGVjb2RlT2Zmc2V0XTsKLSAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGlu
dGVycHJldGVyLT5nZXRPcGNvZGVJRChpbnN0cnVjdGlvbi0+dS5vcGNvZGUpOwotCiAgICAgaWYg
KG9wY29kZUlEICE9IG9wX2VudGVyICYmIGNvZGVCbG9jay0+d2FzQ29tcGlsZWRXaXRoRGVidWdn
aW5nT3Bjb2RlcygpICYmIGNvZGVCbG9jay0+c2NvcGVSZWdpc3RlcigpLmlzVmFsaWQoKSkKICAg
ICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgY29kZUJsb2Nr
LT5zY29wZVJlZ2lzdGVyKCkub2Zmc2V0KCkpOwogCkBAIC03NSw4ICs3MCw3IEBAIHZvaWQgY29t
cHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCgKICAgICBjYXNlIG9wX2puZXFfbnVsbDoKICAgICBj
YXNlIG9wX2RlYzoKICAgICBjYXNlIG9wX2luYzoKLSAgICBjYXNlIG9wX2xvZ19zaGFkb3dfY2hp
Y2tlbl9wcm9sb2d1ZToKLSAgICBjYXNlIG9wX3Jlc3VtZTogeworICAgIGNhc2Ugb3BfbG9nX3No
YWRvd19jaGlja2VuX3Byb2xvZ3VlOiB7CiAgICAgICAgIEFTU0VSVChvcGNvZGVMZW5ndGhzW29w
Y29kZUlEXSA+IDEpOwogICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9w
Y29kZUlELCBpbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOwogICAgICAgICByZXR1cm47CkBAIC0y
ODcsMzUgKzI4MSwyMiBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoCiAgICAg
ICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBjb2RlQmxv
Y2stPnNjb3BlUmVnaXN0ZXIoKS5vZmZzZXQoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0g
ICAgY2FzZSBvcF9zYXZlOiB7Ci0gICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlv
biwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7Ci0gICAgICAgIHVuc2lnbmVk
IG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldCA9IGJ5dGVjb2RlT2Zmc2V0ICsgaW5zdHJ1Y3Rpb25b
M10udS5vcGVyYW5kOwotICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIG1lcmdlUG9pbnRCbG9j
ayA9IG51bGxwdHI7Ci0gICAgICAgIGZvciAoQnl0ZWNvZGVCYXNpY0Jsb2NrKiBzdWNjZXNzb3Ig
OiBibG9jay0+c3VjY2Vzc29ycygpKSB7Ci0gICAgICAgICAgICBpZiAoc3VjY2Vzc29yLT5sZWFk
ZXJCeXRlY29kZU9mZnNldCgpID09IG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldCkgewotICAgICAg
ICAgICAgICAgIG1lcmdlUG9pbnRCbG9jayA9IHN1Y2Nlc3NvcjsKLSAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBBU1NFUlQobWVyZ2VQb2lu
dEJsb2NrKTsKLSAgICAgICAgbWVyZ2VQb2ludEJsb2NrLT5pbigpLmZvckVhY2hTZXRCaXQoWyZd
KHVuc2lnbmVkIGxvY2FsKSB7Ci0gICAgICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1
Y3Rpb24sIG9wY29kZUlELCB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChsb2NhbCkub2Zmc2V0KCkp
OwotICAgICAgICB9KTsKKworICAgIGNhc2Ugb3Bfc2F2ZToKKyAgICBjYXNlIG9wX3Jlc3VtZTog
eworICAgICAgICAvLyBEbyBub3RoaW5nIGluIGxpdmVuZXNzIGFuYWx5c2lzLgogICAgICAgICBy
ZXR1cm47CiAgICAgfQorCiAgICAgZGVmYXVsdDoKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogfQogCi10ZW1wbGF0ZTx0eXBlbmFt
ZSBGdW5jdG9yPgotdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayog
Y29kZUJsb2NrLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9m
ZnNldCwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikKK3RlbXBsYXRlPHR5cGVuYW1lIEJsb2NrLCB0
eXBlbmFtZSBJbnN0cnVjdGlvbiwgdHlwZW5hbWUgRnVuY3Rvcj4KK3ZvaWQgY29tcHV0ZURlZnNG
b3JCeXRlY29kZU9mZnNldChCbG9jayogY29kZUJsb2NrLCBPcGNvZGVJRCBvcGNvZGVJRCwgSW5z
dHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQogewotICAgIElu
dGVycHJldGVyKiBpbnRlcnByZXRlciA9IGNvZGVCbG9jay0+dm0oKS0+aW50ZXJwcmV0ZXI7Ci0g
ICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luID0gY29kZUJsb2NrLT5pbnN0cnVjdGlv
bnMoKS5iZWdpbigpOwotICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9ICZpbnN0cnVjdGlv
bnNCZWdpbltieXRlY29kZU9mZnNldF07Ci0gICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnRlcnBy
ZXRlci0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb24tPnUub3Bjb2RlKTsKICAgICBzd2l0Y2ggKG9w
Y29kZUlEKSB7CiAgICAgLy8gVGhlc2UgZG9uJ3QgZGVmaW5lIGFueXRoaW5nLgogICAgIGNhc2Ug
b3BfY29weV9yZXN0OgpAQCAtMzIzLDcgKzMwNCw2IEBAIHZvaWQgY29tcHV0ZURlZnNGb3JCeXRl
Y29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9j
CiAgICAgY2FzZSBvcF9lbmQ6CiAgICAgY2FzZSBvcF90aHJvdzoKICAgICBjYXNlIG9wX3Rocm93
X3N0YXRpY19lcnJvcjoKLSAgICBjYXNlIG9wX3NhdmU6CiAgICAgY2FzZSBvcF9hc3NlcnQ6CiAg
ICAgY2FzZSBvcF9kZWJ1ZzoKICAgICBjYXNlIG9wX3JldDoKQEAgLTQ2Myw3ICs0NDMsNyBAQCB2
b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5
dGVjb2RlQmFzaWNCbG9jayogYmxvYwogICAgIGNhc2Ugb3BfZGVsX2J5X2lkOgogICAgIGNhc2Ug
b3BfZGVsX2J5X3ZhbDoKICAgICBjYXNlIG9wX3Vuc2lnbmVkOgotICAgIGNhc2Ugb3BfZ2V0X2Zy
b21fYXJndW1lbnRzOiAKKyAgICBjYXNlIG9wX2dldF9mcm9tX2FyZ3VtZW50czoKICAgICBjYXNl
IG9wX2dldF9yZXN0X2xlbmd0aDogewogICAgICAgICBBU1NFUlQob3Bjb2RlTGVuZ3Roc1tvcGNv
ZGVJRF0gPiAxKTsKICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNv
ZGVJRCwgaW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKTsKQEAgLTQ4MCwxNSArNDYwLDE0IEBAIHZv
aWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0
ZWNvZGVCYXNpY0Jsb2NrKiBibG9jCiAgICAgICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5z
dHJ1Y3Rpb24sIG9wY29kZUlELCB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChpKS5vZmZzZXQoKSk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CisgICAgY2FzZSBvcF9zYXZlOgogICAgIGNhc2Ugb3Bf
cmVzdW1lOiB7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKGJsb2NrLT5zdWNjZXNzb3JzKCkuc2l6
ZSgpID09IDEpOwotICAgICAgICAvLyBGSVhNRTogVGhpcyBpcyByZWFsbHkgZGlydHkuCi0gICAg
ICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTkyODEKLSAg
ICAgICAgYmxvY2stPnN1Y2Nlc3NvcnMoKVswXS0+aW4oKS5mb3JFYWNoU2V0Qml0KFsmXSh1bnNp
Z25lZCBsb2NhbCkgewotICAgICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9u
LCBvcGNvZGVJRCwgdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwobG9jYWwpLm9mZnNldCgpKTsKLSAg
ICAgICAgfSk7CisgICAgICAgIC8vIERvIG5vdGhpbmcgaW4gbGl2ZW5lc3MgYW5hbHlzaXMuCiAg
ICAgICAgIHJldHVybjsKICAgICB9CisgICAgZGVmYXVsdDoKKyAgICAgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCBlOWMyZTkwMGU5ZDE3
YTU2NWVmODMzMjRiOGJmYzA1YWRkNjNhOTIzLi5mOWNlMTVmODBjOTkyODIwNzRhNTViMDhkZmJk
ODQ4NGExZTQyOTE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkFyaXRoUHJvZmlsZS5oIgogI2lu
Y2x1ZGUgIkJhc2ljQmxvY2tMb2NhdGlvbi5oIgogI2luY2x1ZGUgIkJ5dGVjb2RlR2VuZXJhdG9y
LmgiCisjaW5jbHVkZSAiQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmgiCiAjaW5jbHVkZSAiQnl0
ZWNvZGVVc2VEZWYuaCIKICNpbmNsdWRlICJDYWxsTGlua1N0YXR1cy5oIgogI2luY2x1ZGUgIkRG
R0NhcGFiaWxpdGllcy5oIgpAQCAtNjk2LDE4ICs2OTcsNiBAQCB2b2lkIENvZGVCbG9jazo6ZHVt
cEJ5dGVjb2RlKFByaW50U3RyZWFtJiBvdXQpCiAgICAgICAgIH0gd2hpbGUgKGkgPCBtX3JhcmVE
YXRhLT5tX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXMuc2l6ZSgpKTsKICAgICB9CiAKLSAgICBpZiAo
bV9yYXJlRGF0YSAmJiAhbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZC5pc0Vt
cHR5KCkpIHsKLSAgICAgICAgb3V0LnByaW50ZigiXG5MaXZlIENhbGxlZSBMb2NhbHM6XG4iKTsK
LSAgICAgICAgdW5zaWduZWQgaSA9IDA7Ci0gICAgICAgIGRvIHsKLSAgICAgICAgICAgIGNvbnN0
IEZhc3RCaXRWZWN0b3ImIGxpdmVuZXNzID0gbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxz
QXRZaWVsZFtpXTsKLSAgICAgICAgICAgIG91dC5wcmludGYoIiAgbGl2ZSUxdSA9ICIsIGkpOwot
ICAgICAgICAgICAgbGl2ZW5lc3MuZHVtcChvdXQpOwotICAgICAgICAgICAgb3V0LnByaW50Zigi
XG4iKTsKLSAgICAgICAgICAgICsraTsKLSAgICAgICAgfSB3aGlsZSAoaSA8IG1fcmFyZURhdGEt
Pm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQuc2l6ZSgpKTsKLSAgICB9Ci0KICAgICBvdXQucHJp
bnRmKCJcbiIpOwogfQogCkBAIC0xNjcxLDMxICsxNjYwLDYgQEAgdm9pZCBDb2RlQmxvY2s6OmR1
bXBCeXRlY29kZSgKICAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAlZCIsIGRlYnVnSG9va05h
bWUoZGVidWdIb29rSUQpLCBoYXNCcmVha3BvaW50RmxhZyk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQotICAgICAgICBjYXNlIG9wX3NhdmU6IHsKLSAgICAgICAgICAgIGludCBnZW5l
cmF0b3IgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIHVuc2lnbmVkIGxpdmVDYWxs
ZWVMb2NhbHNJbmRleCA9ICgrK2l0KS0+dS51bnNpZ25lZFZhbHVlOwotICAgICAgICAgICAgaW50
IG9mZnNldCA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgRmFzdEJpdFZlY3RvciBs
aXZlbmVzczsKLSAgICAgICAgICAgIGlmIChsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPCBtX3JhcmVE
YXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkLnNpemUoKSkKLSAgICAgICAgICAgICAgICBs
aXZlbmVzcyA9IG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGRbbGl2ZUNhbGxl
ZUxvY2Fsc0luZGV4XTsKLSAgICAgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMs
IGxvY2F0aW9uLCBpdCwgInNhdmUiKTsKLSAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAiLCBy
ZWdpc3Rlck5hbWUoZ2VuZXJhdG9yKS5kYXRhKCkpOwotICAgICAgICAgICAgbGl2ZW5lc3MuZHVt
cChvdXQpOwotICAgICAgICAgICAgb3V0LnByaW50ZigiKEBsaXZlJTF1KSwgJWQoLT4lZCkiLCBs
aXZlQ2FsbGVlTG9jYWxzSW5kZXgsIG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBvcF9yZXN1bWU6IHsKLSAgICAg
ICAgICAgIGludCBnZW5lcmF0b3IgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIHVu
c2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9ICgrK2l0KS0+dS51bnNpZ25lZFZhbHVlOwot
ICAgICAgICAgICAgRmFzdEJpdFZlY3RvciBsaXZlbmVzczsKLSAgICAgICAgICAgIGlmIChsaXZl
Q2FsbGVlTG9jYWxzSW5kZXggPCBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxk
LnNpemUoKSkKLSAgICAgICAgICAgICAgICBsaXZlbmVzcyA9IG1fcmFyZURhdGEtPm1fbGl2ZUNh
bGxlZUxvY2Fsc0F0WWllbGRbbGl2ZUNhbGxlZUxvY2Fsc0luZGV4XTsKLSAgICAgICAgICAgIHBy
aW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgInJlc3VtZSIpOwotICAg
ICAgICAgICAgb3V0LnByaW50ZigiJXMsICIsIHJlZ2lzdGVyTmFtZShnZW5lcmF0b3IpLmRhdGEo
KSk7Ci0gICAgICAgICAgICBsaXZlbmVzcy5kdW1wKG91dCk7Ci0gICAgICAgICAgICBvdXQucHJp
bnRmKCIoQGxpdmUlMXUpIiwgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4KTsKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfYXNzZXJ0OiB7CiAgICAgICAgICAgICBp
bnQgY29uZGl0aW9uID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgbGluZSA9
ICgrK2l0KS0+dS5vcGVyYW5kOwpAQCAtMTkwNyw3ICsxODcxLDYgQEAgdm9pZCBDb2RlQmxvY2s6
OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgQ29weVBhcnNlZEJsb2NrVGFnLCBDb2RlQmxvY2smIG90
aGVyKQogICAgICAgICBtX3JhcmVEYXRhLT5tX2NvbnN0YW50QnVmZmVycyA9IG90aGVyLm1fcmFy
ZURhdGEtPm1fY29uc3RhbnRCdWZmZXJzOwogICAgICAgICBtX3JhcmVEYXRhLT5tX3N3aXRjaEp1
bXBUYWJsZXMgPSBvdGhlci5tX3JhcmVEYXRhLT5tX3N3aXRjaEp1bXBUYWJsZXM7CiAgICAgICAg
IG1fcmFyZURhdGEtPm1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlcyA9IG90aGVyLm1fcmFyZURhdGEt
Pm1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlczsKLSAgICAgICAgbV9yYXJlRGF0YS0+bV9saXZlQ2Fs
bGVlTG9jYWxzQXRZaWVsZCA9IG90aGVyLm1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0
WWllbGQ7CiAgICAgfQogICAgIAogICAgIGhlYXAoKS0+bV9jb2RlQmxvY2tzLmFkZCh0aGlzKTsK
QEAgLTIwMjksNyArMTk5Miw3IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYg
dm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAgICAgICAg
ICAgICAgVW5saW5rZWRTdHJpbmdKdW1wVGFibGU6OlN0cmluZ09mZnNldFRhYmxlOjppdGVyYXRv
ciBlbmQgPSB1bmxpbmtlZENvZGVCbG9jay0+c3RyaW5nU3dpdGNoSnVtcFRhYmxlKGkpLm9mZnNl
dFRhYmxlLmVuZCgpOwogICAgICAgICAgICAgICAgIGZvciAoOyBwdHIgIT0gZW5kOyArK3B0cikg
ewogICAgICAgICAgICAgICAgICAgICBPZmZzZXRMb2NhdGlvbiBvZmZzZXQ7Ci0gICAgICAgICAg
ICAgICAgICAgIG9mZnNldC5icmFuY2hPZmZzZXQgPSBwdHItPnZhbHVlOworICAgICAgICAgICAg
ICAgICAgICBvZmZzZXQuYnJhbmNoT2Zmc2V0ID0gcHRyLT52YWx1ZS5icmFuY2hPZmZzZXQ7CiAg
ICAgICAgICAgICAgICAgICAgIG1fcmFyZURhdGEtPm1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlc1tp
XS5vZmZzZXRUYWJsZS5hZGQocHRyLT5rZXksIG9mZnNldCk7CiAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgfQpAQCAtMjA2OSwxMSArMjAzMiwxNyBAQCB2b2lkIENvZGVCbG9jazo6Zmlu
aXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVu
bGluawogICAgIC8vIEJvb2trZWVwIHRoZSBzdHJvbmdseSByZWZlcmVuY2VkIG1vZHVsZSBlbnZp
cm9ubWVudHMuCiAgICAgSGFzaFNldDxKU01vZHVsZUVudmlyb25tZW50Kj4gc3Ryb25nbHlSZWZl
cmVuY2VkTW9kdWxlRW52aXJvbm1lbnRzOwogCi0gICAgLy8gQm9va2tlZXAgdGhlIG1lcmdlIHBv
aW50IGJ5dGVjb2RlIG9mZnNldHMuCi0gICAgVmVjdG9yPHNpemVfdD4gbWVyZ2VQb2ludEJ5dGVj
b2RlT2Zmc2V0czsKLQogICAgIFJlZkNvdW50ZWRBcnJheTxJbnN0cnVjdGlvbj4gaW5zdHJ1Y3Rp
b25zKGluc3RydWN0aW9uQ291bnQpOwogCisgICAgdW5zaWduZWQgdmFsdWVQcm9maWxlQ291bnQg
PSAwOworICAgIGF1dG8gbGlua1ZhbHVlUHJvZmlsZSA9IFsmXSh1bnNpZ25lZCBieXRlY29kZU9m
ZnNldCwgdW5zaWduZWQgb3BMZW5ndGgpIHsKKyAgICAgICAgdW5zaWduZWQgdmFsdWVQcm9maWxl
SW5kZXggPSB2YWx1ZVByb2ZpbGVDb3VudCsrOworICAgICAgICBWYWx1ZVByb2ZpbGUqIHByb2Zp
bGUgPSAmbV92YWx1ZVByb2ZpbGVzW3ZhbHVlUHJvZmlsZUluZGV4XTsKKyAgICAgICAgQVNTRVJU
KHByb2ZpbGUtPm1fYnl0ZWNvZGVPZmZzZXQgPT0gLTEpOworICAgICAgICBwcm9maWxlLT5tX2J5
dGVjb2RlT2Zmc2V0ID0gYnl0ZWNvZGVPZmZzZXQ7CisgICAgICAgIGluc3RydWN0aW9uc1tieXRl
Y29kZU9mZnNldCArIG9wTGVuZ3RoIC0gMV0gPSBwcm9maWxlOworICAgIH07CisKICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyAhaW5zdHJ1Y3Rpb25SZWFkZXIuYXRFbmQoKTsgKSB7CiAgICAgICAg
IGNvbnN0IFVubGlua2VkSW5zdHJ1Y3Rpb24qIHBjID0gaW5zdHJ1Y3Rpb25SZWFkZXIubmV4dCgp
OwogCkBAIC0yMTA4LDEwICsyMDc3LDcgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9u
KFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICAg
ICAgY2FzZSBvcF9nZXRfYnlfaWQ6CiAgICAgICAgIGNhc2Ugb3BfZ2V0X2Zyb21fYXJndW1lbnRz
OgogICAgICAgICBjYXNlIG9wX3RvX251bWJlcjogewotICAgICAgICAgICAgVmFsdWVQcm9maWxl
KiBwcm9maWxlID0gJm1fdmFsdWVQcm9maWxlc1twY1tvcExlbmd0aCAtIDFdLnUub3BlcmFuZF07
Ci0gICAgICAgICAgICBBU1NFUlQocHJvZmlsZS0+bV9ieXRlY29kZU9mZnNldCA9PSAtMSk7Ci0g
ICAgICAgICAgICBwcm9maWxlLT5tX2J5dGVjb2RlT2Zmc2V0ID0gaTsKLSAgICAgICAgICAgIGlu
c3RydWN0aW9uc1tpICsgb3BMZW5ndGggLSAxXSA9IHByb2ZpbGU7CisgICAgICAgICAgICBsaW5r
VmFsdWVQcm9maWxlKGksIG9wTGVuZ3RoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X3ZhbDogewpAQCAtMjE0OCwxMCArMjExNCw3IEBAIHZv
aWQgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93
bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAgICAgIGNhc2Ugb3BfY2FsbDoKICAgICAgICAgY2Fz
ZSBvcF90YWlsX2NhbGw6CiAgICAgICAgIGNhc2Ugb3BfY2FsbF9ldmFsOiB7Ci0gICAgICAgICAg
ICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSAmbV92YWx1ZVByb2ZpbGVzW3BjW29wTGVuZ3RoIC0g
MV0udS5vcGVyYW5kXTsKLSAgICAgICAgICAgIEFTU0VSVChwcm9maWxlLT5tX2J5dGVjb2RlT2Zm
c2V0ID09IC0xKTsKLSAgICAgICAgICAgIHByb2ZpbGUtPm1fYnl0ZWNvZGVPZmZzZXQgPSBpOwot
ICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zW2kgKyBvcExlbmd0aCAtIDFdID0gcHJvZmlsZTsKKyAg
ICAgICAgICAgIGxpbmtWYWx1ZVByb2ZpbGUoaSwgb3BMZW5ndGgpOwogICAgICAgICAgICAgaW50
IGFycmF5UHJvZmlsZUluZGV4ID0gcGNbb3BMZW5ndGggLSAyXS51Lm9wZXJhbmQ7CiAgICAgICAg
ICAgICBtX2FycmF5UHJvZmlsZXNbYXJyYXlQcm9maWxlSW5kZXhdID0gQXJyYXlQcm9maWxlKGkp
OwogICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zW2kgKyBvcExlbmd0aCAtIDJdID0gJm1fYXJyYXlQ
cm9maWxlc1thcnJheVByb2ZpbGVJbmRleF07CkBAIC0yMTYwLDEwICsyMTIzLDcgQEAgdm9pZCBD
b2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJF
eGVjdXRhYmxlLCBVbmxpbmsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2NvbnN0cnVjdDog
ewogICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zW2kgKyA1XSA9ICZtX2xsaW50Q2FsbExpbmtJbmZv
c1twY1s1XS51Lm9wZXJhbmRdOwotICAgICAgICAgICAgVmFsdWVQcm9maWxlKiBwcm9maWxlID0g
Jm1fdmFsdWVQcm9maWxlc1twY1tvcExlbmd0aCAtIDFdLnUub3BlcmFuZF07Ci0gICAgICAgICAg
ICBBU1NFUlQocHJvZmlsZS0+bV9ieXRlY29kZU9mZnNldCA9PSAtMSk7Ci0gICAgICAgICAgICBw
cm9maWxlLT5tX2J5dGVjb2RlT2Zmc2V0ID0gaTsKLSAgICAgICAgICAgIGluc3RydWN0aW9uc1tp
ICsgb3BMZW5ndGggLSAxXSA9IHByb2ZpbGU7CisgICAgICAgICAgICBsaW5rVmFsdWVQcm9maWxl
KGksIG9wTGVuZ3RoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNh
c2Ugb3BfZ2V0X2FycmF5X2xlbmd0aDoKQEAgLTIxOTQsMTAgKzIxNTQsNyBAQCB2b2lkIENvZGVC
bG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1
dGFibGUsIFVubGluawogICAgICAgICB9CiAKICAgICAgICAgY2FzZSBvcF9nZXRfZnJvbV9zY29w
ZTogewotICAgICAgICAgICAgVmFsdWVQcm9maWxlKiBwcm9maWxlID0gJm1fdmFsdWVQcm9maWxl
c1twY1tvcExlbmd0aCAtIDFdLnUub3BlcmFuZF07Ci0gICAgICAgICAgICBBU1NFUlQocHJvZmls
ZS0+bV9ieXRlY29kZU9mZnNldCA9PSAtMSk7Ci0gICAgICAgICAgICBwcm9maWxlLT5tX2J5dGVj
b2RlT2Zmc2V0ID0gaTsKLSAgICAgICAgICAgIGluc3RydWN0aW9uc1tpICsgb3BMZW5ndGggLSAx
XSA9IHByb2ZpbGU7CisgICAgICAgICAgICBsaW5rVmFsdWVQcm9maWxlKGksIG9wTGVuZ3RoKTsK
IAogICAgICAgICAgICAgLy8gZ2V0X2Zyb21fc2NvcGUgZHN0LCBzY29wZSwgaWQsIEdldFB1dElu
Zm8sIFN0cnVjdHVyZSwgT3BlcmFuZAogCkBAIC0yMzU0LDE1ICsyMzExLDYgQEAgdm9pZCBDb2Rl
QmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVj
dXRhYmxlLCBVbmxpbmsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKLSAgICAgICAg
Y2FzZSBvcF9zYXZlOiB7Ci0gICAgICAgICAgICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5k
ZXggPSBwY1syXS51LmluZGV4OwotICAgICAgICAgICAgaW50IG9mZnNldCA9IHBjWzNdLnUub3Bl
cmFuZDsKLSAgICAgICAgICAgIGlmIChsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPj0gbWVyZ2VQb2lu
dEJ5dGVjb2RlT2Zmc2V0cy5zaXplKCkpCi0gICAgICAgICAgICAgICAgbWVyZ2VQb2ludEJ5dGVj
b2RlT2Zmc2V0cy5yZXNpemUobGl2ZUNhbGxlZUxvY2Fsc0luZGV4ICsgMSk7Ci0gICAgICAgICAg
ICBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXRzW2xpdmVDYWxsZWVMb2NhbHNJbmRleF0gPSBpICsg
b2Zmc2V0OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLQogICAgICAgICBkZWZhdWx0
OgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTIzNzQsMjAgKzIzMjIsNiBAQCB2
b2lkIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBv
d25lckV4ZWN1dGFibGUsIFVubGluawogCiAgICAgbV9pbnN0cnVjdGlvbnMgPSBXVEZNb3ZlKGlu
c3RydWN0aW9ucyk7CiAKLSAgICAvLyBQZXJmb3JtIGJ5dGVjb2RlIGxpdmVuZXNzIGFuYWx5c2lz
IHRvIGRldGVybWluZSB3aGljaCBsb2NhbHMgYXJlIGxpdmUgYW5kIHNob3VsZCBiZSByZXN1bWVk
IHdoZW4gZXhlY3V0aW5nIG9wX3Jlc3VtZS4KLSAgICBpZiAodW5saW5rZWRDb2RlQmxvY2stPnBh
cnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yQm9keU1vZGUpIHsKLSAgICAg
ICAgaWYgKHNpemVfdCBjb3VudCA9IG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldHMuc2l6ZSgpKSB7
Ci0gICAgICAgICAgICBjcmVhdGVSYXJlRGF0YUlmTmVjZXNzYXJ5KCk7Ci0gICAgICAgICAgICBC
eXRlY29kZUxpdmVuZXNzQW5hbHlzaXMgbGl2ZW5lc3ModGhpcyk7Ci0gICAgICAgICAgICBtX3Jh
cmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkLmdyb3coY291bnQpOwotICAgICAgICAg
ICAgc2l6ZV90IGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9IDA7Ci0gICAgICAgICAgICBmb3IgKHNp
emVfdCBieXRlY29kZU9mZnNldCA6IG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldHMpIHsKLSAgICAg
ICAgICAgICAgICBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkW2xpdmVDYWxs
ZWVMb2NhbHNJbmRleF0gPSBsaXZlbmVzcy5nZXRMaXZlbmVzc0luZm9BdEJ5dGVjb2RlT2Zmc2V0
KGJ5dGVjb2RlT2Zmc2V0KTsKLSAgICAgICAgICAgICAgICArK2xpdmVDYWxsZWVMb2NhbHNJbmRl
eDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQogICAgIC8vIFNldCBvcHRpbWl6
YXRpb24gdGhyZXNob2xkcyBvbmx5IGFmdGVyIG1faW5zdHJ1Y3Rpb25zIGlzIGluaXRpYWxpemVk
LCBzaW5jZSB0aGVzZQogICAgIC8vIHJlbHkgb24gdGhlIGluc3RydWN0aW9uIGNvdW50IChhbmQg
YXJlIGluIHRoZW9yeSBwZXJtaXR0ZWQgdG8gYWxzbyBpbnNwZWN0IHRoZQogICAgIC8vIGluc3Ry
dWN0aW9uIHN0cmVhbSB0byBtb3JlIGFjY3VyYXRlIGFzc2VzcyB0aGUgY29zdCBvZiB0aWVyLXVw
KS4KQEAgLTMyNDQsMjEgKzMxNzgsNyBAQCBIYW5kbGVySW5mbyogQ29kZUJsb2NrOjpoYW5kbGVy
Rm9ySW5kZXgodW5zaWduZWQgaW5kZXgsIFJlcXVpcmVkSGFuZGxlciByZXF1aXJlZAogewogICAg
IGlmICghbV9yYXJlRGF0YSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgCi0gICAgVmVjdG9yPEhh
bmRsZXJJbmZvPiYgZXhjZXB0aW9uSGFuZGxlcnMgPSBtX3JhcmVEYXRhLT5tX2V4Y2VwdGlvbkhh
bmRsZXJzOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZXhjZXB0aW9uSGFuZGxlcnMuc2l6
ZSgpOyArK2kpIHsKLSAgICAgICAgSGFuZGxlckluZm8mIGhhbmRsZXIgPSBleGNlcHRpb25IYW5k
bGVyc1tpXTsKLSAgICAgICAgaWYgKChyZXF1aXJlZEhhbmRsZXIgPT0gUmVxdWlyZWRIYW5kbGVy
OjpDYXRjaEhhbmRsZXIpICYmICFoYW5kbGVyLmlzQ2F0Y2hIYW5kbGVyKCkpCi0gICAgICAgICAg
ICBjb250aW51ZTsKLQotICAgICAgICAvLyBIYW5kbGVycyBhcmUgb3JkZXJlZCBpbm5lcm1vc3Qg
Zmlyc3QsIHNvIHRoZSBmaXJzdCBoYW5kbGVyIHdlIGVuY291bnRlcgotICAgICAgICAvLyB0aGF0
IGNvbnRhaW5zIHRoZSBzb3VyY2UgYWRkcmVzcyBpcyB0aGUgY29ycmVjdCBoYW5kbGVyIHRvIHVz
ZS4KLSAgICAgICAgLy8gVGhpcyBpbmRleCB1c2VkIGlzIGVpdGhlciB0aGUgQnl0ZWNvZGVPZmZz
ZXQgb3IgYSBDYWxsU2l0ZUluZGV4LgotICAgICAgICBpZiAoaGFuZGxlci5zdGFydCA8PSBpbmRl
eCAmJiBoYW5kbGVyLmVuZCA+IGluZGV4KQotICAgICAgICAgICAgcmV0dXJuICZoYW5kbGVyOwot
ICAgIH0KLQotICAgIHJldHVybiAwOworICAgIHJldHVybiBIYW5kbGVySW5mbzo6aGFuZGxlckZv
ckluZGV4KG1fcmFyZURhdGEtPm1fZXhjZXB0aW9uSGFuZGxlcnMsIGluZGV4LCByZXF1aXJlZEhh
bmRsZXIpOwogfQogCiBDYWxsU2l0ZUluZGV4IENvZGVCbG9jazo6bmV3RXhjZXB0aW9uSGFuZGxp
bmdDYWxsU2l0ZUluZGV4KENhbGxTaXRlSW5kZXggb3JpZ2luYWxDYWxsU2l0ZSkKQEAgLTMzNTMs
NyArMzI3Myw2IEBAIHZvaWQgQ29kZUJsb2NrOjpzaHJpbmtUb0ZpdChTaHJpbmtNb2RlIHNocmlu
a01vZGUpCiAgICAgICAgIGlmIChtX3JhcmVEYXRhKSB7CiAgICAgICAgICAgICBtX3JhcmVEYXRh
LT5tX3N3aXRjaEp1bXBUYWJsZXMuc2hyaW5rVG9GaXQoKTsKICAgICAgICAgICAgIG1fcmFyZURh
dGEtPm1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlcy5zaHJpbmtUb0ZpdCgpOwotICAgICAgICAgICAg
bV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZC5zaHJpbmtUb0ZpdCgpOwogICAg
ICAgICB9CiAgICAgfSAvLyBlbHNlIGRvbid0IHNocmluayB0aGVzZSwgYmVjYXVzZSB3ZSB3b3Vs
ZCBoYXZlIGFscmVhZHkgcG9pbnRlZCBwb2ludGVycyBpbnRvIHRoZXNlIHRhYmxlcy4KIH0KQEAg
LTQzMzUsMTQgKzQyNTQsOSBAQCBTdHJpbmcgQ29kZUJsb2NrOjpuYW1lRm9yUmVnaXN0ZXIoVmly
dHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3RlcikKIAogVmFsdWVQcm9maWxlKiBDb2RlQmxvY2s6
OnZhbHVlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KGludCBieXRlY29kZU9mZnNldCkKIHsKLSAg
ICBWYWx1ZVByb2ZpbGUqIHJlc3VsdCA9IGJpbmFyeVNlYXJjaDxWYWx1ZVByb2ZpbGUsIGludD4o
Ci0gICAgICAgIG1fdmFsdWVQcm9maWxlcywgbV92YWx1ZVByb2ZpbGVzLnNpemUoKSwgYnl0ZWNv
ZGVPZmZzZXQsCi0gICAgICAgIGdldFZhbHVlUHJvZmlsZUJ5dGVjb2RlT2Zmc2V0PFZhbHVlUHJv
ZmlsZT4pOwotICAgIEFTU0VSVChyZXN1bHQtPm1fYnl0ZWNvZGVPZmZzZXQgIT0gLTEpOwotICAg
IEFTU0VSVChpbnN0cnVjdGlvbnMoKVtieXRlY29kZU9mZnNldCArIG9wY29kZUxlbmd0aCgKLSAg
ICAgICAgbV92bS0+aW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKAotICAgICAgICAgICAgaW5zdHJ1
Y3Rpb25zKClbYnl0ZWNvZGVPZmZzZXRdLnUub3Bjb2RlKSkgLSAxXS51LnByb2ZpbGUgPT0gcmVz
dWx0KTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIE9wY29kZUlEIG9wY29kZUlEID0gbV92bS0+
aW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGluc3RydWN0aW9ucygpW2J5dGVjb2RlT2Zmc2V0XS51
Lm9wY29kZSk7CisgICAgdW5zaWduZWQgbGVuZ3RoID0gb3Bjb2RlTGVuZ3RoKG9wY29kZUlEKTsK
KyAgICByZXR1cm4gaW5zdHJ1Y3Rpb25zKClbYnl0ZWNvZGVPZmZzZXQgKyBsZW5ndGggLSAxXS51
LnByb2ZpbGU7CiB9CiAKIHZvaWQgQ29kZUJsb2NrOjp2YWxpZGF0ZSgpCkBAIC00NjcxLDQgKzQ1
ODUsMTYgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXBNYXRoSUNTdGF0cygpCiAjZW5kaWYKIH0KIAor
Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzJiBDb2RlQmxvY2s6OmxpdmVuZXNzQW5hbHlzaXNTbG93
KCkKK3sKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzPiBhbmFs
eXNpcyA9IHN0ZDo6bWFrZV91bmlxdWU8Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzPih0aGlzKTsK
KyAgICB7CisgICAgICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKG1fbG9jayk7CisgICAg
ICAgIGlmICghbV9saXZlbmVzc0FuYWx5c2lzKQorICAgICAgICAgICAgbV9saXZlbmVzc0FuYWx5
c2lzID0gV1RGTW92ZShhbmFseXNpcyk7CisgICAgICAgIHJldHVybiAqbV9saXZlbmVzc0FuYWx5
c2lzOworICAgIH0KK30KKworCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAppbmRleCBhYjkyODA0ZjZiYTM5YjNiNjdiYTZkNzc1
ZTQ0OWUyZjNkYmY3YzA1Li45ZTVkNjA3ODc3M2YzOGNiYjIyZGM2YTUwZmFmYTdjZWIwZTFmZmEy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCkBAIC0zMyw3
ICszMyw2IEBACiAjaW5jbHVkZSAiQXJyYXlQcm9maWxlLmgiCiAjaW5jbHVkZSAiQnlWYWxJbmZv
LmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVDb252ZW50aW9ucy5oIgotI2luY2x1ZGUgIkJ5dGVjb2Rl
TGl2ZW5lc3NBbmFseXNpcy5oIgogI2luY2x1ZGUgIkNhbGxMaW5rSW5mby5oIgogI2luY2x1ZGUg
IkNhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0LmgiCiAjaW5jbHVkZSAiQ29kZUJsb2Nr
SGFzaC5oIgpAQCAtNzksNiArNzgsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorY2xhc3MgQnl0
ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOwogY2xhc3MgRXhlY1N0YXRlOwogY2xhc3MgSklUQWRkR2Vu
ZXJhdG9yOwogY2xhc3MgSlNNb2R1bGVFbnZpcm9ubWVudDsKQEAgLTIyNiwxMCArMjI2LDYgQEAg
Y2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgICAgIHJldHVybiBpbmRleCA+
PSBtX251bVZhcnM7CiAgICAgfQogCi0gICAgZW51bSBjbGFzcyBSZXF1aXJlZEhhbmRsZXIgewot
ICAgICAgICBDYXRjaEhhbmRsZXIsCi0gICAgICAgIEFueUhhbmRsZXIKLSAgICB9OwogICAgIEhh
bmRsZXJJbmZvKiBoYW5kbGVyRm9yQnl0ZWNvZGVPZmZzZXQodW5zaWduZWQgYnl0ZWNvZGVPZmZz
ZXQsIFJlcXVpcmVkSGFuZGxlciA9IFJlcXVpcmVkSGFuZGxlcjo6QW55SGFuZGxlcik7CiAgICAg
SGFuZGxlckluZm8qIGhhbmRsZXJGb3JJbmRleCh1bnNpZ25lZCwgUmVxdWlyZWRIYW5kbGVyID0g
UmVxdWlyZWRIYW5kbGVyOjpBbnlIYW5kbGVyKTsKICAgICB2b2lkIHJlbW92ZUV4Y2VwdGlvbkhh
bmRsZXJGb3JDYWxsU2l0ZShDYWxsU2l0ZUluZGV4KTsKQEAgLTMwNCw2ICszMDAsOSBAQCBjbGFz
cyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PEluc3RydWN0aW9uKj4ocmV0dXJuQWRkcmVzcykgLSBpbnN0cnVjdGlvbnMoKS5iZWdpbigpOwog
ICAgIH0KIAorICAgIHR5cGVkZWYgSlNDOjpJbnN0cnVjdGlvbiBJbnN0cnVjdGlvbjsKKyAgICB0
eXBlZGVmIFJlZkNvdW50ZWRBcnJheTxJbnN0cnVjdGlvbj4mIFVucGFja2VkSW5zdHJ1Y3Rpb25z
OworCiAgICAgdW5zaWduZWQgbnVtYmVyT2ZJbnN0cnVjdGlvbnMoKSBjb25zdCB7IHJldHVybiBt
X2luc3RydWN0aW9ucy5zaXplKCk7IH0KICAgICBSZWZDb3VudGVkQXJyYXk8SW5zdHJ1Y3Rpb24+
JiBpbnN0cnVjdGlvbnMoKSB7IHJldHVybiBtX2luc3RydWN0aW9uczsgfQogICAgIGNvbnN0IFJl
ZkNvdW50ZWRBcnJheTxJbnN0cnVjdGlvbj4mIGluc3RydWN0aW9ucygpIGNvbnN0IHsgcmV0dXJu
IG1faW5zdHJ1Y3Rpb25zOyB9CkBAIC01NDYsNyArNTQ1LDcgQEAgY2xhc3MgQ29kZUJsb2NrIDog
cHVibGljIEpTQ2VsbCB7CiAgICAgfQogCiAgICAgV3JpdGVCYXJyaWVyPFVua25vd24+JiBjb25z
dGFudFJlZ2lzdGVyKGludCBpbmRleCkgeyByZXR1cm4gbV9jb25zdGFudFJlZ2lzdGVyc1tpbmRl
eCAtIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4XTsgfQotICAgIEFMV0FZU19JTkxJTkUgYm9v
bCBpc0NvbnN0YW50UmVnaXN0ZXJJbmRleChpbnQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIGluZGV4
ID49IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4OyB9CisgICAgc3RhdGljIEFMV0FZU19JTkxJ
TkUgYm9vbCBpc0NvbnN0YW50UmVnaXN0ZXJJbmRleChpbnQgaW5kZXgpIHsgcmV0dXJuIGluZGV4
ID49IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4OyB9CiAgICAgQUxXQVlTX0lOTElORSBKU1Zh
bHVlIGdldENvbnN0YW50KGludCBpbmRleCkgY29uc3QgeyByZXR1cm4gbV9jb25zdGFudFJlZ2lz
dGVyc1tpbmRleCAtIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4XS5nZXQoKTsgfQogICAgIEFM
V0FZU19JTkxJTkUgU291cmNlQ29kZVJlcHJlc2VudGF0aW9uIGNvbnN0YW50U291cmNlQ29kZVJl
cHJlc2VudGF0aW9uKGludCBpbmRleCkgY29uc3QgeyByZXR1cm4gbV9jb25zdGFudHNTb3VyY2VD
b2RlUmVwcmVzZW50YXRpb25baW5kZXggLSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleF07IH0K
IApAQCAtNTkyLDE0ICs1OTEsNyBAQCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsK
ICAgICAgICAgICAgIGlmICghIW1fbGl2ZW5lc3NBbmFseXNpcykKICAgICAgICAgICAgICAgICBy
ZXR1cm4gKm1fbGl2ZW5lc3NBbmFseXNpczsKICAgICAgICAgfQotICAgICAgICBzdGQ6OnVuaXF1
ZV9wdHI8Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzPiBhbmFseXNpcyA9Ci0gICAgICAgICAgICBz
dGQ6Om1ha2VfdW5pcXVlPEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcz4odGhpcyk7Ci0gICAgICAg
IHsKLSAgICAgICAgICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKG1fbG9jayk7Ci0gICAg
ICAgICAgICBpZiAoIW1fbGl2ZW5lc3NBbmFseXNpcykKLSAgICAgICAgICAgICAgICBtX2xpdmVu
ZXNzQW5hbHlzaXMgPSBXVEZNb3ZlKGFuYWx5c2lzKTsKLSAgICAgICAgICAgIHJldHVybiAqbV9s
aXZlbmVzc0FuYWx5c2lzOwotICAgICAgICB9CisgICAgICAgIHJldHVybiBsaXZlbmVzc0FuYWx5
c2lzU2xvdygpOwogICAgIH0KICAgICAKICAgICB2b2lkIHZhbGlkYXRlKCk7CkBAIC02MjAsMTgg
KzYxMiw2IEBAIGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgIFN0cmluZ0p1
bXBUYWJsZSYgYWRkU3RyaW5nU3dpdGNoSnVtcFRhYmxlKCkgeyBjcmVhdGVSYXJlRGF0YUlmTmVj
ZXNzYXJ5KCk7IG1fcmFyZURhdGEtPm1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlcy5hcHBlbmQoU3Ry
aW5nSnVtcFRhYmxlKCkpOyByZXR1cm4gbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFi
bGVzLmxhc3QoKTsgfQogICAgIFN0cmluZ0p1bXBUYWJsZSYgc3RyaW5nU3dpdGNoSnVtcFRhYmxl
KGludCB0YWJsZUluZGV4KSB7IFJFTEVBU0VfQVNTRVJUKG1fcmFyZURhdGEpOyByZXR1cm4gbV9y
YXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzW3RhYmxlSW5kZXhdOyB9CiAKLSAgICAv
LyBMaXZlIGNhbGxlZSByZWdpc3RlcnMgYXQgeWllbGQgcG9pbnRzLgotICAgIGNvbnN0IEZhc3RC
aXRWZWN0b3ImIGxpdmVDYWxsZWVMb2NhbHNBdFlpZWxkKHVuc2lnbmVkIGluZGV4KSBjb25zdAot
ICAgIHsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9yYXJlRGF0YSk7Ci0gICAgICAgIHJldHVy
biBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkW2luZGV4XTsKLSAgICB9Ci0g
ICAgRmFzdEJpdFZlY3RvciYgbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQodW5zaWduZWQgaW5kZXgp
Ci0gICAgewotICAgICAgICBSRUxFQVNFX0FTU0VSVChtX3JhcmVEYXRhKTsKLSAgICAgICAgcmV0
dXJuIG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGRbaW5kZXhdOwotICAgIH0K
LQogICAgIEV2YWxDb2RlQ2FjaGUmIGV2YWxDb2RlQ2FjaGUoKSB7IGNyZWF0ZVJhcmVEYXRhSWZO
ZWNlc3NhcnkoKTsgcmV0dXJuIG1fcmFyZURhdGEtPm1fZXZhbENvZGVDYWNoZTsgfQogCiAgICAg
ZW51bSBTaHJpbmtNb2RlIHsKQEAgLTg4Niw4ICs4NjYsNiBAQCBjbGFzcyBDb2RlQmxvY2sgOiBw
dWJsaWMgSlNDZWxsIHsKICAgICAgICAgVmVjdG9yPFNpbXBsZUp1bXBUYWJsZT4gbV9zd2l0Y2hK
dW1wVGFibGVzOwogICAgICAgICBWZWN0b3I8U3RyaW5nSnVtcFRhYmxlPiBtX3N0cmluZ1N3aXRj
aEp1bXBUYWJsZXM7CiAKLSAgICAgICAgVmVjdG9yPEZhc3RCaXRWZWN0b3I+IG1fbGl2ZUNhbGxl
ZUxvY2Fsc0F0WWllbGQ7Ci0KICAgICAgICAgRXZhbENvZGVDYWNoZSBtX2V2YWxDb2RlQ2FjaGU7
CiAgICAgfTsKIApAQCAtOTIyLDYgKzkwMCw4IEBAIGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBK
U0NlbGwgewogCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBDb2RlQmxvY2tTZXQ7CisKKyAg
ICBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMmIGxpdmVuZXNzQW5hbHlzaXNTbG93KCk7CiAgICAg
CiAgICAgQ29kZUJsb2NrKiBzcGVjaWFsT1NSRW50cnlCbG9ja09yTnVsbCgpOwogICAgIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0hhbmRsZXJJbmZvLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSGFuZGxlckluZm8uaAppbmRleCBhY2RkYTA4
ZWQxNGNiZjlmMDk3MTI3NTA0MDVhNDE3NDFmNzZhMjEzLi5iYjY5MmI5ZGMxNzBiMDlmNDNjZTg2
N2Y5NDFmNzUzNWFjZmVjZjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvSGFuZGxlckluZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
SGFuZGxlckluZm8uaApAQCAtMzcsNiArMzcsMTEgQEAgZW51bSBjbGFzcyBIYW5kbGVyVHlwZSB7
CiAgICAgU3ludGhlc2l6ZWRGaW5hbGx5ID0gMwogfTsKIAorZW51bSBjbGFzcyBSZXF1aXJlZEhh
bmRsZXIgeworICAgIENhdGNoSGFuZGxlciwKKyAgICBBbnlIYW5kbGVyCit9OworCiBzdHJ1Y3Qg
SGFuZGxlckluZm9CYXNlIHsKICAgICBIYW5kbGVyVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8SGFuZGxlclR5cGU+KHR5cGVCaXRzKTsgfQogICAgIHZvaWQgc2V0VHlwZShI
YW5kbGVyVHlwZSB0eXBlKSB7IHR5cGVCaXRzID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHR5cGUp
OyB9CkBAIC01OCw2ICs2MywyMyBAQCBzdHJ1Y3QgSGFuZGxlckluZm9CYXNlIHsKIAogICAgIGJv
b2wgaXNDYXRjaEhhbmRsZXIoKSBjb25zdCB7IHJldHVybiB0eXBlKCkgPT0gSGFuZGxlclR5cGU6
OkNhdGNoOyB9CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIYW5kbGVyPgorICAgIHN0YXRpYyBI
YW5kbGVyKiBoYW5kbGVyRm9ySW5kZXgoVmVjdG9yPEhhbmRsZXI+JiBleGVwdGlvbkhhbmRsZXJz
LCB1bnNpZ25lZCBpbmRleCwgUmVxdWlyZWRIYW5kbGVyIHJlcXVpcmVkSGFuZGxlcikKKyAgICB7
CisgICAgICAgIGZvciAoSGFuZGxlciYgaGFuZGxlciA6IGV4ZXB0aW9uSGFuZGxlcnMpIHsKKyAg
ICAgICAgICAgIGlmICgocmVxdWlyZWRIYW5kbGVyID09IFJlcXVpcmVkSGFuZGxlcjo6Q2F0Y2hI
YW5kbGVyKSAmJiAhaGFuZGxlci5pc0NhdGNoSGFuZGxlcigpKQorICAgICAgICAgICAgICAgIGNv
bnRpbnVlOworCisgICAgICAgICAgICAvLyBIYW5kbGVycyBhcmUgb3JkZXJlZCBpbm5lcm1vc3Qg
Zmlyc3QsIHNvIHRoZSBmaXJzdCBoYW5kbGVyIHdlIGVuY291bnRlcgorICAgICAgICAgICAgLy8g
dGhhdCBjb250YWlucyB0aGUgc291cmNlIGFkZHJlc3MgaXMgdGhlIGNvcnJlY3QgaGFuZGxlciB0
byB1c2UuCisgICAgICAgICAgICAvLyBUaGlzIGluZGV4IHVzZWQgaXMgZWl0aGVyIHRoZSBCeXRl
Y29kZU9mZnNldCBvciBhIENhbGxTaXRlSW5kZXguCisgICAgICAgICAgICBpZiAoaGFuZGxlci5z
dGFydCA8PSBpbmRleCAmJiBoYW5kbGVyLmVuZCA+IGluZGV4KQorICAgICAgICAgICAgICAgIHJl
dHVybiAmaGFuZGxlcjsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBudWxscHRyOworICAg
IH0KKwogICAgIHVpbnQzMl90IHN0YXJ0OwogICAgIHVpbnQzMl90IGVuZDsKICAgICB1aW50MzJf
dCB0YXJnZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJl
Y2lzZUp1bXBUYXJnZXRzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVj
aXNlSnVtcFRhcmdldHMuY3BwCmluZGV4IGUyY2IwMDA0ODM3OTRiYTkyZDUxMGRjZjVmYTk5NDg4
NWEyM2RjM2QuLmNhYjlmYmRjNGU4MzlmYmI4OWE2OTMzNTYyMjJkYjAwZTEwMjIzY2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHMu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdl
dHMuY3BwCkBAIC0yNiwxNCArMjYsMTUgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJQcmVjaXNlSnVtcFRhcmdldHMuaCIKIAorI2luY2x1ZGUgIkludGVycHJldGVySW5saW5lcy5o
IgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKLXRlbXBsYXRl
IDxzaXplX3QgdmVjdG9yU2l6ZT4KLXN0YXRpYyB2b2lkIGdldEp1bXBUYXJnZXRzRm9yQnl0ZWNv
ZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEludGVycHJldGVyKiBpbnRlcnByZXRlciwg
SW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwg
VmVjdG9yPHVuc2lnbmVkLCB2ZWN0b3JTaXplPiYgb3V0KQordGVtcGxhdGUgPHNpemVfdCB2ZWN0
b3JTaXplLCB0eXBlbmFtZSBCbG9jaywgdHlwZW5hbWUgSW5zdHJ1Y3Rpb24+CitzdGF0aWMgdm9p
ZCBnZXRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KEJsb2NrKiBjb2RlQmxvY2ssIEludGVy
cHJldGVyKiBpbnRlcnByZXRlciwgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1bnNp
Z25lZCBieXRlY29kZU9mZnNldCwgVmVjdG9yPHVuc2lnbmVkLCB2ZWN0b3JTaXplPiYgb3V0KQog
ewotICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGluc3Ry
dWN0aW9uc0JlZ2luW2J5dGVjb2RlT2Zmc2V0XS51Lm9wY29kZSk7CisgICAgT3Bjb2RlSUQgb3Bj
b2RlSUQgPSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25zQmVnaW5bYnl0ZWNv
ZGVPZmZzZXRdKTsKICAgICBJbnN0cnVjdGlvbiogY3VycmVudCA9IGluc3RydWN0aW9uc0JlZ2lu
ICsgYnl0ZWNvZGVPZmZzZXQ7CiAgICAgc3dpdGNoIChvcGNvZGVJRCkgewogICAgIGNhc2Ugb3Bf
am1wOgpAQCAtNTQsMjEgKzU1LDI1IEBAIHN0YXRpYyB2b2lkIGdldEp1bXBUYXJnZXRzRm9yQnl0
ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEludGVycHJldGVyKiBpCiAgICAgY2Fz
ZSBvcF9qbmxlc3NlcToKICAgICBjYXNlIG9wX2puZ3JlYXRlcjoKICAgICBjYXNlIG9wX2puZ3Jl
YXRlcmVxOgotICAgIGNhc2Ugb3Bfc2F2ZTogLy8gVGhlIGp1bXAgb2Ygb3Bfc2F2ZSBpcyBwdXJl
bHkgZm9yIGNhbGN1bGF0aW5nIGxpdmVuZXNzLgogICAgICAgICBvdXQuYXBwZW5kKGJ5dGVjb2Rl
T2Zmc2V0ICsgY3VycmVudFszXS51Lm9wZXJhbmQpOwogICAgICAgICBicmVhazsKKyAgICBjYXNl
IG9wX3NhdmU6IHsKKyAgICAgICAgLy8gVGhlIGp1bXAgb2Ygb3Bfc2F2ZSB1bmRlciBFeHRyYWN0
R2VuZXJhdG9yTGl2ZUNhbGxlZUxvY2FscyBtb2RlIGlzIHB1cmVseSBmb3IgY2FsY3VsYXRpbmcg
bGl2ZW5lc3MuCisgICAgICAgIG91dC5hcHBlbmQoYnl0ZWNvZGVPZmZzZXQgKyBjdXJyZW50WzNd
LnUub3BlcmFuZCk7CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICBjYXNlIG9wX3N3aXRjaF9p
bW06CiAgICAgY2FzZSBvcF9zd2l0Y2hfY2hhcjogewotICAgICAgICBTaW1wbGVKdW1wVGFibGUm
IHRhYmxlID0gY29kZUJsb2NrLT5zd2l0Y2hKdW1wVGFibGUoY3VycmVudFsxXS51Lm9wZXJhbmQp
OworICAgICAgICBhdXRvJiB0YWJsZSA9IGNvZGVCbG9jay0+c3dpdGNoSnVtcFRhYmxlKGN1cnJl
bnRbMV0udS5vcGVyYW5kKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gdGFibGUuYnJhbmNo
T2Zmc2V0cy5zaXplKCk7IGktLTspCiAgICAgICAgICAgICBvdXQuYXBwZW5kKGJ5dGVjb2RlT2Zm
c2V0ICsgdGFibGUuYnJhbmNoT2Zmc2V0c1tpXSk7CiAgICAgICAgIG91dC5hcHBlbmQoYnl0ZWNv
ZGVPZmZzZXQgKyBjdXJyZW50WzJdLnUub3BlcmFuZCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0K
ICAgICBjYXNlIG9wX3N3aXRjaF9zdHJpbmc6IHsKLSAgICAgICAgU3RyaW5nSnVtcFRhYmxlJiB0
YWJsZSA9IGNvZGVCbG9jay0+c3RyaW5nU3dpdGNoSnVtcFRhYmxlKGN1cnJlbnRbMV0udS5vcGVy
YW5kKTsKLSAgICAgICAgU3RyaW5nSnVtcFRhYmxlOjpTdHJpbmdPZmZzZXRUYWJsZTo6aXRlcmF0
b3IgaXRlciA9IHRhYmxlLm9mZnNldFRhYmxlLmJlZ2luKCk7Ci0gICAgICAgIFN0cmluZ0p1bXBU
YWJsZTo6U3RyaW5nT2Zmc2V0VGFibGU6Oml0ZXJhdG9yIGVuZCA9IHRhYmxlLm9mZnNldFRhYmxl
LmVuZCgpOworICAgICAgICBhdXRvJiB0YWJsZSA9IGNvZGVCbG9jay0+c3RyaW5nU3dpdGNoSnVt
cFRhYmxlKGN1cnJlbnRbMV0udS5vcGVyYW5kKTsKKyAgICAgICAgYXV0byBpdGVyID0gdGFibGUu
b2Zmc2V0VGFibGUuYmVnaW4oKTsKKyAgICAgICAgYXV0byBlbmQgPSB0YWJsZS5vZmZzZXRUYWJs
ZS5lbmQoKTsKICAgICAgICAgZm9yICg7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpCiAgICAgICAgICAg
ICBvdXQuYXBwZW5kKGJ5dGVjb2RlT2Zmc2V0ICsgaXRlci0+dmFsdWUuYnJhbmNoT2Zmc2V0KTsK
ICAgICAgICAgb3V0LmFwcGVuZChieXRlY29kZU9mZnNldCArIGN1cnJlbnRbMl0udS5vcGVyYW5k
KTsKQEAgLTgyLDEzICs4NywxOSBAQCBzdGF0aWMgdm9pZCBnZXRKdW1wVGFyZ2V0c0ZvckJ5dGVj
b2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBJbnRlcnByZXRlciogaQogICAgIH0KIH0K
IAotdm9pZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKENvZGVCbG9jayogY29kZUJsb2NrLCBW
ZWN0b3I8dW5zaWduZWQsIDMyPiYgb3V0KQorZW51bSBjbGFzcyBDb21wdXRlUHJlY2lzZUp1bXBU
YXJnZXRzTW9kZSB7CisgICAgRm9sbG93Q29kZUJsb2NrQ2xhaW0sCisgICAgRm9yY2VDb21wdXRl
LAorfTsKKwordGVtcGxhdGU8Q29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0c01vZGUgTW9kZSwgdHlw
ZW5hbWUgQmxvY2ssIHR5cGVuYW1lIEluc3RydWN0aW9uLCBzaXplX3QgdmVjdG9yU2l6ZT4KK3Zv
aWQgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0c0ludGVybmFsKEJsb2NrKiBjb2RlQmxvY2ssIElu
c3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCwg
VmVjdG9yPHVuc2lnbmVkLCB2ZWN0b3JTaXplPiYgb3V0KQogewogICAgIEFTU0VSVChvdXQuaXNF
bXB0eSgpKTsKICAgICAKICAgICAvLyBXZSB3aWxsIGRlcml2ZSBhIHN1cGVyc2V0IG9mIHRoZSBq
dW1wIHRhcmdldHMgdGhhdCB0aGUgY29kZSBibG9jayB0aGlua3MgaXQgaGFzLgogICAgIC8vIFNv
LCBpZiB0aGUgY29kZSBibG9jayBjbGFpbXMgdGhlcmUgYXJlIG5vbmUsIHRoZW4gd2UgYXJlIGRv
bmUuCi0gICAgaWYgKCFjb2RlQmxvY2stPm51bWJlck9mSnVtcFRhcmdldHMoKSkKKyAgICBpZiAo
TW9kZSA9PSBDb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzTW9kZTo6Rm9sbG93Q29kZUJsb2NrQ2xh
aW0gJiYgIWNvZGVCbG9jay0+bnVtYmVyT2ZKdW1wVGFyZ2V0cygpKQogICAgICAgICByZXR1cm47
CiAgICAgCiAgICAgZm9yICh1bnNpZ25lZCBpID0gY29kZUJsb2NrLT5udW1iZXJPZkV4Y2VwdGlv
bkhhbmRsZXJzKCk7IGktLTspIHsKQEAgLTk4LDEwICsxMDksOCBAQCB2b2lkIGNvbXB1dGVQcmVj
aXNlSnVtcFRhcmdldHMoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFZlY3Rvcjx1bnNpZ25lZCwgMzI+
JiBvdXQpCiAgICAgfQogCiAgICAgSW50ZXJwcmV0ZXIqIGludGVycHJldGVyID0gY29kZUJsb2Nr
LT52bSgpLT5pbnRlcnByZXRlcjsKLSAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4g
PSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCk7Ci0gICAgdW5zaWduZWQgaW5zdHJ1
Y3Rpb25Db3VudCA9IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpOwogICAgIGZvciAo
dW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQgPSAwOyBieXRlY29kZU9mZnNldCA8IGluc3RydWN0aW9u
Q291bnQ7KSB7Ci0gICAgICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0ZXItPmdldE9w
Y29kZUlEKGluc3RydWN0aW9uc0JlZ2luW2J5dGVjb2RlT2Zmc2V0XS51Lm9wY29kZSk7CisgICAg
ICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGluc3RydWN0
aW9uc0JlZ2luW2J5dGVjb2RlT2Zmc2V0XSk7CiAgICAgICAgIGdldEp1bXBUYXJnZXRzRm9yQnl0
ZWNvZGVPZmZzZXQoY29kZUJsb2NrLCBpbnRlcnByZXRlciwgaW5zdHJ1Y3Rpb25zQmVnaW4sIGJ5
dGVjb2RlT2Zmc2V0LCBvdXQpOwogICAgICAgICBieXRlY29kZU9mZnNldCArPSBvcGNvZGVMZW5n
dGhzW29wY29kZUlEXTsKICAgICB9CkBAIC0xMjMsMTEgKzEzMiwzNCBAQCB2b2lkIGNvbXB1dGVQ
cmVjaXNlSnVtcFRhcmdldHMoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFZlY3Rvcjx1bnNpZ25lZCwg
MzI+JiBvdXQpCiAgICAgb3V0LnNocmlua1RvRml0KCk7CiB9CiAKLXZvaWQgZmluZEp1bXBUYXJn
ZXRzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIHVuc2lnbmVkIGJ5dGVj
b2RlT2Zmc2V0LCBWZWN0b3I8dW5zaWduZWQsIDE+JiBvdXQpCit2b2lkIGNvbXB1dGVQcmVjaXNl
SnVtcFRhcmdldHMoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFZlY3Rvcjx1bnNpZ25lZCwgMzI+JiBv
dXQpCiB7Ci0gICAgSW50ZXJwcmV0ZXIqIGludGVycHJldGVyID0gY29kZUJsb2NrLT52bSgpLT5p
bnRlcnByZXRlcjsKLSAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4gPSBjb2RlQmxv
Y2stPmluc3RydWN0aW9ucygpLmJlZ2luKCk7Ci0gICAgZ2V0SnVtcFRhcmdldHNGb3JCeXRlY29k
ZU9mZnNldChjb2RlQmxvY2ssIGludGVycHJldGVyLCBpbnN0cnVjdGlvbnNCZWdpbiwgYnl0ZWNv
ZGVPZmZzZXQsIG91dCk7CisgICAgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0c0ludGVybmFsPENv
bXB1dGVQcmVjaXNlSnVtcFRhcmdldHNNb2RlOjpGb2xsb3dDb2RlQmxvY2tDbGFpbT4oY29kZUJs
b2NrLCBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCksIGNvZGVCbG9jay0+aW5zdHJ1
Y3Rpb25zKCkuc2l6ZSgpLCBvdXQpOworfQorCit2b2lkIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdl
dHMoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwg
dW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCwgVmVjdG9yPHVuc2lnbmVkLCAzMj4mIG91dCkKK3sK
KyAgICBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzSW50ZXJuYWw8Q29tcHV0ZVByZWNpc2VKdW1w
VGFyZ2V0c01vZGU6OkZvbGxvd0NvZGVCbG9ja0NsYWltPihjb2RlQmxvY2ssIGluc3RydWN0aW9u
c0JlZ2luLCBpbnN0cnVjdGlvbkNvdW50LCBvdXQpOworfQorCit2b2lkIGNvbXB1dGVQcmVjaXNl
SnVtcFRhcmdldHMoVW5saW5rZWRDb2RlQmxvY2sqIGNvZGVCbG9jaywgVW5saW5rZWRJbnN0cnVj
dGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQsIFZlY3Rv
cjx1bnNpZ25lZCwgMzI+JiBvdXQpCit7CisgICAgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0c0lu
dGVybmFsPENvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHNNb2RlOjpGb2xsb3dDb2RlQmxvY2tDbGFp
bT4oY29kZUJsb2NrLCBpbnN0cnVjdGlvbnNCZWdpbiwgaW5zdHJ1Y3Rpb25Db3VudCwgb3V0KTsK
K30KKwordm9pZCByZWNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMoVW5saW5rZWRDb2RlQmxvY2sq
IGNvZGVCbG9jaywgVW5saW5rZWRJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2ln
bmVkIGluc3RydWN0aW9uQ291bnQsIFZlY3Rvcjx1bnNpZ25lZD4mIG91dCkKK3sKKyAgICBjb21w
dXRlUHJlY2lzZUp1bXBUYXJnZXRzSW50ZXJuYWw8Q29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0c01v
ZGU6OkZvcmNlQ29tcHV0ZT4oY29kZUJsb2NrLCBpbnN0cnVjdGlvbnNCZWdpbiwgaW5zdHJ1Y3Rp
b25Db3VudCwgb3V0KTsKK30KKwordm9pZCBmaW5kSnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNl
dChDb2RlQmxvY2sqIGNvZGVCbG9jaywgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1
bnNpZ25lZCBieXRlY29kZU9mZnNldCwgVmVjdG9yPHVuc2lnbmVkLCAxPiYgb3V0KQoreworICAg
IGdldEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoY29kZUJsb2NrLCBjb2RlQmxvY2stPnZt
KCktPmludGVycHJldGVyLCBpbnN0cnVjdGlvbnNCZWdpbiwgYnl0ZWNvZGVPZmZzZXQsIG91dCk7
Cit9CisKK3ZvaWQgZmluZEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoVW5saW5rZWRDb2Rl
QmxvY2sqIGNvZGVCbG9jaywgVW5saW5rZWRJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4s
IHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBWZWN0b3I8dW5zaWduZWQsIDE+JiBvdXQpCit7Cisg
ICAgZ2V0SnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChjb2RlQmxvY2ssIGNvZGVCbG9jay0+
dm0oKS0+aW50ZXJwcmV0ZXIsIGluc3RydWN0aW9uc0JlZ2luLCBieXRlY29kZU9mZnNldCwgb3V0
KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmgKaW5kZXggODUyNDEzZDc3Yjc5ODk4NGIy
N2NlZjBlZDYyYmM5NGM2ODllMjEyYy4uZGI5YmQzODNiOGFjNDU1N2QzMjY3MTdiNzJkNGIwZjUw
YjFkMTgzOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNp
c2VKdW1wVGFyZ2V0cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVj
aXNlSnVtcFRhcmdldHMuaApAQCAtMzAsMTAgKzMwLDE4IEBACiAKIG5hbWVzcGFjZSBKU0Mgewog
CitjbGFzcyBVbmxpbmtlZENvZGVCbG9jazsKK3N0cnVjdCBVbmxpbmtlZEluc3RydWN0aW9uOwor
CiAvLyBSZXR1cm4gYSBzb3J0ZWQgbGlzdCBvZiBieXRlY29kZSBpbmRleCB0aGF0IGFyZSB0aGUg
ZGVzdGluYXRpb24gb2YgYSBqdW1wLgogdm9pZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKENv
ZGVCbG9jayosIFZlY3Rvcjx1bnNpZ25lZCwgMzI+JiBvdXQpOwordm9pZCBjb21wdXRlUHJlY2lz
ZUp1bXBUYXJnZXRzKENvZGVCbG9jayosIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwg
dW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCwgVmVjdG9yPHVuc2lnbmVkLCAzMj4mIG91dCk7Cit2
b2lkIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMoVW5saW5rZWRDb2RlQmxvY2sqLCBVbmxpbmtl
ZEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3Vu
dCwgVmVjdG9yPHVuc2lnbmVkLCAzMj4mIG91dCk7CisKK3ZvaWQgcmVjb21wdXRlUHJlY2lzZUp1
bXBUYXJnZXRzKFVubGlua2VkQ29kZUJsb2NrKiwgVW5saW5rZWRJbnN0cnVjdGlvbiogaW5zdHJ1
Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQsIFZlY3Rvcjx1bnNpZ25lZD4m
IG91dCk7CiAKLXZvaWQgZmluZEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2Nr
KiwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIFZlY3Rvcjx1bnNpZ25lZCwgMT4mIG91dCk7Cit2
b2lkIGZpbmRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayosIEluc3RydWN0
aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIFZlY3Rvcjx1
bnNpZ25lZCwgMT4mIG91dCk7Cit2b2lkIGZpbmRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0
KFVubGlua2VkQ29kZUJsb2NrKiwgVW5saW5rZWRJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVn
aW4sIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBWZWN0b3I8dW5zaWduZWQsIDE+JiBvdXQpOwog
CiB9IC8vIG5hbWVzcGFjZSBKU0MKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKaW5kZXggMjk5YWM2ODBkOWExZDFlNWE5MGQ5
ZmFlMWEyMmY4NDRlMjkyZTNlMi4uZjdiNWFlMGI2YjQ3MjE3MGQyODk0NjQxNjc2NjE4YzU3YzQ5
ZWMyZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2Vk
Q29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5r
ZWRDb2RlQmxvY2suY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiVW5saW5rZWRDb2Rl
QmxvY2suaCIKIAogI2luY2x1ZGUgIkJ5dGVjb2RlR2VuZXJhdG9yLmgiCisjaW5jbHVkZSAiQnl0
ZWNvZGVNb2RpZmljYXRpb25TZXQuaCIKICNpbmNsdWRlICJDbGFzc0luZm8uaCIKICNpbmNsdWRl
ICJDb2RlQ2FjaGUuaCIKICNpbmNsdWRlICJFeGVjdXRhYmxlLmgiCkBAIC0zNiw2ICszNyw3IEBA
CiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiUGFyc2VyLmgiCisjaW5jbHVkZSAiUHJlY2lzZUp1bXBUYXJnZXRzLmgiCiAjaW5jbHVkZSAi
U291cmNlUHJvdmlkZXIuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIKICNpbmNsdWRlICJTeW1i
b2xUYWJsZS5oIgpAQCAtMzY2LDUgKzM2OCwxMTEgQEAgY29uc3QgVW5saW5rZWRJbnN0cnVjdGlv
blN0cmVhbSYgVW5saW5rZWRDb2RlQmxvY2s6Omluc3RydWN0aW9ucygpIGNvbnN0CiAgICAgcmV0
dXJuICptX3VubGlua2VkSW5zdHJ1Y3Rpb25zOwogfQogCitVbmxpbmtlZEhhbmRsZXJJbmZvKiBV
bmxpbmtlZENvZGVCbG9jazo6aGFuZGxlckZvckJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVj
b2RlT2Zmc2V0LCBSZXF1aXJlZEhhbmRsZXIgcmVxdWlyZWRIYW5kbGVyKQoreworICAgIHJldHVy
biBoYW5kbGVyRm9ySW5kZXgoYnl0ZWNvZGVPZmZzZXQsIHJlcXVpcmVkSGFuZGxlcik7Cit9CisK
K1VubGlua2VkSGFuZGxlckluZm8qIFVubGlua2VkQ29kZUJsb2NrOjpoYW5kbGVyRm9ySW5kZXgo
dW5zaWduZWQgaW5kZXgsIFJlcXVpcmVkSGFuZGxlciByZXF1aXJlZEhhbmRsZXIpCit7CisgICAg
aWYgKCFtX3JhcmVEYXRhKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gVW5s
aW5rZWRIYW5kbGVySW5mbzo6aGFuZGxlckZvckluZGV4KG1fcmFyZURhdGEtPm1fZXhjZXB0aW9u
SGFuZGxlcnMsIGluZGV4LCByZXF1aXJlZEhhbmRsZXIpOworfQorCit2b2lkIFVubGlua2VkQ29k
ZUJsb2NrOjphcHBseU1vZGlmaWNhdGlvbihCeXRlY29kZU1vZGlmaWNhdGlvblNldCYgaW5zZXJ0
aW9uU2V0KQoreworICAgIC8vIEJlZm9yZSBhcHBseWluZyB0aGUgY2hhbmdlcywgd2UgYWRqdXN0
IHRoZSBqdW1wcyBiYXNlZCBvbiB0aGUgb3JpZ2luYWwgYnl0ZWNvZGUgb2Zmc2V0LCB0aGUgb2Zm
c2V0IHRvIHRoZSBqdW1wIHRhcmdldCwgYW5kCisgICAgLy8gdGhlIGluc2VydGlvbiBpbmZvcm1h
dGlvbi4KKworICAgIEJ5dGVjb2RlR3JhcGg8VW5saW5rZWRDb2RlQmxvY2s+JiBncmFwaCA9IGlu
c2VydGlvblNldC5ncmFwaCgpOworICAgIFVubGlua2VkSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9u
c0JlZ2luID0gZ3JhcGguaW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsKKyAgICBmb3IgKGludCBieXRl
Y29kZU9mZnNldCA9IDAsIGluc3RydWN0aW9uQ291bnQgPSBncmFwaC5pbnN0cnVjdGlvbnMoKS5z
aXplKCk7IGJ5dGVjb2RlT2Zmc2V0IDwgaW5zdHJ1Y3Rpb25Db3VudDspIHsKKyAgICAgICAgVW5s
aW5rZWRJbnN0cnVjdGlvbiogY3VycmVudCA9IGluc3RydWN0aW9uc0JlZ2luICsgYnl0ZWNvZGVP
ZmZzZXQ7CisgICAgICAgIE9wY29kZUlEIG9wY29kZUlEID0gY3VycmVudFswXS51Lm9wY29kZTsK
KworICAgICAgICBzd2l0Y2ggKG9wY29kZUlEKSB7CisgICAgICAgIGNhc2Ugb3Bfam1wOgorICAg
ICAgICAgICAgY3VycmVudFsxXS51Lm9wZXJhbmQgPSBpbnNlcnRpb25TZXQuYWRqdXN0T2Zmc2V0
KGJ5dGVjb2RlT2Zmc2V0LCBieXRlY29kZU9mZnNldCArIGN1cnJlbnRbMV0udS5vcGVyYW5kKTsK
KyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2Ugb3BfanRydWU6CisgICAgICAgIGNh
c2Ugb3BfamZhbHNlOgorICAgICAgICBjYXNlIG9wX2plcV9udWxsOgorICAgICAgICBjYXNlIG9w
X2puZXFfbnVsbDoKKyAgICAgICAgICAgIGN1cnJlbnRbMl0udS5vcGVyYW5kID0gaW5zZXJ0aW9u
U2V0LmFkanVzdE9mZnNldChieXRlY29kZU9mZnNldCwgYnl0ZWNvZGVPZmZzZXQgKyBjdXJyZW50
WzJdLnUub3BlcmFuZCk7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIG9wX2pu
ZXFfcHRyOgorICAgICAgICBjYXNlIG9wX2psZXNzOgorICAgICAgICBjYXNlIG9wX2psZXNzZXE6
CisgICAgICAgIGNhc2Ugb3BfamdyZWF0ZXI6CisgICAgICAgIGNhc2Ugb3BfamdyZWF0ZXJlcToK
KyAgICAgICAgY2FzZSBvcF9qbmxlc3M6CisgICAgICAgIGNhc2Ugb3Bfam5sZXNzZXE6CisgICAg
ICAgIGNhc2Ugb3Bfam5ncmVhdGVyOgorICAgICAgICBjYXNlIG9wX2puZ3JlYXRlcmVxOgorICAg
ICAgICAgICAgY3VycmVudFszXS51Lm9wZXJhbmQgPSBpbnNlcnRpb25TZXQuYWRqdXN0T2Zmc2V0
KGJ5dGVjb2RlT2Zmc2V0LCBieXRlY29kZU9mZnNldCArIGN1cnJlbnRbM10udS5vcGVyYW5kKTsK
KyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2Ugb3Bfc3dpdGNoX2ltbToKKyAgICAg
ICAgY2FzZSBvcF9zd2l0Y2hfY2hhcjogeworICAgICAgICAgICAgYXV0byYgdGFibGUgPSBzd2l0
Y2hKdW1wVGFibGUoY3VycmVudFsxXS51Lm9wZXJhbmQpOworICAgICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gdGFibGUuYnJhbmNoT2Zmc2V0cy5zaXplKCk7IGktLTspCisgICAgICAgICAgICAg
ICAgdGFibGUuYnJhbmNoT2Zmc2V0c1tpXSA9IGluc2VydGlvblNldC5hZGp1c3RPZmZzZXQoYnl0
ZWNvZGVPZmZzZXQsIGJ5dGVjb2RlT2Zmc2V0ICsgdGFibGUuYnJhbmNoT2Zmc2V0c1tpXSk7Cisg
ICAgICAgICAgICBjdXJyZW50WzJdLnUub3BlcmFuZCA9IGluc2VydGlvblNldC5hZGp1c3RPZmZz
ZXQoYnl0ZWNvZGVPZmZzZXQsIGJ5dGVjb2RlT2Zmc2V0ICsgY3VycmVudFsyXS51Lm9wZXJhbmQp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBjYXNlIG9wX3N3aXRj
aF9zdHJpbmc6IHsKKyAgICAgICAgICAgIGF1dG8mIHRhYmxlID0gc3RyaW5nU3dpdGNoSnVtcFRh
YmxlKGN1cnJlbnRbMV0udS5vcGVyYW5kKTsKKyAgICAgICAgICAgIGF1dG8gaXRlciA9IHRhYmxl
Lm9mZnNldFRhYmxlLmJlZ2luKCk7CisgICAgICAgICAgICBhdXRvIGVuZCA9IHRhYmxlLm9mZnNl
dFRhYmxlLmVuZCgpOworICAgICAgICAgICAgZm9yICg7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpCisg
ICAgICAgICAgICAgICAgaXRlci0+dmFsdWUuYnJhbmNoT2Zmc2V0ID0gaW5zZXJ0aW9uU2V0LmFk
anVzdE9mZnNldChieXRlY29kZU9mZnNldCwgYnl0ZWNvZGVPZmZzZXQgKyBpdGVyLT52YWx1ZS5i
cmFuY2hPZmZzZXQpOworICAgICAgICAgICAgY3VycmVudFsyXS51Lm9wZXJhbmQgPSBpbnNlcnRp
b25TZXQuYWRqdXN0T2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0LCBieXRlY29kZU9mZnNldCArIGN1cnJl
bnRbMl0udS5vcGVyYW5kKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgYnl0
ZWNvZGVPZmZzZXQgKz0gb3Bjb2RlTGVuZ3RoKG9wY29kZUlEKTsKKyAgICB9CisKKyAgICAvLyBU
aGVuLCBleGNlcHRpb24gaGFuZGxlcnMgc2hvdWxkIGJlIGFkanVzdGVkLgorICAgIGlmIChtX3Jh
cmVEYXRhKSB7CisgICAgICAgIGZvciAoVW5saW5rZWRIYW5kbGVySW5mbyYgaGFuZGxlciA6IG1f
cmFyZURhdGEtPm1fZXhjZXB0aW9uSGFuZGxlcnMpIHsKKyAgICAgICAgICAgIGhhbmRsZXIudGFy
Z2V0ID0gaW5zZXJ0aW9uU2V0LmFkanVzdE9mZnNldCgwLCBoYW5kbGVyLnRhcmdldCk7CisgICAg
ICAgICAgICBoYW5kbGVyLnN0YXJ0ID0gaW5zZXJ0aW9uU2V0LmFkanVzdE9mZnNldCgwLCBoYW5k
bGVyLnN0YXJ0KTsKKyAgICAgICAgICAgIGhhbmRsZXIuZW5kID0gaW5zZXJ0aW9uU2V0LmFkanVz
dE9mZnNldCgwLCBoYW5kbGVyLmVuZCk7CisgICAgICAgIH0KKworICAgICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IG1fcmFyZURhdGEtPm1fb3BQcm9maWxlQ29udHJvbEZsb3dCeXRlY29kZU9m
ZnNldHMuc2l6ZSgpOyArK2kpCisgICAgICAgICAgICBtX3JhcmVEYXRhLT5tX29wUHJvZmlsZUNv
bnRyb2xGbG93Qnl0ZWNvZGVPZmZzZXRzW2ldID0gaW5zZXJ0aW9uU2V0LmFkanVzdE9mZnNldCgw
LCBtX3JhcmVEYXRhLT5tX29wUHJvZmlsZUNvbnRyb2xGbG93Qnl0ZWNvZGVPZmZzZXRzW2ldKTsK
KworICAgICAgICBpZiAoIW1fcmFyZURhdGEtPm1fdHlwZVByb2ZpbGVySW5mb01hcC5pc0VtcHR5
KCkpIHsKKyAgICAgICAgICAgIEhhc2hNYXA8dW5zaWduZWQsIFJhcmVEYXRhOjpUeXBlUHJvZmls
ZXJFeHByZXNzaW9uUmFuZ2U+IGFkanVzdGVkVHlwZVByb2ZpbGVySW5mb01hcDsKKyAgICAgICAg
ICAgIGZvciAoYXV0byYgZW50cnkgOiBtX3JhcmVEYXRhLT5tX3R5cGVQcm9maWxlckluZm9NYXAp
CisgICAgICAgICAgICAgICAgYWRqdXN0ZWRUeXBlUHJvZmlsZXJJbmZvTWFwLnNldChpbnNlcnRp
b25TZXQuYWRqdXN0T2Zmc2V0KDAsIGVudHJ5LmtleSksIGVudHJ5LnZhbHVlKTsKKyAgICAgICAg
ICAgIG1fcmFyZURhdGEtPm1fdHlwZVByb2ZpbGVySW5mb01hcC5zd2FwKGFkanVzdGVkVHlwZVBy
b2ZpbGVySW5mb01hcCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IG1fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnMuc2l6ZSgpOyArK2kpCisgICAgICAg
IG1fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnNbaV0gPSBpbnNlcnRpb25TZXQuYWRqdXN0T2Zm
c2V0KDAsIG1fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnNbaV0pOworCisgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBtX2V4cHJlc3Npb25JbmZvLnNpemUoKTsgKytpKQorICAgICAgICBtX2V4
cHJlc3Npb25JbmZvW2ldLmluc3RydWN0aW9uT2Zmc2V0ID0gaW5zZXJ0aW9uU2V0LmFkanVzdE9m
ZnNldCgwLCBtX2V4cHJlc3Npb25JbmZvW2ldLmluc3RydWN0aW9uT2Zmc2V0KTsKKworICAgIC8v
IFRoZW4sIG1vZGlmeSB0aGUgdW5saW5rZWQgaW5zdHJ1Y3Rpb25zLgorICAgIGluc2VydGlvblNl
dC5hcHBseU1vZGlmaWNhdGlvbigpOworCisgICAgLy8gQW5kIHJlY29tcHV0ZSB0aGUganVtcCB0
YXJnZXQgYmFzZWQgb24gdGhlIG1vZGlmaWVkIHVubGlua2VkIGluc3RydWN0aW9ucy4KKyAgICBt
X2p1bXBUYXJnZXRzLmNsZWFyKCk7CisgICAgcmVjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKHRo
aXMsIGdyYXBoLmluc3RydWN0aW9ucygpLmJlZ2luKCksIGdyYXBoLmluc3RydWN0aW9ucygpLnNp
emUoKSwgbV9qdW1wVGFyZ2V0cyk7Cit9CisKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAppbmRleCA5MWZkY2E0OGMxZTM5ZThi
ZWZiMGM1ZmQ1NWZkOWJkOTFjMWYzNzA3Li42MmYxNGIwODk0MDgyODA2N2YzODhhZjMyNzhlODFk
NDVhM2VmOGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRDb2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRDb2RlQmxvY2suaApAQCAtNDgsNiArNDgsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAor
Y2xhc3MgQnl0ZWNvZGVNb2RpZmljYXRpb25TZXQ7CiBjbGFzcyBEZWJ1Z2dlcjsKIGNsYXNzIEZ1
bmN0aW9uTWV0YWRhdGFOb2RlOwogY2xhc3MgRnVuY3Rpb25FeGVjdXRhYmxlOwpAQCAtNjksNyAr
NzAsMTEgQEAgdHlwZWRlZiB1bnNpZ25lZCBVbmxpbmtlZE9iamVjdEFsbG9jYXRpb25Qcm9maWxl
OwogdHlwZWRlZiB1bnNpZ25lZCBVbmxpbmtlZExMSW50Q2FsbExpbmtJbmZvOwogCiBzdHJ1Y3Qg
VW5saW5rZWRTdHJpbmdKdW1wVGFibGUgewotICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8U3Ry
aW5nSW1wbD4sIGludDMyX3Q+IFN0cmluZ09mZnNldFRhYmxlOworICAgIHN0cnVjdCBPZmZzZXRM
b2NhdGlvbiB7CisgICAgICAgIGludDMyX3QgYnJhbmNoT2Zmc2V0OworICAgIH07CisKKyAgICB0
eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFN0cmluZ0ltcGw+LCBPZmZzZXRMb2NhdGlvbj4gU3RyaW5n
T2Zmc2V0VGFibGU7CiAgICAgU3RyaW5nT2Zmc2V0VGFibGUgb2Zmc2V0VGFibGU7CiAKICAgICBp
bmxpbmUgaW50MzJfdCBvZmZzZXRGb3JWYWx1ZShTdHJpbmdJbXBsKiB2YWx1ZSwgaW50MzJfdCBk
ZWZhdWx0T2Zmc2V0KQpAQCAtNzgsNyArODMsNyBAQCBzdHJ1Y3QgVW5saW5rZWRTdHJpbmdKdW1w
VGFibGUgewogICAgICAgICBTdHJpbmdPZmZzZXRUYWJsZTo6Y29uc3RfaXRlcmF0b3IgbG9jID0g
b2Zmc2V0VGFibGUuZmluZCh2YWx1ZSk7CiAgICAgICAgIGlmIChsb2MgPT0gZW5kKQogICAgICAg
ICAgICAgcmV0dXJuIGRlZmF1bHRPZmZzZXQ7Ci0gICAgICAgIHJldHVybiBsb2MtPnZhbHVlOwor
ICAgICAgICByZXR1cm4gbG9jLT52YWx1ZS5icmFuY2hPZmZzZXQ7CiAgICAgfQogCiB9OwpAQCAt
MTA2LDYgKzExMSw4IEBAIHN0cnVjdCBVbmxpbmtlZEluc3RydWN0aW9uIHsKICAgICB9IHU7CiB9
OwogCitjbGFzcyBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbjsKKwogY2xhc3MgVW5saW5rZWRD
b2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIEpTQ2VsbCBC
YXNlOwpAQCAtMTE1LDYgKzEyMiw5IEBAIGNsYXNzIFVubGlua2VkQ29kZUJsb2NrIDogcHVibGlj
IEpTQ2VsbCB7CiAKICAgICBlbnVtIHsgQ2FsbEZ1bmN0aW9uLCBBcHBseUZ1bmN0aW9uIH07CiAK
KyAgICB0eXBlZGVmIFVubGlua2VkSW5zdHJ1Y3Rpb24gSW5zdHJ1Y3Rpb247CisgICAgdHlwZWRl
ZiBWZWN0b3I8VW5saW5rZWRJbnN0cnVjdGlvbiwgMCwgVW5zYWZlVmVjdG9yT3ZlcmZsb3c+IFVu
cGFja2VkSW5zdHJ1Y3Rpb25zOworCiAgICAgYm9vbCBpc0NvbnN0cnVjdG9yKCkgY29uc3QgeyBy
ZXR1cm4gbV9pc0NvbnN0cnVjdG9yOyB9CiAgICAgYm9vbCBpc1N0cmljdE1vZGUoKSBjb25zdCB7
IHJldHVybiBtX2lzU3RyaWN0TW9kZTsgfQogICAgIGJvb2wgdXNlc0V2YWwoKSBjb25zdCB7IHJl
dHVybiBtX3VzZXNFdmFsOyB9CkBAIC0yMDQsNiArMjE0LDkgQEAgY2xhc3MgVW5saW5rZWRDb2Rl
QmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICB1bnNpZ25lZCBqdW1wVGFyZ2V0KGludCBpbmRl
eCkgY29uc3QgeyByZXR1cm4gbV9qdW1wVGFyZ2V0c1tpbmRleF07IH0KICAgICB1bnNpZ25lZCBs
YXN0SnVtcFRhcmdldCgpIGNvbnN0IHsgcmV0dXJuIG1fanVtcFRhcmdldHMubGFzdCgpOyB9CiAK
KyAgICBVbmxpbmtlZEhhbmRsZXJJbmZvKiBoYW5kbGVyRm9yQnl0ZWNvZGVPZmZzZXQodW5zaWdu
ZWQgYnl0ZWNvZGVPZmZzZXQsIFJlcXVpcmVkSGFuZGxlciA9IFJlcXVpcmVkSGFuZGxlcjo6QW55
SGFuZGxlcik7CisgICAgVW5saW5rZWRIYW5kbGVySW5mbyogaGFuZGxlckZvckluZGV4KHVuc2ln
bmVkLCBSZXF1aXJlZEhhbmRsZXIgPSBSZXF1aXJlZEhhbmRsZXI6OkFueUhhbmRsZXIpOworCiAg
ICAgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNCdWlsdGluRnVu
Y3Rpb247IH0KIAogICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQoKSBjb25zdCB7
IHJldHVybiBzdGF0aWNfY2FzdDxDb25zdHJ1Y3RvcktpbmQ+KG1fY29uc3RydWN0b3JLaW5kKTsg
fQpAQCAtMzg0LDYgKzM5Nyw4IEBAIGNsYXNzIFVubGlua2VkQ29kZUJsb2NrIDogcHVibGljIEpT
Q2VsbCB7CiAgICAgfQogCiBwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBCeXRlY29kZU1vZGlm
aWNhdGlvblNldDsKKyAgICB2b2lkIGFwcGx5TW9kaWZpY2F0aW9uKEJ5dGVjb2RlTW9kaWZpY2F0
aW9uU2V0Jik7CiAKICAgICB2b2lkIGNyZWF0ZVJhcmVEYXRhSWZOZWNlc3NhcnkoKQogICAgIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WaXJ0dWFsUmVnaXN0
ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WaXJ0dWFsUmVnaXN0ZXIuaApp
bmRleCBkM2RmNDA5NTdiNTE3NTY4ZTNhZWZiZTNhMWE2MDlmZDg3OGJhYWMzLi5kYWY1MDlmNmM3
ZDExNWU0NWJjYjEwN2M2N2QzZDM4ZDgwNGYyODk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvVmlydHVhbFJlZ2lzdGVyLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1ZpcnR1YWxSZWdpc3Rlci5oCkBAIC0yNiw4ICsyNiw4IEBACiAjaWZu
ZGVmIFZpcnR1YWxSZWdpc3Rlcl9oCiAjZGVmaW5lIFZpcnR1YWxSZWdpc3Rlcl9oCiAKKyNpbmNs
dWRlICJCeXRlY29kZUNvbnZlbnRpb25zLmgiCiAjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCi0KICNp
bmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC0xMDMsNyAr
MTAzLDcgQEAgY2xhc3MgVmlydHVhbFJlZ2lzdGVyIHsKIAogcHJpdmF0ZToKICAgICBzdGF0aWMg
Y29uc3QgaW50IHNfaW52YWxpZFZpcnR1YWxSZWdpc3RlciA9IDB4M2ZmZmZmZmY7Ci0gICAgc3Rh
dGljIGNvbnN0IGludCBzX2ZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4ID0gMHg0MDAwMDAwMDsK
KyAgICBzdGF0aWMgY29uc3QgaW50IHNfZmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXggPSBGaXJz
dENvbnN0YW50UmVnaXN0ZXJJbmRleDsKIAogICAgIHN0YXRpYyBpbnQgbG9jYWxUb09wZXJhbmQo
aW50IGxvY2FsKSB7IHJldHVybiAtMSAtIGxvY2FsOyB9CiAgICAgc3RhdGljIGludCBvcGVyYW5k
VG9Mb2NhbChpbnQgb3BlcmFuZCkgeyByZXR1cm4gLTEgLSBvcGVyYW5kOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3Iu
Y3BwCmluZGV4IDY1MjRiZTZmNTZhZDFmOGFiNGEzYzlmOGRiZDE1ZGU1MmJhNjhjZTQuLjc1MmNj
OGM4ZWM4N2IxYjk5Y2MyNzdkM2E3NjllMzU3YzExNTUxNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBA
IC0zMyw2ICszMyw3IEBACiAKICNpbmNsdWRlICJBcml0aFByb2ZpbGUuaCIKICNpbmNsdWRlICJC
dWlsdGluRXhlY3V0YWJsZXMuaCIKKyNpbmNsdWRlICJCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlv
bi5oIgogI2luY2x1ZGUgIkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5oIgogI2luY2x1ZGUgIklu
dGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgpAQCAtMTU1LDYgKzE1NiwxMCBA
QCBQYXJzZXJFcnJvciBCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUoKQogICAgICAgICBtX2Nv
ZGVCbG9jay0+YWRkRXhjZXB0aW9uSGFuZGxlcihpbmZvKTsKICAgICB9CiAgICAgCisKKyAgICBp
ZiAobV9jb2RlQmxvY2stPnBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9y
Qm9keU1vZGUpCisgICAgICAgIHBlcmZvcm1HZW5lcmF0b3JpZmljYXRpb24obV9jb2RlQmxvY2su
Z2V0KCksIG1faW5zdHJ1Y3Rpb25zLCBtX2dlbmVyYXRvckZyYW1lU3ltYm9sVGFibGUuZ2V0KCks
IG1fZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZUluZGV4KTsKKwogICAgIG1fY29kZUJsb2NrLT5z
ZXRJbnN0cnVjdGlvbnMoc3RkOjptYWtlX3VuaXF1ZTxVbmxpbmtlZEluc3RydWN0aW9uU3RyZWFt
PihtX2luc3RydWN0aW9ucykpOwogCiAgICAgbV9jb2RlQmxvY2stPnNocmlua1RvRml0KCk7CkBA
IC0yNjIsMTAgKzI2NywxNCBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3Io
Vk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAgIGJvb2wgc2hv
dWxkQ2FwdHVyZUFsbE9mVGhlVGhpbmdzID0gbV9zaG91bGRFbWl0RGVidWdIb29rcyB8fCBjb2Rl
QmxvY2stPnVzZXNFdmFsKCk7CiAgICAgYm9vbCBuZWVkc0FyZ3VtZW50cyA9IChmdW5jdGlvbk5v
ZGUtPnVzZXNBcmd1bWVudHMoKSB8fCBjb2RlQmxvY2stPnVzZXNFdmFsKCkgfHwgKGZ1bmN0aW9u
Tm9kZS0+dXNlc0Fycm93RnVuY3Rpb24oKSAmJiAhY29kZUJsb2NrLT5pc0Fycm93RnVuY3Rpb24o
KSAmJiBpc0FyZ3VtZW50c1VzZWRJbklubmVyQXJyb3dGdW5jdGlvbigpKSk7CiAKLSAgICAvLyBH
ZW5lcmF0b3IgbmV2ZXIgcHJvdmlkZXMgImFyZ3VtZW50cyIuICJhcmd1bWVudHMiIHJlZmVyZW5j
ZSB3aWxsIGJlIHJlc29sdmVkIGluIGFuIHVwcGVyIGdlbmVyYXRvciBmdW5jdGlvbiBzY29wZS4K
LSAgICBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yQm9keU1vZGUp
CisgICAgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckJvZHlNb2Rl
KSB7CisgICAgICAgIC8vIEdlbmVyYXRvciBuZXZlciBwcm92aWRlcyAiYXJndW1lbnRzIi4gImFy
Z3VtZW50cyIgcmVmZXJlbmNlIHdpbGwgYmUgcmVzb2x2ZWQgaW4gYW4gdXBwZXIgZ2VuZXJhdG9y
IGZ1bmN0aW9uIHNjb3BlLgogICAgICAgICBuZWVkc0FyZ3VtZW50cyA9IGZhbHNlOwogCisgICAg
ICAgIC8vIEdlbmVyYXRvciB1c2VzIHRoZSB2YXIgc2NvcGUgdG8gc2F2ZSBhbmQgcmVzdW1lIGl0
cyB2YXJpYWJsZXMuIFNvIHRoZSBsZXhpY2FsIHNjb3BlIGlzIGFsd2F5cyBpbnN0YW50aWF0ZWQu
CisgICAgICAgIHNob3VsZENhcHR1cmVTb21lT2ZUaGVUaGluZ3MgPSB0cnVlOworICAgIH0KKwog
ICAgIGlmIChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JXcmFwcGVyRnVu
Y3Rpb25Nb2RlICYmIG5lZWRzQXJndW1lbnRzKSB7CiAgICAgICAgIC8vIEdlbmVyYXRvciBkb2Vz
IG5vdCBwcm92aWRlICJhcmd1bWVudHMiLiBJbnN0ZWFkLCB3cmFwcGluZyBHZW5lcmF0b3JGdW5j
dGlvbiBwcm92aWRlcyAiYXJndW1lbnRzIi4KICAgICAgICAgLy8gVGhpcyBpcyBiZWNhdXNlIGFy
Z3VtZW50cyBvZiBhIGdlbmVyYXRvciBzaG91bGQgYmUgZXZhbHVhdGVkIGJlZm9yZSBzdGFydGlu
ZyBpdC4KQEAgLTI3NCw3ICsyODMsNyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5l
cmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAgICAg
ICAvLyAgICBmdW5jdGlvbiAqZ2VuKGEsIGIgPSBoZWxsbygpKQogICAgICAgICAvLyAgICB7CiAg
ICAgICAgIC8vICAgICAgICByZXR1cm4gewotICAgICAgICAvLyAgICAgICAgICAgIEBnZW5lcmF0
b3JOZXh0OiBmdW5jdGlvbiAoQGdlbmVyYXRvciwgQGdlbmVyYXRvclN0YXRlLCBAZ2VuZXJhdG9y
VmFsdWUsIEBnZW5lcmF0b3JSZXN1bWVNb2RlKQorICAgICAgICAvLyAgICAgICAgICAgIEBnZW5l
cmF0b3JOZXh0OiBmdW5jdGlvbiAoQGdlbmVyYXRvciwgQGdlbmVyYXRvclN0YXRlLCBAZ2VuZXJh
dG9yVmFsdWUsIEBnZW5lcmF0b3JSZXN1bWVNb2RlLCBAZ2VuZXJhdG9yRnJhbWUpCiAgICAgICAg
IC8vICAgICAgICAgICAgewogICAgICAgICAvLyAgICAgICAgICAgICAgICBhcmd1bWVudHM7ICAv
LyBUaGlzIGBhcmd1bWVudHNgIHNob3VsZCByZWZlcmVuY2UgdG8gdGhlIGdlbidzIGFyZ3VtZW50
cy4KICAgICAgICAgLy8gICAgICAgICAgICAgICAgLi4uCkBAIC0zMDMsMTYgKzMxMiwxNCBAQCBC
eXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUq
IGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAgICAgICByZXR1cm4gY2FwdHVyZXModWlkKSA/IFZh
cktpbmQ6OlNjb3BlIDogVmFyS2luZDo6U3RhY2s7CiAgICAgfTsKIAotICAgIGVtaXRFbnRlcigp
OwotCi0gICAgYWxsb2NhdGVBbmRFbWl0U2NvcGUoKTsKLQogICAgIG1fY2FsbGVlUmVnaXN0ZXIu
c2V0SW5kZXgoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlKTsKIAogICAgIGluaXRpYWxpemVQYXJhbWV0
ZXJzKHBhcmFtZXRlcnMpOwogICAgIEFTU0VSVCghKGlzU2ltcGxlUGFyYW1ldGVyTGlzdCAmJiBt
X3Jlc3RQYXJhbWV0ZXIpKTsKIAotICAgIC8vIEJlZm9yZSBlbWl0dGluZyBhIHNjb3BlIGNyZWF0
aW9uLCBlbWl0IGEgZ2VuZXJhdG9yIHByb2xvZ3VlIHRoYXQgY29udGFpbnMganVtcCBiYXNlZCBv
biBhIGdlbmVyYXRvcidzIHN0YXRlLgorICAgIGVtaXRFbnRlcigpOworCisgICAgLy8gQmVmb3Jl
IGVtaXR0aW5nIGFueSBvZiB0aGUgYWN0dWFsIGNvZGUgZXhjZXB0IGZvciBvcF9lbnRlciwgZW1p
dCBhIGdlbmVyYXRvciBwcm9sb2d1ZSB0aGF0IGNvbnRhaW5zIGp1bXAgYmFzZWQgb24gYSBnZW5l
cmF0b3IncyBzdGF0ZS4KICAgICBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2Vu
ZXJhdG9yQm9keU1vZGUpIHsKICAgICAgICAgbV9nZW5lcmF0b3JSZWdpc3RlciA9ICZtX3BhcmFt
ZXRlcnNbMV07CiAKQEAgLTMyNiw2ICszMzMsOCBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNv
ZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQog
ICAgICAgICBlbWl0R2VuZXJhdG9yU3RhdGVMYWJlbCgpOwogICAgIH0KIAorICAgIGFsbG9jYXRl
QW5kRW1pdFNjb3BlKCk7CisKICAgICBpZiAoZnVuY3Rpb25OYW1lSXNJblNjb3BlKGZ1bmN0aW9u
Tm9kZS0+aWRlbnQoKSwgZnVuY3Rpb25Ob2RlLT5mdW5jdGlvbk1vZGUoKSkpIHsKICAgICAgICAg
QVNTRVJUKHBhcnNlTW9kZSAhPSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckJvZHlNb2RlKTsK
ICAgICAgICAgYm9vbCBpc0R5bmFtaWNTY29wZSA9IGZ1bmN0aW9uTmFtZVNjb3BlSXNEeW5hbWlj
KGNvZGVCbG9jay0+dXNlc0V2YWwoKSwgY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSk7CkBAIC02
NDEsNiArNjUwLDE2IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYg
dm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtlCiAgICAgICAgICAgICBlbWl0
TG9hZE5ld1RhcmdldEZyb21BcnJvd0Z1bmN0aW9uTGV4aWNhbEVudmlyb25tZW50KCk7CiAgICAg
fQogICAgIAorICAgIC8vIFNldCB1cCB0aGUgbGV4aWNhbCBlbnZpcm9ubWVudCBzY29wZSBhcyB0
aGUgZ2VuZXJhdG9yIGZyYW1lLiBXZSBzdG9yZSB0aGUgc2F2ZWQgYW5kIHJlc3VtZWQgZ2VuZXJh
dG9yIHJlZ2lzdGVycyBpbnRvIHRoaXMgc2NvcGUgd2l0aCB0aGUgc3ltYm9sIGtleXMuCisgICAg
Ly8gU2luY2UgdGhleSBhcmUgc3ltYm9sIGtleWVkLCB0aGVzZSB2YXJpYWJsZXMgY2Fubm90IGJl
IHJlYWNoZWQgZnJvbSB0aGUgdXN1YWwgY29kZS4KKyAgICBpZiAoU291cmNlUGFyc2VNb2RlOjpH
ZW5lcmF0b3JCb2R5TW9kZSA9PSBwYXJzZU1vZGUpIHsKKyAgICAgICAgQVNTRVJUKG1fbGV4aWNh
bEVudmlyb25tZW50UmVnaXN0ZXIpOworICAgICAgICBtX2dlbmVyYXRvckZyYW1lU3ltYm9sVGFi
bGUuc2V0KCptX3ZtLCBmdW5jdGlvblN5bWJvbFRhYmxlKTsKKyAgICAgICAgbV9nZW5lcmF0b3JG
cmFtZVN5bWJvbFRhYmxlSW5kZXggPSBzeW1ib2xUYWJsZUNvbnN0YW50SW5kZXg7CisgICAgICAg
IGVtaXRNb3ZlKGdlbmVyYXRvckZyYW1lUmVnaXN0ZXIoKSwgbV9sZXhpY2FsRW52aXJvbm1lbnRS
ZWdpc3Rlcik7CisgICAgICAgIGVtaXRQdXRCeUlkKGdlbmVyYXRvclJlZ2lzdGVyKCksIHByb3Bl
cnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JGcmFtZVByaXZhdGVOYW1lKCksIGdl
bmVyYXRvckZyYW1lUmVnaXN0ZXIoKSk7CisgICAgfQorCiAgICAgYm9vbCBzaG91bGRJbml0aWFs
aXplQmxvY2tTY29wZWRGdW5jdGlvbnMgPSBmYWxzZTsgLy8gV2UgZ2VuZXJhdGUgdG9wLWxldmVs
IGZ1bmN0aW9uIGRlY2xhcmF0aW9ucyBpbiA6OmdlbmVyYXRlKCkuCiAgICAgcHVzaExleGljYWxT
Y29wZShtX3Njb3BlTm9kZSwgVERaQ2hlY2tPcHRpbWl6YXRpb246Ok9wdGltaXplLCBOZXN0ZWRT
Y29wZVR5cGU6OklzTm90TmVzdGVkLCBudWxscHRyLCBzaG91bGRJbml0aWFsaXplQmxvY2tTY29w
ZWRGdW5jdGlvbnMpOwogfQpAQCAtMzY3Miw4ICszNjkxLDcgQEAgdm9pZCBCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdENvbXBsZXhQb3BTY29wZXMoUmVnaXN0ZXJJRCogc2NvcGUsIENvbnRyb2xGbG93
Q29udGUKICAgICAgICAgICAgIGlmIChmbGlwVHJpZXMpIHsKICAgICAgICAgICAgICAgICB3aGls
ZSAobV90cnlDb250ZXh0U3RhY2suc2l6ZSgpICE9IGZpbmFsbHlDb250ZXh0LnRyeUNvbnRleHRT
dGFja1NpemUpIHsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKG1fdHJ5Q29udGV4dFN0YWNr
LnNpemUoKSA+IGZpbmFsbHlDb250ZXh0LnRyeUNvbnRleHRTdGFja1NpemUpOwotICAgICAgICAg
ICAgICAgICAgICBUcnlDb250ZXh0IGNvbnRleHQgPSBtX3RyeUNvbnRleHRTdGFjay5sYXN0KCk7
Ci0gICAgICAgICAgICAgICAgICAgIG1fdHJ5Q29udGV4dFN0YWNrLnJlbW92ZUxhc3QoKTsKKyAg
ICAgICAgICAgICAgICAgICAgVHJ5Q29udGV4dCBjb250ZXh0ID0gbV90cnlDb250ZXh0U3RhY2su
dGFrZUxhc3QoKTsKICAgICAgICAgICAgICAgICAgICAgVHJ5UmFuZ2UgcmFuZ2U7CiAgICAgICAg
ICAgICAgICAgICAgIHJhbmdlLnN0YXJ0ID0gY29udGV4dC5zdGFydDsKICAgICAgICAgICAgICAg
ICAgICAgcmFuZ2UuZW5kID0gYmVmb3JlRmluYWxseTsKQEAgLTM5NTcsNyArMzk3NSw3IEBAIHN0
YXRpYyB2b2lkIHByZXBhcmVKdW1wVGFibGVGb3JTdHJpbmdTd2l0Y2goVW5saW5rZWRTdHJpbmdK
dW1wVGFibGUmIGp1bXBUYWJsZSwKICAgICAgICAgCiAgICAgICAgIEFTU0VSVChub2Rlc1tpXS0+
aXNTdHJpbmcoKSk7CiAgICAgICAgIFN0cmluZ0ltcGwqIGNsYXVzZSA9IHN0YXRpY19jYXN0PFN0
cmluZ05vZGUqPihub2Rlc1tpXSktPnZhbHVlKCkuaW1wbCgpOwotICAgICAgICBqdW1wVGFibGUu
b2Zmc2V0VGFibGUuYWRkKGNsYXVzZSwgbGFiZWxzW2ldLT5iaW5kKHN3aXRjaEFkZHJlc3MsIHN3
aXRjaEFkZHJlc3MgKyAzKSk7CisgICAgICAgIGp1bXBUYWJsZS5vZmZzZXRUYWJsZS5hZGQoY2xh
dXNlLCBVbmxpbmtlZFN0cmluZ0p1bXBUYWJsZTo6T2Zmc2V0TG9jYXRpb24geyBsYWJlbHNbaV0t
PmJpbmQoc3dpdGNoQWRkcmVzcywgc3dpdGNoQWRkcmVzcyArIDMpIH0pOwogICAgIH0KIH0KIApA
QCAtNDQ2NSwxNiArNDQ4MywzNiBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0WWllbGRQ
b2ludChSZWdpc3RlcklEKiBhcmd1bWVudCkKICAgICBlbWl0R2VuZXJhdG9yU3RhdGVDaGFuZ2Uo
eWllbGRQb2ludEluZGV4KTsKICAgICAvLyBGaXJzdCB5aWVsZCBwb2ludCBpcyB1c2VkIGZvciBp
bml0aWFsIHNlcXVlbmNlLgogICAgIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9IHlp
ZWxkUG9pbnRJbmRleCAtIDE7CisKKyAgICAvLyBTcGxpdCB0aGUgdHJ5IHJhbmdlIGhlcmUuCisg
ICAgUmVmUHRyPExhYmVsPiBzYXZlUG9pbnQgPSBlbWl0TGFiZWwobmV3TGFiZWwoKS5nZXQoKSk7
CisgICAgZm9yICh1bnNpZ25lZCBpID0gbV90cnlDb250ZXh0U3RhY2suc2l6ZSgpOyBpLS07KSB7
CisgICAgICAgIFRyeUNvbnRleHQmIGNvbnRleHQgPSBtX3RyeUNvbnRleHRTdGFja1tpXTsKKyAg
ICAgICAgVHJ5UmFuZ2UgcmFuZ2U7CisgICAgICAgIHJhbmdlLnN0YXJ0ID0gY29udGV4dC5zdGFy
dDsKKyAgICAgICAgcmFuZ2UuZW5kID0gc2F2ZVBvaW50OworICAgICAgICByYW5nZS50cnlEYXRh
ID0gY29udGV4dC50cnlEYXRhOworICAgICAgICBtX3RyeVJhbmdlcy5hcHBlbmQocmFuZ2UpOwor
CisgICAgICAgIC8vIFRyeSByYW5nZSB3aWxsIGJlIHJlc3RhcmVkIGF0IHRoZSBtZXJnZSBwb2lu
dC4KKyAgICAgICAgY29udGV4dC5zdGFydCA9IG1lcmdlUG9pbnQ7CisgICAgfQorICAgIFZlY3Rv
cjxUcnlDb250ZXh0PiBzYXZlZFRyeUNvbnRleHRTdGFjazsKKyAgICBtX3RyeUNvbnRleHRTdGFj
ay5zd2FwKHNhdmVkVHJ5Q29udGV4dFN0YWNrKTsKKwogICAgIGVtaXRTYXZlKG1lcmdlUG9pbnQu
Z2V0KCksIGxpdmVDYWxsZWVMb2NhbHNJbmRleCk7CiAgICAgZW1pdFJldHVybihhcmd1bWVudCk7
CiAgICAgZW1pdFJlc3VtZShtZXJnZVBvaW50LmdldCgpLCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXgp
OworCisgICAgLy8gUmVzdG9yZSB0aGUgdHJ5IGNvbnRleHRzLCB3aGljaCBzdGFydCBvZmZzZXQg
aXMgdXBkYXRlZCB0byB0aGUgbWVyZ2UgcG9pbnQuCisgICAgbV90cnlDb250ZXh0U3RhY2suc3dh
cChzYXZlZFRyeUNvbnRleHRTdGFjayk7CiB9CiAKIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRTYXZlKExhYmVsKiBtZXJnZVBvaW50LCB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXgp
CiB7CiAgICAgc2l6ZV90IGJlZ2luID0gaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpOwogICAgIGVtaXRP
cGNvZGUob3Bfc2F2ZSk7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fZ2VuZXJhdG9yUmVn
aXN0ZXItPmluZGV4KCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChnZW5lcmF0b3JGcmFt
ZVJlZ2lzdGVyKCktPmluZGV4KCkpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChsaXZlQ2Fs
bGVlTG9jYWxzSW5kZXgpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChtZXJnZVBvaW50LT5i
aW5kKGJlZ2luLCBpbnN0cnVjdGlvbnMoKS5zaXplKCkpKTsKIH0KQEAgLTQ0ODMsNyArNDUyMSw3
IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXN1bWUoTGFiZWwqIG1lcmdlUG9pbnQs
IHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJCiB7CiAgICAgZW1pdEdlbmVyYXRvclN0YXRlTGFi
ZWwoKTsKICAgICBlbWl0T3Bjb2RlKG9wX3Jlc3VtZSk7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKG1fZ2VuZXJhdG9yUmVnaXN0ZXItPmluZGV4KCkpOworICAgIGluc3RydWN0aW9ucygpLmFw
cGVuZChnZW5lcmF0b3JGcmFtZVJlZ2lzdGVyKCktPmluZGV4KCkpOwogICAgIGluc3RydWN0aW9u
cygpLmFwcGVuZChsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpOwogICAgIGVtaXRMYWJlbChtZXJnZVBv
aW50KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuaAppbmRleCBiYTlhOTRkMGUwZjA2NTA5NjliMGJkMmQ4ODQ0MTdk
ZTFmNzEyYjYyLi4wZThiZjMwMTk5NWFlM2VlMjA4NWRkMmI3YmM5MTI3MTY0MGYyZThkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdl
bmVyYXRvci5oCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiTGFiZWwuaCIKICNpbmNsdWRl
ICJMYWJlbFNjb3BlLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKKyNpbmNsdWRlICJKU0dl
bmVyYXRvckZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiUGFyc2VyRXJyb3IuaCIKICNpbmNsdWRlICJS
ZWdpc3RlcklELmgiCiAjaW5jbHVkZSAiU2V0Rm9yU2NvcGUuaCIKQEAgLTcwMiw5ICs3MDMsMTAg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXREZWxlZ2F0ZVlpZWxk
KFJlZ2lzdGVySUQqIGFyZ3VtZW50LCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSopOwogICAgICAg
ICB2b2lkIGJlZ2luR2VuZXJhdG9yKFJlZ2lzdGVySUQqKTsKICAgICAgICAgdm9pZCBlbmRHZW5l
cmF0b3IoTGFiZWwqIGRlZmF1bHRMYWJlbCk7Ci0gICAgICAgIFJlZ2lzdGVySUQqIGdlbmVyYXRv
clN0YXRlUmVnaXN0ZXIoKSB7IHJldHVybiAmbV9wYXJhbWV0ZXJzWzJdOyB9Ci0gICAgICAgIFJl
Z2lzdGVySUQqIGdlbmVyYXRvclZhbHVlUmVnaXN0ZXIoKSB7IHJldHVybiAmbV9wYXJhbWV0ZXJz
WzNdOyB9Ci0gICAgICAgIFJlZ2lzdGVySUQqIGdlbmVyYXRvclJlc3VtZU1vZGVSZWdpc3Rlcigp
IHsgcmV0dXJuICZtX3BhcmFtZXRlcnNbNF07IH0KKyAgICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJh
dG9yU3RhdGVSZWdpc3RlcigpIHsgcmV0dXJuICZtX3BhcmFtZXRlcnNbc3RhdGljX2Nhc3Q8aW50
MzJfdD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6R2VuZXJhdG9yQXJndW1lbnQ6OlN0YXRlKV07IH0K
KyAgICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9yVmFsdWVSZWdpc3RlcigpIHsgcmV0dXJuICZt
X3BhcmFtZXRlcnNbc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6R2Vu
ZXJhdG9yQXJndW1lbnQ6OlZhbHVlKV07IH0KKyAgICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9y
UmVzdW1lTW9kZVJlZ2lzdGVyKCkgeyByZXR1cm4gJm1fcGFyYW1ldGVyc1tzdGF0aWNfY2FzdDxp
bnQzMl90PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JBcmd1bWVudDo6UmVzdW1lTW9k
ZSldOyB9CisgICAgICAgIFJlZ2lzdGVySUQqIGdlbmVyYXRvckZyYW1lUmVnaXN0ZXIoKSB7IHJl
dHVybiAmbV9wYXJhbWV0ZXJzW3N0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yRnVuY3Rp
b246OkdlbmVyYXRvckFyZ3VtZW50OjpGcmFtZSldOyB9CiAKICAgICAgICAgQ29kZVR5cGUgY29k
ZVR5cGUoKSBjb25zdCB7IHJldHVybiBtX2NvZGVUeXBlOyB9CiAKQEAgLTkzMyw2ICs5MzUsMTAg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFZlY3RvcjxSZWZQdHI8Rm9ySW5Db250ZXh0Pj4g
bV9mb3JJbkNvbnRleHRTdGFjazsKICAgICAgICAgVmVjdG9yPFRyeUNvbnRleHQ+IG1fdHJ5Q29u
dGV4dFN0YWNrOwogICAgICAgICBWZWN0b3I8UmVmUHRyPExhYmVsPj4gbV9nZW5lcmF0b3JSZXN1
bWVMYWJlbHM7CisKKyAgICAgICAgU3Ryb25nPFN5bWJvbFRhYmxlPiBtX2dlbmVyYXRvckZyYW1l
U3ltYm9sVGFibGU7CisgICAgICAgIGludCBtX2dlbmVyYXRvckZyYW1lU3ltYm9sVGFibGVJbmRl
eCB7IDAgfTsKKwogICAgICAgICBlbnVtIEZ1bmN0aW9uVmFyaWFibGVUeXBlIDogdWludDhfdCB7
IE5vcm1hbEZ1bmN0aW9uVmFyaWFibGUsIEdsb2JhbEZ1bmN0aW9uVmFyaWFibGUgfTsKICAgICAg
ICAgVmVjdG9yPHN0ZDo6cGFpcjxGdW5jdGlvbk1ldGFkYXRhTm9kZSosIEZ1bmN0aW9uVmFyaWFi
bGVUeXBlPj4gbV9mdW5jdGlvbnNUb0luaXRpYWxpemU7CiAgICAgICAgIGJvb2wgbV9uZWVkVG9J
bml0aWFsaXplQXJndW1lbnRzIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09wZXJhdGlvbnMuY3BwCmluZGV4IGVkNmRiMTY0YzA0ZGY4OThhMGM4MDZiMjA2ODU5OTdk
Njc2NTdlNWMuLmY4ZTY5OWZlYTliMTg2ZDVlZmI4MmZmN2ZjM2NiZDA1YTFiYmI5MDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcApAQCAtNDIsOCArNDIs
OCBAQAogI2luY2x1ZGUgIkRpcmVjdEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIkZUTEZvck9TUkVu
dHJ5SklUQ29kZS5oIgogI2luY2x1ZGUgIkZUTE9TUkVudHJ5LmgiCi0jaW5jbHVkZSAiSG9zdENh
bGxSZXR1cm5WYWx1ZS5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgorI2luY2x1ZGUgIkhv
c3RDYWxsUmV0dXJuVmFsdWUuaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUg
IkpJVC5oIgogI2luY2x1ZGUgIkpJVEV4Y2VwdGlvbnMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9nZW5lcmF0ZS1ieXRlY29kZS1maWxlcyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9nZW5lcmF0ZS1ieXRlY29kZS1maWxlcwppbmRleCA1NjY2YTNmOTI0YzExOWIyMTZkM2Zm
MGZmZTljNjcyYjdjNzFiYjc5Li44Zjc5MGVkOWZhODMxNmQzOWRhMTVkM2I3NTg5NDZiZjQ5ZjNi
ZDNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdGUtYnl0ZWNvZGUt
ZmlsZXMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRlLWJ5dGVjb2RlLWZpbGVz
CkBAIC05NCwxMyArOTQsMTQgQEAgZGVmIG9wZW5PckV4aXQocGF0aCwgbW9kZSk6CiAgICAgICAg
IHByaW50ICJJL08gZXJyb3Igb3BlbmluZyB7MH0sICh7MX0pOiB7Mn0iLmZvcm1hdChwYXRoLCBl
LmVycm5vLCBlLnN0cmVycm9yKQogICAgICAgICBleGl0KDEpCiAKLWRlZiBoYXNoRmlsZShmaWxl
KToKK2RlZiBoYXNoRmlsZShmaWxlcyk6CiAgICAgc2hhMSA9IGhhc2hsaWIuc2hhMSgpCi0gICAg
ZmlsZS5zZWVrKDApCi0gICAgZm9yIGxpbmUgaW4gZmlsZToKLSAgICAgICAgc2hhMS51cGRhdGUo
bGluZSkKKyAgICBmb3IgZmlsZSBpbiBmaWxlczoKKyAgICAgICAgZmlsZS5zZWVrKDApCisgICAg
ICAgIGZvciBsaW5lIGluIGZpbGU6CisgICAgICAgICAgICBzaGExLnVwZGF0ZShsaW5lKQogCi0g
ICAgZmlsZS5zZWVrKDApCisgICAgICAgIGZpbGUuc2VlaygwKQogCiAgICAgcmV0dXJuIHNoYTEu
aGV4ZGlnZXN0KCkKIApAQCAtMTE1LDcgKzExNiw4IEBAIGlmIF9fbmFtZV9fID09ICJfX21haW5f
XyI6CiAKICAgICBieXRlY29kZUpTT05GaWxlID0gYXJnc1swXQogICAgIGJ5dGVjb2RlRmlsZSA9
IG9wZW5PckV4aXQoYnl0ZWNvZGVKU09ORmlsZSwgInJiIikKLSAgICBzaGExSGFzaCA9IGhhc2hG
aWxlKGJ5dGVjb2RlRmlsZSkKKyAgICBnZW5lcmF0b3JGaWxlID0gb3Blbk9yRXhpdChfX2ZpbGVf
XywgInJiIikKKyAgICBzaGExSGFzaCA9IGhhc2hGaWxlKFtieXRlY29kZUZpbGUsIGdlbmVyYXRv
ckZpbGVdKQogCiAgICAgaEZpbGVIYXNoU3RyaW5nID0gIi8vIFNIQTFIYXNoOiB7MH1cbiIuZm9y
bWF0KHNoYTFIYXNoKQogICAgIGFzbUZpbGVIYXNoU3RyaW5nID0gIiMgU0hBMUhhc2g6IHswfVxu
Ii5mb3JtYXQoc2hhMUhhc2gpCkBAIC0xODcsNiArMTg5LDcgQEAgaWYgX19uYW1lX18gPT0gIl9f
bWFpbl9fIjoKICAgICAgICAgICAgICAgICBkZWZhdWx0TGVuZ3RoID0gc2VjdGlvblsiZGVmYXVs
dExlbmd0aCJdCiAKICAgICAgICAgICAgIGJ5dGVjb2RlTnVtID0gMAorICAgICAgICAgICAgbWF4
TGVuZ3RoID0gMAogICAgICAgICAgICAgZm9yIGJ5dGVjb2RlIGluIHNlY3Rpb25bImJ5dGVjb2Rl
cyJdOgogICAgICAgICAgICAgICAgIGlmIG5vdCBmaXJzdE1hY3JvOgogICAgICAgICAgICAgICAg
ICAgICBieXRlY29kZUhGaWxlLndyaXRlKCIgXFxcbiIpCkBAIC0xOTQsNiArMTk3LDcgQEAgaWYg
X19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgICAgICAgICAgICAgICBsZW5ndGggPSBkZWZhdWx0
TGVuZ3RoCiAgICAgICAgICAgICAgICAgaWYgImxlbmd0aCIgaW4gYnl0ZWNvZGU6CiAgICAgICAg
ICAgICAgICAgICAgIGxlbmd0aCA9IGJ5dGVjb2RlWyJsZW5ndGgiXQorICAgICAgICAgICAgICAg
ICAgICBtYXhMZW5ndGggPSBtYXgoW2xlbmd0aCwgbWF4TGVuZ3RoXSkKIAogICAgICAgICAgICAg
ICAgIGJ5dGVjb2RlSEZpbGUud3JpdGUoIiAgICBtYWNybyh7MH0sIHsxfSkiLmZvcm1hdChieXRl
Y29kZVsibmFtZSJdLCBsZW5ndGgpKQogICAgICAgICAgICAgICAgIGZpcnN0TWFjcm8gPSBGYWxz
ZQpAQCAtMjAxLDYgKzIwNSw3IEBAIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAKICAgICAg
ICAgICAgIGJ5dGVjb2RlSEZpbGUud3JpdGUoIlxuXG4iKQogICAgICAgICAgICAgYnl0ZWNvZGVI
RmlsZS53cml0ZSgiI2RlZmluZSBOVU1CRVJfT0ZfezB9X0lEUyB7MX1cblxuIi5mb3JtYXQoc2Vj
dGlvblsibWFjcm9OYW1lQ29tcG9uZW50Il0sIGJ5dGVjb2RlTnVtKSkKKyAgICAgICAgICAgIGJ5
dGVjb2RlSEZpbGUud3JpdGUoIiNkZWZpbmUgTUFYX09QQ09ERV9MRU5HVEhfT0ZfezB9IHsxfVxu
XG4iLmZvcm1hdChzZWN0aW9uWyJtYWNyb05hbWVDb21wb25lbnQiXSwgbWF4TGVuZ3RoKSkKIAog
ICAgICAgICBpZiBpbml0QVNNRmlsZU5hbWUgYW5kIHNlY3Rpb25bJ2VtaXRJbkFTTUZpbGUnXToK
ICAgICAgICAgICAgIHByZWZpeCA9ICIiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
dGVycHJldGVyL0ludGVycHJldGVyLmNwcAppbmRleCAyNTBmODc0MTk1MDJjODQzODQ3MGFkODVh
MTJmZTk0NDQ4ZDgzYmYzLi5hNTZkMjcyMmE3MmFmMDBiYzgwMDVkNzc1ZGEyZjJjNjAzZDA3N2Jk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0
ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRl
ci5jcHAKQEAgLTYxMCw3ICs2MTAsNyBAQCBKU1N0cmluZyogSW50ZXJwcmV0ZXI6OnN0YWNrVHJh
Y2VBc1N0cmluZyhWTSYgdm0sIGNvbnN0IFZlY3RvcjxTdGFja0ZyYW1lPiYgc3RhYwogICAgIHJl
dHVybiBqc1N0cmluZygmdm0sIGJ1aWxkZXIudG9TdHJpbmcoKSk7CiB9CiAKLUFMV0FZU19JTkxJ
TkUgc3RhdGljIEhhbmRsZXJJbmZvKiBmaW5kRXhjZXB0aW9uSGFuZGxlcihTdGFja1Zpc2l0b3Im
IHZpc2l0b3IsIENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlQmxvY2s6OlJlcXVpcmVkSGFuZGxl
ciByZXF1aXJlZEhhbmRsZXIpCitBTFdBWVNfSU5MSU5FIHN0YXRpYyBIYW5kbGVySW5mbyogZmlu
ZEV4Y2VwdGlvbkhhbmRsZXIoU3RhY2tWaXNpdG9yJiB2aXNpdG9yLCBDb2RlQmxvY2sqIGNvZGVC
bG9jaywgUmVxdWlyZWRIYW5kbGVyIHJlcXVpcmVkSGFuZGxlcikKIHsKICAgICBBU1NFUlQoY29k
ZUJsb2NrKTsKICNpZiBFTkFCTEUoREZHX0pJVCkKQEAgLTY0NCw3ICs2NDQsNyBAQCBjbGFzcyBH
ZXRDYXRjaEhhbmRsZXJGdW5jdG9yIHsKICAgICAgICAgaWYgKCFjb2RlQmxvY2spCiAgICAgICAg
ICAgICByZXR1cm4gU3RhY2tWaXNpdG9yOjpDb250aW51ZTsKIAotICAgICAgICBtX2hhbmRsZXIg
PSBmaW5kRXhjZXB0aW9uSGFuZGxlcih2aXNpdG9yLCBjb2RlQmxvY2ssIENvZGVCbG9jazo6UmVx
dWlyZWRIYW5kbGVyOjpDYXRjaEhhbmRsZXIpOworICAgICAgICBtX2hhbmRsZXIgPSBmaW5kRXhj
ZXB0aW9uSGFuZGxlcih2aXNpdG9yLCBjb2RlQmxvY2ssIFJlcXVpcmVkSGFuZGxlcjo6Q2F0Y2hI
YW5kbGVyKTsKICAgICAgICAgaWYgKG1faGFuZGxlcikKICAgICAgICAgICAgIHJldHVybiBTdGFj
a1Zpc2l0b3I6OkRvbmU7CiAKQEAgLTY4Niw3ICs2ODYsNyBAQCBjbGFzcyBVbndpbmRGdW5jdG9y
IHsKICAgICAgICAgbV9oYW5kbGVyID0gbnVsbHB0cjsKICAgICAgICAgaWYgKCFtX2lzVGVybWlu
YXRpb24pIHsKICAgICAgICAgICAgIGlmIChtX2NvZGVCbG9jayAmJiAhaXNXZWJBc3NlbWJseUV4
ZWN1dGFibGUobV9jb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpKSkKLSAgICAgICAgICAgICAg
ICBtX2hhbmRsZXIgPSBmaW5kRXhjZXB0aW9uSGFuZGxlcih2aXNpdG9yLCBtX2NvZGVCbG9jaywg
Q29kZUJsb2NrOjpSZXF1aXJlZEhhbmRsZXI6OkFueUhhbmRsZXIpOworICAgICAgICAgICAgICAg
IG1faGFuZGxlciA9IGZpbmRFeGNlcHRpb25IYW5kbGVyKHZpc2l0b3IsIG1fY29kZUJsb2NrLCBS
ZXF1aXJlZEhhbmRsZXI6OkFueUhhbmRsZXIpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKG1f
aGFuZGxlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9J
bnRlcnByZXRlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJl
dGVyLmgKaW5kZXggZDIwOTRkZWU3ZDI4NWFjNDk1YjE1NDE3MmEyM2I5NGZmZTg1N2YxZS4uMDcz
MmIzZWJiZDlhZGZkMjIzMzYyZWM5YTZiYWFhZmQ4NjFmNTI2NyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgKQEAgLTY2LDYgKzY2LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgc3RydWN0IEhhbmRsZXJJbmZvOwogICAgIHN0cnVjdCBJbnN0
cnVjdGlvbjsKICAgICBzdHJ1Y3QgUHJvdG9DYWxsRnJhbWU7CisgICAgc3RydWN0IFVubGlua2Vk
SW5zdHJ1Y3Rpb247CiAKICAgICBlbnVtIFVud2luZFN0YXJ0IHsgVW53aW5kRnJvbUN1cnJlbnRG
cmFtZSwgVW53aW5kRnJvbUNhbGxlckZyYW1lIH07CiAKQEAgLTIwOCw3ICsyMDksMTAgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gb3Bjb2RlOwogI2VuZGlmCiAgICAgICAg
IH0KLSAgICAgICAgCisKKyAgICAgICAgT3Bjb2RlSUQgZ2V0T3Bjb2RlSUQoY29uc3QgSW5zdHJ1
Y3Rpb24mKTsKKyAgICAgICAgT3Bjb2RlSUQgZ2V0T3Bjb2RlSUQoY29uc3QgVW5saW5rZWRJbnN0
cnVjdGlvbiYpOworCiAgICAgICAgIGJvb2wgaXNPcGNvZGUoT3Bjb2RlKTsKIAogICAgICAgICBK
U1ZhbHVlIGV4ZWN1dGUoUHJvZ3JhbUV4ZWN1dGFibGUqLCBDYWxsRnJhbWUqLCBKU09iamVjdCog
dGhpc09iaik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIv
SW50ZXJwcmV0ZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIv
SW50ZXJwcmV0ZXJJbmxpbmVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODZkMDcxNDhhNTJlNjVlMzc1Zjk3ZTZl
YmI5MWFkYmUxZGQ0NTYwZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9JbnRlcnByZXRlcklubGluZXMuaApAQCAtMCwwICsxLDQ0IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE2IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNv
bT4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpbmNsdWRlICJJbnN0cnVjdGlvbi5oIgorI2luY2x1ZGUgIkludGVycHJldGVyLmgi
CisjaW5jbHVkZSAiVW5saW5rZWRDb2RlQmxvY2suaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2lu
bGluZSBPcGNvZGVJRCBJbnRlcnByZXRlcjo6Z2V0T3Bjb2RlSUQoY29uc3QgSW5zdHJ1Y3Rpb24m
IGluc3RydWN0aW9uKQoreworICAgIHJldHVybiBnZXRPcGNvZGVJRChpbnN0cnVjdGlvbi51Lm9w
Y29kZSk7Cit9CisKK2lubGluZSBPcGNvZGVJRCBJbnRlcnByZXRlcjo6Z2V0T3Bjb2RlSUQoY29u
c3QgVW5saW5rZWRJbnN0cnVjdGlvbiYgaW5zdHJ1Y3Rpb24pCit7CisgICAgcmV0dXJuIGluc3Ry
dWN0aW9uLnUub3Bjb2RlOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklULmNwcAppbmRleCA4ZmQzZjU4ZWQ0MTZhNzc0YmIyNzY1ZTRkNGQ1M2Q2OGJlOTE4MmU1
Li42MzE4YzYxZDM3YThkYTEyM2VjNmYzOGEyOGUxOTU1Yzg1ODMxMDMzIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVQuY3BwCkBAIC0yMzUsOCArMjM1LDYgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21w
aWxlTWFpblBhc3MoKQogICAgICAgICBERUZJTkVfT1Aob3BfZ2V0X3Jlc3RfbGVuZ3RoKQogICAg
ICAgICBERUZJTkVfT1Aob3BfY2hlY2tfdGR6KQogICAgICAgICBERUZJTkVfT1Aob3BfYXNzZXJ0
KQotICAgICAgICBERUZJTkVfT1Aob3Bfc2F2ZSkKLSAgICAgICAgREVGSU5FX09QKG9wX3Jlc3Vt
ZSkKICAgICAgICAgREVGSU5FX09QKG9wX2RlYnVnKQogICAgICAgICBERUZJTkVfT1Aob3BfZGVs
X2J5X2lkKQogICAgICAgICBERUZJTkVfT1Aob3BfZGVsX2J5X3ZhbCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVC5oCmluZGV4IDVjMzYwNjZlMjcyZTZmZjVmZmY2ZGE1OWI3M2JhZTJkMWY4NGE4MWYuLjk3
YzQ1YTBiZjMyNDhiNGU3MzRhMWVlMzM3MTY4M2Y1Yzc5YWEyNmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVQuaApAQCAtNDk3LDggKzQ5Nyw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lk
IGVtaXRfb3BfZ2V0X3Jlc3RfbGVuZ3RoKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1p
dF9vcF9jaGVja190ZHooSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2Fzc2Vy
dChJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3Bfc2F2ZShJbnN0cnVjdGlvbiop
OwotICAgICAgICB2b2lkIGVtaXRfb3BfcmVzdW1lKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZv
aWQgZW1pdF9vcF9kZWJ1ZyhJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZGVs
X2J5X2lkKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9kZWxfYnlfdmFsKElu
c3RydWN0aW9uKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
Y29kZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAppbmRl
eCA1MGNlNGM5MjA3YzVkNjViZGVlZjU5MDBhNTIxZDg4ZTgzOGRkODE0Li5lNzNiYzgyZmJmYTYx
OWNkZmNhNmZkZWZmMzMzYjNlOTc2YTMwZmEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wY29kZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3Bjb2Rlcy5jcHAKQEAgLTE0OTMsMTggKzE0OTMsNiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9n
ZXRfcmVzdF9sZW5ndGgoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICNlbmRpZgog
fQogCi12b2lkIEpJVDo6ZW1pdF9vcF9zYXZlKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCi17Ci0gICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5z
dHJ1Y3Rpb24sIHNsb3dfcGF0aF9zYXZlKTsKLSAgICBzbG93UGF0aENhbGwuY2FsbCgpOwotfQot
Ci12b2lkIEpJVDo6ZW1pdF9vcF9yZXN1bWUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKLXsKLSAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0
cnVjdGlvbiwgc2xvd19wYXRoX3Jlc3VtZSk7Ci0gICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKLX0K
LQogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBFTkFCTEUoSklUKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCmluZGV4
IDMyYjUwYzA5NWIwZmFjNTAwMjhmYzgwMTVmNDQ1MzkwZWQxNGE3YTYuLmM5NmJmMWM4ZWMxYTVl
NTk4ZWMwNzZjNzNjZTAzMjlkMzg4ZWQ1NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KQEAgLTE2NzEsMTUgKzE2NzEsMTEg
QEAgX2xsaW50X29wX2Fzc2VydDoKIAogCiBfbGxpbnRfb3Bfc2F2ZToKLSAgICB0cmFjZUV4ZWN1
dGlvbigpCi0gICAgY2FsbE9wY29kZVNsb3dQYXRoKF9zbG93X3BhdGhfc2F2ZSkKLSAgICBkaXNw
YXRjaCg0KQorICAgIG5vdFN1cHBvcnRlZCgpCiAKIAogX2xsaW50X29wX3Jlc3VtZToKLSAgICB0
cmFjZUV4ZWN1dGlvbigpCi0gICAgY2FsbE9wY29kZVNsb3dQYXRoKF9zbG93X3BhdGhfcmVzdW1l
KQotICAgIGRpc3BhdGNoKDMpCisgICAgbm90U3VwcG9ydGVkKCkKIAogCiBfbGxpbnRfb3BfY3Jl
YXRlX2xleGljYWxfZW52aXJvbm1lbnQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL1BhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNl
ci5jcHAKaW5kZXggNTA5NjUzYTM3MGU0Zjg0ZGYyOThiYjIzNzgwOTBkNzU2Y2U1OTA0OS4uZTc3
NDg5ZTMzMDVlNDZlZWE2NDQ1ZTcyM2QwOTgxN2JiNTZiNmZiOSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvUGFyc2VyLmNwcApAQCAtMjY1LDcgKzI2NSw3IEBAIFN0cmluZyBQYXJzZXI8
TGV4ZXJUeXBlPjo6cGFyc2VJbm5lcihjb25zdCBJZGVudGlmaWVyJiBjYWxsZWVOYW1lLCBTb3Vy
Y2VQYXJzZU1vCiAgICAgaWYgKG1fbGV4ZXItPmlzUmVwYXJzaW5nRnVuY3Rpb24oKSkgewogICAg
ICAgICBQYXJzZXJGdW5jdGlvbkluZm88QVNUQnVpbGRlcj4gZnVuY3Rpb25JbmZvOwogICAgICAg
ICBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yQm9keU1vZGUpCi0g
ICAgICAgICAgICBtX3BhcmFtZXRlcnMgPSBjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKGNvbnRl
eHQpOworICAgICAgICAgICAgbV9wYXJhbWV0ZXJzID0gY3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVy
cyhjb250ZXh0LCBmdW5jdGlvbkluZm8ucGFyYW1ldGVyQ291bnQpOwogICAgICAgICBlbHNlCiAg
ICAgICAgICAgICBtX3BhcmFtZXRlcnMgPSBwYXJzZUZ1bmN0aW9uUGFyYW1ldGVycyhjb250ZXh0
LCBwYXJzZU1vZGUsIGZ1bmN0aW9uSW5mbyk7CiAKQEAgLTUxNywxMCArNTE3LDkgQEAgdGVtcGxh
dGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU291cmNlRWxlbWVudHMgUGFyc2VyPExleGVyVHlw
ZT46OnBhcnNlR2VuZXJhdG8KIAogICAgIFBhcnNlckZ1bmN0aW9uSW5mbzxUcmVlQnVpbGRlcj4g
aW5mbzsKICAgICBpbmZvLm5hbWUgPSAmbV92bS0+cHJvcGVydHlOYW1lcy0+bnVsbElkZW50aWZp
ZXI7Ci0gICAgY3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhjb250ZXh0KTsKKyAgICBjcmVhdGVH
ZW5lcmF0b3JQYXJhbWV0ZXJzKGNvbnRleHQsIGluZm8ucGFyYW1ldGVyQ291bnQpOwogICAgIGlu
Zm8uc3RhcnRPZmZzZXQgPSBwYXJhbWV0ZXJzU3RhcnQ7CiAgICAgaW5mby5zdGFydExpbmUgPSB0
b2tlbkxpbmUoKTsKLSAgICBpbmZvLnBhcmFtZXRlckNvdW50ID0gNDsgLy8gZ2VuZXJhdG9yLCBz
dGF0ZSwgdmFsdWUsIHJlc3VtZSBtb2RlCiAKICAgICB7CiAgICAgICAgIEF1dG9Qb3BTY29wZVJl
ZiBnZW5lcmF0b3JCb2R5U2NvcGUodGhpcywgcHVzaFNjb3BlKCkpOwpAQCAtMTkwNCwzMiArMTkw
MywzMCBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPiB0ZW1wbGF0ZSA8Y2xhc3MgVHJl
ZUJ1aWxkZXIsIGNsYXNzIEZ1bmN0aW9uSW5mb1R5cAogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUg
TGV4ZXJUeXBlPgotdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiB0eXBlbmFtZSBUcmVlQnVp
bGRlcjo6Rm9ybWFsUGFyYW1ldGVyTGlzdCBQYXJzZXI8TGV4ZXJUeXBlPjo6Y3JlYXRlR2VuZXJh
dG9yUGFyYW1ldGVycyhUcmVlQnVpbGRlciYgY29udGV4dCkKK3RlbXBsYXRlIDxjbGFzcyBUcmVl
QnVpbGRlcj4gdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkZvcm1hbFBhcmFtZXRlckxpc3QgUGFyc2Vy
PExleGVyVHlwZT46OmNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMoVHJlZUJ1aWxkZXImIGNvbnRl
eHQsIHVuc2lnbmVkJiBwYXJhbWV0ZXJDb3VudCkKIHsKICAgICBhdXRvIHBhcmFtZXRlcnMgPSBj
b250ZXh0LmNyZWF0ZUZvcm1hbFBhcmFtZXRlckxpc3QoKTsKIAogICAgIEpTVG9rZW5Mb2NhdGlv
biBsb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOwogICAgIEpTVGV4dFBvc2l0aW9uIHBvc2l0aW9u
ID0gdG9rZW5TdGFydFBvc2l0aW9uKCk7CiAKLSAgICAvLyBAZ2VuZXJhdG9yCi0gICAgZGVjbGFy
ZVBhcmFtZXRlcigmbV92bS0+cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9y
UHJpdmF0ZU5hbWUoKSk7Ci0gICAgYXV0byBnZW5lcmF0b3IgPSBjb250ZXh0LmNyZWF0ZUJpbmRp
bmdMb2NhdGlvbihsb2NhdGlvbiwgbV92bS0+cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCku
Z2VuZXJhdG9yUHJpdmF0ZU5hbWUoKSwgcG9zaXRpb24sIHBvc2l0aW9uLCBBc3NpZ25tZW50Q29u
dGV4dDo6RGVjbGFyYXRpb25TdGF0ZW1lbnQpOwotICAgIGNvbnRleHQuYXBwZW5kUGFyYW1ldGVy
KHBhcmFtZXRlcnMsIGdlbmVyYXRvciwgMCk7CisgICAgYXV0byBhZGRQYXJhbWV0ZXIgPSBbJl0o
Y29uc3QgSWRlbnRpZmllciYgbmFtZSkgeworICAgICAgICBkZWNsYXJlUGFyYW1ldGVyKCZuYW1l
KTsKKyAgICAgICAgYXV0byBiaW5kaW5nID0gY29udGV4dC5jcmVhdGVCaW5kaW5nTG9jYXRpb24o
bG9jYXRpb24sIG5hbWUsIHBvc2l0aW9uLCBwb3NpdGlvbiwgQXNzaWdubWVudENvbnRleHQ6OkRl
Y2xhcmF0aW9uU3RhdGVtZW50KTsKKyAgICAgICAgY29udGV4dC5hcHBlbmRQYXJhbWV0ZXIocGFy
YW1ldGVycywgYmluZGluZywgMCk7CisgICAgICAgICsrcGFyYW1ldGVyQ291bnQ7CisgICAgfTsK
IAorICAgIC8vIEBnZW5lcmF0b3IKKyAgICBhZGRQYXJhbWV0ZXIobV92bS0+cHJvcGVydHlOYW1l
cy0+YnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yUHJpdmF0ZU5hbWUoKSk7CiAgICAgLy8gQGdlbmVy
YXRvclN0YXRlCi0gICAgZGVjbGFyZVBhcmFtZXRlcigmbV92bS0+cHJvcGVydHlOYW1lcy0+YnVp
bHRpbk5hbWVzKCkuZ2VuZXJhdG9yU3RhdGVQcml2YXRlTmFtZSgpKTsKLSAgICBhdXRvIGdlbmVy
YXRvclN0YXRlID0gY29udGV4dC5jcmVhdGVCaW5kaW5nTG9jYXRpb24obG9jYXRpb24sIG1fdm0t
PnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclN0YXRlUHJpdmF0ZU5hbWUo
KSwgcG9zaXRpb24sIHBvc2l0aW9uLCBBc3NpZ25tZW50Q29udGV4dDo6RGVjbGFyYXRpb25TdGF0
ZW1lbnQpOwotICAgIGNvbnRleHQuYXBwZW5kUGFyYW1ldGVyKHBhcmFtZXRlcnMsIGdlbmVyYXRv
clN0YXRlLCAwKTsKLQorICAgIGFkZFBhcmFtZXRlcihtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5idWls
dGluTmFtZXMoKS5nZW5lcmF0b3JTdGF0ZVByaXZhdGVOYW1lKCkpOwogICAgIC8vIEBnZW5lcmF0
b3JWYWx1ZQotICAgIGRlY2xhcmVQYXJhbWV0ZXIoJm1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0
aW5OYW1lcygpLmdlbmVyYXRvclZhbHVlUHJpdmF0ZU5hbWUoKSk7Ci0gICAgYXV0byBnZW5lcmF0
b3JWYWx1ZSA9IGNvbnRleHQuY3JlYXRlQmluZGluZ0xvY2F0aW9uKGxvY2F0aW9uLCBtX3ZtLT5w
cm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JWYWx1ZVByaXZhdGVOYW1lKCks
IHBvc2l0aW9uLCBwb3NpdGlvbiwgQXNzaWdubWVudENvbnRleHQ6OkRlY2xhcmF0aW9uU3RhdGVt
ZW50KTsKLSAgICBjb250ZXh0LmFwcGVuZFBhcmFtZXRlcihwYXJhbWV0ZXJzLCBnZW5lcmF0b3JW
YWx1ZSwgMCk7Ci0KKyAgICBhZGRQYXJhbWV0ZXIobV92bS0+cHJvcGVydHlOYW1lcy0+YnVpbHRp
bk5hbWVzKCkuZ2VuZXJhdG9yVmFsdWVQcml2YXRlTmFtZSgpKTsKICAgICAvLyBAZ2VuZXJhdG9y
UmVzdW1lTW9kZQotICAgIGRlY2xhcmVQYXJhbWV0ZXIoJm1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1
aWx0aW5OYW1lcygpLmdlbmVyYXRvclJlc3VtZU1vZGVQcml2YXRlTmFtZSgpKTsKLSAgICBhdXRv
IGdlbmVyYXRvclJlc3VtZU1vZGUgPSBjb250ZXh0LmNyZWF0ZUJpbmRpbmdMb2NhdGlvbihsb2Nh
dGlvbiwgbV92bS0+cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yUmVzdW1l
TW9kZVByaXZhdGVOYW1lKCksIHBvc2l0aW9uLCBwb3NpdGlvbiwgQXNzaWdubWVudENvbnRleHQ6
OkRlY2xhcmF0aW9uU3RhdGVtZW50KTsKLSAgICBjb250ZXh0LmFwcGVuZFBhcmFtZXRlcihwYXJh
bWV0ZXJzLCBnZW5lcmF0b3JSZXN1bWVNb2RlLCAwKTsKKyAgICBhZGRQYXJhbWV0ZXIobV92bS0+
cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yUmVzdW1lTW9kZVByaXZhdGVO
YW1lKCkpOworICAgIC8vIEBnZW5lcmF0b3JGcmFtZQorICAgIGFkZFBhcmFtZXRlcihtX3ZtLT5w
cm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JGcmFtZVByaXZhdGVOYW1lKCkp
OwogCiAgICAgcmV0dXJuIHBhcmFtZXRlcnM7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1BhcnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Q
YXJzZXIuaAppbmRleCA3Njk3YTI2NDk4ZDdiODEyNjA3ODk1NWE1MWJiNWZmMzc5Y2U2NDI2Li44
ZDI1MWIyNmVmZmJiNjRiY2ViYjBlZGNlZDlmZmJhOTYwODU3NzE5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvUGFyc2VyLmgKQEAgLTE0MTgsNyArMTQxOCw3IEBAIGNsYXNzIFBhcnNlciB7
CiAgICAgQUxXQVlTX0lOTElORSBib29sIGlzQXJyb3dGdW5jdGlvblBhcmFtZXRlcnMoKTsKICAg
ICAKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXIsIGNsYXNzIEZ1bmN0aW9uSW5mb1R5
cGU+IE5FVkVSX0lOTElORSB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6Rm9ybWFsUGFyYW1ldGVyTGlz
dCBwYXJzZUZ1bmN0aW9uUGFyYW1ldGVycyhUcmVlQnVpbGRlciYsIFNvdXJjZVBhcnNlTW9kZSwg
RnVuY3Rpb25JbmZvVHlwZSYpOwotICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gTkVW
RVJfSU5MSU5FIHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpGb3JtYWxQYXJhbWV0ZXJMaXN0IGNyZWF0
ZUdlbmVyYXRvclBhcmFtZXRlcnMoVHJlZUJ1aWxkZXImKTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3Mg
VHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElORSB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6Rm9ybWFsUGFy
YW1ldGVyTGlzdCBjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKFRyZWVCdWlsZGVyJiwgdW5zaWdu
ZWQmIHBhcmFtZXRlckNvdW50KTsKIAogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4g
TkVWRVJfSU5MSU5FIFRyZWVDbGFzc0V4cHJlc3Npb24gcGFyc2VDbGFzcyhUcmVlQnVpbGRlciYs
IEZ1bmN0aW9uUmVxdWlyZW1lbnRzLCBQYXJzZXJDbGFzc0luZm88VHJlZUJ1aWxkZXI+Jik7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRo
cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3Bw
CmluZGV4IGZjMmE5MTIwY2RiNWQ3NTdhMDM3MDdmNDIzMjM0ZDcwNmNjMDMzZjAuLmUwNjZkNTZh
OTE1MDdlYzAyNWJhMmZlNjc5ZWRkZTljMzdhN2RlOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcApAQCAtMzcsNyArMzcsNiBAQAog
I2luY2x1ZGUgIkVycm9yLmgiCiAjaW5jbHVkZSAiRXJyb3JIYW5kbGluZ1Njb3BlLmgiCiAjaW5j
bHVkZSAiRXhjZXB0aW9uRnV6ei5oIgotI2luY2x1ZGUgIkdlbmVyYXRvckZyYW1lLmgiCiAjaW5j
bHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiSG9zdENhbGxSZXR1cm5WYWx1ZS5oIgog
I2luY2x1ZGUgIkludGVycHJldGVyLmgiCkBAIC03NTMsMzggKzc1Miw2IEBAIFNMT1dfUEFUSF9E
RUNMKHNsb3dfcGF0aF9hc3NlcnQpCiAgICAgRU5EKCk7CiB9CiAKLVNMT1dfUEFUSF9ERUNMKHNs
b3dfcGF0aF9zYXZlKQotewotICAgIC8vIE9ubHkgc2F2ZSB2YXJpYWJsZXMgYW5kIHRlbXBvcmFy
eSByZWdpc3RlcnMuIFRoZSBzY29wZSByZWdpc3RlcnMgYXJlIGluY2x1ZGVkIGluIHRoZW0uCi0g
ICAgLy8gQnV0IHBhcmFtZXRlcnMgYXJlIG5vdCBpbmNsdWRlZC4gQmVjYXVzZSB0aGUgZ2VuZXJh
dG9yIGltcGxlbWVudGF0aW9uIHJlcGxhY2VzIHRoZSB2YWx1ZXMgb2YgcGFyYW1ldGVycyBvbiBl
YWNoIGdlbmVyYXRvci5uZXh0KCkgY2FsbC4KLSAgICBCRUdJTigpOwotICAgIEpTVmFsdWUgZ2Vu
ZXJhdG9yID0gT1AoMSkuanNWYWx1ZSgpOwotICAgIEdlbmVyYXRvckZyYW1lKiBmcmFtZSA9IG51
bGxwdHI7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IGdlbmVyYXRvci5nZXQoZXhlYywgZXhlYy0+cHJv
cGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvckZyYW1lUHJpdmF0ZU5hbWUoKSk7
Ci0gICAgaWYgKCF2YWx1ZS5pc051bGwoKSkKLSAgICAgICAgZnJhbWUgPSBqc0Nhc3Q8R2VuZXJh
dG9yRnJhbWUqPih2YWx1ZSk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIC8vIEZJWE1FOiBPbmNlIEpT
R2VuZXJhdG9yIHNwZWNpYWxpemVkIG9iamVjdCBpcyBpbnRyb2R1Y2VkLCB0aGlzIEdlbmVyYXRv
ckZyYW1lIHNob3VsZCBiZSBlbWJlZGVkIGludG8gaXQgdG8gYXZvaWQgYWxsb2NhdGlvbnMuCi0g
ICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE1NDUK
LSAgICAgICAgZnJhbWUgPSBHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlKGV4ZWMtPnZtKCksICBleGVj
LT5jb2RlQmxvY2soKS0+bnVtQ2FsbGVlTG9jYWxzKCkpOwotICAgICAgICBQdXRQcm9wZXJ0eVNs
b3Qgc2xvdChnZW5lcmF0b3IsIHRydWUsIFB1dFByb3BlcnR5U2xvdDo6UHV0QnlJZCk7Ci0gICAg
ICAgIGFzT2JqZWN0KGdlbmVyYXRvciktPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5wdXQoYXNP
YmplY3QoZ2VuZXJhdG9yKSwgZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1l
cygpLmdlbmVyYXRvckZyYW1lUHJpdmF0ZU5hbWUoKSwgZnJhbWUsIHNsb3QpOwotICAgIH0KLSAg
ICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSBwY1syXS51LnVuc2lnbmVkVmFsdWU7
Ci0gICAgZnJhbWUtPnNhdmUoZXhlYywgZXhlYy0+Y29kZUJsb2NrKCktPmxpdmVDYWxsZWVMb2Nh
bHNBdFlpZWxkKGxpdmVDYWxsZWVMb2NhbHNJbmRleCkpOwotICAgIEVORCgpOwotfQotCi1TTE9X
X1BBVEhfREVDTChzbG93X3BhdGhfcmVzdW1lKQotewotICAgIEJFR0lOKCk7Ci0gICAgSlNWYWx1
ZSBnZW5lcmF0b3IgPSBPUCgxKS5qc1ZhbHVlKCk7Ci0gICAgR2VuZXJhdG9yRnJhbWUqIGZyYW1l
ID0ganNDYXN0PEdlbmVyYXRvckZyYW1lKj4oZ2VuZXJhdG9yLmdldChleGVjLCBleGVjLT5wcm9w
ZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yRnJhbWVQcml2YXRlTmFtZSgpKSk7
Ci0gICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gcGNbMl0udS51bnNpZ25lZFZh
bHVlOwotICAgIGZyYW1lLT5yZXN1bWUoZXhlYywgZXhlYy0+Y29kZUJsb2NrKCktPmxpdmVDYWxs
ZWVMb2NhbHNBdFlpZWxkKGxpdmVDYWxsZWVMb2NhbHNJbmRleCkpOwotICAgIEVORCgpOwotfQot
CiBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfY3JlYXRlX2xleGljYWxfZW52aXJvbm1lbnQpCiB7
CiAgICAgQkVHSU4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbW1vblNsb3dQYXRocy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9u
U2xvd1BhdGhzLmgKaW5kZXggYWY3ZmU3ODhmZWE2YTE3OTAwOTgxNmRhOWI5YWJjNDMzMGM0MWI0
OC4uMTY3NzBmN2MzMWQwODZlYWExYTdhYWU5YjVlYWU1NmM0MmRhODQwMiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKQEAgLTI0OCw4ICsy
NDgsNiBAQCBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX25leHRfZ2VuZXJpY19lbnVt
ZXJhdG9yX3BuYW1lKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfdG9faW5kZXhf
c3RyaW5nKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcHJvZmlsZV90eXBlX2Ns
ZWFyX2xvZyk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2Fzc2VydCk7Ci1TTE9X
X1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3NhdmUpOwotU0xPV19QQVRIX0hJRERFTl9ERUNM
KHNsb3dfcGF0aF9yZXN1bWUpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9jcmVh
dGVfbGV4aWNhbF9lbnZpcm9ubWVudCk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRo
X3B1c2hfd2l0aF9zY29wZSk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3Jlc29s
dmVfc2NvcGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2Vu
ZXJhdG9yRnJhbWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9y
RnJhbWUuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZjZlYTdhMTAwMjU4YzNl
Y2UwNGRhYWI0M2JkYWE4NTFlYzhmNzE1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZy
YW1lLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDk3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkdlbmVyYXRvckZyYW1lLmgiCi0KLSNp
bmNsdWRlICJDb2RlQmxvY2suaCIKLSNpbmNsdWRlICJIZWFwSXRlcmF0aW9uU2NvcGUuaCIKLSNp
bmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgotI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIK
LSNpbmNsdWRlICJTbG90VmlzaXRvcklubGluZXMuaCIKLSNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxp
bmVzLmgiCi0KLW5hbWVzcGFjZSBKU0MgewotCi1jb25zdCBDbGFzc0luZm8gR2VuZXJhdG9yRnJh
bWU6OnNfaW5mbyA9IHsgIkdlbmVyYXRvckZyYW1lIiwgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRF
X01FVEhPRF9UQUJMRShHZW5lcmF0b3JGcmFtZSkgfTsKLQotR2VuZXJhdG9yRnJhbWU6OkdlbmVy
YXRvckZyYW1lKFZNJiB2bSwgc2l6ZV90IG51bWJlck9mQ2FsbGVlTG9jYWxzKQotICAgIDogQmFz
ZSh2bSwgdm0uZ2VuZXJhdG9yRnJhbWVTdHJ1Y3R1cmUuZ2V0KCkpCi0gICAgLCBtX251bWJlck9m
Q2FsbGVlTG9jYWxzKG51bWJlck9mQ2FsbGVlTG9jYWxzKQotewotfQotCi12b2lkIEdlbmVyYXRv
ckZyYW1lOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCi17Ci0gICAgQmFzZTo6ZmluaXNoQ3JlYXRp
b24odm0pOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9udW1iZXJPZkNhbGxlZUxvY2Fs
czsgKytpKQotICAgICAgICBsb2NhbEF0KGkpLmNsZWFyKCk7Ci19Ci0KLVN0cnVjdHVyZSogR2Vu
ZXJhdG9yRnJhbWU6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQotewotICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNy
ZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKENlbGxUeXBlLCBTdHJ1
Y3R1cmVGbGFncyksIGluZm8oKSk7Ci19Ci0KLUdlbmVyYXRvckZyYW1lKiBHZW5lcmF0b3JGcmFt
ZTo6Y3JlYXRlKFZNJiB2bSwgc2l6ZV90IG51bWJlck9mTG9jYWxzKQotewotICAgIEdlbmVyYXRv
ckZyYW1lKiByZXN1bHQgPQotICAgICAgICBuZXcgKAotICAgICAgICAgICAgTm90TnVsbCwKLSAg
ICAgICAgICAgIGFsbG9jYXRlQ2VsbDxHZW5lcmF0b3JGcmFtZT4odm0uaGVhcCwgYWxsb2NhdGlv
blNpemVGb3JMb2NhbHMobnVtYmVyT2ZMb2NhbHMpKSkKLSAgICAgICAgR2VuZXJhdG9yRnJhbWUo
dm0sIG51bWJlck9mTG9jYWxzKTsKLSAgICByZXN1bHQtPmZpbmlzaENyZWF0aW9uKHZtKTsKLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotCi12b2lkIEdlbmVyYXRvckZyYW1lOjpzYXZlKEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZUNhbGxlZUxvY2FscykKLXsKLSAgICAv
LyBPbmx5IHNhdmUgY2FsbGVlIGxvY2Fscy4KLSAgICAvLyBFdmVyeSB0aW1lIGEgZ2VuZXJhdG9y
IGlzIGNhbGxlZCAob3IgcmVzdW1lZCksIHBhcmFtZXRlcnMgc2hvdWxkIGJlIHJlcGxhY2VkLgot
ICAgIEFTU0VSVChsaXZlQ2FsbGVlTG9jYWxzLm51bUJpdHMoKSA8PSBtX251bWJlck9mQ2FsbGVl
TG9jYWxzKTsKLSAgICBsaXZlQ2FsbGVlTG9jYWxzLmZvckVhY2hTZXRCaXQoWyZdKHNpemVfdCBp
bmRleCkgewotICAgICAgICBsb2NhbEF0KGluZGV4KS5zZXQoZXhlYy0+dm0oKSwgdGhpcywgZXhl
Yy0+dW5jaGVja2VkUih2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChpbmRleCkpLmpzVmFsdWUoKSk7
Ci0gICAgfSk7Ci19Ci0KLXZvaWQgR2VuZXJhdG9yRnJhbWU6OnJlc3VtZShFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IEZhc3RCaXRWZWN0b3ImIGxpdmVDYWxsZWVMb2NhbHMpCi17Ci0gICAgLy8gT25s
eSByZXN1bWUgY2FsbGVlIGxvY2Fscy4KLSAgICAvLyBFdmVyeSB0aW1lIGEgZ2VuZXJhdG9yIGlz
IGNhbGxlZCAob3IgcmVzdW1lZCksIHBhcmFtZXRlcnMgc2hvdWxkIGJlIHJlcGxhY2VkLgotICAg
IGxpdmVDYWxsZWVMb2NhbHMuZm9yRWFjaFNldEJpdChbJl0oc2l6ZV90IGluZGV4KSB7Ci0gICAg
ICAgIGV4ZWMtPnVuY2hlY2tlZFIodmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaW5kZXgpKSA9IGxv
Y2FsQXQoaW5kZXgpLmdldCgpOwotICAgICAgICBsb2NhbEF0KGluZGV4KS5jbGVhcigpOwotICAg
IH0pOwotfQotCi12b2lkIEdlbmVyYXRvckZyYW1lOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2Vs
bCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCi17Ci0gICAgR2VuZXJhdG9yRnJhbWUqIHRoaXNPYmpl
Y3QgPSBqc0Nhc3Q8R2VuZXJhdG9yRnJhbWUqPihjZWxsKTsKLSAgICBCYXNlOjp2aXNpdENoaWxk
cmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwotICAgIC8vIFNpbmNlIG9ubHkgdHJ1ZSBjZWxsIHBv
aW50ZXJzIGFyZSBzdG9yZWQgYXMgYSBjZWxsLCB3ZSBjYW4gc2FmZWx5IG1hcmsgdGhlbS4KLSAg
ICB2aXNpdG9yLmFwcGVuZFZhbHVlcyh0aGlzT2JqZWN0LT5sb2NhbHMoKSwgdGhpc09iamVjdC0+
bV9udW1iZXJPZkNhbGxlZUxvY2Fscyk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJhbWUuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZyYW1lLmgKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDNkNTQ1YjE0N2RkNGFiZmIyYmJiOWI1YTcxOTRlOGY3NDg0MWM0
OWEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJhbWUuaAorKysgL2Rldi9udWxsCkBA
IC0xLDkwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8
dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBHZW5lcmF0b3JGcmFt
ZV9oCi0jZGVmaW5lIEdlbmVyYXRvckZyYW1lX2gKLQotI2luY2x1ZGUgIkpTQ2VsbC5oIgotI2lu
Y2x1ZGUgPHd0Zi9GYXN0Qml0VmVjdG9yLmg+Ci0KLW5hbWVzcGFjZSBKU0MgewotCi1jbGFzcyBH
ZW5lcmF0b3JGcmFtZSA6IHB1YmxpYyBKU0NlbGwgewotICAgIGZyaWVuZCBjbGFzcyBKSVQ7Ci0j
aWYgRU5BQkxFKERGR19KSVQpCi0gICAgZnJpZW5kIGNsYXNzIERGRzo6U3BlY3VsYXRpdmVKSVQ7
Ci0gICAgZnJpZW5kIGNsYXNzIERGRzo6SklUQ29tcGlsZXI7Ci0jZW5kaWYKLSAgICBmcmllbmQg
Y2xhc3MgVk07Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBKU0NlbGwgQmFzZTsKLSAgICBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBTdHJ1Y3R1cmVJc0ltbW9ydGFsIHwgQmFz
ZTo6U3RydWN0dXJlRmxhZ3M7Ci0KLSAgICBERUNMQVJFX0VYUE9SVF9JTkZPOwotCi0gICAgc3Rh
dGljIEdlbmVyYXRvckZyYW1lKiBjcmVhdGUoVk0mLCBzaXplX3QgbnVtYmVyT2ZDYWxsZWVMb2Nh
bHMpOwotCi0gICAgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiogbG9jYWxzKCkKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8V3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPio+KGJp
dHdpc2VfY2FzdDxjaGFyKj4odGhpcykgKyBvZmZzZXRPZkxvY2FscygpKTsKLSAgICB9Ci0KLSAg
ICBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+JiBsb2NhbEF0KHNpemVfdCBpbmRleCkKLSAgICB7
Ci0gICAgICAgIEFTU0VSVChpbmRleCA8IG1fbnVtYmVyT2ZDYWxsZWVMb2NhbHMpOwotICAgICAg
ICByZXR1cm4gbG9jYWxzKClbaW5kZXhdOwotICAgIH0KLQotICAgIHN0YXRpYyBzaXplX3Qgb2Zm
c2V0T2ZMb2NhbHMoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIFdURjo6cm91bmRVcFRvTXVsdGlw
bGVPZjxzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KT4oc2l6ZW9mKEdlbmVyYXRvckZyYW1l
KSk7Ci0gICAgfQotCi0gICAgc3RhdGljIHNpemVfdCBhbGxvY2F0aW9uU2l6ZUZvckxvY2Fscyh1
bnNpZ25lZCBudW1iZXJPZkxvY2FscykKLSAgICB7Ci0gICAgICAgIHJldHVybiBvZmZzZXRPZkxv
Y2FscygpICsgbnVtYmVyT2ZMb2NhbHMgKiBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KTsK
LSAgICB9Ci0KLSAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0ds
b2JhbE9iamVjdCosIEpTVmFsdWUgcHJvdG90eXBlKTsKLQotICAgIHZvaWQgc2F2ZShFeGVjU3Rh
dGUqLCBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlQ2FsbGVlTG9jYWxzKTsKLSAgICB2b2lkIHJl
c3VtZShFeGVjU3RhdGUqLCBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlQ2FsbGVlTG9jYWxzKTsK
LQotcHJpdmF0ZToKLSAgICBHZW5lcmF0b3JGcmFtZShWTSYsIHNpemVfdCBudW1iZXJPZkNhbGxl
ZUxvY2Fscyk7Ci0KLSAgICBzaXplX3QgbV9udW1iZXJPZkNhbGxlZUxvY2FsczsKLQotICAgIGZy
aWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7Ci0KLSAgICB2b2lkIGZpbmlzaENyZWF0
aW9uKFZNJik7Ci0KLXByb3RlY3RlZDoKLSAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpT
Q2VsbCosIFNsb3RWaXNpdG9yJik7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBKU0MKLQotI2VuZGlm
IC8vIEdlbmVyYXRvckZyYW1lX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2VuZXJhdG9yRnVuY3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2VuZXJhdG9yRnVuY3Rpb24uaAppbmRleCAzNmY2MWM1ZjIwZjU2YmVmZDZjNTU3ODQy
YjE5ZTM5YjE5YTNhOTE5Li5hMWNiYWQ5NDZkYzU2ODI5ZWQxYTIxNTU3OTBiNDQwYThkZjQzMDA0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyYXRvckZ1
bmN0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0b3JG
dW5jdGlvbi5oCkBAIC01NSw2ICs1NSwxNiBAQCBjbGFzcyBKU0dlbmVyYXRvckZ1bmN0aW9uIDog
cHVibGljIEpTRnVuY3Rpb24gewogICAgICAgICBFeGVjdXRpbmcgPSAtMiwKICAgICB9OwogCisg
ICAgLy8gW3RoaXNdLCBAZ2VuZXJhdG9yLCBAZ2VuZXJhdG9yU3RhdGUsIEBnZW5lcmF0b3JWYWx1
ZSwgQGdlbmVyYXRvclJlc3VtZU1vZGUsIEBnZW5lcmF0b3JGcmFtZS4KKyAgICBlbnVtIGNsYXNz
IEdlbmVyYXRvckFyZ3VtZW50IDogaW50MzJfdCB7CisgICAgICAgIFRoaXNWYWx1ZSA9IDAsCisg
ICAgICAgIEdlbmVyYXRvciA9IDEsCisgICAgICAgIFN0YXRlID0gMiwKKyAgICAgICAgVmFsdWUg
PSAzLAorICAgICAgICBSZXN1bWVNb2RlID0gNCwKKyAgICAgICAgRnJhbWUgPSA1LAorICAgIH07
CisKICAgICBjb25zdCBzdGF0aWMgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1
Y3R1cmVGbGFnczsKIAogICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9WTS5jcHAKaW5kZXggY2Q1MzhkOGZkYjY0ZGYzZjJlODFkOTIwMThiOGQ1MGRkMWYz
MDExNi4uMjc5NGU2OTgxMzA1YTM5NjQyZjQwYmZjN2VmZjk2ZjA1YTA4N2MwMCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtNDUsNyArNDUsNiBAQAogI2luY2x1ZGUgIkZU
TFRodW5rcy5oIgogI2luY2x1ZGUgIkZ1bmN0aW9uQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJH
Q0FjdGl2aXR5Q2FsbGJhY2suaCIKLSNpbmNsdWRlICJHZW5lcmF0b3JGcmFtZS5oIgogI2luY2x1
ZGUgIkdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIkhlYXAuaCIKICNpbmNsdWRlICJIZWFwSXRl
cmF0aW9uU2NvcGUuaCIKQEAgLTI0MCw3ICsyMzksNiBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwg
SGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgaW5mZXJyZWRUeXBlU3RydWN0dXJlLnNldCgqdGhpcywg
SW5mZXJyZWRUeXBlOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAg
aW5mZXJyZWRUeXBlVGFibGVTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBJbmZlcnJlZFR5cGVUYWJsZTo6
Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIGZ1bmN0aW9uUmFyZURh
dGFTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBGdW5jdGlvblJhcmVEYXRhOjpjcmVhdGVTdHJ1Y3R1cmUo
KnRoaXMsIDAsIGpzTnVsbCgpKSk7Ci0gICAgZ2VuZXJhdG9yRnJhbWVTdHJ1Y3R1cmUuc2V0KCp0
aGlzLCBHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkp
OwogICAgIGV4Y2VwdGlvblN0cnVjdHVyZS5zZXQoKnRoaXMsIEV4Y2VwdGlvbjo6Y3JlYXRlU3Ry
dWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIHByb21pc2VEZWZlcnJlZFN0cnVjdHVy
ZS5zZXQoKnRoaXMsIEpTUHJvbWlzZURlZmVycmVkOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAs
IGpzTnVsbCgpKSk7CiAgICAgaW50ZXJuYWxQcm9taXNlRGVmZXJyZWRTdHJ1Y3R1cmUuc2V0KCp0
aGlzLCBKU0ludGVybmFsUHJvbWlzZURlZmVycmVkOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAs
IGpzTnVsbCgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAppbmRleCA1OTY0ZTdmZTA1
YjQzZmYxNWVlMjVhMzQ0YzU5NGUxYjQ0MTZlNDJlLi4wOTQ0NDA5NDQ2NzYwMjE2MTFiMjZkODNm
NDkyNzNhNWY0ZGQ1NzNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKQEAgLTMxMiw3
ICszMTIsNiBAQCBjbGFzcyBWTSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxWTT4gewog
ICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGluZmVycmVkVHlwZVN0cnVjdHVyZTsKICAgICBTdHJvbmc8
U3RydWN0dXJlPiBpbmZlcnJlZFR5cGVUYWJsZVN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0
dXJlPiBmdW5jdGlvblJhcmVEYXRhU3RydWN0dXJlOwotICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGdl
bmVyYXRvckZyYW1lU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGV4Y2VwdGlvblN0
cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBwcm9taXNlRGVmZXJyZWRTdHJ1Y3R1cmU7
CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gaW50ZXJuYWxQcm9taXNlRGVmZXJyZWRTdHJ1Y3R1cmU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRv
ci1maWItZnRsLWFuZC1hcnJheS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJl
c3MvZ2VuZXJhdG9yLWZpYi1mdGwtYW5kLWFycmF5LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZlOTM5ODEyZmRi
YWVjNmI4MzJiZmQwMGYyMTUzZGVmODRiYjc1OTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLWFuZC1hcnJheS5q
cwpAQCAtMCwwICsxLDIzIEBACisoZnVuY3Rpb24gKCkgeworICAgIGZ1bmN0aW9uICpmaWIoKQor
ICAgIHsKKyAgICAgICAgbGV0IGEgPSAxOworICAgICAgICBsZXQgYiA9IDE7CisgICAgICAgIGxl
dCBjID0gWyAwIF07CisgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICBjWzBdID0g
YTsKKyAgICAgICAgICAgIHlpZWxkIGM7CisgICAgICAgICAgICBbYSwgYl0gPSBbYiwgYSArIGJd
OworICAgICAgICB9CisgICAgfQorCisgICAgbGV0IHZhbHVlID0gMDsKKyAgICBmb3IgKGxldCBp
ID0gMDsgaSA8IDFlNDsgKytpKSB7CisgICAgICAgIGxldCBmID0gZmliKCk7CisgICAgICAgIGZv
ciAobGV0IGkgPSAwOyBpIDwgMTAwOyArK2kpIHsKKyAgICAgICAgICAgIHZhbHVlID0gZi5uZXh0
KCkudmFsdWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHZhbHVlWzBdICE9PSAzNTQyMjQ4NDgx
NzkyNjIwMDAwMDApCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCB2YWx1ZToke3Jl
c3VsdH1gKTsKKyAgICB9Cit9KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQtb2JqZWN0LmpzIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQtb2JqZWN0Lmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjY2NzM0MGYyZWE0Yzc0MzhhMmQyMDlhYTQwZDA2NzdlNGFiN2QzZmIKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVy
YXRvci1maWItZnRsLWFuZC1vYmplY3QuanMKQEAgLTAsMCArMSwyMyBAQAorKGZ1bmN0aW9uICgp
IHsKKyAgICBmdW5jdGlvbiAqZmliKCkKKyAgICB7CisgICAgICAgIGxldCBhID0gMTsKKyAgICAg
ICAgbGV0IGIgPSAxOworICAgICAgICBsZXQgYyA9IHsgZmliOiAwIH07CisgICAgICAgIHdoaWxl
ICh0cnVlKSB7CisgICAgICAgICAgICBjLmZpYiA9IGE7CisgICAgICAgICAgICB5aWVsZCBjOwor
ICAgICAgICAgICAgW2EsIGJdID0gW2IsIGEgKyBiXTsKKyAgICAgICAgfQorICAgIH0KKworICAg
IGxldCB2YWx1ZSA9IDA7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxZTQ7ICsraSkgeworICAg
ICAgICBsZXQgZiA9IGZpYigpOworICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDsgKytp
KSB7CisgICAgICAgICAgICB2YWx1ZSA9IGYubmV4dCgpLnZhbHVlOworICAgICAgICB9CisgICAg
ICAgIGlmICh2YWx1ZS5maWIgIT09IDM1NDIyNDg0ODE3OTI2MjAwMDAwMCkKKyAgICAgICAgICAg
IHRocm93IG5ldyBFcnJvcihgYmFkIHZhbHVlOiR7cmVzdWx0fWApOworICAgIH0KK30oKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1m
aWItZnRsLWFuZC1zdHJpbmcuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNz
L2dlbmVyYXRvci1maWItZnRsLWFuZC1zdHJpbmcuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDM4YWU2YWIzMzQ3
MDQ2ODIyODQ5ZjQzMDA0ZWE1YzQwM2VlZGEyOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwtYW5kLXN0cmluZy5q
cwpAQCAtMCwwICsxLDIyIEBACisoZnVuY3Rpb24gKCkgeworICAgIGZ1bmN0aW9uICpmaWIoKQor
ICAgIHsKKyAgICAgICAgbGV0IGEgPSAxOworICAgICAgICBsZXQgYiA9IDE7CisgICAgICAgIGxl
dCBjID0gIlJlc3VsdCEgIjsKKyAgICAgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgICAgIHlp
ZWxkIGMgKyBhOworICAgICAgICAgICAgW2EsIGJdID0gW2IsIGEgKyBiXTsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIGxldCB2YWx1ZSA9IDA7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxZTQ7
ICsraSkgeworICAgICAgICBsZXQgZiA9IGZpYigpOworICAgICAgICBmb3IgKGxldCBpID0gMDsg
aSA8IDEwMDsgKytpKSB7CisgICAgICAgICAgICB2YWx1ZSA9IGYubmV4dCgpLnZhbHVlOworICAg
ICAgICB9CisgICAgICAgIGlmICh2YWx1ZSAhPT0gYFJlc3VsdCEgMzU0MjI0ODQ4MTc5MjYyMDAw
MDAwYCkKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIHZhbHVlOiR7cmVzdWx0fWAp
OworICAgIH0KK30oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMv
c3RyZXNzL2dlbmVyYXRvci1maWItZnRsLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3Rz
L3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNDBlMzNkYmM4NjhiZWE3
YTg5M2M5ZWMxNmI3NzllYzI2YmRiMTljCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC5qcwpAQCAtMCwwICsxLDIx
IEBACisoZnVuY3Rpb24gKCkgeworICAgIGZ1bmN0aW9uICpmaWIoKQorICAgIHsKKyAgICAgICAg
bGV0IGEgPSAxOworICAgICAgICBsZXQgYiA9IDE7CisgICAgICAgIHdoaWxlICh0cnVlKSB7Cisg
ICAgICAgICAgICB5aWVsZCBhOworICAgICAgICAgICAgW2EsIGJdID0gW2IsIGEgKyBiXTsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIGxldCB2YWx1ZSA9IDA7CisgICAgZm9yIChsZXQgaSA9IDA7
IGkgPCAxZTQ7ICsraSkgeworICAgICAgICBsZXQgZiA9IGZpYigpOworICAgICAgICBmb3IgKGxl
dCBpID0gMDsgaSA8IDEwMDsgKytpKSB7CisgICAgICAgICAgICB2YWx1ZSA9IGYubmV4dCgpLnZh
bHVlOworICAgICAgICB9CisgICAgICAgIGlmICh2YWx1ZSAhPT0gMzU0MjI0ODQ4MTc5MjYyMDAw
MDAwKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgdmFsdWU6JHtyZXN1bHR9YCk7
CisgICAgfQorfSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9z
dHJlc3MvZ2VuZXJhdG9yLWZyYW1lLWVtcHR5LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RzL3N0cmVzcy9nZW5lcmF0b3ItZnJhbWUtZW1wdHkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTllODg1NWJm
YWMzYzU2ZGY5MjZhYmQ0MjhjMDEzYzMzNDE2Mjc0NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZyYW1lLWVtcHR5LmpzCkBA
IC0wLDAgKzEsMzQgQEAKK2Z1bmN0aW9uIHNob3VsZFRocm93KGZ1bmMsIGVycm9yTWVzc2FnZSkg
eworICAgIHZhciBlcnJvclRocm93biA9IGZhbHNlOworICAgIHZhciBlcnJvciA9IG51bGw7Cisg
ICAgdHJ5IHsKKyAgICAgICAgZnVuYygpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgZXJy
b3JUaHJvd24gPSB0cnVlOworICAgICAgICBlcnJvciA9IGU7CisgICAgfQorICAgIGlmICghZXJy
b3JUaHJvd24pCisgICAgICAgIHRocm93IG5ldyBFcnJvcignbm90IHRocm93bicpOworICAgIGlm
IChTdHJpbmcoZXJyb3IpICE9PSBlcnJvck1lc3NhZ2UpCisgICAgICAgIHRocm93IG5ldyBFcnJv
cihgYmFkIGVycm9yOiAke1N0cmluZyhlcnJvcil9YCk7Cit9CisKK3Nob3VsZFRocm93KGZ1bmN0
aW9uICgpIHsKKyAgICBmdW5jdGlvbiAqZmliKGZsYWcpCisgICAgeworICAgICAgICBsZXQgYSA9
IDE7CisgICAgICAgIGxldCBiID0gMTsKKyAgICAgICAgeWllbGQgNDI7CisgICAgICAgIGlmIChm
bGFnKQorICAgICAgICAgICAgcmV0dXJuIGM7CisgICAgICAgIGxldCBjID0gNTAwOworICAgIH0K
KworICAgIGxldCB2YWx1ZSA9IDA7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxZTQ7ICsraSkg
eworICAgICAgICBmb3IgKGxldCB2IG9mIGZpYihmYWxzZSkpIHsKKyAgICAgICAgfQorICAgIH0K
KyAgICBmb3IgKGxldCB2IG9mIGZpYih0cnVlKSkgeworICAgIH0KK30sIGBSZWZlcmVuY2VFcnJv
cjogQ2Fubm90IGFjY2VzcyB1bmluaXRpYWxpemVkIHZhcmlhYmxlLmApOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItcmVkdWNlZC1zYXZl
LXBvaW50LXB1dC10by1zY29wZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJl
c3MvZ2VuZXJhdG9yLXJlZHVjZWQtc2F2ZS1wb2ludC1wdXQtdG8tc2NvcGUuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYzBjNzVmYTQ5MTQzYzE3YmUxNGYzMjgxZTNmNjU0MzRmMzUxMzllOAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXJlZHVj
ZWQtc2F2ZS1wb2ludC1wdXQtdG8tc2NvcGUuanMKQEAgLTAsMCArMSwyOCBAQAorZnVuY3Rpb24g
c2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVk
KQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCB2YWx1ZTogJHtTdHJpbmcoYWN0dWFsKX1g
KTsKK30KKworZnVuY3Rpb24gZXJyb3IoKQoreworICAgIHRocm93ICJvayI7Cit9CisKK2Z1bmN0
aW9uKiBnZW4oKQoreworICAgIHZhciB2YWx1ZSA9IDQyOworICAgIHRyeSB7CisgICAgICAgIHlp
ZWxkIDMwMDsKKyAgICAgICAgdmFsdWUgPSA1MDA7CisgICAgICAgIGVycm9yKCk7CisgICAgfSBj
YXRjaCAoZSkgeworICAgICAgICB5aWVsZCA0MjsKKyAgICAgICAgcmV0dXJuIHZhbHVlOworICAg
IH0KKyAgICByZXR1cm4gMjAwOworfQorCit2YXIgZyA9IGdlbigpOworc2hvdWxkQmUoZy5uZXh0
KCkudmFsdWUsIDMwMCk7CitzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgNDIpOworc2hvdWxkQmUo
Zy5uZXh0KCkudmFsdWUsIDUwMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dGVzdHMvc3RyZXNzL2dlbmVyYXRvci10cmFuc2Zlci1yZWdpc3Rlci1iZXlvbmQtbXV0aXBsZS15
aWVsZHMuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci10
cmFuc2Zlci1yZWdpc3Rlci1iZXlvbmQtbXV0aXBsZS15aWVsZHMuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmUy
MDhmNTgxMjk2ZjlhZTA4YTZiZmIzOThiNDgyMjU3NDJkNmI3OAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXRyYW5zZmVyLXJl
Z2lzdGVyLWJleW9uZC1tdXRpcGxlLXlpZWxkcy5qcwpAQCAtMCwwICsxLDE4IEBACitmdW5jdGlv
biBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0
ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30K
KworCitmdW5jdGlvbiAqZ2VuKCkKK3sKKyAgICB2YXIgdGVzdCA9IDQyOworICAgIHlpZWxkIDMy
OworICAgIHlpZWxkIDMzOworICAgIHlpZWxkIHRlc3Q7Cit9CisKK3ZhciBnID0gZ2VuKCk7Citz
aG91bGRCZShnLm5leHQoKS52YWx1ZSwgMzIpOworc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIDMz
KTsKK3Nob3VsZEJlKGcubmV4dCgpLnZhbHVlLCA0Mik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCAzYmE4MDQwNmI2ODc4NzJjZGMyZTNlODE2YmViMDA0M2E5
MzljMjcwLi5lYjRjYjhhNmY5NDNiZTlkZWI0ZjNjYjg1MmY3OWM3M2U0ZWEyOTA0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJj
ZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTMzNCw2ICszMzQsOSBAQAog
CQlGRTg5MjVCMDFEMDBEQUVDMDA0NjkwN0UgLyogSW5kZW50ZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFODkyNUFGMUQwMERBRUMwMDQ2OTA3RSAv
KiBJbmRlbnRlci5oICovOyB9OwogCQlGRURBQ0QzRDE2MzBGODNGMDBDNjk2MzQgLyogU3RhY2tT
dGF0cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
RURBQ0QzQjE2MzBGODNGMDBDNjk2MzQgLyogU3RhY2tTdGF0cy5jcHAgKi87IH07CiAJCUZFREFD
RDNFMTYzMEY4M0YwMEM2OTYzNCAvKiBTdGFja1N0YXRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRURBQ0QzQzE2MzBGODNGMDBDNjk2MzQgLyogU3Rh
Y2tTdGF0cy5oICovOyB9OworCQlDOEIwRTFBMUUwMUE0ODZFQjk1RTBEMTEgLyogSW5kZXhTZXQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxMzdFMUQ3
REJEODRBQzM4RkFFNEQzNCAvKiBJbmRleFNldC5oICovOyB9OworCQlDOTE2Qjk3NUYwMkY0RjdF
OEI0QUIxMkQgLyogSW5kZXhNYXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDVCNDMzODNBNUQwQjQ2M0M5NDMzRDkzMyAvKiBJbmRleE1hcC5oICovOyB9
OworCQk0QjI2ODBERDlCOTc0NDAyODk5RUQ1NzIgLyogSW5kZXhlZENvbnRhaW5lckl0ZXJhdG9y
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QzY3QzU0
MjU4OTM0OEUyODVCNDk2OTkgLyogSW5kZXhlZENvbnRhaW5lckl0ZXJhdG9yLmggKi87IH07CiAv
KiBFbmQgUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYQ29udGFpbmVySXRl
bVByb3h5IHNlY3Rpb24gKi8KQEAgLTY4MCw2ICs2ODMsOSBAQAogCQlGRTg5MjVBRjFEMDBEQUVD
MDA0NjkwN0UgLyogSW5kZW50ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SW5kZW50ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkVEQUNEM0IxNjMwRjgz
RjAwQzY5NjM0IC8qIFN0YWNrU3RhdHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gU3RhY2tTdGF0cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZF
REFDRDNDMTYzMEY4M0YwMEM2OTYzNCAvKiBTdGFja1N0YXRzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFN0YWNrU3RhdHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMzEzN0UxRDdEQkQ4NEFDMzhGQUU0RDM0IC8qIEluZGV4U2V0LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IEluZGV4U2V0Lmg7IHBhdGggPSBJbmRleFNldC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk1QjQzMzgzQTVEMEI0NjNDOTQzM0Q5MzMgLyogSW5kZXhN
YXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSW5kZXhNYXAuaDsgcGF0aCA9
IEluZGV4TWFwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTlDNjdDNTQyNTg5MzQ4
RTI4NUI0OTY5OSAvKiBJbmRleGVkQ29udGFpbmVySXRlcmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gSW5kZXhlZENvbnRhaW5lckl0ZXJhdG9yLmg7IHBhdGggPSBJbmRl
eGVkQ29udGFpbmVySXRlcmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIC8qIEVu
ZCBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYRnJhbWV3b3Jrc0J1
aWxkUGhhc2Ugc2VjdGlvbiAqLwpAQCAtMTAzOCw2ICsxMDQ0LDkgQEAKIAkJCQlFNEEwQUQzODFB
OTYyNDU1MDA1MzZERjYgLyogV29ya1F1ZXVlLmggKi8sCiAJCQkJQThBNDczN0ExNTFBODI1QjAw
NDEyM0ZGIC8qIFdURlRocmVhZERhdGEuY3BwICovLAogCQkJCUE4QTQ3MzdCMTUxQTgyNUIwMDQx
MjNGRiAvKiBXVEZUaHJlYWREYXRhLmggKi8sCisJCQkJMzEzN0UxRDdEQkQ4NEFDMzhGQUU0RDM0
IC8qIEluZGV4U2V0LmggKi8sCisJCQkJNUI0MzM4M0E1RDBCNDYzQzk0MzNEOTMzIC8qIEluZGV4
TWFwLmggKi8sCisJCQkJOUM2N0M1NDI1ODkzNDhFMjg1QjQ5Njk5IC8qIEluZGV4ZWRDb250YWlu
ZXJJdGVyYXRvci5oICovLAogCQkJKTsKIAkJCXBhdGggPSB3dGY7CiAJCQlzb3VyY2VUcmVlID0g
Ijxncm91cD4iOwpAQCAtMTQzNSw2ICsxNDQ0LDkgQEAKIAkJCQlBOEE0NzQ0NjE1MUE4MjVCMDA0
MTIzRkYgLyogV1RGU3RyaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzQ4NzE1MUE4MjVC
MDA0MTIzRkYgLyogV1RGVGhyZWFkRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0U3M0UwMjUx
OURDQjdBQjAwNTgwRDVDIC8qIFhQQ1NQSS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQzhCMEUxQTFF
MDFBNDg2RUI5NUUwRDExIC8qIEluZGV4U2V0LmggaW4gSGVhZGVycyAqLywKKwkJCQlDOTE2Qjk3
NUYwMkY0RjdFOEI0QUIxMkQgLyogSW5kZXhNYXAuaCBpbiBIZWFkZXJzICovLAorCQkJCTRCMjY4
MEREOUI5NzQ0MDI4OTlFRDU3MiAvKiBJbmRleGVkQ29udGFpbmVySXRlcmF0b3IuaCBpbiBIZWFk
ZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAw
OwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQgYi9Tb3Vy
Y2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAppbmRleCAwOTk3ZDllYWM0Nzk1ODFmZjFmZDQ3Njlj
Y2M0YjU0NjYyZWZkNzE0Li45MjgxYjM2N2E4MjU1NDBhNjI1YWNlZDk1MzhkZTYwNDAwYWI4MzQz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi9DTWFrZUxpc3RzLnR4dApAQCAtNDUsNiArNDUsMTAgQEAgc2V0KFdURl9IRUFERVJT
CiAgICAgSGFzaFRhYmxlLmgKICAgICBIYXNoVHJhaXRzLmgKICAgICBIZXhOdW1iZXIuaAorICAg
IEluZGV4TWFwLmgKKyAgICBJbmRleFNldC5oCisgICAgSW5kZXhTcGFyc2VTZXQuaAorICAgIElu
ZGV4ZWRDb250YWluZXJJdGVyYXRvci5oCiAgICAgSXRlcmF0b3JBZGFwdG9ycy5oCiAgICAgSXRl
cmF0b3JSYW5nZS5oCiAgICAgTGlzdEhhc2hTZXQuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvRmFzdEJpdFZlY3Rvci5oIGIvU291cmNlL1dURi93dGYvRmFzdEJpdFZlY3Rvci5oCmluZGV4
IDk4ZmZmNWNmNzM1M2U2YmM2N2RhNWM1NTk0MGNjY2U0ZTRiMTU2ZDAuLmZmMDBiN2I1NGQ0YTBj
ZmY0YmVmN2QwMzg1NGRlNmI5MGNlMWRiOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0Zh
c3RCaXRWZWN0b3IuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GYXN0Qml0VmVjdG9yLmgKQEAgLTIz
LDggKzIzLDcgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAKLSNpZm5kZWYgRmFzdEJpdFZlY3Rv
cl9oCi0jZGVmaW5lIEZhc3RCaXRWZWN0b3JfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlIDxz
dHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgpAQCAtMzYsMTIgKzM1LDE0IEBA
IGNsYXNzIFByaW50U3RyZWFtOwogCiBjbGFzcyBGYXN0Qml0VmVjdG9yIHsKIHB1YmxpYzoKLSAg
ICBGYXN0Qml0VmVjdG9yKCkKLSAgICAgICAgOiBtX2FycmF5KDApCi0gICAgICAgICwgbV9udW1C
aXRzKDApCisgICAgRmFzdEJpdFZlY3RvcigpID0gZGVmYXVsdDsKKworICAgIEZhc3RCaXRWZWN0
b3IoRmFzdEJpdFZlY3RvciYmIG90aGVyKQorICAgICAgICA6IG1fYXJyYXkoc3RkOjpleGNoYW5n
ZShvdGhlci5tX2FycmF5LCBudWxscHRyKSkKKyAgICAgICAgLCBtX251bUJpdHMoc3RkOjpleGNo
YW5nZShvdGhlci5tX251bUJpdHMsIDApKQogICAgIHsKICAgICB9Ci0gICAgCisKICAgICBGYXN0
Qml0VmVjdG9yKGNvbnN0IEZhc3RCaXRWZWN0b3ImIG90aGVyKQogICAgICAgICA6IG1fYXJyYXko
MCkKICAgICAgICAgLCBtX251bUJpdHMoMCkKQEAgLTIwMiwxMyArMjAzLDEwIEBAIGNsYXNzIEZh
c3RCaXRWZWN0b3IgewogICAgIHN0YXRpYyBzaXplX3QgYXJyYXlMZW5ndGgoc2l6ZV90IG51bUJp
dHMpIHsgcmV0dXJuIChudW1CaXRzICsgMzEpID4+IDU7IH0KICAgICBzaXplX3QgYXJyYXlMZW5n
dGgoKSBjb25zdCB7IHJldHVybiBhcnJheUxlbmd0aChtX251bUJpdHMpOyB9CiAgICAgCi0gICAg
dWludDMyX3QqIG1fYXJyYXk7IC8vIE5vLCB0aGlzIGNhbid0IGJlIGFuIHN0ZDo6dW5pcXVlX3B0
cjx1aW50MzJfdFtdPi4KLSAgICBzaXplX3QgbV9udW1CaXRzOworICAgIHVpbnQzMl90KiBtX2Fy
cmF5IHsgbnVsbHB0ciB9OyAvLyBObywgdGhpcyBjYW4ndCBiZSBhbiBzdGQ6OnVuaXF1ZV9wdHI8
dWludDMyX3RbXT4uCisgICAgc2l6ZV90IG1fbnVtQml0cyB7IDAgfTsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdURgogCiB1c2luZyBXVEY6OkZhc3RCaXRWZWN0b3I7Ci0KLSNlbmRpZiAvLyBGYXN0
Qml0VmVjdG9yX2gKLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvSW5kZXhNYXAuaCBiL1Nv
dXJjZS9XVEYvd3RmL0luZGV4TWFwLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDJkNjEwMTdhNDE1YzQ3MzkxNmFi
ODE2NjhjMTZiMDBiZGU1MjQyYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL0lu
ZGV4TWFwLmgKQEAgLTAsMCArMSw4MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgorCituYW1lc3BhY2UgV1RGIHsKKworLy8gVGhpcyBpcyBhIG1hcCBmb3Iga2V5cyB0aGF0
IGhhdmUgYW4gaW5kZXgoKS4gSXQncyBzdXBlciBlZmZpY2llbnQgZm9yIEJhc2ljQmxvY2tzLiBJ
dCdzIG9ubHkKKy8vIGVmZmljaWVudCBmb3IgVmFsdWVzIGlmIHlvdSBkb24ndCBjcmVhdGUgdG9v
IG1hbnkgb2YgdGhlc2UgbWFwcywgc2luY2UgVmFsdWVzIGNhbiBoYXZlIHZlcnkKKy8vIHNwYXJz
ZSBpbmRpY2VzIGFuZCB0aGVyZSBhcmUgYSBsb3Qgb2YgVmFsdWVzLgorCit0ZW1wbGF0ZTx0eXBl
bmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlPgorY2xhc3MgSW5kZXhNYXAgeworcHVibGljOgorICAg
IGV4cGxpY2l0IEluZGV4TWFwKHNpemVfdCBzaXplID0gMCkKKyAgICB7CisgICAgICAgIG1fdmVj
dG9yLmZpbGwoVmFsdWUoKSwgc2l6ZSk7CisgICAgfQorCisgICAgdm9pZCByZXNpemUoc2l6ZV90
IHNpemUpCisgICAgeworICAgICAgICBtX3ZlY3Rvci5maWxsKFZhbHVlKCksIHNpemUpOworICAg
IH0KKworICAgIHZvaWQgY2xlYXIoKQorICAgIHsKKyAgICAgICAgbV92ZWN0b3IuZmlsbChWYWx1
ZSgpLCBtX3ZlY3Rvci5zaXplKCkpOworICAgIH0KKworICAgIHNpemVfdCBzaXplKCkgY29uc3Qg
eyByZXR1cm4gbV92ZWN0b3Iuc2l6ZSgpOyB9CisKKyAgICBWYWx1ZSYgb3BlcmF0b3JbXShzaXpl
X3QgaW5kZXgpCisgICAgeworICAgICAgICByZXR1cm4gbV92ZWN0b3JbaW5kZXhdOworICAgIH0K
KworICAgIGNvbnN0IFZhbHVlJiBvcGVyYXRvcltdKHNpemVfdCBpbmRleCkgY29uc3QKKyAgICB7
CisgICAgICAgIHJldHVybiBtX3ZlY3RvcltpbmRleF07CisgICAgfQorICAgIAorICAgIFZhbHVl
JiBvcGVyYXRvcltdKEtleSoga2V5KQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fdmVjdG9yW2tl
eS0+aW5kZXgoKV07CisgICAgfQorICAgIAorICAgIGNvbnN0IFZhbHVlJiBvcGVyYXRvcltdKEtl
eSoga2V5KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fdmVjdG9yW2tleS0+aW5kZXgo
KV07CisgICAgfQorCitwcml2YXRlOgorICAgIFZlY3RvcjxWYWx1ZT4gbV92ZWN0b3I7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXVEYKKwordXNpbmcgV1RGOjpJbmRleE1hcDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL0luZGV4U2V0LmggYi9Tb3VyY2UvV1RGL3d0Zi9JbmRleFNldC5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjYxYmQwNGYyZDE1YWI2Y2QyYTY5Y2M0NDViOGQ3MzZiMjJjMDViNjgKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9JbmRleFNldC5oCkBAIC0wLDAgKzEsMTYzIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvQml0VmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL0Nv
bW1hUHJpbnRlci5oPgorCituYW1lc3BhY2UgV1RGIHsKKworLy8gVGhpcyBpcyBhIHNldCBmb3Ig
dGhpbmdzIHRoYXQgaGF2ZSBhbiBpbmRleCgpLiBJdCdzIHN1cGVyIGVmZmljaWVudCBmb3IgQmFz
aWNCbG9ja3MuIEl0J3Mgb25seQorLy8gZWZmaWNpZW50IGZvciBWYWx1ZXMgaWYgeW91IGRvbid0
IGNyZWF0ZSB0b28gbWFueSBvZiB0aGVzZSBzZXRzLCBzaW5jZSBWYWx1ZXMgY2FuIGhhdmUgdmVy
eSBzcGFyc2UKKy8vIGluZGljZXMgYW5kIHRoZXJlIGFyZSBhIGxvdCBvZiBWYWx1ZXMuCisKKy8v
IElmIHlvdSB3YW50IGEgc2V0IG9mIEJhc2ljQmxvY2tzLCB5b3UgZG8gSW5kZXhTZXQ8QmFzaWNC
bG9jaz4uIFNvLCBUID0gQmFzaWNCbG9jay4KK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitjbGFzcyBJ
bmRleFNldCB7CitwdWJsaWM6CisgICAgSW5kZXhTZXQoKQorICAgIHsKKyAgICB9CisKKyAgICBi
b29sIGFkZChUKiB2YWx1ZSkKKyAgICB7CisgICAgICAgIHJldHVybiAhbV9zZXQuc2V0KHZhbHVl
LT5pbmRleCgpKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJdGVyYWJsZT4KKyAg
ICBib29sIGFkZEFsbChjb25zdCBJdGVyYWJsZSYgaXRlcmFibGUpCisgICAgeworICAgICAgICBi
b29sIHJlc3VsdCA9IGZhbHNlOworICAgICAgICBmb3IgKFQqIHZhbHVlIDogaXRlcmFibGUpCisg
ICAgICAgICAgICByZXN1bHQgfD0gYWRkKHZhbHVlKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsK
KyAgICB9CisKKyAgICBib29sIHJlbW92ZShUKiB2YWx1ZSkKKyAgICB7CisgICAgICAgIHJldHVy
biBtX3NldC5jbGVhcih2YWx1ZS0+aW5kZXgoKSk7CisgICAgfQorCisgICAgYm9vbCBjb250YWlu
cyhUKiB2YWx1ZSkgY29uc3QKKyAgICB7CisgICAgICAgIGlmICghdmFsdWUpCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBtX3NldC5nZXQodmFsdWUtPmluZGV4KCkp
OworICAgIH0KKworICAgIHNpemVfdCBzaXplKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVy
biBtX3NldC5iaXRDb3VudCgpOworICAgIH0KKworICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0Cisg
ICAgeworICAgICAgICByZXR1cm4gIXNpemUoKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBDb2xsZWN0aW9uVHlwZT4KKyAgICBjbGFzcyBJdGVyYWJsZSB7CisgICAgcHVibGljOgor
ICAgICAgICBJdGVyYWJsZShjb25zdCBDb2xsZWN0aW9uVHlwZSYgY29sbGVjdGlvbiwgY29uc3Qg
Qml0VmVjdG9yJiBzZXQpCisgICAgICAgICAgICA6IG1fY29sbGVjdGlvbihjb2xsZWN0aW9uKQor
ICAgICAgICAgICAgLCBtX3NldChzZXQpCisgICAgICAgIHsKKyAgICAgICAgfQorCisgICAgICAg
IGNsYXNzIGl0ZXJhdG9yIHsKKyAgICAgICAgcHVibGljOgorICAgICAgICAgICAgaXRlcmF0b3Io
KQorICAgICAgICAgICAgICAgIDogbV9jb2xsZWN0aW9uKG51bGxwdHIpCisgICAgICAgICAgICB7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGl0ZXJhdG9yKGNvbnN0IENvbGxlY3Rpb25U
eXBlJiBjb2xsZWN0aW9uLCBCaXRWZWN0b3I6Oml0ZXJhdG9yIGl0ZXIpCisgICAgICAgICAgICAg
ICAgOiBtX2NvbGxlY3Rpb24oJmNvbGxlY3Rpb24pCisgICAgICAgICAgICAgICAgLCBtX2l0ZXIo
aXRlcikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgVCogb3Bl
cmF0b3IqKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gbV9jb2xsZWN0
aW9uLT5hdCgqbV9pdGVyKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaXRlcmF0b3Im
IG9wZXJhdG9yKysoKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICsrbV9pdGVyOwor
ICAgICAgICAgICAgICAgIHJldHVybiAqdGhpczsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IGl0ZXJhdG9yJiBvdGhlcikgY29uc3QKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gbV9pdGVyID09IG90aGVyLm1faXRlcjsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IGl0ZXJhdG9y
JiBvdGhlcikgY29uc3QKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gISgq
dGhpcyA9PSBvdGhlcik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgcHJpdmF0ZToKKyAgICAg
ICAgICAgIGNvbnN0IENvbGxlY3Rpb25UeXBlKiBtX2NvbGxlY3Rpb247CisgICAgICAgICAgICBC
aXRWZWN0b3I6Oml0ZXJhdG9yIG1faXRlcjsKKyAgICAgICAgfTsKKworICAgICAgICBpdGVyYXRv
ciBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIGl0ZXJhdG9yKG1fY29sbGVjdGlvbiwgbV9zZXQuYmVn
aW4oKSk7IH0KKyAgICAgICAgaXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gaXRlcmF0b3Io
bV9jb2xsZWN0aW9uLCBtX3NldC5lbmQoKSk7IH0KKworICAgIHByaXZhdGU6CisgICAgICAgIGNv
bnN0IENvbGxlY3Rpb25UeXBlJiBtX2NvbGxlY3Rpb247CisgICAgICAgIGNvbnN0IEJpdFZlY3Rv
ciYgbV9zZXQ7CisgICAgfTsKKworICAgIC8vIEZvciBiYXNpYyBibG9ja3MsIHlvdSBkbzoKKyAg
ICAvLyBpbmRleFNldC52YWx1ZXMocHJvY2VkdXJlKTsKKyAgICAvLworICAgIC8vIEZvciB2YWx1
ZXMsIHlvdSBkbzoKKyAgICAvLyBpbmRleFNldC52YWx1ZXMocHJvY2VkdXJlLnZhbHVlcygpKTsK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDb2xsZWN0aW9uVHlwZT4KKyAgICBJdGVyYWJsZTxDb2xs
ZWN0aW9uVHlwZT4gdmFsdWVzKGNvbnN0IENvbGxlY3Rpb25UeXBlJiBjb2xsZWN0aW9uKSBjb25z
dAorICAgIHsKKyAgICAgICAgcmV0dXJuIEl0ZXJhYmxlPENvbGxlY3Rpb25UeXBlPihjb2xsZWN0
aW9uLCBpbmRpY2VzKCkpOworICAgIH0KKworICAgIGNvbnN0IEJpdFZlY3RvciYgaW5kaWNlcygp
IGNvbnN0IHsgcmV0dXJuIG1fc2V0OyB9CisKKyAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mIG91
dCkgY29uc3QKKyAgICB7CisgICAgICAgIENvbW1hUHJpbnRlciBjb21tYTsKKyAgICAgICAgZm9y
IChzaXplX3QgaW5kZXggOiBpbmRpY2VzKCkpCisgICAgICAgICAgICBvdXQucHJpbnQoY29tbWEs
IFQ6OmR1bXBQcmVmaXgsIGluZGV4KTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQml0VmVjdG9y
IG1fc2V0OworfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKK3VzaW5nIFdURjo6SW5kZXhTZXQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9JbmRleGVkQ29udGFpbmVySXRlcmF0b3IuaCBi
L1NvdXJjZS9XVEYvd3RmL0luZGV4ZWRDb250YWluZXJJdGVyYXRvci5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNl
OWI5ZTM3YTEyNDdkOTA3YmU4MzBjOWQyMDEyZjc3YTFiNzM3NzEKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi9JbmRleGVkQ29udGFpbmVySXRlcmF0b3IuaApAQCAtMCwwICsxLDgx
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgorCituYW1lc3BhY2UgV1RGIHsK
KwordGVtcGxhdGU8Y2xhc3MgQ29udGFpbmVyPgorY2xhc3MgSW5kZXhlZENvbnRhaW5lckl0ZXJh
dG9yIHsKK3B1YmxpYzoKKyAgICBJbmRleGVkQ29udGFpbmVySXRlcmF0b3IoKQorICAgICAgICA6
IG1fY29udGFpbmVyKG51bGxwdHIpCisgICAgICAgICwgbV9pbmRleCgwKQorICAgIHsKKyAgICB9
CisKKyAgICBJbmRleGVkQ29udGFpbmVySXRlcmF0b3IoY29uc3QgQ29udGFpbmVyJiBjb250YWlu
ZXIsIHVuc2lnbmVkIGluZGV4KQorICAgICAgICA6IG1fY29udGFpbmVyKCZjb250YWluZXIpCisg
ICAgICAgICwgbV9pbmRleChmaW5kTmV4dChpbmRleCkpCisgICAgeworICAgIH0KKworICAgIGF1
dG8gb3BlcmF0b3IqKCkgLT4gdHlwZW5hbWUgc3RkOjpyZXN1bHRfb2Y8ZGVjbHR5cGUoJkNvbnRh
aW5lcjo6YXQpKGNvbnN0IENvbnRhaW5lciwgdW5zaWduZWQpPjo6dHlwZQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIG1fY29udGFpbmVyLT5hdChtX2luZGV4KTsKKyAgICB9CisKKyAgICBJbmRleGVk
Q29udGFpbmVySXRlcmF0b3ImIG9wZXJhdG9yKysoKQorICAgIHsKKyAgICAgICAgbV9pbmRleCA9
IGZpbmROZXh0KG1faW5kZXggKyAxKTsKKyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KKwor
ICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBJbmRleGVkQ29udGFpbmVySXRlcmF0b3ImIG90aGVy
KSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fY29udGFpbmVyID09IG90aGVyLm1fY29u
dGFpbmVyKTsKKyAgICAgICAgcmV0dXJuIG1faW5kZXggPT0gb3RoZXIubV9pbmRleDsKKyAgICB9
CisKKyAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgSW5kZXhlZENvbnRhaW5lckl0ZXJhdG9yJiBv
dGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKKyAg
ICB9CisKK3ByaXZhdGU6CisgICAgdW5zaWduZWQgZmluZE5leHQodW5zaWduZWQgaW5kZXgpCisg
ICAgeworICAgICAgICB3aGlsZSAoaW5kZXggPCBtX2NvbnRhaW5lci0+c2l6ZSgpICYmICFtX2Nv
bnRhaW5lci0+YXQoaW5kZXgpKQorICAgICAgICAgICAgaW5kZXgrKzsKKyAgICAgICAgcmV0dXJu
IGluZGV4OworICAgIH0KKworICAgIGNvbnN0IENvbnRhaW5lciogbV9jb250YWluZXI7CisgICAg
dW5zaWduZWQgbV9pbmRleDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdURgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>286526</attachid>
            <date>2016-08-19 22:10:53 -0700</date>
            <delta_ts>2016-08-23 11:58:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-152723-20160820140900.patch</filename>
            <type>text/plain</type>
            <size>222405</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA0Njc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
NGIyNTNhYWM5MjA4ZTdkNzU4NjM1OWZmMWNmNjM4OTA4Y2RmODYzLi5lZTM1NjViMWZkNWNjMTc0
N2FlYTIyMWI0ZDI0OThjNDkzMTg5MGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNjEgQEAKKzIwMTYtMDgtMTkgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0RGR11bRlRMXSBJbXBsZW1lbnQgRVM2IEdlbmVyYXRvcnMgaW4g
REZHIC8gRlRMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNTI3MjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUaGlzIHBhdGNoIGludHJvZHVjZXMgREZHIGFuZCBGVEwgc3VwcG9ydCBmb3IgRVM2IGdlbmVy
YXRvcnMuCisgICAgICAgIEVTNiBnZW5lcmF0b3IgaXMgY29tcGlsZWQgYnkgdGhlIEJ5dGVjb2Rl
R2VuZXJhdG9yLiBCdXQgYXQgdGhlIGxhc3QgcGhhc2UsIEJ5dGVjb2RlR2VuZXJhdG9yIHBlcmZv
cm1zICJnZW5lcmF0b3JpZmljYXRpb24iIG9udG8gdGhlIHVubGlua2VkIGNvZGUuCisgICAgICAg
IEluIEJ5dGVjb2RlR2VuZXJhdG9yIHBoYXNlLCB3ZSBpbnNlcnRlZCBzZXZlcmFsIHNwZWNpYWwg
bWFya2VycyBmb3IgdGhlIGdlbmVyYXRvcnMsIG9wX3NhdmUgYW5kIG9wX3Jlc3VtZS4KKyAgICAg
ICAgVGhlIG9wX3NhdmUsIG9wX3Jlc3VtZSwgYW5kIHRoZSBtZXJnZSBwb2ludCBibG9jayBhcmUg
Y29ubmVjdGVkIGFzIGZvbGxvd3MuCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBvcF9yZXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBeCisgICAgICAgIGVudHJ5IC0+IGdlbmVyYXRvciBzd2l0Y2ggLS0tLT4gb3Bfc2F2ZSAtPiBt
ZXJnZSBwb2ludCAtPiAuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBeCisgICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0t
LT4gb3BfcmVzdW1lIC0tLS0tKworCisgICAgICAgIEluIHRoZSBnZW5lcmF0b3JpZmljYXRpb24g
cGhhc2UsIHdlIHR1cm4gb3V0IHdoaWNoIHZhcmlhYmxlcyBzaG91bGQgYmUgc2F2ZWQgYW5kIHJl
c3VtZWQgYXQgZWFjaCBvcF9zYXZlIGFuZCBvcF9yZXN1bWUsIGFuZCBjb252ZXJ0IHRoZXNlIGJ5
dGVjb2RlcworICAgICAgICB0byB0aGUgc2VxdWVuY2VzIG9mIHRoZSBnZXRfZnJvbV9zY29wZSBh
bmQgcHV0X3RvX3Njb3BlLiBUaGUgcmVnaXN0ZXJzIGFyZSBzYXZlZCBhbmQgcmVzdW1lZCBvdmVy
IHRoZSBnZW5lcmF0b3IncyBuZXh0KCkgY2FsbHMgYnkgdXNpbmcgdGhpcyBzcGVjaWFsCisgICAg
ICAgIGdlbmVyYXRvciBmcmFtZSBzY29wZS4KKworICAgICAgICBJbiB0aGUgZ2VuZXJhdG9yaWZp
Y2F0aW9uIHBoYXNlLAorCisgICAgICAgIDEuIFdlIGNvbnN0cnVjdCB0aGUgQnl0ZWNvZGVHcmFw
aCBmcm9tIHRoZSB1bmxpbmtlZCBpbnN0cnVjdGlvbnMuIFRoaXMgY29uc3RydWN0cyB0aGUgYmFz
aWMgYmxvY2tzLCBhbmQgaXQgaXMgdXNlZCBpbiB0aGUgc3Vic2VxdWVudCBhbmFseXNpcy4KKyAg
ICAgICAgMi4gV2UgcGVyZm9ybSB0aGUgYW5hbHlzaXMgb250byB0aGUgdW5saW5rZWQgY29kZS4g
V2UgaGF2ZSAzIGFuYWx5c2lzOiB0aGUgbGl2ZW5lc3MgYW5hbHlzaXMsIHRoZSBzYXZlZCB2YXJp
YWJsZXMgYW5hbHlzaXMsIGFuZCB0aGUgcmVzdW1lZCB2YXJpYWJsZXMgYW5hbHlzaXMuCisgICAg
ICAgICAgIEZpcnN0LCBpbiB0aGUgbGl2ZW5lc3MgYW5hbHlzaXMsIHdlIGV4dHJhY3QgdGhlIGxp
dmUgdmFyaWFibGVzIGF0IGVhY2ggbWVyZ2UgcG9pbnQuIFRoZXNlIHZhcmlhYmxlcyBzaG91bGQg
YmUgY29uc2lkZXJlZCBhcyB0aGUgY29uc2VydmF0aXZlIHJlZ2lzdGVycworICAgICAgICAgICB0
byBiZSBzYXZlZCBhbmQgcmVzdW1lZCBhdCBlYWNoIHBvaW50LgorICAgICAgICAzLiBXZSBpbnNl
cnQgdGhlIGdldF9mcm9tX3Njb3BlIGFuZCBwdXRfdG9fc2NvcGUgYXQgZWFjaCBvcF9zYXZlIGFu
ZCBvcF9yZXN1bWUuIFdoaWNoIHJlZ2lzdGVycyBzaG91bGQgYmUgc2F2ZWQgYW5kIHJlc3VtZWQg
aXMgb2ZmZXJlZCBieSAoMikuCisgICAgICAgICAgIFRoZW4sIGNsaXAgdGhlIG9wX3NhdmUgYW5k
IG9wX3Jlc3VtZSB0aGVtc2VsdmVzLiBUaGV5IGFyZSBleGVjdXRlZCBpbiBhIGJhdGNoIG1hbm5l
ciBieSBCeXRlY29kZVJld3JpdGVyLiBTaW5jZSB0aGVzZSBtb2RpZmljYXRpb24gY2hhbmdlcyB0
aGUgYmFzaWMgYmxvY2tzCisgICAgICAgICAgIGFuZCBzaXplIG9mIHVubGlua2VkIGluc3RydWN0
aW9ucywgQnl0ZWNvZGVSZXdyaXRlciBhbHNvIHBlcmZvcm1zIHRoZSBvZmZzZXQgYWRqdXN0bWVu
dCBmb3IgVW5saW5rZWRDb2RlQmxvY2suIFNvLCB0aGlzIEJ5dGVjb2RlUmV3cml0ZXIgaXMgcGVy
Zm9ybWVkCisgICAgICAgICAgIG9udG8gdGhlIEJ5dGVjb2RlR3JhcGggaW5zdGVhZCBvZiBCeXRl
Y29kZUJhc2ljQmxvY2suIFRoZSByZWFzb24gd2h5IHdlIHRha2UgdGhpcyBkZXNpZ24gaXMgc2lt
cGxlOiB3ZSBkb24ndCB3YW50IHRvIG5ld2x5IGNyZWF0ZSB0aGUgYmFzaWMgYmxvY2tzIGFuZCBv
cGNvZGVzCisgICAgICAgICAgIGZvciB0aGlzIGVhcmx5IHBoYXNlIGxpa2UgREZHLiBJbnN0ZWFk
LCB3ZSBwZXJmb3JtIHRoZSBtb2RpZmljYXRpb24gYW5kIGFkanVzdG1lbnQgdG8gdGhlIHVubGlu
a2VkIGluc3RydWN0aW9ucyBhbmQgVW5saW5rZWRDb2RlQmxvY2sgaW4gYSBpbi1wbGFjZSBtYW5u
ZXIuCisKKyAgICAgICAgQWZ0ZXIgdGhhdCBwaGFzZSwgdGhlIGRhdGEgZmxvdyBvZiB0aGUgZ2Vu
ZXJhdG9yLXNhdmVkLWFuZC1yZXN1bWVkLXJlZ2lzdGVycyBhcmUgZXhwbGljaXRseSByZXByZXNl
bnRlZCBieSB0aGUgZ2V0X2Zyb21fc2NvcGUgYW5kIHB1dF90b19zY29wZS4KKyAgICAgICAgQW5k
IG9wX3NhdmUgYW5kIG9wX3Jlc3VtZSBhcmUgcmVtb3ZlZC4gU2luY2Ugd2UgdXNlIHRoZSBleGlz
dGluZyBieXRlY29kZXMsIERGRyBhbmQgRlRMIGNoYW5nZXMgYXJlIG5vdCBuZWNlc3NhcnkuCisg
ICAgICAgIFRoaXMgcGF0Y2ggYWxzbyBkcm9wcyBkYXRhIHN0cnVjdHVyZXMgYW5kIGltcGxlbWVu
dGF0aW9ucyBmb3IgdGhlIG9sZCBnZW5lcmF0b3IsIG9wX3Jlc3VtZSwgb3Bfc2F2ZSBpbXBsZW1l
bnRhdGlvbnMgYW5kIEdlbmVyYXRvckZyYW1lLgorCisgICAgICAgIE5vdGUgdGhhdCB0aGlzIHBh
dGNoIGRvZXMgbm90IGxldmVyYWdlIHRoZSByZWNlbnQgbXVsdGkgZW50cnlwb2ludHMgc3VwcG9y
dCBpbiBCMy4gQWZ0ZXIgdGhpcyBwYXRjaCBpcyBpbnRyb2R1Y2VkLCB3ZSB3aWxsIHN1Ym1pdCBh
IG5ldyBwYXRjaCB0aGF0IGxldmVyYWdlcyB0aGUgbXVsdGkKKyAgICAgICAgZW50cnlwb2ludHMg
Zm9yIGdlbmVyYXRvcidzIHJlc3VtZSBhbmQgc2VlcyB0aGUgcGVyZm9ybWFuY2UgZ2Fpbi4KKwor
ICAgICAgICBUT0RPOiBQZXJmIFRCQSBoZXJlLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6
CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBiMy9CM0Jhc2ljQmxvY2tVdGlscy5oOgorICAgICAgICAqIGIzL0IzQmxvY2tXb3Jr
bGlzdC5oOgorICAgICAgICAqIGIzL0IzQ0ZHLmg6CisgICAgICAgICogYjMvQjNEdXBsaWNhdGVU
YWlscy5jcHA6CisgICAgICAgICogYjMvQjNGaXhTU0EuY3BwOgorICAgICAgICAqIGIzL0IzRml4
U1NBLmg6CisgICAgICAgICogYjMvQjNJbmRleE1hcC5oOgorICAgICAgICAoSlNDOjpCMzo6SW5k
ZXhNYXA6OkluZGV4TWFwKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkluZGV4TWFwOjpy
ZXNpemUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6SW5kZXhNYXA6OmNsZWFyKTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkluZGV4TWFwOjpzaXplKTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6QjM6OkluZGV4TWFwOjpvcGVyYXRvcltdKTogRGVsZXRlZC4KKyAgICAgICAgKiBi
My9CM0luZGV4U2V0Lmg6CisgICAgICAgIChKU0M6OkIzOjpJbmRleFNldDo6SW5kZXhTZXQpOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6SW5kZXhTZXQ6OmFkZCk6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OkIzOjpJbmRleFNldDo6YWRkQWxsKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
QjM6OkluZGV4U2V0OjpyZW1vdmUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6SW5kZXhT
ZXQ6OmNvbnRhaW5zKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkluZGV4U2V0OjpzaXpl
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkluZGV4U2V0Ojppc0VtcHR5KTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6QjM6OkluZGV4U2V0OjpJdGVyYWJsZTo6SXRlcmFibGUpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpCMzo6SW5kZXhTZXQ6Okl0ZXJhYmxlOjppdGVyYXRvcjo6aXRl
cmF0b3IpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6SW5kZXhTZXQ6Okl0ZXJhYmxlOjpp
dGVyYXRvcjo6b3BlcmF0b3IqKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkluZGV4U2V0
OjpJdGVyYWJsZTo6aXRlcmF0b3I6Om9wZXJhdG9yKyspOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpCMzo6SW5kZXhTZXQ6Okl0ZXJhYmxlOjppdGVyYXRvcjo6b3BlcmF0b3I9PSk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OkIzOjpJbmRleFNldDo6SXRlcmFibGU6Oml0ZXJhdG9yOjpvcGVyYXRv
ciE9KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkluZGV4U2V0OjpJdGVyYWJsZTo6YmVn
aW4pOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6SW5kZXhTZXQ6Okl0ZXJhYmxlOjplbmQp
OiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6SW5kZXhTZXQ6OnZhbHVlcyk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OkIzOjpJbmRleFNldDo6aW5kaWNlcyk6IERlbGV0ZWQuCisgICAgICAg
IChKU0M6OkIzOjpJbmRleFNldDo6ZHVtcCk6IERlbGV0ZWQuCisgICAgICAgICogYjMvQjNMb3dl
clRvQWlyLmNwcDoKKyAgICAgICAgKiBiMy9CM1BoaUNoaWxkcmVuLmg6CisgICAgICAgICogYjMv
QjNQcm9jZWR1cmUuaDoKKyAgICAgICAgKEpTQzo6QjM6OlByb2NlZHVyZTo6aXRlcmF0b3I6Oml0
ZXJhdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OlByb2NlZHVyZTo6aXRlcmF0b3I6
Om9wZXJhdG9yKik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpQcm9jZWR1cmU6Oml0ZXJh
dG9yOjpvcGVyYXRvcisrKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OlByb2NlZHVyZTo6
aXRlcmF0b3I6Om9wZXJhdG9yPT0pOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6UHJvY2Vk
dXJlOjppdGVyYXRvcjo6b3BlcmF0b3IhPSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpQ
cm9jZWR1cmU6Oml0ZXJhdG9yOjpmaW5kTmV4dCk6IERlbGV0ZWQuCisgICAgICAgICogYjMvQjNS
ZWR1Y2VEb3VibGVUb0Zsb2F0LmNwcDoKKyAgICAgICAgKiBiMy9CM1JlZHVjZVN0cmVuZ3RoLmNw
cDoKKyAgICAgICAgKiBiMy9CM1NTQUNhbGN1bGF0b3IuaDoKKyAgICAgICAgKiBiMy9CM1VzZUNv
dW50cy5oOgorICAgICAgICAqIGIzL2Fpci9BaXJDb2RlLmg6CisgICAgICAgICogYjMvYWlyL0Fp
ckVsaW1pbmF0ZURlYWRDb2RlLmNwcDoKKyAgICAgICAgKiBiMy9haXIvQWlyRml4T2J2aW91c1Nw
aWxscy5jcHA6CisgICAgICAgICogYjMvYWlyL0FpckZpeFBhcnRpYWxSZWdpc3RlclN0YWxscy5j
cHA6CisgICAgICAgICogYjMvYWlyL0FpckdlbmVyYXRlLmNwcDoKKyAgICAgICAgKiBiMy9haXIv
QWlyR2VuZXJhdGlvbkNvbnRleHQuaDoKKyAgICAgICAgKiBiMy9haXIvQWlyTGl2ZW5lc3MuaDoK
KyAgICAgICAgKiBiMy9haXIvQWlyU3BpbGxFdmVyeXRoaW5nLmNwcDoKKyAgICAgICAgKiBidWls
dGlucy9HZW5lcmF0b3JQcm90b3R5cGUuanM6CisgICAgICAgIChnbG9iYWxQcml2YXRlLmdlbmVy
YXRvclJlc3VtZSk6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcDoK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVCYXNpY0Jsb2NrOjpjb21wdXRlQnl0ZWNvZGVCYXNpY0Js
b2Nrc0ludGVybmFsKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVCYXNpY0Jsb2NrOjpjb21wdXRl
Qnl0ZWNvZGVCYXNpY0Jsb2Nrcyk6CisgICAgICAgIChKU0M6OmxpbmtCbG9ja3MpOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2Nrcyk6IERlbGV0ZWQuCisg
ICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmg6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlQmFzaWNCbG9jazo6Ynl0ZWNvZGVPZmZzZXRzKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNv
ZGVCYXNpY0Jsb2NrOjpzdWNjZXNzb3JzKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVCYXNpY0Js
b2NrOjpwcmVkZWNlc3NvcnMpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUJhc2ljQmxvY2s6Omlu
ZGV4KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVCYXNpY0Jsb2NrOjphZGRTdWNjZXNzb3IpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUJhc2ljQmxvY2s6OmFkZFByZWRlY2Vzc29yKToKKyAgICAg
ICAgKiBieXRlY29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHA6IEFkZGVkLgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbjo6Qnl0ZWNvZGVHZW5lcmF0b3Jp
ZmljYXRpb24pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbjo6Z3Jh
cGgpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbjo6eWllbGRzKToK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb246OnN0b3JhZ2VGb3JHZW5l
cmF0b3JMb2NhbCk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckxpdmVuZXNzQW5hbHlzaXM6Okdl
bmVyYXRvckxpdmVuZXNzQW5hbHlzaXMpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JMaXZlbmVz
c0FuYWx5c2lzOjpjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6
R2VuZXJhdG9yTGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCk6
CisgICAgICAgIChKU0M6OkdlbmVyYXRvckxpdmVuZXNzQW5hbHlzaXM6OnJ1bik6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uOjpydW4pOgorICAgICAgICAoSlNDOjpw
ZXJmb3JtR2VuZXJhdG9yaWZpY2F0aW9uKToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUdl
bmVyYXRvcmlmaWNhdGlvbi5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzSW5saW5lcy5oLgorICAgICAgICAqIGJ5dGVj
b2RlL0J5dGVjb2RlR3JhcGguaDogQWRkZWQuCisgICAgICAgIChKU0M6OkJ5dGVjb2RlR3JhcGg6
OmNvZGVCbG9jayk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR3JhcGg6Omluc3RydWN0aW9ucyk6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR3JhcGg6OmJhc2ljQmxvY2tzSW5SZXZlcnNlT3JkZXIp
OgorICAgICAgICAoSlNDOjpCeXRlY29kZUdyYXBoOjpibG9ja0NvbnRhaW5zQnl0ZWNvZGVPZmZz
ZXQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdyYXBoOjpmaW5kQmFzaWNCbG9ja0ZvckJ5dGVj
b2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHcmFwaDo6ZmluZEJhc2ljQmxvY2tX
aXRoTGVhZGVyT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHcmFwaDo6c2l6ZSk6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR3JhcGg6OmF0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVH
cmFwaDo6b3BlcmF0b3JbXSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR3JhcGg6OmJlZ2luKToK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHcmFwaDo6ZW5kKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNv
ZGVHcmFwaDo6Zmlyc3QpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdyYXBoOjpsYXN0KToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVHcmFwaDxCbG9jaz46OkJ5dGVjb2RlR3JhcGgpOgorICAgICAg
ICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHA6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzKToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlRGVmc0ZvckJ5dGVj
b2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpjb21w
dXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVz
c0FuYWx5c2lzOjpydW5MaXZlbmVzc0ZpeHBvaW50KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVM
aXZlbmVzc0FuYWx5c2lzOjpnZXRMaXZlbmVzc0luZm9BdEJ5dGVjb2RlT2Zmc2V0KToKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlRnVsbExpdmVuZXNzKToK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlS2lsbHMpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmR1bXBSZXN1bHRzKToKKyAg
ICAgICAgKEpTQzo6aXNWYWxpZFJlZ2lzdGVyRm9yTGl2ZW5lc3MpOiBEZWxldGVkLgorICAgICAg
ICAoSlNDOjpnZXRMZWFkZXJPZmZzZXRGb3JCYXNpY0Jsb2NrKTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6ZmluZEJhc2ljQmxvY2tXaXRoTGVhZGVyT2Zmc2V0KTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6YmxvY2tDb250YWluc0J5dGVjb2RlT2Zmc2V0KTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6ZmluZEJhc2ljQmxvY2tGb3JCeXRlY29kZU9mZnNldCk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OnN0ZXBPdmVySW5zdHJ1Y3Rpb24pOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpjb21wdXRl
TG9jYWxMaXZlbmVzc0ZvckJ5dGVjb2RlT2Zmc2V0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
Y29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCbG9jayk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkJ5
dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0ZSk6IERlbGV0ZWQuCisgICAgICAgICogYnl0
ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmg6CisgICAgICAgICogYnl0ZWNvZGUvQnl0
ZWNvZGVMaXZlbmVzc0FuYWx5c2lzSW5saW5lcy5oOgorICAgICAgICAoSlNDOjppc1ZhbGlkUmVn
aXN0ZXJGb3JMaXZlbmVzcyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlTGl2ZW5lc3NMb2NhbFBy
b3BhZ2F0aW9uPERlcml2ZWRBbmFseXNpcz46OnN0ZXBPdmVySW5zdHJ1Y3Rpb24pOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzTG9jYWxQcm9wYWdhdGlvbjxEZXJpdmVkQW5hbHlzaXM+
Ojpjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVMaXZlbmVzc0xvY2FsUHJvcGFnYXRpb248RGVyaXZlZEFuYWx5c2lzPjo6Y29tcHV0
ZUxvY2FsTGl2ZW5lc3NGb3JCbG9jayk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlTGl2ZW5lc3NM
b2NhbFByb3BhZ2F0aW9uPERlcml2ZWRBbmFseXNpcz46OmdldExpdmVuZXNzSW5mb0F0Qnl0ZWNv
ZGVPZmZzZXQpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlUmV3cml0ZXIuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVSZXdyaXRlcjo6YWRqdXN0T2Zmc2V0KToKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVSZXdyaXRlcjo6YXBwbHlNb2RpZmljYXRpb24pOgorICAgICAgICAo
SlNDOjpCeXRlY29kZVJld3JpdGVyOjpleGVjdXRlKToKKyAgICAgICAgKiBieXRlY29kZS9CeXRl
Y29kZVJld3JpdGVyLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpCeXRlY29kZVJld3JpdGVyOjpC
eXRlY29kZVJld3JpdGVyKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVSZXdyaXRlcjo6aW5zZXJ0
KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVSZXdyaXRlcjo6aW5zZXJ0QmVmb3JlKToKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVSZXdyaXRlcjo6cmVtb3ZlQnl0ZWNvZGUpOgorICAgICAgICAoSlND
OjpCeXRlY29kZVJld3JpdGVyOjpncmFwaCk6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVV
c2VEZWYuaDoKKyAgICAgICAgKEpTQzo6Y29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCk6Cisg
ICAgICAgIChKU0M6OmNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAqIGJ5
dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluaXNoQ3Jl
YXRpb24pOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmhhbmRsZXJGb3JJbmRleCk6CisgICAg
ICAgIChKU0M6OkNvZGVCbG9jazo6dmFsdWVQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2s6OmxpdmVuZXNzQW5hbHlzaXNTbG93KToKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpDb2Rl
QmxvY2s6OnNocmlua1RvRml0KTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxv
Y2suaDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjppc0NvbnN0YW50UmVnaXN0ZXJJbmRleCk6
CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bGl2ZW5lc3NBbmFseXNpcyk6CisgICAgICAgIChK
U0M6OkNvZGVCbG9jazo6bGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQpOiBEZWxldGVkLgorICAgICAg
ICAqIGJ5dGVjb2RlL0hhbmRsZXJJbmZvLmg6CisgICAgICAgIChKU0M6OkhhbmRsZXJJbmZvQmFz
ZTo6aGFuZGxlckZvckluZGV4KToKKyAgICAgICAgKiBieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdl
dHMuY3BwOgorICAgICAgICAoSlNDOjpnZXRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KToK
KyAgICAgICAgKEpTQzo6Y29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0c0ludGVybmFsKToKKyAgICAg
ICAgKEpTQzo6Y29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyk6CisgICAgICAgIChKU0M6OnJlY29t
cHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyk6CisgICAgICAgIChKU0M6OmZpbmRKdW1wVGFyZ2V0c0Zv
ckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKiBieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHMu
aDoKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHA6CisgICAgICAgIChK
U0M6OlVubGlua2VkQ29kZUJsb2NrOjpoYW5kbGVyRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAg
ICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6aGFuZGxlckZvckluZGV4KToKKyAgICAgICAgKEpT
Qzo6VW5saW5rZWRDb2RlQmxvY2s6OmFwcGx5TW9kaWZpY2F0aW9uKToKKyAgICAgICAgKiBieXRl
Y29kZS9VbmxpbmtlZENvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpVbmxpbmtlZFN0cmluZ0p1
bXBUYWJsZTo6b2Zmc2V0Rm9yVmFsdWUpOgorICAgICAgICAqIGJ5dGVjb2RlL1ZpcnR1YWxSZWdp
c3Rlci5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZSk6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0Q29tcGxleFBvcFNjb3Blcyk6CisgICAgICAgIChKU0M6OnBy
ZXBhcmVKdW1wVGFibGVGb3JTdHJpbmdTd2l0Y2gpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdFlpZWxkUG9pbnQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRv
cjo6ZW1pdFNhdmUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlc3Vt
ZSk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0b3JTdGF0ZVJlZ2lzdGVyKToKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRvclZhbHVlUmVnaXN0ZXIpOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVy
KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRvckZyYW1lUmVnaXN0
ZXIpOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBnZW5lcmF0
ZS1ieXRlY29kZS1maWxlczoKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6
CisgICAgICAgIChKU0M6OmZpbmRFeGNlcHRpb25IYW5kbGVyKToKKyAgICAgICAgKEpTQzo6R2V0
Q2F0Y2hIYW5kbGVyRnVuY3Rvcjo6b3BlcmF0b3IoKSk6CisgICAgICAgIChKU0M6OlVud2luZEZ1
bmN0b3I6Om9wZXJhdG9yKCkpOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmg6
CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXJJbmxpbmVzLmg6IENvcGllZCBmcm9t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHMuaC4KKyAg
ICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmdldE9wY29kZUlEKToKKyAgICAgICAgKiBqaXQvSklU
LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBqaXQvSklULmg6CisgICAgICAgICogaml0L0pJVE9wY29kZXMuY3BwOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bfc2F2ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdF9vcF9yZXN1bWUpOiBEZWxldGVkLgorICAgICAgICAqIGxsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXIuYXNtOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAgICAo
SlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJbm5lcik6CisgICAgICAgIChKU0M6OlBhcnNl
cjxMZXhlclR5cGU+OjpwYXJzZUdlbmVyYXRvckZ1bmN0aW9uU291cmNlRWxlbWVudHMpOgorICAg
ICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6Y3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyk6
CisgICAgICAgICogcGFyc2VyL1BhcnNlci5oOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xv
d1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6U0xPV19QQVRIX0RFQ0wpOiBEZWxldGVkLgorICAg
ICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmg6CisgICAgICAgICogcnVudGltZS9HZW5l
cmF0b3JGcmFtZS5jcHA6IFJlbW92ZWQuCisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpH
ZW5lcmF0b3JGcmFtZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpm
aW5pc2hDcmVhdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpj
cmVhdGVTdHJ1Y3R1cmUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6
Y3JlYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OnNhdmUpOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6cmVzdW1lKTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OnZpc2l0Q2hpbGRyZW4pOiBEZWxldGVkLgor
ICAgICAgICAqIHJ1bnRpbWUvR2VuZXJhdG9yRnJhbWUuaDogUmVtb3ZlZC4KKyAgICAgICAgKEpT
Qzo6R2VuZXJhdG9yRnJhbWU6OmxvY2Fscyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkdlbmVy
YXRvckZyYW1lOjpsb2NhbEF0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJh
bWU6Om9mZnNldE9mTG9jYWxzKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJh
bWU6OmFsbG9jYXRpb25TaXplRm9yTG9jYWxzKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1l
L0pTR2VuZXJhdG9yRnVuY3Rpb24uaDoKKyAgICAgICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAg
ICAgKEpTQzo6Vk06OlZNKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisKIDIw
MTYtMDgtMTkgIEJlbmphbWluIFBvdWxhaW4gIDxicG91bGFpbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgW0pTQ10gQXJpdGhTcXJ0IHNob3VsZCB3b3JrIHdpdGggYW55IGFyZ3VtZW50IHR5cGUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5k
ZXggMDUxNjFiMjEzY2QzYzQwYjRhMjMyZDYyMTc1YTBlYTFlNzQ2ODE0Ni4uNGU3ZTI4NjI4MmY4
MjA2ZmJhMjI1YjFlNDJjYjllZGI5ZGI1MTMzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NiBAQAorMjAxNi0w
OC0xOSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBb
REZHXVtGVExdIEltcGxlbWVudCBFUzYgR2VuZXJhdG9ycyBpbiBERkcgLyBGVEwKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MjcyMworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV1RGLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogd3RmL0NNYWtlTGlzdHMudHh0OgorICAgICAgICAq
IHd0Zi9GYXN0Qml0VmVjdG9yLmg6CisgICAgICAgIChXVEY6OkZhc3RCaXRWZWN0b3I6OkZhc3RC
aXRWZWN0b3IpOgorICAgICAgICAqIHd0Zi9JbmRleE1hcC5oOiBDb3BpZWQgZnJvbSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNJbmRleE1hcC5oLgorICAgICAgICAoV1RGOjpJbmRleE1hcDo6
SW5kZXhNYXApOgorICAgICAgICAoV1RGOjpJbmRleE1hcDo6cmVzaXplKToKKyAgICAgICAgKFdU
Rjo6SW5kZXhNYXA6OmNsZWFyKToKKyAgICAgICAgKFdURjo6SW5kZXhNYXA6OnNpemUpOgorICAg
ICAgICAoV1RGOjpJbmRleE1hcDo6b3BlcmF0b3JbXSk6CisgICAgICAgICogd3RmL0luZGV4U2V0
Lmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNJbmRleFNldC5oLgor
ICAgICAgICAoV1RGOjpJbmRleFNldDo6SW5kZXhTZXQpOgorICAgICAgICAoV1RGOjpJbmRleFNl
dDo6YWRkKToKKyAgICAgICAgKFdURjo6SW5kZXhTZXQ6OmFkZEFsbCk6CisgICAgICAgIChXVEY6
OkluZGV4U2V0OjpyZW1vdmUpOgorICAgICAgICAoV1RGOjpJbmRleFNldDo6Y29udGFpbnMpOgor
ICAgICAgICAoV1RGOjpJbmRleFNldDo6c2l6ZSk6CisgICAgICAgIChXVEY6OkluZGV4U2V0Ojpp
c0VtcHR5KToKKyAgICAgICAgKFdURjo6SW5kZXhTZXQ6Okl0ZXJhYmxlOjpJdGVyYWJsZSk6Cisg
ICAgICAgIChXVEY6OkluZGV4U2V0OjpJdGVyYWJsZTo6aXRlcmF0b3I6Oml0ZXJhdG9yKToKKyAg
ICAgICAgKFdURjo6SW5kZXhTZXQ6Okl0ZXJhYmxlOjppdGVyYXRvcjo6b3BlcmF0b3IqKToKKyAg
ICAgICAgKFdURjo6SW5kZXhTZXQ6Okl0ZXJhYmxlOjppdGVyYXRvcjo6b3BlcmF0b3IrKyk6Cisg
ICAgICAgIChXVEY6OkluZGV4U2V0OjpJdGVyYWJsZTo6aXRlcmF0b3I6Om9wZXJhdG9yPT0pOgor
ICAgICAgICAoV1RGOjpJbmRleFNldDo6SXRlcmFibGU6Oml0ZXJhdG9yOjpvcGVyYXRvciE9KToK
KyAgICAgICAgKFdURjo6SW5kZXhTZXQ6Okl0ZXJhYmxlOjpiZWdpbik6CisgICAgICAgIChXVEY6
OkluZGV4U2V0OjpJdGVyYWJsZTo6ZW5kKToKKyAgICAgICAgKFdURjo6SW5kZXhTZXQ6OnZhbHVl
cyk6CisgICAgICAgIChXVEY6OkluZGV4U2V0OjppbmRpY2VzKToKKyAgICAgICAgKFdURjo6SW5k
ZXhTZXQ6OmR1bXApOgorICAgICAgICAqIHd0Zi9JbmRleGVkQ29udGFpbmVySXRlcmF0b3IuaDog
UmVuYW1lZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0luZGV4TWFwLmguCisgICAg
ICAgIChXVEY6OkluZGV4ZWRDb250YWluZXJJdGVyYXRvcjo6SW5kZXhlZENvbnRhaW5lckl0ZXJh
dG9yKToKKyAgICAgICAgKFdURjo6SW5kZXhlZENvbnRhaW5lckl0ZXJhdG9yOjpvcGVyYXRvcisr
KToKKyAgICAgICAgKFdURjo6SW5kZXhlZENvbnRhaW5lckl0ZXJhdG9yOjpvcGVyYXRvcj09KToK
KyAgICAgICAgKFdURjo6SW5kZXhlZENvbnRhaW5lckl0ZXJhdG9yOjpvcGVyYXRvciE9KToKKyAg
ICAgICAgKFdURjo6SW5kZXhlZENvbnRhaW5lckl0ZXJhdG9yOjpmaW5kTmV4dCk6CisKIDIwMTYt
MDgtMTcgIERvbiBPbG1zdGVhZCAgPGRvbi5vbG1zdGVhZEBhbS5zb255LmNvbT4KIAogICAgICAg
ICBVc2UgZmluZF9saWJyYXJ5IHdpdGhpbiBXaW5kb3dzIGJ1aWxkCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q01ha2VMaXN0cy50eHQKaW5kZXggM2VkNTRiODE3MjY4MThhMDg4NGNkYzMyNWNmMTdkZDI1YjJl
YmU2MS4uM2JlZjQyY2Y4MmFkMGU3N2Q4NTY0MDFjOTM3MGRlMDEzMDg1MjM5MCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTgxLDYgKzE4MSw4IEBAIHNldChKYXZhU2Ny
aXB0Q29yZV9TT1VSQ0VTCiAgICAgYnl0ZWNvZGUvQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAK
ICAgICBieXRlY29kZS9BcnJheVByb2ZpbGUuY3BwCiAgICAgYnl0ZWNvZGUvQnl0ZWNvZGVCYXNp
Y0Jsb2NrLmNwcAorICAgIGJ5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcAor
ICAgIGJ5dGVjb2RlL0J5dGVjb2RlUmV3cml0ZXIuY3BwCiAgICAgYnl0ZWNvZGUvQnl0ZWNvZGVJ
bnRyaW5zaWNSZWdpc3RyeS5jcHAKICAgICBieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlz
aXMuY3BwCiAgICAgYnl0ZWNvZGUvQ2FsbEVkZ2UuY3BwCkBAIC02NjEsNyArNjYzLDYgQEAgc2V0
KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBydW50aW1lL0Z1bmN0aW9uSGFzRXhlY3V0ZWRD
YWNoZS5jcHAKICAgICBydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcAogICAgIHJ1bnRpbWUv
RnVuY3Rpb25SYXJlRGF0YS5jcHAKLSAgICBydW50aW1lL0dlbmVyYXRvckZyYW1lLmNwcAogICAg
IHJ1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKICAgICBydW50aW1lL0dl
bmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcAogICAgIHJ1bnRpbWUvR2VuZXJhdG9yUHJvdG90
eXBlLmNwcApAQCAtOTc5LDYgKzk4MCwxMCBAQCBhZGRfY3VzdG9tX2NvbW1hbmQoCiAgICAgQ09N
TUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vZ2VuZXJhdGUt
Ynl0ZWNvZGUtZmlsZXMgLS1ieXRlY29kZXNfaCAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBU
Q09SRV9ESVJ9L0J5dGVjb2Rlcy5oIC0taW5pdF9ieXRlY29kZXNfYXNtICR7REVSSVZFRF9TT1VS
Q0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5pdEJ5dGVjb2Rlcy5hc20gJHtKQVZBU0NSSVBUQ09S
RV9ESVJ9L2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCiAgICAgVkVSQkFUSU0pCiAKK2xpc3Qo
QVBQRU5EIEphdmFTY3JpcHRDb3JlX0hFQURFUlMKKyAgICAke0RFUklWRURfU09VUkNFU19KQVZB
U0NSSVBUQ09SRV9ESVJ9L0J5dGVjb2Rlcy5oCispCisKIGFkZF9jdXN0b21fY29tbWFuZCgKICAg
ICBPVVRQVVQgJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9MTEludERlc2ly
ZWRPZmZzZXRzLmgKICAgICBNQUlOX0RFUEVOREVOQ1kgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L29m
ZmxpbmVhc20vZ2VuZXJhdGVfb2Zmc2V0X2V4dHJhY3Rvci5yYgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2og
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCBlYTAzY2I2MmI4ZTEzOGZiOWJjYjM1ZmYxNmYzOTY3MjAxNTI4YTQxLi5h
M2RkYWRkM2UwNWFiZDlhMDAyMGUwMTc5OWEwNzgzYjMwMGI0M2NmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtNzg2LDggKzc4Niw2IEBACiAJCTBGRUM4NTE4MUJEQUNEQUMwMDgw
RkY3NCAvKiBCM0dlbmVyYXRlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGRUM4NENFMUJEQUNEQUMwMDgwRkY3NCAvKiBCM0dlbmVyYXRlLmNwcCAq
LzsgfTsKIAkJMEZFQzg1MTkxQkRBQ0RBQzAwODBGRjc0IC8qIEIzR2VuZXJhdGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRUM4NENGMUJEQUNEQUMw
MDgwRkY3NCAvKiBCM0dlbmVyYXRlLmggKi87IH07CiAJCTBGRUM4NTFBMUJEQUNEQUMwMDgwRkY3
NCAvKiBCM0dlbmVyaWNGcmVxdWVudGVkQmxvY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRUM4NEQwMUJEQUNEQUMwMDgwRkY3NCAvKiBCM0dlbmVy
aWNGcmVxdWVudGVkQmxvY2suaCAqLzsgfTsKLQkJMEZFQzg1MUIxQkRBQ0RBQzAwODBGRjc0IC8q
IEIzSW5kZXhNYXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGRUM4NEQxMUJEQUNEQUMwMDgwRkY3NCAvKiBCM0luZGV4TWFwLmggKi87IH07Ci0JCTBG
RUM4NTFDMUJEQUNEQUMwMDgwRkY3NCAvKiBCM0luZGV4U2V0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkVDODREMjFCREFDREFDMDA4MEZGNzQgLyog
QjNJbmRleFNldC5oICovOyB9OwogCQkwRkVDODUxRDFCREFDREFDMDA4MEZGNzQgLyogQjNMb3dl
clRvQWlyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGRUM4NEQzMUJEQUNEQUMwMDgwRkY3NCAvKiBCM0xvd2VyVG9BaXIuY3BwICovOyB9OwogCQkw
RkVDODUxRTFCREFDREFDMDA4MEZGNzQgLyogQjNMb3dlclRvQWlyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkVDODRENDFCREFDREFDMDA4MEZGNzQg
LyogQjNMb3dlclRvQWlyLmggKi87IH07CiAJCTBGRUM4NTFGMUJEQUNEQUMwMDgwRkY3NCAvKiBC
M01lbW9yeVZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGRUM4NEQ1MUJEQUNEQUMwMDgwRkY3NCAvKiBCM01lbW9yeVZhbHVlLmNwcCAqLzsg
fTsKQEAgLTEyNzIsOCArMTI3MCw2IEBACiAJCTcwOUZCODZDMUFFMzM1QzYwMDM5RDA2OSAvKiBX
ZWFrU2V0UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3MDlGQjg2NjFBRTMzNUM2MDAzOUQwNjkgLyogV2Vha1NldFByb3RvdHlwZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcwQjBBOUQx
MUE5QjY2NDYwMDAxMzA2QSAvKiBSdW50aW1lRmxhZ3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwQjBBOUQwMUE5QjY2MjAwMDAxMzA2QSAvKiBSdW50
aW1lRmxhZ3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk3MEI3OTE5MTFDMDI0QTEzMDAyNDgxRTIgLyogU291cmNlQ29kZUtleS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBCNzkxOEUxQzAyNDRDOTAw
MjQ4MUUyIC8qIFNvdXJjZUNvZGVLZXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwotCQk3MEI3OTE5MjFDMDI0QTIzMDAyNDgxRTIgLyogR2VuZXJhdG9y
RnJhbWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NzBCNzkxODMxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZyYW1lLmNwcCAqLzsgfTsKLQkJ
NzBCNzkxOTMxQzAyNEEyODAwMjQ4MUUyIC8qIEdlbmVyYXRvckZyYW1lLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEI3OTE4NDFDMDI0NDMyMDAyNDgx
RTIgLyogR2VuZXJhdG9yRnJhbWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk3MEI3OTE5NDFDMDI0QTI4MDAyNDgxRTIgLyogR2VuZXJhdG9yRnVu
Y3Rpb25Db25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3MEI3OTE4NTFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25D
b25zdHJ1Y3Rvci5jcHAgKi87IH07CiAJCTcwQjc5MTk1MUMwMjRBMjgwMDI0ODFFMiAvKiBHZW5l
cmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3MEI3OTE4NjFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnVu
Y3Rpb25Db25zdHJ1Y3Rvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTcwQjc5MTk2MUMwMjRBMjgwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlv
blByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3MEI3OTE4NzFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5
cGUuY3BwICovOyB9OwpAQCAtMjA0Nyw2ICsyMDQzLDExIEBACiAJCUUxOEUzQTU5MERGOTI3OEMw
MEQ5MEIzNCAvKiBWTS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFMThFM0E1NzBERjkyNzhDMDBEOTBCMzQgLyogVk0uY3BwICovOyB9OwogCQlFMzE4
Q0JDMDFCOEFFRjUxMDBBMjkyOUQgLyogSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMxOENCQkUxQjhBRUY1
MTAwQTI5MjlEIC8qIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmNwcCAqLzsgfTsKIAkJRTMxOENC
QzExQjhBRUY1MTAwQTI5MjlEIC8qIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzE4Q0JCRjFCOEFFRjUxMDBB
MjkyOUQgLyogSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFMzI4REFFNzFEMzhEMDA0MDAxQTI1MjkgLyog
Qnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTNEMjY0MjYxRDM4QzA0MjAwMEJFMTc0IC8qIEJ5dGVjb2Rl
R2VuZXJhdG9yaWZpY2F0aW9uLmNwcCAqLzsgfTsKKwkJRTMyOERBRTgxRDM4RDAwNTAwMUEyNTI5
IC8qIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0QyNjQyNzFEMzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNv
ZGVHZW5lcmF0b3JpZmljYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQlFMzI4REFFOTFEMzhEMDA1MDAxQTI1MjkgLyogQnl0ZWNvZGVHcmFw
aC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNEMjY0
MjgxRDM4QzA0MjAwMEJFMTc0IC8qIEJ5dGVjb2RlR3JhcGguaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFMzI4REFFQTFEMzhEMDA1MDAxQTI1Mjkg
LyogQnl0ZWNvZGVSZXdyaXRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFM0QyNjQyOTFEMzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNvZGVSZXdyaXRl
ci5jcHAgKi87IH07CisJCUUzMjhEQUVCMUQzOEQwMDUwMDFBMjUyOSAvKiBCeXRlY29kZVJld3Jp
dGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0Qy
NjQyQTFEMzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNvZGVSZXdyaXRlci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzMzYzN0E1MUI2MzIyMDIwMEVF
MDg0MCAvKiBSZWZsZWN0T2JqZWN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEUzMzYzN0EzMUI2MzIyMDIwMEVFMDg0MCAvKiBSZWZsZWN0T2JqZWN0
LmNwcCAqLzsgfTsKIAkJRTMzNjM3QTYxQjYzMjIwMjAwRUUwODQwIC8qIFJlZmxlY3RPYmplY3Qu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMzYzN0E0
MUI2MzIyMDIwMEVFMDg0MCAvKiBSZWZsZWN0T2JqZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTMzQjNFMjYxQjdBQkQ3NTAwNDhEQjJFIC8q
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5sdXQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzM0IzRTI1MUI3QUJENzUwMDQ4REIyRSAvKiBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QubHV0LmggKi87IH07CkBAIC0yMDcxLDYgKzIw
NzIsNyBAQAogCQlFMzc5NEU3NTFCNzdFQjk3MDA1NTQzQUUgLyogTW9kdWxlQW5hbHl6ZXIuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM3OTRFNzMx
Qjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmNwcCAqLzsgfTsKIAkJRTM3OTRFNzYx
Qjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzc5NEU3NDFCNzdFQjk3MDA1NTQzQUUgLyogTW9k
dWxlQW5hbHl6ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQlFMzk2M0NFRTFCNzNGNzUwMDBFQjRDRTUgLyogTm9kZXNBbmFseXplTW9kdWxlLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOTYzQ0VD
MUI3M0Y3NTAwMEVCNENFNSAvKiBOb2Rlc0FuYWx5emVNb2R1bGUuY3BwICovOyB9OworCQlFMzlE
NDVGNTFEMzkwMDU2MDBCM0IzNzcgLyogSW50ZXJwcmV0ZXJJbmxpbmVzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzlEOUQ4NDFEMzkwMDA2MDA2Njcy
ODIgLyogSW50ZXJwcmV0ZXJJbmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM5REE0QTYxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxl
UmVjb3JkLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUzOURBNEE0MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29yZC5jcHAgKi87IH07CiAJ
CUUzOURBNEE3MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29yZC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5REE0QTUxQjdFOEI3QzAwODRG
MzNBIC8qIEpTTW9kdWxlUmVjb3JkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJRTNEMjM5QzgxQjgyOUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxlRW52
aXJvbm1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTNEMjM5QzYxQjgyOUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxlRW52aXJvbm1lbnQuY3BwICov
OyB9OwpAQCAtMzAxMyw4ICszMDE1LDYgQEAKIAkJMEZFQzg0Q0UxQkRBQ0RBQzAwODBGRjc0IC8q
IEIzR2VuZXJhdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQjNH
ZW5lcmF0ZS5jcHA7IHBhdGggPSBiMy9CM0dlbmVyYXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMEZFQzg0Q0YxQkRBQ0RBQzAwODBGRjc0IC8qIEIzR2VuZXJhdGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQjNHZW5lcmF0ZS5oOyBwYXRoID0gYjMvQjNH
ZW5lcmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkVDODREMDFCREFDREFD
MDA4MEZGNzQgLyogQjNHZW5lcmljRnJlcXVlbnRlZEJsb2NrLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IEIzR2VuZXJpY0ZyZXF1ZW50ZWRCbG9jay5oOyBwYXRoID0gYjMvQjNH
ZW5lcmljRnJlcXVlbnRlZEJsb2NrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTBG
RUM4NEQxMUJEQUNEQUMwMDgwRkY3NCAvKiBCM0luZGV4TWFwLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IEIzSW5kZXhNYXAuaDsgcGF0aCA9IGIzL0IzSW5kZXhNYXAuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMEZFQzg0RDIxQkRBQ0RBQzAwODBGRjc0IC8qIEIz
SW5kZXhTZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQjNJbmRleFNldC5o
OyBwYXRoID0gYjMvQjNJbmRleFNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
RkVDODREMzFCREFDREFDMDA4MEZGNzQgLyogQjNMb3dlclRvQWlyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEIzTG93ZXJUb0Fpci5jcHA7IHBhdGggPSBiMy9CM0xv
d2VyVG9BaXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkVDODRENDFCREFD
REFDMDA4MEZGNzQgLyogQjNMb3dlclRvQWlyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IEIzTG93ZXJUb0Fpci5oOyBwYXRoID0gYjMvQjNMb3dlclRvQWlyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRUM4NEQ1MUJEQUNEQUMwMDgwRkY3NCAvKiBCM01lbW9y
eVZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEIzTWVtb3J5
VmFsdWUuY3BwOyBwYXRoID0gYjMvQjNNZW1vcnlWYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0zNDk2LDggKzM0OTYsNiBAQAogCQk3MDlGQjg2NTFBRTMzNUM2MDAzOUQw
NjkgLyogV2Vha1NldFByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBXZWFrU2V0UHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNzA5RkI4NjYxQUUzMzVDNjAwMzlEMDY5IC8qIFdlYWtTZXRQcm90b3R5cGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vha1NldFByb3RvdHlwZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3MEIwQTlEMDFBOUI2NjIwMDAwMTMwNkEgLyogUnVudGltZUZs
YWdzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJ1bnRpbWVGbGFncy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3MEI3OTE4MzFDMDI0NDMyMDAyNDgxRTIgLyog
R2VuZXJhdG9yRnJhbWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
R2VuZXJhdG9yRnJhbWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3MEI3OTE4
NDFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnJhbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gR2VuZXJhdG9yRnJhbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNzBCNzkxODUxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3Ry
dWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR2VuZXJhdG9y
RnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcw
Qjc5MTg2MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdlbmVyYXRvckZ1bmN0aW9uQ29uc3Ry
dWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzBCNzkxODcxQzAyNDQzMjAw
MjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQzMzcsMTAgKzQzMzUsMTYgQEAKIAkJRTM3OTRF
NzMxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1vZHVsZUFuYWx5emVyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRTM3OTRFNzQxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vZHVsZUFuYWx5emVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOTYzQ0VDMUI3M0Y3NTAwMEVCNENFNSAvKiBO
b2Rlc0FuYWx5emVNb2R1bGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gTm9kZXNBbmFseXplTW9kdWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
RTM5RDlEODQxRDM5MDAwNjAwNjY3MjgyIC8qIEludGVycHJldGVySW5saW5lcy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRlcnByZXRlcklubGluZXMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM5REE0QTQxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxl
UmVjb3JkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTW9kdWxl
UmVjb3JkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM5REE0QTUxQjdFOEI3
QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEpTTW9kdWxlUmVjb3JkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUz
RDIzOUM2MUI4MjlDMUMwMEJCRUY2NyAvKiBKU01vZHVsZUVudmlyb25tZW50LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTW9kdWxlRW52aXJvbm1lbnQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0QyMzlDNzFCODI5QzFDMDBCQkVGNjcgLyog
SlNNb2R1bGVFbnZpcm9ubWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBK
U01vZHVsZUVudmlyb25tZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzRDI2
NDI2MUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCeXRlY29kZUdlbmVyYXRvcmlmaWNh
dGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzRDI2NDI3MUQzOEMwNDIw
MDBCRTE3NCAvKiBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlFM0QyNjQyODFEMzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNvZGVH
cmFwaC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCeXRlY29kZUdyYXBoLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzRDI2NDI5MUQzOEMwNDIwMDBCRTE3NCAv
KiBCeXRlY29kZVJld3JpdGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEJ5dGVjb2RlUmV3cml0ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlF
M0QyNjQyQTFEMzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNvZGVSZXdyaXRlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBCeXRlY29kZVJld3JpdGVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUUzRUY4ODcyMUI2NkRGMjMwMDNGMjZDQiAvKiBKU1Byb3BlcnR5TmFt
ZUl0ZXJhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUHJv
cGVydHlOYW1lSXRlcmF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0VG
ODg3MzFCNjZERjIzMDAzRjI2Q0IgLyogSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0OURDMTQ5MTJFRjI2MUEwMDE4NEExRiAvKiBTb3Vy
Y2VQcm92aWRlckNhY2hlSXRlbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
b3VyY2VQcm92aWRlckNhY2hlSXRlbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
NDgxMiw4ICs0ODE2LDYgQEAKIAkJCQkwRkVDODREMDFCREFDREFDMDA4MEZGNzQgLyogQjNHZW5l
cmljRnJlcXVlbnRlZEJsb2NrLmggKi8sCiAJCQkJMEZFQzg1QkYxQkUxNjdBMDAwODBGRjc0IC8q
IEIzSGVhcFJhbmdlLmNwcCAqLywKIAkJCQkwRkVDODVDMDFCRTE2N0EwMDA4MEZGNzQgLyogQjNI
ZWFwUmFuZ2UuaCAqLywKLQkJCQkwRkVDODREMTFCREFDREFDMDA4MEZGNzQgLyogQjNJbmRleE1h
cC5oICovLAotCQkJCTBGRUM4NEQyMUJEQUNEQUMwMDgwRkY3NCAvKiBCM0luZGV4U2V0LmggKi8s
CiAJCQkJREM2OUI5OUExRDE1RjkwRjAwMkUzQzAwIC8qIEIzSW5mZXJTd2l0Y2hlcy5jcHAgKi8s
CiAJCQkJREM2OUI5OUIxRDE1RjkwRjAwMkUzQzAwIC8qIEIzSW5mZXJTd2l0Y2hlcy5oICovLAog
CQkJCTBGRUM4NUI0MUJFMTQ2MkYwMDgwRkY3NCAvKiBCM0luc2VydGlvblNldC5jcHAgKi8sCkBA
IC01MDY5LDYgKzUwNzEsNyBAQAogCQkxNDI5RDc3QTBFRDIwRDczMDBCODk2MTkgLyogaW50ZXJw
cmV0ZXIgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUUz
OUQ5RDg0MUQzOTAwMDYwMDY2NzI4MiAvKiBJbnRlcnByZXRlcklubGluZXMuaCAqLywKIAkJCQkw
RjU1RjBGMTE0RDEwNjM2MDBBQzc2NDkgLyogQWJzdHJhY3RQQy5jcHAgKi8sCiAJCQkJMEY1NUYw
RjIxNEQxMDYzNjAwQUM3NjQ5IC8qIEFic3RyYWN0UEMuaCAqLywKIAkJCQkxNDI5RDg1QjBFRDIx
OEU5MDBCODk2MTkgLyogQ0xvb3BTdGFjay5jcHAgKi8sCkBAIC01NzQ5LDggKzU3NTIsNiBAQAog
CQkJCUY2OTJBODVEMDI1NTU5N0QwMUZGNjBGNyAvKiBGdW5jdGlvblByb3RvdHlwZS5oICovLAog
CQkJCTYyRDJEMzhEMUFERjEwM0YwMDAyMDZDMSAvKiBGdW5jdGlvblJhcmVEYXRhLmNwcCAqLywK
IAkJCQk2MkQyRDM4RTFBREYxMDNGMDAwMjA2QzEgLyogRnVuY3Rpb25SYXJlRGF0YS5oICovLAot
CQkJCTcwQjc5MTgzMUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGcmFtZS5jcHAgKi8sCi0J
CQkJNzBCNzkxODQxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZyYW1lLmggKi8sCiAJCQkJ
NzBCNzkxODUxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3Iu
Y3BwICovLAogCQkJCTcwQjc5MTg2MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlv
bkNvbnN0cnVjdG9yLmggKi8sCiAJCQkJNzBCNzkxODcxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVy
YXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcCAqLywKQEAgLTY2MzYsNiArNjYzNywxMSBAQAogCQk5
NjlBMDc4RjBFRDFEM0FFMDBGMUY2ODEgLyogYnl0ZWNvZGUgKi8gPSB7CiAJCQlpc2EgPSBQQlhH
cm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUUzRDI2NDI2MUQzOEMwNDIwMDBCRTE3NCAvKiBC
eXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHAgKi8sCisJCQkJRTNEMjY0MjcxRDM4QzA0MjAw
MEJFMTc0IC8qIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmggKi8sCisJCQkJRTNEMjY0Mjgx
RDM4QzA0MjAwMEJFMTc0IC8qIEJ5dGVjb2RlR3JhcGguaCAqLywKKwkJCQlFM0QyNjQyOTFEMzhD
MDQyMDAwQkUxNzQgLyogQnl0ZWNvZGVSZXdyaXRlci5jcHAgKi8sCisJCQkJRTNEMjY0MkExRDM4
QzA0MjAwMEJFMTc0IC8qIEJ5dGVjb2RlUmV3cml0ZXIuaCAqLywKIAkJCQk1MzcwQjRGMzFCRjI1
RUEyMDA1QzQwRkMgLyogQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50QmFz
ZS5jcHAgKi8sCiAJCQkJNTM3MEI0RjQxQkYyNUVBMjAwNUM0MEZDIC8qIEFkYXB0aXZlSW5mZXJy
ZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2UuaCAqLywKIAkJCQkwRjgzMzVCNDE2MzlDMUUz
MDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAgKi8sCkBAIC03MTc3LDggKzcx
ODMsNiBAQAogCQkJCTBGRUM4NUMzMUJFMTY3QTAwMDgwRkY3NCAvKiBCM0hlYXBSYW5nZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMjY3MThCQTUxQkU5OUY3ODAwNTIwMTdCIC8qIEFpckl0ZXJhdGVk
UmVnaXN0ZXJDb2FsZXNjaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjk2MzAzQzFENDE5MkNE
MDA1NjA5RDkgLyogRGVzdHJ1Y3Rpb25Nb2RlLmggaW4gSGVhZGVycyAqLywKLQkJCQkwRkVDODUx
QjFCREFDREFDMDA4MEZGNzQgLyogQjNJbmRleE1hcC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMEZF
Qzg1MUMxQkRBQ0RBQzAwODBGRjc0IC8qIEIzSW5kZXhTZXQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGRUM4NUJBMUJFMTQ2MkYwMDgwRkY3NCAvKiBCM0luc2VydGlvblNldC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEZFQzg1QkIxQkUxNDYyRjAwODBGRjc0IC8qIEIzSW5zZXJ0aW9uU2V0SW5saW5l
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQzg1MUUxQkRBQ0RBQzAwODBGRjc0IC8qIEIzTG93
ZXJUb0Fpci5oIGluIEhlYWRlcnMgKi8sCkBAIC03MTkyLDYgKzcxOTYsNyBAQAogCQkJCTBGRUM4
NTJEMUJEQUNEQUMwMDgwRkY3NCAvKiBCM1Byb2NlZHVyZUlubGluZXMuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGRUM4NUJEMUJFMTQ2MkYwMDgwRkY3NCAvKiBCM1JlZHVjZVN0cmVuZ3RoLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRkVDODUzMTFCREFDREFDMDA4MEZGNzQgLyogQjNTdGFja21hcFNw
ZWNpYWwuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzMjhEQUU4MUQzOEQwMDUwMDFBMjUyOSAvKiBC
eXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQzg1MzUx
QkRBQ0RBQzAwODBGRjc0IC8qIEIzU2xvdEJhc2VWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEZFQzg1MzYxQkRBQ0RBQzAwODBGRjc0IC8qIEIzU3VjY2Vzc29yQ29sbGVjdGlvbi5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEZFQzg1MzgxQkRBQ0RBQzAwODBGRjc0IC8qIEIzU3dpdGNoQ2FzZS5o
IGluIEhlYWRlcnMgKi8sCkBAIC03NDU3LDcgKzc0NjIsNiBAQAogCQkJCUE3Mzc4MTBFMTc5OUVB
MkUwMDgxNzUzMyAvKiBERkdOYXR1cmFsTG9vcHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2RUNB
M0VBMTMyREVGMUMwMDJCMkFENyAvKiBERkdOb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkZC
OTIxQjE2RDAyRjAxMDA1NUE1REIgLyogREZHTm9kZUFsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8s
Ci0JCQkJNzBCNzkxOTMxQzAyNEEyODAwMjQ4MUUyIC8qIEdlbmVyYXRvckZyYW1lLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRkE1ODFCQjE1MEU5NTMwMDBCOUEyRDkgLyogREZHTm9kZUZsYWdzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRjMwMEI3ODE4QUIwNTExMDBBNkQ3MkUgLyogREZHTm9kZU9y
aWdpbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZBNTgxQkMxNTBFOTUzMDAwQjlBMkQ5IC8qIERG
R05vZGVUeXBlLmggaW4gSGVhZGVycyAqLywKQEAgLTc0NzIsNiArNzQ3Niw3IEBACiAJCQkJMEZE
OEEzMjYxN0Q1MUY1NzAwQ0EyQzQwIC8qIERGR09TUkVudHJ5cG9pbnRDcmVhdGlvblBoYXNlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRkMwOTc2QTE0NjhBNkY3MDBDRjI0NDIgLyogREZHT1NSRXhp
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyMzVCRUMxNzE3OEU3MzAwNjkwQzdGIC8qIERGR09T
UkV4aXRCYXNlLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzlENDVGNTFEMzkwMDU2MDBCM0IzNzcg
LyogSW50ZXJwcmV0ZXJJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkZCOTIxQzE2RDAy
RjExMDA1NUE1REIgLyogREZHT1NSRXhpdENvbXBpbGF0aW9uSW5mby5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEZDMDk3NzExNDY5M0FGNTAwQ0YyNDQyIC8qIERGR09TUkV4aXRDb21waWxlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEY3MDI1QUExNzE0QjBGQzAwMzgyQzBFIC8qIERGR09TUkV4aXRD
b21waWxlckNvbW1vbi5oIGluIEhlYWRlcnMgKi8sCkBAIC03NzM0LDYgKzc3MzksNyBAQAogCQkJ
CUUzM0IzRTI2MUI3QUJENzUwMDQ4REIyRSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmpl
Y3QubHV0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTMyNDM4QzE4NTY4MzM1MDAyRUQ2OTIgLyog
SW5zcGVjdG9yUHJvdG9jb2xPYmplY3RzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTVEOTNBQzE4
NTE0Rjc5MDA0MDBERUQgLyogSW5zcGVjdG9yUHJvdG9jb2xUeXBlcy5oIGluIEhlYWRlcnMgKi8s
CisJCQkJRTMyOERBRUIxRDM4RDAwNTAwMUEyNTI5IC8qIEJ5dGVjb2RlUmV3cml0ZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE1MEU0QjYyMTg4MDlERDUwMDY4QTQ2RCAvKiBJbnNwZWN0b3JSdW50
aW1lQWdlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1OTNDRjgzMTg0MDM3NzEwMEJGQ0UyNyAv
KiBJbnNwZWN0b3JWYWx1ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTk2OUEwNzk5MEVEMUQzQUUw
MEYxRjY4MSAvKiBJbnN0cnVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCkBAIC03ODY1LDYgKzc4NzEs
NyBAQAogCQkJCUUzM0Y1MDgxMUI4NDI5QTQwMDQxMzg1NiAvKiBKU0ludGVybmFsUHJvbWlzZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEY2MTgzMkExQzQ1QkYwNzAwNzI0NTBCIC8qIEFpckNDYWxs
aW5nQ29udmVudGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTMzRjUwNzkxQjg0MjI1NzAwNDEz
ODU2IC8qIEpTSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUUzMjhEQUU5MUQzOEQwMDUwMDFBMjUyOSAvKiBCeXRlY29kZUdyYXBoLmggaW4gSGVhZGVycyAq
LywKIAkJCQlFMzNGNTA4NzFCODQ0OUVGMDA0MTM4NTYgLyogSlNJbnRlcm5hbFByb21pc2VDb25z
dHJ1Y3Rvci5sdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUUzM0Y1MDg1MUI4NDM3QTAwMDQxMzg1
NiAvKiBKU0ludGVybmFsUHJvbWlzZURlZmVycmVkLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMzNG
NTA3NTFCODQyMUMwMDA0MTM4NTYgLyogSlNJbnRlcm5hbFByb21pc2VQcm90b3R5cGUuaCBpbiBI
ZWFkZXJzICovLApAQCAtODgzMSw2ICs4ODM4LDcgQEAKIAkJCQkxNDdGMzlCRDEwN0VDMzc2MDA0
MjdBNDggLyogQXJnTGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjc0M0JBQTE2Qjg4MjQ5
MDA5RjkyNzcgLyogQVJNNjREaXNhc3NlbWJsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODZE
M0IyQzMxMDE1NkJERTAwMjg2NUU3IC8qIEFSTUFzc2VtYmxlci5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQlFMzI4REFFNzFEMzhEMDA0MDAxQTI1MjkgLyogQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRp
b24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNjVDMDI4NTAxNzE3OTVFMjAwMzUxRTM1IC8qIEFS
TXY3RGlzYXNzZW1ibGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTY1QzAyODVDMTcxNzk2Njgw
MDM1MUUzNSAvKiBBUk12N0RPcGNvZGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY4MzM1Qjcx
NjM5QzFFNjAwMTQ0M0I1IC8qIEFycmF5QWxsb2NhdGlvblByb2ZpbGUuY3BwIGluIFNvdXJjZXMg
Ki8sCkBAIC05MTY2LDYgKzkxNzQsNyBAQAogCQkJCTBGMjVGMUIxMTgxNjM1RjMwMDUyMkYzOSAv
KiBGVExTbG93UGF0aENhbGwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYzMzhERjExQkU5M0FE
MTAwMTNDODhGIC8qIEIzU3RhY2ttYXBWYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjI1
RjFCMzE4MTYzNUYzMDA1MjJGMzkgLyogRlRMU2xvd1BhdGhDYWxsS2V5LmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCUUzMjhEQUVBMUQzOEQwMDUwMDFBMjUyOSAvKiBCeXRlY29kZVJld3JpdGVyLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTQzMTlEQTAzMUMxQkU0MEEwMDFEMjYwQiAvKiBCM0xvd2Vy
TWFjcm9zQWZ0ZXJPcHRpbWl6YXRpb25zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRUEwQTE2
MTcwNkJCOTAwMEJCNzIyQyAvKiBGVExTdGF0ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjIz
NUJFMTE3MTc4RTFDMDA2OTBDN0YgLyogRlRMVGh1bmtzLmNwcCBpbiBTb3VyY2VzICovLApAQCAt
OTU3Myw3ICs5NTgyLDYgQEAKIAkJCQk3OUVFMEJGRjFCNEFGQjg1MDAwMzg1QzkgLyogVmFyaWFi
bGVFbnZpcm9ubWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjZDNzM1MDFBQzlGOTlGMDBC
RTE2ODIgLyogVmFyaWFibGVXcml0ZUZpcmVEZXRhaWwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MEZFMDUwMkMxQUE5MDk1NjAwRDMzQjMzIC8qIFZhck9mZnNldC5jcHAgaW4gU291cmNlcyAqLywK
LQkJCQk3MEI3OTE5MjFDMDI0QTIzMDAyNDgxRTIgLyogR2VuZXJhdG9yRnJhbWUuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEYyMEMyNTkxQTgwMTNBQjAwREEzMjI5IC8qIFZpcnR1YWxSZWdpc3Rl
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMThFM0E1OTBERjkyNzhDMDBEOTBCMzQgLyogVk0u
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkU1OTMyQTcxODNDNUEyNjAwQTFFQ0NDIC8qIFZNRW50
cnlTY29wZS5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM0Jhc2ljQmxvY2tVdGlscy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
QmFzaWNCbG9ja1V0aWxzLmgKaW5kZXggNGE3MTc2Nzg3OGM2ZWIzNzIzMDUwZGU5MjE5NWVkZWE1
ODUwMTlmNy4uMzJhNTlmYzEyMGNiODQwZmFiYTA2YjFmN2QxZDdiMWI1YTlhYWQ5YyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQmFzaWNCbG9ja1V0aWxzLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQmFzaWNCbG9ja1V0aWxzLmgKQEAgLTI4LDggKzI4
LDggQEAKIAogI2lmIEVOQUJMRShCM19KSVQpCiAKLSNpbmNsdWRlICJCM0luZGV4U2V0LmgiCiAj
aW5jbHVkZSA8d3RmL0dyYXBoTm9kZVdvcmtsaXN0Lmg+CisjaW5jbHVkZSA8d3RmL0luZGV4U2V0
Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNl
IEIzIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0Jsb2NrV29ya2xp
c3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0Jsb2NrV29ya2xpc3QuaAppbmRleCBh
ZjdlZTJjOTZiYzk4ODg5YmQwZDc4YjE2ZTYyNzhkNTczY2Y2MjIxLi45ZTZiZTRiYjlmNzAxOTIy
M2UxNWUyYWM0OWM4ZjZkZTE2Yzg4OTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNCbG9ja1dvcmtsaXN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
QmxvY2tXb3JrbGlzdC5oCkBAIC0yOCwxMyArMjgsMTQgQEAKIAogI2lmIEVOQUJMRShCM19KSVQp
CiAKLSNpbmNsdWRlICJCM0Jhc2ljQmxvY2suaCIKLSNpbmNsdWRlICJCM0luZGV4U2V0LmgiCiAj
aW5jbHVkZSA8d3RmL0dyYXBoTm9kZVdvcmtsaXN0Lmg+CisjaW5jbHVkZSA8d3RmL0luZGV4U2V0
Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNl
IEIzIHsKIAorY2xhc3MgQmFzaWNCbG9jazsKKwogdHlwZWRlZiBHcmFwaE5vZGVXb3JrbGlzdDxC
YXNpY0Jsb2NrKiwgSW5kZXhTZXQ8QmFzaWNCbG9jaz4+IEJsb2NrV29ya2xpc3Q7CiAKIC8vIFdo
ZW4geW91IHNheSBCbG9ja1dpdGg8aW50PiB5b3Ugc2hvdWxkIHJlYWQgaXQgYXMgImJsb2NrIHdp
dGggYW4gaW50Ii4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NGRy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ0ZHLmgKaW5kZXggNThjNDBiMWJiYWY3N2Rk
ZWZhMWQyMDYzZjkzZTU4OTQ1OTFkMTdiMy4uOTA0YWIzZjlhMzYwYzI5OTU2MjBhMDAyZmFhN2Mx
NWRlMjI1ZWFhMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ0ZHLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ0ZHLmgKQEAgLTI5LDkgKzI5LDkgQEAK
ICNpZiBFTkFCTEUoQjNfSklUKQogCiAjaW5jbHVkZSAiQjNCYXNpY0Jsb2NrLmgiCi0jaW5jbHVk
ZSAiQjNJbmRleE1hcC5oIgotI2luY2x1ZGUgIkIzSW5kZXhTZXQuaCIKICNpbmNsdWRlICJCM1By
b2NlZHVyZS5oIgorI2luY2x1ZGUgPHd0Zi9JbmRleE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9JbmRl
eFNldC5oPgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRHVwbGljYXRlVGFpbHMuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzRHVwbGljYXRlVGFpbHMuY3BwCmluZGV4IDhhODQzNGIyNmNkZjA5
MjU5ZTEzNjM2MGNhMjcwZjYyY2ExODgzNjguLjk1NDkyYmNlNjc1MWM1YzE3MGJkMmUyYjlhOWRk
NDc0NWQ5ZDIzY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0R1cGxp
Y2F0ZVRhaWxzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNEdXBsaWNhdGVU
YWlscy5jcHAKQEAgLTMyLDEzICszMiwxMyBAQAogI2luY2x1ZGUgIkIzQnJlYWtDcml0aWNhbEVk
Z2VzLmgiCiAjaW5jbHVkZSAiQjNEb21pbmF0b3JzLmgiCiAjaW5jbHVkZSAiQjNGaXhTU0EuaCIK
LSNpbmNsdWRlICJCM0luZGV4U2V0LmgiCiAjaW5jbHVkZSAiQjNJbnNlcnRpb25TZXRJbmxpbmVz
LmgiCiAjaW5jbHVkZSAiQjNQaGFzZVNjb3BlLmgiCiAjaW5jbHVkZSAiQjNQcm9jZWR1cmVJbmxp
bmVzLmgiCiAjaW5jbHVkZSAiQjNTd2l0Y2hWYWx1ZS5oIgogI2luY2x1ZGUgIkIzVXBzaWxvblZh
bHVlLmgiCiAjaW5jbHVkZSAiQjNWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRlIDx3dGYvSW5kZXhT
ZXQuaD4KIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0ZpeFNTQS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNGaXhTU0EuY3BwCmluZGV4IGY0YjAxMjJjNGRlY2RlOTVjM2RiMmQ4MjQxZjY5Mjgy
ZDViYTM5NmEuLjczMGMyYzg3NjZjNjU2NTQ2YjQ4NzQ2ZTEyNTAzY2QzNTkzMjRmOGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0ZpeFNTQS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzRml4U1NBLmNwcApAQCAtMzEsNyArMzEsNiBAQAogI2luY2x1
ZGUgIkIzQmFzaWNCbG9ja0lubGluZXMuaCIKICNpbmNsdWRlICJCM0JyZWFrQ3JpdGljYWxFZGdl
cy5oIgogI2luY2x1ZGUgIkIzRG9taW5hdG9ycy5oIgotI2luY2x1ZGUgIkIzSW5kZXhTZXQuaCIK
ICNpbmNsdWRlICJCM0luc2VydGlvblNldElubGluZXMuaCIKICNpbmNsdWRlICJCM1BoYXNlU2Nv
cGUuaCIKICNpbmNsdWRlICJCM1Byb2NlZHVyZUlubGluZXMuaCIKQEAgLTQxLDYgKzQwLDcgQEAK
ICNpbmNsdWRlICJCM1ZhcmlhYmxlLmgiCiAjaW5jbHVkZSAiQjNWYXJpYWJsZVZhbHVlLmgiCiAj
aW5jbHVkZSA8d3RmL0NvbW1hUHJpbnRlci5oPgorI2luY2x1ZGUgPHd0Zi9JbmRleFNldC5oPgog
CiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzRml4U1NBLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNG
aXhTU0EuaAppbmRleCA2NjJlNDlkNjI4YWVmNjIwOTUxMDk1ODdlZWE0NTM1NWM4MDY3N2M1Li44
ODU5Mjc2ZTJkOTI2ZGYzMTAyMDYwNzdlYTc1YjIwYWE3NDg4YTQzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNGaXhTU0EuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNGaXhTU0EuaApAQCAtMjgsOCArMjgsOSBAQAogCiAjaWYgRU5BQkxFKEIzX0pJVCkK
IAotI2luY2x1ZGUgIkIzSW5kZXhTZXQuaCIKICNpbmNsdWRlICJCM1ZhbHVlLmgiCisjaW5jbHVk
ZSA8d3RmL0luZGV4U2V0Lmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2Ug
SlNDIHsgbmFtZXNwYWNlIEIzIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzSW5kZXhNYXAuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0luZGV4TWFwLmgK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJhYTMzOWYwOWRlNDJjMGI0ZDU5YmQ2YWYy
ZTk4MjY0ZmJjMTFiNjEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzSW5kZXhNYXAuaAorKysgL2Rldi9udWxs
CkBAIC0xLDg3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQot
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKLSAqLwotCi0jaWZuZGVmIEIzSW5kZXhNYXBfaAotI2RlZmluZSBCM0luZGV4TWFwX2gK
LQotI2lmIEVOQUJMRShCM19KSVQpCi0KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0KLW5hbWVz
cGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgewotCi0vLyBUaGlzIGlzIGEgbWFwIGZvciBrZXlzIHRo
YXQgaGF2ZSBhbiBpbmRleCgpLiBJdCdzIHN1cGVyIGVmZmljaWVudCBmb3IgQmFzaWNCbG9ja3Mu
IEl0J3Mgb25seQotLy8gZWZmaWNpZW50IGZvciBWYWx1ZXMgaWYgeW91IGRvbid0IGNyZWF0ZSB0
b28gbWFueSBvZiB0aGVzZSBtYXBzLCBzaW5jZSBWYWx1ZXMgY2FuIGhhdmUgdmVyeQotLy8gc3Bh
cnNlIGluZGljZXMgYW5kIHRoZXJlIGFyZSBhIGxvdCBvZiBWYWx1ZXMuCi0KLXRlbXBsYXRlPHR5
cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWU+Ci1jbGFzcyBJbmRleE1hcCB7Ci1wdWJsaWM6Ci0g
ICAgZXhwbGljaXQgSW5kZXhNYXAoc2l6ZV90IHNpemUgPSAwKQotICAgIHsKLSAgICAgICAgbV92
ZWN0b3IuZmlsbChWYWx1ZSgpLCBzaXplKTsKLSAgICB9Ci0KLSAgICB2b2lkIHJlc2l6ZShzaXpl
X3Qgc2l6ZSkKLSAgICB7Ci0gICAgICAgIG1fdmVjdG9yLmZpbGwoVmFsdWUoKSwgc2l6ZSk7Ci0g
ICAgfQotCi0gICAgdm9pZCBjbGVhcigpCi0gICAgewotICAgICAgICBtX3ZlY3Rvci5maWxsKFZh
bHVlKCksIG1fdmVjdG9yLnNpemUoKSk7Ci0gICAgfQotCi0gICAgc2l6ZV90IHNpemUoKSBjb25z
dCB7IHJldHVybiBtX3ZlY3Rvci5zaXplKCk7IH0KLQotICAgIFZhbHVlJiBvcGVyYXRvcltdKHNp
emVfdCBpbmRleCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX3ZlY3RvcltpbmRleF07Ci0gICAg
fQotCi0gICAgY29uc3QgVmFsdWUmIG9wZXJhdG9yW10oc2l6ZV90IGluZGV4KSBjb25zdAotICAg
IHsKLSAgICAgICAgcmV0dXJuIG1fdmVjdG9yW2luZGV4XTsKLSAgICB9Ci0gICAgCi0gICAgVmFs
dWUmIG9wZXJhdG9yW10oS2V5KiBrZXkpCi0gICAgewotICAgICAgICByZXR1cm4gbV92ZWN0b3Jb
a2V5LT5pbmRleCgpXTsKLSAgICB9Ci0gICAgCi0gICAgY29uc3QgVmFsdWUmIG9wZXJhdG9yW10o
S2V5KiBrZXkpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV92ZWN0b3Jba2V5LT5pbmRl
eCgpXTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgVmVjdG9yPFZhbHVlPiBtX3ZlY3RvcjsKLX07
Ci0KLX0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMwotCi0jZW5kaWYgLy8gRU5BQkxFKEIzX0pJVCkK
LQotI2VuZGlmIC8vIEIzSW5kZXhNYXBfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzSW5kZXhTZXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0luZGV4U2V0
LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFiOWIyYjRlMzRiZjQzODAwN2FkMjE3
Y2I1YzdhM2VhOTRjYjlhNDYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzSW5kZXhTZXQuaAorKysgL2Rldi9u
dWxsCkBAIC0xLDE2NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCi0gKi8KLQotI2lmbmRlZiBCM0luZGV4U2V0X2gKLSNkZWZpbmUgQjNJbmRleFNl
dF9oCi0KLSNpbmNsdWRlIDx3dGYvQml0VmVjdG9yLmg+Ci0jaW5jbHVkZSA8d3RmL0NvbW1hUHJp
bnRlci5oPgotCi1uYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKLQotLy8gVGhpcyBpcyBh
IHNldCBmb3IgdGhpbmdzIHRoYXQgaGF2ZSBhbiBpbmRleCgpLiBJdCdzIHN1cGVyIGVmZmljaWVu
dCBmb3IgQmFzaWNCbG9ja3MuIEl0J3Mgb25seQotLy8gZWZmaWNpZW50IGZvciBWYWx1ZXMgaWYg
eW91IGRvbid0IGNyZWF0ZSB0b28gbWFueSBvZiB0aGVzZSBzZXRzLCBzaW5jZSBWYWx1ZXMgY2Fu
IGhhdmUgdmVyeSBzcGFyc2UKLS8vIGluZGljZXMgYW5kIHRoZXJlIGFyZSBhIGxvdCBvZiBWYWx1
ZXMuCi0KLS8vIElmIHlvdSB3YW50IGEgc2V0IG9mIEJhc2ljQmxvY2tzLCB5b3UgZG8gSW5kZXhT
ZXQ8QmFzaWNCbG9jaz4uIFNvLCBUID0gQmFzaWNCbG9jay4KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+
Ci1jbGFzcyBJbmRleFNldCB7Ci1wdWJsaWM6Ci0gICAgSW5kZXhTZXQoKQotICAgIHsKLSAgICB9
Ci0KLSAgICBib29sIGFkZChUKiB2YWx1ZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiAhbV9zZXQu
c2V0KHZhbHVlLT5pbmRleCgpKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJdGVy
YWJsZT4KLSAgICBib29sIGFkZEFsbChjb25zdCBJdGVyYWJsZSYgaXRlcmFibGUpCi0gICAgewot
ICAgICAgICBib29sIHJlc3VsdCA9IGZhbHNlOwotICAgICAgICBmb3IgKFQqIHZhbHVlIDogaXRl
cmFibGUpCi0gICAgICAgICAgICByZXN1bHQgfD0gYWRkKHZhbHVlKTsKLSAgICAgICAgcmV0dXJu
IHJlc3VsdDsKLSAgICB9Ci0KLSAgICBib29sIHJlbW92ZShUKiB2YWx1ZSkKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBtX3NldC5jbGVhcih2YWx1ZS0+aW5kZXgoKSk7Ci0gICAgfQotCi0gICAgYm9v
bCBjb250YWlucyhUKiB2YWx1ZSkgY29uc3QKLSAgICB7Ci0gICAgICAgIGlmICghdmFsdWUpCi0g
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHJldHVybiBtX3NldC5nZXQodmFsdWUt
PmluZGV4KCkpOwotICAgIH0KLQotICAgIHNpemVfdCBzaXplKCkgY29uc3QKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBtX3NldC5iaXRDb3VudCgpOwotICAgIH0KLQotICAgIGJvb2wgaXNFbXB0eSgp
IGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gIXNpemUoKTsKLSAgICB9Ci0KLSAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBDb2xsZWN0aW9uVHlwZT4KLSAgICBjbGFzcyBJdGVyYWJsZSB7Ci0gICAg
cHVibGljOgotICAgICAgICBJdGVyYWJsZShjb25zdCBDb2xsZWN0aW9uVHlwZSYgY29sbGVjdGlv
biwgY29uc3QgQml0VmVjdG9yJiBzZXQpCi0gICAgICAgICAgICA6IG1fY29sbGVjdGlvbihjb2xs
ZWN0aW9uKQotICAgICAgICAgICAgLCBtX3NldChzZXQpCi0gICAgICAgIHsKLSAgICAgICAgfQot
Ci0gICAgICAgIGNsYXNzIGl0ZXJhdG9yIHsKLSAgICAgICAgcHVibGljOgotICAgICAgICAgICAg
aXRlcmF0b3IoKQotICAgICAgICAgICAgICAgIDogbV9jb2xsZWN0aW9uKG51bGxwdHIpCi0gICAg
ICAgICAgICB7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGl0ZXJhdG9yKGNvbnN0IENv
bGxlY3Rpb25UeXBlJiBjb2xsZWN0aW9uLCBCaXRWZWN0b3I6Oml0ZXJhdG9yIGl0ZXIpCi0gICAg
ICAgICAgICAgICAgOiBtX2NvbGxlY3Rpb24oJmNvbGxlY3Rpb24pCi0gICAgICAgICAgICAgICAg
LCBtX2l0ZXIoaXRlcikKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAg
ICAgVCogb3BlcmF0b3IqKCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4g
bV9jb2xsZWN0aW9uLT5hdCgqbV9pdGVyKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAg
aXRlcmF0b3ImIG9wZXJhdG9yKysoKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICsr
bV9pdGVyOwotICAgICAgICAgICAgICAgIHJldHVybiAqdGhpczsKLSAgICAgICAgICAgIH0KLQot
ICAgICAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IGl0ZXJhdG9yJiBvdGhlcikgY29uc3QK
LSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gbV9pdGVyID09IG90aGVyLm1f
aXRlcjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0
IGl0ZXJhdG9yJiBvdGhlcikgY29uc3QKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgcHJpdmF0
ZToKLSAgICAgICAgICAgIGNvbnN0IENvbGxlY3Rpb25UeXBlKiBtX2NvbGxlY3Rpb247Ci0gICAg
ICAgICAgICBCaXRWZWN0b3I6Oml0ZXJhdG9yIG1faXRlcjsKLSAgICAgICAgfTsKLQotICAgICAg
ICBpdGVyYXRvciBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIGl0ZXJhdG9yKG1fY29sbGVjdGlvbiwg
bV9zZXQuYmVnaW4oKSk7IH0KLSAgICAgICAgaXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4g
aXRlcmF0b3IobV9jb2xsZWN0aW9uLCBtX3NldC5lbmQoKSk7IH0KLQotICAgIHByaXZhdGU6Ci0g
ICAgICAgIGNvbnN0IENvbGxlY3Rpb25UeXBlJiBtX2NvbGxlY3Rpb247Ci0gICAgICAgIGNvbnN0
IEJpdFZlY3RvciYgbV9zZXQ7Ci0gICAgfTsKLQotICAgIC8vIEZvciBiYXNpYyBibG9ja3MsIHlv
dSBkbzoKLSAgICAvLyBpbmRleFNldC52YWx1ZXMocHJvY2VkdXJlKTsKLSAgICAvLwotICAgIC8v
IEZvciB2YWx1ZXMsIHlvdSBkbzoKLSAgICAvLyBpbmRleFNldC52YWx1ZXMocHJvY2VkdXJlLnZh
bHVlcygpKTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDb2xsZWN0aW9uVHlwZT4KLSAgICBJdGVy
YWJsZTxDb2xsZWN0aW9uVHlwZT4gdmFsdWVzKGNvbnN0IENvbGxlY3Rpb25UeXBlJiBjb2xsZWN0
aW9uKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIEl0ZXJhYmxlPENvbGxlY3Rpb25UeXBl
Pihjb2xsZWN0aW9uLCBpbmRpY2VzKCkpOwotICAgIH0KLQotICAgIGNvbnN0IEJpdFZlY3RvciYg
aW5kaWNlcygpIGNvbnN0IHsgcmV0dXJuIG1fc2V0OyB9Ci0KLSAgICB2b2lkIGR1bXAoUHJpbnRT
dHJlYW0mIG91dCkgY29uc3QKLSAgICB7Ci0gICAgICAgIENvbW1hUHJpbnRlciBjb21tYTsKLSAg
ICAgICAgZm9yIChzaXplX3QgaW5kZXggOiBpbmRpY2VzKCkpCi0gICAgICAgICAgICBvdXQucHJp
bnQoY29tbWEsIFQ6OmR1bXBQcmVmaXgsIGluZGV4KTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAg
Qml0VmVjdG9yIG1fc2V0OwotfTsKLQotfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCi0KLSNlbmRp
ZiAvLyBCM0luZGV4U2V0X2gKLQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzTG93ZXJUb0Fpci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWly
LmNwcAppbmRleCAzMTJkOTM3Y2MxYmJkNTgxZjQwMmRlMDZiNWRjNzI3OTBkMTg1NzdmLi5hNmI2
YWUxNTlmZTE1NzJmM2Q5MTgwNDc5NjM1NmE5YTVmMDllM2YyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcApAQCAtNDAsOCArNDAsNiBAQAogI2luY2x1ZGUgIkIz
Q2hlY2tTcGVjaWFsLmgiCiAjaW5jbHVkZSAiQjNDb21tdXRhdGl2aXR5LmgiCiAjaW5jbHVkZSAi
QjNEb21pbmF0b3JzLmgiCi0jaW5jbHVkZSAiQjNJbmRleE1hcC5oIgotI2luY2x1ZGUgIkIzSW5k
ZXhTZXQuaCIKICNpbmNsdWRlICJCM01lbW9yeVZhbHVlLmgiCiAjaW5jbHVkZSAiQjNQYXRjaHBv
aW50U3BlY2lhbC5oIgogI2luY2x1ZGUgIkIzUGF0Y2hwb2ludFZhbHVlLmgiCkBAIC01NSw2ICs1
Myw4IEBACiAjaW5jbHVkZSAiQjNWYWx1ZUlubGluZXMuaCIKICNpbmNsdWRlICJCM1ZhcmlhYmxl
LmgiCiAjaW5jbHVkZSAiQjNWYXJpYWJsZVZhbHVlLmgiCisjaW5jbHVkZSA8d3RmL0luZGV4TWFw
Lmg+CisjaW5jbHVkZSA8d3RmL0luZGV4U2V0Lmg+CiAjaW5jbHVkZSA8d3RmL0xpc3REdW1wLmg+
CiAKICNpZiBDT01QSUxFUihHQ0MpICYmIEFTU0VSVF9ESVNBQkxFRApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUGhpQ2hpbGRyZW4uaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM1BoaUNoaWxkcmVuLmgKaW5kZXggY2RmMzY4ZjI0YWE2ZTVhNTgzOWYzZmFhNjVk
ZjA5ZGEwNjM0NWNlNy4uZTExZmNiZWI4OTY1MDFjNjZhZDNhY2MzN2QyMDFiMDE2ZTU1MGZjYiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUGhpQ2hpbGRyZW4uaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQaGlDaGlsZHJlbi5oCkBAIC0yOCwxMCArMjgs
MTAgQEAKIAogI2lmIEVOQUJMRShCM19KSVQpCiAKLSNpbmNsdWRlICJCM0luZGV4TWFwLmgiCiAj
aW5jbHVkZSAiQjNQcm9jZWR1cmUuaCIKICNpbmNsdWRlICJCM1Vwc2lsb25WYWx1ZS5oIgogI2lu
Y2x1ZGUgPHd0Zi9HcmFwaE5vZGVXb3JrbGlzdC5oPgorI2luY2x1ZGUgPHd0Zi9JbmRleE1hcC5o
PgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNQcm9jZWR1cmUuaAppbmRleCA1NzY0MTNlMTA5MGE4NDc3ZTM0ZDQyMzU4YzY5ODQ2NWMx
YWQ1OTFkLi5lMmUxMzRkYWJlY2QwMzc0OWZlN2E5N2Y0ODhiZThmYTBiY2M0OGQ4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUuaApAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1
ZGUgPHd0Zi9CYWcuaD4KICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgogI2luY2x1ZGUgPHd0
Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL0luZGV4ZWRDb250YWluZXJJdGVyYXRvci5oPgog
I2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5o
PgogI2luY2x1ZGUgPHd0Zi9TaGFyZWRUYXNrLmg+CkBAIC0xMzMsNTMgKzEzNCw3IEBAIGNsYXNz
IFByb2NlZHVyZSB7CiAgICAgQmFzaWNCbG9jayogYXQodW5zaWduZWQgaW5kZXgpIGNvbnN0IHsg
cmV0dXJuIG1fYmxvY2tzW2luZGV4XS5nZXQoKTsgfQogICAgIEJhc2ljQmxvY2sqIG9wZXJhdG9y
W10odW5zaWduZWQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIGF0KGluZGV4KTsgfQogCi0gICAgY2xh
c3MgaXRlcmF0b3IgewotICAgIHB1YmxpYzoKLSAgICAgICAgaXRlcmF0b3IoKQotICAgICAgICAg
ICAgOiBtX3Byb2NlZHVyZShudWxscHRyKQotICAgICAgICAgICAgLCBtX2luZGV4KDApCi0gICAg
ICAgIHsKLSAgICAgICAgfQotCi0gICAgICAgIGl0ZXJhdG9yKGNvbnN0IFByb2NlZHVyZSYgcHJv
Y2VkdXJlLCB1bnNpZ25lZCBpbmRleCkKLSAgICAgICAgICAgIDogbV9wcm9jZWR1cmUoJnByb2Nl
ZHVyZSkKLSAgICAgICAgICAgICwgbV9pbmRleChmaW5kTmV4dChpbmRleCkpCi0gICAgICAgIHsK
LSAgICAgICAgfQotCi0gICAgICAgIEJhc2ljQmxvY2sqIG9wZXJhdG9yKigpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIHJldHVybiBtX3Byb2NlZHVyZS0+YXQobV9pbmRleCk7Ci0gICAgICAgIH0K
LQotICAgICAgICBpdGVyYXRvciYgb3BlcmF0b3IrKygpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IG1faW5kZXggPSBmaW5kTmV4dChtX2luZGV4ICsgMSk7Ci0gICAgICAgICAgICByZXR1cm4gKnRo
aXM7Ci0gICAgICAgIH0KLQotICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgaXRlcmF0b3Im
IG90aGVyKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQobV9wcm9jZWR1cmUg
PT0gb3RoZXIubV9wcm9jZWR1cmUpOwotICAgICAgICAgICAgcmV0dXJuIG1faW5kZXggPT0gb3Ro
ZXIubV9pbmRleDsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgYm9vbCBvcGVyYXRvciE9
KGNvbnN0IGl0ZXJhdG9yJiBvdGhlcikgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0
dXJuICEoKnRoaXMgPT0gb3RoZXIpOwotICAgICAgICB9Ci0KLSAgICBwcml2YXRlOgotICAgICAg
ICB1bnNpZ25lZCBmaW5kTmV4dCh1bnNpZ25lZCBpbmRleCkKLSAgICAgICAgewotICAgICAgICAg
ICAgd2hpbGUgKGluZGV4IDwgbV9wcm9jZWR1cmUtPnNpemUoKSAmJiAhbV9wcm9jZWR1cmUtPmF0
KGluZGV4KSkKLSAgICAgICAgICAgICAgICBpbmRleCsrOwotICAgICAgICAgICAgcmV0dXJuIGlu
ZGV4OwotICAgICAgICB9Ci0KLSAgICAgICAgY29uc3QgUHJvY2VkdXJlKiBtX3Byb2NlZHVyZTsK
LSAgICAgICAgdW5zaWduZWQgbV9pbmRleDsKLSAgICB9OworICAgIHR5cGVkZWYgV1RGOjpJbmRl
eGVkQ29udGFpbmVySXRlcmF0b3I8UHJvY2VkdXJlPiBpdGVyYXRvcjsKIAogICAgIGl0ZXJhdG9y
IGJlZ2luKCkgY29uc3QgeyByZXR1cm4gaXRlcmF0b3IoKnRoaXMsIDApOyB9CiAgICAgaXRlcmF0
b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gaXRlcmF0b3IoKnRoaXMsIHNpemUoKSk7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVjZURvdWJsZVRvRmxvYXQuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUmVkdWNlRG91YmxlVG9GbG9hdC5jcHAKaW5k
ZXggYmQ3Y2QwOTBjNmE2M2Y3YjlkMTMwN2Q0ZmEzNjc5NmExYjk1NzMyNi4uOGVjZTM4OWNhMmVm
ZDUzODlkYzkwMmRmMzE1NjFmOTU2M2QzNTk3MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzUmVkdWNlRG91YmxlVG9GbG9hdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzUmVkdWNlRG91YmxlVG9GbG9hdC5jcHAKQEAgLTI5LDExICsyOSwxMSBAQAog
I2lmIEVOQUJMRShCM19KSVQpCiAKICNpbmNsdWRlICJCM0Jhc2ljQmxvY2suaCIKLSNpbmNsdWRl
ICJCM0luZGV4U2V0LmgiCiAjaW5jbHVkZSAiQjNJbnNlcnRpb25TZXRJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiQjNQaGFzZVNjb3BlLmgiCiAjaW5jbHVkZSAiQjNVc2VDb3VudHMuaCIKICNpbmNsdWRl
ICJCM1ZhbHVlSW5saW5lcy5oIgorI2luY2x1ZGUgPHd0Zi9JbmRleFNldC5oPgogCiBuYW1lc3Bh
Y2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzUmVkdWNlU3RyZW5ndGguY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
UmVkdWNlU3RyZW5ndGguY3BwCmluZGV4IDRjYmYyNTI4ODZiOTdjY2JmYjM3NjQwNTdmOWY2MDQy
YzZhMWU1YTAuLjBiZDFlYTBiNDhjZTE5YTYwYmVmNzI2ZGJlOTg4NTAzZTk0OGNkMDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVjZVN0cmVuZ3RoLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNSZWR1Y2VTdHJlbmd0aC5jcHAKQEAgLTMyLDcg
KzMyLDYgQEAKICNpbmNsdWRlICJCM0Jsb2NrSW5zZXJ0aW9uU2V0LmgiCiAjaW5jbHVkZSAiQjND
b21wdXRlRGl2aXNpb25NYWdpYy5oIgogI2luY2x1ZGUgIkIzRG9taW5hdG9ycy5oIgotI2luY2x1
ZGUgIkIzSW5kZXhTZXQuaCIKICNpbmNsdWRlICJCM0luc2VydGlvblNldElubGluZXMuaCIKICNp
bmNsdWRlICJCM01lbW9yeVZhbHVlLmgiCiAjaW5jbHVkZSAiQjNQaGFzZVNjb3BlLmgiCkBAIC00
OCw2ICs0Nyw3IEBACiAjaW5jbHVkZSAiQjNWYXJpYWJsZVZhbHVlLmgiCiAjaW5jbHVkZSA8d3Rm
L0dyYXBoTm9kZVdvcmtsaXN0Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRl
IDx3dGYvSW5kZXhTZXQuaD4KIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1NTQUNhbGN1bGF0b3IuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1NTQUNhbGN1bGF0b3IuaAppbmRleCBmNTc2NjgyMmY0
ZmZjMzZiZDZhMjJhOTc3MGYyMDIwZGY1MTI0NDZiLi4xZTk2MjgyNjJmZjNmZWQyMjkwMzFhZWEz
ZDE3ZDBiNjgxMmFmZjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNT
U0FDYWxjdWxhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzU1NBQ2FsY3Vs
YXRvci5oCkBAIC0yOSw5ICsyOSw5IEBACiAjaWYgRU5BQkxFKEIzX0pJVCkKIAogI2luY2x1ZGUg
IkIzRG9taW5hdG9ycy5oIgotI2luY2x1ZGUgIkIzSW5kZXhNYXAuaCIKICNpbmNsdWRlICJCM1By
b2NlZHVyZUlubGluZXMuaCIKICNpbmNsdWRlIDx3dGYvQmFnLmg+CisjaW5jbHVkZSA8d3RmL0lu
ZGV4TWFwLmg+CiAjaW5jbHVkZSA8d3RmL1NlZ21lbnRlZFZlY3Rvci5oPgogCiBuYW1lc3BhY2Ug
SlNDIHsgbmFtZXNwYWNlIEIzIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM1VzZUNvdW50cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVXNlQ291bnRzLmgK
aW5kZXggYTU5ZDU4YWE0NmM2MjcyODU3ZTgyOWQzOGExNGVmMDgwN2I3MzdlOS4uNmU5ZTQ4MmI3
OTlkMjQwYjBlNjU5NTZlZjQ1YmI0Njg0MzNmZmY2YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzVXNlQ291bnRzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzVXNlQ291bnRzLmgKQEAgLTI4LDggKzI4LDggQEAKIAogI2lmIEVOQUJMRShCM19KSVQpCiAK
LSNpbmNsdWRlICJCM0luZGV4TWFwLmgiCiAjaW5jbHVkZSAiQjNWYWx1ZS5oIgorI2luY2x1ZGUg
PHd0Zi9JbmRleE1hcC5oPgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJDb2RlLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckNvZGUuaAppbmRleCA2NGE3NDVkMDIxMGI2YTdmY2I3
YTkzNTFiMTMwYWUwOWEyNmQyNTBkLi5mMTllZmIyODAyZjZhZDU1OGVlODdiZGUyZTZhYjYyNDhi
NjE1YTBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckNvZGUu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckNvZGUuaApAQCAtMzMsMTEg
KzMzLDExIEBACiAjaW5jbHVkZSAiQWlyU3BlY2lhbC5oIgogI2luY2x1ZGUgIkFpclN0YWNrU2xv
dC5oIgogI2luY2x1ZGUgIkFpclRtcC5oIgotI2luY2x1ZGUgIkIzSW5kZXhNYXAuaCIKICNpbmNs
dWRlICJCM1NwYXJzZUNvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJDQ2FsbEhlbHBlcnMuaCIKICNp
bmNsdWRlICJSZWdpc3RlckF0T2Zmc2V0TGlzdC5oIgogI2luY2x1ZGUgIlN0YWNrQWxpZ25tZW50
LmgiCisjaW5jbHVkZSA8d3RmL0luZGV4TWFwLmg+CiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3Bh
Y2UgQjMgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckVs
aW1pbmF0ZURlYWRDb2RlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRWxp
bWluYXRlRGVhZENvZGUuY3BwCmluZGV4IDM2NjNlYWE5OTc5NjdmNTdlNDUxYmI2MWE0NmQ5YWRj
MzAwMTNiNzUuLmNhMzZhZjkzZTc5MTA3OTljYzdiZDQ4MTFiMzA3NDU2NWM3MzhmMzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRWxpbWluYXRlRGVhZENvZGUu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRWxpbWluYXRlRGVhZENv
ZGUuY3BwCkBAIC0zMSw3ICszMSw3IEBACiAjaW5jbHVkZSAiQWlyQ29kZS5oIgogI2luY2x1ZGUg
IkFpckluc3RJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQWlyUGhhc2VTY29wZS5oIgotI2luY2x1ZGUg
IkIzSW5kZXhTZXQuaCIKKyNpbmNsdWRlIDx3dGYvSW5kZXhTZXQuaD4KIAogbmFtZXNwYWNlIEpT
QyB7IG5hbWVzcGFjZSBCMyB7IG5hbWVzcGFjZSBBaXIgewogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckZpeE9idmlvdXNTcGlsbHMuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJGaXhPYnZpb3VzU3BpbGxzLmNwcAppbmRleCA3MWQ5OTBm
MjFlZjY0NjA2NGQxMjkzZjBkYjBmN2ExZWQwYjBlYmE0Li5iYWJkMTczNThiYThmNDliMzQ0YmU1
ZGE2ZjBjZjZhZjMwYjQ1NjcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
YWlyL0FpckZpeE9idmlvdXNTcGlsbHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9haXIvQWlyRml4T2J2aW91c1NwaWxscy5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKICNpbmNsdWRl
ICJBaXJDb2RlLmgiCiAjaW5jbHVkZSAiQWlySW5zdElubGluZXMuaCIKICNpbmNsdWRlICJBaXJQ
aGFzZVNjb3BlLmgiCi0jaW5jbHVkZSAiQjNJbmRleE1hcC5oIgorI2luY2x1ZGUgPHd0Zi9JbmRl
eE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9MaXN0RHVtcC5oPgogCiBuYW1lc3BhY2UgSlNDIHsgbmFt
ZXNwYWNlIEIzIHsgbmFtZXNwYWNlIEFpciB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvYWlyL0FpckZpeFBhcnRpYWxSZWdpc3RlclN0YWxscy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvYWlyL0FpckZpeFBhcnRpYWxSZWdpc3RlclN0YWxscy5jcHAKaW5kZXgg
ZWQ3YjgwYTBjOGI0NmFhMjRjYmFjNmQ5N2JlMzlkYWQ2ZDIxN2NmYi4uNTM5OTc5OTJkODZjYjcy
MDNiYzBlYzgzNGMwZjg2ZDRmMTU1YzQzNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL2Fpci9BaXJGaXhQYXJ0aWFsUmVnaXN0ZXJTdGFsbHMuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRml4UGFydGlhbFJlZ2lzdGVyU3RhbGxzLmNwcApAQCAt
MzQsOSArMzQsOSBAQAogI2luY2x1ZGUgIkFpckluc3QuaCIKICNpbmNsdWRlICJBaXJJbnN0SW5s
aW5lcy5oIgogI2luY2x1ZGUgIkFpclBoYXNlU2NvcGUuaCIKLSNpbmNsdWRlICJCM0luZGV4TWFw
LmgiCi0jaW5jbHVkZSAiQjNJbmRleFNldC5oIgogI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyLmgi
CisjaW5jbHVkZSA8d3RmL0luZGV4TWFwLmg+CisjaW5jbHVkZSA8d3RmL0luZGV4U2V0Lmg+CiAj
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsg
bmFtZXNwYWNlIEFpciB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWly
L0FpckdlbmVyYXRlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyR2VuZXJh
dGUuY3BwCmluZGV4IDQxMTg0MTIxYzg1MGMzN2I1MzYxOGRmZThiYTM5NGY0NDA3YmRhMDAuLjBh
MThhZGE2MGNiNmQ1NTIwOTMyOWQ5YzY3NmY3YWU4OWQyY2IxMzQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyR2VuZXJhdGUuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9haXIvQWlyR2VuZXJhdGUuY3BwCkBAIC00OCwxMyArNDgsMTMgQEAKICNp
bmNsdWRlICJBaXJTcGlsbEV2ZXJ5dGhpbmcuaCIKICNpbmNsdWRlICJBaXJWYWxpZGF0ZS5oIgog
I2luY2x1ZGUgIkIzQ29tbW9uLmgiCi0jaW5jbHVkZSAiQjNJbmRleE1hcC5oIgogI2luY2x1ZGUg
IkIzUHJvY2VkdXJlLmgiCiAjaW5jbHVkZSAiQjNUaW1pbmdTY29wZS5oIgogI2luY2x1ZGUgIkIz
VmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQ0NhbGxIZWxwZXJzLmgiCiAjaW5jbHVkZSAiRGlz
YWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlLmgiCiAjaW5jbHVkZSAiTGlua0J1ZmZlci5o
IgorI2luY2x1ZGUgPHd0Zi9JbmRleE1hcC5oPgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNl
IEIzIHsgbmFtZXNwYWNlIEFpciB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9haXIvQWlyR2VuZXJhdGlvbkNvbnRleHQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9haXIvQWlyR2VuZXJhdGlvbkNvbnRleHQuaAppbmRleCBlY2E5MDdmMDFlZGZjZjUxMDY3ZDk4
OTVkOTFkOWMzMTYyZmEzNzgxLi43ZGM2ZTBkMzI0NDdkZjZiMzU3Njg1ZDk4ODEzZjE5M2VlNDIz
ZTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckdlbmVyYXRp
b25Db250ZXh0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJHZW5lcmF0
aW9uQ29udGV4dC5oCkBAIC0yOSw5ICsyOSw5IEBACiAjaWYgRU5BQkxFKEIzX0pJVCkKIAogI2lu
Y2x1ZGUgIkFpckJhc2ljQmxvY2suaCIKLSNpbmNsdWRlICJCM0luZGV4TWFwLmgiCiAjaW5jbHVk
ZSAiQ0NhbGxIZWxwZXJzLmgiCiAjaW5jbHVkZSA8d3RmL0JveC5oPgorI2luY2x1ZGUgPHd0Zi9J
bmRleE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9TaGFyZWRUYXNrLmg+CiAjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpckxp
dmVuZXNzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckxpdmVuZXNzLmgKaW5k
ZXggYWMxMThhYWY1ZjIzMGM4ZDBkYzlhYjNjNTJlNWMxNjY5NzFiYzhhZS4uZjAxNDYwYTQxOTVk
MmIwMDBjZTViZmFkMGIyYzdkMTc1OWQ2Y2M0OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL2Fpci9BaXJMaXZlbmVzcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9haXIvQWlyTGl2ZW5lc3MuaApAQCAtMzMsOCArMzMsOCBAQAogI2luY2x1ZGUgIkFpckluc3RJ
bmxpbmVzLmgiCiAjaW5jbHVkZSAiQWlyU3RhY2tTbG90LmgiCiAjaW5jbHVkZSAiQWlyVG1wSW5s
aW5lcy5oIgotI2luY2x1ZGUgIkIzSW5kZXhNYXAuaCIKLSNpbmNsdWRlICJCM0luZGV4U2V0Lmgi
CisjaW5jbHVkZSA8d3RmL0luZGV4TWFwLmg+CisjaW5jbHVkZSA8d3RmL0luZGV4U2V0Lmg+CiAj
aW5jbHVkZSA8d3RmL0luZGV4U3BhcnNlU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL0xpc3REdW1wLmg+
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyU3BpbGxFdmVy
eXRoaW5nLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyU3BpbGxFdmVyeXRo
aW5nLmNwcAppbmRleCAzYTA2MzZkZTlhMWJlYWFjOWRkZmFhY2RjODM0NDA3NmZkZTMzZWM4Li4x
Njc2NzA1OGZmNThmZWQ4ZGZiZTkzMTBjMDk3YzM4YzJmZTVhYzUxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpclNwaWxsRXZlcnl0aGluZy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJTcGlsbEV2ZXJ5dGhpbmcuY3BwCkBAIC0zNSw3
ICszNSw3IEBACiAjaW5jbHVkZSAiQWlyTGl2ZW5lc3MuaCIKICNpbmNsdWRlICJBaXJQaGFzZVNj
b3BlLmgiCiAjaW5jbHVkZSAiQWlyUmVnaXN0ZXJQcmlvcml0eS5oIgotI2luY2x1ZGUgIkIzSW5k
ZXhNYXAuaCIKKyNpbmNsdWRlIDx3dGYvSW5kZXhNYXAuaD4KIAogbmFtZXNwYWNlIEpTQyB7IG5h
bWVzcGFjZSBCMyB7IG5hbWVzcGFjZSBBaXIgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnVpbHRpbnMvR2VuZXJhdG9yUHJvdG90eXBlLmpzIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J1aWx0aW5zL0dlbmVyYXRvclByb3RvdHlwZS5qcwppbmRleCAzYzE0MDY4N2RmYzdl
MDBlZmU5MWFlODBiMmFjNjc2ZmE5YmY0OGY0Li40OTlkYmQzOTJlODMxM2RjZGQ4NmVjOGMxNjA1
NjlkN2Q2ZjU0OWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMv
R2VuZXJhdG9yUHJvdG90eXBlLmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlu
cy9HZW5lcmF0b3JQcm90b3R5cGUuanMKQEAgLTUxLDcgKzUxLDcgQEAgZnVuY3Rpb24gZ2VuZXJh
dG9yUmVzdW1lKGdlbmVyYXRvciwgc2VudFZhbHVlLCByZXN1bWVNb2RlKQogICAgIH0gZWxzZSB7
CiAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICBnZW5lcmF0b3IuQGdlbmVyYXRvclN0YXRlID0g
QEdlbmVyYXRvclN0YXRlRXhlY3V0aW5nOwotICAgICAgICAgICAgdmFsdWUgPSBnZW5lcmF0b3Iu
QGdlbmVyYXRvck5leHQuQGNhbGwoZ2VuZXJhdG9yLkBnZW5lcmF0b3JUaGlzLCBnZW5lcmF0b3Is
IHN0YXRlLCBzZW50VmFsdWUsIHJlc3VtZU1vZGUpOworICAgICAgICAgICAgdmFsdWUgPSBnZW5l
cmF0b3IuQGdlbmVyYXRvck5leHQuQGNhbGwoZ2VuZXJhdG9yLkBnZW5lcmF0b3JUaGlzLCBnZW5l
cmF0b3IsIHN0YXRlLCBzZW50VmFsdWUsIHJlc3VtZU1vZGUsIGdlbmVyYXRvci5AZ2VuZXJhdG9y
RnJhbWUpOwogICAgICAgICAgICAgaWYgKGdlbmVyYXRvci5AZ2VuZXJhdG9yU3RhdGUgPT09IEBH
ZW5lcmF0b3JTdGF0ZUV4ZWN1dGluZykgewogICAgICAgICAgICAgICAgIGdlbmVyYXRvci5AZ2Vu
ZXJhdG9yU3RhdGUgPSBAR2VuZXJhdG9yU3RhdGVDb21wbGV0ZWQ7CiAgICAgICAgICAgICAgICAg
ZG9uZSA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Qnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZUJhc2ljQmxvY2suY3BwCmluZGV4IDdmMTdjMGVmMTBiNDMzZmFjOGY1OGNiM2I5Y2E1
ZDRkMDE1YmJhMDguLjI5OTA4MmRkZDFlYzdlY2ZmN2E2YzE5ODNjMWVkYWJkZTUzYmNjM2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxv
Y2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2lj
QmxvY2suY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiQnl0ZWNvZGVCYXNpY0Jsb2Nr
LmgiCiAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJJbnRlcnByZXRlcklubGlu
ZXMuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiUHJlY2lzZUp1bXBUYXJn
ZXRzLmgiCiAKQEAgLTEwNSwxNSArMTA2LDIxIEBAIHN0YXRpYyBib29sIGlzSnVtcFRhcmdldChP
cGNvZGVJRCBvcGNvZGVJRCwgY29uc3QgVmVjdG9yPHVuc2lnbmVkLCAzMj4mIGp1bXBUYXJnCiAg
ICAgcmV0dXJuIHN0ZDo6YmluYXJ5X3NlYXJjaChqdW1wVGFyZ2V0cy5iZWdpbigpLCBqdW1wVGFy
Z2V0cy5lbmQoKSwgYnl0ZWNvZGVPZmZzZXQpOwogfQogCi1zdGF0aWMgdm9pZCBsaW5rQmxvY2tz
KEJ5dGVjb2RlQmFzaWNCbG9jayogcHJlZGVjZXNzb3IsIEJ5dGVjb2RlQmFzaWNCbG9jayogc3Vj
Y2Vzc29yKQotewotICAgIHByZWRlY2Vzc29yLT5hZGRTdWNjZXNzb3Ioc3VjY2Vzc29yKTsKLX0K
LQotdm9pZCBjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2NrcyhDb2RlQmxvY2sqIGNvZGVCbG9jaywg
VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9ja3Mp
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBCbG9jaywgdHlwZW5hbWUgSW5zdHJ1Y3Rpb24+Cit2b2lkIEJ5
dGVjb2RlQmFzaWNCbG9jazo6Y29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3NJbnRlcm5hbChCbG9j
ayogY29kZUJsb2NrLCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGlu
c3RydWN0aW9uQ291bnQsIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2Nr
Pj4mIGJhc2ljQmxvY2tzKQogewogICAgIFZlY3Rvcjx1bnNpZ25lZCwgMzI+IGp1bXBUYXJnZXRz
OwotICAgIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMoY29kZUJsb2NrLCBqdW1wVGFyZ2V0cyk7
CisgICAgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhjb2RlQmxvY2ssIGluc3RydWN0aW9uc0Jl
Z2luLCBpbnN0cnVjdGlvbkNvdW50LCBqdW1wVGFyZ2V0cyk7CisKKyAgICBhdXRvIGFwcGVuZEJs
b2NrID0gWyZdIChzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiYmIGJsb2NrKSB7
CisgICAgICAgIGJsb2NrLT5tX2luZGV4ID0gYmFzaWNCbG9ja3Muc2l6ZSgpOworICAgICAgICBi
YXNpY0Jsb2Nrcy5hcHBlbmQoV1RGTW92ZShibG9jaykpOworICAgIH07CisKKyAgICBhdXRvIGxp
bmtCbG9ja3MgPSBbJl0gKEJ5dGVjb2RlQmFzaWNCbG9jayogZnJvbSwgQnl0ZWNvZGVCYXNpY0Js
b2NrKiB0bykgeworICAgICAgICBmcm9tLT5hZGRTdWNjZXNzb3IodG8pOworICAgICAgICB0by0+
YWRkUHJlZGVjZXNzb3IoZnJvbSk7CisgICAgfTsKIAogICAgIC8vIENyZWF0ZSB0aGUgZW50cnkg
YW5kIGV4aXQgYmFzaWMgYmxvY2tzLgogICAgIGJhc2ljQmxvY2tzLnJlc2VydmVDYXBhY2l0eShq
dW1wVGFyZ2V0cy5zaXplKCkgKyAyKTsKQEAgLTEyMiwxOSArMTI5LDE3IEBAIHZvaWQgY29tcHV0
ZUJ5dGVjb2RlQmFzaWNCbG9ja3MoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFZlY3RvcjxzdGQ6OnVu
aXF1ZV9wdHI8Qnl0CiAgICAgYXV0byBmaXJzdEJsb2NrID0gc3RkOjptYWtlX3VuaXF1ZTxCeXRl
Y29kZUJhc2ljQmxvY2s+KDAsIDApOwogICAgIGxpbmtCbG9ja3MoZW50cnkuZ2V0KCksIGZpcnN0
QmxvY2suZ2V0KCkpOwogCi0gICAgYmFzaWNCbG9ja3MuYXBwZW5kKFdURk1vdmUoZW50cnkpKTsK
KyAgICBhcHBlbmRCbG9jayhXVEZNb3ZlKGVudHJ5KSk7CiAgICAgQnl0ZWNvZGVCYXNpY0Jsb2Nr
KiBjdXJyZW50ID0gZmlyc3RCbG9jay5nZXQoKTsKLSAgICBiYXNpY0Jsb2Nrcy5hcHBlbmQoV1RG
TW92ZShmaXJzdEJsb2NrKSk7CisgICAgYXBwZW5kQmxvY2soV1RGTW92ZShmaXJzdEJsb2NrKSk7
CiAKICAgICBhdXRvIGV4aXQgPSBzdGQ6Om1ha2VfdW5pcXVlPEJ5dGVjb2RlQmFzaWNCbG9jaz4o
Qnl0ZWNvZGVCYXNpY0Jsb2NrOjpFeGl0QmxvY2spOwogCiAgICAgYm9vbCBuZXh0SW5zdHJ1Y3Rp
b25Jc0xlYWRlciA9IGZhbHNlOwogCiAgICAgSW50ZXJwcmV0ZXIqIGludGVycHJldGVyID0gY29k
ZUJsb2NrLT52bSgpLT5pbnRlcnByZXRlcjsKLSAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25z
QmVnaW4gPSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCk7Ci0gICAgdW5zaWduZWQg
aW5zdHJ1Y3Rpb25Db3VudCA9IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpOwogICAg
IGZvciAodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQgPSAwOyBieXRlY29kZU9mZnNldCA8IGluc3Ry
dWN0aW9uQ291bnQ7KSB7Ci0gICAgICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0ZXIt
PmdldE9wY29kZUlEKGluc3RydWN0aW9uc0JlZ2luW2J5dGVjb2RlT2Zmc2V0XS51Lm9wY29kZSk7
CisgICAgICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGlu
c3RydWN0aW9uc0JlZ2luW2J5dGVjb2RlT2Zmc2V0XSk7CiAgICAgICAgIHVuc2lnbmVkIG9wY29k
ZUxlbmd0aCA9IG9wY29kZUxlbmd0aHNbb3Bjb2RlSURdOwogCiAgICAgICAgIGJvb2wgY3JlYXRl
ZEJsb2NrID0gZmFsc2U7CkBAIC0xNDIsNyArMTQ3LDcgQEAgdm9pZCBjb21wdXRlQnl0ZWNvZGVC
YXNpY0Jsb2NrcyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxC
eXQKICAgICAgICAgaWYgKGlzSnVtcFRhcmdldChvcGNvZGVJRCwganVtcFRhcmdldHMsIGJ5dGVj
b2RlT2Zmc2V0KSB8fCBuZXh0SW5zdHJ1Y3Rpb25Jc0xlYWRlcikgewogICAgICAgICAgICAgYXV0
byBuZXdCbG9jayA9IHN0ZDo6bWFrZV91bmlxdWU8Qnl0ZWNvZGVCYXNpY0Jsb2NrPihieXRlY29k
ZU9mZnNldCwgb3Bjb2RlTGVuZ3RoKTsKICAgICAgICAgICAgIGN1cnJlbnQgPSBuZXdCbG9jay5n
ZXQoKTsKLSAgICAgICAgICAgIGJhc2ljQmxvY2tzLmFwcGVuZChXVEZNb3ZlKG5ld0Jsb2NrKSk7
CisgICAgICAgICAgICBhcHBlbmRCbG9jayhXVEZNb3ZlKG5ld0Jsb2NrKSk7CiAgICAgICAgICAg
ICBjcmVhdGVkQmxvY2sgPSB0cnVlOwogICAgICAgICAgICAgbmV4dEluc3RydWN0aW9uSXNMZWFk
ZXIgPSBmYWxzZTsKICAgICAgICAgICAgIGJ5dGVjb2RlT2Zmc2V0ICs9IG9wY29kZUxlbmd0aDsK
QEAgLTE2OSw4ICsxNzQsNyBAQCB2b2lkIGNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzKENvZGVC
bG9jayogY29kZUJsb2NrLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dAogCiAgICAgICAgIGJv
b2wgZmFsbHNUaHJvdWdoID0gdHJ1ZTsgCiAgICAgICAgIGZvciAodW5zaWduZWQgYnl0ZWNvZGVP
ZmZzZXQgPSBibG9jay0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKTsgYnl0ZWNvZGVPZmZzZXQgPCBi
bG9jay0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKSArIGJsb2NrLT50b3RhbEJ5dGVjb2RlTGVuZ3Ro
KCk7KSB7Ci0gICAgICAgICAgICBjb25zdCBJbnN0cnVjdGlvbiYgY3VycmVudEluc3RydWN0aW9u
ID0gaW5zdHJ1Y3Rpb25zQmVnaW5bYnl0ZWNvZGVPZmZzZXRdOwotICAgICAgICAgICAgT3Bjb2Rl
SUQgb3Bjb2RlSUQgPSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoY3VycmVudEluc3RydWN0aW9u
LnUub3Bjb2RlKTsKKyAgICAgICAgICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0ZXIt
PmdldE9wY29kZUlEKGluc3RydWN0aW9uc0JlZ2luW2J5dGVjb2RlT2Zmc2V0XSk7CiAgICAgICAg
ICAgICB1bnNpZ25lZCBvcGNvZGVMZW5ndGggPSBvcGNvZGVMZW5ndGhzW29wY29kZUlEXTsKICAg
ICAgICAgICAgIC8vIElmIHdlIGZvdW5kIGEgdGVybWluYWwgYnl0ZWNvZGUsIGxpbmsgdG8gdGhl
IGV4aXQgYmxvY2suCiAgICAgICAgICAgICBpZiAoaXNUZXJtaW5hbChvcGNvZGVJRCkpIHsKQEAg
LTE4NSw3ICsxODksNyBAQCB2b2lkIGNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzKENvZGVCbG9j
ayogY29kZUJsb2NrLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dAogICAgICAgICAgICAgLy8g
YmxvY2sgYmVjYXVzZSB0aGUgZmluYWxseSBibG9jayB3aWxsIGNyZWF0ZSBpdHMgb3duIGNhdGNo
LCB3aGljaCB3aWxsIGdlbmVyYXRlIGEgSGFuZGxlckluZm8uCiAgICAgICAgICAgICBpZiAoaXNU
aHJvdyhvcGNvZGVJRCkpIHsKICAgICAgICAgICAgICAgICBBU1NFUlQoYnl0ZWNvZGVPZmZzZXQg
KyBvcGNvZGVMZW5ndGggPT0gYmxvY2stPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCkgKyBibG9jay0+
dG90YWxCeXRlY29kZUxlbmd0aCgpKTsKLSAgICAgICAgICAgICAgICBIYW5kbGVySW5mbyogaGFu
ZGxlciA9IGNvZGVCbG9jay0+aGFuZGxlckZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0
KTsKKyAgICAgICAgICAgICAgICBhdXRvKiBoYW5kbGVyID0gY29kZUJsb2NrLT5oYW5kbGVyRm9y
Qnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpOwogICAgICAgICAgICAgICAgIGZhbGxzVGhy
b3VnaCA9IGZhbHNlOwogICAgICAgICAgICAgICAgIGlmICghaGFuZGxlcikgewogICAgICAgICAg
ICAgICAgICAgICBsaW5rQmxvY2tzKGJsb2NrLCBleGl0LmdldCgpKTsKQEAgLTIwNSw3ICsyMDks
NyBAQCB2b2lkIGNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzKENvZGVCbG9jayogY29kZUJsb2Nr
LCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dAogICAgICAgICAgICAgaWYgKGlzQnJhbmNoKG9w
Y29kZUlEKSkgewogICAgICAgICAgICAgICAgIEFTU0VSVChieXRlY29kZU9mZnNldCArIG9wY29k
ZUxlbmd0aCA9PSBibG9jay0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKSArIGJsb2NrLT50b3RhbEJ5
dGVjb2RlTGVuZ3RoKCkpOwogICAgICAgICAgICAgICAgIFZlY3Rvcjx1bnNpZ25lZCwgMT4gYnl0
ZWNvZGVPZmZzZXRzSnVtcGVkVG87Ci0gICAgICAgICAgICAgICAgZmluZEp1bXBUYXJnZXRzRm9y
Qnl0ZWNvZGVPZmZzZXQoY29kZUJsb2NrLCBieXRlY29kZU9mZnNldCwgYnl0ZWNvZGVPZmZzZXRz
SnVtcGVkVG8pOworICAgICAgICAgICAgICAgIGZpbmRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zm
c2V0KGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb25zQmVnaW4sIGJ5dGVjb2RlT2Zmc2V0LCBieXRlY29k
ZU9mZnNldHNKdW1wZWRUbyk7CiAKICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgYmFzaWNCbG9ja3Muc2l6ZSgpOyBpKyspIHsKICAgICAgICAgICAgICAgICAgICAgQnl0
ZWNvZGVCYXNpY0Jsb2NrKiBvdGhlckJsb2NrID0gYmFzaWNCbG9ja3NbaV0uZ2V0KCk7CkBAIC0y
MjksMTAgKzIzMywyMCBAQCB2b2lkIGNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzKENvZGVCbG9j
ayogY29kZUJsb2NrLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dAogICAgICAgICB9CiAgICAg
fQogCi0gICAgYmFzaWNCbG9ja3MuYXBwZW5kKFdURk1vdmUoZXhpdCkpOworICAgIGFwcGVuZEJs
b2NrKFdURk1vdmUoZXhpdCkpOwogICAgIAogICAgIGZvciAoYXV0byYgYmFzaWNCbG9jayA6IGJh
c2ljQmxvY2tzKQogICAgICAgICBiYXNpY0Jsb2NrLT5zaHJpbmtUb0ZpdCgpOwogfQogCit2b2lk
IEJ5dGVjb2RlQmFzaWNCbG9jazo6Y29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MoQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgaW5z
dHJ1Y3Rpb25Db3VudCwgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+
PiYgYmFzaWNCbG9ja3MpCit7CisgICAgY29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3NJbnRlcm5h
bChjb2RlQmxvY2ssIGluc3RydWN0aW9uc0JlZ2luLCBpbnN0cnVjdGlvbkNvdW50LCBiYXNpY0Js
b2Nrcyk7Cit9CisKK3ZvaWQgQnl0ZWNvZGVCYXNpY0Jsb2NrOjpjb21wdXRlQnl0ZWNvZGVCYXNp
Y0Jsb2NrcyhVbmxpbmtlZENvZGVCbG9jayogY29kZUJsb2NrLCBVbmxpbmtlZEluc3RydWN0aW9u
KiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCwgVmVjdG9yPHN0
ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9ja3MpCit7CisgICAg
Qnl0ZWNvZGVCYXNpY0Jsb2NrOjpjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2Nrc0ludGVybmFsKGNv
ZGVCbG9jaywgaW5zdHJ1Y3Rpb25zQmVnaW4sIGluc3RydWN0aW9uQ291bnQsIGJhc2ljQmxvY2tz
KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmgKaW5kZXggY2Q3MTQ3N2VkNTA2YWE3ODgw
MjE2NWZhY2RiN2E2ZDQ2ZjM4ZGMyYS4uNmEyZWRjNjBkYjNkN2I5OWRjY2RmZTk0NzhiZmNmZDUx
MGU4ODI5YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVj
b2RlQmFzaWNCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZUJhc2ljQmxvY2suaApAQCAtMzMsNiArMzMsOSBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIGNs
YXNzIENvZGVCbG9jazsKK2NsYXNzIFVubGlua2VkQ29kZUJsb2NrOworc3RydWN0IEluc3RydWN0
aW9uOworc3RydWN0IFVubGlua2VkSW5zdHJ1Y3Rpb247CiAKIGNsYXNzIEJ5dGVjb2RlQmFzaWNC
bG9jayB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC00OCwyOCArNTEsMzkgQEAg
Y2xhc3MgQnl0ZWNvZGVCYXNpY0Jsb2NrIHsKICAgICB1bnNpZ25lZCBsZWFkZXJCeXRlY29kZU9m
ZnNldCgpIHsgcmV0dXJuIG1fbGVhZGVyQnl0ZWNvZGVPZmZzZXQ7IH0KICAgICB1bnNpZ25lZCB0
b3RhbEJ5dGVjb2RlTGVuZ3RoKCkgeyByZXR1cm4gbV90b3RhbEJ5dGVjb2RlTGVuZ3RoOyB9CiAK
LSAgICBWZWN0b3I8dW5zaWduZWQ+JiBieXRlY29kZU9mZnNldHMoKSB7IHJldHVybiBtX2J5dGVj
b2RlT2Zmc2V0czsgfQotICAgIHZvaWQgYWRkQnl0ZWNvZGVMZW5ndGgodW5zaWduZWQpOworICAg
IGNvbnN0IFZlY3Rvcjx1bnNpZ25lZD4mIGJ5dGVjb2RlT2Zmc2V0cygpIGNvbnN0IHsgcmV0dXJu
IG1fYnl0ZWNvZGVPZmZzZXRzOyB9CiAKLSAgICBWZWN0b3I8Qnl0ZWNvZGVCYXNpY0Jsb2NrKj4m
IHN1Y2Nlc3NvcnMoKSB7IHJldHVybiBtX3N1Y2Nlc3NvcnM7IH0KLSAgICB2b2lkIGFkZFN1Y2Nl
c3NvcihCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrKSB7IG1fc3VjY2Vzc29ycy5hcHBlbmQoYmxv
Y2spOyB9CisgICAgY29uc3QgVmVjdG9yPEJ5dGVjb2RlQmFzaWNCbG9jayo+JiBzdWNjZXNzb3Jz
KCkgY29uc3QgeyByZXR1cm4gbV9zdWNjZXNzb3JzOyB9CisgICAgY29uc3QgVmVjdG9yPEJ5dGVj
b2RlQmFzaWNCbG9jayo+JiBwcmVkZWNlc3NvcnMoKSBjb25zdCB7IHJldHVybiBtX3ByZWRlY2Vz
c29yczsgfQogCiAgICAgRmFzdEJpdFZlY3RvciYgaW4oKSB7IHJldHVybiBtX2luOyB9CiAgICAg
RmFzdEJpdFZlY3RvciYgb3V0KCkgeyByZXR1cm4gbV9vdXQ7IH0KIAorICAgIHVuc2lnbmVkIGlu
ZGV4KCkgY29uc3QgeyByZXR1cm4gbV9pbmRleDsgfQorCisgICAgc3RhdGljIHZvaWQgY29tcHV0
ZUJ5dGVjb2RlQmFzaWNCbG9ja3MoQ29kZUJsb2NrKiwgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9u
c0JlZ2luLCB1bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50LCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRy
PEJ5dGVjb2RlQmFzaWNCbG9jaz4+Jik7CisgICAgc3RhdGljIHZvaWQgY29tcHV0ZUJ5dGVjb2Rl
QmFzaWNCbG9ja3MoVW5saW5rZWRDb2RlQmxvY2sqLCBVbmxpbmtlZEluc3RydWN0aW9uKiBpbnN0
cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCwgVmVjdG9yPHN0ZDo6dW5p
cXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYpOworCiBwcml2YXRlOgorICAgIHRlbXBsYXRl
PHR5cGVuYW1lIEJsb2NrLCB0eXBlbmFtZSBJbnN0cnVjdGlvbj4gc3RhdGljIHZvaWQgY29tcHV0
ZUJ5dGVjb2RlQmFzaWNCbG9ja3NJbnRlcm5hbChCbG9jayogY29kZUJsb2NrLCBJbnN0cnVjdGlv
biogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQsIFZlY3Rvcjxz
dGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mIGJhc2ljQmxvY2tzKTsKKworICAg
IHZvaWQgYWRkU3VjY2Vzc29yKEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2spIHsgbV9zdWNjZXNz
b3JzLmFwcGVuZChibG9jayk7IH0KKyAgICB2b2lkIGFkZFByZWRlY2Vzc29yKEJ5dGVjb2RlQmFz
aWNCbG9jayogYmxvY2spIHsgbV9wcmVkZWNlc3NvcnMuYXBwZW5kKGJsb2NrKTsgfQorCisgICAg
dm9pZCBhZGRCeXRlY29kZUxlbmd0aCh1bnNpZ25lZCk7CisKICAgICB1bnNpZ25lZCBtX2xlYWRl
ckJ5dGVjb2RlT2Zmc2V0OwogICAgIHVuc2lnbmVkIG1fdG90YWxCeXRlY29kZUxlbmd0aDsKKyAg
ICB1bnNpZ25lZCBtX2luZGV4OwogCiAgICAgVmVjdG9yPHVuc2lnbmVkPiBtX2J5dGVjb2RlT2Zm
c2V0czsKICAgICBWZWN0b3I8Qnl0ZWNvZGVCYXNpY0Jsb2NrKj4gbV9zdWNjZXNzb3JzOworICAg
IFZlY3RvcjxCeXRlY29kZUJhc2ljQmxvY2sqPiBtX3ByZWRlY2Vzc29yczsKIAogICAgIEZhc3RC
aXRWZWN0b3IgbV9pbjsKICAgICBGYXN0Qml0VmVjdG9yIG1fb3V0OwogfTsKIAotdm9pZCBjb21w
dXRlQnl0ZWNvZGVCYXNpY0Jsb2NrcyhDb2RlQmxvY2sqLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRy
PEJ5dGVjb2RlQmFzaWNCbG9jaz4+Jik7Ci0KIGlubGluZSBCeXRlY29kZUJhc2ljQmxvY2s6OkJ5
dGVjb2RlQmFzaWNCbG9jayh1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgbGVuZ3RoKQogICAgIDog
bV9sZWFkZXJCeXRlY29kZU9mZnNldChzdGFydCkKICAgICAsIG1fdG90YWxCeXRlY29kZUxlbmd0
aChsZW5ndGgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zYjliMTA5YmI4
MDRhMzFmMDE0YTdmMjg1MzQxNjJlNDE3NDViZDYzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcApA
QCAtMCwwICsxLDI5MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBZdXN1a2UgU3V6dWtp
IDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5oIgorCisjaW5jbHVkZSAiQnl0
ZWNvZGVMaXZlbmVzc0FuYWx5c2lzSW5saW5lcy5oIgorI2luY2x1ZGUgIkJ5dGVjb2RlUmV3cml0
ZXIuaCIKKyNpbmNsdWRlICJCeXRlY29kZVVzZURlZi5oIgorI2luY2x1ZGUgIklkZW50aWZpZXJJ
bmxpbmVzLmgiCisjaW5jbHVkZSAiSW50ZXJwcmV0ZXJJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlND
SlNWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRlICJKU0dlbmVyYXRvckZ1bmN0aW9uLmgiCisjaW5j
bHVkZSAiU3Ryb25nSW5saW5lcy5oIgorI2luY2x1ZGUgIlVubGlua2VkQ29kZUJsb2NrLmgiCisj
aW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitzdHJ1Y3QgWWll
bGREYXRhIHsKKyAgICBzaXplX3Qgc2F2ZVBvaW50OworICAgIHNpemVfdCBtZXJnZVBvaW50Owor
ICAgIHNpemVfdCByZXN1bWVQb2ludDsKKyAgICBGYXN0Qml0VmVjdG9yIGxpdmVuZXNzOworfTsK
KworY2xhc3MgQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24geworcHVibGljOgorICAgIHR5cGVk
ZWYgVmVjdG9yPFlpZWxkRGF0YT4gWWllbGRzOworCisgICAgQnl0ZWNvZGVHZW5lcmF0b3JpZmlj
YXRpb24oVW5saW5rZWRDb2RlQmxvY2sqIGNvZGVCbG9jaywgVW5saW5rZWRDb2RlQmxvY2s6OlVu
cGFja2VkSW5zdHJ1Y3Rpb25zJiBpbnN0cnVjdGlvbnMsIFN5bWJvbFRhYmxlKiBnZW5lcmF0b3JG
cmFtZVN5bWJvbFRhYmxlLCBpbnQgZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZUluZGV4KQorICAg
ICAgICA6IG1fZ3JhcGgoY29kZUJsb2NrLCBpbnN0cnVjdGlvbnMpCisgICAgICAgICwgbV9pbnNl
cnRpb25TZXQobV9ncmFwaCkKKyAgICAgICAgLCBtX2dlbmVyYXRvckZyYW1lU3ltYm9sVGFibGUo
KmNvZGVCbG9jay0+dm0oKSwgZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZSkKKyAgICAgICAgLCBt
X2dlbmVyYXRvckZyYW1lU3ltYm9sVGFibGVJbmRleChnZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxl
SW5kZXgpCisgICAgeworICAgICAgICBmb3IgKEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2sgOiBt
X2dyYXBoKSB7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0IDogYmxv
Y2stPmJ5dGVjb2RlT2Zmc2V0cygpKSB7CisgICAgICAgICAgICAgICAgY29uc3QgVW5saW5rZWRJ
bnN0cnVjdGlvbiogcGMgPSAmbV9ncmFwaC5pbnN0cnVjdGlvbnMoKVtieXRlY29kZU9mZnNldF07
CisgICAgICAgICAgICAgICAgc3dpdGNoIChwYy0+dS5vcGNvZGUpIHsKKyAgICAgICAgICAgICAg
ICBjYXNlIG9wX3NhdmU6IHsKKyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbGl2ZUNhbGxl
ZUxvY2Fsc0luZGV4ID0gcGNbMl0udS5pbmRleDsKKyAgICAgICAgICAgICAgICAgICAgaW50IG9m
ZnNldCA9IHBjWzNdLnUub3BlcmFuZDsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxpdmVDYWxs
ZWVMb2NhbHNJbmRleCA+PSBtX3lpZWxkcy5zaXplKCkpCisgICAgICAgICAgICAgICAgICAgICAg
ICBtX3lpZWxkcy5yZXNpemUobGl2ZUNhbGxlZUxvY2Fsc0luZGV4ICsgMSk7CisgICAgICAgICAg
ICAgICAgICAgIG1feWllbGRzW2xpdmVDYWxsZWVMb2NhbHNJbmRleF0uc2F2ZVBvaW50ID0gYnl0
ZWNvZGVPZmZzZXQ7CisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIG1lcmdlUG9pbnQgPSBi
eXRlY29kZU9mZnNldCArIG9mZnNldDsKKyAgICAgICAgICAgICAgICAgICAgbV95aWVsZHNbbGl2
ZUNhbGxlZUxvY2Fsc0luZGV4XS5tZXJnZVBvaW50ID0gbWVyZ2VQb2ludDsKKyAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgY2Fz
ZSBvcF9yZXN1bWU6IHsKKyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxv
Y2Fsc0luZGV4ID0gcGNbMl0udS5pbmRleDsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxpdmVD
YWxsZWVMb2NhbHNJbmRleCA+PSBtX3lpZWxkcy5zaXplKCkpCisgICAgICAgICAgICAgICAgICAg
ICAgICBtX3lpZWxkcy5yZXNpemUobGl2ZUNhbGxlZUxvY2Fsc0luZGV4ICsgMSk7CisgICAgICAg
ICAgICAgICAgICAgIG1feWllbGRzW2xpdmVDYWxsZWVMb2NhbHNJbmRleF0ucmVzdW1lUG9pbnQg
PSBieXRlY29kZU9mZnNldDsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
fQorCisgICAgc3RydWN0IFN0b3JhZ2UgeworICAgICAgICBJZGVudGlmaWVyIGlkZW50aWZpZXI7
CisgICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXJJbmRleDsKKyAgICAgICAgU2NvcGVPZmZzZXQg
c2NvcGVPZmZzZXQ7CisgICAgfTsKKworICAgIHZvaWQgcnVuKCk7CisKKyAgICBCeXRlY29kZUdy
YXBoPFVubGlua2VkQ29kZUJsb2NrPiYgZ3JhcGgoKSB7IHJldHVybiBtX2dyYXBoOyB9CisKKyAg
ICBjb25zdCBZaWVsZHMmIHlpZWxkcygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV95
aWVsZHM7CisgICAgfQorCisgICAgWWllbGRzJiB5aWVsZHMoKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIG1feWllbGRzOworICAgIH0KKworcHJpdmF0ZToKKyAgICBTdG9yYWdlIHN0b3JhZ2VGb3JH
ZW5lcmF0b3JMb2NhbCh1bnNpZ25lZCBpbmRleCkKKyAgICB7CisgICAgICAgIC8vIFdlIGFzc2ln
biBhIHN5bWJvbCB0byBhIHJlZ2lzdGVyLiBUaGVyZSBpcyBvbmUtb24tb25lIGNvcnJlc3BvbmRp
bmcgYmV0d2VlbiBhIHJlZ2lzdGVyIGFuZCBhIHN5bWJvbC4KKyAgICAgICAgLy8gQnkgZG9pbmcg
c28sIHdlIGFsbG9jYXRlIHRoZSBzcGVjaWZpYyBzdG9yYWdlIHRvIHNhdmUgdGhlIGdpdmVuIHJl
Z2lzdGVyLgorICAgICAgICAvLyBUaGlzIGFsbG93IHVzIG5vdCB0byBzYXZlIGFsbCB0aGUgbGl2
ZSByZWdpc3RlcnMgZXZlbiBpZiB0aGUgcmVnaXN0ZXJzIGFyZSBub3Qgb3ZlcndyaXR0ZW4gZnJv
bSB0aGUgcHJldmlvdXMgcmVzdW1pbmcgdGltZS4KKyAgICAgICAgLy8gSXQgbWVhbnMgdGhhdCwg
dGhlIHJlZ2lzdGVyIGNhbiBiZSByZXRyaWV2ZWQgZXZlbiBpZiB0aGUgaW1tZWRpYXRlIHByZXZp
b3VzIG9wX3NhdmUgZG9lcyBub3Qgc2F2ZSBpdC4KKworICAgICAgICBpZiAobV9zdG9yYWdlcy5z
aXplKCkgPD0gaW5kZXgpCisgICAgICAgICAgICBtX3N0b3JhZ2VzLnJlc2l6ZShpbmRleCArIDEp
OworICAgICAgICBpZiAoT3B0aW9uYWw8U3RvcmFnZT4gc3RvcmFnZSA9IG1fc3RvcmFnZXNbaW5k
ZXhdKQorICAgICAgICAgICAgcmV0dXJuICpzdG9yYWdlOworCisgICAgICAgIFVubGlua2VkQ29k
ZUJsb2NrKiBjb2RlQmxvY2sgPSBtX2dyYXBoLmNvZGVCbG9jaygpOworICAgICAgICBJZGVudGlm
aWVyIGlkZW50aWZpZXIgPSBJZGVudGlmaWVyOjpmcm9tVWlkKFByaXZhdGVOYW1lKCkpOworICAg
ICAgICB1bnNpZ25lZCBpZGVudGlmaWVySW5kZXggPSBjb2RlQmxvY2stPm51bWJlck9mSWRlbnRp
ZmllcnMoKTsKKyAgICAgICAgY29kZUJsb2NrLT5hZGRJZGVudGlmaWVyKGlkZW50aWZpZXIpOwor
ICAgICAgICBTY29wZU9mZnNldCBzY29wZU9mZnNldCA9IG1fZ2VuZXJhdG9yRnJhbWVTeW1ib2xU
YWJsZS0+dGFrZU5leHRTY29wZU9mZnNldChOb0xvY2tpbmdOZWNlc3NhcnkpOworICAgICAgICBt
X2dlbmVyYXRvckZyYW1lU3ltYm9sVGFibGUtPnNldChOb0xvY2tpbmdOZWNlc3NhcnksIGlkZW50
aWZpZXIuaW1wbCgpLCBTeW1ib2xUYWJsZUVudHJ5KFZhck9mZnNldChzY29wZU9mZnNldCkpKTsK
KworICAgICAgICBTdG9yYWdlIHN0b3JhZ2UgPSB7CisgICAgICAgICAgICBpZGVudGlmaWVyLAor
ICAgICAgICAgICAgaWRlbnRpZmllckluZGV4LAorICAgICAgICAgICAgc2NvcGVPZmZzZXQKKyAg
ICAgICAgfTsKKyAgICAgICAgbV9zdG9yYWdlc1tpbmRleF0gPSBzdG9yYWdlOworICAgICAgICBy
ZXR1cm4gc3RvcmFnZTsKKyAgICB9CisKKyAgICBCeXRlY29kZUdyYXBoPFVubGlua2VkQ29kZUJs
b2NrPiBtX2dyYXBoOworICAgIEJ5dGVjb2RlUmV3cml0ZXIgbV9pbnNlcnRpb25TZXQ7CisgICAg
VmVjdG9yPE9wdGlvbmFsPFN0b3JhZ2U+PiBtX3N0b3JhZ2VzOworICAgIFlpZWxkcyBtX3lpZWxk
czsKKyAgICBTdHJvbmc8U3ltYm9sVGFibGU+IG1fZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZTsK
KyAgICBpbnQgbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlSW5kZXg7Cit9OworCitjbGFzcyBH
ZW5lcmF0b3JMaXZlbmVzc0FuYWx5c2lzIDogcHVibGljIEJ5dGVjb2RlTGl2ZW5lc3NMb2NhbFBy
b3BhZ2F0aW9uPEdlbmVyYXRvckxpdmVuZXNzQW5hbHlzaXM+IHsKK3B1YmxpYzoKKyAgICBHZW5l
cmF0b3JMaXZlbmVzc0FuYWx5c2lzKEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uJiBnZW5lcmF0
b3JpZmljYXRpb24pCisgICAgICAgIDogbV9nZW5lcmF0b3JpZmljYXRpb24oZ2VuZXJhdG9yaWZp
Y2F0aW9uKQorICAgIHsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgor
ICAgIHZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChVbmxpbmtlZENvZGVCbG9jayog
Y29kZUJsb2NrLCBPcGNvZGVJRCBvcGNvZGVJRCwgVW5saW5rZWRJbnN0cnVjdGlvbiogaW5zdHJ1
Y3Rpb24sIEZhc3RCaXRWZWN0b3ImIG91dCwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikKKyAgICB7
CisgICAgICAgIEpTQzo6Y29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChjb2RlQmxvY2ssIG9w
Y29kZUlELCBpbnN0cnVjdGlvbiwgZnVuY3Rvcik7CisKKyAgICAgICAgc3dpdGNoIChvcGNvZGVJ
RCkgeworICAgICAgICBjYXNlIG9wX3NhdmU6CisgICAgICAgICAgICByZXR1cm47CisKKyAgICAg
ICAgY2FzZSBvcF9yZXN1bWU6IHsKKyAgICAgICAgICAgIC8vIHJlc3VtZSBkZWZpbmVzIGFsbCB0
aGUgcmVnaXN0ZXJzLgorICAgICAgICAgICAgb3V0LmNsZWFyQWxsKCk7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KKyAg
ICB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoVW5saW5rZWRDb2RlQmxvY2sqIGNv
ZGVCbG9jaywgT3Bjb2RlSUQgb3Bjb2RlSUQsIFVubGlua2VkSW5zdHJ1Y3Rpb24qIGluc3RydWN0
aW9uLCBGYXN0Qml0VmVjdG9yJiwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikKKyAgICB7CisgICAg
ICAgIEpTQzo6Y29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldChjb2RlQmxvY2ssIG9wY29kZUlE
LCBpbnN0cnVjdGlvbiwgZnVuY3Rvcik7CisKKyAgICAgICAgc3dpdGNoIChvcGNvZGVJRCkgewor
ICAgICAgICBjYXNlIG9wX3NhdmU6CisgICAgICAgIGNhc2Ugb3BfcmVzdW1lOiB7CisgICAgICAg
ICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBpbnN0cnVjdGlv
blsxXS51Lm9wZXJhbmQpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKworICAg
IHZvaWQgcnVuKCkKKyAgICB7CisgICAgICAgIC8vIFBlcmZvcm0gbW9kaWZpZWQgbGl2ZW5lc3Mg
YW5hbHlzaXMgdG8gZGV0ZXJtaW5lIHdoaWNoIGxvY2FscyBhcmUgbGl2ZSBhdCB0aGUgbWVyZ2Ug
cG9pbnRzLgorICAgICAgICAvLyBUaGlzIHByb2R1Y2VzIHRoZSBjb25zZXJ2YXRpdmUgcmVzdWx0
cyBmb3IgdGhlIHF1ZXN0aW9uLCAid2hpY2ggdmFyaWFibGVzIHNob3VsZCBiZSBzYXZlZCBhbmQg
cmVzdW1lZD8iLgorCisgICAgICAgIEJ5dGVjb2RlR3JhcGg8VW5saW5rZWRDb2RlQmxvY2s+JiBn
cmFwaCA9IG1fZ2VuZXJhdG9yaWZpY2F0aW9uLmdyYXBoKCk7CisgICAgICAgIFVubGlua2VkQ29k
ZUJsb2NrKiBjb2RlQmxvY2sgPSBncmFwaC5jb2RlQmxvY2soKTsKKyAgICAgICAgdW5zaWduZWQg
bnVtYmVyT2ZWYXJpYWJsZXMgPSBjb2RlQmxvY2stPm1fbnVtQ2FsbGVlTG9jYWxzOworICAgICAg
ICBmb3IgKEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2sgOiBncmFwaCkgeworICAgICAgICAgICAg
YmxvY2stPmluKCkucmVzaXplKG51bWJlck9mVmFyaWFibGVzKTsKKyAgICAgICAgICAgIGJsb2Nr
LT5vdXQoKS5yZXNpemUobnVtYmVyT2ZWYXJpYWJsZXMpOworICAgICAgICAgICAgYmxvY2stPmlu
KCkuY2xlYXJBbGwoKTsKKyAgICAgICAgICAgIGJsb2NrLT5vdXQoKS5jbGVhckFsbCgpOworICAg
ICAgICB9CisKKyAgICAgICAgYm9vbCBjaGFuZ2VkOworICAgICAgICBCeXRlY29kZUJhc2ljQmxv
Y2sqIGxhc3RCbG9jayA9IGdyYXBoLmxhc3QoKTsKKyAgICAgICAgbGFzdEJsb2NrLT5pbigpLmNs
ZWFyQWxsKCk7CisgICAgICAgIGxhc3RCbG9jay0+b3V0KCkuY2xlYXJBbGwoKTsKKyAgICAgICAg
RmFzdEJpdFZlY3RvciBuZXdPdXQ7CisgICAgICAgIG5ld091dC5yZXNpemUobGFzdEJsb2NrLT5v
dXQoKS5udW1CaXRzKCkpOworICAgICAgICBkbyB7CisgICAgICAgICAgICBjaGFuZ2VkID0gZmFs
c2U7CisgICAgICAgICAgICBmb3IgKHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+
JiBibG9jayA6IGdyYXBoLmJhc2ljQmxvY2tzSW5SZXZlcnNlT3JkZXIoKSkgeworICAgICAgICAg
ICAgICAgIG5ld091dC5jbGVhckFsbCgpOworICAgICAgICAgICAgICAgIGZvciAoQnl0ZWNvZGVC
YXNpY0Jsb2NrKiBzdWNjZXNzb3IgOiBibG9jay0+c3VjY2Vzc29ycygpKQorICAgICAgICAgICAg
ICAgICAgICBuZXdPdXQubWVyZ2Uoc3VjY2Vzc29yLT5pbigpKTsKKyAgICAgICAgICAgICAgICBi
bG9jay0+b3V0KCkuc2V0KG5ld091dCk7CisgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBjb21w
dXRlTG9jYWxMaXZlbmVzc0ZvckJsb2NrKG1fZ2VuZXJhdG9yaWZpY2F0aW9uLmdyYXBoKCksIGJs
b2NrLmdldCgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSB3aGlsZSAoY2hhbmdlZCk7CisK
KyAgICAgICAgZm9yIChZaWVsZERhdGEmIGRhdGEgOiBtX2dlbmVyYXRvcmlmaWNhdGlvbi55aWVs
ZHMoKSkKKyAgICAgICAgICAgIGRhdGEubGl2ZW5lc3MgPSBnZXRMaXZlbmVzc0luZm9BdEJ5dGVj
b2RlT2Zmc2V0KG1fZ2VuZXJhdG9yaWZpY2F0aW9uLmdyYXBoKCksIGRhdGEubWVyZ2VQb2ludCk7
CisgICAgfQorCitwcml2YXRlOgorICAgIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uJiBtX2dl
bmVyYXRvcmlmaWNhdGlvbjsKK307CisKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb246
OnJ1bigpCit7CisgICAgLy8gV2UgY2FsY3VsYXRlIHRoZSBsaXZlbmVzcyBhdCBlYWNoIG1lcmdl
IHBvaW50LiBUaGlzIGdpdmVzIHVzIHRoZSBpbmZvcm1hdGlvbiB3aGljaCByZWdpc3RlcnMgc2hv
dWxkIGJlIHNhdmVkIGFuZCByZXN1bWVkIGNvbnNlcnZhdGl2ZWx5LgorCisgICAgeworICAgICAg
ICBHZW5lcmF0b3JMaXZlbmVzc0FuYWx5c2lzIHBhc3MoKnRoaXMpOworICAgICAgICBwYXNzLnJ1
bigpOworICAgIH0KKworICAgIFVubGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBtX2dyYXBo
LmNvZGVCbG9jaygpOworICAgIGZvciAoY29uc3QgWWllbGREYXRhJiBkYXRhIDogbV95aWVsZHMp
IHsKKyAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHNjb3BlID0gdmlydHVhbFJlZ2lzdGVyRm9yQXJn
dW1lbnQoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6R2VuZXJhdG9y
QXJndW1lbnQ6OkZyYW1lKSk7CisKKyAgICAgICAgLy8gb3Bfc2F2ZS4KKyAgICAgICAgZGF0YS5s
aXZlbmVzcy5mb3JFYWNoU2V0Qml0KFsmXShzaXplX3QgaW5kZXgpIHsKKyAgICAgICAgICAgIFZp
cnR1YWxSZWdpc3RlciBvcGVyYW5kID0gdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaW5kZXgpOwor
ICAgICAgICAgICAgU3RvcmFnZSBzdG9yYWdlID0gc3RvcmFnZUZvckdlbmVyYXRvckxvY2FsKGlu
ZGV4KTsKKworICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0KGRhdGEuc2F2ZVBvaW50
LAorICAgICAgICAgICAgICAgIG9wX3B1dF90b19zY29wZSwKKyAgICAgICAgICAgICAgICBzY29w
ZS5vZmZzZXQoKSwgLy8gc2NvcGUKKyAgICAgICAgICAgICAgICBzdG9yYWdlLmlkZW50aWZpZXJJ
bmRleCwgLy8gaWRlbnRpZmllcgorICAgICAgICAgICAgICAgIG9wZXJhbmQub2Zmc2V0KCksIC8v
IHZhbHVlCisgICAgICAgICAgICAgICAgR2V0UHV0SW5mbyhEb05vdFRocm93SWZOb3RGb3VuZCwg
TG9jYWxDbG9zdXJlVmFyLCBJbml0aWFsaXphdGlvbk1vZGU6Ok5vdEluaXRpYWxpemF0aW9uKS5v
cGVyYW5kKCksIC8vIGluZm8KKyAgICAgICAgICAgICAgICBtX2dlbmVyYXRvckZyYW1lU3ltYm9s
VGFibGVJbmRleCwgLy8gc3ltYm9sIHRhYmxlIGNvbnN0YW50IGluZGV4CisgICAgICAgICAgICAg
ICAgc3RvcmFnZS5zY29wZU9mZnNldC5vZmZzZXQoKSAvLyBzY29wZSBvZmZzZXQKKyAgICAgICAg
ICAgICk7CisgICAgICAgIH0pOworCisgICAgICAgIC8vIG9wX3Jlc3VtZS4KKyAgICAgICAgZGF0
YS5saXZlbmVzcy5mb3JFYWNoU2V0Qml0KFsmXShzaXplX3QgaW5kZXgpIHsKKyAgICAgICAgICAg
IFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kID0gdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaW5kZXgp
OworICAgICAgICAgICAgU3RvcmFnZSBzdG9yYWdlID0gc3RvcmFnZUZvckdlbmVyYXRvckxvY2Fs
KGluZGV4KTsKKworICAgICAgICAgICAgVW5saW5rZWRWYWx1ZVByb2ZpbGUgcHJvZmlsZSA9IGNv
ZGVCbG9jay0+YWRkVmFsdWVQcm9maWxlKCk7CisgICAgICAgICAgICBtX2luc2VydGlvblNldC5p
bnNlcnQoZGF0YS5yZXN1bWVQb2ludCwKKyAgICAgICAgICAgICAgICBvcF9nZXRfZnJvbV9zY29w
ZSwKKyAgICAgICAgICAgICAgICBvcGVyYW5kLm9mZnNldCgpLCAvLyBkc3QKKyAgICAgICAgICAg
ICAgICBzY29wZS5vZmZzZXQoKSwgLy8gc2NvcGUKKyAgICAgICAgICAgICAgICBzdG9yYWdlLmlk
ZW50aWZpZXJJbmRleCwgLy8gaWRlbnRpZmllcgorICAgICAgICAgICAgICAgIEdldFB1dEluZm8o
RG9Ob3RUaHJvd0lmTm90Rm91bmQsIExvY2FsQ2xvc3VyZVZhciwgSW5pdGlhbGl6YXRpb25Nb2Rl
OjpOb3RJbml0aWFsaXphdGlvbikub3BlcmFuZCgpLCAvLyBpbmZvCisgICAgICAgICAgICAgICAg
MCwgLy8gbG9jYWwgc2NvcGUgZGVwdGgKKyAgICAgICAgICAgICAgICBzdG9yYWdlLnNjb3BlT2Zm
c2V0Lm9mZnNldCgpLCAvLyBzY29wZSBvZmZzZXQKKyAgICAgICAgICAgICAgICBwcm9maWxlIC8v
IHByb2ZpbGUKKyAgICAgICAgICAgICk7CisgICAgICAgIH0pOworCisgICAgICAgIC8vIENsaXAg
dGhlIHVubmVjZXNzYXJ5IGJ5dGVjb2Rlcy4KKyAgICAgICAgbV9pbnNlcnRpb25TZXQucmVtb3Zl
Qnl0ZWNvZGUoZGF0YS5zYXZlUG9pbnQpOworICAgICAgICBtX2luc2VydGlvblNldC5yZW1vdmVC
eXRlY29kZShkYXRhLnJlc3VtZVBvaW50KTsKKyAgICB9CisKKyAgICBtX2luc2VydGlvblNldC5l
eGVjdXRlKCk7Cit9CisKK3ZvaWQgcGVyZm9ybUdlbmVyYXRvcmlmaWNhdGlvbihVbmxpbmtlZENv
ZGVCbG9jayogY29kZUJsb2NrLCBVbmxpbmtlZENvZGVCbG9jazo6VW5wYWNrZWRJbnN0cnVjdGlv
bnMmIGluc3RydWN0aW9ucywgU3ltYm9sVGFibGUqIGdlbmVyYXRvckZyYW1lU3ltYm9sVGFibGUs
IGludCBnZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlSW5kZXgpCit7CisgICAgQnl0ZWNvZGVHZW5l
cmF0b3JpZmljYXRpb24gcGFzcyhjb2RlQmxvY2ssIGluc3RydWN0aW9ucywgZ2VuZXJhdG9yRnJh
bWVTeW1ib2xUYWJsZSwgZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZUluZGV4KTsKKyAgICBwYXNz
LnJ1bigpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZWI3ZWM5NmVkNzBkYmJhMjIxMTFlYjEzNzczM2ZiMjAwNTViMTExYQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUdlbmVy
YXRvcmlmaWNhdGlvbi5oCkBAIC0wLDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTYgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2luY2x1ZGUgIlVubGlua2VkQ29kZUJsb2NrLmgiCisKK25hbWVzcGFjZSBK
U0MgeworCitjbGFzcyBTeW1ib2xUYWJsZTsKKwordm9pZCBwZXJmb3JtR2VuZXJhdG9yaWZpY2F0
aW9uKFVubGlua2VkQ29kZUJsb2NrKiwgVW5saW5rZWRDb2RlQmxvY2s6OlVucGFja2VkSW5zdHJ1
Y3Rpb25zJiwgU3ltYm9sVGFibGUqIGdlbmVyYXRvckZyYW1lU3ltYm9sVGFibGUsIGludCBnZW5l
cmF0b3JGcmFtZVN5bWJvbFRhYmxlSW5kZXgpOworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUdyYXBoLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVHcmFwaC5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmRjMzY4MTZjMDY0MzIxNWFlMzE1NzdhNTJhZDg0NWE1NzkyMzVkZjQKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVHcmFwaC5oCkBAIC0w
LDAgKzEsMTI0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IFl1c3VrZSBTdXp1a2kgPHV0
YXRhbmUudGVhQGdtYWlsLmNvbT4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRl
ICJCeXRlY29kZUJhc2ljQmxvY2suaCIKKyNpbmNsdWRlIDx3dGYvSW5kZXhlZENvbnRhaW5lckl0
ZXJhdG9yLmg+CisjaW5jbHVkZSA8d3RmL0l0ZXJhdG9yUmFuZ2UuaD4KKyNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBCeXRlY29kZUJhc2ljQmxvY2s7
CisKK3RlbXBsYXRlPHR5cGVuYW1lIEJsb2NrPgorY2xhc3MgQnl0ZWNvZGVHcmFwaCB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQnl0ZWNv
ZGVHcmFwaCk7CitwdWJsaWM6CisgICAgdHlwZWRlZiBCbG9jayBDb2RlQmxvY2s7CisgICAgdHlw
ZWRlZiB0eXBlbmFtZSBCbG9jazo6SW5zdHJ1Y3Rpb24gSW5zdHJ1Y3Rpb247CisgICAgdHlwZWRl
ZiBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+IEJhc2ljQmxvY2tz
VmVjdG9yOworCisgICAgaW5saW5lIEJ5dGVjb2RlR3JhcGgoQmxvY2sqLCB0eXBlbmFtZSBCbG9j
azo6VW5wYWNrZWRJbnN0cnVjdGlvbnMmKTsKKworICAgIEJsb2NrKiBjb2RlQmxvY2soKSBjb25z
dCB7IHJldHVybiBtX2NvZGVCbG9jazsgfQorCisgICAgdHlwZW5hbWUgQmxvY2s6OlVucGFja2Vk
SW5zdHJ1Y3Rpb25zJiBpbnN0cnVjdGlvbnMoKSB7IHJldHVybiBtX2luc3RydWN0aW9uczsgfQor
CisgICAgV1RGOjpJdGVyYXRvclJhbmdlPEJhc2ljQmxvY2tzVmVjdG9yOjpyZXZlcnNlX2l0ZXJh
dG9yPiBiYXNpY0Jsb2Nrc0luUmV2ZXJzZU9yZGVyKCkKKyAgICB7CisgICAgICAgIHJldHVybiBX
VEY6Om1ha2VJdGVyYXRvclJhbmdlKG1fYmFzaWNCbG9ja3MucmJlZ2luKCksIG1fYmFzaWNCbG9j
a3MucmVuZCgpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgYm9vbCBibG9ja0NvbnRhaW5zQnl0ZWNv
ZGVPZmZzZXQoQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaywgdW5zaWduZWQgYnl0ZWNvZGVPZmZz
ZXQpCisgICAgeworICAgICAgICB1bnNpZ25lZCBsZWFkZXJPZmZzZXQgPSBibG9jay0+bGVhZGVy
Qnl0ZWNvZGVPZmZzZXQoKTsKKyAgICAgICAgcmV0dXJuIGJ5dGVjb2RlT2Zmc2V0ID49IGxlYWRl
ck9mZnNldCAmJiBieXRlY29kZU9mZnNldCA8IGxlYWRlck9mZnNldCArIGJsb2NrLT50b3RhbEJ5
dGVjb2RlTGVuZ3RoKCk7CisgICAgfQorCisgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBmaW5kQmFz
aWNCbG9ja0ZvckJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KQorICAgIHsK
KyAgICAgICAgLyoKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2Jhc2lj
QmxvY2tzLnNpemUoKTsgaSsrKSB7CisgICAgICAgICAgICAgICAgaWYgKGJsb2NrQ29udGFpbnNC
eXRlY29kZU9mZnNldChtX2Jhc2ljQmxvY2tzW2ldLmdldCgpLCBieXRlY29kZU9mZnNldCkpCisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBtX2Jhc2ljQmxvY2tzW2ldLmdldCgpOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICovCisKKyAgICAgICAgc3Rk
Ojp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4qIGJhc2ljQmxvY2sgPSBhcHByb3hpbWF0
ZUJpbmFyeVNlYXJjaDxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiwgdW5zaWdu
ZWQ+KG1fYmFzaWNCbG9ja3MsIG1fYmFzaWNCbG9ja3Muc2l6ZSgpLCBieXRlY29kZU9mZnNldCwg
W10gKHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+KiBiYXNpY0Jsb2NrKSB7IHJl
dHVybiAoKmJhc2ljQmxvY2spLT5sZWFkZXJCeXRlY29kZU9mZnNldCgpOyB9KTsKKyAgICAgICAg
Ly8gV2UgZm91bmQgdGhlIGJsb2NrIHdlIHdlcmUgbG9va2luZyBmb3IuCisgICAgICAgIGlmIChi
bG9ja0NvbnRhaW5zQnl0ZWNvZGVPZmZzZXQoKCpiYXNpY0Jsb2NrKS5nZXQoKSwgYnl0ZWNvZGVP
ZmZzZXQpKQorICAgICAgICAgICAgcmV0dXJuICgqYmFzaWNCbG9jaykuZ2V0KCk7CisKKyAgICAg
ICAgLy8gQmFzaWMgYmxvY2sgaXMgdG8gdGhlIGxlZnQgb2YgdGhlIHJldHVybmVkIGJsb2NrLgor
ICAgICAgICBpZiAoYnl0ZWNvZGVPZmZzZXQgPCAoKmJhc2ljQmxvY2spLT5sZWFkZXJCeXRlY29k
ZU9mZnNldCgpKSB7CisgICAgICAgICAgICBBU1NFUlQoYmFzaWNCbG9jayAtIDEgPj0gbV9iYXNp
Y0Jsb2Nrcy5kYXRhKCkpOworICAgICAgICAgICAgQVNTRVJUKGJsb2NrQ29udGFpbnNCeXRlY29k
ZU9mZnNldChiYXNpY0Jsb2NrWy0xXS5nZXQoKSwgYnl0ZWNvZGVPZmZzZXQpKTsKKyAgICAgICAg
ICAgIHJldHVybiBiYXNpY0Jsb2NrWy0xXS5nZXQoKTsKKyAgICAgICAgfQorCisgICAgICAgIC8v
IEJhc2ljIGJsb2NrIGlzIHRvIHRoZSByaWdodCBvZiB0aGUgcmV0dXJuZWQgYmxvY2suCisgICAg
ICAgIEFTU0VSVCgmYmFzaWNCbG9ja1sxXSA8PSAmbV9iYXNpY0Jsb2Nrcy5sYXN0KCkpOworICAg
ICAgICBBU1NFUlQoYmxvY2tDb250YWluc0J5dGVjb2RlT2Zmc2V0KGJhc2ljQmxvY2tbMV0uZ2V0
KCksIGJ5dGVjb2RlT2Zmc2V0KSk7CisgICAgICAgIHJldHVybiBiYXNpY0Jsb2NrWzFdLmdldCgp
OworICAgIH0KKworICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogZmluZEJhc2ljQmxvY2tXaXRoTGVh
ZGVyT2Zmc2V0KHVuc2lnbmVkIGxlYWRlck9mZnNldCkKKyAgICB7CisgICAgICAgIHJldHVybiAo
KnRyeUJpbmFyeVNlYXJjaDxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiwgdW5z
aWduZWQ+KG1fYmFzaWNCbG9ja3MsIG1fYmFzaWNCbG9ja3Muc2l6ZSgpLCBsZWFkZXJPZmZzZXQs
IFtdIChzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiogYmFzaWNCbG9jaykgeyBy
ZXR1cm4gKCpiYXNpY0Jsb2NrKS0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKTsgfSkpLmdldCgpOwor
ICAgIH0KKworICAgIHVuc2lnbmVkIHNpemUoKSBjb25zdCB7IHJldHVybiBtX2Jhc2ljQmxvY2tz
LnNpemUoKTsgfQorICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogYXQodW5zaWduZWQgaW5kZXgpIGNv
bnN0IHsgcmV0dXJuIG1fYmFzaWNCbG9ja3NbaW5kZXhdLmdldCgpOyB9CisgICAgQnl0ZWNvZGVC
YXNpY0Jsb2NrKiBvcGVyYXRvcltdKHVuc2lnbmVkIGluZGV4KSBjb25zdCB7IHJldHVybiBhdChp
bmRleCk7IH0KKworICAgIHR5cGVkZWYgV1RGOjpJbmRleGVkQ29udGFpbmVySXRlcmF0b3I8Qnl0
ZWNvZGVHcmFwaDxCbG9jaz4+IGl0ZXJhdG9yOworCisgICAgaXRlcmF0b3IgYmVnaW4oKSBjb25z
dCB7IHJldHVybiBpdGVyYXRvcigqdGhpcywgMCk7IH0KKyAgICBpdGVyYXRvciBlbmQoKSBjb25z
dCB7IHJldHVybiBpdGVyYXRvcigqdGhpcywgc2l6ZSgpKTsgfQorICAgIEJ5dGVjb2RlQmFzaWNC
bG9jayogZmlyc3QoKSB7IHJldHVybiBhdCgwKTsgfQorICAgIEJ5dGVjb2RlQmFzaWNCbG9jayog
bGFzdCgpIHsgcmV0dXJuIGF0KHNpemUoKSAtIDEpOyB9CisKK3ByaXZhdGU6CisgICAgQmxvY2sq
IG1fY29kZUJsb2NrOworICAgIEJhc2ljQmxvY2tzVmVjdG9yIG1fYmFzaWNCbG9ja3M7CisgICAg
dHlwZW5hbWUgQmxvY2s6OlVucGFja2VkSW5zdHJ1Y3Rpb25zJiBtX2luc3RydWN0aW9uczsKK307
CisKKwordGVtcGxhdGU8dHlwZW5hbWUgQmxvY2s+CitCeXRlY29kZUdyYXBoPEJsb2NrPjo6Qnl0
ZWNvZGVHcmFwaChCbG9jayogY29kZUJsb2NrLCB0eXBlbmFtZSBCbG9jazo6VW5wYWNrZWRJbnN0
cnVjdGlvbnMmIGluc3RydWN0aW9ucykKKyAgICA6IG1fY29kZUJsb2NrKGNvZGVCbG9jaykKKyAg
ICAsIG1faW5zdHJ1Y3Rpb25zKGluc3RydWN0aW9ucykKK3sKKyAgICBBU1NFUlQobV9jb2RlQmxv
Y2spOworICAgIEJ5dGVjb2RlQmFzaWNCbG9jazo6Y29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3Mo
bV9jb2RlQmxvY2ssIGluc3RydWN0aW9ucy5iZWdpbigpLCBpbnN0cnVjdGlvbnMuc2l6ZSgpLCBt
X2Jhc2ljQmxvY2tzKTsKKyAgICBBU1NFUlQobV9iYXNpY0Jsb2Nrcy5zaXplKCkpOworfQorCit9
IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAKaW5kZXggMTdlODJhMmZiYmEw
MTUwNDNlOTlkMzRlZDI1NjkzNzJiMzZmN2E4NS4uYWQzYzAyMWUxZWE0MzdhMzAzNjQ5NTBkNWEw
YmI0OGMyNjQxOWU1YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAKQEAgLTMxLDE5OCArMzEsNjYg
QEAKICNpbmNsdWRlICJCeXRlY29kZVVzZURlZi5oIgogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgog
I2luY2x1ZGUgIkZ1bGxCeXRlY29kZUxpdmVuZXNzLmgiCisjaW5jbHVkZSAiSW50ZXJwcmV0ZXJJ
bmxpbmVzLmgiCiAjaW5jbHVkZSAiUHJlY2lzZUp1bXBUYXJnZXRzLmgiCiAKIG5hbWVzcGFjZSBK
U0MgewogCiBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNp
cyhDb2RlQmxvY2sqIGNvZGVCbG9jaykKLSAgICA6IG1fY29kZUJsb2NrKGNvZGVCbG9jaykKKyAg
ICA6IG1fZ3JhcGgoY29kZUJsb2NrLCBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpKQogewotICAg
IEFTU0VSVChtX2NvZGVCbG9jayk7CiAgICAgY29tcHV0ZSgpOwogfQogCi1zdGF0aWMgYm9vbCBp
c1ZhbGlkUmVnaXN0ZXJGb3JMaXZlbmVzcyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgaW50IG9wZXJh
bmQpCit0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgordm9pZCBCeXRlY29kZUxpdmVuZXNzQW5h
bHlzaXM6OmNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IE9wY29kZUlEIG9wY29kZUlELCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIEZhc3RCaXRWZWN0
b3ImLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQogewotICAgIGlmIChjb2RlQmxvY2stPmlzQ29u
c3RhbnRSZWdpc3RlckluZGV4KG9wZXJhbmQpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
Ci0gICAgVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWcob3BlcmFuZCk7Ci0gICAgcmV0dXJuIHZp
cnR1YWxSZWcuaXNMb2NhbCgpOwotfQotCi1zdGF0aWMgdW5zaWduZWQgZ2V0TGVhZGVyT2Zmc2V0
Rm9yQmFzaWNCbG9jayhzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiogYmFzaWNC
bG9jaykKLXsKLSAgICByZXR1cm4gKCpiYXNpY0Jsb2NrKS0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQo
KTsKLX0KLQotc3RhdGljIEJ5dGVjb2RlQmFzaWNCbG9jayogZmluZEJhc2ljQmxvY2tXaXRoTGVh
ZGVyT2Zmc2V0KFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mIGJh
c2ljQmxvY2tzLCB1bnNpZ25lZCBsZWFkZXJPZmZzZXQpCi17Ci0gICAgcmV0dXJuICgqdHJ5Qmlu
YXJ5U2VhcmNoPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+LCB1bnNpZ25lZD4o
YmFzaWNCbG9ja3MsIGJhc2ljQmxvY2tzLnNpemUoKSwgbGVhZGVyT2Zmc2V0LCBnZXRMZWFkZXJP
ZmZzZXRGb3JCYXNpY0Jsb2NrKSkuZ2V0KCk7Ci19Ci0KLXN0YXRpYyBib29sIGJsb2NrQ29udGFp
bnNCeXRlY29kZU9mZnNldChCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrLCB1bnNpZ25lZCBieXRl
Y29kZU9mZnNldCkKLXsKLSAgICB1bnNpZ25lZCBsZWFkZXJPZmZzZXQgPSBibG9jay0+bGVhZGVy
Qnl0ZWNvZGVPZmZzZXQoKTsKLSAgICByZXR1cm4gYnl0ZWNvZGVPZmZzZXQgPj0gbGVhZGVyT2Zm
c2V0ICYmIGJ5dGVjb2RlT2Zmc2V0IDwgbGVhZGVyT2Zmc2V0ICsgYmxvY2stPnRvdGFsQnl0ZWNv
ZGVMZW5ndGgoKTsKLX0KLQotc3RhdGljIEJ5dGVjb2RlQmFzaWNCbG9jayogZmluZEJhc2ljQmxv
Y2tGb3JCeXRlY29kZU9mZnNldChWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNC
bG9jaz4+JiBiYXNpY0Jsb2NrcywgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpCi17Ci0vKgotICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBiYXNpY0Jsb2Nrcy5zaXplKCk7IGkrKykgewotICAg
ICAgICBpZiAoYmxvY2tDb250YWluc0J5dGVjb2RlT2Zmc2V0KGJhc2ljQmxvY2tzW2ldLmdldCgp
LCBieXRlY29kZU9mZnNldCkpCi0gICAgICAgICAgICByZXR1cm4gYmFzaWNCbG9ja3NbaV0uZ2V0
KCk7Ci0gICAgfQotICAgIHJldHVybiAwOwotKi8KLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNv
ZGVCYXNpY0Jsb2NrPiogYmFzaWNCbG9jayA9IGFwcHJveGltYXRlQmluYXJ5U2VhcmNoPHN0ZDo6
dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+LCB1bnNpZ25lZD4oCi0gICAgICAgIGJhc2lj
QmxvY2tzLCBiYXNpY0Jsb2Nrcy5zaXplKCksIGJ5dGVjb2RlT2Zmc2V0LCBnZXRMZWFkZXJPZmZz
ZXRGb3JCYXNpY0Jsb2NrKTsKLSAgICAvLyBXZSBmb3VuZCB0aGUgYmxvY2sgd2Ugd2VyZSBsb29r
aW5nIGZvci4KLSAgICBpZiAoYmxvY2tDb250YWluc0J5dGVjb2RlT2Zmc2V0KCgqYmFzaWNCbG9j
aykuZ2V0KCksIGJ5dGVjb2RlT2Zmc2V0KSkKLSAgICAgICAgcmV0dXJuICgqYmFzaWNCbG9jayku
Z2V0KCk7Ci0KLSAgICAvLyBCYXNpYyBibG9jayBpcyB0byB0aGUgbGVmdCBvZiB0aGUgcmV0dXJu
ZWQgYmxvY2suCi0gICAgaWYgKGJ5dGVjb2RlT2Zmc2V0IDwgKCpiYXNpY0Jsb2NrKS0+bGVhZGVy
Qnl0ZWNvZGVPZmZzZXQoKSkgewotICAgICAgICBBU1NFUlQoYmFzaWNCbG9jayAtIDEgPj0gYmFz
aWNCbG9ja3MuZGF0YSgpKTsKLSAgICAgICAgQVNTRVJUKGJsb2NrQ29udGFpbnNCeXRlY29kZU9m
ZnNldChiYXNpY0Jsb2NrWy0xXS5nZXQoKSwgYnl0ZWNvZGVPZmZzZXQpKTsKLSAgICAgICAgcmV0
dXJuIGJhc2ljQmxvY2tbLTFdLmdldCgpOwotICAgIH0KLQotICAgIC8vIEJhc2ljIGJsb2NrIGlz
IHRvIHRoZSByaWdodCBvZiB0aGUgcmV0dXJuZWQgYmxvY2suCi0gICAgQVNTRVJUKCZiYXNpY0Js
b2NrWzFdIDw9ICZiYXNpY0Jsb2Nrcy5sYXN0KCkpOwotICAgIEFTU0VSVChibG9ja0NvbnRhaW5z
Qnl0ZWNvZGVPZmZzZXQoYmFzaWNCbG9ja1sxXS5nZXQoKSwgYnl0ZWNvZGVPZmZzZXQpKTsKLSAg
ICByZXR1cm4gYmFzaWNCbG9ja1sxXS5nZXQoKTsKLX0KLQotLy8gU2ltcGxpZmllZCBpbnRlcmZh
Y2UgdG8gYnl0ZWNvZGUgdXNlL2RlZiwgd2hpY2ggZGV0ZXJtaW5lcyBkZWZzIGZpcnN0IGFuZCB0
aGVuIHVzZXMsIGFuZCBpbmNsdWRlcwotLy8gZXhjZXB0aW9uIGhhbmRsZXJzIGluIHRoZSB1c2Vz
LgotdGVtcGxhdGU8dHlwZW5hbWUgVXNlRnVuY3RvciwgdHlwZW5hbWUgRGVmRnVuY3Rvcj4KLXN0
YXRpYyB2b2lkIHN0ZXBPdmVySW5zdHJ1Y3Rpb24oQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVj
b2RlQmFzaWNCbG9jayogYmxvY2ssIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNp
Y0Jsb2NrPj4mIGJhc2ljQmxvY2tzLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgY29uc3QgVXNl
RnVuY3RvciYgdXNlLCBjb25zdCBEZWZGdW5jdG9yJiBkZWYpCi17Ci0gICAgLy8gVGhpcyBhYnN0
cmFjdGx5IGV4ZWN1dGUgdGhlIGluc3RydWN0aW9uIGluIHJldmVyc2UuIEluc3RydWN0aW9ucyBs
b2dpY2FsbHkgZmlyc3QgdXNlIG9wZXJhbmRzIGFuZAotICAgIC8vIHRoZW4gZGVmaW5lIG9wZXJh
bmRzLiBUaGlzIGxvZ2ljYWwgb3JkZXJpbmcgaXMgbmVjZXNzYXJ5IGZvciBvcGVyYXRpb25zIHRo
YXQgdXNlIGFuZCBkZWYgdGhlIHNhbWUKLSAgICAvLyBvcGVyYW5kLCBsaWtlOgotICAgIC8vCi0g
ICAgLy8gICAgIG9wX2FkZCBsb2MxLCBsb2MxLCBsb2MyCi0gICAgLy8KLSAgICAvLyBUaGUgdXNl
IG9mIGxvYzEgaGFwcGVucyBiZWZvcmUgdGhlIGRlZiBvZiBsb2MxLiBUaGF0J3MgYSBzZW1hbnRp
YyByZXF1aXJlbWVudCBzaW5jZSB0aGUgYWRkCi0gICAgLy8gb3BlcmF0aW9uIGNhbm5vdCB0cmF2
ZWwgZm9yd2FyZCBpbiB0aW1lIHRvIHJlYWQgdGhlIHZhbHVlIHRoYXQgaXQgd2lsbCBwcm9kdWNl
IGFmdGVyIHJlYWRpbmcgdGhhdAotICAgIC8vIHZhbHVlLiBTaW5jZSB3ZSBhcmUgZXhlY3V0aW5n
IGluIHJldmVyc2UsIHRoaXMgbWVhbnMgdGhhdCB3ZSBtdXN0IGRvIGRlZnMgYmVmb3JlIHVzZXMg
KHJldmVyc2Ugb2YKLSAgICAvLyB1c2VzIGJlZm9yZSBkZWZzKS4KLSAgICAvLwotICAgIC8vIFNp
bmNlIHRoaXMgaXMgYSBsaXZlbmVzcyBhbmFseXNpcywgdGhpcyBvcmRlcmluZyBlbmRzIHVwIGJl
aW5nIHBhcnRpY3VsYXJseSBpbXBvcnRhbnQ6IGlmIHdlIGRpZAotICAgIC8vIHVzZXMgYmVmb3Jl
IGRlZnMsIHRoZW4gdGhlIGFkZCBvcGVyYXRpb24gYWJvdmUgd291bGQgYXBwZWFyIHRvIG5vdCBo
YXZlIGxvYzEgbGl2ZSwgc2luY2Ugd2UnZAotICAgIC8vIGZpcnN0IGFkZCBpdCB0byB0aGUgb3V0
IHNldCAodGhlIHVzZSksIGFuZCB0aGVuIHdlJ2QgcmVtb3ZlIGl0ICh0aGUgZGVmKS4KLSAgICAK
LSAgICBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KAotICAgICAgICBjb2RlQmxvY2ssIGJs
b2NrLCBieXRlY29kZU9mZnNldCwKLSAgICAgICAgWyZdIChDb2RlQmxvY2sqIGNvZGVCbG9jaywg
SW5zdHJ1Y3Rpb24qLCBPcGNvZGVJRCwgaW50IG9wZXJhbmQpIHsKLSAgICAgICAgICAgIGlmIChp
c1ZhbGlkUmVnaXN0ZXJGb3JMaXZlbmVzcyhjb2RlQmxvY2ssIG9wZXJhbmQpKQotICAgICAgICAg
ICAgICAgIGRlZihWaXJ0dWFsUmVnaXN0ZXIob3BlcmFuZCkudG9Mb2NhbCgpKTsKLSAgICAgICAg
fSk7Ci0KLSAgICBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAotICAgICAgICBjb2RlQmxv
Y2ssIGJsb2NrLCBieXRlY29kZU9mZnNldCwKLSAgICAgICAgWyZdIChDb2RlQmxvY2sqIGNvZGVC
bG9jaywgSW5zdHJ1Y3Rpb24qLCBPcGNvZGVJRCwgaW50IG9wZXJhbmQpIHsKLSAgICAgICAgICAg
IGlmIChpc1ZhbGlkUmVnaXN0ZXJGb3JMaXZlbmVzcyhjb2RlQmxvY2ssIG9wZXJhbmQpKQotICAg
ICAgICAgICAgICAgIHVzZShWaXJ0dWFsUmVnaXN0ZXIob3BlcmFuZCkudG9Mb2NhbCgpKTsKLSAg
ICAgICAgfSk7Ci0KLSAgICAvLyBJZiB3ZSBoYXZlIGFuIGV4Y2VwdGlvbiBoYW5kbGVyLCB3ZSB3
YW50IHRoZSBsaXZlLWluIHZhcmlhYmxlcyBvZiB0aGUgCi0gICAgLy8gZXhjZXB0aW9uIGhhbmRs
ZXIgYmxvY2sgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIGxpdmUtaW4gb2YgdGhpcyBwYXJ0aWN1bGFy
IGJ5dGVjb2RlLgotICAgIGlmIChIYW5kbGVySW5mbyogaGFuZGxlciA9IGNvZGVCbG9jay0+aGFu
ZGxlckZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KSkgewotICAgICAgICAvLyBGSVhN
RTogVGhpcyByZXN1bWUgY2hlY2sgc2hvdWxkIG5vdCBiZSBuZWVkZWQuCi0gICAgICAgIC8vIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTkyODEKLSAgICAgICAgSW50
ZXJwcmV0ZXIqIGludGVycHJldGVyID0gY29kZUJsb2NrLT52bSgpLT5pbnRlcnByZXRlcjsKLSAg
ICAgICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luID0gY29kZUJsb2NrLT5pbnN0cnVj
dGlvbnMoKS5iZWdpbigpOwotICAgICAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSAmaW5z
dHJ1Y3Rpb25zQmVnaW5bYnl0ZWNvZGVPZmZzZXRdOwotICAgICAgICBPcGNvZGVJRCBvcGNvZGVJ
RCA9IGludGVycHJldGVyLT5nZXRPcGNvZGVJRChpbnN0cnVjdGlvbi0+dS5vcGNvZGUpOwotICAg
ICAgICBpZiAob3Bjb2RlSUQgIT0gb3BfcmVzdW1lKSB7Ci0gICAgICAgICAgICBCeXRlY29kZUJh
c2ljQmxvY2sqIGhhbmRsZXJCbG9jayA9IGZpbmRCYXNpY0Jsb2NrV2l0aExlYWRlck9mZnNldChi
YXNpY0Jsb2NrcywgaGFuZGxlci0+dGFyZ2V0KTsKLSAgICAgICAgICAgIEFTU0VSVChoYW5kbGVy
QmxvY2spOwotICAgICAgICAgICAgaGFuZGxlckJsb2NrLT5pbigpLmZvckVhY2hTZXRCaXQodXNl
KTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotc3RhdGljIHZvaWQgc3RlcE92ZXJJbnN0cnVjdGlv
bihDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaywgVmVjdG9y
PHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9ja3MsIHVuc2ln
bmVkIGJ5dGVjb2RlT2Zmc2V0LCBGYXN0Qml0VmVjdG9yJiBvdXQpCi17Ci0gICAgc3RlcE92ZXJJ
bnN0cnVjdGlvbigKLSAgICAgICAgY29kZUJsb2NrLCBibG9jaywgYmFzaWNCbG9ja3MsIGJ5dGVj
b2RlT2Zmc2V0LAotICAgICAgICBbJl0gKHVuc2lnbmVkIGJpdEluZGV4KSB7Ci0gICAgICAgICAg
ICAvLyBUaGlzIGlzIHRoZSB1c2UgZnVuY3Rvciwgc28gd2Ugc2V0IHRoZSBiaXQuCi0gICAgICAg
ICAgICBvdXQuc2V0KGJpdEluZGV4KTsKLSAgICAgICAgfSwKLSAgICAgICAgWyZdICh1bnNpZ25l
ZCBiaXRJbmRleCkgewotICAgICAgICAgICAgLy8gVGhpcyBpcyB0aGUgZGVmIGZ1bmN0b3IsIHNv
IHdlIGNsZWFyIHRoZSBiaXQuCi0gICAgICAgICAgICBvdXQuY2xlYXIoYml0SW5kZXgpOwotICAg
ICAgICB9KTsKLX0KLQotc3RhdGljIHZvaWQgY29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCeXRlY29k
ZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaywg
VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9ja3Ms
IHVuc2lnbmVkIHRhcmdldE9mZnNldCwgRmFzdEJpdFZlY3RvciYgcmVzdWx0KQotewotICAgIEFT
U0VSVCghYmxvY2stPmlzRXhpdEJsb2NrKCkpOwotICAgIEFTU0VSVCghYmxvY2stPmlzRW50cnlC
bG9jaygpKTsKLQotICAgIEZhc3RCaXRWZWN0b3Igb3V0ID0gYmxvY2stPm91dCgpOwotCi0gICAg
Zm9yIChpbnQgaSA9IGJsb2NrLT5ieXRlY29kZU9mZnNldHMoKS5zaXplKCkgLSAxOyBpID49IDA7
IGktLSkgewotICAgICAgICB1bnNpZ25lZCBieXRlY29kZU9mZnNldCA9IGJsb2NrLT5ieXRlY29k
ZU9mZnNldHMoKVtpXTsKLSAgICAgICAgaWYgKHRhcmdldE9mZnNldCA+IGJ5dGVjb2RlT2Zmc2V0
KQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIAotICAgICAgICBzdGVwT3Zlckluc3RydWN0
aW9uKGNvZGVCbG9jaywgYmxvY2ssIGJhc2ljQmxvY2tzLCBieXRlY29kZU9mZnNldCwgb3V0KTsK
LSAgICB9Ci0KLSAgICByZXN1bHQuc2V0KG91dCk7CisgICAgSlNDOjpjb21wdXRlRGVmc0ZvckJ5
dGVjb2RlT2Zmc2V0KGNvZGVCbG9jaywgb3Bjb2RlSUQsIGluc3RydWN0aW9uLCBmdW5jdG9yKTsK
IH0KIAotc3RhdGljIHZvaWQgY29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCbG9jayhDb2RlQmxvY2sq
IGNvZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaywgVmVjdG9yPHN0ZDo6dW5pcXVl
X3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9ja3MpCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBGdW5jdG9yPgordm9pZCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGVVc2VzRm9y
Qnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIE9wY29kZUlEIG9wY29kZUlELCBJ
bnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIEZhc3RCaXRWZWN0b3ImLCBjb25zdCBGdW5jdG9yJiBm
dW5jdG9yKQogewotICAgIGlmIChibG9jay0+aXNFeGl0QmxvY2soKSB8fCBibG9jay0+aXNFbnRy
eUJsb2NrKCkpCi0gICAgICAgIHJldHVybjsKLSAgICBjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJ5
dGVjb2RlT2Zmc2V0KGNvZGVCbG9jaywgYmxvY2ssIGJhc2ljQmxvY2tzLCBibG9jay0+bGVhZGVy
Qnl0ZWNvZGVPZmZzZXQoKSwgYmxvY2stPmluKCkpOworICAgIEpTQzo6Y29tcHV0ZVVzZXNGb3JC
eXRlY29kZU9mZnNldChjb2RlQmxvY2ssIG9wY29kZUlELCBpbnN0cnVjdGlvbiwgZnVuY3Rvcik7
CiB9CiAKIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpydW5MaXZlbmVzc0ZpeHBvaW50
KCkKIHsKLSAgICBVbmxpbmtlZENvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2sgPSBtX2NvZGVC
bG9jay0+dW5saW5rZWRDb2RlQmxvY2soKTsKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IG1f
Z3JhcGguY29kZUJsb2NrKCk7CisgICAgVW5saW5rZWRDb2RlQmxvY2sqIHVubGlua2VkQ29kZUJs
b2NrID0gY29kZUJsb2NrLT51bmxpbmtlZENvZGVCbG9jaygpOwogICAgIHVuc2lnbmVkIG51bWJl
ck9mVmFyaWFibGVzID0gdW5saW5rZWRDb2RlQmxvY2stPm1fbnVtQ2FsbGVlTG9jYWxzOwogCi0g
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fYmFzaWNCbG9ja3Muc2l6ZSgpOyBpKyspIHsK
LSAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jayA9IG1fYmFzaWNCbG9ja3NbaV0uZ2V0
KCk7CisgICAgZm9yIChCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrIDogbV9ncmFwaCkgewogICAg
ICAgICBibG9jay0+aW4oKS5yZXNpemUobnVtYmVyT2ZWYXJpYWJsZXMpOwogICAgICAgICBibG9j
ay0+b3V0KCkucmVzaXplKG51bWJlck9mVmFyaWFibGVzKTsKICAgICB9CiAKICAgICBib29sIGNo
YW5nZWQ7Ci0gICAgbV9iYXNpY0Jsb2Nrcy5sYXN0KCktPmluKCkuY2xlYXJBbGwoKTsKLSAgICBt
X2Jhc2ljQmxvY2tzLmxhc3QoKS0+b3V0KCkuY2xlYXJBbGwoKTsKKyAgICBCeXRlY29kZUJhc2lj
QmxvY2sqIGxhc3RCbG9jayA9IG1fZ3JhcGgubGFzdCgpOworICAgIGxhc3RCbG9jay0+aW4oKS5j
bGVhckFsbCgpOworICAgIGxhc3RCbG9jay0+b3V0KCkuY2xlYXJBbGwoKTsKICAgICBGYXN0Qml0
VmVjdG9yIG5ld091dDsKLSAgICBuZXdPdXQucmVzaXplKG1fYmFzaWNCbG9ja3MubGFzdCgpLT5v
dXQoKS5udW1CaXRzKCkpOworICAgIG5ld091dC5yZXNpemUobGFzdEJsb2NrLT5vdXQoKS5udW1C
aXRzKCkpOwogICAgIGRvIHsKICAgICAgICAgY2hhbmdlZCA9IGZhbHNlOwotICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSBtX2Jhc2ljQmxvY2tzLnNpemUoKSAtIDE7IGktLTspIHsKLSAgICAgICAg
ICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2sgPSBtX2Jhc2ljQmxvY2tzW2ldLmdldCgpOwor
ICAgICAgICBmb3IgKHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+JiBibG9jayA6
IG1fZ3JhcGguYmFzaWNCbG9ja3NJblJldmVyc2VPcmRlcigpKSB7CiAgICAgICAgICAgICBuZXdP
dXQuY2xlYXJBbGwoKTsKLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgaiA9IDA7IGogPCBibG9j
ay0+c3VjY2Vzc29ycygpLnNpemUoKTsgaisrKQotICAgICAgICAgICAgICAgIG5ld091dC5tZXJn
ZShibG9jay0+c3VjY2Vzc29ycygpW2pdLT5pbigpKTsKLSAgICAgICAgICAgIGJvb2wgb3V0RGlk
Q2hhbmdlID0gYmxvY2stPm91dCgpLnNldEFuZENoZWNrKG5ld091dCk7Ci0gICAgICAgICAgICBj
b21wdXRlTG9jYWxMaXZlbmVzc0ZvckJsb2NrKG1fY29kZUJsb2NrLCBibG9jaywgbV9iYXNpY0Js
b2Nrcyk7Ci0gICAgICAgICAgICBjaGFuZ2VkIHw9IG91dERpZENoYW5nZTsKKyAgICAgICAgICAg
IGZvciAoQnl0ZWNvZGVCYXNpY0Jsb2NrKiBzdWNjZXNzb3IgOiBibG9jay0+c3VjY2Vzc29ycygp
KQorICAgICAgICAgICAgICAgIG5ld091dC5tZXJnZShzdWNjZXNzb3ItPmluKCkpOworICAgICAg
ICAgICAgYmxvY2stPm91dCgpLnNldChuZXdPdXQpOworICAgICAgICAgICAgY2hhbmdlZCB8PSBj
b21wdXRlTG9jYWxMaXZlbmVzc0ZvckJsb2NrKG1fZ3JhcGgsIGJsb2NrLmdldCgpKTsKICAgICAg
ICAgfQogICAgIH0gd2hpbGUgKGNoYW5nZWQpOwogfQogCiB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NB
bmFseXNpczo6Z2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29kZU9mZnNldCh1bnNpZ25lZCBieXRlY29k
ZU9mZnNldCwgRmFzdEJpdFZlY3RvciYgcmVzdWx0KQogewotICAgIEJ5dGVjb2RlQmFzaWNCbG9j
ayogYmxvY2sgPSBmaW5kQmFzaWNCbG9ja0ZvckJ5dGVjb2RlT2Zmc2V0KG1fYmFzaWNCbG9ja3Ms
IGJ5dGVjb2RlT2Zmc2V0KTsKKyAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrID0gbV9ncmFw
aC5maW5kQmFzaWNCbG9ja0ZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KTsKICAgICBB
U1NFUlQoYmxvY2spOwogICAgIEFTU0VSVCghYmxvY2stPmlzRW50cnlCbG9jaygpKTsKICAgICBB
U1NFUlQoIWJsb2NrLT5pc0V4aXRCbG9jaygpKTsKICAgICByZXN1bHQucmVzaXplKGJsb2NrLT5v
dXQoKS5udW1CaXRzKCkpOwotICAgIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQnl0ZWNvZGVPZmZz
ZXQobV9jb2RlQmxvY2ssIGJsb2NrLCBtX2Jhc2ljQmxvY2tzLCBieXRlY29kZU9mZnNldCwgcmVz
dWx0KTsKKyAgICBjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJ5dGVjb2RlT2Zmc2V0KG1fZ3JhcGgs
IGJsb2NrLCBieXRlY29kZU9mZnNldCwgcmVzdWx0KTsKIH0KIAogYm9vbCBCeXRlY29kZUxpdmVu
ZXNzQW5hbHlzaXM6Om9wZXJhbmRJc0xpdmVBdEJ5dGVjb2RlT2Zmc2V0KGludCBvcGVyYW5kLCB1
bnNpZ25lZCBieXRlY29kZU9mZnNldCkKQEAgLTI0NCwxMSArMTEyLDExIEBAIEZhc3RCaXRWZWN0
b3IgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpnZXRMaXZlbmVzc0luZm9BdEJ5dGVjb2RlT2Zm
c2V0KHVuc2lnbmVkCiB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0ZUZ1bGxM
aXZlbmVzcyhGdWxsQnl0ZWNvZGVMaXZlbmVzcyYgcmVzdWx0KQogewogICAgIEZhc3RCaXRWZWN0
b3Igb3V0OworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gbV9ncmFwaC5jb2RlQmxvY2soKTsK
ICAgICAKLSAgICByZXN1bHQubV9tYXAucmVzaXplKG1fY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMo
KS5zaXplKCkpOworICAgIHJlc3VsdC5tX21hcC5yZXNpemUoY29kZUJsb2NrLT5pbnN0cnVjdGlv
bnMoKS5zaXplKCkpOwogICAgIAotICAgIGZvciAodW5zaWduZWQgaSA9IG1fYmFzaWNCbG9ja3Mu
c2l6ZSgpOyBpLS07KSB7Ci0gICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2sgPSBtX2Jh
c2ljQmxvY2tzW2ldLmdldCgpOworICAgIGZvciAoc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFz
aWNCbG9jaz4mIGJsb2NrIDogbV9ncmFwaC5iYXNpY0Jsb2Nrc0luUmV2ZXJzZU9yZGVyKCkpIHsK
ICAgICAgICAgaWYgKGJsb2NrLT5pc0VudHJ5QmxvY2soKSB8fCBibG9jay0+aXNFeGl0QmxvY2so
KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAKQEAgLTI1Niw3ICsxMjQsNyBAQCB2
b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0ZUZ1bGxMaXZlbmVzcyhGdWxsQnl0
ZWNvZGVMaXZlbmVzcyYgcmVzdWx0KQogICAgICAgICAKICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gYmxvY2stPmJ5dGVjb2RlT2Zmc2V0cygpLnNpemUoKTsgaS0tOykgewogICAgICAgICAgICAg
dW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQgPSBibG9jay0+Ynl0ZWNvZGVPZmZzZXRzKClbaV07Ci0g
ICAgICAgICAgICBzdGVwT3Zlckluc3RydWN0aW9uKG1fY29kZUJsb2NrLCBibG9jaywgbV9iYXNp
Y0Jsb2NrcywgYnl0ZWNvZGVPZmZzZXQsIG91dCk7CisgICAgICAgICAgICBzdGVwT3Zlckluc3Ry
dWN0aW9uKG1fZ3JhcGgsIGJ5dGVjb2RlT2Zmc2V0LCBvdXQpOwogICAgICAgICAgICAgcmVzdWx0
Lm1fbWFwW2J5dGVjb2RlT2Zmc2V0XSA9IG91dDsKICAgICAgICAgfQogICAgIH0KQEAgLTI2Niwx
MSArMTM0LDExIEBAIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlS2lsbHMo
Qnl0ZWNvZGVLaWxscyYgcmVzdWx0KQogewogICAgIEZhc3RCaXRWZWN0b3Igb3V0OwogICAgIAot
ICAgIHJlc3VsdC5tX2NvZGVCbG9jayA9IG1fY29kZUJsb2NrOwotICAgIHJlc3VsdC5tX2tpbGxT
ZXRzID0gc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZUtpbGxzOjpLaWxsU2V0W10+KG1fY29kZUJs
b2NrLT5pbnN0cnVjdGlvbnMoKS5zaXplKCkpOworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0g
bV9ncmFwaC5jb2RlQmxvY2soKTsKKyAgICByZXN1bHQubV9jb2RlQmxvY2sgPSBjb2RlQmxvY2s7
CisgICAgcmVzdWx0Lm1fa2lsbFNldHMgPSBzdGQ6Om1ha2VfdW5pcXVlPEJ5dGVjb2RlS2lsbHM6
OktpbGxTZXRbXT4oY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5zaXplKCkpOwogICAgIAotICAg
IGZvciAodW5zaWduZWQgaSA9IG1fYmFzaWNCbG9ja3Muc2l6ZSgpOyBpLS07KSB7Ci0gICAgICAg
IEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2sgPSBtX2Jhc2ljQmxvY2tzW2ldLmdldCgpOworICAg
IGZvciAoc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4mIGJsb2NrIDogbV9ncmFw
aC5iYXNpY0Jsb2Nrc0luUmV2ZXJzZU9yZGVyKCkpIHsKICAgICAgICAgaWYgKGJsb2NrLT5pc0Vu
dHJ5QmxvY2soKSB8fCBibG9jay0+aXNFeGl0QmxvY2soKSkKICAgICAgICAgICAgIGNvbnRpbnVl
OwogICAgICAgICAKQEAgLTI3OSw3ICsxNDcsNyBAQCB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFs
eXNpczo6Y29tcHV0ZUtpbGxzKEJ5dGVjb2RlS2lsbHMmIHJlc3VsdCkKICAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gYmxvY2stPmJ5dGVjb2RlT2Zmc2V0cygpLnNpemUoKTsgaS0tOykgewogICAg
ICAgICAgICAgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQgPSBibG9jay0+Ynl0ZWNvZGVPZmZzZXRz
KClbaV07CiAgICAgICAgICAgICBzdGVwT3Zlckluc3RydWN0aW9uKAotICAgICAgICAgICAgICAg
IG1fY29kZUJsb2NrLCBibG9jaywgbV9iYXNpY0Jsb2NrcywgYnl0ZWNvZGVPZmZzZXQsCisgICAg
ICAgICAgICAgICAgbV9ncmFwaCwgYnl0ZWNvZGVPZmZzZXQsIG91dCwKICAgICAgICAgICAgICAg
ICBbJl0gKHVuc2lnbmVkIGluZGV4KSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMg
Zm9yIHVzZXMuCiAgICAgICAgICAgICAgICAgICAgIGlmIChvdXQuZ2V0KGluZGV4KSkKQEAgLTI5
NywxMiArMTY1LDEzIEBAIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlS2ls
bHMoQnl0ZWNvZGVLaWxscyYgcmVzdWx0KQogCiB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNp
czo6ZHVtcFJlc3VsdHMoKQogewotICAgIGRhdGFMb2coIlxuRHVtcGluZyBieXRlY29kZSBsaXZl
bmVzcyBmb3IgIiwgKm1fY29kZUJsb2NrLCAiOlxuIik7Ci0gICAgSW50ZXJwcmV0ZXIqIGludGVy
cHJldGVyID0gbV9jb2RlQmxvY2stPnZtKCktPmludGVycHJldGVyOwotICAgIEluc3RydWN0aW9u
KiBpbnN0cnVjdGlvbnNCZWdpbiA9IG1fY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigp
OwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2Jhc2ljQmxvY2tzLnNpemUoKTsgaSsr
KSB7Ci0gICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2sgPSBtX2Jhc2ljQmxvY2tzW2ld
LmdldCgpOwotICAgICAgICBkYXRhTG9nRigiXG5CeXRlY29kZSBiYXNpYyBibG9jayAldTogJXAg
KG9mZnNldDogJXUsIGxlbmd0aDogJXUpXG4iLCBpLCBibG9jaywgYmxvY2stPmxlYWRlckJ5dGVj
b2RlT2Zmc2V0KCksIGJsb2NrLT50b3RhbEJ5dGVjb2RlTGVuZ3RoKCkpOworICAgIENvZGVCbG9j
ayogY29kZUJsb2NrID0gbV9ncmFwaC5jb2RlQmxvY2soKTsKKyAgICBkYXRhTG9nKCJcbkR1bXBp
bmcgYnl0ZWNvZGUgbGl2ZW5lc3MgZm9yICIsICpjb2RlQmxvY2ssICI6XG4iKTsKKyAgICBJbnRl
cnByZXRlciogaW50ZXJwcmV0ZXIgPSBjb2RlQmxvY2stPnZtKCktPmludGVycHJldGVyOworICAg
IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiA9IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25z
KCkuYmVnaW4oKTsKKyAgICB1bnNpZ25lZCBpID0gMDsKKyAgICBmb3IgKEJ5dGVjb2RlQmFzaWNC
bG9jayogYmxvY2sgOiBtX2dyYXBoKSB7CisgICAgICAgIGRhdGFMb2dGKCJcbkJ5dGVjb2RlIGJh
c2ljIGJsb2NrICV1OiAlcCAob2Zmc2V0OiAldSwgbGVuZ3RoOiAldSlcbiIsIGkrKywgYmxvY2ss
IGJsb2NrLT5sZWFkZXJCeXRlY29kZU9mZnNldCgpLCBibG9jay0+dG90YWxCeXRlY29kZUxlbmd0
aCgpKTsKICAgICAgICAgZGF0YUxvZ0YoIlN1Y2Nlc3NvcnM6ICIpOwogICAgICAgICBmb3IgKHVu
c2lnbmVkIGogPSAwOyBqIDwgYmxvY2stPnN1Y2Nlc3NvcnMoKS5zaXplKCk7IGorKykgewogICAg
ICAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBzdWNjZXNzb3IgPSBibG9jay0+c3VjY2Vzc29y
cygpW2pdOwpAQCAtMzI3LDcgKzE5Niw3IEBAIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lz
OjpkdW1wUmVzdWx0cygpCiAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2dGKCIldSAiLCBqKTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGRhdGFMb2dGKCJcbiIpOwotICAgICAgICAgICAg
bV9jb2RlQmxvY2stPmR1bXBCeXRlY29kZShXVEY6OmRhdGFGaWxlKCksIG1fY29kZUJsb2NrLT5n
bG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpLCBpbnN0cnVjdGlvbnNCZWdpbiwgY3VycmVudElu
c3RydWN0aW9uKTsKKyAgICAgICAgICAgIGNvZGVCbG9jay0+ZHVtcEJ5dGVjb2RlKFdURjo6ZGF0
YUZpbGUoKSwgY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpLCBpbnN0cnVj
dGlvbnNCZWdpbiwgY3VycmVudEluc3RydWN0aW9uKTsKIAogICAgICAgICAgICAgT3Bjb2RlSUQg
b3Bjb2RlSUQgPSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25zQmVnaW5bYnl0
ZWNvZGVPZmZzZXRdLnUub3Bjb2RlKTsKICAgICAgICAgICAgIHVuc2lnbmVkIG9wY29kZUxlbmd0
aCA9IG9wY29kZUxlbmd0aHNbb3Bjb2RlSURdOwpAQCAtMzQ2LDggKzIxNSw2IEBAIHZvaWQgQnl0
ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpkdW1wUmVzdWx0cygpCiAKIHZvaWQgQnl0ZWNvZGVMaXZl
bmVzc0FuYWx5c2lzOjpjb21wdXRlKCkKIHsKLSAgICBjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2Nr
cyhtX2NvZGVCbG9jaywgbV9iYXNpY0Jsb2Nrcyk7Ci0gICAgQVNTRVJUKG1fYmFzaWNCbG9ja3Mu
c2l6ZSgpKTsKICAgICBydW5MaXZlbmVzc0ZpeHBvaW50KCk7CiAKICAgICBpZiAoT3B0aW9uczo6
ZHVtcEJ5dGVjb2RlTGl2ZW5lc3NSZXN1bHRzKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmgKaW5kZXggZWNl
MTZmMjFmMDE1MTBhNjQyN2ZkODQxMTQwNzliZWQ4NzBjMDg3NS4uYTQ4NWY4OTVkZWRmNjk5ZGM2
YmIyN2Q1NDlkYzE1ZDhmNWQ3YzgwMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuaApAQCAtMjMsMTAgKzIz
LDExIEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRl
ZiBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNfaAotI2RlZmluZSBCeXRlY29kZUxpdmVuZXNzQW5h
bHlzaXNfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJCeXRlY29kZUJhc2ljQmxvY2suaCIK
KyNpbmNsdWRlICJCeXRlY29kZUdyYXBoLmgiCisjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5j
bHVkZSA8d3RmL0Zhc3RCaXRWZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTM0LDEzICszNSwyNyBAQAogbmFtZXNwYWNlIEpTQyB7
CiAKIGNsYXNzIEJ5dGVjb2RlS2lsbHM7Ci1jbGFzcyBDb2RlQmxvY2s7CiBjbGFzcyBGdWxsQnl0
ZWNvZGVMaXZlbmVzczsKIAotY2xhc3MgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzIHsKK3RlbXBs
YXRlPHR5cGVuYW1lIERlcml2ZWRBbmFseXNpcz4KK2NsYXNzIEJ5dGVjb2RlTGl2ZW5lc3NMb2Nh
bFByb3BhZ2F0aW9uIHsKK3Byb3RlY3RlZDoKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBHcmFwaCwg
dHlwZW5hbWUgVXNlRnVuY3RvciwgdHlwZW5hbWUgRGVmRnVuY3Rvcj4gdm9pZCBzdGVwT3Zlcklu
c3RydWN0aW9uKEdyYXBoJiwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIEZhc3RCaXRWZWN0b3Im
IG91dCwgY29uc3QgVXNlRnVuY3RvciYsIGNvbnN0IERlZkZ1bmN0b3ImKTsKKworICAgIHRlbXBs
YXRlPHR5cGVuYW1lIEdyYXBoPiB2b2lkIHN0ZXBPdmVySW5zdHJ1Y3Rpb24oR3JhcGgmLCB1bnNp
Z25lZCBieXRlY29kZU9mZnNldCwgRmFzdEJpdFZlY3RvciYgb3V0KTsKKworICAgIHRlbXBsYXRl
PHR5cGVuYW1lIEdyYXBoPiBib29sIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQnl0ZWNvZGVPZmZz
ZXQoR3JhcGgmLCBCeXRlY29kZUJhc2ljQmxvY2sqLCB1bnNpZ25lZCB0YXJnZXRPZmZzZXQsIEZh
c3RCaXRWZWN0b3ImIHJlc3VsdCk7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBHcmFwaD4gYm9v
bCBjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJsb2NrKEdyYXBoJiwgQnl0ZWNvZGVCYXNpY0Jsb2Nr
Kik7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBHcmFwaD4gRmFzdEJpdFZlY3RvciBnZXRMaXZl
bmVzc0luZm9BdEJ5dGVjb2RlT2Zmc2V0KEdyYXBoJiwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQp
OworfTsKKworY2xhc3MgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzIDogcHJpdmF0ZSBCeXRlY29k
ZUxpdmVuZXNzTG9jYWxQcm9wYWdhdGlvbjxCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM+IHsKICAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShCeXRl
Y29kZUxpdmVuZXNzQW5hbHlzaXMpOwogcHVibGljOgorICAgIGZyaWVuZCBjbGFzcyBCeXRlY29k
ZUxpdmVuZXNzTG9jYWxQcm9wYWdhdGlvbjxCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM+OwogICAg
IEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcyhDb2RlQmxvY2sqKTsKICAgICAKICAgICBib29sIG9w
ZXJhbmRJc0xpdmVBdEJ5dGVjb2RlT2Zmc2V0KGludCBvcGVyYW5kLCB1bnNpZ25lZCBieXRlY29k
ZU9mZnNldCk7CkBAIC01NiwxNCArNzEsMTUgQEAgY2xhc3MgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5
c2lzIHsKIAogICAgIHZvaWQgZ2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29kZU9mZnNldCh1bnNpZ25l
ZCBieXRlY29kZU9mZnNldCwgRmFzdEJpdFZlY3RvciYpOwogCi0gICAgQ29kZUJsb2NrKiBtX2Nv
ZGVCbG9jazsKLSAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+
IG1fYmFzaWNCbG9ja3M7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdm9pZCBjb21w
dXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayosIE9wY29kZUlELCBJbnN0cnVjdGlv
biosIEZhc3RCaXRWZWN0b3ImLCBjb25zdCBGdW5jdG9yJik7CisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgRnVuY3Rvcj4gdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayos
IE9wY29kZUlELCBJbnN0cnVjdGlvbiosIEZhc3RCaXRWZWN0b3ImLCBjb25zdCBGdW5jdG9yJik7
CisKKyAgICBCeXRlY29kZUdyYXBoPENvZGVCbG9jaz4gbV9ncmFwaDsKIH07CiAKIGlubGluZSBi
b29sIG9wZXJhbmRJc0Fsd2F5c0xpdmUoaW50IG9wZXJhbmQpOwogaW5saW5lIGJvb2wgb3BlcmFu
ZFRoYXRJc05vdEFsd2F5c0xpdmVJc0xpdmUoY29uc3QgRmFzdEJpdFZlY3RvciYgb3V0LCBpbnQg
b3BlcmFuZCk7CiBpbmxpbmUgYm9vbCBvcGVyYW5kSXNMaXZlKGNvbnN0IEZhc3RCaXRWZWN0b3Im
IG91dCwgaW50IG9wZXJhbmQpOworaW5saW5lIGJvb2wgaXNWYWxpZFJlZ2lzdGVyRm9yTGl2ZW5l
c3MoaW50IG9wZXJhbmQpOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKLQotI2VuZGlmIC8vIEJ5dGVj
b2RlTGl2ZW5lc3NBbmFseXNpc19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzSW5saW5lcy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGluZXMuaAppbmRl
eCA5YjVjNzU1ZmNiNmNkNTE4MDUxNDUwMDc4OTIyYWM0ZDZkNGQyMzhmLi45YzU5MGQxYTNiNWQz
NzY0M2E1OGM5YTc0YzM1Y2IxNDFkNzgxN2ExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzSW5saW5lcy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNJbmxp
bmVzLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNpZm5kZWYgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lz
SW5saW5lc19oCiAjZGVmaW5lIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGluZXNfaAogCisj
aW5jbHVkZSAiQnl0ZWNvZGVHcmFwaC5oIgogI2luY2x1ZGUgIkJ5dGVjb2RlTGl2ZW5lc3NBbmFs
eXNpcy5oIgogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIK
QEAgLTUwLDYgKzUxLDEyMiBAQCBpbmxpbmUgYm9vbCBvcGVyYW5kSXNMaXZlKGNvbnN0IEZhc3RC
aXRWZWN0b3ImIG91dCwgaW50IG9wZXJhbmQpCiAgICAgcmV0dXJuIG9wZXJhbmRJc0Fsd2F5c0xp
dmUob3BlcmFuZCkgfHwgb3BlcmFuZFRoYXRJc05vdEFsd2F5c0xpdmVJc0xpdmUob3V0LCBvcGVy
YW5kKTsKIH0KIAoraW5saW5lIGJvb2wgaXNWYWxpZFJlZ2lzdGVyRm9yTGl2ZW5lc3MoaW50IG9w
ZXJhbmQpCit7CisgICAgVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWcob3BlcmFuZCk7CisgICAg
aWYgKHZpcnR1YWxSZWcuaXNDb25zdGFudCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
cmV0dXJuIHZpcnR1YWxSZWcuaXNMb2NhbCgpOworfQorCisvLyBTaW1wbGlmaWVkIGludGVyZmFj
ZSB0byBieXRlY29kZSB1c2UvZGVmLCB3aGljaCBkZXRlcm1pbmVzIGRlZnMgZmlyc3QgYW5kIHRo
ZW4gdXNlcywgYW5kIGluY2x1ZGVzCisvLyBleGNlcHRpb24gaGFuZGxlcnMgaW4gdGhlIHVzZXMu
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBEZXJpdmVkQW5hbHlzaXM+Cit0ZW1wbGF0ZTx0eXBlbmFtZSBH
cmFwaCwgdHlwZW5hbWUgVXNlRnVuY3RvciwgdHlwZW5hbWUgRGVmRnVuY3Rvcj4KK2lubGluZSB2
b2lkIEJ5dGVjb2RlTGl2ZW5lc3NMb2NhbFByb3BhZ2F0aW9uPERlcml2ZWRBbmFseXNpcz46OnN0
ZXBPdmVySW5zdHJ1Y3Rpb24oR3JhcGgmIGdyYXBoLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwg
RmFzdEJpdFZlY3RvciYgb3V0LCBjb25zdCBVc2VGdW5jdG9yJiB1c2UsIGNvbnN0IERlZkZ1bmN0
b3ImIGRlZikKK3sKKyAgICAvLyBUaGlzIGFic3RyYWN0bHkgZXhlY3V0ZSB0aGUgaW5zdHJ1Y3Rp
b24gaW4gcmV2ZXJzZS4gSW5zdHJ1Y3Rpb25zIGxvZ2ljYWxseSBmaXJzdCB1c2Ugb3BlcmFuZHMg
YW5kCisgICAgLy8gdGhlbiBkZWZpbmUgb3BlcmFuZHMuIFRoaXMgbG9naWNhbCBvcmRlcmluZyBp
cyBuZWNlc3NhcnkgZm9yIG9wZXJhdGlvbnMgdGhhdCB1c2UgYW5kIGRlZiB0aGUgc2FtZQorICAg
IC8vIG9wZXJhbmQsIGxpa2U6CisgICAgLy8KKyAgICAvLyAgICAgb3BfYWRkIGxvYzEsIGxvYzEs
IGxvYzIKKyAgICAvLworICAgIC8vIFRoZSB1c2Ugb2YgbG9jMSBoYXBwZW5zIGJlZm9yZSB0aGUg
ZGVmIG9mIGxvYzEuIFRoYXQncyBhIHNlbWFudGljIHJlcXVpcmVtZW50IHNpbmNlIHRoZSBhZGQK
KyAgICAvLyBvcGVyYXRpb24gY2Fubm90IHRyYXZlbCBmb3J3YXJkIGluIHRpbWUgdG8gcmVhZCB0
aGUgdmFsdWUgdGhhdCBpdCB3aWxsIHByb2R1Y2UgYWZ0ZXIgcmVhZGluZyB0aGF0CisgICAgLy8g
dmFsdWUuIFNpbmNlIHdlIGFyZSBleGVjdXRpbmcgaW4gcmV2ZXJzZSwgdGhpcyBtZWFucyB0aGF0
IHdlIG11c3QgZG8gZGVmcyBiZWZvcmUgdXNlcyAocmV2ZXJzZSBvZgorICAgIC8vIHVzZXMgYmVm
b3JlIGRlZnMpLgorICAgIC8vCisgICAgLy8gU2luY2UgdGhpcyBpcyBhIGxpdmVuZXNzIGFuYWx5
c2lzLCB0aGlzIG9yZGVyaW5nIGVuZHMgdXAgYmVpbmcgcGFydGljdWxhcmx5IGltcG9ydGFudDog
aWYgd2UgZGlkCisgICAgLy8gdXNlcyBiZWZvcmUgZGVmcywgdGhlbiB0aGUgYWRkIG9wZXJhdGlv
biBhYm92ZSB3b3VsZCBhcHBlYXIgdG8gbm90IGhhdmUgbG9jMSBsaXZlLCBzaW5jZSB3ZSdkCisg
ICAgLy8gZmlyc3QgYWRkIGl0IHRvIHRoZSBvdXQgc2V0ICh0aGUgdXNlKSwgYW5kIHRoZW4gd2Un
ZCByZW1vdmUgaXQgKHRoZSBkZWYpLgorCisgICAgYXV0byogY29kZUJsb2NrID0gZ3JhcGguY29k
ZUJsb2NrKCk7CisgICAgSW50ZXJwcmV0ZXIqIGludGVycHJldGVyID0gY29kZUJsb2NrLT52bSgp
LT5pbnRlcnByZXRlcjsKKyAgICBhdXRvKiBpbnN0cnVjdGlvbnNCZWdpbiA9IGdyYXBoLmluc3Ry
dWN0aW9ucygpLmJlZ2luKCk7CisgICAgYXV0byogaW5zdHJ1Y3Rpb24gPSAmaW5zdHJ1Y3Rpb25z
QmVnaW5bYnl0ZWNvZGVPZmZzZXRdOworICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0
ZXItPmdldE9wY29kZUlEKCppbnN0cnVjdGlvbik7CisKKyAgICBzdGF0aWNfY2FzdDxEZXJpdmVk
QW5hbHlzaXMqPih0aGlzKS0+Y29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldCgKKyAgICAgICAg
Y29kZUJsb2NrLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb24sIG91dCwKKyAgICAgICAgWyZdICh0eXBl
bmFtZSBHcmFwaDo6Q29kZUJsb2NrKiwgdHlwZW5hbWUgR3JhcGg6Okluc3RydWN0aW9uKiwgT3Bj
b2RlSUQsIGludCBvcGVyYW5kKSB7CisgICAgICAgICAgICBpZiAoaXNWYWxpZFJlZ2lzdGVyRm9y
TGl2ZW5lc3Mob3BlcmFuZCkpCisgICAgICAgICAgICAgICAgZGVmKFZpcnR1YWxSZWdpc3Rlcihv
cGVyYW5kKS50b0xvY2FsKCkpOworICAgICAgICB9KTsKKworICAgIHN0YXRpY19jYXN0PERlcml2
ZWRBbmFseXNpcyo+KHRoaXMpLT5jb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAorICAgICAg
ICBjb2RlQmxvY2ssIG9wY29kZUlELCBpbnN0cnVjdGlvbiwgb3V0LAorICAgICAgICBbJl0gKHR5
cGVuYW1lIEdyYXBoOjpDb2RlQmxvY2sqLCB0eXBlbmFtZSBHcmFwaDo6SW5zdHJ1Y3Rpb24qLCBP
cGNvZGVJRCwgaW50IG9wZXJhbmQpIHsKKyAgICAgICAgICAgIGlmIChpc1ZhbGlkUmVnaXN0ZXJG
b3JMaXZlbmVzcyhvcGVyYW5kKSkKKyAgICAgICAgICAgICAgICB1c2UoVmlydHVhbFJlZ2lzdGVy
KG9wZXJhbmQpLnRvTG9jYWwoKSk7CisgICAgICAgIH0pOworCisgICAgLy8gSWYgd2UgaGF2ZSBh
biBleGNlcHRpb24gaGFuZGxlciwgd2Ugd2FudCB0aGUgbGl2ZS1pbiB2YXJpYWJsZXMgb2YgdGhl
IAorICAgIC8vIGV4Y2VwdGlvbiBoYW5kbGVyIGJsb2NrIHRvIGJlIGluY2x1ZGVkIGluIHRoZSBs
aXZlLWluIG9mIHRoaXMgcGFydGljdWxhciBieXRlY29kZS4KKyAgICBpZiAoYXV0byogaGFuZGxl
ciA9IGNvZGVCbG9jay0+aGFuZGxlckZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KSkg
eworICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGhhbmRsZXJCbG9jayA9IGdyYXBoLmZpbmRC
YXNpY0Jsb2NrV2l0aExlYWRlck9mZnNldChoYW5kbGVyLT50YXJnZXQpOworICAgICAgICBBU1NF
UlQoaGFuZGxlckJsb2NrKTsKKyAgICAgICAgaGFuZGxlckJsb2NrLT5pbigpLmZvckVhY2hTZXRC
aXQodXNlKTsKKyAgICB9Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIERlcml2ZWRBbmFseXNpcz4K
K3RlbXBsYXRlPHR5cGVuYW1lIEdyYXBoPgoraW5saW5lIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0xv
Y2FsUHJvcGFnYXRpb248RGVyaXZlZEFuYWx5c2lzPjo6c3RlcE92ZXJJbnN0cnVjdGlvbihHcmFw
aCYgZ3JhcGgsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBGYXN0Qml0VmVjdG9yJiBvdXQpCit7
CisgICAgc3RlcE92ZXJJbnN0cnVjdGlvbigKKyAgICAgICAgZ3JhcGgsIGJ5dGVjb2RlT2Zmc2V0
LCBvdXQsCisgICAgICAgIFsmXSAodW5zaWduZWQgYml0SW5kZXgpIHsKKyAgICAgICAgICAgIC8v
IFRoaXMgaXMgdGhlIHVzZSBmdW5jdG9yLCBzbyB3ZSBzZXQgdGhlIGJpdC4KKyAgICAgICAgICAg
IG91dC5zZXQoYml0SW5kZXgpOworICAgICAgICB9LAorICAgICAgICBbJl0gKHVuc2lnbmVkIGJp
dEluZGV4KSB7CisgICAgICAgICAgICAvLyBUaGlzIGlzIHRoZSBkZWYgZnVuY3Rvciwgc28gd2Ug
Y2xlYXIgdGhlIGJpdC4KKyAgICAgICAgICAgIG91dC5jbGVhcihiaXRJbmRleCk7CisgICAgICAg
IH0pOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBEZXJpdmVkQW5hbHlzaXM+Cit0ZW1wbGF0ZTx0
eXBlbmFtZSBHcmFwaD4KK2lubGluZSBib29sIEJ5dGVjb2RlTGl2ZW5lc3NMb2NhbFByb3BhZ2F0
aW9uPERlcml2ZWRBbmFseXNpcz46OmNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQnl0ZWNvZGVPZmZz
ZXQoR3JhcGgmIGdyYXBoLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrLCB1bnNpZ25lZCB0YXJn
ZXRPZmZzZXQsIEZhc3RCaXRWZWN0b3ImIHJlc3VsdCkKK3sKKyAgICBBU1NFUlQoIWJsb2NrLT5p
c0V4aXRCbG9jaygpKTsKKyAgICBBU1NFUlQoIWJsb2NrLT5pc0VudHJ5QmxvY2soKSk7CisKKyAg
ICBGYXN0Qml0VmVjdG9yIG91dCA9IGJsb2NrLT5vdXQoKTsKKworICAgIGZvciAoaW50IGkgPSBi
bG9jay0+Ynl0ZWNvZGVPZmZzZXRzKCkuc2l6ZSgpIC0gMTsgaSA+PSAwOyBpLS0pIHsKKyAgICAg
ICAgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQgPSBibG9jay0+Ynl0ZWNvZGVPZmZzZXRzKClbaV07
CisgICAgICAgIGlmICh0YXJnZXRPZmZzZXQgPiBieXRlY29kZU9mZnNldCkKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBzdGVwT3Zlckluc3RydWN0aW9uKGdyYXBoLCBieXRlY29kZU9mZnNl
dCwgb3V0KTsKKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0LnNldEFuZENoZWNrKG91dCk7Cit9
CisKK3RlbXBsYXRlPHR5cGVuYW1lIERlcml2ZWRBbmFseXNpcz4KK3RlbXBsYXRlPHR5cGVuYW1l
IEdyYXBoPgoraW5saW5lIGJvb2wgQnl0ZWNvZGVMaXZlbmVzc0xvY2FsUHJvcGFnYXRpb248RGVy
aXZlZEFuYWx5c2lzPjo6Y29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCbG9jayhHcmFwaCYgZ3JhcGgs
IEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2spCit7CisgICAgaWYgKGJsb2NrLT5pc0V4aXRCbG9j
aygpIHx8IGJsb2NrLT5pc0VudHJ5QmxvY2soKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IHJldHVybiBjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJ5dGVjb2RlT2Zmc2V0KGdyYXBoLCBibG9j
aywgYmxvY2stPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCksIGJsb2NrLT5pbigpKTsKK30KKwordGVt
cGxhdGU8dHlwZW5hbWUgRGVyaXZlZEFuYWx5c2lzPgordGVtcGxhdGU8dHlwZW5hbWUgR3JhcGg+
CitpbmxpbmUgRmFzdEJpdFZlY3RvciBCeXRlY29kZUxpdmVuZXNzTG9jYWxQcm9wYWdhdGlvbjxE
ZXJpdmVkQW5hbHlzaXM+OjpnZXRMaXZlbmVzc0luZm9BdEJ5dGVjb2RlT2Zmc2V0KEdyYXBoJiBn
cmFwaCwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpCit7CisgICAgQnl0ZWNvZGVCYXNpY0Jsb2Nr
KiBibG9jayA9IGdyYXBoLmZpbmRCYXNpY0Jsb2NrRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVP
ZmZzZXQpOworICAgIEFTU0VSVChibG9jayk7CisgICAgQVNTRVJUKCFibG9jay0+aXNFbnRyeUJs
b2NrKCkpOworICAgIEFTU0VSVCghYmxvY2stPmlzRXhpdEJsb2NrKCkpOworICAgIEZhc3RCaXRW
ZWN0b3Igb3V0OworICAgIG91dC5yZXNpemUoYmxvY2stPm91dCgpLm51bUJpdHMoKSk7CisgICAg
Y29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCeXRlY29kZU9mZnNldChncmFwaCwgYmxvY2ssIGJ5dGVj
b2RlT2Zmc2V0LCBvdXQpOworICAgIHJldHVybiBvdXQ7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpT
QwogCiAjZW5kaWYgLy8gQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzSW5saW5lc19oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVSZXdyaXRlci5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVSZXdyaXRlci5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uOGE1MDRlYWM1ZjgzYWQwNzgzMDg5NTQyNmUxYjAyYzhlMjFmNGM3OAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVJld3Jp
dGVyLmNwcApAQCAtMCwwICsxLDg3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IFl1c3Vr
ZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIkJ5dGVjb2RlUmV3cml0ZXIuaCIKKworI2luY2x1ZGUgPHd0Zi9C
dWJibGVTb3J0Lmg+CisKK25hbWVzcGFjZSBKU0MgeworCitpbnQgQnl0ZWNvZGVSZXdyaXRlcjo6
YWRqdXN0T2Zmc2V0KGludCBieXRlY29kZU9mZnNldCwgaW50IGp1bXBUYXJnZXQpCit7CisgICAg
aWYgKGJ5dGVjb2RlT2Zmc2V0IDwganVtcFRhcmdldCkgeworICAgICAgICBhdXRvIHN0YXJ0ID0g
c3RkOjpsb3dlcl9ib3VuZChtX2luc2VydGlvbnMuYmVnaW4oKSwgbV9pbnNlcnRpb25zLmVuZCgp
LCBieXRlY29kZU9mZnNldCwgWyZdIChjb25zdCBJbnNlcnRpb24mIGluc2VydGlvbiwgaW50IGJ5
dGVjb2RlT2Zmc2V0KSB7CisgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihpbnNl
cnRpb24uaW5kZXgoKSkgPCBieXRlY29kZU9mZnNldDsKKyAgICAgICAgfSk7CisgICAgICAgIGlm
IChzdGFydCAhPSBtX2luc2VydGlvbnMuZW5kKCkpIHsKKyAgICAgICAgICAgIGF1dG8gZW5kID0g
c3RkOjpsb3dlcl9ib3VuZChtX2luc2VydGlvbnMuYmVnaW4oKSwgbV9pbnNlcnRpb25zLmVuZCgp
LCBqdW1wVGFyZ2V0LCBbJl0gKGNvbnN0IEluc2VydGlvbiYgaW5zZXJ0aW9uLCBpbnQganVtcFRh
cmdldCkgeworICAgICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KGluc2VydGlv
bi5pbmRleCgpKSA8IGp1bXBUYXJnZXQ7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIGZv
ciAoOyBzdGFydCAhPSBlbmQ7ICsrc3RhcnQpIHsKKyAgICAgICAgICAgICAgICBpZiAoc3RhcnQt
PmVsZW1lbnQoKS50eXBlID09IENvbW1hbmQ6OlR5cGU6OlJlbW92ZSkKKyAgICAgICAgICAgICAg
ICAgICAganVtcFRhcmdldCAtPSBzdGFydC0+ZWxlbWVudCgpLmxlbmd0aDsKKyAgICAgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGp1bXBUYXJnZXQgKz0gc3RhcnQtPmVsZW1l
bnQoKS5sZW5ndGg7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGp1
bXBUYXJnZXQgLSBieXRlY29kZU9mZnNldDsKKyAgICB9CisKKyAgICBpZiAoYnl0ZWNvZGVPZmZz
ZXQgPT0ganVtcFRhcmdldCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4gLWFkanVz
dE9mZnNldChqdW1wVGFyZ2V0LCBieXRlY29kZU9mZnNldCk7Cit9CisKK3ZvaWQgQnl0ZWNvZGVS
ZXdyaXRlcjo6YXBwbHlNb2RpZmljYXRpb24oKQoreworICAgIGZvciAoc2l6ZV90IGluc2VydGlv
bkluZGV4ID0gbV9pbnNlcnRpb25zLnNpemUoKTsgaW5zZXJ0aW9uSW5kZXgtLTspIHsKKyAgICAg
ICAgY29uc3QgSW5zZXJ0aW9uJiBpbnNlcnRpb24gPSBtX2luc2VydGlvbnNbaW5zZXJ0aW9uSW5k
ZXhdOworICAgICAgICBpZiAoaW5zZXJ0aW9uLmVsZW1lbnQoKS50eXBlID09IENvbW1hbmQ6OlR5
cGU6OlJlbW92ZSkKKyAgICAgICAgICAgIG1fZ3JhcGguaW5zdHJ1Y3Rpb25zKCkucmVtb3ZlKGlu
c2VydGlvbi5pbmRleCgpLCBpbnNlcnRpb24uZWxlbWVudCgpLmxlbmd0aCk7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIG1fZ3JhcGguaW5zdHJ1Y3Rpb25zKCkuaW5zZXJ0KGluc2VydGlvbi5p
bmRleCgpLCBpbnNlcnRpb24uZWxlbWVudCgpLmJ5dGVjb2RlLmluc3RydWN0aW9ucywgb3Bjb2Rl
TGVuZ3RoKGluc2VydGlvbi5lbGVtZW50KCkuYnl0ZWNvZGUuaW5zdHJ1Y3Rpb25zWzBdLnUub3Bj
b2RlKSk7CisgICAgfQorICAgIG1faW5zZXJ0aW9ucy5jbGVhcigpOworfQorCit2b2lkIEJ5dGVj
b2RlUmV3cml0ZXI6OmV4ZWN1dGUoKQoreworICAgIFdURjo6YnViYmxlU29ydChtX2luc2VydGlv
bnMuYmVnaW4oKSwgbV9pbnNlcnRpb25zLmVuZCgpLCBbXSAoY29uc3QgSW5zZXJ0aW9uJiBsaHMs
IGNvbnN0IEluc2VydGlvbiYgcmhzKSB7CisgICAgICAgIGlmIChsaHMuaW5kZXgoKSA9PSByaHMu
aW5kZXgoKSkgeworICAgICAgICAgICAgaWYgKGxocy5lbGVtZW50KCkudHlwZSA9PSByaHMuZWxl
bWVudCgpLnR5cGUpCisgICAgICAgICAgICAgICAgcmV0dXJuIGxocy5lbGVtZW50KCkucG9zaXRp
b24gPCByaHMuZWxlbWVudCgpLnBvc2l0aW9uOworICAgICAgICAgICAgLy8gV2Ugd291bGQgbGlr
ZSB0byBwZXJmb3JtIHJlbW92ZSBvcGVyYXRpb24gYmVmb3JlIGluc2VydGlvbi4KKyAgICAgICAg
ICAgIHJldHVybiBsaHMuZWxlbWVudCgpLnR5cGUgPCByaHMuZWxlbWVudCgpLnR5cGU7CisgICAg
ICAgIH0KKyAgICAgICAgcmV0dXJuIGxocyA8IHJoczsKKyAgICB9KTsKKworICAgIFVubGlua2Vk
Q29kZUJsb2NrKiBjb2RlQmxvY2sgPSBtX2dyYXBoLmNvZGVCbG9jaygpOworICAgIGNvZGVCbG9j
ay0+YXBwbHlNb2RpZmljYXRpb24oKnRoaXMpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVJld3JpdGVy
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVSZXdyaXRlci5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjYxNDk5MGU5NjkwMGQyODI3MTM4Njg5MzYxNzMzMTk5NzgzMWY3OGUKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVSZXdy
aXRlci5oCkBAIC0wLDAgKzEsOTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgWXVzdWtl
IFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2luY2x1ZGUgIkJ5dGVjb2RlR3JhcGguaCIKKyNpbmNsdWRlICJCeXRlY29kZXMuaCIKKyNp
bmNsdWRlICJVbmxpbmtlZENvZGVCbG9jay5oIgorI2luY2x1ZGUgPHd0Zi9JbnNlcnRpb24uaD4K
KworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEJ5dGVjb2RlUmV3cml0ZXIgeworcHVibGljOgor
ICAgIHN0cnVjdCBJbnNlcnRlZEJ5dGVjb2RlIHsKKyAgICAgICAgVW5saW5rZWRJbnN0cnVjdGlv
biBpbnN0cnVjdGlvbnNbTUFYX09QQ09ERV9MRU5HVEhfT0ZfQllURUNPREVdOworICAgIH07CisK
KyAgICBzdHJ1Y3QgQ29tbWFuZCB7CisgICAgICAgIGVudW0gY2xhc3MgVHlwZSA6IHVpbnQxNl90
IHsgSW5zZXJ0ID0gMCwgUmVtb3ZlID0gMSwgfTsKKyAgICAgICAgZW51bSBjbGFzcyBQb3NpdGlv
biA6IHVpbnQxNl90IHsgQmVmb3JlID0gMCwgQWZ0ZXIgPSAxIH07CisKKyAgICAgICAgVHlwZSB0
eXBlOworICAgICAgICBQb3NpdGlvbiBwb3NpdGlvbjsKKyAgICAgICAgc2l6ZV90IGxlbmd0aDsK
KyAgICAgICAgSW5zZXJ0ZWRCeXRlY29kZSBieXRlY29kZTsKKyAgICB9OworCisgICAgdHlwZWRl
ZiBXVEY6Okluc2VydGlvbjxDb21tYW5kPiBJbnNlcnRpb247CisKKyAgICBCeXRlY29kZVJld3Jp
dGVyKEJ5dGVjb2RlR3JhcGg8VW5saW5rZWRDb2RlQmxvY2s+JiBncmFwaCkKKyAgICAgICAgOiBt
X2dyYXBoKGdyYXBoKQorICAgIHsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTxjbGFzcy4uLiBBcmdz
PgorICAgIHZvaWQgaW5zZXJ0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBPcGNvZGVJRCBvcGNv
ZGVJRCwgQXJncy4uLiBhcmdzKQorICAgIHsKKyAgICAgICAgSW5zZXJ0ZWRCeXRlY29kZSBieXRl
Y29kZSA9IHsgeworICAgICAgICAgICAgVW5saW5rZWRJbnN0cnVjdGlvbihvcGNvZGVJRCksCisg
ICAgICAgICAgICBVbmxpbmtlZEluc3RydWN0aW9uKGFyZ3MpLi4uCisgICAgICAgIH0gfTsKKyAg
ICAgICAgbV9pbnNlcnRpb25zLmFwcGVuZChJbnNlcnRpb24oYnl0ZWNvZGVPZmZzZXQsIENvbW1h
bmQgeyBDb21tYW5kOjpUeXBlOjpJbnNlcnQsIENvbW1hbmQ6OlBvc2l0aW9uOjpBZnRlciwgb3Bj
b2RlTGVuZ3RoKG9wY29kZUlEKSwgYnl0ZWNvZGUgfSkpOworICAgIH0KKworICAgIHRlbXBsYXRl
PGNsYXNzLi4uIEFyZ3M+CisgICAgdm9pZCBpbnNlcnRCZWZvcmUodW5zaWduZWQgYnl0ZWNvZGVP
ZmZzZXQsIE9wY29kZUlEIG9wY29kZUlELCBBcmdzLi4uIGFyZ3MpCisgICAgeworICAgICAgICBJ
bnNlcnRlZEJ5dGVjb2RlIGJ5dGVjb2RlID0geyB7CisgICAgICAgICAgICBVbmxpbmtlZEluc3Ry
dWN0aW9uKG9wY29kZUlEKSwKKyAgICAgICAgICAgIFVubGlua2VkSW5zdHJ1Y3Rpb24oYXJncyku
Li4KKyAgICAgICAgfSB9OworICAgICAgICBtX2luc2VydGlvbnMuYXBwZW5kKEluc2VydGlvbihi
eXRlY29kZU9mZnNldCwgQ29tbWFuZCB7IENvbW1hbmQ6OlR5cGU6Okluc2VydCwgQ29tbWFuZDo6
UG9zaXRpb246OkJlZm9yZSwgb3Bjb2RlTGVuZ3RoKG9wY29kZUlEKSwgYnl0ZWNvZGUgfSkpOwor
ICAgIH0KKworICAgIHZvaWQgcmVtb3ZlQnl0ZWNvZGUodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQp
CisgICAgeworICAgICAgICBtX2luc2VydGlvbnMuYXBwZW5kKEluc2VydGlvbihieXRlY29kZU9m
ZnNldCwgQ29tbWFuZCB7IENvbW1hbmQ6OlR5cGU6OlJlbW92ZSwgQ29tbWFuZDo6UG9zaXRpb246
OkFmdGVyLCBvcGNvZGVMZW5ndGgobV9ncmFwaC5pbnN0cnVjdGlvbnMoKVtieXRlY29kZU9mZnNl
dF0udS5vcGNvZGUpLCBJbnNlcnRlZEJ5dGVjb2RlIHsgfSB9KSk7CisgICAgfQorCisgICAgdm9p
ZCBleGVjdXRlKCk7CisKKyAgICBCeXRlY29kZUdyYXBoPFVubGlua2VkQ29kZUJsb2NrPiYgZ3Jh
cGgoKSB7IHJldHVybiBtX2dyYXBoOyB9CisKKyAgICBpbnQgYWRqdXN0T2Zmc2V0KGludCBieXRl
Y29kZU9mZnNldCwgaW50IGp1bXBUYXJnZXQpOworCitwcml2YXRlOgorICAgIGZyaWVuZCBjbGFz
cyBVbmxpbmtlZENvZGVCbG9jazsKKyAgICB2b2lkIGFwcGx5TW9kaWZpY2F0aW9uKCk7CisKKyAg
ICBCeXRlY29kZUdyYXBoPFVubGlua2VkQ29kZUJsb2NrPiYgbV9ncmFwaDsKKyAgICBWZWN0b3I8
SW5zZXJ0aW9uLCA4PiBtX2luc2VydGlvbnM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKaW5kZXgg
NjA1N2VmNjA5ZWVkMWVlMmE5OWIwNzYyOGI5MWM5NzU1MzNmZTRiYi4uMTc1MDJlYjBmNDRlMDVl
YTE2MDI2YzAxNDZjNTRkZGY5NzU1NDRmOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKQEAgLTI3LDE4ICsyNywxMyBAQAogI2RlZmluZSBC
eXRlY29kZVVzZURlZl9oCiAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJJbnRl
cnByZXRlci5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAotdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rv
cj4KLXZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCgKLSAgICBDb2RlQmxvY2sqIGNv
ZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaywgdW5zaWduZWQgYnl0ZWNvZGVPZmZz
ZXQsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCit0ZW1wbGF0ZTx0eXBlbmFtZSBCbG9jaywgdHlw
ZW5hbWUgRnVuY3RvciwgdHlwZW5hbWUgSW5zdHJ1Y3Rpb24+Cit2b2lkIGNvbXB1dGVVc2VzRm9y
Qnl0ZWNvZGVPZmZzZXQoQmxvY2sqIGNvZGVCbG9jaywgT3Bjb2RlSUQgb3Bjb2RlSUQsIEluc3Ry
dWN0aW9uKiBpbnN0cnVjdGlvbiwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikKIHsKLSAgICBJbnRl
cnByZXRlciogaW50ZXJwcmV0ZXIgPSBjb2RlQmxvY2stPnZtKCktPmludGVycHJldGVyOwotICAg
IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiA9IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25z
KCkuYmVnaW4oKTsKLSAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSAmaW5zdHJ1Y3Rpb25z
QmVnaW5bYnl0ZWNvZGVPZmZzZXRdOwotICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0
ZXItPmdldE9wY29kZUlEKGluc3RydWN0aW9uLT51Lm9wY29kZSk7Ci0KICAgICBpZiAob3Bjb2Rl
SUQgIT0gb3BfZW50ZXIgJiYgY29kZUJsb2NrLT53YXNDb21waWxlZFdpdGhEZWJ1Z2dpbmdPcGNv
ZGVzKCkgJiYgY29kZUJsb2NrLT5zY29wZVJlZ2lzdGVyKCkuaXNWYWxpZCgpKQogICAgICAgICBm
dW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBjb2RlQmxvY2stPnNjb3Bl
UmVnaXN0ZXIoKS5vZmZzZXQoKSk7CiAKQEAgLTc1LDggKzcwLDcgQEAgdm9pZCBjb21wdXRlVXNl
c0ZvckJ5dGVjb2RlT2Zmc2V0KAogICAgIGNhc2Ugb3Bfam5lcV9udWxsOgogICAgIGNhc2Ugb3Bf
ZGVjOgogICAgIGNhc2Ugb3BfaW5jOgotICAgIGNhc2Ugb3BfbG9nX3NoYWRvd19jaGlja2VuX3By
b2xvZ3VlOgotICAgIGNhc2Ugb3BfcmVzdW1lOiB7CisgICAgY2FzZSBvcF9sb2dfc2hhZG93X2No
aWNrZW5fcHJvbG9ndWU6IHsKICAgICAgICAgQVNTRVJUKG9wY29kZUxlbmd0aHNbb3Bjb2RlSURd
ID4gMSk7CiAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQs
IGluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CiAgICAgICAgIHJldHVybjsKQEAgLTI4Nyw0MiAr
MjgxLDI4IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCgKICAgICAgICAgICAg
IGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGNvZGVCbG9jay0+c2Nv
cGVSZWdpc3RlcigpLm9mZnNldCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBjYXNl
IG9wX3NhdmU6IHsKLSAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNv
ZGVJRCwgaW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKTsKLSAgICAgICAgdW5zaWduZWQgbWVyZ2VQ
b2ludEJ5dGVjb2RlT2Zmc2V0ID0gYnl0ZWNvZGVPZmZzZXQgKyBpbnN0cnVjdGlvblszXS51Lm9w
ZXJhbmQ7Ci0gICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogbWVyZ2VQb2ludEJsb2NrID0gbnVs
bHB0cjsKLSAgICAgICAgZm9yIChCeXRlY29kZUJhc2ljQmxvY2sqIHN1Y2Nlc3NvciA6IGJsb2Nr
LT5zdWNjZXNzb3JzKCkpIHsKLSAgICAgICAgICAgIGlmIChzdWNjZXNzb3ItPmxlYWRlckJ5dGVj
b2RlT2Zmc2V0KCkgPT0gbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0KSB7Ci0gICAgICAgICAgICAg
ICAgbWVyZ2VQb2ludEJsb2NrID0gc3VjY2Vzc29yOwotICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIEFTU0VSVChtZXJnZVBvaW50QmxvY2sp
OwotICAgICAgICBtZXJnZVBvaW50QmxvY2stPmluKCkuZm9yRWFjaFNldEJpdChbJl0odW5zaWdu
ZWQgbG9jYWwpIHsKLSAgICAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwg
b3Bjb2RlSUQsIHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGxvY2FsKS5vZmZzZXQoKSk7Ci0gICAg
ICAgIH0pOworCisgICAgY2FzZSBvcF9zYXZlOgorICAgIGNhc2Ugb3BfcmVzdW1lOiB7CisgICAg
ICAgIC8vIERvIG5vdGhpbmcgaW4gbGl2ZW5lc3MgYW5hbHlzaXMuCiAgICAgICAgIHJldHVybjsK
ICAgICB9CisKICAgICBkZWZhdWx0OgogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgICAgICBicmVhazsKICAgICB9CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0
b3I+Ci12b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBj
b25zdCBGdW5jdG9yJiBmdW5jdG9yKQordGVtcGxhdGU8dHlwZW5hbWUgQmxvY2ssIHR5cGVuYW1l
IEluc3RydWN0aW9uLCB0eXBlbmFtZSBGdW5jdG9yPgordm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVj
b2RlT2Zmc2V0KEJsb2NrKiBjb2RlQmxvY2ssIE9wY29kZUlEIG9wY29kZUlELCBJbnN0cnVjdGlv
biogaW5zdHJ1Y3Rpb24sIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiB7Ci0gICAgSW50ZXJwcmV0
ZXIqIGludGVycHJldGVyID0gY29kZUJsb2NrLT52bSgpLT5pbnRlcnByZXRlcjsKLSAgICBJbnN0
cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4gPSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJl
Z2luKCk7Ci0gICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uID0gJmluc3RydWN0aW9uc0JlZ2lu
W2J5dGVjb2RlT2Zmc2V0XTsKLSAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGludGVycHJldGVyLT5n
ZXRPcGNvZGVJRChpbnN0cnVjdGlvbi0+dS5vcGNvZGUpOwogICAgIHN3aXRjaCAob3Bjb2RlSUQp
IHsKICAgICAvLyBUaGVzZSBkb24ndCBkZWZpbmUgYW55dGhpbmcuCiAgICAgY2FzZSBvcF9wdXRf
dG9fc2NvcGU6CiAgICAgY2FzZSBvcF9lbmQ6CiAgICAgY2FzZSBvcF90aHJvdzoKICAgICBjYXNl
IG9wX3Rocm93X3N0YXRpY19lcnJvcjoKLSAgICBjYXNlIG9wX3NhdmU6CiAgICAgY2FzZSBvcF9h
c3NlcnQ6CiAgICAgY2FzZSBvcF9kZWJ1ZzoKICAgICBjYXNlIG9wX3JldDoKQEAgLTQ2Miw3ICs0
NDIsNyBAQCB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2Rl
QmxvY2ssIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvYwogICAgIGNhc2Ugb3BfZGVsX2J5X2lkOgog
ICAgIGNhc2Ugb3BfZGVsX2J5X3ZhbDoKICAgICBjYXNlIG9wX3Vuc2lnbmVkOgotICAgIGNhc2Ug
b3BfZ2V0X2Zyb21fYXJndW1lbnRzOiAKKyAgICBjYXNlIG9wX2dldF9mcm9tX2FyZ3VtZW50czoK
ICAgICBjYXNlIG9wX2NyZWF0ZV9yZXN0OgogICAgIGNhc2Ugb3BfZ2V0X3Jlc3RfbGVuZ3RoOiB7
CiAgICAgICAgIEFTU0VSVChvcGNvZGVMZW5ndGhzW29wY29kZUlEXSA+IDEpOwpAQCAtNDgwLDE1
ICs0NjAsMTQgQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayog
Y29kZUJsb2NrLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2MKICAgICAgICAgICAgIGZ1bmN0b3Io
Y29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIHZpcnR1YWxSZWdpc3RlckZvckxvY2Fs
KGkpLm9mZnNldCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICBjYXNlIG9wX3NhdmU6
CiAgICAgY2FzZSBvcF9yZXN1bWU6IHsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoYmxvY2stPnN1
Y2Nlc3NvcnMoKS5zaXplKCkgPT0gMSk7Ci0gICAgICAgIC8vIEZJWE1FOiBUaGlzIGlzIHJlYWxs
eSBkaXJ0eS4KLSAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1OTI4MQotICAgICAgICBibG9jay0+c3VjY2Vzc29ycygpWzBdLT5pbigpLmZvckVhY2hT
ZXRCaXQoWyZdKHVuc2lnbmVkIGxvY2FsKSB7Ci0gICAgICAgICAgICBmdW5jdG9yKGNvZGVCbG9j
aywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChsb2NhbCku
b2Zmc2V0KCkpOwotICAgICAgICB9KTsKKyAgICAgICAgLy8gRG8gbm90aGluZyBpbiBsaXZlbmVz
cyBhbmFseXNpcy4KICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICBkZWZhdWx0OgorICAgICAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm47CiAgICAgfQog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4
IDFkOTEzNWEyMzczOTE2MzA5MThmZDU1YTZlNTQyNTg5NzE1Y2QwYjUuLjU4NmNjZjUyOGQ0YmZh
ZDJhYjkwYjllYWU2NjQ2YjFlYTJkMTQxMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiQXJpdGhQ
cm9maWxlLmgiCiAjaW5jbHVkZSAiQmFzaWNCbG9ja0xvY2F0aW9uLmgiCiAjaW5jbHVkZSAiQnl0
ZWNvZGVHZW5lcmF0b3IuaCIKKyNpbmNsdWRlICJCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuaCIK
ICNpbmNsdWRlICJCeXRlY29kZVVzZURlZi5oIgogI2luY2x1ZGUgIkNhbGxMaW5rU3RhdHVzLmgi
CiAjaW5jbHVkZSAiREZHQ2FwYWJpbGl0aWVzLmgiCkBAIC02OTYsMTggKzY5Nyw2IEBAIHZvaWQg
Q29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoUHJpbnRTdHJlYW0mIG91dCkKICAgICAgICAgfSB3aGls
ZSAoaSA8IG1fcmFyZURhdGEtPm1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlcy5zaXplKCkpOwogICAg
IH0KIAotICAgIGlmIChtX3JhcmVEYXRhICYmICFtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2Nh
bHNBdFlpZWxkLmlzRW1wdHkoKSkgewotICAgICAgICBvdXQucHJpbnRmKCJcbkxpdmUgQ2FsbGVl
IExvY2FsczpcbiIpOwotICAgICAgICB1bnNpZ25lZCBpID0gMDsKLSAgICAgICAgZG8gewotICAg
ICAgICAgICAgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZW5lc3MgPSBtX3JhcmVEYXRhLT5tX2xp
dmVDYWxsZWVMb2NhbHNBdFlpZWxkW2ldOwotICAgICAgICAgICAgb3V0LnByaW50ZigiICBsaXZl
JTF1ID0gIiwgaSk7Ci0gICAgICAgICAgICBsaXZlbmVzcy5kdW1wKG91dCk7Ci0gICAgICAgICAg
ICBvdXQucHJpbnRmKCJcbiIpOwotICAgICAgICAgICAgKytpOwotICAgICAgICB9IHdoaWxlIChp
IDwgbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZC5zaXplKCkpOwotICAgIH0K
LQogICAgIG91dC5wcmludGYoIlxuIik7CiB9CiAKQEAgLTE2NzEsMzEgKzE2NjAsNiBAQCB2b2lk
IENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKAogICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVk
IiwgZGVidWdIb29rTmFtZShkZWJ1Z0hvb2tJRCksIGhhc0JyZWFrcG9pbnRGbGFnKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIGNhc2Ugb3Bfc2F2ZTogewotICAgICAg
ICAgICAgaW50IGdlbmVyYXRvciA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgdW5z
aWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gKCsraXQpLT51LnVuc2lnbmVkVmFsdWU7Ci0g
ICAgICAgICAgICBpbnQgb2Zmc2V0ID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBG
YXN0Qml0VmVjdG9yIGxpdmVuZXNzOwotICAgICAgICAgICAgaWYgKGxpdmVDYWxsZWVMb2NhbHNJ
bmRleCA8IG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQuc2l6ZSgpKQotICAg
ICAgICAgICAgICAgIGxpdmVuZXNzID0gbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZ
aWVsZFtsaXZlQ2FsbGVlTG9jYWxzSW5kZXhdOwotICAgICAgICAgICAgcHJpbnRMb2NhdGlvbkFu
ZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAic2F2ZSIpOwotICAgICAgICAgICAgb3V0LnBy
aW50ZigiJXMsICIsIHJlZ2lzdGVyTmFtZShnZW5lcmF0b3IpLmRhdGEoKSk7Ci0gICAgICAgICAg
ICBsaXZlbmVzcy5kdW1wKG91dCk7Ci0gICAgICAgICAgICBvdXQucHJpbnRmKCIoQGxpdmUlMXUp
LCAlZCgtPiVkKSIsIGxpdmVDYWxsZWVMb2NhbHNJbmRleCwgb2Zmc2V0LCBsb2NhdGlvbiArIG9m
ZnNldCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIG9wX3Jl
c3VtZTogewotICAgICAgICAgICAgaW50IGdlbmVyYXRvciA9ICgrK2l0KS0+dS5vcGVyYW5kOwot
ICAgICAgICAgICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gKCsraXQpLT51LnVu
c2lnbmVkVmFsdWU7Ci0gICAgICAgICAgICBGYXN0Qml0VmVjdG9yIGxpdmVuZXNzOwotICAgICAg
ICAgICAgaWYgKGxpdmVDYWxsZWVMb2NhbHNJbmRleCA8IG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxl
ZUxvY2Fsc0F0WWllbGQuc2l6ZSgpKQotICAgICAgICAgICAgICAgIGxpdmVuZXNzID0gbV9yYXJl
RGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZFtsaXZlQ2FsbGVlTG9jYWxzSW5kZXhdOwot
ICAgICAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAi
cmVzdW1lIik7Ci0gICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgIiwgcmVnaXN0ZXJOYW1lKGdl
bmVyYXRvcikuZGF0YSgpKTsKLSAgICAgICAgICAgIGxpdmVuZXNzLmR1bXAob3V0KTsKLSAgICAg
ICAgICAgIG91dC5wcmludGYoIihAbGl2ZSUxdSkiLCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpOwot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9hc3NlcnQ6IHsK
ICAgICAgICAgICAgIGludCBjb25kaXRpb24gPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAg
ICAgIGludCBsaW5lID0gKCsraXQpLT51Lm9wZXJhbmQ7CkBAIC0xOTA3LDcgKzE4NzEsNiBAQCB2
b2lkIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBDb3B5UGFyc2VkQmxvY2tUYWcs
IENvZGVCbG9jayYgb3RoZXIpCiAgICAgICAgIG1fcmFyZURhdGEtPm1fY29uc3RhbnRCdWZmZXJz
ID0gb3RoZXIubV9yYXJlRGF0YS0+bV9jb25zdGFudEJ1ZmZlcnM7CiAgICAgICAgIG1fcmFyZURh
dGEtPm1fc3dpdGNoSnVtcFRhYmxlcyA9IG90aGVyLm1fcmFyZURhdGEtPm1fc3dpdGNoSnVtcFRh
YmxlczsKICAgICAgICAgbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzID0gb3Ro
ZXIubV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzOwotICAgICAgICBtX3JhcmVE
YXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkID0gb3RoZXIubV9yYXJlRGF0YS0+bV9saXZl
Q2FsbGVlTG9jYWxzQXRZaWVsZDsKICAgICB9CiAgICAgCiAgICAgaGVhcCgpLT5tX2NvZGVCbG9j
a3MuYWRkKHRoaXMpOwpAQCAtMjAyOSw3ICsxOTkyLDcgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmlz
aENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxp
bmsKICAgICAgICAgICAgICAgICBVbmxpbmtlZFN0cmluZ0p1bXBUYWJsZTo6U3RyaW5nT2Zmc2V0
VGFibGU6Oml0ZXJhdG9yIGVuZCA9IHVubGlua2VkQ29kZUJsb2NrLT5zdHJpbmdTd2l0Y2hKdW1w
VGFibGUoaSkub2Zmc2V0VGFibGUuZW5kKCk7CiAgICAgICAgICAgICAgICAgZm9yICg7IHB0ciAh
PSBlbmQ7ICsrcHRyKSB7CiAgICAgICAgICAgICAgICAgICAgIE9mZnNldExvY2F0aW9uIG9mZnNl
dDsKLSAgICAgICAgICAgICAgICAgICAgb2Zmc2V0LmJyYW5jaE9mZnNldCA9IHB0ci0+dmFsdWU7
CisgICAgICAgICAgICAgICAgICAgIG9mZnNldC5icmFuY2hPZmZzZXQgPSBwdHItPnZhbHVlLmJy
YW5jaE9mZnNldDsKICAgICAgICAgICAgICAgICAgICAgbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0
Y2hKdW1wVGFibGVzW2ldLm9mZnNldFRhYmxlLmFkZChwdHItPmtleSwgb2Zmc2V0KTsKICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICB9CkBAIC0yMDY5LDExICsyMDMyLDE3IEBAIHZvaWQg
Q29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVy
RXhlY3V0YWJsZSwgVW5saW5rCiAgICAgLy8gQm9va2tlZXAgdGhlIHN0cm9uZ2x5IHJlZmVyZW5j
ZWQgbW9kdWxlIGVudmlyb25tZW50cy4KICAgICBIYXNoU2V0PEpTTW9kdWxlRW52aXJvbm1lbnQq
PiBzdHJvbmdseVJlZmVyZW5jZWRNb2R1bGVFbnZpcm9ubWVudHM7CiAKLSAgICAvLyBCb29ra2Vl
cCB0aGUgbWVyZ2UgcG9pbnQgYnl0ZWNvZGUgb2Zmc2V0cy4KLSAgICBWZWN0b3I8c2l6ZV90PiBt
ZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXRzOwotCiAgICAgUmVmQ291bnRlZEFycmF5PEluc3RydWN0
aW9uPiBpbnN0cnVjdGlvbnMoaW5zdHJ1Y3Rpb25Db3VudCk7CiAKKyAgICB1bnNpZ25lZCB2YWx1
ZVByb2ZpbGVDb3VudCA9IDA7CisgICAgYXV0byBsaW5rVmFsdWVQcm9maWxlID0gWyZdKHVuc2ln
bmVkIGJ5dGVjb2RlT2Zmc2V0LCB1bnNpZ25lZCBvcExlbmd0aCkgeworICAgICAgICB1bnNpZ25l
ZCB2YWx1ZVByb2ZpbGVJbmRleCA9IHZhbHVlUHJvZmlsZUNvdW50Kys7CisgICAgICAgIFZhbHVl
UHJvZmlsZSogcHJvZmlsZSA9ICZtX3ZhbHVlUHJvZmlsZXNbdmFsdWVQcm9maWxlSW5kZXhdOwor
ICAgICAgICBBU1NFUlQocHJvZmlsZS0+bV9ieXRlY29kZU9mZnNldCA9PSAtMSk7CisgICAgICAg
IHByb2ZpbGUtPm1fYnl0ZWNvZGVPZmZzZXQgPSBieXRlY29kZU9mZnNldDsKKyAgICAgICAgaW5z
dHJ1Y3Rpb25zW2J5dGVjb2RlT2Zmc2V0ICsgb3BMZW5ndGggLSAxXSA9IHByb2ZpbGU7CisgICAg
fTsKKwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7ICFpbnN0cnVjdGlvblJlYWRlci5hdEVuZCgp
OyApIHsKICAgICAgICAgY29uc3QgVW5saW5rZWRJbnN0cnVjdGlvbiogcGMgPSBpbnN0cnVjdGlv
blJlYWRlci5uZXh0KCk7CiAKQEAgLTIxMDgsMTAgKzIwNzcsNyBAQCB2b2lkIENvZGVCbG9jazo6
ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUs
IFVubGluawogICAgICAgICBjYXNlIG9wX2dldF9ieV9pZDoKICAgICAgICAgY2FzZSBvcF9nZXRf
ZnJvbV9hcmd1bWVudHM6CiAgICAgICAgIGNhc2Ugb3BfdG9fbnVtYmVyOiB7Ci0gICAgICAgICAg
ICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSAmbV92YWx1ZVByb2ZpbGVzW3BjW29wTGVuZ3RoIC0g
MV0udS5vcGVyYW5kXTsKLSAgICAgICAgICAgIEFTU0VSVChwcm9maWxlLT5tX2J5dGVjb2RlT2Zm
c2V0ID09IC0xKTsKLSAgICAgICAgICAgIHByb2ZpbGUtPm1fYnl0ZWNvZGVPZmZzZXQgPSBpOwot
ICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zW2kgKyBvcExlbmd0aCAtIDFdID0gcHJvZmlsZTsKKyAg
ICAgICAgICAgIGxpbmtWYWx1ZVByb2ZpbGUoaSwgb3BMZW5ndGgpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9wdXRfYnlfdmFsOiB7CkBAIC0yMTQ4LDEw
ICsyMTE0LDcgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0
RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICAgICAgY2FzZSBvcF9jYWxs
OgogICAgICAgICBjYXNlIG9wX3RhaWxfY2FsbDoKICAgICAgICAgY2FzZSBvcF9jYWxsX2V2YWw6
IHsKLSAgICAgICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9ICZtX3ZhbHVlUHJvZmlsZXNb
cGNbb3BMZW5ndGggLSAxXS51Lm9wZXJhbmRdOwotICAgICAgICAgICAgQVNTRVJUKHByb2ZpbGUt
Pm1fYnl0ZWNvZGVPZmZzZXQgPT0gLTEpOwotICAgICAgICAgICAgcHJvZmlsZS0+bV9ieXRlY29k
ZU9mZnNldCA9IGk7Ci0gICAgICAgICAgICBpbnN0cnVjdGlvbnNbaSArIG9wTGVuZ3RoIC0gMV0g
PSBwcm9maWxlOworICAgICAgICAgICAgbGlua1ZhbHVlUHJvZmlsZShpLCBvcExlbmd0aCk7CiAg
ICAgICAgICAgICBpbnQgYXJyYXlQcm9maWxlSW5kZXggPSBwY1tvcExlbmd0aCAtIDJdLnUub3Bl
cmFuZDsKICAgICAgICAgICAgIG1fYXJyYXlQcm9maWxlc1thcnJheVByb2ZpbGVJbmRleF0gPSBB
cnJheVByb2ZpbGUoaSk7CiAgICAgICAgICAgICBpbnN0cnVjdGlvbnNbaSArIG9wTGVuZ3RoIC0g
Ml0gPSAmbV9hcnJheVByb2ZpbGVzW2FycmF5UHJvZmlsZUluZGV4XTsKQEAgLTIxNjAsMTAgKzIx
MjMsNyBAQCB2b2lkIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVj
dXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGluawogICAgICAgICB9CiAgICAgICAgIGNhc2Ug
b3BfY29uc3RydWN0OiB7CiAgICAgICAgICAgICBpbnN0cnVjdGlvbnNbaSArIDVdID0gJm1fbGxp
bnRDYWxsTGlua0luZm9zW3BjWzVdLnUub3BlcmFuZF07Ci0gICAgICAgICAgICBWYWx1ZVByb2Zp
bGUqIHByb2ZpbGUgPSAmbV92YWx1ZVByb2ZpbGVzW3BjW29wTGVuZ3RoIC0gMV0udS5vcGVyYW5k
XTsKLSAgICAgICAgICAgIEFTU0VSVChwcm9maWxlLT5tX2J5dGVjb2RlT2Zmc2V0ID09IC0xKTsK
LSAgICAgICAgICAgIHByb2ZpbGUtPm1fYnl0ZWNvZGVPZmZzZXQgPSBpOwotICAgICAgICAgICAg
aW5zdHJ1Y3Rpb25zW2kgKyBvcExlbmd0aCAtIDFdID0gcHJvZmlsZTsKKyAgICAgICAgICAgIGxp
bmtWYWx1ZVByb2ZpbGUoaSwgb3BMZW5ndGgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KICAgICAgICAgY2FzZSBvcF9nZXRfYXJyYXlfbGVuZ3RoOgpAQCAtMjE5NCwxMCArMjE1NCw3
IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFi
bGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAgICAgIH0KIAogICAgICAgICBjYXNlIG9w
X2dldF9mcm9tX3Njb3BlOiB7Ci0gICAgICAgICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSAm
bV92YWx1ZVByb2ZpbGVzW3BjW29wTGVuZ3RoIC0gMV0udS5vcGVyYW5kXTsKLSAgICAgICAgICAg
IEFTU0VSVChwcm9maWxlLT5tX2J5dGVjb2RlT2Zmc2V0ID09IC0xKTsKLSAgICAgICAgICAgIHBy
b2ZpbGUtPm1fYnl0ZWNvZGVPZmZzZXQgPSBpOwotICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zW2kg
KyBvcExlbmd0aCAtIDFdID0gcHJvZmlsZTsKKyAgICAgICAgICAgIGxpbmtWYWx1ZVByb2ZpbGUo
aSwgb3BMZW5ndGgpOwogCiAgICAgICAgICAgICAvLyBnZXRfZnJvbV9zY29wZSBkc3QsIHNjb3Bl
LCBpZCwgR2V0UHV0SW5mbywgU3RydWN0dXJlLCBPcGVyYW5kCiAKQEAgLTIzNTQsMTUgKzIzMTEs
NiBAQCB2b2lkIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRh
YmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGluawogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KIAotICAgICAgICBjYXNlIG9wX3NhdmU6IHsKLSAgICAgICAgICAgIHVuc2lnbmVkIGxpdmVD
YWxsZWVMb2NhbHNJbmRleCA9IHBjWzJdLnUuaW5kZXg7Ci0gICAgICAgICAgICBpbnQgb2Zmc2V0
ID0gcGNbM10udS5vcGVyYW5kOwotICAgICAgICAgICAgaWYgKGxpdmVDYWxsZWVMb2NhbHNJbmRl
eCA+PSBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXRzLnNpemUoKSkKLSAgICAgICAgICAgICAgICBt
ZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXRzLnJlc2l6ZShsaXZlQ2FsbGVlTG9jYWxzSW5kZXggKyAx
KTsKLSAgICAgICAgICAgIG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldHNbbGl2ZUNhbGxlZUxvY2Fs
c0luZGV4XSA9IGkgKyBvZmZzZXQ7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotCiAg
ICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMjM3NCwy
MCArMjMyMiw2IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlw
dEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAKICAgICBtX2luc3RydWN0aW9u
cyA9IFdURk1vdmUoaW5zdHJ1Y3Rpb25zKTsKIAotICAgIC8vIFBlcmZvcm0gYnl0ZWNvZGUgbGl2
ZW5lc3MgYW5hbHlzaXMgdG8gZGV0ZXJtaW5lIHdoaWNoIGxvY2FscyBhcmUgbGl2ZSBhbmQgc2hv
dWxkIGJlIHJlc3VtZWQgd2hlbiBleGVjdXRpbmcgb3BfcmVzdW1lLgotICAgIGlmICh1bmxpbmtl
ZENvZGVCbG9jay0+cGFyc2VNb2RlKCkgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JCb2R5
TW9kZSkgewotICAgICAgICBpZiAoc2l6ZV90IGNvdW50ID0gbWVyZ2VQb2ludEJ5dGVjb2RlT2Zm
c2V0cy5zaXplKCkpIHsKLSAgICAgICAgICAgIGNyZWF0ZVJhcmVEYXRhSWZOZWNlc3NhcnkoKTsK
LSAgICAgICAgICAgIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcyBsaXZlbmVzcyh0aGlzKTsKLSAg
ICAgICAgICAgIG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQuZ3Jvdyhjb3Vu
dCk7Ci0gICAgICAgICAgICBzaXplX3QgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gMDsKLSAgICAg
ICAgICAgIGZvciAoc2l6ZV90IGJ5dGVjb2RlT2Zmc2V0IDogbWVyZ2VQb2ludEJ5dGVjb2RlT2Zm
c2V0cykgewotICAgICAgICAgICAgICAgIG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0
WWllbGRbbGl2ZUNhbGxlZUxvY2Fsc0luZGV4XSA9IGxpdmVuZXNzLmdldExpdmVuZXNzSW5mb0F0
Qnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpOwotICAgICAgICAgICAgICAgICsrbGl2ZUNh
bGxlZUxvY2Fsc0luZGV4OwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCiAgICAg
Ly8gU2V0IG9wdGltaXphdGlvbiB0aHJlc2hvbGRzIG9ubHkgYWZ0ZXIgbV9pbnN0cnVjdGlvbnMg
aXMgaW5pdGlhbGl6ZWQsIHNpbmNlIHRoZXNlCiAgICAgLy8gcmVseSBvbiB0aGUgaW5zdHJ1Y3Rp
b24gY291bnQgKGFuZCBhcmUgaW4gdGhlb3J5IHBlcm1pdHRlZCB0byBhbHNvIGluc3BlY3QgdGhl
CiAgICAgLy8gaW5zdHJ1Y3Rpb24gc3RyZWFtIHRvIG1vcmUgYWNjdXJhdGUgYXNzZXNzIHRoZSBj
b3N0IG9mIHRpZXItdXApLgpAQCAtMzI0NCwyMSArMzE3OCw3IEBAIEhhbmRsZXJJbmZvKiBDb2Rl
QmxvY2s6OmhhbmRsZXJGb3JJbmRleCh1bnNpZ25lZCBpbmRleCwgUmVxdWlyZWRIYW5kbGVyIHJl
cXVpcmVkCiB7CiAgICAgaWYgKCFtX3JhcmVEYXRhKQogICAgICAgICByZXR1cm4gMDsKLSAgICAK
LSAgICBWZWN0b3I8SGFuZGxlckluZm8+JiBleGNlcHRpb25IYW5kbGVycyA9IG1fcmFyZURhdGEt
Pm1fZXhjZXB0aW9uSGFuZGxlcnM7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBleGNlcHRp
b25IYW5kbGVycy5zaXplKCk7ICsraSkgewotICAgICAgICBIYW5kbGVySW5mbyYgaGFuZGxlciA9
IGV4Y2VwdGlvbkhhbmRsZXJzW2ldOwotICAgICAgICBpZiAoKHJlcXVpcmVkSGFuZGxlciA9PSBS
ZXF1aXJlZEhhbmRsZXI6OkNhdGNoSGFuZGxlcikgJiYgIWhhbmRsZXIuaXNDYXRjaEhhbmRsZXIo
KSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIC8vIEhhbmRsZXJzIGFyZSBvcmRl
cmVkIGlubmVybW9zdCBmaXJzdCwgc28gdGhlIGZpcnN0IGhhbmRsZXIgd2UgZW5jb3VudGVyCi0g
ICAgICAgIC8vIHRoYXQgY29udGFpbnMgdGhlIHNvdXJjZSBhZGRyZXNzIGlzIHRoZSBjb3JyZWN0
IGhhbmRsZXIgdG8gdXNlLgotICAgICAgICAvLyBUaGlzIGluZGV4IHVzZWQgaXMgZWl0aGVyIHRo
ZSBCeXRlY29kZU9mZnNldCBvciBhIENhbGxTaXRlSW5kZXguCi0gICAgICAgIGlmIChoYW5kbGVy
LnN0YXJ0IDw9IGluZGV4ICYmIGhhbmRsZXIuZW5kID4gaW5kZXgpCi0gICAgICAgICAgICByZXR1
cm4gJmhhbmRsZXI7Ci0gICAgfQotCi0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIEhhbmRsZXJJ
bmZvOjpoYW5kbGVyRm9ySW5kZXgobV9yYXJlRGF0YS0+bV9leGNlcHRpb25IYW5kbGVycywgaW5k
ZXgsIHJlcXVpcmVkSGFuZGxlcik7CiB9CiAKIENhbGxTaXRlSW5kZXggQ29kZUJsb2NrOjpuZXdF
eGNlcHRpb25IYW5kbGluZ0NhbGxTaXRlSW5kZXgoQ2FsbFNpdGVJbmRleCBvcmlnaW5hbENhbGxT
aXRlKQpAQCAtMzM1Myw3ICszMjczLDYgQEAgdm9pZCBDb2RlQmxvY2s6OnNocmlua1RvRml0KFNo
cmlua01vZGUgc2hyaW5rTW9kZSkKICAgICAgICAgaWYgKG1fcmFyZURhdGEpIHsKICAgICAgICAg
ICAgIG1fcmFyZURhdGEtPm1fc3dpdGNoSnVtcFRhYmxlcy5zaHJpbmtUb0ZpdCgpOwogICAgICAg
ICAgICAgbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzLnNocmlua1RvRml0KCk7
Ci0gICAgICAgICAgICBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkLnNocmlu
a1RvRml0KCk7CiAgICAgICAgIH0KICAgICB9IC8vIGVsc2UgZG9uJ3Qgc2hyaW5rIHRoZXNlLCBi
ZWNhdXNlIHdlIHdvdWxkIGhhdmUgYWxyZWFkeSBwb2ludGVkIHBvaW50ZXJzIGludG8gdGhlc2Ug
dGFibGVzLgogfQpAQCAtNDMzNSwxNCArNDI1NCw5IEBAIFN0cmluZyBDb2RlQmxvY2s6Om5hbWVG
b3JSZWdpc3RlcihWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVyKQogCiBWYWx1ZVByb2Zp
bGUqIENvZGVCbG9jazo6dmFsdWVQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoaW50IGJ5dGVjb2Rl
T2Zmc2V0KQogewotICAgIFZhbHVlUHJvZmlsZSogcmVzdWx0ID0gYmluYXJ5U2VhcmNoPFZhbHVl
UHJvZmlsZSwgaW50PigKLSAgICAgICAgbV92YWx1ZVByb2ZpbGVzLCBtX3ZhbHVlUHJvZmlsZXMu
c2l6ZSgpLCBieXRlY29kZU9mZnNldCwKLSAgICAgICAgZ2V0VmFsdWVQcm9maWxlQnl0ZWNvZGVP
ZmZzZXQ8VmFsdWVQcm9maWxlPik7Ci0gICAgQVNTRVJUKHJlc3VsdC0+bV9ieXRlY29kZU9mZnNl
dCAhPSAtMSk7Ci0gICAgQVNTRVJUKGluc3RydWN0aW9ucygpW2J5dGVjb2RlT2Zmc2V0ICsgb3Bj
b2RlTGVuZ3RoKAotICAgICAgICBtX3ZtLT5pbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoCi0gICAg
ICAgICAgICBpbnN0cnVjdGlvbnMoKVtieXRlY29kZU9mZnNldF0udS5vcGNvZGUpKSAtIDFdLnUu
cHJvZmlsZSA9PSByZXN1bHQpOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgT3Bjb2RlSUQgb3Bj
b2RlSUQgPSBtX3ZtLT5pbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25zKClbYnl0
ZWNvZGVPZmZzZXRdLnUub3Bjb2RlKTsKKyAgICB1bnNpZ25lZCBsZW5ndGggPSBvcGNvZGVMZW5n
dGgob3Bjb2RlSUQpOworICAgIHJldHVybiBpbnN0cnVjdGlvbnMoKVtieXRlY29kZU9mZnNldCAr
IGxlbmd0aCAtIDFdLnUucHJvZmlsZTsKIH0KIAogdm9pZCBDb2RlQmxvY2s6OnZhbGlkYXRlKCkK
QEAgLTQ2NzEsNCArNDU4NSwxNiBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcE1hdGhJQ1N0YXRzKCkK
ICNlbmRpZgogfQogCitCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMmIENvZGVCbG9jazo6bGl2ZW5l
c3NBbmFseXNpc1Nsb3coKQoreworICAgIHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUxpdmVuZXNz
QW5hbHlzaXM+IGFuYWx5c2lzID0gc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZUxpdmVuZXNzQW5h
bHlzaXM+KHRoaXMpOworICAgIHsKKyAgICAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIo
bV9sb2NrKTsKKyAgICAgICAgaWYgKCFtX2xpdmVuZXNzQW5hbHlzaXMpCisgICAgICAgICAgICBt
X2xpdmVuZXNzQW5hbHlzaXMgPSBXVEZNb3ZlKGFuYWx5c2lzKTsKKyAgICAgICAgcmV0dXJuICpt
X2xpdmVuZXNzQW5hbHlzaXM7CisgICAgfQorfQorCisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCmluZGV4IGFiOTI4MDRmNmJh
MzliM2I2N2JhNmQ3NzVlNDQ5ZTJmM2RiZjdjMDUuLjllNWQ2MDc4NzczZjM4Y2JiMjJkYzZhNTBm
YWZhN2NlYjBlMWZmYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrLmgKQEAgLTMzLDcgKzMzLDYgQEAKICNpbmNsdWRlICJBcnJheVByb2ZpbGUuaCIKICNpbmNs
dWRlICJCeVZhbEluZm8uaCIKICNpbmNsdWRlICJCeXRlY29kZUNvbnZlbnRpb25zLmgiCi0jaW5j
bHVkZSAiQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmgiCiAjaW5jbHVkZSAiQ2FsbExpbmtJbmZv
LmgiCiAjaW5jbHVkZSAiQ2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQuaCIKICNpbmNs
dWRlICJDb2RlQmxvY2tIYXNoLmgiCkBAIC03OSw2ICs3OCw3IEBACiAKIG5hbWVzcGFjZSBKU0Mg
ewogCitjbGFzcyBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM7CiBjbGFzcyBFeGVjU3RhdGU7CiBj
bGFzcyBKSVRBZGRHZW5lcmF0b3I7CiBjbGFzcyBKU01vZHVsZUVudmlyb25tZW50OwpAQCAtMjI2
LDEwICsyMjYsNiBAQCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAgICAg
cmV0dXJuIGluZGV4ID49IG1fbnVtVmFyczsKICAgICB9CiAKLSAgICBlbnVtIGNsYXNzIFJlcXVp
cmVkSGFuZGxlciB7Ci0gICAgICAgIENhdGNoSGFuZGxlciwKLSAgICAgICAgQW55SGFuZGxlcgot
ICAgIH07CiAgICAgSGFuZGxlckluZm8qIGhhbmRsZXJGb3JCeXRlY29kZU9mZnNldCh1bnNpZ25l
ZCBieXRlY29kZU9mZnNldCwgUmVxdWlyZWRIYW5kbGVyID0gUmVxdWlyZWRIYW5kbGVyOjpBbnlI
YW5kbGVyKTsKICAgICBIYW5kbGVySW5mbyogaGFuZGxlckZvckluZGV4KHVuc2lnbmVkLCBSZXF1
aXJlZEhhbmRsZXIgPSBSZXF1aXJlZEhhbmRsZXI6OkFueUhhbmRsZXIpOwogICAgIHZvaWQgcmVt
b3ZlRXhjZXB0aW9uSGFuZGxlckZvckNhbGxTaXRlKENhbGxTaXRlSW5kZXgpOwpAQCAtMzA0LDYg
KzMwMCw5IEBAIGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8SW5zdHJ1Y3Rpb24qPihyZXR1cm5BZGRyZXNzKSAtIGluc3RydWN0aW9u
cygpLmJlZ2luKCk7CiAgICAgfQogCisgICAgdHlwZWRlZiBKU0M6Okluc3RydWN0aW9uIEluc3Ry
dWN0aW9uOworICAgIHR5cGVkZWYgUmVmQ291bnRlZEFycmF5PEluc3RydWN0aW9uPiYgVW5wYWNr
ZWRJbnN0cnVjdGlvbnM7CisKICAgICB1bnNpZ25lZCBudW1iZXJPZkluc3RydWN0aW9ucygpIGNv
bnN0IHsgcmV0dXJuIG1faW5zdHJ1Y3Rpb25zLnNpemUoKTsgfQogICAgIFJlZkNvdW50ZWRBcnJh
eTxJbnN0cnVjdGlvbj4mIGluc3RydWN0aW9ucygpIHsgcmV0dXJuIG1faW5zdHJ1Y3Rpb25zOyB9
CiAgICAgY29uc3QgUmVmQ291bnRlZEFycmF5PEluc3RydWN0aW9uPiYgaW5zdHJ1Y3Rpb25zKCkg
Y29uc3QgeyByZXR1cm4gbV9pbnN0cnVjdGlvbnM7IH0KQEAgLTU0Niw3ICs1NDUsNyBAQCBjbGFz
cyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICB9CiAKICAgICBXcml0ZUJhcnJpZXI8
VW5rbm93bj4mIGNvbnN0YW50UmVnaXN0ZXIoaW50IGluZGV4KSB7IHJldHVybiBtX2NvbnN0YW50
UmVnaXN0ZXJzW2luZGV4IC0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXhdOyB9Ci0gICAgQUxX
QVlTX0lOTElORSBib29sIGlzQ29uc3RhbnRSZWdpc3RlckluZGV4KGludCBpbmRleCkgY29uc3Qg
eyByZXR1cm4gaW5kZXggPj0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXg7IH0KKyAgICBzdGF0
aWMgQUxXQVlTX0lOTElORSBib29sIGlzQ29uc3RhbnRSZWdpc3RlckluZGV4KGludCBpbmRleCkg
eyByZXR1cm4gaW5kZXggPj0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXg7IH0KICAgICBBTFdB
WVNfSU5MSU5FIEpTVmFsdWUgZ2V0Q29uc3RhbnQoaW50IGluZGV4KSBjb25zdCB7IHJldHVybiBt
X2NvbnN0YW50UmVnaXN0ZXJzW2luZGV4IC0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXhdLmdl
dCgpOyB9CiAgICAgQUxXQVlTX0lOTElORSBTb3VyY2VDb2RlUmVwcmVzZW50YXRpb24gY29uc3Rh
bnRTb3VyY2VDb2RlUmVwcmVzZW50YXRpb24oaW50IGluZGV4KSBjb25zdCB7IHJldHVybiBtX2Nv
bnN0YW50c1NvdXJjZUNvZGVSZXByZXNlbnRhdGlvbltpbmRleCAtIEZpcnN0Q29uc3RhbnRSZWdp
c3RlckluZGV4XTsgfQogCkBAIC01OTIsMTQgKzU5MSw3IEBAIGNsYXNzIENvZGVCbG9jayA6IHB1
YmxpYyBKU0NlbGwgewogICAgICAgICAgICAgaWYgKCEhbV9saXZlbmVzc0FuYWx5c2lzKQogICAg
ICAgICAgICAgICAgIHJldHVybiAqbV9saXZlbmVzc0FuYWx5c2lzOwogICAgICAgICB9Ci0gICAg
ICAgIHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM+IGFuYWx5c2lzID0K
LSAgICAgICAgICAgIHN0ZDo6bWFrZV91bmlxdWU8Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzPih0
aGlzKTsKLSAgICAgICAgewotICAgICAgICAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIo
bV9sb2NrKTsKLSAgICAgICAgICAgIGlmICghbV9saXZlbmVzc0FuYWx5c2lzKQotICAgICAgICAg
ICAgICAgIG1fbGl2ZW5lc3NBbmFseXNpcyA9IFdURk1vdmUoYW5hbHlzaXMpOwotICAgICAgICAg
ICAgcmV0dXJuICptX2xpdmVuZXNzQW5hbHlzaXM7Ci0gICAgICAgIH0KKyAgICAgICAgcmV0dXJu
IGxpdmVuZXNzQW5hbHlzaXNTbG93KCk7CiAgICAgfQogICAgIAogICAgIHZvaWQgdmFsaWRhdGUo
KTsKQEAgLTYyMCwxOCArNjEyLDYgQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7
CiAgICAgU3RyaW5nSnVtcFRhYmxlJiBhZGRTdHJpbmdTd2l0Y2hKdW1wVGFibGUoKSB7IGNyZWF0
ZVJhcmVEYXRhSWZOZWNlc3NhcnkoKTsgbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFi
bGVzLmFwcGVuZChTdHJpbmdKdW1wVGFibGUoKSk7IHJldHVybiBtX3JhcmVEYXRhLT5tX3N0cmlu
Z1N3aXRjaEp1bXBUYWJsZXMubGFzdCgpOyB9CiAgICAgU3RyaW5nSnVtcFRhYmxlJiBzdHJpbmdT
d2l0Y2hKdW1wVGFibGUoaW50IHRhYmxlSW5kZXgpIHsgUkVMRUFTRV9BU1NFUlQobV9yYXJlRGF0
YSk7IHJldHVybiBtX3JhcmVEYXRhLT5tX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXNbdGFibGVJbmRl
eF07IH0KIAotICAgIC8vIExpdmUgY2FsbGVlIHJlZ2lzdGVycyBhdCB5aWVsZCBwb2ludHMuCi0g
ICAgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQodW5zaWduZWQg
aW5kZXgpIGNvbnN0Ci0gICAgewotICAgICAgICBSRUxFQVNFX0FTU0VSVChtX3JhcmVEYXRhKTsK
LSAgICAgICAgcmV0dXJuIG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGRbaW5k
ZXhdOwotICAgIH0KLSAgICBGYXN0Qml0VmVjdG9yJiBsaXZlQ2FsbGVlTG9jYWxzQXRZaWVsZCh1
bnNpZ25lZCBpbmRleCkKLSAgICB7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fcmFyZURhdGEp
OwotICAgICAgICByZXR1cm4gbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZFtp
bmRleF07Ci0gICAgfQotCiAgICAgRXZhbENvZGVDYWNoZSYgZXZhbENvZGVDYWNoZSgpIHsgY3Jl
YXRlUmFyZURhdGFJZk5lY2Vzc2FyeSgpOyByZXR1cm4gbV9yYXJlRGF0YS0+bV9ldmFsQ29kZUNh
Y2hlOyB9CiAKICAgICBlbnVtIFNocmlua01vZGUgewpAQCAtODg2LDggKzg2Niw2IEBAIGNsYXNz
IENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgICAgICBWZWN0b3I8U2ltcGxlSnVtcFRh
YmxlPiBtX3N3aXRjaEp1bXBUYWJsZXM7CiAgICAgICAgIFZlY3RvcjxTdHJpbmdKdW1wVGFibGU+
IG1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlczsKIAotICAgICAgICBWZWN0b3I8RmFzdEJpdFZlY3Rv
cj4gbV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZDsKLQogICAgICAgICBFdmFsQ29kZUNhY2hlIG1f
ZXZhbENvZGVDYWNoZTsKICAgICB9OwogCkBAIC05MjIsNiArOTAwLDggQEAgY2xhc3MgQ29kZUJs
b2NrIDogcHVibGljIEpTQ2VsbCB7CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIENvZGVC
bG9ja1NldDsKKworICAgIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcyYgbGl2ZW5lc3NBbmFseXNp
c1Nsb3coKTsKICAgICAKICAgICBDb2RlQmxvY2sqIHNwZWNpYWxPU1JFbnRyeUJsb2NrT3JOdWxs
KCk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSGFu
ZGxlckluZm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9IYW5kbGVySW5mby5o
CmluZGV4IGFjZGRhMDhlZDE0Y2JmOWYwOTcxMjc1MDQwNWE0MTc0MWY3NmEyMTMuLjdiMTA4YWNl
OTM3MjhhOGQ1ZGY4ZWIxNzNmYzBiMGE2MWJhZWQ2M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9IYW5kbGVySW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9IYW5kbGVySW5mby5oCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIEhh
bmRsZXJJbmZvX2gKIAogI2luY2x1ZGUgIkNvZGVMb2NhdGlvbi5oIgorI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTM3LDYgKzM4LDExIEBAIGVudW0gY2xh
c3MgSGFuZGxlclR5cGUgewogICAgIFN5bnRoZXNpemVkRmluYWxseSA9IDMKIH07CiAKK2VudW0g
Y2xhc3MgUmVxdWlyZWRIYW5kbGVyIHsKKyAgICBDYXRjaEhhbmRsZXIsCisgICAgQW55SGFuZGxl
cgorfTsKKwogc3RydWN0IEhhbmRsZXJJbmZvQmFzZSB7CiAgICAgSGFuZGxlclR5cGUgdHlwZSgp
IGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEhhbmRsZXJUeXBlPih0eXBlQml0cyk7IH0KICAg
ICB2b2lkIHNldFR5cGUoSGFuZGxlclR5cGUgdHlwZSkgeyB0eXBlQml0cyA9IHN0YXRpY19jYXN0
PHVpbnQzMl90Pih0eXBlKTsgfQpAQCAtNTgsNiArNjQsMjMgQEAgc3RydWN0IEhhbmRsZXJJbmZv
QmFzZSB7CiAKICAgICBib29sIGlzQ2F0Y2hIYW5kbGVyKCkgY29uc3QgeyByZXR1cm4gdHlwZSgp
ID09IEhhbmRsZXJUeXBlOjpDYXRjaDsgfQogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgSGFuZGxl
cj4KKyAgICBzdGF0aWMgSGFuZGxlciogaGFuZGxlckZvckluZGV4KFZlY3RvcjxIYW5kbGVyPiYg
ZXhlcHRpb25IYW5kbGVycywgdW5zaWduZWQgaW5kZXgsIFJlcXVpcmVkSGFuZGxlciByZXF1aXJl
ZEhhbmRsZXIpCisgICAgeworICAgICAgICBmb3IgKEhhbmRsZXImIGhhbmRsZXIgOiBleGVwdGlv
bkhhbmRsZXJzKSB7CisgICAgICAgICAgICBpZiAoKHJlcXVpcmVkSGFuZGxlciA9PSBSZXF1aXJl
ZEhhbmRsZXI6OkNhdGNoSGFuZGxlcikgJiYgIWhhbmRsZXIuaXNDYXRjaEhhbmRsZXIoKSkKKyAg
ICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgLy8gSGFuZGxlcnMgYXJlIG9y
ZGVyZWQgaW5uZXJtb3N0IGZpcnN0LCBzbyB0aGUgZmlyc3QgaGFuZGxlciB3ZSBlbmNvdW50ZXIK
KyAgICAgICAgICAgIC8vIHRoYXQgY29udGFpbnMgdGhlIHNvdXJjZSBhZGRyZXNzIGlzIHRoZSBj
b3JyZWN0IGhhbmRsZXIgdG8gdXNlLgorICAgICAgICAgICAgLy8gVGhpcyBpbmRleCB1c2VkIGlz
IGVpdGhlciB0aGUgQnl0ZWNvZGVPZmZzZXQgb3IgYSBDYWxsU2l0ZUluZGV4LgorICAgICAgICAg
ICAgaWYgKGhhbmRsZXIuc3RhcnQgPD0gaW5kZXggJiYgaGFuZGxlci5lbmQgPiBpbmRleCkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gJmhhbmRsZXI7CisgICAgICAgIH0KKworICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICB9CisKICAgICB1aW50MzJfdCBzdGFydDsKICAgICB1aW50MzJfdCBl
bmQ7CiAgICAgdWludDMyX3QgdGFyZ2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmNwcAppbmRleCBlMmNiMDAwNDgzNzk0YmE5
MmQ1MTBkY2Y1ZmE5OTQ4ODVhMjNkYzNkLi5jYWI5ZmJkYzRlODM5ZmJiODlhNjkzMzU2MjIyZGIw
MGUxMDIyM2NhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJl
Y2lzZUp1bXBUYXJnZXRzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
UHJlY2lzZUp1bXBUYXJnZXRzLmNwcApAQCAtMjYsMTQgKzI2LDE1IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiUHJlY2lzZUp1bXBUYXJnZXRzLmgiCiAKKyNpbmNsdWRlICJJbnRl
cnByZXRlcklubGluZXMuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAKIG5hbWVzcGFjZSBK
U0MgewogCi10ZW1wbGF0ZSA8c2l6ZV90IHZlY3RvclNpemU+Ci1zdGF0aWMgdm9pZCBnZXRKdW1w
VGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBJbnRlcnByZXRl
ciogaW50ZXJwcmV0ZXIsIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQg
Ynl0ZWNvZGVPZmZzZXQsIFZlY3Rvcjx1bnNpZ25lZCwgdmVjdG9yU2l6ZT4mIG91dCkKK3RlbXBs
YXRlIDxzaXplX3QgdmVjdG9yU2l6ZSwgdHlwZW5hbWUgQmxvY2ssIHR5cGVuYW1lIEluc3RydWN0
aW9uPgorc3RhdGljIHZvaWQgZ2V0SnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChCbG9jayog
Y29kZUJsb2NrLCBJbnRlcnByZXRlciogaW50ZXJwcmV0ZXIsIEluc3RydWN0aW9uKiBpbnN0cnVj
dGlvbnNCZWdpbiwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIFZlY3Rvcjx1bnNpZ25lZCwgdmVj
dG9yU2l6ZT4mIG91dCkKIHsKLSAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGludGVycHJldGVyLT5n
ZXRPcGNvZGVJRChpbnN0cnVjdGlvbnNCZWdpbltieXRlY29kZU9mZnNldF0udS5vcGNvZGUpOwor
ICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGluc3RydWN0
aW9uc0JlZ2luW2J5dGVjb2RlT2Zmc2V0XSk7CiAgICAgSW5zdHJ1Y3Rpb24qIGN1cnJlbnQgPSBp
bnN0cnVjdGlvbnNCZWdpbiArIGJ5dGVjb2RlT2Zmc2V0OwogICAgIHN3aXRjaCAob3Bjb2RlSUQp
IHsKICAgICBjYXNlIG9wX2ptcDoKQEAgLTU0LDIxICs1NSwyNSBAQCBzdGF0aWMgdm9pZCBnZXRK
dW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBJbnRlcnBy
ZXRlciogaQogICAgIGNhc2Ugb3Bfam5sZXNzZXE6CiAgICAgY2FzZSBvcF9qbmdyZWF0ZXI6CiAg
ICAgY2FzZSBvcF9qbmdyZWF0ZXJlcToKLSAgICBjYXNlIG9wX3NhdmU6IC8vIFRoZSBqdW1wIG9m
IG9wX3NhdmUgaXMgcHVyZWx5IGZvciBjYWxjdWxhdGluZyBsaXZlbmVzcy4KICAgICAgICAgb3V0
LmFwcGVuZChieXRlY29kZU9mZnNldCArIGN1cnJlbnRbM10udS5vcGVyYW5kKTsKICAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBvcF9zYXZlOiB7CisgICAgICAgIC8vIFRoZSBqdW1wIG9mIG9wX3Nh
dmUgdW5kZXIgRXh0cmFjdEdlbmVyYXRvckxpdmVDYWxsZWVMb2NhbHMgbW9kZSBpcyBwdXJlbHkg
Zm9yIGNhbGN1bGF0aW5nIGxpdmVuZXNzLgorICAgICAgICBvdXQuYXBwZW5kKGJ5dGVjb2RlT2Zm
c2V0ICsgY3VycmVudFszXS51Lm9wZXJhbmQpOworICAgICAgICBicmVhazsKKyAgICB9CiAgICAg
Y2FzZSBvcF9zd2l0Y2hfaW1tOgogICAgIGNhc2Ugb3Bfc3dpdGNoX2NoYXI6IHsKLSAgICAgICAg
U2ltcGxlSnVtcFRhYmxlJiB0YWJsZSA9IGNvZGVCbG9jay0+c3dpdGNoSnVtcFRhYmxlKGN1cnJl
bnRbMV0udS5vcGVyYW5kKTsKKyAgICAgICAgYXV0byYgdGFibGUgPSBjb2RlQmxvY2stPnN3aXRj
aEp1bXBUYWJsZShjdXJyZW50WzFdLnUub3BlcmFuZCk7CiAgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IHRhYmxlLmJyYW5jaE9mZnNldHMuc2l6ZSgpOyBpLS07KQogICAgICAgICAgICAgb3V0LmFw
cGVuZChieXRlY29kZU9mZnNldCArIHRhYmxlLmJyYW5jaE9mZnNldHNbaV0pOwogICAgICAgICBv
dXQuYXBwZW5kKGJ5dGVjb2RlT2Zmc2V0ICsgY3VycmVudFsyXS51Lm9wZXJhbmQpOwogICAgICAg
ICBicmVhazsKICAgICB9CiAgICAgY2FzZSBvcF9zd2l0Y2hfc3RyaW5nOiB7Ci0gICAgICAgIFN0
cmluZ0p1bXBUYWJsZSYgdGFibGUgPSBjb2RlQmxvY2stPnN0cmluZ1N3aXRjaEp1bXBUYWJsZShj
dXJyZW50WzFdLnUub3BlcmFuZCk7Ci0gICAgICAgIFN0cmluZ0p1bXBUYWJsZTo6U3RyaW5nT2Zm
c2V0VGFibGU6Oml0ZXJhdG9yIGl0ZXIgPSB0YWJsZS5vZmZzZXRUYWJsZS5iZWdpbigpOwotICAg
ICAgICBTdHJpbmdKdW1wVGFibGU6OlN0cmluZ09mZnNldFRhYmxlOjppdGVyYXRvciBlbmQgPSB0
YWJsZS5vZmZzZXRUYWJsZS5lbmQoKTsKKyAgICAgICAgYXV0byYgdGFibGUgPSBjb2RlQmxvY2st
PnN0cmluZ1N3aXRjaEp1bXBUYWJsZShjdXJyZW50WzFdLnUub3BlcmFuZCk7CisgICAgICAgIGF1
dG8gaXRlciA9IHRhYmxlLm9mZnNldFRhYmxlLmJlZ2luKCk7CisgICAgICAgIGF1dG8gZW5kID0g
dGFibGUub2Zmc2V0VGFibGUuZW5kKCk7CiAgICAgICAgIGZvciAoOyBpdGVyICE9IGVuZDsgKytp
dGVyKQogICAgICAgICAgICAgb3V0LmFwcGVuZChieXRlY29kZU9mZnNldCArIGl0ZXItPnZhbHVl
LmJyYW5jaE9mZnNldCk7CiAgICAgICAgIG91dC5hcHBlbmQoYnl0ZWNvZGVPZmZzZXQgKyBjdXJy
ZW50WzJdLnUub3BlcmFuZCk7CkBAIC04MiwxMyArODcsMTkgQEAgc3RhdGljIHZvaWQgZ2V0SnVt
cFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgSW50ZXJwcmV0
ZXIqIGkKICAgICB9CiB9CiAKLXZvaWQgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgVmVjdG9yPHVuc2lnbmVkLCAzMj4mIG91dCkKK2VudW0gY2xhc3MgQ29t
cHV0ZVByZWNpc2VKdW1wVGFyZ2V0c01vZGUgeworICAgIEZvbGxvd0NvZGVCbG9ja0NsYWltLAor
ICAgIEZvcmNlQ29tcHV0ZSwKK307CisKK3RlbXBsYXRlPENvbXB1dGVQcmVjaXNlSnVtcFRhcmdl
dHNNb2RlIE1vZGUsIHR5cGVuYW1lIEJsb2NrLCB0eXBlbmFtZSBJbnN0cnVjdGlvbiwgc2l6ZV90
IHZlY3RvclNpemU+Cit2b2lkIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHNJbnRlcm5hbChCbG9j
ayogY29kZUJsb2NrLCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGlu
c3RydWN0aW9uQ291bnQsIFZlY3Rvcjx1bnNpZ25lZCwgdmVjdG9yU2l6ZT4mIG91dCkKIHsKICAg
ICBBU1NFUlQob3V0LmlzRW1wdHkoKSk7CiAgICAgCiAgICAgLy8gV2Ugd2lsbCBkZXJpdmUgYSBz
dXBlcnNldCBvZiB0aGUganVtcCB0YXJnZXRzIHRoYXQgdGhlIGNvZGUgYmxvY2sgdGhpbmtzIGl0
IGhhcy4KICAgICAvLyBTbywgaWYgdGhlIGNvZGUgYmxvY2sgY2xhaW1zIHRoZXJlIGFyZSBub25l
LCB0aGVuIHdlIGFyZSBkb25lLgotICAgIGlmICghY29kZUJsb2NrLT5udW1iZXJPZkp1bXBUYXJn
ZXRzKCkpCisgICAgaWYgKE1vZGUgPT0gQ29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0c01vZGU6OkZv
bGxvd0NvZGVCbG9ja0NsYWltICYmICFjb2RlQmxvY2stPm51bWJlck9mSnVtcFRhcmdldHMoKSkK
ICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIGZvciAodW5zaWduZWQgaSA9IGNvZGVCbG9jay0+
bnVtYmVyT2ZFeGNlcHRpb25IYW5kbGVycygpOyBpLS07KSB7CkBAIC05OCwxMCArMTA5LDggQEAg
dm9pZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKENvZGVCbG9jayogY29kZUJsb2NrLCBWZWN0
b3I8dW5zaWduZWQsIDMyPiYgb3V0KQogICAgIH0KIAogICAgIEludGVycHJldGVyKiBpbnRlcnBy
ZXRlciA9IGNvZGVCbG9jay0+dm0oKS0+aW50ZXJwcmV0ZXI7Ci0gICAgSW5zdHJ1Y3Rpb24qIGlu
c3RydWN0aW9uc0JlZ2luID0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpOwotICAg
IHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQgPSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLnNp
emUoKTsKICAgICBmb3IgKHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0ID0gMDsgYnl0ZWNvZGVPZmZz
ZXQgPCBpbnN0cnVjdGlvbkNvdW50OykgewotICAgICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGlu
dGVycHJldGVyLT5nZXRPcGNvZGVJRChpbnN0cnVjdGlvbnNCZWdpbltieXRlY29kZU9mZnNldF0u
dS5vcGNvZGUpOworICAgICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGludGVycHJldGVyLT5nZXRP
cGNvZGVJRChpbnN0cnVjdGlvbnNCZWdpbltieXRlY29kZU9mZnNldF0pOwogICAgICAgICBnZXRK
dW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9jaywgaW50ZXJwcmV0ZXIsIGluc3Ry
dWN0aW9uc0JlZ2luLCBieXRlY29kZU9mZnNldCwgb3V0KTsKICAgICAgICAgYnl0ZWNvZGVPZmZz
ZXQgKz0gb3Bjb2RlTGVuZ3Roc1tvcGNvZGVJRF07CiAgICAgfQpAQCAtMTIzLDExICsxMzIsMzQg
QEAgdm9pZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKENvZGVCbG9jayogY29kZUJsb2NrLCBW
ZWN0b3I8dW5zaWduZWQsIDMyPiYgb3V0KQogICAgIG91dC5zaHJpbmtUb0ZpdCgpOwogfQogCi12
b2lkIGZpbmRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2Nr
LCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgVmVjdG9yPHVuc2lnbmVkLCAxPiYgb3V0KQordm9p
ZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKENvZGVCbG9jayogY29kZUJsb2NrLCBWZWN0b3I8
dW5zaWduZWQsIDMyPiYgb3V0KQogewotICAgIEludGVycHJldGVyKiBpbnRlcnByZXRlciA9IGNv
ZGVCbG9jay0+dm0oKS0+aW50ZXJwcmV0ZXI7Ci0gICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9u
c0JlZ2luID0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpOwotICAgIGdldEp1bXBU
YXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoY29kZUJsb2NrLCBpbnRlcnByZXRlciwgaW5zdHJ1Y3Rp
b25zQmVnaW4sIGJ5dGVjb2RlT2Zmc2V0LCBvdXQpOworICAgIGNvbXB1dGVQcmVjaXNlSnVtcFRh
cmdldHNJbnRlcm5hbDxDb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzTW9kZTo6Rm9sbG93Q29kZUJs
b2NrQ2xhaW0+KGNvZGVCbG9jaywgY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpLCBj
b2RlQmxvY2stPmluc3RydWN0aW9ucygpLnNpemUoKSwgb3V0KTsKK30KKwordm9pZCBjb21wdXRl
UHJlY2lzZUp1bXBUYXJnZXRzKENvZGVCbG9jayogY29kZUJsb2NrLCBJbnN0cnVjdGlvbiogaW5z
dHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQsIFZlY3Rvcjx1bnNpZ25l
ZCwgMzI+JiBvdXQpCit7CisgICAgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0c0ludGVybmFsPENv
bXB1dGVQcmVjaXNlSnVtcFRhcmdldHNNb2RlOjpGb2xsb3dDb2RlQmxvY2tDbGFpbT4oY29kZUJs
b2NrLCBpbnN0cnVjdGlvbnNCZWdpbiwgaW5zdHJ1Y3Rpb25Db3VudCwgb3V0KTsKK30KKwordm9p
ZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKFVubGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IFVubGlua2VkSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBpbnN0cnVj
dGlvbkNvdW50LCBWZWN0b3I8dW5zaWduZWQsIDMyPiYgb3V0KQoreworICAgIGNvbXB1dGVQcmVj
aXNlSnVtcFRhcmdldHNJbnRlcm5hbDxDb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzTW9kZTo6Rm9s
bG93Q29kZUJsb2NrQ2xhaW0+KGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb25zQmVnaW4sIGluc3RydWN0
aW9uQ291bnQsIG91dCk7Cit9CisKK3ZvaWQgcmVjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKFVu
bGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFVubGlua2VkSW5zdHJ1Y3Rpb24qIGluc3RydWN0
aW9uc0JlZ2luLCB1bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50LCBWZWN0b3I8dW5zaWduZWQ+JiBv
dXQpCit7CisgICAgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0c0ludGVybmFsPENvbXB1dGVQcmVj
aXNlSnVtcFRhcmdldHNNb2RlOjpGb3JjZUNvbXB1dGU+KGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb25z
QmVnaW4sIGluc3RydWN0aW9uQ291bnQsIG91dCk7Cit9CisKK3ZvaWQgZmluZEp1bXBUYXJnZXRz
Rm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEluc3RydWN0aW9uKiBpbnN0
cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIFZlY3Rvcjx1bnNpZ25lZCwg
MT4mIG91dCkKK3sKKyAgICBnZXRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9j
aywgY29kZUJsb2NrLT52bSgpLT5pbnRlcnByZXRlciwgaW5zdHJ1Y3Rpb25zQmVnaW4sIGJ5dGVj
b2RlT2Zmc2V0LCBvdXQpOworfQorCit2b2lkIGZpbmRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zm
c2V0KFVubGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFVubGlua2VkSW5zdHJ1Y3Rpb24qIGlu
c3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgVmVjdG9yPHVuc2lnbmVk
LCAxPiYgb3V0KQoreworICAgIGdldEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoY29kZUJs
b2NrLCBjb2RlQmxvY2stPnZtKCktPmludGVycHJldGVyLCBpbnN0cnVjdGlvbnNCZWdpbiwgYnl0
ZWNvZGVPZmZzZXQsIG91dCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5oCmluZGV4IDg1
MjQxM2Q3N2I3OTg5ODRiMjdjZWYwZWQ2MmJjOTRjNjg5ZTIxMmMuLmRiOWJkMzgzYjhhYzQ1NTdk
MzI2NzE3YjcyZDRiMGY1MGIxZDE4MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmgKQEAgLTMwLDEwICszMCwxOCBAQAogCiBu
YW1lc3BhY2UgSlNDIHsKIAorY2xhc3MgVW5saW5rZWRDb2RlQmxvY2s7CitzdHJ1Y3QgVW5saW5r
ZWRJbnN0cnVjdGlvbjsKKwogLy8gUmV0dXJuIGEgc29ydGVkIGxpc3Qgb2YgYnl0ZWNvZGUgaW5k
ZXggdGhhdCBhcmUgdGhlIGRlc3RpbmF0aW9uIG9mIGEganVtcC4KIHZvaWQgY29tcHV0ZVByZWNp
c2VKdW1wVGFyZ2V0cyhDb2RlQmxvY2sqLCBWZWN0b3I8dW5zaWduZWQsIDMyPiYgb3V0KTsKK3Zv
aWQgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhDb2RlQmxvY2sqLCBJbnN0cnVjdGlvbiogaW5z
dHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQsIFZlY3Rvcjx1bnNpZ25l
ZCwgMzI+JiBvdXQpOwordm9pZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKFVubGlua2VkQ29k
ZUJsb2NrKiwgVW5saW5rZWRJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVk
IGluc3RydWN0aW9uQ291bnQsIFZlY3Rvcjx1bnNpZ25lZCwgMzI+JiBvdXQpOworCit2b2lkIHJl
Y29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhVbmxpbmtlZENvZGVCbG9jayosIFVubGlua2VkSW5z
dHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50LCBW
ZWN0b3I8dW5zaWduZWQ+JiBvdXQpOwogCi12b2lkIGZpbmRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2Rl
T2Zmc2V0KENvZGVCbG9jayosIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBWZWN0b3I8dW5zaWdu
ZWQsIDE+JiBvdXQpOwordm9pZCBmaW5kSnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChDb2Rl
QmxvY2sqLCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGJ5dGVjb2Rl
T2Zmc2V0LCBWZWN0b3I8dW5zaWduZWQsIDE+JiBvdXQpOwordm9pZCBmaW5kSnVtcFRhcmdldHNG
b3JCeXRlY29kZU9mZnNldChVbmxpbmtlZENvZGVCbG9jayosIFVubGlua2VkSW5zdHJ1Y3Rpb24q
IGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgVmVjdG9yPHVuc2ln
bmVkLCAxPiYgb3V0KTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCmluZGV4IDI5OWFj
NjgwZDlhMWQxZTVhOTBkOWZhZTFhMjJmODQ0ZTI5MmUzZTIuLmNhMWVlNjJiM2E2YTkxMGIyNGNk
MmFjZmRjMThhOTBhMjRkYjA4N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1
ZGUgIlVubGlua2VkQ29kZUJsb2NrLmgiCiAKICNpbmNsdWRlICJCeXRlY29kZUdlbmVyYXRvci5o
IgorI2luY2x1ZGUgIkJ5dGVjb2RlUmV3cml0ZXIuaCIKICNpbmNsdWRlICJDbGFzc0luZm8uaCIK
ICNpbmNsdWRlICJDb2RlQ2FjaGUuaCIKICNpbmNsdWRlICJFeGVjdXRhYmxlLmgiCkBAIC0zNiw2
ICszNyw3IEBACiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgi
CiAjaW5jbHVkZSAiUGFyc2VyLmgiCisjaW5jbHVkZSAiUHJlY2lzZUp1bXBUYXJnZXRzLmgiCiAj
aW5jbHVkZSAiU291cmNlUHJvdmlkZXIuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIKICNpbmNs
dWRlICJTeW1ib2xUYWJsZS5oIgpAQCAtMzY2LDUgKzM2OCwxMTEgQEAgY29uc3QgVW5saW5rZWRJ
bnN0cnVjdGlvblN0cmVhbSYgVW5saW5rZWRDb2RlQmxvY2s6Omluc3RydWN0aW9ucygpIGNvbnN0
CiAgICAgcmV0dXJuICptX3VubGlua2VkSW5zdHJ1Y3Rpb25zOwogfQogCitVbmxpbmtlZEhhbmRs
ZXJJbmZvKiBVbmxpbmtlZENvZGVCbG9jazo6aGFuZGxlckZvckJ5dGVjb2RlT2Zmc2V0KHVuc2ln
bmVkIGJ5dGVjb2RlT2Zmc2V0LCBSZXF1aXJlZEhhbmRsZXIgcmVxdWlyZWRIYW5kbGVyKQorewor
ICAgIHJldHVybiBoYW5kbGVyRm9ySW5kZXgoYnl0ZWNvZGVPZmZzZXQsIHJlcXVpcmVkSGFuZGxl
cik7Cit9CisKK1VubGlua2VkSGFuZGxlckluZm8qIFVubGlua2VkQ29kZUJsb2NrOjpoYW5kbGVy
Rm9ySW5kZXgodW5zaWduZWQgaW5kZXgsIFJlcXVpcmVkSGFuZGxlciByZXF1aXJlZEhhbmRsZXIp
Cit7CisgICAgaWYgKCFtX3JhcmVEYXRhKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBy
ZXR1cm4gVW5saW5rZWRIYW5kbGVySW5mbzo6aGFuZGxlckZvckluZGV4KG1fcmFyZURhdGEtPm1f
ZXhjZXB0aW9uSGFuZGxlcnMsIGluZGV4LCByZXF1aXJlZEhhbmRsZXIpOworfQorCit2b2lkIFVu
bGlua2VkQ29kZUJsb2NrOjphcHBseU1vZGlmaWNhdGlvbihCeXRlY29kZVJld3JpdGVyJiBpbnNl
cnRpb25TZXQpCit7CisgICAgLy8gQmVmb3JlIGFwcGx5aW5nIHRoZSBjaGFuZ2VzLCB3ZSBhZGp1
c3QgdGhlIGp1bXBzIGJhc2VkIG9uIHRoZSBvcmlnaW5hbCBieXRlY29kZSBvZmZzZXQsIHRoZSBv
ZmZzZXQgdG8gdGhlIGp1bXAgdGFyZ2V0LCBhbmQKKyAgICAvLyB0aGUgaW5zZXJ0aW9uIGluZm9y
bWF0aW9uLgorCisgICAgQnl0ZWNvZGVHcmFwaDxVbmxpbmtlZENvZGVCbG9jaz4mIGdyYXBoID0g
aW5zZXJ0aW9uU2V0LmdyYXBoKCk7CisgICAgVW5saW5rZWRJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rp
b25zQmVnaW4gPSBncmFwaC5pbnN0cnVjdGlvbnMoKS5iZWdpbigpOworICAgIGZvciAoaW50IGJ5
dGVjb2RlT2Zmc2V0ID0gMCwgaW5zdHJ1Y3Rpb25Db3VudCA9IGdyYXBoLmluc3RydWN0aW9ucygp
LnNpemUoKTsgYnl0ZWNvZGVPZmZzZXQgPCBpbnN0cnVjdGlvbkNvdW50OykgeworICAgICAgICBV
bmxpbmtlZEluc3RydWN0aW9uKiBjdXJyZW50ID0gaW5zdHJ1Y3Rpb25zQmVnaW4gKyBieXRlY29k
ZU9mZnNldDsKKyAgICAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBjdXJyZW50WzBdLnUub3Bjb2Rl
OworCisgICAgICAgIHN3aXRjaCAob3Bjb2RlSUQpIHsKKyAgICAgICAgY2FzZSBvcF9qbXA6Cisg
ICAgICAgICAgICBjdXJyZW50WzFdLnUub3BlcmFuZCA9IGluc2VydGlvblNldC5hZGp1c3RPZmZz
ZXQoYnl0ZWNvZGVPZmZzZXQsIGJ5dGVjb2RlT2Zmc2V0ICsgY3VycmVudFsxXS51Lm9wZXJhbmQp
OworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBvcF9qdHJ1ZToKKyAgICAgICAg
Y2FzZSBvcF9qZmFsc2U6CisgICAgICAgIGNhc2Ugb3BfamVxX251bGw6CisgICAgICAgIGNhc2Ug
b3Bfam5lcV9udWxsOgorICAgICAgICAgICAgY3VycmVudFsyXS51Lm9wZXJhbmQgPSBpbnNlcnRp
b25TZXQuYWRqdXN0T2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0LCBieXRlY29kZU9mZnNldCArIGN1cnJl
bnRbMl0udS5vcGVyYW5kKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2Ugb3Bf
am5lcV9wdHI6CisgICAgICAgIGNhc2Ugb3Bfamxlc3M6CisgICAgICAgIGNhc2Ugb3Bfamxlc3Nl
cToKKyAgICAgICAgY2FzZSBvcF9qZ3JlYXRlcjoKKyAgICAgICAgY2FzZSBvcF9qZ3JlYXRlcmVx
OgorICAgICAgICBjYXNlIG9wX2pubGVzczoKKyAgICAgICAgY2FzZSBvcF9qbmxlc3NlcToKKyAg
ICAgICAgY2FzZSBvcF9qbmdyZWF0ZXI6CisgICAgICAgIGNhc2Ugb3Bfam5ncmVhdGVyZXE6Cisg
ICAgICAgICAgICBjdXJyZW50WzNdLnUub3BlcmFuZCA9IGluc2VydGlvblNldC5hZGp1c3RPZmZz
ZXQoYnl0ZWNvZGVPZmZzZXQsIGJ5dGVjb2RlT2Zmc2V0ICsgY3VycmVudFszXS51Lm9wZXJhbmQp
OworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBvcF9zd2l0Y2hfaW1tOgorICAg
ICAgICBjYXNlIG9wX3N3aXRjaF9jaGFyOiB7CisgICAgICAgICAgICBhdXRvJiB0YWJsZSA9IHN3
aXRjaEp1bXBUYWJsZShjdXJyZW50WzFdLnUub3BlcmFuZCk7CisgICAgICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSB0YWJsZS5icmFuY2hPZmZzZXRzLnNpemUoKTsgaS0tOykKKyAgICAgICAgICAg
ICAgICB0YWJsZS5icmFuY2hPZmZzZXRzW2ldID0gaW5zZXJ0aW9uU2V0LmFkanVzdE9mZnNldChi
eXRlY29kZU9mZnNldCwgYnl0ZWNvZGVPZmZzZXQgKyB0YWJsZS5icmFuY2hPZmZzZXRzW2ldKTsK
KyAgICAgICAgICAgIGN1cnJlbnRbMl0udS5vcGVyYW5kID0gaW5zZXJ0aW9uU2V0LmFkanVzdE9m
ZnNldChieXRlY29kZU9mZnNldCwgYnl0ZWNvZGVPZmZzZXQgKyBjdXJyZW50WzJdLnUub3BlcmFu
ZCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2Ugb3Bfc3dp
dGNoX3N0cmluZzogeworICAgICAgICAgICAgYXV0byYgdGFibGUgPSBzdHJpbmdTd2l0Y2hKdW1w
VGFibGUoY3VycmVudFsxXS51Lm9wZXJhbmQpOworICAgICAgICAgICAgYXV0byBpdGVyID0gdGFi
bGUub2Zmc2V0VGFibGUuYmVnaW4oKTsKKyAgICAgICAgICAgIGF1dG8gZW5kID0gdGFibGUub2Zm
c2V0VGFibGUuZW5kKCk7CisgICAgICAgICAgICBmb3IgKDsgaXRlciAhPSBlbmQ7ICsraXRlcikK
KyAgICAgICAgICAgICAgICBpdGVyLT52YWx1ZS5icmFuY2hPZmZzZXQgPSBpbnNlcnRpb25TZXQu
YWRqdXN0T2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0LCBieXRlY29kZU9mZnNldCArIGl0ZXItPnZhbHVl
LmJyYW5jaE9mZnNldCk7CisgICAgICAgICAgICBjdXJyZW50WzJdLnUub3BlcmFuZCA9IGluc2Vy
dGlvblNldC5hZGp1c3RPZmZzZXQoYnl0ZWNvZGVPZmZzZXQsIGJ5dGVjb2RlT2Zmc2V0ICsgY3Vy
cmVudFsyXS51Lm9wZXJhbmQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAg
ICAgICBkZWZhdWx0OgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBi
eXRlY29kZU9mZnNldCArPSBvcGNvZGVMZW5ndGgob3Bjb2RlSUQpOworICAgIH0KKworICAgIC8v
IFRoZW4sIGV4Y2VwdGlvbiBoYW5kbGVycyBzaG91bGQgYmUgYWRqdXN0ZWQuCisgICAgaWYgKG1f
cmFyZURhdGEpIHsKKyAgICAgICAgZm9yIChVbmxpbmtlZEhhbmRsZXJJbmZvJiBoYW5kbGVyIDog
bV9yYXJlRGF0YS0+bV9leGNlcHRpb25IYW5kbGVycykgeworICAgICAgICAgICAgaGFuZGxlci50
YXJnZXQgPSBpbnNlcnRpb25TZXQuYWRqdXN0T2Zmc2V0KDAsIGhhbmRsZXIudGFyZ2V0KTsKKyAg
ICAgICAgICAgIGhhbmRsZXIuc3RhcnQgPSBpbnNlcnRpb25TZXQuYWRqdXN0T2Zmc2V0KDAsIGhh
bmRsZXIuc3RhcnQpOworICAgICAgICAgICAgaGFuZGxlci5lbmQgPSBpbnNlcnRpb25TZXQuYWRq
dXN0T2Zmc2V0KDAsIGhhbmRsZXIuZW5kKTsKKyAgICAgICAgfQorCisgICAgICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgbV9yYXJlRGF0YS0+bV9vcFByb2ZpbGVDb250cm9sRmxvd0J5dGVjb2Rl
T2Zmc2V0cy5zaXplKCk7ICsraSkKKyAgICAgICAgICAgIG1fcmFyZURhdGEtPm1fb3BQcm9maWxl
Q29udHJvbEZsb3dCeXRlY29kZU9mZnNldHNbaV0gPSBpbnNlcnRpb25TZXQuYWRqdXN0T2Zmc2V0
KDAsIG1fcmFyZURhdGEtPm1fb3BQcm9maWxlQ29udHJvbEZsb3dCeXRlY29kZU9mZnNldHNbaV0p
OworCisgICAgICAgIGlmICghbV9yYXJlRGF0YS0+bV90eXBlUHJvZmlsZXJJbmZvTWFwLmlzRW1w
dHkoKSkgeworICAgICAgICAgICAgSGFzaE1hcDx1bnNpZ25lZCwgUmFyZURhdGE6OlR5cGVQcm9m
aWxlckV4cHJlc3Npb25SYW5nZT4gYWRqdXN0ZWRUeXBlUHJvZmlsZXJJbmZvTWFwOworICAgICAg
ICAgICAgZm9yIChhdXRvJiBlbnRyeSA6IG1fcmFyZURhdGEtPm1fdHlwZVByb2ZpbGVySW5mb01h
cCkKKyAgICAgICAgICAgICAgICBhZGp1c3RlZFR5cGVQcm9maWxlckluZm9NYXAuc2V0KGluc2Vy
dGlvblNldC5hZGp1c3RPZmZzZXQoMCwgZW50cnkua2V5KSwgZW50cnkudmFsdWUpOworICAgICAg
ICAgICAgbV9yYXJlRGF0YS0+bV90eXBlUHJvZmlsZXJJbmZvTWFwLnN3YXAoYWRqdXN0ZWRUeXBl
UHJvZmlsZXJJbmZvTWFwKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9ucy5zaXplKCk7ICsraSkKKyAgICAg
ICAgbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uc1tpXSA9IGluc2VydGlvblNldC5hZGp1c3RP
ZmZzZXQoMCwgbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uc1tpXSk7CisKKyAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IG1fZXhwcmVzc2lvbkluZm8uc2l6ZSgpOyArK2kpCisgICAgICAgIG1f
ZXhwcmVzc2lvbkluZm9baV0uaW5zdHJ1Y3Rpb25PZmZzZXQgPSBpbnNlcnRpb25TZXQuYWRqdXN0
T2Zmc2V0KDAsIG1fZXhwcmVzc2lvbkluZm9baV0uaW5zdHJ1Y3Rpb25PZmZzZXQpOworCisgICAg
Ly8gVGhlbiwgbW9kaWZ5IHRoZSB1bmxpbmtlZCBpbnN0cnVjdGlvbnMuCisgICAgaW5zZXJ0aW9u
U2V0LmFwcGx5TW9kaWZpY2F0aW9uKCk7CisKKyAgICAvLyBBbmQgcmVjb21wdXRlIHRoZSBqdW1w
IHRhcmdldCBiYXNlZCBvbiB0aGUgbW9kaWZpZWQgdW5saW5rZWQgaW5zdHJ1Y3Rpb25zLgorICAg
IG1fanVtcFRhcmdldHMuY2xlYXIoKTsKKyAgICByZWNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMo
dGhpcywgZ3JhcGguaW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSwgZ3JhcGguaW5zdHJ1Y3Rpb25zKCku
c2l6ZSgpLCBtX2p1bXBUYXJnZXRzKTsKK30KKwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCmluZGV4IDk5ZDQ3NmI0NjFhM2Yz
N2VmNDQ0Yzg0Njc2NTY2NmUzMWVjN2M2MGEuLjczZWNiODQ3ZGFiMjM5NGQ1ZWJlMzRjODkxY2Nj
MTQxZTQzNDYzNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9V
bmxpbmtlZENvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9V
bmxpbmtlZENvZGVCbG9jay5oCkBAIC00NSw2ICs0NSw4IEBACiAKIG5hbWVzcGFjZSBKU0Mgewog
CitjbGFzcyBCeXRlY29kZVJld3JpdGVyOworY2xhc3MgRGVidWdnZXI7CiBjbGFzcyBGdW5jdGlv
bk1ldGFkYXRhTm9kZTsKIGNsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZTsKIGNsYXNzIEpTU2NvcGU7
CkBAIC02NSw3ICs2NywxMSBAQCB0eXBlZGVmIHVuc2lnbmVkIFVubGlua2VkT2JqZWN0QWxsb2Nh
dGlvblByb2ZpbGU7CiB0eXBlZGVmIHVuc2lnbmVkIFVubGlua2VkTExJbnRDYWxsTGlua0luZm87
CiAKIHN0cnVjdCBVbmxpbmtlZFN0cmluZ0p1bXBUYWJsZSB7Ci0gICAgdHlwZWRlZiBIYXNoTWFw
PFJlZlB0cjxTdHJpbmdJbXBsPiwgaW50MzJfdD4gU3RyaW5nT2Zmc2V0VGFibGU7CisgICAgc3Ry
dWN0IE9mZnNldExvY2F0aW9uIHsKKyAgICAgICAgaW50MzJfdCBicmFuY2hPZmZzZXQ7CisgICAg
fTsKKworICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8U3RyaW5nSW1wbD4sIE9mZnNldExvY2F0
aW9uPiBTdHJpbmdPZmZzZXRUYWJsZTsKICAgICBTdHJpbmdPZmZzZXRUYWJsZSBvZmZzZXRUYWJs
ZTsKIAogICAgIGlubGluZSBpbnQzMl90IG9mZnNldEZvclZhbHVlKFN0cmluZ0ltcGwqIHZhbHVl
LCBpbnQzMl90IGRlZmF1bHRPZmZzZXQpCkBAIC03NCw3ICs4MCw3IEBAIHN0cnVjdCBVbmxpbmtl
ZFN0cmluZ0p1bXBUYWJsZSB7CiAgICAgICAgIFN0cmluZ09mZnNldFRhYmxlOjpjb25zdF9pdGVy
YXRvciBsb2MgPSBvZmZzZXRUYWJsZS5maW5kKHZhbHVlKTsKICAgICAgICAgaWYgKGxvYyA9PSBl
bmQpCiAgICAgICAgICAgICByZXR1cm4gZGVmYXVsdE9mZnNldDsKLSAgICAgICAgcmV0dXJuIGxv
Yy0+dmFsdWU7CisgICAgICAgIHJldHVybiBsb2MtPnZhbHVlLmJyYW5jaE9mZnNldDsKICAgICB9
CiAKIH07CkBAIC0xMDIsNiArMTA4LDggQEAgc3RydWN0IFVubGlua2VkSW5zdHJ1Y3Rpb24gewog
ICAgIH0gdTsKIH07CiAKK2NsYXNzIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uOworCiBjbGFz
cyBVbmxpbmtlZENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogcHVibGljOgogICAgIHR5cGVk
ZWYgSlNDZWxsIEJhc2U7CkBAIC0xMTEsNiArMTE5LDkgQEAgY2xhc3MgVW5saW5rZWRDb2RlQmxv
Y2sgOiBwdWJsaWMgSlNDZWxsIHsKIAogICAgIGVudW0geyBDYWxsRnVuY3Rpb24sIEFwcGx5RnVu
Y3Rpb24gfTsKIAorICAgIHR5cGVkZWYgVW5saW5rZWRJbnN0cnVjdGlvbiBJbnN0cnVjdGlvbjsK
KyAgICB0eXBlZGVmIFZlY3RvcjxVbmxpbmtlZEluc3RydWN0aW9uLCAwLCBVbnNhZmVWZWN0b3JP
dmVyZmxvdz4gVW5wYWNrZWRJbnN0cnVjdGlvbnM7CisKICAgICBib29sIGlzQ29uc3RydWN0b3Io
KSBjb25zdCB7IHJldHVybiBtX2lzQ29uc3RydWN0b3I7IH0KICAgICBib29sIGlzU3RyaWN0TW9k
ZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNTdHJpY3RNb2RlOyB9CiAgICAgYm9vbCB1c2VzRXZhbCgp
IGNvbnN0IHsgcmV0dXJuIG1fdXNlc0V2YWw7IH0KQEAgLTIwMCw2ICsyMTEsOSBAQCBjbGFzcyBV
bmxpbmtlZENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgIHVuc2lnbmVkIGp1bXBUYXJn
ZXQoaW50IGluZGV4KSBjb25zdCB7IHJldHVybiBtX2p1bXBUYXJnZXRzW2luZGV4XTsgfQogICAg
IHVuc2lnbmVkIGxhc3RKdW1wVGFyZ2V0KCkgY29uc3QgeyByZXR1cm4gbV9qdW1wVGFyZ2V0cy5s
YXN0KCk7IH0KIAorICAgIFVubGlua2VkSGFuZGxlckluZm8qIGhhbmRsZXJGb3JCeXRlY29kZU9m
ZnNldCh1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgUmVxdWlyZWRIYW5kbGVyID0gUmVxdWlyZWRI
YW5kbGVyOjpBbnlIYW5kbGVyKTsKKyAgICBVbmxpbmtlZEhhbmRsZXJJbmZvKiBoYW5kbGVyRm9y
SW5kZXgodW5zaWduZWQsIFJlcXVpcmVkSGFuZGxlciA9IFJlcXVpcmVkSGFuZGxlcjo6QW55SGFu
ZGxlcik7CisKICAgICBib29sIGlzQnVpbHRpbkZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9p
c0J1aWx0aW5GdW5jdGlvbjsgfQogCiAgICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2lu
ZCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PENvbnN0cnVjdG9yS2luZD4obV9jb25zdHJ1
Y3RvcktpbmQpOyB9CkBAIC0zODAsNiArMzk0LDggQEAgY2xhc3MgVW5saW5rZWRDb2RlQmxvY2sg
OiBwdWJsaWMgSlNDZWxsIHsKICAgICB9CiAKIHByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIEJ5
dGVjb2RlUmV3cml0ZXI7CisgICAgdm9pZCBhcHBseU1vZGlmaWNhdGlvbihCeXRlY29kZVJld3Jp
dGVyJik7CiAKICAgICB2b2lkIGNyZWF0ZVJhcmVEYXRhSWZOZWNlc3NhcnkoKQogICAgIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WaXJ0dWFsUmVnaXN0ZXIu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WaXJ0dWFsUmVnaXN0ZXIuaAppbmRl
eCBkM2RmNDA5NTdiNTE3NTY4ZTNhZWZiZTNhMWE2MDlmZDg3OGJhYWMzLi5kYWY1MDlmNmM3ZDEx
NWU0NWJjYjEwN2M2N2QzZDM4ZDgwNGYyODk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvVmlydHVhbFJlZ2lzdGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1ZpcnR1YWxSZWdpc3Rlci5oCkBAIC0yNiw4ICsyNiw4IEBACiAjaWZuZGVm
IFZpcnR1YWxSZWdpc3Rlcl9oCiAjZGVmaW5lIFZpcnR1YWxSZWdpc3Rlcl9oCiAKKyNpbmNsdWRl
ICJCeXRlY29kZUNvbnZlbnRpb25zLmgiCiAjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCi0KICNpbmNs
dWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC0xMDMsNyArMTAz
LDcgQEAgY2xhc3MgVmlydHVhbFJlZ2lzdGVyIHsKIAogcHJpdmF0ZToKICAgICBzdGF0aWMgY29u
c3QgaW50IHNfaW52YWxpZFZpcnR1YWxSZWdpc3RlciA9IDB4M2ZmZmZmZmY7Ci0gICAgc3RhdGlj
IGNvbnN0IGludCBzX2ZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4ID0gMHg0MDAwMDAwMDsKKyAg
ICBzdGF0aWMgY29uc3QgaW50IHNfZmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXggPSBGaXJzdENv
bnN0YW50UmVnaXN0ZXJJbmRleDsKIAogICAgIHN0YXRpYyBpbnQgbG9jYWxUb09wZXJhbmQoaW50
IGxvY2FsKSB7IHJldHVybiAtMSAtIGxvY2FsOyB9CiAgICAgc3RhdGljIGludCBvcGVyYW5kVG9M
b2NhbChpbnQgb3BlcmFuZCkgeyByZXR1cm4gLTEgLSBvcGVyYW5kOyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3Bw
CmluZGV4IDMxMmQ4OWY3YWRjNzNmMDdkYzUxNzliNzVlNTc1YzU1OTAyNjZkYjguLmNiMWE2MDNj
NzhlYjFkYzRkOWZlNWU5MTU4ODMyMjNhZTkxMmM5YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC0z
Myw2ICszMyw3IEBACiAKICNpbmNsdWRlICJBcml0aFByb2ZpbGUuaCIKICNpbmNsdWRlICJCdWls
dGluRXhlY3V0YWJsZXMuaCIKKyNpbmNsdWRlICJCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5o
IgogI2luY2x1ZGUgIkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5oIgogI2luY2x1ZGUgIkludGVy
cHJldGVyLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgpAQCAtMTU1LDYgKzE1NiwxMCBAQCBQ
YXJzZXJFcnJvciBCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUoKQogICAgICAgICBtX2NvZGVC
bG9jay0+YWRkRXhjZXB0aW9uSGFuZGxlcihpbmZvKTsKICAgICB9CiAgICAgCisKKyAgICBpZiAo
bV9jb2RlQmxvY2stPnBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yQm9k
eU1vZGUpCisgICAgICAgIHBlcmZvcm1HZW5lcmF0b3JpZmljYXRpb24obV9jb2RlQmxvY2suZ2V0
KCksIG1faW5zdHJ1Y3Rpb25zLCBtX2dlbmVyYXRvckZyYW1lU3ltYm9sVGFibGUuZ2V0KCksIG1f
Z2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZUluZGV4KTsKKwogICAgIG1fY29kZUJsb2NrLT5zZXRJ
bnN0cnVjdGlvbnMoc3RkOjptYWtlX3VuaXF1ZTxVbmxpbmtlZEluc3RydWN0aW9uU3RyZWFtPiht
X2luc3RydWN0aW9ucykpOwogCiAgICAgbV9jb2RlQmxvY2stPnNocmlua1RvRml0KCk7CkBAIC0y
NjIsMTAgKzI2NywxNCBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0m
IHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAgIGJvb2wgc2hvdWxk
Q2FwdHVyZUFsbE9mVGhlVGhpbmdzID0gbV9zaG91bGRFbWl0RGVidWdIb29rcyB8fCBjb2RlQmxv
Y2stPnVzZXNFdmFsKCk7CiAgICAgYm9vbCBuZWVkc0FyZ3VtZW50cyA9IChmdW5jdGlvbk5vZGUt
PnVzZXNBcmd1bWVudHMoKSB8fCBjb2RlQmxvY2stPnVzZXNFdmFsKCkgfHwgKGZ1bmN0aW9uTm9k
ZS0+dXNlc0Fycm93RnVuY3Rpb24oKSAmJiAhY29kZUJsb2NrLT5pc0Fycm93RnVuY3Rpb24oKSAm
JiBpc0FyZ3VtZW50c1VzZWRJbklubmVyQXJyb3dGdW5jdGlvbigpKSk7CiAKLSAgICAvLyBHZW5l
cmF0b3IgbmV2ZXIgcHJvdmlkZXMgImFyZ3VtZW50cyIuICJhcmd1bWVudHMiIHJlZmVyZW5jZSB3
aWxsIGJlIHJlc29sdmVkIGluIGFuIHVwcGVyIGdlbmVyYXRvciBmdW5jdGlvbiBzY29wZS4KLSAg
ICBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yQm9keU1vZGUpCisg
ICAgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckJvZHlNb2RlKSB7
CisgICAgICAgIC8vIEdlbmVyYXRvciBuZXZlciBwcm92aWRlcyAiYXJndW1lbnRzIi4gImFyZ3Vt
ZW50cyIgcmVmZXJlbmNlIHdpbGwgYmUgcmVzb2x2ZWQgaW4gYW4gdXBwZXIgZ2VuZXJhdG9yIGZ1
bmN0aW9uIHNjb3BlLgogICAgICAgICBuZWVkc0FyZ3VtZW50cyA9IGZhbHNlOwogCisgICAgICAg
IC8vIEdlbmVyYXRvciB1c2VzIHRoZSB2YXIgc2NvcGUgdG8gc2F2ZSBhbmQgcmVzdW1lIGl0cyB2
YXJpYWJsZXMuIFNvIHRoZSBsZXhpY2FsIHNjb3BlIGlzIGFsd2F5cyBpbnN0YW50aWF0ZWQuCisg
ICAgICAgIHNob3VsZENhcHR1cmVTb21lT2ZUaGVUaGluZ3MgPSB0cnVlOworICAgIH0KKwogICAg
IGlmIChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JXcmFwcGVyRnVuY3Rp
b25Nb2RlICYmIG5lZWRzQXJndW1lbnRzKSB7CiAgICAgICAgIC8vIEdlbmVyYXRvciBkb2VzIG5v
dCBwcm92aWRlICJhcmd1bWVudHMiLiBJbnN0ZWFkLCB3cmFwcGluZyBHZW5lcmF0b3JGdW5jdGlv
biBwcm92aWRlcyAiYXJndW1lbnRzIi4KICAgICAgICAgLy8gVGhpcyBpcyBiZWNhdXNlIGFyZ3Vt
ZW50cyBvZiBhIGdlbmVyYXRvciBzaG91bGQgYmUgZXZhbHVhdGVkIGJlZm9yZSBzdGFydGluZyBp
dC4KQEAgLTI3NCw3ICsyODMsNyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0
b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAgICAgICAv
LyAgICBmdW5jdGlvbiAqZ2VuKGEsIGIgPSBoZWxsbygpKQogICAgICAgICAvLyAgICB7CiAgICAg
ICAgIC8vICAgICAgICByZXR1cm4gewotICAgICAgICAvLyAgICAgICAgICAgIEBnZW5lcmF0b3JO
ZXh0OiBmdW5jdGlvbiAoQGdlbmVyYXRvciwgQGdlbmVyYXRvclN0YXRlLCBAZ2VuZXJhdG9yVmFs
dWUsIEBnZW5lcmF0b3JSZXN1bWVNb2RlKQorICAgICAgICAvLyAgICAgICAgICAgIEBnZW5lcmF0
b3JOZXh0OiBmdW5jdGlvbiAoQGdlbmVyYXRvciwgQGdlbmVyYXRvclN0YXRlLCBAZ2VuZXJhdG9y
VmFsdWUsIEBnZW5lcmF0b3JSZXN1bWVNb2RlLCBAZ2VuZXJhdG9yRnJhbWUpCiAgICAgICAgIC8v
ICAgICAgICAgICAgewogICAgICAgICAvLyAgICAgICAgICAgICAgICBhcmd1bWVudHM7ICAvLyBU
aGlzIGBhcmd1bWVudHNgIHNob3VsZCByZWZlcmVuY2UgdG8gdGhlIGdlbidzIGFyZ3VtZW50cy4K
ICAgICAgICAgLy8gICAgICAgICAgICAgICAgLi4uCkBAIC0zMDMsMTYgKzMxMiwxNCBAQCBCeXRl
Y29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1
bmN0aW9uTm9kZSwgVW5saW5rZQogICAgICAgICByZXR1cm4gY2FwdHVyZXModWlkKSA/IFZhcktp
bmQ6OlNjb3BlIDogVmFyS2luZDo6U3RhY2s7CiAgICAgfTsKIAotICAgIGVtaXRFbnRlcigpOwot
Ci0gICAgYWxsb2NhdGVBbmRFbWl0U2NvcGUoKTsKLQogICAgIG1fY2FsbGVlUmVnaXN0ZXIuc2V0
SW5kZXgoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlKTsKIAogICAgIGluaXRpYWxpemVQYXJhbWV0ZXJz
KHBhcmFtZXRlcnMpOwogICAgIEFTU0VSVCghKGlzU2ltcGxlUGFyYW1ldGVyTGlzdCAmJiBtX3Jl
c3RQYXJhbWV0ZXIpKTsKIAotICAgIC8vIEJlZm9yZSBlbWl0dGluZyBhIHNjb3BlIGNyZWF0aW9u
LCBlbWl0IGEgZ2VuZXJhdG9yIHByb2xvZ3VlIHRoYXQgY29udGFpbnMganVtcCBiYXNlZCBvbiBh
IGdlbmVyYXRvcidzIHN0YXRlLgorICAgIGVtaXRFbnRlcigpOworCisgICAgLy8gQmVmb3JlIGVt
aXR0aW5nIGFueSBvZiB0aGUgYWN0dWFsIGNvZGUgZXhjZXB0IGZvciBvcF9lbnRlciwgZW1pdCBh
IGdlbmVyYXRvciBwcm9sb2d1ZSB0aGF0IGNvbnRhaW5zIGp1bXAgYmFzZWQgb24gYSBnZW5lcmF0
b3IncyBzdGF0ZS4KICAgICBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJh
dG9yQm9keU1vZGUpIHsKICAgICAgICAgbV9nZW5lcmF0b3JSZWdpc3RlciA9ICZtX3BhcmFtZXRl
cnNbMV07CiAKQEAgLTMyNiw2ICszMzMsOCBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVH
ZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAg
ICAgICBlbWl0R2VuZXJhdG9yU3RhdGVMYWJlbCgpOwogICAgIH0KIAorICAgIGFsbG9jYXRlQW5k
RW1pdFNjb3BlKCk7CisKICAgICBpZiAoZnVuY3Rpb25OYW1lSXNJblNjb3BlKGZ1bmN0aW9uTm9k
ZS0+aWRlbnQoKSwgZnVuY3Rpb25Ob2RlLT5mdW5jdGlvbk1vZGUoKSkpIHsKICAgICAgICAgQVNT
RVJUKHBhcnNlTW9kZSAhPSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckJvZHlNb2RlKTsKICAg
ICAgICAgYm9vbCBpc0R5bmFtaWNTY29wZSA9IGZ1bmN0aW9uTmFtZVNjb3BlSXNEeW5hbWljKGNv
ZGVCbG9jay0+dXNlc0V2YWwoKSwgY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSk7CkBAIC02NDEs
NiArNjUwLDE2IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0s
IEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtlCiAgICAgICAgICAgICBlbWl0TG9h
ZE5ld1RhcmdldEZyb21BcnJvd0Z1bmN0aW9uTGV4aWNhbEVudmlyb25tZW50KCk7CiAgICAgfQog
ICAgIAorICAgIC8vIFNldCB1cCB0aGUgbGV4aWNhbCBlbnZpcm9ubWVudCBzY29wZSBhcyB0aGUg
Z2VuZXJhdG9yIGZyYW1lLiBXZSBzdG9yZSB0aGUgc2F2ZWQgYW5kIHJlc3VtZWQgZ2VuZXJhdG9y
IHJlZ2lzdGVycyBpbnRvIHRoaXMgc2NvcGUgd2l0aCB0aGUgc3ltYm9sIGtleXMuCisgICAgLy8g
U2luY2UgdGhleSBhcmUgc3ltYm9sIGtleWVkLCB0aGVzZSB2YXJpYWJsZXMgY2Fubm90IGJlIHJl
YWNoZWQgZnJvbSB0aGUgdXN1YWwgY29kZS4KKyAgICBpZiAoU291cmNlUGFyc2VNb2RlOjpHZW5l
cmF0b3JCb2R5TW9kZSA9PSBwYXJzZU1vZGUpIHsKKyAgICAgICAgQVNTRVJUKG1fbGV4aWNhbEVu
dmlyb25tZW50UmVnaXN0ZXIpOworICAgICAgICBtX2dlbmVyYXRvckZyYW1lU3ltYm9sVGFibGUu
c2V0KCptX3ZtLCBmdW5jdGlvblN5bWJvbFRhYmxlKTsKKyAgICAgICAgbV9nZW5lcmF0b3JGcmFt
ZVN5bWJvbFRhYmxlSW5kZXggPSBzeW1ib2xUYWJsZUNvbnN0YW50SW5kZXg7CisgICAgICAgIGVt
aXRNb3ZlKGdlbmVyYXRvckZyYW1lUmVnaXN0ZXIoKSwgbV9sZXhpY2FsRW52aXJvbm1lbnRSZWdp
c3Rlcik7CisgICAgICAgIGVtaXRQdXRCeUlkKGdlbmVyYXRvclJlZ2lzdGVyKCksIHByb3BlcnR5
TmFtZXMoKS5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JGcmFtZVByaXZhdGVOYW1lKCksIGdlbmVy
YXRvckZyYW1lUmVnaXN0ZXIoKSk7CisgICAgfQorCiAgICAgYm9vbCBzaG91bGRJbml0aWFsaXpl
QmxvY2tTY29wZWRGdW5jdGlvbnMgPSBmYWxzZTsgLy8gV2UgZ2VuZXJhdGUgdG9wLWxldmVsIGZ1
bmN0aW9uIGRlY2xhcmF0aW9ucyBpbiA6OmdlbmVyYXRlKCkuCiAgICAgcHVzaExleGljYWxTY29w
ZShtX3Njb3BlTm9kZSwgVERaQ2hlY2tPcHRpbWl6YXRpb246Ok9wdGltaXplLCBOZXN0ZWRTY29w
ZVR5cGU6OklzTm90TmVzdGVkLCBudWxscHRyLCBzaG91bGRJbml0aWFsaXplQmxvY2tTY29wZWRG
dW5jdGlvbnMpOwogfQpAQCAtMzY3Miw4ICszNjkxLDcgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRv
cjo6ZW1pdENvbXBsZXhQb3BTY29wZXMoUmVnaXN0ZXJJRCogc2NvcGUsIENvbnRyb2xGbG93Q29u
dGUKICAgICAgICAgICAgIGlmIChmbGlwVHJpZXMpIHsKICAgICAgICAgICAgICAgICB3aGlsZSAo
bV90cnlDb250ZXh0U3RhY2suc2l6ZSgpICE9IGZpbmFsbHlDb250ZXh0LnRyeUNvbnRleHRTdGFj
a1NpemUpIHsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKG1fdHJ5Q29udGV4dFN0YWNrLnNp
emUoKSA+IGZpbmFsbHlDb250ZXh0LnRyeUNvbnRleHRTdGFja1NpemUpOwotICAgICAgICAgICAg
ICAgICAgICBUcnlDb250ZXh0IGNvbnRleHQgPSBtX3RyeUNvbnRleHRTdGFjay5sYXN0KCk7Ci0g
ICAgICAgICAgICAgICAgICAgIG1fdHJ5Q29udGV4dFN0YWNrLnJlbW92ZUxhc3QoKTsKKyAgICAg
ICAgICAgICAgICAgICAgVHJ5Q29udGV4dCBjb250ZXh0ID0gbV90cnlDb250ZXh0U3RhY2sudGFr
ZUxhc3QoKTsKICAgICAgICAgICAgICAgICAgICAgVHJ5UmFuZ2UgcmFuZ2U7CiAgICAgICAgICAg
ICAgICAgICAgIHJhbmdlLnN0YXJ0ID0gY29udGV4dC5zdGFydDsKICAgICAgICAgICAgICAgICAg
ICAgcmFuZ2UuZW5kID0gYmVmb3JlRmluYWxseTsKQEAgLTM5NTcsNyArMzk3NSw3IEBAIHN0YXRp
YyB2b2lkIHByZXBhcmVKdW1wVGFibGVGb3JTdHJpbmdTd2l0Y2goVW5saW5rZWRTdHJpbmdKdW1w
VGFibGUmIGp1bXBUYWJsZSwKICAgICAgICAgCiAgICAgICAgIEFTU0VSVChub2Rlc1tpXS0+aXNT
dHJpbmcoKSk7CiAgICAgICAgIFN0cmluZ0ltcGwqIGNsYXVzZSA9IHN0YXRpY19jYXN0PFN0cmlu
Z05vZGUqPihub2Rlc1tpXSktPnZhbHVlKCkuaW1wbCgpOwotICAgICAgICBqdW1wVGFibGUub2Zm
c2V0VGFibGUuYWRkKGNsYXVzZSwgbGFiZWxzW2ldLT5iaW5kKHN3aXRjaEFkZHJlc3MsIHN3aXRj
aEFkZHJlc3MgKyAzKSk7CisgICAgICAgIGp1bXBUYWJsZS5vZmZzZXRUYWJsZS5hZGQoY2xhdXNl
LCBVbmxpbmtlZFN0cmluZ0p1bXBUYWJsZTo6T2Zmc2V0TG9jYXRpb24geyBsYWJlbHNbaV0tPmJp
bmQoc3dpdGNoQWRkcmVzcywgc3dpdGNoQWRkcmVzcyArIDMpIH0pOwogICAgIH0KIH0KIApAQCAt
NDQ2MywxNiArNDQ4MSwzNiBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0WWllbGRQb2lu
dChSZWdpc3RlcklEKiBhcmd1bWVudCkKICAgICBlbWl0R2VuZXJhdG9yU3RhdGVDaGFuZ2UoeWll
bGRQb2ludEluZGV4KTsKICAgICAvLyBGaXJzdCB5aWVsZCBwb2ludCBpcyB1c2VkIGZvciBpbml0
aWFsIHNlcXVlbmNlLgogICAgIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9IHlpZWxk
UG9pbnRJbmRleCAtIDE7CisKKyAgICAvLyBTcGxpdCB0aGUgdHJ5IHJhbmdlIGhlcmUuCisgICAg
UmVmUHRyPExhYmVsPiBzYXZlUG9pbnQgPSBlbWl0TGFiZWwobmV3TGFiZWwoKS5nZXQoKSk7Cisg
ICAgZm9yICh1bnNpZ25lZCBpID0gbV90cnlDb250ZXh0U3RhY2suc2l6ZSgpOyBpLS07KSB7Cisg
ICAgICAgIFRyeUNvbnRleHQmIGNvbnRleHQgPSBtX3RyeUNvbnRleHRTdGFja1tpXTsKKyAgICAg
ICAgVHJ5UmFuZ2UgcmFuZ2U7CisgICAgICAgIHJhbmdlLnN0YXJ0ID0gY29udGV4dC5zdGFydDsK
KyAgICAgICAgcmFuZ2UuZW5kID0gc2F2ZVBvaW50OworICAgICAgICByYW5nZS50cnlEYXRhID0g
Y29udGV4dC50cnlEYXRhOworICAgICAgICBtX3RyeVJhbmdlcy5hcHBlbmQocmFuZ2UpOworCisg
ICAgICAgIC8vIFRyeSByYW5nZSB3aWxsIGJlIHJlc3RhcmVkIGF0IHRoZSBtZXJnZSBwb2ludC4K
KyAgICAgICAgY29udGV4dC5zdGFydCA9IG1lcmdlUG9pbnQ7CisgICAgfQorICAgIFZlY3RvcjxU
cnlDb250ZXh0PiBzYXZlZFRyeUNvbnRleHRTdGFjazsKKyAgICBtX3RyeUNvbnRleHRTdGFjay5z
d2FwKHNhdmVkVHJ5Q29udGV4dFN0YWNrKTsKKwogICAgIGVtaXRTYXZlKG1lcmdlUG9pbnQuZ2V0
KCksIGxpdmVDYWxsZWVMb2NhbHNJbmRleCk7CiAgICAgZW1pdFJldHVybihhcmd1bWVudCk7CiAg
ICAgZW1pdFJlc3VtZShtZXJnZVBvaW50LmdldCgpLCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpOwor
CisgICAgLy8gUmVzdG9yZSB0aGUgdHJ5IGNvbnRleHRzLCB3aGljaCBzdGFydCBvZmZzZXQgaXMg
dXBkYXRlZCB0byB0aGUgbWVyZ2UgcG9pbnQuCisgICAgbV90cnlDb250ZXh0U3RhY2suc3dhcChz
YXZlZFRyeUNvbnRleHRTdGFjayk7CiB9CiAKIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRT
YXZlKExhYmVsKiBtZXJnZVBvaW50LCB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpCiB7
CiAgICAgc2l6ZV90IGJlZ2luID0gaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpOwogICAgIGVtaXRPcGNv
ZGUob3Bfc2F2ZSk7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fZ2VuZXJhdG9yUmVnaXN0
ZXItPmluZGV4KCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChnZW5lcmF0b3JGcmFtZVJl
Z2lzdGVyKCktPmluZGV4KCkpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChsaXZlQ2FsbGVl
TG9jYWxzSW5kZXgpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChtZXJnZVBvaW50LT5iaW5k
KGJlZ2luLCBpbnN0cnVjdGlvbnMoKS5zaXplKCkpKTsKIH0KQEAgLTQ0ODEsNyArNDUxOSw3IEBA
IHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXN1bWUoTGFiZWwqIG1lcmdlUG9pbnQsIHVu
c2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJCiB7CiAgICAgZW1pdEdlbmVyYXRvclN0YXRlTGFiZWwo
KTsKICAgICBlbWl0T3Bjb2RlKG9wX3Jlc3VtZSk7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5k
KG1fZ2VuZXJhdG9yUmVnaXN0ZXItPmluZGV4KCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVu
ZChnZW5lcmF0b3JGcmFtZVJlZ2lzdGVyKCktPmluZGV4KCkpOwogICAgIGluc3RydWN0aW9ucygp
LmFwcGVuZChsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpOwogICAgIGVtaXRMYWJlbChtZXJnZVBvaW50
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0
ZWNvZGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0
ZWNvZGVHZW5lcmF0b3IuaAppbmRleCAwNTE2ZTcyYTc0YTZhZjM4MDVjMjFjZDg5YzM5MWMwMzk4
Mzg4YWVlLi5mNzRmOTI2MTA4YmI5NzNiMGQ5NjIxYTM5MjZiYzE0NzE3ODk1NTg0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5oCkBAIC0zNyw2ICszNyw4IEBACiAjaW5jbHVkZSAiTGFiZWwuaCIKICNpbmNsdWRlICJM
YWJlbFNjb3BlLmgiCiAjaW5jbHVkZSAiTm9kZXMuaCIKKyNpbmNsdWRlICJJbnRlcnByZXRlci5o
IgorI2luY2x1ZGUgIkpTR2VuZXJhdG9yRnVuY3Rpb24uaCIKICNpbmNsdWRlICJQYXJzZXJFcnJv
ci5oIgogI2luY2x1ZGUgIlJlZ2lzdGVySUQuaCIKICNpbmNsdWRlICJTZXRGb3JTY29wZS5oIgpA
QCAtNjk4LDkgKzcwMCwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVnaXN0ZXJJRCog
ZW1pdERlbGVnYXRlWWllbGQoUmVnaXN0ZXJJRCogYXJndW1lbnQsIFRocm93YWJsZUV4cHJlc3Np
b25EYXRhKik7CiAgICAgICAgIHZvaWQgYmVnaW5HZW5lcmF0b3IoUmVnaXN0ZXJJRCopOwogICAg
ICAgICB2b2lkIGVuZEdlbmVyYXRvcihMYWJlbCogZGVmYXVsdExhYmVsKTsKLSAgICAgICAgUmVn
aXN0ZXJJRCogZ2VuZXJhdG9yU3RhdGVSZWdpc3RlcigpIHsgcmV0dXJuICZtX3BhcmFtZXRlcnNb
Ml07IH0KLSAgICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9yVmFsdWVSZWdpc3RlcigpIHsgcmV0
dXJuICZtX3BhcmFtZXRlcnNbM107IH0KLSAgICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9yUmVz
dW1lTW9kZVJlZ2lzdGVyKCkgeyByZXR1cm4gJm1fcGFyYW1ldGVyc1s0XTsgfQorICAgICAgICBS
ZWdpc3RlcklEKiBnZW5lcmF0b3JTdGF0ZVJlZ2lzdGVyKCkgeyByZXR1cm4gJm1fcGFyYW1ldGVy
c1tzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JBcmd1
bWVudDo6U3RhdGUpXTsgfQorICAgICAgICBSZWdpc3RlcklEKiBnZW5lcmF0b3JWYWx1ZVJlZ2lz
dGVyKCkgeyByZXR1cm4gJm1fcGFyYW1ldGVyc1tzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVy
YXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JBcmd1bWVudDo6VmFsdWUpXTsgfQorICAgICAgICBSZWdp
c3RlcklEKiBnZW5lcmF0b3JSZXN1bWVNb2RlUmVnaXN0ZXIoKSB7IHJldHVybiAmbV9wYXJhbWV0
ZXJzW3N0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yRnVuY3Rpb246OkdlbmVyYXRvckFy
Z3VtZW50OjpSZXN1bWVNb2RlKV07IH0KKyAgICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9yRnJh
bWVSZWdpc3RlcigpIHsgcmV0dXJuICZtX3BhcmFtZXRlcnNbc3RhdGljX2Nhc3Q8aW50MzJfdD4o
SlNHZW5lcmF0b3JGdW5jdGlvbjo6R2VuZXJhdG9yQXJndW1lbnQ6OkZyYW1lKV07IH0KIAogICAg
ICAgICBDb2RlVHlwZSBjb2RlVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZVR5cGU7IH0KIApA
QCAtOTI5LDYgKzkzMiwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgVmVjdG9yPFJlZlB0
cjxGb3JJbkNvbnRleHQ+PiBtX2ZvckluQ29udGV4dFN0YWNrOwogICAgICAgICBWZWN0b3I8VHJ5
Q29udGV4dD4gbV90cnlDb250ZXh0U3RhY2s7CiAgICAgICAgIFZlY3RvcjxSZWZQdHI8TGFiZWw+
PiBtX2dlbmVyYXRvclJlc3VtZUxhYmVsczsKKworICAgICAgICBTdHJvbmc8U3ltYm9sVGFibGU+
IG1fZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZTsKKyAgICAgICAgaW50IG1fZ2VuZXJhdG9yRnJh
bWVTeW1ib2xUYWJsZUluZGV4IHsgMCB9OworCiAgICAgICAgIGVudW0gRnVuY3Rpb25WYXJpYWJs
ZVR5cGUgOiB1aW50OF90IHsgTm9ybWFsRnVuY3Rpb25WYXJpYWJsZSwgR2xvYmFsRnVuY3Rpb25W
YXJpYWJsZSB9OwogICAgICAgICBWZWN0b3I8c3RkOjpwYWlyPEZ1bmN0aW9uTWV0YWRhdGFOb2Rl
KiwgRnVuY3Rpb25WYXJpYWJsZVR5cGU+PiBtX2Z1bmN0aW9uc1RvSW5pdGlhbGl6ZTsKICAgICAg
ICAgYm9vbCBtX25lZWRUb0luaXRpYWxpemVBcmd1bWVudHMgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKaW5kZXggNWQ5MDAzOTc0MjM2ZWI5
MTE2OWQyMTI4NmVkYzBjNzE1MmVkODU0NC4uYjYyZmQ5ZjYxMmYyOTE1NjllYjdiZDMzZTU1M2Y0
NGZlZWRhMDFhYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVy
YXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMu
Y3BwCkBAIC00Miw4ICs0Miw4IEBACiAjaW5jbHVkZSAiRGlyZWN0QXJndW1lbnRzLmgiCiAjaW5j
bHVkZSAiRlRMRm9yT1NSRW50cnlKSVRDb2RlLmgiCiAjaW5jbHVkZSAiRlRMT1NSRW50cnkuaCIK
LSNpbmNsdWRlICJIb3N0Q2FsbFJldHVyblZhbHVlLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVy
LmgiCisjaW5jbHVkZSAiSG9zdENhbGxSZXR1cm5WYWx1ZS5oIgogI2luY2x1ZGUgIkludGVycHJl
dGVyLmgiCiAjaW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSklURXhjZXB0aW9ucy5oIgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRlLWJ5dGVjb2RlLWZpbGVzIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRlLWJ5dGVjb2RlLWZpbGVzCmluZGV4IDU2NjZh
M2Y5MjRjMTE5YjIxNmQzZmYwZmZlOWM2NzJiN2M3MWJiNzkuLjhmNzkwZWQ5ZmE4MzE2ZDM5ZGEx
NWQzYjc1ODk0NmJmNDlmM2JkM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9n
ZW5lcmF0ZS1ieXRlY29kZS1maWxlcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJh
dGUtYnl0ZWNvZGUtZmlsZXMKQEAgLTk0LDEzICs5NCwxNCBAQCBkZWYgb3Blbk9yRXhpdChwYXRo
LCBtb2RlKToKICAgICAgICAgcHJpbnQgIkkvTyBlcnJvciBvcGVuaW5nIHswfSwgKHsxfSk6IHsy
fSIuZm9ybWF0KHBhdGgsIGUuZXJybm8sIGUuc3RyZXJyb3IpCiAgICAgICAgIGV4aXQoMSkKIAot
ZGVmIGhhc2hGaWxlKGZpbGUpOgorZGVmIGhhc2hGaWxlKGZpbGVzKToKICAgICBzaGExID0gaGFz
aGxpYi5zaGExKCkKLSAgICBmaWxlLnNlZWsoMCkKLSAgICBmb3IgbGluZSBpbiBmaWxlOgotICAg
ICAgICBzaGExLnVwZGF0ZShsaW5lKQorICAgIGZvciBmaWxlIGluIGZpbGVzOgorICAgICAgICBm
aWxlLnNlZWsoMCkKKyAgICAgICAgZm9yIGxpbmUgaW4gZmlsZToKKyAgICAgICAgICAgIHNoYTEu
dXBkYXRlKGxpbmUpCiAKLSAgICBmaWxlLnNlZWsoMCkKKyAgICAgICAgZmlsZS5zZWVrKDApCiAK
ICAgICByZXR1cm4gc2hhMS5oZXhkaWdlc3QoKQogCkBAIC0xMTUsNyArMTE2LDggQEAgaWYgX19u
YW1lX18gPT0gIl9fbWFpbl9fIjoKIAogICAgIGJ5dGVjb2RlSlNPTkZpbGUgPSBhcmdzWzBdCiAg
ICAgYnl0ZWNvZGVGaWxlID0gb3Blbk9yRXhpdChieXRlY29kZUpTT05GaWxlLCAicmIiKQotICAg
IHNoYTFIYXNoID0gaGFzaEZpbGUoYnl0ZWNvZGVGaWxlKQorICAgIGdlbmVyYXRvckZpbGUgPSBv
cGVuT3JFeGl0KF9fZmlsZV9fLCAicmIiKQorICAgIHNoYTFIYXNoID0gaGFzaEZpbGUoW2J5dGVj
b2RlRmlsZSwgZ2VuZXJhdG9yRmlsZV0pCiAKICAgICBoRmlsZUhhc2hTdHJpbmcgPSAiLy8gU0hB
MUhhc2g6IHswfVxuIi5mb3JtYXQoc2hhMUhhc2gpCiAgICAgYXNtRmlsZUhhc2hTdHJpbmcgPSAi
IyBTSEExSGFzaDogezB9XG4iLmZvcm1hdChzaGExSGFzaCkKQEAgLTE4Nyw2ICsxODksNyBAQCBp
ZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgICAgICAgICAgICAgIGRlZmF1bHRMZW5ndGgg
PSBzZWN0aW9uWyJkZWZhdWx0TGVuZ3RoIl0KIAogICAgICAgICAgICAgYnl0ZWNvZGVOdW0gPSAw
CisgICAgICAgICAgICBtYXhMZW5ndGggPSAwCiAgICAgICAgICAgICBmb3IgYnl0ZWNvZGUgaW4g
c2VjdGlvblsiYnl0ZWNvZGVzIl06CiAgICAgICAgICAgICAgICAgaWYgbm90IGZpcnN0TWFjcm86
CiAgICAgICAgICAgICAgICAgICAgIGJ5dGVjb2RlSEZpbGUud3JpdGUoIiBcXFxuIikKQEAgLTE5
NCw2ICsxOTcsNyBAQCBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgICAgICAgICAgICAg
IGxlbmd0aCA9IGRlZmF1bHRMZW5ndGgKICAgICAgICAgICAgICAgICBpZiAibGVuZ3RoIiBpbiBi
eXRlY29kZToKICAgICAgICAgICAgICAgICAgICAgbGVuZ3RoID0gYnl0ZWNvZGVbImxlbmd0aCJd
CisgICAgICAgICAgICAgICAgICAgIG1heExlbmd0aCA9IG1heChbbGVuZ3RoLCBtYXhMZW5ndGhd
KQogCiAgICAgICAgICAgICAgICAgYnl0ZWNvZGVIRmlsZS53cml0ZSgiICAgIG1hY3JvKHswfSwg
ezF9KSIuZm9ybWF0KGJ5dGVjb2RlWyJuYW1lIl0sIGxlbmd0aCkpCiAgICAgICAgICAgICAgICAg
Zmlyc3RNYWNybyA9IEZhbHNlCkBAIC0yMDEsNiArMjA1LDcgQEAgaWYgX19uYW1lX18gPT0gIl9f
bWFpbl9fIjoKIAogICAgICAgICAgICAgYnl0ZWNvZGVIRmlsZS53cml0ZSgiXG5cbiIpCiAgICAg
ICAgICAgICBieXRlY29kZUhGaWxlLndyaXRlKCIjZGVmaW5lIE5VTUJFUl9PRl97MH1fSURTIHsx
fVxuXG4iLmZvcm1hdChzZWN0aW9uWyJtYWNyb05hbWVDb21wb25lbnQiXSwgYnl0ZWNvZGVOdW0p
KQorICAgICAgICAgICAgYnl0ZWNvZGVIRmlsZS53cml0ZSgiI2RlZmluZSBNQVhfT1BDT0RFX0xF
TkdUSF9PRl97MH0gezF9XG5cbiIuZm9ybWF0KHNlY3Rpb25bIm1hY3JvTmFtZUNvbXBvbmVudCJd
LCBtYXhMZW5ndGgpKQogCiAgICAgICAgIGlmIGluaXRBU01GaWxlTmFtZSBhbmQgc2VjdGlvblsn
ZW1pdEluQVNNRmlsZSddOgogICAgICAgICAgICAgcHJlZml4ID0gIiIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCmluZGV4IGMwNmZjNzQy
ZjQ2ZjVmZDdhYTk5OGMxYzdlNGIwNDdhMGY3NDIzYTIuLjU2NzA3MmE0YWU0NjcwZWY3MTM4ODdk
NDE5MmM2NjRiMDZjOWRjZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRl
cnByZXRlci9JbnRlcnByZXRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL0ludGVycHJldGVyLmNwcApAQCAtNjA5LDcgKzYwOSw3IEBAIEpTU3RyaW5nKiBJbnRl
cnByZXRlcjo6c3RhY2tUcmFjZUFzU3RyaW5nKFZNJiB2bSwgY29uc3QgVmVjdG9yPFN0YWNrRnJh
bWU+JiBzdGFjCiAgICAgcmV0dXJuIGpzU3RyaW5nKCZ2bSwgYnVpbGRlci50b1N0cmluZygpKTsK
IH0KIAotQUxXQVlTX0lOTElORSBzdGF0aWMgSGFuZGxlckluZm8qIGZpbmRFeGNlcHRpb25IYW5k
bGVyKFN0YWNrVmlzaXRvciYgdmlzaXRvciwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVCbG9j
azo6UmVxdWlyZWRIYW5kbGVyIHJlcXVpcmVkSGFuZGxlcikKK0FMV0FZU19JTkxJTkUgc3RhdGlj
IEhhbmRsZXJJbmZvKiBmaW5kRXhjZXB0aW9uSGFuZGxlcihTdGFja1Zpc2l0b3ImIHZpc2l0b3Is
IENvZGVCbG9jayogY29kZUJsb2NrLCBSZXF1aXJlZEhhbmRsZXIgcmVxdWlyZWRIYW5kbGVyKQog
ewogICAgIEFTU0VSVChjb2RlQmxvY2spOwogI2lmIEVOQUJMRShERkdfSklUKQpAQCAtNjQzLDcg
KzY0Myw3IEBAIGNsYXNzIEdldENhdGNoSGFuZGxlckZ1bmN0b3IgewogICAgICAgICBpZiAoIWNv
ZGVCbG9jaykKICAgICAgICAgICAgIHJldHVybiBTdGFja1Zpc2l0b3I6OkNvbnRpbnVlOwogCi0g
ICAgICAgIG1faGFuZGxlciA9IGZpbmRFeGNlcHRpb25IYW5kbGVyKHZpc2l0b3IsIGNvZGVCbG9j
aywgQ29kZUJsb2NrOjpSZXF1aXJlZEhhbmRsZXI6OkNhdGNoSGFuZGxlcik7CisgICAgICAgIG1f
aGFuZGxlciA9IGZpbmRFeGNlcHRpb25IYW5kbGVyKHZpc2l0b3IsIGNvZGVCbG9jaywgUmVxdWly
ZWRIYW5kbGVyOjpDYXRjaEhhbmRsZXIpOwogICAgICAgICBpZiAobV9oYW5kbGVyKQogICAgICAg
ICAgICAgcmV0dXJuIFN0YWNrVmlzaXRvcjo6RG9uZTsKIApAQCAtNjg1LDcgKzY4NSw3IEBAIGNs
YXNzIFVud2luZEZ1bmN0b3IgewogICAgICAgICBtX2hhbmRsZXIgPSBudWxscHRyOwogICAgICAg
ICBpZiAoIW1faXNUZXJtaW5hdGlvbikgewogICAgICAgICAgICAgaWYgKG1fY29kZUJsb2NrICYm
ICFpc1dlYkFzc2VtYmx5RXhlY3V0YWJsZShtX2NvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCkp
KQotICAgICAgICAgICAgICAgIG1faGFuZGxlciA9IGZpbmRFeGNlcHRpb25IYW5kbGVyKHZpc2l0
b3IsIG1fY29kZUJsb2NrLCBDb2RlQmxvY2s6OlJlcXVpcmVkSGFuZGxlcjo6QW55SGFuZGxlcik7
CisgICAgICAgICAgICAgICAgbV9oYW5kbGVyID0gZmluZEV4Y2VwdGlvbkhhbmRsZXIodmlzaXRv
ciwgbV9jb2RlQmxvY2ssIFJlcXVpcmVkSGFuZGxlcjo6QW55SGFuZGxlcik7CiAgICAgICAgIH0K
IAogICAgICAgICBpZiAobV9oYW5kbGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50
ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAppbmRleCA3OWM3ZTUzMDFiYTgzOTZiYzAyZGMyNDVlMDgx
YzdmN2EzNzM4ZTZjLi4zZGYwMDY3NzZmNjFhNGI1YjRiN2MyNDhlNzVjYWIxYThjMzA5MzA5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaApA
QCAtNjUsNiArNjUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBzdHJ1Y3QgSGFuZGxlckluZm87
CiAgICAgc3RydWN0IEluc3RydWN0aW9uOwogICAgIHN0cnVjdCBQcm90b0NhbGxGcmFtZTsKKyAg
ICBzdHJ1Y3QgVW5saW5rZWRJbnN0cnVjdGlvbjsKIAogICAgIGVudW0gVW53aW5kU3RhcnQgeyBV
bndpbmRGcm9tQ3VycmVudEZyYW1lLCBVbndpbmRGcm9tQ2FsbGVyRnJhbWUgfTsKIApAQCAtMjA3
LDcgKzIwOCwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBvcGNvZGU7
CiAjZW5kaWYKICAgICAgICAgfQotICAgICAgICAKKworICAgICAgICBPcGNvZGVJRCBnZXRPcGNv
ZGVJRChjb25zdCBJbnN0cnVjdGlvbiYpOworICAgICAgICBPcGNvZGVJRCBnZXRPcGNvZGVJRChj
b25zdCBVbmxpbmtlZEluc3RydWN0aW9uJik7CisKICAgICAgICAgYm9vbCBpc09wY29kZShPcGNv
ZGUpOwogCiAgICAgICAgIEpTVmFsdWUgZXhlY3V0ZShQcm9ncmFtRXhlY3V0YWJsZSosIENhbGxG
cmFtZSosIEpTT2JqZWN0KiB0aGlzT2JqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlcklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlcklubGluZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NmQwNzE0
OGE1MmU2NWUzNzVmOTdlNmViYjkxYWRiZTFkZDQ1NjBkCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVySW5saW5lcy5oCkBAIC0w
LDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgWXVzdWtlIFN1enVraSA8dXRh
dGFuZS50ZWFAZ21haWwuY29tPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkluc3RydWN0aW9uLmgiCisjaW5jbHVk
ZSAiSW50ZXJwcmV0ZXIuaCIKKyNpbmNsdWRlICJVbmxpbmtlZENvZGVCbG9jay5oIgorCituYW1l
c3BhY2UgSlNDIHsKKworaW5saW5lIE9wY29kZUlEIEludGVycHJldGVyOjpnZXRPcGNvZGVJRChj
b25zdCBJbnN0cnVjdGlvbiYgaW5zdHJ1Y3Rpb24pCit7CisgICAgcmV0dXJuIGdldE9wY29kZUlE
KGluc3RydWN0aW9uLnUub3Bjb2RlKTsKK30KKworaW5saW5lIE9wY29kZUlEIEludGVycHJldGVy
OjpnZXRPcGNvZGVJRChjb25zdCBVbmxpbmtlZEluc3RydWN0aW9uJiBpbnN0cnVjdGlvbikKK3sK
KyAgICByZXR1cm4gaW5zdHJ1Y3Rpb24udS5vcGNvZGU7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpT
QwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCmluZGV4IGIwMGRmYWM4YzE1YzU0N2QyN2ZjNjY3
ZjVjNDU5MGVkMzk5ZGVlNDAuLjEyNDA1ZjdlNTA0YWIzODkzZGQ5N2Q3YTkyOTEzYjA5NWExMTU5
MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKQEAgLTIzNSw4ICsyMzUsNiBAQCB2b2lk
IEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9PUChvcF9nZXRf
cmVzdF9sZW5ndGgpCiAgICAgICAgIERFRklORV9PUChvcF9jaGVja190ZHopCiAgICAgICAgIERF
RklORV9PUChvcF9hc3NlcnQpCi0gICAgICAgIERFRklORV9PUChvcF9zYXZlKQotICAgICAgICBE
RUZJTkVfT1Aob3BfcmVzdW1lKQogICAgICAgICBERUZJTkVfT1Aob3BfZGVidWcpCiAgICAgICAg
IERFRklORV9PUChvcF9kZWxfYnlfaWQpCiAgICAgICAgIERFRklORV9PUChvcF9kZWxfYnlfdmFs
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklULmgKaW5kZXggYmI5N2RjMzViZGZjMDMzOTlhYTA1MTNhOWNh
NzM1NWQwODMxYzYwZC4uNTFmY2Y2MGI5OWQ0MGIwZTUzZGJjZDIyM2M1NjkyMDI1ZjE0ZWNmMyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCkBAIC00OTcsOCArNDk3LDYgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9nZXRfcmVzdF9sZW5ndGgoSW5zdHJ1Y3Rpb24qKTsK
ICAgICAgICAgdm9pZCBlbWl0X29wX2NoZWNrX3RkeihJbnN0cnVjdGlvbiopOwogICAgICAgICB2
b2lkIGVtaXRfb3BfYXNzZXJ0KEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9z
YXZlKEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9yZXN1bWUoSW5zdHJ1Y3Rp
b24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2RlYnVnKEluc3RydWN0aW9uKik7CiAgICAgICAg
IHZvaWQgZW1pdF9vcF9kZWxfYnlfaWQoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0
X29wX2RlbF9ieV92YWwoSW5zdHJ1Y3Rpb24qKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wY29kZXMuY3BwCmluZGV4IDdmN2M3NDUzYmQzZDJkNTBlMTgwMTgzZjI5NzMxMTVmMTE5ZDg1
MmYuLjJkYmU4NmM2MjRiYzg3ZWJmNzBiODAxZTBhMmNjY2VmNjUxNWJhMjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcApAQCAtMTQ5MiwxOCArMTQ5Miw2IEBAIHZv
aWQgSklUOjplbWl0X29wX2dldF9yZXN0X2xlbmd0aChJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogI2VuZGlmCiB9CiAKLXZvaWQgSklUOjplbWl0X29wX3NhdmUoSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKLXsKLSAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxs
KHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX3NhdmUpOwotICAgIHNsb3dQYXRo
Q2FsbC5jYWxsKCk7Ci19Ci0KLXZvaWQgSklUOjplbWl0X29wX3Jlc3VtZShJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQotewotICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwo
dGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfcmVzdW1lKTsKLSAgICBzbG93UGF0
aENhbGwuY2FsbCgpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEVOQUJM
RShKSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlci5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlci5hc20KaW5kZXggMTQ5MThiNjU1ZDVjZmEyMmI4NjE1OGViMmVlYWFmMDg3NDk2NTZh
Ny4uNjA0Y2VlNDkwOWFmNDExZjNmNWRhNzAxZWE5NGJkNWJjZjk4ZTgyYSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQpAQCAt
MTcxMCwxNSArMTcxMCwxMSBAQCBfbGxpbnRfb3BfYXNzZXJ0OgogCiAKIF9sbGludF9vcF9zYXZl
OgotICAgIHRyYWNlRXhlY3V0aW9uKCkKLSAgICBjYWxsT3Bjb2RlU2xvd1BhdGgoX3Nsb3dfcGF0
aF9zYXZlKQotICAgIGRpc3BhdGNoKDQpCisgICAgbm90U3VwcG9ydGVkKCkKIAogCiBfbGxpbnRf
b3BfcmVzdW1lOgotICAgIHRyYWNlRXhlY3V0aW9uKCkKLSAgICBjYWxsT3Bjb2RlU2xvd1BhdGgo
X3Nsb3dfcGF0aF9yZXN1bWUpCi0gICAgZGlzcGF0Y2goMykKKyAgICBub3RTdXBwb3J0ZWQoKQog
CiAKIF9sbGludF9vcF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudDoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAppbmRleCAxOGVkYzAyYjdmODA1OTZlNTBkYzQyMDg1NDJi
YzM2NTgwZTRhZjkwLi5lOTMzODgzZTI4ZjcxMzJiOGYzNGZhM2JiODQ5YmEyZGIxNzA1NjkzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCkBAIC0yNTksNyArMjU5LDcg
QEAgU3RyaW5nIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUlubmVyKGNvbnN0IElkZW50aWZpZXIm
IGNhbGxlZU5hbWUsIFNvdXJjZVBhcnNlTW8KICAgICBpZiAobV9sZXhlci0+aXNSZXBhcnNpbmdG
dW5jdGlvbigpKSB7CiAgICAgICAgIFBhcnNlckZ1bmN0aW9uSW5mbzxBU1RCdWlsZGVyPiBmdW5j
dGlvbkluZm87CiAgICAgICAgIGlmIChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5l
cmF0b3JCb2R5TW9kZSkKLSAgICAgICAgICAgIG1fcGFyYW1ldGVycyA9IGNyZWF0ZUdlbmVyYXRv
clBhcmFtZXRlcnMoY29udGV4dCk7CisgICAgICAgICAgICBtX3BhcmFtZXRlcnMgPSBjcmVhdGVH
ZW5lcmF0b3JQYXJhbWV0ZXJzKGNvbnRleHQsIGZ1bmN0aW9uSW5mby5wYXJhbWV0ZXJDb3VudCk7
CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG1fcGFyYW1ldGVycyA9IHBhcnNlRnVuY3Rpb25Q
YXJhbWV0ZXJzKGNvbnRleHQsIHBhcnNlTW9kZSwgZnVuY3Rpb25JbmZvKTsKIApAQCAtNTExLDEw
ICs1MTEsOSBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTb3VyY2VFbGVtZW50
cyBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VHZW5lcmF0bwogCiAgICAgUGFyc2VyRnVuY3Rpb25J
bmZvPFRyZWVCdWlsZGVyPiBpbmZvOwogICAgIGluZm8ubmFtZSA9ICZtX3ZtLT5wcm9wZXJ0eU5h
bWVzLT5udWxsSWRlbnRpZmllcjsKLSAgICBjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKGNvbnRl
eHQpOworICAgIGNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMoY29udGV4dCwgaW5mby5wYXJhbWV0
ZXJDb3VudCk7CiAgICAgaW5mby5zdGFydE9mZnNldCA9IHBhcmFtZXRlcnNTdGFydDsKICAgICBp
bmZvLnN0YXJ0TGluZSA9IHRva2VuTGluZSgpOwotICAgIGluZm8ucGFyYW1ldGVyQ291bnQgPSA0
OyAvLyBnZW5lcmF0b3IsIHN0YXRlLCB2YWx1ZSwgcmVzdW1lIG1vZGUKIAogICAgIHsKICAgICAg
ICAgQXV0b1BvcFNjb3BlUmVmIGdlbmVyYXRvckJvZHlTY29wZSh0aGlzLCBwdXNoU2NvcGUoKSk7
CkBAIC0xODk4LDMyICsxODk3LDMwIEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+IHRl
bXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlciwgY2xhc3MgRnVuY3Rpb25JbmZvVHlwCiB9CiAKIHRl
bXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+Ci10ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+
IHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpGb3JtYWxQYXJhbWV0ZXJMaXN0IFBhcnNlcjxMZXhlclR5
cGU+OjpjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKFRyZWVCdWlsZGVyJiBjb250ZXh0KQordGVt
cGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6Rm9ybWFsUGFy
YW1ldGVyTGlzdCBQYXJzZXI8TGV4ZXJUeXBlPjo6Y3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhU
cmVlQnVpbGRlciYgY29udGV4dCwgdW5zaWduZWQmIHBhcmFtZXRlckNvdW50KQogewogICAgIGF1
dG8gcGFyYW1ldGVycyA9IGNvbnRleHQuY3JlYXRlRm9ybWFsUGFyYW1ldGVyTGlzdCgpOwogCiAg
ICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CiAgICAgSlNUZXh0
UG9zaXRpb24gcG9zaXRpb24gPSB0b2tlblN0YXJ0UG9zaXRpb24oKTsKIAotICAgIC8vIEBnZW5l
cmF0b3IKLSAgICBkZWNsYXJlUGFyYW1ldGVyKCZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5idWlsdGlu
TmFtZXMoKS5nZW5lcmF0b3JQcml2YXRlTmFtZSgpKTsKLSAgICBhdXRvIGdlbmVyYXRvciA9IGNv
bnRleHQuY3JlYXRlQmluZGluZ0xvY2F0aW9uKGxvY2F0aW9uLCBtX3ZtLT5wcm9wZXJ0eU5hbWVz
LT5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JQcml2YXRlTmFtZSgpLCBwb3NpdGlvbiwgcG9zaXRp
b24sIEFzc2lnbm1lbnRDb250ZXh0OjpEZWNsYXJhdGlvblN0YXRlbWVudCk7Ci0gICAgY29udGV4
dC5hcHBlbmRQYXJhbWV0ZXIocGFyYW1ldGVycywgZ2VuZXJhdG9yLCAwKTsKKyAgICBhdXRvIGFk
ZFBhcmFtZXRlciA9IFsmXShjb25zdCBJZGVudGlmaWVyJiBuYW1lKSB7CisgICAgICAgIGRlY2xh
cmVQYXJhbWV0ZXIoJm5hbWUpOworICAgICAgICBhdXRvIGJpbmRpbmcgPSBjb250ZXh0LmNyZWF0
ZUJpbmRpbmdMb2NhdGlvbihsb2NhdGlvbiwgbmFtZSwgcG9zaXRpb24sIHBvc2l0aW9uLCBBc3Np
Z25tZW50Q29udGV4dDo6RGVjbGFyYXRpb25TdGF0ZW1lbnQpOworICAgICAgICBjb250ZXh0LmFw
cGVuZFBhcmFtZXRlcihwYXJhbWV0ZXJzLCBiaW5kaW5nLCAwKTsKKyAgICAgICAgKytwYXJhbWV0
ZXJDb3VudDsKKyAgICB9OwogCisgICAgLy8gQGdlbmVyYXRvcgorICAgIGFkZFBhcmFtZXRlciht
X3ZtLT5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JQcml2YXRlTmFtZSgp
KTsKICAgICAvLyBAZ2VuZXJhdG9yU3RhdGUKLSAgICBkZWNsYXJlUGFyYW1ldGVyKCZtX3ZtLT5w
cm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JTdGF0ZVByaXZhdGVOYW1lKCkp
OwotICAgIGF1dG8gZ2VuZXJhdG9yU3RhdGUgPSBjb250ZXh0LmNyZWF0ZUJpbmRpbmdMb2NhdGlv
bihsb2NhdGlvbiwgbV92bS0+cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9y
U3RhdGVQcml2YXRlTmFtZSgpLCBwb3NpdGlvbiwgcG9zaXRpb24sIEFzc2lnbm1lbnRDb250ZXh0
OjpEZWNsYXJhdGlvblN0YXRlbWVudCk7Ci0gICAgY29udGV4dC5hcHBlbmRQYXJhbWV0ZXIocGFy
YW1ldGVycywgZ2VuZXJhdG9yU3RhdGUsIDApOwotCisgICAgYWRkUGFyYW1ldGVyKG1fdm0tPnBy
b3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclN0YXRlUHJpdmF0ZU5hbWUoKSk7
CiAgICAgLy8gQGdlbmVyYXRvclZhbHVlCi0gICAgZGVjbGFyZVBhcmFtZXRlcigmbV92bS0+cHJv
cGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yVmFsdWVQcml2YXRlTmFtZSgpKTsK
LSAgICBhdXRvIGdlbmVyYXRvclZhbHVlID0gY29udGV4dC5jcmVhdGVCaW5kaW5nTG9jYXRpb24o
bG9jYXRpb24sIG1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclZh
bHVlUHJpdmF0ZU5hbWUoKSwgcG9zaXRpb24sIHBvc2l0aW9uLCBBc3NpZ25tZW50Q29udGV4dDo6
RGVjbGFyYXRpb25TdGF0ZW1lbnQpOwotICAgIGNvbnRleHQuYXBwZW5kUGFyYW1ldGVyKHBhcmFt
ZXRlcnMsIGdlbmVyYXRvclZhbHVlLCAwKTsKLQorICAgIGFkZFBhcmFtZXRlcihtX3ZtLT5wcm9w
ZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JWYWx1ZVByaXZhdGVOYW1lKCkpOwog
ICAgIC8vIEBnZW5lcmF0b3JSZXN1bWVNb2RlCi0gICAgZGVjbGFyZVBhcmFtZXRlcigmbV92bS0+
cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yUmVzdW1lTW9kZVByaXZhdGVO
YW1lKCkpOwotICAgIGF1dG8gZ2VuZXJhdG9yUmVzdW1lTW9kZSA9IGNvbnRleHQuY3JlYXRlQmlu
ZGluZ0xvY2F0aW9uKGxvY2F0aW9uLCBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMo
KS5nZW5lcmF0b3JSZXN1bWVNb2RlUHJpdmF0ZU5hbWUoKSwgcG9zaXRpb24sIHBvc2l0aW9uLCBB
c3NpZ25tZW50Q29udGV4dDo6RGVjbGFyYXRpb25TdGF0ZW1lbnQpOwotICAgIGNvbnRleHQuYXBw
ZW5kUGFyYW1ldGVyKHBhcmFtZXRlcnMsIGdlbmVyYXRvclJlc3VtZU1vZGUsIDApOworICAgIGFk
ZFBhcmFtZXRlcihtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JS
ZXN1bWVNb2RlUHJpdmF0ZU5hbWUoKSk7CisgICAgLy8gQGdlbmVyYXRvckZyYW1lCisgICAgYWRk
UGFyYW1ldGVyKG1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvckZy
YW1lUHJpdmF0ZU5hbWUoKSk7CiAKICAgICByZXR1cm4gcGFyYW1ldGVyczsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCmluZGV4IDRmYTIyZmFhNDk5YTA3Y2EzYWZjMWU4ZGE1
ODFiY2ExODhhYWQ4YTEuLjE0ODM1MTBjYmZlYzY1YzM2YjM5NDIxZGY3ZDlkYmY5MDE3YzY4YmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaApAQCAtMTQyMSw3ICsxNDIxLDcg
QEAgY2xhc3MgUGFyc2VyIHsKICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNBcnJvd0Z1bmN0aW9u
UGFyYW1ldGVycygpOwogICAgIAogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlciwgY2xh
c3MgRnVuY3Rpb25JbmZvVHlwZT4gTkVWRVJfSU5MSU5FIHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpG
b3JtYWxQYXJhbWV0ZXJMaXN0IHBhcnNlRnVuY3Rpb25QYXJhbWV0ZXJzKFRyZWVCdWlsZGVyJiwg
U291cmNlUGFyc2VNb2RlLCBGdW5jdGlvbkluZm9UeXBlJik7Ci0gICAgdGVtcGxhdGUgPGNsYXNz
IFRyZWVCdWlsZGVyPiBORVZFUl9JTkxJTkUgdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkZvcm1hbFBh
cmFtZXRlckxpc3QgY3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhUcmVlQnVpbGRlciYpOworICAg
IHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gTkVWRVJfSU5MSU5FIHR5cGVuYW1lIFRyZWVC
dWlsZGVyOjpGb3JtYWxQYXJhbWV0ZXJMaXN0IGNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMoVHJl
ZUJ1aWxkZXImLCB1bnNpZ25lZCYgcGFyYW1ldGVyQ291bnQpOwogCiAgICAgdGVtcGxhdGUgPGNs
YXNzIFRyZWVCdWlsZGVyPiBORVZFUl9JTkxJTkUgVHJlZUNsYXNzRXhwcmVzc2lvbiBwYXJzZUNs
YXNzKFRyZWVCdWlsZGVyJiwgRnVuY3Rpb25SZXF1aXJlbWVudHMsIFBhcnNlckNsYXNzSW5mbzxU
cmVlQnVpbGRlcj4mKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29tbW9uU2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bW1vblNsb3dQYXRocy5jcHAKaW5kZXggYTliNzU1ZTZjOWFlOWI5OGE2MjI5MzU0NmVlNTdjYTgx
ZWM5YzMyYy4uMmU4NjhkY2IyZDcxZmU3Y2YyOGU5NTBmMDVjNzU4YmE4MDVjYzMyNiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCkBA
IC0zNyw3ICszNyw2IEBACiAjaW5jbHVkZSAiRXJyb3IuaCIKICNpbmNsdWRlICJFcnJvckhhbmRs
aW5nU2NvcGUuaCIKICNpbmNsdWRlICJFeGNlcHRpb25GdXp6LmgiCi0jaW5jbHVkZSAiR2VuZXJh
dG9yRnJhbWUuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJIb3N0Q2Fs
bFJldHVyblZhbHVlLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKQEAgLTc1MywzOCArNzUy
LDYgQEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2Fzc2VydCkKICAgICBFTkQoKTsKIH0KIAot
U0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3NhdmUpCi17Ci0gICAgLy8gT25seSBzYXZlIHZhcmlh
YmxlcyBhbmQgdGVtcG9yYXJ5IHJlZ2lzdGVycy4gVGhlIHNjb3BlIHJlZ2lzdGVycyBhcmUgaW5j
bHVkZWQgaW4gdGhlbS4KLSAgICAvLyBCdXQgcGFyYW1ldGVycyBhcmUgbm90IGluY2x1ZGVkLiBC
ZWNhdXNlIHRoZSBnZW5lcmF0b3IgaW1wbGVtZW50YXRpb24gcmVwbGFjZXMgdGhlIHZhbHVlcyBv
ZiBwYXJhbWV0ZXJzIG9uIGVhY2ggZ2VuZXJhdG9yLm5leHQoKSBjYWxsLgotICAgIEJFR0lOKCk7
Ci0gICAgSlNWYWx1ZSBnZW5lcmF0b3IgPSBPUCgxKS5qc1ZhbHVlKCk7Ci0gICAgR2VuZXJhdG9y
RnJhbWUqIGZyYW1lID0gbnVsbHB0cjsKLSAgICBKU1ZhbHVlIHZhbHVlID0gZ2VuZXJhdG9yLmdl
dChleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yRnJh
bWVQcml2YXRlTmFtZSgpKTsKLSAgICBpZiAoIXZhbHVlLmlzTnVsbCgpKQotICAgICAgICBmcmFt
ZSA9IGpzQ2FzdDxHZW5lcmF0b3JGcmFtZSo+KHZhbHVlKTsKLSAgICBlbHNlIHsKLSAgICAgICAg
Ly8gRklYTUU6IE9uY2UgSlNHZW5lcmF0b3Igc3BlY2lhbGl6ZWQgb2JqZWN0IGlzIGludHJvZHVj
ZWQsIHRoaXMgR2VuZXJhdG9yRnJhbWUgc2hvdWxkIGJlIGVtYmVkZWQgaW50byBpdCB0byBhdm9p
ZCBhbGxvY2F0aW9ucy4KLSAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE1MTU0NQotICAgICAgICBmcmFtZSA9IEdlbmVyYXRvckZyYW1lOjpjcmVhdGUo
ZXhlYy0+dm0oKSwgIGV4ZWMtPmNvZGVCbG9jaygpLT5udW1DYWxsZWVMb2NhbHMoKSk7Ci0gICAg
ICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGdlbmVyYXRvciwgdHJ1ZSwgUHV0UHJvcGVydHlTbG90
OjpQdXRCeUlkKTsKLSAgICAgICAgYXNPYmplY3QoZ2VuZXJhdG9yKS0+bWV0aG9kVGFibGUoZXhl
Yy0+dm0oKSktPnB1dChhc09iamVjdChnZW5lcmF0b3IpLCBleGVjLCBleGVjLT5wcm9wZXJ0eU5h
bWVzKCkuYnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yRnJhbWVQcml2YXRlTmFtZSgpLCBmcmFtZSwg
c2xvdCk7Ci0gICAgfQotICAgIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9IHBjWzJd
LnUudW5zaWduZWRWYWx1ZTsKLSAgICBmcmFtZS0+c2F2ZShleGVjLCBleGVjLT5jb2RlQmxvY2so
KS0+bGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQobGl2ZUNhbGxlZUxvY2Fsc0luZGV4KSk7Ci0gICAg
RU5EKCk7Ci19Ci0KLVNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9yZXN1bWUpCi17Ci0gICAgQkVH
SU4oKTsKLSAgICBKU1ZhbHVlIGdlbmVyYXRvciA9IE9QKDEpLmpzVmFsdWUoKTsKLSAgICBHZW5l
cmF0b3JGcmFtZSogZnJhbWUgPSBqc0Nhc3Q8R2VuZXJhdG9yRnJhbWUqPihnZW5lcmF0b3IuZ2V0
KGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JGcmFt
ZVByaXZhdGVOYW1lKCkpKTsKLSAgICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSBw
Y1syXS51LnVuc2lnbmVkVmFsdWU7Ci0gICAgZnJhbWUtPnJlc3VtZShleGVjLCBleGVjLT5jb2Rl
QmxvY2soKS0+bGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQobGl2ZUNhbGxlZUxvY2Fsc0luZGV4KSk7
Ci0gICAgRU5EKCk7Ci19Ci0KIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9jcmVhdGVfbGV4aWNh
bF9lbnZpcm9ubWVudCkKIHsKICAgICBCRUdJTigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAppbmRleCA2NDAxYTYxNGQ1NjExNjYzNTY5YjE4
YTAyNzJiMjhhYzM1Mjg2YTgyLi4zZDljMTVmNWFmMGM3NTdkZGExMDUzMzkxOTkwZjU0NjM4ODY4
MWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93
UGF0aHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0
aHMuaApAQCAtMjQ4LDggKzI0OCw2IEBAIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhf
bmV4dF9nZW5lcmljX2VudW1lcmF0b3JfcG5hbWUpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNs
b3dfcGF0aF90b19pbmRleF9zdHJpbmcpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0
aF9wcm9maWxlX3R5cGVfY2xlYXJfbG9nKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3Bh
dGhfYXNzZXJ0KTsKLVNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfc2F2ZSk7Ci1TTE9X
X1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3Jlc3VtZSk7CiBTTE9XX1BBVEhfSElEREVOX0RF
Q0woc2xvd19wYXRoX2NyZWF0ZV9sZXhpY2FsX2Vudmlyb25tZW50KTsKIFNMT1dfUEFUSF9ISURE
RU5fREVDTChzbG93X3BhdGhfcHVzaF93aXRoX3Njb3BlKTsKIFNMT1dfUEFUSF9ISURERU5fREVD
TChzbG93X3BhdGhfcmVzb2x2ZV9zY29wZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9HZW5lcmF0b3JGcmFtZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9HZW5lcmF0b3JGcmFtZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGVmNmVhN2ExMDAyNThjM2VjZTA0ZGFhYjQzYmRhYTg1MWVjOGY3MTUuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvR2VuZXJhdG9yRnJhbWUuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsOTcgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiR2VuZXJh
dG9yRnJhbWUuaCIKLQotI2luY2x1ZGUgIkNvZGVCbG9jay5oIgotI2luY2x1ZGUgIkhlYXBJdGVy
YXRpb25TY29wZS5oIgotI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCi0jaW5jbHVkZSAi
SlNDZWxsSW5saW5lcy5oIgotI2luY2x1ZGUgIlNsb3RWaXNpdG9ySW5saW5lcy5oIgotI2luY2x1
ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKLQotbmFtZXNwYWNlIEpTQyB7Ci0KLWNvbnN0IENsYXNz
SW5mbyBHZW5lcmF0b3JGcmFtZTo6c19pbmZvID0geyAiR2VuZXJhdG9yRnJhbWUiLCBudWxscHRy
LCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEdlbmVyYXRvckZyYW1lKSB9OwotCi1HZW5l
cmF0b3JGcmFtZTo6R2VuZXJhdG9yRnJhbWUoVk0mIHZtLCBzaXplX3QgbnVtYmVyT2ZDYWxsZWVM
b2NhbHMpCi0gICAgOiBCYXNlKHZtLCB2bS5nZW5lcmF0b3JGcmFtZVN0cnVjdHVyZS5nZXQoKSkK
LSAgICAsIG1fbnVtYmVyT2ZDYWxsZWVMb2NhbHMobnVtYmVyT2ZDYWxsZWVMb2NhbHMpCi17Ci19
Ci0KLXZvaWQgR2VuZXJhdG9yRnJhbWU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKLXsKLSAgICBC
YXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX251
bWJlck9mQ2FsbGVlTG9jYWxzOyArK2kpCi0gICAgICAgIGxvY2FsQXQoaSkuY2xlYXIoKTsKLX0K
LQotU3RydWN0dXJlKiBHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCi17Ci0gICAgcmV0
dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUlu
Zm8oQ2VsbFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKLX0KLQotR2VuZXJhdG9yRnJh
bWUqIEdlbmVyYXRvckZyYW1lOjpjcmVhdGUoVk0mIHZtLCBzaXplX3QgbnVtYmVyT2ZMb2NhbHMp
Ci17Ci0gICAgR2VuZXJhdG9yRnJhbWUqIHJlc3VsdCA9Ci0gICAgICAgIG5ldyAoCi0gICAgICAg
ICAgICBOb3ROdWxsLAotICAgICAgICAgICAgYWxsb2NhdGVDZWxsPEdlbmVyYXRvckZyYW1lPih2
bS5oZWFwLCBhbGxvY2F0aW9uU2l6ZUZvckxvY2FscyhudW1iZXJPZkxvY2FscykpKQotICAgICAg
ICBHZW5lcmF0b3JGcmFtZSh2bSwgbnVtYmVyT2ZMb2NhbHMpOwotICAgIHJlc3VsdC0+ZmluaXNo
Q3JlYXRpb24odm0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLXZvaWQgR2VuZXJhdG9yRnJh
bWU6OnNhdmUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlQ2FsbGVl
TG9jYWxzKQotewotICAgIC8vIE9ubHkgc2F2ZSBjYWxsZWUgbG9jYWxzLgotICAgIC8vIEV2ZXJ5
IHRpbWUgYSBnZW5lcmF0b3IgaXMgY2FsbGVkIChvciByZXN1bWVkKSwgcGFyYW1ldGVycyBzaG91
bGQgYmUgcmVwbGFjZWQuCi0gICAgQVNTRVJUKGxpdmVDYWxsZWVMb2NhbHMubnVtQml0cygpIDw9
IG1fbnVtYmVyT2ZDYWxsZWVMb2NhbHMpOwotICAgIGxpdmVDYWxsZWVMb2NhbHMuZm9yRWFjaFNl
dEJpdChbJl0oc2l6ZV90IGluZGV4KSB7Ci0gICAgICAgIGxvY2FsQXQoaW5kZXgpLnNldChleGVj
LT52bSgpLCB0aGlzLCBleGVjLT51bmNoZWNrZWRSKHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGlu
ZGV4KSkuanNWYWx1ZSgpKTsKLSAgICB9KTsKLX0KLQotdm9pZCBHZW5lcmF0b3JGcmFtZTo6cmVz
dW1lKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZUNhbGxlZUxvY2Fs
cykKLXsKLSAgICAvLyBPbmx5IHJlc3VtZSBjYWxsZWUgbG9jYWxzLgotICAgIC8vIEV2ZXJ5IHRp
bWUgYSBnZW5lcmF0b3IgaXMgY2FsbGVkIChvciByZXN1bWVkKSwgcGFyYW1ldGVycyBzaG91bGQg
YmUgcmVwbGFjZWQuCi0gICAgbGl2ZUNhbGxlZUxvY2Fscy5mb3JFYWNoU2V0Qml0KFsmXShzaXpl
X3QgaW5kZXgpIHsKLSAgICAgICAgZXhlYy0+dW5jaGVja2VkUih2aXJ0dWFsUmVnaXN0ZXJGb3JM
b2NhbChpbmRleCkpID0gbG9jYWxBdChpbmRleCkuZ2V0KCk7Ci0gICAgICAgIGxvY2FsQXQoaW5k
ZXgpLmNsZWFyKCk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgR2VuZXJhdG9yRnJhbWU6OnZpc2l0Q2hp
bGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKLXsKLSAgICBHZW5lcmF0
b3JGcmFtZSogdGhpc09iamVjdCA9IGpzQ2FzdDxHZW5lcmF0b3JGcmFtZSo+KGNlbGwpOwotICAg
IEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7Ci0gICAgLy8gU2luY2Ug
b25seSB0cnVlIGNlbGwgcG9pbnRlcnMgYXJlIHN0b3JlZCBhcyBhIGNlbGwsIHdlIGNhbiBzYWZl
bHkgbWFyayB0aGVtLgotICAgIHZpc2l0b3IuYXBwZW5kVmFsdWVzKHRoaXNPYmplY3QtPmxvY2Fs
cygpLCB0aGlzT2JqZWN0LT5tX251bWJlck9mQ2FsbGVlTG9jYWxzKTsKLX0KLQotfSAvLyBuYW1l
c3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5l
cmF0b3JGcmFtZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJh
bWUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2Q1NDViMTQ3ZGQ0YWJmYjJiYmI5
YjVhNzE5NGU4Zjc0ODQxYzQ5YS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGcmFtZS5o
CisrKyAvZGV2L251bGwKQEAgLTEsOTAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
NSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZu
ZGVmIEdlbmVyYXRvckZyYW1lX2gKLSNkZWZpbmUgR2VuZXJhdG9yRnJhbWVfaAotCi0jaW5jbHVk
ZSAiSlNDZWxsLmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RCaXRWZWN0b3IuaD4KLQotbmFtZXNwYWNl
IEpTQyB7Ci0KLWNsYXNzIEdlbmVyYXRvckZyYW1lIDogcHVibGljIEpTQ2VsbCB7Ci0gICAgZnJp
ZW5kIGNsYXNzIEpJVDsKLSNpZiBFTkFCTEUoREZHX0pJVCkKLSAgICBmcmllbmQgY2xhc3MgREZH
OjpTcGVjdWxhdGl2ZUpJVDsKLSAgICBmcmllbmQgY2xhc3MgREZHOjpKSVRDb21waWxlcjsKLSNl
bmRpZgotICAgIGZyaWVuZCBjbGFzcyBWTTsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIEpTQ2VsbCBC
YXNlOwotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IFN0cnVjdHVy
ZUlzSW1tb3J0YWwgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKLQotICAgIERFQ0xBUkVfRVhQT1JU
X0lORk87Ci0KLSAgICBzdGF0aWMgR2VuZXJhdG9yRnJhbWUqIGNyZWF0ZShWTSYsIHNpemVfdCBu
dW1iZXJPZkNhbGxlZUxvY2Fscyk7Ci0KLSAgICBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiBs
b2NhbHMoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxXcml0ZUJhcnJpZXJC
YXNlPFVua25vd24+Kj4oYml0d2lzZV9jYXN0PGNoYXIqPih0aGlzKSArIG9mZnNldE9mTG9jYWxz
KCkpOwotICAgIH0KLQotICAgIFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4mIGxvY2FsQXQoc2l6
ZV90IGluZGV4KQotICAgIHsKLSAgICAgICAgQVNTRVJUKGluZGV4IDwgbV9udW1iZXJPZkNhbGxl
ZUxvY2Fscyk7Ci0gICAgICAgIHJldHVybiBsb2NhbHMoKVtpbmRleF07Ci0gICAgfQotCi0gICAg
c3RhdGljIHNpemVfdCBvZmZzZXRPZkxvY2FscygpCi0gICAgewotICAgICAgICByZXR1cm4gV1RG
Ojpyb3VuZFVwVG9NdWx0aXBsZU9mPHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pPihzaXpl
b2YoR2VuZXJhdG9yRnJhbWUpKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgc2l6ZV90IGFsbG9jYXRp
b25TaXplRm9yTG9jYWxzKHVuc2lnbmVkIG51bWJlck9mTG9jYWxzKQotICAgIHsKLSAgICAgICAg
cmV0dXJuIG9mZnNldE9mTG9jYWxzKCkgKyBudW1iZXJPZkxvY2FscyAqIHNpemVvZihXcml0ZUJh
cnJpZXI8VW5rbm93bj4pOwotICAgIH0KLQotICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0
cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBwcm90b3R5cGUpOwotCi0gICAg
dm9pZCBzYXZlKEV4ZWNTdGF0ZSosIGNvbnN0IEZhc3RCaXRWZWN0b3ImIGxpdmVDYWxsZWVMb2Nh
bHMpOwotICAgIHZvaWQgcmVzdW1lKEV4ZWNTdGF0ZSosIGNvbnN0IEZhc3RCaXRWZWN0b3ImIGxp
dmVDYWxsZWVMb2NhbHMpOwotCi1wcml2YXRlOgotICAgIEdlbmVyYXRvckZyYW1lKFZNJiwgc2l6
ZV90IG51bWJlck9mQ2FsbGVlTG9jYWxzKTsKLQotICAgIHNpemVfdCBtX251bWJlck9mQ2FsbGVl
TG9jYWxzOwotCi0gICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKLQotICAg
IHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKLQotcHJvdGVjdGVkOgotICAgIHN0YXRpYyB2b2lk
IHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKLX07Ci0KLX0gLy8gbmFtZXNw
YWNlIEpTQwotCi0jZW5kaWYgLy8gR2VuZXJhdG9yRnJhbWVfaApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0b3JGdW5jdGlvbi5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0b3JGdW5jdGlvbi5oCmluZGV4IDM2ZjYxYzVm
MjBmNTZiZWZkNmM1NTc4NDJiMTllMzliMTlhM2E5MTkuLmExY2JhZDk0NmRjNTY4MjllZDFhMjE1
NTc5MGI0NDBhOGRmNDMwMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2VuZXJhdG9yRnVuY3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dlbmVyYXRvckZ1bmN0aW9uLmgKQEAgLTU1LDYgKzU1LDE2IEBAIGNsYXNzIEpTR2Vu
ZXJhdG9yRnVuY3Rpb24gOiBwdWJsaWMgSlNGdW5jdGlvbiB7CiAgICAgICAgIEV4ZWN1dGluZyA9
IC0yLAogICAgIH07CiAKKyAgICAvLyBbdGhpc10sIEBnZW5lcmF0b3IsIEBnZW5lcmF0b3JTdGF0
ZSwgQGdlbmVyYXRvclZhbHVlLCBAZ2VuZXJhdG9yUmVzdW1lTW9kZSwgQGdlbmVyYXRvckZyYW1l
LgorICAgIGVudW0gY2xhc3MgR2VuZXJhdG9yQXJndW1lbnQgOiBpbnQzMl90IHsKKyAgICAgICAg
VGhpc1ZhbHVlID0gMCwKKyAgICAgICAgR2VuZXJhdG9yID0gMSwKKyAgICAgICAgU3RhdGUgPSAy
LAorICAgICAgICBWYWx1ZSA9IDMsCisgICAgICAgIFJlc3VtZU1vZGUgPSA0LAorICAgICAgICBG
cmFtZSA9IDUsCisgICAgfTsKKwogICAgIGNvbnN0IHN0YXRpYyB1bnNpZ25lZCBTdHJ1Y3R1cmVG
bGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwogCiAgICAgREVDTEFSRV9FWFBPUlRfSU5GTzsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCA4ODEzMWJmNWIzMDkwYWJkYWU0
Yjk5NDUxYjQxNzFjYjVmZTJjNDVjLi5jMzAxMjJjNWFmMzNjODA3ZmU5YTY1YTE4ZmU2Zjg1NDcw
ZWQwYTZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC00Niw3ICs0Niw2
IEBACiAjaW5jbHVkZSAiRlRMVGh1bmtzLmgiCiAjaW5jbHVkZSAiRnVuY3Rpb25Db25zdHJ1Y3Rv
ci5oIgogI2luY2x1ZGUgIkdDQWN0aXZpdHlDYWxsYmFjay5oIgotI2luY2x1ZGUgIkdlbmVyYXRv
ckZyYW1lLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiSGVhcC5oIgog
I2luY2x1ZGUgIkhlYXBJdGVyYXRpb25TY29wZS5oIgpAQCAtMjQwLDcgKzIzOSw2IEBAIFZNOjpW
TShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICBpbmZlcnJlZFR5cGVTdHJ1
Y3R1cmUuc2V0KCp0aGlzLCBJbmZlcnJlZFR5cGU6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwg
anNOdWxsKCkpKTsKICAgICBpbmZlcnJlZFR5cGVUYWJsZVN0cnVjdHVyZS5zZXQoKnRoaXMsIElu
ZmVycmVkVHlwZVRhYmxlOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAg
ICAgZnVuY3Rpb25SYXJlRGF0YVN0cnVjdHVyZS5zZXQoKnRoaXMsIEZ1bmN0aW9uUmFyZURhdGE6
OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKLSAgICBnZW5lcmF0b3JGcmFt
ZVN0cnVjdHVyZS5zZXQoKnRoaXMsIEdlbmVyYXRvckZyYW1lOjpjcmVhdGVTdHJ1Y3R1cmUoKnRo
aXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgZXhjZXB0aW9uU3RydWN0dXJlLnNldCgqdGhpcywgRXhj
ZXB0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgcHJvbWlz
ZURlZmVycmVkU3RydWN0dXJlLnNldCgqdGhpcywgSlNQcm9taXNlRGVmZXJyZWQ6OmNyZWF0ZVN0
cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICBpbnRlcm5hbFByb21pc2VEZWZlcnJl
ZFN0cnVjdHVyZS5zZXQoKnRoaXMsIEpTSW50ZXJuYWxQcm9taXNlRGVmZXJyZWQ6OmNyZWF0ZVN0
cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ZNLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5o
CmluZGV4IDU5MzgyMTcwYWIyNzMyYTZmZDIzYTVlMjc5NjQ1YzMxNzUwNGZlMjQuLjU0MjhhZTVh
M2M2NGUzZDE4ZDNjNjY4MDExMzk0NzVjNjU3MmFhNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVk0uaApAQCAtMzIwLDcgKzMyMCw2IEBAIGNsYXNzIFZNIDogcHVibGljIFRocmVhZFNhZmVS
ZWZDb3VudGVkPFZNPiB7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gaW5mZXJyZWRUeXBlU3RydWN0
dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGluZmVycmVkVHlwZVRhYmxlU3RydWN0dXJlOwog
ICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGZ1bmN0aW9uUmFyZURhdGFTdHJ1Y3R1cmU7Ci0gICAgU3Ry
b25nPFN0cnVjdHVyZT4gZ2VuZXJhdG9yRnJhbWVTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVj
dHVyZT4gZXhjZXB0aW9uU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHByb21pc2VE
ZWZlcnJlZFN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBpbnRlcm5hbFByb21pc2VE
ZWZlcnJlZFN0cnVjdHVyZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CmluZGV4IDMyNTM2YmYzYmRhOWI0MzgwMzBhZDY1YmUyNDUzZmE4Yzk1MjA5ZGYuLmI3ZGY4M2Vl
MDgzMGQ4NDcxYzRiMGZiYzhiYjZhNGJkZTZhZThmNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
V1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dURi9XVEYueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMzM1LDYgKzMzNSw5IEBACiAJCUZFODkyNUIwMUQwMERB
RUMwMDQ2OTA3RSAvKiBJbmRlbnRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRkU4OTI1QUYxRDAwREFFQzAwNDY5MDdFIC8qIEluZGVudGVyLmggKi87
IH07CiAJCUZFREFDRDNEMTYzMEY4M0YwMEM2OTYzNCAvKiBTdGFja1N0YXRzLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFREFDRDNCMTYzMEY4M0Yw
MEM2OTYzNCAvKiBTdGFja1N0YXRzLmNwcCAqLzsgfTsKIAkJRkVEQUNEM0UxNjMwRjgzRjAwQzY5
NjM0IC8qIFN0YWNrU3RhdHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEZFREFDRDNDMTYzMEY4M0YwMEM2OTYzNCAvKiBTdGFja1N0YXRzLmggKi87IH07
CisJCUM4QjBFMUExRTAxQTQ4NkVCOTVFMEQxMSAvKiBJbmRleFNldC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzEzN0UxRDdEQkQ4NEFDMzhGQUU0RDM0
IC8qIEluZGV4U2V0LmggKi87IH07CisJCUM5MTZCOTc1RjAyRjRGN0U4QjRBQjEyRCAvKiBJbmRl
eE1hcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUI0
MzM4M0E1RDBCNDYzQzk0MzNEOTMzIC8qIEluZGV4TWFwLmggKi87IH07CisJCTRCMjY4MEREOUI5
NzQ0MDI4OTlFRDU3MiAvKiBJbmRleGVkQ29udGFpbmVySXRlcmF0b3IuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlDNjdDNTQyNTg5MzQ4RTI4NUI0OTY5
OSAvKiBJbmRleGVkQ29udGFpbmVySXRlcmF0b3IuaCAqLzsgfTsKIC8qIEVuZCBQQlhCdWlsZEZp
bGUgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhDb250YWluZXJJdGVtUHJveHkgc2VjdGlvbiAq
LwpAQCAtNjgyLDYgKzY4NSw5IEBACiAJCUZFODkyNUFGMUQwMERBRUMwMDQ2OTA3RSAvKiBJbmRl
bnRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmRlbnRlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRURBQ0QzQjE2MzBGODNGMDBDNjk2MzQgLyogU3Rh
Y2tTdGF0cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdGFja1N0
YXRzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkVEQUNEM0MxNjMwRjgzRjAw
QzY5NjM0IC8qIFN0YWNrU3RhdHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U3RhY2tTdGF0cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMTM3RTFEN0RCRDg0
QUMzOEZBRTREMzQgLyogSW5kZXhTZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gSW5kZXhTZXQuaDsgcGF0aCA9IEluZGV4U2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTVCNDMzODNBNUQwQjQ2M0M5NDMzRDkzMyAvKiBJbmRleE1hcC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBJbmRleE1hcC5oOyBwYXRoID0gSW5kZXhNYXAuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOUM2N0M1NDI1ODkzNDhFMjg1QjQ5Njk5IC8qIElu
ZGV4ZWRDb250YWluZXJJdGVyYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBJbmRleGVkQ29udGFpbmVySXRlcmF0b3IuaDsgcGF0aCA9IEluZGV4ZWRDb250YWluZXJJdGVy
YXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogLyogRW5kIFBCWEZpbGVSZWZlcmVu
Y2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZSBzZWN0aW9u
ICovCkBAIC0xMDQxLDYgKzEwNDcsOSBAQAogCQkJCUU0QTBBRDM4MUE5NjI0NTUwMDUzNkRGNiAv
KiBXb3JrUXVldWUuaCAqLywKIAkJCQlBOEE0NzM3QTE1MUE4MjVCMDA0MTIzRkYgLyogV1RGVGhy
ZWFkRGF0YS5jcHAgKi8sCiAJCQkJQThBNDczN0IxNTFBODI1QjAwNDEyM0ZGIC8qIFdURlRocmVh
ZERhdGEuaCAqLywKKwkJCQkzMTM3RTFEN0RCRDg0QUMzOEZBRTREMzQgLyogSW5kZXhTZXQuaCAq
LywKKwkJCQk1QjQzMzgzQTVEMEI0NjNDOTQzM0Q5MzMgLyogSW5kZXhNYXAuaCAqLywKKwkJCQk5
QzY3QzU0MjU4OTM0OEUyODVCNDk2OTkgLyogSW5kZXhlZENvbnRhaW5lckl0ZXJhdG9yLmggKi8s
CiAJCQkpOwogCQkJcGF0aCA9IHd0ZjsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0x
NDM5LDYgKzE0NDgsOSBAQAogCQkJCUE4QTQ3NDQ2MTUxQTgyNUIwMDQxMjNGRiAvKiBXVEZTdHJp
bmcuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4QTQ3NDg3MTUxQTgyNUIwMDQxMjNGRiAvKiBXVEZU
aHJlYWREYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRTczRTAyNTE5RENCN0FCMDA1ODBENUMg
LyogWFBDU1BJLmggaW4gSGVhZGVycyAqLywKKwkJCQlDOEIwRTFBMUUwMUE0ODZFQjk1RTBEMTEg
LyogSW5kZXhTZXQuaCBpbiBIZWFkZXJzICovLAorCQkJCUM5MTZCOTc1RjAyRjRGN0U4QjRBQjEy
RCAvKiBJbmRleE1hcC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNEIyNjgwREQ5Qjk3NDQwMjg5OUVE
NTcyIC8qIEluZGV4ZWRDb250YWluZXJJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwog
CQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XVEYvd3RmL0NNYWtl
TGlzdHMudHh0CmluZGV4IDZjYTg5M2Q1YjI1MDI3ZDI3OTNjZmM5NjFlM2ViZDRmYmU3NjgyN2Qu
Ljg2Nzk5OWVhOTI4NmI5NTNmMTMzNzA5YjZkZTQ5MDA1ZTA0YzE0YWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlz
dHMudHh0CkBAIC00NSw2ICs0NSwxMCBAQCBzZXQoV1RGX0hFQURFUlMKICAgICBIYXNoVGFibGUu
aAogICAgIEhhc2hUcmFpdHMuaAogICAgIEhleE51bWJlci5oCisgICAgSW5kZXhNYXAuaAorICAg
IEluZGV4U2V0LmgKKyAgICBJbmRleFNwYXJzZVNldC5oCisgICAgSW5kZXhlZENvbnRhaW5lckl0
ZXJhdG9yLmgKICAgICBJdGVyYXRvckFkYXB0b3JzLmgKICAgICBJdGVyYXRvclJhbmdlLmgKICAg
ICBMaXN0SGFzaFNldC5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GYXN0Qml0VmVjdG9y
LmggYi9Tb3VyY2UvV1RGL3d0Zi9GYXN0Qml0VmVjdG9yLmgKaW5kZXggOThmZmY1Y2Y3MzUzZTZi
YzY3ZGE1YzU1OTQwY2NjZTRlNGIxNTZkMC4uZmYwMGI3YjU0ZDRhMGNmZjRiZWY3ZDAzODU0ZGU2
YjkwY2UxZGI5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRmFzdEJpdFZlY3Rvci5oCisr
KyBiL1NvdXJjZS9XVEYvd3RmL0Zhc3RCaXRWZWN0b3IuaApAQCAtMjMsOCArMjMsNyBAQAogICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCiAgKi8KIAotI2lmbmRlZiBGYXN0Qml0VmVjdG9yX2gKLSNkZWZpbmUgRmFz
dEJpdFZlY3Rvcl9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgPHN0cmluZy5oPgogI2luY2x1
ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CkBAIC0zNiwxMiArMzUsMTQgQEAgY2xhc3MgUHJpbnRTdHJl
YW07CiAKIGNsYXNzIEZhc3RCaXRWZWN0b3IgewogcHVibGljOgotICAgIEZhc3RCaXRWZWN0b3Io
KQotICAgICAgICA6IG1fYXJyYXkoMCkKLSAgICAgICAgLCBtX251bUJpdHMoMCkKKyAgICBGYXN0
Qml0VmVjdG9yKCkgPSBkZWZhdWx0OworCisgICAgRmFzdEJpdFZlY3RvcihGYXN0Qml0VmVjdG9y
JiYgb3RoZXIpCisgICAgICAgIDogbV9hcnJheShzdGQ6OmV4Y2hhbmdlKG90aGVyLm1fYXJyYXks
IG51bGxwdHIpKQorICAgICAgICAsIG1fbnVtQml0cyhzdGQ6OmV4Y2hhbmdlKG90aGVyLm1fbnVt
Qml0cywgMCkpCiAgICAgewogICAgIH0KLSAgICAKKwogICAgIEZhc3RCaXRWZWN0b3IoY29uc3Qg
RmFzdEJpdFZlY3RvciYgb3RoZXIpCiAgICAgICAgIDogbV9hcnJheSgwKQogICAgICAgICAsIG1f
bnVtQml0cygwKQpAQCAtMjAyLDEzICsyMDMsMTAgQEAgY2xhc3MgRmFzdEJpdFZlY3RvciB7CiAg
ICAgc3RhdGljIHNpemVfdCBhcnJheUxlbmd0aChzaXplX3QgbnVtQml0cykgeyByZXR1cm4gKG51
bUJpdHMgKyAzMSkgPj4gNTsgfQogICAgIHNpemVfdCBhcnJheUxlbmd0aCgpIGNvbnN0IHsgcmV0
dXJuIGFycmF5TGVuZ3RoKG1fbnVtQml0cyk7IH0KICAgICAKLSAgICB1aW50MzJfdCogbV9hcnJh
eTsgLy8gTm8sIHRoaXMgY2FuJ3QgYmUgYW4gc3RkOjp1bmlxdWVfcHRyPHVpbnQzMl90W10+Lgot
ICAgIHNpemVfdCBtX251bUJpdHM7CisgICAgdWludDMyX3QqIG1fYXJyYXkgeyBudWxscHRyIH07
IC8vIE5vLCB0aGlzIGNhbid0IGJlIGFuIHN0ZDo6dW5pcXVlX3B0cjx1aW50MzJfdFtdPi4KKyAg
ICBzaXplX3QgbV9udW1CaXRzIHsgMCB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV1RGCiAKIHVz
aW5nIFdURjo6RmFzdEJpdFZlY3RvcjsKLQotI2VuZGlmIC8vIEZhc3RCaXRWZWN0b3JfaAotCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9JbmRleE1hcC5oIGIvU291cmNlL1dURi93dGYvSW5k
ZXhNYXAuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4wMmQ2MTAxN2E0MTVjNDczOTE2YWI4MTY2OGMxNmIwMGJkZTUy
NDJiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvSW5kZXhNYXAuaApAQCAtMCww
ICsxLDgyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFj
ZSBXVEYgeworCisvLyBUaGlzIGlzIGEgbWFwIGZvciBrZXlzIHRoYXQgaGF2ZSBhbiBpbmRleCgp
LiBJdCdzIHN1cGVyIGVmZmljaWVudCBmb3IgQmFzaWNCbG9ja3MuIEl0J3Mgb25seQorLy8gZWZm
aWNpZW50IGZvciBWYWx1ZXMgaWYgeW91IGRvbid0IGNyZWF0ZSB0b28gbWFueSBvZiB0aGVzZSBt
YXBzLCBzaW5jZSBWYWx1ZXMgY2FuIGhhdmUgdmVyeQorLy8gc3BhcnNlIGluZGljZXMgYW5kIHRo
ZXJlIGFyZSBhIGxvdCBvZiBWYWx1ZXMuCisKK3RlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5h
bWUgVmFsdWU+CitjbGFzcyBJbmRleE1hcCB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgSW5kZXhN
YXAoc2l6ZV90IHNpemUgPSAwKQorICAgIHsKKyAgICAgICAgbV92ZWN0b3IuZmlsbChWYWx1ZSgp
LCBzaXplKTsKKyAgICB9CisKKyAgICB2b2lkIHJlc2l6ZShzaXplX3Qgc2l6ZSkKKyAgICB7Cisg
ICAgICAgIG1fdmVjdG9yLmZpbGwoVmFsdWUoKSwgc2l6ZSk7CisgICAgfQorCisgICAgdm9pZCBj
bGVhcigpCisgICAgeworICAgICAgICBtX3ZlY3Rvci5maWxsKFZhbHVlKCksIG1fdmVjdG9yLnNp
emUoKSk7CisgICAgfQorCisgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX3ZlY3Rv
ci5zaXplKCk7IH0KKworICAgIFZhbHVlJiBvcGVyYXRvcltdKHNpemVfdCBpbmRleCkKKyAgICB7
CisgICAgICAgIHJldHVybiBtX3ZlY3RvcltpbmRleF07CisgICAgfQorCisgICAgY29uc3QgVmFs
dWUmIG9wZXJhdG9yW10oc2l6ZV90IGluZGV4KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJu
IG1fdmVjdG9yW2luZGV4XTsKKyAgICB9CisgICAgCisgICAgVmFsdWUmIG9wZXJhdG9yW10oS2V5
KiBrZXkpCisgICAgeworICAgICAgICByZXR1cm4gbV92ZWN0b3Jba2V5LT5pbmRleCgpXTsKKyAg
ICB9CisgICAgCisgICAgY29uc3QgVmFsdWUmIG9wZXJhdG9yW10oS2V5KiBrZXkpIGNvbnN0Cisg
ICAgeworICAgICAgICByZXR1cm4gbV92ZWN0b3Jba2V5LT5pbmRleCgpXTsKKyAgICB9CisKK3By
aXZhdGU6CisgICAgVmVjdG9yPFZhbHVlPiBtX3ZlY3RvcjsKK307CisKK30gLy8gbmFtZXNwYWNl
IFdURgorCit1c2luZyBXVEY6OkluZGV4TWFwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
SW5kZXhTZXQuaCBiL1NvdXJjZS9XVEYvd3RmL0luZGV4U2V0LmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjFiZDA0
ZjJkMTVhYjZjZDJhNjljYzQ0NWI4ZDczNmIyMmMwNWI2OAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL0luZGV4U2V0LmgKQEAgLTAsMCArMSwxNjMgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lu
Y2x1ZGUgPHd0Zi9CaXRWZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvQ29tbWFQcmludGVyLmg+CisK
K25hbWVzcGFjZSBXVEYgeworCisvLyBUaGlzIGlzIGEgc2V0IGZvciB0aGluZ3MgdGhhdCBoYXZl
IGFuIGluZGV4KCkuIEl0J3Mgc3VwZXIgZWZmaWNpZW50IGZvciBCYXNpY0Jsb2Nrcy4gSXQncyBv
bmx5CisvLyBlZmZpY2llbnQgZm9yIFZhbHVlcyBpZiB5b3UgZG9uJ3QgY3JlYXRlIHRvbyBtYW55
IG9mIHRoZXNlIHNldHMsIHNpbmNlIFZhbHVlcyBjYW4gaGF2ZSB2ZXJ5IHNwYXJzZQorLy8gaW5k
aWNlcyBhbmQgdGhlcmUgYXJlIGEgbG90IG9mIFZhbHVlcy4KKworLy8gSWYgeW91IHdhbnQgYSBz
ZXQgb2YgQmFzaWNCbG9ja3MsIHlvdSBkbyBJbmRleFNldDxCYXNpY0Jsb2NrPi4gU28sIFQgPSBC
YXNpY0Jsb2NrLgordGVtcGxhdGU8dHlwZW5hbWUgVD4KK2NsYXNzIEluZGV4U2V0IHsKK3B1Ymxp
YzoKKyAgICBJbmRleFNldCgpCisgICAgeworICAgIH0KKworICAgIGJvb2wgYWRkKFQqIHZhbHVl
KQorICAgIHsKKyAgICAgICAgcmV0dXJuICFtX3NldC5zZXQodmFsdWUtPmluZGV4KCkpOworICAg
IH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEl0ZXJhYmxlPgorICAgIGJvb2wgYWRkQWxsKGNv
bnN0IEl0ZXJhYmxlJiBpdGVyYWJsZSkKKyAgICB7CisgICAgICAgIGJvb2wgcmVzdWx0ID0gZmFs
c2U7CisgICAgICAgIGZvciAoVCogdmFsdWUgOiBpdGVyYWJsZSkKKyAgICAgICAgICAgIHJlc3Vs
dCB8PSBhZGQodmFsdWUpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIGJv
b2wgcmVtb3ZlKFQqIHZhbHVlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fc2V0LmNsZWFyKHZh
bHVlLT5pbmRleCgpKTsKKyAgICB9CisKKyAgICBib29sIGNvbnRhaW5zKFQqIHZhbHVlKSBjb25z
dAorICAgIHsKKyAgICAgICAgaWYgKCF2YWx1ZSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgcmV0dXJuIG1fc2V0LmdldCh2YWx1ZS0+aW5kZXgoKSk7CisgICAgfQorCisgICAg
c2l6ZV90IHNpemUoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fc2V0LmJpdENvdW50
KCk7CisgICAgfQorCisgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJl
dHVybiAhc2l6ZSgpOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENvbGxlY3Rpb25U
eXBlPgorICAgIGNsYXNzIEl0ZXJhYmxlIHsKKyAgICBwdWJsaWM6CisgICAgICAgIEl0ZXJhYmxl
KGNvbnN0IENvbGxlY3Rpb25UeXBlJiBjb2xsZWN0aW9uLCBjb25zdCBCaXRWZWN0b3ImIHNldCkK
KyAgICAgICAgICAgIDogbV9jb2xsZWN0aW9uKGNvbGxlY3Rpb24pCisgICAgICAgICAgICAsIG1f
c2V0KHNldCkKKyAgICAgICAgeworICAgICAgICB9CisKKyAgICAgICAgY2xhc3MgaXRlcmF0b3Ig
eworICAgICAgICBwdWJsaWM6CisgICAgICAgICAgICBpdGVyYXRvcigpCisgICAgICAgICAgICAg
ICAgOiBtX2NvbGxlY3Rpb24obnVsbHB0cikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgaXRlcmF0b3IoY29uc3QgQ29sbGVjdGlvblR5cGUmIGNvbGxlY3Rpb24s
IEJpdFZlY3Rvcjo6aXRlcmF0b3IgaXRlcikKKyAgICAgICAgICAgICAgICA6IG1fY29sbGVjdGlv
bigmY29sbGVjdGlvbikKKyAgICAgICAgICAgICAgICAsIG1faXRlcihpdGVyKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBUKiBvcGVyYXRvciooKQorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBtX2NvbGxlY3Rpb24tPmF0KCptX2l0ZXIp
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpdGVyYXRvciYgb3BlcmF0b3IrKygpCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgKyttX2l0ZXI7CisgICAgICAgICAgICAgICAg
cmV0dXJuICp0aGlzOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBib29sIG9wZXJhdG9y
PT0oY29uc3QgaXRlcmF0b3ImIG90aGVyKSBjb25zdAorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIHJldHVybiBtX2l0ZXIgPT0gb3RoZXIubV9pdGVyOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgaXRlcmF0b3ImIG90aGVyKSBjb25zdAor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICBwcml2YXRlOgorICAgICAgICAgICAgY29uc3QgQ29s
bGVjdGlvblR5cGUqIG1fY29sbGVjdGlvbjsKKyAgICAgICAgICAgIEJpdFZlY3Rvcjo6aXRlcmF0
b3IgbV9pdGVyOworICAgICAgICB9OworCisgICAgICAgIGl0ZXJhdG9yIGJlZ2luKCkgY29uc3Qg
eyByZXR1cm4gaXRlcmF0b3IobV9jb2xsZWN0aW9uLCBtX3NldC5iZWdpbigpKTsgfQorICAgICAg
ICBpdGVyYXRvciBlbmQoKSBjb25zdCB7IHJldHVybiBpdGVyYXRvcihtX2NvbGxlY3Rpb24sIG1f
c2V0LmVuZCgpKTsgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgY29uc3QgQ29sbGVjdGlvblR5
cGUmIG1fY29sbGVjdGlvbjsKKyAgICAgICAgY29uc3QgQml0VmVjdG9yJiBtX3NldDsKKyAgICB9
OworCisgICAgLy8gRm9yIGJhc2ljIGJsb2NrcywgeW91IGRvOgorICAgIC8vIGluZGV4U2V0LnZh
bHVlcyhwcm9jZWR1cmUpOworICAgIC8vCisgICAgLy8gRm9yIHZhbHVlcywgeW91IGRvOgorICAg
IC8vIGluZGV4U2V0LnZhbHVlcyhwcm9jZWR1cmUudmFsdWVzKCkpOworICAgIHRlbXBsYXRlPHR5
cGVuYW1lIENvbGxlY3Rpb25UeXBlPgorICAgIEl0ZXJhYmxlPENvbGxlY3Rpb25UeXBlPiB2YWx1
ZXMoY29uc3QgQ29sbGVjdGlvblR5cGUmIGNvbGxlY3Rpb24pIGNvbnN0CisgICAgeworICAgICAg
ICByZXR1cm4gSXRlcmFibGU8Q29sbGVjdGlvblR5cGU+KGNvbGxlY3Rpb24sIGluZGljZXMoKSk7
CisgICAgfQorCisgICAgY29uc3QgQml0VmVjdG9yJiBpbmRpY2VzKCkgY29uc3QgeyByZXR1cm4g
bV9zZXQ7IH0KKworICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAorICAgIHsK
KyAgICAgICAgQ29tbWFQcmludGVyIGNvbW1hOworICAgICAgICBmb3IgKHNpemVfdCBpbmRleCA6
IGluZGljZXMoKSkKKyAgICAgICAgICAgIG91dC5wcmludChjb21tYSwgVDo6ZHVtcFByZWZpeCwg
aW5kZXgpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBCaXRWZWN0b3IgbV9zZXQ7Cit9OworCit9
IC8vIG5hbWVzcGFjZSBXVEYKKwordXNpbmcgV1RGOjpJbmRleFNldDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL0luZGV4ZWRDb250YWluZXJJdGVyYXRvci5oIGIvU291cmNlL1dURi93dGYv
SW5kZXhlZENvbnRhaW5lckl0ZXJhdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2U5YjllMzdhMTI0N2Q5MDdi
ZTgzMGM5ZDIwMTJmNzdhMWI3Mzc3MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L0luZGV4ZWRDb250YWluZXJJdGVyYXRvci5oCkBAIC0wLDAgKzEsODEgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aW5jbHVkZSA8dHlwZV90cmFpdHM+CisKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZTxjbGFz
cyBDb250YWluZXI+CitjbGFzcyBJbmRleGVkQ29udGFpbmVySXRlcmF0b3IgeworcHVibGljOgor
ICAgIEluZGV4ZWRDb250YWluZXJJdGVyYXRvcigpCisgICAgICAgIDogbV9jb250YWluZXIobnVs
bHB0cikKKyAgICAgICAgLCBtX2luZGV4KDApCisgICAgeworICAgIH0KKworICAgIEluZGV4ZWRD
b250YWluZXJJdGVyYXRvcihjb25zdCBDb250YWluZXImIGNvbnRhaW5lciwgdW5zaWduZWQgaW5k
ZXgpCisgICAgICAgIDogbV9jb250YWluZXIoJmNvbnRhaW5lcikKKyAgICAgICAgLCBtX2luZGV4
KGZpbmROZXh0KGluZGV4KSkKKyAgICB7CisgICAgfQorCisgICAgYXV0byBvcGVyYXRvciooKSAt
PiB0eXBlbmFtZSBzdGQ6OnJlc3VsdF9vZjxkZWNsdHlwZSgmQ29udGFpbmVyOjphdCkoY29uc3Qg
Q29udGFpbmVyLCB1bnNpZ25lZCk+Ojp0eXBlCisgICAgeworICAgICAgICByZXR1cm4gbV9jb250
YWluZXItPmF0KG1faW5kZXgpOworICAgIH0KKworICAgIEluZGV4ZWRDb250YWluZXJJdGVyYXRv
ciYgb3BlcmF0b3IrKygpCisgICAgeworICAgICAgICBtX2luZGV4ID0gZmluZE5leHQobV9pbmRl
eCArIDEpOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorCisgICAgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IEluZGV4ZWRDb250YWluZXJJdGVyYXRvciYgb3RoZXIpIGNvbnN0CisgICAgewor
ICAgICAgICBBU1NFUlQobV9jb250YWluZXIgPT0gb3RoZXIubV9jb250YWluZXIpOworICAgICAg
ICByZXR1cm4gbV9pbmRleCA9PSBvdGhlci5tX2luZGV4OworICAgIH0KKworICAgIGJvb2wgb3Bl
cmF0b3IhPShjb25zdCBJbmRleGVkQ29udGFpbmVySXRlcmF0b3ImIG90aGVyKSBjb25zdAorICAg
IHsKKyAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOworICAgIH0KKworcHJpdmF0ZToK
KyAgICB1bnNpZ25lZCBmaW5kTmV4dCh1bnNpZ25lZCBpbmRleCkKKyAgICB7CisgICAgICAgIHdo
aWxlIChpbmRleCA8IG1fY29udGFpbmVyLT5zaXplKCkgJiYgIW1fY29udGFpbmVyLT5hdChpbmRl
eCkpCisgICAgICAgICAgICBpbmRleCsrOworICAgICAgICByZXR1cm4gaW5kZXg7CisgICAgfQor
CisgICAgY29uc3QgQ29udGFpbmVyKiBtX2NvbnRhaW5lcjsKKyAgICB1bnNpZ25lZCBtX2luZGV4
OworfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxv
ZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDBmOTYyYjQwMzI5ZTYwNTdmYjRlNTQ3NGIxNjA2
MDM2NGZhMjE0YTEuLmI4OTA2MTQ2YTJhOWIxMzkwMDVjYzZiMDNjMzI5MWMyMTA0YmQ0M2YgMTAw
NjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjggQEAKKzIwMTYtMDgtMTkgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0RGR11bRlRMXSBJbXBsZW1lbnQgRVM2IEdlbmVyYXRvcnMgaW4g
REZHIC8gRlRMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNTI3MjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIHN0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQtYXJyYXkuanM6IEFkZGVkLgorICAgICAg
ICAoZmliKToKKyAgICAgICAgKiBzdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwtYW5kLW9iamVjdC5q
czogQWRkZWQuCisgICAgICAgIChmaWIpOgorICAgICAgICAqIHN0cmVzcy9nZW5lcmF0b3ItZmli
LWZ0bC1hbmQtc3RyaW5nLmpzOiBBZGRlZC4KKyAgICAgICAgKGZpYik6CisgICAgICAgICogc3Ry
ZXNzL2dlbmVyYXRvci1maWItZnRsLmpzOiBBZGRlZC4KKyAgICAgICAgKGZpYik6CisgICAgICAg
ICogc3RyZXNzL2dlbmVyYXRvci1mcmFtZS1lbXB0eS5qczogQWRkZWQuCisgICAgICAgIChzaG91
bGRUaHJvdyk6CisgICAgICAgIChzaG91bGRUaHJvdy5maWIpOgorICAgICAgICAqIHN0cmVzcy9n
ZW5lcmF0b3ItcmVkdWNlZC1zYXZlLXBvaW50LXB1dC10by1zY29wZS5qczogQWRkZWQuCisgICAg
ICAgIChzaG91bGRCZSk6CisgICAgICAgIChnZW4pOgorICAgICAgICAqIHN0cmVzcy9nZW5lcmF0
b3ItdHJhbnNmZXItcmVnaXN0ZXItYmV5b25kLW11dGlwbGUteWllbGRzLmpzOiBBZGRlZC4KKyAg
ICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKGdlbik6CisKIDIwMTYtMDgtMTkgIEJlbmphbWlu
IFBvdWxhaW4gIDxicG91bGFpbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10gQXJpdGhTcXJ0
IHNob3VsZCB3b3JrIHdpdGggYW55IGFyZ3VtZW50IHR5cGUKZGlmZiAtLWdpdCBhL0pTVGVzdHMv
c3RyZXNzL2dlbmVyYXRvci1maWItZnRsLWFuZC1hcnJheS5qcyBiL0pTVGVzdHMvc3RyZXNzL2dl
bmVyYXRvci1maWItZnRsLWFuZC1hcnJheS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZTkzOTgxMmZkYmFlYzZi
ODMyYmZkMDBmMjE1M2RlZjg0YmI3NTkyCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJl
c3MvZ2VuZXJhdG9yLWZpYi1mdGwtYW5kLWFycmF5LmpzCkBAIC0wLDAgKzEsMjMgQEAKKyhmdW5j
dGlvbiAoKSB7CisgICAgZnVuY3Rpb24gKmZpYigpCisgICAgeworICAgICAgICBsZXQgYSA9IDE7
CisgICAgICAgIGxldCBiID0gMTsKKyAgICAgICAgbGV0IGMgPSBbIDAgXTsKKyAgICAgICAgd2hp
bGUgKHRydWUpIHsKKyAgICAgICAgICAgIGNbMF0gPSBhOworICAgICAgICAgICAgeWllbGQgYzsK
KyAgICAgICAgICAgIFthLCBiXSA9IFtiLCBhICsgYl07CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICBsZXQgdmFsdWUgPSAwOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMWU0OyArK2kpIHsKKyAg
ICAgICAgbGV0IGYgPSBmaWIoKTsKKyAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDA7ICsr
aSkgeworICAgICAgICAgICAgdmFsdWUgPSBmLm5leHQoKS52YWx1ZTsKKyAgICAgICAgfQorICAg
ICAgICBpZiAodmFsdWVbMF0gIT09IDM1NDIyNDg0ODE3OTI2MjAwMDAwMCkKKyAgICAgICAgICAg
IHRocm93IG5ldyBFcnJvcihgYmFkIHZhbHVlOiR7cmVzdWx0fWApOworICAgIH0KK30oKSk7CmRp
ZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQtb2JqZWN0Lmpz
IGIvSlNUZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwtYW5kLW9iamVjdC5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42NjczNDBmMmVhNGM3NDM4YTJkMjA5YWE0MGQwNjc3ZTRhYjdkM2ZiCi0tLSAvZGV2L251
bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwtYW5kLW9iamVjdC5qcwpA
QCAtMCwwICsxLDIzIEBACisoZnVuY3Rpb24gKCkgeworICAgIGZ1bmN0aW9uICpmaWIoKQorICAg
IHsKKyAgICAgICAgbGV0IGEgPSAxOworICAgICAgICBsZXQgYiA9IDE7CisgICAgICAgIGxldCBj
ID0geyBmaWI6IDAgfTsKKyAgICAgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgICAgIGMuZmli
ID0gYTsKKyAgICAgICAgICAgIHlpZWxkIGM7CisgICAgICAgICAgICBbYSwgYl0gPSBbYiwgYSAr
IGJdOworICAgICAgICB9CisgICAgfQorCisgICAgbGV0IHZhbHVlID0gMDsKKyAgICBmb3IgKGxl
dCBpID0gMDsgaSA8IDFlNDsgKytpKSB7CisgICAgICAgIGxldCBmID0gZmliKCk7CisgICAgICAg
IGZvciAobGV0IGkgPSAwOyBpIDwgMTAwOyArK2kpIHsKKyAgICAgICAgICAgIHZhbHVlID0gZi5u
ZXh0KCkudmFsdWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHZhbHVlLmZpYiAhPT0gMzU0MjI0
ODQ4MTc5MjYyMDAwMDAwKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgdmFsdWU6
JHtyZXN1bHR9YCk7CisgICAgfQorfSgpKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2dl
bmVyYXRvci1maWItZnRsLWFuZC1zdHJpbmcuanMgYi9KU1Rlc3RzL3N0cmVzcy9nZW5lcmF0b3It
ZmliLWZ0bC1hbmQtc3RyaW5nLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQzOGFlNmFiMzM0NzA0NjgyMjg0OWY0
MzAwNGVhNWM0MDNlZWRhMjgKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9nZW5l
cmF0b3ItZmliLWZ0bC1hbmQtc3RyaW5nLmpzCkBAIC0wLDAgKzEsMjIgQEAKKyhmdW5jdGlvbiAo
KSB7CisgICAgZnVuY3Rpb24gKmZpYigpCisgICAgeworICAgICAgICBsZXQgYSA9IDE7CisgICAg
ICAgIGxldCBiID0gMTsKKyAgICAgICAgbGV0IGMgPSAiUmVzdWx0ISAiOworICAgICAgICB3aGls
ZSAodHJ1ZSkgeworICAgICAgICAgICAgeWllbGQgYyArIGE7CisgICAgICAgICAgICBbYSwgYl0g
PSBbYiwgYSArIGJdOworICAgICAgICB9CisgICAgfQorCisgICAgbGV0IHZhbHVlID0gMDsKKyAg
ICBmb3IgKGxldCBpID0gMDsgaSA8IDFlNDsgKytpKSB7CisgICAgICAgIGxldCBmID0gZmliKCk7
CisgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwOyArK2kpIHsKKyAgICAgICAgICAgIHZh
bHVlID0gZi5uZXh0KCkudmFsdWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHZhbHVlICE9PSBg
UmVzdWx0ISAzNTQyMjQ4NDgxNzkyNjIwMDAwMDBgKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKGBiYWQgdmFsdWU6JHtyZXN1bHR9YCk7CisgICAgfQorfSgpKTsKZGlmZiAtLWdpdCBhL0pT
VGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLmpzIGIvSlNUZXN0cy9zdHJlc3MvZ2VuZXJh
dG9yLWZpYi1mdGwuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzQwZTMzZGJjODY4YmVhN2E4OTNjOWVjMTZiNzc5
ZWMyNmJkYjE5YwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2dlbmVyYXRvci1m
aWItZnRsLmpzCkBAIC0wLDAgKzEsMjEgQEAKKyhmdW5jdGlvbiAoKSB7CisgICAgZnVuY3Rpb24g
KmZpYigpCisgICAgeworICAgICAgICBsZXQgYSA9IDE7CisgICAgICAgIGxldCBiID0gMTsKKyAg
ICAgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgICAgIHlpZWxkIGE7CisgICAgICAgICAgICBb
YSwgYl0gPSBbYiwgYSArIGJdOworICAgICAgICB9CisgICAgfQorCisgICAgbGV0IHZhbHVlID0g
MDsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDFlNDsgKytpKSB7CisgICAgICAgIGxldCBmID0g
ZmliKCk7CisgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwOyArK2kpIHsKKyAgICAgICAg
ICAgIHZhbHVlID0gZi5uZXh0KCkudmFsdWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHZhbHVl
ICE9PSAzNTQyMjQ4NDgxNzkyNjIwMDAwMDApCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
YGJhZCB2YWx1ZToke3Jlc3VsdH1gKTsKKyAgICB9Cit9KCkpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0
cy9zdHJlc3MvZ2VuZXJhdG9yLWZyYW1lLWVtcHR5LmpzIGIvSlNUZXN0cy9zdHJlc3MvZ2VuZXJh
dG9yLWZyYW1lLWVtcHR5LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU5ZTg4NTViZmFjM2M1NmRmOTI2YWJkNDI4
YzAxM2MzMzQxNjI3NDYKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9nZW5lcmF0
b3ItZnJhbWUtZW1wdHkuanMKQEAgLTAsMCArMSwzNCBAQAorZnVuY3Rpb24gc2hvdWxkVGhyb3co
ZnVuYywgZXJyb3JNZXNzYWdlKSB7CisgICAgdmFyIGVycm9yVGhyb3duID0gZmFsc2U7CisgICAg
dmFyIGVycm9yID0gbnVsbDsKKyAgICB0cnkgeworICAgICAgICBmdW5jKCk7CisgICAgfSBjYXRj
aCAoZSkgeworICAgICAgICBlcnJvclRocm93biA9IHRydWU7CisgICAgICAgIGVycm9yID0gZTsK
KyAgICB9CisgICAgaWYgKCFlcnJvclRocm93bikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdu
b3QgdGhyb3duJyk7CisgICAgaWYgKFN0cmluZyhlcnJvcikgIT09IGVycm9yTWVzc2FnZSkKKyAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgZXJyb3I6ICR7U3RyaW5nKGVycm9yKX1gKTsKK30K
Kworc2hvdWxkVGhyb3coZnVuY3Rpb24gKCkgeworICAgIGZ1bmN0aW9uICpmaWIoZmxhZykKKyAg
ICB7CisgICAgICAgIGxldCBhID0gMTsKKyAgICAgICAgbGV0IGIgPSAxOworICAgICAgICB5aWVs
ZCA0MjsKKyAgICAgICAgaWYgKGZsYWcpCisgICAgICAgICAgICByZXR1cm4gYzsKKyAgICAgICAg
bGV0IGMgPSA1MDA7CisgICAgfQorCisgICAgbGV0IHZhbHVlID0gMDsKKyAgICBmb3IgKGxldCBp
ID0gMDsgaSA8IDFlNDsgKytpKSB7CisgICAgICAgIGZvciAobGV0IHYgb2YgZmliKGZhbHNlKSkg
eworICAgICAgICB9CisgICAgfQorICAgIGZvciAobGV0IHYgb2YgZmliKHRydWUpKSB7CisgICAg
fQorfSwgYFJlZmVyZW5jZUVycm9yOiBDYW5ub3QgYWNjZXNzIHVuaW5pdGlhbGl6ZWQgdmFyaWFi
bGUuYCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItcmVkdWNlZC1zYXZl
LXBvaW50LXB1dC10by1zY29wZS5qcyBiL0pTVGVzdHMvc3RyZXNzL2dlbmVyYXRvci1yZWR1Y2Vk
LXNhdmUtcG9pbnQtcHV0LXRvLXNjb3BlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMwYzc1ZmE0OTE0M2MxN2Jl
MTRmMzI4MWUzZjY1NDM0ZjM1MTM5ZTgKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVz
cy9nZW5lcmF0b3ItcmVkdWNlZC1zYXZlLXBvaW50LXB1dC10by1zY29wZS5qcwpAQCAtMCwwICsx
LDI4IEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFj
dHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIHZhbHVlOiAk
e1N0cmluZyhhY3R1YWwpfWApOworfQorCitmdW5jdGlvbiBlcnJvcigpCit7CisgICAgdGhyb3cg
Im9rIjsKK30KKworZnVuY3Rpb24qIGdlbigpCit7CisgICAgdmFyIHZhbHVlID0gNDI7CisgICAg
dHJ5IHsKKyAgICAgICAgeWllbGQgMzAwOworICAgICAgICB2YWx1ZSA9IDUwMDsKKyAgICAgICAg
ZXJyb3IoKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIHlpZWxkIDQyOworICAgICAgICBy
ZXR1cm4gdmFsdWU7CisgICAgfQorICAgIHJldHVybiAyMDA7Cit9CisKK3ZhciBnID0gZ2VuKCk7
CitzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgMzAwKTsKK3Nob3VsZEJlKGcubmV4dCgpLnZhbHVl
LCA0Mik7CitzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgNTAwKTsKZGlmZiAtLWdpdCBhL0pTVGVz
dHMvc3RyZXNzL2dlbmVyYXRvci10cmFuc2Zlci1yZWdpc3Rlci1iZXlvbmQtbXV0aXBsZS15aWVs
ZHMuanMgYi9KU1Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItdHJhbnNmZXItcmVnaXN0ZXItYmV5b25k
LW11dGlwbGUteWllbGRzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZlMjA4ZjU4MTI5NmY5YWUwOGE2YmZiMzk4
YjQ4MjI1NzQyZDZiNzgKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9nZW5lcmF0
b3ItdHJhbnNmZXItcmVnaXN0ZXItYmV5b25kLW11dGlwbGUteWllbGRzLmpzCkBAIC0wLDAgKzEs
MTggQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0
dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcg
KyBhY3R1YWwpOworfQorCisKK2Z1bmN0aW9uICpnZW4oKQoreworICAgIHZhciB0ZXN0ID0gNDI7
CisgICAgeWllbGQgMzI7CisgICAgeWllbGQgMzM7CisgICAgeWllbGQgdGVzdDsKK30KKwordmFy
IGcgPSBnZW4oKTsKK3Nob3VsZEJlKGcubmV4dCgpLnZhbHVlLCAzMik7CitzaG91bGRCZShnLm5l
eHQoKS52YWx1ZSwgMzMpOworc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIDQyKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>286753</attachid>
            <date>2016-08-23 11:58:27 -0700</date>
            <delta_ts>2016-08-23 13:30:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-152723-20160823115628.patch</filename>
            <type>text/plain</type>
            <size>222705</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA0NzM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
ZDY1NWUwMzQwNGEzMTliZmI0MzgxM2MxOWU4NzdiNzQ0MDBhMmE3Li4xZmJlODVmM2RkNTlhMzBl
YmE1OTcxZmMzNzg1ZWQyZGY0ZGU0YzRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNjEgQEAKKzIwMTYtMDgtMjMgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0RGR11bRlRMXSBJbXBsZW1lbnQgRVM2IEdlbmVyYXRvcnMgaW4g
REZHIC8gRlRMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNTI3MjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUaGlzIHBhdGNoIGludHJvZHVjZXMgREZHIGFuZCBGVEwgc3VwcG9ydCBmb3IgRVM2IGdlbmVy
YXRvcnMuCisgICAgICAgIEVTNiBnZW5lcmF0b3IgaXMgY29tcGlsZWQgYnkgdGhlIEJ5dGVjb2Rl
R2VuZXJhdG9yLiBCdXQgYXQgdGhlIGxhc3QgcGhhc2UsIEJ5dGVjb2RlR2VuZXJhdG9yIHBlcmZv
cm1zICJnZW5lcmF0b3JpZmljYXRpb24iIG9udG8gdGhlIHVubGlua2VkIGNvZGUuCisgICAgICAg
IEluIEJ5dGVjb2RlR2VuZXJhdG9yIHBoYXNlLCB3ZSBpbnNlcnRlZCBzZXZlcmFsIHNwZWNpYWwg
bWFya2VycyBmb3IgdGhlIGdlbmVyYXRvcnMsIG9wX3NhdmUgYW5kIG9wX3Jlc3VtZS4KKyAgICAg
ICAgVGhlIG9wX3NhdmUsIG9wX3Jlc3VtZSwgYW5kIHRoZSBtZXJnZSBwb2ludCBibG9jayBhcmUg
Y29ubmVjdGVkIGFzIGZvbGxvd3MuCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBvcF9yZXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBeCisgICAgICAgIGVudHJ5IC0+IGdlbmVyYXRvciBzd2l0Y2ggLS0tLT4gb3Bfc2F2ZSAtPiBt
ZXJnZSBwb2ludCAtPiAuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBeCisgICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0t
LT4gb3BfcmVzdW1lIC0tLS0tKworCisgICAgICAgIEluIHRoZSBnZW5lcmF0b3JpZmljYXRpb24g
cGhhc2UsIHdlIHR1cm4gb3V0IHdoaWNoIHZhcmlhYmxlcyBzaG91bGQgYmUgc2F2ZWQgYW5kIHJl
c3VtZWQgYXQgZWFjaCBvcF9zYXZlIGFuZCBvcF9yZXN1bWUsIGFuZCBjb252ZXJ0IHRoZXNlIGJ5
dGVjb2RlcworICAgICAgICB0byB0aGUgc2VxdWVuY2VzIG9mIHRoZSBnZXRfZnJvbV9zY29wZSBh
bmQgcHV0X3RvX3Njb3BlLiBUaGUgcmVnaXN0ZXJzIGFyZSBzYXZlZCBhbmQgcmVzdW1lZCBvdmVy
IHRoZSBnZW5lcmF0b3IncyBuZXh0KCkgY2FsbHMgYnkgdXNpbmcgdGhpcyBzcGVjaWFsCisgICAg
ICAgIGdlbmVyYXRvciBmcmFtZSBzY29wZS4KKworICAgICAgICBJbiB0aGUgZ2VuZXJhdG9yaWZp
Y2F0aW9uIHBoYXNlLAorCisgICAgICAgIDEuIFdlIGNvbnN0cnVjdCB0aGUgQnl0ZWNvZGVHcmFw
aCBmcm9tIHRoZSB1bmxpbmtlZCBpbnN0cnVjdGlvbnMuIFRoaXMgY29uc3RydWN0cyB0aGUgYmFz
aWMgYmxvY2tzLCBhbmQgaXQgaXMgdXNlZCBpbiB0aGUgc3Vic2VxdWVudCBhbmFseXNpcy4KKyAg
ICAgICAgMi4gV2UgcGVyZm9ybSB0aGUgYW5hbHlzaXMgb250byB0aGUgdW5saW5rZWQgY29kZS4g
V2UgaGF2ZSAzIGFuYWx5c2lzOiB0aGUgbGl2ZW5lc3MgYW5hbHlzaXMsIHRoZSBzYXZlZCB2YXJp
YWJsZXMgYW5hbHlzaXMsIGFuZCB0aGUgcmVzdW1lZCB2YXJpYWJsZXMgYW5hbHlzaXMuCisgICAg
ICAgICAgIEZpcnN0LCBpbiB0aGUgbGl2ZW5lc3MgYW5hbHlzaXMsIHdlIGV4dHJhY3QgdGhlIGxp
dmUgdmFyaWFibGVzIGF0IGVhY2ggbWVyZ2UgcG9pbnQuIFRoZXNlIHZhcmlhYmxlcyBzaG91bGQg
YmUgY29uc2lkZXJlZCBhcyB0aGUgY29uc2VydmF0aXZlIHJlZ2lzdGVycworICAgICAgICAgICB0
byBiZSBzYXZlZCBhbmQgcmVzdW1lZCBhdCBlYWNoIHBvaW50LgorICAgICAgICAzLiBXZSBpbnNl
cnQgdGhlIGdldF9mcm9tX3Njb3BlIGFuZCBwdXRfdG9fc2NvcGUgYXQgZWFjaCBvcF9zYXZlIGFu
ZCBvcF9yZXN1bWUuIFdoaWNoIHJlZ2lzdGVycyBzaG91bGQgYmUgc2F2ZWQgYW5kIHJlc3VtZWQg
aXMgb2ZmZXJlZCBieSAoMikuCisgICAgICAgICAgIFRoZW4sIGNsaXAgdGhlIG9wX3NhdmUgYW5k
IG9wX3Jlc3VtZSB0aGVtc2VsdmVzLiBUaGV5IGFyZSBleGVjdXRlZCBpbiBhIGJhdGNoIG1hbm5l
ciBieSBCeXRlY29kZVJld3JpdGVyLiBTaW5jZSB0aGVzZSBtb2RpZmljYXRpb24gY2hhbmdlcyB0
aGUgYmFzaWMgYmxvY2tzCisgICAgICAgICAgIGFuZCBzaXplIG9mIHVubGlua2VkIGluc3RydWN0
aW9ucywgQnl0ZWNvZGVSZXdyaXRlciBhbHNvIHBlcmZvcm1zIHRoZSBvZmZzZXQgYWRqdXN0bWVu
dCBmb3IgVW5saW5rZWRDb2RlQmxvY2suIFNvLCB0aGlzIEJ5dGVjb2RlUmV3cml0ZXIgaXMgcGVy
Zm9ybWVkCisgICAgICAgICAgIG9udG8gdGhlIEJ5dGVjb2RlR3JhcGggaW5zdGVhZCBvZiBCeXRl
Y29kZUJhc2ljQmxvY2suIFRoZSByZWFzb24gd2h5IHdlIHRha2UgdGhpcyBkZXNpZ24gaXMgc2lt
cGxlOiB3ZSBkb24ndCB3YW50IHRvIG5ld2x5IGNyZWF0ZSB0aGUgYmFzaWMgYmxvY2tzIGFuZCBv
cGNvZGVzCisgICAgICAgICAgIGZvciB0aGlzIGVhcmx5IHBoYXNlIGxpa2UgREZHLiBJbnN0ZWFk
LCB3ZSBwZXJmb3JtIHRoZSBtb2RpZmljYXRpb24gYW5kIGFkanVzdG1lbnQgdG8gdGhlIHVubGlu
a2VkIGluc3RydWN0aW9ucyBhbmQgVW5saW5rZWRDb2RlQmxvY2sgaW4gYSBpbi1wbGFjZSBtYW5u
ZXIuCisKKyAgICAgICAgQWZ0ZXIgdGhhdCBwaGFzZSwgdGhlIGRhdGEgZmxvdyBvZiB0aGUgZ2Vu
ZXJhdG9yLXNhdmVkLWFuZC1yZXN1bWVkLXJlZ2lzdGVycyBhcmUgZXhwbGljaXRseSByZXByZXNl
bnRlZCBieSB0aGUgZ2V0X2Zyb21fc2NvcGUgYW5kIHB1dF90b19zY29wZS4KKyAgICAgICAgQW5k
IG9wX3NhdmUgYW5kIG9wX3Jlc3VtZSBhcmUgcmVtb3ZlZC4gU2luY2Ugd2UgdXNlIHRoZSBleGlz
dGluZyBieXRlY29kZXMsIERGRyBhbmQgRlRMIGNoYW5nZXMgYXJlIG5vdCBuZWNlc3NhcnkuCisg
ICAgICAgIFRoaXMgcGF0Y2ggYWxzbyBkcm9wcyBkYXRhIHN0cnVjdHVyZXMgYW5kIGltcGxlbWVu
dGF0aW9ucyBmb3IgdGhlIG9sZCBnZW5lcmF0b3IsIG9wX3Jlc3VtZSwgb3Bfc2F2ZSBpbXBsZW1l
bnRhdGlvbnMgYW5kIEdlbmVyYXRvckZyYW1lLgorCisgICAgICAgIE5vdGUgdGhhdCB0aGlzIHBh
dGNoIGRvZXMgbm90IGxldmVyYWdlIHRoZSByZWNlbnQgbXVsdGkgZW50cnlwb2ludHMgc3VwcG9y
dCBpbiBCMy4gQWZ0ZXIgdGhpcyBwYXRjaCBpcyBpbnRyb2R1Y2VkLCB3ZSB3aWxsIHN1Ym1pdCBh
IG5ldyBwYXRjaCB0aGF0IGxldmVyYWdlcyB0aGUgbXVsdGkKKyAgICAgICAgZW50cnlwb2ludHMg
Zm9yIGdlbmVyYXRvcidzIHJlc3VtZSBhbmQgc2VlcyB0aGUgcGVyZm9ybWFuY2UgZ2Fpbi4KKwor
ICAgICAgICBUT0RPOiBQZXJmIFRCQSBoZXJlLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6
CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBiMy9CM0Jhc2ljQmxvY2tVdGlscy5oOgorICAgICAgICAqIGIzL0IzQmxvY2tXb3Jr
bGlzdC5oOgorICAgICAgICAqIGIzL0IzQ0ZHLmg6CisgICAgICAgICogYjMvQjNEdXBsaWNhdGVU
YWlscy5jcHA6CisgICAgICAgICogYjMvQjNGaXhTU0EuY3BwOgorICAgICAgICAqIGIzL0IzRml4
U1NBLmg6CisgICAgICAgICogYjMvQjNJbmRleE1hcC5oOgorICAgICAgICAoSlNDOjpCMzo6SW5k
ZXhNYXA6OkluZGV4TWFwKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkluZGV4TWFwOjpy
ZXNpemUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6SW5kZXhNYXA6OmNsZWFyKTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkluZGV4TWFwOjpzaXplKTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6QjM6OkluZGV4TWFwOjpvcGVyYXRvcltdKTogRGVsZXRlZC4KKyAgICAgICAgKiBi
My9CM0luZGV4U2V0Lmg6CisgICAgICAgIChKU0M6OkIzOjpJbmRleFNldDo6SW5kZXhTZXQpOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6SW5kZXhTZXQ6OmFkZCk6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OkIzOjpJbmRleFNldDo6YWRkQWxsKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
QjM6OkluZGV4U2V0OjpyZW1vdmUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6SW5kZXhT
ZXQ6OmNvbnRhaW5zKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkluZGV4U2V0OjpzaXpl
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkluZGV4U2V0Ojppc0VtcHR5KTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6QjM6OkluZGV4U2V0OjpJdGVyYWJsZTo6SXRlcmFibGUpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpCMzo6SW5kZXhTZXQ6Okl0ZXJhYmxlOjppdGVyYXRvcjo6aXRl
cmF0b3IpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6SW5kZXhTZXQ6Okl0ZXJhYmxlOjpp
dGVyYXRvcjo6b3BlcmF0b3IqKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkluZGV4U2V0
OjpJdGVyYWJsZTo6aXRlcmF0b3I6Om9wZXJhdG9yKyspOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpCMzo6SW5kZXhTZXQ6Okl0ZXJhYmxlOjppdGVyYXRvcjo6b3BlcmF0b3I9PSk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OkIzOjpJbmRleFNldDo6SXRlcmFibGU6Oml0ZXJhdG9yOjpvcGVyYXRv
ciE9KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkluZGV4U2V0OjpJdGVyYWJsZTo6YmVn
aW4pOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6SW5kZXhTZXQ6Okl0ZXJhYmxlOjplbmQp
OiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6SW5kZXhTZXQ6OnZhbHVlcyk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OkIzOjpJbmRleFNldDo6aW5kaWNlcyk6IERlbGV0ZWQuCisgICAgICAg
IChKU0M6OkIzOjpJbmRleFNldDo6ZHVtcCk6IERlbGV0ZWQuCisgICAgICAgICogYjMvQjNMb3dl
clRvQWlyLmNwcDoKKyAgICAgICAgKiBiMy9CM1BoaUNoaWxkcmVuLmg6CisgICAgICAgICogYjMv
QjNQcm9jZWR1cmUuaDoKKyAgICAgICAgKEpTQzo6QjM6OlByb2NlZHVyZTo6aXRlcmF0b3I6Oml0
ZXJhdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OlByb2NlZHVyZTo6aXRlcmF0b3I6
Om9wZXJhdG9yKik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpQcm9jZWR1cmU6Oml0ZXJh
dG9yOjpvcGVyYXRvcisrKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OlByb2NlZHVyZTo6
aXRlcmF0b3I6Om9wZXJhdG9yPT0pOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6UHJvY2Vk
dXJlOjppdGVyYXRvcjo6b3BlcmF0b3IhPSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpQ
cm9jZWR1cmU6Oml0ZXJhdG9yOjpmaW5kTmV4dCk6IERlbGV0ZWQuCisgICAgICAgICogYjMvQjNS
ZWR1Y2VEb3VibGVUb0Zsb2F0LmNwcDoKKyAgICAgICAgKiBiMy9CM1JlZHVjZVN0cmVuZ3RoLmNw
cDoKKyAgICAgICAgKiBiMy9CM1NTQUNhbGN1bGF0b3IuaDoKKyAgICAgICAgKiBiMy9CM1VzZUNv
dW50cy5oOgorICAgICAgICAqIGIzL2Fpci9BaXJDb2RlLmg6CisgICAgICAgICogYjMvYWlyL0Fp
ckVsaW1pbmF0ZURlYWRDb2RlLmNwcDoKKyAgICAgICAgKiBiMy9haXIvQWlyRml4T2J2aW91c1Nw
aWxscy5jcHA6CisgICAgICAgICogYjMvYWlyL0FpckZpeFBhcnRpYWxSZWdpc3RlclN0YWxscy5j
cHA6CisgICAgICAgICogYjMvYWlyL0FpckdlbmVyYXRlLmNwcDoKKyAgICAgICAgKiBiMy9haXIv
QWlyR2VuZXJhdGlvbkNvbnRleHQuaDoKKyAgICAgICAgKiBiMy9haXIvQWlyTGl2ZW5lc3MuaDoK
KyAgICAgICAgKiBiMy9haXIvQWlyU3BpbGxFdmVyeXRoaW5nLmNwcDoKKyAgICAgICAgKiBidWls
dGlucy9HZW5lcmF0b3JQcm90b3R5cGUuanM6CisgICAgICAgIChnbG9iYWxQcml2YXRlLmdlbmVy
YXRvclJlc3VtZSk6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcDoK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVCYXNpY0Jsb2NrOjpjb21wdXRlQnl0ZWNvZGVCYXNpY0Js
b2Nrc0ludGVybmFsKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVCYXNpY0Jsb2NrOjpjb21wdXRl
Qnl0ZWNvZGVCYXNpY0Jsb2Nrcyk6CisgICAgICAgIChKU0M6OmxpbmtCbG9ja3MpOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2Nrcyk6IERlbGV0ZWQuCisg
ICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmg6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlQmFzaWNCbG9jazo6Ynl0ZWNvZGVPZmZzZXRzKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNv
ZGVCYXNpY0Jsb2NrOjpzdWNjZXNzb3JzKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVCYXNpY0Js
b2NrOjpwcmVkZWNlc3NvcnMpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUJhc2ljQmxvY2s6Omlu
ZGV4KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVCYXNpY0Jsb2NrOjphZGRTdWNjZXNzb3IpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUJhc2ljQmxvY2s6OmFkZFByZWRlY2Vzc29yKToKKyAgICAg
ICAgKiBieXRlY29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHA6IEFkZGVkLgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbjo6Qnl0ZWNvZGVHZW5lcmF0b3Jp
ZmljYXRpb24pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbjo6Z3Jh
cGgpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbjo6eWllbGRzKToK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb246OnN0b3JhZ2VGb3JHZW5l
cmF0b3JMb2NhbCk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckxpdmVuZXNzQW5hbHlzaXM6Okdl
bmVyYXRvckxpdmVuZXNzQW5hbHlzaXMpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JMaXZlbmVz
c0FuYWx5c2lzOjpjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6
R2VuZXJhdG9yTGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCk6
CisgICAgICAgIChKU0M6OkdlbmVyYXRvckxpdmVuZXNzQW5hbHlzaXM6OnJ1bik6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uOjpydW4pOgorICAgICAgICAoSlNDOjpw
ZXJmb3JtR2VuZXJhdG9yaWZpY2F0aW9uKToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUdl
bmVyYXRvcmlmaWNhdGlvbi5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzSW5saW5lcy5oLgorICAgICAgICAqIGJ5dGVj
b2RlL0J5dGVjb2RlR3JhcGguaDogQWRkZWQuCisgICAgICAgIChKU0M6OkJ5dGVjb2RlR3JhcGg6
OmNvZGVCbG9jayk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR3JhcGg6Omluc3RydWN0aW9ucyk6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR3JhcGg6OmJhc2ljQmxvY2tzSW5SZXZlcnNlT3JkZXIp
OgorICAgICAgICAoSlNDOjpCeXRlY29kZUdyYXBoOjpibG9ja0NvbnRhaW5zQnl0ZWNvZGVPZmZz
ZXQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdyYXBoOjpmaW5kQmFzaWNCbG9ja0ZvckJ5dGVj
b2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHcmFwaDo6ZmluZEJhc2ljQmxvY2tX
aXRoTGVhZGVyT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHcmFwaDo6c2l6ZSk6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR3JhcGg6OmF0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVH
cmFwaDo6b3BlcmF0b3JbXSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR3JhcGg6OmJlZ2luKToK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHcmFwaDo6ZW5kKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNv
ZGVHcmFwaDo6Zmlyc3QpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdyYXBoOjpsYXN0KToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVHcmFwaDxCbG9jaz46OkJ5dGVjb2RlR3JhcGgpOgorICAgICAg
ICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHA6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzKToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlRGVmc0ZvckJ5dGVj
b2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpjb21w
dXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVz
c0FuYWx5c2lzOjpydW5MaXZlbmVzc0ZpeHBvaW50KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVM
aXZlbmVzc0FuYWx5c2lzOjpnZXRMaXZlbmVzc0luZm9BdEJ5dGVjb2RlT2Zmc2V0KToKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlRnVsbExpdmVuZXNzKToK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlS2lsbHMpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmR1bXBSZXN1bHRzKToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlKToKKyAgICAgICAg
KEpTQzo6aXNWYWxpZFJlZ2lzdGVyRm9yTGl2ZW5lc3MpOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpnZXRMZWFkZXJPZmZzZXRGb3JCYXNpY0Jsb2NrKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
ZmluZEJhc2ljQmxvY2tXaXRoTGVhZGVyT2Zmc2V0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
YmxvY2tDb250YWluc0J5dGVjb2RlT2Zmc2V0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Zmlu
ZEJhc2ljQmxvY2tGb3JCeXRlY29kZU9mZnNldCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OnN0
ZXBPdmVySW5zdHJ1Y3Rpb24pOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpjb21wdXRlTG9jYWxM
aXZlbmVzc0ZvckJ5dGVjb2RlT2Zmc2V0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Y29tcHV0
ZUxvY2FsTGl2ZW5lc3NGb3JCbG9jayk6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUvQnl0
ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmg6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVMaXZl
bmVzc0FuYWx5c2lzSW5saW5lcy5oOgorICAgICAgICAoSlNDOjppc1ZhbGlkUmVnaXN0ZXJGb3JM
aXZlbmVzcyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlTGl2ZW5lc3NMb2NhbFByb3BhZ2F0aW9u
PERlcml2ZWRBbmFseXNpcz46OnN0ZXBPdmVySW5zdHJ1Y3Rpb24pOgorICAgICAgICAoSlNDOjpC
eXRlY29kZUxpdmVuZXNzTG9jYWxQcm9wYWdhdGlvbjxEZXJpdmVkQW5hbHlzaXM+Ojpjb21wdXRl
TG9jYWxMaXZlbmVzc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVM
aXZlbmVzc0xvY2FsUHJvcGFnYXRpb248RGVyaXZlZEFuYWx5c2lzPjo6Y29tcHV0ZUxvY2FsTGl2
ZW5lc3NGb3JCbG9jayk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlTGl2ZW5lc3NMb2NhbFByb3Bh
Z2F0aW9uPERlcml2ZWRBbmFseXNpcz46OmdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQp
OgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlUmV3cml0ZXIuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVSZXdyaXRlcjo6YWRqdXN0T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVSZXdyaXRlcjo6YXBwbHlNb2RpZmljYXRpb24pOgorICAgICAgICAoSlNDOjpCeXRl
Y29kZVJld3JpdGVyOjpleGVjdXRlKToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZVJld3Jp
dGVyLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpCeXRlY29kZVJld3JpdGVyOjpCeXRlY29kZVJl
d3JpdGVyKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVSZXdyaXRlcjo6aW5zZXJ0QWZ0ZXIpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZVJld3JpdGVyOjppbnNlcnRCZWZvcmUpOgorICAgICAgICAo
SlNDOjpCeXRlY29kZVJld3JpdGVyOjpyZW1vdmVCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlUmV3cml0ZXI6OmdyYXBoKToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZVVzZURl
Zi5oOgorICAgICAgICAoSlNDOjpjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAg
ICAgKEpTQzo6Y29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgICogYnl0ZWNv
ZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUp
OgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjpoYW5kbGVyRm9ySW5kZXgpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6
OnNocmlua1RvRml0KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjp2YWx1ZVByb2ZpbGVGb3JC
eXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bGl2ZW5lc3NBbmFseXNp
c1Nsb3cpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpD
b2RlQmxvY2s6OmlzQ29uc3RhbnRSZWdpc3RlckluZGV4KToKKyAgICAgICAgKEpTQzo6Q29kZUJs
b2NrOjpsaXZlbmVzc0FuYWx5c2lzKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpsaXZlQ2Fs
bGVlTG9jYWxzQXRZaWVsZCk6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUvSGFuZGxlcklu
Zm8uaDoKKyAgICAgICAgKEpTQzo6SGFuZGxlckluZm9CYXNlOjpoYW5kbGVyRm9ySW5kZXgpOgor
ICAgICAgICAqIGJ5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5jcHA6CisgICAgICAgIChKU0M6
OmdldEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpjb21wdXRl
UHJlY2lzZUp1bXBUYXJnZXRzSW50ZXJuYWwpOgorICAgICAgICAoSlNDOjpjb21wdXRlUHJlY2lz
ZUp1bXBUYXJnZXRzKToKKyAgICAgICAgKEpTQzo6cmVjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRz
KToKKyAgICAgICAgKEpTQzo6ZmluZEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAg
ICAgICAqIGJ5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5oOgorICAgICAgICAqIGJ5dGVjb2Rl
L1VubGlua2VkQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6
OmhhbmRsZXJGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJs
b2NrOjpoYW5kbGVyRm9ySW5kZXgpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6
YXBwbHlNb2RpZmljYXRpb24pOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2Nr
Lmg6CisgICAgICAgIChKU0M6OlVubGlua2VkU3RyaW5nSnVtcFRhYmxlOjpvZmZzZXRGb3JWYWx1
ZSk6CisgICAgICAgICogYnl0ZWNvZGUvVmlydHVhbFJlZ2lzdGVyLmg6CisgICAgICAgICogYnl0
ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVH
ZW5lcmF0b3I6OmdlbmVyYXRlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5
dGVjb2RlR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRD
b21wbGV4UG9wU2NvcGVzKToKKyAgICAgICAgKEpTQzo6cHJlcGFyZUp1bXBUYWJsZUZvclN0cmlu
Z1N3aXRjaCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0WWllbGRQb2lu
dCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0U2F2ZSk6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzdW1lKToKKyAgICAgICAgKiBieXRlY29t
cGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0
b3I6OmdlbmVyYXRvclN0YXRlUmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVy
YXRvcjo6Z2VuZXJhdG9yVmFsdWVSZWdpc3Rlcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2Vu
ZXJhdG9yOjpnZW5lcmF0b3JSZXN1bWVNb2RlUmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpCeXRl
Y29kZUdlbmVyYXRvcjo6Z2VuZXJhdG9yRnJhbWVSZWdpc3Rlcik6CisgICAgICAgICogZGZnL0RG
R09wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGdlbmVyYXRlLWJ5dGVjb2RlLWZpbGVzOgorICAg
ICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpTQzo6ZmluZEV4
Y2VwdGlvbkhhbmRsZXIpOgorICAgICAgICAoSlNDOjpHZXRDYXRjaEhhbmRsZXJGdW5jdG9yOjpv
cGVyYXRvcigpKToKKyAgICAgICAgKEpTQzo6VW53aW5kRnVuY3Rvcjo6b3BlcmF0b3IoKSk6Cisg
ICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaDoKKyAgICAgICAgKiBpbnRlcnByZXRl
ci9JbnRlcnByZXRlcklubGluZXMuaDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5oLgorICAgICAgICAoSlNDOjpJbnRlcnByZXRl
cjo6Z2V0T3Bjb2RlSUQpOgorICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpK
SVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MpOgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAg
ICAgKiBqaXQvSklUT3Bjb2Rlcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9zYXZl
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3Jlc3VtZSk6IERlbGV0ZWQu
CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc206CisgICAgICAgICogcGFy
c2VyL1BhcnNlci5jcHA6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUlu
bmVyKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlR2VuZXJhdG9yRnVu
Y3Rpb25Tb3VyY2VFbGVtZW50cyk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+Ojpj
cmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmg6Cisg
ICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpTTE9X
X1BBVEhfREVDTCk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMu
aDoKKyAgICAgICAgKiBydW50aW1lL0dlbmVyYXRvckZyYW1lLmNwcDogUmVtb3ZlZC4KKyAgICAg
ICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OkdlbmVyYXRvckZyYW1lKTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OmZpbmlzaENyZWF0aW9uKTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OmNyZWF0ZVN0cnVjdHVyZSk6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpjcmVhdGUpOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpHZW5lcmF0b3JGcmFtZTo6c2F2ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkdlbmVyYXRv
ckZyYW1lOjpyZXN1bWUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6
dmlzaXRDaGlsZHJlbik6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9HZW5lcmF0b3JGcmFt
ZS5oOiBSZW1vdmVkLgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6bG9jYWxzKTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OmxvY2FsQXQpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6b2Zmc2V0T2ZMb2NhbHMpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6YWxsb2NhdGlvblNpemVGb3JMb2NhbHMpOiBE
ZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNHZW5lcmF0b3JGdW5jdGlvbi5oOgorICAgICAg
ICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6Vk0pOgorICAgICAgICAqIHJ1
bnRpbWUvVk0uaDoKKwogMjAxNi0wOC0yMiAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9y
Zz4KIAogICAgICAgICBSZW5hbWUgQ3VzdG9tRWxlbWVudHNSZWdpc3RyeSB0byBDdXN0b21FbGVt
ZW50UmVnaXN0cnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dU
Ri9DaGFuZ2VMb2cKaW5kZXggMDUxNjFiMjEzY2QzYzQwYjRhMjMyZDYyMTc1YTBlYTFlNzQ2ODE0
Ni4uNmMyMDQyODdlMTQyNjg2ZmM3ZmQxNjU1OGE3ZDY4MjQ4NGIzNzU0ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSw0NiBAQAorMjAxNi0wOC0yMyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNv
bT4KKworICAgICAgICBbREZHXVtGVExdIEltcGxlbWVudCBFUzYgR2VuZXJhdG9ycyBpbiBERkcg
LyBGVEwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1
MjcyMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
V1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogd3RmL0NNYWtlTGlzdHMu
dHh0OgorICAgICAgICAqIHd0Zi9GYXN0Qml0VmVjdG9yLmg6CisgICAgICAgIChXVEY6OkZhc3RC
aXRWZWN0b3I6OkZhc3RCaXRWZWN0b3IpOgorICAgICAgICAqIHd0Zi9JbmRleE1hcC5oOiBDb3Bp
ZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNJbmRleE1hcC5oLgorICAgICAgICAo
V1RGOjpJbmRleE1hcDo6SW5kZXhNYXApOgorICAgICAgICAoV1RGOjpJbmRleE1hcDo6cmVzaXpl
KToKKyAgICAgICAgKFdURjo6SW5kZXhNYXA6OmNsZWFyKToKKyAgICAgICAgKFdURjo6SW5kZXhN
YXA6OnNpemUpOgorICAgICAgICAoV1RGOjpJbmRleE1hcDo6b3BlcmF0b3JbXSk6CisgICAgICAg
ICogd3RmL0luZGV4U2V0Lmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNJbmRleFNldC5oLgorICAgICAgICAoV1RGOjpJbmRleFNldDo6SW5kZXhTZXQpOgorICAgICAg
ICAoV1RGOjpJbmRleFNldDo6YWRkKToKKyAgICAgICAgKFdURjo6SW5kZXhTZXQ6OmFkZEFsbCk6
CisgICAgICAgIChXVEY6OkluZGV4U2V0OjpyZW1vdmUpOgorICAgICAgICAoV1RGOjpJbmRleFNl
dDo6Y29udGFpbnMpOgorICAgICAgICAoV1RGOjpJbmRleFNldDo6c2l6ZSk6CisgICAgICAgIChX
VEY6OkluZGV4U2V0Ojppc0VtcHR5KToKKyAgICAgICAgKFdURjo6SW5kZXhTZXQ6Okl0ZXJhYmxl
OjpJdGVyYWJsZSk6CisgICAgICAgIChXVEY6OkluZGV4U2V0OjpJdGVyYWJsZTo6aXRlcmF0b3I6
Oml0ZXJhdG9yKToKKyAgICAgICAgKFdURjo6SW5kZXhTZXQ6Okl0ZXJhYmxlOjppdGVyYXRvcjo6
b3BlcmF0b3IqKToKKyAgICAgICAgKFdURjo6SW5kZXhTZXQ6Okl0ZXJhYmxlOjppdGVyYXRvcjo6
b3BlcmF0b3IrKyk6CisgICAgICAgIChXVEY6OkluZGV4U2V0OjpJdGVyYWJsZTo6aXRlcmF0b3I6
Om9wZXJhdG9yPT0pOgorICAgICAgICAoV1RGOjpJbmRleFNldDo6SXRlcmFibGU6Oml0ZXJhdG9y
OjpvcGVyYXRvciE9KToKKyAgICAgICAgKFdURjo6SW5kZXhTZXQ6Okl0ZXJhYmxlOjpiZWdpbik6
CisgICAgICAgIChXVEY6OkluZGV4U2V0OjpJdGVyYWJsZTo6ZW5kKToKKyAgICAgICAgKFdURjo6
SW5kZXhTZXQ6OnZhbHVlcyk6CisgICAgICAgIChXVEY6OkluZGV4U2V0OjppbmRpY2VzKToKKyAg
ICAgICAgKFdURjo6SW5kZXhTZXQ6OmR1bXApOgorICAgICAgICAqIHd0Zi9JbmRleGVkQ29udGFp
bmVySXRlcmF0b3IuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0lu
ZGV4TWFwLmguCisgICAgICAgIChXVEY6OkluZGV4ZWRDb250YWluZXJJdGVyYXRvcjo6SW5kZXhl
ZENvbnRhaW5lckl0ZXJhdG9yKToKKyAgICAgICAgKFdURjo6SW5kZXhlZENvbnRhaW5lckl0ZXJh
dG9yOjpvcGVyYXRvcisrKToKKyAgICAgICAgKFdURjo6SW5kZXhlZENvbnRhaW5lckl0ZXJhdG9y
OjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdURjo6SW5kZXhlZENvbnRhaW5lckl0ZXJhdG9yOjpv
cGVyYXRvciE9KToKKyAgICAgICAgKFdURjo6SW5kZXhlZENvbnRhaW5lckl0ZXJhdG9yOjpmaW5k
TmV4dCk6CisKIDIwMTYtMDgtMTcgIERvbiBPbG1zdGVhZCAgPGRvbi5vbG1zdGVhZEBhbS5zb255
LmNvbT4KIAogICAgICAgICBVc2UgZmluZF9saWJyYXJ5IHdpdGhpbiBXaW5kb3dzIGJ1aWxkCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggM2VkNTRiODE3MjY4MThhMDg4NGNk
YzMyNWNmMTdkZDI1YjJlYmU2MS4uM2JlZjQyY2Y4MmFkMGU3N2Q4NTY0MDFjOTM3MGRlMDEzMDg1
MjM5MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0Cisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTgxLDYgKzE4MSw4
IEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgYnl0ZWNvZGUvQXJyYXlBbGxvY2F0
aW9uUHJvZmlsZS5jcHAKICAgICBieXRlY29kZS9BcnJheVByb2ZpbGUuY3BwCiAgICAgYnl0ZWNv
ZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcAorICAgIGJ5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9y
aWZpY2F0aW9uLmNwcAorICAgIGJ5dGVjb2RlL0J5dGVjb2RlUmV3cml0ZXIuY3BwCiAgICAgYnl0
ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5jcHAKICAgICBieXRlY29kZS9CeXRlY29k
ZUxpdmVuZXNzQW5hbHlzaXMuY3BwCiAgICAgYnl0ZWNvZGUvQ2FsbEVkZ2UuY3BwCkBAIC02NjEs
NyArNjYzLDYgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBydW50aW1lL0Z1bmN0
aW9uSGFzRXhlY3V0ZWRDYWNoZS5jcHAKICAgICBydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNw
cAogICAgIHJ1bnRpbWUvRnVuY3Rpb25SYXJlRGF0YS5jcHAKLSAgICBydW50aW1lL0dlbmVyYXRv
ckZyYW1lLmNwcAogICAgIHJ1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAK
ICAgICBydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcAogICAgIHJ1bnRpbWUv
R2VuZXJhdG9yUHJvdG90eXBlLmNwcApAQCAtOTc5LDYgKzk4MCwxMCBAQCBhZGRfY3VzdG9tX2Nv
bW1hbmQoCiAgICAgQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAke0pBVkFTQ1JJUFRDT1JF
X0RJUn0vZ2VuZXJhdGUtYnl0ZWNvZGUtZmlsZXMgLS1ieXRlY29kZXNfaCAke0RFUklWRURfU09V
UkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0J5dGVjb2Rlcy5oIC0taW5pdF9ieXRlY29kZXNfYXNt
ICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5pdEJ5dGVjb2Rlcy5hc20g
JHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCiAgICAgVkVS
QkFUSU0pCiAKK2xpc3QoQVBQRU5EIEphdmFTY3JpcHRDb3JlX0hFQURFUlMKKyAgICAke0RFUklW
RURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0J5dGVjb2Rlcy5oCispCisKIGFkZF9jdXN0
b21fY29tbWFuZCgKICAgICBPVVRQVVQgJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVf
RElSfS9MTEludERlc2lyZWRPZmZzZXRzLmgKICAgICBNQUlOX0RFUEVOREVOQ1kgJHtKQVZBU0NS
SVBUQ09SRV9ESVJ9L29mZmxpbmVhc20vZ2VuZXJhdGVfb2Zmc2V0X2V4dHJhY3Rvci5yYgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBlYTAzY2I2MmI4ZTEzOGZiOWJjYjM1ZmYxNmYz
OTY3MjAxNTI4YTQxLi5hM2RkYWRkM2UwNWFiZDlhMDAyMGUwMTc5OWEwNzgzYjMwMGI0M2NmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNzg2LDggKzc4Niw2IEBACiAJCTBGRUM4
NTE4MUJEQUNEQUMwMDgwRkY3NCAvKiBCM0dlbmVyYXRlLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRUM4NENFMUJEQUNEQUMwMDgwRkY3NCAvKiBC
M0dlbmVyYXRlLmNwcCAqLzsgfTsKIAkJMEZFQzg1MTkxQkRBQ0RBQzAwODBGRjc0IC8qIEIzR2Vu
ZXJhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
RUM4NENGMUJEQUNEQUMwMDgwRkY3NCAvKiBCM0dlbmVyYXRlLmggKi87IH07CiAJCTBGRUM4NTFB
MUJEQUNEQUMwMDgwRkY3NCAvKiBCM0dlbmVyaWNGcmVxdWVudGVkQmxvY2suaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRUM4NEQwMUJEQUNEQUMwMDgw
RkY3NCAvKiBCM0dlbmVyaWNGcmVxdWVudGVkQmxvY2suaCAqLzsgfTsKLQkJMEZFQzg1MUIxQkRB
Q0RBQzAwODBGRjc0IC8qIEIzSW5kZXhNYXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGRUM4NEQxMUJEQUNEQUMwMDgwRkY3NCAvKiBCM0luZGV4TWFw
LmggKi87IH07Ci0JCTBGRUM4NTFDMUJEQUNEQUMwMDgwRkY3NCAvKiBCM0luZGV4U2V0LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkVDODREMjFCREFD
REFDMDA4MEZGNzQgLyogQjNJbmRleFNldC5oICovOyB9OwogCQkwRkVDODUxRDFCREFDREFDMDA4
MEZGNzQgLyogQjNMb3dlclRvQWlyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGRUM4NEQzMUJEQUNEQUMwMDgwRkY3NCAvKiBCM0xvd2VyVG9BaXIu
Y3BwICovOyB9OwogCQkwRkVDODUxRTFCREFDREFDMDA4MEZGNzQgLyogQjNMb3dlclRvQWlyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkVDODRENDFC
REFDREFDMDA4MEZGNzQgLyogQjNMb3dlclRvQWlyLmggKi87IH07CiAJCTBGRUM4NTFGMUJEQUNE
QUMwMDgwRkY3NCAvKiBCM01lbW9yeVZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRUM4NEQ1MUJEQUNEQUMwMDgwRkY3NCAvKiBCM01lbW9y
eVZhbHVlLmNwcCAqLzsgfTsKQEAgLTEyNzIsOCArMTI3MCw2IEBACiAJCTcwOUZCODZDMUFFMzM1
QzYwMDM5RDA2OSAvKiBXZWFrU2V0UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MDlGQjg2NjFBRTMzNUM2MDAzOUQwNjkgLyogV2Vha1Nl
dFByb3RvdHlwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTcwQjBBOUQxMUE5QjY2NDYwMDAxMzA2QSAvKiBSdW50aW1lRmxhZ3MuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwQjBBOUQwMUE5QjY2MjAw
MDAxMzA2QSAvKiBSdW50aW1lRmxhZ3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk3MEI3OTE5MTFDMDI0QTEzMDAyNDgxRTIgLyogU291cmNlQ29k
ZUtleS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBC
NzkxOEUxQzAyNDRDOTAwMjQ4MUUyIC8qIFNvdXJjZUNvZGVLZXkuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk3MEI3OTE5MjFDMDI0QTIzMDAyNDgx
RTIgLyogR2VuZXJhdG9yRnJhbWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNzBCNzkxODMxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZyYW1l
LmNwcCAqLzsgfTsKLQkJNzBCNzkxOTMxQzAyNEEyODAwMjQ4MUUyIC8qIEdlbmVyYXRvckZyYW1l
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEI3OTE4
NDFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnJhbWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MEI3OTE5NDFDMDI0QTI4MDAyNDgxRTIg
LyogR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEI3OTE4NTFDMDI0NDMyMDAyNDgxRTIgLyogR2Vu
ZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAgKi87IH07CiAJCTcwQjc5MTk1MUMwMjRBMjgw
MDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEI3OTE4NjFDMDI0NDMyMDAyNDgxRTIg
LyogR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcwQjc5MTk2MUMwMjRBMjgwMDI0ODFFMiAvKiBH
ZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3MEI3OTE4NzFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9y
RnVuY3Rpb25Qcm90b3R5cGUuY3BwICovOyB9OwpAQCAtMjA0Nyw2ICsyMDQzLDExIEBACiAJCUUx
OEUzQTU5MERGOTI3OEMwMEQ5MEIzNCAvKiBWTS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMThFM0E1NzBERjkyNzhDMDBEOTBCMzQgLyogVk0uY3Bw
ICovOyB9OwogCQlFMzE4Q0JDMDFCOEFFRjUxMDBBMjkyOUQgLyogSlNNb2R1bGVOYW1lc3BhY2VP
YmplY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTMxOENCQkUxQjhBRUY1MTAwQTI5MjlEIC8qIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmNwcCAq
LzsgfTsKIAkJRTMxOENCQzExQjhBRUY1MTAwQTI5MjlEIC8qIEpTTW9kdWxlTmFtZXNwYWNlT2Jq
ZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzE4
Q0JCRjFCOEFFRjUxMDBBMjkyOUQgLyogSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFMzI4REFFNzFEMzhE
MDA0MDAxQTI1MjkgLyogQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNEMjY0MjYxRDM4QzA0MjAwMEJF
MTc0IC8qIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcCAqLzsgfTsKKwkJRTMyOERBRTgx
RDM4RDAwNTAwMUEyNTI5IC8qIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0QyNjQyNzFEMzhDMDQyMDAw
QkUxNzQgLyogQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFMzI4REFFOTFEMzhEMDA1MDAxQTI1Mjkg
LyogQnl0ZWNvZGVHcmFwaC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTNEMjY0MjgxRDM4QzA0MjAwMEJFMTc0IC8qIEJ5dGVjb2RlR3JhcGguaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFMzI4REFFQTFE
MzhEMDA1MDAxQTI1MjkgLyogQnl0ZWNvZGVSZXdyaXRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0QyNjQyOTFEMzhDMDQyMDAwQkUxNzQgLyog
Qnl0ZWNvZGVSZXdyaXRlci5jcHAgKi87IH07CisJCUUzMjhEQUVCMUQzOEQwMDUwMDFBMjUyOSAv
KiBCeXRlY29kZVJld3JpdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFM0QyNjQyQTFEMzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNvZGVSZXdyaXRlci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzMzYz
N0E1MUI2MzIyMDIwMEVFMDg0MCAvKiBSZWZsZWN0T2JqZWN0LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMzYzN0EzMUI2MzIyMDIwMEVFMDg0MCAv
KiBSZWZsZWN0T2JqZWN0LmNwcCAqLzsgfTsKIAkJRTMzNjM3QTYxQjYzMjIwMjAwRUUwODQwIC8q
IFJlZmxlY3RPYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEUzMzYzN0E0MUI2MzIyMDIwMEVFMDg0MCAvKiBSZWZsZWN0T2JqZWN0LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTMzQjNFMjYxQjdB
QkQ3NTAwNDhEQjJFIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5sdXQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzM0IzRTI1MUI3QUJE
NzUwMDQ4REIyRSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QubHV0LmggKi87IH07
CkBAIC0yMDcxLDYgKzIwNzIsNyBAQAogCQlFMzc5NEU3NTFCNzdFQjk3MDA1NTQzQUUgLyogTW9k
dWxlQW5hbHl6ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTM3OTRFNzMxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmNwcCAqLzsg
fTsKIAkJRTM3OTRFNzYxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzc5NEU3NDFCNzdFQjk3
MDA1NTQzQUUgLyogTW9kdWxlQW5hbHl6ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzk2M0NFRTFCNzNGNzUwMDBFQjRDRTUgLyogTm9kZXNB
bmFseXplTW9kdWxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEUzOTYzQ0VDMUI3M0Y3NTAwMEVCNENFNSAvKiBOb2Rlc0FuYWx5emVNb2R1bGUuY3Bw
ICovOyB9OworCQlFMzlENDVGNTFEMzkwMDU2MDBCM0IzNzcgLyogSW50ZXJwcmV0ZXJJbmxpbmVz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzlEOUQ4
NDFEMzkwMDA2MDA2NjcyODIgLyogSW50ZXJwcmV0ZXJJbmxpbmVzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM5REE0QTYxQjdFOEI3QzAwODRG
MzNBIC8qIEpTTW9kdWxlUmVjb3JkLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEUzOURBNEE0MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29y
ZC5jcHAgKi87IH07CiAJCUUzOURBNEE3MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29y
ZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5REE0
QTUxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTNEMjM5QzgxQjgyOUMxQzAwQkJFRjY3
IC8qIEpTTW9kdWxlRW52aXJvbm1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTNEMjM5QzYxQjgyOUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxlRW52
aXJvbm1lbnQuY3BwICovOyB9OwpAQCAtMzAxMyw4ICszMDE1LDYgQEAKIAkJMEZFQzg0Q0UxQkRB
Q0RBQzAwODBGRjc0IC8qIEIzR2VuZXJhdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gQjNHZW5lcmF0ZS5jcHA7IHBhdGggPSBiMy9CM0dlbmVyYXRlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZFQzg0Q0YxQkRBQ0RBQzAwODBGRjc0IC8qIEIz
R2VuZXJhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQjNHZW5lcmF0ZS5o
OyBwYXRoID0gYjMvQjNHZW5lcmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
RkVDODREMDFCREFDREFDMDA4MEZGNzQgLyogQjNHZW5lcmljRnJlcXVlbnRlZEJsb2NrLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEIzR2VuZXJpY0ZyZXF1ZW50ZWRCbG9jay5o
OyBwYXRoID0gYjMvQjNHZW5lcmljRnJlcXVlbnRlZEJsb2NrLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTBGRUM4NEQxMUJEQUNEQUMwMDgwRkY3NCAvKiBCM0luZGV4TWFwLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEIzSW5kZXhNYXAuaDsgcGF0aCA9IGIzL0Iz
SW5kZXhNYXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMEZFQzg0RDIxQkRBQ0RB
QzAwODBGRjc0IC8qIEIzSW5kZXhTZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gQjNJbmRleFNldC5oOyBwYXRoID0gYjMvQjNJbmRleFNldC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwRkVDODREMzFCREFDREFDMDA4MEZGNzQgLyogQjNMb3dlclRvQWlyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEIzTG93ZXJUb0Fpci5jcHA7
IHBhdGggPSBiMy9CM0xvd2VyVG9BaXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwRkVDODRENDFCREFDREFDMDA4MEZGNzQgLyogQjNMb3dlclRvQWlyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEIzTG93ZXJUb0Fpci5oOyBwYXRoID0gYjMvQjNMb3dlclRv
QWlyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRUM4NEQ1MUJEQUNEQUMwMDgw
RkY3NCAvKiBCM01lbW9yeVZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IEIzTWVtb3J5VmFsdWUuY3BwOyBwYXRoID0gYjMvQjNNZW1vcnlWYWx1ZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zNDk2LDggKzM0OTYsNiBAQAogCQk3MDlGQjg2
NTFBRTMzNUM2MDAzOUQwNjkgLyogV2Vha1NldFByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWFrU2V0UHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNzA5RkI4NjYxQUUzMzVDNjAwMzlEMDY5IC8qIFdlYWtTZXRQcm90
b3R5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vha1NldFByb3RvdHlw
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MEIwQTlEMDFBOUI2NjIwMDAwMTMw
NkEgLyogUnVudGltZUZsYWdzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJ1
bnRpbWVGbGFncy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3MEI3OTE4MzFDMDI0
NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnJhbWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gR2VuZXJhdG9yRnJhbWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQk3MEI3OTE4NDFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnJhbWUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2VuZXJhdG9yRnJhbWUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzBCNzkxODUxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRv
ckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTcwQjc5MTg2MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlv
bkNvbnN0cnVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdlbmVyYXRv
ckZ1bmN0aW9uQ29uc3RydWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzBC
NzkxODcxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdlbmVyYXRvckZ1bmN0aW9uUHJv
dG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQzMzcsMTAgKzQzMzUs
MTYgQEAKIAkJRTM3OTRFNzMxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1vZHVsZUFuYWx5emVyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM3OTRFNzQxQjc3RUI5NzAwNTU0M0FFIC8q
IE1vZHVsZUFuYWx5emVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vZHVs
ZUFuYWx5emVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOTYzQ0VDMUI3M0Y3
NTAwMEVCNENFNSAvKiBOb2Rlc0FuYWx5emVNb2R1bGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gTm9kZXNBbmFseXplTW9kdWxlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJRTM5RDlEODQxRDM5MDAwNjAwNjY3MjgyIC8qIEludGVycHJldGVySW5s
aW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRlcnByZXRlcklubGlu
ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM5REE0QTQxQjdFOEI3QzAwODRG
MzNBIC8qIEpTTW9kdWxlUmVjb3JkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTTW9kdWxlUmVjb3JkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RTM5REE0QTUxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTW9kdWxlUmVjb3JkLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUUzRDIzOUM2MUI4MjlDMUMwMEJCRUY2NyAvKiBKU01vZHVsZUVudmlyb25t
ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTW9kdWxlRW52
aXJvbm1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0QyMzlDNzFCODI5
QzFDMDBCQkVGNjcgLyogSlNNb2R1bGVFbnZpcm9ubWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBKU01vZHVsZUVudmlyb25tZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUUzRDI2NDI2MUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRlY29kZUdlbmVyYXRvcmlm
aWNhdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCeXRlY29k
ZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUz
RDI2NDI3MUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlv
bi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFM0QyNjQyODFEMzhDMDQyMDAwQkUx
NzQgLyogQnl0ZWNvZGVHcmFwaC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBC
eXRlY29kZUdyYXBoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzRDI2NDI5MUQz
OEMwNDIwMDBCRTE3NCAvKiBCeXRlY29kZVJld3JpdGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEJ5dGVjb2RlUmV3cml0ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlFM0QyNjQyQTFEMzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNvZGVSZXdyaXRl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCeXRlY29kZVJld3JpdGVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzRUY4ODcyMUI2NkRGMjMwMDNGMjZDQiAv
KiBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlFM0VGODg3MzFCNjZERjIzMDAzRjI2Q0IgLyogSlNQcm9wZXJ0eU5hbWVJdGVy
YXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1Byb3BlcnR5TmFtZUl0
ZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0OURDMTQ5MTJFRjI2MUEw
MDE4NEExRiAvKiBTb3VyY2VQcm92aWRlckNhY2hlSXRlbS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTb3VyY2VQcm92aWRlckNhY2hlSXRlbS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtNDgxMiw4ICs0ODE2LDYgQEAKIAkJCQkwRkVDODREMDFCREFDREFDMDA4
MEZGNzQgLyogQjNHZW5lcmljRnJlcXVlbnRlZEJsb2NrLmggKi8sCiAJCQkJMEZFQzg1QkYxQkUx
NjdBMDAwODBGRjc0IC8qIEIzSGVhcFJhbmdlLmNwcCAqLywKIAkJCQkwRkVDODVDMDFCRTE2N0Ew
MDA4MEZGNzQgLyogQjNIZWFwUmFuZ2UuaCAqLywKLQkJCQkwRkVDODREMTFCREFDREFDMDA4MEZG
NzQgLyogQjNJbmRleE1hcC5oICovLAotCQkJCTBGRUM4NEQyMUJEQUNEQUMwMDgwRkY3NCAvKiBC
M0luZGV4U2V0LmggKi8sCiAJCQkJREM2OUI5OUExRDE1RjkwRjAwMkUzQzAwIC8qIEIzSW5mZXJT
d2l0Y2hlcy5jcHAgKi8sCiAJCQkJREM2OUI5OUIxRDE1RjkwRjAwMkUzQzAwIC8qIEIzSW5mZXJT
d2l0Y2hlcy5oICovLAogCQkJCTBGRUM4NUI0MUJFMTQ2MkYwMDgwRkY3NCAvKiBCM0luc2VydGlv
blNldC5jcHAgKi8sCkBAIC01MDY5LDYgKzUwNzEsNyBAQAogCQkxNDI5RDc3QTBFRDIwRDczMDBC
ODk2MTkgLyogaW50ZXJwcmV0ZXIgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxk
cmVuID0gKAorCQkJCUUzOUQ5RDg0MUQzOTAwMDYwMDY2NzI4MiAvKiBJbnRlcnByZXRlcklubGlu
ZXMuaCAqLywKIAkJCQkwRjU1RjBGMTE0RDEwNjM2MDBBQzc2NDkgLyogQWJzdHJhY3RQQy5jcHAg
Ki8sCiAJCQkJMEY1NUYwRjIxNEQxMDYzNjAwQUM3NjQ5IC8qIEFic3RyYWN0UEMuaCAqLywKIAkJ
CQkxNDI5RDg1QjBFRDIxOEU5MDBCODk2MTkgLyogQ0xvb3BTdGFjay5jcHAgKi8sCkBAIC01NzQ5
LDggKzU3NTIsNiBAQAogCQkJCUY2OTJBODVEMDI1NTU5N0QwMUZGNjBGNyAvKiBGdW5jdGlvblBy
b3RvdHlwZS5oICovLAogCQkJCTYyRDJEMzhEMUFERjEwM0YwMDAyMDZDMSAvKiBGdW5jdGlvblJh
cmVEYXRhLmNwcCAqLywKIAkJCQk2MkQyRDM4RTFBREYxMDNGMDAwMjA2QzEgLyogRnVuY3Rpb25S
YXJlRGF0YS5oICovLAotCQkJCTcwQjc5MTgzMUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JG
cmFtZS5jcHAgKi8sCi0JCQkJNzBCNzkxODQxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZy
YW1lLmggKi8sCiAJCQkJNzBCNzkxODUxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0
aW9uQ29uc3RydWN0b3IuY3BwICovLAogCQkJCTcwQjc5MTg2MUMwMjQ0MzIwMDI0ODFFMiAvKiBH
ZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmggKi8sCiAJCQkJNzBCNzkxODcxQzAyNDQzMjAw
MjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcCAqLywKQEAgLTY2MzYsNiAr
NjYzNywxMSBAQAogCQk5NjlBMDc4RjBFRDFEM0FFMDBGMUY2ODEgLyogYnl0ZWNvZGUgKi8gPSB7
CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUUzRDI2NDI2MUQzOEMw
NDIwMDBCRTE3NCAvKiBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHAgKi8sCisJCQkJRTNE
MjY0MjcxRDM4QzA0MjAwMEJFMTc0IC8qIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmggKi8s
CisJCQkJRTNEMjY0MjgxRDM4QzA0MjAwMEJFMTc0IC8qIEJ5dGVjb2RlR3JhcGguaCAqLywKKwkJ
CQlFM0QyNjQyOTFEMzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNvZGVSZXdyaXRlci5jcHAgKi8sCisJ
CQkJRTNEMjY0MkExRDM4QzA0MjAwMEJFMTc0IC8qIEJ5dGVjb2RlUmV3cml0ZXIuaCAqLywKIAkJ
CQk1MzcwQjRGMzFCRjI1RUEyMDA1QzQwRkMgLyogQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFs
dWVXYXRjaHBvaW50QmFzZS5jcHAgKi8sCiAJCQkJNTM3MEI0RjQxQkYyNUVBMjAwNUM0MEZDIC8q
IEFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2UuaCAqLywKIAkJCQkw
RjgzMzVCNDE2MzlDMUUzMDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAgKi8s
CkBAIC03MTc3LDggKzcxODMsNiBAQAogCQkJCTBGRUM4NUMzMUJFMTY3QTAwMDgwRkY3NCAvKiBC
M0hlYXBSYW5nZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjY3MThCQTUxQkU5OUY3ODAwNTIwMTdC
IC8qIEFpckl0ZXJhdGVkUmVnaXN0ZXJDb2FsZXNjaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
Rjk2MzAzQzFENDE5MkNEMDA1NjA5RDkgLyogRGVzdHJ1Y3Rpb25Nb2RlLmggaW4gSGVhZGVycyAq
LywKLQkJCQkwRkVDODUxQjFCREFDREFDMDA4MEZGNzQgLyogQjNJbmRleE1hcC5oIGluIEhlYWRl
cnMgKi8sCi0JCQkJMEZFQzg1MUMxQkRBQ0RBQzAwODBGRjc0IC8qIEIzSW5kZXhTZXQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGRUM4NUJBMUJFMTQ2MkYwMDgwRkY3NCAvKiBCM0luc2VydGlvblNl
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQzg1QkIxQkUxNDYyRjAwODBGRjc0IC8qIEIzSW5z
ZXJ0aW9uU2V0SW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQzg1MUUxQkRBQ0RBQzAw
ODBGRjc0IC8qIEIzTG93ZXJUb0Fpci5oIGluIEhlYWRlcnMgKi8sCkBAIC03MTkyLDYgKzcxOTYs
NyBAQAogCQkJCTBGRUM4NTJEMUJEQUNEQUMwMDgwRkY3NCAvKiBCM1Byb2NlZHVyZUlubGluZXMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUM4NUJEMUJFMTQ2MkYwMDgwRkY3NCAvKiBCM1JlZHVj
ZVN0cmVuZ3RoLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVDODUzMTFCREFDREFDMDA4MEZGNzQg
LyogQjNTdGFja21hcFNwZWNpYWwuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzMjhEQUU4MUQzOEQw
MDUwMDFBMjUyOSAvKiBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEZFQzg1MzUxQkRBQ0RBQzAwODBGRjc0IC8qIEIzU2xvdEJhc2VWYWx1ZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEZFQzg1MzYxQkRBQ0RBQzAwODBGRjc0IC8qIEIzU3VjY2Vzc29yQ29s
bGVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQzg1MzgxQkRBQ0RBQzAwODBGRjc0IC8q
IEIzU3dpdGNoQ2FzZS5oIGluIEhlYWRlcnMgKi8sCkBAIC03NDU3LDcgKzc0NjIsNiBAQAogCQkJ
CUE3Mzc4MTBFMTc5OUVBMkUwMDgxNzUzMyAvKiBERkdOYXR1cmFsTG9vcHMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTg2RUNBM0VBMTMyREVGMUMwMDJCMkFENyAvKiBERkdOb2RlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRkZCOTIxQjE2RDAyRjAxMDA1NUE1REIgLyogREZHTm9kZUFsbG9jYXRvci5o
IGluIEhlYWRlcnMgKi8sCi0JCQkJNzBCNzkxOTMxQzAyNEEyODAwMjQ4MUUyIC8qIEdlbmVyYXRv
ckZyYW1lLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkE1ODFCQjE1MEU5NTMwMDBCOUEyRDkgLyog
REZHTm9kZUZsYWdzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjMwMEI3ODE4QUIwNTExMDBBNkQ3
MkUgLyogREZHTm9kZU9yaWdpbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZBNTgxQkMxNTBFOTUz
MDAwQjlBMkQ5IC8qIERGR05vZGVUeXBlLmggaW4gSGVhZGVycyAqLywKQEAgLTc0NzIsNiArNzQ3
Niw3IEBACiAJCQkJMEZEOEEzMjYxN0Q1MUY1NzAwQ0EyQzQwIC8qIERGR09TUkVudHJ5cG9pbnRD
cmVhdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkMwOTc2QTE0NjhBNkY3MDBDRjI0
NDIgLyogREZHT1NSRXhpdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyMzVCRUMxNzE3OEU3MzAw
NjkwQzdGIC8qIERGR09TUkV4aXRCYXNlLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzlENDVGNTFE
MzkwMDU2MDBCM0IzNzcgLyogSW50ZXJwcmV0ZXJJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRkZCOTIxQzE2RDAyRjExMDA1NUE1REIgLyogREZHT1NSRXhpdENvbXBpbGF0aW9uSW5mby5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDMDk3NzExNDY5M0FGNTAwQ0YyNDQyIC8qIERGR09TUkV4
aXRDb21waWxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY3MDI1QUExNzE0QjBGQzAwMzgyQzBF
IC8qIERGR09TUkV4aXRDb21waWxlckNvbW1vbi5oIGluIEhlYWRlcnMgKi8sCkBAIC03NzM0LDYg
Kzc3MzksNyBAQAogCQkJCUUzM0IzRTI2MUI3QUJENzUwMDQ4REIyRSAvKiBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb25PYmplY3QubHV0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTMyNDM4QzE4NTY4
MzM1MDAyRUQ2OTIgLyogSW5zcGVjdG9yUHJvdG9jb2xPYmplY3RzLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBNTVEOTNBQzE4NTE0Rjc5MDA0MDBERUQgLyogSW5zcGVjdG9yUHJvdG9jb2xUeXBlcy5o
IGluIEhlYWRlcnMgKi8sCisJCQkJRTMyOERBRUIxRDM4RDAwNTAwMUEyNTI5IC8qIEJ5dGVjb2Rl
UmV3cml0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1MEU0QjYyMTg4MDlERDUwMDY4QTQ2RCAv
KiBJbnNwZWN0b3JSdW50aW1lQWdlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1OTNDRjgzMTg0
MDM3NzEwMEJGQ0UyNyAvKiBJbnNwZWN0b3JWYWx1ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTk2
OUEwNzk5MEVEMUQzQUUwMEYxRjY4MSAvKiBJbnN0cnVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCkBA
IC03ODY1LDYgKzc4NzEsNyBAQAogCQkJCUUzM0Y1MDgxMUI4NDI5QTQwMDQxMzg1NiAvKiBKU0lu
dGVybmFsUHJvbWlzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY2MTgzMkExQzQ1QkYwNzAwNzI0
NTBCIC8qIEFpckNDYWxsaW5nQ29udmVudGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTMzRjUw
NzkxQjg0MjI1NzAwNDEzODU2IC8qIEpTSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IuaCBpbiBI
ZWFkZXJzICovLAorCQkJCUUzMjhEQUU5MUQzOEQwMDUwMDFBMjUyOSAvKiBCeXRlY29kZUdyYXBo
LmggaW4gSGVhZGVycyAqLywKIAkJCQlFMzNGNTA4NzFCODQ0OUVGMDA0MTM4NTYgLyogSlNJbnRl
cm5hbFByb21pc2VDb25zdHJ1Y3Rvci5sdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUUzM0Y1MDg1
MUI4NDM3QTAwMDQxMzg1NiAvKiBKU0ludGVybmFsUHJvbWlzZURlZmVycmVkLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlFMzNGNTA3NTFCODQyMUMwMDA0MTM4NTYgLyogSlNJbnRlcm5hbFByb21pc2VQ
cm90b3R5cGUuaCBpbiBIZWFkZXJzICovLApAQCAtODgzMSw2ICs4ODM4LDcgQEAKIAkJCQkxNDdG
MzlCRDEwN0VDMzc2MDA0MjdBNDggLyogQXJnTGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkw
Rjc0M0JBQTE2Qjg4MjQ5MDA5RjkyNzcgLyogQVJNNjREaXNhc3NlbWJsZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJODZEM0IyQzMxMDE1NkJERTAwMjg2NUU3IC8qIEFSTUFzc2VtYmxlci5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQlFMzI4REFFNzFEMzhEMDA0MDAxQTI1MjkgLyogQnl0ZWNvZGVH
ZW5lcmF0b3JpZmljYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNjVDMDI4NTAxNzE3OTVF
MjAwMzUxRTM1IC8qIEFSTXY3RGlzYXNzZW1ibGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTY1
QzAyODVDMTcxNzk2NjgwMDM1MUUzNSAvKiBBUk12N0RPcGNvZGUuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMEY4MzM1QjcxNjM5QzFFNjAwMTQ0M0I1IC8qIEFycmF5QWxsb2NhdGlvblByb2ZpbGUu
Y3BwIGluIFNvdXJjZXMgKi8sCkBAIC05MTY2LDYgKzkxNzQsNyBAQAogCQkJCTBGMjVGMUIxMTgx
NjM1RjMwMDUyMkYzOSAvKiBGVExTbG93UGF0aENhbGwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MEYzMzhERjExQkU5M0FEMTAwMTNDODhGIC8qIEIzU3RhY2ttYXBWYWx1ZS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkwRjI1RjFCMzE4MTYzNUYzMDA1MjJGMzkgLyogRlRMU2xvd1BhdGhDYWxsS2V5
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUUzMjhEQUVBMUQzOEQwMDUwMDFBMjUyOSAvKiBCeXRl
Y29kZVJld3JpdGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQzMTlEQTAzMUMxQkU0MEEwMDFE
MjYwQiAvKiBCM0xvd2VyTWFjcm9zQWZ0ZXJPcHRpbWl6YXRpb25zLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGRUEwQTE2MTcwNkJCOTAwMEJCNzIyQyAvKiBGVExTdGF0ZS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkwRjIzNUJFMTE3MTc4RTFDMDA2OTBDN0YgLyogRlRMVGh1bmtzLmNwcCBpbiBT
b3VyY2VzICovLApAQCAtOTU3Myw3ICs5NTgyLDYgQEAKIAkJCQk3OUVFMEJGRjFCNEFGQjg1MDAw
Mzg1QzkgLyogVmFyaWFibGVFbnZpcm9ubWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjZD
NzM1MDFBQzlGOTlGMDBCRTE2ODIgLyogVmFyaWFibGVXcml0ZUZpcmVEZXRhaWwuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEZFMDUwMkMxQUE5MDk1NjAwRDMzQjMzIC8qIFZhck9mZnNldC5jcHAg
aW4gU291cmNlcyAqLywKLQkJCQk3MEI3OTE5MjFDMDI0QTIzMDAyNDgxRTIgLyogR2VuZXJhdG9y
RnJhbWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyMEMyNTkxQTgwMTNBQjAwREEzMjI5IC8q
IFZpcnR1YWxSZWdpc3Rlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMThFM0E1OTBERjkyNzhD
MDBEOTBCMzQgLyogVk0uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkU1OTMyQTcxODNDNUEyNjAw
QTFFQ0NDIC8qIFZNRW50cnlTY29wZS5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0Jhc2ljQmxvY2tVdGlscy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzQmFzaWNCbG9ja1V0aWxzLmgKaW5kZXggNGE3MTc2Nzg3OGM2ZWIzNzIz
MDUwZGU5MjE5NWVkZWE1ODUwMTlmNy4uMzJhNTlmYzEyMGNiODQwZmFiYTA2YjFmN2QxZDdiMWI1
YTlhYWQ5YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQmFzaWNCbG9j
a1V0aWxzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQmFzaWNCbG9ja1V0aWxz
LmgKQEAgLTI4LDggKzI4LDggQEAKIAogI2lmIEVOQUJMRShCM19KSVQpCiAKLSNpbmNsdWRlICJC
M0luZGV4U2V0LmgiCiAjaW5jbHVkZSA8d3RmL0dyYXBoTm9kZVdvcmtsaXN0Lmg+CisjaW5jbHVk
ZSA8d3RmL0luZGV4U2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2Ug
SlNDIHsgbmFtZXNwYWNlIEIzIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM0Jsb2NrV29ya2xpc3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0Jsb2NrV29y
a2xpc3QuaAppbmRleCBhZjdlZTJjOTZiYzk4ODg5YmQwZDc4YjE2ZTYyNzhkNTczY2Y2MjIxLi45
ZTZiZTRiYjlmNzAxOTIyM2UxNWUyYWM0OWM4ZjZkZTE2Yzg4OTY2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNCbG9ja1dvcmtsaXN0LmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzQmxvY2tXb3JrbGlzdC5oCkBAIC0yOCwxMyArMjgsMTQgQEAKIAogI2lm
IEVOQUJMRShCM19KSVQpCiAKLSNpbmNsdWRlICJCM0Jhc2ljQmxvY2suaCIKLSNpbmNsdWRlICJC
M0luZGV4U2V0LmgiCiAjaW5jbHVkZSA8d3RmL0dyYXBoTm9kZVdvcmtsaXN0Lmg+CisjaW5jbHVk
ZSA8d3RmL0luZGV4U2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2Ug
SlNDIHsgbmFtZXNwYWNlIEIzIHsKIAorY2xhc3MgQmFzaWNCbG9jazsKKwogdHlwZWRlZiBHcmFw
aE5vZGVXb3JrbGlzdDxCYXNpY0Jsb2NrKiwgSW5kZXhTZXQ8QmFzaWNCbG9jaz4+IEJsb2NrV29y
a2xpc3Q7CiAKIC8vIFdoZW4geW91IHNheSBCbG9ja1dpdGg8aW50PiB5b3Ugc2hvdWxkIHJlYWQg
aXQgYXMgImJsb2NrIHdpdGggYW4gaW50Ii4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM0NGRy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ0ZHLmgKaW5kZXgg
NThjNDBiMWJiYWY3N2RkZWZhMWQyMDYzZjkzZTU4OTQ1OTFkMTdiMy4uOTA0YWIzZjlhMzYwYzI5
OTU2MjBhMDAyZmFhN2MxNWRlMjI1ZWFhMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzQ0ZHLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ0ZHLmgKQEAg
LTI5LDkgKzI5LDkgQEAKICNpZiBFTkFCTEUoQjNfSklUKQogCiAjaW5jbHVkZSAiQjNCYXNpY0Js
b2NrLmgiCi0jaW5jbHVkZSAiQjNJbmRleE1hcC5oIgotI2luY2x1ZGUgIkIzSW5kZXhTZXQuaCIK
ICNpbmNsdWRlICJCM1Byb2NlZHVyZS5oIgorI2luY2x1ZGUgPHd0Zi9JbmRleE1hcC5oPgorI2lu
Y2x1ZGUgPHd0Zi9JbmRleFNldC5oPgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRHVwbGljYXRlVGFpbHMu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRHVwbGljYXRlVGFpbHMuY3BwCmluZGV4
IDhhODQzNGIyNmNkZjA5MjU5ZTEzNjM2MGNhMjcwZjYyY2ExODgzNjguLjk1NDkyYmNlNjc1MWM1
YzE3MGJkMmUyYjlhOWRkNDc0NWQ5ZDIzY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM0R1cGxpY2F0ZVRhaWxzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNEdXBsaWNhdGVUYWlscy5jcHAKQEAgLTMyLDEzICszMiwxMyBAQAogI2luY2x1ZGUgIkIz
QnJlYWtDcml0aWNhbEVkZ2VzLmgiCiAjaW5jbHVkZSAiQjNEb21pbmF0b3JzLmgiCiAjaW5jbHVk
ZSAiQjNGaXhTU0EuaCIKLSNpbmNsdWRlICJCM0luZGV4U2V0LmgiCiAjaW5jbHVkZSAiQjNJbnNl
cnRpb25TZXRJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQjNQaGFzZVNjb3BlLmgiCiAjaW5jbHVkZSAi
QjNQcm9jZWR1cmVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQjNTd2l0Y2hWYWx1ZS5oIgogI2luY2x1
ZGUgIkIzVXBzaWxvblZhbHVlLmgiCiAjaW5jbHVkZSAiQjNWYWx1ZUlubGluZXMuaCIKKyNpbmNs
dWRlIDx3dGYvSW5kZXhTZXQuaD4KIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0ZpeFNTQS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNGaXhTU0EuY3BwCmluZGV4IGY0YjAxMjJjNGRlY2RlOTVj
M2RiMmQ4MjQxZjY5MjgyZDViYTM5NmEuLjczMGMyYzg3NjZjNjU2NTQ2YjQ4NzQ2ZTEyNTAzY2Qz
NTkzMjRmOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0ZpeFNTQS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRml4U1NBLmNwcApAQCAtMzEsNyAr
MzEsNiBAQAogI2luY2x1ZGUgIkIzQmFzaWNCbG9ja0lubGluZXMuaCIKICNpbmNsdWRlICJCM0Jy
ZWFrQ3JpdGljYWxFZGdlcy5oIgogI2luY2x1ZGUgIkIzRG9taW5hdG9ycy5oIgotI2luY2x1ZGUg
IkIzSW5kZXhTZXQuaCIKICNpbmNsdWRlICJCM0luc2VydGlvblNldElubGluZXMuaCIKICNpbmNs
dWRlICJCM1BoYXNlU2NvcGUuaCIKICNpbmNsdWRlICJCM1Byb2NlZHVyZUlubGluZXMuaCIKQEAg
LTQxLDYgKzQwLDcgQEAKICNpbmNsdWRlICJCM1ZhcmlhYmxlLmgiCiAjaW5jbHVkZSAiQjNWYXJp
YWJsZVZhbHVlLmgiCiAjaW5jbHVkZSA8d3RmL0NvbW1hUHJpbnRlci5oPgorI2luY2x1ZGUgPHd0
Zi9JbmRleFNldC5oPgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRml4U1NBLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNGaXhTU0EuaAppbmRleCA2NjJlNDlkNjI4YWVmNjIwOTUxMDk1ODdlZWE0
NTM1NWM4MDY3N2M1Li44ODU5Mjc2ZTJkOTI2ZGYzMTAyMDYwNzdlYTc1YjIwYWE3NDg4YTQzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNGaXhTU0EuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNGaXhTU0EuaApAQCAtMjgsOCArMjgsOSBAQAogCiAjaWYg
RU5BQkxFKEIzX0pJVCkKIAotI2luY2x1ZGUgIkIzSW5kZXhTZXQuaCIKICNpbmNsdWRlICJCM1Zh
bHVlLmgiCisjaW5jbHVkZSA8d3RmL0luZGV4U2V0Lmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzSW5kZXhNYXAuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM0luZGV4TWFwLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJhYTMzOWYwOWRl
NDJjMGI0ZDU5YmQ2YWYyZTk4MjY0ZmJjMTFiNjEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzSW5kZXhNYXAu
aAorKysgL2Rldi9udWxsCkBAIC0xLDg3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
Ci0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZuZGVmIEIzSW5kZXhNYXBfaAotI2RlZmlu
ZSBCM0luZGV4TWFwX2gKLQotI2lmIEVOQUJMRShCM19KSVQpCi0KLSNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+Ci0KLW5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgewotCi0vLyBUaGlzIGlzIGEg
bWFwIGZvciBrZXlzIHRoYXQgaGF2ZSBhbiBpbmRleCgpLiBJdCdzIHN1cGVyIGVmZmljaWVudCBm
b3IgQmFzaWNCbG9ja3MuIEl0J3Mgb25seQotLy8gZWZmaWNpZW50IGZvciBWYWx1ZXMgaWYgeW91
IGRvbid0IGNyZWF0ZSB0b28gbWFueSBvZiB0aGVzZSBtYXBzLCBzaW5jZSBWYWx1ZXMgY2FuIGhh
dmUgdmVyeQotLy8gc3BhcnNlIGluZGljZXMgYW5kIHRoZXJlIGFyZSBhIGxvdCBvZiBWYWx1ZXMu
Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWU+Ci1jbGFzcyBJbmRleE1h
cCB7Ci1wdWJsaWM6Ci0gICAgZXhwbGljaXQgSW5kZXhNYXAoc2l6ZV90IHNpemUgPSAwKQotICAg
IHsKLSAgICAgICAgbV92ZWN0b3IuZmlsbChWYWx1ZSgpLCBzaXplKTsKLSAgICB9Ci0KLSAgICB2
b2lkIHJlc2l6ZShzaXplX3Qgc2l6ZSkKLSAgICB7Ci0gICAgICAgIG1fdmVjdG9yLmZpbGwoVmFs
dWUoKSwgc2l6ZSk7Ci0gICAgfQotCi0gICAgdm9pZCBjbGVhcigpCi0gICAgewotICAgICAgICBt
X3ZlY3Rvci5maWxsKFZhbHVlKCksIG1fdmVjdG9yLnNpemUoKSk7Ci0gICAgfQotCi0gICAgc2l6
ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX3ZlY3Rvci5zaXplKCk7IH0KLQotICAgIFZhbHVl
JiBvcGVyYXRvcltdKHNpemVfdCBpbmRleCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX3ZlY3Rv
cltpbmRleF07Ci0gICAgfQotCi0gICAgY29uc3QgVmFsdWUmIG9wZXJhdG9yW10oc2l6ZV90IGlu
ZGV4KSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fdmVjdG9yW2luZGV4XTsKLSAgICB9
Ci0gICAgCi0gICAgVmFsdWUmIG9wZXJhdG9yW10oS2V5KiBrZXkpCi0gICAgewotICAgICAgICBy
ZXR1cm4gbV92ZWN0b3Jba2V5LT5pbmRleCgpXTsKLSAgICB9Ci0gICAgCi0gICAgY29uc3QgVmFs
dWUmIG9wZXJhdG9yW10oS2V5KiBrZXkpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV92
ZWN0b3Jba2V5LT5pbmRleCgpXTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgVmVjdG9yPFZhbHVl
PiBtX3ZlY3RvcjsKLX07Ci0KLX0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMwotCi0jZW5kaWYgLy8g
RU5BQkxFKEIzX0pJVCkKLQotI2VuZGlmIC8vIEIzSW5kZXhNYXBfaApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzSW5kZXhTZXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM0luZGV4U2V0LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFiOWIyYjRl
MzRiZjQzODAwN2FkMjE3Y2I1YzdhM2VhOTRjYjlhNDYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzSW5kZXhT
ZXQuaAorKysgL2Rldi9udWxsCkBAIC0xLDE2NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2lmbmRlZiBCM0luZGV4U2V0X2gKLSNk
ZWZpbmUgQjNJbmRleFNldF9oCi0KLSNpbmNsdWRlIDx3dGYvQml0VmVjdG9yLmg+Ci0jaW5jbHVk
ZSA8d3RmL0NvbW1hUHJpbnRlci5oPgotCi1uYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsK
LQotLy8gVGhpcyBpcyBhIHNldCBmb3IgdGhpbmdzIHRoYXQgaGF2ZSBhbiBpbmRleCgpLiBJdCdz
IHN1cGVyIGVmZmljaWVudCBmb3IgQmFzaWNCbG9ja3MuIEl0J3Mgb25seQotLy8gZWZmaWNpZW50
IGZvciBWYWx1ZXMgaWYgeW91IGRvbid0IGNyZWF0ZSB0b28gbWFueSBvZiB0aGVzZSBzZXRzLCBz
aW5jZSBWYWx1ZXMgY2FuIGhhdmUgdmVyeSBzcGFyc2UKLS8vIGluZGljZXMgYW5kIHRoZXJlIGFy
ZSBhIGxvdCBvZiBWYWx1ZXMuCi0KLS8vIElmIHlvdSB3YW50IGEgc2V0IG9mIEJhc2ljQmxvY2tz
LCB5b3UgZG8gSW5kZXhTZXQ8QmFzaWNCbG9jaz4uIFNvLCBUID0gQmFzaWNCbG9jay4KLXRlbXBs
YXRlPHR5cGVuYW1lIFQ+Ci1jbGFzcyBJbmRleFNldCB7Ci1wdWJsaWM6Ci0gICAgSW5kZXhTZXQo
KQotICAgIHsKLSAgICB9Ci0KLSAgICBib29sIGFkZChUKiB2YWx1ZSkKLSAgICB7Ci0gICAgICAg
IHJldHVybiAhbV9zZXQuc2V0KHZhbHVlLT5pbmRleCgpKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBJdGVyYWJsZT4KLSAgICBib29sIGFkZEFsbChjb25zdCBJdGVyYWJsZSYgaXRl
cmFibGUpCi0gICAgewotICAgICAgICBib29sIHJlc3VsdCA9IGZhbHNlOwotICAgICAgICBmb3Ig
KFQqIHZhbHVlIDogaXRlcmFibGUpCi0gICAgICAgICAgICByZXN1bHQgfD0gYWRkKHZhbHVlKTsK
LSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0KLSAgICBib29sIHJlbW92ZShUKiB2YWx1
ZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX3NldC5jbGVhcih2YWx1ZS0+aW5kZXgoKSk7Ci0g
ICAgfQotCi0gICAgYm9vbCBjb250YWlucyhUKiB2YWx1ZSkgY29uc3QKLSAgICB7Ci0gICAgICAg
IGlmICghdmFsdWUpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHJldHVybiBt
X3NldC5nZXQodmFsdWUtPmluZGV4KCkpOwotICAgIH0KLQotICAgIHNpemVfdCBzaXplKCkgY29u
c3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX3NldC5iaXRDb3VudCgpOwotICAgIH0KLQotICAg
IGJvb2wgaXNFbXB0eSgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gIXNpemUoKTsKLSAg
ICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDb2xsZWN0aW9uVHlwZT4KLSAgICBjbGFzcyBJ
dGVyYWJsZSB7Ci0gICAgcHVibGljOgotICAgICAgICBJdGVyYWJsZShjb25zdCBDb2xsZWN0aW9u
VHlwZSYgY29sbGVjdGlvbiwgY29uc3QgQml0VmVjdG9yJiBzZXQpCi0gICAgICAgICAgICA6IG1f
Y29sbGVjdGlvbihjb2xsZWN0aW9uKQotICAgICAgICAgICAgLCBtX3NldChzZXQpCi0gICAgICAg
IHsKLSAgICAgICAgfQotCi0gICAgICAgIGNsYXNzIGl0ZXJhdG9yIHsKLSAgICAgICAgcHVibGlj
OgotICAgICAgICAgICAgaXRlcmF0b3IoKQotICAgICAgICAgICAgICAgIDogbV9jb2xsZWN0aW9u
KG51bGxwdHIpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGl0
ZXJhdG9yKGNvbnN0IENvbGxlY3Rpb25UeXBlJiBjb2xsZWN0aW9uLCBCaXRWZWN0b3I6Oml0ZXJh
dG9yIGl0ZXIpCi0gICAgICAgICAgICAgICAgOiBtX2NvbGxlY3Rpb24oJmNvbGxlY3Rpb24pCi0g
ICAgICAgICAgICAgICAgLCBtX2l0ZXIoaXRlcikKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAg
IH0KLQotICAgICAgICAgICAgVCogb3BlcmF0b3IqKCkKLSAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICByZXR1cm4gbV9jb2xsZWN0aW9uLT5hdCgqbV9pdGVyKTsKLSAgICAgICAgICAgIH0K
LQotICAgICAgICAgICAgaXRlcmF0b3ImIG9wZXJhdG9yKysoKQotICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgICsrbV9pdGVyOwotICAgICAgICAgICAgICAgIHJldHVybiAqdGhpczsKLSAg
ICAgICAgICAgIH0KLQotICAgICAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IGl0ZXJhdG9y
JiBvdGhlcikgY29uc3QKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gbV9p
dGVyID09IG90aGVyLm1faXRlcjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgYm9vbCBv
cGVyYXRvciE9KGNvbnN0IGl0ZXJhdG9yJiBvdGhlcikgY29uc3QKLSAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7Ci0gICAgICAgICAgICB9Ci0K
LSAgICAgICAgcHJpdmF0ZToKLSAgICAgICAgICAgIGNvbnN0IENvbGxlY3Rpb25UeXBlKiBtX2Nv
bGxlY3Rpb247Ci0gICAgICAgICAgICBCaXRWZWN0b3I6Oml0ZXJhdG9yIG1faXRlcjsKLSAgICAg
ICAgfTsKLQotICAgICAgICBpdGVyYXRvciBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIGl0ZXJhdG9y
KG1fY29sbGVjdGlvbiwgbV9zZXQuYmVnaW4oKSk7IH0KLSAgICAgICAgaXRlcmF0b3IgZW5kKCkg
Y29uc3QgeyByZXR1cm4gaXRlcmF0b3IobV9jb2xsZWN0aW9uLCBtX3NldC5lbmQoKSk7IH0KLQot
ICAgIHByaXZhdGU6Ci0gICAgICAgIGNvbnN0IENvbGxlY3Rpb25UeXBlJiBtX2NvbGxlY3Rpb247
Ci0gICAgICAgIGNvbnN0IEJpdFZlY3RvciYgbV9zZXQ7Ci0gICAgfTsKLQotICAgIC8vIEZvciBi
YXNpYyBibG9ja3MsIHlvdSBkbzoKLSAgICAvLyBpbmRleFNldC52YWx1ZXMocHJvY2VkdXJlKTsK
LSAgICAvLwotICAgIC8vIEZvciB2YWx1ZXMsIHlvdSBkbzoKLSAgICAvLyBpbmRleFNldC52YWx1
ZXMocHJvY2VkdXJlLnZhbHVlcygpKTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDb2xsZWN0aW9u
VHlwZT4KLSAgICBJdGVyYWJsZTxDb2xsZWN0aW9uVHlwZT4gdmFsdWVzKGNvbnN0IENvbGxlY3Rp
b25UeXBlJiBjb2xsZWN0aW9uKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIEl0ZXJhYmxl
PENvbGxlY3Rpb25UeXBlPihjb2xsZWN0aW9uLCBpbmRpY2VzKCkpOwotICAgIH0KLQotICAgIGNv
bnN0IEJpdFZlY3RvciYgaW5kaWNlcygpIGNvbnN0IHsgcmV0dXJuIG1fc2V0OyB9Ci0KLSAgICB2
b2lkIGR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKLSAgICB7Ci0gICAgICAgIENvbW1hUHJp
bnRlciBjb21tYTsKLSAgICAgICAgZm9yIChzaXplX3QgaW5kZXggOiBpbmRpY2VzKCkpCi0gICAg
ICAgICAgICBvdXQucHJpbnQoY29tbWEsIFQ6OmR1bXBQcmVmaXgsIGluZGV4KTsKLSAgICB9Ci0K
LXByaXZhdGU6Ci0gICAgQml0VmVjdG9yIG1fc2V0OwotfTsKLQotfSB9IC8vIG5hbWVzcGFjZSBK
U0M6OkIzCi0KLSNlbmRpZiAvLyBCM0luZGV4U2V0X2gKLQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNMb3dlclRvQWlyLmNwcAppbmRleCAzMTJkOTM3Y2MxYmJkNTgxZjQwMmRlMDZiNWRjNzI3
OTBkMTg1NzdmLi5hNmI2YWUxNTlmZTE1NzJmM2Q5MTgwNDc5NjM1NmE5YTVmMDllM2YyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcApAQCAtNDAsOCArNDAsNiBA
QAogI2luY2x1ZGUgIkIzQ2hlY2tTcGVjaWFsLmgiCiAjaW5jbHVkZSAiQjNDb21tdXRhdGl2aXR5
LmgiCiAjaW5jbHVkZSAiQjNEb21pbmF0b3JzLmgiCi0jaW5jbHVkZSAiQjNJbmRleE1hcC5oIgot
I2luY2x1ZGUgIkIzSW5kZXhTZXQuaCIKICNpbmNsdWRlICJCM01lbW9yeVZhbHVlLmgiCiAjaW5j
bHVkZSAiQjNQYXRjaHBvaW50U3BlY2lhbC5oIgogI2luY2x1ZGUgIkIzUGF0Y2hwb2ludFZhbHVl
LmgiCkBAIC01NSw2ICs1Myw4IEBACiAjaW5jbHVkZSAiQjNWYWx1ZUlubGluZXMuaCIKICNpbmNs
dWRlICJCM1ZhcmlhYmxlLmgiCiAjaW5jbHVkZSAiQjNWYXJpYWJsZVZhbHVlLmgiCisjaW5jbHVk
ZSA8d3RmL0luZGV4TWFwLmg+CisjaW5jbHVkZSA8d3RmL0luZGV4U2V0Lmg+CiAjaW5jbHVkZSA8
d3RmL0xpc3REdW1wLmg+CiAKICNpZiBDT01QSUxFUihHQ0MpICYmIEFTU0VSVF9ESVNBQkxFRApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUGhpQ2hpbGRyZW4uaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1BoaUNoaWxkcmVuLmgKaW5kZXggY2RmMzY4ZjI0YWE2
ZTVhNTgzOWYzZmFhNjVkZjA5ZGEwNjM0NWNlNy4uZTExZmNiZWI4OTY1MDFjNjZhZDNhY2MzN2Qy
MDFiMDE2ZTU1MGZjYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUGhp
Q2hpbGRyZW4uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQaGlDaGlsZHJlbi5o
CkBAIC0yOCwxMCArMjgsMTAgQEAKIAogI2lmIEVOQUJMRShCM19KSVQpCiAKLSNpbmNsdWRlICJC
M0luZGV4TWFwLmgiCiAjaW5jbHVkZSAiQjNQcm9jZWR1cmUuaCIKICNpbmNsdWRlICJCM1Vwc2ls
b25WYWx1ZS5oIgogI2luY2x1ZGUgPHd0Zi9HcmFwaE5vZGVXb3JrbGlzdC5oPgorI2luY2x1ZGUg
PHd0Zi9JbmRleE1hcC5oPgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJlLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUuaAppbmRleCA1NzY0MTNlMTA5MGE4NDc3ZTM0
ZDQyMzU4YzY5ODQ2NWMxYWQ1OTFkLi5lMmUxMzRkYWJlY2QwMzc0OWZlN2E5N2Y0ODhiZThmYTBi
Y2M0OGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUuaApAQCAtNDAsNiAr
NDAsNyBAQAogI2luY2x1ZGUgPHd0Zi9CYWcuaD4KICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5o
PgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL0luZGV4ZWRDb250YWlu
ZXJJdGVyYXRvci5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0
Zi9QcmludFN0cmVhbS5oPgogI2luY2x1ZGUgPHd0Zi9TaGFyZWRUYXNrLmg+CkBAIC0xMzMsNTMg
KzEzNCw3IEBAIGNsYXNzIFByb2NlZHVyZSB7CiAgICAgQmFzaWNCbG9jayogYXQodW5zaWduZWQg
aW5kZXgpIGNvbnN0IHsgcmV0dXJuIG1fYmxvY2tzW2luZGV4XS5nZXQoKTsgfQogICAgIEJhc2lj
QmxvY2sqIG9wZXJhdG9yW10odW5zaWduZWQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIGF0KGluZGV4
KTsgfQogCi0gICAgY2xhc3MgaXRlcmF0b3IgewotICAgIHB1YmxpYzoKLSAgICAgICAgaXRlcmF0
b3IoKQotICAgICAgICAgICAgOiBtX3Byb2NlZHVyZShudWxscHRyKQotICAgICAgICAgICAgLCBt
X2luZGV4KDApCi0gICAgICAgIHsKLSAgICAgICAgfQotCi0gICAgICAgIGl0ZXJhdG9yKGNvbnN0
IFByb2NlZHVyZSYgcHJvY2VkdXJlLCB1bnNpZ25lZCBpbmRleCkKLSAgICAgICAgICAgIDogbV9w
cm9jZWR1cmUoJnByb2NlZHVyZSkKLSAgICAgICAgICAgICwgbV9pbmRleChmaW5kTmV4dChpbmRl
eCkpCi0gICAgICAgIHsKLSAgICAgICAgfQotCi0gICAgICAgIEJhc2ljQmxvY2sqIG9wZXJhdG9y
KigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBtX3Byb2NlZHVyZS0+YXQobV9pbmRl
eCk7Ci0gICAgICAgIH0KLQotICAgICAgICBpdGVyYXRvciYgb3BlcmF0b3IrKygpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIG1faW5kZXggPSBmaW5kTmV4dChtX2luZGV4ICsgMSk7Ci0gICAgICAg
ICAgICByZXR1cm4gKnRoaXM7Ci0gICAgICAgIH0KLQotICAgICAgICBib29sIG9wZXJhdG9yPT0o
Y29uc3QgaXRlcmF0b3ImIG90aGVyKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICBBU1NF
UlQobV9wcm9jZWR1cmUgPT0gb3RoZXIubV9wcm9jZWR1cmUpOwotICAgICAgICAgICAgcmV0dXJu
IG1faW5kZXggPT0gb3RoZXIubV9pbmRleDsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAg
Ym9vbCBvcGVyYXRvciE9KGNvbnN0IGl0ZXJhdG9yJiBvdGhlcikgY29uc3QKLSAgICAgICAgewot
ICAgICAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwotICAgICAgICB9Ci0KLSAgICBw
cml2YXRlOgotICAgICAgICB1bnNpZ25lZCBmaW5kTmV4dCh1bnNpZ25lZCBpbmRleCkKLSAgICAg
ICAgewotICAgICAgICAgICAgd2hpbGUgKGluZGV4IDwgbV9wcm9jZWR1cmUtPnNpemUoKSAmJiAh
bV9wcm9jZWR1cmUtPmF0KGluZGV4KSkKLSAgICAgICAgICAgICAgICBpbmRleCsrOwotICAgICAg
ICAgICAgcmV0dXJuIGluZGV4OwotICAgICAgICB9Ci0KLSAgICAgICAgY29uc3QgUHJvY2VkdXJl
KiBtX3Byb2NlZHVyZTsKLSAgICAgICAgdW5zaWduZWQgbV9pbmRleDsKLSAgICB9OworICAgIHR5
cGVkZWYgV1RGOjpJbmRleGVkQ29udGFpbmVySXRlcmF0b3I8UHJvY2VkdXJlPiBpdGVyYXRvcjsK
IAogICAgIGl0ZXJhdG9yIGJlZ2luKCkgY29uc3QgeyByZXR1cm4gaXRlcmF0b3IoKnRoaXMsIDAp
OyB9CiAgICAgaXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gaXRlcmF0b3IoKnRoaXMsIHNp
emUoKSk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVjZURv
dWJsZVRvRmxvYXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUmVkdWNlRG91Ymxl
VG9GbG9hdC5jcHAKaW5kZXggYmQ3Y2QwOTBjNmE2M2Y3YjlkMTMwN2Q0ZmEzNjc5NmExYjk1NzMy
Ni4uOGVjZTM4OWNhMmVmZDUzODlkYzkwMmRmMzE1NjFmOTU2M2QzNTk3MSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUmVkdWNlRG91YmxlVG9GbG9hdC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUmVkdWNlRG91YmxlVG9GbG9hdC5jcHAKQEAgLTI5
LDExICsyOSwxMSBAQAogI2lmIEVOQUJMRShCM19KSVQpCiAKICNpbmNsdWRlICJCM0Jhc2ljQmxv
Y2suaCIKLSNpbmNsdWRlICJCM0luZGV4U2V0LmgiCiAjaW5jbHVkZSAiQjNJbnNlcnRpb25TZXRJ
bmxpbmVzLmgiCiAjaW5jbHVkZSAiQjNQaGFzZVNjb3BlLmgiCiAjaW5jbHVkZSAiQjNVc2VDb3Vu
dHMuaCIKICNpbmNsdWRlICJCM1ZhbHVlSW5saW5lcy5oIgorI2luY2x1ZGUgPHd0Zi9JbmRleFNl
dC5oPgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUmVkdWNlU3RyZW5ndGguY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzUmVkdWNlU3RyZW5ndGguY3BwCmluZGV4IDRjYmYyNTI4ODZiOTdjY2Jm
YjM3NjQwNTdmOWY2MDQyYzZhMWU1YTAuLjBiZDFlYTBiNDhjZTE5YTYwYmVmNzI2ZGJlOTg4NTAz
ZTk0OGNkMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVjZVN0
cmVuZ3RoLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNSZWR1Y2VTdHJlbmd0
aC5jcHAKQEAgLTMyLDcgKzMyLDYgQEAKICNpbmNsdWRlICJCM0Jsb2NrSW5zZXJ0aW9uU2V0Lmgi
CiAjaW5jbHVkZSAiQjNDb21wdXRlRGl2aXNpb25NYWdpYy5oIgogI2luY2x1ZGUgIkIzRG9taW5h
dG9ycy5oIgotI2luY2x1ZGUgIkIzSW5kZXhTZXQuaCIKICNpbmNsdWRlICJCM0luc2VydGlvblNl
dElubGluZXMuaCIKICNpbmNsdWRlICJCM01lbW9yeVZhbHVlLmgiCiAjaW5jbHVkZSAiQjNQaGFz
ZVNjb3BlLmgiCkBAIC00OCw2ICs0Nyw3IEBACiAjaW5jbHVkZSAiQjNWYXJpYWJsZVZhbHVlLmgi
CiAjaW5jbHVkZSA8d3RmL0dyYXBoTm9kZVdvcmtsaXN0Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hN
YXAuaD4KKyNpbmNsdWRlIDx3dGYvSW5kZXhTZXQuaD4KIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVz
cGFjZSBCMyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1NTQUNh
bGN1bGF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1NTQUNhbGN1bGF0b3IuaApp
bmRleCBmNTc2NjgyMmY0ZmZjMzZiZDZhMjJhOTc3MGYyMDIwZGY1MTI0NDZiLi4xZTk2MjgyNjJm
ZjNmZWQyMjkwMzFhZWEzZDE3ZDBiNjgxMmFmZjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNTU0FDYWxjdWxhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzU1NBQ2FsY3VsYXRvci5oCkBAIC0yOSw5ICsyOSw5IEBACiAjaWYgRU5BQkxFKEIzX0pJ
VCkKIAogI2luY2x1ZGUgIkIzRG9taW5hdG9ycy5oIgotI2luY2x1ZGUgIkIzSW5kZXhNYXAuaCIK
ICNpbmNsdWRlICJCM1Byb2NlZHVyZUlubGluZXMuaCIKICNpbmNsdWRlIDx3dGYvQmFnLmg+Cisj
aW5jbHVkZSA8d3RmL0luZGV4TWFwLmg+CiAjaW5jbHVkZSA8d3RmL1NlZ21lbnRlZFZlY3Rvci5o
PgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM1VzZUNvdW50cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzVXNlQ291bnRzLmgKaW5kZXggYTU5ZDU4YWE0NmM2MjcyODU3ZTgyOWQzOGExNGVmMDgwN2I3
MzdlOS4uNmU5ZTQ4MmI3OTlkMjQwYjBlNjU5NTZlZjQ1YmI0Njg0MzNmZmY2YiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVXNlQ291bnRzLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzVXNlQ291bnRzLmgKQEAgLTI4LDggKzI4LDggQEAKIAogI2lmIEVO
QUJMRShCM19KSVQpCiAKLSNpbmNsdWRlICJCM0luZGV4TWFwLmgiCiAjaW5jbHVkZSAiQjNWYWx1
ZS5oIgorI2luY2x1ZGUgPHd0Zi9JbmRleE1hcC5oPgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNw
YWNlIEIzIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJD
b2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckNvZGUuaAppbmRleCA2NGE3
NDVkMDIxMGI2YTdmY2I3YTkzNTFiMTMwYWUwOWEyNmQyNTBkLi5mMTllZmIyODAyZjZhZDU1OGVl
ODdiZGUyZTZhYjYyNDhiNjE1YTBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvYWlyL0FpckNvZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckNv
ZGUuaApAQCAtMzMsMTEgKzMzLDExIEBACiAjaW5jbHVkZSAiQWlyU3BlY2lhbC5oIgogI2luY2x1
ZGUgIkFpclN0YWNrU2xvdC5oIgogI2luY2x1ZGUgIkFpclRtcC5oIgotI2luY2x1ZGUgIkIzSW5k
ZXhNYXAuaCIKICNpbmNsdWRlICJCM1NwYXJzZUNvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJDQ2Fs
bEhlbHBlcnMuaCIKICNpbmNsdWRlICJSZWdpc3RlckF0T2Zmc2V0TGlzdC5oIgogI2luY2x1ZGUg
IlN0YWNrQWxpZ25tZW50LmgiCisjaW5jbHVkZSA8d3RmL0luZGV4TWFwLmg+CiAKIG5hbWVzcGFj
ZSBKU0MgeyBuYW1lc3BhY2UgQjMgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvYWlyL0FpckVsaW1pbmF0ZURlYWRDb2RlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9haXIvQWlyRWxpbWluYXRlRGVhZENvZGUuY3BwCmluZGV4IDM2NjNlYWE5OTc5NjdmNTdl
NDUxYmI2MWE0NmQ5YWRjMzAwMTNiNzUuLmNhMzZhZjkzZTc5MTA3OTljYzdiZDQ4MTFiMzA3NDU2
NWM3MzhmMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRWxp
bWluYXRlRGVhZENvZGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWly
RWxpbWluYXRlRGVhZENvZGUuY3BwCkBAIC0zMSw3ICszMSw3IEBACiAjaW5jbHVkZSAiQWlyQ29k
ZS5oIgogI2luY2x1ZGUgIkFpckluc3RJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQWlyUGhhc2VTY29w
ZS5oIgotI2luY2x1ZGUgIkIzSW5kZXhTZXQuaCIKKyNpbmNsdWRlIDx3dGYvSW5kZXhTZXQuaD4K
IAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7IG5hbWVzcGFjZSBBaXIgewogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckZpeE9idmlvdXNTcGlsbHMu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJGaXhPYnZpb3VzU3BpbGxzLmNw
cAppbmRleCA3MWQ5OTBmMjFlZjY0NjA2NGQxMjkzZjBkYjBmN2ExZWQwYjBlYmE0Li5iYWJkMTcz
NThiYThmNDliMzQ0YmU1ZGE2ZjBjZjZhZjMwYjQ1NjcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvYWlyL0FpckZpeE9idmlvdXNTcGlsbHMuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRml4T2J2aW91c1NwaWxscy5jcHAKQEAgLTMyLDcgKzMy
LDcgQEAKICNpbmNsdWRlICJBaXJDb2RlLmgiCiAjaW5jbHVkZSAiQWlySW5zdElubGluZXMuaCIK
ICNpbmNsdWRlICJBaXJQaGFzZVNjb3BlLmgiCi0jaW5jbHVkZSAiQjNJbmRleE1hcC5oIgorI2lu
Y2x1ZGUgPHd0Zi9JbmRleE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9MaXN0RHVtcC5oPgogCiBuYW1l
c3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsgbmFtZXNwYWNlIEFpciB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckZpeFBhcnRpYWxSZWdpc3RlclN0YWxscy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckZpeFBhcnRpYWxSZWdpc3RlclN0
YWxscy5jcHAKaW5kZXggZWQ3YjgwYTBjOGI0NmFhMjRjYmFjNmQ5N2JlMzlkYWQ2ZDIxN2NmYi4u
NTM5OTc5OTJkODZjYjcyMDNiYzBlYzgzNGMwZjg2ZDRmMTU1YzQzNiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJGaXhQYXJ0aWFsUmVnaXN0ZXJTdGFsbHMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRml4UGFydGlhbFJlZ2lzdGVy
U3RhbGxzLmNwcApAQCAtMzQsOSArMzQsOSBAQAogI2luY2x1ZGUgIkFpckluc3QuaCIKICNpbmNs
dWRlICJBaXJJbnN0SW5saW5lcy5oIgogI2luY2x1ZGUgIkFpclBoYXNlU2NvcGUuaCIKLSNpbmNs
dWRlICJCM0luZGV4TWFwLmgiCi0jaW5jbHVkZSAiQjNJbmRleFNldC5oIgogI2luY2x1ZGUgIk1h
Y3JvQXNzZW1ibGVyLmgiCisjaW5jbHVkZSA8d3RmL0luZGV4TWFwLmg+CisjaW5jbHVkZSA8d3Rm
L0luZGV4U2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgSlNDIHsg
bmFtZXNwYWNlIEIzIHsgbmFtZXNwYWNlIEFpciB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvYWlyL0FpckdlbmVyYXRlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9haXIvQWlyR2VuZXJhdGUuY3BwCmluZGV4IDQxMTg0MTIxYzg1MGMzN2I1MzYxOGRmZThiYTM5
NGY0NDA3YmRhMDAuLjBhMThhZGE2MGNiNmQ1NTIwOTMyOWQ5YzY3NmY3YWU4OWQyY2IxMzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyR2VuZXJhdGUuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyR2VuZXJhdGUuY3BwCkBAIC00OCwx
MyArNDgsMTMgQEAKICNpbmNsdWRlICJBaXJTcGlsbEV2ZXJ5dGhpbmcuaCIKICNpbmNsdWRlICJB
aXJWYWxpZGF0ZS5oIgogI2luY2x1ZGUgIkIzQ29tbW9uLmgiCi0jaW5jbHVkZSAiQjNJbmRleE1h
cC5oIgogI2luY2x1ZGUgIkIzUHJvY2VkdXJlLmgiCiAjaW5jbHVkZSAiQjNUaW1pbmdTY29wZS5o
IgogI2luY2x1ZGUgIkIzVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQ0NhbGxIZWxwZXJzLmgi
CiAjaW5jbHVkZSAiRGlzYWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlLmgiCiAjaW5jbHVk
ZSAiTGlua0J1ZmZlci5oIgorI2luY2x1ZGUgPHd0Zi9JbmRleE1hcC5oPgogCiBuYW1lc3BhY2Ug
SlNDIHsgbmFtZXNwYWNlIEIzIHsgbmFtZXNwYWNlIEFpciB7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyR2VuZXJhdGlvbkNvbnRleHQuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyR2VuZXJhdGlvbkNvbnRleHQuaAppbmRleCBlY2E5MDdm
MDFlZGZjZjUxMDY3ZDk4OTVkOTFkOWMzMTYyZmEzNzgxLi43ZGM2ZTBkMzI0NDdkZjZiMzU3Njg1
ZDk4ODEzZjE5M2VlNDIzZTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
YWlyL0FpckdlbmVyYXRpb25Db250ZXh0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L2Fpci9BaXJHZW5lcmF0aW9uQ29udGV4dC5oCkBAIC0yOSw5ICsyOSw5IEBACiAjaWYgRU5BQkxF
KEIzX0pJVCkKIAogI2luY2x1ZGUgIkFpckJhc2ljQmxvY2suaCIKLSNpbmNsdWRlICJCM0luZGV4
TWFwLmgiCiAjaW5jbHVkZSAiQ0NhbGxIZWxwZXJzLmgiCiAjaW5jbHVkZSA8d3RmL0JveC5oPgor
I2luY2x1ZGUgPHd0Zi9JbmRleE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9TaGFyZWRUYXNrLmg+CiAj
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvYWlyL0FpckxpdmVuZXNzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fp
ckxpdmVuZXNzLmgKaW5kZXggYWMxMThhYWY1ZjIzMGM4ZDBkYzlhYjNjNTJlNWMxNjY5NzFiYzhh
ZS4uZjAxNDYwYTQxOTVkMmIwMDBjZTViZmFkMGIyYzdkMTc1OWQ2Y2M0OCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJMaXZlbmVzcy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyTGl2ZW5lc3MuaApAQCAtMzMsOCArMzMsOCBAQAogI2lu
Y2x1ZGUgIkFpckluc3RJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQWlyU3RhY2tTbG90LmgiCiAjaW5j
bHVkZSAiQWlyVG1wSW5saW5lcy5oIgotI2luY2x1ZGUgIkIzSW5kZXhNYXAuaCIKLSNpbmNsdWRl
ICJCM0luZGV4U2V0LmgiCisjaW5jbHVkZSA8d3RmL0luZGV4TWFwLmg+CisjaW5jbHVkZSA8d3Rm
L0luZGV4U2V0Lmg+CiAjaW5jbHVkZSA8d3RmL0luZGV4U3BhcnNlU2V0Lmg+CiAjaW5jbHVkZSA8
d3RmL0xpc3REdW1wLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9h
aXIvQWlyU3BpbGxFdmVyeXRoaW5nLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIv
QWlyU3BpbGxFdmVyeXRoaW5nLmNwcAppbmRleCAzYTA2MzZkZTlhMWJlYWFjOWRkZmFhY2RjODM0
NDA3NmZkZTMzZWM4Li4xNjc2NzA1OGZmNThmZWQ4ZGZiZTkzMTBjMDk3YzM4YzJmZTVhYzUxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpclNwaWxsRXZlcnl0aGlu
Zy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJTcGlsbEV2ZXJ5dGhp
bmcuY3BwCkBAIC0zNSw3ICszNSw3IEBACiAjaW5jbHVkZSAiQWlyTGl2ZW5lc3MuaCIKICNpbmNs
dWRlICJBaXJQaGFzZVNjb3BlLmgiCiAjaW5jbHVkZSAiQWlyUmVnaXN0ZXJQcmlvcml0eS5oIgot
I2luY2x1ZGUgIkIzSW5kZXhNYXAuaCIKKyNpbmNsdWRlIDx3dGYvSW5kZXhNYXAuaD4KIAogbmFt
ZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7IG5hbWVzcGFjZSBBaXIgewogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvR2VuZXJhdG9yUHJvdG90eXBlLmpzIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0dlbmVyYXRvclByb3RvdHlwZS5qcwppbmRl
eCAzYzE0MDY4N2RmYzdlMDBlZmU5MWFlODBiMmFjNjc2ZmE5YmY0OGY0Li40OTlkYmQzOTJlODMx
M2RjZGQ4NmVjOGMxNjA1NjlkN2Q2ZjU0OWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnVpbHRpbnMvR2VuZXJhdG9yUHJvdG90eXBlLmpzCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9idWlsdGlucy9HZW5lcmF0b3JQcm90b3R5cGUuanMKQEAgLTUxLDcgKzUxLDcgQEAg
ZnVuY3Rpb24gZ2VuZXJhdG9yUmVzdW1lKGdlbmVyYXRvciwgc2VudFZhbHVlLCByZXN1bWVNb2Rl
KQogICAgIH0gZWxzZSB7CiAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICBnZW5lcmF0b3IuQGdl
bmVyYXRvclN0YXRlID0gQEdlbmVyYXRvclN0YXRlRXhlY3V0aW5nOwotICAgICAgICAgICAgdmFs
dWUgPSBnZW5lcmF0b3IuQGdlbmVyYXRvck5leHQuQGNhbGwoZ2VuZXJhdG9yLkBnZW5lcmF0b3JU
aGlzLCBnZW5lcmF0b3IsIHN0YXRlLCBzZW50VmFsdWUsIHJlc3VtZU1vZGUpOworICAgICAgICAg
ICAgdmFsdWUgPSBnZW5lcmF0b3IuQGdlbmVyYXRvck5leHQuQGNhbGwoZ2VuZXJhdG9yLkBnZW5l
cmF0b3JUaGlzLCBnZW5lcmF0b3IsIHN0YXRlLCBzZW50VmFsdWUsIHJlc3VtZU1vZGUsIGdlbmVy
YXRvci5AZ2VuZXJhdG9yRnJhbWUpOwogICAgICAgICAgICAgaWYgKGdlbmVyYXRvci5AZ2VuZXJh
dG9yU3RhdGUgPT09IEBHZW5lcmF0b3JTdGF0ZUV4ZWN1dGluZykgewogICAgICAgICAgICAgICAg
IGdlbmVyYXRvci5AZ2VuZXJhdG9yU3RhdGUgPSBAR2VuZXJhdG9yU3RhdGVDb21wbGV0ZWQ7CiAg
ICAgICAgICAgICAgICAgZG9uZSA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suY3BwCmluZGV4IDdmMTdjMGVmMTBiNDMz
ZmFjOGY1OGNiM2I5Y2E1ZDRkMDE1YmJhMDguLjI5OTA4MmRkZDFlYzdlY2ZmN2E2YzE5ODNjMWVk
YWJkZTUzYmNjM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZUJhc2ljQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZUJhc2ljQmxvY2suY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiQnl0
ZWNvZGVCYXNpY0Jsb2NrLmgiCiAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJJ
bnRlcnByZXRlcklubGluZXMuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAi
UHJlY2lzZUp1bXBUYXJnZXRzLmgiCiAKQEAgLTEwNSwxNSArMTA2LDIxIEBAIHN0YXRpYyBib29s
IGlzSnVtcFRhcmdldChPcGNvZGVJRCBvcGNvZGVJRCwgY29uc3QgVmVjdG9yPHVuc2lnbmVkLCAz
Mj4mIGp1bXBUYXJnCiAgICAgcmV0dXJuIHN0ZDo6YmluYXJ5X3NlYXJjaChqdW1wVGFyZ2V0cy5i
ZWdpbigpLCBqdW1wVGFyZ2V0cy5lbmQoKSwgYnl0ZWNvZGVPZmZzZXQpOwogfQogCi1zdGF0aWMg
dm9pZCBsaW5rQmxvY2tzKEJ5dGVjb2RlQmFzaWNCbG9jayogcHJlZGVjZXNzb3IsIEJ5dGVjb2Rl
QmFzaWNCbG9jayogc3VjY2Vzc29yKQotewotICAgIHByZWRlY2Vzc29yLT5hZGRTdWNjZXNzb3Io
c3VjY2Vzc29yKTsKLX0KLQotdm9pZCBjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2NrcyhDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+
PiYgYmFzaWNCbG9ja3MpCit0ZW1wbGF0ZTx0eXBlbmFtZSBCbG9jaywgdHlwZW5hbWUgSW5zdHJ1
Y3Rpb24+Cit2b2lkIEJ5dGVjb2RlQmFzaWNCbG9jazo6Y29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9j
a3NJbnRlcm5hbChCbG9jayogY29kZUJsb2NrLCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVn
aW4sIHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQsIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0
ZWNvZGVCYXNpY0Jsb2NrPj4mIGJhc2ljQmxvY2tzKQogewogICAgIFZlY3Rvcjx1bnNpZ25lZCwg
MzI+IGp1bXBUYXJnZXRzOwotICAgIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMoY29kZUJsb2Nr
LCBqdW1wVGFyZ2V0cyk7CisgICAgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhjb2RlQmxvY2ss
IGluc3RydWN0aW9uc0JlZ2luLCBpbnN0cnVjdGlvbkNvdW50LCBqdW1wVGFyZ2V0cyk7CisKKyAg
ICBhdXRvIGFwcGVuZEJsb2NrID0gWyZdIChzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Js
b2NrPiYmIGJsb2NrKSB7CisgICAgICAgIGJsb2NrLT5tX2luZGV4ID0gYmFzaWNCbG9ja3Muc2l6
ZSgpOworICAgICAgICBiYXNpY0Jsb2Nrcy5hcHBlbmQoV1RGTW92ZShibG9jaykpOworICAgIH07
CisKKyAgICBhdXRvIGxpbmtCbG9ja3MgPSBbJl0gKEJ5dGVjb2RlQmFzaWNCbG9jayogZnJvbSwg
Qnl0ZWNvZGVCYXNpY0Jsb2NrKiB0bykgeworICAgICAgICBmcm9tLT5hZGRTdWNjZXNzb3IodG8p
OworICAgICAgICB0by0+YWRkUHJlZGVjZXNzb3IoZnJvbSk7CisgICAgfTsKIAogICAgIC8vIENy
ZWF0ZSB0aGUgZW50cnkgYW5kIGV4aXQgYmFzaWMgYmxvY2tzLgogICAgIGJhc2ljQmxvY2tzLnJl
c2VydmVDYXBhY2l0eShqdW1wVGFyZ2V0cy5zaXplKCkgKyAyKTsKQEAgLTEyMiwxOSArMTI5LDE3
IEBAIHZvaWQgY29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MoQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0CiAgICAgYXV0byBmaXJzdEJsb2NrID0gc3RkOjpt
YWtlX3VuaXF1ZTxCeXRlY29kZUJhc2ljQmxvY2s+KDAsIDApOwogICAgIGxpbmtCbG9ja3MoZW50
cnkuZ2V0KCksIGZpcnN0QmxvY2suZ2V0KCkpOwogCi0gICAgYmFzaWNCbG9ja3MuYXBwZW5kKFdU
Rk1vdmUoZW50cnkpKTsKKyAgICBhcHBlbmRCbG9jayhXVEZNb3ZlKGVudHJ5KSk7CiAgICAgQnl0
ZWNvZGVCYXNpY0Jsb2NrKiBjdXJyZW50ID0gZmlyc3RCbG9jay5nZXQoKTsKLSAgICBiYXNpY0Js
b2Nrcy5hcHBlbmQoV1RGTW92ZShmaXJzdEJsb2NrKSk7CisgICAgYXBwZW5kQmxvY2soV1RGTW92
ZShmaXJzdEJsb2NrKSk7CiAKICAgICBhdXRvIGV4aXQgPSBzdGQ6Om1ha2VfdW5pcXVlPEJ5dGVj
b2RlQmFzaWNCbG9jaz4oQnl0ZWNvZGVCYXNpY0Jsb2NrOjpFeGl0QmxvY2spOwogCiAgICAgYm9v
bCBuZXh0SW5zdHJ1Y3Rpb25Jc0xlYWRlciA9IGZhbHNlOwogCiAgICAgSW50ZXJwcmV0ZXIqIGlu
dGVycHJldGVyID0gY29kZUJsb2NrLT52bSgpLT5pbnRlcnByZXRlcjsKLSAgICBJbnN0cnVjdGlv
biogaW5zdHJ1Y3Rpb25zQmVnaW4gPSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCk7
Ci0gICAgdW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCA9IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25z
KCkuc2l6ZSgpOwogICAgIGZvciAodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQgPSAwOyBieXRlY29k
ZU9mZnNldCA8IGluc3RydWN0aW9uQ291bnQ7KSB7Ci0gICAgICAgIE9wY29kZUlEIG9wY29kZUlE
ID0gaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGluc3RydWN0aW9uc0JlZ2luW2J5dGVjb2RlT2Zm
c2V0XS51Lm9wY29kZSk7CisgICAgICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0ZXIt
PmdldE9wY29kZUlEKGluc3RydWN0aW9uc0JlZ2luW2J5dGVjb2RlT2Zmc2V0XSk7CiAgICAgICAg
IHVuc2lnbmVkIG9wY29kZUxlbmd0aCA9IG9wY29kZUxlbmd0aHNbb3Bjb2RlSURdOwogCiAgICAg
ICAgIGJvb2wgY3JlYXRlZEJsb2NrID0gZmFsc2U7CkBAIC0xNDIsNyArMTQ3LDcgQEAgdm9pZCBj
b21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2NrcyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgVmVjdG9yPHN0
ZDo6dW5pcXVlX3B0cjxCeXQKICAgICAgICAgaWYgKGlzSnVtcFRhcmdldChvcGNvZGVJRCwganVt
cFRhcmdldHMsIGJ5dGVjb2RlT2Zmc2V0KSB8fCBuZXh0SW5zdHJ1Y3Rpb25Jc0xlYWRlcikgewog
ICAgICAgICAgICAgYXV0byBuZXdCbG9jayA9IHN0ZDo6bWFrZV91bmlxdWU8Qnl0ZWNvZGVCYXNp
Y0Jsb2NrPihieXRlY29kZU9mZnNldCwgb3Bjb2RlTGVuZ3RoKTsKICAgICAgICAgICAgIGN1cnJl
bnQgPSBuZXdCbG9jay5nZXQoKTsKLSAgICAgICAgICAgIGJhc2ljQmxvY2tzLmFwcGVuZChXVEZN
b3ZlKG5ld0Jsb2NrKSk7CisgICAgICAgICAgICBhcHBlbmRCbG9jayhXVEZNb3ZlKG5ld0Jsb2Nr
KSk7CiAgICAgICAgICAgICBjcmVhdGVkQmxvY2sgPSB0cnVlOwogICAgICAgICAgICAgbmV4dElu
c3RydWN0aW9uSXNMZWFkZXIgPSBmYWxzZTsKICAgICAgICAgICAgIGJ5dGVjb2RlT2Zmc2V0ICs9
IG9wY29kZUxlbmd0aDsKQEAgLTE2OSw4ICsxNzQsNyBAQCB2b2lkIGNvbXB1dGVCeXRlY29kZUJh
c2ljQmxvY2tzKENvZGVCbG9jayogY29kZUJsb2NrLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5
dAogCiAgICAgICAgIGJvb2wgZmFsbHNUaHJvdWdoID0gdHJ1ZTsgCiAgICAgICAgIGZvciAodW5z
aWduZWQgYnl0ZWNvZGVPZmZzZXQgPSBibG9jay0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKTsgYnl0
ZWNvZGVPZmZzZXQgPCBibG9jay0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKSArIGJsb2NrLT50b3Rh
bEJ5dGVjb2RlTGVuZ3RoKCk7KSB7Ci0gICAgICAgICAgICBjb25zdCBJbnN0cnVjdGlvbiYgY3Vy
cmVudEluc3RydWN0aW9uID0gaW5zdHJ1Y3Rpb25zQmVnaW5bYnl0ZWNvZGVPZmZzZXRdOwotICAg
ICAgICAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoY3Vy
cmVudEluc3RydWN0aW9uLnUub3Bjb2RlKTsKKyAgICAgICAgICAgIE9wY29kZUlEIG9wY29kZUlE
ID0gaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGluc3RydWN0aW9uc0JlZ2luW2J5dGVjb2RlT2Zm
c2V0XSk7CiAgICAgICAgICAgICB1bnNpZ25lZCBvcGNvZGVMZW5ndGggPSBvcGNvZGVMZW5ndGhz
W29wY29kZUlEXTsKICAgICAgICAgICAgIC8vIElmIHdlIGZvdW5kIGEgdGVybWluYWwgYnl0ZWNv
ZGUsIGxpbmsgdG8gdGhlIGV4aXQgYmxvY2suCiAgICAgICAgICAgICBpZiAoaXNUZXJtaW5hbChv
cGNvZGVJRCkpIHsKQEAgLTE4NSw3ICsxODksNyBAQCB2b2lkIGNvbXB1dGVCeXRlY29kZUJhc2lj
QmxvY2tzKENvZGVCbG9jayogY29kZUJsb2NrLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dAog
ICAgICAgICAgICAgLy8gYmxvY2sgYmVjYXVzZSB0aGUgZmluYWxseSBibG9jayB3aWxsIGNyZWF0
ZSBpdHMgb3duIGNhdGNoLCB3aGljaCB3aWxsIGdlbmVyYXRlIGEgSGFuZGxlckluZm8uCiAgICAg
ICAgICAgICBpZiAoaXNUaHJvdyhvcGNvZGVJRCkpIHsKICAgICAgICAgICAgICAgICBBU1NFUlQo
Ynl0ZWNvZGVPZmZzZXQgKyBvcGNvZGVMZW5ndGggPT0gYmxvY2stPmxlYWRlckJ5dGVjb2RlT2Zm
c2V0KCkgKyBibG9jay0+dG90YWxCeXRlY29kZUxlbmd0aCgpKTsKLSAgICAgICAgICAgICAgICBI
YW5kbGVySW5mbyogaGFuZGxlciA9IGNvZGVCbG9jay0+aGFuZGxlckZvckJ5dGVjb2RlT2Zmc2V0
KGJ5dGVjb2RlT2Zmc2V0KTsKKyAgICAgICAgICAgICAgICBhdXRvKiBoYW5kbGVyID0gY29kZUJs
b2NrLT5oYW5kbGVyRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpOwogICAgICAgICAg
ICAgICAgIGZhbGxzVGhyb3VnaCA9IGZhbHNlOwogICAgICAgICAgICAgICAgIGlmICghaGFuZGxl
cikgewogICAgICAgICAgICAgICAgICAgICBsaW5rQmxvY2tzKGJsb2NrLCBleGl0LmdldCgpKTsK
QEAgLTIwNSw3ICsyMDksNyBAQCB2b2lkIGNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzKENvZGVC
bG9jayogY29kZUJsb2NrLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dAogICAgICAgICAgICAg
aWYgKGlzQnJhbmNoKG9wY29kZUlEKSkgewogICAgICAgICAgICAgICAgIEFTU0VSVChieXRlY29k
ZU9mZnNldCArIG9wY29kZUxlbmd0aCA9PSBibG9jay0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKSAr
IGJsb2NrLT50b3RhbEJ5dGVjb2RlTGVuZ3RoKCkpOwogICAgICAgICAgICAgICAgIFZlY3Rvcjx1
bnNpZ25lZCwgMT4gYnl0ZWNvZGVPZmZzZXRzSnVtcGVkVG87Ci0gICAgICAgICAgICAgICAgZmlu
ZEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoY29kZUJsb2NrLCBieXRlY29kZU9mZnNldCwg
Ynl0ZWNvZGVPZmZzZXRzSnVtcGVkVG8pOworICAgICAgICAgICAgICAgIGZpbmRKdW1wVGFyZ2V0
c0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb25zQmVnaW4sIGJ5dGVjb2Rl
T2Zmc2V0LCBieXRlY29kZU9mZnNldHNKdW1wZWRUbyk7CiAKICAgICAgICAgICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgYmFzaWNCbG9ja3Muc2l6ZSgpOyBpKyspIHsKICAgICAgICAg
ICAgICAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBvdGhlckJsb2NrID0gYmFzaWNCbG9ja3Nb
aV0uZ2V0KCk7CkBAIC0yMjksMTAgKzIzMywyMCBAQCB2b2lkIGNvbXB1dGVCeXRlY29kZUJhc2lj
QmxvY2tzKENvZGVCbG9jayogY29kZUJsb2NrLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dAog
ICAgICAgICB9CiAgICAgfQogCi0gICAgYmFzaWNCbG9ja3MuYXBwZW5kKFdURk1vdmUoZXhpdCkp
OworICAgIGFwcGVuZEJsb2NrKFdURk1vdmUoZXhpdCkpOwogICAgIAogICAgIGZvciAoYXV0byYg
YmFzaWNCbG9jayA6IGJhc2ljQmxvY2tzKQogICAgICAgICBiYXNpY0Jsb2NrLT5zaHJpbmtUb0Zp
dCgpOwogfQogCit2b2lkIEJ5dGVjb2RlQmFzaWNCbG9jazo6Y29tcHV0ZUJ5dGVjb2RlQmFzaWNC
bG9ja3MoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdp
biwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCwgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRl
Y29kZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9ja3MpCit7CisgICAgY29tcHV0ZUJ5dGVjb2RlQmFz
aWNCbG9ja3NJbnRlcm5hbChjb2RlQmxvY2ssIGluc3RydWN0aW9uc0JlZ2luLCBpbnN0cnVjdGlv
bkNvdW50LCBiYXNpY0Jsb2Nrcyk7Cit9CisKK3ZvaWQgQnl0ZWNvZGVCYXNpY0Jsb2NrOjpjb21w
dXRlQnl0ZWNvZGVCYXNpY0Jsb2NrcyhVbmxpbmtlZENvZGVCbG9jayogY29kZUJsb2NrLCBVbmxp
bmtlZEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25D
b3VudCwgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYgYmFzaWNC
bG9ja3MpCit7CisgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrOjpjb21wdXRlQnl0ZWNvZGVCYXNpY0Js
b2Nrc0ludGVybmFsKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb25zQmVnaW4sIGluc3RydWN0aW9uQ291
bnQsIGJhc2ljQmxvY2tzKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmgKaW5kZXggY2Q3
MTQ3N2VkNTA2YWE3ODgwMjE2NWZhY2RiN2E2ZDQ2ZjM4ZGMyYS4uNmEyZWRjNjBkYjNkN2I5OWRj
Y2RmZTk0NzhiZmNmZDUxMGU4ODI5YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suaApAQCAtMzMsNiArMzMsOSBAQAogbmFtZXNw
YWNlIEpTQyB7CiAKIGNsYXNzIENvZGVCbG9jazsKK2NsYXNzIFVubGlua2VkQ29kZUJsb2NrOwor
c3RydWN0IEluc3RydWN0aW9uOworc3RydWN0IFVubGlua2VkSW5zdHJ1Y3Rpb247CiAKIGNsYXNz
IEJ5dGVjb2RlQmFzaWNCbG9jayB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC00
OCwyOCArNTEsMzkgQEAgY2xhc3MgQnl0ZWNvZGVCYXNpY0Jsb2NrIHsKICAgICB1bnNpZ25lZCBs
ZWFkZXJCeXRlY29kZU9mZnNldCgpIHsgcmV0dXJuIG1fbGVhZGVyQnl0ZWNvZGVPZmZzZXQ7IH0K
ICAgICB1bnNpZ25lZCB0b3RhbEJ5dGVjb2RlTGVuZ3RoKCkgeyByZXR1cm4gbV90b3RhbEJ5dGVj
b2RlTGVuZ3RoOyB9CiAKLSAgICBWZWN0b3I8dW5zaWduZWQ+JiBieXRlY29kZU9mZnNldHMoKSB7
IHJldHVybiBtX2J5dGVjb2RlT2Zmc2V0czsgfQotICAgIHZvaWQgYWRkQnl0ZWNvZGVMZW5ndGgo
dW5zaWduZWQpOworICAgIGNvbnN0IFZlY3Rvcjx1bnNpZ25lZD4mIGJ5dGVjb2RlT2Zmc2V0cygp
IGNvbnN0IHsgcmV0dXJuIG1fYnl0ZWNvZGVPZmZzZXRzOyB9CiAKLSAgICBWZWN0b3I8Qnl0ZWNv
ZGVCYXNpY0Jsb2NrKj4mIHN1Y2Nlc3NvcnMoKSB7IHJldHVybiBtX3N1Y2Nlc3NvcnM7IH0KLSAg
ICB2b2lkIGFkZFN1Y2Nlc3NvcihCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrKSB7IG1fc3VjY2Vz
c29ycy5hcHBlbmQoYmxvY2spOyB9CisgICAgY29uc3QgVmVjdG9yPEJ5dGVjb2RlQmFzaWNCbG9j
ayo+JiBzdWNjZXNzb3JzKCkgY29uc3QgeyByZXR1cm4gbV9zdWNjZXNzb3JzOyB9CisgICAgY29u
c3QgVmVjdG9yPEJ5dGVjb2RlQmFzaWNCbG9jayo+JiBwcmVkZWNlc3NvcnMoKSBjb25zdCB7IHJl
dHVybiBtX3ByZWRlY2Vzc29yczsgfQogCiAgICAgRmFzdEJpdFZlY3RvciYgaW4oKSB7IHJldHVy
biBtX2luOyB9CiAgICAgRmFzdEJpdFZlY3RvciYgb3V0KCkgeyByZXR1cm4gbV9vdXQ7IH0KIAor
ICAgIHVuc2lnbmVkIGluZGV4KCkgY29uc3QgeyByZXR1cm4gbV9pbmRleDsgfQorCisgICAgc3Rh
dGljIHZvaWQgY29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MoQ29kZUJsb2NrKiwgSW5zdHJ1Y3Rp
b24qIGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50LCBWZWN0b3I8
c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+Jik7CisgICAgc3RhdGljIHZvaWQg
Y29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MoVW5saW5rZWRDb2RlQmxvY2sqLCBVbmxpbmtlZElu
c3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCwg
VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYpOworCiBwcml2YXRl
OgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEJsb2NrLCB0eXBlbmFtZSBJbnN0cnVjdGlvbj4gc3Rh
dGljIHZvaWQgY29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3NJbnRlcm5hbChCbG9jayogY29kZUJs
b2NrLCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGluc3RydWN0aW9u
Q291bnQsIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mIGJhc2lj
QmxvY2tzKTsKKworICAgIHZvaWQgYWRkU3VjY2Vzc29yKEJ5dGVjb2RlQmFzaWNCbG9jayogYmxv
Y2spIHsgbV9zdWNjZXNzb3JzLmFwcGVuZChibG9jayk7IH0KKyAgICB2b2lkIGFkZFByZWRlY2Vz
c29yKEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2spIHsgbV9wcmVkZWNlc3NvcnMuYXBwZW5kKGJs
b2NrKTsgfQorCisgICAgdm9pZCBhZGRCeXRlY29kZUxlbmd0aCh1bnNpZ25lZCk7CisKICAgICB1
bnNpZ25lZCBtX2xlYWRlckJ5dGVjb2RlT2Zmc2V0OwogICAgIHVuc2lnbmVkIG1fdG90YWxCeXRl
Y29kZUxlbmd0aDsKKyAgICB1bnNpZ25lZCBtX2luZGV4OwogCiAgICAgVmVjdG9yPHVuc2lnbmVk
PiBtX2J5dGVjb2RlT2Zmc2V0czsKICAgICBWZWN0b3I8Qnl0ZWNvZGVCYXNpY0Jsb2NrKj4gbV9z
dWNjZXNzb3JzOworICAgIFZlY3RvcjxCeXRlY29kZUJhc2ljQmxvY2sqPiBtX3ByZWRlY2Vzc29y
czsKIAogICAgIEZhc3RCaXRWZWN0b3IgbV9pbjsKICAgICBGYXN0Qml0VmVjdG9yIG1fb3V0Owog
fTsKIAotdm9pZCBjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2NrcyhDb2RlQmxvY2sqLCBWZWN0b3I8
c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+Jik7Ci0KIGlubGluZSBCeXRlY29k
ZUJhc2ljQmxvY2s6OkJ5dGVjb2RlQmFzaWNCbG9jayh1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQg
bGVuZ3RoKQogICAgIDogbV9sZWFkZXJCeXRlY29kZU9mZnNldChzdGFydCkKICAgICAsIG1fdG90
YWxCeXRlY29kZUxlbmd0aChsZW5ndGgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4xNTk1MTMzYzJlNzUwOGYyN2IyY2ZlNjE1OTkwMDgzMWJlZWVkZTRhCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9y
aWZpY2F0aW9uLmNwcApAQCAtMCwwICsxLDI5MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NiBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5oIgor
CisjaW5jbHVkZSAiQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzSW5saW5lcy5oIgorI2luY2x1ZGUg
IkJ5dGVjb2RlUmV3cml0ZXIuaCIKKyNpbmNsdWRlICJCeXRlY29kZVVzZURlZi5oIgorI2luY2x1
ZGUgIklkZW50aWZpZXJJbmxpbmVzLmgiCisjaW5jbHVkZSAiSW50ZXJwcmV0ZXJJbmxpbmVzLmgi
CisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRlICJKU0dlbmVyYXRvckZ1
bmN0aW9uLmgiCisjaW5jbHVkZSAiU3Ryb25nSW5saW5lcy5oIgorI2luY2x1ZGUgIlVubGlua2Vk
Q29kZUJsb2NrLmgiCisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CisKK25hbWVzcGFjZSBKU0Mg
eworCitzdHJ1Y3QgWWllbGREYXRhIHsKKyAgICBzaXplX3Qgc2F2ZVBvaW50OworICAgIHNpemVf
dCBtZXJnZVBvaW50OworICAgIHNpemVfdCByZXN1bWVQb2ludDsKKyAgICBGYXN0Qml0VmVjdG9y
IGxpdmVuZXNzOworfTsKKworY2xhc3MgQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24geworcHVi
bGljOgorICAgIHR5cGVkZWYgVmVjdG9yPFlpZWxkRGF0YT4gWWllbGRzOworCisgICAgQnl0ZWNv
ZGVHZW5lcmF0b3JpZmljYXRpb24oVW5saW5rZWRDb2RlQmxvY2sqIGNvZGVCbG9jaywgVW5saW5r
ZWRDb2RlQmxvY2s6OlVucGFja2VkSW5zdHJ1Y3Rpb25zJiBpbnN0cnVjdGlvbnMsIFN5bWJvbFRh
YmxlKiBnZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlLCBpbnQgZ2VuZXJhdG9yRnJhbWVTeW1ib2xU
YWJsZUluZGV4KQorICAgICAgICA6IG1fZ3JhcGgoY29kZUJsb2NrLCBpbnN0cnVjdGlvbnMpCisg
ICAgICAgICwgbV9pbnNlcnRpb25TZXQobV9ncmFwaCkKKyAgICAgICAgLCBtX2dlbmVyYXRvckZy
YW1lU3ltYm9sVGFibGUoKmNvZGVCbG9jay0+dm0oKSwgZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJs
ZSkKKyAgICAgICAgLCBtX2dlbmVyYXRvckZyYW1lU3ltYm9sVGFibGVJbmRleChnZW5lcmF0b3JG
cmFtZVN5bWJvbFRhYmxlSW5kZXgpCisgICAgeworICAgICAgICBmb3IgKEJ5dGVjb2RlQmFzaWNC
bG9jayogYmxvY2sgOiBtX2dyYXBoKSB7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGJ5dGVj
b2RlT2Zmc2V0IDogYmxvY2stPmJ5dGVjb2RlT2Zmc2V0cygpKSB7CisgICAgICAgICAgICAgICAg
Y29uc3QgVW5saW5rZWRJbnN0cnVjdGlvbiogcGMgPSAmbV9ncmFwaC5pbnN0cnVjdGlvbnMoKVti
eXRlY29kZU9mZnNldF07CisgICAgICAgICAgICAgICAgc3dpdGNoIChwYy0+dS5vcGNvZGUpIHsK
KyAgICAgICAgICAgICAgICBjYXNlIG9wX3NhdmU6IHsKKyAgICAgICAgICAgICAgICAgICAgdW5z
aWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gcGNbMl0udS5pbmRleDsKKyAgICAgICAgICAg
ICAgICAgICAgaW50IG9mZnNldCA9IHBjWzNdLnUub3BlcmFuZDsKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKGxpdmVDYWxsZWVMb2NhbHNJbmRleCA+PSBtX3lpZWxkcy5zaXplKCkpCisgICAgICAg
ICAgICAgICAgICAgICAgICBtX3lpZWxkcy5yZXNpemUobGl2ZUNhbGxlZUxvY2Fsc0luZGV4ICsg
MSk7CisgICAgICAgICAgICAgICAgICAgIG1feWllbGRzW2xpdmVDYWxsZWVMb2NhbHNJbmRleF0u
c2F2ZVBvaW50ID0gYnl0ZWNvZGVPZmZzZXQ7CisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk
IG1lcmdlUG9pbnQgPSBieXRlY29kZU9mZnNldCArIG9mZnNldDsKKyAgICAgICAgICAgICAgICAg
ICAgbV95aWVsZHNbbGl2ZUNhbGxlZUxvY2Fsc0luZGV4XS5tZXJnZVBvaW50ID0gbWVyZ2VQb2lu
dDsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAgICAgY2FzZSBvcF9yZXN1bWU6IHsKKyAgICAgICAgICAgICAgICAgICAgdW5zaWdu
ZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gcGNbMl0udS5pbmRleDsKKyAgICAgICAgICAgICAg
ICAgICAgaWYgKGxpdmVDYWxsZWVMb2NhbHNJbmRleCA+PSBtX3lpZWxkcy5zaXplKCkpCisgICAg
ICAgICAgICAgICAgICAgICAgICBtX3lpZWxkcy5yZXNpemUobGl2ZUNhbGxlZUxvY2Fsc0luZGV4
ICsgMSk7CisgICAgICAgICAgICAgICAgICAgIG1feWllbGRzW2xpdmVDYWxsZWVMb2NhbHNJbmRl
eF0ucmVzdW1lUG9pbnQgPSBieXRlY29kZU9mZnNldDsKKyAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgfQorCisgICAgc3RydWN0IFN0b3JhZ2UgeworICAgICAgICBJZGVudGlm
aWVyIGlkZW50aWZpZXI7CisgICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXJJbmRleDsKKyAgICAg
ICAgU2NvcGVPZmZzZXQgc2NvcGVPZmZzZXQ7CisgICAgfTsKKworICAgIHZvaWQgcnVuKCk7CisK
KyAgICBCeXRlY29kZUdyYXBoPFVubGlua2VkQ29kZUJsb2NrPiYgZ3JhcGgoKSB7IHJldHVybiBt
X2dyYXBoOyB9CisKKyAgICBjb25zdCBZaWVsZHMmIHlpZWxkcygpIGNvbnN0CisgICAgeworICAg
ICAgICByZXR1cm4gbV95aWVsZHM7CisgICAgfQorCisgICAgWWllbGRzJiB5aWVsZHMoKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIG1feWllbGRzOworICAgIH0KKworcHJpdmF0ZToKKyAgICBTdG9y
YWdlIHN0b3JhZ2VGb3JHZW5lcmF0b3JMb2NhbCh1bnNpZ25lZCBpbmRleCkKKyAgICB7CisgICAg
ICAgIC8vIFdlIGFzc2lnbiBhIHN5bWJvbCB0byBhIHJlZ2lzdGVyLiBUaGVyZSBpcyBvbmUtb24t
b25lIGNvcnJlc3BvbmRpbmcgYmV0d2VlbiBhIHJlZ2lzdGVyIGFuZCBhIHN5bWJvbC4KKyAgICAg
ICAgLy8gQnkgZG9pbmcgc28sIHdlIGFsbG9jYXRlIHRoZSBzcGVjaWZpYyBzdG9yYWdlIHRvIHNh
dmUgdGhlIGdpdmVuIHJlZ2lzdGVyLgorICAgICAgICAvLyBUaGlzIGFsbG93IHVzIG5vdCB0byBz
YXZlIGFsbCB0aGUgbGl2ZSByZWdpc3RlcnMgZXZlbiBpZiB0aGUgcmVnaXN0ZXJzIGFyZSBub3Qg
b3ZlcndyaXR0ZW4gZnJvbSB0aGUgcHJldmlvdXMgcmVzdW1pbmcgdGltZS4KKyAgICAgICAgLy8g
SXQgbWVhbnMgdGhhdCwgdGhlIHJlZ2lzdGVyIGNhbiBiZSByZXRyaWV2ZWQgZXZlbiBpZiB0aGUg
aW1tZWRpYXRlIHByZXZpb3VzIG9wX3NhdmUgZG9lcyBub3Qgc2F2ZSBpdC4KKworICAgICAgICBp
ZiAobV9zdG9yYWdlcy5zaXplKCkgPD0gaW5kZXgpCisgICAgICAgICAgICBtX3N0b3JhZ2VzLnJl
c2l6ZShpbmRleCArIDEpOworICAgICAgICBpZiAoT3B0aW9uYWw8U3RvcmFnZT4gc3RvcmFnZSA9
IG1fc3RvcmFnZXNbaW5kZXhdKQorICAgICAgICAgICAgcmV0dXJuICpzdG9yYWdlOworCisgICAg
ICAgIFVubGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBtX2dyYXBoLmNvZGVCbG9jaygpOwor
ICAgICAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIgPSBJZGVudGlmaWVyOjpmcm9tVWlkKFByaXZh
dGVOYW1lKCkpOworICAgICAgICB1bnNpZ25lZCBpZGVudGlmaWVySW5kZXggPSBjb2RlQmxvY2st
Pm51bWJlck9mSWRlbnRpZmllcnMoKTsKKyAgICAgICAgY29kZUJsb2NrLT5hZGRJZGVudGlmaWVy
KGlkZW50aWZpZXIpOworICAgICAgICBTY29wZU9mZnNldCBzY29wZU9mZnNldCA9IG1fZ2VuZXJh
dG9yRnJhbWVTeW1ib2xUYWJsZS0+dGFrZU5leHRTY29wZU9mZnNldChOb0xvY2tpbmdOZWNlc3Nh
cnkpOworICAgICAgICBtX2dlbmVyYXRvckZyYW1lU3ltYm9sVGFibGUtPnNldChOb0xvY2tpbmdO
ZWNlc3NhcnksIGlkZW50aWZpZXIuaW1wbCgpLCBTeW1ib2xUYWJsZUVudHJ5KFZhck9mZnNldChz
Y29wZU9mZnNldCkpKTsKKworICAgICAgICBTdG9yYWdlIHN0b3JhZ2UgPSB7CisgICAgICAgICAg
ICBpZGVudGlmaWVyLAorICAgICAgICAgICAgaWRlbnRpZmllckluZGV4LAorICAgICAgICAgICAg
c2NvcGVPZmZzZXQKKyAgICAgICAgfTsKKyAgICAgICAgbV9zdG9yYWdlc1tpbmRleF0gPSBzdG9y
YWdlOworICAgICAgICByZXR1cm4gc3RvcmFnZTsKKyAgICB9CisKKyAgICBCeXRlY29kZUdyYXBo
PFVubGlua2VkQ29kZUJsb2NrPiBtX2dyYXBoOworICAgIEJ5dGVjb2RlUmV3cml0ZXIgbV9pbnNl
cnRpb25TZXQ7CisgICAgVmVjdG9yPE9wdGlvbmFsPFN0b3JhZ2U+PiBtX3N0b3JhZ2VzOworICAg
IFlpZWxkcyBtX3lpZWxkczsKKyAgICBTdHJvbmc8U3ltYm9sVGFibGU+IG1fZ2VuZXJhdG9yRnJh
bWVTeW1ib2xUYWJsZTsKKyAgICBpbnQgbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlSW5kZXg7
Cit9OworCitjbGFzcyBHZW5lcmF0b3JMaXZlbmVzc0FuYWx5c2lzIDogcHVibGljIEJ5dGVjb2Rl
TGl2ZW5lc3NMb2NhbFByb3BhZ2F0aW9uPEdlbmVyYXRvckxpdmVuZXNzQW5hbHlzaXM+IHsKK3B1
YmxpYzoKKyAgICBHZW5lcmF0b3JMaXZlbmVzc0FuYWx5c2lzKEJ5dGVjb2RlR2VuZXJhdG9yaWZp
Y2F0aW9uJiBnZW5lcmF0b3JpZmljYXRpb24pCisgICAgICAgIDogbV9nZW5lcmF0b3JpZmljYXRp
b24oZ2VuZXJhdG9yaWZpY2F0aW9uKQorICAgIHsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBGdW5jdG9yPgorICAgIHZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChVbmxp
bmtlZENvZGVCbG9jayogY29kZUJsb2NrLCBPcGNvZGVJRCBvcGNvZGVJRCwgVW5saW5rZWRJbnN0
cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIEZhc3RCaXRWZWN0b3ImIG91dCwgY29uc3QgRnVuY3RvciYg
ZnVuY3RvcikKKyAgICB7CisgICAgICAgIEpTQzo6Y29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNl
dChjb2RlQmxvY2ssIG9wY29kZUlELCBpbnN0cnVjdGlvbiwgZnVuY3Rvcik7CisKKyAgICAgICAg
c3dpdGNoIChvcGNvZGVJRCkgeworICAgICAgICBjYXNlIG9wX3NhdmU6CisgICAgICAgICAgICBy
ZXR1cm47CisKKyAgICAgICAgY2FzZSBvcF9yZXN1bWU6IHsKKyAgICAgICAgICAgIC8vIHJlc3Vt
ZSBkZWZpbmVzIGFsbCB0aGUgcmVnaXN0ZXJzLgorICAgICAgICAgICAgb3V0LmNsZWFyQWxsKCk7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBkZWZhdWx0OgorICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgRnVuY3Rvcj4KKyAgICB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoVW5saW5r
ZWRDb2RlQmxvY2sqIGNvZGVCbG9jaywgT3Bjb2RlSUQgb3Bjb2RlSUQsIFVubGlua2VkSW5zdHJ1
Y3Rpb24qIGluc3RydWN0aW9uLCBGYXN0Qml0VmVjdG9yJiwgY29uc3QgRnVuY3RvciYgZnVuY3Rv
cikKKyAgICB7CisgICAgICAgIEpTQzo6Y29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldChjb2Rl
QmxvY2ssIG9wY29kZUlELCBpbnN0cnVjdGlvbiwgZnVuY3Rvcik7CisKKyAgICAgICAgc3dpdGNo
IChvcGNvZGVJRCkgeworICAgICAgICBjYXNlIG9wX3NhdmU6CisgICAgICAgIGNhc2Ugb3BfcmVz
dW1lOiB7CisgICAgICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29k
ZUlELCBpbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorICAgIH0KKworICAgIHZvaWQgcnVuKCkKKyAgICB7CisgICAgICAgIC8vIFBlcmZvcm0gbW9k
aWZpZWQgbGl2ZW5lc3MgYW5hbHlzaXMgdG8gZGV0ZXJtaW5lIHdoaWNoIGxvY2FscyBhcmUgbGl2
ZSBhdCB0aGUgbWVyZ2UgcG9pbnRzLgorICAgICAgICAvLyBUaGlzIHByb2R1Y2VzIHRoZSBjb25z
ZXJ2YXRpdmUgcmVzdWx0cyBmb3IgdGhlIHF1ZXN0aW9uLCAid2hpY2ggdmFyaWFibGVzIHNob3Vs
ZCBiZSBzYXZlZCBhbmQgcmVzdW1lZD8iLgorCisgICAgICAgIEJ5dGVjb2RlR3JhcGg8VW5saW5r
ZWRDb2RlQmxvY2s+JiBncmFwaCA9IG1fZ2VuZXJhdG9yaWZpY2F0aW9uLmdyYXBoKCk7CisgICAg
ICAgIFVubGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBncmFwaC5jb2RlQmxvY2soKTsKKyAg
ICAgICAgdW5zaWduZWQgbnVtYmVyT2ZWYXJpYWJsZXMgPSBjb2RlQmxvY2stPm1fbnVtQ2FsbGVl
TG9jYWxzOworICAgICAgICBmb3IgKEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2sgOiBncmFwaCkg
eworICAgICAgICAgICAgYmxvY2stPmluKCkucmVzaXplKG51bWJlck9mVmFyaWFibGVzKTsKKyAg
ICAgICAgICAgIGJsb2NrLT5vdXQoKS5yZXNpemUobnVtYmVyT2ZWYXJpYWJsZXMpOworICAgICAg
ICAgICAgYmxvY2stPmluKCkuY2xlYXJBbGwoKTsKKyAgICAgICAgICAgIGJsb2NrLT5vdXQoKS5j
bGVhckFsbCgpOworICAgICAgICB9CisKKyAgICAgICAgYm9vbCBjaGFuZ2VkOworICAgICAgICBC
eXRlY29kZUJhc2ljQmxvY2sqIGxhc3RCbG9jayA9IGdyYXBoLmxhc3QoKTsKKyAgICAgICAgbGFz
dEJsb2NrLT5pbigpLmNsZWFyQWxsKCk7CisgICAgICAgIGxhc3RCbG9jay0+b3V0KCkuY2xlYXJB
bGwoKTsKKyAgICAgICAgRmFzdEJpdFZlY3RvciBuZXdPdXQ7CisgICAgICAgIG5ld091dC5yZXNp
emUobGFzdEJsb2NrLT5vdXQoKS5udW1CaXRzKCkpOworICAgICAgICBkbyB7CisgICAgICAgICAg
ICBjaGFuZ2VkID0gZmFsc2U7CisgICAgICAgICAgICBmb3IgKHN0ZDo6dW5pcXVlX3B0cjxCeXRl
Y29kZUJhc2ljQmxvY2s+JiBibG9jayA6IGdyYXBoLmJhc2ljQmxvY2tzSW5SZXZlcnNlT3JkZXIo
KSkgeworICAgICAgICAgICAgICAgIG5ld091dC5jbGVhckFsbCgpOworICAgICAgICAgICAgICAg
IGZvciAoQnl0ZWNvZGVCYXNpY0Jsb2NrKiBzdWNjZXNzb3IgOiBibG9jay0+c3VjY2Vzc29ycygp
KQorICAgICAgICAgICAgICAgICAgICBuZXdPdXQubWVyZ2Uoc3VjY2Vzc29yLT5pbigpKTsKKyAg
ICAgICAgICAgICAgICBibG9jay0+b3V0KCkuc2V0KG5ld091dCk7CisgICAgICAgICAgICAgICAg
Y2hhbmdlZCB8PSBjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJsb2NrKG1fZ2VuZXJhdG9yaWZpY2F0
aW9uLmdyYXBoKCksIGJsb2NrLmdldCgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSB3aGls
ZSAoY2hhbmdlZCk7CisKKyAgICAgICAgZm9yIChZaWVsZERhdGEmIGRhdGEgOiBtX2dlbmVyYXRv
cmlmaWNhdGlvbi55aWVsZHMoKSkKKyAgICAgICAgICAgIGRhdGEubGl2ZW5lc3MgPSBnZXRMaXZl
bmVzc0luZm9BdEJ5dGVjb2RlT2Zmc2V0KG1fZ2VuZXJhdG9yaWZpY2F0aW9uLmdyYXBoKCksIGRh
dGEubWVyZ2VQb2ludCk7CisgICAgfQorCitwcml2YXRlOgorICAgIEJ5dGVjb2RlR2VuZXJhdG9y
aWZpY2F0aW9uJiBtX2dlbmVyYXRvcmlmaWNhdGlvbjsKK307CisKK3ZvaWQgQnl0ZWNvZGVHZW5l
cmF0b3JpZmljYXRpb246OnJ1bigpCit7CisgICAgLy8gV2UgY2FsY3VsYXRlIHRoZSBsaXZlbmVz
cyBhdCBlYWNoIG1lcmdlIHBvaW50LiBUaGlzIGdpdmVzIHVzIHRoZSBpbmZvcm1hdGlvbiB3aGlj
aCByZWdpc3RlcnMgc2hvdWxkIGJlIHNhdmVkIGFuZCByZXN1bWVkIGNvbnNlcnZhdGl2ZWx5Lgor
CisgICAgeworICAgICAgICBHZW5lcmF0b3JMaXZlbmVzc0FuYWx5c2lzIHBhc3MoKnRoaXMpOwor
ICAgICAgICBwYXNzLnJ1bigpOworICAgIH0KKworICAgIFVubGlua2VkQ29kZUJsb2NrKiBjb2Rl
QmxvY2sgPSBtX2dyYXBoLmNvZGVCbG9jaygpOworICAgIGZvciAoY29uc3QgWWllbGREYXRhJiBk
YXRhIDogbV95aWVsZHMpIHsKKyAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHNjb3BlID0gdmlydHVh
bFJlZ2lzdGVyRm9yQXJndW1lbnQoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3JGdW5j
dGlvbjo6R2VuZXJhdG9yQXJndW1lbnQ6OkZyYW1lKSk7CisKKyAgICAgICAgLy8gb3Bfc2F2ZS4K
KyAgICAgICAgZGF0YS5saXZlbmVzcy5mb3JFYWNoU2V0Qml0KFsmXShzaXplX3QgaW5kZXgpIHsK
KyAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kID0gdmlydHVhbFJlZ2lzdGVyRm9y
TG9jYWwoaW5kZXgpOworICAgICAgICAgICAgU3RvcmFnZSBzdG9yYWdlID0gc3RvcmFnZUZvckdl
bmVyYXRvckxvY2FsKGluZGV4KTsKKworICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0
QWZ0ZXIoZGF0YS5zYXZlUG9pbnQsCisgICAgICAgICAgICAgICAgb3BfcHV0X3RvX3Njb3BlLAor
ICAgICAgICAgICAgICAgIHNjb3BlLm9mZnNldCgpLCAvLyBzY29wZQorICAgICAgICAgICAgICAg
IHN0b3JhZ2UuaWRlbnRpZmllckluZGV4LCAvLyBpZGVudGlmaWVyCisgICAgICAgICAgICAgICAg
b3BlcmFuZC5vZmZzZXQoKSwgLy8gdmFsdWUKKyAgICAgICAgICAgICAgICBHZXRQdXRJbmZvKERv
Tm90VGhyb3dJZk5vdEZvdW5kLCBMb2NhbENsb3N1cmVWYXIsIEluaXRpYWxpemF0aW9uTW9kZTo6
Tm90SW5pdGlhbGl6YXRpb24pLm9wZXJhbmQoKSwgLy8gaW5mbworICAgICAgICAgICAgICAgIG1f
Z2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZUluZGV4LCAvLyBzeW1ib2wgdGFibGUgY29uc3RhbnQg
aW5kZXgKKyAgICAgICAgICAgICAgICBzdG9yYWdlLnNjb3BlT2Zmc2V0Lm9mZnNldCgpIC8vIHNj
b3BlIG9mZnNldAorICAgICAgICAgICAgKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgLy8gb3Bf
cmVzdW1lLgorICAgICAgICBkYXRhLmxpdmVuZXNzLmZvckVhY2hTZXRCaXQoWyZdKHNpemVfdCBp
bmRleCkgeworICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQgPSB2aXJ0dWFsUmVn
aXN0ZXJGb3JMb2NhbChpbmRleCk7CisgICAgICAgICAgICBTdG9yYWdlIHN0b3JhZ2UgPSBzdG9y
YWdlRm9yR2VuZXJhdG9yTG9jYWwoaW5kZXgpOworCisgICAgICAgICAgICBVbmxpbmtlZFZhbHVl
UHJvZmlsZSBwcm9maWxlID0gY29kZUJsb2NrLT5hZGRWYWx1ZVByb2ZpbGUoKTsKKyAgICAgICAg
ICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydEJlZm9yZShkYXRhLnJlc3VtZVBvaW50LAorICAgICAg
ICAgICAgICAgIG9wX2dldF9mcm9tX3Njb3BlLAorICAgICAgICAgICAgICAgIG9wZXJhbmQub2Zm
c2V0KCksIC8vIGRzdAorICAgICAgICAgICAgICAgIHNjb3BlLm9mZnNldCgpLCAvLyBzY29wZQor
ICAgICAgICAgICAgICAgIHN0b3JhZ2UuaWRlbnRpZmllckluZGV4LCAvLyBpZGVudGlmaWVyCisg
ICAgICAgICAgICAgICAgR2V0UHV0SW5mbyhEb05vdFRocm93SWZOb3RGb3VuZCwgTG9jYWxDbG9z
dXJlVmFyLCBJbml0aWFsaXphdGlvbk1vZGU6Ok5vdEluaXRpYWxpemF0aW9uKS5vcGVyYW5kKCks
IC8vIGluZm8KKyAgICAgICAgICAgICAgICAwLCAvLyBsb2NhbCBzY29wZSBkZXB0aAorICAgICAg
ICAgICAgICAgIHN0b3JhZ2Uuc2NvcGVPZmZzZXQub2Zmc2V0KCksIC8vIHNjb3BlIG9mZnNldAor
ICAgICAgICAgICAgICAgIHByb2ZpbGUgLy8gcHJvZmlsZQorICAgICAgICAgICAgKTsKKyAgICAg
ICAgfSk7CisKKyAgICAgICAgLy8gQ2xpcCB0aGUgdW5uZWNlc3NhcnkgYnl0ZWNvZGVzLgorICAg
ICAgICBtX2luc2VydGlvblNldC5yZW1vdmVCeXRlY29kZShkYXRhLnNhdmVQb2ludCk7CisgICAg
ICAgIG1faW5zZXJ0aW9uU2V0LnJlbW92ZUJ5dGVjb2RlKGRhdGEucmVzdW1lUG9pbnQpOworICAg
IH0KKworICAgIG1faW5zZXJ0aW9uU2V0LmV4ZWN1dGUoKTsKK30KKwordm9pZCBwZXJmb3JtR2Vu
ZXJhdG9yaWZpY2F0aW9uKFVubGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFVubGlua2VkQ29k
ZUJsb2NrOjpVbnBhY2tlZEluc3RydWN0aW9ucyYgaW5zdHJ1Y3Rpb25zLCBTeW1ib2xUYWJsZSog
Z2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZSwgaW50IGdlbmVyYXRvckZyYW1lU3ltYm9sVGFibGVJ
bmRleCkKK3sKKyAgICBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbiBwYXNzKGNvZGVCbG9jaywg
aW5zdHJ1Y3Rpb25zLCBnZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlLCBnZW5lcmF0b3JGcmFtZVN5
bWJvbFRhYmxlSW5kZXgpOworICAgIHBhc3MucnVuKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpT
QwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlR2Vu
ZXJhdG9yaWZpY2F0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVHZW5lcmF0b3JpZmljYXRpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYjdlYzk2ZWQ3MGRiYmEyMjExMWVi
MTM3NzMzZmIyMDA1NWIxMTFhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmgKQEAgLTAsMCArMSwzNiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBn
bWFpbC5jb20+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiVW5saW5rZWRD
b2RlQmxvY2suaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIFN5bWJvbFRhYmxlOworCit2
b2lkIHBlcmZvcm1HZW5lcmF0b3JpZmljYXRpb24oVW5saW5rZWRDb2RlQmxvY2sqLCBVbmxpbmtl
ZENvZGVCbG9jazo6VW5wYWNrZWRJbnN0cnVjdGlvbnMmLCBTeW1ib2xUYWJsZSogZ2VuZXJhdG9y
RnJhbWVTeW1ib2xUYWJsZSwgaW50IGdlbmVyYXRvckZyYW1lU3ltYm9sVGFibGVJbmRleCk7CisK
K30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlR3JhcGguaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZUdyYXBoLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGMzNjgxNmMwNjQzMjE1YWUzMTU3N2E1MmFkODQ1
YTU3OTIzNWRmNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZUdyYXBoLmgKQEAgLTAsMCArMSwxMjQgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTYgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkJ5dGVjb2RlQmFzaWNCbG9jay5oIgorI2luY2x1
ZGUgPHd0Zi9JbmRleGVkQ29udGFpbmVySXRlcmF0b3IuaD4KKyNpbmNsdWRlIDx3dGYvSXRlcmF0
b3JSYW5nZS5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIEpTQyB7CisK
K2NsYXNzIEJ5dGVjb2RlQmFzaWNCbG9jazsKKwordGVtcGxhdGU8dHlwZW5hbWUgQmxvY2s+Citj
bGFzcyBCeXRlY29kZUdyYXBoIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShCeXRlY29kZUdyYXBoKTsKK3B1YmxpYzoKKyAgICB0eXBlZGVm
IEJsb2NrIENvZGVCbG9jazsKKyAgICB0eXBlZGVmIHR5cGVuYW1lIEJsb2NrOjpJbnN0cnVjdGlv
biBJbnN0cnVjdGlvbjsKKyAgICB0eXBlZGVmIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNv
ZGVCYXNpY0Jsb2NrPj4gQmFzaWNCbG9ja3NWZWN0b3I7CisKKyAgICBpbmxpbmUgQnl0ZWNvZGVH
cmFwaChCbG9jayosIHR5cGVuYW1lIEJsb2NrOjpVbnBhY2tlZEluc3RydWN0aW9ucyYpOworCisg
ICAgQmxvY2sqIGNvZGVCbG9jaygpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrOyB9CisKKyAg
ICB0eXBlbmFtZSBCbG9jazo6VW5wYWNrZWRJbnN0cnVjdGlvbnMmIGluc3RydWN0aW9ucygpIHsg
cmV0dXJuIG1faW5zdHJ1Y3Rpb25zOyB9CisKKyAgICBXVEY6Okl0ZXJhdG9yUmFuZ2U8QmFzaWNC
bG9ja3NWZWN0b3I6OnJldmVyc2VfaXRlcmF0b3I+IGJhc2ljQmxvY2tzSW5SZXZlcnNlT3JkZXIo
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIFdURjo6bWFrZUl0ZXJhdG9yUmFuZ2UobV9iYXNpY0Js
b2Nrcy5yYmVnaW4oKSwgbV9iYXNpY0Jsb2Nrcy5yZW5kKCkpOworICAgIH0KKworICAgIHN0YXRp
YyBib29sIGJsb2NrQ29udGFpbnNCeXRlY29kZU9mZnNldChCeXRlY29kZUJhc2ljQmxvY2sqIGJs
b2NrLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCkKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIGxl
YWRlck9mZnNldCA9IGJsb2NrLT5sZWFkZXJCeXRlY29kZU9mZnNldCgpOworICAgICAgICByZXR1
cm4gYnl0ZWNvZGVPZmZzZXQgPj0gbGVhZGVyT2Zmc2V0ICYmIGJ5dGVjb2RlT2Zmc2V0IDwgbGVh
ZGVyT2Zmc2V0ICsgYmxvY2stPnRvdGFsQnl0ZWNvZGVMZW5ndGgoKTsKKyAgICB9CisKKyAgICBC
eXRlY29kZUJhc2ljQmxvY2sqIGZpbmRCYXNpY0Jsb2NrRm9yQnl0ZWNvZGVPZmZzZXQodW5zaWdu
ZWQgYnl0ZWNvZGVPZmZzZXQpCisgICAgeworICAgICAgICAvKgorICAgICAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IG1fYmFzaWNCbG9ja3Muc2l6ZSgpOyBpKyspIHsKKyAgICAgICAg
ICAgICAgICBpZiAoYmxvY2tDb250YWluc0J5dGVjb2RlT2Zmc2V0KG1fYmFzaWNCbG9ja3NbaV0u
Z2V0KCksIGJ5dGVjb2RlT2Zmc2V0KSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1fYmFz
aWNCbG9ja3NbaV0uZ2V0KCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gMDsK
KyAgICAgICAgKi8KKworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2Nr
PiogYmFzaWNCbG9jayA9IGFwcHJveGltYXRlQmluYXJ5U2VhcmNoPHN0ZDo6dW5pcXVlX3B0cjxC
eXRlY29kZUJhc2ljQmxvY2s+LCB1bnNpZ25lZD4obV9iYXNpY0Jsb2NrcywgbV9iYXNpY0Jsb2Nr
cy5zaXplKCksIGJ5dGVjb2RlT2Zmc2V0LCBbXSAoc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFz
aWNCbG9jaz4qIGJhc2ljQmxvY2spIHsgcmV0dXJuICgqYmFzaWNCbG9jayktPmxlYWRlckJ5dGVj
b2RlT2Zmc2V0KCk7IH0pOworICAgICAgICAvLyBXZSBmb3VuZCB0aGUgYmxvY2sgd2Ugd2VyZSBs
b29raW5nIGZvci4KKyAgICAgICAgaWYgKGJsb2NrQ29udGFpbnNCeXRlY29kZU9mZnNldCgoKmJh
c2ljQmxvY2spLmdldCgpLCBieXRlY29kZU9mZnNldCkpCisgICAgICAgICAgICByZXR1cm4gKCpi
YXNpY0Jsb2NrKS5nZXQoKTsKKworICAgICAgICAvLyBCYXNpYyBibG9jayBpcyB0byB0aGUgbGVm
dCBvZiB0aGUgcmV0dXJuZWQgYmxvY2suCisgICAgICAgIGlmIChieXRlY29kZU9mZnNldCA8ICgq
YmFzaWNCbG9jayktPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCkpIHsKKyAgICAgICAgICAgIEFTU0VS
VChiYXNpY0Jsb2NrIC0gMSA+PSBtX2Jhc2ljQmxvY2tzLmRhdGEoKSk7CisgICAgICAgICAgICBB
U1NFUlQoYmxvY2tDb250YWluc0J5dGVjb2RlT2Zmc2V0KGJhc2ljQmxvY2tbLTFdLmdldCgpLCBi
eXRlY29kZU9mZnNldCkpOworICAgICAgICAgICAgcmV0dXJuIGJhc2ljQmxvY2tbLTFdLmdldCgp
OworICAgICAgICB9CisKKyAgICAgICAgLy8gQmFzaWMgYmxvY2sgaXMgdG8gdGhlIHJpZ2h0IG9m
IHRoZSByZXR1cm5lZCBibG9jay4KKyAgICAgICAgQVNTRVJUKCZiYXNpY0Jsb2NrWzFdIDw9ICZt
X2Jhc2ljQmxvY2tzLmxhc3QoKSk7CisgICAgICAgIEFTU0VSVChibG9ja0NvbnRhaW5zQnl0ZWNv
ZGVPZmZzZXQoYmFzaWNCbG9ja1sxXS5nZXQoKSwgYnl0ZWNvZGVPZmZzZXQpKTsKKyAgICAgICAg
cmV0dXJuIGJhc2ljQmxvY2tbMV0uZ2V0KCk7CisgICAgfQorCisgICAgQnl0ZWNvZGVCYXNpY0Js
b2NrKiBmaW5kQmFzaWNCbG9ja1dpdGhMZWFkZXJPZmZzZXQodW5zaWduZWQgbGVhZGVyT2Zmc2V0
KQorICAgIHsKKyAgICAgICAgcmV0dXJuICgqdHJ5QmluYXJ5U2VhcmNoPHN0ZDo6dW5pcXVlX3B0
cjxCeXRlY29kZUJhc2ljQmxvY2s+LCB1bnNpZ25lZD4obV9iYXNpY0Jsb2NrcywgbV9iYXNpY0Js
b2Nrcy5zaXplKCksIGxlYWRlck9mZnNldCwgW10gKHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJh
c2ljQmxvY2s+KiBiYXNpY0Jsb2NrKSB7IHJldHVybiAoKmJhc2ljQmxvY2spLT5sZWFkZXJCeXRl
Y29kZU9mZnNldCgpOyB9KSkuZ2V0KCk7CisgICAgfQorCisgICAgdW5zaWduZWQgc2l6ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fYmFzaWNCbG9ja3Muc2l6ZSgpOyB9CisgICAgQnl0ZWNvZGVCYXNpY0Js
b2NrKiBhdCh1bnNpZ25lZCBpbmRleCkgY29uc3QgeyByZXR1cm4gbV9iYXNpY0Jsb2Nrc1tpbmRl
eF0uZ2V0KCk7IH0KKyAgICBCeXRlY29kZUJhc2ljQmxvY2sqIG9wZXJhdG9yW10odW5zaWduZWQg
aW5kZXgpIGNvbnN0IHsgcmV0dXJuIGF0KGluZGV4KTsgfQorCisgICAgdHlwZWRlZiBXVEY6Oklu
ZGV4ZWRDb250YWluZXJJdGVyYXRvcjxCeXRlY29kZUdyYXBoPEJsb2NrPj4gaXRlcmF0b3I7CisK
KyAgICBpdGVyYXRvciBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIGl0ZXJhdG9yKCp0aGlzLCAwKTsg
fQorICAgIGl0ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0dXJuIGl0ZXJhdG9yKCp0aGlzLCBzaXpl
KCkpOyB9CisgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBmaXJzdCgpIHsgcmV0dXJuIGF0KDApOyB9
CisgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBsYXN0KCkgeyByZXR1cm4gYXQoc2l6ZSgpIC0gMSk7
IH0KKworcHJpdmF0ZToKKyAgICBCbG9jayogbV9jb2RlQmxvY2s7CisgICAgQmFzaWNCbG9ja3NW
ZWN0b3IgbV9iYXNpY0Jsb2NrczsKKyAgICB0eXBlbmFtZSBCbG9jazo6VW5wYWNrZWRJbnN0cnVj
dGlvbnMmIG1faW5zdHJ1Y3Rpb25zOworfTsKKworCit0ZW1wbGF0ZTx0eXBlbmFtZSBCbG9jaz4K
K0J5dGVjb2RlR3JhcGg8QmxvY2s+OjpCeXRlY29kZUdyYXBoKEJsb2NrKiBjb2RlQmxvY2ssIHR5
cGVuYW1lIEJsb2NrOjpVbnBhY2tlZEluc3RydWN0aW9ucyYgaW5zdHJ1Y3Rpb25zKQorICAgIDog
bV9jb2RlQmxvY2soY29kZUJsb2NrKQorICAgICwgbV9pbnN0cnVjdGlvbnMoaW5zdHJ1Y3Rpb25z
KQoreworICAgIEFTU0VSVChtX2NvZGVCbG9jayk7CisgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrOjpj
b21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2NrcyhtX2NvZGVCbG9jaywgaW5zdHJ1Y3Rpb25zLmJlZ2lu
KCksIGluc3RydWN0aW9ucy5zaXplKCksIG1fYmFzaWNCbG9ja3MpOworICAgIEFTU0VSVChtX2Jh
c2ljQmxvY2tzLnNpemUoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5
c2lzLmNwcAppbmRleCAxN2U4MmEyZmJiYTAxNTA0M2U5OWQzNGVkMjU2OTM3MmIzNmY3YTg1Li5h
ZDNjMDIxZTFlYTQzN2EzMDM2NDk1MGQ1YTBiYjQ4YzI2NDE5ZTVjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5
c2lzLmNwcApAQCAtMzEsMTk4ICszMSw2NiBAQAogI2luY2x1ZGUgIkJ5dGVjb2RlVXNlRGVmLmgi
CiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiRnVsbEJ5dGVjb2RlTGl2ZW5lc3Mu
aCIKKyNpbmNsdWRlICJJbnRlcnByZXRlcklubGluZXMuaCIKICNpbmNsdWRlICJQcmVjaXNlSnVt
cFRhcmdldHMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNp
czo6Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzKENvZGVCbG9jayogY29kZUJsb2NrKQotICAgIDog
bV9jb2RlQmxvY2soY29kZUJsb2NrKQorICAgIDogbV9ncmFwaChjb2RlQmxvY2ssIGNvZGVCbG9j
ay0+aW5zdHJ1Y3Rpb25zKCkpCiB7Ci0gICAgQVNTRVJUKG1fY29kZUJsb2NrKTsKICAgICBjb21w
dXRlKCk7CiB9CiAKLXN0YXRpYyBib29sIGlzVmFsaWRSZWdpc3RlckZvckxpdmVuZXNzKENvZGVC
bG9jayogY29kZUJsb2NrLCBpbnQgb3BlcmFuZCkKK3RlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+
Cit2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0ZURlZnNGb3JCeXRlY29kZU9m
ZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgT3Bjb2RlSUQgb3Bjb2RlSUQsIEluc3RydWN0aW9u
KiBpbnN0cnVjdGlvbiwgRmFzdEJpdFZlY3RvciYsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiB7
Ci0gICAgaWYgKGNvZGVCbG9jay0+aXNDb25zdGFudFJlZ2lzdGVySW5kZXgob3BlcmFuZCkpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKLSAgICBWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJl
ZyhvcGVyYW5kKTsKLSAgICByZXR1cm4gdmlydHVhbFJlZy5pc0xvY2FsKCk7Ci19Ci0KLXN0YXRp
YyB1bnNpZ25lZCBnZXRMZWFkZXJPZmZzZXRGb3JCYXNpY0Jsb2NrKHN0ZDo6dW5pcXVlX3B0cjxC
eXRlY29kZUJhc2ljQmxvY2s+KiBiYXNpY0Jsb2NrKQotewotICAgIHJldHVybiAoKmJhc2ljQmxv
Y2spLT5sZWFkZXJCeXRlY29kZU9mZnNldCgpOwotfQotCi1zdGF0aWMgQnl0ZWNvZGVCYXNpY0Js
b2NrKiBmaW5kQmFzaWNCbG9ja1dpdGhMZWFkZXJPZmZzZXQoVmVjdG9yPHN0ZDo6dW5pcXVlX3B0
cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9ja3MsIHVuc2lnbmVkIGxlYWRlck9mZnNl
dCkKLXsKLSAgICByZXR1cm4gKCp0cnlCaW5hcnlTZWFyY2g8c3RkOjp1bmlxdWVfcHRyPEJ5dGVj
b2RlQmFzaWNCbG9jaz4sIHVuc2lnbmVkPihiYXNpY0Jsb2NrcywgYmFzaWNCbG9ja3Muc2l6ZSgp
LCBsZWFkZXJPZmZzZXQsIGdldExlYWRlck9mZnNldEZvckJhc2ljQmxvY2spKS5nZXQoKTsKLX0K
LQotc3RhdGljIGJvb2wgYmxvY2tDb250YWluc0J5dGVjb2RlT2Zmc2V0KEJ5dGVjb2RlQmFzaWNC
bG9jayogYmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KQotewotICAgIHVuc2lnbmVkIGxl
YWRlck9mZnNldCA9IGJsb2NrLT5sZWFkZXJCeXRlY29kZU9mZnNldCgpOwotICAgIHJldHVybiBi
eXRlY29kZU9mZnNldCA+PSBsZWFkZXJPZmZzZXQgJiYgYnl0ZWNvZGVPZmZzZXQgPCBsZWFkZXJP
ZmZzZXQgKyBibG9jay0+dG90YWxCeXRlY29kZUxlbmd0aCgpOwotfQotCi1zdGF0aWMgQnl0ZWNv
ZGVCYXNpY0Jsb2NrKiBmaW5kQmFzaWNCbG9ja0ZvckJ5dGVjb2RlT2Zmc2V0KFZlY3RvcjxzdGQ6
OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mIGJhc2ljQmxvY2tzLCB1bnNpZ25lZCBi
eXRlY29kZU9mZnNldCkKLXsKLS8qCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGJhc2lj
QmxvY2tzLnNpemUoKTsgaSsrKSB7Ci0gICAgICAgIGlmIChibG9ja0NvbnRhaW5zQnl0ZWNvZGVP
ZmZzZXQoYmFzaWNCbG9ja3NbaV0uZ2V0KCksIGJ5dGVjb2RlT2Zmc2V0KSkKLSAgICAgICAgICAg
IHJldHVybiBiYXNpY0Jsb2Nrc1tpXS5nZXQoKTsKLSAgICB9Ci0gICAgcmV0dXJuIDA7Ci0qLwot
ICAgIHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+KiBiYXNpY0Jsb2NrID0gYXBw
cm94aW1hdGVCaW5hcnlTZWFyY2g8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4s
IHVuc2lnbmVkPigKLSAgICAgICAgYmFzaWNCbG9ja3MsIGJhc2ljQmxvY2tzLnNpemUoKSwgYnl0
ZWNvZGVPZmZzZXQsIGdldExlYWRlck9mZnNldEZvckJhc2ljQmxvY2spOwotICAgIC8vIFdlIGZv
dW5kIHRoZSBibG9jayB3ZSB3ZXJlIGxvb2tpbmcgZm9yLgotICAgIGlmIChibG9ja0NvbnRhaW5z
Qnl0ZWNvZGVPZmZzZXQoKCpiYXNpY0Jsb2NrKS5nZXQoKSwgYnl0ZWNvZGVPZmZzZXQpKQotICAg
ICAgICByZXR1cm4gKCpiYXNpY0Jsb2NrKS5nZXQoKTsKLQotICAgIC8vIEJhc2ljIGJsb2NrIGlz
IHRvIHRoZSBsZWZ0IG9mIHRoZSByZXR1cm5lZCBibG9jay4KLSAgICBpZiAoYnl0ZWNvZGVPZmZz
ZXQgPCAoKmJhc2ljQmxvY2spLT5sZWFkZXJCeXRlY29kZU9mZnNldCgpKSB7Ci0gICAgICAgIEFT
U0VSVChiYXNpY0Jsb2NrIC0gMSA+PSBiYXNpY0Jsb2Nrcy5kYXRhKCkpOwotICAgICAgICBBU1NF
UlQoYmxvY2tDb250YWluc0J5dGVjb2RlT2Zmc2V0KGJhc2ljQmxvY2tbLTFdLmdldCgpLCBieXRl
Y29kZU9mZnNldCkpOwotICAgICAgICByZXR1cm4gYmFzaWNCbG9ja1stMV0uZ2V0KCk7Ci0gICAg
fQotCi0gICAgLy8gQmFzaWMgYmxvY2sgaXMgdG8gdGhlIHJpZ2h0IG9mIHRoZSByZXR1cm5lZCBi
bG9jay4KLSAgICBBU1NFUlQoJmJhc2ljQmxvY2tbMV0gPD0gJmJhc2ljQmxvY2tzLmxhc3QoKSk7
Ci0gICAgQVNTRVJUKGJsb2NrQ29udGFpbnNCeXRlY29kZU9mZnNldChiYXNpY0Jsb2NrWzFdLmdl
dCgpLCBieXRlY29kZU9mZnNldCkpOwotICAgIHJldHVybiBiYXNpY0Jsb2NrWzFdLmdldCgpOwot
fQotCi0vLyBTaW1wbGlmaWVkIGludGVyZmFjZSB0byBieXRlY29kZSB1c2UvZGVmLCB3aGljaCBk
ZXRlcm1pbmVzIGRlZnMgZmlyc3QgYW5kIHRoZW4gdXNlcywgYW5kIGluY2x1ZGVzCi0vLyBleGNl
cHRpb24gaGFuZGxlcnMgaW4gdGhlIHVzZXMuCi10ZW1wbGF0ZTx0eXBlbmFtZSBVc2VGdW5jdG9y
LCB0eXBlbmFtZSBEZWZGdW5jdG9yPgotc3RhdGljIHZvaWQgc3RlcE92ZXJJbnN0cnVjdGlvbihD
b2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaywgVmVjdG9yPHN0
ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9ja3MsIHVuc2lnbmVk
IGJ5dGVjb2RlT2Zmc2V0LCBjb25zdCBVc2VGdW5jdG9yJiB1c2UsIGNvbnN0IERlZkZ1bmN0b3Im
IGRlZikKLXsKLSAgICAvLyBUaGlzIGFic3RyYWN0bHkgZXhlY3V0ZSB0aGUgaW5zdHJ1Y3Rpb24g
aW4gcmV2ZXJzZS4gSW5zdHJ1Y3Rpb25zIGxvZ2ljYWxseSBmaXJzdCB1c2Ugb3BlcmFuZHMgYW5k
Ci0gICAgLy8gdGhlbiBkZWZpbmUgb3BlcmFuZHMuIFRoaXMgbG9naWNhbCBvcmRlcmluZyBpcyBu
ZWNlc3NhcnkgZm9yIG9wZXJhdGlvbnMgdGhhdCB1c2UgYW5kIGRlZiB0aGUgc2FtZQotICAgIC8v
IG9wZXJhbmQsIGxpa2U6Ci0gICAgLy8KLSAgICAvLyAgICAgb3BfYWRkIGxvYzEsIGxvYzEsIGxv
YzIKLSAgICAvLwotICAgIC8vIFRoZSB1c2Ugb2YgbG9jMSBoYXBwZW5zIGJlZm9yZSB0aGUgZGVm
IG9mIGxvYzEuIFRoYXQncyBhIHNlbWFudGljIHJlcXVpcmVtZW50IHNpbmNlIHRoZSBhZGQKLSAg
ICAvLyBvcGVyYXRpb24gY2Fubm90IHRyYXZlbCBmb3J3YXJkIGluIHRpbWUgdG8gcmVhZCB0aGUg
dmFsdWUgdGhhdCBpdCB3aWxsIHByb2R1Y2UgYWZ0ZXIgcmVhZGluZyB0aGF0Ci0gICAgLy8gdmFs
dWUuIFNpbmNlIHdlIGFyZSBleGVjdXRpbmcgaW4gcmV2ZXJzZSwgdGhpcyBtZWFucyB0aGF0IHdl
IG11c3QgZG8gZGVmcyBiZWZvcmUgdXNlcyAocmV2ZXJzZSBvZgotICAgIC8vIHVzZXMgYmVmb3Jl
IGRlZnMpLgotICAgIC8vCi0gICAgLy8gU2luY2UgdGhpcyBpcyBhIGxpdmVuZXNzIGFuYWx5c2lz
LCB0aGlzIG9yZGVyaW5nIGVuZHMgdXAgYmVpbmcgcGFydGljdWxhcmx5IGltcG9ydGFudDogaWYg
d2UgZGlkCi0gICAgLy8gdXNlcyBiZWZvcmUgZGVmcywgdGhlbiB0aGUgYWRkIG9wZXJhdGlvbiBh
Ym92ZSB3b3VsZCBhcHBlYXIgdG8gbm90IGhhdmUgbG9jMSBsaXZlLCBzaW5jZSB3ZSdkCi0gICAg
Ly8gZmlyc3QgYWRkIGl0IHRvIHRoZSBvdXQgc2V0ICh0aGUgdXNlKSwgYW5kIHRoZW4gd2UnZCBy
ZW1vdmUgaXQgKHRoZSBkZWYpLgotICAgIAotICAgIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZz
ZXQoCi0gICAgICAgIGNvZGVCbG9jaywgYmxvY2ssIGJ5dGVjb2RlT2Zmc2V0LAotICAgICAgICBb
Jl0gKENvZGVCbG9jayogY29kZUJsb2NrLCBJbnN0cnVjdGlvbiosIE9wY29kZUlELCBpbnQgb3Bl
cmFuZCkgewotICAgICAgICAgICAgaWYgKGlzVmFsaWRSZWdpc3RlckZvckxpdmVuZXNzKGNvZGVC
bG9jaywgb3BlcmFuZCkpCi0gICAgICAgICAgICAgICAgZGVmKFZpcnR1YWxSZWdpc3RlcihvcGVy
YW5kKS50b0xvY2FsKCkpOwotICAgICAgICB9KTsKLQotICAgIGNvbXB1dGVVc2VzRm9yQnl0ZWNv
ZGVPZmZzZXQoCi0gICAgICAgIGNvZGVCbG9jaywgYmxvY2ssIGJ5dGVjb2RlT2Zmc2V0LAotICAg
ICAgICBbJl0gKENvZGVCbG9jayogY29kZUJsb2NrLCBJbnN0cnVjdGlvbiosIE9wY29kZUlELCBp
bnQgb3BlcmFuZCkgewotICAgICAgICAgICAgaWYgKGlzVmFsaWRSZWdpc3RlckZvckxpdmVuZXNz
KGNvZGVCbG9jaywgb3BlcmFuZCkpCi0gICAgICAgICAgICAgICAgdXNlKFZpcnR1YWxSZWdpc3Rl
cihvcGVyYW5kKS50b0xvY2FsKCkpOwotICAgICAgICB9KTsKLQotICAgIC8vIElmIHdlIGhhdmUg
YW4gZXhjZXB0aW9uIGhhbmRsZXIsIHdlIHdhbnQgdGhlIGxpdmUtaW4gdmFyaWFibGVzIG9mIHRo
ZSAKLSAgICAvLyBleGNlcHRpb24gaGFuZGxlciBibG9jayB0byBiZSBpbmNsdWRlZCBpbiB0aGUg
bGl2ZS1pbiBvZiB0aGlzIHBhcnRpY3VsYXIgYnl0ZWNvZGUuCi0gICAgaWYgKEhhbmRsZXJJbmZv
KiBoYW5kbGVyID0gY29kZUJsb2NrLT5oYW5kbGVyRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVP
ZmZzZXQpKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBUaGlzIHJlc3VtZSBjaGVjayBzaG91bGQgbm90
IGJlIG5lZWRlZC4KLSAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE1OTI4MQotICAgICAgICBJbnRlcnByZXRlciogaW50ZXJwcmV0ZXIgPSBjb2RlQmxv
Y2stPnZtKCktPmludGVycHJldGVyOwotICAgICAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25z
QmVnaW4gPSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCk7Ci0gICAgICAgIEluc3Ry
dWN0aW9uKiBpbnN0cnVjdGlvbiA9ICZpbnN0cnVjdGlvbnNCZWdpbltieXRlY29kZU9mZnNldF07
Ci0gICAgICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGlu
c3RydWN0aW9uLT51Lm9wY29kZSk7Ci0gICAgICAgIGlmIChvcGNvZGVJRCAhPSBvcF9yZXN1bWUp
IHsKLSAgICAgICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogaGFuZGxlckJsb2NrID0gZmluZEJh
c2ljQmxvY2tXaXRoTGVhZGVyT2Zmc2V0KGJhc2ljQmxvY2tzLCBoYW5kbGVyLT50YXJnZXQpOwot
ICAgICAgICAgICAgQVNTRVJUKGhhbmRsZXJCbG9jayk7Ci0gICAgICAgICAgICBoYW5kbGVyQmxv
Y2stPmluKCkuZm9yRWFjaFNldEJpdCh1c2UpOwotICAgICAgICB9Ci0gICAgfQotfQotCi1zdGF0
aWMgdm9pZCBzdGVwT3Zlckluc3RydWN0aW9uKENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29k
ZUJhc2ljQmxvY2sqIGJsb2NrLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNC
bG9jaz4+JiBiYXNpY0Jsb2NrcywgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIEZhc3RCaXRWZWN0
b3ImIG91dCkKLXsKLSAgICBzdGVwT3Zlckluc3RydWN0aW9uKAotICAgICAgICBjb2RlQmxvY2ss
IGJsb2NrLCBiYXNpY0Jsb2NrcywgYnl0ZWNvZGVPZmZzZXQsCi0gICAgICAgIFsmXSAodW5zaWdu
ZWQgYml0SW5kZXgpIHsKLSAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIHVzZSBmdW5jdG9yLCBz
byB3ZSBzZXQgdGhlIGJpdC4KLSAgICAgICAgICAgIG91dC5zZXQoYml0SW5kZXgpOwotICAgICAg
ICB9LAotICAgICAgICBbJl0gKHVuc2lnbmVkIGJpdEluZGV4KSB7Ci0gICAgICAgICAgICAvLyBU
aGlzIGlzIHRoZSBkZWYgZnVuY3Rvciwgc28gd2UgY2xlYXIgdGhlIGJpdC4KLSAgICAgICAgICAg
IG91dC5jbGVhcihiaXRJbmRleCk7Ci0gICAgICAgIH0pOwotfQotCi1zdGF0aWMgdm9pZCBjb21w
dXRlTG9jYWxMaXZlbmVzc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBC
eXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2Rl
QmFzaWNCbG9jaz4+JiBiYXNpY0Jsb2NrcywgdW5zaWduZWQgdGFyZ2V0T2Zmc2V0LCBGYXN0Qml0
VmVjdG9yJiByZXN1bHQpCi17Ci0gICAgQVNTRVJUKCFibG9jay0+aXNFeGl0QmxvY2soKSk7Ci0g
ICAgQVNTRVJUKCFibG9jay0+aXNFbnRyeUJsb2NrKCkpOwotCi0gICAgRmFzdEJpdFZlY3RvciBv
dXQgPSBibG9jay0+b3V0KCk7Ci0KLSAgICBmb3IgKGludCBpID0gYmxvY2stPmJ5dGVjb2RlT2Zm
c2V0cygpLnNpemUoKSAtIDE7IGkgPj0gMDsgaS0tKSB7Ci0gICAgICAgIHVuc2lnbmVkIGJ5dGVj
b2RlT2Zmc2V0ID0gYmxvY2stPmJ5dGVjb2RlT2Zmc2V0cygpW2ldOwotICAgICAgICBpZiAodGFy
Z2V0T2Zmc2V0ID4gYnl0ZWNvZGVPZmZzZXQpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
Ci0gICAgICAgIHN0ZXBPdmVySW5zdHJ1Y3Rpb24oY29kZUJsb2NrLCBibG9jaywgYmFzaWNCbG9j
a3MsIGJ5dGVjb2RlT2Zmc2V0LCBvdXQpOwotICAgIH0KLQotICAgIHJlc3VsdC5zZXQob3V0KTsK
KyAgICBKU0M6OmNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoY29kZUJsb2NrLCBvcGNvZGVJ
RCwgaW5zdHJ1Y3Rpb24sIGZ1bmN0b3IpOwogfQogCi1zdGF0aWMgdm9pZCBjb21wdXRlTG9jYWxM
aXZlbmVzc0ZvckJsb2NrKENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29kZUJhc2ljQmxvY2sq
IGJsb2NrLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+JiBiYXNp
Y0Jsb2NrcykKK3RlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+Cit2b2lkIEJ5dGVjb2RlTGl2ZW5l
c3NBbmFseXNpczo6Y29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVC
bG9jaywgT3Bjb2RlSUQgb3Bjb2RlSUQsIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgRmFzdEJp
dFZlY3RvciYsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiB7Ci0gICAgaWYgKGJsb2NrLT5pc0V4
aXRCbG9jaygpIHx8IGJsb2NrLT5pc0VudHJ5QmxvY2soKSkKLSAgICAgICAgcmV0dXJuOwotICAg
IGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQnl0ZWNvZGVPZmZzZXQoY29kZUJsb2NrLCBibG9jaywg
YmFzaWNCbG9ja3MsIGJsb2NrLT5sZWFkZXJCeXRlY29kZU9mZnNldCgpLCBibG9jay0+aW4oKSk7
CisgICAgSlNDOjpjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9jaywgb3Bjb2Rl
SUQsIGluc3RydWN0aW9uLCBmdW5jdG9yKTsKIH0KIAogdm9pZCBCeXRlY29kZUxpdmVuZXNzQW5h
bHlzaXM6OnJ1bkxpdmVuZXNzRml4cG9pbnQoKQogewotICAgIFVubGlua2VkQ29kZUJsb2NrKiB1
bmxpbmtlZENvZGVCbG9jayA9IG1fY29kZUJsb2NrLT51bmxpbmtlZENvZGVCbG9jaygpOworICAg
IENvZGVCbG9jayogY29kZUJsb2NrID0gbV9ncmFwaC5jb2RlQmxvY2soKTsKKyAgICBVbmxpbmtl
ZENvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2sgPSBjb2RlQmxvY2stPnVubGlua2VkQ29kZUJs
b2NrKCk7CiAgICAgdW5zaWduZWQgbnVtYmVyT2ZWYXJpYWJsZXMgPSB1bmxpbmtlZENvZGVCbG9j
ay0+bV9udW1DYWxsZWVMb2NhbHM7CiAKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9i
YXNpY0Jsb2Nrcy5zaXplKCk7IGkrKykgewotICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGJs
b2NrID0gbV9iYXNpY0Jsb2Nrc1tpXS5nZXQoKTsKKyAgICBmb3IgKEJ5dGVjb2RlQmFzaWNCbG9j
ayogYmxvY2sgOiBtX2dyYXBoKSB7CiAgICAgICAgIGJsb2NrLT5pbigpLnJlc2l6ZShudW1iZXJP
ZlZhcmlhYmxlcyk7CiAgICAgICAgIGJsb2NrLT5vdXQoKS5yZXNpemUobnVtYmVyT2ZWYXJpYWJs
ZXMpOwogICAgIH0KIAogICAgIGJvb2wgY2hhbmdlZDsKLSAgICBtX2Jhc2ljQmxvY2tzLmxhc3Qo
KS0+aW4oKS5jbGVhckFsbCgpOwotICAgIG1fYmFzaWNCbG9ja3MubGFzdCgpLT5vdXQoKS5jbGVh
ckFsbCgpOworICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogbGFzdEJsb2NrID0gbV9ncmFwaC5sYXN0
KCk7CisgICAgbGFzdEJsb2NrLT5pbigpLmNsZWFyQWxsKCk7CisgICAgbGFzdEJsb2NrLT5vdXQo
KS5jbGVhckFsbCgpOwogICAgIEZhc3RCaXRWZWN0b3IgbmV3T3V0OwotICAgIG5ld091dC5yZXNp
emUobV9iYXNpY0Jsb2Nrcy5sYXN0KCktPm91dCgpLm51bUJpdHMoKSk7CisgICAgbmV3T3V0LnJl
c2l6ZShsYXN0QmxvY2stPm91dCgpLm51bUJpdHMoKSk7CiAgICAgZG8gewogICAgICAgICBjaGFu
Z2VkID0gZmFsc2U7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1fYmFzaWNCbG9ja3Muc2l6
ZSgpIC0gMTsgaS0tOykgewotICAgICAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jayA9
IG1fYmFzaWNCbG9ja3NbaV0uZ2V0KCk7CisgICAgICAgIGZvciAoc3RkOjp1bmlxdWVfcHRyPEJ5
dGVjb2RlQmFzaWNCbG9jaz4mIGJsb2NrIDogbV9ncmFwaC5iYXNpY0Jsb2Nrc0luUmV2ZXJzZU9y
ZGVyKCkpIHsKICAgICAgICAgICAgIG5ld091dC5jbGVhckFsbCgpOwotICAgICAgICAgICAgZm9y
ICh1bnNpZ25lZCBqID0gMDsgaiA8IGJsb2NrLT5zdWNjZXNzb3JzKCkuc2l6ZSgpOyBqKyspCi0g
ICAgICAgICAgICAgICAgbmV3T3V0Lm1lcmdlKGJsb2NrLT5zdWNjZXNzb3JzKClbal0tPmluKCkp
OwotICAgICAgICAgICAgYm9vbCBvdXREaWRDaGFuZ2UgPSBibG9jay0+b3V0KCkuc2V0QW5kQ2hl
Y2sobmV3T3V0KTsKLSAgICAgICAgICAgIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQmxvY2sobV9j
b2RlQmxvY2ssIGJsb2NrLCBtX2Jhc2ljQmxvY2tzKTsKLSAgICAgICAgICAgIGNoYW5nZWQgfD0g
b3V0RGlkQ2hhbmdlOworICAgICAgICAgICAgZm9yIChCeXRlY29kZUJhc2ljQmxvY2sqIHN1Y2Nl
c3NvciA6IGJsb2NrLT5zdWNjZXNzb3JzKCkpCisgICAgICAgICAgICAgICAgbmV3T3V0Lm1lcmdl
KHN1Y2Nlc3Nvci0+aW4oKSk7CisgICAgICAgICAgICBibG9jay0+b3V0KCkuc2V0KG5ld091dCk7
CisgICAgICAgICAgICBjaGFuZ2VkIHw9IGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQmxvY2sobV9n
cmFwaCwgYmxvY2suZ2V0KCkpOwogICAgICAgICB9CiAgICAgfSB3aGlsZSAoY2hhbmdlZCk7CiB9
CiAKIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpnZXRMaXZlbmVzc0luZm9BdEJ5dGVj
b2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBGYXN0Qml0VmVjdG9yJiByZXN1bHQp
CiB7Ci0gICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jayA9IGZpbmRCYXNpY0Jsb2NrRm9yQnl0
ZWNvZGVPZmZzZXQobV9iYXNpY0Jsb2NrcywgYnl0ZWNvZGVPZmZzZXQpOworICAgIEJ5dGVjb2Rl
QmFzaWNCbG9jayogYmxvY2sgPSBtX2dyYXBoLmZpbmRCYXNpY0Jsb2NrRm9yQnl0ZWNvZGVPZmZz
ZXQoYnl0ZWNvZGVPZmZzZXQpOwogICAgIEFTU0VSVChibG9jayk7CiAgICAgQVNTRVJUKCFibG9j
ay0+aXNFbnRyeUJsb2NrKCkpOwogICAgIEFTU0VSVCghYmxvY2stPmlzRXhpdEJsb2NrKCkpOwog
ICAgIHJlc3VsdC5yZXNpemUoYmxvY2stPm91dCgpLm51bUJpdHMoKSk7Ci0gICAgY29tcHV0ZUxv
Y2FsTGl2ZW5lc3NGb3JCeXRlY29kZU9mZnNldChtX2NvZGVCbG9jaywgYmxvY2ssIG1fYmFzaWNC
bG9ja3MsIGJ5dGVjb2RlT2Zmc2V0LCByZXN1bHQpOworICAgIGNvbXB1dGVMb2NhbExpdmVuZXNz
Rm9yQnl0ZWNvZGVPZmZzZXQobV9ncmFwaCwgYmxvY2ssIGJ5dGVjb2RlT2Zmc2V0LCByZXN1bHQp
OwogfQogCiBib29sIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6b3BlcmFuZElzTGl2ZUF0Qnl0
ZWNvZGVPZmZzZXQoaW50IG9wZXJhbmQsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KQpAQCAtMjQ0
LDExICsxMTIsMTEgQEAgRmFzdEJpdFZlY3RvciBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6Omdl
dExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQodW5zaWduZWQKIHZvaWQgQnl0ZWNvZGVMaXZl
bmVzc0FuYWx5c2lzOjpjb21wdXRlRnVsbExpdmVuZXNzKEZ1bGxCeXRlY29kZUxpdmVuZXNzJiBy
ZXN1bHQpCiB7CiAgICAgRmFzdEJpdFZlY3RvciBvdXQ7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxv
Y2sgPSBtX2dyYXBoLmNvZGVCbG9jaygpOwogICAgIAotICAgIHJlc3VsdC5tX21hcC5yZXNpemUo
bV9jb2RlQmxvY2stPmluc3RydWN0aW9ucygpLnNpemUoKSk7CisgICAgcmVzdWx0Lm1fbWFwLnJl
c2l6ZShjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLnNpemUoKSk7CiAgICAgCi0gICAgZm9yICh1
bnNpZ25lZCBpID0gbV9iYXNpY0Jsb2Nrcy5zaXplKCk7IGktLTspIHsKLSAgICAgICAgQnl0ZWNv
ZGVCYXNpY0Jsb2NrKiBibG9jayA9IG1fYmFzaWNCbG9ja3NbaV0uZ2V0KCk7CisgICAgZm9yIChz
dGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiYgYmxvY2sgOiBtX2dyYXBoLmJhc2lj
QmxvY2tzSW5SZXZlcnNlT3JkZXIoKSkgewogICAgICAgICBpZiAoYmxvY2stPmlzRW50cnlCbG9j
aygpIHx8IGJsb2NrLT5pc0V4aXRCbG9jaygpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAg
ICAgIApAQCAtMjU2LDcgKzEyNCw3IEBAIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpj
b21wdXRlRnVsbExpdmVuZXNzKEZ1bGxCeXRlY29kZUxpdmVuZXNzJiByZXN1bHQpCiAgICAgICAg
IAogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBibG9jay0+Ynl0ZWNvZGVPZmZzZXRzKCkuc2l6
ZSgpOyBpLS07KSB7CiAgICAgICAgICAgICB1bnNpZ25lZCBieXRlY29kZU9mZnNldCA9IGJsb2Nr
LT5ieXRlY29kZU9mZnNldHMoKVtpXTsKLSAgICAgICAgICAgIHN0ZXBPdmVySW5zdHJ1Y3Rpb24o
bV9jb2RlQmxvY2ssIGJsb2NrLCBtX2Jhc2ljQmxvY2tzLCBieXRlY29kZU9mZnNldCwgb3V0KTsK
KyAgICAgICAgICAgIHN0ZXBPdmVySW5zdHJ1Y3Rpb24obV9ncmFwaCwgYnl0ZWNvZGVPZmZzZXQs
IG91dCk7CiAgICAgICAgICAgICByZXN1bHQubV9tYXBbYnl0ZWNvZGVPZmZzZXRdID0gb3V0Owog
ICAgICAgICB9CiAgICAgfQpAQCAtMjY2LDExICsxMzQsMTEgQEAgdm9pZCBCeXRlY29kZUxpdmVu
ZXNzQW5hbHlzaXM6OmNvbXB1dGVLaWxscyhCeXRlY29kZUtpbGxzJiByZXN1bHQpCiB7CiAgICAg
RmFzdEJpdFZlY3RvciBvdXQ7CiAgICAgCi0gICAgcmVzdWx0Lm1fY29kZUJsb2NrID0gbV9jb2Rl
QmxvY2s7Ci0gICAgcmVzdWx0Lm1fa2lsbFNldHMgPSBzdGQ6Om1ha2VfdW5pcXVlPEJ5dGVjb2Rl
S2lsbHM6OktpbGxTZXRbXT4obV9jb2RlQmxvY2stPmluc3RydWN0aW9ucygpLnNpemUoKSk7Cisg
ICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBtX2dyYXBoLmNvZGVCbG9jaygpOworICAgIHJlc3Vs
dC5tX2NvZGVCbG9jayA9IGNvZGVCbG9jazsKKyAgICByZXN1bHQubV9raWxsU2V0cyA9IHN0ZDo6
bWFrZV91bmlxdWU8Qnl0ZWNvZGVLaWxsczo6S2lsbFNldFtdPihjb2RlQmxvY2stPmluc3RydWN0
aW9ucygpLnNpemUoKSk7CiAgICAgCi0gICAgZm9yICh1bnNpZ25lZCBpID0gbV9iYXNpY0Jsb2Nr
cy5zaXplKCk7IGktLTspIHsKLSAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jayA9IG1f
YmFzaWNCbG9ja3NbaV0uZ2V0KCk7CisgICAgZm9yIChzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVC
YXNpY0Jsb2NrPiYgYmxvY2sgOiBtX2dyYXBoLmJhc2ljQmxvY2tzSW5SZXZlcnNlT3JkZXIoKSkg
ewogICAgICAgICBpZiAoYmxvY2stPmlzRW50cnlCbG9jaygpIHx8IGJsb2NrLT5pc0V4aXRCbG9j
aygpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIApAQCAtMjc5LDcgKzE0Nyw3IEBA
IHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlS2lsbHMoQnl0ZWNvZGVLaWxs
cyYgcmVzdWx0KQogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBibG9jay0+Ynl0ZWNvZGVPZmZz
ZXRzKCkuc2l6ZSgpOyBpLS07KSB7CiAgICAgICAgICAgICB1bnNpZ25lZCBieXRlY29kZU9mZnNl
dCA9IGJsb2NrLT5ieXRlY29kZU9mZnNldHMoKVtpXTsKICAgICAgICAgICAgIHN0ZXBPdmVySW5z
dHJ1Y3Rpb24oCi0gICAgICAgICAgICAgICAgbV9jb2RlQmxvY2ssIGJsb2NrLCBtX2Jhc2ljQmxv
Y2tzLCBieXRlY29kZU9mZnNldCwKKyAgICAgICAgICAgICAgICBtX2dyYXBoLCBieXRlY29kZU9m
ZnNldCwgb3V0LAogICAgICAgICAgICAgICAgIFsmXSAodW5zaWduZWQgaW5kZXgpIHsKICAgICAg
ICAgICAgICAgICAgICAgLy8gVGhpcyBpcyBmb3IgdXNlcy4KICAgICAgICAgICAgICAgICAgICAg
aWYgKG91dC5nZXQoaW5kZXgpKQpAQCAtMjk3LDEyICsxNjUsMTMgQEAgdm9pZCBCeXRlY29kZUxp
dmVuZXNzQW5hbHlzaXM6OmNvbXB1dGVLaWxscyhCeXRlY29kZUtpbGxzJiByZXN1bHQpCiAKIHZv
aWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpkdW1wUmVzdWx0cygpCiB7Ci0gICAgZGF0YUxv
ZygiXG5EdW1waW5nIGJ5dGVjb2RlIGxpdmVuZXNzIGZvciAiLCAqbV9jb2RlQmxvY2ssICI6XG4i
KTsKLSAgICBJbnRlcnByZXRlciogaW50ZXJwcmV0ZXIgPSBtX2NvZGVCbG9jay0+dm0oKS0+aW50
ZXJwcmV0ZXI7Ci0gICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luID0gbV9jb2RlQmxv
Y2stPmluc3RydWN0aW9ucygpLmJlZ2luKCk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IG1fYmFzaWNCbG9ja3Muc2l6ZSgpOyBpKyspIHsKLSAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2Nr
KiBibG9jayA9IG1fYmFzaWNCbG9ja3NbaV0uZ2V0KCk7Ci0gICAgICAgIGRhdGFMb2dGKCJcbkJ5
dGVjb2RlIGJhc2ljIGJsb2NrICV1OiAlcCAob2Zmc2V0OiAldSwgbGVuZ3RoOiAldSlcbiIsIGks
IGJsb2NrLCBibG9jay0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKSwgYmxvY2stPnRvdGFsQnl0ZWNv
ZGVMZW5ndGgoKSk7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBtX2dyYXBoLmNvZGVCbG9j
aygpOworICAgIGRhdGFMb2coIlxuRHVtcGluZyBieXRlY29kZSBsaXZlbmVzcyBmb3IgIiwgKmNv
ZGVCbG9jaywgIjpcbiIpOworICAgIEludGVycHJldGVyKiBpbnRlcnByZXRlciA9IGNvZGVCbG9j
ay0+dm0oKS0+aW50ZXJwcmV0ZXI7CisgICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2lu
ID0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpOworICAgIHVuc2lnbmVkIGkgPSAw
OworICAgIGZvciAoQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jayA6IG1fZ3JhcGgpIHsKKyAgICAg
ICAgZGF0YUxvZ0YoIlxuQnl0ZWNvZGUgYmFzaWMgYmxvY2sgJXU6ICVwIChvZmZzZXQ6ICV1LCBs
ZW5ndGg6ICV1KVxuIiwgaSsrLCBibG9jaywgYmxvY2stPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCks
IGJsb2NrLT50b3RhbEJ5dGVjb2RlTGVuZ3RoKCkpOwogICAgICAgICBkYXRhTG9nRigiU3VjY2Vz
c29yczogIik7CiAgICAgICAgIGZvciAodW5zaWduZWQgaiA9IDA7IGogPCBibG9jay0+c3VjY2Vz
c29ycygpLnNpemUoKTsgaisrKSB7CiAgICAgICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIHN1
Y2Nlc3NvciA9IGJsb2NrLT5zdWNjZXNzb3JzKClbal07CkBAIC0zMjcsNyArMTk2LDcgQEAgdm9p
ZCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmR1bXBSZXN1bHRzKCkKICAgICAgICAgICAgICAg
ICAgICAgZGF0YUxvZ0YoIiV1ICIsIGopOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZGF0
YUxvZ0YoIlxuIik7Ci0gICAgICAgICAgICBtX2NvZGVCbG9jay0+ZHVtcEJ5dGVjb2RlKFdURjo6
ZGF0YUZpbGUoKSwgbV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVjKCksIGlu
c3RydWN0aW9uc0JlZ2luLCBjdXJyZW50SW5zdHJ1Y3Rpb24pOworICAgICAgICAgICAgY29kZUJs
b2NrLT5kdW1wQnl0ZWNvZGUoV1RGOjpkYXRhRmlsZSgpLCBjb2RlQmxvY2stPmdsb2JhbE9iamVj
dCgpLT5nbG9iYWxFeGVjKCksIGluc3RydWN0aW9uc0JlZ2luLCBjdXJyZW50SW5zdHJ1Y3Rpb24p
OwogCiAgICAgICAgICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGludGVycHJldGVyLT5nZXRPcGNv
ZGVJRChpbnN0cnVjdGlvbnNCZWdpbltieXRlY29kZU9mZnNldF0udS5vcGNvZGUpOwogICAgICAg
ICAgICAgdW5zaWduZWQgb3Bjb2RlTGVuZ3RoID0gb3Bjb2RlTGVuZ3Roc1tvcGNvZGVJRF07CkBA
IC0zNDYsOCArMjE1LDYgQEAgdm9pZCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmR1bXBSZXN1
bHRzKCkKIAogdm9pZCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGUoKQogewotICAg
IGNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzKG1fY29kZUJsb2NrLCBtX2Jhc2ljQmxvY2tzKTsK
LSAgICBBU1NFUlQobV9iYXNpY0Jsb2Nrcy5zaXplKCkpOwogICAgIHJ1bkxpdmVuZXNzRml4cG9p
bnQoKTsKIAogICAgIGlmIChPcHRpb25zOjpkdW1wQnl0ZWNvZGVMaXZlbmVzc1Jlc3VsdHMoKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVu
ZXNzQW5hbHlzaXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxp
dmVuZXNzQW5hbHlzaXMuaAppbmRleCBlY2UxNmYyMWYwMTUxMGE2NDI3ZmQ4NDExNDA3OWJlZDg3
MGMwODc1Li5hNDg1Zjg5NWRlZGY2OTlkYzZiYjI3ZDU0OWRjMTVkOGY1ZDdjODAyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5
c2lzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5l
c3NBbmFseXNpcy5oCkBAIC0yMywxMCArMjMsMTEgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc19oCi0j
ZGVmaW5lIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc19oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1
ZGUgIkJ5dGVjb2RlQmFzaWNCbG9jay5oIgorI2luY2x1ZGUgIkJ5dGVjb2RlR3JhcGguaCIKKyNp
bmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlIDx3dGYvRmFzdEJpdFZlY3Rvci5oPgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtMzQsMTMg
KzM1LDI3IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgQnl0ZWNvZGVLaWxsczsKLWNsYXNz
IENvZGVCbG9jazsKIGNsYXNzIEZ1bGxCeXRlY29kZUxpdmVuZXNzOwogCi1jbGFzcyBCeXRlY29k
ZUxpdmVuZXNzQW5hbHlzaXMgewordGVtcGxhdGU8dHlwZW5hbWUgRGVyaXZlZEFuYWx5c2lzPgor
Y2xhc3MgQnl0ZWNvZGVMaXZlbmVzc0xvY2FsUHJvcGFnYXRpb24geworcHJvdGVjdGVkOgorICAg
IHRlbXBsYXRlPHR5cGVuYW1lIEdyYXBoLCB0eXBlbmFtZSBVc2VGdW5jdG9yLCB0eXBlbmFtZSBE
ZWZGdW5jdG9yPiB2b2lkIHN0ZXBPdmVySW5zdHJ1Y3Rpb24oR3JhcGgmLCB1bnNpZ25lZCBieXRl
Y29kZU9mZnNldCwgRmFzdEJpdFZlY3RvciYgb3V0LCBjb25zdCBVc2VGdW5jdG9yJiwgY29uc3Qg
RGVmRnVuY3RvciYpOworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgR3JhcGg+IHZvaWQgc3RlcE92
ZXJJbnN0cnVjdGlvbihHcmFwaCYsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBGYXN0Qml0VmVj
dG9yJiBvdXQpOworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgR3JhcGg+IGJvb2wgY29tcHV0ZUxv
Y2FsTGl2ZW5lc3NGb3JCeXRlY29kZU9mZnNldChHcmFwaCYsIEJ5dGVjb2RlQmFzaWNCbG9jayos
IHVuc2lnbmVkIHRhcmdldE9mZnNldCwgRmFzdEJpdFZlY3RvciYgcmVzdWx0KTsKKworICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEdyYXBoPiBib29sIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQmxvY2so
R3JhcGgmLCBCeXRlY29kZUJhc2ljQmxvY2sqKTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEdy
YXBoPiBGYXN0Qml0VmVjdG9yIGdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQoR3JhcGgm
LCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCk7Cit9OworCitjbGFzcyBCeXRlY29kZUxpdmVuZXNz
QW5hbHlzaXMgOiBwcml2YXRlIEJ5dGVjb2RlTGl2ZW5lc3NMb2NhbFByb3BhZ2F0aW9uPEJ5dGVj
b2RlTGl2ZW5lc3NBbmFseXNpcz4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcyk7CiBwdWJsaWM6
CisgICAgZnJpZW5kIGNsYXNzIEJ5dGVjb2RlTGl2ZW5lc3NMb2NhbFByb3BhZ2F0aW9uPEJ5dGVj
b2RlTGl2ZW5lc3NBbmFseXNpcz47CiAgICAgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzKENvZGVC
bG9jayopOwogICAgIAogICAgIGJvb2wgb3BlcmFuZElzTGl2ZUF0Qnl0ZWNvZGVPZmZzZXQoaW50
IG9wZXJhbmQsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KTsKQEAgLTU2LDE0ICs3MSwxNSBAQCBj
bGFzcyBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMgewogCiAgICAgdm9pZCBnZXRMaXZlbmVzc0lu
Zm9BdEJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBGYXN0Qml0VmVjdG9y
Jik7CiAKLSAgICBDb2RlQmxvY2sqIG1fY29kZUJsb2NrOwotICAgIFZlY3RvcjxzdGQ6OnVuaXF1
ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4gbV9iYXNpY0Jsb2NrczsKKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBGdW5jdG9yPiB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJs
b2NrKiwgT3Bjb2RlSUQsIEluc3RydWN0aW9uKiwgRmFzdEJpdFZlY3RvciYsIGNvbnN0IEZ1bmN0
b3ImKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB2b2lkIGNvbXB1dGVVc2VzRm9y
Qnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiwgT3Bjb2RlSUQsIEluc3RydWN0aW9uKiwgRmFzdEJp
dFZlY3RvciYsIGNvbnN0IEZ1bmN0b3ImKTsKKworICAgIEJ5dGVjb2RlR3JhcGg8Q29kZUJsb2Nr
PiBtX2dyYXBoOwogfTsKIAogaW5saW5lIGJvb2wgb3BlcmFuZElzQWx3YXlzTGl2ZShpbnQgb3Bl
cmFuZCk7CiBpbmxpbmUgYm9vbCBvcGVyYW5kVGhhdElzTm90QWx3YXlzTGl2ZUlzTGl2ZShjb25z
dCBGYXN0Qml0VmVjdG9yJiBvdXQsIGludCBvcGVyYW5kKTsKIGlubGluZSBib29sIG9wZXJhbmRJ
c0xpdmUoY29uc3QgRmFzdEJpdFZlY3RvciYgb3V0LCBpbnQgb3BlcmFuZCk7CitpbmxpbmUgYm9v
bCBpc1ZhbGlkUmVnaXN0ZXJGb3JMaXZlbmVzcyhpbnQgb3BlcmFuZCk7CiAKIH0gLy8gbmFtZXNw
YWNlIEpTQwotCi0jZW5kaWYgLy8gQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzX2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlz
aXNJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZl
bmVzc0FuYWx5c2lzSW5saW5lcy5oCmluZGV4IDliNWM3NTVmY2I2Y2Q1MTgwNTE0NTAwNzg5MjJh
YzRkNmQ0ZDIzOGYuLjljNTkwZDFhM2I1ZDM3NjQzYTU4YzlhNzRjMzVjYjE0MWQ3ODE3YTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNz
QW5hbHlzaXNJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGluZXMuaApAQCAtMjYsNiArMjYsNyBAQAogI2lmbmRl
ZiBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNJbmxpbmVzX2gKICNkZWZpbmUgQnl0ZWNvZGVMaXZl
bmVzc0FuYWx5c2lzSW5saW5lc19oCiAKKyNpbmNsdWRlICJCeXRlY29kZUdyYXBoLmgiCiAjaW5j
bHVkZSAiQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgi
CiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgpAQCAtNTAsNiArNTEsMTIyIEBAIGlubGluZSBib29s
IG9wZXJhbmRJc0xpdmUoY29uc3QgRmFzdEJpdFZlY3RvciYgb3V0LCBpbnQgb3BlcmFuZCkKICAg
ICByZXR1cm4gb3BlcmFuZElzQWx3YXlzTGl2ZShvcGVyYW5kKSB8fCBvcGVyYW5kVGhhdElzTm90
QWx3YXlzTGl2ZUlzTGl2ZShvdXQsIG9wZXJhbmQpOwogfQogCitpbmxpbmUgYm9vbCBpc1ZhbGlk
UmVnaXN0ZXJGb3JMaXZlbmVzcyhpbnQgb3BlcmFuZCkKK3sKKyAgICBWaXJ0dWFsUmVnaXN0ZXIg
dmlydHVhbFJlZyhvcGVyYW5kKTsKKyAgICBpZiAodmlydHVhbFJlZy5pc0NvbnN0YW50KCkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gdmlydHVhbFJlZy5pc0xvY2FsKCk7Cit9
CisKKy8vIFNpbXBsaWZpZWQgaW50ZXJmYWNlIHRvIGJ5dGVjb2RlIHVzZS9kZWYsIHdoaWNoIGRl
dGVybWluZXMgZGVmcyBmaXJzdCBhbmQgdGhlbiB1c2VzLCBhbmQgaW5jbHVkZXMKKy8vIGV4Y2Vw
dGlvbiBoYW5kbGVycyBpbiB0aGUgdXNlcy4KK3RlbXBsYXRlPHR5cGVuYW1lIERlcml2ZWRBbmFs
eXNpcz4KK3RlbXBsYXRlPHR5cGVuYW1lIEdyYXBoLCB0eXBlbmFtZSBVc2VGdW5jdG9yLCB0eXBl
bmFtZSBEZWZGdW5jdG9yPgoraW5saW5lIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0xvY2FsUHJvcGFn
YXRpb248RGVyaXZlZEFuYWx5c2lzPjo6c3RlcE92ZXJJbnN0cnVjdGlvbihHcmFwaCYgZ3JhcGgs
IHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBGYXN0Qml0VmVjdG9yJiBvdXQsIGNvbnN0IFVzZUZ1
bmN0b3ImIHVzZSwgY29uc3QgRGVmRnVuY3RvciYgZGVmKQoreworICAgIC8vIFRoaXMgYWJzdHJh
Y3RseSBleGVjdXRlIHRoZSBpbnN0cnVjdGlvbiBpbiByZXZlcnNlLiBJbnN0cnVjdGlvbnMgbG9n
aWNhbGx5IGZpcnN0IHVzZSBvcGVyYW5kcyBhbmQKKyAgICAvLyB0aGVuIGRlZmluZSBvcGVyYW5k
cy4gVGhpcyBsb2dpY2FsIG9yZGVyaW5nIGlzIG5lY2Vzc2FyeSBmb3Igb3BlcmF0aW9ucyB0aGF0
IHVzZSBhbmQgZGVmIHRoZSBzYW1lCisgICAgLy8gb3BlcmFuZCwgbGlrZToKKyAgICAvLworICAg
IC8vICAgICBvcF9hZGQgbG9jMSwgbG9jMSwgbG9jMgorICAgIC8vCisgICAgLy8gVGhlIHVzZSBv
ZiBsb2MxIGhhcHBlbnMgYmVmb3JlIHRoZSBkZWYgb2YgbG9jMS4gVGhhdCdzIGEgc2VtYW50aWMg
cmVxdWlyZW1lbnQgc2luY2UgdGhlIGFkZAorICAgIC8vIG9wZXJhdGlvbiBjYW5ub3QgdHJhdmVs
IGZvcndhcmQgaW4gdGltZSB0byByZWFkIHRoZSB2YWx1ZSB0aGF0IGl0IHdpbGwgcHJvZHVjZSBh
ZnRlciByZWFkaW5nIHRoYXQKKyAgICAvLyB2YWx1ZS4gU2luY2Ugd2UgYXJlIGV4ZWN1dGluZyBp
biByZXZlcnNlLCB0aGlzIG1lYW5zIHRoYXQgd2UgbXVzdCBkbyBkZWZzIGJlZm9yZSB1c2VzIChy
ZXZlcnNlIG9mCisgICAgLy8gdXNlcyBiZWZvcmUgZGVmcykuCisgICAgLy8KKyAgICAvLyBTaW5j
ZSB0aGlzIGlzIGEgbGl2ZW5lc3MgYW5hbHlzaXMsIHRoaXMgb3JkZXJpbmcgZW5kcyB1cCBiZWlu
ZyBwYXJ0aWN1bGFybHkgaW1wb3J0YW50OiBpZiB3ZSBkaWQKKyAgICAvLyB1c2VzIGJlZm9yZSBk
ZWZzLCB0aGVuIHRoZSBhZGQgb3BlcmF0aW9uIGFib3ZlIHdvdWxkIGFwcGVhciB0byBub3QgaGF2
ZSBsb2MxIGxpdmUsIHNpbmNlIHdlJ2QKKyAgICAvLyBmaXJzdCBhZGQgaXQgdG8gdGhlIG91dCBz
ZXQgKHRoZSB1c2UpLCBhbmQgdGhlbiB3ZSdkIHJlbW92ZSBpdCAodGhlIGRlZikuCisKKyAgICBh
dXRvKiBjb2RlQmxvY2sgPSBncmFwaC5jb2RlQmxvY2soKTsKKyAgICBJbnRlcnByZXRlciogaW50
ZXJwcmV0ZXIgPSBjb2RlQmxvY2stPnZtKCktPmludGVycHJldGVyOworICAgIGF1dG8qIGluc3Ry
dWN0aW9uc0JlZ2luID0gZ3JhcGguaW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsKKyAgICBhdXRvKiBp
bnN0cnVjdGlvbiA9ICZpbnN0cnVjdGlvbnNCZWdpbltieXRlY29kZU9mZnNldF07CisgICAgT3Bj
b2RlSUQgb3Bjb2RlSUQgPSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoKmluc3RydWN0aW9uKTsK
KworICAgIHN0YXRpY19jYXN0PERlcml2ZWRBbmFseXNpcyo+KHRoaXMpLT5jb21wdXRlRGVmc0Zv
ckJ5dGVjb2RlT2Zmc2V0KAorICAgICAgICBjb2RlQmxvY2ssIG9wY29kZUlELCBpbnN0cnVjdGlv
biwgb3V0LAorICAgICAgICBbJl0gKHR5cGVuYW1lIEdyYXBoOjpDb2RlQmxvY2sqLCB0eXBlbmFt
ZSBHcmFwaDo6SW5zdHJ1Y3Rpb24qLCBPcGNvZGVJRCwgaW50IG9wZXJhbmQpIHsKKyAgICAgICAg
ICAgIGlmIChpc1ZhbGlkUmVnaXN0ZXJGb3JMaXZlbmVzcyhvcGVyYW5kKSkKKyAgICAgICAgICAg
ICAgICBkZWYoVmlydHVhbFJlZ2lzdGVyKG9wZXJhbmQpLnRvTG9jYWwoKSk7CisgICAgICAgIH0p
OworCisgICAgc3RhdGljX2Nhc3Q8RGVyaXZlZEFuYWx5c2lzKj4odGhpcyktPmNvbXB1dGVVc2Vz
Rm9yQnl0ZWNvZGVPZmZzZXQoCisgICAgICAgIGNvZGVCbG9jaywgb3Bjb2RlSUQsIGluc3RydWN0
aW9uLCBvdXQsCisgICAgICAgIFsmXSAodHlwZW5hbWUgR3JhcGg6OkNvZGVCbG9jayosIHR5cGVu
YW1lIEdyYXBoOjpJbnN0cnVjdGlvbiosIE9wY29kZUlELCBpbnQgb3BlcmFuZCkgeworICAgICAg
ICAgICAgaWYgKGlzVmFsaWRSZWdpc3RlckZvckxpdmVuZXNzKG9wZXJhbmQpKQorICAgICAgICAg
ICAgICAgIHVzZShWaXJ0dWFsUmVnaXN0ZXIob3BlcmFuZCkudG9Mb2NhbCgpKTsKKyAgICAgICAg
fSk7CisKKyAgICAvLyBJZiB3ZSBoYXZlIGFuIGV4Y2VwdGlvbiBoYW5kbGVyLCB3ZSB3YW50IHRo
ZSBsaXZlLWluIHZhcmlhYmxlcyBvZiB0aGUgCisgICAgLy8gZXhjZXB0aW9uIGhhbmRsZXIgYmxv
Y2sgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIGxpdmUtaW4gb2YgdGhpcyBwYXJ0aWN1bGFyIGJ5dGVj
b2RlLgorICAgIGlmIChhdXRvKiBoYW5kbGVyID0gY29kZUJsb2NrLT5oYW5kbGVyRm9yQnl0ZWNv
ZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpKSB7CisgICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9jayog
aGFuZGxlckJsb2NrID0gZ3JhcGguZmluZEJhc2ljQmxvY2tXaXRoTGVhZGVyT2Zmc2V0KGhhbmRs
ZXItPnRhcmdldCk7CisgICAgICAgIEFTU0VSVChoYW5kbGVyQmxvY2spOworICAgICAgICBoYW5k
bGVyQmxvY2stPmluKCkuZm9yRWFjaFNldEJpdCh1c2UpOworICAgIH0KK30KKwordGVtcGxhdGU8
dHlwZW5hbWUgRGVyaXZlZEFuYWx5c2lzPgordGVtcGxhdGU8dHlwZW5hbWUgR3JhcGg+Citpbmxp
bmUgdm9pZCBCeXRlY29kZUxpdmVuZXNzTG9jYWxQcm9wYWdhdGlvbjxEZXJpdmVkQW5hbHlzaXM+
OjpzdGVwT3Zlckluc3RydWN0aW9uKEdyYXBoJiBncmFwaCwgdW5zaWduZWQgYnl0ZWNvZGVPZmZz
ZXQsIEZhc3RCaXRWZWN0b3ImIG91dCkKK3sKKyAgICBzdGVwT3Zlckluc3RydWN0aW9uKAorICAg
ICAgICBncmFwaCwgYnl0ZWNvZGVPZmZzZXQsIG91dCwKKyAgICAgICAgWyZdICh1bnNpZ25lZCBi
aXRJbmRleCkgeworICAgICAgICAgICAgLy8gVGhpcyBpcyB0aGUgdXNlIGZ1bmN0b3IsIHNvIHdl
IHNldCB0aGUgYml0LgorICAgICAgICAgICAgb3V0LnNldChiaXRJbmRleCk7CisgICAgICAgIH0s
CisgICAgICAgIFsmXSAodW5zaWduZWQgYml0SW5kZXgpIHsKKyAgICAgICAgICAgIC8vIFRoaXMg
aXMgdGhlIGRlZiBmdW5jdG9yLCBzbyB3ZSBjbGVhciB0aGUgYml0LgorICAgICAgICAgICAgb3V0
LmNsZWFyKGJpdEluZGV4KTsKKyAgICAgICAgfSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIERl
cml2ZWRBbmFseXNpcz4KK3RlbXBsYXRlPHR5cGVuYW1lIEdyYXBoPgoraW5saW5lIGJvb2wgQnl0
ZWNvZGVMaXZlbmVzc0xvY2FsUHJvcGFnYXRpb248RGVyaXZlZEFuYWx5c2lzPjo6Y29tcHV0ZUxv
Y2FsTGl2ZW5lc3NGb3JCeXRlY29kZU9mZnNldChHcmFwaCYgZ3JhcGgsIEJ5dGVjb2RlQmFzaWNC
bG9jayogYmxvY2ssIHVuc2lnbmVkIHRhcmdldE9mZnNldCwgRmFzdEJpdFZlY3RvciYgcmVzdWx0
KQoreworICAgIEFTU0VSVCghYmxvY2stPmlzRXhpdEJsb2NrKCkpOworICAgIEFTU0VSVCghYmxv
Y2stPmlzRW50cnlCbG9jaygpKTsKKworICAgIEZhc3RCaXRWZWN0b3Igb3V0ID0gYmxvY2stPm91
dCgpOworCisgICAgZm9yIChpbnQgaSA9IGJsb2NrLT5ieXRlY29kZU9mZnNldHMoKS5zaXplKCkg
LSAxOyBpID49IDA7IGktLSkgeworICAgICAgICB1bnNpZ25lZCBieXRlY29kZU9mZnNldCA9IGJs
b2NrLT5ieXRlY29kZU9mZnNldHMoKVtpXTsKKyAgICAgICAgaWYgKHRhcmdldE9mZnNldCA+IGJ5
dGVjb2RlT2Zmc2V0KQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIHN0ZXBPdmVySW5zdHJ1
Y3Rpb24oZ3JhcGgsIGJ5dGVjb2RlT2Zmc2V0LCBvdXQpOworICAgIH0KKworICAgIHJldHVybiBy
ZXN1bHQuc2V0QW5kQ2hlY2sob3V0KTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgRGVyaXZlZEFu
YWx5c2lzPgordGVtcGxhdGU8dHlwZW5hbWUgR3JhcGg+CitpbmxpbmUgYm9vbCBCeXRlY29kZUxp
dmVuZXNzTG9jYWxQcm9wYWdhdGlvbjxEZXJpdmVkQW5hbHlzaXM+Ojpjb21wdXRlTG9jYWxMaXZl
bmVzc0ZvckJsb2NrKEdyYXBoJiBncmFwaCwgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaykKK3sK
KyAgICBpZiAoYmxvY2stPmlzRXhpdEJsb2NrKCkgfHwgYmxvY2stPmlzRW50cnlCbG9jaygpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9y
Qnl0ZWNvZGVPZmZzZXQoZ3JhcGgsIGJsb2NrLCBibG9jay0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQo
KSwgYmxvY2stPmluKCkpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBEZXJpdmVkQW5hbHlzaXM+
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBHcmFwaD4KK2lubGluZSBGYXN0Qml0VmVjdG9yIEJ5dGVjb2Rl
TGl2ZW5lc3NMb2NhbFByb3BhZ2F0aW9uPERlcml2ZWRBbmFseXNpcz46OmdldExpdmVuZXNzSW5m
b0F0Qnl0ZWNvZGVPZmZzZXQoR3JhcGgmIGdyYXBoLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCkK
K3sKKyAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrID0gZ3JhcGguZmluZEJhc2ljQmxvY2tG
b3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCk7CisgICAgQVNTRVJUKGJsb2NrKTsKKyAg
ICBBU1NFUlQoIWJsb2NrLT5pc0VudHJ5QmxvY2soKSk7CisgICAgQVNTRVJUKCFibG9jay0+aXNF
eGl0QmxvY2soKSk7CisgICAgRmFzdEJpdFZlY3RvciBvdXQ7CisgICAgb3V0LnJlc2l6ZShibG9j
ay0+b3V0KCkubnVtQml0cygpKTsKKyAgICBjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJ5dGVjb2Rl
T2Zmc2V0KGdyYXBoLCBibG9jaywgYnl0ZWNvZGVPZmZzZXQsIG91dCk7CisgICAgcmV0dXJuIG91
dDsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBCeXRlY29kZUxpdmVuZXNz
QW5hbHlzaXNJbmxpbmVzX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZVJld3JpdGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZVJld3JpdGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MDA0YzI5YWZlMzc2YzA4ZDE1NmUx
NDA5ZTBkNDA0YjVmNTViYjkwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlUmV3cml0ZXIuY3BwCkBAIC0wLDAgKzEsOTEgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTYgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29t
PgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQnl0ZWNvZGVSZXdy
aXRlci5oIgorCisjaW5jbHVkZSA8d3RmL0J1YmJsZVNvcnQuaD4KKworbmFtZXNwYWNlIEpTQyB7
CisKK2ludCBCeXRlY29kZVJld3JpdGVyOjphZGp1c3RPZmZzZXQoaW50IGJ5dGVjb2RlT2Zmc2V0
LCBpbnQganVtcFRhcmdldCkKK3sKKyAgICBpZiAoYnl0ZWNvZGVPZmZzZXQgPCBqdW1wVGFyZ2V0
KSB7CisgICAgICAgIGF1dG8gc3RhcnQgPSBzdGQ6Omxvd2VyX2JvdW5kKG1faW5zZXJ0aW9ucy5i
ZWdpbigpLCBtX2luc2VydGlvbnMuZW5kKCksIGJ5dGVjb2RlT2Zmc2V0LCBbJl0gKGNvbnN0IElu
c2VydGlvbiYgaW5zZXJ0aW9uLCBpbnQgYnl0ZWNvZGVPZmZzZXQpIHsKKyAgICAgICAgICAgIGlm
IChzdGF0aWNfY2FzdDxpbnQ+KGluc2VydGlvbi5pbmRleCgpKSA9PSBieXRlY29kZU9mZnNldCkK
KyAgICAgICAgICAgICAgICByZXR1cm4gaW5zZXJ0aW9uLmVsZW1lbnQoKS5wb3NpdGlvbiA8IENv
bW1hbmQ6OlBvc2l0aW9uOjpCYXNlUG9pbnQ7CisgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8aW50PihpbnNlcnRpb24uaW5kZXgoKSkgPCBieXRlY29kZU9mZnNldDsKKyAgICAgICAgfSk7
CisgICAgICAgIGlmIChzdGFydCAhPSBtX2luc2VydGlvbnMuZW5kKCkpIHsKKyAgICAgICAgICAg
IGF1dG8gZW5kID0gc3RkOjpsb3dlcl9ib3VuZChtX2luc2VydGlvbnMuYmVnaW4oKSwgbV9pbnNl
cnRpb25zLmVuZCgpLCBqdW1wVGFyZ2V0LCBbJl0gKGNvbnN0IEluc2VydGlvbiYgaW5zZXJ0aW9u
LCBpbnQganVtcFRhcmdldCkgeworICAgICAgICAgICAgICAgIGlmIChzdGF0aWNfY2FzdDxpbnQ+
KGluc2VydGlvbi5pbmRleCgpKSA9PSBqdW1wVGFyZ2V0KQorICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gaW5zZXJ0aW9uLmVsZW1lbnQoKS5wb3NpdGlvbiA8IENvbW1hbmQ6OlBvc2l0aW9uOjpC
YXNlUG9pbnQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oaW5zZXJ0
aW9uLmluZGV4KCkpIDwganVtcFRhcmdldDsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAg
Zm9yICg7IHN0YXJ0ICE9IGVuZDsgKytzdGFydCkgeworICAgICAgICAgICAgICAgIGlmIChzdGFy
dC0+ZWxlbWVudCgpLnR5cGUgPT0gQ29tbWFuZDo6VHlwZTo6UmVtb3ZlKQorICAgICAgICAgICAg
ICAgICAgICBqdW1wVGFyZ2V0IC09IHN0YXJ0LT5lbGVtZW50KCkubGVuZ3RoOworICAgICAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAganVtcFRhcmdldCArPSBzdGFydC0+ZWxl
bWVudCgpLmxlbmd0aDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4g
anVtcFRhcmdldCAtIGJ5dGVjb2RlT2Zmc2V0OworICAgIH0KKworICAgIGlmIChieXRlY29kZU9m
ZnNldCA9PSBqdW1wVGFyZ2V0KQorICAgICAgICByZXR1cm4gMDsKKworICAgIHJldHVybiAtYWRq
dXN0T2Zmc2V0KGp1bXBUYXJnZXQsIGJ5dGVjb2RlT2Zmc2V0KTsKK30KKwordm9pZCBCeXRlY29k
ZVJld3JpdGVyOjphcHBseU1vZGlmaWNhdGlvbigpCit7CisgICAgZm9yIChzaXplX3QgaW5zZXJ0
aW9uSW5kZXggPSBtX2luc2VydGlvbnMuc2l6ZSgpOyBpbnNlcnRpb25JbmRleC0tOykgeworICAg
ICAgICBjb25zdCBJbnNlcnRpb24mIGluc2VydGlvbiA9IG1faW5zZXJ0aW9uc1tpbnNlcnRpb25J
bmRleF07CisgICAgICAgIGlmIChpbnNlcnRpb24uZWxlbWVudCgpLnR5cGUgPT0gQ29tbWFuZDo6
VHlwZTo6UmVtb3ZlKQorICAgICAgICAgICAgbV9ncmFwaC5pbnN0cnVjdGlvbnMoKS5yZW1vdmUo
aW5zZXJ0aW9uLmluZGV4KCksIGluc2VydGlvbi5lbGVtZW50KCkubGVuZ3RoKTsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgbV9ncmFwaC5pbnN0cnVjdGlvbnMoKS5pbnNlcnQoaW5zZXJ0aW9u
LmluZGV4KCksIGluc2VydGlvbi5lbGVtZW50KCkuYnl0ZWNvZGUuaW5zdHJ1Y3Rpb25zLCBvcGNv
ZGVMZW5ndGgoaW5zZXJ0aW9uLmVsZW1lbnQoKS5ieXRlY29kZS5pbnN0cnVjdGlvbnNbMF0udS5v
cGNvZGUpKTsKKyAgICB9CisgICAgbV9pbnNlcnRpb25zLmNsZWFyKCk7Cit9CisKK3ZvaWQgQnl0
ZWNvZGVSZXdyaXRlcjo6ZXhlY3V0ZSgpCit7CisgICAgV1RGOjpidWJibGVTb3J0KG1faW5zZXJ0
aW9ucy5iZWdpbigpLCBtX2luc2VydGlvbnMuZW5kKCksIFtdIChjb25zdCBJbnNlcnRpb24mIGxo
cywgY29uc3QgSW5zZXJ0aW9uJiByaHMpIHsKKyAgICAgICAgaWYgKGxocy5pbmRleCgpID09IHJo
cy5pbmRleCgpKSB7CisgICAgICAgICAgICBpZiAobGhzLmVsZW1lbnQoKS50eXBlID09IHJocy5l
bGVtZW50KCkudHlwZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbGhzLmVsZW1lbnQoKS5wb3Np
dGlvbiA8IHJocy5lbGVtZW50KCkucG9zaXRpb247CisgICAgICAgICAgICAvLyBXZSB3b3VsZCBs
aWtlIHRvIHBlcmZvcm0gcmVtb3ZlIG9wZXJhdGlvbiBiZWZvcmUgaW5zZXJ0aW9uLgorICAgICAg
ICAgICAgcmV0dXJuIGxocy5lbGVtZW50KCkudHlwZSA8IHJocy5lbGVtZW50KCkudHlwZTsKKyAg
ICAgICAgfQorICAgICAgICByZXR1cm4gbGhzIDwgcmhzOworICAgIH0pOworCisgICAgVW5saW5r
ZWRDb2RlQmxvY2sqIGNvZGVCbG9jayA9IG1fZ3JhcGguY29kZUJsb2NrKCk7CisgICAgY29kZUJs
b2NrLT5hcHBseU1vZGlmaWNhdGlvbigqdGhpcyk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlUmV3cml0
ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVJld3JpdGVyLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZWRkNDFjZWQ3MTM4ZTY1MmU3MzVhN2VlYjBiZDZjYzk0ZTk2MTQ3NAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVJl
d3JpdGVyLmgKQEAgLTAsMCArMSw5NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBZdXN1
a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSAiQnl0ZWNvZGVHcmFwaC5oIgorI2luY2x1ZGUgIkJ5dGVjb2Rlcy5oIgor
I2luY2x1ZGUgIlVubGlua2VkQ29kZUJsb2NrLmgiCisjaW5jbHVkZSA8d3RmL0luc2VydGlvbi5o
PgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgQnl0ZWNvZGVSZXdyaXRlciB7CitwdWJsaWM6
CisgICAgc3RydWN0IEluc2VydGVkQnl0ZWNvZGUgeworICAgICAgICBVbmxpbmtlZEluc3RydWN0
aW9uIGluc3RydWN0aW9uc1tNQVhfT1BDT0RFX0xFTkdUSF9PRl9CWVRFQ09ERV07CisgICAgfTsK
KworICAgIHN0cnVjdCBDb21tYW5kIHsKKyAgICAgICAgZW51bSBjbGFzcyBUeXBlIDogdWludDE2
X3QgeyBJbnNlcnQgPSAwLCBSZW1vdmUgPSAxLCB9OworICAgICAgICBlbnVtIGNsYXNzIFBvc2l0
aW9uIDogaW50MTZfdCB7IEJlZm9yZSA9IC0xLCBCYXNlUG9pbnQgPSAwLCBBZnRlciA9IDEgfTsK
KworICAgICAgICBUeXBlIHR5cGU7CisgICAgICAgIFBvc2l0aW9uIHBvc2l0aW9uOworICAgICAg
ICBzaXplX3QgbGVuZ3RoOworICAgICAgICBJbnNlcnRlZEJ5dGVjb2RlIGJ5dGVjb2RlOworICAg
IH07CisKKyAgICB0eXBlZGVmIFdURjo6SW5zZXJ0aW9uPENvbW1hbmQ+IEluc2VydGlvbjsKKwor
ICAgIEJ5dGVjb2RlUmV3cml0ZXIoQnl0ZWNvZGVHcmFwaDxVbmxpbmtlZENvZGVCbG9jaz4mIGdy
YXBoKQorICAgICAgICA6IG1fZ3JhcGgoZ3JhcGgpCisgICAgeworICAgIH0KKworICAgIHRlbXBs
YXRlPGNsYXNzLi4uIEFyZ3M+CisgICAgdm9pZCBpbnNlcnRBZnRlcih1bnNpZ25lZCBieXRlY29k
ZU9mZnNldCwgT3Bjb2RlSUQgb3Bjb2RlSUQsIEFyZ3MuLi4gYXJncykKKyAgICB7CisgICAgICAg
IEluc2VydGVkQnl0ZWNvZGUgYnl0ZWNvZGUgPSB7IHsKKyAgICAgICAgICAgIFVubGlua2VkSW5z
dHJ1Y3Rpb24ob3Bjb2RlSUQpLAorICAgICAgICAgICAgVW5saW5rZWRJbnN0cnVjdGlvbihhcmdz
KS4uLgorICAgICAgICB9IH07CisgICAgICAgIG1faW5zZXJ0aW9ucy5hcHBlbmQoSW5zZXJ0aW9u
KGJ5dGVjb2RlT2Zmc2V0LCBDb21tYW5kIHsgQ29tbWFuZDo6VHlwZTo6SW5zZXJ0LCBDb21tYW5k
OjpQb3NpdGlvbjo6QWZ0ZXIsIG9wY29kZUxlbmd0aChvcGNvZGVJRCksIGJ5dGVjb2RlIH0pKTsK
KyAgICB9CisKKyAgICB0ZW1wbGF0ZTxjbGFzcy4uLiBBcmdzPgorICAgIHZvaWQgaW5zZXJ0QmVm
b3JlKHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBPcGNvZGVJRCBvcGNvZGVJRCwgQXJncy4uLiBh
cmdzKQorICAgIHsKKyAgICAgICAgSW5zZXJ0ZWRCeXRlY29kZSBieXRlY29kZSA9IHsgeworICAg
ICAgICAgICAgVW5saW5rZWRJbnN0cnVjdGlvbihvcGNvZGVJRCksCisgICAgICAgICAgICBVbmxp
bmtlZEluc3RydWN0aW9uKGFyZ3MpLi4uCisgICAgICAgIH0gfTsKKyAgICAgICAgbV9pbnNlcnRp
b25zLmFwcGVuZChJbnNlcnRpb24oYnl0ZWNvZGVPZmZzZXQsIENvbW1hbmQgeyBDb21tYW5kOjpU
eXBlOjpJbnNlcnQsIENvbW1hbmQ6OlBvc2l0aW9uOjpCZWZvcmUsIG9wY29kZUxlbmd0aChvcGNv
ZGVJRCksIGJ5dGVjb2RlIH0pKTsKKyAgICB9CisKKyAgICB2b2lkIHJlbW92ZUJ5dGVjb2RlKHVu
c2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KQorICAgIHsKKyAgICAgICAgbV9pbnNlcnRpb25zLmFwcGVu
ZChJbnNlcnRpb24oYnl0ZWNvZGVPZmZzZXQsIENvbW1hbmQgeyBDb21tYW5kOjpUeXBlOjpSZW1v
dmUsIENvbW1hbmQ6OlBvc2l0aW9uOjpBZnRlciwgb3Bjb2RlTGVuZ3RoKG1fZ3JhcGguaW5zdHJ1
Y3Rpb25zKClbYnl0ZWNvZGVPZmZzZXRdLnUub3Bjb2RlKSwgSW5zZXJ0ZWRCeXRlY29kZSB7IH0g
fSkpOworICAgIH0KKworICAgIHZvaWQgZXhlY3V0ZSgpOworCisgICAgQnl0ZWNvZGVHcmFwaDxV
bmxpbmtlZENvZGVCbG9jaz4mIGdyYXBoKCkgeyByZXR1cm4gbV9ncmFwaDsgfQorCisgICAgaW50
IGFkanVzdE9mZnNldChpbnQgYnl0ZWNvZGVPZmZzZXQsIGludCBqdW1wVGFyZ2V0KTsKKworcHJp
dmF0ZToKKyAgICBmcmllbmQgY2xhc3MgVW5saW5rZWRDb2RlQmxvY2s7CisgICAgdm9pZCBhcHBs
eU1vZGlmaWNhdGlvbigpOworCisgICAgQnl0ZWNvZGVHcmFwaDxVbmxpbmtlZENvZGVCbG9jaz4m
IG1fZ3JhcGg7CisgICAgVmVjdG9yPEluc2VydGlvbiwgOD4gbV9pbnNlcnRpb25zOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZVVzZURlZi5oCmluZGV4IDYwNTdlZjYwOWVlZDFlZTJhOTliMDc2MjhiOTFjOTc1NTMz
ZmU0YmIuLjE3NTAyZWIwZjQ0ZTA1ZWExNjAyNmMwMTQ2YzU0ZGRmOTc1NTQ0ZjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCkBAIC0yNywx
OCArMjcsMTMgQEAKICNkZWZpbmUgQnl0ZWNvZGVVc2VEZWZfaAogCiAjaW5jbHVkZSAiQ29kZUJs
b2NrLmgiCisjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKLXRl
bXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+Ci12b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZz
ZXQoCi0gICAgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2ss
IHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQordGVtcGxh
dGU8dHlwZW5hbWUgQmxvY2ssIHR5cGVuYW1lIEZ1bmN0b3IsIHR5cGVuYW1lIEluc3RydWN0aW9u
Pgordm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KEJsb2NrKiBjb2RlQmxvY2ssIE9w
Y29kZUlEIG9wY29kZUlELCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIGNvbnN0IEZ1bmN0b3Im
IGZ1bmN0b3IpCiB7Ci0gICAgSW50ZXJwcmV0ZXIqIGludGVycHJldGVyID0gY29kZUJsb2NrLT52
bSgpLT5pbnRlcnByZXRlcjsKLSAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4gPSBj
b2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCk7Ci0gICAgSW5zdHJ1Y3Rpb24qIGluc3Ry
dWN0aW9uID0gJmluc3RydWN0aW9uc0JlZ2luW2J5dGVjb2RlT2Zmc2V0XTsKLSAgICBPcGNvZGVJ
RCBvcGNvZGVJRCA9IGludGVycHJldGVyLT5nZXRPcGNvZGVJRChpbnN0cnVjdGlvbi0+dS5vcGNv
ZGUpOwotCiAgICAgaWYgKG9wY29kZUlEICE9IG9wX2VudGVyICYmIGNvZGVCbG9jay0+d2FzQ29t
cGlsZWRXaXRoRGVidWdnaW5nT3Bjb2RlcygpICYmIGNvZGVCbG9jay0+c2NvcGVSZWdpc3Rlcigp
LmlzVmFsaWQoKSkKICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNv
ZGVJRCwgY29kZUJsb2NrLT5zY29wZVJlZ2lzdGVyKCkub2Zmc2V0KCkpOwogCkBAIC03NSw4ICs3
MCw3IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCgKICAgICBjYXNlIG9wX2pu
ZXFfbnVsbDoKICAgICBjYXNlIG9wX2RlYzoKICAgICBjYXNlIG9wX2luYzoKLSAgICBjYXNlIG9w
X2xvZ19zaGFkb3dfY2hpY2tlbl9wcm9sb2d1ZToKLSAgICBjYXNlIG9wX3Jlc3VtZTogeworICAg
IGNhc2Ugb3BfbG9nX3NoYWRvd19jaGlja2VuX3Byb2xvZ3VlOiB7CiAgICAgICAgIEFTU0VSVChv
cGNvZGVMZW5ndGhzW29wY29kZUlEXSA+IDEpOwogICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywg
aW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBpbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOwogICAgICAg
ICByZXR1cm47CkBAIC0yODcsNDIgKzI4MSwyOCBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNv
ZGVPZmZzZXQoCiAgICAgICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9w
Y29kZUlELCBjb2RlQmxvY2stPnNjb3BlUmVnaXN0ZXIoKS5vZmZzZXQoKSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9Ci0gICAgY2FzZSBvcF9zYXZlOiB7Ci0gICAgICAgIGZ1bmN0b3IoY29kZUJs
b2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7Ci0g
ICAgICAgIHVuc2lnbmVkIG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldCA9IGJ5dGVjb2RlT2Zmc2V0
ICsgaW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kOwotICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2sq
IG1lcmdlUG9pbnRCbG9jayA9IG51bGxwdHI7Ci0gICAgICAgIGZvciAoQnl0ZWNvZGVCYXNpY0Js
b2NrKiBzdWNjZXNzb3IgOiBibG9jay0+c3VjY2Vzc29ycygpKSB7Ci0gICAgICAgICAgICBpZiAo
c3VjY2Vzc29yLT5sZWFkZXJCeXRlY29kZU9mZnNldCgpID09IG1lcmdlUG9pbnRCeXRlY29kZU9m
ZnNldCkgewotICAgICAgICAgICAgICAgIG1lcmdlUG9pbnRCbG9jayA9IHN1Y2Nlc3NvcjsKLSAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBB
U1NFUlQobWVyZ2VQb2ludEJsb2NrKTsKLSAgICAgICAgbWVyZ2VQb2ludEJsb2NrLT5pbigpLmZv
ckVhY2hTZXRCaXQoWyZdKHVuc2lnbmVkIGxvY2FsKSB7Ci0gICAgICAgICAgICBmdW5jdG9yKGNv
ZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChs
b2NhbCkub2Zmc2V0KCkpOwotICAgICAgICB9KTsKKworICAgIGNhc2Ugb3Bfc2F2ZToKKyAgICBj
YXNlIG9wX3Jlc3VtZTogeworICAgICAgICAvLyBEbyBub3RoaW5nIGluIGxpdmVuZXNzIGFuYWx5
c2lzLgogICAgICAgICByZXR1cm47CiAgICAgfQorCiAgICAgZGVmYXVsdDoKICAgICAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogfQogCi10
ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgotdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zm
c2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrLCB1bnNp
Z25lZCBieXRlY29kZU9mZnNldCwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikKK3RlbXBsYXRlPHR5
cGVuYW1lIEJsb2NrLCB0eXBlbmFtZSBJbnN0cnVjdGlvbiwgdHlwZW5hbWUgRnVuY3Rvcj4KK3Zv
aWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChCbG9jayogY29kZUJsb2NrLCBPcGNvZGVJ
RCBvcGNvZGVJRCwgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBjb25zdCBGdW5jdG9yJiBmdW5j
dG9yKQogewotICAgIEludGVycHJldGVyKiBpbnRlcnByZXRlciA9IGNvZGVCbG9jay0+dm0oKS0+
aW50ZXJwcmV0ZXI7Ci0gICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luID0gY29kZUJs
b2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpOwotICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlv
biA9ICZpbnN0cnVjdGlvbnNCZWdpbltieXRlY29kZU9mZnNldF07Ci0gICAgT3Bjb2RlSUQgb3Bj
b2RlSUQgPSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb24tPnUub3Bjb2RlKTsK
ICAgICBzd2l0Y2ggKG9wY29kZUlEKSB7CiAgICAgLy8gVGhlc2UgZG9uJ3QgZGVmaW5lIGFueXRo
aW5nLgogICAgIGNhc2Ugb3BfcHV0X3RvX3Njb3BlOgogICAgIGNhc2Ugb3BfZW5kOgogICAgIGNh
c2Ugb3BfdGhyb3c6CiAgICAgY2FzZSBvcF90aHJvd19zdGF0aWNfZXJyb3I6Ci0gICAgY2FzZSBv
cF9zYXZlOgogICAgIGNhc2Ugb3BfYXNzZXJ0OgogICAgIGNhc2Ugb3BfZGVidWc6CiAgICAgY2Fz
ZSBvcF9yZXQ6CkBAIC00NjIsNyArNDQyLDcgQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2Rl
T2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2MKICAg
ICBjYXNlIG9wX2RlbF9ieV9pZDoKICAgICBjYXNlIG9wX2RlbF9ieV92YWw6CiAgICAgY2FzZSBv
cF91bnNpZ25lZDoKLSAgICBjYXNlIG9wX2dldF9mcm9tX2FyZ3VtZW50czogCisgICAgY2FzZSBv
cF9nZXRfZnJvbV9hcmd1bWVudHM6CiAgICAgY2FzZSBvcF9jcmVhdGVfcmVzdDoKICAgICBjYXNl
IG9wX2dldF9yZXN0X2xlbmd0aDogewogICAgICAgICBBU1NFUlQob3Bjb2RlTGVuZ3Roc1tvcGNv
ZGVJRF0gPiAxKTsKQEAgLTQ4MCwxNSArNDYwLDE0IEBAIHZvaWQgY29tcHV0ZURlZnNGb3JCeXRl
Y29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9j
CiAgICAgICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCB2
aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChpKS5vZmZzZXQoKSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CisgICAgY2FzZSBvcF9zYXZlOgogICAgIGNhc2Ugb3BfcmVzdW1lOiB7Ci0gICAgICAgIFJF
TEVBU0VfQVNTRVJUKGJsb2NrLT5zdWNjZXNzb3JzKCkuc2l6ZSgpID09IDEpOwotICAgICAgICAv
LyBGSVhNRTogVGhpcyBpcyByZWFsbHkgZGlydHkuCi0gICAgICAgIC8vIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTkyODEKLSAgICAgICAgYmxvY2stPnN1Y2Nlc3Nv
cnMoKVswXS0+aW4oKS5mb3JFYWNoU2V0Qml0KFsmXSh1bnNpZ25lZCBsb2NhbCkgewotICAgICAg
ICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgdmlydHVhbFJl
Z2lzdGVyRm9yTG9jYWwobG9jYWwpLm9mZnNldCgpKTsKLSAgICAgICAgfSk7CisgICAgICAgIC8v
IERvIG5vdGhpbmcgaW4gbGl2ZW5lc3MgYW5hbHlzaXMuCiAgICAgICAgIHJldHVybjsKICAgICB9
CisgICAgZGVmYXVsdDoKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICAgICAgcmV0dXJuOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmNwcAppbmRleCAxZDkxMzVhMjM3MzkxNjMwOTE4ZmQ1NWE2ZTU0MjU4OTcx
NWNkMGI1Li41ODZjY2Y1MjhkNGJmYWQyYWI5MGI5ZWFlNjY0NmIxZWEyZDE0MTBhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApAQCAtMzMsNiArMzMs
NyBAQAogI2luY2x1ZGUgIkFyaXRoUHJvZmlsZS5oIgogI2luY2x1ZGUgIkJhc2ljQmxvY2tMb2Nh
dGlvbi5oIgogI2luY2x1ZGUgIkJ5dGVjb2RlR2VuZXJhdG9yLmgiCisjaW5jbHVkZSAiQnl0ZWNv
ZGVMaXZlbmVzc0FuYWx5c2lzLmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVVc2VEZWYuaCIKICNpbmNs
dWRlICJDYWxsTGlua1N0YXR1cy5oIgogI2luY2x1ZGUgIkRGR0NhcGFiaWxpdGllcy5oIgpAQCAt
Njk2LDE4ICs2OTcsNiBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKFByaW50U3RyZWFt
JiBvdXQpCiAgICAgICAgIH0gd2hpbGUgKGkgPCBtX3JhcmVEYXRhLT5tX3N0cmluZ1N3aXRjaEp1
bXBUYWJsZXMuc2l6ZSgpKTsKICAgICB9CiAKLSAgICBpZiAobV9yYXJlRGF0YSAmJiAhbV9yYXJl
RGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZC5pc0VtcHR5KCkpIHsKLSAgICAgICAgb3V0
LnByaW50ZigiXG5MaXZlIENhbGxlZSBMb2NhbHM6XG4iKTsKLSAgICAgICAgdW5zaWduZWQgaSA9
IDA7Ci0gICAgICAgIGRvIHsKLSAgICAgICAgICAgIGNvbnN0IEZhc3RCaXRWZWN0b3ImIGxpdmVu
ZXNzID0gbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZFtpXTsKLSAgICAgICAg
ICAgIG91dC5wcmludGYoIiAgbGl2ZSUxdSA9ICIsIGkpOwotICAgICAgICAgICAgbGl2ZW5lc3Mu
ZHVtcChvdXQpOwotICAgICAgICAgICAgb3V0LnByaW50ZigiXG4iKTsKLSAgICAgICAgICAgICsr
aTsKLSAgICAgICAgfSB3aGlsZSAoaSA8IG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0
WWllbGQuc2l6ZSgpKTsKLSAgICB9Ci0KICAgICBvdXQucHJpbnRmKCJcbiIpOwogfQogCkBAIC0x
NjcxLDMxICsxNjYwLDYgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZSgKICAgICAgICAg
ICAgIG91dC5wcmludGYoIiVzLCAlZCIsIGRlYnVnSG9va05hbWUoZGVidWdIb29rSUQpLCBoYXNC
cmVha3BvaW50RmxhZyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBj
YXNlIG9wX3NhdmU6IHsKLSAgICAgICAgICAgIGludCBnZW5lcmF0b3IgPSAoKytpdCktPnUub3Bl
cmFuZDsKLSAgICAgICAgICAgIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9ICgrK2l0
KS0+dS51bnNpZ25lZFZhbHVlOwotICAgICAgICAgICAgaW50IG9mZnNldCA9ICgrK2l0KS0+dS5v
cGVyYW5kOwotICAgICAgICAgICAgRmFzdEJpdFZlY3RvciBsaXZlbmVzczsKLSAgICAgICAgICAg
IGlmIChsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPCBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2Nh
bHNBdFlpZWxkLnNpemUoKSkKLSAgICAgICAgICAgICAgICBsaXZlbmVzcyA9IG1fcmFyZURhdGEt
Pm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGRbbGl2ZUNhbGxlZUxvY2Fsc0luZGV4XTsKLSAgICAg
ICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQsIGV4ZWMsIGxvY2F0aW9uLCBpdCwgInNhdmUi
KTsKLSAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAiLCByZWdpc3Rlck5hbWUoZ2VuZXJhdG9y
KS5kYXRhKCkpOwotICAgICAgICAgICAgbGl2ZW5lc3MuZHVtcChvdXQpOwotICAgICAgICAgICAg
b3V0LnByaW50ZigiKEBsaXZlJTF1KSwgJWQoLT4lZCkiLCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXgs
IG9mZnNldCwgbG9jYXRpb24gKyBvZmZzZXQpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IH0KLSAgICAgICAgY2FzZSBvcF9yZXN1bWU6IHsKLSAgICAgICAgICAgIGludCBnZW5lcmF0b3Ig
PSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2Nh
bHNJbmRleCA9ICgrK2l0KS0+dS51bnNpZ25lZFZhbHVlOwotICAgICAgICAgICAgRmFzdEJpdFZl
Y3RvciBsaXZlbmVzczsKLSAgICAgICAgICAgIGlmIChsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPCBt
X3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkLnNpemUoKSkKLSAgICAgICAgICAg
ICAgICBsaXZlbmVzcyA9IG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGRbbGl2
ZUNhbGxlZUxvY2Fsc0luZGV4XTsKLSAgICAgICAgICAgIHByaW50TG9jYXRpb25BbmRPcChvdXQs
IGV4ZWMsIGxvY2F0aW9uLCBpdCwgInJlc3VtZSIpOwotICAgICAgICAgICAgb3V0LnByaW50Zigi
JXMsICIsIHJlZ2lzdGVyTmFtZShnZW5lcmF0b3IpLmRhdGEoKSk7Ci0gICAgICAgICAgICBsaXZl
bmVzcy5kdW1wKG91dCk7Ci0gICAgICAgICAgICBvdXQucHJpbnRmKCIoQGxpdmUlMXUpIiwgbGl2
ZUNhbGxlZUxvY2Fsc0luZGV4KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9CiAgICAg
ICAgIGNhc2Ugb3BfYXNzZXJ0OiB7CiAgICAgICAgICAgICBpbnQgY29uZGl0aW9uID0gKCsraXQp
LT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgbGluZSA9ICgrK2l0KS0+dS5vcGVyYW5kOwpA
QCAtMTkwNyw3ICsxODcxLDYgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2
bSwgQ29weVBhcnNlZEJsb2NrVGFnLCBDb2RlQmxvY2smIG90aGVyKQogICAgICAgICBtX3JhcmVE
YXRhLT5tX2NvbnN0YW50QnVmZmVycyA9IG90aGVyLm1fcmFyZURhdGEtPm1fY29uc3RhbnRCdWZm
ZXJzOwogICAgICAgICBtX3JhcmVEYXRhLT5tX3N3aXRjaEp1bXBUYWJsZXMgPSBvdGhlci5tX3Jh
cmVEYXRhLT5tX3N3aXRjaEp1bXBUYWJsZXM7CiAgICAgICAgIG1fcmFyZURhdGEtPm1fc3RyaW5n
U3dpdGNoSnVtcFRhYmxlcyA9IG90aGVyLm1fcmFyZURhdGEtPm1fc3RyaW5nU3dpdGNoSnVtcFRh
YmxlczsKLSAgICAgICAgbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZCA9IG90
aGVyLm1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQ7CiAgICAgfQogICAgIAog
ICAgIGhlYXAoKS0+bV9jb2RlQmxvY2tzLmFkZCh0aGlzKTsKQEAgLTIwMjksNyArMTk5Miw3IEBA
IHZvaWQgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUq
IG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAgICAgICAgICAgICAgVW5saW5rZWRTdHJpbmdK
dW1wVGFibGU6OlN0cmluZ09mZnNldFRhYmxlOjppdGVyYXRvciBlbmQgPSB1bmxpbmtlZENvZGVC
bG9jay0+c3RyaW5nU3dpdGNoSnVtcFRhYmxlKGkpLm9mZnNldFRhYmxlLmVuZCgpOwogICAgICAg
ICAgICAgICAgIGZvciAoOyBwdHIgIT0gZW5kOyArK3B0cikgewogICAgICAgICAgICAgICAgICAg
ICBPZmZzZXRMb2NhdGlvbiBvZmZzZXQ7Ci0gICAgICAgICAgICAgICAgICAgIG9mZnNldC5icmFu
Y2hPZmZzZXQgPSBwdHItPnZhbHVlOworICAgICAgICAgICAgICAgICAgICBvZmZzZXQuYnJhbmNo
T2Zmc2V0ID0gcHRyLT52YWx1ZS5icmFuY2hPZmZzZXQ7CiAgICAgICAgICAgICAgICAgICAgIG1f
cmFyZURhdGEtPm1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlc1tpXS5vZmZzZXRUYWJsZS5hZGQocHRy
LT5rZXksIG9mZnNldCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpAQCAtMjA2
OSwxMSArMjAzMiwxNyBAQCB2b2lkIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBT
Y3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGluawogICAgIC8vIEJvb2trZWVw
IHRoZSBzdHJvbmdseSByZWZlcmVuY2VkIG1vZHVsZSBlbnZpcm9ubWVudHMuCiAgICAgSGFzaFNl
dDxKU01vZHVsZUVudmlyb25tZW50Kj4gc3Ryb25nbHlSZWZlcmVuY2VkTW9kdWxlRW52aXJvbm1l
bnRzOwogCi0gICAgLy8gQm9va2tlZXAgdGhlIG1lcmdlIHBvaW50IGJ5dGVjb2RlIG9mZnNldHMu
Ci0gICAgVmVjdG9yPHNpemVfdD4gbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0czsKLQogICAgIFJl
ZkNvdW50ZWRBcnJheTxJbnN0cnVjdGlvbj4gaW5zdHJ1Y3Rpb25zKGluc3RydWN0aW9uQ291bnQp
OwogCisgICAgdW5zaWduZWQgdmFsdWVQcm9maWxlQ291bnQgPSAwOworICAgIGF1dG8gbGlua1Zh
bHVlUHJvZmlsZSA9IFsmXSh1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgdW5zaWduZWQgb3BMZW5n
dGgpIHsKKyAgICAgICAgdW5zaWduZWQgdmFsdWVQcm9maWxlSW5kZXggPSB2YWx1ZVByb2ZpbGVD
b3VudCsrOworICAgICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSAmbV92YWx1ZVByb2ZpbGVz
W3ZhbHVlUHJvZmlsZUluZGV4XTsKKyAgICAgICAgQVNTRVJUKHByb2ZpbGUtPm1fYnl0ZWNvZGVP
ZmZzZXQgPT0gLTEpOworICAgICAgICBwcm9maWxlLT5tX2J5dGVjb2RlT2Zmc2V0ID0gYnl0ZWNv
ZGVPZmZzZXQ7CisgICAgICAgIGluc3RydWN0aW9uc1tieXRlY29kZU9mZnNldCArIG9wTGVuZ3Ro
IC0gMV0gPSBwcm9maWxlOworICAgIH07CisKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyAhaW5z
dHJ1Y3Rpb25SZWFkZXIuYXRFbmQoKTsgKSB7CiAgICAgICAgIGNvbnN0IFVubGlua2VkSW5zdHJ1
Y3Rpb24qIHBjID0gaW5zdHJ1Y3Rpb25SZWFkZXIubmV4dCgpOwogCkBAIC0yMTA4LDEwICsyMDc3
LDcgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0
YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICAgICAgY2FzZSBvcF9nZXRfYnlfaWQ6
CiAgICAgICAgIGNhc2Ugb3BfZ2V0X2Zyb21fYXJndW1lbnRzOgogICAgICAgICBjYXNlIG9wX3Rv
X251bWJlcjogewotICAgICAgICAgICAgVmFsdWVQcm9maWxlKiBwcm9maWxlID0gJm1fdmFsdWVQ
cm9maWxlc1twY1tvcExlbmd0aCAtIDFdLnUub3BlcmFuZF07Ci0gICAgICAgICAgICBBU1NFUlQo
cHJvZmlsZS0+bV9ieXRlY29kZU9mZnNldCA9PSAtMSk7Ci0gICAgICAgICAgICBwcm9maWxlLT5t
X2J5dGVjb2RlT2Zmc2V0ID0gaTsKLSAgICAgICAgICAgIGluc3RydWN0aW9uc1tpICsgb3BMZW5n
dGggLSAxXSA9IHByb2ZpbGU7CisgICAgICAgICAgICBsaW5rVmFsdWVQcm9maWxlKGksIG9wTGVu
Z3RoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfcHV0
X2J5X3ZhbDogewpAQCAtMjE0OCwxMCArMjExNCw3IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5pc2hD
cmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5r
CiAgICAgICAgIGNhc2Ugb3BfY2FsbDoKICAgICAgICAgY2FzZSBvcF90YWlsX2NhbGw6CiAgICAg
ICAgIGNhc2Ugb3BfY2FsbF9ldmFsOiB7Ci0gICAgICAgICAgICBWYWx1ZVByb2ZpbGUqIHByb2Zp
bGUgPSAmbV92YWx1ZVByb2ZpbGVzW3BjW29wTGVuZ3RoIC0gMV0udS5vcGVyYW5kXTsKLSAgICAg
ICAgICAgIEFTU0VSVChwcm9maWxlLT5tX2J5dGVjb2RlT2Zmc2V0ID09IC0xKTsKLSAgICAgICAg
ICAgIHByb2ZpbGUtPm1fYnl0ZWNvZGVPZmZzZXQgPSBpOwotICAgICAgICAgICAgaW5zdHJ1Y3Rp
b25zW2kgKyBvcExlbmd0aCAtIDFdID0gcHJvZmlsZTsKKyAgICAgICAgICAgIGxpbmtWYWx1ZVBy
b2ZpbGUoaSwgb3BMZW5ndGgpOwogICAgICAgICAgICAgaW50IGFycmF5UHJvZmlsZUluZGV4ID0g
cGNbb3BMZW5ndGggLSAyXS51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBtX2FycmF5UHJvZmlsZXNb
YXJyYXlQcm9maWxlSW5kZXhdID0gQXJyYXlQcm9maWxlKGkpOwogICAgICAgICAgICAgaW5zdHJ1
Y3Rpb25zW2kgKyBvcExlbmd0aCAtIDJdID0gJm1fYXJyYXlQcm9maWxlc1thcnJheVByb2ZpbGVJ
bmRleF07CkBAIC0yMTYwLDEwICsyMTIzLDcgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0
aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAg
ICAgICAgfQogICAgICAgICBjYXNlIG9wX2NvbnN0cnVjdDogewogICAgICAgICAgICAgaW5zdHJ1
Y3Rpb25zW2kgKyA1XSA9ICZtX2xsaW50Q2FsbExpbmtJbmZvc1twY1s1XS51Lm9wZXJhbmRdOwot
ICAgICAgICAgICAgVmFsdWVQcm9maWxlKiBwcm9maWxlID0gJm1fdmFsdWVQcm9maWxlc1twY1tv
cExlbmd0aCAtIDFdLnUub3BlcmFuZF07Ci0gICAgICAgICAgICBBU1NFUlQocHJvZmlsZS0+bV9i
eXRlY29kZU9mZnNldCA9PSAtMSk7Ci0gICAgICAgICAgICBwcm9maWxlLT5tX2J5dGVjb2RlT2Zm
c2V0ID0gaTsKLSAgICAgICAgICAgIGluc3RydWN0aW9uc1tpICsgb3BMZW5ndGggLSAxXSA9IHBy
b2ZpbGU7CisgICAgICAgICAgICBsaW5rVmFsdWVQcm9maWxlKGksIG9wTGVuZ3RoKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfZ2V0X2FycmF5X2xlbmd0
aDoKQEAgLTIxOTQsMTAgKzIxNTQsNyBAQCB2b2lkIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24o
Vk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGluawogICAgICAg
ICB9CiAKICAgICAgICAgY2FzZSBvcF9nZXRfZnJvbV9zY29wZTogewotICAgICAgICAgICAgVmFs
dWVQcm9maWxlKiBwcm9maWxlID0gJm1fdmFsdWVQcm9maWxlc1twY1tvcExlbmd0aCAtIDFdLnUu
b3BlcmFuZF07Ci0gICAgICAgICAgICBBU1NFUlQocHJvZmlsZS0+bV9ieXRlY29kZU9mZnNldCA9
PSAtMSk7Ci0gICAgICAgICAgICBwcm9maWxlLT5tX2J5dGVjb2RlT2Zmc2V0ID0gaTsKLSAgICAg
ICAgICAgIGluc3RydWN0aW9uc1tpICsgb3BMZW5ndGggLSAxXSA9IHByb2ZpbGU7CisgICAgICAg
ICAgICBsaW5rVmFsdWVQcm9maWxlKGksIG9wTGVuZ3RoKTsKIAogICAgICAgICAgICAgLy8gZ2V0
X2Zyb21fc2NvcGUgZHN0LCBzY29wZSwgaWQsIEdldFB1dEluZm8sIFN0cnVjdHVyZSwgT3BlcmFu
ZAogCkBAIC0yMzU0LDE1ICsyMzExLDYgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9u
KFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKLSAgICAgICAgY2FzZSBvcF9zYXZlOiB7Ci0gICAg
ICAgICAgICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSBwY1syXS51LmluZGV4Owot
ICAgICAgICAgICAgaW50IG9mZnNldCA9IHBjWzNdLnUub3BlcmFuZDsKLSAgICAgICAgICAgIGlm
IChsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPj0gbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0cy5zaXpl
KCkpCi0gICAgICAgICAgICAgICAgbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0cy5yZXNpemUobGl2
ZUNhbGxlZUxvY2Fsc0luZGV4ICsgMSk7Ci0gICAgICAgICAgICBtZXJnZVBvaW50Qnl0ZWNvZGVP
ZmZzZXRzW2xpdmVDYWxsZWVMb2NhbHNJbmRleF0gPSBpICsgb2Zmc2V0OwotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIH0KLQogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KQEAgLTIzNzQsMjAgKzIzMjIsNiBAQCB2b2lkIENvZGVCbG9jazo6ZmluaXNo
Q3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGlu
awogCiAgICAgbV9pbnN0cnVjdGlvbnMgPSBXVEZNb3ZlKGluc3RydWN0aW9ucyk7CiAKLSAgICAv
LyBQZXJmb3JtIGJ5dGVjb2RlIGxpdmVuZXNzIGFuYWx5c2lzIHRvIGRldGVybWluZSB3aGljaCBs
b2NhbHMgYXJlIGxpdmUgYW5kIHNob3VsZCBiZSByZXN1bWVkIHdoZW4gZXhlY3V0aW5nIG9wX3Jl
c3VtZS4KLSAgICBpZiAodW5saW5rZWRDb2RlQmxvY2stPnBhcnNlTW9kZSgpID09IFNvdXJjZVBh
cnNlTW9kZTo6R2VuZXJhdG9yQm9keU1vZGUpIHsKLSAgICAgICAgaWYgKHNpemVfdCBjb3VudCA9
IG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldHMuc2l6ZSgpKSB7Ci0gICAgICAgICAgICBjcmVhdGVS
YXJlRGF0YUlmTmVjZXNzYXJ5KCk7Ci0gICAgICAgICAgICBCeXRlY29kZUxpdmVuZXNzQW5hbHlz
aXMgbGl2ZW5lc3ModGhpcyk7Ci0gICAgICAgICAgICBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVM
b2NhbHNBdFlpZWxkLmdyb3coY291bnQpOwotICAgICAgICAgICAgc2l6ZV90IGxpdmVDYWxsZWVM
b2NhbHNJbmRleCA9IDA7Ci0gICAgICAgICAgICBmb3IgKHNpemVfdCBieXRlY29kZU9mZnNldCA6
IG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldHMpIHsKLSAgICAgICAgICAgICAgICBtX3JhcmVEYXRh
LT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkW2xpdmVDYWxsZWVMb2NhbHNJbmRleF0gPSBsaXZl
bmVzcy5nZXRMaXZlbmVzc0luZm9BdEJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KTsKLSAg
ICAgICAgICAgICAgICArK2xpdmVDYWxsZWVMb2NhbHNJbmRleDsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgfQotICAgIH0KLQogICAgIC8vIFNldCBvcHRpbWl6YXRpb24gdGhyZXNob2xkcyBvbmx5
IGFmdGVyIG1faW5zdHJ1Y3Rpb25zIGlzIGluaXRpYWxpemVkLCBzaW5jZSB0aGVzZQogICAgIC8v
IHJlbHkgb24gdGhlIGluc3RydWN0aW9uIGNvdW50IChhbmQgYXJlIGluIHRoZW9yeSBwZXJtaXR0
ZWQgdG8gYWxzbyBpbnNwZWN0IHRoZQogICAgIC8vIGluc3RydWN0aW9uIHN0cmVhbSB0byBtb3Jl
IGFjY3VyYXRlIGFzc2VzcyB0aGUgY29zdCBvZiB0aWVyLXVwKS4KQEAgLTMyNDQsMjEgKzMxNzgs
NyBAQCBIYW5kbGVySW5mbyogQ29kZUJsb2NrOjpoYW5kbGVyRm9ySW5kZXgodW5zaWduZWQgaW5k
ZXgsIFJlcXVpcmVkSGFuZGxlciByZXF1aXJlZAogewogICAgIGlmICghbV9yYXJlRGF0YSkKICAg
ICAgICAgcmV0dXJuIDA7Ci0gICAgCi0gICAgVmVjdG9yPEhhbmRsZXJJbmZvPiYgZXhjZXB0aW9u
SGFuZGxlcnMgPSBtX3JhcmVEYXRhLT5tX2V4Y2VwdGlvbkhhbmRsZXJzOwotICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgZXhjZXB0aW9uSGFuZGxlcnMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAg
SGFuZGxlckluZm8mIGhhbmRsZXIgPSBleGNlcHRpb25IYW5kbGVyc1tpXTsKLSAgICAgICAgaWYg
KChyZXF1aXJlZEhhbmRsZXIgPT0gUmVxdWlyZWRIYW5kbGVyOjpDYXRjaEhhbmRsZXIpICYmICFo
YW5kbGVyLmlzQ2F0Y2hIYW5kbGVyKCkpCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAg
ICAvLyBIYW5kbGVycyBhcmUgb3JkZXJlZCBpbm5lcm1vc3QgZmlyc3QsIHNvIHRoZSBmaXJzdCBo
YW5kbGVyIHdlIGVuY291bnRlcgotICAgICAgICAvLyB0aGF0IGNvbnRhaW5zIHRoZSBzb3VyY2Ug
YWRkcmVzcyBpcyB0aGUgY29ycmVjdCBoYW5kbGVyIHRvIHVzZS4KLSAgICAgICAgLy8gVGhpcyBp
bmRleCB1c2VkIGlzIGVpdGhlciB0aGUgQnl0ZWNvZGVPZmZzZXQgb3IgYSBDYWxsU2l0ZUluZGV4
LgotICAgICAgICBpZiAoaGFuZGxlci5zdGFydCA8PSBpbmRleCAmJiBoYW5kbGVyLmVuZCA+IGlu
ZGV4KQotICAgICAgICAgICAgcmV0dXJuICZoYW5kbGVyOwotICAgIH0KLQotICAgIHJldHVybiAw
OworICAgIHJldHVybiBIYW5kbGVySW5mbzo6aGFuZGxlckZvckluZGV4KG1fcmFyZURhdGEtPm1f
ZXhjZXB0aW9uSGFuZGxlcnMsIGluZGV4LCByZXF1aXJlZEhhbmRsZXIpOwogfQogCiBDYWxsU2l0
ZUluZGV4IENvZGVCbG9jazo6bmV3RXhjZXB0aW9uSGFuZGxpbmdDYWxsU2l0ZUluZGV4KENhbGxT
aXRlSW5kZXggb3JpZ2luYWxDYWxsU2l0ZSkKQEAgLTMzNTMsNyArMzI3Myw2IEBAIHZvaWQgQ29k
ZUJsb2NrOjpzaHJpbmtUb0ZpdChTaHJpbmtNb2RlIHNocmlua01vZGUpCiAgICAgICAgIGlmICht
X3JhcmVEYXRhKSB7CiAgICAgICAgICAgICBtX3JhcmVEYXRhLT5tX3N3aXRjaEp1bXBUYWJsZXMu
c2hyaW5rVG9GaXQoKTsKICAgICAgICAgICAgIG1fcmFyZURhdGEtPm1fc3RyaW5nU3dpdGNoSnVt
cFRhYmxlcy5zaHJpbmtUb0ZpdCgpOwotICAgICAgICAgICAgbV9yYXJlRGF0YS0+bV9saXZlQ2Fs
bGVlTG9jYWxzQXRZaWVsZC5zaHJpbmtUb0ZpdCgpOwogICAgICAgICB9CiAgICAgfSAvLyBlbHNl
IGRvbid0IHNocmluayB0aGVzZSwgYmVjYXVzZSB3ZSB3b3VsZCBoYXZlIGFscmVhZHkgcG9pbnRl
ZCBwb2ludGVycyBpbnRvIHRoZXNlIHRhYmxlcy4KIH0KQEAgLTQzMzUsMTQgKzQyNTQsOSBAQCBT
dHJpbmcgQ29kZUJsb2NrOjpuYW1lRm9yUmVnaXN0ZXIoVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxS
ZWdpc3RlcikKIAogVmFsdWVQcm9maWxlKiBDb2RlQmxvY2s6OnZhbHVlUHJvZmlsZUZvckJ5dGVj
b2RlT2Zmc2V0KGludCBieXRlY29kZU9mZnNldCkKIHsKLSAgICBWYWx1ZVByb2ZpbGUqIHJlc3Vs
dCA9IGJpbmFyeVNlYXJjaDxWYWx1ZVByb2ZpbGUsIGludD4oCi0gICAgICAgIG1fdmFsdWVQcm9m
aWxlcywgbV92YWx1ZVByb2ZpbGVzLnNpemUoKSwgYnl0ZWNvZGVPZmZzZXQsCi0gICAgICAgIGdl
dFZhbHVlUHJvZmlsZUJ5dGVjb2RlT2Zmc2V0PFZhbHVlUHJvZmlsZT4pOwotICAgIEFTU0VSVChy
ZXN1bHQtPm1fYnl0ZWNvZGVPZmZzZXQgIT0gLTEpOwotICAgIEFTU0VSVChpbnN0cnVjdGlvbnMo
KVtieXRlY29kZU9mZnNldCArIG9wY29kZUxlbmd0aCgKLSAgICAgICAgbV92bS0+aW50ZXJwcmV0
ZXItPmdldE9wY29kZUlEKAotICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zKClbYnl0ZWNvZGVPZmZz
ZXRdLnUub3Bjb2RlKSkgLSAxXS51LnByb2ZpbGUgPT0gcmVzdWx0KTsKLSAgICByZXR1cm4gcmVz
dWx0OworICAgIE9wY29kZUlEIG9wY29kZUlEID0gbV92bS0+aW50ZXJwcmV0ZXItPmdldE9wY29k
ZUlEKGluc3RydWN0aW9ucygpW2J5dGVjb2RlT2Zmc2V0XS51Lm9wY29kZSk7CisgICAgdW5zaWdu
ZWQgbGVuZ3RoID0gb3Bjb2RlTGVuZ3RoKG9wY29kZUlEKTsKKyAgICByZXR1cm4gaW5zdHJ1Y3Rp
b25zKClbYnl0ZWNvZGVPZmZzZXQgKyBsZW5ndGggLSAxXS51LnByb2ZpbGU7CiB9CiAKIHZvaWQg
Q29kZUJsb2NrOjp2YWxpZGF0ZSgpCkBAIC00NjcxLDQgKzQ1ODUsMTYgQEAgdm9pZCBDb2RlQmxv
Y2s6OmR1bXBNYXRoSUNTdGF0cygpCiAjZW5kaWYKIH0KIAorQnl0ZWNvZGVMaXZlbmVzc0FuYWx5
c2lzJiBDb2RlQmxvY2s6OmxpdmVuZXNzQW5hbHlzaXNTbG93KCkKK3sKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzPiBhbmFseXNpcyA9IHN0ZDo6bWFrZV91bmlx
dWU8Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzPih0aGlzKTsKKyAgICB7CisgICAgICAgIENvbmN1
cnJlbnRKSVRMb2NrZXIgbG9ja2VyKG1fbG9jayk7CisgICAgICAgIGlmICghbV9saXZlbmVzc0Fu
YWx5c2lzKQorICAgICAgICAgICAgbV9saXZlbmVzc0FuYWx5c2lzID0gV1RGTW92ZShhbmFseXNp
cyk7CisgICAgICAgIHJldHVybiAqbV9saXZlbmVzc0FuYWx5c2lzOworICAgIH0KK30KKworCiB9
IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2suaAppbmRleCBhYjkyODA0ZjZiYTM5YjNiNjdiYTZkNzc1ZTQ0OWUyZjNkYmY3YzA1Li45ZTVk
NjA3ODc3M2YzOGNiYjIyZGM2YTUwZmFmYTdjZWIwZTFmZmEyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCkBAIC0zMyw3ICszMyw2IEBACiAjaW5jbHVkZSAi
QXJyYXlQcm9maWxlLmgiCiAjaW5jbHVkZSAiQnlWYWxJbmZvLmgiCiAjaW5jbHVkZSAiQnl0ZWNv
ZGVDb252ZW50aW9ucy5oIgotI2luY2x1ZGUgIkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5oIgog
I2luY2x1ZGUgIkNhbGxMaW5rSW5mby5oIgogI2luY2x1ZGUgIkNhbGxSZXR1cm5PZmZzZXRUb0J5
dGVjb2RlT2Zmc2V0LmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrSGFzaC5oIgpAQCAtNzksNiArNzgs
NyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorY2xhc3MgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lz
OwogY2xhc3MgRXhlY1N0YXRlOwogY2xhc3MgSklUQWRkR2VuZXJhdG9yOwogY2xhc3MgSlNNb2R1
bGVFbnZpcm9ubWVudDsKQEAgLTIyNiwxMCArMjI2LDYgQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVi
bGljIEpTQ2VsbCB7CiAgICAgICAgIHJldHVybiBpbmRleCA+PSBtX251bVZhcnM7CiAgICAgfQog
Ci0gICAgZW51bSBjbGFzcyBSZXF1aXJlZEhhbmRsZXIgewotICAgICAgICBDYXRjaEhhbmRsZXIs
Ci0gICAgICAgIEFueUhhbmRsZXIKLSAgICB9OwogICAgIEhhbmRsZXJJbmZvKiBoYW5kbGVyRm9y
Qnl0ZWNvZGVPZmZzZXQodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIFJlcXVpcmVkSGFuZGxlciA9
IFJlcXVpcmVkSGFuZGxlcjo6QW55SGFuZGxlcik7CiAgICAgSGFuZGxlckluZm8qIGhhbmRsZXJG
b3JJbmRleCh1bnNpZ25lZCwgUmVxdWlyZWRIYW5kbGVyID0gUmVxdWlyZWRIYW5kbGVyOjpBbnlI
YW5kbGVyKTsKICAgICB2b2lkIHJlbW92ZUV4Y2VwdGlvbkhhbmRsZXJGb3JDYWxsU2l0ZShDYWxs
U2l0ZUluZGV4KTsKQEAgLTMwNCw2ICszMDAsOSBAQCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMg
SlNDZWxsIHsKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEluc3RydWN0aW9uKj4ocmV0dXJu
QWRkcmVzcykgLSBpbnN0cnVjdGlvbnMoKS5iZWdpbigpOwogICAgIH0KIAorICAgIHR5cGVkZWYg
SlNDOjpJbnN0cnVjdGlvbiBJbnN0cnVjdGlvbjsKKyAgICB0eXBlZGVmIFJlZkNvdW50ZWRBcnJh
eTxJbnN0cnVjdGlvbj4mIFVucGFja2VkSW5zdHJ1Y3Rpb25zOworCiAgICAgdW5zaWduZWQgbnVt
YmVyT2ZJbnN0cnVjdGlvbnMoKSBjb25zdCB7IHJldHVybiBtX2luc3RydWN0aW9ucy5zaXplKCk7
IH0KICAgICBSZWZDb3VudGVkQXJyYXk8SW5zdHJ1Y3Rpb24+JiBpbnN0cnVjdGlvbnMoKSB7IHJl
dHVybiBtX2luc3RydWN0aW9uczsgfQogICAgIGNvbnN0IFJlZkNvdW50ZWRBcnJheTxJbnN0cnVj
dGlvbj4mIGluc3RydWN0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1faW5zdHJ1Y3Rpb25zOyB9CkBA
IC01NDYsNyArNTQ1LDcgQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAg
fQogCiAgICAgV3JpdGVCYXJyaWVyPFVua25vd24+JiBjb25zdGFudFJlZ2lzdGVyKGludCBpbmRl
eCkgeyByZXR1cm4gbV9jb25zdGFudFJlZ2lzdGVyc1tpbmRleCAtIEZpcnN0Q29uc3RhbnRSZWdp
c3RlckluZGV4XTsgfQotICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc0NvbnN0YW50UmVnaXN0ZXJJ
bmRleChpbnQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIGluZGV4ID49IEZpcnN0Q29uc3RhbnRSZWdp
c3RlckluZGV4OyB9CisgICAgc3RhdGljIEFMV0FZU19JTkxJTkUgYm9vbCBpc0NvbnN0YW50UmVn
aXN0ZXJJbmRleChpbnQgaW5kZXgpIHsgcmV0dXJuIGluZGV4ID49IEZpcnN0Q29uc3RhbnRSZWdp
c3RlckluZGV4OyB9CiAgICAgQUxXQVlTX0lOTElORSBKU1ZhbHVlIGdldENvbnN0YW50KGludCBp
bmRleCkgY29uc3QgeyByZXR1cm4gbV9jb25zdGFudFJlZ2lzdGVyc1tpbmRleCAtIEZpcnN0Q29u
c3RhbnRSZWdpc3RlckluZGV4XS5nZXQoKTsgfQogICAgIEFMV0FZU19JTkxJTkUgU291cmNlQ29k
ZVJlcHJlc2VudGF0aW9uIGNvbnN0YW50U291cmNlQ29kZVJlcHJlc2VudGF0aW9uKGludCBpbmRl
eCkgY29uc3QgeyByZXR1cm4gbV9jb25zdGFudHNTb3VyY2VDb2RlUmVwcmVzZW50YXRpb25baW5k
ZXggLSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleF07IH0KIApAQCAtNTkyLDE0ICs1OTEsNyBA
QCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAgICAgICAgIGlmICghIW1f
bGl2ZW5lc3NBbmFseXNpcykKICAgICAgICAgICAgICAgICByZXR1cm4gKm1fbGl2ZW5lc3NBbmFs
eXNpczsKICAgICAgICAgfQotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVMaXZlbmVz
c0FuYWx5c2lzPiBhbmFseXNpcyA9Ci0gICAgICAgICAgICBzdGQ6Om1ha2VfdW5pcXVlPEJ5dGVj
b2RlTGl2ZW5lc3NBbmFseXNpcz4odGhpcyk7Ci0gICAgICAgIHsKLSAgICAgICAgICAgIENvbmN1
cnJlbnRKSVRMb2NrZXIgbG9ja2VyKG1fbG9jayk7Ci0gICAgICAgICAgICBpZiAoIW1fbGl2ZW5l
c3NBbmFseXNpcykKLSAgICAgICAgICAgICAgICBtX2xpdmVuZXNzQW5hbHlzaXMgPSBXVEZNb3Zl
KGFuYWx5c2lzKTsKLSAgICAgICAgICAgIHJldHVybiAqbV9saXZlbmVzc0FuYWx5c2lzOwotICAg
ICAgICB9CisgICAgICAgIHJldHVybiBsaXZlbmVzc0FuYWx5c2lzU2xvdygpOwogICAgIH0KICAg
ICAKICAgICB2b2lkIHZhbGlkYXRlKCk7CkBAIC02MjAsMTggKzYxMiw2IEBAIGNsYXNzIENvZGVC
bG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgIFN0cmluZ0p1bXBUYWJsZSYgYWRkU3RyaW5nU3dp
dGNoSnVtcFRhYmxlKCkgeyBjcmVhdGVSYXJlRGF0YUlmTmVjZXNzYXJ5KCk7IG1fcmFyZURhdGEt
Pm1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlcy5hcHBlbmQoU3RyaW5nSnVtcFRhYmxlKCkpOyByZXR1
cm4gbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzLmxhc3QoKTsgfQogICAgIFN0
cmluZ0p1bXBUYWJsZSYgc3RyaW5nU3dpdGNoSnVtcFRhYmxlKGludCB0YWJsZUluZGV4KSB7IFJF
TEVBU0VfQVNTRVJUKG1fcmFyZURhdGEpOyByZXR1cm4gbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0
Y2hKdW1wVGFibGVzW3RhYmxlSW5kZXhdOyB9CiAKLSAgICAvLyBMaXZlIGNhbGxlZSByZWdpc3Rl
cnMgYXQgeWllbGQgcG9pbnRzLgotICAgIGNvbnN0IEZhc3RCaXRWZWN0b3ImIGxpdmVDYWxsZWVM
b2NhbHNBdFlpZWxkKHVuc2lnbmVkIGluZGV4KSBjb25zdAotICAgIHsKLSAgICAgICAgUkVMRUFT
RV9BU1NFUlQobV9yYXJlRGF0YSk7Ci0gICAgICAgIHJldHVybiBtX3JhcmVEYXRhLT5tX2xpdmVD
YWxsZWVMb2NhbHNBdFlpZWxkW2luZGV4XTsKLSAgICB9Ci0gICAgRmFzdEJpdFZlY3RvciYgbGl2
ZUNhbGxlZUxvY2Fsc0F0WWllbGQodW5zaWduZWQgaW5kZXgpCi0gICAgewotICAgICAgICBSRUxF
QVNFX0FTU0VSVChtX3JhcmVEYXRhKTsKLSAgICAgICAgcmV0dXJuIG1fcmFyZURhdGEtPm1fbGl2
ZUNhbGxlZUxvY2Fsc0F0WWllbGRbaW5kZXhdOwotICAgIH0KLQogICAgIEV2YWxDb2RlQ2FjaGUm
IGV2YWxDb2RlQ2FjaGUoKSB7IGNyZWF0ZVJhcmVEYXRhSWZOZWNlc3NhcnkoKTsgcmV0dXJuIG1f
cmFyZURhdGEtPm1fZXZhbENvZGVDYWNoZTsgfQogCiAgICAgZW51bSBTaHJpbmtNb2RlIHsKQEAg
LTg4Niw4ICs4NjYsNiBAQCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAg
ICAgVmVjdG9yPFNpbXBsZUp1bXBUYWJsZT4gbV9zd2l0Y2hKdW1wVGFibGVzOwogICAgICAgICBW
ZWN0b3I8U3RyaW5nSnVtcFRhYmxlPiBtX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXM7CiAKLSAgICAg
ICAgVmVjdG9yPEZhc3RCaXRWZWN0b3I+IG1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQ7Ci0KICAg
ICAgICAgRXZhbENvZGVDYWNoZSBtX2V2YWxDb2RlQ2FjaGU7CiAgICAgfTsKIApAQCAtOTIyLDYg
KzkwMCw4IEBAIGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogCiBwcml2YXRlOgog
ICAgIGZyaWVuZCBjbGFzcyBDb2RlQmxvY2tTZXQ7CisKKyAgICBCeXRlY29kZUxpdmVuZXNzQW5h
bHlzaXMmIGxpdmVuZXNzQW5hbHlzaXNTbG93KCk7CiAgICAgCiAgICAgQ29kZUJsb2NrKiBzcGVj
aWFsT1NSRW50cnlCbG9ja09yTnVsbCgpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0hhbmRsZXJJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvSGFuZGxlckluZm8uaAppbmRleCBhY2RkYTA4ZWQxNGNiZjlmMDk3MTI3NTA0MDVh
NDE3NDFmNzZhMjEzLi43YjEwOGFjZTkzNzI4YThkNWRmOGViMTczZmMwYjBhNjFiYWVkNjNlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSGFuZGxlckluZm8uaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSGFuZGxlckluZm8uaApAQCAtMjcs
NiArMjcsNyBAQAogI2RlZmluZSBIYW5kbGVySW5mb19oCiAKICNpbmNsdWRlICJDb2RlTG9jYXRp
b24uaCIKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC0z
Nyw2ICszOCwxMSBAQCBlbnVtIGNsYXNzIEhhbmRsZXJUeXBlIHsKICAgICBTeW50aGVzaXplZEZp
bmFsbHkgPSAzCiB9OwogCitlbnVtIGNsYXNzIFJlcXVpcmVkSGFuZGxlciB7CisgICAgQ2F0Y2hI
YW5kbGVyLAorICAgIEFueUhhbmRsZXIKK307CisKIHN0cnVjdCBIYW5kbGVySW5mb0Jhc2Ugewog
ICAgIEhhbmRsZXJUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxIYW5kbGVy
VHlwZT4odHlwZUJpdHMpOyB9CiAgICAgdm9pZCBzZXRUeXBlKEhhbmRsZXJUeXBlIHR5cGUpIHsg
dHlwZUJpdHMgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4odHlwZSk7IH0KQEAgLTU4LDYgKzY0LDIz
IEBAIHN0cnVjdCBIYW5kbGVySW5mb0Jhc2UgewogCiAgICAgYm9vbCBpc0NhdGNoSGFuZGxlcigp
IGNvbnN0IHsgcmV0dXJuIHR5cGUoKSA9PSBIYW5kbGVyVHlwZTo6Q2F0Y2g7IH0KIAorICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEhhbmRsZXI+CisgICAgc3RhdGljIEhhbmRsZXIqIGhhbmRsZXJGb3JJ
bmRleChWZWN0b3I8SGFuZGxlcj4mIGV4ZXB0aW9uSGFuZGxlcnMsIHVuc2lnbmVkIGluZGV4LCBS
ZXF1aXJlZEhhbmRsZXIgcmVxdWlyZWRIYW5kbGVyKQorICAgIHsKKyAgICAgICAgZm9yIChIYW5k
bGVyJiBoYW5kbGVyIDogZXhlcHRpb25IYW5kbGVycykgeworICAgICAgICAgICAgaWYgKChyZXF1
aXJlZEhhbmRsZXIgPT0gUmVxdWlyZWRIYW5kbGVyOjpDYXRjaEhhbmRsZXIpICYmICFoYW5kbGVy
LmlzQ2F0Y2hIYW5kbGVyKCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAg
ICAgIC8vIEhhbmRsZXJzIGFyZSBvcmRlcmVkIGlubmVybW9zdCBmaXJzdCwgc28gdGhlIGZpcnN0
IGhhbmRsZXIgd2UgZW5jb3VudGVyCisgICAgICAgICAgICAvLyB0aGF0IGNvbnRhaW5zIHRoZSBz
b3VyY2UgYWRkcmVzcyBpcyB0aGUgY29ycmVjdCBoYW5kbGVyIHRvIHVzZS4KKyAgICAgICAgICAg
IC8vIFRoaXMgaW5kZXggdXNlZCBpcyBlaXRoZXIgdGhlIEJ5dGVjb2RlT2Zmc2V0IG9yIGEgQ2Fs
bFNpdGVJbmRleC4KKyAgICAgICAgICAgIGlmIChoYW5kbGVyLnN0YXJ0IDw9IGluZGV4ICYmIGhh
bmRsZXIuZW5kID4gaW5kZXgpCisgICAgICAgICAgICAgICAgcmV0dXJuICZoYW5kbGVyOworICAg
ICAgICB9CisKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCiAgICAgdWludDMyX3Qg
c3RhcnQ7CiAgICAgdWludDMyX3QgZW5kOwogICAgIHVpbnQzMl90IHRhcmdldDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHMuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5jcHAK
aW5kZXggZTJjYjAwMDQ4Mzc5NGJhOTJkNTEwZGNmNWZhOTk0ODg1YTIzZGMzZC4uY2FiOWZiZGM0
ZTgzOWZiYjg5YTY5MzM1NjIyMmRiMDBlMTAyMjNjYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5jcHAKQEAgLTI2LDE0ICsy
NiwxNSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlByZWNpc2VKdW1wVGFyZ2V0
cy5oIgogCisjaW5jbHVkZSAiSW50ZXJwcmV0ZXJJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDSW5s
aW5lcy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAotdGVtcGxhdGUgPHNpemVfdCB2ZWN0b3JTaXpl
Pgotc3RhdGljIHZvaWQgZ2V0SnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sq
IGNvZGVCbG9jaywgSW50ZXJwcmV0ZXIqIGludGVycHJldGVyLCBJbnN0cnVjdGlvbiogaW5zdHJ1
Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBWZWN0b3I8dW5zaWduZWQsIHZl
Y3RvclNpemU+JiBvdXQpCit0ZW1wbGF0ZSA8c2l6ZV90IHZlY3RvclNpemUsIHR5cGVuYW1lIEJs
b2NrLCB0eXBlbmFtZSBJbnN0cnVjdGlvbj4KK3N0YXRpYyB2b2lkIGdldEp1bXBUYXJnZXRzRm9y
Qnl0ZWNvZGVPZmZzZXQoQmxvY2sqIGNvZGVCbG9jaywgSW50ZXJwcmV0ZXIqIGludGVycHJldGVy
LCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0
LCBWZWN0b3I8dW5zaWduZWQsIHZlY3RvclNpemU+JiBvdXQpCiB7Ci0gICAgT3Bjb2RlSUQgb3Bj
b2RlSUQgPSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25zQmVnaW5bYnl0ZWNv
ZGVPZmZzZXRdLnUub3Bjb2RlKTsKKyAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGludGVycHJldGVy
LT5nZXRPcGNvZGVJRChpbnN0cnVjdGlvbnNCZWdpbltieXRlY29kZU9mZnNldF0pOwogICAgIElu
c3RydWN0aW9uKiBjdXJyZW50ID0gaW5zdHJ1Y3Rpb25zQmVnaW4gKyBieXRlY29kZU9mZnNldDsK
ICAgICBzd2l0Y2ggKG9wY29kZUlEKSB7CiAgICAgY2FzZSBvcF9qbXA6CkBAIC01NCwyMSArNTUs
MjUgQEAgc3RhdGljIHZvaWQgZ2V0SnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgSW50ZXJwcmV0ZXIqIGkKICAgICBjYXNlIG9wX2pubGVzc2VxOgogICAg
IGNhc2Ugb3Bfam5ncmVhdGVyOgogICAgIGNhc2Ugb3Bfam5ncmVhdGVyZXE6Ci0gICAgY2FzZSBv
cF9zYXZlOiAvLyBUaGUganVtcCBvZiBvcF9zYXZlIGlzIHB1cmVseSBmb3IgY2FsY3VsYXRpbmcg
bGl2ZW5lc3MuCiAgICAgICAgIG91dC5hcHBlbmQoYnl0ZWNvZGVPZmZzZXQgKyBjdXJyZW50WzNd
LnUub3BlcmFuZCk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2Ugb3Bfc2F2ZTogeworICAgICAg
ICAvLyBUaGUganVtcCBvZiBvcF9zYXZlIHVuZGVyIEV4dHJhY3RHZW5lcmF0b3JMaXZlQ2FsbGVl
TG9jYWxzIG1vZGUgaXMgcHVyZWx5IGZvciBjYWxjdWxhdGluZyBsaXZlbmVzcy4KKyAgICAgICAg
b3V0LmFwcGVuZChieXRlY29kZU9mZnNldCArIGN1cnJlbnRbM10udS5vcGVyYW5kKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgfQogICAgIGNhc2Ugb3Bfc3dpdGNoX2ltbToKICAgICBjYXNlIG9wX3N3
aXRjaF9jaGFyOiB7Ci0gICAgICAgIFNpbXBsZUp1bXBUYWJsZSYgdGFibGUgPSBjb2RlQmxvY2st
PnN3aXRjaEp1bXBUYWJsZShjdXJyZW50WzFdLnUub3BlcmFuZCk7CisgICAgICAgIGF1dG8mIHRh
YmxlID0gY29kZUJsb2NrLT5zd2l0Y2hKdW1wVGFibGUoY3VycmVudFsxXS51Lm9wZXJhbmQpOwog
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSB0YWJsZS5icmFuY2hPZmZzZXRzLnNpemUoKTsgaS0t
OykKICAgICAgICAgICAgIG91dC5hcHBlbmQoYnl0ZWNvZGVPZmZzZXQgKyB0YWJsZS5icmFuY2hP
ZmZzZXRzW2ldKTsKICAgICAgICAgb3V0LmFwcGVuZChieXRlY29kZU9mZnNldCArIGN1cnJlbnRb
Ml0udS5vcGVyYW5kKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2Ugb3Bfc3dpdGNo
X3N0cmluZzogewotICAgICAgICBTdHJpbmdKdW1wVGFibGUmIHRhYmxlID0gY29kZUJsb2NrLT5z
dHJpbmdTd2l0Y2hKdW1wVGFibGUoY3VycmVudFsxXS51Lm9wZXJhbmQpOwotICAgICAgICBTdHJp
bmdKdW1wVGFibGU6OlN0cmluZ09mZnNldFRhYmxlOjppdGVyYXRvciBpdGVyID0gdGFibGUub2Zm
c2V0VGFibGUuYmVnaW4oKTsKLSAgICAgICAgU3RyaW5nSnVtcFRhYmxlOjpTdHJpbmdPZmZzZXRU
YWJsZTo6aXRlcmF0b3IgZW5kID0gdGFibGUub2Zmc2V0VGFibGUuZW5kKCk7CisgICAgICAgIGF1
dG8mIHRhYmxlID0gY29kZUJsb2NrLT5zdHJpbmdTd2l0Y2hKdW1wVGFibGUoY3VycmVudFsxXS51
Lm9wZXJhbmQpOworICAgICAgICBhdXRvIGl0ZXIgPSB0YWJsZS5vZmZzZXRUYWJsZS5iZWdpbigp
OworICAgICAgICBhdXRvIGVuZCA9IHRhYmxlLm9mZnNldFRhYmxlLmVuZCgpOwogICAgICAgICBm
b3IgKDsgaXRlciAhPSBlbmQ7ICsraXRlcikKICAgICAgICAgICAgIG91dC5hcHBlbmQoYnl0ZWNv
ZGVPZmZzZXQgKyBpdGVyLT52YWx1ZS5icmFuY2hPZmZzZXQpOwogICAgICAgICBvdXQuYXBwZW5k
KGJ5dGVjb2RlT2Zmc2V0ICsgY3VycmVudFsyXS51Lm9wZXJhbmQpOwpAQCAtODIsMTMgKzg3LDE5
IEBAIHN0YXRpYyB2b2lkIGdldEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIEludGVycHJldGVyKiBpCiAgICAgfQogfQogCi12b2lkIGNvbXB1dGVQcmVj
aXNlSnVtcFRhcmdldHMoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFZlY3Rvcjx1bnNpZ25lZCwgMzI+
JiBvdXQpCitlbnVtIGNsYXNzIENvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHNNb2RlIHsKKyAgICBG
b2xsb3dDb2RlQmxvY2tDbGFpbSwKKyAgICBGb3JjZUNvbXB1dGUsCit9OworCit0ZW1wbGF0ZTxD
b21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzTW9kZSBNb2RlLCB0eXBlbmFtZSBCbG9jaywgdHlwZW5h
bWUgSW5zdHJ1Y3Rpb24sIHNpemVfdCB2ZWN0b3JTaXplPgordm9pZCBjb21wdXRlUHJlY2lzZUp1
bXBUYXJnZXRzSW50ZXJuYWwoQmxvY2sqIGNvZGVCbG9jaywgSW5zdHJ1Y3Rpb24qIGluc3RydWN0
aW9uc0JlZ2luLCB1bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50LCBWZWN0b3I8dW5zaWduZWQsIHZl
Y3RvclNpemU+JiBvdXQpCiB7CiAgICAgQVNTRVJUKG91dC5pc0VtcHR5KCkpOwogICAgIAogICAg
IC8vIFdlIHdpbGwgZGVyaXZlIGEgc3VwZXJzZXQgb2YgdGhlIGp1bXAgdGFyZ2V0cyB0aGF0IHRo
ZSBjb2RlIGJsb2NrIHRoaW5rcyBpdCBoYXMuCiAgICAgLy8gU28sIGlmIHRoZSBjb2RlIGJsb2Nr
IGNsYWltcyB0aGVyZSBhcmUgbm9uZSwgdGhlbiB3ZSBhcmUgZG9uZS4KLSAgICBpZiAoIWNvZGVC
bG9jay0+bnVtYmVyT2ZKdW1wVGFyZ2V0cygpKQorICAgIGlmIChNb2RlID09IENvbXB1dGVQcmVj
aXNlSnVtcFRhcmdldHNNb2RlOjpGb2xsb3dDb2RlQmxvY2tDbGFpbSAmJiAhY29kZUJsb2NrLT5u
dW1iZXJPZkp1bXBUYXJnZXRzKCkpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBmb3IgKHVu
c2lnbmVkIGkgPSBjb2RlQmxvY2stPm51bWJlck9mRXhjZXB0aW9uSGFuZGxlcnMoKTsgaS0tOykg
ewpAQCAtOTgsMTAgKzEwOSw4IEBAIHZvaWQgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhDb2Rl
QmxvY2sqIGNvZGVCbG9jaywgVmVjdG9yPHVuc2lnbmVkLCAzMj4mIG91dCkKICAgICB9CiAKICAg
ICBJbnRlcnByZXRlciogaW50ZXJwcmV0ZXIgPSBjb2RlQmxvY2stPnZtKCktPmludGVycHJldGVy
OwotICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiA9IGNvZGVCbG9jay0+aW5zdHJ1
Y3Rpb25zKCkuYmVnaW4oKTsKLSAgICB1bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50ID0gY29kZUJs
b2NrLT5pbnN0cnVjdGlvbnMoKS5zaXplKCk7CiAgICAgZm9yICh1bnNpZ25lZCBieXRlY29kZU9m
ZnNldCA9IDA7IGJ5dGVjb2RlT2Zmc2V0IDwgaW5zdHJ1Y3Rpb25Db3VudDspIHsKLSAgICAgICAg
T3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25z
QmVnaW5bYnl0ZWNvZGVPZmZzZXRdLnUub3Bjb2RlKTsKKyAgICAgICAgT3Bjb2RlSUQgb3Bjb2Rl
SUQgPSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25zQmVnaW5bYnl0ZWNvZGVP
ZmZzZXRdKTsKICAgICAgICAgZ2V0SnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChjb2RlQmxv
Y2ssIGludGVycHJldGVyLCBpbnN0cnVjdGlvbnNCZWdpbiwgYnl0ZWNvZGVPZmZzZXQsIG91dCk7
CiAgICAgICAgIGJ5dGVjb2RlT2Zmc2V0ICs9IG9wY29kZUxlbmd0aHNbb3Bjb2RlSURdOwogICAg
IH0KQEAgLTEyMywxMSArMTMyLDM0IEBAIHZvaWQgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhD
b2RlQmxvY2sqIGNvZGVCbG9jaywgVmVjdG9yPHVuc2lnbmVkLCAzMj4mIG91dCkKICAgICBvdXQu
c2hyaW5rVG9GaXQoKTsKIH0KIAotdm9pZCBmaW5kSnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNl
dChDb2RlQmxvY2sqIGNvZGVCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIFZlY3Rvcjx1
bnNpZ25lZCwgMT4mIG91dCkKK3ZvaWQgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgVmVjdG9yPHVuc2lnbmVkLCAzMj4mIG91dCkKIHsKLSAgICBJbnRlcnBy
ZXRlciogaW50ZXJwcmV0ZXIgPSBjb2RlQmxvY2stPnZtKCktPmludGVycHJldGVyOwotICAgIElu
c3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiA9IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCku
YmVnaW4oKTsKLSAgICBnZXRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9jaywg
aW50ZXJwcmV0ZXIsIGluc3RydWN0aW9uc0JlZ2luLCBieXRlY29kZU9mZnNldCwgb3V0KTsKKyAg
ICBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzSW50ZXJuYWw8Q29tcHV0ZVByZWNpc2VKdW1wVGFy
Z2V0c01vZGU6OkZvbGxvd0NvZGVCbG9ja0NsYWltPihjb2RlQmxvY2ssIGNvZGVCbG9jay0+aW5z
dHJ1Y3Rpb25zKCkuYmVnaW4oKSwgY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5zaXplKCksIG91
dCk7Cit9CisKK3ZvaWQgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhDb2RlQmxvY2sqIGNvZGVC
bG9jaywgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBpbnN0cnVjdGlv
bkNvdW50LCBWZWN0b3I8dW5zaWduZWQsIDMyPiYgb3V0KQoreworICAgIGNvbXB1dGVQcmVjaXNl
SnVtcFRhcmdldHNJbnRlcm5hbDxDb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzTW9kZTo6Rm9sbG93
Q29kZUJsb2NrQ2xhaW0+KGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb25zQmVnaW4sIGluc3RydWN0aW9u
Q291bnQsIG91dCk7Cit9CisKK3ZvaWQgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhVbmxpbmtl
ZENvZGVCbG9jayogY29kZUJsb2NrLCBVbmxpbmtlZEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNC
ZWdpbiwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCwgVmVjdG9yPHVuc2lnbmVkLCAzMj4mIG91
dCkKK3sKKyAgICBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzSW50ZXJuYWw8Q29tcHV0ZVByZWNp
c2VKdW1wVGFyZ2V0c01vZGU6OkZvbGxvd0NvZGVCbG9ja0NsYWltPihjb2RlQmxvY2ssIGluc3Ry
dWN0aW9uc0JlZ2luLCBpbnN0cnVjdGlvbkNvdW50LCBvdXQpOworfQorCit2b2lkIHJlY29tcHV0
ZVByZWNpc2VKdW1wVGFyZ2V0cyhVbmxpbmtlZENvZGVCbG9jayogY29kZUJsb2NrLCBVbmxpbmtl
ZEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3Vu
dCwgVmVjdG9yPHVuc2lnbmVkPiYgb3V0KQoreworICAgIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdl
dHNJbnRlcm5hbDxDb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzTW9kZTo6Rm9yY2VDb21wdXRlPihj
b2RlQmxvY2ssIGluc3RydWN0aW9uc0JlZ2luLCBpbnN0cnVjdGlvbkNvdW50LCBvdXQpOworfQor
Cit2b2lkIGZpbmRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJs
b2NrLCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGJ5dGVjb2RlT2Zm
c2V0LCBWZWN0b3I8dW5zaWduZWQsIDE+JiBvdXQpCit7CisgICAgZ2V0SnVtcFRhcmdldHNGb3JC
eXRlY29kZU9mZnNldChjb2RlQmxvY2ssIGNvZGVCbG9jay0+dm0oKS0+aW50ZXJwcmV0ZXIsIGlu
c3RydWN0aW9uc0JlZ2luLCBieXRlY29kZU9mZnNldCwgb3V0KTsKK30KKwordm9pZCBmaW5kSnVt
cFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChVbmxpbmtlZENvZGVCbG9jayogY29kZUJsb2NrLCBV
bmxpbmtlZEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgYnl0ZWNvZGVP
ZmZzZXQsIFZlY3Rvcjx1bnNpZ25lZCwgMT4mIG91dCkKK3sKKyAgICBnZXRKdW1wVGFyZ2V0c0Zv
ckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9jaywgY29kZUJsb2NrLT52bSgpLT5pbnRlcnByZXRlciwg
aW5zdHJ1Y3Rpb25zQmVnaW4sIGJ5dGVjb2RlT2Zmc2V0LCBvdXQpOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVj
aXNlSnVtcFRhcmdldHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVjaXNl
SnVtcFRhcmdldHMuaAppbmRleCA4NTI0MTNkNzdiNzk4OTg0YjI3Y2VmMGVkNjJiYzk0YzY4OWUy
MTJjLi5kYjliZDM4M2I4YWM0NTU3ZDMyNjcxN2I3MmQ0YjBmNTBiMWQxODM4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5oCkBA
IC0zMCwxMCArMzAsMTggQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKK2NsYXNzIFVubGlua2VkQ29k
ZUJsb2NrOworc3RydWN0IFVubGlua2VkSW5zdHJ1Y3Rpb247CisKIC8vIFJldHVybiBhIHNvcnRl
ZCBsaXN0IG9mIGJ5dGVjb2RlIGluZGV4IHRoYXQgYXJlIHRoZSBkZXN0aW5hdGlvbiBvZiBhIGp1
bXAuCiB2b2lkIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMoQ29kZUJsb2NrKiwgVmVjdG9yPHVu
c2lnbmVkLCAzMj4mIG91dCk7Cit2b2lkIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMoQ29kZUJs
b2NrKiwgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBpbnN0cnVjdGlv
bkNvdW50LCBWZWN0b3I8dW5zaWduZWQsIDMyPiYgb3V0KTsKK3ZvaWQgY29tcHV0ZVByZWNpc2VK
dW1wVGFyZ2V0cyhVbmxpbmtlZENvZGVCbG9jayosIFVubGlua2VkSW5zdHJ1Y3Rpb24qIGluc3Ry
dWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50LCBWZWN0b3I8dW5zaWduZWQs
IDMyPiYgb3V0KTsKKwordm9pZCByZWNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMoVW5saW5rZWRD
b2RlQmxvY2sqLCBVbmxpbmtlZEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWdu
ZWQgaW5zdHJ1Y3Rpb25Db3VudCwgVmVjdG9yPHVuc2lnbmVkPiYgb3V0KTsKIAotdm9pZCBmaW5k
SnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqLCB1bnNpZ25lZCBieXRlY29k
ZU9mZnNldCwgVmVjdG9yPHVuc2lnbmVkLCAxPiYgb3V0KTsKK3ZvaWQgZmluZEp1bXBUYXJnZXRz
Rm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiwgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0Jl
Z2luLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgVmVjdG9yPHVuc2lnbmVkLCAxPiYgb3V0KTsK
K3ZvaWQgZmluZEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoVW5saW5rZWRDb2RlQmxvY2sq
LCBVbmxpbmtlZEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgYnl0ZWNv
ZGVPZmZzZXQsIFZlY3Rvcjx1bnNpZ25lZCwgMT4mIG91dCk7CiAKIH0gLy8gbmFtZXNwYWNlIEpT
QwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRD
b2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29k
ZUJsb2NrLmNwcAppbmRleCAwMDVkZmY4YmZjMmM1MDQ4YzUwM2NlNjAyOWJiZDIzODMwNmExOTU0
Li5hNWVjZjUxZTFlNzdlYjI5OWFhYjE2YTA5MDlhNDYxNjIzNWQwNTZkIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKQEAg
LTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJVbmxpbmtlZENvZGVCbG9jay5oIgogCiAjaW5jbHVk
ZSAiQnl0ZWNvZGVHZW5lcmF0b3IuaCIKKyNpbmNsdWRlICJCeXRlY29kZVJld3JpdGVyLmgiCiAj
aW5jbHVkZSAiQ2xhc3NJbmZvLmgiCiAjaW5jbHVkZSAiQ29kZUNhY2hlLmgiCiAjaW5jbHVkZSAi
RXhlY3V0YWJsZS5oIgpAQCAtMzYsNiArMzcsNyBAQAogI2luY2x1ZGUgIkpTU3RyaW5nLmgiCiAj
aW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIlBhcnNlci5oIgorI2luY2x1ZGUgIlBy
ZWNpc2VKdW1wVGFyZ2V0cy5oIgogI2luY2x1ZGUgIlNvdXJjZVByb3ZpZGVyLmgiCiAjaW5jbHVk
ZSAiU3RydWN0dXJlLmgiCiAjaW5jbHVkZSAiU3ltYm9sVGFibGUuaCIKQEAgLTM2Nyw1ICszNjks
MTExIEBAIGNvbnN0IFVubGlua2VkSW5zdHJ1Y3Rpb25TdHJlYW0mIFVubGlua2VkQ29kZUJsb2Nr
OjppbnN0cnVjdGlvbnMoKSBjb25zdAogICAgIHJldHVybiAqbV91bmxpbmtlZEluc3RydWN0aW9u
czsKIH0KIAorVW5saW5rZWRIYW5kbGVySW5mbyogVW5saW5rZWRDb2RlQmxvY2s6OmhhbmRsZXJG
b3JCeXRlY29kZU9mZnNldCh1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgUmVxdWlyZWRIYW5kbGVy
IHJlcXVpcmVkSGFuZGxlcikKK3sKKyAgICByZXR1cm4gaGFuZGxlckZvckluZGV4KGJ5dGVjb2Rl
T2Zmc2V0LCByZXF1aXJlZEhhbmRsZXIpOworfQorCitVbmxpbmtlZEhhbmRsZXJJbmZvKiBVbmxp
bmtlZENvZGVCbG9jazo6aGFuZGxlckZvckluZGV4KHVuc2lnbmVkIGluZGV4LCBSZXF1aXJlZEhh
bmRsZXIgcmVxdWlyZWRIYW5kbGVyKQoreworICAgIGlmICghbV9yYXJlRGF0YSkKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIFVubGlua2VkSGFuZGxlckluZm86OmhhbmRsZXJG
b3JJbmRleChtX3JhcmVEYXRhLT5tX2V4Y2VwdGlvbkhhbmRsZXJzLCBpbmRleCwgcmVxdWlyZWRI
YW5kbGVyKTsKK30KKwordm9pZCBVbmxpbmtlZENvZGVCbG9jazo6YXBwbHlNb2RpZmljYXRpb24o
Qnl0ZWNvZGVSZXdyaXRlciYgaW5zZXJ0aW9uU2V0KQoreworICAgIC8vIEJlZm9yZSBhcHBseWlu
ZyB0aGUgY2hhbmdlcywgd2UgYWRqdXN0IHRoZSBqdW1wcyBiYXNlZCBvbiB0aGUgb3JpZ2luYWwg
Ynl0ZWNvZGUgb2Zmc2V0LCB0aGUgb2Zmc2V0IHRvIHRoZSBqdW1wIHRhcmdldCwgYW5kCisgICAg
Ly8gdGhlIGluc2VydGlvbiBpbmZvcm1hdGlvbi4KKworICAgIEJ5dGVjb2RlR3JhcGg8VW5saW5r
ZWRDb2RlQmxvY2s+JiBncmFwaCA9IGluc2VydGlvblNldC5ncmFwaCgpOworICAgIFVubGlua2Vk
SW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luID0gZ3JhcGguaW5zdHJ1Y3Rpb25zKCkuYmVn
aW4oKTsKKyAgICBmb3IgKGludCBieXRlY29kZU9mZnNldCA9IDAsIGluc3RydWN0aW9uQ291bnQg
PSBncmFwaC5pbnN0cnVjdGlvbnMoKS5zaXplKCk7IGJ5dGVjb2RlT2Zmc2V0IDwgaW5zdHJ1Y3Rp
b25Db3VudDspIHsKKyAgICAgICAgVW5saW5rZWRJbnN0cnVjdGlvbiogY3VycmVudCA9IGluc3Ry
dWN0aW9uc0JlZ2luICsgYnl0ZWNvZGVPZmZzZXQ7CisgICAgICAgIE9wY29kZUlEIG9wY29kZUlE
ID0gY3VycmVudFswXS51Lm9wY29kZTsKKworICAgICAgICBzd2l0Y2ggKG9wY29kZUlEKSB7Cisg
ICAgICAgIGNhc2Ugb3Bfam1wOgorICAgICAgICAgICAgY3VycmVudFsxXS51Lm9wZXJhbmQgPSBp
bnNlcnRpb25TZXQuYWRqdXN0T2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0LCBieXRlY29kZU9mZnNldCAr
IGN1cnJlbnRbMV0udS5vcGVyYW5kKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNh
c2Ugb3BfanRydWU6CisgICAgICAgIGNhc2Ugb3BfamZhbHNlOgorICAgICAgICBjYXNlIG9wX2pl
cV9udWxsOgorICAgICAgICBjYXNlIG9wX2puZXFfbnVsbDoKKyAgICAgICAgICAgIGN1cnJlbnRb
Ml0udS5vcGVyYW5kID0gaW5zZXJ0aW9uU2V0LmFkanVzdE9mZnNldChieXRlY29kZU9mZnNldCwg
Ynl0ZWNvZGVPZmZzZXQgKyBjdXJyZW50WzJdLnUub3BlcmFuZCk7CisgICAgICAgICAgICBicmVh
azsKKworICAgICAgICBjYXNlIG9wX2puZXFfcHRyOgorICAgICAgICBjYXNlIG9wX2psZXNzOgor
ICAgICAgICBjYXNlIG9wX2psZXNzZXE6CisgICAgICAgIGNhc2Ugb3BfamdyZWF0ZXI6CisgICAg
ICAgIGNhc2Ugb3BfamdyZWF0ZXJlcToKKyAgICAgICAgY2FzZSBvcF9qbmxlc3M6CisgICAgICAg
IGNhc2Ugb3Bfam5sZXNzZXE6CisgICAgICAgIGNhc2Ugb3Bfam5ncmVhdGVyOgorICAgICAgICBj
YXNlIG9wX2puZ3JlYXRlcmVxOgorICAgICAgICAgICAgY3VycmVudFszXS51Lm9wZXJhbmQgPSBp
bnNlcnRpb25TZXQuYWRqdXN0T2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0LCBieXRlY29kZU9mZnNldCAr
IGN1cnJlbnRbM10udS5vcGVyYW5kKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNh
c2Ugb3Bfc3dpdGNoX2ltbToKKyAgICAgICAgY2FzZSBvcF9zd2l0Y2hfY2hhcjogeworICAgICAg
ICAgICAgYXV0byYgdGFibGUgPSBzd2l0Y2hKdW1wVGFibGUoY3VycmVudFsxXS51Lm9wZXJhbmQp
OworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gdGFibGUuYnJhbmNoT2Zmc2V0cy5zaXpl
KCk7IGktLTspCisgICAgICAgICAgICAgICAgdGFibGUuYnJhbmNoT2Zmc2V0c1tpXSA9IGluc2Vy
dGlvblNldC5hZGp1c3RPZmZzZXQoYnl0ZWNvZGVPZmZzZXQsIGJ5dGVjb2RlT2Zmc2V0ICsgdGFi
bGUuYnJhbmNoT2Zmc2V0c1tpXSk7CisgICAgICAgICAgICBjdXJyZW50WzJdLnUub3BlcmFuZCA9
IGluc2VydGlvblNldC5hZGp1c3RPZmZzZXQoYnl0ZWNvZGVPZmZzZXQsIGJ5dGVjb2RlT2Zmc2V0
ICsgY3VycmVudFsyXS51Lm9wZXJhbmQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0K
KworICAgICAgICBjYXNlIG9wX3N3aXRjaF9zdHJpbmc6IHsKKyAgICAgICAgICAgIGF1dG8mIHRh
YmxlID0gc3RyaW5nU3dpdGNoSnVtcFRhYmxlKGN1cnJlbnRbMV0udS5vcGVyYW5kKTsKKyAgICAg
ICAgICAgIGF1dG8gaXRlciA9IHRhYmxlLm9mZnNldFRhYmxlLmJlZ2luKCk7CisgICAgICAgICAg
ICBhdXRvIGVuZCA9IHRhYmxlLm9mZnNldFRhYmxlLmVuZCgpOworICAgICAgICAgICAgZm9yICg7
IGl0ZXIgIT0gZW5kOyArK2l0ZXIpCisgICAgICAgICAgICAgICAgaXRlci0+dmFsdWUuYnJhbmNo
T2Zmc2V0ID0gaW5zZXJ0aW9uU2V0LmFkanVzdE9mZnNldChieXRlY29kZU9mZnNldCwgYnl0ZWNv
ZGVPZmZzZXQgKyBpdGVyLT52YWx1ZS5icmFuY2hPZmZzZXQpOworICAgICAgICAgICAgY3VycmVu
dFsyXS51Lm9wZXJhbmQgPSBpbnNlcnRpb25TZXQuYWRqdXN0T2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0
LCBieXRlY29kZU9mZnNldCArIGN1cnJlbnRbMl0udS5vcGVyYW5kKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICB9CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CisKKyAgICAgICAgYnl0ZWNvZGVPZmZzZXQgKz0gb3Bjb2RlTGVuZ3RoKG9wY29k
ZUlEKTsKKyAgICB9CisKKyAgICAvLyBUaGVuLCBleGNlcHRpb24gaGFuZGxlcnMgc2hvdWxkIGJl
IGFkanVzdGVkLgorICAgIGlmIChtX3JhcmVEYXRhKSB7CisgICAgICAgIGZvciAoVW5saW5rZWRI
YW5kbGVySW5mbyYgaGFuZGxlciA6IG1fcmFyZURhdGEtPm1fZXhjZXB0aW9uSGFuZGxlcnMpIHsK
KyAgICAgICAgICAgIGhhbmRsZXIudGFyZ2V0ID0gaW5zZXJ0aW9uU2V0LmFkanVzdE9mZnNldCgw
LCBoYW5kbGVyLnRhcmdldCk7CisgICAgICAgICAgICBoYW5kbGVyLnN0YXJ0ID0gaW5zZXJ0aW9u
U2V0LmFkanVzdE9mZnNldCgwLCBoYW5kbGVyLnN0YXJ0KTsKKyAgICAgICAgICAgIGhhbmRsZXIu
ZW5kID0gaW5zZXJ0aW9uU2V0LmFkanVzdE9mZnNldCgwLCBoYW5kbGVyLmVuZCk7CisgICAgICAg
IH0KKworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fcmFyZURhdGEtPm1fb3BQcm9m
aWxlQ29udHJvbEZsb3dCeXRlY29kZU9mZnNldHMuc2l6ZSgpOyArK2kpCisgICAgICAgICAgICBt
X3JhcmVEYXRhLT5tX29wUHJvZmlsZUNvbnRyb2xGbG93Qnl0ZWNvZGVPZmZzZXRzW2ldID0gaW5z
ZXJ0aW9uU2V0LmFkanVzdE9mZnNldCgwLCBtX3JhcmVEYXRhLT5tX29wUHJvZmlsZUNvbnRyb2xG
bG93Qnl0ZWNvZGVPZmZzZXRzW2ldKTsKKworICAgICAgICBpZiAoIW1fcmFyZURhdGEtPm1fdHlw
ZVByb2ZpbGVySW5mb01hcC5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIEhhc2hNYXA8dW5zaWdu
ZWQsIFJhcmVEYXRhOjpUeXBlUHJvZmlsZXJFeHByZXNzaW9uUmFuZ2U+IGFkanVzdGVkVHlwZVBy
b2ZpbGVySW5mb01hcDsKKyAgICAgICAgICAgIGZvciAoYXV0byYgZW50cnkgOiBtX3JhcmVEYXRh
LT5tX3R5cGVQcm9maWxlckluZm9NYXApCisgICAgICAgICAgICAgICAgYWRqdXN0ZWRUeXBlUHJv
ZmlsZXJJbmZvTWFwLnNldChpbnNlcnRpb25TZXQuYWRqdXN0T2Zmc2V0KDAsIGVudHJ5LmtleSks
IGVudHJ5LnZhbHVlKTsKKyAgICAgICAgICAgIG1fcmFyZURhdGEtPm1fdHlwZVByb2ZpbGVySW5m
b01hcC5zd2FwKGFkanVzdGVkVHlwZVByb2ZpbGVySW5mb01hcCk7CisgICAgICAgIH0KKyAgICB9
CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlv
bnMuc2l6ZSgpOyArK2kpCisgICAgICAgIG1fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnNbaV0g
PSBpbnNlcnRpb25TZXQuYWRqdXN0T2Zmc2V0KDAsIG1fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlv
bnNbaV0pOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2V4cHJlc3Npb25JbmZvLnNp
emUoKTsgKytpKQorICAgICAgICBtX2V4cHJlc3Npb25JbmZvW2ldLmluc3RydWN0aW9uT2Zmc2V0
ID0gaW5zZXJ0aW9uU2V0LmFkanVzdE9mZnNldCgwLCBtX2V4cHJlc3Npb25JbmZvW2ldLmluc3Ry
dWN0aW9uT2Zmc2V0KTsKKworICAgIC8vIFRoZW4sIG1vZGlmeSB0aGUgdW5saW5rZWQgaW5zdHJ1
Y3Rpb25zLgorICAgIGluc2VydGlvblNldC5hcHBseU1vZGlmaWNhdGlvbigpOworCisgICAgLy8g
QW5kIHJlY29tcHV0ZSB0aGUganVtcCB0YXJnZXQgYmFzZWQgb24gdGhlIG1vZGlmaWVkIHVubGlu
a2VkIGluc3RydWN0aW9ucy4KKyAgICBtX2p1bXBUYXJnZXRzLmNsZWFyKCk7CisgICAgcmVjb21w
dXRlUHJlY2lzZUp1bXBUYXJnZXRzKHRoaXMsIGdyYXBoLmluc3RydWN0aW9ucygpLmJlZ2luKCks
IGdyYXBoLmluc3RydWN0aW9ucygpLnNpemUoKSwgbV9qdW1wVGFyZ2V0cyk7Cit9CisKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJs
b2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2su
aAppbmRleCBiNGQyY2Y0OGU0NjM4ZDM3M2IxNjcyMGY3NmUzY2ZmOTdkZjAxNTBkLi40YjNiNmY1
ZDJlMjliY2FkYTU3MmYzZDVkMzgyZmRiZDI4ODIwM2IyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaApAQCAtNDUsNiArNDUsOCBA
QAogCiBuYW1lc3BhY2UgSlNDIHsKIAorY2xhc3MgQnl0ZWNvZGVSZXdyaXRlcjsKK2NsYXNzIERl
YnVnZ2VyOwogY2xhc3MgRnVuY3Rpb25NZXRhZGF0YU5vZGU7CiBjbGFzcyBGdW5jdGlvbkV4ZWN1
dGFibGU7CiBjbGFzcyBKU1Njb3BlOwpAQCAtNjUsNyArNjcsMTEgQEAgdHlwZWRlZiB1bnNpZ25l
ZCBVbmxpbmtlZE9iamVjdEFsbG9jYXRpb25Qcm9maWxlOwogdHlwZWRlZiB1bnNpZ25lZCBVbmxp
bmtlZExMSW50Q2FsbExpbmtJbmZvOwogCiBzdHJ1Y3QgVW5saW5rZWRTdHJpbmdKdW1wVGFibGUg
ewotICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8U3RyaW5nSW1wbD4sIGludDMyX3Q+IFN0cmlu
Z09mZnNldFRhYmxlOworICAgIHN0cnVjdCBPZmZzZXRMb2NhdGlvbiB7CisgICAgICAgIGludDMy
X3QgYnJhbmNoT2Zmc2V0OworICAgIH07CisKKyAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFN0
cmluZ0ltcGw+LCBPZmZzZXRMb2NhdGlvbj4gU3RyaW5nT2Zmc2V0VGFibGU7CiAgICAgU3RyaW5n
T2Zmc2V0VGFibGUgb2Zmc2V0VGFibGU7CiAKICAgICBpbmxpbmUgaW50MzJfdCBvZmZzZXRGb3JW
YWx1ZShTdHJpbmdJbXBsKiB2YWx1ZSwgaW50MzJfdCBkZWZhdWx0T2Zmc2V0KQpAQCAtNzQsNyAr
ODAsNyBAQCBzdHJ1Y3QgVW5saW5rZWRTdHJpbmdKdW1wVGFibGUgewogICAgICAgICBTdHJpbmdP
ZmZzZXRUYWJsZTo6Y29uc3RfaXRlcmF0b3IgbG9jID0gb2Zmc2V0VGFibGUuZmluZCh2YWx1ZSk7
CiAgICAgICAgIGlmIChsb2MgPT0gZW5kKQogICAgICAgICAgICAgcmV0dXJuIGRlZmF1bHRPZmZz
ZXQ7Ci0gICAgICAgIHJldHVybiBsb2MtPnZhbHVlOworICAgICAgICByZXR1cm4gbG9jLT52YWx1
ZS5icmFuY2hPZmZzZXQ7CiAgICAgfQogCiB9OwpAQCAtMTAyLDYgKzEwOCw4IEBAIHN0cnVjdCBV
bmxpbmtlZEluc3RydWN0aW9uIHsKICAgICB9IHU7CiB9OwogCitjbGFzcyBCeXRlY29kZUdlbmVy
YXRvcmlmaWNhdGlvbjsKKwogY2xhc3MgVW5saW5rZWRDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxs
IHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOwpAQCAtMTExLDYgKzExOSw5IEBA
IGNsYXNzIFVubGlua2VkQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAKICAgICBlbnVtIHsg
Q2FsbEZ1bmN0aW9uLCBBcHBseUZ1bmN0aW9uIH07CiAKKyAgICB0eXBlZGVmIFVubGlua2VkSW5z
dHJ1Y3Rpb24gSW5zdHJ1Y3Rpb247CisgICAgdHlwZWRlZiBWZWN0b3I8VW5saW5rZWRJbnN0cnVj
dGlvbiwgMCwgVW5zYWZlVmVjdG9yT3ZlcmZsb3c+IFVucGFja2VkSW5zdHJ1Y3Rpb25zOworCiAg
ICAgYm9vbCBpc0NvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9pc0NvbnN0cnVjdG9yOyB9
CiAgICAgYm9vbCBpc1N0cmljdE1vZGUoKSBjb25zdCB7IHJldHVybiBtX2lzU3RyaWN0TW9kZTsg
fQogICAgIGJvb2wgdXNlc0V2YWwoKSBjb25zdCB7IHJldHVybiBtX3VzZXNFdmFsOyB9CkBAIC0y
MDAsNiArMjExLDkgQEAgY2xhc3MgVW5saW5rZWRDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsK
ICAgICB1bnNpZ25lZCBqdW1wVGFyZ2V0KGludCBpbmRleCkgY29uc3QgeyByZXR1cm4gbV9qdW1w
VGFyZ2V0c1tpbmRleF07IH0KICAgICB1bnNpZ25lZCBsYXN0SnVtcFRhcmdldCgpIGNvbnN0IHsg
cmV0dXJuIG1fanVtcFRhcmdldHMubGFzdCgpOyB9CiAKKyAgICBVbmxpbmtlZEhhbmRsZXJJbmZv
KiBoYW5kbGVyRm9yQnl0ZWNvZGVPZmZzZXQodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIFJlcXVp
cmVkSGFuZGxlciA9IFJlcXVpcmVkSGFuZGxlcjo6QW55SGFuZGxlcik7CisgICAgVW5saW5rZWRI
YW5kbGVySW5mbyogaGFuZGxlckZvckluZGV4KHVuc2lnbmVkLCBSZXF1aXJlZEhhbmRsZXIgPSBS
ZXF1aXJlZEhhbmRsZXI6OkFueUhhbmRsZXIpOworCiAgICAgYm9vbCBpc0J1aWx0aW5GdW5jdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1faXNCdWlsdGluRnVuY3Rpb247IH0KIAogICAgIENvbnN0cnVj
dG9yS2luZCBjb25zdHJ1Y3RvcktpbmQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxDb25z
dHJ1Y3RvcktpbmQ+KG1fY29uc3RydWN0b3JLaW5kKTsgfQpAQCAtMzgxLDYgKzM5NSw4IEBAIGNs
YXNzIFVubGlua2VkQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgfQogCiBwcml2YXRl
OgorICAgIGZyaWVuZCBjbGFzcyBCeXRlY29kZVJld3JpdGVyOworICAgIHZvaWQgYXBwbHlNb2Rp
ZmljYXRpb24oQnl0ZWNvZGVSZXdyaXRlciYpOwogCiAgICAgdm9pZCBjcmVhdGVSYXJlRGF0YUlm
TmVjZXNzYXJ5KCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvVmlydHVhbFJlZ2lzdGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
VmlydHVhbFJlZ2lzdGVyLmgKaW5kZXggZDNkZjQwOTU3YjUxNzU2OGUzYWVmYmUzYTFhNjA5ZmQ4
NzhiYWFjMy4uZGFmNTA5ZjZjN2QxMTVlNDViY2IxMDdjNjdkM2QzOGQ4MDRmMjg5NCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZpcnR1YWxSZWdpc3Rlci5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WaXJ0dWFsUmVnaXN0ZXIuaApAQCAt
MjYsOCArMjYsOCBAQAogI2lmbmRlZiBWaXJ0dWFsUmVnaXN0ZXJfaAogI2RlZmluZSBWaXJ0dWFs
UmVnaXN0ZXJfaAogCisjaW5jbHVkZSAiQnl0ZWNvZGVDb252ZW50aW9ucy5oIgogI2luY2x1ZGUg
IkNhbGxGcmFtZS5oIgotCiAjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CiAKIG5hbWVzcGFj
ZSBKU0MgewpAQCAtMTAzLDcgKzEwMyw3IEBAIGNsYXNzIFZpcnR1YWxSZWdpc3RlciB7CiAKIHBy
aXZhdGU6CiAgICAgc3RhdGljIGNvbnN0IGludCBzX2ludmFsaWRWaXJ0dWFsUmVnaXN0ZXIgPSAw
eDNmZmZmZmZmOwotICAgIHN0YXRpYyBjb25zdCBpbnQgc19maXJzdENvbnN0YW50UmVnaXN0ZXJJ
bmRleCA9IDB4NDAwMDAwMDA7CisgICAgc3RhdGljIGNvbnN0IGludCBzX2ZpcnN0Q29uc3RhbnRS
ZWdpc3RlckluZGV4ID0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXg7CiAKICAgICBzdGF0aWMg
aW50IGxvY2FsVG9PcGVyYW5kKGludCBsb2NhbCkgeyByZXR1cm4gLTEgLSBsb2NhbDsgfQogICAg
IHN0YXRpYyBpbnQgb3BlcmFuZFRvTG9jYWwoaW50IG9wZXJhbmQpIHsgcmV0dXJuIC0xIC0gb3Bl
cmFuZDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCAzMTJkODlmN2FkYzczZjA3ZGM1MTc5Yjc1ZTU3
NWM1NTkwMjY2ZGI4Li5jYjFhNjAzYzc4ZWIxZGM0ZDlmZTVlOTE1ODgzMjIzYWU5MTJjOWMzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmNwcApAQCAtMzMsNiArMzMsNyBAQAogCiAjaW5jbHVkZSAiQXJpdGhQcm9m
aWxlLmgiCiAjaW5jbHVkZSAiQnVpbHRpbkV4ZWN1dGFibGVzLmgiCisjaW5jbHVkZSAiQnl0ZWNv
ZGVHZW5lcmF0b3JpZmljYXRpb24uaCIKICNpbmNsdWRlICJCeXRlY29kZUxpdmVuZXNzQW5hbHlz
aXMuaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIK
QEAgLTE1NSw2ICsxNTYsMTAgQEAgUGFyc2VyRXJyb3IgQnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVy
YXRlKCkKICAgICAgICAgbV9jb2RlQmxvY2stPmFkZEV4Y2VwdGlvbkhhbmRsZXIoaW5mbyk7CiAg
ICAgfQogICAgIAorCisgICAgaWYgKG1fY29kZUJsb2NrLT5wYXJzZU1vZGUoKSA9PSBTb3VyY2VQ
YXJzZU1vZGU6OkdlbmVyYXRvckJvZHlNb2RlKQorICAgICAgICBwZXJmb3JtR2VuZXJhdG9yaWZp
Y2F0aW9uKG1fY29kZUJsb2NrLmdldCgpLCBtX2luc3RydWN0aW9ucywgbV9nZW5lcmF0b3JGcmFt
ZVN5bWJvbFRhYmxlLmdldCgpLCBtX2dlbmVyYXRvckZyYW1lU3ltYm9sVGFibGVJbmRleCk7CisK
ICAgICBtX2NvZGVCbG9jay0+c2V0SW5zdHJ1Y3Rpb25zKHN0ZDo6bWFrZV91bmlxdWU8VW5saW5r
ZWRJbnN0cnVjdGlvblN0cmVhbT4obV9pbnN0cnVjdGlvbnMpKTsKIAogICAgIG1fY29kZUJsb2Nr
LT5zaHJpbmtUb0ZpdCgpOwpAQCAtMjYyLDEwICsyNjcsMTQgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6
OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25Ob2RlKiBmdW5jdGlvbk5vZGUsIFVu
bGlua2UKICAgICBib29sIHNob3VsZENhcHR1cmVBbGxPZlRoZVRoaW5ncyA9IG1fc2hvdWxkRW1p
dERlYnVnSG9va3MgfHwgY29kZUJsb2NrLT51c2VzRXZhbCgpOwogICAgIGJvb2wgbmVlZHNBcmd1
bWVudHMgPSAoZnVuY3Rpb25Ob2RlLT51c2VzQXJndW1lbnRzKCkgfHwgY29kZUJsb2NrLT51c2Vz
RXZhbCgpIHx8IChmdW5jdGlvbk5vZGUtPnVzZXNBcnJvd0Z1bmN0aW9uKCkgJiYgIWNvZGVCbG9j
ay0+aXNBcnJvd0Z1bmN0aW9uKCkgJiYgaXNBcmd1bWVudHNVc2VkSW5Jbm5lckFycm93RnVuY3Rp
b24oKSkpOwogCi0gICAgLy8gR2VuZXJhdG9yIG5ldmVyIHByb3ZpZGVzICJhcmd1bWVudHMiLiAi
YXJndW1lbnRzIiByZWZlcmVuY2Ugd2lsbCBiZSByZXNvbHZlZCBpbiBhbiB1cHBlciBnZW5lcmF0
b3IgZnVuY3Rpb24gc2NvcGUuCi0gICAgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6
OkdlbmVyYXRvckJvZHlNb2RlKQorICAgIGlmIChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2Rl
OjpHZW5lcmF0b3JCb2R5TW9kZSkgeworICAgICAgICAvLyBHZW5lcmF0b3IgbmV2ZXIgcHJvdmlk
ZXMgImFyZ3VtZW50cyIuICJhcmd1bWVudHMiIHJlZmVyZW5jZSB3aWxsIGJlIHJlc29sdmVkIGlu
IGFuIHVwcGVyIGdlbmVyYXRvciBmdW5jdGlvbiBzY29wZS4KICAgICAgICAgbmVlZHNBcmd1bWVu
dHMgPSBmYWxzZTsKIAorICAgICAgICAvLyBHZW5lcmF0b3IgdXNlcyB0aGUgdmFyIHNjb3BlIHRv
IHNhdmUgYW5kIHJlc3VtZSBpdHMgdmFyaWFibGVzLiBTbyB0aGUgbGV4aWNhbCBzY29wZSBpcyBh
bHdheXMgaW5zdGFudGlhdGVkLgorICAgICAgICBzaG91bGRDYXB0dXJlU29tZU9mVGhlVGhpbmdz
ID0gdHJ1ZTsKKyAgICB9CisKICAgICBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6
R2VuZXJhdG9yV3JhcHBlckZ1bmN0aW9uTW9kZSAmJiBuZWVkc0FyZ3VtZW50cykgewogICAgICAg
ICAvLyBHZW5lcmF0b3IgZG9lcyBub3QgcHJvdmlkZSAiYXJndW1lbnRzIi4gSW5zdGVhZCwgd3Jh
cHBpbmcgR2VuZXJhdG9yRnVuY3Rpb24gcHJvdmlkZXMgImFyZ3VtZW50cyIuCiAgICAgICAgIC8v
IFRoaXMgaXMgYmVjYXVzZSBhcmd1bWVudHMgb2YgYSBnZW5lcmF0b3Igc2hvdWxkIGJlIGV2YWx1
YXRlZCBiZWZvcmUgc3RhcnRpbmcgaXQuCkBAIC0yNzQsNyArMjgzLDcgQEAgQnl0ZWNvZGVHZW5l
cmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25Ob2RlKiBmdW5jdGlvbk5v
ZGUsIFVubGlua2UKICAgICAgICAgLy8gICAgZnVuY3Rpb24gKmdlbihhLCBiID0gaGVsbG8oKSkK
ICAgICAgICAgLy8gICAgewogICAgICAgICAvLyAgICAgICAgcmV0dXJuIHsKLSAgICAgICAgLy8g
ICAgICAgICAgICBAZ2VuZXJhdG9yTmV4dDogZnVuY3Rpb24gKEBnZW5lcmF0b3IsIEBnZW5lcmF0
b3JTdGF0ZSwgQGdlbmVyYXRvclZhbHVlLCBAZ2VuZXJhdG9yUmVzdW1lTW9kZSkKKyAgICAgICAg
Ly8gICAgICAgICAgICBAZ2VuZXJhdG9yTmV4dDogZnVuY3Rpb24gKEBnZW5lcmF0b3IsIEBnZW5l
cmF0b3JTdGF0ZSwgQGdlbmVyYXRvclZhbHVlLCBAZ2VuZXJhdG9yUmVzdW1lTW9kZSwgQGdlbmVy
YXRvckZyYW1lKQogICAgICAgICAvLyAgICAgICAgICAgIHsKICAgICAgICAgLy8gICAgICAgICAg
ICAgICAgYXJndW1lbnRzOyAgLy8gVGhpcyBgYXJndW1lbnRzYCBzaG91bGQgcmVmZXJlbmNlIHRv
IHRoZSBnZW4ncyBhcmd1bWVudHMuCiAgICAgICAgIC8vICAgICAgICAgICAgICAgIC4uLgpAQCAt
MzAzLDE2ICszMTIsMTQgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZN
JiB2bSwgRnVuY3Rpb25Ob2RlKiBmdW5jdGlvbk5vZGUsIFVubGlua2UKICAgICAgICAgcmV0dXJu
IGNhcHR1cmVzKHVpZCkgPyBWYXJLaW5kOjpTY29wZSA6IFZhcktpbmQ6OlN0YWNrOwogICAgIH07
CiAKLSAgICBlbWl0RW50ZXIoKTsKLQotICAgIGFsbG9jYXRlQW5kRW1pdFNjb3BlKCk7Ci0KICAg
ICBtX2NhbGxlZVJlZ2lzdGVyLnNldEluZGV4KENhbGxGcmFtZVNsb3Q6OmNhbGxlZSk7CiAKICAg
ICBpbml0aWFsaXplUGFyYW1ldGVycyhwYXJhbWV0ZXJzKTsKICAgICBBU1NFUlQoIShpc1NpbXBs
ZVBhcmFtZXRlckxpc3QgJiYgbV9yZXN0UGFyYW1ldGVyKSk7CiAKLSAgICAvLyBCZWZvcmUgZW1p
dHRpbmcgYSBzY29wZSBjcmVhdGlvbiwgZW1pdCBhIGdlbmVyYXRvciBwcm9sb2d1ZSB0aGF0IGNv
bnRhaW5zIGp1bXAgYmFzZWQgb24gYSBnZW5lcmF0b3IncyBzdGF0ZS4KKyAgICBlbWl0RW50ZXIo
KTsKKworICAgIC8vIEJlZm9yZSBlbWl0dGluZyBhbnkgb2YgdGhlIGFjdHVhbCBjb2RlIGV4Y2Vw
dCBmb3Igb3BfZW50ZXIsIGVtaXQgYSBnZW5lcmF0b3IgcHJvbG9ndWUgdGhhdCBjb250YWlucyBq
dW1wIGJhc2VkIG9uIGEgZ2VuZXJhdG9yJ3Mgc3RhdGUuCiAgICAgaWYgKHBhcnNlTW9kZSA9PSBT
b3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckJvZHlNb2RlKSB7CiAgICAgICAgIG1fZ2VuZXJhdG9y
UmVnaXN0ZXIgPSAmbV9wYXJhbWV0ZXJzWzFdOwogCkBAIC0zMjYsNiArMzMzLDggQEAgQnl0ZWNv
ZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25Ob2RlKiBmdW5j
dGlvbk5vZGUsIFVubGlua2UKICAgICAgICAgZW1pdEdlbmVyYXRvclN0YXRlTGFiZWwoKTsKICAg
ICB9CiAKKyAgICBhbGxvY2F0ZUFuZEVtaXRTY29wZSgpOworCiAgICAgaWYgKGZ1bmN0aW9uTmFt
ZUlzSW5TY29wZShmdW5jdGlvbk5vZGUtPmlkZW50KCksIGZ1bmN0aW9uTm9kZS0+ZnVuY3Rpb25N
b2RlKCkpKSB7CiAgICAgICAgIEFTU0VSVChwYXJzZU1vZGUgIT0gU291cmNlUGFyc2VNb2RlOjpH
ZW5lcmF0b3JCb2R5TW9kZSk7CiAgICAgICAgIGJvb2wgaXNEeW5hbWljU2NvcGUgPSBmdW5jdGlv
bk5hbWVTY29wZUlzRHluYW1pYyhjb2RlQmxvY2stPnVzZXNFdmFsKCksIGNvZGVCbG9jay0+aXNT
dHJpY3RNb2RlKCkpOwpAQCAtNjQxLDYgKzY1MCwxNiBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0
ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5r
ZQogICAgICAgICAgICAgZW1pdExvYWROZXdUYXJnZXRGcm9tQXJyb3dGdW5jdGlvbkxleGljYWxF
bnZpcm9ubWVudCgpOwogICAgIH0KICAgICAKKyAgICAvLyBTZXQgdXAgdGhlIGxleGljYWwgZW52
aXJvbm1lbnQgc2NvcGUgYXMgdGhlIGdlbmVyYXRvciBmcmFtZS4gV2Ugc3RvcmUgdGhlIHNhdmVk
IGFuZCByZXN1bWVkIGdlbmVyYXRvciByZWdpc3RlcnMgaW50byB0aGlzIHNjb3BlIHdpdGggdGhl
IHN5bWJvbCBrZXlzLgorICAgIC8vIFNpbmNlIHRoZXkgYXJlIHN5bWJvbCBrZXllZCwgdGhlc2Ug
dmFyaWFibGVzIGNhbm5vdCBiZSByZWFjaGVkIGZyb20gdGhlIHVzdWFsIGNvZGUuCisgICAgaWYg
KFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yQm9keU1vZGUgPT0gcGFyc2VNb2RlKSB7CisgICAg
ICAgIEFTU0VSVChtX2xleGljYWxFbnZpcm9ubWVudFJlZ2lzdGVyKTsKKyAgICAgICAgbV9nZW5l
cmF0b3JGcmFtZVN5bWJvbFRhYmxlLnNldCgqbV92bSwgZnVuY3Rpb25TeW1ib2xUYWJsZSk7Cisg
ICAgICAgIG1fZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZUluZGV4ID0gc3ltYm9sVGFibGVDb25z
dGFudEluZGV4OworICAgICAgICBlbWl0TW92ZShnZW5lcmF0b3JGcmFtZVJlZ2lzdGVyKCksIG1f
bGV4aWNhbEVudmlyb25tZW50UmVnaXN0ZXIpOworICAgICAgICBlbWl0UHV0QnlJZChnZW5lcmF0
b3JSZWdpc3RlcigpLCBwcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yRnJh
bWVQcml2YXRlTmFtZSgpLCBnZW5lcmF0b3JGcmFtZVJlZ2lzdGVyKCkpOworICAgIH0KKwogICAg
IGJvb2wgc2hvdWxkSW5pdGlhbGl6ZUJsb2NrU2NvcGVkRnVuY3Rpb25zID0gZmFsc2U7IC8vIFdl
IGdlbmVyYXRlIHRvcC1sZXZlbCBmdW5jdGlvbiBkZWNsYXJhdGlvbnMgaW4gOjpnZW5lcmF0ZSgp
LgogICAgIHB1c2hMZXhpY2FsU2NvcGUobV9zY29wZU5vZGUsIFREWkNoZWNrT3B0aW1pemF0aW9u
OjpPcHRpbWl6ZSwgTmVzdGVkU2NvcGVUeXBlOjpJc05vdE5lc3RlZCwgbnVsbHB0ciwgc2hvdWxk
SW5pdGlhbGl6ZUJsb2NrU2NvcGVkRnVuY3Rpb25zKTsKIH0KQEAgLTM2NzIsOCArMzY5MSw3IEBA
IHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDb21wbGV4UG9wU2NvcGVzKFJlZ2lzdGVySUQq
IHNjb3BlLCBDb250cm9sRmxvd0NvbnRlCiAgICAgICAgICAgICBpZiAoZmxpcFRyaWVzKSB7CiAg
ICAgICAgICAgICAgICAgd2hpbGUgKG1fdHJ5Q29udGV4dFN0YWNrLnNpemUoKSAhPSBmaW5hbGx5
Q29udGV4dC50cnlDb250ZXh0U3RhY2tTaXplKSB7CiAgICAgICAgICAgICAgICAgICAgIEFTU0VS
VChtX3RyeUNvbnRleHRTdGFjay5zaXplKCkgPiBmaW5hbGx5Q29udGV4dC50cnlDb250ZXh0U3Rh
Y2tTaXplKTsKLSAgICAgICAgICAgICAgICAgICAgVHJ5Q29udGV4dCBjb250ZXh0ID0gbV90cnlD
b250ZXh0U3RhY2subGFzdCgpOwotICAgICAgICAgICAgICAgICAgICBtX3RyeUNvbnRleHRTdGFj
ay5yZW1vdmVMYXN0KCk7CisgICAgICAgICAgICAgICAgICAgIFRyeUNvbnRleHQgY29udGV4dCA9
IG1fdHJ5Q29udGV4dFN0YWNrLnRha2VMYXN0KCk7CiAgICAgICAgICAgICAgICAgICAgIFRyeVJh
bmdlIHJhbmdlOwogICAgICAgICAgICAgICAgICAgICByYW5nZS5zdGFydCA9IGNvbnRleHQuc3Rh
cnQ7CiAgICAgICAgICAgICAgICAgICAgIHJhbmdlLmVuZCA9IGJlZm9yZUZpbmFsbHk7CkBAIC0z
OTU3LDcgKzM5NzUsNyBAQCBzdGF0aWMgdm9pZCBwcmVwYXJlSnVtcFRhYmxlRm9yU3RyaW5nU3dp
dGNoKFVubGlua2VkU3RyaW5nSnVtcFRhYmxlJiBqdW1wVGFibGUsCiAgICAgICAgIAogICAgICAg
ICBBU1NFUlQobm9kZXNbaV0tPmlzU3RyaW5nKCkpOwogICAgICAgICBTdHJpbmdJbXBsKiBjbGF1
c2UgPSBzdGF0aWNfY2FzdDxTdHJpbmdOb2RlKj4obm9kZXNbaV0pLT52YWx1ZSgpLmltcGwoKTsK
LSAgICAgICAganVtcFRhYmxlLm9mZnNldFRhYmxlLmFkZChjbGF1c2UsIGxhYmVsc1tpXS0+Ymlu
ZChzd2l0Y2hBZGRyZXNzLCBzd2l0Y2hBZGRyZXNzICsgMykpOworICAgICAgICBqdW1wVGFibGUu
b2Zmc2V0VGFibGUuYWRkKGNsYXVzZSwgVW5saW5rZWRTdHJpbmdKdW1wVGFibGU6Ok9mZnNldExv
Y2F0aW9uIHsgbGFiZWxzW2ldLT5iaW5kKHN3aXRjaEFkZHJlc3MsIHN3aXRjaEFkZHJlc3MgKyAz
KSB9KTsKICAgICB9CiB9CiAKQEAgLTQ0NjMsMTYgKzQ0ODEsMzYgQEAgdm9pZCBCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdFlpZWxkUG9pbnQoUmVnaXN0ZXJJRCogYXJndW1lbnQpCiAgICAgZW1pdEdl
bmVyYXRvclN0YXRlQ2hhbmdlKHlpZWxkUG9pbnRJbmRleCk7CiAgICAgLy8gRmlyc3QgeWllbGQg
cG9pbnQgaXMgdXNlZCBmb3IgaW5pdGlhbCBzZXF1ZW5jZS4KICAgICB1bnNpZ25lZCBsaXZlQ2Fs
bGVlTG9jYWxzSW5kZXggPSB5aWVsZFBvaW50SW5kZXggLSAxOworCisgICAgLy8gU3BsaXQgdGhl
IHRyeSByYW5nZSBoZXJlLgorICAgIFJlZlB0cjxMYWJlbD4gc2F2ZVBvaW50ID0gZW1pdExhYmVs
KG5ld0xhYmVsKCkuZ2V0KCkpOworICAgIGZvciAodW5zaWduZWQgaSA9IG1fdHJ5Q29udGV4dFN0
YWNrLnNpemUoKTsgaS0tOykgeworICAgICAgICBUcnlDb250ZXh0JiBjb250ZXh0ID0gbV90cnlD
b250ZXh0U3RhY2tbaV07CisgICAgICAgIFRyeVJhbmdlIHJhbmdlOworICAgICAgICByYW5nZS5z
dGFydCA9IGNvbnRleHQuc3RhcnQ7CisgICAgICAgIHJhbmdlLmVuZCA9IHNhdmVQb2ludDsKKyAg
ICAgICAgcmFuZ2UudHJ5RGF0YSA9IGNvbnRleHQudHJ5RGF0YTsKKyAgICAgICAgbV90cnlSYW5n
ZXMuYXBwZW5kKHJhbmdlKTsKKworICAgICAgICAvLyBUcnkgcmFuZ2Ugd2lsbCBiZSByZXN0YXJl
ZCBhdCB0aGUgbWVyZ2UgcG9pbnQuCisgICAgICAgIGNvbnRleHQuc3RhcnQgPSBtZXJnZVBvaW50
OworICAgIH0KKyAgICBWZWN0b3I8VHJ5Q29udGV4dD4gc2F2ZWRUcnlDb250ZXh0U3RhY2s7Cisg
ICAgbV90cnlDb250ZXh0U3RhY2suc3dhcChzYXZlZFRyeUNvbnRleHRTdGFjayk7CisKICAgICBl
bWl0U2F2ZShtZXJnZVBvaW50LmdldCgpLCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpOwogICAgIGVt
aXRSZXR1cm4oYXJndW1lbnQpOwogICAgIGVtaXRSZXN1bWUobWVyZ2VQb2ludC5nZXQoKSwgbGl2
ZUNhbGxlZUxvY2Fsc0luZGV4KTsKKworICAgIC8vIFJlc3RvcmUgdGhlIHRyeSBjb250ZXh0cywg
d2hpY2ggc3RhcnQgb2Zmc2V0IGlzIHVwZGF0ZWQgdG8gdGhlIG1lcmdlIHBvaW50LgorICAgIG1f
dHJ5Q29udGV4dFN0YWNrLnN3YXAoc2F2ZWRUcnlDb250ZXh0U3RhY2spOwogfQogCiB2b2lkIEJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0U2F2ZShMYWJlbCogbWVyZ2VQb2ludCwgdW5zaWduZWQgbGl2
ZUNhbGxlZUxvY2Fsc0luZGV4KQogewogICAgIHNpemVfdCBiZWdpbiA9IGluc3RydWN0aW9ucygp
LnNpemUoKTsKICAgICBlbWl0T3Bjb2RlKG9wX3NhdmUpOwotICAgIGluc3RydWN0aW9ucygpLmFw
cGVuZChtX2dlbmVyYXRvclJlZ2lzdGVyLT5pbmRleCgpKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5h
cHBlbmQoZ2VuZXJhdG9yRnJhbWVSZWdpc3RlcigpLT5pbmRleCgpKTsKICAgICBpbnN0cnVjdGlv
bnMoKS5hcHBlbmQobGl2ZUNhbGxlZUxvY2Fsc0luZGV4KTsKICAgICBpbnN0cnVjdGlvbnMoKS5h
cHBlbmQobWVyZ2VQb2ludC0+YmluZChiZWdpbiwgaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKSk7CiB9
CkBAIC00NDgxLDcgKzQ1MTksNyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzdW1l
KExhYmVsKiBtZXJnZVBvaW50LCB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSQogewogICAgIGVt
aXRHZW5lcmF0b3JTdGF0ZUxhYmVsKCk7CiAgICAgZW1pdE9wY29kZShvcF9yZXN1bWUpOwotICAg
IGluc3RydWN0aW9ucygpLmFwcGVuZChtX2dlbmVyYXRvclJlZ2lzdGVyLT5pbmRleCgpKTsKKyAg
ICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZ2VuZXJhdG9yRnJhbWVSZWdpc3RlcigpLT5pbmRleCgp
KTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobGl2ZUNhbGxlZUxvY2Fsc0luZGV4KTsKICAg
ICBlbWl0TGFiZWwobWVyZ2VQb2ludCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5kZXggZmZmNzEzYWEyNWU3
MWRmMmNmNGNiNTMwOGU2MTY5YTUzYWY2NTFiZS4uYzdhN2FjZDZlNjBhNGJlNjk5NDQ5YjlhYTRm
NDQ3OTY5ZTMyYjI0ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAtMzcsNiArMzcsOCBAQAogI2luY2x1ZGUg
IkxhYmVsLmgiCiAjaW5jbHVkZSAiTGFiZWxTY29wZS5oIgogI2luY2x1ZGUgIk5vZGVzLmgiCisj
aW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKKyNpbmNsdWRlICJKU0dlbmVyYXRvckZ1bmN0aW9uLmgi
CiAjaW5jbHVkZSAiUGFyc2VyRXJyb3IuaCIKICNpbmNsdWRlICJSZWdpc3RlcklELmgiCiAjaW5j
bHVkZSAiU2V0Rm9yU2NvcGUuaCIKQEAgLTY5OSw5ICs3MDEsMTAgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXREZWxlZ2F0ZVlpZWxkKFJlZ2lzdGVySUQqIGFyZ3Vt
ZW50LCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSopOwogICAgICAgICB2b2lkIGJlZ2luR2VuZXJh
dG9yKFJlZ2lzdGVySUQqKTsKICAgICAgICAgdm9pZCBlbmRHZW5lcmF0b3IoTGFiZWwqIGRlZmF1
bHRMYWJlbCk7Ci0gICAgICAgIFJlZ2lzdGVySUQqIGdlbmVyYXRvclN0YXRlUmVnaXN0ZXIoKSB7
IHJldHVybiAmbV9wYXJhbWV0ZXJzWzJdOyB9Ci0gICAgICAgIFJlZ2lzdGVySUQqIGdlbmVyYXRv
clZhbHVlUmVnaXN0ZXIoKSB7IHJldHVybiAmbV9wYXJhbWV0ZXJzWzNdOyB9Ci0gICAgICAgIFJl
Z2lzdGVySUQqIGdlbmVyYXRvclJlc3VtZU1vZGVSZWdpc3RlcigpIHsgcmV0dXJuICZtX3BhcmFt
ZXRlcnNbNF07IH0KKyAgICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9yU3RhdGVSZWdpc3Rlcigp
IHsgcmV0dXJuICZtX3BhcmFtZXRlcnNbc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3JG
dW5jdGlvbjo6R2VuZXJhdG9yQXJndW1lbnQ6OlN0YXRlKV07IH0KKyAgICAgICAgUmVnaXN0ZXJJ
RCogZ2VuZXJhdG9yVmFsdWVSZWdpc3RlcigpIHsgcmV0dXJuICZtX3BhcmFtZXRlcnNbc3RhdGlj
X2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6R2VuZXJhdG9yQXJndW1lbnQ6OlZh
bHVlKV07IH0KKyAgICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVy
KCkgeyByZXR1cm4gJm1fcGFyYW1ldGVyc1tzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRv
ckZ1bmN0aW9uOjpHZW5lcmF0b3JBcmd1bWVudDo6UmVzdW1lTW9kZSldOyB9CisgICAgICAgIFJl
Z2lzdGVySUQqIGdlbmVyYXRvckZyYW1lUmVnaXN0ZXIoKSB7IHJldHVybiAmbV9wYXJhbWV0ZXJz
W3N0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yRnVuY3Rpb246OkdlbmVyYXRvckFyZ3Vt
ZW50OjpGcmFtZSldOyB9CiAKICAgICAgICAgQ29kZVR5cGUgY29kZVR5cGUoKSBjb25zdCB7IHJl
dHVybiBtX2NvZGVUeXBlOyB9CiAKQEAgLTkzMCw2ICs5MzMsMTAgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIFZlY3RvcjxSZWZQdHI8Rm9ySW5Db250ZXh0Pj4gbV9mb3JJbkNvbnRleHRTdGFj
azsKICAgICAgICAgVmVjdG9yPFRyeUNvbnRleHQ+IG1fdHJ5Q29udGV4dFN0YWNrOwogICAgICAg
ICBWZWN0b3I8UmVmUHRyPExhYmVsPj4gbV9nZW5lcmF0b3JSZXN1bWVMYWJlbHM7CisKKyAgICAg
ICAgU3Ryb25nPFN5bWJvbFRhYmxlPiBtX2dlbmVyYXRvckZyYW1lU3ltYm9sVGFibGU7CisgICAg
ICAgIGludCBtX2dlbmVyYXRvckZyYW1lU3ltYm9sVGFibGVJbmRleCB7IDAgfTsKKwogICAgICAg
ICBlbnVtIEZ1bmN0aW9uVmFyaWFibGVUeXBlIDogdWludDhfdCB7IE5vcm1hbEZ1bmN0aW9uVmFy
aWFibGUsIEdsb2JhbEZ1bmN0aW9uVmFyaWFibGUgfTsKICAgICAgICAgVmVjdG9yPHN0ZDo6cGFp
cjxGdW5jdGlvbk1ldGFkYXRhTm9kZSosIEZ1bmN0aW9uVmFyaWFibGVUeXBlPj4gbV9mdW5jdGlv
bnNUb0luaXRpYWxpemU7CiAgICAgICAgIGJvb2wgbV9uZWVkVG9Jbml0aWFsaXplQXJndW1lbnRz
IHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3Bl
cmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3Bw
CmluZGV4IDVkOTAwMzk3NDIzNmViOTExNjlkMjEyODZlZGMwYzcxNTJlZDg1NDQuLmI2MmZkOWY2
MTJmMjkxNTY5ZWI3YmQzM2U1NTNmNDRmZWVkYTAxYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcApAQCAtNDIsOCArNDIsOCBAQAogI2luY2x1ZGUgIkRp
cmVjdEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIkZUTEZvck9TUkVudHJ5SklUQ29kZS5oIgogI2lu
Y2x1ZGUgIkZUTE9TUkVudHJ5LmgiCi0jaW5jbHVkZSAiSG9zdENhbGxSZXR1cm5WYWx1ZS5oIgog
I2luY2x1ZGUgIkdldHRlclNldHRlci5oIgorI2luY2x1ZGUgIkhvc3RDYWxsUmV0dXJuVmFsdWUu
aCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUg
IkpJVEV4Y2VwdGlvbnMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5l
cmF0ZS1ieXRlY29kZS1maWxlcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0ZS1ieXRl
Y29kZS1maWxlcwppbmRleCA1NjY2YTNmOTI0YzExOWIyMTZkM2ZmMGZmZTljNjcyYjdjNzFiYjc5
Li44Zjc5MGVkOWZhODMxNmQzOWRhMTVkM2I3NTg5NDZiZjQ5ZjNiZDNlIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdGUtYnl0ZWNvZGUtZmlsZXMKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2dlbmVyYXRlLWJ5dGVjb2RlLWZpbGVzCkBAIC05NCwxMyArOTQsMTQg
QEAgZGVmIG9wZW5PckV4aXQocGF0aCwgbW9kZSk6CiAgICAgICAgIHByaW50ICJJL08gZXJyb3Ig
b3BlbmluZyB7MH0sICh7MX0pOiB7Mn0iLmZvcm1hdChwYXRoLCBlLmVycm5vLCBlLnN0cmVycm9y
KQogICAgICAgICBleGl0KDEpCiAKLWRlZiBoYXNoRmlsZShmaWxlKToKK2RlZiBoYXNoRmlsZShm
aWxlcyk6CiAgICAgc2hhMSA9IGhhc2hsaWIuc2hhMSgpCi0gICAgZmlsZS5zZWVrKDApCi0gICAg
Zm9yIGxpbmUgaW4gZmlsZToKLSAgICAgICAgc2hhMS51cGRhdGUobGluZSkKKyAgICBmb3IgZmls
ZSBpbiBmaWxlczoKKyAgICAgICAgZmlsZS5zZWVrKDApCisgICAgICAgIGZvciBsaW5lIGluIGZp
bGU6CisgICAgICAgICAgICBzaGExLnVwZGF0ZShsaW5lKQogCi0gICAgZmlsZS5zZWVrKDApCisg
ICAgICAgIGZpbGUuc2VlaygwKQogCiAgICAgcmV0dXJuIHNoYTEuaGV4ZGlnZXN0KCkKIApAQCAt
MTE1LDcgKzExNiw4IEBAIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAKICAgICBieXRlY29k
ZUpTT05GaWxlID0gYXJnc1swXQogICAgIGJ5dGVjb2RlRmlsZSA9IG9wZW5PckV4aXQoYnl0ZWNv
ZGVKU09ORmlsZSwgInJiIikKLSAgICBzaGExSGFzaCA9IGhhc2hGaWxlKGJ5dGVjb2RlRmlsZSkK
KyAgICBnZW5lcmF0b3JGaWxlID0gb3Blbk9yRXhpdChfX2ZpbGVfXywgInJiIikKKyAgICBzaGEx
SGFzaCA9IGhhc2hGaWxlKFtieXRlY29kZUZpbGUsIGdlbmVyYXRvckZpbGVdKQogCiAgICAgaEZp
bGVIYXNoU3RyaW5nID0gIi8vIFNIQTFIYXNoOiB7MH1cbiIuZm9ybWF0KHNoYTFIYXNoKQogICAg
IGFzbUZpbGVIYXNoU3RyaW5nID0gIiMgU0hBMUhhc2g6IHswfVxuIi5mb3JtYXQoc2hhMUhhc2gp
CkBAIC0xODcsNiArMTg5LDcgQEAgaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgICAgICAg
ICAgICAgICBkZWZhdWx0TGVuZ3RoID0gc2VjdGlvblsiZGVmYXVsdExlbmd0aCJdCiAKICAgICAg
ICAgICAgIGJ5dGVjb2RlTnVtID0gMAorICAgICAgICAgICAgbWF4TGVuZ3RoID0gMAogICAgICAg
ICAgICAgZm9yIGJ5dGVjb2RlIGluIHNlY3Rpb25bImJ5dGVjb2RlcyJdOgogICAgICAgICAgICAg
ICAgIGlmIG5vdCBmaXJzdE1hY3JvOgogICAgICAgICAgICAgICAgICAgICBieXRlY29kZUhGaWxl
LndyaXRlKCIgXFxcbiIpCkBAIC0xOTQsNiArMTk3LDcgQEAgaWYgX19uYW1lX18gPT0gIl9fbWFp
bl9fIjoKICAgICAgICAgICAgICAgICBsZW5ndGggPSBkZWZhdWx0TGVuZ3RoCiAgICAgICAgICAg
ICAgICAgaWYgImxlbmd0aCIgaW4gYnl0ZWNvZGU6CiAgICAgICAgICAgICAgICAgICAgIGxlbmd0
aCA9IGJ5dGVjb2RlWyJsZW5ndGgiXQorICAgICAgICAgICAgICAgICAgICBtYXhMZW5ndGggPSBt
YXgoW2xlbmd0aCwgbWF4TGVuZ3RoXSkKIAogICAgICAgICAgICAgICAgIGJ5dGVjb2RlSEZpbGUu
d3JpdGUoIiAgICBtYWNybyh7MH0sIHsxfSkiLmZvcm1hdChieXRlY29kZVsibmFtZSJdLCBsZW5n
dGgpKQogICAgICAgICAgICAgICAgIGZpcnN0TWFjcm8gPSBGYWxzZQpAQCAtMjAxLDYgKzIwNSw3
IEBAIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAKICAgICAgICAgICAgIGJ5dGVjb2RlSEZp
bGUud3JpdGUoIlxuXG4iKQogICAgICAgICAgICAgYnl0ZWNvZGVIRmlsZS53cml0ZSgiI2RlZmlu
ZSBOVU1CRVJfT0ZfezB9X0lEUyB7MX1cblxuIi5mb3JtYXQoc2VjdGlvblsibWFjcm9OYW1lQ29t
cG9uZW50Il0sIGJ5dGVjb2RlTnVtKSkKKyAgICAgICAgICAgIGJ5dGVjb2RlSEZpbGUud3JpdGUo
IiNkZWZpbmUgTUFYX09QQ09ERV9MRU5HVEhfT0ZfezB9IHsxfVxuXG4iLmZvcm1hdChzZWN0aW9u
WyJtYWNyb05hbWVDb21wb25lbnQiXSwgbWF4TGVuZ3RoKSkKIAogICAgICAgICBpZiBpbml0QVNN
RmlsZU5hbWUgYW5kIHNlY3Rpb25bJ2VtaXRJbkFTTUZpbGUnXToKICAgICAgICAgICAgIHByZWZp
eCA9ICIiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50
ZXJwcmV0ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJl
dGVyLmNwcAppbmRleCBjMDZmYzc0MmY0NmY1ZmQ3YWE5OThjMWM3ZTRiMDQ3YTBmNzQyM2EyLi41
NjcwNzJhNGFlNDY3MGVmNzEzODg3ZDQxOTJjNjY0YjA2YzlkY2Q3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKQEAgLTYwOSw3ICs2
MDksNyBAQCBKU1N0cmluZyogSW50ZXJwcmV0ZXI6OnN0YWNrVHJhY2VBc1N0cmluZyhWTSYgdm0s
IGNvbnN0IFZlY3RvcjxTdGFja0ZyYW1lPiYgc3RhYwogICAgIHJldHVybiBqc1N0cmluZygmdm0s
IGJ1aWxkZXIudG9TdHJpbmcoKSk7CiB9CiAKLUFMV0FZU19JTkxJTkUgc3RhdGljIEhhbmRsZXJJ
bmZvKiBmaW5kRXhjZXB0aW9uSGFuZGxlcihTdGFja1Zpc2l0b3ImIHZpc2l0b3IsIENvZGVCbG9j
ayogY29kZUJsb2NrLCBDb2RlQmxvY2s6OlJlcXVpcmVkSGFuZGxlciByZXF1aXJlZEhhbmRsZXIp
CitBTFdBWVNfSU5MSU5FIHN0YXRpYyBIYW5kbGVySW5mbyogZmluZEV4Y2VwdGlvbkhhbmRsZXIo
U3RhY2tWaXNpdG9yJiB2aXNpdG9yLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgUmVxdWlyZWRIYW5k
bGVyIHJlcXVpcmVkSGFuZGxlcikKIHsKICAgICBBU1NFUlQoY29kZUJsb2NrKTsKICNpZiBFTkFC
TEUoREZHX0pJVCkKQEAgLTY0Myw3ICs2NDMsNyBAQCBjbGFzcyBHZXRDYXRjaEhhbmRsZXJGdW5j
dG9yIHsKICAgICAgICAgaWYgKCFjb2RlQmxvY2spCiAgICAgICAgICAgICByZXR1cm4gU3RhY2tW
aXNpdG9yOjpDb250aW51ZTsKIAotICAgICAgICBtX2hhbmRsZXIgPSBmaW5kRXhjZXB0aW9uSGFu
ZGxlcih2aXNpdG9yLCBjb2RlQmxvY2ssIENvZGVCbG9jazo6UmVxdWlyZWRIYW5kbGVyOjpDYXRj
aEhhbmRsZXIpOworICAgICAgICBtX2hhbmRsZXIgPSBmaW5kRXhjZXB0aW9uSGFuZGxlcih2aXNp
dG9yLCBjb2RlQmxvY2ssIFJlcXVpcmVkSGFuZGxlcjo6Q2F0Y2hIYW5kbGVyKTsKICAgICAgICAg
aWYgKG1faGFuZGxlcikKICAgICAgICAgICAgIHJldHVybiBTdGFja1Zpc2l0b3I6OkRvbmU7CiAK
QEAgLTY4NSw3ICs2ODUsNyBAQCBjbGFzcyBVbndpbmRGdW5jdG9yIHsKICAgICAgICAgbV9oYW5k
bGVyID0gbnVsbHB0cjsKICAgICAgICAgaWYgKCFtX2lzVGVybWluYXRpb24pIHsKICAgICAgICAg
ICAgIGlmIChtX2NvZGVCbG9jayAmJiAhaXNXZWJBc3NlbWJseUV4ZWN1dGFibGUobV9jb2RlQmxv
Y2stPm93bmVyRXhlY3V0YWJsZSgpKSkKLSAgICAgICAgICAgICAgICBtX2hhbmRsZXIgPSBmaW5k
RXhjZXB0aW9uSGFuZGxlcih2aXNpdG9yLCBtX2NvZGVCbG9jaywgQ29kZUJsb2NrOjpSZXF1aXJl
ZEhhbmRsZXI6OkFueUhhbmRsZXIpOworICAgICAgICAgICAgICAgIG1faGFuZGxlciA9IGZpbmRF
eGNlcHRpb25IYW5kbGVyKHZpc2l0b3IsIG1fY29kZUJsb2NrLCBSZXF1aXJlZEhhbmRsZXI6OkFu
eUhhbmRsZXIpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKG1faGFuZGxlcikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgKaW5kZXggNzljN2U1
MzAxYmE4Mzk2YmMwMmRjMjQ1ZTA4MWM3ZjdhMzczOGU2Yy4uM2RmMDA2Nzc2ZjYxYTRiNWI0Yjdj
MjQ4ZTc1Y2FiMWE4YzMwOTMwOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
dGVycHJldGVyL0ludGVycHJldGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL0ludGVycHJldGVyLmgKQEAgLTY1LDYgKzY1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgc3RydWN0IEhhbmRsZXJJbmZvOwogICAgIHN0cnVjdCBJbnN0cnVjdGlvbjsKICAgICBzdHJ1
Y3QgUHJvdG9DYWxsRnJhbWU7CisgICAgc3RydWN0IFVubGlua2VkSW5zdHJ1Y3Rpb247CiAKICAg
ICBlbnVtIFVud2luZFN0YXJ0IHsgVW53aW5kRnJvbUN1cnJlbnRGcmFtZSwgVW53aW5kRnJvbUNh
bGxlckZyYW1lIH07CiAKQEAgLTIwNyw3ICsyMDgsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgICAgICByZXR1cm4gb3Bjb2RlOwogI2VuZGlmCiAgICAgICAgIH0KLSAgICAgICAgCisKKyAg
ICAgICAgT3Bjb2RlSUQgZ2V0T3Bjb2RlSUQoY29uc3QgSW5zdHJ1Y3Rpb24mKTsKKyAgICAgICAg
T3Bjb2RlSUQgZ2V0T3Bjb2RlSUQoY29uc3QgVW5saW5rZWRJbnN0cnVjdGlvbiYpOworCiAgICAg
ICAgIGJvb2wgaXNPcGNvZGUoT3Bjb2RlKTsKIAogICAgICAgICBKU1ZhbHVlIGV4ZWN1dGUoUHJv
Z3JhbUV4ZWN1dGFibGUqLCBDYWxsRnJhbWUqLCBKU09iamVjdCogdGhpc09iaik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXJJbmxpbmVz
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXJJbmxpbmVz
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uODZkMDcxNDhhNTJlNjVlMzc1Zjk3ZTZlYmI5MWFkYmUxZGQ0NTYwZAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRl
cnByZXRlcklubGluZXMuaApAQCAtMCwwICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE2IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJJ
bnN0cnVjdGlvbi5oIgorI2luY2x1ZGUgIkludGVycHJldGVyLmgiCisjaW5jbHVkZSAiVW5saW5r
ZWRDb2RlQmxvY2suaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2lubGluZSBPcGNvZGVJRCBJbnRl
cnByZXRlcjo6Z2V0T3Bjb2RlSUQoY29uc3QgSW5zdHJ1Y3Rpb24mIGluc3RydWN0aW9uKQorewor
ICAgIHJldHVybiBnZXRPcGNvZGVJRChpbnN0cnVjdGlvbi51Lm9wY29kZSk7Cit9CisKK2lubGlu
ZSBPcGNvZGVJRCBJbnRlcnByZXRlcjo6Z2V0T3Bjb2RlSUQoY29uc3QgVW5saW5rZWRJbnN0cnVj
dGlvbiYgaW5zdHJ1Y3Rpb24pCit7CisgICAgcmV0dXJuIGluc3RydWN0aW9uLnUub3Bjb2RlOwor
fQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAppbmRleCBi
MDBkZmFjOGMxNWM1NDdkMjdmYzY2N2Y1YzQ1OTBlZDM5OWRlZTQwLi4xMjQwNWY3ZTUwNGFiMzg5
M2RkOTdkN2E5MjkxM2IwOTVhMTE1OTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCkBA
IC0yMzUsOCArMjM1LDYgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAg
ICAgICBERUZJTkVfT1Aob3BfZ2V0X3Jlc3RfbGVuZ3RoKQogICAgICAgICBERUZJTkVfT1Aob3Bf
Y2hlY2tfdGR6KQogICAgICAgICBERUZJTkVfT1Aob3BfYXNzZXJ0KQotICAgICAgICBERUZJTkVf
T1Aob3Bfc2F2ZSkKLSAgICAgICAgREVGSU5FX09QKG9wX3Jlc3VtZSkKICAgICAgICAgREVGSU5F
X09QKG9wX2RlYnVnKQogICAgICAgICBERUZJTkVfT1Aob3BfZGVsX2J5X2lkKQogICAgICAgICBE
RUZJTkVfT1Aob3BfZGVsX2J5X3ZhbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCmluZGV4IGJiOTdk
YzM1YmRmYzAzMzk5YWEwNTEzYTljYTczNTVkMDgzMWM2MGQuLjUxZmNmNjBiOTlkNDBiMGU1M2Ri
Y2QyMjNjNTY5MjAyNWYxNGVjZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaApAQCAtNDk3LDgg
KzQ5Nyw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X3Jlc3Rf
bGVuZ3RoKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9jaGVja190ZHooSW5z
dHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2Fzc2VydChJbnN0cnVjdGlvbiopOwot
ICAgICAgICB2b2lkIGVtaXRfb3Bfc2F2ZShJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVt
aXRfb3BfcmVzdW1lKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9kZWJ1ZyhJ
bnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZGVsX2J5X2lkKEluc3RydWN0aW9u
Kik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9kZWxfYnlfdmFsKEluc3RydWN0aW9uKik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAppbmRleCA3ZjdjNzQ1M2JkM2QyZDUw
ZTE4MDE4M2YyOTczMTE1ZjExOWQ4NTJmLi4yZGJlODZjNjI0YmM4N2ViZjcwYjgwMWUwYTJjY2Nl
ZjY1MTViYTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29k
ZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKQEAg
LTE0OTIsMTggKzE0OTIsNiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfcmVzdF9sZW5ndGgoSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICNlbmRpZgogfQogCi12b2lkIEpJVDo6ZW1p
dF9vcF9zYXZlKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCi17Ci0gICAgSklUU2xv
d1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0
aF9zYXZlKTsKLSAgICBzbG93UGF0aENhbGwuY2FsbCgpOwotfQotCi12b2lkIEpJVDo6ZW1pdF9v
cF9yZXN1bWUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKLXsKLSAgICBKSVRTbG93
UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRo
X3Jlc3VtZSk7Ci0gICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKLX0KLQogfSAvLyBuYW1lc3BhY2Ug
SlNDCiAKICNlbmRpZiAvLyBFTkFCTEUoSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCmluZGV4IDE0OTE4YjY1NWQ1Y2ZhMjJi
ODYxNThlYjJlZWFhZjA4NzQ5NjU2YTcuLjYwNGNlZTQ5MDlhZjQxMWYzZjVkYTcwMWVhOTRiZDVi
Y2Y5OGU4MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyLmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlci5hc20KQEAgLTE3MTAsMTUgKzE3MTAsMTEgQEAgX2xsaW50X29wX2Fzc2Vy
dDoKIAogCiBfbGxpbnRfb3Bfc2F2ZToKLSAgICB0cmFjZUV4ZWN1dGlvbigpCi0gICAgY2FsbE9w
Y29kZVNsb3dQYXRoKF9zbG93X3BhdGhfc2F2ZSkKLSAgICBkaXNwYXRjaCg0KQorICAgIG5vdFN1
cHBvcnRlZCgpCiAKIAogX2xsaW50X29wX3Jlc3VtZToKLSAgICB0cmFjZUV4ZWN1dGlvbigpCi0g
ICAgY2FsbE9wY29kZVNsb3dQYXRoKF9zbG93X3BhdGhfcmVzdW1lKQotICAgIGRpc3BhdGNoKDMp
CisgICAgbm90U3VwcG9ydGVkKCkKIAogCiBfbGxpbnRfb3BfY3JlYXRlX2xleGljYWxfZW52aXJv
bm1lbnQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKaW5kZXggMTI0NWY1
NDgzNzI3OGJiNThiMjYxMzcxMjRkNmFmMTlhMzlhOWU5YS4uOWY4NjZjYThjNDYwNDI0ZTYzNmFh
NjUwMWEzYjlmYzM5ZjYzMjBhYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9QYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2Vy
LmNwcApAQCAtMjYwLDcgKzI2MCw3IEBAIFN0cmluZyBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJ
bm5lcihjb25zdCBJZGVudGlmaWVyJiBjYWxsZWVOYW1lLCBTb3VyY2VQYXJzZU1vCiAgICAgaWYg
KG1fbGV4ZXItPmlzUmVwYXJzaW5nRnVuY3Rpb24oKSkgewogICAgICAgICBQYXJzZXJGdW5jdGlv
bkluZm88QVNUQnVpbGRlcj4gZnVuY3Rpb25JbmZvOwogICAgICAgICBpZiAocGFyc2VNb2RlID09
IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yQm9keU1vZGUpCi0gICAgICAgICAgICBtX3BhcmFt
ZXRlcnMgPSBjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKGNvbnRleHQpOworICAgICAgICAgICAg
bV9wYXJhbWV0ZXJzID0gY3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhjb250ZXh0LCBmdW5jdGlv
bkluZm8ucGFyYW1ldGVyQ291bnQpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBtX3BhcmFt
ZXRlcnMgPSBwYXJzZUZ1bmN0aW9uUGFyYW1ldGVycyhjb250ZXh0LCBwYXJzZU1vZGUsIGZ1bmN0
aW9uSW5mbyk7CiAKQEAgLTUxMiwxMCArNTEyLDkgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWls
ZGVyPiBUcmVlU291cmNlRWxlbWVudHMgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlR2VuZXJhdG8K
IAogICAgIFBhcnNlckZ1bmN0aW9uSW5mbzxUcmVlQnVpbGRlcj4gaW5mbzsKICAgICBpbmZvLm5h
bWUgPSAmbV92bS0+cHJvcGVydHlOYW1lcy0+bnVsbElkZW50aWZpZXI7Ci0gICAgY3JlYXRlR2Vu
ZXJhdG9yUGFyYW1ldGVycyhjb250ZXh0KTsKKyAgICBjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJz
KGNvbnRleHQsIGluZm8ucGFyYW1ldGVyQ291bnQpOwogICAgIGluZm8uc3RhcnRPZmZzZXQgPSBw
YXJhbWV0ZXJzU3RhcnQ7CiAgICAgaW5mby5zdGFydExpbmUgPSB0b2tlbkxpbmUoKTsKLSAgICBp
bmZvLnBhcmFtZXRlckNvdW50ID0gNDsgLy8gZ2VuZXJhdG9yLCBzdGF0ZSwgdmFsdWUsIHJlc3Vt
ZSBtb2RlCiAKICAgICB7CiAgICAgICAgIEF1dG9Qb3BTY29wZVJlZiBnZW5lcmF0b3JCb2R5U2Nv
cGUodGhpcywgcHVzaFNjb3BlKCkpOwpAQCAtMTg5OSwzMiArMTg5OCwzMCBAQCB0ZW1wbGF0ZSA8
dHlwZW5hbWUgTGV4ZXJUeXBlPiB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXIsIGNsYXNzIEZ1
bmN0aW9uSW5mb1R5cAogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgotdGVtcGxh
dGUgPGNsYXNzIFRyZWVCdWlsZGVyPiB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6Rm9ybWFsUGFyYW1l
dGVyTGlzdCBQYXJzZXI8TGV4ZXJUeXBlPjo6Y3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhUcmVl
QnVpbGRlciYgY29udGV4dCkKK3RlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gdHlwZW5hbWUg
VHJlZUJ1aWxkZXI6OkZvcm1hbFBhcmFtZXRlckxpc3QgUGFyc2VyPExleGVyVHlwZT46OmNyZWF0
ZUdlbmVyYXRvclBhcmFtZXRlcnMoVHJlZUJ1aWxkZXImIGNvbnRleHQsIHVuc2lnbmVkJiBwYXJh
bWV0ZXJDb3VudCkKIHsKICAgICBhdXRvIHBhcmFtZXRlcnMgPSBjb250ZXh0LmNyZWF0ZUZvcm1h
bFBhcmFtZXRlckxpc3QoKTsKIAogICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tlbkxv
Y2F0aW9uKCkpOwogICAgIEpTVGV4dFBvc2l0aW9uIHBvc2l0aW9uID0gdG9rZW5TdGFydFBvc2l0
aW9uKCk7CiAKLSAgICAvLyBAZ2VuZXJhdG9yCi0gICAgZGVjbGFyZVBhcmFtZXRlcigmbV92bS0+
cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yUHJpdmF0ZU5hbWUoKSk7Ci0g
ICAgYXV0byBnZW5lcmF0b3IgPSBjb250ZXh0LmNyZWF0ZUJpbmRpbmdMb2NhdGlvbihsb2NhdGlv
biwgbV92bS0+cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yUHJpdmF0ZU5h
bWUoKSwgcG9zaXRpb24sIHBvc2l0aW9uLCBBc3NpZ25tZW50Q29udGV4dDo6RGVjbGFyYXRpb25T
dGF0ZW1lbnQpOwotICAgIGNvbnRleHQuYXBwZW5kUGFyYW1ldGVyKHBhcmFtZXRlcnMsIGdlbmVy
YXRvciwgMCk7CisgICAgYXV0byBhZGRQYXJhbWV0ZXIgPSBbJl0oY29uc3QgSWRlbnRpZmllciYg
bmFtZSkgeworICAgICAgICBkZWNsYXJlUGFyYW1ldGVyKCZuYW1lKTsKKyAgICAgICAgYXV0byBi
aW5kaW5nID0gY29udGV4dC5jcmVhdGVCaW5kaW5nTG9jYXRpb24obG9jYXRpb24sIG5hbWUsIHBv
c2l0aW9uLCBwb3NpdGlvbiwgQXNzaWdubWVudENvbnRleHQ6OkRlY2xhcmF0aW9uU3RhdGVtZW50
KTsKKyAgICAgICAgY29udGV4dC5hcHBlbmRQYXJhbWV0ZXIocGFyYW1ldGVycywgYmluZGluZywg
MCk7CisgICAgICAgICsrcGFyYW1ldGVyQ291bnQ7CisgICAgfTsKIAorICAgIC8vIEBnZW5lcmF0
b3IKKyAgICBhZGRQYXJhbWV0ZXIobV92bS0+cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCku
Z2VuZXJhdG9yUHJpdmF0ZU5hbWUoKSk7CiAgICAgLy8gQGdlbmVyYXRvclN0YXRlCi0gICAgZGVj
bGFyZVBhcmFtZXRlcigmbV92bS0+cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZ2VuZXJh
dG9yU3RhdGVQcml2YXRlTmFtZSgpKTsKLSAgICBhdXRvIGdlbmVyYXRvclN0YXRlID0gY29udGV4
dC5jcmVhdGVCaW5kaW5nTG9jYXRpb24obG9jYXRpb24sIG1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1
aWx0aW5OYW1lcygpLmdlbmVyYXRvclN0YXRlUHJpdmF0ZU5hbWUoKSwgcG9zaXRpb24sIHBvc2l0
aW9uLCBBc3NpZ25tZW50Q29udGV4dDo6RGVjbGFyYXRpb25TdGF0ZW1lbnQpOwotICAgIGNvbnRl
eHQuYXBwZW5kUGFyYW1ldGVyKHBhcmFtZXRlcnMsIGdlbmVyYXRvclN0YXRlLCAwKTsKLQorICAg
IGFkZFBhcmFtZXRlcihtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZW5lcmF0
b3JTdGF0ZVByaXZhdGVOYW1lKCkpOwogICAgIC8vIEBnZW5lcmF0b3JWYWx1ZQotICAgIGRlY2xh
cmVQYXJhbWV0ZXIoJm1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRv
clZhbHVlUHJpdmF0ZU5hbWUoKSk7Ci0gICAgYXV0byBnZW5lcmF0b3JWYWx1ZSA9IGNvbnRleHQu
Y3JlYXRlQmluZGluZ0xvY2F0aW9uKGxvY2F0aW9uLCBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5idWls
dGluTmFtZXMoKS5nZW5lcmF0b3JWYWx1ZVByaXZhdGVOYW1lKCksIHBvc2l0aW9uLCBwb3NpdGlv
biwgQXNzaWdubWVudENvbnRleHQ6OkRlY2xhcmF0aW9uU3RhdGVtZW50KTsKLSAgICBjb250ZXh0
LmFwcGVuZFBhcmFtZXRlcihwYXJhbWV0ZXJzLCBnZW5lcmF0b3JWYWx1ZSwgMCk7Ci0KKyAgICBh
ZGRQYXJhbWV0ZXIobV92bS0+cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9y
VmFsdWVQcml2YXRlTmFtZSgpKTsKICAgICAvLyBAZ2VuZXJhdG9yUmVzdW1lTW9kZQotICAgIGRl
Y2xhcmVQYXJhbWV0ZXIoJm1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdlbmVy
YXRvclJlc3VtZU1vZGVQcml2YXRlTmFtZSgpKTsKLSAgICBhdXRvIGdlbmVyYXRvclJlc3VtZU1v
ZGUgPSBjb250ZXh0LmNyZWF0ZUJpbmRpbmdMb2NhdGlvbihsb2NhdGlvbiwgbV92bS0+cHJvcGVy
dHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yUmVzdW1lTW9kZVByaXZhdGVOYW1lKCks
IHBvc2l0aW9uLCBwb3NpdGlvbiwgQXNzaWdubWVudENvbnRleHQ6OkRlY2xhcmF0aW9uU3RhdGVt
ZW50KTsKLSAgICBjb250ZXh0LmFwcGVuZFBhcmFtZXRlcihwYXJhbWV0ZXJzLCBnZW5lcmF0b3JS
ZXN1bWVNb2RlLCAwKTsKKyAgICBhZGRQYXJhbWV0ZXIobV92bS0+cHJvcGVydHlOYW1lcy0+YnVp
bHRpbk5hbWVzKCkuZ2VuZXJhdG9yUmVzdW1lTW9kZVByaXZhdGVOYW1lKCkpOworICAgIC8vIEBn
ZW5lcmF0b3JGcmFtZQorICAgIGFkZFBhcmFtZXRlcihtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5idWls
dGluTmFtZXMoKS5nZW5lcmF0b3JGcmFtZVByaXZhdGVOYW1lKCkpOwogCiAgICAgcmV0dXJuIHBh
cmFtZXRlcnM7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Bh
cnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAppbmRleCAxY2Fk
N2M5NTU1YzJlZDk5MzEyOTk1NTVhNWJlNTVhYWIyYjQ3MDllLi4wZmVhZjBhOWM0YmQyZDhlNzk2
MGZkYzdhYjhiZjMzMDIyOWIwNDgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1BhcnNlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2Vy
LmgKQEAgLTE0MjEsNyArMTQyMSw3IEBAIGNsYXNzIFBhcnNlciB7CiAgICAgQUxXQVlTX0lOTElO
RSBib29sIGlzQXJyb3dGdW5jdGlvblBhcmFtZXRlcnMoKTsKICAgICAKICAgICB0ZW1wbGF0ZSA8
Y2xhc3MgVHJlZUJ1aWxkZXIsIGNsYXNzIEZ1bmN0aW9uSW5mb1R5cGU+IE5FVkVSX0lOTElORSB0
eXBlbmFtZSBUcmVlQnVpbGRlcjo6Rm9ybWFsUGFyYW1ldGVyTGlzdCBwYXJzZUZ1bmN0aW9uUGFy
YW1ldGVycyhUcmVlQnVpbGRlciYsIFNvdXJjZVBhcnNlTW9kZSwgRnVuY3Rpb25JbmZvVHlwZSYp
OwotICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gTkVWRVJfSU5MSU5FIHR5cGVuYW1l
IFRyZWVCdWlsZGVyOjpGb3JtYWxQYXJhbWV0ZXJMaXN0IGNyZWF0ZUdlbmVyYXRvclBhcmFtZXRl
cnMoVHJlZUJ1aWxkZXImKTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVS
X0lOTElORSB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6Rm9ybWFsUGFyYW1ldGVyTGlzdCBjcmVhdGVH
ZW5lcmF0b3JQYXJhbWV0ZXJzKFRyZWVCdWlsZGVyJiwgdW5zaWduZWQmIHBhcmFtZXRlckNvdW50
KTsKIAogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gTkVWRVJfSU5MSU5FIFRyZWVD
bGFzc0V4cHJlc3Npb24gcGFyc2VDbGFzcyhUcmVlQnVpbGRlciYsIEZ1bmN0aW9uUmVxdWlyZW1l
bnRzLCBQYXJzZXJDbGFzc0luZm88VHJlZUJ1aWxkZXI+Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCmluZGV4IGE5Yjc1NWU2Yzlh
ZTliOThhNjIyOTM1NDZlZTU3Y2E4MWVjOWMzMmMuLjJlODY4ZGNiMmQ3MWZlN2NmMjhlOTUwZjA1
Yzc1OGJhODA1Y2MzMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbW1vblNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29tbW9uU2xvd1BhdGhzLmNwcApAQCAtMzcsNyArMzcsNiBAQAogI2luY2x1ZGUgIkVycm9yLmgi
CiAjaW5jbHVkZSAiRXJyb3JIYW5kbGluZ1Njb3BlLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uRnV6
ei5oIgotI2luY2x1ZGUgIkdlbmVyYXRvckZyYW1lLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVy
LmgiCiAjaW5jbHVkZSAiSG9zdENhbGxSZXR1cm5WYWx1ZS5oIgogI2luY2x1ZGUgIkludGVycHJl
dGVyLmgiCkBAIC03NTMsMzggKzc1Miw2IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9hc3Nl
cnQpCiAgICAgRU5EKCk7CiB9CiAKLVNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9zYXZlKQotewot
ICAgIC8vIE9ubHkgc2F2ZSB2YXJpYWJsZXMgYW5kIHRlbXBvcmFyeSByZWdpc3RlcnMuIFRoZSBz
Y29wZSByZWdpc3RlcnMgYXJlIGluY2x1ZGVkIGluIHRoZW0uCi0gICAgLy8gQnV0IHBhcmFtZXRl
cnMgYXJlIG5vdCBpbmNsdWRlZC4gQmVjYXVzZSB0aGUgZ2VuZXJhdG9yIGltcGxlbWVudGF0aW9u
IHJlcGxhY2VzIHRoZSB2YWx1ZXMgb2YgcGFyYW1ldGVycyBvbiBlYWNoIGdlbmVyYXRvci5uZXh0
KCkgY2FsbC4KLSAgICBCRUdJTigpOwotICAgIEpTVmFsdWUgZ2VuZXJhdG9yID0gT1AoMSkuanNW
YWx1ZSgpOwotICAgIEdlbmVyYXRvckZyYW1lKiBmcmFtZSA9IG51bGxwdHI7Ci0gICAgSlNWYWx1
ZSB2YWx1ZSA9IGdlbmVyYXRvci5nZXQoZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLmJ1aWx0
aW5OYW1lcygpLmdlbmVyYXRvckZyYW1lUHJpdmF0ZU5hbWUoKSk7Ci0gICAgaWYgKCF2YWx1ZS5p
c051bGwoKSkKLSAgICAgICAgZnJhbWUgPSBqc0Nhc3Q8R2VuZXJhdG9yRnJhbWUqPih2YWx1ZSk7
Ci0gICAgZWxzZSB7Ci0gICAgICAgIC8vIEZJWE1FOiBPbmNlIEpTR2VuZXJhdG9yIHNwZWNpYWxp
emVkIG9iamVjdCBpcyBpbnRyb2R1Y2VkLCB0aGlzIEdlbmVyYXRvckZyYW1lIHNob3VsZCBiZSBl
bWJlZGVkIGludG8gaXQgdG8gYXZvaWQgYWxsb2NhdGlvbnMuCi0gICAgICAgIC8vIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE1NDUKLSAgICAgICAgZnJhbWUgPSBH
ZW5lcmF0b3JGcmFtZTo6Y3JlYXRlKGV4ZWMtPnZtKCksICBleGVjLT5jb2RlQmxvY2soKS0+bnVt
Q2FsbGVlTG9jYWxzKCkpOwotICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChnZW5lcmF0b3Is
IHRydWUsIFB1dFByb3BlcnR5U2xvdDo6UHV0QnlJZCk7Ci0gICAgICAgIGFzT2JqZWN0KGdlbmVy
YXRvciktPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5wdXQoYXNPYmplY3QoZ2VuZXJhdG9yKSwg
ZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvckZyYW1l
UHJpdmF0ZU5hbWUoKSwgZnJhbWUsIHNsb3QpOwotICAgIH0KLSAgICB1bnNpZ25lZCBsaXZlQ2Fs
bGVlTG9jYWxzSW5kZXggPSBwY1syXS51LnVuc2lnbmVkVmFsdWU7Ci0gICAgZnJhbWUtPnNhdmUo
ZXhlYywgZXhlYy0+Y29kZUJsb2NrKCktPmxpdmVDYWxsZWVMb2NhbHNBdFlpZWxkKGxpdmVDYWxs
ZWVMb2NhbHNJbmRleCkpOwotICAgIEVORCgpOwotfQotCi1TTE9XX1BBVEhfREVDTChzbG93X3Bh
dGhfcmVzdW1lKQotewotICAgIEJFR0lOKCk7Ci0gICAgSlNWYWx1ZSBnZW5lcmF0b3IgPSBPUCgx
KS5qc1ZhbHVlKCk7Ci0gICAgR2VuZXJhdG9yRnJhbWUqIGZyYW1lID0ganNDYXN0PEdlbmVyYXRv
ckZyYW1lKj4oZ2VuZXJhdG9yLmdldChleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuYnVpbHRp
bk5hbWVzKCkuZ2VuZXJhdG9yRnJhbWVQcml2YXRlTmFtZSgpKSk7Ci0gICAgdW5zaWduZWQgbGl2
ZUNhbGxlZUxvY2Fsc0luZGV4ID0gcGNbMl0udS51bnNpZ25lZFZhbHVlOwotICAgIGZyYW1lLT5y
ZXN1bWUoZXhlYywgZXhlYy0+Y29kZUJsb2NrKCktPmxpdmVDYWxsZWVMb2NhbHNBdFlpZWxkKGxp
dmVDYWxsZWVMb2NhbHNJbmRleCkpOwotICAgIEVORCgpOwotfQotCiBTTE9XX1BBVEhfREVDTChz
bG93X3BhdGhfY3JlYXRlX2xleGljYWxfZW52aXJvbm1lbnQpCiB7CiAgICAgQkVHSU4oKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKaW5kZXgg
NjQwMWE2MTRkNTYxMTY2MzU2OWIxOGEwMjcyYjI4YWMzNTI4NmE4Mi4uM2Q5YzE1ZjVhZjBjNzU3
ZGRhMTA1MzM5MTk5MGY1NDYzODg2ODFiNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKQEAgLTI0OCw4ICsyNDgsNiBAQCBTTE9XX1BBVEhf
SElEREVOX0RFQ0woc2xvd19wYXRoX25leHRfZ2VuZXJpY19lbnVtZXJhdG9yX3BuYW1lKTsKIFNM
T1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfdG9faW5kZXhfc3RyaW5nKTsKIFNMT1dfUEFU
SF9ISURERU5fREVDTChzbG93X3BhdGhfcHJvZmlsZV90eXBlX2NsZWFyX2xvZyk7CiBTTE9XX1BB
VEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2Fzc2VydCk7Ci1TTE9XX1BBVEhfSElEREVOX0RFQ0wo
c2xvd19wYXRoX3NhdmUpOwotU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9yZXN1bWUp
OwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9u
bWVudCk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3B1c2hfd2l0aF9zY29wZSk7
CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3Jlc29sdmVfc2NvcGUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJhbWUuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJhbWUuY3BwCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZjZlYTdhMTAwMjU4YzNlY2UwNGRhYWI0M2JkYWE4NTFl
YzhmNzE1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZyYW1lLmNwcAorKysgL2Rldi9u
dWxsCkBAIC0xLDk3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1
enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwot
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0g
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZp
Zy5oIgotI2luY2x1ZGUgIkdlbmVyYXRvckZyYW1lLmgiCi0KLSNpbmNsdWRlICJDb2RlQmxvY2su
aCIKLSNpbmNsdWRlICJIZWFwSXRlcmF0aW9uU2NvcGUuaCIKLSNpbmNsdWRlICJKU0NKU1ZhbHVl
SW5saW5lcy5oIgotI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKLSNpbmNsdWRlICJTbG90Vmlz
aXRvcklubGluZXMuaCIKLSNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCi0KLW5hbWVzcGFj
ZSBKU0MgewotCi1jb25zdCBDbGFzc0luZm8gR2VuZXJhdG9yRnJhbWU6OnNfaW5mbyA9IHsgIkdl
bmVyYXRvckZyYW1lIiwgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShHZW5l
cmF0b3JGcmFtZSkgfTsKLQotR2VuZXJhdG9yRnJhbWU6OkdlbmVyYXRvckZyYW1lKFZNJiB2bSwg
c2l6ZV90IG51bWJlck9mQ2FsbGVlTG9jYWxzKQotICAgIDogQmFzZSh2bSwgdm0uZ2VuZXJhdG9y
RnJhbWVTdHJ1Y3R1cmUuZ2V0KCkpCi0gICAgLCBtX251bWJlck9mQ2FsbGVlTG9jYWxzKG51bWJl
ck9mQ2FsbGVlTG9jYWxzKQotewotfQotCi12b2lkIEdlbmVyYXRvckZyYW1lOjpmaW5pc2hDcmVh
dGlvbihWTSYgdm0pCi17Ci0gICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwotICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgbV9udW1iZXJPZkNhbGxlZUxvY2FsczsgKytpKQotICAgICAgICBs
b2NhbEF0KGkpLmNsZWFyKCk7Ci19Ci0KLVN0cnVjdHVyZSogR2VuZXJhdG9yRnJhbWU6OmNyZWF0
ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUg
cHJvdG90eXBlKQotewotICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2Jq
ZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKENlbGxUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8o
KSk7Ci19Ci0KLUdlbmVyYXRvckZyYW1lKiBHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlKFZNJiB2bSwg
c2l6ZV90IG51bWJlck9mTG9jYWxzKQotewotICAgIEdlbmVyYXRvckZyYW1lKiByZXN1bHQgPQot
ICAgICAgICBuZXcgKAotICAgICAgICAgICAgTm90TnVsbCwKLSAgICAgICAgICAgIGFsbG9jYXRl
Q2VsbDxHZW5lcmF0b3JGcmFtZT4odm0uaGVhcCwgYWxsb2NhdGlvblNpemVGb3JMb2NhbHMobnVt
YmVyT2ZMb2NhbHMpKSkKLSAgICAgICAgR2VuZXJhdG9yRnJhbWUodm0sIG51bWJlck9mTG9jYWxz
KTsKLSAgICByZXN1bHQtPmZpbmlzaENyZWF0aW9uKHZtKTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotCi12b2lkIEdlbmVyYXRvckZyYW1lOjpzYXZlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgRmFz
dEJpdFZlY3RvciYgbGl2ZUNhbGxlZUxvY2FscykKLXsKLSAgICAvLyBPbmx5IHNhdmUgY2FsbGVl
IGxvY2Fscy4KLSAgICAvLyBFdmVyeSB0aW1lIGEgZ2VuZXJhdG9yIGlzIGNhbGxlZCAob3IgcmVz
dW1lZCksIHBhcmFtZXRlcnMgc2hvdWxkIGJlIHJlcGxhY2VkLgotICAgIEFTU0VSVChsaXZlQ2Fs
bGVlTG9jYWxzLm51bUJpdHMoKSA8PSBtX251bWJlck9mQ2FsbGVlTG9jYWxzKTsKLSAgICBsaXZl
Q2FsbGVlTG9jYWxzLmZvckVhY2hTZXRCaXQoWyZdKHNpemVfdCBpbmRleCkgewotICAgICAgICBs
b2NhbEF0KGluZGV4KS5zZXQoZXhlYy0+dm0oKSwgdGhpcywgZXhlYy0+dW5jaGVja2VkUih2aXJ0
dWFsUmVnaXN0ZXJGb3JMb2NhbChpbmRleCkpLmpzVmFsdWUoKSk7Ci0gICAgfSk7Ci19Ci0KLXZv
aWQgR2VuZXJhdG9yRnJhbWU6OnJlc3VtZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEZhc3RCaXRW
ZWN0b3ImIGxpdmVDYWxsZWVMb2NhbHMpCi17Ci0gICAgLy8gT25seSByZXN1bWUgY2FsbGVlIGxv
Y2Fscy4KLSAgICAvLyBFdmVyeSB0aW1lIGEgZ2VuZXJhdG9yIGlzIGNhbGxlZCAob3IgcmVzdW1l
ZCksIHBhcmFtZXRlcnMgc2hvdWxkIGJlIHJlcGxhY2VkLgotICAgIGxpdmVDYWxsZWVMb2NhbHMu
Zm9yRWFjaFNldEJpdChbJl0oc2l6ZV90IGluZGV4KSB7Ci0gICAgICAgIGV4ZWMtPnVuY2hlY2tl
ZFIodmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaW5kZXgpKSA9IGxvY2FsQXQoaW5kZXgpLmdldCgp
OwotICAgICAgICBsb2NhbEF0KGluZGV4KS5jbGVhcigpOwotICAgIH0pOwotfQotCi12b2lkIEdl
bmVyYXRvckZyYW1lOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZp
c2l0b3IpCi17Ci0gICAgR2VuZXJhdG9yRnJhbWUqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8R2VuZXJh
dG9yRnJhbWUqPihjZWxsKTsKLSAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZp
c2l0b3IpOwotICAgIC8vIFNpbmNlIG9ubHkgdHJ1ZSBjZWxsIHBvaW50ZXJzIGFyZSBzdG9yZWQg
YXMgYSBjZWxsLCB3ZSBjYW4gc2FmZWx5IG1hcmsgdGhlbS4KLSAgICB2aXNpdG9yLmFwcGVuZFZh
bHVlcyh0aGlzT2JqZWN0LT5sb2NhbHMoKSwgdGhpc09iamVjdC0+bV9udW1iZXJPZkNhbGxlZUxv
Y2Fscyk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJhbWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0dlbmVyYXRvckZyYW1lLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDNkNTQ1YjE0N2RkNGFiZmIyYmJiOWI1YTcxOTRlOGY3NDg0MWM0OWEuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvR2VuZXJhdG9yRnJhbWUuaAorKysgL2Rldi9udWxsCkBAIC0xLDkwICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwu
Y29tPi4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBHZW5lcmF0b3JGcmFtZV9oCi0jZGVmaW5lIEdlbmVy
YXRvckZyYW1lX2gKLQotI2luY2x1ZGUgIkpTQ2VsbC5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0Qml0
VmVjdG9yLmg+Ci0KLW5hbWVzcGFjZSBKU0MgewotCi1jbGFzcyBHZW5lcmF0b3JGcmFtZSA6IHB1
YmxpYyBKU0NlbGwgewotICAgIGZyaWVuZCBjbGFzcyBKSVQ7Ci0jaWYgRU5BQkxFKERGR19KSVQp
Ci0gICAgZnJpZW5kIGNsYXNzIERGRzo6U3BlY3VsYXRpdmVKSVQ7Ci0gICAgZnJpZW5kIGNsYXNz
IERGRzo6SklUQ29tcGlsZXI7Ci0jZW5kaWYKLSAgICBmcmllbmQgY2xhc3MgVk07Ci1wdWJsaWM6
Ci0gICAgdHlwZWRlZiBKU0NlbGwgQmFzZTsKLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3Ry
dWN0dXJlRmxhZ3MgPSBTdHJ1Y3R1cmVJc0ltbW9ydGFsIHwgQmFzZTo6U3RydWN0dXJlRmxhZ3M7
Ci0KLSAgICBERUNMQVJFX0VYUE9SVF9JTkZPOwotCi0gICAgc3RhdGljIEdlbmVyYXRvckZyYW1l
KiBjcmVhdGUoVk0mLCBzaXplX3QgbnVtYmVyT2ZDYWxsZWVMb2NhbHMpOwotCi0gICAgV3JpdGVC
YXJyaWVyQmFzZTxVbmtub3duPiogbG9jYWxzKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBiaXR3
aXNlX2Nhc3Q8V3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPio+KGJpdHdpc2VfY2FzdDxjaGFyKj4o
dGhpcykgKyBvZmZzZXRPZkxvY2FscygpKTsKLSAgICB9Ci0KLSAgICBXcml0ZUJhcnJpZXJCYXNl
PFVua25vd24+JiBsb2NhbEF0KHNpemVfdCBpbmRleCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChp
bmRleCA8IG1fbnVtYmVyT2ZDYWxsZWVMb2NhbHMpOwotICAgICAgICByZXR1cm4gbG9jYWxzKClb
aW5kZXhdOwotICAgIH0KLQotICAgIHN0YXRpYyBzaXplX3Qgb2Zmc2V0T2ZMb2NhbHMoKQotICAg
IHsKLSAgICAgICAgcmV0dXJuIFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZjxzaXplb2YoV3JpdGVC
YXJyaWVyPFVua25vd24+KT4oc2l6ZW9mKEdlbmVyYXRvckZyYW1lKSk7Ci0gICAgfQotCi0gICAg
c3RhdGljIHNpemVfdCBhbGxvY2F0aW9uU2l6ZUZvckxvY2Fscyh1bnNpZ25lZCBudW1iZXJPZkxv
Y2FscykKLSAgICB7Ci0gICAgICAgIHJldHVybiBvZmZzZXRPZkxvY2FscygpICsgbnVtYmVyT2ZM
b2NhbHMgKiBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KTsKLSAgICB9Ci0KLSAgICBzdGF0
aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFs
dWUgcHJvdG90eXBlKTsKLQotICAgIHZvaWQgc2F2ZShFeGVjU3RhdGUqLCBjb25zdCBGYXN0Qml0
VmVjdG9yJiBsaXZlQ2FsbGVlTG9jYWxzKTsKLSAgICB2b2lkIHJlc3VtZShFeGVjU3RhdGUqLCBj
b25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlQ2FsbGVlTG9jYWxzKTsKLQotcHJpdmF0ZToKLSAgICBH
ZW5lcmF0b3JGcmFtZShWTSYsIHNpemVfdCBudW1iZXJPZkNhbGxlZUxvY2Fscyk7Ci0KLSAgICBz
aXplX3QgbV9udW1iZXJPZkNhbGxlZUxvY2FsczsKLQotICAgIGZyaWVuZCBjbGFzcyBMTEludE9m
ZnNldHNFeHRyYWN0b3I7Ci0KLSAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7Ci0KLXByb3Rl
Y3RlZDoKLSAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9y
Jik7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBKU0MKLQotI2VuZGlmIC8vIEdlbmVyYXRvckZyYW1l
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJhdG9y
RnVuY3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJhdG9yRnVu
Y3Rpb24uaAppbmRleCAzNmY2MWM1ZjIwZjU2YmVmZDZjNTU3ODQyYjE5ZTM5YjE5YTNhOTE5Li5h
MWNiYWQ5NDZkYzU2ODI5ZWQxYTIxNTU3OTBiNDQwYThkZjQzMDA0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyYXRvckZ1bmN0aW9uLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0b3JGdW5jdGlvbi5oCkBAIC01NSw2
ICs1NSwxNiBAQCBjbGFzcyBKU0dlbmVyYXRvckZ1bmN0aW9uIDogcHVibGljIEpTRnVuY3Rpb24g
ewogICAgICAgICBFeGVjdXRpbmcgPSAtMiwKICAgICB9OwogCisgICAgLy8gW3RoaXNdLCBAZ2Vu
ZXJhdG9yLCBAZ2VuZXJhdG9yU3RhdGUsIEBnZW5lcmF0b3JWYWx1ZSwgQGdlbmVyYXRvclJlc3Vt
ZU1vZGUsIEBnZW5lcmF0b3JGcmFtZS4KKyAgICBlbnVtIGNsYXNzIEdlbmVyYXRvckFyZ3VtZW50
IDogaW50MzJfdCB7CisgICAgICAgIFRoaXNWYWx1ZSA9IDAsCisgICAgICAgIEdlbmVyYXRvciA9
IDEsCisgICAgICAgIFN0YXRlID0gMiwKKyAgICAgICAgVmFsdWUgPSAzLAorICAgICAgICBSZXN1
bWVNb2RlID0gNCwKKyAgICAgICAgRnJhbWUgPSA1LAorICAgIH07CisKICAgICBjb25zdCBzdGF0
aWMgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKIAogICAg
IERFQ0xBUkVfRVhQT1JUX0lORk87CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9WTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5k
ZXggODgxMzFiZjViMzA5MGFiZGFlNGI5OTQ1MWI0MTcxY2I1ZmUyYzQ1Yy4uYzMwMTIyYzVhZjMz
YzgwN2ZlOWE2NWExOGZlNmY4NTQ3MGVkMGE2ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1ZNLmNwcApAQCAtNDYsNyArNDYsNiBAQAogI2luY2x1ZGUgIkZUTFRodW5rcy5oIgogI2luY2x1
ZGUgIkZ1bmN0aW9uQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJHQ0FjdGl2aXR5Q2FsbGJhY2su
aCIKLSNpbmNsdWRlICJHZW5lcmF0b3JGcmFtZS5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5o
IgogI2luY2x1ZGUgIkhlYXAuaCIKICNpbmNsdWRlICJIZWFwSXRlcmF0aW9uU2NvcGUuaCIKQEAg
LTI0MCw3ICsyMzksNiBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUp
CiAgICAgaW5mZXJyZWRUeXBlU3RydWN0dXJlLnNldCgqdGhpcywgSW5mZXJyZWRUeXBlOjpjcmVh
dGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgaW5mZXJyZWRUeXBlVGFibGVT
dHJ1Y3R1cmUuc2V0KCp0aGlzLCBJbmZlcnJlZFR5cGVUYWJsZTo6Y3JlYXRlU3RydWN0dXJlKCp0
aGlzLCAwLCBqc051bGwoKSkpOwogICAgIGZ1bmN0aW9uUmFyZURhdGFTdHJ1Y3R1cmUuc2V0KCp0
aGlzLCBGdW5jdGlvblJhcmVEYXRhOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgp
KSk7Ci0gICAgZ2VuZXJhdG9yRnJhbWVTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBHZW5lcmF0b3JGcmFt
ZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIGV4Y2VwdGlvblN0
cnVjdHVyZS5zZXQoKnRoaXMsIEV4Y2VwdGlvbjo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBq
c051bGwoKSkpOwogICAgIHByb21pc2VEZWZlcnJlZFN0cnVjdHVyZS5zZXQoKnRoaXMsIEpTUHJv
bWlzZURlZmVycmVkOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAg
aW50ZXJuYWxQcm9taXNlRGVmZXJyZWRTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBKU0ludGVybmFsUHJv
bWlzZURlZmVycmVkOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVk0uaAppbmRleCA4N2JkMGUwYTI1NTM4ZThjNWVjMzJhYmU0MDMy
YzQ2OTdlYjFkMDhmLi45MTUwYjUxNTllZWRjYWQxODU2NDVjZGE2YzczMGI0OTBlZDNlNjc0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKQEAgLTMyMCw3ICszMjAsNiBAQCBjbGFzcyBW
TSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxWTT4gewogICAgIFN0cm9uZzxTdHJ1Y3R1
cmU+IGluZmVycmVkVHlwZVN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBpbmZlcnJl
ZFR5cGVUYWJsZVN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBmdW5jdGlvblJhcmVE
YXRhU3RydWN0dXJlOwotICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGdlbmVyYXRvckZyYW1lU3RydWN0
dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGV4Y2VwdGlvblN0cnVjdHVyZTsKICAgICBTdHJv
bmc8U3RydWN0dXJlPiBwcm9taXNlRGVmZXJyZWRTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVj
dHVyZT4gaW50ZXJuYWxQcm9taXNlRGVmZXJyZWRTdHJ1Y3R1cmU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dURi9XVEYueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAzMjUzNmJmM2JkYTliNDM4MDMwYWQ2NWJlMjQ1
M2ZhOGM5NTIwOWRmLi5iN2RmODNlZTA4MzBkODQ3MWM0YjBmYmM4YmI2YTRiZGU2YWU4ZjVhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTMzNSw2ICszMzUs
OSBAQAogCQlGRTg5MjVCMDFEMDBEQUVDMDA0NjkwN0UgLyogSW5kZW50ZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFODkyNUFGMUQwMERBRUMwMDQ2
OTA3RSAvKiBJbmRlbnRlci5oICovOyB9OwogCQlGRURBQ0QzRDE2MzBGODNGMDBDNjk2MzQgLyog
U3RhY2tTdGF0cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGRURBQ0QzQjE2MzBGODNGMDBDNjk2MzQgLyogU3RhY2tTdGF0cy5jcHAgKi87IH07CiAJ
CUZFREFDRDNFMTYzMEY4M0YwMEM2OTYzNCAvKiBTdGFja1N0YXRzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRURBQ0QzQzE2MzBGODNGMDBDNjk2MzQg
LyogU3RhY2tTdGF0cy5oICovOyB9OworCQlDOEIwRTFBMUUwMUE0ODZFQjk1RTBEMTEgLyogSW5k
ZXhTZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMx
MzdFMUQ3REJEODRBQzM4RkFFNEQzNCAvKiBJbmRleFNldC5oICovOyB9OworCQlDOTE2Qjk3NUYw
MkY0RjdFOEI0QUIxMkQgLyogSW5kZXhNYXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDVCNDMzODNBNUQwQjQ2M0M5NDMzRDkzMyAvKiBJbmRleE1hcC5o
ICovOyB9OworCQk0QjI2ODBERDlCOTc0NDAyODk5RUQ1NzIgLyogSW5kZXhlZENvbnRhaW5lckl0
ZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
QzY3QzU0MjU4OTM0OEUyODVCNDk2OTkgLyogSW5kZXhlZENvbnRhaW5lckl0ZXJhdG9yLmggKi87
IH07CiAvKiBFbmQgUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYQ29udGFp
bmVySXRlbVByb3h5IHNlY3Rpb24gKi8KQEAgLTY4Miw2ICs2ODUsOSBAQAogCQlGRTg5MjVBRjFE
MDBEQUVDMDA0NjkwN0UgLyogSW5kZW50ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSW5kZW50ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkVEQUNEM0Ix
NjMwRjgzRjAwQzY5NjM0IC8qIFN0YWNrU3RhdHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gU3RhY2tTdGF0cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUZFREFDRDNDMTYzMEY4M0YwMEM2OTYzNCAvKiBTdGFja1N0YXRzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0YWNrU3RhdHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMzEzN0UxRDdEQkQ4NEFDMzhGQUU0RDM0IC8qIEluZGV4U2V0LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEluZGV4U2V0Lmg7IHBhdGggPSBJbmRleFNldC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QjQzMzgzQTVEMEI0NjNDOTQzM0Q5MzMgLyog
SW5kZXhNYXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSW5kZXhNYXAuaDsg
cGF0aCA9IEluZGV4TWFwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTlDNjdDNTQy
NTg5MzQ4RTI4NUI0OTY5OSAvKiBJbmRleGVkQ29udGFpbmVySXRlcmF0b3IuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSW5kZXhlZENvbnRhaW5lckl0ZXJhdG9yLmg7IHBhdGgg
PSBJbmRleGVkQ29udGFpbmVySXRlcmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IC8qIEVuZCBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYRnJhbWV3
b3Jrc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwpAQCAtMTA0MSw2ICsxMDQ3LDkgQEAKIAkJCQlFNEEw
QUQzODFBOTYyNDU1MDA1MzZERjYgLyogV29ya1F1ZXVlLmggKi8sCiAJCQkJQThBNDczN0ExNTFB
ODI1QjAwNDEyM0ZGIC8qIFdURlRocmVhZERhdGEuY3BwICovLAogCQkJCUE4QTQ3MzdCMTUxQTgy
NUIwMDQxMjNGRiAvKiBXVEZUaHJlYWREYXRhLmggKi8sCisJCQkJMzEzN0UxRDdEQkQ4NEFDMzhG
QUU0RDM0IC8qIEluZGV4U2V0LmggKi8sCisJCQkJNUI0MzM4M0E1RDBCNDYzQzk0MzNEOTMzIC8q
IEluZGV4TWFwLmggKi8sCisJCQkJOUM2N0M1NDI1ODkzNDhFMjg1QjQ5Njk5IC8qIEluZGV4ZWRD
b250YWluZXJJdGVyYXRvci5oICovLAogCQkJKTsKIAkJCXBhdGggPSB3dGY7CiAJCQlzb3VyY2VU
cmVlID0gIjxncm91cD4iOwpAQCAtMTQzOSw2ICsxNDQ4LDkgQEAKIAkJCQlBOEE0NzQ0NjE1MUE4
MjVCMDA0MTIzRkYgLyogV1RGU3RyaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEE0NzQ4NzE1
MUE4MjVCMDA0MTIzRkYgLyogV1RGVGhyZWFkRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0U3
M0UwMjUxOURDQjdBQjAwNTgwRDVDIC8qIFhQQ1NQSS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQzhC
MEUxQTFFMDFBNDg2RUI5NUUwRDExIC8qIEluZGV4U2V0LmggaW4gSGVhZGVycyAqLywKKwkJCQlD
OTE2Qjk3NUYwMkY0RjdFOEI0QUIxMkQgLyogSW5kZXhNYXAuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTRCMjY4MEREOUI5NzQ0MDI4OTlFRDU3MiAvKiBJbmRleGVkQ29udGFpbmVySXRlcmF0b3IuaCBp
biBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Np
bmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQg
Yi9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAppbmRleCA2Y2E4OTNkNWIyNTAyN2QyNzkz
Y2ZjOTYxZTNlYmQ0ZmJlNzY4MjdkLi44Njc5OTllYTkyODZiOTUzZjEzMzcwOWI2ZGU0OTAwNWUw
NGMxNGFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAorKysgYi9T
b3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dApAQCAtNDUsNiArNDUsMTAgQEAgc2V0KFdURl9I
RUFERVJTCiAgICAgSGFzaFRhYmxlLmgKICAgICBIYXNoVHJhaXRzLmgKICAgICBIZXhOdW1iZXIu
aAorICAgIEluZGV4TWFwLmgKKyAgICBJbmRleFNldC5oCisgICAgSW5kZXhTcGFyc2VTZXQuaAor
ICAgIEluZGV4ZWRDb250YWluZXJJdGVyYXRvci5oCiAgICAgSXRlcmF0b3JBZGFwdG9ycy5oCiAg
ICAgSXRlcmF0b3JSYW5nZS5oCiAgICAgTGlzdEhhc2hTZXQuaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvRmFzdEJpdFZlY3Rvci5oIGIvU291cmNlL1dURi93dGYvRmFzdEJpdFZlY3Rvci5o
CmluZGV4IDk4ZmZmNWNmNzM1M2U2YmM2N2RhNWM1NTk0MGNjY2U0ZTRiMTU2ZDAuLmZmMDBiN2I1
NGQ0YTBjZmY0YmVmN2QwMzg1NGRlNmI5MGNlMWRiOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL0Zhc3RCaXRWZWN0b3IuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GYXN0Qml0VmVjdG9yLmgK
QEAgLTIzLDggKzIzLDcgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAKLSNpZm5kZWYgRmFzdEJp
dFZlY3Rvcl9oCi0jZGVmaW5lIEZhc3RCaXRWZWN0b3JfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNs
dWRlIDxzdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgpAQCAtMzYsMTIgKzM1
LDE0IEBAIGNsYXNzIFByaW50U3RyZWFtOwogCiBjbGFzcyBGYXN0Qml0VmVjdG9yIHsKIHB1Ymxp
YzoKLSAgICBGYXN0Qml0VmVjdG9yKCkKLSAgICAgICAgOiBtX2FycmF5KDApCi0gICAgICAgICwg
bV9udW1CaXRzKDApCisgICAgRmFzdEJpdFZlY3RvcigpID0gZGVmYXVsdDsKKworICAgIEZhc3RC
aXRWZWN0b3IoRmFzdEJpdFZlY3RvciYmIG90aGVyKQorICAgICAgICA6IG1fYXJyYXkoc3RkOjpl
eGNoYW5nZShvdGhlci5tX2FycmF5LCBudWxscHRyKSkKKyAgICAgICAgLCBtX251bUJpdHMoc3Rk
OjpleGNoYW5nZShvdGhlci5tX251bUJpdHMsIDApKQogICAgIHsKICAgICB9Ci0gICAgCisKICAg
ICBGYXN0Qml0VmVjdG9yKGNvbnN0IEZhc3RCaXRWZWN0b3ImIG90aGVyKQogICAgICAgICA6IG1f
YXJyYXkoMCkKICAgICAgICAgLCBtX251bUJpdHMoMCkKQEAgLTIwMiwxMyArMjAzLDEwIEBAIGNs
YXNzIEZhc3RCaXRWZWN0b3IgewogICAgIHN0YXRpYyBzaXplX3QgYXJyYXlMZW5ndGgoc2l6ZV90
IG51bUJpdHMpIHsgcmV0dXJuIChudW1CaXRzICsgMzEpID4+IDU7IH0KICAgICBzaXplX3QgYXJy
YXlMZW5ndGgoKSBjb25zdCB7IHJldHVybiBhcnJheUxlbmd0aChtX251bUJpdHMpOyB9CiAgICAg
Ci0gICAgdWludDMyX3QqIG1fYXJyYXk7IC8vIE5vLCB0aGlzIGNhbid0IGJlIGFuIHN0ZDo6dW5p
cXVlX3B0cjx1aW50MzJfdFtdPi4KLSAgICBzaXplX3QgbV9udW1CaXRzOworICAgIHVpbnQzMl90
KiBtX2FycmF5IHsgbnVsbHB0ciB9OyAvLyBObywgdGhpcyBjYW4ndCBiZSBhbiBzdGQ6OnVuaXF1
ZV9wdHI8dWludDMyX3RbXT4uCisgICAgc2l6ZV90IG1fbnVtQml0cyB7IDAgfTsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdURgogCiB1c2luZyBXVEY6OkZhc3RCaXRWZWN0b3I7Ci0KLSNlbmRpZiAv
LyBGYXN0Qml0VmVjdG9yX2gKLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvSW5kZXhNYXAu
aCBiL1NvdXJjZS9XVEYvd3RmL0luZGV4TWFwLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDJkNjEwMTdhNDE1YzQ3
MzkxNmFiODE2NjhjMTZiMDBiZGU1MjQyYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYv
d3RmL0luZGV4TWFwLmgKQEAgLTAsMCArMSw4MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV1RGIHsKKworLy8gVGhpcyBpcyBhIG1hcCBmb3Iga2V5
cyB0aGF0IGhhdmUgYW4gaW5kZXgoKS4gSXQncyBzdXBlciBlZmZpY2llbnQgZm9yIEJhc2ljQmxv
Y2tzLiBJdCdzIG9ubHkKKy8vIGVmZmljaWVudCBmb3IgVmFsdWVzIGlmIHlvdSBkb24ndCBjcmVh
dGUgdG9vIG1hbnkgb2YgdGhlc2UgbWFwcywgc2luY2UgVmFsdWVzIGNhbiBoYXZlIHZlcnkKKy8v
IHNwYXJzZSBpbmRpY2VzIGFuZCB0aGVyZSBhcmUgYSBsb3Qgb2YgVmFsdWVzLgorCit0ZW1wbGF0
ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlPgorY2xhc3MgSW5kZXhNYXAgeworcHVibGlj
OgorICAgIGV4cGxpY2l0IEluZGV4TWFwKHNpemVfdCBzaXplID0gMCkKKyAgICB7CisgICAgICAg
IG1fdmVjdG9yLmZpbGwoVmFsdWUoKSwgc2l6ZSk7CisgICAgfQorCisgICAgdm9pZCByZXNpemUo
c2l6ZV90IHNpemUpCisgICAgeworICAgICAgICBtX3ZlY3Rvci5maWxsKFZhbHVlKCksIHNpemUp
OworICAgIH0KKworICAgIHZvaWQgY2xlYXIoKQorICAgIHsKKyAgICAgICAgbV92ZWN0b3IuZmls
bChWYWx1ZSgpLCBtX3ZlY3Rvci5zaXplKCkpOworICAgIH0KKworICAgIHNpemVfdCBzaXplKCkg
Y29uc3QgeyByZXR1cm4gbV92ZWN0b3Iuc2l6ZSgpOyB9CisKKyAgICBWYWx1ZSYgb3BlcmF0b3Jb
XShzaXplX3QgaW5kZXgpCisgICAgeworICAgICAgICByZXR1cm4gbV92ZWN0b3JbaW5kZXhdOwor
ICAgIH0KKworICAgIGNvbnN0IFZhbHVlJiBvcGVyYXRvcltdKHNpemVfdCBpbmRleCkgY29uc3QK
KyAgICB7CisgICAgICAgIHJldHVybiBtX3ZlY3RvcltpbmRleF07CisgICAgfQorICAgIAorICAg
IFZhbHVlJiBvcGVyYXRvcltdKEtleSoga2V5KQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fdmVj
dG9yW2tleS0+aW5kZXgoKV07CisgICAgfQorICAgIAorICAgIGNvbnN0IFZhbHVlJiBvcGVyYXRv
cltdKEtleSoga2V5KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fdmVjdG9yW2tleS0+
aW5kZXgoKV07CisgICAgfQorCitwcml2YXRlOgorICAgIFZlY3RvcjxWYWx1ZT4gbV92ZWN0b3I7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXVEYKKwordXNpbmcgV1RGOjpJbmRleE1hcDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL0luZGV4U2V0LmggYi9Tb3VyY2UvV1RGL3d0Zi9JbmRleFNl
dC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjYxYmQwNGYyZDE1YWI2Y2QyYTY5Y2M0NDViOGQ3MzZiMjJjMDViNjgK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9JbmRleFNldC5oCkBAIC0wLDAgKzEs
MTYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvQml0VmVjdG9yLmg+CisjaW5jbHVkZSA8
d3RmL0NvbW1hUHJpbnRlci5oPgorCituYW1lc3BhY2UgV1RGIHsKKworLy8gVGhpcyBpcyBhIHNl
dCBmb3IgdGhpbmdzIHRoYXQgaGF2ZSBhbiBpbmRleCgpLiBJdCdzIHN1cGVyIGVmZmljaWVudCBm
b3IgQmFzaWNCbG9ja3MuIEl0J3Mgb25seQorLy8gZWZmaWNpZW50IGZvciBWYWx1ZXMgaWYgeW91
IGRvbid0IGNyZWF0ZSB0b28gbWFueSBvZiB0aGVzZSBzZXRzLCBzaW5jZSBWYWx1ZXMgY2FuIGhh
dmUgdmVyeSBzcGFyc2UKKy8vIGluZGljZXMgYW5kIHRoZXJlIGFyZSBhIGxvdCBvZiBWYWx1ZXMu
CisKKy8vIElmIHlvdSB3YW50IGEgc2V0IG9mIEJhc2ljQmxvY2tzLCB5b3UgZG8gSW5kZXhTZXQ8
QmFzaWNCbG9jaz4uIFNvLCBUID0gQmFzaWNCbG9jay4KK3RlbXBsYXRlPHR5cGVuYW1lIFQ+Citj
bGFzcyBJbmRleFNldCB7CitwdWJsaWM6CisgICAgSW5kZXhTZXQoKQorICAgIHsKKyAgICB9CisK
KyAgICBib29sIGFkZChUKiB2YWx1ZSkKKyAgICB7CisgICAgICAgIHJldHVybiAhbV9zZXQuc2V0
KHZhbHVlLT5pbmRleCgpKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJdGVyYWJs
ZT4KKyAgICBib29sIGFkZEFsbChjb25zdCBJdGVyYWJsZSYgaXRlcmFibGUpCisgICAgeworICAg
ICAgICBib29sIHJlc3VsdCA9IGZhbHNlOworICAgICAgICBmb3IgKFQqIHZhbHVlIDogaXRlcmFi
bGUpCisgICAgICAgICAgICByZXN1bHQgfD0gYWRkKHZhbHVlKTsKKyAgICAgICAgcmV0dXJuIHJl
c3VsdDsKKyAgICB9CisKKyAgICBib29sIHJlbW92ZShUKiB2YWx1ZSkKKyAgICB7CisgICAgICAg
IHJldHVybiBtX3NldC5jbGVhcih2YWx1ZS0+aW5kZXgoKSk7CisgICAgfQorCisgICAgYm9vbCBj
b250YWlucyhUKiB2YWx1ZSkgY29uc3QKKyAgICB7CisgICAgICAgIGlmICghdmFsdWUpCisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBtX3NldC5nZXQodmFsdWUtPmlu
ZGV4KCkpOworICAgIH0KKworICAgIHNpemVfdCBzaXplKCkgY29uc3QKKyAgICB7CisgICAgICAg
IHJldHVybiBtX3NldC5iaXRDb3VudCgpOworICAgIH0KKworICAgIGJvb2wgaXNFbXB0eSgpIGNv
bnN0CisgICAgeworICAgICAgICByZXR1cm4gIXNpemUoKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBDb2xsZWN0aW9uVHlwZT4KKyAgICBjbGFzcyBJdGVyYWJsZSB7CisgICAgcHVi
bGljOgorICAgICAgICBJdGVyYWJsZShjb25zdCBDb2xsZWN0aW9uVHlwZSYgY29sbGVjdGlvbiwg
Y29uc3QgQml0VmVjdG9yJiBzZXQpCisgICAgICAgICAgICA6IG1fY29sbGVjdGlvbihjb2xsZWN0
aW9uKQorICAgICAgICAgICAgLCBtX3NldChzZXQpCisgICAgICAgIHsKKyAgICAgICAgfQorCisg
ICAgICAgIGNsYXNzIGl0ZXJhdG9yIHsKKyAgICAgICAgcHVibGljOgorICAgICAgICAgICAgaXRl
cmF0b3IoKQorICAgICAgICAgICAgICAgIDogbV9jb2xsZWN0aW9uKG51bGxwdHIpCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGl0ZXJhdG9yKGNvbnN0IENvbGxl
Y3Rpb25UeXBlJiBjb2xsZWN0aW9uLCBCaXRWZWN0b3I6Oml0ZXJhdG9yIGl0ZXIpCisgICAgICAg
ICAgICAgICAgOiBtX2NvbGxlY3Rpb24oJmNvbGxlY3Rpb24pCisgICAgICAgICAgICAgICAgLCBt
X2l0ZXIoaXRlcikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
VCogb3BlcmF0b3IqKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gbV9j
b2xsZWN0aW9uLT5hdCgqbV9pdGVyKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaXRl
cmF0b3ImIG9wZXJhdG9yKysoKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICsrbV9p
dGVyOworICAgICAgICAgICAgICAgIHJldHVybiAqdGhpczsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IGl0ZXJhdG9yJiBvdGhlcikgY29uc3QKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gbV9pdGVyID09IG90aGVyLm1faXRl
cjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IGl0
ZXJhdG9yJiBvdGhlcikgY29uc3QKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1
cm4gISgqdGhpcyA9PSBvdGhlcik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgcHJpdmF0ZToK
KyAgICAgICAgICAgIGNvbnN0IENvbGxlY3Rpb25UeXBlKiBtX2NvbGxlY3Rpb247CisgICAgICAg
ICAgICBCaXRWZWN0b3I6Oml0ZXJhdG9yIG1faXRlcjsKKyAgICAgICAgfTsKKworICAgICAgICBp
dGVyYXRvciBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIGl0ZXJhdG9yKG1fY29sbGVjdGlvbiwgbV9z
ZXQuYmVnaW4oKSk7IH0KKyAgICAgICAgaXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gaXRl
cmF0b3IobV9jb2xsZWN0aW9uLCBtX3NldC5lbmQoKSk7IH0KKworICAgIHByaXZhdGU6CisgICAg
ICAgIGNvbnN0IENvbGxlY3Rpb25UeXBlJiBtX2NvbGxlY3Rpb247CisgICAgICAgIGNvbnN0IEJp
dFZlY3RvciYgbV9zZXQ7CisgICAgfTsKKworICAgIC8vIEZvciBiYXNpYyBibG9ja3MsIHlvdSBk
bzoKKyAgICAvLyBpbmRleFNldC52YWx1ZXMocHJvY2VkdXJlKTsKKyAgICAvLworICAgIC8vIEZv
ciB2YWx1ZXMsIHlvdSBkbzoKKyAgICAvLyBpbmRleFNldC52YWx1ZXMocHJvY2VkdXJlLnZhbHVl
cygpKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDb2xsZWN0aW9uVHlwZT4KKyAgICBJdGVyYWJs
ZTxDb2xsZWN0aW9uVHlwZT4gdmFsdWVzKGNvbnN0IENvbGxlY3Rpb25UeXBlJiBjb2xsZWN0aW9u
KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIEl0ZXJhYmxlPENvbGxlY3Rpb25UeXBlPihj
b2xsZWN0aW9uLCBpbmRpY2VzKCkpOworICAgIH0KKworICAgIGNvbnN0IEJpdFZlY3RvciYgaW5k
aWNlcygpIGNvbnN0IHsgcmV0dXJuIG1fc2V0OyB9CisKKyAgICB2b2lkIGR1bXAoUHJpbnRTdHJl
YW0mIG91dCkgY29uc3QKKyAgICB7CisgICAgICAgIENvbW1hUHJpbnRlciBjb21tYTsKKyAgICAg
ICAgZm9yIChzaXplX3QgaW5kZXggOiBpbmRpY2VzKCkpCisgICAgICAgICAgICBvdXQucHJpbnQo
Y29tbWEsIFQ6OmR1bXBQcmVmaXgsIGluZGV4KTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQml0
VmVjdG9yIG1fc2V0OworfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKK3VzaW5nIFdURjo6SW5k
ZXhTZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9JbmRleGVkQ29udGFpbmVySXRlcmF0
b3IuaCBiL1NvdXJjZS9XVEYvd3RmL0luZGV4ZWRDb250YWluZXJJdGVyYXRvci5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjNlOWI5ZTM3YTEyNDdkOTA3YmU4MzBjOWQyMDEyZjc3YTFiNzM3NzEKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9JbmRleGVkQ29udGFpbmVySXRlcmF0b3IuaApAQCAtMCww
ICsxLDgxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgorCituYW1lc3BhY2Ug
V1RGIHsKKwordGVtcGxhdGU8Y2xhc3MgQ29udGFpbmVyPgorY2xhc3MgSW5kZXhlZENvbnRhaW5l
ckl0ZXJhdG9yIHsKK3B1YmxpYzoKKyAgICBJbmRleGVkQ29udGFpbmVySXRlcmF0b3IoKQorICAg
ICAgICA6IG1fY29udGFpbmVyKG51bGxwdHIpCisgICAgICAgICwgbV9pbmRleCgwKQorICAgIHsK
KyAgICB9CisKKyAgICBJbmRleGVkQ29udGFpbmVySXRlcmF0b3IoY29uc3QgQ29udGFpbmVyJiBj
b250YWluZXIsIHVuc2lnbmVkIGluZGV4KQorICAgICAgICA6IG1fY29udGFpbmVyKCZjb250YWlu
ZXIpCisgICAgICAgICwgbV9pbmRleChmaW5kTmV4dChpbmRleCkpCisgICAgeworICAgIH0KKwor
ICAgIGF1dG8gb3BlcmF0b3IqKCkgLT4gdHlwZW5hbWUgc3RkOjpyZXN1bHRfb2Y8ZGVjbHR5cGUo
JkNvbnRhaW5lcjo6YXQpKGNvbnN0IENvbnRhaW5lciwgdW5zaWduZWQpPjo6dHlwZQorICAgIHsK
KyAgICAgICAgcmV0dXJuIG1fY29udGFpbmVyLT5hdChtX2luZGV4KTsKKyAgICB9CisKKyAgICBJ
bmRleGVkQ29udGFpbmVySXRlcmF0b3ImIG9wZXJhdG9yKysoKQorICAgIHsKKyAgICAgICAgbV9p
bmRleCA9IGZpbmROZXh0KG1faW5kZXggKyAxKTsKKyAgICAgICAgcmV0dXJuICp0aGlzOworICAg
IH0KKworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBJbmRleGVkQ29udGFpbmVySXRlcmF0b3Im
IG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fY29udGFpbmVyID09IG90aGVy
Lm1fY29udGFpbmVyKTsKKyAgICAgICAgcmV0dXJuIG1faW5kZXggPT0gb3RoZXIubV9pbmRleDsK
KyAgICB9CisKKyAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgSW5kZXhlZENvbnRhaW5lckl0ZXJh
dG9yJiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVy
KTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgdW5zaWduZWQgZmluZE5leHQodW5zaWduZWQgaW5k
ZXgpCisgICAgeworICAgICAgICB3aGlsZSAoaW5kZXggPCBtX2NvbnRhaW5lci0+c2l6ZSgpICYm
ICFtX2NvbnRhaW5lci0+YXQoaW5kZXgpKQorICAgICAgICAgICAgaW5kZXgrKzsKKyAgICAgICAg
cmV0dXJuIGluZGV4OworICAgIH0KKworICAgIGNvbnN0IENvbnRhaW5lciogbV9jb250YWluZXI7
CisgICAgdW5zaWduZWQgbV9pbmRleDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0t
Z2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCAwZmI1MjUx
OTE3YTdjZTY0NjI0ZWMxMTgyM2I1MTNlNjQ5MWZkMmM2Li44MGU5Yjk0NjQ3Yjg3MmFjMWZlOGE3
ZTYzMjU2ZTgzNGZjMjQyM2VlIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9K
U1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDE2LTA4LTIzICBZdXN1a2UgU3V6
dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtERkddW0ZUTF0gSW1wbGVt
ZW50IEVTNiBHZW5lcmF0b3JzIGluIERGRyAvIEZUTAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUyNzIzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwtYW5kLWFy
cmF5LmpzOiBBZGRlZC4KKyAgICAgICAgKGZpYik6CisgICAgICAgICogc3RyZXNzL2dlbmVyYXRv
ci1maWItZnRsLWFuZC1vYmplY3QuanM6IEFkZGVkLgorICAgICAgICAoZmliKToKKyAgICAgICAg
KiBzdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwtYW5kLXN0cmluZy5qczogQWRkZWQuCisgICAgICAg
IChmaWIpOgorICAgICAgICAqIHN0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC5qczogQWRkZWQuCisg
ICAgICAgIChmaWIpOgorICAgICAgICAqIHN0cmVzcy9nZW5lcmF0b3ItZnJhbWUtZW1wdHkuanM6
IEFkZGVkLgorICAgICAgICAoc2hvdWxkVGhyb3cpOgorICAgICAgICAoc2hvdWxkVGhyb3cuZmli
KToKKyAgICAgICAgKiBzdHJlc3MvZ2VuZXJhdG9yLXJlZHVjZWQtc2F2ZS1wb2ludC1wdXQtdG8t
c2NvcGUuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoZ2VuKToKKyAg
ICAgICAgKiBzdHJlc3MvZ2VuZXJhdG9yLXRyYW5zZmVyLXJlZ2lzdGVyLWJleW9uZC1tdXRpcGxl
LXlpZWxkcy5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgIChnZW4pOgor
CiAyMDE2LTA4LTIyICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgogCiAg
ICAgICAgIFtFUzZdIE1vZHVsZSBzaG91bGQgbm90IGFsbG93IEhUTUwgY29tbWVudHMKZGlmZiAt
LWdpdCBhL0pTVGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLWFuZC1hcnJheS5qcyBiL0pT
VGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLWFuZC1hcnJheS5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5m
ZTkzOTgxMmZkYmFlYzZiODMyYmZkMDBmMjE1M2RlZjg0YmI3NTkyCi0tLSAvZGV2L251bGwKKysr
IGIvSlNUZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwtYW5kLWFycmF5LmpzCkBAIC0wLDAg
KzEsMjMgQEAKKyhmdW5jdGlvbiAoKSB7CisgICAgZnVuY3Rpb24gKmZpYigpCisgICAgeworICAg
ICAgICBsZXQgYSA9IDE7CisgICAgICAgIGxldCBiID0gMTsKKyAgICAgICAgbGV0IGMgPSBbIDAg
XTsKKyAgICAgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgICAgIGNbMF0gPSBhOworICAgICAg
ICAgICAgeWllbGQgYzsKKyAgICAgICAgICAgIFthLCBiXSA9IFtiLCBhICsgYl07CisgICAgICAg
IH0KKyAgICB9CisKKyAgICBsZXQgdmFsdWUgPSAwOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwg
MWU0OyArK2kpIHsKKyAgICAgICAgbGV0IGYgPSBmaWIoKTsKKyAgICAgICAgZm9yIChsZXQgaSA9
IDA7IGkgPCAxMDA7ICsraSkgeworICAgICAgICAgICAgdmFsdWUgPSBmLm5leHQoKS52YWx1ZTsK
KyAgICAgICAgfQorICAgICAgICBpZiAodmFsdWVbMF0gIT09IDM1NDIyNDg0ODE3OTI2MjAwMDAw
MCkKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIHZhbHVlOiR7cmVzdWx0fWApOwor
ICAgIH0KK30oKSk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0
bC1hbmQtb2JqZWN0LmpzIGIvSlNUZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwtYW5kLW9i
amVjdC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42NjczNDBmMmVhNGM3NDM4YTJkMjA5YWE0MGQwNjc3ZTRhYjdk
M2ZiCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwt
YW5kLW9iamVjdC5qcwpAQCAtMCwwICsxLDIzIEBACisoZnVuY3Rpb24gKCkgeworICAgIGZ1bmN0
aW9uICpmaWIoKQorICAgIHsKKyAgICAgICAgbGV0IGEgPSAxOworICAgICAgICBsZXQgYiA9IDE7
CisgICAgICAgIGxldCBjID0geyBmaWI6IDAgfTsKKyAgICAgICAgd2hpbGUgKHRydWUpIHsKKyAg
ICAgICAgICAgIGMuZmliID0gYTsKKyAgICAgICAgICAgIHlpZWxkIGM7CisgICAgICAgICAgICBb
YSwgYl0gPSBbYiwgYSArIGJdOworICAgICAgICB9CisgICAgfQorCisgICAgbGV0IHZhbHVlID0g
MDsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDFlNDsgKytpKSB7CisgICAgICAgIGxldCBmID0g
ZmliKCk7CisgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwOyArK2kpIHsKKyAgICAgICAg
ICAgIHZhbHVlID0gZi5uZXh0KCkudmFsdWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHZhbHVl
LmZpYiAhPT0gMzU0MjI0ODQ4MTc5MjYyMDAwMDAwKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKGBiYWQgdmFsdWU6JHtyZXN1bHR9YCk7CisgICAgfQorfSgpKTsKZGlmZiAtLWdpdCBhL0pT
VGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLWFuZC1zdHJpbmcuanMgYi9KU1Rlc3RzL3N0
cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQtc3RyaW5nLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQzOGFlNmFi
MzM0NzA0NjgyMjg0OWY0MzAwNGVhNWM0MDNlZWRhMjgKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rl
c3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQtc3RyaW5nLmpzCkBAIC0wLDAgKzEsMjIg
QEAKKyhmdW5jdGlvbiAoKSB7CisgICAgZnVuY3Rpb24gKmZpYigpCisgICAgeworICAgICAgICBs
ZXQgYSA9IDE7CisgICAgICAgIGxldCBiID0gMTsKKyAgICAgICAgbGV0IGMgPSAiUmVzdWx0ISAi
OworICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAgeWllbGQgYyArIGE7CisgICAg
ICAgICAgICBbYSwgYl0gPSBbYiwgYSArIGJdOworICAgICAgICB9CisgICAgfQorCisgICAgbGV0
IHZhbHVlID0gMDsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDFlNDsgKytpKSB7CisgICAgICAg
IGxldCBmID0gZmliKCk7CisgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwOyArK2kpIHsK
KyAgICAgICAgICAgIHZhbHVlID0gZi5uZXh0KCkudmFsdWU7CisgICAgICAgIH0KKyAgICAgICAg
aWYgKHZhbHVlICE9PSBgUmVzdWx0ISAzNTQyMjQ4NDgxNzkyNjIwMDAwMDBgKQorICAgICAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgdmFsdWU6JHtyZXN1bHR9YCk7CisgICAgfQorfSgpKTsK
ZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLmpzIGIvSlNUZXN0
cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzQwZTMzZGJjODY4YmVh
N2E4OTNjOWVjMTZiNzc5ZWMyNmJkYjE5YwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3Ry
ZXNzL2dlbmVyYXRvci1maWItZnRsLmpzCkBAIC0wLDAgKzEsMjEgQEAKKyhmdW5jdGlvbiAoKSB7
CisgICAgZnVuY3Rpb24gKmZpYigpCisgICAgeworICAgICAgICBsZXQgYSA9IDE7CisgICAgICAg
IGxldCBiID0gMTsKKyAgICAgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgICAgIHlpZWxkIGE7
CisgICAgICAgICAgICBbYSwgYl0gPSBbYiwgYSArIGJdOworICAgICAgICB9CisgICAgfQorCisg
ICAgbGV0IHZhbHVlID0gMDsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDFlNDsgKytpKSB7Cisg
ICAgICAgIGxldCBmID0gZmliKCk7CisgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwOyAr
K2kpIHsKKyAgICAgICAgICAgIHZhbHVlID0gZi5uZXh0KCkudmFsdWU7CisgICAgICAgIH0KKyAg
ICAgICAgaWYgKHZhbHVlICE9PSAzNTQyMjQ4NDgxNzkyNjIwMDAwMDApCisgICAgICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoYGJhZCB2YWx1ZToke3Jlc3VsdH1gKTsKKyAgICB9Cit9KCkpOwpkaWZm
IC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZyYW1lLWVtcHR5LmpzIGIvSlNUZXN0
cy9zdHJlc3MvZ2VuZXJhdG9yLWZyYW1lLWVtcHR5LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU5ZTg4NTViZmFj
M2M1NmRmOTI2YWJkNDI4YzAxM2MzMzQxNjI3NDYKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3Rz
L3N0cmVzcy9nZW5lcmF0b3ItZnJhbWUtZW1wdHkuanMKQEAgLTAsMCArMSwzNCBAQAorZnVuY3Rp
b24gc2hvdWxkVGhyb3coZnVuYywgZXJyb3JNZXNzYWdlKSB7CisgICAgdmFyIGVycm9yVGhyb3du
ID0gZmFsc2U7CisgICAgdmFyIGVycm9yID0gbnVsbDsKKyAgICB0cnkgeworICAgICAgICBmdW5j
KCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBlcnJvclRocm93biA9IHRydWU7CisgICAg
ICAgIGVycm9yID0gZTsKKyAgICB9CisgICAgaWYgKCFlcnJvclRocm93bikKKyAgICAgICAgdGhy
b3cgbmV3IEVycm9yKCdub3QgdGhyb3duJyk7CisgICAgaWYgKFN0cmluZyhlcnJvcikgIT09IGVy
cm9yTWVzc2FnZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgZXJyb3I6ICR7U3RyaW5n
KGVycm9yKX1gKTsKK30KKworc2hvdWxkVGhyb3coZnVuY3Rpb24gKCkgeworICAgIGZ1bmN0aW9u
ICpmaWIoZmxhZykKKyAgICB7CisgICAgICAgIGxldCBhID0gMTsKKyAgICAgICAgbGV0IGIgPSAx
OworICAgICAgICB5aWVsZCA0MjsKKyAgICAgICAgaWYgKGZsYWcpCisgICAgICAgICAgICByZXR1
cm4gYzsKKyAgICAgICAgbGV0IGMgPSA1MDA7CisgICAgfQorCisgICAgbGV0IHZhbHVlID0gMDsK
KyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDFlNDsgKytpKSB7CisgICAgICAgIGZvciAobGV0IHYg
b2YgZmliKGZhbHNlKSkgeworICAgICAgICB9CisgICAgfQorICAgIGZvciAobGV0IHYgb2YgZmli
KHRydWUpKSB7CisgICAgfQorfSwgYFJlZmVyZW5jZUVycm9yOiBDYW5ub3QgYWNjZXNzIHVuaW5p
dGlhbGl6ZWQgdmFyaWFibGUuYCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9nZW5lcmF0
b3ItcmVkdWNlZC1zYXZlLXBvaW50LXB1dC10by1zY29wZS5qcyBiL0pTVGVzdHMvc3RyZXNzL2dl
bmVyYXRvci1yZWR1Y2VkLXNhdmUtcG9pbnQtcHV0LXRvLXNjb3BlLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMw
Yzc1ZmE0OTE0M2MxN2JlMTRmMzI4MWUzZjY1NDM0ZjM1MTM5ZTgKLS0tIC9kZXYvbnVsbAorKysg
Yi9KU1Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItcmVkdWNlZC1zYXZlLXBvaW50LXB1dC10by1zY29w
ZS5qcwpAQCAtMCwwICsxLDI4IEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVk
KSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJv
cihgYmFkIHZhbHVlOiAke1N0cmluZyhhY3R1YWwpfWApOworfQorCitmdW5jdGlvbiBlcnJvcigp
Cit7CisgICAgdGhyb3cgIm9rIjsKK30KKworZnVuY3Rpb24qIGdlbigpCit7CisgICAgdmFyIHZh
bHVlID0gNDI7CisgICAgdHJ5IHsKKyAgICAgICAgeWllbGQgMzAwOworICAgICAgICB2YWx1ZSA9
IDUwMDsKKyAgICAgICAgZXJyb3IoKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIHlpZWxk
IDQyOworICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgfQorICAgIHJldHVybiAyMDA7Cit9CisK
K3ZhciBnID0gZ2VuKCk7CitzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgMzAwKTsKK3Nob3VsZEJl
KGcubmV4dCgpLnZhbHVlLCA0Mik7CitzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgNTAwKTsKZGlm
ZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2dlbmVyYXRvci10cmFuc2Zlci1yZWdpc3Rlci1iZXlv
bmQtbXV0aXBsZS15aWVsZHMuanMgYi9KU1Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItdHJhbnNmZXIt
cmVnaXN0ZXItYmV5b25kLW11dGlwbGUteWllbGRzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZlMjA4ZjU4MTI5
NmY5YWUwOGE2YmZiMzk4YjQ4MjI1NzQyZDZiNzgKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3Rz
L3N0cmVzcy9nZW5lcmF0b3ItdHJhbnNmZXItcmVnaXN0ZXItYmV5b25kLW11dGlwbGUteWllbGRz
LmpzCkBAIC0wLDAgKzEsMTggQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQp
IHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9y
KCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCisKK2Z1bmN0aW9uICpnZW4oKQoreworICAg
IHZhciB0ZXN0ID0gNDI7CisgICAgeWllbGQgMzI7CisgICAgeWllbGQgMzM7CisgICAgeWllbGQg
dGVzdDsKK30KKwordmFyIGcgPSBnZW4oKTsKK3Nob3VsZEJlKGcubmV4dCgpLnZhbHVlLCAzMik7
CitzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgMzMpOworc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUs
IDQyKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>286766</attachid>
            <date>2016-08-23 13:30:05 -0700</date>
            <delta_ts>2016-08-23 20:02:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-152723-20160823132806.patch</filename>
            <type>text/plain</type>
            <size>222946</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA0ODU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
MGY5MjVkYzkyM2MwY2VjNmFmNzZkZWRlYzcyZjU0NGM0ZjhlMmIyLi43MTlhZWFhY2M1YzQ1MGIx
ZmVjZjYyNTdhZjc5YzU4OTNiNzc5YzNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNjEgQEAKKzIwMTYtMDgtMjMgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0RGR11bRlRMXSBJbXBsZW1lbnQgRVM2IEdlbmVyYXRvcnMgaW4g
REZHIC8gRlRMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNTI3MjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUaGlzIHBhdGNoIGludHJvZHVjZXMgREZHIGFuZCBGVEwgc3VwcG9ydCBmb3IgRVM2IGdlbmVy
YXRvcnMuCisgICAgICAgIEVTNiBnZW5lcmF0b3IgaXMgY29tcGlsZWQgYnkgdGhlIEJ5dGVjb2Rl
R2VuZXJhdG9yLiBCdXQgYXQgdGhlIGxhc3QgcGhhc2UsIEJ5dGVjb2RlR2VuZXJhdG9yIHBlcmZv
cm1zICJnZW5lcmF0b3JpZmljYXRpb24iIG9udG8gdGhlIHVubGlua2VkIGNvZGUuCisgICAgICAg
IEluIEJ5dGVjb2RlR2VuZXJhdG9yIHBoYXNlLCB3ZSBpbnNlcnRlZCBzZXZlcmFsIHNwZWNpYWwg
bWFya2VycyBmb3IgdGhlIGdlbmVyYXRvcnMsIG9wX3NhdmUgYW5kIG9wX3Jlc3VtZS4KKyAgICAg
ICAgVGhlIG9wX3NhdmUsIG9wX3Jlc3VtZSwgYW5kIHRoZSBtZXJnZSBwb2ludCBibG9jayBhcmUg
Y29ubmVjdGVkIGFzIGZvbGxvd3MuCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBvcF9yZXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBeCisgICAgICAgIGVudHJ5IC0+IGdlbmVyYXRvciBzd2l0Y2ggLS0tLT4gb3Bfc2F2ZSAtPiBt
ZXJnZSBwb2ludCAtPiAuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBeCisgICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0t
LT4gb3BfcmVzdW1lIC0tLS0tKworCisgICAgICAgIEluIHRoZSBnZW5lcmF0b3JpZmljYXRpb24g
cGhhc2UsIHdlIHR1cm4gb3V0IHdoaWNoIHZhcmlhYmxlcyBzaG91bGQgYmUgc2F2ZWQgYW5kIHJl
c3VtZWQgYXQgZWFjaCBvcF9zYXZlIGFuZCBvcF9yZXN1bWUsIGFuZCBjb252ZXJ0IHRoZXNlIGJ5
dGVjb2RlcworICAgICAgICB0byB0aGUgc2VxdWVuY2VzIG9mIHRoZSBnZXRfZnJvbV9zY29wZSBh
bmQgcHV0X3RvX3Njb3BlLiBUaGUgcmVnaXN0ZXJzIGFyZSBzYXZlZCBhbmQgcmVzdW1lZCBvdmVy
IHRoZSBnZW5lcmF0b3IncyBuZXh0KCkgY2FsbHMgYnkgdXNpbmcgdGhpcyBzcGVjaWFsCisgICAg
ICAgIGdlbmVyYXRvciBmcmFtZSBzY29wZS4KKworICAgICAgICBJbiB0aGUgZ2VuZXJhdG9yaWZp
Y2F0aW9uIHBoYXNlLAorCisgICAgICAgIDEuIFdlIGNvbnN0cnVjdCB0aGUgQnl0ZWNvZGVHcmFw
aCBmcm9tIHRoZSB1bmxpbmtlZCBpbnN0cnVjdGlvbnMuIFRoaXMgY29uc3RydWN0cyB0aGUgYmFz
aWMgYmxvY2tzLCBhbmQgaXQgaXMgdXNlZCBpbiB0aGUgc3Vic2VxdWVudCBhbmFseXNpcy4KKyAg
ICAgICAgMi4gV2UgcGVyZm9ybSB0aGUgYW5hbHlzaXMgb250byB0aGUgdW5saW5rZWQgY29kZS4g
V2UgaGF2ZSAzIGFuYWx5c2lzOiB0aGUgbGl2ZW5lc3MgYW5hbHlzaXMsIHRoZSBzYXZlZCB2YXJp
YWJsZXMgYW5hbHlzaXMsIGFuZCB0aGUgcmVzdW1lZCB2YXJpYWJsZXMgYW5hbHlzaXMuCisgICAg
ICAgICAgIEZpcnN0LCBpbiB0aGUgbGl2ZW5lc3MgYW5hbHlzaXMsIHdlIGV4dHJhY3QgdGhlIGxp
dmUgdmFyaWFibGVzIGF0IGVhY2ggbWVyZ2UgcG9pbnQuIFRoZXNlIHZhcmlhYmxlcyBzaG91bGQg
YmUgY29uc2lkZXJlZCBhcyB0aGUgY29uc2VydmF0aXZlIHJlZ2lzdGVycworICAgICAgICAgICB0
byBiZSBzYXZlZCBhbmQgcmVzdW1lZCBhdCBlYWNoIHBvaW50LgorICAgICAgICAzLiBXZSBpbnNl
cnQgdGhlIGdldF9mcm9tX3Njb3BlIGFuZCBwdXRfdG9fc2NvcGUgYXQgZWFjaCBvcF9zYXZlIGFu
ZCBvcF9yZXN1bWUuIFdoaWNoIHJlZ2lzdGVycyBzaG91bGQgYmUgc2F2ZWQgYW5kIHJlc3VtZWQg
aXMgb2ZmZXJlZCBieSAoMikuCisgICAgICAgICAgIFRoZW4sIGNsaXAgdGhlIG9wX3NhdmUgYW5k
IG9wX3Jlc3VtZSB0aGVtc2VsdmVzLiBUaGV5IGFyZSBleGVjdXRlZCBpbiBhIGJhdGNoIG1hbm5l
ciBieSBCeXRlY29kZVJld3JpdGVyLiBTaW5jZSB0aGVzZSBtb2RpZmljYXRpb24gY2hhbmdlcyB0
aGUgYmFzaWMgYmxvY2tzCisgICAgICAgICAgIGFuZCBzaXplIG9mIHVubGlua2VkIGluc3RydWN0
aW9ucywgQnl0ZWNvZGVSZXdyaXRlciBhbHNvIHBlcmZvcm1zIHRoZSBvZmZzZXQgYWRqdXN0bWVu
dCBmb3IgVW5saW5rZWRDb2RlQmxvY2suIFNvLCB0aGlzIEJ5dGVjb2RlUmV3cml0ZXIgaXMgcGVy
Zm9ybWVkCisgICAgICAgICAgIG9udG8gdGhlIEJ5dGVjb2RlR3JhcGggaW5zdGVhZCBvZiBCeXRl
Y29kZUJhc2ljQmxvY2suIFRoZSByZWFzb24gd2h5IHdlIHRha2UgdGhpcyBkZXNpZ24gaXMgc2lt
cGxlOiB3ZSBkb24ndCB3YW50IHRvIG5ld2x5IGNyZWF0ZSB0aGUgYmFzaWMgYmxvY2tzIGFuZCBv
cGNvZGVzCisgICAgICAgICAgIGZvciB0aGlzIGVhcmx5IHBoYXNlIGxpa2UgREZHLiBJbnN0ZWFk
LCB3ZSBwZXJmb3JtIHRoZSBtb2RpZmljYXRpb24gYW5kIGFkanVzdG1lbnQgdG8gdGhlIHVubGlu
a2VkIGluc3RydWN0aW9ucyBhbmQgVW5saW5rZWRDb2RlQmxvY2sgaW4gYSBpbi1wbGFjZSBtYW5u
ZXIuCisKKyAgICAgICAgQWZ0ZXIgdGhhdCBwaGFzZSwgdGhlIGRhdGEgZmxvdyBvZiB0aGUgZ2Vu
ZXJhdG9yLXNhdmVkLWFuZC1yZXN1bWVkLXJlZ2lzdGVycyBhcmUgZXhwbGljaXRseSByZXByZXNl
bnRlZCBieSB0aGUgZ2V0X2Zyb21fc2NvcGUgYW5kIHB1dF90b19zY29wZS4KKyAgICAgICAgQW5k
IG9wX3NhdmUgYW5kIG9wX3Jlc3VtZSBhcmUgcmVtb3ZlZC4gU2luY2Ugd2UgdXNlIHRoZSBleGlz
dGluZyBieXRlY29kZXMsIERGRyBhbmQgRlRMIGNoYW5nZXMgYXJlIG5vdCBuZWNlc3NhcnkuCisg
ICAgICAgIFRoaXMgcGF0Y2ggYWxzbyBkcm9wcyBkYXRhIHN0cnVjdHVyZXMgYW5kIGltcGxlbWVu
dGF0aW9ucyBmb3IgdGhlIG9sZCBnZW5lcmF0b3IsIG9wX3Jlc3VtZSwgb3Bfc2F2ZSBpbXBsZW1l
bnRhdGlvbnMgYW5kIEdlbmVyYXRvckZyYW1lLgorCisgICAgICAgIE5vdGUgdGhhdCB0aGlzIHBh
dGNoIGRvZXMgbm90IGxldmVyYWdlIHRoZSByZWNlbnQgbXVsdGkgZW50cnlwb2ludHMgc3VwcG9y
dCBpbiBCMy4gQWZ0ZXIgdGhpcyBwYXRjaCBpcyBpbnRyb2R1Y2VkLCB3ZSB3aWxsIHN1Ym1pdCBh
IG5ldyBwYXRjaCB0aGF0IGxldmVyYWdlcyB0aGUgbXVsdGkKKyAgICAgICAgZW50cnlwb2ludHMg
Zm9yIGdlbmVyYXRvcidzIHJlc3VtZSBhbmQgc2VlcyB0aGUgcGVyZm9ybWFuY2UgZ2Fpbi4KKwor
ICAgICAgICBUT0RPOiBQZXJmIFRCQSBoZXJlLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6
CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBiMy9CM0Jhc2ljQmxvY2tVdGlscy5oOgorICAgICAgICAqIGIzL0IzQmxvY2tXb3Jr
bGlzdC5oOgorICAgICAgICAqIGIzL0IzQ0ZHLmg6CisgICAgICAgICogYjMvQjNEdXBsaWNhdGVU
YWlscy5jcHA6CisgICAgICAgICogYjMvQjNGaXhTU0EuY3BwOgorICAgICAgICAqIGIzL0IzRml4
U1NBLmg6CisgICAgICAgICogYjMvQjNJbmRleE1hcC5oOgorICAgICAgICAoSlNDOjpCMzo6SW5k
ZXhNYXA6OkluZGV4TWFwKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkluZGV4TWFwOjpy
ZXNpemUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6SW5kZXhNYXA6OmNsZWFyKTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkluZGV4TWFwOjpzaXplKTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6QjM6OkluZGV4TWFwOjpvcGVyYXRvcltdKTogRGVsZXRlZC4KKyAgICAgICAgKiBi
My9CM0luZGV4U2V0Lmg6CisgICAgICAgIChKU0M6OkIzOjpJbmRleFNldDo6SW5kZXhTZXQpOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6SW5kZXhTZXQ6OmFkZCk6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OkIzOjpJbmRleFNldDo6YWRkQWxsKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
QjM6OkluZGV4U2V0OjpyZW1vdmUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6SW5kZXhT
ZXQ6OmNvbnRhaW5zKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkluZGV4U2V0OjpzaXpl
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkluZGV4U2V0Ojppc0VtcHR5KTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6QjM6OkluZGV4U2V0OjpJdGVyYWJsZTo6SXRlcmFibGUpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpCMzo6SW5kZXhTZXQ6Okl0ZXJhYmxlOjppdGVyYXRvcjo6aXRl
cmF0b3IpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6SW5kZXhTZXQ6Okl0ZXJhYmxlOjpp
dGVyYXRvcjo6b3BlcmF0b3IqKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkluZGV4U2V0
OjpJdGVyYWJsZTo6aXRlcmF0b3I6Om9wZXJhdG9yKyspOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpCMzo6SW5kZXhTZXQ6Okl0ZXJhYmxlOjppdGVyYXRvcjo6b3BlcmF0b3I9PSk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OkIzOjpJbmRleFNldDo6SXRlcmFibGU6Oml0ZXJhdG9yOjpvcGVyYXRv
ciE9KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkluZGV4U2V0OjpJdGVyYWJsZTo6YmVn
aW4pOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6SW5kZXhTZXQ6Okl0ZXJhYmxlOjplbmQp
OiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6SW5kZXhTZXQ6OnZhbHVlcyk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OkIzOjpJbmRleFNldDo6aW5kaWNlcyk6IERlbGV0ZWQuCisgICAgICAg
IChKU0M6OkIzOjpJbmRleFNldDo6ZHVtcCk6IERlbGV0ZWQuCisgICAgICAgICogYjMvQjNMb3dl
clRvQWlyLmNwcDoKKyAgICAgICAgKiBiMy9CM1BoaUNoaWxkcmVuLmg6CisgICAgICAgICogYjMv
QjNQcm9jZWR1cmUuaDoKKyAgICAgICAgKEpTQzo6QjM6OlByb2NlZHVyZTo6aXRlcmF0b3I6Oml0
ZXJhdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OlByb2NlZHVyZTo6aXRlcmF0b3I6
Om9wZXJhdG9yKik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpQcm9jZWR1cmU6Oml0ZXJh
dG9yOjpvcGVyYXRvcisrKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OlByb2NlZHVyZTo6
aXRlcmF0b3I6Om9wZXJhdG9yPT0pOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6UHJvY2Vk
dXJlOjppdGVyYXRvcjo6b3BlcmF0b3IhPSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpQ
cm9jZWR1cmU6Oml0ZXJhdG9yOjpmaW5kTmV4dCk6IERlbGV0ZWQuCisgICAgICAgICogYjMvQjNS
ZWR1Y2VEb3VibGVUb0Zsb2F0LmNwcDoKKyAgICAgICAgKiBiMy9CM1JlZHVjZVN0cmVuZ3RoLmNw
cDoKKyAgICAgICAgKiBiMy9CM1NTQUNhbGN1bGF0b3IuaDoKKyAgICAgICAgKiBiMy9CM1VzZUNv
dW50cy5oOgorICAgICAgICAqIGIzL2Fpci9BaXJDb2RlLmg6CisgICAgICAgICogYjMvYWlyL0Fp
ckVsaW1pbmF0ZURlYWRDb2RlLmNwcDoKKyAgICAgICAgKiBiMy9haXIvQWlyRml4T2J2aW91c1Nw
aWxscy5jcHA6CisgICAgICAgICogYjMvYWlyL0FpckZpeFBhcnRpYWxSZWdpc3RlclN0YWxscy5j
cHA6CisgICAgICAgICogYjMvYWlyL0FpckdlbmVyYXRlLmNwcDoKKyAgICAgICAgKiBiMy9haXIv
QWlyR2VuZXJhdGlvbkNvbnRleHQuaDoKKyAgICAgICAgKiBiMy9haXIvQWlyTGl2ZW5lc3MuaDoK
KyAgICAgICAgKiBiMy9haXIvQWlyU3BpbGxFdmVyeXRoaW5nLmNwcDoKKyAgICAgICAgKiBidWls
dGlucy9HZW5lcmF0b3JQcm90b3R5cGUuanM6CisgICAgICAgIChnbG9iYWxQcml2YXRlLmdlbmVy
YXRvclJlc3VtZSk6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcDoK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVCYXNpY0Jsb2NrOjpjb21wdXRlQnl0ZWNvZGVCYXNpY0Js
b2Nrc0ludGVybmFsKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVCYXNpY0Jsb2NrOjpjb21wdXRl
Qnl0ZWNvZGVCYXNpY0Jsb2Nrcyk6CisgICAgICAgIChKU0M6OmxpbmtCbG9ja3MpOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2Nrcyk6IERlbGV0ZWQuCisg
ICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmg6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlQmFzaWNCbG9jazo6Ynl0ZWNvZGVPZmZzZXRzKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNv
ZGVCYXNpY0Jsb2NrOjpzdWNjZXNzb3JzKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVCYXNpY0Js
b2NrOjpwcmVkZWNlc3NvcnMpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUJhc2ljQmxvY2s6Omlu
ZGV4KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVCYXNpY0Jsb2NrOjphZGRTdWNjZXNzb3IpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUJhc2ljQmxvY2s6OmFkZFByZWRlY2Vzc29yKToKKyAgICAg
ICAgKiBieXRlY29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHA6IEFkZGVkLgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbjo6Qnl0ZWNvZGVHZW5lcmF0b3Jp
ZmljYXRpb24pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbjo6Z3Jh
cGgpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbjo6eWllbGRzKToK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb246OnN0b3JhZ2VGb3JHZW5l
cmF0b3JMb2NhbCk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckxpdmVuZXNzQW5hbHlzaXM6Okdl
bmVyYXRvckxpdmVuZXNzQW5hbHlzaXMpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JMaXZlbmVz
c0FuYWx5c2lzOjpjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6
R2VuZXJhdG9yTGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCk6
CisgICAgICAgIChKU0M6OkdlbmVyYXRvckxpdmVuZXNzQW5hbHlzaXM6OnJ1bik6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uOjpydW4pOgorICAgICAgICAoSlNDOjpw
ZXJmb3JtR2VuZXJhdG9yaWZpY2F0aW9uKToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUdl
bmVyYXRvcmlmaWNhdGlvbi5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzSW5saW5lcy5oLgorICAgICAgICAqIGJ5dGVj
b2RlL0J5dGVjb2RlR3JhcGguaDogQWRkZWQuCisgICAgICAgIChKU0M6OkJ5dGVjb2RlR3JhcGg6
OmNvZGVCbG9jayk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR3JhcGg6Omluc3RydWN0aW9ucyk6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR3JhcGg6OmJhc2ljQmxvY2tzSW5SZXZlcnNlT3JkZXIp
OgorICAgICAgICAoSlNDOjpCeXRlY29kZUdyYXBoOjpibG9ja0NvbnRhaW5zQnl0ZWNvZGVPZmZz
ZXQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdyYXBoOjpmaW5kQmFzaWNCbG9ja0ZvckJ5dGVj
b2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHcmFwaDo6ZmluZEJhc2ljQmxvY2tX
aXRoTGVhZGVyT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHcmFwaDo6c2l6ZSk6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR3JhcGg6OmF0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVH
cmFwaDo6b3BlcmF0b3JbXSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR3JhcGg6OmJlZ2luKToK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHcmFwaDo6ZW5kKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNv
ZGVHcmFwaDo6Zmlyc3QpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdyYXBoOjpsYXN0KToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVHcmFwaDxCbG9jaz46OkJ5dGVjb2RlR3JhcGgpOgorICAgICAg
ICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHA6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzKToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlRGVmc0ZvckJ5dGVj
b2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpjb21w
dXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVz
c0FuYWx5c2lzOjpydW5MaXZlbmVzc0ZpeHBvaW50KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVM
aXZlbmVzc0FuYWx5c2lzOjpnZXRMaXZlbmVzc0luZm9BdEJ5dGVjb2RlT2Zmc2V0KToKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlRnVsbExpdmVuZXNzKToK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlS2lsbHMpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmR1bXBSZXN1bHRzKToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlKToKKyAgICAgICAg
KEpTQzo6aXNWYWxpZFJlZ2lzdGVyRm9yTGl2ZW5lc3MpOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpnZXRMZWFkZXJPZmZzZXRGb3JCYXNpY0Jsb2NrKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
ZmluZEJhc2ljQmxvY2tXaXRoTGVhZGVyT2Zmc2V0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
YmxvY2tDb250YWluc0J5dGVjb2RlT2Zmc2V0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Zmlu
ZEJhc2ljQmxvY2tGb3JCeXRlY29kZU9mZnNldCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OnN0
ZXBPdmVySW5zdHJ1Y3Rpb24pOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpjb21wdXRlTG9jYWxM
aXZlbmVzc0ZvckJ5dGVjb2RlT2Zmc2V0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Y29tcHV0
ZUxvY2FsTGl2ZW5lc3NGb3JCbG9jayk6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUvQnl0
ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmg6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVMaXZl
bmVzc0FuYWx5c2lzSW5saW5lcy5oOgorICAgICAgICAoSlNDOjppc1ZhbGlkUmVnaXN0ZXJGb3JM
aXZlbmVzcyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlTGl2ZW5lc3NMb2NhbFByb3BhZ2F0aW9u
PERlcml2ZWRBbmFseXNpcz46OnN0ZXBPdmVySW5zdHJ1Y3Rpb24pOgorICAgICAgICAoSlNDOjpC
eXRlY29kZUxpdmVuZXNzTG9jYWxQcm9wYWdhdGlvbjxEZXJpdmVkQW5hbHlzaXM+Ojpjb21wdXRl
TG9jYWxMaXZlbmVzc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVM
aXZlbmVzc0xvY2FsUHJvcGFnYXRpb248RGVyaXZlZEFuYWx5c2lzPjo6Y29tcHV0ZUxvY2FsTGl2
ZW5lc3NGb3JCbG9jayk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlTGl2ZW5lc3NMb2NhbFByb3Bh
Z2F0aW9uPERlcml2ZWRBbmFseXNpcz46OmdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQp
OgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlUmV3cml0ZXIuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVSZXdyaXRlcjo6YWRqdXN0T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVSZXdyaXRlcjo6YXBwbHlNb2RpZmljYXRpb24pOgorICAgICAgICAoSlNDOjpCeXRl
Y29kZVJld3JpdGVyOjpleGVjdXRlKToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZVJld3Jp
dGVyLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpCeXRlY29kZVJld3JpdGVyOjpCeXRlY29kZVJl
d3JpdGVyKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVSZXdyaXRlcjo6aW5zZXJ0QWZ0ZXIpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZVJld3JpdGVyOjppbnNlcnRCZWZvcmUpOgorICAgICAgICAo
SlNDOjpCeXRlY29kZVJld3JpdGVyOjpyZW1vdmVCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlUmV3cml0ZXI6OmdyYXBoKToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZVVzZURl
Zi5oOgorICAgICAgICAoSlNDOjpjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAg
ICAgKEpTQzo6Y29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgICogYnl0ZWNv
ZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUp
OgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjpoYW5kbGVyRm9ySW5kZXgpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6
OnNocmlua1RvRml0KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjp2YWx1ZVByb2ZpbGVGb3JC
eXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bGl2ZW5lc3NBbmFseXNp
c1Nsb3cpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpD
b2RlQmxvY2s6OmlzQ29uc3RhbnRSZWdpc3RlckluZGV4KToKKyAgICAgICAgKEpTQzo6Q29kZUJs
b2NrOjpsaXZlbmVzc0FuYWx5c2lzKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpsaXZlQ2Fs
bGVlTG9jYWxzQXRZaWVsZCk6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUvSGFuZGxlcklu
Zm8uaDoKKyAgICAgICAgKEpTQzo6SGFuZGxlckluZm9CYXNlOjpoYW5kbGVyRm9ySW5kZXgpOgor
ICAgICAgICAqIGJ5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5jcHA6CisgICAgICAgIChKU0M6
OmdldEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpjb21wdXRl
UHJlY2lzZUp1bXBUYXJnZXRzSW50ZXJuYWwpOgorICAgICAgICAoSlNDOjpjb21wdXRlUHJlY2lz
ZUp1bXBUYXJnZXRzKToKKyAgICAgICAgKEpTQzo6cmVjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRz
KToKKyAgICAgICAgKEpTQzo6ZmluZEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAg
ICAgICAqIGJ5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5oOgorICAgICAgICAqIGJ5dGVjb2Rl
L1VubGlua2VkQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6
OmhhbmRsZXJGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJs
b2NrOjpoYW5kbGVyRm9ySW5kZXgpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6
YXBwbHlNb2RpZmljYXRpb24pOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2Nr
Lmg6CisgICAgICAgIChKU0M6OlVubGlua2VkU3RyaW5nSnVtcFRhYmxlOjpvZmZzZXRGb3JWYWx1
ZSk6CisgICAgICAgICogYnl0ZWNvZGUvVmlydHVhbFJlZ2lzdGVyLmg6CisgICAgICAgICogYnl0
ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVH
ZW5lcmF0b3I6OmdlbmVyYXRlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5
dGVjb2RlR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRD
b21wbGV4UG9wU2NvcGVzKToKKyAgICAgICAgKEpTQzo6cHJlcGFyZUp1bXBUYWJsZUZvclN0cmlu
Z1N3aXRjaCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0WWllbGRQb2lu
dCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0U2F2ZSk6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzdW1lKToKKyAgICAgICAgKiBieXRlY29t
cGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0
b3I6OmdlbmVyYXRvclN0YXRlUmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVy
YXRvcjo6Z2VuZXJhdG9yVmFsdWVSZWdpc3Rlcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2Vu
ZXJhdG9yOjpnZW5lcmF0b3JSZXN1bWVNb2RlUmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpCeXRl
Y29kZUdlbmVyYXRvcjo6Z2VuZXJhdG9yRnJhbWVSZWdpc3Rlcik6CisgICAgICAgICogZGZnL0RG
R09wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGdlbmVyYXRlLWJ5dGVjb2RlLWZpbGVzOgorICAg
ICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpTQzo6ZmluZEV4
Y2VwdGlvbkhhbmRsZXIpOgorICAgICAgICAoSlNDOjpHZXRDYXRjaEhhbmRsZXJGdW5jdG9yOjpv
cGVyYXRvcigpKToKKyAgICAgICAgKEpTQzo6VW53aW5kRnVuY3Rvcjo6b3BlcmF0b3IoKSk6Cisg
ICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaDoKKyAgICAgICAgKiBpbnRlcnByZXRl
ci9JbnRlcnByZXRlcklubGluZXMuaDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5oLgorICAgICAgICAoSlNDOjpJbnRlcnByZXRl
cjo6Z2V0T3Bjb2RlSUQpOgorICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpK
SVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MpOgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAg
ICAgKiBqaXQvSklUT3Bjb2Rlcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9zYXZl
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3Jlc3VtZSk6IERlbGV0ZWQu
CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc206CisgICAgICAgICogcGFy
c2VyL1BhcnNlci5jcHA6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUlu
bmVyKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlR2VuZXJhdG9yRnVu
Y3Rpb25Tb3VyY2VFbGVtZW50cyk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+Ojpj
cmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmg6Cisg
ICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpTTE9X
X1BBVEhfREVDTCk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMu
aDoKKyAgICAgICAgKiBydW50aW1lL0dlbmVyYXRvckZyYW1lLmNwcDogUmVtb3ZlZC4KKyAgICAg
ICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OkdlbmVyYXRvckZyYW1lKTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OmZpbmlzaENyZWF0aW9uKTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OmNyZWF0ZVN0cnVjdHVyZSk6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpjcmVhdGUpOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpHZW5lcmF0b3JGcmFtZTo6c2F2ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkdlbmVyYXRv
ckZyYW1lOjpyZXN1bWUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6
dmlzaXRDaGlsZHJlbik6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9HZW5lcmF0b3JGcmFt
ZS5oOiBSZW1vdmVkLgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6bG9jYWxzKTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OmxvY2FsQXQpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6b2Zmc2V0T2ZMb2NhbHMpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6YWxsb2NhdGlvblNpemVGb3JMb2NhbHMpOiBE
ZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNHZW5lcmF0b3JGdW5jdGlvbi5oOgorICAgICAg
ICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6Vk0pOgorICAgICAgICAqIHJ1
bnRpbWUvVk0uaDoKKwogMjAxNi0wOC0yMiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29t
PgogCiAgICAgICAgIEJ1dHRlcmZsaWVzIHNob3VsZCBiZSBhbGxvY2F0ZWQgaW4gQXV4aWxpYXJ5
IE1hcmtlZFNwYWNlIGluc3RlYWQgb2YgQ29waWVkU3BhY2UgYW5kIHdlIHNob3VsZCByZXdyaXRl
IGFzIG11Y2ggb2YgdGhlIEdDIGFzIG5lZWRlZCB0byBtYWtlIHRoaXMgbm90IGEgcmVncmVzc2lv
bgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxv
ZwppbmRleCA1NjU0MjFiMGI1NTFiYTJmZTQ2ZWQ1NWJkYzcwZjdiZDcyMDEzZjIyLi45YmI2MGJi
ZjE0NjEwMzEyNTMwMzVmMTU5OTAwY2YxNWE1YzczMDc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisy
MDE2LTA4LTIzICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAg
ICAgIFtERkddW0ZUTF0gSW1wbGVtZW50IEVTNiBHZW5lcmF0b3JzIGluIERGRyAvIEZUTAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUyNzIzCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXVEYueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiB3dGYvQ01ha2VMaXN0cy50eHQ6CisgICAg
ICAgICogd3RmL0Zhc3RCaXRWZWN0b3IuaDoKKyAgICAgICAgKFdURjo6RmFzdEJpdFZlY3Rvcjo6
RmFzdEJpdFZlY3Rvcik6CisgICAgICAgICogd3RmL0luZGV4TWFwLmg6IENvcGllZCBmcm9tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0luZGV4TWFwLmguCisgICAgICAgIChXVEY6OkluZGV4
TWFwOjpJbmRleE1hcCk6CisgICAgICAgIChXVEY6OkluZGV4TWFwOjpyZXNpemUpOgorICAgICAg
ICAoV1RGOjpJbmRleE1hcDo6Y2xlYXIpOgorICAgICAgICAoV1RGOjpJbmRleE1hcDo6c2l6ZSk6
CisgICAgICAgIChXVEY6OkluZGV4TWFwOjpvcGVyYXRvcltdKToKKyAgICAgICAgKiB3dGYvSW5k
ZXhTZXQuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0luZGV4U2V0
LmguCisgICAgICAgIChXVEY6OkluZGV4U2V0OjpJbmRleFNldCk6CisgICAgICAgIChXVEY6Oklu
ZGV4U2V0OjphZGQpOgorICAgICAgICAoV1RGOjpJbmRleFNldDo6YWRkQWxsKToKKyAgICAgICAg
KFdURjo6SW5kZXhTZXQ6OnJlbW92ZSk6CisgICAgICAgIChXVEY6OkluZGV4U2V0Ojpjb250YWlu
cyk6CisgICAgICAgIChXVEY6OkluZGV4U2V0OjpzaXplKToKKyAgICAgICAgKFdURjo6SW5kZXhT
ZXQ6OmlzRW1wdHkpOgorICAgICAgICAoV1RGOjpJbmRleFNldDo6SXRlcmFibGU6Okl0ZXJhYmxl
KToKKyAgICAgICAgKFdURjo6SW5kZXhTZXQ6Okl0ZXJhYmxlOjppdGVyYXRvcjo6aXRlcmF0b3Ip
OgorICAgICAgICAoV1RGOjpJbmRleFNldDo6SXRlcmFibGU6Oml0ZXJhdG9yOjpvcGVyYXRvciop
OgorICAgICAgICAoV1RGOjpJbmRleFNldDo6SXRlcmFibGU6Oml0ZXJhdG9yOjpvcGVyYXRvcisr
KToKKyAgICAgICAgKFdURjo6SW5kZXhTZXQ6Okl0ZXJhYmxlOjppdGVyYXRvcjo6b3BlcmF0b3I9
PSk6CisgICAgICAgIChXVEY6OkluZGV4U2V0OjpJdGVyYWJsZTo6aXRlcmF0b3I6Om9wZXJhdG9y
IT0pOgorICAgICAgICAoV1RGOjpJbmRleFNldDo6SXRlcmFibGU6OmJlZ2luKToKKyAgICAgICAg
KFdURjo6SW5kZXhTZXQ6Okl0ZXJhYmxlOjplbmQpOgorICAgICAgICAoV1RGOjpJbmRleFNldDo6
dmFsdWVzKToKKyAgICAgICAgKFdURjo6SW5kZXhTZXQ6OmluZGljZXMpOgorICAgICAgICAoV1RG
OjpJbmRleFNldDo6ZHVtcCk6CisgICAgICAgICogd3RmL0luZGV4ZWRDb250YWluZXJJdGVyYXRv
ci5oOiBSZW5hbWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzSW5kZXhNYXAuaC4K
KyAgICAgICAgKFdURjo6SW5kZXhlZENvbnRhaW5lckl0ZXJhdG9yOjpJbmRleGVkQ29udGFpbmVy
SXRlcmF0b3IpOgorICAgICAgICAoV1RGOjpJbmRleGVkQ29udGFpbmVySXRlcmF0b3I6Om9wZXJh
dG9yKyspOgorICAgICAgICAoV1RGOjpJbmRleGVkQ29udGFpbmVySXRlcmF0b3I6Om9wZXJhdG9y
PT0pOgorICAgICAgICAoV1RGOjpJbmRleGVkQ29udGFpbmVySXRlcmF0b3I6Om9wZXJhdG9yIT0p
OgorICAgICAgICAoV1RGOjpJbmRleGVkQ29udGFpbmVySXRlcmF0b3I6OmZpbmROZXh0KToKKwog
MjAxNi0wOC0yMiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIEJ1
dHRlcmZsaWVzIHNob3VsZCBiZSBhbGxvY2F0ZWQgaW4gQXV4aWxpYXJ5IE1hcmtlZFNwYWNlIGlu
c3RlYWQgb2YgQ29waWVkU3BhY2UgYW5kIHdlIHNob3VsZCByZXdyaXRlIGFzIG11Y2ggb2YgdGhl
IEdDIGFzIG5lZWRlZCB0byBtYWtlIHRoaXMgbm90IGEgcmVncmVzc2lvbgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDI5ODZhOWQxZWVlYWMyZWI3OTYxYWRhMTRjMmViMmJj
NjQxNmU3ZDUuLjdhNzUxMTdiNGU5NDk0ODRhMDYyNmNhN2ZmNzNhNmUwNWFlYzIyYzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTE4Miw2ICsxODIsOCBAQCBzZXQoSmF2
YVNjcmlwdENvcmVfU09VUkNFUwogICAgIGJ5dGVjb2RlL0FycmF5QWxsb2NhdGlvblByb2ZpbGUu
Y3BwCiAgICAgYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmNwcAogICAgIGJ5dGVjb2RlL0J5dGVjb2Rl
QmFzaWNCbG9jay5jcHAKKyAgICBieXRlY29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5j
cHAKKyAgICBieXRlY29kZS9CeXRlY29kZVJld3JpdGVyLmNwcAogICAgIGJ5dGVjb2RlL0J5dGVj
b2RlSW50cmluc2ljUmVnaXN0cnkuY3BwCiAgICAgYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0Fu
YWx5c2lzLmNwcAogICAgIGJ5dGVjb2RlL0NhbGxFZGdlLmNwcApAQCAtNjY0LDcgKzY2Niw2IEBA
IHNldChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgcnVudGltZS9GdW5jdGlvbkhhc0V4ZWN1
dGVkQ2FjaGUuY3BwCiAgICAgcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAKICAgICBydW50
aW1lL0Z1bmN0aW9uUmFyZURhdGEuY3BwCi0gICAgcnVudGltZS9HZW5lcmF0b3JGcmFtZS5jcHAK
ICAgICBydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwCiAgICAgcnVudGlt
ZS9HZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5jcHAKICAgICBydW50aW1lL0dlbmVyYXRvclBy
b3RvdHlwZS5jcHAKQEAgLTk4Myw2ICs5ODQsMTAgQEAgYWRkX2N1c3RvbV9jb21tYW5kKAogICAg
IENPTU1BTkQgJHtQWVRIT05fRVhFQ1VUQUJMRX0gJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2dlbmVy
YXRlLWJ5dGVjb2RlLWZpbGVzIC0tYnl0ZWNvZGVzX2ggJHtERVJJVkVEX1NPVVJDRVNfSkFWQVND
UklQVENPUkVfRElSfS9CeXRlY29kZXMuaCAtLWluaXRfYnl0ZWNvZGVzX2FzbSAke0RFUklWRURf
U09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0luaXRCeXRlY29kZXMuYXNtICR7SkFWQVNDUklQ
VENPUkVfRElSfS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgogICAgIFZFUkJBVElNKQogCits
aXN0KEFQUEVORCBKYXZhU2NyaXB0Q29yZV9IRUFERVJTCisgICAgJHtERVJJVkVEX1NPVVJDRVNf
SkFWQVNDUklQVENPUkVfRElSfS9CeXRlY29kZXMuaAorKQorCiBhZGRfY3VzdG9tX2NvbW1hbmQo
CiAgICAgT1VUUFVUICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vTExJbnRE
ZXNpcmVkT2Zmc2V0cy5oCiAgICAgTUFJTl9ERVBFTkRFTkNZICR7SkFWQVNDUklQVENPUkVfRElS
fS9vZmZsaW5lYXNtL2dlbmVyYXRlX29mZnNldF9leHRyYWN0b3IucmIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggYTYwM2NmYzI1ZmNiZmU0ZDcxNDU5NzY5NjVkNzFmNTkyMjg1ZDA4
NC4uZjQzY2Q5MTJhNTgyYWNiZjZlNzYxNjE3Yzk3ZTA2ODMzNjYyYTczYSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTc5OSw4ICs3OTksNiBAQAogCQkwRkVDODUxODFCREFDREFD
MDA4MEZGNzQgLyogQjNHZW5lcmF0ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRkVDODRDRTFCREFDREFDMDA4MEZGNzQgLyogQjNHZW5lcmF0ZS5j
cHAgKi87IH07CiAJCTBGRUM4NTE5MUJEQUNEQUMwMDgwRkY3NCAvKiBCM0dlbmVyYXRlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkVDODRDRjFCREFD
REFDMDA4MEZGNzQgLyogQjNHZW5lcmF0ZS5oICovOyB9OwogCQkwRkVDODUxQTFCREFDREFDMDA4
MEZGNzQgLyogQjNHZW5lcmljRnJlcXVlbnRlZEJsb2NrLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkVDODREMDFCREFDREFDMDA4MEZGNzQgLyogQjNH
ZW5lcmljRnJlcXVlbnRlZEJsb2NrLmggKi87IH07Ci0JCTBGRUM4NTFCMUJEQUNEQUMwMDgwRkY3
NCAvKiBCM0luZGV4TWFwLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRkVDODREMTFCREFDREFDMDA4MEZGNzQgLyogQjNJbmRleE1hcC5oICovOyB9Owot
CQkwRkVDODUxQzFCREFDREFDMDA4MEZGNzQgLyogQjNJbmRleFNldC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFQzg0RDIxQkRBQ0RBQzAwODBGRjc0
IC8qIEIzSW5kZXhTZXQuaCAqLzsgfTsKIAkJMEZFQzg1MUQxQkRBQ0RBQzAwODBGRjc0IC8qIEIz
TG93ZXJUb0Fpci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRkVDODREMzFCREFDREFDMDA4MEZGNzQgLyogQjNMb3dlclRvQWlyLmNwcCAqLzsgfTsK
IAkJMEZFQzg1MUUxQkRBQ0RBQzAwODBGRjc0IC8qIEIzTG93ZXJUb0Fpci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFQzg0RDQxQkRBQ0RBQzAwODBG
Rjc0IC8qIEIzTG93ZXJUb0Fpci5oICovOyB9OwogCQkwRkVDODUxRjFCREFDREFDMDA4MEZGNzQg
LyogQjNNZW1vcnlWYWx1ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRkVDODRENTFCREFDREFDMDA4MEZGNzQgLyogQjNNZW1vcnlWYWx1ZS5jcHAg
Ki87IH07CkBAIC0xMjg1LDggKzEyODMsNiBAQAogCQk3MDlGQjg2QzFBRTMzNUM2MDAzOUQwNjkg
LyogV2Vha1NldFByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNzA5RkI4NjYxQUUzMzVDNjAwMzlEMDY5IC8qIFdlYWtTZXRQcm90b3R5cGUu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MEIw
QTlEMTFBOUI2NjQ2MDAwMTMwNkEgLyogUnVudGltZUZsYWdzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEIwQTlEMDFBOUI2NjIwMDAwMTMwNkEgLyog
UnVudGltZUZsYWdzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNzBCNzkxOTExQzAyNEExMzAwMjQ4MUUyIC8qIFNvdXJjZUNvZGVLZXkuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwQjc5MThFMUMwMjQ0
QzkwMDI0ODFFMiAvKiBTb3VyY2VDb2RlS2V5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNzBCNzkxOTIxQzAyNEEyMzAwMjQ4MUUyIC8qIEdlbmVy
YXRvckZyYW1lLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDcwQjc5MTgzMUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGcmFtZS5jcHAgKi87IH07
Ci0JCTcwQjc5MTkzMUMwMjRBMjgwMDI0ODFFMiAvKiBHZW5lcmF0b3JGcmFtZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBCNzkxODQxQzAyNDQzMjAw
MjQ4MUUyIC8qIEdlbmVyYXRvckZyYW1lLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzBCNzkxOTQxQzAyNEEyODAwMjQ4MUUyIC8qIEdlbmVyYXRv
ckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNzBCNzkxODUxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0
aW9uQ29uc3RydWN0b3IuY3BwICovOyB9OwogCQk3MEI3OTE5NTFDMDI0QTI4MDAyNDgxRTIgLyog
R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNzBCNzkxODYxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRv
ckZ1bmN0aW9uQ29uc3RydWN0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk3MEI3OTE5NjFDMDI0QTI4MDAyNDgxRTIgLyogR2VuZXJhdG9yRnVu
Y3Rpb25Qcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNzBCNzkxODcxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uUHJv
dG90eXBlLmNwcCAqLzsgfTsKQEAgLTIwNjAsNiArMjA1NiwxMSBAQAogCQlFMThFM0E1OTBERjky
NzhDMDBEOTBCMzQgLyogVk0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTE4RTNBNTcwREY5Mjc4QzAwRDkwQjM0IC8qIFZNLmNwcCAqLzsgfTsKIAkJ
RTMxOENCQzAxQjhBRUY1MTAwQTI5MjlEIC8qIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMThDQkJFMUI4
QUVGNTEwMEEyOTI5RCAvKiBKU01vZHVsZU5hbWVzcGFjZU9iamVjdC5jcHAgKi87IH07CiAJCUUz
MThDQkMxMUI4QUVGNTEwMEEyOTI5RCAvKiBKU01vZHVsZU5hbWVzcGFjZU9iamVjdC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMxOENCQkYxQjhBRUY1
MTAwQTI5MjlEIC8qIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTMyOERBRTcxRDM4RDAwNDAwMUEyNTI5
IC8qIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzRDI2NDI2MUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRl
Y29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHAgKi87IH07CisJCUUzMjhEQUU4MUQzOEQwMDUwMDFB
MjUyOSAvKiBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNEMjY0MjcxRDM4QzA0MjAwMEJFMTc0IC8qIEJ5
dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTMyOERBRTkxRDM4RDAwNTAwMUEyNTI5IC8qIEJ5dGVjb2Rl
R3JhcGguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUz
RDI2NDI4MUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRlY29kZUdyYXBoLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTMyOERBRUExRDM4RDAwNTAwMUEy
NTI5IC8qIEJ5dGVjb2RlUmV3cml0ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTNEMjY0MjkxRDM4QzA0MjAwMEJFMTc0IC8qIEJ5dGVjb2RlUmV3
cml0ZXIuY3BwICovOyB9OworCQlFMzI4REFFQjFEMzhEMDA1MDAxQTI1MjkgLyogQnl0ZWNvZGVS
ZXdyaXRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTNEMjY0MkExRDM4QzA0MjAwMEJFMTc0IC8qIEJ5dGVjb2RlUmV3cml0ZXIuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzM2MzdBNTFCNjMyMjAy
MDBFRTA4NDAgLyogUmVmbGVjdE9iamVjdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFMzM2MzdBMzFCNjMyMjAyMDBFRTA4NDAgLyogUmVmbGVjdE9i
amVjdC5jcHAgKi87IH07CiAJCUUzMzYzN0E2MUI2MzIyMDIwMEVFMDg0MCAvKiBSZWZsZWN0T2Jq
ZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzM2
MzdBNDFCNjMyMjAyMDBFRTA4NDAgLyogUmVmbGVjdE9iamVjdC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzM0IzRTI2MUI3QUJENzUwMDQ4REIy
RSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QubHV0LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzNCM0UyNTFCN0FCRDc1MDA0OERCMkUg
LyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0Lmx1dC5oICovOyB9OwpAQCAtMjA4NCw2
ICsyMDg1LDcgQEAKIAkJRTM3OTRFNzUxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVy
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNzk0
RTczMUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFseXplci5jcHAgKi87IH07CiAJCUUzNzk0
RTc2MUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFseXplci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM3OTRFNzQxQjc3RUI5NzAwNTU0M0FFIC8q
IE1vZHVsZUFuYWx5emVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJRTM5NjNDRUUxQjczRjc1MDAwRUI0Q0U1IC8qIE5vZGVzQW5hbHl6ZU1vZHVs
ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzk2
M0NFQzFCNzNGNzUwMDBFQjRDRTUgLyogTm9kZXNBbmFseXplTW9kdWxlLmNwcCAqLzsgfTsKKwkJ
RTM5RDQ1RjUxRDM5MDA1NjAwQjNCMzc3IC8qIEludGVycHJldGVySW5saW5lcy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5RDlEODQxRDM5MDAwNjAw
NjY3MjgyIC8qIEludGVycHJldGVySW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzOURBNEE2MUI3RThCN0MwMDg0RjMzQSAvKiBKU01v
ZHVsZVJlY29yZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFMzlEQTRBNDFCN0U4QjdDMDA4NEYzM0EgLyogSlNNb2R1bGVSZWNvcmQuY3BwICovOyB9
OwogCQlFMzlEQTRBNzFCN0U4QjdDMDA4NEYzM0EgLyogSlNNb2R1bGVSZWNvcmQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOURBNEE1MUI3RThCN0Mw
MDg0RjMzQSAvKiBKU01vZHVsZVJlY29yZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCUUzRDIzOUM4MUI4MjlDMUMwMEJCRUY2NyAvKiBKU01vZHVs
ZUVudmlyb25tZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEUzRDIzOUM2MUI4MjlDMUMwMEJCRUY2NyAvKiBKU01vZHVsZUVudmlyb25tZW50LmNw
cCAqLzsgfTsKQEAgLTMwNDEsOCArMzA0Myw2IEBACiAJCTBGRUM4NENFMUJEQUNEQUMwMDgwRkY3
NCAvKiBCM0dlbmVyYXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IEIzR2VuZXJhdGUuY3BwOyBwYXRoID0gYjMvQjNHZW5lcmF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTBGRUM4NENGMUJEQUNEQUMwMDgwRkY3NCAvKiBCM0dlbmVyYXRlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEIzR2VuZXJhdGUuaDsgcGF0aCA9IGIz
L0IzR2VuZXJhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZFQzg0RDAxQkRB
Q0RBQzAwODBGRjc0IC8qIEIzR2VuZXJpY0ZyZXF1ZW50ZWRCbG9jay5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBCM0dlbmVyaWNGcmVxdWVudGVkQmxvY2suaDsgcGF0aCA9IGIz
L0IzR2VuZXJpY0ZyZXF1ZW50ZWRCbG9jay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQkwRkVDODREMTFCREFDREFDMDA4MEZGNzQgLyogQjNJbmRleE1hcC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBCM0luZGV4TWFwLmg7IHBhdGggPSBiMy9CM0luZGV4TWFwLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTBGRUM4NEQyMUJEQUNEQUMwMDgwRkY3NCAv
KiBCM0luZGV4U2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEIzSW5kZXhT
ZXQuaDsgcGF0aCA9IGIzL0IzSW5kZXhTZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMEZFQzg0RDMxQkRBQ0RBQzAwODBGRjc0IC8qIEIzTG93ZXJUb0Fpci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBCM0xvd2VyVG9BaXIuY3BwOyBwYXRoID0gYjMv
QjNMb3dlclRvQWlyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZFQzg0RDQx
QkRBQ0RBQzAwODBGRjc0IC8qIEIzTG93ZXJUb0Fpci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBCM0xvd2VyVG9BaXIuaDsgcGF0aCA9IGIzL0IzTG93ZXJUb0Fpci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkVDODRENTFCREFDREFDMDA4MEZGNzQgLyogQjNN
ZW1vcnlWYWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBCM01l
bW9yeVZhbHVlLmNwcDsgcGF0aCA9IGIzL0IzTWVtb3J5VmFsdWUuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMzUyNCw4ICszNTI0LDYgQEAKIAkJNzA5RkI4NjUxQUUzMzVDNjAw
MzlEMDY5IC8qIFdlYWtTZXRQcm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gV2Vha1NldFByb3RvdHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTcwOUZCODY2MUFFMzM1QzYwMDM5RDA2OSAvKiBXZWFrU2V0UHJvdG90eXBlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYWtTZXRQcm90b3R5cGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzBCMEE5RDAxQTlCNjYyMDAwMDEzMDZBIC8qIFJ1bnRp
bWVGbGFncy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSdW50aW1lRmxhZ3Mu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNzBCNzkxODMxQzAyNDQzMjAwMjQ4MUUy
IC8qIEdlbmVyYXRvckZyYW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEdlbmVyYXRvckZyYW1lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNzBC
NzkxODQxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZyYW1lLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEdlbmVyYXRvckZyYW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTcwQjc5MTg1MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvbkNv
bnN0cnVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdlbmVy
YXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3MEI3OTE4NjFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rv
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHZW5lcmF0b3JGdW5jdGlvbkNv
bnN0cnVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcwQjc5MTg3MUMwMjQ0
MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00MzY1LDEwICs0MzYzLDE2IEBACiAJCUUz
Nzk0RTczMUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFseXplci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNb2R1bGVBbmFseXplci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUUzNzk0RTc0MUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFs
eXplci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb2R1bGVBbmFseXplci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzk2M0NFQzFCNzNGNzUwMDBFQjRDRTUg
LyogTm9kZXNBbmFseXplTW9kdWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IE5vZGVzQW5hbHl6ZU1vZHVsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUUzOUQ5RDg0MUQzOTAwMDYwMDY2NzI4MiAvKiBJbnRlcnByZXRlcklubGluZXMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW50ZXJwcmV0ZXJJbmxpbmVzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOURBNEE0MUI3RThCN0MwMDg0RjMzQSAvKiBKU01v
ZHVsZVJlY29yZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU01v
ZHVsZVJlY29yZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOURBNEE1MUI3
RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29yZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKU01vZHVsZVJlY29yZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlFM0QyMzlDNjFCODI5QzFDMDBCQkVGNjcgLyogSlNNb2R1bGVFbnZpcm9ubWVudC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU01vZHVsZUVudmlyb25tZW50LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNEMjM5QzcxQjgyOUMxQzAwQkJFRjY3
IC8qIEpTTW9kdWxlRW52aXJvbm1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSlNNb2R1bGVFbnZpcm9ubWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlF
M0QyNjQyNjFEMzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQnl0ZWNvZGVHZW5lcmF0b3Jp
ZmljYXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFM0QyNjQyNzFEMzhD
MDQyMDAwQkUxNzQgLyogQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTNEMjY0MjgxRDM4QzA0MjAwMEJFMTc0IC8qIEJ5dGVj
b2RlR3JhcGguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnl0ZWNvZGVHcmFw
aC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFM0QyNjQyOTFEMzhDMDQyMDAwQkUx
NzQgLyogQnl0ZWNvZGVSZXdyaXRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBCeXRlY29kZVJld3JpdGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJRTNEMjY0MkExRDM4QzA0MjAwMEJFMTc0IC8qIEJ5dGVjb2RlUmV3cml0ZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnl0ZWNvZGVSZXdyaXRlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlFM0VGODg3MjFCNjZERjIzMDAzRjI2Q0IgLyogSlNQcm9wZXJ0
eU5hbWVJdGVyYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RTNFRjg4NzMxQjY2REYyMzAwM0YyNkNCIC8qIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNDlEQzE0OTEyRUYyNjFBMDAxODRBMUYgLyog
U291cmNlUHJvdmlkZXJDYWNoZUl0ZW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU291cmNlUHJvdmlkZXJDYWNoZUl0ZW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTQ4NDIsOCArNDg0Niw2IEBACiAJCQkJMEZFQzg0RDAxQkRBQ0RBQzAwODBGRjc0IC8qIEIz
R2VuZXJpY0ZyZXF1ZW50ZWRCbG9jay5oICovLAogCQkJCTBGRUM4NUJGMUJFMTY3QTAwMDgwRkY3
NCAvKiBCM0hlYXBSYW5nZS5jcHAgKi8sCiAJCQkJMEZFQzg1QzAxQkUxNjdBMDAwODBGRjc0IC8q
IEIzSGVhcFJhbmdlLmggKi8sCi0JCQkJMEZFQzg0RDExQkRBQ0RBQzAwODBGRjc0IC8qIEIzSW5k
ZXhNYXAuaCAqLywKLQkJCQkwRkVDODREMjFCREFDREFDMDA4MEZGNzQgLyogQjNJbmRleFNldC5o
ICovLAogCQkJCURDNjlCOTlBMUQxNUY5MEYwMDJFM0MwMCAvKiBCM0luZmVyU3dpdGNoZXMuY3Bw
ICovLAogCQkJCURDNjlCOTlCMUQxNUY5MEYwMDJFM0MwMCAvKiBCM0luZmVyU3dpdGNoZXMuaCAq
LywKIAkJCQkwRkVDODVCNDFCRTE0NjJGMDA4MEZGNzQgLyogQjNJbnNlcnRpb25TZXQuY3BwICov
LApAQCAtNTA5OSw2ICs1MTAxLDcgQEAKIAkJMTQyOUQ3N0EwRUQyMEQ3MzAwQjg5NjE5IC8qIGlu
dGVycHJldGVyICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJ
CQlFMzlEOUQ4NDFEMzkwMDA2MDA2NjcyODIgLyogSW50ZXJwcmV0ZXJJbmxpbmVzLmggKi8sCiAJ
CQkJMEY1NUYwRjExNEQxMDYzNjAwQUM3NjQ5IC8qIEFic3RyYWN0UEMuY3BwICovLAogCQkJCTBG
NTVGMEYyMTREMTA2MzYwMEFDNzY0OSAvKiBBYnN0cmFjdFBDLmggKi8sCiAJCQkJMTQyOUQ4NUIw
RUQyMThFOTAwQjg5NjE5IC8qIENMb29wU3RhY2suY3BwICovLApAQCAtNTc4OSw4ICs1NzkyLDYg
QEAKIAkJCQlGNjkyQTg1RDAyNTU1OTdEMDFGRjYwRjcgLyogRnVuY3Rpb25Qcm90b3R5cGUuaCAq
LywKIAkJCQk2MkQyRDM4RDFBREYxMDNGMDAwMjA2QzEgLyogRnVuY3Rpb25SYXJlRGF0YS5jcHAg
Ki8sCiAJCQkJNjJEMkQzOEUxQURGMTAzRjAwMDIwNkMxIC8qIEZ1bmN0aW9uUmFyZURhdGEuaCAq
LywKLQkJCQk3MEI3OTE4MzFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnJhbWUuY3BwICov
LAotCQkJCTcwQjc5MTg0MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGcmFtZS5oICovLAog
CQkJCTcwQjc5MTg1MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVj
dG9yLmNwcCAqLywKIAkJCQk3MEI3OTE4NjFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnVu
Y3Rpb25Db25zdHJ1Y3Rvci5oICovLAogCQkJCTcwQjc5MTg3MUMwMjQ0MzIwMDI0ODFFMiAvKiBH
ZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5jcHAgKi8sCkBAIC02Njc5LDYgKzY2ODAsMTEgQEAK
IAkJOTY5QTA3OEYwRUQxRDNBRTAwRjFGNjgxIC8qIGJ5dGVjb2RlICovID0gewogCQkJaXNhID0g
UEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlFM0QyNjQyNjFEMzhDMDQyMDAwQkUxNzQg
LyogQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwICovLAorCQkJCUUzRDI2NDI3MUQzOEMw
NDIwMDBCRTE3NCAvKiBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5oICovLAorCQkJCUUzRDI2
NDI4MUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRlY29kZUdyYXBoLmggKi8sCisJCQkJRTNEMjY0Mjkx
RDM4QzA0MjAwMEJFMTc0IC8qIEJ5dGVjb2RlUmV3cml0ZXIuY3BwICovLAorCQkJCUUzRDI2NDJB
MUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRlY29kZVJld3JpdGVyLmggKi8sCiAJCQkJNTM3MEI0RjMx
QkYyNUVBMjAwNUM0MEZDIC8qIEFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2lu
dEJhc2UuY3BwICovLAogCQkJCTUzNzBCNEY0MUJGMjVFQTIwMDVDNDBGQyAvKiBBZGFwdGl2ZUlu
ZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnRCYXNlLmggKi8sCiAJCQkJMEY4MzM1QjQxNjM5
QzFFMzAwMTQ0M0I1IC8qIEFycmF5QWxsb2NhdGlvblByb2ZpbGUuY3BwICovLApAQCAtNzIyMCw4
ICs3MjI2LDYgQEAKIAkJCQkwRkVDODVDMzFCRTE2N0EwMDA4MEZGNzQgLyogQjNIZWFwUmFuZ2Uu
aCBpbiBIZWFkZXJzICovLAogCQkJCTI2NzE4QkE1MUJFOTlGNzgwMDUyMDE3QiAvKiBBaXJJdGVy
YXRlZFJlZ2lzdGVyQ29hbGVzY2luZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5NjMwM0MxRDQx
OTJDRDAwNTYwOUQ5IC8qIERlc3RydWN0aW9uTW9kZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMEZF
Qzg1MUIxQkRBQ0RBQzAwODBGRjc0IC8qIEIzSW5kZXhNYXAuaCBpbiBIZWFkZXJzICovLAotCQkJ
CTBGRUM4NTFDMUJEQUNEQUMwMDgwRkY3NCAvKiBCM0luZGV4U2V0LmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRkVDODVCQTFCRTE0NjJGMDA4MEZGNzQgLyogQjNJbnNlcnRpb25TZXQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGRUM4NUJCMUJFMTQ2MkYwMDgwRkY3NCAvKiBCM0luc2VydGlvblNldElu
bGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUM4NTFFMUJEQUNEQUMwMDgwRkY3NCAvKiBC
M0xvd2VyVG9BaXIuaCBpbiBIZWFkZXJzICovLApAQCAtNzIzNSw2ICs3MjM5LDcgQEAKIAkJCQkw
RkVDODUyRDFCREFDREFDMDA4MEZGNzQgLyogQjNQcm9jZWR1cmVJbmxpbmVzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRkVDODVCRDFCRTE0NjJGMDA4MEZGNzQgLyogQjNSZWR1Y2VTdHJlbmd0aC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQzg1MzExQkRBQ0RBQzAwODBGRjc0IC8qIEIzU3RhY2tt
YXBTcGVjaWFsLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzI4REFFODFEMzhEMDA1MDAxQTI1Mjkg
LyogQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUM4
NTM1MUJEQUNEQUMwMDgwRkY3NCAvKiBCM1Nsb3RCYXNlVmFsdWUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGRUM4NTM2MUJEQUNEQUMwMDgwRkY3NCAvKiBCM1N1Y2Nlc3NvckNvbGxlY3Rpb24uaCBp
biBIZWFkZXJzICovLAogCQkJCTBGRUM4NTM4MUJEQUNEQUMwMDgwRkY3NCAvKiBCM1N3aXRjaENh
c2UuaCBpbiBIZWFkZXJzICovLApAQCAtNzUwMiw3ICs3NTA3LDYgQEAKIAkJCQlBNzM3ODEwRTE3
OTlFQTJFMDA4MTc1MzMgLyogREZHTmF0dXJhbExvb3BzLmggaW4gSGVhZGVycyAqLywKIAkJCQk4
NkVDQTNFQTEzMkRFRjFDMDAyQjJBRDcgLyogREZHTm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEZGQjkyMUIxNkQwMkYwMTAwNTVBNURCIC8qIERGR05vZGVBbGxvY2F0b3IuaCBpbiBIZWFkZXJz
ICovLAotCQkJCTcwQjc5MTkzMUMwMjRBMjgwMDI0ODFFMiAvKiBHZW5lcmF0b3JGcmFtZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEZBNTgxQkIxNTBFOTUzMDAwQjlBMkQ5IC8qIERGR05vZGVGbGFn
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYzMDBCNzgxOEFCMDUxMTAwQTZENzJFIC8qIERGR05v
ZGVPcmlnaW4uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQTU4MUJDMTUwRTk1MzAwMEI5QTJEOSAv
KiBERkdOb2RlVHlwZS5oIGluIEhlYWRlcnMgKi8sCkBAIC03NTE3LDYgKzc1MjEsNyBAQAogCQkJ
CTBGRDhBMzI2MTdENTFGNTcwMENBMkM0MCAvKiBERkdPU1JFbnRyeXBvaW50Q3JlYXRpb25QaGFz
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDMDk3NkExNDY4QTZGNzAwQ0YyNDQyIC8qIERGR09T
UkV4aXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjM1QkVDMTcxNzhFNzMwMDY5MEM3RiAvKiBE
RkdPU1JFeGl0QmFzZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM5RDQ1RjUxRDM5MDA1NjAwQjNC
Mzc3IC8qIEludGVycHJldGVySW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGQjkyMUMx
NkQwMkYxMTAwNTVBNURCIC8qIERGR09TUkV4aXRDb21waWxhdGlvbkluZm8uaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGQzA5NzcxMTQ2OTNBRjUwMENGMjQ0MiAvKiBERkdPU1JFeGl0Q29tcGlsZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGNzAyNUFBMTcxNEIwRkMwMDM4MkMwRSAvKiBERkdPU1JF
eGl0Q29tcGlsZXJDb21tb24uaCBpbiBIZWFkZXJzICovLApAQCAtNzc4MSw2ICs3Nzg2LDcgQEAK
IAkJCQlFMzNCM0UyNjFCN0FCRDc1MDA0OERCMkUgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
T2JqZWN0Lmx1dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTUzMjQzOEMxODU2ODMzNTAwMkVENjky
IC8qIEluc3BlY3RvclByb3RvY29sT2JqZWN0cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU1RDkz
QUMxODUxNEY3OTAwNDAwREVEIC8qIEluc3BlY3RvclByb3RvY29sVHlwZXMuaCBpbiBIZWFkZXJz
ICovLAorCQkJCUUzMjhEQUVCMUQzOEQwMDUwMDFBMjUyOSAvKiBCeXRlY29kZVJld3JpdGVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBNTBFNEI2MjE4ODA5REQ1MDA2OEE0NkQgLyogSW5zcGVjdG9y
UnVudGltZUFnZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTkzQ0Y4MzE4NDAzNzcxMDBCRkNF
MjcgLyogSW5zcGVjdG9yVmFsdWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NjlBMDc5OTBFRDFE
M0FFMDBGMUY2ODEgLyogSW5zdHJ1Y3Rpb24uaCBpbiBIZWFkZXJzICovLApAQCAtNzkxMyw2ICs3
OTE5LDcgQEAKIAkJCQlFMzNGNTA4MTFCODQyOUE0MDA0MTM4NTYgLyogSlNJbnRlcm5hbFByb21p
c2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNjE4MzJBMUM0NUJGMDcwMDcyNDUwQiAvKiBBaXJD
Q2FsbGluZ0NvbnZlbnRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUUzM0Y1MDc5MUI4NDIyNTcw
MDQxMzg1NiAvKiBKU0ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywK
KwkJCQlFMzI4REFFOTFEMzhEMDA1MDAxQTI1MjkgLyogQnl0ZWNvZGVHcmFwaC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJRTMzRjUwODcxQjg0NDlFRjAwNDEzODU2IC8qIEpTSW50ZXJuYWxQcm9taXNl
Q29uc3RydWN0b3IubHV0LmggaW4gSGVhZGVycyAqLywKIAkJCQlFMzNGNTA4NTFCODQzN0EwMDA0
MTM4NTYgLyogSlNJbnRlcm5hbFByb21pc2VEZWZlcnJlZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
RTMzRjUwNzUxQjg0MjFDMDAwNDEzODU2IC8qIEpTSW50ZXJuYWxQcm9taXNlUHJvdG90eXBlLmgg
aW4gSGVhZGVycyAqLywKQEAgLTg4ODQsNiArODg5MSw3IEBACiAJCQkJMTQ3RjM5QkQxMDdFQzM3
NjAwNDI3QTQ4IC8qIEFyZ0xpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY3NDNCQUExNkI4
ODI0OTAwOUY5Mjc3IC8qIEFSTTY0RGlzYXNzZW1ibGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTg2RDNCMkMzMTAxNTZCREUwMDI4NjVFNyAvKiBBUk1Bc3NlbWJsZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJRTMyOERBRTcxRDM4RDAwNDAwMUEyNTI5IC8qIEJ5dGVjb2RlR2VuZXJhdG9yaWZp
Y2F0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTY1QzAyODUwMTcxNzk1RTIwMDM1MUUzNSAv
KiBBUk12N0Rpc2Fzc2VtYmxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2NUMwMjg1QzE3MTc5
NjY4MDAzNTFFMzUgLyogQVJNdjdET3Bjb2RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGODMz
NUI3MTYzOUMxRTYwMDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcCBpbiBTb3Vy
Y2VzICovLApAQCAtOTIxOSw2ICs5MjI3LDcgQEAKIAkJCQkwRjI1RjFCMTE4MTYzNUYzMDA1MjJG
MzkgLyogRlRMU2xvd1BhdGhDYWxsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMzM4REYxMUJF
OTNBRDEwMDEzQzg4RiAvKiBCM1N0YWNrbWFwVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MEYyNUYxQjMxODE2MzVGMzAwNTIyRjM5IC8qIEZUTFNsb3dQYXRoQ2FsbEtleS5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQlFMzI4REFFQTFEMzhEMDA1MDAxQTI1MjkgLyogQnl0ZWNvZGVSZXdyaXRl
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MzE5REEwMzFDMUJFNDBBMDAxRDI2MEIgLyogQjNM
b3dlck1hY3Jvc0FmdGVyT3B0aW1pemF0aW9ucy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkVB
MEExNjE3MDZCQjkwMDBCQjcyMkMgLyogRlRMU3RhdGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MEYyMzVCRTExNzE3OEUxQzAwNjkwQzdGIC8qIEZUTFRodW5rcy5jcHAgaW4gU291cmNlcyAqLywK
QEAgLTk2MjksNyArOTYzOCw2IEBACiAJCQkJNzlFRTBCRkYxQjRBRkI4NTAwMDM4NUM5IC8qIFZh
cmlhYmxlRW52aXJvbm1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY2QzczNTAxQUM5Rjk5
RjAwQkUxNjgyIC8qIFZhcmlhYmxlV3JpdGVGaXJlRGV0YWlsLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTBGRTA1MDJDMUFBOTA5NTYwMEQzM0IzMyAvKiBWYXJPZmZzZXQuY3BwIGluIFNvdXJjZXMg
Ki8sCi0JCQkJNzBCNzkxOTIxQzAyNEEyMzAwMjQ4MUUyIC8qIEdlbmVyYXRvckZyYW1lLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTBGMjBDMjU5MUE4MDEzQUIwMERBMzIyOSAvKiBWaXJ0dWFsUmVn
aXN0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTE4RTNBNTkwREY5Mjc4QzAwRDkwQjM0IC8q
IFZNLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZFNTkzMkE3MTgzQzVBMjYwMEExRUNDQyAvKiBW
TUVudHJ5U2NvcGUuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNCYXNpY0Jsb2NrVXRpbHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM0Jhc2ljQmxvY2tVdGlscy5oCmluZGV4IDRhNzE3Njc4NzhjNmViMzcyMzA1MGRlOTIxOTVl
ZGVhNTg1MDE5ZjcuLjMyYTU5ZmMxMjBjYjg0MGZhYmEwNmIxZjdkMWQ3YjFiNWE5YWFkOWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0Jhc2ljQmxvY2tVdGlscy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0Jhc2ljQmxvY2tVdGlscy5oCkBAIC0yOCw4
ICsyOCw4IEBACiAKICNpZiBFTkFCTEUoQjNfSklUKQogCi0jaW5jbHVkZSAiQjNJbmRleFNldC5o
IgogI2luY2x1ZGUgPHd0Zi9HcmFwaE5vZGVXb3JrbGlzdC5oPgorI2luY2x1ZGUgPHd0Zi9JbmRl
eFNldC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVz
cGFjZSBCMyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNCbG9ja1dv
cmtsaXN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNCbG9ja1dvcmtsaXN0LmgKaW5k
ZXggYWY3ZWUyYzk2YmM5ODg4OWJkMGQ3OGIxNmU2Mjc4ZDU3M2NmNjIyMS4uOWU2YmU0YmI5Zjcw
MTkyMjNlMTVlMmFjNDljOGY2ZGUxNmM4ODk2NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzQmxvY2tXb3JrbGlzdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM0Jsb2NrV29ya2xpc3QuaApAQCAtMjgsMTMgKzI4LDE0IEBACiAKICNpZiBFTkFCTEUoQjNf
SklUKQogCi0jaW5jbHVkZSAiQjNCYXNpY0Jsb2NrLmgiCi0jaW5jbHVkZSAiQjNJbmRleFNldC5o
IgogI2luY2x1ZGUgPHd0Zi9HcmFwaE5vZGVXb3JrbGlzdC5oPgorI2luY2x1ZGUgPHd0Zi9JbmRl
eFNldC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVz
cGFjZSBCMyB7CiAKK2NsYXNzIEJhc2ljQmxvY2s7CisKIHR5cGVkZWYgR3JhcGhOb2RlV29ya2xp
c3Q8QmFzaWNCbG9jayosIEluZGV4U2V0PEJhc2ljQmxvY2s+PiBCbG9ja1dvcmtsaXN0OwogCiAv
LyBXaGVuIHlvdSBzYXkgQmxvY2tXaXRoPGludD4geW91IHNob3VsZCByZWFkIGl0IGFzICJibG9j
ayB3aXRoIGFuIGludCIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjND
RkcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NGRy5oCmluZGV4IDU4YzQwYjFiYmFm
NzdkZGVmYTFkMjA2M2Y5M2U1ODk0NTkxZDE3YjMuLjkwNGFiM2Y5YTM2MGMyOTk1NjIwYTAwMmZh
YTdjMTVkZTIyNWVhYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NG
Ry5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NGRy5oCkBAIC0yOSw5ICsyOSw5
IEBACiAjaWYgRU5BQkxFKEIzX0pJVCkKIAogI2luY2x1ZGUgIkIzQmFzaWNCbG9jay5oIgotI2lu
Y2x1ZGUgIkIzSW5kZXhNYXAuaCIKLSNpbmNsdWRlICJCM0luZGV4U2V0LmgiCiAjaW5jbHVkZSAi
QjNQcm9jZWR1cmUuaCIKKyNpbmNsdWRlIDx3dGYvSW5kZXhNYXAuaD4KKyNpbmNsdWRlIDx3dGYv
SW5kZXhTZXQuaD4KIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0R1cGxpY2F0ZVRhaWxzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0R1cGxpY2F0ZVRhaWxzLmNwcAppbmRleCBlZWNjZjU3YmE1
NDc1MzA0ODFmMDkwNWVkZjg4ODM5YjJhODJlMTFkLi5mZTk0YTYwN2Q3ZDVkOTFlNTAyNGQwOWRk
ZWFkYzk1MTY2YTQ2NjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNE
dXBsaWNhdGVUYWlscy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRHVwbGlj
YXRlVGFpbHMuY3BwCkBAIC0zMiwxMyArMzIsMTMgQEAKICNpbmNsdWRlICJCM0JyZWFrQ3JpdGlj
YWxFZGdlcy5oIgogI2luY2x1ZGUgIkIzRG9taW5hdG9ycy5oIgogI2luY2x1ZGUgIkIzRml4U1NB
LmgiCi0jaW5jbHVkZSAiQjNJbmRleFNldC5oIgogI2luY2x1ZGUgIkIzSW5zZXJ0aW9uU2V0SW5s
aW5lcy5oIgogI2luY2x1ZGUgIkIzUGhhc2VTY29wZS5oIgogI2luY2x1ZGUgIkIzUHJvY2VkdXJl
SW5saW5lcy5oIgogI2luY2x1ZGUgIkIzU3dpdGNoVmFsdWUuaCIKICNpbmNsdWRlICJCM1Vwc2ls
b25WYWx1ZS5oIgogI2luY2x1ZGUgIkIzVmFsdWVJbmxpbmVzLmgiCisjaW5jbHVkZSA8d3RmL0lu
ZGV4U2V0Lmg+CiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgewogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNGaXhTU0EuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzRml4U1NBLmNwcAppbmRleCBmNGIwMTIyYzRkZWNkZTk1YzNkYjJkODI0MWY2
OTI4MmQ1YmEzOTZhLi43MzBjMmM4NzY2YzY1NjU0NmI0ODc0NmUxMjUwM2NkMzU5MzI0ZjhhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNGaXhTU0EuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0ZpeFNTQS5jcHAKQEAgLTMxLDcgKzMxLDYgQEAKICNp
bmNsdWRlICJCM0Jhc2ljQmxvY2tJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQjNCcmVha0NyaXRpY2Fs
RWRnZXMuaCIKICNpbmNsdWRlICJCM0RvbWluYXRvcnMuaCIKLSNpbmNsdWRlICJCM0luZGV4U2V0
LmgiCiAjaW5jbHVkZSAiQjNJbnNlcnRpb25TZXRJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQjNQaGFz
ZVNjb3BlLmgiCiAjaW5jbHVkZSAiQjNQcm9jZWR1cmVJbmxpbmVzLmgiCkBAIC00MSw2ICs0MCw3
IEBACiAjaW5jbHVkZSAiQjNWYXJpYWJsZS5oIgogI2luY2x1ZGUgIkIzVmFyaWFibGVWYWx1ZS5o
IgogI2luY2x1ZGUgPHd0Zi9Db21tYVByaW50ZXIuaD4KKyNpbmNsdWRlIDx3dGYvSW5kZXhTZXQu
aD4KIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0ZpeFNTQS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzRml4U1NBLmgKaW5kZXggNjYyZTQ5ZDYyOGFlZjYyMDk1MTA5NTg3ZWVhNDUzNTVjODA2Nzdj
NS4uODg1OTI3NmUyZDkyNmRmMzEwMjA2MDc3ZWE3NWIyMGFhNzQ4OGE0MyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRml4U1NBLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzRml4U1NBLmgKQEAgLTI4LDggKzI4LDkgQEAKIAogI2lmIEVOQUJMRShCM19K
SVQpCiAKLSNpbmNsdWRlICJCM0luZGV4U2V0LmgiCiAjaW5jbHVkZSAiQjNWYWx1ZS5oIgorI2lu
Y2x1ZGUgPHd0Zi9JbmRleFNldC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNw
YWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM0luZGV4TWFwLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNJbmRleE1h
cC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYWEzMzlmMDlkZTQyYzBiNGQ1OWJk
NmFmMmU5ODI2NGZiYzExYjYxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0luZGV4TWFwLmgKKysrIC9kZXYv
bnVsbApAQCAtMSw4NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCi0gKi8KLQotI2lmbmRlZiBCM0luZGV4TWFwX2gKLSNkZWZpbmUgQjNJbmRleE1h
cF9oCi0KLSNpZiBFTkFCTEUoQjNfSklUKQotCi0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotCi1u
YW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKLQotLy8gVGhpcyBpcyBhIG1hcCBmb3Iga2V5
cyB0aGF0IGhhdmUgYW4gaW5kZXgoKS4gSXQncyBzdXBlciBlZmZpY2llbnQgZm9yIEJhc2ljQmxv
Y2tzLiBJdCdzIG9ubHkKLS8vIGVmZmljaWVudCBmb3IgVmFsdWVzIGlmIHlvdSBkb24ndCBjcmVh
dGUgdG9vIG1hbnkgb2YgdGhlc2UgbWFwcywgc2luY2UgVmFsdWVzIGNhbiBoYXZlIHZlcnkKLS8v
IHNwYXJzZSBpbmRpY2VzIGFuZCB0aGVyZSBhcmUgYSBsb3Qgb2YgVmFsdWVzLgotCi10ZW1wbGF0
ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlPgotY2xhc3MgSW5kZXhNYXAgewotcHVibGlj
OgotICAgIGV4cGxpY2l0IEluZGV4TWFwKHNpemVfdCBzaXplID0gMCkKLSAgICB7Ci0gICAgICAg
IG1fdmVjdG9yLmZpbGwoVmFsdWUoKSwgc2l6ZSk7Ci0gICAgfQotCi0gICAgdm9pZCByZXNpemUo
c2l6ZV90IHNpemUpCi0gICAgewotICAgICAgICBtX3ZlY3Rvci5maWxsKFZhbHVlKCksIHNpemUp
OwotICAgIH0KLQotICAgIHZvaWQgY2xlYXIoKQotICAgIHsKLSAgICAgICAgbV92ZWN0b3IuZmls
bChWYWx1ZSgpLCBtX3ZlY3Rvci5zaXplKCkpOwotICAgIH0KLQotICAgIHNpemVfdCBzaXplKCkg
Y29uc3QgeyByZXR1cm4gbV92ZWN0b3Iuc2l6ZSgpOyB9Ci0KLSAgICBWYWx1ZSYgb3BlcmF0b3Jb
XShzaXplX3QgaW5kZXgpCi0gICAgewotICAgICAgICByZXR1cm4gbV92ZWN0b3JbaW5kZXhdOwot
ICAgIH0KLQotICAgIGNvbnN0IFZhbHVlJiBvcGVyYXRvcltdKHNpemVfdCBpbmRleCkgY29uc3QK
LSAgICB7Ci0gICAgICAgIHJldHVybiBtX3ZlY3RvcltpbmRleF07Ci0gICAgfQotICAgIAotICAg
IFZhbHVlJiBvcGVyYXRvcltdKEtleSoga2V5KQotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fdmVj
dG9yW2tleS0+aW5kZXgoKV07Ci0gICAgfQotICAgIAotICAgIGNvbnN0IFZhbHVlJiBvcGVyYXRv
cltdKEtleSoga2V5KSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fdmVjdG9yW2tleS0+
aW5kZXgoKV07Ci0gICAgfQotCi1wcml2YXRlOgotICAgIFZlY3RvcjxWYWx1ZT4gbV92ZWN0b3I7
Ci19OwotCi19IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKLQotI2VuZGlmIC8vIEVOQUJMRShCM19K
SVQpCi0KLSNlbmRpZiAvLyBCM0luZGV4TWFwX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM0luZGV4U2V0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNJbmRl
eFNldC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYjliMmI0ZTM0YmY0MzgwMDdh
ZDIxN2NiNWM3YTNlYTk0Y2I5YTQ2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0luZGV4U2V0LmgKKysrIC9k
ZXYvbnVsbApAQCAtMSwxNjUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAotICovCi0KLSNpZm5kZWYgQjNJbmRleFNldF9oCi0jZGVmaW5lIEIzSW5k
ZXhTZXRfaAotCi0jaW5jbHVkZSA8d3RmL0JpdFZlY3Rvci5oPgotI2luY2x1ZGUgPHd0Zi9Db21t
YVByaW50ZXIuaD4KLQotbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7Ci0KLS8vIFRoaXMg
aXMgYSBzZXQgZm9yIHRoaW5ncyB0aGF0IGhhdmUgYW4gaW5kZXgoKS4gSXQncyBzdXBlciBlZmZp
Y2llbnQgZm9yIEJhc2ljQmxvY2tzLiBJdCdzIG9ubHkKLS8vIGVmZmljaWVudCBmb3IgVmFsdWVz
IGlmIHlvdSBkb24ndCBjcmVhdGUgdG9vIG1hbnkgb2YgdGhlc2Ugc2V0cywgc2luY2UgVmFsdWVz
IGNhbiBoYXZlIHZlcnkgc3BhcnNlCi0vLyBpbmRpY2VzIGFuZCB0aGVyZSBhcmUgYSBsb3Qgb2Yg
VmFsdWVzLgotCi0vLyBJZiB5b3Ugd2FudCBhIHNldCBvZiBCYXNpY0Jsb2NrcywgeW91IGRvIElu
ZGV4U2V0PEJhc2ljQmxvY2s+LiBTbywgVCA9IEJhc2ljQmxvY2suCi10ZW1wbGF0ZTx0eXBlbmFt
ZSBUPgotY2xhc3MgSW5kZXhTZXQgewotcHVibGljOgotICAgIEluZGV4U2V0KCkKLSAgICB7Ci0g
ICAgfQotCi0gICAgYm9vbCBhZGQoVCogdmFsdWUpCi0gICAgewotICAgICAgICByZXR1cm4gIW1f
c2V0LnNldCh2YWx1ZS0+aW5kZXgoKSk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUg
SXRlcmFibGU+Ci0gICAgYm9vbCBhZGRBbGwoY29uc3QgSXRlcmFibGUmIGl0ZXJhYmxlKQotICAg
IHsKLSAgICAgICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKLSAgICAgICAgZm9yIChUKiB2YWx1ZSA6
IGl0ZXJhYmxlKQotICAgICAgICAgICAgcmVzdWx0IHw9IGFkZCh2YWx1ZSk7Ci0gICAgICAgIHJl
dHVybiByZXN1bHQ7Ci0gICAgfQotCi0gICAgYm9vbCByZW1vdmUoVCogdmFsdWUpCi0gICAgewot
ICAgICAgICByZXR1cm4gbV9zZXQuY2xlYXIodmFsdWUtPmluZGV4KCkpOwotICAgIH0KLQotICAg
IGJvb2wgY29udGFpbnMoVCogdmFsdWUpIGNvbnN0Ci0gICAgewotICAgICAgICBpZiAoIXZhbHVl
KQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICByZXR1cm4gbV9zZXQuZ2V0KHZh
bHVlLT5pbmRleCgpKTsKLSAgICB9Ci0KLSAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0Ci0gICAgewot
ICAgICAgICByZXR1cm4gbV9zZXQuYml0Q291bnQoKTsKLSAgICB9Ci0KLSAgICBib29sIGlzRW1w
dHkoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuICFzaXplKCk7Ci0gICAgfQotCi0gICAg
dGVtcGxhdGU8dHlwZW5hbWUgQ29sbGVjdGlvblR5cGU+Ci0gICAgY2xhc3MgSXRlcmFibGUgewot
ICAgIHB1YmxpYzoKLSAgICAgICAgSXRlcmFibGUoY29uc3QgQ29sbGVjdGlvblR5cGUmIGNvbGxl
Y3Rpb24sIGNvbnN0IEJpdFZlY3RvciYgc2V0KQotICAgICAgICAgICAgOiBtX2NvbGxlY3Rpb24o
Y29sbGVjdGlvbikKLSAgICAgICAgICAgICwgbV9zZXQoc2V0KQotICAgICAgICB7Ci0gICAgICAg
IH0KLQotICAgICAgICBjbGFzcyBpdGVyYXRvciB7Ci0gICAgICAgIHB1YmxpYzoKLSAgICAgICAg
ICAgIGl0ZXJhdG9yKCkKLSAgICAgICAgICAgICAgICA6IG1fY29sbGVjdGlvbihudWxscHRyKQot
ICAgICAgICAgICAgewotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpdGVyYXRvcihjb25z
dCBDb2xsZWN0aW9uVHlwZSYgY29sbGVjdGlvbiwgQml0VmVjdG9yOjppdGVyYXRvciBpdGVyKQot
ICAgICAgICAgICAgICAgIDogbV9jb2xsZWN0aW9uKCZjb2xsZWN0aW9uKQotICAgICAgICAgICAg
ICAgICwgbV9pdGVyKGl0ZXIpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICB9Ci0KLSAgICAg
ICAgICAgIFQqIG9wZXJhdG9yKigpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIG1fY29sbGVjdGlvbi0+YXQoKm1faXRlcik7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAg
ICAgIGl0ZXJhdG9yJiBvcGVyYXRvcisrKCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICArK21faXRlcjsKLSAgICAgICAgICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgICAgICAgICB9
Ci0KLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBpdGVyYXRvciYgb3RoZXIpIGNv
bnN0Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG1faXRlciA9PSBvdGhl
ci5tX2l0ZXI7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3IhPShj
b25zdCBpdGVyYXRvciYgb3RoZXIpIGNvbnN0Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwotICAgICAgICAgICAgfQotCi0gICAgICAgIHBy
aXZhdGU6Ci0gICAgICAgICAgICBjb25zdCBDb2xsZWN0aW9uVHlwZSogbV9jb2xsZWN0aW9uOwot
ICAgICAgICAgICAgQml0VmVjdG9yOjppdGVyYXRvciBtX2l0ZXI7Ci0gICAgICAgIH07Ci0KLSAg
ICAgICAgaXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVybiBpdGVyYXRvcihtX2NvbGxlY3Rp
b24sIG1fc2V0LmJlZ2luKCkpOyB9Ci0gICAgICAgIGl0ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0
dXJuIGl0ZXJhdG9yKG1fY29sbGVjdGlvbiwgbV9zZXQuZW5kKCkpOyB9Ci0KLSAgICBwcml2YXRl
OgotICAgICAgICBjb25zdCBDb2xsZWN0aW9uVHlwZSYgbV9jb2xsZWN0aW9uOwotICAgICAgICBj
b25zdCBCaXRWZWN0b3ImIG1fc2V0OwotICAgIH07Ci0KLSAgICAvLyBGb3IgYmFzaWMgYmxvY2tz
LCB5b3UgZG86Ci0gICAgLy8gaW5kZXhTZXQudmFsdWVzKHByb2NlZHVyZSk7Ci0gICAgLy8KLSAg
ICAvLyBGb3IgdmFsdWVzLCB5b3UgZG86Ci0gICAgLy8gaW5kZXhTZXQudmFsdWVzKHByb2NlZHVy
ZS52YWx1ZXMoKSk7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ29sbGVjdGlvblR5cGU+Ci0gICAg
SXRlcmFibGU8Q29sbGVjdGlvblR5cGU+IHZhbHVlcyhjb25zdCBDb2xsZWN0aW9uVHlwZSYgY29s
bGVjdGlvbikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBJdGVyYWJsZTxDb2xsZWN0aW9u
VHlwZT4oY29sbGVjdGlvbiwgaW5kaWNlcygpKTsKLSAgICB9Ci0KLSAgICBjb25zdCBCaXRWZWN0
b3ImIGluZGljZXMoKSBjb25zdCB7IHJldHVybiBtX3NldDsgfQotCi0gICAgdm9pZCBkdW1wKFBy
aW50U3RyZWFtJiBvdXQpIGNvbnN0Ci0gICAgewotICAgICAgICBDb21tYVByaW50ZXIgY29tbWE7
Ci0gICAgICAgIGZvciAoc2l6ZV90IGluZGV4IDogaW5kaWNlcygpKQotICAgICAgICAgICAgb3V0
LnByaW50KGNvbW1hLCBUOjpkdW1wUHJlZml4LCBpbmRleCk7Ci0gICAgfQotCi1wcml2YXRlOgot
ICAgIEJpdFZlY3RvciBtX3NldDsKLX07Ci0KLX0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMwotCi0j
ZW5kaWYgLy8gQjNJbmRleFNldF9oCi0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM0xvd2VyVG9BaXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJU
b0Fpci5jcHAKaW5kZXggMzEyZDkzN2NjMWJiZDU4MWY0MDJkZTA2YjVkYzcyNzkwZDE4NTc3Zi4u
YTZiNmFlMTU5ZmUxNTcyZjNkOTE4MDQ3OTYzNTZhOWE1ZjA5ZTNmMiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAKQEAgLTQwLDggKzQwLDYgQEAKICNpbmNsdWRl
ICJCM0NoZWNrU3BlY2lhbC5oIgogI2luY2x1ZGUgIkIzQ29tbXV0YXRpdml0eS5oIgogI2luY2x1
ZGUgIkIzRG9taW5hdG9ycy5oIgotI2luY2x1ZGUgIkIzSW5kZXhNYXAuaCIKLSNpbmNsdWRlICJC
M0luZGV4U2V0LmgiCiAjaW5jbHVkZSAiQjNNZW1vcnlWYWx1ZS5oIgogI2luY2x1ZGUgIkIzUGF0
Y2hwb2ludFNwZWNpYWwuaCIKICNpbmNsdWRlICJCM1BhdGNocG9pbnRWYWx1ZS5oIgpAQCAtNTUs
NiArNTMsOCBAQAogI2luY2x1ZGUgIkIzVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQjNWYXJp
YWJsZS5oIgogI2luY2x1ZGUgIkIzVmFyaWFibGVWYWx1ZS5oIgorI2luY2x1ZGUgPHd0Zi9JbmRl
eE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9JbmRleFNldC5oPgogI2luY2x1ZGUgPHd0Zi9MaXN0RHVt
cC5oPgogCiAjaWYgQ09NUElMRVIoR0NDKSAmJiBBU1NFUlRfRElTQUJMRUQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1BoaUNoaWxkcmVuLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNQaGlDaGlsZHJlbi5oCmluZGV4IGNkZjM2OGYyNGFhNmU1YTU4MzlmM2Zh
YTY1ZGYwOWRhMDYzNDVjZTcuLmUxMWZjYmViODk2NTAxYzY2YWQzYWNjMzdkMjAxYjAxNmU1NTBm
Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1BoaUNoaWxkcmVuLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUGhpQ2hpbGRyZW4uaApAQCAtMjgsMTAg
KzI4LDEwIEBACiAKICNpZiBFTkFCTEUoQjNfSklUKQogCi0jaW5jbHVkZSAiQjNJbmRleE1hcC5o
IgogI2luY2x1ZGUgIkIzUHJvY2VkdXJlLmgiCiAjaW5jbHVkZSAiQjNVcHNpbG9uVmFsdWUuaCIK
ICNpbmNsdWRlIDx3dGYvR3JhcGhOb2RlV29ya2xpc3QuaD4KKyNpbmNsdWRlIDx3dGYvSW5kZXhN
YXAuaD4KIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Byb2NlZHVyZS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzUHJvY2VkdXJlLmgKaW5kZXggNTc2NDEzZTEwOTBhODQ3N2UzNGQ0MjM1OGM2OTg0
NjVjMWFkNTkxZC4uZTJlMTM0ZGFiZWNkMDM3NDlmZTdhOTdmNDg4YmU4ZmEwYmNjNDhkOCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJlLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJlLmgKQEAgLTQwLDYgKzQwLDcgQEAKICNp
bmNsdWRlIDx3dGYvQmFnLmg+CiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KICNpbmNsdWRl
IDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9JbmRleGVkQ29udGFpbmVySXRlcmF0b3Iu
aD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvUHJpbnRTdHJl
YW0uaD4KICNpbmNsdWRlIDx3dGYvU2hhcmVkVGFzay5oPgpAQCAtMTMzLDUzICsxMzQsNyBAQCBj
bGFzcyBQcm9jZWR1cmUgewogICAgIEJhc2ljQmxvY2sqIGF0KHVuc2lnbmVkIGluZGV4KSBjb25z
dCB7IHJldHVybiBtX2Jsb2Nrc1tpbmRleF0uZ2V0KCk7IH0KICAgICBCYXNpY0Jsb2NrKiBvcGVy
YXRvcltdKHVuc2lnbmVkIGluZGV4KSBjb25zdCB7IHJldHVybiBhdChpbmRleCk7IH0KIAotICAg
IGNsYXNzIGl0ZXJhdG9yIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIGl0ZXJhdG9yKCkKLSAgICAg
ICAgICAgIDogbV9wcm9jZWR1cmUobnVsbHB0cikKLSAgICAgICAgICAgICwgbV9pbmRleCgwKQot
ICAgICAgICB7Ci0gICAgICAgIH0KLQotICAgICAgICBpdGVyYXRvcihjb25zdCBQcm9jZWR1cmUm
IHByb2NlZHVyZSwgdW5zaWduZWQgaW5kZXgpCi0gICAgICAgICAgICA6IG1fcHJvY2VkdXJlKCZw
cm9jZWR1cmUpCi0gICAgICAgICAgICAsIG1faW5kZXgoZmluZE5leHQoaW5kZXgpKQotICAgICAg
ICB7Ci0gICAgICAgIH0KLQotICAgICAgICBCYXNpY0Jsb2NrKiBvcGVyYXRvciooKQotICAgICAg
ICB7Ci0gICAgICAgICAgICByZXR1cm4gbV9wcm9jZWR1cmUtPmF0KG1faW5kZXgpOwotICAgICAg
ICB9Ci0KLSAgICAgICAgaXRlcmF0b3ImIG9wZXJhdG9yKysoKQotICAgICAgICB7Ci0gICAgICAg
ICAgICBtX2luZGV4ID0gZmluZE5leHQobV9pbmRleCArIDEpOwotICAgICAgICAgICAgcmV0dXJu
ICp0aGlzOwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IGl0ZXJh
dG9yJiBvdGhlcikgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgQVNTRVJUKG1fcHJvY2Vk
dXJlID09IG90aGVyLm1fcHJvY2VkdXJlKTsKLSAgICAgICAgICAgIHJldHVybiBtX2luZGV4ID09
IG90aGVyLm1faW5kZXg7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGJvb2wgb3BlcmF0
b3IhPShjb25zdCBpdGVyYXRvciYgb3RoZXIpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAg
IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKLSAgICAgICAgfQotCi0gICAgcHJpdmF0ZToKLSAg
ICAgICAgdW5zaWduZWQgZmluZE5leHQodW5zaWduZWQgaW5kZXgpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIHdoaWxlIChpbmRleCA8IG1fcHJvY2VkdXJlLT5zaXplKCkgJiYgIW1fcHJvY2VkdXJl
LT5hdChpbmRleCkpCi0gICAgICAgICAgICAgICAgaW5kZXgrKzsKLSAgICAgICAgICAgIHJldHVy
biBpbmRleDsKLSAgICAgICAgfQotCi0gICAgICAgIGNvbnN0IFByb2NlZHVyZSogbV9wcm9jZWR1
cmU7Ci0gICAgICAgIHVuc2lnbmVkIG1faW5kZXg7Ci0gICAgfTsKKyAgICB0eXBlZGVmIFdURjo6
SW5kZXhlZENvbnRhaW5lckl0ZXJhdG9yPFByb2NlZHVyZT4gaXRlcmF0b3I7CiAKICAgICBpdGVy
YXRvciBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIGl0ZXJhdG9yKCp0aGlzLCAwKTsgfQogICAgIGl0
ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0dXJuIGl0ZXJhdG9yKCp0aGlzLCBzaXplKCkpOyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNSZWR1Y2VEb3VibGVUb0Zsb2F0
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVjZURvdWJsZVRvRmxvYXQuY3Bw
CmluZGV4IGJkN2NkMDkwYzZhNjNmN2I5ZDEzMDdkNGZhMzY3OTZhMWI5NTczMjYuLjhlY2UzODlj
YTJlZmQ1Mzg5ZGM5MDJkZjMxNTYxZjk1NjNkMzU5NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM1JlZHVjZURvdWJsZVRvRmxvYXQuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM1JlZHVjZURvdWJsZVRvRmxvYXQuY3BwCkBAIC0yOSwxMSArMjksMTEg
QEAKICNpZiBFTkFCTEUoQjNfSklUKQogCiAjaW5jbHVkZSAiQjNCYXNpY0Jsb2NrLmgiCi0jaW5j
bHVkZSAiQjNJbmRleFNldC5oIgogI2luY2x1ZGUgIkIzSW5zZXJ0aW9uU2V0SW5saW5lcy5oIgog
I2luY2x1ZGUgIkIzUGhhc2VTY29wZS5oIgogI2luY2x1ZGUgIkIzVXNlQ291bnRzLmgiCiAjaW5j
bHVkZSAiQjNWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRlIDx3dGYvSW5kZXhTZXQuaD4KIAogbmFt
ZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM1JlZHVjZVN0cmVuZ3RoLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM1JlZHVjZVN0cmVuZ3RoLmNwcAppbmRleCA0Y2JmMjUyODg2Yjk3Y2NiZmIzNzY0MDU3Zjlm
NjA0MmM2YTFlNWEwLi4wYmQxZWEwYjQ4Y2UxOWE2MGJlZjcyNmRiZTk4ODUwM2U5NDhjZDA2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNSZWR1Y2VTdHJlbmd0aC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUmVkdWNlU3RyZW5ndGguY3BwCkBAIC0z
Miw3ICszMiw2IEBACiAjaW5jbHVkZSAiQjNCbG9ja0luc2VydGlvblNldC5oIgogI2luY2x1ZGUg
IkIzQ29tcHV0ZURpdmlzaW9uTWFnaWMuaCIKICNpbmNsdWRlICJCM0RvbWluYXRvcnMuaCIKLSNp
bmNsdWRlICJCM0luZGV4U2V0LmgiCiAjaW5jbHVkZSAiQjNJbnNlcnRpb25TZXRJbmxpbmVzLmgi
CiAjaW5jbHVkZSAiQjNNZW1vcnlWYWx1ZS5oIgogI2luY2x1ZGUgIkIzUGhhc2VTY29wZS5oIgpA
QCAtNDgsNiArNDcsNyBAQAogI2luY2x1ZGUgIkIzVmFyaWFibGVWYWx1ZS5oIgogI2luY2x1ZGUg
PHd0Zi9HcmFwaE5vZGVXb3JrbGlzdC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5j
bHVkZSA8d3RmL0luZGV4U2V0Lmg+CiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgewog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNTU0FDYWxjdWxhdG9yLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNTU0FDYWxjdWxhdG9yLmgKaW5kZXggZjU3NjY4
MjJmNGZmYzM2YmQ2YTIyYTk3NzBmMjAyMGRmNTEyNDQ2Yi4uMWU5NjI4MjYyZmYzZmVkMjI5MDMx
YWVhM2QxN2QwYjY4MTJhZmYzMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzU1NBQ2FsY3VsYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1NTQUNh
bGN1bGF0b3IuaApAQCAtMjksOSArMjksOSBAQAogI2lmIEVOQUJMRShCM19KSVQpCiAKICNpbmNs
dWRlICJCM0RvbWluYXRvcnMuaCIKLSNpbmNsdWRlICJCM0luZGV4TWFwLmgiCiAjaW5jbHVkZSAi
QjNQcm9jZWR1cmVJbmxpbmVzLmgiCiAjaW5jbHVkZSA8d3RmL0JhZy5oPgorI2luY2x1ZGUgPHd0
Zi9JbmRleE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9TZWdtZW50ZWRWZWN0b3IuaD4KIAogbmFtZXNw
YWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNVc2VDb3VudHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1VzZUNvdW50
cy5oCmluZGV4IGE1OWQ1OGFhNDZjNjI3Mjg1N2U4MjlkMzhhMTRlZjA4MDdiNzM3ZTkuLjZlOWU0
ODJiNzk5ZDI0MGIwZTY1OTU2ZWY0NWJiNDY4NDMzZmZmNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM1VzZUNvdW50cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM1VzZUNvdW50cy5oCkBAIC0yOCw4ICsyOCw4IEBACiAKICNpZiBFTkFCTEUoQjNfSklU
KQogCi0jaW5jbHVkZSAiQjNJbmRleE1hcC5oIgogI2luY2x1ZGUgIkIzVmFsdWUuaCIKKyNpbmNs
dWRlIDx3dGYvSW5kZXhNYXAuaD4KIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQ29kZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJDb2RlLmgKaW5kZXggNjRhNzQ1ZDAyMTBiNmE3
ZmNiN2E5MzUxYjEzMGFlMDlhMjZkMjUwZC4uZjE5ZWZiMjgwMmY2YWQ1NThlZTg3YmRlMmU2YWI2
MjQ4YjYxNWEwZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJD
b2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJDb2RlLmgKQEAgLTMz
LDExICszMywxMSBAQAogI2luY2x1ZGUgIkFpclNwZWNpYWwuaCIKICNpbmNsdWRlICJBaXJTdGFj
a1Nsb3QuaCIKICNpbmNsdWRlICJBaXJUbXAuaCIKLSNpbmNsdWRlICJCM0luZGV4TWFwLmgiCiAj
aW5jbHVkZSAiQjNTcGFyc2VDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiQ0NhbGxIZWxwZXJzLmgi
CiAjaW5jbHVkZSAiUmVnaXN0ZXJBdE9mZnNldExpc3QuaCIKICNpbmNsdWRlICJTdGFja0FsaWdu
bWVudC5oIgorI2luY2x1ZGUgPHd0Zi9JbmRleE1hcC5oPgogCiBuYW1lc3BhY2UgSlNDIHsgbmFt
ZXNwYWNlIEIzIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9B
aXJFbGltaW5hdGVEZWFkQ29kZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fp
ckVsaW1pbmF0ZURlYWRDb2RlLmNwcAppbmRleCAzNjYzZWFhOTk3OTY3ZjU3ZTQ1MWJiNjFhNDZk
OWFkYzMwMDEzYjc1Li5jYTM2YWY5M2U3OTEwNzk5Y2M3YmQ0ODExYjMwNzQ1NjVjNzM4ZjMwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckVsaW1pbmF0ZURlYWRD
b2RlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckVsaW1pbmF0ZURl
YWRDb2RlLmNwcApAQCAtMzEsNyArMzEsNyBAQAogI2luY2x1ZGUgIkFpckNvZGUuaCIKICNpbmNs
dWRlICJBaXJJbnN0SW5saW5lcy5oIgogI2luY2x1ZGUgIkFpclBoYXNlU2NvcGUuaCIKLSNpbmNs
dWRlICJCM0luZGV4U2V0LmgiCisjaW5jbHVkZSA8d3RmL0luZGV4U2V0Lmg+CiAKIG5hbWVzcGFj
ZSBKU0MgeyBuYW1lc3BhY2UgQjMgeyBuYW1lc3BhY2UgQWlyIHsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJGaXhPYnZpb3VzU3BpbGxzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRml4T2J2aW91c1NwaWxscy5jcHAKaW5kZXggNzFk
OTkwZjIxZWY2NDYwNjRkMTI5M2YwZGIwZjdhMWVkMGIwZWJhNC4uYmFiZDE3MzU4YmE4ZjQ5YjM0
NGJlNWRhNmYwY2Y2YWYzMGI0NTY3MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL2Fpci9BaXJGaXhPYnZpb3VzU3BpbGxzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvYWlyL0FpckZpeE9idmlvdXNTcGlsbHMuY3BwCkBAIC0zMiw3ICszMiw3IEBACiAjaW5j
bHVkZSAiQWlyQ29kZS5oIgogI2luY2x1ZGUgIkFpckluc3RJbmxpbmVzLmgiCiAjaW5jbHVkZSAi
QWlyUGhhc2VTY29wZS5oIgotI2luY2x1ZGUgIkIzSW5kZXhNYXAuaCIKKyNpbmNsdWRlIDx3dGYv
SW5kZXhNYXAuaD4KICNpbmNsdWRlIDx3dGYvTGlzdER1bXAuaD4KIAogbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBCMyB7IG5hbWVzcGFjZSBBaXIgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL2Fpci9BaXJGaXhQYXJ0aWFsUmVnaXN0ZXJTdGFsbHMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJGaXhQYXJ0aWFsUmVnaXN0ZXJTdGFsbHMuY3BwCmlu
ZGV4IGVkN2I4MGEwYzhiNDZhYTI0Y2JhYzZkOTdiZTM5ZGFkNmQyMTdjZmIuLjUzOTk3OTkyZDg2
Y2I3MjAzYmMwZWM4MzRjMGY4NmQ0ZjE1NWM0MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9haXIvQWlyRml4UGFydGlhbFJlZ2lzdGVyU3RhbGxzLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckZpeFBhcnRpYWxSZWdpc3RlclN0YWxscy5jcHAK
QEAgLTM0LDkgKzM0LDkgQEAKICNpbmNsdWRlICJBaXJJbnN0LmgiCiAjaW5jbHVkZSAiQWlySW5z
dElubGluZXMuaCIKICNpbmNsdWRlICJBaXJQaGFzZVNjb3BlLmgiCi0jaW5jbHVkZSAiQjNJbmRl
eE1hcC5oIgotI2luY2x1ZGUgIkIzSW5kZXhTZXQuaCIKICNpbmNsdWRlICJNYWNyb0Fzc2VtYmxl
ci5oIgorI2luY2x1ZGUgPHd0Zi9JbmRleE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9JbmRleFNldC5o
PgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBC
MyB7IG5hbWVzcGFjZSBBaXIgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L2Fpci9BaXJHZW5lcmF0ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpckdl
bmVyYXRlLmNwcAppbmRleCA0MTE4NDEyMWM4NTBjMzdiNTM2MThkZmU4YmEzOTRmNDQwN2JkYTAw
Li4wYTE4YWRhNjBjYjZkNTUyMDkzMjlkOWM2NzZmN2FlODlkMmNiMTM0IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckdlbmVyYXRlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckdlbmVyYXRlLmNwcApAQCAtNDgsMTMgKzQ4LDEzIEBA
CiAjaW5jbHVkZSAiQWlyU3BpbGxFdmVyeXRoaW5nLmgiCiAjaW5jbHVkZSAiQWlyVmFsaWRhdGUu
aCIKICNpbmNsdWRlICJCM0NvbW1vbi5oIgotI2luY2x1ZGUgIkIzSW5kZXhNYXAuaCIKICNpbmNs
dWRlICJCM1Byb2NlZHVyZS5oIgogI2luY2x1ZGUgIkIzVGltaW5nU2NvcGUuaCIKICNpbmNsdWRl
ICJCM1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkNDYWxsSGVscGVycy5oIgogI2luY2x1ZGUg
IkRpc2FsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZS5oIgogI2luY2x1ZGUgIkxpbmtCdWZm
ZXIuaCIKKyNpbmNsdWRlIDx3dGYvSW5kZXhNYXAuaD4KIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVz
cGFjZSBCMyB7IG5hbWVzcGFjZSBBaXIgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvYWlyL0FpckdlbmVyYXRpb25Db250ZXh0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvYWlyL0FpckdlbmVyYXRpb25Db250ZXh0LmgKaW5kZXggZWNhOTA3ZjAxZWRmY2Y1MTA2
N2Q5ODk1ZDkxZDljMzE2MmZhMzc4MS4uN2RjNmUwZDMyNDQ3ZGY2YjM1NzY4NWQ5ODgxM2YxOTNl
ZTQyM2U3MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJHZW5l
cmF0aW9uQ29udGV4dC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyR2Vu
ZXJhdGlvbkNvbnRleHQuaApAQCAtMjksOSArMjksOSBAQAogI2lmIEVOQUJMRShCM19KSVQpCiAK
ICNpbmNsdWRlICJBaXJCYXNpY0Jsb2NrLmgiCi0jaW5jbHVkZSAiQjNJbmRleE1hcC5oIgogI2lu
Y2x1ZGUgIkNDYWxsSGVscGVycy5oIgogI2luY2x1ZGUgPHd0Zi9Cb3guaD4KKyNpbmNsdWRlIDx3
dGYvSW5kZXhNYXAuaD4KICNpbmNsdWRlIDx3dGYvU2hhcmVkVGFzay5oPgogI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9B
aXJMaXZlbmVzcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJMaXZlbmVzcy5o
CmluZGV4IGFjMTE4YWFmNWYyMzBjOGQwZGM5YWIzYzUyZTVjMTY2OTcxYmM4YWUuLmYwMTQ2MGE0
MTk1ZDJiMDAwY2U1YmZhZDBiMmM3ZDE3NTlkNmNjNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9haXIvQWlyTGl2ZW5lc3MuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvYWlyL0FpckxpdmVuZXNzLmgKQEAgLTMzLDggKzMzLDggQEAKICNpbmNsdWRlICJBaXJJ
bnN0SW5saW5lcy5oIgogI2luY2x1ZGUgIkFpclN0YWNrU2xvdC5oIgogI2luY2x1ZGUgIkFpclRt
cElubGluZXMuaCIKLSNpbmNsdWRlICJCM0luZGV4TWFwLmgiCi0jaW5jbHVkZSAiQjNJbmRleFNl
dC5oIgorI2luY2x1ZGUgPHd0Zi9JbmRleE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9JbmRleFNldC5o
PgogI2luY2x1ZGUgPHd0Zi9JbmRleFNwYXJzZVNldC5oPgogI2luY2x1ZGUgPHd0Zi9MaXN0RHVt
cC5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpclNwaWxs
RXZlcnl0aGluZy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpclNwaWxsRXZl
cnl0aGluZy5jcHAKaW5kZXggM2EwNjM2ZGU5YTFiZWFhYzlkZGZhYWNkYzgzNDQwNzZmZGUzM2Vj
OC4uMTY3NjcwNThmZjU4ZmVkOGRmYmU5MzEwYzA5N2MzOGMyZmU1YWM1MSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJTcGlsbEV2ZXJ5dGhpbmcuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyU3BpbGxFdmVyeXRoaW5nLmNwcApAQCAt
MzUsNyArMzUsNyBAQAogI2luY2x1ZGUgIkFpckxpdmVuZXNzLmgiCiAjaW5jbHVkZSAiQWlyUGhh
c2VTY29wZS5oIgogI2luY2x1ZGUgIkFpclJlZ2lzdGVyUHJpb3JpdHkuaCIKLSNpbmNsdWRlICJC
M0luZGV4TWFwLmgiCisjaW5jbHVkZSA8d3RmL0luZGV4TWFwLmg+CiAKIG5hbWVzcGFjZSBKU0Mg
eyBuYW1lc3BhY2UgQjMgeyBuYW1lc3BhY2UgQWlyIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J1aWx0aW5zL0dlbmVyYXRvclByb3RvdHlwZS5qcyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9idWlsdGlucy9HZW5lcmF0b3JQcm90b3R5cGUuanMKaW5kZXggM2MxNDA2ODdk
ZmM3ZTAwZWZlOTFhZTgwYjJhYzY3NmZhOWJmNDhmNC4uNDk5ZGJkMzkyZTgzMTNkY2RkODZlYzhj
MTYwNTY5ZDdkNmY1NDliMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0
aW5zL0dlbmVyYXRvclByb3RvdHlwZS5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVp
bHRpbnMvR2VuZXJhdG9yUHJvdG90eXBlLmpzCkBAIC01MSw3ICs1MSw3IEBAIGZ1bmN0aW9uIGdl
bmVyYXRvclJlc3VtZShnZW5lcmF0b3IsIHNlbnRWYWx1ZSwgcmVzdW1lTW9kZSkKICAgICB9IGVs
c2UgewogICAgICAgICB0cnkgewogICAgICAgICAgICAgZ2VuZXJhdG9yLkBnZW5lcmF0b3JTdGF0
ZSA9IEBHZW5lcmF0b3JTdGF0ZUV4ZWN1dGluZzsKLSAgICAgICAgICAgIHZhbHVlID0gZ2VuZXJh
dG9yLkBnZW5lcmF0b3JOZXh0LkBjYWxsKGdlbmVyYXRvci5AZ2VuZXJhdG9yVGhpcywgZ2VuZXJh
dG9yLCBzdGF0ZSwgc2VudFZhbHVlLCByZXN1bWVNb2RlKTsKKyAgICAgICAgICAgIHZhbHVlID0g
Z2VuZXJhdG9yLkBnZW5lcmF0b3JOZXh0LkBjYWxsKGdlbmVyYXRvci5AZ2VuZXJhdG9yVGhpcywg
Z2VuZXJhdG9yLCBzdGF0ZSwgc2VudFZhbHVlLCByZXN1bWVNb2RlLCBnZW5lcmF0b3IuQGdlbmVy
YXRvckZyYW1lKTsKICAgICAgICAgICAgIGlmIChnZW5lcmF0b3IuQGdlbmVyYXRvclN0YXRlID09
PSBAR2VuZXJhdG9yU3RhdGVFeGVjdXRpbmcpIHsKICAgICAgICAgICAgICAgICBnZW5lcmF0b3Iu
QGdlbmVyYXRvclN0YXRlID0gQEdlbmVyYXRvclN0YXRlQ29tcGxldGVkOwogICAgICAgICAgICAg
ICAgIGRvbmUgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlQmFzaWNCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcAppbmRleCBmZTU2ZDc4YTdkYjliN2IxY2I1MDY5YWU4
N2Q5MGIyYjI1MjQ0ZjMxLi4yOTkwODJkZGQxZWM3ZWNmZjdhNmMxOTgzYzFlZGFiZGU1M2JjYzNl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVCYXNp
Y0Jsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVC
YXNpY0Jsb2NrLmNwcApAQCAtMjcsNyArMjcsNyBAQAogI2luY2x1ZGUgIkJ5dGVjb2RlQmFzaWNC
bG9jay5oIgogCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCi0jaW5jbHVkZSAiSW50ZXJwcmV0ZXIu
aCIKKyNpbmNsdWRlICJJbnRlcnByZXRlcklubGluZXMuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVz
LmgiCiAjaW5jbHVkZSAiUHJlY2lzZUp1bXBUYXJnZXRzLmgiCiAKQEAgLTEwNiwxNSArMTA2LDIx
IEBAIHN0YXRpYyBib29sIGlzSnVtcFRhcmdldChPcGNvZGVJRCBvcGNvZGVJRCwgY29uc3QgVmVj
dG9yPHVuc2lnbmVkLCAzMj4mIGp1bXBUYXJnCiAgICAgcmV0dXJuIHN0ZDo6YmluYXJ5X3NlYXJj
aChqdW1wVGFyZ2V0cy5iZWdpbigpLCBqdW1wVGFyZ2V0cy5lbmQoKSwgYnl0ZWNvZGVPZmZzZXQp
OwogfQogCi1zdGF0aWMgdm9pZCBsaW5rQmxvY2tzKEJ5dGVjb2RlQmFzaWNCbG9jayogcHJlZGVj
ZXNzb3IsIEJ5dGVjb2RlQmFzaWNCbG9jayogc3VjY2Vzc29yKQotewotICAgIHByZWRlY2Vzc29y
LT5hZGRTdWNjZXNzb3Ioc3VjY2Vzc29yKTsKLX0KLQotdm9pZCBjb21wdXRlQnl0ZWNvZGVCYXNp
Y0Jsb2NrcyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRl
Y29kZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9ja3MpCit0ZW1wbGF0ZTx0eXBlbmFtZSBCbG9jaywg
dHlwZW5hbWUgSW5zdHJ1Y3Rpb24+Cit2b2lkIEJ5dGVjb2RlQmFzaWNCbG9jazo6Y29tcHV0ZUJ5
dGVjb2RlQmFzaWNCbG9ja3NJbnRlcm5hbChCbG9jayogY29kZUJsb2NrLCBJbnN0cnVjdGlvbiog
aW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQsIFZlY3RvcjxzdGQ6
OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mIGJhc2ljQmxvY2tzKQogewogICAgIFZl
Y3Rvcjx1bnNpZ25lZCwgMzI+IGp1bXBUYXJnZXRzOwotICAgIGNvbXB1dGVQcmVjaXNlSnVtcFRh
cmdldHMoY29kZUJsb2NrLCBqdW1wVGFyZ2V0cyk7CisgICAgY29tcHV0ZVByZWNpc2VKdW1wVGFy
Z2V0cyhjb2RlQmxvY2ssIGluc3RydWN0aW9uc0JlZ2luLCBpbnN0cnVjdGlvbkNvdW50LCBqdW1w
VGFyZ2V0cyk7CisKKyAgICBhdXRvIGFwcGVuZEJsb2NrID0gWyZdIChzdGQ6OnVuaXF1ZV9wdHI8
Qnl0ZWNvZGVCYXNpY0Jsb2NrPiYmIGJsb2NrKSB7CisgICAgICAgIGJsb2NrLT5tX2luZGV4ID0g
YmFzaWNCbG9ja3Muc2l6ZSgpOworICAgICAgICBiYXNpY0Jsb2Nrcy5hcHBlbmQoV1RGTW92ZShi
bG9jaykpOworICAgIH07CisKKyAgICBhdXRvIGxpbmtCbG9ja3MgPSBbJl0gKEJ5dGVjb2RlQmFz
aWNCbG9jayogZnJvbSwgQnl0ZWNvZGVCYXNpY0Jsb2NrKiB0bykgeworICAgICAgICBmcm9tLT5h
ZGRTdWNjZXNzb3IodG8pOworICAgICAgICB0by0+YWRkUHJlZGVjZXNzb3IoZnJvbSk7CisgICAg
fTsKIAogICAgIC8vIENyZWF0ZSB0aGUgZW50cnkgYW5kIGV4aXQgYmFzaWMgYmxvY2tzLgogICAg
IGJhc2ljQmxvY2tzLnJlc2VydmVDYXBhY2l0eShqdW1wVGFyZ2V0cy5zaXplKCkgKyAyKTsKQEAg
LTEyMywxOSArMTI5LDE3IEBAIHZvaWQgY29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MoQ29kZUJs
b2NrKiBjb2RlQmxvY2ssIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0CiAgICAgYXV0byBmaXJz
dEJsb2NrID0gc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZUJhc2ljQmxvY2s+KDAsIDApOwogICAg
IGxpbmtCbG9ja3MoZW50cnkuZ2V0KCksIGZpcnN0QmxvY2suZ2V0KCkpOwogCi0gICAgYmFzaWNC
bG9ja3MuYXBwZW5kKFdURk1vdmUoZW50cnkpKTsKKyAgICBhcHBlbmRCbG9jayhXVEZNb3ZlKGVu
dHJ5KSk7CiAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBjdXJyZW50ID0gZmlyc3RCbG9jay5nZXQo
KTsKLSAgICBiYXNpY0Jsb2Nrcy5hcHBlbmQoV1RGTW92ZShmaXJzdEJsb2NrKSk7CisgICAgYXBw
ZW5kQmxvY2soV1RGTW92ZShmaXJzdEJsb2NrKSk7CiAKICAgICBhdXRvIGV4aXQgPSBzdGQ6Om1h
a2VfdW5pcXVlPEJ5dGVjb2RlQmFzaWNCbG9jaz4oQnl0ZWNvZGVCYXNpY0Jsb2NrOjpFeGl0Qmxv
Y2spOwogCiAgICAgYm9vbCBuZXh0SW5zdHJ1Y3Rpb25Jc0xlYWRlciA9IGZhbHNlOwogCiAgICAg
SW50ZXJwcmV0ZXIqIGludGVycHJldGVyID0gY29kZUJsb2NrLT52bSgpLT5pbnRlcnByZXRlcjsK
LSAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4gPSBjb2RlQmxvY2stPmluc3RydWN0
aW9ucygpLmJlZ2luKCk7Ci0gICAgdW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCA9IGNvZGVCbG9j
ay0+aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpOwogICAgIGZvciAodW5zaWduZWQgYnl0ZWNvZGVPZmZz
ZXQgPSAwOyBieXRlY29kZU9mZnNldCA8IGluc3RydWN0aW9uQ291bnQ7KSB7Ci0gICAgICAgIE9w
Y29kZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGluc3RydWN0aW9uc0Jl
Z2luW2J5dGVjb2RlT2Zmc2V0XS51Lm9wY29kZSk7CisgICAgICAgIE9wY29kZUlEIG9wY29kZUlE
ID0gaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGluc3RydWN0aW9uc0JlZ2luW2J5dGVjb2RlT2Zm
c2V0XSk7CiAgICAgICAgIHVuc2lnbmVkIG9wY29kZUxlbmd0aCA9IG9wY29kZUxlbmd0aHNbb3Bj
b2RlSURdOwogCiAgICAgICAgIGJvb2wgY3JlYXRlZEJsb2NrID0gZmFsc2U7CkBAIC0xNDMsNyAr
MTQ3LDcgQEAgdm9pZCBjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2NrcyhDb2RlQmxvY2sqIGNvZGVC
bG9jaywgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXQKICAgICAgICAgaWYgKGlzSnVtcFRhcmdl
dChvcGNvZGVJRCwganVtcFRhcmdldHMsIGJ5dGVjb2RlT2Zmc2V0KSB8fCBuZXh0SW5zdHJ1Y3Rp
b25Jc0xlYWRlcikgewogICAgICAgICAgICAgYXV0byBuZXdCbG9jayA9IHN0ZDo6bWFrZV91bmlx
dWU8Qnl0ZWNvZGVCYXNpY0Jsb2NrPihieXRlY29kZU9mZnNldCwgb3Bjb2RlTGVuZ3RoKTsKICAg
ICAgICAgICAgIGN1cnJlbnQgPSBuZXdCbG9jay5nZXQoKTsKLSAgICAgICAgICAgIGJhc2ljQmxv
Y2tzLmFwcGVuZChXVEZNb3ZlKG5ld0Jsb2NrKSk7CisgICAgICAgICAgICBhcHBlbmRCbG9jayhX
VEZNb3ZlKG5ld0Jsb2NrKSk7CiAgICAgICAgICAgICBjcmVhdGVkQmxvY2sgPSB0cnVlOwogICAg
ICAgICAgICAgbmV4dEluc3RydWN0aW9uSXNMZWFkZXIgPSBmYWxzZTsKICAgICAgICAgICAgIGJ5
dGVjb2RlT2Zmc2V0ICs9IG9wY29kZUxlbmd0aDsKQEAgLTE3MCw4ICsxNzQsNyBAQCB2b2lkIGNv
bXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzKENvZGVCbG9jayogY29kZUJsb2NrLCBWZWN0b3I8c3Rk
Ojp1bmlxdWVfcHRyPEJ5dAogCiAgICAgICAgIGJvb2wgZmFsbHNUaHJvdWdoID0gdHJ1ZTsgCiAg
ICAgICAgIGZvciAodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQgPSBibG9jay0+bGVhZGVyQnl0ZWNv
ZGVPZmZzZXQoKTsgYnl0ZWNvZGVPZmZzZXQgPCBibG9jay0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQo
KSArIGJsb2NrLT50b3RhbEJ5dGVjb2RlTGVuZ3RoKCk7KSB7Ci0gICAgICAgICAgICBjb25zdCBJ
bnN0cnVjdGlvbiYgY3VycmVudEluc3RydWN0aW9uID0gaW5zdHJ1Y3Rpb25zQmVnaW5bYnl0ZWNv
ZGVPZmZzZXRdOwotICAgICAgICAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnRlcnByZXRlci0+
Z2V0T3Bjb2RlSUQoY3VycmVudEluc3RydWN0aW9uLnUub3Bjb2RlKTsKKyAgICAgICAgICAgIE9w
Y29kZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGluc3RydWN0aW9uc0Jl
Z2luW2J5dGVjb2RlT2Zmc2V0XSk7CiAgICAgICAgICAgICB1bnNpZ25lZCBvcGNvZGVMZW5ndGgg
PSBvcGNvZGVMZW5ndGhzW29wY29kZUlEXTsKICAgICAgICAgICAgIC8vIElmIHdlIGZvdW5kIGEg
dGVybWluYWwgYnl0ZWNvZGUsIGxpbmsgdG8gdGhlIGV4aXQgYmxvY2suCiAgICAgICAgICAgICBp
ZiAoaXNUZXJtaW5hbChvcGNvZGVJRCkpIHsKQEAgLTE4Niw3ICsxODksNyBAQCB2b2lkIGNvbXB1
dGVCeXRlY29kZUJhc2ljQmxvY2tzKENvZGVCbG9jayogY29kZUJsb2NrLCBWZWN0b3I8c3RkOjp1
bmlxdWVfcHRyPEJ5dAogICAgICAgICAgICAgLy8gYmxvY2sgYmVjYXVzZSB0aGUgZmluYWxseSBi
bG9jayB3aWxsIGNyZWF0ZSBpdHMgb3duIGNhdGNoLCB3aGljaCB3aWxsIGdlbmVyYXRlIGEgSGFu
ZGxlckluZm8uCiAgICAgICAgICAgICBpZiAoaXNUaHJvdyhvcGNvZGVJRCkpIHsKICAgICAgICAg
ICAgICAgICBBU1NFUlQoYnl0ZWNvZGVPZmZzZXQgKyBvcGNvZGVMZW5ndGggPT0gYmxvY2stPmxl
YWRlckJ5dGVjb2RlT2Zmc2V0KCkgKyBibG9jay0+dG90YWxCeXRlY29kZUxlbmd0aCgpKTsKLSAg
ICAgICAgICAgICAgICBIYW5kbGVySW5mbyogaGFuZGxlciA9IGNvZGVCbG9jay0+aGFuZGxlckZv
ckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KTsKKyAgICAgICAgICAgICAgICBhdXRvKiBo
YW5kbGVyID0gY29kZUJsb2NrLT5oYW5kbGVyRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZz
ZXQpOwogICAgICAgICAgICAgICAgIGZhbGxzVGhyb3VnaCA9IGZhbHNlOwogICAgICAgICAgICAg
ICAgIGlmICghaGFuZGxlcikgewogICAgICAgICAgICAgICAgICAgICBsaW5rQmxvY2tzKGJsb2Nr
LCBleGl0LmdldCgpKTsKQEAgLTIwNiw3ICsyMDksNyBAQCB2b2lkIGNvbXB1dGVCeXRlY29kZUJh
c2ljQmxvY2tzKENvZGVCbG9jayogY29kZUJsb2NrLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5
dAogICAgICAgICAgICAgaWYgKGlzQnJhbmNoKG9wY29kZUlEKSkgewogICAgICAgICAgICAgICAg
IEFTU0VSVChieXRlY29kZU9mZnNldCArIG9wY29kZUxlbmd0aCA9PSBibG9jay0+bGVhZGVyQnl0
ZWNvZGVPZmZzZXQoKSArIGJsb2NrLT50b3RhbEJ5dGVjb2RlTGVuZ3RoKCkpOwogICAgICAgICAg
ICAgICAgIFZlY3Rvcjx1bnNpZ25lZCwgMT4gYnl0ZWNvZGVPZmZzZXRzSnVtcGVkVG87Ci0gICAg
ICAgICAgICAgICAgZmluZEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoY29kZUJsb2NrLCBi
eXRlY29kZU9mZnNldCwgYnl0ZWNvZGVPZmZzZXRzSnVtcGVkVG8pOworICAgICAgICAgICAgICAg
IGZpbmRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb25z
QmVnaW4sIGJ5dGVjb2RlT2Zmc2V0LCBieXRlY29kZU9mZnNldHNKdW1wZWRUbyk7CiAKICAgICAg
ICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYmFzaWNCbG9ja3Muc2l6ZSgpOyBp
KyspIHsKICAgICAgICAgICAgICAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBvdGhlckJsb2Nr
ID0gYmFzaWNCbG9ja3NbaV0uZ2V0KCk7CkBAIC0yMzAsMTAgKzIzMywyMCBAQCB2b2lkIGNvbXB1
dGVCeXRlY29kZUJhc2ljQmxvY2tzKENvZGVCbG9jayogY29kZUJsb2NrLCBWZWN0b3I8c3RkOjp1
bmlxdWVfcHRyPEJ5dAogICAgICAgICB9CiAgICAgfQogCi0gICAgYmFzaWNCbG9ja3MuYXBwZW5k
KFdURk1vdmUoZXhpdCkpOworICAgIGFwcGVuZEJsb2NrKFdURk1vdmUoZXhpdCkpOwogICAgIAog
ICAgIGZvciAoYXV0byYgYmFzaWNCbG9jayA6IGJhc2ljQmxvY2tzKQogICAgICAgICBiYXNpY0Js
b2NrLT5zaHJpbmtUb0ZpdCgpOwogfQogCit2b2lkIEJ5dGVjb2RlQmFzaWNCbG9jazo6Y29tcHV0
ZUJ5dGVjb2RlQmFzaWNCbG9ja3MoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEluc3RydWN0aW9uKiBp
bnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCwgVmVjdG9yPHN0ZDo6
dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9ja3MpCit7CisgICAgY29t
cHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3NJbnRlcm5hbChjb2RlQmxvY2ssIGluc3RydWN0aW9uc0Jl
Z2luLCBpbnN0cnVjdGlvbkNvdW50LCBiYXNpY0Jsb2Nrcyk7Cit9CisKK3ZvaWQgQnl0ZWNvZGVC
YXNpY0Jsb2NrOjpjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2NrcyhVbmxpbmtlZENvZGVCbG9jayog
Y29kZUJsb2NrLCBVbmxpbmtlZEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWdu
ZWQgaW5zdHJ1Y3Rpb25Db3VudCwgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2lj
QmxvY2s+PiYgYmFzaWNCbG9ja3MpCit7CisgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrOjpjb21wdXRl
Qnl0ZWNvZGVCYXNpY0Jsb2Nrc0ludGVybmFsKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb25zQmVnaW4s
IGluc3RydWN0aW9uQ291bnQsIGJhc2ljQmxvY2tzKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlND
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVCYXNp
Y0Jsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Js
b2NrLmgKaW5kZXggY2Q3MTQ3N2VkNTA2YWE3ODgwMjE2NWZhY2RiN2E2ZDQ2ZjM4ZGMyYS4uNmEy
ZWRjNjBkYjNkN2I5OWRjY2RmZTk0NzhiZmNmZDUxMGU4ODI5YiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suaApAQCAtMzMsNiAr
MzMsOSBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIENvZGVCbG9jazsKK2NsYXNzIFVubGlu
a2VkQ29kZUJsb2NrOworc3RydWN0IEluc3RydWN0aW9uOworc3RydWN0IFVubGlua2VkSW5zdHJ1
Y3Rpb247CiAKIGNsYXNzIEJ5dGVjb2RlQmFzaWNCbG9jayB7CiAgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CkBAIC00OCwyOCArNTEsMzkgQEAgY2xhc3MgQnl0ZWNvZGVCYXNpY0Jsb2NrIHsK
ICAgICB1bnNpZ25lZCBsZWFkZXJCeXRlY29kZU9mZnNldCgpIHsgcmV0dXJuIG1fbGVhZGVyQnl0
ZWNvZGVPZmZzZXQ7IH0KICAgICB1bnNpZ25lZCB0b3RhbEJ5dGVjb2RlTGVuZ3RoKCkgeyByZXR1
cm4gbV90b3RhbEJ5dGVjb2RlTGVuZ3RoOyB9CiAKLSAgICBWZWN0b3I8dW5zaWduZWQ+JiBieXRl
Y29kZU9mZnNldHMoKSB7IHJldHVybiBtX2J5dGVjb2RlT2Zmc2V0czsgfQotICAgIHZvaWQgYWRk
Qnl0ZWNvZGVMZW5ndGgodW5zaWduZWQpOworICAgIGNvbnN0IFZlY3Rvcjx1bnNpZ25lZD4mIGJ5
dGVjb2RlT2Zmc2V0cygpIGNvbnN0IHsgcmV0dXJuIG1fYnl0ZWNvZGVPZmZzZXRzOyB9CiAKLSAg
ICBWZWN0b3I8Qnl0ZWNvZGVCYXNpY0Jsb2NrKj4mIHN1Y2Nlc3NvcnMoKSB7IHJldHVybiBtX3N1
Y2Nlc3NvcnM7IH0KLSAgICB2b2lkIGFkZFN1Y2Nlc3NvcihCeXRlY29kZUJhc2ljQmxvY2sqIGJs
b2NrKSB7IG1fc3VjY2Vzc29ycy5hcHBlbmQoYmxvY2spOyB9CisgICAgY29uc3QgVmVjdG9yPEJ5
dGVjb2RlQmFzaWNCbG9jayo+JiBzdWNjZXNzb3JzKCkgY29uc3QgeyByZXR1cm4gbV9zdWNjZXNz
b3JzOyB9CisgICAgY29uc3QgVmVjdG9yPEJ5dGVjb2RlQmFzaWNCbG9jayo+JiBwcmVkZWNlc3Nv
cnMoKSBjb25zdCB7IHJldHVybiBtX3ByZWRlY2Vzc29yczsgfQogCiAgICAgRmFzdEJpdFZlY3Rv
ciYgaW4oKSB7IHJldHVybiBtX2luOyB9CiAgICAgRmFzdEJpdFZlY3RvciYgb3V0KCkgeyByZXR1
cm4gbV9vdXQ7IH0KIAorICAgIHVuc2lnbmVkIGluZGV4KCkgY29uc3QgeyByZXR1cm4gbV9pbmRl
eDsgfQorCisgICAgc3RhdGljIHZvaWQgY29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MoQ29kZUJs
b2NrKiwgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBpbnN0cnVjdGlv
bkNvdW50LCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+Jik7Cisg
ICAgc3RhdGljIHZvaWQgY29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MoVW5saW5rZWRDb2RlQmxv
Y2sqLCBVbmxpbmtlZEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgaW5z
dHJ1Y3Rpb25Db3VudCwgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+
PiYpOworCiBwcml2YXRlOgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEJsb2NrLCB0eXBlbmFtZSBJ
bnN0cnVjdGlvbj4gc3RhdGljIHZvaWQgY29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3NJbnRlcm5h
bChCbG9jayogY29kZUJsb2NrLCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2ln
bmVkIGluc3RydWN0aW9uQ291bnQsIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNp
Y0Jsb2NrPj4mIGJhc2ljQmxvY2tzKTsKKworICAgIHZvaWQgYWRkU3VjY2Vzc29yKEJ5dGVjb2Rl
QmFzaWNCbG9jayogYmxvY2spIHsgbV9zdWNjZXNzb3JzLmFwcGVuZChibG9jayk7IH0KKyAgICB2
b2lkIGFkZFByZWRlY2Vzc29yKEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2spIHsgbV9wcmVkZWNl
c3NvcnMuYXBwZW5kKGJsb2NrKTsgfQorCisgICAgdm9pZCBhZGRCeXRlY29kZUxlbmd0aCh1bnNp
Z25lZCk7CisKICAgICB1bnNpZ25lZCBtX2xlYWRlckJ5dGVjb2RlT2Zmc2V0OwogICAgIHVuc2ln
bmVkIG1fdG90YWxCeXRlY29kZUxlbmd0aDsKKyAgICB1bnNpZ25lZCBtX2luZGV4OwogCiAgICAg
VmVjdG9yPHVuc2lnbmVkPiBtX2J5dGVjb2RlT2Zmc2V0czsKICAgICBWZWN0b3I8Qnl0ZWNvZGVC
YXNpY0Jsb2NrKj4gbV9zdWNjZXNzb3JzOworICAgIFZlY3RvcjxCeXRlY29kZUJhc2ljQmxvY2sq
PiBtX3ByZWRlY2Vzc29yczsKIAogICAgIEZhc3RCaXRWZWN0b3IgbV9pbjsKICAgICBGYXN0Qml0
VmVjdG9yIG1fb3V0OwogfTsKIAotdm9pZCBjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2NrcyhDb2Rl
QmxvY2sqLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+Jik7Ci0K
IGlubGluZSBCeXRlY29kZUJhc2ljQmxvY2s6OkJ5dGVjb2RlQmFzaWNCbG9jayh1bnNpZ25lZCBz
dGFydCwgdW5zaWduZWQgbGVuZ3RoKQogICAgIDogbV9sZWFkZXJCeXRlY29kZU9mZnNldChzdGFy
dCkKICAgICAsIG1fdG90YWxCeXRlY29kZUxlbmd0aChsZW5ndGgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0
aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4xNTk1MTMzYzJlNzUwOGYyN2IyY2ZlNjE1OTkwMDgzMWJlZWVk
ZTRhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcApAQCAtMCwwICsxLDI5MSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNiBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+Cisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJCeXRlY29kZUdlbmVyYXRv
cmlmaWNhdGlvbi5oIgorCisjaW5jbHVkZSAiQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzSW5saW5l
cy5oIgorI2luY2x1ZGUgIkJ5dGVjb2RlUmV3cml0ZXIuaCIKKyNpbmNsdWRlICJCeXRlY29kZVVz
ZURlZi5oIgorI2luY2x1ZGUgIklkZW50aWZpZXJJbmxpbmVzLmgiCisjaW5jbHVkZSAiSW50ZXJw
cmV0ZXJJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRl
ICJKU0dlbmVyYXRvckZ1bmN0aW9uLmgiCisjaW5jbHVkZSAiU3Ryb25nSW5saW5lcy5oIgorI2lu
Y2x1ZGUgIlVubGlua2VkQ29kZUJsb2NrLmgiCisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CisK
K25hbWVzcGFjZSBKU0MgeworCitzdHJ1Y3QgWWllbGREYXRhIHsKKyAgICBzaXplX3Qgc2F2ZVBv
aW50OworICAgIHNpemVfdCBtZXJnZVBvaW50OworICAgIHNpemVfdCByZXN1bWVQb2ludDsKKyAg
ICBGYXN0Qml0VmVjdG9yIGxpdmVuZXNzOworfTsKKworY2xhc3MgQnl0ZWNvZGVHZW5lcmF0b3Jp
ZmljYXRpb24geworcHVibGljOgorICAgIHR5cGVkZWYgVmVjdG9yPFlpZWxkRGF0YT4gWWllbGRz
OworCisgICAgQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24oVW5saW5rZWRDb2RlQmxvY2sqIGNv
ZGVCbG9jaywgVW5saW5rZWRDb2RlQmxvY2s6OlVucGFja2VkSW5zdHJ1Y3Rpb25zJiBpbnN0cnVj
dGlvbnMsIFN5bWJvbFRhYmxlKiBnZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlLCBpbnQgZ2VuZXJh
dG9yRnJhbWVTeW1ib2xUYWJsZUluZGV4KQorICAgICAgICA6IG1fZ3JhcGgoY29kZUJsb2NrLCBp
bnN0cnVjdGlvbnMpCisgICAgICAgICwgbV9pbnNlcnRpb25TZXQobV9ncmFwaCkKKyAgICAgICAg
LCBtX2dlbmVyYXRvckZyYW1lU3ltYm9sVGFibGUoKmNvZGVCbG9jay0+dm0oKSwgZ2VuZXJhdG9y
RnJhbWVTeW1ib2xUYWJsZSkKKyAgICAgICAgLCBtX2dlbmVyYXRvckZyYW1lU3ltYm9sVGFibGVJ
bmRleChnZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlSW5kZXgpCisgICAgeworICAgICAgICBmb3Ig
KEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2sgOiBtX2dyYXBoKSB7CisgICAgICAgICAgICBmb3Ig
KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0IDogYmxvY2stPmJ5dGVjb2RlT2Zmc2V0cygpKSB7Cisg
ICAgICAgICAgICAgICAgY29uc3QgVW5saW5rZWRJbnN0cnVjdGlvbiogcGMgPSAmbV9ncmFwaC5p
bnN0cnVjdGlvbnMoKVtieXRlY29kZU9mZnNldF07CisgICAgICAgICAgICAgICAgc3dpdGNoIChw
Yy0+dS5vcGNvZGUpIHsKKyAgICAgICAgICAgICAgICBjYXNlIG9wX3NhdmU6IHsKKyAgICAgICAg
ICAgICAgICAgICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gcGNbMl0udS5pbmRl
eDsKKyAgICAgICAgICAgICAgICAgICAgaW50IG9mZnNldCA9IHBjWzNdLnUub3BlcmFuZDsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKGxpdmVDYWxsZWVMb2NhbHNJbmRleCA+PSBtX3lpZWxkcy5z
aXplKCkpCisgICAgICAgICAgICAgICAgICAgICAgICBtX3lpZWxkcy5yZXNpemUobGl2ZUNhbGxl
ZUxvY2Fsc0luZGV4ICsgMSk7CisgICAgICAgICAgICAgICAgICAgIG1feWllbGRzW2xpdmVDYWxs
ZWVMb2NhbHNJbmRleF0uc2F2ZVBvaW50ID0gYnl0ZWNvZGVPZmZzZXQ7CisgICAgICAgICAgICAg
ICAgICAgIHVuc2lnbmVkIG1lcmdlUG9pbnQgPSBieXRlY29kZU9mZnNldCArIG9mZnNldDsKKyAg
ICAgICAgICAgICAgICAgICAgbV95aWVsZHNbbGl2ZUNhbGxlZUxvY2Fsc0luZGV4XS5tZXJnZVBv
aW50ID0gbWVyZ2VQb2ludDsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICAgICAgY2FzZSBvcF9yZXN1bWU6IHsKKyAgICAgICAgICAg
ICAgICAgICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gcGNbMl0udS5pbmRleDsK
KyAgICAgICAgICAgICAgICAgICAgaWYgKGxpdmVDYWxsZWVMb2NhbHNJbmRleCA+PSBtX3lpZWxk
cy5zaXplKCkpCisgICAgICAgICAgICAgICAgICAgICAgICBtX3lpZWxkcy5yZXNpemUobGl2ZUNh
bGxlZUxvY2Fsc0luZGV4ICsgMSk7CisgICAgICAgICAgICAgICAgICAgIG1feWllbGRzW2xpdmVD
YWxsZWVMb2NhbHNJbmRleF0ucmVzdW1lUG9pbnQgPSBieXRlY29kZU9mZnNldDsKKyAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAg
ZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgc3RydWN0IFN0b3JhZ2Ugewor
ICAgICAgICBJZGVudGlmaWVyIGlkZW50aWZpZXI7CisgICAgICAgIHVuc2lnbmVkIGlkZW50aWZp
ZXJJbmRleDsKKyAgICAgICAgU2NvcGVPZmZzZXQgc2NvcGVPZmZzZXQ7CisgICAgfTsKKworICAg
IHZvaWQgcnVuKCk7CisKKyAgICBCeXRlY29kZUdyYXBoPFVubGlua2VkQ29kZUJsb2NrPiYgZ3Jh
cGgoKSB7IHJldHVybiBtX2dyYXBoOyB9CisKKyAgICBjb25zdCBZaWVsZHMmIHlpZWxkcygpIGNv
bnN0CisgICAgeworICAgICAgICByZXR1cm4gbV95aWVsZHM7CisgICAgfQorCisgICAgWWllbGRz
JiB5aWVsZHMoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1feWllbGRzOworICAgIH0KKworcHJp
dmF0ZToKKyAgICBTdG9yYWdlIHN0b3JhZ2VGb3JHZW5lcmF0b3JMb2NhbCh1bnNpZ25lZCBpbmRl
eCkKKyAgICB7CisgICAgICAgIC8vIFdlIGFzc2lnbiBhIHN5bWJvbCB0byBhIHJlZ2lzdGVyLiBU
aGVyZSBpcyBvbmUtb24tb25lIGNvcnJlc3BvbmRpbmcgYmV0d2VlbiBhIHJlZ2lzdGVyIGFuZCBh
IHN5bWJvbC4KKyAgICAgICAgLy8gQnkgZG9pbmcgc28sIHdlIGFsbG9jYXRlIHRoZSBzcGVjaWZp
YyBzdG9yYWdlIHRvIHNhdmUgdGhlIGdpdmVuIHJlZ2lzdGVyLgorICAgICAgICAvLyBUaGlzIGFs
bG93IHVzIG5vdCB0byBzYXZlIGFsbCB0aGUgbGl2ZSByZWdpc3RlcnMgZXZlbiBpZiB0aGUgcmVn
aXN0ZXJzIGFyZSBub3Qgb3ZlcndyaXR0ZW4gZnJvbSB0aGUgcHJldmlvdXMgcmVzdW1pbmcgdGlt
ZS4KKyAgICAgICAgLy8gSXQgbWVhbnMgdGhhdCwgdGhlIHJlZ2lzdGVyIGNhbiBiZSByZXRyaWV2
ZWQgZXZlbiBpZiB0aGUgaW1tZWRpYXRlIHByZXZpb3VzIG9wX3NhdmUgZG9lcyBub3Qgc2F2ZSBp
dC4KKworICAgICAgICBpZiAobV9zdG9yYWdlcy5zaXplKCkgPD0gaW5kZXgpCisgICAgICAgICAg
ICBtX3N0b3JhZ2VzLnJlc2l6ZShpbmRleCArIDEpOworICAgICAgICBpZiAoT3B0aW9uYWw8U3Rv
cmFnZT4gc3RvcmFnZSA9IG1fc3RvcmFnZXNbaW5kZXhdKQorICAgICAgICAgICAgcmV0dXJuICpz
dG9yYWdlOworCisgICAgICAgIFVubGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBtX2dyYXBo
LmNvZGVCbG9jaygpOworICAgICAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIgPSBJZGVudGlmaWVy
Ojpmcm9tVWlkKFByaXZhdGVOYW1lKCkpOworICAgICAgICB1bnNpZ25lZCBpZGVudGlmaWVySW5k
ZXggPSBjb2RlQmxvY2stPm51bWJlck9mSWRlbnRpZmllcnMoKTsKKyAgICAgICAgY29kZUJsb2Nr
LT5hZGRJZGVudGlmaWVyKGlkZW50aWZpZXIpOworICAgICAgICBTY29wZU9mZnNldCBzY29wZU9m
ZnNldCA9IG1fZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZS0+dGFrZU5leHRTY29wZU9mZnNldChO
b0xvY2tpbmdOZWNlc3NhcnkpOworICAgICAgICBtX2dlbmVyYXRvckZyYW1lU3ltYm9sVGFibGUt
PnNldChOb0xvY2tpbmdOZWNlc3NhcnksIGlkZW50aWZpZXIuaW1wbCgpLCBTeW1ib2xUYWJsZUVu
dHJ5KFZhck9mZnNldChzY29wZU9mZnNldCkpKTsKKworICAgICAgICBTdG9yYWdlIHN0b3JhZ2Ug
PSB7CisgICAgICAgICAgICBpZGVudGlmaWVyLAorICAgICAgICAgICAgaWRlbnRpZmllckluZGV4
LAorICAgICAgICAgICAgc2NvcGVPZmZzZXQKKyAgICAgICAgfTsKKyAgICAgICAgbV9zdG9yYWdl
c1tpbmRleF0gPSBzdG9yYWdlOworICAgICAgICByZXR1cm4gc3RvcmFnZTsKKyAgICB9CisKKyAg
ICBCeXRlY29kZUdyYXBoPFVubGlua2VkQ29kZUJsb2NrPiBtX2dyYXBoOworICAgIEJ5dGVjb2Rl
UmV3cml0ZXIgbV9pbnNlcnRpb25TZXQ7CisgICAgVmVjdG9yPE9wdGlvbmFsPFN0b3JhZ2U+PiBt
X3N0b3JhZ2VzOworICAgIFlpZWxkcyBtX3lpZWxkczsKKyAgICBTdHJvbmc8U3ltYm9sVGFibGU+
IG1fZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZTsKKyAgICBpbnQgbV9nZW5lcmF0b3JGcmFtZVN5
bWJvbFRhYmxlSW5kZXg7Cit9OworCitjbGFzcyBHZW5lcmF0b3JMaXZlbmVzc0FuYWx5c2lzIDog
cHVibGljIEJ5dGVjb2RlTGl2ZW5lc3NMb2NhbFByb3BhZ2F0aW9uPEdlbmVyYXRvckxpdmVuZXNz
QW5hbHlzaXM+IHsKK3B1YmxpYzoKKyAgICBHZW5lcmF0b3JMaXZlbmVzc0FuYWx5c2lzKEJ5dGVj
b2RlR2VuZXJhdG9yaWZpY2F0aW9uJiBnZW5lcmF0b3JpZmljYXRpb24pCisgICAgICAgIDogbV9n
ZW5lcmF0b3JpZmljYXRpb24oZ2VuZXJhdG9yaWZpY2F0aW9uKQorICAgIHsKKyAgICB9CisKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgorICAgIHZvaWQgY29tcHV0ZURlZnNGb3JCeXRl
Y29kZU9mZnNldChVbmxpbmtlZENvZGVCbG9jayogY29kZUJsb2NrLCBPcGNvZGVJRCBvcGNvZGVJ
RCwgVW5saW5rZWRJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIEZhc3RCaXRWZWN0b3ImIG91dCwg
Y29uc3QgRnVuY3RvciYgZnVuY3RvcikKKyAgICB7CisgICAgICAgIEpTQzo6Y29tcHV0ZURlZnNG
b3JCeXRlY29kZU9mZnNldChjb2RlQmxvY2ssIG9wY29kZUlELCBpbnN0cnVjdGlvbiwgZnVuY3Rv
cik7CisKKyAgICAgICAgc3dpdGNoIChvcGNvZGVJRCkgeworICAgICAgICBjYXNlIG9wX3NhdmU6
CisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgY2FzZSBvcF9yZXN1bWU6IHsKKyAgICAg
ICAgICAgIC8vIHJlc3VtZSBkZWZpbmVzIGFsbCB0aGUgcmVnaXN0ZXJzLgorICAgICAgICAgICAg
b3V0LmNsZWFyQWxsKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAg
ICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorCisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KKyAgICB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNv
ZGVPZmZzZXQoVW5saW5rZWRDb2RlQmxvY2sqIGNvZGVCbG9jaywgT3Bjb2RlSUQgb3Bjb2RlSUQs
IFVubGlua2VkSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBGYXN0Qml0VmVjdG9yJiwgY29uc3Qg
RnVuY3RvciYgZnVuY3RvcikKKyAgICB7CisgICAgICAgIEpTQzo6Y29tcHV0ZVVzZXNGb3JCeXRl
Y29kZU9mZnNldChjb2RlQmxvY2ssIG9wY29kZUlELCBpbnN0cnVjdGlvbiwgZnVuY3Rvcik7CisK
KyAgICAgICAgc3dpdGNoIChvcGNvZGVJRCkgeworICAgICAgICBjYXNlIG9wX3NhdmU6CisgICAg
ICAgIGNhc2Ugb3BfcmVzdW1lOiB7CisgICAgICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5z
dHJ1Y3Rpb24sIG9wY29kZUlELCBpbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQgcnVuKCkKKyAgICB7CisgICAgICAg
IC8vIFBlcmZvcm0gbW9kaWZpZWQgbGl2ZW5lc3MgYW5hbHlzaXMgdG8gZGV0ZXJtaW5lIHdoaWNo
IGxvY2FscyBhcmUgbGl2ZSBhdCB0aGUgbWVyZ2UgcG9pbnRzLgorICAgICAgICAvLyBUaGlzIHBy
b2R1Y2VzIHRoZSBjb25zZXJ2YXRpdmUgcmVzdWx0cyBmb3IgdGhlIHF1ZXN0aW9uLCAid2hpY2gg
dmFyaWFibGVzIHNob3VsZCBiZSBzYXZlZCBhbmQgcmVzdW1lZD8iLgorCisgICAgICAgIEJ5dGVj
b2RlR3JhcGg8VW5saW5rZWRDb2RlQmxvY2s+JiBncmFwaCA9IG1fZ2VuZXJhdG9yaWZpY2F0aW9u
LmdyYXBoKCk7CisgICAgICAgIFVubGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBncmFwaC5j
b2RlQmxvY2soKTsKKyAgICAgICAgdW5zaWduZWQgbnVtYmVyT2ZWYXJpYWJsZXMgPSBjb2RlQmxv
Y2stPm1fbnVtQ2FsbGVlTG9jYWxzOworICAgICAgICBmb3IgKEJ5dGVjb2RlQmFzaWNCbG9jayog
YmxvY2sgOiBncmFwaCkgeworICAgICAgICAgICAgYmxvY2stPmluKCkucmVzaXplKG51bWJlck9m
VmFyaWFibGVzKTsKKyAgICAgICAgICAgIGJsb2NrLT5vdXQoKS5yZXNpemUobnVtYmVyT2ZWYXJp
YWJsZXMpOworICAgICAgICAgICAgYmxvY2stPmluKCkuY2xlYXJBbGwoKTsKKyAgICAgICAgICAg
IGJsb2NrLT5vdXQoKS5jbGVhckFsbCgpOworICAgICAgICB9CisKKyAgICAgICAgYm9vbCBjaGFu
Z2VkOworICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGxhc3RCbG9jayA9IGdyYXBoLmxhc3Qo
KTsKKyAgICAgICAgbGFzdEJsb2NrLT5pbigpLmNsZWFyQWxsKCk7CisgICAgICAgIGxhc3RCbG9j
ay0+b3V0KCkuY2xlYXJBbGwoKTsKKyAgICAgICAgRmFzdEJpdFZlY3RvciBuZXdPdXQ7CisgICAg
ICAgIG5ld091dC5yZXNpemUobGFzdEJsb2NrLT5vdXQoKS5udW1CaXRzKCkpOworICAgICAgICBk
byB7CisgICAgICAgICAgICBjaGFuZ2VkID0gZmFsc2U7CisgICAgICAgICAgICBmb3IgKHN0ZDo6
dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+JiBibG9jayA6IGdyYXBoLmJhc2ljQmxvY2tz
SW5SZXZlcnNlT3JkZXIoKSkgeworICAgICAgICAgICAgICAgIG5ld091dC5jbGVhckFsbCgpOwor
ICAgICAgICAgICAgICAgIGZvciAoQnl0ZWNvZGVCYXNpY0Jsb2NrKiBzdWNjZXNzb3IgOiBibG9j
ay0+c3VjY2Vzc29ycygpKQorICAgICAgICAgICAgICAgICAgICBuZXdPdXQubWVyZ2Uoc3VjY2Vz
c29yLT5pbigpKTsKKyAgICAgICAgICAgICAgICBibG9jay0+b3V0KCkuc2V0KG5ld091dCk7Cisg
ICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJsb2NrKG1f
Z2VuZXJhdG9yaWZpY2F0aW9uLmdyYXBoKCksIGJsb2NrLmdldCgpKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfSB3aGlsZSAoY2hhbmdlZCk7CisKKyAgICAgICAgZm9yIChZaWVsZERhdGEmIGRh
dGEgOiBtX2dlbmVyYXRvcmlmaWNhdGlvbi55aWVsZHMoKSkKKyAgICAgICAgICAgIGRhdGEubGl2
ZW5lc3MgPSBnZXRMaXZlbmVzc0luZm9BdEJ5dGVjb2RlT2Zmc2V0KG1fZ2VuZXJhdG9yaWZpY2F0
aW9uLmdyYXBoKCksIGRhdGEubWVyZ2VQb2ludCk7CisgICAgfQorCitwcml2YXRlOgorICAgIEJ5
dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uJiBtX2dlbmVyYXRvcmlmaWNhdGlvbjsKK307CisKK3Zv
aWQgQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb246OnJ1bigpCit7CisgICAgLy8gV2UgY2FsY3Vs
YXRlIHRoZSBsaXZlbmVzcyBhdCBlYWNoIG1lcmdlIHBvaW50LiBUaGlzIGdpdmVzIHVzIHRoZSBp
bmZvcm1hdGlvbiB3aGljaCByZWdpc3RlcnMgc2hvdWxkIGJlIHNhdmVkIGFuZCByZXN1bWVkIGNv
bnNlcnZhdGl2ZWx5LgorCisgICAgeworICAgICAgICBHZW5lcmF0b3JMaXZlbmVzc0FuYWx5c2lz
IHBhc3MoKnRoaXMpOworICAgICAgICBwYXNzLnJ1bigpOworICAgIH0KKworICAgIFVubGlua2Vk
Q29kZUJsb2NrKiBjb2RlQmxvY2sgPSBtX2dyYXBoLmNvZGVCbG9jaygpOworICAgIGZvciAoY29u
c3QgWWllbGREYXRhJiBkYXRhIDogbV95aWVsZHMpIHsKKyAgICAgICAgVmlydHVhbFJlZ2lzdGVy
IHNjb3BlID0gdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoc3RhdGljX2Nhc3Q8aW50MzJfdD4o
SlNHZW5lcmF0b3JGdW5jdGlvbjo6R2VuZXJhdG9yQXJndW1lbnQ6OkZyYW1lKSk7CisKKyAgICAg
ICAgLy8gb3Bfc2F2ZS4KKyAgICAgICAgZGF0YS5saXZlbmVzcy5mb3JFYWNoU2V0Qml0KFsmXShz
aXplX3QgaW5kZXgpIHsKKyAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kID0gdmly
dHVhbFJlZ2lzdGVyRm9yTG9jYWwoaW5kZXgpOworICAgICAgICAgICAgU3RvcmFnZSBzdG9yYWdl
ID0gc3RvcmFnZUZvckdlbmVyYXRvckxvY2FsKGluZGV4KTsKKworICAgICAgICAgICAgbV9pbnNl
cnRpb25TZXQuaW5zZXJ0QWZ0ZXIoZGF0YS5zYXZlUG9pbnQsCisgICAgICAgICAgICAgICAgb3Bf
cHV0X3RvX3Njb3BlLAorICAgICAgICAgICAgICAgIHNjb3BlLm9mZnNldCgpLCAvLyBzY29wZQor
ICAgICAgICAgICAgICAgIHN0b3JhZ2UuaWRlbnRpZmllckluZGV4LCAvLyBpZGVudGlmaWVyCisg
ICAgICAgICAgICAgICAgb3BlcmFuZC5vZmZzZXQoKSwgLy8gdmFsdWUKKyAgICAgICAgICAgICAg
ICBHZXRQdXRJbmZvKERvTm90VGhyb3dJZk5vdEZvdW5kLCBMb2NhbENsb3N1cmVWYXIsIEluaXRp
YWxpemF0aW9uTW9kZTo6Tm90SW5pdGlhbGl6YXRpb24pLm9wZXJhbmQoKSwgLy8gaW5mbworICAg
ICAgICAgICAgICAgIG1fZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZUluZGV4LCAvLyBzeW1ib2wg
dGFibGUgY29uc3RhbnQgaW5kZXgKKyAgICAgICAgICAgICAgICBzdG9yYWdlLnNjb3BlT2Zmc2V0
Lm9mZnNldCgpIC8vIHNjb3BlIG9mZnNldAorICAgICAgICAgICAgKTsKKyAgICAgICAgfSk7CisK
KyAgICAgICAgLy8gb3BfcmVzdW1lLgorICAgICAgICBkYXRhLmxpdmVuZXNzLmZvckVhY2hTZXRC
aXQoWyZdKHNpemVfdCBpbmRleCkgeworICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIG9wZXJh
bmQgPSB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChpbmRleCk7CisgICAgICAgICAgICBTdG9yYWdl
IHN0b3JhZ2UgPSBzdG9yYWdlRm9yR2VuZXJhdG9yTG9jYWwoaW5kZXgpOworCisgICAgICAgICAg
ICBVbmxpbmtlZFZhbHVlUHJvZmlsZSBwcm9maWxlID0gY29kZUJsb2NrLT5hZGRWYWx1ZVByb2Zp
bGUoKTsKKyAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydEJlZm9yZShkYXRhLnJlc3Vt
ZVBvaW50LAorICAgICAgICAgICAgICAgIG9wX2dldF9mcm9tX3Njb3BlLAorICAgICAgICAgICAg
ICAgIG9wZXJhbmQub2Zmc2V0KCksIC8vIGRzdAorICAgICAgICAgICAgICAgIHNjb3BlLm9mZnNl
dCgpLCAvLyBzY29wZQorICAgICAgICAgICAgICAgIHN0b3JhZ2UuaWRlbnRpZmllckluZGV4LCAv
LyBpZGVudGlmaWVyCisgICAgICAgICAgICAgICAgR2V0UHV0SW5mbyhEb05vdFRocm93SWZOb3RG
b3VuZCwgTG9jYWxDbG9zdXJlVmFyLCBJbml0aWFsaXphdGlvbk1vZGU6Ok5vdEluaXRpYWxpemF0
aW9uKS5vcGVyYW5kKCksIC8vIGluZm8KKyAgICAgICAgICAgICAgICAwLCAvLyBsb2NhbCBzY29w
ZSBkZXB0aAorICAgICAgICAgICAgICAgIHN0b3JhZ2Uuc2NvcGVPZmZzZXQub2Zmc2V0KCksIC8v
IHNjb3BlIG9mZnNldAorICAgICAgICAgICAgICAgIHByb2ZpbGUgLy8gcHJvZmlsZQorICAgICAg
ICAgICAgKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgLy8gQ2xpcCB0aGUgdW5uZWNlc3Nhcnkg
Ynl0ZWNvZGVzLgorICAgICAgICBtX2luc2VydGlvblNldC5yZW1vdmVCeXRlY29kZShkYXRhLnNh
dmVQb2ludCk7CisgICAgICAgIG1faW5zZXJ0aW9uU2V0LnJlbW92ZUJ5dGVjb2RlKGRhdGEucmVz
dW1lUG9pbnQpOworICAgIH0KKworICAgIG1faW5zZXJ0aW9uU2V0LmV4ZWN1dGUoKTsKK30KKwor
dm9pZCBwZXJmb3JtR2VuZXJhdG9yaWZpY2F0aW9uKFVubGlua2VkQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssIFVubGlua2VkQ29kZUJsb2NrOjpVbnBhY2tlZEluc3RydWN0aW9ucyYgaW5zdHJ1Y3Rpb25z
LCBTeW1ib2xUYWJsZSogZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZSwgaW50IGdlbmVyYXRvckZy
YW1lU3ltYm9sVGFibGVJbmRleCkKK3sKKyAgICBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbiBw
YXNzKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb25zLCBnZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlLCBn
ZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlSW5kZXgpOworICAgIHBhc3MucnVuKCk7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYjdlYzk2
ZWQ3MGRiYmEyMjExMWViMTM3NzMzZmIyMDA1NWIxMTFhCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmgK
QEAgLTAsMCArMSwzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBZdXN1a2UgU3V6dWtp
IDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5j
bHVkZSAiVW5saW5rZWRDb2RlQmxvY2suaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIFN5
bWJvbFRhYmxlOworCit2b2lkIHBlcmZvcm1HZW5lcmF0b3JpZmljYXRpb24oVW5saW5rZWRDb2Rl
QmxvY2sqLCBVbmxpbmtlZENvZGVCbG9jazo6VW5wYWNrZWRJbnN0cnVjdGlvbnMmLCBTeW1ib2xU
YWJsZSogZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZSwgaW50IGdlbmVyYXRvckZyYW1lU3ltYm9s
VGFibGVJbmRleCk7CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlR3JhcGguaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9CeXRlY29kZUdyYXBoLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGMzNjgxNmMwNjQzMjE1
YWUzMTU3N2E1MmFkODQ1YTU3OTIzNWRmNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUdyYXBoLmgKQEAgLTAsMCArMSwxMjQgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwu
Y29tPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkJ5dGVjb2RlQmFzaWNC
bG9jay5oIgorI2luY2x1ZGUgPHd0Zi9JbmRleGVkQ29udGFpbmVySXRlcmF0b3IuaD4KKyNpbmNs
dWRlIDx3dGYvSXRlcmF0b3JSYW5nZS5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFt
ZXNwYWNlIEpTQyB7CisKK2NsYXNzIEJ5dGVjb2RlQmFzaWNCbG9jazsKKwordGVtcGxhdGU8dHlw
ZW5hbWUgQmxvY2s+CitjbGFzcyBCeXRlY29kZUdyYXBoIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShCeXRlY29kZUdyYXBoKTsKK3B1Ymxp
YzoKKyAgICB0eXBlZGVmIEJsb2NrIENvZGVCbG9jazsKKyAgICB0eXBlZGVmIHR5cGVuYW1lIEJs
b2NrOjpJbnN0cnVjdGlvbiBJbnN0cnVjdGlvbjsKKyAgICB0eXBlZGVmIFZlY3RvcjxzdGQ6OnVu
aXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4gQmFzaWNCbG9ja3NWZWN0b3I7CisKKyAgICBp
bmxpbmUgQnl0ZWNvZGVHcmFwaChCbG9jayosIHR5cGVuYW1lIEJsb2NrOjpVbnBhY2tlZEluc3Ry
dWN0aW9ucyYpOworCisgICAgQmxvY2sqIGNvZGVCbG9jaygpIGNvbnN0IHsgcmV0dXJuIG1fY29k
ZUJsb2NrOyB9CisKKyAgICB0eXBlbmFtZSBCbG9jazo6VW5wYWNrZWRJbnN0cnVjdGlvbnMmIGlu
c3RydWN0aW9ucygpIHsgcmV0dXJuIG1faW5zdHJ1Y3Rpb25zOyB9CisKKyAgICBXVEY6Okl0ZXJh
dG9yUmFuZ2U8QmFzaWNCbG9ja3NWZWN0b3I6OnJldmVyc2VfaXRlcmF0b3I+IGJhc2ljQmxvY2tz
SW5SZXZlcnNlT3JkZXIoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFdURjo6bWFrZUl0ZXJhdG9y
UmFuZ2UobV9iYXNpY0Jsb2Nrcy5yYmVnaW4oKSwgbV9iYXNpY0Jsb2Nrcy5yZW5kKCkpOworICAg
IH0KKworICAgIHN0YXRpYyBib29sIGJsb2NrQ29udGFpbnNCeXRlY29kZU9mZnNldChCeXRlY29k
ZUJhc2ljQmxvY2sqIGJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCkKKyAgICB7CisgICAg
ICAgIHVuc2lnbmVkIGxlYWRlck9mZnNldCA9IGJsb2NrLT5sZWFkZXJCeXRlY29kZU9mZnNldCgp
OworICAgICAgICByZXR1cm4gYnl0ZWNvZGVPZmZzZXQgPj0gbGVhZGVyT2Zmc2V0ICYmIGJ5dGVj
b2RlT2Zmc2V0IDwgbGVhZGVyT2Zmc2V0ICsgYmxvY2stPnRvdGFsQnl0ZWNvZGVMZW5ndGgoKTsK
KyAgICB9CisKKyAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGZpbmRCYXNpY0Jsb2NrRm9yQnl0ZWNv
ZGVPZmZzZXQodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpCisgICAgeworICAgICAgICAvKgorICAg
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fYmFzaWNCbG9ja3Muc2l6ZSgpOyBp
KyspIHsKKyAgICAgICAgICAgICAgICBpZiAoYmxvY2tDb250YWluc0J5dGVjb2RlT2Zmc2V0KG1f
YmFzaWNCbG9ja3NbaV0uZ2V0KCksIGJ5dGVjb2RlT2Zmc2V0KSkKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIG1fYmFzaWNCbG9ja3NbaV0uZ2V0KCk7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICByZXR1cm4gMDsKKyAgICAgICAgKi8KKworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8Qnl0
ZWNvZGVCYXNpY0Jsb2NrPiogYmFzaWNCbG9jayA9IGFwcHJveGltYXRlQmluYXJ5U2VhcmNoPHN0
ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+LCB1bnNpZ25lZD4obV9iYXNpY0Jsb2Nr
cywgbV9iYXNpY0Jsb2Nrcy5zaXplKCksIGJ5dGVjb2RlT2Zmc2V0LCBbXSAoc3RkOjp1bmlxdWVf
cHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4qIGJhc2ljQmxvY2spIHsgcmV0dXJuICgqYmFzaWNCbG9j
ayktPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCk7IH0pOworICAgICAgICAvLyBXZSBmb3VuZCB0aGUg
YmxvY2sgd2Ugd2VyZSBsb29raW5nIGZvci4KKyAgICAgICAgaWYgKGJsb2NrQ29udGFpbnNCeXRl
Y29kZU9mZnNldCgoKmJhc2ljQmxvY2spLmdldCgpLCBieXRlY29kZU9mZnNldCkpCisgICAgICAg
ICAgICByZXR1cm4gKCpiYXNpY0Jsb2NrKS5nZXQoKTsKKworICAgICAgICAvLyBCYXNpYyBibG9j
ayBpcyB0byB0aGUgbGVmdCBvZiB0aGUgcmV0dXJuZWQgYmxvY2suCisgICAgICAgIGlmIChieXRl
Y29kZU9mZnNldCA8ICgqYmFzaWNCbG9jayktPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCkpIHsKKyAg
ICAgICAgICAgIEFTU0VSVChiYXNpY0Jsb2NrIC0gMSA+PSBtX2Jhc2ljQmxvY2tzLmRhdGEoKSk7
CisgICAgICAgICAgICBBU1NFUlQoYmxvY2tDb250YWluc0J5dGVjb2RlT2Zmc2V0KGJhc2ljQmxv
Y2tbLTFdLmdldCgpLCBieXRlY29kZU9mZnNldCkpOworICAgICAgICAgICAgcmV0dXJuIGJhc2lj
QmxvY2tbLTFdLmdldCgpOworICAgICAgICB9CisKKyAgICAgICAgLy8gQmFzaWMgYmxvY2sgaXMg
dG8gdGhlIHJpZ2h0IG9mIHRoZSByZXR1cm5lZCBibG9jay4KKyAgICAgICAgQVNTRVJUKCZiYXNp
Y0Jsb2NrWzFdIDw9ICZtX2Jhc2ljQmxvY2tzLmxhc3QoKSk7CisgICAgICAgIEFTU0VSVChibG9j
a0NvbnRhaW5zQnl0ZWNvZGVPZmZzZXQoYmFzaWNCbG9ja1sxXS5nZXQoKSwgYnl0ZWNvZGVPZmZz
ZXQpKTsKKyAgICAgICAgcmV0dXJuIGJhc2ljQmxvY2tbMV0uZ2V0KCk7CisgICAgfQorCisgICAg
Qnl0ZWNvZGVCYXNpY0Jsb2NrKiBmaW5kQmFzaWNCbG9ja1dpdGhMZWFkZXJPZmZzZXQodW5zaWdu
ZWQgbGVhZGVyT2Zmc2V0KQorICAgIHsKKyAgICAgICAgcmV0dXJuICgqdHJ5QmluYXJ5U2VhcmNo
PHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+LCB1bnNpZ25lZD4obV9iYXNpY0Js
b2NrcywgbV9iYXNpY0Jsb2Nrcy5zaXplKCksIGxlYWRlck9mZnNldCwgW10gKHN0ZDo6dW5pcXVl
X3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+KiBiYXNpY0Jsb2NrKSB7IHJldHVybiAoKmJhc2ljQmxv
Y2spLT5sZWFkZXJCeXRlY29kZU9mZnNldCgpOyB9KSkuZ2V0KCk7CisgICAgfQorCisgICAgdW5z
aWduZWQgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYmFzaWNCbG9ja3Muc2l6ZSgpOyB9CisgICAg
Qnl0ZWNvZGVCYXNpY0Jsb2NrKiBhdCh1bnNpZ25lZCBpbmRleCkgY29uc3QgeyByZXR1cm4gbV9i
YXNpY0Jsb2Nrc1tpbmRleF0uZ2V0KCk7IH0KKyAgICBCeXRlY29kZUJhc2ljQmxvY2sqIG9wZXJh
dG9yW10odW5zaWduZWQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIGF0KGluZGV4KTsgfQorCisgICAg
dHlwZWRlZiBXVEY6OkluZGV4ZWRDb250YWluZXJJdGVyYXRvcjxCeXRlY29kZUdyYXBoPEJsb2Nr
Pj4gaXRlcmF0b3I7CisKKyAgICBpdGVyYXRvciBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIGl0ZXJh
dG9yKCp0aGlzLCAwKTsgfQorICAgIGl0ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0dXJuIGl0ZXJh
dG9yKCp0aGlzLCBzaXplKCkpOyB9CisgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBmaXJzdCgpIHsg
cmV0dXJuIGF0KDApOyB9CisgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBsYXN0KCkgeyByZXR1cm4g
YXQoc2l6ZSgpIC0gMSk7IH0KKworcHJpdmF0ZToKKyAgICBCbG9jayogbV9jb2RlQmxvY2s7Cisg
ICAgQmFzaWNCbG9ja3NWZWN0b3IgbV9iYXNpY0Jsb2NrczsKKyAgICB0eXBlbmFtZSBCbG9jazo6
VW5wYWNrZWRJbnN0cnVjdGlvbnMmIG1faW5zdHJ1Y3Rpb25zOworfTsKKworCit0ZW1wbGF0ZTx0
eXBlbmFtZSBCbG9jaz4KK0J5dGVjb2RlR3JhcGg8QmxvY2s+OjpCeXRlY29kZUdyYXBoKEJsb2Nr
KiBjb2RlQmxvY2ssIHR5cGVuYW1lIEJsb2NrOjpVbnBhY2tlZEluc3RydWN0aW9ucyYgaW5zdHJ1
Y3Rpb25zKQorICAgIDogbV9jb2RlQmxvY2soY29kZUJsb2NrKQorICAgICwgbV9pbnN0cnVjdGlv
bnMoaW5zdHJ1Y3Rpb25zKQoreworICAgIEFTU0VSVChtX2NvZGVCbG9jayk7CisgICAgQnl0ZWNv
ZGVCYXNpY0Jsb2NrOjpjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2NrcyhtX2NvZGVCbG9jaywgaW5z
dHJ1Y3Rpb25zLmJlZ2luKCksIGluc3RydWN0aW9ucy5zaXplKCksIG1fYmFzaWNCbG9ja3MpOwor
ICAgIEFTU0VSVChtX2Jhc2ljQmxvY2tzLnNpemUoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpT
QwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2
ZW5lc3NBbmFseXNpcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVMaXZlbmVzc0FuYWx5c2lzLmNwcAppbmRleCBkNGNiMDFhY2IxMTY1MTJhM2U2MzMzNmRlMjQz
ZDY5MDkzZmJhNzA0Li5hZDNjMDIxZTFlYTQzN2EzMDM2NDk1MGQ1YTBiYjQ4YzI2NDE5ZTVjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVz
c0FuYWx5c2lzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVMaXZlbmVzc0FuYWx5c2lzLmNwcApAQCAtMzEsMTk5ICszMSw2NiBAQAogI2luY2x1ZGUgIkJ5
dGVjb2RlVXNlRGVmLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiRnVsbEJ5
dGVjb2RlTGl2ZW5lc3MuaCIKLSNpbmNsdWRlICJJbnRlcnByZXRlci5oIgorI2luY2x1ZGUgIklu
dGVycHJldGVySW5saW5lcy5oIgogI2luY2x1ZGUgIlByZWNpc2VKdW1wVGFyZ2V0cy5oIgogCiBu
YW1lc3BhY2UgSlNDIHsKIAogQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpCeXRlY29kZUxpdmVu
ZXNzQW5hbHlzaXMoQ29kZUJsb2NrKiBjb2RlQmxvY2spCi0gICAgOiBtX2NvZGVCbG9jayhjb2Rl
QmxvY2spCisgICAgOiBtX2dyYXBoKGNvZGVCbG9jaywgY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMo
KSkKIHsKLSAgICBBU1NFUlQobV9jb2RlQmxvY2spOwogICAgIGNvbXB1dGUoKTsKIH0KIAotc3Rh
dGljIGJvb2wgaXNWYWxpZFJlZ2lzdGVyRm9yTGl2ZW5lc3MoQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IGludCBvcGVyYW5kKQordGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KK3ZvaWQgQnl0ZWNvZGVM
aXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayog
Y29kZUJsb2NrLCBPcGNvZGVJRCBvcGNvZGVJRCwgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBG
YXN0Qml0VmVjdG9yJiwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikKIHsKLSAgICBpZiAoY29kZUJs
b2NrLT5pc0NvbnN0YW50UmVnaXN0ZXJJbmRleChvcGVyYW5kKSkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIAotICAgIFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnKG9wZXJhbmQpOwotICAg
IHJldHVybiB2aXJ0dWFsUmVnLmlzTG9jYWwoKTsKLX0KLQotc3RhdGljIHVuc2lnbmVkIGdldExl
YWRlck9mZnNldEZvckJhc2ljQmxvY2soc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9j
az4qIGJhc2ljQmxvY2spCi17Ci0gICAgcmV0dXJuICgqYmFzaWNCbG9jayktPmxlYWRlckJ5dGVj
b2RlT2Zmc2V0KCk7Ci19Ci0KLXN0YXRpYyBCeXRlY29kZUJhc2ljQmxvY2sqIGZpbmRCYXNpY0Js
b2NrV2l0aExlYWRlck9mZnNldChWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNC
bG9jaz4+JiBiYXNpY0Jsb2NrcywgdW5zaWduZWQgbGVhZGVyT2Zmc2V0KQotewotICAgIHJldHVy
biAoKnRyeUJpbmFyeVNlYXJjaDxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiwg
dW5zaWduZWQ+KGJhc2ljQmxvY2tzLCBiYXNpY0Jsb2Nrcy5zaXplKCksIGxlYWRlck9mZnNldCwg
Z2V0TGVhZGVyT2Zmc2V0Rm9yQmFzaWNCbG9jaykpLmdldCgpOwotfQotCi1zdGF0aWMgYm9vbCBi
bG9ja0NvbnRhaW5zQnl0ZWNvZGVPZmZzZXQoQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaywgdW5z
aWduZWQgYnl0ZWNvZGVPZmZzZXQpCi17Ci0gICAgdW5zaWduZWQgbGVhZGVyT2Zmc2V0ID0gYmxv
Y2stPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCk7Ci0gICAgcmV0dXJuIGJ5dGVjb2RlT2Zmc2V0ID49
IGxlYWRlck9mZnNldCAmJiBieXRlY29kZU9mZnNldCA8IGxlYWRlck9mZnNldCArIGJsb2NrLT50
b3RhbEJ5dGVjb2RlTGVuZ3RoKCk7Ci19Ci0KLXN0YXRpYyBCeXRlY29kZUJhc2ljQmxvY2sqIGZp
bmRCYXNpY0Jsb2NrRm9yQnl0ZWNvZGVPZmZzZXQoVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRl
Y29kZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9ja3MsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KQot
ewotLyoKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYmFzaWNCbG9ja3Muc2l6ZSgpOyBp
KyspIHsKLSAgICAgICAgaWYgKGJsb2NrQ29udGFpbnNCeXRlY29kZU9mZnNldChiYXNpY0Jsb2Nr
c1tpXS5nZXQoKSwgYnl0ZWNvZGVPZmZzZXQpKQotICAgICAgICAgICAgcmV0dXJuIGJhc2ljQmxv
Y2tzW2ldLmdldCgpOwotICAgIH0KLSAgICByZXR1cm4gMDsKLSovCi0gICAgc3RkOjp1bmlxdWVf
cHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4qIGJhc2ljQmxvY2sgPSBhcHByb3hpbWF0ZUJpbmFyeVNl
YXJjaDxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiwgdW5zaWduZWQ+KAotICAg
ICAgICBiYXNpY0Jsb2NrcywgYmFzaWNCbG9ja3Muc2l6ZSgpLCBieXRlY29kZU9mZnNldCwgZ2V0
TGVhZGVyT2Zmc2V0Rm9yQmFzaWNCbG9jayk7Ci0gICAgLy8gV2UgZm91bmQgdGhlIGJsb2NrIHdl
IHdlcmUgbG9va2luZyBmb3IuCi0gICAgaWYgKGJsb2NrQ29udGFpbnNCeXRlY29kZU9mZnNldCgo
KmJhc2ljQmxvY2spLmdldCgpLCBieXRlY29kZU9mZnNldCkpCi0gICAgICAgIHJldHVybiAoKmJh
c2ljQmxvY2spLmdldCgpOwotCi0gICAgLy8gQmFzaWMgYmxvY2sgaXMgdG8gdGhlIGxlZnQgb2Yg
dGhlIHJldHVybmVkIGJsb2NrLgotICAgIGlmIChieXRlY29kZU9mZnNldCA8ICgqYmFzaWNCbG9j
ayktPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCkpIHsKLSAgICAgICAgQVNTRVJUKGJhc2ljQmxvY2sg
LSAxID49IGJhc2ljQmxvY2tzLmRhdGEoKSk7Ci0gICAgICAgIEFTU0VSVChibG9ja0NvbnRhaW5z
Qnl0ZWNvZGVPZmZzZXQoYmFzaWNCbG9ja1stMV0uZ2V0KCksIGJ5dGVjb2RlT2Zmc2V0KSk7Ci0g
ICAgICAgIHJldHVybiBiYXNpY0Jsb2NrWy0xXS5nZXQoKTsKLSAgICB9Ci0KLSAgICAvLyBCYXNp
YyBibG9jayBpcyB0byB0aGUgcmlnaHQgb2YgdGhlIHJldHVybmVkIGJsb2NrLgotICAgIEFTU0VS
VCgmYmFzaWNCbG9ja1sxXSA8PSAmYmFzaWNCbG9ja3MubGFzdCgpKTsKLSAgICBBU1NFUlQoYmxv
Y2tDb250YWluc0J5dGVjb2RlT2Zmc2V0KGJhc2ljQmxvY2tbMV0uZ2V0KCksIGJ5dGVjb2RlT2Zm
c2V0KSk7Ci0gICAgcmV0dXJuIGJhc2ljQmxvY2tbMV0uZ2V0KCk7Ci19Ci0KLS8vIFNpbXBsaWZp
ZWQgaW50ZXJmYWNlIHRvIGJ5dGVjb2RlIHVzZS9kZWYsIHdoaWNoIGRldGVybWluZXMgZGVmcyBm
aXJzdCBhbmQgdGhlbiB1c2VzLCBhbmQgaW5jbHVkZXMKLS8vIGV4Y2VwdGlvbiBoYW5kbGVycyBp
biB0aGUgdXNlcy4KLXRlbXBsYXRlPHR5cGVuYW1lIFVzZUZ1bmN0b3IsIHR5cGVuYW1lIERlZkZ1
bmN0b3I+Ci1zdGF0aWMgdm9pZCBzdGVwT3Zlckluc3RydWN0aW9uKENvZGVCbG9jayogY29kZUJs
b2NrLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5
dGVjb2RlQmFzaWNCbG9jaz4+JiBiYXNpY0Jsb2NrcywgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQs
IGNvbnN0IFVzZUZ1bmN0b3ImIHVzZSwgY29uc3QgRGVmRnVuY3RvciYgZGVmKQotewotICAgIC8v
IFRoaXMgYWJzdHJhY3RseSBleGVjdXRlIHRoZSBpbnN0cnVjdGlvbiBpbiByZXZlcnNlLiBJbnN0
cnVjdGlvbnMgbG9naWNhbGx5IGZpcnN0IHVzZSBvcGVyYW5kcyBhbmQKLSAgICAvLyB0aGVuIGRl
ZmluZSBvcGVyYW5kcy4gVGhpcyBsb2dpY2FsIG9yZGVyaW5nIGlzIG5lY2Vzc2FyeSBmb3Igb3Bl
cmF0aW9ucyB0aGF0IHVzZSBhbmQgZGVmIHRoZSBzYW1lCi0gICAgLy8gb3BlcmFuZCwgbGlrZToK
LSAgICAvLwotICAgIC8vICAgICBvcF9hZGQgbG9jMSwgbG9jMSwgbG9jMgotICAgIC8vCi0gICAg
Ly8gVGhlIHVzZSBvZiBsb2MxIGhhcHBlbnMgYmVmb3JlIHRoZSBkZWYgb2YgbG9jMS4gVGhhdCdz
IGEgc2VtYW50aWMgcmVxdWlyZW1lbnQgc2luY2UgdGhlIGFkZAotICAgIC8vIG9wZXJhdGlvbiBj
YW5ub3QgdHJhdmVsIGZvcndhcmQgaW4gdGltZSB0byByZWFkIHRoZSB2YWx1ZSB0aGF0IGl0IHdp
bGwgcHJvZHVjZSBhZnRlciByZWFkaW5nIHRoYXQKLSAgICAvLyB2YWx1ZS4gU2luY2Ugd2UgYXJl
IGV4ZWN1dGluZyBpbiByZXZlcnNlLCB0aGlzIG1lYW5zIHRoYXQgd2UgbXVzdCBkbyBkZWZzIGJl
Zm9yZSB1c2VzIChyZXZlcnNlIG9mCi0gICAgLy8gdXNlcyBiZWZvcmUgZGVmcykuCi0gICAgLy8K
LSAgICAvLyBTaW5jZSB0aGlzIGlzIGEgbGl2ZW5lc3MgYW5hbHlzaXMsIHRoaXMgb3JkZXJpbmcg
ZW5kcyB1cCBiZWluZyBwYXJ0aWN1bGFybHkgaW1wb3J0YW50OiBpZiB3ZSBkaWQKLSAgICAvLyB1
c2VzIGJlZm9yZSBkZWZzLCB0aGVuIHRoZSBhZGQgb3BlcmF0aW9uIGFib3ZlIHdvdWxkIGFwcGVh
ciB0byBub3QgaGF2ZSBsb2MxIGxpdmUsIHNpbmNlIHdlJ2QKLSAgICAvLyBmaXJzdCBhZGQgaXQg
dG8gdGhlIG91dCBzZXQgKHRoZSB1c2UpLCBhbmQgdGhlbiB3ZSdkIHJlbW92ZSBpdCAodGhlIGRl
ZikuCi0gICAgCi0gICAgY29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldCgKLSAgICAgICAgY29k
ZUJsb2NrLCBibG9jaywgYnl0ZWNvZGVPZmZzZXQsCi0gICAgICAgIFsmXSAoQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIEluc3RydWN0aW9uKiwgT3Bjb2RlSUQsIGludCBvcGVyYW5kKSB7Ci0gICAgICAg
ICAgICBpZiAoaXNWYWxpZFJlZ2lzdGVyRm9yTGl2ZW5lc3MoY29kZUJsb2NrLCBvcGVyYW5kKSkK
LSAgICAgICAgICAgICAgICBkZWYoVmlydHVhbFJlZ2lzdGVyKG9wZXJhbmQpLnRvTG9jYWwoKSk7
Ci0gICAgICAgIH0pOwotCi0gICAgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCgKLSAgICAg
ICAgY29kZUJsb2NrLCBibG9jaywgYnl0ZWNvZGVPZmZzZXQsCi0gICAgICAgIFsmXSAoQ29kZUJs
b2NrKiBjb2RlQmxvY2ssIEluc3RydWN0aW9uKiwgT3Bjb2RlSUQsIGludCBvcGVyYW5kKSB7Ci0g
ICAgICAgICAgICBpZiAoaXNWYWxpZFJlZ2lzdGVyRm9yTGl2ZW5lc3MoY29kZUJsb2NrLCBvcGVy
YW5kKSkKLSAgICAgICAgICAgICAgICB1c2UoVmlydHVhbFJlZ2lzdGVyKG9wZXJhbmQpLnRvTG9j
YWwoKSk7Ci0gICAgICAgIH0pOwotCi0gICAgLy8gSWYgd2UgaGF2ZSBhbiBleGNlcHRpb24gaGFu
ZGxlciwgd2Ugd2FudCB0aGUgbGl2ZS1pbiB2YXJpYWJsZXMgb2YgdGhlIAotICAgIC8vIGV4Y2Vw
dGlvbiBoYW5kbGVyIGJsb2NrIHRvIGJlIGluY2x1ZGVkIGluIHRoZSBsaXZlLWluIG9mIHRoaXMg
cGFydGljdWxhciBieXRlY29kZS4KLSAgICBpZiAoSGFuZGxlckluZm8qIGhhbmRsZXIgPSBjb2Rl
QmxvY2stPmhhbmRsZXJGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCkpIHsKLSAgICAg
ICAgLy8gRklYTUU6IFRoaXMgcmVzdW1lIGNoZWNrIHNob3VsZCBub3QgYmUgbmVlZGVkLgotICAg
ICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU5MjgxCi0g
ICAgICAgIEludGVycHJldGVyKiBpbnRlcnByZXRlciA9IGNvZGVCbG9jay0+dm0oKS0+aW50ZXJw
cmV0ZXI7Ci0gICAgICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiA9IGNvZGVCbG9j
ay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsKLSAgICAgICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0
aW9uID0gJmluc3RydWN0aW9uc0JlZ2luW2J5dGVjb2RlT2Zmc2V0XTsKLSAgICAgICAgT3Bjb2Rl
SUQgb3Bjb2RlSUQgPSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb24tPnUub3Bj
b2RlKTsKLSAgICAgICAgaWYgKG9wY29kZUlEICE9IG9wX3Jlc3VtZSkgewotICAgICAgICAgICAg
Qnl0ZWNvZGVCYXNpY0Jsb2NrKiBoYW5kbGVyQmxvY2sgPSBmaW5kQmFzaWNCbG9ja1dpdGhMZWFk
ZXJPZmZzZXQoYmFzaWNCbG9ja3MsIGhhbmRsZXItPnRhcmdldCk7Ci0gICAgICAgICAgICBBU1NF
UlQoaGFuZGxlckJsb2NrKTsKLSAgICAgICAgICAgIGhhbmRsZXJCbG9jay0+aW4oKS5mb3JFYWNo
U2V0Qml0KHVzZSk7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLXN0YXRpYyB2b2lkIHN0ZXBPdmVy
SW5zdHJ1Y3Rpb24oQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxv
Y2ssIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mIGJhc2ljQmxv
Y2tzLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgRmFzdEJpdFZlY3RvciYgb3V0KQotewotICAg
IHN0ZXBPdmVySW5zdHJ1Y3Rpb24oCi0gICAgICAgIGNvZGVCbG9jaywgYmxvY2ssIGJhc2ljQmxv
Y2tzLCBieXRlY29kZU9mZnNldCwKLSAgICAgICAgWyZdICh1bnNpZ25lZCBiaXRJbmRleCkgewot
ICAgICAgICAgICAgLy8gVGhpcyBpcyB0aGUgdXNlIGZ1bmN0b3IsIHNvIHdlIHNldCB0aGUgYml0
LgotICAgICAgICAgICAgb3V0LnNldChiaXRJbmRleCk7Ci0gICAgICAgIH0sCi0gICAgICAgIFsm
XSAodW5zaWduZWQgYml0SW5kZXgpIHsKLSAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIGRlZiBm
dW5jdG9yLCBzbyB3ZSBjbGVhciB0aGUgYml0LgotICAgICAgICAgICAgb3V0LmNsZWFyKGJpdElu
ZGV4KTsKLSAgICAgICAgfSk7Ci19Ci0KLXN0YXRpYyB2b2lkIGNvbXB1dGVMb2NhbExpdmVuZXNz
Rm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFzaWNCbG9j
ayogYmxvY2ssIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mIGJh
c2ljQmxvY2tzLCB1bnNpZ25lZCB0YXJnZXRPZmZzZXQsIEZhc3RCaXRWZWN0b3ImIHJlc3VsdCkK
LXsKLSAgICBBU1NFUlQoIWJsb2NrLT5pc0V4aXRCbG9jaygpKTsKLSAgICBBU1NFUlQoIWJsb2Nr
LT5pc0VudHJ5QmxvY2soKSk7Ci0KLSAgICBGYXN0Qml0VmVjdG9yIG91dCA9IGJsb2NrLT5vdXQo
KTsKLQotICAgIGZvciAoaW50IGkgPSBibG9jay0+Ynl0ZWNvZGVPZmZzZXRzKCkuc2l6ZSgpIC0g
MTsgaSA+PSAwOyBpLS0pIHsKLSAgICAgICAgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQgPSBibG9j
ay0+Ynl0ZWNvZGVPZmZzZXRzKClbaV07Ci0gICAgICAgIGlmICh0YXJnZXRPZmZzZXQgPiBieXRl
Y29kZU9mZnNldCkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAKLSAgICAgICAgc3RlcE92
ZXJJbnN0cnVjdGlvbihjb2RlQmxvY2ssIGJsb2NrLCBiYXNpY0Jsb2NrcywgYnl0ZWNvZGVPZmZz
ZXQsIG91dCk7Ci0gICAgfQotCi0gICAgcmVzdWx0LnNldChvdXQpOworICAgIEpTQzo6Y29tcHV0
ZURlZnNGb3JCeXRlY29kZU9mZnNldChjb2RlQmxvY2ssIG9wY29kZUlELCBpbnN0cnVjdGlvbiwg
ZnVuY3Rvcik7CiB9CiAKLXN0YXRpYyB2b2lkIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQmxvY2so
Q29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2ssIFZlY3Rvcjxz
dGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mIGJhc2ljQmxvY2tzKQordGVtcGxh
dGU8dHlwZW5hbWUgRnVuY3Rvcj4KK3ZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpjb21w
dXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBPcGNvZGVJRCBv
cGNvZGVJRCwgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBGYXN0Qml0VmVjdG9yJiwgY29uc3Qg
RnVuY3RvciYgZnVuY3RvcikKIHsKLSAgICBpZiAoYmxvY2stPmlzRXhpdEJsb2NrKCkgfHwgYmxv
Y2stPmlzRW50cnlCbG9jaygpKQotICAgICAgICByZXR1cm47Ci0gICAgY29tcHV0ZUxvY2FsTGl2
ZW5lc3NGb3JCeXRlY29kZU9mZnNldChjb2RlQmxvY2ssIGJsb2NrLCBiYXNpY0Jsb2NrcywgYmxv
Y2stPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCksIGJsb2NrLT5pbigpKTsKKyAgICBKU0M6OmNvbXB1
dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoY29kZUJsb2NrLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb24s
IGZ1bmN0b3IpOwogfQogCiB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6cnVuTGl2ZW5l
c3NGaXhwb2ludCgpCiB7Ci0gICAgVW5saW5rZWRDb2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2Nr
ID0gbV9jb2RlQmxvY2stPnVubGlua2VkQ29kZUJsb2NrKCk7CisgICAgQ29kZUJsb2NrKiBjb2Rl
QmxvY2sgPSBtX2dyYXBoLmNvZGVCbG9jaygpOworICAgIFVubGlua2VkQ29kZUJsb2NrKiB1bmxp
bmtlZENvZGVCbG9jayA9IGNvZGVCbG9jay0+dW5saW5rZWRDb2RlQmxvY2soKTsKICAgICB1bnNp
Z25lZCBudW1iZXJPZlZhcmlhYmxlcyA9IHVubGlua2VkQ29kZUJsb2NrLT5tX251bUNhbGxlZUxv
Y2FsczsKIAotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2Jhc2ljQmxvY2tzLnNpemUo
KTsgaSsrKSB7Ci0gICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2sgPSBtX2Jhc2ljQmxv
Y2tzW2ldLmdldCgpOworICAgIGZvciAoQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jayA6IG1fZ3Jh
cGgpIHsKICAgICAgICAgYmxvY2stPmluKCkucmVzaXplKG51bWJlck9mVmFyaWFibGVzKTsKICAg
ICAgICAgYmxvY2stPm91dCgpLnJlc2l6ZShudW1iZXJPZlZhcmlhYmxlcyk7CiAgICAgfQogCiAg
ICAgYm9vbCBjaGFuZ2VkOwotICAgIG1fYmFzaWNCbG9ja3MubGFzdCgpLT5pbigpLmNsZWFyQWxs
KCk7Ci0gICAgbV9iYXNpY0Jsb2Nrcy5sYXN0KCktPm91dCgpLmNsZWFyQWxsKCk7CisgICAgQnl0
ZWNvZGVCYXNpY0Jsb2NrKiBsYXN0QmxvY2sgPSBtX2dyYXBoLmxhc3QoKTsKKyAgICBsYXN0Qmxv
Y2stPmluKCkuY2xlYXJBbGwoKTsKKyAgICBsYXN0QmxvY2stPm91dCgpLmNsZWFyQWxsKCk7CiAg
ICAgRmFzdEJpdFZlY3RvciBuZXdPdXQ7Ci0gICAgbmV3T3V0LnJlc2l6ZShtX2Jhc2ljQmxvY2tz
Lmxhc3QoKS0+b3V0KCkubnVtQml0cygpKTsKKyAgICBuZXdPdXQucmVzaXplKGxhc3RCbG9jay0+
b3V0KCkubnVtQml0cygpKTsKICAgICBkbyB7CiAgICAgICAgIGNoYW5nZWQgPSBmYWxzZTsKLSAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9iYXNpY0Jsb2Nrcy5zaXplKCkgLSAxOyBpLS07KSB7
Ci0gICAgICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrID0gbV9iYXNpY0Jsb2Nrc1tp
XS5nZXQoKTsKKyAgICAgICAgZm9yIChzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2Nr
PiYgYmxvY2sgOiBtX2dyYXBoLmJhc2ljQmxvY2tzSW5SZXZlcnNlT3JkZXIoKSkgewogICAgICAg
ICAgICAgbmV3T3V0LmNsZWFyQWxsKCk7Ci0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSAw
OyBqIDwgYmxvY2stPnN1Y2Nlc3NvcnMoKS5zaXplKCk7IGorKykKLSAgICAgICAgICAgICAgICBu
ZXdPdXQubWVyZ2UoYmxvY2stPnN1Y2Nlc3NvcnMoKVtqXS0+aW4oKSk7Ci0gICAgICAgICAgICBi
b29sIG91dERpZENoYW5nZSA9IGJsb2NrLT5vdXQoKS5zZXRBbmRDaGVjayhuZXdPdXQpOwotICAg
ICAgICAgICAgY29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCbG9jayhtX2NvZGVCbG9jaywgYmxvY2ss
IG1fYmFzaWNCbG9ja3MpOwotICAgICAgICAgICAgY2hhbmdlZCB8PSBvdXREaWRDaGFuZ2U7Cisg
ICAgICAgICAgICBmb3IgKEJ5dGVjb2RlQmFzaWNCbG9jayogc3VjY2Vzc29yIDogYmxvY2stPnN1
Y2Nlc3NvcnMoKSkKKyAgICAgICAgICAgICAgICBuZXdPdXQubWVyZ2Uoc3VjY2Vzc29yLT5pbigp
KTsKKyAgICAgICAgICAgIGJsb2NrLT5vdXQoKS5zZXQobmV3T3V0KTsKKyAgICAgICAgICAgIGNo
YW5nZWQgfD0gY29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCbG9jayhtX2dyYXBoLCBibG9jay5nZXQo
KSk7CiAgICAgICAgIH0KICAgICB9IHdoaWxlIChjaGFuZ2VkKTsKIH0KIAogdm9pZCBCeXRlY29k
ZUxpdmVuZXNzQW5hbHlzaXM6OmdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQodW5zaWdu
ZWQgYnl0ZWNvZGVPZmZzZXQsIEZhc3RCaXRWZWN0b3ImIHJlc3VsdCkKIHsKLSAgICBCeXRlY29k
ZUJhc2ljQmxvY2sqIGJsb2NrID0gZmluZEJhc2ljQmxvY2tGb3JCeXRlY29kZU9mZnNldChtX2Jh
c2ljQmxvY2tzLCBieXRlY29kZU9mZnNldCk7CisgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9j
ayA9IG1fZ3JhcGguZmluZEJhc2ljQmxvY2tGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNl
dCk7CiAgICAgQVNTRVJUKGJsb2NrKTsKICAgICBBU1NFUlQoIWJsb2NrLT5pc0VudHJ5QmxvY2so
KSk7CiAgICAgQVNTRVJUKCFibG9jay0+aXNFeGl0QmxvY2soKSk7CiAgICAgcmVzdWx0LnJlc2l6
ZShibG9jay0+b3V0KCkubnVtQml0cygpKTsKLSAgICBjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJ5
dGVjb2RlT2Zmc2V0KG1fY29kZUJsb2NrLCBibG9jaywgbV9iYXNpY0Jsb2NrcywgYnl0ZWNvZGVP
ZmZzZXQsIHJlc3VsdCk7CisgICAgY29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCeXRlY29kZU9mZnNl
dChtX2dyYXBoLCBibG9jaywgYnl0ZWNvZGVPZmZzZXQsIHJlc3VsdCk7CiB9CiAKIGJvb2wgQnl0
ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpvcGVyYW5kSXNMaXZlQXRCeXRlY29kZU9mZnNldChpbnQg
b3BlcmFuZCwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpCkBAIC0yNDUsMTEgKzExMiwxMSBAQCBG
YXN0Qml0VmVjdG9yIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Z2V0TGl2ZW5lc3NJbmZvQXRC
eXRlY29kZU9mZnNldCh1bnNpZ25lZAogdm9pZCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmNv
bXB1dGVGdWxsTGl2ZW5lc3MoRnVsbEJ5dGVjb2RlTGl2ZW5lc3MmIHJlc3VsdCkKIHsKICAgICBG
YXN0Qml0VmVjdG9yIG91dDsKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IG1fZ3JhcGguY29k
ZUJsb2NrKCk7CiAgICAgCi0gICAgcmVzdWx0Lm1fbWFwLnJlc2l6ZShtX2NvZGVCbG9jay0+aW5z
dHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKKyAgICByZXN1bHQubV9tYXAucmVzaXplKGNvZGVCbG9jay0+
aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKICAgICAKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2Jh
c2ljQmxvY2tzLnNpemUoKTsgaS0tOykgewotICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGJs
b2NrID0gbV9iYXNpY0Jsb2Nrc1tpXS5nZXQoKTsKKyAgICBmb3IgKHN0ZDo6dW5pcXVlX3B0cjxC
eXRlY29kZUJhc2ljQmxvY2s+JiBibG9jayA6IG1fZ3JhcGguYmFzaWNCbG9ja3NJblJldmVyc2VP
cmRlcigpKSB7CiAgICAgICAgIGlmIChibG9jay0+aXNFbnRyeUJsb2NrKCkgfHwgYmxvY2stPmlz
RXhpdEJsb2NrKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgCkBAIC0yNTcsNyAr
MTI0LDcgQEAgdm9pZCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGVGdWxsTGl2ZW5l
c3MoRnVsbEJ5dGVjb2RlTGl2ZW5lc3MmIHJlc3VsdCkKICAgICAgICAgCiAgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IGJsb2NrLT5ieXRlY29kZU9mZnNldHMoKS5zaXplKCk7IGktLTspIHsKICAg
ICAgICAgICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0ID0gYmxvY2stPmJ5dGVjb2RlT2Zmc2V0
cygpW2ldOwotICAgICAgICAgICAgc3RlcE92ZXJJbnN0cnVjdGlvbihtX2NvZGVCbG9jaywgYmxv
Y2ssIG1fYmFzaWNCbG9ja3MsIGJ5dGVjb2RlT2Zmc2V0LCBvdXQpOworICAgICAgICAgICAgc3Rl
cE92ZXJJbnN0cnVjdGlvbihtX2dyYXBoLCBieXRlY29kZU9mZnNldCwgb3V0KTsKICAgICAgICAg
ICAgIHJlc3VsdC5tX21hcFtieXRlY29kZU9mZnNldF0gPSBvdXQ7CiAgICAgICAgIH0KICAgICB9
CkBAIC0yNjcsMTEgKzEzNCwxMSBAQCB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Y29t
cHV0ZUtpbGxzKEJ5dGVjb2RlS2lsbHMmIHJlc3VsdCkKIHsKICAgICBGYXN0Qml0VmVjdG9yIG91
dDsKICAgICAKLSAgICByZXN1bHQubV9jb2RlQmxvY2sgPSBtX2NvZGVCbG9jazsKLSAgICByZXN1
bHQubV9raWxsU2V0cyA9IHN0ZDo6bWFrZV91bmlxdWU8Qnl0ZWNvZGVLaWxsczo6S2lsbFNldFtd
PihtX2NvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKKyAgICBDb2RlQmxvY2sqIGNv
ZGVCbG9jayA9IG1fZ3JhcGguY29kZUJsb2NrKCk7CisgICAgcmVzdWx0Lm1fY29kZUJsb2NrID0g
Y29kZUJsb2NrOworICAgIHJlc3VsdC5tX2tpbGxTZXRzID0gc3RkOjptYWtlX3VuaXF1ZTxCeXRl
Y29kZUtpbGxzOjpLaWxsU2V0W10+KGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsK
ICAgICAKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2Jhc2ljQmxvY2tzLnNpemUoKTsgaS0tOykg
ewotICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrID0gbV9iYXNpY0Jsb2Nrc1tpXS5n
ZXQoKTsKKyAgICBmb3IgKHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+JiBibG9j
ayA6IG1fZ3JhcGguYmFzaWNCbG9ja3NJblJldmVyc2VPcmRlcigpKSB7CiAgICAgICAgIGlmIChi
bG9jay0+aXNFbnRyeUJsb2NrKCkgfHwgYmxvY2stPmlzRXhpdEJsb2NrKCkpCiAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgCkBAIC0yODAsNyArMTQ3LDcgQEAgdm9pZCBCeXRlY29kZUxp
dmVuZXNzQW5hbHlzaXM6OmNvbXB1dGVLaWxscyhCeXRlY29kZUtpbGxzJiByZXN1bHQpCiAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IGJsb2NrLT5ieXRlY29kZU9mZnNldHMoKS5zaXplKCk7IGkt
LTspIHsKICAgICAgICAgICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0ID0gYmxvY2stPmJ5dGVj
b2RlT2Zmc2V0cygpW2ldOwogICAgICAgICAgICAgc3RlcE92ZXJJbnN0cnVjdGlvbigKLSAgICAg
ICAgICAgICAgICBtX2NvZGVCbG9jaywgYmxvY2ssIG1fYmFzaWNCbG9ja3MsIGJ5dGVjb2RlT2Zm
c2V0LAorICAgICAgICAgICAgICAgIG1fZ3JhcGgsIGJ5dGVjb2RlT2Zmc2V0LCBvdXQsCiAgICAg
ICAgICAgICAgICAgWyZdICh1bnNpZ25lZCBpbmRleCkgewogICAgICAgICAgICAgICAgICAgICAv
LyBUaGlzIGlzIGZvciB1c2VzLgogICAgICAgICAgICAgICAgICAgICBpZiAob3V0LmdldChpbmRl
eCkpCkBAIC0yOTgsMTIgKzE2NSwxMyBAQCB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6
Y29tcHV0ZUtpbGxzKEJ5dGVjb2RlS2lsbHMmIHJlc3VsdCkKIAogdm9pZCBCeXRlY29kZUxpdmVu
ZXNzQW5hbHlzaXM6OmR1bXBSZXN1bHRzKCkKIHsKLSAgICBkYXRhTG9nKCJcbkR1bXBpbmcgYnl0
ZWNvZGUgbGl2ZW5lc3MgZm9yICIsICptX2NvZGVCbG9jaywgIjpcbiIpOwotICAgIEludGVycHJl
dGVyKiBpbnRlcnByZXRlciA9IG1fY29kZUJsb2NrLT52bSgpLT5pbnRlcnByZXRlcjsKLSAgICBJ
bnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4gPSBtX2NvZGVCbG9jay0+aW5zdHJ1Y3Rpb25z
KCkuYmVnaW4oKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9iYXNpY0Jsb2Nrcy5z
aXplKCk7IGkrKykgewotICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrID0gbV9iYXNp
Y0Jsb2Nrc1tpXS5nZXQoKTsKLSAgICAgICAgZGF0YUxvZ0YoIlxuQnl0ZWNvZGUgYmFzaWMgYmxv
Y2sgJXU6ICVwIChvZmZzZXQ6ICV1LCBsZW5ndGg6ICV1KVxuIiwgaSwgYmxvY2ssIGJsb2NrLT5s
ZWFkZXJCeXRlY29kZU9mZnNldCgpLCBibG9jay0+dG90YWxCeXRlY29kZUxlbmd0aCgpKTsKKyAg
ICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IG1fZ3JhcGguY29kZUJsb2NrKCk7CisgICAgZGF0YUxv
ZygiXG5EdW1waW5nIGJ5dGVjb2RlIGxpdmVuZXNzIGZvciAiLCAqY29kZUJsb2NrLCAiOlxuIik7
CisgICAgSW50ZXJwcmV0ZXIqIGludGVycHJldGVyID0gY29kZUJsb2NrLT52bSgpLT5pbnRlcnBy
ZXRlcjsKKyAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4gPSBjb2RlQmxvY2stPmlu
c3RydWN0aW9ucygpLmJlZ2luKCk7CisgICAgdW5zaWduZWQgaSA9IDA7CisgICAgZm9yIChCeXRl
Y29kZUJhc2ljQmxvY2sqIGJsb2NrIDogbV9ncmFwaCkgeworICAgICAgICBkYXRhTG9nRigiXG5C
eXRlY29kZSBiYXNpYyBibG9jayAldTogJXAgKG9mZnNldDogJXUsIGxlbmd0aDogJXUpXG4iLCBp
KyssIGJsb2NrLCBibG9jay0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKSwgYmxvY2stPnRvdGFsQnl0
ZWNvZGVMZW5ndGgoKSk7CiAgICAgICAgIGRhdGFMb2dGKCJTdWNjZXNzb3JzOiAiKTsKICAgICAg
ICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8IGJsb2NrLT5zdWNjZXNzb3JzKCkuc2l6ZSgpOyBq
KyspIHsKICAgICAgICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogc3VjY2Vzc29yID0gYmxvY2st
PnN1Y2Nlc3NvcnMoKVtqXTsKQEAgLTMyOCw3ICsxOTYsNyBAQCB2b2lkIEJ5dGVjb2RlTGl2ZW5l
c3NBbmFseXNpczo6ZHVtcFJlc3VsdHMoKQogICAgICAgICAgICAgICAgICAgICBkYXRhTG9nRigi
JXUgIiwgaik7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBkYXRhTG9nRigiXG4iKTsKLSAg
ICAgICAgICAgIG1fY29kZUJsb2NrLT5kdW1wQnl0ZWNvZGUoV1RGOjpkYXRhRmlsZSgpLCBtX2Nv
ZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKSwgaW5zdHJ1Y3Rpb25zQmVnaW4s
IGN1cnJlbnRJbnN0cnVjdGlvbik7CisgICAgICAgICAgICBjb2RlQmxvY2stPmR1bXBCeXRlY29k
ZShXVEY6OmRhdGFGaWxlKCksIGNvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMo
KSwgaW5zdHJ1Y3Rpb25zQmVnaW4sIGN1cnJlbnRJbnN0cnVjdGlvbik7CiAKICAgICAgICAgICAg
IE9wY29kZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGluc3RydWN0aW9u
c0JlZ2luW2J5dGVjb2RlT2Zmc2V0XS51Lm9wY29kZSk7CiAgICAgICAgICAgICB1bnNpZ25lZCBv
cGNvZGVMZW5ndGggPSBvcGNvZGVMZW5ndGhzW29wY29kZUlEXTsKQEAgLTM0Nyw4ICsyMTUsNiBA
QCB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6ZHVtcFJlc3VsdHMoKQogCiB2b2lkIEJ5
dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0ZSgpCiB7Ci0gICAgY29tcHV0ZUJ5dGVjb2Rl
QmFzaWNCbG9ja3MobV9jb2RlQmxvY2ssIG1fYmFzaWNCbG9ja3MpOwotICAgIEFTU0VSVChtX2Jh
c2ljQmxvY2tzLnNpemUoKSk7CiAgICAgcnVuTGl2ZW5lc3NGaXhwb2ludCgpOwogCiAgICAgaWYg
KE9wdGlvbnM6OmR1bXBCeXRlY29kZUxpdmVuZXNzUmVzdWx0cygpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5o
CmluZGV4IGVjZTE2ZjIxZjAxNTEwYTY0MjdmZDg0MTE0MDc5YmVkODcwYzA4NzUuLmE0ODVmODk1
ZGVkZjY5OWRjNmJiMjdkNTQ5ZGMxNWQ4ZjVkN2M4MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmgKQEAg
LTIzLDEwICsyMywxMSBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICov
CiAKLSNpZm5kZWYgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzX2gKLSNkZWZpbmUgQnl0ZWNvZGVM
aXZlbmVzc0FuYWx5c2lzX2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQnl0ZWNvZGVCYXNp
Y0Jsb2NrLmgiCisjaW5jbHVkZSAiQnl0ZWNvZGVHcmFwaC5oIgorI2luY2x1ZGUgIkNvZGVCbG9j
ay5oIgogI2luY2x1ZGUgPHd0Zi9GYXN0Qml0VmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hN
YXAuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC0zNCwxMyArMzUsMjcgQEAKIG5hbWVz
cGFjZSBKU0MgewogCiBjbGFzcyBCeXRlY29kZUtpbGxzOwotY2xhc3MgQ29kZUJsb2NrOwogY2xh
c3MgRnVsbEJ5dGVjb2RlTGl2ZW5lc3M7CiAKLWNsYXNzIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNp
cyB7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBEZXJpdmVkQW5hbHlzaXM+CitjbGFzcyBCeXRlY29kZUxp
dmVuZXNzTG9jYWxQcm9wYWdhdGlvbiB7Citwcm90ZWN0ZWQ6CisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgR3JhcGgsIHR5cGVuYW1lIFVzZUZ1bmN0b3IsIHR5cGVuYW1lIERlZkZ1bmN0b3I+IHZvaWQg
c3RlcE92ZXJJbnN0cnVjdGlvbihHcmFwaCYsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBGYXN0
Qml0VmVjdG9yJiBvdXQsIGNvbnN0IFVzZUZ1bmN0b3ImLCBjb25zdCBEZWZGdW5jdG9yJik7CisK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBHcmFwaD4gdm9pZCBzdGVwT3Zlckluc3RydWN0aW9uKEdy
YXBoJiwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIEZhc3RCaXRWZWN0b3ImIG91dCk7CisKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBHcmFwaD4gYm9vbCBjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJ5
dGVjb2RlT2Zmc2V0KEdyYXBoJiwgQnl0ZWNvZGVCYXNpY0Jsb2NrKiwgdW5zaWduZWQgdGFyZ2V0
T2Zmc2V0LCBGYXN0Qml0VmVjdG9yJiByZXN1bHQpOworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
R3JhcGg+IGJvb2wgY29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCbG9jayhHcmFwaCYsIEJ5dGVjb2Rl
QmFzaWNCbG9jayopOworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgR3JhcGg+IEZhc3RCaXRWZWN0
b3IgZ2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29kZU9mZnNldChHcmFwaCYsIHVuc2lnbmVkIGJ5dGVj
b2RlT2Zmc2V0KTsKK307CisKK2NsYXNzIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcyA6IHByaXZh
dGUgQnl0ZWNvZGVMaXZlbmVzc0xvY2FsUHJvcGFnYXRpb248Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5
c2lzPiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzKTsKIHB1YmxpYzoKKyAgICBmcmllbmQgY2xh
c3MgQnl0ZWNvZGVMaXZlbmVzc0xvY2FsUHJvcGFnYXRpb248Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5
c2lzPjsKICAgICBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMoQ29kZUJsb2NrKik7CiAgICAgCiAg
ICAgYm9vbCBvcGVyYW5kSXNMaXZlQXRCeXRlY29kZU9mZnNldChpbnQgb3BlcmFuZCwgdW5zaWdu
ZWQgYnl0ZWNvZGVPZmZzZXQpOwpAQCAtNTYsMTQgKzcxLDE1IEBAIGNsYXNzIEJ5dGVjb2RlTGl2
ZW5lc3NBbmFseXNpcyB7CiAKICAgICB2b2lkIGdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVPZmZz
ZXQodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIEZhc3RCaXRWZWN0b3ImKTsKIAotICAgIENvZGVC
bG9jayogbV9jb2RlQmxvY2s7Ci0gICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJh
c2ljQmxvY2s+PiBtX2Jhc2ljQmxvY2tzOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+
IHZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqLCBPcGNvZGVJRCwg
SW5zdHJ1Y3Rpb24qLCBGYXN0Qml0VmVjdG9yJiwgY29uc3QgRnVuY3RvciYpOworICAgIHRlbXBs
YXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldChD
b2RlQmxvY2sqLCBPcGNvZGVJRCwgSW5zdHJ1Y3Rpb24qLCBGYXN0Qml0VmVjdG9yJiwgY29uc3Qg
RnVuY3RvciYpOworCisgICAgQnl0ZWNvZGVHcmFwaDxDb2RlQmxvY2s+IG1fZ3JhcGg7CiB9Owog
CiBpbmxpbmUgYm9vbCBvcGVyYW5kSXNBbHdheXNMaXZlKGludCBvcGVyYW5kKTsKIGlubGluZSBi
b29sIG9wZXJhbmRUaGF0SXNOb3RBbHdheXNMaXZlSXNMaXZlKGNvbnN0IEZhc3RCaXRWZWN0b3Im
IG91dCwgaW50IG9wZXJhbmQpOwogaW5saW5lIGJvb2wgb3BlcmFuZElzTGl2ZShjb25zdCBGYXN0
Qml0VmVjdG9yJiBvdXQsIGludCBvcGVyYW5kKTsKK2lubGluZSBib29sIGlzVmFsaWRSZWdpc3Rl
ckZvckxpdmVuZXNzKGludCBvcGVyYW5kKTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCi0KLSNlbmRp
ZiAvLyBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGluZXMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNJbmxp
bmVzLmgKaW5kZXggOWI1Yzc1NWZjYjZjZDUxODA1MTQ1MDA3ODkyMmFjNGQ2ZDRkMjM4Zi4uOWM1
OTBkMWEzYjVkMzc2NDNhNThjOWE3NGMzNWNiMTQxZDc4MTdhMSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGluZXMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0Fu
YWx5c2lzSW5saW5lcy5oCkBAIC0yNiw2ICsyNiw3IEBACiAjaWZuZGVmIEJ5dGVjb2RlTGl2ZW5l
c3NBbmFseXNpc0lubGluZXNfaAogI2RlZmluZSBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNJbmxp
bmVzX2gKIAorI2luY2x1ZGUgIkJ5dGVjb2RlR3JhcGguaCIKICNpbmNsdWRlICJCeXRlY29kZUxp
dmVuZXNzQW5hbHlzaXMuaCIKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJPcGVy
YXRpb25zLmgiCkBAIC01MCw2ICs1MSwxMjIgQEAgaW5saW5lIGJvb2wgb3BlcmFuZElzTGl2ZShj
b25zdCBGYXN0Qml0VmVjdG9yJiBvdXQsIGludCBvcGVyYW5kKQogICAgIHJldHVybiBvcGVyYW5k
SXNBbHdheXNMaXZlKG9wZXJhbmQpIHx8IG9wZXJhbmRUaGF0SXNOb3RBbHdheXNMaXZlSXNMaXZl
KG91dCwgb3BlcmFuZCk7CiB9CiAKK2lubGluZSBib29sIGlzVmFsaWRSZWdpc3RlckZvckxpdmVu
ZXNzKGludCBvcGVyYW5kKQoreworICAgIFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnKG9wZXJh
bmQpOworICAgIGlmICh2aXJ0dWFsUmVnLmlzQ29uc3RhbnQoKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIHJldHVybiB2aXJ0dWFsUmVnLmlzTG9jYWwoKTsKK30KKworLy8gU2ltcGxpZmll
ZCBpbnRlcmZhY2UgdG8gYnl0ZWNvZGUgdXNlL2RlZiwgd2hpY2ggZGV0ZXJtaW5lcyBkZWZzIGZp
cnN0IGFuZCB0aGVuIHVzZXMsIGFuZCBpbmNsdWRlcworLy8gZXhjZXB0aW9uIGhhbmRsZXJzIGlu
IHRoZSB1c2VzLgordGVtcGxhdGU8dHlwZW5hbWUgRGVyaXZlZEFuYWx5c2lzPgordGVtcGxhdGU8
dHlwZW5hbWUgR3JhcGgsIHR5cGVuYW1lIFVzZUZ1bmN0b3IsIHR5cGVuYW1lIERlZkZ1bmN0b3I+
CitpbmxpbmUgdm9pZCBCeXRlY29kZUxpdmVuZXNzTG9jYWxQcm9wYWdhdGlvbjxEZXJpdmVkQW5h
bHlzaXM+OjpzdGVwT3Zlckluc3RydWN0aW9uKEdyYXBoJiBncmFwaCwgdW5zaWduZWQgYnl0ZWNv
ZGVPZmZzZXQsIEZhc3RCaXRWZWN0b3ImIG91dCwgY29uc3QgVXNlRnVuY3RvciYgdXNlLCBjb25z
dCBEZWZGdW5jdG9yJiBkZWYpCit7CisgICAgLy8gVGhpcyBhYnN0cmFjdGx5IGV4ZWN1dGUgdGhl
IGluc3RydWN0aW9uIGluIHJldmVyc2UuIEluc3RydWN0aW9ucyBsb2dpY2FsbHkgZmlyc3QgdXNl
IG9wZXJhbmRzIGFuZAorICAgIC8vIHRoZW4gZGVmaW5lIG9wZXJhbmRzLiBUaGlzIGxvZ2ljYWwg
b3JkZXJpbmcgaXMgbmVjZXNzYXJ5IGZvciBvcGVyYXRpb25zIHRoYXQgdXNlIGFuZCBkZWYgdGhl
IHNhbWUKKyAgICAvLyBvcGVyYW5kLCBsaWtlOgorICAgIC8vCisgICAgLy8gICAgIG9wX2FkZCBs
b2MxLCBsb2MxLCBsb2MyCisgICAgLy8KKyAgICAvLyBUaGUgdXNlIG9mIGxvYzEgaGFwcGVucyBi
ZWZvcmUgdGhlIGRlZiBvZiBsb2MxLiBUaGF0J3MgYSBzZW1hbnRpYyByZXF1aXJlbWVudCBzaW5j
ZSB0aGUgYWRkCisgICAgLy8gb3BlcmF0aW9uIGNhbm5vdCB0cmF2ZWwgZm9yd2FyZCBpbiB0aW1l
IHRvIHJlYWQgdGhlIHZhbHVlIHRoYXQgaXQgd2lsbCBwcm9kdWNlIGFmdGVyIHJlYWRpbmcgdGhh
dAorICAgIC8vIHZhbHVlLiBTaW5jZSB3ZSBhcmUgZXhlY3V0aW5nIGluIHJldmVyc2UsIHRoaXMg
bWVhbnMgdGhhdCB3ZSBtdXN0IGRvIGRlZnMgYmVmb3JlIHVzZXMgKHJldmVyc2Ugb2YKKyAgICAv
LyB1c2VzIGJlZm9yZSBkZWZzKS4KKyAgICAvLworICAgIC8vIFNpbmNlIHRoaXMgaXMgYSBsaXZl
bmVzcyBhbmFseXNpcywgdGhpcyBvcmRlcmluZyBlbmRzIHVwIGJlaW5nIHBhcnRpY3VsYXJseSBp
bXBvcnRhbnQ6IGlmIHdlIGRpZAorICAgIC8vIHVzZXMgYmVmb3JlIGRlZnMsIHRoZW4gdGhlIGFk
ZCBvcGVyYXRpb24gYWJvdmUgd291bGQgYXBwZWFyIHRvIG5vdCBoYXZlIGxvYzEgbGl2ZSwgc2lu
Y2Ugd2UnZAorICAgIC8vIGZpcnN0IGFkZCBpdCB0byB0aGUgb3V0IHNldCAodGhlIHVzZSksIGFu
ZCB0aGVuIHdlJ2QgcmVtb3ZlIGl0ICh0aGUgZGVmKS4KKworICAgIGF1dG8qIGNvZGVCbG9jayA9
IGdyYXBoLmNvZGVCbG9jaygpOworICAgIEludGVycHJldGVyKiBpbnRlcnByZXRlciA9IGNvZGVC
bG9jay0+dm0oKS0+aW50ZXJwcmV0ZXI7CisgICAgYXV0byogaW5zdHJ1Y3Rpb25zQmVnaW4gPSBn
cmFwaC5pbnN0cnVjdGlvbnMoKS5iZWdpbigpOworICAgIGF1dG8qIGluc3RydWN0aW9uID0gJmlu
c3RydWN0aW9uc0JlZ2luW2J5dGVjb2RlT2Zmc2V0XTsKKyAgICBPcGNvZGVJRCBvcGNvZGVJRCA9
IGludGVycHJldGVyLT5nZXRPcGNvZGVJRCgqaW5zdHJ1Y3Rpb24pOworCisgICAgc3RhdGljX2Nh
c3Q8RGVyaXZlZEFuYWx5c2lzKj4odGhpcyktPmNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQo
CisgICAgICAgIGNvZGVCbG9jaywgb3Bjb2RlSUQsIGluc3RydWN0aW9uLCBvdXQsCisgICAgICAg
IFsmXSAodHlwZW5hbWUgR3JhcGg6OkNvZGVCbG9jayosIHR5cGVuYW1lIEdyYXBoOjpJbnN0cnVj
dGlvbiosIE9wY29kZUlELCBpbnQgb3BlcmFuZCkgeworICAgICAgICAgICAgaWYgKGlzVmFsaWRS
ZWdpc3RlckZvckxpdmVuZXNzKG9wZXJhbmQpKQorICAgICAgICAgICAgICAgIGRlZihWaXJ0dWFs
UmVnaXN0ZXIob3BlcmFuZCkudG9Mb2NhbCgpKTsKKyAgICAgICAgfSk7CisKKyAgICBzdGF0aWNf
Y2FzdDxEZXJpdmVkQW5hbHlzaXMqPih0aGlzKS0+Y29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNl
dCgKKyAgICAgICAgY29kZUJsb2NrLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb24sIG91dCwKKyAgICAg
ICAgWyZdICh0eXBlbmFtZSBHcmFwaDo6Q29kZUJsb2NrKiwgdHlwZW5hbWUgR3JhcGg6Okluc3Ry
dWN0aW9uKiwgT3Bjb2RlSUQsIGludCBvcGVyYW5kKSB7CisgICAgICAgICAgICBpZiAoaXNWYWxp
ZFJlZ2lzdGVyRm9yTGl2ZW5lc3Mob3BlcmFuZCkpCisgICAgICAgICAgICAgICAgdXNlKFZpcnR1
YWxSZWdpc3RlcihvcGVyYW5kKS50b0xvY2FsKCkpOworICAgICAgICB9KTsKKworICAgIC8vIElm
IHdlIGhhdmUgYW4gZXhjZXB0aW9uIGhhbmRsZXIsIHdlIHdhbnQgdGhlIGxpdmUtaW4gdmFyaWFi
bGVzIG9mIHRoZSAKKyAgICAvLyBleGNlcHRpb24gaGFuZGxlciBibG9jayB0byBiZSBpbmNsdWRl
ZCBpbiB0aGUgbGl2ZS1pbiBvZiB0aGlzIHBhcnRpY3VsYXIgYnl0ZWNvZGUuCisgICAgaWYgKGF1
dG8qIGhhbmRsZXIgPSBjb2RlQmxvY2stPmhhbmRsZXJGb3JCeXRlY29kZU9mZnNldChieXRlY29k
ZU9mZnNldCkpIHsKKyAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBoYW5kbGVyQmxvY2sgPSBn
cmFwaC5maW5kQmFzaWNCbG9ja1dpdGhMZWFkZXJPZmZzZXQoaGFuZGxlci0+dGFyZ2V0KTsKKyAg
ICAgICAgQVNTRVJUKGhhbmRsZXJCbG9jayk7CisgICAgICAgIGhhbmRsZXJCbG9jay0+aW4oKS5m
b3JFYWNoU2V0Qml0KHVzZSk7CisgICAgfQorfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBEZXJpdmVk
QW5hbHlzaXM+Cit0ZW1wbGF0ZTx0eXBlbmFtZSBHcmFwaD4KK2lubGluZSB2b2lkIEJ5dGVjb2Rl
TGl2ZW5lc3NMb2NhbFByb3BhZ2F0aW9uPERlcml2ZWRBbmFseXNpcz46OnN0ZXBPdmVySW5zdHJ1
Y3Rpb24oR3JhcGgmIGdyYXBoLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgRmFzdEJpdFZlY3Rv
ciYgb3V0KQoreworICAgIHN0ZXBPdmVySW5zdHJ1Y3Rpb24oCisgICAgICAgIGdyYXBoLCBieXRl
Y29kZU9mZnNldCwgb3V0LAorICAgICAgICBbJl0gKHVuc2lnbmVkIGJpdEluZGV4KSB7CisgICAg
ICAgICAgICAvLyBUaGlzIGlzIHRoZSB1c2UgZnVuY3Rvciwgc28gd2Ugc2V0IHRoZSBiaXQuCisg
ICAgICAgICAgICBvdXQuc2V0KGJpdEluZGV4KTsKKyAgICAgICAgfSwKKyAgICAgICAgWyZdICh1
bnNpZ25lZCBiaXRJbmRleCkgeworICAgICAgICAgICAgLy8gVGhpcyBpcyB0aGUgZGVmIGZ1bmN0
b3IsIHNvIHdlIGNsZWFyIHRoZSBiaXQuCisgICAgICAgICAgICBvdXQuY2xlYXIoYml0SW5kZXgp
OworICAgICAgICB9KTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgRGVyaXZlZEFuYWx5c2lzPgor
dGVtcGxhdGU8dHlwZW5hbWUgR3JhcGg+CitpbmxpbmUgYm9vbCBCeXRlY29kZUxpdmVuZXNzTG9j
YWxQcm9wYWdhdGlvbjxEZXJpdmVkQW5hbHlzaXM+Ojpjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJ5
dGVjb2RlT2Zmc2V0KEdyYXBoJiBncmFwaCwgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaywgdW5z
aWduZWQgdGFyZ2V0T2Zmc2V0LCBGYXN0Qml0VmVjdG9yJiByZXN1bHQpCit7CisgICAgQVNTRVJU
KCFibG9jay0+aXNFeGl0QmxvY2soKSk7CisgICAgQVNTRVJUKCFibG9jay0+aXNFbnRyeUJsb2Nr
KCkpOworCisgICAgRmFzdEJpdFZlY3RvciBvdXQgPSBibG9jay0+b3V0KCk7CisKKyAgICBmb3Ig
KGludCBpID0gYmxvY2stPmJ5dGVjb2RlT2Zmc2V0cygpLnNpemUoKSAtIDE7IGkgPj0gMDsgaS0t
KSB7CisgICAgICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0ID0gYmxvY2stPmJ5dGVjb2RlT2Zm
c2V0cygpW2ldOworICAgICAgICBpZiAodGFyZ2V0T2Zmc2V0ID4gYnl0ZWNvZGVPZmZzZXQpCisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgc3RlcE92ZXJJbnN0cnVjdGlvbihncmFwaCwgYnl0
ZWNvZGVPZmZzZXQsIG91dCk7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdC5zZXRBbmRDaGVj
ayhvdXQpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBEZXJpdmVkQW5hbHlzaXM+Cit0ZW1wbGF0
ZTx0eXBlbmFtZSBHcmFwaD4KK2lubGluZSBib29sIEJ5dGVjb2RlTGl2ZW5lc3NMb2NhbFByb3Bh
Z2F0aW9uPERlcml2ZWRBbmFseXNpcz46OmNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQmxvY2soR3Jh
cGgmIGdyYXBoLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrKQoreworICAgIGlmIChibG9jay0+
aXNFeGl0QmxvY2soKSB8fCBibG9jay0+aXNFbnRyeUJsb2NrKCkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICByZXR1cm4gY29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCeXRlY29kZU9mZnNldChn
cmFwaCwgYmxvY2ssIGJsb2NrLT5sZWFkZXJCeXRlY29kZU9mZnNldCgpLCBibG9jay0+aW4oKSk7
Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIERlcml2ZWRBbmFseXNpcz4KK3RlbXBsYXRlPHR5cGVu
YW1lIEdyYXBoPgoraW5saW5lIEZhc3RCaXRWZWN0b3IgQnl0ZWNvZGVMaXZlbmVzc0xvY2FsUHJv
cGFnYXRpb248RGVyaXZlZEFuYWx5c2lzPjo6Z2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29kZU9mZnNl
dChHcmFwaCYgZ3JhcGgsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KQoreworICAgIEJ5dGVjb2Rl
QmFzaWNCbG9jayogYmxvY2sgPSBncmFwaC5maW5kQmFzaWNCbG9ja0ZvckJ5dGVjb2RlT2Zmc2V0
KGJ5dGVjb2RlT2Zmc2V0KTsKKyAgICBBU1NFUlQoYmxvY2spOworICAgIEFTU0VSVCghYmxvY2st
PmlzRW50cnlCbG9jaygpKTsKKyAgICBBU1NFUlQoIWJsb2NrLT5pc0V4aXRCbG9jaygpKTsKKyAg
ICBGYXN0Qml0VmVjdG9yIG91dDsKKyAgICBvdXQucmVzaXplKGJsb2NrLT5vdXQoKS5udW1CaXRz
KCkpOworICAgIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQnl0ZWNvZGVPZmZzZXQoZ3JhcGgsIGJs
b2NrLCBieXRlY29kZU9mZnNldCwgb3V0KTsKKyAgICByZXR1cm4gb3V0OworfQorCiB9IC8vIG5h
bWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGluZXNf
aApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlUmV3
cml0ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlUmV3cml0
ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjcwMDRjMjlhZmUzNzZjMDhkMTU2ZTE0MDllMGQ0MDRiNWY1NWJi
OTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVSZXdyaXRlci5jcHAKQEAgLTAsMCArMSw5MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNiBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJCeXRlY29kZVJld3JpdGVyLmgiCisKKyNpbmNs
dWRlIDx3dGYvQnViYmxlU29ydC5oPgorCituYW1lc3BhY2UgSlNDIHsKKworaW50IEJ5dGVjb2Rl
UmV3cml0ZXI6OmFkanVzdE9mZnNldChpbnQgYnl0ZWNvZGVPZmZzZXQsIGludCBqdW1wVGFyZ2V0
KQoreworICAgIGlmIChieXRlY29kZU9mZnNldCA8IGp1bXBUYXJnZXQpIHsKKyAgICAgICAgYXV0
byBzdGFydCA9IHN0ZDo6bG93ZXJfYm91bmQobV9pbnNlcnRpb25zLmJlZ2luKCksIG1faW5zZXJ0
aW9ucy5lbmQoKSwgYnl0ZWNvZGVPZmZzZXQsIFsmXSAoY29uc3QgSW5zZXJ0aW9uJiBpbnNlcnRp
b24sIGludCBieXRlY29kZU9mZnNldCkgeworICAgICAgICAgICAgaWYgKHN0YXRpY19jYXN0PGlu
dD4oaW5zZXJ0aW9uLmluZGV4KCkpID09IGJ5dGVjb2RlT2Zmc2V0KQorICAgICAgICAgICAgICAg
IHJldHVybiBpbnNlcnRpb24uZWxlbWVudCgpLnBvc2l0aW9uIDwgQ29tbWFuZDo6UG9zaXRpb246
OkJhc2VQb2ludDsKKyAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KGluc2VydGlv
bi5pbmRleCgpKSA8IGJ5dGVjb2RlT2Zmc2V0OworICAgICAgICB9KTsKKyAgICAgICAgaWYgKHN0
YXJ0ICE9IG1faW5zZXJ0aW9ucy5lbmQoKSkgeworICAgICAgICAgICAgYXV0byBlbmQgPSBzdGQ6
Omxvd2VyX2JvdW5kKG1faW5zZXJ0aW9ucy5iZWdpbigpLCBtX2luc2VydGlvbnMuZW5kKCksIGp1
bXBUYXJnZXQsIFsmXSAoY29uc3QgSW5zZXJ0aW9uJiBpbnNlcnRpb24sIGludCBqdW1wVGFyZ2V0
KSB7CisgICAgICAgICAgICAgICAgaWYgKHN0YXRpY19jYXN0PGludD4oaW5zZXJ0aW9uLmluZGV4
KCkpID09IGp1bXBUYXJnZXQpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBpbnNlcnRpb24u
ZWxlbWVudCgpLnBvc2l0aW9uIDwgQ29tbWFuZDo6UG9zaXRpb246OkJhc2VQb2ludDsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihpbnNlcnRpb24uaW5kZXgoKSkgPCBq
dW1wVGFyZ2V0OworICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBmb3IgKDsgc3RhcnQgIT0g
ZW5kOyArK3N0YXJ0KSB7CisgICAgICAgICAgICAgICAgaWYgKHN0YXJ0LT5lbGVtZW50KCkudHlw
ZSA9PSBDb21tYW5kOjpUeXBlOjpSZW1vdmUpCisgICAgICAgICAgICAgICAgICAgIGp1bXBUYXJn
ZXQgLT0gc3RhcnQtPmVsZW1lbnQoKS5sZW5ndGg7CisgICAgICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgICAgICBqdW1wVGFyZ2V0ICs9IHN0YXJ0LT5lbGVtZW50KCkubGVuZ3RoOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiBqdW1wVGFyZ2V0IC0gYnl0
ZWNvZGVPZmZzZXQ7CisgICAgfQorCisgICAgaWYgKGJ5dGVjb2RlT2Zmc2V0ID09IGp1bXBUYXJn
ZXQpCisgICAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIC1hZGp1c3RPZmZzZXQoanVtcFRh
cmdldCwgYnl0ZWNvZGVPZmZzZXQpOworfQorCit2b2lkIEJ5dGVjb2RlUmV3cml0ZXI6OmFwcGx5
TW9kaWZpY2F0aW9uKCkKK3sKKyAgICBmb3IgKHNpemVfdCBpbnNlcnRpb25JbmRleCA9IG1faW5z
ZXJ0aW9ucy5zaXplKCk7IGluc2VydGlvbkluZGV4LS07KSB7CisgICAgICAgIGNvbnN0IEluc2Vy
dGlvbiYgaW5zZXJ0aW9uID0gbV9pbnNlcnRpb25zW2luc2VydGlvbkluZGV4XTsKKyAgICAgICAg
aWYgKGluc2VydGlvbi5lbGVtZW50KCkudHlwZSA9PSBDb21tYW5kOjpUeXBlOjpSZW1vdmUpCisg
ICAgICAgICAgICBtX2dyYXBoLmluc3RydWN0aW9ucygpLnJlbW92ZShpbnNlcnRpb24uaW5kZXgo
KSwgaW5zZXJ0aW9uLmVsZW1lbnQoKS5sZW5ndGgpOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICBtX2dyYXBoLmluc3RydWN0aW9ucygpLmluc2VydChpbnNlcnRpb24uaW5kZXgoKSwgaW5zZXJ0
aW9uLmVsZW1lbnQoKS5ieXRlY29kZS5pbnN0cnVjdGlvbnMsIG9wY29kZUxlbmd0aChpbnNlcnRp
b24uZWxlbWVudCgpLmJ5dGVjb2RlLmluc3RydWN0aW9uc1swXS51Lm9wY29kZSkpOworICAgIH0K
KyAgICBtX2luc2VydGlvbnMuY2xlYXIoKTsKK30KKwordm9pZCBCeXRlY29kZVJld3JpdGVyOjpl
eGVjdXRlKCkKK3sKKyAgICBXVEY6OmJ1YmJsZVNvcnQobV9pbnNlcnRpb25zLmJlZ2luKCksIG1f
aW5zZXJ0aW9ucy5lbmQoKSwgW10gKGNvbnN0IEluc2VydGlvbiYgbGhzLCBjb25zdCBJbnNlcnRp
b24mIHJocykgeworICAgICAgICBpZiAobGhzLmluZGV4KCkgPT0gcmhzLmluZGV4KCkpIHsKKyAg
ICAgICAgICAgIGlmIChsaHMuZWxlbWVudCgpLnR5cGUgPT0gcmhzLmVsZW1lbnQoKS50eXBlKQor
ICAgICAgICAgICAgICAgIHJldHVybiBsaHMuZWxlbWVudCgpLnBvc2l0aW9uIDwgcmhzLmVsZW1l
bnQoKS5wb3NpdGlvbjsKKyAgICAgICAgICAgIC8vIFdlIHdvdWxkIGxpa2UgdG8gcGVyZm9ybSBy
ZW1vdmUgb3BlcmF0aW9uIGJlZm9yZSBpbnNlcnRpb24uCisgICAgICAgICAgICByZXR1cm4gbGhz
LmVsZW1lbnQoKS50eXBlIDwgcmhzLmVsZW1lbnQoKS50eXBlOworICAgICAgICB9CisgICAgICAg
IHJldHVybiBsaHMgPCByaHM7CisgICAgfSk7CisKKyAgICBVbmxpbmtlZENvZGVCbG9jayogY29k
ZUJsb2NrID0gbV9ncmFwaC5jb2RlQmxvY2soKTsKKyAgICBjb2RlQmxvY2stPmFwcGx5TW9kaWZp
Y2F0aW9uKCp0aGlzKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVSZXdyaXRlci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlUmV3cml0ZXIuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZGQ0
MWNlZDcxMzhlNjUyZTczNWE3ZWViMGJkNmNjOTRlOTYxNDc0Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlUmV3cml0ZXIuaApAQCAtMCww
ICsxLDk3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IFl1c3VrZSBTdXp1a2kgPHV0YXRh
bmUudGVhQGdtYWlsLmNvbT4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJC
eXRlY29kZUdyYXBoLmgiCisjaW5jbHVkZSAiQnl0ZWNvZGVzLmgiCisjaW5jbHVkZSAiVW5saW5r
ZWRDb2RlQmxvY2suaCIKKyNpbmNsdWRlIDx3dGYvSW5zZXJ0aW9uLmg+CisKK25hbWVzcGFjZSBK
U0MgeworCitjbGFzcyBCeXRlY29kZVJld3JpdGVyIHsKK3B1YmxpYzoKKyAgICBzdHJ1Y3QgSW5z
ZXJ0ZWRCeXRlY29kZSB7CisgICAgICAgIFVubGlua2VkSW5zdHJ1Y3Rpb24gaW5zdHJ1Y3Rpb25z
W01BWF9PUENPREVfTEVOR1RIX09GX0JZVEVDT0RFXTsKKyAgICB9OworCisgICAgc3RydWN0IENv
bW1hbmQgeworICAgICAgICBlbnVtIGNsYXNzIFR5cGUgOiB1aW50MTZfdCB7IEluc2VydCA9IDAs
IFJlbW92ZSA9IDEsIH07CisgICAgICAgIGVudW0gY2xhc3MgUG9zaXRpb24gOiBpbnQxNl90IHsg
QmVmb3JlID0gLTEsIEJhc2VQb2ludCA9IDAsIEFmdGVyID0gMSB9OworCisgICAgICAgIFR5cGUg
dHlwZTsKKyAgICAgICAgUG9zaXRpb24gcG9zaXRpb247CisgICAgICAgIHNpemVfdCBsZW5ndGg7
CisgICAgICAgIEluc2VydGVkQnl0ZWNvZGUgYnl0ZWNvZGU7CisgICAgfTsKKworICAgIHR5cGVk
ZWYgV1RGOjpJbnNlcnRpb248Q29tbWFuZD4gSW5zZXJ0aW9uOworCisgICAgQnl0ZWNvZGVSZXdy
aXRlcihCeXRlY29kZUdyYXBoPFVubGlua2VkQ29kZUJsb2NrPiYgZ3JhcGgpCisgICAgICAgIDog
bV9ncmFwaChncmFwaCkKKyAgICB7CisgICAgfQorCisgICAgdGVtcGxhdGU8Y2xhc3MuLi4gQXJn
cz4KKyAgICB2b2lkIGluc2VydEFmdGVyKHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBPcGNvZGVJ
RCBvcGNvZGVJRCwgQXJncy4uLiBhcmdzKQorICAgIHsKKyAgICAgICAgSW5zZXJ0ZWRCeXRlY29k
ZSBieXRlY29kZSA9IHsgeworICAgICAgICAgICAgVW5saW5rZWRJbnN0cnVjdGlvbihvcGNvZGVJ
RCksCisgICAgICAgICAgICBVbmxpbmtlZEluc3RydWN0aW9uKGFyZ3MpLi4uCisgICAgICAgIH0g
fTsKKyAgICAgICAgbV9pbnNlcnRpb25zLmFwcGVuZChJbnNlcnRpb24oYnl0ZWNvZGVPZmZzZXQs
IENvbW1hbmQgeyBDb21tYW5kOjpUeXBlOjpJbnNlcnQsIENvbW1hbmQ6OlBvc2l0aW9uOjpBZnRl
ciwgb3Bjb2RlTGVuZ3RoKG9wY29kZUlEKSwgYnl0ZWNvZGUgfSkpOworICAgIH0KKworICAgIHRl
bXBsYXRlPGNsYXNzLi4uIEFyZ3M+CisgICAgdm9pZCBpbnNlcnRCZWZvcmUodW5zaWduZWQgYnl0
ZWNvZGVPZmZzZXQsIE9wY29kZUlEIG9wY29kZUlELCBBcmdzLi4uIGFyZ3MpCisgICAgeworICAg
ICAgICBJbnNlcnRlZEJ5dGVjb2RlIGJ5dGVjb2RlID0geyB7CisgICAgICAgICAgICBVbmxpbmtl
ZEluc3RydWN0aW9uKG9wY29kZUlEKSwKKyAgICAgICAgICAgIFVubGlua2VkSW5zdHJ1Y3Rpb24o
YXJncykuLi4KKyAgICAgICAgfSB9OworICAgICAgICBtX2luc2VydGlvbnMuYXBwZW5kKEluc2Vy
dGlvbihieXRlY29kZU9mZnNldCwgQ29tbWFuZCB7IENvbW1hbmQ6OlR5cGU6Okluc2VydCwgQ29t
bWFuZDo6UG9zaXRpb246OkJlZm9yZSwgb3Bjb2RlTGVuZ3RoKG9wY29kZUlEKSwgYnl0ZWNvZGUg
fSkpOworICAgIH0KKworICAgIHZvaWQgcmVtb3ZlQnl0ZWNvZGUodW5zaWduZWQgYnl0ZWNvZGVP
ZmZzZXQpCisgICAgeworICAgICAgICBtX2luc2VydGlvbnMuYXBwZW5kKEluc2VydGlvbihieXRl
Y29kZU9mZnNldCwgQ29tbWFuZCB7IENvbW1hbmQ6OlR5cGU6OlJlbW92ZSwgQ29tbWFuZDo6UG9z
aXRpb246OkFmdGVyLCBvcGNvZGVMZW5ndGgobV9ncmFwaC5pbnN0cnVjdGlvbnMoKVtieXRlY29k
ZU9mZnNldF0udS5vcGNvZGUpLCBJbnNlcnRlZEJ5dGVjb2RlIHsgfSB9KSk7CisgICAgfQorCisg
ICAgdm9pZCBleGVjdXRlKCk7CisKKyAgICBCeXRlY29kZUdyYXBoPFVubGlua2VkQ29kZUJsb2Nr
PiYgZ3JhcGgoKSB7IHJldHVybiBtX2dyYXBoOyB9CisKKyAgICBpbnQgYWRqdXN0T2Zmc2V0KGlu
dCBieXRlY29kZU9mZnNldCwgaW50IGp1bXBUYXJnZXQpOworCitwcml2YXRlOgorICAgIGZyaWVu
ZCBjbGFzcyBVbmxpbmtlZENvZGVCbG9jazsKKyAgICB2b2lkIGFwcGx5TW9kaWZpY2F0aW9uKCk7
CisKKyAgICBCeXRlY29kZUdyYXBoPFVubGlua2VkQ29kZUJsb2NrPiYgbV9ncmFwaDsKKyAgICBW
ZWN0b3I8SW5zZXJ0aW9uLCA4PiBtX2luc2VydGlvbnM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBK
U0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVz
ZURlZi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgK
aW5kZXggNDM1ZjYxMDEwODM5MWE4NTljMGM1NTVlNjExNWI5Njk4N2ZhZTg4ZS4uMTc1MDJlYjBm
NDRlMDVlYTE2MDI2YzAxNDZjNTRkZGY5NzU1NDRmOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKQEAgLTMxLDE1ICszMSw5IEBACiAKIG5h
bWVzcGFjZSBKU0MgewogCi10ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgotdm9pZCBjb21wdXRl
VXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAotICAgIENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29k
ZUJhc2ljQmxvY2sqIGJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgY29uc3QgRnVuY3Rv
ciYgZnVuY3RvcikKK3RlbXBsYXRlPHR5cGVuYW1lIEJsb2NrLCB0eXBlbmFtZSBGdW5jdG9yLCB0
eXBlbmFtZSBJbnN0cnVjdGlvbj4KK3ZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldChC
bG9jayogY29kZUJsb2NrLCBPcGNvZGVJRCBvcGNvZGVJRCwgSW5zdHJ1Y3Rpb24qIGluc3RydWN0
aW9uLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQogewotICAgIEludGVycHJldGVyKiBpbnRlcnBy
ZXRlciA9IGNvZGVCbG9jay0+dm0oKS0+aW50ZXJwcmV0ZXI7Ci0gICAgSW5zdHJ1Y3Rpb24qIGlu
c3RydWN0aW9uc0JlZ2luID0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpOwotICAg
IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9ICZpbnN0cnVjdGlvbnNCZWdpbltieXRlY29kZU9m
ZnNldF07Ci0gICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQo
aW5zdHJ1Y3Rpb24tPnUub3Bjb2RlKTsKLQogICAgIGlmIChvcGNvZGVJRCAhPSBvcF9lbnRlciAm
JiBjb2RlQmxvY2stPndhc0NvbXBpbGVkV2l0aERlYnVnZ2luZ09wY29kZXMoKSAmJiBjb2RlQmxv
Y2stPnNjb3BlUmVnaXN0ZXIoKS5pc1ZhbGlkKCkpCiAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2Nr
LCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGNvZGVCbG9jay0+c2NvcGVSZWdpc3RlcigpLm9mZnNl
dCgpKTsKIApAQCAtNzYsOCArNzAsNyBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZz
ZXQoCiAgICAgY2FzZSBvcF9qbmVxX251bGw6CiAgICAgY2FzZSBvcF9kZWM6CiAgICAgY2FzZSBv
cF9pbmM6Ci0gICAgY2FzZSBvcF9sb2dfc2hhZG93X2NoaWNrZW5fcHJvbG9ndWU6Ci0gICAgY2Fz
ZSBvcF9yZXN1bWU6IHsKKyAgICBjYXNlIG9wX2xvZ19zaGFkb3dfY2hpY2tlbl9wcm9sb2d1ZTog
ewogICAgICAgICBBU1NFUlQob3Bjb2RlTGVuZ3Roc1tvcGNvZGVJRF0gPiAxKTsKICAgICAgICAg
ZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb25bMV0u
dS5vcGVyYW5kKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjg4LDQyICsyODEsMjggQEAgdm9pZCBj
b21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAogICAgICAgICAgICAgZnVuY3Rvcihjb2RlQmxv
Y2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgY29kZUJsb2NrLT5zY29wZVJlZ2lzdGVyKCkub2Zm
c2V0KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGNhc2Ugb3Bfc2F2ZTogewotICAg
ICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBpbnN0cnVjdGlv
blsxXS51Lm9wZXJhbmQpOwotICAgICAgICB1bnNpZ25lZCBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZz
ZXQgPSBieXRlY29kZU9mZnNldCArIGluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKLSAgICAgICAg
Qnl0ZWNvZGVCYXNpY0Jsb2NrKiBtZXJnZVBvaW50QmxvY2sgPSBudWxscHRyOwotICAgICAgICBm
b3IgKEJ5dGVjb2RlQmFzaWNCbG9jayogc3VjY2Vzc29yIDogYmxvY2stPnN1Y2Nlc3NvcnMoKSkg
ewotICAgICAgICAgICAgaWYgKHN1Y2Nlc3Nvci0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKSA9PSBt
ZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXQpIHsKLSAgICAgICAgICAgICAgICBtZXJnZVBvaW50Qmxv
Y2sgPSBzdWNjZXNzb3I7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgIH0KLSAgICAgICAgQVNTRVJUKG1lcmdlUG9pbnRCbG9jayk7Ci0gICAgICAgIG1lcmdl
UG9pbnRCbG9jay0+aW4oKS5mb3JFYWNoU2V0Qml0KFsmXSh1bnNpZ25lZCBsb2NhbCkgewotICAg
ICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgdmlydHVh
bFJlZ2lzdGVyRm9yTG9jYWwobG9jYWwpLm9mZnNldCgpKTsKLSAgICAgICAgfSk7CisKKyAgICBj
YXNlIG9wX3NhdmU6CisgICAgY2FzZSBvcF9yZXN1bWU6IHsKKyAgICAgICAgLy8gRG8gbm90aGlu
ZyBpbiBsaXZlbmVzcyBhbmFseXNpcy4KICAgICAgICAgcmV0dXJuOwogICAgIH0KKwogICAgIGRl
ZmF1bHQ6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIGJy
ZWFrOwogICAgIH0KIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KLXZvaWQgY29tcHV0
ZURlZnNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVCYXNp
Y0Jsb2NrKiBibG9jaywgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIGNvbnN0IEZ1bmN0b3ImIGZ1
bmN0b3IpCit0ZW1wbGF0ZTx0eXBlbmFtZSBCbG9jaywgdHlwZW5hbWUgSW5zdHJ1Y3Rpb24sIHR5
cGVuYW1lIEZ1bmN0b3I+Cit2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQmxvY2sq
IGNvZGVCbG9jaywgT3Bjb2RlSUQgb3Bjb2RlSUQsIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwg
Y29uc3QgRnVuY3RvciYgZnVuY3RvcikKIHsKLSAgICBJbnRlcnByZXRlciogaW50ZXJwcmV0ZXIg
PSBjb2RlQmxvY2stPnZtKCktPmludGVycHJldGVyOwotICAgIEluc3RydWN0aW9uKiBpbnN0cnVj
dGlvbnNCZWdpbiA9IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsKLSAgICBJbnN0
cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSAmaW5zdHJ1Y3Rpb25zQmVnaW5bYnl0ZWNvZGVPZmZzZXRd
OwotICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGluc3Ry
dWN0aW9uLT51Lm9wY29kZSk7CiAgICAgc3dpdGNoIChvcGNvZGVJRCkgewogICAgIC8vIFRoZXNl
IGRvbid0IGRlZmluZSBhbnl0aGluZy4KICAgICBjYXNlIG9wX3B1dF90b19zY29wZToKICAgICBj
YXNlIG9wX2VuZDoKICAgICBjYXNlIG9wX3Rocm93OgogICAgIGNhc2Ugb3BfdGhyb3dfc3RhdGlj
X2Vycm9yOgotICAgIGNhc2Ugb3Bfc2F2ZToKICAgICBjYXNlIG9wX2Fzc2VydDoKICAgICBjYXNl
IG9wX2RlYnVnOgogICAgIGNhc2Ugb3BfcmV0OgpAQCAtNDYzLDcgKzQ0Miw3IEBAIHZvaWQgY29t
cHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVC
YXNpY0Jsb2NrKiBibG9jCiAgICAgY2FzZSBvcF9kZWxfYnlfaWQ6CiAgICAgY2FzZSBvcF9kZWxf
YnlfdmFsOgogICAgIGNhc2Ugb3BfdW5zaWduZWQ6Ci0gICAgY2FzZSBvcF9nZXRfZnJvbV9hcmd1
bWVudHM6IAorICAgIGNhc2Ugb3BfZ2V0X2Zyb21fYXJndW1lbnRzOgogICAgIGNhc2Ugb3BfY3Jl
YXRlX3Jlc3Q6CiAgICAgY2FzZSBvcF9nZXRfcmVzdF9sZW5ndGg6IHsKICAgICAgICAgQVNTRVJU
KG9wY29kZUxlbmd0aHNbb3Bjb2RlSURdID4gMSk7CkBAIC00ODEsMTUgKzQ2MCwxNCBAQCB2b2lk
IGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVj
b2RlQmFzaWNCbG9jayogYmxvYwogICAgICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3Ry
dWN0aW9uLCBvcGNvZGVJRCwgdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaSkub2Zmc2V0KCkpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQorICAgIGNhc2Ugb3Bfc2F2ZToKICAgICBjYXNlIG9wX3Jl
c3VtZTogewotICAgICAgICBSRUxFQVNFX0FTU0VSVChibG9jay0+c3VjY2Vzc29ycygpLnNpemUo
KSA9PSAxKTsKLSAgICAgICAgLy8gRklYTUU6IFRoaXMgaXMgcmVhbGx5IGRpcnR5LgotICAgICAg
ICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU5MjgxCi0gICAg
ICAgIGJsb2NrLT5zdWNjZXNzb3JzKClbMF0tPmluKCkuZm9yRWFjaFNldEJpdChbJl0odW5zaWdu
ZWQgbG9jYWwpIHsKLSAgICAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwg
b3Bjb2RlSUQsIHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGxvY2FsKS5vZmZzZXQoKSk7Ci0gICAg
ICAgIH0pOworICAgICAgICAvLyBEbyBub3RoaW5nIGluIGxpdmVuZXNzIGFuYWx5c2lzLgogICAg
ICAgICByZXR1cm47CiAgICAgfQorICAgIGRlZmF1bHQ6CisgICAgICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybjsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKaW5kZXggMzJiZTYzMTY1MzE3NzY4
NmU1MDQ0YTgxMmUxMjliNjc3YWYwNjJhOS4uNGE2ZDcwM2E4OTM5OTY2MTAxZjM0NzMzMTk3ZmQx
NmE2OTQ0NmMwYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
ay5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJBcml0aFByb2ZpbGUuaCIKICNpbmNs
dWRlICJCYXNpY0Jsb2NrTG9jYXRpb24uaCIKICNpbmNsdWRlICJCeXRlY29kZUdlbmVyYXRvci5o
IgorI2luY2x1ZGUgIkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5oIgogI2luY2x1ZGUgIkJ5dGVj
b2RlVXNlRGVmLmgiCiAjaW5jbHVkZSAiQ2FsbExpbmtTdGF0dXMuaCIKICNpbmNsdWRlICJERkdD
YXBhYmlsaXRpZXMuaCIKQEAgLTY5NywxOCArNjk4LDYgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXBC
eXRlY29kZShQcmludFN0cmVhbSYgb3V0KQogICAgICAgICB9IHdoaWxlIChpIDwgbV9yYXJlRGF0
YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzLnNpemUoKSk7CiAgICAgfQogCi0gICAgaWYgKG1f
cmFyZURhdGEgJiYgIW1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQuaXNFbXB0
eSgpKSB7Ci0gICAgICAgIG91dC5wcmludGYoIlxuTGl2ZSBDYWxsZWUgTG9jYWxzOlxuIik7Ci0g
ICAgICAgIHVuc2lnbmVkIGkgPSAwOwotICAgICAgICBkbyB7Ci0gICAgICAgICAgICBjb25zdCBG
YXN0Qml0VmVjdG9yJiBsaXZlbmVzcyA9IG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0
WWllbGRbaV07Ci0gICAgICAgICAgICBvdXQucHJpbnRmKCIgIGxpdmUlMXUgPSAiLCBpKTsKLSAg
ICAgICAgICAgIGxpdmVuZXNzLmR1bXAob3V0KTsKLSAgICAgICAgICAgIG91dC5wcmludGYoIlxu
Iik7Ci0gICAgICAgICAgICArK2k7Ci0gICAgICAgIH0gd2hpbGUgKGkgPCBtX3JhcmVEYXRhLT5t
X2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkLnNpemUoKSk7Ci0gICAgfQotCiAgICAgb3V0LnByaW50
ZigiXG4iKTsKIH0KIApAQCAtMTY3MiwzMSArMTY2MSw2IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1w
Qnl0ZWNvZGUoCiAgICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgJWQiLCBkZWJ1Z0hvb2tOYW1l
KGRlYnVnSG9va0lEKSwgaGFzQnJlYWtwb2ludEZsYWcpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KLSAgICAgICAgY2FzZSBvcF9zYXZlOiB7Ci0gICAgICAgICAgICBpbnQgZ2VuZXJh
dG9yID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICB1bnNpZ25lZCBsaXZlQ2FsbGVl
TG9jYWxzSW5kZXggPSAoKytpdCktPnUudW5zaWduZWRWYWx1ZTsKLSAgICAgICAgICAgIGludCBv
ZmZzZXQgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIEZhc3RCaXRWZWN0b3IgbGl2
ZW5lc3M7Ci0gICAgICAgICAgICBpZiAobGl2ZUNhbGxlZUxvY2Fsc0luZGV4IDwgbV9yYXJlRGF0
YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZC5zaXplKCkpCi0gICAgICAgICAgICAgICAgbGl2
ZW5lc3MgPSBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkW2xpdmVDYWxsZWVM
b2NhbHNJbmRleF07Ci0gICAgICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBleGVjLCBs
b2NhdGlvbiwgaXQsICJzYXZlIik7Ci0gICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgIiwgcmVn
aXN0ZXJOYW1lKGdlbmVyYXRvcikuZGF0YSgpKTsKLSAgICAgICAgICAgIGxpdmVuZXNzLmR1bXAo
b3V0KTsKLSAgICAgICAgICAgIG91dC5wcmludGYoIihAbGl2ZSUxdSksICVkKC0+JWQpIiwgbGl2
ZUNhbGxlZUxvY2Fsc0luZGV4LCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2Ugb3BfcmVzdW1lOiB7Ci0gICAgICAg
ICAgICBpbnQgZ2VuZXJhdG9yID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICB1bnNp
Z25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSAoKytpdCktPnUudW5zaWduZWRWYWx1ZTsKLSAg
ICAgICAgICAgIEZhc3RCaXRWZWN0b3IgbGl2ZW5lc3M7Ci0gICAgICAgICAgICBpZiAobGl2ZUNh
bGxlZUxvY2Fsc0luZGV4IDwgbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZC5z
aXplKCkpCi0gICAgICAgICAgICAgICAgbGl2ZW5lc3MgPSBtX3JhcmVEYXRhLT5tX2xpdmVDYWxs
ZWVMb2NhbHNBdFlpZWxkW2xpdmVDYWxsZWVMb2NhbHNJbmRleF07Ci0gICAgICAgICAgICBwcmlu
dExvY2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJyZXN1bWUiKTsKLSAgICAg
ICAgICAgIG91dC5wcmludGYoIiVzLCAiLCByZWdpc3Rlck5hbWUoZ2VuZXJhdG9yKS5kYXRhKCkp
OwotICAgICAgICAgICAgbGl2ZW5lc3MuZHVtcChvdXQpOwotICAgICAgICAgICAgb3V0LnByaW50
ZigiKEBsaXZlJTF1KSIsIGxpdmVDYWxsZWVMb2NhbHNJbmRleCk7Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2Fzc2VydDogewogICAgICAgICAgICAgaW50
IGNvbmRpdGlvbiA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IGxpbmUgPSAo
KytpdCktPnUub3BlcmFuZDsKQEAgLTE5MDgsNyArMTg3Miw2IEBAIHZvaWQgQ29kZUJsb2NrOjpm
aW5pc2hDcmVhdGlvbihWTSYgdm0sIENvcHlQYXJzZWRCbG9ja1RhZywgQ29kZUJsb2NrJiBvdGhl
cikKICAgICAgICAgbV9yYXJlRGF0YS0+bV9jb25zdGFudEJ1ZmZlcnMgPSBvdGhlci5tX3JhcmVE
YXRhLT5tX2NvbnN0YW50QnVmZmVyczsKICAgICAgICAgbV9yYXJlRGF0YS0+bV9zd2l0Y2hKdW1w
VGFibGVzID0gb3RoZXIubV9yYXJlRGF0YS0+bV9zd2l0Y2hKdW1wVGFibGVzOwogICAgICAgICBt
X3JhcmVEYXRhLT5tX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXMgPSBvdGhlci5tX3JhcmVEYXRhLT5t
X3N0cmluZ1N3aXRjaEp1bXBUYWJsZXM7Ci0gICAgICAgIG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxl
ZUxvY2Fsc0F0WWllbGQgPSBvdGhlci5tX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlp
ZWxkOwogICAgIH0KICAgICAKICAgICBoZWFwKCktPm1fY29kZUJsb2Nrcy0+YWRkKHRoaXMpOwpA
QCAtMjAzMCw3ICsxOTkzLDcgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2
bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICAgICAgICAg
ICAgICBVbmxpbmtlZFN0cmluZ0p1bXBUYWJsZTo6U3RyaW5nT2Zmc2V0VGFibGU6Oml0ZXJhdG9y
IGVuZCA9IHVubGlua2VkQ29kZUJsb2NrLT5zdHJpbmdTd2l0Y2hKdW1wVGFibGUoaSkub2Zmc2V0
VGFibGUuZW5kKCk7CiAgICAgICAgICAgICAgICAgZm9yICg7IHB0ciAhPSBlbmQ7ICsrcHRyKSB7
CiAgICAgICAgICAgICAgICAgICAgIE9mZnNldExvY2F0aW9uIG9mZnNldDsKLSAgICAgICAgICAg
ICAgICAgICAgb2Zmc2V0LmJyYW5jaE9mZnNldCA9IHB0ci0+dmFsdWU7CisgICAgICAgICAgICAg
ICAgICAgIG9mZnNldC5icmFuY2hPZmZzZXQgPSBwdHItPnZhbHVlLmJyYW5jaE9mZnNldDsKICAg
ICAgICAgICAgICAgICAgICAgbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzW2ld
Lm9mZnNldFRhYmxlLmFkZChwdHItPmtleSwgb2Zmc2V0KTsKICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICB9CkBAIC0yMDcwLDExICsyMDMzLDE3IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5p
c2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5s
aW5rCiAgICAgLy8gQm9va2tlZXAgdGhlIHN0cm9uZ2x5IHJlZmVyZW5jZWQgbW9kdWxlIGVudmly
b25tZW50cy4KICAgICBIYXNoU2V0PEpTTW9kdWxlRW52aXJvbm1lbnQqPiBzdHJvbmdseVJlZmVy
ZW5jZWRNb2R1bGVFbnZpcm9ubWVudHM7CiAKLSAgICAvLyBCb29ra2VlcCB0aGUgbWVyZ2UgcG9p
bnQgYnl0ZWNvZGUgb2Zmc2V0cy4KLSAgICBWZWN0b3I8c2l6ZV90PiBtZXJnZVBvaW50Qnl0ZWNv
ZGVPZmZzZXRzOwotCiAgICAgUmVmQ291bnRlZEFycmF5PEluc3RydWN0aW9uPiBpbnN0cnVjdGlv
bnMoaW5zdHJ1Y3Rpb25Db3VudCk7CiAKKyAgICB1bnNpZ25lZCB2YWx1ZVByb2ZpbGVDb3VudCA9
IDA7CisgICAgYXV0byBsaW5rVmFsdWVQcm9maWxlID0gWyZdKHVuc2lnbmVkIGJ5dGVjb2RlT2Zm
c2V0LCB1bnNpZ25lZCBvcExlbmd0aCkgeworICAgICAgICB1bnNpZ25lZCB2YWx1ZVByb2ZpbGVJ
bmRleCA9IHZhbHVlUHJvZmlsZUNvdW50Kys7CisgICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmls
ZSA9ICZtX3ZhbHVlUHJvZmlsZXNbdmFsdWVQcm9maWxlSW5kZXhdOworICAgICAgICBBU1NFUlQo
cHJvZmlsZS0+bV9ieXRlY29kZU9mZnNldCA9PSAtMSk7CisgICAgICAgIHByb2ZpbGUtPm1fYnl0
ZWNvZGVPZmZzZXQgPSBieXRlY29kZU9mZnNldDsKKyAgICAgICAgaW5zdHJ1Y3Rpb25zW2J5dGVj
b2RlT2Zmc2V0ICsgb3BMZW5ndGggLSAxXSA9IHByb2ZpbGU7CisgICAgfTsKKwogICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7ICFpbnN0cnVjdGlvblJlYWRlci5hdEVuZCgpOyApIHsKICAgICAgICAg
Y29uc3QgVW5saW5rZWRJbnN0cnVjdGlvbiogcGMgPSBpbnN0cnVjdGlvblJlYWRlci5uZXh0KCk7
CiAKQEAgLTIxMDksMTAgKzIwNzgsNyBAQCB2b2lkIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24o
Vk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGluawogICAgICAg
ICBjYXNlIG9wX2dldF9ieV9pZDoKICAgICAgICAgY2FzZSBvcF9nZXRfZnJvbV9hcmd1bWVudHM6
CiAgICAgICAgIGNhc2Ugb3BfdG9fbnVtYmVyOiB7Ci0gICAgICAgICAgICBWYWx1ZVByb2ZpbGUq
IHByb2ZpbGUgPSAmbV92YWx1ZVByb2ZpbGVzW3BjW29wTGVuZ3RoIC0gMV0udS5vcGVyYW5kXTsK
LSAgICAgICAgICAgIEFTU0VSVChwcm9maWxlLT5tX2J5dGVjb2RlT2Zmc2V0ID09IC0xKTsKLSAg
ICAgICAgICAgIHByb2ZpbGUtPm1fYnl0ZWNvZGVPZmZzZXQgPSBpOwotICAgICAgICAgICAgaW5z
dHJ1Y3Rpb25zW2kgKyBvcExlbmd0aCAtIDFdID0gcHJvZmlsZTsKKyAgICAgICAgICAgIGxpbmtW
YWx1ZVByb2ZpbGUoaSwgb3BMZW5ndGgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
ICAgICAgICAgY2FzZSBvcF9wdXRfYnlfdmFsOiB7CkBAIC0yMTQ5LDEwICsyMTE1LDcgQEAgdm9p
ZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3du
ZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICAgICAgY2FzZSBvcF9jYWxsOgogICAgICAgICBjYXNl
IG9wX3RhaWxfY2FsbDoKICAgICAgICAgY2FzZSBvcF9jYWxsX2V2YWw6IHsKLSAgICAgICAgICAg
IFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9ICZtX3ZhbHVlUHJvZmlsZXNbcGNbb3BMZW5ndGggLSAx
XS51Lm9wZXJhbmRdOwotICAgICAgICAgICAgQVNTRVJUKHByb2ZpbGUtPm1fYnl0ZWNvZGVPZmZz
ZXQgPT0gLTEpOwotICAgICAgICAgICAgcHJvZmlsZS0+bV9ieXRlY29kZU9mZnNldCA9IGk7Ci0g
ICAgICAgICAgICBpbnN0cnVjdGlvbnNbaSArIG9wTGVuZ3RoIC0gMV0gPSBwcm9maWxlOworICAg
ICAgICAgICAgbGlua1ZhbHVlUHJvZmlsZShpLCBvcExlbmd0aCk7CiAgICAgICAgICAgICBpbnQg
YXJyYXlQcm9maWxlSW5kZXggPSBwY1tvcExlbmd0aCAtIDJdLnUub3BlcmFuZDsKICAgICAgICAg
ICAgIG1fYXJyYXlQcm9maWxlc1thcnJheVByb2ZpbGVJbmRleF0gPSBBcnJheVByb2ZpbGUoaSk7
CiAgICAgICAgICAgICBpbnN0cnVjdGlvbnNbaSArIG9wTGVuZ3RoIC0gMl0gPSAmbV9hcnJheVBy
b2ZpbGVzW2FycmF5UHJvZmlsZUluZGV4XTsKQEAgLTIxNjEsMTAgKzIxMjQsNyBAQCB2b2lkIENv
ZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4
ZWN1dGFibGUsIFVubGluawogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfY29uc3RydWN0OiB7
CiAgICAgICAgICAgICBpbnN0cnVjdGlvbnNbaSArIDVdID0gJm1fbGxpbnRDYWxsTGlua0luZm9z
W3BjWzVdLnUub3BlcmFuZF07Ci0gICAgICAgICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSAm
bV92YWx1ZVByb2ZpbGVzW3BjW29wTGVuZ3RoIC0gMV0udS5vcGVyYW5kXTsKLSAgICAgICAgICAg
IEFTU0VSVChwcm9maWxlLT5tX2J5dGVjb2RlT2Zmc2V0ID09IC0xKTsKLSAgICAgICAgICAgIHBy
b2ZpbGUtPm1fYnl0ZWNvZGVPZmZzZXQgPSBpOwotICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zW2kg
KyBvcExlbmd0aCAtIDFdID0gcHJvZmlsZTsKKyAgICAgICAgICAgIGxpbmtWYWx1ZVByb2ZpbGUo
aSwgb3BMZW5ndGgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2Fz
ZSBvcF9nZXRfYXJyYXlfbGVuZ3RoOgpAQCAtMjE5NSwxMCArMjE1NSw3IEBAIHZvaWQgQ29kZUJs
b2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0
YWJsZSwgVW5saW5rCiAgICAgICAgIH0KIAogICAgICAgICBjYXNlIG9wX2dldF9mcm9tX3Njb3Bl
OiB7Ci0gICAgICAgICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSAmbV92YWx1ZVByb2ZpbGVz
W3BjW29wTGVuZ3RoIC0gMV0udS5vcGVyYW5kXTsKLSAgICAgICAgICAgIEFTU0VSVChwcm9maWxl
LT5tX2J5dGVjb2RlT2Zmc2V0ID09IC0xKTsKLSAgICAgICAgICAgIHByb2ZpbGUtPm1fYnl0ZWNv
ZGVPZmZzZXQgPSBpOwotICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zW2kgKyBvcExlbmd0aCAtIDFd
ID0gcHJvZmlsZTsKKyAgICAgICAgICAgIGxpbmtWYWx1ZVByb2ZpbGUoaSwgb3BMZW5ndGgpOwog
CiAgICAgICAgICAgICAvLyBnZXRfZnJvbV9zY29wZSBkc3QsIHNjb3BlLCBpZCwgR2V0UHV0SW5m
bywgU3RydWN0dXJlLCBPcGVyYW5kCiAKQEAgLTIzNTUsMTUgKzIzMTIsNiBAQCB2b2lkIENvZGVC
bG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1
dGFibGUsIFVubGluawogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAotICAgICAgICBj
YXNlIG9wX3NhdmU6IHsKLSAgICAgICAgICAgIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRl
eCA9IHBjWzJdLnUuaW5kZXg7Ci0gICAgICAgICAgICBpbnQgb2Zmc2V0ID0gcGNbM10udS5vcGVy
YW5kOwotICAgICAgICAgICAgaWYgKGxpdmVDYWxsZWVMb2NhbHNJbmRleCA+PSBtZXJnZVBvaW50
Qnl0ZWNvZGVPZmZzZXRzLnNpemUoKSkKLSAgICAgICAgICAgICAgICBtZXJnZVBvaW50Qnl0ZWNv
ZGVPZmZzZXRzLnJlc2l6ZShsaXZlQ2FsbGVlTG9jYWxzSW5kZXggKyAxKTsKLSAgICAgICAgICAg
IG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldHNbbGl2ZUNhbGxlZUxvY2Fsc0luZGV4XSA9IGkgKyBv
ZmZzZXQ7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotCiAgICAgICAgIGRlZmF1bHQ6
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMjM3NSwyMCArMjMyMyw2IEBAIHZv
aWQgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93
bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAKICAgICBtX2luc3RydWN0aW9ucyA9IFdURk1vdmUoaW5z
dHJ1Y3Rpb25zKTsKIAotICAgIC8vIFBlcmZvcm0gYnl0ZWNvZGUgbGl2ZW5lc3MgYW5hbHlzaXMg
dG8gZGV0ZXJtaW5lIHdoaWNoIGxvY2FscyBhcmUgbGl2ZSBhbmQgc2hvdWxkIGJlIHJlc3VtZWQg
d2hlbiBleGVjdXRpbmcgb3BfcmVzdW1lLgotICAgIGlmICh1bmxpbmtlZENvZGVCbG9jay0+cGFy
c2VNb2RlKCkgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JCb2R5TW9kZSkgewotICAgICAg
ICBpZiAoc2l6ZV90IGNvdW50ID0gbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0cy5zaXplKCkpIHsK
LSAgICAgICAgICAgIGNyZWF0ZVJhcmVEYXRhSWZOZWNlc3NhcnkoKTsKLSAgICAgICAgICAgIEJ5
dGVjb2RlTGl2ZW5lc3NBbmFseXNpcyBsaXZlbmVzcyh0aGlzKTsKLSAgICAgICAgICAgIG1fcmFy
ZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQuZ3Jvdyhjb3VudCk7Ci0gICAgICAgICAg
ICBzaXplX3QgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gMDsKLSAgICAgICAgICAgIGZvciAoc2l6
ZV90IGJ5dGVjb2RlT2Zmc2V0IDogbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0cykgewotICAgICAg
ICAgICAgICAgIG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGRbbGl2ZUNhbGxl
ZUxvY2Fsc0luZGV4XSA9IGxpdmVuZXNzLmdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQo
Ynl0ZWNvZGVPZmZzZXQpOwotICAgICAgICAgICAgICAgICsrbGl2ZUNhbGxlZUxvY2Fsc0luZGV4
OwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCiAgICAgLy8gU2V0IG9wdGltaXph
dGlvbiB0aHJlc2hvbGRzIG9ubHkgYWZ0ZXIgbV9pbnN0cnVjdGlvbnMgaXMgaW5pdGlhbGl6ZWQs
IHNpbmNlIHRoZXNlCiAgICAgLy8gcmVseSBvbiB0aGUgaW5zdHJ1Y3Rpb24gY291bnQgKGFuZCBh
cmUgaW4gdGhlb3J5IHBlcm1pdHRlZCB0byBhbHNvIGluc3BlY3QgdGhlCiAgICAgLy8gaW5zdHJ1
Y3Rpb24gc3RyZWFtIHRvIG1vcmUgYWNjdXJhdGUgYXNzZXNzIHRoZSBjb3N0IG9mIHRpZXItdXAp
LgpAQCAtMzI1MywyMSArMzE4Nyw3IEBAIEhhbmRsZXJJbmZvKiBDb2RlQmxvY2s6OmhhbmRsZXJG
b3JJbmRleCh1bnNpZ25lZCBpbmRleCwgUmVxdWlyZWRIYW5kbGVyIHJlcXVpcmVkCiB7CiAgICAg
aWYgKCFtX3JhcmVEYXRhKQogICAgICAgICByZXR1cm4gMDsKLSAgICAKLSAgICBWZWN0b3I8SGFu
ZGxlckluZm8+JiBleGNlcHRpb25IYW5kbGVycyA9IG1fcmFyZURhdGEtPm1fZXhjZXB0aW9uSGFu
ZGxlcnM7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBleGNlcHRpb25IYW5kbGVycy5zaXpl
KCk7ICsraSkgewotICAgICAgICBIYW5kbGVySW5mbyYgaGFuZGxlciA9IGV4Y2VwdGlvbkhhbmRs
ZXJzW2ldOwotICAgICAgICBpZiAoKHJlcXVpcmVkSGFuZGxlciA9PSBSZXF1aXJlZEhhbmRsZXI6
OkNhdGNoSGFuZGxlcikgJiYgIWhhbmRsZXIuaXNDYXRjaEhhbmRsZXIoKSkKLSAgICAgICAgICAg
IGNvbnRpbnVlOwotCi0gICAgICAgIC8vIEhhbmRsZXJzIGFyZSBvcmRlcmVkIGlubmVybW9zdCBm
aXJzdCwgc28gdGhlIGZpcnN0IGhhbmRsZXIgd2UgZW5jb3VudGVyCi0gICAgICAgIC8vIHRoYXQg
Y29udGFpbnMgdGhlIHNvdXJjZSBhZGRyZXNzIGlzIHRoZSBjb3JyZWN0IGhhbmRsZXIgdG8gdXNl
LgotICAgICAgICAvLyBUaGlzIGluZGV4IHVzZWQgaXMgZWl0aGVyIHRoZSBCeXRlY29kZU9mZnNl
dCBvciBhIENhbGxTaXRlSW5kZXguCi0gICAgICAgIGlmIChoYW5kbGVyLnN0YXJ0IDw9IGluZGV4
ICYmIGhhbmRsZXIuZW5kID4gaW5kZXgpCi0gICAgICAgICAgICByZXR1cm4gJmhhbmRsZXI7Ci0g
ICAgfQotCi0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIEhhbmRsZXJJbmZvOjpoYW5kbGVyRm9y
SW5kZXgobV9yYXJlRGF0YS0+bV9leGNlcHRpb25IYW5kbGVycywgaW5kZXgsIHJlcXVpcmVkSGFu
ZGxlcik7CiB9CiAKIENhbGxTaXRlSW5kZXggQ29kZUJsb2NrOjpuZXdFeGNlcHRpb25IYW5kbGlu
Z0NhbGxTaXRlSW5kZXgoQ2FsbFNpdGVJbmRleCBvcmlnaW5hbENhbGxTaXRlKQpAQCAtMzM2Miw3
ICszMjgyLDYgQEAgdm9pZCBDb2RlQmxvY2s6OnNocmlua1RvRml0KFNocmlua01vZGUgc2hyaW5r
TW9kZSkKICAgICAgICAgaWYgKG1fcmFyZURhdGEpIHsKICAgICAgICAgICAgIG1fcmFyZURhdGEt
Pm1fc3dpdGNoSnVtcFRhYmxlcy5zaHJpbmtUb0ZpdCgpOwogICAgICAgICAgICAgbV9yYXJlRGF0
YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzLnNocmlua1RvRml0KCk7Ci0gICAgICAgICAgICBt
X3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkLnNocmlua1RvRml0KCk7CiAgICAg
ICAgIH0KICAgICB9IC8vIGVsc2UgZG9uJ3Qgc2hyaW5rIHRoZXNlLCBiZWNhdXNlIHdlIHdvdWxk
IGhhdmUgYWxyZWFkeSBwb2ludGVkIHBvaW50ZXJzIGludG8gdGhlc2UgdGFibGVzLgogfQpAQCAt
NDM0NCwxNCArNDI2Myw5IEBAIFN0cmluZyBDb2RlQmxvY2s6Om5hbWVGb3JSZWdpc3RlcihWaXJ0
dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVyKQogCiBWYWx1ZVByb2ZpbGUqIENvZGVCbG9jazo6
dmFsdWVQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoaW50IGJ5dGVjb2RlT2Zmc2V0KQogewotICAg
IFZhbHVlUHJvZmlsZSogcmVzdWx0ID0gYmluYXJ5U2VhcmNoPFZhbHVlUHJvZmlsZSwgaW50PigK
LSAgICAgICAgbV92YWx1ZVByb2ZpbGVzLCBtX3ZhbHVlUHJvZmlsZXMuc2l6ZSgpLCBieXRlY29k
ZU9mZnNldCwKLSAgICAgICAgZ2V0VmFsdWVQcm9maWxlQnl0ZWNvZGVPZmZzZXQ8VmFsdWVQcm9m
aWxlPik7Ci0gICAgQVNTRVJUKHJlc3VsdC0+bV9ieXRlY29kZU9mZnNldCAhPSAtMSk7Ci0gICAg
QVNTRVJUKGluc3RydWN0aW9ucygpW2J5dGVjb2RlT2Zmc2V0ICsgb3Bjb2RlTGVuZ3RoKAotICAg
ICAgICBtX3ZtLT5pbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoCi0gICAgICAgICAgICBpbnN0cnVj
dGlvbnMoKVtieXRlY29kZU9mZnNldF0udS5vcGNvZGUpKSAtIDFdLnUucHJvZmlsZSA9PSByZXN1
bHQpOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBtX3ZtLT5p
bnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25zKClbYnl0ZWNvZGVPZmZzZXRdLnUu
b3Bjb2RlKTsKKyAgICB1bnNpZ25lZCBsZW5ndGggPSBvcGNvZGVMZW5ndGgob3Bjb2RlSUQpOwor
ICAgIHJldHVybiBpbnN0cnVjdGlvbnMoKVtieXRlY29kZU9mZnNldCArIGxlbmd0aCAtIDFdLnUu
cHJvZmlsZTsKIH0KIAogdm9pZCBDb2RlQmxvY2s6OnZhbGlkYXRlKCkKQEAgLTQ2ODAsNCArNDU5
NCwxNiBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcE1hdGhJQ1N0YXRzKCkKICNlbmRpZgogfQogCitC
eXRlY29kZUxpdmVuZXNzQW5hbHlzaXMmIENvZGVCbG9jazo6bGl2ZW5lc3NBbmFseXNpc1Nsb3co
KQoreworICAgIHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM+IGFuYWx5
c2lzID0gc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM+KHRoaXMpOwor
ICAgIHsKKyAgICAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIobV9sb2NrKTsKKyAgICAg
ICAgaWYgKCFtX2xpdmVuZXNzQW5hbHlzaXMpCisgICAgICAgICAgICBtX2xpdmVuZXNzQW5hbHlz
aXMgPSBXVEZNb3ZlKGFuYWx5c2lzKTsKKyAgICAgICAgcmV0dXJuICptX2xpdmVuZXNzQW5hbHlz
aXM7CisgICAgfQorfQorCisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCmluZGV4IGIxNjgyYzczNjZlMGMwYmEzNjBiYjhiMTM4
YWFlMDVjMTJmNjU4ZTUuLmUzNDMxYTM3NDMzOGQ3MjVkNzBmZDMxMTNhN2NiOWYzN2I1YTEzMzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKQEAgLTMzLDcg
KzMzLDYgQEAKICNpbmNsdWRlICJBcnJheVByb2ZpbGUuaCIKICNpbmNsdWRlICJCeVZhbEluZm8u
aCIKICNpbmNsdWRlICJCeXRlY29kZUNvbnZlbnRpb25zLmgiCi0jaW5jbHVkZSAiQnl0ZWNvZGVM
aXZlbmVzc0FuYWx5c2lzLmgiCiAjaW5jbHVkZSAiQ2FsbExpbmtJbmZvLmgiCiAjaW5jbHVkZSAi
Q2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQuaCIKICNpbmNsdWRlICJDb2RlQmxvY2tI
YXNoLmgiCkBAIC03OSw2ICs3OCw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCitjbGFzcyBCeXRl
Y29kZUxpdmVuZXNzQW5hbHlzaXM7CiBjbGFzcyBFeGVjU3RhdGU7CiBjbGFzcyBKSVRBZGRHZW5l
cmF0b3I7CiBjbGFzcyBKU01vZHVsZUVudmlyb25tZW50OwpAQCAtMjI2LDEwICsyMjYsNiBAQCBj
bGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAgICAgcmV0dXJuIGluZGV4ID49
IG1fbnVtVmFyczsKICAgICB9CiAKLSAgICBlbnVtIGNsYXNzIFJlcXVpcmVkSGFuZGxlciB7Ci0g
ICAgICAgIENhdGNoSGFuZGxlciwKLSAgICAgICAgQW55SGFuZGxlcgotICAgIH07CiAgICAgSGFu
ZGxlckluZm8qIGhhbmRsZXJGb3JCeXRlY29kZU9mZnNldCh1bnNpZ25lZCBieXRlY29kZU9mZnNl
dCwgUmVxdWlyZWRIYW5kbGVyID0gUmVxdWlyZWRIYW5kbGVyOjpBbnlIYW5kbGVyKTsKICAgICBI
YW5kbGVySW5mbyogaGFuZGxlckZvckluZGV4KHVuc2lnbmVkLCBSZXF1aXJlZEhhbmRsZXIgPSBS
ZXF1aXJlZEhhbmRsZXI6OkFueUhhbmRsZXIpOwogICAgIHZvaWQgcmVtb3ZlRXhjZXB0aW9uSGFu
ZGxlckZvckNhbGxTaXRlKENhbGxTaXRlSW5kZXgpOwpAQCAtMzA2LDYgKzMwMiw5IEBAIGNsYXNz
IENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
SW5zdHJ1Y3Rpb24qPihyZXR1cm5BZGRyZXNzKSAtIGluc3RydWN0aW9ucygpLmJlZ2luKCk7CiAg
ICAgfQogCisgICAgdHlwZWRlZiBKU0M6Okluc3RydWN0aW9uIEluc3RydWN0aW9uOworICAgIHR5
cGVkZWYgUmVmQ291bnRlZEFycmF5PEluc3RydWN0aW9uPiYgVW5wYWNrZWRJbnN0cnVjdGlvbnM7
CisKICAgICB1bnNpZ25lZCBudW1iZXJPZkluc3RydWN0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1f
aW5zdHJ1Y3Rpb25zLnNpemUoKTsgfQogICAgIFJlZkNvdW50ZWRBcnJheTxJbnN0cnVjdGlvbj4m
IGluc3RydWN0aW9ucygpIHsgcmV0dXJuIG1faW5zdHJ1Y3Rpb25zOyB9CiAgICAgY29uc3QgUmVm
Q291bnRlZEFycmF5PEluc3RydWN0aW9uPiYgaW5zdHJ1Y3Rpb25zKCkgY29uc3QgeyByZXR1cm4g
bV9pbnN0cnVjdGlvbnM7IH0KQEAgLTU0OCw3ICs1NDcsNyBAQCBjbGFzcyBDb2RlQmxvY2sgOiBw
dWJsaWMgSlNDZWxsIHsKICAgICB9CiAKICAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4mIGNvbnN0
YW50UmVnaXN0ZXIoaW50IGluZGV4KSB7IHJldHVybiBtX2NvbnN0YW50UmVnaXN0ZXJzW2luZGV4
IC0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXhdOyB9Ci0gICAgQUxXQVlTX0lOTElORSBib29s
IGlzQ29uc3RhbnRSZWdpc3RlckluZGV4KGludCBpbmRleCkgY29uc3QgeyByZXR1cm4gaW5kZXgg
Pj0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXg7IH0KKyAgICBzdGF0aWMgQUxXQVlTX0lOTElO
RSBib29sIGlzQ29uc3RhbnRSZWdpc3RlckluZGV4KGludCBpbmRleCkgeyByZXR1cm4gaW5kZXgg
Pj0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXg7IH0KICAgICBBTFdBWVNfSU5MSU5FIEpTVmFs
dWUgZ2V0Q29uc3RhbnQoaW50IGluZGV4KSBjb25zdCB7IHJldHVybiBtX2NvbnN0YW50UmVnaXN0
ZXJzW2luZGV4IC0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXhdLmdldCgpOyB9CiAgICAgQUxX
QVlTX0lOTElORSBTb3VyY2VDb2RlUmVwcmVzZW50YXRpb24gY29uc3RhbnRTb3VyY2VDb2RlUmVw
cmVzZW50YXRpb24oaW50IGluZGV4KSBjb25zdCB7IHJldHVybiBtX2NvbnN0YW50c1NvdXJjZUNv
ZGVSZXByZXNlbnRhdGlvbltpbmRleCAtIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4XTsgfQog
CkBAIC01OTQsMTQgKzU5Myw3IEBAIGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewog
ICAgICAgICAgICAgaWYgKCEhbV9saXZlbmVzc0FuYWx5c2lzKQogICAgICAgICAgICAgICAgIHJl
dHVybiAqbV9saXZlbmVzc0FuYWx5c2lzOwogICAgICAgICB9Ci0gICAgICAgIHN0ZDo6dW5pcXVl
X3B0cjxCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM+IGFuYWx5c2lzID0KLSAgICAgICAgICAgIHN0
ZDo6bWFrZV91bmlxdWU8Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzPih0aGlzKTsKLSAgICAgICAg
ewotICAgICAgICAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIobV9sb2NrKTsKLSAgICAg
ICAgICAgIGlmICghbV9saXZlbmVzc0FuYWx5c2lzKQotICAgICAgICAgICAgICAgIG1fbGl2ZW5l
c3NBbmFseXNpcyA9IFdURk1vdmUoYW5hbHlzaXMpOwotICAgICAgICAgICAgcmV0dXJuICptX2xp
dmVuZXNzQW5hbHlzaXM7Ci0gICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGxpdmVuZXNzQW5hbHlz
aXNTbG93KCk7CiAgICAgfQogICAgIAogICAgIHZvaWQgdmFsaWRhdGUoKTsKQEAgLTYyMiwxOCAr
NjE0LDYgQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgU3RyaW5nSnVt
cFRhYmxlJiBhZGRTdHJpbmdTd2l0Y2hKdW1wVGFibGUoKSB7IGNyZWF0ZVJhcmVEYXRhSWZOZWNl
c3NhcnkoKTsgbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzLmFwcGVuZChTdHJp
bmdKdW1wVGFibGUoKSk7IHJldHVybiBtX3JhcmVEYXRhLT5tX3N0cmluZ1N3aXRjaEp1bXBUYWJs
ZXMubGFzdCgpOyB9CiAgICAgU3RyaW5nSnVtcFRhYmxlJiBzdHJpbmdTd2l0Y2hKdW1wVGFibGUo
aW50IHRhYmxlSW5kZXgpIHsgUkVMRUFTRV9BU1NFUlQobV9yYXJlRGF0YSk7IHJldHVybiBtX3Jh
cmVEYXRhLT5tX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXNbdGFibGVJbmRleF07IH0KIAotICAgIC8v
IExpdmUgY2FsbGVlIHJlZ2lzdGVycyBhdCB5aWVsZCBwb2ludHMuCi0gICAgY29uc3QgRmFzdEJp
dFZlY3RvciYgbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQodW5zaWduZWQgaW5kZXgpIGNvbnN0Ci0g
ICAgewotICAgICAgICBSRUxFQVNFX0FTU0VSVChtX3JhcmVEYXRhKTsKLSAgICAgICAgcmV0dXJu
IG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGRbaW5kZXhdOwotICAgIH0KLSAg
ICBGYXN0Qml0VmVjdG9yJiBsaXZlQ2FsbGVlTG9jYWxzQXRZaWVsZCh1bnNpZ25lZCBpbmRleCkK
LSAgICB7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fcmFyZURhdGEpOwotICAgICAgICByZXR1
cm4gbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZFtpbmRleF07Ci0gICAgfQot
CiAgICAgRXZhbENvZGVDYWNoZSYgZXZhbENvZGVDYWNoZSgpIHsgY3JlYXRlUmFyZURhdGFJZk5l
Y2Vzc2FyeSgpOyByZXR1cm4gbV9yYXJlRGF0YS0+bV9ldmFsQ29kZUNhY2hlOyB9CiAKICAgICBl
bnVtIFNocmlua01vZGUgewpAQCAtODg4LDggKzg2OCw2IEBAIGNsYXNzIENvZGVCbG9jayA6IHB1
YmxpYyBKU0NlbGwgewogICAgICAgICBWZWN0b3I8U2ltcGxlSnVtcFRhYmxlPiBtX3N3aXRjaEp1
bXBUYWJsZXM7CiAgICAgICAgIFZlY3RvcjxTdHJpbmdKdW1wVGFibGU+IG1fc3RyaW5nU3dpdGNo
SnVtcFRhYmxlczsKIAotICAgICAgICBWZWN0b3I8RmFzdEJpdFZlY3Rvcj4gbV9saXZlQ2FsbGVl
TG9jYWxzQXRZaWVsZDsKLQogICAgICAgICBFdmFsQ29kZUNhY2hlIG1fZXZhbENvZGVDYWNoZTsK
ICAgICB9OwogCkBAIC05MjQsNiArOTAyLDggQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpT
Q2VsbCB7CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIENvZGVCbG9ja1NldDsKKworICAg
IEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcyYgbGl2ZW5lc3NBbmFseXNpc1Nsb3coKTsKICAgICAK
ICAgICBDb2RlQmxvY2sqIHNwZWNpYWxPU1JFbnRyeUJsb2NrT3JOdWxsKCk7CiAgICAgCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSGFuZGxlckluZm8uaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9IYW5kbGVySW5mby5oCmluZGV4IGFjZGRhMDhl
ZDE0Y2JmOWYwOTcxMjc1MDQwNWE0MTc0MWY3NmEyMTMuLjdiMTA4YWNlOTM3MjhhOGQ1ZGY4ZWIx
NzNmYzBiMGE2MWJhZWQ2M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9IYW5kbGVySW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9I
YW5kbGVySW5mby5oCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIEhhbmRsZXJJbmZvX2gKIAog
I2luY2x1ZGUgIkNvZGVMb2NhdGlvbi5oIgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFt
ZXNwYWNlIEpTQyB7CiAKQEAgLTM3LDYgKzM4LDExIEBAIGVudW0gY2xhc3MgSGFuZGxlclR5cGUg
ewogICAgIFN5bnRoZXNpemVkRmluYWxseSA9IDMKIH07CiAKK2VudW0gY2xhc3MgUmVxdWlyZWRI
YW5kbGVyIHsKKyAgICBDYXRjaEhhbmRsZXIsCisgICAgQW55SGFuZGxlcgorfTsKKwogc3RydWN0
IEhhbmRsZXJJbmZvQmFzZSB7CiAgICAgSGFuZGxlclR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJu
IHN0YXRpY19jYXN0PEhhbmRsZXJUeXBlPih0eXBlQml0cyk7IH0KICAgICB2b2lkIHNldFR5cGUo
SGFuZGxlclR5cGUgdHlwZSkgeyB0eXBlQml0cyA9IHN0YXRpY19jYXN0PHVpbnQzMl90Pih0eXBl
KTsgfQpAQCAtNTgsNiArNjQsMjMgQEAgc3RydWN0IEhhbmRsZXJJbmZvQmFzZSB7CiAKICAgICBi
b29sIGlzQ2F0Y2hIYW5kbGVyKCkgY29uc3QgeyByZXR1cm4gdHlwZSgpID09IEhhbmRsZXJUeXBl
OjpDYXRjaDsgfQogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgSGFuZGxlcj4KKyAgICBzdGF0aWMg
SGFuZGxlciogaGFuZGxlckZvckluZGV4KFZlY3RvcjxIYW5kbGVyPiYgZXhlcHRpb25IYW5kbGVy
cywgdW5zaWduZWQgaW5kZXgsIFJlcXVpcmVkSGFuZGxlciByZXF1aXJlZEhhbmRsZXIpCisgICAg
eworICAgICAgICBmb3IgKEhhbmRsZXImIGhhbmRsZXIgOiBleGVwdGlvbkhhbmRsZXJzKSB7Cisg
ICAgICAgICAgICBpZiAoKHJlcXVpcmVkSGFuZGxlciA9PSBSZXF1aXJlZEhhbmRsZXI6OkNhdGNo
SGFuZGxlcikgJiYgIWhhbmRsZXIuaXNDYXRjaEhhbmRsZXIoKSkKKyAgICAgICAgICAgICAgICBj
b250aW51ZTsKKworICAgICAgICAgICAgLy8gSGFuZGxlcnMgYXJlIG9yZGVyZWQgaW5uZXJtb3N0
IGZpcnN0LCBzbyB0aGUgZmlyc3QgaGFuZGxlciB3ZSBlbmNvdW50ZXIKKyAgICAgICAgICAgIC8v
IHRoYXQgY29udGFpbnMgdGhlIHNvdXJjZSBhZGRyZXNzIGlzIHRoZSBjb3JyZWN0IGhhbmRsZXIg
dG8gdXNlLgorICAgICAgICAgICAgLy8gVGhpcyBpbmRleCB1c2VkIGlzIGVpdGhlciB0aGUgQnl0
ZWNvZGVPZmZzZXQgb3IgYSBDYWxsU2l0ZUluZGV4LgorICAgICAgICAgICAgaWYgKGhhbmRsZXIu
c3RhcnQgPD0gaW5kZXggJiYgaGFuZGxlci5lbmQgPiBpbmRleCkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gJmhhbmRsZXI7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICB9CisKICAgICB1aW50MzJfdCBzdGFydDsKICAgICB1aW50MzJfdCBlbmQ7CiAgICAgdWludDMy
X3QgdGFyZ2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1By
ZWNpc2VKdW1wVGFyZ2V0cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJl
Y2lzZUp1bXBUYXJnZXRzLmNwcAppbmRleCBkZmNiNzEzOWMwMmEwNDdjYjEzNWJmNWQxNDhiNTRl
ZjhhZjdiM2Q3Li5jYWI5ZmJkYzRlODM5ZmJiODlhNjkzMzU2MjIyZGIwMGUxMDIyM2NhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRz
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJn
ZXRzLmNwcApAQCAtMjYsMTUgKzI2LDE1IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiUHJlY2lzZUp1bXBUYXJnZXRzLmgiCiAKLSNpbmNsdWRlICJJbnRlcnByZXRlci5oIgorI2lu
Y2x1ZGUgIkludGVycHJldGVySW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKIAog
bmFtZXNwYWNlIEpTQyB7CiAKLXRlbXBsYXRlIDxzaXplX3QgdmVjdG9yU2l6ZT4KLXN0YXRpYyB2
b2lkIGdldEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IEludGVycHJldGVyKiBpbnRlcnByZXRlciwgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2lu
LCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgVmVjdG9yPHVuc2lnbmVkLCB2ZWN0b3JTaXplPiYg
b3V0KQordGVtcGxhdGUgPHNpemVfdCB2ZWN0b3JTaXplLCB0eXBlbmFtZSBCbG9jaywgdHlwZW5h
bWUgSW5zdHJ1Y3Rpb24+CitzdGF0aWMgdm9pZCBnZXRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zm
c2V0KEJsb2NrKiBjb2RlQmxvY2ssIEludGVycHJldGVyKiBpbnRlcnByZXRlciwgSW5zdHJ1Y3Rp
b24qIGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgVmVjdG9yPHVu
c2lnbmVkLCB2ZWN0b3JTaXplPiYgb3V0KQogewotICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW50
ZXJwcmV0ZXItPmdldE9wY29kZUlEKGluc3RydWN0aW9uc0JlZ2luW2J5dGVjb2RlT2Zmc2V0XS51
Lm9wY29kZSk7CisgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnRlcnByZXRlci0+Z2V0T3Bjb2Rl
SUQoaW5zdHJ1Y3Rpb25zQmVnaW5bYnl0ZWNvZGVPZmZzZXRdKTsKICAgICBJbnN0cnVjdGlvbiog
Y3VycmVudCA9IGluc3RydWN0aW9uc0JlZ2luICsgYnl0ZWNvZGVPZmZzZXQ7CiAgICAgc3dpdGNo
IChvcGNvZGVJRCkgewogICAgIGNhc2Ugb3Bfam1wOgpAQCAtNTUsMjEgKzU1LDI1IEBAIHN0YXRp
YyB2b2lkIGdldEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssIEludGVycHJldGVyKiBpCiAgICAgY2FzZSBvcF9qbmxlc3NlcToKICAgICBjYXNlIG9wX2pu
Z3JlYXRlcjoKICAgICBjYXNlIG9wX2puZ3JlYXRlcmVxOgotICAgIGNhc2Ugb3Bfc2F2ZTogLy8g
VGhlIGp1bXAgb2Ygb3Bfc2F2ZSBpcyBwdXJlbHkgZm9yIGNhbGN1bGF0aW5nIGxpdmVuZXNzLgog
ICAgICAgICBvdXQuYXBwZW5kKGJ5dGVjb2RlT2Zmc2V0ICsgY3VycmVudFszXS51Lm9wZXJhbmQp
OwogICAgICAgICBicmVhazsKKyAgICBjYXNlIG9wX3NhdmU6IHsKKyAgICAgICAgLy8gVGhlIGp1
bXAgb2Ygb3Bfc2F2ZSB1bmRlciBFeHRyYWN0R2VuZXJhdG9yTGl2ZUNhbGxlZUxvY2FscyBtb2Rl
IGlzIHB1cmVseSBmb3IgY2FsY3VsYXRpbmcgbGl2ZW5lc3MuCisgICAgICAgIG91dC5hcHBlbmQo
Ynl0ZWNvZGVPZmZzZXQgKyBjdXJyZW50WzNdLnUub3BlcmFuZCk7CisgICAgICAgIGJyZWFrOwor
ICAgIH0KICAgICBjYXNlIG9wX3N3aXRjaF9pbW06CiAgICAgY2FzZSBvcF9zd2l0Y2hfY2hhcjog
ewotICAgICAgICBTaW1wbGVKdW1wVGFibGUmIHRhYmxlID0gY29kZUJsb2NrLT5zd2l0Y2hKdW1w
VGFibGUoY3VycmVudFsxXS51Lm9wZXJhbmQpOworICAgICAgICBhdXRvJiB0YWJsZSA9IGNvZGVC
bG9jay0+c3dpdGNoSnVtcFRhYmxlKGN1cnJlbnRbMV0udS5vcGVyYW5kKTsKICAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gdGFibGUuYnJhbmNoT2Zmc2V0cy5zaXplKCk7IGktLTspCiAgICAgICAg
ICAgICBvdXQuYXBwZW5kKGJ5dGVjb2RlT2Zmc2V0ICsgdGFibGUuYnJhbmNoT2Zmc2V0c1tpXSk7
CiAgICAgICAgIG91dC5hcHBlbmQoYnl0ZWNvZGVPZmZzZXQgKyBjdXJyZW50WzJdLnUub3BlcmFu
ZCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIG9wX3N3aXRjaF9zdHJpbmc6IHsK
LSAgICAgICAgU3RyaW5nSnVtcFRhYmxlJiB0YWJsZSA9IGNvZGVCbG9jay0+c3RyaW5nU3dpdGNo
SnVtcFRhYmxlKGN1cnJlbnRbMV0udS5vcGVyYW5kKTsKLSAgICAgICAgU3RyaW5nSnVtcFRhYmxl
OjpTdHJpbmdPZmZzZXRUYWJsZTo6aXRlcmF0b3IgaXRlciA9IHRhYmxlLm9mZnNldFRhYmxlLmJl
Z2luKCk7Ci0gICAgICAgIFN0cmluZ0p1bXBUYWJsZTo6U3RyaW5nT2Zmc2V0VGFibGU6Oml0ZXJh
dG9yIGVuZCA9IHRhYmxlLm9mZnNldFRhYmxlLmVuZCgpOworICAgICAgICBhdXRvJiB0YWJsZSA9
IGNvZGVCbG9jay0+c3RyaW5nU3dpdGNoSnVtcFRhYmxlKGN1cnJlbnRbMV0udS5vcGVyYW5kKTsK
KyAgICAgICAgYXV0byBpdGVyID0gdGFibGUub2Zmc2V0VGFibGUuYmVnaW4oKTsKKyAgICAgICAg
YXV0byBlbmQgPSB0YWJsZS5vZmZzZXRUYWJsZS5lbmQoKTsKICAgICAgICAgZm9yICg7IGl0ZXIg
IT0gZW5kOyArK2l0ZXIpCiAgICAgICAgICAgICBvdXQuYXBwZW5kKGJ5dGVjb2RlT2Zmc2V0ICsg
aXRlci0+dmFsdWUuYnJhbmNoT2Zmc2V0KTsKICAgICAgICAgb3V0LmFwcGVuZChieXRlY29kZU9m
ZnNldCArIGN1cnJlbnRbMl0udS5vcGVyYW5kKTsKQEAgLTgzLDEzICs4NywxOSBAQCBzdGF0aWMg
dm9pZCBnZXRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2Nr
LCBJbnRlcnByZXRlciogaQogICAgIH0KIH0KIAotdm9pZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJn
ZXRzKENvZGVCbG9jayogY29kZUJsb2NrLCBWZWN0b3I8dW5zaWduZWQsIDMyPiYgb3V0KQorZW51
bSBjbGFzcyBDb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzTW9kZSB7CisgICAgRm9sbG93Q29kZUJs
b2NrQ2xhaW0sCisgICAgRm9yY2VDb21wdXRlLAorfTsKKwordGVtcGxhdGU8Q29tcHV0ZVByZWNp
c2VKdW1wVGFyZ2V0c01vZGUgTW9kZSwgdHlwZW5hbWUgQmxvY2ssIHR5cGVuYW1lIEluc3RydWN0
aW9uLCBzaXplX3QgdmVjdG9yU2l6ZT4KK3ZvaWQgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0c0lu
dGVybmFsKEJsb2NrKiBjb2RlQmxvY2ssIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwg
dW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCwgVmVjdG9yPHVuc2lnbmVkLCB2ZWN0b3JTaXplPiYg
b3V0KQogewogICAgIEFTU0VSVChvdXQuaXNFbXB0eSgpKTsKICAgICAKICAgICAvLyBXZSB3aWxs
IGRlcml2ZSBhIHN1cGVyc2V0IG9mIHRoZSBqdW1wIHRhcmdldHMgdGhhdCB0aGUgY29kZSBibG9j
ayB0aGlua3MgaXQgaGFzLgogICAgIC8vIFNvLCBpZiB0aGUgY29kZSBibG9jayBjbGFpbXMgdGhl
cmUgYXJlIG5vbmUsIHRoZW4gd2UgYXJlIGRvbmUuCi0gICAgaWYgKCFjb2RlQmxvY2stPm51bWJl
ck9mSnVtcFRhcmdldHMoKSkKKyAgICBpZiAoTW9kZSA9PSBDb21wdXRlUHJlY2lzZUp1bXBUYXJn
ZXRzTW9kZTo6Rm9sbG93Q29kZUJsb2NrQ2xhaW0gJiYgIWNvZGVCbG9jay0+bnVtYmVyT2ZKdW1w
VGFyZ2V0cygpKQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgZm9yICh1bnNpZ25lZCBpID0g
Y29kZUJsb2NrLT5udW1iZXJPZkV4Y2VwdGlvbkhhbmRsZXJzKCk7IGktLTspIHsKQEAgLTk5LDEw
ICsxMDksOCBAQCB2b2lkIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMoQ29kZUJsb2NrKiBjb2Rl
QmxvY2ssIFZlY3Rvcjx1bnNpZ25lZCwgMzI+JiBvdXQpCiAgICAgfQogCiAgICAgSW50ZXJwcmV0
ZXIqIGludGVycHJldGVyID0gY29kZUJsb2NrLT52bSgpLT5pbnRlcnByZXRlcjsKLSAgICBJbnN0
cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4gPSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJl
Z2luKCk7Ci0gICAgdW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCA9IGNvZGVCbG9jay0+aW5zdHJ1
Y3Rpb25zKCkuc2l6ZSgpOwogICAgIGZvciAodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQgPSAwOyBi
eXRlY29kZU9mZnNldCA8IGluc3RydWN0aW9uQ291bnQ7KSB7Ci0gICAgICAgIE9wY29kZUlEIG9w
Y29kZUlEID0gaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGluc3RydWN0aW9uc0JlZ2luW2J5dGVj
b2RlT2Zmc2V0XS51Lm9wY29kZSk7CisgICAgICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW50ZXJw
cmV0ZXItPmdldE9wY29kZUlEKGluc3RydWN0aW9uc0JlZ2luW2J5dGVjb2RlT2Zmc2V0XSk7CiAg
ICAgICAgIGdldEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoY29kZUJsb2NrLCBpbnRlcnBy
ZXRlciwgaW5zdHJ1Y3Rpb25zQmVnaW4sIGJ5dGVjb2RlT2Zmc2V0LCBvdXQpOwogICAgICAgICBi
eXRlY29kZU9mZnNldCArPSBvcGNvZGVMZW5ndGhzW29wY29kZUlEXTsKICAgICB9CkBAIC0xMjQs
MTEgKzEzMiwzNCBAQCB2b2lkIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMoQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIFZlY3Rvcjx1bnNpZ25lZCwgMzI+JiBvdXQpCiAgICAgb3V0LnNocmlua1RvRml0
KCk7CiB9CiAKLXZvaWQgZmluZEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBWZWN0b3I8dW5zaWduZWQsIDE+
JiBvdXQpCit2b2lkIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMoQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssIFZlY3Rvcjx1bnNpZ25lZCwgMzI+JiBvdXQpCiB7Ci0gICAgSW50ZXJwcmV0ZXIqIGludGVy
cHJldGVyID0gY29kZUJsb2NrLT52bSgpLT5pbnRlcnByZXRlcjsKLSAgICBJbnN0cnVjdGlvbiog
aW5zdHJ1Y3Rpb25zQmVnaW4gPSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCk7Ci0g
ICAgZ2V0SnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChjb2RlQmxvY2ssIGludGVycHJldGVy
LCBpbnN0cnVjdGlvbnNCZWdpbiwgYnl0ZWNvZGVPZmZzZXQsIG91dCk7CisgICAgY29tcHV0ZVBy
ZWNpc2VKdW1wVGFyZ2V0c0ludGVybmFsPENvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHNNb2RlOjpG
b2xsb3dDb2RlQmxvY2tDbGFpbT4oY29kZUJsb2NrLCBjb2RlQmxvY2stPmluc3RydWN0aW9ucygp
LmJlZ2luKCksIGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpLCBvdXQpOworfQorCit2
b2lkIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEluc3Ry
dWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCwgVmVj
dG9yPHVuc2lnbmVkLCAzMj4mIG91dCkKK3sKKyAgICBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRz
SW50ZXJuYWw8Q29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0c01vZGU6OkZvbGxvd0NvZGVCbG9ja0Ns
YWltPihjb2RlQmxvY2ssIGluc3RydWN0aW9uc0JlZ2luLCBpbnN0cnVjdGlvbkNvdW50LCBvdXQp
OworfQorCit2b2lkIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMoVW5saW5rZWRDb2RlQmxvY2sq
IGNvZGVCbG9jaywgVW5saW5rZWRJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2ln
bmVkIGluc3RydWN0aW9uQ291bnQsIFZlY3Rvcjx1bnNpZ25lZCwgMzI+JiBvdXQpCit7CisgICAg
Y29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0c0ludGVybmFsPENvbXB1dGVQcmVjaXNlSnVtcFRhcmdl
dHNNb2RlOjpGb2xsb3dDb2RlQmxvY2tDbGFpbT4oY29kZUJsb2NrLCBpbnN0cnVjdGlvbnNCZWdp
biwgaW5zdHJ1Y3Rpb25Db3VudCwgb3V0KTsKK30KKwordm9pZCByZWNvbXB1dGVQcmVjaXNlSnVt
cFRhcmdldHMoVW5saW5rZWRDb2RlQmxvY2sqIGNvZGVCbG9jaywgVW5saW5rZWRJbnN0cnVjdGlv
biogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQsIFZlY3Rvcjx1
bnNpZ25lZD4mIG91dCkKK3sKKyAgICBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzSW50ZXJuYWw8
Q29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0c01vZGU6OkZvcmNlQ29tcHV0ZT4oY29kZUJsb2NrLCBp
bnN0cnVjdGlvbnNCZWdpbiwgaW5zdHJ1Y3Rpb25Db3VudCwgb3V0KTsKK30KKwordm9pZCBmaW5k
SnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgSW5zdHJ1
Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgVmVjdG9y
PHVuc2lnbmVkLCAxPiYgb3V0KQoreworICAgIGdldEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZz
ZXQoY29kZUJsb2NrLCBjb2RlQmxvY2stPnZtKCktPmludGVycHJldGVyLCBpbnN0cnVjdGlvbnNC
ZWdpbiwgYnl0ZWNvZGVPZmZzZXQsIG91dCk7Cit9CisKK3ZvaWQgZmluZEp1bXBUYXJnZXRzRm9y
Qnl0ZWNvZGVPZmZzZXQoVW5saW5rZWRDb2RlQmxvY2sqIGNvZGVCbG9jaywgVW5saW5rZWRJbnN0
cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBWZWN0
b3I8dW5zaWduZWQsIDE+JiBvdXQpCit7CisgICAgZ2V0SnVtcFRhcmdldHNGb3JCeXRlY29kZU9m
ZnNldChjb2RlQmxvY2ssIGNvZGVCbG9jay0+dm0oKS0+aW50ZXJwcmV0ZXIsIGluc3RydWN0aW9u
c0JlZ2luLCBieXRlY29kZU9mZnNldCwgb3V0KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJn
ZXRzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRz
LmgKaW5kZXggODUyNDEzZDc3Yjc5ODk4NGIyN2NlZjBlZDYyYmM5NGM2ODllMjEyYy4uZGI5YmQz
ODNiOGFjNDU1N2QzMjY3MTdiNzJkNGIwZjUwYjFkMTgzOCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHMuaApAQCAtMzAsMTAgKzMw
LDE4IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCitjbGFzcyBVbmxpbmtlZENvZGVCbG9jazsKK3N0
cnVjdCBVbmxpbmtlZEluc3RydWN0aW9uOworCiAvLyBSZXR1cm4gYSBzb3J0ZWQgbGlzdCBvZiBi
eXRlY29kZSBpbmRleCB0aGF0IGFyZSB0aGUgZGVzdGluYXRpb24gb2YgYSBqdW1wLgogdm9pZCBj
b21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKENvZGVCbG9jayosIFZlY3Rvcjx1bnNpZ25lZCwgMzI+
JiBvdXQpOwordm9pZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKENvZGVCbG9jayosIEluc3Ry
dWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCwgVmVj
dG9yPHVuc2lnbmVkLCAzMj4mIG91dCk7Cit2b2lkIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMo
VW5saW5rZWRDb2RlQmxvY2sqLCBVbmxpbmtlZEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdp
biwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCwgVmVjdG9yPHVuc2lnbmVkLCAzMj4mIG91dCk7
CisKK3ZvaWQgcmVjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKFVubGlua2VkQ29kZUJsb2NrKiwg
VW5saW5rZWRJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGluc3RydWN0
aW9uQ291bnQsIFZlY3Rvcjx1bnNpZ25lZD4mIG91dCk7CiAKLXZvaWQgZmluZEp1bXBUYXJnZXRz
Rm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIFZl
Y3Rvcjx1bnNpZ25lZCwgMT4mIG91dCk7Cit2b2lkIGZpbmRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2Rl
T2Zmc2V0KENvZGVCbG9jayosIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWdu
ZWQgYnl0ZWNvZGVPZmZzZXQsIFZlY3Rvcjx1bnNpZ25lZCwgMT4mIG91dCk7Cit2b2lkIGZpbmRK
dW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KFVubGlua2VkQ29kZUJsb2NrKiwgVW5saW5rZWRJ
bnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBW
ZWN0b3I8dW5zaWduZWQsIDE+JiBvdXQpOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAK
aW5kZXggMTk1Y2Y2MGM5N2IzZWRjNmQxYzY4M2JjOGFkOGNhNDNkYzA3NWZmYS4uNDExMjEwMmIx
Y2E2NGNlNzQ5MjdiYjY4ZDZiN2FmYWFjYjBlNDljYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCkBAIC0yOCw2ICsyOCw3
IEBACiAjaW5jbHVkZSAiVW5saW5rZWRDb2RlQmxvY2suaCIKIAogI2luY2x1ZGUgIkJ5dGVjb2Rl
R2VuZXJhdG9yLmgiCisjaW5jbHVkZSAiQnl0ZWNvZGVSZXdyaXRlci5oIgogI2luY2x1ZGUgIkNs
YXNzSW5mby5oIgogI2luY2x1ZGUgIkNvZGVDYWNoZS5oIgogI2luY2x1ZGUgIkV4ZWN1dGFibGUu
aCIKQEAgLTM2LDYgKzM3LDcgQEAKICNpbmNsdWRlICJKU1N0cmluZy5oIgogI2luY2x1ZGUgIkpT
Q0lubGluZXMuaCIKICNpbmNsdWRlICJQYXJzZXIuaCIKKyNpbmNsdWRlICJQcmVjaXNlSnVtcFRh
cmdldHMuaCIKICNpbmNsdWRlICJTb3VyY2VQcm92aWRlci5oIgogI2luY2x1ZGUgIlN0cnVjdHVy
ZS5oIgogI2luY2x1ZGUgIlN5bWJvbFRhYmxlLmgiCkBAIC0zNjIsNSArMzY0LDExMSBAQCBjb25z
dCBVbmxpbmtlZEluc3RydWN0aW9uU3RyZWFtJiBVbmxpbmtlZENvZGVCbG9jazo6aW5zdHJ1Y3Rp
b25zKCkgY29uc3QKICAgICByZXR1cm4gKm1fdW5saW5rZWRJbnN0cnVjdGlvbnM7CiB9CiAKK1Vu
bGlua2VkSGFuZGxlckluZm8qIFVubGlua2VkQ29kZUJsb2NrOjpoYW5kbGVyRm9yQnl0ZWNvZGVP
ZmZzZXQodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIFJlcXVpcmVkSGFuZGxlciByZXF1aXJlZEhh
bmRsZXIpCit7CisgICAgcmV0dXJuIGhhbmRsZXJGb3JJbmRleChieXRlY29kZU9mZnNldCwgcmVx
dWlyZWRIYW5kbGVyKTsKK30KKworVW5saW5rZWRIYW5kbGVySW5mbyogVW5saW5rZWRDb2RlQmxv
Y2s6OmhhbmRsZXJGb3JJbmRleCh1bnNpZ25lZCBpbmRleCwgUmVxdWlyZWRIYW5kbGVyIHJlcXVp
cmVkSGFuZGxlcikKK3sKKyAgICBpZiAoIW1fcmFyZURhdGEpCisgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgIHJldHVybiBVbmxpbmtlZEhhbmRsZXJJbmZvOjpoYW5kbGVyRm9ySW5kZXgobV9y
YXJlRGF0YS0+bV9leGNlcHRpb25IYW5kbGVycywgaW5kZXgsIHJlcXVpcmVkSGFuZGxlcik7Cit9
CisKK3ZvaWQgVW5saW5rZWRDb2RlQmxvY2s6OmFwcGx5TW9kaWZpY2F0aW9uKEJ5dGVjb2RlUmV3
cml0ZXImIGluc2VydGlvblNldCkKK3sKKyAgICAvLyBCZWZvcmUgYXBwbHlpbmcgdGhlIGNoYW5n
ZXMsIHdlIGFkanVzdCB0aGUganVtcHMgYmFzZWQgb24gdGhlIG9yaWdpbmFsIGJ5dGVjb2RlIG9m
ZnNldCwgdGhlIG9mZnNldCB0byB0aGUganVtcCB0YXJnZXQsIGFuZAorICAgIC8vIHRoZSBpbnNl
cnRpb24gaW5mb3JtYXRpb24uCisKKyAgICBCeXRlY29kZUdyYXBoPFVubGlua2VkQ29kZUJsb2Nr
PiYgZ3JhcGggPSBpbnNlcnRpb25TZXQuZ3JhcGgoKTsKKyAgICBVbmxpbmtlZEluc3RydWN0aW9u
KiBpbnN0cnVjdGlvbnNCZWdpbiA9IGdyYXBoLmluc3RydWN0aW9ucygpLmJlZ2luKCk7CisgICAg
Zm9yIChpbnQgYnl0ZWNvZGVPZmZzZXQgPSAwLCBpbnN0cnVjdGlvbkNvdW50ID0gZ3JhcGguaW5z
dHJ1Y3Rpb25zKCkuc2l6ZSgpOyBieXRlY29kZU9mZnNldCA8IGluc3RydWN0aW9uQ291bnQ7KSB7
CisgICAgICAgIFVubGlua2VkSW5zdHJ1Y3Rpb24qIGN1cnJlbnQgPSBpbnN0cnVjdGlvbnNCZWdp
biArIGJ5dGVjb2RlT2Zmc2V0OworICAgICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGN1cnJlbnRb
MF0udS5vcGNvZGU7CisKKyAgICAgICAgc3dpdGNoIChvcGNvZGVJRCkgeworICAgICAgICBjYXNl
IG9wX2ptcDoKKyAgICAgICAgICAgIGN1cnJlbnRbMV0udS5vcGVyYW5kID0gaW5zZXJ0aW9uU2V0
LmFkanVzdE9mZnNldChieXRlY29kZU9mZnNldCwgYnl0ZWNvZGVPZmZzZXQgKyBjdXJyZW50WzFd
LnUub3BlcmFuZCk7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIG9wX2p0cnVl
OgorICAgICAgICBjYXNlIG9wX2pmYWxzZToKKyAgICAgICAgY2FzZSBvcF9qZXFfbnVsbDoKKyAg
ICAgICAgY2FzZSBvcF9qbmVxX251bGw6CisgICAgICAgICAgICBjdXJyZW50WzJdLnUub3BlcmFu
ZCA9IGluc2VydGlvblNldC5hZGp1c3RPZmZzZXQoYnl0ZWNvZGVPZmZzZXQsIGJ5dGVjb2RlT2Zm
c2V0ICsgY3VycmVudFsyXS51Lm9wZXJhbmQpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAg
ICAgY2FzZSBvcF9qbmVxX3B0cjoKKyAgICAgICAgY2FzZSBvcF9qbGVzczoKKyAgICAgICAgY2Fz
ZSBvcF9qbGVzc2VxOgorICAgICAgICBjYXNlIG9wX2pncmVhdGVyOgorICAgICAgICBjYXNlIG9w
X2pncmVhdGVyZXE6CisgICAgICAgIGNhc2Ugb3Bfam5sZXNzOgorICAgICAgICBjYXNlIG9wX2pu
bGVzc2VxOgorICAgICAgICBjYXNlIG9wX2puZ3JlYXRlcjoKKyAgICAgICAgY2FzZSBvcF9qbmdy
ZWF0ZXJlcToKKyAgICAgICAgICAgIGN1cnJlbnRbM10udS5vcGVyYW5kID0gaW5zZXJ0aW9uU2V0
LmFkanVzdE9mZnNldChieXRlY29kZU9mZnNldCwgYnl0ZWNvZGVPZmZzZXQgKyBjdXJyZW50WzNd
LnUub3BlcmFuZCk7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIG9wX3N3aXRj
aF9pbW06CisgICAgICAgIGNhc2Ugb3Bfc3dpdGNoX2NoYXI6IHsKKyAgICAgICAgICAgIGF1dG8m
IHRhYmxlID0gc3dpdGNoSnVtcFRhYmxlKGN1cnJlbnRbMV0udS5vcGVyYW5kKTsKKyAgICAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IHRhYmxlLmJyYW5jaE9mZnNldHMuc2l6ZSgpOyBpLS07KQor
ICAgICAgICAgICAgICAgIHRhYmxlLmJyYW5jaE9mZnNldHNbaV0gPSBpbnNlcnRpb25TZXQuYWRq
dXN0T2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0LCBieXRlY29kZU9mZnNldCArIHRhYmxlLmJyYW5jaE9m
ZnNldHNbaV0pOworICAgICAgICAgICAgY3VycmVudFsyXS51Lm9wZXJhbmQgPSBpbnNlcnRpb25T
ZXQuYWRqdXN0T2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0LCBieXRlY29kZU9mZnNldCArIGN1cnJlbnRb
Ml0udS5vcGVyYW5kKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAg
Y2FzZSBvcF9zd2l0Y2hfc3RyaW5nOiB7CisgICAgICAgICAgICBhdXRvJiB0YWJsZSA9IHN0cmlu
Z1N3aXRjaEp1bXBUYWJsZShjdXJyZW50WzFdLnUub3BlcmFuZCk7CisgICAgICAgICAgICBhdXRv
IGl0ZXIgPSB0YWJsZS5vZmZzZXRUYWJsZS5iZWdpbigpOworICAgICAgICAgICAgYXV0byBlbmQg
PSB0YWJsZS5vZmZzZXRUYWJsZS5lbmQoKTsKKyAgICAgICAgICAgIGZvciAoOyBpdGVyICE9IGVu
ZDsgKytpdGVyKQorICAgICAgICAgICAgICAgIGl0ZXItPnZhbHVlLmJyYW5jaE9mZnNldCA9IGlu
c2VydGlvblNldC5hZGp1c3RPZmZzZXQoYnl0ZWNvZGVPZmZzZXQsIGJ5dGVjb2RlT2Zmc2V0ICsg
aXRlci0+dmFsdWUuYnJhbmNoT2Zmc2V0KTsKKyAgICAgICAgICAgIGN1cnJlbnRbMl0udS5vcGVy
YW5kID0gaW5zZXJ0aW9uU2V0LmFkanVzdE9mZnNldChieXRlY29kZU9mZnNldCwgYnl0ZWNvZGVP
ZmZzZXQgKyBjdXJyZW50WzJdLnUub3BlcmFuZCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgfQorCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor
CisgICAgICAgIGJ5dGVjb2RlT2Zmc2V0ICs9IG9wY29kZUxlbmd0aChvcGNvZGVJRCk7CisgICAg
fQorCisgICAgLy8gVGhlbiwgZXhjZXB0aW9uIGhhbmRsZXJzIHNob3VsZCBiZSBhZGp1c3RlZC4K
KyAgICBpZiAobV9yYXJlRGF0YSkgeworICAgICAgICBmb3IgKFVubGlua2VkSGFuZGxlckluZm8m
IGhhbmRsZXIgOiBtX3JhcmVEYXRhLT5tX2V4Y2VwdGlvbkhhbmRsZXJzKSB7CisgICAgICAgICAg
ICBoYW5kbGVyLnRhcmdldCA9IGluc2VydGlvblNldC5hZGp1c3RPZmZzZXQoMCwgaGFuZGxlci50
YXJnZXQpOworICAgICAgICAgICAgaGFuZGxlci5zdGFydCA9IGluc2VydGlvblNldC5hZGp1c3RP
ZmZzZXQoMCwgaGFuZGxlci5zdGFydCk7CisgICAgICAgICAgICBoYW5kbGVyLmVuZCA9IGluc2Vy
dGlvblNldC5hZGp1c3RPZmZzZXQoMCwgaGFuZGxlci5lbmQpOworICAgICAgICB9CisKKyAgICAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3JhcmVEYXRhLT5tX29wUHJvZmlsZUNvbnRyb2xG
bG93Qnl0ZWNvZGVPZmZzZXRzLnNpemUoKTsgKytpKQorICAgICAgICAgICAgbV9yYXJlRGF0YS0+
bV9vcFByb2ZpbGVDb250cm9sRmxvd0J5dGVjb2RlT2Zmc2V0c1tpXSA9IGluc2VydGlvblNldC5h
ZGp1c3RPZmZzZXQoMCwgbV9yYXJlRGF0YS0+bV9vcFByb2ZpbGVDb250cm9sRmxvd0J5dGVjb2Rl
T2Zmc2V0c1tpXSk7CisKKyAgICAgICAgaWYgKCFtX3JhcmVEYXRhLT5tX3R5cGVQcm9maWxlcklu
Zm9NYXAuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICBIYXNoTWFwPHVuc2lnbmVkLCBSYXJlRGF0
YTo6VHlwZVByb2ZpbGVyRXhwcmVzc2lvblJhbmdlPiBhZGp1c3RlZFR5cGVQcm9maWxlckluZm9N
YXA7CisgICAgICAgICAgICBmb3IgKGF1dG8mIGVudHJ5IDogbV9yYXJlRGF0YS0+bV90eXBlUHJv
ZmlsZXJJbmZvTWFwKQorICAgICAgICAgICAgICAgIGFkanVzdGVkVHlwZVByb2ZpbGVySW5mb01h
cC5zZXQoaW5zZXJ0aW9uU2V0LmFkanVzdE9mZnNldCgwLCBlbnRyeS5rZXkpLCBlbnRyeS52YWx1
ZSk7CisgICAgICAgICAgICBtX3JhcmVEYXRhLT5tX3R5cGVQcm9maWxlckluZm9NYXAuc3dhcChh
ZGp1c3RlZFR5cGVQcm9maWxlckluZm9NYXApOworICAgICAgICB9CisgICAgfQorCisgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBtX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zLnNpemUoKTsg
KytpKQorICAgICAgICBtX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zW2ldID0gaW5zZXJ0aW9u
U2V0LmFkanVzdE9mZnNldCgwLCBtX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zW2ldKTsKKwor
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9leHByZXNzaW9uSW5mby5zaXplKCk7ICsraSkK
KyAgICAgICAgbV9leHByZXNzaW9uSW5mb1tpXS5pbnN0cnVjdGlvbk9mZnNldCA9IGluc2VydGlv
blNldC5hZGp1c3RPZmZzZXQoMCwgbV9leHByZXNzaW9uSW5mb1tpXS5pbnN0cnVjdGlvbk9mZnNl
dCk7CisKKyAgICAvLyBUaGVuLCBtb2RpZnkgdGhlIHVubGlua2VkIGluc3RydWN0aW9ucy4KKyAg
ICBpbnNlcnRpb25TZXQuYXBwbHlNb2RpZmljYXRpb24oKTsKKworICAgIC8vIEFuZCByZWNvbXB1
dGUgdGhlIGp1bXAgdGFyZ2V0IGJhc2VkIG9uIHRoZSBtb2RpZmllZCB1bmxpbmtlZCBpbnN0cnVj
dGlvbnMuCisgICAgbV9qdW1wVGFyZ2V0cy5jbGVhcigpOworICAgIHJlY29tcHV0ZVByZWNpc2VK
dW1wVGFyZ2V0cyh0aGlzLCBncmFwaC5pbnN0cnVjdGlvbnMoKS5iZWdpbigpLCBncmFwaC5pbnN0
cnVjdGlvbnMoKS5zaXplKCksIG1fanVtcFRhcmdldHMpOworfQorCiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKaW5kZXggZjJm
MzAxYWNkNmRkZDAwNDg3ODk3MzY4NjYzZGVmZDlhNTYxNGUwMy4uNzZhOTM4YWZhZmZmYWM2MDNj
MmI1N2ZiYmVkOTgwZGQ0YmEyNzk4ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKQEAgLTQ1LDYgKzQ1LDggQEAKIAogbmFtZXNw
YWNlIEpTQyB7CiAKK2NsYXNzIEJ5dGVjb2RlUmV3cml0ZXI7CitjbGFzcyBEZWJ1Z2dlcjsKIGNs
YXNzIEZ1bmN0aW9uTWV0YWRhdGFOb2RlOwogY2xhc3MgRnVuY3Rpb25FeGVjdXRhYmxlOwogY2xh
c3MgSlNTY29wZTsKQEAgLTY1LDcgKzY3LDExIEBAIHR5cGVkZWYgdW5zaWduZWQgVW5saW5rZWRP
YmplY3RBbGxvY2F0aW9uUHJvZmlsZTsKIHR5cGVkZWYgdW5zaWduZWQgVW5saW5rZWRMTEludENh
bGxMaW5rSW5mbzsKIAogc3RydWN0IFVubGlua2VkU3RyaW5nSnVtcFRhYmxlIHsKLSAgICB0eXBl
ZGVmIEhhc2hNYXA8UmVmUHRyPFN0cmluZ0ltcGw+LCBpbnQzMl90PiBTdHJpbmdPZmZzZXRUYWJs
ZTsKKyAgICBzdHJ1Y3QgT2Zmc2V0TG9jYXRpb24geworICAgICAgICBpbnQzMl90IGJyYW5jaE9m
ZnNldDsKKyAgICB9OworCisgICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxTdHJpbmdJbXBsPiwg
T2Zmc2V0TG9jYXRpb24+IFN0cmluZ09mZnNldFRhYmxlOwogICAgIFN0cmluZ09mZnNldFRhYmxl
IG9mZnNldFRhYmxlOwogCiAgICAgaW5saW5lIGludDMyX3Qgb2Zmc2V0Rm9yVmFsdWUoU3RyaW5n
SW1wbCogdmFsdWUsIGludDMyX3QgZGVmYXVsdE9mZnNldCkKQEAgLTc0LDcgKzgwLDcgQEAgc3Ry
dWN0IFVubGlua2VkU3RyaW5nSnVtcFRhYmxlIHsKICAgICAgICAgU3RyaW5nT2Zmc2V0VGFibGU6
OmNvbnN0X2l0ZXJhdG9yIGxvYyA9IG9mZnNldFRhYmxlLmZpbmQodmFsdWUpOwogICAgICAgICBp
ZiAobG9jID09IGVuZCkKICAgICAgICAgICAgIHJldHVybiBkZWZhdWx0T2Zmc2V0OwotICAgICAg
ICByZXR1cm4gbG9jLT52YWx1ZTsKKyAgICAgICAgcmV0dXJuIGxvYy0+dmFsdWUuYnJhbmNoT2Zm
c2V0OwogICAgIH0KIAogfTsKQEAgLTEwMiw2ICsxMDgsOCBAQCBzdHJ1Y3QgVW5saW5rZWRJbnN0
cnVjdGlvbiB7CiAgICAgfSB1OwogfTsKIAorY2xhc3MgQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRp
b247CisKIGNsYXNzIFVubGlua2VkQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiBwdWJsaWM6
CiAgICAgdHlwZWRlZiBKU0NlbGwgQmFzZTsKQEAgLTExMSw2ICsxMTksOSBAQCBjbGFzcyBVbmxp
bmtlZENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogCiAgICAgZW51bSB7IENhbGxGdW5jdGlv
biwgQXBwbHlGdW5jdGlvbiB9OwogCisgICAgdHlwZWRlZiBVbmxpbmtlZEluc3RydWN0aW9uIElu
c3RydWN0aW9uOworICAgIHR5cGVkZWYgVmVjdG9yPFVubGlua2VkSW5zdHJ1Y3Rpb24sIDAsIFVu
c2FmZVZlY3Rvck92ZXJmbG93PiBVbnBhY2tlZEluc3RydWN0aW9uczsKKwogICAgIGJvb2wgaXND
b25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJuIG1faXNDb25zdHJ1Y3RvcjsgfQogICAgIGJvb2wg
aXNTdHJpY3RNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9pc1N0cmljdE1vZGU7IH0KICAgICBib29s
IHVzZXNFdmFsKCkgY29uc3QgeyByZXR1cm4gbV91c2VzRXZhbDsgfQpAQCAtMjAwLDYgKzIxMSw5
IEBAIGNsYXNzIFVubGlua2VkQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgdW5zaWdu
ZWQganVtcFRhcmdldChpbnQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIG1fanVtcFRhcmdldHNbaW5k
ZXhdOyB9CiAgICAgdW5zaWduZWQgbGFzdEp1bXBUYXJnZXQoKSBjb25zdCB7IHJldHVybiBtX2p1
bXBUYXJnZXRzLmxhc3QoKTsgfQogCisgICAgVW5saW5rZWRIYW5kbGVySW5mbyogaGFuZGxlckZv
ckJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBSZXF1aXJlZEhhbmRsZXIg
PSBSZXF1aXJlZEhhbmRsZXI6OkFueUhhbmRsZXIpOworICAgIFVubGlua2VkSGFuZGxlckluZm8q
IGhhbmRsZXJGb3JJbmRleCh1bnNpZ25lZCwgUmVxdWlyZWRIYW5kbGVyID0gUmVxdWlyZWRIYW5k
bGVyOjpBbnlIYW5kbGVyKTsKKwogICAgIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24oKSBjb25zdCB7
IHJldHVybiBtX2lzQnVpbHRpbkZ1bmN0aW9uOyB9CiAKICAgICBDb25zdHJ1Y3RvcktpbmQgY29u
c3RydWN0b3JLaW5kKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Q29uc3RydWN0b3JLaW5k
PihtX2NvbnN0cnVjdG9yS2luZCk7IH0KQEAgLTM3OSw2ICszOTMsOCBAQCBjbGFzcyBVbmxpbmtl
ZENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgIH0KIAogcHJpdmF0ZToKKyAgICBmcmll
bmQgY2xhc3MgQnl0ZWNvZGVSZXdyaXRlcjsKKyAgICB2b2lkIGFwcGx5TW9kaWZpY2F0aW9uKEJ5
dGVjb2RlUmV3cml0ZXImKTsKIAogICAgIHZvaWQgY3JlYXRlUmFyZURhdGFJZk5lY2Vzc2FyeSgp
CiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZpcnR1
YWxSZWdpc3Rlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZpcnR1YWxSZWdp
c3Rlci5oCmluZGV4IGQzZGY0MDk1N2I1MTc1NjhlM2FlZmJlM2ExYTYwOWZkODc4YmFhYzMuLmRh
ZjUwOWY2YzdkMTE1ZTQ1YmNiMTA3YzY3ZDNkMzhkODA0ZjI4OTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WaXJ0dWFsUmVnaXN0ZXIuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmlydHVhbFJlZ2lzdGVyLmgKQEAgLTI2LDggKzI2LDgg
QEAKICNpZm5kZWYgVmlydHVhbFJlZ2lzdGVyX2gKICNkZWZpbmUgVmlydHVhbFJlZ2lzdGVyX2gK
IAorI2luY2x1ZGUgIkJ5dGVjb2RlQ29udmVudGlvbnMuaCIKICNpbmNsdWRlICJDYWxsRnJhbWUu
aCIKLQogI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAg
LTEwMyw3ICsxMDMsNyBAQCBjbGFzcyBWaXJ0dWFsUmVnaXN0ZXIgewogCiBwcml2YXRlOgogICAg
IHN0YXRpYyBjb25zdCBpbnQgc19pbnZhbGlkVmlydHVhbFJlZ2lzdGVyID0gMHgzZmZmZmZmZjsK
LSAgICBzdGF0aWMgY29uc3QgaW50IHNfZmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXggPSAweDQw
MDAwMDAwOworICAgIHN0YXRpYyBjb25zdCBpbnQgc19maXJzdENvbnN0YW50UmVnaXN0ZXJJbmRl
eCA9IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4OwogCiAgICAgc3RhdGljIGludCBsb2NhbFRv
T3BlcmFuZChpbnQgbG9jYWwpIHsgcmV0dXJuIC0xIC0gbG9jYWw7IH0KICAgICBzdGF0aWMgaW50
IG9wZXJhbmRUb0xvY2FsKGludCBvcGVyYW5kKSB7IHJldHVybiAtMSAtIG9wZXJhbmQ7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdl
bmVyYXRvci5jcHAKaW5kZXggMzEyZDg5ZjdhZGM3M2YwN2RjNTE3OWI3NWU1NzVjNTU5MDI2NmRi
OC4uY2IxYTYwM2M3OGViMWRjNGQ5ZmU1ZTkxNTg4MzIyM2FlOTEyYzljMyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKIAogI2luY2x1ZGUgIkFyaXRoUHJvZmlsZS5oIgogI2lu
Y2x1ZGUgIkJ1aWx0aW5FeGVjdXRhYmxlcy5oIgorI2luY2x1ZGUgIkJ5dGVjb2RlR2VuZXJhdG9y
aWZpY2F0aW9uLmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmgiCiAjaW5j
bHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCkBAIC0xNTUsNiAr
MTU2LDEwIEBAIFBhcnNlckVycm9yIEJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZSgpCiAgICAg
ICAgIG1fY29kZUJsb2NrLT5hZGRFeGNlcHRpb25IYW5kbGVyKGluZm8pOwogICAgIH0KICAgICAK
KworICAgIGlmIChtX2NvZGVCbG9jay0+cGFyc2VNb2RlKCkgPT0gU291cmNlUGFyc2VNb2RlOjpH
ZW5lcmF0b3JCb2R5TW9kZSkKKyAgICAgICAgcGVyZm9ybUdlbmVyYXRvcmlmaWNhdGlvbihtX2Nv
ZGVCbG9jay5nZXQoKSwgbV9pbnN0cnVjdGlvbnMsIG1fZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJs
ZS5nZXQoKSwgbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlSW5kZXgpOworCiAgICAgbV9jb2Rl
QmxvY2stPnNldEluc3RydWN0aW9ucyhzdGQ6Om1ha2VfdW5pcXVlPFVubGlua2VkSW5zdHJ1Y3Rp
b25TdHJlYW0+KG1faW5zdHJ1Y3Rpb25zKSk7CiAKICAgICBtX2NvZGVCbG9jay0+c2hyaW5rVG9G
aXQoKTsKQEAgLTI2MiwxMCArMjY3LDE0IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdl
bmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtlCiAgICAg
Ym9vbCBzaG91bGRDYXB0dXJlQWxsT2ZUaGVUaGluZ3MgPSBtX3Nob3VsZEVtaXREZWJ1Z0hvb2tz
IHx8IGNvZGVCbG9jay0+dXNlc0V2YWwoKTsKICAgICBib29sIG5lZWRzQXJndW1lbnRzID0gKGZ1
bmN0aW9uTm9kZS0+dXNlc0FyZ3VtZW50cygpIHx8IGNvZGVCbG9jay0+dXNlc0V2YWwoKSB8fCAo
ZnVuY3Rpb25Ob2RlLT51c2VzQXJyb3dGdW5jdGlvbigpICYmICFjb2RlQmxvY2stPmlzQXJyb3dG
dW5jdGlvbigpICYmIGlzQXJndW1lbnRzVXNlZEluSW5uZXJBcnJvd0Z1bmN0aW9uKCkpKTsKIAot
ICAgIC8vIEdlbmVyYXRvciBuZXZlciBwcm92aWRlcyAiYXJndW1lbnRzIi4gImFyZ3VtZW50cyIg
cmVmZXJlbmNlIHdpbGwgYmUgcmVzb2x2ZWQgaW4gYW4gdXBwZXIgZ2VuZXJhdG9yIGZ1bmN0aW9u
IHNjb3BlLgotICAgIGlmIChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JC
b2R5TW9kZSkKKyAgICBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9y
Qm9keU1vZGUpIHsKKyAgICAgICAgLy8gR2VuZXJhdG9yIG5ldmVyIHByb3ZpZGVzICJhcmd1bWVu
dHMiLiAiYXJndW1lbnRzIiByZWZlcmVuY2Ugd2lsbCBiZSByZXNvbHZlZCBpbiBhbiB1cHBlciBn
ZW5lcmF0b3IgZnVuY3Rpb24gc2NvcGUuCiAgICAgICAgIG5lZWRzQXJndW1lbnRzID0gZmFsc2U7
CiAKKyAgICAgICAgLy8gR2VuZXJhdG9yIHVzZXMgdGhlIHZhciBzY29wZSB0byBzYXZlIGFuZCBy
ZXN1bWUgaXRzIHZhcmlhYmxlcy4gU28gdGhlIGxleGljYWwgc2NvcGUgaXMgYWx3YXlzIGluc3Rh
bnRpYXRlZC4KKyAgICAgICAgc2hvdWxkQ2FwdHVyZVNvbWVPZlRoZVRoaW5ncyA9IHRydWU7Cisg
ICAgfQorCiAgICAgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvcldy
YXBwZXJGdW5jdGlvbk1vZGUgJiYgbmVlZHNBcmd1bWVudHMpIHsKICAgICAgICAgLy8gR2VuZXJh
dG9yIGRvZXMgbm90IHByb3ZpZGUgImFyZ3VtZW50cyIuIEluc3RlYWQsIHdyYXBwaW5nIEdlbmVy
YXRvckZ1bmN0aW9uIHByb3ZpZGVzICJhcmd1bWVudHMiLgogICAgICAgICAvLyBUaGlzIGlzIGJl
Y2F1c2UgYXJndW1lbnRzIG9mIGEgZ2VuZXJhdG9yIHNob3VsZCBiZSBldmFsdWF0ZWQgYmVmb3Jl
IHN0YXJ0aW5nIGl0LgpAQCAtMjc0LDcgKzI4Myw3IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRl
Y29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtl
CiAgICAgICAgIC8vICAgIGZ1bmN0aW9uICpnZW4oYSwgYiA9IGhlbGxvKCkpCiAgICAgICAgIC8v
ICAgIHsKICAgICAgICAgLy8gICAgICAgIHJldHVybiB7Ci0gICAgICAgIC8vICAgICAgICAgICAg
QGdlbmVyYXRvck5leHQ6IGZ1bmN0aW9uIChAZ2VuZXJhdG9yLCBAZ2VuZXJhdG9yU3RhdGUsIEBn
ZW5lcmF0b3JWYWx1ZSwgQGdlbmVyYXRvclJlc3VtZU1vZGUpCisgICAgICAgIC8vICAgICAgICAg
ICAgQGdlbmVyYXRvck5leHQ6IGZ1bmN0aW9uIChAZ2VuZXJhdG9yLCBAZ2VuZXJhdG9yU3RhdGUs
IEBnZW5lcmF0b3JWYWx1ZSwgQGdlbmVyYXRvclJlc3VtZU1vZGUsIEBnZW5lcmF0b3JGcmFtZSkK
ICAgICAgICAgLy8gICAgICAgICAgICB7CiAgICAgICAgIC8vICAgICAgICAgICAgICAgIGFyZ3Vt
ZW50czsgIC8vIFRoaXMgYGFyZ3VtZW50c2Agc2hvdWxkIHJlZmVyZW5jZSB0byB0aGUgZ2VuJ3Mg
YXJndW1lbnRzLgogICAgICAgICAvLyAgICAgICAgICAgICAgICAuLi4KQEAgLTMwMywxNiArMzEy
LDE0IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0
aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtlCiAgICAgICAgIHJldHVybiBjYXB0dXJlcyh1
aWQpID8gVmFyS2luZDo6U2NvcGUgOiBWYXJLaW5kOjpTdGFjazsKICAgICB9OwogCi0gICAgZW1p
dEVudGVyKCk7Ci0KLSAgICBhbGxvY2F0ZUFuZEVtaXRTY29wZSgpOwotCiAgICAgbV9jYWxsZWVS
ZWdpc3Rlci5zZXRJbmRleChDYWxsRnJhbWVTbG90OjpjYWxsZWUpOwogCiAgICAgaW5pdGlhbGl6
ZVBhcmFtZXRlcnMocGFyYW1ldGVycyk7CiAgICAgQVNTRVJUKCEoaXNTaW1wbGVQYXJhbWV0ZXJM
aXN0ICYmIG1fcmVzdFBhcmFtZXRlcikpOwogCi0gICAgLy8gQmVmb3JlIGVtaXR0aW5nIGEgc2Nv
cGUgY3JlYXRpb24sIGVtaXQgYSBnZW5lcmF0b3IgcHJvbG9ndWUgdGhhdCBjb250YWlucyBqdW1w
IGJhc2VkIG9uIGEgZ2VuZXJhdG9yJ3Mgc3RhdGUuCisgICAgZW1pdEVudGVyKCk7CisKKyAgICAv
LyBCZWZvcmUgZW1pdHRpbmcgYW55IG9mIHRoZSBhY3R1YWwgY29kZSBleGNlcHQgZm9yIG9wX2Vu
dGVyLCBlbWl0IGEgZ2VuZXJhdG9yIHByb2xvZ3VlIHRoYXQgY29udGFpbnMganVtcCBiYXNlZCBv
biBhIGdlbmVyYXRvcidzIHN0YXRlLgogICAgIGlmIChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VN
b2RlOjpHZW5lcmF0b3JCb2R5TW9kZSkgewogICAgICAgICBtX2dlbmVyYXRvclJlZ2lzdGVyID0g
Jm1fcGFyYW1ldGVyc1sxXTsKIApAQCAtMzI2LDYgKzMzMyw4IEBAIEJ5dGVjb2RlR2VuZXJhdG9y
OjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBV
bmxpbmtlCiAgICAgICAgIGVtaXRHZW5lcmF0b3JTdGF0ZUxhYmVsKCk7CiAgICAgfQogCisgICAg
YWxsb2NhdGVBbmRFbWl0U2NvcGUoKTsKKwogICAgIGlmIChmdW5jdGlvbk5hbWVJc0luU2NvcGUo
ZnVuY3Rpb25Ob2RlLT5pZGVudCgpLCBmdW5jdGlvbk5vZGUtPmZ1bmN0aW9uTW9kZSgpKSkgewog
ICAgICAgICBBU1NFUlQocGFyc2VNb2RlICE9IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yQm9k
eU1vZGUpOwogICAgICAgICBib29sIGlzRHluYW1pY1Njb3BlID0gZnVuY3Rpb25OYW1lU2NvcGVJ
c0R5bmFtaWMoY29kZUJsb2NrLT51c2VzRXZhbCgpLCBjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgp
KTsKQEAgLTY0MSw2ICs2NTAsMTYgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJh
dG9yKFZNJiB2bSwgRnVuY3Rpb25Ob2RlKiBmdW5jdGlvbk5vZGUsIFVubGlua2UKICAgICAgICAg
ICAgIGVtaXRMb2FkTmV3VGFyZ2V0RnJvbUFycm93RnVuY3Rpb25MZXhpY2FsRW52aXJvbm1lbnQo
KTsKICAgICB9CiAgICAgCisgICAgLy8gU2V0IHVwIHRoZSBsZXhpY2FsIGVudmlyb25tZW50IHNj
b3BlIGFzIHRoZSBnZW5lcmF0b3IgZnJhbWUuIFdlIHN0b3JlIHRoZSBzYXZlZCBhbmQgcmVzdW1l
ZCBnZW5lcmF0b3IgcmVnaXN0ZXJzIGludG8gdGhpcyBzY29wZSB3aXRoIHRoZSBzeW1ib2wga2V5
cy4KKyAgICAvLyBTaW5jZSB0aGV5IGFyZSBzeW1ib2wga2V5ZWQsIHRoZXNlIHZhcmlhYmxlcyBj
YW5ub3QgYmUgcmVhY2hlZCBmcm9tIHRoZSB1c3VhbCBjb2RlLgorICAgIGlmIChTb3VyY2VQYXJz
ZU1vZGU6OkdlbmVyYXRvckJvZHlNb2RlID09IHBhcnNlTW9kZSkgeworICAgICAgICBBU1NFUlQo
bV9sZXhpY2FsRW52aXJvbm1lbnRSZWdpc3Rlcik7CisgICAgICAgIG1fZ2VuZXJhdG9yRnJhbWVT
eW1ib2xUYWJsZS5zZXQoKm1fdm0sIGZ1bmN0aW9uU3ltYm9sVGFibGUpOworICAgICAgICBtX2dl
bmVyYXRvckZyYW1lU3ltYm9sVGFibGVJbmRleCA9IHN5bWJvbFRhYmxlQ29uc3RhbnRJbmRleDsK
KyAgICAgICAgZW1pdE1vdmUoZ2VuZXJhdG9yRnJhbWVSZWdpc3RlcigpLCBtX2xleGljYWxFbnZp
cm9ubWVudFJlZ2lzdGVyKTsKKyAgICAgICAgZW1pdFB1dEJ5SWQoZ2VuZXJhdG9yUmVnaXN0ZXIo
KSwgcHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvckZyYW1lUHJpdmF0ZU5h
bWUoKSwgZ2VuZXJhdG9yRnJhbWVSZWdpc3RlcigpKTsKKyAgICB9CisKICAgICBib29sIHNob3Vs
ZEluaXRpYWxpemVCbG9ja1Njb3BlZEZ1bmN0aW9ucyA9IGZhbHNlOyAvLyBXZSBnZW5lcmF0ZSB0
b3AtbGV2ZWwgZnVuY3Rpb24gZGVjbGFyYXRpb25zIGluIDo6Z2VuZXJhdGUoKS4KICAgICBwdXNo
TGV4aWNhbFNjb3BlKG1fc2NvcGVOb2RlLCBURFpDaGVja09wdGltaXphdGlvbjo6T3B0aW1pemUs
IE5lc3RlZFNjb3BlVHlwZTo6SXNOb3ROZXN0ZWQsIG51bGxwdHIsIHNob3VsZEluaXRpYWxpemVC
bG9ja1Njb3BlZEZ1bmN0aW9ucyk7CiB9CkBAIC0zNjcyLDggKzM2OTEsNyBAQCB2b2lkIEJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0Q29tcGxleFBvcFNjb3BlcyhSZWdpc3RlcklEKiBzY29wZSwgQ29u
dHJvbEZsb3dDb250ZQogICAgICAgICAgICAgaWYgKGZsaXBUcmllcykgewogICAgICAgICAgICAg
ICAgIHdoaWxlIChtX3RyeUNvbnRleHRTdGFjay5zaXplKCkgIT0gZmluYWxseUNvbnRleHQudHJ5
Q29udGV4dFN0YWNrU2l6ZSkgewogICAgICAgICAgICAgICAgICAgICBBU1NFUlQobV90cnlDb250
ZXh0U3RhY2suc2l6ZSgpID4gZmluYWxseUNvbnRleHQudHJ5Q29udGV4dFN0YWNrU2l6ZSk7Ci0g
ICAgICAgICAgICAgICAgICAgIFRyeUNvbnRleHQgY29udGV4dCA9IG1fdHJ5Q29udGV4dFN0YWNr
Lmxhc3QoKTsKLSAgICAgICAgICAgICAgICAgICAgbV90cnlDb250ZXh0U3RhY2sucmVtb3ZlTGFz
dCgpOworICAgICAgICAgICAgICAgICAgICBUcnlDb250ZXh0IGNvbnRleHQgPSBtX3RyeUNvbnRl
eHRTdGFjay50YWtlTGFzdCgpOwogICAgICAgICAgICAgICAgICAgICBUcnlSYW5nZSByYW5nZTsK
ICAgICAgICAgICAgICAgICAgICAgcmFuZ2Uuc3RhcnQgPSBjb250ZXh0LnN0YXJ0OwogICAgICAg
ICAgICAgICAgICAgICByYW5nZS5lbmQgPSBiZWZvcmVGaW5hbGx5OwpAQCAtMzk1Nyw3ICszOTc1
LDcgQEAgc3RhdGljIHZvaWQgcHJlcGFyZUp1bXBUYWJsZUZvclN0cmluZ1N3aXRjaChVbmxpbmtl
ZFN0cmluZ0p1bXBUYWJsZSYganVtcFRhYmxlLAogICAgICAgICAKICAgICAgICAgQVNTRVJUKG5v
ZGVzW2ldLT5pc1N0cmluZygpKTsKICAgICAgICAgU3RyaW5nSW1wbCogY2xhdXNlID0gc3RhdGlj
X2Nhc3Q8U3RyaW5nTm9kZSo+KG5vZGVzW2ldKS0+dmFsdWUoKS5pbXBsKCk7Ci0gICAgICAgIGp1
bXBUYWJsZS5vZmZzZXRUYWJsZS5hZGQoY2xhdXNlLCBsYWJlbHNbaV0tPmJpbmQoc3dpdGNoQWRk
cmVzcywgc3dpdGNoQWRkcmVzcyArIDMpKTsKKyAgICAgICAganVtcFRhYmxlLm9mZnNldFRhYmxl
LmFkZChjbGF1c2UsIFVubGlua2VkU3RyaW5nSnVtcFRhYmxlOjpPZmZzZXRMb2NhdGlvbiB7IGxh
YmVsc1tpXS0+YmluZChzd2l0Y2hBZGRyZXNzLCBzd2l0Y2hBZGRyZXNzICsgMykgfSk7CiAgICAg
fQogfQogCkBAIC00NDYzLDE2ICs0NDgxLDM2IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRZaWVsZFBvaW50KFJlZ2lzdGVySUQqIGFyZ3VtZW50KQogICAgIGVtaXRHZW5lcmF0b3JTdGF0
ZUNoYW5nZSh5aWVsZFBvaW50SW5kZXgpOwogICAgIC8vIEZpcnN0IHlpZWxkIHBvaW50IGlzIHVz
ZWQgZm9yIGluaXRpYWwgc2VxdWVuY2UuCiAgICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0lu
ZGV4ID0geWllbGRQb2ludEluZGV4IC0gMTsKKworICAgIC8vIFNwbGl0IHRoZSB0cnkgcmFuZ2Ug
aGVyZS4KKyAgICBSZWZQdHI8TGFiZWw+IHNhdmVQb2ludCA9IGVtaXRMYWJlbChuZXdMYWJlbCgp
LmdldCgpKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX3RyeUNvbnRleHRTdGFjay5zaXplKCk7
IGktLTspIHsKKyAgICAgICAgVHJ5Q29udGV4dCYgY29udGV4dCA9IG1fdHJ5Q29udGV4dFN0YWNr
W2ldOworICAgICAgICBUcnlSYW5nZSByYW5nZTsKKyAgICAgICAgcmFuZ2Uuc3RhcnQgPSBjb250
ZXh0LnN0YXJ0OworICAgICAgICByYW5nZS5lbmQgPSBzYXZlUG9pbnQ7CisgICAgICAgIHJhbmdl
LnRyeURhdGEgPSBjb250ZXh0LnRyeURhdGE7CisgICAgICAgIG1fdHJ5UmFuZ2VzLmFwcGVuZChy
YW5nZSk7CisKKyAgICAgICAgLy8gVHJ5IHJhbmdlIHdpbGwgYmUgcmVzdGFyZWQgYXQgdGhlIG1l
cmdlIHBvaW50LgorICAgICAgICBjb250ZXh0LnN0YXJ0ID0gbWVyZ2VQb2ludDsKKyAgICB9Cisg
ICAgVmVjdG9yPFRyeUNvbnRleHQ+IHNhdmVkVHJ5Q29udGV4dFN0YWNrOworICAgIG1fdHJ5Q29u
dGV4dFN0YWNrLnN3YXAoc2F2ZWRUcnlDb250ZXh0U3RhY2spOworCiAgICAgZW1pdFNhdmUobWVy
Z2VQb2ludC5nZXQoKSwgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4KTsKICAgICBlbWl0UmV0dXJuKGFy
Z3VtZW50KTsKICAgICBlbWl0UmVzdW1lKG1lcmdlUG9pbnQuZ2V0KCksIGxpdmVDYWxsZWVMb2Nh
bHNJbmRleCk7CisKKyAgICAvLyBSZXN0b3JlIHRoZSB0cnkgY29udGV4dHMsIHdoaWNoIHN0YXJ0
IG9mZnNldCBpcyB1cGRhdGVkIHRvIHRoZSBtZXJnZSBwb2ludC4KKyAgICBtX3RyeUNvbnRleHRT
dGFjay5zd2FwKHNhdmVkVHJ5Q29udGV4dFN0YWNrKTsKIH0KIAogdm9pZCBCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdFNhdmUoTGFiZWwqIG1lcmdlUG9pbnQsIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2Nh
bHNJbmRleCkKIHsKICAgICBzaXplX3QgYmVnaW4gPSBpbnN0cnVjdGlvbnMoKS5zaXplKCk7CiAg
ICAgZW1pdE9wY29kZShvcF9zYXZlKTsKLSAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobV9nZW5l
cmF0b3JSZWdpc3Rlci0+aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGdlbmVy
YXRvckZyYW1lUmVnaXN0ZXIoKS0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5k
KGxpdmVDYWxsZWVMb2NhbHNJbmRleCk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1lcmdl
UG9pbnQtPmJpbmQoYmVnaW4sIGluc3RydWN0aW9ucygpLnNpemUoKSkpOwogfQpAQCAtNDQ4MSw3
ICs0NTE5LDcgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlc3VtZShMYWJlbCogbWVy
Z2VQb2ludCwgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0kKIHsKICAgICBlbWl0R2VuZXJhdG9y
U3RhdGVMYWJlbCgpOwogICAgIGVtaXRPcGNvZGUob3BfcmVzdW1lKTsKLSAgICBpbnN0cnVjdGlv
bnMoKS5hcHBlbmQobV9nZW5lcmF0b3JSZWdpc3Rlci0+aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rp
b25zKCkuYXBwZW5kKGdlbmVyYXRvckZyYW1lUmVnaXN0ZXIoKS0+aW5kZXgoKSk7CiAgICAgaW5z
dHJ1Y3Rpb25zKCkuYXBwZW5kKGxpdmVDYWxsZWVMb2NhbHNJbmRleCk7CiAgICAgZW1pdExhYmVs
KG1lcmdlUG9pbnQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmluZGV4IGZmZjcxM2FhMjVlNzFkZjJjZjRjYjUz
MDhlNjE2OWE1M2FmNjUxYmUuLmM3YTdhY2Q2ZTYwYTRiZTY5OTQ0OWI5YWE0ZjQ0Nzk2OWUzMmIy
NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTM3LDYgKzM3LDggQEAKICNpbmNsdWRlICJMYWJlbC5oIgog
I2luY2x1ZGUgIkxhYmVsU2NvcGUuaCIKICNpbmNsdWRlICJOb2Rlcy5oIgorI2luY2x1ZGUgIklu
dGVycHJldGVyLmgiCisjaW5jbHVkZSAiSlNHZW5lcmF0b3JGdW5jdGlvbi5oIgogI2luY2x1ZGUg
IlBhcnNlckVycm9yLmgiCiAjaW5jbHVkZSAiUmVnaXN0ZXJJRC5oIgogI2luY2x1ZGUgIlNldEZv
clNjb3BlLmgiCkBAIC02OTksOSArNzAxLDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBS
ZWdpc3RlcklEKiBlbWl0RGVsZWdhdGVZaWVsZChSZWdpc3RlcklEKiBhcmd1bWVudCwgVGhyb3dh
YmxlRXhwcmVzc2lvbkRhdGEqKTsKICAgICAgICAgdm9pZCBiZWdpbkdlbmVyYXRvcihSZWdpc3Rl
cklEKik7CiAgICAgICAgIHZvaWQgZW5kR2VuZXJhdG9yKExhYmVsKiBkZWZhdWx0TGFiZWwpOwot
ICAgICAgICBSZWdpc3RlcklEKiBnZW5lcmF0b3JTdGF0ZVJlZ2lzdGVyKCkgeyByZXR1cm4gJm1f
cGFyYW1ldGVyc1syXTsgfQotICAgICAgICBSZWdpc3RlcklEKiBnZW5lcmF0b3JWYWx1ZVJlZ2lz
dGVyKCkgeyByZXR1cm4gJm1fcGFyYW1ldGVyc1szXTsgfQotICAgICAgICBSZWdpc3RlcklEKiBn
ZW5lcmF0b3JSZXN1bWVNb2RlUmVnaXN0ZXIoKSB7IHJldHVybiAmbV9wYXJhbWV0ZXJzWzRdOyB9
CisgICAgICAgIFJlZ2lzdGVySUQqIGdlbmVyYXRvclN0YXRlUmVnaXN0ZXIoKSB7IHJldHVybiAm
bV9wYXJhbWV0ZXJzW3N0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yRnVuY3Rpb246Okdl
bmVyYXRvckFyZ3VtZW50OjpTdGF0ZSldOyB9CisgICAgICAgIFJlZ2lzdGVySUQqIGdlbmVyYXRv
clZhbHVlUmVnaXN0ZXIoKSB7IHJldHVybiAmbV9wYXJhbWV0ZXJzW3N0YXRpY19jYXN0PGludDMy
X3Q+KEpTR2VuZXJhdG9yRnVuY3Rpb246OkdlbmVyYXRvckFyZ3VtZW50OjpWYWx1ZSldOyB9Cisg
ICAgICAgIFJlZ2lzdGVySUQqIGdlbmVyYXRvclJlc3VtZU1vZGVSZWdpc3RlcigpIHsgcmV0dXJu
ICZtX3BhcmFtZXRlcnNbc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6
R2VuZXJhdG9yQXJndW1lbnQ6OlJlc3VtZU1vZGUpXTsgfQorICAgICAgICBSZWdpc3RlcklEKiBn
ZW5lcmF0b3JGcmFtZVJlZ2lzdGVyKCkgeyByZXR1cm4gJm1fcGFyYW1ldGVyc1tzdGF0aWNfY2Fz
dDxpbnQzMl90PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JBcmd1bWVudDo6RnJhbWUp
XTsgfQogCiAgICAgICAgIENvZGVUeXBlIGNvZGVUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9jb2Rl
VHlwZTsgfQogCkBAIC05MzAsNiArOTMzLDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBW
ZWN0b3I8UmVmUHRyPEZvckluQ29udGV4dD4+IG1fZm9ySW5Db250ZXh0U3RhY2s7CiAgICAgICAg
IFZlY3RvcjxUcnlDb250ZXh0PiBtX3RyeUNvbnRleHRTdGFjazsKICAgICAgICAgVmVjdG9yPFJl
ZlB0cjxMYWJlbD4+IG1fZ2VuZXJhdG9yUmVzdW1lTGFiZWxzOworCisgICAgICAgIFN0cm9uZzxT
eW1ib2xUYWJsZT4gbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlOworICAgICAgICBpbnQgbV9n
ZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlSW5kZXggeyAwIH07CisKICAgICAgICAgZW51bSBGdW5j
dGlvblZhcmlhYmxlVHlwZSA6IHVpbnQ4X3QgeyBOb3JtYWxGdW5jdGlvblZhcmlhYmxlLCBHbG9i
YWxGdW5jdGlvblZhcmlhYmxlIH07CiAgICAgICAgIFZlY3RvcjxzdGQ6OnBhaXI8RnVuY3Rpb25N
ZXRhZGF0YU5vZGUqLCBGdW5jdGlvblZhcmlhYmxlVHlwZT4+IG1fZnVuY3Rpb25zVG9Jbml0aWFs
aXplOwogICAgICAgICBib29sIG1fbmVlZFRvSW5pdGlhbGl6ZUFyZ3VtZW50cyB7IGZhbHNlIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAppbmRleCBhNzE3
ZDE2ZGNjODZjMGMwNDFhNTc5MmEyOTJmMTJjNzkzNzMyMjE2Li5hM2U4ZmNkNTA5ZTZhOGViMTY4
OTkzZTk1NTcwYzI2MGQ2YTBkMjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T3BlcmF0aW9ucy5jcHAKQEAgLTQyLDggKzQyLDggQEAKICNpbmNsdWRlICJEaXJlY3RBcmd1bWVu
dHMuaCIKICNpbmNsdWRlICJGVExGb3JPU1JFbnRyeUpJVENvZGUuaCIKICNpbmNsdWRlICJGVExP
U1JFbnRyeS5oIgotI2luY2x1ZGUgIkhvc3RDYWxsUmV0dXJuVmFsdWUuaCIKICNpbmNsdWRlICJH
ZXR0ZXJTZXR0ZXIuaCIKKyNpbmNsdWRlICJIb3N0Q2FsbFJldHVyblZhbHVlLmgiCiAjaW5jbHVk
ZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKSVQuaCIKICNpbmNsdWRlICJKSVRFeGNlcHRp
b25zLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdGUtYnl0ZWNv
ZGUtZmlsZXMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdGUtYnl0ZWNvZGUtZmlsZXMK
aW5kZXggNTY2NmEzZjkyNGMxMTliMjE2ZDNmZjBmZmU5YzY3MmI3YzcxYmI3OS4uOGY3OTBlZDlm
YTgzMTZkMzlkYTE1ZDNiNzU4OTQ2YmY0OWYzYmQzZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2dlbmVyYXRlLWJ5dGVjb2RlLWZpbGVzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9nZW5lcmF0ZS1ieXRlY29kZS1maWxlcwpAQCAtOTQsMTMgKzk0LDE0IEBAIGRlZiBvcGVu
T3JFeGl0KHBhdGgsIG1vZGUpOgogICAgICAgICBwcmludCAiSS9PIGVycm9yIG9wZW5pbmcgezB9
LCAoezF9KTogezJ9Ii5mb3JtYXQocGF0aCwgZS5lcnJubywgZS5zdHJlcnJvcikKICAgICAgICAg
ZXhpdCgxKQogCi1kZWYgaGFzaEZpbGUoZmlsZSk6CitkZWYgaGFzaEZpbGUoZmlsZXMpOgogICAg
IHNoYTEgPSBoYXNobGliLnNoYTEoKQotICAgIGZpbGUuc2VlaygwKQotICAgIGZvciBsaW5lIGlu
IGZpbGU6Ci0gICAgICAgIHNoYTEudXBkYXRlKGxpbmUpCisgICAgZm9yIGZpbGUgaW4gZmlsZXM6
CisgICAgICAgIGZpbGUuc2VlaygwKQorICAgICAgICBmb3IgbGluZSBpbiBmaWxlOgorICAgICAg
ICAgICAgc2hhMS51cGRhdGUobGluZSkKIAotICAgIGZpbGUuc2VlaygwKQorICAgICAgICBmaWxl
LnNlZWsoMCkKIAogICAgIHJldHVybiBzaGExLmhleGRpZ2VzdCgpCiAKQEAgLTExNSw3ICsxMTYs
OCBAQCBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogCiAgICAgYnl0ZWNvZGVKU09ORmlsZSA9
IGFyZ3NbMF0KICAgICBieXRlY29kZUZpbGUgPSBvcGVuT3JFeGl0KGJ5dGVjb2RlSlNPTkZpbGUs
ICJyYiIpCi0gICAgc2hhMUhhc2ggPSBoYXNoRmlsZShieXRlY29kZUZpbGUpCisgICAgZ2VuZXJh
dG9yRmlsZSA9IG9wZW5PckV4aXQoX19maWxlX18sICJyYiIpCisgICAgc2hhMUhhc2ggPSBoYXNo
RmlsZShbYnl0ZWNvZGVGaWxlLCBnZW5lcmF0b3JGaWxlXSkKIAogICAgIGhGaWxlSGFzaFN0cmlu
ZyA9ICIvLyBTSEExSGFzaDogezB9XG4iLmZvcm1hdChzaGExSGFzaCkKICAgICBhc21GaWxlSGFz
aFN0cmluZyA9ICIjIFNIQTFIYXNoOiB7MH1cbiIuZm9ybWF0KHNoYTFIYXNoKQpAQCAtMTg3LDYg
KzE4OSw3IEBAIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgICAgICAgICAgICAgZGVm
YXVsdExlbmd0aCA9IHNlY3Rpb25bImRlZmF1bHRMZW5ndGgiXQogCiAgICAgICAgICAgICBieXRl
Y29kZU51bSA9IDAKKyAgICAgICAgICAgIG1heExlbmd0aCA9IDAKICAgICAgICAgICAgIGZvciBi
eXRlY29kZSBpbiBzZWN0aW9uWyJieXRlY29kZXMiXToKICAgICAgICAgICAgICAgICBpZiBub3Qg
Zmlyc3RNYWNybzoKICAgICAgICAgICAgICAgICAgICAgYnl0ZWNvZGVIRmlsZS53cml0ZSgiIFxc
XG4iKQpAQCAtMTk0LDYgKzE5Nyw3IEBAIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAg
ICAgICAgICAgICAgbGVuZ3RoID0gZGVmYXVsdExlbmd0aAogICAgICAgICAgICAgICAgIGlmICJs
ZW5ndGgiIGluIGJ5dGVjb2RlOgogICAgICAgICAgICAgICAgICAgICBsZW5ndGggPSBieXRlY29k
ZVsibGVuZ3RoIl0KKyAgICAgICAgICAgICAgICAgICAgbWF4TGVuZ3RoID0gbWF4KFtsZW5ndGgs
IG1heExlbmd0aF0pCiAKICAgICAgICAgICAgICAgICBieXRlY29kZUhGaWxlLndyaXRlKCIgICAg
bWFjcm8oezB9LCB7MX0pIi5mb3JtYXQoYnl0ZWNvZGVbIm5hbWUiXSwgbGVuZ3RoKSkKICAgICAg
ICAgICAgICAgICBmaXJzdE1hY3JvID0gRmFsc2UKQEAgLTIwMSw2ICsyMDUsNyBAQCBpZiBfX25h
bWVfXyA9PSAiX19tYWluX18iOgogCiAgICAgICAgICAgICBieXRlY29kZUhGaWxlLndyaXRlKCJc
blxuIikKICAgICAgICAgICAgIGJ5dGVjb2RlSEZpbGUud3JpdGUoIiNkZWZpbmUgTlVNQkVSX09G
X3swfV9JRFMgezF9XG5cbiIuZm9ybWF0KHNlY3Rpb25bIm1hY3JvTmFtZUNvbXBvbmVudCJdLCBi
eXRlY29kZU51bSkpCisgICAgICAgICAgICBieXRlY29kZUhGaWxlLndyaXRlKCIjZGVmaW5lIE1B
WF9PUENPREVfTEVOR1RIX09GX3swfSB7MX1cblxuIi5mb3JtYXQoc2VjdGlvblsibWFjcm9OYW1l
Q29tcG9uZW50Il0sIG1heExlbmd0aCkpCiAKICAgICAgICAgaWYgaW5pdEFTTUZpbGVOYW1lIGFu
ZCBzZWN0aW9uWydlbWl0SW5BU01GaWxlJ106CiAgICAgICAgICAgICBwcmVmaXggPSAiIgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKaW5k
ZXggZDhjZWNhYzJkOGJjYTljMmE2ZGNjNDhjNTQwYmY5YjlkZGIzMGY1NC4uNzNmMGYwZjE0M2M5
ZTg0NTVjODFiOTMxZDJkZjI0MzZhOTM2ZWRkYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCkBAIC01MjksNyArNTI5LDcgQEAgSlNT
dHJpbmcqIEludGVycHJldGVyOjpzdGFja1RyYWNlQXNTdHJpbmcoVk0mIHZtLCBjb25zdCBWZWN0
b3I8U3RhY2tGcmFtZT4mIHN0YWMKICAgICByZXR1cm4ganNTdHJpbmcoJnZtLCBidWlsZGVyLnRv
U3RyaW5nKCkpOwogfQogCi1BTFdBWVNfSU5MSU5FIHN0YXRpYyBIYW5kbGVySW5mbyogZmluZEV4
Y2VwdGlvbkhhbmRsZXIoU3RhY2tWaXNpdG9yJiB2aXNpdG9yLCBDb2RlQmxvY2sqIGNvZGVCbG9j
aywgQ29kZUJsb2NrOjpSZXF1aXJlZEhhbmRsZXIgcmVxdWlyZWRIYW5kbGVyKQorQUxXQVlTX0lO
TElORSBzdGF0aWMgSGFuZGxlckluZm8qIGZpbmRFeGNlcHRpb25IYW5kbGVyKFN0YWNrVmlzaXRv
ciYgdmlzaXRvciwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFJlcXVpcmVkSGFuZGxlciByZXF1aXJl
ZEhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKGNvZGVCbG9jayk7CiAjaWYgRU5BQkxFKERGR19KSVQp
CkBAIC01NjMsNyArNTYzLDcgQEAgY2xhc3MgR2V0Q2F0Y2hIYW5kbGVyRnVuY3RvciB7CiAgICAg
ICAgIGlmICghY29kZUJsb2NrKQogICAgICAgICAgICAgcmV0dXJuIFN0YWNrVmlzaXRvcjo6Q29u
dGludWU7CiAKLSAgICAgICAgbV9oYW5kbGVyID0gZmluZEV4Y2VwdGlvbkhhbmRsZXIodmlzaXRv
ciwgY29kZUJsb2NrLCBDb2RlQmxvY2s6OlJlcXVpcmVkSGFuZGxlcjo6Q2F0Y2hIYW5kbGVyKTsK
KyAgICAgICAgbV9oYW5kbGVyID0gZmluZEV4Y2VwdGlvbkhhbmRsZXIodmlzaXRvciwgY29kZUJs
b2NrLCBSZXF1aXJlZEhhbmRsZXI6OkNhdGNoSGFuZGxlcik7CiAgICAgICAgIGlmIChtX2hhbmRs
ZXIpCiAgICAgICAgICAgICByZXR1cm4gU3RhY2tWaXNpdG9yOjpEb25lOwogCkBAIC02MDUsNyAr
NjA1LDcgQEAgY2xhc3MgVW53aW5kRnVuY3RvciB7CiAgICAgICAgIG1faGFuZGxlciA9IG51bGxw
dHI7CiAgICAgICAgIGlmICghbV9pc1Rlcm1pbmF0aW9uKSB7CiAgICAgICAgICAgICBpZiAobV9j
b2RlQmxvY2sgJiYgIWlzV2ViQXNzZW1ibHlFeGVjdXRhYmxlKG1fY29kZUJsb2NrLT5vd25lckV4
ZWN1dGFibGUoKSkpCi0gICAgICAgICAgICAgICAgbV9oYW5kbGVyID0gZmluZEV4Y2VwdGlvbkhh
bmRsZXIodmlzaXRvciwgbV9jb2RlQmxvY2ssIENvZGVCbG9jazo6UmVxdWlyZWRIYW5kbGVyOjpB
bnlIYW5kbGVyKTsKKyAgICAgICAgICAgICAgICBtX2hhbmRsZXIgPSBmaW5kRXhjZXB0aW9uSGFu
ZGxlcih2aXNpdG9yLCBtX2NvZGVCbG9jaywgUmVxdWlyZWRIYW5kbGVyOjpBbnlIYW5kbGVyKTsK
ICAgICAgICAgfQogCiAgICAgICAgIGlmIChtX2hhbmRsZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCmluZGV4IGU0MjE4NTFlZmU5ZTY1MjZl
ZjFlZjNmOGFmOWM4N2M2YjZjMjIwNTcuLjg5MzMxZTljMmJjNjE0OTMyY2EwNzM1MjI0Mzc0NjE5
MzhiMTEwMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9J
bnRlcnByZXRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRl
cnByZXRlci5oCkBAIC02Niw2ICs2Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHN0cnVjdCBI
YW5kbGVySW5mbzsKICAgICBzdHJ1Y3QgSW5zdHJ1Y3Rpb247CiAgICAgc3RydWN0IFByb3RvQ2Fs
bEZyYW1lOworICAgIHN0cnVjdCBVbmxpbmtlZEluc3RydWN0aW9uOwogCiAgICAgZW51bSBVbndp
bmRTdGFydCA6IHVpbnQ4X3QgeyBVbndpbmRGcm9tQ3VycmVudEZyYW1lLCBVbndpbmRGcm9tQ2Fs
bGVyRnJhbWUgfTsKIApAQCAtMTk0LDcgKzE5NSwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgICAgIHJldHVybiBvcGNvZGU7CiAjZW5kaWYKICAgICAgICAgfQotICAgICAgICAKKworICAg
ICAgICBPcGNvZGVJRCBnZXRPcGNvZGVJRChjb25zdCBJbnN0cnVjdGlvbiYpOworICAgICAgICBP
cGNvZGVJRCBnZXRPcGNvZGVJRChjb25zdCBVbmxpbmtlZEluc3RydWN0aW9uJik7CisKICAgICAg
ICAgYm9vbCBpc09wY29kZShPcGNvZGUpOwogCiAgICAgICAgIEpTVmFsdWUgZXhlY3V0ZShQcm9n
cmFtRXhlY3V0YWJsZSosIENhbGxGcmFtZSosIEpTT2JqZWN0KiB0aGlzT2JqKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlcklubGluZXMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlcklubGluZXMu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi44NmQwNzE0OGE1MmU2NWUzNzVmOTdlNmViYjkxYWRiZTFkZDQ1NjBkCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVy
cHJldGVySW5saW5lcy5oCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTYgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIklu
c3RydWN0aW9uLmgiCisjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKKyNpbmNsdWRlICJVbmxpbmtl
ZENvZGVCbG9jay5oIgorCituYW1lc3BhY2UgSlNDIHsKKworaW5saW5lIE9wY29kZUlEIEludGVy
cHJldGVyOjpnZXRPcGNvZGVJRChjb25zdCBJbnN0cnVjdGlvbiYgaW5zdHJ1Y3Rpb24pCit7Cisg
ICAgcmV0dXJuIGdldE9wY29kZUlEKGluc3RydWN0aW9uLnUub3Bjb2RlKTsKK30KKworaW5saW5l
IE9wY29kZUlEIEludGVycHJldGVyOjpnZXRPcGNvZGVJRChjb25zdCBVbmxpbmtlZEluc3RydWN0
aW9uJiBpbnN0cnVjdGlvbikKK3sKKyAgICByZXR1cm4gaW5zdHJ1Y3Rpb24udS5vcGNvZGU7Cit9
CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCmluZGV4IGVm
N2JlNmIxNzY2Yjg0ZjU0NzFiYjYxMDY2MTI1YmI1NzExNGQ0NzkuLjA1NTMzMjExMTU5NDFmMTJk
YmM0YmM2M2YwN2Q2NWU0ODAxNThhNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKQEAg
LTI0Myw4ICsyNDMsNiBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAg
ICAgIERFRklORV9PUChvcF9nZXRfcmVzdF9sZW5ndGgpCiAgICAgICAgIERFRklORV9PUChvcF9j
aGVja190ZHopCiAgICAgICAgIERFRklORV9PUChvcF9hc3NlcnQpCi0gICAgICAgIERFRklORV9P
UChvcF9zYXZlKQotICAgICAgICBERUZJTkVfT1Aob3BfcmVzdW1lKQogICAgICAgICBERUZJTkVf
T1Aob3BfZGVidWcpCiAgICAgICAgIERFRklORV9PUChvcF9kZWxfYnlfaWQpCiAgICAgICAgIERF
RklORV9PUChvcF9kZWxfYnlfdmFsKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKaW5kZXggNzJhMGY2
ZTYwNWU5ZWQ0MWU1N2I4YmRiYmEwZDIyNGFmMWViYmQ1OC4uZjY4Mzk0MmQyY2VkZTU1OGJkMzZk
NmY2Y2NkY2ZlM2FlMDM5ODRlNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCkBAIC00OTAsOCAr
NDkwLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9nZXRfcmVzdF9s
ZW5ndGgoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2NoZWNrX3RkeihJbnN0
cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfYXNzZXJ0KEluc3RydWN0aW9uKik7Ci0g
ICAgICAgIHZvaWQgZW1pdF9vcF9zYXZlKEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1p
dF9vcF9yZXN1bWUoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2RlYnVnKElu
c3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9kZWxfYnlfaWQoSW5zdHJ1Y3Rpb24q
KTsKICAgICAgICAgdm9pZCBlbWl0X29wX2RlbF9ieV92YWwoSW5zdHJ1Y3Rpb24qKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCmluZGV4IGQwMzE1YWM5Yzg2NzllZmE5
Y2VjZjMzOTdmNGY2OGEzYTE4ZGI1ZjEuLmZiMzNlNDU3MGY4ZTk4Yjc3ZmZkNTRkZjM0MzU4ODhl
MzJmNjEyNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rl
cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcApAQCAt
MTQ5NywxOCArMTQ5Nyw2IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9yZXN0X2xlbmd0aChJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogI2VuZGlmCiB9CiAKLXZvaWQgSklUOjplbWl0
X29wX3NhdmUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKLXsKLSAgICBKSVRTbG93
UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRo
X3NhdmUpOwotICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7Ci19Ci0KLXZvaWQgSklUOjplbWl0X29w
X3Jlc3VtZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQotewotICAgIEpJVFNsb3dQ
YXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhf
cmVzdW1lKTsKLSAgICBzbG93UGF0aENhbGwuY2FsbCgpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBK
U0MKIAogI2VuZGlmIC8vIEVOQUJMRShKSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KaW5kZXggMWI5MzI4Yzc3YWJhMTRjNTE0
ZmZkYTZhMTAwZTE3NjJiMTAzZGFjMC4uYmJhNmFlODJmZWUzZjA0MmEzYWQ2MjJlYTVmMDc0ZWY3
MTBkOTlkNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXIuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyLmFzbQpAQCAtMTcwNCwxNSArMTcwNCwxMSBAQCBfbGxpbnRfb3BfYXNzZXJ0
OgogCiAKIF9sbGludF9vcF9zYXZlOgotICAgIHRyYWNlRXhlY3V0aW9uKCkKLSAgICBjYWxsT3Bj
b2RlU2xvd1BhdGgoX3Nsb3dfcGF0aF9zYXZlKQotICAgIGRpc3BhdGNoKDQpCisgICAgbm90U3Vw
cG9ydGVkKCkKIAogCiBfbGxpbnRfb3BfcmVzdW1lOgotICAgIHRyYWNlRXhlY3V0aW9uKCkKLSAg
ICBjYWxsT3Bjb2RlU2xvd1BhdGgoX3Nsb3dfcGF0aF9yZXN1bWUpCi0gICAgZGlzcGF0Y2goMykK
KyAgICBub3RTdXBwb3J0ZWQoKQogCiAKIF9sbGludF9vcF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9u
bWVudDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAppbmRleCA1NDEzOWEw
MDk3MzFkODMyNDlkMWRmOTBiYThmNWExZTkxMDJiZTNkLi41MzhjMzU0NzlhMTA5MzM1ZjA2MDAy
Mzg4MjU3ZjRjZDI2MDI2N2I1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1BhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIu
Y3BwCkBAIC0yNjAsNyArMjYwLDcgQEAgU3RyaW5nIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUlu
bmVyKGNvbnN0IElkZW50aWZpZXImIGNhbGxlZU5hbWUsIFNvdXJjZVBhcnNlTW8KICAgICBpZiAo
bV9sZXhlci0+aXNSZXBhcnNpbmdGdW5jdGlvbigpKSB7CiAgICAgICAgIFBhcnNlckZ1bmN0aW9u
SW5mbzxBU1RCdWlsZGVyPiBmdW5jdGlvbkluZm87CiAgICAgICAgIGlmIChwYXJzZU1vZGUgPT0g
U291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JCb2R5TW9kZSkKLSAgICAgICAgICAgIG1fcGFyYW1l
dGVycyA9IGNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMoY29udGV4dCk7CisgICAgICAgICAgICBt
X3BhcmFtZXRlcnMgPSBjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKGNvbnRleHQsIGZ1bmN0aW9u
SW5mby5wYXJhbWV0ZXJDb3VudCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG1fcGFyYW1l
dGVycyA9IHBhcnNlRnVuY3Rpb25QYXJhbWV0ZXJzKGNvbnRleHQsIHBhcnNlTW9kZSwgZnVuY3Rp
b25JbmZvKTsKIApAQCAtNTEyLDEwICs1MTIsOSBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxk
ZXI+IFRyZWVTb3VyY2VFbGVtZW50cyBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VHZW5lcmF0bwog
CiAgICAgUGFyc2VyRnVuY3Rpb25JbmZvPFRyZWVCdWlsZGVyPiBpbmZvOwogICAgIGluZm8ubmFt
ZSA9ICZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5udWxsSWRlbnRpZmllcjsKLSAgICBjcmVhdGVHZW5l
cmF0b3JQYXJhbWV0ZXJzKGNvbnRleHQpOworICAgIGNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMo
Y29udGV4dCwgaW5mby5wYXJhbWV0ZXJDb3VudCk7CiAgICAgaW5mby5zdGFydE9mZnNldCA9IHBh
cmFtZXRlcnNTdGFydDsKICAgICBpbmZvLnN0YXJ0TGluZSA9IHRva2VuTGluZSgpOwotICAgIGlu
Zm8ucGFyYW1ldGVyQ291bnQgPSA0OyAvLyBnZW5lcmF0b3IsIHN0YXRlLCB2YWx1ZSwgcmVzdW1l
IG1vZGUKIAogICAgIHsKICAgICAgICAgQXV0b1BvcFNjb3BlUmVmIGdlbmVyYXRvckJvZHlTY29w
ZSh0aGlzLCBwdXNoU2NvcGUoKSk7CkBAIC0xODk5LDMyICsxODk4LDMwIEBAIHRlbXBsYXRlIDx0
eXBlbmFtZSBMZXhlclR5cGU+IHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlciwgY2xhc3MgRnVu
Y3Rpb25JbmZvVHlwCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+Ci10ZW1wbGF0
ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpGb3JtYWxQYXJhbWV0
ZXJMaXN0IFBhcnNlcjxMZXhlclR5cGU+OjpjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKFRyZWVC
dWlsZGVyJiBjb250ZXh0KQordGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiB0eXBlbmFtZSBU
cmVlQnVpbGRlcjo6Rm9ybWFsUGFyYW1ldGVyTGlzdCBQYXJzZXI8TGV4ZXJUeXBlPjo6Y3JlYXRl
R2VuZXJhdG9yUGFyYW1ldGVycyhUcmVlQnVpbGRlciYgY29udGV4dCwgdW5zaWduZWQmIHBhcmFt
ZXRlckNvdW50KQogewogICAgIGF1dG8gcGFyYW1ldGVycyA9IGNvbnRleHQuY3JlYXRlRm9ybWFs
UGFyYW1ldGVyTGlzdCgpOwogCiAgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uKHRva2VuTG9j
YXRpb24oKSk7CiAgICAgSlNUZXh0UG9zaXRpb24gcG9zaXRpb24gPSB0b2tlblN0YXJ0UG9zaXRp
b24oKTsKIAotICAgIC8vIEBnZW5lcmF0b3IKLSAgICBkZWNsYXJlUGFyYW1ldGVyKCZtX3ZtLT5w
cm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JQcml2YXRlTmFtZSgpKTsKLSAg
ICBhdXRvIGdlbmVyYXRvciA9IGNvbnRleHQuY3JlYXRlQmluZGluZ0xvY2F0aW9uKGxvY2F0aW9u
LCBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JQcml2YXRlTmFt
ZSgpLCBwb3NpdGlvbiwgcG9zaXRpb24sIEFzc2lnbm1lbnRDb250ZXh0OjpEZWNsYXJhdGlvblN0
YXRlbWVudCk7Ci0gICAgY29udGV4dC5hcHBlbmRQYXJhbWV0ZXIocGFyYW1ldGVycywgZ2VuZXJh
dG9yLCAwKTsKKyAgICBhdXRvIGFkZFBhcmFtZXRlciA9IFsmXShjb25zdCBJZGVudGlmaWVyJiBu
YW1lKSB7CisgICAgICAgIGRlY2xhcmVQYXJhbWV0ZXIoJm5hbWUpOworICAgICAgICBhdXRvIGJp
bmRpbmcgPSBjb250ZXh0LmNyZWF0ZUJpbmRpbmdMb2NhdGlvbihsb2NhdGlvbiwgbmFtZSwgcG9z
aXRpb24sIHBvc2l0aW9uLCBBc3NpZ25tZW50Q29udGV4dDo6RGVjbGFyYXRpb25TdGF0ZW1lbnQp
OworICAgICAgICBjb250ZXh0LmFwcGVuZFBhcmFtZXRlcihwYXJhbWV0ZXJzLCBiaW5kaW5nLCAw
KTsKKyAgICAgICAgKytwYXJhbWV0ZXJDb3VudDsKKyAgICB9OwogCisgICAgLy8gQGdlbmVyYXRv
cgorICAgIGFkZFBhcmFtZXRlcihtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5n
ZW5lcmF0b3JQcml2YXRlTmFtZSgpKTsKICAgICAvLyBAZ2VuZXJhdG9yU3RhdGUKLSAgICBkZWNs
YXJlUGFyYW1ldGVyKCZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZW5lcmF0
b3JTdGF0ZVByaXZhdGVOYW1lKCkpOwotICAgIGF1dG8gZ2VuZXJhdG9yU3RhdGUgPSBjb250ZXh0
LmNyZWF0ZUJpbmRpbmdMb2NhdGlvbihsb2NhdGlvbiwgbV92bS0+cHJvcGVydHlOYW1lcy0+YnVp
bHRpbk5hbWVzKCkuZ2VuZXJhdG9yU3RhdGVQcml2YXRlTmFtZSgpLCBwb3NpdGlvbiwgcG9zaXRp
b24sIEFzc2lnbm1lbnRDb250ZXh0OjpEZWNsYXJhdGlvblN0YXRlbWVudCk7Ci0gICAgY29udGV4
dC5hcHBlbmRQYXJhbWV0ZXIocGFyYW1ldGVycywgZ2VuZXJhdG9yU3RhdGUsIDApOwotCisgICAg
YWRkUGFyYW1ldGVyKG1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRv
clN0YXRlUHJpdmF0ZU5hbWUoKSk7CiAgICAgLy8gQGdlbmVyYXRvclZhbHVlCi0gICAgZGVjbGFy
ZVBhcmFtZXRlcigmbV92bS0+cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9y
VmFsdWVQcml2YXRlTmFtZSgpKTsKLSAgICBhdXRvIGdlbmVyYXRvclZhbHVlID0gY29udGV4dC5j
cmVhdGVCaW5kaW5nTG9jYXRpb24obG9jYXRpb24sIG1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0
aW5OYW1lcygpLmdlbmVyYXRvclZhbHVlUHJpdmF0ZU5hbWUoKSwgcG9zaXRpb24sIHBvc2l0aW9u
LCBBc3NpZ25tZW50Q29udGV4dDo6RGVjbGFyYXRpb25TdGF0ZW1lbnQpOwotICAgIGNvbnRleHQu
YXBwZW5kUGFyYW1ldGVyKHBhcmFtZXRlcnMsIGdlbmVyYXRvclZhbHVlLCAwKTsKLQorICAgIGFk
ZFBhcmFtZXRlcihtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JW
YWx1ZVByaXZhdGVOYW1lKCkpOwogICAgIC8vIEBnZW5lcmF0b3JSZXN1bWVNb2RlCi0gICAgZGVj
bGFyZVBhcmFtZXRlcigmbV92bS0+cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZ2VuZXJh
dG9yUmVzdW1lTW9kZVByaXZhdGVOYW1lKCkpOwotICAgIGF1dG8gZ2VuZXJhdG9yUmVzdW1lTW9k
ZSA9IGNvbnRleHQuY3JlYXRlQmluZGluZ0xvY2F0aW9uKGxvY2F0aW9uLCBtX3ZtLT5wcm9wZXJ0
eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JSZXN1bWVNb2RlUHJpdmF0ZU5hbWUoKSwg
cG9zaXRpb24sIHBvc2l0aW9uLCBBc3NpZ25tZW50Q29udGV4dDo6RGVjbGFyYXRpb25TdGF0ZW1l
bnQpOwotICAgIGNvbnRleHQuYXBwZW5kUGFyYW1ldGVyKHBhcmFtZXRlcnMsIGdlbmVyYXRvclJl
c3VtZU1vZGUsIDApOworICAgIGFkZFBhcmFtZXRlcihtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5idWls
dGluTmFtZXMoKS5nZW5lcmF0b3JSZXN1bWVNb2RlUHJpdmF0ZU5hbWUoKSk7CisgICAgLy8gQGdl
bmVyYXRvckZyYW1lCisgICAgYWRkUGFyYW1ldGVyKG1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0
aW5OYW1lcygpLmdlbmVyYXRvckZyYW1lUHJpdmF0ZU5hbWUoKSk7CiAKICAgICByZXR1cm4gcGFy
YW1ldGVyczsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFy
c2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCmluZGV4IDM5MjA0
MDRlOGJhNTIwYjIyZTRlY2QyNzc4MWMxM2RmODE5MDc0MzMuLjUwZTEzOTFiNWZkMDNkZDVlNzc4
YjhmZGI1OTIzYWE3OThhZWQxMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIu
aApAQCAtMTQyNiw3ICsxNDI2LDcgQEAgY2xhc3MgUGFyc2VyIHsKICAgICBBTFdBWVNfSU5MSU5F
IGJvb2wgaXNBcnJvd0Z1bmN0aW9uUGFyYW1ldGVycygpOwogICAgIAogICAgIHRlbXBsYXRlIDxj
bGFzcyBUcmVlQnVpbGRlciwgY2xhc3MgRnVuY3Rpb25JbmZvVHlwZT4gTkVWRVJfSU5MSU5FIHR5
cGVuYW1lIFRyZWVCdWlsZGVyOjpGb3JtYWxQYXJhbWV0ZXJMaXN0IHBhcnNlRnVuY3Rpb25QYXJh
bWV0ZXJzKFRyZWVCdWlsZGVyJiwgU291cmNlUGFyc2VNb2RlLCBGdW5jdGlvbkluZm9UeXBlJik7
Ci0gICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBORVZFUl9JTkxJTkUgdHlwZW5hbWUg
VHJlZUJ1aWxkZXI6OkZvcm1hbFBhcmFtZXRlckxpc3QgY3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVy
cyhUcmVlQnVpbGRlciYpOworICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gTkVWRVJf
SU5MSU5FIHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpGb3JtYWxQYXJhbWV0ZXJMaXN0IGNyZWF0ZUdl
bmVyYXRvclBhcmFtZXRlcnMoVHJlZUJ1aWxkZXImLCB1bnNpZ25lZCYgcGFyYW1ldGVyQ291bnQp
OwogCiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBORVZFUl9JTkxJTkUgVHJlZUNs
YXNzRXhwcmVzc2lvbiBwYXJzZUNsYXNzKFRyZWVCdWlsZGVyJiwgRnVuY3Rpb25OYW1lUmVxdWly
ZW1lbnRzLCBQYXJzZXJDbGFzc0luZm88VHJlZUJ1aWxkZXI+Jik7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCmluZGV4IGE5Yjc1NWU2
YzlhZTliOThhNjIyOTM1NDZlZTU3Y2E4MWVjOWMzMmMuLjJlODY4ZGNiMmQ3MWZlN2NmMjhlOTUw
ZjA1Yzc1OGJhODA1Y2MzMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29tbW9uU2xvd1BhdGhzLmNwcApAQCAtMzcsNyArMzcsNiBAQAogI2luY2x1ZGUgIkVycm9y
LmgiCiAjaW5jbHVkZSAiRXJyb3JIYW5kbGluZ1Njb3BlLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9u
RnV6ei5oIgotI2luY2x1ZGUgIkdlbmVyYXRvckZyYW1lLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0
dGVyLmgiCiAjaW5jbHVkZSAiSG9zdENhbGxSZXR1cm5WYWx1ZS5oIgogI2luY2x1ZGUgIkludGVy
cHJldGVyLmgiCkBAIC03NTMsMzggKzc1Miw2IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9h
c3NlcnQpCiAgICAgRU5EKCk7CiB9CiAKLVNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9zYXZlKQot
ewotICAgIC8vIE9ubHkgc2F2ZSB2YXJpYWJsZXMgYW5kIHRlbXBvcmFyeSByZWdpc3RlcnMuIFRo
ZSBzY29wZSByZWdpc3RlcnMgYXJlIGluY2x1ZGVkIGluIHRoZW0uCi0gICAgLy8gQnV0IHBhcmFt
ZXRlcnMgYXJlIG5vdCBpbmNsdWRlZC4gQmVjYXVzZSB0aGUgZ2VuZXJhdG9yIGltcGxlbWVudGF0
aW9uIHJlcGxhY2VzIHRoZSB2YWx1ZXMgb2YgcGFyYW1ldGVycyBvbiBlYWNoIGdlbmVyYXRvci5u
ZXh0KCkgY2FsbC4KLSAgICBCRUdJTigpOwotICAgIEpTVmFsdWUgZ2VuZXJhdG9yID0gT1AoMSku
anNWYWx1ZSgpOwotICAgIEdlbmVyYXRvckZyYW1lKiBmcmFtZSA9IG51bGxwdHI7Ci0gICAgSlNW
YWx1ZSB2YWx1ZSA9IGdlbmVyYXRvci5nZXQoZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLmJ1
aWx0aW5OYW1lcygpLmdlbmVyYXRvckZyYW1lUHJpdmF0ZU5hbWUoKSk7Ci0gICAgaWYgKCF2YWx1
ZS5pc051bGwoKSkKLSAgICAgICAgZnJhbWUgPSBqc0Nhc3Q8R2VuZXJhdG9yRnJhbWUqPih2YWx1
ZSk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIC8vIEZJWE1FOiBPbmNlIEpTR2VuZXJhdG9yIHNwZWNp
YWxpemVkIG9iamVjdCBpcyBpbnRyb2R1Y2VkLCB0aGlzIEdlbmVyYXRvckZyYW1lIHNob3VsZCBi
ZSBlbWJlZGVkIGludG8gaXQgdG8gYXZvaWQgYWxsb2NhdGlvbnMuCi0gICAgICAgIC8vIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE1NDUKLSAgICAgICAgZnJhbWUg
PSBHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlKGV4ZWMtPnZtKCksICBleGVjLT5jb2RlQmxvY2soKS0+
bnVtQ2FsbGVlTG9jYWxzKCkpOwotICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChnZW5lcmF0
b3IsIHRydWUsIFB1dFByb3BlcnR5U2xvdDo6UHV0QnlJZCk7Ci0gICAgICAgIGFzT2JqZWN0KGdl
bmVyYXRvciktPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5wdXQoYXNPYmplY3QoZ2VuZXJhdG9y
KSwgZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvckZy
YW1lUHJpdmF0ZU5hbWUoKSwgZnJhbWUsIHNsb3QpOwotICAgIH0KLSAgICB1bnNpZ25lZCBsaXZl
Q2FsbGVlTG9jYWxzSW5kZXggPSBwY1syXS51LnVuc2lnbmVkVmFsdWU7Ci0gICAgZnJhbWUtPnNh
dmUoZXhlYywgZXhlYy0+Y29kZUJsb2NrKCktPmxpdmVDYWxsZWVMb2NhbHNBdFlpZWxkKGxpdmVD
YWxsZWVMb2NhbHNJbmRleCkpOwotICAgIEVORCgpOwotfQotCi1TTE9XX1BBVEhfREVDTChzbG93
X3BhdGhfcmVzdW1lKQotewotICAgIEJFR0lOKCk7Ci0gICAgSlNWYWx1ZSBnZW5lcmF0b3IgPSBP
UCgxKS5qc1ZhbHVlKCk7Ci0gICAgR2VuZXJhdG9yRnJhbWUqIGZyYW1lID0ganNDYXN0PEdlbmVy
YXRvckZyYW1lKj4oZ2VuZXJhdG9yLmdldChleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuYnVp
bHRpbk5hbWVzKCkuZ2VuZXJhdG9yRnJhbWVQcml2YXRlTmFtZSgpKSk7Ci0gICAgdW5zaWduZWQg
bGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gcGNbMl0udS51bnNpZ25lZFZhbHVlOwotICAgIGZyYW1l
LT5yZXN1bWUoZXhlYywgZXhlYy0+Y29kZUJsb2NrKCktPmxpdmVDYWxsZWVMb2NhbHNBdFlpZWxk
KGxpdmVDYWxsZWVMb2NhbHNJbmRleCkpOwotICAgIEVORCgpOwotfQotCiBTTE9XX1BBVEhfREVD
TChzbG93X3BhdGhfY3JlYXRlX2xleGljYWxfZW52aXJvbm1lbnQpCiB7CiAgICAgQkVHSU4oKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRo
cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKaW5k
ZXggNjQwMWE2MTRkNTYxMTY2MzU2OWIxOGEwMjcyYjI4YWMzNTI4NmE4Mi4uM2Q5YzE1ZjVhZjBj
NzU3ZGRhMTA1MzM5MTk5MGY1NDYzODg2ODFiNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKQEAgLTI0OCw4ICsyNDgsNiBAQCBTTE9XX1BB
VEhfSElEREVOX0RFQ0woc2xvd19wYXRoX25leHRfZ2VuZXJpY19lbnVtZXJhdG9yX3BuYW1lKTsK
IFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfdG9faW5kZXhfc3RyaW5nKTsKIFNMT1df
UEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcHJvZmlsZV90eXBlX2NsZWFyX2xvZyk7CiBTTE9X
X1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2Fzc2VydCk7Ci1TTE9XX1BBVEhfSElEREVOX0RF
Q0woc2xvd19wYXRoX3NhdmUpOwotU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9yZXN1
bWUpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9jcmVhdGVfbGV4aWNhbF9lbnZp
cm9ubWVudCk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3B1c2hfd2l0aF9zY29w
ZSk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3Jlc29sdmVfc2NvcGUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJhbWUuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJhbWUuY3BwCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZGNiMDQ4OWE3MTNkNGFkODMzN2EzY2ZlNmE4MTQ5
NzE1MmExODkzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZyYW1lLmNwcAorKysgL2Rl
di9udWxsCkBAIC0xLDk0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtl
IFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
Ci0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNv
bmZpZy5oIgotI2luY2x1ZGUgIkdlbmVyYXRvckZyYW1lLmgiCi0KLSNpbmNsdWRlICJDb2RlQmxv
Y2suaCIKLSNpbmNsdWRlICJIZWFwSXRlcmF0aW9uU2NvcGUuaCIKLSNpbmNsdWRlICJKU0NJbmxp
bmVzLmgiCi0KLW5hbWVzcGFjZSBKU0MgewotCi1jb25zdCBDbGFzc0luZm8gR2VuZXJhdG9yRnJh
bWU6OnNfaW5mbyA9IHsgIkdlbmVyYXRvckZyYW1lIiwgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRF
X01FVEhPRF9UQUJMRShHZW5lcmF0b3JGcmFtZSkgfTsKLQotR2VuZXJhdG9yRnJhbWU6OkdlbmVy
YXRvckZyYW1lKFZNJiB2bSwgc2l6ZV90IG51bWJlck9mQ2FsbGVlTG9jYWxzKQotICAgIDogQmFz
ZSh2bSwgdm0uZ2VuZXJhdG9yRnJhbWVTdHJ1Y3R1cmUuZ2V0KCkpCi0gICAgLCBtX251bWJlck9m
Q2FsbGVlTG9jYWxzKG51bWJlck9mQ2FsbGVlTG9jYWxzKQotewotfQotCi12b2lkIEdlbmVyYXRv
ckZyYW1lOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCi17Ci0gICAgQmFzZTo6ZmluaXNoQ3JlYXRp
b24odm0pOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9udW1iZXJPZkNhbGxlZUxvY2Fs
czsgKytpKQotICAgICAgICBsb2NhbEF0KGkpLmNsZWFyKCk7Ci19Ci0KLVN0cnVjdHVyZSogR2Vu
ZXJhdG9yRnJhbWU6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQotewotICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNy
ZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKENlbGxUeXBlLCBTdHJ1
Y3R1cmVGbGFncyksIGluZm8oKSk7Ci19Ci0KLUdlbmVyYXRvckZyYW1lKiBHZW5lcmF0b3JGcmFt
ZTo6Y3JlYXRlKFZNJiB2bSwgc2l6ZV90IG51bWJlck9mTG9jYWxzKQotewotICAgIEdlbmVyYXRv
ckZyYW1lKiByZXN1bHQgPQotICAgICAgICBuZXcgKAotICAgICAgICAgICAgTm90TnVsbCwKLSAg
ICAgICAgICAgIGFsbG9jYXRlQ2VsbDxHZW5lcmF0b3JGcmFtZT4odm0uaGVhcCwgYWxsb2NhdGlv
blNpemVGb3JMb2NhbHMobnVtYmVyT2ZMb2NhbHMpKSkKLSAgICAgICAgR2VuZXJhdG9yRnJhbWUo
dm0sIG51bWJlck9mTG9jYWxzKTsKLSAgICByZXN1bHQtPmZpbmlzaENyZWF0aW9uKHZtKTsKLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotCi12b2lkIEdlbmVyYXRvckZyYW1lOjpzYXZlKEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZUNhbGxlZUxvY2FscykKLXsKLSAgICAv
LyBPbmx5IHNhdmUgY2FsbGVlIGxvY2Fscy4KLSAgICAvLyBFdmVyeSB0aW1lIGEgZ2VuZXJhdG9y
IGlzIGNhbGxlZCAob3IgcmVzdW1lZCksIHBhcmFtZXRlcnMgc2hvdWxkIGJlIHJlcGxhY2VkLgot
ICAgIEFTU0VSVChsaXZlQ2FsbGVlTG9jYWxzLm51bUJpdHMoKSA8PSBtX251bWJlck9mQ2FsbGVl
TG9jYWxzKTsKLSAgICBsaXZlQ2FsbGVlTG9jYWxzLmZvckVhY2hTZXRCaXQoWyZdKHNpemVfdCBp
bmRleCkgewotICAgICAgICBsb2NhbEF0KGluZGV4KS5zZXQoZXhlYy0+dm0oKSwgdGhpcywgZXhl
Yy0+dW5jaGVja2VkUih2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChpbmRleCkpLmpzVmFsdWUoKSk7
Ci0gICAgfSk7Ci19Ci0KLXZvaWQgR2VuZXJhdG9yRnJhbWU6OnJlc3VtZShFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IEZhc3RCaXRWZWN0b3ImIGxpdmVDYWxsZWVMb2NhbHMpCi17Ci0gICAgLy8gT25s
eSByZXN1bWUgY2FsbGVlIGxvY2Fscy4KLSAgICAvLyBFdmVyeSB0aW1lIGEgZ2VuZXJhdG9yIGlz
IGNhbGxlZCAob3IgcmVzdW1lZCksIHBhcmFtZXRlcnMgc2hvdWxkIGJlIHJlcGxhY2VkLgotICAg
IGxpdmVDYWxsZWVMb2NhbHMuZm9yRWFjaFNldEJpdChbJl0oc2l6ZV90IGluZGV4KSB7Ci0gICAg
ICAgIGV4ZWMtPnVuY2hlY2tlZFIodmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaW5kZXgpKSA9IGxv
Y2FsQXQoaW5kZXgpLmdldCgpOwotICAgICAgICBsb2NhbEF0KGluZGV4KS5jbGVhcigpOwotICAg
IH0pOwotfQotCi12b2lkIEdlbmVyYXRvckZyYW1lOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2Vs
bCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCi17Ci0gICAgR2VuZXJhdG9yRnJhbWUqIHRoaXNPYmpl
Y3QgPSBqc0Nhc3Q8R2VuZXJhdG9yRnJhbWUqPihjZWxsKTsKLSAgICBCYXNlOjp2aXNpdENoaWxk
cmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwotICAgIC8vIFNpbmNlIG9ubHkgdHJ1ZSBjZWxsIHBv
aW50ZXJzIGFyZSBzdG9yZWQgYXMgYSBjZWxsLCB3ZSBjYW4gc2FmZWx5IG1hcmsgdGhlbS4KLSAg
ICB2aXNpdG9yLmFwcGVuZFZhbHVlcyh0aGlzT2JqZWN0LT5sb2NhbHMoKSwgdGhpc09iamVjdC0+
bV9udW1iZXJPZkNhbGxlZUxvY2Fscyk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJhbWUuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZyYW1lLmgKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDNkNTQ1YjE0N2RkNGFiZmIyYmJiOWI1YTcxOTRlOGY3NDg0MWM0
OWEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJhbWUuaAorKysgL2Rldi9udWxsCkBA
IC0xLDkwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8
dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBHZW5lcmF0b3JGcmFt
ZV9oCi0jZGVmaW5lIEdlbmVyYXRvckZyYW1lX2gKLQotI2luY2x1ZGUgIkpTQ2VsbC5oIgotI2lu
Y2x1ZGUgPHd0Zi9GYXN0Qml0VmVjdG9yLmg+Ci0KLW5hbWVzcGFjZSBKU0MgewotCi1jbGFzcyBH
ZW5lcmF0b3JGcmFtZSA6IHB1YmxpYyBKU0NlbGwgewotICAgIGZyaWVuZCBjbGFzcyBKSVQ7Ci0j
aWYgRU5BQkxFKERGR19KSVQpCi0gICAgZnJpZW5kIGNsYXNzIERGRzo6U3BlY3VsYXRpdmVKSVQ7
Ci0gICAgZnJpZW5kIGNsYXNzIERGRzo6SklUQ29tcGlsZXI7Ci0jZW5kaWYKLSAgICBmcmllbmQg
Y2xhc3MgVk07Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBKU0NlbGwgQmFzZTsKLSAgICBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBTdHJ1Y3R1cmVJc0ltbW9ydGFsIHwgQmFz
ZTo6U3RydWN0dXJlRmxhZ3M7Ci0KLSAgICBERUNMQVJFX0VYUE9SVF9JTkZPOwotCi0gICAgc3Rh
dGljIEdlbmVyYXRvckZyYW1lKiBjcmVhdGUoVk0mLCBzaXplX3QgbnVtYmVyT2ZDYWxsZWVMb2Nh
bHMpOwotCi0gICAgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiogbG9jYWxzKCkKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8V3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPio+KGJp
dHdpc2VfY2FzdDxjaGFyKj4odGhpcykgKyBvZmZzZXRPZkxvY2FscygpKTsKLSAgICB9Ci0KLSAg
ICBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+JiBsb2NhbEF0KHNpemVfdCBpbmRleCkKLSAgICB7
Ci0gICAgICAgIEFTU0VSVChpbmRleCA8IG1fbnVtYmVyT2ZDYWxsZWVMb2NhbHMpOwotICAgICAg
ICByZXR1cm4gbG9jYWxzKClbaW5kZXhdOwotICAgIH0KLQotICAgIHN0YXRpYyBzaXplX3Qgb2Zm
c2V0T2ZMb2NhbHMoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIFdURjo6cm91bmRVcFRvTXVsdGlw
bGVPZjxzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KT4oc2l6ZW9mKEdlbmVyYXRvckZyYW1l
KSk7Ci0gICAgfQotCi0gICAgc3RhdGljIHNpemVfdCBhbGxvY2F0aW9uU2l6ZUZvckxvY2Fscyh1
bnNpZ25lZCBudW1iZXJPZkxvY2FscykKLSAgICB7Ci0gICAgICAgIHJldHVybiBvZmZzZXRPZkxv
Y2FscygpICsgbnVtYmVyT2ZMb2NhbHMgKiBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KTsK
LSAgICB9Ci0KLSAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0ds
b2JhbE9iamVjdCosIEpTVmFsdWUgcHJvdG90eXBlKTsKLQotICAgIHZvaWQgc2F2ZShFeGVjU3Rh
dGUqLCBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlQ2FsbGVlTG9jYWxzKTsKLSAgICB2b2lkIHJl
c3VtZShFeGVjU3RhdGUqLCBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlQ2FsbGVlTG9jYWxzKTsK
LQotcHJpdmF0ZToKLSAgICBHZW5lcmF0b3JGcmFtZShWTSYsIHNpemVfdCBudW1iZXJPZkNhbGxl
ZUxvY2Fscyk7Ci0KLSAgICBzaXplX3QgbV9udW1iZXJPZkNhbGxlZUxvY2FsczsKLQotICAgIGZy
aWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7Ci0KLSAgICB2b2lkIGZpbmlzaENyZWF0
aW9uKFZNJik7Ci0KLXByb3RlY3RlZDoKLSAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpT
Q2VsbCosIFNsb3RWaXNpdG9yJik7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBKU0MKLQotI2VuZGlm
IC8vIEdlbmVyYXRvckZyYW1lX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2VuZXJhdG9yRnVuY3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2VuZXJhdG9yRnVuY3Rpb24uaAppbmRleCAzNmY2MWM1ZjIwZjU2YmVmZDZjNTU3ODQy
YjE5ZTM5YjE5YTNhOTE5Li5hMWNiYWQ5NDZkYzU2ODI5ZWQxYTIxNTU3OTBiNDQwYThkZjQzMDA0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyYXRvckZ1
bmN0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0b3JG
dW5jdGlvbi5oCkBAIC01NSw2ICs1NSwxNiBAQCBjbGFzcyBKU0dlbmVyYXRvckZ1bmN0aW9uIDog
cHVibGljIEpTRnVuY3Rpb24gewogICAgICAgICBFeGVjdXRpbmcgPSAtMiwKICAgICB9OwogCisg
ICAgLy8gW3RoaXNdLCBAZ2VuZXJhdG9yLCBAZ2VuZXJhdG9yU3RhdGUsIEBnZW5lcmF0b3JWYWx1
ZSwgQGdlbmVyYXRvclJlc3VtZU1vZGUsIEBnZW5lcmF0b3JGcmFtZS4KKyAgICBlbnVtIGNsYXNz
IEdlbmVyYXRvckFyZ3VtZW50IDogaW50MzJfdCB7CisgICAgICAgIFRoaXNWYWx1ZSA9IDAsCisg
ICAgICAgIEdlbmVyYXRvciA9IDEsCisgICAgICAgIFN0YXRlID0gMiwKKyAgICAgICAgVmFsdWUg
PSAzLAorICAgICAgICBSZXN1bWVNb2RlID0gNCwKKyAgICAgICAgRnJhbWUgPSA1LAorICAgIH07
CisKICAgICBjb25zdCBzdGF0aWMgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1
Y3R1cmVGbGFnczsKIAogICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9WTS5jcHAKaW5kZXggNDYyMTgzNzZlOTU1N2Y0Yzc1NGZmYWIyMTcwZTM1ZmQ1MWJh
NGNhZC4uYTJhYzg0MTdlNGE0Mjg0M2QxMTRjNWNjOGIyMzc4NDY2ZDM2MzY2NiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtNDYsNyArNDYsNiBAQAogI2luY2x1ZGUgIkZU
TFRodW5rcy5oIgogI2luY2x1ZGUgIkZ1bmN0aW9uQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJH
Q0FjdGl2aXR5Q2FsbGJhY2suaCIKLSNpbmNsdWRlICJHZW5lcmF0b3JGcmFtZS5oIgogI2luY2x1
ZGUgIkdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIkhlYXAuaCIKICNpbmNsdWRlICJIZWFwSXRl
cmF0aW9uU2NvcGUuaCIKQEAgLTI0MSw3ICsyNDAsNiBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwg
SGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgaW5mZXJyZWRUeXBlU3RydWN0dXJlLnNldCgqdGhpcywg
SW5mZXJyZWRUeXBlOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAg
aW5mZXJyZWRUeXBlVGFibGVTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBJbmZlcnJlZFR5cGVUYWJsZTo6
Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIGZ1bmN0aW9uUmFyZURh
dGFTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBGdW5jdGlvblJhcmVEYXRhOjpjcmVhdGVTdHJ1Y3R1cmUo
KnRoaXMsIDAsIGpzTnVsbCgpKSk7Ci0gICAgZ2VuZXJhdG9yRnJhbWVTdHJ1Y3R1cmUuc2V0KCp0
aGlzLCBHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkp
OwogICAgIGV4Y2VwdGlvblN0cnVjdHVyZS5zZXQoKnRoaXMsIEV4Y2VwdGlvbjo6Y3JlYXRlU3Ry
dWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIHByb21pc2VEZWZlcnJlZFN0cnVjdHVy
ZS5zZXQoKnRoaXMsIEpTUHJvbWlzZURlZmVycmVkOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAs
IGpzTnVsbCgpKSk7CiAgICAgaW50ZXJuYWxQcm9taXNlRGVmZXJyZWRTdHJ1Y3R1cmUuc2V0KCp0
aGlzLCBKU0ludGVybmFsUHJvbWlzZURlZmVycmVkOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAs
IGpzTnVsbCgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAppbmRleCA5NjE1ZjYwMjdh
OWRjY2RhYjUzZGIxMmM2ODQ3N2ExNWFlMDdlMGZmLi43MGUxNTkxMWQ3ZjllODk4NTlhZDM2ZTBh
OGU4NzdhOThlYzZmYjEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKQEAgLTMxOSw3
ICszMTksNiBAQCBjbGFzcyBWTSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxWTT4gewog
ICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGluZmVycmVkVHlwZVN0cnVjdHVyZTsKICAgICBTdHJvbmc8
U3RydWN0dXJlPiBpbmZlcnJlZFR5cGVUYWJsZVN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0
dXJlPiBmdW5jdGlvblJhcmVEYXRhU3RydWN0dXJlOwotICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGdl
bmVyYXRvckZyYW1lU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGV4Y2VwdGlvblN0
cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBwcm9taXNlRGVmZXJyZWRTdHJ1Y3R1cmU7
CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gaW50ZXJuYWxQcm9taXNlRGVmZXJyZWRTdHJ1Y3R1cmU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAzMjUzNmJmM2Jk
YTliNDM4MDMwYWQ2NWJlMjQ1M2ZhOGM5NTIwOWRmLi5iN2RmODNlZTA4MzBkODQ3MWM0YjBmYmM4
YmI2YTRiZGU2YWU4ZjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTMzNSw2ICszMzUsOSBAQAogCQlGRTg5MjVCMDFEMDBEQUVDMDA0NjkwN0UgLyogSW5k
ZW50ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZF
ODkyNUFGMUQwMERBRUMwMDQ2OTA3RSAvKiBJbmRlbnRlci5oICovOyB9OwogCQlGRURBQ0QzRDE2
MzBGODNGMDBDNjk2MzQgLyogU3RhY2tTdGF0cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRURBQ0QzQjE2MzBGODNGMDBDNjk2MzQgLyogU3RhY2tT
dGF0cy5jcHAgKi87IH07CiAJCUZFREFDRDNFMTYzMEY4M0YwMEM2OTYzNCAvKiBTdGFja1N0YXRz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRURBQ0Qz
QzE2MzBGODNGMDBDNjk2MzQgLyogU3RhY2tTdGF0cy5oICovOyB9OworCQlDOEIwRTFBMUUwMUE0
ODZFQjk1RTBEMTEgLyogSW5kZXhTZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDMxMzdFMUQ3REJEODRBQzM4RkFFNEQzNCAvKiBJbmRleFNldC5oICov
OyB9OworCQlDOTE2Qjk3NUYwMkY0RjdFOEI0QUIxMkQgLyogSW5kZXhNYXAuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVCNDMzODNBNUQwQjQ2M0M5NDMz
RDkzMyAvKiBJbmRleE1hcC5oICovOyB9OworCQk0QjI2ODBERDlCOTc0NDAyODk5RUQ1NzIgLyog
SW5kZXhlZENvbnRhaW5lckl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5QzY3QzU0MjU4OTM0OEUyODVCNDk2OTkgLyogSW5kZXhlZENvbnRh
aW5lckl0ZXJhdG9yLmggKi87IH07CiAvKiBFbmQgUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KIAog
LyogQmVnaW4gUEJYQ29udGFpbmVySXRlbVByb3h5IHNlY3Rpb24gKi8KQEAgLTY4Miw2ICs2ODUs
OSBAQAogCQlGRTg5MjVBRjFEMDBEQUVDMDA0NjkwN0UgLyogSW5kZW50ZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5kZW50ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRkVEQUNEM0IxNjMwRjgzRjAwQzY5NjM0IC8qIFN0YWNrU3RhdHMuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RhY2tTdGF0cy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFREFDRDNDMTYzMEY4M0YwMEM2OTYzNCAvKiBTdGFja1N0
YXRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0YWNrU3RhdHMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzEzN0UxRDdEQkQ4NEFDMzhGQUU0RDM0IC8qIElu
ZGV4U2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEluZGV4U2V0Lmg7IHBh
dGggPSBJbmRleFNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QjQzMzgzQTVE
MEI0NjNDOTQzM0Q5MzMgLyogSW5kZXhNYXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gSW5kZXhNYXAuaDsgcGF0aCA9IEluZGV4TWFwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTlDNjdDNTQyNTg5MzQ4RTI4NUI0OTY5OSAvKiBJbmRleGVkQ29udGFpbmVySXRl
cmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSW5kZXhlZENvbnRhaW5l
ckl0ZXJhdG9yLmg7IHBhdGggPSBJbmRleGVkQ29udGFpbmVySXRlcmF0b3IuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIC8qIEVuZCBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KIAog
LyogQmVnaW4gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwpAQCAtMTA0MSw2ICsx
MDQ3LDkgQEAKIAkJCQlFNEEwQUQzODFBOTYyNDU1MDA1MzZERjYgLyogV29ya1F1ZXVlLmggKi8s
CiAJCQkJQThBNDczN0ExNTFBODI1QjAwNDEyM0ZGIC8qIFdURlRocmVhZERhdGEuY3BwICovLAog
CQkJCUE4QTQ3MzdCMTUxQTgyNUIwMDQxMjNGRiAvKiBXVEZUaHJlYWREYXRhLmggKi8sCisJCQkJ
MzEzN0UxRDdEQkQ4NEFDMzhGQUU0RDM0IC8qIEluZGV4U2V0LmggKi8sCisJCQkJNUI0MzM4M0E1
RDBCNDYzQzk0MzNEOTMzIC8qIEluZGV4TWFwLmggKi8sCisJCQkJOUM2N0M1NDI1ODkzNDhFMjg1
QjQ5Njk5IC8qIEluZGV4ZWRDb250YWluZXJJdGVyYXRvci5oICovLAogCQkJKTsKIAkJCXBhdGgg
PSB3dGY7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMTQzOSw2ICsxNDQ4LDkgQEAK
IAkJCQlBOEE0NzQ0NjE1MUE4MjVCMDA0MTIzRkYgLyogV1RGU3RyaW5nLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBOEE0NzQ4NzE1MUE4MjVCMDA0MTIzRkYgLyogV1RGVGhyZWFkRGF0YS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQ0U3M0UwMjUxOURDQjdBQjAwNTgwRDVDIC8qIFhQQ1NQSS5oIGluIEhl
YWRlcnMgKi8sCisJCQkJQzhCMEUxQTFFMDFBNDg2RUI5NUUwRDExIC8qIEluZGV4U2V0LmggaW4g
SGVhZGVycyAqLywKKwkJCQlDOTE2Qjk3NUYwMkY0RjdFOEI0QUIxMkQgLyogSW5kZXhNYXAuaCBp
biBIZWFkZXJzICovLAorCQkJCTRCMjY4MEREOUI5NzQ0MDI4OTlFRDU3MiAvKiBJbmRleGVkQ29u
dGFpbmVySXRlcmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBs
b3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAppbmRleCA2
Y2E4OTNkNWIyNTAyN2QyNzkzY2ZjOTYxZTNlYmQ0ZmJlNzY4MjdkLi44Njc5OTllYTkyODZiOTUz
ZjEzMzcwOWI2ZGU0OTAwNWUwNGMxNGFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9DTWFr
ZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dApAQCAtNDUsNiAr
NDUsMTAgQEAgc2V0KFdURl9IRUFERVJTCiAgICAgSGFzaFRhYmxlLmgKICAgICBIYXNoVHJhaXRz
LmgKICAgICBIZXhOdW1iZXIuaAorICAgIEluZGV4TWFwLmgKKyAgICBJbmRleFNldC5oCisgICAg
SW5kZXhTcGFyc2VTZXQuaAorICAgIEluZGV4ZWRDb250YWluZXJJdGVyYXRvci5oCiAgICAgSXRl
cmF0b3JBZGFwdG9ycy5oCiAgICAgSXRlcmF0b3JSYW5nZS5oCiAgICAgTGlzdEhhc2hTZXQuaApk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRmFzdEJpdFZlY3Rvci5oIGIvU291cmNlL1dURi93
dGYvRmFzdEJpdFZlY3Rvci5oCmluZGV4IDk4ZmZmNWNmNzM1M2U2YmM2N2RhNWM1NTk0MGNjY2U0
ZTRiMTU2ZDAuLmZmMDBiN2I1NGQ0YTBjZmY0YmVmN2QwMzg1NGRlNmI5MGNlMWRiOTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0Zhc3RCaXRWZWN0b3IuaAorKysgYi9Tb3VyY2UvV1RGL3d0
Zi9GYXN0Qml0VmVjdG9yLmgKQEAgLTIzLDggKzIzLDcgQEAKICAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICov
CiAKLSNpZm5kZWYgRmFzdEJpdFZlY3Rvcl9oCi0jZGVmaW5lIEZhc3RCaXRWZWN0b3JfaAorI3By
YWdtYSBvbmNlCiAKICNpbmNsdWRlIDxzdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxv
Yy5oPgpAQCAtMzYsMTIgKzM1LDE0IEBAIGNsYXNzIFByaW50U3RyZWFtOwogCiBjbGFzcyBGYXN0
Qml0VmVjdG9yIHsKIHB1YmxpYzoKLSAgICBGYXN0Qml0VmVjdG9yKCkKLSAgICAgICAgOiBtX2Fy
cmF5KDApCi0gICAgICAgICwgbV9udW1CaXRzKDApCisgICAgRmFzdEJpdFZlY3RvcigpID0gZGVm
YXVsdDsKKworICAgIEZhc3RCaXRWZWN0b3IoRmFzdEJpdFZlY3RvciYmIG90aGVyKQorICAgICAg
ICA6IG1fYXJyYXkoc3RkOjpleGNoYW5nZShvdGhlci5tX2FycmF5LCBudWxscHRyKSkKKyAgICAg
ICAgLCBtX251bUJpdHMoc3RkOjpleGNoYW5nZShvdGhlci5tX251bUJpdHMsIDApKQogICAgIHsK
ICAgICB9Ci0gICAgCisKICAgICBGYXN0Qml0VmVjdG9yKGNvbnN0IEZhc3RCaXRWZWN0b3ImIG90
aGVyKQogICAgICAgICA6IG1fYXJyYXkoMCkKICAgICAgICAgLCBtX251bUJpdHMoMCkKQEAgLTIw
MiwxMyArMjAzLDEwIEBAIGNsYXNzIEZhc3RCaXRWZWN0b3IgewogICAgIHN0YXRpYyBzaXplX3Qg
YXJyYXlMZW5ndGgoc2l6ZV90IG51bUJpdHMpIHsgcmV0dXJuIChudW1CaXRzICsgMzEpID4+IDU7
IH0KICAgICBzaXplX3QgYXJyYXlMZW5ndGgoKSBjb25zdCB7IHJldHVybiBhcnJheUxlbmd0aCht
X251bUJpdHMpOyB9CiAgICAgCi0gICAgdWludDMyX3QqIG1fYXJyYXk7IC8vIE5vLCB0aGlzIGNh
bid0IGJlIGFuIHN0ZDo6dW5pcXVlX3B0cjx1aW50MzJfdFtdPi4KLSAgICBzaXplX3QgbV9udW1C
aXRzOworICAgIHVpbnQzMl90KiBtX2FycmF5IHsgbnVsbHB0ciB9OyAvLyBObywgdGhpcyBjYW4n
dCBiZSBhbiBzdGQ6OnVuaXF1ZV9wdHI8dWludDMyX3RbXT4uCisgICAgc2l6ZV90IG1fbnVtQml0
cyB7IDAgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdURgogCiB1c2luZyBXVEY6OkZhc3RCaXRW
ZWN0b3I7Ci0KLSNlbmRpZiAvLyBGYXN0Qml0VmVjdG9yX2gKLQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvSW5kZXhNYXAuaCBiL1NvdXJjZS9XVEYvd3RmL0luZGV4TWFwLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMDJkNjEwMTdhNDE1YzQ3MzkxNmFiODE2NjhjMTZiMDBiZGU1MjQyYgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XVEYvd3RmL0luZGV4TWFwLmgKQEAgLTAsMCArMSw4MiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV1RGIHsKKworLy8gVGhp
cyBpcyBhIG1hcCBmb3Iga2V5cyB0aGF0IGhhdmUgYW4gaW5kZXgoKS4gSXQncyBzdXBlciBlZmZp
Y2llbnQgZm9yIEJhc2ljQmxvY2tzLiBJdCdzIG9ubHkKKy8vIGVmZmljaWVudCBmb3IgVmFsdWVz
IGlmIHlvdSBkb24ndCBjcmVhdGUgdG9vIG1hbnkgb2YgdGhlc2UgbWFwcywgc2luY2UgVmFsdWVz
IGNhbiBoYXZlIHZlcnkKKy8vIHNwYXJzZSBpbmRpY2VzIGFuZCB0aGVyZSBhcmUgYSBsb3Qgb2Yg
VmFsdWVzLgorCit0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlPgorY2xhc3Mg
SW5kZXhNYXAgeworcHVibGljOgorICAgIGV4cGxpY2l0IEluZGV4TWFwKHNpemVfdCBzaXplID0g
MCkKKyAgICB7CisgICAgICAgIG1fdmVjdG9yLmZpbGwoVmFsdWUoKSwgc2l6ZSk7CisgICAgfQor
CisgICAgdm9pZCByZXNpemUoc2l6ZV90IHNpemUpCisgICAgeworICAgICAgICBtX3ZlY3Rvci5m
aWxsKFZhbHVlKCksIHNpemUpOworICAgIH0KKworICAgIHZvaWQgY2xlYXIoKQorICAgIHsKKyAg
ICAgICAgbV92ZWN0b3IuZmlsbChWYWx1ZSgpLCBtX3ZlY3Rvci5zaXplKCkpOworICAgIH0KKwor
ICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV92ZWN0b3Iuc2l6ZSgpOyB9CisKKyAg
ICBWYWx1ZSYgb3BlcmF0b3JbXShzaXplX3QgaW5kZXgpCisgICAgeworICAgICAgICByZXR1cm4g
bV92ZWN0b3JbaW5kZXhdOworICAgIH0KKworICAgIGNvbnN0IFZhbHVlJiBvcGVyYXRvcltdKHNp
emVfdCBpbmRleCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX3ZlY3RvcltpbmRleF07
CisgICAgfQorICAgIAorICAgIFZhbHVlJiBvcGVyYXRvcltdKEtleSoga2V5KQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIG1fdmVjdG9yW2tleS0+aW5kZXgoKV07CisgICAgfQorICAgIAorICAgIGNv
bnN0IFZhbHVlJiBvcGVyYXRvcltdKEtleSoga2V5KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0
dXJuIG1fdmVjdG9yW2tleS0+aW5kZXgoKV07CisgICAgfQorCitwcml2YXRlOgorICAgIFZlY3Rv
cjxWYWx1ZT4gbV92ZWN0b3I7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXVEYKKwordXNpbmcgV1RG
OjpJbmRleE1hcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0luZGV4U2V0LmggYi9Tb3Vy
Y2UvV1RGL3d0Zi9JbmRleFNldC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYxYmQwNGYyZDE1YWI2Y2QyYTY5Y2M0
NDViOGQ3MzZiMjJjMDViNjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9JbmRl
eFNldC5oCkBAIC0wLDAgKzEsMTYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvQml0VmVj
dG9yLmg+CisjaW5jbHVkZSA8d3RmL0NvbW1hUHJpbnRlci5oPgorCituYW1lc3BhY2UgV1RGIHsK
KworLy8gVGhpcyBpcyBhIHNldCBmb3IgdGhpbmdzIHRoYXQgaGF2ZSBhbiBpbmRleCgpLiBJdCdz
IHN1cGVyIGVmZmljaWVudCBmb3IgQmFzaWNCbG9ja3MuIEl0J3Mgb25seQorLy8gZWZmaWNpZW50
IGZvciBWYWx1ZXMgaWYgeW91IGRvbid0IGNyZWF0ZSB0b28gbWFueSBvZiB0aGVzZSBzZXRzLCBz
aW5jZSBWYWx1ZXMgY2FuIGhhdmUgdmVyeSBzcGFyc2UKKy8vIGluZGljZXMgYW5kIHRoZXJlIGFy
ZSBhIGxvdCBvZiBWYWx1ZXMuCisKKy8vIElmIHlvdSB3YW50IGEgc2V0IG9mIEJhc2ljQmxvY2tz
LCB5b3UgZG8gSW5kZXhTZXQ8QmFzaWNCbG9jaz4uIFNvLCBUID0gQmFzaWNCbG9jay4KK3RlbXBs
YXRlPHR5cGVuYW1lIFQ+CitjbGFzcyBJbmRleFNldCB7CitwdWJsaWM6CisgICAgSW5kZXhTZXQo
KQorICAgIHsKKyAgICB9CisKKyAgICBib29sIGFkZChUKiB2YWx1ZSkKKyAgICB7CisgICAgICAg
IHJldHVybiAhbV9zZXQuc2V0KHZhbHVlLT5pbmRleCgpKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBJdGVyYWJsZT4KKyAgICBib29sIGFkZEFsbChjb25zdCBJdGVyYWJsZSYgaXRl
cmFibGUpCisgICAgeworICAgICAgICBib29sIHJlc3VsdCA9IGZhbHNlOworICAgICAgICBmb3Ig
KFQqIHZhbHVlIDogaXRlcmFibGUpCisgICAgICAgICAgICByZXN1bHQgfD0gYWRkKHZhbHVlKTsK
KyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICBib29sIHJlbW92ZShUKiB2YWx1
ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBtX3NldC5jbGVhcih2YWx1ZS0+aW5kZXgoKSk7Cisg
ICAgfQorCisgICAgYm9vbCBjb250YWlucyhUKiB2YWx1ZSkgY29uc3QKKyAgICB7CisgICAgICAg
IGlmICghdmFsdWUpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBt
X3NldC5nZXQodmFsdWUtPmluZGV4KCkpOworICAgIH0KKworICAgIHNpemVfdCBzaXplKCkgY29u
c3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX3NldC5iaXRDb3VudCgpOworICAgIH0KKworICAg
IGJvb2wgaXNFbXB0eSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gIXNpemUoKTsKKyAg
ICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDb2xsZWN0aW9uVHlwZT4KKyAgICBjbGFzcyBJ
dGVyYWJsZSB7CisgICAgcHVibGljOgorICAgICAgICBJdGVyYWJsZShjb25zdCBDb2xsZWN0aW9u
VHlwZSYgY29sbGVjdGlvbiwgY29uc3QgQml0VmVjdG9yJiBzZXQpCisgICAgICAgICAgICA6IG1f
Y29sbGVjdGlvbihjb2xsZWN0aW9uKQorICAgICAgICAgICAgLCBtX3NldChzZXQpCisgICAgICAg
IHsKKyAgICAgICAgfQorCisgICAgICAgIGNsYXNzIGl0ZXJhdG9yIHsKKyAgICAgICAgcHVibGlj
OgorICAgICAgICAgICAgaXRlcmF0b3IoKQorICAgICAgICAgICAgICAgIDogbV9jb2xsZWN0aW9u
KG51bGxwdHIpCisgICAgICAgICAgICB7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGl0
ZXJhdG9yKGNvbnN0IENvbGxlY3Rpb25UeXBlJiBjb2xsZWN0aW9uLCBCaXRWZWN0b3I6Oml0ZXJh
dG9yIGl0ZXIpCisgICAgICAgICAgICAgICAgOiBtX2NvbGxlY3Rpb24oJmNvbGxlY3Rpb24pCisg
ICAgICAgICAgICAgICAgLCBtX2l0ZXIoaXRlcikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgVCogb3BlcmF0b3IqKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gbV9jb2xsZWN0aW9uLT5hdCgqbV9pdGVyKTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgaXRlcmF0b3ImIG9wZXJhdG9yKysoKQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgICsrbV9pdGVyOworICAgICAgICAgICAgICAgIHJldHVybiAqdGhpczsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IGl0ZXJhdG9y
JiBvdGhlcikgY29uc3QKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gbV9p
dGVyID09IG90aGVyLm1faXRlcjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgYm9vbCBv
cGVyYXRvciE9KGNvbnN0IGl0ZXJhdG9yJiBvdGhlcikgY29uc3QKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgcHJpdmF0ZToKKyAgICAgICAgICAgIGNvbnN0IENvbGxlY3Rpb25UeXBlKiBtX2Nv
bGxlY3Rpb247CisgICAgICAgICAgICBCaXRWZWN0b3I6Oml0ZXJhdG9yIG1faXRlcjsKKyAgICAg
ICAgfTsKKworICAgICAgICBpdGVyYXRvciBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIGl0ZXJhdG9y
KG1fY29sbGVjdGlvbiwgbV9zZXQuYmVnaW4oKSk7IH0KKyAgICAgICAgaXRlcmF0b3IgZW5kKCkg
Y29uc3QgeyByZXR1cm4gaXRlcmF0b3IobV9jb2xsZWN0aW9uLCBtX3NldC5lbmQoKSk7IH0KKwor
ICAgIHByaXZhdGU6CisgICAgICAgIGNvbnN0IENvbGxlY3Rpb25UeXBlJiBtX2NvbGxlY3Rpb247
CisgICAgICAgIGNvbnN0IEJpdFZlY3RvciYgbV9zZXQ7CisgICAgfTsKKworICAgIC8vIEZvciBi
YXNpYyBibG9ja3MsIHlvdSBkbzoKKyAgICAvLyBpbmRleFNldC52YWx1ZXMocHJvY2VkdXJlKTsK
KyAgICAvLworICAgIC8vIEZvciB2YWx1ZXMsIHlvdSBkbzoKKyAgICAvLyBpbmRleFNldC52YWx1
ZXMocHJvY2VkdXJlLnZhbHVlcygpKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDb2xsZWN0aW9u
VHlwZT4KKyAgICBJdGVyYWJsZTxDb2xsZWN0aW9uVHlwZT4gdmFsdWVzKGNvbnN0IENvbGxlY3Rp
b25UeXBlJiBjb2xsZWN0aW9uKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIEl0ZXJhYmxl
PENvbGxlY3Rpb25UeXBlPihjb2xsZWN0aW9uLCBpbmRpY2VzKCkpOworICAgIH0KKworICAgIGNv
bnN0IEJpdFZlY3RvciYgaW5kaWNlcygpIGNvbnN0IHsgcmV0dXJuIG1fc2V0OyB9CisKKyAgICB2
b2lkIGR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKKyAgICB7CisgICAgICAgIENvbW1hUHJp
bnRlciBjb21tYTsKKyAgICAgICAgZm9yIChzaXplX3QgaW5kZXggOiBpbmRpY2VzKCkpCisgICAg
ICAgICAgICBvdXQucHJpbnQoY29tbWEsIFQ6OmR1bXBQcmVmaXgsIGluZGV4KTsKKyAgICB9CisK
K3ByaXZhdGU6CisgICAgQml0VmVjdG9yIG1fc2V0OworfTsKKworfSAvLyBuYW1lc3BhY2UgV1RG
CisKK3VzaW5nIFdURjo6SW5kZXhTZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9JbmRl
eGVkQ29udGFpbmVySXRlcmF0b3IuaCBiL1NvdXJjZS9XVEYvd3RmL0luZGV4ZWRDb250YWluZXJJ
dGVyYXRvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNlOWI5ZTM3YTEyNDdkOTA3YmU4MzBjOWQyMDEyZjc3YTFi
NzM3NzEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9JbmRleGVkQ29udGFpbmVy
SXRlcmF0b3IuaApAQCAtMCwwICsxLDgxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIw
MTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHR5cGVfdHJh
aXRzPgorCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8Y2xhc3MgQ29udGFpbmVyPgorY2xh
c3MgSW5kZXhlZENvbnRhaW5lckl0ZXJhdG9yIHsKK3B1YmxpYzoKKyAgICBJbmRleGVkQ29udGFp
bmVySXRlcmF0b3IoKQorICAgICAgICA6IG1fY29udGFpbmVyKG51bGxwdHIpCisgICAgICAgICwg
bV9pbmRleCgwKQorICAgIHsKKyAgICB9CisKKyAgICBJbmRleGVkQ29udGFpbmVySXRlcmF0b3Io
Y29uc3QgQ29udGFpbmVyJiBjb250YWluZXIsIHVuc2lnbmVkIGluZGV4KQorICAgICAgICA6IG1f
Y29udGFpbmVyKCZjb250YWluZXIpCisgICAgICAgICwgbV9pbmRleChmaW5kTmV4dChpbmRleCkp
CisgICAgeworICAgIH0KKworICAgIGF1dG8gb3BlcmF0b3IqKCkgLT4gdHlwZW5hbWUgc3RkOjpy
ZXN1bHRfb2Y8ZGVjbHR5cGUoJkNvbnRhaW5lcjo6YXQpKGNvbnN0IENvbnRhaW5lciwgdW5zaWdu
ZWQpPjo6dHlwZQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fY29udGFpbmVyLT5hdChtX2luZGV4
KTsKKyAgICB9CisKKyAgICBJbmRleGVkQ29udGFpbmVySXRlcmF0b3ImIG9wZXJhdG9yKysoKQor
ICAgIHsKKyAgICAgICAgbV9pbmRleCA9IGZpbmROZXh0KG1faW5kZXggKyAxKTsKKyAgICAgICAg
cmV0dXJuICp0aGlzOworICAgIH0KKworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBJbmRleGVk
Q29udGFpbmVySXRlcmF0b3ImIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKG1f
Y29udGFpbmVyID09IG90aGVyLm1fY29udGFpbmVyKTsKKyAgICAgICAgcmV0dXJuIG1faW5kZXgg
PT0gb3RoZXIubV9pbmRleDsKKyAgICB9CisKKyAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgSW5k
ZXhlZENvbnRhaW5lckl0ZXJhdG9yJiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVy
biAhKCp0aGlzID09IG90aGVyKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgdW5zaWduZWQgZmlu
ZE5leHQodW5zaWduZWQgaW5kZXgpCisgICAgeworICAgICAgICB3aGlsZSAoaW5kZXggPCBtX2Nv
bnRhaW5lci0+c2l6ZSgpICYmICFtX2NvbnRhaW5lci0+YXQoaW5kZXgpKQorICAgICAgICAgICAg
aW5kZXgrKzsKKyAgICAgICAgcmV0dXJuIGluZGV4OworICAgIH0KKworICAgIGNvbnN0IENvbnRh
aW5lciogbV9jb250YWluZXI7CisgICAgdW5zaWduZWQgbV9pbmRleDsKK307CisKK30gLy8gbmFt
ZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5n
ZUxvZwppbmRleCA1ZDI4Njg1NGQ3NjQ0ZjFmYzI4NTI2Y2Y0NGM4Y2U0NzI3MmU4ZTA1Li4wMTE2
YWIxOTRiZmYwOTRkN2I0YmQ0ZWMzOGNkZDQxMDIwNDU2ZmI5IDEwMDY0NAotLS0gYS9KU1Rlc3Rz
L0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDE2
LTA4LTIzICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAg
IFtERkddW0ZUTF0gSW1wbGVtZW50IEVTNiBHZW5lcmF0b3JzIGluIERGRyAvIEZUTAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUyNzIzCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzdHJlc3MvZ2VuZXJh
dG9yLWZpYi1mdGwtYW5kLWFycmF5LmpzOiBBZGRlZC4KKyAgICAgICAgKGZpYik6CisgICAgICAg
ICogc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLWFuZC1vYmplY3QuanM6IEFkZGVkLgorICAgICAg
ICAoZmliKToKKyAgICAgICAgKiBzdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwtYW5kLXN0cmluZy5q
czogQWRkZWQuCisgICAgICAgIChmaWIpOgorICAgICAgICAqIHN0cmVzcy9nZW5lcmF0b3ItZmli
LWZ0bC5qczogQWRkZWQuCisgICAgICAgIChmaWIpOgorICAgICAgICAqIHN0cmVzcy9nZW5lcmF0
b3ItZnJhbWUtZW1wdHkuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkVGhyb3cpOgorICAgICAg
ICAoc2hvdWxkVGhyb3cuZmliKToKKyAgICAgICAgKiBzdHJlc3MvZ2VuZXJhdG9yLXJlZHVjZWQt
c2F2ZS1wb2ludC1wdXQtdG8tc2NvcGUuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgor
ICAgICAgICAoZ2VuKToKKyAgICAgICAgKiBzdHJlc3MvZ2VuZXJhdG9yLXRyYW5zZmVyLXJlZ2lz
dGVyLWJleW9uZC1tdXRpcGxlLXlpZWxkcy5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6
CisgICAgICAgIChnZW4pOgorCiAyMDE2LTA4LTIyICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBs
ZS5jb20+CiAKICAgICAgICAgQnV0dGVyZmxpZXMgc2hvdWxkIGJlIGFsbG9jYXRlZCBpbiBBdXhp
bGlhcnkgTWFya2VkU3BhY2UgaW5zdGVhZCBvZiBDb3BpZWRTcGFjZSBhbmQgd2Ugc2hvdWxkIHJl
d3JpdGUgYXMgbXVjaCBvZiB0aGUgR0MgYXMgbmVlZGVkIHRvIG1ha2UgdGhpcyBub3QgYSByZWdy
ZXNzaW9uCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQt
YXJyYXkuanMgYi9KU1Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQtYXJyYXkuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZmU5Mzk4MTJmZGJhZWM2YjgzMmJmZDAwZjIxNTNkZWY4NGJiNzU5MgotLS0g
L2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLWFuZC1hcnJh
eS5qcwpAQCAtMCwwICsxLDIzIEBACisoZnVuY3Rpb24gKCkgeworICAgIGZ1bmN0aW9uICpmaWIo
KQorICAgIHsKKyAgICAgICAgbGV0IGEgPSAxOworICAgICAgICBsZXQgYiA9IDE7CisgICAgICAg
IGxldCBjID0gWyAwIF07CisgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICBjWzBd
ID0gYTsKKyAgICAgICAgICAgIHlpZWxkIGM7CisgICAgICAgICAgICBbYSwgYl0gPSBbYiwgYSAr
IGJdOworICAgICAgICB9CisgICAgfQorCisgICAgbGV0IHZhbHVlID0gMDsKKyAgICBmb3IgKGxl
dCBpID0gMDsgaSA8IDFlNDsgKytpKSB7CisgICAgICAgIGxldCBmID0gZmliKCk7CisgICAgICAg
IGZvciAobGV0IGkgPSAwOyBpIDwgMTAwOyArK2kpIHsKKyAgICAgICAgICAgIHZhbHVlID0gZi5u
ZXh0KCkudmFsdWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHZhbHVlWzBdICE9PSAzNTQyMjQ4
NDgxNzkyNjIwMDAwMDApCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCB2YWx1ZTok
e3Jlc3VsdH1gKTsKKyAgICB9Cit9KCkpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvZ2Vu
ZXJhdG9yLWZpYi1mdGwtYW5kLW9iamVjdC5qcyBiL0pTVGVzdHMvc3RyZXNzL2dlbmVyYXRvci1m
aWItZnRsLWFuZC1vYmplY3QuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjY3MzQwZjJlYTRjNzQzOGEyZDIwOWFh
NDBkMDY3N2U0YWI3ZDNmYgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2dlbmVy
YXRvci1maWItZnRsLWFuZC1vYmplY3QuanMKQEAgLTAsMCArMSwyMyBAQAorKGZ1bmN0aW9uICgp
IHsKKyAgICBmdW5jdGlvbiAqZmliKCkKKyAgICB7CisgICAgICAgIGxldCBhID0gMTsKKyAgICAg
ICAgbGV0IGIgPSAxOworICAgICAgICBsZXQgYyA9IHsgZmliOiAwIH07CisgICAgICAgIHdoaWxl
ICh0cnVlKSB7CisgICAgICAgICAgICBjLmZpYiA9IGE7CisgICAgICAgICAgICB5aWVsZCBjOwor
ICAgICAgICAgICAgW2EsIGJdID0gW2IsIGEgKyBiXTsKKyAgICAgICAgfQorICAgIH0KKworICAg
IGxldCB2YWx1ZSA9IDA7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxZTQ7ICsraSkgeworICAg
ICAgICBsZXQgZiA9IGZpYigpOworICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDsgKytp
KSB7CisgICAgICAgICAgICB2YWx1ZSA9IGYubmV4dCgpLnZhbHVlOworICAgICAgICB9CisgICAg
ICAgIGlmICh2YWx1ZS5maWIgIT09IDM1NDIyNDg0ODE3OTI2MjAwMDAwMCkKKyAgICAgICAgICAg
IHRocm93IG5ldyBFcnJvcihgYmFkIHZhbHVlOiR7cmVzdWx0fWApOworICAgIH0KK30oKSk7CmRp
ZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQtc3RyaW5nLmpz
IGIvSlNUZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwtYW5kLXN0cmluZy5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40MzhhZTZhYjMzNDcwNDY4MjI4NDlmNDMwMDRlYTVjNDAzZWVkYTI4Ci0tLSAvZGV2L251
bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwtYW5kLXN0cmluZy5qcwpA
QCAtMCwwICsxLDIyIEBACisoZnVuY3Rpb24gKCkgeworICAgIGZ1bmN0aW9uICpmaWIoKQorICAg
IHsKKyAgICAgICAgbGV0IGEgPSAxOworICAgICAgICBsZXQgYiA9IDE7CisgICAgICAgIGxldCBj
ID0gIlJlc3VsdCEgIjsKKyAgICAgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgICAgIHlpZWxk
IGMgKyBhOworICAgICAgICAgICAgW2EsIGJdID0gW2IsIGEgKyBiXTsKKyAgICAgICAgfQorICAg
IH0KKworICAgIGxldCB2YWx1ZSA9IDA7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxZTQ7ICsr
aSkgeworICAgICAgICBsZXQgZiA9IGZpYigpOworICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8
IDEwMDsgKytpKSB7CisgICAgICAgICAgICB2YWx1ZSA9IGYubmV4dCgpLnZhbHVlOworICAgICAg
ICB9CisgICAgICAgIGlmICh2YWx1ZSAhPT0gYFJlc3VsdCEgMzU0MjI0ODQ4MTc5MjYyMDAwMDAw
YCkKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIHZhbHVlOiR7cmVzdWx0fWApOwor
ICAgIH0KK30oKSk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0
bC5qcyBiL0pTVGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM0
MGUzM2RiYzg2OGJlYTdhODkzYzllYzE2Yjc3OWVjMjZiZGIxOWMKLS0tIC9kZXYvbnVsbAorKysg
Yi9KU1Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC5qcwpAQCAtMCwwICsxLDIxIEBACiso
ZnVuY3Rpb24gKCkgeworICAgIGZ1bmN0aW9uICpmaWIoKQorICAgIHsKKyAgICAgICAgbGV0IGEg
PSAxOworICAgICAgICBsZXQgYiA9IDE7CisgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAg
ICAgICB5aWVsZCBhOworICAgICAgICAgICAgW2EsIGJdID0gW2IsIGEgKyBiXTsKKyAgICAgICAg
fQorICAgIH0KKworICAgIGxldCB2YWx1ZSA9IDA7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAx
ZTQ7ICsraSkgeworICAgICAgICBsZXQgZiA9IGZpYigpOworICAgICAgICBmb3IgKGxldCBpID0g
MDsgaSA8IDEwMDsgKytpKSB7CisgICAgICAgICAgICB2YWx1ZSA9IGYubmV4dCgpLnZhbHVlOwor
ICAgICAgICB9CisgICAgICAgIGlmICh2YWx1ZSAhPT0gMzU0MjI0ODQ4MTc5MjYyMDAwMDAwKQor
ICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgdmFsdWU6JHtyZXN1bHR9YCk7CisgICAg
fQorfSgpKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2dlbmVyYXRvci1mcmFtZS1lbXB0
eS5qcyBiL0pTVGVzdHMvc3RyZXNzL2dlbmVyYXRvci1mcmFtZS1lbXB0eS5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li41OWU4ODU1YmZhYzNjNTZkZjkyNmFiZDQyOGMwMTNjMzM0MTYyNzQ2Ci0tLSAvZGV2L251bGwK
KysrIGIvSlNUZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZyYW1lLWVtcHR5LmpzCkBAIC0wLDAgKzEs
MzQgQEAKK2Z1bmN0aW9uIHNob3VsZFRocm93KGZ1bmMsIGVycm9yTWVzc2FnZSkgeworICAgIHZh
ciBlcnJvclRocm93biA9IGZhbHNlOworICAgIHZhciBlcnJvciA9IG51bGw7CisgICAgdHJ5IHsK
KyAgICAgICAgZnVuYygpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgZXJyb3JUaHJvd24g
PSB0cnVlOworICAgICAgICBlcnJvciA9IGU7CisgICAgfQorICAgIGlmICghZXJyb3JUaHJvd24p
CisgICAgICAgIHRocm93IG5ldyBFcnJvcignbm90IHRocm93bicpOworICAgIGlmIChTdHJpbmco
ZXJyb3IpICE9PSBlcnJvck1lc3NhZ2UpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIGVy
cm9yOiAke1N0cmluZyhlcnJvcil9YCk7Cit9CisKK3Nob3VsZFRocm93KGZ1bmN0aW9uICgpIHsK
KyAgICBmdW5jdGlvbiAqZmliKGZsYWcpCisgICAgeworICAgICAgICBsZXQgYSA9IDE7CisgICAg
ICAgIGxldCBiID0gMTsKKyAgICAgICAgeWllbGQgNDI7CisgICAgICAgIGlmIChmbGFnKQorICAg
ICAgICAgICAgcmV0dXJuIGM7CisgICAgICAgIGxldCBjID0gNTAwOworICAgIH0KKworICAgIGxl
dCB2YWx1ZSA9IDA7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxZTQ7ICsraSkgeworICAgICAg
ICBmb3IgKGxldCB2IG9mIGZpYihmYWxzZSkpIHsKKyAgICAgICAgfQorICAgIH0KKyAgICBmb3Ig
KGxldCB2IG9mIGZpYih0cnVlKSkgeworICAgIH0KK30sIGBSZWZlcmVuY2VFcnJvcjogQ2Fubm90
IGFjY2VzcyB1bmluaXRpYWxpemVkIHZhcmlhYmxlLmApOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9z
dHJlc3MvZ2VuZXJhdG9yLXJlZHVjZWQtc2F2ZS1wb2ludC1wdXQtdG8tc2NvcGUuanMgYi9KU1Rl
c3RzL3N0cmVzcy9nZW5lcmF0b3ItcmVkdWNlZC1zYXZlLXBvaW50LXB1dC10by1zY29wZS5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5jMGM3NWZhNDkxNDNjMTdiZTE0ZjMyODFlM2Y2NTQzNGYzNTEzOWU4Ci0tLSAv
ZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXJlZHVjZWQtc2F2ZS1wb2lu
dC1wdXQtdG8tc2NvcGUuanMKQEAgLTAsMCArMSwyOCBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0
dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoYGJhZCB2YWx1ZTogJHtTdHJpbmcoYWN0dWFsKX1gKTsKK30KKworZnVu
Y3Rpb24gZXJyb3IoKQoreworICAgIHRocm93ICJvayI7Cit9CisKK2Z1bmN0aW9uKiBnZW4oKQor
eworICAgIHZhciB2YWx1ZSA9IDQyOworICAgIHRyeSB7CisgICAgICAgIHlpZWxkIDMwMDsKKyAg
ICAgICAgdmFsdWUgPSA1MDA7CisgICAgICAgIGVycm9yKCk7CisgICAgfSBjYXRjaCAoZSkgewor
ICAgICAgICB5aWVsZCA0MjsKKyAgICAgICAgcmV0dXJuIHZhbHVlOworICAgIH0KKyAgICByZXR1
cm4gMjAwOworfQorCit2YXIgZyA9IGdlbigpOworc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIDMw
MCk7CitzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgNDIpOworc2hvdWxkQmUoZy5uZXh0KCkudmFs
dWUsIDUwMCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItdHJhbnNmZXIt
cmVnaXN0ZXItYmV5b25kLW11dGlwbGUteWllbGRzLmpzIGIvSlNUZXN0cy9zdHJlc3MvZ2VuZXJh
dG9yLXRyYW5zZmVyLXJlZ2lzdGVyLWJleW9uZC1tdXRpcGxlLXlpZWxkcy5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5mZTIwOGY1ODEyOTZmOWFlMDhhNmJmYjM5OGI0ODIyNTc0MmQ2Yjc4Ci0tLSAvZGV2L251bGwK
KysrIGIvSlNUZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXRyYW5zZmVyLXJlZ2lzdGVyLWJleW9uZC1t
dXRpcGxlLXlpZWxkcy5qcwpAQCAtMCwwICsxLDE4IEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1
YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRo
cm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKworCitmdW5jdGlvbiAq
Z2VuKCkKK3sKKyAgICB2YXIgdGVzdCA9IDQyOworICAgIHlpZWxkIDMyOworICAgIHlpZWxkIDMz
OworICAgIHlpZWxkIHRlc3Q7Cit9CisKK3ZhciBnID0gZ2VuKCk7CitzaG91bGRCZShnLm5leHQo
KS52YWx1ZSwgMzIpOworc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIDMzKTsKK3Nob3VsZEJlKGcu
bmV4dCgpLnZhbHVlLCA0Mik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>286826</attachid>
            <date>2016-08-23 20:02:41 -0700</date>
            <delta_ts>2016-08-24 10:28:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-152723-20160824120040.patch</filename>
            <type>text/plain</type>
            <size>232728</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA0ODU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
MGY5MjVkYzkyM2MwY2VjNmFmNzZkZWRlYzcyZjU0NGM0ZjhlMmIyLi5kMzVjNzQ1YzA0YTEwNTIy
OGM5YzM0YmE1MGE1ZTcwZmEyMjYwY2JhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNzQgQEAKKzIwMTYtMDgtMjMgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0RGR11bRlRMXSBJbXBsZW1lbnQgRVM2IEdlbmVyYXRvcnMgaW4g
REZHIC8gRlRMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNTI3MjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUaGlzIHBhdGNoIGludHJvZHVjZXMgREZHIGFuZCBGVEwgc3VwcG9ydCBmb3IgRVM2IGdlbmVy
YXRvcnMuCisgICAgICAgIEVTNiBnZW5lcmF0b3IgaXMgY29tcGlsZWQgYnkgdGhlIEJ5dGVjb2Rl
R2VuZXJhdG9yLiBCdXQgYXQgdGhlIGxhc3QgcGhhc2UsIEJ5dGVjb2RlR2VuZXJhdG9yIHBlcmZv
cm1zICJnZW5lcmF0b3JpZmljYXRpb24iIG9udG8gdGhlIHVubGlua2VkIGNvZGUuCisgICAgICAg
IEluIEJ5dGVjb2RlR2VuZXJhdG9yIHBoYXNlLCB3ZSBpbnNlcnRlZCBzZXZlcmFsIHNwZWNpYWwg
bWFya2VycyBmb3IgdGhlIGdlbmVyYXRvcnMsIG9wX3NhdmUgYW5kIG9wX3Jlc3VtZS4KKyAgICAg
ICAgVGhlIG9wX3NhdmUsIG9wX3Jlc3VtZSwgYW5kIHRoZSBtZXJnZSBwb2ludCBibG9jayBhcmUg
Y29ubmVjdGVkIGFzIGZvbGxvd3MuCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBvcF9yZXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBeCisgICAgICAgIGVudHJ5IC0+IGdlbmVyYXRvciBzd2l0Y2ggLS0tLT4gb3Bfc2F2ZSAtPiBt
ZXJnZSBwb2ludCAtPiAuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBeCisgICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0t
LT4gb3BfcmVzdW1lIC0tLS0tKworCisgICAgICAgIEluIHRoZSBnZW5lcmF0b3JpZmljYXRpb24g
cGhhc2UsIHdlIHR1cm4gb3V0IHdoaWNoIHZhcmlhYmxlcyBzaG91bGQgYmUgc2F2ZWQgYW5kIHJl
c3VtZWQgYXQgZWFjaCBvcF9zYXZlIGFuZCBvcF9yZXN1bWUsIGFuZCBjb252ZXJ0IHRoZXNlIGJ5
dGVjb2RlcworICAgICAgICB0byB0aGUgc2VxdWVuY2VzIG9mIHRoZSBnZXRfZnJvbV9zY29wZSBh
bmQgcHV0X3RvX3Njb3BlLiBUaGUgcmVnaXN0ZXJzIGFyZSBzYXZlZCBhbmQgcmVzdW1lZCBvdmVy
IHRoZSBnZW5lcmF0b3IncyBuZXh0KCkgY2FsbHMgYnkgdXNpbmcgdGhpcyBzcGVjaWFsCisgICAg
ICAgIGdlbmVyYXRvciBmcmFtZSBzY29wZS4KKworICAgICAgICBJbiB0aGUgZ2VuZXJhdG9yaWZp
Y2F0aW9uIHBoYXNlLAorCisgICAgICAgIDEuIFdlIGNvbnN0cnVjdCB0aGUgQnl0ZWNvZGVHcmFw
aCBmcm9tIHRoZSB1bmxpbmtlZCBpbnN0cnVjdGlvbnMuIFRoaXMgY29uc3RydWN0cyB0aGUgYmFz
aWMgYmxvY2tzLCBhbmQgaXQgaXMgdXNlZCBpbiB0aGUgc3Vic2VxdWVudCBhbmFseXNpcy4KKyAg
ICAgICAgMi4gV2UgcGVyZm9ybSB0aGUgYW5hbHlzaXMgb250byB0aGUgdW5saW5rZWQgY29kZS4g
V2UgaGF2ZSAzIGFuYWx5c2lzOiB0aGUgbGl2ZW5lc3MgYW5hbHlzaXMsIHRoZSBzYXZlZCB2YXJp
YWJsZXMgYW5hbHlzaXMsIGFuZCB0aGUgcmVzdW1lZCB2YXJpYWJsZXMgYW5hbHlzaXMuCisgICAg
ICAgICAgIEZpcnN0LCBpbiB0aGUgbGl2ZW5lc3MgYW5hbHlzaXMsIHdlIGV4dHJhY3QgdGhlIGxp
dmUgdmFyaWFibGVzIGF0IGVhY2ggbWVyZ2UgcG9pbnQuIFRoZXNlIHZhcmlhYmxlcyBzaG91bGQg
YmUgY29uc2lkZXJlZCBhcyB0aGUgY29uc2VydmF0aXZlIHJlZ2lzdGVycworICAgICAgICAgICB0
byBiZSBzYXZlZCBhbmQgcmVzdW1lZCBhdCBlYWNoIHBvaW50LgorICAgICAgICAzLiBXZSBpbnNl
cnQgdGhlIGdldF9mcm9tX3Njb3BlIGFuZCBwdXRfdG9fc2NvcGUgYXQgZWFjaCBvcF9zYXZlIGFu
ZCBvcF9yZXN1bWUuIFdoaWNoIHJlZ2lzdGVycyBzaG91bGQgYmUgc2F2ZWQgYW5kIHJlc3VtZWQg
aXMgb2ZmZXJlZCBieSAoMikuCisgICAgICAgICAgIFRoZW4sIGNsaXAgdGhlIG9wX3NhdmUgYW5k
IG9wX3Jlc3VtZSB0aGVtc2VsdmVzLiBUaGV5IGFyZSBleGVjdXRlZCBpbiBhIGJhdGNoIG1hbm5l
ciBieSBCeXRlY29kZVJld3JpdGVyLiBTaW5jZSB0aGVzZSBtb2RpZmljYXRpb24gY2hhbmdlcyB0
aGUgYmFzaWMgYmxvY2tzCisgICAgICAgICAgIGFuZCBzaXplIG9mIHVubGlua2VkIGluc3RydWN0
aW9ucywgQnl0ZWNvZGVSZXdyaXRlciBhbHNvIHBlcmZvcm1zIHRoZSBvZmZzZXQgYWRqdXN0bWVu
dCBmb3IgVW5saW5rZWRDb2RlQmxvY2suIFNvLCB0aGlzIEJ5dGVjb2RlUmV3cml0ZXIgaXMgcGVy
Zm9ybWVkCisgICAgICAgICAgIG9udG8gdGhlIEJ5dGVjb2RlR3JhcGggaW5zdGVhZCBvZiBCeXRl
Y29kZUJhc2ljQmxvY2suIFRoZSByZWFzb24gd2h5IHdlIHRha2UgdGhpcyBkZXNpZ24gaXMgc2lt
cGxlOiB3ZSBkb24ndCB3YW50IHRvIG5ld2x5IGNyZWF0ZSB0aGUgYmFzaWMgYmxvY2tzIGFuZCBv
cGNvZGVzCisgICAgICAgICAgIGZvciB0aGlzIGVhcmx5IHBoYXNlIGxpa2UgREZHLiBJbnN0ZWFk
LCB3ZSBwZXJmb3JtIHRoZSBtb2RpZmljYXRpb24gYW5kIGFkanVzdG1lbnQgdG8gdGhlIHVubGlu
a2VkIGluc3RydWN0aW9ucyBhbmQgVW5saW5rZWRDb2RlQmxvY2sgaW4gYSBpbi1wbGFjZSBtYW5u
ZXIuCisKKyAgICAgICAgQWZ0ZXIgdGhhdCBwaGFzZSwgdGhlIGRhdGEgZmxvdyBvZiB0aGUgZ2Vu
ZXJhdG9yLXNhdmVkLWFuZC1yZXN1bWVkLXJlZ2lzdGVycyBhcmUgZXhwbGljaXRseSByZXByZXNl
bnRlZCBieSB0aGUgZ2V0X2Zyb21fc2NvcGUgYW5kIHB1dF90b19zY29wZS4KKyAgICAgICAgQW5k
IG9wX3NhdmUgYW5kIG9wX3Jlc3VtZSBhcmUgcmVtb3ZlZC4gU2luY2Ugd2UgdXNlIHRoZSBleGlz
dGluZyBieXRlY29kZXMsIERGRyBhbmQgRlRMIGNoYW5nZXMgYXJlIG5vdCBuZWNlc3NhcnkuCisg
ICAgICAgIFRoaXMgcGF0Y2ggYWxzbyBkcm9wcyBkYXRhIHN0cnVjdHVyZXMgYW5kIGltcGxlbWVu
dGF0aW9ucyBmb3IgdGhlIG9sZCBnZW5lcmF0b3IsIG9wX3Jlc3VtZSwgb3Bfc2F2ZSBpbXBsZW1l
bnRhdGlvbnMgYW5kIEdlbmVyYXRvckZyYW1lLgorCisgICAgICAgIE5vdGUgdGhhdCB0aGlzIHBh
dGNoIGRvZXMgbm90IGxldmVyYWdlIHRoZSByZWNlbnQgbXVsdGkgZW50cnlwb2ludHMgc3VwcG9y
dCBpbiBCMy4gQWZ0ZXIgdGhpcyBwYXRjaCBpcyBpbnRyb2R1Y2VkLCB3ZSB3aWxsIHN1Ym1pdCBh
IG5ldyBwYXRjaCB0aGF0IGxldmVyYWdlcyB0aGUgbXVsdGkKKyAgICAgICAgZW50cnlwb2ludHMg
Zm9yIGdlbmVyYXRvcidzIHJlc3VtZSBhbmQgc2VlcyB0aGUgcGVyZm9ybWFuY2UgZ2Fpbi4KKwor
ICAgICAgICBUT0RPOiBQZXJmIFRCQSBoZXJlLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6
CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBiMy9CM0Jhc2ljQmxvY2tVdGlscy5oOgorICAgICAgICAqIGIzL0IzQmxvY2tXb3Jr
bGlzdC5oOgorICAgICAgICAqIGIzL0IzQ0ZHLmg6CisgICAgICAgICogYjMvQjNEdXBsaWNhdGVU
YWlscy5jcHA6CisgICAgICAgICogYjMvQjNGaXhTU0EuY3BwOgorICAgICAgICAqIGIzL0IzRml4
U1NBLmg6CisgICAgICAgICogYjMvQjNJbmRleE1hcC5oOgorICAgICAgICAoSlNDOjpCMzo6SW5k
ZXhNYXA6OkluZGV4TWFwKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkluZGV4TWFwOjpy
ZXNpemUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6SW5kZXhNYXA6OmNsZWFyKTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkluZGV4TWFwOjpzaXplKTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6QjM6OkluZGV4TWFwOjpvcGVyYXRvcltdKTogRGVsZXRlZC4KKyAgICAgICAgKiBi
My9CM0luZGV4U2V0Lmg6CisgICAgICAgIChKU0M6OkIzOjpJbmRleFNldDo6SW5kZXhTZXQpOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6SW5kZXhTZXQ6OmFkZCk6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OkIzOjpJbmRleFNldDo6YWRkQWxsKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
QjM6OkluZGV4U2V0OjpyZW1vdmUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6SW5kZXhT
ZXQ6OmNvbnRhaW5zKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkluZGV4U2V0OjpzaXpl
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkluZGV4U2V0Ojppc0VtcHR5KTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6QjM6OkluZGV4U2V0OjpJdGVyYWJsZTo6SXRlcmFibGUpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpCMzo6SW5kZXhTZXQ6Okl0ZXJhYmxlOjppdGVyYXRvcjo6aXRl
cmF0b3IpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6SW5kZXhTZXQ6Okl0ZXJhYmxlOjpp
dGVyYXRvcjo6b3BlcmF0b3IqKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkluZGV4U2V0
OjpJdGVyYWJsZTo6aXRlcmF0b3I6Om9wZXJhdG9yKyspOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpCMzo6SW5kZXhTZXQ6Okl0ZXJhYmxlOjppdGVyYXRvcjo6b3BlcmF0b3I9PSk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OkIzOjpJbmRleFNldDo6SXRlcmFibGU6Oml0ZXJhdG9yOjpvcGVyYXRv
ciE9KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkluZGV4U2V0OjpJdGVyYWJsZTo6YmVn
aW4pOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6SW5kZXhTZXQ6Okl0ZXJhYmxlOjplbmQp
OiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6SW5kZXhTZXQ6OnZhbHVlcyk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OkIzOjpJbmRleFNldDo6aW5kaWNlcyk6IERlbGV0ZWQuCisgICAgICAg
IChKU0M6OkIzOjpJbmRleFNldDo6ZHVtcCk6IERlbGV0ZWQuCisgICAgICAgICogYjMvQjNMb3dl
clRvQWlyLmNwcDoKKyAgICAgICAgKiBiMy9CM1BoaUNoaWxkcmVuLmg6CisgICAgICAgICogYjMv
QjNQcm9jZWR1cmUuaDoKKyAgICAgICAgKEpTQzo6QjM6OlByb2NlZHVyZTo6aXRlcmF0b3I6Oml0
ZXJhdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OlByb2NlZHVyZTo6aXRlcmF0b3I6
Om9wZXJhdG9yKik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpQcm9jZWR1cmU6Oml0ZXJh
dG9yOjpvcGVyYXRvcisrKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OlByb2NlZHVyZTo6
aXRlcmF0b3I6Om9wZXJhdG9yPT0pOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6UHJvY2Vk
dXJlOjppdGVyYXRvcjo6b3BlcmF0b3IhPSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpQ
cm9jZWR1cmU6Oml0ZXJhdG9yOjpmaW5kTmV4dCk6IERlbGV0ZWQuCisgICAgICAgICogYjMvQjNS
ZWR1Y2VEb3VibGVUb0Zsb2F0LmNwcDoKKyAgICAgICAgKiBiMy9CM1JlZHVjZVN0cmVuZ3RoLmNw
cDoKKyAgICAgICAgKiBiMy9CM1NTQUNhbGN1bGF0b3IuaDoKKyAgICAgICAgKiBiMy9CM1VzZUNv
dW50cy5oOgorICAgICAgICAqIGIzL2Fpci9BaXJDb2RlLmg6CisgICAgICAgICogYjMvYWlyL0Fp
ckVsaW1pbmF0ZURlYWRDb2RlLmNwcDoKKyAgICAgICAgKiBiMy9haXIvQWlyRml4T2J2aW91c1Nw
aWxscy5jcHA6CisgICAgICAgICogYjMvYWlyL0FpckZpeFBhcnRpYWxSZWdpc3RlclN0YWxscy5j
cHA6CisgICAgICAgICogYjMvYWlyL0FpckdlbmVyYXRlLmNwcDoKKyAgICAgICAgKiBiMy9haXIv
QWlyR2VuZXJhdGlvbkNvbnRleHQuaDoKKyAgICAgICAgKiBiMy9haXIvQWlyTGl2ZW5lc3MuaDoK
KyAgICAgICAgKiBiMy9haXIvQWlyU3BpbGxFdmVyeXRoaW5nLmNwcDoKKyAgICAgICAgKiBidWls
dGlucy9HZW5lcmF0b3JQcm90b3R5cGUuanM6CisgICAgICAgIChnbG9iYWxQcml2YXRlLmdlbmVy
YXRvclJlc3VtZSk6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcDoK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVCYXNpY0Jsb2NrOjpjb21wdXRlQnl0ZWNvZGVCYXNpY0Js
b2Nrc0ludGVybmFsKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVCYXNpY0Jsb2NrOjpjb21wdXRl
Qnl0ZWNvZGVCYXNpY0Jsb2Nrcyk6CisgICAgICAgIChKU0M6OmlzQnJhbmNoKTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6bGlua0Jsb2Nrcyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OmNvbXB1
dGVCeXRlY29kZUJhc2ljQmxvY2tzKTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29kZS9CeXRl
Y29kZUJhc2ljQmxvY2suaDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVCYXNpY0Jsb2NrOjpieXRl
Y29kZU9mZnNldHMpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUJhc2ljQmxvY2s6OnN1Y2Nlc3Nv
cnMpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUJhc2ljQmxvY2s6OnByZWRlY2Vzc29ycyk6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlQmFzaWNCbG9jazo6aW5kZXgpOgorICAgICAgICAoSlNDOjpC
eXRlY29kZUJhc2ljQmxvY2s6OmFkZFN1Y2Nlc3Nvcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
QmFzaWNCbG9jazo6YWRkUHJlZGVjZXNzb3IpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2Rl
R2VuZXJhdG9yaWZpY2F0aW9uLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2Vu
ZXJhdG9yaWZpY2F0aW9uOjpCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbik6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uOjpncmFwaCk6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uOjp5aWVsZHMpOgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUdlbmVyYXRvcmlmaWNhdGlvbjo6ZW50ZXJQb2ludCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
R2VuZXJhdG9yaWZpY2F0aW9uOjpzdG9yYWdlRm9yR2VuZXJhdG9yTG9jYWwpOgorICAgICAgICAo
SlNDOjpHZW5lcmF0b3JMaXZlbmVzc0FuYWx5c2lzOjpHZW5lcmF0b3JMaXZlbmVzc0FuYWx5c2lz
KToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yTGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0ZURlZnNG
b3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckxpdmVuZXNzQW5hbHlz
aXM6OmNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpHZW5lcmF0
b3JMaXZlbmVzc0FuYWx5c2lzOjpydW4pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRv
cmlmaWNhdGlvbjo6cnVuKToKKyAgICAgICAgKEpTQzo6cGVyZm9ybUdlbmVyYXRvcmlmaWNhdGlv
bik6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uaDogQ29w
aWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NB
bmFseXNpc0lubGluZXMuaC4KKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUdyYXBoLmg6IEFk
ZGVkLgorICAgICAgICAoSlNDOjpCeXRlY29kZUdyYXBoOjpjb2RlQmxvY2spOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUdyYXBoOjppbnN0cnVjdGlvbnMpOgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUdyYXBoOjpiYXNpY0Jsb2Nrc0luUmV2ZXJzZU9yZGVyKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNv
ZGVHcmFwaDo6YmxvY2tDb250YWluc0J5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVHcmFwaDo6ZmluZEJhc2ljQmxvY2tGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlR3JhcGg6OmZpbmRCYXNpY0Jsb2NrV2l0aExlYWRlck9mZnNldCk6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR3JhcGg6OnNpemUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdy
YXBoOjphdCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR3JhcGg6Om9wZXJhdG9yW10pOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUdyYXBoOjpiZWdpbik6CisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
R3JhcGg6OmVuZCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR3JhcGg6OmZpcnN0KToKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVHcmFwaDo6bGFzdCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR3Jh
cGg8QmxvY2s+OjpCeXRlY29kZUdyYXBoKToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxp
c3QuanNvbjoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3Bw
OgorICAgICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OkJ5dGVjb2RlTGl2ZW5l
c3NBbmFseXNpcyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Y29t
cHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlTGl2ZW5l
c3NBbmFseXNpczo6Y29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6cnVuTGl2ZW5lc3NGaXhwb2ludCk6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Z2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29k
ZU9mZnNldCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0
ZUZ1bGxMaXZlbmVzcyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6
Y29tcHV0ZUtpbGxzKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpk
dW1wUmVzdWx0cyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Y29t
cHV0ZSk6CisgICAgICAgIChKU0M6OmlzVmFsaWRSZWdpc3RlckZvckxpdmVuZXNzKTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6Z2V0TGVhZGVyT2Zmc2V0Rm9yQmFzaWNCbG9jayk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OmZpbmRCYXNpY0Jsb2NrV2l0aExlYWRlck9mZnNldCk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OmJsb2NrQ29udGFpbnNCeXRlY29kZU9mZnNldCk6IERlbGV0ZWQuCisg
ICAgICAgIChKU0M6OmZpbmRCYXNpY0Jsb2NrRm9yQnl0ZWNvZGVPZmZzZXQpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpzdGVwT3Zlckluc3RydWN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6Y29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCeXRlY29kZU9mZnNldCk6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OmNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQmxvY2spOiBEZWxldGVkLgorICAgICAg
ICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5oOgorICAgICAgICAqIGJ5dGVj
b2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGluZXMuaDoKKyAgICAgICAgKEpTQzo6aXNW
YWxpZFJlZ2lzdGVyRm9yTGl2ZW5lc3MpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNz
TG9jYWxQcm9wYWdhdGlvbjxEZXJpdmVkQW5hbHlzaXM+OjpzdGVwT3Zlckluc3RydWN0aW9uKToK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc0xvY2FsUHJvcGFnYXRpb248RGVyaXZlZEFu
YWx5c2lzPjo6Y29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlTGl2ZW5lc3NMb2NhbFByb3BhZ2F0aW9uPERlcml2ZWRBbmFseXNpcz46
OmNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQmxvY2spOgorICAgICAgICAoSlNDOjpCeXRlY29kZUxp
dmVuZXNzTG9jYWxQcm9wYWdhdGlvbjxEZXJpdmVkQW5hbHlzaXM+OjpnZXRMaXZlbmVzc0luZm9B
dEJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZVJld3JpdGVyLmNw
cDogQWRkZWQuCisgICAgICAgIChKU0M6OkJ5dGVjb2RlUmV3cml0ZXI6OmFwcGx5TW9kaWZpY2F0
aW9uKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVSZXdyaXRlcjo6ZXhlY3V0ZSk6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlUmV3cml0ZXI6OmFkanVzdEp1bXBJbnNlcnRpb24pOgorICAgICAgICAq
IGJ5dGVjb2RlL0J5dGVjb2RlUmV3cml0ZXIuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkJ5dGVj
b2RlUmV3cml0ZXI6OkJ5dGVjb2RlUmV3cml0ZXIpOgorICAgICAgICAoSlNDOjpCeXRlY29kZVJl
d3JpdGVyOjppbnNlcnQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZVJld3JpdGVyOjpyZW1vdmVC
eXRlY29kZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlUmV3cml0ZXI6Omluc2VydFN3aXRjaElt
bWVkaWF0ZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlUmV3cml0ZXI6OmdyYXBoKToKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVSZXdyaXRlcjo6YWRqdXN0T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVSZXdyaXRlcjo6aW5zZXJ0SW1wbCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlUmV3
cml0ZXI6OmFkanVzdE9mZnNldFdpdGhJbnNlcnRpb25zKToKKyAgICAgICAgKiBieXRlY29kZS9C
eXRlY29kZVVzZURlZi5oOgorICAgICAgICAoSlNDOjpjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zm
c2V0KToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldCk6CisgICAg
ICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpk
dW1wQnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKToK
KyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpoYW5kbGVyRm9ySW5kZXgpOgorICAgICAgICAoSlND
OjpDb2RlQmxvY2s6OnNocmlua1RvRml0KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjp2YWx1
ZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bGl2
ZW5lc3NBbmFseXNpc1Nsb3cpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5oOgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2s6OmlzQ29uc3RhbnRSZWdpc3RlckluZGV4KToKKyAgICAgICAg
KEpTQzo6Q29kZUJsb2NrOjpsaXZlbmVzc0FuYWx5c2lzKToKKyAgICAgICAgKEpTQzo6Q29kZUJs
b2NrOjpsaXZlQ2FsbGVlTG9jYWxzQXRZaWVsZCk6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNv
ZGUvSGFuZGxlckluZm8uaDoKKyAgICAgICAgKEpTQzo6SGFuZGxlckluZm9CYXNlOjpoYW5kbGVy
Rm9ySW5kZXgpOgorICAgICAgICAqIGJ5dGVjb2RlL09wY29kZS5oOgorICAgICAgICAoSlNDOjpp
c0JyYW5jaCk6CisgICAgICAgICogYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmNwcDoKKyAg
ICAgICAgKEpTQzo6Z2V0SnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChK
U0M6OmNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHNJbnRlcm5hbCk6CisgICAgICAgIChKU0M6OmNv
bXB1dGVQcmVjaXNlSnVtcFRhcmdldHMpOgorICAgICAgICAoSlNDOjpyZWNvbXB1dGVQcmVjaXNl
SnVtcFRhcmdldHMpOgorICAgICAgICAoSlNDOjpmaW5kSnVtcFRhcmdldHNGb3JCeXRlY29kZU9m
ZnNldCk6CisgICAgICAgICogYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmg6CisgICAgICAg
ICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpVbmxpbmtl
ZENvZGVCbG9jazo6aGFuZGxlckZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6VW5s
aW5rZWRDb2RlQmxvY2s6OmhhbmRsZXJGb3JJbmRleCk6CisgICAgICAgIChKU0M6OlVubGlua2Vk
Q29kZUJsb2NrOjphcHBseU1vZGlmaWNhdGlvbik6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5r
ZWRDb2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRTdHJpbmdKdW1wVGFibGU6Om9m
ZnNldEZvclZhbHVlKToKKyAgICAgICAgKiBieXRlY29kZS9WaXJ0dWFsUmVnaXN0ZXIuaDoKKyAg
ICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlND
OjpCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdl
bmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdENvbXBsZXhQb3BTY29wZXMpOgorICAgICAgICAoSlNDOjpwcmVwYXJlSnVtcFRh
YmxlRm9yU3RyaW5nU3dpdGNoKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRZaWVsZFBvaW50KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRTYXZl
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXN1bWUp
OiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdlbmVyYXRv
clN0YXRlTGFiZWwpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6
YmVnaW5HZW5lcmF0b3IpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRv
cjo6ZW5kR2VuZXJhdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRv
clN0YXRlUmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJh
dG9yVmFsdWVSZWdpc3Rlcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5l
cmF0b3JSZXN1bWVNb2RlUmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRv
cjo6Z2VuZXJhdG9yRnJhbWVSZWdpc3Rlcik6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVz
Q29kZWdlbi5jcHA6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uTm9kZTo6ZW1pdEJ5dGVjb2RlKToK
KyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogZ2VuZXJhdGUtYnl0
ZWNvZGUtZmlsZXM6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwOgorICAg
ICAgICAoSlNDOjpmaW5kRXhjZXB0aW9uSGFuZGxlcik6CisgICAgICAgIChKU0M6OkdldENhdGNo
SGFuZGxlckZ1bmN0b3I6Om9wZXJhdG9yKCkpOgorICAgICAgICAoSlNDOjpVbndpbmRGdW5jdG9y
OjpvcGVyYXRvcigpKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5oOgorICAg
ICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVySW5saW5lcy5oOiBDb3BpZWQgZnJvbSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmguCisgICAgICAg
IChKU0M6OkludGVycHJldGVyOjpnZXRPcGNvZGVJRCk6CisgICAgICAgICogaml0L0pJVC5jcHA6
CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcyk6CisgICAgICAgICog
aml0L0pJVC5oOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0X29wX3NhdmUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bf
cmVzdW1lKTogRGVsZXRlZC4KKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFz
bToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6UGFyc2VyPExl
eGVyVHlwZT46OnBhcnNlSW5uZXIpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6
cGFyc2VHZW5lcmF0b3JGdW5jdGlvblNvdXJjZUVsZW1lbnRzKToKKyAgICAgICAgKEpTQzo6UGFy
c2VyPExleGVyVHlwZT46OmNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMpOgorICAgICAgICAqIHBh
cnNlci9QYXJzZXIuaDoKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHA6Cisg
ICAgICAgIChKU0M6OlNMT1dfUEFUSF9ERUNMKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1l
L0NvbW1vblNsb3dQYXRocy5oOgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJhdG9yRnJhbWUuY3Bw
OiBSZW1vdmVkLgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6R2VuZXJhdG9yRnJhbWUp
OiBEZWxldGVkLgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6ZmluaXNoQ3JlYXRpb24p
OiBEZWxldGVkLgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlU3RydWN0dXJl
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OmNyZWF0ZSk6IERlbGV0
ZWQuCisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpzYXZlKTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OnJlc3VtZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
OkdlbmVyYXRvckZyYW1lOjp2aXNpdENoaWxkcmVuKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50
aW1lL0dlbmVyYXRvckZyYW1lLmg6IFJlbW92ZWQuCisgICAgICAgIChKU0M6OkdlbmVyYXRvckZy
YW1lOjpsb2NhbHMpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6bG9j
YWxBdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpvZmZzZXRPZkxv
Y2Fscyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjphbGxvY2F0aW9u
U2l6ZUZvckxvY2Fscyk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9KU0dlbmVyYXRvckZ1
bmN0aW9uLmg6CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpW
TSk6CisgICAgICAgICogcnVudGltZS9WTS5oOgorCiAyMDE2LTA4LTIyICBGaWxpcCBQaXpsbyAg
PGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgQnV0dGVyZmxpZXMgc2hvdWxkIGJlIGFsbG9j
YXRlZCBpbiBBdXhpbGlhcnkgTWFya2VkU3BhY2UgaW5zdGVhZCBvZiBDb3BpZWRTcGFjZSBhbmQg
d2Ugc2hvdWxkIHJld3JpdGUgYXMgbXVjaCBvZiB0aGUgR0MgYXMgbmVlZGVkIHRvIG1ha2UgdGhp
cyBub3QgYSByZWdyZXNzaW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDU2NTQyMWIwYjU1MWJhMmZlNDZlZDU1YmRjNzBmN2Jk
NzIwMTNmMjIuLjliYjYwYmJmMTQ2MTAzMTI1MzAzNWYxNTk5MDBjZjE1YTVjNzMwNzYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNDYgQEAKKzIwMTYtMDgtMjMgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBn
bWFpbC5jb20+CisKKyAgICAgICAgW0RGR11bRlRMXSBJbXBsZW1lbnQgRVM2IEdlbmVyYXRvcnMg
aW4gREZHIC8gRlRMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNTI3MjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFdURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHd0Zi9DTWFr
ZUxpc3RzLnR4dDoKKyAgICAgICAgKiB3dGYvRmFzdEJpdFZlY3Rvci5oOgorICAgICAgICAoV1RG
OjpGYXN0Qml0VmVjdG9yOjpGYXN0Qml0VmVjdG9yKToKKyAgICAgICAgKiB3dGYvSW5kZXhNYXAu
aDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzSW5kZXhNYXAuaC4KKyAg
ICAgICAgKFdURjo6SW5kZXhNYXA6OkluZGV4TWFwKToKKyAgICAgICAgKFdURjo6SW5kZXhNYXA6
OnJlc2l6ZSk6CisgICAgICAgIChXVEY6OkluZGV4TWFwOjpjbGVhcik6CisgICAgICAgIChXVEY6
OkluZGV4TWFwOjpzaXplKToKKyAgICAgICAgKFdURjo6SW5kZXhNYXA6Om9wZXJhdG9yW10pOgor
ICAgICAgICAqIHd0Zi9JbmRleFNldC5oOiBSZW5hbWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzSW5kZXhTZXQuaC4KKyAgICAgICAgKFdURjo6SW5kZXhTZXQ6OkluZGV4U2V0KToK
KyAgICAgICAgKFdURjo6SW5kZXhTZXQ6OmFkZCk6CisgICAgICAgIChXVEY6OkluZGV4U2V0Ojph
ZGRBbGwpOgorICAgICAgICAoV1RGOjpJbmRleFNldDo6cmVtb3ZlKToKKyAgICAgICAgKFdURjo6
SW5kZXhTZXQ6OmNvbnRhaW5zKToKKyAgICAgICAgKFdURjo6SW5kZXhTZXQ6OnNpemUpOgorICAg
ICAgICAoV1RGOjpJbmRleFNldDo6aXNFbXB0eSk6CisgICAgICAgIChXVEY6OkluZGV4U2V0OjpJ
dGVyYWJsZTo6SXRlcmFibGUpOgorICAgICAgICAoV1RGOjpJbmRleFNldDo6SXRlcmFibGU6Oml0
ZXJhdG9yOjppdGVyYXRvcik6CisgICAgICAgIChXVEY6OkluZGV4U2V0OjpJdGVyYWJsZTo6aXRl
cmF0b3I6Om9wZXJhdG9yKik6CisgICAgICAgIChXVEY6OkluZGV4U2V0OjpJdGVyYWJsZTo6aXRl
cmF0b3I6Om9wZXJhdG9yKyspOgorICAgICAgICAoV1RGOjpJbmRleFNldDo6SXRlcmFibGU6Oml0
ZXJhdG9yOjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdURjo6SW5kZXhTZXQ6Okl0ZXJhYmxlOjpp
dGVyYXRvcjo6b3BlcmF0b3IhPSk6CisgICAgICAgIChXVEY6OkluZGV4U2V0OjpJdGVyYWJsZTo6
YmVnaW4pOgorICAgICAgICAoV1RGOjpJbmRleFNldDo6SXRlcmFibGU6OmVuZCk6CisgICAgICAg
IChXVEY6OkluZGV4U2V0Ojp2YWx1ZXMpOgorICAgICAgICAoV1RGOjpJbmRleFNldDo6aW5kaWNl
cyk6CisgICAgICAgIChXVEY6OkluZGV4U2V0OjpkdW1wKToKKyAgICAgICAgKiB3dGYvSW5kZXhl
ZENvbnRhaW5lckl0ZXJhdG9yLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNJbmRleE1hcC5oLgorICAgICAgICAoV1RGOjpJbmRleGVkQ29udGFpbmVySXRlcmF0b3I6
OkluZGV4ZWRDb250YWluZXJJdGVyYXRvcik6CisgICAgICAgIChXVEY6OkluZGV4ZWRDb250YWlu
ZXJJdGVyYXRvcjo6b3BlcmF0b3IrKyk6CisgICAgICAgIChXVEY6OkluZGV4ZWRDb250YWluZXJJ
dGVyYXRvcjo6b3BlcmF0b3I9PSk6CisgICAgICAgIChXVEY6OkluZGV4ZWRDb250YWluZXJJdGVy
YXRvcjo6b3BlcmF0b3IhPSk6CisgICAgICAgIChXVEY6OkluZGV4ZWRDb250YWluZXJJdGVyYXRv
cjo6ZmluZE5leHQpOgorCiAyMDE2LTA4LTIyICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5j
b20+CiAKICAgICAgICAgQnV0dGVyZmxpZXMgc2hvdWxkIGJlIGFsbG9jYXRlZCBpbiBBdXhpbGlh
cnkgTWFya2VkU3BhY2UgaW5zdGVhZCBvZiBDb3BpZWRTcGFjZSBhbmQgd2Ugc2hvdWxkIHJld3Jp
dGUgYXMgbXVjaCBvZiB0aGUgR0MgYXMgbmVlZGVkIHRvIG1ha2UgdGhpcyBub3QgYSByZWdyZXNz
aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggMjk4NmE5ZDFlZWVhYzJl
Yjc5NjFhZGExNGMyZWIyYmM2NDE2ZTdkNS4uN2E3NTExN2I0ZTk0OTQ4NGEwNjI2Y2E3ZmY3M2E2
ZTA1YWVjMjJjOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMu
dHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTgyLDYg
KzE4Miw4IEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgYnl0ZWNvZGUvQXJyYXlB
bGxvY2F0aW9uUHJvZmlsZS5jcHAKICAgICBieXRlY29kZS9BcnJheVByb2ZpbGUuY3BwCiAgICAg
Ynl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcAorICAgIGJ5dGVjb2RlL0J5dGVjb2RlR2Vu
ZXJhdG9yaWZpY2F0aW9uLmNwcAorICAgIGJ5dGVjb2RlL0J5dGVjb2RlUmV3cml0ZXIuY3BwCiAg
ICAgYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5jcHAKICAgICBieXRlY29kZS9C
eXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwCiAgICAgYnl0ZWNvZGUvQ2FsbEVkZ2UuY3BwCkBA
IC02NjQsNyArNjY2LDYgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBydW50aW1l
L0Z1bmN0aW9uSGFzRXhlY3V0ZWRDYWNoZS5jcHAKICAgICBydW50aW1lL0Z1bmN0aW9uUHJvdG90
eXBlLmNwcAogICAgIHJ1bnRpbWUvRnVuY3Rpb25SYXJlRGF0YS5jcHAKLSAgICBydW50aW1lL0dl
bmVyYXRvckZyYW1lLmNwcAogICAgIHJ1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rv
ci5jcHAKICAgICBydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcAogICAgIHJ1
bnRpbWUvR2VuZXJhdG9yUHJvdG90eXBlLmNwcApAQCAtOTgzLDYgKzk4NCwxMCBAQCBhZGRfY3Vz
dG9tX2NvbW1hbmQoCiAgICAgQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAke0pBVkFTQ1JJ
UFRDT1JFX0RJUn0vZ2VuZXJhdGUtYnl0ZWNvZGUtZmlsZXMgLS1ieXRlY29kZXNfaCAke0RFUklW
RURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0J5dGVjb2Rlcy5oIC0taW5pdF9ieXRlY29k
ZXNfYXNtICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5pdEJ5dGVjb2Rl
cy5hc20gJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCiAg
ICAgVkVSQkFUSU0pCiAKK2xpc3QoQVBQRU5EIEphdmFTY3JpcHRDb3JlX0hFQURFUlMKKyAgICAk
e0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0J5dGVjb2Rlcy5oCispCisKIGFk
ZF9jdXN0b21fY29tbWFuZCgKICAgICBPVVRQVVQgJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQ
VENPUkVfRElSfS9MTEludERlc2lyZWRPZmZzZXRzLmgKICAgICBNQUlOX0RFUEVOREVOQ1kgJHtK
QVZBU0NSSVBUQ09SRV9ESVJ9L29mZmxpbmVhc20vZ2VuZXJhdGVfb2Zmc2V0X2V4dHJhY3Rvci5y
YgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBhNjAzY2ZjMjVmY2JmZTRkNzE0NTk3
Njk2NWQ3MWY1OTIyODVkMDg0Li5mNDNjZDkxMmE1ODJhY2JmNmU3NjE2MTdjOTdlMDY4MzM2NjJh
NzNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNzk5LDggKzc5OSw2IEBACiAJ
CTBGRUM4NTE4MUJEQUNEQUMwMDgwRkY3NCAvKiBCM0dlbmVyYXRlLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRUM4NENFMUJEQUNEQUMwMDgwRkY3
NCAvKiBCM0dlbmVyYXRlLmNwcCAqLzsgfTsKIAkJMEZFQzg1MTkxQkRBQ0RBQzAwODBGRjc0IC8q
IEIzR2VuZXJhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGRUM4NENGMUJEQUNEQUMwMDgwRkY3NCAvKiBCM0dlbmVyYXRlLmggKi87IH07CiAJCTBG
RUM4NTFBMUJEQUNEQUMwMDgwRkY3NCAvKiBCM0dlbmVyaWNGcmVxdWVudGVkQmxvY2suaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRUM4NEQwMUJEQUNE
QUMwMDgwRkY3NCAvKiBCM0dlbmVyaWNGcmVxdWVudGVkQmxvY2suaCAqLzsgfTsKLQkJMEZFQzg1
MUIxQkRBQ0RBQzAwODBGRjc0IC8qIEIzSW5kZXhNYXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRUM4NEQxMUJEQUNEQUMwMDgwRkY3NCAvKiBCM0lu
ZGV4TWFwLmggKi87IH07Ci0JCTBGRUM4NTFDMUJEQUNEQUMwMDgwRkY3NCAvKiBCM0luZGV4U2V0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkVDODRE
MjFCREFDREFDMDA4MEZGNzQgLyogQjNJbmRleFNldC5oICovOyB9OwogCQkwRkVDODUxRDFCREFD
REFDMDA4MEZGNzQgLyogQjNMb3dlclRvQWlyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRUM4NEQzMUJEQUNEQUMwMDgwRkY3NCAvKiBCM0xvd2Vy
VG9BaXIuY3BwICovOyB9OwogCQkwRkVDODUxRTFCREFDREFDMDA4MEZGNzQgLyogQjNMb3dlclRv
QWlyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkVD
ODRENDFCREFDREFDMDA4MEZGNzQgLyogQjNMb3dlclRvQWlyLmggKi87IH07CiAJCTBGRUM4NTFG
MUJEQUNEQUMwMDgwRkY3NCAvKiBCM01lbW9yeVZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRUM4NEQ1MUJEQUNEQUMwMDgwRkY3NCAvKiBC
M01lbW9yeVZhbHVlLmNwcCAqLzsgfTsKQEAgLTEyODUsOCArMTI4Myw2IEBACiAJCTcwOUZCODZD
MUFFMzM1QzYwMDM5RDA2OSAvKiBXZWFrU2V0UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MDlGQjg2NjFBRTMzNUM2MDAzOUQwNjkgLyog
V2Vha1NldFByb3RvdHlwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTcwQjBBOUQxMUE5QjY2NDYwMDAxMzA2QSAvKiBSdW50aW1lRmxhZ3MuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwQjBBOUQwMUE5
QjY2MjAwMDAxMzA2QSAvKiBSdW50aW1lRmxhZ3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MEI3OTE5MTFDMDI0QTEzMDAyNDgxRTIgLyogU291
cmNlQ29kZUtleS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNzBCNzkxOEUxQzAyNDRDOTAwMjQ4MUUyIC8qIFNvdXJjZUNvZGVLZXkuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk3MEI3OTE5MjFDMDI0QTIz
MDAyNDgxRTIgLyogR2VuZXJhdG9yRnJhbWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNzBCNzkxODMxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRv
ckZyYW1lLmNwcCAqLzsgfTsKLQkJNzBCNzkxOTMxQzAyNEEyODAwMjQ4MUUyIC8qIEdlbmVyYXRv
ckZyYW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
MEI3OTE4NDFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnJhbWUuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MEI3OTE5NDFDMDI0QTI4MDAy
NDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEI3OTE4NTFDMDI0NDMyMDAyNDgxRTIg
LyogR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAgKi87IH07CiAJCTcwQjc5MTk1MUMw
MjRBMjgwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEI3OTE4NjFDMDI0NDMyMDAy
NDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcwQjc5MTk2MUMwMjRBMjgwMDI0ODFF
MiAvKiBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEI3OTE4NzFDMDI0NDMyMDAyNDgxRTIgLyogR2Vu
ZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3BwICovOyB9OwpAQCAtMjA2MCw2ICsyMDU2LDExIEBA
CiAJCUUxOEUzQTU5MERGOTI3OEMwMEQ5MEIzNCAvKiBWTS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMThFM0E1NzBERjkyNzhDMDBEOTBCMzQgLyog
Vk0uY3BwICovOyB9OwogCQlFMzE4Q0JDMDFCOEFFRjUxMDBBMjkyOUQgLyogSlNNb2R1bGVOYW1l
c3BhY2VPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTMxOENCQkUxQjhBRUY1MTAwQTI5MjlEIC8qIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0
LmNwcCAqLzsgfTsKIAkJRTMxOENCQzExQjhBRUY1MTAwQTI5MjlEIC8qIEpTTW9kdWxlTmFtZXNw
YWNlT2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFMzE4Q0JCRjFCOEFFRjUxMDBBMjkyOUQgLyogSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFMzI4REFF
NzFEMzhEMDA0MDAxQTI1MjkgLyogQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNEMjY0MjYxRDM4QzA0
MjAwMEJFMTc0IC8qIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcCAqLzsgfTsKKwkJRTMy
OERBRTgxRDM4RDAwNTAwMUEyNTI5IC8qIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0QyNjQyNzFEMzhD
MDQyMDAwQkUxNzQgLyogQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFMzI4REFFOTFEMzhEMDA1MDAx
QTI1MjkgLyogQnl0ZWNvZGVHcmFwaC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTNEMjY0MjgxRDM4QzA0MjAwMEJFMTc0IC8qIEJ5dGVjb2RlR3JhcGgu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFMzI4
REFFQTFEMzhEMDA1MDAxQTI1MjkgLyogQnl0ZWNvZGVSZXdyaXRlci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0QyNjQyOTFEMzhDMDQyMDAwQkUx
NzQgLyogQnl0ZWNvZGVSZXdyaXRlci5jcHAgKi87IH07CisJCUUzMjhEQUVCMUQzOEQwMDUwMDFB
MjUyOSAvKiBCeXRlY29kZVJld3JpdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFM0QyNjQyQTFEMzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNvZGVSZXdy
aXRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CUUzMzYzN0E1MUI2MzIyMDIwMEVFMDg0MCAvKiBSZWZsZWN0T2JqZWN0LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMzYzN0EzMUI2MzIyMDIwMEVF
MDg0MCAvKiBSZWZsZWN0T2JqZWN0LmNwcCAqLzsgfTsKIAkJRTMzNjM3QTYxQjYzMjIwMjAwRUUw
ODQwIC8qIFJlZmxlY3RPYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEUzMzYzN0E0MUI2MzIyMDIwMEVFMDg0MCAvKiBSZWZsZWN0T2JqZWN0Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTMzQjNF
MjYxQjdBQkQ3NTAwNDhEQjJFIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5sdXQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzM0IzRTI1
MUI3QUJENzUwMDQ4REIyRSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QubHV0Lmgg
Ki87IH07CkBAIC0yMDg0LDYgKzIwODUsNyBAQAogCQlFMzc5NEU3NTFCNzdFQjk3MDA1NTQzQUUg
LyogTW9kdWxlQW5hbHl6ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTM3OTRFNzMxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmNw
cCAqLzsgfTsKIAkJRTM3OTRFNzYxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzc5NEU3NDFC
NzdFQjk3MDA1NTQzQUUgLyogTW9kdWxlQW5hbHl6ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzk2M0NFRTFCNzNGNzUwMDBFQjRDRTUgLyog
Tm9kZXNBbmFseXplTW9kdWxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEUzOTYzQ0VDMUI3M0Y3NTAwMEVCNENFNSAvKiBOb2Rlc0FuYWx5emVNb2R1
bGUuY3BwICovOyB9OworCQlFMzlENDVGNTFEMzkwMDU2MDBCM0IzNzcgLyogSW50ZXJwcmV0ZXJJ
bmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
MzlEOUQ4NDFEMzkwMDA2MDA2NjcyODIgLyogSW50ZXJwcmV0ZXJJbmxpbmVzLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM5REE0QTYxQjdFOEI3
QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOURBNEE0MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVs
ZVJlY29yZC5jcHAgKi87IH07CiAJCUUzOURBNEE3MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVs
ZVJlY29yZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTM5REE0QTUxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTNEMjM5QzgxQjgyOUMxQzAw
QkJFRjY3IC8qIEpTTW9kdWxlRW52aXJvbm1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNEMjM5QzYxQjgyOUMxQzAwQkJFRjY3IC8qIEpTTW9k
dWxlRW52aXJvbm1lbnQuY3BwICovOyB9OwpAQCAtMzA0MSw4ICszMDQzLDYgQEAKIAkJMEZFQzg0
Q0UxQkRBQ0RBQzAwODBGRjc0IC8qIEIzR2VuZXJhdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gQjNHZW5lcmF0ZS5jcHA7IHBhdGggPSBiMy9CM0dlbmVyYXRlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZFQzg0Q0YxQkRBQ0RBQzAwODBGRjc0
IC8qIEIzR2VuZXJhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQjNHZW5l
cmF0ZS5oOyBwYXRoID0gYjMvQjNHZW5lcmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwRkVDODREMDFCREFDREFDMDA4MEZGNzQgLyogQjNHZW5lcmljRnJlcXVlbnRlZEJsb2Nr
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEIzR2VuZXJpY0ZyZXF1ZW50ZWRC
bG9jay5oOyBwYXRoID0gYjMvQjNHZW5lcmljRnJlcXVlbnRlZEJsb2NrLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTBGRUM4NEQxMUJEQUNEQUMwMDgwRkY3NCAvKiBCM0luZGV4TWFw
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEIzSW5kZXhNYXAuaDsgcGF0aCA9
IGIzL0IzSW5kZXhNYXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMEZFQzg0RDIx
QkRBQ0RBQzAwODBGRjc0IC8qIEIzSW5kZXhTZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gQjNJbmRleFNldC5oOyBwYXRoID0gYjMvQjNJbmRleFNldC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwRkVDODREMzFCREFDREFDMDA4MEZGNzQgLyogQjNMb3dlclRv
QWlyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEIzTG93ZXJUb0Fp
ci5jcHA7IHBhdGggPSBiMy9CM0xvd2VyVG9BaXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwRkVDODRENDFCREFDREFDMDA4MEZGNzQgLyogQjNMb3dlclRvQWlyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEIzTG93ZXJUb0Fpci5oOyBwYXRoID0gYjMvQjNM
b3dlclRvQWlyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRUM4NEQ1MUJEQUNE
QUMwMDgwRkY3NCAvKiBCM01lbW9yeVZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IEIzTWVtb3J5VmFsdWUuY3BwOyBwYXRoID0gYjMvQjNNZW1vcnlWYWx1ZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zNTI0LDggKzM1MjQsNiBAQAogCQk3
MDlGQjg2NTFBRTMzNUM2MDAzOUQwNjkgLyogV2Vha1NldFByb3RvdHlwZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWFrU2V0UHJvdG90eXBlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzA5RkI4NjYxQUUzMzVDNjAwMzlEMDY5IC8qIFdlYWtT
ZXRQcm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vha1NldFBy
b3RvdHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MEIwQTlEMDFBOUI2NjIw
MDAwMTMwNkEgLyogUnVudGltZUZsYWdzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFJ1bnRpbWVGbGFncy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3MEI3OTE4
MzFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnJhbWUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gR2VuZXJhdG9yRnJhbWUuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQk3MEI3OTE4NDFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnJhbWUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2VuZXJhdG9yRnJhbWUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzBCNzkxODUxQzAyNDQzMjAwMjQ4MUUyIC8qIEdl
bmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTcwQjc5MTg2MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JG
dW5jdGlvbkNvbnN0cnVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdl
bmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNzBCNzkxODcxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdlbmVyYXRvckZ1bmN0
aW9uUHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQzNjUsMTAg
KzQzNjMsMTYgQEAKIAkJRTM3OTRFNzMxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1vZHVsZUFuYWx5emVy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM3OTRFNzQxQjc3RUI5NzAwNTU0
M0FFIC8qIE1vZHVsZUFuYWx5emVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IE1vZHVsZUFuYWx5emVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOTYzQ0VD
MUI3M0Y3NTAwMEVCNENFNSAvKiBOb2Rlc0FuYWx5emVNb2R1bGUuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTm9kZXNBbmFseXplTW9kdWxlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM5RDlEODQxRDM5MDAwNjAwNjY3MjgyIC8qIEludGVycHJl
dGVySW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRlcnByZXRl
cklubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM5REE0QTQxQjdFOEI3
QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEpTTW9kdWxlUmVjb3JkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRTM5REE0QTUxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTW9kdWxlUmVjb3JkLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUUzRDIzOUM2MUI4MjlDMUMwMEJCRUY2NyAvKiBKU01vZHVsZUVu
dmlyb25tZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTW9k
dWxlRW52aXJvbm1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0QyMzlD
NzFCODI5QzFDMDBCQkVGNjcgLyogSlNNb2R1bGVFbnZpcm9ubWVudC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBKU01vZHVsZUVudmlyb25tZW50Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUUzRDI2NDI2MUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRlY29kZUdlbmVy
YXRvcmlmaWNhdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBC
eXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUUzRDI2NDI3MUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlv
bi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCeXRlY29kZUdlbmVyYXRvcmlm
aWNhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFM0QyNjQyODFEMzhDMDQy
MDAwQkUxNzQgLyogQnl0ZWNvZGVHcmFwaC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBCeXRlY29kZUdyYXBoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzRDI2
NDI5MUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRlY29kZVJld3JpdGVyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJ5dGVjb2RlUmV3cml0ZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlFM0QyNjQyQTFEMzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNvZGVS
ZXdyaXRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCeXRlY29kZVJld3Jp
dGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzRUY4ODcyMUI2NkRGMjMwMDNG
MjZDQiAvKiBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlFM0VGODg3MzFCNjZERjIzMDAzRjI2Q0IgLyogSlNQcm9wZXJ0eU5h
bWVJdGVyYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1Byb3BlcnR5
TmFtZUl0ZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0OURDMTQ5MTJF
RjI2MUEwMDE4NEExRiAvKiBTb3VyY2VQcm92aWRlckNhY2hlSXRlbS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTb3VyY2VQcm92aWRlckNhY2hlSXRlbS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtNDg0Miw4ICs0ODQ2LDYgQEAKIAkJCQkwRkVDODREMDFCREFD
REFDMDA4MEZGNzQgLyogQjNHZW5lcmljRnJlcXVlbnRlZEJsb2NrLmggKi8sCiAJCQkJMEZFQzg1
QkYxQkUxNjdBMDAwODBGRjc0IC8qIEIzSGVhcFJhbmdlLmNwcCAqLywKIAkJCQkwRkVDODVDMDFC
RTE2N0EwMDA4MEZGNzQgLyogQjNIZWFwUmFuZ2UuaCAqLywKLQkJCQkwRkVDODREMTFCREFDREFD
MDA4MEZGNzQgLyogQjNJbmRleE1hcC5oICovLAotCQkJCTBGRUM4NEQyMUJEQUNEQUMwMDgwRkY3
NCAvKiBCM0luZGV4U2V0LmggKi8sCiAJCQkJREM2OUI5OUExRDE1RjkwRjAwMkUzQzAwIC8qIEIz
SW5mZXJTd2l0Y2hlcy5jcHAgKi8sCiAJCQkJREM2OUI5OUIxRDE1RjkwRjAwMkUzQzAwIC8qIEIz
SW5mZXJTd2l0Y2hlcy5oICovLAogCQkJCTBGRUM4NUI0MUJFMTQ2MkYwMDgwRkY3NCAvKiBCM0lu
c2VydGlvblNldC5jcHAgKi8sCkBAIC01MDk5LDYgKzUxMDEsNyBAQAogCQkxNDI5RDc3QTBFRDIw
RDczMDBCODk2MTkgLyogaW50ZXJwcmV0ZXIgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJ
CWNoaWxkcmVuID0gKAorCQkJCUUzOUQ5RDg0MUQzOTAwMDYwMDY2NzI4MiAvKiBJbnRlcnByZXRl
cklubGluZXMuaCAqLywKIAkJCQkwRjU1RjBGMTE0RDEwNjM2MDBBQzc2NDkgLyogQWJzdHJhY3RQ
Qy5jcHAgKi8sCiAJCQkJMEY1NUYwRjIxNEQxMDYzNjAwQUM3NjQ5IC8qIEFic3RyYWN0UEMuaCAq
LywKIAkJCQkxNDI5RDg1QjBFRDIxOEU5MDBCODk2MTkgLyogQ0xvb3BTdGFjay5jcHAgKi8sCkBA
IC01Nzg5LDggKzU3OTIsNiBAQAogCQkJCUY2OTJBODVEMDI1NTU5N0QwMUZGNjBGNyAvKiBGdW5j
dGlvblByb3RvdHlwZS5oICovLAogCQkJCTYyRDJEMzhEMUFERjEwM0YwMDAyMDZDMSAvKiBGdW5j
dGlvblJhcmVEYXRhLmNwcCAqLywKIAkJCQk2MkQyRDM4RTFBREYxMDNGMDAwMjA2QzEgLyogRnVu
Y3Rpb25SYXJlRGF0YS5oICovLAotCQkJCTcwQjc5MTgzMUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5l
cmF0b3JGcmFtZS5jcHAgKi8sCi0JCQkJNzBCNzkxODQxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVy
YXRvckZyYW1lLmggKi8sCiAJCQkJNzBCNzkxODUxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRv
ckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwICovLAogCQkJCTcwQjc5MTg2MUMwMjQ0MzIwMDI0ODFF
MiAvKiBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmggKi8sCiAJCQkJNzBCNzkxODcxQzAy
NDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcCAqLywKQEAgLTY2
NzksNiArNjY4MCwxMSBAQAogCQk5NjlBMDc4RjBFRDFEM0FFMDBGMUY2ODEgLyogYnl0ZWNvZGUg
Ki8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUUzRDI2NDI2
MUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHAgKi8sCisJ
CQkJRTNEMjY0MjcxRDM4QzA0MjAwMEJFMTc0IC8qIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9u
LmggKi8sCisJCQkJRTNEMjY0MjgxRDM4QzA0MjAwMEJFMTc0IC8qIEJ5dGVjb2RlR3JhcGguaCAq
LywKKwkJCQlFM0QyNjQyOTFEMzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNvZGVSZXdyaXRlci5jcHAg
Ki8sCisJCQkJRTNEMjY0MkExRDM4QzA0MjAwMEJFMTc0IC8qIEJ5dGVjb2RlUmV3cml0ZXIuaCAq
LywKIAkJCQk1MzcwQjRGMzFCRjI1RUEyMDA1QzQwRkMgLyogQWRhcHRpdmVJbmZlcnJlZFByb3Bl
cnR5VmFsdWVXYXRjaHBvaW50QmFzZS5jcHAgKi8sCiAJCQkJNTM3MEI0RjQxQkYyNUVBMjAwNUM0
MEZDIC8qIEFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2UuaCAqLywK
IAkJCQkwRjgzMzVCNDE2MzlDMUUzMDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5j
cHAgKi8sCkBAIC03MjIwLDggKzcyMjYsNiBAQAogCQkJCTBGRUM4NUMzMUJFMTY3QTAwMDgwRkY3
NCAvKiBCM0hlYXBSYW5nZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjY3MThCQTUxQkU5OUY3ODAw
NTIwMTdCIC8qIEFpckl0ZXJhdGVkUmVnaXN0ZXJDb2FsZXNjaW5nLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjk2MzAzQzFENDE5MkNEMDA1NjA5RDkgLyogRGVzdHJ1Y3Rpb25Nb2RlLmggaW4gSGVh
ZGVycyAqLywKLQkJCQkwRkVDODUxQjFCREFDREFDMDA4MEZGNzQgLyogQjNJbmRleE1hcC5oIGlu
IEhlYWRlcnMgKi8sCi0JCQkJMEZFQzg1MUMxQkRBQ0RBQzAwODBGRjc0IC8qIEIzSW5kZXhTZXQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUM4NUJBMUJFMTQ2MkYwMDgwRkY3NCAvKiBCM0luc2Vy
dGlvblNldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQzg1QkIxQkUxNDYyRjAwODBGRjc0IC8q
IEIzSW5zZXJ0aW9uU2V0SW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQzg1MUUxQkRB
Q0RBQzAwODBGRjc0IC8qIEIzTG93ZXJUb0Fpci5oIGluIEhlYWRlcnMgKi8sCkBAIC03MjM1LDYg
KzcyMzksNyBAQAogCQkJCTBGRUM4NTJEMUJEQUNEQUMwMDgwRkY3NCAvKiBCM1Byb2NlZHVyZUlu
bGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUM4NUJEMUJFMTQ2MkYwMDgwRkY3NCAvKiBC
M1JlZHVjZVN0cmVuZ3RoLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVDODUzMTFCREFDREFDMDA4
MEZGNzQgLyogQjNTdGFja21hcFNwZWNpYWwuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzMjhEQUU4
MUQzOEQwMDUwMDFBMjUyOSAvKiBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEZFQzg1MzUxQkRBQ0RBQzAwODBGRjc0IC8qIEIzU2xvdEJhc2VWYWx1ZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQzg1MzYxQkRBQ0RBQzAwODBGRjc0IC8qIEIzU3VjY2Vz
c29yQ29sbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQzg1MzgxQkRBQ0RBQzAwODBG
Rjc0IC8qIEIzU3dpdGNoQ2FzZS5oIGluIEhlYWRlcnMgKi8sCkBAIC03NTAyLDcgKzc1MDcsNiBA
QAogCQkJCUE3Mzc4MTBFMTc5OUVBMkUwMDgxNzUzMyAvKiBERkdOYXR1cmFsTG9vcHMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTg2RUNBM0VBMTMyREVGMUMwMDJCMkFENyAvKiBERkdOb2RlLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRkZCOTIxQjE2RDAyRjAxMDA1NUE1REIgLyogREZHTm9kZUFsbG9j
YXRvci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNzBCNzkxOTMxQzAyNEEyODAwMjQ4MUUyIC8qIEdl
bmVyYXRvckZyYW1lLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkE1ODFCQjE1MEU5NTMwMDBCOUEy
RDkgLyogREZHTm9kZUZsYWdzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjMwMEI3ODE4QUIwNTEx
MDBBNkQ3MkUgLyogREZHTm9kZU9yaWdpbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZBNTgxQkMx
NTBFOTUzMDAwQjlBMkQ5IC8qIERGR05vZGVUeXBlLmggaW4gSGVhZGVycyAqLywKQEAgLTc1MTcs
NiArNzUyMSw3IEBACiAJCQkJMEZEOEEzMjYxN0Q1MUY1NzAwQ0EyQzQwIC8qIERGR09TUkVudHJ5
cG9pbnRDcmVhdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkMwOTc2QTE0NjhBNkY3
MDBDRjI0NDIgLyogREZHT1NSRXhpdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyMzVCRUMxNzE3
OEU3MzAwNjkwQzdGIC8qIERGR09TUkV4aXRCYXNlLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzlE
NDVGNTFEMzkwMDU2MDBCM0IzNzcgLyogSW50ZXJwcmV0ZXJJbmxpbmVzLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRkZCOTIxQzE2RDAyRjExMDA1NUE1REIgLyogREZHT1NSRXhpdENvbXBpbGF0aW9u
SW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDMDk3NzExNDY5M0FGNTAwQ0YyNDQyIC8qIERG
R09TUkV4aXRDb21waWxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY3MDI1QUExNzE0QjBGQzAw
MzgyQzBFIC8qIERGR09TUkV4aXRDb21waWxlckNvbW1vbi5oIGluIEhlYWRlcnMgKi8sCkBAIC03
NzgxLDYgKzc3ODYsNyBAQAogCQkJCUUzM0IzRTI2MUI3QUJENzUwMDQ4REIyRSAvKiBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb25PYmplY3QubHV0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTMyNDM4
QzE4NTY4MzM1MDAyRUQ2OTIgLyogSW5zcGVjdG9yUHJvdG9jb2xPYmplY3RzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBNTVEOTNBQzE4NTE0Rjc5MDA0MDBERUQgLyogSW5zcGVjdG9yUHJvdG9jb2xU
eXBlcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTMyOERBRUIxRDM4RDAwNTAwMUEyNTI5IC8qIEJ5
dGVjb2RlUmV3cml0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1MEU0QjYyMTg4MDlERDUwMDY4
QTQ2RCAvKiBJbnNwZWN0b3JSdW50aW1lQWdlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1OTND
RjgzMTg0MDM3NzEwMEJGQ0UyNyAvKiBJbnNwZWN0b3JWYWx1ZXMuaCBpbiBIZWFkZXJzICovLAog
CQkJCTk2OUEwNzk5MEVEMUQzQUUwMEYxRjY4MSAvKiBJbnN0cnVjdGlvbi5oIGluIEhlYWRlcnMg
Ki8sCkBAIC03OTEzLDYgKzc5MTksNyBAQAogCQkJCUUzM0Y1MDgxMUI4NDI5QTQwMDQxMzg1NiAv
KiBKU0ludGVybmFsUHJvbWlzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY2MTgzMkExQzQ1QkYw
NzAwNzI0NTBCIC8qIEFpckNDYWxsaW5nQ29udmVudGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
RTMzRjUwNzkxQjg0MjI1NzAwNDEzODU2IC8qIEpTSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3Iu
aCBpbiBIZWFkZXJzICovLAorCQkJCUUzMjhEQUU5MUQzOEQwMDUwMDFBMjUyOSAvKiBCeXRlY29k
ZUdyYXBoLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMzNGNTA4NzFCODQ0OUVGMDA0MTM4NTYgLyog
SlNJbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvci5sdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUUz
M0Y1MDg1MUI4NDM3QTAwMDQxMzg1NiAvKiBKU0ludGVybmFsUHJvbWlzZURlZmVycmVkLmggaW4g
SGVhZGVycyAqLywKIAkJCQlFMzNGNTA3NTFCODQyMUMwMDA0MTM4NTYgLyogSlNJbnRlcm5hbFBy
b21pc2VQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLApAQCAtODg4NCw2ICs4ODkxLDcgQEAKIAkJ
CQkxNDdGMzlCRDEwN0VDMzc2MDA0MjdBNDggLyogQXJnTGlzdC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkwRjc0M0JBQTE2Qjg4MjQ5MDA5RjkyNzcgLyogQVJNNjREaXNhc3NlbWJsZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJODZEM0IyQzMxMDE1NkJERTAwMjg2NUU3IC8qIEFSTUFzc2VtYmxl
ci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFMzI4REFFNzFEMzhEMDA0MDAxQTI1MjkgLyogQnl0
ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNjVDMDI4NTAx
NzE3OTVFMjAwMzUxRTM1IC8qIEFSTXY3RGlzYXNzZW1ibGVyLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTY1QzAyODVDMTcxNzk2NjgwMDM1MUUzNSAvKiBBUk12N0RPcGNvZGUuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMEY4MzM1QjcxNjM5QzFFNjAwMTQ0M0I1IC8qIEFycmF5QWxsb2NhdGlvblBy
b2ZpbGUuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC05MjE5LDYgKzkyMjcsNyBAQAogCQkJCTBGMjVG
MUIxMTgxNjM1RjMwMDUyMkYzOSAvKiBGVExTbG93UGF0aENhbGwuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMEYzMzhERjExQkU5M0FEMTAwMTNDODhGIC8qIEIzU3RhY2ttYXBWYWx1ZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkwRjI1RjFCMzE4MTYzNUYzMDA1MjJGMzkgLyogRlRMU2xvd1BhdGhD
YWxsS2V5LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUUzMjhEQUVBMUQzOEQwMDUwMDFBMjUyOSAv
KiBCeXRlY29kZVJld3JpdGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQzMTlEQTAzMUMxQkU0
MEEwMDFEMjYwQiAvKiBCM0xvd2VyTWFjcm9zQWZ0ZXJPcHRpbWl6YXRpb25zLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTBGRUEwQTE2MTcwNkJCOTAwMEJCNzIyQyAvKiBGVExTdGF0ZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkwRjIzNUJFMTE3MTc4RTFDMDA2OTBDN0YgLyogRlRMVGh1bmtzLmNw
cCBpbiBTb3VyY2VzICovLApAQCAtOTYyOSw3ICs5NjM4LDYgQEAKIAkJCQk3OUVFMEJGRjFCNEFG
Qjg1MDAwMzg1QzkgLyogVmFyaWFibGVFbnZpcm9ubWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkwRjZDNzM1MDFBQzlGOTlGMDBCRTE2ODIgLyogVmFyaWFibGVXcml0ZUZpcmVEZXRhaWwuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFMDUwMkMxQUE5MDk1NjAwRDMzQjMzIC8qIFZhck9mZnNl
dC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk3MEI3OTE5MjFDMDI0QTIzMDAyNDgxRTIgLyogR2Vu
ZXJhdG9yRnJhbWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyMEMyNTkxQTgwMTNBQjAwREEz
MjI5IC8qIFZpcnR1YWxSZWdpc3Rlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMThFM0E1OTBE
RjkyNzhDMDBEOTBCMzQgLyogVk0uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkU1OTMyQTcxODND
NUEyNjAwQTFFQ0NDIC8qIFZNRW50cnlTY29wZS5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0Jhc2ljQmxvY2tVdGlscy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzQmFzaWNCbG9ja1V0aWxzLmgKaW5kZXggNGE3MTc2Nzg3OGM2
ZWIzNzIzMDUwZGU5MjE5NWVkZWE1ODUwMTlmNy4uMzJhNTlmYzEyMGNiODQwZmFiYTA2YjFmN2Qx
ZDdiMWI1YTlhYWQ5YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQmFz
aWNCbG9ja1V0aWxzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQmFzaWNCbG9j
a1V0aWxzLmgKQEAgLTI4LDggKzI4LDggQEAKIAogI2lmIEVOQUJMRShCM19KSVQpCiAKLSNpbmNs
dWRlICJCM0luZGV4U2V0LmgiCiAjaW5jbHVkZSA8d3RmL0dyYXBoTm9kZVdvcmtsaXN0Lmg+Cisj
aW5jbHVkZSA8d3RmL0luZGV4U2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1l
c3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM0Jsb2NrV29ya2xpc3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0Js
b2NrV29ya2xpc3QuaAppbmRleCBhZjdlZTJjOTZiYzk4ODg5YmQwZDc4YjE2ZTYyNzhkNTczY2Y2
MjIxLi45ZTZiZTRiYjlmNzAxOTIyM2UxNWUyYWM0OWM4ZjZkZTE2Yzg4OTY2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNCbG9ja1dvcmtsaXN0LmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzQmxvY2tXb3JrbGlzdC5oCkBAIC0yOCwxMyArMjgsMTQgQEAK
IAogI2lmIEVOQUJMRShCM19KSVQpCiAKLSNpbmNsdWRlICJCM0Jhc2ljQmxvY2suaCIKLSNpbmNs
dWRlICJCM0luZGV4U2V0LmgiCiAjaW5jbHVkZSA8d3RmL0dyYXBoTm9kZVdvcmtsaXN0Lmg+Cisj
aW5jbHVkZSA8d3RmL0luZGV4U2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1l
c3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKIAorY2xhc3MgQmFzaWNCbG9jazsKKwogdHlwZWRl
ZiBHcmFwaE5vZGVXb3JrbGlzdDxCYXNpY0Jsb2NrKiwgSW5kZXhTZXQ8QmFzaWNCbG9jaz4+IEJs
b2NrV29ya2xpc3Q7CiAKIC8vIFdoZW4geW91IHNheSBCbG9ja1dpdGg8aW50PiB5b3Ugc2hvdWxk
IHJlYWQgaXQgYXMgImJsb2NrIHdpdGggYW4gaW50Ii4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM0NGRy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ0ZHLmgK
aW5kZXggNThjNDBiMWJiYWY3N2RkZWZhMWQyMDYzZjkzZTU4OTQ1OTFkMTdiMy4uOTA0YWIzZjlh
MzYwYzI5OTU2MjBhMDAyZmFhN2MxNWRlMjI1ZWFhMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzQ0ZHLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ0ZH
LmgKQEAgLTI5LDkgKzI5LDkgQEAKICNpZiBFTkFCTEUoQjNfSklUKQogCiAjaW5jbHVkZSAiQjNC
YXNpY0Jsb2NrLmgiCi0jaW5jbHVkZSAiQjNJbmRleE1hcC5oIgotI2luY2x1ZGUgIkIzSW5kZXhT
ZXQuaCIKICNpbmNsdWRlICJCM1Byb2NlZHVyZS5oIgorI2luY2x1ZGUgPHd0Zi9JbmRleE1hcC5o
PgorI2luY2x1ZGUgPHd0Zi9JbmRleFNldC5oPgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNl
IEIzIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRHVwbGljYXRl
VGFpbHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRHVwbGljYXRlVGFpbHMuY3Bw
CmluZGV4IGVlY2NmNTdiYTU0NzUzMDQ4MWYwOTA1ZWRmODg4MzliMmE4MmUxMWQuLmZlOTRhNjA3
ZDdkNWQ5MWU1MDI0ZDA5ZGRlYWRjOTUxNjZhNDY2M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM0R1cGxpY2F0ZVRhaWxzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNEdXBsaWNhdGVUYWlscy5jcHAKQEAgLTMyLDEzICszMiwxMyBAQAogI2luY2x1
ZGUgIkIzQnJlYWtDcml0aWNhbEVkZ2VzLmgiCiAjaW5jbHVkZSAiQjNEb21pbmF0b3JzLmgiCiAj
aW5jbHVkZSAiQjNGaXhTU0EuaCIKLSNpbmNsdWRlICJCM0luZGV4U2V0LmgiCiAjaW5jbHVkZSAi
QjNJbnNlcnRpb25TZXRJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQjNQaGFzZVNjb3BlLmgiCiAjaW5j
bHVkZSAiQjNQcm9jZWR1cmVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQjNTd2l0Y2hWYWx1ZS5oIgog
I2luY2x1ZGUgIkIzVXBzaWxvblZhbHVlLmgiCiAjaW5jbHVkZSAiQjNWYWx1ZUlubGluZXMuaCIK
KyNpbmNsdWRlIDx3dGYvSW5kZXhTZXQuaD4KIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBC
MyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0ZpeFNTQS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNGaXhTU0EuY3BwCmluZGV4IGY0YjAxMjJjNGRl
Y2RlOTVjM2RiMmQ4MjQxZjY5MjgyZDViYTM5NmEuLjczMGMyYzg3NjZjNjU2NTQ2YjQ4NzQ2ZTEy
NTAzY2QzNTkzMjRmOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0Zp
eFNTQS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRml4U1NBLmNwcApAQCAt
MzEsNyArMzEsNiBAQAogI2luY2x1ZGUgIkIzQmFzaWNCbG9ja0lubGluZXMuaCIKICNpbmNsdWRl
ICJCM0JyZWFrQ3JpdGljYWxFZGdlcy5oIgogI2luY2x1ZGUgIkIzRG9taW5hdG9ycy5oIgotI2lu
Y2x1ZGUgIkIzSW5kZXhTZXQuaCIKICNpbmNsdWRlICJCM0luc2VydGlvblNldElubGluZXMuaCIK
ICNpbmNsdWRlICJCM1BoYXNlU2NvcGUuaCIKICNpbmNsdWRlICJCM1Byb2NlZHVyZUlubGluZXMu
aCIKQEAgLTQxLDYgKzQwLDcgQEAKICNpbmNsdWRlICJCM1ZhcmlhYmxlLmgiCiAjaW5jbHVkZSAi
QjNWYXJpYWJsZVZhbHVlLmgiCiAjaW5jbHVkZSA8d3RmL0NvbW1hUHJpbnRlci5oPgorI2luY2x1
ZGUgPHd0Zi9JbmRleFNldC5oPgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRml4U1NBLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNGaXhTU0EuaAppbmRleCA2NjJlNDlkNjI4YWVmNjIwOTUxMDk1
ODdlZWE0NTM1NWM4MDY3N2M1Li44ODU5Mjc2ZTJkOTI2ZGYzMTAyMDYwNzdlYTc1YjIwYWE3NDg4
YTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNGaXhTU0EuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNGaXhTU0EuaApAQCAtMjgsOCArMjgsOSBAQAog
CiAjaWYgRU5BQkxFKEIzX0pJVCkKIAotI2luY2x1ZGUgIkIzSW5kZXhTZXQuaCIKICNpbmNsdWRl
ICJCM1ZhbHVlLmgiCisjaW5jbHVkZSA8d3RmL0luZGV4U2V0Lmg+CisjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzSW5kZXhNYXAuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM0luZGV4TWFwLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJhYTMz
OWYwOWRlNDJjMGI0ZDU5YmQ2YWYyZTk4MjY0ZmJjMTFiNjEuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzSW5k
ZXhNYXAuaAorKysgL2Rldi9udWxsCkBAIC0xLDg3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0g
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZuZGVmIEIzSW5kZXhNYXBfaAot
I2RlZmluZSBCM0luZGV4TWFwX2gKLQotI2lmIEVOQUJMRShCM19KSVQpCi0KLSNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+Ci0KLW5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgewotCi0vLyBUaGlz
IGlzIGEgbWFwIGZvciBrZXlzIHRoYXQgaGF2ZSBhbiBpbmRleCgpLiBJdCdzIHN1cGVyIGVmZmlj
aWVudCBmb3IgQmFzaWNCbG9ja3MuIEl0J3Mgb25seQotLy8gZWZmaWNpZW50IGZvciBWYWx1ZXMg
aWYgeW91IGRvbid0IGNyZWF0ZSB0b28gbWFueSBvZiB0aGVzZSBtYXBzLCBzaW5jZSBWYWx1ZXMg
Y2FuIGhhdmUgdmVyeQotLy8gc3BhcnNlIGluZGljZXMgYW5kIHRoZXJlIGFyZSBhIGxvdCBvZiBW
YWx1ZXMuCi0KLXRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWU+Ci1jbGFzcyBJ
bmRleE1hcCB7Ci1wdWJsaWM6Ci0gICAgZXhwbGljaXQgSW5kZXhNYXAoc2l6ZV90IHNpemUgPSAw
KQotICAgIHsKLSAgICAgICAgbV92ZWN0b3IuZmlsbChWYWx1ZSgpLCBzaXplKTsKLSAgICB9Ci0K
LSAgICB2b2lkIHJlc2l6ZShzaXplX3Qgc2l6ZSkKLSAgICB7Ci0gICAgICAgIG1fdmVjdG9yLmZp
bGwoVmFsdWUoKSwgc2l6ZSk7Ci0gICAgfQotCi0gICAgdm9pZCBjbGVhcigpCi0gICAgewotICAg
ICAgICBtX3ZlY3Rvci5maWxsKFZhbHVlKCksIG1fdmVjdG9yLnNpemUoKSk7Ci0gICAgfQotCi0g
ICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX3ZlY3Rvci5zaXplKCk7IH0KLQotICAg
IFZhbHVlJiBvcGVyYXRvcltdKHNpemVfdCBpbmRleCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBt
X3ZlY3RvcltpbmRleF07Ci0gICAgfQotCi0gICAgY29uc3QgVmFsdWUmIG9wZXJhdG9yW10oc2l6
ZV90IGluZGV4KSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fdmVjdG9yW2luZGV4XTsK
LSAgICB9Ci0gICAgCi0gICAgVmFsdWUmIG9wZXJhdG9yW10oS2V5KiBrZXkpCi0gICAgewotICAg
ICAgICByZXR1cm4gbV92ZWN0b3Jba2V5LT5pbmRleCgpXTsKLSAgICB9Ci0gICAgCi0gICAgY29u
c3QgVmFsdWUmIG9wZXJhdG9yW10oS2V5KiBrZXkpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1
cm4gbV92ZWN0b3Jba2V5LT5pbmRleCgpXTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgVmVjdG9y
PFZhbHVlPiBtX3ZlY3RvcjsKLX07Ci0KLX0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMwotCi0jZW5k
aWYgLy8gRU5BQkxFKEIzX0pJVCkKLQotI2VuZGlmIC8vIEIzSW5kZXhNYXBfaApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzSW5kZXhTZXQuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM0luZGV4U2V0LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFi
OWIyYjRlMzRiZjQzODAwN2FkMjE3Y2I1YzdhM2VhOTRjYjlhNDYuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
SW5kZXhTZXQuaAorKysgL2Rldi9udWxsCkBAIC0xLDE2NSArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2lmbmRlZiBCM0luZGV4U2V0
X2gKLSNkZWZpbmUgQjNJbmRleFNldF9oCi0KLSNpbmNsdWRlIDx3dGYvQml0VmVjdG9yLmg+Ci0j
aW5jbHVkZSA8d3RmL0NvbW1hUHJpbnRlci5oPgotCi1uYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNl
IEIzIHsKLQotLy8gVGhpcyBpcyBhIHNldCBmb3IgdGhpbmdzIHRoYXQgaGF2ZSBhbiBpbmRleCgp
LiBJdCdzIHN1cGVyIGVmZmljaWVudCBmb3IgQmFzaWNCbG9ja3MuIEl0J3Mgb25seQotLy8gZWZm
aWNpZW50IGZvciBWYWx1ZXMgaWYgeW91IGRvbid0IGNyZWF0ZSB0b28gbWFueSBvZiB0aGVzZSBz
ZXRzLCBzaW5jZSBWYWx1ZXMgY2FuIGhhdmUgdmVyeSBzcGFyc2UKLS8vIGluZGljZXMgYW5kIHRo
ZXJlIGFyZSBhIGxvdCBvZiBWYWx1ZXMuCi0KLS8vIElmIHlvdSB3YW50IGEgc2V0IG9mIEJhc2lj
QmxvY2tzLCB5b3UgZG8gSW5kZXhTZXQ8QmFzaWNCbG9jaz4uIFNvLCBUID0gQmFzaWNCbG9jay4K
LXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1jbGFzcyBJbmRleFNldCB7Ci1wdWJsaWM6Ci0gICAgSW5k
ZXhTZXQoKQotICAgIHsKLSAgICB9Ci0KLSAgICBib29sIGFkZChUKiB2YWx1ZSkKLSAgICB7Ci0g
ICAgICAgIHJldHVybiAhbV9zZXQuc2V0KHZhbHVlLT5pbmRleCgpKTsKLSAgICB9Ci0KLSAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBJdGVyYWJsZT4KLSAgICBib29sIGFkZEFsbChjb25zdCBJdGVyYWJs
ZSYgaXRlcmFibGUpCi0gICAgewotICAgICAgICBib29sIHJlc3VsdCA9IGZhbHNlOwotICAgICAg
ICBmb3IgKFQqIHZhbHVlIDogaXRlcmFibGUpCi0gICAgICAgICAgICByZXN1bHQgfD0gYWRkKHZh
bHVlKTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0KLSAgICBib29sIHJlbW92ZShU
KiB2YWx1ZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX3NldC5jbGVhcih2YWx1ZS0+aW5kZXgo
KSk7Ci0gICAgfQotCi0gICAgYm9vbCBjb250YWlucyhUKiB2YWx1ZSkgY29uc3QKLSAgICB7Ci0g
ICAgICAgIGlmICghdmFsdWUpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHJl
dHVybiBtX3NldC5nZXQodmFsdWUtPmluZGV4KCkpOwotICAgIH0KLQotICAgIHNpemVfdCBzaXpl
KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX3NldC5iaXRDb3VudCgpOwotICAgIH0K
LQotICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gIXNpemUo
KTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDb2xsZWN0aW9uVHlwZT4KLSAgICBj
bGFzcyBJdGVyYWJsZSB7Ci0gICAgcHVibGljOgotICAgICAgICBJdGVyYWJsZShjb25zdCBDb2xs
ZWN0aW9uVHlwZSYgY29sbGVjdGlvbiwgY29uc3QgQml0VmVjdG9yJiBzZXQpCi0gICAgICAgICAg
ICA6IG1fY29sbGVjdGlvbihjb2xsZWN0aW9uKQotICAgICAgICAgICAgLCBtX3NldChzZXQpCi0g
ICAgICAgIHsKLSAgICAgICAgfQotCi0gICAgICAgIGNsYXNzIGl0ZXJhdG9yIHsKLSAgICAgICAg
cHVibGljOgotICAgICAgICAgICAgaXRlcmF0b3IoKQotICAgICAgICAgICAgICAgIDogbV9jb2xs
ZWN0aW9uKG51bGxwdHIpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAg
ICAgIGl0ZXJhdG9yKGNvbnN0IENvbGxlY3Rpb25UeXBlJiBjb2xsZWN0aW9uLCBCaXRWZWN0b3I6
Oml0ZXJhdG9yIGl0ZXIpCi0gICAgICAgICAgICAgICAgOiBtX2NvbGxlY3Rpb24oJmNvbGxlY3Rp
b24pCi0gICAgICAgICAgICAgICAgLCBtX2l0ZXIoaXRlcikKLSAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgIH0KLQotICAgICAgICAgICAgVCogb3BlcmF0b3IqKCkKLSAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICByZXR1cm4gbV9jb2xsZWN0aW9uLT5hdCgqbV9pdGVyKTsKLSAgICAgICAg
ICAgIH0KLQotICAgICAgICAgICAgaXRlcmF0b3ImIG9wZXJhdG9yKysoKQotICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgICsrbV9pdGVyOwotICAgICAgICAgICAgICAgIHJldHVybiAqdGhp
czsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IGl0
ZXJhdG9yJiBvdGhlcikgY29uc3QKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1
cm4gbV9pdGVyID09IG90aGVyLm1faXRlcjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAg
Ym9vbCBvcGVyYXRvciE9KGNvbnN0IGl0ZXJhdG9yJiBvdGhlcikgY29uc3QKLSAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7Ci0gICAgICAgICAg
ICB9Ci0KLSAgICAgICAgcHJpdmF0ZToKLSAgICAgICAgICAgIGNvbnN0IENvbGxlY3Rpb25UeXBl
KiBtX2NvbGxlY3Rpb247Ci0gICAgICAgICAgICBCaXRWZWN0b3I6Oml0ZXJhdG9yIG1faXRlcjsK
LSAgICAgICAgfTsKLQotICAgICAgICBpdGVyYXRvciBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIGl0
ZXJhdG9yKG1fY29sbGVjdGlvbiwgbV9zZXQuYmVnaW4oKSk7IH0KLSAgICAgICAgaXRlcmF0b3Ig
ZW5kKCkgY29uc3QgeyByZXR1cm4gaXRlcmF0b3IobV9jb2xsZWN0aW9uLCBtX3NldC5lbmQoKSk7
IH0KLQotICAgIHByaXZhdGU6Ci0gICAgICAgIGNvbnN0IENvbGxlY3Rpb25UeXBlJiBtX2NvbGxl
Y3Rpb247Ci0gICAgICAgIGNvbnN0IEJpdFZlY3RvciYgbV9zZXQ7Ci0gICAgfTsKLQotICAgIC8v
IEZvciBiYXNpYyBibG9ja3MsIHlvdSBkbzoKLSAgICAvLyBpbmRleFNldC52YWx1ZXMocHJvY2Vk
dXJlKTsKLSAgICAvLwotICAgIC8vIEZvciB2YWx1ZXMsIHlvdSBkbzoKLSAgICAvLyBpbmRleFNl
dC52YWx1ZXMocHJvY2VkdXJlLnZhbHVlcygpKTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDb2xs
ZWN0aW9uVHlwZT4KLSAgICBJdGVyYWJsZTxDb2xsZWN0aW9uVHlwZT4gdmFsdWVzKGNvbnN0IENv
bGxlY3Rpb25UeXBlJiBjb2xsZWN0aW9uKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIEl0
ZXJhYmxlPENvbGxlY3Rpb25UeXBlPihjb2xsZWN0aW9uLCBpbmRpY2VzKCkpOwotICAgIH0KLQot
ICAgIGNvbnN0IEJpdFZlY3RvciYgaW5kaWNlcygpIGNvbnN0IHsgcmV0dXJuIG1fc2V0OyB9Ci0K
LSAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKLSAgICB7Ci0gICAgICAgIENv
bW1hUHJpbnRlciBjb21tYTsKLSAgICAgICAgZm9yIChzaXplX3QgaW5kZXggOiBpbmRpY2VzKCkp
Ci0gICAgICAgICAgICBvdXQucHJpbnQoY29tbWEsIFQ6OmR1bXBQcmVmaXgsIGluZGV4KTsKLSAg
ICB9Ci0KLXByaXZhdGU6Ci0gICAgQml0VmVjdG9yIG1fc2V0OwotfTsKLQotfSB9IC8vIG5hbWVz
cGFjZSBKU0M6OkIzCi0KLSNlbmRpZiAvLyBCM0luZGV4U2V0X2gKLQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcAppbmRleCAzMTJkOTM3Y2MxYmJkNTgxZjQwMmRlMDZi
NWRjNzI3OTBkMTg1NzdmLi5hNmI2YWUxNTlmZTE1NzJmM2Q5MTgwNDc5NjM1NmE5YTVmMDllM2Yy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcApAQCAtNDAsOCAr
NDAsNiBAQAogI2luY2x1ZGUgIkIzQ2hlY2tTcGVjaWFsLmgiCiAjaW5jbHVkZSAiQjNDb21tdXRh
dGl2aXR5LmgiCiAjaW5jbHVkZSAiQjNEb21pbmF0b3JzLmgiCi0jaW5jbHVkZSAiQjNJbmRleE1h
cC5oIgotI2luY2x1ZGUgIkIzSW5kZXhTZXQuaCIKICNpbmNsdWRlICJCM01lbW9yeVZhbHVlLmgi
CiAjaW5jbHVkZSAiQjNQYXRjaHBvaW50U3BlY2lhbC5oIgogI2luY2x1ZGUgIkIzUGF0Y2hwb2lu
dFZhbHVlLmgiCkBAIC01NSw2ICs1Myw4IEBACiAjaW5jbHVkZSAiQjNWYWx1ZUlubGluZXMuaCIK
ICNpbmNsdWRlICJCM1ZhcmlhYmxlLmgiCiAjaW5jbHVkZSAiQjNWYXJpYWJsZVZhbHVlLmgiCisj
aW5jbHVkZSA8d3RmL0luZGV4TWFwLmg+CisjaW5jbHVkZSA8d3RmL0luZGV4U2V0Lmg+CiAjaW5j
bHVkZSA8d3RmL0xpc3REdW1wLmg+CiAKICNpZiBDT01QSUxFUihHQ0MpICYmIEFTU0VSVF9ESVNB
QkxFRApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUGhpQ2hpbGRyZW4u
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1BoaUNoaWxkcmVuLmgKaW5kZXggY2RmMzY4
ZjI0YWE2ZTVhNTgzOWYzZmFhNjVkZjA5ZGEwNjM0NWNlNy4uZTExZmNiZWI4OTY1MDFjNjZhZDNh
Y2MzN2QyMDFiMDE2ZTU1MGZjYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzUGhpQ2hpbGRyZW4uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQaGlDaGls
ZHJlbi5oCkBAIC0yOCwxMCArMjgsMTAgQEAKIAogI2lmIEVOQUJMRShCM19KSVQpCiAKLSNpbmNs
dWRlICJCM0luZGV4TWFwLmgiCiAjaW5jbHVkZSAiQjNQcm9jZWR1cmUuaCIKICNpbmNsdWRlICJC
M1Vwc2lsb25WYWx1ZS5oIgogI2luY2x1ZGUgPHd0Zi9HcmFwaE5vZGVXb3JrbGlzdC5oPgorI2lu
Y2x1ZGUgPHd0Zi9JbmRleE1hcC5oPgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJlLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUuaAppbmRleCA1NzY0MTNlMTA5MGE4
NDc3ZTM0ZDQyMzU4YzY5ODQ2NWMxYWQ1OTFkLi5lMmUxMzRkYWJlY2QwMzc0OWZlN2E5N2Y0ODhi
ZThmYTBiY2M0OGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9j
ZWR1cmUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUuaApAQCAt
NDAsNiArNDAsNyBAQAogI2luY2x1ZGUgPHd0Zi9CYWcuaD4KICNpbmNsdWRlIDx3dGYvRmFzdE1h
bGxvYy5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL0luZGV4ZWRD
b250YWluZXJJdGVyYXRvci5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1
ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgogI2luY2x1ZGUgPHd0Zi9TaGFyZWRUYXNrLmg+CkBAIC0x
MzMsNTMgKzEzNCw3IEBAIGNsYXNzIFByb2NlZHVyZSB7CiAgICAgQmFzaWNCbG9jayogYXQodW5z
aWduZWQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIG1fYmxvY2tzW2luZGV4XS5nZXQoKTsgfQogICAg
IEJhc2ljQmxvY2sqIG9wZXJhdG9yW10odW5zaWduZWQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIGF0
KGluZGV4KTsgfQogCi0gICAgY2xhc3MgaXRlcmF0b3IgewotICAgIHB1YmxpYzoKLSAgICAgICAg
aXRlcmF0b3IoKQotICAgICAgICAgICAgOiBtX3Byb2NlZHVyZShudWxscHRyKQotICAgICAgICAg
ICAgLCBtX2luZGV4KDApCi0gICAgICAgIHsKLSAgICAgICAgfQotCi0gICAgICAgIGl0ZXJhdG9y
KGNvbnN0IFByb2NlZHVyZSYgcHJvY2VkdXJlLCB1bnNpZ25lZCBpbmRleCkKLSAgICAgICAgICAg
IDogbV9wcm9jZWR1cmUoJnByb2NlZHVyZSkKLSAgICAgICAgICAgICwgbV9pbmRleChmaW5kTmV4
dChpbmRleCkpCi0gICAgICAgIHsKLSAgICAgICAgfQotCi0gICAgICAgIEJhc2ljQmxvY2sqIG9w
ZXJhdG9yKigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBtX3Byb2NlZHVyZS0+YXQo
bV9pbmRleCk7Ci0gICAgICAgIH0KLQotICAgICAgICBpdGVyYXRvciYgb3BlcmF0b3IrKygpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIG1faW5kZXggPSBmaW5kTmV4dChtX2luZGV4ICsgMSk7Ci0g
ICAgICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgICAgIH0KLQotICAgICAgICBib29sIG9wZXJh
dG9yPT0oY29uc3QgaXRlcmF0b3ImIG90aGVyKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAg
ICBBU1NFUlQobV9wcm9jZWR1cmUgPT0gb3RoZXIubV9wcm9jZWR1cmUpOwotICAgICAgICAgICAg
cmV0dXJuIG1faW5kZXggPT0gb3RoZXIubV9pbmRleDsKLSAgICAgICAgfQotICAgICAgICAKLSAg
ICAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IGl0ZXJhdG9yJiBvdGhlcikgY29uc3QKLSAgICAg
ICAgewotICAgICAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwotICAgICAgICB9Ci0K
LSAgICBwcml2YXRlOgotICAgICAgICB1bnNpZ25lZCBmaW5kTmV4dCh1bnNpZ25lZCBpbmRleCkK
LSAgICAgICAgewotICAgICAgICAgICAgd2hpbGUgKGluZGV4IDwgbV9wcm9jZWR1cmUtPnNpemUo
KSAmJiAhbV9wcm9jZWR1cmUtPmF0KGluZGV4KSkKLSAgICAgICAgICAgICAgICBpbmRleCsrOwot
ICAgICAgICAgICAgcmV0dXJuIGluZGV4OwotICAgICAgICB9Ci0KLSAgICAgICAgY29uc3QgUHJv
Y2VkdXJlKiBtX3Byb2NlZHVyZTsKLSAgICAgICAgdW5zaWduZWQgbV9pbmRleDsKLSAgICB9Owor
ICAgIHR5cGVkZWYgV1RGOjpJbmRleGVkQ29udGFpbmVySXRlcmF0b3I8UHJvY2VkdXJlPiBpdGVy
YXRvcjsKIAogICAgIGl0ZXJhdG9yIGJlZ2luKCkgY29uc3QgeyByZXR1cm4gaXRlcmF0b3IoKnRo
aXMsIDApOyB9CiAgICAgaXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gaXRlcmF0b3IoKnRo
aXMsIHNpemUoKSk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Jl
ZHVjZURvdWJsZVRvRmxvYXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUmVkdWNl
RG91YmxlVG9GbG9hdC5jcHAKaW5kZXggYmQ3Y2QwOTBjNmE2M2Y3YjlkMTMwN2Q0ZmEzNjc5NmEx
Yjk1NzMyNi4uOGVjZTM4OWNhMmVmZDUzODlkYzkwMmRmMzE1NjFmOTU2M2QzNTk3MSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUmVkdWNlRG91YmxlVG9GbG9hdC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUmVkdWNlRG91YmxlVG9GbG9hdC5jcHAK
QEAgLTI5LDExICsyOSwxMSBAQAogI2lmIEVOQUJMRShCM19KSVQpCiAKICNpbmNsdWRlICJCM0Jh
c2ljQmxvY2suaCIKLSNpbmNsdWRlICJCM0luZGV4U2V0LmgiCiAjaW5jbHVkZSAiQjNJbnNlcnRp
b25TZXRJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQjNQaGFzZVNjb3BlLmgiCiAjaW5jbHVkZSAiQjNV
c2VDb3VudHMuaCIKICNpbmNsdWRlICJCM1ZhbHVlSW5saW5lcy5oIgorI2luY2x1ZGUgPHd0Zi9J
bmRleFNldC5oPgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUmVkdWNlU3RyZW5ndGguY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzUmVkdWNlU3RyZW5ndGguY3BwCmluZGV4IDRjYmYyNTI4ODZi
OTdjY2JmYjM3NjQwNTdmOWY2MDQyYzZhMWU1YTAuLjBiZDFlYTBiNDhjZTE5YTYwYmVmNzI2ZGJl
OTg4NTAzZTk0OGNkMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Jl
ZHVjZVN0cmVuZ3RoLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNSZWR1Y2VT
dHJlbmd0aC5jcHAKQEAgLTMyLDcgKzMyLDYgQEAKICNpbmNsdWRlICJCM0Jsb2NrSW5zZXJ0aW9u
U2V0LmgiCiAjaW5jbHVkZSAiQjNDb21wdXRlRGl2aXNpb25NYWdpYy5oIgogI2luY2x1ZGUgIkIz
RG9taW5hdG9ycy5oIgotI2luY2x1ZGUgIkIzSW5kZXhTZXQuaCIKICNpbmNsdWRlICJCM0luc2Vy
dGlvblNldElubGluZXMuaCIKICNpbmNsdWRlICJCM01lbW9yeVZhbHVlLmgiCiAjaW5jbHVkZSAi
QjNQaGFzZVNjb3BlLmgiCkBAIC00OCw2ICs0Nyw3IEBACiAjaW5jbHVkZSAiQjNWYXJpYWJsZVZh
bHVlLmgiCiAjaW5jbHVkZSA8d3RmL0dyYXBoTm9kZVdvcmtsaXN0Lmg+CiAjaW5jbHVkZSA8d3Rm
L0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvSW5kZXhTZXQuaD4KIAogbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBCMyB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M1NTQUNhbGN1bGF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1NTQUNhbGN1bGF0
b3IuaAppbmRleCBmNTc2NjgyMmY0ZmZjMzZiZDZhMjJhOTc3MGYyMDIwZGY1MTI0NDZiLi4xZTk2
MjgyNjJmZjNmZWQyMjkwMzFhZWEzZDE3ZDBiNjgxMmFmZjMxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNTU0FDYWxjdWxhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzU1NBQ2FsY3VsYXRvci5oCkBAIC0yOSw5ICsyOSw5IEBACiAjaWYgRU5BQkxF
KEIzX0pJVCkKIAogI2luY2x1ZGUgIkIzRG9taW5hdG9ycy5oIgotI2luY2x1ZGUgIkIzSW5kZXhN
YXAuaCIKICNpbmNsdWRlICJCM1Byb2NlZHVyZUlubGluZXMuaCIKICNpbmNsdWRlIDx3dGYvQmFn
Lmg+CisjaW5jbHVkZSA8d3RmL0luZGV4TWFwLmg+CiAjaW5jbHVkZSA8d3RmL1NlZ21lbnRlZFZl
Y3Rvci5oPgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1VzZUNvdW50cy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzVXNlQ291bnRzLmgKaW5kZXggYTU5ZDU4YWE0NmM2MjcyODU3ZTgyOWQzOGExNGVm
MDgwN2I3MzdlOS4uNmU5ZTQ4MmI3OTlkMjQwYjBlNjU5NTZlZjQ1YmI0Njg0MzNmZmY2YiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVXNlQ291bnRzLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVXNlQ291bnRzLmgKQEAgLTI4LDggKzI4LDggQEAKIAog
I2lmIEVOQUJMRShCM19KSVQpCiAKLSNpbmNsdWRlICJCM0luZGV4TWFwLmgiCiAjaW5jbHVkZSAi
QjNWYWx1ZS5oIgorI2luY2x1ZGUgPHd0Zi9JbmRleE1hcC5oPgogCiBuYW1lc3BhY2UgSlNDIHsg
bmFtZXNwYWNlIEIzIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fp
ci9BaXJDb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckNvZGUuaAppbmRl
eCA2NGE3NDVkMDIxMGI2YTdmY2I3YTkzNTFiMTMwYWUwOWEyNmQyNTBkLi5mMTllZmIyODAyZjZh
ZDU1OGVlODdiZGUyZTZhYjYyNDhiNjE1YTBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvYWlyL0FpckNvZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWly
L0FpckNvZGUuaApAQCAtMzMsMTEgKzMzLDExIEBACiAjaW5jbHVkZSAiQWlyU3BlY2lhbC5oIgog
I2luY2x1ZGUgIkFpclN0YWNrU2xvdC5oIgogI2luY2x1ZGUgIkFpclRtcC5oIgotI2luY2x1ZGUg
IkIzSW5kZXhNYXAuaCIKICNpbmNsdWRlICJCM1NwYXJzZUNvbGxlY3Rpb24uaCIKICNpbmNsdWRl
ICJDQ2FsbEhlbHBlcnMuaCIKICNpbmNsdWRlICJSZWdpc3RlckF0T2Zmc2V0TGlzdC5oIgogI2lu
Y2x1ZGUgIlN0YWNrQWxpZ25tZW50LmgiCisjaW5jbHVkZSA8d3RmL0luZGV4TWFwLmg+CiAKIG5h
bWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvYWlyL0FpckVsaW1pbmF0ZURlYWRDb2RlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9haXIvQWlyRWxpbWluYXRlRGVhZENvZGUuY3BwCmluZGV4IDM2NjNlYWE5OTc5
NjdmNTdlNDUxYmI2MWE0NmQ5YWRjMzAwMTNiNzUuLmNhMzZhZjkzZTc5MTA3OTljYzdiZDQ4MTFi
MzA3NDU2NWM3MzhmMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIv
QWlyRWxpbWluYXRlRGVhZENvZGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9h
aXIvQWlyRWxpbWluYXRlRGVhZENvZGUuY3BwCkBAIC0zMSw3ICszMSw3IEBACiAjaW5jbHVkZSAi
QWlyQ29kZS5oIgogI2luY2x1ZGUgIkFpckluc3RJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQWlyUGhh
c2VTY29wZS5oIgotI2luY2x1ZGUgIkIzSW5kZXhTZXQuaCIKKyNpbmNsdWRlIDx3dGYvSW5kZXhT
ZXQuaD4KIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7IG5hbWVzcGFjZSBBaXIgewog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckZpeE9idmlvdXNT
cGlsbHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJGaXhPYnZpb3VzU3Bp
bGxzLmNwcAppbmRleCA3MWQ5OTBmMjFlZjY0NjA2NGQxMjkzZjBkYjBmN2ExZWQwYjBlYmE0Li5i
YWJkMTczNThiYThmNDliMzQ0YmU1ZGE2ZjBjZjZhZjMwYjQ1NjcyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckZpeE9idmlvdXNTcGlsbHMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRml4T2J2aW91c1NwaWxscy5jcHAKQEAgLTMy
LDcgKzMyLDcgQEAKICNpbmNsdWRlICJBaXJDb2RlLmgiCiAjaW5jbHVkZSAiQWlySW5zdElubGlu
ZXMuaCIKICNpbmNsdWRlICJBaXJQaGFzZVNjb3BlLmgiCi0jaW5jbHVkZSAiQjNJbmRleE1hcC5o
IgorI2luY2x1ZGUgPHd0Zi9JbmRleE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9MaXN0RHVtcC5oPgog
CiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsgbmFtZXNwYWNlIEFpciB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckZpeFBhcnRpYWxSZWdpc3RlclN0
YWxscy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckZpeFBhcnRpYWxSZWdp
c3RlclN0YWxscy5jcHAKaW5kZXggZWQ3YjgwYTBjOGI0NmFhMjRjYmFjNmQ5N2JlMzlkYWQ2ZDIx
N2NmYi4uNTM5OTc5OTJkODZjYjcyMDNiYzBlYzgzNGMwZjg2ZDRmMTU1YzQzNiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJGaXhQYXJ0aWFsUmVnaXN0ZXJTdGFs
bHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRml4UGFydGlhbFJl
Z2lzdGVyU3RhbGxzLmNwcApAQCAtMzQsOSArMzQsOSBAQAogI2luY2x1ZGUgIkFpckluc3QuaCIK
ICNpbmNsdWRlICJBaXJJbnN0SW5saW5lcy5oIgogI2luY2x1ZGUgIkFpclBoYXNlU2NvcGUuaCIK
LSNpbmNsdWRlICJCM0luZGV4TWFwLmgiCi0jaW5jbHVkZSAiQjNJbmRleFNldC5oIgogI2luY2x1
ZGUgIk1hY3JvQXNzZW1ibGVyLmgiCisjaW5jbHVkZSA8d3RmL0luZGV4TWFwLmg+CisjaW5jbHVk
ZSA8d3RmL0luZGV4U2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2Ug
SlNDIHsgbmFtZXNwYWNlIEIzIHsgbmFtZXNwYWNlIEFpciB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckdlbmVyYXRlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9haXIvQWlyR2VuZXJhdGUuY3BwCmluZGV4IDQxMTg0MTIxYzg1MGMzN2I1MzYxOGRm
ZThiYTM5NGY0NDA3YmRhMDAuLjBhMThhZGE2MGNiNmQ1NTIwOTMyOWQ5YzY3NmY3YWU4OWQyY2Ix
MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyR2VuZXJhdGUu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyR2VuZXJhdGUuY3BwCkBA
IC00OCwxMyArNDgsMTMgQEAKICNpbmNsdWRlICJBaXJTcGlsbEV2ZXJ5dGhpbmcuaCIKICNpbmNs
dWRlICJBaXJWYWxpZGF0ZS5oIgogI2luY2x1ZGUgIkIzQ29tbW9uLmgiCi0jaW5jbHVkZSAiQjNJ
bmRleE1hcC5oIgogI2luY2x1ZGUgIkIzUHJvY2VkdXJlLmgiCiAjaW5jbHVkZSAiQjNUaW1pbmdT
Y29wZS5oIgogI2luY2x1ZGUgIkIzVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQ0NhbGxIZWxw
ZXJzLmgiCiAjaW5jbHVkZSAiRGlzYWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlLmgiCiAj
aW5jbHVkZSAiTGlua0J1ZmZlci5oIgorI2luY2x1ZGUgPHd0Zi9JbmRleE1hcC5oPgogCiBuYW1l
c3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsgbmFtZXNwYWNlIEFpciB7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyR2VuZXJhdGlvbkNvbnRleHQuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyR2VuZXJhdGlvbkNvbnRleHQuaAppbmRleCBl
Y2E5MDdmMDFlZGZjZjUxMDY3ZDk4OTVkOTFkOWMzMTYyZmEzNzgxLi43ZGM2ZTBkMzI0NDdkZjZi
MzU3Njg1ZDk4ODEzZjE5M2VlNDIzZTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvYWlyL0FpckdlbmVyYXRpb25Db250ZXh0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL2Fpci9BaXJHZW5lcmF0aW9uQ29udGV4dC5oCkBAIC0yOSw5ICsyOSw5IEBACiAjaWYg
RU5BQkxFKEIzX0pJVCkKIAogI2luY2x1ZGUgIkFpckJhc2ljQmxvY2suaCIKLSNpbmNsdWRlICJC
M0luZGV4TWFwLmgiCiAjaW5jbHVkZSAiQ0NhbGxIZWxwZXJzLmgiCiAjaW5jbHVkZSA8d3RmL0Jv
eC5oPgorI2luY2x1ZGUgPHd0Zi9JbmRleE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9TaGFyZWRUYXNr
Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvYWlyL0FpckxpdmVuZXNzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
YWlyL0FpckxpdmVuZXNzLmgKaW5kZXggYWMxMThhYWY1ZjIzMGM4ZDBkYzlhYjNjNTJlNWMxNjY5
NzFiYzhhZS4uZjAxNDYwYTQxOTVkMmIwMDBjZTViZmFkMGIyYzdkMTc1OWQ2Y2M0OCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJMaXZlbmVzcy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyTGl2ZW5lc3MuaApAQCAtMzMsOCArMzMsOCBA
QAogI2luY2x1ZGUgIkFpckluc3RJbmxpbmVzLmgiCiAjaW5jbHVkZSAiQWlyU3RhY2tTbG90Lmgi
CiAjaW5jbHVkZSAiQWlyVG1wSW5saW5lcy5oIgotI2luY2x1ZGUgIkIzSW5kZXhNYXAuaCIKLSNp
bmNsdWRlICJCM0luZGV4U2V0LmgiCisjaW5jbHVkZSA8d3RmL0luZGV4TWFwLmg+CisjaW5jbHVk
ZSA8d3RmL0luZGV4U2V0Lmg+CiAjaW5jbHVkZSA8d3RmL0luZGV4U3BhcnNlU2V0Lmg+CiAjaW5j
bHVkZSA8d3RmL0xpc3REdW1wLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9haXIvQWlyU3BpbGxFdmVyeXRoaW5nLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9haXIvQWlyU3BpbGxFdmVyeXRoaW5nLmNwcAppbmRleCAzYTA2MzZkZTlhMWJlYWFjOWRkZmFh
Y2RjODM0NDA3NmZkZTMzZWM4Li4xNjc2NzA1OGZmNThmZWQ4ZGZiZTkzMTBjMDk3YzM4YzJmZTVh
YzUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpclNwaWxsRXZl
cnl0aGluZy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJTcGlsbEV2
ZXJ5dGhpbmcuY3BwCkBAIC0zNSw3ICszNSw3IEBACiAjaW5jbHVkZSAiQWlyTGl2ZW5lc3MuaCIK
ICNpbmNsdWRlICJBaXJQaGFzZVNjb3BlLmgiCiAjaW5jbHVkZSAiQWlyUmVnaXN0ZXJQcmlvcml0
eS5oIgotI2luY2x1ZGUgIkIzSW5kZXhNYXAuaCIKKyNpbmNsdWRlIDx3dGYvSW5kZXhNYXAuaD4K
IAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7IG5hbWVzcGFjZSBBaXIgewogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvR2VuZXJhdG9yUHJvdG90eXBl
LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0dlbmVyYXRvclByb3RvdHlwZS5q
cwppbmRleCAzYzE0MDY4N2RmYzdlMDBlZmU5MWFlODBiMmFjNjc2ZmE5YmY0OGY0Li40OTlkYmQz
OTJlODMxM2RjZGQ4NmVjOGMxNjA1NjlkN2Q2ZjU0OWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnVpbHRpbnMvR2VuZXJhdG9yUHJvdG90eXBlLmpzCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9idWlsdGlucy9HZW5lcmF0b3JQcm90b3R5cGUuanMKQEAgLTUxLDcgKzUx
LDcgQEAgZnVuY3Rpb24gZ2VuZXJhdG9yUmVzdW1lKGdlbmVyYXRvciwgc2VudFZhbHVlLCByZXN1
bWVNb2RlKQogICAgIH0gZWxzZSB7CiAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICBnZW5lcmF0
b3IuQGdlbmVyYXRvclN0YXRlID0gQEdlbmVyYXRvclN0YXRlRXhlY3V0aW5nOwotICAgICAgICAg
ICAgdmFsdWUgPSBnZW5lcmF0b3IuQGdlbmVyYXRvck5leHQuQGNhbGwoZ2VuZXJhdG9yLkBnZW5l
cmF0b3JUaGlzLCBnZW5lcmF0b3IsIHN0YXRlLCBzZW50VmFsdWUsIHJlc3VtZU1vZGUpOworICAg
ICAgICAgICAgdmFsdWUgPSBnZW5lcmF0b3IuQGdlbmVyYXRvck5leHQuQGNhbGwoZ2VuZXJhdG9y
LkBnZW5lcmF0b3JUaGlzLCBnZW5lcmF0b3IsIHN0YXRlLCBzZW50VmFsdWUsIHJlc3VtZU1vZGUs
IGdlbmVyYXRvci5AZ2VuZXJhdG9yRnJhbWUpOwogICAgICAgICAgICAgaWYgKGdlbmVyYXRvci5A
Z2VuZXJhdG9yU3RhdGUgPT09IEBHZW5lcmF0b3JTdGF0ZUV4ZWN1dGluZykgewogICAgICAgICAg
ICAgICAgIGdlbmVyYXRvci5AZ2VuZXJhdG9yU3RhdGUgPSBAR2VuZXJhdG9yU3RhdGVDb21wbGV0
ZWQ7CiAgICAgICAgICAgICAgICAgZG9uZSA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suY3BwCmluZGV4IGZlNTZkNzhh
N2RiOWI3YjFjYjUwNjlhZTg3ZDkwYjJiMjUyNDRmMzEuLjZhYzEwYTBlYmMxMTY4NDlmZTE4MjBm
NjAzZmZlZjlhMTllNTQ2MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZUJhc2ljQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suY3BwCkBAIC0yNyw3ICsyNyw3IEBACiAjaW5jbHVk
ZSAiQnl0ZWNvZGVCYXNpY0Jsb2NrLmgiCiAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKLSNpbmNs
dWRlICJJbnRlcnByZXRlci5oIgorI2luY2x1ZGUgIkludGVycHJldGVySW5saW5lcy5oIgogI2lu
Y2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJQcmVjaXNlSnVtcFRhcmdldHMuaCIKIApA
QCAtMzksMzMgKzM5LDYgQEAgdm9pZCBCeXRlY29kZUJhc2ljQmxvY2s6OnNocmlua1RvRml0KCkK
ICAgICBtX3N1Y2Nlc3NvcnMuc2hyaW5rVG9GaXQoKTsKIH0KIAotc3RhdGljIGJvb2wgaXNCcmFu
Y2goT3Bjb2RlSUQgb3Bjb2RlSUQpCi17Ci0gICAgc3dpdGNoIChvcGNvZGVJRCkgewotICAgIGNh
c2Ugb3Bfam1wOgotICAgIGNhc2Ugb3BfanRydWU6Ci0gICAgY2FzZSBvcF9qZmFsc2U6Ci0gICAg
Y2FzZSBvcF9qZXFfbnVsbDoKLSAgICBjYXNlIG9wX2puZXFfbnVsbDoKLSAgICBjYXNlIG9wX2pu
ZXFfcHRyOgotICAgIGNhc2Ugb3Bfamxlc3M6Ci0gICAgY2FzZSBvcF9qbGVzc2VxOgotICAgIGNh
c2Ugb3BfamdyZWF0ZXI6Ci0gICAgY2FzZSBvcF9qZ3JlYXRlcmVxOgotICAgIGNhc2Ugb3Bfam5s
ZXNzOgotICAgIGNhc2Ugb3Bfam5sZXNzZXE6Ci0gICAgY2FzZSBvcF9qbmdyZWF0ZXI6Ci0gICAg
Y2FzZSBvcF9qbmdyZWF0ZXJlcToKLSAgICBjYXNlIG9wX3N3aXRjaF9pbW06Ci0gICAgY2FzZSBv
cF9zd2l0Y2hfY2hhcjoKLSAgICBjYXNlIG9wX3N3aXRjaF9zdHJpbmc6Ci0gICAgY2FzZSBvcF9z
YXZlOgotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgfQotfQotCiBzdGF0aWMgYm9vbCBpc1VuY29uZGl0aW9uYWxCcmFuY2goT3Bj
b2RlSUQgb3Bjb2RlSUQpCiB7CiAgICAgc3dpdGNoIChvcGNvZGVJRCkgewpAQCAtMTA2LDE1ICs3
OSwyMSBAQCBzdGF0aWMgYm9vbCBpc0p1bXBUYXJnZXQoT3Bjb2RlSUQgb3Bjb2RlSUQsIGNvbnN0
IFZlY3Rvcjx1bnNpZ25lZCwgMzI+JiBqdW1wVGFyZwogICAgIHJldHVybiBzdGQ6OmJpbmFyeV9z
ZWFyY2goanVtcFRhcmdldHMuYmVnaW4oKSwganVtcFRhcmdldHMuZW5kKCksIGJ5dGVjb2RlT2Zm
c2V0KTsKIH0KIAotc3RhdGljIHZvaWQgbGlua0Jsb2NrcyhCeXRlY29kZUJhc2ljQmxvY2sqIHBy
ZWRlY2Vzc29yLCBCeXRlY29kZUJhc2ljQmxvY2sqIHN1Y2Nlc3NvcikKLXsKLSAgICBwcmVkZWNl
c3Nvci0+YWRkU3VjY2Vzc29yKHN1Y2Nlc3Nvcik7Ci19Ci0KLXZvaWQgY29tcHV0ZUJ5dGVjb2Rl
QmFzaWNCbG9ja3MoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8
Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mIGJhc2ljQmxvY2tzKQordGVtcGxhdGU8dHlwZW5hbWUgQmxv
Y2ssIHR5cGVuYW1lIEluc3RydWN0aW9uPgordm9pZCBCeXRlY29kZUJhc2ljQmxvY2s6OmNvbXB1
dGVCeXRlY29kZUJhc2ljQmxvY2tzSW50ZXJuYWwoQmxvY2sqIGNvZGVCbG9jaywgSW5zdHJ1Y3Rp
b24qIGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50LCBWZWN0b3I8
c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+JiBiYXNpY0Jsb2NrcykKIHsKICAg
ICBWZWN0b3I8dW5zaWduZWQsIDMyPiBqdW1wVGFyZ2V0czsKLSAgICBjb21wdXRlUHJlY2lzZUp1
bXBUYXJnZXRzKGNvZGVCbG9jaywganVtcFRhcmdldHMpOworICAgIGNvbXB1dGVQcmVjaXNlSnVt
cFRhcmdldHMoY29kZUJsb2NrLCBpbnN0cnVjdGlvbnNCZWdpbiwgaW5zdHJ1Y3Rpb25Db3VudCwg
anVtcFRhcmdldHMpOworCisgICAgYXV0byBhcHBlbmRCbG9jayA9IFsmXSAoc3RkOjp1bmlxdWVf
cHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4mJiBibG9jaykgeworICAgICAgICBibG9jay0+bV9pbmRl
eCA9IGJhc2ljQmxvY2tzLnNpemUoKTsKKyAgICAgICAgYmFzaWNCbG9ja3MuYXBwZW5kKFdURk1v
dmUoYmxvY2spKTsKKyAgICB9OworCisgICAgYXV0byBsaW5rQmxvY2tzID0gWyZdIChCeXRlY29k
ZUJhc2ljQmxvY2sqIGZyb20sIEJ5dGVjb2RlQmFzaWNCbG9jayogdG8pIHsKKyAgICAgICAgZnJv
bS0+YWRkU3VjY2Vzc29yKHRvKTsKKyAgICAgICAgdG8tPmFkZFByZWRlY2Vzc29yKGZyb20pOwor
ICAgIH07CiAKICAgICAvLyBDcmVhdGUgdGhlIGVudHJ5IGFuZCBleGl0IGJhc2ljIGJsb2Nrcy4K
ICAgICBiYXNpY0Jsb2Nrcy5yZXNlcnZlQ2FwYWNpdHkoanVtcFRhcmdldHMuc2l6ZSgpICsgMik7
CkBAIC0xMjMsMTkgKzEwMiwxNyBAQCB2b2lkIGNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzKENv
ZGVCbG9jayogY29kZUJsb2NrLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dAogICAgIGF1dG8g
Zmlyc3RCbG9jayA9IHN0ZDo6bWFrZV91bmlxdWU8Qnl0ZWNvZGVCYXNpY0Jsb2NrPigwLCAwKTsK
ICAgICBsaW5rQmxvY2tzKGVudHJ5LmdldCgpLCBmaXJzdEJsb2NrLmdldCgpKTsKIAotICAgIGJh
c2ljQmxvY2tzLmFwcGVuZChXVEZNb3ZlKGVudHJ5KSk7CisgICAgYXBwZW5kQmxvY2soV1RGTW92
ZShlbnRyeSkpOwogICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogY3VycmVudCA9IGZpcnN0QmxvY2su
Z2V0KCk7Ci0gICAgYmFzaWNCbG9ja3MuYXBwZW5kKFdURk1vdmUoZmlyc3RCbG9jaykpOworICAg
IGFwcGVuZEJsb2NrKFdURk1vdmUoZmlyc3RCbG9jaykpOwogCiAgICAgYXV0byBleGl0ID0gc3Rk
OjptYWtlX3VuaXF1ZTxCeXRlY29kZUJhc2ljQmxvY2s+KEJ5dGVjb2RlQmFzaWNCbG9jazo6RXhp
dEJsb2NrKTsKIAogICAgIGJvb2wgbmV4dEluc3RydWN0aW9uSXNMZWFkZXIgPSBmYWxzZTsKIAog
ICAgIEludGVycHJldGVyKiBpbnRlcnByZXRlciA9IGNvZGVCbG9jay0+dm0oKS0+aW50ZXJwcmV0
ZXI7Ci0gICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luID0gY29kZUJsb2NrLT5pbnN0
cnVjdGlvbnMoKS5iZWdpbigpOwotICAgIHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQgPSBjb2Rl
QmxvY2stPmluc3RydWN0aW9ucygpLnNpemUoKTsKICAgICBmb3IgKHVuc2lnbmVkIGJ5dGVjb2Rl
T2Zmc2V0ID0gMDsgYnl0ZWNvZGVPZmZzZXQgPCBpbnN0cnVjdGlvbkNvdW50OykgewotICAgICAg
ICBPcGNvZGVJRCBvcGNvZGVJRCA9IGludGVycHJldGVyLT5nZXRPcGNvZGVJRChpbnN0cnVjdGlv
bnNCZWdpbltieXRlY29kZU9mZnNldF0udS5vcGNvZGUpOworICAgICAgICBPcGNvZGVJRCBvcGNv
ZGVJRCA9IGludGVycHJldGVyLT5nZXRPcGNvZGVJRChpbnN0cnVjdGlvbnNCZWdpbltieXRlY29k
ZU9mZnNldF0pOwogICAgICAgICB1bnNpZ25lZCBvcGNvZGVMZW5ndGggPSBvcGNvZGVMZW5ndGhz
W29wY29kZUlEXTsKIAogICAgICAgICBib29sIGNyZWF0ZWRCbG9jayA9IGZhbHNlOwpAQCAtMTQz
LDcgKzEyMCw3IEBAIHZvaWQgY29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MoQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0CiAgICAgICAgIGlmIChpc0p1bXBU
YXJnZXQob3Bjb2RlSUQsIGp1bXBUYXJnZXRzLCBieXRlY29kZU9mZnNldCkgfHwgbmV4dEluc3Ry
dWN0aW9uSXNMZWFkZXIpIHsKICAgICAgICAgICAgIGF1dG8gbmV3QmxvY2sgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEJ5dGVjb2RlQmFzaWNCbG9jaz4oYnl0ZWNvZGVPZmZzZXQsIG9wY29kZUxlbmd0aCk7
CiAgICAgICAgICAgICBjdXJyZW50ID0gbmV3QmxvY2suZ2V0KCk7Ci0gICAgICAgICAgICBiYXNp
Y0Jsb2Nrcy5hcHBlbmQoV1RGTW92ZShuZXdCbG9jaykpOworICAgICAgICAgICAgYXBwZW5kQmxv
Y2soV1RGTW92ZShuZXdCbG9jaykpOwogICAgICAgICAgICAgY3JlYXRlZEJsb2NrID0gdHJ1ZTsK
ICAgICAgICAgICAgIG5leHRJbnN0cnVjdGlvbklzTGVhZGVyID0gZmFsc2U7CiAgICAgICAgICAg
ICBieXRlY29kZU9mZnNldCArPSBvcGNvZGVMZW5ndGg7CkBAIC0xNzAsOCArMTQ3LDcgQEAgdm9p
ZCBjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2NrcyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgVmVjdG9y
PHN0ZDo6dW5pcXVlX3B0cjxCeXQKIAogICAgICAgICBib29sIGZhbGxzVGhyb3VnaCA9IHRydWU7
IAogICAgICAgICBmb3IgKHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0ID0gYmxvY2stPmxlYWRlckJ5
dGVjb2RlT2Zmc2V0KCk7IGJ5dGVjb2RlT2Zmc2V0IDwgYmxvY2stPmxlYWRlckJ5dGVjb2RlT2Zm
c2V0KCkgKyBibG9jay0+dG90YWxCeXRlY29kZUxlbmd0aCgpOykgewotICAgICAgICAgICAgY29u
c3QgSW5zdHJ1Y3Rpb24mIGN1cnJlbnRJbnN0cnVjdGlvbiA9IGluc3RydWN0aW9uc0JlZ2luW2J5
dGVjb2RlT2Zmc2V0XTsKLSAgICAgICAgICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0
ZXItPmdldE9wY29kZUlEKGN1cnJlbnRJbnN0cnVjdGlvbi51Lm9wY29kZSk7CisgICAgICAgICAg
ICBPcGNvZGVJRCBvcGNvZGVJRCA9IGludGVycHJldGVyLT5nZXRPcGNvZGVJRChpbnN0cnVjdGlv
bnNCZWdpbltieXRlY29kZU9mZnNldF0pOwogICAgICAgICAgICAgdW5zaWduZWQgb3Bjb2RlTGVu
Z3RoID0gb3Bjb2RlTGVuZ3Roc1tvcGNvZGVJRF07CiAgICAgICAgICAgICAvLyBJZiB3ZSBmb3Vu
ZCBhIHRlcm1pbmFsIGJ5dGVjb2RlLCBsaW5rIHRvIHRoZSBleGl0IGJsb2NrLgogICAgICAgICAg
ICAgaWYgKGlzVGVybWluYWwob3Bjb2RlSUQpKSB7CkBAIC0xODYsNyArMTYyLDcgQEAgdm9pZCBj
b21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2NrcyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgVmVjdG9yPHN0
ZDo6dW5pcXVlX3B0cjxCeXQKICAgICAgICAgICAgIC8vIGJsb2NrIGJlY2F1c2UgdGhlIGZpbmFs
bHkgYmxvY2sgd2lsbCBjcmVhdGUgaXRzIG93biBjYXRjaCwgd2hpY2ggd2lsbCBnZW5lcmF0ZSBh
IEhhbmRsZXJJbmZvLgogICAgICAgICAgICAgaWYgKGlzVGhyb3cob3Bjb2RlSUQpKSB7CiAgICAg
ICAgICAgICAgICAgQVNTRVJUKGJ5dGVjb2RlT2Zmc2V0ICsgb3Bjb2RlTGVuZ3RoID09IGJsb2Nr
LT5sZWFkZXJCeXRlY29kZU9mZnNldCgpICsgYmxvY2stPnRvdGFsQnl0ZWNvZGVMZW5ndGgoKSk7
Ci0gICAgICAgICAgICAgICAgSGFuZGxlckluZm8qIGhhbmRsZXIgPSBjb2RlQmxvY2stPmhhbmRs
ZXJGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCk7CisgICAgICAgICAgICAgICAgYXV0
byogaGFuZGxlciA9IGNvZGVCbG9jay0+aGFuZGxlckZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2Rl
T2Zmc2V0KTsKICAgICAgICAgICAgICAgICBmYWxsc1Rocm91Z2ggPSBmYWxzZTsKICAgICAgICAg
ICAgICAgICBpZiAoIWhhbmRsZXIpIHsKICAgICAgICAgICAgICAgICAgICAgbGlua0Jsb2Nrcyhi
bG9jaywgZXhpdC5nZXQoKSk7CkBAIC0yMDYsNyArMTgyLDcgQEAgdm9pZCBjb21wdXRlQnl0ZWNv
ZGVCYXNpY0Jsb2NrcyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0
cjxCeXQKICAgICAgICAgICAgIGlmIChpc0JyYW5jaChvcGNvZGVJRCkpIHsKICAgICAgICAgICAg
ICAgICBBU1NFUlQoYnl0ZWNvZGVPZmZzZXQgKyBvcGNvZGVMZW5ndGggPT0gYmxvY2stPmxlYWRl
ckJ5dGVjb2RlT2Zmc2V0KCkgKyBibG9jay0+dG90YWxCeXRlY29kZUxlbmd0aCgpKTsKICAgICAg
ICAgICAgICAgICBWZWN0b3I8dW5zaWduZWQsIDE+IGJ5dGVjb2RlT2Zmc2V0c0p1bXBlZFRvOwot
ICAgICAgICAgICAgICAgIGZpbmRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9j
aywgYnl0ZWNvZGVPZmZzZXQsIGJ5dGVjb2RlT2Zmc2V0c0p1bXBlZFRvKTsKKyAgICAgICAgICAg
ICAgICBmaW5kSnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChjb2RlQmxvY2ssIGluc3RydWN0
aW9uc0JlZ2luLCBieXRlY29kZU9mZnNldCwgYnl0ZWNvZGVPZmZzZXRzSnVtcGVkVG8pOwogCiAg
ICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGJhc2ljQmxvY2tzLnNpemUo
KTsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogb3RoZXJC
bG9jayA9IGJhc2ljQmxvY2tzW2ldLmdldCgpOwpAQCAtMjMwLDEwICsyMDYsMjAgQEAgdm9pZCBj
b21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2NrcyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgVmVjdG9yPHN0
ZDo6dW5pcXVlX3B0cjxCeXQKICAgICAgICAgfQogICAgIH0KIAotICAgIGJhc2ljQmxvY2tzLmFw
cGVuZChXVEZNb3ZlKGV4aXQpKTsKKyAgICBhcHBlbmRCbG9jayhXVEZNb3ZlKGV4aXQpKTsKICAg
ICAKICAgICBmb3IgKGF1dG8mIGJhc2ljQmxvY2sgOiBiYXNpY0Jsb2NrcykKICAgICAgICAgYmFz
aWNCbG9jay0+c2hyaW5rVG9GaXQoKTsKIH0KIAordm9pZCBCeXRlY29kZUJhc2ljQmxvY2s6OmNv
bXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzKENvZGVCbG9jayogY29kZUJsb2NrLCBJbnN0cnVjdGlv
biogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQsIFZlY3Rvcjxz
dGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mIGJhc2ljQmxvY2tzKQoreworICAg
IGNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzSW50ZXJuYWwoY29kZUJsb2NrLCBpbnN0cnVjdGlv
bnNCZWdpbiwgaW5zdHJ1Y3Rpb25Db3VudCwgYmFzaWNCbG9ja3MpOworfQorCit2b2lkIEJ5dGVj
b2RlQmFzaWNCbG9jazo6Y29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MoVW5saW5rZWRDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgVW5saW5rZWRJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVu
c2lnbmVkIGluc3RydWN0aW9uQ291bnQsIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVC
YXNpY0Jsb2NrPj4mIGJhc2ljQmxvY2tzKQoreworICAgIEJ5dGVjb2RlQmFzaWNCbG9jazo6Y29t
cHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3NJbnRlcm5hbChjb2RlQmxvY2ssIGluc3RydWN0aW9uc0Jl
Z2luLCBpbnN0cnVjdGlvbkNvdW50LCBiYXNpY0Jsb2Nrcyk7Cit9CisKIH0gLy8gbmFtZXNwYWNl
IEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
QmFzaWNCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQmFz
aWNCbG9jay5oCmluZGV4IGNkNzE0NzdlZDUwNmFhNzg4MDIxNjVmYWNkYjdhNmQ0NmYzOGRjMmEu
LjZhMmVkYzYwZGIzZDdiOTlkY2NkZmU5NDc4YmZjZmQ1MTBlODgyOWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmgKQEAgLTMz
LDYgKzMzLDkgQEAKIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBDb2RlQmxvY2s7CitjbGFzcyBV
bmxpbmtlZENvZGVCbG9jazsKK3N0cnVjdCBJbnN0cnVjdGlvbjsKK3N0cnVjdCBVbmxpbmtlZElu
c3RydWN0aW9uOwogCiBjbGFzcyBCeXRlY29kZUJhc2ljQmxvY2sgewogICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwpAQCAtNDgsMjggKzUxLDM5IEBAIGNsYXNzIEJ5dGVjb2RlQmFzaWNCbG9j
ayB7CiAgICAgdW5zaWduZWQgbGVhZGVyQnl0ZWNvZGVPZmZzZXQoKSB7IHJldHVybiBtX2xlYWRl
ckJ5dGVjb2RlT2Zmc2V0OyB9CiAgICAgdW5zaWduZWQgdG90YWxCeXRlY29kZUxlbmd0aCgpIHsg
cmV0dXJuIG1fdG90YWxCeXRlY29kZUxlbmd0aDsgfQogCi0gICAgVmVjdG9yPHVuc2lnbmVkPiYg
Ynl0ZWNvZGVPZmZzZXRzKCkgeyByZXR1cm4gbV9ieXRlY29kZU9mZnNldHM7IH0KLSAgICB2b2lk
IGFkZEJ5dGVjb2RlTGVuZ3RoKHVuc2lnbmVkKTsKKyAgICBjb25zdCBWZWN0b3I8dW5zaWduZWQ+
JiBieXRlY29kZU9mZnNldHMoKSBjb25zdCB7IHJldHVybiBtX2J5dGVjb2RlT2Zmc2V0czsgfQog
Ci0gICAgVmVjdG9yPEJ5dGVjb2RlQmFzaWNCbG9jayo+JiBzdWNjZXNzb3JzKCkgeyByZXR1cm4g
bV9zdWNjZXNzb3JzOyB9Ci0gICAgdm9pZCBhZGRTdWNjZXNzb3IoQnl0ZWNvZGVCYXNpY0Jsb2Nr
KiBibG9jaykgeyBtX3N1Y2Nlc3NvcnMuYXBwZW5kKGJsb2NrKTsgfQorICAgIGNvbnN0IFZlY3Rv
cjxCeXRlY29kZUJhc2ljQmxvY2sqPiYgc3VjY2Vzc29ycygpIGNvbnN0IHsgcmV0dXJuIG1fc3Vj
Y2Vzc29yczsgfQorICAgIGNvbnN0IFZlY3RvcjxCeXRlY29kZUJhc2ljQmxvY2sqPiYgcHJlZGVj
ZXNzb3JzKCkgY29uc3QgeyByZXR1cm4gbV9wcmVkZWNlc3NvcnM7IH0KIAogICAgIEZhc3RCaXRW
ZWN0b3ImIGluKCkgeyByZXR1cm4gbV9pbjsgfQogICAgIEZhc3RCaXRWZWN0b3ImIG91dCgpIHsg
cmV0dXJuIG1fb3V0OyB9CiAKKyAgICB1bnNpZ25lZCBpbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1f
aW5kZXg7IH0KKworICAgIHN0YXRpYyB2b2lkIGNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzKENv
ZGVCbG9jayosIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgaW5zdHJ1
Y3Rpb25Db3VudCwgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYp
OworICAgIHN0YXRpYyB2b2lkIGNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzKFVubGlua2VkQ29k
ZUJsb2NrKiwgVW5saW5rZWRJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVk
IGluc3RydWN0aW9uQ291bnQsIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Js
b2NrPj4mKTsKKwogcHJpdmF0ZToKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBCbG9jaywgdHlwZW5h
bWUgSW5zdHJ1Y3Rpb24+IHN0YXRpYyB2b2lkIGNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzSW50
ZXJuYWwoQmxvY2sqIGNvZGVCbG9jaywgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1
bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50LCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2Rl
QmFzaWNCbG9jaz4+JiBiYXNpY0Jsb2Nrcyk7CisKKyAgICB2b2lkIGFkZFN1Y2Nlc3NvcihCeXRl
Y29kZUJhc2ljQmxvY2sqIGJsb2NrKSB7IG1fc3VjY2Vzc29ycy5hcHBlbmQoYmxvY2spOyB9Cisg
ICAgdm9pZCBhZGRQcmVkZWNlc3NvcihCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrKSB7IG1fcHJl
ZGVjZXNzb3JzLmFwcGVuZChibG9jayk7IH0KKworICAgIHZvaWQgYWRkQnl0ZWNvZGVMZW5ndGgo
dW5zaWduZWQpOworCiAgICAgdW5zaWduZWQgbV9sZWFkZXJCeXRlY29kZU9mZnNldDsKICAgICB1
bnNpZ25lZCBtX3RvdGFsQnl0ZWNvZGVMZW5ndGg7CisgICAgdW5zaWduZWQgbV9pbmRleDsKIAog
ICAgIFZlY3Rvcjx1bnNpZ25lZD4gbV9ieXRlY29kZU9mZnNldHM7CiAgICAgVmVjdG9yPEJ5dGVj
b2RlQmFzaWNCbG9jayo+IG1fc3VjY2Vzc29yczsKKyAgICBWZWN0b3I8Qnl0ZWNvZGVCYXNpY0Js
b2NrKj4gbV9wcmVkZWNlc3NvcnM7CiAKICAgICBGYXN0Qml0VmVjdG9yIG1faW47CiAgICAgRmFz
dEJpdFZlY3RvciBtX291dDsKIH07CiAKLXZvaWQgY29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3Mo
Q29kZUJsb2NrKiwgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYp
OwotCiBpbmxpbmUgQnl0ZWNvZGVCYXNpY0Jsb2NrOjpCeXRlY29kZUJhc2ljQmxvY2sodW5zaWdu
ZWQgc3RhcnQsIHVuc2lnbmVkIGxlbmd0aCkKICAgICA6IG1fbGVhZGVyQnl0ZWNvZGVPZmZzZXQo
c3RhcnQpCiAgICAgLCBtX3RvdGFsQnl0ZWNvZGVMZW5ndGgobGVuZ3RoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9u
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUdlbmVyYXRvcmlm
aWNhdGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzQ0ZmNlMTA2ZDI2Nzg2MGFiNGM0Y2MxZTAwZWNjODhm
NDU1OGIwOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHAKQEAgLTAsMCArMSwyODYgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTYgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29t
PgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQnl0ZWNvZGVHZW5l
cmF0b3JpZmljYXRpb24uaCIKKworI2luY2x1ZGUgIkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lu
bGluZXMuaCIKKyNpbmNsdWRlICJCeXRlY29kZVJld3JpdGVyLmgiCisjaW5jbHVkZSAiQnl0ZWNv
ZGVVc2VEZWYuaCIKKyNpbmNsdWRlICJJZGVudGlmaWVySW5saW5lcy5oIgorI2luY2x1ZGUgIklu
dGVycHJldGVySW5saW5lcy5oIgorI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJK
U0NKU1ZhbHVlSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTR2VuZXJhdG9yRnVuY3Rpb24uaCIKKyNp
bmNsdWRlICJTdHJvbmdJbmxpbmVzLmgiCisjaW5jbHVkZSAiVW5saW5rZWRDb2RlQmxvY2suaCIK
KyNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK3N0cnVjdCBZ
aWVsZERhdGEgeworICAgIHNpemVfdCBwb2ludCB7IDAgfTsKKyAgICBpbnQgYXJndW1lbnQgeyAw
IH07CisgICAgRmFzdEJpdFZlY3RvciBsaXZlbmVzczsKK307CisKK2NsYXNzIEJ5dGVjb2RlR2Vu
ZXJhdG9yaWZpY2F0aW9uIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIFZlY3RvcjxZaWVsZERhdGE+
IFlpZWxkczsKKworICAgIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uKFVubGlua2VkQ29kZUJs
b2NrKiBjb2RlQmxvY2ssIFVubGlua2VkQ29kZUJsb2NrOjpVbnBhY2tlZEluc3RydWN0aW9ucyYg
aW5zdHJ1Y3Rpb25zLCBTeW1ib2xUYWJsZSogZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZSwgaW50
IGdlbmVyYXRvckZyYW1lU3ltYm9sVGFibGVJbmRleCkKKyAgICAgICAgOiBtX2dyYXBoKGNvZGVC
bG9jaywgaW5zdHJ1Y3Rpb25zKQorICAgICAgICAsIG1fcmV3cml0ZXIobV9ncmFwaCkKKyAgICAg
ICAgLCBtX2dlbmVyYXRvckZyYW1lU3ltYm9sVGFibGUoKmNvZGVCbG9jay0+dm0oKSwgZ2VuZXJh
dG9yRnJhbWVTeW1ib2xUYWJsZSkKKyAgICAgICAgLCBtX2dlbmVyYXRvckZyYW1lU3ltYm9sVGFi
bGVJbmRleChnZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlSW5kZXgpCisgICAgeworICAgICAgICBm
b3IgKEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2sgOiBtX2dyYXBoKSB7CisgICAgICAgICAgICBm
b3IgKHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0IDogYmxvY2stPmJ5dGVjb2RlT2Zmc2V0cygpKSB7
CisgICAgICAgICAgICAgICAgY29uc3QgVW5saW5rZWRJbnN0cnVjdGlvbiogcGMgPSAmbV9ncmFw
aC5pbnN0cnVjdGlvbnMoKVtieXRlY29kZU9mZnNldF07CisgICAgICAgICAgICAgICAgc3dpdGNo
IChwYy0+dS5vcGNvZGUpIHsKKyAgICAgICAgICAgICAgICBjYXNlIG9wX2VudGVyOiB7CisgICAg
ICAgICAgICAgICAgICAgIG1fZW50ZXJQb2ludCA9IGJ5dGVjb2RlT2Zmc2V0OworICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBj
YXNlIG9wX3lpZWxkOiB7CisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxpdmVDYWxsZWVM
b2NhbHNJbmRleCA9IHBjWzJdLnUuaW5kZXg7CisgICAgICAgICAgICAgICAgICAgIGlmIChsaXZl
Q2FsbGVlTG9jYWxzSW5kZXggPj0gbV95aWVsZHMuc2l6ZSgpKQorICAgICAgICAgICAgICAgICAg
ICAgICAgbV95aWVsZHMucmVzaXplKGxpdmVDYWxsZWVMb2NhbHNJbmRleCArIDEpOworICAgICAg
ICAgICAgICAgICAgICBZaWVsZERhdGEmIGRhdGEgPSBtX3lpZWxkc1tsaXZlQ2FsbGVlTG9jYWxz
SW5kZXhdOworICAgICAgICAgICAgICAgICAgICBkYXRhLnBvaW50ID0gYnl0ZWNvZGVPZmZzZXQ7
CisgICAgICAgICAgICAgICAgICAgIGRhdGEuYXJndW1lbnQgPSBwY1szXS51Lm9wZXJhbmQ7Cisg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHN0cnVjdCBTdG9y
YWdlIHsKKyAgICAgICAgSWRlbnRpZmllciBpZGVudGlmaWVyOworICAgICAgICB1bnNpZ25lZCBp
ZGVudGlmaWVySW5kZXg7CisgICAgICAgIFNjb3BlT2Zmc2V0IHNjb3BlT2Zmc2V0OworICAgIH07
CisKKyAgICB2b2lkIHJ1bigpOworCisgICAgQnl0ZWNvZGVHcmFwaDxVbmxpbmtlZENvZGVCbG9j
az4mIGdyYXBoKCkgeyByZXR1cm4gbV9ncmFwaDsgfQorCisgICAgY29uc3QgWWllbGRzJiB5aWVs
ZHMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1feWllbGRzOworICAgIH0KKworICAg
IFlpZWxkcyYgeWllbGRzKCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX3lpZWxkczsKKyAgICB9
CisKKyAgICB1bnNpZ25lZCBlbnRlclBvaW50KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVy
biBtX2VudGVyUG9pbnQ7CisgICAgfQorCitwcml2YXRlOgorICAgIFN0b3JhZ2Ugc3RvcmFnZUZv
ckdlbmVyYXRvckxvY2FsKHVuc2lnbmVkIGluZGV4KQorICAgIHsKKyAgICAgICAgLy8gV2UgYXNz
aWduIGEgc3ltYm9sIHRvIGEgcmVnaXN0ZXIuIFRoZXJlIGlzIG9uZS1vbi1vbmUgY29ycmVzcG9u
ZGluZyBiZXR3ZWVuIGEgcmVnaXN0ZXIgYW5kIGEgc3ltYm9sLgorICAgICAgICAvLyBCeSBkb2lu
ZyBzbywgd2UgYWxsb2NhdGUgdGhlIHNwZWNpZmljIHN0b3JhZ2UgdG8gc2F2ZSB0aGUgZ2l2ZW4g
cmVnaXN0ZXIuCisgICAgICAgIC8vIFRoaXMgYWxsb3cgdXMgbm90IHRvIHNhdmUgYWxsIHRoZSBs
aXZlIHJlZ2lzdGVycyBldmVuIGlmIHRoZSByZWdpc3RlcnMgYXJlIG5vdCBvdmVyd3JpdHRlbiBm
cm9tIHRoZSBwcmV2aW91cyByZXN1bWluZyB0aW1lLgorICAgICAgICAvLyBJdCBtZWFucyB0aGF0
LCB0aGUgcmVnaXN0ZXIgY2FuIGJlIHJldHJpZXZlZCBldmVuIGlmIHRoZSBpbW1lZGlhdGUgcHJl
dmlvdXMgb3Bfc2F2ZSBkb2VzIG5vdCBzYXZlIGl0LgorCisgICAgICAgIGlmIChtX3N0b3JhZ2Vz
LnNpemUoKSA8PSBpbmRleCkKKyAgICAgICAgICAgIG1fc3RvcmFnZXMucmVzaXplKGluZGV4ICsg
MSk7CisgICAgICAgIGlmIChPcHRpb25hbDxTdG9yYWdlPiBzdG9yYWdlID0gbV9zdG9yYWdlc1tp
bmRleF0pCisgICAgICAgICAgICByZXR1cm4gKnN0b3JhZ2U7CisKKyAgICAgICAgVW5saW5rZWRD
b2RlQmxvY2sqIGNvZGVCbG9jayA9IG1fZ3JhcGguY29kZUJsb2NrKCk7CisgICAgICAgIElkZW50
aWZpZXIgaWRlbnRpZmllciA9IElkZW50aWZpZXI6OmZyb21VaWQoUHJpdmF0ZU5hbWUoKSk7Cisg
ICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXJJbmRleCA9IGNvZGVCbG9jay0+bnVtYmVyT2ZJZGVu
dGlmaWVycygpOworICAgICAgICBjb2RlQmxvY2stPmFkZElkZW50aWZpZXIoaWRlbnRpZmllcik7
CisgICAgICAgIFNjb3BlT2Zmc2V0IHNjb3BlT2Zmc2V0ID0gbV9nZW5lcmF0b3JGcmFtZVN5bWJv
bFRhYmxlLT50YWtlTmV4dFNjb3BlT2Zmc2V0KE5vTG9ja2luZ05lY2Vzc2FyeSk7CisgICAgICAg
IG1fZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZS0+c2V0KE5vTG9ja2luZ05lY2Vzc2FyeSwgaWRl
bnRpZmllci5pbXBsKCksIFN5bWJvbFRhYmxlRW50cnkoVmFyT2Zmc2V0KHNjb3BlT2Zmc2V0KSkp
OworCisgICAgICAgIFN0b3JhZ2Ugc3RvcmFnZSA9IHsKKyAgICAgICAgICAgIGlkZW50aWZpZXIs
CisgICAgICAgICAgICBpZGVudGlmaWVySW5kZXgsCisgICAgICAgICAgICBzY29wZU9mZnNldAor
ICAgICAgICB9OworICAgICAgICBtX3N0b3JhZ2VzW2luZGV4XSA9IHN0b3JhZ2U7CisgICAgICAg
IHJldHVybiBzdG9yYWdlOworICAgIH0KKworICAgIHVuc2lnbmVkIG1fZW50ZXJQb2ludCB7IDAg
fTsKKyAgICBCeXRlY29kZUdyYXBoPFVubGlua2VkQ29kZUJsb2NrPiBtX2dyYXBoOworICAgIEJ5
dGVjb2RlUmV3cml0ZXIgbV9yZXdyaXRlcjsKKyAgICBWZWN0b3I8T3B0aW9uYWw8U3RvcmFnZT4+
IG1fc3RvcmFnZXM7CisgICAgWWllbGRzIG1feWllbGRzOworICAgIFN0cm9uZzxTeW1ib2xUYWJs
ZT4gbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlOworICAgIGludCBtX2dlbmVyYXRvckZyYW1l
U3ltYm9sVGFibGVJbmRleDsKK307CisKK2NsYXNzIEdlbmVyYXRvckxpdmVuZXNzQW5hbHlzaXMg
OiBwdWJsaWMgQnl0ZWNvZGVMaXZlbmVzc0xvY2FsUHJvcGFnYXRpb248R2VuZXJhdG9yTGl2ZW5l
c3NBbmFseXNpcz4geworcHVibGljOgorICAgIEdlbmVyYXRvckxpdmVuZXNzQW5hbHlzaXMoQnl0
ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24mIGdlbmVyYXRvcmlmaWNhdGlvbikKKyAgICAgICAgOiBt
X2dlbmVyYXRvcmlmaWNhdGlvbihnZW5lcmF0b3JpZmljYXRpb24pCisgICAgeworICAgIH0KKwor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+CisgICAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5
dGVjb2RlT2Zmc2V0KFVubGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2ssIE9wY29kZUlEIG9wY29k
ZUlELCBVbmxpbmtlZEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgRmFzdEJpdFZlY3RvciYsIGNv
bnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCisgICAgeworICAgICAgICBKU0M6OmNvbXB1dGVEZWZzRm9y
Qnl0ZWNvZGVPZmZzZXQoY29kZUJsb2NrLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb24sIGZ1bmN0b3Ip
OworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+CisgICAgdm9pZCBjb21w
dXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KFVubGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2ssIE9w
Y29kZUlEIG9wY29kZUlELCBVbmxpbmtlZEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgRmFzdEJp
dFZlY3RvciYsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCisgICAgeworICAgICAgICBKU0M6OmNv
bXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoY29kZUJsb2NrLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rp
b24sIGZ1bmN0b3IpOworICAgIH0KKworICAgIHZvaWQgcnVuKCkKKyAgICB7CisgICAgICAgIC8v
IFBlcmZvcm0gbW9kaWZpZWQgbGl2ZW5lc3MgYW5hbHlzaXMgdG8gZGV0ZXJtaW5lIHdoaWNoIGxv
Y2FscyBhcmUgbGl2ZSBhdCB0aGUgbWVyZ2UgcG9pbnRzLgorICAgICAgICAvLyBUaGlzIHByb2R1
Y2VzIHRoZSBjb25zZXJ2YXRpdmUgcmVzdWx0cyBmb3IgdGhlIHF1ZXN0aW9uLCAid2hpY2ggdmFy
aWFibGVzIHNob3VsZCBiZSBzYXZlZCBhbmQgcmVzdW1lZD8iLgorCisgICAgICAgIEJ5dGVjb2Rl
R3JhcGg8VW5saW5rZWRDb2RlQmxvY2s+JiBncmFwaCA9IG1fZ2VuZXJhdG9yaWZpY2F0aW9uLmdy
YXBoKCk7CisgICAgICAgIFVubGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBncmFwaC5jb2Rl
QmxvY2soKTsKKyAgICAgICAgdW5zaWduZWQgbnVtYmVyT2ZWYXJpYWJsZXMgPSBjb2RlQmxvY2st
Pm1fbnVtQ2FsbGVlTG9jYWxzOworICAgICAgICBmb3IgKEJ5dGVjb2RlQmFzaWNCbG9jayogYmxv
Y2sgOiBncmFwaCkgeworICAgICAgICAgICAgYmxvY2stPmluKCkucmVzaXplKG51bWJlck9mVmFy
aWFibGVzKTsKKyAgICAgICAgICAgIGJsb2NrLT5vdXQoKS5yZXNpemUobnVtYmVyT2ZWYXJpYWJs
ZXMpOworICAgICAgICAgICAgYmxvY2stPmluKCkuY2xlYXJBbGwoKTsKKyAgICAgICAgICAgIGJs
b2NrLT5vdXQoKS5jbGVhckFsbCgpOworICAgICAgICB9CisKKyAgICAgICAgYm9vbCBjaGFuZ2Vk
OworICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGxhc3RCbG9jayA9IGdyYXBoLmxhc3QoKTsK
KyAgICAgICAgbGFzdEJsb2NrLT5pbigpLmNsZWFyQWxsKCk7CisgICAgICAgIGxhc3RCbG9jay0+
b3V0KCkuY2xlYXJBbGwoKTsKKyAgICAgICAgRmFzdEJpdFZlY3RvciBuZXdPdXQ7CisgICAgICAg
IG5ld091dC5yZXNpemUobGFzdEJsb2NrLT5vdXQoKS5udW1CaXRzKCkpOworICAgICAgICBkbyB7
CisgICAgICAgICAgICBjaGFuZ2VkID0gZmFsc2U7CisgICAgICAgICAgICBmb3IgKHN0ZDo6dW5p
cXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+JiBibG9jayA6IGdyYXBoLmJhc2ljQmxvY2tzSW5S
ZXZlcnNlT3JkZXIoKSkgeworICAgICAgICAgICAgICAgIG5ld091dC5jbGVhckFsbCgpOworICAg
ICAgICAgICAgICAgIGZvciAoQnl0ZWNvZGVCYXNpY0Jsb2NrKiBzdWNjZXNzb3IgOiBibG9jay0+
c3VjY2Vzc29ycygpKQorICAgICAgICAgICAgICAgICAgICBuZXdPdXQubWVyZ2Uoc3VjY2Vzc29y
LT5pbigpKTsKKyAgICAgICAgICAgICAgICBibG9jay0+b3V0KCkuc2V0KG5ld091dCk7CisgICAg
ICAgICAgICAgICAgY2hhbmdlZCB8PSBjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJsb2NrKG1fZ2Vu
ZXJhdG9yaWZpY2F0aW9uLmdyYXBoKCksIGJsb2NrLmdldCgpKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfSB3aGlsZSAoY2hhbmdlZCk7CisKKyAgICAgICAgZm9yIChZaWVsZERhdGEmIGRhdGEg
OiBtX2dlbmVyYXRvcmlmaWNhdGlvbi55aWVsZHMoKSkKKyAgICAgICAgICAgIGRhdGEubGl2ZW5l
c3MgPSBnZXRMaXZlbmVzc0luZm9BdEJ5dGVjb2RlT2Zmc2V0KG1fZ2VuZXJhdG9yaWZpY2F0aW9u
LmdyYXBoKCksIGRhdGEucG9pbnQgKyBvcGNvZGVMZW5ndGgob3BfeWllbGQpKTsKKyAgICB9CisK
K3ByaXZhdGU6CisgICAgQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24mIG1fZ2VuZXJhdG9yaWZp
Y2F0aW9uOworfTsKKwordm9pZCBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbjo6cnVuKCkKK3sK
KyAgICAvLyBXZSBjYWxjdWxhdGUgdGhlIGxpdmVuZXNzIGF0IGVhY2ggbWVyZ2UgcG9pbnQuIFRo
aXMgZ2l2ZXMgdXMgdGhlIGluZm9ybWF0aW9uIHdoaWNoIHJlZ2lzdGVycyBzaG91bGQgYmUgc2F2
ZWQgYW5kIHJlc3VtZWQgY29uc2VydmF0aXZlbHkuCisKKyAgICB7CisgICAgICAgIEdlbmVyYXRv
ckxpdmVuZXNzQW5hbHlzaXMgcGFzcygqdGhpcyk7CisgICAgICAgIHBhc3MucnVuKCk7CisgICAg
fQorCisgICAgVW5saW5rZWRDb2RlQmxvY2sqIGNvZGVCbG9jayA9IG1fZ3JhcGguY29kZUJsb2Nr
KCk7CisKKyAgICAvLyBMZXQncyBlbWl0IHRoZSBnbG9iYWwgc3dpdGNoLgorICAgIHVuc2lnbmVk
IG5leHRUb0VudGVyUG9pbnQgPSBlbnRlclBvaW50KCkgKyBvcGNvZGVMZW5ndGgob3BfZW50ZXIp
OworICAgIFZpcnR1YWxSZWdpc3RlciBzdGF0ZSA9IHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50
KHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yRnVuY3Rpb246OkdlbmVyYXRvckFyZ3Vt
ZW50OjpTdGF0ZSkpOworICAgIGF1dG8mIGp1bXBUYWJsZSA9IG1fcmV3cml0ZXIuaW5zZXJ0U3dp
dGNoSW1tZWRpYXRlPEJ5dGVjb2RlUmV3cml0ZXI6OlBvc2l0aW9uOjpCZWZvcmU+KG5leHRUb0Vu
dGVyUG9pbnQsIG5leHRUb0VudGVyUG9pbnQsIHN0YXRlLm9mZnNldCgpKTsKKyAgICBqdW1wVGFi
bGUubWluID0gMDsKKyAgICBqdW1wVGFibGUuYnJhbmNoT2Zmc2V0cy5yZXNpemUobV95aWVsZHMu
c2l6ZSgpICsgMSk7CisgICAganVtcFRhYmxlLmJyYW5jaE9mZnNldHMuZmlsbCgwKTsKKyAgICBq
dW1wVGFibGUuYWRkKDAsIG5leHRUb0VudGVyUG9pbnQpOworICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBtX3lpZWxkcy5zaXplKCk7ICsraSkKKyAgICAgICAganVtcFRhYmxlLmFkZChpICsg
MSwgbV95aWVsZHNbaV0ucG9pbnQpOworCisgICAgZm9yIChjb25zdCBZaWVsZERhdGEmIGRhdGEg
OiBtX3lpZWxkcykgeworCisgICAgICAgIFZpcnR1YWxSZWdpc3RlciBzY29wZSA9IHZpcnR1YWxS
ZWdpc3RlckZvckFyZ3VtZW50KHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yRnVuY3Rp
b246OkdlbmVyYXRvckFyZ3VtZW50OjpGcmFtZSkpOworCisgICAgICAgIC8vIEVtaXQgc2F2ZSBz
ZXF1ZW5jZS4KKyAgICAgICAgZGF0YS5saXZlbmVzcy5mb3JFYWNoU2V0Qml0KFsmXShzaXplX3Qg
aW5kZXgpIHsKKyAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kID0gdmlydHVhbFJl
Z2lzdGVyRm9yTG9jYWwoaW5kZXgpOworICAgICAgICAgICAgU3RvcmFnZSBzdG9yYWdlID0gc3Rv
cmFnZUZvckdlbmVyYXRvckxvY2FsKGluZGV4KTsKKworICAgICAgICAgICAgbV9yZXdyaXRlci5p
bnNlcnQ8Qnl0ZWNvZGVSZXdyaXRlcjo6UG9zaXRpb246OkJlZm9yZT4oZGF0YS5wb2ludCwKKyAg
ICAgICAgICAgICAgICBvcF9wdXRfdG9fc2NvcGUsCisgICAgICAgICAgICAgICAgc2NvcGUub2Zm
c2V0KCksIC8vIHNjb3BlCisgICAgICAgICAgICAgICAgc3RvcmFnZS5pZGVudGlmaWVySW5kZXgs
IC8vIGlkZW50aWZpZXIKKyAgICAgICAgICAgICAgICBvcGVyYW5kLm9mZnNldCgpLCAvLyB2YWx1
ZQorICAgICAgICAgICAgICAgIEdldFB1dEluZm8oRG9Ob3RUaHJvd0lmTm90Rm91bmQsIExvY2Fs
Q2xvc3VyZVZhciwgSW5pdGlhbGl6YXRpb25Nb2RlOjpOb3RJbml0aWFsaXphdGlvbikub3BlcmFu
ZCgpLCAvLyBpbmZvCisgICAgICAgICAgICAgICAgbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxl
SW5kZXgsIC8vIHN5bWJvbCB0YWJsZSBjb25zdGFudCBpbmRleAorICAgICAgICAgICAgICAgIHN0
b3JhZ2Uuc2NvcGVPZmZzZXQub2Zmc2V0KCkgLy8gc2NvcGUgb2Zmc2V0CisgICAgICAgICAgICAp
OworICAgICAgICB9KTsKKworICAgICAgICAvLyBJbnNlcnQgb3BfcmV0IGp1c3QgYWZ0ZXIgc2F2
ZSBzZXF1ZW5jZS4KKyAgICAgICAgbV9yZXdyaXRlci5pbnNlcnQ8Qnl0ZWNvZGVSZXdyaXRlcjo6
UG9zaXRpb246OkJlZm9yZT4oZGF0YS5wb2ludCwKKyAgICAgICAgICAgIG9wX3JldCwKKyAgICAg
ICAgICAgIGRhdGEuYXJndW1lbnQKKyAgICAgICAgKTsKKworICAgICAgICAvLyBFbWl0IHJlc3Vt
ZSBzZXF1ZW5jZS4KKyAgICAgICAgZGF0YS5saXZlbmVzcy5mb3JFYWNoU2V0Qml0KFsmXShzaXpl
X3QgaW5kZXgpIHsKKyAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kID0gdmlydHVh
bFJlZ2lzdGVyRm9yTG9jYWwoaW5kZXgpOworICAgICAgICAgICAgU3RvcmFnZSBzdG9yYWdlID0g
c3RvcmFnZUZvckdlbmVyYXRvckxvY2FsKGluZGV4KTsKKworICAgICAgICAgICAgVW5saW5rZWRW
YWx1ZVByb2ZpbGUgcHJvZmlsZSA9IGNvZGVCbG9jay0+YWRkVmFsdWVQcm9maWxlKCk7CisgICAg
ICAgICAgICBtX3Jld3JpdGVyLmluc2VydDxCeXRlY29kZVJld3JpdGVyOjpQb3NpdGlvbjo6QmVm
b3JlPihkYXRhLnBvaW50ICsgb3Bjb2RlTGVuZ3RoKG9wX3lpZWxkKSwKKyAgICAgICAgICAgICAg
ICBvcF9nZXRfZnJvbV9zY29wZSwKKyAgICAgICAgICAgICAgICBvcGVyYW5kLm9mZnNldCgpLCAv
LyBkc3QKKyAgICAgICAgICAgICAgICBzY29wZS5vZmZzZXQoKSwgLy8gc2NvcGUKKyAgICAgICAg
ICAgICAgICBzdG9yYWdlLmlkZW50aWZpZXJJbmRleCwgLy8gaWRlbnRpZmllcgorICAgICAgICAg
ICAgICAgIEdldFB1dEluZm8oRG9Ob3RUaHJvd0lmTm90Rm91bmQsIExvY2FsQ2xvc3VyZVZhciwg
SW5pdGlhbGl6YXRpb25Nb2RlOjpOb3RJbml0aWFsaXphdGlvbikub3BlcmFuZCgpLCAvLyBpbmZv
CisgICAgICAgICAgICAgICAgMCwgLy8gbG9jYWwgc2NvcGUgZGVwdGgKKyAgICAgICAgICAgICAg
ICBzdG9yYWdlLnNjb3BlT2Zmc2V0Lm9mZnNldCgpLCAvLyBzY29wZSBvZmZzZXQKKyAgICAgICAg
ICAgICAgICBwcm9maWxlIC8vIHByb2ZpbGUKKyAgICAgICAgICAgICk7CisgICAgICAgIH0pOwor
CisgICAgICAgIC8vIENsaXAgdGhlIHVubmVjZXNzYXJ5IGJ5dGVjb2Rlcy4KKyAgICAgICAgbV9y
ZXdyaXRlci5yZW1vdmVCeXRlY29kZShkYXRhLnBvaW50KTsKKyAgICB9CisKKyAgICBtX3Jld3Jp
dGVyLmV4ZWN1dGUoKTsKK30KKwordm9pZCBwZXJmb3JtR2VuZXJhdG9yaWZpY2F0aW9uKFVubGlu
a2VkQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFVubGlua2VkQ29kZUJsb2NrOjpVbnBhY2tlZEluc3Ry
dWN0aW9ucyYgaW5zdHJ1Y3Rpb25zLCBTeW1ib2xUYWJsZSogZ2VuZXJhdG9yRnJhbWVTeW1ib2xU
YWJsZSwgaW50IGdlbmVyYXRvckZyYW1lU3ltYm9sVGFibGVJbmRleCkKK3sKKyAgICBCeXRlY29k
ZUdlbmVyYXRvcmlmaWNhdGlvbiBwYXNzKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb25zLCBnZW5lcmF0
b3JGcmFtZVN5bWJvbFRhYmxlLCBnZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlSW5kZXgpOworICAg
IHBhc3MucnVuKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24u
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5lYjdlYzk2ZWQ3MGRiYmEyMjExMWViMTM3NzMzZmIyMDA1NWIxMTFhCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
R2VuZXJhdG9yaWZpY2F0aW9uLmgKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNiBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiVW5saW5rZWRDb2RlQmxvY2suaCIKKworbmFtZXNw
YWNlIEpTQyB7CisKK2NsYXNzIFN5bWJvbFRhYmxlOworCit2b2lkIHBlcmZvcm1HZW5lcmF0b3Jp
ZmljYXRpb24oVW5saW5rZWRDb2RlQmxvY2sqLCBVbmxpbmtlZENvZGVCbG9jazo6VW5wYWNrZWRJ
bnN0cnVjdGlvbnMmLCBTeW1ib2xUYWJsZSogZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZSwgaW50
IGdlbmVyYXRvckZyYW1lU3ltYm9sVGFibGVJbmRleCk7CisKK30gLy8gbmFtZXNwYWNlIEpTQwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlR3JhcGgu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUdyYXBoLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZGMzNjgxNmMwNjQzMjE1YWUzMTU3N2E1MmFkODQ1YTU3OTIzNWRmNAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUdyYXBoLmgK
QEAgLTAsMCArMSwxMjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgWXVzdWtlIFN1enVr
aSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lu
Y2x1ZGUgIkJ5dGVjb2RlQmFzaWNCbG9jay5oIgorI2luY2x1ZGUgPHd0Zi9JbmRleGVkQ29udGFp
bmVySXRlcmF0b3IuaD4KKyNpbmNsdWRlIDx3dGYvSXRlcmF0b3JSYW5nZS5oPgorI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEJ5dGVjb2RlQmFzaWNC
bG9jazsKKwordGVtcGxhdGU8dHlwZW5hbWUgQmxvY2s+CitjbGFzcyBCeXRlY29kZUdyYXBoIHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShC
eXRlY29kZUdyYXBoKTsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEJsb2NrIENvZGVCbG9jazsKKyAg
ICB0eXBlZGVmIHR5cGVuYW1lIEJsb2NrOjpJbnN0cnVjdGlvbiBJbnN0cnVjdGlvbjsKKyAgICB0
eXBlZGVmIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4gQmFzaWNC
bG9ja3NWZWN0b3I7CisKKyAgICBpbmxpbmUgQnl0ZWNvZGVHcmFwaChCbG9jayosIHR5cGVuYW1l
IEJsb2NrOjpVbnBhY2tlZEluc3RydWN0aW9ucyYpOworCisgICAgQmxvY2sqIGNvZGVCbG9jaygp
IGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrOyB9CisKKyAgICB0eXBlbmFtZSBCbG9jazo6VW5w
YWNrZWRJbnN0cnVjdGlvbnMmIGluc3RydWN0aW9ucygpIHsgcmV0dXJuIG1faW5zdHJ1Y3Rpb25z
OyB9CisKKyAgICBXVEY6Okl0ZXJhdG9yUmFuZ2U8QmFzaWNCbG9ja3NWZWN0b3I6OnJldmVyc2Vf
aXRlcmF0b3I+IGJhc2ljQmxvY2tzSW5SZXZlcnNlT3JkZXIoKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIFdURjo6bWFrZUl0ZXJhdG9yUmFuZ2UobV9iYXNpY0Jsb2Nrcy5yYmVnaW4oKSwgbV9iYXNp
Y0Jsb2Nrcy5yZW5kKCkpOworICAgIH0KKworICAgIHN0YXRpYyBib29sIGJsb2NrQ29udGFpbnNC
eXRlY29kZU9mZnNldChCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrLCB1bnNpZ25lZCBieXRlY29k
ZU9mZnNldCkKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIGxlYWRlck9mZnNldCA9IGJsb2NrLT5s
ZWFkZXJCeXRlY29kZU9mZnNldCgpOworICAgICAgICByZXR1cm4gYnl0ZWNvZGVPZmZzZXQgPj0g
bGVhZGVyT2Zmc2V0ICYmIGJ5dGVjb2RlT2Zmc2V0IDwgbGVhZGVyT2Zmc2V0ICsgYmxvY2stPnRv
dGFsQnl0ZWNvZGVMZW5ndGgoKTsKKyAgICB9CisKKyAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGZp
bmRCYXNpY0Jsb2NrRm9yQnl0ZWNvZGVPZmZzZXQodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpCisg
ICAgeworICAgICAgICAvKgorICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1f
YmFzaWNCbG9ja3Muc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgICAgICAgICBpZiAoYmxvY2tDb250
YWluc0J5dGVjb2RlT2Zmc2V0KG1fYmFzaWNCbG9ja3NbaV0uZ2V0KCksIGJ5dGVjb2RlT2Zmc2V0
KSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1fYmFzaWNCbG9ja3NbaV0uZ2V0KCk7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgKi8KKworICAgICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiogYmFzaWNCbG9jayA9IGFwcHJv
eGltYXRlQmluYXJ5U2VhcmNoPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+LCB1
bnNpZ25lZD4obV9iYXNpY0Jsb2NrcywgbV9iYXNpY0Jsb2Nrcy5zaXplKCksIGJ5dGVjb2RlT2Zm
c2V0LCBbXSAoc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4qIGJhc2ljQmxvY2sp
IHsgcmV0dXJuICgqYmFzaWNCbG9jayktPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCk7IH0pOworICAg
ICAgICAvLyBXZSBmb3VuZCB0aGUgYmxvY2sgd2Ugd2VyZSBsb29raW5nIGZvci4KKyAgICAgICAg
aWYgKGJsb2NrQ29udGFpbnNCeXRlY29kZU9mZnNldCgoKmJhc2ljQmxvY2spLmdldCgpLCBieXRl
Y29kZU9mZnNldCkpCisgICAgICAgICAgICByZXR1cm4gKCpiYXNpY0Jsb2NrKS5nZXQoKTsKKwor
ICAgICAgICAvLyBCYXNpYyBibG9jayBpcyB0byB0aGUgbGVmdCBvZiB0aGUgcmV0dXJuZWQgYmxv
Y2suCisgICAgICAgIGlmIChieXRlY29kZU9mZnNldCA8ICgqYmFzaWNCbG9jayktPmxlYWRlckJ5
dGVjb2RlT2Zmc2V0KCkpIHsKKyAgICAgICAgICAgIEFTU0VSVChiYXNpY0Jsb2NrIC0gMSA+PSBt
X2Jhc2ljQmxvY2tzLmRhdGEoKSk7CisgICAgICAgICAgICBBU1NFUlQoYmxvY2tDb250YWluc0J5
dGVjb2RlT2Zmc2V0KGJhc2ljQmxvY2tbLTFdLmdldCgpLCBieXRlY29kZU9mZnNldCkpOworICAg
ICAgICAgICAgcmV0dXJuIGJhc2ljQmxvY2tbLTFdLmdldCgpOworICAgICAgICB9CisKKyAgICAg
ICAgLy8gQmFzaWMgYmxvY2sgaXMgdG8gdGhlIHJpZ2h0IG9mIHRoZSByZXR1cm5lZCBibG9jay4K
KyAgICAgICAgQVNTRVJUKCZiYXNpY0Jsb2NrWzFdIDw9ICZtX2Jhc2ljQmxvY2tzLmxhc3QoKSk7
CisgICAgICAgIEFTU0VSVChibG9ja0NvbnRhaW5zQnl0ZWNvZGVPZmZzZXQoYmFzaWNCbG9ja1sx
XS5nZXQoKSwgYnl0ZWNvZGVPZmZzZXQpKTsKKyAgICAgICAgcmV0dXJuIGJhc2ljQmxvY2tbMV0u
Z2V0KCk7CisgICAgfQorCisgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBmaW5kQmFzaWNCbG9ja1dp
dGhMZWFkZXJPZmZzZXQodW5zaWduZWQgbGVhZGVyT2Zmc2V0KQorICAgIHsKKyAgICAgICAgcmV0
dXJuICgqdHJ5QmluYXJ5U2VhcmNoPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+
LCB1bnNpZ25lZD4obV9iYXNpY0Jsb2NrcywgbV9iYXNpY0Jsb2Nrcy5zaXplKCksIGxlYWRlck9m
ZnNldCwgW10gKHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+KiBiYXNpY0Jsb2Nr
KSB7IHJldHVybiAoKmJhc2ljQmxvY2spLT5sZWFkZXJCeXRlY29kZU9mZnNldCgpOyB9KSkuZ2V0
KCk7CisgICAgfQorCisgICAgdW5zaWduZWQgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYmFzaWNC
bG9ja3Muc2l6ZSgpOyB9CisgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBhdCh1bnNpZ25lZCBpbmRl
eCkgY29uc3QgeyByZXR1cm4gbV9iYXNpY0Jsb2Nrc1tpbmRleF0uZ2V0KCk7IH0KKyAgICBCeXRl
Y29kZUJhc2ljQmxvY2sqIG9wZXJhdG9yW10odW5zaWduZWQgaW5kZXgpIGNvbnN0IHsgcmV0dXJu
IGF0KGluZGV4KTsgfQorCisgICAgdHlwZWRlZiBXVEY6OkluZGV4ZWRDb250YWluZXJJdGVyYXRv
cjxCeXRlY29kZUdyYXBoPEJsb2NrPj4gaXRlcmF0b3I7CisKKyAgICBpdGVyYXRvciBiZWdpbigp
IGNvbnN0IHsgcmV0dXJuIGl0ZXJhdG9yKCp0aGlzLCAwKTsgfQorICAgIGl0ZXJhdG9yIGVuZCgp
IGNvbnN0IHsgcmV0dXJuIGl0ZXJhdG9yKCp0aGlzLCBzaXplKCkpOyB9CisgICAgQnl0ZWNvZGVC
YXNpY0Jsb2NrKiBmaXJzdCgpIHsgcmV0dXJuIGF0KDApOyB9CisgICAgQnl0ZWNvZGVCYXNpY0Js
b2NrKiBsYXN0KCkgeyByZXR1cm4gYXQoc2l6ZSgpIC0gMSk7IH0KKworcHJpdmF0ZToKKyAgICBC
bG9jayogbV9jb2RlQmxvY2s7CisgICAgQmFzaWNCbG9ja3NWZWN0b3IgbV9iYXNpY0Jsb2NrczsK
KyAgICB0eXBlbmFtZSBCbG9jazo6VW5wYWNrZWRJbnN0cnVjdGlvbnMmIG1faW5zdHJ1Y3Rpb25z
OworfTsKKworCit0ZW1wbGF0ZTx0eXBlbmFtZSBCbG9jaz4KK0J5dGVjb2RlR3JhcGg8QmxvY2s+
OjpCeXRlY29kZUdyYXBoKEJsb2NrKiBjb2RlQmxvY2ssIHR5cGVuYW1lIEJsb2NrOjpVbnBhY2tl
ZEluc3RydWN0aW9ucyYgaW5zdHJ1Y3Rpb25zKQorICAgIDogbV9jb2RlQmxvY2soY29kZUJsb2Nr
KQorICAgICwgbV9pbnN0cnVjdGlvbnMoaW5zdHJ1Y3Rpb25zKQoreworICAgIEFTU0VSVChtX2Nv
ZGVCbG9jayk7CisgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrOjpjb21wdXRlQnl0ZWNvZGVCYXNpY0Js
b2NrcyhtX2NvZGVCbG9jaywgaW5zdHJ1Y3Rpb25zLmJlZ2luKCksIGluc3RydWN0aW9ucy5zaXpl
KCksIG1fYmFzaWNCbG9ja3MpOworICAgIEFTU0VSVChtX2Jhc2ljQmxvY2tzLnNpemUoKSk7Cit9
CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlTGlzdC5qc29uCmluZGV4IGUzODAyNWQ1YWZjZjY5Y2U0ODBhZTkyODk4Yzkz
OGU5MzEyNzg4ZDkuLmNlNjBkYTRhMjZiYzM0NzdmZDQ3MTliMGE0YjFmZWNlNTg5YzYxOWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNv
bgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24K
QEAgLTE0Myw4ICsxNDMsNyBAQAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfYXNzZXJ0Iiwg
Imxlbmd0aCIgOiAzIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9jcmVhdGVfcmVzdCIs
ICJsZW5ndGgiOiA0IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9nZXRfcmVzdF9sZW5n
dGgiLCAibGVuZ3RoIjogMyB9LAotICAgICAgICAgICAgeyAibmFtZSIgOiAib3Bfc2F2ZSIsICJs
ZW5ndGgiIDogNCB9LAotICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfcmVzdW1lIiwgImxlbmd0
aCIgOiAzIH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF95aWVsZCIsICJsZW5ndGgiIDog
NCB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3Bfd2F0Y2hkb2ciLCAibGVuZ3RoIiA6IDEg
fSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2xvZ19zaGFkb3dfY2hpY2tlbl9wcm9sb2d1
ZSIsICJsZW5ndGgiIDogMn0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9sb2dfc2hhZG93
X2NoaWNrZW5fdGFpbCIsICJsZW5ndGgiIDogM30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAKaW5kZXgg
ZDRjYjAxYWNiMTE2NTEyYTNlNjMzMzZkZTI0M2Q2OTA5M2ZiYTcwNC4uYWQzYzAyMWUxZWE0Mzdh
MzAzNjQ5NTBkNWEwYmI0OGMyNjQxOWU1YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAKQEAgLTMx
LDE5OSArMzEsNjYgQEAKICNpbmNsdWRlICJCeXRlY29kZVVzZURlZi5oIgogI2luY2x1ZGUgIkNv
ZGVCbG9jay5oIgogI2luY2x1ZGUgIkZ1bGxCeXRlY29kZUxpdmVuZXNzLmgiCi0jaW5jbHVkZSAi
SW50ZXJwcmV0ZXIuaCIKKyNpbmNsdWRlICJJbnRlcnByZXRlcklubGluZXMuaCIKICNpbmNsdWRl
ICJQcmVjaXNlSnVtcFRhcmdldHMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKIEJ5dGVjb2RlTGl2
ZW5lc3NBbmFseXNpczo6Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzKENvZGVCbG9jayogY29kZUJs
b2NrKQotICAgIDogbV9jb2RlQmxvY2soY29kZUJsb2NrKQorICAgIDogbV9ncmFwaChjb2RlQmxv
Y2ssIGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkpCiB7Ci0gICAgQVNTRVJUKG1fY29kZUJsb2Nr
KTsKICAgICBjb21wdXRlKCk7CiB9CiAKLXN0YXRpYyBib29sIGlzVmFsaWRSZWdpc3RlckZvckxp
dmVuZXNzKENvZGVCbG9jayogY29kZUJsb2NrLCBpbnQgb3BlcmFuZCkKK3RlbXBsYXRlPHR5cGVu
YW1lIEZ1bmN0b3I+Cit2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0ZURlZnNG
b3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgT3Bjb2RlSUQgb3Bjb2RlSUQs
IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgRmFzdEJpdFZlY3RvciYsIGNvbnN0IEZ1bmN0b3Im
IGZ1bmN0b3IpCiB7Ci0gICAgaWYgKGNvZGVCbG9jay0+aXNDb25zdGFudFJlZ2lzdGVySW5kZXgo
b3BlcmFuZCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKLSAgICBWaXJ0dWFsUmVnaXN0
ZXIgdmlydHVhbFJlZyhvcGVyYW5kKTsKLSAgICByZXR1cm4gdmlydHVhbFJlZy5pc0xvY2FsKCk7
Ci19Ci0KLXN0YXRpYyB1bnNpZ25lZCBnZXRMZWFkZXJPZmZzZXRGb3JCYXNpY0Jsb2NrKHN0ZDo6
dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+KiBiYXNpY0Jsb2NrKQotewotICAgIHJldHVy
biAoKmJhc2ljQmxvY2spLT5sZWFkZXJCeXRlY29kZU9mZnNldCgpOwotfQotCi1zdGF0aWMgQnl0
ZWNvZGVCYXNpY0Jsb2NrKiBmaW5kQmFzaWNCbG9ja1dpdGhMZWFkZXJPZmZzZXQoVmVjdG9yPHN0
ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9ja3MsIHVuc2lnbmVk
IGxlYWRlck9mZnNldCkKLXsKLSAgICByZXR1cm4gKCp0cnlCaW5hcnlTZWFyY2g8c3RkOjp1bmlx
dWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4sIHVuc2lnbmVkPihiYXNpY0Jsb2NrcywgYmFzaWNC
bG9ja3Muc2l6ZSgpLCBsZWFkZXJPZmZzZXQsIGdldExlYWRlck9mZnNldEZvckJhc2ljQmxvY2sp
KS5nZXQoKTsKLX0KLQotc3RhdGljIGJvb2wgYmxvY2tDb250YWluc0J5dGVjb2RlT2Zmc2V0KEJ5
dGVjb2RlQmFzaWNCbG9jayogYmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KQotewotICAg
IHVuc2lnbmVkIGxlYWRlck9mZnNldCA9IGJsb2NrLT5sZWFkZXJCeXRlY29kZU9mZnNldCgpOwot
ICAgIHJldHVybiBieXRlY29kZU9mZnNldCA+PSBsZWFkZXJPZmZzZXQgJiYgYnl0ZWNvZGVPZmZz
ZXQgPCBsZWFkZXJPZmZzZXQgKyBibG9jay0+dG90YWxCeXRlY29kZUxlbmd0aCgpOwotfQotCi1z
dGF0aWMgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBmaW5kQmFzaWNCbG9ja0ZvckJ5dGVjb2RlT2Zmc2V0
KFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mIGJhc2ljQmxvY2tz
LCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCkKLXsKLS8qCi0gICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IGJhc2ljQmxvY2tzLnNpemUoKTsgaSsrKSB7Ci0gICAgICAgIGlmIChibG9ja0NvbnRh
aW5zQnl0ZWNvZGVPZmZzZXQoYmFzaWNCbG9ja3NbaV0uZ2V0KCksIGJ5dGVjb2RlT2Zmc2V0KSkK
LSAgICAgICAgICAgIHJldHVybiBiYXNpY0Jsb2Nrc1tpXS5nZXQoKTsKLSAgICB9Ci0gICAgcmV0
dXJuIDA7Ci0qLwotICAgIHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+KiBiYXNp
Y0Jsb2NrID0gYXBwcm94aW1hdGVCaW5hcnlTZWFyY2g8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2Rl
QmFzaWNCbG9jaz4sIHVuc2lnbmVkPigKLSAgICAgICAgYmFzaWNCbG9ja3MsIGJhc2ljQmxvY2tz
LnNpemUoKSwgYnl0ZWNvZGVPZmZzZXQsIGdldExlYWRlck9mZnNldEZvckJhc2ljQmxvY2spOwot
ICAgIC8vIFdlIGZvdW5kIHRoZSBibG9jayB3ZSB3ZXJlIGxvb2tpbmcgZm9yLgotICAgIGlmIChi
bG9ja0NvbnRhaW5zQnl0ZWNvZGVPZmZzZXQoKCpiYXNpY0Jsb2NrKS5nZXQoKSwgYnl0ZWNvZGVP
ZmZzZXQpKQotICAgICAgICByZXR1cm4gKCpiYXNpY0Jsb2NrKS5nZXQoKTsKLQotICAgIC8vIEJh
c2ljIGJsb2NrIGlzIHRvIHRoZSBsZWZ0IG9mIHRoZSByZXR1cm5lZCBibG9jay4KLSAgICBpZiAo
Ynl0ZWNvZGVPZmZzZXQgPCAoKmJhc2ljQmxvY2spLT5sZWFkZXJCeXRlY29kZU9mZnNldCgpKSB7
Ci0gICAgICAgIEFTU0VSVChiYXNpY0Jsb2NrIC0gMSA+PSBiYXNpY0Jsb2Nrcy5kYXRhKCkpOwot
ICAgICAgICBBU1NFUlQoYmxvY2tDb250YWluc0J5dGVjb2RlT2Zmc2V0KGJhc2ljQmxvY2tbLTFd
LmdldCgpLCBieXRlY29kZU9mZnNldCkpOwotICAgICAgICByZXR1cm4gYmFzaWNCbG9ja1stMV0u
Z2V0KCk7Ci0gICAgfQotCi0gICAgLy8gQmFzaWMgYmxvY2sgaXMgdG8gdGhlIHJpZ2h0IG9mIHRo
ZSByZXR1cm5lZCBibG9jay4KLSAgICBBU1NFUlQoJmJhc2ljQmxvY2tbMV0gPD0gJmJhc2ljQmxv
Y2tzLmxhc3QoKSk7Ci0gICAgQVNTRVJUKGJsb2NrQ29udGFpbnNCeXRlY29kZU9mZnNldChiYXNp
Y0Jsb2NrWzFdLmdldCgpLCBieXRlY29kZU9mZnNldCkpOwotICAgIHJldHVybiBiYXNpY0Jsb2Nr
WzFdLmdldCgpOwotfQotCi0vLyBTaW1wbGlmaWVkIGludGVyZmFjZSB0byBieXRlY29kZSB1c2Uv
ZGVmLCB3aGljaCBkZXRlcm1pbmVzIGRlZnMgZmlyc3QgYW5kIHRoZW4gdXNlcywgYW5kIGluY2x1
ZGVzCi0vLyBleGNlcHRpb24gaGFuZGxlcnMgaW4gdGhlIHVzZXMuCi10ZW1wbGF0ZTx0eXBlbmFt
ZSBVc2VGdW5jdG9yLCB0eXBlbmFtZSBEZWZGdW5jdG9yPgotc3RhdGljIHZvaWQgc3RlcE92ZXJJ
bnN0cnVjdGlvbihDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9j
aywgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9j
a3MsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBjb25zdCBVc2VGdW5jdG9yJiB1c2UsIGNvbnN0
IERlZkZ1bmN0b3ImIGRlZikKLXsKLSAgICAvLyBUaGlzIGFic3RyYWN0bHkgZXhlY3V0ZSB0aGUg
aW5zdHJ1Y3Rpb24gaW4gcmV2ZXJzZS4gSW5zdHJ1Y3Rpb25zIGxvZ2ljYWxseSBmaXJzdCB1c2Ug
b3BlcmFuZHMgYW5kCi0gICAgLy8gdGhlbiBkZWZpbmUgb3BlcmFuZHMuIFRoaXMgbG9naWNhbCBv
cmRlcmluZyBpcyBuZWNlc3NhcnkgZm9yIG9wZXJhdGlvbnMgdGhhdCB1c2UgYW5kIGRlZiB0aGUg
c2FtZQotICAgIC8vIG9wZXJhbmQsIGxpa2U6Ci0gICAgLy8KLSAgICAvLyAgICAgb3BfYWRkIGxv
YzEsIGxvYzEsIGxvYzIKLSAgICAvLwotICAgIC8vIFRoZSB1c2Ugb2YgbG9jMSBoYXBwZW5zIGJl
Zm9yZSB0aGUgZGVmIG9mIGxvYzEuIFRoYXQncyBhIHNlbWFudGljIHJlcXVpcmVtZW50IHNpbmNl
IHRoZSBhZGQKLSAgICAvLyBvcGVyYXRpb24gY2Fubm90IHRyYXZlbCBmb3J3YXJkIGluIHRpbWUg
dG8gcmVhZCB0aGUgdmFsdWUgdGhhdCBpdCB3aWxsIHByb2R1Y2UgYWZ0ZXIgcmVhZGluZyB0aGF0
Ci0gICAgLy8gdmFsdWUuIFNpbmNlIHdlIGFyZSBleGVjdXRpbmcgaW4gcmV2ZXJzZSwgdGhpcyBt
ZWFucyB0aGF0IHdlIG11c3QgZG8gZGVmcyBiZWZvcmUgdXNlcyAocmV2ZXJzZSBvZgotICAgIC8v
IHVzZXMgYmVmb3JlIGRlZnMpLgotICAgIC8vCi0gICAgLy8gU2luY2UgdGhpcyBpcyBhIGxpdmVu
ZXNzIGFuYWx5c2lzLCB0aGlzIG9yZGVyaW5nIGVuZHMgdXAgYmVpbmcgcGFydGljdWxhcmx5IGlt
cG9ydGFudDogaWYgd2UgZGlkCi0gICAgLy8gdXNlcyBiZWZvcmUgZGVmcywgdGhlbiB0aGUgYWRk
IG9wZXJhdGlvbiBhYm92ZSB3b3VsZCBhcHBlYXIgdG8gbm90IGhhdmUgbG9jMSBsaXZlLCBzaW5j
ZSB3ZSdkCi0gICAgLy8gZmlyc3QgYWRkIGl0IHRvIHRoZSBvdXQgc2V0ICh0aGUgdXNlKSwgYW5k
IHRoZW4gd2UnZCByZW1vdmUgaXQgKHRoZSBkZWYpLgotICAgIAotICAgIGNvbXB1dGVEZWZzRm9y
Qnl0ZWNvZGVPZmZzZXQoCi0gICAgICAgIGNvZGVCbG9jaywgYmxvY2ssIGJ5dGVjb2RlT2Zmc2V0
LAotICAgICAgICBbJl0gKENvZGVCbG9jayogY29kZUJsb2NrLCBJbnN0cnVjdGlvbiosIE9wY29k
ZUlELCBpbnQgb3BlcmFuZCkgewotICAgICAgICAgICAgaWYgKGlzVmFsaWRSZWdpc3RlckZvckxp
dmVuZXNzKGNvZGVCbG9jaywgb3BlcmFuZCkpCi0gICAgICAgICAgICAgICAgZGVmKFZpcnR1YWxS
ZWdpc3RlcihvcGVyYW5kKS50b0xvY2FsKCkpOwotICAgICAgICB9KTsKLQotICAgIGNvbXB1dGVV
c2VzRm9yQnl0ZWNvZGVPZmZzZXQoCi0gICAgICAgIGNvZGVCbG9jaywgYmxvY2ssIGJ5dGVjb2Rl
T2Zmc2V0LAotICAgICAgICBbJl0gKENvZGVCbG9jayogY29kZUJsb2NrLCBJbnN0cnVjdGlvbios
IE9wY29kZUlELCBpbnQgb3BlcmFuZCkgewotICAgICAgICAgICAgaWYgKGlzVmFsaWRSZWdpc3Rl
ckZvckxpdmVuZXNzKGNvZGVCbG9jaywgb3BlcmFuZCkpCi0gICAgICAgICAgICAgICAgdXNlKFZp
cnR1YWxSZWdpc3RlcihvcGVyYW5kKS50b0xvY2FsKCkpOwotICAgICAgICB9KTsKLQotICAgIC8v
IElmIHdlIGhhdmUgYW4gZXhjZXB0aW9uIGhhbmRsZXIsIHdlIHdhbnQgdGhlIGxpdmUtaW4gdmFy
aWFibGVzIG9mIHRoZSAKLSAgICAvLyBleGNlcHRpb24gaGFuZGxlciBibG9jayB0byBiZSBpbmNs
dWRlZCBpbiB0aGUgbGl2ZS1pbiBvZiB0aGlzIHBhcnRpY3VsYXIgYnl0ZWNvZGUuCi0gICAgaWYg
KEhhbmRsZXJJbmZvKiBoYW5kbGVyID0gY29kZUJsb2NrLT5oYW5kbGVyRm9yQnl0ZWNvZGVPZmZz
ZXQoYnl0ZWNvZGVPZmZzZXQpKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBUaGlzIHJlc3VtZSBjaGVj
ayBzaG91bGQgbm90IGJlIG5lZWRlZC4KLSAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE1OTI4MQotICAgICAgICBJbnRlcnByZXRlciogaW50ZXJwcmV0
ZXIgPSBjb2RlQmxvY2stPnZtKCktPmludGVycHJldGVyOwotICAgICAgICBJbnN0cnVjdGlvbiog
aW5zdHJ1Y3Rpb25zQmVnaW4gPSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCk7Ci0g
ICAgICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9ICZpbnN0cnVjdGlvbnNCZWdpbltieXRl
Y29kZU9mZnNldF07Ci0gICAgICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0ZXItPmdl
dE9wY29kZUlEKGluc3RydWN0aW9uLT51Lm9wY29kZSk7Ci0gICAgICAgIGlmIChvcGNvZGVJRCAh
PSBvcF9yZXN1bWUpIHsKLSAgICAgICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogaGFuZGxlckJs
b2NrID0gZmluZEJhc2ljQmxvY2tXaXRoTGVhZGVyT2Zmc2V0KGJhc2ljQmxvY2tzLCBoYW5kbGVy
LT50YXJnZXQpOwotICAgICAgICAgICAgQVNTRVJUKGhhbmRsZXJCbG9jayk7Ci0gICAgICAgICAg
ICBoYW5kbGVyQmxvY2stPmluKCkuZm9yRWFjaFNldEJpdCh1c2UpOwotICAgICAgICB9Ci0gICAg
fQotfQotCi1zdGF0aWMgdm9pZCBzdGVwT3Zlckluc3RydWN0aW9uKENvZGVCbG9jayogY29kZUJs
b2NrLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5
dGVjb2RlQmFzaWNCbG9jaz4+JiBiYXNpY0Jsb2NrcywgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQs
IEZhc3RCaXRWZWN0b3ImIG91dCkKLXsKLSAgICBzdGVwT3Zlckluc3RydWN0aW9uKAotICAgICAg
ICBjb2RlQmxvY2ssIGJsb2NrLCBiYXNpY0Jsb2NrcywgYnl0ZWNvZGVPZmZzZXQsCi0gICAgICAg
IFsmXSAodW5zaWduZWQgYml0SW5kZXgpIHsKLSAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIHVz
ZSBmdW5jdG9yLCBzbyB3ZSBzZXQgdGhlIGJpdC4KLSAgICAgICAgICAgIG91dC5zZXQoYml0SW5k
ZXgpOwotICAgICAgICB9LAotICAgICAgICBbJl0gKHVuc2lnbmVkIGJpdEluZGV4KSB7Ci0gICAg
ICAgICAgICAvLyBUaGlzIGlzIHRoZSBkZWYgZnVuY3Rvciwgc28gd2UgY2xlYXIgdGhlIGJpdC4K
LSAgICAgICAgICAgIG91dC5jbGVhcihiaXRJbmRleCk7Ci0gICAgICAgIH0pOwotfQotCi1zdGF0
aWMgdm9pZCBjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayog
Y29kZUJsb2NrLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrLCBWZWN0b3I8c3RkOjp1bmlxdWVf
cHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+JiBiYXNpY0Jsb2NrcywgdW5zaWduZWQgdGFyZ2V0T2Zm
c2V0LCBGYXN0Qml0VmVjdG9yJiByZXN1bHQpCi17Ci0gICAgQVNTRVJUKCFibG9jay0+aXNFeGl0
QmxvY2soKSk7Ci0gICAgQVNTRVJUKCFibG9jay0+aXNFbnRyeUJsb2NrKCkpOwotCi0gICAgRmFz
dEJpdFZlY3RvciBvdXQgPSBibG9jay0+b3V0KCk7Ci0KLSAgICBmb3IgKGludCBpID0gYmxvY2st
PmJ5dGVjb2RlT2Zmc2V0cygpLnNpemUoKSAtIDE7IGkgPj0gMDsgaS0tKSB7Ci0gICAgICAgIHVu
c2lnbmVkIGJ5dGVjb2RlT2Zmc2V0ID0gYmxvY2stPmJ5dGVjb2RlT2Zmc2V0cygpW2ldOwotICAg
ICAgICBpZiAodGFyZ2V0T2Zmc2V0ID4gYnl0ZWNvZGVPZmZzZXQpCi0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgCi0gICAgICAgIHN0ZXBPdmVySW5zdHJ1Y3Rpb24oY29kZUJsb2NrLCBibG9j
aywgYmFzaWNCbG9ja3MsIGJ5dGVjb2RlT2Zmc2V0LCBvdXQpOwotICAgIH0KLQotICAgIHJlc3Vs
dC5zZXQob3V0KTsKKyAgICBKU0M6OmNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoY29kZUJs
b2NrLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb24sIGZ1bmN0b3IpOwogfQogCi1zdGF0aWMgdm9pZCBj
b21wdXRlTG9jYWxMaXZlbmVzc0ZvckJsb2NrKENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29k
ZUJhc2ljQmxvY2sqIGJsb2NrLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNC
bG9jaz4+JiBiYXNpY0Jsb2NrcykKK3RlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+Cit2b2lkIEJ5
dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldChDb2Rl
QmxvY2sqIGNvZGVCbG9jaywgT3Bjb2RlSUQgb3Bjb2RlSUQsIEluc3RydWN0aW9uKiBpbnN0cnVj
dGlvbiwgRmFzdEJpdFZlY3RvciYsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiB7Ci0gICAgaWYg
KGJsb2NrLT5pc0V4aXRCbG9jaygpIHx8IGJsb2NrLT5pc0VudHJ5QmxvY2soKSkKLSAgICAgICAg
cmV0dXJuOwotICAgIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQnl0ZWNvZGVPZmZzZXQoY29kZUJs
b2NrLCBibG9jaywgYmFzaWNCbG9ja3MsIGJsb2NrLT5sZWFkZXJCeXRlY29kZU9mZnNldCgpLCBi
bG9jay0+aW4oKSk7CisgICAgSlNDOjpjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVC
bG9jaywgb3Bjb2RlSUQsIGluc3RydWN0aW9uLCBmdW5jdG9yKTsKIH0KIAogdm9pZCBCeXRlY29k
ZUxpdmVuZXNzQW5hbHlzaXM6OnJ1bkxpdmVuZXNzRml4cG9pbnQoKQogewotICAgIFVubGlua2Vk
Q29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jayA9IG1fY29kZUJsb2NrLT51bmxpbmtlZENvZGVC
bG9jaygpOworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gbV9ncmFwaC5jb2RlQmxvY2soKTsK
KyAgICBVbmxpbmtlZENvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2sgPSBjb2RlQmxvY2stPnVu
bGlua2VkQ29kZUJsb2NrKCk7CiAgICAgdW5zaWduZWQgbnVtYmVyT2ZWYXJpYWJsZXMgPSB1bmxp
bmtlZENvZGVCbG9jay0+bV9udW1DYWxsZWVMb2NhbHM7CiAKLSAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgbV9iYXNpY0Jsb2Nrcy5zaXplKCk7IGkrKykgewotICAgICAgICBCeXRlY29kZUJh
c2ljQmxvY2sqIGJsb2NrID0gbV9iYXNpY0Jsb2Nrc1tpXS5nZXQoKTsKKyAgICBmb3IgKEJ5dGVj
b2RlQmFzaWNCbG9jayogYmxvY2sgOiBtX2dyYXBoKSB7CiAgICAgICAgIGJsb2NrLT5pbigpLnJl
c2l6ZShudW1iZXJPZlZhcmlhYmxlcyk7CiAgICAgICAgIGJsb2NrLT5vdXQoKS5yZXNpemUobnVt
YmVyT2ZWYXJpYWJsZXMpOwogICAgIH0KIAogICAgIGJvb2wgY2hhbmdlZDsKLSAgICBtX2Jhc2lj
QmxvY2tzLmxhc3QoKS0+aW4oKS5jbGVhckFsbCgpOwotICAgIG1fYmFzaWNCbG9ja3MubGFzdCgp
LT5vdXQoKS5jbGVhckFsbCgpOworICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogbGFzdEJsb2NrID0g
bV9ncmFwaC5sYXN0KCk7CisgICAgbGFzdEJsb2NrLT5pbigpLmNsZWFyQWxsKCk7CisgICAgbGFz
dEJsb2NrLT5vdXQoKS5jbGVhckFsbCgpOwogICAgIEZhc3RCaXRWZWN0b3IgbmV3T3V0OwotICAg
IG5ld091dC5yZXNpemUobV9iYXNpY0Jsb2Nrcy5sYXN0KCktPm91dCgpLm51bUJpdHMoKSk7Cisg
ICAgbmV3T3V0LnJlc2l6ZShsYXN0QmxvY2stPm91dCgpLm51bUJpdHMoKSk7CiAgICAgZG8gewog
ICAgICAgICBjaGFuZ2VkID0gZmFsc2U7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1fYmFz
aWNCbG9ja3Muc2l6ZSgpIC0gMTsgaS0tOykgewotICAgICAgICAgICAgQnl0ZWNvZGVCYXNpY0Js
b2NrKiBibG9jayA9IG1fYmFzaWNCbG9ja3NbaV0uZ2V0KCk7CisgICAgICAgIGZvciAoc3RkOjp1
bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4mIGJsb2NrIDogbV9ncmFwaC5iYXNpY0Jsb2Nr
c0luUmV2ZXJzZU9yZGVyKCkpIHsKICAgICAgICAgICAgIG5ld091dC5jbGVhckFsbCgpOwotICAg
ICAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8IGJsb2NrLT5zdWNjZXNzb3JzKCkuc2l6
ZSgpOyBqKyspCi0gICAgICAgICAgICAgICAgbmV3T3V0Lm1lcmdlKGJsb2NrLT5zdWNjZXNzb3Jz
KClbal0tPmluKCkpOwotICAgICAgICAgICAgYm9vbCBvdXREaWRDaGFuZ2UgPSBibG9jay0+b3V0
KCkuc2V0QW5kQ2hlY2sobmV3T3V0KTsKLSAgICAgICAgICAgIGNvbXB1dGVMb2NhbExpdmVuZXNz
Rm9yQmxvY2sobV9jb2RlQmxvY2ssIGJsb2NrLCBtX2Jhc2ljQmxvY2tzKTsKLSAgICAgICAgICAg
IGNoYW5nZWQgfD0gb3V0RGlkQ2hhbmdlOworICAgICAgICAgICAgZm9yIChCeXRlY29kZUJhc2lj
QmxvY2sqIHN1Y2Nlc3NvciA6IGJsb2NrLT5zdWNjZXNzb3JzKCkpCisgICAgICAgICAgICAgICAg
bmV3T3V0Lm1lcmdlKHN1Y2Nlc3Nvci0+aW4oKSk7CisgICAgICAgICAgICBibG9jay0+b3V0KCku
c2V0KG5ld091dCk7CisgICAgICAgICAgICBjaGFuZ2VkIHw9IGNvbXB1dGVMb2NhbExpdmVuZXNz
Rm9yQmxvY2sobV9ncmFwaCwgYmxvY2suZ2V0KCkpOwogICAgICAgICB9CiAgICAgfSB3aGlsZSAo
Y2hhbmdlZCk7CiB9CiAKIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpnZXRMaXZlbmVz
c0luZm9BdEJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBGYXN0Qml0VmVj
dG9yJiByZXN1bHQpCiB7Ci0gICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jayA9IGZpbmRCYXNp
Y0Jsb2NrRm9yQnl0ZWNvZGVPZmZzZXQobV9iYXNpY0Jsb2NrcywgYnl0ZWNvZGVPZmZzZXQpOwor
ICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2sgPSBtX2dyYXBoLmZpbmRCYXNpY0Jsb2NrRm9y
Qnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpOwogICAgIEFTU0VSVChibG9jayk7CiAgICAg
QVNTRVJUKCFibG9jay0+aXNFbnRyeUJsb2NrKCkpOwogICAgIEFTU0VSVCghYmxvY2stPmlzRXhp
dEJsb2NrKCkpOwogICAgIHJlc3VsdC5yZXNpemUoYmxvY2stPm91dCgpLm51bUJpdHMoKSk7Ci0g
ICAgY29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCeXRlY29kZU9mZnNldChtX2NvZGVCbG9jaywgYmxv
Y2ssIG1fYmFzaWNCbG9ja3MsIGJ5dGVjb2RlT2Zmc2V0LCByZXN1bHQpOworICAgIGNvbXB1dGVM
b2NhbExpdmVuZXNzRm9yQnl0ZWNvZGVPZmZzZXQobV9ncmFwaCwgYmxvY2ssIGJ5dGVjb2RlT2Zm
c2V0LCByZXN1bHQpOwogfQogCiBib29sIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6b3BlcmFu
ZElzTGl2ZUF0Qnl0ZWNvZGVPZmZzZXQoaW50IG9wZXJhbmQsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zm
c2V0KQpAQCAtMjQ1LDExICsxMTIsMTEgQEAgRmFzdEJpdFZlY3RvciBCeXRlY29kZUxpdmVuZXNz
QW5hbHlzaXM6OmdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQodW5zaWduZWQKIHZvaWQg
Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlRnVsbExpdmVuZXNzKEZ1bGxCeXRlY29k
ZUxpdmVuZXNzJiByZXN1bHQpCiB7CiAgICAgRmFzdEJpdFZlY3RvciBvdXQ7CisgICAgQ29kZUJs
b2NrKiBjb2RlQmxvY2sgPSBtX2dyYXBoLmNvZGVCbG9jaygpOwogICAgIAotICAgIHJlc3VsdC5t
X21hcC5yZXNpemUobV9jb2RlQmxvY2stPmluc3RydWN0aW9ucygpLnNpemUoKSk7CisgICAgcmVz
dWx0Lm1fbWFwLnJlc2l6ZShjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLnNpemUoKSk7CiAgICAg
Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gbV9iYXNpY0Jsb2Nrcy5zaXplKCk7IGktLTspIHsKLSAg
ICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jayA9IG1fYmFzaWNCbG9ja3NbaV0uZ2V0KCk7
CisgICAgZm9yIChzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiYgYmxvY2sgOiBt
X2dyYXBoLmJhc2ljQmxvY2tzSW5SZXZlcnNlT3JkZXIoKSkgewogICAgICAgICBpZiAoYmxvY2st
PmlzRW50cnlCbG9jaygpIHx8IGJsb2NrLT5pc0V4aXRCbG9jaygpKQogICAgICAgICAgICAgY29u
dGludWU7CiAgICAgICAgIApAQCAtMjU3LDcgKzEyNCw3IEBAIHZvaWQgQnl0ZWNvZGVMaXZlbmVz
c0FuYWx5c2lzOjpjb21wdXRlRnVsbExpdmVuZXNzKEZ1bGxCeXRlY29kZUxpdmVuZXNzJiByZXN1
bHQpCiAgICAgICAgIAogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBibG9jay0+Ynl0ZWNvZGVP
ZmZzZXRzKCkuc2l6ZSgpOyBpLS07KSB7CiAgICAgICAgICAgICB1bnNpZ25lZCBieXRlY29kZU9m
ZnNldCA9IGJsb2NrLT5ieXRlY29kZU9mZnNldHMoKVtpXTsKLSAgICAgICAgICAgIHN0ZXBPdmVy
SW5zdHJ1Y3Rpb24obV9jb2RlQmxvY2ssIGJsb2NrLCBtX2Jhc2ljQmxvY2tzLCBieXRlY29kZU9m
ZnNldCwgb3V0KTsKKyAgICAgICAgICAgIHN0ZXBPdmVySW5zdHJ1Y3Rpb24obV9ncmFwaCwgYnl0
ZWNvZGVPZmZzZXQsIG91dCk7CiAgICAgICAgICAgICByZXN1bHQubV9tYXBbYnl0ZWNvZGVPZmZz
ZXRdID0gb3V0OwogICAgICAgICB9CiAgICAgfQpAQCAtMjY3LDExICsxMzQsMTEgQEAgdm9pZCBC
eXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGVLaWxscyhCeXRlY29kZUtpbGxzJiByZXN1
bHQpCiB7CiAgICAgRmFzdEJpdFZlY3RvciBvdXQ7CiAgICAgCi0gICAgcmVzdWx0Lm1fY29kZUJs
b2NrID0gbV9jb2RlQmxvY2s7Ci0gICAgcmVzdWx0Lm1fa2lsbFNldHMgPSBzdGQ6Om1ha2VfdW5p
cXVlPEJ5dGVjb2RlS2lsbHM6OktpbGxTZXRbXT4obV9jb2RlQmxvY2stPmluc3RydWN0aW9ucygp
LnNpemUoKSk7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBtX2dyYXBoLmNvZGVCbG9jaygp
OworICAgIHJlc3VsdC5tX2NvZGVCbG9jayA9IGNvZGVCbG9jazsKKyAgICByZXN1bHQubV9raWxs
U2V0cyA9IHN0ZDo6bWFrZV91bmlxdWU8Qnl0ZWNvZGVLaWxsczo6S2lsbFNldFtdPihjb2RlQmxv
Y2stPmluc3RydWN0aW9ucygpLnNpemUoKSk7CiAgICAgCi0gICAgZm9yICh1bnNpZ25lZCBpID0g
bV9iYXNpY0Jsb2Nrcy5zaXplKCk7IGktLTspIHsKLSAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2Nr
KiBibG9jayA9IG1fYmFzaWNCbG9ja3NbaV0uZ2V0KCk7CisgICAgZm9yIChzdGQ6OnVuaXF1ZV9w
dHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiYgYmxvY2sgOiBtX2dyYXBoLmJhc2ljQmxvY2tzSW5SZXZl
cnNlT3JkZXIoKSkgewogICAgICAgICBpZiAoYmxvY2stPmlzRW50cnlCbG9jaygpIHx8IGJsb2Nr
LT5pc0V4aXRCbG9jaygpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIApAQCAtMjgw
LDcgKzE0Nyw3IEBAIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlS2lsbHMo
Qnl0ZWNvZGVLaWxscyYgcmVzdWx0KQogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBibG9jay0+
Ynl0ZWNvZGVPZmZzZXRzKCkuc2l6ZSgpOyBpLS07KSB7CiAgICAgICAgICAgICB1bnNpZ25lZCBi
eXRlY29kZU9mZnNldCA9IGJsb2NrLT5ieXRlY29kZU9mZnNldHMoKVtpXTsKICAgICAgICAgICAg
IHN0ZXBPdmVySW5zdHJ1Y3Rpb24oCi0gICAgICAgICAgICAgICAgbV9jb2RlQmxvY2ssIGJsb2Nr
LCBtX2Jhc2ljQmxvY2tzLCBieXRlY29kZU9mZnNldCwKKyAgICAgICAgICAgICAgICBtX2dyYXBo
LCBieXRlY29kZU9mZnNldCwgb3V0LAogICAgICAgICAgICAgICAgIFsmXSAodW5zaWduZWQgaW5k
ZXgpIHsKICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyBmb3IgdXNlcy4KICAgICAgICAg
ICAgICAgICAgICAgaWYgKG91dC5nZXQoaW5kZXgpKQpAQCAtMjk4LDEyICsxNjUsMTMgQEAgdm9p
ZCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGVLaWxscyhCeXRlY29kZUtpbGxzJiBy
ZXN1bHQpCiAKIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpkdW1wUmVzdWx0cygpCiB7
Ci0gICAgZGF0YUxvZygiXG5EdW1waW5nIGJ5dGVjb2RlIGxpdmVuZXNzIGZvciAiLCAqbV9jb2Rl
QmxvY2ssICI6XG4iKTsKLSAgICBJbnRlcnByZXRlciogaW50ZXJwcmV0ZXIgPSBtX2NvZGVCbG9j
ay0+dm0oKS0+aW50ZXJwcmV0ZXI7Ci0gICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2lu
ID0gbV9jb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCk7Ci0gICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IG1fYmFzaWNCbG9ja3Muc2l6ZSgpOyBpKyspIHsKLSAgICAgICAgQnl0ZWNv
ZGVCYXNpY0Jsb2NrKiBibG9jayA9IG1fYmFzaWNCbG9ja3NbaV0uZ2V0KCk7Ci0gICAgICAgIGRh
dGFMb2dGKCJcbkJ5dGVjb2RlIGJhc2ljIGJsb2NrICV1OiAlcCAob2Zmc2V0OiAldSwgbGVuZ3Ro
OiAldSlcbiIsIGksIGJsb2NrLCBibG9jay0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKSwgYmxvY2st
PnRvdGFsQnl0ZWNvZGVMZW5ndGgoKSk7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBtX2dy
YXBoLmNvZGVCbG9jaygpOworICAgIGRhdGFMb2coIlxuRHVtcGluZyBieXRlY29kZSBsaXZlbmVz
cyBmb3IgIiwgKmNvZGVCbG9jaywgIjpcbiIpOworICAgIEludGVycHJldGVyKiBpbnRlcnByZXRl
ciA9IGNvZGVCbG9jay0+dm0oKS0+aW50ZXJwcmV0ZXI7CisgICAgSW5zdHJ1Y3Rpb24qIGluc3Ry
dWN0aW9uc0JlZ2luID0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpOworICAgIHVu
c2lnbmVkIGkgPSAwOworICAgIGZvciAoQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jayA6IG1fZ3Jh
cGgpIHsKKyAgICAgICAgZGF0YUxvZ0YoIlxuQnl0ZWNvZGUgYmFzaWMgYmxvY2sgJXU6ICVwIChv
ZmZzZXQ6ICV1LCBsZW5ndGg6ICV1KVxuIiwgaSsrLCBibG9jaywgYmxvY2stPmxlYWRlckJ5dGVj
b2RlT2Zmc2V0KCksIGJsb2NrLT50b3RhbEJ5dGVjb2RlTGVuZ3RoKCkpOwogICAgICAgICBkYXRh
TG9nRigiU3VjY2Vzc29yczogIik7CiAgICAgICAgIGZvciAodW5zaWduZWQgaiA9IDA7IGogPCBi
bG9jay0+c3VjY2Vzc29ycygpLnNpemUoKTsgaisrKSB7CiAgICAgICAgICAgICBCeXRlY29kZUJh
c2ljQmxvY2sqIHN1Y2Nlc3NvciA9IGJsb2NrLT5zdWNjZXNzb3JzKClbal07CkBAIC0zMjgsNyAr
MTk2LDcgQEAgdm9pZCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmR1bXBSZXN1bHRzKCkKICAg
ICAgICAgICAgICAgICAgICAgZGF0YUxvZ0YoIiV1ICIsIGopOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgZGF0YUxvZ0YoIlxuIik7Ci0gICAgICAgICAgICBtX2NvZGVCbG9jay0+ZHVtcEJ5
dGVjb2RlKFdURjo6ZGF0YUZpbGUoKSwgbV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpLT5nbG9i
YWxFeGVjKCksIGluc3RydWN0aW9uc0JlZ2luLCBjdXJyZW50SW5zdHJ1Y3Rpb24pOworICAgICAg
ICAgICAgY29kZUJsb2NrLT5kdW1wQnl0ZWNvZGUoV1RGOjpkYXRhRmlsZSgpLCBjb2RlQmxvY2st
Pmdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVjKCksIGluc3RydWN0aW9uc0JlZ2luLCBjdXJyZW50
SW5zdHJ1Y3Rpb24pOwogCiAgICAgICAgICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGludGVycHJl
dGVyLT5nZXRPcGNvZGVJRChpbnN0cnVjdGlvbnNCZWdpbltieXRlY29kZU9mZnNldF0udS5vcGNv
ZGUpOwogICAgICAgICAgICAgdW5zaWduZWQgb3Bjb2RlTGVuZ3RoID0gb3Bjb2RlTGVuZ3Roc1tv
cGNvZGVJRF07CkBAIC0zNDcsOCArMjE1LDYgQEAgdm9pZCBCeXRlY29kZUxpdmVuZXNzQW5hbHlz
aXM6OmR1bXBSZXN1bHRzKCkKIAogdm9pZCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1
dGUoKQogewotICAgIGNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzKG1fY29kZUJsb2NrLCBtX2Jh
c2ljQmxvY2tzKTsKLSAgICBBU1NFUlQobV9iYXNpY0Jsb2Nrcy5zaXplKCkpOwogICAgIHJ1bkxp
dmVuZXNzRml4cG9pbnQoKTsKIAogICAgIGlmIChPcHRpb25zOjpkdW1wQnl0ZWNvZGVMaXZlbmVz
c1Jlc3VsdHMoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuaAppbmRleCBlY2UxNmYyMWYwMTUxMGE2NDI3ZmQ4
NDExNDA3OWJlZDg3MGMwODc1Li5hNDg1Zjg5NWRlZGY2OTlkYzZiYjI3ZDU0OWRjMTVkOGY1ZDdj
ODAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVM
aXZlbmVzc0FuYWx5c2lzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5oCkBAIC0yMywxMCArMjMsMTEgQEAKICAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIEJ5dGVjb2RlTGl2ZW5lc3NB
bmFseXNpc19oCi0jZGVmaW5lIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc19oCisjcHJhZ21hIG9u
Y2UKIAogI2luY2x1ZGUgIkJ5dGVjb2RlQmFzaWNCbG9jay5oIgorI2luY2x1ZGUgIkJ5dGVjb2Rl
R3JhcGguaCIKKyNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlIDx3dGYvRmFzdEJpdFZl
Y3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgpAQCAtMzQsMTMgKzM1LDI3IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgQnl0ZWNvZGVL
aWxsczsKLWNsYXNzIENvZGVCbG9jazsKIGNsYXNzIEZ1bGxCeXRlY29kZUxpdmVuZXNzOwogCi1j
bGFzcyBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMgewordGVtcGxhdGU8dHlwZW5hbWUgRGVyaXZl
ZEFuYWx5c2lzPgorY2xhc3MgQnl0ZWNvZGVMaXZlbmVzc0xvY2FsUHJvcGFnYXRpb24geworcHJv
dGVjdGVkOgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEdyYXBoLCB0eXBlbmFtZSBVc2VGdW5jdG9y
LCB0eXBlbmFtZSBEZWZGdW5jdG9yPiB2b2lkIHN0ZXBPdmVySW5zdHJ1Y3Rpb24oR3JhcGgmLCB1
bnNpZ25lZCBieXRlY29kZU9mZnNldCwgRmFzdEJpdFZlY3RvciYgb3V0LCBjb25zdCBVc2VGdW5j
dG9yJiwgY29uc3QgRGVmRnVuY3RvciYpOworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgR3JhcGg+
IHZvaWQgc3RlcE92ZXJJbnN0cnVjdGlvbihHcmFwaCYsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0
LCBGYXN0Qml0VmVjdG9yJiBvdXQpOworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgR3JhcGg+IGJv
b2wgY29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCeXRlY29kZU9mZnNldChHcmFwaCYsIEJ5dGVjb2Rl
QmFzaWNCbG9jayosIHVuc2lnbmVkIHRhcmdldE9mZnNldCwgRmFzdEJpdFZlY3RvciYgcmVzdWx0
KTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEdyYXBoPiBib29sIGNvbXB1dGVMb2NhbExpdmVu
ZXNzRm9yQmxvY2soR3JhcGgmLCBCeXRlY29kZUJhc2ljQmxvY2sqKTsKKworICAgIHRlbXBsYXRl
PHR5cGVuYW1lIEdyYXBoPiBGYXN0Qml0VmVjdG9yIGdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVP
ZmZzZXQoR3JhcGgmLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCk7Cit9OworCitjbGFzcyBCeXRl
Y29kZUxpdmVuZXNzQW5hbHlzaXMgOiBwcml2YXRlIEJ5dGVjb2RlTGl2ZW5lc3NMb2NhbFByb3Bh
Z2F0aW9uPEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcz4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNp
cyk7CiBwdWJsaWM6CisgICAgZnJpZW5kIGNsYXNzIEJ5dGVjb2RlTGl2ZW5lc3NMb2NhbFByb3Bh
Z2F0aW9uPEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcz47CiAgICAgQnl0ZWNvZGVMaXZlbmVzc0Fu
YWx5c2lzKENvZGVCbG9jayopOwogICAgIAogICAgIGJvb2wgb3BlcmFuZElzTGl2ZUF0Qnl0ZWNv
ZGVPZmZzZXQoaW50IG9wZXJhbmQsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KTsKQEAgLTU2LDE0
ICs3MSwxNSBAQCBjbGFzcyBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMgewogCiAgICAgdm9pZCBn
ZXRMaXZlbmVzc0luZm9BdEJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBG
YXN0Qml0VmVjdG9yJik7CiAKLSAgICBDb2RlQmxvY2sqIG1fY29kZUJsb2NrOwotICAgIFZlY3Rv
cjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4gbV9iYXNpY0Jsb2NrczsKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVP
ZmZzZXQoQ29kZUJsb2NrKiwgT3Bjb2RlSUQsIEluc3RydWN0aW9uKiwgRmFzdEJpdFZlY3RvciYs
IGNvbnN0IEZ1bmN0b3ImKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB2b2lkIGNv
bXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiwgT3Bjb2RlSUQsIEluc3RydWN0
aW9uKiwgRmFzdEJpdFZlY3RvciYsIGNvbnN0IEZ1bmN0b3ImKTsKKworICAgIEJ5dGVjb2RlR3Jh
cGg8Q29kZUJsb2NrPiBtX2dyYXBoOwogfTsKIAogaW5saW5lIGJvb2wgb3BlcmFuZElzQWx3YXlz
TGl2ZShpbnQgb3BlcmFuZCk7CiBpbmxpbmUgYm9vbCBvcGVyYW5kVGhhdElzTm90QWx3YXlzTGl2
ZUlzTGl2ZShjb25zdCBGYXN0Qml0VmVjdG9yJiBvdXQsIGludCBvcGVyYW5kKTsKIGlubGluZSBi
b29sIG9wZXJhbmRJc0xpdmUoY29uc3QgRmFzdEJpdFZlY3RvciYgb3V0LCBpbnQgb3BlcmFuZCk7
CitpbmxpbmUgYm9vbCBpc1ZhbGlkUmVnaXN0ZXJGb3JMaXZlbmVzcyhpbnQgb3BlcmFuZCk7CiAK
IH0gLy8gbmFtZXNwYWNlIEpTQwotCi0jZW5kaWYgLy8gQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lz
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxp
dmVuZXNzQW5hbHlzaXNJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzSW5saW5lcy5oCmluZGV4IDliNWM3NTVmY2I2Y2Q1MTgw
NTE0NTAwNzg5MjJhYzRkNmQ0ZDIzOGYuLjIyNzAyYzYxNzZiOWIzYTc1YjlmNjM1YzBkOTk2ZjE4
NjhkZGUyNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZUxpdmVuZXNzQW5hbHlzaXNJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGluZXMuaApAQCAtMjYsOCArMjYs
MTAgQEAKICNpZm5kZWYgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzSW5saW5lc19oCiAjZGVmaW5l
IEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGluZXNfaAogCisjaW5jbHVkZSAiQnl0ZWNvZGVH
cmFwaC5oIgogI2luY2x1ZGUgIkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5oIgogI2luY2x1ZGUg
IkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiT3BlcmF0
aW9ucy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTUwLDYgKzUyLDEyMiBAQCBpbmxpbmUgYm9v
bCBvcGVyYW5kSXNMaXZlKGNvbnN0IEZhc3RCaXRWZWN0b3ImIG91dCwgaW50IG9wZXJhbmQpCiAg
ICAgcmV0dXJuIG9wZXJhbmRJc0Fsd2F5c0xpdmUob3BlcmFuZCkgfHwgb3BlcmFuZFRoYXRJc05v
dEFsd2F5c0xpdmVJc0xpdmUob3V0LCBvcGVyYW5kKTsKIH0KIAoraW5saW5lIGJvb2wgaXNWYWxp
ZFJlZ2lzdGVyRm9yTGl2ZW5lc3MoaW50IG9wZXJhbmQpCit7CisgICAgVmlydHVhbFJlZ2lzdGVy
IHZpcnR1YWxSZWcob3BlcmFuZCk7CisgICAgaWYgKHZpcnR1YWxSZWcuaXNDb25zdGFudCgpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHZpcnR1YWxSZWcuaXNMb2NhbCgpOwor
fQorCisvLyBTaW1wbGlmaWVkIGludGVyZmFjZSB0byBieXRlY29kZSB1c2UvZGVmLCB3aGljaCBk
ZXRlcm1pbmVzIGRlZnMgZmlyc3QgYW5kIHRoZW4gdXNlcywgYW5kIGluY2x1ZGVzCisvLyBleGNl
cHRpb24gaGFuZGxlcnMgaW4gdGhlIHVzZXMuCit0ZW1wbGF0ZTx0eXBlbmFtZSBEZXJpdmVkQW5h
bHlzaXM+Cit0ZW1wbGF0ZTx0eXBlbmFtZSBHcmFwaCwgdHlwZW5hbWUgVXNlRnVuY3RvciwgdHlw
ZW5hbWUgRGVmRnVuY3Rvcj4KK2lubGluZSB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NMb2NhbFByb3Bh
Z2F0aW9uPERlcml2ZWRBbmFseXNpcz46OnN0ZXBPdmVySW5zdHJ1Y3Rpb24oR3JhcGgmIGdyYXBo
LCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgRmFzdEJpdFZlY3RvciYgb3V0LCBjb25zdCBVc2VG
dW5jdG9yJiB1c2UsIGNvbnN0IERlZkZ1bmN0b3ImIGRlZikKK3sKKyAgICAvLyBUaGlzIGFic3Ry
YWN0bHkgZXhlY3V0ZSB0aGUgaW5zdHJ1Y3Rpb24gaW4gcmV2ZXJzZS4gSW5zdHJ1Y3Rpb25zIGxv
Z2ljYWxseSBmaXJzdCB1c2Ugb3BlcmFuZHMgYW5kCisgICAgLy8gdGhlbiBkZWZpbmUgb3BlcmFu
ZHMuIFRoaXMgbG9naWNhbCBvcmRlcmluZyBpcyBuZWNlc3NhcnkgZm9yIG9wZXJhdGlvbnMgdGhh
dCB1c2UgYW5kIGRlZiB0aGUgc2FtZQorICAgIC8vIG9wZXJhbmQsIGxpa2U6CisgICAgLy8KKyAg
ICAvLyAgICAgb3BfYWRkIGxvYzEsIGxvYzEsIGxvYzIKKyAgICAvLworICAgIC8vIFRoZSB1c2Ug
b2YgbG9jMSBoYXBwZW5zIGJlZm9yZSB0aGUgZGVmIG9mIGxvYzEuIFRoYXQncyBhIHNlbWFudGlj
IHJlcXVpcmVtZW50IHNpbmNlIHRoZSBhZGQKKyAgICAvLyBvcGVyYXRpb24gY2Fubm90IHRyYXZl
bCBmb3J3YXJkIGluIHRpbWUgdG8gcmVhZCB0aGUgdmFsdWUgdGhhdCBpdCB3aWxsIHByb2R1Y2Ug
YWZ0ZXIgcmVhZGluZyB0aGF0CisgICAgLy8gdmFsdWUuIFNpbmNlIHdlIGFyZSBleGVjdXRpbmcg
aW4gcmV2ZXJzZSwgdGhpcyBtZWFucyB0aGF0IHdlIG11c3QgZG8gZGVmcyBiZWZvcmUgdXNlcyAo
cmV2ZXJzZSBvZgorICAgIC8vIHVzZXMgYmVmb3JlIGRlZnMpLgorICAgIC8vCisgICAgLy8gU2lu
Y2UgdGhpcyBpcyBhIGxpdmVuZXNzIGFuYWx5c2lzLCB0aGlzIG9yZGVyaW5nIGVuZHMgdXAgYmVp
bmcgcGFydGljdWxhcmx5IGltcG9ydGFudDogaWYgd2UgZGlkCisgICAgLy8gdXNlcyBiZWZvcmUg
ZGVmcywgdGhlbiB0aGUgYWRkIG9wZXJhdGlvbiBhYm92ZSB3b3VsZCBhcHBlYXIgdG8gbm90IGhh
dmUgbG9jMSBsaXZlLCBzaW5jZSB3ZSdkCisgICAgLy8gZmlyc3QgYWRkIGl0IHRvIHRoZSBvdXQg
c2V0ICh0aGUgdXNlKSwgYW5kIHRoZW4gd2UnZCByZW1vdmUgaXQgKHRoZSBkZWYpLgorCisgICAg
YXV0byogY29kZUJsb2NrID0gZ3JhcGguY29kZUJsb2NrKCk7CisgICAgSW50ZXJwcmV0ZXIqIGlu
dGVycHJldGVyID0gY29kZUJsb2NrLT52bSgpLT5pbnRlcnByZXRlcjsKKyAgICBhdXRvKiBpbnN0
cnVjdGlvbnNCZWdpbiA9IGdyYXBoLmluc3RydWN0aW9ucygpLmJlZ2luKCk7CisgICAgYXV0byog
aW5zdHJ1Y3Rpb24gPSAmaW5zdHJ1Y3Rpb25zQmVnaW5bYnl0ZWNvZGVPZmZzZXRdOworICAgIE9w
Y29kZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKCppbnN0cnVjdGlvbik7
CisKKyAgICBzdGF0aWNfY2FzdDxEZXJpdmVkQW5hbHlzaXMqPih0aGlzKS0+Y29tcHV0ZURlZnNG
b3JCeXRlY29kZU9mZnNldCgKKyAgICAgICAgY29kZUJsb2NrLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rp
b24sIG91dCwKKyAgICAgICAgWyZdICh0eXBlbmFtZSBHcmFwaDo6Q29kZUJsb2NrKiwgdHlwZW5h
bWUgR3JhcGg6Okluc3RydWN0aW9uKiwgT3Bjb2RlSUQsIGludCBvcGVyYW5kKSB7CisgICAgICAg
ICAgICBpZiAoaXNWYWxpZFJlZ2lzdGVyRm9yTGl2ZW5lc3Mob3BlcmFuZCkpCisgICAgICAgICAg
ICAgICAgZGVmKFZpcnR1YWxSZWdpc3RlcihvcGVyYW5kKS50b0xvY2FsKCkpOworICAgICAgICB9
KTsKKworICAgIHN0YXRpY19jYXN0PERlcml2ZWRBbmFseXNpcyo+KHRoaXMpLT5jb21wdXRlVXNl
c0ZvckJ5dGVjb2RlT2Zmc2V0KAorICAgICAgICBjb2RlQmxvY2ssIG9wY29kZUlELCBpbnN0cnVj
dGlvbiwgb3V0LAorICAgICAgICBbJl0gKHR5cGVuYW1lIEdyYXBoOjpDb2RlQmxvY2sqLCB0eXBl
bmFtZSBHcmFwaDo6SW5zdHJ1Y3Rpb24qLCBPcGNvZGVJRCwgaW50IG9wZXJhbmQpIHsKKyAgICAg
ICAgICAgIGlmIChpc1ZhbGlkUmVnaXN0ZXJGb3JMaXZlbmVzcyhvcGVyYW5kKSkKKyAgICAgICAg
ICAgICAgICB1c2UoVmlydHVhbFJlZ2lzdGVyKG9wZXJhbmQpLnRvTG9jYWwoKSk7CisgICAgICAg
IH0pOworCisgICAgLy8gSWYgd2UgaGF2ZSBhbiBleGNlcHRpb24gaGFuZGxlciwgd2Ugd2FudCB0
aGUgbGl2ZS1pbiB2YXJpYWJsZXMgb2YgdGhlIAorICAgIC8vIGV4Y2VwdGlvbiBoYW5kbGVyIGJs
b2NrIHRvIGJlIGluY2x1ZGVkIGluIHRoZSBsaXZlLWluIG9mIHRoaXMgcGFydGljdWxhciBieXRl
Y29kZS4KKyAgICBpZiAoYXV0byogaGFuZGxlciA9IGNvZGVCbG9jay0+aGFuZGxlckZvckJ5dGVj
b2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KSkgeworICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2sq
IGhhbmRsZXJCbG9jayA9IGdyYXBoLmZpbmRCYXNpY0Jsb2NrV2l0aExlYWRlck9mZnNldChoYW5k
bGVyLT50YXJnZXQpOworICAgICAgICBBU1NFUlQoaGFuZGxlckJsb2NrKTsKKyAgICAgICAgaGFu
ZGxlckJsb2NrLT5pbigpLmZvckVhY2hTZXRCaXQodXNlKTsKKyAgICB9Cit9CisKK3RlbXBsYXRl
PHR5cGVuYW1lIERlcml2ZWRBbmFseXNpcz4KK3RlbXBsYXRlPHR5cGVuYW1lIEdyYXBoPgoraW5s
aW5lIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0xvY2FsUHJvcGFnYXRpb248RGVyaXZlZEFuYWx5c2lz
Pjo6c3RlcE92ZXJJbnN0cnVjdGlvbihHcmFwaCYgZ3JhcGgsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zm
c2V0LCBGYXN0Qml0VmVjdG9yJiBvdXQpCit7CisgICAgc3RlcE92ZXJJbnN0cnVjdGlvbigKKyAg
ICAgICAgZ3JhcGgsIGJ5dGVjb2RlT2Zmc2V0LCBvdXQsCisgICAgICAgIFsmXSAodW5zaWduZWQg
Yml0SW5kZXgpIHsKKyAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIHVzZSBmdW5jdG9yLCBzbyB3
ZSBzZXQgdGhlIGJpdC4KKyAgICAgICAgICAgIG91dC5zZXQoYml0SW5kZXgpOworICAgICAgICB9
LAorICAgICAgICBbJl0gKHVuc2lnbmVkIGJpdEluZGV4KSB7CisgICAgICAgICAgICAvLyBUaGlz
IGlzIHRoZSBkZWYgZnVuY3Rvciwgc28gd2UgY2xlYXIgdGhlIGJpdC4KKyAgICAgICAgICAgIG91
dC5jbGVhcihiaXRJbmRleCk7CisgICAgICAgIH0pOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBE
ZXJpdmVkQW5hbHlzaXM+Cit0ZW1wbGF0ZTx0eXBlbmFtZSBHcmFwaD4KK2lubGluZSBib29sIEJ5
dGVjb2RlTGl2ZW5lc3NMb2NhbFByb3BhZ2F0aW9uPERlcml2ZWRBbmFseXNpcz46OmNvbXB1dGVM
b2NhbExpdmVuZXNzRm9yQnl0ZWNvZGVPZmZzZXQoR3JhcGgmIGdyYXBoLCBCeXRlY29kZUJhc2lj
QmxvY2sqIGJsb2NrLCB1bnNpZ25lZCB0YXJnZXRPZmZzZXQsIEZhc3RCaXRWZWN0b3ImIHJlc3Vs
dCkKK3sKKyAgICBBU1NFUlQoIWJsb2NrLT5pc0V4aXRCbG9jaygpKTsKKyAgICBBU1NFUlQoIWJs
b2NrLT5pc0VudHJ5QmxvY2soKSk7CisKKyAgICBGYXN0Qml0VmVjdG9yIG91dCA9IGJsb2NrLT5v
dXQoKTsKKworICAgIGZvciAoaW50IGkgPSBibG9jay0+Ynl0ZWNvZGVPZmZzZXRzKCkuc2l6ZSgp
IC0gMTsgaSA+PSAwOyBpLS0pIHsKKyAgICAgICAgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQgPSBi
bG9jay0+Ynl0ZWNvZGVPZmZzZXRzKClbaV07CisgICAgICAgIGlmICh0YXJnZXRPZmZzZXQgPiBi
eXRlY29kZU9mZnNldCkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBzdGVwT3Zlckluc3Ry
dWN0aW9uKGdyYXBoLCBieXRlY29kZU9mZnNldCwgb3V0KTsKKyAgICB9CisKKyAgICByZXR1cm4g
cmVzdWx0LnNldEFuZENoZWNrKG91dCk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIERlcml2ZWRB
bmFseXNpcz4KK3RlbXBsYXRlPHR5cGVuYW1lIEdyYXBoPgoraW5saW5lIGJvb2wgQnl0ZWNvZGVM
aXZlbmVzc0xvY2FsUHJvcGFnYXRpb248RGVyaXZlZEFuYWx5c2lzPjo6Y29tcHV0ZUxvY2FsTGl2
ZW5lc3NGb3JCbG9jayhHcmFwaCYgZ3JhcGgsIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2spCit7
CisgICAgaWYgKGJsb2NrLT5pc0V4aXRCbG9jaygpIHx8IGJsb2NrLT5pc0VudHJ5QmxvY2soKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBjb21wdXRlTG9jYWxMaXZlbmVzc0Zv
ckJ5dGVjb2RlT2Zmc2V0KGdyYXBoLCBibG9jaywgYmxvY2stPmxlYWRlckJ5dGVjb2RlT2Zmc2V0
KCksIGJsb2NrLT5pbigpKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgRGVyaXZlZEFuYWx5c2lz
PgordGVtcGxhdGU8dHlwZW5hbWUgR3JhcGg+CitpbmxpbmUgRmFzdEJpdFZlY3RvciBCeXRlY29k
ZUxpdmVuZXNzTG9jYWxQcm9wYWdhdGlvbjxEZXJpdmVkQW5hbHlzaXM+OjpnZXRMaXZlbmVzc0lu
Zm9BdEJ5dGVjb2RlT2Zmc2V0KEdyYXBoJiBncmFwaCwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQp
Cit7CisgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jayA9IGdyYXBoLmZpbmRCYXNpY0Jsb2Nr
Rm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpOworICAgIEFTU0VSVChibG9jayk7Cisg
ICAgQVNTRVJUKCFibG9jay0+aXNFbnRyeUJsb2NrKCkpOworICAgIEFTU0VSVCghYmxvY2stPmlz
RXhpdEJsb2NrKCkpOworICAgIEZhc3RCaXRWZWN0b3Igb3V0OworICAgIG91dC5yZXNpemUoYmxv
Y2stPm91dCgpLm51bUJpdHMoKSk7CisgICAgY29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCeXRlY29k
ZU9mZnNldChncmFwaCwgYmxvY2ssIGJ5dGVjb2RlT2Zmc2V0LCBvdXQpOworICAgIHJldHVybiBv
dXQ7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gQnl0ZWNvZGVMaXZlbmVz
c0FuYWx5c2lzSW5saW5lc19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVSZXdyaXRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVSZXdyaXRlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2Y1NzcyYmZjYWJjZGE3YWI0YjNi
YTFiNTA5ZWEyMDIxYmUxODE0ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9CeXRlY29kZVJld3JpdGVyLmNwcApAQCAtMCwwICsxLDgzIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE2IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNv
bT4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkJ5dGVjb2RlUmV3
cml0ZXIuaCIKKworI2luY2x1ZGUgPHd0Zi9CdWJibGVTb3J0Lmg+CisKK25hbWVzcGFjZSBKU0Mg
eworCit2b2lkIEJ5dGVjb2RlUmV3cml0ZXI6OmFwcGx5TW9kaWZpY2F0aW9uKCkKK3sKKyAgICBm
b3IgKHNpemVfdCBpbnNlcnRpb25JbmRleCA9IG1faW5zZXJ0aW9ucy5zaXplKCk7IGluc2VydGlv
bkluZGV4LS07KSB7CisgICAgICAgIEluc2VydGlvbiYgaW5zZXJ0aW9uID0gbV9pbnNlcnRpb25z
W2luc2VydGlvbkluZGV4XTsKKyAgICAgICAgaWYgKGluc2VydGlvbi5lbGVtZW50KCkudHlwZSA9
PSBDb21tYW5kOjpUeXBlOjpSZW1vdmUpCisgICAgICAgICAgICBtX2dyYXBoLmluc3RydWN0aW9u
cygpLnJlbW92ZShpbnNlcnRpb24uaW5kZXgoKSwgaW5zZXJ0aW9uLmVsZW1lbnQoKS5sZW5ndGgp
OworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGlmIChpbnNlcnRpb24uZWxlbWVudCgpLmJ5
dGVjb2RlVHlwZSA9PSBDb21tYW5kOjpCeXRlY29kZVR5cGU6OkJyYW5jaCkKKyAgICAgICAgICAg
ICAgICBhZGp1c3RKdW1wSW5zZXJ0aW9uKGFkanVzdE9mZnNldFdpdGhJbnNlcnRpb25zKDAsIGlu
c2VydGlvbi5pbmRleCgpLCBtX2luc2VydGlvbnMuYmVnaW4oKSwgbV9pbnNlcnRpb25zLmJlZ2lu
KCkgKyBpbnNlcnRpb25JbmRleCksIGluc2VydGlvbik7CisgICAgICAgICAgICBtX2dyYXBoLmlu
c3RydWN0aW9ucygpLmluc2VydChpbnNlcnRpb24uaW5kZXgoKSwgaW5zZXJ0aW9uLmVsZW1lbnQo
KS5ieXRlY29kZS5pbnN0cnVjdGlvbnMsIG9wY29kZUxlbmd0aChpbnNlcnRpb24uZWxlbWVudCgp
LmJ5dGVjb2RlLmluc3RydWN0aW9uc1swXS51Lm9wY29kZSkpOworICAgICAgICB9CisgICAgfQor
ICAgIG1faW5zZXJ0aW9ucy5jbGVhcigpOworfQorCit2b2lkIEJ5dGVjb2RlUmV3cml0ZXI6OmV4
ZWN1dGUoKQoreworICAgIFdURjo6YnViYmxlU29ydChtX2luc2VydGlvbnMuYmVnaW4oKSwgbV9p
bnNlcnRpb25zLmVuZCgpLCBbXSAoY29uc3QgSW5zZXJ0aW9uJiBsaHMsIGNvbnN0IEluc2VydGlv
biYgcmhzKSB7CisgICAgICAgIGlmIChsaHMuaW5kZXgoKSA9PSByaHMuaW5kZXgoKSkgeworICAg
ICAgICAgICAgaWYgKGxocy5lbGVtZW50KCkudHlwZSA9PSByaHMuZWxlbWVudCgpLnR5cGUpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIGxocy5lbGVtZW50KCkucG9zaXRpb24gPCByaHMuZWxlbWVu
dCgpLnBvc2l0aW9uOworICAgICAgICAgICAgLy8gV2Ugd291bGQgbGlrZSB0byBwZXJmb3JtIHJl
bW92ZSBvcGVyYXRpb24gYmVmb3JlIGluc2VydGlvbi4KKyAgICAgICAgICAgIHJldHVybiBsaHMu
ZWxlbWVudCgpLnR5cGUgPCByaHMuZWxlbWVudCgpLnR5cGU7CisgICAgICAgIH0KKyAgICAgICAg
cmV0dXJuIGxocyA8IHJoczsKKyAgICB9KTsKKworICAgIC8vIENvbnZlcnQgdG8gYWJzb2x1dGUg
ZmluYWwgb2Zmc2V0cy4KKyAgICBmb3IgKFN3aXRjaEVudHJ5JiBlbnRyeSA6IG1faW5zZXJ0ZWRT
d2l0Y2hlcykgeworICAgICAgICBVbmxpbmtlZFNpbXBsZUp1bXBUYWJsZSYgdGFibGUgPSBtX2dy
YXBoLmNvZGVCbG9jaygpLT5zd2l0Y2hKdW1wVGFibGUoZW50cnkudGFibGVJbmRleCk7CisgICAg
ICAgIGVudHJ5LmRlZmF1bHRPZmZzZXQgPSBhZGp1c3RPZmZzZXQoMCwgZW50cnkuZGVmYXVsdE9m
ZnNldCk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IHRhYmxlLmJyYW5jaE9mZnNldHMuc2l6
ZSgpOyBpLS07KQorICAgICAgICAgICAgdGFibGUuYnJhbmNoT2Zmc2V0c1tpXSA9IGFkanVzdE9m
ZnNldCgwLCB0YWJsZS5icmFuY2hPZmZzZXRzW2ldKTsKKyAgICB9CisKKyAgICBVbmxpbmtlZENv
ZGVCbG9jayogY29kZUJsb2NrID0gbV9ncmFwaC5jb2RlQmxvY2soKTsKKyAgICBjb2RlQmxvY2st
PmFwcGx5TW9kaWZpY2F0aW9uKCp0aGlzKTsKK30KKwordm9pZCBCeXRlY29kZVJld3JpdGVyOjph
ZGp1c3RKdW1wSW5zZXJ0aW9uKHVuc2lnbmVkIGZpbmFsT2Zmc2V0LCBJbnNlcnRpb24mIGluc2Vy
dGlvbikKK3sKKyAgICBTd2l0Y2hFbnRyeSYgZW50cnkgPSBtX2luc2VydGVkU3dpdGNoZXNbaW5z
ZXJ0aW9uLmVsZW1lbnQoKS5qdW1wRW50cnldOworICAgIFVubGlua2VkU2ltcGxlSnVtcFRhYmxl
JiB0YWJsZSA9IG1fZ3JhcGguY29kZUJsb2NrKCktPnN3aXRjaEp1bXBUYWJsZShlbnRyeS50YWJs
ZUluZGV4KTsKKworICAgIGZvciAodW5zaWduZWQgaSA9IHRhYmxlLmJyYW5jaE9mZnNldHMuc2l6
ZSgpOyBpLS07KQorICAgICAgICB0YWJsZS5icmFuY2hPZmZzZXRzW2ldID0gdGFibGUuYnJhbmNo
T2Zmc2V0c1tpXSAtIHN0YXRpY19jYXN0PGludD4oZmluYWxPZmZzZXQpOworCisgICAgaW5zZXJ0
aW9uLmVsZW1lbnQoKS5ieXRlY29kZS5pbnN0cnVjdGlvbnNbMl0gPSBzdGF0aWNfY2FzdDxpbnQ+
KGVudHJ5LmRlZmF1bHRPZmZzZXQpIC0gc3RhdGljX2Nhc3Q8aW50PihmaW5hbE9mZnNldCk7Cit9
CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlUmV3cml0ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZVJld3JpdGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmI4MzIwYjQ5N2I4NTAyMWI4NzQz
YmFhOTEwYWE5YTdjODA2YWVkYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9CeXRlY29kZVJld3JpdGVyLmgKQEAgLTAsMCArMSwxNjggQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTYgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29t
PgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkJ5dGVjb2RlR3JhcGguaCIK
KyNpbmNsdWRlICJCeXRlY29kZXMuaCIKKyNpbmNsdWRlICJPcGNvZGUuaCIKKyNpbmNsdWRlICJV
bmxpbmtlZENvZGVCbG9jay5oIgorI2luY2x1ZGUgPHd0Zi9JbnNlcnRpb24uaD4KKworbmFtZXNw
YWNlIEpTQyB7CisKKy8vIFdlIHVzZSB0aGUgb3JpZ2luYWwgYnl0ZWNvZGUgb2Zmc2V0cyBhcyBs
YWJlbHMuCisvLyBXZSB1c2UgdGhlIGxhYmVscyB0byByZXByZXNlbnRzIHRoZSBwb3NpdGlvbiB0
aGUgbmV3IGJ5dGVjb2RlcyBpbnNlcnRlZCBhbmQgdGhlIHRhcmdldCB3ZSBqdW1wIHRvLgorY2xh
c3MgQnl0ZWNvZGVSZXdyaXRlciB7CitwdWJsaWM6CisgICAgZW51bSBjbGFzcyBQb3NpdGlvbiA6
IGludDhfdCB7IEJlZm9yZSA9IC0xLCBCYXNlUG9pbnQgPSAwLCBBZnRlciA9IDEgfTsKKworcHJp
dmF0ZToKKyAgICBzdHJ1Y3QgSW5zZXJ0ZWRCeXRlY29kZSB7CisgICAgICAgIFVubGlua2VkSW5z
dHJ1Y3Rpb24gaW5zdHJ1Y3Rpb25zW01BWF9PUENPREVfTEVOR1RIX09GX0JZVEVDT0RFXTsKKyAg
ICB9OworCisgICAgc3RydWN0IENvbW1hbmQgeworICAgICAgICBlbnVtIGNsYXNzIFR5cGUgOiB1
aW50OF90IHsgSW5zZXJ0ID0gMCwgUmVtb3ZlID0gMSwgfTsKKyAgICAgICAgZW51bSBjbGFzcyBC
eXRlY29kZVR5cGUgOiB1aW50OF90IHsgTm9ybWFsLCBCcmFuY2ggfTsKKworICAgICAgICBUeXBl
IHR5cGU7CisgICAgICAgIFBvc2l0aW9uIHBvc2l0aW9uOworICAgICAgICBCeXRlY29kZVR5cGUg
Ynl0ZWNvZGVUeXBlOworICAgICAgICB1bnNpZ25lZCBqdW1wRW50cnk7CisgICAgICAgIHNpemVf
dCBsZW5ndGg7CisgICAgICAgIEluc2VydGVkQnl0ZWNvZGUgYnl0ZWNvZGU7CisgICAgfTsKKwor
ICAgIHR5cGVkZWYgV1RGOjpJbnNlcnRpb248Q29tbWFuZD4gSW5zZXJ0aW9uOworCisgICAgc3Ry
dWN0IFN3aXRjaEVudHJ5IHsKKyAgICAgICAgc2l6ZV90IHRhYmxlSW5kZXg7CisgICAgICAgIHVu
c2lnbmVkIGRlZmF1bHRPZmZzZXQ7CisgICAgfTsKKworcHVibGljOgorICAgIEJ5dGVjb2RlUmV3
cml0ZXIoQnl0ZWNvZGVHcmFwaDxVbmxpbmtlZENvZGVCbG9jaz4mIGdyYXBoKQorICAgICAgICA6
IG1fZ3JhcGgoZ3JhcGgpCisgICAgeworICAgIH0KKworICAgIHRlbXBsYXRlPFBvc2l0aW9uIHBv
c2l0aW9uLCBjbGFzcy4uLiBBcmdzPgorICAgIHZvaWQgaW5zZXJ0KHVuc2lnbmVkIGJ5dGVjb2Rl
T2Zmc2V0LCBPcGNvZGVJRCBvcGNvZGVJRCwgQXJncy4uLiBhcmdzKQorICAgIHsKKyAgICAgICAg
c3RhdGljX2Fzc2VydChwb3NpdGlvbiAhPSBQb3NpdGlvbjo6QmFzZVBvaW50LCAiQmFzZVBvaW50
IGlzIG5vdCBhbGxvd2VkLiIpOworICAgICAgICBpbnNlcnRJbXBsPHBvc2l0aW9uPigwLCBieXRl
Y29kZU9mZnNldCwgb3Bjb2RlSUQsIGFyZ3MuLi4pOworICAgIH0KKworICAgIHZvaWQgcmVtb3Zl
Qnl0ZWNvZGUodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpCisgICAgeworICAgICAgICBtX2luc2Vy
dGlvbnMuYXBwZW5kKEluc2VydGlvbihieXRlY29kZU9mZnNldCwgQ29tbWFuZCB7IENvbW1hbmQ6
OlR5cGU6OlJlbW92ZSwgUG9zaXRpb246OkJhc2VQb2ludCwgQ29tbWFuZDo6Qnl0ZWNvZGVUeXBl
OjpOb3JtYWwsIDAsIG9wY29kZUxlbmd0aChtX2dyYXBoLmluc3RydWN0aW9ucygpW2J5dGVjb2Rl
T2Zmc2V0XS51Lm9wY29kZSksIEluc2VydGVkQnl0ZWNvZGUgeyB9IH0pKTsKKyAgICB9CisKKyAg
ICB2b2lkIGV4ZWN1dGUoKTsKKworICAgIHRlbXBsYXRlPFBvc2l0aW9uIHBvc2l0aW9uPgorICAg
IFVubGlua2VkU2ltcGxlSnVtcFRhYmxlJiBpbnNlcnRTd2l0Y2hJbW1lZGlhdGUodW5zaWduZWQg
Ynl0ZWNvZGVPZmZzZXQsIHVuc2lnbmVkIGRlZmF1bHRPZmZzZXQsIGludCByZWcpCisgICAgewor
ICAgICAgICBTd2l0Y2hFbnRyeSBlbnRyeSB7CisgICAgICAgICAgICBtX2dyYXBoLmNvZGVCbG9j
aygpLT5udW1iZXJPZlN3aXRjaEp1bXBUYWJsZXMoKSwKKyAgICAgICAgICAgIGRlZmF1bHRPZmZz
ZXQsCisgICAgICAgIH07CisgICAgICAgIGF1dG8mIGp1bXBUYWJsZSA9IG1fZ3JhcGguY29kZUJs
b2NrKCktPmFkZFN3aXRjaEp1bXBUYWJsZSgpOworICAgICAgICB1bnNpZ25lZCBqdW1wRW50cnkg
PSBtX2luc2VydGVkU3dpdGNoZXMuc2l6ZSgpOworICAgICAgICBtX2luc2VydGVkU3dpdGNoZXMu
YXBwZW5kKGVudHJ5KTsKKyAgICAgICAgaW5zZXJ0SW1wbDxwb3NpdGlvbj4oanVtcEVudHJ5LCBi
eXRlY29kZU9mZnNldCwgb3Bfc3dpdGNoX2ltbSwgZW50cnkudGFibGVJbmRleCwgZGVmYXVsdE9m
ZnNldCwgcmVnKTsKKyAgICAgICAgcmV0dXJuIGp1bXBUYWJsZTsKKyAgICB9CisKKyAgICBCeXRl
Y29kZUdyYXBoPFVubGlua2VkQ29kZUJsb2NrPiYgZ3JhcGgoKSB7IHJldHVybiBtX2dyYXBoOyB9
CisKKyAgICBpbnQgYWRqdXN0T2Zmc2V0KGludCBieXRlY29kZU9mZnNldCwgaW50IGp1bXBUYXJn
ZXQpCisgICAgeworICAgICAgICByZXR1cm4gYWRqdXN0T2Zmc2V0V2l0aEluc2VydGlvbnMoYnl0
ZWNvZGVPZmZzZXQsIGp1bXBUYXJnZXQsIG1faW5zZXJ0aW9ucy5iZWdpbigpLCBtX2luc2VydGlv
bnMuZW5kKCkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICB0ZW1wbGF0ZTxQb3NpdGlvbiBwb3Np
dGlvbiwgY2xhc3MuLi4gQXJncz4KKyAgICB2b2lkIGluc2VydEltcGwodW5zaWduZWQganVtcEVu
dHJ5LCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgT3Bjb2RlSUQgb3Bjb2RlSUQsIEFyZ3MuLi4g
YXJncykKKyAgICB7CisgICAgICAgIEluc2VydGVkQnl0ZWNvZGUgYnl0ZWNvZGUgPSB7IHsKKyAg
ICAgICAgICAgIFVubGlua2VkSW5zdHJ1Y3Rpb24ob3Bjb2RlSUQpLAorICAgICAgICAgICAgVW5s
aW5rZWRJbnN0cnVjdGlvbihhcmdzKS4uLgorICAgICAgICB9IH07CisgICAgICAgIG1faW5zZXJ0
aW9ucy5hcHBlbmQoSW5zZXJ0aW9uKGJ5dGVjb2RlT2Zmc2V0LCBDb21tYW5kIHsKKyAgICAgICAg
ICAgIENvbW1hbmQ6OlR5cGU6Okluc2VydCwKKyAgICAgICAgICAgIHBvc2l0aW9uLAorICAgICAg
ICAgICAgKGlzQnJhbmNoKG9wY29kZUlEKSA/IENvbW1hbmQ6OkJ5dGVjb2RlVHlwZTo6QnJhbmNo
IDogQ29tbWFuZDo6Qnl0ZWNvZGVUeXBlOjpOb3JtYWwpLAorICAgICAgICAgICAganVtcEVudHJ5
LAorICAgICAgICAgICAgb3Bjb2RlTGVuZ3RoKG9wY29kZUlEKSwKKyAgICAgICAgICAgIGJ5dGVj
b2RlCisgICAgICAgIH0pKTsKKyAgICB9CisKKyAgICBmcmllbmQgY2xhc3MgVW5saW5rZWRDb2Rl
QmxvY2s7CisgICAgdm9pZCBhcHBseU1vZGlmaWNhdGlvbigpOworICAgIHZvaWQgYWRqdXN0SnVt
cEluc2VydGlvbih1bnNpZ25lZCBmaW5hbE9mZnNldCwgSW5zZXJ0aW9uJik7CisKKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBJdGVyYXRvcj4KKyAgICBpbnQgYWRqdXN0T2Zmc2V0V2l0aEluc2VydGlv
bnMoaW50IGJ5dGVjb2RlT2Zmc2V0LCBpbnQganVtcFRhcmdldCwgSXRlcmF0b3IgaW5zZXJ0aW9u
c0JlZ2luLCBJdGVyYXRvciBpbnNlcnRpb25zRW5kKTsKKworICAgIEJ5dGVjb2RlR3JhcGg8VW5s
aW5rZWRDb2RlQmxvY2s+JiBtX2dyYXBoOworICAgIFZlY3RvcjxJbnNlcnRpb24sIDg+IG1faW5z
ZXJ0aW9uczsKKyAgICBWZWN0b3I8U3dpdGNoRW50cnk+IG1faW5zZXJ0ZWRTd2l0Y2hlczsKK307
CisKK3RlbXBsYXRlPHR5cGVuYW1lIEl0ZXJhdG9yPgoraW5saW5lIGludCBCeXRlY29kZVJld3Jp
dGVyOjphZGp1c3RPZmZzZXRXaXRoSW5zZXJ0aW9ucyhpbnQgYnl0ZWNvZGVPZmZzZXQsIGludCBq
dW1wVGFyZ2V0LCBJdGVyYXRvciBpbnNlcnRpb25zQmVnaW4sIEl0ZXJhdG9yIGluc2VydGlvbnNF
bmQpCit7CisgICAgaWYgKGJ5dGVjb2RlT2Zmc2V0IDwganVtcFRhcmdldCkgeworICAgICAgICBh
dXRvIHN0YXJ0ID0gc3RkOjpsb3dlcl9ib3VuZChpbnNlcnRpb25zQmVnaW4sIGluc2VydGlvbnNF
bmQsIGJ5dGVjb2RlT2Zmc2V0LCBbJl0gKGNvbnN0IEluc2VydGlvbiYgaW5zZXJ0aW9uLCBpbnQg
Ynl0ZWNvZGVPZmZzZXQpIHsKKyAgICAgICAgICAgIGlmIChzdGF0aWNfY2FzdDxpbnQ+KGluc2Vy
dGlvbi5pbmRleCgpKSA9PSBieXRlY29kZU9mZnNldCkKKyAgICAgICAgICAgICAgICByZXR1cm4g
aW5zZXJ0aW9uLmVsZW1lbnQoKS5wb3NpdGlvbiA8IFBvc2l0aW9uOjpCYXNlUG9pbnQ7CisgICAg
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihpbnNlcnRpb24uaW5kZXgoKSkgPCBieXRl
Y29kZU9mZnNldDsKKyAgICAgICAgfSk7CisgICAgICAgIGlmIChzdGFydCAhPSBpbnNlcnRpb25z
RW5kKSB7CisgICAgICAgICAgICBhdXRvIGVuZCA9IHN0ZDo6bG93ZXJfYm91bmQoaW5zZXJ0aW9u
c0JlZ2luLCBpbnNlcnRpb25zRW5kLCBqdW1wVGFyZ2V0LCBbJl0gKGNvbnN0IEluc2VydGlvbiYg
aW5zZXJ0aW9uLCBpbnQganVtcFRhcmdldCkgeworICAgICAgICAgICAgICAgIGlmIChzdGF0aWNf
Y2FzdDxpbnQ+KGluc2VydGlvbi5pbmRleCgpKSA9PSBqdW1wVGFyZ2V0KQorICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gaW5zZXJ0aW9uLmVsZW1lbnQoKS5wb3NpdGlvbiA8IFBvc2l0aW9uOjpC
YXNlUG9pbnQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oaW5zZXJ0
aW9uLmluZGV4KCkpIDwganVtcFRhcmdldDsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAg
Zm9yICg7IHN0YXJ0ICE9IGVuZDsgKytzdGFydCkgeworICAgICAgICAgICAgICAgIGlmIChzdGFy
dC0+ZWxlbWVudCgpLnR5cGUgPT0gQ29tbWFuZDo6VHlwZTo6UmVtb3ZlKQorICAgICAgICAgICAg
ICAgICAgICBqdW1wVGFyZ2V0IC09IHN0YXJ0LT5lbGVtZW50KCkubGVuZ3RoOworICAgICAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAganVtcFRhcmdldCArPSBzdGFydC0+ZWxl
bWVudCgpLmxlbmd0aDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4g
anVtcFRhcmdldCAtIGJ5dGVjb2RlT2Zmc2V0OworICAgIH0KKworICAgIGlmIChieXRlY29kZU9m
ZnNldCA9PSBqdW1wVGFyZ2V0KQorICAgICAgICByZXR1cm4gMDsKKworICAgIHJldHVybiAtYWRq
dXN0T2Zmc2V0V2l0aEluc2VydGlvbnMoanVtcFRhcmdldCwgYnl0ZWNvZGVPZmZzZXQsIGluc2Vy
dGlvbnNCZWdpbiwgaW5zZXJ0aW9uc0VuZCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaAppbmRleCA0
MzVmNjEwMTA4MzkxYTg1OWMwYzU1NWU2MTE1Yjk2OTg3ZmFlODhlLi4wMmIxOTU1Yjc0MjRlYzU5
M2I4MTU1ZjhiYzBiODUzZDg4Zjk5OTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaApAQCAtMzEsMTUgKzMxLDkgQEAKIAogbmFtZXNwYWNl
IEpTQyB7CiAKLXRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+Ci12b2lkIGNvbXB1dGVVc2VzRm9y
Qnl0ZWNvZGVPZmZzZXQoCi0gICAgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFzaWNC
bG9jayogYmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBjb25zdCBGdW5jdG9yJiBmdW5j
dG9yKQordGVtcGxhdGU8dHlwZW5hbWUgQmxvY2ssIHR5cGVuYW1lIEZ1bmN0b3IsIHR5cGVuYW1l
IEluc3RydWN0aW9uPgordm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KEJsb2NrKiBj
b2RlQmxvY2ssIE9wY29kZUlEIG9wY29kZUlELCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIGNv
bnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiB7Ci0gICAgSW50ZXJwcmV0ZXIqIGludGVycHJldGVyID0g
Y29kZUJsb2NrLT52bSgpLT5pbnRlcnByZXRlcjsKLSAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rp
b25zQmVnaW4gPSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCk7Ci0gICAgSW5zdHJ1
Y3Rpb24qIGluc3RydWN0aW9uID0gJmluc3RydWN0aW9uc0JlZ2luW2J5dGVjb2RlT2Zmc2V0XTsK
LSAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGludGVycHJldGVyLT5nZXRPcGNvZGVJRChpbnN0cnVj
dGlvbi0+dS5vcGNvZGUpOwotCiAgICAgaWYgKG9wY29kZUlEICE9IG9wX2VudGVyICYmIGNvZGVC
bG9jay0+d2FzQ29tcGlsZWRXaXRoRGVidWdnaW5nT3Bjb2RlcygpICYmIGNvZGVCbG9jay0+c2Nv
cGVSZWdpc3RlcigpLmlzVmFsaWQoKSkKICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3Ry
dWN0aW9uLCBvcGNvZGVJRCwgY29kZUJsb2NrLT5zY29wZVJlZ2lzdGVyKCkub2Zmc2V0KCkpOwog
CkBAIC03Niw4ICs3MCw3IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCgKICAg
ICBjYXNlIG9wX2puZXFfbnVsbDoKICAgICBjYXNlIG9wX2RlYzoKICAgICBjYXNlIG9wX2luYzoK
LSAgICBjYXNlIG9wX2xvZ19zaGFkb3dfY2hpY2tlbl9wcm9sb2d1ZToKLSAgICBjYXNlIG9wX3Jl
c3VtZTogeworICAgIGNhc2Ugb3BfbG9nX3NoYWRvd19jaGlja2VuX3Byb2xvZ3VlOiB7CiAgICAg
ICAgIEFTU0VSVChvcGNvZGVMZW5ndGhzW29wY29kZUlEXSA+IDEpOwogICAgICAgICBmdW5jdG9y
KGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBpbnN0cnVjdGlvblsxXS51Lm9wZXJh
bmQpOwogICAgICAgICByZXR1cm47CkBAIC0yODgsNDIgKzI4MSwyOCBAQCB2b2lkIGNvbXB1dGVV
c2VzRm9yQnl0ZWNvZGVPZmZzZXQoCiAgICAgICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5z
dHJ1Y3Rpb24sIG9wY29kZUlELCBjb2RlQmxvY2stPnNjb3BlUmVnaXN0ZXIoKS5vZmZzZXQoKSk7
CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgY2FzZSBvcF9zYXZlOiB7Ci0gICAgICAgIGZ1
bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzFdLnUu
b3BlcmFuZCk7Ci0gICAgICAgIHVuc2lnbmVkIG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldCA9IGJ5
dGVjb2RlT2Zmc2V0ICsgaW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kOwotICAgICAgICBCeXRlY29k
ZUJhc2ljQmxvY2sqIG1lcmdlUG9pbnRCbG9jayA9IG51bGxwdHI7Ci0gICAgICAgIGZvciAoQnl0
ZWNvZGVCYXNpY0Jsb2NrKiBzdWNjZXNzb3IgOiBibG9jay0+c3VjY2Vzc29ycygpKSB7Ci0gICAg
ICAgICAgICBpZiAoc3VjY2Vzc29yLT5sZWFkZXJCeXRlY29kZU9mZnNldCgpID09IG1lcmdlUG9p
bnRCeXRlY29kZU9mZnNldCkgewotICAgICAgICAgICAgICAgIG1lcmdlUG9pbnRCbG9jayA9IHN1
Y2Nlc3NvcjsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
fQotICAgICAgICBBU1NFUlQobWVyZ2VQb2ludEJsb2NrKTsKLSAgICAgICAgbWVyZ2VQb2ludEJs
b2NrLT5pbigpLmZvckVhY2hTZXRCaXQoWyZdKHVuc2lnbmVkIGxvY2FsKSB7Ci0gICAgICAgICAg
ICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCB2aXJ0dWFsUmVnaXN0
ZXJGb3JMb2NhbChsb2NhbCkub2Zmc2V0KCkpOwotICAgICAgICB9KTsKKworICAgIGNhc2Ugb3Bf
eWllbGQ6IHsKKyAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJ
RCwgaW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKTsKKyAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ss
IGluc3RydWN0aW9uLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb25bNF0udS5vcGVyYW5kKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KKwogICAgIGRlZmF1bHQ6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIH0KIAotdGVtcGxhdGU8dHlw
ZW5hbWUgRnVuY3Rvcj4KLXZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaywgdW5zaWduZWQgYnl0ZWNv
ZGVPZmZzZXQsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCit0ZW1wbGF0ZTx0eXBlbmFtZSBCbG9j
aywgdHlwZW5hbWUgSW5zdHJ1Y3Rpb24sIHR5cGVuYW1lIEZ1bmN0b3I+Cit2b2lkIGNvbXB1dGVE
ZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQmxvY2sqIGNvZGVCbG9jaywgT3Bjb2RlSUQgb3Bjb2RlSUQs
IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikKIHsKLSAg
ICBJbnRlcnByZXRlciogaW50ZXJwcmV0ZXIgPSBjb2RlQmxvY2stPnZtKCktPmludGVycHJldGVy
OwotICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiA9IGNvZGVCbG9jay0+aW5zdHJ1
Y3Rpb25zKCkuYmVnaW4oKTsKLSAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSAmaW5zdHJ1
Y3Rpb25zQmVnaW5bYnl0ZWNvZGVPZmZzZXRdOwotICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW50
ZXJwcmV0ZXItPmdldE9wY29kZUlEKGluc3RydWN0aW9uLT51Lm9wY29kZSk7CiAgICAgc3dpdGNo
IChvcGNvZGVJRCkgewogICAgIC8vIFRoZXNlIGRvbid0IGRlZmluZSBhbnl0aGluZy4KICAgICBj
YXNlIG9wX3B1dF90b19zY29wZToKICAgICBjYXNlIG9wX2VuZDoKICAgICBjYXNlIG9wX3Rocm93
OgogICAgIGNhc2Ugb3BfdGhyb3dfc3RhdGljX2Vycm9yOgotICAgIGNhc2Ugb3Bfc2F2ZToKICAg
ICBjYXNlIG9wX2Fzc2VydDoKICAgICBjYXNlIG9wX2RlYnVnOgogICAgIGNhc2Ugb3BfcmV0OgpA
QCAtMzYzLDYgKzM0Miw3IEBAIHZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChDb2Rl
QmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jCiAgICAgY2FzZSBvcF93
YXRjaGRvZzoKICAgICBjYXNlIG9wX2xvZ19zaGFkb3dfY2hpY2tlbl9wcm9sb2d1ZToKICAgICBj
YXNlIG9wX2xvZ19zaGFkb3dfY2hpY2tlbl90YWlsOgorICAgIGNhc2Ugb3BfeWllbGQ6CiAjZGVm
aW5lIExMSU5UX0hFTFBFUl9PUENPREVTKG9wY29kZSwgbGVuZ3RoKSBjYXNlIG9wY29kZToKICAg
ICAgICAgRk9SX0VBQ0hfTExJTlRfT1BDT0RFX0VYVEVOU0lPTihMTElOVF9IRUxQRVJfT1BDT0RF
Uyk7CiAjdW5kZWYgTExJTlRfSEVMUEVSX09QQ09ERVMKQEAgLTQ2Myw3ICs0NDMsNyBAQCB2b2lk
IGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVj
b2RlQmFzaWNCbG9jayogYmxvYwogICAgIGNhc2Ugb3BfZGVsX2J5X2lkOgogICAgIGNhc2Ugb3Bf
ZGVsX2J5X3ZhbDoKICAgICBjYXNlIG9wX3Vuc2lnbmVkOgotICAgIGNhc2Ugb3BfZ2V0X2Zyb21f
YXJndW1lbnRzOiAKKyAgICBjYXNlIG9wX2dldF9mcm9tX2FyZ3VtZW50czoKICAgICBjYXNlIG9w
X2NyZWF0ZV9yZXN0OgogICAgIGNhc2Ugb3BfZ2V0X3Jlc3RfbGVuZ3RoOiB7CiAgICAgICAgIEFT
U0VSVChvcGNvZGVMZW5ndGhzW29wY29kZUlEXSA+IDEpOwpAQCAtNDgxLDE2ICs0NjEsMTAgQEAg
dm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBC
eXRlY29kZUJhc2ljQmxvY2sqIGJsb2MKICAgICAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBp
bnN0cnVjdGlvbiwgb3Bjb2RlSUQsIHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGkpLm9mZnNldCgp
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBjYXNlIG9wX3Jlc3VtZTogewotICAgICAg
ICBSRUxFQVNFX0FTU0VSVChibG9jay0+c3VjY2Vzc29ycygpLnNpemUoKSA9PSAxKTsKLSAgICAg
ICAgLy8gRklYTUU6IFRoaXMgaXMgcmVhbGx5IGRpcnR5LgotICAgICAgICAvLyBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU5MjgxCi0gICAgICAgIGJsb2NrLT5zdWNj
ZXNzb3JzKClbMF0tPmluKCkuZm9yRWFjaFNldEJpdChbJl0odW5zaWduZWQgbG9jYWwpIHsKLSAg
ICAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIHZpcnR1
YWxSZWdpc3RlckZvckxvY2FsKGxvY2FsKS5vZmZzZXQoKSk7Ci0gICAgICAgIH0pOworICAgIGRl
ZmF1bHQ6CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9Ci0gICAgfQogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKaW5kZXggMzJiZTYzMTY1MzE3NzY4
NmU1MDQ0YTgxMmUxMjliNjc3YWYwNjJhOS4uNGE2ZDcwM2E4OTM5OTY2MTAxZjM0NzMzMTk3ZmQx
NmE2OTQ0NmMwYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
ay5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJBcml0aFByb2ZpbGUuaCIKICNpbmNs
dWRlICJCYXNpY0Jsb2NrTG9jYXRpb24uaCIKICNpbmNsdWRlICJCeXRlY29kZUdlbmVyYXRvci5o
IgorI2luY2x1ZGUgIkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5oIgogI2luY2x1ZGUgIkJ5dGVj
b2RlVXNlRGVmLmgiCiAjaW5jbHVkZSAiQ2FsbExpbmtTdGF0dXMuaCIKICNpbmNsdWRlICJERkdD
YXBhYmlsaXRpZXMuaCIKQEAgLTY5NywxOCArNjk4LDYgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXBC
eXRlY29kZShQcmludFN0cmVhbSYgb3V0KQogICAgICAgICB9IHdoaWxlIChpIDwgbV9yYXJlRGF0
YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzLnNpemUoKSk7CiAgICAgfQogCi0gICAgaWYgKG1f
cmFyZURhdGEgJiYgIW1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQuaXNFbXB0
eSgpKSB7Ci0gICAgICAgIG91dC5wcmludGYoIlxuTGl2ZSBDYWxsZWUgTG9jYWxzOlxuIik7Ci0g
ICAgICAgIHVuc2lnbmVkIGkgPSAwOwotICAgICAgICBkbyB7Ci0gICAgICAgICAgICBjb25zdCBG
YXN0Qml0VmVjdG9yJiBsaXZlbmVzcyA9IG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0
WWllbGRbaV07Ci0gICAgICAgICAgICBvdXQucHJpbnRmKCIgIGxpdmUlMXUgPSAiLCBpKTsKLSAg
ICAgICAgICAgIGxpdmVuZXNzLmR1bXAob3V0KTsKLSAgICAgICAgICAgIG91dC5wcmludGYoIlxu
Iik7Ci0gICAgICAgICAgICArK2k7Ci0gICAgICAgIH0gd2hpbGUgKGkgPCBtX3JhcmVEYXRhLT5t
X2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkLnNpemUoKSk7Ci0gICAgfQotCiAgICAgb3V0LnByaW50
ZigiXG4iKTsKIH0KIApAQCAtMTY3MiwzMSArMTY2MSw2IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1w
Qnl0ZWNvZGUoCiAgICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgJWQiLCBkZWJ1Z0hvb2tOYW1l
KGRlYnVnSG9va0lEKSwgaGFzQnJlYWtwb2ludEZsYWcpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KLSAgICAgICAgY2FzZSBvcF9zYXZlOiB7Ci0gICAgICAgICAgICBpbnQgZ2VuZXJh
dG9yID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICB1bnNpZ25lZCBsaXZlQ2FsbGVl
TG9jYWxzSW5kZXggPSAoKytpdCktPnUudW5zaWduZWRWYWx1ZTsKLSAgICAgICAgICAgIGludCBv
ZmZzZXQgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIEZhc3RCaXRWZWN0b3IgbGl2
ZW5lc3M7Ci0gICAgICAgICAgICBpZiAobGl2ZUNhbGxlZUxvY2Fsc0luZGV4IDwgbV9yYXJlRGF0
YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZC5zaXplKCkpCi0gICAgICAgICAgICAgICAgbGl2
ZW5lc3MgPSBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkW2xpdmVDYWxsZWVM
b2NhbHNJbmRleF07Ci0gICAgICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBleGVjLCBs
b2NhdGlvbiwgaXQsICJzYXZlIik7Ci0gICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgIiwgcmVn
aXN0ZXJOYW1lKGdlbmVyYXRvcikuZGF0YSgpKTsKLSAgICAgICAgICAgIGxpdmVuZXNzLmR1bXAo
b3V0KTsKLSAgICAgICAgICAgIG91dC5wcmludGYoIihAbGl2ZSUxdSksICVkKC0+JWQpIiwgbGl2
ZUNhbGxlZUxvY2Fsc0luZGV4LCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2Ugb3BfcmVzdW1lOiB7Ci0gICAgICAg
ICAgICBpbnQgZ2VuZXJhdG9yID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICB1bnNp
Z25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSAoKytpdCktPnUudW5zaWduZWRWYWx1ZTsKLSAg
ICAgICAgICAgIEZhc3RCaXRWZWN0b3IgbGl2ZW5lc3M7Ci0gICAgICAgICAgICBpZiAobGl2ZUNh
bGxlZUxvY2Fsc0luZGV4IDwgbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZC5z
aXplKCkpCi0gICAgICAgICAgICAgICAgbGl2ZW5lc3MgPSBtX3JhcmVEYXRhLT5tX2xpdmVDYWxs
ZWVMb2NhbHNBdFlpZWxkW2xpdmVDYWxsZWVMb2NhbHNJbmRleF07Ci0gICAgICAgICAgICBwcmlu
dExvY2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJyZXN1bWUiKTsKLSAgICAg
ICAgICAgIG91dC5wcmludGYoIiVzLCAiLCByZWdpc3Rlck5hbWUoZ2VuZXJhdG9yKS5kYXRhKCkp
OwotICAgICAgICAgICAgbGl2ZW5lc3MuZHVtcChvdXQpOwotICAgICAgICAgICAgb3V0LnByaW50
ZigiKEBsaXZlJTF1KSIsIGxpdmVDYWxsZWVMb2NhbHNJbmRleCk7Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2Fzc2VydDogewogICAgICAgICAgICAgaW50
IGNvbmRpdGlvbiA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IGxpbmUgPSAo
KytpdCktPnUub3BlcmFuZDsKQEAgLTE5MDgsNyArMTg3Miw2IEBAIHZvaWQgQ29kZUJsb2NrOjpm
aW5pc2hDcmVhdGlvbihWTSYgdm0sIENvcHlQYXJzZWRCbG9ja1RhZywgQ29kZUJsb2NrJiBvdGhl
cikKICAgICAgICAgbV9yYXJlRGF0YS0+bV9jb25zdGFudEJ1ZmZlcnMgPSBvdGhlci5tX3JhcmVE
YXRhLT5tX2NvbnN0YW50QnVmZmVyczsKICAgICAgICAgbV9yYXJlRGF0YS0+bV9zd2l0Y2hKdW1w
VGFibGVzID0gb3RoZXIubV9yYXJlRGF0YS0+bV9zd2l0Y2hKdW1wVGFibGVzOwogICAgICAgICBt
X3JhcmVEYXRhLT5tX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXMgPSBvdGhlci5tX3JhcmVEYXRhLT5t
X3N0cmluZ1N3aXRjaEp1bXBUYWJsZXM7Ci0gICAgICAgIG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxl
ZUxvY2Fsc0F0WWllbGQgPSBvdGhlci5tX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlp
ZWxkOwogICAgIH0KICAgICAKICAgICBoZWFwKCktPm1fY29kZUJsb2Nrcy0+YWRkKHRoaXMpOwpA
QCAtMjAzMCw3ICsxOTkzLDcgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2
bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICAgICAgICAg
ICAgICBVbmxpbmtlZFN0cmluZ0p1bXBUYWJsZTo6U3RyaW5nT2Zmc2V0VGFibGU6Oml0ZXJhdG9y
IGVuZCA9IHVubGlua2VkQ29kZUJsb2NrLT5zdHJpbmdTd2l0Y2hKdW1wVGFibGUoaSkub2Zmc2V0
VGFibGUuZW5kKCk7CiAgICAgICAgICAgICAgICAgZm9yICg7IHB0ciAhPSBlbmQ7ICsrcHRyKSB7
CiAgICAgICAgICAgICAgICAgICAgIE9mZnNldExvY2F0aW9uIG9mZnNldDsKLSAgICAgICAgICAg
ICAgICAgICAgb2Zmc2V0LmJyYW5jaE9mZnNldCA9IHB0ci0+dmFsdWU7CisgICAgICAgICAgICAg
ICAgICAgIG9mZnNldC5icmFuY2hPZmZzZXQgPSBwdHItPnZhbHVlLmJyYW5jaE9mZnNldDsKICAg
ICAgICAgICAgICAgICAgICAgbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzW2ld
Lm9mZnNldFRhYmxlLmFkZChwdHItPmtleSwgb2Zmc2V0KTsKICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICB9CkBAIC0yMDcwLDExICsyMDMzLDE3IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5p
c2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5s
aW5rCiAgICAgLy8gQm9va2tlZXAgdGhlIHN0cm9uZ2x5IHJlZmVyZW5jZWQgbW9kdWxlIGVudmly
b25tZW50cy4KICAgICBIYXNoU2V0PEpTTW9kdWxlRW52aXJvbm1lbnQqPiBzdHJvbmdseVJlZmVy
ZW5jZWRNb2R1bGVFbnZpcm9ubWVudHM7CiAKLSAgICAvLyBCb29ra2VlcCB0aGUgbWVyZ2UgcG9p
bnQgYnl0ZWNvZGUgb2Zmc2V0cy4KLSAgICBWZWN0b3I8c2l6ZV90PiBtZXJnZVBvaW50Qnl0ZWNv
ZGVPZmZzZXRzOwotCiAgICAgUmVmQ291bnRlZEFycmF5PEluc3RydWN0aW9uPiBpbnN0cnVjdGlv
bnMoaW5zdHJ1Y3Rpb25Db3VudCk7CiAKKyAgICB1bnNpZ25lZCB2YWx1ZVByb2ZpbGVDb3VudCA9
IDA7CisgICAgYXV0byBsaW5rVmFsdWVQcm9maWxlID0gWyZdKHVuc2lnbmVkIGJ5dGVjb2RlT2Zm
c2V0LCB1bnNpZ25lZCBvcExlbmd0aCkgeworICAgICAgICB1bnNpZ25lZCB2YWx1ZVByb2ZpbGVJ
bmRleCA9IHZhbHVlUHJvZmlsZUNvdW50Kys7CisgICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmls
ZSA9ICZtX3ZhbHVlUHJvZmlsZXNbdmFsdWVQcm9maWxlSW5kZXhdOworICAgICAgICBBU1NFUlQo
cHJvZmlsZS0+bV9ieXRlY29kZU9mZnNldCA9PSAtMSk7CisgICAgICAgIHByb2ZpbGUtPm1fYnl0
ZWNvZGVPZmZzZXQgPSBieXRlY29kZU9mZnNldDsKKyAgICAgICAgaW5zdHJ1Y3Rpb25zW2J5dGVj
b2RlT2Zmc2V0ICsgb3BMZW5ndGggLSAxXSA9IHByb2ZpbGU7CisgICAgfTsKKwogICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7ICFpbnN0cnVjdGlvblJlYWRlci5hdEVuZCgpOyApIHsKICAgICAgICAg
Y29uc3QgVW5saW5rZWRJbnN0cnVjdGlvbiogcGMgPSBpbnN0cnVjdGlvblJlYWRlci5uZXh0KCk7
CiAKQEAgLTIxMDksMTAgKzIwNzgsNyBAQCB2b2lkIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24o
Vk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGluawogICAgICAg
ICBjYXNlIG9wX2dldF9ieV9pZDoKICAgICAgICAgY2FzZSBvcF9nZXRfZnJvbV9hcmd1bWVudHM6
CiAgICAgICAgIGNhc2Ugb3BfdG9fbnVtYmVyOiB7Ci0gICAgICAgICAgICBWYWx1ZVByb2ZpbGUq
IHByb2ZpbGUgPSAmbV92YWx1ZVByb2ZpbGVzW3BjW29wTGVuZ3RoIC0gMV0udS5vcGVyYW5kXTsK
LSAgICAgICAgICAgIEFTU0VSVChwcm9maWxlLT5tX2J5dGVjb2RlT2Zmc2V0ID09IC0xKTsKLSAg
ICAgICAgICAgIHByb2ZpbGUtPm1fYnl0ZWNvZGVPZmZzZXQgPSBpOwotICAgICAgICAgICAgaW5z
dHJ1Y3Rpb25zW2kgKyBvcExlbmd0aCAtIDFdID0gcHJvZmlsZTsKKyAgICAgICAgICAgIGxpbmtW
YWx1ZVByb2ZpbGUoaSwgb3BMZW5ndGgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
ICAgICAgICAgY2FzZSBvcF9wdXRfYnlfdmFsOiB7CkBAIC0yMTQ5LDEwICsyMTE1LDcgQEAgdm9p
ZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3du
ZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICAgICAgY2FzZSBvcF9jYWxsOgogICAgICAgICBjYXNl
IG9wX3RhaWxfY2FsbDoKICAgICAgICAgY2FzZSBvcF9jYWxsX2V2YWw6IHsKLSAgICAgICAgICAg
IFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9ICZtX3ZhbHVlUHJvZmlsZXNbcGNbb3BMZW5ndGggLSAx
XS51Lm9wZXJhbmRdOwotICAgICAgICAgICAgQVNTRVJUKHByb2ZpbGUtPm1fYnl0ZWNvZGVPZmZz
ZXQgPT0gLTEpOwotICAgICAgICAgICAgcHJvZmlsZS0+bV9ieXRlY29kZU9mZnNldCA9IGk7Ci0g
ICAgICAgICAgICBpbnN0cnVjdGlvbnNbaSArIG9wTGVuZ3RoIC0gMV0gPSBwcm9maWxlOworICAg
ICAgICAgICAgbGlua1ZhbHVlUHJvZmlsZShpLCBvcExlbmd0aCk7CiAgICAgICAgICAgICBpbnQg
YXJyYXlQcm9maWxlSW5kZXggPSBwY1tvcExlbmd0aCAtIDJdLnUub3BlcmFuZDsKICAgICAgICAg
ICAgIG1fYXJyYXlQcm9maWxlc1thcnJheVByb2ZpbGVJbmRleF0gPSBBcnJheVByb2ZpbGUoaSk7
CiAgICAgICAgICAgICBpbnN0cnVjdGlvbnNbaSArIG9wTGVuZ3RoIC0gMl0gPSAmbV9hcnJheVBy
b2ZpbGVzW2FycmF5UHJvZmlsZUluZGV4XTsKQEAgLTIxNjEsMTAgKzIxMjQsNyBAQCB2b2lkIENv
ZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4
ZWN1dGFibGUsIFVubGluawogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfY29uc3RydWN0OiB7
CiAgICAgICAgICAgICBpbnN0cnVjdGlvbnNbaSArIDVdID0gJm1fbGxpbnRDYWxsTGlua0luZm9z
W3BjWzVdLnUub3BlcmFuZF07Ci0gICAgICAgICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSAm
bV92YWx1ZVByb2ZpbGVzW3BjW29wTGVuZ3RoIC0gMV0udS5vcGVyYW5kXTsKLSAgICAgICAgICAg
IEFTU0VSVChwcm9maWxlLT5tX2J5dGVjb2RlT2Zmc2V0ID09IC0xKTsKLSAgICAgICAgICAgIHBy
b2ZpbGUtPm1fYnl0ZWNvZGVPZmZzZXQgPSBpOwotICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zW2kg
KyBvcExlbmd0aCAtIDFdID0gcHJvZmlsZTsKKyAgICAgICAgICAgIGxpbmtWYWx1ZVByb2ZpbGUo
aSwgb3BMZW5ndGgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2Fz
ZSBvcF9nZXRfYXJyYXlfbGVuZ3RoOgpAQCAtMjE5NSwxMCArMjE1NSw3IEBAIHZvaWQgQ29kZUJs
b2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0
YWJsZSwgVW5saW5rCiAgICAgICAgIH0KIAogICAgICAgICBjYXNlIG9wX2dldF9mcm9tX3Njb3Bl
OiB7Ci0gICAgICAgICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSAmbV92YWx1ZVByb2ZpbGVz
W3BjW29wTGVuZ3RoIC0gMV0udS5vcGVyYW5kXTsKLSAgICAgICAgICAgIEFTU0VSVChwcm9maWxl
LT5tX2J5dGVjb2RlT2Zmc2V0ID09IC0xKTsKLSAgICAgICAgICAgIHByb2ZpbGUtPm1fYnl0ZWNv
ZGVPZmZzZXQgPSBpOwotICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zW2kgKyBvcExlbmd0aCAtIDFd
ID0gcHJvZmlsZTsKKyAgICAgICAgICAgIGxpbmtWYWx1ZVByb2ZpbGUoaSwgb3BMZW5ndGgpOwog
CiAgICAgICAgICAgICAvLyBnZXRfZnJvbV9zY29wZSBkc3QsIHNjb3BlLCBpZCwgR2V0UHV0SW5m
bywgU3RydWN0dXJlLCBPcGVyYW5kCiAKQEAgLTIzNTUsMTUgKzIzMTIsNiBAQCB2b2lkIENvZGVC
bG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1
dGFibGUsIFVubGluawogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAotICAgICAgICBj
YXNlIG9wX3NhdmU6IHsKLSAgICAgICAgICAgIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRl
eCA9IHBjWzJdLnUuaW5kZXg7Ci0gICAgICAgICAgICBpbnQgb2Zmc2V0ID0gcGNbM10udS5vcGVy
YW5kOwotICAgICAgICAgICAgaWYgKGxpdmVDYWxsZWVMb2NhbHNJbmRleCA+PSBtZXJnZVBvaW50
Qnl0ZWNvZGVPZmZzZXRzLnNpemUoKSkKLSAgICAgICAgICAgICAgICBtZXJnZVBvaW50Qnl0ZWNv
ZGVPZmZzZXRzLnJlc2l6ZShsaXZlQ2FsbGVlTG9jYWxzSW5kZXggKyAxKTsKLSAgICAgICAgICAg
IG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldHNbbGl2ZUNhbGxlZUxvY2Fsc0luZGV4XSA9IGkgKyBv
ZmZzZXQ7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotCiAgICAgICAgIGRlZmF1bHQ6
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMjM3NSwyMCArMjMyMyw2IEBAIHZv
aWQgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93
bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAKICAgICBtX2luc3RydWN0aW9ucyA9IFdURk1vdmUoaW5z
dHJ1Y3Rpb25zKTsKIAotICAgIC8vIFBlcmZvcm0gYnl0ZWNvZGUgbGl2ZW5lc3MgYW5hbHlzaXMg
dG8gZGV0ZXJtaW5lIHdoaWNoIGxvY2FscyBhcmUgbGl2ZSBhbmQgc2hvdWxkIGJlIHJlc3VtZWQg
d2hlbiBleGVjdXRpbmcgb3BfcmVzdW1lLgotICAgIGlmICh1bmxpbmtlZENvZGVCbG9jay0+cGFy
c2VNb2RlKCkgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JCb2R5TW9kZSkgewotICAgICAg
ICBpZiAoc2l6ZV90IGNvdW50ID0gbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0cy5zaXplKCkpIHsK
LSAgICAgICAgICAgIGNyZWF0ZVJhcmVEYXRhSWZOZWNlc3NhcnkoKTsKLSAgICAgICAgICAgIEJ5
dGVjb2RlTGl2ZW5lc3NBbmFseXNpcyBsaXZlbmVzcyh0aGlzKTsKLSAgICAgICAgICAgIG1fcmFy
ZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQuZ3Jvdyhjb3VudCk7Ci0gICAgICAgICAg
ICBzaXplX3QgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gMDsKLSAgICAgICAgICAgIGZvciAoc2l6
ZV90IGJ5dGVjb2RlT2Zmc2V0IDogbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0cykgewotICAgICAg
ICAgICAgICAgIG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGRbbGl2ZUNhbGxl
ZUxvY2Fsc0luZGV4XSA9IGxpdmVuZXNzLmdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQo
Ynl0ZWNvZGVPZmZzZXQpOwotICAgICAgICAgICAgICAgICsrbGl2ZUNhbGxlZUxvY2Fsc0luZGV4
OwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCiAgICAgLy8gU2V0IG9wdGltaXph
dGlvbiB0aHJlc2hvbGRzIG9ubHkgYWZ0ZXIgbV9pbnN0cnVjdGlvbnMgaXMgaW5pdGlhbGl6ZWQs
IHNpbmNlIHRoZXNlCiAgICAgLy8gcmVseSBvbiB0aGUgaW5zdHJ1Y3Rpb24gY291bnQgKGFuZCBh
cmUgaW4gdGhlb3J5IHBlcm1pdHRlZCB0byBhbHNvIGluc3BlY3QgdGhlCiAgICAgLy8gaW5zdHJ1
Y3Rpb24gc3RyZWFtIHRvIG1vcmUgYWNjdXJhdGUgYXNzZXNzIHRoZSBjb3N0IG9mIHRpZXItdXAp
LgpAQCAtMzI1MywyMSArMzE4Nyw3IEBAIEhhbmRsZXJJbmZvKiBDb2RlQmxvY2s6OmhhbmRsZXJG
b3JJbmRleCh1bnNpZ25lZCBpbmRleCwgUmVxdWlyZWRIYW5kbGVyIHJlcXVpcmVkCiB7CiAgICAg
aWYgKCFtX3JhcmVEYXRhKQogICAgICAgICByZXR1cm4gMDsKLSAgICAKLSAgICBWZWN0b3I8SGFu
ZGxlckluZm8+JiBleGNlcHRpb25IYW5kbGVycyA9IG1fcmFyZURhdGEtPm1fZXhjZXB0aW9uSGFu
ZGxlcnM7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBleGNlcHRpb25IYW5kbGVycy5zaXpl
KCk7ICsraSkgewotICAgICAgICBIYW5kbGVySW5mbyYgaGFuZGxlciA9IGV4Y2VwdGlvbkhhbmRs
ZXJzW2ldOwotICAgICAgICBpZiAoKHJlcXVpcmVkSGFuZGxlciA9PSBSZXF1aXJlZEhhbmRsZXI6
OkNhdGNoSGFuZGxlcikgJiYgIWhhbmRsZXIuaXNDYXRjaEhhbmRsZXIoKSkKLSAgICAgICAgICAg
IGNvbnRpbnVlOwotCi0gICAgICAgIC8vIEhhbmRsZXJzIGFyZSBvcmRlcmVkIGlubmVybW9zdCBm
aXJzdCwgc28gdGhlIGZpcnN0IGhhbmRsZXIgd2UgZW5jb3VudGVyCi0gICAgICAgIC8vIHRoYXQg
Y29udGFpbnMgdGhlIHNvdXJjZSBhZGRyZXNzIGlzIHRoZSBjb3JyZWN0IGhhbmRsZXIgdG8gdXNl
LgotICAgICAgICAvLyBUaGlzIGluZGV4IHVzZWQgaXMgZWl0aGVyIHRoZSBCeXRlY29kZU9mZnNl
dCBvciBhIENhbGxTaXRlSW5kZXguCi0gICAgICAgIGlmIChoYW5kbGVyLnN0YXJ0IDw9IGluZGV4
ICYmIGhhbmRsZXIuZW5kID4gaW5kZXgpCi0gICAgICAgICAgICByZXR1cm4gJmhhbmRsZXI7Ci0g
ICAgfQotCi0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIEhhbmRsZXJJbmZvOjpoYW5kbGVyRm9y
SW5kZXgobV9yYXJlRGF0YS0+bV9leGNlcHRpb25IYW5kbGVycywgaW5kZXgsIHJlcXVpcmVkSGFu
ZGxlcik7CiB9CiAKIENhbGxTaXRlSW5kZXggQ29kZUJsb2NrOjpuZXdFeGNlcHRpb25IYW5kbGlu
Z0NhbGxTaXRlSW5kZXgoQ2FsbFNpdGVJbmRleCBvcmlnaW5hbENhbGxTaXRlKQpAQCAtMzM2Miw3
ICszMjgyLDYgQEAgdm9pZCBDb2RlQmxvY2s6OnNocmlua1RvRml0KFNocmlua01vZGUgc2hyaW5r
TW9kZSkKICAgICAgICAgaWYgKG1fcmFyZURhdGEpIHsKICAgICAgICAgICAgIG1fcmFyZURhdGEt
Pm1fc3dpdGNoSnVtcFRhYmxlcy5zaHJpbmtUb0ZpdCgpOwogICAgICAgICAgICAgbV9yYXJlRGF0
YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzLnNocmlua1RvRml0KCk7Ci0gICAgICAgICAgICBt
X3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkLnNocmlua1RvRml0KCk7CiAgICAg
ICAgIH0KICAgICB9IC8vIGVsc2UgZG9uJ3Qgc2hyaW5rIHRoZXNlLCBiZWNhdXNlIHdlIHdvdWxk
IGhhdmUgYWxyZWFkeSBwb2ludGVkIHBvaW50ZXJzIGludG8gdGhlc2UgdGFibGVzLgogfQpAQCAt
NDM0NCwxNCArNDI2Myw5IEBAIFN0cmluZyBDb2RlQmxvY2s6Om5hbWVGb3JSZWdpc3RlcihWaXJ0
dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVyKQogCiBWYWx1ZVByb2ZpbGUqIENvZGVCbG9jazo6
dmFsdWVQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoaW50IGJ5dGVjb2RlT2Zmc2V0KQogewotICAg
IFZhbHVlUHJvZmlsZSogcmVzdWx0ID0gYmluYXJ5U2VhcmNoPFZhbHVlUHJvZmlsZSwgaW50PigK
LSAgICAgICAgbV92YWx1ZVByb2ZpbGVzLCBtX3ZhbHVlUHJvZmlsZXMuc2l6ZSgpLCBieXRlY29k
ZU9mZnNldCwKLSAgICAgICAgZ2V0VmFsdWVQcm9maWxlQnl0ZWNvZGVPZmZzZXQ8VmFsdWVQcm9m
aWxlPik7Ci0gICAgQVNTRVJUKHJlc3VsdC0+bV9ieXRlY29kZU9mZnNldCAhPSAtMSk7Ci0gICAg
QVNTRVJUKGluc3RydWN0aW9ucygpW2J5dGVjb2RlT2Zmc2V0ICsgb3Bjb2RlTGVuZ3RoKAotICAg
ICAgICBtX3ZtLT5pbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoCi0gICAgICAgICAgICBpbnN0cnVj
dGlvbnMoKVtieXRlY29kZU9mZnNldF0udS5vcGNvZGUpKSAtIDFdLnUucHJvZmlsZSA9PSByZXN1
bHQpOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBtX3ZtLT5p
bnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25zKClbYnl0ZWNvZGVPZmZzZXRdLnUu
b3Bjb2RlKTsKKyAgICB1bnNpZ25lZCBsZW5ndGggPSBvcGNvZGVMZW5ndGgob3Bjb2RlSUQpOwor
ICAgIHJldHVybiBpbnN0cnVjdGlvbnMoKVtieXRlY29kZU9mZnNldCArIGxlbmd0aCAtIDFdLnUu
cHJvZmlsZTsKIH0KIAogdm9pZCBDb2RlQmxvY2s6OnZhbGlkYXRlKCkKQEAgLTQ2ODAsNCArNDU5
NCwxNiBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcE1hdGhJQ1N0YXRzKCkKICNlbmRpZgogfQogCitC
eXRlY29kZUxpdmVuZXNzQW5hbHlzaXMmIENvZGVCbG9jazo6bGl2ZW5lc3NBbmFseXNpc1Nsb3co
KQoreworICAgIHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM+IGFuYWx5
c2lzID0gc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM+KHRoaXMpOwor
ICAgIHsKKyAgICAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIobV9sb2NrKTsKKyAgICAg
ICAgaWYgKCFtX2xpdmVuZXNzQW5hbHlzaXMpCisgICAgICAgICAgICBtX2xpdmVuZXNzQW5hbHlz
aXMgPSBXVEZNb3ZlKGFuYWx5c2lzKTsKKyAgICAgICAgcmV0dXJuICptX2xpdmVuZXNzQW5hbHlz
aXM7CisgICAgfQorfQorCisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCmluZGV4IGIxNjgyYzczNjZlMGMwYmEzNjBiYjhiMTM4
YWFlMDVjMTJmNjU4ZTUuLmUzNDMxYTM3NDMzOGQ3MjVkNzBmZDMxMTNhN2NiOWYzN2I1YTEzMzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKQEAgLTMzLDcg
KzMzLDYgQEAKICNpbmNsdWRlICJBcnJheVByb2ZpbGUuaCIKICNpbmNsdWRlICJCeVZhbEluZm8u
aCIKICNpbmNsdWRlICJCeXRlY29kZUNvbnZlbnRpb25zLmgiCi0jaW5jbHVkZSAiQnl0ZWNvZGVM
aXZlbmVzc0FuYWx5c2lzLmgiCiAjaW5jbHVkZSAiQ2FsbExpbmtJbmZvLmgiCiAjaW5jbHVkZSAi
Q2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQuaCIKICNpbmNsdWRlICJDb2RlQmxvY2tI
YXNoLmgiCkBAIC03OSw2ICs3OCw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCitjbGFzcyBCeXRl
Y29kZUxpdmVuZXNzQW5hbHlzaXM7CiBjbGFzcyBFeGVjU3RhdGU7CiBjbGFzcyBKSVRBZGRHZW5l
cmF0b3I7CiBjbGFzcyBKU01vZHVsZUVudmlyb25tZW50OwpAQCAtMjI2LDEwICsyMjYsNiBAQCBj
bGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAgICAgcmV0dXJuIGluZGV4ID49
IG1fbnVtVmFyczsKICAgICB9CiAKLSAgICBlbnVtIGNsYXNzIFJlcXVpcmVkSGFuZGxlciB7Ci0g
ICAgICAgIENhdGNoSGFuZGxlciwKLSAgICAgICAgQW55SGFuZGxlcgotICAgIH07CiAgICAgSGFu
ZGxlckluZm8qIGhhbmRsZXJGb3JCeXRlY29kZU9mZnNldCh1bnNpZ25lZCBieXRlY29kZU9mZnNl
dCwgUmVxdWlyZWRIYW5kbGVyID0gUmVxdWlyZWRIYW5kbGVyOjpBbnlIYW5kbGVyKTsKICAgICBI
YW5kbGVySW5mbyogaGFuZGxlckZvckluZGV4KHVuc2lnbmVkLCBSZXF1aXJlZEhhbmRsZXIgPSBS
ZXF1aXJlZEhhbmRsZXI6OkFueUhhbmRsZXIpOwogICAgIHZvaWQgcmVtb3ZlRXhjZXB0aW9uSGFu
ZGxlckZvckNhbGxTaXRlKENhbGxTaXRlSW5kZXgpOwpAQCAtMzA2LDYgKzMwMiw5IEBAIGNsYXNz
IENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
SW5zdHJ1Y3Rpb24qPihyZXR1cm5BZGRyZXNzKSAtIGluc3RydWN0aW9ucygpLmJlZ2luKCk7CiAg
ICAgfQogCisgICAgdHlwZWRlZiBKU0M6Okluc3RydWN0aW9uIEluc3RydWN0aW9uOworICAgIHR5
cGVkZWYgUmVmQ291bnRlZEFycmF5PEluc3RydWN0aW9uPiYgVW5wYWNrZWRJbnN0cnVjdGlvbnM7
CisKICAgICB1bnNpZ25lZCBudW1iZXJPZkluc3RydWN0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1f
aW5zdHJ1Y3Rpb25zLnNpemUoKTsgfQogICAgIFJlZkNvdW50ZWRBcnJheTxJbnN0cnVjdGlvbj4m
IGluc3RydWN0aW9ucygpIHsgcmV0dXJuIG1faW5zdHJ1Y3Rpb25zOyB9CiAgICAgY29uc3QgUmVm
Q291bnRlZEFycmF5PEluc3RydWN0aW9uPiYgaW5zdHJ1Y3Rpb25zKCkgY29uc3QgeyByZXR1cm4g
bV9pbnN0cnVjdGlvbnM7IH0KQEAgLTU0OCw3ICs1NDcsNyBAQCBjbGFzcyBDb2RlQmxvY2sgOiBw
dWJsaWMgSlNDZWxsIHsKICAgICB9CiAKICAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4mIGNvbnN0
YW50UmVnaXN0ZXIoaW50IGluZGV4KSB7IHJldHVybiBtX2NvbnN0YW50UmVnaXN0ZXJzW2luZGV4
IC0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXhdOyB9Ci0gICAgQUxXQVlTX0lOTElORSBib29s
IGlzQ29uc3RhbnRSZWdpc3RlckluZGV4KGludCBpbmRleCkgY29uc3QgeyByZXR1cm4gaW5kZXgg
Pj0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXg7IH0KKyAgICBzdGF0aWMgQUxXQVlTX0lOTElO
RSBib29sIGlzQ29uc3RhbnRSZWdpc3RlckluZGV4KGludCBpbmRleCkgeyByZXR1cm4gaW5kZXgg
Pj0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXg7IH0KICAgICBBTFdBWVNfSU5MSU5FIEpTVmFs
dWUgZ2V0Q29uc3RhbnQoaW50IGluZGV4KSBjb25zdCB7IHJldHVybiBtX2NvbnN0YW50UmVnaXN0
ZXJzW2luZGV4IC0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXhdLmdldCgpOyB9CiAgICAgQUxX
QVlTX0lOTElORSBTb3VyY2VDb2RlUmVwcmVzZW50YXRpb24gY29uc3RhbnRTb3VyY2VDb2RlUmVw
cmVzZW50YXRpb24oaW50IGluZGV4KSBjb25zdCB7IHJldHVybiBtX2NvbnN0YW50c1NvdXJjZUNv
ZGVSZXByZXNlbnRhdGlvbltpbmRleCAtIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4XTsgfQog
CkBAIC01OTQsMTQgKzU5Myw3IEBAIGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewog
ICAgICAgICAgICAgaWYgKCEhbV9saXZlbmVzc0FuYWx5c2lzKQogICAgICAgICAgICAgICAgIHJl
dHVybiAqbV9saXZlbmVzc0FuYWx5c2lzOwogICAgICAgICB9Ci0gICAgICAgIHN0ZDo6dW5pcXVl
X3B0cjxCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM+IGFuYWx5c2lzID0KLSAgICAgICAgICAgIHN0
ZDo6bWFrZV91bmlxdWU8Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzPih0aGlzKTsKLSAgICAgICAg
ewotICAgICAgICAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIobV9sb2NrKTsKLSAgICAg
ICAgICAgIGlmICghbV9saXZlbmVzc0FuYWx5c2lzKQotICAgICAgICAgICAgICAgIG1fbGl2ZW5l
c3NBbmFseXNpcyA9IFdURk1vdmUoYW5hbHlzaXMpOwotICAgICAgICAgICAgcmV0dXJuICptX2xp
dmVuZXNzQW5hbHlzaXM7Ci0gICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGxpdmVuZXNzQW5hbHlz
aXNTbG93KCk7CiAgICAgfQogICAgIAogICAgIHZvaWQgdmFsaWRhdGUoKTsKQEAgLTYyMiwxOCAr
NjE0LDYgQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgU3RyaW5nSnVt
cFRhYmxlJiBhZGRTdHJpbmdTd2l0Y2hKdW1wVGFibGUoKSB7IGNyZWF0ZVJhcmVEYXRhSWZOZWNl
c3NhcnkoKTsgbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzLmFwcGVuZChTdHJp
bmdKdW1wVGFibGUoKSk7IHJldHVybiBtX3JhcmVEYXRhLT5tX3N0cmluZ1N3aXRjaEp1bXBUYWJs
ZXMubGFzdCgpOyB9CiAgICAgU3RyaW5nSnVtcFRhYmxlJiBzdHJpbmdTd2l0Y2hKdW1wVGFibGUo
aW50IHRhYmxlSW5kZXgpIHsgUkVMRUFTRV9BU1NFUlQobV9yYXJlRGF0YSk7IHJldHVybiBtX3Jh
cmVEYXRhLT5tX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXNbdGFibGVJbmRleF07IH0KIAotICAgIC8v
IExpdmUgY2FsbGVlIHJlZ2lzdGVycyBhdCB5aWVsZCBwb2ludHMuCi0gICAgY29uc3QgRmFzdEJp
dFZlY3RvciYgbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQodW5zaWduZWQgaW5kZXgpIGNvbnN0Ci0g
ICAgewotICAgICAgICBSRUxFQVNFX0FTU0VSVChtX3JhcmVEYXRhKTsKLSAgICAgICAgcmV0dXJu
IG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGRbaW5kZXhdOwotICAgIH0KLSAg
ICBGYXN0Qml0VmVjdG9yJiBsaXZlQ2FsbGVlTG9jYWxzQXRZaWVsZCh1bnNpZ25lZCBpbmRleCkK
LSAgICB7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fcmFyZURhdGEpOwotICAgICAgICByZXR1
cm4gbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZFtpbmRleF07Ci0gICAgfQot
CiAgICAgRXZhbENvZGVDYWNoZSYgZXZhbENvZGVDYWNoZSgpIHsgY3JlYXRlUmFyZURhdGFJZk5l
Y2Vzc2FyeSgpOyByZXR1cm4gbV9yYXJlRGF0YS0+bV9ldmFsQ29kZUNhY2hlOyB9CiAKICAgICBl
bnVtIFNocmlua01vZGUgewpAQCAtODg4LDggKzg2OCw2IEBAIGNsYXNzIENvZGVCbG9jayA6IHB1
YmxpYyBKU0NlbGwgewogICAgICAgICBWZWN0b3I8U2ltcGxlSnVtcFRhYmxlPiBtX3N3aXRjaEp1
bXBUYWJsZXM7CiAgICAgICAgIFZlY3RvcjxTdHJpbmdKdW1wVGFibGU+IG1fc3RyaW5nU3dpdGNo
SnVtcFRhYmxlczsKIAotICAgICAgICBWZWN0b3I8RmFzdEJpdFZlY3Rvcj4gbV9saXZlQ2FsbGVl
TG9jYWxzQXRZaWVsZDsKLQogICAgICAgICBFdmFsQ29kZUNhY2hlIG1fZXZhbENvZGVDYWNoZTsK
ICAgICB9OwogCkBAIC05MjQsNiArOTAyLDggQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpT
Q2VsbCB7CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIENvZGVCbG9ja1NldDsKKworICAg
IEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcyYgbGl2ZW5lc3NBbmFseXNpc1Nsb3coKTsKICAgICAK
ICAgICBDb2RlQmxvY2sqIHNwZWNpYWxPU1JFbnRyeUJsb2NrT3JOdWxsKCk7CiAgICAgCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSGFuZGxlckluZm8uaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9IYW5kbGVySW5mby5oCmluZGV4IGFjZGRhMDhl
ZDE0Y2JmOWYwOTcxMjc1MDQwNWE0MTc0MWY3NmEyMTMuLjdiMTA4YWNlOTM3MjhhOGQ1ZGY4ZWIx
NzNmYzBiMGE2MWJhZWQ2M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9IYW5kbGVySW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9I
YW5kbGVySW5mby5oCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIEhhbmRsZXJJbmZvX2gKIAog
I2luY2x1ZGUgIkNvZGVMb2NhdGlvbi5oIgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFt
ZXNwYWNlIEpTQyB7CiAKQEAgLTM3LDYgKzM4LDExIEBAIGVudW0gY2xhc3MgSGFuZGxlclR5cGUg
ewogICAgIFN5bnRoZXNpemVkRmluYWxseSA9IDMKIH07CiAKK2VudW0gY2xhc3MgUmVxdWlyZWRI
YW5kbGVyIHsKKyAgICBDYXRjaEhhbmRsZXIsCisgICAgQW55SGFuZGxlcgorfTsKKwogc3RydWN0
IEhhbmRsZXJJbmZvQmFzZSB7CiAgICAgSGFuZGxlclR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJu
IHN0YXRpY19jYXN0PEhhbmRsZXJUeXBlPih0eXBlQml0cyk7IH0KICAgICB2b2lkIHNldFR5cGUo
SGFuZGxlclR5cGUgdHlwZSkgeyB0eXBlQml0cyA9IHN0YXRpY19jYXN0PHVpbnQzMl90Pih0eXBl
KTsgfQpAQCAtNTgsNiArNjQsMjMgQEAgc3RydWN0IEhhbmRsZXJJbmZvQmFzZSB7CiAKICAgICBi
b29sIGlzQ2F0Y2hIYW5kbGVyKCkgY29uc3QgeyByZXR1cm4gdHlwZSgpID09IEhhbmRsZXJUeXBl
OjpDYXRjaDsgfQogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgSGFuZGxlcj4KKyAgICBzdGF0aWMg
SGFuZGxlciogaGFuZGxlckZvckluZGV4KFZlY3RvcjxIYW5kbGVyPiYgZXhlcHRpb25IYW5kbGVy
cywgdW5zaWduZWQgaW5kZXgsIFJlcXVpcmVkSGFuZGxlciByZXF1aXJlZEhhbmRsZXIpCisgICAg
eworICAgICAgICBmb3IgKEhhbmRsZXImIGhhbmRsZXIgOiBleGVwdGlvbkhhbmRsZXJzKSB7Cisg
ICAgICAgICAgICBpZiAoKHJlcXVpcmVkSGFuZGxlciA9PSBSZXF1aXJlZEhhbmRsZXI6OkNhdGNo
SGFuZGxlcikgJiYgIWhhbmRsZXIuaXNDYXRjaEhhbmRsZXIoKSkKKyAgICAgICAgICAgICAgICBj
b250aW51ZTsKKworICAgICAgICAgICAgLy8gSGFuZGxlcnMgYXJlIG9yZGVyZWQgaW5uZXJtb3N0
IGZpcnN0LCBzbyB0aGUgZmlyc3QgaGFuZGxlciB3ZSBlbmNvdW50ZXIKKyAgICAgICAgICAgIC8v
IHRoYXQgY29udGFpbnMgdGhlIHNvdXJjZSBhZGRyZXNzIGlzIHRoZSBjb3JyZWN0IGhhbmRsZXIg
dG8gdXNlLgorICAgICAgICAgICAgLy8gVGhpcyBpbmRleCB1c2VkIGlzIGVpdGhlciB0aGUgQnl0
ZWNvZGVPZmZzZXQgb3IgYSBDYWxsU2l0ZUluZGV4LgorICAgICAgICAgICAgaWYgKGhhbmRsZXIu
c3RhcnQgPD0gaW5kZXggJiYgaGFuZGxlci5lbmQgPiBpbmRleCkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gJmhhbmRsZXI7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICB9CisKICAgICB1aW50MzJfdCBzdGFydDsKICAgICB1aW50MzJfdCBlbmQ7CiAgICAgdWludDMy
X3QgdGFyZ2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09w
Y29kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCmluZGV4IDIw
MWQ5NmMyZDliNTBiYTY1ZDcyMTI5N2JiMmVhYjMzMDQ1ZTc2YzUuLjI4MTdkZjc4MTE4NjMwZTc2
ZDI1ZTVjNTc1YTMzYzIyYmI3ZjFiZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9PcGNvZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
T3Bjb2RlLmgKQEAgLTEyNiw2ICsxMjYsMzIgQEAgaW5saW5lIHNpemVfdCBvcGNvZGVMZW5ndGgo
T3Bjb2RlSUQgb3Bjb2RlKQogICAgIHJldHVybiAwOwogfQogCitpbmxpbmUgYm9vbCBpc0JyYW5j
aChPcGNvZGVJRCBvcGNvZGVJRCkKK3sKKyAgICBzd2l0Y2ggKG9wY29kZUlEKSB7CisgICAgY2Fz
ZSBvcF9qbXA6CisgICAgY2FzZSBvcF9qdHJ1ZToKKyAgICBjYXNlIG9wX2pmYWxzZToKKyAgICBj
YXNlIG9wX2plcV9udWxsOgorICAgIGNhc2Ugb3Bfam5lcV9udWxsOgorICAgIGNhc2Ugb3Bfam5l
cV9wdHI6CisgICAgY2FzZSBvcF9qbGVzczoKKyAgICBjYXNlIG9wX2psZXNzZXE6CisgICAgY2Fz
ZSBvcF9qZ3JlYXRlcjoKKyAgICBjYXNlIG9wX2pncmVhdGVyZXE6CisgICAgY2FzZSBvcF9qbmxl
c3M6CisgICAgY2FzZSBvcF9qbmxlc3NlcToKKyAgICBjYXNlIG9wX2puZ3JlYXRlcjoKKyAgICBj
YXNlIG9wX2puZ3JlYXRlcmVxOgorICAgIGNhc2Ugb3Bfc3dpdGNoX2ltbToKKyAgICBjYXNlIG9w
X3N3aXRjaF9jaGFyOgorICAgIGNhc2Ugb3Bfc3dpdGNoX3N0cmluZzoKKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKwog
fSAvLyBuYW1lc3BhY2UgSlNDCiAKIG5hbWVzcGFjZSBXVEYgewpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmNwcAppbmRleCBkZmNi
NzEzOWMwMmEwNDdjYjEzNWJmNWQxNDhiNTRlZjhhZjdiM2Q3Li5iZDg0MGY4ZWE4MTM1OTVkNjcy
Yzk4YTY2NzAxYzM4ODdjNWQwODQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmNwcApAQCAtMjYsMTUgKzI2LDE1IEBACiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUHJlY2lzZUp1bXBUYXJnZXRzLmgiCiAKLSNp
bmNsdWRlICJJbnRlcnByZXRlci5oIgorI2luY2x1ZGUgIkludGVycHJldGVySW5saW5lcy5oIgog
I2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKLXRlbXBsYXRlIDxz
aXplX3QgdmVjdG9yU2l6ZT4KLXN0YXRpYyB2b2lkIGdldEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVP
ZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEludGVycHJldGVyKiBpbnRlcnByZXRlciwgSW5z
dHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgVmVj
dG9yPHVuc2lnbmVkLCB2ZWN0b3JTaXplPiYgb3V0KQordGVtcGxhdGUgPHNpemVfdCB2ZWN0b3JT
aXplLCB0eXBlbmFtZSBCbG9jaywgdHlwZW5hbWUgSW5zdHJ1Y3Rpb24+CitzdGF0aWMgdm9pZCBn
ZXRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KEJsb2NrKiBjb2RlQmxvY2ssIEludGVycHJl
dGVyKiBpbnRlcnByZXRlciwgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25l
ZCBieXRlY29kZU9mZnNldCwgVmVjdG9yPHVuc2lnbmVkLCB2ZWN0b3JTaXplPiYgb3V0KQogewot
ICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGluc3RydWN0
aW9uc0JlZ2luW2J5dGVjb2RlT2Zmc2V0XS51Lm9wY29kZSk7CisgICAgT3Bjb2RlSUQgb3Bjb2Rl
SUQgPSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25zQmVnaW5bYnl0ZWNvZGVP
ZmZzZXRdKTsKICAgICBJbnN0cnVjdGlvbiogY3VycmVudCA9IGluc3RydWN0aW9uc0JlZ2luICsg
Ynl0ZWNvZGVPZmZzZXQ7CiAgICAgc3dpdGNoIChvcGNvZGVJRCkgewogICAgIGNhc2Ugb3Bfam1w
OgpAQCAtNTUsMjEgKzU1LDIwIEBAIHN0YXRpYyB2b2lkIGdldEp1bXBUYXJnZXRzRm9yQnl0ZWNv
ZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEludGVycHJldGVyKiBpCiAgICAgY2FzZSBv
cF9qbmxlc3NlcToKICAgICBjYXNlIG9wX2puZ3JlYXRlcjoKICAgICBjYXNlIG9wX2puZ3JlYXRl
cmVxOgotICAgIGNhc2Ugb3Bfc2F2ZTogLy8gVGhlIGp1bXAgb2Ygb3Bfc2F2ZSBpcyBwdXJlbHkg
Zm9yIGNhbGN1bGF0aW5nIGxpdmVuZXNzLgogICAgICAgICBvdXQuYXBwZW5kKGJ5dGVjb2RlT2Zm
c2V0ICsgY3VycmVudFszXS51Lm9wZXJhbmQpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIG9w
X3N3aXRjaF9pbW06CiAgICAgY2FzZSBvcF9zd2l0Y2hfY2hhcjogewotICAgICAgICBTaW1wbGVK
dW1wVGFibGUmIHRhYmxlID0gY29kZUJsb2NrLT5zd2l0Y2hKdW1wVGFibGUoY3VycmVudFsxXS51
Lm9wZXJhbmQpOworICAgICAgICBhdXRvJiB0YWJsZSA9IGNvZGVCbG9jay0+c3dpdGNoSnVtcFRh
YmxlKGN1cnJlbnRbMV0udS5vcGVyYW5kKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gdGFi
bGUuYnJhbmNoT2Zmc2V0cy5zaXplKCk7IGktLTspCiAgICAgICAgICAgICBvdXQuYXBwZW5kKGJ5
dGVjb2RlT2Zmc2V0ICsgdGFibGUuYnJhbmNoT2Zmc2V0c1tpXSk7CiAgICAgICAgIG91dC5hcHBl
bmQoYnl0ZWNvZGVPZmZzZXQgKyBjdXJyZW50WzJdLnUub3BlcmFuZCk7CiAgICAgICAgIGJyZWFr
OwogICAgIH0KICAgICBjYXNlIG9wX3N3aXRjaF9zdHJpbmc6IHsKLSAgICAgICAgU3RyaW5nSnVt
cFRhYmxlJiB0YWJsZSA9IGNvZGVCbG9jay0+c3RyaW5nU3dpdGNoSnVtcFRhYmxlKGN1cnJlbnRb
MV0udS5vcGVyYW5kKTsKLSAgICAgICAgU3RyaW5nSnVtcFRhYmxlOjpTdHJpbmdPZmZzZXRUYWJs
ZTo6aXRlcmF0b3IgaXRlciA9IHRhYmxlLm9mZnNldFRhYmxlLmJlZ2luKCk7Ci0gICAgICAgIFN0
cmluZ0p1bXBUYWJsZTo6U3RyaW5nT2Zmc2V0VGFibGU6Oml0ZXJhdG9yIGVuZCA9IHRhYmxlLm9m
ZnNldFRhYmxlLmVuZCgpOworICAgICAgICBhdXRvJiB0YWJsZSA9IGNvZGVCbG9jay0+c3RyaW5n
U3dpdGNoSnVtcFRhYmxlKGN1cnJlbnRbMV0udS5vcGVyYW5kKTsKKyAgICAgICAgYXV0byBpdGVy
ID0gdGFibGUub2Zmc2V0VGFibGUuYmVnaW4oKTsKKyAgICAgICAgYXV0byBlbmQgPSB0YWJsZS5v
ZmZzZXRUYWJsZS5lbmQoKTsKICAgICAgICAgZm9yICg7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpCiAg
ICAgICAgICAgICBvdXQuYXBwZW5kKGJ5dGVjb2RlT2Zmc2V0ICsgaXRlci0+dmFsdWUuYnJhbmNo
T2Zmc2V0KTsKICAgICAgICAgb3V0LmFwcGVuZChieXRlY29kZU9mZnNldCArIGN1cnJlbnRbMl0u
dS5vcGVyYW5kKTsKQEAgLTgzLDEzICs4MiwxOSBAQCBzdGF0aWMgdm9pZCBnZXRKdW1wVGFyZ2V0
c0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBJbnRlcnByZXRlciogaQog
ICAgIH0KIH0KIAotdm9pZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKENvZGVCbG9jayogY29k
ZUJsb2NrLCBWZWN0b3I8dW5zaWduZWQsIDMyPiYgb3V0KQorZW51bSBjbGFzcyBDb21wdXRlUHJl
Y2lzZUp1bXBUYXJnZXRzTW9kZSB7CisgICAgRm9sbG93Q29kZUJsb2NrQ2xhaW0sCisgICAgRm9y
Y2VDb21wdXRlLAorfTsKKwordGVtcGxhdGU8Q29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0c01vZGUg
TW9kZSwgdHlwZW5hbWUgQmxvY2ssIHR5cGVuYW1lIEluc3RydWN0aW9uLCBzaXplX3QgdmVjdG9y
U2l6ZT4KK3ZvaWQgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0c0ludGVybmFsKEJsb2NrKiBjb2Rl
QmxvY2ssIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgaW5zdHJ1Y3Rp
b25Db3VudCwgVmVjdG9yPHVuc2lnbmVkLCB2ZWN0b3JTaXplPiYgb3V0KQogewogICAgIEFTU0VS
VChvdXQuaXNFbXB0eSgpKTsKICAgICAKICAgICAvLyBXZSB3aWxsIGRlcml2ZSBhIHN1cGVyc2V0
IG9mIHRoZSBqdW1wIHRhcmdldHMgdGhhdCB0aGUgY29kZSBibG9jayB0aGlua3MgaXQgaGFzLgog
ICAgIC8vIFNvLCBpZiB0aGUgY29kZSBibG9jayBjbGFpbXMgdGhlcmUgYXJlIG5vbmUsIHRoZW4g
d2UgYXJlIGRvbmUuCi0gICAgaWYgKCFjb2RlQmxvY2stPm51bWJlck9mSnVtcFRhcmdldHMoKSkK
KyAgICBpZiAoTW9kZSA9PSBDb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzTW9kZTo6Rm9sbG93Q29k
ZUJsb2NrQ2xhaW0gJiYgIWNvZGVCbG9jay0+bnVtYmVyT2ZKdW1wVGFyZ2V0cygpKQogICAgICAg
ICByZXR1cm47CiAgICAgCiAgICAgZm9yICh1bnNpZ25lZCBpID0gY29kZUJsb2NrLT5udW1iZXJP
ZkV4Y2VwdGlvbkhhbmRsZXJzKCk7IGktLTspIHsKQEAgLTk5LDEwICsxMDQsOCBAQCB2b2lkIGNv
bXB1dGVQcmVjaXNlSnVtcFRhcmdldHMoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFZlY3Rvcjx1bnNp
Z25lZCwgMzI+JiBvdXQpCiAgICAgfQogCiAgICAgSW50ZXJwcmV0ZXIqIGludGVycHJldGVyID0g
Y29kZUJsb2NrLT52bSgpLT5pbnRlcnByZXRlcjsKLSAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rp
b25zQmVnaW4gPSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCk7Ci0gICAgdW5zaWdu
ZWQgaW5zdHJ1Y3Rpb25Db3VudCA9IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpOwog
ICAgIGZvciAodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQgPSAwOyBieXRlY29kZU9mZnNldCA8IGlu
c3RydWN0aW9uQ291bnQ7KSB7Ci0gICAgICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0
ZXItPmdldE9wY29kZUlEKGluc3RydWN0aW9uc0JlZ2luW2J5dGVjb2RlT2Zmc2V0XS51Lm9wY29k
ZSk7CisgICAgICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0ZXItPmdldE9wY29kZUlE
KGluc3RydWN0aW9uc0JlZ2luW2J5dGVjb2RlT2Zmc2V0XSk7CiAgICAgICAgIGdldEp1bXBUYXJn
ZXRzRm9yQnl0ZWNvZGVPZmZzZXQoY29kZUJsb2NrLCBpbnRlcnByZXRlciwgaW5zdHJ1Y3Rpb25z
QmVnaW4sIGJ5dGVjb2RlT2Zmc2V0LCBvdXQpOwogICAgICAgICBieXRlY29kZU9mZnNldCArPSBv
cGNvZGVMZW5ndGhzW29wY29kZUlEXTsKICAgICB9CkBAIC0xMjQsMTEgKzEyNywzNCBAQCB2b2lk
IGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFZlY3Rvcjx1
bnNpZ25lZCwgMzI+JiBvdXQpCiAgICAgb3V0LnNocmlua1RvRml0KCk7CiB9CiAKLXZvaWQgZmlu
ZEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIHVuc2ln
bmVkIGJ5dGVjb2RlT2Zmc2V0LCBWZWN0b3I8dW5zaWduZWQsIDE+JiBvdXQpCit2b2lkIGNvbXB1
dGVQcmVjaXNlSnVtcFRhcmdldHMoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFZlY3Rvcjx1bnNpZ25l
ZCwgMzI+JiBvdXQpCiB7Ci0gICAgSW50ZXJwcmV0ZXIqIGludGVycHJldGVyID0gY29kZUJsb2Nr
LT52bSgpLT5pbnRlcnByZXRlcjsKLSAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4g
PSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCk7Ci0gICAgZ2V0SnVtcFRhcmdldHNG
b3JCeXRlY29kZU9mZnNldChjb2RlQmxvY2ssIGludGVycHJldGVyLCBpbnN0cnVjdGlvbnNCZWdp
biwgYnl0ZWNvZGVPZmZzZXQsIG91dCk7CisgICAgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0c0lu
dGVybmFsPENvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHNNb2RlOjpGb2xsb3dDb2RlQmxvY2tDbGFp
bT4oY29kZUJsb2NrLCBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCksIGNvZGVCbG9j
ay0+aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpLCBvdXQpOworfQorCit2b2lkIGNvbXB1dGVQcmVjaXNl
SnVtcFRhcmdldHMoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEluc3RydWN0aW9uKiBpbnN0cnVjdGlv
bnNCZWdpbiwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCwgVmVjdG9yPHVuc2lnbmVkLCAzMj4m
IG91dCkKK3sKKyAgICBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzSW50ZXJuYWw8Q29tcHV0ZVBy
ZWNpc2VKdW1wVGFyZ2V0c01vZGU6OkZvbGxvd0NvZGVCbG9ja0NsYWltPihjb2RlQmxvY2ssIGlu
c3RydWN0aW9uc0JlZ2luLCBpbnN0cnVjdGlvbkNvdW50LCBvdXQpOworfQorCit2b2lkIGNvbXB1
dGVQcmVjaXNlSnVtcFRhcmdldHMoVW5saW5rZWRDb2RlQmxvY2sqIGNvZGVCbG9jaywgVW5saW5r
ZWRJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGluc3RydWN0aW9uQ291
bnQsIFZlY3Rvcjx1bnNpZ25lZCwgMzI+JiBvdXQpCit7CisgICAgY29tcHV0ZVByZWNpc2VKdW1w
VGFyZ2V0c0ludGVybmFsPENvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHNNb2RlOjpGb2xsb3dDb2Rl
QmxvY2tDbGFpbT4oY29kZUJsb2NrLCBpbnN0cnVjdGlvbnNCZWdpbiwgaW5zdHJ1Y3Rpb25Db3Vu
dCwgb3V0KTsKK30KKwordm9pZCByZWNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMoVW5saW5rZWRD
b2RlQmxvY2sqIGNvZGVCbG9jaywgVW5saW5rZWRJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVn
aW4sIHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQsIFZlY3Rvcjx1bnNpZ25lZD4mIG91dCkKK3sK
KyAgICBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzSW50ZXJuYWw8Q29tcHV0ZVByZWNpc2VKdW1w
VGFyZ2V0c01vZGU6OkZvcmNlQ29tcHV0ZT4oY29kZUJsb2NrLCBpbnN0cnVjdGlvbnNCZWdpbiwg
aW5zdHJ1Y3Rpb25Db3VudCwgb3V0KTsKK30KKwordm9pZCBmaW5kSnVtcFRhcmdldHNGb3JCeXRl
Y29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9u
c0JlZ2luLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgVmVjdG9yPHVuc2lnbmVkLCAxPiYgb3V0
KQoreworICAgIGdldEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoY29kZUJsb2NrLCBjb2Rl
QmxvY2stPnZtKCktPmludGVycHJldGVyLCBpbnN0cnVjdGlvbnNCZWdpbiwgYnl0ZWNvZGVPZmZz
ZXQsIG91dCk7Cit9CisKK3ZvaWQgZmluZEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoVW5s
aW5rZWRDb2RlQmxvY2sqIGNvZGVCbG9jaywgVW5saW5rZWRJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rp
b25zQmVnaW4sIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBWZWN0b3I8dW5zaWduZWQsIDE+JiBv
dXQpCit7CisgICAgZ2V0SnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChjb2RlQmxvY2ssIGNv
ZGVCbG9jay0+dm0oKS0+aW50ZXJwcmV0ZXIsIGluc3RydWN0aW9uc0JlZ2luLCBieXRlY29kZU9m
ZnNldCwgb3V0KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmgKaW5kZXggODUyNDEzZDc3
Yjc5ODk4NGIyN2NlZjBlZDYyYmM5NGM2ODllMjEyYy4uZGI5YmQzODNiOGFjNDU1N2QzMjY3MTdi
NzJkNGIwZjUwYjFkMTgzOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9QcmVjaXNlSnVtcFRhcmdldHMuaApAQCAtMzAsMTAgKzMwLDE4IEBACiAKIG5hbWVzcGFj
ZSBKU0MgewogCitjbGFzcyBVbmxpbmtlZENvZGVCbG9jazsKK3N0cnVjdCBVbmxpbmtlZEluc3Ry
dWN0aW9uOworCiAvLyBSZXR1cm4gYSBzb3J0ZWQgbGlzdCBvZiBieXRlY29kZSBpbmRleCB0aGF0
IGFyZSB0aGUgZGVzdGluYXRpb24gb2YgYSBqdW1wLgogdm9pZCBjb21wdXRlUHJlY2lzZUp1bXBU
YXJnZXRzKENvZGVCbG9jayosIFZlY3Rvcjx1bnNpZ25lZCwgMzI+JiBvdXQpOwordm9pZCBjb21w
dXRlUHJlY2lzZUp1bXBUYXJnZXRzKENvZGVCbG9jayosIEluc3RydWN0aW9uKiBpbnN0cnVjdGlv
bnNCZWdpbiwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCwgVmVjdG9yPHVuc2lnbmVkLCAzMj4m
IG91dCk7Cit2b2lkIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMoVW5saW5rZWRDb2RlQmxvY2sq
LCBVbmxpbmtlZEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgaW5zdHJ1
Y3Rpb25Db3VudCwgVmVjdG9yPHVuc2lnbmVkLCAzMj4mIG91dCk7CisKK3ZvaWQgcmVjb21wdXRl
UHJlY2lzZUp1bXBUYXJnZXRzKFVubGlua2VkQ29kZUJsb2NrKiwgVW5saW5rZWRJbnN0cnVjdGlv
biogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQsIFZlY3Rvcjx1
bnNpZ25lZD4mIG91dCk7CiAKLXZvaWQgZmluZEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQo
Q29kZUJsb2NrKiwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIFZlY3Rvcjx1bnNpZ25lZCwgMT4m
IG91dCk7Cit2b2lkIGZpbmRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayos
IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQs
IFZlY3Rvcjx1bnNpZ25lZCwgMT4mIG91dCk7Cit2b2lkIGZpbmRKdW1wVGFyZ2V0c0ZvckJ5dGVj
b2RlT2Zmc2V0KFVubGlua2VkQ29kZUJsb2NrKiwgVW5saW5rZWRJbnN0cnVjdGlvbiogaW5zdHJ1
Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBWZWN0b3I8dW5zaWduZWQsIDE+
JiBvdXQpOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKaW5kZXggMTk1Y2Y2MGM5N2Iz
ZWRjNmQxYzY4M2JjOGFkOGNhNDNkYzA3NWZmYS4uNDExMjEwMmIxY2E2NGNlNzQ5MjdiYjY4ZDZi
N2FmYWFjYjBlNDljYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1VubGlua2VkQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiVW5s
aW5rZWRDb2RlQmxvY2suaCIKIAogI2luY2x1ZGUgIkJ5dGVjb2RlR2VuZXJhdG9yLmgiCisjaW5j
bHVkZSAiQnl0ZWNvZGVSZXdyaXRlci5oIgogI2luY2x1ZGUgIkNsYXNzSW5mby5oIgogI2luY2x1
ZGUgIkNvZGVDYWNoZS5oIgogI2luY2x1ZGUgIkV4ZWN1dGFibGUuaCIKQEAgLTM2LDYgKzM3LDcg
QEAKICNpbmNsdWRlICJKU1N0cmluZy5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNs
dWRlICJQYXJzZXIuaCIKKyNpbmNsdWRlICJQcmVjaXNlSnVtcFRhcmdldHMuaCIKICNpbmNsdWRl
ICJTb3VyY2VQcm92aWRlci5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZS5oIgogI2luY2x1ZGUgIlN5
bWJvbFRhYmxlLmgiCkBAIC0zNjIsNSArMzY0LDExMSBAQCBjb25zdCBVbmxpbmtlZEluc3RydWN0
aW9uU3RyZWFtJiBVbmxpbmtlZENvZGVCbG9jazo6aW5zdHJ1Y3Rpb25zKCkgY29uc3QKICAgICBy
ZXR1cm4gKm1fdW5saW5rZWRJbnN0cnVjdGlvbnM7CiB9CiAKK1VubGlua2VkSGFuZGxlckluZm8q
IFVubGlua2VkQ29kZUJsb2NrOjpoYW5kbGVyRm9yQnl0ZWNvZGVPZmZzZXQodW5zaWduZWQgYnl0
ZWNvZGVPZmZzZXQsIFJlcXVpcmVkSGFuZGxlciByZXF1aXJlZEhhbmRsZXIpCit7CisgICAgcmV0
dXJuIGhhbmRsZXJGb3JJbmRleChieXRlY29kZU9mZnNldCwgcmVxdWlyZWRIYW5kbGVyKTsKK30K
KworVW5saW5rZWRIYW5kbGVySW5mbyogVW5saW5rZWRDb2RlQmxvY2s6OmhhbmRsZXJGb3JJbmRl
eCh1bnNpZ25lZCBpbmRleCwgUmVxdWlyZWRIYW5kbGVyIHJlcXVpcmVkSGFuZGxlcikKK3sKKyAg
ICBpZiAoIW1fcmFyZURhdGEpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBV
bmxpbmtlZEhhbmRsZXJJbmZvOjpoYW5kbGVyRm9ySW5kZXgobV9yYXJlRGF0YS0+bV9leGNlcHRp
b25IYW5kbGVycywgaW5kZXgsIHJlcXVpcmVkSGFuZGxlcik7Cit9CisKK3ZvaWQgVW5saW5rZWRD
b2RlQmxvY2s6OmFwcGx5TW9kaWZpY2F0aW9uKEJ5dGVjb2RlUmV3cml0ZXImIGluc2VydGlvblNl
dCkKK3sKKyAgICAvLyBCZWZvcmUgYXBwbHlpbmcgdGhlIGNoYW5nZXMsIHdlIGFkanVzdCB0aGUg
anVtcHMgYmFzZWQgb24gdGhlIG9yaWdpbmFsIGJ5dGVjb2RlIG9mZnNldCwgdGhlIG9mZnNldCB0
byB0aGUganVtcCB0YXJnZXQsIGFuZAorICAgIC8vIHRoZSBpbnNlcnRpb24gaW5mb3JtYXRpb24u
CisKKyAgICBCeXRlY29kZUdyYXBoPFVubGlua2VkQ29kZUJsb2NrPiYgZ3JhcGggPSBpbnNlcnRp
b25TZXQuZ3JhcGgoKTsKKyAgICBVbmxpbmtlZEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdp
biA9IGdyYXBoLmluc3RydWN0aW9ucygpLmJlZ2luKCk7CisgICAgZm9yIChpbnQgYnl0ZWNvZGVP
ZmZzZXQgPSAwLCBpbnN0cnVjdGlvbkNvdW50ID0gZ3JhcGguaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgp
OyBieXRlY29kZU9mZnNldCA8IGluc3RydWN0aW9uQ291bnQ7KSB7CisgICAgICAgIFVubGlua2Vk
SW5zdHJ1Y3Rpb24qIGN1cnJlbnQgPSBpbnN0cnVjdGlvbnNCZWdpbiArIGJ5dGVjb2RlT2Zmc2V0
OworICAgICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGN1cnJlbnRbMF0udS5vcGNvZGU7CisKKyAg
ICAgICAgc3dpdGNoIChvcGNvZGVJRCkgeworICAgICAgICBjYXNlIG9wX2ptcDoKKyAgICAgICAg
ICAgIGN1cnJlbnRbMV0udS5vcGVyYW5kID0gaW5zZXJ0aW9uU2V0LmFkanVzdE9mZnNldChieXRl
Y29kZU9mZnNldCwgYnl0ZWNvZGVPZmZzZXQgKyBjdXJyZW50WzFdLnUub3BlcmFuZCk7CisgICAg
ICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIG9wX2p0cnVlOgorICAgICAgICBjYXNlIG9w
X2pmYWxzZToKKyAgICAgICAgY2FzZSBvcF9qZXFfbnVsbDoKKyAgICAgICAgY2FzZSBvcF9qbmVx
X251bGw6CisgICAgICAgICAgICBjdXJyZW50WzJdLnUub3BlcmFuZCA9IGluc2VydGlvblNldC5h
ZGp1c3RPZmZzZXQoYnl0ZWNvZGVPZmZzZXQsIGJ5dGVjb2RlT2Zmc2V0ICsgY3VycmVudFsyXS51
Lm9wZXJhbmQpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBvcF9qbmVxX3B0
cjoKKyAgICAgICAgY2FzZSBvcF9qbGVzczoKKyAgICAgICAgY2FzZSBvcF9qbGVzc2VxOgorICAg
ICAgICBjYXNlIG9wX2pncmVhdGVyOgorICAgICAgICBjYXNlIG9wX2pncmVhdGVyZXE6CisgICAg
ICAgIGNhc2Ugb3Bfam5sZXNzOgorICAgICAgICBjYXNlIG9wX2pubGVzc2VxOgorICAgICAgICBj
YXNlIG9wX2puZ3JlYXRlcjoKKyAgICAgICAgY2FzZSBvcF9qbmdyZWF0ZXJlcToKKyAgICAgICAg
ICAgIGN1cnJlbnRbM10udS5vcGVyYW5kID0gaW5zZXJ0aW9uU2V0LmFkanVzdE9mZnNldChieXRl
Y29kZU9mZnNldCwgYnl0ZWNvZGVPZmZzZXQgKyBjdXJyZW50WzNdLnUub3BlcmFuZCk7CisgICAg
ICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIG9wX3N3aXRjaF9pbW06CisgICAgICAgIGNh
c2Ugb3Bfc3dpdGNoX2NoYXI6IHsKKyAgICAgICAgICAgIGF1dG8mIHRhYmxlID0gc3dpdGNoSnVt
cFRhYmxlKGN1cnJlbnRbMV0udS5vcGVyYW5kKTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IHRhYmxlLmJyYW5jaE9mZnNldHMuc2l6ZSgpOyBpLS07KQorICAgICAgICAgICAgICAgIHRh
YmxlLmJyYW5jaE9mZnNldHNbaV0gPSBpbnNlcnRpb25TZXQuYWRqdXN0T2Zmc2V0KGJ5dGVjb2Rl
T2Zmc2V0LCBieXRlY29kZU9mZnNldCArIHRhYmxlLmJyYW5jaE9mZnNldHNbaV0pOworICAgICAg
ICAgICAgY3VycmVudFsyXS51Lm9wZXJhbmQgPSBpbnNlcnRpb25TZXQuYWRqdXN0T2Zmc2V0KGJ5
dGVjb2RlT2Zmc2V0LCBieXRlY29kZU9mZnNldCArIGN1cnJlbnRbMl0udS5vcGVyYW5kKTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBvcF9zd2l0Y2hfc3Ry
aW5nOiB7CisgICAgICAgICAgICBhdXRvJiB0YWJsZSA9IHN0cmluZ1N3aXRjaEp1bXBUYWJsZShj
dXJyZW50WzFdLnUub3BlcmFuZCk7CisgICAgICAgICAgICBhdXRvIGl0ZXIgPSB0YWJsZS5vZmZz
ZXRUYWJsZS5iZWdpbigpOworICAgICAgICAgICAgYXV0byBlbmQgPSB0YWJsZS5vZmZzZXRUYWJs
ZS5lbmQoKTsKKyAgICAgICAgICAgIGZvciAoOyBpdGVyICE9IGVuZDsgKytpdGVyKQorICAgICAg
ICAgICAgICAgIGl0ZXItPnZhbHVlLmJyYW5jaE9mZnNldCA9IGluc2VydGlvblNldC5hZGp1c3RP
ZmZzZXQoYnl0ZWNvZGVPZmZzZXQsIGJ5dGVjb2RlT2Zmc2V0ICsgaXRlci0+dmFsdWUuYnJhbmNo
T2Zmc2V0KTsKKyAgICAgICAgICAgIGN1cnJlbnRbMl0udS5vcGVyYW5kID0gaW5zZXJ0aW9uU2V0
LmFkanVzdE9mZnNldChieXRlY29kZU9mZnNldCwgYnl0ZWNvZGVPZmZzZXQgKyBjdXJyZW50WzJd
LnUub3BlcmFuZCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGJ5dGVjb2Rl
T2Zmc2V0ICs9IG9wY29kZUxlbmd0aChvcGNvZGVJRCk7CisgICAgfQorCisgICAgLy8gVGhlbiwg
ZXhjZXB0aW9uIGhhbmRsZXJzIHNob3VsZCBiZSBhZGp1c3RlZC4KKyAgICBpZiAobV9yYXJlRGF0
YSkgeworICAgICAgICBmb3IgKFVubGlua2VkSGFuZGxlckluZm8mIGhhbmRsZXIgOiBtX3JhcmVE
YXRhLT5tX2V4Y2VwdGlvbkhhbmRsZXJzKSB7CisgICAgICAgICAgICBoYW5kbGVyLnRhcmdldCA9
IGluc2VydGlvblNldC5hZGp1c3RPZmZzZXQoMCwgaGFuZGxlci50YXJnZXQpOworICAgICAgICAg
ICAgaGFuZGxlci5zdGFydCA9IGluc2VydGlvblNldC5hZGp1c3RPZmZzZXQoMCwgaGFuZGxlci5z
dGFydCk7CisgICAgICAgICAgICBoYW5kbGVyLmVuZCA9IGluc2VydGlvblNldC5hZGp1c3RPZmZz
ZXQoMCwgaGFuZGxlci5lbmQpOworICAgICAgICB9CisKKyAgICAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBtX3JhcmVEYXRhLT5tX29wUHJvZmlsZUNvbnRyb2xGbG93Qnl0ZWNvZGVPZmZzZXRz
LnNpemUoKTsgKytpKQorICAgICAgICAgICAgbV9yYXJlRGF0YS0+bV9vcFByb2ZpbGVDb250cm9s
Rmxvd0J5dGVjb2RlT2Zmc2V0c1tpXSA9IGluc2VydGlvblNldC5hZGp1c3RPZmZzZXQoMCwgbV9y
YXJlRGF0YS0+bV9vcFByb2ZpbGVDb250cm9sRmxvd0J5dGVjb2RlT2Zmc2V0c1tpXSk7CisKKyAg
ICAgICAgaWYgKCFtX3JhcmVEYXRhLT5tX3R5cGVQcm9maWxlckluZm9NYXAuaXNFbXB0eSgpKSB7
CisgICAgICAgICAgICBIYXNoTWFwPHVuc2lnbmVkLCBSYXJlRGF0YTo6VHlwZVByb2ZpbGVyRXhw
cmVzc2lvblJhbmdlPiBhZGp1c3RlZFR5cGVQcm9maWxlckluZm9NYXA7CisgICAgICAgICAgICBm
b3IgKGF1dG8mIGVudHJ5IDogbV9yYXJlRGF0YS0+bV90eXBlUHJvZmlsZXJJbmZvTWFwKQorICAg
ICAgICAgICAgICAgIGFkanVzdGVkVHlwZVByb2ZpbGVySW5mb01hcC5zZXQoaW5zZXJ0aW9uU2V0
LmFkanVzdE9mZnNldCgwLCBlbnRyeS5rZXkpLCBlbnRyeS52YWx1ZSk7CisgICAgICAgICAgICBt
X3JhcmVEYXRhLT5tX3R5cGVQcm9maWxlckluZm9NYXAuc3dhcChhZGp1c3RlZFR5cGVQcm9maWxl
ckluZm9NYXApOworICAgICAgICB9CisgICAgfQorCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBtX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zLnNpemUoKTsgKytpKQorICAgICAgICBtX3By
b3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zW2ldID0gaW5zZXJ0aW9uU2V0LmFkanVzdE9mZnNldCgw
LCBtX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zW2ldKTsKKworICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgbV9leHByZXNzaW9uSW5mby5zaXplKCk7ICsraSkKKyAgICAgICAgbV9leHByZXNz
aW9uSW5mb1tpXS5pbnN0cnVjdGlvbk9mZnNldCA9IGluc2VydGlvblNldC5hZGp1c3RPZmZzZXQo
MCwgbV9leHByZXNzaW9uSW5mb1tpXS5pbnN0cnVjdGlvbk9mZnNldCk7CisKKyAgICAvLyBUaGVu
LCBtb2RpZnkgdGhlIHVubGlua2VkIGluc3RydWN0aW9ucy4KKyAgICBpbnNlcnRpb25TZXQuYXBw
bHlNb2RpZmljYXRpb24oKTsKKworICAgIC8vIEFuZCByZWNvbXB1dGUgdGhlIGp1bXAgdGFyZ2V0
IGJhc2VkIG9uIHRoZSBtb2RpZmllZCB1bmxpbmtlZCBpbnN0cnVjdGlvbnMuCisgICAgbV9qdW1w
VGFyZ2V0cy5jbGVhcigpOworICAgIHJlY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyh0aGlzLCBn
cmFwaC5pbnN0cnVjdGlvbnMoKS5iZWdpbigpLCBncmFwaC5pbnN0cnVjdGlvbnMoKS5zaXplKCks
IG1fanVtcFRhcmdldHMpOworfQorCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKaW5kZXggZjJmMzAxYWNkNmRkZDAwNDg3ODk3
MzY4NjYzZGVmZDlhNTYxNGUwMy4uNzZhOTM4YWZhZmZmYWM2MDNjMmI1N2ZiYmVkOTgwZGQ0YmEy
Nzk4ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2Vk
Q29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2Vk
Q29kZUJsb2NrLmgKQEAgLTQ1LDYgKzQ1LDggQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKK2NsYXNz
IEJ5dGVjb2RlUmV3cml0ZXI7CitjbGFzcyBEZWJ1Z2dlcjsKIGNsYXNzIEZ1bmN0aW9uTWV0YWRh
dGFOb2RlOwogY2xhc3MgRnVuY3Rpb25FeGVjdXRhYmxlOwogY2xhc3MgSlNTY29wZTsKQEAgLTY1
LDcgKzY3LDExIEBAIHR5cGVkZWYgdW5zaWduZWQgVW5saW5rZWRPYmplY3RBbGxvY2F0aW9uUHJv
ZmlsZTsKIHR5cGVkZWYgdW5zaWduZWQgVW5saW5rZWRMTEludENhbGxMaW5rSW5mbzsKIAogc3Ry
dWN0IFVubGlua2VkU3RyaW5nSnVtcFRhYmxlIHsKLSAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRy
PFN0cmluZ0ltcGw+LCBpbnQzMl90PiBTdHJpbmdPZmZzZXRUYWJsZTsKKyAgICBzdHJ1Y3QgT2Zm
c2V0TG9jYXRpb24geworICAgICAgICBpbnQzMl90IGJyYW5jaE9mZnNldDsKKyAgICB9OworCisg
ICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxTdHJpbmdJbXBsPiwgT2Zmc2V0TG9jYXRpb24+IFN0
cmluZ09mZnNldFRhYmxlOwogICAgIFN0cmluZ09mZnNldFRhYmxlIG9mZnNldFRhYmxlOwogCiAg
ICAgaW5saW5lIGludDMyX3Qgb2Zmc2V0Rm9yVmFsdWUoU3RyaW5nSW1wbCogdmFsdWUsIGludDMy
X3QgZGVmYXVsdE9mZnNldCkKQEAgLTc0LDcgKzgwLDcgQEAgc3RydWN0IFVubGlua2VkU3RyaW5n
SnVtcFRhYmxlIHsKICAgICAgICAgU3RyaW5nT2Zmc2V0VGFibGU6OmNvbnN0X2l0ZXJhdG9yIGxv
YyA9IG9mZnNldFRhYmxlLmZpbmQodmFsdWUpOwogICAgICAgICBpZiAobG9jID09IGVuZCkKICAg
ICAgICAgICAgIHJldHVybiBkZWZhdWx0T2Zmc2V0OwotICAgICAgICByZXR1cm4gbG9jLT52YWx1
ZTsKKyAgICAgICAgcmV0dXJuIGxvYy0+dmFsdWUuYnJhbmNoT2Zmc2V0OwogICAgIH0KIAogfTsK
QEAgLTEwMiw2ICsxMDgsOCBAQCBzdHJ1Y3QgVW5saW5rZWRJbnN0cnVjdGlvbiB7CiAgICAgfSB1
OwogfTsKIAorY2xhc3MgQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb247CisKIGNsYXNzIFVubGlu
a2VkQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBKU0Nl
bGwgQmFzZTsKQEAgLTExMSw2ICsxMTksOSBAQCBjbGFzcyBVbmxpbmtlZENvZGVCbG9jayA6IHB1
YmxpYyBKU0NlbGwgewogCiAgICAgZW51bSB7IENhbGxGdW5jdGlvbiwgQXBwbHlGdW5jdGlvbiB9
OwogCisgICAgdHlwZWRlZiBVbmxpbmtlZEluc3RydWN0aW9uIEluc3RydWN0aW9uOworICAgIHR5
cGVkZWYgVmVjdG9yPFVubGlua2VkSW5zdHJ1Y3Rpb24sIDAsIFVuc2FmZVZlY3Rvck92ZXJmbG93
PiBVbnBhY2tlZEluc3RydWN0aW9uczsKKwogICAgIGJvb2wgaXNDb25zdHJ1Y3RvcigpIGNvbnN0
IHsgcmV0dXJuIG1faXNDb25zdHJ1Y3RvcjsgfQogICAgIGJvb2wgaXNTdHJpY3RNb2RlKCkgY29u
c3QgeyByZXR1cm4gbV9pc1N0cmljdE1vZGU7IH0KICAgICBib29sIHVzZXNFdmFsKCkgY29uc3Qg
eyByZXR1cm4gbV91c2VzRXZhbDsgfQpAQCAtMjAwLDYgKzIxMSw5IEBAIGNsYXNzIFVubGlua2Vk
Q29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgdW5zaWduZWQganVtcFRhcmdldChpbnQg
aW5kZXgpIGNvbnN0IHsgcmV0dXJuIG1fanVtcFRhcmdldHNbaW5kZXhdOyB9CiAgICAgdW5zaWdu
ZWQgbGFzdEp1bXBUYXJnZXQoKSBjb25zdCB7IHJldHVybiBtX2p1bXBUYXJnZXRzLmxhc3QoKTsg
fQogCisgICAgVW5saW5rZWRIYW5kbGVySW5mbyogaGFuZGxlckZvckJ5dGVjb2RlT2Zmc2V0KHVu
c2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBSZXF1aXJlZEhhbmRsZXIgPSBSZXF1aXJlZEhhbmRsZXI6
OkFueUhhbmRsZXIpOworICAgIFVubGlua2VkSGFuZGxlckluZm8qIGhhbmRsZXJGb3JJbmRleCh1
bnNpZ25lZCwgUmVxdWlyZWRIYW5kbGVyID0gUmVxdWlyZWRIYW5kbGVyOjpBbnlIYW5kbGVyKTsK
KwogICAgIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2lzQnVpbHRp
bkZ1bmN0aW9uOyB9CiAKICAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kKCkgY29u
c3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Q29uc3RydWN0b3JLaW5kPihtX2NvbnN0cnVjdG9yS2lu
ZCk7IH0KQEAgLTM3OSw2ICszOTMsOCBAQCBjbGFzcyBVbmxpbmtlZENvZGVCbG9jayA6IHB1Ymxp
YyBKU0NlbGwgewogICAgIH0KIAogcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgQnl0ZWNvZGVS
ZXdyaXRlcjsKKyAgICB2b2lkIGFwcGx5TW9kaWZpY2F0aW9uKEJ5dGVjb2RlUmV3cml0ZXImKTsK
IAogICAgIHZvaWQgY3JlYXRlUmFyZURhdGFJZk5lY2Vzc2FyeSgpCiAgICAgewpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZpcnR1YWxSZWdpc3Rlci5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZpcnR1YWxSZWdpc3Rlci5oCmluZGV4IGQzZGY0
MDk1N2I1MTc1NjhlM2FlZmJlM2ExYTYwOWZkODc4YmFhYzMuLmRhZjUwOWY2YzdkMTE1ZTQ1YmNi
MTA3YzY3ZDNkMzhkODA0ZjI4OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9WaXJ0dWFsUmVnaXN0ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvVmlydHVhbFJlZ2lzdGVyLmgKQEAgLTI2LDggKzI2LDggQEAKICNpZm5kZWYgVmlydHVh
bFJlZ2lzdGVyX2gKICNkZWZpbmUgVmlydHVhbFJlZ2lzdGVyX2gKIAorI2luY2x1ZGUgIkJ5dGVj
b2RlQ29udmVudGlvbnMuaCIKICNpbmNsdWRlICJDYWxsRnJhbWUuaCIKLQogI2luY2x1ZGUgPHd0
Zi9QcmludFN0cmVhbS5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTEwMyw3ICsxMDMsNyBAQCBj
bGFzcyBWaXJ0dWFsUmVnaXN0ZXIgewogCiBwcml2YXRlOgogICAgIHN0YXRpYyBjb25zdCBpbnQg
c19pbnZhbGlkVmlydHVhbFJlZ2lzdGVyID0gMHgzZmZmZmZmZjsKLSAgICBzdGF0aWMgY29uc3Qg
aW50IHNfZmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXggPSAweDQwMDAwMDAwOworICAgIHN0YXRp
YyBjb25zdCBpbnQgc19maXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCA9IEZpcnN0Q29uc3RhbnRS
ZWdpc3RlckluZGV4OwogCiAgICAgc3RhdGljIGludCBsb2NhbFRvT3BlcmFuZChpbnQgbG9jYWwp
IHsgcmV0dXJuIC0xIC0gbG9jYWw7IH0KICAgICBzdGF0aWMgaW50IG9wZXJhbmRUb0xvY2FsKGlu
dCBvcGVyYW5kKSB7IHJldHVybiAtMSAtIG9wZXJhbmQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXgg
MzEyZDg5ZjdhZGM3M2YwN2RjNTE3OWI3NWU1NzVjNTU5MDI2NmRiOC4uNTMzZWYwODk4Yjc3ZGJk
YjM2ZTRhMjUzZDA3NGRkMmQ0NzIyMDE4ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTMzLDYgKzMz
LDcgQEAKIAogI2luY2x1ZGUgIkFyaXRoUHJvZmlsZS5oIgogI2luY2x1ZGUgIkJ1aWx0aW5FeGVj
dXRhYmxlcy5oIgorI2luY2x1ZGUgIkJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmgiCiAjaW5j
bHVkZSAiQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIu
aCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCkBAIC0xNTUsNiArMTU2LDEwIEBAIFBhcnNlckVy
cm9yIEJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZSgpCiAgICAgICAgIG1fY29kZUJsb2NrLT5h
ZGRFeGNlcHRpb25IYW5kbGVyKGluZm8pOwogICAgIH0KICAgICAKKworICAgIGlmIChtX2NvZGVC
bG9jay0+cGFyc2VNb2RlKCkgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JCb2R5TW9kZSkK
KyAgICAgICAgcGVyZm9ybUdlbmVyYXRvcmlmaWNhdGlvbihtX2NvZGVCbG9jay5nZXQoKSwgbV9p
bnN0cnVjdGlvbnMsIG1fZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZS5nZXQoKSwgbV9nZW5lcmF0
b3JGcmFtZVN5bWJvbFRhYmxlSW5kZXgpOworCiAgICAgbV9jb2RlQmxvY2stPnNldEluc3RydWN0
aW9ucyhzdGQ6Om1ha2VfdW5pcXVlPFVubGlua2VkSW5zdHJ1Y3Rpb25TdHJlYW0+KG1faW5zdHJ1
Y3Rpb25zKSk7CiAKICAgICBtX2NvZGVCbG9jay0+c2hyaW5rVG9GaXQoKTsKQEAgLTI2MiwxMCAr
MjY3LDE0IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1
bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtlCiAgICAgYm9vbCBzaG91bGRDYXB0dXJl
QWxsT2ZUaGVUaGluZ3MgPSBtX3Nob3VsZEVtaXREZWJ1Z0hvb2tzIHx8IGNvZGVCbG9jay0+dXNl
c0V2YWwoKTsKICAgICBib29sIG5lZWRzQXJndW1lbnRzID0gKGZ1bmN0aW9uTm9kZS0+dXNlc0Fy
Z3VtZW50cygpIHx8IGNvZGVCbG9jay0+dXNlc0V2YWwoKSB8fCAoZnVuY3Rpb25Ob2RlLT51c2Vz
QXJyb3dGdW5jdGlvbigpICYmICFjb2RlQmxvY2stPmlzQXJyb3dGdW5jdGlvbigpICYmIGlzQXJn
dW1lbnRzVXNlZEluSW5uZXJBcnJvd0Z1bmN0aW9uKCkpKTsKIAotICAgIC8vIEdlbmVyYXRvciBu
ZXZlciBwcm92aWRlcyAiYXJndW1lbnRzIi4gImFyZ3VtZW50cyIgcmVmZXJlbmNlIHdpbGwgYmUg
cmVzb2x2ZWQgaW4gYW4gdXBwZXIgZ2VuZXJhdG9yIGZ1bmN0aW9uIHNjb3BlLgotICAgIGlmIChw
YXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JCb2R5TW9kZSkKKyAgICBpZiAo
cGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yQm9keU1vZGUpIHsKKyAgICAg
ICAgLy8gR2VuZXJhdG9yIG5ldmVyIHByb3ZpZGVzICJhcmd1bWVudHMiLiAiYXJndW1lbnRzIiBy
ZWZlcmVuY2Ugd2lsbCBiZSByZXNvbHZlZCBpbiBhbiB1cHBlciBnZW5lcmF0b3IgZnVuY3Rpb24g
c2NvcGUuCiAgICAgICAgIG5lZWRzQXJndW1lbnRzID0gZmFsc2U7CiAKKyAgICAgICAgLy8gR2Vu
ZXJhdG9yIHVzZXMgdGhlIHZhciBzY29wZSB0byBzYXZlIGFuZCByZXN1bWUgaXRzIHZhcmlhYmxl
cy4gU28gdGhlIGxleGljYWwgc2NvcGUgaXMgYWx3YXlzIGluc3RhbnRpYXRlZC4KKyAgICAgICAg
c2hvdWxkQ2FwdHVyZVNvbWVPZlRoZVRoaW5ncyA9IHRydWU7CisgICAgfQorCiAgICAgaWYgKHBh
cnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvcldyYXBwZXJGdW5jdGlvbk1vZGUg
JiYgbmVlZHNBcmd1bWVudHMpIHsKICAgICAgICAgLy8gR2VuZXJhdG9yIGRvZXMgbm90IHByb3Zp
ZGUgImFyZ3VtZW50cyIuIEluc3RlYWQsIHdyYXBwaW5nIEdlbmVyYXRvckZ1bmN0aW9uIHByb3Zp
ZGVzICJhcmd1bWVudHMiLgogICAgICAgICAvLyBUaGlzIGlzIGJlY2F1c2UgYXJndW1lbnRzIG9m
IGEgZ2VuZXJhdG9yIHNob3VsZCBiZSBldmFsdWF0ZWQgYmVmb3JlIHN0YXJ0aW5nIGl0LgpAQCAt
Mjc0LDcgKzI4Myw3IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYg
dm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtlCiAgICAgICAgIC8vICAgIGZ1
bmN0aW9uICpnZW4oYSwgYiA9IGhlbGxvKCkpCiAgICAgICAgIC8vICAgIHsKICAgICAgICAgLy8g
ICAgICAgIHJldHVybiB7Ci0gICAgICAgIC8vICAgICAgICAgICAgQGdlbmVyYXRvck5leHQ6IGZ1
bmN0aW9uIChAZ2VuZXJhdG9yLCBAZ2VuZXJhdG9yU3RhdGUsIEBnZW5lcmF0b3JWYWx1ZSwgQGdl
bmVyYXRvclJlc3VtZU1vZGUpCisgICAgICAgIC8vICAgICAgICAgICAgQGdlbmVyYXRvck5leHQ6
IGZ1bmN0aW9uIChAZ2VuZXJhdG9yLCBAZ2VuZXJhdG9yU3RhdGUsIEBnZW5lcmF0b3JWYWx1ZSwg
QGdlbmVyYXRvclJlc3VtZU1vZGUsIEBnZW5lcmF0b3JGcmFtZSkKICAgICAgICAgLy8gICAgICAg
ICAgICB7CiAgICAgICAgIC8vICAgICAgICAgICAgICAgIGFyZ3VtZW50czsgIC8vIFRoaXMgYGFy
Z3VtZW50c2Agc2hvdWxkIHJlZmVyZW5jZSB0byB0aGUgZ2VuJ3MgYXJndW1lbnRzLgogICAgICAg
ICAvLyAgICAgICAgICAgICAgICAuLi4KQEAgLTMwMywyOCArMzEyLDE3IEBAIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25O
b2RlLCBVbmxpbmtlCiAgICAgICAgIHJldHVybiBjYXB0dXJlcyh1aWQpID8gVmFyS2luZDo6U2Nv
cGUgOiBWYXJLaW5kOjpTdGFjazsKICAgICB9OwogCi0gICAgZW1pdEVudGVyKCk7Ci0KLSAgICBh
bGxvY2F0ZUFuZEVtaXRTY29wZSgpOwotCiAgICAgbV9jYWxsZWVSZWdpc3Rlci5zZXRJbmRleChD
YWxsRnJhbWVTbG90OjpjYWxsZWUpOwogCiAgICAgaW5pdGlhbGl6ZVBhcmFtZXRlcnMocGFyYW1l
dGVycyk7CiAgICAgQVNTRVJUKCEoaXNTaW1wbGVQYXJhbWV0ZXJMaXN0ICYmIG1fcmVzdFBhcmFt
ZXRlcikpOwogCi0gICAgLy8gQmVmb3JlIGVtaXR0aW5nIGEgc2NvcGUgY3JlYXRpb24sIGVtaXQg
YSBnZW5lcmF0b3IgcHJvbG9ndWUgdGhhdCBjb250YWlucyBqdW1wIGJhc2VkIG9uIGEgZ2VuZXJh
dG9yJ3Mgc3RhdGUuCi0gICAgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVy
YXRvckJvZHlNb2RlKSB7Ci0gICAgICAgIG1fZ2VuZXJhdG9yUmVnaXN0ZXIgPSAmbV9wYXJhbWV0
ZXJzWzFdOwotCi0gICAgICAgIC8vIEp1bXAgd2l0aCBzd2l0Y2hfaW1tIGJhc2VkIG9uIEBnZW5l
cmF0b3JTdGF0ZS4gV2UgZG9uJ3QgdGFrZSB0aGUgY29yb3V0aW5lIHN0eWxlZCBnZW5lcmF0b3Ig
aW1wbGVtZW50YXRpb24uCi0gICAgICAgIC8vIFdoZW4gY2FsbGluZyBgbmV4dCgpYCwgd2Ugd291
bGQgbGlrZSB0byBlbnRlciB0aGUgc2FtZSBwcm9sb2d1ZSBpbnN0ZWFkIG9mIGp1bXBpbmcgYmFz
ZWQgb24gdGhlIHNhdmVkIGluc3RydWN0aW9uIHBvaW50ZXIuCi0gICAgICAgIC8vIEl0J3Mgc3Vp
dGFsZSBmb3IgaW5saW5pbmcsIGJlY2F1c2UgaXQganVzdCBpbmxpbmVzIG9uZSBgbmV4dGAgZnVu
Y3Rpb24gaW1wbGVtZW50YXRpb24uCisgICAgZW1pdEVudGVyKCk7CiAKLSAgICAgICAgYmVnaW5H
ZW5lcmF0b3IoZ2VuZXJhdG9yU3RhdGVSZWdpc3RlcigpKTsKKyAgICBpZiAocGFyc2VNb2RlID09
IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yQm9keU1vZGUpCisgICAgICAgIG1fZ2VuZXJhdG9y
UmVnaXN0ZXIgPSAmbV9wYXJhbWV0ZXJzWzFdOwogCi0gICAgICAgIC8vIEluaXRpYWwgc3RhdGUu
Ci0gICAgICAgIGVtaXRHZW5lcmF0b3JTdGF0ZUxhYmVsKCk7Ci0gICAgfQorICAgIGFsbG9jYXRl
QW5kRW1pdFNjb3BlKCk7CiAKICAgICBpZiAoZnVuY3Rpb25OYW1lSXNJblNjb3BlKGZ1bmN0aW9u
Tm9kZS0+aWRlbnQoKSwgZnVuY3Rpb25Ob2RlLT5mdW5jdGlvbk1vZGUoKSkpIHsKICAgICAgICAg
QVNTRVJUKHBhcnNlTW9kZSAhPSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckJvZHlNb2RlKTsK
QEAgLTY0MSw2ICs2MzksMTYgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9y
KFZNJiB2bSwgRnVuY3Rpb25Ob2RlKiBmdW5jdGlvbk5vZGUsIFVubGlua2UKICAgICAgICAgICAg
IGVtaXRMb2FkTmV3VGFyZ2V0RnJvbUFycm93RnVuY3Rpb25MZXhpY2FsRW52aXJvbm1lbnQoKTsK
ICAgICB9CiAgICAgCisgICAgLy8gU2V0IHVwIHRoZSBsZXhpY2FsIGVudmlyb25tZW50IHNjb3Bl
IGFzIHRoZSBnZW5lcmF0b3IgZnJhbWUuIFdlIHN0b3JlIHRoZSBzYXZlZCBhbmQgcmVzdW1lZCBn
ZW5lcmF0b3IgcmVnaXN0ZXJzIGludG8gdGhpcyBzY29wZSB3aXRoIHRoZSBzeW1ib2wga2V5cy4K
KyAgICAvLyBTaW5jZSB0aGV5IGFyZSBzeW1ib2wga2V5ZWQsIHRoZXNlIHZhcmlhYmxlcyBjYW5u
b3QgYmUgcmVhY2hlZCBmcm9tIHRoZSB1c3VhbCBjb2RlLgorICAgIGlmIChTb3VyY2VQYXJzZU1v
ZGU6OkdlbmVyYXRvckJvZHlNb2RlID09IHBhcnNlTW9kZSkgeworICAgICAgICBBU1NFUlQobV9s
ZXhpY2FsRW52aXJvbm1lbnRSZWdpc3Rlcik7CisgICAgICAgIG1fZ2VuZXJhdG9yRnJhbWVTeW1i
b2xUYWJsZS5zZXQoKm1fdm0sIGZ1bmN0aW9uU3ltYm9sVGFibGUpOworICAgICAgICBtX2dlbmVy
YXRvckZyYW1lU3ltYm9sVGFibGVJbmRleCA9IHN5bWJvbFRhYmxlQ29uc3RhbnRJbmRleDsKKyAg
ICAgICAgZW1pdE1vdmUoZ2VuZXJhdG9yRnJhbWVSZWdpc3RlcigpLCBtX2xleGljYWxFbnZpcm9u
bWVudFJlZ2lzdGVyKTsKKyAgICAgICAgZW1pdFB1dEJ5SWQoZ2VuZXJhdG9yUmVnaXN0ZXIoKSwg
cHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvckZyYW1lUHJpdmF0ZU5hbWUo
KSwgZ2VuZXJhdG9yRnJhbWVSZWdpc3RlcigpKTsKKyAgICB9CisKICAgICBib29sIHNob3VsZElu
aXRpYWxpemVCbG9ja1Njb3BlZEZ1bmN0aW9ucyA9IGZhbHNlOyAvLyBXZSBnZW5lcmF0ZSB0b3At
bGV2ZWwgZnVuY3Rpb24gZGVjbGFyYXRpb25zIGluIDo6Z2VuZXJhdGUoKS4KICAgICBwdXNoTGV4
aWNhbFNjb3BlKG1fc2NvcGVOb2RlLCBURFpDaGVja09wdGltaXphdGlvbjo6T3B0aW1pemUsIE5l
c3RlZFNjb3BlVHlwZTo6SXNOb3ROZXN0ZWQsIG51bGxwdHIsIHNob3VsZEluaXRpYWxpemVCbG9j
a1Njb3BlZEZ1bmN0aW9ucyk7CiB9CkBAIC0zNjcyLDggKzM2ODAsNyBAQCB2b2lkIEJ5dGVjb2Rl
R2VuZXJhdG9yOjplbWl0Q29tcGxleFBvcFNjb3BlcyhSZWdpc3RlcklEKiBzY29wZSwgQ29udHJv
bEZsb3dDb250ZQogICAgICAgICAgICAgaWYgKGZsaXBUcmllcykgewogICAgICAgICAgICAgICAg
IHdoaWxlIChtX3RyeUNvbnRleHRTdGFjay5zaXplKCkgIT0gZmluYWxseUNvbnRleHQudHJ5Q29u
dGV4dFN0YWNrU2l6ZSkgewogICAgICAgICAgICAgICAgICAgICBBU1NFUlQobV90cnlDb250ZXh0
U3RhY2suc2l6ZSgpID4gZmluYWxseUNvbnRleHQudHJ5Q29udGV4dFN0YWNrU2l6ZSk7Ci0gICAg
ICAgICAgICAgICAgICAgIFRyeUNvbnRleHQgY29udGV4dCA9IG1fdHJ5Q29udGV4dFN0YWNrLmxh
c3QoKTsKLSAgICAgICAgICAgICAgICAgICAgbV90cnlDb250ZXh0U3RhY2sucmVtb3ZlTGFzdCgp
OworICAgICAgICAgICAgICAgICAgICBUcnlDb250ZXh0IGNvbnRleHQgPSBtX3RyeUNvbnRleHRT
dGFjay50YWtlTGFzdCgpOwogICAgICAgICAgICAgICAgICAgICBUcnlSYW5nZSByYW5nZTsKICAg
ICAgICAgICAgICAgICAgICAgcmFuZ2Uuc3RhcnQgPSBjb250ZXh0LnN0YXJ0OwogICAgICAgICAg
ICAgICAgICAgICByYW5nZS5lbmQgPSBiZWZvcmVGaW5hbGx5OwpAQCAtMzk1Nyw3ICszOTY0LDcg
QEAgc3RhdGljIHZvaWQgcHJlcGFyZUp1bXBUYWJsZUZvclN0cmluZ1N3aXRjaChVbmxpbmtlZFN0
cmluZ0p1bXBUYWJsZSYganVtcFRhYmxlLAogICAgICAgICAKICAgICAgICAgQVNTRVJUKG5vZGVz
W2ldLT5pc1N0cmluZygpKTsKICAgICAgICAgU3RyaW5nSW1wbCogY2xhdXNlID0gc3RhdGljX2Nh
c3Q8U3RyaW5nTm9kZSo+KG5vZGVzW2ldKS0+dmFsdWUoKS5pbXBsKCk7Ci0gICAgICAgIGp1bXBU
YWJsZS5vZmZzZXRUYWJsZS5hZGQoY2xhdXNlLCBsYWJlbHNbaV0tPmJpbmQoc3dpdGNoQWRkcmVz
cywgc3dpdGNoQWRkcmVzcyArIDMpKTsKKyAgICAgICAganVtcFRhYmxlLm9mZnNldFRhYmxlLmFk
ZChjbGF1c2UsIFVubGlua2VkU3RyaW5nSnVtcFRhYmxlOjpPZmZzZXRMb2NhdGlvbiB7IGxhYmVs
c1tpXS0+YmluZChzd2l0Y2hBZGRyZXNzLCBzd2l0Y2hBZGRyZXNzICsgMykgfSk7CiAgICAgfQog
fQogCkBAIC00NDU5LDMxICs0NDY2LDMzIEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRS
ZXF1aXJlT2JqZWN0Q29lcmNpYmxlKFJlZ2lzdGVySUQqIHZhbHVlLCBjb25zdCBTdHJpCiB2b2lk
IEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0WWllbGRQb2ludChSZWdpc3RlcklEKiBhcmd1bWVudCkK
IHsKICAgICBSZWZQdHI8TGFiZWw+IG1lcmdlUG9pbnQgPSBuZXdMYWJlbCgpOwotICAgIHNpemVf
dCB5aWVsZFBvaW50SW5kZXggPSBtX2dlbmVyYXRvclJlc3VtZUxhYmVscy5zaXplKCk7Ci0gICAg
ZW1pdEdlbmVyYXRvclN0YXRlQ2hhbmdlKHlpZWxkUG9pbnRJbmRleCk7Ci0gICAgLy8gRmlyc3Qg
eWllbGQgcG9pbnQgaXMgdXNlZCBmb3IgaW5pdGlhbCBzZXF1ZW5jZS4KLSAgICB1bnNpZ25lZCBs
aXZlQ2FsbGVlTG9jYWxzSW5kZXggPSB5aWVsZFBvaW50SW5kZXggLSAxOwotICAgIGVtaXRTYXZl
KG1lcmdlUG9pbnQuZ2V0KCksIGxpdmVDYWxsZWVMb2NhbHNJbmRleCk7Ci0gICAgZW1pdFJldHVy
bihhcmd1bWVudCk7Ci0gICAgZW1pdFJlc3VtZShtZXJnZVBvaW50LmdldCgpLCBsaXZlQ2FsbGVl
TG9jYWxzSW5kZXgpOwotfQorICAgIHVuc2lnbmVkIHlpZWxkUG9pbnRJbmRleCA9IG1feWllbGRQ
b2ludHMrKzsKKyAgICBlbWl0R2VuZXJhdG9yU3RhdGVDaGFuZ2UoeWllbGRQb2ludEluZGV4ICsg
MSk7CisKKyAgICAvLyBTcGxpdCB0aGUgdHJ5IHJhbmdlIGhlcmUuCisgICAgUmVmUHRyPExhYmVs
PiBzYXZlUG9pbnQgPSBlbWl0TGFiZWwobmV3TGFiZWwoKS5nZXQoKSk7CisgICAgZm9yICh1bnNp
Z25lZCBpID0gbV90cnlDb250ZXh0U3RhY2suc2l6ZSgpOyBpLS07KSB7CisgICAgICAgIFRyeUNv
bnRleHQmIGNvbnRleHQgPSBtX3RyeUNvbnRleHRTdGFja1tpXTsKKyAgICAgICAgVHJ5UmFuZ2Ug
cmFuZ2U7CisgICAgICAgIHJhbmdlLnN0YXJ0ID0gY29udGV4dC5zdGFydDsKKyAgICAgICAgcmFu
Z2UuZW5kID0gc2F2ZVBvaW50OworICAgICAgICByYW5nZS50cnlEYXRhID0gY29udGV4dC50cnlE
YXRhOworICAgICAgICBtX3RyeVJhbmdlcy5hcHBlbmQocmFuZ2UpOworCisgICAgICAgIC8vIFRy
eSByYW5nZSB3aWxsIGJlIHJlc3RhcmVkIGF0IHRoZSBtZXJnZSBwb2ludC4KKyAgICAgICAgY29u
dGV4dC5zdGFydCA9IG1lcmdlUG9pbnQ7CisgICAgfQorICAgIFZlY3RvcjxUcnlDb250ZXh0PiBz
YXZlZFRyeUNvbnRleHRTdGFjazsKKyAgICBtX3RyeUNvbnRleHRTdGFjay5zd2FwKHNhdmVkVHJ5
Q29udGV4dFN0YWNrKTsKIAotdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFNhdmUoTGFiZWwq
IG1lcmdlUG9pbnQsIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCkKLXsKLSAgICBzaXpl
X3QgYmVnaW4gPSBpbnN0cnVjdGlvbnMoKS5zaXplKCk7Ci0gICAgZW1pdE9wY29kZShvcF9zYXZl
KTsKLSAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobV9nZW5lcmF0b3JSZWdpc3Rlci0+aW5kZXgo
KSk7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGxpdmVDYWxsZWVMb2NhbHNJbmRleCk7Ci0g
ICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1lcmdlUG9pbnQtPmJpbmQoYmVnaW4sIGluc3RydWN0
aW9ucygpLnNpemUoKSkpOwotfQorICAgIGVtaXRPcGNvZGUob3BfeWllbGQpOworICAgIGluc3Ry
dWN0aW9ucygpLmFwcGVuZChnZW5lcmF0b3JGcmFtZVJlZ2lzdGVyKCktPmluZGV4KCkpOworICAg
IGluc3RydWN0aW9ucygpLmFwcGVuZCh5aWVsZFBvaW50SW5kZXgpOworICAgIGluc3RydWN0aW9u
cygpLmFwcGVuZChhcmd1bWVudC0+aW5kZXgoKSk7CiAKLXZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRSZXN1bWUoTGFiZWwqIG1lcmdlUG9pbnQsIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJ
bmRleCkKLXsKLSAgICBlbWl0R2VuZXJhdG9yU3RhdGVMYWJlbCgpOwotICAgIGVtaXRPcGNvZGUo
b3BfcmVzdW1lKTsKLSAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobV9nZW5lcmF0b3JSZWdpc3Rl
ci0+aW5kZXgoKSk7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGxpdmVDYWxsZWVMb2NhbHNJ
bmRleCk7Ci0gICAgZW1pdExhYmVsKG1lcmdlUG9pbnQpOworICAgIC8vIFJlc3RvcmUgdGhlIHRy
eSBjb250ZXh0cywgd2hpY2ggc3RhcnQgb2Zmc2V0IGlzIHVwZGF0ZWQgdG8gdGhlIG1lcmdlIHBv
aW50LgorICAgIG1fdHJ5Q29udGV4dFN0YWNrLnN3YXAoc2F2ZWRUcnlDb250ZXh0U3RhY2spOwor
ICAgIGVtaXRMYWJlbChtZXJnZVBvaW50LmdldCgpKTsKIH0KIAogUmVnaXN0ZXJJRCogQnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXRZaWVsZChSZWdpc3RlcklEKiBhcmd1bWVudCkKQEAgLTQ2NDAsMzkg
KzQ2NDksNiBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2VuZXJhdG9yU3RhdGVDaGFu
Z2UoaW50MzJfdCBzdGF0ZSkKICAgICBlbWl0UHV0QnlJZChnZW5lcmF0b3JSZWdpc3RlcigpLCBw
cm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yU3RhdGVQcml2YXRlTmFtZSgp
LCBjb21wbGV0ZWRTdGF0ZSk7CiB9CiAKLXZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZW5l
cmF0b3JTdGF0ZUxhYmVsKCkKLXsKLSAgICBSZWZQdHI8TGFiZWw+IGxhYmVsID0gbmV3TGFiZWwo
KTsKLSAgICBtX2dlbmVyYXRvclJlc3VtZUxhYmVscy5hcHBlbmQobGFiZWwuZ2V0KCkpOwotICAg
IGVtaXRMYWJlbChsYWJlbC5nZXQoKSk7Ci19Ci0KLXZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmJl
Z2luR2VuZXJhdG9yKFJlZ2lzdGVySUQqIHN0YXRlKQotewotICAgIGJlZ2luU3dpdGNoKHN0YXRl
LCBTd2l0Y2hJbmZvOjpTd2l0Y2hJbW1lZGlhdGUpOwotfQotCi12b2lkIEJ5dGVjb2RlR2VuZXJh
dG9yOjplbmRHZW5lcmF0b3IoTGFiZWwqIGRlZmF1bHRMYWJlbCkKLXsKLSAgICBTd2l0Y2hJbmZv
IHN3aXRjaEluZm8gPSBtX3N3aXRjaENvbnRleHRTdGFjay5sYXN0KCk7Ci0gICAgbV9zd2l0Y2hD
b250ZXh0U3RhY2sucmVtb3ZlTGFzdCgpOwotCi0gICAgaW5zdHJ1Y3Rpb25zKClbc3dpdGNoSW5m
by5ieXRlY29kZU9mZnNldCArIDFdID0gbV9jb2RlQmxvY2stPm51bWJlck9mU3dpdGNoSnVtcFRh
YmxlcygpOwotICAgIGluc3RydWN0aW9ucygpW3N3aXRjaEluZm8uYnl0ZWNvZGVPZmZzZXQgKyAy
XSA9IGRlZmF1bHRMYWJlbC0+YmluZChzd2l0Y2hJbmZvLmJ5dGVjb2RlT2Zmc2V0LCBzd2l0Y2hJ
bmZvLmJ5dGVjb2RlT2Zmc2V0ICsgMyk7Ci0KLSAgICBVbmxpbmtlZFNpbXBsZUp1bXBUYWJsZSYg
anVtcFRhYmxlID0gbV9jb2RlQmxvY2stPmFkZFN3aXRjaEp1bXBUYWJsZSgpOwotICAgIGludDMy
X3Qgc3dpdGNoQWRkcmVzcyA9IHN3aXRjaEluZm8uYnl0ZWNvZGVPZmZzZXQ7Ci0gICAganVtcFRh
YmxlLm1pbiA9IDA7Ci0gICAganVtcFRhYmxlLmJyYW5jaE9mZnNldHMucmVzaXplKG1fZ2VuZXJh
dG9yUmVzdW1lTGFiZWxzLnNpemUoKSArIDEpOwotICAgIGp1bXBUYWJsZS5icmFuY2hPZmZzZXRz
LmZpbGwoMCk7Ci0gICAgZm9yICh1aW50MzJfdCBpID0gMDsgaSA8IG1fZ2VuZXJhdG9yUmVzdW1l
TGFiZWxzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIC8vIFdlJ3JlIGVtaXR0aW5nIHRoaXMgYWZ0
ZXIgdGhlIGNsYXVzZSBsYWJlbHMgc2hvdWxkIGhhdmUgYmVlbiBmaXhlZCwgc28KLSAgICAgICAg
Ly8gdGhlIGxhYmVscyBzaG91bGQgbm90IGJlICJmb3J3YXJkIiByZWZlcmVuY2VzCi0gICAgICAg
IEFTU0VSVCghbV9nZW5lcmF0b3JSZXN1bWVMYWJlbHNbaV0tPmlzRm9yd2FyZCgpKTsKLSAgICAg
ICAganVtcFRhYmxlLmFkZChpLCBtX2dlbmVyYXRvclJlc3VtZUxhYmVsc1tpXS0+YmluZChzd2l0
Y2hBZGRyZXNzLCBzd2l0Y2hBZGRyZXNzICsgMykpOwotICAgIH0KLX0KLQogfSAvLyBuYW1lc3Bh
Y2UgSlNDCiAKIG5hbWVzcGFjZSBXVEYgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmluZGV4IGZmZjcxM2FhMjVlNzFk
ZjJjZjRjYjUzMDhlNjE2OWE1M2FmNjUxYmUuLmIxYjk0M2RhNWUwNjdlY2RkNDk2NzQ4MTE0NWNl
OWRiMDA3NWEyYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJD
b2RlQmxvY2suaCIKICNpbmNsdWRlICJJbnN0cnVjdGlvbi5oIgogI2luY2x1ZGUgIkludGVycHJl
dGVyLmgiCisjaW5jbHVkZSAiSlNHZW5lcmF0b3JGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkxhYmVs
LmgiCiAjaW5jbHVkZSAiTGFiZWxTY29wZS5oIgogI2luY2x1ZGUgIk5vZGVzLmgiCkBAIC02OTAs
MTggKzY5MSwxNSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbmRTd2l0Y2godWlu
dDMyX3QgY2xhdXNlQ291bnQsIFJlZlB0cjxMYWJlbD4qLCBFeHByZXNzaW9uTm9kZSoqLCBMYWJl
bCogZGVmYXVsdExhYmVsLCBpbnQzMl90IG1pbiwgaW50MzJfdCByYW5nZSk7CiAKICAgICAgICAg
dm9pZCBlbWl0WWllbGRQb2ludChSZWdpc3RlcklEKik7Ci0gICAgICAgIHZvaWQgZW1pdFNhdmUo
TGFiZWwqIG1lcmdlUG9pbnQsIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCk7Ci0gICAg
ICAgIHZvaWQgZW1pdFJlc3VtZShMYWJlbCogbWVyZ2VQb2ludCwgdW5zaWduZWQgbGl2ZUNhbGxl
ZUxvY2Fsc0luZGV4KTsKIAogICAgICAgICB2b2lkIGVtaXRHZW5lcmF0b3JTdGF0ZUxhYmVsKCk7
CiAgICAgICAgIHZvaWQgZW1pdEdlbmVyYXRvclN0YXRlQ2hhbmdlKGludDMyX3Qgc3RhdGUpOwog
ICAgICAgICBSZWdpc3RlcklEKiBlbWl0WWllbGQoUmVnaXN0ZXJJRCogYXJndW1lbnQpOwogICAg
ICAgICBSZWdpc3RlcklEKiBlbWl0RGVsZWdhdGVZaWVsZChSZWdpc3RlcklEKiBhcmd1bWVudCwg
VGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEqKTsKLSAgICAgICAgdm9pZCBiZWdpbkdlbmVyYXRvcihS
ZWdpc3RlcklEKik7Ci0gICAgICAgIHZvaWQgZW5kR2VuZXJhdG9yKExhYmVsKiBkZWZhdWx0TGFi
ZWwpOwotICAgICAgICBSZWdpc3RlcklEKiBnZW5lcmF0b3JTdGF0ZVJlZ2lzdGVyKCkgeyByZXR1
cm4gJm1fcGFyYW1ldGVyc1syXTsgfQotICAgICAgICBSZWdpc3RlcklEKiBnZW5lcmF0b3JWYWx1
ZVJlZ2lzdGVyKCkgeyByZXR1cm4gJm1fcGFyYW1ldGVyc1szXTsgfQotICAgICAgICBSZWdpc3Rl
cklEKiBnZW5lcmF0b3JSZXN1bWVNb2RlUmVnaXN0ZXIoKSB7IHJldHVybiAmbV9wYXJhbWV0ZXJz
WzRdOyB9CisgICAgICAgIFJlZ2lzdGVySUQqIGdlbmVyYXRvclN0YXRlUmVnaXN0ZXIoKSB7IHJl
dHVybiAmbV9wYXJhbWV0ZXJzW3N0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yRnVuY3Rp
b246OkdlbmVyYXRvckFyZ3VtZW50OjpTdGF0ZSldOyB9CisgICAgICAgIFJlZ2lzdGVySUQqIGdl
bmVyYXRvclZhbHVlUmVnaXN0ZXIoKSB7IHJldHVybiAmbV9wYXJhbWV0ZXJzW3N0YXRpY19jYXN0
PGludDMyX3Q+KEpTR2VuZXJhdG9yRnVuY3Rpb246OkdlbmVyYXRvckFyZ3VtZW50OjpWYWx1ZSld
OyB9CisgICAgICAgIFJlZ2lzdGVySUQqIGdlbmVyYXRvclJlc3VtZU1vZGVSZWdpc3RlcigpIHsg
cmV0dXJuICZtX3BhcmFtZXRlcnNbc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3JGdW5j
dGlvbjo6R2VuZXJhdG9yQXJndW1lbnQ6OlJlc3VtZU1vZGUpXTsgfQorICAgICAgICBSZWdpc3Rl
cklEKiBnZW5lcmF0b3JGcmFtZVJlZ2lzdGVyKCkgeyByZXR1cm4gJm1fcGFyYW1ldGVyc1tzdGF0
aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JBcmd1bWVudDo6
RnJhbWUpXTsgfQogCiAgICAgICAgIENvZGVUeXBlIGNvZGVUeXBlKCkgY29uc3QgeyByZXR1cm4g
bV9jb2RlVHlwZTsgfQogCkBAIC05MjksNyArOTI3LDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICBWZWN0b3I8U3dpdGNoSW5mbz4gbV9zd2l0Y2hDb250ZXh0U3RhY2s7CiAgICAgICAgIFZl
Y3RvcjxSZWZQdHI8Rm9ySW5Db250ZXh0Pj4gbV9mb3JJbkNvbnRleHRTdGFjazsKICAgICAgICAg
VmVjdG9yPFRyeUNvbnRleHQ+IG1fdHJ5Q29udGV4dFN0YWNrOwotICAgICAgICBWZWN0b3I8UmVm
UHRyPExhYmVsPj4gbV9nZW5lcmF0b3JSZXN1bWVMYWJlbHM7CisgICAgICAgIHVuc2lnbmVkIG1f
eWllbGRQb2ludHMgeyAwIH07CisKKyAgICAgICAgU3Ryb25nPFN5bWJvbFRhYmxlPiBtX2dlbmVy
YXRvckZyYW1lU3ltYm9sVGFibGU7CisgICAgICAgIGludCBtX2dlbmVyYXRvckZyYW1lU3ltYm9s
VGFibGVJbmRleCB7IDAgfTsKKwogICAgICAgICBlbnVtIEZ1bmN0aW9uVmFyaWFibGVUeXBlIDog
dWludDhfdCB7IE5vcm1hbEZ1bmN0aW9uVmFyaWFibGUsIEdsb2JhbEZ1bmN0aW9uVmFyaWFibGUg
fTsKICAgICAgICAgVmVjdG9yPHN0ZDo6cGFpcjxGdW5jdGlvbk1ldGFkYXRhTm9kZSosIEZ1bmN0
aW9uVmFyaWFibGVUeXBlPj4gbV9mdW5jdGlvbnNUb0luaXRpYWxpemU7CiAgICAgICAgIGJvb2wg
bV9uZWVkVG9Jbml0aWFsaXplQXJndW1lbnRzIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAppbmRleCBlOTQ1ZTFh
OWFhN2YxZmY1MzgzZmVlNWUxYzBjNzhkMjI1MTliN2NjLi45MzI0MmFmNmIxYzFkMDE4ZTJhZDI4
NTEzNGFmM2JmZDFlNTkxMGE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCkBAIC0zMzYxLDcgKzMzNjEsNiBAQCB2b2lkIEZ1
bmN0aW9uTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJl
Z2lzdGVySUQqKQogICAgICAgICBSZWZQdHI8TGFiZWw+IGRvbmUgPSBnZW5lcmF0b3IubmV3TGFi
ZWwoKTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChkb25lLmdldCgpKTsKICAgICAgICAg
Z2VuZXJhdG9yLmVtaXRSZXR1cm4oZ2VuZXJhdG9yLmVtaXRMb2FkKG51bGxwdHIsIGpzVW5kZWZp
bmVkKCkpKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVuZEdlbmVyYXRvcihkb25lLmdldCgpKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVy
YXRpb25zLmNwcAppbmRleCBhNzE3ZDE2ZGNjODZjMGMwNDFhNTc5MmEyOTJmMTJjNzkzNzMyMjE2
Li5hM2U4ZmNkNTA5ZTZhOGViMTY4OTkzZTk1NTcwYzI2MGQ2YTBkMjZhIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKQEAgLTQyLDggKzQyLDggQEAKICNp
bmNsdWRlICJEaXJlY3RBcmd1bWVudHMuaCIKICNpbmNsdWRlICJGVExGb3JPU1JFbnRyeUpJVENv
ZGUuaCIKICNpbmNsdWRlICJGVExPU1JFbnRyeS5oIgotI2luY2x1ZGUgIkhvc3RDYWxsUmV0dXJu
VmFsdWUuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKKyNpbmNsdWRlICJIb3N0Q2FsbFJl
dHVyblZhbHVlLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKSVQuaCIK
ICNpbmNsdWRlICJKSVRFeGNlcHRpb25zLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZ2VuZXJhdGUtYnl0ZWNvZGUtZmlsZXMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2Vu
ZXJhdGUtYnl0ZWNvZGUtZmlsZXMKaW5kZXggNTY2NmEzZjkyNGMxMTliMjE2ZDNmZjBmZmU5YzY3
MmI3YzcxYmI3OS4uOGY3OTBlZDlmYTgzMTZkMzlkYTE1ZDNiNzU4OTQ2YmY0OWYzYmQzZSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRlLWJ5dGVjb2RlLWZpbGVzCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0ZS1ieXRlY29kZS1maWxlcwpAQCAtOTQs
MTMgKzk0LDE0IEBAIGRlZiBvcGVuT3JFeGl0KHBhdGgsIG1vZGUpOgogICAgICAgICBwcmludCAi
SS9PIGVycm9yIG9wZW5pbmcgezB9LCAoezF9KTogezJ9Ii5mb3JtYXQocGF0aCwgZS5lcnJubywg
ZS5zdHJlcnJvcikKICAgICAgICAgZXhpdCgxKQogCi1kZWYgaGFzaEZpbGUoZmlsZSk6CitkZWYg
aGFzaEZpbGUoZmlsZXMpOgogICAgIHNoYTEgPSBoYXNobGliLnNoYTEoKQotICAgIGZpbGUuc2Vl
aygwKQotICAgIGZvciBsaW5lIGluIGZpbGU6Ci0gICAgICAgIHNoYTEudXBkYXRlKGxpbmUpCisg
ICAgZm9yIGZpbGUgaW4gZmlsZXM6CisgICAgICAgIGZpbGUuc2VlaygwKQorICAgICAgICBmb3Ig
bGluZSBpbiBmaWxlOgorICAgICAgICAgICAgc2hhMS51cGRhdGUobGluZSkKIAotICAgIGZpbGUu
c2VlaygwKQorICAgICAgICBmaWxlLnNlZWsoMCkKIAogICAgIHJldHVybiBzaGExLmhleGRpZ2Vz
dCgpCiAKQEAgLTExNSw3ICsxMTYsOCBAQCBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogCiAg
ICAgYnl0ZWNvZGVKU09ORmlsZSA9IGFyZ3NbMF0KICAgICBieXRlY29kZUZpbGUgPSBvcGVuT3JF
eGl0KGJ5dGVjb2RlSlNPTkZpbGUsICJyYiIpCi0gICAgc2hhMUhhc2ggPSBoYXNoRmlsZShieXRl
Y29kZUZpbGUpCisgICAgZ2VuZXJhdG9yRmlsZSA9IG9wZW5PckV4aXQoX19maWxlX18sICJyYiIp
CisgICAgc2hhMUhhc2ggPSBoYXNoRmlsZShbYnl0ZWNvZGVGaWxlLCBnZW5lcmF0b3JGaWxlXSkK
IAogICAgIGhGaWxlSGFzaFN0cmluZyA9ICIvLyBTSEExSGFzaDogezB9XG4iLmZvcm1hdChzaGEx
SGFzaCkKICAgICBhc21GaWxlSGFzaFN0cmluZyA9ICIjIFNIQTFIYXNoOiB7MH1cbiIuZm9ybWF0
KHNoYTFIYXNoKQpAQCAtMTg3LDYgKzE4OSw3IEBAIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6
CiAgICAgICAgICAgICAgICAgZGVmYXVsdExlbmd0aCA9IHNlY3Rpb25bImRlZmF1bHRMZW5ndGgi
XQogCiAgICAgICAgICAgICBieXRlY29kZU51bSA9IDAKKyAgICAgICAgICAgIG1heExlbmd0aCA9
IDAKICAgICAgICAgICAgIGZvciBieXRlY29kZSBpbiBzZWN0aW9uWyJieXRlY29kZXMiXToKICAg
ICAgICAgICAgICAgICBpZiBub3QgZmlyc3RNYWNybzoKICAgICAgICAgICAgICAgICAgICAgYnl0
ZWNvZGVIRmlsZS53cml0ZSgiIFxcXG4iKQpAQCAtMTk0LDYgKzE5Nyw3IEBAIGlmIF9fbmFtZV9f
ID09ICJfX21haW5fXyI6CiAgICAgICAgICAgICAgICAgbGVuZ3RoID0gZGVmYXVsdExlbmd0aAog
ICAgICAgICAgICAgICAgIGlmICJsZW5ndGgiIGluIGJ5dGVjb2RlOgogICAgICAgICAgICAgICAg
ICAgICBsZW5ndGggPSBieXRlY29kZVsibGVuZ3RoIl0KKyAgICAgICAgICAgICAgICAgICAgbWF4
TGVuZ3RoID0gbWF4KFtsZW5ndGgsIG1heExlbmd0aF0pCiAKICAgICAgICAgICAgICAgICBieXRl
Y29kZUhGaWxlLndyaXRlKCIgICAgbWFjcm8oezB9LCB7MX0pIi5mb3JtYXQoYnl0ZWNvZGVbIm5h
bWUiXSwgbGVuZ3RoKSkKICAgICAgICAgICAgICAgICBmaXJzdE1hY3JvID0gRmFsc2UKQEAgLTIw
MSw2ICsyMDUsNyBAQCBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogCiAgICAgICAgICAgICBi
eXRlY29kZUhGaWxlLndyaXRlKCJcblxuIikKICAgICAgICAgICAgIGJ5dGVjb2RlSEZpbGUud3Jp
dGUoIiNkZWZpbmUgTlVNQkVSX09GX3swfV9JRFMgezF9XG5cbiIuZm9ybWF0KHNlY3Rpb25bIm1h
Y3JvTmFtZUNvbXBvbmVudCJdLCBieXRlY29kZU51bSkpCisgICAgICAgICAgICBieXRlY29kZUhG
aWxlLndyaXRlKCIjZGVmaW5lIE1BWF9PUENPREVfTEVOR1RIX09GX3swfSB7MX1cblxuIi5mb3Jt
YXQoc2VjdGlvblsibWFjcm9OYW1lQ29tcG9uZW50Il0sIG1heExlbmd0aCkpCiAKICAgICAgICAg
aWYgaW5pdEFTTUZpbGVOYW1lIGFuZCBzZWN0aW9uWydlbWl0SW5BU01GaWxlJ106CiAgICAgICAg
ICAgICBwcmVmaXggPSAiIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL0ludGVycHJldGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9JbnRlcnByZXRlci5jcHAKaW5kZXggZDhjZWNhYzJkOGJjYTljMmE2ZGNjNDhjNTQwYmY5Yjlk
ZGIzMGY1NC4uNzNmMGYwZjE0M2M5ZTg0NTVjODFiOTMxZDJkZjI0MzZhOTM2ZWRkYSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCkBA
IC01MjksNyArNTI5LDcgQEAgSlNTdHJpbmcqIEludGVycHJldGVyOjpzdGFja1RyYWNlQXNTdHJp
bmcoVk0mIHZtLCBjb25zdCBWZWN0b3I8U3RhY2tGcmFtZT4mIHN0YWMKICAgICByZXR1cm4ganNT
dHJpbmcoJnZtLCBidWlsZGVyLnRvU3RyaW5nKCkpOwogfQogCi1BTFdBWVNfSU5MSU5FIHN0YXRp
YyBIYW5kbGVySW5mbyogZmluZEV4Y2VwdGlvbkhhbmRsZXIoU3RhY2tWaXNpdG9yJiB2aXNpdG9y
LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZUJsb2NrOjpSZXF1aXJlZEhhbmRsZXIgcmVxdWly
ZWRIYW5kbGVyKQorQUxXQVlTX0lOTElORSBzdGF0aWMgSGFuZGxlckluZm8qIGZpbmRFeGNlcHRp
b25IYW5kbGVyKFN0YWNrVmlzaXRvciYgdmlzaXRvciwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFJl
cXVpcmVkSGFuZGxlciByZXF1aXJlZEhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKGNvZGVCbG9jayk7
CiAjaWYgRU5BQkxFKERGR19KSVQpCkBAIC01NjMsNyArNTYzLDcgQEAgY2xhc3MgR2V0Q2F0Y2hI
YW5kbGVyRnVuY3RvciB7CiAgICAgICAgIGlmICghY29kZUJsb2NrKQogICAgICAgICAgICAgcmV0
dXJuIFN0YWNrVmlzaXRvcjo6Q29udGludWU7CiAKLSAgICAgICAgbV9oYW5kbGVyID0gZmluZEV4
Y2VwdGlvbkhhbmRsZXIodmlzaXRvciwgY29kZUJsb2NrLCBDb2RlQmxvY2s6OlJlcXVpcmVkSGFu
ZGxlcjo6Q2F0Y2hIYW5kbGVyKTsKKyAgICAgICAgbV9oYW5kbGVyID0gZmluZEV4Y2VwdGlvbkhh
bmRsZXIodmlzaXRvciwgY29kZUJsb2NrLCBSZXF1aXJlZEhhbmRsZXI6OkNhdGNoSGFuZGxlcik7
CiAgICAgICAgIGlmIChtX2hhbmRsZXIpCiAgICAgICAgICAgICByZXR1cm4gU3RhY2tWaXNpdG9y
OjpEb25lOwogCkBAIC02MDUsNyArNjA1LDcgQEAgY2xhc3MgVW53aW5kRnVuY3RvciB7CiAgICAg
ICAgIG1faGFuZGxlciA9IG51bGxwdHI7CiAgICAgICAgIGlmICghbV9pc1Rlcm1pbmF0aW9uKSB7
CiAgICAgICAgICAgICBpZiAobV9jb2RlQmxvY2sgJiYgIWlzV2ViQXNzZW1ibHlFeGVjdXRhYmxl
KG1fY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSkpCi0gICAgICAgICAgICAgICAgbV9oYW5k
bGVyID0gZmluZEV4Y2VwdGlvbkhhbmRsZXIodmlzaXRvciwgbV9jb2RlQmxvY2ssIENvZGVCbG9j
azo6UmVxdWlyZWRIYW5kbGVyOjpBbnlIYW5kbGVyKTsKKyAgICAgICAgICAgICAgICBtX2hhbmRs
ZXIgPSBmaW5kRXhjZXB0aW9uSGFuZGxlcih2aXNpdG9yLCBtX2NvZGVCbG9jaywgUmVxdWlyZWRI
YW5kbGVyOjpBbnlIYW5kbGVyKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChtX2hhbmRsZXIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0
ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCmlu
ZGV4IGU0MjE4NTFlZmU5ZTY1MjZlZjFlZjNmOGFmOWM4N2M2YjZjMjIwNTcuLjg5MzMxZTljMmJj
NjE0OTMyY2EwNzM1MjI0Mzc0NjE5MzhiMTEwMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCkBAIC02Niw2ICs2Niw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgIHN0cnVjdCBIYW5kbGVySW5mbzsKICAgICBzdHJ1Y3QgSW5zdHJ1Y3Rpb247
CiAgICAgc3RydWN0IFByb3RvQ2FsbEZyYW1lOworICAgIHN0cnVjdCBVbmxpbmtlZEluc3RydWN0
aW9uOwogCiAgICAgZW51bSBVbndpbmRTdGFydCA6IHVpbnQ4X3QgeyBVbndpbmRGcm9tQ3VycmVu
dEZyYW1lLCBVbndpbmRGcm9tQ2FsbGVyRnJhbWUgfTsKIApAQCAtMTk0LDcgKzE5NSwxMCBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBvcGNvZGU7CiAjZW5kaWYKICAgICAg
ICAgfQotICAgICAgICAKKworICAgICAgICBPcGNvZGVJRCBnZXRPcGNvZGVJRChjb25zdCBJbnN0
cnVjdGlvbiYpOworICAgICAgICBPcGNvZGVJRCBnZXRPcGNvZGVJRChjb25zdCBVbmxpbmtlZElu
c3RydWN0aW9uJik7CisKICAgICAgICAgYm9vbCBpc09wY29kZShPcGNvZGUpOwogCiAgICAgICAg
IEpTVmFsdWUgZXhlY3V0ZShQcm9ncmFtRXhlY3V0YWJsZSosIENhbGxGcmFtZSosIEpTT2JqZWN0
KiB0aGlzT2JqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9JbnRlcnByZXRlcklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9JbnRlcnByZXRlcklubGluZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NmQwNzE0OGE1MmU2NWUzNzVmOTdl
NmViYjkxYWRiZTFkZDQ1NjBkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ludGVycHJldGVyL0ludGVycHJldGVySW5saW5lcy5oCkBAIC0wLDAgKzEsNDQgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwu
Y29tPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgIkluc3RydWN0aW9uLmgiCisjaW5jbHVkZSAiSW50ZXJwcmV0ZXIu
aCIKKyNpbmNsdWRlICJVbmxpbmtlZENvZGVCbG9jay5oIgorCituYW1lc3BhY2UgSlNDIHsKKwor
aW5saW5lIE9wY29kZUlEIEludGVycHJldGVyOjpnZXRPcGNvZGVJRChjb25zdCBJbnN0cnVjdGlv
biYgaW5zdHJ1Y3Rpb24pCit7CisgICAgcmV0dXJuIGdldE9wY29kZUlEKGluc3RydWN0aW9uLnUu
b3Bjb2RlKTsKK30KKworaW5saW5lIE9wY29kZUlEIEludGVycHJldGVyOjpnZXRPcGNvZGVJRChj
b25zdCBVbmxpbmtlZEluc3RydWN0aW9uJiBpbnN0cnVjdGlvbikKK3sKKyAgICByZXR1cm4gaW5z
dHJ1Y3Rpb24udS5vcGNvZGU7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVQuY3BwCmluZGV4IGVmN2JlNmIxNzY2Yjg0ZjU0NzFiYjYxMDY2MTI1YmI1NzExNGQ0
NzkuLjA1NTMzMjExMTU5NDFmMTJkYmM0YmM2M2YwN2Q2NWU0ODAxNThhNjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVC5jcHAKQEAgLTI0Myw4ICsyNDMsNiBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNv
bXBpbGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9PUChvcF9nZXRfcmVzdF9sZW5ndGgpCiAg
ICAgICAgIERFRklORV9PUChvcF9jaGVja190ZHopCiAgICAgICAgIERFRklORV9PUChvcF9hc3Nl
cnQpCi0gICAgICAgIERFRklORV9PUChvcF9zYXZlKQotICAgICAgICBERUZJTkVfT1Aob3BfcmVz
dW1lKQogICAgICAgICBERUZJTkVfT1Aob3BfZGVidWcpCiAgICAgICAgIERFRklORV9PUChvcF9k
ZWxfYnlfaWQpCiAgICAgICAgIERFRklORV9PUChvcF9kZWxfYnlfdmFsKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklULmgKaW5kZXggNzJhMGY2ZTYwNWU5ZWQ0MWU1N2I4YmRiYmEwZDIyNGFmMWViYmQ1OC4u
ZjY4Mzk0MmQyY2VkZTU1OGJkMzZkNmY2Y2NkY2ZlM2FlMDM5ODRlNSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVC5oCkBAIC00OTAsOCArNDkwLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZv
aWQgZW1pdF9vcF9nZXRfcmVzdF9sZW5ndGgoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBl
bWl0X29wX2NoZWNrX3RkeihJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfYXNz
ZXJ0KEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9zYXZlKEluc3RydWN0aW9u
Kik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9yZXN1bWUoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAg
dm9pZCBlbWl0X29wX2RlYnVnKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9k
ZWxfYnlfaWQoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2RlbF9ieV92YWwo
SW5zdHJ1Y3Rpb24qKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3Bjb2Rlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCmlu
ZGV4IGQwMzE1YWM5Yzg2NzllZmE5Y2VjZjMzOTdmNGY2OGEzYTE4ZGI1ZjEuLmZiMzNlNDU3MGY4
ZTk4Yjc3ZmZkNTRkZjM0MzU4ODhlMzJmNjEyNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGNvZGVzLmNwcApAQCAtMTQ5NywxOCArMTQ5Nyw2IEBAIHZvaWQgSklUOjplbWl0X29w
X2dldF9yZXN0X2xlbmd0aChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogI2VuZGlm
CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX3NhdmUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKLXsKLSAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJ
bnN0cnVjdGlvbiwgc2xvd19wYXRoX3NhdmUpOwotICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7Ci19
Ci0KLXZvaWQgSklUOjplbWl0X29wX3Jlc3VtZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQotewotICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudElu
c3RydWN0aW9uLCBzbG93X3BhdGhfcmVzdW1lKTsKLSAgICBzbG93UGF0aENhbGwuY2FsbCgpOwot
fQotCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEVOQUJMRShKSVQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20g
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KaW5k
ZXggMWI5MzI4Yzc3YWJhMTRjNTE0ZmZkYTZhMTAwZTE3NjJiMTAzZGFjMC4uOGMxZGU2ZjcwMWY2
OTYyMjU2NWQwYzMxMzQ5MmU2YWJhZDZkOGUzNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQpAQCAtMTcwMywxNiArMTcwMyw4
IEBAIF9sbGludF9vcF9hc3NlcnQ6CiAgICAgZGlzcGF0Y2goMykKIAogCi1fbGxpbnRfb3Bfc2F2
ZToKLSAgICB0cmFjZUV4ZWN1dGlvbigpCi0gICAgY2FsbE9wY29kZVNsb3dQYXRoKF9zbG93X3Bh
dGhfc2F2ZSkKLSAgICBkaXNwYXRjaCg0KQotCi0KLV9sbGludF9vcF9yZXN1bWU6Ci0gICAgdHJh
Y2VFeGVjdXRpb24oKQotICAgIGNhbGxPcGNvZGVTbG93UGF0aChfc2xvd19wYXRoX3Jlc3VtZSkK
LSAgICBkaXNwYXRjaCgzKQorX2xsaW50X29wX3lpZWxkOgorICAgIG5vdFN1cHBvcnRlZCgpCiAK
IAogX2xsaW50X29wX2NyZWF0ZV9sZXhpY2FsX2Vudmlyb25tZW50OgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9QYXJzZXIuY3BwCmluZGV4IDU0MTM5YTAwOTczMWQ4MzI0OWQxZGY5MGJhOGY1
YTFlOTEwMmJlM2QuLjUzOGMzNTQ3OWExMDkzMzVmMDYwMDIzODgyNTdmNGNkMjYwMjY3YjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKQEAgLTI2MCw3ICsyNjAsNyBA
QCBTdHJpbmcgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlSW5uZXIoY29uc3QgSWRlbnRpZmllciYg
Y2FsbGVlTmFtZSwgU291cmNlUGFyc2VNbwogICAgIGlmIChtX2xleGVyLT5pc1JlcGFyc2luZ0Z1
bmN0aW9uKCkpIHsKICAgICAgICAgUGFyc2VyRnVuY3Rpb25JbmZvPEFTVEJ1aWxkZXI+IGZ1bmN0
aW9uSW5mbzsKICAgICAgICAgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVy
YXRvckJvZHlNb2RlKQotICAgICAgICAgICAgbV9wYXJhbWV0ZXJzID0gY3JlYXRlR2VuZXJhdG9y
UGFyYW1ldGVycyhjb250ZXh0KTsKKyAgICAgICAgICAgIG1fcGFyYW1ldGVycyA9IGNyZWF0ZUdl
bmVyYXRvclBhcmFtZXRlcnMoY29udGV4dCwgZnVuY3Rpb25JbmZvLnBhcmFtZXRlckNvdW50KTsK
ICAgICAgICAgZWxzZQogICAgICAgICAgICAgbV9wYXJhbWV0ZXJzID0gcGFyc2VGdW5jdGlvblBh
cmFtZXRlcnMoY29udGV4dCwgcGFyc2VNb2RlLCBmdW5jdGlvbkluZm8pOwogCkBAIC01MTIsMTAg
KzUxMiw5IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVNvdXJjZUVsZW1lbnRz
IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUdlbmVyYXRvCiAKICAgICBQYXJzZXJGdW5jdGlvbklu
Zm88VHJlZUJ1aWxkZXI+IGluZm87CiAgICAgaW5mby5uYW1lID0gJm1fdm0tPnByb3BlcnR5TmFt
ZXMtPm51bGxJZGVudGlmaWVyOwotICAgIGNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMoY29udGV4
dCk7CisgICAgY3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhjb250ZXh0LCBpbmZvLnBhcmFtZXRl
ckNvdW50KTsKICAgICBpbmZvLnN0YXJ0T2Zmc2V0ID0gcGFyYW1ldGVyc1N0YXJ0OwogICAgIGlu
Zm8uc3RhcnRMaW5lID0gdG9rZW5MaW5lKCk7Ci0gICAgaW5mby5wYXJhbWV0ZXJDb3VudCA9IDQ7
IC8vIGdlbmVyYXRvciwgc3RhdGUsIHZhbHVlLCByZXN1bWUgbW9kZQogCiAgICAgewogICAgICAg
ICBBdXRvUG9wU2NvcGVSZWYgZ2VuZXJhdG9yQm9keVNjb3BlKHRoaXMsIHB1c2hTY29wZSgpKTsK
QEAgLTE4OTksMzIgKzE4OTgsMzAgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4gdGVt
cGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyLCBjbGFzcyBGdW5jdGlvbkluZm9UeXAKIH0KIAogdGVt
cGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KLXRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4g
dHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkZvcm1hbFBhcmFtZXRlckxpc3QgUGFyc2VyPExleGVyVHlw
ZT46OmNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMoVHJlZUJ1aWxkZXImIGNvbnRleHQpCit0ZW1w
bGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpGb3JtYWxQYXJh
bWV0ZXJMaXN0IFBhcnNlcjxMZXhlclR5cGU+OjpjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKFRy
ZWVCdWlsZGVyJiBjb250ZXh0LCB1bnNpZ25lZCYgcGFyYW1ldGVyQ291bnQpCiB7CiAgICAgYXV0
byBwYXJhbWV0ZXJzID0gY29udGV4dC5jcmVhdGVGb3JtYWxQYXJhbWV0ZXJMaXN0KCk7CiAKICAg
ICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKICAgICBKU1RleHRQ
b3NpdGlvbiBwb3NpdGlvbiA9IHRva2VuU3RhcnRQb3NpdGlvbigpOwogCi0gICAgLy8gQGdlbmVy
YXRvcgotICAgIGRlY2xhcmVQYXJhbWV0ZXIoJm1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5O
YW1lcygpLmdlbmVyYXRvclByaXZhdGVOYW1lKCkpOwotICAgIGF1dG8gZ2VuZXJhdG9yID0gY29u
dGV4dC5jcmVhdGVCaW5kaW5nTG9jYXRpb24obG9jYXRpb24sIG1fdm0tPnByb3BlcnR5TmFtZXMt
PmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclByaXZhdGVOYW1lKCksIHBvc2l0aW9uLCBwb3NpdGlv
biwgQXNzaWdubWVudENvbnRleHQ6OkRlY2xhcmF0aW9uU3RhdGVtZW50KTsKLSAgICBjb250ZXh0
LmFwcGVuZFBhcmFtZXRlcihwYXJhbWV0ZXJzLCBnZW5lcmF0b3IsIDApOworICAgIGF1dG8gYWRk
UGFyYW1ldGVyID0gWyZdKGNvbnN0IElkZW50aWZpZXImIG5hbWUpIHsKKyAgICAgICAgZGVjbGFy
ZVBhcmFtZXRlcigmbmFtZSk7CisgICAgICAgIGF1dG8gYmluZGluZyA9IGNvbnRleHQuY3JlYXRl
QmluZGluZ0xvY2F0aW9uKGxvY2F0aW9uLCBuYW1lLCBwb3NpdGlvbiwgcG9zaXRpb24sIEFzc2ln
bm1lbnRDb250ZXh0OjpEZWNsYXJhdGlvblN0YXRlbWVudCk7CisgICAgICAgIGNvbnRleHQuYXBw
ZW5kUGFyYW1ldGVyKHBhcmFtZXRlcnMsIGJpbmRpbmcsIDApOworICAgICAgICArK3BhcmFtZXRl
ckNvdW50OworICAgIH07CiAKKyAgICAvLyBAZ2VuZXJhdG9yCisgICAgYWRkUGFyYW1ldGVyKG1f
dm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclByaXZhdGVOYW1lKCkp
OwogICAgIC8vIEBnZW5lcmF0b3JTdGF0ZQotICAgIGRlY2xhcmVQYXJhbWV0ZXIoJm1fdm0tPnBy
b3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclN0YXRlUHJpdmF0ZU5hbWUoKSk7
Ci0gICAgYXV0byBnZW5lcmF0b3JTdGF0ZSA9IGNvbnRleHQuY3JlYXRlQmluZGluZ0xvY2F0aW9u
KGxvY2F0aW9uLCBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JT
dGF0ZVByaXZhdGVOYW1lKCksIHBvc2l0aW9uLCBwb3NpdGlvbiwgQXNzaWdubWVudENvbnRleHQ6
OkRlY2xhcmF0aW9uU3RhdGVtZW50KTsKLSAgICBjb250ZXh0LmFwcGVuZFBhcmFtZXRlcihwYXJh
bWV0ZXJzLCBnZW5lcmF0b3JTdGF0ZSwgMCk7Ci0KKyAgICBhZGRQYXJhbWV0ZXIobV92bS0+cHJv
cGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yU3RhdGVQcml2YXRlTmFtZSgpKTsK
ICAgICAvLyBAZ2VuZXJhdG9yVmFsdWUKLSAgICBkZWNsYXJlUGFyYW1ldGVyKCZtX3ZtLT5wcm9w
ZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JWYWx1ZVByaXZhdGVOYW1lKCkpOwot
ICAgIGF1dG8gZ2VuZXJhdG9yVmFsdWUgPSBjb250ZXh0LmNyZWF0ZUJpbmRpbmdMb2NhdGlvbihs
b2NhdGlvbiwgbV92bS0+cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yVmFs
dWVQcml2YXRlTmFtZSgpLCBwb3NpdGlvbiwgcG9zaXRpb24sIEFzc2lnbm1lbnRDb250ZXh0OjpE
ZWNsYXJhdGlvblN0YXRlbWVudCk7Ci0gICAgY29udGV4dC5hcHBlbmRQYXJhbWV0ZXIocGFyYW1l
dGVycywgZ2VuZXJhdG9yVmFsdWUsIDApOwotCisgICAgYWRkUGFyYW1ldGVyKG1fdm0tPnByb3Bl
cnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclZhbHVlUHJpdmF0ZU5hbWUoKSk7CiAg
ICAgLy8gQGdlbmVyYXRvclJlc3VtZU1vZGUKLSAgICBkZWNsYXJlUGFyYW1ldGVyKCZtX3ZtLT5w
cm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JSZXN1bWVNb2RlUHJpdmF0ZU5h
bWUoKSk7Ci0gICAgYXV0byBnZW5lcmF0b3JSZXN1bWVNb2RlID0gY29udGV4dC5jcmVhdGVCaW5k
aW5nTG9jYXRpb24obG9jYXRpb24sIG1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygp
LmdlbmVyYXRvclJlc3VtZU1vZGVQcml2YXRlTmFtZSgpLCBwb3NpdGlvbiwgcG9zaXRpb24sIEFz
c2lnbm1lbnRDb250ZXh0OjpEZWNsYXJhdGlvblN0YXRlbWVudCk7Ci0gICAgY29udGV4dC5hcHBl
bmRQYXJhbWV0ZXIocGFyYW1ldGVycywgZ2VuZXJhdG9yUmVzdW1lTW9kZSwgMCk7CisgICAgYWRk
UGFyYW1ldGVyKG1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclJl
c3VtZU1vZGVQcml2YXRlTmFtZSgpKTsKKyAgICAvLyBAZ2VuZXJhdG9yRnJhbWUKKyAgICBhZGRQ
YXJhbWV0ZXIobV92bS0+cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yRnJh
bWVQcml2YXRlTmFtZSgpKTsKIAogICAgIHJldHVybiBwYXJhbWV0ZXJzOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKaW5kZXggMzkyMDQwNGU4YmE1MjBiMjJlNGVjZDI3Nzgx
YzEzZGY4MTkwNzQzMy4uNTBlMTM5MWI1ZmQwM2RkNWU3NzhiOGZkYjU5MjNhYTc5OGFlZDEyMyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCkBAIC0xNDI2LDcgKzE0MjYsNyBA
QCBjbGFzcyBQYXJzZXIgewogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc0Fycm93RnVuY3Rpb25Q
YXJhbWV0ZXJzKCk7CiAgICAgCiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyLCBjbGFz
cyBGdW5jdGlvbkluZm9UeXBlPiBORVZFUl9JTkxJTkUgdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkZv
cm1hbFBhcmFtZXRlckxpc3QgcGFyc2VGdW5jdGlvblBhcmFtZXRlcnMoVHJlZUJ1aWxkZXImLCBT
b3VyY2VQYXJzZU1vZGUsIEZ1bmN0aW9uSW5mb1R5cGUmKTsKLSAgICB0ZW1wbGF0ZSA8Y2xhc3Mg
VHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElORSB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6Rm9ybWFsUGFy
YW1ldGVyTGlzdCBjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKFRyZWVCdWlsZGVyJik7CisgICAg
dGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBORVZFUl9JTkxJTkUgdHlwZW5hbWUgVHJlZUJ1
aWxkZXI6OkZvcm1hbFBhcmFtZXRlckxpc3QgY3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhUcmVl
QnVpbGRlciYsIHVuc2lnbmVkJiBwYXJhbWV0ZXJDb3VudCk7CiAKICAgICB0ZW1wbGF0ZSA8Y2xh
c3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElORSBUcmVlQ2xhc3NFeHByZXNzaW9uIHBhcnNlQ2xh
c3MoVHJlZUJ1aWxkZXImLCBGdW5jdGlvbk5hbWVSZXF1aXJlbWVudHMsIFBhcnNlckNsYXNzSW5m
bzxUcmVlQnVpbGRlcj4mKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbW1vblNsb3dQYXRocy5jcHAKaW5kZXggYTliNzU1ZTZjOWFlOWI5OGE2MjI5MzU0NmVlNTdj
YTgxZWM5YzMyYy4uMmU4NjhkY2IyZDcxZmU3Y2YyOGU5NTBmMDVjNzU4YmE4MDVjYzMyNiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3Bw
CkBAIC0zNyw3ICszNyw2IEBACiAjaW5jbHVkZSAiRXJyb3IuaCIKICNpbmNsdWRlICJFcnJvckhh
bmRsaW5nU2NvcGUuaCIKICNpbmNsdWRlICJFeGNlcHRpb25GdXp6LmgiCi0jaW5jbHVkZSAiR2Vu
ZXJhdG9yRnJhbWUuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJIb3N0
Q2FsbFJldHVyblZhbHVlLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKQEAgLTc1MywzOCAr
NzUyLDYgQEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2Fzc2VydCkKICAgICBFTkQoKTsKIH0K
IAotU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3NhdmUpCi17Ci0gICAgLy8gT25seSBzYXZlIHZh
cmlhYmxlcyBhbmQgdGVtcG9yYXJ5IHJlZ2lzdGVycy4gVGhlIHNjb3BlIHJlZ2lzdGVycyBhcmUg
aW5jbHVkZWQgaW4gdGhlbS4KLSAgICAvLyBCdXQgcGFyYW1ldGVycyBhcmUgbm90IGluY2x1ZGVk
LiBCZWNhdXNlIHRoZSBnZW5lcmF0b3IgaW1wbGVtZW50YXRpb24gcmVwbGFjZXMgdGhlIHZhbHVl
cyBvZiBwYXJhbWV0ZXJzIG9uIGVhY2ggZ2VuZXJhdG9yLm5leHQoKSBjYWxsLgotICAgIEJFR0lO
KCk7Ci0gICAgSlNWYWx1ZSBnZW5lcmF0b3IgPSBPUCgxKS5qc1ZhbHVlKCk7Ci0gICAgR2VuZXJh
dG9yRnJhbWUqIGZyYW1lID0gbnVsbHB0cjsKLSAgICBKU1ZhbHVlIHZhbHVlID0gZ2VuZXJhdG9y
LmdldChleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9y
RnJhbWVQcml2YXRlTmFtZSgpKTsKLSAgICBpZiAoIXZhbHVlLmlzTnVsbCgpKQotICAgICAgICBm
cmFtZSA9IGpzQ2FzdDxHZW5lcmF0b3JGcmFtZSo+KHZhbHVlKTsKLSAgICBlbHNlIHsKLSAgICAg
ICAgLy8gRklYTUU6IE9uY2UgSlNHZW5lcmF0b3Igc3BlY2lhbGl6ZWQgb2JqZWN0IGlzIGludHJv
ZHVjZWQsIHRoaXMgR2VuZXJhdG9yRnJhbWUgc2hvdWxkIGJlIGVtYmVkZWQgaW50byBpdCB0byBh
dm9pZCBhbGxvY2F0aW9ucy4KLSAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE1MTU0NQotICAgICAgICBmcmFtZSA9IEdlbmVyYXRvckZyYW1lOjpjcmVh
dGUoZXhlYy0+dm0oKSwgIGV4ZWMtPmNvZGVCbG9jaygpLT5udW1DYWxsZWVMb2NhbHMoKSk7Ci0g
ICAgICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGdlbmVyYXRvciwgdHJ1ZSwgUHV0UHJvcGVydHlT
bG90OjpQdXRCeUlkKTsKLSAgICAgICAgYXNPYmplY3QoZ2VuZXJhdG9yKS0+bWV0aG9kVGFibGUo
ZXhlYy0+dm0oKSktPnB1dChhc09iamVjdChnZW5lcmF0b3IpLCBleGVjLCBleGVjLT5wcm9wZXJ0
eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yRnJhbWVQcml2YXRlTmFtZSgpLCBmcmFt
ZSwgc2xvdCk7Ci0gICAgfQotICAgIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9IHBj
WzJdLnUudW5zaWduZWRWYWx1ZTsKLSAgICBmcmFtZS0+c2F2ZShleGVjLCBleGVjLT5jb2RlQmxv
Y2soKS0+bGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQobGl2ZUNhbGxlZUxvY2Fsc0luZGV4KSk7Ci0g
ICAgRU5EKCk7Ci19Ci0KLVNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9yZXN1bWUpCi17Ci0gICAg
QkVHSU4oKTsKLSAgICBKU1ZhbHVlIGdlbmVyYXRvciA9IE9QKDEpLmpzVmFsdWUoKTsKLSAgICBH
ZW5lcmF0b3JGcmFtZSogZnJhbWUgPSBqc0Nhc3Q8R2VuZXJhdG9yRnJhbWUqPihnZW5lcmF0b3Iu
Z2V0KGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JG
cmFtZVByaXZhdGVOYW1lKCkpKTsKLSAgICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXgg
PSBwY1syXS51LnVuc2lnbmVkVmFsdWU7Ci0gICAgZnJhbWUtPnJlc3VtZShleGVjLCBleGVjLT5j
b2RlQmxvY2soKS0+bGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQobGl2ZUNhbGxlZUxvY2Fsc0luZGV4
KSk7Ci0gICAgRU5EKCk7Ci19Ci0KIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9jcmVhdGVfbGV4
aWNhbF9lbnZpcm9ubWVudCkKIHsKICAgICBCRUdJTigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAppbmRleCA2NDAxYTYxNGQ1NjExNjYzNTY5
YjE4YTAyNzJiMjhhYzM1Mjg2YTgyLi4zZDljMTVmNWFmMGM3NTdkZGExMDUzMzkxOTkwZjU0NjM4
ODY4MWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25T
bG93UGF0aHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93
UGF0aHMuaApAQCAtMjQ4LDggKzI0OCw2IEBAIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3Bh
dGhfbmV4dF9nZW5lcmljX2VudW1lcmF0b3JfcG5hbWUpOwogU0xPV19QQVRIX0hJRERFTl9ERUNM
KHNsb3dfcGF0aF90b19pbmRleF9zdHJpbmcpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3df
cGF0aF9wcm9maWxlX3R5cGVfY2xlYXJfbG9nKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93
X3BhdGhfYXNzZXJ0KTsKLVNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfc2F2ZSk7Ci1T
TE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3Jlc3VtZSk7CiBTTE9XX1BBVEhfSElEREVO
X0RFQ0woc2xvd19wYXRoX2NyZWF0ZV9sZXhpY2FsX2Vudmlyb25tZW50KTsKIFNMT1dfUEFUSF9I
SURERU5fREVDTChzbG93X3BhdGhfcHVzaF93aXRoX3Njb3BlKTsKIFNMT1dfUEFUSF9ISURERU5f
REVDTChzbG93X3BhdGhfcmVzb2x2ZV9zY29wZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGcmFtZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9HZW5lcmF0b3JGcmFtZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDdkY2IwNDg5YTcxM2Q0YWQ4MzM3YTNjZmU2YTgxNDk3MTUyYTE4OTMuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvR2VuZXJhdG9yRnJhbWUuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsOTQgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBn
bWFpbC5jb20+LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
Ci0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgot
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiR2Vu
ZXJhdG9yRnJhbWUuaCIKLQotI2luY2x1ZGUgIkNvZGVCbG9jay5oIgotI2luY2x1ZGUgIkhlYXBJ
dGVyYXRpb25TY29wZS5oIgotI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKLQotbmFtZXNwYWNlIEpT
QyB7Ci0KLWNvbnN0IENsYXNzSW5mbyBHZW5lcmF0b3JGcmFtZTo6c19pbmZvID0geyAiR2VuZXJh
dG9yRnJhbWUiLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEdlbmVyYXRv
ckZyYW1lKSB9OwotCi1HZW5lcmF0b3JGcmFtZTo6R2VuZXJhdG9yRnJhbWUoVk0mIHZtLCBzaXpl
X3QgbnVtYmVyT2ZDYWxsZWVMb2NhbHMpCi0gICAgOiBCYXNlKHZtLCB2bS5nZW5lcmF0b3JGcmFt
ZVN0cnVjdHVyZS5nZXQoKSkKLSAgICAsIG1fbnVtYmVyT2ZDYWxsZWVMb2NhbHMobnVtYmVyT2ZD
YWxsZWVMb2NhbHMpCi17Ci19Ci0KLXZvaWQgR2VuZXJhdG9yRnJhbWU6OmZpbmlzaENyZWF0aW9u
KFZNJiB2bSkKLXsKLSAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7Ci0gICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBtX251bWJlck9mQ2FsbGVlTG9jYWxzOyArK2kpCi0gICAgICAgIGxvY2Fs
QXQoaSkuY2xlYXIoKTsKLX0KLQotU3RydWN0dXJlKiBHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlU3Ry
dWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90
b3R5cGUpCi17Ci0gICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3Qs
IHByb3RvdHlwZSwgVHlwZUluZm8oQ2VsbFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsK
LX0KLQotR2VuZXJhdG9yRnJhbWUqIEdlbmVyYXRvckZyYW1lOjpjcmVhdGUoVk0mIHZtLCBzaXpl
X3QgbnVtYmVyT2ZMb2NhbHMpCi17Ci0gICAgR2VuZXJhdG9yRnJhbWUqIHJlc3VsdCA9Ci0gICAg
ICAgIG5ldyAoCi0gICAgICAgICAgICBOb3ROdWxsLAotICAgICAgICAgICAgYWxsb2NhdGVDZWxs
PEdlbmVyYXRvckZyYW1lPih2bS5oZWFwLCBhbGxvY2F0aW9uU2l6ZUZvckxvY2FscyhudW1iZXJP
ZkxvY2FscykpKQotICAgICAgICBHZW5lcmF0b3JGcmFtZSh2bSwgbnVtYmVyT2ZMb2NhbHMpOwot
ICAgIHJlc3VsdC0+ZmluaXNoQ3JlYXRpb24odm0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0K
LXZvaWQgR2VuZXJhdG9yRnJhbWU6OnNhdmUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBGYXN0Qml0
VmVjdG9yJiBsaXZlQ2FsbGVlTG9jYWxzKQotewotICAgIC8vIE9ubHkgc2F2ZSBjYWxsZWUgbG9j
YWxzLgotICAgIC8vIEV2ZXJ5IHRpbWUgYSBnZW5lcmF0b3IgaXMgY2FsbGVkIChvciByZXN1bWVk
KSwgcGFyYW1ldGVycyBzaG91bGQgYmUgcmVwbGFjZWQuCi0gICAgQVNTRVJUKGxpdmVDYWxsZWVM
b2NhbHMubnVtQml0cygpIDw9IG1fbnVtYmVyT2ZDYWxsZWVMb2NhbHMpOwotICAgIGxpdmVDYWxs
ZWVMb2NhbHMuZm9yRWFjaFNldEJpdChbJl0oc2l6ZV90IGluZGV4KSB7Ci0gICAgICAgIGxvY2Fs
QXQoaW5kZXgpLnNldChleGVjLT52bSgpLCB0aGlzLCBleGVjLT51bmNoZWNrZWRSKHZpcnR1YWxS
ZWdpc3RlckZvckxvY2FsKGluZGV4KSkuanNWYWx1ZSgpKTsKLSAgICB9KTsKLX0KLQotdm9pZCBH
ZW5lcmF0b3JGcmFtZTo6cmVzdW1lKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgRmFzdEJpdFZlY3Rv
ciYgbGl2ZUNhbGxlZUxvY2FscykKLXsKLSAgICAvLyBPbmx5IHJlc3VtZSBjYWxsZWUgbG9jYWxz
LgotICAgIC8vIEV2ZXJ5IHRpbWUgYSBnZW5lcmF0b3IgaXMgY2FsbGVkIChvciByZXN1bWVkKSwg
cGFyYW1ldGVycyBzaG91bGQgYmUgcmVwbGFjZWQuCi0gICAgbGl2ZUNhbGxlZUxvY2Fscy5mb3JF
YWNoU2V0Qml0KFsmXShzaXplX3QgaW5kZXgpIHsKLSAgICAgICAgZXhlYy0+dW5jaGVja2VkUih2
aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChpbmRleCkpID0gbG9jYWxBdChpbmRleCkuZ2V0KCk7Ci0g
ICAgICAgIGxvY2FsQXQoaW5kZXgpLmNsZWFyKCk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgR2VuZXJh
dG9yRnJhbWU6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRv
cikKLXsKLSAgICBHZW5lcmF0b3JGcmFtZSogdGhpc09iamVjdCA9IGpzQ2FzdDxHZW5lcmF0b3JG
cmFtZSo+KGNlbGwpOwotICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRv
cik7Ci0gICAgLy8gU2luY2Ugb25seSB0cnVlIGNlbGwgcG9pbnRlcnMgYXJlIHN0b3JlZCBhcyBh
IGNlbGwsIHdlIGNhbiBzYWZlbHkgbWFyayB0aGVtLgotICAgIHZpc2l0b3IuYXBwZW5kVmFsdWVz
KHRoaXNPYmplY3QtPmxvY2FscygpLCB0aGlzT2JqZWN0LT5tX251bWJlck9mQ2FsbGVlTG9jYWxz
KTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9HZW5lcmF0b3JGcmFtZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvR2VuZXJhdG9yRnJhbWUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2Q1
NDViMTQ3ZGQ0YWJmYjJiYmI5YjVhNzE5NGU4Zjc0ODQxYzQ5YS4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9HZW5lcmF0b3JGcmFtZS5oCisrKyAvZGV2L251bGwKQEAgLTEsOTAgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaWZuZGVmIEdlbmVyYXRvckZyYW1lX2gKLSNkZWZpbmUgR2VuZXJhdG9y
RnJhbWVfaAotCi0jaW5jbHVkZSAiSlNDZWxsLmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RCaXRWZWN0
b3IuaD4KLQotbmFtZXNwYWNlIEpTQyB7Ci0KLWNsYXNzIEdlbmVyYXRvckZyYW1lIDogcHVibGlj
IEpTQ2VsbCB7Ci0gICAgZnJpZW5kIGNsYXNzIEpJVDsKLSNpZiBFTkFCTEUoREZHX0pJVCkKLSAg
ICBmcmllbmQgY2xhc3MgREZHOjpTcGVjdWxhdGl2ZUpJVDsKLSAgICBmcmllbmQgY2xhc3MgREZH
OjpKSVRDb21waWxlcjsKLSNlbmRpZgotICAgIGZyaWVuZCBjbGFzcyBWTTsKLXB1YmxpYzoKLSAg
ICB0eXBlZGVmIEpTQ2VsbCBCYXNlOwotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1
cmVGbGFncyA9IFN0cnVjdHVyZUlzSW1tb3J0YWwgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKLQot
ICAgIERFQ0xBUkVfRVhQT1JUX0lORk87Ci0KLSAgICBzdGF0aWMgR2VuZXJhdG9yRnJhbWUqIGNy
ZWF0ZShWTSYsIHNpemVfdCBudW1iZXJPZkNhbGxlZUxvY2Fscyk7Ci0KLSAgICBXcml0ZUJhcnJp
ZXJCYXNlPFVua25vd24+KiBsb2NhbHMoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGJpdHdpc2Vf
Y2FzdDxXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+Kj4oYml0d2lzZV9jYXN0PGNoYXIqPih0aGlz
KSArIG9mZnNldE9mTG9jYWxzKCkpOwotICAgIH0KLQotICAgIFdyaXRlQmFycmllckJhc2U8VW5r
bm93bj4mIGxvY2FsQXQoc2l6ZV90IGluZGV4KQotICAgIHsKLSAgICAgICAgQVNTRVJUKGluZGV4
IDwgbV9udW1iZXJPZkNhbGxlZUxvY2Fscyk7Ci0gICAgICAgIHJldHVybiBsb2NhbHMoKVtpbmRl
eF07Ci0gICAgfQotCi0gICAgc3RhdGljIHNpemVfdCBvZmZzZXRPZkxvY2FscygpCi0gICAgewot
ICAgICAgICByZXR1cm4gV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mPHNpemVvZihXcml0ZUJhcnJp
ZXI8VW5rbm93bj4pPihzaXplb2YoR2VuZXJhdG9yRnJhbWUpKTsKLSAgICB9Ci0KLSAgICBzdGF0
aWMgc2l6ZV90IGFsbG9jYXRpb25TaXplRm9yTG9jYWxzKHVuc2lnbmVkIG51bWJlck9mTG9jYWxz
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIG9mZnNldE9mTG9jYWxzKCkgKyBudW1iZXJPZkxvY2Fs
cyAqIHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pOwotICAgIH0KLQotICAgIHN0YXRpYyBT
dHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBw
cm90b3R5cGUpOwotCi0gICAgdm9pZCBzYXZlKEV4ZWNTdGF0ZSosIGNvbnN0IEZhc3RCaXRWZWN0
b3ImIGxpdmVDYWxsZWVMb2NhbHMpOwotICAgIHZvaWQgcmVzdW1lKEV4ZWNTdGF0ZSosIGNvbnN0
IEZhc3RCaXRWZWN0b3ImIGxpdmVDYWxsZWVMb2NhbHMpOwotCi1wcml2YXRlOgotICAgIEdlbmVy
YXRvckZyYW1lKFZNJiwgc2l6ZV90IG51bWJlck9mQ2FsbGVlTG9jYWxzKTsKLQotICAgIHNpemVf
dCBtX251bWJlck9mQ2FsbGVlTG9jYWxzOwotCi0gICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0
c0V4dHJhY3RvcjsKLQotICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKLQotcHJvdGVjdGVk
OgotICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsK
LX07Ci0KLX0gLy8gbmFtZXNwYWNlIEpTQwotCi0jZW5kaWYgLy8gR2VuZXJhdG9yRnJhbWVfaApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0b3JGdW5j
dGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0b3JGdW5jdGlv
bi5oCmluZGV4IDM2ZjYxYzVmMjBmNTZiZWZkNmM1NTc4NDJiMTllMzliMTlhM2E5MTkuLmExY2Jh
ZDk0NmRjNTY4MjllZDFhMjE1NTc5MGI0NDBhOGRmNDMwMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJhdG9yRnVuY3Rpb24uaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyYXRvckZ1bmN0aW9uLmgKQEAgLTU1LDYgKzU1
LDE2IEBAIGNsYXNzIEpTR2VuZXJhdG9yRnVuY3Rpb24gOiBwdWJsaWMgSlNGdW5jdGlvbiB7CiAg
ICAgICAgIEV4ZWN1dGluZyA9IC0yLAogICAgIH07CiAKKyAgICAvLyBbdGhpc10sIEBnZW5lcmF0
b3IsIEBnZW5lcmF0b3JTdGF0ZSwgQGdlbmVyYXRvclZhbHVlLCBAZ2VuZXJhdG9yUmVzdW1lTW9k
ZSwgQGdlbmVyYXRvckZyYW1lLgorICAgIGVudW0gY2xhc3MgR2VuZXJhdG9yQXJndW1lbnQgOiBp
bnQzMl90IHsKKyAgICAgICAgVGhpc1ZhbHVlID0gMCwKKyAgICAgICAgR2VuZXJhdG9yID0gMSwK
KyAgICAgICAgU3RhdGUgPSAyLAorICAgICAgICBWYWx1ZSA9IDMsCisgICAgICAgIFJlc3VtZU1v
ZGUgPSA0LAorICAgICAgICBGcmFtZSA9IDUsCisgICAgfTsKKwogICAgIGNvbnN0IHN0YXRpYyB1
bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwogCiAgICAgREVD
TEFSRV9FWFBPUlRfSU5GTzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCA0
NjIxODM3NmU5NTU3ZjRjNzU0ZmZhYjIxNzBlMzVmZDUxYmE0Y2FkLi5hMmFjODQxN2U0YTQyODQz
ZDExNGM1Y2M4YjIzNzg0NjZkMzYzNjY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0u
Y3BwCkBAIC00Niw3ICs0Niw2IEBACiAjaW5jbHVkZSAiRlRMVGh1bmtzLmgiCiAjaW5jbHVkZSAi
RnVuY3Rpb25Db25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkdDQWN0aXZpdHlDYWxsYmFjay5oIgot
I2luY2x1ZGUgIkdlbmVyYXRvckZyYW1lLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAj
aW5jbHVkZSAiSGVhcC5oIgogI2luY2x1ZGUgIkhlYXBJdGVyYXRpb25TY29wZS5oIgpAQCAtMjQx
LDcgKzI0MCw2IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAg
ICBpbmZlcnJlZFR5cGVTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBJbmZlcnJlZFR5cGU6OmNyZWF0ZVN0
cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICBpbmZlcnJlZFR5cGVUYWJsZVN0cnVj
dHVyZS5zZXQoKnRoaXMsIEluZmVycmVkVHlwZVRhYmxlOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMs
IDAsIGpzTnVsbCgpKSk7CiAgICAgZnVuY3Rpb25SYXJlRGF0YVN0cnVjdHVyZS5zZXQoKnRoaXMs
IEZ1bmN0aW9uUmFyZURhdGE6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsK
LSAgICBnZW5lcmF0b3JGcmFtZVN0cnVjdHVyZS5zZXQoKnRoaXMsIEdlbmVyYXRvckZyYW1lOjpj
cmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgZXhjZXB0aW9uU3RydWN0
dXJlLnNldCgqdGhpcywgRXhjZXB0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVs
bCgpKSk7CiAgICAgcHJvbWlzZURlZmVycmVkU3RydWN0dXJlLnNldCgqdGhpcywgSlNQcm9taXNl
RGVmZXJyZWQ6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICBpbnRl
cm5hbFByb21pc2VEZWZlcnJlZFN0cnVjdHVyZS5zZXQoKnRoaXMsIEpTSW50ZXJuYWxQcm9taXNl
RGVmZXJyZWQ6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9WTS5oCmluZGV4IDk2MTVmNjAyN2E5ZGNjZGFiNTNkYjEyYzY4NDc3YTE1
YWUwN2UwZmYuLjcwZTE1OTExZDdmOWU4OTg1OWFkMzZlMGE4ZTg3N2E5OGVjNmZiMTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaApAQCAtMzE5LDcgKzMxOSw2IEBAIGNsYXNzIFZNIDog
cHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFZNPiB7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4g
aW5mZXJyZWRUeXBlU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGluZmVycmVkVHlw
ZVRhYmxlU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGZ1bmN0aW9uUmFyZURhdGFT
dHJ1Y3R1cmU7Ci0gICAgU3Ryb25nPFN0cnVjdHVyZT4gZ2VuZXJhdG9yRnJhbWVTdHJ1Y3R1cmU7
CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gZXhjZXB0aW9uU3RydWN0dXJlOwogICAgIFN0cm9uZzxT
dHJ1Y3R1cmU+IHByb21pc2VEZWZlcnJlZFN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJl
PiBpbnRlcm5hbFByb21pc2VEZWZlcnJlZFN0cnVjdHVyZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV1RGL1dURi54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDMyNTM2YmYzYmRhOWI0MzgwMzBhZDY1YmUyNDUzZmE4
Yzk1MjA5ZGYuLmI3ZGY4M2VlMDgzMGQ4NDcxYzRiMGZiYzhiYjZhNGJkZTZhZThmNWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291
cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMzM1LDYgKzMzNSw5IEBA
CiAJCUZFODkyNUIwMUQwMERBRUMwMDQ2OTA3RSAvKiBJbmRlbnRlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU4OTI1QUYxRDAwREFFQzAwNDY5MDdF
IC8qIEluZGVudGVyLmggKi87IH07CiAJCUZFREFDRDNEMTYzMEY4M0YwMEM2OTYzNCAvKiBTdGFj
a1N0YXRzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEZFREFDRDNCMTYzMEY4M0YwMEM2OTYzNCAvKiBTdGFja1N0YXRzLmNwcCAqLzsgfTsKIAkJRkVE
QUNEM0UxNjMwRjgzRjAwQzY5NjM0IC8qIFN0YWNrU3RhdHMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFREFDRDNDMTYzMEY4M0YwMEM2OTYzNCAvKiBT
dGFja1N0YXRzLmggKi87IH07CisJCUM4QjBFMUExRTAxQTQ4NkVCOTVFMEQxMSAvKiBJbmRleFNl
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzEzN0Ux
RDdEQkQ4NEFDMzhGQUU0RDM0IC8qIEluZGV4U2V0LmggKi87IH07CisJCUM5MTZCOTc1RjAyRjRG
N0U4QjRBQjEyRCAvKiBJbmRleE1hcC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNUI0MzM4M0E1RDBCNDYzQzk0MzNEOTMzIC8qIEluZGV4TWFwLmggKi87
IH07CisJCTRCMjY4MEREOUI5NzQ0MDI4OTlFRDU3MiAvKiBJbmRleGVkQ29udGFpbmVySXRlcmF0
b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlDNjdD
NTQyNTg5MzQ4RTI4NUI0OTY5OSAvKiBJbmRleGVkQ29udGFpbmVySXRlcmF0b3IuaCAqLzsgfTsK
IC8qIEVuZCBQQlhCdWlsZEZpbGUgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhDb250YWluZXJJ
dGVtUHJveHkgc2VjdGlvbiAqLwpAQCAtNjgyLDYgKzY4NSw5IEBACiAJCUZFODkyNUFGMUQwMERB
RUMwMDQ2OTA3RSAvKiBJbmRlbnRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBJbmRlbnRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRURBQ0QzQjE2MzBG
ODNGMDBDNjk2MzQgLyogU3RhY2tTdGF0cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBTdGFja1N0YXRzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RkVEQUNEM0MxNjMwRjgzRjAwQzY5NjM0IC8qIFN0YWNrU3RhdHMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU3RhY2tTdGF0cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkzMTM3RTFEN0RCRDg0QUMzOEZBRTREMzQgLyogSW5kZXhTZXQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gSW5kZXhTZXQuaDsgcGF0aCA9IEluZGV4U2V0Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVCNDMzODNBNUQwQjQ2M0M5NDMzRDkzMyAvKiBJbmRl
eE1hcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBJbmRleE1hcC5oOyBwYXRo
ID0gSW5kZXhNYXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOUM2N0M1NDI1ODkz
NDhFMjg1QjQ5Njk5IC8qIEluZGV4ZWRDb250YWluZXJJdGVyYXRvci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBJbmRleGVkQ29udGFpbmVySXRlcmF0b3IuaDsgcGF0aCA9IElu
ZGV4ZWRDb250YWluZXJJdGVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogLyog
RW5kIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhGcmFtZXdvcmtz
QnVpbGRQaGFzZSBzZWN0aW9uICovCkBAIC0xMDQxLDYgKzEwNDcsOSBAQAogCQkJCUU0QTBBRDM4
MUE5NjI0NTUwMDUzNkRGNiAvKiBXb3JrUXVldWUuaCAqLywKIAkJCQlBOEE0NzM3QTE1MUE4MjVC
MDA0MTIzRkYgLyogV1RGVGhyZWFkRGF0YS5jcHAgKi8sCiAJCQkJQThBNDczN0IxNTFBODI1QjAw
NDEyM0ZGIC8qIFdURlRocmVhZERhdGEuaCAqLywKKwkJCQkzMTM3RTFEN0RCRDg0QUMzOEZBRTRE
MzQgLyogSW5kZXhTZXQuaCAqLywKKwkJCQk1QjQzMzgzQTVEMEI0NjNDOTQzM0Q5MzMgLyogSW5k
ZXhNYXAuaCAqLywKKwkJCQk5QzY3QzU0MjU4OTM0OEUyODVCNDk2OTkgLyogSW5kZXhlZENvbnRh
aW5lckl0ZXJhdG9yLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IHd0ZjsKIAkJCXNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7CkBAIC0xNDM5LDYgKzE0NDgsOSBAQAogCQkJCUE4QTQ3NDQ2MTUxQTgyNUIw
MDQxMjNGRiAvKiBXVEZTdHJpbmcuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4QTQ3NDg3MTUxQTgy
NUIwMDQxMjNGRiAvKiBXVEZUaHJlYWREYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRTczRTAy
NTE5RENCN0FCMDA1ODBENUMgLyogWFBDU1BJLmggaW4gSGVhZGVycyAqLywKKwkJCQlDOEIwRTFB
MUUwMUE0ODZFQjk1RTBEMTEgLyogSW5kZXhTZXQuaCBpbiBIZWFkZXJzICovLAorCQkJCUM5MTZC
OTc1RjAyRjRGN0U4QjRBQjEyRCAvKiBJbmRleE1hcC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNEIy
NjgwREQ5Qjk3NDQwMjg5OUVENTcyIC8qIEluZGV4ZWRDb250YWluZXJJdGVyYXRvci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9
IDA7CiAJCX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dCBiL1Nv
dXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CmluZGV4IDZjYTg5M2Q1YjI1MDI3ZDI3OTNjZmM5
NjFlM2ViZDRmYmU3NjgyN2QuLjg2Nzk5OWVhOTI4NmI5NTNmMTMzNzA5YjZkZTQ5MDA1ZTA0YzE0
YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJj
ZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CkBAIC00NSw2ICs0NSwxMCBAQCBzZXQoV1RGX0hFQURF
UlMKICAgICBIYXNoVGFibGUuaAogICAgIEhhc2hUcmFpdHMuaAogICAgIEhleE51bWJlci5oCisg
ICAgSW5kZXhNYXAuaAorICAgIEluZGV4U2V0LmgKKyAgICBJbmRleFNwYXJzZVNldC5oCisgICAg
SW5kZXhlZENvbnRhaW5lckl0ZXJhdG9yLmgKICAgICBJdGVyYXRvckFkYXB0b3JzLmgKICAgICBJ
dGVyYXRvclJhbmdlLmgKICAgICBMaXN0SGFzaFNldC5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9GYXN0Qml0VmVjdG9yLmggYi9Tb3VyY2UvV1RGL3d0Zi9GYXN0Qml0VmVjdG9yLmgKaW5k
ZXggOThmZmY1Y2Y3MzUzZTZiYzY3ZGE1YzU1OTQwY2NjZTRlNGIxNTZkMC4uZmYwMGI3YjU0ZDRh
MGNmZjRiZWY3ZDAzODU0ZGU2YjkwY2UxZGI5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
RmFzdEJpdFZlY3Rvci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0Zhc3RCaXRWZWN0b3IuaApAQCAt
MjMsOCArMjMsNyBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAotI2lmbmRlZiBGYXN0Qml0VmVj
dG9yX2gKLSNkZWZpbmUgRmFzdEJpdFZlY3Rvcl9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUg
PHN0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CkBAIC0zNiwxMiArMzUsMTQg
QEAgY2xhc3MgUHJpbnRTdHJlYW07CiAKIGNsYXNzIEZhc3RCaXRWZWN0b3IgewogcHVibGljOgot
ICAgIEZhc3RCaXRWZWN0b3IoKQotICAgICAgICA6IG1fYXJyYXkoMCkKLSAgICAgICAgLCBtX251
bUJpdHMoMCkKKyAgICBGYXN0Qml0VmVjdG9yKCkgPSBkZWZhdWx0OworCisgICAgRmFzdEJpdFZl
Y3RvcihGYXN0Qml0VmVjdG9yJiYgb3RoZXIpCisgICAgICAgIDogbV9hcnJheShzdGQ6OmV4Y2hh
bmdlKG90aGVyLm1fYXJyYXksIG51bGxwdHIpKQorICAgICAgICAsIG1fbnVtQml0cyhzdGQ6OmV4
Y2hhbmdlKG90aGVyLm1fbnVtQml0cywgMCkpCiAgICAgewogICAgIH0KLSAgICAKKwogICAgIEZh
c3RCaXRWZWN0b3IoY29uc3QgRmFzdEJpdFZlY3RvciYgb3RoZXIpCiAgICAgICAgIDogbV9hcnJh
eSgwKQogICAgICAgICAsIG1fbnVtQml0cygwKQpAQCAtMjAyLDEzICsyMDMsMTAgQEAgY2xhc3Mg
RmFzdEJpdFZlY3RvciB7CiAgICAgc3RhdGljIHNpemVfdCBhcnJheUxlbmd0aChzaXplX3QgbnVt
Qml0cykgeyByZXR1cm4gKG51bUJpdHMgKyAzMSkgPj4gNTsgfQogICAgIHNpemVfdCBhcnJheUxl
bmd0aCgpIGNvbnN0IHsgcmV0dXJuIGFycmF5TGVuZ3RoKG1fbnVtQml0cyk7IH0KICAgICAKLSAg
ICB1aW50MzJfdCogbV9hcnJheTsgLy8gTm8sIHRoaXMgY2FuJ3QgYmUgYW4gc3RkOjp1bmlxdWVf
cHRyPHVpbnQzMl90W10+LgotICAgIHNpemVfdCBtX251bUJpdHM7CisgICAgdWludDMyX3QqIG1f
YXJyYXkgeyBudWxscHRyIH07IC8vIE5vLCB0aGlzIGNhbid0IGJlIGFuIHN0ZDo6dW5pcXVlX3B0
cjx1aW50MzJfdFtdPi4KKyAgICBzaXplX3QgbV9udW1CaXRzIHsgMCB9OwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV1RGCiAKIHVzaW5nIFdURjo6RmFzdEJpdFZlY3RvcjsKLQotI2VuZGlmIC8vIEZh
c3RCaXRWZWN0b3JfaAotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9JbmRleE1hcC5oIGIv
U291cmNlL1dURi93dGYvSW5kZXhNYXAuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMmQ2MTAxN2E0MTVjNDczOTE2
YWI4MTY2OGMxNmIwMGJkZTUyNDJiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYv
SW5kZXhNYXAuaApAQCAtMCwwICsxLDgyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIw
MTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CisKK25hbWVzcGFjZSBXVEYgeworCisvLyBUaGlzIGlzIGEgbWFwIGZvciBrZXlzIHRo
YXQgaGF2ZSBhbiBpbmRleCgpLiBJdCdzIHN1cGVyIGVmZmljaWVudCBmb3IgQmFzaWNCbG9ja3Mu
IEl0J3Mgb25seQorLy8gZWZmaWNpZW50IGZvciBWYWx1ZXMgaWYgeW91IGRvbid0IGNyZWF0ZSB0
b28gbWFueSBvZiB0aGVzZSBtYXBzLCBzaW5jZSBWYWx1ZXMgY2FuIGhhdmUgdmVyeQorLy8gc3Bh
cnNlIGluZGljZXMgYW5kIHRoZXJlIGFyZSBhIGxvdCBvZiBWYWx1ZXMuCisKK3RlbXBsYXRlPHR5
cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWU+CitjbGFzcyBJbmRleE1hcCB7CitwdWJsaWM6Cisg
ICAgZXhwbGljaXQgSW5kZXhNYXAoc2l6ZV90IHNpemUgPSAwKQorICAgIHsKKyAgICAgICAgbV92
ZWN0b3IuZmlsbChWYWx1ZSgpLCBzaXplKTsKKyAgICB9CisKKyAgICB2b2lkIHJlc2l6ZShzaXpl
X3Qgc2l6ZSkKKyAgICB7CisgICAgICAgIG1fdmVjdG9yLmZpbGwoVmFsdWUoKSwgc2l6ZSk7Cisg
ICAgfQorCisgICAgdm9pZCBjbGVhcigpCisgICAgeworICAgICAgICBtX3ZlY3Rvci5maWxsKFZh
bHVlKCksIG1fdmVjdG9yLnNpemUoKSk7CisgICAgfQorCisgICAgc2l6ZV90IHNpemUoKSBjb25z
dCB7IHJldHVybiBtX3ZlY3Rvci5zaXplKCk7IH0KKworICAgIFZhbHVlJiBvcGVyYXRvcltdKHNp
emVfdCBpbmRleCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX3ZlY3RvcltpbmRleF07CisgICAg
fQorCisgICAgY29uc3QgVmFsdWUmIG9wZXJhdG9yW10oc2l6ZV90IGluZGV4KSBjb25zdAorICAg
IHsKKyAgICAgICAgcmV0dXJuIG1fdmVjdG9yW2luZGV4XTsKKyAgICB9CisgICAgCisgICAgVmFs
dWUmIG9wZXJhdG9yW10oS2V5KiBrZXkpCisgICAgeworICAgICAgICByZXR1cm4gbV92ZWN0b3Jb
a2V5LT5pbmRleCgpXTsKKyAgICB9CisgICAgCisgICAgY29uc3QgVmFsdWUmIG9wZXJhdG9yW10o
S2V5KiBrZXkpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV92ZWN0b3Jba2V5LT5pbmRl
eCgpXTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgVmVjdG9yPFZhbHVlPiBtX3ZlY3RvcjsKK307
CisKK30gLy8gbmFtZXNwYWNlIFdURgorCit1c2luZyBXVEY6OkluZGV4TWFwOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvSW5kZXhTZXQuaCBiL1NvdXJjZS9XVEYvd3RmL0luZGV4U2V0LmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNjFiZDA0ZjJkMTVhYjZjZDJhNjljYzQ0NWI4ZDczNmIyMmMwNWI2OAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL0luZGV4U2V0LmgKQEAgLTAsMCArMSwxNjMg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9CaXRWZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYv
Q29tbWFQcmludGVyLmg+CisKK25hbWVzcGFjZSBXVEYgeworCisvLyBUaGlzIGlzIGEgc2V0IGZv
ciB0aGluZ3MgdGhhdCBoYXZlIGFuIGluZGV4KCkuIEl0J3Mgc3VwZXIgZWZmaWNpZW50IGZvciBC
YXNpY0Jsb2Nrcy4gSXQncyBvbmx5CisvLyBlZmZpY2llbnQgZm9yIFZhbHVlcyBpZiB5b3UgZG9u
J3QgY3JlYXRlIHRvbyBtYW55IG9mIHRoZXNlIHNldHMsIHNpbmNlIFZhbHVlcyBjYW4gaGF2ZSB2
ZXJ5IHNwYXJzZQorLy8gaW5kaWNlcyBhbmQgdGhlcmUgYXJlIGEgbG90IG9mIFZhbHVlcy4KKwor
Ly8gSWYgeW91IHdhbnQgYSBzZXQgb2YgQmFzaWNCbG9ja3MsIHlvdSBkbyBJbmRleFNldDxCYXNp
Y0Jsb2NrPi4gU28sIFQgPSBCYXNpY0Jsb2NrLgordGVtcGxhdGU8dHlwZW5hbWUgVD4KK2NsYXNz
IEluZGV4U2V0IHsKK3B1YmxpYzoKKyAgICBJbmRleFNldCgpCisgICAgeworICAgIH0KKworICAg
IGJvb2wgYWRkKFQqIHZhbHVlKQorICAgIHsKKyAgICAgICAgcmV0dXJuICFtX3NldC5zZXQodmFs
dWUtPmluZGV4KCkpOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEl0ZXJhYmxlPgor
ICAgIGJvb2wgYWRkQWxsKGNvbnN0IEl0ZXJhYmxlJiBpdGVyYWJsZSkKKyAgICB7CisgICAgICAg
IGJvb2wgcmVzdWx0ID0gZmFsc2U7CisgICAgICAgIGZvciAoVCogdmFsdWUgOiBpdGVyYWJsZSkK
KyAgICAgICAgICAgIHJlc3VsdCB8PSBhZGQodmFsdWUpOworICAgICAgICByZXR1cm4gcmVzdWx0
OworICAgIH0KKworICAgIGJvb2wgcmVtb3ZlKFQqIHZhbHVlKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIG1fc2V0LmNsZWFyKHZhbHVlLT5pbmRleCgpKTsKKyAgICB9CisKKyAgICBib29sIGNvbnRh
aW5zKFQqIHZhbHVlKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKCF2YWx1ZSkKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIG1fc2V0LmdldCh2YWx1ZS0+aW5kZXgo
KSk7CisgICAgfQorCisgICAgc2l6ZV90IHNpemUoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0
dXJuIG1fc2V0LmJpdENvdW50KCk7CisgICAgfQorCisgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QK
KyAgICB7CisgICAgICAgIHJldHVybiAhc2l6ZSgpOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5
cGVuYW1lIENvbGxlY3Rpb25UeXBlPgorICAgIGNsYXNzIEl0ZXJhYmxlIHsKKyAgICBwdWJsaWM6
CisgICAgICAgIEl0ZXJhYmxlKGNvbnN0IENvbGxlY3Rpb25UeXBlJiBjb2xsZWN0aW9uLCBjb25z
dCBCaXRWZWN0b3ImIHNldCkKKyAgICAgICAgICAgIDogbV9jb2xsZWN0aW9uKGNvbGxlY3Rpb24p
CisgICAgICAgICAgICAsIG1fc2V0KHNldCkKKyAgICAgICAgeworICAgICAgICB9CisKKyAgICAg
ICAgY2xhc3MgaXRlcmF0b3IgeworICAgICAgICBwdWJsaWM6CisgICAgICAgICAgICBpdGVyYXRv
cigpCisgICAgICAgICAgICAgICAgOiBtX2NvbGxlY3Rpb24obnVsbHB0cikKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaXRlcmF0b3IoY29uc3QgQ29sbGVjdGlv
blR5cGUmIGNvbGxlY3Rpb24sIEJpdFZlY3Rvcjo6aXRlcmF0b3IgaXRlcikKKyAgICAgICAgICAg
ICAgICA6IG1fY29sbGVjdGlvbigmY29sbGVjdGlvbikKKyAgICAgICAgICAgICAgICAsIG1faXRl
cihpdGVyKQorICAgICAgICAgICAgeworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBUKiBv
cGVyYXRvciooKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBtX2NvbGxl
Y3Rpb24tPmF0KCptX2l0ZXIpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpdGVyYXRv
ciYgb3BlcmF0b3IrKygpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgKyttX2l0ZXI7
CisgICAgICAgICAgICAgICAgcmV0dXJuICp0aGlzOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgaXRlcmF0b3ImIG90aGVyKSBjb25zdAorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBtX2l0ZXIgPT0gb3RoZXIubV9pdGVyOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgaXRlcmF0
b3ImIG90aGVyKSBjb25zdAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiAh
KCp0aGlzID09IG90aGVyKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICBwcml2YXRlOgorICAg
ICAgICAgICAgY29uc3QgQ29sbGVjdGlvblR5cGUqIG1fY29sbGVjdGlvbjsKKyAgICAgICAgICAg
IEJpdFZlY3Rvcjo6aXRlcmF0b3IgbV9pdGVyOworICAgICAgICB9OworCisgICAgICAgIGl0ZXJh
dG9yIGJlZ2luKCkgY29uc3QgeyByZXR1cm4gaXRlcmF0b3IobV9jb2xsZWN0aW9uLCBtX3NldC5i
ZWdpbigpKTsgfQorICAgICAgICBpdGVyYXRvciBlbmQoKSBjb25zdCB7IHJldHVybiBpdGVyYXRv
cihtX2NvbGxlY3Rpb24sIG1fc2V0LmVuZCgpKTsgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAg
Y29uc3QgQ29sbGVjdGlvblR5cGUmIG1fY29sbGVjdGlvbjsKKyAgICAgICAgY29uc3QgQml0VmVj
dG9yJiBtX3NldDsKKyAgICB9OworCisgICAgLy8gRm9yIGJhc2ljIGJsb2NrcywgeW91IGRvOgor
ICAgIC8vIGluZGV4U2V0LnZhbHVlcyhwcm9jZWR1cmUpOworICAgIC8vCisgICAgLy8gRm9yIHZh
bHVlcywgeW91IGRvOgorICAgIC8vIGluZGV4U2V0LnZhbHVlcyhwcm9jZWR1cmUudmFsdWVzKCkp
OworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENvbGxlY3Rpb25UeXBlPgorICAgIEl0ZXJhYmxlPENv
bGxlY3Rpb25UeXBlPiB2YWx1ZXMoY29uc3QgQ29sbGVjdGlvblR5cGUmIGNvbGxlY3Rpb24pIGNv
bnN0CisgICAgeworICAgICAgICByZXR1cm4gSXRlcmFibGU8Q29sbGVjdGlvblR5cGU+KGNvbGxl
Y3Rpb24sIGluZGljZXMoKSk7CisgICAgfQorCisgICAgY29uc3QgQml0VmVjdG9yJiBpbmRpY2Vz
KCkgY29uc3QgeyByZXR1cm4gbV9zZXQ7IH0KKworICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYg
b3V0KSBjb25zdAorICAgIHsKKyAgICAgICAgQ29tbWFQcmludGVyIGNvbW1hOworICAgICAgICBm
b3IgKHNpemVfdCBpbmRleCA6IGluZGljZXMoKSkKKyAgICAgICAgICAgIG91dC5wcmludChjb21t
YSwgVDo6ZHVtcFByZWZpeCwgaW5kZXgpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBCaXRWZWN0
b3IgbV9zZXQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXVEYKKwordXNpbmcgV1RGOjpJbmRleFNl
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0luZGV4ZWRDb250YWluZXJJdGVyYXRvci5o
IGIvU291cmNlL1dURi93dGYvSW5kZXhlZENvbnRhaW5lckl0ZXJhdG9yLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
M2U5YjllMzdhMTI0N2Q5MDdiZTgzMGM5ZDIwMTJmNzdhMWI3Mzc3MQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XVEYvd3RmL0luZGV4ZWRDb250YWluZXJJdGVyYXRvci5oCkBAIC0wLDAgKzEs
ODEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8dHlwZV90cmFpdHM+CisKK25hbWVzcGFjZSBXVEYg
eworCit0ZW1wbGF0ZTxjbGFzcyBDb250YWluZXI+CitjbGFzcyBJbmRleGVkQ29udGFpbmVySXRl
cmF0b3IgeworcHVibGljOgorICAgIEluZGV4ZWRDb250YWluZXJJdGVyYXRvcigpCisgICAgICAg
IDogbV9jb250YWluZXIobnVsbHB0cikKKyAgICAgICAgLCBtX2luZGV4KDApCisgICAgeworICAg
IH0KKworICAgIEluZGV4ZWRDb250YWluZXJJdGVyYXRvcihjb25zdCBDb250YWluZXImIGNvbnRh
aW5lciwgdW5zaWduZWQgaW5kZXgpCisgICAgICAgIDogbV9jb250YWluZXIoJmNvbnRhaW5lcikK
KyAgICAgICAgLCBtX2luZGV4KGZpbmROZXh0KGluZGV4KSkKKyAgICB7CisgICAgfQorCisgICAg
YXV0byBvcGVyYXRvciooKSAtPiB0eXBlbmFtZSBzdGQ6OnJlc3VsdF9vZjxkZWNsdHlwZSgmQ29u
dGFpbmVyOjphdCkoY29uc3QgQ29udGFpbmVyLCB1bnNpZ25lZCk+Ojp0eXBlCisgICAgeworICAg
ICAgICByZXR1cm4gbV9jb250YWluZXItPmF0KG1faW5kZXgpOworICAgIH0KKworICAgIEluZGV4
ZWRDb250YWluZXJJdGVyYXRvciYgb3BlcmF0b3IrKygpCisgICAgeworICAgICAgICBtX2luZGV4
ID0gZmluZE5leHQobV9pbmRleCArIDEpOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQor
CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEluZGV4ZWRDb250YWluZXJJdGVyYXRvciYgb3Ro
ZXIpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQobV9jb250YWluZXIgPT0gb3RoZXIubV9j
b250YWluZXIpOworICAgICAgICByZXR1cm4gbV9pbmRleCA9PSBvdGhlci5tX2luZGV4OworICAg
IH0KKworICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBJbmRleGVkQ29udGFpbmVySXRlcmF0b3Im
IG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOwor
ICAgIH0KKworcHJpdmF0ZToKKyAgICB1bnNpZ25lZCBmaW5kTmV4dCh1bnNpZ25lZCBpbmRleCkK
KyAgICB7CisgICAgICAgIHdoaWxlIChpbmRleCA8IG1fY29udGFpbmVyLT5zaXplKCkgJiYgIW1f
Y29udGFpbmVyLT5hdChpbmRleCkpCisgICAgICAgICAgICBpbmRleCsrOworICAgICAgICByZXR1
cm4gaW5kZXg7CisgICAgfQorCisgICAgY29uc3QgQ29udGFpbmVyKiBtX2NvbnRhaW5lcjsKKyAg
ICB1bnNpZ25lZCBtX2luZGV4OworfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQg
YS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDVkMjg2ODU0ZDc2
NDRmMWZjMjg1MjZjZjQ0YzhjZTQ3MjcyZThlMDUuLjAxMTZhYjE5NGJmZjA5NGQ3YjRiZDRlYzM4
Y2RkNDEwMjA0NTZmYjkgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMTYtMDgtMjMgIFl1c3VrZSBTdXp1a2kg
IDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0RGR11bRlRMXSBJbXBsZW1lbnQg
RVM2IEdlbmVyYXRvcnMgaW4gREZHIC8gRlRMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNTI3MjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIHN0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQtYXJyYXku
anM6IEFkZGVkLgorICAgICAgICAoZmliKToKKyAgICAgICAgKiBzdHJlc3MvZ2VuZXJhdG9yLWZp
Yi1mdGwtYW5kLW9iamVjdC5qczogQWRkZWQuCisgICAgICAgIChmaWIpOgorICAgICAgICAqIHN0
cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQtc3RyaW5nLmpzOiBBZGRlZC4KKyAgICAgICAgKGZp
Yik6CisgICAgICAgICogc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLmpzOiBBZGRlZC4KKyAgICAg
ICAgKGZpYik6CisgICAgICAgICogc3RyZXNzL2dlbmVyYXRvci1mcmFtZS1lbXB0eS5qczogQWRk
ZWQuCisgICAgICAgIChzaG91bGRUaHJvdyk6CisgICAgICAgIChzaG91bGRUaHJvdy5maWIpOgor
ICAgICAgICAqIHN0cmVzcy9nZW5lcmF0b3ItcmVkdWNlZC1zYXZlLXBvaW50LXB1dC10by1zY29w
ZS5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgIChnZW4pOgorICAgICAg
ICAqIHN0cmVzcy9nZW5lcmF0b3ItdHJhbnNmZXItcmVnaXN0ZXItYmV5b25kLW11dGlwbGUteWll
bGRzLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKGdlbik6CisKIDIw
MTYtMDgtMjIgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBCdXR0
ZXJmbGllcyBzaG91bGQgYmUgYWxsb2NhdGVkIGluIEF1eGlsaWFyeSBNYXJrZWRTcGFjZSBpbnN0
ZWFkIG9mIENvcGllZFNwYWNlIGFuZCB3ZSBzaG91bGQgcmV3cml0ZSBhcyBtdWNoIG9mIHRoZSBH
QyBhcyBuZWVkZWQgdG8gbWFrZSB0aGlzIG5vdCBhIHJlZ3Jlc3Npb24KZGlmZiAtLWdpdCBhL0pT
VGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLWFuZC1hcnJheS5qcyBiL0pTVGVzdHMvc3Ry
ZXNzL2dlbmVyYXRvci1maWItZnRsLWFuZC1hcnJheS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZTkzOTgxMmZk
YmFlYzZiODMyYmZkMDBmMjE1M2RlZjg0YmI3NTkyCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0
cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwtYW5kLWFycmF5LmpzCkBAIC0wLDAgKzEsMjMgQEAK
KyhmdW5jdGlvbiAoKSB7CisgICAgZnVuY3Rpb24gKmZpYigpCisgICAgeworICAgICAgICBsZXQg
YSA9IDE7CisgICAgICAgIGxldCBiID0gMTsKKyAgICAgICAgbGV0IGMgPSBbIDAgXTsKKyAgICAg
ICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgICAgIGNbMF0gPSBhOworICAgICAgICAgICAgeWll
bGQgYzsKKyAgICAgICAgICAgIFthLCBiXSA9IFtiLCBhICsgYl07CisgICAgICAgIH0KKyAgICB9
CisKKyAgICBsZXQgdmFsdWUgPSAwOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMWU0OyArK2kp
IHsKKyAgICAgICAgbGV0IGYgPSBmaWIoKTsKKyAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAx
MDA7ICsraSkgeworICAgICAgICAgICAgdmFsdWUgPSBmLm5leHQoKS52YWx1ZTsKKyAgICAgICAg
fQorICAgICAgICBpZiAodmFsdWVbMF0gIT09IDM1NDIyNDg0ODE3OTI2MjAwMDAwMCkKKyAgICAg
ICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIHZhbHVlOiR7cmVzdWx0fWApOworICAgIH0KK30o
KSk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQtb2Jq
ZWN0LmpzIGIvSlNUZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwtYW5kLW9iamVjdC5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42NjczNDBmMmVhNGM3NDM4YTJkMjA5YWE0MGQwNjc3ZTRhYjdkM2ZiCi0tLSAv
ZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwtYW5kLW9iamVj
dC5qcwpAQCAtMCwwICsxLDIzIEBACisoZnVuY3Rpb24gKCkgeworICAgIGZ1bmN0aW9uICpmaWIo
KQorICAgIHsKKyAgICAgICAgbGV0IGEgPSAxOworICAgICAgICBsZXQgYiA9IDE7CisgICAgICAg
IGxldCBjID0geyBmaWI6IDAgfTsKKyAgICAgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgICAg
IGMuZmliID0gYTsKKyAgICAgICAgICAgIHlpZWxkIGM7CisgICAgICAgICAgICBbYSwgYl0gPSBb
YiwgYSArIGJdOworICAgICAgICB9CisgICAgfQorCisgICAgbGV0IHZhbHVlID0gMDsKKyAgICBm
b3IgKGxldCBpID0gMDsgaSA8IDFlNDsgKytpKSB7CisgICAgICAgIGxldCBmID0gZmliKCk7Cisg
ICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwOyArK2kpIHsKKyAgICAgICAgICAgIHZhbHVl
ID0gZi5uZXh0KCkudmFsdWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHZhbHVlLmZpYiAhPT0g
MzU0MjI0ODQ4MTc5MjYyMDAwMDAwKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQg
dmFsdWU6JHtyZXN1bHR9YCk7CisgICAgfQorfSgpKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3Ry
ZXNzL2dlbmVyYXRvci1maWItZnRsLWFuZC1zdHJpbmcuanMgYi9KU1Rlc3RzL3N0cmVzcy9nZW5l
cmF0b3ItZmliLWZ0bC1hbmQtc3RyaW5nLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQzOGFlNmFiMzM0NzA0Njgy
Mjg0OWY0MzAwNGVhNWM0MDNlZWRhMjgKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVz
cy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQtc3RyaW5nLmpzCkBAIC0wLDAgKzEsMjIgQEAKKyhmdW5j
dGlvbiAoKSB7CisgICAgZnVuY3Rpb24gKmZpYigpCisgICAgeworICAgICAgICBsZXQgYSA9IDE7
CisgICAgICAgIGxldCBiID0gMTsKKyAgICAgICAgbGV0IGMgPSAiUmVzdWx0ISAiOworICAgICAg
ICB3aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAgeWllbGQgYyArIGE7CisgICAgICAgICAgICBb
YSwgYl0gPSBbYiwgYSArIGJdOworICAgICAgICB9CisgICAgfQorCisgICAgbGV0IHZhbHVlID0g
MDsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDFlNDsgKytpKSB7CisgICAgICAgIGxldCBmID0g
ZmliKCk7CisgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwOyArK2kpIHsKKyAgICAgICAg
ICAgIHZhbHVlID0gZi5uZXh0KCkudmFsdWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHZhbHVl
ICE9PSBgUmVzdWx0ISAzNTQyMjQ4NDgxNzkyNjIwMDAwMDBgKQorICAgICAgICAgICAgdGhyb3cg
bmV3IEVycm9yKGBiYWQgdmFsdWU6JHtyZXN1bHR9YCk7CisgICAgfQorfSgpKTsKZGlmZiAtLWdp
dCBhL0pTVGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLmpzIGIvSlNUZXN0cy9zdHJlc3Mv
Z2VuZXJhdG9yLWZpYi1mdGwuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzQwZTMzZGJjODY4YmVhN2E4OTNjOWVj
MTZiNzc5ZWMyNmJkYjE5YwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2dlbmVy
YXRvci1maWItZnRsLmpzCkBAIC0wLDAgKzEsMjEgQEAKKyhmdW5jdGlvbiAoKSB7CisgICAgZnVu
Y3Rpb24gKmZpYigpCisgICAgeworICAgICAgICBsZXQgYSA9IDE7CisgICAgICAgIGxldCBiID0g
MTsKKyAgICAgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgICAgIHlpZWxkIGE7CisgICAgICAg
ICAgICBbYSwgYl0gPSBbYiwgYSArIGJdOworICAgICAgICB9CisgICAgfQorCisgICAgbGV0IHZh
bHVlID0gMDsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDFlNDsgKytpKSB7CisgICAgICAgIGxl
dCBmID0gZmliKCk7CisgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwOyArK2kpIHsKKyAg
ICAgICAgICAgIHZhbHVlID0gZi5uZXh0KCkudmFsdWU7CisgICAgICAgIH0KKyAgICAgICAgaWYg
KHZhbHVlICE9PSAzNTQyMjQ4NDgxNzkyNjIwMDAwMDApCisgICAgICAgICAgICB0aHJvdyBuZXcg
RXJyb3IoYGJhZCB2YWx1ZToke3Jlc3VsdH1gKTsKKyAgICB9Cit9KCkpOwpkaWZmIC0tZ2l0IGEv
SlNUZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZyYW1lLWVtcHR5LmpzIGIvSlNUZXN0cy9zdHJlc3Mv
Z2VuZXJhdG9yLWZyYW1lLWVtcHR5LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU5ZTg4NTViZmFjM2M1NmRmOTI2
YWJkNDI4YzAxM2MzMzQxNjI3NDYKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9n
ZW5lcmF0b3ItZnJhbWUtZW1wdHkuanMKQEAgLTAsMCArMSwzNCBAQAorZnVuY3Rpb24gc2hvdWxk
VGhyb3coZnVuYywgZXJyb3JNZXNzYWdlKSB7CisgICAgdmFyIGVycm9yVGhyb3duID0gZmFsc2U7
CisgICAgdmFyIGVycm9yID0gbnVsbDsKKyAgICB0cnkgeworICAgICAgICBmdW5jKCk7CisgICAg
fSBjYXRjaCAoZSkgeworICAgICAgICBlcnJvclRocm93biA9IHRydWU7CisgICAgICAgIGVycm9y
ID0gZTsKKyAgICB9CisgICAgaWYgKCFlcnJvclRocm93bikKKyAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKCdub3QgdGhyb3duJyk7CisgICAgaWYgKFN0cmluZyhlcnJvcikgIT09IGVycm9yTWVzc2Fn
ZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgZXJyb3I6ICR7U3RyaW5nKGVycm9yKX1g
KTsKK30KKworc2hvdWxkVGhyb3coZnVuY3Rpb24gKCkgeworICAgIGZ1bmN0aW9uICpmaWIoZmxh
ZykKKyAgICB7CisgICAgICAgIGxldCBhID0gMTsKKyAgICAgICAgbGV0IGIgPSAxOworICAgICAg
ICB5aWVsZCA0MjsKKyAgICAgICAgaWYgKGZsYWcpCisgICAgICAgICAgICByZXR1cm4gYzsKKyAg
ICAgICAgbGV0IGMgPSA1MDA7CisgICAgfQorCisgICAgbGV0IHZhbHVlID0gMDsKKyAgICBmb3Ig
KGxldCBpID0gMDsgaSA8IDFlNDsgKytpKSB7CisgICAgICAgIGZvciAobGV0IHYgb2YgZmliKGZh
bHNlKSkgeworICAgICAgICB9CisgICAgfQorICAgIGZvciAobGV0IHYgb2YgZmliKHRydWUpKSB7
CisgICAgfQorfSwgYFJlZmVyZW5jZUVycm9yOiBDYW5ub3QgYWNjZXNzIHVuaW5pdGlhbGl6ZWQg
dmFyaWFibGUuYCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItcmVkdWNl
ZC1zYXZlLXBvaW50LXB1dC10by1zY29wZS5qcyBiL0pTVGVzdHMvc3RyZXNzL2dlbmVyYXRvci1y
ZWR1Y2VkLXNhdmUtcG9pbnQtcHV0LXRvLXNjb3BlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMwYzc1ZmE0OTE0
M2MxN2JlMTRmMzI4MWUzZjY1NDM0ZjM1MTM5ZTgKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3Rz
L3N0cmVzcy9nZW5lcmF0b3ItcmVkdWNlZC1zYXZlLXBvaW50LXB1dC10by1zY29wZS5qcwpAQCAt
MCwwICsxLDI4IEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAg
aWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIHZh
bHVlOiAke1N0cmluZyhhY3R1YWwpfWApOworfQorCitmdW5jdGlvbiBlcnJvcigpCit7CisgICAg
dGhyb3cgIm9rIjsKK30KKworZnVuY3Rpb24qIGdlbigpCit7CisgICAgdmFyIHZhbHVlID0gNDI7
CisgICAgdHJ5IHsKKyAgICAgICAgeWllbGQgMzAwOworICAgICAgICB2YWx1ZSA9IDUwMDsKKyAg
ICAgICAgZXJyb3IoKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIHlpZWxkIDQyOworICAg
ICAgICByZXR1cm4gdmFsdWU7CisgICAgfQorICAgIHJldHVybiAyMDA7Cit9CisKK3ZhciBnID0g
Z2VuKCk7CitzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgMzAwKTsKK3Nob3VsZEJlKGcubmV4dCgp
LnZhbHVlLCA0Mik7CitzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgNTAwKTsKZGlmZiAtLWdpdCBh
L0pTVGVzdHMvc3RyZXNzL2dlbmVyYXRvci10cmFuc2Zlci1yZWdpc3Rlci1iZXlvbmQtbXV0aXBs
ZS15aWVsZHMuanMgYi9KU1Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItdHJhbnNmZXItcmVnaXN0ZXIt
YmV5b25kLW11dGlwbGUteWllbGRzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZlMjA4ZjU4MTI5NmY5YWUwOGE2
YmZiMzk4YjQ4MjI1NzQyZDZiNzgKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9n
ZW5lcmF0b3ItdHJhbnNmZXItcmVnaXN0ZXItYmV5b25kLW11dGlwbGUteWllbGRzLmpzCkBAIC0w
LDAgKzEsMTggQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBp
ZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFs
dWU6ICcgKyBhY3R1YWwpOworfQorCisKK2Z1bmN0aW9uICpnZW4oKQoreworICAgIHZhciB0ZXN0
ID0gNDI7CisgICAgeWllbGQgMzI7CisgICAgeWllbGQgMzM7CisgICAgeWllbGQgdGVzdDsKK30K
KwordmFyIGcgPSBnZW4oKTsKK3Nob3VsZEJlKGcubmV4dCgpLnZhbHVlLCAzMik7CitzaG91bGRC
ZShnLm5leHQoKS52YWx1ZSwgMzMpOworc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIDQyKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>286863</attachid>
            <date>2016-08-24 10:28:11 -0700</date>
            <delta_ts>2016-08-24 12:54:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-152723-20160825022610.patch</filename>
            <type>text/plain</type>
            <size>235540</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA0ODU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
MGY5MjVkYzkyM2MwY2VjNmFmNzZkZWRlYzcyZjU0NGM0ZjhlMmIyLi40YThhOGQ0NmM3YmM2Yjg4
NGRjMTc1YWRkMDZkNTY4YTQzZjE3ODllIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyODMgQEAKKzIwMTYtMDgtMjQgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0RGR11bRlRMXSBJbXBsZW1lbnQgRVM2IEdlbmVyYXRvcnMgaW4g
REZHIC8gRlRMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNTI3MjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBGSVhNRTogVGhpcyBkb2N1bWVudCBpcyBvdXQgb2YgZGF0ZS4gSSdsbCB1cGRhdGUgaXQuLi4K
KworICAgICAgICBUaGlzIHBhdGNoIGludHJvZHVjZXMgREZHIGFuZCBGVEwgc3VwcG9ydCBmb3Ig
RVM2IGdlbmVyYXRvcnMuCisgICAgICAgIEVTNiBnZW5lcmF0b3IgaXMgY29tcGlsZWQgYnkgdGhl
IEJ5dGVjb2RlR2VuZXJhdG9yLiBCdXQgYXQgdGhlIGxhc3QgcGhhc2UsIEJ5dGVjb2RlR2VuZXJh
dG9yIHBlcmZvcm1zICJnZW5lcmF0b3JpZmljYXRpb24iIG9udG8gdGhlIHVubGlua2VkIGNvZGUu
CisgICAgICAgIEluIEJ5dGVjb2RlR2VuZXJhdG9yIHBoYXNlLCB3ZSBpbnNlcnRlZCBzZXZlcmFs
IHNwZWNpYWwgbWFya2VycyBmb3IgdGhlIGdlbmVyYXRvcnMsIG9wX3NhdmUgYW5kIG9wX3Jlc3Vt
ZS4KKyAgICAgICAgVGhlIG9wX3NhdmUsIG9wX3Jlc3VtZSwgYW5kIHRoZSBtZXJnZSBwb2ludCBi
bG9jayBhcmUgY29ubmVjdGVkIGFzIGZvbGxvd3MuCisKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBvcF9yZXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBeCisgICAgICAgIGVudHJ5IC0+IGdlbmVyYXRvciBzd2l0Y2ggLS0tLT4gb3Bf
c2F2ZSAtPiBtZXJnZSBwb2ludCAtPiAuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBeCisgICAgICAgICAgICAgICAgICAgICAgICstLS0t
LS0tLS0tLS0tLT4gb3BfcmVzdW1lIC0tLS0tKworCisgICAgICAgIEluIHRoZSBnZW5lcmF0b3Jp
ZmljYXRpb24gcGhhc2UsIHdlIHR1cm4gb3V0IHdoaWNoIHZhcmlhYmxlcyBzaG91bGQgYmUgc2F2
ZWQgYW5kIHJlc3VtZWQgYXQgZWFjaCBvcF9zYXZlIGFuZCBvcF9yZXN1bWUsIGFuZCBjb252ZXJ0
IHRoZXNlIGJ5dGVjb2RlcworICAgICAgICB0byB0aGUgc2VxdWVuY2VzIG9mIHRoZSBnZXRfZnJv
bV9zY29wZSBhbmQgcHV0X3RvX3Njb3BlLiBUaGUgcmVnaXN0ZXJzIGFyZSBzYXZlZCBhbmQgcmVz
dW1lZCBvdmVyIHRoZSBnZW5lcmF0b3IncyBuZXh0KCkgY2FsbHMgYnkgdXNpbmcgdGhpcyBzcGVj
aWFsCisgICAgICAgIGdlbmVyYXRvciBmcmFtZSBzY29wZS4KKworICAgICAgICBJbiB0aGUgZ2Vu
ZXJhdG9yaWZpY2F0aW9uIHBoYXNlLAorCisgICAgICAgIDEuIFdlIGNvbnN0cnVjdCB0aGUgQnl0
ZWNvZGVHcmFwaCBmcm9tIHRoZSB1bmxpbmtlZCBpbnN0cnVjdGlvbnMuIFRoaXMgY29uc3RydWN0
cyB0aGUgYmFzaWMgYmxvY2tzLCBhbmQgaXQgaXMgdXNlZCBpbiB0aGUgc3Vic2VxdWVudCBhbmFs
eXNpcy4KKyAgICAgICAgMi4gV2UgcGVyZm9ybSB0aGUgYW5hbHlzaXMgb250byB0aGUgdW5saW5r
ZWQgY29kZS4gV2UgaGF2ZSAzIGFuYWx5c2lzOiB0aGUgbGl2ZW5lc3MgYW5hbHlzaXMsIHRoZSBz
YXZlZCB2YXJpYWJsZXMgYW5hbHlzaXMsIGFuZCB0aGUgcmVzdW1lZCB2YXJpYWJsZXMgYW5hbHlz
aXMuCisgICAgICAgICAgIEZpcnN0LCBpbiB0aGUgbGl2ZW5lc3MgYW5hbHlzaXMsIHdlIGV4dHJh
Y3QgdGhlIGxpdmUgdmFyaWFibGVzIGF0IGVhY2ggbWVyZ2UgcG9pbnQuIFRoZXNlIHZhcmlhYmxl
cyBzaG91bGQgYmUgY29uc2lkZXJlZCBhcyB0aGUgY29uc2VydmF0aXZlIHJlZ2lzdGVycworICAg
ICAgICAgICB0byBiZSBzYXZlZCBhbmQgcmVzdW1lZCBhdCBlYWNoIHBvaW50LgorICAgICAgICAz
LiBXZSBpbnNlcnQgdGhlIGdldF9mcm9tX3Njb3BlIGFuZCBwdXRfdG9fc2NvcGUgYXQgZWFjaCBv
cF9zYXZlIGFuZCBvcF9yZXN1bWUuIFdoaWNoIHJlZ2lzdGVycyBzaG91bGQgYmUgc2F2ZWQgYW5k
IHJlc3VtZWQgaXMgb2ZmZXJlZCBieSAoMikuCisgICAgICAgICAgIFRoZW4sIGNsaXAgdGhlIG9w
X3NhdmUgYW5kIG9wX3Jlc3VtZSB0aGVtc2VsdmVzLiBUaGV5IGFyZSBleGVjdXRlZCBpbiBhIGJh
dGNoIG1hbm5lciBieSBCeXRlY29kZVJld3JpdGVyLiBTaW5jZSB0aGVzZSBtb2RpZmljYXRpb24g
Y2hhbmdlcyB0aGUgYmFzaWMgYmxvY2tzCisgICAgICAgICAgIGFuZCBzaXplIG9mIHVubGlua2Vk
IGluc3RydWN0aW9ucywgQnl0ZWNvZGVSZXdyaXRlciBhbHNvIHBlcmZvcm1zIHRoZSBvZmZzZXQg
YWRqdXN0bWVudCBmb3IgVW5saW5rZWRDb2RlQmxvY2suIFNvLCB0aGlzIEJ5dGVjb2RlUmV3cml0
ZXIgaXMgcGVyZm9ybWVkCisgICAgICAgICAgIG9udG8gdGhlIEJ5dGVjb2RlR3JhcGggaW5zdGVh
ZCBvZiBCeXRlY29kZUJhc2ljQmxvY2suIFRoZSByZWFzb24gd2h5IHdlIHRha2UgdGhpcyBkZXNp
Z24gaXMgc2ltcGxlOiB3ZSBkb24ndCB3YW50IHRvIG5ld2x5IGNyZWF0ZSB0aGUgYmFzaWMgYmxv
Y2tzIGFuZCBvcGNvZGVzCisgICAgICAgICAgIGZvciB0aGlzIGVhcmx5IHBoYXNlIGxpa2UgREZH
LiBJbnN0ZWFkLCB3ZSBwZXJmb3JtIHRoZSBtb2RpZmljYXRpb24gYW5kIGFkanVzdG1lbnQgdG8g
dGhlIHVubGlua2VkIGluc3RydWN0aW9ucyBhbmQgVW5saW5rZWRDb2RlQmxvY2sgaW4gYSBpbi1w
bGFjZSBtYW5uZXIuCisKKyAgICAgICAgQWZ0ZXIgdGhhdCBwaGFzZSwgdGhlIGRhdGEgZmxvdyBv
ZiB0aGUgZ2VuZXJhdG9yLXNhdmVkLWFuZC1yZXN1bWVkLXJlZ2lzdGVycyBhcmUgZXhwbGljaXRs
eSByZXByZXNlbnRlZCBieSB0aGUgZ2V0X2Zyb21fc2NvcGUgYW5kIHB1dF90b19zY29wZS4KKyAg
ICAgICAgQW5kIG9wX3NhdmUgYW5kIG9wX3Jlc3VtZSBhcmUgcmVtb3ZlZC4gU2luY2Ugd2UgdXNl
IHRoZSBleGlzdGluZyBieXRlY29kZXMsIERGRyBhbmQgRlRMIGNoYW5nZXMgYXJlIG5vdCBuZWNl
c3NhcnkuCisgICAgICAgIFRoaXMgcGF0Y2ggYWxzbyBkcm9wcyBkYXRhIHN0cnVjdHVyZXMgYW5k
IGltcGxlbWVudGF0aW9ucyBmb3IgdGhlIG9sZCBnZW5lcmF0b3IsIG9wX3Jlc3VtZSwgb3Bfc2F2
ZSBpbXBsZW1lbnRhdGlvbnMgYW5kIEdlbmVyYXRvckZyYW1lLgorCisgICAgICAgIE5vdGUgdGhh
dCB0aGlzIHBhdGNoIGRvZXMgbm90IGxldmVyYWdlIHRoZSByZWNlbnQgbXVsdGkgZW50cnlwb2lu
dHMgc3VwcG9ydCBpbiBCMy4gQWZ0ZXIgdGhpcyBwYXRjaCBpcyBpbnRyb2R1Y2VkLCB3ZSB3aWxs
IHN1Ym1pdCBhIG5ldyBwYXRjaCB0aGF0IGxldmVyYWdlcyB0aGUgbXVsdGkKKyAgICAgICAgZW50
cnlwb2ludHMgZm9yIGdlbmVyYXRvcidzIHJlc3VtZSBhbmQgc2VlcyB0aGUgcGVyZm9ybWFuY2Ug
Z2Fpbi4KKworICAgICAgICBUT0RPOiBQZXJmIFRCQSBoZXJlLgorCisgICAgICAgICogQ01ha2VM
aXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBiMy9CM0Jhc2ljQmxvY2tVdGlscy5oOgorICAgICAgICAqIGIzL0Iz
QmxvY2tXb3JrbGlzdC5oOgorICAgICAgICAqIGIzL0IzQ0ZHLmg6CisgICAgICAgICogYjMvQjNE
dXBsaWNhdGVUYWlscy5jcHA6CisgICAgICAgICogYjMvQjNGaXhTU0EuY3BwOgorICAgICAgICAq
IGIzL0IzRml4U1NBLmg6CisgICAgICAgICogYjMvQjNJbmRleE1hcC5oOgorICAgICAgICAoSlND
OjpCMzo6SW5kZXhNYXA6OkluZGV4TWFwKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6Oklu
ZGV4TWFwOjpyZXNpemUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6SW5kZXhNYXA6OmNs
ZWFyKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkluZGV4TWFwOjpzaXplKTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6QjM6OkluZGV4TWFwOjpvcGVyYXRvcltdKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBiMy9CM0luZGV4U2V0Lmg6CisgICAgICAgIChKU0M6OkIzOjpJbmRleFNldDo6SW5k
ZXhTZXQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6SW5kZXhTZXQ6OmFkZCk6IERlbGV0
ZWQuCisgICAgICAgIChKU0M6OkIzOjpJbmRleFNldDo6YWRkQWxsKTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6QjM6OkluZGV4U2V0OjpyZW1vdmUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpC
Mzo6SW5kZXhTZXQ6OmNvbnRhaW5zKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkluZGV4
U2V0OjpzaXplKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkluZGV4U2V0Ojppc0VtcHR5
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkluZGV4U2V0OjpJdGVyYWJsZTo6SXRlcmFi
bGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6SW5kZXhTZXQ6Okl0ZXJhYmxlOjppdGVy
YXRvcjo6aXRlcmF0b3IpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6SW5kZXhTZXQ6Okl0
ZXJhYmxlOjppdGVyYXRvcjo6b3BlcmF0b3IqKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6
OkluZGV4U2V0OjpJdGVyYWJsZTo6aXRlcmF0b3I6Om9wZXJhdG9yKyspOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpCMzo6SW5kZXhTZXQ6Okl0ZXJhYmxlOjppdGVyYXRvcjo6b3BlcmF0b3I9PSk6
IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpJbmRleFNldDo6SXRlcmFibGU6Oml0ZXJhdG9y
OjpvcGVyYXRvciE9KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OkluZGV4U2V0OjpJdGVy
YWJsZTo6YmVnaW4pOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6SW5kZXhTZXQ6Okl0ZXJh
YmxlOjplbmQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCMzo6SW5kZXhTZXQ6OnZhbHVlcyk6
IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpJbmRleFNldDo6aW5kaWNlcyk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OkIzOjpJbmRleFNldDo6ZHVtcCk6IERlbGV0ZWQuCisgICAgICAgICog
YjMvQjNMb3dlclRvQWlyLmNwcDoKKyAgICAgICAgKiBiMy9CM1BoaUNoaWxkcmVuLmg6CisgICAg
ICAgICogYjMvQjNQcm9jZWR1cmUuaDoKKyAgICAgICAgKEpTQzo6QjM6OlByb2NlZHVyZTo6aXRl
cmF0b3I6Oml0ZXJhdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OlByb2NlZHVyZTo6
aXRlcmF0b3I6Om9wZXJhdG9yKik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpQcm9jZWR1
cmU6Oml0ZXJhdG9yOjpvcGVyYXRvcisrKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QjM6OlBy
b2NlZHVyZTo6aXRlcmF0b3I6Om9wZXJhdG9yPT0pOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpC
Mzo6UHJvY2VkdXJlOjppdGVyYXRvcjo6b3BlcmF0b3IhPSk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OkIzOjpQcm9jZWR1cmU6Oml0ZXJhdG9yOjpmaW5kTmV4dCk6IERlbGV0ZWQuCisgICAgICAg
ICogYjMvQjNSZWR1Y2VEb3VibGVUb0Zsb2F0LmNwcDoKKyAgICAgICAgKiBiMy9CM1JlZHVjZVN0
cmVuZ3RoLmNwcDoKKyAgICAgICAgKiBiMy9CM1NTQUNhbGN1bGF0b3IuaDoKKyAgICAgICAgKiBi
My9CM1VzZUNvdW50cy5oOgorICAgICAgICAqIGIzL2Fpci9BaXJDb2RlLmg6CisgICAgICAgICog
YjMvYWlyL0FpckVsaW1pbmF0ZURlYWRDb2RlLmNwcDoKKyAgICAgICAgKiBiMy9haXIvQWlyRml4
T2J2aW91c1NwaWxscy5jcHA6CisgICAgICAgICogYjMvYWlyL0FpckZpeFBhcnRpYWxSZWdpc3Rl
clN0YWxscy5jcHA6CisgICAgICAgICogYjMvYWlyL0FpckdlbmVyYXRlLmNwcDoKKyAgICAgICAg
KiBiMy9haXIvQWlyR2VuZXJhdGlvbkNvbnRleHQuaDoKKyAgICAgICAgKiBiMy9haXIvQWlyTGl2
ZW5lc3MuaDoKKyAgICAgICAgKiBiMy9haXIvQWlyU3BpbGxFdmVyeXRoaW5nLmNwcDoKKyAgICAg
ICAgKiBidWlsdGlucy9HZW5lcmF0b3JQcm90b3R5cGUuanM6CisgICAgICAgIChnbG9iYWxQcml2
YXRlLmdlbmVyYXRvclJlc3VtZSk6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Js
b2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVCYXNpY0Jsb2NrOjpjb21wdXRlQnl0ZWNv
ZGVCYXNpY0Jsb2Nrc0ludGVybmFsKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVCYXNpY0Jsb2Nr
Ojpjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2Nrcyk6CisgICAgICAgIChKU0M6OmlzQnJhbmNoKTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6bGlua0Jsb2Nrcyk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OmNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzKTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRl
Y29kZS9CeXRlY29kZUJhc2ljQmxvY2suaDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVCYXNpY0Js
b2NrOjpieXRlY29kZU9mZnNldHMpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUJhc2ljQmxvY2s6
OnN1Y2Nlc3NvcnMpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUJhc2ljQmxvY2s6OmluZGV4KToK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVCYXNpY0Jsb2NrOjphZGRTdWNjZXNzb3IpOgorICAgICAg
ICAqIGJ5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcDogQWRkZWQuCisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uOjpCeXRlY29kZUdlbmVyYXRvcmlm
aWNhdGlvbik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uOjpncmFw
aCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uOjp5aWVsZHMpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbjo6ZW50ZXJQb2ludCk6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uOjpzdG9yYWdlRm9yR2VuZXJh
dG9yTG9jYWwpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JMaXZlbmVzc0FuYWx5c2lzOjpHZW5l
cmF0b3JMaXZlbmVzc0FuYWx5c2lzKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yTGl2ZW5lc3NB
bmFseXNpczo6Y29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6Okdl
bmVyYXRvckxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQpOgor
ICAgICAgICAoSlNDOjpHZW5lcmF0b3JMaXZlbmVzc0FuYWx5c2lzOjpydW4pOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbjo6cnVuKToKKyAgICAgICAgKEpTQzo6cGVy
Zm9ybUdlbmVyYXRvcmlmaWNhdGlvbik6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVHZW5l
cmF0b3JpZmljYXRpb24uaDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGluZXMuaC4KKyAgICAgICAgKiBieXRlY29k
ZS9CeXRlY29kZUdyYXBoLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpCeXRlY29kZUdyYXBoOjpj
b2RlQmxvY2spOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdyYXBoOjppbnN0cnVjdGlvbnMpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdyYXBoOjpiYXNpY0Jsb2Nrc0luUmV2ZXJzZU9yZGVyKToK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHcmFwaDo6YmxvY2tDb250YWluc0J5dGVjb2RlT2Zmc2V0
KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHcmFwaDo6ZmluZEJhc2ljQmxvY2tGb3JCeXRlY29k
ZU9mZnNldCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR3JhcGg6OmZpbmRCYXNpY0Jsb2NrV2l0
aExlYWRlck9mZnNldCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR3JhcGg6OnNpemUpOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUdyYXBoOjphdCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR3Jh
cGg6Om9wZXJhdG9yW10pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdyYXBoOjpiZWdpbik6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR3JhcGg6OmVuZCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
R3JhcGg6OmZpcnN0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHcmFwaDo6bGFzdCk6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR3JhcGg8QmxvY2s+OjpCeXRlY29kZUdyYXBoKToKKyAgICAgICAg
KiBieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbjoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29k
ZUxpdmVuZXNzQW5hbHlzaXMuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzQW5h
bHlzaXM6OkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
TGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0ZVVzZXNGb3JCeXRlY29kZU9m
ZnNldCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Z2V0TGl2ZW5l
c3NJbmZvQXRCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlTGl2ZW5lc3NB
bmFseXNpczo6Y29tcHV0ZUZ1bGxMaXZlbmVzcyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlTGl2
ZW5lc3NBbmFseXNpczo6Y29tcHV0ZUtpbGxzKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZl
bmVzc0FuYWx5c2lzOjpkdW1wUmVzdWx0cyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlTGl2ZW5l
c3NBbmFseXNpczo6Y29tcHV0ZSk6CisgICAgICAgIChKU0M6OmlzVmFsaWRSZWdpc3RlckZvckxp
dmVuZXNzKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Z2V0TGVhZGVyT2Zmc2V0Rm9yQmFzaWNC
bG9jayk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OmZpbmRCYXNpY0Jsb2NrV2l0aExlYWRlck9m
ZnNldCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OmJsb2NrQ29udGFpbnNCeXRlY29kZU9mZnNl
dCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OmZpbmRCYXNpY0Jsb2NrRm9yQnl0ZWNvZGVPZmZz
ZXQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpzdGVwT3Zlckluc3RydWN0aW9uKTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6Y29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCeXRlY29kZU9mZnNldCk6
IERlbGV0ZWQuCisgICAgICAgIChKU0M6OmNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQmxvY2spOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OnJ1bkxpdmVu
ZXNzRml4cG9pbnQpOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGl2ZW5l
c3NBbmFseXNpcy5oOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNp
c0lubGluZXMuaDoKKyAgICAgICAgKEpTQzo6aXNWYWxpZFJlZ2lzdGVyRm9yTGl2ZW5lc3MpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzUHJvcGFnYXRpb248RGVyaXZlZEFuYWx5c2lz
Pjo6c3RlcE92ZXJJbnN0cnVjdGlvbik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlTGl2ZW5lc3NQ
cm9wYWdhdGlvbjxEZXJpdmVkQW5hbHlzaXM+Ojpjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJ5dGVj
b2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0aW9uPERl
cml2ZWRBbmFseXNpcz46OmNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQmxvY2spOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUxpdmVuZXNzUHJvcGFnYXRpb248RGVyaXZlZEFuYWx5c2lzPjo6Z2V0TGl2
ZW5lc3NJbmZvQXRCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlTGl2ZW5l
c3NQcm9wYWdhdGlvbjxEZXJpdmVkQW5hbHlzaXM+OjpydW5MaXZlbmVzc0ZpeHBvaW50KToKKyAg
ICAgICAgKiBieXRlY29kZS9CeXRlY29kZVJld3JpdGVyLmNwcDogQWRkZWQuCisgICAgICAgIChK
U0M6OkJ5dGVjb2RlUmV3cml0ZXI6OmFwcGx5TW9kaWZpY2F0aW9uKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVSZXdyaXRlcjo6ZXhlY3V0ZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlUmV3cml0
ZXI6OmFkanVzdEp1bXBJbnNlcnRpb24pOgorICAgICAgICAoSlNDOjpCeXRlY29kZVJld3JpdGVy
OjppbnNlcnRJbXBsKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVSZXdyaXRlcjo6aW5zZXJ0U3dp
dGNoSW1tZWRpYXRlSW1wbCk6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVSZXdyaXRlci5o
OiBBZGRlZC4KKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVSZXdyaXRlcjo6Q29tbWFuZDo6bGVuZ3Ro
KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVSZXdyaXRlcjo6RnJhZ21lbnQ6OkZyYWdtZW50KToK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVSZXdyaXRlcjo6RnJhZ21lbnQ6OmFwcGVuZCk6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlUmV3cml0ZXI6OkJ5dGVjb2RlUmV3cml0ZXIpOgorICAgICAgICAo
SlNDOjpCeXRlY29kZVJld3JpdGVyOjppbnNlcnRCZWZvcmUpOgorICAgICAgICAoSlNDOjpCeXRl
Y29kZVJld3JpdGVyOjppbnNlcnRBZnRlcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlUmV3cml0
ZXI6Omluc2VydEZyYWdtZW50QmVmb3JlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVSZXdyaXRl
cjo6aW5zZXJ0RnJhZ21lbnRBZnRlcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlUmV3cml0ZXI6
Omluc2VydFN3aXRjaEltbWVkaWF0ZUJlZm9yZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlUmV3
cml0ZXI6OnJlbW92ZUJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVSZXdyaXRlcjo6
Z3JhcGgpOgorICAgICAgICAoSlNDOjpCeXRlY29kZVJld3JpdGVyOjphZGp1c3RPZmZzZXQpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZVJld3JpdGVyOjphZGp1c3RPZmZzZXRXaXRoSW5zZXJ0aW9u
cyk6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaDoKKyAgICAgICAgKEpTQzo6
Y29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OmNvbXB1dGVEZWZz
Rm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6aGFuZGxl
ckZvckluZGV4KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpzaHJpbmtUb0ZpdCk6CisgICAg
ICAgIChKU0M6OkNvZGVCbG9jazo6dmFsdWVQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2s6OmxpdmVuZXNzQW5hbHlzaXNTbG93KToKKyAgICAgICAgKiBi
eXRlY29kZS9Db2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjppc0NvbnN0YW50
UmVnaXN0ZXJJbmRleCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bGl2ZW5lc3NBbmFseXNp
cyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQpOiBE
ZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2RlL0hhbmRsZXJJbmZvLmg6CisgICAgICAgIChKU0M6
OkhhbmRsZXJJbmZvQmFzZTo6aGFuZGxlckZvckluZGV4KToKKyAgICAgICAgKiBieXRlY29kZS9P
cGNvZGUuaDoKKyAgICAgICAgKEpTQzo6aXNCcmFuY2gpOgorICAgICAgICAqIGJ5dGVjb2RlL1By
ZWNpc2VKdW1wVGFyZ2V0cy5jcHA6CisgICAgICAgIChKU0M6OmdldEp1bXBUYXJnZXRzRm9yQnl0
ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzSW50
ZXJuYWwpOgorICAgICAgICAoSlNDOjpjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKToKKyAgICAg
ICAgKEpTQzo6cmVjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKToKKyAgICAgICAgKEpTQzo6Zmlu
ZEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAqIGJ5dGVjb2RlL1ByZWNp
c2VKdW1wVGFyZ2V0cy5oOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNw
cDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OmhhbmRsZXJGb3JCeXRlY29kZU9m
ZnNldCk6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjpoYW5kbGVyRm9ySW5kZXgp
OgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6YXBwbHlNb2RpZmljYXRpb24pOgor
ICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6OlVu
bGlua2VkU3RyaW5nSnVtcFRhYmxlOjpvZmZzZXRGb3JWYWx1ZSk6CisgICAgICAgIChKU0M6OlVu
bGlua2VkQ29kZUJsb2NrOjpudW1DYWxsZWVMb2NhbHMpOgorICAgICAgICAqIGJ5dGVjb2RlL1Zp
cnR1YWxSZWdpc3Rlci5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZSk6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcik6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q29tcGxleFBvcFNjb3Blcyk6CisgICAgICAg
IChKU0M6OnByZXBhcmVKdW1wVGFibGVGb3JTdHJpbmdTd2l0Y2gpOgorICAgICAgICAoSlNDOjpC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdFlpZWxkUG9pbnQpOgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdFNhdmUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdFJlc3VtZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0R2VuZXJhdG9yU3RhdGVMYWJlbCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
OkJ5dGVjb2RlR2VuZXJhdG9yOjpiZWdpbkdlbmVyYXRvcik6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbmRHZW5lcmF0b3IpOiBEZWxldGVkLgorICAgICAgICAq
IGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUdlbmVyYXRvcjo6Z2VuZXJhdG9yU3RhdGVSZWdpc3Rlcik6CisgICAgICAgIChKU0M6OkJ5dGVj
b2RlR2VuZXJhdG9yOjpnZW5lcmF0b3JWYWx1ZVJlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRvclJlc3VtZU1vZGVSZWdpc3Rlcik6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0b3JGcmFtZVJlZ2lzdGVyKToKKyAgICAgICAg
KiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25O
b2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNwcDoKKyAg
ICAgICAgKiBnZW5lcmF0ZS1ieXRlY29kZS1maWxlczoKKyAgICAgICAgKiBpbnRlcnByZXRlci9J
bnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6OmZpbmRFeGNlcHRpb25IYW5kbGVyKToKKyAg
ICAgICAgKEpTQzo6R2V0Q2F0Y2hIYW5kbGVyRnVuY3Rvcjo6b3BlcmF0b3IoKSk6CisgICAgICAg
IChKU0M6OlVud2luZEZ1bmN0b3I6Om9wZXJhdG9yKCkpOgorICAgICAgICAqIGludGVycHJldGVy
L0ludGVycHJldGVyLmg6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXJJbmxpbmVz
Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVt
cFRhcmdldHMuaC4KKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmdldE9wY29kZUlEKToKKyAg
ICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZU1h
aW5QYXNzKToKKyAgICAgICAgKiBqaXQvSklULmg6CisgICAgICAgICogaml0L0pJVE9wY29kZXMu
Y3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bfc2F2ZSk6IERlbGV0ZWQuCisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdF9vcF9yZXN1bWUpOiBEZWxldGVkLgorICAgICAgICAqIGxsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuY3BwOgorICAg
ICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJbm5lcik6CisgICAgICAgIChKU0M6
OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUdlbmVyYXRvckZ1bmN0aW9uU291cmNlRWxlbWVudHMp
OgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6Y3JlYXRlR2VuZXJhdG9yUGFyYW1l
dGVycyk6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5oOgorICAgICAgICAqIHJ1bnRpbWUvQ29t
bW9uU2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6U0xPV19QQVRIX0RFQ0wpOiBEZWxldGVk
LgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmg6CisgICAgICAgICogcnVudGlt
ZS9HZW5lcmF0b3JGcmFtZS5jcHA6IFJlbW92ZWQuCisgICAgICAgIChKU0M6OkdlbmVyYXRvckZy
YW1lOjpHZW5lcmF0b3JGcmFtZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkdlbmVyYXRvckZy
YW1lOjpmaW5pc2hDcmVhdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkdlbmVyYXRvckZy
YW1lOjpjcmVhdGVTdHJ1Y3R1cmUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JG
cmFtZTo6Y3JlYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OnNh
dmUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6cmVzdW1lKTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OnZpc2l0Q2hpbGRyZW4pOiBEZWxl
dGVkLgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJhdG9yRnJhbWUuaDogUmVtb3ZlZC4KKyAgICAg
ICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OmxvY2Fscyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
OkdlbmVyYXRvckZyYW1lOjpsb2NhbEF0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJh
dG9yRnJhbWU6Om9mZnNldE9mTG9jYWxzKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJh
dG9yRnJhbWU6OmFsbG9jYXRpb25TaXplRm9yTG9jYWxzKTogRGVsZXRlZC4KKyAgICAgICAgKiBy
dW50aW1lL0pTR2VuZXJhdG9yRnVuY3Rpb24uaDoKKyAgICAgICAgKiBydW50aW1lL1ZNLmNwcDoK
KyAgICAgICAgKEpTQzo6Vk06OlZNKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisKIDIwMTYt
MDgtMjIgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBCdXR0ZXJm
bGllcyBzaG91bGQgYmUgYWxsb2NhdGVkIGluIEF1eGlsaWFyeSBNYXJrZWRTcGFjZSBpbnN0ZWFk
IG9mIENvcGllZFNwYWNlIGFuZCB3ZSBzaG91bGQgcmV3cml0ZSBhcyBtdWNoIG9mIHRoZSBHQyBh
cyBuZWVkZWQgdG8gbWFrZSB0aGlzIG5vdCBhIHJlZ3Jlc3Npb24KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggNTY1NDIxYjBiNTUx
YmEyZmU0NmVkNTViZGM3MGY3YmQ3MjAxM2YyMi4uMTI0ZWNjMGJlZDE4ZTM3YzczNWI2MWJmMGY0
MTM3MTM3OWEwNzBlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NiBAQAorMjAxNi0wOC0yNCAgWXVzdWtlIFN1
enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbREZHXVtGVExdIEltcGxl
bWVudCBFUzYgR2VuZXJhdG9ycyBpbiBERkcgLyBGVEwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MjcyMworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogd3RmL0NNYWtlTGlzdHMudHh0OgorICAgICAgICAqIHd0Zi9GYXN0Qml0VmVj
dG9yLmg6CisgICAgICAgIChXVEY6OkZhc3RCaXRWZWN0b3I6OkZhc3RCaXRWZWN0b3IpOgorICAg
ICAgICAqIHd0Zi9JbmRleE1hcC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNJbmRleE1hcC5oLgorICAgICAgICAoV1RGOjpJbmRleE1hcDo6SW5kZXhNYXApOgorICAg
ICAgICAoV1RGOjpJbmRleE1hcDo6cmVzaXplKToKKyAgICAgICAgKFdURjo6SW5kZXhNYXA6OmNs
ZWFyKToKKyAgICAgICAgKFdURjo6SW5kZXhNYXA6OnNpemUpOgorICAgICAgICAoV1RGOjpJbmRl
eE1hcDo6b3BlcmF0b3JbXSk6CisgICAgICAgICogd3RmL0luZGV4U2V0Lmg6IFJlbmFtZWQgZnJv
bSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNJbmRleFNldC5oLgorICAgICAgICAoV1RGOjpJ
bmRleFNldDo6SW5kZXhTZXQpOgorICAgICAgICAoV1RGOjpJbmRleFNldDo6YWRkKToKKyAgICAg
ICAgKFdURjo6SW5kZXhTZXQ6OmFkZEFsbCk6CisgICAgICAgIChXVEY6OkluZGV4U2V0OjpyZW1v
dmUpOgorICAgICAgICAoV1RGOjpJbmRleFNldDo6Y29udGFpbnMpOgorICAgICAgICAoV1RGOjpJ
bmRleFNldDo6c2l6ZSk6CisgICAgICAgIChXVEY6OkluZGV4U2V0Ojppc0VtcHR5KToKKyAgICAg
ICAgKFdURjo6SW5kZXhTZXQ6Okl0ZXJhYmxlOjpJdGVyYWJsZSk6CisgICAgICAgIChXVEY6Oklu
ZGV4U2V0OjpJdGVyYWJsZTo6aXRlcmF0b3I6Oml0ZXJhdG9yKToKKyAgICAgICAgKFdURjo6SW5k
ZXhTZXQ6Okl0ZXJhYmxlOjppdGVyYXRvcjo6b3BlcmF0b3IqKToKKyAgICAgICAgKFdURjo6SW5k
ZXhTZXQ6Okl0ZXJhYmxlOjppdGVyYXRvcjo6b3BlcmF0b3IrKyk6CisgICAgICAgIChXVEY6Oklu
ZGV4U2V0OjpJdGVyYWJsZTo6aXRlcmF0b3I6Om9wZXJhdG9yPT0pOgorICAgICAgICAoV1RGOjpJ
bmRleFNldDo6SXRlcmFibGU6Oml0ZXJhdG9yOjpvcGVyYXRvciE9KToKKyAgICAgICAgKFdURjo6
SW5kZXhTZXQ6Okl0ZXJhYmxlOjpiZWdpbik6CisgICAgICAgIChXVEY6OkluZGV4U2V0OjpJdGVy
YWJsZTo6ZW5kKToKKyAgICAgICAgKFdURjo6SW5kZXhTZXQ6OnZhbHVlcyk6CisgICAgICAgIChX
VEY6OkluZGV4U2V0OjppbmRpY2VzKToKKyAgICAgICAgKFdURjo6SW5kZXhTZXQ6OmR1bXApOgor
ICAgICAgICAqIHd0Zi9JbmRleGVkQ29udGFpbmVySXRlcmF0b3IuaDogUmVuYW1lZCBmcm9tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0luZGV4TWFwLmguCisgICAgICAgIChXVEY6OkluZGV4
ZWRDb250YWluZXJJdGVyYXRvcjo6SW5kZXhlZENvbnRhaW5lckl0ZXJhdG9yKToKKyAgICAgICAg
KFdURjo6SW5kZXhlZENvbnRhaW5lckl0ZXJhdG9yOjpvcGVyYXRvcisrKToKKyAgICAgICAgKFdU
Rjo6SW5kZXhlZENvbnRhaW5lckl0ZXJhdG9yOjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdURjo6
SW5kZXhlZENvbnRhaW5lckl0ZXJhdG9yOjpvcGVyYXRvciE9KToKKyAgICAgICAgKFdURjo6SW5k
ZXhlZENvbnRhaW5lckl0ZXJhdG9yOjpmaW5kTmV4dCk6CisKIDIwMTYtMDgtMjIgIEZpbGlwIFBp
emxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBCdXR0ZXJmbGllcyBzaG91bGQgYmUg
YWxsb2NhdGVkIGluIEF1eGlsaWFyeSBNYXJrZWRTcGFjZSBpbnN0ZWFkIG9mIENvcGllZFNwYWNl
IGFuZCB3ZSBzaG91bGQgcmV3cml0ZSBhcyBtdWNoIG9mIHRoZSBHQyBhcyBuZWVkZWQgdG8gbWFr
ZSB0aGlzIG5vdCBhIHJlZ3Jlc3Npb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApp
bmRleCAyOTg2YTlkMWVlZWFjMmViNzk2MWFkYTE0YzJlYjJiYzY0MTZlN2Q1Li43YTc1MTE3YjRl
OTQ5NDg0YTA2MjZjYTdmZjczYTZlMDVhZWMyMmM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtl
TGlzdHMudHh0CkBAIC0xODIsNiArMTgyLDggQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMK
ICAgICBieXRlY29kZS9BcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcAogICAgIGJ5dGVjb2RlL0Fy
cmF5UHJvZmlsZS5jcHAKICAgICBieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suY3BwCisgICAg
Ynl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwCisgICAgYnl0ZWNvZGUvQnl0
ZWNvZGVSZXdyaXRlci5jcHAKICAgICBieXRlY29kZS9CeXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5
LmNwcAogICAgIGJ5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAKICAgICBieXRl
Y29kZS9DYWxsRWRnZS5jcHAKQEAgLTY2NCw3ICs2NjYsNiBAQCBzZXQoSmF2YVNjcmlwdENvcmVf
U09VUkNFUwogICAgIHJ1bnRpbWUvRnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlLmNwcAogICAgIHJ1
bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9GdW5jdGlvblJhcmVEYXRh
LmNwcAotICAgIHJ1bnRpbWUvR2VuZXJhdG9yRnJhbWUuY3BwCiAgICAgcnVudGltZS9HZW5lcmF0
b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcAogICAgIHJ1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Q
cm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9HZW5lcmF0b3JQcm90b3R5cGUuY3BwCkBAIC05ODMs
NiArOTg0LDEwIEBAIGFkZF9jdXN0b21fY29tbWFuZCgKICAgICBDT01NQU5EICR7UFlUSE9OX0VY
RUNVVEFCTEV9ICR7SkFWQVNDUklQVENPUkVfRElSfS9nZW5lcmF0ZS1ieXRlY29kZS1maWxlcyAt
LWJ5dGVjb2Rlc19oICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vQnl0ZWNv
ZGVzLmggLS1pbml0X2J5dGVjb2Rlc19hc20gJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENP
UkVfRElSfS9Jbml0Qnl0ZWNvZGVzLmFzbSAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnl0ZWNvZGUv
Qnl0ZWNvZGVMaXN0Lmpzb24KICAgICBWRVJCQVRJTSkKIAorbGlzdChBUFBFTkQgSmF2YVNjcmlw
dENvcmVfSEVBREVSUworICAgICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0v
Qnl0ZWNvZGVzLmgKKykKKwogYWRkX2N1c3RvbV9jb21tYW5kKAogICAgIE9VVFBVVCAke0RFUklW
RURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0xMSW50RGVzaXJlZE9mZnNldHMuaAogICAg
IE1BSU5fREVQRU5ERU5DWSAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vb2ZmbGluZWFzbS9nZW5lcmF0
ZV9vZmZzZXRfZXh0cmFjdG9yLnJiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGE2
MDNjZmMyNWZjYmZlNGQ3MTQ1OTc2OTY1ZDcxZjU5MjI4NWQwODQuLmY0M2NkOTEyYTU4MmFjYmY2
ZTc2MTYxN2M5N2UwNjgzMzY2MmE3M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC03OTksOCArNzk5LDYgQEAKIAkJMEZFQzg1MTgxQkRBQ0RBQzAwODBGRjc0IC8qIEIzR2VuZXJh
dGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZF
Qzg0Q0UxQkRBQ0RBQzAwODBGRjc0IC8qIEIzR2VuZXJhdGUuY3BwICovOyB9OwogCQkwRkVDODUx
OTFCREFDREFDMDA4MEZGNzQgLyogQjNHZW5lcmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFQzg0Q0YxQkRBQ0RBQzAwODBGRjc0IC8qIEIzR2Vu
ZXJhdGUuaCAqLzsgfTsKIAkJMEZFQzg1MUExQkRBQ0RBQzAwODBGRjc0IC8qIEIzR2VuZXJpY0Zy
ZXF1ZW50ZWRCbG9jay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEZFQzg0RDAxQkRBQ0RBQzAwODBGRjc0IC8qIEIzR2VuZXJpY0ZyZXF1ZW50ZWRCbG9j
ay5oICovOyB9OwotCQkwRkVDODUxQjFCREFDREFDMDA4MEZGNzQgLyogQjNJbmRleE1hcC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFQzg0RDExQkRB
Q0RBQzAwODBGRjc0IC8qIEIzSW5kZXhNYXAuaCAqLzsgfTsKLQkJMEZFQzg1MUMxQkRBQ0RBQzAw
ODBGRjc0IC8qIEIzSW5kZXhTZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGRUM4NEQyMUJEQUNEQUMwMDgwRkY3NCAvKiBCM0luZGV4U2V0LmggKi87
IH07CiAJCTBGRUM4NTFEMUJEQUNEQUMwMDgwRkY3NCAvKiBCM0xvd2VyVG9BaXIuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFQzg0RDMxQkRBQ0RB
QzAwODBGRjc0IC8qIEIzTG93ZXJUb0Fpci5jcHAgKi87IH07CiAJCTBGRUM4NTFFMUJEQUNEQUMw
MDgwRkY3NCAvKiBCM0xvd2VyVG9BaXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGRUM4NEQ0MUJEQUNEQUMwMDgwRkY3NCAvKiBCM0xvd2VyVG9BaXIu
aCAqLzsgfTsKIAkJMEZFQzg1MUYxQkRBQ0RBQzAwODBGRjc0IC8qIEIzTWVtb3J5VmFsdWUuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFQzg0RDUx
QkRBQ0RBQzAwODBGRjc0IC8qIEIzTWVtb3J5VmFsdWUuY3BwICovOyB9OwpAQCAtMTI4NSw4ICsx
MjgzLDYgQEAKIAkJNzA5RkI4NkMxQUUzMzVDNjAwMzlEMDY5IC8qIFdlYWtTZXRQcm90b3R5cGUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwOUZCODY2
MUFFMzM1QzYwMDM5RDA2OSAvKiBXZWFrU2V0UHJvdG90eXBlLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzBCMEE5RDExQTlCNjY0NjAwMDEzMDZB
IC8qIFJ1bnRpbWVGbGFncy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNzBCMEE5RDAxQTlCNjYyMDAwMDEzMDZBIC8qIFJ1bnRpbWVGbGFncy5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcwQjc5MTkxMUMw
MjRBMTMwMDI0ODFFMiAvKiBTb3VyY2VDb2RlS2V5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEI3OTE4RTFDMDI0NEM5MDAyNDgxRTIgLyogU291cmNl
Q29kZUtleS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
Ci0JCTcwQjc5MTkyMUMwMjRBMjMwMDI0ODFFMiAvKiBHZW5lcmF0b3JGcmFtZS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEI3OTE4MzFDMDI0NDMy
MDAyNDgxRTIgLyogR2VuZXJhdG9yRnJhbWUuY3BwICovOyB9OwotCQk3MEI3OTE5MzFDMDI0QTI4
MDAyNDgxRTIgLyogR2VuZXJhdG9yRnJhbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDcwQjc5MTg0MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JG
cmFtZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTcwQjc5MTk0MUMwMjRBMjgwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9y
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwQjc5
MTg1MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCAq
LzsgfTsKIAkJNzBCNzkxOTUxQzAyNEEyODAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uQ29u
c3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDcwQjc5MTg2MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9y
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzBC
NzkxOTYxQzAyNEEyODAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwQjc5MTg3MUMw
MjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5jcHAgKi87IH07CkBA
IC0yMDYwLDYgKzIwNTYsMTEgQEAKIAkJRTE4RTNBNTkwREY5Mjc4QzAwRDkwQjM0IC8qIFZNLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxOEUzQTU3
MERGOTI3OEMwMEQ5MEIzNCAvKiBWTS5jcHAgKi87IH07CiAJCUUzMThDQkMwMUI4QUVGNTEwMEEy
OTI5RCAvKiBKU01vZHVsZU5hbWVzcGFjZU9iamVjdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzE4Q0JCRTFCOEFFRjUxMDBBMjkyOUQgLyogSlNN
b2R1bGVOYW1lc3BhY2VPYmplY3QuY3BwICovOyB9OwogCQlFMzE4Q0JDMTFCOEFFRjUxMDBBMjky
OUQgLyogSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMThDQkJGMUI4QUVGNTEwMEEyOTI5RCAvKiBKU01vZHVs
ZU5hbWVzcGFjZU9iamVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCUUzMjhEQUU3MUQzOEQwMDQwMDFBMjUyOSAvKiBCeXRlY29kZUdlbmVyYXRv
cmlmaWNhdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFM0QyNjQyNjFEMzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRp
b24uY3BwICovOyB9OworCQlFMzI4REFFODFEMzhEMDA1MDAxQTI1MjkgLyogQnl0ZWNvZGVHZW5l
cmF0b3JpZmljYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEUzRDI2NDI3MUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRlY29kZUdlbmVyYXRvcmlmaWNh
dGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CUUzMjhEQUU5MUQzOEQwMDUwMDFBMjUyOSAvKiBCeXRlY29kZUdyYXBoLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0QyNjQyODFEMzhDMDQyMDAwQkUx
NzQgLyogQnl0ZWNvZGVHcmFwaC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCUUzMjhEQUVBMUQzOEQwMDUwMDFBMjUyOSAvKiBCeXRlY29kZVJld3Jp
dGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUz
RDI2NDI5MUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRlY29kZVJld3JpdGVyLmNwcCAqLzsgfTsKKwkJ
RTMyOERBRUIxRDM4RDAwNTAwMUEyNTI5IC8qIEJ5dGVjb2RlUmV3cml0ZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzRDI2NDJBMUQzOEMwNDIwMDBC
RTE3NCAvKiBCeXRlY29kZVJld3JpdGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTMzNjM3QTUxQjYzMjIwMjAwRUUwODQwIC8qIFJlZmxlY3RP
YmplY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTMzNjM3QTMxQjYzMjIwMjAwRUUwODQwIC8qIFJlZmxlY3RPYmplY3QuY3BwICovOyB9OwogCQlF
MzM2MzdBNjFCNjMyMjAyMDBFRTA4NDAgLyogUmVmbGVjdE9iamVjdC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMzNjM3QTQxQjYzMjIwMjAwRUUwODQw
IC8qIFJlZmxlY3RPYmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlFMzNCM0UyNjFCN0FCRDc1MDA0OERCMkUgLyogSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uT2JqZWN0Lmx1dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTMzQjNFMjUxQjdBQkQ3NTAwNDhEQjJFIC8qIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbk9iamVjdC5sdXQuaCAqLzsgfTsKQEAgLTIwODQsNiArMjA4NSw3IEBACiAJCUUzNzk0
RTc1MUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFseXplci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzc5NEU3MzFCNzdFQjk3MDA1NTQzQUUg
LyogTW9kdWxlQW5hbHl6ZXIuY3BwICovOyB9OwogCQlFMzc5NEU3NjFCNzdFQjk3MDA1NTQzQUUg
LyogTW9kdWxlQW5hbHl6ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEUzNzk0RTc0MUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFseXplci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzOTYzQ0VF
MUI3M0Y3NTAwMEVCNENFNSAvKiBOb2Rlc0FuYWx5emVNb2R1bGUuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5NjNDRUMxQjczRjc1MDAwRUI0Q0U1
IC8qIE5vZGVzQW5hbHl6ZU1vZHVsZS5jcHAgKi87IH07CisJCUUzOUQ0NUY1MUQzOTAwNTYwMEIz
QjM3NyAvKiBJbnRlcnByZXRlcklubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEUzOUQ5RDg0MUQzOTAwMDYwMDY2NzI4MiAvKiBJbnRlcnByZXRl
cklubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQlFMzlEQTRBNjFCN0U4QjdDMDA4NEYzM0EgLyogSlNNb2R1bGVSZWNvcmQuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5REE0QTQxQjdFOEI3
QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmNwcCAqLzsgfTsKIAkJRTM5REE0QTcxQjdFOEI3
QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFMzlEQTRBNTFCN0U4QjdDMDA4NEYzM0EgLyogSlNNb2R1bGVS
ZWNvcmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlFM0QyMzlDODFCODI5QzFDMDBCQkVGNjcgLyogSlNNb2R1bGVFbnZpcm9ubWVudC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0QyMzlDNjFCODI5
QzFDMDBCQkVGNjcgLyogSlNNb2R1bGVFbnZpcm9ubWVudC5jcHAgKi87IH07CkBAIC0zMDQxLDgg
KzMwNDMsNiBAQAogCQkwRkVDODRDRTFCREFDREFDMDA4MEZGNzQgLyogQjNHZW5lcmF0ZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBCM0dlbmVyYXRlLmNwcDsgcGF0
aCA9IGIzL0IzR2VuZXJhdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkVD
ODRDRjFCREFDREFDMDA4MEZGNzQgLyogQjNHZW5lcmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBCM0dlbmVyYXRlLmg7IHBhdGggPSBiMy9CM0dlbmVyYXRlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRUM4NEQwMUJEQUNEQUMwMDgwRkY3NCAvKiBCM0dl
bmVyaWNGcmVxdWVudGVkQmxvY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
QjNHZW5lcmljRnJlcXVlbnRlZEJsb2NrLmg7IHBhdGggPSBiMy9CM0dlbmVyaWNGcmVxdWVudGVk
QmxvY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMEZFQzg0RDExQkRBQ0RBQzAw
ODBGRjc0IC8qIEIzSW5kZXhNYXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
QjNJbmRleE1hcC5oOyBwYXRoID0gYjMvQjNJbmRleE1hcC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQkwRkVDODREMjFCREFDREFDMDA4MEZGNzQgLyogQjNJbmRleFNldC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBCM0luZGV4U2V0Lmg7IHBhdGggPSBiMy9CM0lu
ZGV4U2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRUM4NEQzMUJEQUNEQUMw
MDgwRkY3NCAvKiBCM0xvd2VyVG9BaXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gQjNMb3dlclRvQWlyLmNwcDsgcGF0aCA9IGIzL0IzTG93ZXJUb0Fpci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRUM4NEQ0MUJEQUNEQUMwMDgwRkY3NCAvKiBC
M0xvd2VyVG9BaXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQjNMb3dlclRv
QWlyLmg7IHBhdGggPSBiMy9CM0xvd2VyVG9BaXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMEZFQzg0RDUxQkRBQ0RBQzAwODBGRjc0IC8qIEIzTWVtb3J5VmFsdWUuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQjNNZW1vcnlWYWx1ZS5jcHA7IHBhdGgg
PSBiMy9CM01lbW9yeVZhbHVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTM1
MjQsOCArMzUyNCw2IEBACiAJCTcwOUZCODY1MUFFMzM1QzYwMDM5RDA2OSAvKiBXZWFrU2V0UHJv
dG90eXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYWtTZXRQ
cm90b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MDlGQjg2NjFBRTMz
NUM2MDAzOUQwNjkgLyogV2Vha1NldFByb3RvdHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXZWFrU2V0UHJvdG90eXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTcwQjBBOUQwMUE5QjY2MjAwMDAxMzA2QSAvKiBSdW50aW1lRmxhZ3MuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUnVudGltZUZsYWdzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTcwQjc5MTgzMUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGcmFtZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHZW5lcmF0b3JGcmFtZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTcwQjc5MTg0MUMwMjQ0MzIwMDI0ODFF
MiAvKiBHZW5lcmF0b3JGcmFtZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBH
ZW5lcmF0b3JGcmFtZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MEI3OTE4NTFD
MDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVj
dG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzBCNzkxODYxQzAyNDQzMjAw
MjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3MEI3OTE4NzFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJh
dG9yRnVuY3Rpb25Qcm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtNDM2NSwxMCArNDM2MywxNiBAQAogCQlFMzc5NEU3MzFCNzdFQjk3MDA1NTQz
QUUgLyogTW9kdWxlQW5hbHl6ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gTW9kdWxlQW5hbHl6ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlF
Mzc5NEU3NDFCNzdFQjk3MDA1NTQzQUUgLyogTW9kdWxlQW5hbHl6ZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gTW9kdWxlQW5hbHl6ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRTM5NjNDRUMxQjczRjc1MDAwRUI0Q0U1IC8qIE5vZGVzQW5hbHl6ZU1vZHVs
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOb2Rlc0FuYWx5emVN
b2R1bGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzlEOUQ4NDFEMzkwMDA2
MDA2NjcyODIgLyogSW50ZXJwcmV0ZXJJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEludGVycHJldGVySW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlFMzlEQTRBNDFCN0U4QjdDMDA4NEYzM0EgLyogSlNNb2R1bGVSZWNvcmQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNNb2R1bGVSZWNvcmQuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzlEQTRBNTFCN0U4QjdDMDA4NEYzM0EgLyogSlNN
b2R1bGVSZWNvcmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNNb2R1bGVS
ZWNvcmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNEMjM5QzYxQjgyOUMxQzAw
QkJFRjY3IC8qIEpTTW9kdWxlRW52aXJvbm1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSlNNb2R1bGVFbnZpcm9ubWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUUzRDIzOUM3MUI4MjlDMUMwMEJCRUY2NyAvKiBKU01vZHVsZUVudmlyb25t
ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTW9kdWxlRW52aXJvbm1l
bnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTNEMjY0MjYxRDM4QzA0MjAwMEJF
MTc0IC8qIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTNEMjY0MjcxRDM4QzA0MjAwMEJFMTc0IC8qIEJ5dGVj
b2RlR2VuZXJhdG9yaWZpY2F0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUUzRDI2NDI4MUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRlY29kZUdyYXBoLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJ5dGVjb2RlR3JhcGguaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJRTNEMjY0MjkxRDM4QzA0MjAwMEJFMTc0IC8qIEJ5dGVjb2RlUmV3cml0
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQnl0ZWNvZGVSZXdy
aXRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzRDI2NDJBMUQzOEMwNDIw
MDBCRTE3NCAvKiBCeXRlY29kZVJld3JpdGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEJ5dGVjb2RlUmV3cml0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RTNFRjg4NzIxQjY2REYyMzAwM0YyNkNCIC8qIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNQcm9wZXJ0eU5hbWVJdGVyYXRv
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzRUY4ODczMUI2NkRGMjMwMDNG
MjZDQiAvKiBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRTQ5REMxNDkxMkVGMjYxQTAwMTg0QTFGIC8qIFNvdXJjZVByb3ZpZGVyQ2FjaGVJ
dGVtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNvdXJjZVByb3ZpZGVyQ2Fj
aGVJdGVtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00ODQyLDggKzQ4NDYsNiBA
QAogCQkJCTBGRUM4NEQwMUJEQUNEQUMwMDgwRkY3NCAvKiBCM0dlbmVyaWNGcmVxdWVudGVkQmxv
Y2suaCAqLywKIAkJCQkwRkVDODVCRjFCRTE2N0EwMDA4MEZGNzQgLyogQjNIZWFwUmFuZ2UuY3Bw
ICovLAogCQkJCTBGRUM4NUMwMUJFMTY3QTAwMDgwRkY3NCAvKiBCM0hlYXBSYW5nZS5oICovLAot
CQkJCTBGRUM4NEQxMUJEQUNEQUMwMDgwRkY3NCAvKiBCM0luZGV4TWFwLmggKi8sCi0JCQkJMEZF
Qzg0RDIxQkRBQ0RBQzAwODBGRjc0IC8qIEIzSW5kZXhTZXQuaCAqLywKIAkJCQlEQzY5Qjk5QTFE
MTVGOTBGMDAyRTNDMDAgLyogQjNJbmZlclN3aXRjaGVzLmNwcCAqLywKIAkJCQlEQzY5Qjk5QjFE
MTVGOTBGMDAyRTNDMDAgLyogQjNJbmZlclN3aXRjaGVzLmggKi8sCiAJCQkJMEZFQzg1QjQxQkUx
NDYyRjAwODBGRjc0IC8qIEIzSW5zZXJ0aW9uU2V0LmNwcCAqLywKQEAgLTUwOTksNiArNTEwMSw3
IEBACiAJCTE0MjlENzdBMEVEMjBENzMwMEI4OTYxOSAvKiBpbnRlcnByZXRlciAqLyA9IHsKIAkJ
CWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJRTM5RDlEODQxRDM5MDAwNjAw
NjY3MjgyIC8qIEludGVycHJldGVySW5saW5lcy5oICovLAogCQkJCTBGNTVGMEYxMTREMTA2MzYw
MEFDNzY0OSAvKiBBYnN0cmFjdFBDLmNwcCAqLywKIAkJCQkwRjU1RjBGMjE0RDEwNjM2MDBBQzc2
NDkgLyogQWJzdHJhY3RQQy5oICovLAogCQkJCTE0MjlEODVCMEVEMjE4RTkwMEI4OTYxOSAvKiBD
TG9vcFN0YWNrLmNwcCAqLywKQEAgLTU3ODksOCArNTc5Miw2IEBACiAJCQkJRjY5MkE4NUQwMjU1
NTk3RDAxRkY2MEY3IC8qIEZ1bmN0aW9uUHJvdG90eXBlLmggKi8sCiAJCQkJNjJEMkQzOEQxQURG
MTAzRjAwMDIwNkMxIC8qIEZ1bmN0aW9uUmFyZURhdGEuY3BwICovLAogCQkJCTYyRDJEMzhFMUFE
RjEwM0YwMDAyMDZDMSAvKiBGdW5jdGlvblJhcmVEYXRhLmggKi8sCi0JCQkJNzBCNzkxODMxQzAy
NDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZyYW1lLmNwcCAqLywKLQkJCQk3MEI3OTE4NDFDMDI0
NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnJhbWUuaCAqLywKIAkJCQk3MEI3OTE4NTFDMDI0NDMy
MDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAgKi8sCiAJCQkJNzBC
NzkxODYxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaCAq
LywKIAkJCQk3MEI3OTE4NzFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Qcm90
b3R5cGUuY3BwICovLApAQCAtNjY3OSw2ICs2NjgwLDExIEBACiAJCTk2OUEwNzhGMEVEMUQzQUUw
MEYxRjY4MSAvKiBieXRlY29kZSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRy
ZW4gPSAoCisJCQkJRTNEMjY0MjYxRDM4QzA0MjAwMEJFMTc0IC8qIEJ5dGVjb2RlR2VuZXJhdG9y
aWZpY2F0aW9uLmNwcCAqLywKKwkJCQlFM0QyNjQyNzFEMzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNv
ZGVHZW5lcmF0b3JpZmljYXRpb24uaCAqLywKKwkJCQlFM0QyNjQyODFEMzhDMDQyMDAwQkUxNzQg
LyogQnl0ZWNvZGVHcmFwaC5oICovLAorCQkJCUUzRDI2NDI5MUQzOEMwNDIwMDBCRTE3NCAvKiBC
eXRlY29kZVJld3JpdGVyLmNwcCAqLywKKwkJCQlFM0QyNjQyQTFEMzhDMDQyMDAwQkUxNzQgLyog
Qnl0ZWNvZGVSZXdyaXRlci5oICovLAogCQkJCTUzNzBCNEYzMUJGMjVFQTIwMDVDNDBGQyAvKiBB
ZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnRCYXNlLmNwcCAqLywKIAkJCQk1
MzcwQjRGNDFCRjI1RUEyMDA1QzQwRkMgLyogQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVX
YXRjaHBvaW50QmFzZS5oICovLAogCQkJCTBGODMzNUI0MTYzOUMxRTMwMDE0NDNCNSAvKiBBcnJh
eUFsbG9jYXRpb25Qcm9maWxlLmNwcCAqLywKQEAgLTcyMjAsOCArNzIyNiw2IEBACiAJCQkJMEZF
Qzg1QzMxQkUxNjdBMDAwODBGRjc0IC8qIEIzSGVhcFJhbmdlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkyNjcxOEJBNTFCRTk5Rjc4MDA1MjAxN0IgLyogQWlySXRlcmF0ZWRSZWdpc3RlckNvYWxlc2Np
bmcuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOTYzMDNDMUQ0MTkyQ0QwMDU2MDlEOSAvKiBEZXN0
cnVjdGlvbk1vZGUuaCBpbiBIZWFkZXJzICovLAotCQkJCTBGRUM4NTFCMUJEQUNEQUMwMDgwRkY3
NCAvKiBCM0luZGV4TWFwLmggaW4gSGVhZGVycyAqLywKLQkJCQkwRkVDODUxQzFCREFDREFDMDA4
MEZGNzQgLyogQjNJbmRleFNldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQzg1QkExQkUxNDYy
RjAwODBGRjc0IC8qIEIzSW5zZXJ0aW9uU2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVDODVC
QjFCRTE0NjJGMDA4MEZGNzQgLyogQjNJbnNlcnRpb25TZXRJbmxpbmVzLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRkVDODUxRTFCREFDREFDMDA4MEZGNzQgLyogQjNMb3dlclRvQWlyLmggaW4gSGVh
ZGVycyAqLywKQEAgLTcyMzUsNiArNzIzOSw3IEBACiAJCQkJMEZFQzg1MkQxQkRBQ0RBQzAwODBG
Rjc0IC8qIEIzUHJvY2VkdXJlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQzg1QkQx
QkUxNDYyRjAwODBGRjc0IC8qIEIzUmVkdWNlU3RyZW5ndGguaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGRUM4NTMxMUJEQUNEQUMwMDgwRkY3NCAvKiBCM1N0YWNrbWFwU3BlY2lhbC5oIGluIEhlYWRl
cnMgKi8sCisJCQkJRTMyOERBRTgxRDM4RDAwNTAwMUEyNTI5IC8qIEJ5dGVjb2RlR2VuZXJhdG9y
aWZpY2F0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVDODUzNTFCREFDREFDMDA4MEZGNzQg
LyogQjNTbG90QmFzZVZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVDODUzNjFCREFDREFD
MDA4MEZGNzQgLyogQjNTdWNjZXNzb3JDb2xsZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RkVDODUzODFCREFDREFDMDA4MEZGNzQgLyogQjNTd2l0Y2hDYXNlLmggaW4gSGVhZGVycyAqLywK
QEAgLTc1MDIsNyArNzUwNyw2IEBACiAJCQkJQTczNzgxMEUxNzk5RUEyRTAwODE3NTMzIC8qIERG
R05hdHVyYWxMb29wcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZFQ0EzRUExMzJERUYxQzAwMkIy
QUQ3IC8qIERGR05vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRkI5MjFCMTZEMDJGMDEwMDU1
QTVEQiAvKiBERkdOb2RlQWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLywKLQkJCQk3MEI3OTE5MzFD
MDI0QTI4MDAyNDgxRTIgLyogR2VuZXJhdG9yRnJhbWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
QTU4MUJCMTUwRTk1MzAwMEI5QTJEOSAvKiBERkdOb2RlRmxhZ3MuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGMzAwQjc4MThBQjA1MTEwMEE2RDcyRSAvKiBERkdOb2RlT3JpZ2luLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRkE1ODFCQzE1MEU5NTMwMDBCOUEyRDkgLyogREZHTm9kZVR5cGUuaCBpbiBI
ZWFkZXJzICovLApAQCAtNzUxNyw2ICs3NTIxLDcgQEAKIAkJCQkwRkQ4QTMyNjE3RDUxRjU3MDBD
QTJDNDAgLyogREZHT1NSRW50cnlwb2ludENyZWF0aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGQzA5NzZBMTQ2OEE2RjcwMENGMjQ0MiAvKiBERkdPU1JFeGl0LmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjIzNUJFQzE3MTc4RTczMDA2OTBDN0YgLyogREZHT1NSRXhpdEJhc2UuaCBpbiBI
ZWFkZXJzICovLAorCQkJCUUzOUQ0NUY1MUQzOTAwNTYwMEIzQjM3NyAvKiBJbnRlcnByZXRlcklu
bGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRkI5MjFDMTZEMDJGMTEwMDU1QTVEQiAvKiBE
RkdPU1JFeGl0Q29tcGlsYXRpb25JbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkMwOTc3MTE0
NjkzQUY1MDBDRjI0NDIgLyogREZHT1NSRXhpdENvbXBpbGVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRjcwMjVBQTE3MTRCMEZDMDAzODJDMEUgLyogREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmgg
aW4gSGVhZGVycyAqLywKQEAgLTc3ODEsNiArNzc4Niw3IEBACiAJCQkJRTMzQjNFMjYxQjdBQkQ3
NTAwNDhEQjJFIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5sdXQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUE1MzI0MzhDMTg1NjgzMzUwMDJFRDY5MiAvKiBJbnNwZWN0b3JQcm90b2Nv
bE9iamVjdHMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1NUQ5M0FDMTg1MTRGNzkwMDQwMERFRCAv
KiBJbnNwZWN0b3JQcm90b2NvbFR5cGVzLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzI4REFFQjFE
MzhEMDA1MDAxQTI1MjkgLyogQnl0ZWNvZGVSZXdyaXRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QTUwRTRCNjIxODgwOURENTAwNjhBNDZEIC8qIEluc3BlY3RvclJ1bnRpbWVBZ2VudC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQTU5M0NGODMxODQwMzc3MTAwQkZDRTI3IC8qIEluc3BlY3RvclZhbHVl
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTY5QTA3OTkwRUQxRDNBRTAwRjFGNjgxIC8qIEluc3Ry
dWN0aW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTc5MTMsNiArNzkxOSw3IEBACiAJCQkJRTMzRjUw
ODExQjg0MjlBNDAwNDEzODU2IC8qIEpTSW50ZXJuYWxQcm9taXNlLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjYxODMyQTFDNDVCRjA3MDA3MjQ1MEIgLyogQWlyQ0NhbGxpbmdDb252ZW50aW9uLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlFMzNGNTA3OTFCODQyMjU3MDA0MTM4NTYgLyogSlNJbnRlcm5h
bFByb21pc2VDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTMyOERBRTkxRDM4RDAw
NTAwMUEyNTI5IC8qIEJ5dGVjb2RlR3JhcGguaCBpbiBIZWFkZXJzICovLAogCQkJCUUzM0Y1MDg3
MUI4NDQ5RUYwMDQxMzg1NiAvKiBKU0ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yLmx1dC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRTMzRjUwODUxQjg0MzdBMDAwNDEzODU2IC8qIEpTSW50ZXJuYWxQ
cm9taXNlRGVmZXJyZWQuaCBpbiBIZWFkZXJzICovLAogCQkJCUUzM0Y1MDc1MUI4NDIxQzAwMDQx
Mzg1NiAvKiBKU0ludGVybmFsUHJvbWlzZVByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCkBAIC04
ODg0LDYgKzg4OTEsNyBAQAogCQkJCTE0N0YzOUJEMTA3RUMzNzYwMDQyN0E0OCAvKiBBcmdMaXN0
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNzQzQkFBMTZCODgyNDkwMDlGOTI3NyAvKiBBUk02
NERpc2Fzc2VtYmxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NkQzQjJDMzEwMTU2QkRFMDAy
ODY1RTcgLyogQVJNQXNzZW1ibGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUUzMjhEQUU3MUQz
OEQwMDQwMDFBMjUyOSAvKiBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk2NUMwMjg1MDE3MTc5NUUyMDAzNTFFMzUgLyogQVJNdjdEaXNhc3NlbWJsZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNjVDMDI4NUMxNzE3OTY2ODAwMzUxRTM1IC8qIEFSTXY3
RE9wY29kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjgzMzVCNzE2MzlDMUU2MDAxNDQzQjUg
LyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTkyMTksNiAr
OTIyNyw3IEBACiAJCQkJMEYyNUYxQjExODE2MzVGMzAwNTIyRjM5IC8qIEZUTFNsb3dQYXRoQ2Fs
bC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjMzOERGMTFCRTkzQUQxMDAxM0M4OEYgLyogQjNT
dGFja21hcFZhbHVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMjVGMUIzMTgxNjM1RjMwMDUy
MkYzOSAvKiBGVExTbG93UGF0aENhbGxLZXkuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTMyOERB
RUExRDM4RDAwNTAwMUEyNTI5IC8qIEJ5dGVjb2RlUmV3cml0ZXIuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNDMxOURBMDMxQzFCRTQwQTAwMUQyNjBCIC8qIEIzTG93ZXJNYWNyb3NBZnRlck9wdGlt
aXphdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFQTBBMTYxNzA2QkI5MDAwQkI3MjJD
IC8qIEZUTFN0YXRlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMjM1QkUxMTcxNzhFMUMwMDY5
MEM3RiAvKiBGVExUaHVua3MuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC05NjI5LDcgKzk2MzgsNiBA
QAogCQkJCTc5RUUwQkZGMUI0QUZCODUwMDAzODVDOSAvKiBWYXJpYWJsZUVudmlyb25tZW50LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTBGNkM3MzUwMUFDOUY5OUYwMEJFMTY4MiAvKiBWYXJpYWJs
ZVdyaXRlRmlyZURldGFpbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkUwNTAyQzFBQTkwOTU2
MDBEMzNCMzMgLyogVmFyT2Zmc2V0LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTcwQjc5MTkyMUMw
MjRBMjMwMDI0ODFFMiAvKiBHZW5lcmF0b3JGcmFtZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkw
RjIwQzI1OTFBODAxM0FCMDBEQTMyMjkgLyogVmlydHVhbFJlZ2lzdGVyLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUUxOEUzQTU5MERGOTI3OEMwMEQ5MEIzNCAvKiBWTS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlGRTU5MzJBNzE4M0M1QTI2MDBBMUVDQ0MgLyogVk1FbnRyeVNjb3BlLmNwcCBpbiBT
b3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQmFzaWNC
bG9ja1V0aWxzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNCYXNpY0Jsb2NrVXRpbHMu
aAppbmRleCA0YTcxNzY3ODc4YzZlYjM3MjMwNTBkZTkyMTk1ZWRlYTU4NTAxOWY3Li4zMmE1OWZj
MTIwY2I4NDBmYWJhMDZiMWY3ZDFkN2IxYjVhOWFhZDljIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNCYXNpY0Jsb2NrVXRpbHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNCYXNpY0Jsb2NrVXRpbHMuaApAQCAtMjgsOCArMjgsOCBAQAogCiAjaWYgRU5B
QkxFKEIzX0pJVCkKIAotI2luY2x1ZGUgIkIzSW5kZXhTZXQuaCIKICNpbmNsdWRlIDx3dGYvR3Jh
cGhOb2RlV29ya2xpc3QuaD4KKyNpbmNsdWRlIDx3dGYvSW5kZXhTZXQuaD4KICNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgewpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQmxvY2tXb3JrbGlzdC5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzQmxvY2tXb3JrbGlzdC5oCmluZGV4IGFmN2VlMmM5NmJjOTg4ODli
ZDBkNzhiMTZlNjI3OGQ1NzNjZjYyMjEuLjllNmJlNGJiOWY3MDE5MjIzZTE1ZTJhYzQ5YzhmNmRl
MTZjODg5NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0Jsb2NrV29y
a2xpc3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNCbG9ja1dvcmtsaXN0LmgK
QEAgLTI4LDEzICsyOCwxNCBAQAogCiAjaWYgRU5BQkxFKEIzX0pJVCkKIAotI2luY2x1ZGUgIkIz
QmFzaWNCbG9jay5oIgotI2luY2x1ZGUgIkIzSW5kZXhTZXQuaCIKICNpbmNsdWRlIDx3dGYvR3Jh
cGhOb2RlV29ya2xpc3QuaD4KKyNpbmNsdWRlIDx3dGYvSW5kZXhTZXQuaD4KICNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgewogCitjbGFzcyBC
YXNpY0Jsb2NrOworCiB0eXBlZGVmIEdyYXBoTm9kZVdvcmtsaXN0PEJhc2ljQmxvY2sqLCBJbmRl
eFNldDxCYXNpY0Jsb2NrPj4gQmxvY2tXb3JrbGlzdDsKIAogLy8gV2hlbiB5b3Ugc2F5IEJsb2Nr
V2l0aDxpbnQ+IHlvdSBzaG91bGQgcmVhZCBpdCBhcyAiYmxvY2sgd2l0aCBhbiBpbnQiLgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ0ZHLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNDRkcuaAppbmRleCA1OGM0MGIxYmJhZjc3ZGRlZmExZDIwNjNmOTNlNTg5
NDU5MWQxN2IzLi45MDRhYjNmOWEzNjBjMjk5NTYyMGEwMDJmYWE3YzE1ZGUyMjVlYWEzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDRkcuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNDRkcuaApAQCAtMjksOSArMjksOSBAQAogI2lmIEVOQUJMRShCM19K
SVQpCiAKICNpbmNsdWRlICJCM0Jhc2ljQmxvY2suaCIKLSNpbmNsdWRlICJCM0luZGV4TWFwLmgi
Ci0jaW5jbHVkZSAiQjNJbmRleFNldC5oIgogI2luY2x1ZGUgIkIzUHJvY2VkdXJlLmgiCisjaW5j
bHVkZSA8d3RmL0luZGV4TWFwLmg+CisjaW5jbHVkZSA8d3RmL0luZGV4U2V0Lmg+CiAKIG5hbWVz
cGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNEdXBsaWNhdGVUYWlscy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNEdXBsaWNhdGVUYWlscy5jcHAKaW5kZXggZWVjY2Y1N2JhNTQ3NTMwNDgxZjA5MDVlZGY4ODgz
OWIyYTgyZTExZC4uZmU5NGE2MDdkN2Q1ZDkxZTUwMjRkMDlkZGVhZGM5NTE2NmE0NjYzYiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzRHVwbGljYXRlVGFpbHMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0R1cGxpY2F0ZVRhaWxzLmNwcApAQCAtMzIs
MTMgKzMyLDEzIEBACiAjaW5jbHVkZSAiQjNCcmVha0NyaXRpY2FsRWRnZXMuaCIKICNpbmNsdWRl
ICJCM0RvbWluYXRvcnMuaCIKICNpbmNsdWRlICJCM0ZpeFNTQS5oIgotI2luY2x1ZGUgIkIzSW5k
ZXhTZXQuaCIKICNpbmNsdWRlICJCM0luc2VydGlvblNldElubGluZXMuaCIKICNpbmNsdWRlICJC
M1BoYXNlU2NvcGUuaCIKICNpbmNsdWRlICJCM1Byb2NlZHVyZUlubGluZXMuaCIKICNpbmNsdWRl
ICJCM1N3aXRjaFZhbHVlLmgiCiAjaW5jbHVkZSAiQjNVcHNpbG9uVmFsdWUuaCIKICNpbmNsdWRl
ICJCM1ZhbHVlSW5saW5lcy5oIgorI2luY2x1ZGUgPHd0Zi9JbmRleFNldC5oPgogCiBuYW1lc3Bh
Y2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzRml4U1NBLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0ZpeFNTQS5j
cHAKaW5kZXggZjRiMDEyMmM0ZGVjZGU5NWMzZGIyZDgyNDFmNjkyODJkNWJhMzk2YS4uNzMwYzJj
ODc2NmM2NTY1NDZiNDg3NDZlMTI1MDNjZDM1OTMyNGY4YSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzRml4U1NBLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNGaXhTU0EuY3BwCkBAIC0zMSw3ICszMSw2IEBACiAjaW5jbHVkZSAiQjNCYXNpY0Jsb2Nr
SW5saW5lcy5oIgogI2luY2x1ZGUgIkIzQnJlYWtDcml0aWNhbEVkZ2VzLmgiCiAjaW5jbHVkZSAi
QjNEb21pbmF0b3JzLmgiCi0jaW5jbHVkZSAiQjNJbmRleFNldC5oIgogI2luY2x1ZGUgIkIzSW5z
ZXJ0aW9uU2V0SW5saW5lcy5oIgogI2luY2x1ZGUgIkIzUGhhc2VTY29wZS5oIgogI2luY2x1ZGUg
IkIzUHJvY2VkdXJlSW5saW5lcy5oIgpAQCAtNDEsNiArNDAsNyBAQAogI2luY2x1ZGUgIkIzVmFy
aWFibGUuaCIKICNpbmNsdWRlICJCM1ZhcmlhYmxlVmFsdWUuaCIKICNpbmNsdWRlIDx3dGYvQ29t
bWFQcmludGVyLmg+CisjaW5jbHVkZSA8d3RmL0luZGV4U2V0Lmg+CiAKIG5hbWVzcGFjZSBKU0Mg
eyBuYW1lc3BhY2UgQjMgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNGaXhTU0EuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0ZpeFNTQS5oCmluZGV4IDY2
MmU0OWQ2MjhhZWY2MjA5NTEwOTU4N2VlYTQ1MzU1YzgwNjc3YzUuLjg4NTkyNzZlMmQ5MjZkZjMx
MDIwNjA3N2VhNzViMjBhYTc0ODhhNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM0ZpeFNTQS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0ZpeFNTQS5o
CkBAIC0yOCw4ICsyOCw5IEBACiAKICNpZiBFTkFCTEUoQjNfSklUKQogCi0jaW5jbHVkZSAiQjNJ
bmRleFNldC5oIgogI2luY2x1ZGUgIkIzVmFsdWUuaCIKKyNpbmNsdWRlIDx3dGYvSW5kZXhTZXQu
aD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2Ug
QjMgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNJbmRleE1hcC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzSW5kZXhNYXAuaApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMmFhMzM5ZjA5ZGU0MmMwYjRkNTliZDZhZjJlOTgyNjRmYmMxMWI2MS4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNJbmRleE1hcC5oCisrKyAvZGV2L251bGwKQEAgLTEsODcgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
Ci0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNp
Zm5kZWYgQjNJbmRleE1hcF9oCi0jZGVmaW5lIEIzSW5kZXhNYXBfaAotCi0jaWYgRU5BQkxFKEIz
X0pJVCkKLQotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotbmFtZXNwYWNlIEpTQyB7IG5hbWVz
cGFjZSBCMyB7Ci0KLS8vIFRoaXMgaXMgYSBtYXAgZm9yIGtleXMgdGhhdCBoYXZlIGFuIGluZGV4
KCkuIEl0J3Mgc3VwZXIgZWZmaWNpZW50IGZvciBCYXNpY0Jsb2Nrcy4gSXQncyBvbmx5Ci0vLyBl
ZmZpY2llbnQgZm9yIFZhbHVlcyBpZiB5b3UgZG9uJ3QgY3JlYXRlIHRvbyBtYW55IG9mIHRoZXNl
IG1hcHMsIHNpbmNlIFZhbHVlcyBjYW4gaGF2ZSB2ZXJ5Ci0vLyBzcGFyc2UgaW5kaWNlcyBhbmQg
dGhlcmUgYXJlIGEgbG90IG9mIFZhbHVlcy4KLQotdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBl
bmFtZSBWYWx1ZT4KLWNsYXNzIEluZGV4TWFwIHsKLXB1YmxpYzoKLSAgICBleHBsaWNpdCBJbmRl
eE1hcChzaXplX3Qgc2l6ZSA9IDApCi0gICAgewotICAgICAgICBtX3ZlY3Rvci5maWxsKFZhbHVl
KCksIHNpemUpOwotICAgIH0KLQotICAgIHZvaWQgcmVzaXplKHNpemVfdCBzaXplKQotICAgIHsK
LSAgICAgICAgbV92ZWN0b3IuZmlsbChWYWx1ZSgpLCBzaXplKTsKLSAgICB9Ci0KLSAgICB2b2lk
IGNsZWFyKCkKLSAgICB7Ci0gICAgICAgIG1fdmVjdG9yLmZpbGwoVmFsdWUoKSwgbV92ZWN0b3Iu
c2l6ZSgpKTsKLSAgICB9Ci0KLSAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmVj
dG9yLnNpemUoKTsgfQotCi0gICAgVmFsdWUmIG9wZXJhdG9yW10oc2l6ZV90IGluZGV4KQotICAg
IHsKLSAgICAgICAgcmV0dXJuIG1fdmVjdG9yW2luZGV4XTsKLSAgICB9Ci0KLSAgICBjb25zdCBW
YWx1ZSYgb3BlcmF0b3JbXShzaXplX3QgaW5kZXgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1
cm4gbV92ZWN0b3JbaW5kZXhdOwotICAgIH0KLSAgICAKLSAgICBWYWx1ZSYgb3BlcmF0b3JbXShL
ZXkqIGtleSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX3ZlY3RvcltrZXktPmluZGV4KCldOwot
ICAgIH0KLSAgICAKLSAgICBjb25zdCBWYWx1ZSYgb3BlcmF0b3JbXShLZXkqIGtleSkgY29uc3QK
LSAgICB7Ci0gICAgICAgIHJldHVybiBtX3ZlY3RvcltrZXktPmluZGV4KCldOwotICAgIH0KLQot
cHJpdmF0ZToKLSAgICBWZWN0b3I8VmFsdWU+IG1fdmVjdG9yOwotfTsKLQotfSB9IC8vIG5hbWVz
cGFjZSBKU0M6OkIzCi0KLSNlbmRpZiAvLyBFTkFCTEUoQjNfSklUKQotCi0jZW5kaWYgLy8gQjNJ
bmRleE1hcF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNJbmRleFNl
dC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzSW5kZXhTZXQuaApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggYWI5YjJiNGUzNGJmNDM4MDA3YWQyMTdjYjVjN2EzZWE5NGNiOWE0
Ni4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNJbmRleFNldC5oCisrKyAvZGV2L251bGwKQEAgLTEsMTY1ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwot
Ci0jaWZuZGVmIEIzSW5kZXhTZXRfaAotI2RlZmluZSBCM0luZGV4U2V0X2gKLQotI2luY2x1ZGUg
PHd0Zi9CaXRWZWN0b3IuaD4KLSNpbmNsdWRlIDx3dGYvQ29tbWFQcmludGVyLmg+Ci0KLW5hbWVz
cGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgewotCi0vLyBUaGlzIGlzIGEgc2V0IGZvciB0aGluZ3Mg
dGhhdCBoYXZlIGFuIGluZGV4KCkuIEl0J3Mgc3VwZXIgZWZmaWNpZW50IGZvciBCYXNpY0Jsb2Nr
cy4gSXQncyBvbmx5Ci0vLyBlZmZpY2llbnQgZm9yIFZhbHVlcyBpZiB5b3UgZG9uJ3QgY3JlYXRl
IHRvbyBtYW55IG9mIHRoZXNlIHNldHMsIHNpbmNlIFZhbHVlcyBjYW4gaGF2ZSB2ZXJ5IHNwYXJz
ZQotLy8gaW5kaWNlcyBhbmQgdGhlcmUgYXJlIGEgbG90IG9mIFZhbHVlcy4KLQotLy8gSWYgeW91
IHdhbnQgYSBzZXQgb2YgQmFzaWNCbG9ja3MsIHlvdSBkbyBJbmRleFNldDxCYXNpY0Jsb2NrPi4g
U28sIFQgPSBCYXNpY0Jsb2NrLgotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWNsYXNzIEluZGV4U2V0
IHsKLXB1YmxpYzoKLSAgICBJbmRleFNldCgpCi0gICAgewotICAgIH0KLQotICAgIGJvb2wgYWRk
KFQqIHZhbHVlKQotICAgIHsKLSAgICAgICAgcmV0dXJuICFtX3NldC5zZXQodmFsdWUtPmluZGV4
KCkpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEl0ZXJhYmxlPgotICAgIGJvb2wg
YWRkQWxsKGNvbnN0IEl0ZXJhYmxlJiBpdGVyYWJsZSkKLSAgICB7Ci0gICAgICAgIGJvb2wgcmVz
dWx0ID0gZmFsc2U7Ci0gICAgICAgIGZvciAoVCogdmFsdWUgOiBpdGVyYWJsZSkKLSAgICAgICAg
ICAgIHJlc3VsdCB8PSBhZGQodmFsdWUpOwotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0K
LQotICAgIGJvb2wgcmVtb3ZlKFQqIHZhbHVlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fc2V0
LmNsZWFyKHZhbHVlLT5pbmRleCgpKTsKLSAgICB9Ci0KLSAgICBib29sIGNvbnRhaW5zKFQqIHZh
bHVlKSBjb25zdAotICAgIHsKLSAgICAgICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAgICAgcmV0dXJuIG1fc2V0LmdldCh2YWx1ZS0+aW5kZXgoKSk7Ci0gICAg
fQotCi0gICAgc2l6ZV90IHNpemUoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fc2V0
LmJpdENvdW50KCk7Ci0gICAgfQotCi0gICAgYm9vbCBpc0VtcHR5KCkgY29uc3QKLSAgICB7Ci0g
ICAgICAgIHJldHVybiAhc2l6ZSgpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENv
bGxlY3Rpb25UeXBlPgotICAgIGNsYXNzIEl0ZXJhYmxlIHsKLSAgICBwdWJsaWM6Ci0gICAgICAg
IEl0ZXJhYmxlKGNvbnN0IENvbGxlY3Rpb25UeXBlJiBjb2xsZWN0aW9uLCBjb25zdCBCaXRWZWN0
b3ImIHNldCkKLSAgICAgICAgICAgIDogbV9jb2xsZWN0aW9uKGNvbGxlY3Rpb24pCi0gICAgICAg
ICAgICAsIG1fc2V0KHNldCkKLSAgICAgICAgewotICAgICAgICB9Ci0KLSAgICAgICAgY2xhc3Mg
aXRlcmF0b3IgewotICAgICAgICBwdWJsaWM6Ci0gICAgICAgICAgICBpdGVyYXRvcigpCi0gICAg
ICAgICAgICAgICAgOiBtX2NvbGxlY3Rpb24obnVsbHB0cikKLSAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgIH0KLQotICAgICAgICAgICAgaXRlcmF0b3IoY29uc3QgQ29sbGVjdGlvblR5cGUmIGNv
bGxlY3Rpb24sIEJpdFZlY3Rvcjo6aXRlcmF0b3IgaXRlcikKLSAgICAgICAgICAgICAgICA6IG1f
Y29sbGVjdGlvbigmY29sbGVjdGlvbikKLSAgICAgICAgICAgICAgICAsIG1faXRlcihpdGVyKQot
ICAgICAgICAgICAgewotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBUKiBvcGVyYXRvcioo
KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiBtX2NvbGxlY3Rpb24tPmF0
KCptX2l0ZXIpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpdGVyYXRvciYgb3BlcmF0
b3IrKygpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgKyttX2l0ZXI7Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuICp0aGlzOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBib29s
IG9wZXJhdG9yPT0oY29uc3QgaXRlcmF0b3ImIG90aGVyKSBjb25zdAotICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgIHJldHVybiBtX2l0ZXIgPT0gb3RoZXIubV9pdGVyOwotICAgICAgICAg
ICAgfQotCi0gICAgICAgICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgaXRlcmF0b3ImIG90aGVy
KSBjb25zdAotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiAhKCp0aGlzID09
IG90aGVyKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICBwcml2YXRlOgotICAgICAgICAgICAg
Y29uc3QgQ29sbGVjdGlvblR5cGUqIG1fY29sbGVjdGlvbjsKLSAgICAgICAgICAgIEJpdFZlY3Rv
cjo6aXRlcmF0b3IgbV9pdGVyOwotICAgICAgICB9OwotCi0gICAgICAgIGl0ZXJhdG9yIGJlZ2lu
KCkgY29uc3QgeyByZXR1cm4gaXRlcmF0b3IobV9jb2xsZWN0aW9uLCBtX3NldC5iZWdpbigpKTsg
fQotICAgICAgICBpdGVyYXRvciBlbmQoKSBjb25zdCB7IHJldHVybiBpdGVyYXRvcihtX2NvbGxl
Y3Rpb24sIG1fc2V0LmVuZCgpKTsgfQotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgY29uc3QgQ29s
bGVjdGlvblR5cGUmIG1fY29sbGVjdGlvbjsKLSAgICAgICAgY29uc3QgQml0VmVjdG9yJiBtX3Nl
dDsKLSAgICB9OwotCi0gICAgLy8gRm9yIGJhc2ljIGJsb2NrcywgeW91IGRvOgotICAgIC8vIGlu
ZGV4U2V0LnZhbHVlcyhwcm9jZWR1cmUpOwotICAgIC8vCi0gICAgLy8gRm9yIHZhbHVlcywgeW91
IGRvOgotICAgIC8vIGluZGV4U2V0LnZhbHVlcyhwcm9jZWR1cmUudmFsdWVzKCkpOwotICAgIHRl
bXBsYXRlPHR5cGVuYW1lIENvbGxlY3Rpb25UeXBlPgotICAgIEl0ZXJhYmxlPENvbGxlY3Rpb25U
eXBlPiB2YWx1ZXMoY29uc3QgQ29sbGVjdGlvblR5cGUmIGNvbGxlY3Rpb24pIGNvbnN0Ci0gICAg
ewotICAgICAgICByZXR1cm4gSXRlcmFibGU8Q29sbGVjdGlvblR5cGU+KGNvbGxlY3Rpb24sIGlu
ZGljZXMoKSk7Ci0gICAgfQotCi0gICAgY29uc3QgQml0VmVjdG9yJiBpbmRpY2VzKCkgY29uc3Qg
eyByZXR1cm4gbV9zZXQ7IH0KLQotICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25z
dAotICAgIHsKLSAgICAgICAgQ29tbWFQcmludGVyIGNvbW1hOwotICAgICAgICBmb3IgKHNpemVf
dCBpbmRleCA6IGluZGljZXMoKSkKLSAgICAgICAgICAgIG91dC5wcmludChjb21tYSwgVDo6ZHVt
cFByZWZpeCwgaW5kZXgpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBCaXRWZWN0b3IgbV9zZXQ7
Ci19OwotCi19IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKLQotI2VuZGlmIC8vIEIzSW5kZXhTZXRf
aAotCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCmluZGV4IDMxMmQ5
MzdjYzFiYmQ1ODFmNDAyZGUwNmI1ZGM3Mjc5MGQxODU3N2YuLmE2YjZhZTE1OWZlMTU3MmYzZDkx
ODA0Nzk2MzU2YTlhNWYwOWUzZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM0xvd2VyVG9BaXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2Vy
VG9BaXIuY3BwCkBAIC00MCw4ICs0MCw2IEBACiAjaW5jbHVkZSAiQjNDaGVja1NwZWNpYWwuaCIK
ICNpbmNsdWRlICJCM0NvbW11dGF0aXZpdHkuaCIKICNpbmNsdWRlICJCM0RvbWluYXRvcnMuaCIK
LSNpbmNsdWRlICJCM0luZGV4TWFwLmgiCi0jaW5jbHVkZSAiQjNJbmRleFNldC5oIgogI2luY2x1
ZGUgIkIzTWVtb3J5VmFsdWUuaCIKICNpbmNsdWRlICJCM1BhdGNocG9pbnRTcGVjaWFsLmgiCiAj
aW5jbHVkZSAiQjNQYXRjaHBvaW50VmFsdWUuaCIKQEAgLTU1LDYgKzUzLDggQEAKICNpbmNsdWRl
ICJCM1ZhbHVlSW5saW5lcy5oIgogI2luY2x1ZGUgIkIzVmFyaWFibGUuaCIKICNpbmNsdWRlICJC
M1ZhcmlhYmxlVmFsdWUuaCIKKyNpbmNsdWRlIDx3dGYvSW5kZXhNYXAuaD4KKyNpbmNsdWRlIDx3
dGYvSW5kZXhTZXQuaD4KICNpbmNsdWRlIDx3dGYvTGlzdER1bXAuaD4KIAogI2lmIENPTVBJTEVS
KEdDQykgJiYgQVNTRVJUX0RJU0FCTEVECmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNQaGlDaGlsZHJlbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUGhpQ2hp
bGRyZW4uaAppbmRleCBjZGYzNjhmMjRhYTZlNWE1ODM5ZjNmYWE2NWRmMDlkYTA2MzQ1Y2U3Li5l
MTFmY2JlYjg5NjUwMWM2NmFkM2FjYzM3ZDIwMWIwMTZlNTUwZmNiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQaGlDaGlsZHJlbi5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM1BoaUNoaWxkcmVuLmgKQEAgLTI4LDEwICsyOCwxMCBAQAogCiAjaWYgRU5B
QkxFKEIzX0pJVCkKIAotI2luY2x1ZGUgIkIzSW5kZXhNYXAuaCIKICNpbmNsdWRlICJCM1Byb2Nl
ZHVyZS5oIgogI2luY2x1ZGUgIkIzVXBzaWxvblZhbHVlLmgiCiAjaW5jbHVkZSA8d3RmL0dyYXBo
Tm9kZVdvcmtsaXN0Lmg+CisjaW5jbHVkZSA8d3RmL0luZGV4TWFwLmg+CiAKIG5hbWVzcGFjZSBK
U0MgeyBuYW1lc3BhY2UgQjMgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNQcm9jZWR1cmUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Byb2NlZHVyZS5o
CmluZGV4IDU3NjQxM2UxMDkwYTg0NzdlMzRkNDIzNThjNjk4NDY1YzFhZDU5MWQuLmUyZTEzNGRh
YmVjZDAzNzQ5ZmU3YTk3ZjQ4OGJlOGZhMGJjYzQ4ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM1Byb2NlZHVyZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM1Byb2NlZHVyZS5oCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSA8d3RmL0JhZy5oPgog
I2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNp
bmNsdWRlIDx3dGYvSW5kZXhlZENvbnRhaW5lckl0ZXJhdG9yLmg+CiAjaW5jbHVkZSA8d3RmL05v
bmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CiAjaW5jbHVkZSA8d3Rm
L1NoYXJlZFRhc2suaD4KQEAgLTEzMyw1MyArMTM0LDcgQEAgY2xhc3MgUHJvY2VkdXJlIHsKICAg
ICBCYXNpY0Jsb2NrKiBhdCh1bnNpZ25lZCBpbmRleCkgY29uc3QgeyByZXR1cm4gbV9ibG9ja3Nb
aW5kZXhdLmdldCgpOyB9CiAgICAgQmFzaWNCbG9jayogb3BlcmF0b3JbXSh1bnNpZ25lZCBpbmRl
eCkgY29uc3QgeyByZXR1cm4gYXQoaW5kZXgpOyB9CiAKLSAgICBjbGFzcyBpdGVyYXRvciB7Ci0g
ICAgcHVibGljOgotICAgICAgICBpdGVyYXRvcigpCi0gICAgICAgICAgICA6IG1fcHJvY2VkdXJl
KG51bGxwdHIpCi0gICAgICAgICAgICAsIG1faW5kZXgoMCkKLSAgICAgICAgewotICAgICAgICB9
Ci0KLSAgICAgICAgaXRlcmF0b3IoY29uc3QgUHJvY2VkdXJlJiBwcm9jZWR1cmUsIHVuc2lnbmVk
IGluZGV4KQotICAgICAgICAgICAgOiBtX3Byb2NlZHVyZSgmcHJvY2VkdXJlKQotICAgICAgICAg
ICAgLCBtX2luZGV4KGZpbmROZXh0KGluZGV4KSkKLSAgICAgICAgewotICAgICAgICB9Ci0KLSAg
ICAgICAgQmFzaWNCbG9jayogb3BlcmF0b3IqKCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0
dXJuIG1fcHJvY2VkdXJlLT5hdChtX2luZGV4KTsKLSAgICAgICAgfQotCi0gICAgICAgIGl0ZXJh
dG9yJiBvcGVyYXRvcisrKCkKLSAgICAgICAgewotICAgICAgICAgICAgbV9pbmRleCA9IGZpbmRO
ZXh0KG1faW5kZXggKyAxKTsKLSAgICAgICAgICAgIHJldHVybiAqdGhpczsKLSAgICAgICAgfQot
Ci0gICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBpdGVyYXRvciYgb3RoZXIpIGNvbnN0Ci0g
ICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVChtX3Byb2NlZHVyZSA9PSBvdGhlci5tX3Byb2Nl
ZHVyZSk7Ci0gICAgICAgICAgICByZXR1cm4gbV9pbmRleCA9PSBvdGhlci5tX2luZGV4OwotICAg
ICAgICB9Ci0gICAgICAgIAotICAgICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgaXRlcmF0b3Im
IG90aGVyKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBv
dGhlcik7Ci0gICAgICAgIH0KLQotICAgIHByaXZhdGU6Ci0gICAgICAgIHVuc2lnbmVkIGZpbmRO
ZXh0KHVuc2lnbmVkIGluZGV4KQotICAgICAgICB7Ci0gICAgICAgICAgICB3aGlsZSAoaW5kZXgg
PCBtX3Byb2NlZHVyZS0+c2l6ZSgpICYmICFtX3Byb2NlZHVyZS0+YXQoaW5kZXgpKQotICAgICAg
ICAgICAgICAgIGluZGV4Kys7Ci0gICAgICAgICAgICByZXR1cm4gaW5kZXg7Ci0gICAgICAgIH0K
LQotICAgICAgICBjb25zdCBQcm9jZWR1cmUqIG1fcHJvY2VkdXJlOwotICAgICAgICB1bnNpZ25l
ZCBtX2luZGV4OwotICAgIH07CisgICAgdHlwZWRlZiBXVEY6OkluZGV4ZWRDb250YWluZXJJdGVy
YXRvcjxQcm9jZWR1cmU+IGl0ZXJhdG9yOwogCiAgICAgaXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7
IHJldHVybiBpdGVyYXRvcigqdGhpcywgMCk7IH0KICAgICBpdGVyYXRvciBlbmQoKSBjb25zdCB7
IHJldHVybiBpdGVyYXRvcigqdGhpcywgc2l6ZSgpKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzUmVkdWNlRG91YmxlVG9GbG9hdC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNSZWR1Y2VEb3VibGVUb0Zsb2F0LmNwcAppbmRleCBiZDdjZDA5MGM2YTYz
ZjdiOWQxMzA3ZDRmYTM2Nzk2YTFiOTU3MzI2Li44ZWNlMzg5Y2EyZWZkNTM4OWRjOTAyZGYzMTU2
MWY5NTYzZDM1OTcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNSZWR1
Y2VEb3VibGVUb0Zsb2F0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNSZWR1
Y2VEb3VibGVUb0Zsb2F0LmNwcApAQCAtMjksMTEgKzI5LDExIEBACiAjaWYgRU5BQkxFKEIzX0pJ
VCkKIAogI2luY2x1ZGUgIkIzQmFzaWNCbG9jay5oIgotI2luY2x1ZGUgIkIzSW5kZXhTZXQuaCIK
ICNpbmNsdWRlICJCM0luc2VydGlvblNldElubGluZXMuaCIKICNpbmNsdWRlICJCM1BoYXNlU2Nv
cGUuaCIKICNpbmNsdWRlICJCM1VzZUNvdW50cy5oIgogI2luY2x1ZGUgIkIzVmFsdWVJbmxpbmVz
LmgiCisjaW5jbHVkZSA8d3RmL0luZGV4U2V0Lmg+CiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3Bh
Y2UgQjMgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNSZWR1Y2VT
dHJlbmd0aC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNSZWR1Y2VTdHJlbmd0aC5j
cHAKaW5kZXggNGNiZjI1Mjg4NmI5N2NjYmZiMzc2NDA1N2Y5ZjYwNDJjNmExZTVhMC4uMGJkMWVh
MGI0OGNlMTlhNjBiZWY3MjZkYmU5ODg1MDNlOTQ4Y2QwNiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzUmVkdWNlU3RyZW5ndGguY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM1JlZHVjZVN0cmVuZ3RoLmNwcApAQCAtMzIsNyArMzIsNiBAQAogI2luY2x1
ZGUgIkIzQmxvY2tJbnNlcnRpb25TZXQuaCIKICNpbmNsdWRlICJCM0NvbXB1dGVEaXZpc2lvbk1h
Z2ljLmgiCiAjaW5jbHVkZSAiQjNEb21pbmF0b3JzLmgiCi0jaW5jbHVkZSAiQjNJbmRleFNldC5o
IgogI2luY2x1ZGUgIkIzSW5zZXJ0aW9uU2V0SW5saW5lcy5oIgogI2luY2x1ZGUgIkIzTWVtb3J5
VmFsdWUuaCIKICNpbmNsdWRlICJCM1BoYXNlU2NvcGUuaCIKQEAgLTQ4LDYgKzQ3LDcgQEAKICNp
bmNsdWRlICJCM1ZhcmlhYmxlVmFsdWUuaCIKICNpbmNsdWRlIDx3dGYvR3JhcGhOb2RlV29ya2xp
c3QuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9JbmRleFNldC5o
PgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzU1NBQ2FsY3VsYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzU1NBQ2FsY3VsYXRvci5oCmluZGV4IGY1NzY2ODIyZjRmZmMzNmJkNmEyMmE5Nzcw
ZjIwMjBkZjUxMjQ0NmIuLjFlOTYyODI2MmZmM2ZlZDIyOTAzMWFlYTNkMTdkMGI2ODEyYWZmMzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1NTQUNhbGN1bGF0b3IuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNTU0FDYWxjdWxhdG9yLmgKQEAgLTI5LDkg
KzI5LDkgQEAKICNpZiBFTkFCTEUoQjNfSklUKQogCiAjaW5jbHVkZSAiQjNEb21pbmF0b3JzLmgi
Ci0jaW5jbHVkZSAiQjNJbmRleE1hcC5oIgogI2luY2x1ZGUgIkIzUHJvY2VkdXJlSW5saW5lcy5o
IgogI2luY2x1ZGUgPHd0Zi9CYWcuaD4KKyNpbmNsdWRlIDx3dGYvSW5kZXhNYXAuaD4KICNpbmNs
dWRlIDx3dGYvU2VnbWVudGVkVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2Ug
QjMgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVXNlQ291bnRzLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNVc2VDb3VudHMuaAppbmRleCBhNTlkNThhYTQ2
YzYyNzI4NTdlODI5ZDM4YTE0ZWYwODA3YjczN2U5Li42ZTllNDgyYjc5OWQyNDBiMGU2NTk1NmVm
NDViYjQ2ODQzM2ZmZjZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNV
c2VDb3VudHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNVc2VDb3VudHMuaApA
QCAtMjgsOCArMjgsOCBAQAogCiAjaWYgRU5BQkxFKEIzX0pJVCkKIAotI2luY2x1ZGUgIkIzSW5k
ZXhNYXAuaCIKICNpbmNsdWRlICJCM1ZhbHVlLmgiCisjaW5jbHVkZSA8d3RmL0luZGV4TWFwLmg+
CiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgewogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckNvZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9haXIvQWlyQ29kZS5oCmluZGV4IDY0YTc0NWQwMjEwYjZhN2ZjYjdhOTM1MWIxMzBhZTA5YTI2
ZDI1MGQuLmYxOWVmYjI4MDJmNmFkNTU4ZWU4N2JkZTJlNmFiNjI0OGI2MTVhMGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQ29kZS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQ29kZS5oCkBAIC0zMywxMSArMzMsMTEgQEAKICNpbmNs
dWRlICJBaXJTcGVjaWFsLmgiCiAjaW5jbHVkZSAiQWlyU3RhY2tTbG90LmgiCiAjaW5jbHVkZSAi
QWlyVG1wLmgiCi0jaW5jbHVkZSAiQjNJbmRleE1hcC5oIgogI2luY2x1ZGUgIkIzU3BhcnNlQ29s
bGVjdGlvbi5oIgogI2luY2x1ZGUgIkNDYWxsSGVscGVycy5oIgogI2luY2x1ZGUgIlJlZ2lzdGVy
QXRPZmZzZXRMaXN0LmgiCiAjaW5jbHVkZSAiU3RhY2tBbGlnbm1lbnQuaCIKKyNpbmNsdWRlIDx3
dGYvSW5kZXhNYXAuaD4KIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRWxpbWluYXRlRGVhZENvZGUu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJFbGltaW5hdGVEZWFkQ29kZS5j
cHAKaW5kZXggMzY2M2VhYTk5Nzk2N2Y1N2U0NTFiYjYxYTQ2ZDlhZGMzMDAxM2I3NS4uY2EzNmFm
OTNlNzkxMDc5OWNjN2JkNDgxMWIzMDc0NTY1YzczOGYzMCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJFbGltaW5hdGVEZWFkQ29kZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJFbGltaW5hdGVEZWFkQ29kZS5jcHAKQEAgLTMxLDcg
KzMxLDcgQEAKICNpbmNsdWRlICJBaXJDb2RlLmgiCiAjaW5jbHVkZSAiQWlySW5zdElubGluZXMu
aCIKICNpbmNsdWRlICJBaXJQaGFzZVNjb3BlLmgiCi0jaW5jbHVkZSAiQjNJbmRleFNldC5oIgor
I2luY2x1ZGUgPHd0Zi9JbmRleFNldC5oPgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIz
IHsgbmFtZXNwYWNlIEFpciB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9haXIvQWlyRml4T2J2aW91c1NwaWxscy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
YWlyL0FpckZpeE9idmlvdXNTcGlsbHMuY3BwCmluZGV4IDcxZDk5MGYyMWVmNjQ2MDY0ZDEyOTNm
MGRiMGY3YTFlZDBiMGViYTQuLmJhYmQxNzM1OGJhOGY0OWIzNDRiZTVkYTZmMGNmNmFmMzBiNDU2
NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyRml4T2J2aW91
c1NwaWxscy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJGaXhPYnZp
b3VzU3BpbGxzLmNwcApAQCAtMzIsNyArMzIsNyBAQAogI2luY2x1ZGUgIkFpckNvZGUuaCIKICNp
bmNsdWRlICJBaXJJbnN0SW5saW5lcy5oIgogI2luY2x1ZGUgIkFpclBoYXNlU2NvcGUuaCIKLSNp
bmNsdWRlICJCM0luZGV4TWFwLmgiCisjaW5jbHVkZSA8d3RmL0luZGV4TWFwLmg+CiAjaW5jbHVk
ZSA8d3RmL0xpc3REdW1wLmg+CiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgeyBuYW1l
c3BhY2UgQWlyIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWly
Rml4UGFydGlhbFJlZ2lzdGVyU3RhbGxzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9h
aXIvQWlyRml4UGFydGlhbFJlZ2lzdGVyU3RhbGxzLmNwcAppbmRleCBlZDdiODBhMGM4YjQ2YWEy
NGNiYWM2ZDk3YmUzOWRhZDZkMjE3Y2ZiLi41Mzk5Nzk5MmQ4NmNiNzIwM2JjMGVjODM0YzBmODZk
NGYxNTVjNDM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckZp
eFBhcnRpYWxSZWdpc3RlclN0YWxscy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L2Fpci9BaXJGaXhQYXJ0aWFsUmVnaXN0ZXJTdGFsbHMuY3BwCkBAIC0zNCw5ICszNCw5IEBACiAj
aW5jbHVkZSAiQWlySW5zdC5oIgogI2luY2x1ZGUgIkFpckluc3RJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiQWlyUGhhc2VTY29wZS5oIgotI2luY2x1ZGUgIkIzSW5kZXhNYXAuaCIKLSNpbmNsdWRlICJC
M0luZGV4U2V0LmgiCiAjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXIuaCIKKyNpbmNsdWRlIDx3dGYv
SW5kZXhNYXAuaD4KKyNpbmNsdWRlIDx3dGYvSW5kZXhTZXQuaD4KICNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgeyBuYW1lc3BhY2UgQWlyIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyR2VuZXJhdGUuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJHZW5lcmF0ZS5jcHAKaW5kZXggNDEx
ODQxMjFjODUwYzM3YjUzNjE4ZGZlOGJhMzk0ZjQ0MDdiZGEwMC4uMGExOGFkYTYwY2I2ZDU1MjA5
MzI5ZDljNjc2ZjdhZTg5ZDJjYjEzNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL2Fpci9BaXJHZW5lcmF0ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fp
ci9BaXJHZW5lcmF0ZS5jcHAKQEAgLTQ4LDEzICs0OCwxMyBAQAogI2luY2x1ZGUgIkFpclNwaWxs
RXZlcnl0aGluZy5oIgogI2luY2x1ZGUgIkFpclZhbGlkYXRlLmgiCiAjaW5jbHVkZSAiQjNDb21t
b24uaCIKLSNpbmNsdWRlICJCM0luZGV4TWFwLmgiCiAjaW5jbHVkZSAiQjNQcm9jZWR1cmUuaCIK
ICNpbmNsdWRlICJCM1RpbWluZ1Njb3BlLmgiCiAjaW5jbHVkZSAiQjNWYWx1ZUlubGluZXMuaCIK
ICNpbmNsdWRlICJDQ2FsbEhlbHBlcnMuaCIKICNpbmNsdWRlICJEaXNhbGxvd01hY3JvU2NyYXRj
aFJlZ2lzdGVyVXNhZ2UuaCIKICNpbmNsdWRlICJMaW5rQnVmZmVyLmgiCisjaW5jbHVkZSA8d3Rm
L0luZGV4TWFwLmg+CiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgeyBuYW1lc3BhY2Ug
QWlyIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJHZW5l
cmF0aW9uQ29udGV4dC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJHZW5lcmF0
aW9uQ29udGV4dC5oCmluZGV4IGVjYTkwN2YwMWVkZmNmNTEwNjdkOTg5NWQ5MWQ5YzMxNjJmYTM3
ODEuLjdkYzZlMGQzMjQ0N2RmNmIzNTc2ODVkOTg4MTNmMTkzZWU0MjNlNzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyR2VuZXJhdGlvbkNvbnRleHQuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckdlbmVyYXRpb25Db250ZXh0LmgKQEAg
LTI5LDkgKzI5LDkgQEAKICNpZiBFTkFCTEUoQjNfSklUKQogCiAjaW5jbHVkZSAiQWlyQmFzaWNC
bG9jay5oIgotI2luY2x1ZGUgIkIzSW5kZXhNYXAuaCIKICNpbmNsdWRlICJDQ2FsbEhlbHBlcnMu
aCIKICNpbmNsdWRlIDx3dGYvQm94Lmg+CisjaW5jbHVkZSA8d3RmL0luZGV4TWFwLmg+CiAjaW5j
bHVkZSA8d3RmL1NoYXJlZFRhc2suaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyTGl2ZW5lc3MuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyTGl2ZW5lc3MuaAppbmRleCBhYzExOGFhZjVmMjMw
YzhkMGRjOWFiM2M1MmU1YzE2Njk3MWJjOGFlLi5mMDE0NjBhNDE5NWQyYjAwMGNlNWJmYWQwYjJj
N2QxNzU5ZDZjYzQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fp
ckxpdmVuZXNzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJMaXZlbmVz
cy5oCkBAIC0zMyw4ICszMyw4IEBACiAjaW5jbHVkZSAiQWlySW5zdElubGluZXMuaCIKICNpbmNs
dWRlICJBaXJTdGFja1Nsb3QuaCIKICNpbmNsdWRlICJBaXJUbXBJbmxpbmVzLmgiCi0jaW5jbHVk
ZSAiQjNJbmRleE1hcC5oIgotI2luY2x1ZGUgIkIzSW5kZXhTZXQuaCIKKyNpbmNsdWRlIDx3dGYv
SW5kZXhNYXAuaD4KKyNpbmNsdWRlIDx3dGYvSW5kZXhTZXQuaD4KICNpbmNsdWRlIDx3dGYvSW5k
ZXhTcGFyc2VTZXQuaD4KICNpbmNsdWRlIDx3dGYvTGlzdER1bXAuaD4KIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJTcGlsbEV2ZXJ5dGhpbmcuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJTcGlsbEV2ZXJ5dGhpbmcuY3BwCmluZGV4IDNh
MDYzNmRlOWExYmVhYWM5ZGRmYWFjZGM4MzQ0MDc2ZmRlMzNlYzguLjE2NzY3MDU4ZmY1OGZlZDhk
ZmJlOTMxMGMwOTdjMzhjMmZlNWFjNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9haXIvQWlyU3BpbGxFdmVyeXRoaW5nLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvYWlyL0FpclNwaWxsRXZlcnl0aGluZy5jcHAKQEAgLTM1LDcgKzM1LDcgQEAKICNpbmNs
dWRlICJBaXJMaXZlbmVzcy5oIgogI2luY2x1ZGUgIkFpclBoYXNlU2NvcGUuaCIKICNpbmNsdWRl
ICJBaXJSZWdpc3RlclByaW9yaXR5LmgiCi0jaW5jbHVkZSAiQjNJbmRleE1hcC5oIgorI2luY2x1
ZGUgPHd0Zi9JbmRleE1hcC5oPgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsgbmFt
ZXNwYWNlIEFpciB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlu
cy9HZW5lcmF0b3JQcm90b3R5cGUuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMv
R2VuZXJhdG9yUHJvdG90eXBlLmpzCmluZGV4IDNjMTQwNjg3ZGZjN2UwMGVmZTkxYWU4MGIyYWM2
NzZmYTliZjQ4ZjQuLjQ5OWRiZDM5MmU4MzEzZGNkZDg2ZWM4YzE2MDU2OWQ3ZDZmNTQ5YjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9HZW5lcmF0b3JQcm90b3R5
cGUuanMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0dlbmVyYXRvclByb3Rv
dHlwZS5qcwpAQCAtNTEsNyArNTEsNyBAQCBmdW5jdGlvbiBnZW5lcmF0b3JSZXN1bWUoZ2VuZXJh
dG9yLCBzZW50VmFsdWUsIHJlc3VtZU1vZGUpCiAgICAgfSBlbHNlIHsKICAgICAgICAgdHJ5IHsK
ICAgICAgICAgICAgIGdlbmVyYXRvci5AZ2VuZXJhdG9yU3RhdGUgPSBAR2VuZXJhdG9yU3RhdGVF
eGVjdXRpbmc7Ci0gICAgICAgICAgICB2YWx1ZSA9IGdlbmVyYXRvci5AZ2VuZXJhdG9yTmV4dC5A
Y2FsbChnZW5lcmF0b3IuQGdlbmVyYXRvclRoaXMsIGdlbmVyYXRvciwgc3RhdGUsIHNlbnRWYWx1
ZSwgcmVzdW1lTW9kZSk7CisgICAgICAgICAgICB2YWx1ZSA9IGdlbmVyYXRvci5AZ2VuZXJhdG9y
TmV4dC5AY2FsbChnZW5lcmF0b3IuQGdlbmVyYXRvclRoaXMsIGdlbmVyYXRvciwgc3RhdGUsIHNl
bnRWYWx1ZSwgcmVzdW1lTW9kZSwgZ2VuZXJhdG9yLkBnZW5lcmF0b3JGcmFtZSk7CiAgICAgICAg
ICAgICBpZiAoZ2VuZXJhdG9yLkBnZW5lcmF0b3JTdGF0ZSA9PT0gQEdlbmVyYXRvclN0YXRlRXhl
Y3V0aW5nKSB7CiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLkBnZW5lcmF0b3JTdGF0ZSA9IEBH
ZW5lcmF0b3JTdGF0ZUNvbXBsZXRlZDsKICAgICAgICAgICAgICAgICBkb25lID0gdHJ1ZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxv
Y2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9j
ay5jcHAKaW5kZXggZmU1NmQ3OGE3ZGI5YjdiMWNiNTA2OWFlODdkOTBiMmIyNTI0NGYzMS4uZjhh
ZmIyMjc0MTU1YmI4YzYwNjdhODJlOWNiNTViMWIzOWE0MzAwZiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5jcHAKQEAgLTI3
LDcgKzI3LDcgQEAKICNpbmNsdWRlICJCeXRlY29kZUJhc2ljQmxvY2suaCIKIAogI2luY2x1ZGUg
IkNvZGVCbG9jay5oIgotI2luY2x1ZGUgIkludGVycHJldGVyLmgiCisjaW5jbHVkZSAiSW50ZXJw
cmV0ZXJJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIlByZWNp
c2VKdW1wVGFyZ2V0cy5oIgogCkBAIC0zOSwzMyArMzksNiBAQCB2b2lkIEJ5dGVjb2RlQmFzaWNC
bG9jazo6c2hyaW5rVG9GaXQoKQogICAgIG1fc3VjY2Vzc29ycy5zaHJpbmtUb0ZpdCgpOwogfQog
Ci1zdGF0aWMgYm9vbCBpc0JyYW5jaChPcGNvZGVJRCBvcGNvZGVJRCkKLXsKLSAgICBzd2l0Y2gg
KG9wY29kZUlEKSB7Ci0gICAgY2FzZSBvcF9qbXA6Ci0gICAgY2FzZSBvcF9qdHJ1ZToKLSAgICBj
YXNlIG9wX2pmYWxzZToKLSAgICBjYXNlIG9wX2plcV9udWxsOgotICAgIGNhc2Ugb3Bfam5lcV9u
dWxsOgotICAgIGNhc2Ugb3Bfam5lcV9wdHI6Ci0gICAgY2FzZSBvcF9qbGVzczoKLSAgICBjYXNl
IG9wX2psZXNzZXE6Ci0gICAgY2FzZSBvcF9qZ3JlYXRlcjoKLSAgICBjYXNlIG9wX2pncmVhdGVy
ZXE6Ci0gICAgY2FzZSBvcF9qbmxlc3M6Ci0gICAgY2FzZSBvcF9qbmxlc3NlcToKLSAgICBjYXNl
IG9wX2puZ3JlYXRlcjoKLSAgICBjYXNlIG9wX2puZ3JlYXRlcmVxOgotICAgIGNhc2Ugb3Bfc3dp
dGNoX2ltbToKLSAgICBjYXNlIG9wX3N3aXRjaF9jaGFyOgotICAgIGNhc2Ugb3Bfc3dpdGNoX3N0
cmluZzoKLSAgICBjYXNlIG9wX3NhdmU6Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIGRlZmF1
bHQ6Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci19Ci0KIHN0YXRpYyBib29sIGlzVW5j
b25kaXRpb25hbEJyYW5jaChPcGNvZGVJRCBvcGNvZGVJRCkKIHsKICAgICBzd2l0Y2ggKG9wY29k
ZUlEKSB7CkBAIC0xMDYsMTUgKzc5LDIwIEBAIHN0YXRpYyBib29sIGlzSnVtcFRhcmdldChPcGNv
ZGVJRCBvcGNvZGVJRCwgY29uc3QgVmVjdG9yPHVuc2lnbmVkLCAzMj4mIGp1bXBUYXJnCiAgICAg
cmV0dXJuIHN0ZDo6YmluYXJ5X3NlYXJjaChqdW1wVGFyZ2V0cy5iZWdpbigpLCBqdW1wVGFyZ2V0
cy5lbmQoKSwgYnl0ZWNvZGVPZmZzZXQpOwogfQogCi1zdGF0aWMgdm9pZCBsaW5rQmxvY2tzKEJ5
dGVjb2RlQmFzaWNCbG9jayogcHJlZGVjZXNzb3IsIEJ5dGVjb2RlQmFzaWNCbG9jayogc3VjY2Vz
c29yKQotewotICAgIHByZWRlY2Vzc29yLT5hZGRTdWNjZXNzb3Ioc3VjY2Vzc29yKTsKLX0KLQot
dm9pZCBjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2NrcyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgVmVj
dG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9ja3MpCit0
ZW1wbGF0ZTx0eXBlbmFtZSBCbG9jaywgdHlwZW5hbWUgSW5zdHJ1Y3Rpb24+Cit2b2lkIEJ5dGVj
b2RlQmFzaWNCbG9jazo6Y29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3NJbnRlcm5hbChCbG9jayog
Y29kZUJsb2NrLCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGluc3Ry
dWN0aW9uQ291bnQsIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4m
IGJhc2ljQmxvY2tzKQogewogICAgIFZlY3Rvcjx1bnNpZ25lZCwgMzI+IGp1bXBUYXJnZXRzOwot
ICAgIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMoY29kZUJsb2NrLCBqdW1wVGFyZ2V0cyk7Cisg
ICAgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhjb2RlQmxvY2ssIGluc3RydWN0aW9uc0JlZ2lu
LCBpbnN0cnVjdGlvbkNvdW50LCBqdW1wVGFyZ2V0cyk7CisKKyAgICBhdXRvIGFwcGVuZEJsb2Nr
ID0gWyZdIChzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiYmIGJsb2NrKSB7Cisg
ICAgICAgIGJsb2NrLT5tX2luZGV4ID0gYmFzaWNCbG9ja3Muc2l6ZSgpOworICAgICAgICBiYXNp
Y0Jsb2Nrcy5hcHBlbmQoV1RGTW92ZShibG9jaykpOworICAgIH07CisKKyAgICBhdXRvIGxpbmtC
bG9ja3MgPSBbJl0gKEJ5dGVjb2RlQmFzaWNCbG9jayogZnJvbSwgQnl0ZWNvZGVCYXNpY0Jsb2Nr
KiB0bykgeworICAgICAgICBmcm9tLT5hZGRTdWNjZXNzb3IodG8pOworICAgIH07CiAKICAgICAv
LyBDcmVhdGUgdGhlIGVudHJ5IGFuZCBleGl0IGJhc2ljIGJsb2Nrcy4KICAgICBiYXNpY0Jsb2Nr
cy5yZXNlcnZlQ2FwYWNpdHkoanVtcFRhcmdldHMuc2l6ZSgpICsgMik7CkBAIC0xMjMsMTkgKzEw
MSwxNyBAQCB2b2lkIGNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzKENvZGVCbG9jayogY29kZUJs
b2NrLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dAogICAgIGF1dG8gZmlyc3RCbG9jayA9IHN0
ZDo6bWFrZV91bmlxdWU8Qnl0ZWNvZGVCYXNpY0Jsb2NrPigwLCAwKTsKICAgICBsaW5rQmxvY2tz
KGVudHJ5LmdldCgpLCBmaXJzdEJsb2NrLmdldCgpKTsKIAotICAgIGJhc2ljQmxvY2tzLmFwcGVu
ZChXVEZNb3ZlKGVudHJ5KSk7CisgICAgYXBwZW5kQmxvY2soV1RGTW92ZShlbnRyeSkpOwogICAg
IEJ5dGVjb2RlQmFzaWNCbG9jayogY3VycmVudCA9IGZpcnN0QmxvY2suZ2V0KCk7Ci0gICAgYmFz
aWNCbG9ja3MuYXBwZW5kKFdURk1vdmUoZmlyc3RCbG9jaykpOworICAgIGFwcGVuZEJsb2NrKFdU
Rk1vdmUoZmlyc3RCbG9jaykpOwogCiAgICAgYXV0byBleGl0ID0gc3RkOjptYWtlX3VuaXF1ZTxC
eXRlY29kZUJhc2ljQmxvY2s+KEJ5dGVjb2RlQmFzaWNCbG9jazo6RXhpdEJsb2NrKTsKIAogICAg
IGJvb2wgbmV4dEluc3RydWN0aW9uSXNMZWFkZXIgPSBmYWxzZTsKIAogICAgIEludGVycHJldGVy
KiBpbnRlcnByZXRlciA9IGNvZGVCbG9jay0+dm0oKS0+aW50ZXJwcmV0ZXI7Ci0gICAgSW5zdHJ1
Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luID0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdp
bigpOwotICAgIHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQgPSBjb2RlQmxvY2stPmluc3RydWN0
aW9ucygpLnNpemUoKTsKICAgICBmb3IgKHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0ID0gMDsgYnl0
ZWNvZGVPZmZzZXQgPCBpbnN0cnVjdGlvbkNvdW50OykgewotICAgICAgICBPcGNvZGVJRCBvcGNv
ZGVJRCA9IGludGVycHJldGVyLT5nZXRPcGNvZGVJRChpbnN0cnVjdGlvbnNCZWdpbltieXRlY29k
ZU9mZnNldF0udS5vcGNvZGUpOworICAgICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGludGVycHJl
dGVyLT5nZXRPcGNvZGVJRChpbnN0cnVjdGlvbnNCZWdpbltieXRlY29kZU9mZnNldF0pOwogICAg
ICAgICB1bnNpZ25lZCBvcGNvZGVMZW5ndGggPSBvcGNvZGVMZW5ndGhzW29wY29kZUlEXTsKIAog
ICAgICAgICBib29sIGNyZWF0ZWRCbG9jayA9IGZhbHNlOwpAQCAtMTQzLDcgKzExOSw3IEBAIHZv
aWQgY29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFZlY3Rv
cjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0CiAgICAgICAgIGlmIChpc0p1bXBUYXJnZXQob3Bjb2RlSUQs
IGp1bXBUYXJnZXRzLCBieXRlY29kZU9mZnNldCkgfHwgbmV4dEluc3RydWN0aW9uSXNMZWFkZXIp
IHsKICAgICAgICAgICAgIGF1dG8gbmV3QmxvY2sgPSBzdGQ6Om1ha2VfdW5pcXVlPEJ5dGVjb2Rl
QmFzaWNCbG9jaz4oYnl0ZWNvZGVPZmZzZXQsIG9wY29kZUxlbmd0aCk7CiAgICAgICAgICAgICBj
dXJyZW50ID0gbmV3QmxvY2suZ2V0KCk7Ci0gICAgICAgICAgICBiYXNpY0Jsb2Nrcy5hcHBlbmQo
V1RGTW92ZShuZXdCbG9jaykpOworICAgICAgICAgICAgYXBwZW5kQmxvY2soV1RGTW92ZShuZXdC
bG9jaykpOwogICAgICAgICAgICAgY3JlYXRlZEJsb2NrID0gdHJ1ZTsKICAgICAgICAgICAgIG5l
eHRJbnN0cnVjdGlvbklzTGVhZGVyID0gZmFsc2U7CiAgICAgICAgICAgICBieXRlY29kZU9mZnNl
dCArPSBvcGNvZGVMZW5ndGg7CkBAIC0xNzAsOCArMTQ2LDcgQEAgdm9pZCBjb21wdXRlQnl0ZWNv
ZGVCYXNpY0Jsb2NrcyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0
cjxCeXQKIAogICAgICAgICBib29sIGZhbGxzVGhyb3VnaCA9IHRydWU7IAogICAgICAgICBmb3Ig
KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0ID0gYmxvY2stPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCk7
IGJ5dGVjb2RlT2Zmc2V0IDwgYmxvY2stPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCkgKyBibG9jay0+
dG90YWxCeXRlY29kZUxlbmd0aCgpOykgewotICAgICAgICAgICAgY29uc3QgSW5zdHJ1Y3Rpb24m
IGN1cnJlbnRJbnN0cnVjdGlvbiA9IGluc3RydWN0aW9uc0JlZ2luW2J5dGVjb2RlT2Zmc2V0XTsK
LSAgICAgICAgICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0ZXItPmdldE9wY29kZUlE
KGN1cnJlbnRJbnN0cnVjdGlvbi51Lm9wY29kZSk7CisgICAgICAgICAgICBPcGNvZGVJRCBvcGNv
ZGVJRCA9IGludGVycHJldGVyLT5nZXRPcGNvZGVJRChpbnN0cnVjdGlvbnNCZWdpbltieXRlY29k
ZU9mZnNldF0pOwogICAgICAgICAgICAgdW5zaWduZWQgb3Bjb2RlTGVuZ3RoID0gb3Bjb2RlTGVu
Z3Roc1tvcGNvZGVJRF07CiAgICAgICAgICAgICAvLyBJZiB3ZSBmb3VuZCBhIHRlcm1pbmFsIGJ5
dGVjb2RlLCBsaW5rIHRvIHRoZSBleGl0IGJsb2NrLgogICAgICAgICAgICAgaWYgKGlzVGVybWlu
YWwob3Bjb2RlSUQpKSB7CkBAIC0xODYsNyArMTYxLDcgQEAgdm9pZCBjb21wdXRlQnl0ZWNvZGVC
YXNpY0Jsb2NrcyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxC
eXQKICAgICAgICAgICAgIC8vIGJsb2NrIGJlY2F1c2UgdGhlIGZpbmFsbHkgYmxvY2sgd2lsbCBj
cmVhdGUgaXRzIG93biBjYXRjaCwgd2hpY2ggd2lsbCBnZW5lcmF0ZSBhIEhhbmRsZXJJbmZvLgog
ICAgICAgICAgICAgaWYgKGlzVGhyb3cob3Bjb2RlSUQpKSB7CiAgICAgICAgICAgICAgICAgQVNT
RVJUKGJ5dGVjb2RlT2Zmc2V0ICsgb3Bjb2RlTGVuZ3RoID09IGJsb2NrLT5sZWFkZXJCeXRlY29k
ZU9mZnNldCgpICsgYmxvY2stPnRvdGFsQnl0ZWNvZGVMZW5ndGgoKSk7Ci0gICAgICAgICAgICAg
ICAgSGFuZGxlckluZm8qIGhhbmRsZXIgPSBjb2RlQmxvY2stPmhhbmRsZXJGb3JCeXRlY29kZU9m
ZnNldChieXRlY29kZU9mZnNldCk7CisgICAgICAgICAgICAgICAgYXV0byogaGFuZGxlciA9IGNv
ZGVCbG9jay0+aGFuZGxlckZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KTsKICAgICAg
ICAgICAgICAgICBmYWxsc1Rocm91Z2ggPSBmYWxzZTsKICAgICAgICAgICAgICAgICBpZiAoIWhh
bmRsZXIpIHsKICAgICAgICAgICAgICAgICAgICAgbGlua0Jsb2NrcyhibG9jaywgZXhpdC5nZXQo
KSk7CkBAIC0yMDYsNyArMTgxLDcgQEAgdm9pZCBjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2NrcyhD
b2RlQmxvY2sqIGNvZGVCbG9jaywgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXQKICAgICAgICAg
ICAgIGlmIChpc0JyYW5jaChvcGNvZGVJRCkpIHsKICAgICAgICAgICAgICAgICBBU1NFUlQoYnl0
ZWNvZGVPZmZzZXQgKyBvcGNvZGVMZW5ndGggPT0gYmxvY2stPmxlYWRlckJ5dGVjb2RlT2Zmc2V0
KCkgKyBibG9jay0+dG90YWxCeXRlY29kZUxlbmd0aCgpKTsKICAgICAgICAgICAgICAgICBWZWN0
b3I8dW5zaWduZWQsIDE+IGJ5dGVjb2RlT2Zmc2V0c0p1bXBlZFRvOwotICAgICAgICAgICAgICAg
IGZpbmRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9jaywgYnl0ZWNvZGVPZmZz
ZXQsIGJ5dGVjb2RlT2Zmc2V0c0p1bXBlZFRvKTsKKyAgICAgICAgICAgICAgICBmaW5kSnVtcFRh
cmdldHNGb3JCeXRlY29kZU9mZnNldChjb2RlQmxvY2ssIGluc3RydWN0aW9uc0JlZ2luLCBieXRl
Y29kZU9mZnNldCwgYnl0ZWNvZGVPZmZzZXRzSnVtcGVkVG8pOwogCiAgICAgICAgICAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGJhc2ljQmxvY2tzLnNpemUoKTsgaSsrKSB7CiAgICAg
ICAgICAgICAgICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogb3RoZXJCbG9jayA9IGJhc2ljQmxv
Y2tzW2ldLmdldCgpOwpAQCAtMjMwLDEwICsyMDUsMjAgQEAgdm9pZCBjb21wdXRlQnl0ZWNvZGVC
YXNpY0Jsb2NrcyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxC
eXQKICAgICAgICAgfQogICAgIH0KIAotICAgIGJhc2ljQmxvY2tzLmFwcGVuZChXVEZNb3ZlKGV4
aXQpKTsKKyAgICBhcHBlbmRCbG9jayhXVEZNb3ZlKGV4aXQpKTsKICAgICAKICAgICBmb3IgKGF1
dG8mIGJhc2ljQmxvY2sgOiBiYXNpY0Jsb2NrcykKICAgICAgICAgYmFzaWNCbG9jay0+c2hyaW5r
VG9GaXQoKTsKIH0KIAordm9pZCBCeXRlY29kZUJhc2ljQmxvY2s6OmNvbXB1dGVCeXRlY29kZUJh
c2ljQmxvY2tzKENvZGVCbG9jayogY29kZUJsb2NrLCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25z
QmVnaW4sIHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQsIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8
Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mIGJhc2ljQmxvY2tzKQoreworICAgIGNvbXB1dGVCeXRlY29k
ZUJhc2ljQmxvY2tzSW50ZXJuYWwoY29kZUJsb2NrLCBpbnN0cnVjdGlvbnNCZWdpbiwgaW5zdHJ1
Y3Rpb25Db3VudCwgYmFzaWNCbG9ja3MpOworfQorCit2b2lkIEJ5dGVjb2RlQmFzaWNCbG9jazo6
Y29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MoVW5saW5rZWRDb2RlQmxvY2sqIGNvZGVCbG9jaywg
VW5saW5rZWRJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGluc3RydWN0
aW9uQ291bnQsIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mIGJh
c2ljQmxvY2tzKQoreworICAgIEJ5dGVjb2RlQmFzaWNCbG9jazo6Y29tcHV0ZUJ5dGVjb2RlQmFz
aWNCbG9ja3NJbnRlcm5hbChjb2RlQmxvY2ssIGluc3RydWN0aW9uc0JlZ2luLCBpbnN0cnVjdGlv
bkNvdW50LCBiYXNpY0Jsb2Nrcyk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5oCmluZGV4
IGNkNzE0NzdlZDUwNmFhNzg4MDIxNjVmYWNkYjdhNmQ0NmYzOGRjMmEuLjdmMTg0ZjQ3NzYyMGFj
YWQ3NDUxM2EwNTA4MmQ1NzgyMmRmZDg1MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmgKQEAgLTMzLDYgKzMzLDkgQEAKIG5h
bWVzcGFjZSBKU0MgewogCiBjbGFzcyBDb2RlQmxvY2s7CitjbGFzcyBVbmxpbmtlZENvZGVCbG9j
azsKK3N0cnVjdCBJbnN0cnVjdGlvbjsKK3N0cnVjdCBVbmxpbmtlZEluc3RydWN0aW9uOwogCiBj
bGFzcyBCeXRlY29kZUJhc2ljQmxvY2sgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpA
QCAtNDgsMTggKzUxLDI4IEBAIGNsYXNzIEJ5dGVjb2RlQmFzaWNCbG9jayB7CiAgICAgdW5zaWdu
ZWQgbGVhZGVyQnl0ZWNvZGVPZmZzZXQoKSB7IHJldHVybiBtX2xlYWRlckJ5dGVjb2RlT2Zmc2V0
OyB9CiAgICAgdW5zaWduZWQgdG90YWxCeXRlY29kZUxlbmd0aCgpIHsgcmV0dXJuIG1fdG90YWxC
eXRlY29kZUxlbmd0aDsgfQogCi0gICAgVmVjdG9yPHVuc2lnbmVkPiYgYnl0ZWNvZGVPZmZzZXRz
KCkgeyByZXR1cm4gbV9ieXRlY29kZU9mZnNldHM7IH0KLSAgICB2b2lkIGFkZEJ5dGVjb2RlTGVu
Z3RoKHVuc2lnbmVkKTsKKyAgICBjb25zdCBWZWN0b3I8dW5zaWduZWQ+JiBieXRlY29kZU9mZnNl
dHMoKSBjb25zdCB7IHJldHVybiBtX2J5dGVjb2RlT2Zmc2V0czsgfQogCi0gICAgVmVjdG9yPEJ5
dGVjb2RlQmFzaWNCbG9jayo+JiBzdWNjZXNzb3JzKCkgeyByZXR1cm4gbV9zdWNjZXNzb3JzOyB9
Ci0gICAgdm9pZCBhZGRTdWNjZXNzb3IoQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaykgeyBtX3N1
Y2Nlc3NvcnMuYXBwZW5kKGJsb2NrKTsgfQorICAgIGNvbnN0IFZlY3RvcjxCeXRlY29kZUJhc2lj
QmxvY2sqPiYgc3VjY2Vzc29ycygpIGNvbnN0IHsgcmV0dXJuIG1fc3VjY2Vzc29yczsgfQogCiAg
ICAgRmFzdEJpdFZlY3RvciYgaW4oKSB7IHJldHVybiBtX2luOyB9CiAgICAgRmFzdEJpdFZlY3Rv
ciYgb3V0KCkgeyByZXR1cm4gbV9vdXQ7IH0KIAorICAgIHVuc2lnbmVkIGluZGV4KCkgY29uc3Qg
eyByZXR1cm4gbV9pbmRleDsgfQorCisgICAgc3RhdGljIHZvaWQgY29tcHV0ZUJ5dGVjb2RlQmFz
aWNCbG9ja3MoQ29kZUJsb2NrKiwgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1bnNp
Z25lZCBpbnN0cnVjdGlvbkNvdW50LCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFz
aWNCbG9jaz4+Jik7CisgICAgc3RhdGljIHZvaWQgY29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3Mo
VW5saW5rZWRDb2RlQmxvY2sqLCBVbmxpbmtlZEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdp
biwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCwgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRl
Y29kZUJhc2ljQmxvY2s+PiYpOworCiBwcml2YXRlOgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEJs
b2NrLCB0eXBlbmFtZSBJbnN0cnVjdGlvbj4gc3RhdGljIHZvaWQgY29tcHV0ZUJ5dGVjb2RlQmFz
aWNCbG9ja3NJbnRlcm5hbChCbG9jayogY29kZUJsb2NrLCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rp
b25zQmVnaW4sIHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQsIFZlY3RvcjxzdGQ6OnVuaXF1ZV9w
dHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mIGJhc2ljQmxvY2tzKTsKKworICAgIHZvaWQgYWRkU3Vj
Y2Vzc29yKEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2spIHsgbV9zdWNjZXNzb3JzLmFwcGVuZChi
bG9jayk7IH0KKworICAgIHZvaWQgYWRkQnl0ZWNvZGVMZW5ndGgodW5zaWduZWQpOworCiAgICAg
dW5zaWduZWQgbV9sZWFkZXJCeXRlY29kZU9mZnNldDsKICAgICB1bnNpZ25lZCBtX3RvdGFsQnl0
ZWNvZGVMZW5ndGg7CisgICAgdW5zaWduZWQgbV9pbmRleDsKIAogICAgIFZlY3Rvcjx1bnNpZ25l
ZD4gbV9ieXRlY29kZU9mZnNldHM7CiAgICAgVmVjdG9yPEJ5dGVjb2RlQmFzaWNCbG9jayo+IG1f
c3VjY2Vzc29yczsKQEAgLTY4LDggKzgxLDYgQEAgY2xhc3MgQnl0ZWNvZGVCYXNpY0Jsb2NrIHsK
ICAgICBGYXN0Qml0VmVjdG9yIG1fb3V0OwogfTsKIAotdm9pZCBjb21wdXRlQnl0ZWNvZGVCYXNp
Y0Jsb2NrcyhDb2RlQmxvY2sqLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNC
bG9jaz4+Jik7Ci0KIGlubGluZSBCeXRlY29kZUJhc2ljQmxvY2s6OkJ5dGVjb2RlQmFzaWNCbG9j
ayh1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgbGVuZ3RoKQogICAgIDogbV9sZWFkZXJCeXRlY29k
ZU9mZnNldChzdGFydCkKICAgICAsIG1fdG90YWxCeXRlY29kZUxlbmd0aChsZW5ndGgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3Jp
ZmljYXRpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlR2Vu
ZXJhdG9yaWZpY2F0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43OGY3YWJhMTRmNzkyYjRjMmRmYzlmYWJj
NmFkYmYzM2JkYWJhZTE4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcApAQCAtMCwwICsxLDI2MyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBn
bWFpbC5jb20+CisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQnl0ZWNv
ZGVHZW5lcmF0b3JpZmljYXRpb24uaCIKKworI2luY2x1ZGUgIkJ5dGVjb2RlTGl2ZW5lc3NBbmFs
eXNpc0lubGluZXMuaCIKKyNpbmNsdWRlICJCeXRlY29kZVJld3JpdGVyLmgiCisjaW5jbHVkZSAi
Qnl0ZWNvZGVVc2VEZWYuaCIKKyNpbmNsdWRlICJJZGVudGlmaWVySW5saW5lcy5oIgorI2luY2x1
ZGUgIkludGVycHJldGVySW5saW5lcy5oIgorI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNs
dWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTR2VuZXJhdG9yRnVuY3Rpb24u
aCIKKyNpbmNsdWRlICJTdHJvbmdJbmxpbmVzLmgiCisjaW5jbHVkZSAiVW5saW5rZWRDb2RlQmxv
Y2suaCIKKyNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK3N0
cnVjdCBZaWVsZERhdGEgeworICAgIHNpemVfdCBwb2ludCB7IDAgfTsKKyAgICBpbnQgYXJndW1l
bnQgeyAwIH07CisgICAgRmFzdEJpdFZlY3RvciBsaXZlbmVzczsKK307CisKK2NsYXNzIEJ5dGVj
b2RlR2VuZXJhdG9yaWZpY2F0aW9uIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIFZlY3RvcjxZaWVs
ZERhdGE+IFlpZWxkczsKKworICAgIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uKFVubGlua2Vk
Q29kZUJsb2NrKiBjb2RlQmxvY2ssIFVubGlua2VkQ29kZUJsb2NrOjpVbnBhY2tlZEluc3RydWN0
aW9ucyYgaW5zdHJ1Y3Rpb25zLCBTeW1ib2xUYWJsZSogZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJs
ZSwgaW50IGdlbmVyYXRvckZyYW1lU3ltYm9sVGFibGVJbmRleCkKKyAgICAgICAgOiBtX2dyYXBo
KGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb25zKQorICAgICAgICAsIG1fZ2VuZXJhdG9yRnJhbWVTeW1i
b2xUYWJsZSgqY29kZUJsb2NrLT52bSgpLCBnZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlKQorICAg
ICAgICAsIG1fZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZUluZGV4KGdlbmVyYXRvckZyYW1lU3lt
Ym9sVGFibGVJbmRleCkKKyAgICB7CisgICAgICAgIGZvciAoQnl0ZWNvZGVCYXNpY0Jsb2NrKiBi
bG9jayA6IG1fZ3JhcGgpIHsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgYnl0ZWNvZGVPZmZz
ZXQgOiBibG9jay0+Ynl0ZWNvZGVPZmZzZXRzKCkpIHsKKyAgICAgICAgICAgICAgICBjb25zdCBV
bmxpbmtlZEluc3RydWN0aW9uKiBwYyA9ICZtX2dyYXBoLmluc3RydWN0aW9ucygpW2J5dGVjb2Rl
T2Zmc2V0XTsKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKHBjLT51Lm9wY29kZSkgeworICAgICAg
ICAgICAgICAgIGNhc2Ugb3BfZW50ZXI6IHsKKyAgICAgICAgICAgICAgICAgICAgbV9lbnRlclBv
aW50ID0gYnl0ZWNvZGVPZmZzZXQ7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGNhc2Ugb3BfeWllbGQ6IHsKKyAgICAgICAg
ICAgICAgICAgICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gcGNbMl0udS5pbmRl
eDsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxpdmVDYWxsZWVMb2NhbHNJbmRleCA+PSBtX3lp
ZWxkcy5zaXplKCkpCisgICAgICAgICAgICAgICAgICAgICAgICBtX3lpZWxkcy5yZXNpemUobGl2
ZUNhbGxlZUxvY2Fsc0luZGV4ICsgMSk7CisgICAgICAgICAgICAgICAgICAgIFlpZWxkRGF0YSYg
ZGF0YSA9IG1feWllbGRzW2xpdmVDYWxsZWVMb2NhbHNJbmRleF07CisgICAgICAgICAgICAgICAg
ICAgIGRhdGEucG9pbnQgPSBieXRlY29kZU9mZnNldDsKKyAgICAgICAgICAgICAgICAgICAgZGF0
YS5hcmd1bWVudCA9IHBjWzNdLnUub3BlcmFuZDsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgfQorCisgICAgc3RydWN0IFN0b3JhZ2UgeworICAgICAgICBJZGVudGlmaWVy
IGlkZW50aWZpZXI7CisgICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXJJbmRleDsKKyAgICAgICAg
U2NvcGVPZmZzZXQgc2NvcGVPZmZzZXQ7CisgICAgfTsKKworICAgIHZvaWQgcnVuKCk7CisKKyAg
ICBCeXRlY29kZUdyYXBoPFVubGlua2VkQ29kZUJsb2NrPiYgZ3JhcGgoKSB7IHJldHVybiBtX2dy
YXBoOyB9CisKKyAgICBjb25zdCBZaWVsZHMmIHlpZWxkcygpIGNvbnN0CisgICAgeworICAgICAg
ICByZXR1cm4gbV95aWVsZHM7CisgICAgfQorCisgICAgWWllbGRzJiB5aWVsZHMoKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIG1feWllbGRzOworICAgIH0KKworICAgIHVuc2lnbmVkIGVudGVyUG9p
bnQoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZW50ZXJQb2ludDsKKyAgICB9CisK
K3ByaXZhdGU6CisgICAgU3RvcmFnZSBzdG9yYWdlRm9yR2VuZXJhdG9yTG9jYWwodW5zaWduZWQg
aW5kZXgpCisgICAgeworICAgICAgICAvLyBXZSBhc3NpZ24gYSBzeW1ib2wgdG8gYSByZWdpc3Rl
ci4gVGhlcmUgaXMgb25lLW9uLW9uZSBjb3JyZXNwb25kaW5nIGJldHdlZW4gYSByZWdpc3RlciBh
bmQgYSBzeW1ib2wuCisgICAgICAgIC8vIEJ5IGRvaW5nIHNvLCB3ZSBhbGxvY2F0ZSB0aGUgc3Bl
Y2lmaWMgc3RvcmFnZSB0byBzYXZlIHRoZSBnaXZlbiByZWdpc3Rlci4KKyAgICAgICAgLy8gVGhp
cyBhbGxvdyB1cyBub3QgdG8gc2F2ZSBhbGwgdGhlIGxpdmUgcmVnaXN0ZXJzIGV2ZW4gaWYgdGhl
IHJlZ2lzdGVycyBhcmUgbm90IG92ZXJ3cml0dGVuIGZyb20gdGhlIHByZXZpb3VzIHJlc3VtaW5n
IHRpbWUuCisgICAgICAgIC8vIEl0IG1lYW5zIHRoYXQsIHRoZSByZWdpc3RlciBjYW4gYmUgcmV0
cmlldmVkIGV2ZW4gaWYgdGhlIGltbWVkaWF0ZSBwcmV2aW91cyBvcF9zYXZlIGRvZXMgbm90IHNh
dmUgaXQuCisKKyAgICAgICAgaWYgKG1fc3RvcmFnZXMuc2l6ZSgpIDw9IGluZGV4KQorICAgICAg
ICAgICAgbV9zdG9yYWdlcy5yZXNpemUoaW5kZXggKyAxKTsKKyAgICAgICAgaWYgKE9wdGlvbmFs
PFN0b3JhZ2U+IHN0b3JhZ2UgPSBtX3N0b3JhZ2VzW2luZGV4XSkKKyAgICAgICAgICAgIHJldHVy
biAqc3RvcmFnZTsKKworICAgICAgICBVbmxpbmtlZENvZGVCbG9jayogY29kZUJsb2NrID0gbV9n
cmFwaC5jb2RlQmxvY2soKTsKKyAgICAgICAgSWRlbnRpZmllciBpZGVudGlmaWVyID0gSWRlbnRp
Zmllcjo6ZnJvbVVpZChQcml2YXRlTmFtZSgpKTsKKyAgICAgICAgdW5zaWduZWQgaWRlbnRpZmll
ckluZGV4ID0gY29kZUJsb2NrLT5udW1iZXJPZklkZW50aWZpZXJzKCk7CisgICAgICAgIGNvZGVC
bG9jay0+YWRkSWRlbnRpZmllcihpZGVudGlmaWVyKTsKKyAgICAgICAgU2NvcGVPZmZzZXQgc2Nv
cGVPZmZzZXQgPSBtX2dlbmVyYXRvckZyYW1lU3ltYm9sVGFibGUtPnRha2VOZXh0U2NvcGVPZmZz
ZXQoTm9Mb2NraW5nTmVjZXNzYXJ5KTsKKyAgICAgICAgbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRh
YmxlLT5zZXQoTm9Mb2NraW5nTmVjZXNzYXJ5LCBpZGVudGlmaWVyLmltcGwoKSwgU3ltYm9sVGFi
bGVFbnRyeShWYXJPZmZzZXQoc2NvcGVPZmZzZXQpKSk7CisKKyAgICAgICAgU3RvcmFnZSBzdG9y
YWdlID0geworICAgICAgICAgICAgaWRlbnRpZmllciwKKyAgICAgICAgICAgIGlkZW50aWZpZXJJ
bmRleCwKKyAgICAgICAgICAgIHNjb3BlT2Zmc2V0CisgICAgICAgIH07CisgICAgICAgIG1fc3Rv
cmFnZXNbaW5kZXhdID0gc3RvcmFnZTsKKyAgICAgICAgcmV0dXJuIHN0b3JhZ2U7CisgICAgfQor
CisgICAgdW5zaWduZWQgbV9lbnRlclBvaW50IHsgMCB9OworICAgIEJ5dGVjb2RlR3JhcGg8VW5s
aW5rZWRDb2RlQmxvY2s+IG1fZ3JhcGg7CisgICAgVmVjdG9yPE9wdGlvbmFsPFN0b3JhZ2U+PiBt
X3N0b3JhZ2VzOworICAgIFlpZWxkcyBtX3lpZWxkczsKKyAgICBTdHJvbmc8U3ltYm9sVGFibGU+
IG1fZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZTsKKyAgICBpbnQgbV9nZW5lcmF0b3JGcmFtZVN5
bWJvbFRhYmxlSW5kZXg7Cit9OworCitjbGFzcyBHZW5lcmF0b3JMaXZlbmVzc0FuYWx5c2lzIDog
cHVibGljIEJ5dGVjb2RlTGl2ZW5lc3NQcm9wYWdhdGlvbjxHZW5lcmF0b3JMaXZlbmVzc0FuYWx5
c2lzPiB7CitwdWJsaWM6CisgICAgR2VuZXJhdG9yTGl2ZW5lc3NBbmFseXNpcyhCeXRlY29kZUdl
bmVyYXRvcmlmaWNhdGlvbiYgZ2VuZXJhdG9yaWZpY2F0aW9uKQorICAgICAgICA6IG1fZ2VuZXJh
dG9yaWZpY2F0aW9uKGdlbmVyYXRvcmlmaWNhdGlvbikKKyAgICB7CisgICAgfQorCisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KKyAgICB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVP
ZmZzZXQoVW5saW5rZWRDb2RlQmxvY2sqIGNvZGVCbG9jaywgT3Bjb2RlSUQgb3Bjb2RlSUQsIFVu
bGlua2VkSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBGYXN0Qml0VmVjdG9yJiwgY29uc3QgRnVu
Y3RvciYgZnVuY3RvcikKKyAgICB7CisgICAgICAgIEpTQzo6Y29tcHV0ZURlZnNGb3JCeXRlY29k
ZU9mZnNldChjb2RlQmxvY2ssIG9wY29kZUlELCBpbnN0cnVjdGlvbiwgZnVuY3Rvcik7CisgICAg
fQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KKyAgICB2b2lkIGNvbXB1dGVVc2Vz
Rm9yQnl0ZWNvZGVPZmZzZXQoVW5saW5rZWRDb2RlQmxvY2sqIGNvZGVCbG9jaywgT3Bjb2RlSUQg
b3Bjb2RlSUQsIFVubGlua2VkSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBGYXN0Qml0VmVjdG9y
JiwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikKKyAgICB7CisgICAgICAgIEpTQzo6Y29tcHV0ZVVz
ZXNGb3JCeXRlY29kZU9mZnNldChjb2RlQmxvY2ssIG9wY29kZUlELCBpbnN0cnVjdGlvbiwgZnVu
Y3Rvcik7CisgICAgfQorCisgICAgdm9pZCBydW4oKQorICAgIHsKKyAgICAgICAgLy8gUGVyZm9y
bSBtb2RpZmllZCBsaXZlbmVzcyBhbmFseXNpcyB0byBkZXRlcm1pbmUgd2hpY2ggbG9jYWxzIGFy
ZSBsaXZlIGF0IHRoZSBtZXJnZSBwb2ludHMuCisgICAgICAgIC8vIFRoaXMgcHJvZHVjZXMgdGhl
IGNvbnNlcnZhdGl2ZSByZXN1bHRzIGZvciB0aGUgcXVlc3Rpb24sICJ3aGljaCB2YXJpYWJsZXMg
c2hvdWxkIGJlIHNhdmVkIGFuZCByZXN1bWVkPyIuCisKKyAgICAgICAgcnVuTGl2ZW5lc3NGaXhw
b2ludChtX2dlbmVyYXRvcmlmaWNhdGlvbi5ncmFwaCgpKTsKKworICAgICAgICBmb3IgKFlpZWxk
RGF0YSYgZGF0YSA6IG1fZ2VuZXJhdG9yaWZpY2F0aW9uLnlpZWxkcygpKQorICAgICAgICAgICAg
ZGF0YS5saXZlbmVzcyA9IGdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQobV9nZW5lcmF0
b3JpZmljYXRpb24uZ3JhcGgoKSwgZGF0YS5wb2ludCArIG9wY29kZUxlbmd0aChvcF95aWVsZCkp
OworICAgIH0KKworcHJpdmF0ZToKKyAgICBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbiYgbV9n
ZW5lcmF0b3JpZmljYXRpb247Cit9OworCit2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9u
OjpydW4oKQoreworICAgIC8vIFdlIGNhbGN1bGF0ZSB0aGUgbGl2ZW5lc3MgYXQgZWFjaCBtZXJn
ZSBwb2ludC4gVGhpcyBnaXZlcyB1cyB0aGUgaW5mb3JtYXRpb24gd2hpY2ggcmVnaXN0ZXJzIHNo
b3VsZCBiZSBzYXZlZCBhbmQgcmVzdW1lZCBjb25zZXJ2YXRpdmVseS4KKworICAgIHsKKyAgICAg
ICAgR2VuZXJhdG9yTGl2ZW5lc3NBbmFseXNpcyBwYXNzKCp0aGlzKTsKKyAgICAgICAgcGFzcy5y
dW4oKTsKKyAgICB9CisKKyAgICBVbmxpbmtlZENvZGVCbG9jayogY29kZUJsb2NrID0gbV9ncmFw
aC5jb2RlQmxvY2soKTsKKyAgICBCeXRlY29kZVJld3JpdGVyIHJld3JpdGVyKG1fZ3JhcGgpOwor
CisgICAgLy8gU2V0dXAgdGhlIGdsb2JhbCBzd2l0Y2ggZm9yIHRoZSBnZW5lcmF0b3IuCisgICAg
eworICAgICAgICB1bnNpZ25lZCBuZXh0VG9FbnRlclBvaW50ID0gZW50ZXJQb2ludCgpICsgb3Bj
b2RlTGVuZ3RoKG9wX2VudGVyKTsKKyAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHN0YXRlID0gdmly
dHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3JG
dW5jdGlvbjo6R2VuZXJhdG9yQXJndW1lbnQ6OlN0YXRlKSk7CisgICAgICAgIGF1dG8mIGp1bXBU
YWJsZSA9IHJld3JpdGVyLmluc2VydFN3aXRjaEltbWVkaWF0ZUJlZm9yZShuZXh0VG9FbnRlclBv
aW50LCBuZXh0VG9FbnRlclBvaW50LCBzdGF0ZS5vZmZzZXQoKSk7CisgICAgICAgIGp1bXBUYWJs
ZS5taW4gPSAwOworICAgICAgICBqdW1wVGFibGUuYnJhbmNoT2Zmc2V0cy5yZXNpemUobV95aWVs
ZHMuc2l6ZSgpICsgMSk7CisgICAgICAgIGp1bXBUYWJsZS5icmFuY2hPZmZzZXRzLmZpbGwoMCk7
CisgICAgICAgIGp1bXBUYWJsZS5hZGQoMCwgbmV4dFRvRW50ZXJQb2ludCk7CisgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3lpZWxkcy5zaXplKCk7ICsraSkKKyAgICAgICAgICAg
IGp1bXBUYWJsZS5hZGQoaSArIDEsIG1feWllbGRzW2ldLnBvaW50KTsKKyAgICB9CisKKyAgICBm
b3IgKGNvbnN0IFlpZWxkRGF0YSYgZGF0YSA6IG1feWllbGRzKSB7CisgICAgICAgIFZpcnR1YWxS
ZWdpc3RlciBzY29wZSA9IHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KHN0YXRpY19jYXN0PGlu
dDMyX3Q+KEpTR2VuZXJhdG9yRnVuY3Rpb246OkdlbmVyYXRvckFyZ3VtZW50OjpGcmFtZSkpOwor
CisgICAgICAgIC8vIEVtaXQgc2F2ZSBzZXF1ZW5jZS4KKyAgICAgICAgcmV3cml0ZXIuaW5zZXJ0
RnJhZ21lbnRCZWZvcmUoZGF0YS5wb2ludCwgWyZdKEJ5dGVjb2RlUmV3cml0ZXI6OkZyYWdtZW50
JiBmcmFnbWVudCkgeworICAgICAgICAgICAgZGF0YS5saXZlbmVzcy5mb3JFYWNoU2V0Qml0KFsm
XShzaXplX3QgaW5kZXgpIHsKKyAgICAgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFu
ZCA9IHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGluZGV4KTsKKyAgICAgICAgICAgICAgICBTdG9y
YWdlIHN0b3JhZ2UgPSBzdG9yYWdlRm9yR2VuZXJhdG9yTG9jYWwoaW5kZXgpOworCisgICAgICAg
ICAgICAgICAgZnJhZ21lbnQuYXBwZW5kKAorICAgICAgICAgICAgICAgICAgICBvcF9wdXRfdG9f
c2NvcGUsCisgICAgICAgICAgICAgICAgICAgIHNjb3BlLm9mZnNldCgpLCAvLyBzY29wZQorICAg
ICAgICAgICAgICAgICAgICBzdG9yYWdlLmlkZW50aWZpZXJJbmRleCwgLy8gaWRlbnRpZmllcgor
ICAgICAgICAgICAgICAgICAgICBvcGVyYW5kLm9mZnNldCgpLCAvLyB2YWx1ZQorICAgICAgICAg
ICAgICAgICAgICBHZXRQdXRJbmZvKERvTm90VGhyb3dJZk5vdEZvdW5kLCBMb2NhbENsb3N1cmVW
YXIsIEluaXRpYWxpemF0aW9uTW9kZTo6Tm90SW5pdGlhbGl6YXRpb24pLm9wZXJhbmQoKSwgLy8g
aW5mbworICAgICAgICAgICAgICAgICAgICBtX2dlbmVyYXRvckZyYW1lU3ltYm9sVGFibGVJbmRl
eCwgLy8gc3ltYm9sIHRhYmxlIGNvbnN0YW50IGluZGV4CisgICAgICAgICAgICAgICAgICAgIHN0
b3JhZ2Uuc2NvcGVPZmZzZXQub2Zmc2V0KCkgLy8gc2NvcGUgb2Zmc2V0CisgICAgICAgICAgICAg
ICAgKTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICAvLyBJbnNlcnQgb3BfcmV0IGp1
c3QgYWZ0ZXIgc2F2ZSBzZXF1ZW5jZS4KKyAgICAgICAgICAgIGZyYWdtZW50LmFwcGVuZChvcF9y
ZXQsIGRhdGEuYXJndW1lbnQpOworICAgICAgICB9KTsKKworICAgICAgICAvLyBFbWl0IHJlc3Vt
ZSBzZXF1ZW5jZS4KKyAgICAgICAgcmV3cml0ZXIuaW5zZXJ0RnJhZ21lbnRCZWZvcmUoZGF0YS5w
b2ludCArIG9wY29kZUxlbmd0aChvcF95aWVsZCksIFsmXShCeXRlY29kZVJld3JpdGVyOjpGcmFn
bWVudCYgZnJhZ21lbnQpIHsKKyAgICAgICAgICAgIGRhdGEubGl2ZW5lc3MuZm9yRWFjaFNldEJp
dChbJl0oc2l6ZV90IGluZGV4KSB7CisgICAgICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIG9w
ZXJhbmQgPSB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChpbmRleCk7CisgICAgICAgICAgICAgICAg
U3RvcmFnZSBzdG9yYWdlID0gc3RvcmFnZUZvckdlbmVyYXRvckxvY2FsKGluZGV4KTsKKworICAg
ICAgICAgICAgICAgIFVubGlua2VkVmFsdWVQcm9maWxlIHByb2ZpbGUgPSBjb2RlQmxvY2stPmFk
ZFZhbHVlUHJvZmlsZSgpOworICAgICAgICAgICAgICAgIGZyYWdtZW50LmFwcGVuZCgKKyAgICAg
ICAgICAgICAgICAgICAgb3BfZ2V0X2Zyb21fc2NvcGUsCisgICAgICAgICAgICAgICAgICAgIG9w
ZXJhbmQub2Zmc2V0KCksIC8vIGRzdAorICAgICAgICAgICAgICAgICAgICBzY29wZS5vZmZzZXQo
KSwgLy8gc2NvcGUKKyAgICAgICAgICAgICAgICAgICAgc3RvcmFnZS5pZGVudGlmaWVySW5kZXgs
IC8vIGlkZW50aWZpZXIKKyAgICAgICAgICAgICAgICAgICAgR2V0UHV0SW5mbyhEb05vdFRocm93
SWZOb3RGb3VuZCwgTG9jYWxDbG9zdXJlVmFyLCBJbml0aWFsaXphdGlvbk1vZGU6Ok5vdEluaXRp
YWxpemF0aW9uKS5vcGVyYW5kKCksIC8vIGluZm8KKyAgICAgICAgICAgICAgICAgICAgMCwgLy8g
bG9jYWwgc2NvcGUgZGVwdGgKKyAgICAgICAgICAgICAgICAgICAgc3RvcmFnZS5zY29wZU9mZnNl
dC5vZmZzZXQoKSwgLy8gc2NvcGUgb2Zmc2V0CisgICAgICAgICAgICAgICAgICAgIHByb2ZpbGUg
Ly8gcHJvZmlsZQorICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAg
fSk7CisKKyAgICAgICAgLy8gQ2xpcCB0aGUgdW5uZWNlc3NhcnkgYnl0ZWNvZGVzLgorICAgICAg
ICByZXdyaXRlci5yZW1vdmVCeXRlY29kZShkYXRhLnBvaW50KTsKKyAgICB9CisKKyAgICByZXdy
aXRlci5leGVjdXRlKCk7Cit9CisKK3ZvaWQgcGVyZm9ybUdlbmVyYXRvcmlmaWNhdGlvbihVbmxp
bmtlZENvZGVCbG9jayogY29kZUJsb2NrLCBVbmxpbmtlZENvZGVCbG9jazo6VW5wYWNrZWRJbnN0
cnVjdGlvbnMmIGluc3RydWN0aW9ucywgU3ltYm9sVGFibGUqIGdlbmVyYXRvckZyYW1lU3ltYm9s
VGFibGUsIGludCBnZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlSW5kZXgpCit7CisgICAgQnl0ZWNv
ZGVHZW5lcmF0b3JpZmljYXRpb24gcGFzcyhjb2RlQmxvY2ssIGluc3RydWN0aW9ucywgZ2VuZXJh
dG9yRnJhbWVTeW1ib2xUYWJsZSwgZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZUluZGV4KTsKKyAg
ICBwYXNzLnJ1bigpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9u
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYzdiNjEzNzQ2MDg2YWUzNGM0YzBhMjJiZjRlNjdjNzZlNmNmZDRlOQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZUdlbmVyYXRvcmlmaWNhdGlvbi5oCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTYgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorICogQ29weXJp
Z2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJVbmxpbmtlZENvZGVCbG9jay5oIgorCituYW1lc3Bh
Y2UgSlNDIHsKKworY2xhc3MgU3ltYm9sVGFibGU7CisKK3ZvaWQgcGVyZm9ybUdlbmVyYXRvcmlm
aWNhdGlvbihVbmxpbmtlZENvZGVCbG9jayosIFVubGlua2VkQ29kZUJsb2NrOjpVbnBhY2tlZElu
c3RydWN0aW9ucyYsIFN5bWJvbFRhYmxlKiBnZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlLCBpbnQg
Z2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZUluZGV4KTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVHcmFwaC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlR3JhcGguaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5kYzM2ODE2YzA2NDMyMTVhZTMxNTc3YTUyYWQ4NDVhNTc5MjM1ZGY0Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlR3JhcGguaApA
QCAtMCwwICsxLDEyNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBZdXN1a2UgU3V6dWtp
IDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5j
bHVkZSAiQnl0ZWNvZGVCYXNpY0Jsb2NrLmgiCisjaW5jbHVkZSA8d3RmL0luZGV4ZWRDb250YWlu
ZXJJdGVyYXRvci5oPgorI2luY2x1ZGUgPHd0Zi9JdGVyYXRvclJhbmdlLmg+CisjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgQnl0ZWNvZGVCYXNpY0Js
b2NrOworCit0ZW1wbGF0ZTx0eXBlbmFtZSBCbG9jaz4KK2NsYXNzIEJ5dGVjb2RlR3JhcGggewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEJ5
dGVjb2RlR3JhcGgpOworcHVibGljOgorICAgIHR5cGVkZWYgQmxvY2sgQ29kZUJsb2NrOworICAg
IHR5cGVkZWYgdHlwZW5hbWUgQmxvY2s6Okluc3RydWN0aW9uIEluc3RydWN0aW9uOworICAgIHR5
cGVkZWYgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiBCYXNpY0Js
b2Nrc1ZlY3RvcjsKKworICAgIGlubGluZSBCeXRlY29kZUdyYXBoKEJsb2NrKiwgdHlwZW5hbWUg
QmxvY2s6OlVucGFja2VkSW5zdHJ1Y3Rpb25zJik7CisKKyAgICBCbG9jayogY29kZUJsb2NrKCkg
Y29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2s7IH0KKworICAgIHR5cGVuYW1lIEJsb2NrOjpVbnBh
Y2tlZEluc3RydWN0aW9ucyYgaW5zdHJ1Y3Rpb25zKCkgeyByZXR1cm4gbV9pbnN0cnVjdGlvbnM7
IH0KKworICAgIFdURjo6SXRlcmF0b3JSYW5nZTxCYXNpY0Jsb2Nrc1ZlY3Rvcjo6cmV2ZXJzZV9p
dGVyYXRvcj4gYmFzaWNCbG9ja3NJblJldmVyc2VPcmRlcigpCisgICAgeworICAgICAgICByZXR1
cm4gV1RGOjptYWtlSXRlcmF0b3JSYW5nZShtX2Jhc2ljQmxvY2tzLnJiZWdpbigpLCBtX2Jhc2lj
QmxvY2tzLnJlbmQoKSk7CisgICAgfQorCisgICAgc3RhdGljIGJvb2wgYmxvY2tDb250YWluc0J5
dGVjb2RlT2Zmc2V0KEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2Rl
T2Zmc2V0KQorICAgIHsKKyAgICAgICAgdW5zaWduZWQgbGVhZGVyT2Zmc2V0ID0gYmxvY2stPmxl
YWRlckJ5dGVjb2RlT2Zmc2V0KCk7CisgICAgICAgIHJldHVybiBieXRlY29kZU9mZnNldCA+PSBs
ZWFkZXJPZmZzZXQgJiYgYnl0ZWNvZGVPZmZzZXQgPCBsZWFkZXJPZmZzZXQgKyBibG9jay0+dG90
YWxCeXRlY29kZUxlbmd0aCgpOworICAgIH0KKworICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogZmlu
ZEJhc2ljQmxvY2tGb3JCeXRlY29kZU9mZnNldCh1bnNpZ25lZCBieXRlY29kZU9mZnNldCkKKyAg
ICB7CisgICAgICAgIC8qCisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9i
YXNpY0Jsb2Nrcy5zaXplKCk7IGkrKykgeworICAgICAgICAgICAgICAgIGlmIChibG9ja0NvbnRh
aW5zQnl0ZWNvZGVPZmZzZXQobV9iYXNpY0Jsb2Nrc1tpXS5nZXQoKSwgYnl0ZWNvZGVPZmZzZXQp
KQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbV9iYXNpY0Jsb2Nrc1tpXS5nZXQoKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAqLworCisgICAgICAg
IHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+KiBiYXNpY0Jsb2NrID0gYXBwcm94
aW1hdGVCaW5hcnlTZWFyY2g8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4sIHVu
c2lnbmVkPihtX2Jhc2ljQmxvY2tzLCBtX2Jhc2ljQmxvY2tzLnNpemUoKSwgYnl0ZWNvZGVPZmZz
ZXQsIFtdIChzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiogYmFzaWNCbG9jaykg
eyByZXR1cm4gKCpiYXNpY0Jsb2NrKS0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKTsgfSk7CisgICAg
ICAgIC8vIFdlIGZvdW5kIHRoZSBibG9jayB3ZSB3ZXJlIGxvb2tpbmcgZm9yLgorICAgICAgICBp
ZiAoYmxvY2tDb250YWluc0J5dGVjb2RlT2Zmc2V0KCgqYmFzaWNCbG9jaykuZ2V0KCksIGJ5dGVj
b2RlT2Zmc2V0KSkKKyAgICAgICAgICAgIHJldHVybiAoKmJhc2ljQmxvY2spLmdldCgpOworCisg
ICAgICAgIC8vIEJhc2ljIGJsb2NrIGlzIHRvIHRoZSBsZWZ0IG9mIHRoZSByZXR1cm5lZCBibG9j
ay4KKyAgICAgICAgaWYgKGJ5dGVjb2RlT2Zmc2V0IDwgKCpiYXNpY0Jsb2NrKS0+bGVhZGVyQnl0
ZWNvZGVPZmZzZXQoKSkgeworICAgICAgICAgICAgQVNTRVJUKGJhc2ljQmxvY2sgLSAxID49IG1f
YmFzaWNCbG9ja3MuZGF0YSgpKTsKKyAgICAgICAgICAgIEFTU0VSVChibG9ja0NvbnRhaW5zQnl0
ZWNvZGVPZmZzZXQoYmFzaWNCbG9ja1stMV0uZ2V0KCksIGJ5dGVjb2RlT2Zmc2V0KSk7CisgICAg
ICAgICAgICByZXR1cm4gYmFzaWNCbG9ja1stMV0uZ2V0KCk7CisgICAgICAgIH0KKworICAgICAg
ICAvLyBCYXNpYyBibG9jayBpcyB0byB0aGUgcmlnaHQgb2YgdGhlIHJldHVybmVkIGJsb2NrLgor
ICAgICAgICBBU1NFUlQoJmJhc2ljQmxvY2tbMV0gPD0gJm1fYmFzaWNCbG9ja3MubGFzdCgpKTsK
KyAgICAgICAgQVNTRVJUKGJsb2NrQ29udGFpbnNCeXRlY29kZU9mZnNldChiYXNpY0Jsb2NrWzFd
LmdldCgpLCBieXRlY29kZU9mZnNldCkpOworICAgICAgICByZXR1cm4gYmFzaWNCbG9ja1sxXS5n
ZXQoKTsKKyAgICB9CisKKyAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGZpbmRCYXNpY0Jsb2NrV2l0
aExlYWRlck9mZnNldCh1bnNpZ25lZCBsZWFkZXJPZmZzZXQpCisgICAgeworICAgICAgICByZXR1
cm4gKCp0cnlCaW5hcnlTZWFyY2g8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4s
IHVuc2lnbmVkPihtX2Jhc2ljQmxvY2tzLCBtX2Jhc2ljQmxvY2tzLnNpemUoKSwgbGVhZGVyT2Zm
c2V0LCBbXSAoc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4qIGJhc2ljQmxvY2sp
IHsgcmV0dXJuICgqYmFzaWNCbG9jayktPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCk7IH0pKS5nZXQo
KTsKKyAgICB9CisKKyAgICB1bnNpZ25lZCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9iYXNpY0Js
b2Nrcy5zaXplKCk7IH0KKyAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGF0KHVuc2lnbmVkIGluZGV4
KSBjb25zdCB7IHJldHVybiBtX2Jhc2ljQmxvY2tzW2luZGV4XS5nZXQoKTsgfQorICAgIEJ5dGVj
b2RlQmFzaWNCbG9jayogb3BlcmF0b3JbXSh1bnNpZ25lZCBpbmRleCkgY29uc3QgeyByZXR1cm4g
YXQoaW5kZXgpOyB9CisKKyAgICB0eXBlZGVmIFdURjo6SW5kZXhlZENvbnRhaW5lckl0ZXJhdG9y
PEJ5dGVjb2RlR3JhcGg8QmxvY2s+PiBpdGVyYXRvcjsKKworICAgIGl0ZXJhdG9yIGJlZ2luKCkg
Y29uc3QgeyByZXR1cm4gaXRlcmF0b3IoKnRoaXMsIDApOyB9CisgICAgaXRlcmF0b3IgZW5kKCkg
Y29uc3QgeyByZXR1cm4gaXRlcmF0b3IoKnRoaXMsIHNpemUoKSk7IH0KKyAgICBCeXRlY29kZUJh
c2ljQmxvY2sqIGZpcnN0KCkgeyByZXR1cm4gYXQoMCk7IH0KKyAgICBCeXRlY29kZUJhc2ljQmxv
Y2sqIGxhc3QoKSB7IHJldHVybiBhdChzaXplKCkgLSAxKTsgfQorCitwcml2YXRlOgorICAgIEJs
b2NrKiBtX2NvZGVCbG9jazsKKyAgICBCYXNpY0Jsb2Nrc1ZlY3RvciBtX2Jhc2ljQmxvY2tzOwor
ICAgIHR5cGVuYW1lIEJsb2NrOjpVbnBhY2tlZEluc3RydWN0aW9ucyYgbV9pbnN0cnVjdGlvbnM7
Cit9OworCisKK3RlbXBsYXRlPHR5cGVuYW1lIEJsb2NrPgorQnl0ZWNvZGVHcmFwaDxCbG9jaz46
OkJ5dGVjb2RlR3JhcGgoQmxvY2sqIGNvZGVCbG9jaywgdHlwZW5hbWUgQmxvY2s6OlVucGFja2Vk
SW5zdHJ1Y3Rpb25zJiBpbnN0cnVjdGlvbnMpCisgICAgOiBtX2NvZGVCbG9jayhjb2RlQmxvY2sp
CisgICAgLCBtX2luc3RydWN0aW9ucyhpbnN0cnVjdGlvbnMpCit7CisgICAgQVNTRVJUKG1fY29k
ZUJsb2NrKTsKKyAgICBCeXRlY29kZUJhc2ljQmxvY2s6OmNvbXB1dGVCeXRlY29kZUJhc2ljQmxv
Y2tzKG1fY29kZUJsb2NrLCBpbnN0cnVjdGlvbnMuYmVnaW4oKSwgaW5zdHJ1Y3Rpb25zLnNpemUo
KSwgbV9iYXNpY0Jsb2Nrcyk7CisgICAgQVNTRVJUKG1fYmFzaWNCbG9ja3Muc2l6ZSgpKTsKK30K
KworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVMaXN0Lmpzb24KaW5kZXggZTM4MDI1ZDVhZmNmNjljZTQ4MGFlOTI4OThjOTM4
ZTkzMTI3ODhkOS4uY2U2MGRhNGEyNmJjMzQ3N2ZkNDcxOWIwYTRiMWZlY2U1ODljNjE5ZCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29u
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgpA
QCAtMTQzLDggKzE0Myw3IEBACiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9hc3NlcnQiLCAi
bGVuZ3RoIiA6IDMgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2NyZWF0ZV9yZXN0Iiwg
Imxlbmd0aCI6IDQgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2dldF9yZXN0X2xlbmd0
aCIsICJsZW5ndGgiOiAzIH0sCi0gICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9zYXZlIiwgImxl
bmd0aCIgOiA0IH0sCi0gICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9yZXN1bWUiLCAibGVuZ3Ro
IiA6IDMgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX3lpZWxkIiwgImxlbmd0aCIgOiA0
IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF93YXRjaGRvZyIsICJsZW5ndGgiIDogMSB9
LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfbG9nX3NoYWRvd19jaGlja2VuX3Byb2xvZ3Vl
IiwgImxlbmd0aCIgOiAyfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2xvZ19zaGFkb3df
Y2hpY2tlbl90YWlsIiwgImxlbmd0aCIgOiAzfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNwcAppbmRleCBk
NGNiMDFhY2IxMTY1MTJhM2U2MzMzNmRlMjQzZDY5MDkzZmJhNzA0Li5jNjlkMWQ1ZjExNTg4YWVh
MmYwMTA4MGMyNGUxZmQ0NTg2NTk4YWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNwcApAQCAtMzEs
MTk5ICszMSwzNyBAQAogI2luY2x1ZGUgIkJ5dGVjb2RlVXNlRGVmLmgiCiAjaW5jbHVkZSAiQ29k
ZUJsb2NrLmgiCiAjaW5jbHVkZSAiRnVsbEJ5dGVjb2RlTGl2ZW5lc3MuaCIKLSNpbmNsdWRlICJJ
bnRlcnByZXRlci5oIgorI2luY2x1ZGUgIkludGVycHJldGVySW5saW5lcy5oIgogI2luY2x1ZGUg
IlByZWNpc2VKdW1wVGFyZ2V0cy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAogQnl0ZWNvZGVMaXZl
bmVzc0FuYWx5c2lzOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMoQ29kZUJsb2NrKiBjb2RlQmxv
Y2spCi0gICAgOiBtX2NvZGVCbG9jayhjb2RlQmxvY2spCisgICAgOiBtX2dyYXBoKGNvZGVCbG9j
aywgY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKSkKIHsKLSAgICBBU1NFUlQobV9jb2RlQmxvY2sp
OwogICAgIGNvbXB1dGUoKTsKIH0KIAotc3RhdGljIGJvb2wgaXNWYWxpZFJlZ2lzdGVyRm9yTGl2
ZW5lc3MoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGludCBvcGVyYW5kKQordGVtcGxhdGU8dHlwZW5h
bWUgRnVuY3Rvcj4KK3ZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlRGVmc0Zv
ckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBPcGNvZGVJRCBvcGNvZGVJRCwg
SW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBGYXN0Qml0VmVjdG9yJiwgY29uc3QgRnVuY3RvciYg
ZnVuY3RvcikKIHsKLSAgICBpZiAoY29kZUJsb2NrLT5pc0NvbnN0YW50UmVnaXN0ZXJJbmRleChv
cGVyYW5kKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIAotICAgIFZpcnR1YWxSZWdpc3Rl
ciB2aXJ0dWFsUmVnKG9wZXJhbmQpOwotICAgIHJldHVybiB2aXJ0dWFsUmVnLmlzTG9jYWwoKTsK
LX0KLQotc3RhdGljIHVuc2lnbmVkIGdldExlYWRlck9mZnNldEZvckJhc2ljQmxvY2soc3RkOjp1
bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4qIGJhc2ljQmxvY2spCi17Ci0gICAgcmV0dXJu
ICgqYmFzaWNCbG9jayktPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCk7Ci19Ci0KLXN0YXRpYyBCeXRl
Y29kZUJhc2ljQmxvY2sqIGZpbmRCYXNpY0Jsb2NrV2l0aExlYWRlck9mZnNldChWZWN0b3I8c3Rk
Ojp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+JiBiYXNpY0Jsb2NrcywgdW5zaWduZWQg
bGVhZGVyT2Zmc2V0KQotewotICAgIHJldHVybiAoKnRyeUJpbmFyeVNlYXJjaDxzdGQ6OnVuaXF1
ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiwgdW5zaWduZWQ+KGJhc2ljQmxvY2tzLCBiYXNpY0Js
b2Nrcy5zaXplKCksIGxlYWRlck9mZnNldCwgZ2V0TGVhZGVyT2Zmc2V0Rm9yQmFzaWNCbG9jaykp
LmdldCgpOwotfQotCi1zdGF0aWMgYm9vbCBibG9ja0NvbnRhaW5zQnl0ZWNvZGVPZmZzZXQoQnl0
ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaywgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpCi17Ci0gICAg
dW5zaWduZWQgbGVhZGVyT2Zmc2V0ID0gYmxvY2stPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCk7Ci0g
ICAgcmV0dXJuIGJ5dGVjb2RlT2Zmc2V0ID49IGxlYWRlck9mZnNldCAmJiBieXRlY29kZU9mZnNl
dCA8IGxlYWRlck9mZnNldCArIGJsb2NrLT50b3RhbEJ5dGVjb2RlTGVuZ3RoKCk7Ci19Ci0KLXN0
YXRpYyBCeXRlY29kZUJhc2ljQmxvY2sqIGZpbmRCYXNpY0Jsb2NrRm9yQnl0ZWNvZGVPZmZzZXQo
VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9ja3Ms
IHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KQotewotLyoKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgYmFzaWNCbG9ja3Muc2l6ZSgpOyBpKyspIHsKLSAgICAgICAgaWYgKGJsb2NrQ29udGFp
bnNCeXRlY29kZU9mZnNldChiYXNpY0Jsb2Nrc1tpXS5nZXQoKSwgYnl0ZWNvZGVPZmZzZXQpKQot
ICAgICAgICAgICAgcmV0dXJuIGJhc2ljQmxvY2tzW2ldLmdldCgpOwotICAgIH0KLSAgICByZXR1
cm4gMDsKLSovCi0gICAgc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4qIGJhc2lj
QmxvY2sgPSBhcHByb3hpbWF0ZUJpbmFyeVNlYXJjaDxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVC
YXNpY0Jsb2NrPiwgdW5zaWduZWQ+KAotICAgICAgICBiYXNpY0Jsb2NrcywgYmFzaWNCbG9ja3Mu
c2l6ZSgpLCBieXRlY29kZU9mZnNldCwgZ2V0TGVhZGVyT2Zmc2V0Rm9yQmFzaWNCbG9jayk7Ci0g
ICAgLy8gV2UgZm91bmQgdGhlIGJsb2NrIHdlIHdlcmUgbG9va2luZyBmb3IuCi0gICAgaWYgKGJs
b2NrQ29udGFpbnNCeXRlY29kZU9mZnNldCgoKmJhc2ljQmxvY2spLmdldCgpLCBieXRlY29kZU9m
ZnNldCkpCi0gICAgICAgIHJldHVybiAoKmJhc2ljQmxvY2spLmdldCgpOwotCi0gICAgLy8gQmFz
aWMgYmxvY2sgaXMgdG8gdGhlIGxlZnQgb2YgdGhlIHJldHVybmVkIGJsb2NrLgotICAgIGlmIChi
eXRlY29kZU9mZnNldCA8ICgqYmFzaWNCbG9jayktPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCkpIHsK
LSAgICAgICAgQVNTRVJUKGJhc2ljQmxvY2sgLSAxID49IGJhc2ljQmxvY2tzLmRhdGEoKSk7Ci0g
ICAgICAgIEFTU0VSVChibG9ja0NvbnRhaW5zQnl0ZWNvZGVPZmZzZXQoYmFzaWNCbG9ja1stMV0u
Z2V0KCksIGJ5dGVjb2RlT2Zmc2V0KSk7Ci0gICAgICAgIHJldHVybiBiYXNpY0Jsb2NrWy0xXS5n
ZXQoKTsKLSAgICB9Ci0KLSAgICAvLyBCYXNpYyBibG9jayBpcyB0byB0aGUgcmlnaHQgb2YgdGhl
IHJldHVybmVkIGJsb2NrLgotICAgIEFTU0VSVCgmYmFzaWNCbG9ja1sxXSA8PSAmYmFzaWNCbG9j
a3MubGFzdCgpKTsKLSAgICBBU1NFUlQoYmxvY2tDb250YWluc0J5dGVjb2RlT2Zmc2V0KGJhc2lj
QmxvY2tbMV0uZ2V0KCksIGJ5dGVjb2RlT2Zmc2V0KSk7Ci0gICAgcmV0dXJuIGJhc2ljQmxvY2tb
MV0uZ2V0KCk7Ci19Ci0KLS8vIFNpbXBsaWZpZWQgaW50ZXJmYWNlIHRvIGJ5dGVjb2RlIHVzZS9k
ZWYsIHdoaWNoIGRldGVybWluZXMgZGVmcyBmaXJzdCBhbmQgdGhlbiB1c2VzLCBhbmQgaW5jbHVk
ZXMKLS8vIGV4Y2VwdGlvbiBoYW5kbGVycyBpbiB0aGUgdXNlcy4KLXRlbXBsYXRlPHR5cGVuYW1l
IFVzZUZ1bmN0b3IsIHR5cGVuYW1lIERlZkZ1bmN0b3I+Ci1zdGF0aWMgdm9pZCBzdGVwT3Zlcklu
c3RydWN0aW9uKENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2Nr
LCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+JiBiYXNpY0Jsb2Nr
cywgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIGNvbnN0IFVzZUZ1bmN0b3ImIHVzZSwgY29uc3Qg
RGVmRnVuY3RvciYgZGVmKQotewotICAgIC8vIFRoaXMgYWJzdHJhY3RseSBleGVjdXRlIHRoZSBp
bnN0cnVjdGlvbiBpbiByZXZlcnNlLiBJbnN0cnVjdGlvbnMgbG9naWNhbGx5IGZpcnN0IHVzZSBv
cGVyYW5kcyBhbmQKLSAgICAvLyB0aGVuIGRlZmluZSBvcGVyYW5kcy4gVGhpcyBsb2dpY2FsIG9y
ZGVyaW5nIGlzIG5lY2Vzc2FyeSBmb3Igb3BlcmF0aW9ucyB0aGF0IHVzZSBhbmQgZGVmIHRoZSBz
YW1lCi0gICAgLy8gb3BlcmFuZCwgbGlrZToKLSAgICAvLwotICAgIC8vICAgICBvcF9hZGQgbG9j
MSwgbG9jMSwgbG9jMgotICAgIC8vCi0gICAgLy8gVGhlIHVzZSBvZiBsb2MxIGhhcHBlbnMgYmVm
b3JlIHRoZSBkZWYgb2YgbG9jMS4gVGhhdCdzIGEgc2VtYW50aWMgcmVxdWlyZW1lbnQgc2luY2Ug
dGhlIGFkZAotICAgIC8vIG9wZXJhdGlvbiBjYW5ub3QgdHJhdmVsIGZvcndhcmQgaW4gdGltZSB0
byByZWFkIHRoZSB2YWx1ZSB0aGF0IGl0IHdpbGwgcHJvZHVjZSBhZnRlciByZWFkaW5nIHRoYXQK
LSAgICAvLyB2YWx1ZS4gU2luY2Ugd2UgYXJlIGV4ZWN1dGluZyBpbiByZXZlcnNlLCB0aGlzIG1l
YW5zIHRoYXQgd2UgbXVzdCBkbyBkZWZzIGJlZm9yZSB1c2VzIChyZXZlcnNlIG9mCi0gICAgLy8g
dXNlcyBiZWZvcmUgZGVmcykuCi0gICAgLy8KLSAgICAvLyBTaW5jZSB0aGlzIGlzIGEgbGl2ZW5l
c3MgYW5hbHlzaXMsIHRoaXMgb3JkZXJpbmcgZW5kcyB1cCBiZWluZyBwYXJ0aWN1bGFybHkgaW1w
b3J0YW50OiBpZiB3ZSBkaWQKLSAgICAvLyB1c2VzIGJlZm9yZSBkZWZzLCB0aGVuIHRoZSBhZGQg
b3BlcmF0aW9uIGFib3ZlIHdvdWxkIGFwcGVhciB0byBub3QgaGF2ZSBsb2MxIGxpdmUsIHNpbmNl
IHdlJ2QKLSAgICAvLyBmaXJzdCBhZGQgaXQgdG8gdGhlIG91dCBzZXQgKHRoZSB1c2UpLCBhbmQg
dGhlbiB3ZSdkIHJlbW92ZSBpdCAodGhlIGRlZikuCi0gICAgCi0gICAgY29tcHV0ZURlZnNGb3JC
eXRlY29kZU9mZnNldCgKLSAgICAgICAgY29kZUJsb2NrLCBibG9jaywgYnl0ZWNvZGVPZmZzZXQs
Ci0gICAgICAgIFsmXSAoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEluc3RydWN0aW9uKiwgT3Bjb2Rl
SUQsIGludCBvcGVyYW5kKSB7Ci0gICAgICAgICAgICBpZiAoaXNWYWxpZFJlZ2lzdGVyRm9yTGl2
ZW5lc3MoY29kZUJsb2NrLCBvcGVyYW5kKSkKLSAgICAgICAgICAgICAgICBkZWYoVmlydHVhbFJl
Z2lzdGVyKG9wZXJhbmQpLnRvTG9jYWwoKSk7Ci0gICAgICAgIH0pOwotCi0gICAgY29tcHV0ZVVz
ZXNGb3JCeXRlY29kZU9mZnNldCgKLSAgICAgICAgY29kZUJsb2NrLCBibG9jaywgYnl0ZWNvZGVP
ZmZzZXQsCi0gICAgICAgIFsmXSAoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEluc3RydWN0aW9uKiwg
T3Bjb2RlSUQsIGludCBvcGVyYW5kKSB7Ci0gICAgICAgICAgICBpZiAoaXNWYWxpZFJlZ2lzdGVy
Rm9yTGl2ZW5lc3MoY29kZUJsb2NrLCBvcGVyYW5kKSkKLSAgICAgICAgICAgICAgICB1c2UoVmly
dHVhbFJlZ2lzdGVyKG9wZXJhbmQpLnRvTG9jYWwoKSk7Ci0gICAgICAgIH0pOwotCi0gICAgLy8g
SWYgd2UgaGF2ZSBhbiBleGNlcHRpb24gaGFuZGxlciwgd2Ugd2FudCB0aGUgbGl2ZS1pbiB2YXJp
YWJsZXMgb2YgdGhlIAotICAgIC8vIGV4Y2VwdGlvbiBoYW5kbGVyIGJsb2NrIHRvIGJlIGluY2x1
ZGVkIGluIHRoZSBsaXZlLWluIG9mIHRoaXMgcGFydGljdWxhciBieXRlY29kZS4KLSAgICBpZiAo
SGFuZGxlckluZm8qIGhhbmRsZXIgPSBjb2RlQmxvY2stPmhhbmRsZXJGb3JCeXRlY29kZU9mZnNl
dChieXRlY29kZU9mZnNldCkpIHsKLSAgICAgICAgLy8gRklYTUU6IFRoaXMgcmVzdW1lIGNoZWNr
IHNob3VsZCBub3QgYmUgbmVlZGVkLgotICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTU5MjgxCi0gICAgICAgIEludGVycHJldGVyKiBpbnRlcnByZXRl
ciA9IGNvZGVCbG9jay0+dm0oKS0+aW50ZXJwcmV0ZXI7Ci0gICAgICAgIEluc3RydWN0aW9uKiBp
bnN0cnVjdGlvbnNCZWdpbiA9IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsKLSAg
ICAgICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uID0gJmluc3RydWN0aW9uc0JlZ2luW2J5dGVj
b2RlT2Zmc2V0XTsKLSAgICAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnRlcnByZXRlci0+Z2V0
T3Bjb2RlSUQoaW5zdHJ1Y3Rpb24tPnUub3Bjb2RlKTsKLSAgICAgICAgaWYgKG9wY29kZUlEICE9
IG9wX3Jlc3VtZSkgewotICAgICAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBoYW5kbGVyQmxv
Y2sgPSBmaW5kQmFzaWNCbG9ja1dpdGhMZWFkZXJPZmZzZXQoYmFzaWNCbG9ja3MsIGhhbmRsZXIt
PnRhcmdldCk7Ci0gICAgICAgICAgICBBU1NFUlQoaGFuZGxlckJsb2NrKTsKLSAgICAgICAgICAg
IGhhbmRsZXJCbG9jay0+aW4oKS5mb3JFYWNoU2V0Qml0KHVzZSk7Ci0gICAgICAgIH0KLSAgICB9
Ci19Ci0KLXN0YXRpYyB2b2lkIHN0ZXBPdmVySW5zdHJ1Y3Rpb24oQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2ssIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0
ZWNvZGVCYXNpY0Jsb2NrPj4mIGJhc2ljQmxvY2tzLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwg
RmFzdEJpdFZlY3RvciYgb3V0KQotewotICAgIHN0ZXBPdmVySW5zdHJ1Y3Rpb24oCi0gICAgICAg
IGNvZGVCbG9jaywgYmxvY2ssIGJhc2ljQmxvY2tzLCBieXRlY29kZU9mZnNldCwKLSAgICAgICAg
WyZdICh1bnNpZ25lZCBiaXRJbmRleCkgewotICAgICAgICAgICAgLy8gVGhpcyBpcyB0aGUgdXNl
IGZ1bmN0b3IsIHNvIHdlIHNldCB0aGUgYml0LgotICAgICAgICAgICAgb3V0LnNldChiaXRJbmRl
eCk7Ci0gICAgICAgIH0sCi0gICAgICAgIFsmXSAodW5zaWduZWQgYml0SW5kZXgpIHsKLSAgICAg
ICAgICAgIC8vIFRoaXMgaXMgdGhlIGRlZiBmdW5jdG9yLCBzbyB3ZSBjbGVhciB0aGUgYml0Lgot
ICAgICAgICAgICAgb3V0LmNsZWFyKGJpdEluZGV4KTsKLSAgICAgICAgfSk7CisgICAgSlNDOjpj
b21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9jaywgb3Bjb2RlSUQsIGluc3RydWN0
aW9uLCBmdW5jdG9yKTsKIH0KIAotc3RhdGljIHZvaWQgY29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JC
eXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBi
bG9jaywgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYgYmFzaWNC
bG9ja3MsIHVuc2lnbmVkIHRhcmdldE9mZnNldCwgRmFzdEJpdFZlY3RvciYgcmVzdWx0KQordGVt
cGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KK3ZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpj
b21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBPcGNvZGVJ
RCBvcGNvZGVJRCwgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBGYXN0Qml0VmVjdG9yJiwgY29u
c3QgRnVuY3RvciYgZnVuY3RvcikKIHsKLSAgICBBU1NFUlQoIWJsb2NrLT5pc0V4aXRCbG9jaygp
KTsKLSAgICBBU1NFUlQoIWJsb2NrLT5pc0VudHJ5QmxvY2soKSk7Ci0KLSAgICBGYXN0Qml0VmVj
dG9yIG91dCA9IGJsb2NrLT5vdXQoKTsKLQotICAgIGZvciAoaW50IGkgPSBibG9jay0+Ynl0ZWNv
ZGVPZmZzZXRzKCkuc2l6ZSgpIC0gMTsgaSA+PSAwOyBpLS0pIHsKLSAgICAgICAgdW5zaWduZWQg
Ynl0ZWNvZGVPZmZzZXQgPSBibG9jay0+Ynl0ZWNvZGVPZmZzZXRzKClbaV07Ci0gICAgICAgIGlm
ICh0YXJnZXRPZmZzZXQgPiBieXRlY29kZU9mZnNldCkKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAKLSAgICAgICAgc3RlcE92ZXJJbnN0cnVjdGlvbihjb2RlQmxvY2ssIGJsb2NrLCBiYXNp
Y0Jsb2NrcywgYnl0ZWNvZGVPZmZzZXQsIG91dCk7Ci0gICAgfQotCi0gICAgcmVzdWx0LnNldChv
dXQpOwotfQotCi1zdGF0aWMgdm9pZCBjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJsb2NrKENvZGVC
bG9jayogY29kZUJsb2NrLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrLCBWZWN0b3I8c3RkOjp1
bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+JiBiYXNpY0Jsb2NrcykKLXsKLSAgICBpZiAo
YmxvY2stPmlzRXhpdEJsb2NrKCkgfHwgYmxvY2stPmlzRW50cnlCbG9jaygpKQotICAgICAgICBy
ZXR1cm47Ci0gICAgY29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCeXRlY29kZU9mZnNldChjb2RlQmxv
Y2ssIGJsb2NrLCBiYXNpY0Jsb2NrcywgYmxvY2stPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCksIGJs
b2NrLT5pbigpKTsKLX0KLQotdm9pZCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OnJ1bkxpdmVu
ZXNzRml4cG9pbnQoKQotewotICAgIFVubGlua2VkQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9j
ayA9IG1fY29kZUJsb2NrLT51bmxpbmtlZENvZGVCbG9jaygpOwotICAgIHVuc2lnbmVkIG51bWJl
ck9mVmFyaWFibGVzID0gdW5saW5rZWRDb2RlQmxvY2stPm1fbnVtQ2FsbGVlTG9jYWxzOwotCi0g
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fYmFzaWNCbG9ja3Muc2l6ZSgpOyBpKyspIHsK
LSAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jayA9IG1fYmFzaWNCbG9ja3NbaV0uZ2V0
KCk7Ci0gICAgICAgIGJsb2NrLT5pbigpLnJlc2l6ZShudW1iZXJPZlZhcmlhYmxlcyk7Ci0gICAg
ICAgIGJsb2NrLT5vdXQoKS5yZXNpemUobnVtYmVyT2ZWYXJpYWJsZXMpOwotICAgIH0KLQotICAg
IGJvb2wgY2hhbmdlZDsKLSAgICBtX2Jhc2ljQmxvY2tzLmxhc3QoKS0+aW4oKS5jbGVhckFsbCgp
OwotICAgIG1fYmFzaWNCbG9ja3MubGFzdCgpLT5vdXQoKS5jbGVhckFsbCgpOwotICAgIEZhc3RC
aXRWZWN0b3IgbmV3T3V0OwotICAgIG5ld091dC5yZXNpemUobV9iYXNpY0Jsb2Nrcy5sYXN0KCkt
Pm91dCgpLm51bUJpdHMoKSk7Ci0gICAgZG8gewotICAgICAgICBjaGFuZ2VkID0gZmFsc2U7Ci0g
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1fYmFzaWNCbG9ja3Muc2l6ZSgpIC0gMTsgaS0tOykg
ewotICAgICAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jayA9IG1fYmFzaWNCbG9ja3Nb
aV0uZ2V0KCk7Ci0gICAgICAgICAgICBuZXdPdXQuY2xlYXJBbGwoKTsKLSAgICAgICAgICAgIGZv
ciAodW5zaWduZWQgaiA9IDA7IGogPCBibG9jay0+c3VjY2Vzc29ycygpLnNpemUoKTsgaisrKQot
ICAgICAgICAgICAgICAgIG5ld091dC5tZXJnZShibG9jay0+c3VjY2Vzc29ycygpW2pdLT5pbigp
KTsKLSAgICAgICAgICAgIGJvb2wgb3V0RGlkQ2hhbmdlID0gYmxvY2stPm91dCgpLnNldEFuZENo
ZWNrKG5ld091dCk7Ci0gICAgICAgICAgICBjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJsb2NrKG1f
Y29kZUJsb2NrLCBibG9jaywgbV9iYXNpY0Jsb2Nrcyk7Ci0gICAgICAgICAgICBjaGFuZ2VkIHw9
IG91dERpZENoYW5nZTsKLSAgICAgICAgfQotICAgIH0gd2hpbGUgKGNoYW5nZWQpOworICAgIEpT
Qzo6Y29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldChjb2RlQmxvY2ssIG9wY29kZUlELCBpbnN0
cnVjdGlvbiwgZnVuY3Rvcik7CiB9CiAKIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpn
ZXRMaXZlbmVzc0luZm9BdEJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBG
YXN0Qml0VmVjdG9yJiByZXN1bHQpCiB7Ci0gICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jayA9
IGZpbmRCYXNpY0Jsb2NrRm9yQnl0ZWNvZGVPZmZzZXQobV9iYXNpY0Jsb2NrcywgYnl0ZWNvZGVP
ZmZzZXQpOworICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2sgPSBtX2dyYXBoLmZpbmRCYXNp
Y0Jsb2NrRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpOwogICAgIEFTU0VSVChibG9j
ayk7CiAgICAgQVNTRVJUKCFibG9jay0+aXNFbnRyeUJsb2NrKCkpOwogICAgIEFTU0VSVCghYmxv
Y2stPmlzRXhpdEJsb2NrKCkpOwogICAgIHJlc3VsdC5yZXNpemUoYmxvY2stPm91dCgpLm51bUJp
dHMoKSk7Ci0gICAgY29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCeXRlY29kZU9mZnNldChtX2NvZGVC
bG9jaywgYmxvY2ssIG1fYmFzaWNCbG9ja3MsIGJ5dGVjb2RlT2Zmc2V0LCByZXN1bHQpOworICAg
IGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQnl0ZWNvZGVPZmZzZXQobV9ncmFwaCwgYmxvY2ssIGJ5
dGVjb2RlT2Zmc2V0LCByZXN1bHQpOwogfQogCiBib29sIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNp
czo6b3BlcmFuZElzTGl2ZUF0Qnl0ZWNvZGVPZmZzZXQoaW50IG9wZXJhbmQsIHVuc2lnbmVkIGJ5
dGVjb2RlT2Zmc2V0KQpAQCAtMjQ1LDExICs4MywxMSBAQCBGYXN0Qml0VmVjdG9yIEJ5dGVjb2Rl
TGl2ZW5lc3NBbmFseXNpczo6Z2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29kZU9mZnNldCh1bnNpZ25l
ZAogdm9pZCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGVGdWxsTGl2ZW5lc3MoRnVs
bEJ5dGVjb2RlTGl2ZW5lc3MmIHJlc3VsdCkKIHsKICAgICBGYXN0Qml0VmVjdG9yIG91dDsKKyAg
ICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IG1fZ3JhcGguY29kZUJsb2NrKCk7CiAgICAgCi0gICAg
cmVzdWx0Lm1fbWFwLnJlc2l6ZShtX2NvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsK
KyAgICByZXN1bHQubV9tYXAucmVzaXplKGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgp
KTsKICAgICAKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2Jhc2ljQmxvY2tzLnNpemUoKTsgaS0t
OykgewotICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrID0gbV9iYXNpY0Jsb2Nrc1tp
XS5nZXQoKTsKKyAgICBmb3IgKHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+JiBi
bG9jayA6IG1fZ3JhcGguYmFzaWNCbG9ja3NJblJldmVyc2VPcmRlcigpKSB7CiAgICAgICAgIGlm
IChibG9jay0+aXNFbnRyeUJsb2NrKCkgfHwgYmxvY2stPmlzRXhpdEJsb2NrKCkpCiAgICAgICAg
ICAgICBjb250aW51ZTsKICAgICAgICAgCkBAIC0yNTcsNyArOTUsNyBAQCB2b2lkIEJ5dGVjb2Rl
TGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0ZUZ1bGxMaXZlbmVzcyhGdWxsQnl0ZWNvZGVMaXZlbmVz
cyYgcmVzdWx0KQogICAgICAgICAKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gYmxvY2stPmJ5
dGVjb2RlT2Zmc2V0cygpLnNpemUoKTsgaS0tOykgewogICAgICAgICAgICAgdW5zaWduZWQgYnl0
ZWNvZGVPZmZzZXQgPSBibG9jay0+Ynl0ZWNvZGVPZmZzZXRzKClbaV07Ci0gICAgICAgICAgICBz
dGVwT3Zlckluc3RydWN0aW9uKG1fY29kZUJsb2NrLCBibG9jaywgbV9iYXNpY0Jsb2NrcywgYnl0
ZWNvZGVPZmZzZXQsIG91dCk7CisgICAgICAgICAgICBzdGVwT3Zlckluc3RydWN0aW9uKG1fZ3Jh
cGgsIGJ5dGVjb2RlT2Zmc2V0LCBvdXQpOwogICAgICAgICAgICAgcmVzdWx0Lm1fbWFwW2J5dGVj
b2RlT2Zmc2V0XSA9IG91dDsKICAgICAgICAgfQogICAgIH0KQEAgLTI2NywxMSArMTA1LDExIEBA
IHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlS2lsbHMoQnl0ZWNvZGVLaWxs
cyYgcmVzdWx0KQogewogICAgIEZhc3RCaXRWZWN0b3Igb3V0OwogICAgIAotICAgIHJlc3VsdC5t
X2NvZGVCbG9jayA9IG1fY29kZUJsb2NrOwotICAgIHJlc3VsdC5tX2tpbGxTZXRzID0gc3RkOjpt
YWtlX3VuaXF1ZTxCeXRlY29kZUtpbGxzOjpLaWxsU2V0W10+KG1fY29kZUJsb2NrLT5pbnN0cnVj
dGlvbnMoKS5zaXplKCkpOworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gbV9ncmFwaC5jb2Rl
QmxvY2soKTsKKyAgICByZXN1bHQubV9jb2RlQmxvY2sgPSBjb2RlQmxvY2s7CisgICAgcmVzdWx0
Lm1fa2lsbFNldHMgPSBzdGQ6Om1ha2VfdW5pcXVlPEJ5dGVjb2RlS2lsbHM6OktpbGxTZXRbXT4o
Y29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5zaXplKCkpOwogICAgIAotICAgIGZvciAodW5zaWdu
ZWQgaSA9IG1fYmFzaWNCbG9ja3Muc2l6ZSgpOyBpLS07KSB7Ci0gICAgICAgIEJ5dGVjb2RlQmFz
aWNCbG9jayogYmxvY2sgPSBtX2Jhc2ljQmxvY2tzW2ldLmdldCgpOworICAgIGZvciAoc3RkOjp1
bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4mIGJsb2NrIDogbV9ncmFwaC5iYXNpY0Jsb2Nr
c0luUmV2ZXJzZU9yZGVyKCkpIHsKICAgICAgICAgaWYgKGJsb2NrLT5pc0VudHJ5QmxvY2soKSB8
fCBibG9jay0+aXNFeGl0QmxvY2soKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAK
QEAgLTI4MCw3ICsxMTgsNyBAQCB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0
ZUtpbGxzKEJ5dGVjb2RlS2lsbHMmIHJlc3VsdCkKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
YmxvY2stPmJ5dGVjb2RlT2Zmc2V0cygpLnNpemUoKTsgaS0tOykgewogICAgICAgICAgICAgdW5z
aWduZWQgYnl0ZWNvZGVPZmZzZXQgPSBibG9jay0+Ynl0ZWNvZGVPZmZzZXRzKClbaV07CiAgICAg
ICAgICAgICBzdGVwT3Zlckluc3RydWN0aW9uKAotICAgICAgICAgICAgICAgIG1fY29kZUJsb2Nr
LCBibG9jaywgbV9iYXNpY0Jsb2NrcywgYnl0ZWNvZGVPZmZzZXQsCisgICAgICAgICAgICAgICAg
bV9ncmFwaCwgYnl0ZWNvZGVPZmZzZXQsIG91dCwKICAgICAgICAgICAgICAgICBbJl0gKHVuc2ln
bmVkIGluZGV4KSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgZm9yIHVzZXMuCiAg
ICAgICAgICAgICAgICAgICAgIGlmIChvdXQuZ2V0KGluZGV4KSkKQEAgLTI5OCwxMiArMTM2LDEz
IEBAIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlS2lsbHMoQnl0ZWNvZGVL
aWxscyYgcmVzdWx0KQogCiB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6ZHVtcFJlc3Vs
dHMoKQogewotICAgIGRhdGFMb2coIlxuRHVtcGluZyBieXRlY29kZSBsaXZlbmVzcyBmb3IgIiwg
Km1fY29kZUJsb2NrLCAiOlxuIik7Ci0gICAgSW50ZXJwcmV0ZXIqIGludGVycHJldGVyID0gbV9j
b2RlQmxvY2stPnZtKCktPmludGVycHJldGVyOwotICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlv
bnNCZWdpbiA9IG1fY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpOwotICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBtX2Jhc2ljQmxvY2tzLnNpemUoKTsgaSsrKSB7Ci0gICAgICAg
IEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2sgPSBtX2Jhc2ljQmxvY2tzW2ldLmdldCgpOwotICAg
ICAgICBkYXRhTG9nRigiXG5CeXRlY29kZSBiYXNpYyBibG9jayAldTogJXAgKG9mZnNldDogJXUs
IGxlbmd0aDogJXUpXG4iLCBpLCBibG9jaywgYmxvY2stPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCks
IGJsb2NrLT50b3RhbEJ5dGVjb2RlTGVuZ3RoKCkpOworICAgIENvZGVCbG9jayogY29kZUJsb2Nr
ID0gbV9ncmFwaC5jb2RlQmxvY2soKTsKKyAgICBkYXRhTG9nKCJcbkR1bXBpbmcgYnl0ZWNvZGUg
bGl2ZW5lc3MgZm9yICIsICpjb2RlQmxvY2ssICI6XG4iKTsKKyAgICBJbnRlcnByZXRlciogaW50
ZXJwcmV0ZXIgPSBjb2RlQmxvY2stPnZtKCktPmludGVycHJldGVyOworICAgIEluc3RydWN0aW9u
KiBpbnN0cnVjdGlvbnNCZWdpbiA9IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsK
KyAgICB1bnNpZ25lZCBpID0gMDsKKyAgICBmb3IgKEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2sg
OiBtX2dyYXBoKSB7CisgICAgICAgIGRhdGFMb2dGKCJcbkJ5dGVjb2RlIGJhc2ljIGJsb2NrICV1
OiAlcCAob2Zmc2V0OiAldSwgbGVuZ3RoOiAldSlcbiIsIGkrKywgYmxvY2ssIGJsb2NrLT5sZWFk
ZXJCeXRlY29kZU9mZnNldCgpLCBibG9jay0+dG90YWxCeXRlY29kZUxlbmd0aCgpKTsKICAgICAg
ICAgZGF0YUxvZ0YoIlN1Y2Nlc3NvcnM6ICIpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSAw
OyBqIDwgYmxvY2stPnN1Y2Nlc3NvcnMoKS5zaXplKCk7IGorKykgewogICAgICAgICAgICAgQnl0
ZWNvZGVCYXNpY0Jsb2NrKiBzdWNjZXNzb3IgPSBibG9jay0+c3VjY2Vzc29ycygpW2pdOwpAQCAt
MzI4LDcgKzE2Nyw3IEBAIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpkdW1wUmVzdWx0
cygpCiAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2dGKCIldSAiLCBqKTsKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIGRhdGFMb2dGKCJcbiIpOwotICAgICAgICAgICAgbV9jb2RlQmxvY2st
PmR1bXBCeXRlY29kZShXVEY6OmRhdGFGaWxlKCksIG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3Qo
KS0+Z2xvYmFsRXhlYygpLCBpbnN0cnVjdGlvbnNCZWdpbiwgY3VycmVudEluc3RydWN0aW9uKTsK
KyAgICAgICAgICAgIGNvZGVCbG9jay0+ZHVtcEJ5dGVjb2RlKFdURjo6ZGF0YUZpbGUoKSwgY29k
ZUJsb2NrLT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpLCBpbnN0cnVjdGlvbnNCZWdpbiwg
Y3VycmVudEluc3RydWN0aW9uKTsKIAogICAgICAgICAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBp
bnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25zQmVnaW5bYnl0ZWNvZGVPZmZzZXRd
LnUub3Bjb2RlKTsKICAgICAgICAgICAgIHVuc2lnbmVkIG9wY29kZUxlbmd0aCA9IG9wY29kZUxl
bmd0aHNbb3Bjb2RlSURdOwpAQCAtMzQ3LDkgKzE4Niw3IEBAIHZvaWQgQnl0ZWNvZGVMaXZlbmVz
c0FuYWx5c2lzOjpkdW1wUmVzdWx0cygpCiAKIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lz
Ojpjb21wdXRlKCkKIHsKLSAgICBjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2NrcyhtX2NvZGVCbG9j
aywgbV9iYXNpY0Jsb2Nrcyk7Ci0gICAgQVNTRVJUKG1fYmFzaWNCbG9ja3Muc2l6ZSgpKTsKLSAg
ICBydW5MaXZlbmVzc0ZpeHBvaW50KCk7CisgICAgcnVuTGl2ZW5lc3NGaXhwb2ludChtX2dyYXBo
KTsKIAogICAgIGlmIChPcHRpb25zOjpkdW1wQnl0ZWNvZGVMaXZlbmVzc1Jlc3VsdHMoKSkKICAg
ICAgICAgZHVtcFJlc3VsdHMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuaAppbmRleCBlY2UxNmYyMWYwMTUx
MGE2NDI3ZmQ4NDExNDA3OWJlZDg3MGMwODc1Li5lMTJjZDhlZGNlNzZlMTIyZWYwNGVlMWYzNWZi
YTgyMWI4ZDdmN2YwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5oCkBAIC0yMywxMCArMjMsMTEgQEAKICAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIEJ5dGVjb2Rl
TGl2ZW5lc3NBbmFseXNpc19oCi0jZGVmaW5lIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc19oCisj
cHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkJ5dGVjb2RlQmFzaWNCbG9jay5oIgorI2luY2x1ZGUg
IkJ5dGVjb2RlR3JhcGguaCIKKyNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlIDx3dGYv
RmFzdEJpdFZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgpAQCAtMzQsMTMgKzM1LDI5IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3Mg
Qnl0ZWNvZGVLaWxsczsKLWNsYXNzIENvZGVCbG9jazsKIGNsYXNzIEZ1bGxCeXRlY29kZUxpdmVu
ZXNzOwogCi1jbGFzcyBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMgewordGVtcGxhdGU8dHlwZW5h
bWUgRGVyaXZlZEFuYWx5c2lzPgorY2xhc3MgQnl0ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0aW9uIHsK
K3Byb3RlY3RlZDoKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBHcmFwaCwgdHlwZW5hbWUgVXNlRnVu
Y3RvciwgdHlwZW5hbWUgRGVmRnVuY3Rvcj4gdm9pZCBzdGVwT3Zlckluc3RydWN0aW9uKEdyYXBo
JiwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIEZhc3RCaXRWZWN0b3ImIG91dCwgY29uc3QgVXNl
RnVuY3RvciYsIGNvbnN0IERlZkZ1bmN0b3ImKTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEdy
YXBoPiB2b2lkIHN0ZXBPdmVySW5zdHJ1Y3Rpb24oR3JhcGgmLCB1bnNpZ25lZCBieXRlY29kZU9m
ZnNldCwgRmFzdEJpdFZlY3RvciYgb3V0KTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEdyYXBo
PiBib29sIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQnl0ZWNvZGVPZmZzZXQoR3JhcGgmLCBCeXRl
Y29kZUJhc2ljQmxvY2sqLCB1bnNpZ25lZCB0YXJnZXRPZmZzZXQsIEZhc3RCaXRWZWN0b3ImIHJl
c3VsdCk7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBHcmFwaD4gYm9vbCBjb21wdXRlTG9jYWxM
aXZlbmVzc0ZvckJsb2NrKEdyYXBoJiwgQnl0ZWNvZGVCYXNpY0Jsb2NrKik7CisKKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBHcmFwaD4gRmFzdEJpdFZlY3RvciBnZXRMaXZlbmVzc0luZm9BdEJ5dGVj
b2RlT2Zmc2V0KEdyYXBoJiwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpOworCisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgR3JhcGg+IHZvaWQgcnVuTGl2ZW5lc3NGaXhwb2ludChHcmFwaCYpOworfTsK
KworY2xhc3MgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzIDogcHJpdmF0ZSBCeXRlY29kZUxpdmVu
ZXNzUHJvcGFnYXRpb248Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzPiB7CiAgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQnl0ZWNvZGVMaXZlbmVz
c0FuYWx5c2lzKTsKIHB1YmxpYzoKKyAgICBmcmllbmQgY2xhc3MgQnl0ZWNvZGVMaXZlbmVzc1By
b3BhZ2F0aW9uPEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcz47CiAgICAgQnl0ZWNvZGVMaXZlbmVz
c0FuYWx5c2lzKENvZGVCbG9jayopOwogICAgIAogICAgIGJvb2wgb3BlcmFuZElzTGl2ZUF0Qnl0
ZWNvZGVPZmZzZXQoaW50IG9wZXJhbmQsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KTsKQEAgLTUx
LDE5ICs2OCwxOSBAQCBjbGFzcyBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMgewogCiBwcml2YXRl
OgogICAgIHZvaWQgY29tcHV0ZSgpOwotICAgIHZvaWQgcnVuTGl2ZW5lc3NGaXhwb2ludCgpOwog
ICAgIHZvaWQgZHVtcFJlc3VsdHMoKTsKIAogICAgIHZvaWQgZ2V0TGl2ZW5lc3NJbmZvQXRCeXRl
Y29kZU9mZnNldCh1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgRmFzdEJpdFZlY3RvciYpOwogCi0g
ICAgQ29kZUJsb2NrKiBtX2NvZGVCbG9jazsKLSAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5
dGVjb2RlQmFzaWNCbG9jaz4+IG1fYmFzaWNCbG9ja3M7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
RnVuY3Rvcj4gdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayosIE9w
Y29kZUlELCBJbnN0cnVjdGlvbiosIEZhc3RCaXRWZWN0b3ImLCBjb25zdCBGdW5jdG9yJik7Cisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2Rl
T2Zmc2V0KENvZGVCbG9jayosIE9wY29kZUlELCBJbnN0cnVjdGlvbiosIEZhc3RCaXRWZWN0b3Im
LCBjb25zdCBGdW5jdG9yJik7CisKKyAgICBCeXRlY29kZUdyYXBoPENvZGVCbG9jaz4gbV9ncmFw
aDsKIH07CiAKIGlubGluZSBib29sIG9wZXJhbmRJc0Fsd2F5c0xpdmUoaW50IG9wZXJhbmQpOwog
aW5saW5lIGJvb2wgb3BlcmFuZFRoYXRJc05vdEFsd2F5c0xpdmVJc0xpdmUoY29uc3QgRmFzdEJp
dFZlY3RvciYgb3V0LCBpbnQgb3BlcmFuZCk7CiBpbmxpbmUgYm9vbCBvcGVyYW5kSXNMaXZlKGNv
bnN0IEZhc3RCaXRWZWN0b3ImIG91dCwgaW50IG9wZXJhbmQpOworaW5saW5lIGJvb2wgaXNWYWxp
ZFJlZ2lzdGVyRm9yTGl2ZW5lc3MoaW50IG9wZXJhbmQpOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MK
LQotI2VuZGlmIC8vIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc19oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzSW5saW5l
cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFs
eXNpc0lubGluZXMuaAppbmRleCA5YjVjNzU1ZmNiNmNkNTE4MDUxNDUwMDc4OTIyYWM0ZDZkNGQy
MzhmLi5jZjZjOGQyYTQzNGQxZGU5NjFhYTRhOWIxZTBlNGQwYzRmYzFkZTE5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lz
SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxp
dmVuZXNzQW5hbHlzaXNJbmxpbmVzLmgKQEAgLTIzLDExICsyMywxMiBAQAogICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgQnl0ZWNvZGVMaXZlbmVzc0Fu
YWx5c2lzSW5saW5lc19oCi0jZGVmaW5lIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGluZXNf
aAorI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJCeXRlY29kZUdyYXBoLmgiCiAjaW5jbHVkZSAi
Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5j
bHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJPcGVyYXRpb25zLmgiCiAKIG5hbWVzcGFj
ZSBKU0MgewpAQCAtNTAsNyArNTEsMTUxIEBAIGlubGluZSBib29sIG9wZXJhbmRJc0xpdmUoY29u
c3QgRmFzdEJpdFZlY3RvciYgb3V0LCBpbnQgb3BlcmFuZCkKICAgICByZXR1cm4gb3BlcmFuZElz
QWx3YXlzTGl2ZShvcGVyYW5kKSB8fCBvcGVyYW5kVGhhdElzTm90QWx3YXlzTGl2ZUlzTGl2ZShv
dXQsIG9wZXJhbmQpOwogfQogCi19IC8vIG5hbWVzcGFjZSBKU0MKK2lubGluZSBib29sIGlzVmFs
aWRSZWdpc3RlckZvckxpdmVuZXNzKGludCBvcGVyYW5kKQoreworICAgIFZpcnR1YWxSZWdpc3Rl
ciB2aXJ0dWFsUmVnKG9wZXJhbmQpOworICAgIGlmICh2aXJ0dWFsUmVnLmlzQ29uc3RhbnQoKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiB2aXJ0dWFsUmVnLmlzTG9jYWwoKTsK
K30KKworLy8gU2ltcGxpZmllZCBpbnRlcmZhY2UgdG8gYnl0ZWNvZGUgdXNlL2RlZiwgd2hpY2gg
ZGV0ZXJtaW5lcyBkZWZzIGZpcnN0IGFuZCB0aGVuIHVzZXMsIGFuZCBpbmNsdWRlcworLy8gZXhj
ZXB0aW9uIGhhbmRsZXJzIGluIHRoZSB1c2VzLgordGVtcGxhdGU8dHlwZW5hbWUgRGVyaXZlZEFu
YWx5c2lzPgordGVtcGxhdGU8dHlwZW5hbWUgR3JhcGgsIHR5cGVuYW1lIFVzZUZ1bmN0b3IsIHR5
cGVuYW1lIERlZkZ1bmN0b3I+CitpbmxpbmUgdm9pZCBCeXRlY29kZUxpdmVuZXNzUHJvcGFnYXRp
b248RGVyaXZlZEFuYWx5c2lzPjo6c3RlcE92ZXJJbnN0cnVjdGlvbihHcmFwaCYgZ3JhcGgsIHVu
c2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBGYXN0Qml0VmVjdG9yJiBvdXQsIGNvbnN0IFVzZUZ1bmN0
b3ImIHVzZSwgY29uc3QgRGVmRnVuY3RvciYgZGVmKQoreworICAgIC8vIFRoaXMgYWJzdHJhY3Rs
eSBleGVjdXRlIHRoZSBpbnN0cnVjdGlvbiBpbiByZXZlcnNlLiBJbnN0cnVjdGlvbnMgbG9naWNh
bGx5IGZpcnN0IHVzZSBvcGVyYW5kcyBhbmQKKyAgICAvLyB0aGVuIGRlZmluZSBvcGVyYW5kcy4g
VGhpcyBsb2dpY2FsIG9yZGVyaW5nIGlzIG5lY2Vzc2FyeSBmb3Igb3BlcmF0aW9ucyB0aGF0IHVz
ZSBhbmQgZGVmIHRoZSBzYW1lCisgICAgLy8gb3BlcmFuZCwgbGlrZToKKyAgICAvLworICAgIC8v
ICAgICBvcF9hZGQgbG9jMSwgbG9jMSwgbG9jMgorICAgIC8vCisgICAgLy8gVGhlIHVzZSBvZiBs
b2MxIGhhcHBlbnMgYmVmb3JlIHRoZSBkZWYgb2YgbG9jMS4gVGhhdCdzIGEgc2VtYW50aWMgcmVx
dWlyZW1lbnQgc2luY2UgdGhlIGFkZAorICAgIC8vIG9wZXJhdGlvbiBjYW5ub3QgdHJhdmVsIGZv
cndhcmQgaW4gdGltZSB0byByZWFkIHRoZSB2YWx1ZSB0aGF0IGl0IHdpbGwgcHJvZHVjZSBhZnRl
ciByZWFkaW5nIHRoYXQKKyAgICAvLyB2YWx1ZS4gU2luY2Ugd2UgYXJlIGV4ZWN1dGluZyBpbiBy
ZXZlcnNlLCB0aGlzIG1lYW5zIHRoYXQgd2UgbXVzdCBkbyBkZWZzIGJlZm9yZSB1c2VzIChyZXZl
cnNlIG9mCisgICAgLy8gdXNlcyBiZWZvcmUgZGVmcykuCisgICAgLy8KKyAgICAvLyBTaW5jZSB0
aGlzIGlzIGEgbGl2ZW5lc3MgYW5hbHlzaXMsIHRoaXMgb3JkZXJpbmcgZW5kcyB1cCBiZWluZyBw
YXJ0aWN1bGFybHkgaW1wb3J0YW50OiBpZiB3ZSBkaWQKKyAgICAvLyB1c2VzIGJlZm9yZSBkZWZz
LCB0aGVuIHRoZSBhZGQgb3BlcmF0aW9uIGFib3ZlIHdvdWxkIGFwcGVhciB0byBub3QgaGF2ZSBs
b2MxIGxpdmUsIHNpbmNlIHdlJ2QKKyAgICAvLyBmaXJzdCBhZGQgaXQgdG8gdGhlIG91dCBzZXQg
KHRoZSB1c2UpLCBhbmQgdGhlbiB3ZSdkIHJlbW92ZSBpdCAodGhlIGRlZikuCisKKyAgICBhdXRv
KiBjb2RlQmxvY2sgPSBncmFwaC5jb2RlQmxvY2soKTsKKyAgICBJbnRlcnByZXRlciogaW50ZXJw
cmV0ZXIgPSBjb2RlQmxvY2stPnZtKCktPmludGVycHJldGVyOworICAgIGF1dG8qIGluc3RydWN0
aW9uc0JlZ2luID0gZ3JhcGguaW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsKKyAgICBhdXRvKiBpbnN0
cnVjdGlvbiA9ICZpbnN0cnVjdGlvbnNCZWdpbltieXRlY29kZU9mZnNldF07CisgICAgT3Bjb2Rl
SUQgb3Bjb2RlSUQgPSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoKmluc3RydWN0aW9uKTsKKwor
ICAgIHN0YXRpY19jYXN0PERlcml2ZWRBbmFseXNpcyo+KHRoaXMpLT5jb21wdXRlRGVmc0ZvckJ5
dGVjb2RlT2Zmc2V0KAorICAgICAgICBjb2RlQmxvY2ssIG9wY29kZUlELCBpbnN0cnVjdGlvbiwg
b3V0LAorICAgICAgICBbJl0gKHR5cGVuYW1lIEdyYXBoOjpDb2RlQmxvY2sqLCB0eXBlbmFtZSBH
cmFwaDo6SW5zdHJ1Y3Rpb24qLCBPcGNvZGVJRCwgaW50IG9wZXJhbmQpIHsKKyAgICAgICAgICAg
IGlmIChpc1ZhbGlkUmVnaXN0ZXJGb3JMaXZlbmVzcyhvcGVyYW5kKSkKKyAgICAgICAgICAgICAg
ICBkZWYoVmlydHVhbFJlZ2lzdGVyKG9wZXJhbmQpLnRvTG9jYWwoKSk7CisgICAgICAgIH0pOwor
CisgICAgc3RhdGljX2Nhc3Q8RGVyaXZlZEFuYWx5c2lzKj4odGhpcyktPmNvbXB1dGVVc2VzRm9y
Qnl0ZWNvZGVPZmZzZXQoCisgICAgICAgIGNvZGVCbG9jaywgb3Bjb2RlSUQsIGluc3RydWN0aW9u
LCBvdXQsCisgICAgICAgIFsmXSAodHlwZW5hbWUgR3JhcGg6OkNvZGVCbG9jayosIHR5cGVuYW1l
IEdyYXBoOjpJbnN0cnVjdGlvbiosIE9wY29kZUlELCBpbnQgb3BlcmFuZCkgeworICAgICAgICAg
ICAgaWYgKGlzVmFsaWRSZWdpc3RlckZvckxpdmVuZXNzKG9wZXJhbmQpKQorICAgICAgICAgICAg
ICAgIHVzZShWaXJ0dWFsUmVnaXN0ZXIob3BlcmFuZCkudG9Mb2NhbCgpKTsKKyAgICAgICAgfSk7
CisKKyAgICAvLyBJZiB3ZSBoYXZlIGFuIGV4Y2VwdGlvbiBoYW5kbGVyLCB3ZSB3YW50IHRoZSBs
aXZlLWluIHZhcmlhYmxlcyBvZiB0aGUgCisgICAgLy8gZXhjZXB0aW9uIGhhbmRsZXIgYmxvY2sg
dG8gYmUgaW5jbHVkZWQgaW4gdGhlIGxpdmUtaW4gb2YgdGhpcyBwYXJ0aWN1bGFyIGJ5dGVjb2Rl
LgorICAgIGlmIChhdXRvKiBoYW5kbGVyID0gY29kZUJsb2NrLT5oYW5kbGVyRm9yQnl0ZWNvZGVP
ZmZzZXQoYnl0ZWNvZGVPZmZzZXQpKSB7CisgICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogaGFu
ZGxlckJsb2NrID0gZ3JhcGguZmluZEJhc2ljQmxvY2tXaXRoTGVhZGVyT2Zmc2V0KGhhbmRsZXIt
PnRhcmdldCk7CisgICAgICAgIEFTU0VSVChoYW5kbGVyQmxvY2spOworICAgICAgICBoYW5kbGVy
QmxvY2stPmluKCkuZm9yRWFjaFNldEJpdCh1c2UpOworICAgIH0KK30KKwordGVtcGxhdGU8dHlw
ZW5hbWUgRGVyaXZlZEFuYWx5c2lzPgordGVtcGxhdGU8dHlwZW5hbWUgR3JhcGg+CitpbmxpbmUg
dm9pZCBCeXRlY29kZUxpdmVuZXNzUHJvcGFnYXRpb248RGVyaXZlZEFuYWx5c2lzPjo6c3RlcE92
ZXJJbnN0cnVjdGlvbihHcmFwaCYgZ3JhcGgsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBGYXN0
Qml0VmVjdG9yJiBvdXQpCit7CisgICAgc3RlcE92ZXJJbnN0cnVjdGlvbigKKyAgICAgICAgZ3Jh
cGgsIGJ5dGVjb2RlT2Zmc2V0LCBvdXQsCisgICAgICAgIFsmXSAodW5zaWduZWQgYml0SW5kZXgp
IHsKKyAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIHVzZSBmdW5jdG9yLCBzbyB3ZSBzZXQgdGhl
IGJpdC4KKyAgICAgICAgICAgIG91dC5zZXQoYml0SW5kZXgpOworICAgICAgICB9LAorICAgICAg
ICBbJl0gKHVuc2lnbmVkIGJpdEluZGV4KSB7CisgICAgICAgICAgICAvLyBUaGlzIGlzIHRoZSBk
ZWYgZnVuY3Rvciwgc28gd2UgY2xlYXIgdGhlIGJpdC4KKyAgICAgICAgICAgIG91dC5jbGVhcihi
aXRJbmRleCk7CisgICAgICAgIH0pOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBEZXJpdmVkQW5h
bHlzaXM+Cit0ZW1wbGF0ZTx0eXBlbmFtZSBHcmFwaD4KK2lubGluZSBib29sIEJ5dGVjb2RlTGl2
ZW5lc3NQcm9wYWdhdGlvbjxEZXJpdmVkQW5hbHlzaXM+Ojpjb21wdXRlTG9jYWxMaXZlbmVzc0Zv
ckJ5dGVjb2RlT2Zmc2V0KEdyYXBoJiBncmFwaCwgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaywg
dW5zaWduZWQgdGFyZ2V0T2Zmc2V0LCBGYXN0Qml0VmVjdG9yJiByZXN1bHQpCit7CisgICAgQVNT
RVJUKCFibG9jay0+aXNFeGl0QmxvY2soKSk7CisgICAgQVNTRVJUKCFibG9jay0+aXNFbnRyeUJs
b2NrKCkpOwogCi0jZW5kaWYgLy8gQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzSW5saW5lc19oCisg
ICAgRmFzdEJpdFZlY3RvciBvdXQgPSBibG9jay0+b3V0KCk7CiAKKyAgICBmb3IgKGludCBpID0g
YmxvY2stPmJ5dGVjb2RlT2Zmc2V0cygpLnNpemUoKSAtIDE7IGkgPj0gMDsgaS0tKSB7CisgICAg
ICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0ID0gYmxvY2stPmJ5dGVjb2RlT2Zmc2V0cygpW2ld
OworICAgICAgICBpZiAodGFyZ2V0T2Zmc2V0ID4gYnl0ZWNvZGVPZmZzZXQpCisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgc3RlcE92ZXJJbnN0cnVjdGlvbihncmFwaCwgYnl0ZWNvZGVPZmZz
ZXQsIG91dCk7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdC5zZXRBbmRDaGVjayhvdXQpOwor
fQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBEZXJpdmVkQW5hbHlzaXM+Cit0ZW1wbGF0ZTx0eXBlbmFt
ZSBHcmFwaD4KK2lubGluZSBib29sIEJ5dGVjb2RlTGl2ZW5lc3NQcm9wYWdhdGlvbjxEZXJpdmVk
QW5hbHlzaXM+Ojpjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJsb2NrKEdyYXBoJiBncmFwaCwgQnl0
ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaykKK3sKKyAgICBpZiAoYmxvY2stPmlzRXhpdEJsb2NrKCkg
fHwgYmxvY2stPmlzRW50cnlCbG9jaygpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0
dXJuIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQnl0ZWNvZGVPZmZzZXQoZ3JhcGgsIGJsb2NrLCBi
bG9jay0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKSwgYmxvY2stPmluKCkpOworfQorCit0ZW1wbGF0
ZTx0eXBlbmFtZSBEZXJpdmVkQW5hbHlzaXM+Cit0ZW1wbGF0ZTx0eXBlbmFtZSBHcmFwaD4KK2lu
bGluZSBGYXN0Qml0VmVjdG9yIEJ5dGVjb2RlTGl2ZW5lc3NQcm9wYWdhdGlvbjxEZXJpdmVkQW5h
bHlzaXM+OjpnZXRMaXZlbmVzc0luZm9BdEJ5dGVjb2RlT2Zmc2V0KEdyYXBoJiBncmFwaCwgdW5z
aWduZWQgYnl0ZWNvZGVPZmZzZXQpCit7CisgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jayA9
IGdyYXBoLmZpbmRCYXNpY0Jsb2NrRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpOwor
ICAgIEFTU0VSVChibG9jayk7CisgICAgQVNTRVJUKCFibG9jay0+aXNFbnRyeUJsb2NrKCkpOwor
ICAgIEFTU0VSVCghYmxvY2stPmlzRXhpdEJsb2NrKCkpOworICAgIEZhc3RCaXRWZWN0b3Igb3V0
OworICAgIG91dC5yZXNpemUoYmxvY2stPm91dCgpLm51bUJpdHMoKSk7CisgICAgY29tcHV0ZUxv
Y2FsTGl2ZW5lc3NGb3JCeXRlY29kZU9mZnNldChncmFwaCwgYmxvY2ssIGJ5dGVjb2RlT2Zmc2V0
LCBvdXQpOworICAgIHJldHVybiBvdXQ7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIERlcml2ZWRB
bmFseXNpcz4KK3RlbXBsYXRlPHR5cGVuYW1lIEdyYXBoPgoraW5saW5lIHZvaWQgQnl0ZWNvZGVM
aXZlbmVzc1Byb3BhZ2F0aW9uPERlcml2ZWRBbmFseXNpcz46OnJ1bkxpdmVuZXNzRml4cG9pbnQo
R3JhcGgmIGdyYXBoKQoreworICAgIGF1dG8qIGNvZGVCbG9jayA9IGdyYXBoLmNvZGVCbG9jaygp
OworICAgIHVuc2lnbmVkIG51bWJlck9mVmFyaWFibGVzID0gY29kZUJsb2NrLT5udW1DYWxsZWVM
b2NhbHMoKTsKKyAgICBmb3IgKEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2sgOiBncmFwaCkgewor
ICAgICAgICBibG9jay0+aW4oKS5yZXNpemUobnVtYmVyT2ZWYXJpYWJsZXMpOworICAgICAgICBi
bG9jay0+b3V0KCkucmVzaXplKG51bWJlck9mVmFyaWFibGVzKTsKKyAgICAgICAgYmxvY2stPmlu
KCkuY2xlYXJBbGwoKTsKKyAgICAgICAgYmxvY2stPm91dCgpLmNsZWFyQWxsKCk7CisgICAgfQor
CisgICAgYm9vbCBjaGFuZ2VkOworICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogbGFzdEJsb2NrID0g
Z3JhcGgubGFzdCgpOworICAgIGxhc3RCbG9jay0+aW4oKS5jbGVhckFsbCgpOworICAgIGxhc3RC
bG9jay0+b3V0KCkuY2xlYXJBbGwoKTsKKyAgICBGYXN0Qml0VmVjdG9yIG5ld091dDsKKyAgICBu
ZXdPdXQucmVzaXplKGxhc3RCbG9jay0+b3V0KCkubnVtQml0cygpKTsKKyAgICBkbyB7CisgICAg
ICAgIGNoYW5nZWQgPSBmYWxzZTsKKyAgICAgICAgZm9yIChzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNv
ZGVCYXNpY0Jsb2NrPiYgYmxvY2sgOiBncmFwaC5iYXNpY0Jsb2Nrc0luUmV2ZXJzZU9yZGVyKCkp
IHsKKyAgICAgICAgICAgIG5ld091dC5jbGVhckFsbCgpOworICAgICAgICAgICAgZm9yIChCeXRl
Y29kZUJhc2ljQmxvY2sqIHN1Y2Nlc3NvciA6IGJsb2NrLT5zdWNjZXNzb3JzKCkpCisgICAgICAg
ICAgICAgICAgbmV3T3V0Lm1lcmdlKHN1Y2Nlc3Nvci0+aW4oKSk7CisgICAgICAgICAgICBibG9j
ay0+b3V0KCkuc2V0KG5ld091dCk7CisgICAgICAgICAgICBjaGFuZ2VkIHw9IGNvbXB1dGVMb2Nh
bExpdmVuZXNzRm9yQmxvY2soZ3JhcGgsIGJsb2NrLmdldCgpKTsKKyAgICAgICAgfQorICAgIH0g
d2hpbGUgKGNoYW5nZWQpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVJld3JpdGVyLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVJld3JpdGVyLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5kOTMwYjk4ZGRjM2EwMGQ1NjIwYzFlNzk0NTJkMjRkMDlkMjA5MDc2Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlUmV3cml0ZXIuY3Bw
CkBAIC0wLDAgKzEsMTE4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IFl1c3VrZSBTdXp1
a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJCeXRlY29kZVJld3JpdGVyLmgiCisKKyNpbmNsdWRlIDx3dGYvQnViYmxlU29y
dC5oPgorCituYW1lc3BhY2UgSlNDIHsKKwordm9pZCBCeXRlY29kZVJld3JpdGVyOjphcHBseU1v
ZGlmaWNhdGlvbigpCit7CisgICAgZm9yIChzaXplX3QgaW5zZXJ0aW9uSW5kZXggPSBtX2luc2Vy
dGlvbnMuc2l6ZSgpOyBpbnNlcnRpb25JbmRleC0tOykgeworICAgICAgICBJbnNlcnRpb24mIGlu
c2VydGlvbiA9IG1faW5zZXJ0aW9uc1tpbnNlcnRpb25JbmRleF07CisgICAgICAgIGlmIChpbnNl
cnRpb24uZWxlbWVudCgpLnR5cGUgPT0gQ29tbWFuZDo6VHlwZTo6UmVtb3ZlKQorICAgICAgICAg
ICAgbV9ncmFwaC5pbnN0cnVjdGlvbnMoKS5yZW1vdmUoaW5zZXJ0aW9uLmluZGV4KCksIGluc2Vy
dGlvbi5lbGVtZW50KCkubGVuZ3RoKCkpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGlm
IChpbnNlcnRpb24uZWxlbWVudCgpLmJ5dGVjb2RlVHlwZSA9PSBDb21tYW5kOjpCeXRlY29kZVR5
cGU6OkJyYW5jaCkKKyAgICAgICAgICAgICAgICBhZGp1c3RKdW1wSW5zZXJ0aW9uKGFkanVzdE9m
ZnNldFdpdGhJbnNlcnRpb25zKDAsIGluc2VydGlvbi5pbmRleCgpLCBtX2luc2VydGlvbnMuYmVn
aW4oKSwgbV9pbnNlcnRpb25zLmJlZ2luKCkgKyBpbnNlcnRpb25JbmRleCksIGluc2VydGlvbik7
CisgICAgICAgICAgICBtX2dyYXBoLmluc3RydWN0aW9ucygpLmluc2VydFZlY3RvcihpbnNlcnRp
b24uaW5kZXgoKSwgaW5zZXJ0aW9uLmVsZW1lbnQoKS5pbnN0cnVjdGlvbnMpOworICAgICAgICB9
CisgICAgfQorICAgIG1faW5zZXJ0aW9ucy5jbGVhcigpOworfQorCit2b2lkIEJ5dGVjb2RlUmV3
cml0ZXI6OmV4ZWN1dGUoKQoreworICAgIFdURjo6YnViYmxlU29ydChtX2luc2VydGlvbnMuYmVn
aW4oKSwgbV9pbnNlcnRpb25zLmVuZCgpLCBbXSAoY29uc3QgSW5zZXJ0aW9uJiBsaHMsIGNvbnN0
IEluc2VydGlvbiYgcmhzKSB7CisgICAgICAgIGlmIChsaHMuaW5kZXgoKSA9PSByaHMuaW5kZXgo
KSkgeworICAgICAgICAgICAgaWYgKGxocy5lbGVtZW50KCkudHlwZSA9PSByaHMuZWxlbWVudCgp
LnR5cGUpCisgICAgICAgICAgICAgICAgcmV0dXJuIGxocy5lbGVtZW50KCkucG9zaXRpb24gPCBy
aHMuZWxlbWVudCgpLnBvc2l0aW9uOworICAgICAgICAgICAgLy8gV2Ugd291bGQgbGlrZSB0byBw
ZXJmb3JtIHJlbW92ZSBvcGVyYXRpb24gYmVmb3JlIGluc2VydGlvbi4KKyAgICAgICAgICAgIHJl
dHVybiBsaHMuZWxlbWVudCgpLnR5cGUgPCByaHMuZWxlbWVudCgpLnR5cGU7CisgICAgICAgIH0K
KyAgICAgICAgcmV0dXJuIGxocyA8IHJoczsKKyAgICB9KTsKKworICAgIC8vIENvbnZlcnQgdG8g
YWJzb2x1dGUgZmluYWwgb2Zmc2V0cy4KKyAgICBmb3IgKFN3aXRjaEVudHJ5JiBlbnRyeSA6IG1f
aW5zZXJ0ZWRTd2l0Y2hlcykgeworICAgICAgICBVbmxpbmtlZFNpbXBsZUp1bXBUYWJsZSYgdGFi
bGUgPSBtX2dyYXBoLmNvZGVCbG9jaygpLT5zd2l0Y2hKdW1wVGFibGUoZW50cnkudGFibGVJbmRl
eCk7CisgICAgICAgIGVudHJ5LmRlZmF1bHRPZmZzZXQgPSBhZGp1c3RPZmZzZXQoMCwgZW50cnku
ZGVmYXVsdE9mZnNldCk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IHRhYmxlLmJyYW5jaE9m
ZnNldHMuc2l6ZSgpOyBpLS07KQorICAgICAgICAgICAgdGFibGUuYnJhbmNoT2Zmc2V0c1tpXSA9
IGFkanVzdE9mZnNldCgwLCB0YWJsZS5icmFuY2hPZmZzZXRzW2ldKTsKKyAgICB9CisKKyAgICBV
bmxpbmtlZENvZGVCbG9jayogY29kZUJsb2NrID0gbV9ncmFwaC5jb2RlQmxvY2soKTsKKyAgICBj
b2RlQmxvY2stPmFwcGx5TW9kaWZpY2F0aW9uKCp0aGlzKTsKK30KKwordm9pZCBCeXRlY29kZVJl
d3JpdGVyOjphZGp1c3RKdW1wSW5zZXJ0aW9uKHVuc2lnbmVkIGZpbmFsT2Zmc2V0LCBJbnNlcnRp
b24mIGluc2VydGlvbikKK3sKKyAgICBTd2l0Y2hFbnRyeSYgZW50cnkgPSBtX2luc2VydGVkU3dp
dGNoZXNbaW5zZXJ0aW9uLmVsZW1lbnQoKS5qdW1wRW50cnldOworICAgIFVubGlua2VkU2ltcGxl
SnVtcFRhYmxlJiB0YWJsZSA9IG1fZ3JhcGguY29kZUJsb2NrKCktPnN3aXRjaEp1bXBUYWJsZShl
bnRyeS50YWJsZUluZGV4KTsKKworICAgIGZvciAodW5zaWduZWQgaSA9IHRhYmxlLmJyYW5jaE9m
ZnNldHMuc2l6ZSgpOyBpLS07KQorICAgICAgICB0YWJsZS5icmFuY2hPZmZzZXRzW2ldID0gdGFi
bGUuYnJhbmNoT2Zmc2V0c1tpXSAtIHN0YXRpY19jYXN0PGludD4oZmluYWxPZmZzZXQpOworCisg
ICAgaW5zZXJ0aW9uLmVsZW1lbnQoKS5pbnN0cnVjdGlvbnNbMl0gPSBzdGF0aWNfY2FzdDxpbnQ+
KGVudHJ5LmRlZmF1bHRPZmZzZXQpIC0gc3RhdGljX2Nhc3Q8aW50PihmaW5hbE9mZnNldCk7Cit9
CisKK3ZvaWQgQnl0ZWNvZGVSZXdyaXRlcjo6aW5zZXJ0SW1wbCh1bnNpZ25lZCBqdW1wRW50cnks
IENvbW1hbmQ6OkJ5dGVjb2RlVHlwZSBieXRlY29kZVR5cGUsIFBvc2l0aW9uIHBvc2l0aW9uLCB1
bnNpZ25lZCBieXRlY29kZU9mZnNldCwgVmVjdG9yPFVubGlua2VkSW5zdHJ1Y3Rpb24+JiYgZnJh
Z21lbnQpCit7CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShwb3NpdGlvbiAhPSBQb3NpdGlvbjo6
QmFzZVBvaW50LCAiQmFzZVBvaW50IGlzIG5vdCBhbGxvd2VkLiIpOworICAgIG1faW5zZXJ0aW9u
cy5hcHBlbmQoSW5zZXJ0aW9uKGJ5dGVjb2RlT2Zmc2V0LCBDb21tYW5kIHsKKyAgICAgICAgQ29t
bWFuZDo6VHlwZTo6SW5zZXJ0LAorICAgICAgICBwb3NpdGlvbiwKKyAgICAgICAgYnl0ZWNvZGVU
eXBlLAorICAgICAgICBqdW1wRW50cnksCisgICAgICAgIDAsCisgICAgICAgIFdURk1vdmUoZnJh
Z21lbnQpCisgICAgfSkpOworfQorCitVbmxpbmtlZFNpbXBsZUp1bXBUYWJsZSYgQnl0ZWNvZGVS
ZXdyaXRlcjo6aW5zZXJ0U3dpdGNoSW1tZWRpYXRlSW1wbChQb3NpdGlvbiBwb3NpdGlvbiwgdW5z
aWduZWQgYnl0ZWNvZGVPZmZzZXQsIHVuc2lnbmVkIGRlZmF1bHRPZmZzZXQsIGludCByZWcpCit7
CisgICAgU3dpdGNoRW50cnkgZW50cnkgeworICAgICAgICBtX2dyYXBoLmNvZGVCbG9jaygpLT5u
dW1iZXJPZlN3aXRjaEp1bXBUYWJsZXMoKSwKKyAgICAgICAgZGVmYXVsdE9mZnNldCwKKyAgICB9
OworCisgICAgVmVjdG9yPFVubGlua2VkSW5zdHJ1Y3Rpb24+IGZyYWdtZW50ID0geworICAgICAg
ICBVbmxpbmtlZEluc3RydWN0aW9uKG9wX3N3aXRjaF9pbW0pLAorICAgICAgICBVbmxpbmtlZElu
c3RydWN0aW9uKGVudHJ5LnRhYmxlSW5kZXgpLAorICAgICAgICBVbmxpbmtlZEluc3RydWN0aW9u
KGRlZmF1bHRPZmZzZXQpLAorICAgICAgICBVbmxpbmtlZEluc3RydWN0aW9uKHJlZykKKyAgICB9
OworCisgICAgYXV0byYganVtcFRhYmxlID0gbV9ncmFwaC5jb2RlQmxvY2soKS0+YWRkU3dpdGNo
SnVtcFRhYmxlKCk7CisgICAgdW5zaWduZWQganVtcEVudHJ5ID0gbV9pbnNlcnRlZFN3aXRjaGVz
LnNpemUoKTsKKyAgICBtX2luc2VydGVkU3dpdGNoZXMuYXBwZW5kKGVudHJ5KTsKKyAgICBpbnNl
cnRJbXBsKGp1bXBFbnRyeSwgQ29tbWFuZDo6Qnl0ZWNvZGVUeXBlOjpCcmFuY2gsIHBvc2l0aW9u
LCBieXRlY29kZU9mZnNldCwgV1RGTW92ZShmcmFnbWVudCkpOworICAgIHJldHVybiBqdW1wVGFi
bGU7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlUmV3cml0ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZVJld3JpdGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmVhMDlkOWEzYzRkMTdm
MWE2OGVkZDA2MmI4OWQzYjE3MTY0MTdiNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVJld3JpdGVyLmgKQEAgLTAsMCArMSwyMDIgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21h
aWwuY29tPgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJCeXRlY29kZUdyYXBo
LmgiCisjaW5jbHVkZSAiQnl0ZWNvZGVzLmgiCisjaW5jbHVkZSAiT3Bjb2RlLmgiCisjaW5jbHVk
ZSAiVW5saW5rZWRDb2RlQmxvY2suaCIKKyNpbmNsdWRlIDx3dGYvSW5zZXJ0aW9uLmg+CisKK25h
bWVzcGFjZSBKU0MgeworCisvLyBXZSB1c2UgdGhlIG9yaWdpbmFsIGJ5dGVjb2RlIG9mZnNldHMg
YXMgbGFiZWxzLgorLy8gV2UgdXNlIHRoZSBsYWJlbHMgdG8gcmVwcmVzZW50cyB0aGUgcG9zaXRp
b24gdGhlIG5ldyBieXRlY29kZXMgaW5zZXJ0ZWQgYW5kIHRoZSB0YXJnZXQgd2UganVtcCB0by4K
K2NsYXNzIEJ5dGVjb2RlUmV3cml0ZXIgeworV1RGX01BS0VfTk9OQ09QWUFCTEUoQnl0ZWNvZGVS
ZXdyaXRlcik7CitwdWJsaWM6CisgICAgZW51bSBjbGFzcyBQb3NpdGlvbiA6IGludDhfdCB7IEJl
Zm9yZSA9IC0xLCBCYXNlUG9pbnQgPSAwLCBBZnRlciA9IDEgfTsKKworcHJpdmF0ZToKKyAgICBz
dHJ1Y3QgQ29tbWFuZCB7CisgICAgICAgIGVudW0gY2xhc3MgVHlwZSA6IHVpbnQ4X3QgeyBJbnNl
cnQgPSAwLCBSZW1vdmUgPSAxLCB9OworICAgICAgICBlbnVtIGNsYXNzIEJ5dGVjb2RlVHlwZSA6
IHVpbnQ4X3QgeyBOb3JtYWwsIEJyYW5jaCB9OworCisgICAgICAgIHNpemVfdCBsZW5ndGgoKSBj
b25zdAorICAgICAgICB7CisgICAgICAgICAgICBpZiAodHlwZSA9PSBUeXBlOjpSZW1vdmUpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIHJlbW92ZUxlbmd0aDsKKyAgICAgICAgICAgIHJldHVybiBp
bnN0cnVjdGlvbnMuc2l6ZSgpOworICAgICAgICB9CisKKyAgICAgICAgVHlwZSB0eXBlOworICAg
ICAgICBQb3NpdGlvbiBwb3NpdGlvbjsKKyAgICAgICAgQnl0ZWNvZGVUeXBlIGJ5dGVjb2RlVHlw
ZTsKKyAgICAgICAgdW5zaWduZWQganVtcEVudHJ5OworICAgICAgICBzaXplX3QgcmVtb3ZlTGVu
Z3RoOworICAgICAgICBWZWN0b3I8VW5saW5rZWRJbnN0cnVjdGlvbj4gaW5zdHJ1Y3Rpb25zOwor
ICAgIH07CisKKyAgICB0eXBlZGVmIFdURjo6SW5zZXJ0aW9uPENvbW1hbmQ+IEluc2VydGlvbjsK
KworICAgIHN0cnVjdCBTd2l0Y2hFbnRyeSB7CisgICAgICAgIHNpemVfdCB0YWJsZUluZGV4Owor
ICAgICAgICB1bnNpZ25lZCBkZWZhdWx0T2Zmc2V0OworICAgIH07CisKK3B1YmxpYzoKKyAgICBj
bGFzcyBGcmFnbWVudCB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRnJhZ21lbnQpOworICAg
IHB1YmxpYzoKKyAgICAgICAgRnJhZ21lbnQoVmVjdG9yPFVubGlua2VkSW5zdHJ1Y3Rpb24+JiBm
cmFnbWVudCkKKyAgICAgICAgICAgIDogbV9mcmFnbWVudChmcmFnbWVudCkKKyAgICAgICAgewor
ICAgICAgICB9CisKKyAgICAgICAgdGVtcGxhdGU8Y2xhc3MuLi4gQXJncz4KKyAgICAgICAgdm9p
ZCBhcHBlbmQoQXJncy4uLiBhcmdzKQorICAgICAgICB7CisgICAgICAgICAgICBVbmxpbmtlZElu
c3RydWN0aW9uIGluc3RydWN0aW9uc1tzaXplb2YuLi4oYXJncyldID0geworICAgICAgICAgICAg
ICAgIFVubGlua2VkSW5zdHJ1Y3Rpb24oYXJncykuLi4KKyAgICAgICAgICAgIH07CisgICAgICAg
ICAgICBtX2ZyYWdtZW50LmFwcGVuZChpbnN0cnVjdGlvbnMsIHNpemVvZi4uLihhcmdzKSk7Cisg
ICAgICAgIH0KKworICAgIHByaXZhdGU6CisgICAgICAgIFZlY3RvcjxVbmxpbmtlZEluc3RydWN0
aW9uPiYgbV9mcmFnbWVudDsKKyAgICB9OworCisgICAgQnl0ZWNvZGVSZXdyaXRlcihCeXRlY29k
ZUdyYXBoPFVubGlua2VkQ29kZUJsb2NrPiYgZ3JhcGgpCisgICAgICAgIDogbV9ncmFwaChncmFw
aCkKKyAgICB7CisgICAgfQorCisgICAgdGVtcGxhdGU8Y2xhc3MuLi4gQXJncz4KKyAgICB2b2lk
IGluc2VydEJlZm9yZSh1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgT3Bjb2RlSUQgb3Bjb2RlSUQs
IEFyZ3MuLi4gYXJncykKKyAgICB7CisgICAgICAgIFZlY3RvcjxVbmxpbmtlZEluc3RydWN0aW9u
PiBmcmFnbWVudCA9IHsKKyAgICAgICAgICAgIFVubGlua2VkSW5zdHJ1Y3Rpb24ob3Bjb2RlSUQp
LAorICAgICAgICAgICAgVW5saW5rZWRJbnN0cnVjdGlvbihhcmdzKS4uLgorICAgICAgICB9Owor
ICAgICAgICBpbnNlcnRJbXBsKDAsIENvbW1hbmQ6OkJ5dGVjb2RlVHlwZTo6Tm9ybWFsLCBQb3Np
dGlvbjo6QmVmb3JlLCBieXRlY29kZU9mZnNldCwgV1RGTW92ZShmcmFnbWVudCkpOworICAgIH0K
KworICAgIHRlbXBsYXRlPGNsYXNzLi4uIEFyZ3M+CisgICAgdm9pZCBpbnNlcnRBZnRlcih1bnNp
Z25lZCBieXRlY29kZU9mZnNldCwgT3Bjb2RlSUQgb3Bjb2RlSUQsIEFyZ3MuLi4gYXJncykKKyAg
ICB7CisgICAgICAgIFZlY3RvcjxVbmxpbmtlZEluc3RydWN0aW9uPiBmcmFnbWVudCA9IHsKKyAg
ICAgICAgICAgIFVubGlua2VkSW5zdHJ1Y3Rpb24ob3Bjb2RlSUQpLAorICAgICAgICAgICAgVW5s
aW5rZWRJbnN0cnVjdGlvbihhcmdzKS4uLgorICAgICAgICB9OworICAgICAgICBpbnNlcnRJbXBs
KDAsIENvbW1hbmQ6OkJ5dGVjb2RlVHlwZTo6Tm9ybWFsLCBQb3NpdGlvbjo6QWZ0ZXIsIGJ5dGVj
b2RlT2Zmc2V0LCBXVEZNb3ZlKGZyYWdtZW50KSk7CisgICAgfQorCisgICAgdGVtcGxhdGU8Y2xh
c3MgRnVuY3Rpb24+CisgICAgdm9pZCBpbnNlcnRGcmFnbWVudEJlZm9yZSh1bnNpZ25lZCBieXRl
Y29kZU9mZnNldCwgRnVuY3Rpb24gZnVuY3Rpb24pCisgICAgeworICAgICAgICBWZWN0b3I8VW5s
aW5rZWRJbnN0cnVjdGlvbj4gaW5zdHJ1Y3Rpb25zOworICAgICAgICBGcmFnbWVudCBmcmFnbWVu
dChpbnN0cnVjdGlvbnMpOworICAgICAgICBmdW5jdGlvbihmcmFnbWVudCk7CisgICAgICAgIGlu
c2VydEltcGwoMCwgQ29tbWFuZDo6Qnl0ZWNvZGVUeXBlOjpOb3JtYWwsIFBvc2l0aW9uOjpCZWZv
cmUsIGJ5dGVjb2RlT2Zmc2V0LCBXVEZNb3ZlKGluc3RydWN0aW9ucykpOworICAgIH0KKworICAg
IHRlbXBsYXRlPGNsYXNzIEZ1bmN0aW9uPgorICAgIHZvaWQgaW5zZXJ0RnJhZ21lbnRBZnRlcih1
bnNpZ25lZCBieXRlY29kZU9mZnNldCwgRnVuY3Rpb24gZnVuY3Rpb24pCisgICAgeworICAgICAg
ICBWZWN0b3I8VW5saW5rZWRJbnN0cnVjdGlvbj4gaW5zdHJ1Y3Rpb25zOworICAgICAgICBGcmFn
bWVudCBmcmFnbWVudChpbnN0cnVjdGlvbnMpOworICAgICAgICBmdW5jdGlvbihmcmFnbWVudCk7
CisgICAgICAgIGluc2VydEltcGwoMCwgQ29tbWFuZDo6Qnl0ZWNvZGVUeXBlOjpOb3JtYWwsIFBv
c2l0aW9uOjpBZnRlciwgYnl0ZWNvZGVPZmZzZXQsIFdURk1vdmUoaW5zdHJ1Y3Rpb25zKSk7Cisg
ICAgfQorCisgICAgVW5saW5rZWRTaW1wbGVKdW1wVGFibGUmIGluc2VydFN3aXRjaEltbWVkaWF0
ZUJlZm9yZSh1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgdW5zaWduZWQgZGVmYXVsdE9mZnNldCwg
aW50IHJlZykKKyAgICB7CisgICAgICAgIHJldHVybiBpbnNlcnRTd2l0Y2hJbW1lZGlhdGVJbXBs
KFBvc2l0aW9uOjpCZWZvcmUsIGJ5dGVjb2RlT2Zmc2V0LCBkZWZhdWx0T2Zmc2V0LCByZWcpOwor
ICAgIH0KKworICAgIHZvaWQgcmVtb3ZlQnl0ZWNvZGUodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQp
CisgICAgeworICAgICAgICBtX2luc2VydGlvbnMuYXBwZW5kKEluc2VydGlvbihieXRlY29kZU9m
ZnNldCwgQ29tbWFuZCB7IENvbW1hbmQ6OlR5cGU6OlJlbW92ZSwgUG9zaXRpb246OkJhc2VQb2lu
dCwgQ29tbWFuZDo6Qnl0ZWNvZGVUeXBlOjpOb3JtYWwsIDAsIG9wY29kZUxlbmd0aChtX2dyYXBo
Lmluc3RydWN0aW9ucygpW2J5dGVjb2RlT2Zmc2V0XS51Lm9wY29kZSksIHsgfSB9KSk7CisgICAg
fQorCisgICAgdm9pZCBleGVjdXRlKCk7CisKKyAgICBCeXRlY29kZUdyYXBoPFVubGlua2VkQ29k
ZUJsb2NrPiYgZ3JhcGgoKSB7IHJldHVybiBtX2dyYXBoOyB9CisKKyAgICBpbnQgYWRqdXN0T2Zm
c2V0KGludCBieXRlY29kZU9mZnNldCwgaW50IGp1bXBUYXJnZXQpCisgICAgeworICAgICAgICBy
ZXR1cm4gYWRqdXN0T2Zmc2V0V2l0aEluc2VydGlvbnMoYnl0ZWNvZGVPZmZzZXQsIGp1bXBUYXJn
ZXQsIG1faW5zZXJ0aW9ucy5iZWdpbigpLCBtX2luc2VydGlvbnMuZW5kKCkpOworICAgIH0KKwor
cHJpdmF0ZToKKyAgICB2b2lkIGluc2VydEltcGwodW5zaWduZWQganVtcEVudHJ5LCBDb21tYW5k
OjpCeXRlY29kZVR5cGUsIFBvc2l0aW9uLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgVmVjdG9y
PFVubGlua2VkSW5zdHJ1Y3Rpb24+JiYgZnJhZ21lbnQpOworICAgIFVubGlua2VkU2ltcGxlSnVt
cFRhYmxlJiBpbnNlcnRTd2l0Y2hJbW1lZGlhdGVJbXBsKFBvc2l0aW9uLCB1bnNpZ25lZCBieXRl
Y29kZU9mZnNldCwgdW5zaWduZWQgZGVmYXVsdE9mZnNldCwgaW50IHJlZyk7CisKKyAgICBmcmll
bmQgY2xhc3MgVW5saW5rZWRDb2RlQmxvY2s7CisgICAgdm9pZCBhcHBseU1vZGlmaWNhdGlvbigp
OworICAgIHZvaWQgYWRqdXN0SnVtcEluc2VydGlvbih1bnNpZ25lZCBmaW5hbE9mZnNldCwgSW5z
ZXJ0aW9uJik7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJdGVyYXRvcj4KKyAgICBpbnQgYWRq
dXN0T2Zmc2V0V2l0aEluc2VydGlvbnMoaW50IGJ5dGVjb2RlT2Zmc2V0LCBpbnQganVtcFRhcmdl
dCwgSXRlcmF0b3IgaW5zZXJ0aW9uc0JlZ2luLCBJdGVyYXRvciBpbnNlcnRpb25zRW5kKTsKKwor
ICAgIEJ5dGVjb2RlR3JhcGg8VW5saW5rZWRDb2RlQmxvY2s+JiBtX2dyYXBoOworICAgIFZlY3Rv
cjxJbnNlcnRpb24sIDg+IG1faW5zZXJ0aW9uczsKKyAgICBWZWN0b3I8U3dpdGNoRW50cnk+IG1f
aW5zZXJ0ZWRTd2l0Y2hlczsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIEl0ZXJhdG9yPgoraW5s
aW5lIGludCBCeXRlY29kZVJld3JpdGVyOjphZGp1c3RPZmZzZXRXaXRoSW5zZXJ0aW9ucyhpbnQg
Ynl0ZWNvZGVPZmZzZXQsIGludCBqdW1wVGFyZ2V0LCBJdGVyYXRvciBpbnNlcnRpb25zQmVnaW4s
IEl0ZXJhdG9yIGluc2VydGlvbnNFbmQpCit7CisgICAgaWYgKGJ5dGVjb2RlT2Zmc2V0IDwganVt
cFRhcmdldCkgeworICAgICAgICBhdXRvIHN0YXJ0ID0gc3RkOjpsb3dlcl9ib3VuZChpbnNlcnRp
b25zQmVnaW4sIGluc2VydGlvbnNFbmQsIGJ5dGVjb2RlT2Zmc2V0LCBbJl0gKGNvbnN0IEluc2Vy
dGlvbiYgaW5zZXJ0aW9uLCBpbnQgYnl0ZWNvZGVPZmZzZXQpIHsKKyAgICAgICAgICAgIGlmIChz
dGF0aWNfY2FzdDxpbnQ+KGluc2VydGlvbi5pbmRleCgpKSA9PSBieXRlY29kZU9mZnNldCkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gaW5zZXJ0aW9uLmVsZW1lbnQoKS5wb3NpdGlvbiA8IFBvc2l0
aW9uOjpCYXNlUG9pbnQ7CisgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihpbnNl
cnRpb24uaW5kZXgoKSkgPCBieXRlY29kZU9mZnNldDsKKyAgICAgICAgfSk7CisgICAgICAgIGlm
IChzdGFydCAhPSBpbnNlcnRpb25zRW5kKSB7CisgICAgICAgICAgICBhdXRvIGVuZCA9IHN0ZDo6
bG93ZXJfYm91bmQoaW5zZXJ0aW9uc0JlZ2luLCBpbnNlcnRpb25zRW5kLCBqdW1wVGFyZ2V0LCBb
Jl0gKGNvbnN0IEluc2VydGlvbiYgaW5zZXJ0aW9uLCBpbnQganVtcFRhcmdldCkgeworICAgICAg
ICAgICAgICAgIGlmIChzdGF0aWNfY2FzdDxpbnQ+KGluc2VydGlvbi5pbmRleCgpKSA9PSBqdW1w
VGFyZ2V0KQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW5zZXJ0aW9uLmVsZW1lbnQoKS5w
b3NpdGlvbiA8IFBvc2l0aW9uOjpCYXNlUG9pbnQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PGludD4oaW5zZXJ0aW9uLmluZGV4KCkpIDwganVtcFRhcmdldDsKKyAgICAgICAg
ICAgIH0pOworICAgICAgICAgICAgZm9yICg7IHN0YXJ0ICE9IGVuZDsgKytzdGFydCkgeworICAg
ICAgICAgICAgICAgIGlmIChzdGFydC0+ZWxlbWVudCgpLnR5cGUgPT0gQ29tbWFuZDo6VHlwZTo6
UmVtb3ZlKQorICAgICAgICAgICAgICAgICAgICBqdW1wVGFyZ2V0IC09IHN0YXJ0LT5lbGVtZW50
KCkubGVuZ3RoKCk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBq
dW1wVGFyZ2V0ICs9IHN0YXJ0LT5lbGVtZW50KCkubGVuZ3RoKCk7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGp1bXBUYXJnZXQgLSBieXRlY29kZU9mZnNldDsKKyAg
ICB9CisKKyAgICBpZiAoYnl0ZWNvZGVPZmZzZXQgPT0ganVtcFRhcmdldCkKKyAgICAgICAgcmV0
dXJuIDA7CisKKyAgICByZXR1cm4gLWFkanVzdE9mZnNldFdpdGhJbnNlcnRpb25zKGp1bXBUYXJn
ZXQsIGJ5dGVjb2RlT2Zmc2V0LCBpbnNlcnRpb25zQmVnaW4sIGluc2VydGlvbnNFbmQpOworfQor
Cit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZVVzZURlZi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlVXNlRGVmLmgKaW5kZXggNDM1ZjYxMDEwODM5MWE4NTljMGM1NTVlNjExNWI5Njk4
N2ZhZTg4ZS4uMDJiMTk1NWI3NDI0ZWM1OTNiODE1NWY4YmMwYjg1M2Q4OGY5OTk3ZiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKQEAgLTMx
LDE1ICszMSw5IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi10ZW1wbGF0ZTx0eXBlbmFtZSBGdW5j
dG9yPgotdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAotICAgIENvZGVCbG9jayog
Y29kZUJsb2NrLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9m
ZnNldCwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikKK3RlbXBsYXRlPHR5cGVuYW1lIEJsb2NrLCB0
eXBlbmFtZSBGdW5jdG9yLCB0eXBlbmFtZSBJbnN0cnVjdGlvbj4KK3ZvaWQgY29tcHV0ZVVzZXNG
b3JCeXRlY29kZU9mZnNldChCbG9jayogY29kZUJsb2NrLCBPcGNvZGVJRCBvcGNvZGVJRCwgSW5z
dHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQogewotICAgIElu
dGVycHJldGVyKiBpbnRlcnByZXRlciA9IGNvZGVCbG9jay0+dm0oKS0+aW50ZXJwcmV0ZXI7Ci0g
ICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luID0gY29kZUJsb2NrLT5pbnN0cnVjdGlv
bnMoKS5iZWdpbigpOwotICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9ICZpbnN0cnVjdGlv
bnNCZWdpbltieXRlY29kZU9mZnNldF07Ci0gICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnRlcnBy
ZXRlci0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb24tPnUub3Bjb2RlKTsKLQogICAgIGlmIChvcGNv
ZGVJRCAhPSBvcF9lbnRlciAmJiBjb2RlQmxvY2stPndhc0NvbXBpbGVkV2l0aERlYnVnZ2luZ09w
Y29kZXMoKSAmJiBjb2RlQmxvY2stPnNjb3BlUmVnaXN0ZXIoKS5pc1ZhbGlkKCkpCiAgICAgICAg
IGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGNvZGVCbG9jay0+c2Nv
cGVSZWdpc3RlcigpLm9mZnNldCgpKTsKIApAQCAtNzYsOCArNzAsNyBAQCB2b2lkIGNvbXB1dGVV
c2VzRm9yQnl0ZWNvZGVPZmZzZXQoCiAgICAgY2FzZSBvcF9qbmVxX251bGw6CiAgICAgY2FzZSBv
cF9kZWM6CiAgICAgY2FzZSBvcF9pbmM6Ci0gICAgY2FzZSBvcF9sb2dfc2hhZG93X2NoaWNrZW5f
cHJvbG9ndWU6Ci0gICAgY2FzZSBvcF9yZXN1bWU6IHsKKyAgICBjYXNlIG9wX2xvZ19zaGFkb3df
Y2hpY2tlbl9wcm9sb2d1ZTogewogICAgICAgICBBU1NFUlQob3Bjb2RlTGVuZ3Roc1tvcGNvZGVJ
RF0gPiAxKTsKICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJ
RCwgaW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjg4LDQy
ICsyODEsMjggQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAogICAgICAgICAg
ICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgY29kZUJsb2NrLT5z
Y29wZVJlZ2lzdGVyKCkub2Zmc2V0KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGNh
c2Ugb3Bfc2F2ZTogewotICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9w
Y29kZUlELCBpbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOwotICAgICAgICB1bnNpZ25lZCBtZXJn
ZVBvaW50Qnl0ZWNvZGVPZmZzZXQgPSBieXRlY29kZU9mZnNldCArIGluc3RydWN0aW9uWzNdLnUu
b3BlcmFuZDsKLSAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBtZXJnZVBvaW50QmxvY2sgPSBu
dWxscHRyOwotICAgICAgICBmb3IgKEJ5dGVjb2RlQmFzaWNCbG9jayogc3VjY2Vzc29yIDogYmxv
Y2stPnN1Y2Nlc3NvcnMoKSkgewotICAgICAgICAgICAgaWYgKHN1Y2Nlc3Nvci0+bGVhZGVyQnl0
ZWNvZGVPZmZzZXQoKSA9PSBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXQpIHsKLSAgICAgICAgICAg
ICAgICBtZXJnZVBvaW50QmxvY2sgPSBzdWNjZXNzb3I7Ci0gICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgQVNTRVJUKG1lcmdlUG9pbnRCbG9j
ayk7Ci0gICAgICAgIG1lcmdlUG9pbnRCbG9jay0+aW4oKS5mb3JFYWNoU2V0Qml0KFsmXSh1bnNp
Z25lZCBsb2NhbCkgewotICAgICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9u
LCBvcGNvZGVJRCwgdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwobG9jYWwpLm9mZnNldCgpKTsKLSAg
ICAgICAgfSk7CisKKyAgICBjYXNlIG9wX3lpZWxkOiB7CisgICAgICAgIGZ1bmN0b3IoY29kZUJs
b2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzJdLnUub3BlcmFuZCk7Cisg
ICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0
aW9uWzRdLnUub3BlcmFuZCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CisKICAgICBkZWZhdWx0
OgogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBicmVhazsK
ICAgICB9CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+Ci12b2lkIGNvbXB1dGVEZWZz
Rm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFzaWNCbG9j
ayogYmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBjb25zdCBGdW5jdG9yJiBmdW5jdG9y
KQordGVtcGxhdGU8dHlwZW5hbWUgQmxvY2ssIHR5cGVuYW1lIEluc3RydWN0aW9uLCB0eXBlbmFt
ZSBGdW5jdG9yPgordm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KEJsb2NrKiBjb2Rl
QmxvY2ssIE9wY29kZUlEIG9wY29kZUlELCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIGNvbnN0
IEZ1bmN0b3ImIGZ1bmN0b3IpCiB7Ci0gICAgSW50ZXJwcmV0ZXIqIGludGVycHJldGVyID0gY29k
ZUJsb2NrLT52bSgpLT5pbnRlcnByZXRlcjsKLSAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25z
QmVnaW4gPSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCk7Ci0gICAgSW5zdHJ1Y3Rp
b24qIGluc3RydWN0aW9uID0gJmluc3RydWN0aW9uc0JlZ2luW2J5dGVjb2RlT2Zmc2V0XTsKLSAg
ICBPcGNvZGVJRCBvcGNvZGVJRCA9IGludGVycHJldGVyLT5nZXRPcGNvZGVJRChpbnN0cnVjdGlv
bi0+dS5vcGNvZGUpOwogICAgIHN3aXRjaCAob3Bjb2RlSUQpIHsKICAgICAvLyBUaGVzZSBkb24n
dCBkZWZpbmUgYW55dGhpbmcuCiAgICAgY2FzZSBvcF9wdXRfdG9fc2NvcGU6CiAgICAgY2FzZSBv
cF9lbmQ6CiAgICAgY2FzZSBvcF90aHJvdzoKICAgICBjYXNlIG9wX3Rocm93X3N0YXRpY19lcnJv
cjoKLSAgICBjYXNlIG9wX3NhdmU6CiAgICAgY2FzZSBvcF9hc3NlcnQ6CiAgICAgY2FzZSBvcF9k
ZWJ1ZzoKICAgICBjYXNlIG9wX3JldDoKQEAgLTM2Myw2ICszNDIsNyBAQCB2b2lkIGNvbXB1dGVE
ZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFzaWNC
bG9jayogYmxvYwogICAgIGNhc2Ugb3Bfd2F0Y2hkb2c6CiAgICAgY2FzZSBvcF9sb2dfc2hhZG93
X2NoaWNrZW5fcHJvbG9ndWU6CiAgICAgY2FzZSBvcF9sb2dfc2hhZG93X2NoaWNrZW5fdGFpbDoK
KyAgICBjYXNlIG9wX3lpZWxkOgogI2RlZmluZSBMTElOVF9IRUxQRVJfT1BDT0RFUyhvcGNvZGUs
IGxlbmd0aCkgY2FzZSBvcGNvZGU6CiAgICAgICAgIEZPUl9FQUNIX0xMSU5UX09QQ09ERV9FWFRF
TlNJT04oTExJTlRfSEVMUEVSX09QQ09ERVMpOwogI3VuZGVmIExMSU5UX0hFTFBFUl9PUENPREVT
CkBAIC00NjMsNyArNDQzLDcgQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KENv
ZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2MKICAgICBjYXNlIG9w
X2RlbF9ieV9pZDoKICAgICBjYXNlIG9wX2RlbF9ieV92YWw6CiAgICAgY2FzZSBvcF91bnNpZ25l
ZDoKLSAgICBjYXNlIG9wX2dldF9mcm9tX2FyZ3VtZW50czogCisgICAgY2FzZSBvcF9nZXRfZnJv
bV9hcmd1bWVudHM6CiAgICAgY2FzZSBvcF9jcmVhdGVfcmVzdDoKICAgICBjYXNlIG9wX2dldF9y
ZXN0X2xlbmd0aDogewogICAgICAgICBBU1NFUlQob3Bjb2RlTGVuZ3Roc1tvcGNvZGVJRF0gPiAx
KTsKQEAgLTQ4MSwxNiArNDYxLDEwIEBAIHZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNl
dChDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jCiAgICAgICAg
ICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCB2aXJ0dWFsUmVn
aXN0ZXJGb3JMb2NhbChpKS5vZmZzZXQoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAg
Y2FzZSBvcF9yZXN1bWU6IHsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQoYmxvY2stPnN1Y2Nlc3Nv
cnMoKS5zaXplKCkgPT0gMSk7Ci0gICAgICAgIC8vIEZJWE1FOiBUaGlzIGlzIHJlYWxseSBkaXJ0
eS4KLSAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1
OTI4MQotICAgICAgICBibG9jay0+c3VjY2Vzc29ycygpWzBdLT5pbigpLmZvckVhY2hTZXRCaXQo
WyZdKHVuc2lnbmVkIGxvY2FsKSB7Ci0gICAgICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5z
dHJ1Y3Rpb24sIG9wY29kZUlELCB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChsb2NhbCkub2Zmc2V0
KCkpOwotICAgICAgICB9KTsKKyAgICBkZWZhdWx0OgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIH0KIH0KIAogfSAvLyBu
YW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2su
Y3BwCmluZGV4IDMyYmU2MzE2NTMxNzc2ODZlNTA0NGE4MTJlMTI5YjY3N2FmMDYyYTkuLjRhNmQ3
MDNhODkzOTk2NjEwMWYzNDczMzE5N2ZkMTZhNjk0NDZjMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVk
ZSAiQXJpdGhQcm9maWxlLmgiCiAjaW5jbHVkZSAiQmFzaWNCbG9ja0xvY2F0aW9uLmgiCiAjaW5j
bHVkZSAiQnl0ZWNvZGVHZW5lcmF0b3IuaCIKKyNpbmNsdWRlICJCeXRlY29kZUxpdmVuZXNzQW5h
bHlzaXMuaCIKICNpbmNsdWRlICJCeXRlY29kZVVzZURlZi5oIgogI2luY2x1ZGUgIkNhbGxMaW5r
U3RhdHVzLmgiCiAjaW5jbHVkZSAiREZHQ2FwYWJpbGl0aWVzLmgiCkBAIC02OTcsMTggKzY5OCw2
IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoUHJpbnRTdHJlYW0mIG91dCkKICAgICAg
ICAgfSB3aGlsZSAoaSA8IG1fcmFyZURhdGEtPm1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlcy5zaXpl
KCkpOwogICAgIH0KIAotICAgIGlmIChtX3JhcmVEYXRhICYmICFtX3JhcmVEYXRhLT5tX2xpdmVD
YWxsZWVMb2NhbHNBdFlpZWxkLmlzRW1wdHkoKSkgewotICAgICAgICBvdXQucHJpbnRmKCJcbkxp
dmUgQ2FsbGVlIExvY2FsczpcbiIpOwotICAgICAgICB1bnNpZ25lZCBpID0gMDsKLSAgICAgICAg
ZG8gewotICAgICAgICAgICAgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZW5lc3MgPSBtX3JhcmVE
YXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkW2ldOwotICAgICAgICAgICAgb3V0LnByaW50
ZigiICBsaXZlJTF1ID0gIiwgaSk7Ci0gICAgICAgICAgICBsaXZlbmVzcy5kdW1wKG91dCk7Ci0g
ICAgICAgICAgICBvdXQucHJpbnRmKCJcbiIpOwotICAgICAgICAgICAgKytpOwotICAgICAgICB9
IHdoaWxlIChpIDwgbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZC5zaXplKCkp
OwotICAgIH0KLQogICAgIG91dC5wcmludGYoIlxuIik7CiB9CiAKQEAgLTE2NzIsMzEgKzE2NjEs
NiBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKAogICAgICAgICAgICAgb3V0LnByaW50
ZigiJXMsICVkIiwgZGVidWdIb29rTmFtZShkZWJ1Z0hvb2tJRCksIGhhc0JyZWFrcG9pbnRGbGFn
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIGNhc2Ugb3Bfc2F2ZTog
ewotICAgICAgICAgICAgaW50IGdlbmVyYXRvciA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAg
ICAgICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gKCsraXQpLT51LnVuc2lnbmVk
VmFsdWU7Ci0gICAgICAgICAgICBpbnQgb2Zmc2V0ID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAg
ICAgICAgICBGYXN0Qml0VmVjdG9yIGxpdmVuZXNzOwotICAgICAgICAgICAgaWYgKGxpdmVDYWxs
ZWVMb2NhbHNJbmRleCA8IG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQuc2l6
ZSgpKQotICAgICAgICAgICAgICAgIGxpdmVuZXNzID0gbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVl
TG9jYWxzQXRZaWVsZFtsaXZlQ2FsbGVlTG9jYWxzSW5kZXhdOwotICAgICAgICAgICAgcHJpbnRM
b2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAic2F2ZSIpOwotICAgICAgICAg
ICAgb3V0LnByaW50ZigiJXMsICIsIHJlZ2lzdGVyTmFtZShnZW5lcmF0b3IpLmRhdGEoKSk7Ci0g
ICAgICAgICAgICBsaXZlbmVzcy5kdW1wKG91dCk7Ci0gICAgICAgICAgICBvdXQucHJpbnRmKCIo
QGxpdmUlMXUpLCAlZCgtPiVkKSIsIGxpdmVDYWxsZWVMb2NhbHNJbmRleCwgb2Zmc2V0LCBsb2Nh
dGlvbiArIG9mZnNldCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBj
YXNlIG9wX3Jlc3VtZTogewotICAgICAgICAgICAgaW50IGdlbmVyYXRvciA9ICgrK2l0KS0+dS5v
cGVyYW5kOwotICAgICAgICAgICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gKCsr
aXQpLT51LnVuc2lnbmVkVmFsdWU7Ci0gICAgICAgICAgICBGYXN0Qml0VmVjdG9yIGxpdmVuZXNz
OwotICAgICAgICAgICAgaWYgKGxpdmVDYWxsZWVMb2NhbHNJbmRleCA8IG1fcmFyZURhdGEtPm1f
bGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQuc2l6ZSgpKQotICAgICAgICAgICAgICAgIGxpdmVuZXNz
ID0gbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZFtsaXZlQ2FsbGVlTG9jYWxz
SW5kZXhdOwotICAgICAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRp
b24sIGl0LCAicmVzdW1lIik7Ci0gICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgIiwgcmVnaXN0
ZXJOYW1lKGdlbmVyYXRvcikuZGF0YSgpKTsKLSAgICAgICAgICAgIGxpdmVuZXNzLmR1bXAob3V0
KTsKLSAgICAgICAgICAgIG91dC5wcmludGYoIihAbGl2ZSUxdSkiLCBsaXZlQ2FsbGVlTG9jYWxz
SW5kZXgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9h
c3NlcnQ6IHsKICAgICAgICAgICAgIGludCBjb25kaXRpb24gPSAoKytpdCktPnUub3BlcmFuZDsK
ICAgICAgICAgICAgIGludCBsaW5lID0gKCsraXQpLT51Lm9wZXJhbmQ7CkBAIC0xOTA4LDcgKzE4
NzIsNiBAQCB2b2lkIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBDb3B5UGFyc2Vk
QmxvY2tUYWcsIENvZGVCbG9jayYgb3RoZXIpCiAgICAgICAgIG1fcmFyZURhdGEtPm1fY29uc3Rh
bnRCdWZmZXJzID0gb3RoZXIubV9yYXJlRGF0YS0+bV9jb25zdGFudEJ1ZmZlcnM7CiAgICAgICAg
IG1fcmFyZURhdGEtPm1fc3dpdGNoSnVtcFRhYmxlcyA9IG90aGVyLm1fcmFyZURhdGEtPm1fc3dp
dGNoSnVtcFRhYmxlczsKICAgICAgICAgbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFi
bGVzID0gb3RoZXIubV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzOwotICAgICAg
ICBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkID0gb3RoZXIubV9yYXJlRGF0
YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZDsKICAgICB9CiAgICAgCiAgICAgaGVhcCgpLT5t
X2NvZGVCbG9ja3MtPmFkZCh0aGlzKTsKQEAgLTIwMzAsNyArMTk5Myw3IEBAIHZvaWQgQ29kZUJs
b2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0
YWJsZSwgVW5saW5rCiAgICAgICAgICAgICAgICAgVW5saW5rZWRTdHJpbmdKdW1wVGFibGU6OlN0
cmluZ09mZnNldFRhYmxlOjppdGVyYXRvciBlbmQgPSB1bmxpbmtlZENvZGVCbG9jay0+c3RyaW5n
U3dpdGNoSnVtcFRhYmxlKGkpLm9mZnNldFRhYmxlLmVuZCgpOwogICAgICAgICAgICAgICAgIGZv
ciAoOyBwdHIgIT0gZW5kOyArK3B0cikgewogICAgICAgICAgICAgICAgICAgICBPZmZzZXRMb2Nh
dGlvbiBvZmZzZXQ7Ci0gICAgICAgICAgICAgICAgICAgIG9mZnNldC5icmFuY2hPZmZzZXQgPSBw
dHItPnZhbHVlOworICAgICAgICAgICAgICAgICAgICBvZmZzZXQuYnJhbmNoT2Zmc2V0ID0gcHRy
LT52YWx1ZS5icmFuY2hPZmZzZXQ7CiAgICAgICAgICAgICAgICAgICAgIG1fcmFyZURhdGEtPm1f
c3RyaW5nU3dpdGNoSnVtcFRhYmxlc1tpXS5vZmZzZXRUYWJsZS5hZGQocHRyLT5rZXksIG9mZnNl
dCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpAQCAtMjA3MCwxMSArMjAzMywx
NyBAQCB2b2lkIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRh
YmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGluawogICAgIC8vIEJvb2trZWVwIHRoZSBzdHJvbmds
eSByZWZlcmVuY2VkIG1vZHVsZSBlbnZpcm9ubWVudHMuCiAgICAgSGFzaFNldDxKU01vZHVsZUVu
dmlyb25tZW50Kj4gc3Ryb25nbHlSZWZlcmVuY2VkTW9kdWxlRW52aXJvbm1lbnRzOwogCi0gICAg
Ly8gQm9va2tlZXAgdGhlIG1lcmdlIHBvaW50IGJ5dGVjb2RlIG9mZnNldHMuCi0gICAgVmVjdG9y
PHNpemVfdD4gbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0czsKLQogICAgIFJlZkNvdW50ZWRBcnJh
eTxJbnN0cnVjdGlvbj4gaW5zdHJ1Y3Rpb25zKGluc3RydWN0aW9uQ291bnQpOwogCisgICAgdW5z
aWduZWQgdmFsdWVQcm9maWxlQ291bnQgPSAwOworICAgIGF1dG8gbGlua1ZhbHVlUHJvZmlsZSA9
IFsmXSh1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgdW5zaWduZWQgb3BMZW5ndGgpIHsKKyAgICAg
ICAgdW5zaWduZWQgdmFsdWVQcm9maWxlSW5kZXggPSB2YWx1ZVByb2ZpbGVDb3VudCsrOworICAg
ICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSAmbV92YWx1ZVByb2ZpbGVzW3ZhbHVlUHJvZmls
ZUluZGV4XTsKKyAgICAgICAgQVNTRVJUKHByb2ZpbGUtPm1fYnl0ZWNvZGVPZmZzZXQgPT0gLTEp
OworICAgICAgICBwcm9maWxlLT5tX2J5dGVjb2RlT2Zmc2V0ID0gYnl0ZWNvZGVPZmZzZXQ7Cisg
ICAgICAgIGluc3RydWN0aW9uc1tieXRlY29kZU9mZnNldCArIG9wTGVuZ3RoIC0gMV0gPSBwcm9m
aWxlOworICAgIH07CisKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyAhaW5zdHJ1Y3Rpb25SZWFk
ZXIuYXRFbmQoKTsgKSB7CiAgICAgICAgIGNvbnN0IFVubGlua2VkSW5zdHJ1Y3Rpb24qIHBjID0g
aW5zdHJ1Y3Rpb25SZWFkZXIubmV4dCgpOwogCkBAIC0yMTA5LDEwICsyMDc4LDcgQEAgdm9pZCBD
b2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJF
eGVjdXRhYmxlLCBVbmxpbmsKICAgICAgICAgY2FzZSBvcF9nZXRfYnlfaWQ6CiAgICAgICAgIGNh
c2Ugb3BfZ2V0X2Zyb21fYXJndW1lbnRzOgogICAgICAgICBjYXNlIG9wX3RvX251bWJlcjogewot
ICAgICAgICAgICAgVmFsdWVQcm9maWxlKiBwcm9maWxlID0gJm1fdmFsdWVQcm9maWxlc1twY1tv
cExlbmd0aCAtIDFdLnUub3BlcmFuZF07Ci0gICAgICAgICAgICBBU1NFUlQocHJvZmlsZS0+bV9i
eXRlY29kZU9mZnNldCA9PSAtMSk7Ci0gICAgICAgICAgICBwcm9maWxlLT5tX2J5dGVjb2RlT2Zm
c2V0ID0gaTsKLSAgICAgICAgICAgIGluc3RydWN0aW9uc1tpICsgb3BMZW5ndGggLSAxXSA9IHBy
b2ZpbGU7CisgICAgICAgICAgICBsaW5rVmFsdWVQcm9maWxlKGksIG9wTGVuZ3RoKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X3ZhbDogewpA
QCAtMjE0OSwxMCArMjExNSw3IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYg
dm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAgICAgIGNh
c2Ugb3BfY2FsbDoKICAgICAgICAgY2FzZSBvcF90YWlsX2NhbGw6CiAgICAgICAgIGNhc2Ugb3Bf
Y2FsbF9ldmFsOiB7Ci0gICAgICAgICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSAmbV92YWx1
ZVByb2ZpbGVzW3BjW29wTGVuZ3RoIC0gMV0udS5vcGVyYW5kXTsKLSAgICAgICAgICAgIEFTU0VS
VChwcm9maWxlLT5tX2J5dGVjb2RlT2Zmc2V0ID09IC0xKTsKLSAgICAgICAgICAgIHByb2ZpbGUt
Pm1fYnl0ZWNvZGVPZmZzZXQgPSBpOwotICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zW2kgKyBvcExl
bmd0aCAtIDFdID0gcHJvZmlsZTsKKyAgICAgICAgICAgIGxpbmtWYWx1ZVByb2ZpbGUoaSwgb3BM
ZW5ndGgpOwogICAgICAgICAgICAgaW50IGFycmF5UHJvZmlsZUluZGV4ID0gcGNbb3BMZW5ndGgg
LSAyXS51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBtX2FycmF5UHJvZmlsZXNbYXJyYXlQcm9maWxl
SW5kZXhdID0gQXJyYXlQcm9maWxlKGkpOwogICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zW2kgKyBv
cExlbmd0aCAtIDJdID0gJm1fYXJyYXlQcm9maWxlc1thcnJheVByb2ZpbGVJbmRleF07CkBAIC0y
MTYxLDEwICsyMTI0LDcgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwg
U2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICAgICAgfQogICAg
ICAgICBjYXNlIG9wX2NvbnN0cnVjdDogewogICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zW2kgKyA1
XSA9ICZtX2xsaW50Q2FsbExpbmtJbmZvc1twY1s1XS51Lm9wZXJhbmRdOwotICAgICAgICAgICAg
VmFsdWVQcm9maWxlKiBwcm9maWxlID0gJm1fdmFsdWVQcm9maWxlc1twY1tvcExlbmd0aCAtIDFd
LnUub3BlcmFuZF07Ci0gICAgICAgICAgICBBU1NFUlQocHJvZmlsZS0+bV9ieXRlY29kZU9mZnNl
dCA9PSAtMSk7Ci0gICAgICAgICAgICBwcm9maWxlLT5tX2J5dGVjb2RlT2Zmc2V0ID0gaTsKLSAg
ICAgICAgICAgIGluc3RydWN0aW9uc1tpICsgb3BMZW5ndGggLSAxXSA9IHByb2ZpbGU7CisgICAg
ICAgICAgICBsaW5rVmFsdWVQcm9maWxlKGksIG9wTGVuZ3RoKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfZ2V0X2FycmF5X2xlbmd0aDoKQEAgLTIxOTUs
MTAgKzIxNTUsNyBAQCB2b2lkIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3Jp
cHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGluawogICAgICAgICB9CiAKICAgICAg
ICAgY2FzZSBvcF9nZXRfZnJvbV9zY29wZTogewotICAgICAgICAgICAgVmFsdWVQcm9maWxlKiBw
cm9maWxlID0gJm1fdmFsdWVQcm9maWxlc1twY1tvcExlbmd0aCAtIDFdLnUub3BlcmFuZF07Ci0g
ICAgICAgICAgICBBU1NFUlQocHJvZmlsZS0+bV9ieXRlY29kZU9mZnNldCA9PSAtMSk7Ci0gICAg
ICAgICAgICBwcm9maWxlLT5tX2J5dGVjb2RlT2Zmc2V0ID0gaTsKLSAgICAgICAgICAgIGluc3Ry
dWN0aW9uc1tpICsgb3BMZW5ndGggLSAxXSA9IHByb2ZpbGU7CisgICAgICAgICAgICBsaW5rVmFs
dWVQcm9maWxlKGksIG9wTGVuZ3RoKTsKIAogICAgICAgICAgICAgLy8gZ2V0X2Zyb21fc2NvcGUg
ZHN0LCBzY29wZSwgaWQsIEdldFB1dEluZm8sIFN0cnVjdHVyZSwgT3BlcmFuZAogCkBAIC0yMzU1
LDE1ICsyMzEyLDYgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2Ny
aXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAKLSAgICAgICAgY2FzZSBvcF9zYXZlOiB7Ci0gICAgICAgICAgICB1bnNp
Z25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSBwY1syXS51LmluZGV4OwotICAgICAgICAgICAg
aW50IG9mZnNldCA9IHBjWzNdLnUub3BlcmFuZDsKLSAgICAgICAgICAgIGlmIChsaXZlQ2FsbGVl
TG9jYWxzSW5kZXggPj0gbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0cy5zaXplKCkpCi0gICAgICAg
ICAgICAgICAgbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0cy5yZXNpemUobGl2ZUNhbGxlZUxvY2Fs
c0luZGV4ICsgMSk7Ci0gICAgICAgICAgICBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXRzW2xpdmVD
YWxsZWVMb2NhbHNJbmRleF0gPSBpICsgb2Zmc2V0OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIH0KLQogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
QEAgLTIzNzUsMjAgKzIzMjMsNiBAQCB2b2lkIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0m
IHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGluawogCiAgICAgbV9p
bnN0cnVjdGlvbnMgPSBXVEZNb3ZlKGluc3RydWN0aW9ucyk7CiAKLSAgICAvLyBQZXJmb3JtIGJ5
dGVjb2RlIGxpdmVuZXNzIGFuYWx5c2lzIHRvIGRldGVybWluZSB3aGljaCBsb2NhbHMgYXJlIGxp
dmUgYW5kIHNob3VsZCBiZSByZXN1bWVkIHdoZW4gZXhlY3V0aW5nIG9wX3Jlc3VtZS4KLSAgICBp
ZiAodW5saW5rZWRDb2RlQmxvY2stPnBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6R2Vu
ZXJhdG9yQm9keU1vZGUpIHsKLSAgICAgICAgaWYgKHNpemVfdCBjb3VudCA9IG1lcmdlUG9pbnRC
eXRlY29kZU9mZnNldHMuc2l6ZSgpKSB7Ci0gICAgICAgICAgICBjcmVhdGVSYXJlRGF0YUlmTmVj
ZXNzYXJ5KCk7Ci0gICAgICAgICAgICBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMgbGl2ZW5lc3Mo
dGhpcyk7Ci0gICAgICAgICAgICBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxk
Lmdyb3coY291bnQpOwotICAgICAgICAgICAgc2l6ZV90IGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9
IDA7Ci0gICAgICAgICAgICBmb3IgKHNpemVfdCBieXRlY29kZU9mZnNldCA6IG1lcmdlUG9pbnRC
eXRlY29kZU9mZnNldHMpIHsKLSAgICAgICAgICAgICAgICBtX3JhcmVEYXRhLT5tX2xpdmVDYWxs
ZWVMb2NhbHNBdFlpZWxkW2xpdmVDYWxsZWVMb2NhbHNJbmRleF0gPSBsaXZlbmVzcy5nZXRMaXZl
bmVzc0luZm9BdEJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KTsKLSAgICAgICAgICAgICAg
ICArK2xpdmVDYWxsZWVMb2NhbHNJbmRleDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAg
IH0KLQogICAgIC8vIFNldCBvcHRpbWl6YXRpb24gdGhyZXNob2xkcyBvbmx5IGFmdGVyIG1faW5z
dHJ1Y3Rpb25zIGlzIGluaXRpYWxpemVkLCBzaW5jZSB0aGVzZQogICAgIC8vIHJlbHkgb24gdGhl
IGluc3RydWN0aW9uIGNvdW50IChhbmQgYXJlIGluIHRoZW9yeSBwZXJtaXR0ZWQgdG8gYWxzbyBp
bnNwZWN0IHRoZQogICAgIC8vIGluc3RydWN0aW9uIHN0cmVhbSB0byBtb3JlIGFjY3VyYXRlIGFz
c2VzcyB0aGUgY29zdCBvZiB0aWVyLXVwKS4KQEAgLTMyNTMsMjEgKzMxODcsNyBAQCBIYW5kbGVy
SW5mbyogQ29kZUJsb2NrOjpoYW5kbGVyRm9ySW5kZXgodW5zaWduZWQgaW5kZXgsIFJlcXVpcmVk
SGFuZGxlciByZXF1aXJlZAogewogICAgIGlmICghbV9yYXJlRGF0YSkKICAgICAgICAgcmV0dXJu
IDA7Ci0gICAgCi0gICAgVmVjdG9yPEhhbmRsZXJJbmZvPiYgZXhjZXB0aW9uSGFuZGxlcnMgPSBt
X3JhcmVEYXRhLT5tX2V4Y2VwdGlvbkhhbmRsZXJzOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgZXhjZXB0aW9uSGFuZGxlcnMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgSGFuZGxlckluZm8m
IGhhbmRsZXIgPSBleGNlcHRpb25IYW5kbGVyc1tpXTsKLSAgICAgICAgaWYgKChyZXF1aXJlZEhh
bmRsZXIgPT0gUmVxdWlyZWRIYW5kbGVyOjpDYXRjaEhhbmRsZXIpICYmICFoYW5kbGVyLmlzQ2F0
Y2hIYW5kbGVyKCkpCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAvLyBIYW5kbGVy
cyBhcmUgb3JkZXJlZCBpbm5lcm1vc3QgZmlyc3QsIHNvIHRoZSBmaXJzdCBoYW5kbGVyIHdlIGVu
Y291bnRlcgotICAgICAgICAvLyB0aGF0IGNvbnRhaW5zIHRoZSBzb3VyY2UgYWRkcmVzcyBpcyB0
aGUgY29ycmVjdCBoYW5kbGVyIHRvIHVzZS4KLSAgICAgICAgLy8gVGhpcyBpbmRleCB1c2VkIGlz
IGVpdGhlciB0aGUgQnl0ZWNvZGVPZmZzZXQgb3IgYSBDYWxsU2l0ZUluZGV4LgotICAgICAgICBp
ZiAoaGFuZGxlci5zdGFydCA8PSBpbmRleCAmJiBoYW5kbGVyLmVuZCA+IGluZGV4KQotICAgICAg
ICAgICAgcmV0dXJuICZoYW5kbGVyOwotICAgIH0KLQotICAgIHJldHVybiAwOworICAgIHJldHVy
biBIYW5kbGVySW5mbzo6aGFuZGxlckZvckluZGV4KG1fcmFyZURhdGEtPm1fZXhjZXB0aW9uSGFu
ZGxlcnMsIGluZGV4LCByZXF1aXJlZEhhbmRsZXIpOwogfQogCiBDYWxsU2l0ZUluZGV4IENvZGVC
bG9jazo6bmV3RXhjZXB0aW9uSGFuZGxpbmdDYWxsU2l0ZUluZGV4KENhbGxTaXRlSW5kZXggb3Jp
Z2luYWxDYWxsU2l0ZSkKQEAgLTMzNjIsNyArMzI4Miw2IEBAIHZvaWQgQ29kZUJsb2NrOjpzaHJp
bmtUb0ZpdChTaHJpbmtNb2RlIHNocmlua01vZGUpCiAgICAgICAgIGlmIChtX3JhcmVEYXRhKSB7
CiAgICAgICAgICAgICBtX3JhcmVEYXRhLT5tX3N3aXRjaEp1bXBUYWJsZXMuc2hyaW5rVG9GaXQo
KTsKICAgICAgICAgICAgIG1fcmFyZURhdGEtPm1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlcy5zaHJp
bmtUb0ZpdCgpOwotICAgICAgICAgICAgbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZ
aWVsZC5zaHJpbmtUb0ZpdCgpOwogICAgICAgICB9CiAgICAgfSAvLyBlbHNlIGRvbid0IHNocmlu
ayB0aGVzZSwgYmVjYXVzZSB3ZSB3b3VsZCBoYXZlIGFscmVhZHkgcG9pbnRlZCBwb2ludGVycyBp
bnRvIHRoZXNlIHRhYmxlcy4KIH0KQEAgLTQzNDQsMTQgKzQyNjMsOSBAQCBTdHJpbmcgQ29kZUJs
b2NrOjpuYW1lRm9yUmVnaXN0ZXIoVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3RlcikKIAog
VmFsdWVQcm9maWxlKiBDb2RlQmxvY2s6OnZhbHVlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KGlu
dCBieXRlY29kZU9mZnNldCkKIHsKLSAgICBWYWx1ZVByb2ZpbGUqIHJlc3VsdCA9IGJpbmFyeVNl
YXJjaDxWYWx1ZVByb2ZpbGUsIGludD4oCi0gICAgICAgIG1fdmFsdWVQcm9maWxlcywgbV92YWx1
ZVByb2ZpbGVzLnNpemUoKSwgYnl0ZWNvZGVPZmZzZXQsCi0gICAgICAgIGdldFZhbHVlUHJvZmls
ZUJ5dGVjb2RlT2Zmc2V0PFZhbHVlUHJvZmlsZT4pOwotICAgIEFTU0VSVChyZXN1bHQtPm1fYnl0
ZWNvZGVPZmZzZXQgIT0gLTEpOwotICAgIEFTU0VSVChpbnN0cnVjdGlvbnMoKVtieXRlY29kZU9m
ZnNldCArIG9wY29kZUxlbmd0aCgKLSAgICAgICAgbV92bS0+aW50ZXJwcmV0ZXItPmdldE9wY29k
ZUlEKAotICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zKClbYnl0ZWNvZGVPZmZzZXRdLnUub3Bjb2Rl
KSkgLSAxXS51LnByb2ZpbGUgPT0gcmVzdWx0KTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIE9w
Y29kZUlEIG9wY29kZUlEID0gbV92bS0+aW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGluc3RydWN0
aW9ucygpW2J5dGVjb2RlT2Zmc2V0XS51Lm9wY29kZSk7CisgICAgdW5zaWduZWQgbGVuZ3RoID0g
b3Bjb2RlTGVuZ3RoKG9wY29kZUlEKTsKKyAgICByZXR1cm4gaW5zdHJ1Y3Rpb25zKClbYnl0ZWNv
ZGVPZmZzZXQgKyBsZW5ndGggLSAxXS51LnByb2ZpbGU7CiB9CiAKIHZvaWQgQ29kZUJsb2NrOjp2
YWxpZGF0ZSgpCkBAIC00NjgwLDQgKzQ1OTQsMTYgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXBNYXRo
SUNTdGF0cygpCiAjZW5kaWYKIH0KIAorQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzJiBDb2RlQmxv
Y2s6OmxpdmVuZXNzQW5hbHlzaXNTbG93KCkKK3sKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNv
ZGVMaXZlbmVzc0FuYWx5c2lzPiBhbmFseXNpcyA9IHN0ZDo6bWFrZV91bmlxdWU8Qnl0ZWNvZGVM
aXZlbmVzc0FuYWx5c2lzPih0aGlzKTsKKyAgICB7CisgICAgICAgIENvbmN1cnJlbnRKSVRMb2Nr
ZXIgbG9ja2VyKG1fbG9jayk7CisgICAgICAgIGlmICghbV9saXZlbmVzc0FuYWx5c2lzKQorICAg
ICAgICAgICAgbV9saXZlbmVzc0FuYWx5c2lzID0gV1RGTW92ZShhbmFseXNpcyk7CisgICAgICAg
IHJldHVybiAqbV9saXZlbmVzc0FuYWx5c2lzOworICAgIH0KK30KKworCiB9IC8vIG5hbWVzcGFj
ZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAppbmRleCBi
MTY4MmM3MzY2ZTBjMGJhMzYwYmI4YjEzOGFhZTA1YzEyZjY1OGU1Li5lMzQzMWEzNzQzMzhkNzI1
ZDcwZmQzMTEzYTdjYjlmMzdiNWExMzMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5oCkBAIC0zMyw3ICszMyw2IEBACiAjaW5jbHVkZSAiQXJyYXlQcm9maWxl
LmgiCiAjaW5jbHVkZSAiQnlWYWxJbmZvLmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVDb252ZW50aW9u
cy5oIgotI2luY2x1ZGUgIkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5oIgogI2luY2x1ZGUgIkNh
bGxMaW5rSW5mby5oIgogI2luY2x1ZGUgIkNhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0
LmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrSGFzaC5oIgpAQCAtNzksNiArNzgsNyBAQAogCiBuYW1l
c3BhY2UgSlNDIHsKIAorY2xhc3MgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOwogY2xhc3MgRXhl
Y1N0YXRlOwogY2xhc3MgSklUQWRkR2VuZXJhdG9yOwogY2xhc3MgSlNNb2R1bGVFbnZpcm9ubWVu
dDsKQEAgLTIyNiwxMCArMjI2LDYgQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7
CiAgICAgICAgIHJldHVybiBpbmRleCA+PSBtX251bVZhcnM7CiAgICAgfQogCi0gICAgZW51bSBj
bGFzcyBSZXF1aXJlZEhhbmRsZXIgewotICAgICAgICBDYXRjaEhhbmRsZXIsCi0gICAgICAgIEFu
eUhhbmRsZXIKLSAgICB9OwogICAgIEhhbmRsZXJJbmZvKiBoYW5kbGVyRm9yQnl0ZWNvZGVPZmZz
ZXQodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIFJlcXVpcmVkSGFuZGxlciA9IFJlcXVpcmVkSGFu
ZGxlcjo6QW55SGFuZGxlcik7CiAgICAgSGFuZGxlckluZm8qIGhhbmRsZXJGb3JJbmRleCh1bnNp
Z25lZCwgUmVxdWlyZWRIYW5kbGVyID0gUmVxdWlyZWRIYW5kbGVyOjpBbnlIYW5kbGVyKTsKICAg
ICB2b2lkIHJlbW92ZUV4Y2VwdGlvbkhhbmRsZXJGb3JDYWxsU2l0ZShDYWxsU2l0ZUluZGV4KTsK
QEAgLTMwNiw2ICszMDIsOSBAQCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAg
ICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEluc3RydWN0aW9uKj4ocmV0dXJuQWRkcmVzcykgLSBp
bnN0cnVjdGlvbnMoKS5iZWdpbigpOwogICAgIH0KIAorICAgIHR5cGVkZWYgSlNDOjpJbnN0cnVj
dGlvbiBJbnN0cnVjdGlvbjsKKyAgICB0eXBlZGVmIFJlZkNvdW50ZWRBcnJheTxJbnN0cnVjdGlv
bj4mIFVucGFja2VkSW5zdHJ1Y3Rpb25zOworCiAgICAgdW5zaWduZWQgbnVtYmVyT2ZJbnN0cnVj
dGlvbnMoKSBjb25zdCB7IHJldHVybiBtX2luc3RydWN0aW9ucy5zaXplKCk7IH0KICAgICBSZWZD
b3VudGVkQXJyYXk8SW5zdHJ1Y3Rpb24+JiBpbnN0cnVjdGlvbnMoKSB7IHJldHVybiBtX2luc3Ry
dWN0aW9uczsgfQogICAgIGNvbnN0IFJlZkNvdW50ZWRBcnJheTxJbnN0cnVjdGlvbj4mIGluc3Ry
dWN0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1faW5zdHJ1Y3Rpb25zOyB9CkBAIC01NDgsNyArNTQ3
LDcgQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgfQogCiAgICAgV3Jp
dGVCYXJyaWVyPFVua25vd24+JiBjb25zdGFudFJlZ2lzdGVyKGludCBpbmRleCkgeyByZXR1cm4g
bV9jb25zdGFudFJlZ2lzdGVyc1tpbmRleCAtIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4XTsg
fQotICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc0NvbnN0YW50UmVnaXN0ZXJJbmRleChpbnQgaW5k
ZXgpIGNvbnN0IHsgcmV0dXJuIGluZGV4ID49IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4OyB9
CisgICAgc3RhdGljIEFMV0FZU19JTkxJTkUgYm9vbCBpc0NvbnN0YW50UmVnaXN0ZXJJbmRleChp
bnQgaW5kZXgpIHsgcmV0dXJuIGluZGV4ID49IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4OyB9
CiAgICAgQUxXQVlTX0lOTElORSBKU1ZhbHVlIGdldENvbnN0YW50KGludCBpbmRleCkgY29uc3Qg
eyByZXR1cm4gbV9jb25zdGFudFJlZ2lzdGVyc1tpbmRleCAtIEZpcnN0Q29uc3RhbnRSZWdpc3Rl
ckluZGV4XS5nZXQoKTsgfQogICAgIEFMV0FZU19JTkxJTkUgU291cmNlQ29kZVJlcHJlc2VudGF0
aW9uIGNvbnN0YW50U291cmNlQ29kZVJlcHJlc2VudGF0aW9uKGludCBpbmRleCkgY29uc3QgeyBy
ZXR1cm4gbV9jb25zdGFudHNTb3VyY2VDb2RlUmVwcmVzZW50YXRpb25baW5kZXggLSBGaXJzdENv
bnN0YW50UmVnaXN0ZXJJbmRleF07IH0KIApAQCAtNTk0LDE0ICs1OTMsNyBAQCBjbGFzcyBDb2Rl
QmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAgICAgICAgIGlmICghIW1fbGl2ZW5lc3NBbmFs
eXNpcykKICAgICAgICAgICAgICAgICByZXR1cm4gKm1fbGl2ZW5lc3NBbmFseXNpczsKICAgICAg
ICAgfQotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzPiBh
bmFseXNpcyA9Ci0gICAgICAgICAgICBzdGQ6Om1ha2VfdW5pcXVlPEJ5dGVjb2RlTGl2ZW5lc3NB
bmFseXNpcz4odGhpcyk7Ci0gICAgICAgIHsKLSAgICAgICAgICAgIENvbmN1cnJlbnRKSVRMb2Nr
ZXIgbG9ja2VyKG1fbG9jayk7Ci0gICAgICAgICAgICBpZiAoIW1fbGl2ZW5lc3NBbmFseXNpcykK
LSAgICAgICAgICAgICAgICBtX2xpdmVuZXNzQW5hbHlzaXMgPSBXVEZNb3ZlKGFuYWx5c2lzKTsK
LSAgICAgICAgICAgIHJldHVybiAqbV9saXZlbmVzc0FuYWx5c2lzOwotICAgICAgICB9CisgICAg
ICAgIHJldHVybiBsaXZlbmVzc0FuYWx5c2lzU2xvdygpOwogICAgIH0KICAgICAKICAgICB2b2lk
IHZhbGlkYXRlKCk7CkBAIC02MjIsMTggKzYxNCw2IEBAIGNsYXNzIENvZGVCbG9jayA6IHB1Ymxp
YyBKU0NlbGwgewogICAgIFN0cmluZ0p1bXBUYWJsZSYgYWRkU3RyaW5nU3dpdGNoSnVtcFRhYmxl
KCkgeyBjcmVhdGVSYXJlRGF0YUlmTmVjZXNzYXJ5KCk7IG1fcmFyZURhdGEtPm1fc3RyaW5nU3dp
dGNoSnVtcFRhYmxlcy5hcHBlbmQoU3RyaW5nSnVtcFRhYmxlKCkpOyByZXR1cm4gbV9yYXJlRGF0
YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzLmxhc3QoKTsgfQogICAgIFN0cmluZ0p1bXBUYWJs
ZSYgc3RyaW5nU3dpdGNoSnVtcFRhYmxlKGludCB0YWJsZUluZGV4KSB7IFJFTEVBU0VfQVNTRVJU
KG1fcmFyZURhdGEpOyByZXR1cm4gbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVz
W3RhYmxlSW5kZXhdOyB9CiAKLSAgICAvLyBMaXZlIGNhbGxlZSByZWdpc3RlcnMgYXQgeWllbGQg
cG9pbnRzLgotICAgIGNvbnN0IEZhc3RCaXRWZWN0b3ImIGxpdmVDYWxsZWVMb2NhbHNBdFlpZWxk
KHVuc2lnbmVkIGluZGV4KSBjb25zdAotICAgIHsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9y
YXJlRGF0YSk7Ci0gICAgICAgIHJldHVybiBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNB
dFlpZWxkW2luZGV4XTsKLSAgICB9Ci0gICAgRmFzdEJpdFZlY3RvciYgbGl2ZUNhbGxlZUxvY2Fs
c0F0WWllbGQodW5zaWduZWQgaW5kZXgpCi0gICAgewotICAgICAgICBSRUxFQVNFX0FTU0VSVCht
X3JhcmVEYXRhKTsKLSAgICAgICAgcmV0dXJuIG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fs
c0F0WWllbGRbaW5kZXhdOwotICAgIH0KLQogICAgIEV2YWxDb2RlQ2FjaGUmIGV2YWxDb2RlQ2Fj
aGUoKSB7IGNyZWF0ZVJhcmVEYXRhSWZOZWNlc3NhcnkoKTsgcmV0dXJuIG1fcmFyZURhdGEtPm1f
ZXZhbENvZGVDYWNoZTsgfQogCiAgICAgZW51bSBTaHJpbmtNb2RlIHsKQEAgLTg4OCw4ICs4Njgs
NiBAQCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAgICAgVmVjdG9yPFNp
bXBsZUp1bXBUYWJsZT4gbV9zd2l0Y2hKdW1wVGFibGVzOwogICAgICAgICBWZWN0b3I8U3RyaW5n
SnVtcFRhYmxlPiBtX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXM7CiAKLSAgICAgICAgVmVjdG9yPEZh
c3RCaXRWZWN0b3I+IG1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQ7Ci0KICAgICAgICAgRXZhbENv
ZGVDYWNoZSBtX2V2YWxDb2RlQ2FjaGU7CiAgICAgfTsKIApAQCAtOTI0LDYgKzkwMiw4IEBAIGNs
YXNzIENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogCiBwcml2YXRlOgogICAgIGZyaWVuZCBj
bGFzcyBDb2RlQmxvY2tTZXQ7CisKKyAgICBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMmIGxpdmVu
ZXNzQW5hbHlzaXNTbG93KCk7CiAgICAgCiAgICAgQ29kZUJsb2NrKiBzcGVjaWFsT1NSRW50cnlC
bG9ja09yTnVsbCgpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0hhbmRsZXJJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSGFu
ZGxlckluZm8uaAppbmRleCBhY2RkYTA4ZWQxNGNiZjlmMDk3MTI3NTA0MDVhNDE3NDFmNzZhMjEz
Li43YjEwOGFjZTkzNzI4YThkNWRmOGViMTczZmMwYjBhNjFiYWVkNjNlIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSGFuZGxlckluZm8uaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSGFuZGxlckluZm8uaApAQCAtMjcsNiArMjcsNyBAQAog
I2RlZmluZSBIYW5kbGVySW5mb19oCiAKICNpbmNsdWRlICJDb2RlTG9jYXRpb24uaCIKKyNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC0zNyw2ICszOCwxMSBA
QCBlbnVtIGNsYXNzIEhhbmRsZXJUeXBlIHsKICAgICBTeW50aGVzaXplZEZpbmFsbHkgPSAzCiB9
OwogCitlbnVtIGNsYXNzIFJlcXVpcmVkSGFuZGxlciB7CisgICAgQ2F0Y2hIYW5kbGVyLAorICAg
IEFueUhhbmRsZXIKK307CisKIHN0cnVjdCBIYW5kbGVySW5mb0Jhc2UgewogICAgIEhhbmRsZXJU
eXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxIYW5kbGVyVHlwZT4odHlwZUJp
dHMpOyB9CiAgICAgdm9pZCBzZXRUeXBlKEhhbmRsZXJUeXBlIHR5cGUpIHsgdHlwZUJpdHMgPSBz
dGF0aWNfY2FzdDx1aW50MzJfdD4odHlwZSk7IH0KQEAgLTU4LDYgKzY0LDIzIEBAIHN0cnVjdCBI
YW5kbGVySW5mb0Jhc2UgewogCiAgICAgYm9vbCBpc0NhdGNoSGFuZGxlcigpIGNvbnN0IHsgcmV0
dXJuIHR5cGUoKSA9PSBIYW5kbGVyVHlwZTo6Q2F0Y2g7IH0KIAorICAgIHRlbXBsYXRlPHR5cGVu
YW1lIEhhbmRsZXI+CisgICAgc3RhdGljIEhhbmRsZXIqIGhhbmRsZXJGb3JJbmRleChWZWN0b3I8
SGFuZGxlcj4mIGV4ZXB0aW9uSGFuZGxlcnMsIHVuc2lnbmVkIGluZGV4LCBSZXF1aXJlZEhhbmRs
ZXIgcmVxdWlyZWRIYW5kbGVyKQorICAgIHsKKyAgICAgICAgZm9yIChIYW5kbGVyJiBoYW5kbGVy
IDogZXhlcHRpb25IYW5kbGVycykgeworICAgICAgICAgICAgaWYgKChyZXF1aXJlZEhhbmRsZXIg
PT0gUmVxdWlyZWRIYW5kbGVyOjpDYXRjaEhhbmRsZXIpICYmICFoYW5kbGVyLmlzQ2F0Y2hIYW5k
bGVyKCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIC8vIEhhbmRs
ZXJzIGFyZSBvcmRlcmVkIGlubmVybW9zdCBmaXJzdCwgc28gdGhlIGZpcnN0IGhhbmRsZXIgd2Ug
ZW5jb3VudGVyCisgICAgICAgICAgICAvLyB0aGF0IGNvbnRhaW5zIHRoZSBzb3VyY2UgYWRkcmVz
cyBpcyB0aGUgY29ycmVjdCBoYW5kbGVyIHRvIHVzZS4KKyAgICAgICAgICAgIC8vIFRoaXMgaW5k
ZXggdXNlZCBpcyBlaXRoZXIgdGhlIEJ5dGVjb2RlT2Zmc2V0IG9yIGEgQ2FsbFNpdGVJbmRleC4K
KyAgICAgICAgICAgIGlmIChoYW5kbGVyLnN0YXJ0IDw9IGluZGV4ICYmIGhhbmRsZXIuZW5kID4g
aW5kZXgpCisgICAgICAgICAgICAgICAgcmV0dXJuICZoYW5kbGVyOworICAgICAgICB9CisKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCiAgICAgdWludDMyX3Qgc3RhcnQ7CiAgICAg
dWludDMyX3QgZW5kOwogICAgIHVpbnQzMl90IHRhcmdldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9PcGNvZGUuaAppbmRleCAyMDFkOTZjMmQ5YjUwYmE2NWQ3MjEyOTdiYjJlYWIzMzA0
NWU3NmM1Li4yODE3ZGY3ODExODYzMGU3NmQyNWU1YzU3NWEzM2MyMmJiN2YxYmRmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCkBAIC0xMjYsNiArMTI2LDMyIEBAIGlu
bGluZSBzaXplX3Qgb3Bjb2RlTGVuZ3RoKE9wY29kZUlEIG9wY29kZSkKICAgICByZXR1cm4gMDsK
IH0KIAoraW5saW5lIGJvb2wgaXNCcmFuY2goT3Bjb2RlSUQgb3Bjb2RlSUQpCit7CisgICAgc3dp
dGNoIChvcGNvZGVJRCkgeworICAgIGNhc2Ugb3Bfam1wOgorICAgIGNhc2Ugb3BfanRydWU6Cisg
ICAgY2FzZSBvcF9qZmFsc2U6CisgICAgY2FzZSBvcF9qZXFfbnVsbDoKKyAgICBjYXNlIG9wX2pu
ZXFfbnVsbDoKKyAgICBjYXNlIG9wX2puZXFfcHRyOgorICAgIGNhc2Ugb3Bfamxlc3M6CisgICAg
Y2FzZSBvcF9qbGVzc2VxOgorICAgIGNhc2Ugb3BfamdyZWF0ZXI6CisgICAgY2FzZSBvcF9qZ3Jl
YXRlcmVxOgorICAgIGNhc2Ugb3Bfam5sZXNzOgorICAgIGNhc2Ugb3Bfam5sZXNzZXE6CisgICAg
Y2FzZSBvcF9qbmdyZWF0ZXI6CisgICAgY2FzZSBvcF9qbmdyZWF0ZXJlcToKKyAgICBjYXNlIG9w
X3N3aXRjaF9pbW06CisgICAgY2FzZSBvcF9zd2l0Y2hfY2hhcjoKKyAgICBjYXNlIG9wX3N3aXRj
aF9zdHJpbmc6CisgICAgICAgIHJldHVybiB0cnVlOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiBuYW1lc3BhY2Ug
V1RGIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVjaXNl
SnVtcFRhcmdldHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VK
dW1wVGFyZ2V0cy5jcHAKaW5kZXggZGZjYjcxMzljMDJhMDQ3Y2IxMzViZjVkMTQ4YjU0ZWY4YWY3
YjNkNy4uYmQ4NDBmOGVhODEzNTk1ZDY3MmM5OGE2NjcwMWMzODg3YzVkMDg0NCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5j
cHAKQEAgLTI2LDE1ICsyNiwxNSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlBy
ZWNpc2VKdW1wVGFyZ2V0cy5oIgogCi0jaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKKyNpbmNsdWRl
ICJJbnRlcnByZXRlcklubGluZXMuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAKIG5hbWVz
cGFjZSBKU0MgewogCi10ZW1wbGF0ZSA8c2l6ZV90IHZlY3RvclNpemU+Ci1zdGF0aWMgdm9pZCBn
ZXRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBJbnRl
cnByZXRlciogaW50ZXJwcmV0ZXIsIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5z
aWduZWQgYnl0ZWNvZGVPZmZzZXQsIFZlY3Rvcjx1bnNpZ25lZCwgdmVjdG9yU2l6ZT4mIG91dCkK
K3RlbXBsYXRlIDxzaXplX3QgdmVjdG9yU2l6ZSwgdHlwZW5hbWUgQmxvY2ssIHR5cGVuYW1lIElu
c3RydWN0aW9uPgorc3RhdGljIHZvaWQgZ2V0SnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChC
bG9jayogY29kZUJsb2NrLCBJbnRlcnByZXRlciogaW50ZXJwcmV0ZXIsIEluc3RydWN0aW9uKiBp
bnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIFZlY3Rvcjx1bnNpZ25l
ZCwgdmVjdG9yU2l6ZT4mIG91dCkKIHsKLSAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGludGVycHJl
dGVyLT5nZXRPcGNvZGVJRChpbnN0cnVjdGlvbnNCZWdpbltieXRlY29kZU9mZnNldF0udS5vcGNv
ZGUpOworICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGlu
c3RydWN0aW9uc0JlZ2luW2J5dGVjb2RlT2Zmc2V0XSk7CiAgICAgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnQgPSBpbnN0cnVjdGlvbnNCZWdpbiArIGJ5dGVjb2RlT2Zmc2V0OwogICAgIHN3aXRjaCAob3Bj
b2RlSUQpIHsKICAgICBjYXNlIG9wX2ptcDoKQEAgLTU1LDIxICs1NSwyMCBAQCBzdGF0aWMgdm9p
ZCBnZXRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBJ
bnRlcnByZXRlciogaQogICAgIGNhc2Ugb3Bfam5sZXNzZXE6CiAgICAgY2FzZSBvcF9qbmdyZWF0
ZXI6CiAgICAgY2FzZSBvcF9qbmdyZWF0ZXJlcToKLSAgICBjYXNlIG9wX3NhdmU6IC8vIFRoZSBq
dW1wIG9mIG9wX3NhdmUgaXMgcHVyZWx5IGZvciBjYWxjdWxhdGluZyBsaXZlbmVzcy4KICAgICAg
ICAgb3V0LmFwcGVuZChieXRlY29kZU9mZnNldCArIGN1cnJlbnRbM10udS5vcGVyYW5kKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBvcF9zd2l0Y2hfaW1tOgogICAgIGNhc2Ugb3Bfc3dpdGNo
X2NoYXI6IHsKLSAgICAgICAgU2ltcGxlSnVtcFRhYmxlJiB0YWJsZSA9IGNvZGVCbG9jay0+c3dp
dGNoSnVtcFRhYmxlKGN1cnJlbnRbMV0udS5vcGVyYW5kKTsKKyAgICAgICAgYXV0byYgdGFibGUg
PSBjb2RlQmxvY2stPnN3aXRjaEp1bXBUYWJsZShjdXJyZW50WzFdLnUub3BlcmFuZCk7CiAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IHRhYmxlLmJyYW5jaE9mZnNldHMuc2l6ZSgpOyBpLS07KQog
ICAgICAgICAgICAgb3V0LmFwcGVuZChieXRlY29kZU9mZnNldCArIHRhYmxlLmJyYW5jaE9mZnNl
dHNbaV0pOwogICAgICAgICBvdXQuYXBwZW5kKGJ5dGVjb2RlT2Zmc2V0ICsgY3VycmVudFsyXS51
Lm9wZXJhbmQpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBvcF9zd2l0Y2hfc3Ry
aW5nOiB7Ci0gICAgICAgIFN0cmluZ0p1bXBUYWJsZSYgdGFibGUgPSBjb2RlQmxvY2stPnN0cmlu
Z1N3aXRjaEp1bXBUYWJsZShjdXJyZW50WzFdLnUub3BlcmFuZCk7Ci0gICAgICAgIFN0cmluZ0p1
bXBUYWJsZTo6U3RyaW5nT2Zmc2V0VGFibGU6Oml0ZXJhdG9yIGl0ZXIgPSB0YWJsZS5vZmZzZXRU
YWJsZS5iZWdpbigpOwotICAgICAgICBTdHJpbmdKdW1wVGFibGU6OlN0cmluZ09mZnNldFRhYmxl
OjppdGVyYXRvciBlbmQgPSB0YWJsZS5vZmZzZXRUYWJsZS5lbmQoKTsKKyAgICAgICAgYXV0byYg
dGFibGUgPSBjb2RlQmxvY2stPnN0cmluZ1N3aXRjaEp1bXBUYWJsZShjdXJyZW50WzFdLnUub3Bl
cmFuZCk7CisgICAgICAgIGF1dG8gaXRlciA9IHRhYmxlLm9mZnNldFRhYmxlLmJlZ2luKCk7Cisg
ICAgICAgIGF1dG8gZW5kID0gdGFibGUub2Zmc2V0VGFibGUuZW5kKCk7CiAgICAgICAgIGZvciAo
OyBpdGVyICE9IGVuZDsgKytpdGVyKQogICAgICAgICAgICAgb3V0LmFwcGVuZChieXRlY29kZU9m
ZnNldCArIGl0ZXItPnZhbHVlLmJyYW5jaE9mZnNldCk7CiAgICAgICAgIG91dC5hcHBlbmQoYnl0
ZWNvZGVPZmZzZXQgKyBjdXJyZW50WzJdLnUub3BlcmFuZCk7CkBAIC04MywxMyArODIsMTkgQEAg
c3RhdGljIHZvaWQgZ2V0SnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNv
ZGVCbG9jaywgSW50ZXJwcmV0ZXIqIGkKICAgICB9CiB9CiAKLXZvaWQgY29tcHV0ZVByZWNpc2VK
dW1wVGFyZ2V0cyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgVmVjdG9yPHVuc2lnbmVkLCAzMj4mIG91
dCkKK2VudW0gY2xhc3MgQ29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0c01vZGUgeworICAgIEZvbGxv
d0NvZGVCbG9ja0NsYWltLAorICAgIEZvcmNlQ29tcHV0ZSwKK307CisKK3RlbXBsYXRlPENvbXB1
dGVQcmVjaXNlSnVtcFRhcmdldHNNb2RlIE1vZGUsIHR5cGVuYW1lIEJsb2NrLCB0eXBlbmFtZSBJ
bnN0cnVjdGlvbiwgc2l6ZV90IHZlY3RvclNpemU+Cit2b2lkIGNvbXB1dGVQcmVjaXNlSnVtcFRh
cmdldHNJbnRlcm5hbChCbG9jayogY29kZUJsb2NrLCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25z
QmVnaW4sIHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQsIFZlY3Rvcjx1bnNpZ25lZCwgdmVjdG9y
U2l6ZT4mIG91dCkKIHsKICAgICBBU1NFUlQob3V0LmlzRW1wdHkoKSk7CiAgICAgCiAgICAgLy8g
V2Ugd2lsbCBkZXJpdmUgYSBzdXBlcnNldCBvZiB0aGUganVtcCB0YXJnZXRzIHRoYXQgdGhlIGNv
ZGUgYmxvY2sgdGhpbmtzIGl0IGhhcy4KICAgICAvLyBTbywgaWYgdGhlIGNvZGUgYmxvY2sgY2xh
aW1zIHRoZXJlIGFyZSBub25lLCB0aGVuIHdlIGFyZSBkb25lLgotICAgIGlmICghY29kZUJsb2Nr
LT5udW1iZXJPZkp1bXBUYXJnZXRzKCkpCisgICAgaWYgKE1vZGUgPT0gQ29tcHV0ZVByZWNpc2VK
dW1wVGFyZ2V0c01vZGU6OkZvbGxvd0NvZGVCbG9ja0NsYWltICYmICFjb2RlQmxvY2stPm51bWJl
ck9mSnVtcFRhcmdldHMoKSkKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIGZvciAodW5zaWdu
ZWQgaSA9IGNvZGVCbG9jay0+bnVtYmVyT2ZFeGNlcHRpb25IYW5kbGVycygpOyBpLS07KSB7CkBA
IC05OSwxMCArMTA0LDggQEAgdm9pZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKENvZGVCbG9j
ayogY29kZUJsb2NrLCBWZWN0b3I8dW5zaWduZWQsIDMyPiYgb3V0KQogICAgIH0KIAogICAgIElu
dGVycHJldGVyKiBpbnRlcnByZXRlciA9IGNvZGVCbG9jay0+dm0oKS0+aW50ZXJwcmV0ZXI7Ci0g
ICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luID0gY29kZUJsb2NrLT5pbnN0cnVjdGlv
bnMoKS5iZWdpbigpOwotICAgIHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQgPSBjb2RlQmxvY2st
Pmluc3RydWN0aW9ucygpLnNpemUoKTsKICAgICBmb3IgKHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0
ID0gMDsgYnl0ZWNvZGVPZmZzZXQgPCBpbnN0cnVjdGlvbkNvdW50OykgewotICAgICAgICBPcGNv
ZGVJRCBvcGNvZGVJRCA9IGludGVycHJldGVyLT5nZXRPcGNvZGVJRChpbnN0cnVjdGlvbnNCZWdp
bltieXRlY29kZU9mZnNldF0udS5vcGNvZGUpOworICAgICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9
IGludGVycHJldGVyLT5nZXRPcGNvZGVJRChpbnN0cnVjdGlvbnNCZWdpbltieXRlY29kZU9mZnNl
dF0pOwogICAgICAgICBnZXRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9jaywg
aW50ZXJwcmV0ZXIsIGluc3RydWN0aW9uc0JlZ2luLCBieXRlY29kZU9mZnNldCwgb3V0KTsKICAg
ICAgICAgYnl0ZWNvZGVPZmZzZXQgKz0gb3Bjb2RlTGVuZ3Roc1tvcGNvZGVJRF07CiAgICAgfQpA
QCAtMTI0LDExICsxMjcsMzQgQEAgdm9pZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKENvZGVC
bG9jayogY29kZUJsb2NrLCBWZWN0b3I8dW5zaWduZWQsIDMyPiYgb3V0KQogICAgIG91dC5zaHJp
bmtUb0ZpdCgpOwogfQogCi12b2lkIGZpbmRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KENv
ZGVCbG9jayogY29kZUJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgVmVjdG9yPHVuc2ln
bmVkLCAxPiYgb3V0KQordm9pZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKENvZGVCbG9jayog
Y29kZUJsb2NrLCBWZWN0b3I8dW5zaWduZWQsIDMyPiYgb3V0KQogewotICAgIEludGVycHJldGVy
KiBpbnRlcnByZXRlciA9IGNvZGVCbG9jay0+dm0oKS0+aW50ZXJwcmV0ZXI7Ci0gICAgSW5zdHJ1
Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luID0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdp
bigpOwotICAgIGdldEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoY29kZUJsb2NrLCBpbnRl
cnByZXRlciwgaW5zdHJ1Y3Rpb25zQmVnaW4sIGJ5dGVjb2RlT2Zmc2V0LCBvdXQpOworICAgIGNv
bXB1dGVQcmVjaXNlSnVtcFRhcmdldHNJbnRlcm5hbDxDb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRz
TW9kZTo6Rm9sbG93Q29kZUJsb2NrQ2xhaW0+KGNvZGVCbG9jaywgY29kZUJsb2NrLT5pbnN0cnVj
dGlvbnMoKS5iZWdpbigpLCBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLnNpemUoKSwgb3V0KTsK
K30KKwordm9pZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKENvZGVCbG9jayogY29kZUJsb2Nr
LCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGluc3RydWN0aW9uQ291
bnQsIFZlY3Rvcjx1bnNpZ25lZCwgMzI+JiBvdXQpCit7CisgICAgY29tcHV0ZVByZWNpc2VKdW1w
VGFyZ2V0c0ludGVybmFsPENvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHNNb2RlOjpGb2xsb3dDb2Rl
QmxvY2tDbGFpbT4oY29kZUJsb2NrLCBpbnN0cnVjdGlvbnNCZWdpbiwgaW5zdHJ1Y3Rpb25Db3Vu
dCwgb3V0KTsKK30KKwordm9pZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKFVubGlua2VkQ29k
ZUJsb2NrKiBjb2RlQmxvY2ssIFVubGlua2VkSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2lu
LCB1bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50LCBWZWN0b3I8dW5zaWduZWQsIDMyPiYgb3V0KQor
eworICAgIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHNJbnRlcm5hbDxDb21wdXRlUHJlY2lzZUp1
bXBUYXJnZXRzTW9kZTo6Rm9sbG93Q29kZUJsb2NrQ2xhaW0+KGNvZGVCbG9jaywgaW5zdHJ1Y3Rp
b25zQmVnaW4sIGluc3RydWN0aW9uQ291bnQsIG91dCk7Cit9CisKK3ZvaWQgcmVjb21wdXRlUHJl
Y2lzZUp1bXBUYXJnZXRzKFVubGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFVubGlua2VkSW5z
dHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50LCBW
ZWN0b3I8dW5zaWduZWQ+JiBvdXQpCit7CisgICAgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0c0lu
dGVybmFsPENvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHNNb2RlOjpGb3JjZUNvbXB1dGU+KGNvZGVC
bG9jaywgaW5zdHJ1Y3Rpb25zQmVnaW4sIGluc3RydWN0aW9uQ291bnQsIG91dCk7Cit9CisKK3Zv
aWQgZmluZEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQs
IFZlY3Rvcjx1bnNpZ25lZCwgMT4mIG91dCkKK3sKKyAgICBnZXRKdW1wVGFyZ2V0c0ZvckJ5dGVj
b2RlT2Zmc2V0KGNvZGVCbG9jaywgY29kZUJsb2NrLT52bSgpLT5pbnRlcnByZXRlciwgaW5zdHJ1
Y3Rpb25zQmVnaW4sIGJ5dGVjb2RlT2Zmc2V0LCBvdXQpOworfQorCit2b2lkIGZpbmRKdW1wVGFy
Z2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KFVubGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFVubGlu
a2VkSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBieXRlY29kZU9mZnNl
dCwgVmVjdG9yPHVuc2lnbmVkLCAxPiYgb3V0KQoreworICAgIGdldEp1bXBUYXJnZXRzRm9yQnl0
ZWNvZGVPZmZzZXQoY29kZUJsb2NrLCBjb2RlQmxvY2stPnZtKCktPmludGVycHJldGVyLCBpbnN0
cnVjdGlvbnNCZWdpbiwgYnl0ZWNvZGVPZmZzZXQsIG91dCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VK
dW1wVGFyZ2V0cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1w
VGFyZ2V0cy5oCmluZGV4IDg1MjQxM2Q3N2I3OTg5ODRiMjdjZWYwZWQ2MmJjOTRjNjg5ZTIxMmMu
LmRiOWJkMzgzYjhhYzQ1NTdkMzI2NzE3YjcyZDRiMGY1MGIxZDE4MzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmgKQEAgLTMw
LDEwICszMCwxOCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorY2xhc3MgVW5saW5rZWRDb2RlQmxv
Y2s7CitzdHJ1Y3QgVW5saW5rZWRJbnN0cnVjdGlvbjsKKwogLy8gUmV0dXJuIGEgc29ydGVkIGxp
c3Qgb2YgYnl0ZWNvZGUgaW5kZXggdGhhdCBhcmUgdGhlIGRlc3RpbmF0aW9uIG9mIGEganVtcC4K
IHZvaWQgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhDb2RlQmxvY2sqLCBWZWN0b3I8dW5zaWdu
ZWQsIDMyPiYgb3V0KTsKK3ZvaWQgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhDb2RlQmxvY2sq
LCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGluc3RydWN0aW9uQ291
bnQsIFZlY3Rvcjx1bnNpZ25lZCwgMzI+JiBvdXQpOwordm9pZCBjb21wdXRlUHJlY2lzZUp1bXBU
YXJnZXRzKFVubGlua2VkQ29kZUJsb2NrKiwgVW5saW5rZWRJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rp
b25zQmVnaW4sIHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQsIFZlY3Rvcjx1bnNpZ25lZCwgMzI+
JiBvdXQpOworCit2b2lkIHJlY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhVbmxpbmtlZENvZGVC
bG9jayosIFVubGlua2VkSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBp
bnN0cnVjdGlvbkNvdW50LCBWZWN0b3I8dW5zaWduZWQ+JiBvdXQpOwogCi12b2lkIGZpbmRKdW1w
VGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayosIHVuc2lnbmVkIGJ5dGVjb2RlT2Zm
c2V0LCBWZWN0b3I8dW5zaWduZWQsIDE+JiBvdXQpOwordm9pZCBmaW5kSnVtcFRhcmdldHNGb3JC
eXRlY29kZU9mZnNldChDb2RlQmxvY2sqLCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4s
IHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBWZWN0b3I8dW5zaWduZWQsIDE+JiBvdXQpOwordm9p
ZCBmaW5kSnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChVbmxpbmtlZENvZGVCbG9jayosIFVu
bGlua2VkSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBieXRlY29kZU9m
ZnNldCwgVmVjdG9yPHVuc2lnbmVkLCAxPiYgb3V0KTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVC
bG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxv
Y2suY3BwCmluZGV4IDE5NWNmNjBjOTdiM2VkYzZkMWM2ODNiYzhhZDhjYTQzZGMwNzVmZmEuLjQx
MTIxMDJiMWNhNjRjZTc0OTI3YmI2OGQ2YjdhZmFhY2IwZTQ5Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcApAQCAtMjgs
NiArMjgsNyBAQAogI2luY2x1ZGUgIlVubGlua2VkQ29kZUJsb2NrLmgiCiAKICNpbmNsdWRlICJC
eXRlY29kZUdlbmVyYXRvci5oIgorI2luY2x1ZGUgIkJ5dGVjb2RlUmV3cml0ZXIuaCIKICNpbmNs
dWRlICJDbGFzc0luZm8uaCIKICNpbmNsdWRlICJDb2RlQ2FjaGUuaCIKICNpbmNsdWRlICJFeGVj
dXRhYmxlLmgiCkBAIC0zNiw2ICszNyw3IEBACiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIKICNpbmNs
dWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiUGFyc2VyLmgiCisjaW5jbHVkZSAiUHJlY2lz
ZUp1bXBUYXJnZXRzLmgiCiAjaW5jbHVkZSAiU291cmNlUHJvdmlkZXIuaCIKICNpbmNsdWRlICJT
dHJ1Y3R1cmUuaCIKICNpbmNsdWRlICJTeW1ib2xUYWJsZS5oIgpAQCAtMzYyLDUgKzM2NCwxMTEg
QEAgY29uc3QgVW5saW5rZWRJbnN0cnVjdGlvblN0cmVhbSYgVW5saW5rZWRDb2RlQmxvY2s6Omlu
c3RydWN0aW9ucygpIGNvbnN0CiAgICAgcmV0dXJuICptX3VubGlua2VkSW5zdHJ1Y3Rpb25zOwog
fQogCitVbmxpbmtlZEhhbmRsZXJJbmZvKiBVbmxpbmtlZENvZGVCbG9jazo6aGFuZGxlckZvckJ5
dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBSZXF1aXJlZEhhbmRsZXIgcmVx
dWlyZWRIYW5kbGVyKQoreworICAgIHJldHVybiBoYW5kbGVyRm9ySW5kZXgoYnl0ZWNvZGVPZmZz
ZXQsIHJlcXVpcmVkSGFuZGxlcik7Cit9CisKK1VubGlua2VkSGFuZGxlckluZm8qIFVubGlua2Vk
Q29kZUJsb2NrOjpoYW5kbGVyRm9ySW5kZXgodW5zaWduZWQgaW5kZXgsIFJlcXVpcmVkSGFuZGxl
ciByZXF1aXJlZEhhbmRsZXIpCit7CisgICAgaWYgKCFtX3JhcmVEYXRhKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gVW5saW5rZWRIYW5kbGVySW5mbzo6aGFuZGxlckZvcklu
ZGV4KG1fcmFyZURhdGEtPm1fZXhjZXB0aW9uSGFuZGxlcnMsIGluZGV4LCByZXF1aXJlZEhhbmRs
ZXIpOworfQorCit2b2lkIFVubGlua2VkQ29kZUJsb2NrOjphcHBseU1vZGlmaWNhdGlvbihCeXRl
Y29kZVJld3JpdGVyJiBpbnNlcnRpb25TZXQpCit7CisgICAgLy8gQmVmb3JlIGFwcGx5aW5nIHRo
ZSBjaGFuZ2VzLCB3ZSBhZGp1c3QgdGhlIGp1bXBzIGJhc2VkIG9uIHRoZSBvcmlnaW5hbCBieXRl
Y29kZSBvZmZzZXQsIHRoZSBvZmZzZXQgdG8gdGhlIGp1bXAgdGFyZ2V0LCBhbmQKKyAgICAvLyB0
aGUgaW5zZXJ0aW9uIGluZm9ybWF0aW9uLgorCisgICAgQnl0ZWNvZGVHcmFwaDxVbmxpbmtlZENv
ZGVCbG9jaz4mIGdyYXBoID0gaW5zZXJ0aW9uU2V0LmdyYXBoKCk7CisgICAgVW5saW5rZWRJbnN0
cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4gPSBncmFwaC5pbnN0cnVjdGlvbnMoKS5iZWdpbigp
OworICAgIGZvciAoaW50IGJ5dGVjb2RlT2Zmc2V0ID0gMCwgaW5zdHJ1Y3Rpb25Db3VudCA9IGdy
YXBoLmluc3RydWN0aW9ucygpLnNpemUoKTsgYnl0ZWNvZGVPZmZzZXQgPCBpbnN0cnVjdGlvbkNv
dW50OykgeworICAgICAgICBVbmxpbmtlZEluc3RydWN0aW9uKiBjdXJyZW50ID0gaW5zdHJ1Y3Rp
b25zQmVnaW4gKyBieXRlY29kZU9mZnNldDsKKyAgICAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBj
dXJyZW50WzBdLnUub3Bjb2RlOworCisgICAgICAgIHN3aXRjaCAob3Bjb2RlSUQpIHsKKyAgICAg
ICAgY2FzZSBvcF9qbXA6CisgICAgICAgICAgICBjdXJyZW50WzFdLnUub3BlcmFuZCA9IGluc2Vy
dGlvblNldC5hZGp1c3RPZmZzZXQoYnl0ZWNvZGVPZmZzZXQsIGJ5dGVjb2RlT2Zmc2V0ICsgY3Vy
cmVudFsxXS51Lm9wZXJhbmQpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBv
cF9qdHJ1ZToKKyAgICAgICAgY2FzZSBvcF9qZmFsc2U6CisgICAgICAgIGNhc2Ugb3BfamVxX251
bGw6CisgICAgICAgIGNhc2Ugb3Bfam5lcV9udWxsOgorICAgICAgICAgICAgY3VycmVudFsyXS51
Lm9wZXJhbmQgPSBpbnNlcnRpb25TZXQuYWRqdXN0T2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0LCBieXRl
Y29kZU9mZnNldCArIGN1cnJlbnRbMl0udS5vcGVyYW5kKTsKKyAgICAgICAgICAgIGJyZWFrOwor
CisgICAgICAgIGNhc2Ugb3Bfam5lcV9wdHI6CisgICAgICAgIGNhc2Ugb3Bfamxlc3M6CisgICAg
ICAgIGNhc2Ugb3Bfamxlc3NlcToKKyAgICAgICAgY2FzZSBvcF9qZ3JlYXRlcjoKKyAgICAgICAg
Y2FzZSBvcF9qZ3JlYXRlcmVxOgorICAgICAgICBjYXNlIG9wX2pubGVzczoKKyAgICAgICAgY2Fz
ZSBvcF9qbmxlc3NlcToKKyAgICAgICAgY2FzZSBvcF9qbmdyZWF0ZXI6CisgICAgICAgIGNhc2Ug
b3Bfam5ncmVhdGVyZXE6CisgICAgICAgICAgICBjdXJyZW50WzNdLnUub3BlcmFuZCA9IGluc2Vy
dGlvblNldC5hZGp1c3RPZmZzZXQoYnl0ZWNvZGVPZmZzZXQsIGJ5dGVjb2RlT2Zmc2V0ICsgY3Vy
cmVudFszXS51Lm9wZXJhbmQpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBv
cF9zd2l0Y2hfaW1tOgorICAgICAgICBjYXNlIG9wX3N3aXRjaF9jaGFyOiB7CisgICAgICAgICAg
ICBhdXRvJiB0YWJsZSA9IHN3aXRjaEp1bXBUYWJsZShjdXJyZW50WzFdLnUub3BlcmFuZCk7Cisg
ICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSB0YWJsZS5icmFuY2hPZmZzZXRzLnNpemUoKTsg
aS0tOykKKyAgICAgICAgICAgICAgICB0YWJsZS5icmFuY2hPZmZzZXRzW2ldID0gaW5zZXJ0aW9u
U2V0LmFkanVzdE9mZnNldChieXRlY29kZU9mZnNldCwgYnl0ZWNvZGVPZmZzZXQgKyB0YWJsZS5i
cmFuY2hPZmZzZXRzW2ldKTsKKyAgICAgICAgICAgIGN1cnJlbnRbMl0udS5vcGVyYW5kID0gaW5z
ZXJ0aW9uU2V0LmFkanVzdE9mZnNldChieXRlY29kZU9mZnNldCwgYnl0ZWNvZGVPZmZzZXQgKyBj
dXJyZW50WzJdLnUub3BlcmFuZCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisg
ICAgICAgIGNhc2Ugb3Bfc3dpdGNoX3N0cmluZzogeworICAgICAgICAgICAgYXV0byYgdGFibGUg
PSBzdHJpbmdTd2l0Y2hKdW1wVGFibGUoY3VycmVudFsxXS51Lm9wZXJhbmQpOworICAgICAgICAg
ICAgYXV0byBpdGVyID0gdGFibGUub2Zmc2V0VGFibGUuYmVnaW4oKTsKKyAgICAgICAgICAgIGF1
dG8gZW5kID0gdGFibGUub2Zmc2V0VGFibGUuZW5kKCk7CisgICAgICAgICAgICBmb3IgKDsgaXRl
ciAhPSBlbmQ7ICsraXRlcikKKyAgICAgICAgICAgICAgICBpdGVyLT52YWx1ZS5icmFuY2hPZmZz
ZXQgPSBpbnNlcnRpb25TZXQuYWRqdXN0T2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0LCBieXRlY29kZU9m
ZnNldCArIGl0ZXItPnZhbHVlLmJyYW5jaE9mZnNldCk7CisgICAgICAgICAgICBjdXJyZW50WzJd
LnUub3BlcmFuZCA9IGluc2VydGlvblNldC5hZGp1c3RPZmZzZXQoYnl0ZWNvZGVPZmZzZXQsIGJ5
dGVjb2RlT2Zmc2V0ICsgY3VycmVudFsyXS51Lm9wZXJhbmQpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0KKworICAgICAgICBieXRlY29kZU9mZnNldCArPSBvcGNvZGVMZW5ndGgob3Bjb2RlSUQp
OworICAgIH0KKworICAgIC8vIFRoZW4sIGV4Y2VwdGlvbiBoYW5kbGVycyBzaG91bGQgYmUgYWRq
dXN0ZWQuCisgICAgaWYgKG1fcmFyZURhdGEpIHsKKyAgICAgICAgZm9yIChVbmxpbmtlZEhhbmRs
ZXJJbmZvJiBoYW5kbGVyIDogbV9yYXJlRGF0YS0+bV9leGNlcHRpb25IYW5kbGVycykgeworICAg
ICAgICAgICAgaGFuZGxlci50YXJnZXQgPSBpbnNlcnRpb25TZXQuYWRqdXN0T2Zmc2V0KDAsIGhh
bmRsZXIudGFyZ2V0KTsKKyAgICAgICAgICAgIGhhbmRsZXIuc3RhcnQgPSBpbnNlcnRpb25TZXQu
YWRqdXN0T2Zmc2V0KDAsIGhhbmRsZXIuc3RhcnQpOworICAgICAgICAgICAgaGFuZGxlci5lbmQg
PSBpbnNlcnRpb25TZXQuYWRqdXN0T2Zmc2V0KDAsIGhhbmRsZXIuZW5kKTsKKyAgICAgICAgfQor
CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9yYXJlRGF0YS0+bV9vcFByb2ZpbGVD
b250cm9sRmxvd0J5dGVjb2RlT2Zmc2V0cy5zaXplKCk7ICsraSkKKyAgICAgICAgICAgIG1fcmFy
ZURhdGEtPm1fb3BQcm9maWxlQ29udHJvbEZsb3dCeXRlY29kZU9mZnNldHNbaV0gPSBpbnNlcnRp
b25TZXQuYWRqdXN0T2Zmc2V0KDAsIG1fcmFyZURhdGEtPm1fb3BQcm9maWxlQ29udHJvbEZsb3dC
eXRlY29kZU9mZnNldHNbaV0pOworCisgICAgICAgIGlmICghbV9yYXJlRGF0YS0+bV90eXBlUHJv
ZmlsZXJJbmZvTWFwLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgSGFzaE1hcDx1bnNpZ25lZCwg
UmFyZURhdGE6OlR5cGVQcm9maWxlckV4cHJlc3Npb25SYW5nZT4gYWRqdXN0ZWRUeXBlUHJvZmls
ZXJJbmZvTWFwOworICAgICAgICAgICAgZm9yIChhdXRvJiBlbnRyeSA6IG1fcmFyZURhdGEtPm1f
dHlwZVByb2ZpbGVySW5mb01hcCkKKyAgICAgICAgICAgICAgICBhZGp1c3RlZFR5cGVQcm9maWxl
ckluZm9NYXAuc2V0KGluc2VydGlvblNldC5hZGp1c3RPZmZzZXQoMCwgZW50cnkua2V5KSwgZW50
cnkudmFsdWUpOworICAgICAgICAgICAgbV9yYXJlRGF0YS0+bV90eXBlUHJvZmlsZXJJbmZvTWFw
LnN3YXAoYWRqdXN0ZWRUeXBlUHJvZmlsZXJJbmZvTWFwKTsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9ucy5z
aXplKCk7ICsraSkKKyAgICAgICAgbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uc1tpXSA9IGlu
c2VydGlvblNldC5hZGp1c3RPZmZzZXQoMCwgbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uc1tp
XSk7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZXhwcmVzc2lvbkluZm8uc2l6ZSgp
OyArK2kpCisgICAgICAgIG1fZXhwcmVzc2lvbkluZm9baV0uaW5zdHJ1Y3Rpb25PZmZzZXQgPSBp
bnNlcnRpb25TZXQuYWRqdXN0T2Zmc2V0KDAsIG1fZXhwcmVzc2lvbkluZm9baV0uaW5zdHJ1Y3Rp
b25PZmZzZXQpOworCisgICAgLy8gVGhlbiwgbW9kaWZ5IHRoZSB1bmxpbmtlZCBpbnN0cnVjdGlv
bnMuCisgICAgaW5zZXJ0aW9uU2V0LmFwcGx5TW9kaWZpY2F0aW9uKCk7CisKKyAgICAvLyBBbmQg
cmVjb21wdXRlIHRoZSBqdW1wIHRhcmdldCBiYXNlZCBvbiB0aGUgbW9kaWZpZWQgdW5saW5rZWQg
aW5zdHJ1Y3Rpb25zLgorICAgIG1fanVtcFRhcmdldHMuY2xlYXIoKTsKKyAgICByZWNvbXB1dGVQ
cmVjaXNlSnVtcFRhcmdldHModGhpcywgZ3JhcGguaW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSwgZ3Jh
cGguaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpLCBtX2p1bXBUYXJnZXRzKTsKK30KKwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2su
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCmlu
ZGV4IGYyZjMwMWFjZDZkZGQwMDQ4Nzg5NzM2ODY2M2RlZmQ5YTU2MTRlMDMuLjk0ODdiYTZjMmI2
NDViYmUzMWE4YjM0ZTJmYzZjZWJkYmQ3MTJiYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCkBAIC00NSw2ICs0NSw4IEBACiAK
IG5hbWVzcGFjZSBKU0MgewogCitjbGFzcyBCeXRlY29kZVJld3JpdGVyOworY2xhc3MgRGVidWdn
ZXI7CiBjbGFzcyBGdW5jdGlvbk1ldGFkYXRhTm9kZTsKIGNsYXNzIEZ1bmN0aW9uRXhlY3V0YWJs
ZTsKIGNsYXNzIEpTU2NvcGU7CkBAIC02NSw3ICs2NywxMSBAQCB0eXBlZGVmIHVuc2lnbmVkIFVu
bGlua2VkT2JqZWN0QWxsb2NhdGlvblByb2ZpbGU7CiB0eXBlZGVmIHVuc2lnbmVkIFVubGlua2Vk
TExJbnRDYWxsTGlua0luZm87CiAKIHN0cnVjdCBVbmxpbmtlZFN0cmluZ0p1bXBUYWJsZSB7Ci0g
ICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxTdHJpbmdJbXBsPiwgaW50MzJfdD4gU3RyaW5nT2Zm
c2V0VGFibGU7CisgICAgc3RydWN0IE9mZnNldExvY2F0aW9uIHsKKyAgICAgICAgaW50MzJfdCBi
cmFuY2hPZmZzZXQ7CisgICAgfTsKKworICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8U3RyaW5n
SW1wbD4sIE9mZnNldExvY2F0aW9uPiBTdHJpbmdPZmZzZXRUYWJsZTsKICAgICBTdHJpbmdPZmZz
ZXRUYWJsZSBvZmZzZXRUYWJsZTsKIAogICAgIGlubGluZSBpbnQzMl90IG9mZnNldEZvclZhbHVl
KFN0cmluZ0ltcGwqIHZhbHVlLCBpbnQzMl90IGRlZmF1bHRPZmZzZXQpCkBAIC03NCw3ICs4MCw3
IEBAIHN0cnVjdCBVbmxpbmtlZFN0cmluZ0p1bXBUYWJsZSB7CiAgICAgICAgIFN0cmluZ09mZnNl
dFRhYmxlOjpjb25zdF9pdGVyYXRvciBsb2MgPSBvZmZzZXRUYWJsZS5maW5kKHZhbHVlKTsKICAg
ICAgICAgaWYgKGxvYyA9PSBlbmQpCiAgICAgICAgICAgICByZXR1cm4gZGVmYXVsdE9mZnNldDsK
LSAgICAgICAgcmV0dXJuIGxvYy0+dmFsdWU7CisgICAgICAgIHJldHVybiBsb2MtPnZhbHVlLmJy
YW5jaE9mZnNldDsKICAgICB9CiAKIH07CkBAIC0xMDIsNiArMTA4LDggQEAgc3RydWN0IFVubGlu
a2VkSW5zdHJ1Y3Rpb24gewogICAgIH0gdTsKIH07CiAKK2NsYXNzIEJ5dGVjb2RlR2VuZXJhdG9y
aWZpY2F0aW9uOworCiBjbGFzcyBVbmxpbmtlZENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewog
cHVibGljOgogICAgIHR5cGVkZWYgSlNDZWxsIEJhc2U7CkBAIC0xMTEsNiArMTE5LDkgQEAgY2xh
c3MgVW5saW5rZWRDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKIAogICAgIGVudW0geyBDYWxs
RnVuY3Rpb24sIEFwcGx5RnVuY3Rpb24gfTsKIAorICAgIHR5cGVkZWYgVW5saW5rZWRJbnN0cnVj
dGlvbiBJbnN0cnVjdGlvbjsKKyAgICB0eXBlZGVmIFZlY3RvcjxVbmxpbmtlZEluc3RydWN0aW9u
LCAwLCBVbnNhZmVWZWN0b3JPdmVyZmxvdz4gVW5wYWNrZWRJbnN0cnVjdGlvbnM7CisKICAgICBi
b29sIGlzQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2lzQ29uc3RydWN0b3I7IH0KICAg
ICBib29sIGlzU3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNTdHJpY3RNb2RlOyB9CiAg
ICAgYm9vbCB1c2VzRXZhbCgpIGNvbnN0IHsgcmV0dXJuIG1fdXNlc0V2YWw7IH0KQEAgLTIwMCw2
ICsyMTEsOSBAQCBjbGFzcyBVbmxpbmtlZENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAg
IHVuc2lnbmVkIGp1bXBUYXJnZXQoaW50IGluZGV4KSBjb25zdCB7IHJldHVybiBtX2p1bXBUYXJn
ZXRzW2luZGV4XTsgfQogICAgIHVuc2lnbmVkIGxhc3RKdW1wVGFyZ2V0KCkgY29uc3QgeyByZXR1
cm4gbV9qdW1wVGFyZ2V0cy5sYXN0KCk7IH0KIAorICAgIFVubGlua2VkSGFuZGxlckluZm8qIGhh
bmRsZXJGb3JCeXRlY29kZU9mZnNldCh1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgUmVxdWlyZWRI
YW5kbGVyID0gUmVxdWlyZWRIYW5kbGVyOjpBbnlIYW5kbGVyKTsKKyAgICBVbmxpbmtlZEhhbmRs
ZXJJbmZvKiBoYW5kbGVyRm9ySW5kZXgodW5zaWduZWQsIFJlcXVpcmVkSGFuZGxlciA9IFJlcXVp
cmVkSGFuZGxlcjo6QW55SGFuZGxlcik7CisKICAgICBib29sIGlzQnVpbHRpbkZ1bmN0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9pc0J1aWx0aW5GdW5jdGlvbjsgfQogCiAgICAgQ29uc3RydWN0b3JL
aW5kIGNvbnN0cnVjdG9yS2luZCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PENvbnN0cnVj
dG9yS2luZD4obV9jb25zdHJ1Y3RvcktpbmQpOyB9CkBAIC0yMzAsNiArMjQ0LDggQEAgY2xhc3Mg
VW5saW5rZWRDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICB2b2lkIHNldEluc3RydWN0
aW9ucyhzdGQ6OnVuaXF1ZV9wdHI8VW5saW5rZWRJbnN0cnVjdGlvblN0cmVhbT4pOwogICAgIGNv
bnN0IFVubGlua2VkSW5zdHJ1Y3Rpb25TdHJlYW0mIGluc3RydWN0aW9ucygpIGNvbnN0OwogCisg
ICAgaW50IG51bUNhbGxlZUxvY2FscygpIGNvbnN0IHsgcmV0dXJuIG1fbnVtQ2FsbGVlTG9jYWxz
OyB9CisKICAgICBpbnQgbV9udW1WYXJzOwogICAgIGludCBtX251bUNhcHR1cmVkVmFyczsKICAg
ICBpbnQgbV9udW1DYWxsZWVMb2NhbHM7CkBAIC0zNzksNiArMzk1LDggQEAgY2xhc3MgVW5saW5r
ZWRDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICB9CiAKIHByaXZhdGU6CisgICAgZnJp
ZW5kIGNsYXNzIEJ5dGVjb2RlUmV3cml0ZXI7CisgICAgdm9pZCBhcHBseU1vZGlmaWNhdGlvbihC
eXRlY29kZVJld3JpdGVyJik7CiAKICAgICB2b2lkIGNyZWF0ZVJhcmVEYXRhSWZOZWNlc3Nhcnko
KQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WaXJ0
dWFsUmVnaXN0ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WaXJ0dWFsUmVn
aXN0ZXIuaAppbmRleCBkM2RmNDA5NTdiNTE3NTY4ZTNhZWZiZTNhMWE2MDlmZDg3OGJhYWMzLi5k
YWY1MDlmNmM3ZDExNWU0NWJjYjEwN2M2N2QzZDM4ZDgwNGYyODk0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmlydHVhbFJlZ2lzdGVyLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZpcnR1YWxSZWdpc3Rlci5oCkBAIC0yNiw4ICsyNiw4
IEBACiAjaWZuZGVmIFZpcnR1YWxSZWdpc3Rlcl9oCiAjZGVmaW5lIFZpcnR1YWxSZWdpc3Rlcl9o
CiAKKyNpbmNsdWRlICJCeXRlY29kZUNvbnZlbnRpb25zLmgiCiAjaW5jbHVkZSAiQ2FsbEZyYW1l
LmgiCi0KICNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBA
IC0xMDMsNyArMTAzLDcgQEAgY2xhc3MgVmlydHVhbFJlZ2lzdGVyIHsKIAogcHJpdmF0ZToKICAg
ICBzdGF0aWMgY29uc3QgaW50IHNfaW52YWxpZFZpcnR1YWxSZWdpc3RlciA9IDB4M2ZmZmZmZmY7
Ci0gICAgc3RhdGljIGNvbnN0IGludCBzX2ZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4ID0gMHg0
MDAwMDAwMDsKKyAgICBzdGF0aWMgY29uc3QgaW50IHNfZmlyc3RDb25zdGFudFJlZ2lzdGVySW5k
ZXggPSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleDsKIAogICAgIHN0YXRpYyBpbnQgbG9jYWxU
b09wZXJhbmQoaW50IGxvY2FsKSB7IHJldHVybiAtMSAtIGxvY2FsOyB9CiAgICAgc3RhdGljIGlu
dCBvcGVyYW5kVG9Mb2NhbChpbnQgb3BlcmFuZCkgeyByZXR1cm4gLTEgLSBvcGVyYW5kOyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVH
ZW5lcmF0b3IuY3BwCmluZGV4IDMxMmQ4OWY3YWRjNzNmMDdkYzUxNzliNzVlNTc1YzU1OTAyNjZk
YjguLjUzM2VmMDg5OGI3N2RiZGIzNmU0YTI1M2QwNzRkZDJkNDcyMjAxOGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAKICNpbmNsdWRlICJBcml0aFByb2ZpbGUuaCIKICNp
bmNsdWRlICJCdWlsdGluRXhlY3V0YWJsZXMuaCIKKyNpbmNsdWRlICJCeXRlY29kZUdlbmVyYXRv
cmlmaWNhdGlvbi5oIgogI2luY2x1ZGUgIkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5oIgogI2lu
Y2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgpAQCAtMTU1LDYg
KzE1NiwxMCBAQCBQYXJzZXJFcnJvciBCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUoKQogICAg
ICAgICBtX2NvZGVCbG9jay0+YWRkRXhjZXB0aW9uSGFuZGxlcihpbmZvKTsKICAgICB9CiAgICAg
CisKKyAgICBpZiAobV9jb2RlQmxvY2stPnBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6
R2VuZXJhdG9yQm9keU1vZGUpCisgICAgICAgIHBlcmZvcm1HZW5lcmF0b3JpZmljYXRpb24obV9j
b2RlQmxvY2suZ2V0KCksIG1faW5zdHJ1Y3Rpb25zLCBtX2dlbmVyYXRvckZyYW1lU3ltYm9sVGFi
bGUuZ2V0KCksIG1fZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZUluZGV4KTsKKwogICAgIG1fY29k
ZUJsb2NrLT5zZXRJbnN0cnVjdGlvbnMoc3RkOjptYWtlX3VuaXF1ZTxVbmxpbmtlZEluc3RydWN0
aW9uU3RyZWFtPihtX2luc3RydWN0aW9ucykpOwogCiAgICAgbV9jb2RlQmxvY2stPnNocmlua1Rv
Rml0KCk7CkBAIC0yNjIsMTAgKzI2NywxNCBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVH
ZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAg
IGJvb2wgc2hvdWxkQ2FwdHVyZUFsbE9mVGhlVGhpbmdzID0gbV9zaG91bGRFbWl0RGVidWdIb29r
cyB8fCBjb2RlQmxvY2stPnVzZXNFdmFsKCk7CiAgICAgYm9vbCBuZWVkc0FyZ3VtZW50cyA9IChm
dW5jdGlvbk5vZGUtPnVzZXNBcmd1bWVudHMoKSB8fCBjb2RlQmxvY2stPnVzZXNFdmFsKCkgfHwg
KGZ1bmN0aW9uTm9kZS0+dXNlc0Fycm93RnVuY3Rpb24oKSAmJiAhY29kZUJsb2NrLT5pc0Fycm93
RnVuY3Rpb24oKSAmJiBpc0FyZ3VtZW50c1VzZWRJbklubmVyQXJyb3dGdW5jdGlvbigpKSk7CiAK
LSAgICAvLyBHZW5lcmF0b3IgbmV2ZXIgcHJvdmlkZXMgImFyZ3VtZW50cyIuICJhcmd1bWVudHMi
IHJlZmVyZW5jZSB3aWxsIGJlIHJlc29sdmVkIGluIGFuIHVwcGVyIGdlbmVyYXRvciBmdW5jdGlv
biBzY29wZS4KLSAgICBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9y
Qm9keU1vZGUpCisgICAgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRv
ckJvZHlNb2RlKSB7CisgICAgICAgIC8vIEdlbmVyYXRvciBuZXZlciBwcm92aWRlcyAiYXJndW1l
bnRzIi4gImFyZ3VtZW50cyIgcmVmZXJlbmNlIHdpbGwgYmUgcmVzb2x2ZWQgaW4gYW4gdXBwZXIg
Z2VuZXJhdG9yIGZ1bmN0aW9uIHNjb3BlLgogICAgICAgICBuZWVkc0FyZ3VtZW50cyA9IGZhbHNl
OwogCisgICAgICAgIC8vIEdlbmVyYXRvciB1c2VzIHRoZSB2YXIgc2NvcGUgdG8gc2F2ZSBhbmQg
cmVzdW1lIGl0cyB2YXJpYWJsZXMuIFNvIHRoZSBsZXhpY2FsIHNjb3BlIGlzIGFsd2F5cyBpbnN0
YW50aWF0ZWQuCisgICAgICAgIHNob3VsZENhcHR1cmVTb21lT2ZUaGVUaGluZ3MgPSB0cnVlOwor
ICAgIH0KKwogICAgIGlmIChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JX
cmFwcGVyRnVuY3Rpb25Nb2RlICYmIG5lZWRzQXJndW1lbnRzKSB7CiAgICAgICAgIC8vIEdlbmVy
YXRvciBkb2VzIG5vdCBwcm92aWRlICJhcmd1bWVudHMiLiBJbnN0ZWFkLCB3cmFwcGluZyBHZW5l
cmF0b3JGdW5jdGlvbiBwcm92aWRlcyAiYXJndW1lbnRzIi4KICAgICAgICAgLy8gVGhpcyBpcyBi
ZWNhdXNlIGFyZ3VtZW50cyBvZiBhIGdlbmVyYXRvciBzaG91bGQgYmUgZXZhbHVhdGVkIGJlZm9y
ZSBzdGFydGluZyBpdC4KQEAgLTI3NCw3ICsyODMsNyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0
ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5r
ZQogICAgICAgICAvLyAgICBmdW5jdGlvbiAqZ2VuKGEsIGIgPSBoZWxsbygpKQogICAgICAgICAv
LyAgICB7CiAgICAgICAgIC8vICAgICAgICByZXR1cm4gewotICAgICAgICAvLyAgICAgICAgICAg
IEBnZW5lcmF0b3JOZXh0OiBmdW5jdGlvbiAoQGdlbmVyYXRvciwgQGdlbmVyYXRvclN0YXRlLCBA
Z2VuZXJhdG9yVmFsdWUsIEBnZW5lcmF0b3JSZXN1bWVNb2RlKQorICAgICAgICAvLyAgICAgICAg
ICAgIEBnZW5lcmF0b3JOZXh0OiBmdW5jdGlvbiAoQGdlbmVyYXRvciwgQGdlbmVyYXRvclN0YXRl
LCBAZ2VuZXJhdG9yVmFsdWUsIEBnZW5lcmF0b3JSZXN1bWVNb2RlLCBAZ2VuZXJhdG9yRnJhbWUp
CiAgICAgICAgIC8vICAgICAgICAgICAgewogICAgICAgICAvLyAgICAgICAgICAgICAgICBhcmd1
bWVudHM7ICAvLyBUaGlzIGBhcmd1bWVudHNgIHNob3VsZCByZWZlcmVuY2UgdG8gdGhlIGdlbidz
IGFyZ3VtZW50cy4KICAgICAgICAgLy8gICAgICAgICAgICAgICAgLi4uCkBAIC0zMDMsMjggKzMx
MiwxNyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5j
dGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAgICAgICByZXR1cm4gY2FwdHVyZXMo
dWlkKSA/IFZhcktpbmQ6OlNjb3BlIDogVmFyS2luZDo6U3RhY2s7CiAgICAgfTsKIAotICAgIGVt
aXRFbnRlcigpOwotCi0gICAgYWxsb2NhdGVBbmRFbWl0U2NvcGUoKTsKLQogICAgIG1fY2FsbGVl
UmVnaXN0ZXIuc2V0SW5kZXgoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlKTsKIAogICAgIGluaXRpYWxp
emVQYXJhbWV0ZXJzKHBhcmFtZXRlcnMpOwogICAgIEFTU0VSVCghKGlzU2ltcGxlUGFyYW1ldGVy
TGlzdCAmJiBtX3Jlc3RQYXJhbWV0ZXIpKTsKIAotICAgIC8vIEJlZm9yZSBlbWl0dGluZyBhIHNj
b3BlIGNyZWF0aW9uLCBlbWl0IGEgZ2VuZXJhdG9yIHByb2xvZ3VlIHRoYXQgY29udGFpbnMganVt
cCBiYXNlZCBvbiBhIGdlbmVyYXRvcidzIHN0YXRlLgotICAgIGlmIChwYXJzZU1vZGUgPT0gU291
cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JCb2R5TW9kZSkgewotICAgICAgICBtX2dlbmVyYXRvclJl
Z2lzdGVyID0gJm1fcGFyYW1ldGVyc1sxXTsKLQotICAgICAgICAvLyBKdW1wIHdpdGggc3dpdGNo
X2ltbSBiYXNlZCBvbiBAZ2VuZXJhdG9yU3RhdGUuIFdlIGRvbid0IHRha2UgdGhlIGNvcm91dGlu
ZSBzdHlsZWQgZ2VuZXJhdG9yIGltcGxlbWVudGF0aW9uLgotICAgICAgICAvLyBXaGVuIGNhbGxp
bmcgYG5leHQoKWAsIHdlIHdvdWxkIGxpa2UgdG8gZW50ZXIgdGhlIHNhbWUgcHJvbG9ndWUgaW5z
dGVhZCBvZiBqdW1waW5nIGJhc2VkIG9uIHRoZSBzYXZlZCBpbnN0cnVjdGlvbiBwb2ludGVyLgot
ICAgICAgICAvLyBJdCdzIHN1aXRhbGUgZm9yIGlubGluaW5nLCBiZWNhdXNlIGl0IGp1c3QgaW5s
aW5lcyBvbmUgYG5leHRgIGZ1bmN0aW9uIGltcGxlbWVudGF0aW9uLgorICAgIGVtaXRFbnRlcigp
OwogCi0gICAgICAgIGJlZ2luR2VuZXJhdG9yKGdlbmVyYXRvclN0YXRlUmVnaXN0ZXIoKSk7Cisg
ICAgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckJvZHlNb2RlKQor
ICAgICAgICBtX2dlbmVyYXRvclJlZ2lzdGVyID0gJm1fcGFyYW1ldGVyc1sxXTsKIAotICAgICAg
ICAvLyBJbml0aWFsIHN0YXRlLgotICAgICAgICBlbWl0R2VuZXJhdG9yU3RhdGVMYWJlbCgpOwot
ICAgIH0KKyAgICBhbGxvY2F0ZUFuZEVtaXRTY29wZSgpOwogCiAgICAgaWYgKGZ1bmN0aW9uTmFt
ZUlzSW5TY29wZShmdW5jdGlvbk5vZGUtPmlkZW50KCksIGZ1bmN0aW9uTm9kZS0+ZnVuY3Rpb25N
b2RlKCkpKSB7CiAgICAgICAgIEFTU0VSVChwYXJzZU1vZGUgIT0gU291cmNlUGFyc2VNb2RlOjpH
ZW5lcmF0b3JCb2R5TW9kZSk7CkBAIC02NDEsNiArNjM5LDE2IEBAIEJ5dGVjb2RlR2VuZXJhdG9y
OjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBV
bmxpbmtlCiAgICAgICAgICAgICBlbWl0TG9hZE5ld1RhcmdldEZyb21BcnJvd0Z1bmN0aW9uTGV4
aWNhbEVudmlyb25tZW50KCk7CiAgICAgfQogICAgIAorICAgIC8vIFNldCB1cCB0aGUgbGV4aWNh
bCBlbnZpcm9ubWVudCBzY29wZSBhcyB0aGUgZ2VuZXJhdG9yIGZyYW1lLiBXZSBzdG9yZSB0aGUg
c2F2ZWQgYW5kIHJlc3VtZWQgZ2VuZXJhdG9yIHJlZ2lzdGVycyBpbnRvIHRoaXMgc2NvcGUgd2l0
aCB0aGUgc3ltYm9sIGtleXMuCisgICAgLy8gU2luY2UgdGhleSBhcmUgc3ltYm9sIGtleWVkLCB0
aGVzZSB2YXJpYWJsZXMgY2Fubm90IGJlIHJlYWNoZWQgZnJvbSB0aGUgdXN1YWwgY29kZS4KKyAg
ICBpZiAoU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JCb2R5TW9kZSA9PSBwYXJzZU1vZGUpIHsK
KyAgICAgICAgQVNTRVJUKG1fbGV4aWNhbEVudmlyb25tZW50UmVnaXN0ZXIpOworICAgICAgICBt
X2dlbmVyYXRvckZyYW1lU3ltYm9sVGFibGUuc2V0KCptX3ZtLCBmdW5jdGlvblN5bWJvbFRhYmxl
KTsKKyAgICAgICAgbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlSW5kZXggPSBzeW1ib2xUYWJs
ZUNvbnN0YW50SW5kZXg7CisgICAgICAgIGVtaXRNb3ZlKGdlbmVyYXRvckZyYW1lUmVnaXN0ZXIo
KSwgbV9sZXhpY2FsRW52aXJvbm1lbnRSZWdpc3Rlcik7CisgICAgICAgIGVtaXRQdXRCeUlkKGdl
bmVyYXRvclJlZ2lzdGVyKCksIHByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5nZW5lcmF0
b3JGcmFtZVByaXZhdGVOYW1lKCksIGdlbmVyYXRvckZyYW1lUmVnaXN0ZXIoKSk7CisgICAgfQor
CiAgICAgYm9vbCBzaG91bGRJbml0aWFsaXplQmxvY2tTY29wZWRGdW5jdGlvbnMgPSBmYWxzZTsg
Ly8gV2UgZ2VuZXJhdGUgdG9wLWxldmVsIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucyBpbiA6OmdlbmVy
YXRlKCkuCiAgICAgcHVzaExleGljYWxTY29wZShtX3Njb3BlTm9kZSwgVERaQ2hlY2tPcHRpbWl6
YXRpb246Ok9wdGltaXplLCBOZXN0ZWRTY29wZVR5cGU6OklzTm90TmVzdGVkLCBudWxscHRyLCBz
aG91bGRJbml0aWFsaXplQmxvY2tTY29wZWRGdW5jdGlvbnMpOwogfQpAQCAtMzY3Miw4ICszNjgw
LDcgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENvbXBsZXhQb3BTY29wZXMoUmVnaXN0
ZXJJRCogc2NvcGUsIENvbnRyb2xGbG93Q29udGUKICAgICAgICAgICAgIGlmIChmbGlwVHJpZXMp
IHsKICAgICAgICAgICAgICAgICB3aGlsZSAobV90cnlDb250ZXh0U3RhY2suc2l6ZSgpICE9IGZp
bmFsbHlDb250ZXh0LnRyeUNvbnRleHRTdGFja1NpemUpIHsKICAgICAgICAgICAgICAgICAgICAg
QVNTRVJUKG1fdHJ5Q29udGV4dFN0YWNrLnNpemUoKSA+IGZpbmFsbHlDb250ZXh0LnRyeUNvbnRl
eHRTdGFja1NpemUpOwotICAgICAgICAgICAgICAgICAgICBUcnlDb250ZXh0IGNvbnRleHQgPSBt
X3RyeUNvbnRleHRTdGFjay5sYXN0KCk7Ci0gICAgICAgICAgICAgICAgICAgIG1fdHJ5Q29udGV4
dFN0YWNrLnJlbW92ZUxhc3QoKTsKKyAgICAgICAgICAgICAgICAgICAgVHJ5Q29udGV4dCBjb250
ZXh0ID0gbV90cnlDb250ZXh0U3RhY2sudGFrZUxhc3QoKTsKICAgICAgICAgICAgICAgICAgICAg
VHJ5UmFuZ2UgcmFuZ2U7CiAgICAgICAgICAgICAgICAgICAgIHJhbmdlLnN0YXJ0ID0gY29udGV4
dC5zdGFydDsKICAgICAgICAgICAgICAgICAgICAgcmFuZ2UuZW5kID0gYmVmb3JlRmluYWxseTsK
QEAgLTM5NTcsNyArMzk2NCw3IEBAIHN0YXRpYyB2b2lkIHByZXBhcmVKdW1wVGFibGVGb3JTdHJp
bmdTd2l0Y2goVW5saW5rZWRTdHJpbmdKdW1wVGFibGUmIGp1bXBUYWJsZSwKICAgICAgICAgCiAg
ICAgICAgIEFTU0VSVChub2Rlc1tpXS0+aXNTdHJpbmcoKSk7CiAgICAgICAgIFN0cmluZ0ltcGwq
IGNsYXVzZSA9IHN0YXRpY19jYXN0PFN0cmluZ05vZGUqPihub2Rlc1tpXSktPnZhbHVlKCkuaW1w
bCgpOwotICAgICAgICBqdW1wVGFibGUub2Zmc2V0VGFibGUuYWRkKGNsYXVzZSwgbGFiZWxzW2ld
LT5iaW5kKHN3aXRjaEFkZHJlc3MsIHN3aXRjaEFkZHJlc3MgKyAzKSk7CisgICAgICAgIGp1bXBU
YWJsZS5vZmZzZXRUYWJsZS5hZGQoY2xhdXNlLCBVbmxpbmtlZFN0cmluZ0p1bXBUYWJsZTo6T2Zm
c2V0TG9jYXRpb24geyBsYWJlbHNbaV0tPmJpbmQoc3dpdGNoQWRkcmVzcywgc3dpdGNoQWRkcmVz
cyArIDMpIH0pOwogICAgIH0KIH0KIApAQCAtNDQ1OSwzMSArNDQ2NiwzMyBAQCB2b2lkIEJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0UmVxdWlyZU9iamVjdENvZXJjaWJsZShSZWdpc3RlcklEKiB2YWx1
ZSwgY29uc3QgU3RyaQogdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFlpZWxkUG9pbnQoUmVn
aXN0ZXJJRCogYXJndW1lbnQpCiB7CiAgICAgUmVmUHRyPExhYmVsPiBtZXJnZVBvaW50ID0gbmV3
TGFiZWwoKTsKLSAgICBzaXplX3QgeWllbGRQb2ludEluZGV4ID0gbV9nZW5lcmF0b3JSZXN1bWVM
YWJlbHMuc2l6ZSgpOwotICAgIGVtaXRHZW5lcmF0b3JTdGF0ZUNoYW5nZSh5aWVsZFBvaW50SW5k
ZXgpOwotICAgIC8vIEZpcnN0IHlpZWxkIHBvaW50IGlzIHVzZWQgZm9yIGluaXRpYWwgc2VxdWVu
Y2UuCi0gICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0geWllbGRQb2ludEluZGV4
IC0gMTsKLSAgICBlbWl0U2F2ZShtZXJnZVBvaW50LmdldCgpLCBsaXZlQ2FsbGVlTG9jYWxzSW5k
ZXgpOwotICAgIGVtaXRSZXR1cm4oYXJndW1lbnQpOwotICAgIGVtaXRSZXN1bWUobWVyZ2VQb2lu
dC5nZXQoKSwgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4KTsKLX0KKyAgICB1bnNpZ25lZCB5aWVsZFBv
aW50SW5kZXggPSBtX3lpZWxkUG9pbnRzKys7CisgICAgZW1pdEdlbmVyYXRvclN0YXRlQ2hhbmdl
KHlpZWxkUG9pbnRJbmRleCArIDEpOworCisgICAgLy8gU3BsaXQgdGhlIHRyeSByYW5nZSBoZXJl
LgorICAgIFJlZlB0cjxMYWJlbD4gc2F2ZVBvaW50ID0gZW1pdExhYmVsKG5ld0xhYmVsKCkuZ2V0
KCkpOworICAgIGZvciAodW5zaWduZWQgaSA9IG1fdHJ5Q29udGV4dFN0YWNrLnNpemUoKTsgaS0t
OykgeworICAgICAgICBUcnlDb250ZXh0JiBjb250ZXh0ID0gbV90cnlDb250ZXh0U3RhY2tbaV07
CisgICAgICAgIFRyeVJhbmdlIHJhbmdlOworICAgICAgICByYW5nZS5zdGFydCA9IGNvbnRleHQu
c3RhcnQ7CisgICAgICAgIHJhbmdlLmVuZCA9IHNhdmVQb2ludDsKKyAgICAgICAgcmFuZ2UudHJ5
RGF0YSA9IGNvbnRleHQudHJ5RGF0YTsKKyAgICAgICAgbV90cnlSYW5nZXMuYXBwZW5kKHJhbmdl
KTsKKworICAgICAgICAvLyBUcnkgcmFuZ2Ugd2lsbCBiZSByZXN0YXJlZCBhdCB0aGUgbWVyZ2Ug
cG9pbnQuCisgICAgICAgIGNvbnRleHQuc3RhcnQgPSBtZXJnZVBvaW50OworICAgIH0KKyAgICBW
ZWN0b3I8VHJ5Q29udGV4dD4gc2F2ZWRUcnlDb250ZXh0U3RhY2s7CisgICAgbV90cnlDb250ZXh0
U3RhY2suc3dhcChzYXZlZFRyeUNvbnRleHRTdGFjayk7CiAKLXZvaWQgQnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXRTYXZlKExhYmVsKiBtZXJnZVBvaW50LCB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxz
SW5kZXgpCi17Ci0gICAgc2l6ZV90IGJlZ2luID0gaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpOwotICAg
IGVtaXRPcGNvZGUob3Bfc2F2ZSk7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fZ2VuZXJh
dG9yUmVnaXN0ZXItPmluZGV4KCkpOwotICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChsaXZlQ2Fs
bGVlTG9jYWxzSW5kZXgpOwotICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChtZXJnZVBvaW50LT5i
aW5kKGJlZ2luLCBpbnN0cnVjdGlvbnMoKS5zaXplKCkpKTsKLX0KKyAgICBlbWl0T3Bjb2RlKG9w
X3lpZWxkKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZ2VuZXJhdG9yRnJhbWVSZWdpc3Rl
cigpLT5pbmRleCgpKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoeWllbGRQb2ludEluZGV4
KTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYXJndW1lbnQtPmluZGV4KCkpOwogCi12b2lk
IEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzdW1lKExhYmVsKiBtZXJnZVBvaW50LCB1bnNpZ25l
ZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpCi17Ci0gICAgZW1pdEdlbmVyYXRvclN0YXRlTGFiZWwo
KTsKLSAgICBlbWl0T3Bjb2RlKG9wX3Jlc3VtZSk7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5k
KG1fZ2VuZXJhdG9yUmVnaXN0ZXItPmluZGV4KCkpOwotICAgIGluc3RydWN0aW9ucygpLmFwcGVu
ZChsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpOwotICAgIGVtaXRMYWJlbChtZXJnZVBvaW50KTsKKyAg
ICAvLyBSZXN0b3JlIHRoZSB0cnkgY29udGV4dHMsIHdoaWNoIHN0YXJ0IG9mZnNldCBpcyB1cGRh
dGVkIHRvIHRoZSBtZXJnZSBwb2ludC4KKyAgICBtX3RyeUNvbnRleHRTdGFjay5zd2FwKHNhdmVk
VHJ5Q29udGV4dFN0YWNrKTsKKyAgICBlbWl0TGFiZWwobWVyZ2VQb2ludC5nZXQoKSk7CiB9CiAK
IFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0WWllbGQoUmVnaXN0ZXJJRCogYXJn
dW1lbnQpCkBAIC00NjQwLDM5ICs0NjQ5LDYgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dEdlbmVyYXRvclN0YXRlQ2hhbmdlKGludDMyX3Qgc3RhdGUpCiAgICAgZW1pdFB1dEJ5SWQoZ2Vu
ZXJhdG9yUmVnaXN0ZXIoKSwgcHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRv
clN0YXRlUHJpdmF0ZU5hbWUoKSwgY29tcGxldGVkU3RhdGUpOwogfQogCi12b2lkIEJ5dGVjb2Rl
R2VuZXJhdG9yOjplbWl0R2VuZXJhdG9yU3RhdGVMYWJlbCgpCi17Ci0gICAgUmVmUHRyPExhYmVs
PiBsYWJlbCA9IG5ld0xhYmVsKCk7Ci0gICAgbV9nZW5lcmF0b3JSZXN1bWVMYWJlbHMuYXBwZW5k
KGxhYmVsLmdldCgpKTsKLSAgICBlbWl0TGFiZWwobGFiZWwuZ2V0KCkpOwotfQotCi12b2lkIEJ5
dGVjb2RlR2VuZXJhdG9yOjpiZWdpbkdlbmVyYXRvcihSZWdpc3RlcklEKiBzdGF0ZSkKLXsKLSAg
ICBiZWdpblN3aXRjaChzdGF0ZSwgU3dpdGNoSW5mbzo6U3dpdGNoSW1tZWRpYXRlKTsKLX0KLQot
dm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW5kR2VuZXJhdG9yKExhYmVsKiBkZWZhdWx0TGFiZWwp
Ci17Ci0gICAgU3dpdGNoSW5mbyBzd2l0Y2hJbmZvID0gbV9zd2l0Y2hDb250ZXh0U3RhY2subGFz
dCgpOwotICAgIG1fc3dpdGNoQ29udGV4dFN0YWNrLnJlbW92ZUxhc3QoKTsKLQotICAgIGluc3Ry
dWN0aW9ucygpW3N3aXRjaEluZm8uYnl0ZWNvZGVPZmZzZXQgKyAxXSA9IG1fY29kZUJsb2NrLT5u
dW1iZXJPZlN3aXRjaEp1bXBUYWJsZXMoKTsKLSAgICBpbnN0cnVjdGlvbnMoKVtzd2l0Y2hJbmZv
LmJ5dGVjb2RlT2Zmc2V0ICsgMl0gPSBkZWZhdWx0TGFiZWwtPmJpbmQoc3dpdGNoSW5mby5ieXRl
Y29kZU9mZnNldCwgc3dpdGNoSW5mby5ieXRlY29kZU9mZnNldCArIDMpOwotCi0gICAgVW5saW5r
ZWRTaW1wbGVKdW1wVGFibGUmIGp1bXBUYWJsZSA9IG1fY29kZUJsb2NrLT5hZGRTd2l0Y2hKdW1w
VGFibGUoKTsKLSAgICBpbnQzMl90IHN3aXRjaEFkZHJlc3MgPSBzd2l0Y2hJbmZvLmJ5dGVjb2Rl
T2Zmc2V0OwotICAgIGp1bXBUYWJsZS5taW4gPSAwOwotICAgIGp1bXBUYWJsZS5icmFuY2hPZmZz
ZXRzLnJlc2l6ZShtX2dlbmVyYXRvclJlc3VtZUxhYmVscy5zaXplKCkgKyAxKTsKLSAgICBqdW1w
VGFibGUuYnJhbmNoT2Zmc2V0cy5maWxsKDApOwotICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkg
PCBtX2dlbmVyYXRvclJlc3VtZUxhYmVscy5zaXplKCk7ICsraSkgewotICAgICAgICAvLyBXZSdy
ZSBlbWl0dGluZyB0aGlzIGFmdGVyIHRoZSBjbGF1c2UgbGFiZWxzIHNob3VsZCBoYXZlIGJlZW4g
Zml4ZWQsIHNvCi0gICAgICAgIC8vIHRoZSBsYWJlbHMgc2hvdWxkIG5vdCBiZSAiZm9yd2FyZCIg
cmVmZXJlbmNlcwotICAgICAgICBBU1NFUlQoIW1fZ2VuZXJhdG9yUmVzdW1lTGFiZWxzW2ldLT5p
c0ZvcndhcmQoKSk7Ci0gICAgICAgIGp1bXBUYWJsZS5hZGQoaSwgbV9nZW5lcmF0b3JSZXN1bWVM
YWJlbHNbaV0tPmJpbmQoc3dpdGNoQWRkcmVzcywgc3dpdGNoQWRkcmVzcyArIDMpKTsKLSAgICB9
Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIEpTQwogCiBuYW1lc3BhY2UgV1RGIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApp
bmRleCBmZmY3MTNhYTI1ZTcxZGYyY2Y0Y2I1MzA4ZTYxNjlhNTNhZjY1MWJlLi5iMWI5NDNkYTVl
MDY3ZWNkZDQ5Njc0ODExNDVjZTlkYjAwNzVhMmFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCkBAIC0zNCw2ICsz
NCw3IEBACiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiSW5zdHJ1Y3Rpb24uaCIK
ICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgorI2luY2x1ZGUgIkpTR2VuZXJhdG9yRnVuY3Rpb24u
aCIKICNpbmNsdWRlICJMYWJlbC5oIgogI2luY2x1ZGUgIkxhYmVsU2NvcGUuaCIKICNpbmNsdWRl
ICJOb2Rlcy5oIgpAQCAtNjkwLDE4ICs2OTEsMTUgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IHZvaWQgZW5kU3dpdGNoKHVpbnQzMl90IGNsYXVzZUNvdW50LCBSZWZQdHI8TGFiZWw+KiwgRXhw
cmVzc2lvbk5vZGUqKiwgTGFiZWwqIGRlZmF1bHRMYWJlbCwgaW50MzJfdCBtaW4sIGludDMyX3Qg
cmFuZ2UpOwogCiAgICAgICAgIHZvaWQgZW1pdFlpZWxkUG9pbnQoUmVnaXN0ZXJJRCopOwotICAg
ICAgICB2b2lkIGVtaXRTYXZlKExhYmVsKiBtZXJnZVBvaW50LCB1bnNpZ25lZCBsaXZlQ2FsbGVl
TG9jYWxzSW5kZXgpOwotICAgICAgICB2b2lkIGVtaXRSZXN1bWUoTGFiZWwqIG1lcmdlUG9pbnQs
IHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCk7CiAKICAgICAgICAgdm9pZCBlbWl0R2Vu
ZXJhdG9yU3RhdGVMYWJlbCgpOwogICAgICAgICB2b2lkIGVtaXRHZW5lcmF0b3JTdGF0ZUNoYW5n
ZShpbnQzMl90IHN0YXRlKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFlpZWxkKFJlZ2lzdGVy
SUQqIGFyZ3VtZW50KTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdERlbGVnYXRlWWllbGQoUmVn
aXN0ZXJJRCogYXJndW1lbnQsIFRocm93YWJsZUV4cHJlc3Npb25EYXRhKik7Ci0gICAgICAgIHZv
aWQgYmVnaW5HZW5lcmF0b3IoUmVnaXN0ZXJJRCopOwotICAgICAgICB2b2lkIGVuZEdlbmVyYXRv
cihMYWJlbCogZGVmYXVsdExhYmVsKTsKLSAgICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9yU3Rh
dGVSZWdpc3RlcigpIHsgcmV0dXJuICZtX3BhcmFtZXRlcnNbMl07IH0KLSAgICAgICAgUmVnaXN0
ZXJJRCogZ2VuZXJhdG9yVmFsdWVSZWdpc3RlcigpIHsgcmV0dXJuICZtX3BhcmFtZXRlcnNbM107
IH0KLSAgICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKCkgeyBy
ZXR1cm4gJm1fcGFyYW1ldGVyc1s0XTsgfQorICAgICAgICBSZWdpc3RlcklEKiBnZW5lcmF0b3JT
dGF0ZVJlZ2lzdGVyKCkgeyByZXR1cm4gJm1fcGFyYW1ldGVyc1tzdGF0aWNfY2FzdDxpbnQzMl90
PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JBcmd1bWVudDo6U3RhdGUpXTsgfQorICAg
ICAgICBSZWdpc3RlcklEKiBnZW5lcmF0b3JWYWx1ZVJlZ2lzdGVyKCkgeyByZXR1cm4gJm1fcGFy
YW1ldGVyc1tzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0
b3JBcmd1bWVudDo6VmFsdWUpXTsgfQorICAgICAgICBSZWdpc3RlcklEKiBnZW5lcmF0b3JSZXN1
bWVNb2RlUmVnaXN0ZXIoKSB7IHJldHVybiAmbV9wYXJhbWV0ZXJzW3N0YXRpY19jYXN0PGludDMy
X3Q+KEpTR2VuZXJhdG9yRnVuY3Rpb246OkdlbmVyYXRvckFyZ3VtZW50OjpSZXN1bWVNb2RlKV07
IH0KKyAgICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9yRnJhbWVSZWdpc3RlcigpIHsgcmV0dXJu
ICZtX3BhcmFtZXRlcnNbc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6
R2VuZXJhdG9yQXJndW1lbnQ6OkZyYW1lKV07IH0KIAogICAgICAgICBDb2RlVHlwZSBjb2RlVHlw
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZVR5cGU7IH0KIApAQCAtOTI5LDcgKzkyNywxMSBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgVmVjdG9yPFN3aXRjaEluZm8+IG1fc3dpdGNoQ29udGV4
dFN0YWNrOwogICAgICAgICBWZWN0b3I8UmVmUHRyPEZvckluQ29udGV4dD4+IG1fZm9ySW5Db250
ZXh0U3RhY2s7CiAgICAgICAgIFZlY3RvcjxUcnlDb250ZXh0PiBtX3RyeUNvbnRleHRTdGFjazsK
LSAgICAgICAgVmVjdG9yPFJlZlB0cjxMYWJlbD4+IG1fZ2VuZXJhdG9yUmVzdW1lTGFiZWxzOwor
ICAgICAgICB1bnNpZ25lZCBtX3lpZWxkUG9pbnRzIHsgMCB9OworCisgICAgICAgIFN0cm9uZzxT
eW1ib2xUYWJsZT4gbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlOworICAgICAgICBpbnQgbV9n
ZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlSW5kZXggeyAwIH07CisKICAgICAgICAgZW51bSBGdW5j
dGlvblZhcmlhYmxlVHlwZSA6IHVpbnQ4X3QgeyBOb3JtYWxGdW5jdGlvblZhcmlhYmxlLCBHbG9i
YWxGdW5jdGlvblZhcmlhYmxlIH07CiAgICAgICAgIFZlY3RvcjxzdGQ6OnBhaXI8RnVuY3Rpb25N
ZXRhZGF0YU5vZGUqLCBGdW5jdGlvblZhcmlhYmxlVHlwZT4+IG1fZnVuY3Rpb25zVG9Jbml0aWFs
aXplOwogICAgICAgICBib29sIG1fbmVlZFRvSW5pdGlhbGl6ZUFyZ3VtZW50cyB7IGZhbHNlIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29k
ZWdlbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdl
bi5jcHAKaW5kZXggZTk0NWUxYTlhYTdmMWZmNTM4M2ZlZTVlMWMwYzc4ZDIyNTE5YjdjYy4uOTMy
NDJhZjZiMWMxZDAxOGUyYWQyODUxMzRhZjNiZmQxZTU5MTBhOCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcApAQCAtMzM2MSw3
ICszMzYxLDYgQEAgdm9pZCBGdW5jdGlvbk5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVy
YXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKikKICAgICAgICAgUmVmUHRyPExhYmVsPiBkb25l
ID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoZG9u
ZS5nZXQoKSk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0UmV0dXJuKGdlbmVyYXRvci5lbWl0TG9h
ZChudWxscHRyLCBqc1VuZGVmaW5lZCgpKSk7Ci0gICAgICAgIGdlbmVyYXRvci5lbmRHZW5lcmF0
b3IoZG9uZS5nZXQoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKaW5kZXggYTcxN2QxNmRjYzg2YzBjMDQxYTU3
OTJhMjkyZjEyYzc5MzczMjIxNi4uYTNlOGZjZDUwOWU2YThlYjE2ODk5M2U5NTU3MGMyNjBkNmEw
ZDI2YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25z
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCkBA
IC00Miw4ICs0Miw4IEBACiAjaW5jbHVkZSAiRGlyZWN0QXJndW1lbnRzLmgiCiAjaW5jbHVkZSAi
RlRMRm9yT1NSRW50cnlKSVRDb2RlLmgiCiAjaW5jbHVkZSAiRlRMT1NSRW50cnkuaCIKLSNpbmNs
dWRlICJIb3N0Q2FsbFJldHVyblZhbHVlLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCisj
aW5jbHVkZSAiSG9zdENhbGxSZXR1cm5WYWx1ZS5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgi
CiAjaW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSklURXhjZXB0aW9ucy5oIgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2dlbmVyYXRlLWJ5dGVjb2RlLWZpbGVzIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2dlbmVyYXRlLWJ5dGVjb2RlLWZpbGVzCmluZGV4IDU2NjZhM2Y5MjRj
MTE5YjIxNmQzZmYwZmZlOWM2NzJiN2M3MWJiNzkuLjhmNzkwZWQ5ZmE4MzE2ZDM5ZGExNWQzYjc1
ODk0NmJmNDlmM2JkM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0
ZS1ieXRlY29kZS1maWxlcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdGUtYnl0
ZWNvZGUtZmlsZXMKQEAgLTk0LDEzICs5NCwxNCBAQCBkZWYgb3Blbk9yRXhpdChwYXRoLCBtb2Rl
KToKICAgICAgICAgcHJpbnQgIkkvTyBlcnJvciBvcGVuaW5nIHswfSwgKHsxfSk6IHsyfSIuZm9y
bWF0KHBhdGgsIGUuZXJybm8sIGUuc3RyZXJyb3IpCiAgICAgICAgIGV4aXQoMSkKIAotZGVmIGhh
c2hGaWxlKGZpbGUpOgorZGVmIGhhc2hGaWxlKGZpbGVzKToKICAgICBzaGExID0gaGFzaGxpYi5z
aGExKCkKLSAgICBmaWxlLnNlZWsoMCkKLSAgICBmb3IgbGluZSBpbiBmaWxlOgotICAgICAgICBz
aGExLnVwZGF0ZShsaW5lKQorICAgIGZvciBmaWxlIGluIGZpbGVzOgorICAgICAgICBmaWxlLnNl
ZWsoMCkKKyAgICAgICAgZm9yIGxpbmUgaW4gZmlsZToKKyAgICAgICAgICAgIHNoYTEudXBkYXRl
KGxpbmUpCiAKLSAgICBmaWxlLnNlZWsoMCkKKyAgICAgICAgZmlsZS5zZWVrKDApCiAKICAgICBy
ZXR1cm4gc2hhMS5oZXhkaWdlc3QoKQogCkBAIC0xMTUsNyArMTE2LDggQEAgaWYgX19uYW1lX18g
PT0gIl9fbWFpbl9fIjoKIAogICAgIGJ5dGVjb2RlSlNPTkZpbGUgPSBhcmdzWzBdCiAgICAgYnl0
ZWNvZGVGaWxlID0gb3Blbk9yRXhpdChieXRlY29kZUpTT05GaWxlLCAicmIiKQotICAgIHNoYTFI
YXNoID0gaGFzaEZpbGUoYnl0ZWNvZGVGaWxlKQorICAgIGdlbmVyYXRvckZpbGUgPSBvcGVuT3JF
eGl0KF9fZmlsZV9fLCAicmIiKQorICAgIHNoYTFIYXNoID0gaGFzaEZpbGUoW2J5dGVjb2RlRmls
ZSwgZ2VuZXJhdG9yRmlsZV0pCiAKICAgICBoRmlsZUhhc2hTdHJpbmcgPSAiLy8gU0hBMUhhc2g6
IHswfVxuIi5mb3JtYXQoc2hhMUhhc2gpCiAgICAgYXNtRmlsZUhhc2hTdHJpbmcgPSAiIyBTSEEx
SGFzaDogezB9XG4iLmZvcm1hdChzaGExSGFzaCkKQEAgLTE4Nyw2ICsxODksNyBAQCBpZiBfX25h
bWVfXyA9PSAiX19tYWluX18iOgogICAgICAgICAgICAgICAgIGRlZmF1bHRMZW5ndGggPSBzZWN0
aW9uWyJkZWZhdWx0TGVuZ3RoIl0KIAogICAgICAgICAgICAgYnl0ZWNvZGVOdW0gPSAwCisgICAg
ICAgICAgICBtYXhMZW5ndGggPSAwCiAgICAgICAgICAgICBmb3IgYnl0ZWNvZGUgaW4gc2VjdGlv
blsiYnl0ZWNvZGVzIl06CiAgICAgICAgICAgICAgICAgaWYgbm90IGZpcnN0TWFjcm86CiAgICAg
ICAgICAgICAgICAgICAgIGJ5dGVjb2RlSEZpbGUud3JpdGUoIiBcXFxuIikKQEAgLTE5NCw2ICsx
OTcsNyBAQCBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgICAgICAgICAgICAgIGxlbmd0
aCA9IGRlZmF1bHRMZW5ndGgKICAgICAgICAgICAgICAgICBpZiAibGVuZ3RoIiBpbiBieXRlY29k
ZToKICAgICAgICAgICAgICAgICAgICAgbGVuZ3RoID0gYnl0ZWNvZGVbImxlbmd0aCJdCisgICAg
ICAgICAgICAgICAgICAgIG1heExlbmd0aCA9IG1heChbbGVuZ3RoLCBtYXhMZW5ndGhdKQogCiAg
ICAgICAgICAgICAgICAgYnl0ZWNvZGVIRmlsZS53cml0ZSgiICAgIG1hY3JvKHswfSwgezF9KSIu
Zm9ybWF0KGJ5dGVjb2RlWyJuYW1lIl0sIGxlbmd0aCkpCiAgICAgICAgICAgICAgICAgZmlyc3RN
YWNybyA9IEZhbHNlCkBAIC0yMDEsNiArMjA1LDcgQEAgaWYgX19uYW1lX18gPT0gIl9fbWFpbl9f
IjoKIAogICAgICAgICAgICAgYnl0ZWNvZGVIRmlsZS53cml0ZSgiXG5cbiIpCiAgICAgICAgICAg
ICBieXRlY29kZUhGaWxlLndyaXRlKCIjZGVmaW5lIE5VTUJFUl9PRl97MH1fSURTIHsxfVxuXG4i
LmZvcm1hdChzZWN0aW9uWyJtYWNyb05hbWVDb21wb25lbnQiXSwgYnl0ZWNvZGVOdW0pKQorICAg
ICAgICAgICAgYnl0ZWNvZGVIRmlsZS53cml0ZSgiI2RlZmluZSBNQVhfT1BDT0RFX0xFTkdUSF9P
Rl97MH0gezF9XG5cbiIuZm9ybWF0KHNlY3Rpb25bIm1hY3JvTmFtZUNvbXBvbmVudCJdLCBtYXhM
ZW5ndGgpKQogCiAgICAgICAgIGlmIGluaXRBU01GaWxlTmFtZSBhbmQgc2VjdGlvblsnZW1pdElu
QVNNRmlsZSddOgogICAgICAgICAgICAgcHJlZml4ID0gIiIKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCmluZGV4IGQ4Y2VjYWMyZDhiY2E5
YzJhNmRjYzQ4YzU0MGJmOWI5ZGRiMzBmNTQuLjczZjBmMGYxNDNjOWU4NDU1YzgxYjkzMWQyZGYy
NDM2YTkzNmVkZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9JbnRlcnByZXRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVy
L0ludGVycHJldGVyLmNwcApAQCAtNTI5LDcgKzUyOSw3IEBAIEpTU3RyaW5nKiBJbnRlcnByZXRl
cjo6c3RhY2tUcmFjZUFzU3RyaW5nKFZNJiB2bSwgY29uc3QgVmVjdG9yPFN0YWNrRnJhbWU+JiBz
dGFjCiAgICAgcmV0dXJuIGpzU3RyaW5nKCZ2bSwgYnVpbGRlci50b1N0cmluZygpKTsKIH0KIAot
QUxXQVlTX0lOTElORSBzdGF0aWMgSGFuZGxlckluZm8qIGZpbmRFeGNlcHRpb25IYW5kbGVyKFN0
YWNrVmlzaXRvciYgdmlzaXRvciwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVCbG9jazo6UmVx
dWlyZWRIYW5kbGVyIHJlcXVpcmVkSGFuZGxlcikKK0FMV0FZU19JTkxJTkUgc3RhdGljIEhhbmRs
ZXJJbmZvKiBmaW5kRXhjZXB0aW9uSGFuZGxlcihTdGFja1Zpc2l0b3ImIHZpc2l0b3IsIENvZGVC
bG9jayogY29kZUJsb2NrLCBSZXF1aXJlZEhhbmRsZXIgcmVxdWlyZWRIYW5kbGVyKQogewogICAg
IEFTU0VSVChjb2RlQmxvY2spOwogI2lmIEVOQUJMRShERkdfSklUKQpAQCAtNTYzLDcgKzU2Myw3
IEBAIGNsYXNzIEdldENhdGNoSGFuZGxlckZ1bmN0b3IgewogICAgICAgICBpZiAoIWNvZGVCbG9j
aykKICAgICAgICAgICAgIHJldHVybiBTdGFja1Zpc2l0b3I6OkNvbnRpbnVlOwogCi0gICAgICAg
IG1faGFuZGxlciA9IGZpbmRFeGNlcHRpb25IYW5kbGVyKHZpc2l0b3IsIGNvZGVCbG9jaywgQ29k
ZUJsb2NrOjpSZXF1aXJlZEhhbmRsZXI6OkNhdGNoSGFuZGxlcik7CisgICAgICAgIG1faGFuZGxl
ciA9IGZpbmRFeGNlcHRpb25IYW5kbGVyKHZpc2l0b3IsIGNvZGVCbG9jaywgUmVxdWlyZWRIYW5k
bGVyOjpDYXRjaEhhbmRsZXIpOwogICAgICAgICBpZiAobV9oYW5kbGVyKQogICAgICAgICAgICAg
cmV0dXJuIFN0YWNrVmlzaXRvcjo6RG9uZTsKIApAQCAtNjA1LDcgKzYwNSw3IEBAIGNsYXNzIFVu
d2luZEZ1bmN0b3IgewogICAgICAgICBtX2hhbmRsZXIgPSBudWxscHRyOwogICAgICAgICBpZiAo
IW1faXNUZXJtaW5hdGlvbikgewogICAgICAgICAgICAgaWYgKG1fY29kZUJsb2NrICYmICFpc1dl
YkFzc2VtYmx5RXhlY3V0YWJsZShtX2NvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCkpKQotICAg
ICAgICAgICAgICAgIG1faGFuZGxlciA9IGZpbmRFeGNlcHRpb25IYW5kbGVyKHZpc2l0b3IsIG1f
Y29kZUJsb2NrLCBDb2RlQmxvY2s6OlJlcXVpcmVkSGFuZGxlcjo6QW55SGFuZGxlcik7CisgICAg
ICAgICAgICAgICAgbV9oYW5kbGVyID0gZmluZEV4Y2VwdGlvbkhhbmRsZXIodmlzaXRvciwgbV9j
b2RlQmxvY2ssIFJlcXVpcmVkSGFuZGxlcjo6QW55SGFuZGxlcik7CiAgICAgICAgIH0KIAogICAg
ICAgICBpZiAobV9oYW5kbGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
dGVycHJldGVyL0ludGVycHJldGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvSW50ZXJwcmV0ZXIuaAppbmRleCBlNDIxODUxZWZlOWU2NTI2ZWYxZWYzZjhhZjljODdjNmI2
YzIyMDU3Li44OTMzMWU5YzJiYzYxNDkzMmNhMDczNTIyNDM3NDYxOTM4YjExMDA2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaApAQCAtNjYs
NiArNjYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBzdHJ1Y3QgSGFuZGxlckluZm87CiAgICAg
c3RydWN0IEluc3RydWN0aW9uOwogICAgIHN0cnVjdCBQcm90b0NhbGxGcmFtZTsKKyAgICBzdHJ1
Y3QgVW5saW5rZWRJbnN0cnVjdGlvbjsKIAogICAgIGVudW0gVW53aW5kU3RhcnQgOiB1aW50OF90
IHsgVW53aW5kRnJvbUN1cnJlbnRGcmFtZSwgVW53aW5kRnJvbUNhbGxlckZyYW1lIH07CiAKQEAg
LTE5NCw3ICsxOTUsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gb3Bj
b2RlOwogI2VuZGlmCiAgICAgICAgIH0KLSAgICAgICAgCisKKyAgICAgICAgT3Bjb2RlSUQgZ2V0
T3Bjb2RlSUQoY29uc3QgSW5zdHJ1Y3Rpb24mKTsKKyAgICAgICAgT3Bjb2RlSUQgZ2V0T3Bjb2Rl
SUQoY29uc3QgVW5saW5rZWRJbnN0cnVjdGlvbiYpOworCiAgICAgICAgIGJvb2wgaXNPcGNvZGUo
T3Bjb2RlKTsKIAogICAgICAgICBKU1ZhbHVlIGV4ZWN1dGUoUHJvZ3JhbUV4ZWN1dGFibGUqLCBD
YWxsRnJhbWUqLCBKU09iamVjdCogdGhpc09iaik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXJJbmxpbmVzLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODZk
MDcxNDhhNTJlNjVlMzc1Zjk3ZTZlYmI5MWFkYmUxZGQ0NTYwZAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlcklubGluZXMuaApA
QCAtMCwwICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IFl1c3VrZSBTdXp1a2kg
PHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJJbnN0cnVjdGlvbi5oIgorI2lu
Y2x1ZGUgIkludGVycHJldGVyLmgiCisjaW5jbHVkZSAiVW5saW5rZWRDb2RlQmxvY2suaCIKKwor
bmFtZXNwYWNlIEpTQyB7CisKK2lubGluZSBPcGNvZGVJRCBJbnRlcnByZXRlcjo6Z2V0T3Bjb2Rl
SUQoY29uc3QgSW5zdHJ1Y3Rpb24mIGluc3RydWN0aW9uKQoreworICAgIHJldHVybiBnZXRPcGNv
ZGVJRChpbnN0cnVjdGlvbi51Lm9wY29kZSk7Cit9CisKK2lubGluZSBPcGNvZGVJRCBJbnRlcnBy
ZXRlcjo6Z2V0T3Bjb2RlSUQoY29uc3QgVW5saW5rZWRJbnN0cnVjdGlvbiYgaW5zdHJ1Y3Rpb24p
Cit7CisgICAgcmV0dXJuIGluc3RydWN0aW9uLnUub3Bjb2RlOworfQorCit9IC8vIG5hbWVzcGFj
ZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAppbmRleCBlZjdiZTZiMTc2NmI4NGY1NDcx
YmI2MTA2NjEyNWJiNTcxMTRkNDc5Li4wNTUzMzIxMTE1OTQxZjEyZGJjNGJjNjNmMDdkNjVlNDgw
MTU4YTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCkBAIC0yNDMsOCArMjQzLDYgQEAg
dm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBERUZJTkVfT1Aob3Bf
Z2V0X3Jlc3RfbGVuZ3RoKQogICAgICAgICBERUZJTkVfT1Aob3BfY2hlY2tfdGR6KQogICAgICAg
ICBERUZJTkVfT1Aob3BfYXNzZXJ0KQotICAgICAgICBERUZJTkVfT1Aob3Bfc2F2ZSkKLSAgICAg
ICAgREVGSU5FX09QKG9wX3Jlc3VtZSkKICAgICAgICAgREVGSU5FX09QKG9wX2RlYnVnKQogICAg
ICAgICBERUZJTkVfT1Aob3BfZGVsX2J5X2lkKQogICAgICAgICBERUZJTkVfT1Aob3BfZGVsX2J5
X3ZhbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCmluZGV4IDcyYTBmNmU2MDVlOWVkNDFlNTdiOGJk
YmJhMGQyMjRhZjFlYmJkNTguLmY2ODM5NDJkMmNlZGU1NThiZDM2ZDZmNmNjZGNmZTNhZTAzOTg0
ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaApAQCAtNDkwLDggKzQ5MCw2IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X3Jlc3RfbGVuZ3RoKEluc3RydWN0aW9u
Kik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9jaGVja190ZHooSW5zdHJ1Y3Rpb24qKTsKICAgICAg
ICAgdm9pZCBlbWl0X29wX2Fzc2VydChJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRf
b3Bfc2F2ZShJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfcmVzdW1lKEluc3Ry
dWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9kZWJ1ZyhJbnN0cnVjdGlvbiopOwogICAg
ICAgICB2b2lkIGVtaXRfb3BfZGVsX2J5X2lkKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQg
ZW1pdF9vcF9kZWxfYnlfdmFsKEluc3RydWN0aW9uKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGNvZGVzLmNwcAppbmRleCBkMDMxNWFjOWM4Njc5ZWZhOWNlY2YzMzk3ZjRmNjhhM2Ex
OGRiNWYxLi5mYjMzZTQ1NzBmOGU5OGI3N2ZmZDU0ZGYzNDM1ODg4ZTMyZjYxMjZlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKQEAgLTE0OTcsMTggKzE0OTcsNiBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfcmVzdF9sZW5ndGgoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKICNlbmRpZgogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9zYXZlKEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCi17Ci0gICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRo
Q2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0aF9zYXZlKTsKLSAgICBzbG93
UGF0aENhbGwuY2FsbCgpOwotfQotCi12b2lkIEpJVDo6ZW1pdF9vcF9yZXN1bWUoSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKLXsKLSAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhD
YWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX3Jlc3VtZSk7Ci0gICAgc2xv
d1BhdGhDYWxsLmNhbGwoKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBF
TkFCTEUoSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXIuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXIuYXNtCmluZGV4IDFiOTMyOGM3N2FiYTE0YzUxNGZmZGE2YTEwMGUxNzYyYjEw
M2RhYzAuLjhjMWRlNmY3MDFmNjk2MjI1NjVkMGMzMTM0OTJlNmFiYWQ2ZDhlMzYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20K
QEAgLTE3MDMsMTYgKzE3MDMsOCBAQCBfbGxpbnRfb3BfYXNzZXJ0OgogICAgIGRpc3BhdGNoKDMp
CiAKIAotX2xsaW50X29wX3NhdmU6Ci0gICAgdHJhY2VFeGVjdXRpb24oKQotICAgIGNhbGxPcGNv
ZGVTbG93UGF0aChfc2xvd19wYXRoX3NhdmUpCi0gICAgZGlzcGF0Y2goNCkKLQotCi1fbGxpbnRf
b3BfcmVzdW1lOgotICAgIHRyYWNlRXhlY3V0aW9uKCkKLSAgICBjYWxsT3Bjb2RlU2xvd1BhdGgo
X3Nsb3dfcGF0aF9yZXN1bWUpCi0gICAgZGlzcGF0Y2goMykKK19sbGludF9vcF95aWVsZDoKKyAg
ICBub3RTdXBwb3J0ZWQoKQogCiAKIF9sbGludF9vcF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVu
dDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAppbmRleCA1NDEzOWEwMDk3
MzFkODMyNDlkMWRmOTBiYThmNWExZTkxMDJiZTNkLi41MzhjMzU0NzlhMTA5MzM1ZjA2MDAyMzg4
MjU3ZjRjZDI2MDI2N2I1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1BhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3Bw
CkBAIC0yNjAsNyArMjYwLDcgQEAgU3RyaW5nIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUlubmVy
KGNvbnN0IElkZW50aWZpZXImIGNhbGxlZU5hbWUsIFNvdXJjZVBhcnNlTW8KICAgICBpZiAobV9s
ZXhlci0+aXNSZXBhcnNpbmdGdW5jdGlvbigpKSB7CiAgICAgICAgIFBhcnNlckZ1bmN0aW9uSW5m
bzxBU1RCdWlsZGVyPiBmdW5jdGlvbkluZm87CiAgICAgICAgIGlmIChwYXJzZU1vZGUgPT0gU291
cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JCb2R5TW9kZSkKLSAgICAgICAgICAgIG1fcGFyYW1ldGVy
cyA9IGNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMoY29udGV4dCk7CisgICAgICAgICAgICBtX3Bh
cmFtZXRlcnMgPSBjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKGNvbnRleHQsIGZ1bmN0aW9uSW5m
by5wYXJhbWV0ZXJDb3VudCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG1fcGFyYW1ldGVy
cyA9IHBhcnNlRnVuY3Rpb25QYXJhbWV0ZXJzKGNvbnRleHQsIHBhcnNlTW9kZSwgZnVuY3Rpb25J
bmZvKTsKIApAQCAtNTEyLDEwICs1MTIsOSBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+
IFRyZWVTb3VyY2VFbGVtZW50cyBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VHZW5lcmF0bwogCiAg
ICAgUGFyc2VyRnVuY3Rpb25JbmZvPFRyZWVCdWlsZGVyPiBpbmZvOwogICAgIGluZm8ubmFtZSA9
ICZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5udWxsSWRlbnRpZmllcjsKLSAgICBjcmVhdGVHZW5lcmF0
b3JQYXJhbWV0ZXJzKGNvbnRleHQpOworICAgIGNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMoY29u
dGV4dCwgaW5mby5wYXJhbWV0ZXJDb3VudCk7CiAgICAgaW5mby5zdGFydE9mZnNldCA9IHBhcmFt
ZXRlcnNTdGFydDsKICAgICBpbmZvLnN0YXJ0TGluZSA9IHRva2VuTGluZSgpOwotICAgIGluZm8u
cGFyYW1ldGVyQ291bnQgPSA0OyAvLyBnZW5lcmF0b3IsIHN0YXRlLCB2YWx1ZSwgcmVzdW1lIG1v
ZGUKIAogICAgIHsKICAgICAgICAgQXV0b1BvcFNjb3BlUmVmIGdlbmVyYXRvckJvZHlTY29wZSh0
aGlzLCBwdXNoU2NvcGUoKSk7CkBAIC0xODk5LDMyICsxODk4LDMwIEBAIHRlbXBsYXRlIDx0eXBl
bmFtZSBMZXhlclR5cGU+IHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlciwgY2xhc3MgRnVuY3Rp
b25JbmZvVHlwCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+Ci10ZW1wbGF0ZSA8
Y2xhc3MgVHJlZUJ1aWxkZXI+IHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpGb3JtYWxQYXJhbWV0ZXJM
aXN0IFBhcnNlcjxMZXhlclR5cGU+OjpjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKFRyZWVCdWls
ZGVyJiBjb250ZXh0KQordGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiB0eXBlbmFtZSBUcmVl
QnVpbGRlcjo6Rm9ybWFsUGFyYW1ldGVyTGlzdCBQYXJzZXI8TGV4ZXJUeXBlPjo6Y3JlYXRlR2Vu
ZXJhdG9yUGFyYW1ldGVycyhUcmVlQnVpbGRlciYgY29udGV4dCwgdW5zaWduZWQmIHBhcmFtZXRl
ckNvdW50KQogewogICAgIGF1dG8gcGFyYW1ldGVycyA9IGNvbnRleHQuY3JlYXRlRm9ybWFsUGFy
YW1ldGVyTGlzdCgpOwogCiAgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uKHRva2VuTG9jYXRp
b24oKSk7CiAgICAgSlNUZXh0UG9zaXRpb24gcG9zaXRpb24gPSB0b2tlblN0YXJ0UG9zaXRpb24o
KTsKIAotICAgIC8vIEBnZW5lcmF0b3IKLSAgICBkZWNsYXJlUGFyYW1ldGVyKCZtX3ZtLT5wcm9w
ZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JQcml2YXRlTmFtZSgpKTsKLSAgICBh
dXRvIGdlbmVyYXRvciA9IGNvbnRleHQuY3JlYXRlQmluZGluZ0xvY2F0aW9uKGxvY2F0aW9uLCBt
X3ZtLT5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JQcml2YXRlTmFtZSgp
LCBwb3NpdGlvbiwgcG9zaXRpb24sIEFzc2lnbm1lbnRDb250ZXh0OjpEZWNsYXJhdGlvblN0YXRl
bWVudCk7Ci0gICAgY29udGV4dC5hcHBlbmRQYXJhbWV0ZXIocGFyYW1ldGVycywgZ2VuZXJhdG9y
LCAwKTsKKyAgICBhdXRvIGFkZFBhcmFtZXRlciA9IFsmXShjb25zdCBJZGVudGlmaWVyJiBuYW1l
KSB7CisgICAgICAgIGRlY2xhcmVQYXJhbWV0ZXIoJm5hbWUpOworICAgICAgICBhdXRvIGJpbmRp
bmcgPSBjb250ZXh0LmNyZWF0ZUJpbmRpbmdMb2NhdGlvbihsb2NhdGlvbiwgbmFtZSwgcG9zaXRp
b24sIHBvc2l0aW9uLCBBc3NpZ25tZW50Q29udGV4dDo6RGVjbGFyYXRpb25TdGF0ZW1lbnQpOwor
ICAgICAgICBjb250ZXh0LmFwcGVuZFBhcmFtZXRlcihwYXJhbWV0ZXJzLCBiaW5kaW5nLCAwKTsK
KyAgICAgICAgKytwYXJhbWV0ZXJDb3VudDsKKyAgICB9OwogCisgICAgLy8gQGdlbmVyYXRvcgor
ICAgIGFkZFBhcmFtZXRlcihtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZW5l
cmF0b3JQcml2YXRlTmFtZSgpKTsKICAgICAvLyBAZ2VuZXJhdG9yU3RhdGUKLSAgICBkZWNsYXJl
UGFyYW1ldGVyKCZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JT
dGF0ZVByaXZhdGVOYW1lKCkpOwotICAgIGF1dG8gZ2VuZXJhdG9yU3RhdGUgPSBjb250ZXh0LmNy
ZWF0ZUJpbmRpbmdMb2NhdGlvbihsb2NhdGlvbiwgbV92bS0+cHJvcGVydHlOYW1lcy0+YnVpbHRp
bk5hbWVzKCkuZ2VuZXJhdG9yU3RhdGVQcml2YXRlTmFtZSgpLCBwb3NpdGlvbiwgcG9zaXRpb24s
IEFzc2lnbm1lbnRDb250ZXh0OjpEZWNsYXJhdGlvblN0YXRlbWVudCk7Ci0gICAgY29udGV4dC5h
cHBlbmRQYXJhbWV0ZXIocGFyYW1ldGVycywgZ2VuZXJhdG9yU3RhdGUsIDApOwotCisgICAgYWRk
UGFyYW1ldGVyKG1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclN0
YXRlUHJpdmF0ZU5hbWUoKSk7CiAgICAgLy8gQGdlbmVyYXRvclZhbHVlCi0gICAgZGVjbGFyZVBh
cmFtZXRlcigmbV92bS0+cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yVmFs
dWVQcml2YXRlTmFtZSgpKTsKLSAgICBhdXRvIGdlbmVyYXRvclZhbHVlID0gY29udGV4dC5jcmVh
dGVCaW5kaW5nTG9jYXRpb24obG9jYXRpb24sIG1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5O
YW1lcygpLmdlbmVyYXRvclZhbHVlUHJpdmF0ZU5hbWUoKSwgcG9zaXRpb24sIHBvc2l0aW9uLCBB
c3NpZ25tZW50Q29udGV4dDo6RGVjbGFyYXRpb25TdGF0ZW1lbnQpOwotICAgIGNvbnRleHQuYXBw
ZW5kUGFyYW1ldGVyKHBhcmFtZXRlcnMsIGdlbmVyYXRvclZhbHVlLCAwKTsKLQorICAgIGFkZFBh
cmFtZXRlcihtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JWYWx1
ZVByaXZhdGVOYW1lKCkpOwogICAgIC8vIEBnZW5lcmF0b3JSZXN1bWVNb2RlCi0gICAgZGVjbGFy
ZVBhcmFtZXRlcigmbV92bS0+cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9y
UmVzdW1lTW9kZVByaXZhdGVOYW1lKCkpOwotICAgIGF1dG8gZ2VuZXJhdG9yUmVzdW1lTW9kZSA9
IGNvbnRleHQuY3JlYXRlQmluZGluZ0xvY2F0aW9uKGxvY2F0aW9uLCBtX3ZtLT5wcm9wZXJ0eU5h
bWVzLT5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JSZXN1bWVNb2RlUHJpdmF0ZU5hbWUoKSwgcG9z
aXRpb24sIHBvc2l0aW9uLCBBc3NpZ25tZW50Q29udGV4dDo6RGVjbGFyYXRpb25TdGF0ZW1lbnQp
OwotICAgIGNvbnRleHQuYXBwZW5kUGFyYW1ldGVyKHBhcmFtZXRlcnMsIGdlbmVyYXRvclJlc3Vt
ZU1vZGUsIDApOworICAgIGFkZFBhcmFtZXRlcihtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5idWlsdGlu
TmFtZXMoKS5nZW5lcmF0b3JSZXN1bWVNb2RlUHJpdmF0ZU5hbWUoKSk7CisgICAgLy8gQGdlbmVy
YXRvckZyYW1lCisgICAgYWRkUGFyYW1ldGVyKG1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5O
YW1lcygpLmdlbmVyYXRvckZyYW1lUHJpdmF0ZU5hbWUoKSk7CiAKICAgICByZXR1cm4gcGFyYW1l
dGVyczsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2Vy
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCmluZGV4IDM5MjA0MDRl
OGJhNTIwYjIyZTRlY2QyNzc4MWMxM2RmODE5MDc0MzMuLjUwZTEzOTFiNWZkMDNkZDVlNzc4Yjhm
ZGI1OTIzYWE3OThhZWQxMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaApA
QCAtMTQyNiw3ICsxNDI2LDcgQEAgY2xhc3MgUGFyc2VyIHsKICAgICBBTFdBWVNfSU5MSU5FIGJv
b2wgaXNBcnJvd0Z1bmN0aW9uUGFyYW1ldGVycygpOwogICAgIAogICAgIHRlbXBsYXRlIDxjbGFz
cyBUcmVlQnVpbGRlciwgY2xhc3MgRnVuY3Rpb25JbmZvVHlwZT4gTkVWRVJfSU5MSU5FIHR5cGVu
YW1lIFRyZWVCdWlsZGVyOjpGb3JtYWxQYXJhbWV0ZXJMaXN0IHBhcnNlRnVuY3Rpb25QYXJhbWV0
ZXJzKFRyZWVCdWlsZGVyJiwgU291cmNlUGFyc2VNb2RlLCBGdW5jdGlvbkluZm9UeXBlJik7Ci0g
ICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBORVZFUl9JTkxJTkUgdHlwZW5hbWUgVHJl
ZUJ1aWxkZXI6OkZvcm1hbFBhcmFtZXRlckxpc3QgY3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhU
cmVlQnVpbGRlciYpOworICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gTkVWRVJfSU5M
SU5FIHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpGb3JtYWxQYXJhbWV0ZXJMaXN0IGNyZWF0ZUdlbmVy
YXRvclBhcmFtZXRlcnMoVHJlZUJ1aWxkZXImLCB1bnNpZ25lZCYgcGFyYW1ldGVyQ291bnQpOwog
CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBORVZFUl9JTkxJTkUgVHJlZUNsYXNz
RXhwcmVzc2lvbiBwYXJzZUNsYXNzKFRyZWVCdWlsZGVyJiwgRnVuY3Rpb25OYW1lUmVxdWlyZW1l
bnRzLCBQYXJzZXJDbGFzc0luZm88VHJlZUJ1aWxkZXI+Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCmluZGV4IGE5Yjc1NWU2Yzlh
ZTliOThhNjIyOTM1NDZlZTU3Y2E4MWVjOWMzMmMuLjJlODY4ZGNiMmQ3MWZlN2NmMjhlOTUwZjA1
Yzc1OGJhODA1Y2MzMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbW1vblNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29tbW9uU2xvd1BhdGhzLmNwcApAQCAtMzcsNyArMzcsNiBAQAogI2luY2x1ZGUgIkVycm9yLmgi
CiAjaW5jbHVkZSAiRXJyb3JIYW5kbGluZ1Njb3BlLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uRnV6
ei5oIgotI2luY2x1ZGUgIkdlbmVyYXRvckZyYW1lLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVy
LmgiCiAjaW5jbHVkZSAiSG9zdENhbGxSZXR1cm5WYWx1ZS5oIgogI2luY2x1ZGUgIkludGVycHJl
dGVyLmgiCkBAIC03NTMsMzggKzc1Miw2IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9hc3Nl
cnQpCiAgICAgRU5EKCk7CiB9CiAKLVNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9zYXZlKQotewot
ICAgIC8vIE9ubHkgc2F2ZSB2YXJpYWJsZXMgYW5kIHRlbXBvcmFyeSByZWdpc3RlcnMuIFRoZSBz
Y29wZSByZWdpc3RlcnMgYXJlIGluY2x1ZGVkIGluIHRoZW0uCi0gICAgLy8gQnV0IHBhcmFtZXRl
cnMgYXJlIG5vdCBpbmNsdWRlZC4gQmVjYXVzZSB0aGUgZ2VuZXJhdG9yIGltcGxlbWVudGF0aW9u
IHJlcGxhY2VzIHRoZSB2YWx1ZXMgb2YgcGFyYW1ldGVycyBvbiBlYWNoIGdlbmVyYXRvci5uZXh0
KCkgY2FsbC4KLSAgICBCRUdJTigpOwotICAgIEpTVmFsdWUgZ2VuZXJhdG9yID0gT1AoMSkuanNW
YWx1ZSgpOwotICAgIEdlbmVyYXRvckZyYW1lKiBmcmFtZSA9IG51bGxwdHI7Ci0gICAgSlNWYWx1
ZSB2YWx1ZSA9IGdlbmVyYXRvci5nZXQoZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLmJ1aWx0
aW5OYW1lcygpLmdlbmVyYXRvckZyYW1lUHJpdmF0ZU5hbWUoKSk7Ci0gICAgaWYgKCF2YWx1ZS5p
c051bGwoKSkKLSAgICAgICAgZnJhbWUgPSBqc0Nhc3Q8R2VuZXJhdG9yRnJhbWUqPih2YWx1ZSk7
Ci0gICAgZWxzZSB7Ci0gICAgICAgIC8vIEZJWE1FOiBPbmNlIEpTR2VuZXJhdG9yIHNwZWNpYWxp
emVkIG9iamVjdCBpcyBpbnRyb2R1Y2VkLCB0aGlzIEdlbmVyYXRvckZyYW1lIHNob3VsZCBiZSBl
bWJlZGVkIGludG8gaXQgdG8gYXZvaWQgYWxsb2NhdGlvbnMuCi0gICAgICAgIC8vIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE1NDUKLSAgICAgICAgZnJhbWUgPSBH
ZW5lcmF0b3JGcmFtZTo6Y3JlYXRlKGV4ZWMtPnZtKCksICBleGVjLT5jb2RlQmxvY2soKS0+bnVt
Q2FsbGVlTG9jYWxzKCkpOwotICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChnZW5lcmF0b3Is
IHRydWUsIFB1dFByb3BlcnR5U2xvdDo6UHV0QnlJZCk7Ci0gICAgICAgIGFzT2JqZWN0KGdlbmVy
YXRvciktPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5wdXQoYXNPYmplY3QoZ2VuZXJhdG9yKSwg
ZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvckZyYW1l
UHJpdmF0ZU5hbWUoKSwgZnJhbWUsIHNsb3QpOwotICAgIH0KLSAgICB1bnNpZ25lZCBsaXZlQ2Fs
bGVlTG9jYWxzSW5kZXggPSBwY1syXS51LnVuc2lnbmVkVmFsdWU7Ci0gICAgZnJhbWUtPnNhdmUo
ZXhlYywgZXhlYy0+Y29kZUJsb2NrKCktPmxpdmVDYWxsZWVMb2NhbHNBdFlpZWxkKGxpdmVDYWxs
ZWVMb2NhbHNJbmRleCkpOwotICAgIEVORCgpOwotfQotCi1TTE9XX1BBVEhfREVDTChzbG93X3Bh
dGhfcmVzdW1lKQotewotICAgIEJFR0lOKCk7Ci0gICAgSlNWYWx1ZSBnZW5lcmF0b3IgPSBPUCgx
KS5qc1ZhbHVlKCk7Ci0gICAgR2VuZXJhdG9yRnJhbWUqIGZyYW1lID0ganNDYXN0PEdlbmVyYXRv
ckZyYW1lKj4oZ2VuZXJhdG9yLmdldChleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuYnVpbHRp
bk5hbWVzKCkuZ2VuZXJhdG9yRnJhbWVQcml2YXRlTmFtZSgpKSk7Ci0gICAgdW5zaWduZWQgbGl2
ZUNhbGxlZUxvY2Fsc0luZGV4ID0gcGNbMl0udS51bnNpZ25lZFZhbHVlOwotICAgIGZyYW1lLT5y
ZXN1bWUoZXhlYywgZXhlYy0+Y29kZUJsb2NrKCktPmxpdmVDYWxsZWVMb2NhbHNBdFlpZWxkKGxp
dmVDYWxsZWVMb2NhbHNJbmRleCkpOwotICAgIEVORCgpOwotfQotCiBTTE9XX1BBVEhfREVDTChz
bG93X3BhdGhfY3JlYXRlX2xleGljYWxfZW52aXJvbm1lbnQpCiB7CiAgICAgQkVHSU4oKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKaW5kZXgg
NjQwMWE2MTRkNTYxMTY2MzU2OWIxOGEwMjcyYjI4YWMzNTI4NmE4Mi4uM2Q5YzE1ZjVhZjBjNzU3
ZGRhMTA1MzM5MTk5MGY1NDYzODg2ODFiNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKQEAgLTI0OCw4ICsyNDgsNiBAQCBTTE9XX1BBVEhf
SElEREVOX0RFQ0woc2xvd19wYXRoX25leHRfZ2VuZXJpY19lbnVtZXJhdG9yX3BuYW1lKTsKIFNM
T1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfdG9faW5kZXhfc3RyaW5nKTsKIFNMT1dfUEFU
SF9ISURERU5fREVDTChzbG93X3BhdGhfcHJvZmlsZV90eXBlX2NsZWFyX2xvZyk7CiBTTE9XX1BB
VEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2Fzc2VydCk7Ci1TTE9XX1BBVEhfSElEREVOX0RFQ0wo
c2xvd19wYXRoX3NhdmUpOwotU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9yZXN1bWUp
OwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9u
bWVudCk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3B1c2hfd2l0aF9zY29wZSk7
CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3Jlc29sdmVfc2NvcGUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJhbWUuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJhbWUuY3BwCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZGNiMDQ4OWE3MTNkNGFkODMzN2EzY2ZlNmE4MTQ5NzE1
MmExODkzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZyYW1lLmNwcAorKysgL2Rldi9u
dWxsCkBAIC0xLDk0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1
enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwot
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0g
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZp
Zy5oIgotI2luY2x1ZGUgIkdlbmVyYXRvckZyYW1lLmgiCi0KLSNpbmNsdWRlICJDb2RlQmxvY2su
aCIKLSNpbmNsdWRlICJIZWFwSXRlcmF0aW9uU2NvcGUuaCIKLSNpbmNsdWRlICJKU0NJbmxpbmVz
LmgiCi0KLW5hbWVzcGFjZSBKU0MgewotCi1jb25zdCBDbGFzc0luZm8gR2VuZXJhdG9yRnJhbWU6
OnNfaW5mbyA9IHsgIkdlbmVyYXRvckZyYW1lIiwgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01F
VEhPRF9UQUJMRShHZW5lcmF0b3JGcmFtZSkgfTsKLQotR2VuZXJhdG9yRnJhbWU6OkdlbmVyYXRv
ckZyYW1lKFZNJiB2bSwgc2l6ZV90IG51bWJlck9mQ2FsbGVlTG9jYWxzKQotICAgIDogQmFzZSh2
bSwgdm0uZ2VuZXJhdG9yRnJhbWVTdHJ1Y3R1cmUuZ2V0KCkpCi0gICAgLCBtX251bWJlck9mQ2Fs
bGVlTG9jYWxzKG51bWJlck9mQ2FsbGVlTG9jYWxzKQotewotfQotCi12b2lkIEdlbmVyYXRvckZy
YW1lOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCi17Ci0gICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24o
dm0pOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9udW1iZXJPZkNhbGxlZUxvY2Fsczsg
KytpKQotICAgICAgICBsb2NhbEF0KGkpLmNsZWFyKCk7Ci19Ci0KLVN0cnVjdHVyZSogR2VuZXJh
dG9yRnJhbWU6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQotewotICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0
ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKENlbGxUeXBlLCBTdHJ1Y3R1
cmVGbGFncyksIGluZm8oKSk7Ci19Ci0KLUdlbmVyYXRvckZyYW1lKiBHZW5lcmF0b3JGcmFtZTo6
Y3JlYXRlKFZNJiB2bSwgc2l6ZV90IG51bWJlck9mTG9jYWxzKQotewotICAgIEdlbmVyYXRvckZy
YW1lKiByZXN1bHQgPQotICAgICAgICBuZXcgKAotICAgICAgICAgICAgTm90TnVsbCwKLSAgICAg
ICAgICAgIGFsbG9jYXRlQ2VsbDxHZW5lcmF0b3JGcmFtZT4odm0uaGVhcCwgYWxsb2NhdGlvblNp
emVGb3JMb2NhbHMobnVtYmVyT2ZMb2NhbHMpKSkKLSAgICAgICAgR2VuZXJhdG9yRnJhbWUodm0s
IG51bWJlck9mTG9jYWxzKTsKLSAgICByZXN1bHQtPmZpbmlzaENyZWF0aW9uKHZtKTsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotCi12b2lkIEdlbmVyYXRvckZyYW1lOjpzYXZlKEV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZUNhbGxlZUxvY2FscykKLXsKLSAgICAvLyBP
bmx5IHNhdmUgY2FsbGVlIGxvY2Fscy4KLSAgICAvLyBFdmVyeSB0aW1lIGEgZ2VuZXJhdG9yIGlz
IGNhbGxlZCAob3IgcmVzdW1lZCksIHBhcmFtZXRlcnMgc2hvdWxkIGJlIHJlcGxhY2VkLgotICAg
IEFTU0VSVChsaXZlQ2FsbGVlTG9jYWxzLm51bUJpdHMoKSA8PSBtX251bWJlck9mQ2FsbGVlTG9j
YWxzKTsKLSAgICBsaXZlQ2FsbGVlTG9jYWxzLmZvckVhY2hTZXRCaXQoWyZdKHNpemVfdCBpbmRl
eCkgewotICAgICAgICBsb2NhbEF0KGluZGV4KS5zZXQoZXhlYy0+dm0oKSwgdGhpcywgZXhlYy0+
dW5jaGVja2VkUih2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChpbmRleCkpLmpzVmFsdWUoKSk7Ci0g
ICAgfSk7Ci19Ci0KLXZvaWQgR2VuZXJhdG9yRnJhbWU6OnJlc3VtZShFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IEZhc3RCaXRWZWN0b3ImIGxpdmVDYWxsZWVMb2NhbHMpCi17Ci0gICAgLy8gT25seSBy
ZXN1bWUgY2FsbGVlIGxvY2Fscy4KLSAgICAvLyBFdmVyeSB0aW1lIGEgZ2VuZXJhdG9yIGlzIGNh
bGxlZCAob3IgcmVzdW1lZCksIHBhcmFtZXRlcnMgc2hvdWxkIGJlIHJlcGxhY2VkLgotICAgIGxp
dmVDYWxsZWVMb2NhbHMuZm9yRWFjaFNldEJpdChbJl0oc2l6ZV90IGluZGV4KSB7Ci0gICAgICAg
IGV4ZWMtPnVuY2hlY2tlZFIodmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaW5kZXgpKSA9IGxvY2Fs
QXQoaW5kZXgpLmdldCgpOwotICAgICAgICBsb2NhbEF0KGluZGV4KS5jbGVhcigpOwotICAgIH0p
OwotfQotCi12b2lkIEdlbmVyYXRvckZyYW1lOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwg
U2xvdFZpc2l0b3ImIHZpc2l0b3IpCi17Ci0gICAgR2VuZXJhdG9yRnJhbWUqIHRoaXNPYmplY3Qg
PSBqc0Nhc3Q8R2VuZXJhdG9yRnJhbWUqPihjZWxsKTsKLSAgICBCYXNlOjp2aXNpdENoaWxkcmVu
KHRoaXNPYmplY3QsIHZpc2l0b3IpOwotICAgIC8vIFNpbmNlIG9ubHkgdHJ1ZSBjZWxsIHBvaW50
ZXJzIGFyZSBzdG9yZWQgYXMgYSBjZWxsLCB3ZSBjYW4gc2FmZWx5IG1hcmsgdGhlbS4KLSAgICB2
aXNpdG9yLmFwcGVuZFZhbHVlcyh0aGlzT2JqZWN0LT5sb2NhbHMoKSwgdGhpc09iamVjdC0+bV9u
dW1iZXJPZkNhbGxlZUxvY2Fscyk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJhbWUuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZyYW1lLmgKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDNkNTQ1YjE0N2RkNGFiZmIyYmJiOWI1YTcxOTRlOGY3NDg0MWM0OWEu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJhbWUuaAorKysgL2Rldi9udWxsCkBAIC0x
LDkwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRh
dGFuZS50ZWFAZ21haWwuY29tPi4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBHZW5lcmF0b3JGcmFtZV9o
Ci0jZGVmaW5lIEdlbmVyYXRvckZyYW1lX2gKLQotI2luY2x1ZGUgIkpTQ2VsbC5oIgotI2luY2x1
ZGUgPHd0Zi9GYXN0Qml0VmVjdG9yLmg+Ci0KLW5hbWVzcGFjZSBKU0MgewotCi1jbGFzcyBHZW5l
cmF0b3JGcmFtZSA6IHB1YmxpYyBKU0NlbGwgewotICAgIGZyaWVuZCBjbGFzcyBKSVQ7Ci0jaWYg
RU5BQkxFKERGR19KSVQpCi0gICAgZnJpZW5kIGNsYXNzIERGRzo6U3BlY3VsYXRpdmVKSVQ7Ci0g
ICAgZnJpZW5kIGNsYXNzIERGRzo6SklUQ29tcGlsZXI7Ci0jZW5kaWYKLSAgICBmcmllbmQgY2xh
c3MgVk07Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBKU0NlbGwgQmFzZTsKLSAgICBzdGF0aWMgY29u
c3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBTdHJ1Y3R1cmVJc0ltbW9ydGFsIHwgQmFzZTo6
U3RydWN0dXJlRmxhZ3M7Ci0KLSAgICBERUNMQVJFX0VYUE9SVF9JTkZPOwotCi0gICAgc3RhdGlj
IEdlbmVyYXRvckZyYW1lKiBjcmVhdGUoVk0mLCBzaXplX3QgbnVtYmVyT2ZDYWxsZWVMb2NhbHMp
OwotCi0gICAgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiogbG9jYWxzKCkKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8V3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPio+KGJpdHdp
c2VfY2FzdDxjaGFyKj4odGhpcykgKyBvZmZzZXRPZkxvY2FscygpKTsKLSAgICB9Ci0KLSAgICBX
cml0ZUJhcnJpZXJCYXNlPFVua25vd24+JiBsb2NhbEF0KHNpemVfdCBpbmRleCkKLSAgICB7Ci0g
ICAgICAgIEFTU0VSVChpbmRleCA8IG1fbnVtYmVyT2ZDYWxsZWVMb2NhbHMpOwotICAgICAgICBy
ZXR1cm4gbG9jYWxzKClbaW5kZXhdOwotICAgIH0KLQotICAgIHN0YXRpYyBzaXplX3Qgb2Zmc2V0
T2ZMb2NhbHMoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIFdURjo6cm91bmRVcFRvTXVsdGlwbGVP
ZjxzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KT4oc2l6ZW9mKEdlbmVyYXRvckZyYW1lKSk7
Ci0gICAgfQotCi0gICAgc3RhdGljIHNpemVfdCBhbGxvY2F0aW9uU2l6ZUZvckxvY2Fscyh1bnNp
Z25lZCBudW1iZXJPZkxvY2FscykKLSAgICB7Ci0gICAgICAgIHJldHVybiBvZmZzZXRPZkxvY2Fs
cygpICsgbnVtYmVyT2ZMb2NhbHMgKiBzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KTsKLSAg
ICB9Ci0KLSAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2Jh
bE9iamVjdCosIEpTVmFsdWUgcHJvdG90eXBlKTsKLQotICAgIHZvaWQgc2F2ZShFeGVjU3RhdGUq
LCBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlQ2FsbGVlTG9jYWxzKTsKLSAgICB2b2lkIHJlc3Vt
ZShFeGVjU3RhdGUqLCBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlQ2FsbGVlTG9jYWxzKTsKLQot
cHJpdmF0ZToKLSAgICBHZW5lcmF0b3JGcmFtZShWTSYsIHNpemVfdCBudW1iZXJPZkNhbGxlZUxv
Y2Fscyk7Ci0KLSAgICBzaXplX3QgbV9udW1iZXJPZkNhbGxlZUxvY2FsczsKLQotICAgIGZyaWVu
ZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7Ci0KLSAgICB2b2lkIGZpbmlzaENyZWF0aW9u
KFZNJik7Ci0KLXByb3RlY3RlZDoKLSAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2Vs
bCosIFNsb3RWaXNpdG9yJik7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBKU0MKLQotI2VuZGlmIC8v
IEdlbmVyYXRvckZyYW1lX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2VuZXJhdG9yRnVuY3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2VuZXJhdG9yRnVuY3Rpb24uaAppbmRleCAzNmY2MWM1ZjIwZjU2YmVmZDZjNTU3ODQyYjE5
ZTM5YjE5YTNhOTE5Li5hMWNiYWQ5NDZkYzU2ODI5ZWQxYTIxNTU3OTBiNDQwYThkZjQzMDA0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyYXRvckZ1bmN0
aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0b3JGdW5j
dGlvbi5oCkBAIC01NSw2ICs1NSwxNiBAQCBjbGFzcyBKU0dlbmVyYXRvckZ1bmN0aW9uIDogcHVi
bGljIEpTRnVuY3Rpb24gewogICAgICAgICBFeGVjdXRpbmcgPSAtMiwKICAgICB9OwogCisgICAg
Ly8gW3RoaXNdLCBAZ2VuZXJhdG9yLCBAZ2VuZXJhdG9yU3RhdGUsIEBnZW5lcmF0b3JWYWx1ZSwg
QGdlbmVyYXRvclJlc3VtZU1vZGUsIEBnZW5lcmF0b3JGcmFtZS4KKyAgICBlbnVtIGNsYXNzIEdl
bmVyYXRvckFyZ3VtZW50IDogaW50MzJfdCB7CisgICAgICAgIFRoaXNWYWx1ZSA9IDAsCisgICAg
ICAgIEdlbmVyYXRvciA9IDEsCisgICAgICAgIFN0YXRlID0gMiwKKyAgICAgICAgVmFsdWUgPSAz
LAorICAgICAgICBSZXN1bWVNb2RlID0gNCwKKyAgICAgICAgRnJhbWUgPSA1LAorICAgIH07CisK
ICAgICBjb25zdCBzdGF0aWMgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1
cmVGbGFnczsKIAogICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9WTS5jcHAKaW5kZXggNDYyMTgzNzZlOTU1N2Y0Yzc1NGZmYWIyMTcwZTM1ZmQ1MWJhNGNh
ZC4uYTJhYzg0MTdlNGE0Mjg0M2QxMTRjNWNjOGIyMzc4NDY2ZDM2MzY2NiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtNDYsNyArNDYsNiBAQAogI2luY2x1ZGUgIkZUTFRo
dW5rcy5oIgogI2luY2x1ZGUgIkZ1bmN0aW9uQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJHQ0Fj
dGl2aXR5Q2FsbGJhY2suaCIKLSNpbmNsdWRlICJHZW5lcmF0b3JGcmFtZS5oIgogI2luY2x1ZGUg
IkdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIkhlYXAuaCIKICNpbmNsdWRlICJIZWFwSXRlcmF0
aW9uU2NvcGUuaCIKQEAgLTI0MSw3ICsyNDAsNiBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVh
cFR5cGUgaGVhcFR5cGUpCiAgICAgaW5mZXJyZWRUeXBlU3RydWN0dXJlLnNldCgqdGhpcywgSW5m
ZXJyZWRUeXBlOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgaW5m
ZXJyZWRUeXBlVGFibGVTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBJbmZlcnJlZFR5cGVUYWJsZTo6Y3Jl
YXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIGZ1bmN0aW9uUmFyZURhdGFT
dHJ1Y3R1cmUuc2V0KCp0aGlzLCBGdW5jdGlvblJhcmVEYXRhOjpjcmVhdGVTdHJ1Y3R1cmUoKnRo
aXMsIDAsIGpzTnVsbCgpKSk7Ci0gICAgZ2VuZXJhdG9yRnJhbWVTdHJ1Y3R1cmUuc2V0KCp0aGlz
LCBHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwog
ICAgIGV4Y2VwdGlvblN0cnVjdHVyZS5zZXQoKnRoaXMsIEV4Y2VwdGlvbjo6Y3JlYXRlU3RydWN0
dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIHByb21pc2VEZWZlcnJlZFN0cnVjdHVyZS5z
ZXQoKnRoaXMsIEpTUHJvbWlzZURlZmVycmVkOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpz
TnVsbCgpKSk7CiAgICAgaW50ZXJuYWxQcm9taXNlRGVmZXJyZWRTdHJ1Y3R1cmUuc2V0KCp0aGlz
LCBKU0ludGVybmFsUHJvbWlzZURlZmVycmVkOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpz
TnVsbCgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAppbmRleCA5NjE1ZjYwMjdhOWRj
Y2RhYjUzZGIxMmM2ODQ3N2ExNWFlMDdlMGZmLi43MGUxNTkxMWQ3ZjllODk4NTlhZDM2ZTBhOGU4
NzdhOThlYzZmYjEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKQEAgLTMxOSw3ICsz
MTksNiBAQCBjbGFzcyBWTSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxWTT4gewogICAg
IFN0cm9uZzxTdHJ1Y3R1cmU+IGluZmVycmVkVHlwZVN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3Ry
dWN0dXJlPiBpbmZlcnJlZFR5cGVUYWJsZVN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJl
PiBmdW5jdGlvblJhcmVEYXRhU3RydWN0dXJlOwotICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGdlbmVy
YXRvckZyYW1lU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGV4Y2VwdGlvblN0cnVj
dHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBwcm9taXNlRGVmZXJyZWRTdHJ1Y3R1cmU7CiAg
ICAgU3Ryb25nPFN0cnVjdHVyZT4gaW50ZXJuYWxQcm9taXNlRGVmZXJyZWRTdHJ1Y3R1cmU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAzMjUzNmJmM2JkYTli
NDM4MDMwYWQ2NWJlMjQ1M2ZhOGM5NTIwOWRmLi5iN2RmODNlZTA4MzBkODQ3MWM0YjBmYmM4YmI2
YTRiZGU2YWU4ZjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTMzNSw2ICszMzUsOSBAQAogCQlGRTg5MjVCMDFEMDBEQUVDMDA0NjkwN0UgLyogSW5kZW50
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFODky
NUFGMUQwMERBRUMwMDQ2OTA3RSAvKiBJbmRlbnRlci5oICovOyB9OwogCQlGRURBQ0QzRDE2MzBG
ODNGMDBDNjk2MzQgLyogU3RhY2tTdGF0cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGRURBQ0QzQjE2MzBGODNGMDBDNjk2MzQgLyogU3RhY2tTdGF0
cy5jcHAgKi87IH07CiAJCUZFREFDRDNFMTYzMEY4M0YwMEM2OTYzNCAvKiBTdGFja1N0YXRzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRURBQ0QzQzE2
MzBGODNGMDBDNjk2MzQgLyogU3RhY2tTdGF0cy5oICovOyB9OworCQlDOEIwRTFBMUUwMUE0ODZF
Qjk1RTBEMTEgLyogSW5kZXhTZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDMxMzdFMUQ3REJEODRBQzM4RkFFNEQzNCAvKiBJbmRleFNldC5oICovOyB9
OworCQlDOTE2Qjk3NUYwMkY0RjdFOEI0QUIxMkQgLyogSW5kZXhNYXAuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVCNDMzODNBNUQwQjQ2M0M5NDMzRDkz
MyAvKiBJbmRleE1hcC5oICovOyB9OworCQk0QjI2ODBERDlCOTc0NDAyODk5RUQ1NzIgLyogSW5k
ZXhlZENvbnRhaW5lckl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5QzY3QzU0MjU4OTM0OEUyODVCNDk2OTkgLyogSW5kZXhlZENvbnRhaW5l
ckl0ZXJhdG9yLmggKi87IH07CiAvKiBFbmQgUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KIAogLyog
QmVnaW4gUEJYQ29udGFpbmVySXRlbVByb3h5IHNlY3Rpb24gKi8KQEAgLTY4Miw2ICs2ODUsOSBA
QAogCQlGRTg5MjVBRjFEMDBEQUVDMDA0NjkwN0UgLyogSW5kZW50ZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSW5kZW50ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRkVEQUNEM0IxNjMwRjgzRjAwQzY5NjM0IC8qIFN0YWNrU3RhdHMuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RhY2tTdGF0cy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUZFREFDRDNDMTYzMEY4M0YwMEM2OTYzNCAvKiBTdGFja1N0YXRz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0YWNrU3RhdHMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzEzN0UxRDdEQkQ4NEFDMzhGQUU0RDM0IC8qIEluZGV4
U2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEluZGV4U2V0Lmg7IHBhdGgg
PSBJbmRleFNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QjQzMzgzQTVEMEI0
NjNDOTQzM0Q5MzMgLyogSW5kZXhNYXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gSW5kZXhNYXAuaDsgcGF0aCA9IEluZGV4TWFwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTlDNjdDNTQyNTg5MzQ4RTI4NUI0OTY5OSAvKiBJbmRleGVkQ29udGFpbmVySXRlcmF0
b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSW5kZXhlZENvbnRhaW5lckl0
ZXJhdG9yLmg7IHBhdGggPSBJbmRleGVkQ29udGFpbmVySXRlcmF0b3IuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIC8qIEVuZCBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KIAogLyog
QmVnaW4gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwpAQCAtMTA0MSw2ICsxMDQ3
LDkgQEAKIAkJCQlFNEEwQUQzODFBOTYyNDU1MDA1MzZERjYgLyogV29ya1F1ZXVlLmggKi8sCiAJ
CQkJQThBNDczN0ExNTFBODI1QjAwNDEyM0ZGIC8qIFdURlRocmVhZERhdGEuY3BwICovLAogCQkJ
CUE4QTQ3MzdCMTUxQTgyNUIwMDQxMjNGRiAvKiBXVEZUaHJlYWREYXRhLmggKi8sCisJCQkJMzEz
N0UxRDdEQkQ4NEFDMzhGQUU0RDM0IC8qIEluZGV4U2V0LmggKi8sCisJCQkJNUI0MzM4M0E1RDBC
NDYzQzk0MzNEOTMzIC8qIEluZGV4TWFwLmggKi8sCisJCQkJOUM2N0M1NDI1ODkzNDhFMjg1QjQ5
Njk5IC8qIEluZGV4ZWRDb250YWluZXJJdGVyYXRvci5oICovLAogCQkJKTsKIAkJCXBhdGggPSB3
dGY7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMTQzOSw2ICsxNDQ4LDkgQEAKIAkJ
CQlBOEE0NzQ0NjE1MUE4MjVCMDA0MTIzRkYgLyogV1RGU3RyaW5nLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBOEE0NzQ4NzE1MUE4MjVCMDA0MTIzRkYgLyogV1RGVGhyZWFkRGF0YS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQ0U3M0UwMjUxOURDQjdBQjAwNTgwRDVDIC8qIFhQQ1NQSS5oIGluIEhlYWRl
cnMgKi8sCisJCQkJQzhCMEUxQTFFMDFBNDg2RUI5NUUwRDExIC8qIEluZGV4U2V0LmggaW4gSGVh
ZGVycyAqLywKKwkJCQlDOTE2Qjk3NUYwMkY0RjdFOEI0QUIxMkQgLyogSW5kZXhNYXAuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTRCMjY4MEREOUI5NzQ0MDI4OTlFRDU3MiAvKiBJbmRleGVkQ29udGFp
bmVySXRlcmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3lt
ZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
Q01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAppbmRleCA2Y2E4
OTNkNWIyNTAyN2QyNzkzY2ZjOTYxZTNlYmQ0ZmJlNzY4MjdkLi44Njc5OTllYTkyODZiOTUzZjEz
MzcwOWI2ZGU0OTAwNWUwNGMxNGFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxp
c3RzLnR4dAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dApAQCAtNDUsNiArNDUs
MTAgQEAgc2V0KFdURl9IRUFERVJTCiAgICAgSGFzaFRhYmxlLmgKICAgICBIYXNoVHJhaXRzLmgK
ICAgICBIZXhOdW1iZXIuaAorICAgIEluZGV4TWFwLmgKKyAgICBJbmRleFNldC5oCisgICAgSW5k
ZXhTcGFyc2VTZXQuaAorICAgIEluZGV4ZWRDb250YWluZXJJdGVyYXRvci5oCiAgICAgSXRlcmF0
b3JBZGFwdG9ycy5oCiAgICAgSXRlcmF0b3JSYW5nZS5oCiAgICAgTGlzdEhhc2hTZXQuaApkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvRmFzdEJpdFZlY3Rvci5oIGIvU291cmNlL1dURi93dGYv
RmFzdEJpdFZlY3Rvci5oCmluZGV4IDk4ZmZmNWNmNzM1M2U2YmM2N2RhNWM1NTk0MGNjY2U0ZTRi
MTU2ZDAuLmZmMDBiN2I1NGQ0YTBjZmY0YmVmN2QwMzg1NGRlNmI5MGNlMWRiOTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL0Zhc3RCaXRWZWN0b3IuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9G
YXN0Qml0VmVjdG9yLmgKQEAgLTIzLDggKzIzLDcgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAK
LSNpZm5kZWYgRmFzdEJpdFZlY3Rvcl9oCi0jZGVmaW5lIEZhc3RCaXRWZWN0b3JfaAorI3ByYWdt
YSBvbmNlCiAKICNpbmNsdWRlIDxzdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5o
PgpAQCAtMzYsMTIgKzM1LDE0IEBAIGNsYXNzIFByaW50U3RyZWFtOwogCiBjbGFzcyBGYXN0Qml0
VmVjdG9yIHsKIHB1YmxpYzoKLSAgICBGYXN0Qml0VmVjdG9yKCkKLSAgICAgICAgOiBtX2FycmF5
KDApCi0gICAgICAgICwgbV9udW1CaXRzKDApCisgICAgRmFzdEJpdFZlY3RvcigpID0gZGVmYXVs
dDsKKworICAgIEZhc3RCaXRWZWN0b3IoRmFzdEJpdFZlY3RvciYmIG90aGVyKQorICAgICAgICA6
IG1fYXJyYXkoc3RkOjpleGNoYW5nZShvdGhlci5tX2FycmF5LCBudWxscHRyKSkKKyAgICAgICAg
LCBtX251bUJpdHMoc3RkOjpleGNoYW5nZShvdGhlci5tX251bUJpdHMsIDApKQogICAgIHsKICAg
ICB9Ci0gICAgCisKICAgICBGYXN0Qml0VmVjdG9yKGNvbnN0IEZhc3RCaXRWZWN0b3ImIG90aGVy
KQogICAgICAgICA6IG1fYXJyYXkoMCkKICAgICAgICAgLCBtX251bUJpdHMoMCkKQEAgLTIwMiwx
MyArMjAzLDEwIEBAIGNsYXNzIEZhc3RCaXRWZWN0b3IgewogICAgIHN0YXRpYyBzaXplX3QgYXJy
YXlMZW5ndGgoc2l6ZV90IG51bUJpdHMpIHsgcmV0dXJuIChudW1CaXRzICsgMzEpID4+IDU7IH0K
ICAgICBzaXplX3QgYXJyYXlMZW5ndGgoKSBjb25zdCB7IHJldHVybiBhcnJheUxlbmd0aChtX251
bUJpdHMpOyB9CiAgICAgCi0gICAgdWludDMyX3QqIG1fYXJyYXk7IC8vIE5vLCB0aGlzIGNhbid0
IGJlIGFuIHN0ZDo6dW5pcXVlX3B0cjx1aW50MzJfdFtdPi4KLSAgICBzaXplX3QgbV9udW1CaXRz
OworICAgIHVpbnQzMl90KiBtX2FycmF5IHsgbnVsbHB0ciB9OyAvLyBObywgdGhpcyBjYW4ndCBi
ZSBhbiBzdGQ6OnVuaXF1ZV9wdHI8dWludDMyX3RbXT4uCisgICAgc2l6ZV90IG1fbnVtQml0cyB7
IDAgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdURgogCiB1c2luZyBXVEY6OkZhc3RCaXRWZWN0
b3I7Ci0KLSNlbmRpZiAvLyBGYXN0Qml0VmVjdG9yX2gKLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvSW5kZXhNYXAuaCBiL1NvdXJjZS9XVEYvd3RmL0luZGV4TWFwLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MDJkNjEwMTdhNDE1YzQ3MzkxNmFiODE2NjhjMTZiMDBiZGU1MjQyYgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XVEYvd3RmL0luZGV4TWFwLmgKQEAgLTAsMCArMSw4MiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNwcmFnbWEgb25jZQor
CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV1RGIHsKKworLy8gVGhpcyBp
cyBhIG1hcCBmb3Iga2V5cyB0aGF0IGhhdmUgYW4gaW5kZXgoKS4gSXQncyBzdXBlciBlZmZpY2ll
bnQgZm9yIEJhc2ljQmxvY2tzLiBJdCdzIG9ubHkKKy8vIGVmZmljaWVudCBmb3IgVmFsdWVzIGlm
IHlvdSBkb24ndCBjcmVhdGUgdG9vIG1hbnkgb2YgdGhlc2UgbWFwcywgc2luY2UgVmFsdWVzIGNh
biBoYXZlIHZlcnkKKy8vIHNwYXJzZSBpbmRpY2VzIGFuZCB0aGVyZSBhcmUgYSBsb3Qgb2YgVmFs
dWVzLgorCit0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlPgorY2xhc3MgSW5k
ZXhNYXAgeworcHVibGljOgorICAgIGV4cGxpY2l0IEluZGV4TWFwKHNpemVfdCBzaXplID0gMCkK
KyAgICB7CisgICAgICAgIG1fdmVjdG9yLmZpbGwoVmFsdWUoKSwgc2l6ZSk7CisgICAgfQorCisg
ICAgdm9pZCByZXNpemUoc2l6ZV90IHNpemUpCisgICAgeworICAgICAgICBtX3ZlY3Rvci5maWxs
KFZhbHVlKCksIHNpemUpOworICAgIH0KKworICAgIHZvaWQgY2xlYXIoKQorICAgIHsKKyAgICAg
ICAgbV92ZWN0b3IuZmlsbChWYWx1ZSgpLCBtX3ZlY3Rvci5zaXplKCkpOworICAgIH0KKworICAg
IHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV92ZWN0b3Iuc2l6ZSgpOyB9CisKKyAgICBW
YWx1ZSYgb3BlcmF0b3JbXShzaXplX3QgaW5kZXgpCisgICAgeworICAgICAgICByZXR1cm4gbV92
ZWN0b3JbaW5kZXhdOworICAgIH0KKworICAgIGNvbnN0IFZhbHVlJiBvcGVyYXRvcltdKHNpemVf
dCBpbmRleCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX3ZlY3RvcltpbmRleF07Cisg
ICAgfQorICAgIAorICAgIFZhbHVlJiBvcGVyYXRvcltdKEtleSoga2V5KQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIG1fdmVjdG9yW2tleS0+aW5kZXgoKV07CisgICAgfQorICAgIAorICAgIGNvbnN0
IFZhbHVlJiBvcGVyYXRvcltdKEtleSoga2V5KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJu
IG1fdmVjdG9yW2tleS0+aW5kZXgoKV07CisgICAgfQorCitwcml2YXRlOgorICAgIFZlY3RvcjxW
YWx1ZT4gbV92ZWN0b3I7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXVEYKKwordXNpbmcgV1RGOjpJ
bmRleE1hcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0luZGV4U2V0LmggYi9Tb3VyY2Uv
V1RGL3d0Zi9JbmRleFNldC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYxYmQwNGYyZDE1YWI2Y2QyYTY5Y2M0NDVi
OGQ3MzZiMjJjMDViNjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9JbmRleFNl
dC5oCkBAIC0wLDAgKzEsMTYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvQml0VmVjdG9y
Lmg+CisjaW5jbHVkZSA8d3RmL0NvbW1hUHJpbnRlci5oPgorCituYW1lc3BhY2UgV1RGIHsKKwor
Ly8gVGhpcyBpcyBhIHNldCBmb3IgdGhpbmdzIHRoYXQgaGF2ZSBhbiBpbmRleCgpLiBJdCdzIHN1
cGVyIGVmZmljaWVudCBmb3IgQmFzaWNCbG9ja3MuIEl0J3Mgb25seQorLy8gZWZmaWNpZW50IGZv
ciBWYWx1ZXMgaWYgeW91IGRvbid0IGNyZWF0ZSB0b28gbWFueSBvZiB0aGVzZSBzZXRzLCBzaW5j
ZSBWYWx1ZXMgY2FuIGhhdmUgdmVyeSBzcGFyc2UKKy8vIGluZGljZXMgYW5kIHRoZXJlIGFyZSBh
IGxvdCBvZiBWYWx1ZXMuCisKKy8vIElmIHlvdSB3YW50IGEgc2V0IG9mIEJhc2ljQmxvY2tzLCB5
b3UgZG8gSW5kZXhTZXQ8QmFzaWNCbG9jaz4uIFNvLCBUID0gQmFzaWNCbG9jay4KK3RlbXBsYXRl
PHR5cGVuYW1lIFQ+CitjbGFzcyBJbmRleFNldCB7CitwdWJsaWM6CisgICAgSW5kZXhTZXQoKQor
ICAgIHsKKyAgICB9CisKKyAgICBib29sIGFkZChUKiB2YWx1ZSkKKyAgICB7CisgICAgICAgIHJl
dHVybiAhbV9zZXQuc2V0KHZhbHVlLT5pbmRleCgpKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBJdGVyYWJsZT4KKyAgICBib29sIGFkZEFsbChjb25zdCBJdGVyYWJsZSYgaXRlcmFi
bGUpCisgICAgeworICAgICAgICBib29sIHJlc3VsdCA9IGZhbHNlOworICAgICAgICBmb3IgKFQq
IHZhbHVlIDogaXRlcmFibGUpCisgICAgICAgICAgICByZXN1bHQgfD0gYWRkKHZhbHVlKTsKKyAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICBib29sIHJlbW92ZShUKiB2YWx1ZSkK
KyAgICB7CisgICAgICAgIHJldHVybiBtX3NldC5jbGVhcih2YWx1ZS0+aW5kZXgoKSk7CisgICAg
fQorCisgICAgYm9vbCBjb250YWlucyhUKiB2YWx1ZSkgY29uc3QKKyAgICB7CisgICAgICAgIGlm
ICghdmFsdWUpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBtX3Nl
dC5nZXQodmFsdWUtPmluZGV4KCkpOworICAgIH0KKworICAgIHNpemVfdCBzaXplKCkgY29uc3QK
KyAgICB7CisgICAgICAgIHJldHVybiBtX3NldC5iaXRDb3VudCgpOworICAgIH0KKworICAgIGJv
b2wgaXNFbXB0eSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gIXNpemUoKTsKKyAgICB9
CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDb2xsZWN0aW9uVHlwZT4KKyAgICBjbGFzcyBJdGVy
YWJsZSB7CisgICAgcHVibGljOgorICAgICAgICBJdGVyYWJsZShjb25zdCBDb2xsZWN0aW9uVHlw
ZSYgY29sbGVjdGlvbiwgY29uc3QgQml0VmVjdG9yJiBzZXQpCisgICAgICAgICAgICA6IG1fY29s
bGVjdGlvbihjb2xsZWN0aW9uKQorICAgICAgICAgICAgLCBtX3NldChzZXQpCisgICAgICAgIHsK
KyAgICAgICAgfQorCisgICAgICAgIGNsYXNzIGl0ZXJhdG9yIHsKKyAgICAgICAgcHVibGljOgor
ICAgICAgICAgICAgaXRlcmF0b3IoKQorICAgICAgICAgICAgICAgIDogbV9jb2xsZWN0aW9uKG51
bGxwdHIpCisgICAgICAgICAgICB7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGl0ZXJh
dG9yKGNvbnN0IENvbGxlY3Rpb25UeXBlJiBjb2xsZWN0aW9uLCBCaXRWZWN0b3I6Oml0ZXJhdG9y
IGl0ZXIpCisgICAgICAgICAgICAgICAgOiBtX2NvbGxlY3Rpb24oJmNvbGxlY3Rpb24pCisgICAg
ICAgICAgICAgICAgLCBtX2l0ZXIoaXRlcikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgVCogb3BlcmF0b3IqKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gbV9jb2xsZWN0aW9uLT5hdCgqbV9pdGVyKTsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgaXRlcmF0b3ImIG9wZXJhdG9yKysoKQorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgICsrbV9pdGVyOworICAgICAgICAgICAgICAgIHJldHVybiAqdGhpczsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IGl0ZXJhdG9yJiBv
dGhlcikgY29uc3QKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gbV9pdGVy
ID09IG90aGVyLm1faXRlcjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgYm9vbCBvcGVy
YXRvciE9KGNvbnN0IGl0ZXJhdG9yJiBvdGhlcikgY29uc3QKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgcHJpdmF0ZToKKyAgICAgICAgICAgIGNvbnN0IENvbGxlY3Rpb25UeXBlKiBtX2NvbGxl
Y3Rpb247CisgICAgICAgICAgICBCaXRWZWN0b3I6Oml0ZXJhdG9yIG1faXRlcjsKKyAgICAgICAg
fTsKKworICAgICAgICBpdGVyYXRvciBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIGl0ZXJhdG9yKG1f
Y29sbGVjdGlvbiwgbV9zZXQuYmVnaW4oKSk7IH0KKyAgICAgICAgaXRlcmF0b3IgZW5kKCkgY29u
c3QgeyByZXR1cm4gaXRlcmF0b3IobV9jb2xsZWN0aW9uLCBtX3NldC5lbmQoKSk7IH0KKworICAg
IHByaXZhdGU6CisgICAgICAgIGNvbnN0IENvbGxlY3Rpb25UeXBlJiBtX2NvbGxlY3Rpb247Cisg
ICAgICAgIGNvbnN0IEJpdFZlY3RvciYgbV9zZXQ7CisgICAgfTsKKworICAgIC8vIEZvciBiYXNp
YyBibG9ja3MsIHlvdSBkbzoKKyAgICAvLyBpbmRleFNldC52YWx1ZXMocHJvY2VkdXJlKTsKKyAg
ICAvLworICAgIC8vIEZvciB2YWx1ZXMsIHlvdSBkbzoKKyAgICAvLyBpbmRleFNldC52YWx1ZXMo
cHJvY2VkdXJlLnZhbHVlcygpKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDb2xsZWN0aW9uVHlw
ZT4KKyAgICBJdGVyYWJsZTxDb2xsZWN0aW9uVHlwZT4gdmFsdWVzKGNvbnN0IENvbGxlY3Rpb25U
eXBlJiBjb2xsZWN0aW9uKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIEl0ZXJhYmxlPENv
bGxlY3Rpb25UeXBlPihjb2xsZWN0aW9uLCBpbmRpY2VzKCkpOworICAgIH0KKworICAgIGNvbnN0
IEJpdFZlY3RvciYgaW5kaWNlcygpIGNvbnN0IHsgcmV0dXJuIG1fc2V0OyB9CisKKyAgICB2b2lk
IGR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKKyAgICB7CisgICAgICAgIENvbW1hUHJpbnRl
ciBjb21tYTsKKyAgICAgICAgZm9yIChzaXplX3QgaW5kZXggOiBpbmRpY2VzKCkpCisgICAgICAg
ICAgICBvdXQucHJpbnQoY29tbWEsIFQ6OmR1bXBQcmVmaXgsIGluZGV4KTsKKyAgICB9CisKK3By
aXZhdGU6CisgICAgQml0VmVjdG9yIG1fc2V0OworfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisK
K3VzaW5nIFdURjo6SW5kZXhTZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9JbmRleGVk
Q29udGFpbmVySXRlcmF0b3IuaCBiL1NvdXJjZS9XVEYvd3RmL0luZGV4ZWRDb250YWluZXJJdGVy
YXRvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjNlOWI5ZTM3YTEyNDdkOTA3YmU4MzBjOWQyMDEyZjc3YTFiNzM3
NzEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9JbmRleGVkQ29udGFpbmVySXRl
cmF0b3IuaApAQCAtMCwwICsxLDgxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHR5cGVfdHJhaXRz
PgorCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8Y2xhc3MgQ29udGFpbmVyPgorY2xhc3Mg
SW5kZXhlZENvbnRhaW5lckl0ZXJhdG9yIHsKK3B1YmxpYzoKKyAgICBJbmRleGVkQ29udGFpbmVy
SXRlcmF0b3IoKQorICAgICAgICA6IG1fY29udGFpbmVyKG51bGxwdHIpCisgICAgICAgICwgbV9p
bmRleCgwKQorICAgIHsKKyAgICB9CisKKyAgICBJbmRleGVkQ29udGFpbmVySXRlcmF0b3IoY29u
c3QgQ29udGFpbmVyJiBjb250YWluZXIsIHVuc2lnbmVkIGluZGV4KQorICAgICAgICA6IG1fY29u
dGFpbmVyKCZjb250YWluZXIpCisgICAgICAgICwgbV9pbmRleChmaW5kTmV4dChpbmRleCkpCisg
ICAgeworICAgIH0KKworICAgIGF1dG8gb3BlcmF0b3IqKCkgLT4gdHlwZW5hbWUgc3RkOjpyZXN1
bHRfb2Y8ZGVjbHR5cGUoJkNvbnRhaW5lcjo6YXQpKGNvbnN0IENvbnRhaW5lciwgdW5zaWduZWQp
Pjo6dHlwZQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fY29udGFpbmVyLT5hdChtX2luZGV4KTsK
KyAgICB9CisKKyAgICBJbmRleGVkQ29udGFpbmVySXRlcmF0b3ImIG9wZXJhdG9yKysoKQorICAg
IHsKKyAgICAgICAgbV9pbmRleCA9IGZpbmROZXh0KG1faW5kZXggKyAxKTsKKyAgICAgICAgcmV0
dXJuICp0aGlzOworICAgIH0KKworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBJbmRleGVkQ29u
dGFpbmVySXRlcmF0b3ImIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fY29u
dGFpbmVyID09IG90aGVyLm1fY29udGFpbmVyKTsKKyAgICAgICAgcmV0dXJuIG1faW5kZXggPT0g
b3RoZXIubV9pbmRleDsKKyAgICB9CisKKyAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgSW5kZXhl
ZENvbnRhaW5lckl0ZXJhdG9yJiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiAh
KCp0aGlzID09IG90aGVyKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgdW5zaWduZWQgZmluZE5l
eHQodW5zaWduZWQgaW5kZXgpCisgICAgeworICAgICAgICB3aGlsZSAoaW5kZXggPCBtX2NvbnRh
aW5lci0+c2l6ZSgpICYmICFtX2NvbnRhaW5lci0+YXQoaW5kZXgpKQorICAgICAgICAgICAgaW5k
ZXgrKzsKKyAgICAgICAgcmV0dXJuIGluZGV4OworICAgIH0KKworICAgIGNvbnN0IENvbnRhaW5l
ciogbV9jb250YWluZXI7CisgICAgdW5zaWduZWQgbV9pbmRleDsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdURgpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxv
ZwppbmRleCA1ZDI4Njg1NGQ3NjQ0ZjFmYzI4NTI2Y2Y0NGM4Y2U0NzI3MmU4ZTA1Li5jMGJiYzli
MjAxZTY2ZDNlNTg2MzQ2MjhlZTMzNmQxYTBmODRmYmFmIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0No
YW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDE2LTA4
LTI0ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtE
RkddW0ZUTF0gSW1wbGVtZW50IEVTNiBHZW5lcmF0b3JzIGluIERGRyAvIEZUTAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUyNzIzCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzdHJlc3MvZ2VuZXJhdG9y
LWZpYi1mdGwtYW5kLWFycmF5LmpzOiBBZGRlZC4KKyAgICAgICAgKGZpYik6CisgICAgICAgICog
c3RyZXNzL2dlbmVyYXRvci1maWItZnRsLWFuZC1vYmplY3QuanM6IEFkZGVkLgorICAgICAgICAo
ZmliKToKKyAgICAgICAgKiBzdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwtYW5kLXN0cmluZy5qczog
QWRkZWQuCisgICAgICAgIChmaWIpOgorICAgICAgICAqIHN0cmVzcy9nZW5lcmF0b3ItZmliLWZ0
bC5qczogQWRkZWQuCisgICAgICAgIChmaWIpOgorICAgICAgICAqIHN0cmVzcy9nZW5lcmF0b3It
ZnJhbWUtZW1wdHkuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkVGhyb3cpOgorICAgICAgICAo
c2hvdWxkVGhyb3cuZmliKToKKyAgICAgICAgKiBzdHJlc3MvZ2VuZXJhdG9yLXJlZHVjZWQtc2F2
ZS1wb2ludC1wdXQtdG8tc2NvcGUuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAg
ICAgICAoZ2VuKToKKyAgICAgICAgKiBzdHJlc3MvZ2VuZXJhdG9yLXRyYW5zZmVyLXJlZ2lzdGVy
LWJleW9uZC1tdXRpcGxlLXlpZWxkcy5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6Cisg
ICAgICAgIChnZW4pOgorCiAyMDE2LTA4LTIyICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5j
b20+CiAKICAgICAgICAgQnV0dGVyZmxpZXMgc2hvdWxkIGJlIGFsbG9jYXRlZCBpbiBBdXhpbGlh
cnkgTWFya2VkU3BhY2UgaW5zdGVhZCBvZiBDb3BpZWRTcGFjZSBhbmQgd2Ugc2hvdWxkIHJld3Jp
dGUgYXMgbXVjaCBvZiB0aGUgR0MgYXMgbmVlZGVkIHRvIG1ha2UgdGhpcyBub3QgYSByZWdyZXNz
aW9uCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQtYXJy
YXkuanMgYi9KU1Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQtYXJyYXkuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZmU5Mzk4MTJmZGJhZWM2YjgzMmJmZDAwZjIxNTNkZWY4NGJiNzU5MgotLS0gL2Rl
di9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLWFuZC1hcnJheS5q
cwpAQCAtMCwwICsxLDIzIEBACisoZnVuY3Rpb24gKCkgeworICAgIGZ1bmN0aW9uICpmaWIoKQor
ICAgIHsKKyAgICAgICAgbGV0IGEgPSAxOworICAgICAgICBsZXQgYiA9IDE7CisgICAgICAgIGxl
dCBjID0gWyAwIF07CisgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICBjWzBdID0g
YTsKKyAgICAgICAgICAgIHlpZWxkIGM7CisgICAgICAgICAgICBbYSwgYl0gPSBbYiwgYSArIGJd
OworICAgICAgICB9CisgICAgfQorCisgICAgbGV0IHZhbHVlID0gMDsKKyAgICBmb3IgKGxldCBp
ID0gMDsgaSA8IDFlNDsgKytpKSB7CisgICAgICAgIGxldCBmID0gZmliKCk7CisgICAgICAgIGZv
ciAobGV0IGkgPSAwOyBpIDwgMTAwOyArK2kpIHsKKyAgICAgICAgICAgIHZhbHVlID0gZi5uZXh0
KCkudmFsdWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHZhbHVlWzBdICE9PSAzNTQyMjQ4NDgx
NzkyNjIwMDAwMDApCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCB2YWx1ZToke3Jl
c3VsdH1gKTsKKyAgICB9Cit9KCkpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvZ2VuZXJh
dG9yLWZpYi1mdGwtYW5kLW9iamVjdC5qcyBiL0pTVGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWIt
ZnRsLWFuZC1vYmplY3QuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjY3MzQwZjJlYTRjNzQzOGEyZDIwOWFhNDBk
MDY3N2U0YWI3ZDNmYgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2dlbmVyYXRv
ci1maWItZnRsLWFuZC1vYmplY3QuanMKQEAgLTAsMCArMSwyMyBAQAorKGZ1bmN0aW9uICgpIHsK
KyAgICBmdW5jdGlvbiAqZmliKCkKKyAgICB7CisgICAgICAgIGxldCBhID0gMTsKKyAgICAgICAg
bGV0IGIgPSAxOworICAgICAgICBsZXQgYyA9IHsgZmliOiAwIH07CisgICAgICAgIHdoaWxlICh0
cnVlKSB7CisgICAgICAgICAgICBjLmZpYiA9IGE7CisgICAgICAgICAgICB5aWVsZCBjOworICAg
ICAgICAgICAgW2EsIGJdID0gW2IsIGEgKyBiXTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGxl
dCB2YWx1ZSA9IDA7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxZTQ7ICsraSkgeworICAgICAg
ICBsZXQgZiA9IGZpYigpOworICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDsgKytpKSB7
CisgICAgICAgICAgICB2YWx1ZSA9IGYubmV4dCgpLnZhbHVlOworICAgICAgICB9CisgICAgICAg
IGlmICh2YWx1ZS5maWIgIT09IDM1NDIyNDg0ODE3OTI2MjAwMDAwMCkKKyAgICAgICAgICAgIHRo
cm93IG5ldyBFcnJvcihgYmFkIHZhbHVlOiR7cmVzdWx0fWApOworICAgIH0KK30oKSk7CmRpZmYg
LS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQtc3RyaW5nLmpzIGIv
SlNUZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwtYW5kLXN0cmluZy5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40MzhhZTZhYjMzNDcwNDY4MjI4NDlmNDMwMDRlYTVjNDAzZWVkYTI4Ci0tLSAvZGV2L251bGwK
KysrIGIvSlNUZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwtYW5kLXN0cmluZy5qcwpAQCAt
MCwwICsxLDIyIEBACisoZnVuY3Rpb24gKCkgeworICAgIGZ1bmN0aW9uICpmaWIoKQorICAgIHsK
KyAgICAgICAgbGV0IGEgPSAxOworICAgICAgICBsZXQgYiA9IDE7CisgICAgICAgIGxldCBjID0g
IlJlc3VsdCEgIjsKKyAgICAgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgICAgIHlpZWxkIGMg
KyBhOworICAgICAgICAgICAgW2EsIGJdID0gW2IsIGEgKyBiXTsKKyAgICAgICAgfQorICAgIH0K
KworICAgIGxldCB2YWx1ZSA9IDA7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxZTQ7ICsraSkg
eworICAgICAgICBsZXQgZiA9IGZpYigpOworICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEw
MDsgKytpKSB7CisgICAgICAgICAgICB2YWx1ZSA9IGYubmV4dCgpLnZhbHVlOworICAgICAgICB9
CisgICAgICAgIGlmICh2YWx1ZSAhPT0gYFJlc3VsdCEgMzU0MjI0ODQ4MTc5MjYyMDAwMDAwYCkK
KyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIHZhbHVlOiR7cmVzdWx0fWApOworICAg
IH0KK30oKSk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC5q
cyBiL0pTVGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM0MGUz
M2RiYzg2OGJlYTdhODkzYzllYzE2Yjc3OWVjMjZiZGIxOWMKLS0tIC9kZXYvbnVsbAorKysgYi9K
U1Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC5qcwpAQCAtMCwwICsxLDIxIEBACisoZnVu
Y3Rpb24gKCkgeworICAgIGZ1bmN0aW9uICpmaWIoKQorICAgIHsKKyAgICAgICAgbGV0IGEgPSAx
OworICAgICAgICBsZXQgYiA9IDE7CisgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAg
ICB5aWVsZCBhOworICAgICAgICAgICAgW2EsIGJdID0gW2IsIGEgKyBiXTsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIGxldCB2YWx1ZSA9IDA7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxZTQ7
ICsraSkgeworICAgICAgICBsZXQgZiA9IGZpYigpOworICAgICAgICBmb3IgKGxldCBpID0gMDsg
aSA8IDEwMDsgKytpKSB7CisgICAgICAgICAgICB2YWx1ZSA9IGYubmV4dCgpLnZhbHVlOworICAg
ICAgICB9CisgICAgICAgIGlmICh2YWx1ZSAhPT0gMzU0MjI0ODQ4MTc5MjYyMDAwMDAwKQorICAg
ICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgdmFsdWU6JHtyZXN1bHR9YCk7CisgICAgfQor
fSgpKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2dlbmVyYXRvci1mcmFtZS1lbXB0eS5q
cyBiL0pTVGVzdHMvc3RyZXNzL2dlbmVyYXRvci1mcmFtZS1lbXB0eS5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41
OWU4ODU1YmZhYzNjNTZkZjkyNmFiZDQyOGMwMTNjMzM0MTYyNzQ2Ci0tLSAvZGV2L251bGwKKysr
IGIvSlNUZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZyYW1lLWVtcHR5LmpzCkBAIC0wLDAgKzEsMzQg
QEAKK2Z1bmN0aW9uIHNob3VsZFRocm93KGZ1bmMsIGVycm9yTWVzc2FnZSkgeworICAgIHZhciBl
cnJvclRocm93biA9IGZhbHNlOworICAgIHZhciBlcnJvciA9IG51bGw7CisgICAgdHJ5IHsKKyAg
ICAgICAgZnVuYygpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgZXJyb3JUaHJvd24gPSB0
cnVlOworICAgICAgICBlcnJvciA9IGU7CisgICAgfQorICAgIGlmICghZXJyb3JUaHJvd24pCisg
ICAgICAgIHRocm93IG5ldyBFcnJvcignbm90IHRocm93bicpOworICAgIGlmIChTdHJpbmcoZXJy
b3IpICE9PSBlcnJvck1lc3NhZ2UpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIGVycm9y
OiAke1N0cmluZyhlcnJvcil9YCk7Cit9CisKK3Nob3VsZFRocm93KGZ1bmN0aW9uICgpIHsKKyAg
ICBmdW5jdGlvbiAqZmliKGZsYWcpCisgICAgeworICAgICAgICBsZXQgYSA9IDE7CisgICAgICAg
IGxldCBiID0gMTsKKyAgICAgICAgeWllbGQgNDI7CisgICAgICAgIGlmIChmbGFnKQorICAgICAg
ICAgICAgcmV0dXJuIGM7CisgICAgICAgIGxldCBjID0gNTAwOworICAgIH0KKworICAgIGxldCB2
YWx1ZSA9IDA7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxZTQ7ICsraSkgeworICAgICAgICBm
b3IgKGxldCB2IG9mIGZpYihmYWxzZSkpIHsKKyAgICAgICAgfQorICAgIH0KKyAgICBmb3IgKGxl
dCB2IG9mIGZpYih0cnVlKSkgeworICAgIH0KK30sIGBSZWZlcmVuY2VFcnJvcjogQ2Fubm90IGFj
Y2VzcyB1bmluaXRpYWxpemVkIHZhcmlhYmxlLmApOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJl
c3MvZ2VuZXJhdG9yLXJlZHVjZWQtc2F2ZS1wb2ludC1wdXQtdG8tc2NvcGUuanMgYi9KU1Rlc3Rz
L3N0cmVzcy9nZW5lcmF0b3ItcmVkdWNlZC1zYXZlLXBvaW50LXB1dC10by1zY29wZS5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5jMGM3NWZhNDkxNDNjMTdiZTE0ZjMyODFlM2Y2NTQzNGYzNTEzOWU4Ci0tLSAvZGV2
L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXJlZHVjZWQtc2F2ZS1wb2ludC1w
dXQtdG8tc2NvcGUuanMKQEAgLTAsMCArMSwyOCBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFs
LCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoYGJhZCB2YWx1ZTogJHtTdHJpbmcoYWN0dWFsKX1gKTsKK30KKworZnVuY3Rp
b24gZXJyb3IoKQoreworICAgIHRocm93ICJvayI7Cit9CisKK2Z1bmN0aW9uKiBnZW4oKQorewor
ICAgIHZhciB2YWx1ZSA9IDQyOworICAgIHRyeSB7CisgICAgICAgIHlpZWxkIDMwMDsKKyAgICAg
ICAgdmFsdWUgPSA1MDA7CisgICAgICAgIGVycm9yKCk7CisgICAgfSBjYXRjaCAoZSkgeworICAg
ICAgICB5aWVsZCA0MjsKKyAgICAgICAgcmV0dXJuIHZhbHVlOworICAgIH0KKyAgICByZXR1cm4g
MjAwOworfQorCit2YXIgZyA9IGdlbigpOworc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIDMwMCk7
CitzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgNDIpOworc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUs
IDUwMCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItdHJhbnNmZXItcmVn
aXN0ZXItYmV5b25kLW11dGlwbGUteWllbGRzLmpzIGIvSlNUZXN0cy9zdHJlc3MvZ2VuZXJhdG9y
LXRyYW5zZmVyLXJlZ2lzdGVyLWJleW9uZC1tdXRpcGxlLXlpZWxkcy5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5m
ZTIwOGY1ODEyOTZmOWFlMDhhNmJmYjM5OGI0ODIyNTc0MmQ2Yjc4Ci0tLSAvZGV2L251bGwKKysr
IGIvSlNUZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXRyYW5zZmVyLXJlZ2lzdGVyLWJleW9uZC1tdXRp
cGxlLXlpZWxkcy5qcwpAQCAtMCwwICsxLDE4IEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWws
IGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93
IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKworCitmdW5jdGlvbiAqZ2Vu
KCkKK3sKKyAgICB2YXIgdGVzdCA9IDQyOworICAgIHlpZWxkIDMyOworICAgIHlpZWxkIDMzOwor
ICAgIHlpZWxkIHRlc3Q7Cit9CisKK3ZhciBnID0gZ2VuKCk7CitzaG91bGRCZShnLm5leHQoKS52
YWx1ZSwgMzIpOworc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIDMzKTsKK3Nob3VsZEJlKGcubmV4
dCgpLnZhbHVlLCA0Mik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>286882</attachid>
            <date>2016-08-24 12:55:06 -0700</date>
            <delta_ts>2016-08-24 14:51:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-152723-20160825045305.patch</filename>
            <type>text/plain</type>
            <size>190972</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA0OTIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
NDE0ZDY0OTliYThmOGM2YTc4YWQ0YzdjOGFiZmU5YjhmNDliZTk0Li45ODQ1ZjdkNTZjZmUyMDU0
ZjRmOGFlNDQzM2QxY2VjNWUyZjdmOGJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSwyMzMgQEAKIDIwMTYtMDgtMjQgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CiAKKyAgICAgICAgW0RGR11bRlRMXSBJbXBsZW1lbnQgRVM2IEdlbmVyYXRvcnMgaW4g
REZHIC8gRlRMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNTI3MjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBGSVhNRTogVGhpcyBkb2N1bWVudCBpcyBvdXQgb2YgZGF0ZS4gSSdsbCB1cGRhdGUgaXQuLi4K
KworICAgICAgICBUaGlzIHBhdGNoIGludHJvZHVjZXMgREZHIGFuZCBGVEwgc3VwcG9ydCBmb3Ig
RVM2IGdlbmVyYXRvcnMuCisgICAgICAgIEVTNiBnZW5lcmF0b3IgaXMgY29tcGlsZWQgYnkgdGhl
IEJ5dGVjb2RlR2VuZXJhdG9yLiBCdXQgYXQgdGhlIGxhc3QgcGhhc2UsIEJ5dGVjb2RlR2VuZXJh
dG9yIHBlcmZvcm1zICJnZW5lcmF0b3JpZmljYXRpb24iIG9udG8gdGhlIHVubGlua2VkIGNvZGUu
CisgICAgICAgIEluIEJ5dGVjb2RlR2VuZXJhdG9yIHBoYXNlLCB3ZSBpbnNlcnRlZCBzZXZlcmFs
IHNwZWNpYWwgbWFya2VycyBmb3IgdGhlIGdlbmVyYXRvcnMsIG9wX3NhdmUgYW5kIG9wX3Jlc3Vt
ZS4KKyAgICAgICAgVGhlIG9wX3NhdmUsIG9wX3Jlc3VtZSwgYW5kIHRoZSBtZXJnZSBwb2ludCBi
bG9jayBhcmUgY29ubmVjdGVkIGFzIGZvbGxvd3MuCisKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBvcF9yZXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBeCisgICAgICAgIGVudHJ5IC0+IGdlbmVyYXRvciBzd2l0Y2ggLS0tLT4gb3Bf
c2F2ZSAtPiBtZXJnZSBwb2ludCAtPiAuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgfCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBeCisgICAgICAgICAgICAgICAgICAgICAgICstLS0t
LS0tLS0tLS0tLT4gb3BfcmVzdW1lIC0tLS0tKworCisgICAgICAgIEluIHRoZSBnZW5lcmF0b3Jp
ZmljYXRpb24gcGhhc2UsIHdlIHR1cm4gb3V0IHdoaWNoIHZhcmlhYmxlcyBzaG91bGQgYmUgc2F2
ZWQgYW5kIHJlc3VtZWQgYXQgZWFjaCBvcF9zYXZlIGFuZCBvcF9yZXN1bWUsIGFuZCBjb252ZXJ0
IHRoZXNlIGJ5dGVjb2RlcworICAgICAgICB0byB0aGUgc2VxdWVuY2VzIG9mIHRoZSBnZXRfZnJv
bV9zY29wZSBhbmQgcHV0X3RvX3Njb3BlLiBUaGUgcmVnaXN0ZXJzIGFyZSBzYXZlZCBhbmQgcmVz
dW1lZCBvdmVyIHRoZSBnZW5lcmF0b3IncyBuZXh0KCkgY2FsbHMgYnkgdXNpbmcgdGhpcyBzcGVj
aWFsCisgICAgICAgIGdlbmVyYXRvciBmcmFtZSBzY29wZS4KKworICAgICAgICBJbiB0aGUgZ2Vu
ZXJhdG9yaWZpY2F0aW9uIHBoYXNlLAorCisgICAgICAgIDEuIFdlIGNvbnN0cnVjdCB0aGUgQnl0
ZWNvZGVHcmFwaCBmcm9tIHRoZSB1bmxpbmtlZCBpbnN0cnVjdGlvbnMuIFRoaXMgY29uc3RydWN0
cyB0aGUgYmFzaWMgYmxvY2tzLCBhbmQgaXQgaXMgdXNlZCBpbiB0aGUgc3Vic2VxdWVudCBhbmFs
eXNpcy4KKyAgICAgICAgMi4gV2UgcGVyZm9ybSB0aGUgYW5hbHlzaXMgb250byB0aGUgdW5saW5r
ZWQgY29kZS4gV2UgaGF2ZSAzIGFuYWx5c2lzOiB0aGUgbGl2ZW5lc3MgYW5hbHlzaXMsIHRoZSBz
YXZlZCB2YXJpYWJsZXMgYW5hbHlzaXMsIGFuZCB0aGUgcmVzdW1lZCB2YXJpYWJsZXMgYW5hbHlz
aXMuCisgICAgICAgICAgIEZpcnN0LCBpbiB0aGUgbGl2ZW5lc3MgYW5hbHlzaXMsIHdlIGV4dHJh
Y3QgdGhlIGxpdmUgdmFyaWFibGVzIGF0IGVhY2ggbWVyZ2UgcG9pbnQuIFRoZXNlIHZhcmlhYmxl
cyBzaG91bGQgYmUgY29uc2lkZXJlZCBhcyB0aGUgY29uc2VydmF0aXZlIHJlZ2lzdGVycworICAg
ICAgICAgICB0byBiZSBzYXZlZCBhbmQgcmVzdW1lZCBhdCBlYWNoIHBvaW50LgorICAgICAgICAz
LiBXZSBpbnNlcnQgdGhlIGdldF9mcm9tX3Njb3BlIGFuZCBwdXRfdG9fc2NvcGUgYXQgZWFjaCBv
cF9zYXZlIGFuZCBvcF9yZXN1bWUuIFdoaWNoIHJlZ2lzdGVycyBzaG91bGQgYmUgc2F2ZWQgYW5k
IHJlc3VtZWQgaXMgb2ZmZXJlZCBieSAoMikuCisgICAgICAgICAgIFRoZW4sIGNsaXAgdGhlIG9w
X3NhdmUgYW5kIG9wX3Jlc3VtZSB0aGVtc2VsdmVzLiBUaGV5IGFyZSBleGVjdXRlZCBpbiBhIGJh
dGNoIG1hbm5lciBieSBCeXRlY29kZVJld3JpdGVyLiBTaW5jZSB0aGVzZSBtb2RpZmljYXRpb24g
Y2hhbmdlcyB0aGUgYmFzaWMgYmxvY2tzCisgICAgICAgICAgIGFuZCBzaXplIG9mIHVubGlua2Vk
IGluc3RydWN0aW9ucywgQnl0ZWNvZGVSZXdyaXRlciBhbHNvIHBlcmZvcm1zIHRoZSBvZmZzZXQg
YWRqdXN0bWVudCBmb3IgVW5saW5rZWRDb2RlQmxvY2suIFNvLCB0aGlzIEJ5dGVjb2RlUmV3cml0
ZXIgaXMgcGVyZm9ybWVkCisgICAgICAgICAgIG9udG8gdGhlIEJ5dGVjb2RlR3JhcGggaW5zdGVh
ZCBvZiBCeXRlY29kZUJhc2ljQmxvY2suIFRoZSByZWFzb24gd2h5IHdlIHRha2UgdGhpcyBkZXNp
Z24gaXMgc2ltcGxlOiB3ZSBkb24ndCB3YW50IHRvIG5ld2x5IGNyZWF0ZSB0aGUgYmFzaWMgYmxv
Y2tzIGFuZCBvcGNvZGVzCisgICAgICAgICAgIGZvciB0aGlzIGVhcmx5IHBoYXNlIGxpa2UgREZH
LiBJbnN0ZWFkLCB3ZSBwZXJmb3JtIHRoZSBtb2RpZmljYXRpb24gYW5kIGFkanVzdG1lbnQgdG8g
dGhlIHVubGlua2VkIGluc3RydWN0aW9ucyBhbmQgVW5saW5rZWRDb2RlQmxvY2sgaW4gYSBpbi1w
bGFjZSBtYW5uZXIuCisKKyAgICAgICAgQWZ0ZXIgdGhhdCBwaGFzZSwgdGhlIGRhdGEgZmxvdyBv
ZiB0aGUgZ2VuZXJhdG9yLXNhdmVkLWFuZC1yZXN1bWVkLXJlZ2lzdGVycyBhcmUgZXhwbGljaXRs
eSByZXByZXNlbnRlZCBieSB0aGUgZ2V0X2Zyb21fc2NvcGUgYW5kIHB1dF90b19zY29wZS4KKyAg
ICAgICAgQW5kIG9wX3NhdmUgYW5kIG9wX3Jlc3VtZSBhcmUgcmVtb3ZlZC4gU2luY2Ugd2UgdXNl
IHRoZSBleGlzdGluZyBieXRlY29kZXMsIERGRyBhbmQgRlRMIGNoYW5nZXMgYXJlIG5vdCBuZWNl
c3NhcnkuCisgICAgICAgIFRoaXMgcGF0Y2ggYWxzbyBkcm9wcyBkYXRhIHN0cnVjdHVyZXMgYW5k
IGltcGxlbWVudGF0aW9ucyBmb3IgdGhlIG9sZCBnZW5lcmF0b3IsIG9wX3Jlc3VtZSwgb3Bfc2F2
ZSBpbXBsZW1lbnRhdGlvbnMgYW5kIEdlbmVyYXRvckZyYW1lLgorCisgICAgICAgIE5vdGUgdGhh
dCB0aGlzIHBhdGNoIGRvZXMgbm90IGxldmVyYWdlIHRoZSByZWNlbnQgbXVsdGkgZW50cnlwb2lu
dHMgc3VwcG9ydCBpbiBCMy4gQWZ0ZXIgdGhpcyBwYXRjaCBpcyBpbnRyb2R1Y2VkLCB3ZSB3aWxs
IHN1Ym1pdCBhIG5ldyBwYXRjaCB0aGF0IGxldmVyYWdlcyB0aGUgbXVsdGkKKyAgICAgICAgZW50
cnlwb2ludHMgZm9yIGdlbmVyYXRvcidzIHJlc3VtZSBhbmQgc2VlcyB0aGUgcGVyZm9ybWFuY2Ug
Z2Fpbi4KKworICAgICAgICBUT0RPOiBQZXJmIFRCQSBoZXJlLgorCisgICAgICAgICogQ01ha2VM
aXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBidWlsdGlucy9HZW5lcmF0b3JQcm90b3R5cGUuanM6CisgICAgICAg
IChnbG9iYWxQcml2YXRlLmdlbmVyYXRvclJlc3VtZSk6CisgICAgICAgICogYnl0ZWNvZGUvQnl0
ZWNvZGVCYXNpY0Jsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVCYXNpY0Jsb2NrOjpj
b21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2Nrc0ludGVybmFsKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNv
ZGVCYXNpY0Jsb2NrOjpjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2Nrcyk6CisgICAgICAgIChKU0M6
OmlzQnJhbmNoKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6bGlua0Jsb2Nrcyk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OmNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suaDoKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVCYXNpY0Jsb2NrOjpieXRlY29kZU9mZnNldHMpOgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUJhc2ljQmxvY2s6OnN1Y2Nlc3NvcnMpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUJhc2ljQmxv
Y2s6OmluZGV4KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVCYXNpY0Jsb2NrOjphZGRTdWNjZXNz
b3IpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcDog
QWRkZWQuCisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uOjpCeXRlY29k
ZUdlbmVyYXRvcmlmaWNhdGlvbik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yaWZp
Y2F0aW9uOjpncmFwaCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9u
Ojp5aWVsZHMpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbjo6ZW50
ZXJQb2ludCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uOjpzdG9y
YWdlRm9yR2VuZXJhdG9yTG9jYWwpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JMaXZlbmVzc0Fu
YWx5c2lzOjpHZW5lcmF0b3JMaXZlbmVzc0FuYWx5c2lzKToKKyAgICAgICAgKEpTQzo6R2VuZXJh
dG9yTGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldCk6CisgICAg
ICAgIChKU0M6OkdlbmVyYXRvckxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGVVc2VzRm9yQnl0ZWNv
ZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JMaXZlbmVzc0FuYWx5c2lzOjpydW4p
OgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbjo6cnVuKToKKyAgICAg
ICAgKEpTQzo6cGVyZm9ybUdlbmVyYXRvcmlmaWNhdGlvbik6CisgICAgICAgICogYnl0ZWNvZGUv
Qnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uaDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGluZXMuaC4KKyAgICAg
ICAgKiBieXRlY29kZS9CeXRlY29kZUdyYXBoLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpCeXRl
Y29kZUdyYXBoOjpjb2RlQmxvY2spOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdyYXBoOjppbnN0
cnVjdGlvbnMpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdyYXBoOjpiYXNpY0Jsb2Nrc0luUmV2
ZXJzZU9yZGVyKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHcmFwaDo6YmxvY2tDb250YWluc0J5
dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHcmFwaDo6ZmluZEJhc2ljQmxv
Y2tGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR3JhcGg6OmZpbmRC
YXNpY0Jsb2NrV2l0aExlYWRlck9mZnNldCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR3JhcGg6
OnNpemUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdyYXBoOjphdCk6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlR3JhcGg6Om9wZXJhdG9yW10pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdyYXBo
OjpiZWdpbik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR3JhcGg6OmVuZCk6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlR3JhcGg6OmZpcnN0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHcmFwaDo6
bGFzdCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR3JhcGg8QmxvY2s+OjpCeXRlY29kZUdyYXBo
KToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbjoKKyAgICAgICAgKiBieXRl
Y29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUxpdmVuZXNzQW5hbHlzaXM6OkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcyk6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNl
dCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0ZVVzZXNG
b3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNp
czo6Z2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OkJ5dGVj
b2RlTGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0ZUZ1bGxMaXZlbmVzcyk6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0ZUtpbGxzKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpkdW1wUmVzdWx0cyk6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0ZSk6CisgICAgICAgIChKU0M6OmlzVmFsaWRS
ZWdpc3RlckZvckxpdmVuZXNzKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Z2V0TGVhZGVyT2Zm
c2V0Rm9yQmFzaWNCbG9jayk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OmZpbmRCYXNpY0Jsb2Nr
V2l0aExlYWRlck9mZnNldCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OmJsb2NrQ29udGFpbnNC
eXRlY29kZU9mZnNldCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OmZpbmRCYXNpY0Jsb2NrRm9y
Qnl0ZWNvZGVPZmZzZXQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpzdGVwT3Zlckluc3RydWN0
aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Y29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCeXRl
Y29kZU9mZnNldCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OmNvbXB1dGVMb2NhbExpdmVuZXNz
Rm9yQmxvY2spOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlz
aXM6OnJ1bkxpdmVuZXNzRml4cG9pbnQpOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2RlL0J5
dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5oOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGl2
ZW5lc3NBbmFseXNpc0lubGluZXMuaDoKKyAgICAgICAgKEpTQzo6aXNWYWxpZFJlZ2lzdGVyRm9y
TGl2ZW5lc3MpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzUHJvcGFnYXRpb248RGVy
aXZlZEFuYWx5c2lzPjo6c3RlcE92ZXJJbnN0cnVjdGlvbik6CisgICAgICAgIChKU0M6OkJ5dGVj
b2RlTGl2ZW5lc3NQcm9wYWdhdGlvbjxEZXJpdmVkQW5hbHlzaXM+Ojpjb21wdXRlTG9jYWxMaXZl
bmVzc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc1By
b3BhZ2F0aW9uPERlcml2ZWRBbmFseXNpcz46OmNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQmxvY2sp
OgorICAgICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzUHJvcGFnYXRpb248RGVyaXZlZEFuYWx5
c2lzPjo6Z2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlTGl2ZW5lc3NQcm9wYWdhdGlvbjxEZXJpdmVkQW5hbHlzaXM+OjpydW5MaXZlbmVzc0Zp
eHBvaW50KToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZVJld3JpdGVyLmNwcDogQWRkZWQu
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlUmV3cml0ZXI6OmFwcGx5TW9kaWZpY2F0aW9uKToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVSZXdyaXRlcjo6ZXhlY3V0ZSk6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlUmV3cml0ZXI6OmFkanVzdEp1bXBJbnNlcnRpb24pOgorICAgICAgICAoSlNDOjpCeXRl
Y29kZVJld3JpdGVyOjppbnNlcnRJbXBsKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVSZXdyaXRl
cjo6aW5zZXJ0U3dpdGNoSW1tZWRpYXRlSW1wbCk6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNv
ZGVSZXdyaXRlci5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVSZXdyaXRlcjo6Q29t
bWFuZDo6bGVuZ3RoKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVSZXdyaXRlcjo6RnJhZ21lbnQ6
OkZyYWdtZW50KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVSZXdyaXRlcjo6RnJhZ21lbnQ6OmFw
cGVuZCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlUmV3cml0ZXI6OkJ5dGVjb2RlUmV3cml0ZXIp
OgorICAgICAgICAoSlNDOjpCeXRlY29kZVJld3JpdGVyOjppbnNlcnRCZWZvcmUpOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZVJld3JpdGVyOjppbnNlcnRBZnRlcik6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlUmV3cml0ZXI6Omluc2VydEZyYWdtZW50QmVmb3JlKToKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVSZXdyaXRlcjo6aW5zZXJ0RnJhZ21lbnRBZnRlcik6CisgICAgICAgIChKU0M6OkJ5dGVj
b2RlUmV3cml0ZXI6Omluc2VydFN3aXRjaEltbWVkaWF0ZUJlZm9yZSk6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlUmV3cml0ZXI6OnJlbW92ZUJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNv
ZGVSZXdyaXRlcjo6Z3JhcGgpOgorICAgICAgICAoSlNDOjpCeXRlY29kZVJld3JpdGVyOjphZGp1
c3RPZmZzZXQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZVJld3JpdGVyOjphZGp1c3RPZmZzZXRX
aXRoSW5zZXJ0aW9ucyk6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaDoKKyAg
ICAgICAgKEpTQzo6Y29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6
OmNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVC
bG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKToKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkNvZGVC
bG9jazo6aGFuZGxlckZvckluZGV4KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpzaHJpbmtU
b0ZpdCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6dmFsdWVQcm9maWxlRm9yQnl0ZWNvZGVP
ZmZzZXQpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmxpdmVuZXNzQW5hbHlzaXNTbG93KToK
KyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
Ojppc0NvbnN0YW50UmVnaXN0ZXJJbmRleCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bGl2
ZW5lc3NBbmFseXNpcyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bGl2ZUNhbGxlZUxvY2Fs
c0F0WWllbGQpOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2RlL0hhbmRsZXJJbmZvLmg6Cisg
ICAgICAgIChKU0M6OkhhbmRsZXJJbmZvQmFzZTo6aGFuZGxlckZvckluZGV4KToKKyAgICAgICAg
KiBieXRlY29kZS9PcGNvZGUuaDoKKyAgICAgICAgKEpTQzo6aXNCcmFuY2gpOgorICAgICAgICAq
IGJ5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5jcHA6CisgICAgICAgIChKU0M6OmdldEp1bXBU
YXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpjb21wdXRlUHJlY2lzZUp1
bXBUYXJnZXRzSW50ZXJuYWwpOgorICAgICAgICAoSlNDOjpjb21wdXRlUHJlY2lzZUp1bXBUYXJn
ZXRzKToKKyAgICAgICAgKEpTQzo6cmVjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKToKKyAgICAg
ICAgKEpTQzo6ZmluZEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAqIGJ5
dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5oOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2Vk
Q29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OmhhbmRsZXJG
b3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjpoYW5k
bGVyRm9ySW5kZXgpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6YXBwbHlNb2Rp
ZmljYXRpb24pOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmg6CisgICAg
ICAgIChKU0M6OlVubGlua2VkU3RyaW5nSnVtcFRhYmxlOjpvZmZzZXRGb3JWYWx1ZSk6CisgICAg
ICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjpudW1DYWxsZWVMb2NhbHMpOgorICAgICAgICAq
IGJ5dGVjb2RlL1ZpcnR1YWxSZWdpc3Rlci5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5l
cmF0ZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRv
cik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q29tcGxleFBvcFNjb3Bl
cyk6CisgICAgICAgIChKU0M6OnByZXBhcmVKdW1wVGFibGVGb3JTdHJpbmdTd2l0Y2gpOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFlpZWxkUG9pbnQpOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFNhdmUpOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlc3VtZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2VuZXJhdG9yU3RhdGVMYWJlbCk6IERlbGV0ZWQuCisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpiZWdpbkdlbmVyYXRvcik6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbmRHZW5lcmF0b3IpOiBEZWxldGVk
LgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdG9yU3RhdGVSZWdpc3Rlcik6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0b3JWYWx1ZVJlZ2lzdGVyKToKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRvclJlc3VtZU1vZGVSZWdpc3Rlcik6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0b3JGcmFtZVJlZ2lzdGVy
KToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpT
Qzo6RnVuY3Rpb25Ob2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRp
b25zLmNwcDoKKyAgICAgICAgKiBnZW5lcmF0ZS1ieXRlY29kZS1maWxlczoKKyAgICAgICAgKiBp
bnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6OmZpbmRFeGNlcHRpb25I
YW5kbGVyKToKKyAgICAgICAgKEpTQzo6R2V0Q2F0Y2hIYW5kbGVyRnVuY3Rvcjo6b3BlcmF0b3Io
KSk6CisgICAgICAgIChKU0M6OlVud2luZEZ1bmN0b3I6Om9wZXJhdG9yKCkpOgorICAgICAgICAq
IGludGVycHJldGVyL0ludGVycHJldGVyLmg6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJw
cmV0ZXJJbmxpbmVzLmg6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9QcmVjaXNlSnVtcFRhcmdldHMuaC4KKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmdldE9w
Y29kZUlEKToKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2
YXRlQ29tcGlsZU1haW5QYXNzKToKKyAgICAgICAgKiBqaXQvSklULmg6CisgICAgICAgICogaml0
L0pJVE9wY29kZXMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bfc2F2ZSk6IERlbGV0
ZWQuCisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9yZXN1bWUpOiBEZWxldGVkLgorICAgICAg
ICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAgICAgICAqIHBhcnNlci9QYXJz
ZXIuY3BwOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJbm5lcik6Cisg
ICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUdlbmVyYXRvckZ1bmN0aW9uU291
cmNlRWxlbWVudHMpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6Y3JlYXRlR2Vu
ZXJhdG9yUGFyYW1ldGVycyk6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5oOgorICAgICAgICAq
IHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6U0xPV19QQVRIX0RF
Q0wpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmg6CisgICAg
ICAgICogcnVudGltZS9HZW5lcmF0b3JGcmFtZS5jcHA6IFJlbW92ZWQuCisgICAgICAgIChKU0M6
OkdlbmVyYXRvckZyYW1lOjpHZW5lcmF0b3JGcmFtZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
OkdlbmVyYXRvckZyYW1lOjpmaW5pc2hDcmVhdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
OkdlbmVyYXRvckZyYW1lOjpjcmVhdGVTdHJ1Y3R1cmUpOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJh
dG9yRnJhbWU6OnNhdmUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6
cmVzdW1lKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OnZpc2l0Q2hp
bGRyZW4pOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJhdG9yRnJhbWUuaDogUmVt
b3ZlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OmxvY2Fscyk6IERlbGV0ZWQuCisg
ICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpsb2NhbEF0KTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6R2VuZXJhdG9yRnJhbWU6Om9mZnNldE9mTG9jYWxzKTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6R2VuZXJhdG9yRnJhbWU6OmFsbG9jYXRpb25TaXplRm9yTG9jYWxzKTogRGVsZXRlZC4K
KyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJhdG9yRnVuY3Rpb24uaDoKKyAgICAgICAgKiBydW50
aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OlZNKToKKyAgICAgICAgKiBydW50aW1lL1ZN
Lmg6CisKKzIwMTYtMDgtMjQgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+
CisKICAgICAgICAgW0pTQ10gTW92ZSBnZW5lcmljIGRhdGEgc3RydWN0dXJlcyBvdXQgb2YgQjMK
ICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MTE1NQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9n
CmluZGV4IGJlMDkwMzhmY2I0OTkwY2QwYTAxMGQyZThjMGYwNzM2ODU2MDM4ZmMuLjU1ODkxZDA3
NTI2YmM0ZWZjODg3NDZjZmEyZWEzODY4NDA3NmM0YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTUgQEAKIDIw
MTYtMDgtMjQgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAKKyAgICAg
ICAgW0RGR11bRlRMXSBJbXBsZW1lbnQgRVM2IEdlbmVyYXRvcnMgaW4gREZHIC8gRlRMCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTI3MjMKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9GYXN0Qml0
VmVjdG9yLmg6CisgICAgICAgIChXVEY6OkZhc3RCaXRWZWN0b3I6OkZhc3RCaXRWZWN0b3IpOgor
CisyMDE2LTA4LTI0ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCiAg
ICAgICAgIFtKU0NdIE1vdmUgZ2VuZXJpYyBkYXRhIHN0cnVjdHVyZXMgb3V0IG9mIEIzCiAgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjExNTUKIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDNlZDU0YjgxNzI2ODE4YTA4ODRjZGMz
MjVjZjE3ZGQyNWIyZWJlNjEuLjNiZWY0MmNmODJhZDBlNzdkODU2NDAxYzkzNzBkZTAxMzA4NTIz
OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTE4MSw2ICsxODEsOCBA
QCBzZXQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIGJ5dGVjb2RlL0FycmF5QWxsb2NhdGlv
blByb2ZpbGUuY3BwCiAgICAgYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmNwcAogICAgIGJ5dGVjb2Rl
L0J5dGVjb2RlQmFzaWNCbG9jay5jcHAKKyAgICBieXRlY29kZS9CeXRlY29kZUdlbmVyYXRvcmlm
aWNhdGlvbi5jcHAKKyAgICBieXRlY29kZS9CeXRlY29kZVJld3JpdGVyLmNwcAogICAgIGJ5dGVj
b2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuY3BwCiAgICAgYnl0ZWNvZGUvQnl0ZWNvZGVM
aXZlbmVzc0FuYWx5c2lzLmNwcAogICAgIGJ5dGVjb2RlL0NhbGxFZGdlLmNwcApAQCAtNjYxLDcg
KzY2Myw2IEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgcnVudGltZS9GdW5jdGlv
bkhhc0V4ZWN1dGVkQ2FjaGUuY3BwCiAgICAgcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAK
ICAgICBydW50aW1lL0Z1bmN0aW9uUmFyZURhdGEuY3BwCi0gICAgcnVudGltZS9HZW5lcmF0b3JG
cmFtZS5jcHAKICAgICBydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwCiAg
ICAgcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5jcHAKICAgICBydW50aW1lL0dl
bmVyYXRvclByb3RvdHlwZS5jcHAKQEAgLTk3OSw2ICs5ODAsMTAgQEAgYWRkX2N1c3RvbV9jb21t
YW5kKAogICAgIENPTU1BTkQgJHtQWVRIT05fRVhFQ1VUQUJMRX0gJHtKQVZBU0NSSVBUQ09SRV9E
SVJ9L2dlbmVyYXRlLWJ5dGVjb2RlLWZpbGVzIC0tYnl0ZWNvZGVzX2ggJHtERVJJVkVEX1NPVVJD
RVNfSkFWQVNDUklQVENPUkVfRElSfS9CeXRlY29kZXMuaCAtLWluaXRfYnl0ZWNvZGVzX2FzbSAk
e0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0luaXRCeXRlY29kZXMuYXNtICR7
SkFWQVNDUklQVENPUkVfRElSfS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgogICAgIFZFUkJB
VElNKQogCitsaXN0KEFQUEVORCBKYXZhU2NyaXB0Q29yZV9IRUFERVJTCisgICAgJHtERVJJVkVE
X1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9CeXRlY29kZXMuaAorKQorCiBhZGRfY3VzdG9t
X2NvbW1hbmQoCiAgICAgT1VUUFVUICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJ
Un0vTExJbnREZXNpcmVkT2Zmc2V0cy5oCiAgICAgTUFJTl9ERVBFTkRFTkNZICR7SkFWQVNDUklQ
VENPUkVfRElSfS9vZmZsaW5lYXNtL2dlbmVyYXRlX29mZnNldF9leHRyYWN0b3IucmIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYTFkOTgzZDhmMDA3ZTkwYzM2MmI1OTk1ZDQ2MGUy
OTAzYjIyNTNkNi4uYTNkZGFkZDNlMDVhYmQ5YTAwMjBlMDE3OTlhMDc4M2IzMDBiNDNjZiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEyNzAsOCArMTI3MCw2IEBACiAJCTcwOUZC
ODZDMUFFMzM1QzYwMDM5RDA2OSAvKiBXZWFrU2V0UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MDlGQjg2NjFBRTMzNUM2MDAzOUQwNjkg
LyogV2Vha1NldFByb3RvdHlwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTcwQjBBOUQxMUE5QjY2NDYwMDAxMzA2QSAvKiBSdW50aW1lRmxhZ3Mu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwQjBBOUQw
MUE5QjY2MjAwMDAxMzA2QSAvKiBSdW50aW1lRmxhZ3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MEI3OTE5MTFDMDI0QTEzMDAyNDgxRTIgLyog
U291cmNlQ29kZUtleS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNzBCNzkxOEUxQzAyNDRDOTAwMjQ4MUUyIC8qIFNvdXJjZUNvZGVLZXkuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk3MEI3OTE5MjFDMDI0
QTIzMDAyNDgxRTIgLyogR2VuZXJhdG9yRnJhbWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBCNzkxODMxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVy
YXRvckZyYW1lLmNwcCAqLzsgfTsKLQkJNzBCNzkxOTMxQzAyNEEyODAwMjQ4MUUyIC8qIEdlbmVy
YXRvckZyYW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3MEI3OTE4NDFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnJhbWUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MEI3OTE5NDFDMDI0QTI4
MDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEI3OTE4NTFDMDI0NDMyMDAyNDgx
RTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAgKi87IH07CiAJCTcwQjc5MTk1
MUMwMjRBMjgwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEI3OTE4NjFDMDI0NDMy
MDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcwQjc5MTk2MUMwMjRBMjgwMDI0
ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEI3OTE4NzFDMDI0NDMyMDAyNDgxRTIgLyog
R2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3BwICovOyB9OwpAQCAtMjA0NSw2ICsyMDQzLDEx
IEBACiAJCUUxOEUzQTU5MERGOTI3OEMwMEQ5MEIzNCAvKiBWTS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMThFM0E1NzBERjkyNzhDMDBEOTBCMzQg
LyogVk0uY3BwICovOyB9OwogCQlFMzE4Q0JDMDFCOEFFRjUxMDBBMjkyOUQgLyogSlNNb2R1bGVO
YW1lc3BhY2VPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTMxOENCQkUxQjhBRUY1MTAwQTI5MjlEIC8qIEpTTW9kdWxlTmFtZXNwYWNlT2Jq
ZWN0LmNwcCAqLzsgfTsKIAkJRTMxOENCQzExQjhBRUY1MTAwQTI5MjlEIC8qIEpTTW9kdWxlTmFt
ZXNwYWNlT2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFMzE4Q0JCRjFCOEFFRjUxMDBBMjkyOUQgLyogSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Qu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFMzI4
REFFNzFEMzhEMDA0MDAxQTI1MjkgLyogQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNEMjY0MjYxRDM4
QzA0MjAwMEJFMTc0IC8qIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcCAqLzsgfTsKKwkJ
RTMyOERBRTgxRDM4RDAwNTAwMUEyNTI5IC8qIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0QyNjQyNzFE
MzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFMzI4REFFOTFEMzhEMDA1
MDAxQTI1MjkgLyogQnl0ZWNvZGVHcmFwaC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTNEMjY0MjgxRDM4QzA0MjAwMEJFMTc0IC8qIEJ5dGVjb2RlR3Jh
cGguaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlF
MzI4REFFQTFEMzhEMDA1MDAxQTI1MjkgLyogQnl0ZWNvZGVSZXdyaXRlci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0QyNjQyOTFEMzhDMDQyMDAw
QkUxNzQgLyogQnl0ZWNvZGVSZXdyaXRlci5jcHAgKi87IH07CisJCUUzMjhEQUVCMUQzOEQwMDUw
MDFBMjUyOSAvKiBCeXRlY29kZVJld3JpdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFM0QyNjQyQTFEMzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNvZGVS
ZXdyaXRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUUzMzYzN0E1MUI2MzIyMDIwMEVFMDg0MCAvKiBSZWZsZWN0T2JqZWN0LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMzYzN0EzMUI2MzIyMDIw
MEVFMDg0MCAvKiBSZWZsZWN0T2JqZWN0LmNwcCAqLzsgfTsKIAkJRTMzNjM3QTYxQjYzMjIwMjAw
RUUwODQwIC8qIFJlZmxlY3RPYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEUzMzYzN0E0MUI2MzIyMDIwMEVFMDg0MCAvKiBSZWZsZWN0T2JqZWN0
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTMz
QjNFMjYxQjdBQkQ3NTAwNDhEQjJFIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5s
dXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzM0Iz
RTI1MUI3QUJENzUwMDQ4REIyRSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QubHV0
LmggKi87IH07CkBAIC0yMDY5LDYgKzIwNzIsNyBAQAogCQlFMzc5NEU3NTFCNzdFQjk3MDA1NTQz
QUUgLyogTW9kdWxlQW5hbHl6ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTM3OTRFNzMxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVy
LmNwcCAqLzsgfTsKIAkJRTM3OTRFNzYxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzc5NEU3
NDFCNzdFQjk3MDA1NTQzQUUgLyogTW9kdWxlQW5hbHl6ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzk2M0NFRTFCNzNGNzUwMDBFQjRDRTUg
LyogTm9kZXNBbmFseXplTW9kdWxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEUzOTYzQ0VDMUI3M0Y3NTAwMEVCNENFNSAvKiBOb2Rlc0FuYWx5emVN
b2R1bGUuY3BwICovOyB9OworCQlFMzlENDVGNTFEMzkwMDU2MDBCM0IzNzcgLyogSW50ZXJwcmV0
ZXJJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFMzlEOUQ4NDFEMzkwMDA2MDA2NjcyODIgLyogSW50ZXJwcmV0ZXJJbmxpbmVzLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM5REE0QTYxQjdF
OEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOURBNEE0MUI3RThCN0MwMDg0RjMzQSAvKiBKU01v
ZHVsZVJlY29yZC5jcHAgKi87IH07CiAJCUUzOURBNEE3MUI3RThCN0MwMDg0RjMzQSAvKiBKU01v
ZHVsZVJlY29yZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTM5REE0QTUxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTNEMjM5QzgxQjgyOUMx
QzAwQkJFRjY3IC8qIEpTTW9kdWxlRW52aXJvbm1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNEMjM5QzYxQjgyOUMxQzAwQkJFRjY3IC8qIEpT
TW9kdWxlRW52aXJvbm1lbnQuY3BwICovOyB9OwpAQCAtMzQ5Miw4ICszNDk2LDYgQEAKIAkJNzA5
RkI4NjUxQUUzMzVDNjAwMzlEMDY5IC8qIFdlYWtTZXRQcm90b3R5cGUuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2Vha1NldFByb3RvdHlwZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcwOUZCODY2MUFFMzM1QzYwMDM5RDA2OSAvKiBXZWFrU2V0
UHJvdG90eXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYWtTZXRQcm90
b3R5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzBCMEE5RDAxQTlCNjYyMDAw
MDEzMDZBIC8qIFJ1bnRpbWVGbGFncy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBSdW50aW1lRmxhZ3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNzBCNzkxODMx
QzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZyYW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEdlbmVyYXRvckZyYW1lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJNzBCNzkxODQxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZyYW1lLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdlbmVyYXRvckZyYW1lLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcwQjc5MTg1MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5l
cmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3MEI3OTE4NjFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnVu
Y3Rpb25Db25zdHJ1Y3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHZW5l
cmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTcwQjc5MTg3MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHZW5lcmF0b3JGdW5jdGlv
blByb3RvdHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00MzMzLDEwICs0
MzM1LDE2IEBACiAJCUUzNzk0RTczMUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFseXplci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNb2R1bGVBbmFseXplci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNzk0RTc0MUI3N0VCOTcwMDU1NDNB
RSAvKiBNb2R1bGVBbmFseXplci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBN
b2R1bGVBbmFseXplci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzk2M0NFQzFC
NzNGNzUwMDBFQjRDRTUgLyogTm9kZXNBbmFseXplTW9kdWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5vZGVzQW5hbHl6ZU1vZHVsZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUUzOUQ5RDg0MUQzOTAwMDYwMDY2NzI4MiAvKiBJbnRlcnByZXRl
cklubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW50ZXJwcmV0ZXJJ
bmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOURBNEE0MUI3RThCN0Mw
MDg0RjMzQSAvKiBKU01vZHVsZVJlY29yZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBKU01vZHVsZVJlY29yZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUUzOURBNEE1MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29yZC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU01vZHVsZVJlY29yZC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlFM0QyMzlDNjFCODI5QzFDMDBCQkVGNjcgLyogSlNNb2R1bGVFbnZp
cm9ubWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU01vZHVs
ZUVudmlyb25tZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNEMjM5Qzcx
QjgyOUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxlRW52aXJvbm1lbnQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSlNNb2R1bGVFbnZpcm9ubWVudC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlFM0QyNjQyNjFEMzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNvZGVHZW5lcmF0
b3JpZmljYXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQnl0
ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlFM0QyNjQyNzFEMzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnl0ZWNvZGVHZW5lcmF0b3JpZmlj
YXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTNEMjY0MjgxRDM4QzA0MjAw
MEJFMTc0IC8qIEJ5dGVjb2RlR3JhcGguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQnl0ZWNvZGVHcmFwaC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFM0QyNjQy
OTFEMzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNvZGVSZXdyaXRlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCeXRlY29kZVJld3JpdGVyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJRTNEMjY0MkExRDM4QzA0MjAwMEJFMTc0IC8qIEJ5dGVjb2RlUmV3
cml0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnl0ZWNvZGVSZXdyaXRl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0VGODg3MjFCNjZERjIzMDAzRjI2
Q0IgLyogSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRTNFRjg4NzMxQjY2REYyMzAwM0YyNkNCIC8qIEpTUHJvcGVydHlOYW1l
SXRlcmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNQcm9wZXJ0eU5h
bWVJdGVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNDlEQzE0OTEyRUYy
NjFBMDAxODRBMUYgLyogU291cmNlUHJvdmlkZXJDYWNoZUl0ZW0uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU291cmNlUHJvdmlkZXJDYWNoZUl0ZW0uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTUwNjMsNiArNTA3MSw3IEBACiAJCTE0MjlENzdBMEVEMjBENzMw
MEI4OTYxOSAvKiBpbnRlcnByZXRlciAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hp
bGRyZW4gPSAoCisJCQkJRTM5RDlEODQxRDM5MDAwNjAwNjY3MjgyIC8qIEludGVycHJldGVySW5s
aW5lcy5oICovLAogCQkJCTBGNTVGMEYxMTREMTA2MzYwMEFDNzY0OSAvKiBBYnN0cmFjdFBDLmNw
cCAqLywKIAkJCQkwRjU1RjBGMjE0RDEwNjM2MDBBQzc2NDkgLyogQWJzdHJhY3RQQy5oICovLAog
CQkJCTE0MjlEODVCMEVEMjE4RTkwMEI4OTYxOSAvKiBDTG9vcFN0YWNrLmNwcCAqLywKQEAgLTU3
NDMsOCArNTc1Miw2IEBACiAJCQkJRjY5MkE4NUQwMjU1NTk3RDAxRkY2MEY3IC8qIEZ1bmN0aW9u
UHJvdG90eXBlLmggKi8sCiAJCQkJNjJEMkQzOEQxQURGMTAzRjAwMDIwNkMxIC8qIEZ1bmN0aW9u
UmFyZURhdGEuY3BwICovLAogCQkJCTYyRDJEMzhFMUFERjEwM0YwMDAyMDZDMSAvKiBGdW5jdGlv
blJhcmVEYXRhLmggKi8sCi0JCQkJNzBCNzkxODMxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRv
ckZyYW1lLmNwcCAqLywKLQkJCQk3MEI3OTE4NDFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9y
RnJhbWUuaCAqLywKIAkJCQk3MEI3OTE4NTFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnVu
Y3Rpb25Db25zdHJ1Y3Rvci5jcHAgKi8sCiAJCQkJNzBCNzkxODYxQzAyNDQzMjAwMjQ4MUUyIC8q
IEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaCAqLywKIAkJCQk3MEI3OTE4NzFDMDI0NDMy
MDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3BwICovLApAQCAtNjYzMCw2
ICs2NjM3LDExIEBACiAJCTk2OUEwNzhGMEVEMUQzQUUwMEYxRjY4MSAvKiBieXRlY29kZSAqLyA9
IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJRTNEMjY0MjYxRDM4
QzA0MjAwMEJFMTc0IC8qIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcCAqLywKKwkJCQlF
M0QyNjQyNzFEMzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uaCAq
LywKKwkJCQlFM0QyNjQyODFEMzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNvZGVHcmFwaC5oICovLAor
CQkJCUUzRDI2NDI5MUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRlY29kZVJld3JpdGVyLmNwcCAqLywK
KwkJCQlFM0QyNjQyQTFEMzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNvZGVSZXdyaXRlci5oICovLAog
CQkJCTUzNzBCNEYzMUJGMjVFQTIwMDVDNDBGQyAvKiBBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlW
YWx1ZVdhdGNocG9pbnRCYXNlLmNwcCAqLywKIAkJCQk1MzcwQjRGNDFCRjI1RUEyMDA1QzQwRkMg
LyogQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50QmFzZS5oICovLAogCQkJ
CTBGODMzNUI0MTYzOUMxRTMwMDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcCAq
LywKQEAgLTcxODQsNiArNzE5Niw3IEBACiAJCQkJMEZFQzg1MkQxQkRBQ0RBQzAwODBGRjc0IC8q
IEIzUHJvY2VkdXJlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQzg1QkQxQkUxNDYy
RjAwODBGRjc0IC8qIEIzUmVkdWNlU3RyZW5ndGguaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUM4
NTMxMUJEQUNEQUMwMDgwRkY3NCAvKiBCM1N0YWNrbWFwU3BlY2lhbC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJRTMyOERBRTgxRDM4RDAwNTAwMUEyNTI5IC8qIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0
aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVDODUzNTFCREFDREFDMDA4MEZGNzQgLyogQjNT
bG90QmFzZVZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVDODUzNjFCREFDREFDMDA4MEZG
NzQgLyogQjNTdWNjZXNzb3JDb2xsZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVDODUz
ODFCREFDREFDMDA4MEZGNzQgLyogQjNTd2l0Y2hDYXNlLmggaW4gSGVhZGVycyAqLywKQEAgLTc0
NDksNyArNzQ2Miw2IEBACiAJCQkJQTczNzgxMEUxNzk5RUEyRTAwODE3NTMzIC8qIERGR05hdHVy
YWxMb29wcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZFQ0EzRUExMzJERUYxQzAwMkIyQUQ3IC8q
IERGR05vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRkI5MjFCMTZEMDJGMDEwMDU1QTVEQiAv
KiBERkdOb2RlQWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLywKLQkJCQk3MEI3OTE5MzFDMDI0QTI4
MDAyNDgxRTIgLyogR2VuZXJhdG9yRnJhbWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQTU4MUJC
MTUwRTk1MzAwMEI5QTJEOSAvKiBERkdOb2RlRmxhZ3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
MzAwQjc4MThBQjA1MTEwMEE2RDcyRSAvKiBERkdOb2RlT3JpZ2luLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRkE1ODFCQzE1MEU5NTMwMDBCOUEyRDkgLyogREZHTm9kZVR5cGUuaCBpbiBIZWFkZXJz
ICovLApAQCAtNzQ2NCw2ICs3NDc2LDcgQEAKIAkJCQkwRkQ4QTMyNjE3RDUxRjU3MDBDQTJDNDAg
LyogREZHT1NSRW50cnlwb2ludENyZWF0aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
QzA5NzZBMTQ2OEE2RjcwMENGMjQ0MiAvKiBERkdPU1JFeGl0LmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRjIzNUJFQzE3MTc4RTczMDA2OTBDN0YgLyogREZHT1NSRXhpdEJhc2UuaCBpbiBIZWFkZXJz
ICovLAorCQkJCUUzOUQ0NUY1MUQzOTAwNTYwMEIzQjM3NyAvKiBJbnRlcnByZXRlcklubGluZXMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGRkI5MjFDMTZEMDJGMTEwMDU1QTVEQiAvKiBERkdPU1JF
eGl0Q29tcGlsYXRpb25JbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkMwOTc3MTE0NjkzQUY1
MDBDRjI0NDIgLyogREZHT1NSRXhpdENvbXBpbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjcw
MjVBQTE3MTRCMEZDMDAzODJDMEUgLyogREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmggaW4gSGVh
ZGVycyAqLywKQEAgLTc3MjYsNiArNzczOSw3IEBACiAJCQkJRTMzQjNFMjYxQjdBQkQ3NTAwNDhE
QjJFIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5sdXQuaCBpbiBIZWFkZXJzICov
LAogCQkJCUE1MzI0MzhDMTg1NjgzMzUwMDJFRDY5MiAvKiBJbnNwZWN0b3JQcm90b2NvbE9iamVj
dHMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1NUQ5M0FDMTg1MTRGNzkwMDQwMERFRCAvKiBJbnNw
ZWN0b3JQcm90b2NvbFR5cGVzLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzI4REFFQjFEMzhEMDA1
MDAxQTI1MjkgLyogQnl0ZWNvZGVSZXdyaXRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTUwRTRC
NjIxODgwOURENTAwNjhBNDZEIC8qIEluc3BlY3RvclJ1bnRpbWVBZ2VudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTU5M0NGODMxODQwMzc3MTAwQkZDRTI3IC8qIEluc3BlY3RvclZhbHVlcy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJOTY5QTA3OTkwRUQxRDNBRTAwRjFGNjgxIC8qIEluc3RydWN0aW9u
LmggaW4gSGVhZGVycyAqLywKQEAgLTc4NTcsNiArNzg3MSw3IEBACiAJCQkJRTMzRjUwODExQjg0
MjlBNDAwNDEzODU2IC8qIEpTSW50ZXJuYWxQcm9taXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RjYxODMyQTFDNDVCRjA3MDA3MjQ1MEIgLyogQWlyQ0NhbGxpbmdDb252ZW50aW9uLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlFMzNGNTA3OTFCODQyMjU3MDA0MTM4NTYgLyogSlNJbnRlcm5hbFByb21p
c2VDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTMyOERBRTkxRDM4RDAwNTAwMUEy
NTI5IC8qIEJ5dGVjb2RlR3JhcGguaCBpbiBIZWFkZXJzICovLAogCQkJCUUzM0Y1MDg3MUI4NDQ5
RUYwMDQxMzg1NiAvKiBKU0ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yLmx1dC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJRTMzRjUwODUxQjg0MzdBMDAwNDEzODU2IC8qIEpTSW50ZXJuYWxQcm9taXNl
RGVmZXJyZWQuaCBpbiBIZWFkZXJzICovLAogCQkJCUUzM0Y1MDc1MUI4NDIxQzAwMDQxMzg1NiAv
KiBKU0ludGVybmFsUHJvbWlzZVByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCkBAIC04ODIzLDYg
Kzg4MzgsNyBAQAogCQkJCTE0N0YzOUJEMTA3RUMzNzYwMDQyN0E0OCAvKiBBcmdMaXN0LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTBGNzQzQkFBMTZCODgyNDkwMDlGOTI3NyAvKiBBUk02NERpc2Fz
c2VtYmxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NkQzQjJDMzEwMTU2QkRFMDAyODY1RTcg
LyogQVJNQXNzZW1ibGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUUzMjhEQUU3MUQzOEQwMDQw
MDFBMjUyOSAvKiBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk2NUMwMjg1MDE3MTc5NUUyMDAzNTFFMzUgLyogQVJNdjdEaXNhc3NlbWJsZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNjVDMDI4NUMxNzE3OTY2ODAwMzUxRTM1IC8qIEFSTXY3RE9wY29k
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjgzMzVCNzE2MzlDMUU2MDAxNDQzQjUgLyogQXJy
YXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTkxNTgsNiArOTE3NCw3
IEBACiAJCQkJMEYyNUYxQjExODE2MzVGMzAwNTIyRjM5IC8qIEZUTFNsb3dQYXRoQ2FsbC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkwRjMzOERGMTFCRTkzQUQxMDAxM0M4OEYgLyogQjNTdGFja21h
cFZhbHVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMjVGMUIzMTgxNjM1RjMwMDUyMkYzOSAv
KiBGVExTbG93UGF0aENhbGxLZXkuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTMyOERBRUExRDM4
RDAwNTAwMUEyNTI5IC8qIEJ5dGVjb2RlUmV3cml0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NDMxOURBMDMxQzFCRTQwQTAwMUQyNjBCIC8qIEIzTG93ZXJNYWNyb3NBZnRlck9wdGltaXphdGlv
bnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFQTBBMTYxNzA2QkI5MDAwQkI3MjJDIC8qIEZU
TFN0YXRlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMjM1QkUxMTcxNzhFMUMwMDY5MEM3RiAv
KiBGVExUaHVua3MuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC05NTY1LDcgKzk1ODIsNiBAQAogCQkJ
CTc5RUUwQkZGMUI0QUZCODUwMDAzODVDOSAvKiBWYXJpYWJsZUVudmlyb25tZW50LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTBGNkM3MzUwMUFDOUY5OUYwMEJFMTY4MiAvKiBWYXJpYWJsZVdyaXRl
RmlyZURldGFpbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkUwNTAyQzFBQTkwOTU2MDBEMzNC
MzMgLyogVmFyT2Zmc2V0LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTcwQjc5MTkyMUMwMjRBMjMw
MDI0ODFFMiAvKiBHZW5lcmF0b3JGcmFtZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjIwQzI1
OTFBODAxM0FCMDBEQTMyMjkgLyogVmlydHVhbFJlZ2lzdGVyLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUUxOEUzQTU5MERGOTI3OEMwMEQ5MEIzNCAvKiBWTS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlGRTU5MzJBNzE4M0M1QTI2MDBBMUVDQ0MgLyogVk1FbnRyeVNjb3BlLmNwcCBpbiBTb3VyY2Vz
ICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0dlbmVyYXRv
clByb3RvdHlwZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9HZW5lcmF0b3JQ
cm90b3R5cGUuanMKaW5kZXggM2MxNDA2ODdkZmM3ZTAwZWZlOTFhZTgwYjJhYzY3NmZhOWJmNDhm
NC4uNDk5ZGJkMzkyZTgzMTNkY2RkODZlYzhjMTYwNTY5ZDdkNmY1NDliMSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0dlbmVyYXRvclByb3RvdHlwZS5qcworKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvR2VuZXJhdG9yUHJvdG90eXBlLmpzCkBA
IC01MSw3ICs1MSw3IEBAIGZ1bmN0aW9uIGdlbmVyYXRvclJlc3VtZShnZW5lcmF0b3IsIHNlbnRW
YWx1ZSwgcmVzdW1lTW9kZSkKICAgICB9IGVsc2UgewogICAgICAgICB0cnkgewogICAgICAgICAg
ICAgZ2VuZXJhdG9yLkBnZW5lcmF0b3JTdGF0ZSA9IEBHZW5lcmF0b3JTdGF0ZUV4ZWN1dGluZzsK
LSAgICAgICAgICAgIHZhbHVlID0gZ2VuZXJhdG9yLkBnZW5lcmF0b3JOZXh0LkBjYWxsKGdlbmVy
YXRvci5AZ2VuZXJhdG9yVGhpcywgZ2VuZXJhdG9yLCBzdGF0ZSwgc2VudFZhbHVlLCByZXN1bWVN
b2RlKTsKKyAgICAgICAgICAgIHZhbHVlID0gZ2VuZXJhdG9yLkBnZW5lcmF0b3JOZXh0LkBjYWxs
KGdlbmVyYXRvci5AZ2VuZXJhdG9yVGhpcywgZ2VuZXJhdG9yLCBzdGF0ZSwgc2VudFZhbHVlLCBy
ZXN1bWVNb2RlLCBnZW5lcmF0b3IuQGdlbmVyYXRvckZyYW1lKTsKICAgICAgICAgICAgIGlmIChn
ZW5lcmF0b3IuQGdlbmVyYXRvclN0YXRlID09PSBAR2VuZXJhdG9yU3RhdGVFeGVjdXRpbmcpIHsK
ICAgICAgICAgICAgICAgICBnZW5lcmF0b3IuQGdlbmVyYXRvclN0YXRlID0gQEdlbmVyYXRvclN0
YXRlQ29tcGxldGVkOwogICAgICAgICAgICAgICAgIGRvbmUgPSB0cnVlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcAppbmRl
eCA3ZjE3YzBlZjEwYjQzM2ZhYzhmNThjYjNiOWNhNWQ0ZDAxNWJiYTA4Li5mOGFmYjIyNzQxNTVi
YjhjNjA2N2E4MmU5Y2I1NWIxYjM5YTQzMDBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcApAQCAtMjcsNiArMjcsNyBA
QAogI2luY2x1ZGUgIkJ5dGVjb2RlQmFzaWNCbG9jay5oIgogCiAjaW5jbHVkZSAiQ29kZUJsb2Nr
LmgiCisjaW5jbHVkZSAiSW50ZXJwcmV0ZXJJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5l
cy5oIgogI2luY2x1ZGUgIlByZWNpc2VKdW1wVGFyZ2V0cy5oIgogCkBAIC0zOCwzMyArMzksNiBA
QCB2b2lkIEJ5dGVjb2RlQmFzaWNCbG9jazo6c2hyaW5rVG9GaXQoKQogICAgIG1fc3VjY2Vzc29y
cy5zaHJpbmtUb0ZpdCgpOwogfQogCi1zdGF0aWMgYm9vbCBpc0JyYW5jaChPcGNvZGVJRCBvcGNv
ZGVJRCkKLXsKLSAgICBzd2l0Y2ggKG9wY29kZUlEKSB7Ci0gICAgY2FzZSBvcF9qbXA6Ci0gICAg
Y2FzZSBvcF9qdHJ1ZToKLSAgICBjYXNlIG9wX2pmYWxzZToKLSAgICBjYXNlIG9wX2plcV9udWxs
OgotICAgIGNhc2Ugb3Bfam5lcV9udWxsOgotICAgIGNhc2Ugb3Bfam5lcV9wdHI6Ci0gICAgY2Fz
ZSBvcF9qbGVzczoKLSAgICBjYXNlIG9wX2psZXNzZXE6Ci0gICAgY2FzZSBvcF9qZ3JlYXRlcjoK
LSAgICBjYXNlIG9wX2pncmVhdGVyZXE6Ci0gICAgY2FzZSBvcF9qbmxlc3M6Ci0gICAgY2FzZSBv
cF9qbmxlc3NlcToKLSAgICBjYXNlIG9wX2puZ3JlYXRlcjoKLSAgICBjYXNlIG9wX2puZ3JlYXRl
cmVxOgotICAgIGNhc2Ugb3Bfc3dpdGNoX2ltbToKLSAgICBjYXNlIG9wX3N3aXRjaF9jaGFyOgot
ICAgIGNhc2Ugb3Bfc3dpdGNoX3N0cmluZzoKLSAgICBjYXNlIG9wX3NhdmU6Ci0gICAgICAgIHJl
dHVybiB0cnVlOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci19
Ci0KIHN0YXRpYyBib29sIGlzVW5jb25kaXRpb25hbEJyYW5jaChPcGNvZGVJRCBvcGNvZGVJRCkK
IHsKICAgICBzd2l0Y2ggKG9wY29kZUlEKSB7CkBAIC0xMDUsMTUgKzc5LDIwIEBAIHN0YXRpYyBi
b29sIGlzSnVtcFRhcmdldChPcGNvZGVJRCBvcGNvZGVJRCwgY29uc3QgVmVjdG9yPHVuc2lnbmVk
LCAzMj4mIGp1bXBUYXJnCiAgICAgcmV0dXJuIHN0ZDo6YmluYXJ5X3NlYXJjaChqdW1wVGFyZ2V0
cy5iZWdpbigpLCBqdW1wVGFyZ2V0cy5lbmQoKSwgYnl0ZWNvZGVPZmZzZXQpOwogfQogCi1zdGF0
aWMgdm9pZCBsaW5rQmxvY2tzKEJ5dGVjb2RlQmFzaWNCbG9jayogcHJlZGVjZXNzb3IsIEJ5dGVj
b2RlQmFzaWNCbG9jayogc3VjY2Vzc29yKQotewotICAgIHByZWRlY2Vzc29yLT5hZGRTdWNjZXNz
b3Ioc3VjY2Vzc29yKTsKLX0KLQotdm9pZCBjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2NrcyhDb2Rl
QmxvY2sqIGNvZGVCbG9jaywgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxv
Y2s+PiYgYmFzaWNCbG9ja3MpCit0ZW1wbGF0ZTx0eXBlbmFtZSBCbG9jaywgdHlwZW5hbWUgSW5z
dHJ1Y3Rpb24+Cit2b2lkIEJ5dGVjb2RlQmFzaWNCbG9jazo6Y29tcHV0ZUJ5dGVjb2RlQmFzaWNC
bG9ja3NJbnRlcm5hbChCbG9jayogY29kZUJsb2NrLCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25z
QmVnaW4sIHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQsIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8
Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mIGJhc2ljQmxvY2tzKQogewogICAgIFZlY3Rvcjx1bnNpZ25l
ZCwgMzI+IGp1bXBUYXJnZXRzOwotICAgIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMoY29kZUJs
b2NrLCBqdW1wVGFyZ2V0cyk7CisgICAgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhjb2RlQmxv
Y2ssIGluc3RydWN0aW9uc0JlZ2luLCBpbnN0cnVjdGlvbkNvdW50LCBqdW1wVGFyZ2V0cyk7CisK
KyAgICBhdXRvIGFwcGVuZEJsb2NrID0gWyZdIChzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNp
Y0Jsb2NrPiYmIGJsb2NrKSB7CisgICAgICAgIGJsb2NrLT5tX2luZGV4ID0gYmFzaWNCbG9ja3Mu
c2l6ZSgpOworICAgICAgICBiYXNpY0Jsb2Nrcy5hcHBlbmQoV1RGTW92ZShibG9jaykpOworICAg
IH07CisKKyAgICBhdXRvIGxpbmtCbG9ja3MgPSBbJl0gKEJ5dGVjb2RlQmFzaWNCbG9jayogZnJv
bSwgQnl0ZWNvZGVCYXNpY0Jsb2NrKiB0bykgeworICAgICAgICBmcm9tLT5hZGRTdWNjZXNzb3Io
dG8pOworICAgIH07CiAKICAgICAvLyBDcmVhdGUgdGhlIGVudHJ5IGFuZCBleGl0IGJhc2ljIGJs
b2Nrcy4KICAgICBiYXNpY0Jsb2Nrcy5yZXNlcnZlQ2FwYWNpdHkoanVtcFRhcmdldHMuc2l6ZSgp
ICsgMik7CkBAIC0xMjIsMTkgKzEwMSwxNyBAQCB2b2lkIGNvbXB1dGVCeXRlY29kZUJhc2ljQmxv
Y2tzKENvZGVCbG9jayogY29kZUJsb2NrLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dAogICAg
IGF1dG8gZmlyc3RCbG9jayA9IHN0ZDo6bWFrZV91bmlxdWU8Qnl0ZWNvZGVCYXNpY0Jsb2NrPigw
LCAwKTsKICAgICBsaW5rQmxvY2tzKGVudHJ5LmdldCgpLCBmaXJzdEJsb2NrLmdldCgpKTsKIAot
ICAgIGJhc2ljQmxvY2tzLmFwcGVuZChXVEZNb3ZlKGVudHJ5KSk7CisgICAgYXBwZW5kQmxvY2so
V1RGTW92ZShlbnRyeSkpOwogICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogY3VycmVudCA9IGZpcnN0
QmxvY2suZ2V0KCk7Ci0gICAgYmFzaWNCbG9ja3MuYXBwZW5kKFdURk1vdmUoZmlyc3RCbG9jaykp
OworICAgIGFwcGVuZEJsb2NrKFdURk1vdmUoZmlyc3RCbG9jaykpOwogCiAgICAgYXV0byBleGl0
ID0gc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZUJhc2ljQmxvY2s+KEJ5dGVjb2RlQmFzaWNCbG9j
azo6RXhpdEJsb2NrKTsKIAogICAgIGJvb2wgbmV4dEluc3RydWN0aW9uSXNMZWFkZXIgPSBmYWxz
ZTsKIAogICAgIEludGVycHJldGVyKiBpbnRlcnByZXRlciA9IGNvZGVCbG9jay0+dm0oKS0+aW50
ZXJwcmV0ZXI7Ci0gICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luID0gY29kZUJsb2Nr
LT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpOwotICAgIHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQg
PSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLnNpemUoKTsKICAgICBmb3IgKHVuc2lnbmVkIGJ5
dGVjb2RlT2Zmc2V0ID0gMDsgYnl0ZWNvZGVPZmZzZXQgPCBpbnN0cnVjdGlvbkNvdW50Oykgewot
ICAgICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGludGVycHJldGVyLT5nZXRPcGNvZGVJRChpbnN0
cnVjdGlvbnNCZWdpbltieXRlY29kZU9mZnNldF0udS5vcGNvZGUpOworICAgICAgICBPcGNvZGVJ
RCBvcGNvZGVJRCA9IGludGVycHJldGVyLT5nZXRPcGNvZGVJRChpbnN0cnVjdGlvbnNCZWdpblti
eXRlY29kZU9mZnNldF0pOwogICAgICAgICB1bnNpZ25lZCBvcGNvZGVMZW5ndGggPSBvcGNvZGVM
ZW5ndGhzW29wY29kZUlEXTsKIAogICAgICAgICBib29sIGNyZWF0ZWRCbG9jayA9IGZhbHNlOwpA
QCAtMTQyLDcgKzExOSw3IEBAIHZvaWQgY29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MoQ29kZUJs
b2NrKiBjb2RlQmxvY2ssIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0CiAgICAgICAgIGlmIChp
c0p1bXBUYXJnZXQob3Bjb2RlSUQsIGp1bXBUYXJnZXRzLCBieXRlY29kZU9mZnNldCkgfHwgbmV4
dEluc3RydWN0aW9uSXNMZWFkZXIpIHsKICAgICAgICAgICAgIGF1dG8gbmV3QmxvY2sgPSBzdGQ6
Om1ha2VfdW5pcXVlPEJ5dGVjb2RlQmFzaWNCbG9jaz4oYnl0ZWNvZGVPZmZzZXQsIG9wY29kZUxl
bmd0aCk7CiAgICAgICAgICAgICBjdXJyZW50ID0gbmV3QmxvY2suZ2V0KCk7Ci0gICAgICAgICAg
ICBiYXNpY0Jsb2Nrcy5hcHBlbmQoV1RGTW92ZShuZXdCbG9jaykpOworICAgICAgICAgICAgYXBw
ZW5kQmxvY2soV1RGTW92ZShuZXdCbG9jaykpOwogICAgICAgICAgICAgY3JlYXRlZEJsb2NrID0g
dHJ1ZTsKICAgICAgICAgICAgIG5leHRJbnN0cnVjdGlvbklzTGVhZGVyID0gZmFsc2U7CiAgICAg
ICAgICAgICBieXRlY29kZU9mZnNldCArPSBvcGNvZGVMZW5ndGg7CkBAIC0xNjksOCArMTQ2LDcg
QEAgdm9pZCBjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2NrcyhDb2RlQmxvY2sqIGNvZGVCbG9jaywg
VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXQKIAogICAgICAgICBib29sIGZhbGxzVGhyb3VnaCA9
IHRydWU7IAogICAgICAgICBmb3IgKHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0ID0gYmxvY2stPmxl
YWRlckJ5dGVjb2RlT2Zmc2V0KCk7IGJ5dGVjb2RlT2Zmc2V0IDwgYmxvY2stPmxlYWRlckJ5dGVj
b2RlT2Zmc2V0KCkgKyBibG9jay0+dG90YWxCeXRlY29kZUxlbmd0aCgpOykgewotICAgICAgICAg
ICAgY29uc3QgSW5zdHJ1Y3Rpb24mIGN1cnJlbnRJbnN0cnVjdGlvbiA9IGluc3RydWN0aW9uc0Jl
Z2luW2J5dGVjb2RlT2Zmc2V0XTsKLSAgICAgICAgICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW50
ZXJwcmV0ZXItPmdldE9wY29kZUlEKGN1cnJlbnRJbnN0cnVjdGlvbi51Lm9wY29kZSk7CisgICAg
ICAgICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGludGVycHJldGVyLT5nZXRPcGNvZGVJRChpbnN0
cnVjdGlvbnNCZWdpbltieXRlY29kZU9mZnNldF0pOwogICAgICAgICAgICAgdW5zaWduZWQgb3Bj
b2RlTGVuZ3RoID0gb3Bjb2RlTGVuZ3Roc1tvcGNvZGVJRF07CiAgICAgICAgICAgICAvLyBJZiB3
ZSBmb3VuZCBhIHRlcm1pbmFsIGJ5dGVjb2RlLCBsaW5rIHRvIHRoZSBleGl0IGJsb2NrLgogICAg
ICAgICAgICAgaWYgKGlzVGVybWluYWwob3Bjb2RlSUQpKSB7CkBAIC0xODUsNyArMTYxLDcgQEAg
dm9pZCBjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2NrcyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgVmVj
dG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXQKICAgICAgICAgICAgIC8vIGJsb2NrIGJlY2F1c2UgdGhl
IGZpbmFsbHkgYmxvY2sgd2lsbCBjcmVhdGUgaXRzIG93biBjYXRjaCwgd2hpY2ggd2lsbCBnZW5l
cmF0ZSBhIEhhbmRsZXJJbmZvLgogICAgICAgICAgICAgaWYgKGlzVGhyb3cob3Bjb2RlSUQpKSB7
CiAgICAgICAgICAgICAgICAgQVNTRVJUKGJ5dGVjb2RlT2Zmc2V0ICsgb3Bjb2RlTGVuZ3RoID09
IGJsb2NrLT5sZWFkZXJCeXRlY29kZU9mZnNldCgpICsgYmxvY2stPnRvdGFsQnl0ZWNvZGVMZW5n
dGgoKSk7Ci0gICAgICAgICAgICAgICAgSGFuZGxlckluZm8qIGhhbmRsZXIgPSBjb2RlQmxvY2st
PmhhbmRsZXJGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCk7CisgICAgICAgICAgICAg
ICAgYXV0byogaGFuZGxlciA9IGNvZGVCbG9jay0+aGFuZGxlckZvckJ5dGVjb2RlT2Zmc2V0KGJ5
dGVjb2RlT2Zmc2V0KTsKICAgICAgICAgICAgICAgICBmYWxsc1Rocm91Z2ggPSBmYWxzZTsKICAg
ICAgICAgICAgICAgICBpZiAoIWhhbmRsZXIpIHsKICAgICAgICAgICAgICAgICAgICAgbGlua0Js
b2NrcyhibG9jaywgZXhpdC5nZXQoKSk7CkBAIC0yMDUsNyArMTgxLDcgQEAgdm9pZCBjb21wdXRl
Qnl0ZWNvZGVCYXNpY0Jsb2NrcyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgVmVjdG9yPHN0ZDo6dW5p
cXVlX3B0cjxCeXQKICAgICAgICAgICAgIGlmIChpc0JyYW5jaChvcGNvZGVJRCkpIHsKICAgICAg
ICAgICAgICAgICBBU1NFUlQoYnl0ZWNvZGVPZmZzZXQgKyBvcGNvZGVMZW5ndGggPT0gYmxvY2st
PmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCkgKyBibG9jay0+dG90YWxCeXRlY29kZUxlbmd0aCgpKTsK
ICAgICAgICAgICAgICAgICBWZWN0b3I8dW5zaWduZWQsIDE+IGJ5dGVjb2RlT2Zmc2V0c0p1bXBl
ZFRvOwotICAgICAgICAgICAgICAgIGZpbmRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KGNv
ZGVCbG9jaywgYnl0ZWNvZGVPZmZzZXQsIGJ5dGVjb2RlT2Zmc2V0c0p1bXBlZFRvKTsKKyAgICAg
ICAgICAgICAgICBmaW5kSnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChjb2RlQmxvY2ssIGlu
c3RydWN0aW9uc0JlZ2luLCBieXRlY29kZU9mZnNldCwgYnl0ZWNvZGVPZmZzZXRzSnVtcGVkVG8p
OwogCiAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGJhc2ljQmxvY2tz
LnNpemUoKTsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9jayog
b3RoZXJCbG9jayA9IGJhc2ljQmxvY2tzW2ldLmdldCgpOwpAQCAtMjI5LDEwICsyMDUsMjAgQEAg
dm9pZCBjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2NrcyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgVmVj
dG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXQKICAgICAgICAgfQogICAgIH0KIAotICAgIGJhc2ljQmxv
Y2tzLmFwcGVuZChXVEZNb3ZlKGV4aXQpKTsKKyAgICBhcHBlbmRCbG9jayhXVEZNb3ZlKGV4aXQp
KTsKICAgICAKICAgICBmb3IgKGF1dG8mIGJhc2ljQmxvY2sgOiBiYXNpY0Jsb2NrcykKICAgICAg
ICAgYmFzaWNCbG9jay0+c2hyaW5rVG9GaXQoKTsKIH0KIAordm9pZCBCeXRlY29kZUJhc2ljQmxv
Y2s6OmNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzKENvZGVCbG9jayogY29kZUJsb2NrLCBJbnN0
cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQsIFZl
Y3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mIGJhc2ljQmxvY2tzKQor
eworICAgIGNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzSW50ZXJuYWwoY29kZUJsb2NrLCBpbnN0
cnVjdGlvbnNCZWdpbiwgaW5zdHJ1Y3Rpb25Db3VudCwgYmFzaWNCbG9ja3MpOworfQorCit2b2lk
IEJ5dGVjb2RlQmFzaWNCbG9jazo6Y29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MoVW5saW5rZWRD
b2RlQmxvY2sqIGNvZGVCbG9jaywgVW5saW5rZWRJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVn
aW4sIHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQsIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0
ZWNvZGVCYXNpY0Jsb2NrPj4mIGJhc2ljQmxvY2tzKQoreworICAgIEJ5dGVjb2RlQmFzaWNCbG9j
azo6Y29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3NJbnRlcm5hbChjb2RlQmxvY2ssIGluc3RydWN0
aW9uc0JlZ2luLCBpbnN0cnVjdGlvbkNvdW50LCBiYXNpY0Jsb2Nrcyk7Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlQmFzaWNCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVj
b2RlQmFzaWNCbG9jay5oCmluZGV4IGNkNzE0NzdlZDUwNmFhNzg4MDIxNjVmYWNkYjdhNmQ0NmYz
OGRjMmEuLjdmMTg0ZjQ3NzYyMGFjYWQ3NDUxM2EwNTA4MmQ1NzgyMmRmZDg1MjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmgK
QEAgLTMzLDYgKzMzLDkgQEAKIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBDb2RlQmxvY2s7Citj
bGFzcyBVbmxpbmtlZENvZGVCbG9jazsKK3N0cnVjdCBJbnN0cnVjdGlvbjsKK3N0cnVjdCBVbmxp
bmtlZEluc3RydWN0aW9uOwogCiBjbGFzcyBCeXRlY29kZUJhc2ljQmxvY2sgewogICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtNDgsMTggKzUxLDI4IEBAIGNsYXNzIEJ5dGVjb2RlQmFz
aWNCbG9jayB7CiAgICAgdW5zaWduZWQgbGVhZGVyQnl0ZWNvZGVPZmZzZXQoKSB7IHJldHVybiBt
X2xlYWRlckJ5dGVjb2RlT2Zmc2V0OyB9CiAgICAgdW5zaWduZWQgdG90YWxCeXRlY29kZUxlbmd0
aCgpIHsgcmV0dXJuIG1fdG90YWxCeXRlY29kZUxlbmd0aDsgfQogCi0gICAgVmVjdG9yPHVuc2ln
bmVkPiYgYnl0ZWNvZGVPZmZzZXRzKCkgeyByZXR1cm4gbV9ieXRlY29kZU9mZnNldHM7IH0KLSAg
ICB2b2lkIGFkZEJ5dGVjb2RlTGVuZ3RoKHVuc2lnbmVkKTsKKyAgICBjb25zdCBWZWN0b3I8dW5z
aWduZWQ+JiBieXRlY29kZU9mZnNldHMoKSBjb25zdCB7IHJldHVybiBtX2J5dGVjb2RlT2Zmc2V0
czsgfQogCi0gICAgVmVjdG9yPEJ5dGVjb2RlQmFzaWNCbG9jayo+JiBzdWNjZXNzb3JzKCkgeyBy
ZXR1cm4gbV9zdWNjZXNzb3JzOyB9Ci0gICAgdm9pZCBhZGRTdWNjZXNzb3IoQnl0ZWNvZGVCYXNp
Y0Jsb2NrKiBibG9jaykgeyBtX3N1Y2Nlc3NvcnMuYXBwZW5kKGJsb2NrKTsgfQorICAgIGNvbnN0
IFZlY3RvcjxCeXRlY29kZUJhc2ljQmxvY2sqPiYgc3VjY2Vzc29ycygpIGNvbnN0IHsgcmV0dXJu
IG1fc3VjY2Vzc29yczsgfQogCiAgICAgRmFzdEJpdFZlY3RvciYgaW4oKSB7IHJldHVybiBtX2lu
OyB9CiAgICAgRmFzdEJpdFZlY3RvciYgb3V0KCkgeyByZXR1cm4gbV9vdXQ7IH0KIAorICAgIHVu
c2lnbmVkIGluZGV4KCkgY29uc3QgeyByZXR1cm4gbV9pbmRleDsgfQorCisgICAgc3RhdGljIHZv
aWQgY29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MoQ29kZUJsb2NrKiwgSW5zdHJ1Y3Rpb24qIGlu
c3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50LCBWZWN0b3I8c3RkOjp1
bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+Jik7CisgICAgc3RhdGljIHZvaWQgY29tcHV0
ZUJ5dGVjb2RlQmFzaWNCbG9ja3MoVW5saW5rZWRDb2RlQmxvY2sqLCBVbmxpbmtlZEluc3RydWN0
aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCwgVmVjdG9y
PHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYpOworCiBwcml2YXRlOgorICAg
IHRlbXBsYXRlPHR5cGVuYW1lIEJsb2NrLCB0eXBlbmFtZSBJbnN0cnVjdGlvbj4gc3RhdGljIHZv
aWQgY29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3NJbnRlcm5hbChCbG9jayogY29kZUJsb2NrLCBJ
bnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQs
IFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mIGJhc2ljQmxvY2tz
KTsKKworICAgIHZvaWQgYWRkU3VjY2Vzc29yKEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2spIHsg
bV9zdWNjZXNzb3JzLmFwcGVuZChibG9jayk7IH0KKworICAgIHZvaWQgYWRkQnl0ZWNvZGVMZW5n
dGgodW5zaWduZWQpOworCiAgICAgdW5zaWduZWQgbV9sZWFkZXJCeXRlY29kZU9mZnNldDsKICAg
ICB1bnNpZ25lZCBtX3RvdGFsQnl0ZWNvZGVMZW5ndGg7CisgICAgdW5zaWduZWQgbV9pbmRleDsK
IAogICAgIFZlY3Rvcjx1bnNpZ25lZD4gbV9ieXRlY29kZU9mZnNldHM7CiAgICAgVmVjdG9yPEJ5
dGVjb2RlQmFzaWNCbG9jayo+IG1fc3VjY2Vzc29yczsKQEAgLTY4LDggKzgxLDYgQEAgY2xhc3Mg
Qnl0ZWNvZGVCYXNpY0Jsb2NrIHsKICAgICBGYXN0Qml0VmVjdG9yIG1fb3V0OwogfTsKIAotdm9p
ZCBjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2NrcyhDb2RlQmxvY2sqLCBWZWN0b3I8c3RkOjp1bmlx
dWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+Jik7Ci0KIGlubGluZSBCeXRlY29kZUJhc2ljQmxv
Y2s6OkJ5dGVjb2RlQmFzaWNCbG9jayh1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgbGVuZ3RoKQog
ICAgIDogbV9sZWFkZXJCeXRlY29kZU9mZnNldChzdGFydCkKICAgICAsIG1fdG90YWxCeXRlY29k
ZUxlbmd0aChsZW5ndGgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43OGY3
YWJhMTRmNzkyYjRjMmRmYzlmYWJjNmFkYmYzM2JkYWJhZTE4Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9u
LmNwcApAQCAtMCwwICsxLDI2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBZdXN1a2Ug
U3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uaCIKKworI2luY2x1ZGUg
IkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGluZXMuaCIKKyNpbmNsdWRlICJCeXRlY29kZVJl
d3JpdGVyLmgiCisjaW5jbHVkZSAiQnl0ZWNvZGVVc2VEZWYuaCIKKyNpbmNsdWRlICJJZGVudGlm
aWVySW5saW5lcy5oIgorI2luY2x1ZGUgIkludGVycHJldGVySW5saW5lcy5oIgorI2luY2x1ZGUg
IkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgorI2luY2x1ZGUg
IkpTR2VuZXJhdG9yRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJTdHJvbmdJbmxpbmVzLmgiCisjaW5j
bHVkZSAiVW5saW5rZWRDb2RlQmxvY2suaCIKKyNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KKwor
bmFtZXNwYWNlIEpTQyB7CisKK3N0cnVjdCBZaWVsZERhdGEgeworICAgIHNpemVfdCBwb2ludCB7
IDAgfTsKKyAgICBpbnQgYXJndW1lbnQgeyAwIH07CisgICAgRmFzdEJpdFZlY3RvciBsaXZlbmVz
czsKK307CisKK2NsYXNzIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uIHsKK3B1YmxpYzoKKyAg
ICB0eXBlZGVmIFZlY3RvcjxZaWVsZERhdGE+IFlpZWxkczsKKworICAgIEJ5dGVjb2RlR2VuZXJh
dG9yaWZpY2F0aW9uKFVubGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFVubGlua2VkQ29kZUJs
b2NrOjpVbnBhY2tlZEluc3RydWN0aW9ucyYgaW5zdHJ1Y3Rpb25zLCBTeW1ib2xUYWJsZSogZ2Vu
ZXJhdG9yRnJhbWVTeW1ib2xUYWJsZSwgaW50IGdlbmVyYXRvckZyYW1lU3ltYm9sVGFibGVJbmRl
eCkKKyAgICAgICAgOiBtX2dyYXBoKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb25zKQorICAgICAgICAs
IG1fZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZSgqY29kZUJsb2NrLT52bSgpLCBnZW5lcmF0b3JG
cmFtZVN5bWJvbFRhYmxlKQorICAgICAgICAsIG1fZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZUlu
ZGV4KGdlbmVyYXRvckZyYW1lU3ltYm9sVGFibGVJbmRleCkKKyAgICB7CisgICAgICAgIGZvciAo
Qnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jayA6IG1fZ3JhcGgpIHsKKyAgICAgICAgICAgIGZvciAo
dW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQgOiBibG9jay0+Ynl0ZWNvZGVPZmZzZXRzKCkpIHsKKyAg
ICAgICAgICAgICAgICBjb25zdCBVbmxpbmtlZEluc3RydWN0aW9uKiBwYyA9ICZtX2dyYXBoLmlu
c3RydWN0aW9ucygpW2J5dGVjb2RlT2Zmc2V0XTsKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKHBj
LT51Lm9wY29kZSkgeworICAgICAgICAgICAgICAgIGNhc2Ugb3BfZW50ZXI6IHsKKyAgICAgICAg
ICAgICAgICAgICAgbV9lbnRlclBvaW50ID0gYnl0ZWNvZGVPZmZzZXQ7CisgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGNhc2Ug
b3BfeWllbGQ6IHsKKyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fs
c0luZGV4ID0gcGNbMl0udS5pbmRleDsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxpdmVDYWxs
ZWVMb2NhbHNJbmRleCA+PSBtX3lpZWxkcy5zaXplKCkpCisgICAgICAgICAgICAgICAgICAgICAg
ICBtX3lpZWxkcy5yZXNpemUobGl2ZUNhbGxlZUxvY2Fsc0luZGV4ICsgMSk7CisgICAgICAgICAg
ICAgICAgICAgIFlpZWxkRGF0YSYgZGF0YSA9IG1feWllbGRzW2xpdmVDYWxsZWVMb2NhbHNJbmRl
eF07CisgICAgICAgICAgICAgICAgICAgIGRhdGEucG9pbnQgPSBieXRlY29kZU9mZnNldDsKKyAg
ICAgICAgICAgICAgICAgICAgZGF0YS5hcmd1bWVudCA9IHBjWzNdLnUub3BlcmFuZDsKKyAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgc3RydWN0IFN0b3JhZ2Ug
eworICAgICAgICBJZGVudGlmaWVyIGlkZW50aWZpZXI7CisgICAgICAgIHVuc2lnbmVkIGlkZW50
aWZpZXJJbmRleDsKKyAgICAgICAgU2NvcGVPZmZzZXQgc2NvcGVPZmZzZXQ7CisgICAgfTsKKwor
ICAgIHZvaWQgcnVuKCk7CisKKyAgICBCeXRlY29kZUdyYXBoPFVubGlua2VkQ29kZUJsb2NrPiYg
Z3JhcGgoKSB7IHJldHVybiBtX2dyYXBoOyB9CisKKyAgICBjb25zdCBZaWVsZHMmIHlpZWxkcygp
IGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV95aWVsZHM7CisgICAgfQorCisgICAgWWll
bGRzJiB5aWVsZHMoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1feWllbGRzOworICAgIH0KKwor
ICAgIHVuc2lnbmVkIGVudGVyUG9pbnQoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1f
ZW50ZXJQb2ludDsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgU3RvcmFnZSBzdG9yYWdlRm9yR2Vu
ZXJhdG9yTG9jYWwodW5zaWduZWQgaW5kZXgpCisgICAgeworICAgICAgICAvLyBXZSBhc3NpZ24g
YSBzeW1ib2wgdG8gYSByZWdpc3Rlci4gVGhlcmUgaXMgb25lLW9uLW9uZSBjb3JyZXNwb25kaW5n
IGJldHdlZW4gYSByZWdpc3RlciBhbmQgYSBzeW1ib2wuCisgICAgICAgIC8vIEJ5IGRvaW5nIHNv
LCB3ZSBhbGxvY2F0ZSB0aGUgc3BlY2lmaWMgc3RvcmFnZSB0byBzYXZlIHRoZSBnaXZlbiByZWdp
c3Rlci4KKyAgICAgICAgLy8gVGhpcyBhbGxvdyB1cyBub3QgdG8gc2F2ZSBhbGwgdGhlIGxpdmUg
cmVnaXN0ZXJzIGV2ZW4gaWYgdGhlIHJlZ2lzdGVycyBhcmUgbm90IG92ZXJ3cml0dGVuIGZyb20g
dGhlIHByZXZpb3VzIHJlc3VtaW5nIHRpbWUuCisgICAgICAgIC8vIEl0IG1lYW5zIHRoYXQsIHRo
ZSByZWdpc3RlciBjYW4gYmUgcmV0cmlldmVkIGV2ZW4gaWYgdGhlIGltbWVkaWF0ZSBwcmV2aW91
cyBvcF9zYXZlIGRvZXMgbm90IHNhdmUgaXQuCisKKyAgICAgICAgaWYgKG1fc3RvcmFnZXMuc2l6
ZSgpIDw9IGluZGV4KQorICAgICAgICAgICAgbV9zdG9yYWdlcy5yZXNpemUoaW5kZXggKyAxKTsK
KyAgICAgICAgaWYgKE9wdGlvbmFsPFN0b3JhZ2U+IHN0b3JhZ2UgPSBtX3N0b3JhZ2VzW2luZGV4
XSkKKyAgICAgICAgICAgIHJldHVybiAqc3RvcmFnZTsKKworICAgICAgICBVbmxpbmtlZENvZGVC
bG9jayogY29kZUJsb2NrID0gbV9ncmFwaC5jb2RlQmxvY2soKTsKKyAgICAgICAgSWRlbnRpZmll
ciBpZGVudGlmaWVyID0gSWRlbnRpZmllcjo6ZnJvbVVpZChQcml2YXRlTmFtZSgpKTsKKyAgICAg
ICAgdW5zaWduZWQgaWRlbnRpZmllckluZGV4ID0gY29kZUJsb2NrLT5udW1iZXJPZklkZW50aWZp
ZXJzKCk7CisgICAgICAgIGNvZGVCbG9jay0+YWRkSWRlbnRpZmllcihpZGVudGlmaWVyKTsKKyAg
ICAgICAgU2NvcGVPZmZzZXQgc2NvcGVPZmZzZXQgPSBtX2dlbmVyYXRvckZyYW1lU3ltYm9sVGFi
bGUtPnRha2VOZXh0U2NvcGVPZmZzZXQoTm9Mb2NraW5nTmVjZXNzYXJ5KTsKKyAgICAgICAgbV9n
ZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlLT5zZXQoTm9Mb2NraW5nTmVjZXNzYXJ5LCBpZGVudGlm
aWVyLmltcGwoKSwgU3ltYm9sVGFibGVFbnRyeShWYXJPZmZzZXQoc2NvcGVPZmZzZXQpKSk7CisK
KyAgICAgICAgU3RvcmFnZSBzdG9yYWdlID0geworICAgICAgICAgICAgaWRlbnRpZmllciwKKyAg
ICAgICAgICAgIGlkZW50aWZpZXJJbmRleCwKKyAgICAgICAgICAgIHNjb3BlT2Zmc2V0CisgICAg
ICAgIH07CisgICAgICAgIG1fc3RvcmFnZXNbaW5kZXhdID0gc3RvcmFnZTsKKyAgICAgICAgcmV0
dXJuIHN0b3JhZ2U7CisgICAgfQorCisgICAgdW5zaWduZWQgbV9lbnRlclBvaW50IHsgMCB9Owor
ICAgIEJ5dGVjb2RlR3JhcGg8VW5saW5rZWRDb2RlQmxvY2s+IG1fZ3JhcGg7CisgICAgVmVjdG9y
PE9wdGlvbmFsPFN0b3JhZ2U+PiBtX3N0b3JhZ2VzOworICAgIFlpZWxkcyBtX3lpZWxkczsKKyAg
ICBTdHJvbmc8U3ltYm9sVGFibGU+IG1fZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZTsKKyAgICBp
bnQgbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlSW5kZXg7Cit9OworCitjbGFzcyBHZW5lcmF0
b3JMaXZlbmVzc0FuYWx5c2lzIDogcHVibGljIEJ5dGVjb2RlTGl2ZW5lc3NQcm9wYWdhdGlvbjxH
ZW5lcmF0b3JMaXZlbmVzc0FuYWx5c2lzPiB7CitwdWJsaWM6CisgICAgR2VuZXJhdG9yTGl2ZW5l
c3NBbmFseXNpcyhCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbiYgZ2VuZXJhdG9yaWZpY2F0aW9u
KQorICAgICAgICA6IG1fZ2VuZXJhdG9yaWZpY2F0aW9uKGdlbmVyYXRvcmlmaWNhdGlvbikKKyAg
ICB7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KKyAgICB2b2lkIGNv
bXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoVW5saW5rZWRDb2RlQmxvY2sqIGNvZGVCbG9jaywg
T3Bjb2RlSUQgb3Bjb2RlSUQsIFVubGlua2VkSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBGYXN0
Qml0VmVjdG9yJiwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikKKyAgICB7CisgICAgICAgIEpTQzo6
Y29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChjb2RlQmxvY2ssIG9wY29kZUlELCBpbnN0cnVj
dGlvbiwgZnVuY3Rvcik7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4K
KyAgICB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoVW5saW5rZWRDb2RlQmxvY2sq
IGNvZGVCbG9jaywgT3Bjb2RlSUQgb3Bjb2RlSUQsIFVubGlua2VkSW5zdHJ1Y3Rpb24qIGluc3Ry
dWN0aW9uLCBGYXN0Qml0VmVjdG9yJiwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikKKyAgICB7Cisg
ICAgICAgIEpTQzo6Y29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldChjb2RlQmxvY2ssIG9wY29k
ZUlELCBpbnN0cnVjdGlvbiwgZnVuY3Rvcik7CisgICAgfQorCisgICAgdm9pZCBydW4oKQorICAg
IHsKKyAgICAgICAgLy8gUGVyZm9ybSBtb2RpZmllZCBsaXZlbmVzcyBhbmFseXNpcyB0byBkZXRl
cm1pbmUgd2hpY2ggbG9jYWxzIGFyZSBsaXZlIGF0IHRoZSBtZXJnZSBwb2ludHMuCisgICAgICAg
IC8vIFRoaXMgcHJvZHVjZXMgdGhlIGNvbnNlcnZhdGl2ZSByZXN1bHRzIGZvciB0aGUgcXVlc3Rp
b24sICJ3aGljaCB2YXJpYWJsZXMgc2hvdWxkIGJlIHNhdmVkIGFuZCByZXN1bWVkPyIuCisKKyAg
ICAgICAgcnVuTGl2ZW5lc3NGaXhwb2ludChtX2dlbmVyYXRvcmlmaWNhdGlvbi5ncmFwaCgpKTsK
KworICAgICAgICBmb3IgKFlpZWxkRGF0YSYgZGF0YSA6IG1fZ2VuZXJhdG9yaWZpY2F0aW9uLnlp
ZWxkcygpKQorICAgICAgICAgICAgZGF0YS5saXZlbmVzcyA9IGdldExpdmVuZXNzSW5mb0F0Qnl0
ZWNvZGVPZmZzZXQobV9nZW5lcmF0b3JpZmljYXRpb24uZ3JhcGgoKSwgZGF0YS5wb2ludCArIG9w
Y29kZUxlbmd0aChvcF95aWVsZCkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBCeXRlY29kZUdl
bmVyYXRvcmlmaWNhdGlvbiYgbV9nZW5lcmF0b3JpZmljYXRpb247Cit9OworCit2b2lkIEJ5dGVj
b2RlR2VuZXJhdG9yaWZpY2F0aW9uOjpydW4oKQoreworICAgIC8vIFdlIGNhbGN1bGF0ZSB0aGUg
bGl2ZW5lc3MgYXQgZWFjaCBtZXJnZSBwb2ludC4gVGhpcyBnaXZlcyB1cyB0aGUgaW5mb3JtYXRp
b24gd2hpY2ggcmVnaXN0ZXJzIHNob3VsZCBiZSBzYXZlZCBhbmQgcmVzdW1lZCBjb25zZXJ2YXRp
dmVseS4KKworICAgIHsKKyAgICAgICAgR2VuZXJhdG9yTGl2ZW5lc3NBbmFseXNpcyBwYXNzKCp0
aGlzKTsKKyAgICAgICAgcGFzcy5ydW4oKTsKKyAgICB9CisKKyAgICBVbmxpbmtlZENvZGVCbG9j
ayogY29kZUJsb2NrID0gbV9ncmFwaC5jb2RlQmxvY2soKTsKKyAgICBCeXRlY29kZVJld3JpdGVy
IHJld3JpdGVyKG1fZ3JhcGgpOworCisgICAgLy8gU2V0dXAgdGhlIGdsb2JhbCBzd2l0Y2ggZm9y
IHRoZSBnZW5lcmF0b3IuCisgICAgeworICAgICAgICB1bnNpZ25lZCBuZXh0VG9FbnRlclBvaW50
ID0gZW50ZXJQb2ludCgpICsgb3Bjb2RlTGVuZ3RoKG9wX2VudGVyKTsKKyAgICAgICAgVmlydHVh
bFJlZ2lzdGVyIHN0YXRlID0gdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoc3RhdGljX2Nhc3Q8
aW50MzJfdD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6R2VuZXJhdG9yQXJndW1lbnQ6OlN0YXRlKSk7
CisgICAgICAgIGF1dG8mIGp1bXBUYWJsZSA9IHJld3JpdGVyLmluc2VydFN3aXRjaEltbWVkaWF0
ZUJlZm9yZShuZXh0VG9FbnRlclBvaW50LCBuZXh0VG9FbnRlclBvaW50LCBzdGF0ZS5vZmZzZXQo
KSk7CisgICAgICAgIGp1bXBUYWJsZS5taW4gPSAwOworICAgICAgICBqdW1wVGFibGUuYnJhbmNo
T2Zmc2V0cy5yZXNpemUobV95aWVsZHMuc2l6ZSgpICsgMSk7CisgICAgICAgIGp1bXBUYWJsZS5i
cmFuY2hPZmZzZXRzLmZpbGwoMCk7CisgICAgICAgIGp1bXBUYWJsZS5hZGQoMCwgbmV4dFRvRW50
ZXJQb2ludCk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3lpZWxkcy5zaXpl
KCk7ICsraSkKKyAgICAgICAgICAgIGp1bXBUYWJsZS5hZGQoaSArIDEsIG1feWllbGRzW2ldLnBv
aW50KTsKKyAgICB9CisKKyAgICBmb3IgKGNvbnN0IFlpZWxkRGF0YSYgZGF0YSA6IG1feWllbGRz
KSB7CisgICAgICAgIFZpcnR1YWxSZWdpc3RlciBzY29wZSA9IHZpcnR1YWxSZWdpc3RlckZvckFy
Z3VtZW50KHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yRnVuY3Rpb246OkdlbmVyYXRv
ckFyZ3VtZW50OjpGcmFtZSkpOworCisgICAgICAgIC8vIEVtaXQgc2F2ZSBzZXF1ZW5jZS4KKyAg
ICAgICAgcmV3cml0ZXIuaW5zZXJ0RnJhZ21lbnRCZWZvcmUoZGF0YS5wb2ludCwgWyZdKEJ5dGVj
b2RlUmV3cml0ZXI6OkZyYWdtZW50JiBmcmFnbWVudCkgeworICAgICAgICAgICAgZGF0YS5saXZl
bmVzcy5mb3JFYWNoU2V0Qml0KFsmXShzaXplX3QgaW5kZXgpIHsKKyAgICAgICAgICAgICAgICBW
aXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCA9IHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGluZGV4KTsK
KyAgICAgICAgICAgICAgICBTdG9yYWdlIHN0b3JhZ2UgPSBzdG9yYWdlRm9yR2VuZXJhdG9yTG9j
YWwoaW5kZXgpOworCisgICAgICAgICAgICAgICAgZnJhZ21lbnQuYXBwZW5kKAorICAgICAgICAg
ICAgICAgICAgICBvcF9wdXRfdG9fc2NvcGUsCisgICAgICAgICAgICAgICAgICAgIHNjb3BlLm9m
ZnNldCgpLCAvLyBzY29wZQorICAgICAgICAgICAgICAgICAgICBzdG9yYWdlLmlkZW50aWZpZXJJ
bmRleCwgLy8gaWRlbnRpZmllcgorICAgICAgICAgICAgICAgICAgICBvcGVyYW5kLm9mZnNldCgp
LCAvLyB2YWx1ZQorICAgICAgICAgICAgICAgICAgICBHZXRQdXRJbmZvKERvTm90VGhyb3dJZk5v
dEZvdW5kLCBMb2NhbENsb3N1cmVWYXIsIEluaXRpYWxpemF0aW9uTW9kZTo6Tm90SW5pdGlhbGl6
YXRpb24pLm9wZXJhbmQoKSwgLy8gaW5mbworICAgICAgICAgICAgICAgICAgICBtX2dlbmVyYXRv
ckZyYW1lU3ltYm9sVGFibGVJbmRleCwgLy8gc3ltYm9sIHRhYmxlIGNvbnN0YW50IGluZGV4Cisg
ICAgICAgICAgICAgICAgICAgIHN0b3JhZ2Uuc2NvcGVPZmZzZXQub2Zmc2V0KCkgLy8gc2NvcGUg
b2Zmc2V0CisgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAg
ICAvLyBJbnNlcnQgb3BfcmV0IGp1c3QgYWZ0ZXIgc2F2ZSBzZXF1ZW5jZS4KKyAgICAgICAgICAg
IGZyYWdtZW50LmFwcGVuZChvcF9yZXQsIGRhdGEuYXJndW1lbnQpOworICAgICAgICB9KTsKKwor
ICAgICAgICAvLyBFbWl0IHJlc3VtZSBzZXF1ZW5jZS4KKyAgICAgICAgcmV3cml0ZXIuaW5zZXJ0
RnJhZ21lbnRCZWZvcmUoZGF0YS5wb2ludCArIG9wY29kZUxlbmd0aChvcF95aWVsZCksIFsmXShC
eXRlY29kZVJld3JpdGVyOjpGcmFnbWVudCYgZnJhZ21lbnQpIHsKKyAgICAgICAgICAgIGRhdGEu
bGl2ZW5lc3MuZm9yRWFjaFNldEJpdChbJl0oc2l6ZV90IGluZGV4KSB7CisgICAgICAgICAgICAg
ICAgVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQgPSB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChpbmRl
eCk7CisgICAgICAgICAgICAgICAgU3RvcmFnZSBzdG9yYWdlID0gc3RvcmFnZUZvckdlbmVyYXRv
ckxvY2FsKGluZGV4KTsKKworICAgICAgICAgICAgICAgIFVubGlua2VkVmFsdWVQcm9maWxlIHBy
b2ZpbGUgPSBjb2RlQmxvY2stPmFkZFZhbHVlUHJvZmlsZSgpOworICAgICAgICAgICAgICAgIGZy
YWdtZW50LmFwcGVuZCgKKyAgICAgICAgICAgICAgICAgICAgb3BfZ2V0X2Zyb21fc2NvcGUsCisg
ICAgICAgICAgICAgICAgICAgIG9wZXJhbmQub2Zmc2V0KCksIC8vIGRzdAorICAgICAgICAgICAg
ICAgICAgICBzY29wZS5vZmZzZXQoKSwgLy8gc2NvcGUKKyAgICAgICAgICAgICAgICAgICAgc3Rv
cmFnZS5pZGVudGlmaWVySW5kZXgsIC8vIGlkZW50aWZpZXIKKyAgICAgICAgICAgICAgICAgICAg
R2V0UHV0SW5mbyhEb05vdFRocm93SWZOb3RGb3VuZCwgTG9jYWxDbG9zdXJlVmFyLCBJbml0aWFs
aXphdGlvbk1vZGU6Ok5vdEluaXRpYWxpemF0aW9uKS5vcGVyYW5kKCksIC8vIGluZm8KKyAgICAg
ICAgICAgICAgICAgICAgMCwgLy8gbG9jYWwgc2NvcGUgZGVwdGgKKyAgICAgICAgICAgICAgICAg
ICAgc3RvcmFnZS5zY29wZU9mZnNldC5vZmZzZXQoKSwgLy8gc2NvcGUgb2Zmc2V0CisgICAgICAg
ICAgICAgICAgICAgIHByb2ZpbGUgLy8gcHJvZmlsZQorICAgICAgICAgICAgICAgICk7CisgICAg
ICAgICAgICB9KTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgLy8gQ2xpcCB0aGUgdW5uZWNlc3Nh
cnkgYnl0ZWNvZGVzLgorICAgICAgICByZXdyaXRlci5yZW1vdmVCeXRlY29kZShkYXRhLnBvaW50
KTsKKyAgICB9CisKKyAgICByZXdyaXRlci5leGVjdXRlKCk7Cit9CisKK3ZvaWQgcGVyZm9ybUdl
bmVyYXRvcmlmaWNhdGlvbihVbmxpbmtlZENvZGVCbG9jayogY29kZUJsb2NrLCBVbmxpbmtlZENv
ZGVCbG9jazo6VW5wYWNrZWRJbnN0cnVjdGlvbnMmIGluc3RydWN0aW9ucywgU3ltYm9sVGFibGUq
IGdlbmVyYXRvckZyYW1lU3ltYm9sVGFibGUsIGludCBnZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxl
SW5kZXgpCit7CisgICAgQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24gcGFzcyhjb2RlQmxvY2ss
IGluc3RydWN0aW9ucywgZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZSwgZ2VuZXJhdG9yRnJhbWVT
eW1ib2xUYWJsZUluZGV4KTsKKyAgICBwYXNzLnJ1bigpOworfQorCit9IC8vIG5hbWVzcGFjZSBK
U0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUdl
bmVyYXRvcmlmaWNhdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVj
b2RlR2VuZXJhdG9yaWZpY2F0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzdiNjEzNzQ2MDg2YWUzNGM0YzBh
MjJiZjRlNjdjNzZlNmNmZDRlOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5oCkBAIC0wLDAgKzEsMzcg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFA
Z21haWwuY29tPgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJVbmxpbmtlZENv
ZGVCbG9jay5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgU3ltYm9sVGFibGU7CisKK3Zv
aWQgcGVyZm9ybUdlbmVyYXRvcmlmaWNhdGlvbihVbmxpbmtlZENvZGVCbG9jayosIFVubGlua2Vk
Q29kZUJsb2NrOjpVbnBhY2tlZEluc3RydWN0aW9ucyYsIFN5bWJvbFRhYmxlKiBnZW5lcmF0b3JG
cmFtZVN5bWJvbFRhYmxlLCBpbnQgZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZUluZGV4KTsKKwor
fSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVHcmFwaC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlR3JhcGguaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYzM2ODE2YzA2NDMyMTVhZTMxNTc3YTUyYWQ4NDVh
NTc5MjM1ZGY0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlR3JhcGguaApAQCAtMCwwICsxLDEyNCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNiBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQnl0ZWNvZGVCYXNpY0Jsb2NrLmgiCisjaW5jbHVk
ZSA8d3RmL0luZGV4ZWRDb250YWluZXJJdGVyYXRvci5oPgorI2luY2x1ZGUgPHd0Zi9JdGVyYXRv
clJhbmdlLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgSlNDIHsKKwor
Y2xhc3MgQnl0ZWNvZGVCYXNpY0Jsb2NrOworCit0ZW1wbGF0ZTx0eXBlbmFtZSBCbG9jaz4KK2Ns
YXNzIEJ5dGVjb2RlR3JhcGggeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKEJ5dGVjb2RlR3JhcGgpOworcHVibGljOgorICAgIHR5cGVkZWYg
QmxvY2sgQ29kZUJsb2NrOworICAgIHR5cGVkZWYgdHlwZW5hbWUgQmxvY2s6Okluc3RydWN0aW9u
IEluc3RydWN0aW9uOworICAgIHR5cGVkZWYgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29k
ZUJhc2ljQmxvY2s+PiBCYXNpY0Jsb2Nrc1ZlY3RvcjsKKworICAgIGlubGluZSBCeXRlY29kZUdy
YXBoKEJsb2NrKiwgdHlwZW5hbWUgQmxvY2s6OlVucGFja2VkSW5zdHJ1Y3Rpb25zJik7CisKKyAg
ICBCbG9jayogY29kZUJsb2NrKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2s7IH0KKworICAg
IHR5cGVuYW1lIEJsb2NrOjpVbnBhY2tlZEluc3RydWN0aW9ucyYgaW5zdHJ1Y3Rpb25zKCkgeyBy
ZXR1cm4gbV9pbnN0cnVjdGlvbnM7IH0KKworICAgIFdURjo6SXRlcmF0b3JSYW5nZTxCYXNpY0Js
b2Nrc1ZlY3Rvcjo6cmV2ZXJzZV9pdGVyYXRvcj4gYmFzaWNCbG9ja3NJblJldmVyc2VPcmRlcigp
CisgICAgeworICAgICAgICByZXR1cm4gV1RGOjptYWtlSXRlcmF0b3JSYW5nZShtX2Jhc2ljQmxv
Y2tzLnJiZWdpbigpLCBtX2Jhc2ljQmxvY2tzLnJlbmQoKSk7CisgICAgfQorCisgICAgc3RhdGlj
IGJvb2wgYmxvY2tDb250YWluc0J5dGVjb2RlT2Zmc2V0KEJ5dGVjb2RlQmFzaWNCbG9jayogYmxv
Y2ssIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KQorICAgIHsKKyAgICAgICAgdW5zaWduZWQgbGVh
ZGVyT2Zmc2V0ID0gYmxvY2stPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCk7CisgICAgICAgIHJldHVy
biBieXRlY29kZU9mZnNldCA+PSBsZWFkZXJPZmZzZXQgJiYgYnl0ZWNvZGVPZmZzZXQgPCBsZWFk
ZXJPZmZzZXQgKyBibG9jay0+dG90YWxCeXRlY29kZUxlbmd0aCgpOworICAgIH0KKworICAgIEJ5
dGVjb2RlQmFzaWNCbG9jayogZmluZEJhc2ljQmxvY2tGb3JCeXRlY29kZU9mZnNldCh1bnNpZ25l
ZCBieXRlY29kZU9mZnNldCkKKyAgICB7CisgICAgICAgIC8qCisgICAgICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgbV9iYXNpY0Jsb2Nrcy5zaXplKCk7IGkrKykgeworICAgICAgICAg
ICAgICAgIGlmIChibG9ja0NvbnRhaW5zQnl0ZWNvZGVPZmZzZXQobV9iYXNpY0Jsb2Nrc1tpXS5n
ZXQoKSwgYnl0ZWNvZGVPZmZzZXQpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbV9iYXNp
Y0Jsb2Nrc1tpXS5nZXQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiAwOwor
ICAgICAgICAqLworCisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+
KiBiYXNpY0Jsb2NrID0gYXBwcm94aW1hdGVCaW5hcnlTZWFyY2g8c3RkOjp1bmlxdWVfcHRyPEJ5
dGVjb2RlQmFzaWNCbG9jaz4sIHVuc2lnbmVkPihtX2Jhc2ljQmxvY2tzLCBtX2Jhc2ljQmxvY2tz
LnNpemUoKSwgYnl0ZWNvZGVPZmZzZXQsIFtdIChzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNp
Y0Jsb2NrPiogYmFzaWNCbG9jaykgeyByZXR1cm4gKCpiYXNpY0Jsb2NrKS0+bGVhZGVyQnl0ZWNv
ZGVPZmZzZXQoKTsgfSk7CisgICAgICAgIC8vIFdlIGZvdW5kIHRoZSBibG9jayB3ZSB3ZXJlIGxv
b2tpbmcgZm9yLgorICAgICAgICBpZiAoYmxvY2tDb250YWluc0J5dGVjb2RlT2Zmc2V0KCgqYmFz
aWNCbG9jaykuZ2V0KCksIGJ5dGVjb2RlT2Zmc2V0KSkKKyAgICAgICAgICAgIHJldHVybiAoKmJh
c2ljQmxvY2spLmdldCgpOworCisgICAgICAgIC8vIEJhc2ljIGJsb2NrIGlzIHRvIHRoZSBsZWZ0
IG9mIHRoZSByZXR1cm5lZCBibG9jay4KKyAgICAgICAgaWYgKGJ5dGVjb2RlT2Zmc2V0IDwgKCpi
YXNpY0Jsb2NrKS0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKSkgeworICAgICAgICAgICAgQVNTRVJU
KGJhc2ljQmxvY2sgLSAxID49IG1fYmFzaWNCbG9ja3MuZGF0YSgpKTsKKyAgICAgICAgICAgIEFT
U0VSVChibG9ja0NvbnRhaW5zQnl0ZWNvZGVPZmZzZXQoYmFzaWNCbG9ja1stMV0uZ2V0KCksIGJ5
dGVjb2RlT2Zmc2V0KSk7CisgICAgICAgICAgICByZXR1cm4gYmFzaWNCbG9ja1stMV0uZ2V0KCk7
CisgICAgICAgIH0KKworICAgICAgICAvLyBCYXNpYyBibG9jayBpcyB0byB0aGUgcmlnaHQgb2Yg
dGhlIHJldHVybmVkIGJsb2NrLgorICAgICAgICBBU1NFUlQoJmJhc2ljQmxvY2tbMV0gPD0gJm1f
YmFzaWNCbG9ja3MubGFzdCgpKTsKKyAgICAgICAgQVNTRVJUKGJsb2NrQ29udGFpbnNCeXRlY29k
ZU9mZnNldChiYXNpY0Jsb2NrWzFdLmdldCgpLCBieXRlY29kZU9mZnNldCkpOworICAgICAgICBy
ZXR1cm4gYmFzaWNCbG9ja1sxXS5nZXQoKTsKKyAgICB9CisKKyAgICBCeXRlY29kZUJhc2ljQmxv
Y2sqIGZpbmRCYXNpY0Jsb2NrV2l0aExlYWRlck9mZnNldCh1bnNpZ25lZCBsZWFkZXJPZmZzZXQp
CisgICAgeworICAgICAgICByZXR1cm4gKCp0cnlCaW5hcnlTZWFyY2g8c3RkOjp1bmlxdWVfcHRy
PEJ5dGVjb2RlQmFzaWNCbG9jaz4sIHVuc2lnbmVkPihtX2Jhc2ljQmxvY2tzLCBtX2Jhc2ljQmxv
Y2tzLnNpemUoKSwgbGVhZGVyT2Zmc2V0LCBbXSAoc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFz
aWNCbG9jaz4qIGJhc2ljQmxvY2spIHsgcmV0dXJuICgqYmFzaWNCbG9jayktPmxlYWRlckJ5dGVj
b2RlT2Zmc2V0KCk7IH0pKS5nZXQoKTsKKyAgICB9CisKKyAgICB1bnNpZ25lZCBzaXplKCkgY29u
c3QgeyByZXR1cm4gbV9iYXNpY0Jsb2Nrcy5zaXplKCk7IH0KKyAgICBCeXRlY29kZUJhc2ljQmxv
Y2sqIGF0KHVuc2lnbmVkIGluZGV4KSBjb25zdCB7IHJldHVybiBtX2Jhc2ljQmxvY2tzW2luZGV4
XS5nZXQoKTsgfQorICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogb3BlcmF0b3JbXSh1bnNpZ25lZCBp
bmRleCkgY29uc3QgeyByZXR1cm4gYXQoaW5kZXgpOyB9CisKKyAgICB0eXBlZGVmIFdURjo6SW5k
ZXhlZENvbnRhaW5lckl0ZXJhdG9yPEJ5dGVjb2RlR3JhcGg8QmxvY2s+PiBpdGVyYXRvcjsKKwor
ICAgIGl0ZXJhdG9yIGJlZ2luKCkgY29uc3QgeyByZXR1cm4gaXRlcmF0b3IoKnRoaXMsIDApOyB9
CisgICAgaXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gaXRlcmF0b3IoKnRoaXMsIHNpemUo
KSk7IH0KKyAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGZpcnN0KCkgeyByZXR1cm4gYXQoMCk7IH0K
KyAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGxhc3QoKSB7IHJldHVybiBhdChzaXplKCkgLSAxKTsg
fQorCitwcml2YXRlOgorICAgIEJsb2NrKiBtX2NvZGVCbG9jazsKKyAgICBCYXNpY0Jsb2Nrc1Zl
Y3RvciBtX2Jhc2ljQmxvY2tzOworICAgIHR5cGVuYW1lIEJsb2NrOjpVbnBhY2tlZEluc3RydWN0
aW9ucyYgbV9pbnN0cnVjdGlvbnM7Cit9OworCisKK3RlbXBsYXRlPHR5cGVuYW1lIEJsb2NrPgor
Qnl0ZWNvZGVHcmFwaDxCbG9jaz46OkJ5dGVjb2RlR3JhcGgoQmxvY2sqIGNvZGVCbG9jaywgdHlw
ZW5hbWUgQmxvY2s6OlVucGFja2VkSW5zdHJ1Y3Rpb25zJiBpbnN0cnVjdGlvbnMpCisgICAgOiBt
X2NvZGVCbG9jayhjb2RlQmxvY2spCisgICAgLCBtX2luc3RydWN0aW9ucyhpbnN0cnVjdGlvbnMp
Cit7CisgICAgQVNTRVJUKG1fY29kZUJsb2NrKTsKKyAgICBCeXRlY29kZUJhc2ljQmxvY2s6OmNv
bXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzKG1fY29kZUJsb2NrLCBpbnN0cnVjdGlvbnMuYmVnaW4o
KSwgaW5zdHJ1Y3Rpb25zLnNpemUoKSwgbV9iYXNpY0Jsb2Nrcyk7CisgICAgQVNTRVJUKG1fYmFz
aWNCbG9ja3Muc2l6ZSgpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24gYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24KaW5kZXggZTM4MDI1ZDVh
ZmNmNjljZTQ4MGFlOTI4OThjOTM4ZTkzMTI3ODhkOS4uY2U2MGRhNGEyNmJjMzQ3N2ZkNDcxOWIw
YTRiMWZlY2U1ODljNjE5ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlTGlzdC5qc29uCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZUxpc3QuanNvbgpAQCAtMTQzLDggKzE0Myw3IEBACiAgICAgICAgICAgICB7ICJu
YW1lIiA6ICJvcF9hc3NlcnQiLCAibGVuZ3RoIiA6IDMgfSwKICAgICAgICAgICAgIHsgIm5hbWUi
IDogIm9wX2NyZWF0ZV9yZXN0IiwgImxlbmd0aCI6IDQgfSwKICAgICAgICAgICAgIHsgIm5hbWUi
IDogIm9wX2dldF9yZXN0X2xlbmd0aCIsICJsZW5ndGgiOiAzIH0sCi0gICAgICAgICAgICB7ICJu
YW1lIiA6ICJvcF9zYXZlIiwgImxlbmd0aCIgOiA0IH0sCi0gICAgICAgICAgICB7ICJuYW1lIiA6
ICJvcF9yZXN1bWUiLCAibGVuZ3RoIiA6IDMgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9w
X3lpZWxkIiwgImxlbmd0aCIgOiA0IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF93YXRj
aGRvZyIsICJsZW5ndGgiIDogMSB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfbG9nX3No
YWRvd19jaGlja2VuX3Byb2xvZ3VlIiwgImxlbmd0aCIgOiAyfSwKICAgICAgICAgICAgIHsgIm5h
bWUiIDogIm9wX2xvZ19zaGFkb3dfY2hpY2tlbl90YWlsIiwgImxlbmd0aCIgOiAzfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFs
eXNpcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVz
c0FuYWx5c2lzLmNwcAppbmRleCAxN2U4MmEyZmJiYTAxNTA0M2U5OWQzNGVkMjU2OTM3MmIzNmY3
YTg1Li5hMTU0MGYxZGJiNDNlOTJlYzdhNGQ3OWJjMzRjOTA3ZGI3YzI2ZjNkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lz
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVz
c0FuYWx5c2lzLmNwcApAQCAtMzEsMTk4ICszMSwzNiBAQAogI2luY2x1ZGUgIkJ5dGVjb2RlVXNl
RGVmLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiRnVsbEJ5dGVjb2RlTGl2
ZW5lc3MuaCIKLSNpbmNsdWRlICJQcmVjaXNlSnVtcFRhcmdldHMuaCIKKyNpbmNsdWRlICJJbnRl
cnByZXRlcklubGluZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKIEJ5dGVjb2RlTGl2ZW5lc3NB
bmFseXNpczo6Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzKENvZGVCbG9jayogY29kZUJsb2NrKQot
ICAgIDogbV9jb2RlQmxvY2soY29kZUJsb2NrKQorICAgIDogbV9ncmFwaChjb2RlQmxvY2ssIGNv
ZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkpCiB7Ci0gICAgQVNTRVJUKG1fY29kZUJsb2NrKTsKICAg
ICBjb21wdXRlKCk7CiB9CiAKLXN0YXRpYyBib29sIGlzVmFsaWRSZWdpc3RlckZvckxpdmVuZXNz
KENvZGVCbG9jayogY29kZUJsb2NrLCBpbnQgb3BlcmFuZCkKK3RlbXBsYXRlPHR5cGVuYW1lIEZ1
bmN0b3I+Cit2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0ZURlZnNGb3JCeXRl
Y29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgT3Bjb2RlSUQgb3Bjb2RlSUQsIEluc3Ry
dWN0aW9uKiBpbnN0cnVjdGlvbiwgRmFzdEJpdFZlY3RvciYsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0
b3IpCiB7Ci0gICAgaWYgKGNvZGVCbG9jay0+aXNDb25zdGFudFJlZ2lzdGVySW5kZXgob3BlcmFu
ZCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKLSAgICBWaXJ0dWFsUmVnaXN0ZXIgdmly
dHVhbFJlZyhvcGVyYW5kKTsKLSAgICByZXR1cm4gdmlydHVhbFJlZy5pc0xvY2FsKCk7Ci19Ci0K
LXN0YXRpYyB1bnNpZ25lZCBnZXRMZWFkZXJPZmZzZXRGb3JCYXNpY0Jsb2NrKHN0ZDo6dW5pcXVl
X3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+KiBiYXNpY0Jsb2NrKQotewotICAgIHJldHVybiAoKmJh
c2ljQmxvY2spLT5sZWFkZXJCeXRlY29kZU9mZnNldCgpOwotfQotCi1zdGF0aWMgQnl0ZWNvZGVC
YXNpY0Jsb2NrKiBmaW5kQmFzaWNCbG9ja1dpdGhMZWFkZXJPZmZzZXQoVmVjdG9yPHN0ZDo6dW5p
cXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9ja3MsIHVuc2lnbmVkIGxlYWRl
ck9mZnNldCkKLXsKLSAgICByZXR1cm4gKCp0cnlCaW5hcnlTZWFyY2g8c3RkOjp1bmlxdWVfcHRy
PEJ5dGVjb2RlQmFzaWNCbG9jaz4sIHVuc2lnbmVkPihiYXNpY0Jsb2NrcywgYmFzaWNCbG9ja3Mu
c2l6ZSgpLCBsZWFkZXJPZmZzZXQsIGdldExlYWRlck9mZnNldEZvckJhc2ljQmxvY2spKS5nZXQo
KTsKLX0KLQotc3RhdGljIGJvb2wgYmxvY2tDb250YWluc0J5dGVjb2RlT2Zmc2V0KEJ5dGVjb2Rl
QmFzaWNCbG9jayogYmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KQotewotICAgIHVuc2ln
bmVkIGxlYWRlck9mZnNldCA9IGJsb2NrLT5sZWFkZXJCeXRlY29kZU9mZnNldCgpOwotICAgIHJl
dHVybiBieXRlY29kZU9mZnNldCA+PSBsZWFkZXJPZmZzZXQgJiYgYnl0ZWNvZGVPZmZzZXQgPCBs
ZWFkZXJPZmZzZXQgKyBibG9jay0+dG90YWxCeXRlY29kZUxlbmd0aCgpOwotfQotCi1zdGF0aWMg
Qnl0ZWNvZGVCYXNpY0Jsb2NrKiBmaW5kQmFzaWNCbG9ja0ZvckJ5dGVjb2RlT2Zmc2V0KFZlY3Rv
cjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mIGJhc2ljQmxvY2tzLCB1bnNp
Z25lZCBieXRlY29kZU9mZnNldCkKLXsKLS8qCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IGJhc2ljQmxvY2tzLnNpemUoKTsgaSsrKSB7Ci0gICAgICAgIGlmIChibG9ja0NvbnRhaW5zQnl0
ZWNvZGVPZmZzZXQoYmFzaWNCbG9ja3NbaV0uZ2V0KCksIGJ5dGVjb2RlT2Zmc2V0KSkKLSAgICAg
ICAgICAgIHJldHVybiBiYXNpY0Jsb2Nrc1tpXS5nZXQoKTsKLSAgICB9Ci0gICAgcmV0dXJuIDA7
Ci0qLwotICAgIHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+KiBiYXNpY0Jsb2Nr
ID0gYXBwcm94aW1hdGVCaW5hcnlTZWFyY2g8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNC
bG9jaz4sIHVuc2lnbmVkPigKLSAgICAgICAgYmFzaWNCbG9ja3MsIGJhc2ljQmxvY2tzLnNpemUo
KSwgYnl0ZWNvZGVPZmZzZXQsIGdldExlYWRlck9mZnNldEZvckJhc2ljQmxvY2spOwotICAgIC8v
IFdlIGZvdW5kIHRoZSBibG9jayB3ZSB3ZXJlIGxvb2tpbmcgZm9yLgotICAgIGlmIChibG9ja0Nv
bnRhaW5zQnl0ZWNvZGVPZmZzZXQoKCpiYXNpY0Jsb2NrKS5nZXQoKSwgYnl0ZWNvZGVPZmZzZXQp
KQotICAgICAgICByZXR1cm4gKCpiYXNpY0Jsb2NrKS5nZXQoKTsKLQotICAgIC8vIEJhc2ljIGJs
b2NrIGlzIHRvIHRoZSBsZWZ0IG9mIHRoZSByZXR1cm5lZCBibG9jay4KLSAgICBpZiAoYnl0ZWNv
ZGVPZmZzZXQgPCAoKmJhc2ljQmxvY2spLT5sZWFkZXJCeXRlY29kZU9mZnNldCgpKSB7Ci0gICAg
ICAgIEFTU0VSVChiYXNpY0Jsb2NrIC0gMSA+PSBiYXNpY0Jsb2Nrcy5kYXRhKCkpOwotICAgICAg
ICBBU1NFUlQoYmxvY2tDb250YWluc0J5dGVjb2RlT2Zmc2V0KGJhc2ljQmxvY2tbLTFdLmdldCgp
LCBieXRlY29kZU9mZnNldCkpOwotICAgICAgICByZXR1cm4gYmFzaWNCbG9ja1stMV0uZ2V0KCk7
Ci0gICAgfQotCi0gICAgLy8gQmFzaWMgYmxvY2sgaXMgdG8gdGhlIHJpZ2h0IG9mIHRoZSByZXR1
cm5lZCBibG9jay4KLSAgICBBU1NFUlQoJmJhc2ljQmxvY2tbMV0gPD0gJmJhc2ljQmxvY2tzLmxh
c3QoKSk7Ci0gICAgQVNTRVJUKGJsb2NrQ29udGFpbnNCeXRlY29kZU9mZnNldChiYXNpY0Jsb2Nr
WzFdLmdldCgpLCBieXRlY29kZU9mZnNldCkpOwotICAgIHJldHVybiBiYXNpY0Jsb2NrWzFdLmdl
dCgpOwotfQotCi0vLyBTaW1wbGlmaWVkIGludGVyZmFjZSB0byBieXRlY29kZSB1c2UvZGVmLCB3
aGljaCBkZXRlcm1pbmVzIGRlZnMgZmlyc3QgYW5kIHRoZW4gdXNlcywgYW5kIGluY2x1ZGVzCi0v
LyBleGNlcHRpb24gaGFuZGxlcnMgaW4gdGhlIHVzZXMuCi10ZW1wbGF0ZTx0eXBlbmFtZSBVc2VG
dW5jdG9yLCB0eXBlbmFtZSBEZWZGdW5jdG9yPgotc3RhdGljIHZvaWQgc3RlcE92ZXJJbnN0cnVj
dGlvbihDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaywgVmVj
dG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9ja3MsIHVu
c2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBjb25zdCBVc2VGdW5jdG9yJiB1c2UsIGNvbnN0IERlZkZ1
bmN0b3ImIGRlZikKLXsKLSAgICAvLyBUaGlzIGFic3RyYWN0bHkgZXhlY3V0ZSB0aGUgaW5zdHJ1
Y3Rpb24gaW4gcmV2ZXJzZS4gSW5zdHJ1Y3Rpb25zIGxvZ2ljYWxseSBmaXJzdCB1c2Ugb3BlcmFu
ZHMgYW5kCi0gICAgLy8gdGhlbiBkZWZpbmUgb3BlcmFuZHMuIFRoaXMgbG9naWNhbCBvcmRlcmlu
ZyBpcyBuZWNlc3NhcnkgZm9yIG9wZXJhdGlvbnMgdGhhdCB1c2UgYW5kIGRlZiB0aGUgc2FtZQot
ICAgIC8vIG9wZXJhbmQsIGxpa2U6Ci0gICAgLy8KLSAgICAvLyAgICAgb3BfYWRkIGxvYzEsIGxv
YzEsIGxvYzIKLSAgICAvLwotICAgIC8vIFRoZSB1c2Ugb2YgbG9jMSBoYXBwZW5zIGJlZm9yZSB0
aGUgZGVmIG9mIGxvYzEuIFRoYXQncyBhIHNlbWFudGljIHJlcXVpcmVtZW50IHNpbmNlIHRoZSBh
ZGQKLSAgICAvLyBvcGVyYXRpb24gY2Fubm90IHRyYXZlbCBmb3J3YXJkIGluIHRpbWUgdG8gcmVh
ZCB0aGUgdmFsdWUgdGhhdCBpdCB3aWxsIHByb2R1Y2UgYWZ0ZXIgcmVhZGluZyB0aGF0Ci0gICAg
Ly8gdmFsdWUuIFNpbmNlIHdlIGFyZSBleGVjdXRpbmcgaW4gcmV2ZXJzZSwgdGhpcyBtZWFucyB0
aGF0IHdlIG11c3QgZG8gZGVmcyBiZWZvcmUgdXNlcyAocmV2ZXJzZSBvZgotICAgIC8vIHVzZXMg
YmVmb3JlIGRlZnMpLgotICAgIC8vCi0gICAgLy8gU2luY2UgdGhpcyBpcyBhIGxpdmVuZXNzIGFu
YWx5c2lzLCB0aGlzIG9yZGVyaW5nIGVuZHMgdXAgYmVpbmcgcGFydGljdWxhcmx5IGltcG9ydGFu
dDogaWYgd2UgZGlkCi0gICAgLy8gdXNlcyBiZWZvcmUgZGVmcywgdGhlbiB0aGUgYWRkIG9wZXJh
dGlvbiBhYm92ZSB3b3VsZCBhcHBlYXIgdG8gbm90IGhhdmUgbG9jMSBsaXZlLCBzaW5jZSB3ZSdk
Ci0gICAgLy8gZmlyc3QgYWRkIGl0IHRvIHRoZSBvdXQgc2V0ICh0aGUgdXNlKSwgYW5kIHRoZW4g
d2UnZCByZW1vdmUgaXQgKHRoZSBkZWYpLgotICAgIAotICAgIGNvbXB1dGVEZWZzRm9yQnl0ZWNv
ZGVPZmZzZXQoCi0gICAgICAgIGNvZGVCbG9jaywgYmxvY2ssIGJ5dGVjb2RlT2Zmc2V0LAotICAg
ICAgICBbJl0gKENvZGVCbG9jayogY29kZUJsb2NrLCBJbnN0cnVjdGlvbiosIE9wY29kZUlELCBp
bnQgb3BlcmFuZCkgewotICAgICAgICAgICAgaWYgKGlzVmFsaWRSZWdpc3RlckZvckxpdmVuZXNz
KGNvZGVCbG9jaywgb3BlcmFuZCkpCi0gICAgICAgICAgICAgICAgZGVmKFZpcnR1YWxSZWdpc3Rl
cihvcGVyYW5kKS50b0xvY2FsKCkpOwotICAgICAgICB9KTsKLQotICAgIGNvbXB1dGVVc2VzRm9y
Qnl0ZWNvZGVPZmZzZXQoCi0gICAgICAgIGNvZGVCbG9jaywgYmxvY2ssIGJ5dGVjb2RlT2Zmc2V0
LAotICAgICAgICBbJl0gKENvZGVCbG9jayogY29kZUJsb2NrLCBJbnN0cnVjdGlvbiosIE9wY29k
ZUlELCBpbnQgb3BlcmFuZCkgewotICAgICAgICAgICAgaWYgKGlzVmFsaWRSZWdpc3RlckZvckxp
dmVuZXNzKGNvZGVCbG9jaywgb3BlcmFuZCkpCi0gICAgICAgICAgICAgICAgdXNlKFZpcnR1YWxS
ZWdpc3RlcihvcGVyYW5kKS50b0xvY2FsKCkpOwotICAgICAgICB9KTsKLQotICAgIC8vIElmIHdl
IGhhdmUgYW4gZXhjZXB0aW9uIGhhbmRsZXIsIHdlIHdhbnQgdGhlIGxpdmUtaW4gdmFyaWFibGVz
IG9mIHRoZSAKLSAgICAvLyBleGNlcHRpb24gaGFuZGxlciBibG9jayB0byBiZSBpbmNsdWRlZCBp
biB0aGUgbGl2ZS1pbiBvZiB0aGlzIHBhcnRpY3VsYXIgYnl0ZWNvZGUuCi0gICAgaWYgKEhhbmRs
ZXJJbmZvKiBoYW5kbGVyID0gY29kZUJsb2NrLT5oYW5kbGVyRm9yQnl0ZWNvZGVPZmZzZXQoYnl0
ZWNvZGVPZmZzZXQpKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBUaGlzIHJlc3VtZSBjaGVjayBzaG91
bGQgbm90IGJlIG5lZWRlZC4KLSAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE1OTI4MQotICAgICAgICBJbnRlcnByZXRlciogaW50ZXJwcmV0ZXIgPSBj
b2RlQmxvY2stPnZtKCktPmludGVycHJldGVyOwotICAgICAgICBJbnN0cnVjdGlvbiogaW5zdHJ1
Y3Rpb25zQmVnaW4gPSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCk7Ci0gICAgICAg
IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9ICZpbnN0cnVjdGlvbnNCZWdpbltieXRlY29kZU9m
ZnNldF07Ci0gICAgICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0ZXItPmdldE9wY29k
ZUlEKGluc3RydWN0aW9uLT51Lm9wY29kZSk7Ci0gICAgICAgIGlmIChvcGNvZGVJRCAhPSBvcF9y
ZXN1bWUpIHsKLSAgICAgICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogaGFuZGxlckJsb2NrID0g
ZmluZEJhc2ljQmxvY2tXaXRoTGVhZGVyT2Zmc2V0KGJhc2ljQmxvY2tzLCBoYW5kbGVyLT50YXJn
ZXQpOwotICAgICAgICAgICAgQVNTRVJUKGhhbmRsZXJCbG9jayk7Ci0gICAgICAgICAgICBoYW5k
bGVyQmxvY2stPmluKCkuZm9yRWFjaFNldEJpdCh1c2UpOwotICAgICAgICB9Ci0gICAgfQotfQot
Ci1zdGF0aWMgdm9pZCBzdGVwT3Zlckluc3RydWN0aW9uKENvZGVCbG9jayogY29kZUJsb2NrLCBC
eXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2Rl
QmFzaWNCbG9jaz4+JiBiYXNpY0Jsb2NrcywgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIEZhc3RC
aXRWZWN0b3ImIG91dCkKLXsKLSAgICBzdGVwT3Zlckluc3RydWN0aW9uKAotICAgICAgICBjb2Rl
QmxvY2ssIGJsb2NrLCBiYXNpY0Jsb2NrcywgYnl0ZWNvZGVPZmZzZXQsCi0gICAgICAgIFsmXSAo
dW5zaWduZWQgYml0SW5kZXgpIHsKLSAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIHVzZSBmdW5j
dG9yLCBzbyB3ZSBzZXQgdGhlIGJpdC4KLSAgICAgICAgICAgIG91dC5zZXQoYml0SW5kZXgpOwot
ICAgICAgICB9LAotICAgICAgICBbJl0gKHVuc2lnbmVkIGJpdEluZGV4KSB7Ci0gICAgICAgICAg
ICAvLyBUaGlzIGlzIHRoZSBkZWYgZnVuY3Rvciwgc28gd2UgY2xlYXIgdGhlIGJpdC4KLSAgICAg
ICAgICAgIG91dC5jbGVhcihiaXRJbmRleCk7Ci0gICAgICAgIH0pOworICAgIEpTQzo6Y29tcHV0
ZURlZnNGb3JCeXRlY29kZU9mZnNldChjb2RlQmxvY2ssIG9wY29kZUlELCBpbnN0cnVjdGlvbiwg
ZnVuY3Rvcik7CiB9CiAKLXN0YXRpYyB2b2lkIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQnl0ZWNv
ZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2ss
IFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mIGJhc2ljQmxvY2tz
LCB1bnNpZ25lZCB0YXJnZXRPZmZzZXQsIEZhc3RCaXRWZWN0b3ImIHJlc3VsdCkKK3RlbXBsYXRl
PHR5cGVuYW1lIEZ1bmN0b3I+Cit2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0
ZVVzZXNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgT3Bjb2RlSUQgb3Bj
b2RlSUQsIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgRmFzdEJpdFZlY3RvciYsIGNvbnN0IEZ1
bmN0b3ImIGZ1bmN0b3IpCiB7Ci0gICAgQVNTRVJUKCFibG9jay0+aXNFeGl0QmxvY2soKSk7Ci0g
ICAgQVNTRVJUKCFibG9jay0+aXNFbnRyeUJsb2NrKCkpOwotCi0gICAgRmFzdEJpdFZlY3RvciBv
dXQgPSBibG9jay0+b3V0KCk7Ci0KLSAgICBmb3IgKGludCBpID0gYmxvY2stPmJ5dGVjb2RlT2Zm
c2V0cygpLnNpemUoKSAtIDE7IGkgPj0gMDsgaS0tKSB7Ci0gICAgICAgIHVuc2lnbmVkIGJ5dGVj
b2RlT2Zmc2V0ID0gYmxvY2stPmJ5dGVjb2RlT2Zmc2V0cygpW2ldOwotICAgICAgICBpZiAodGFy
Z2V0T2Zmc2V0ID4gYnl0ZWNvZGVPZmZzZXQpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
Ci0gICAgICAgIHN0ZXBPdmVySW5zdHJ1Y3Rpb24oY29kZUJsb2NrLCBibG9jaywgYmFzaWNCbG9j
a3MsIGJ5dGVjb2RlT2Zmc2V0LCBvdXQpOwotICAgIH0KLQotICAgIHJlc3VsdC5zZXQob3V0KTsK
LX0KLQotc3RhdGljIHZvaWQgY29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCbG9jayhDb2RlQmxvY2sq
IGNvZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaywgVmVjdG9yPHN0ZDo6dW5pcXVl
X3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9ja3MpCi17Ci0gICAgaWYgKGJsb2Nr
LT5pc0V4aXRCbG9jaygpIHx8IGJsb2NrLT5pc0VudHJ5QmxvY2soKSkKLSAgICAgICAgcmV0dXJu
OwotICAgIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQnl0ZWNvZGVPZmZzZXQoY29kZUJsb2NrLCBi
bG9jaywgYmFzaWNCbG9ja3MsIGJsb2NrLT5sZWFkZXJCeXRlY29kZU9mZnNldCgpLCBibG9jay0+
aW4oKSk7Ci19Ci0KLXZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpydW5MaXZlbmVzc0Zp
eHBvaW50KCkKLXsKLSAgICBVbmxpbmtlZENvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2sgPSBt
X2NvZGVCbG9jay0+dW5saW5rZWRDb2RlQmxvY2soKTsKLSAgICB1bnNpZ25lZCBudW1iZXJPZlZh
cmlhYmxlcyA9IHVubGlua2VkQ29kZUJsb2NrLT5tX251bUNhbGxlZUxvY2FsczsKLQotICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2Jhc2ljQmxvY2tzLnNpemUoKTsgaSsrKSB7Ci0gICAg
ICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2sgPSBtX2Jhc2ljQmxvY2tzW2ldLmdldCgpOwot
ICAgICAgICBibG9jay0+aW4oKS5yZXNpemUobnVtYmVyT2ZWYXJpYWJsZXMpOwotICAgICAgICBi
bG9jay0+b3V0KCkucmVzaXplKG51bWJlck9mVmFyaWFibGVzKTsKLSAgICB9Ci0KLSAgICBib29s
IGNoYW5nZWQ7Ci0gICAgbV9iYXNpY0Jsb2Nrcy5sYXN0KCktPmluKCkuY2xlYXJBbGwoKTsKLSAg
ICBtX2Jhc2ljQmxvY2tzLmxhc3QoKS0+b3V0KCkuY2xlYXJBbGwoKTsKLSAgICBGYXN0Qml0VmVj
dG9yIG5ld091dDsKLSAgICBuZXdPdXQucmVzaXplKG1fYmFzaWNCbG9ja3MubGFzdCgpLT5vdXQo
KS5udW1CaXRzKCkpOwotICAgIGRvIHsKLSAgICAgICAgY2hhbmdlZCA9IGZhbHNlOwotICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSBtX2Jhc2ljQmxvY2tzLnNpemUoKSAtIDE7IGktLTspIHsKLSAg
ICAgICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2sgPSBtX2Jhc2ljQmxvY2tzW2ldLmdl
dCgpOwotICAgICAgICAgICAgbmV3T3V0LmNsZWFyQWxsKCk7Ci0gICAgICAgICAgICBmb3IgKHVu
c2lnbmVkIGogPSAwOyBqIDwgYmxvY2stPnN1Y2Nlc3NvcnMoKS5zaXplKCk7IGorKykKLSAgICAg
ICAgICAgICAgICBuZXdPdXQubWVyZ2UoYmxvY2stPnN1Y2Nlc3NvcnMoKVtqXS0+aW4oKSk7Ci0g
ICAgICAgICAgICBib29sIG91dERpZENoYW5nZSA9IGJsb2NrLT5vdXQoKS5zZXRBbmRDaGVjayhu
ZXdPdXQpOwotICAgICAgICAgICAgY29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCbG9jayhtX2NvZGVC
bG9jaywgYmxvY2ssIG1fYmFzaWNCbG9ja3MpOwotICAgICAgICAgICAgY2hhbmdlZCB8PSBvdXRE
aWRDaGFuZ2U7Ci0gICAgICAgIH0KLSAgICB9IHdoaWxlIChjaGFuZ2VkKTsKKyAgICBKU0M6OmNv
bXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoY29kZUJsb2NrLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rp
b24sIGZ1bmN0b3IpOwogfQogCiB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Z2V0TGl2
ZW5lc3NJbmZvQXRCeXRlY29kZU9mZnNldCh1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgRmFzdEJp
dFZlY3RvciYgcmVzdWx0KQogewotICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2sgPSBmaW5k
QmFzaWNCbG9ja0ZvckJ5dGVjb2RlT2Zmc2V0KG1fYmFzaWNCbG9ja3MsIGJ5dGVjb2RlT2Zmc2V0
KTsKKyAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrID0gbV9ncmFwaC5maW5kQmFzaWNCbG9j
a0ZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KTsKICAgICBBU1NFUlQoYmxvY2spOwog
ICAgIEFTU0VSVCghYmxvY2stPmlzRW50cnlCbG9jaygpKTsKICAgICBBU1NFUlQoIWJsb2NrLT5p
c0V4aXRCbG9jaygpKTsKICAgICByZXN1bHQucmVzaXplKGJsb2NrLT5vdXQoKS5udW1CaXRzKCkp
OwotICAgIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQnl0ZWNvZGVPZmZzZXQobV9jb2RlQmxvY2ss
IGJsb2NrLCBtX2Jhc2ljQmxvY2tzLCBieXRlY29kZU9mZnNldCwgcmVzdWx0KTsKKyAgICBjb21w
dXRlTG9jYWxMaXZlbmVzc0ZvckJ5dGVjb2RlT2Zmc2V0KG1fZ3JhcGgsIGJsb2NrLCBieXRlY29k
ZU9mZnNldCwgcmVzdWx0KTsKIH0KIAogYm9vbCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6Om9w
ZXJhbmRJc0xpdmVBdEJ5dGVjb2RlT2Zmc2V0KGludCBvcGVyYW5kLCB1bnNpZ25lZCBieXRlY29k
ZU9mZnNldCkKQEAgLTI0NCwxMSArODIsMTEgQEAgRmFzdEJpdFZlY3RvciBCeXRlY29kZUxpdmVu
ZXNzQW5hbHlzaXM6OmdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQodW5zaWduZWQKIHZv
aWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlRnVsbExpdmVuZXNzKEZ1bGxCeXRl
Y29kZUxpdmVuZXNzJiByZXN1bHQpCiB7CiAgICAgRmFzdEJpdFZlY3RvciBvdXQ7CisgICAgQ29k
ZUJsb2NrKiBjb2RlQmxvY2sgPSBtX2dyYXBoLmNvZGVCbG9jaygpOwogICAgIAotICAgIHJlc3Vs
dC5tX21hcC5yZXNpemUobV9jb2RlQmxvY2stPmluc3RydWN0aW9ucygpLnNpemUoKSk7CisgICAg
cmVzdWx0Lm1fbWFwLnJlc2l6ZShjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLnNpemUoKSk7CiAg
ICAgCi0gICAgZm9yICh1bnNpZ25lZCBpID0gbV9iYXNpY0Jsb2Nrcy5zaXplKCk7IGktLTspIHsK
LSAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jayA9IG1fYmFzaWNCbG9ja3NbaV0uZ2V0
KCk7CisgICAgZm9yIChzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiYgYmxvY2sg
OiBtX2dyYXBoLmJhc2ljQmxvY2tzSW5SZXZlcnNlT3JkZXIoKSkgewogICAgICAgICBpZiAoYmxv
Y2stPmlzRW50cnlCbG9jaygpIHx8IGJsb2NrLT5pc0V4aXRCbG9jaygpKQogICAgICAgICAgICAg
Y29udGludWU7CiAgICAgICAgIApAQCAtMjU2LDcgKzk0LDcgQEAgdm9pZCBCeXRlY29kZUxpdmVu
ZXNzQW5hbHlzaXM6OmNvbXB1dGVGdWxsTGl2ZW5lc3MoRnVsbEJ5dGVjb2RlTGl2ZW5lc3MmIHJl
c3VsdCkKICAgICAgICAgCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGJsb2NrLT5ieXRlY29k
ZU9mZnNldHMoKS5zaXplKCk7IGktLTspIHsKICAgICAgICAgICAgIHVuc2lnbmVkIGJ5dGVjb2Rl
T2Zmc2V0ID0gYmxvY2stPmJ5dGVjb2RlT2Zmc2V0cygpW2ldOwotICAgICAgICAgICAgc3RlcE92
ZXJJbnN0cnVjdGlvbihtX2NvZGVCbG9jaywgYmxvY2ssIG1fYmFzaWNCbG9ja3MsIGJ5dGVjb2Rl
T2Zmc2V0LCBvdXQpOworICAgICAgICAgICAgc3RlcE92ZXJJbnN0cnVjdGlvbihtX2dyYXBoLCBi
eXRlY29kZU9mZnNldCwgb3V0KTsKICAgICAgICAgICAgIHJlc3VsdC5tX21hcFtieXRlY29kZU9m
ZnNldF0gPSBvdXQ7CiAgICAgICAgIH0KICAgICB9CkBAIC0yNjYsMTEgKzEwNCwxMSBAQCB2b2lk
IEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0ZUtpbGxzKEJ5dGVjb2RlS2lsbHMmIHJl
c3VsdCkKIHsKICAgICBGYXN0Qml0VmVjdG9yIG91dDsKICAgICAKLSAgICByZXN1bHQubV9jb2Rl
QmxvY2sgPSBtX2NvZGVCbG9jazsKLSAgICByZXN1bHQubV9raWxsU2V0cyA9IHN0ZDo6bWFrZV91
bmlxdWU8Qnl0ZWNvZGVLaWxsczo6S2lsbFNldFtdPihtX2NvZGVCbG9jay0+aW5zdHJ1Y3Rpb25z
KCkuc2l6ZSgpKTsKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IG1fZ3JhcGguY29kZUJsb2Nr
KCk7CisgICAgcmVzdWx0Lm1fY29kZUJsb2NrID0gY29kZUJsb2NrOworICAgIHJlc3VsdC5tX2tp
bGxTZXRzID0gc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZUtpbGxzOjpLaWxsU2V0W10+KGNvZGVC
bG9jay0+aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKICAgICAKLSAgICBmb3IgKHVuc2lnbmVkIGkg
PSBtX2Jhc2ljQmxvY2tzLnNpemUoKTsgaS0tOykgewotICAgICAgICBCeXRlY29kZUJhc2ljQmxv
Y2sqIGJsb2NrID0gbV9iYXNpY0Jsb2Nrc1tpXS5nZXQoKTsKKyAgICBmb3IgKHN0ZDo6dW5pcXVl
X3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+JiBibG9jayA6IG1fZ3JhcGguYmFzaWNCbG9ja3NJblJl
dmVyc2VPcmRlcigpKSB7CiAgICAgICAgIGlmIChibG9jay0+aXNFbnRyeUJsb2NrKCkgfHwgYmxv
Y2stPmlzRXhpdEJsb2NrKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgCkBAIC0y
NzksNyArMTE3LDcgQEAgdm9pZCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGVLaWxs
cyhCeXRlY29kZUtpbGxzJiByZXN1bHQpCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGJsb2Nr
LT5ieXRlY29kZU9mZnNldHMoKS5zaXplKCk7IGktLTspIHsKICAgICAgICAgICAgIHVuc2lnbmVk
IGJ5dGVjb2RlT2Zmc2V0ID0gYmxvY2stPmJ5dGVjb2RlT2Zmc2V0cygpW2ldOwogICAgICAgICAg
ICAgc3RlcE92ZXJJbnN0cnVjdGlvbigKLSAgICAgICAgICAgICAgICBtX2NvZGVCbG9jaywgYmxv
Y2ssIG1fYmFzaWNCbG9ja3MsIGJ5dGVjb2RlT2Zmc2V0LAorICAgICAgICAgICAgICAgIG1fZ3Jh
cGgsIGJ5dGVjb2RlT2Zmc2V0LCBvdXQsCiAgICAgICAgICAgICAgICAgWyZdICh1bnNpZ25lZCBp
bmRleCkgewogICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIGZvciB1c2VzLgogICAgICAg
ICAgICAgICAgICAgICBpZiAob3V0LmdldChpbmRleCkpCkBAIC0yOTcsMTIgKzEzNSwxMyBAQCB2
b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0ZUtpbGxzKEJ5dGVjb2RlS2lsbHMm
IHJlc3VsdCkKIAogdm9pZCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmR1bXBSZXN1bHRzKCkK
IHsKLSAgICBkYXRhTG9nKCJcbkR1bXBpbmcgYnl0ZWNvZGUgbGl2ZW5lc3MgZm9yICIsICptX2Nv
ZGVCbG9jaywgIjpcbiIpOwotICAgIEludGVycHJldGVyKiBpbnRlcnByZXRlciA9IG1fY29kZUJs
b2NrLT52bSgpLT5pbnRlcnByZXRlcjsKLSAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVn
aW4gPSBtX2NvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsKLSAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgbV9iYXNpY0Jsb2Nrcy5zaXplKCk7IGkrKykgewotICAgICAgICBCeXRl
Y29kZUJhc2ljQmxvY2sqIGJsb2NrID0gbV9iYXNpY0Jsb2Nrc1tpXS5nZXQoKTsKLSAgICAgICAg
ZGF0YUxvZ0YoIlxuQnl0ZWNvZGUgYmFzaWMgYmxvY2sgJXU6ICVwIChvZmZzZXQ6ICV1LCBsZW5n
dGg6ICV1KVxuIiwgaSwgYmxvY2ssIGJsb2NrLT5sZWFkZXJCeXRlY29kZU9mZnNldCgpLCBibG9j
ay0+dG90YWxCeXRlY29kZUxlbmd0aCgpKTsKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IG1f
Z3JhcGguY29kZUJsb2NrKCk7CisgICAgZGF0YUxvZygiXG5EdW1waW5nIGJ5dGVjb2RlIGxpdmVu
ZXNzIGZvciAiLCAqY29kZUJsb2NrLCAiOlxuIik7CisgICAgSW50ZXJwcmV0ZXIqIGludGVycHJl
dGVyID0gY29kZUJsb2NrLT52bSgpLT5pbnRlcnByZXRlcjsKKyAgICBJbnN0cnVjdGlvbiogaW5z
dHJ1Y3Rpb25zQmVnaW4gPSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCk7CisgICAg
dW5zaWduZWQgaSA9IDA7CisgICAgZm9yIChCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrIDogbV9n
cmFwaCkgeworICAgICAgICBkYXRhTG9nRigiXG5CeXRlY29kZSBiYXNpYyBibG9jayAldTogJXAg
KG9mZnNldDogJXUsIGxlbmd0aDogJXUpXG4iLCBpKyssIGJsb2NrLCBibG9jay0+bGVhZGVyQnl0
ZWNvZGVPZmZzZXQoKSwgYmxvY2stPnRvdGFsQnl0ZWNvZGVMZW5ndGgoKSk7CiAgICAgICAgIGRh
dGFMb2dGKCJTdWNjZXNzb3JzOiAiKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8
IGJsb2NrLT5zdWNjZXNzb3JzKCkuc2l6ZSgpOyBqKyspIHsKICAgICAgICAgICAgIEJ5dGVjb2Rl
QmFzaWNCbG9jayogc3VjY2Vzc29yID0gYmxvY2stPnN1Y2Nlc3NvcnMoKVtqXTsKQEAgLTMyNyw3
ICsxNjYsNyBAQCB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6ZHVtcFJlc3VsdHMoKQog
ICAgICAgICAgICAgICAgICAgICBkYXRhTG9nRigiJXUgIiwgaik7CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICBkYXRhTG9nRigiXG4iKTsKLSAgICAgICAgICAgIG1fY29kZUJsb2NrLT5kdW1w
Qnl0ZWNvZGUoV1RGOjpkYXRhRmlsZSgpLCBtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCktPmds
b2JhbEV4ZWMoKSwgaW5zdHJ1Y3Rpb25zQmVnaW4sIGN1cnJlbnRJbnN0cnVjdGlvbik7CisgICAg
ICAgICAgICBjb2RlQmxvY2stPmR1bXBCeXRlY29kZShXVEY6OmRhdGFGaWxlKCksIGNvZGVCbG9j
ay0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKSwgaW5zdHJ1Y3Rpb25zQmVnaW4sIGN1cnJl
bnRJbnN0cnVjdGlvbik7CiAKICAgICAgICAgICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW50ZXJw
cmV0ZXItPmdldE9wY29kZUlEKGluc3RydWN0aW9uc0JlZ2luW2J5dGVjb2RlT2Zmc2V0XS51Lm9w
Y29kZSk7CiAgICAgICAgICAgICB1bnNpZ25lZCBvcGNvZGVMZW5ndGggPSBvcGNvZGVMZW5ndGhz
W29wY29kZUlEXTsKQEAgLTM0Niw5ICsxODUsNyBAQCB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFs
eXNpczo6ZHVtcFJlc3VsdHMoKQogCiB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Y29t
cHV0ZSgpCiB7Ci0gICAgY29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MobV9jb2RlQmxvY2ssIG1f
YmFzaWNCbG9ja3MpOwotICAgIEFTU0VSVChtX2Jhc2ljQmxvY2tzLnNpemUoKSk7Ci0gICAgcnVu
TGl2ZW5lc3NGaXhwb2ludCgpOworICAgIHJ1bkxpdmVuZXNzRml4cG9pbnQobV9ncmFwaCk7CiAK
ICAgICBpZiAoT3B0aW9uczo6ZHVtcEJ5dGVjb2RlTGl2ZW5lc3NSZXN1bHRzKCkpCiAgICAgICAg
IGR1bXBSZXN1bHRzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmgKaW5kZXggZWNlMTZmMjFmMDE1MTBhNjQy
N2ZkODQxMTQwNzliZWQ4NzBjMDg3NS4uZTEyY2Q4ZWRjZTc2ZTEyMmVmMDRlZTFmMzVmYmE4MjFi
OGQ3ZjdmMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVj
b2RlTGl2ZW5lc3NBbmFseXNpcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuaApAQCAtMjMsMTAgKzIzLDExIEBACiAgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBCeXRlY29kZUxpdmVu
ZXNzQW5hbHlzaXNfaAotI2RlZmluZSBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNfaAorI3ByYWdt
YSBvbmNlCiAKICNpbmNsdWRlICJCeXRlY29kZUJhc2ljQmxvY2suaCIKKyNpbmNsdWRlICJCeXRl
Y29kZUdyYXBoLmgiCisjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSA8d3RmL0Zhc3RC
aXRWZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KQEAgLTM0LDEzICszNSwyOSBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIEJ5dGVj
b2RlS2lsbHM7Ci1jbGFzcyBDb2RlQmxvY2s7CiBjbGFzcyBGdWxsQnl0ZWNvZGVMaXZlbmVzczsK
IAotY2xhc3MgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzIHsKK3RlbXBsYXRlPHR5cGVuYW1lIERl
cml2ZWRBbmFseXNpcz4KK2NsYXNzIEJ5dGVjb2RlTGl2ZW5lc3NQcm9wYWdhdGlvbiB7Citwcm90
ZWN0ZWQ6CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgR3JhcGgsIHR5cGVuYW1lIFVzZUZ1bmN0b3Is
IHR5cGVuYW1lIERlZkZ1bmN0b3I+IHZvaWQgc3RlcE92ZXJJbnN0cnVjdGlvbihHcmFwaCYsIHVu
c2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBGYXN0Qml0VmVjdG9yJiBvdXQsIGNvbnN0IFVzZUZ1bmN0
b3ImLCBjb25zdCBEZWZGdW5jdG9yJik7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBHcmFwaD4g
dm9pZCBzdGVwT3Zlckluc3RydWN0aW9uKEdyYXBoJiwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQs
IEZhc3RCaXRWZWN0b3ImIG91dCk7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBHcmFwaD4gYm9v
bCBjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJ5dGVjb2RlT2Zmc2V0KEdyYXBoJiwgQnl0ZWNvZGVC
YXNpY0Jsb2NrKiwgdW5zaWduZWQgdGFyZ2V0T2Zmc2V0LCBGYXN0Qml0VmVjdG9yJiByZXN1bHQp
OworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgR3JhcGg+IGJvb2wgY29tcHV0ZUxvY2FsTGl2ZW5l
c3NGb3JCbG9jayhHcmFwaCYsIEJ5dGVjb2RlQmFzaWNCbG9jayopOworCisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgR3JhcGg+IEZhc3RCaXRWZWN0b3IgZ2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29kZU9m
ZnNldChHcmFwaCYsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KTsKKworICAgIHRlbXBsYXRlPHR5
cGVuYW1lIEdyYXBoPiB2b2lkIHJ1bkxpdmVuZXNzRml4cG9pbnQoR3JhcGgmKTsKK307CisKK2Ns
YXNzIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcyA6IHByaXZhdGUgQnl0ZWNvZGVMaXZlbmVzc1By
b3BhZ2F0aW9uPEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcz4gewogICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEJ5dGVjb2RlTGl2ZW5lc3NBbmFs
eXNpcyk7CiBwdWJsaWM6CisgICAgZnJpZW5kIGNsYXNzIEJ5dGVjb2RlTGl2ZW5lc3NQcm9wYWdh
dGlvbjxCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM+OwogICAgIEJ5dGVjb2RlTGl2ZW5lc3NBbmFs
eXNpcyhDb2RlQmxvY2sqKTsKICAgICAKICAgICBib29sIG9wZXJhbmRJc0xpdmVBdEJ5dGVjb2Rl
T2Zmc2V0KGludCBvcGVyYW5kLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCk7CkBAIC01MSwxOSAr
NjgsMTkgQEAgY2xhc3MgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzIHsKIAogcHJpdmF0ZToKICAg
ICB2b2lkIGNvbXB1dGUoKTsKLSAgICB2b2lkIHJ1bkxpdmVuZXNzRml4cG9pbnQoKTsKICAgICB2
b2lkIGR1bXBSZXN1bHRzKCk7CiAKICAgICB2b2lkIGdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVP
ZmZzZXQodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIEZhc3RCaXRWZWN0b3ImKTsKIAotICAgIENv
ZGVCbG9jayogbV9jb2RlQmxvY2s7Ci0gICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29k
ZUJhc2ljQmxvY2s+PiBtX2Jhc2ljQmxvY2tzOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0
b3I+IHZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqLCBPcGNvZGVJ
RCwgSW5zdHJ1Y3Rpb24qLCBGYXN0Qml0VmVjdG9yJiwgY29uc3QgRnVuY3RvciYpOworICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNl
dChDb2RlQmxvY2sqLCBPcGNvZGVJRCwgSW5zdHJ1Y3Rpb24qLCBGYXN0Qml0VmVjdG9yJiwgY29u
c3QgRnVuY3RvciYpOworCisgICAgQnl0ZWNvZGVHcmFwaDxDb2RlQmxvY2s+IG1fZ3JhcGg7CiB9
OwogCiBpbmxpbmUgYm9vbCBvcGVyYW5kSXNBbHdheXNMaXZlKGludCBvcGVyYW5kKTsKIGlubGlu
ZSBib29sIG9wZXJhbmRUaGF0SXNOb3RBbHdheXNMaXZlSXNMaXZlKGNvbnN0IEZhc3RCaXRWZWN0
b3ImIG91dCwgaW50IG9wZXJhbmQpOwogaW5saW5lIGJvb2wgb3BlcmFuZElzTGl2ZShjb25zdCBG
YXN0Qml0VmVjdG9yJiBvdXQsIGludCBvcGVyYW5kKTsKK2lubGluZSBib29sIGlzVmFsaWRSZWdp
c3RlckZvckxpdmVuZXNzKGludCBvcGVyYW5kKTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCi0KLSNl
bmRpZiAvLyBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNfaApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGluZXMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNJ
bmxpbmVzLmgKaW5kZXggOWI1Yzc1NWZjYjZjZDUxODA1MTQ1MDA3ODkyMmFjNGQ2ZDRkMjM4Zi4u
Y2Y2YzhkMmE0MzRkMWRlOTYxYWE0YTliMWUwZTRkMGM0ZmMxZGUxOSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGlu
ZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVz
c0FuYWx5c2lzSW5saW5lcy5oCkBAIC0yMywxMSArMjMsMTIgQEAKICAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNp
c0lubGluZXNfaAotI2RlZmluZSBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNJbmxpbmVzX2gKKyNw
cmFnbWEgb25jZQogCisjaW5jbHVkZSAiQnl0ZWNvZGVHcmFwaC5oIgogI2luY2x1ZGUgIkJ5dGVj
b2RlTGl2ZW5lc3NBbmFseXNpcy5oIgogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUg
IkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogCiBuYW1lc3BhY2UgSlND
IHsKQEAgLTUwLDcgKzUxLDE1MSBAQCBpbmxpbmUgYm9vbCBvcGVyYW5kSXNMaXZlKGNvbnN0IEZh
c3RCaXRWZWN0b3ImIG91dCwgaW50IG9wZXJhbmQpCiAgICAgcmV0dXJuIG9wZXJhbmRJc0Fsd2F5
c0xpdmUob3BlcmFuZCkgfHwgb3BlcmFuZFRoYXRJc05vdEFsd2F5c0xpdmVJc0xpdmUob3V0LCBv
cGVyYW5kKTsKIH0KIAotfSAvLyBuYW1lc3BhY2UgSlNDCitpbmxpbmUgYm9vbCBpc1ZhbGlkUmVn
aXN0ZXJGb3JMaXZlbmVzcyhpbnQgb3BlcmFuZCkKK3sKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgdmly
dHVhbFJlZyhvcGVyYW5kKTsKKyAgICBpZiAodmlydHVhbFJlZy5pc0NvbnN0YW50KCkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gdmlydHVhbFJlZy5pc0xvY2FsKCk7Cit9CisK
Ky8vIFNpbXBsaWZpZWQgaW50ZXJmYWNlIHRvIGJ5dGVjb2RlIHVzZS9kZWYsIHdoaWNoIGRldGVy
bWluZXMgZGVmcyBmaXJzdCBhbmQgdGhlbiB1c2VzLCBhbmQgaW5jbHVkZXMKKy8vIGV4Y2VwdGlv
biBoYW5kbGVycyBpbiB0aGUgdXNlcy4KK3RlbXBsYXRlPHR5cGVuYW1lIERlcml2ZWRBbmFseXNp
cz4KK3RlbXBsYXRlPHR5cGVuYW1lIEdyYXBoLCB0eXBlbmFtZSBVc2VGdW5jdG9yLCB0eXBlbmFt
ZSBEZWZGdW5jdG9yPgoraW5saW5lIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0aW9uPERl
cml2ZWRBbmFseXNpcz46OnN0ZXBPdmVySW5zdHJ1Y3Rpb24oR3JhcGgmIGdyYXBoLCB1bnNpZ25l
ZCBieXRlY29kZU9mZnNldCwgRmFzdEJpdFZlY3RvciYgb3V0LCBjb25zdCBVc2VGdW5jdG9yJiB1
c2UsIGNvbnN0IERlZkZ1bmN0b3ImIGRlZikKK3sKKyAgICAvLyBUaGlzIGFic3RyYWN0bHkgZXhl
Y3V0ZSB0aGUgaW5zdHJ1Y3Rpb24gaW4gcmV2ZXJzZS4gSW5zdHJ1Y3Rpb25zIGxvZ2ljYWxseSBm
aXJzdCB1c2Ugb3BlcmFuZHMgYW5kCisgICAgLy8gdGhlbiBkZWZpbmUgb3BlcmFuZHMuIFRoaXMg
bG9naWNhbCBvcmRlcmluZyBpcyBuZWNlc3NhcnkgZm9yIG9wZXJhdGlvbnMgdGhhdCB1c2UgYW5k
IGRlZiB0aGUgc2FtZQorICAgIC8vIG9wZXJhbmQsIGxpa2U6CisgICAgLy8KKyAgICAvLyAgICAg
b3BfYWRkIGxvYzEsIGxvYzEsIGxvYzIKKyAgICAvLworICAgIC8vIFRoZSB1c2Ugb2YgbG9jMSBo
YXBwZW5zIGJlZm9yZSB0aGUgZGVmIG9mIGxvYzEuIFRoYXQncyBhIHNlbWFudGljIHJlcXVpcmVt
ZW50IHNpbmNlIHRoZSBhZGQKKyAgICAvLyBvcGVyYXRpb24gY2Fubm90IHRyYXZlbCBmb3J3YXJk
IGluIHRpbWUgdG8gcmVhZCB0aGUgdmFsdWUgdGhhdCBpdCB3aWxsIHByb2R1Y2UgYWZ0ZXIgcmVh
ZGluZyB0aGF0CisgICAgLy8gdmFsdWUuIFNpbmNlIHdlIGFyZSBleGVjdXRpbmcgaW4gcmV2ZXJz
ZSwgdGhpcyBtZWFucyB0aGF0IHdlIG11c3QgZG8gZGVmcyBiZWZvcmUgdXNlcyAocmV2ZXJzZSBv
ZgorICAgIC8vIHVzZXMgYmVmb3JlIGRlZnMpLgorICAgIC8vCisgICAgLy8gU2luY2UgdGhpcyBp
cyBhIGxpdmVuZXNzIGFuYWx5c2lzLCB0aGlzIG9yZGVyaW5nIGVuZHMgdXAgYmVpbmcgcGFydGlj
dWxhcmx5IGltcG9ydGFudDogaWYgd2UgZGlkCisgICAgLy8gdXNlcyBiZWZvcmUgZGVmcywgdGhl
biB0aGUgYWRkIG9wZXJhdGlvbiBhYm92ZSB3b3VsZCBhcHBlYXIgdG8gbm90IGhhdmUgbG9jMSBs
aXZlLCBzaW5jZSB3ZSdkCisgICAgLy8gZmlyc3QgYWRkIGl0IHRvIHRoZSBvdXQgc2V0ICh0aGUg
dXNlKSwgYW5kIHRoZW4gd2UnZCByZW1vdmUgaXQgKHRoZSBkZWYpLgorCisgICAgYXV0byogY29k
ZUJsb2NrID0gZ3JhcGguY29kZUJsb2NrKCk7CisgICAgSW50ZXJwcmV0ZXIqIGludGVycHJldGVy
ID0gY29kZUJsb2NrLT52bSgpLT5pbnRlcnByZXRlcjsKKyAgICBhdXRvKiBpbnN0cnVjdGlvbnNC
ZWdpbiA9IGdyYXBoLmluc3RydWN0aW9ucygpLmJlZ2luKCk7CisgICAgYXV0byogaW5zdHJ1Y3Rp
b24gPSAmaW5zdHJ1Y3Rpb25zQmVnaW5bYnl0ZWNvZGVPZmZzZXRdOworICAgIE9wY29kZUlEIG9w
Y29kZUlEID0gaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKCppbnN0cnVjdGlvbik7CisKKyAgICBz
dGF0aWNfY2FzdDxEZXJpdmVkQW5hbHlzaXMqPih0aGlzKS0+Y29tcHV0ZURlZnNGb3JCeXRlY29k
ZU9mZnNldCgKKyAgICAgICAgY29kZUJsb2NrLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb24sIG91dCwK
KyAgICAgICAgWyZdICh0eXBlbmFtZSBHcmFwaDo6Q29kZUJsb2NrKiwgdHlwZW5hbWUgR3JhcGg6
Okluc3RydWN0aW9uKiwgT3Bjb2RlSUQsIGludCBvcGVyYW5kKSB7CisgICAgICAgICAgICBpZiAo
aXNWYWxpZFJlZ2lzdGVyRm9yTGl2ZW5lc3Mob3BlcmFuZCkpCisgICAgICAgICAgICAgICAgZGVm
KFZpcnR1YWxSZWdpc3RlcihvcGVyYW5kKS50b0xvY2FsKCkpOworICAgICAgICB9KTsKKworICAg
IHN0YXRpY19jYXN0PERlcml2ZWRBbmFseXNpcyo+KHRoaXMpLT5jb21wdXRlVXNlc0ZvckJ5dGVj
b2RlT2Zmc2V0KAorICAgICAgICBjb2RlQmxvY2ssIG9wY29kZUlELCBpbnN0cnVjdGlvbiwgb3V0
LAorICAgICAgICBbJl0gKHR5cGVuYW1lIEdyYXBoOjpDb2RlQmxvY2sqLCB0eXBlbmFtZSBHcmFw
aDo6SW5zdHJ1Y3Rpb24qLCBPcGNvZGVJRCwgaW50IG9wZXJhbmQpIHsKKyAgICAgICAgICAgIGlm
IChpc1ZhbGlkUmVnaXN0ZXJGb3JMaXZlbmVzcyhvcGVyYW5kKSkKKyAgICAgICAgICAgICAgICB1
c2UoVmlydHVhbFJlZ2lzdGVyKG9wZXJhbmQpLnRvTG9jYWwoKSk7CisgICAgICAgIH0pOworCisg
ICAgLy8gSWYgd2UgaGF2ZSBhbiBleGNlcHRpb24gaGFuZGxlciwgd2Ugd2FudCB0aGUgbGl2ZS1p
biB2YXJpYWJsZXMgb2YgdGhlIAorICAgIC8vIGV4Y2VwdGlvbiBoYW5kbGVyIGJsb2NrIHRvIGJl
IGluY2x1ZGVkIGluIHRoZSBsaXZlLWluIG9mIHRoaXMgcGFydGljdWxhciBieXRlY29kZS4KKyAg
ICBpZiAoYXV0byogaGFuZGxlciA9IGNvZGVCbG9jay0+aGFuZGxlckZvckJ5dGVjb2RlT2Zmc2V0
KGJ5dGVjb2RlT2Zmc2V0KSkgeworICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGhhbmRsZXJC
bG9jayA9IGdyYXBoLmZpbmRCYXNpY0Jsb2NrV2l0aExlYWRlck9mZnNldChoYW5kbGVyLT50YXJn
ZXQpOworICAgICAgICBBU1NFUlQoaGFuZGxlckJsb2NrKTsKKyAgICAgICAgaGFuZGxlckJsb2Nr
LT5pbigpLmZvckVhY2hTZXRCaXQodXNlKTsKKyAgICB9Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1l
IERlcml2ZWRBbmFseXNpcz4KK3RlbXBsYXRlPHR5cGVuYW1lIEdyYXBoPgoraW5saW5lIHZvaWQg
Qnl0ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0aW9uPERlcml2ZWRBbmFseXNpcz46OnN0ZXBPdmVySW5z
dHJ1Y3Rpb24oR3JhcGgmIGdyYXBoLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgRmFzdEJpdFZl
Y3RvciYgb3V0KQoreworICAgIHN0ZXBPdmVySW5zdHJ1Y3Rpb24oCisgICAgICAgIGdyYXBoLCBi
eXRlY29kZU9mZnNldCwgb3V0LAorICAgICAgICBbJl0gKHVuc2lnbmVkIGJpdEluZGV4KSB7Cisg
ICAgICAgICAgICAvLyBUaGlzIGlzIHRoZSB1c2UgZnVuY3Rvciwgc28gd2Ugc2V0IHRoZSBiaXQu
CisgICAgICAgICAgICBvdXQuc2V0KGJpdEluZGV4KTsKKyAgICAgICAgfSwKKyAgICAgICAgWyZd
ICh1bnNpZ25lZCBiaXRJbmRleCkgeworICAgICAgICAgICAgLy8gVGhpcyBpcyB0aGUgZGVmIGZ1
bmN0b3IsIHNvIHdlIGNsZWFyIHRoZSBiaXQuCisgICAgICAgICAgICBvdXQuY2xlYXIoYml0SW5k
ZXgpOworICAgICAgICB9KTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgRGVyaXZlZEFuYWx5c2lz
PgordGVtcGxhdGU8dHlwZW5hbWUgR3JhcGg+CitpbmxpbmUgYm9vbCBCeXRlY29kZUxpdmVuZXNz
UHJvcGFnYXRpb248RGVyaXZlZEFuYWx5c2lzPjo6Y29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCeXRl
Y29kZU9mZnNldChHcmFwaCYgZ3JhcGgsIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2ssIHVuc2ln
bmVkIHRhcmdldE9mZnNldCwgRmFzdEJpdFZlY3RvciYgcmVzdWx0KQoreworICAgIEFTU0VSVCgh
YmxvY2stPmlzRXhpdEJsb2NrKCkpOworICAgIEFTU0VSVCghYmxvY2stPmlzRW50cnlCbG9jaygp
KTsKIAotI2VuZGlmIC8vIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGluZXNfaAorICAgIEZh
c3RCaXRWZWN0b3Igb3V0ID0gYmxvY2stPm91dCgpOwogCisgICAgZm9yIChpbnQgaSA9IGJsb2Nr
LT5ieXRlY29kZU9mZnNldHMoKS5zaXplKCkgLSAxOyBpID49IDA7IGktLSkgeworICAgICAgICB1
bnNpZ25lZCBieXRlY29kZU9mZnNldCA9IGJsb2NrLT5ieXRlY29kZU9mZnNldHMoKVtpXTsKKyAg
ICAgICAgaWYgKHRhcmdldE9mZnNldCA+IGJ5dGVjb2RlT2Zmc2V0KQorICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIHN0ZXBPdmVySW5zdHJ1Y3Rpb24oZ3JhcGgsIGJ5dGVjb2RlT2Zmc2V0LCBv
dXQpOworICAgIH0KKworICAgIHJldHVybiByZXN1bHQuc2V0QW5kQ2hlY2sob3V0KTsKK30KKwor
dGVtcGxhdGU8dHlwZW5hbWUgRGVyaXZlZEFuYWx5c2lzPgordGVtcGxhdGU8dHlwZW5hbWUgR3Jh
cGg+CitpbmxpbmUgYm9vbCBCeXRlY29kZUxpdmVuZXNzUHJvcGFnYXRpb248RGVyaXZlZEFuYWx5
c2lzPjo6Y29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCbG9jayhHcmFwaCYgZ3JhcGgsIEJ5dGVjb2Rl
QmFzaWNCbG9jayogYmxvY2spCit7CisgICAgaWYgKGJsb2NrLT5pc0V4aXRCbG9jaygpIHx8IGJs
b2NrLT5pc0VudHJ5QmxvY2soKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBj
b21wdXRlTG9jYWxMaXZlbmVzc0ZvckJ5dGVjb2RlT2Zmc2V0KGdyYXBoLCBibG9jaywgYmxvY2st
PmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCksIGJsb2NrLT5pbigpKTsKK30KKwordGVtcGxhdGU8dHlw
ZW5hbWUgRGVyaXZlZEFuYWx5c2lzPgordGVtcGxhdGU8dHlwZW5hbWUgR3JhcGg+CitpbmxpbmUg
RmFzdEJpdFZlY3RvciBCeXRlY29kZUxpdmVuZXNzUHJvcGFnYXRpb248RGVyaXZlZEFuYWx5c2lz
Pjo6Z2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29kZU9mZnNldChHcmFwaCYgZ3JhcGgsIHVuc2lnbmVk
IGJ5dGVjb2RlT2Zmc2V0KQoreworICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2sgPSBncmFw
aC5maW5kQmFzaWNCbG9ja0ZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KTsKKyAgICBB
U1NFUlQoYmxvY2spOworICAgIEFTU0VSVCghYmxvY2stPmlzRW50cnlCbG9jaygpKTsKKyAgICBB
U1NFUlQoIWJsb2NrLT5pc0V4aXRCbG9jaygpKTsKKyAgICBGYXN0Qml0VmVjdG9yIG91dDsKKyAg
ICBvdXQucmVzaXplKGJsb2NrLT5vdXQoKS5udW1CaXRzKCkpOworICAgIGNvbXB1dGVMb2NhbExp
dmVuZXNzRm9yQnl0ZWNvZGVPZmZzZXQoZ3JhcGgsIGJsb2NrLCBieXRlY29kZU9mZnNldCwgb3V0
KTsKKyAgICByZXR1cm4gb3V0OworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBEZXJpdmVkQW5hbHlz
aXM+Cit0ZW1wbGF0ZTx0eXBlbmFtZSBHcmFwaD4KK2lubGluZSB2b2lkIEJ5dGVjb2RlTGl2ZW5l
c3NQcm9wYWdhdGlvbjxEZXJpdmVkQW5hbHlzaXM+OjpydW5MaXZlbmVzc0ZpeHBvaW50KEdyYXBo
JiBncmFwaCkKK3sKKyAgICBhdXRvKiBjb2RlQmxvY2sgPSBncmFwaC5jb2RlQmxvY2soKTsKKyAg
ICB1bnNpZ25lZCBudW1iZXJPZlZhcmlhYmxlcyA9IGNvZGVCbG9jay0+bnVtQ2FsbGVlTG9jYWxz
KCk7CisgICAgZm9yIChCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrIDogZ3JhcGgpIHsKKyAgICAg
ICAgYmxvY2stPmluKCkucmVzaXplKG51bWJlck9mVmFyaWFibGVzKTsKKyAgICAgICAgYmxvY2st
Pm91dCgpLnJlc2l6ZShudW1iZXJPZlZhcmlhYmxlcyk7CisgICAgICAgIGJsb2NrLT5pbigpLmNs
ZWFyQWxsKCk7CisgICAgICAgIGJsb2NrLT5vdXQoKS5jbGVhckFsbCgpOworICAgIH0KKworICAg
IGJvb2wgY2hhbmdlZDsKKyAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGxhc3RCbG9jayA9IGdyYXBo
Lmxhc3QoKTsKKyAgICBsYXN0QmxvY2stPmluKCkuY2xlYXJBbGwoKTsKKyAgICBsYXN0QmxvY2st
Pm91dCgpLmNsZWFyQWxsKCk7CisgICAgRmFzdEJpdFZlY3RvciBuZXdPdXQ7CisgICAgbmV3T3V0
LnJlc2l6ZShsYXN0QmxvY2stPm91dCgpLm51bUJpdHMoKSk7CisgICAgZG8geworICAgICAgICBj
aGFuZ2VkID0gZmFsc2U7CisgICAgICAgIGZvciAoc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFz
aWNCbG9jaz4mIGJsb2NrIDogZ3JhcGguYmFzaWNCbG9ja3NJblJldmVyc2VPcmRlcigpKSB7Cisg
ICAgICAgICAgICBuZXdPdXQuY2xlYXJBbGwoKTsKKyAgICAgICAgICAgIGZvciAoQnl0ZWNvZGVC
YXNpY0Jsb2NrKiBzdWNjZXNzb3IgOiBibG9jay0+c3VjY2Vzc29ycygpKQorICAgICAgICAgICAg
ICAgIG5ld091dC5tZXJnZShzdWNjZXNzb3ItPmluKCkpOworICAgICAgICAgICAgYmxvY2stPm91
dCgpLnNldChuZXdPdXQpOworICAgICAgICAgICAgY2hhbmdlZCB8PSBjb21wdXRlTG9jYWxMaXZl
bmVzc0ZvckJsb2NrKGdyYXBoLCBibG9jay5nZXQoKSk7CisgICAgICAgIH0KKyAgICB9IHdoaWxl
IChjaGFuZ2VkKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVSZXdyaXRlci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVSZXdyaXRlci5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDkz
MGI5OGRkYzNhMDBkNTYyMGMxZTc5NDUyZDI0ZDA5ZDIwOTA3NgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVJld3JpdGVyLmNwcApAQCAt
MCwwICsxLDExOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBZdXN1a2UgU3V6dWtpIDx1
dGF0YW5lLnRlYUBnbWFpbC5jb20+CisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiQnl0ZWNvZGVSZXdyaXRlci5oIgorCisjaW5jbHVkZSA8d3RmL0J1YmJsZVNvcnQuaD4K
KworbmFtZXNwYWNlIEpTQyB7CisKK3ZvaWQgQnl0ZWNvZGVSZXdyaXRlcjo6YXBwbHlNb2RpZmlj
YXRpb24oKQoreworICAgIGZvciAoc2l6ZV90IGluc2VydGlvbkluZGV4ID0gbV9pbnNlcnRpb25z
LnNpemUoKTsgaW5zZXJ0aW9uSW5kZXgtLTspIHsKKyAgICAgICAgSW5zZXJ0aW9uJiBpbnNlcnRp
b24gPSBtX2luc2VydGlvbnNbaW5zZXJ0aW9uSW5kZXhdOworICAgICAgICBpZiAoaW5zZXJ0aW9u
LmVsZW1lbnQoKS50eXBlID09IENvbW1hbmQ6OlR5cGU6OlJlbW92ZSkKKyAgICAgICAgICAgIG1f
Z3JhcGguaW5zdHJ1Y3Rpb25zKCkucmVtb3ZlKGluc2VydGlvbi5pbmRleCgpLCBpbnNlcnRpb24u
ZWxlbWVudCgpLmxlbmd0aCgpKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBpZiAoaW5z
ZXJ0aW9uLmVsZW1lbnQoKS5ieXRlY29kZVR5cGUgPT0gQ29tbWFuZDo6Qnl0ZWNvZGVUeXBlOjpC
cmFuY2gpCisgICAgICAgICAgICAgICAgYWRqdXN0SnVtcEluc2VydGlvbihhZGp1c3RPZmZzZXRX
aXRoSW5zZXJ0aW9ucygwLCBpbnNlcnRpb24uaW5kZXgoKSwgbV9pbnNlcnRpb25zLmJlZ2luKCks
IG1faW5zZXJ0aW9ucy5iZWdpbigpICsgaW5zZXJ0aW9uSW5kZXgpLCBpbnNlcnRpb24pOworICAg
ICAgICAgICAgbV9ncmFwaC5pbnN0cnVjdGlvbnMoKS5pbnNlcnRWZWN0b3IoaW5zZXJ0aW9uLmlu
ZGV4KCksIGluc2VydGlvbi5lbGVtZW50KCkuaW5zdHJ1Y3Rpb25zKTsKKyAgICAgICAgfQorICAg
IH0KKyAgICBtX2luc2VydGlvbnMuY2xlYXIoKTsKK30KKwordm9pZCBCeXRlY29kZVJld3JpdGVy
OjpleGVjdXRlKCkKK3sKKyAgICBXVEY6OmJ1YmJsZVNvcnQobV9pbnNlcnRpb25zLmJlZ2luKCks
IG1faW5zZXJ0aW9ucy5lbmQoKSwgW10gKGNvbnN0IEluc2VydGlvbiYgbGhzLCBjb25zdCBJbnNl
cnRpb24mIHJocykgeworICAgICAgICBpZiAobGhzLmluZGV4KCkgPT0gcmhzLmluZGV4KCkpIHsK
KyAgICAgICAgICAgIGlmIChsaHMuZWxlbWVudCgpLnR5cGUgPT0gcmhzLmVsZW1lbnQoKS50eXBl
KQorICAgICAgICAgICAgICAgIHJldHVybiBsaHMuZWxlbWVudCgpLnBvc2l0aW9uIDwgcmhzLmVs
ZW1lbnQoKS5wb3NpdGlvbjsKKyAgICAgICAgICAgIC8vIFdlIHdvdWxkIGxpa2UgdG8gcGVyZm9y
bSByZW1vdmUgb3BlcmF0aW9uIGJlZm9yZSBpbnNlcnRpb24uCisgICAgICAgICAgICByZXR1cm4g
bGhzLmVsZW1lbnQoKS50eXBlIDwgcmhzLmVsZW1lbnQoKS50eXBlOworICAgICAgICB9CisgICAg
ICAgIHJldHVybiBsaHMgPCByaHM7CisgICAgfSk7CisKKyAgICAvLyBDb252ZXJ0IHRvIGFic29s
dXRlIGZpbmFsIG9mZnNldHMuCisgICAgZm9yIChTd2l0Y2hFbnRyeSYgZW50cnkgOiBtX2luc2Vy
dGVkU3dpdGNoZXMpIHsKKyAgICAgICAgVW5saW5rZWRTaW1wbGVKdW1wVGFibGUmIHRhYmxlID0g
bV9ncmFwaC5jb2RlQmxvY2soKS0+c3dpdGNoSnVtcFRhYmxlKGVudHJ5LnRhYmxlSW5kZXgpOwor
ICAgICAgICBlbnRyeS5kZWZhdWx0T2Zmc2V0ID0gYWRqdXN0T2Zmc2V0KDAsIGVudHJ5LmRlZmF1
bHRPZmZzZXQpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSB0YWJsZS5icmFuY2hPZmZzZXRz
LnNpemUoKTsgaS0tOykKKyAgICAgICAgICAgIHRhYmxlLmJyYW5jaE9mZnNldHNbaV0gPSBhZGp1
c3RPZmZzZXQoMCwgdGFibGUuYnJhbmNoT2Zmc2V0c1tpXSk7CisgICAgfQorCisgICAgVW5saW5r
ZWRDb2RlQmxvY2sqIGNvZGVCbG9jayA9IG1fZ3JhcGguY29kZUJsb2NrKCk7CisgICAgY29kZUJs
b2NrLT5hcHBseU1vZGlmaWNhdGlvbigqdGhpcyk7Cit9CisKK3ZvaWQgQnl0ZWNvZGVSZXdyaXRl
cjo6YWRqdXN0SnVtcEluc2VydGlvbih1bnNpZ25lZCBmaW5hbE9mZnNldCwgSW5zZXJ0aW9uJiBp
bnNlcnRpb24pCit7CisgICAgU3dpdGNoRW50cnkmIGVudHJ5ID0gbV9pbnNlcnRlZFN3aXRjaGVz
W2luc2VydGlvbi5lbGVtZW50KCkuanVtcEVudHJ5XTsKKyAgICBVbmxpbmtlZFNpbXBsZUp1bXBU
YWJsZSYgdGFibGUgPSBtX2dyYXBoLmNvZGVCbG9jaygpLT5zd2l0Y2hKdW1wVGFibGUoZW50cnku
dGFibGVJbmRleCk7CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSB0YWJsZS5icmFuY2hPZmZzZXRz
LnNpemUoKTsgaS0tOykKKyAgICAgICAgdGFibGUuYnJhbmNoT2Zmc2V0c1tpXSA9IHRhYmxlLmJy
YW5jaE9mZnNldHNbaV0gLSBzdGF0aWNfY2FzdDxpbnQ+KGZpbmFsT2Zmc2V0KTsKKworICAgIGlu
c2VydGlvbi5lbGVtZW50KCkuaW5zdHJ1Y3Rpb25zWzJdID0gc3RhdGljX2Nhc3Q8aW50PihlbnRy
eS5kZWZhdWx0T2Zmc2V0KSAtIHN0YXRpY19jYXN0PGludD4oZmluYWxPZmZzZXQpOworfQorCit2
b2lkIEJ5dGVjb2RlUmV3cml0ZXI6Omluc2VydEltcGwodW5zaWduZWQganVtcEVudHJ5LCBDb21t
YW5kOjpCeXRlY29kZVR5cGUgYnl0ZWNvZGVUeXBlLCBQb3NpdGlvbiBwb3NpdGlvbiwgdW5zaWdu
ZWQgYnl0ZWNvZGVPZmZzZXQsIFZlY3RvcjxVbmxpbmtlZEluc3RydWN0aW9uPiYmIGZyYWdtZW50
KQoreworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UocG9zaXRpb24gIT0gUG9zaXRpb246OkJhc2VQ
b2ludCwgIkJhc2VQb2ludCBpcyBub3QgYWxsb3dlZC4iKTsKKyAgICBtX2luc2VydGlvbnMuYXBw
ZW5kKEluc2VydGlvbihieXRlY29kZU9mZnNldCwgQ29tbWFuZCB7CisgICAgICAgIENvbW1hbmQ6
OlR5cGU6Okluc2VydCwKKyAgICAgICAgcG9zaXRpb24sCisgICAgICAgIGJ5dGVjb2RlVHlwZSwK
KyAgICAgICAganVtcEVudHJ5LAorICAgICAgICAwLAorICAgICAgICBXVEZNb3ZlKGZyYWdtZW50
KQorICAgIH0pKTsKK30KKworVW5saW5rZWRTaW1wbGVKdW1wVGFibGUmIEJ5dGVjb2RlUmV3cml0
ZXI6Omluc2VydFN3aXRjaEltbWVkaWF0ZUltcGwoUG9zaXRpb24gcG9zaXRpb24sIHVuc2lnbmVk
IGJ5dGVjb2RlT2Zmc2V0LCB1bnNpZ25lZCBkZWZhdWx0T2Zmc2V0LCBpbnQgcmVnKQoreworICAg
IFN3aXRjaEVudHJ5IGVudHJ5IHsKKyAgICAgICAgbV9ncmFwaC5jb2RlQmxvY2soKS0+bnVtYmVy
T2ZTd2l0Y2hKdW1wVGFibGVzKCksCisgICAgICAgIGRlZmF1bHRPZmZzZXQsCisgICAgfTsKKwor
ICAgIFZlY3RvcjxVbmxpbmtlZEluc3RydWN0aW9uPiBmcmFnbWVudCA9IHsKKyAgICAgICAgVW5s
aW5rZWRJbnN0cnVjdGlvbihvcF9zd2l0Y2hfaW1tKSwKKyAgICAgICAgVW5saW5rZWRJbnN0cnVj
dGlvbihlbnRyeS50YWJsZUluZGV4KSwKKyAgICAgICAgVW5saW5rZWRJbnN0cnVjdGlvbihkZWZh
dWx0T2Zmc2V0KSwKKyAgICAgICAgVW5saW5rZWRJbnN0cnVjdGlvbihyZWcpCisgICAgfTsKKwor
ICAgIGF1dG8mIGp1bXBUYWJsZSA9IG1fZ3JhcGguY29kZUJsb2NrKCktPmFkZFN3aXRjaEp1bXBU
YWJsZSgpOworICAgIHVuc2lnbmVkIGp1bXBFbnRyeSA9IG1faW5zZXJ0ZWRTd2l0Y2hlcy5zaXpl
KCk7CisgICAgbV9pbnNlcnRlZFN3aXRjaGVzLmFwcGVuZChlbnRyeSk7CisgICAgaW5zZXJ0SW1w
bChqdW1wRW50cnksIENvbW1hbmQ6OkJ5dGVjb2RlVHlwZTo6QnJhbmNoLCBwb3NpdGlvbiwgYnl0
ZWNvZGVPZmZzZXQsIFdURk1vdmUoZnJhZ21lbnQpKTsKKyAgICByZXR1cm4ganVtcFRhYmxlOwor
fQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZVJld3JpdGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVSZXdyaXRlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlYTA5ZDlhM2M0ZDE3ZjFhNjhl
ZGQwNjJiODlkM2IxNzE2NDE3YjcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVSZXdyaXRlci5oCkBAIC0wLDAgKzEsMjAyIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE2IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNv
bT4KKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQnl0ZWNvZGVHcmFwaC5oIgor
I2luY2x1ZGUgIkJ5dGVjb2Rlcy5oIgorI2luY2x1ZGUgIk9wY29kZS5oIgorI2luY2x1ZGUgIlVu
bGlua2VkQ29kZUJsb2NrLmgiCisjaW5jbHVkZSA8d3RmL0luc2VydGlvbi5oPgorCituYW1lc3Bh
Y2UgSlNDIHsKKworLy8gV2UgdXNlIHRoZSBvcmlnaW5hbCBieXRlY29kZSBvZmZzZXRzIGFzIGxh
YmVscy4KKy8vIFdlIHVzZSB0aGUgbGFiZWxzIHRvIHJlcHJlc2VudHMgdGhlIHBvc2l0aW9uIHRo
ZSBuZXcgYnl0ZWNvZGVzIGluc2VydGVkIGFuZCB0aGUgdGFyZ2V0IHdlIGp1bXAgdG8uCitjbGFz
cyBCeXRlY29kZVJld3JpdGVyIHsKK1dURl9NQUtFX05PTkNPUFlBQkxFKEJ5dGVjb2RlUmV3cml0
ZXIpOworcHVibGljOgorICAgIGVudW0gY2xhc3MgUG9zaXRpb24gOiBpbnQ4X3QgeyBCZWZvcmUg
PSAtMSwgQmFzZVBvaW50ID0gMCwgQWZ0ZXIgPSAxIH07CisKK3ByaXZhdGU6CisgICAgc3RydWN0
IENvbW1hbmQgeworICAgICAgICBlbnVtIGNsYXNzIFR5cGUgOiB1aW50OF90IHsgSW5zZXJ0ID0g
MCwgUmVtb3ZlID0gMSwgfTsKKyAgICAgICAgZW51bSBjbGFzcyBCeXRlY29kZVR5cGUgOiB1aW50
OF90IHsgTm9ybWFsLCBCcmFuY2ggfTsKKworICAgICAgICBzaXplX3QgbGVuZ3RoKCkgY29uc3QK
KyAgICAgICAgeworICAgICAgICAgICAgaWYgKHR5cGUgPT0gVHlwZTo6UmVtb3ZlKQorICAgICAg
ICAgICAgICAgIHJldHVybiByZW1vdmVMZW5ndGg7CisgICAgICAgICAgICByZXR1cm4gaW5zdHJ1
Y3Rpb25zLnNpemUoKTsKKyAgICAgICAgfQorCisgICAgICAgIFR5cGUgdHlwZTsKKyAgICAgICAg
UG9zaXRpb24gcG9zaXRpb247CisgICAgICAgIEJ5dGVjb2RlVHlwZSBieXRlY29kZVR5cGU7Cisg
ICAgICAgIHVuc2lnbmVkIGp1bXBFbnRyeTsKKyAgICAgICAgc2l6ZV90IHJlbW92ZUxlbmd0aDsK
KyAgICAgICAgVmVjdG9yPFVubGlua2VkSW5zdHJ1Y3Rpb24+IGluc3RydWN0aW9uczsKKyAgICB9
OworCisgICAgdHlwZWRlZiBXVEY6Okluc2VydGlvbjxDb21tYW5kPiBJbnNlcnRpb247CisKKyAg
ICBzdHJ1Y3QgU3dpdGNoRW50cnkgeworICAgICAgICBzaXplX3QgdGFibGVJbmRleDsKKyAgICAg
ICAgdW5zaWduZWQgZGVmYXVsdE9mZnNldDsKKyAgICB9OworCitwdWJsaWM6CisgICAgY2xhc3Mg
RnJhZ21lbnQgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEZyYWdtZW50KTsKKyAgICBwdWJs
aWM6CisgICAgICAgIEZyYWdtZW50KFZlY3RvcjxVbmxpbmtlZEluc3RydWN0aW9uPiYgZnJhZ21l
bnQpCisgICAgICAgICAgICA6IG1fZnJhZ21lbnQoZnJhZ21lbnQpCisgICAgICAgIHsKKyAgICAg
ICAgfQorCisgICAgICAgIHRlbXBsYXRlPGNsYXNzLi4uIEFyZ3M+CisgICAgICAgIHZvaWQgYXBw
ZW5kKEFyZ3MuLi4gYXJncykKKyAgICAgICAgeworICAgICAgICAgICAgVW5saW5rZWRJbnN0cnVj
dGlvbiBpbnN0cnVjdGlvbnNbc2l6ZW9mLi4uKGFyZ3MpXSA9IHsKKyAgICAgICAgICAgICAgICBV
bmxpbmtlZEluc3RydWN0aW9uKGFyZ3MpLi4uCisgICAgICAgICAgICB9OworICAgICAgICAgICAg
bV9mcmFnbWVudC5hcHBlbmQoaW5zdHJ1Y3Rpb25zLCBzaXplb2YuLi4oYXJncykpOworICAgICAg
ICB9CisKKyAgICBwcml2YXRlOgorICAgICAgICBWZWN0b3I8VW5saW5rZWRJbnN0cnVjdGlvbj4m
IG1fZnJhZ21lbnQ7CisgICAgfTsKKworICAgIEJ5dGVjb2RlUmV3cml0ZXIoQnl0ZWNvZGVHcmFw
aDxVbmxpbmtlZENvZGVCbG9jaz4mIGdyYXBoKQorICAgICAgICA6IG1fZ3JhcGgoZ3JhcGgpCisg
ICAgeworICAgIH0KKworICAgIHRlbXBsYXRlPGNsYXNzLi4uIEFyZ3M+CisgICAgdm9pZCBpbnNl
cnRCZWZvcmUodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIE9wY29kZUlEIG9wY29kZUlELCBBcmdz
Li4uIGFyZ3MpCisgICAgeworICAgICAgICBWZWN0b3I8VW5saW5rZWRJbnN0cnVjdGlvbj4gZnJh
Z21lbnQgPSB7CisgICAgICAgICAgICBVbmxpbmtlZEluc3RydWN0aW9uKG9wY29kZUlEKSwKKyAg
ICAgICAgICAgIFVubGlua2VkSW5zdHJ1Y3Rpb24oYXJncykuLi4KKyAgICAgICAgfTsKKyAgICAg
ICAgaW5zZXJ0SW1wbCgwLCBDb21tYW5kOjpCeXRlY29kZVR5cGU6Ok5vcm1hbCwgUG9zaXRpb246
OkJlZm9yZSwgYnl0ZWNvZGVPZmZzZXQsIFdURk1vdmUoZnJhZ21lbnQpKTsKKyAgICB9CisKKyAg
ICB0ZW1wbGF0ZTxjbGFzcy4uLiBBcmdzPgorICAgIHZvaWQgaW5zZXJ0QWZ0ZXIodW5zaWduZWQg
Ynl0ZWNvZGVPZmZzZXQsIE9wY29kZUlEIG9wY29kZUlELCBBcmdzLi4uIGFyZ3MpCisgICAgewor
ICAgICAgICBWZWN0b3I8VW5saW5rZWRJbnN0cnVjdGlvbj4gZnJhZ21lbnQgPSB7CisgICAgICAg
ICAgICBVbmxpbmtlZEluc3RydWN0aW9uKG9wY29kZUlEKSwKKyAgICAgICAgICAgIFVubGlua2Vk
SW5zdHJ1Y3Rpb24oYXJncykuLi4KKyAgICAgICAgfTsKKyAgICAgICAgaW5zZXJ0SW1wbCgwLCBD
b21tYW5kOjpCeXRlY29kZVR5cGU6Ok5vcm1hbCwgUG9zaXRpb246OkFmdGVyLCBieXRlY29kZU9m
ZnNldCwgV1RGTW92ZShmcmFnbWVudCkpOworICAgIH0KKworICAgIHRlbXBsYXRlPGNsYXNzIEZ1
bmN0aW9uPgorICAgIHZvaWQgaW5zZXJ0RnJhZ21lbnRCZWZvcmUodW5zaWduZWQgYnl0ZWNvZGVP
ZmZzZXQsIEZ1bmN0aW9uIGZ1bmN0aW9uKQorICAgIHsKKyAgICAgICAgVmVjdG9yPFVubGlua2Vk
SW5zdHJ1Y3Rpb24+IGluc3RydWN0aW9uczsKKyAgICAgICAgRnJhZ21lbnQgZnJhZ21lbnQoaW5z
dHJ1Y3Rpb25zKTsKKyAgICAgICAgZnVuY3Rpb24oZnJhZ21lbnQpOworICAgICAgICBpbnNlcnRJ
bXBsKDAsIENvbW1hbmQ6OkJ5dGVjb2RlVHlwZTo6Tm9ybWFsLCBQb3NpdGlvbjo6QmVmb3JlLCBi
eXRlY29kZU9mZnNldCwgV1RGTW92ZShpbnN0cnVjdGlvbnMpKTsKKyAgICB9CisKKyAgICB0ZW1w
bGF0ZTxjbGFzcyBGdW5jdGlvbj4KKyAgICB2b2lkIGluc2VydEZyYWdtZW50QWZ0ZXIodW5zaWdu
ZWQgYnl0ZWNvZGVPZmZzZXQsIEZ1bmN0aW9uIGZ1bmN0aW9uKQorICAgIHsKKyAgICAgICAgVmVj
dG9yPFVubGlua2VkSW5zdHJ1Y3Rpb24+IGluc3RydWN0aW9uczsKKyAgICAgICAgRnJhZ21lbnQg
ZnJhZ21lbnQoaW5zdHJ1Y3Rpb25zKTsKKyAgICAgICAgZnVuY3Rpb24oZnJhZ21lbnQpOworICAg
ICAgICBpbnNlcnRJbXBsKDAsIENvbW1hbmQ6OkJ5dGVjb2RlVHlwZTo6Tm9ybWFsLCBQb3NpdGlv
bjo6QWZ0ZXIsIGJ5dGVjb2RlT2Zmc2V0LCBXVEZNb3ZlKGluc3RydWN0aW9ucykpOworICAgIH0K
KworICAgIFVubGlua2VkU2ltcGxlSnVtcFRhYmxlJiBpbnNlcnRTd2l0Y2hJbW1lZGlhdGVCZWZv
cmUodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIHVuc2lnbmVkIGRlZmF1bHRPZmZzZXQsIGludCBy
ZWcpCisgICAgeworICAgICAgICByZXR1cm4gaW5zZXJ0U3dpdGNoSW1tZWRpYXRlSW1wbChQb3Np
dGlvbjo6QmVmb3JlLCBieXRlY29kZU9mZnNldCwgZGVmYXVsdE9mZnNldCwgcmVnKTsKKyAgICB9
CisKKyAgICB2b2lkIHJlbW92ZUJ5dGVjb2RlKHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KQorICAg
IHsKKyAgICAgICAgbV9pbnNlcnRpb25zLmFwcGVuZChJbnNlcnRpb24oYnl0ZWNvZGVPZmZzZXQs
IENvbW1hbmQgeyBDb21tYW5kOjpUeXBlOjpSZW1vdmUsIFBvc2l0aW9uOjpCYXNlUG9pbnQsIENv
bW1hbmQ6OkJ5dGVjb2RlVHlwZTo6Tm9ybWFsLCAwLCBvcGNvZGVMZW5ndGgobV9ncmFwaC5pbnN0
cnVjdGlvbnMoKVtieXRlY29kZU9mZnNldF0udS5vcGNvZGUpLCB7IH0gfSkpOworICAgIH0KKwor
ICAgIHZvaWQgZXhlY3V0ZSgpOworCisgICAgQnl0ZWNvZGVHcmFwaDxVbmxpbmtlZENvZGVCbG9j
az4mIGdyYXBoKCkgeyByZXR1cm4gbV9ncmFwaDsgfQorCisgICAgaW50IGFkanVzdE9mZnNldChp
bnQgYnl0ZWNvZGVPZmZzZXQsIGludCBqdW1wVGFyZ2V0KQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGFkanVzdE9mZnNldFdpdGhJbnNlcnRpb25zKGJ5dGVjb2RlT2Zmc2V0LCBqdW1wVGFyZ2V0LCBt
X2luc2VydGlvbnMuYmVnaW4oKSwgbV9pbnNlcnRpb25zLmVuZCgpKTsKKyAgICB9CisKK3ByaXZh
dGU6CisgICAgdm9pZCBpbnNlcnRJbXBsKHVuc2lnbmVkIGp1bXBFbnRyeSwgQ29tbWFuZDo6Qnl0
ZWNvZGVUeXBlLCBQb3NpdGlvbiwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIFZlY3RvcjxVbmxp
bmtlZEluc3RydWN0aW9uPiYmIGZyYWdtZW50KTsKKyAgICBVbmxpbmtlZFNpbXBsZUp1bXBUYWJs
ZSYgaW5zZXJ0U3dpdGNoSW1tZWRpYXRlSW1wbChQb3NpdGlvbiwgdW5zaWduZWQgYnl0ZWNvZGVP
ZmZzZXQsIHVuc2lnbmVkIGRlZmF1bHRPZmZzZXQsIGludCByZWcpOworCisgICAgZnJpZW5kIGNs
YXNzIFVubGlua2VkQ29kZUJsb2NrOworICAgIHZvaWQgYXBwbHlNb2RpZmljYXRpb24oKTsKKyAg
ICB2b2lkIGFkanVzdEp1bXBJbnNlcnRpb24odW5zaWduZWQgZmluYWxPZmZzZXQsIEluc2VydGlv
biYpOworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgSXRlcmF0b3I+CisgICAgaW50IGFkanVzdE9m
ZnNldFdpdGhJbnNlcnRpb25zKGludCBieXRlY29kZU9mZnNldCwgaW50IGp1bXBUYXJnZXQsIEl0
ZXJhdG9yIGluc2VydGlvbnNCZWdpbiwgSXRlcmF0b3IgaW5zZXJ0aW9uc0VuZCk7CisKKyAgICBC
eXRlY29kZUdyYXBoPFVubGlua2VkQ29kZUJsb2NrPiYgbV9ncmFwaDsKKyAgICBWZWN0b3I8SW5z
ZXJ0aW9uLCA4PiBtX2luc2VydGlvbnM7CisgICAgVmVjdG9yPFN3aXRjaEVudHJ5PiBtX2luc2Vy
dGVkU3dpdGNoZXM7Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBJdGVyYXRvcj4KK2lubGluZSBp
bnQgQnl0ZWNvZGVSZXdyaXRlcjo6YWRqdXN0T2Zmc2V0V2l0aEluc2VydGlvbnMoaW50IGJ5dGVj
b2RlT2Zmc2V0LCBpbnQganVtcFRhcmdldCwgSXRlcmF0b3IgaW5zZXJ0aW9uc0JlZ2luLCBJdGVy
YXRvciBpbnNlcnRpb25zRW5kKQoreworICAgIGlmIChieXRlY29kZU9mZnNldCA8IGp1bXBUYXJn
ZXQpIHsKKyAgICAgICAgYXV0byBzdGFydCA9IHN0ZDo6bG93ZXJfYm91bmQoaW5zZXJ0aW9uc0Jl
Z2luLCBpbnNlcnRpb25zRW5kLCBieXRlY29kZU9mZnNldCwgWyZdIChjb25zdCBJbnNlcnRpb24m
IGluc2VydGlvbiwgaW50IGJ5dGVjb2RlT2Zmc2V0KSB7CisgICAgICAgICAgICBpZiAoc3RhdGlj
X2Nhc3Q8aW50PihpbnNlcnRpb24uaW5kZXgoKSkgPT0gYnl0ZWNvZGVPZmZzZXQpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIGluc2VydGlvbi5lbGVtZW50KCkucG9zaXRpb24gPCBQb3NpdGlvbjo6
QmFzZVBvaW50OworICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oaW5zZXJ0aW9u
LmluZGV4KCkpIDwgYnl0ZWNvZGVPZmZzZXQ7CisgICAgICAgIH0pOworICAgICAgICBpZiAoc3Rh
cnQgIT0gaW5zZXJ0aW9uc0VuZCkgeworICAgICAgICAgICAgYXV0byBlbmQgPSBzdGQ6Omxvd2Vy
X2JvdW5kKGluc2VydGlvbnNCZWdpbiwgaW5zZXJ0aW9uc0VuZCwganVtcFRhcmdldCwgWyZdIChj
b25zdCBJbnNlcnRpb24mIGluc2VydGlvbiwgaW50IGp1bXBUYXJnZXQpIHsKKyAgICAgICAgICAg
ICAgICBpZiAoc3RhdGljX2Nhc3Q8aW50PihpbnNlcnRpb24uaW5kZXgoKSkgPT0ganVtcFRhcmdl
dCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGluc2VydGlvbi5lbGVtZW50KCkucG9zaXRp
b24gPCBQb3NpdGlvbjo6QmFzZVBvaW50OworICAgICAgICAgICAgICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxpbnQ+KGluc2VydGlvbi5pbmRleCgpKSA8IGp1bXBUYXJnZXQ7CisgICAgICAgICAgICB9
KTsKKyAgICAgICAgICAgIGZvciAoOyBzdGFydCAhPSBlbmQ7ICsrc3RhcnQpIHsKKyAgICAgICAg
ICAgICAgICBpZiAoc3RhcnQtPmVsZW1lbnQoKS50eXBlID09IENvbW1hbmQ6OlR5cGU6OlJlbW92
ZSkKKyAgICAgICAgICAgICAgICAgICAganVtcFRhcmdldCAtPSBzdGFydC0+ZWxlbWVudCgpLmxl
bmd0aCgpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAganVtcFRh
cmdldCArPSBzdGFydC0+ZWxlbWVudCgpLmxlbmd0aCgpOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgICAgIHJldHVybiBqdW1wVGFyZ2V0IC0gYnl0ZWNvZGVPZmZzZXQ7CisgICAgfQor
CisgICAgaWYgKGJ5dGVjb2RlT2Zmc2V0ID09IGp1bXBUYXJnZXQpCisgICAgICAgIHJldHVybiAw
OworCisgICAgcmV0dXJuIC1hZGp1c3RPZmZzZXRXaXRoSW5zZXJ0aW9ucyhqdW1wVGFyZ2V0LCBi
eXRlY29kZU9mZnNldCwgaW5zZXJ0aW9uc0JlZ2luLCBpbnNlcnRpb25zRW5kKTsKK30KKworfSAv
LyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVVc2VEZWYuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZVVzZURlZi5oCmluZGV4IDYwNTdlZjYwOWVlZDFlZTJhOTliMDc2MjhiOTFjOTc1NTMzZmU0
YmIuLjRmMTRiMjMwOTA0YzFkNmY2ZDczYmY2ODBkYzAzMjRhZWZjNmY2YjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCkBAIC0zMCwxNSAr
MzAsOSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4K
LXZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCgKLSAgICBDb2RlQmxvY2sqIGNvZGVC
bG9jaywgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaywgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQs
IGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCit0ZW1wbGF0ZTx0eXBlbmFtZSBCbG9jaywgdHlwZW5h
bWUgRnVuY3RvciwgdHlwZW5hbWUgSW5zdHJ1Y3Rpb24+Cit2b2lkIGNvbXB1dGVVc2VzRm9yQnl0
ZWNvZGVPZmZzZXQoQmxvY2sqIGNvZGVCbG9jaywgT3Bjb2RlSUQgb3Bjb2RlSUQsIEluc3RydWN0
aW9uKiBpbnN0cnVjdGlvbiwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikKIHsKLSAgICBJbnRlcnBy
ZXRlciogaW50ZXJwcmV0ZXIgPSBjb2RlQmxvY2stPnZtKCktPmludGVycHJldGVyOwotICAgIElu
c3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiA9IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCku
YmVnaW4oKTsKLSAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSAmaW5zdHJ1Y3Rpb25zQmVn
aW5bYnl0ZWNvZGVPZmZzZXRdOwotICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0ZXIt
PmdldE9wY29kZUlEKGluc3RydWN0aW9uLT51Lm9wY29kZSk7Ci0KICAgICBpZiAob3Bjb2RlSUQg
IT0gb3BfZW50ZXIgJiYgY29kZUJsb2NrLT53YXNDb21waWxlZFdpdGhEZWJ1Z2dpbmdPcGNvZGVz
KCkgJiYgY29kZUJsb2NrLT5zY29wZVJlZ2lzdGVyKCkuaXNWYWxpZCgpKQogICAgICAgICBmdW5j
dG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBjb2RlQmxvY2stPnNjb3BlUmVn
aXN0ZXIoKS5vZmZzZXQoKSk7CiAKQEAgLTc1LDggKzY5LDcgQEAgdm9pZCBjb21wdXRlVXNlc0Zv
ckJ5dGVjb2RlT2Zmc2V0KAogICAgIGNhc2Ugb3Bfam5lcV9udWxsOgogICAgIGNhc2Ugb3BfZGVj
OgogICAgIGNhc2Ugb3BfaW5jOgotICAgIGNhc2Ugb3BfbG9nX3NoYWRvd19jaGlja2VuX3Byb2xv
Z3VlOgotICAgIGNhc2Ugb3BfcmVzdW1lOiB7CisgICAgY2FzZSBvcF9sb2dfc2hhZG93X2NoaWNr
ZW5fcHJvbG9ndWU6IHsKICAgICAgICAgQVNTRVJUKG9wY29kZUxlbmd0aHNbb3Bjb2RlSURdID4g
MSk7CiAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGlu
c3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CiAgICAgICAgIHJldHVybjsKQEAgLTI4NywyMCArMjgw
LDkgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAogICAgICAgICAgICAgZnVu
Y3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgY29kZUJsb2NrLT5zY29wZVJl
Z2lzdGVyKCkub2Zmc2V0KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGNhc2Ugb3Bf
c2F2ZTogeworICAgIGNhc2Ugb3BfeWllbGQ6IHsKICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ss
IGluc3RydWN0aW9uLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKTsKLSAgICAg
ICAgdW5zaWduZWQgbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0ID0gYnl0ZWNvZGVPZmZzZXQgKyBp
bnN0cnVjdGlvblszXS51Lm9wZXJhbmQ7Ci0gICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogbWVy
Z2VQb2ludEJsb2NrID0gbnVsbHB0cjsKLSAgICAgICAgZm9yIChCeXRlY29kZUJhc2ljQmxvY2sq
IHN1Y2Nlc3NvciA6IGJsb2NrLT5zdWNjZXNzb3JzKCkpIHsKLSAgICAgICAgICAgIGlmIChzdWNj
ZXNzb3ItPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCkgPT0gbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0
KSB7Ci0gICAgICAgICAgICAgICAgbWVyZ2VQb2ludEJsb2NrID0gc3VjY2Vzc29yOwotICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIEFTU0VS
VChtZXJnZVBvaW50QmxvY2spOwotICAgICAgICBtZXJnZVBvaW50QmxvY2stPmluKCkuZm9yRWFj
aFNldEJpdChbJl0odW5zaWduZWQgbG9jYWwpIHsKLSAgICAgICAgICAgIGZ1bmN0b3IoY29kZUJs
b2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGxvY2Fs
KS5vZmZzZXQoKSk7Ci0gICAgICAgIH0pOworICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5z
dHJ1Y3Rpb24sIG9wY29kZUlELCBpbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogICAgIGRlZmF1bHQ6CkBAIC0zMDksMjAgKzI5MSwxNSBAQCB2b2lkIGNv
bXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoCiAgICAgfQogfQogCi10ZW1wbGF0ZTx0eXBlbmFt
ZSBGdW5jdG9yPgotdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayog
Y29kZUJsb2NrLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9m
ZnNldCwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikKK3RlbXBsYXRlPHR5cGVuYW1lIEJsb2NrLCB0
eXBlbmFtZSBJbnN0cnVjdGlvbiwgdHlwZW5hbWUgRnVuY3Rvcj4KK3ZvaWQgY29tcHV0ZURlZnNG
b3JCeXRlY29kZU9mZnNldChCbG9jayogY29kZUJsb2NrLCBPcGNvZGVJRCBvcGNvZGVJRCwgSW5z
dHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQogewotICAgIElu
dGVycHJldGVyKiBpbnRlcnByZXRlciA9IGNvZGVCbG9jay0+dm0oKS0+aW50ZXJwcmV0ZXI7Ci0g
ICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luID0gY29kZUJsb2NrLT5pbnN0cnVjdGlv
bnMoKS5iZWdpbigpOwotICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9ICZpbnN0cnVjdGlv
bnNCZWdpbltieXRlY29kZU9mZnNldF07Ci0gICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnRlcnBy
ZXRlci0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb24tPnUub3Bjb2RlKTsKICAgICBzd2l0Y2ggKG9w
Y29kZUlEKSB7CiAgICAgLy8gVGhlc2UgZG9uJ3QgZGVmaW5lIGFueXRoaW5nLgogICAgIGNhc2Ug
b3BfcHV0X3RvX3Njb3BlOgogICAgIGNhc2Ugb3BfZW5kOgogICAgIGNhc2Ugb3BfdGhyb3c6CiAg
ICAgY2FzZSBvcF90aHJvd19zdGF0aWNfZXJyb3I6Ci0gICAgY2FzZSBvcF9zYXZlOgogICAgIGNh
c2Ugb3BfYXNzZXJ0OgogICAgIGNhc2Ugb3BfZGVidWc6CiAgICAgY2FzZSBvcF9yZXQ6CkBAIC0z
NjIsNiArMzM5LDcgQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9j
ayogY29kZUJsb2NrLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2MKICAgICBjYXNlIG9wX3dhdGNo
ZG9nOgogICAgIGNhc2Ugb3BfbG9nX3NoYWRvd19jaGlja2VuX3Byb2xvZ3VlOgogICAgIGNhc2Ug
b3BfbG9nX3NoYWRvd19jaGlja2VuX3RhaWw6CisgICAgY2FzZSBvcF95aWVsZDoKICNkZWZpbmUg
TExJTlRfSEVMUEVSX09QQ09ERVMob3Bjb2RlLCBsZW5ndGgpIGNhc2Ugb3Bjb2RlOgogICAgICAg
ICBGT1JfRUFDSF9MTElOVF9PUENPREVfRVhURU5TSU9OKExMSU5UX0hFTFBFUl9PUENPREVTKTsK
ICN1bmRlZiBMTElOVF9IRUxQRVJfT1BDT0RFUwpAQCAtNDgwLDE1ICs0NTgsNiBAQCB2b2lkIGNv
bXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2Rl
QmFzaWNCbG9jayogYmxvYwogICAgICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0
aW9uLCBvcGNvZGVJRCwgdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaSkub2Zmc2V0KCkpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQotICAgIGNhc2Ugb3BfcmVzdW1lOiB7Ci0gICAgICAgIFJFTEVB
U0VfQVNTRVJUKGJsb2NrLT5zdWNjZXNzb3JzKCkuc2l6ZSgpID09IDEpOwotICAgICAgICAvLyBG
SVhNRTogVGhpcyBpcyByZWFsbHkgZGlydHkuCi0gICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTkyODEKLSAgICAgICAgYmxvY2stPnN1Y2Nlc3NvcnMo
KVswXS0+aW4oKS5mb3JFYWNoU2V0Qml0KFsmXSh1bnNpZ25lZCBsb2NhbCkgewotICAgICAgICAg
ICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgdmlydHVhbFJlZ2lz
dGVyRm9yTG9jYWwobG9jYWwpLm9mZnNldCgpKTsKLSAgICAgICAgfSk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2suY3BwCmluZGV4IDFkOTEzNWEyMzczOTE2MzA5MThmZDU1YTZlNTQyNTg5NzE1Y2Qw
YjUuLjU4NmNjZjUyOGQ0YmZhZDJhYjkwYjllYWU2NjQ2YjFlYTJkMTQxMGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC0zMyw2ICszMyw3IEBA
CiAjaW5jbHVkZSAiQXJpdGhQcm9maWxlLmgiCiAjaW5jbHVkZSAiQmFzaWNCbG9ja0xvY2F0aW9u
LmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVHZW5lcmF0b3IuaCIKKyNpbmNsdWRlICJCeXRlY29kZUxp
dmVuZXNzQW5hbHlzaXMuaCIKICNpbmNsdWRlICJCeXRlY29kZVVzZURlZi5oIgogI2luY2x1ZGUg
IkNhbGxMaW5rU3RhdHVzLmgiCiAjaW5jbHVkZSAiREZHQ2FwYWJpbGl0aWVzLmgiCkBAIC02OTYs
MTggKzY5Nyw2IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoUHJpbnRTdHJlYW0mIG91
dCkKICAgICAgICAgfSB3aGlsZSAoaSA8IG1fcmFyZURhdGEtPm1fc3RyaW5nU3dpdGNoSnVtcFRh
Ymxlcy5zaXplKCkpOwogICAgIH0KIAotICAgIGlmIChtX3JhcmVEYXRhICYmICFtX3JhcmVEYXRh
LT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkLmlzRW1wdHkoKSkgewotICAgICAgICBvdXQucHJp
bnRmKCJcbkxpdmUgQ2FsbGVlIExvY2FsczpcbiIpOwotICAgICAgICB1bnNpZ25lZCBpID0gMDsK
LSAgICAgICAgZG8gewotICAgICAgICAgICAgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZW5lc3Mg
PSBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkW2ldOwotICAgICAgICAgICAg
b3V0LnByaW50ZigiICBsaXZlJTF1ID0gIiwgaSk7Ci0gICAgICAgICAgICBsaXZlbmVzcy5kdW1w
KG91dCk7Ci0gICAgICAgICAgICBvdXQucHJpbnRmKCJcbiIpOwotICAgICAgICAgICAgKytpOwot
ICAgICAgICB9IHdoaWxlIChpIDwgbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVs
ZC5zaXplKCkpOwotICAgIH0KLQogICAgIG91dC5wcmludGYoIlxuIik7CiB9CiAKQEAgLTE2NzEs
MzEgKzE2NjAsNiBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKAogICAgICAgICAgICAg
b3V0LnByaW50ZigiJXMsICVkIiwgZGVidWdIb29rTmFtZShkZWJ1Z0hvb2tJRCksIGhhc0JyZWFr
cG9pbnRGbGFnKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIGNhc2Ug
b3Bfc2F2ZTogewotICAgICAgICAgICAgaW50IGdlbmVyYXRvciA9ICgrK2l0KS0+dS5vcGVyYW5k
OwotICAgICAgICAgICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gKCsraXQpLT51
LnVuc2lnbmVkVmFsdWU7Ci0gICAgICAgICAgICBpbnQgb2Zmc2V0ID0gKCsraXQpLT51Lm9wZXJh
bmQ7Ci0gICAgICAgICAgICBGYXN0Qml0VmVjdG9yIGxpdmVuZXNzOwotICAgICAgICAgICAgaWYg
KGxpdmVDYWxsZWVMb2NhbHNJbmRleCA8IG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0
WWllbGQuc2l6ZSgpKQotICAgICAgICAgICAgICAgIGxpdmVuZXNzID0gbV9yYXJlRGF0YS0+bV9s
aXZlQ2FsbGVlTG9jYWxzQXRZaWVsZFtsaXZlQ2FsbGVlTG9jYWxzSW5kZXhdOwotICAgICAgICAg
ICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAic2F2ZSIpOwot
ICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICIsIHJlZ2lzdGVyTmFtZShnZW5lcmF0b3IpLmRh
dGEoKSk7Ci0gICAgICAgICAgICBsaXZlbmVzcy5kdW1wKG91dCk7Ci0gICAgICAgICAgICBvdXQu
cHJpbnRmKCIoQGxpdmUlMXUpLCAlZCgtPiVkKSIsIGxpdmVDYWxsZWVMb2NhbHNJbmRleCwgb2Zm
c2V0LCBsb2NhdGlvbiArIG9mZnNldCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQot
ICAgICAgICBjYXNlIG9wX3Jlc3VtZTogewotICAgICAgICAgICAgaW50IGdlbmVyYXRvciA9ICgr
K2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0lu
ZGV4ID0gKCsraXQpLT51LnVuc2lnbmVkVmFsdWU7Ci0gICAgICAgICAgICBGYXN0Qml0VmVjdG9y
IGxpdmVuZXNzOwotICAgICAgICAgICAgaWYgKGxpdmVDYWxsZWVMb2NhbHNJbmRleCA8IG1fcmFy
ZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQuc2l6ZSgpKQotICAgICAgICAgICAgICAg
IGxpdmVuZXNzID0gbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZFtsaXZlQ2Fs
bGVlTG9jYWxzSW5kZXhdOwotICAgICAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhl
YywgbG9jYXRpb24sIGl0LCAicmVzdW1lIik7Ci0gICAgICAgICAgICBvdXQucHJpbnRmKCIlcywg
IiwgcmVnaXN0ZXJOYW1lKGdlbmVyYXRvcikuZGF0YSgpKTsKLSAgICAgICAgICAgIGxpdmVuZXNz
LmR1bXAob3V0KTsKLSAgICAgICAgICAgIG91dC5wcmludGYoIihAbGl2ZSUxdSkiLCBsaXZlQ2Fs
bGVlTG9jYWxzSW5kZXgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KICAgICAgICAg
Y2FzZSBvcF9hc3NlcnQ6IHsKICAgICAgICAgICAgIGludCBjb25kaXRpb24gPSAoKytpdCktPnUu
b3BlcmFuZDsKICAgICAgICAgICAgIGludCBsaW5lID0gKCsraXQpLT51Lm9wZXJhbmQ7CkBAIC0x
OTA3LDcgKzE4NzEsNiBAQCB2b2lkIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBD
b3B5UGFyc2VkQmxvY2tUYWcsIENvZGVCbG9jayYgb3RoZXIpCiAgICAgICAgIG1fcmFyZURhdGEt
Pm1fY29uc3RhbnRCdWZmZXJzID0gb3RoZXIubV9yYXJlRGF0YS0+bV9jb25zdGFudEJ1ZmZlcnM7
CiAgICAgICAgIG1fcmFyZURhdGEtPm1fc3dpdGNoSnVtcFRhYmxlcyA9IG90aGVyLm1fcmFyZURh
dGEtPm1fc3dpdGNoSnVtcFRhYmxlczsKICAgICAgICAgbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0
Y2hKdW1wVGFibGVzID0gb3RoZXIubV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVz
OwotICAgICAgICBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkID0gb3RoZXIu
bV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZDsKICAgICB9CiAgICAgCiAgICAg
aGVhcCgpLT5tX2NvZGVCbG9ja3MuYWRkKHRoaXMpOwpAQCAtMjAyOSw3ICsxOTkyLDcgQEAgdm9p
ZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3du
ZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICAgICAgICAgICAgICBVbmxpbmtlZFN0cmluZ0p1bXBU
YWJsZTo6U3RyaW5nT2Zmc2V0VGFibGU6Oml0ZXJhdG9yIGVuZCA9IHVubGlua2VkQ29kZUJsb2Nr
LT5zdHJpbmdTd2l0Y2hKdW1wVGFibGUoaSkub2Zmc2V0VGFibGUuZW5kKCk7CiAgICAgICAgICAg
ICAgICAgZm9yICg7IHB0ciAhPSBlbmQ7ICsrcHRyKSB7CiAgICAgICAgICAgICAgICAgICAgIE9m
ZnNldExvY2F0aW9uIG9mZnNldDsKLSAgICAgICAgICAgICAgICAgICAgb2Zmc2V0LmJyYW5jaE9m
ZnNldCA9IHB0ci0+dmFsdWU7CisgICAgICAgICAgICAgICAgICAgIG9mZnNldC5icmFuY2hPZmZz
ZXQgPSBwdHItPnZhbHVlLmJyYW5jaE9mZnNldDsKICAgICAgICAgICAgICAgICAgICAgbV9yYXJl
RGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzW2ldLm9mZnNldFRhYmxlLmFkZChwdHItPmtl
eSwgb2Zmc2V0KTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CkBAIC0yMDY5LDEx
ICsyMDMyLDE3IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlw
dEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAgLy8gQm9va2tlZXAgdGhl
IHN0cm9uZ2x5IHJlZmVyZW5jZWQgbW9kdWxlIGVudmlyb25tZW50cy4KICAgICBIYXNoU2V0PEpT
TW9kdWxlRW52aXJvbm1lbnQqPiBzdHJvbmdseVJlZmVyZW5jZWRNb2R1bGVFbnZpcm9ubWVudHM7
CiAKLSAgICAvLyBCb29ra2VlcCB0aGUgbWVyZ2UgcG9pbnQgYnl0ZWNvZGUgb2Zmc2V0cy4KLSAg
ICBWZWN0b3I8c2l6ZV90PiBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXRzOwotCiAgICAgUmVmQ291
bnRlZEFycmF5PEluc3RydWN0aW9uPiBpbnN0cnVjdGlvbnMoaW5zdHJ1Y3Rpb25Db3VudCk7CiAK
KyAgICB1bnNpZ25lZCB2YWx1ZVByb2ZpbGVDb3VudCA9IDA7CisgICAgYXV0byBsaW5rVmFsdWVQ
cm9maWxlID0gWyZdKHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCB1bnNpZ25lZCBvcExlbmd0aCkg
eworICAgICAgICB1bnNpZ25lZCB2YWx1ZVByb2ZpbGVJbmRleCA9IHZhbHVlUHJvZmlsZUNvdW50
Kys7CisgICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9ICZtX3ZhbHVlUHJvZmlsZXNbdmFs
dWVQcm9maWxlSW5kZXhdOworICAgICAgICBBU1NFUlQocHJvZmlsZS0+bV9ieXRlY29kZU9mZnNl
dCA9PSAtMSk7CisgICAgICAgIHByb2ZpbGUtPm1fYnl0ZWNvZGVPZmZzZXQgPSBieXRlY29kZU9m
ZnNldDsKKyAgICAgICAgaW5zdHJ1Y3Rpb25zW2J5dGVjb2RlT2Zmc2V0ICsgb3BMZW5ndGggLSAx
XSA9IHByb2ZpbGU7CisgICAgfTsKKwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7ICFpbnN0cnVj
dGlvblJlYWRlci5hdEVuZCgpOyApIHsKICAgICAgICAgY29uc3QgVW5saW5rZWRJbnN0cnVjdGlv
biogcGMgPSBpbnN0cnVjdGlvblJlYWRlci5uZXh0KCk7CiAKQEAgLTIxMDgsMTAgKzIwNzcsNyBA
QCB2b2lkIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxl
KiBvd25lckV4ZWN1dGFibGUsIFVubGluawogICAgICAgICBjYXNlIG9wX2dldF9ieV9pZDoKICAg
ICAgICAgY2FzZSBvcF9nZXRfZnJvbV9hcmd1bWVudHM6CiAgICAgICAgIGNhc2Ugb3BfdG9fbnVt
YmVyOiB7Ci0gICAgICAgICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSAmbV92YWx1ZVByb2Zp
bGVzW3BjW29wTGVuZ3RoIC0gMV0udS5vcGVyYW5kXTsKLSAgICAgICAgICAgIEFTU0VSVChwcm9m
aWxlLT5tX2J5dGVjb2RlT2Zmc2V0ID09IC0xKTsKLSAgICAgICAgICAgIHByb2ZpbGUtPm1fYnl0
ZWNvZGVPZmZzZXQgPSBpOwotICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zW2kgKyBvcExlbmd0aCAt
IDFdID0gcHJvZmlsZTsKKyAgICAgICAgICAgIGxpbmtWYWx1ZVByb2ZpbGUoaSwgb3BMZW5ndGgp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9wdXRfYnlf
dmFsOiB7CkBAIC0yMTQ4LDEwICsyMTE0LDcgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0
aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAg
ICAgICAgY2FzZSBvcF9jYWxsOgogICAgICAgICBjYXNlIG9wX3RhaWxfY2FsbDoKICAgICAgICAg
Y2FzZSBvcF9jYWxsX2V2YWw6IHsKLSAgICAgICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9
ICZtX3ZhbHVlUHJvZmlsZXNbcGNbb3BMZW5ndGggLSAxXS51Lm9wZXJhbmRdOwotICAgICAgICAg
ICAgQVNTRVJUKHByb2ZpbGUtPm1fYnl0ZWNvZGVPZmZzZXQgPT0gLTEpOwotICAgICAgICAgICAg
cHJvZmlsZS0+bV9ieXRlY29kZU9mZnNldCA9IGk7Ci0gICAgICAgICAgICBpbnN0cnVjdGlvbnNb
aSArIG9wTGVuZ3RoIC0gMV0gPSBwcm9maWxlOworICAgICAgICAgICAgbGlua1ZhbHVlUHJvZmls
ZShpLCBvcExlbmd0aCk7CiAgICAgICAgICAgICBpbnQgYXJyYXlQcm9maWxlSW5kZXggPSBwY1tv
cExlbmd0aCAtIDJdLnUub3BlcmFuZDsKICAgICAgICAgICAgIG1fYXJyYXlQcm9maWxlc1thcnJh
eVByb2ZpbGVJbmRleF0gPSBBcnJheVByb2ZpbGUoaSk7CiAgICAgICAgICAgICBpbnN0cnVjdGlv
bnNbaSArIG9wTGVuZ3RoIC0gMl0gPSAmbV9hcnJheVByb2ZpbGVzW2FycmF5UHJvZmlsZUluZGV4
XTsKQEAgLTIxNjAsMTAgKzIxMjMsNyBAQCB2b2lkIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24o
Vk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGluawogICAgICAg
ICB9CiAgICAgICAgIGNhc2Ugb3BfY29uc3RydWN0OiB7CiAgICAgICAgICAgICBpbnN0cnVjdGlv
bnNbaSArIDVdID0gJm1fbGxpbnRDYWxsTGlua0luZm9zW3BjWzVdLnUub3BlcmFuZF07Ci0gICAg
ICAgICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSAmbV92YWx1ZVByb2ZpbGVzW3BjW29wTGVu
Z3RoIC0gMV0udS5vcGVyYW5kXTsKLSAgICAgICAgICAgIEFTU0VSVChwcm9maWxlLT5tX2J5dGVj
b2RlT2Zmc2V0ID09IC0xKTsKLSAgICAgICAgICAgIHByb2ZpbGUtPm1fYnl0ZWNvZGVPZmZzZXQg
PSBpOwotICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zW2kgKyBvcExlbmd0aCAtIDFdID0gcHJvZmls
ZTsKKyAgICAgICAgICAgIGxpbmtWYWx1ZVByb2ZpbGUoaSwgb3BMZW5ndGgpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9nZXRfYXJyYXlfbGVuZ3RoOgpA
QCAtMjE5NCwxMCArMjE1NCw3IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYg
dm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAgICAgIH0K
IAogICAgICAgICBjYXNlIG9wX2dldF9mcm9tX3Njb3BlOiB7Ci0gICAgICAgICAgICBWYWx1ZVBy
b2ZpbGUqIHByb2ZpbGUgPSAmbV92YWx1ZVByb2ZpbGVzW3BjW29wTGVuZ3RoIC0gMV0udS5vcGVy
YW5kXTsKLSAgICAgICAgICAgIEFTU0VSVChwcm9maWxlLT5tX2J5dGVjb2RlT2Zmc2V0ID09IC0x
KTsKLSAgICAgICAgICAgIHByb2ZpbGUtPm1fYnl0ZWNvZGVPZmZzZXQgPSBpOwotICAgICAgICAg
ICAgaW5zdHJ1Y3Rpb25zW2kgKyBvcExlbmd0aCAtIDFdID0gcHJvZmlsZTsKKyAgICAgICAgICAg
IGxpbmtWYWx1ZVByb2ZpbGUoaSwgb3BMZW5ndGgpOwogCiAgICAgICAgICAgICAvLyBnZXRfZnJv
bV9zY29wZSBkc3QsIHNjb3BlLCBpZCwgR2V0UHV0SW5mbywgU3RydWN0dXJlLCBPcGVyYW5kCiAK
QEAgLTIzNTQsMTUgKzIzMTEsNiBAQCB2b2lkIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0m
IHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGluawogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KIAotICAgICAgICBjYXNlIG9wX3NhdmU6IHsKLSAgICAgICAg
ICAgIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9IHBjWzJdLnUuaW5kZXg7Ci0gICAg
ICAgICAgICBpbnQgb2Zmc2V0ID0gcGNbM10udS5vcGVyYW5kOwotICAgICAgICAgICAgaWYgKGxp
dmVDYWxsZWVMb2NhbHNJbmRleCA+PSBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXRzLnNpemUoKSkK
LSAgICAgICAgICAgICAgICBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXRzLnJlc2l6ZShsaXZlQ2Fs
bGVlTG9jYWxzSW5kZXggKyAxKTsKLSAgICAgICAgICAgIG1lcmdlUG9pbnRCeXRlY29kZU9mZnNl
dHNbbGl2ZUNhbGxlZUxvY2Fsc0luZGV4XSA9IGkgKyBvZmZzZXQ7Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgfQotCiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQpAQCAtMjM3NCwyMCArMjMyMiw2IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5pc2hDcmVh
dGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAK
ICAgICBtX2luc3RydWN0aW9ucyA9IFdURk1vdmUoaW5zdHJ1Y3Rpb25zKTsKIAotICAgIC8vIFBl
cmZvcm0gYnl0ZWNvZGUgbGl2ZW5lc3MgYW5hbHlzaXMgdG8gZGV0ZXJtaW5lIHdoaWNoIGxvY2Fs
cyBhcmUgbGl2ZSBhbmQgc2hvdWxkIGJlIHJlc3VtZWQgd2hlbiBleGVjdXRpbmcgb3BfcmVzdW1l
LgotICAgIGlmICh1bmxpbmtlZENvZGVCbG9jay0+cGFyc2VNb2RlKCkgPT0gU291cmNlUGFyc2VN
b2RlOjpHZW5lcmF0b3JCb2R5TW9kZSkgewotICAgICAgICBpZiAoc2l6ZV90IGNvdW50ID0gbWVy
Z2VQb2ludEJ5dGVjb2RlT2Zmc2V0cy5zaXplKCkpIHsKLSAgICAgICAgICAgIGNyZWF0ZVJhcmVE
YXRhSWZOZWNlc3NhcnkoKTsKLSAgICAgICAgICAgIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcyBs
aXZlbmVzcyh0aGlzKTsKLSAgICAgICAgICAgIG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fs
c0F0WWllbGQuZ3Jvdyhjb3VudCk7Ci0gICAgICAgICAgICBzaXplX3QgbGl2ZUNhbGxlZUxvY2Fs
c0luZGV4ID0gMDsKLSAgICAgICAgICAgIGZvciAoc2l6ZV90IGJ5dGVjb2RlT2Zmc2V0IDogbWVy
Z2VQb2ludEJ5dGVjb2RlT2Zmc2V0cykgewotICAgICAgICAgICAgICAgIG1fcmFyZURhdGEtPm1f
bGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGRbbGl2ZUNhbGxlZUxvY2Fsc0luZGV4XSA9IGxpdmVuZXNz
LmdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpOwotICAgICAg
ICAgICAgICAgICsrbGl2ZUNhbGxlZUxvY2Fsc0luZGV4OwotICAgICAgICAgICAgfQotICAgICAg
ICB9Ci0gICAgfQotCiAgICAgLy8gU2V0IG9wdGltaXphdGlvbiB0aHJlc2hvbGRzIG9ubHkgYWZ0
ZXIgbV9pbnN0cnVjdGlvbnMgaXMgaW5pdGlhbGl6ZWQsIHNpbmNlIHRoZXNlCiAgICAgLy8gcmVs
eSBvbiB0aGUgaW5zdHJ1Y3Rpb24gY291bnQgKGFuZCBhcmUgaW4gdGhlb3J5IHBlcm1pdHRlZCB0
byBhbHNvIGluc3BlY3QgdGhlCiAgICAgLy8gaW5zdHJ1Y3Rpb24gc3RyZWFtIHRvIG1vcmUgYWNj
dXJhdGUgYXNzZXNzIHRoZSBjb3N0IG9mIHRpZXItdXApLgpAQCAtMzI0NCwyMSArMzE3OCw3IEBA
IEhhbmRsZXJJbmZvKiBDb2RlQmxvY2s6OmhhbmRsZXJGb3JJbmRleCh1bnNpZ25lZCBpbmRleCwg
UmVxdWlyZWRIYW5kbGVyIHJlcXVpcmVkCiB7CiAgICAgaWYgKCFtX3JhcmVEYXRhKQogICAgICAg
ICByZXR1cm4gMDsKLSAgICAKLSAgICBWZWN0b3I8SGFuZGxlckluZm8+JiBleGNlcHRpb25IYW5k
bGVycyA9IG1fcmFyZURhdGEtPm1fZXhjZXB0aW9uSGFuZGxlcnM7Ci0gICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBleGNlcHRpb25IYW5kbGVycy5zaXplKCk7ICsraSkgewotICAgICAgICBIYW5k
bGVySW5mbyYgaGFuZGxlciA9IGV4Y2VwdGlvbkhhbmRsZXJzW2ldOwotICAgICAgICBpZiAoKHJl
cXVpcmVkSGFuZGxlciA9PSBSZXF1aXJlZEhhbmRsZXI6OkNhdGNoSGFuZGxlcikgJiYgIWhhbmRs
ZXIuaXNDYXRjaEhhbmRsZXIoKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIC8v
IEhhbmRsZXJzIGFyZSBvcmRlcmVkIGlubmVybW9zdCBmaXJzdCwgc28gdGhlIGZpcnN0IGhhbmRs
ZXIgd2UgZW5jb3VudGVyCi0gICAgICAgIC8vIHRoYXQgY29udGFpbnMgdGhlIHNvdXJjZSBhZGRy
ZXNzIGlzIHRoZSBjb3JyZWN0IGhhbmRsZXIgdG8gdXNlLgotICAgICAgICAvLyBUaGlzIGluZGV4
IHVzZWQgaXMgZWl0aGVyIHRoZSBCeXRlY29kZU9mZnNldCBvciBhIENhbGxTaXRlSW5kZXguCi0g
ICAgICAgIGlmIChoYW5kbGVyLnN0YXJ0IDw9IGluZGV4ICYmIGhhbmRsZXIuZW5kID4gaW5kZXgp
Ci0gICAgICAgICAgICByZXR1cm4gJmhhbmRsZXI7Ci0gICAgfQotCi0gICAgcmV0dXJuIDA7Cisg
ICAgcmV0dXJuIEhhbmRsZXJJbmZvOjpoYW5kbGVyRm9ySW5kZXgobV9yYXJlRGF0YS0+bV9leGNl
cHRpb25IYW5kbGVycywgaW5kZXgsIHJlcXVpcmVkSGFuZGxlcik7CiB9CiAKIENhbGxTaXRlSW5k
ZXggQ29kZUJsb2NrOjpuZXdFeGNlcHRpb25IYW5kbGluZ0NhbGxTaXRlSW5kZXgoQ2FsbFNpdGVJ
bmRleCBvcmlnaW5hbENhbGxTaXRlKQpAQCAtMzM1Myw3ICszMjczLDYgQEAgdm9pZCBDb2RlQmxv
Y2s6OnNocmlua1RvRml0KFNocmlua01vZGUgc2hyaW5rTW9kZSkKICAgICAgICAgaWYgKG1fcmFy
ZURhdGEpIHsKICAgICAgICAgICAgIG1fcmFyZURhdGEtPm1fc3dpdGNoSnVtcFRhYmxlcy5zaHJp
bmtUb0ZpdCgpOwogICAgICAgICAgICAgbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFi
bGVzLnNocmlua1RvRml0KCk7Ci0gICAgICAgICAgICBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVM
b2NhbHNBdFlpZWxkLnNocmlua1RvRml0KCk7CiAgICAgICAgIH0KICAgICB9IC8vIGVsc2UgZG9u
J3Qgc2hyaW5rIHRoZXNlLCBiZWNhdXNlIHdlIHdvdWxkIGhhdmUgYWxyZWFkeSBwb2ludGVkIHBv
aW50ZXJzIGludG8gdGhlc2UgdGFibGVzLgogfQpAQCAtNDMzNSwxNCArNDI1NCw5IEBAIFN0cmlu
ZyBDb2RlQmxvY2s6Om5hbWVGb3JSZWdpc3RlcihWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lz
dGVyKQogCiBWYWx1ZVByb2ZpbGUqIENvZGVCbG9jazo6dmFsdWVQcm9maWxlRm9yQnl0ZWNvZGVP
ZmZzZXQoaW50IGJ5dGVjb2RlT2Zmc2V0KQogewotICAgIFZhbHVlUHJvZmlsZSogcmVzdWx0ID0g
YmluYXJ5U2VhcmNoPFZhbHVlUHJvZmlsZSwgaW50PigKLSAgICAgICAgbV92YWx1ZVByb2ZpbGVz
LCBtX3ZhbHVlUHJvZmlsZXMuc2l6ZSgpLCBieXRlY29kZU9mZnNldCwKLSAgICAgICAgZ2V0VmFs
dWVQcm9maWxlQnl0ZWNvZGVPZmZzZXQ8VmFsdWVQcm9maWxlPik7Ci0gICAgQVNTRVJUKHJlc3Vs
dC0+bV9ieXRlY29kZU9mZnNldCAhPSAtMSk7Ci0gICAgQVNTRVJUKGluc3RydWN0aW9ucygpW2J5
dGVjb2RlT2Zmc2V0ICsgb3Bjb2RlTGVuZ3RoKAotICAgICAgICBtX3ZtLT5pbnRlcnByZXRlci0+
Z2V0T3Bjb2RlSUQoCi0gICAgICAgICAgICBpbnN0cnVjdGlvbnMoKVtieXRlY29kZU9mZnNldF0u
dS5vcGNvZGUpKSAtIDFdLnUucHJvZmlsZSA9PSByZXN1bHQpOwotICAgIHJldHVybiByZXN1bHQ7
CisgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBtX3ZtLT5pbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQo
aW5zdHJ1Y3Rpb25zKClbYnl0ZWNvZGVPZmZzZXRdLnUub3Bjb2RlKTsKKyAgICB1bnNpZ25lZCBs
ZW5ndGggPSBvcGNvZGVMZW5ndGgob3Bjb2RlSUQpOworICAgIHJldHVybiBpbnN0cnVjdGlvbnMo
KVtieXRlY29kZU9mZnNldCArIGxlbmd0aCAtIDFdLnUucHJvZmlsZTsKIH0KIAogdm9pZCBDb2Rl
QmxvY2s6OnZhbGlkYXRlKCkKQEAgLTQ2NzEsNCArNDU4NSwxNiBAQCB2b2lkIENvZGVCbG9jazo6
ZHVtcE1hdGhJQ1N0YXRzKCkKICNlbmRpZgogfQogCitCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMm
IENvZGVCbG9jazo6bGl2ZW5lc3NBbmFseXNpc1Nsb3coKQoreworICAgIHN0ZDo6dW5pcXVlX3B0
cjxCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM+IGFuYWx5c2lzID0gc3RkOjptYWtlX3VuaXF1ZTxC
eXRlY29kZUxpdmVuZXNzQW5hbHlzaXM+KHRoaXMpOworICAgIHsKKyAgICAgICAgQ29uY3VycmVu
dEpJVExvY2tlciBsb2NrZXIobV9sb2NrKTsKKyAgICAgICAgaWYgKCFtX2xpdmVuZXNzQW5hbHlz
aXMpCisgICAgICAgICAgICBtX2xpdmVuZXNzQW5hbHlzaXMgPSBXVEZNb3ZlKGFuYWx5c2lzKTsK
KyAgICAgICAgcmV0dXJuICptX2xpdmVuZXNzQW5hbHlzaXM7CisgICAgfQorfQorCisKIH0gLy8g
bmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5o
CmluZGV4IGFiOTI4MDRmNmJhMzliM2I2N2JhNmQ3NzVlNDQ5ZTJmM2RiZjdjMDUuLjllNWQ2MDc4
NzczZjM4Y2JiMjJkYzZhNTBmYWZhN2NlYjBlMWZmYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKQEAgLTMzLDcgKzMzLDYgQEAKICNpbmNsdWRlICJBcnJh
eVByb2ZpbGUuaCIKICNpbmNsdWRlICJCeVZhbEluZm8uaCIKICNpbmNsdWRlICJCeXRlY29kZUNv
bnZlbnRpb25zLmgiCi0jaW5jbHVkZSAiQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmgiCiAjaW5j
bHVkZSAiQ2FsbExpbmtJbmZvLmgiCiAjaW5jbHVkZSAiQ2FsbFJldHVybk9mZnNldFRvQnl0ZWNv
ZGVPZmZzZXQuaCIKICNpbmNsdWRlICJDb2RlQmxvY2tIYXNoLmgiCkBAIC03OSw2ICs3OCw3IEBA
CiAKIG5hbWVzcGFjZSBKU0MgewogCitjbGFzcyBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM7CiBj
bGFzcyBFeGVjU3RhdGU7CiBjbGFzcyBKSVRBZGRHZW5lcmF0b3I7CiBjbGFzcyBKU01vZHVsZUVu
dmlyb25tZW50OwpAQCAtMjI2LDEwICsyMjYsNiBAQCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMg
SlNDZWxsIHsKICAgICAgICAgcmV0dXJuIGluZGV4ID49IG1fbnVtVmFyczsKICAgICB9CiAKLSAg
ICBlbnVtIGNsYXNzIFJlcXVpcmVkSGFuZGxlciB7Ci0gICAgICAgIENhdGNoSGFuZGxlciwKLSAg
ICAgICAgQW55SGFuZGxlcgotICAgIH07CiAgICAgSGFuZGxlckluZm8qIGhhbmRsZXJGb3JCeXRl
Y29kZU9mZnNldCh1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgUmVxdWlyZWRIYW5kbGVyID0gUmVx
dWlyZWRIYW5kbGVyOjpBbnlIYW5kbGVyKTsKICAgICBIYW5kbGVySW5mbyogaGFuZGxlckZvcklu
ZGV4KHVuc2lnbmVkLCBSZXF1aXJlZEhhbmRsZXIgPSBSZXF1aXJlZEhhbmRsZXI6OkFueUhhbmRs
ZXIpOwogICAgIHZvaWQgcmVtb3ZlRXhjZXB0aW9uSGFuZGxlckZvckNhbGxTaXRlKENhbGxTaXRl
SW5kZXgpOwpAQCAtMzA0LDYgKzMwMCw5IEBAIGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBKU0Nl
bGwgewogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SW5zdHJ1Y3Rpb24qPihyZXR1cm5BZGRy
ZXNzKSAtIGluc3RydWN0aW9ucygpLmJlZ2luKCk7CiAgICAgfQogCisgICAgdHlwZWRlZiBKU0M6
Okluc3RydWN0aW9uIEluc3RydWN0aW9uOworICAgIHR5cGVkZWYgUmVmQ291bnRlZEFycmF5PElu
c3RydWN0aW9uPiYgVW5wYWNrZWRJbnN0cnVjdGlvbnM7CisKICAgICB1bnNpZ25lZCBudW1iZXJP
Zkluc3RydWN0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1faW5zdHJ1Y3Rpb25zLnNpemUoKTsgfQog
ICAgIFJlZkNvdW50ZWRBcnJheTxJbnN0cnVjdGlvbj4mIGluc3RydWN0aW9ucygpIHsgcmV0dXJu
IG1faW5zdHJ1Y3Rpb25zOyB9CiAgICAgY29uc3QgUmVmQ291bnRlZEFycmF5PEluc3RydWN0aW9u
PiYgaW5zdHJ1Y3Rpb25zKCkgY29uc3QgeyByZXR1cm4gbV9pbnN0cnVjdGlvbnM7IH0KQEAgLTU0
Niw3ICs1NDUsNyBAQCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICB9CiAK
ICAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4mIGNvbnN0YW50UmVnaXN0ZXIoaW50IGluZGV4KSB7
IHJldHVybiBtX2NvbnN0YW50UmVnaXN0ZXJzW2luZGV4IC0gRmlyc3RDb25zdGFudFJlZ2lzdGVy
SW5kZXhdOyB9Ci0gICAgQUxXQVlTX0lOTElORSBib29sIGlzQ29uc3RhbnRSZWdpc3RlckluZGV4
KGludCBpbmRleCkgY29uc3QgeyByZXR1cm4gaW5kZXggPj0gRmlyc3RDb25zdGFudFJlZ2lzdGVy
SW5kZXg7IH0KKyAgICBzdGF0aWMgQUxXQVlTX0lOTElORSBib29sIGlzQ29uc3RhbnRSZWdpc3Rl
ckluZGV4KGludCBpbmRleCkgeyByZXR1cm4gaW5kZXggPj0gRmlyc3RDb25zdGFudFJlZ2lzdGVy
SW5kZXg7IH0KICAgICBBTFdBWVNfSU5MSU5FIEpTVmFsdWUgZ2V0Q29uc3RhbnQoaW50IGluZGV4
KSBjb25zdCB7IHJldHVybiBtX2NvbnN0YW50UmVnaXN0ZXJzW2luZGV4IC0gRmlyc3RDb25zdGFu
dFJlZ2lzdGVySW5kZXhdLmdldCgpOyB9CiAgICAgQUxXQVlTX0lOTElORSBTb3VyY2VDb2RlUmVw
cmVzZW50YXRpb24gY29uc3RhbnRTb3VyY2VDb2RlUmVwcmVzZW50YXRpb24oaW50IGluZGV4KSBj
b25zdCB7IHJldHVybiBtX2NvbnN0YW50c1NvdXJjZUNvZGVSZXByZXNlbnRhdGlvbltpbmRleCAt
IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4XTsgfQogCkBAIC01OTIsMTQgKzU5MSw3IEBAIGNs
YXNzIENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgICAgICAgICAgaWYgKCEhbV9saXZl
bmVzc0FuYWx5c2lzKQogICAgICAgICAgICAgICAgIHJldHVybiAqbV9saXZlbmVzc0FuYWx5c2lz
OwogICAgICAgICB9Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUxpdmVuZXNzQW5h
bHlzaXM+IGFuYWx5c2lzID0KLSAgICAgICAgICAgIHN0ZDo6bWFrZV91bmlxdWU8Qnl0ZWNvZGVM
aXZlbmVzc0FuYWx5c2lzPih0aGlzKTsKLSAgICAgICAgewotICAgICAgICAgICAgQ29uY3VycmVu
dEpJVExvY2tlciBsb2NrZXIobV9sb2NrKTsKLSAgICAgICAgICAgIGlmICghbV9saXZlbmVzc0Fu
YWx5c2lzKQotICAgICAgICAgICAgICAgIG1fbGl2ZW5lc3NBbmFseXNpcyA9IFdURk1vdmUoYW5h
bHlzaXMpOwotICAgICAgICAgICAgcmV0dXJuICptX2xpdmVuZXNzQW5hbHlzaXM7Ci0gICAgICAg
IH0KKyAgICAgICAgcmV0dXJuIGxpdmVuZXNzQW5hbHlzaXNTbG93KCk7CiAgICAgfQogICAgIAog
ICAgIHZvaWQgdmFsaWRhdGUoKTsKQEAgLTYyMCwxOCArNjEyLDYgQEAgY2xhc3MgQ29kZUJsb2Nr
IDogcHVibGljIEpTQ2VsbCB7CiAgICAgU3RyaW5nSnVtcFRhYmxlJiBhZGRTdHJpbmdTd2l0Y2hK
dW1wVGFibGUoKSB7IGNyZWF0ZVJhcmVEYXRhSWZOZWNlc3NhcnkoKTsgbV9yYXJlRGF0YS0+bV9z
dHJpbmdTd2l0Y2hKdW1wVGFibGVzLmFwcGVuZChTdHJpbmdKdW1wVGFibGUoKSk7IHJldHVybiBt
X3JhcmVEYXRhLT5tX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXMubGFzdCgpOyB9CiAgICAgU3RyaW5n
SnVtcFRhYmxlJiBzdHJpbmdTd2l0Y2hKdW1wVGFibGUoaW50IHRhYmxlSW5kZXgpIHsgUkVMRUFT
RV9BU1NFUlQobV9yYXJlRGF0YSk7IHJldHVybiBtX3JhcmVEYXRhLT5tX3N0cmluZ1N3aXRjaEp1
bXBUYWJsZXNbdGFibGVJbmRleF07IH0KIAotICAgIC8vIExpdmUgY2FsbGVlIHJlZ2lzdGVycyBh
dCB5aWVsZCBwb2ludHMuCi0gICAgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZUNhbGxlZUxvY2Fs
c0F0WWllbGQodW5zaWduZWQgaW5kZXgpIGNvbnN0Ci0gICAgewotICAgICAgICBSRUxFQVNFX0FT
U0VSVChtX3JhcmVEYXRhKTsKLSAgICAgICAgcmV0dXJuIG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxl
ZUxvY2Fsc0F0WWllbGRbaW5kZXhdOwotICAgIH0KLSAgICBGYXN0Qml0VmVjdG9yJiBsaXZlQ2Fs
bGVlTG9jYWxzQXRZaWVsZCh1bnNpZ25lZCBpbmRleCkKLSAgICB7Ci0gICAgICAgIFJFTEVBU0Vf
QVNTRVJUKG1fcmFyZURhdGEpOwotICAgICAgICByZXR1cm4gbV9yYXJlRGF0YS0+bV9saXZlQ2Fs
bGVlTG9jYWxzQXRZaWVsZFtpbmRleF07Ci0gICAgfQotCiAgICAgRXZhbENvZGVDYWNoZSYgZXZh
bENvZGVDYWNoZSgpIHsgY3JlYXRlUmFyZURhdGFJZk5lY2Vzc2FyeSgpOyByZXR1cm4gbV9yYXJl
RGF0YS0+bV9ldmFsQ29kZUNhY2hlOyB9CiAKICAgICBlbnVtIFNocmlua01vZGUgewpAQCAtODg2
LDggKzg2Niw2IEBAIGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgICAgICBW
ZWN0b3I8U2ltcGxlSnVtcFRhYmxlPiBtX3N3aXRjaEp1bXBUYWJsZXM7CiAgICAgICAgIFZlY3Rv
cjxTdHJpbmdKdW1wVGFibGU+IG1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlczsKIAotICAgICAgICBW
ZWN0b3I8RmFzdEJpdFZlY3Rvcj4gbV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZDsKLQogICAgICAg
ICBFdmFsQ29kZUNhY2hlIG1fZXZhbENvZGVDYWNoZTsKICAgICB9OwogCkBAIC05MjIsNiArOTAw
LDggQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAKIHByaXZhdGU6CiAgICAg
ZnJpZW5kIGNsYXNzIENvZGVCbG9ja1NldDsKKworICAgIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNp
cyYgbGl2ZW5lc3NBbmFseXNpc1Nsb3coKTsKICAgICAKICAgICBDb2RlQmxvY2sqIHNwZWNpYWxP
U1JFbnRyeUJsb2NrT3JOdWxsKCk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvSGFuZGxlckluZm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9IYW5kbGVySW5mby5oCmluZGV4IGFjZGRhMDhlZDE0Y2JmOWYwOTcxMjc1MDQwNWE0MTc0
MWY3NmEyMTMuLjdiMTA4YWNlOTM3MjhhOGQ1ZGY4ZWIxNzNmYzBiMGE2MWJhZWQ2M2UgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9IYW5kbGVySW5mby5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9IYW5kbGVySW5mby5oCkBAIC0yNyw2ICsy
Nyw3IEBACiAjZGVmaW5lIEhhbmRsZXJJbmZvX2gKIAogI2luY2x1ZGUgIkNvZGVMb2NhdGlvbi5o
IgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTM3LDYg
KzM4LDExIEBAIGVudW0gY2xhc3MgSGFuZGxlclR5cGUgewogICAgIFN5bnRoZXNpemVkRmluYWxs
eSA9IDMKIH07CiAKK2VudW0gY2xhc3MgUmVxdWlyZWRIYW5kbGVyIHsKKyAgICBDYXRjaEhhbmRs
ZXIsCisgICAgQW55SGFuZGxlcgorfTsKKwogc3RydWN0IEhhbmRsZXJJbmZvQmFzZSB7CiAgICAg
SGFuZGxlclR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEhhbmRsZXJUeXBl
Pih0eXBlQml0cyk7IH0KICAgICB2b2lkIHNldFR5cGUoSGFuZGxlclR5cGUgdHlwZSkgeyB0eXBl
Qml0cyA9IHN0YXRpY19jYXN0PHVpbnQzMl90Pih0eXBlKTsgfQpAQCAtNTgsNiArNjQsMjMgQEAg
c3RydWN0IEhhbmRsZXJJbmZvQmFzZSB7CiAKICAgICBib29sIGlzQ2F0Y2hIYW5kbGVyKCkgY29u
c3QgeyByZXR1cm4gdHlwZSgpID09IEhhbmRsZXJUeXBlOjpDYXRjaDsgfQogCisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgSGFuZGxlcj4KKyAgICBzdGF0aWMgSGFuZGxlciogaGFuZGxlckZvckluZGV4
KFZlY3RvcjxIYW5kbGVyPiYgZXhlcHRpb25IYW5kbGVycywgdW5zaWduZWQgaW5kZXgsIFJlcXVp
cmVkSGFuZGxlciByZXF1aXJlZEhhbmRsZXIpCisgICAgeworICAgICAgICBmb3IgKEhhbmRsZXIm
IGhhbmRsZXIgOiBleGVwdGlvbkhhbmRsZXJzKSB7CisgICAgICAgICAgICBpZiAoKHJlcXVpcmVk
SGFuZGxlciA9PSBSZXF1aXJlZEhhbmRsZXI6OkNhdGNoSGFuZGxlcikgJiYgIWhhbmRsZXIuaXND
YXRjaEhhbmRsZXIoKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAg
Ly8gSGFuZGxlcnMgYXJlIG9yZGVyZWQgaW5uZXJtb3N0IGZpcnN0LCBzbyB0aGUgZmlyc3QgaGFu
ZGxlciB3ZSBlbmNvdW50ZXIKKyAgICAgICAgICAgIC8vIHRoYXQgY29udGFpbnMgdGhlIHNvdXJj
ZSBhZGRyZXNzIGlzIHRoZSBjb3JyZWN0IGhhbmRsZXIgdG8gdXNlLgorICAgICAgICAgICAgLy8g
VGhpcyBpbmRleCB1c2VkIGlzIGVpdGhlciB0aGUgQnl0ZWNvZGVPZmZzZXQgb3IgYSBDYWxsU2l0
ZUluZGV4LgorICAgICAgICAgICAgaWYgKGhhbmRsZXIuc3RhcnQgPD0gaW5kZXggJiYgaGFuZGxl
ci5lbmQgPiBpbmRleCkKKyAgICAgICAgICAgICAgICByZXR1cm4gJmhhbmRsZXI7CisgICAgICAg
IH0KKworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKICAgICB1aW50MzJfdCBzdGFy
dDsKICAgICB1aW50MzJfdCBlbmQ7CiAgICAgdWludDMyX3QgdGFyZ2V0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCmluZGV4IGVlNjY3Yzg0ZmIyNjUyZjI1OWUzMjEyNGQx
ZTlhN2E3MWRkZTAxZTAuLjEwY2IyZGY4MWUzMjFiZGM1ZjcwYzI0NTQxNDRhOTNlNmM0YzYyMWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgKQEAgLTEyNiw2ICsxMjYs
MzIgQEAgaW5saW5lIHNpemVfdCBvcGNvZGVMZW5ndGgoT3Bjb2RlSUQgb3Bjb2RlKQogICAgIHJl
dHVybiAwOwogfQogCitpbmxpbmUgYm9vbCBpc0JyYW5jaChPcGNvZGVJRCBvcGNvZGVJRCkKK3sK
KyAgICBzd2l0Y2ggKG9wY29kZUlEKSB7CisgICAgY2FzZSBvcF9qbXA6CisgICAgY2FzZSBvcF9q
dHJ1ZToKKyAgICBjYXNlIG9wX2pmYWxzZToKKyAgICBjYXNlIG9wX2plcV9udWxsOgorICAgIGNh
c2Ugb3Bfam5lcV9udWxsOgorICAgIGNhc2Ugb3Bfam5lcV9wdHI6CisgICAgY2FzZSBvcF9qbGVz
czoKKyAgICBjYXNlIG9wX2psZXNzZXE6CisgICAgY2FzZSBvcF9qZ3JlYXRlcjoKKyAgICBjYXNl
IG9wX2pncmVhdGVyZXE6CisgICAgY2FzZSBvcF9qbmxlc3M6CisgICAgY2FzZSBvcF9qbmxlc3Nl
cToKKyAgICBjYXNlIG9wX2puZ3JlYXRlcjoKKyAgICBjYXNlIG9wX2puZ3JlYXRlcmVxOgorICAg
IGNhc2Ugb3Bfc3dpdGNoX2ltbToKKyAgICBjYXNlIG9wX3N3aXRjaF9jaGFyOgorICAgIGNhc2Ug
b3Bfc3dpdGNoX3N0cmluZzoKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgZGVmYXVsdDoKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKIG5h
bWVzcGFjZSBXVEYgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1ByZWNpc2VKdW1wVGFyZ2V0cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
UHJlY2lzZUp1bXBUYXJnZXRzLmNwcAppbmRleCBlMmNiMDAwNDgzNzk0YmE5MmQ1MTBkY2Y1ZmE5
OTQ4ODVhMjNkYzNkLi5iZDg0MGY4ZWE4MTM1OTVkNjcyYzk4YTY2NzAxYzM4ODdjNWQwODQ0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJn
ZXRzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBU
YXJnZXRzLmNwcApAQCAtMjYsMTQgKzI2LDE1IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiUHJlY2lzZUp1bXBUYXJnZXRzLmgiCiAKKyNpbmNsdWRlICJJbnRlcnByZXRlcklubGlu
ZXMuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCi10ZW1w
bGF0ZSA8c2l6ZV90IHZlY3RvclNpemU+Ci1zdGF0aWMgdm9pZCBnZXRKdW1wVGFyZ2V0c0ZvckJ5
dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBJbnRlcnByZXRlciogaW50ZXJwcmV0
ZXIsIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgYnl0ZWNvZGVPZmZz
ZXQsIFZlY3Rvcjx1bnNpZ25lZCwgdmVjdG9yU2l6ZT4mIG91dCkKK3RlbXBsYXRlIDxzaXplX3Qg
dmVjdG9yU2l6ZSwgdHlwZW5hbWUgQmxvY2ssIHR5cGVuYW1lIEluc3RydWN0aW9uPgorc3RhdGlj
IHZvaWQgZ2V0SnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChCbG9jayogY29kZUJsb2NrLCBJ
bnRlcnByZXRlciogaW50ZXJwcmV0ZXIsIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwg
dW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIFZlY3Rvcjx1bnNpZ25lZCwgdmVjdG9yU2l6ZT4mIG91
dCkKIHsKLSAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGludGVycHJldGVyLT5nZXRPcGNvZGVJRChp
bnN0cnVjdGlvbnNCZWdpbltieXRlY29kZU9mZnNldF0udS5vcGNvZGUpOworICAgIE9wY29kZUlE
IG9wY29kZUlEID0gaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGluc3RydWN0aW9uc0JlZ2luW2J5
dGVjb2RlT2Zmc2V0XSk7CiAgICAgSW5zdHJ1Y3Rpb24qIGN1cnJlbnQgPSBpbnN0cnVjdGlvbnNC
ZWdpbiArIGJ5dGVjb2RlT2Zmc2V0OwogICAgIHN3aXRjaCAob3Bjb2RlSUQpIHsKICAgICBjYXNl
IG9wX2ptcDoKQEAgLTU0LDIxICs1NSwyMCBAQCBzdGF0aWMgdm9pZCBnZXRKdW1wVGFyZ2V0c0Zv
ckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBJbnRlcnByZXRlciogaQogICAg
IGNhc2Ugb3Bfam5sZXNzZXE6CiAgICAgY2FzZSBvcF9qbmdyZWF0ZXI6CiAgICAgY2FzZSBvcF9q
bmdyZWF0ZXJlcToKLSAgICBjYXNlIG9wX3NhdmU6IC8vIFRoZSBqdW1wIG9mIG9wX3NhdmUgaXMg
cHVyZWx5IGZvciBjYWxjdWxhdGluZyBsaXZlbmVzcy4KICAgICAgICAgb3V0LmFwcGVuZChieXRl
Y29kZU9mZnNldCArIGN1cnJlbnRbM10udS5vcGVyYW5kKTsKICAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBvcF9zd2l0Y2hfaW1tOgogICAgIGNhc2Ugb3Bfc3dpdGNoX2NoYXI6IHsKLSAgICAgICAg
U2ltcGxlSnVtcFRhYmxlJiB0YWJsZSA9IGNvZGVCbG9jay0+c3dpdGNoSnVtcFRhYmxlKGN1cnJl
bnRbMV0udS5vcGVyYW5kKTsKKyAgICAgICAgYXV0byYgdGFibGUgPSBjb2RlQmxvY2stPnN3aXRj
aEp1bXBUYWJsZShjdXJyZW50WzFdLnUub3BlcmFuZCk7CiAgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IHRhYmxlLmJyYW5jaE9mZnNldHMuc2l6ZSgpOyBpLS07KQogICAgICAgICAgICAgb3V0LmFw
cGVuZChieXRlY29kZU9mZnNldCArIHRhYmxlLmJyYW5jaE9mZnNldHNbaV0pOwogICAgICAgICBv
dXQuYXBwZW5kKGJ5dGVjb2RlT2Zmc2V0ICsgY3VycmVudFsyXS51Lm9wZXJhbmQpOwogICAgICAg
ICBicmVhazsKICAgICB9CiAgICAgY2FzZSBvcF9zd2l0Y2hfc3RyaW5nOiB7Ci0gICAgICAgIFN0
cmluZ0p1bXBUYWJsZSYgdGFibGUgPSBjb2RlQmxvY2stPnN0cmluZ1N3aXRjaEp1bXBUYWJsZShj
dXJyZW50WzFdLnUub3BlcmFuZCk7Ci0gICAgICAgIFN0cmluZ0p1bXBUYWJsZTo6U3RyaW5nT2Zm
c2V0VGFibGU6Oml0ZXJhdG9yIGl0ZXIgPSB0YWJsZS5vZmZzZXRUYWJsZS5iZWdpbigpOwotICAg
ICAgICBTdHJpbmdKdW1wVGFibGU6OlN0cmluZ09mZnNldFRhYmxlOjppdGVyYXRvciBlbmQgPSB0
YWJsZS5vZmZzZXRUYWJsZS5lbmQoKTsKKyAgICAgICAgYXV0byYgdGFibGUgPSBjb2RlQmxvY2st
PnN0cmluZ1N3aXRjaEp1bXBUYWJsZShjdXJyZW50WzFdLnUub3BlcmFuZCk7CisgICAgICAgIGF1
dG8gaXRlciA9IHRhYmxlLm9mZnNldFRhYmxlLmJlZ2luKCk7CisgICAgICAgIGF1dG8gZW5kID0g
dGFibGUub2Zmc2V0VGFibGUuZW5kKCk7CiAgICAgICAgIGZvciAoOyBpdGVyICE9IGVuZDsgKytp
dGVyKQogICAgICAgICAgICAgb3V0LmFwcGVuZChieXRlY29kZU9mZnNldCArIGl0ZXItPnZhbHVl
LmJyYW5jaE9mZnNldCk7CiAgICAgICAgIG91dC5hcHBlbmQoYnl0ZWNvZGVPZmZzZXQgKyBjdXJy
ZW50WzJdLnUub3BlcmFuZCk7CkBAIC04MiwxMyArODIsMTkgQEAgc3RhdGljIHZvaWQgZ2V0SnVt
cFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgSW50ZXJwcmV0
ZXIqIGkKICAgICB9CiB9CiAKLXZvaWQgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgVmVjdG9yPHVuc2lnbmVkLCAzMj4mIG91dCkKK2VudW0gY2xhc3MgQ29t
cHV0ZVByZWNpc2VKdW1wVGFyZ2V0c01vZGUgeworICAgIEZvbGxvd0NvZGVCbG9ja0NsYWltLAor
ICAgIEZvcmNlQ29tcHV0ZSwKK307CisKK3RlbXBsYXRlPENvbXB1dGVQcmVjaXNlSnVtcFRhcmdl
dHNNb2RlIE1vZGUsIHR5cGVuYW1lIEJsb2NrLCB0eXBlbmFtZSBJbnN0cnVjdGlvbiwgc2l6ZV90
IHZlY3RvclNpemU+Cit2b2lkIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHNJbnRlcm5hbChCbG9j
ayogY29kZUJsb2NrLCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGlu
c3RydWN0aW9uQ291bnQsIFZlY3Rvcjx1bnNpZ25lZCwgdmVjdG9yU2l6ZT4mIG91dCkKIHsKICAg
ICBBU1NFUlQob3V0LmlzRW1wdHkoKSk7CiAgICAgCiAgICAgLy8gV2Ugd2lsbCBkZXJpdmUgYSBz
dXBlcnNldCBvZiB0aGUganVtcCB0YXJnZXRzIHRoYXQgdGhlIGNvZGUgYmxvY2sgdGhpbmtzIGl0
IGhhcy4KICAgICAvLyBTbywgaWYgdGhlIGNvZGUgYmxvY2sgY2xhaW1zIHRoZXJlIGFyZSBub25l
LCB0aGVuIHdlIGFyZSBkb25lLgotICAgIGlmICghY29kZUJsb2NrLT5udW1iZXJPZkp1bXBUYXJn
ZXRzKCkpCisgICAgaWYgKE1vZGUgPT0gQ29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0c01vZGU6OkZv
bGxvd0NvZGVCbG9ja0NsYWltICYmICFjb2RlQmxvY2stPm51bWJlck9mSnVtcFRhcmdldHMoKSkK
ICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIGZvciAodW5zaWduZWQgaSA9IGNvZGVCbG9jay0+
bnVtYmVyT2ZFeGNlcHRpb25IYW5kbGVycygpOyBpLS07KSB7CkBAIC05OCwxMCArMTA0LDggQEAg
dm9pZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKENvZGVCbG9jayogY29kZUJsb2NrLCBWZWN0
b3I8dW5zaWduZWQsIDMyPiYgb3V0KQogICAgIH0KIAogICAgIEludGVycHJldGVyKiBpbnRlcnBy
ZXRlciA9IGNvZGVCbG9jay0+dm0oKS0+aW50ZXJwcmV0ZXI7Ci0gICAgSW5zdHJ1Y3Rpb24qIGlu
c3RydWN0aW9uc0JlZ2luID0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpOwotICAg
IHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQgPSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLnNp
emUoKTsKICAgICBmb3IgKHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0ID0gMDsgYnl0ZWNvZGVPZmZz
ZXQgPCBpbnN0cnVjdGlvbkNvdW50OykgewotICAgICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGlu
dGVycHJldGVyLT5nZXRPcGNvZGVJRChpbnN0cnVjdGlvbnNCZWdpbltieXRlY29kZU9mZnNldF0u
dS5vcGNvZGUpOworICAgICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGludGVycHJldGVyLT5nZXRP
cGNvZGVJRChpbnN0cnVjdGlvbnNCZWdpbltieXRlY29kZU9mZnNldF0pOwogICAgICAgICBnZXRK
dW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9jaywgaW50ZXJwcmV0ZXIsIGluc3Ry
dWN0aW9uc0JlZ2luLCBieXRlY29kZU9mZnNldCwgb3V0KTsKICAgICAgICAgYnl0ZWNvZGVPZmZz
ZXQgKz0gb3Bjb2RlTGVuZ3Roc1tvcGNvZGVJRF07CiAgICAgfQpAQCAtMTIzLDExICsxMjcsMzQg
QEAgdm9pZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKENvZGVCbG9jayogY29kZUJsb2NrLCBW
ZWN0b3I8dW5zaWduZWQsIDMyPiYgb3V0KQogICAgIG91dC5zaHJpbmtUb0ZpdCgpOwogfQogCi12
b2lkIGZpbmRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2Nr
LCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgVmVjdG9yPHVuc2lnbmVkLCAxPiYgb3V0KQordm9p
ZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKENvZGVCbG9jayogY29kZUJsb2NrLCBWZWN0b3I8
dW5zaWduZWQsIDMyPiYgb3V0KQogewotICAgIEludGVycHJldGVyKiBpbnRlcnByZXRlciA9IGNv
ZGVCbG9jay0+dm0oKS0+aW50ZXJwcmV0ZXI7Ci0gICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9u
c0JlZ2luID0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpOwotICAgIGdldEp1bXBU
YXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoY29kZUJsb2NrLCBpbnRlcnByZXRlciwgaW5zdHJ1Y3Rp
b25zQmVnaW4sIGJ5dGVjb2RlT2Zmc2V0LCBvdXQpOworICAgIGNvbXB1dGVQcmVjaXNlSnVtcFRh
cmdldHNJbnRlcm5hbDxDb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzTW9kZTo6Rm9sbG93Q29kZUJs
b2NrQ2xhaW0+KGNvZGVCbG9jaywgY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpLCBj
b2RlQmxvY2stPmluc3RydWN0aW9ucygpLnNpemUoKSwgb3V0KTsKK30KKwordm9pZCBjb21wdXRl
UHJlY2lzZUp1bXBUYXJnZXRzKENvZGVCbG9jayogY29kZUJsb2NrLCBJbnN0cnVjdGlvbiogaW5z
dHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQsIFZlY3Rvcjx1bnNpZ25l
ZCwgMzI+JiBvdXQpCit7CisgICAgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0c0ludGVybmFsPENv
bXB1dGVQcmVjaXNlSnVtcFRhcmdldHNNb2RlOjpGb2xsb3dDb2RlQmxvY2tDbGFpbT4oY29kZUJs
b2NrLCBpbnN0cnVjdGlvbnNCZWdpbiwgaW5zdHJ1Y3Rpb25Db3VudCwgb3V0KTsKK30KKwordm9p
ZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKFVubGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IFVubGlua2VkSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBpbnN0cnVj
dGlvbkNvdW50LCBWZWN0b3I8dW5zaWduZWQsIDMyPiYgb3V0KQoreworICAgIGNvbXB1dGVQcmVj
aXNlSnVtcFRhcmdldHNJbnRlcm5hbDxDb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzTW9kZTo6Rm9s
bG93Q29kZUJsb2NrQ2xhaW0+KGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb25zQmVnaW4sIGluc3RydWN0
aW9uQ291bnQsIG91dCk7Cit9CisKK3ZvaWQgcmVjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKFVu
bGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFVubGlua2VkSW5zdHJ1Y3Rpb24qIGluc3RydWN0
aW9uc0JlZ2luLCB1bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50LCBWZWN0b3I8dW5zaWduZWQ+JiBv
dXQpCit7CisgICAgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0c0ludGVybmFsPENvbXB1dGVQcmVj
aXNlSnVtcFRhcmdldHNNb2RlOjpGb3JjZUNvbXB1dGU+KGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb25z
QmVnaW4sIGluc3RydWN0aW9uQ291bnQsIG91dCk7Cit9CisKK3ZvaWQgZmluZEp1bXBUYXJnZXRz
Rm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEluc3RydWN0aW9uKiBpbnN0
cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIFZlY3Rvcjx1bnNpZ25lZCwg
MT4mIG91dCkKK3sKKyAgICBnZXRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9j
aywgY29kZUJsb2NrLT52bSgpLT5pbnRlcnByZXRlciwgaW5zdHJ1Y3Rpb25zQmVnaW4sIGJ5dGVj
b2RlT2Zmc2V0LCBvdXQpOworfQorCit2b2lkIGZpbmRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zm
c2V0KFVubGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFVubGlua2VkSW5zdHJ1Y3Rpb24qIGlu
c3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgVmVjdG9yPHVuc2lnbmVk
LCAxPiYgb3V0KQoreworICAgIGdldEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoY29kZUJs
b2NrLCBjb2RlQmxvY2stPnZtKCktPmludGVycHJldGVyLCBpbnN0cnVjdGlvbnNCZWdpbiwgYnl0
ZWNvZGVPZmZzZXQsIG91dCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5oCmluZGV4IDg1
MjQxM2Q3N2I3OTg5ODRiMjdjZWYwZWQ2MmJjOTRjNjg5ZTIxMmMuLmRiOWJkMzgzYjhhYzQ1NTdk
MzI2NzE3YjcyZDRiMGY1MGIxZDE4MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmgKQEAgLTMwLDEwICszMCwxOCBAQAogCiBu
YW1lc3BhY2UgSlNDIHsKIAorY2xhc3MgVW5saW5rZWRDb2RlQmxvY2s7CitzdHJ1Y3QgVW5saW5r
ZWRJbnN0cnVjdGlvbjsKKwogLy8gUmV0dXJuIGEgc29ydGVkIGxpc3Qgb2YgYnl0ZWNvZGUgaW5k
ZXggdGhhdCBhcmUgdGhlIGRlc3RpbmF0aW9uIG9mIGEganVtcC4KIHZvaWQgY29tcHV0ZVByZWNp
c2VKdW1wVGFyZ2V0cyhDb2RlQmxvY2sqLCBWZWN0b3I8dW5zaWduZWQsIDMyPiYgb3V0KTsKK3Zv
aWQgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhDb2RlQmxvY2sqLCBJbnN0cnVjdGlvbiogaW5z
dHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQsIFZlY3Rvcjx1bnNpZ25l
ZCwgMzI+JiBvdXQpOwordm9pZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKFVubGlua2VkQ29k
ZUJsb2NrKiwgVW5saW5rZWRJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVk
IGluc3RydWN0aW9uQ291bnQsIFZlY3Rvcjx1bnNpZ25lZCwgMzI+JiBvdXQpOworCit2b2lkIHJl
Y29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhVbmxpbmtlZENvZGVCbG9jayosIFVubGlua2VkSW5z
dHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50LCBW
ZWN0b3I8dW5zaWduZWQ+JiBvdXQpOwogCi12b2lkIGZpbmRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2Rl
T2Zmc2V0KENvZGVCbG9jayosIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBWZWN0b3I8dW5zaWdu
ZWQsIDE+JiBvdXQpOwordm9pZCBmaW5kSnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChDb2Rl
QmxvY2sqLCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGJ5dGVjb2Rl
T2Zmc2V0LCBWZWN0b3I8dW5zaWduZWQsIDE+JiBvdXQpOwordm9pZCBmaW5kSnVtcFRhcmdldHNG
b3JCeXRlY29kZU9mZnNldChVbmxpbmtlZENvZGVCbG9jayosIFVubGlua2VkSW5zdHJ1Y3Rpb24q
IGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgVmVjdG9yPHVuc2ln
bmVkLCAxPiYgb3V0KTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCmluZGV4IDAwNWRm
ZjhiZmMyYzUwNDhjNTAzY2U2MDI5YmJkMjM4MzA2YTE5NTQuLmE1ZWNmNTFlMWU3N2ViMjk5YWFi
MTZhMDkwOWE0NjE2MjM1ZDA1NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1
ZGUgIlVubGlua2VkQ29kZUJsb2NrLmgiCiAKICNpbmNsdWRlICJCeXRlY29kZUdlbmVyYXRvci5o
IgorI2luY2x1ZGUgIkJ5dGVjb2RlUmV3cml0ZXIuaCIKICNpbmNsdWRlICJDbGFzc0luZm8uaCIK
ICNpbmNsdWRlICJDb2RlQ2FjaGUuaCIKICNpbmNsdWRlICJFeGVjdXRhYmxlLmgiCkBAIC0zNiw2
ICszNyw3IEBACiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgi
CiAjaW5jbHVkZSAiUGFyc2VyLmgiCisjaW5jbHVkZSAiUHJlY2lzZUp1bXBUYXJnZXRzLmgiCiAj
aW5jbHVkZSAiU291cmNlUHJvdmlkZXIuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIKICNpbmNs
dWRlICJTeW1ib2xUYWJsZS5oIgpAQCAtMzY3LDUgKzM2OSwxMTEgQEAgY29uc3QgVW5saW5rZWRJ
bnN0cnVjdGlvblN0cmVhbSYgVW5saW5rZWRDb2RlQmxvY2s6Omluc3RydWN0aW9ucygpIGNvbnN0
CiAgICAgcmV0dXJuICptX3VubGlua2VkSW5zdHJ1Y3Rpb25zOwogfQogCitVbmxpbmtlZEhhbmRs
ZXJJbmZvKiBVbmxpbmtlZENvZGVCbG9jazo6aGFuZGxlckZvckJ5dGVjb2RlT2Zmc2V0KHVuc2ln
bmVkIGJ5dGVjb2RlT2Zmc2V0LCBSZXF1aXJlZEhhbmRsZXIgcmVxdWlyZWRIYW5kbGVyKQorewor
ICAgIHJldHVybiBoYW5kbGVyRm9ySW5kZXgoYnl0ZWNvZGVPZmZzZXQsIHJlcXVpcmVkSGFuZGxl
cik7Cit9CisKK1VubGlua2VkSGFuZGxlckluZm8qIFVubGlua2VkQ29kZUJsb2NrOjpoYW5kbGVy
Rm9ySW5kZXgodW5zaWduZWQgaW5kZXgsIFJlcXVpcmVkSGFuZGxlciByZXF1aXJlZEhhbmRsZXIp
Cit7CisgICAgaWYgKCFtX3JhcmVEYXRhKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBy
ZXR1cm4gVW5saW5rZWRIYW5kbGVySW5mbzo6aGFuZGxlckZvckluZGV4KG1fcmFyZURhdGEtPm1f
ZXhjZXB0aW9uSGFuZGxlcnMsIGluZGV4LCByZXF1aXJlZEhhbmRsZXIpOworfQorCit2b2lkIFVu
bGlua2VkQ29kZUJsb2NrOjphcHBseU1vZGlmaWNhdGlvbihCeXRlY29kZVJld3JpdGVyJiBpbnNl
cnRpb25TZXQpCit7CisgICAgLy8gQmVmb3JlIGFwcGx5aW5nIHRoZSBjaGFuZ2VzLCB3ZSBhZGp1
c3QgdGhlIGp1bXBzIGJhc2VkIG9uIHRoZSBvcmlnaW5hbCBieXRlY29kZSBvZmZzZXQsIHRoZSBv
ZmZzZXQgdG8gdGhlIGp1bXAgdGFyZ2V0LCBhbmQKKyAgICAvLyB0aGUgaW5zZXJ0aW9uIGluZm9y
bWF0aW9uLgorCisgICAgQnl0ZWNvZGVHcmFwaDxVbmxpbmtlZENvZGVCbG9jaz4mIGdyYXBoID0g
aW5zZXJ0aW9uU2V0LmdyYXBoKCk7CisgICAgVW5saW5rZWRJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rp
b25zQmVnaW4gPSBncmFwaC5pbnN0cnVjdGlvbnMoKS5iZWdpbigpOworICAgIGZvciAoaW50IGJ5
dGVjb2RlT2Zmc2V0ID0gMCwgaW5zdHJ1Y3Rpb25Db3VudCA9IGdyYXBoLmluc3RydWN0aW9ucygp
LnNpemUoKTsgYnl0ZWNvZGVPZmZzZXQgPCBpbnN0cnVjdGlvbkNvdW50OykgeworICAgICAgICBV
bmxpbmtlZEluc3RydWN0aW9uKiBjdXJyZW50ID0gaW5zdHJ1Y3Rpb25zQmVnaW4gKyBieXRlY29k
ZU9mZnNldDsKKyAgICAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBjdXJyZW50WzBdLnUub3Bjb2Rl
OworCisgICAgICAgIHN3aXRjaCAob3Bjb2RlSUQpIHsKKyAgICAgICAgY2FzZSBvcF9qbXA6Cisg
ICAgICAgICAgICBjdXJyZW50WzFdLnUub3BlcmFuZCA9IGluc2VydGlvblNldC5hZGp1c3RPZmZz
ZXQoYnl0ZWNvZGVPZmZzZXQsIGJ5dGVjb2RlT2Zmc2V0ICsgY3VycmVudFsxXS51Lm9wZXJhbmQp
OworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBvcF9qdHJ1ZToKKyAgICAgICAg
Y2FzZSBvcF9qZmFsc2U6CisgICAgICAgIGNhc2Ugb3BfamVxX251bGw6CisgICAgICAgIGNhc2Ug
b3Bfam5lcV9udWxsOgorICAgICAgICAgICAgY3VycmVudFsyXS51Lm9wZXJhbmQgPSBpbnNlcnRp
b25TZXQuYWRqdXN0T2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0LCBieXRlY29kZU9mZnNldCArIGN1cnJl
bnRbMl0udS5vcGVyYW5kKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2Ugb3Bf
am5lcV9wdHI6CisgICAgICAgIGNhc2Ugb3Bfamxlc3M6CisgICAgICAgIGNhc2Ugb3Bfamxlc3Nl
cToKKyAgICAgICAgY2FzZSBvcF9qZ3JlYXRlcjoKKyAgICAgICAgY2FzZSBvcF9qZ3JlYXRlcmVx
OgorICAgICAgICBjYXNlIG9wX2pubGVzczoKKyAgICAgICAgY2FzZSBvcF9qbmxlc3NlcToKKyAg
ICAgICAgY2FzZSBvcF9qbmdyZWF0ZXI6CisgICAgICAgIGNhc2Ugb3Bfam5ncmVhdGVyZXE6Cisg
ICAgICAgICAgICBjdXJyZW50WzNdLnUub3BlcmFuZCA9IGluc2VydGlvblNldC5hZGp1c3RPZmZz
ZXQoYnl0ZWNvZGVPZmZzZXQsIGJ5dGVjb2RlT2Zmc2V0ICsgY3VycmVudFszXS51Lm9wZXJhbmQp
OworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBvcF9zd2l0Y2hfaW1tOgorICAg
ICAgICBjYXNlIG9wX3N3aXRjaF9jaGFyOiB7CisgICAgICAgICAgICBhdXRvJiB0YWJsZSA9IHN3
aXRjaEp1bXBUYWJsZShjdXJyZW50WzFdLnUub3BlcmFuZCk7CisgICAgICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSB0YWJsZS5icmFuY2hPZmZzZXRzLnNpemUoKTsgaS0tOykKKyAgICAgICAgICAg
ICAgICB0YWJsZS5icmFuY2hPZmZzZXRzW2ldID0gaW5zZXJ0aW9uU2V0LmFkanVzdE9mZnNldChi
eXRlY29kZU9mZnNldCwgYnl0ZWNvZGVPZmZzZXQgKyB0YWJsZS5icmFuY2hPZmZzZXRzW2ldKTsK
KyAgICAgICAgICAgIGN1cnJlbnRbMl0udS5vcGVyYW5kID0gaW5zZXJ0aW9uU2V0LmFkanVzdE9m
ZnNldChieXRlY29kZU9mZnNldCwgYnl0ZWNvZGVPZmZzZXQgKyBjdXJyZW50WzJdLnUub3BlcmFu
ZCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2Ugb3Bfc3dp
dGNoX3N0cmluZzogeworICAgICAgICAgICAgYXV0byYgdGFibGUgPSBzdHJpbmdTd2l0Y2hKdW1w
VGFibGUoY3VycmVudFsxXS51Lm9wZXJhbmQpOworICAgICAgICAgICAgYXV0byBpdGVyID0gdGFi
bGUub2Zmc2V0VGFibGUuYmVnaW4oKTsKKyAgICAgICAgICAgIGF1dG8gZW5kID0gdGFibGUub2Zm
c2V0VGFibGUuZW5kKCk7CisgICAgICAgICAgICBmb3IgKDsgaXRlciAhPSBlbmQ7ICsraXRlcikK
KyAgICAgICAgICAgICAgICBpdGVyLT52YWx1ZS5icmFuY2hPZmZzZXQgPSBpbnNlcnRpb25TZXQu
YWRqdXN0T2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0LCBieXRlY29kZU9mZnNldCArIGl0ZXItPnZhbHVl
LmJyYW5jaE9mZnNldCk7CisgICAgICAgICAgICBjdXJyZW50WzJdLnUub3BlcmFuZCA9IGluc2Vy
dGlvblNldC5hZGp1c3RPZmZzZXQoYnl0ZWNvZGVPZmZzZXQsIGJ5dGVjb2RlT2Zmc2V0ICsgY3Vy
cmVudFsyXS51Lm9wZXJhbmQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAg
ICAgICBkZWZhdWx0OgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBi
eXRlY29kZU9mZnNldCArPSBvcGNvZGVMZW5ndGgob3Bjb2RlSUQpOworICAgIH0KKworICAgIC8v
IFRoZW4sIGV4Y2VwdGlvbiBoYW5kbGVycyBzaG91bGQgYmUgYWRqdXN0ZWQuCisgICAgaWYgKG1f
cmFyZURhdGEpIHsKKyAgICAgICAgZm9yIChVbmxpbmtlZEhhbmRsZXJJbmZvJiBoYW5kbGVyIDog
bV9yYXJlRGF0YS0+bV9leGNlcHRpb25IYW5kbGVycykgeworICAgICAgICAgICAgaGFuZGxlci50
YXJnZXQgPSBpbnNlcnRpb25TZXQuYWRqdXN0T2Zmc2V0KDAsIGhhbmRsZXIudGFyZ2V0KTsKKyAg
ICAgICAgICAgIGhhbmRsZXIuc3RhcnQgPSBpbnNlcnRpb25TZXQuYWRqdXN0T2Zmc2V0KDAsIGhh
bmRsZXIuc3RhcnQpOworICAgICAgICAgICAgaGFuZGxlci5lbmQgPSBpbnNlcnRpb25TZXQuYWRq
dXN0T2Zmc2V0KDAsIGhhbmRsZXIuZW5kKTsKKyAgICAgICAgfQorCisgICAgICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgbV9yYXJlRGF0YS0+bV9vcFByb2ZpbGVDb250cm9sRmxvd0J5dGVjb2Rl
T2Zmc2V0cy5zaXplKCk7ICsraSkKKyAgICAgICAgICAgIG1fcmFyZURhdGEtPm1fb3BQcm9maWxl
Q29udHJvbEZsb3dCeXRlY29kZU9mZnNldHNbaV0gPSBpbnNlcnRpb25TZXQuYWRqdXN0T2Zmc2V0
KDAsIG1fcmFyZURhdGEtPm1fb3BQcm9maWxlQ29udHJvbEZsb3dCeXRlY29kZU9mZnNldHNbaV0p
OworCisgICAgICAgIGlmICghbV9yYXJlRGF0YS0+bV90eXBlUHJvZmlsZXJJbmZvTWFwLmlzRW1w
dHkoKSkgeworICAgICAgICAgICAgSGFzaE1hcDx1bnNpZ25lZCwgUmFyZURhdGE6OlR5cGVQcm9m
aWxlckV4cHJlc3Npb25SYW5nZT4gYWRqdXN0ZWRUeXBlUHJvZmlsZXJJbmZvTWFwOworICAgICAg
ICAgICAgZm9yIChhdXRvJiBlbnRyeSA6IG1fcmFyZURhdGEtPm1fdHlwZVByb2ZpbGVySW5mb01h
cCkKKyAgICAgICAgICAgICAgICBhZGp1c3RlZFR5cGVQcm9maWxlckluZm9NYXAuc2V0KGluc2Vy
dGlvblNldC5hZGp1c3RPZmZzZXQoMCwgZW50cnkua2V5KSwgZW50cnkudmFsdWUpOworICAgICAg
ICAgICAgbV9yYXJlRGF0YS0+bV90eXBlUHJvZmlsZXJJbmZvTWFwLnN3YXAoYWRqdXN0ZWRUeXBl
UHJvZmlsZXJJbmZvTWFwKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9ucy5zaXplKCk7ICsraSkKKyAgICAg
ICAgbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uc1tpXSA9IGluc2VydGlvblNldC5hZGp1c3RP
ZmZzZXQoMCwgbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uc1tpXSk7CisKKyAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IG1fZXhwcmVzc2lvbkluZm8uc2l6ZSgpOyArK2kpCisgICAgICAgIG1f
ZXhwcmVzc2lvbkluZm9baV0uaW5zdHJ1Y3Rpb25PZmZzZXQgPSBpbnNlcnRpb25TZXQuYWRqdXN0
T2Zmc2V0KDAsIG1fZXhwcmVzc2lvbkluZm9baV0uaW5zdHJ1Y3Rpb25PZmZzZXQpOworCisgICAg
Ly8gVGhlbiwgbW9kaWZ5IHRoZSB1bmxpbmtlZCBpbnN0cnVjdGlvbnMuCisgICAgaW5zZXJ0aW9u
U2V0LmFwcGx5TW9kaWZpY2F0aW9uKCk7CisKKyAgICAvLyBBbmQgcmVjb21wdXRlIHRoZSBqdW1w
IHRhcmdldCBiYXNlZCBvbiB0aGUgbW9kaWZpZWQgdW5saW5rZWQgaW5zdHJ1Y3Rpb25zLgorICAg
IG1fanVtcFRhcmdldHMuY2xlYXIoKTsKKyAgICByZWNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMo
dGhpcywgZ3JhcGguaW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSwgZ3JhcGguaW5zdHJ1Y3Rpb25zKCku
c2l6ZSgpLCBtX2p1bXBUYXJnZXRzKTsKK30KKwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCmluZGV4IGI0ZDJjZjQ4ZTQ2Mzhk
MzczYjE2NzIwZjc2ZTNjZmY5N2RmMDE1MGQuLjcyZDE2OTYxMWFhOTM1MTc4YzQ4MTBlZWQyZDU5
YTgzMThmZjYxYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9V
bmxpbmtlZENvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9V
bmxpbmtlZENvZGVCbG9jay5oCkBAIC00NSw2ICs0NSw4IEBACiAKIG5hbWVzcGFjZSBKU0Mgewog
CitjbGFzcyBCeXRlY29kZVJld3JpdGVyOworY2xhc3MgRGVidWdnZXI7CiBjbGFzcyBGdW5jdGlv
bk1ldGFkYXRhTm9kZTsKIGNsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZTsKIGNsYXNzIEpTU2NvcGU7
CkBAIC02NSw3ICs2NywxMSBAQCB0eXBlZGVmIHVuc2lnbmVkIFVubGlua2VkT2JqZWN0QWxsb2Nh
dGlvblByb2ZpbGU7CiB0eXBlZGVmIHVuc2lnbmVkIFVubGlua2VkTExJbnRDYWxsTGlua0luZm87
CiAKIHN0cnVjdCBVbmxpbmtlZFN0cmluZ0p1bXBUYWJsZSB7Ci0gICAgdHlwZWRlZiBIYXNoTWFw
PFJlZlB0cjxTdHJpbmdJbXBsPiwgaW50MzJfdD4gU3RyaW5nT2Zmc2V0VGFibGU7CisgICAgc3Ry
dWN0IE9mZnNldExvY2F0aW9uIHsKKyAgICAgICAgaW50MzJfdCBicmFuY2hPZmZzZXQ7CisgICAg
fTsKKworICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8U3RyaW5nSW1wbD4sIE9mZnNldExvY2F0
aW9uPiBTdHJpbmdPZmZzZXRUYWJsZTsKICAgICBTdHJpbmdPZmZzZXRUYWJsZSBvZmZzZXRUYWJs
ZTsKIAogICAgIGlubGluZSBpbnQzMl90IG9mZnNldEZvclZhbHVlKFN0cmluZ0ltcGwqIHZhbHVl
LCBpbnQzMl90IGRlZmF1bHRPZmZzZXQpCkBAIC03NCw3ICs4MCw3IEBAIHN0cnVjdCBVbmxpbmtl
ZFN0cmluZ0p1bXBUYWJsZSB7CiAgICAgICAgIFN0cmluZ09mZnNldFRhYmxlOjpjb25zdF9pdGVy
YXRvciBsb2MgPSBvZmZzZXRUYWJsZS5maW5kKHZhbHVlKTsKICAgICAgICAgaWYgKGxvYyA9PSBl
bmQpCiAgICAgICAgICAgICByZXR1cm4gZGVmYXVsdE9mZnNldDsKLSAgICAgICAgcmV0dXJuIGxv
Yy0+dmFsdWU7CisgICAgICAgIHJldHVybiBsb2MtPnZhbHVlLmJyYW5jaE9mZnNldDsKICAgICB9
CiAKIH07CkBAIC0xMDIsNiArMTA4LDggQEAgc3RydWN0IFVubGlua2VkSW5zdHJ1Y3Rpb24gewog
ICAgIH0gdTsKIH07CiAKK2NsYXNzIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uOworCiBjbGFz
cyBVbmxpbmtlZENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogcHVibGljOgogICAgIHR5cGVk
ZWYgSlNDZWxsIEJhc2U7CkBAIC0xMTEsNiArMTE5LDkgQEAgY2xhc3MgVW5saW5rZWRDb2RlQmxv
Y2sgOiBwdWJsaWMgSlNDZWxsIHsKIAogICAgIGVudW0geyBDYWxsRnVuY3Rpb24sIEFwcGx5RnVu
Y3Rpb24gfTsKIAorICAgIHR5cGVkZWYgVW5saW5rZWRJbnN0cnVjdGlvbiBJbnN0cnVjdGlvbjsK
KyAgICB0eXBlZGVmIFZlY3RvcjxVbmxpbmtlZEluc3RydWN0aW9uLCAwLCBVbnNhZmVWZWN0b3JP
dmVyZmxvdz4gVW5wYWNrZWRJbnN0cnVjdGlvbnM7CisKICAgICBib29sIGlzQ29uc3RydWN0b3Io
KSBjb25zdCB7IHJldHVybiBtX2lzQ29uc3RydWN0b3I7IH0KICAgICBib29sIGlzU3RyaWN0TW9k
ZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNTdHJpY3RNb2RlOyB9CiAgICAgYm9vbCB1c2VzRXZhbCgp
IGNvbnN0IHsgcmV0dXJuIG1fdXNlc0V2YWw7IH0KQEAgLTIwMCw2ICsyMTEsOSBAQCBjbGFzcyBV
bmxpbmtlZENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgIHVuc2lnbmVkIGp1bXBUYXJn
ZXQoaW50IGluZGV4KSBjb25zdCB7IHJldHVybiBtX2p1bXBUYXJnZXRzW2luZGV4XTsgfQogICAg
IHVuc2lnbmVkIGxhc3RKdW1wVGFyZ2V0KCkgY29uc3QgeyByZXR1cm4gbV9qdW1wVGFyZ2V0cy5s
YXN0KCk7IH0KIAorICAgIFVubGlua2VkSGFuZGxlckluZm8qIGhhbmRsZXJGb3JCeXRlY29kZU9m
ZnNldCh1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgUmVxdWlyZWRIYW5kbGVyID0gUmVxdWlyZWRI
YW5kbGVyOjpBbnlIYW5kbGVyKTsKKyAgICBVbmxpbmtlZEhhbmRsZXJJbmZvKiBoYW5kbGVyRm9y
SW5kZXgodW5zaWduZWQsIFJlcXVpcmVkSGFuZGxlciA9IFJlcXVpcmVkSGFuZGxlcjo6QW55SGFu
ZGxlcik7CisKICAgICBib29sIGlzQnVpbHRpbkZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9p
c0J1aWx0aW5GdW5jdGlvbjsgfQogCiAgICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2lu
ZCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PENvbnN0cnVjdG9yS2luZD4obV9jb25zdHJ1
Y3RvcktpbmQpOyB9CkBAIC0yMzAsNiArMjQ0LDggQEAgY2xhc3MgVW5saW5rZWRDb2RlQmxvY2sg
OiBwdWJsaWMgSlNDZWxsIHsKICAgICB2b2lkIHNldEluc3RydWN0aW9ucyhzdGQ6OnVuaXF1ZV9w
dHI8VW5saW5rZWRJbnN0cnVjdGlvblN0cmVhbT4pOwogICAgIGNvbnN0IFVubGlua2VkSW5zdHJ1
Y3Rpb25TdHJlYW0mIGluc3RydWN0aW9ucygpIGNvbnN0OwogCisgICAgaW50IG51bUNhbGxlZUxv
Y2FscygpIGNvbnN0IHsgcmV0dXJuIG1fbnVtQ2FsbGVlTG9jYWxzOyB9CisKICAgICBpbnQgbV9u
dW1WYXJzOwogICAgIGludCBtX251bUNhcHR1cmVkVmFyczsKICAgICBpbnQgbV9udW1DYWxsZWVM
b2NhbHM7CkBAIC0zODEsNiArMzk3LDggQEAgY2xhc3MgVW5saW5rZWRDb2RlQmxvY2sgOiBwdWJs
aWMgSlNDZWxsIHsKICAgICB9CiAKIHByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIEJ5dGVjb2Rl
UmV3cml0ZXI7CisgICAgdm9pZCBhcHBseU1vZGlmaWNhdGlvbihCeXRlY29kZVJld3JpdGVyJik7
CiAKICAgICB2b2lkIGNyZWF0ZVJhcmVEYXRhSWZOZWNlc3NhcnkoKQogICAgIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WaXJ0dWFsUmVnaXN0ZXIuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WaXJ0dWFsUmVnaXN0ZXIuaAppbmRleCBkM2Rm
NDA5NTdiNTE3NTY4ZTNhZWZiZTNhMWE2MDlmZDg3OGJhYWMzLi5kYWY1MDlmNmM3ZDExNWU0NWJj
YjEwN2M2N2QzZDM4ZDgwNGYyODk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvVmlydHVhbFJlZ2lzdGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1ZpcnR1YWxSZWdpc3Rlci5oCkBAIC0yNiw4ICsyNiw4IEBACiAjaWZuZGVmIFZpcnR1
YWxSZWdpc3Rlcl9oCiAjZGVmaW5lIFZpcnR1YWxSZWdpc3Rlcl9oCiAKKyNpbmNsdWRlICJCeXRl
Y29kZUNvbnZlbnRpb25zLmgiCiAjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCi0KICNpbmNsdWRlIDx3
dGYvUHJpbnRTdHJlYW0uaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC0xMDMsNyArMTAzLDcgQEAg
Y2xhc3MgVmlydHVhbFJlZ2lzdGVyIHsKIAogcHJpdmF0ZToKICAgICBzdGF0aWMgY29uc3QgaW50
IHNfaW52YWxpZFZpcnR1YWxSZWdpc3RlciA9IDB4M2ZmZmZmZmY7Ci0gICAgc3RhdGljIGNvbnN0
IGludCBzX2ZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4ID0gMHg0MDAwMDAwMDsKKyAgICBzdGF0
aWMgY29uc3QgaW50IHNfZmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXggPSBGaXJzdENvbnN0YW50
UmVnaXN0ZXJJbmRleDsKIAogICAgIHN0YXRpYyBpbnQgbG9jYWxUb09wZXJhbmQoaW50IGxvY2Fs
KSB7IHJldHVybiAtMSAtIGxvY2FsOyB9CiAgICAgc3RhdGljIGludCBvcGVyYW5kVG9Mb2NhbChp
bnQgb3BlcmFuZCkgeyByZXR1cm4gLTEgLSBvcGVyYW5kOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4
IDMxMmQ4OWY3YWRjNzNmMDdkYzUxNzliNzVlNTc1YzU1OTAyNjZkYjguLjUzM2VmMDg5OGI3N2Ri
ZGIzNmU0YTI1M2QwNzRkZDJkNDcyMjAxOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC0zMyw2ICsz
Myw3IEBACiAKICNpbmNsdWRlICJBcml0aFByb2ZpbGUuaCIKICNpbmNsdWRlICJCdWlsdGluRXhl
Y3V0YWJsZXMuaCIKKyNpbmNsdWRlICJCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5oIgogI2lu
Y2x1ZGUgIkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5oIgogI2luY2x1ZGUgIkludGVycHJldGVy
LmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgpAQCAtMTU1LDYgKzE1NiwxMCBAQCBQYXJzZXJF
cnJvciBCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUoKQogICAgICAgICBtX2NvZGVCbG9jay0+
YWRkRXhjZXB0aW9uSGFuZGxlcihpbmZvKTsKICAgICB9CiAgICAgCisKKyAgICBpZiAobV9jb2Rl
QmxvY2stPnBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yQm9keU1vZGUp
CisgICAgICAgIHBlcmZvcm1HZW5lcmF0b3JpZmljYXRpb24obV9jb2RlQmxvY2suZ2V0KCksIG1f
aW5zdHJ1Y3Rpb25zLCBtX2dlbmVyYXRvckZyYW1lU3ltYm9sVGFibGUuZ2V0KCksIG1fZ2VuZXJh
dG9yRnJhbWVTeW1ib2xUYWJsZUluZGV4KTsKKwogICAgIG1fY29kZUJsb2NrLT5zZXRJbnN0cnVj
dGlvbnMoc3RkOjptYWtlX3VuaXF1ZTxVbmxpbmtlZEluc3RydWN0aW9uU3RyZWFtPihtX2luc3Ry
dWN0aW9ucykpOwogCiAgICAgbV9jb2RlQmxvY2stPnNocmlua1RvRml0KCk7CkBAIC0yNjIsMTAg
KzI2NywxNCBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBG
dW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAgIGJvb2wgc2hvdWxkQ2FwdHVy
ZUFsbE9mVGhlVGhpbmdzID0gbV9zaG91bGRFbWl0RGVidWdIb29rcyB8fCBjb2RlQmxvY2stPnVz
ZXNFdmFsKCk7CiAgICAgYm9vbCBuZWVkc0FyZ3VtZW50cyA9IChmdW5jdGlvbk5vZGUtPnVzZXNB
cmd1bWVudHMoKSB8fCBjb2RlQmxvY2stPnVzZXNFdmFsKCkgfHwgKGZ1bmN0aW9uTm9kZS0+dXNl
c0Fycm93RnVuY3Rpb24oKSAmJiAhY29kZUJsb2NrLT5pc0Fycm93RnVuY3Rpb24oKSAmJiBpc0Fy
Z3VtZW50c1VzZWRJbklubmVyQXJyb3dGdW5jdGlvbigpKSk7CiAKLSAgICAvLyBHZW5lcmF0b3Ig
bmV2ZXIgcHJvdmlkZXMgImFyZ3VtZW50cyIuICJhcmd1bWVudHMiIHJlZmVyZW5jZSB3aWxsIGJl
IHJlc29sdmVkIGluIGFuIHVwcGVyIGdlbmVyYXRvciBmdW5jdGlvbiBzY29wZS4KLSAgICBpZiAo
cGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yQm9keU1vZGUpCisgICAgaWYg
KHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckJvZHlNb2RlKSB7CisgICAg
ICAgIC8vIEdlbmVyYXRvciBuZXZlciBwcm92aWRlcyAiYXJndW1lbnRzIi4gImFyZ3VtZW50cyIg
cmVmZXJlbmNlIHdpbGwgYmUgcmVzb2x2ZWQgaW4gYW4gdXBwZXIgZ2VuZXJhdG9yIGZ1bmN0aW9u
IHNjb3BlLgogICAgICAgICBuZWVkc0FyZ3VtZW50cyA9IGZhbHNlOwogCisgICAgICAgIC8vIEdl
bmVyYXRvciB1c2VzIHRoZSB2YXIgc2NvcGUgdG8gc2F2ZSBhbmQgcmVzdW1lIGl0cyB2YXJpYWJs
ZXMuIFNvIHRoZSBsZXhpY2FsIHNjb3BlIGlzIGFsd2F5cyBpbnN0YW50aWF0ZWQuCisgICAgICAg
IHNob3VsZENhcHR1cmVTb21lT2ZUaGVUaGluZ3MgPSB0cnVlOworICAgIH0KKwogICAgIGlmIChw
YXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JXcmFwcGVyRnVuY3Rpb25Nb2Rl
ICYmIG5lZWRzQXJndW1lbnRzKSB7CiAgICAgICAgIC8vIEdlbmVyYXRvciBkb2VzIG5vdCBwcm92
aWRlICJhcmd1bWVudHMiLiBJbnN0ZWFkLCB3cmFwcGluZyBHZW5lcmF0b3JGdW5jdGlvbiBwcm92
aWRlcyAiYXJndW1lbnRzIi4KICAgICAgICAgLy8gVGhpcyBpcyBiZWNhdXNlIGFyZ3VtZW50cyBv
ZiBhIGdlbmVyYXRvciBzaG91bGQgYmUgZXZhbHVhdGVkIGJlZm9yZSBzdGFydGluZyBpdC4KQEAg
LTI3NCw3ICsyODMsNyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0m
IHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAgICAgICAvLyAgICBm
dW5jdGlvbiAqZ2VuKGEsIGIgPSBoZWxsbygpKQogICAgICAgICAvLyAgICB7CiAgICAgICAgIC8v
ICAgICAgICByZXR1cm4gewotICAgICAgICAvLyAgICAgICAgICAgIEBnZW5lcmF0b3JOZXh0OiBm
dW5jdGlvbiAoQGdlbmVyYXRvciwgQGdlbmVyYXRvclN0YXRlLCBAZ2VuZXJhdG9yVmFsdWUsIEBn
ZW5lcmF0b3JSZXN1bWVNb2RlKQorICAgICAgICAvLyAgICAgICAgICAgIEBnZW5lcmF0b3JOZXh0
OiBmdW5jdGlvbiAoQGdlbmVyYXRvciwgQGdlbmVyYXRvclN0YXRlLCBAZ2VuZXJhdG9yVmFsdWUs
IEBnZW5lcmF0b3JSZXN1bWVNb2RlLCBAZ2VuZXJhdG9yRnJhbWUpCiAgICAgICAgIC8vICAgICAg
ICAgICAgewogICAgICAgICAvLyAgICAgICAgICAgICAgICBhcmd1bWVudHM7ICAvLyBUaGlzIGBh
cmd1bWVudHNgIHNob3VsZCByZWZlcmVuY2UgdG8gdGhlIGdlbidzIGFyZ3VtZW50cy4KICAgICAg
ICAgLy8gICAgICAgICAgICAgICAgLi4uCkBAIC0zMDMsMjggKzMxMiwxNyBAQCBCeXRlY29kZUdl
bmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9u
Tm9kZSwgVW5saW5rZQogICAgICAgICByZXR1cm4gY2FwdHVyZXModWlkKSA/IFZhcktpbmQ6OlNj
b3BlIDogVmFyS2luZDo6U3RhY2s7CiAgICAgfTsKIAotICAgIGVtaXRFbnRlcigpOwotCi0gICAg
YWxsb2NhdGVBbmRFbWl0U2NvcGUoKTsKLQogICAgIG1fY2FsbGVlUmVnaXN0ZXIuc2V0SW5kZXgo
Q2FsbEZyYW1lU2xvdDo6Y2FsbGVlKTsKIAogICAgIGluaXRpYWxpemVQYXJhbWV0ZXJzKHBhcmFt
ZXRlcnMpOwogICAgIEFTU0VSVCghKGlzU2ltcGxlUGFyYW1ldGVyTGlzdCAmJiBtX3Jlc3RQYXJh
bWV0ZXIpKTsKIAotICAgIC8vIEJlZm9yZSBlbWl0dGluZyBhIHNjb3BlIGNyZWF0aW9uLCBlbWl0
IGEgZ2VuZXJhdG9yIHByb2xvZ3VlIHRoYXQgY29udGFpbnMganVtcCBiYXNlZCBvbiBhIGdlbmVy
YXRvcidzIHN0YXRlLgotICAgIGlmIChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5l
cmF0b3JCb2R5TW9kZSkgewotICAgICAgICBtX2dlbmVyYXRvclJlZ2lzdGVyID0gJm1fcGFyYW1l
dGVyc1sxXTsKLQotICAgICAgICAvLyBKdW1wIHdpdGggc3dpdGNoX2ltbSBiYXNlZCBvbiBAZ2Vu
ZXJhdG9yU3RhdGUuIFdlIGRvbid0IHRha2UgdGhlIGNvcm91dGluZSBzdHlsZWQgZ2VuZXJhdG9y
IGltcGxlbWVudGF0aW9uLgotICAgICAgICAvLyBXaGVuIGNhbGxpbmcgYG5leHQoKWAsIHdlIHdv
dWxkIGxpa2UgdG8gZW50ZXIgdGhlIHNhbWUgcHJvbG9ndWUgaW5zdGVhZCBvZiBqdW1waW5nIGJh
c2VkIG9uIHRoZSBzYXZlZCBpbnN0cnVjdGlvbiBwb2ludGVyLgotICAgICAgICAvLyBJdCdzIHN1
aXRhbGUgZm9yIGlubGluaW5nLCBiZWNhdXNlIGl0IGp1c3QgaW5saW5lcyBvbmUgYG5leHRgIGZ1
bmN0aW9uIGltcGxlbWVudGF0aW9uLgorICAgIGVtaXRFbnRlcigpOwogCi0gICAgICAgIGJlZ2lu
R2VuZXJhdG9yKGdlbmVyYXRvclN0YXRlUmVnaXN0ZXIoKSk7CisgICAgaWYgKHBhcnNlTW9kZSA9
PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckJvZHlNb2RlKQorICAgICAgICBtX2dlbmVyYXRv
clJlZ2lzdGVyID0gJm1fcGFyYW1ldGVyc1sxXTsKIAotICAgICAgICAvLyBJbml0aWFsIHN0YXRl
LgotICAgICAgICBlbWl0R2VuZXJhdG9yU3RhdGVMYWJlbCgpOwotICAgIH0KKyAgICBhbGxvY2F0
ZUFuZEVtaXRTY29wZSgpOwogCiAgICAgaWYgKGZ1bmN0aW9uTmFtZUlzSW5TY29wZShmdW5jdGlv
bk5vZGUtPmlkZW50KCksIGZ1bmN0aW9uTm9kZS0+ZnVuY3Rpb25Nb2RlKCkpKSB7CiAgICAgICAg
IEFTU0VSVChwYXJzZU1vZGUgIT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JCb2R5TW9kZSk7
CkBAIC02NDEsNiArNjM5LDE2IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRv
cihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtlCiAgICAgICAgICAg
ICBlbWl0TG9hZE5ld1RhcmdldEZyb21BcnJvd0Z1bmN0aW9uTGV4aWNhbEVudmlyb25tZW50KCk7
CiAgICAgfQogICAgIAorICAgIC8vIFNldCB1cCB0aGUgbGV4aWNhbCBlbnZpcm9ubWVudCBzY29w
ZSBhcyB0aGUgZ2VuZXJhdG9yIGZyYW1lLiBXZSBzdG9yZSB0aGUgc2F2ZWQgYW5kIHJlc3VtZWQg
Z2VuZXJhdG9yIHJlZ2lzdGVycyBpbnRvIHRoaXMgc2NvcGUgd2l0aCB0aGUgc3ltYm9sIGtleXMu
CisgICAgLy8gU2luY2UgdGhleSBhcmUgc3ltYm9sIGtleWVkLCB0aGVzZSB2YXJpYWJsZXMgY2Fu
bm90IGJlIHJlYWNoZWQgZnJvbSB0aGUgdXN1YWwgY29kZS4KKyAgICBpZiAoU291cmNlUGFyc2VN
b2RlOjpHZW5lcmF0b3JCb2R5TW9kZSA9PSBwYXJzZU1vZGUpIHsKKyAgICAgICAgQVNTRVJUKG1f
bGV4aWNhbEVudmlyb25tZW50UmVnaXN0ZXIpOworICAgICAgICBtX2dlbmVyYXRvckZyYW1lU3lt
Ym9sVGFibGUuc2V0KCptX3ZtLCBmdW5jdGlvblN5bWJvbFRhYmxlKTsKKyAgICAgICAgbV9nZW5l
cmF0b3JGcmFtZVN5bWJvbFRhYmxlSW5kZXggPSBzeW1ib2xUYWJsZUNvbnN0YW50SW5kZXg7Cisg
ICAgICAgIGVtaXRNb3ZlKGdlbmVyYXRvckZyYW1lUmVnaXN0ZXIoKSwgbV9sZXhpY2FsRW52aXJv
bm1lbnRSZWdpc3Rlcik7CisgICAgICAgIGVtaXRQdXRCeUlkKGdlbmVyYXRvclJlZ2lzdGVyKCks
IHByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JGcmFtZVByaXZhdGVOYW1l
KCksIGdlbmVyYXRvckZyYW1lUmVnaXN0ZXIoKSk7CisgICAgfQorCiAgICAgYm9vbCBzaG91bGRJ
bml0aWFsaXplQmxvY2tTY29wZWRGdW5jdGlvbnMgPSBmYWxzZTsgLy8gV2UgZ2VuZXJhdGUgdG9w
LWxldmVsIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucyBpbiA6OmdlbmVyYXRlKCkuCiAgICAgcHVzaExl
eGljYWxTY29wZShtX3Njb3BlTm9kZSwgVERaQ2hlY2tPcHRpbWl6YXRpb246Ok9wdGltaXplLCBO
ZXN0ZWRTY29wZVR5cGU6OklzTm90TmVzdGVkLCBudWxscHRyLCBzaG91bGRJbml0aWFsaXplQmxv
Y2tTY29wZWRGdW5jdGlvbnMpOwogfQpAQCAtMzY3Miw4ICszNjgwLDcgQEAgdm9pZCBCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdENvbXBsZXhQb3BTY29wZXMoUmVnaXN0ZXJJRCogc2NvcGUsIENvbnRy
b2xGbG93Q29udGUKICAgICAgICAgICAgIGlmIChmbGlwVHJpZXMpIHsKICAgICAgICAgICAgICAg
ICB3aGlsZSAobV90cnlDb250ZXh0U3RhY2suc2l6ZSgpICE9IGZpbmFsbHlDb250ZXh0LnRyeUNv
bnRleHRTdGFja1NpemUpIHsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKG1fdHJ5Q29udGV4
dFN0YWNrLnNpemUoKSA+IGZpbmFsbHlDb250ZXh0LnRyeUNvbnRleHRTdGFja1NpemUpOwotICAg
ICAgICAgICAgICAgICAgICBUcnlDb250ZXh0IGNvbnRleHQgPSBtX3RyeUNvbnRleHRTdGFjay5s
YXN0KCk7Ci0gICAgICAgICAgICAgICAgICAgIG1fdHJ5Q29udGV4dFN0YWNrLnJlbW92ZUxhc3Qo
KTsKKyAgICAgICAgICAgICAgICAgICAgVHJ5Q29udGV4dCBjb250ZXh0ID0gbV90cnlDb250ZXh0
U3RhY2sudGFrZUxhc3QoKTsKICAgICAgICAgICAgICAgICAgICAgVHJ5UmFuZ2UgcmFuZ2U7CiAg
ICAgICAgICAgICAgICAgICAgIHJhbmdlLnN0YXJ0ID0gY29udGV4dC5zdGFydDsKICAgICAgICAg
ICAgICAgICAgICAgcmFuZ2UuZW5kID0gYmVmb3JlRmluYWxseTsKQEAgLTM5NTcsNyArMzk2NCw3
IEBAIHN0YXRpYyB2b2lkIHByZXBhcmVKdW1wVGFibGVGb3JTdHJpbmdTd2l0Y2goVW5saW5rZWRT
dHJpbmdKdW1wVGFibGUmIGp1bXBUYWJsZSwKICAgICAgICAgCiAgICAgICAgIEFTU0VSVChub2Rl
c1tpXS0+aXNTdHJpbmcoKSk7CiAgICAgICAgIFN0cmluZ0ltcGwqIGNsYXVzZSA9IHN0YXRpY19j
YXN0PFN0cmluZ05vZGUqPihub2Rlc1tpXSktPnZhbHVlKCkuaW1wbCgpOwotICAgICAgICBqdW1w
VGFibGUub2Zmc2V0VGFibGUuYWRkKGNsYXVzZSwgbGFiZWxzW2ldLT5iaW5kKHN3aXRjaEFkZHJl
c3MsIHN3aXRjaEFkZHJlc3MgKyAzKSk7CisgICAgICAgIGp1bXBUYWJsZS5vZmZzZXRUYWJsZS5h
ZGQoY2xhdXNlLCBVbmxpbmtlZFN0cmluZ0p1bXBUYWJsZTo6T2Zmc2V0TG9jYXRpb24geyBsYWJl
bHNbaV0tPmJpbmQoc3dpdGNoQWRkcmVzcywgc3dpdGNoQWRkcmVzcyArIDMpIH0pOwogICAgIH0K
IH0KIApAQCAtNDQ1OSwzMSArNDQ2NiwzMyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
UmVxdWlyZU9iamVjdENvZXJjaWJsZShSZWdpc3RlcklEKiB2YWx1ZSwgY29uc3QgU3RyaQogdm9p
ZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFlpZWxkUG9pbnQoUmVnaXN0ZXJJRCogYXJndW1lbnQp
CiB7CiAgICAgUmVmUHRyPExhYmVsPiBtZXJnZVBvaW50ID0gbmV3TGFiZWwoKTsKLSAgICBzaXpl
X3QgeWllbGRQb2ludEluZGV4ID0gbV9nZW5lcmF0b3JSZXN1bWVMYWJlbHMuc2l6ZSgpOwotICAg
IGVtaXRHZW5lcmF0b3JTdGF0ZUNoYW5nZSh5aWVsZFBvaW50SW5kZXgpOwotICAgIC8vIEZpcnN0
IHlpZWxkIHBvaW50IGlzIHVzZWQgZm9yIGluaXRpYWwgc2VxdWVuY2UuCi0gICAgdW5zaWduZWQg
bGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0geWllbGRQb2ludEluZGV4IC0gMTsKLSAgICBlbWl0U2F2
ZShtZXJnZVBvaW50LmdldCgpLCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpOwotICAgIGVtaXRSZXR1
cm4oYXJndW1lbnQpOwotICAgIGVtaXRSZXN1bWUobWVyZ2VQb2ludC5nZXQoKSwgbGl2ZUNhbGxl
ZUxvY2Fsc0luZGV4KTsKLX0KKyAgICB1bnNpZ25lZCB5aWVsZFBvaW50SW5kZXggPSBtX3lpZWxk
UG9pbnRzKys7CisgICAgZW1pdEdlbmVyYXRvclN0YXRlQ2hhbmdlKHlpZWxkUG9pbnRJbmRleCAr
IDEpOworCisgICAgLy8gU3BsaXQgdGhlIHRyeSByYW5nZSBoZXJlLgorICAgIFJlZlB0cjxMYWJl
bD4gc2F2ZVBvaW50ID0gZW1pdExhYmVsKG5ld0xhYmVsKCkuZ2V0KCkpOworICAgIGZvciAodW5z
aWduZWQgaSA9IG1fdHJ5Q29udGV4dFN0YWNrLnNpemUoKTsgaS0tOykgeworICAgICAgICBUcnlD
b250ZXh0JiBjb250ZXh0ID0gbV90cnlDb250ZXh0U3RhY2tbaV07CisgICAgICAgIFRyeVJhbmdl
IHJhbmdlOworICAgICAgICByYW5nZS5zdGFydCA9IGNvbnRleHQuc3RhcnQ7CisgICAgICAgIHJh
bmdlLmVuZCA9IHNhdmVQb2ludDsKKyAgICAgICAgcmFuZ2UudHJ5RGF0YSA9IGNvbnRleHQudHJ5
RGF0YTsKKyAgICAgICAgbV90cnlSYW5nZXMuYXBwZW5kKHJhbmdlKTsKKworICAgICAgICAvLyBU
cnkgcmFuZ2Ugd2lsbCBiZSByZXN0YXJlZCBhdCB0aGUgbWVyZ2UgcG9pbnQuCisgICAgICAgIGNv
bnRleHQuc3RhcnQgPSBtZXJnZVBvaW50OworICAgIH0KKyAgICBWZWN0b3I8VHJ5Q29udGV4dD4g
c2F2ZWRUcnlDb250ZXh0U3RhY2s7CisgICAgbV90cnlDb250ZXh0U3RhY2suc3dhcChzYXZlZFRy
eUNvbnRleHRTdGFjayk7CiAKLXZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRTYXZlKExhYmVs
KiBtZXJnZVBvaW50LCB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpCi17Ci0gICAgc2l6
ZV90IGJlZ2luID0gaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpOwotICAgIGVtaXRPcGNvZGUob3Bfc2F2
ZSk7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fZ2VuZXJhdG9yUmVnaXN0ZXItPmluZGV4
KCkpOwotICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpOwot
ICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChtZXJnZVBvaW50LT5iaW5kKGJlZ2luLCBpbnN0cnVj
dGlvbnMoKS5zaXplKCkpKTsKLX0KKyAgICBlbWl0T3Bjb2RlKG9wX3lpZWxkKTsKKyAgICBpbnN0
cnVjdGlvbnMoKS5hcHBlbmQoZ2VuZXJhdG9yRnJhbWVSZWdpc3RlcigpLT5pbmRleCgpKTsKKyAg
ICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoeWllbGRQb2ludEluZGV4KTsKKyAgICBpbnN0cnVjdGlv
bnMoKS5hcHBlbmQoYXJndW1lbnQtPmluZGV4KCkpOwogCi12b2lkIEJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0UmVzdW1lKExhYmVsKiBtZXJnZVBvaW50LCB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxz
SW5kZXgpCi17Ci0gICAgZW1pdEdlbmVyYXRvclN0YXRlTGFiZWwoKTsKLSAgICBlbWl0T3Bjb2Rl
KG9wX3Jlc3VtZSk7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fZ2VuZXJhdG9yUmVnaXN0
ZXItPmluZGV4KCkpOwotICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChsaXZlQ2FsbGVlTG9jYWxz
SW5kZXgpOwotICAgIGVtaXRMYWJlbChtZXJnZVBvaW50KTsKKyAgICAvLyBSZXN0b3JlIHRoZSB0
cnkgY29udGV4dHMsIHdoaWNoIHN0YXJ0IG9mZnNldCBpcyB1cGRhdGVkIHRvIHRoZSBtZXJnZSBw
b2ludC4KKyAgICBtX3RyeUNvbnRleHRTdGFjay5zd2FwKHNhdmVkVHJ5Q29udGV4dFN0YWNrKTsK
KyAgICBlbWl0TGFiZWwobWVyZ2VQb2ludC5nZXQoKSk7CiB9CiAKIFJlZ2lzdGVySUQqIEJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0WWllbGQoUmVnaXN0ZXJJRCogYXJndW1lbnQpCkBAIC00NjQwLDM5
ICs0NjQ5LDYgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdlbmVyYXRvclN0YXRlQ2hh
bmdlKGludDMyX3Qgc3RhdGUpCiAgICAgZW1pdFB1dEJ5SWQoZ2VuZXJhdG9yUmVnaXN0ZXIoKSwg
cHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclN0YXRlUHJpdmF0ZU5hbWUo
KSwgY29tcGxldGVkU3RhdGUpOwogfQogCi12b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2Vu
ZXJhdG9yU3RhdGVMYWJlbCgpCi17Ci0gICAgUmVmUHRyPExhYmVsPiBsYWJlbCA9IG5ld0xhYmVs
KCk7Ci0gICAgbV9nZW5lcmF0b3JSZXN1bWVMYWJlbHMuYXBwZW5kKGxhYmVsLmdldCgpKTsKLSAg
ICBlbWl0TGFiZWwobGFiZWwuZ2V0KCkpOwotfQotCi12b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpi
ZWdpbkdlbmVyYXRvcihSZWdpc3RlcklEKiBzdGF0ZSkKLXsKLSAgICBiZWdpblN3aXRjaChzdGF0
ZSwgU3dpdGNoSW5mbzo6U3dpdGNoSW1tZWRpYXRlKTsKLX0KLQotdm9pZCBCeXRlY29kZUdlbmVy
YXRvcjo6ZW5kR2VuZXJhdG9yKExhYmVsKiBkZWZhdWx0TGFiZWwpCi17Ci0gICAgU3dpdGNoSW5m
byBzd2l0Y2hJbmZvID0gbV9zd2l0Y2hDb250ZXh0U3RhY2subGFzdCgpOwotICAgIG1fc3dpdGNo
Q29udGV4dFN0YWNrLnJlbW92ZUxhc3QoKTsKLQotICAgIGluc3RydWN0aW9ucygpW3N3aXRjaElu
Zm8uYnl0ZWNvZGVPZmZzZXQgKyAxXSA9IG1fY29kZUJsb2NrLT5udW1iZXJPZlN3aXRjaEp1bXBU
YWJsZXMoKTsKLSAgICBpbnN0cnVjdGlvbnMoKVtzd2l0Y2hJbmZvLmJ5dGVjb2RlT2Zmc2V0ICsg
Ml0gPSBkZWZhdWx0TGFiZWwtPmJpbmQoc3dpdGNoSW5mby5ieXRlY29kZU9mZnNldCwgc3dpdGNo
SW5mby5ieXRlY29kZU9mZnNldCArIDMpOwotCi0gICAgVW5saW5rZWRTaW1wbGVKdW1wVGFibGUm
IGp1bXBUYWJsZSA9IG1fY29kZUJsb2NrLT5hZGRTd2l0Y2hKdW1wVGFibGUoKTsKLSAgICBpbnQz
Ml90IHN3aXRjaEFkZHJlc3MgPSBzd2l0Y2hJbmZvLmJ5dGVjb2RlT2Zmc2V0OwotICAgIGp1bXBU
YWJsZS5taW4gPSAwOwotICAgIGp1bXBUYWJsZS5icmFuY2hPZmZzZXRzLnJlc2l6ZShtX2dlbmVy
YXRvclJlc3VtZUxhYmVscy5zaXplKCkgKyAxKTsKLSAgICBqdW1wVGFibGUuYnJhbmNoT2Zmc2V0
cy5maWxsKDApOwotICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCBtX2dlbmVyYXRvclJlc3Vt
ZUxhYmVscy5zaXplKCk7ICsraSkgewotICAgICAgICAvLyBXZSdyZSBlbWl0dGluZyB0aGlzIGFm
dGVyIHRoZSBjbGF1c2UgbGFiZWxzIHNob3VsZCBoYXZlIGJlZW4gZml4ZWQsIHNvCi0gICAgICAg
IC8vIHRoZSBsYWJlbHMgc2hvdWxkIG5vdCBiZSAiZm9yd2FyZCIgcmVmZXJlbmNlcwotICAgICAg
ICBBU1NFUlQoIW1fZ2VuZXJhdG9yUmVzdW1lTGFiZWxzW2ldLT5pc0ZvcndhcmQoKSk7Ci0gICAg
ICAgIGp1bXBUYWJsZS5hZGQoaSwgbV9nZW5lcmF0b3JSZXN1bWVMYWJlbHNbaV0tPmJpbmQoc3dp
dGNoQWRkcmVzcywgc3dpdGNoQWRkcmVzcyArIDMpKTsKLSAgICB9Ci19Ci0KIH0gLy8gbmFtZXNw
YWNlIEpTQwogCiBuYW1lc3BhY2UgV1RGIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAppbmRleCBmZmY3MTNhYTI1ZTcx
ZGYyY2Y0Y2I1MzA4ZTYxNjlhNTNhZjY1MWJlLi5iMWI5NDNkYTVlMDY3ZWNkZDQ5Njc0ODExNDVj
ZTlkYjAwNzVhMmFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAi
Q29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiSW5zdHJ1Y3Rpb24uaCIKICNpbmNsdWRlICJJbnRlcnBy
ZXRlci5oIgorI2luY2x1ZGUgIkpTR2VuZXJhdG9yRnVuY3Rpb24uaCIKICNpbmNsdWRlICJMYWJl
bC5oIgogI2luY2x1ZGUgIkxhYmVsU2NvcGUuaCIKICNpbmNsdWRlICJOb2Rlcy5oIgpAQCAtNjkw
LDE4ICs2OTEsMTUgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW5kU3dpdGNoKHVp
bnQzMl90IGNsYXVzZUNvdW50LCBSZWZQdHI8TGFiZWw+KiwgRXhwcmVzc2lvbk5vZGUqKiwgTGFi
ZWwqIGRlZmF1bHRMYWJlbCwgaW50MzJfdCBtaW4sIGludDMyX3QgcmFuZ2UpOwogCiAgICAgICAg
IHZvaWQgZW1pdFlpZWxkUG9pbnQoUmVnaXN0ZXJJRCopOwotICAgICAgICB2b2lkIGVtaXRTYXZl
KExhYmVsKiBtZXJnZVBvaW50LCB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpOwotICAg
ICAgICB2b2lkIGVtaXRSZXN1bWUoTGFiZWwqIG1lcmdlUG9pbnQsIHVuc2lnbmVkIGxpdmVDYWxs
ZWVMb2NhbHNJbmRleCk7CiAKICAgICAgICAgdm9pZCBlbWl0R2VuZXJhdG9yU3RhdGVMYWJlbCgp
OwogICAgICAgICB2b2lkIGVtaXRHZW5lcmF0b3JTdGF0ZUNoYW5nZShpbnQzMl90IHN0YXRlKTsK
ICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFlpZWxkKFJlZ2lzdGVySUQqIGFyZ3VtZW50KTsKICAg
ICAgICAgUmVnaXN0ZXJJRCogZW1pdERlbGVnYXRlWWllbGQoUmVnaXN0ZXJJRCogYXJndW1lbnQs
IFRocm93YWJsZUV4cHJlc3Npb25EYXRhKik7Ci0gICAgICAgIHZvaWQgYmVnaW5HZW5lcmF0b3Io
UmVnaXN0ZXJJRCopOwotICAgICAgICB2b2lkIGVuZEdlbmVyYXRvcihMYWJlbCogZGVmYXVsdExh
YmVsKTsKLSAgICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9yU3RhdGVSZWdpc3RlcigpIHsgcmV0
dXJuICZtX3BhcmFtZXRlcnNbMl07IH0KLSAgICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9yVmFs
dWVSZWdpc3RlcigpIHsgcmV0dXJuICZtX3BhcmFtZXRlcnNbM107IH0KLSAgICAgICAgUmVnaXN0
ZXJJRCogZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKCkgeyByZXR1cm4gJm1fcGFyYW1ldGVy
c1s0XTsgfQorICAgICAgICBSZWdpc3RlcklEKiBnZW5lcmF0b3JTdGF0ZVJlZ2lzdGVyKCkgeyBy
ZXR1cm4gJm1fcGFyYW1ldGVyc1tzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvckZ1bmN0
aW9uOjpHZW5lcmF0b3JBcmd1bWVudDo6U3RhdGUpXTsgfQorICAgICAgICBSZWdpc3RlcklEKiBn
ZW5lcmF0b3JWYWx1ZVJlZ2lzdGVyKCkgeyByZXR1cm4gJm1fcGFyYW1ldGVyc1tzdGF0aWNfY2Fz
dDxpbnQzMl90PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JBcmd1bWVudDo6VmFsdWUp
XTsgfQorICAgICAgICBSZWdpc3RlcklEKiBnZW5lcmF0b3JSZXN1bWVNb2RlUmVnaXN0ZXIoKSB7
IHJldHVybiAmbV9wYXJhbWV0ZXJzW3N0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yRnVu
Y3Rpb246OkdlbmVyYXRvckFyZ3VtZW50OjpSZXN1bWVNb2RlKV07IH0KKyAgICAgICAgUmVnaXN0
ZXJJRCogZ2VuZXJhdG9yRnJhbWVSZWdpc3RlcigpIHsgcmV0dXJuICZtX3BhcmFtZXRlcnNbc3Rh
dGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6R2VuZXJhdG9yQXJndW1lbnQ6
OkZyYW1lKV07IH0KIAogICAgICAgICBDb2RlVHlwZSBjb2RlVHlwZSgpIGNvbnN0IHsgcmV0dXJu
IG1fY29kZVR5cGU7IH0KIApAQCAtOTI5LDcgKzkyNywxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgVmVjdG9yPFN3aXRjaEluZm8+IG1fc3dpdGNoQ29udGV4dFN0YWNrOwogICAgICAgICBW
ZWN0b3I8UmVmUHRyPEZvckluQ29udGV4dD4+IG1fZm9ySW5Db250ZXh0U3RhY2s7CiAgICAgICAg
IFZlY3RvcjxUcnlDb250ZXh0PiBtX3RyeUNvbnRleHRTdGFjazsKLSAgICAgICAgVmVjdG9yPFJl
ZlB0cjxMYWJlbD4+IG1fZ2VuZXJhdG9yUmVzdW1lTGFiZWxzOworICAgICAgICB1bnNpZ25lZCBt
X3lpZWxkUG9pbnRzIHsgMCB9OworCisgICAgICAgIFN0cm9uZzxTeW1ib2xUYWJsZT4gbV9nZW5l
cmF0b3JGcmFtZVN5bWJvbFRhYmxlOworICAgICAgICBpbnQgbV9nZW5lcmF0b3JGcmFtZVN5bWJv
bFRhYmxlSW5kZXggeyAwIH07CisKICAgICAgICAgZW51bSBGdW5jdGlvblZhcmlhYmxlVHlwZSA6
IHVpbnQ4X3QgeyBOb3JtYWxGdW5jdGlvblZhcmlhYmxlLCBHbG9iYWxGdW5jdGlvblZhcmlhYmxl
IH07CiAgICAgICAgIFZlY3RvcjxzdGQ6OnBhaXI8RnVuY3Rpb25NZXRhZGF0YU5vZGUqLCBGdW5j
dGlvblZhcmlhYmxlVHlwZT4+IG1fZnVuY3Rpb25zVG9Jbml0aWFsaXplOwogICAgICAgICBib29s
IG1fbmVlZFRvSW5pdGlhbGl6ZUFyZ3VtZW50cyB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKaW5kZXggZDBjOTll
ZmY1ZTc0ZjAyYzM4M2NjNTExZGUxN2I4ZDJiNmU3N2U0Zi4uYmNkYWEyNzJjYjk1MDg1ODYwOGNh
MmE3NTdmN2M0NjRlNDc2ZGZmNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcApAQCAtMzM3Nyw3ICszMzc3LDYgQEAgdm9pZCBG
dW5jdGlvbk5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBS
ZWdpc3RlcklEKikKICAgICAgICAgUmVmUHRyPExhYmVsPiBkb25lID0gZ2VuZXJhdG9yLm5ld0xh
YmVsKCk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoZG9uZS5nZXQoKSk7CiAgICAgICAg
IGdlbmVyYXRvci5lbWl0UmV0dXJuKGdlbmVyYXRvci5lbWl0TG9hZChudWxscHRyLCBqc1VuZGVm
aW5lZCgpKSk7Ci0gICAgICAgIGdlbmVyYXRvci5lbmRHZW5lcmF0b3IoZG9uZS5nZXQoKSk7CiAg
ICAgICAgIGJyZWFrOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3Bl
cmF0aW9ucy5jcHAKaW5kZXggN2NmNjg3MDk2YzQzMzYwOWI1MGQxZjQwOWE5ODkzZjIwMDA5NTI2
OS4uMjUxZTdhYjFiZGM2MTg5MmZlMmUyNjhjMDRkOTIxYjYzMDk5ZGUwMCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCkBAIC00Miw4ICs0Miw4IEBACiAj
aW5jbHVkZSAiRGlyZWN0QXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiRlRMRm9yT1NSRW50cnlKSVRD
b2RlLmgiCiAjaW5jbHVkZSAiRlRMT1NSRW50cnkuaCIKLSNpbmNsdWRlICJIb3N0Q2FsbFJldHVy
blZhbHVlLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCisjaW5jbHVkZSAiSG9zdENhbGxS
ZXR1cm5WYWx1ZS5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSklULmgi
CiAjaW5jbHVkZSAiSklURXhjZXB0aW9ucy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2dlbmVyYXRlLWJ5dGVjb2RlLWZpbGVzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2dl
bmVyYXRlLWJ5dGVjb2RlLWZpbGVzCmluZGV4IDU2NjZhM2Y5MjRjMTE5YjIxNmQzZmYwZmZlOWM2
NzJiN2M3MWJiNzkuLjhmNzkwZWQ5ZmE4MzE2ZDM5ZGExNWQzYjc1ODk0NmJmNDlmM2JkM2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0ZS1ieXRlY29kZS1maWxlcwor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdGUtYnl0ZWNvZGUtZmlsZXMKQEAgLTk0
LDEzICs5NCwxNCBAQCBkZWYgb3Blbk9yRXhpdChwYXRoLCBtb2RlKToKICAgICAgICAgcHJpbnQg
IkkvTyBlcnJvciBvcGVuaW5nIHswfSwgKHsxfSk6IHsyfSIuZm9ybWF0KHBhdGgsIGUuZXJybm8s
IGUuc3RyZXJyb3IpCiAgICAgICAgIGV4aXQoMSkKIAotZGVmIGhhc2hGaWxlKGZpbGUpOgorZGVm
IGhhc2hGaWxlKGZpbGVzKToKICAgICBzaGExID0gaGFzaGxpYi5zaGExKCkKLSAgICBmaWxlLnNl
ZWsoMCkKLSAgICBmb3IgbGluZSBpbiBmaWxlOgotICAgICAgICBzaGExLnVwZGF0ZShsaW5lKQor
ICAgIGZvciBmaWxlIGluIGZpbGVzOgorICAgICAgICBmaWxlLnNlZWsoMCkKKyAgICAgICAgZm9y
IGxpbmUgaW4gZmlsZToKKyAgICAgICAgICAgIHNoYTEudXBkYXRlKGxpbmUpCiAKLSAgICBmaWxl
LnNlZWsoMCkKKyAgICAgICAgZmlsZS5zZWVrKDApCiAKICAgICByZXR1cm4gc2hhMS5oZXhkaWdl
c3QoKQogCkBAIC0xMTUsNyArMTE2LDggQEAgaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKIAog
ICAgIGJ5dGVjb2RlSlNPTkZpbGUgPSBhcmdzWzBdCiAgICAgYnl0ZWNvZGVGaWxlID0gb3Blbk9y
RXhpdChieXRlY29kZUpTT05GaWxlLCAicmIiKQotICAgIHNoYTFIYXNoID0gaGFzaEZpbGUoYnl0
ZWNvZGVGaWxlKQorICAgIGdlbmVyYXRvckZpbGUgPSBvcGVuT3JFeGl0KF9fZmlsZV9fLCAicmIi
KQorICAgIHNoYTFIYXNoID0gaGFzaEZpbGUoW2J5dGVjb2RlRmlsZSwgZ2VuZXJhdG9yRmlsZV0p
CiAKICAgICBoRmlsZUhhc2hTdHJpbmcgPSAiLy8gU0hBMUhhc2g6IHswfVxuIi5mb3JtYXQoc2hh
MUhhc2gpCiAgICAgYXNtRmlsZUhhc2hTdHJpbmcgPSAiIyBTSEExSGFzaDogezB9XG4iLmZvcm1h
dChzaGExSGFzaCkKQEAgLTE4Nyw2ICsxODksNyBAQCBpZiBfX25hbWVfXyA9PSAiX19tYWluX18i
OgogICAgICAgICAgICAgICAgIGRlZmF1bHRMZW5ndGggPSBzZWN0aW9uWyJkZWZhdWx0TGVuZ3Ro
Il0KIAogICAgICAgICAgICAgYnl0ZWNvZGVOdW0gPSAwCisgICAgICAgICAgICBtYXhMZW5ndGgg
PSAwCiAgICAgICAgICAgICBmb3IgYnl0ZWNvZGUgaW4gc2VjdGlvblsiYnl0ZWNvZGVzIl06CiAg
ICAgICAgICAgICAgICAgaWYgbm90IGZpcnN0TWFjcm86CiAgICAgICAgICAgICAgICAgICAgIGJ5
dGVjb2RlSEZpbGUud3JpdGUoIiBcXFxuIikKQEAgLTE5NCw2ICsxOTcsNyBAQCBpZiBfX25hbWVf
XyA9PSAiX19tYWluX18iOgogICAgICAgICAgICAgICAgIGxlbmd0aCA9IGRlZmF1bHRMZW5ndGgK
ICAgICAgICAgICAgICAgICBpZiAibGVuZ3RoIiBpbiBieXRlY29kZToKICAgICAgICAgICAgICAg
ICAgICAgbGVuZ3RoID0gYnl0ZWNvZGVbImxlbmd0aCJdCisgICAgICAgICAgICAgICAgICAgIG1h
eExlbmd0aCA9IG1heChbbGVuZ3RoLCBtYXhMZW5ndGhdKQogCiAgICAgICAgICAgICAgICAgYnl0
ZWNvZGVIRmlsZS53cml0ZSgiICAgIG1hY3JvKHswfSwgezF9KSIuZm9ybWF0KGJ5dGVjb2RlWyJu
YW1lIl0sIGxlbmd0aCkpCiAgICAgICAgICAgICAgICAgZmlyc3RNYWNybyA9IEZhbHNlCkBAIC0y
MDEsNiArMjA1LDcgQEAgaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKIAogICAgICAgICAgICAg
Ynl0ZWNvZGVIRmlsZS53cml0ZSgiXG5cbiIpCiAgICAgICAgICAgICBieXRlY29kZUhGaWxlLndy
aXRlKCIjZGVmaW5lIE5VTUJFUl9PRl97MH1fSURTIHsxfVxuXG4iLmZvcm1hdChzZWN0aW9uWyJt
YWNyb05hbWVDb21wb25lbnQiXSwgYnl0ZWNvZGVOdW0pKQorICAgICAgICAgICAgYnl0ZWNvZGVI
RmlsZS53cml0ZSgiI2RlZmluZSBNQVhfT1BDT0RFX0xFTkdUSF9PRl97MH0gezF9XG5cbiIuZm9y
bWF0KHNlY3Rpb25bIm1hY3JvTmFtZUNvbXBvbmVudCJdLCBtYXhMZW5ndGgpKQogCiAgICAgICAg
IGlmIGluaXRBU01GaWxlTmFtZSBhbmQgc2VjdGlvblsnZW1pdEluQVNNRmlsZSddOgogICAgICAg
ICAgICAgcHJlZml4ID0gIiIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRl
cnByZXRlci9JbnRlcnByZXRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvSW50ZXJwcmV0ZXIuY3BwCmluZGV4IDFhYWYxNzcyM2ZlMWU4ODIwZjQ3N2FiMDg1NDg0YjVm
NWYyNzY3OTcuLjJmMGU2ZjJmYzdlOTk2NDNiY2EyYTlmNDQ4MDQ4ZWQ4NjZjMjhmYWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcApA
QCAtNjA5LDcgKzYwOSw3IEBAIEpTU3RyaW5nKiBJbnRlcnByZXRlcjo6c3RhY2tUcmFjZUFzU3Ry
aW5nKFZNJiB2bSwgY29uc3QgVmVjdG9yPFN0YWNrRnJhbWU+JiBzdGFjCiAgICAgcmV0dXJuIGpz
U3RyaW5nKCZ2bSwgYnVpbGRlci50b1N0cmluZygpKTsKIH0KIAotQUxXQVlTX0lOTElORSBzdGF0
aWMgSGFuZGxlckluZm8qIGZpbmRFeGNlcHRpb25IYW5kbGVyKFN0YWNrVmlzaXRvciYgdmlzaXRv
ciwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVCbG9jazo6UmVxdWlyZWRIYW5kbGVyIHJlcXVp
cmVkSGFuZGxlcikKK0FMV0FZU19JTkxJTkUgc3RhdGljIEhhbmRsZXJJbmZvKiBmaW5kRXhjZXB0
aW9uSGFuZGxlcihTdGFja1Zpc2l0b3ImIHZpc2l0b3IsIENvZGVCbG9jayogY29kZUJsb2NrLCBS
ZXF1aXJlZEhhbmRsZXIgcmVxdWlyZWRIYW5kbGVyKQogewogICAgIEFTU0VSVChjb2RlQmxvY2sp
OwogI2lmIEVOQUJMRShERkdfSklUKQpAQCAtNjQzLDcgKzY0Myw3IEBAIGNsYXNzIEdldENhdGNo
SGFuZGxlckZ1bmN0b3IgewogICAgICAgICBpZiAoIWNvZGVCbG9jaykKICAgICAgICAgICAgIHJl
dHVybiBTdGFja1Zpc2l0b3I6OkNvbnRpbnVlOwogCi0gICAgICAgIG1faGFuZGxlciA9IGZpbmRF
eGNlcHRpb25IYW5kbGVyKHZpc2l0b3IsIGNvZGVCbG9jaywgQ29kZUJsb2NrOjpSZXF1aXJlZEhh
bmRsZXI6OkNhdGNoSGFuZGxlcik7CisgICAgICAgIG1faGFuZGxlciA9IGZpbmRFeGNlcHRpb25I
YW5kbGVyKHZpc2l0b3IsIGNvZGVCbG9jaywgUmVxdWlyZWRIYW5kbGVyOjpDYXRjaEhhbmRsZXIp
OwogICAgICAgICBpZiAobV9oYW5kbGVyKQogICAgICAgICAgICAgcmV0dXJuIFN0YWNrVmlzaXRv
cjo6RG9uZTsKIApAQCAtNjg1LDcgKzY4NSw3IEBAIGNsYXNzIFVud2luZEZ1bmN0b3IgewogICAg
ICAgICBtX2hhbmRsZXIgPSBudWxscHRyOwogICAgICAgICBpZiAoIW1faXNUZXJtaW5hdGlvbikg
ewogICAgICAgICAgICAgaWYgKG1fY29kZUJsb2NrICYmICFpc1dlYkFzc2VtYmx5RXhlY3V0YWJs
ZShtX2NvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCkpKQotICAgICAgICAgICAgICAgIG1faGFu
ZGxlciA9IGZpbmRFeGNlcHRpb25IYW5kbGVyKHZpc2l0b3IsIG1fY29kZUJsb2NrLCBDb2RlQmxv
Y2s6OlJlcXVpcmVkSGFuZGxlcjo6QW55SGFuZGxlcik7CisgICAgICAgICAgICAgICAgbV9oYW5k
bGVyID0gZmluZEV4Y2VwdGlvbkhhbmRsZXIodmlzaXRvciwgbV9jb2RlQmxvY2ssIFJlcXVpcmVk
SGFuZGxlcjo6QW55SGFuZGxlcik7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAobV9oYW5kbGVy
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJl
dGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaApp
bmRleCA3OWM3ZTUzMDFiYTgzOTZiYzAyZGMyNDVlMDgxYzdmN2EzNzM4ZTZjLi4zZGYwMDY3NzZm
NjFhNGI1YjRiN2MyNDhlNzVjYWIxYThjMzA5MzA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaApAQCAtNjUsNiArNjUsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICBzdHJ1Y3QgSGFuZGxlckluZm87CiAgICAgc3RydWN0IEluc3RydWN0aW9u
OwogICAgIHN0cnVjdCBQcm90b0NhbGxGcmFtZTsKKyAgICBzdHJ1Y3QgVW5saW5rZWRJbnN0cnVj
dGlvbjsKIAogICAgIGVudW0gVW53aW5kU3RhcnQgeyBVbndpbmRGcm9tQ3VycmVudEZyYW1lLCBV
bndpbmRGcm9tQ2FsbGVyRnJhbWUgfTsKIApAQCAtMjA3LDcgKzIwOCwxMCBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgICAgIHJldHVybiBvcGNvZGU7CiAjZW5kaWYKICAgICAgICAgfQotICAg
ICAgICAKKworICAgICAgICBPcGNvZGVJRCBnZXRPcGNvZGVJRChjb25zdCBJbnN0cnVjdGlvbiYp
OworICAgICAgICBPcGNvZGVJRCBnZXRPcGNvZGVJRChjb25zdCBVbmxpbmtlZEluc3RydWN0aW9u
Jik7CisKICAgICAgICAgYm9vbCBpc09wY29kZShPcGNvZGUpOwogCiAgICAgICAgIEpTVmFsdWUg
ZXhlY3V0ZShQcm9ncmFtRXhlY3V0YWJsZSosIENhbGxGcmFtZSosIEpTT2JqZWN0KiB0aGlzT2Jq
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnBy
ZXRlcklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnBy
ZXRlcklubGluZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NmQwNzE0OGE1MmU2NWUzNzVmOTdlNmViYjkxYWRi
ZTFkZDQ1NjBkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL0ludGVycHJldGVySW5saW5lcy5oCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTYgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2luY2x1ZGUgIkluc3RydWN0aW9uLmgiCisjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKKyNpbmNs
dWRlICJVbmxpbmtlZENvZGVCbG9jay5oIgorCituYW1lc3BhY2UgSlNDIHsKKworaW5saW5lIE9w
Y29kZUlEIEludGVycHJldGVyOjpnZXRPcGNvZGVJRChjb25zdCBJbnN0cnVjdGlvbiYgaW5zdHJ1
Y3Rpb24pCit7CisgICAgcmV0dXJuIGdldE9wY29kZUlEKGluc3RydWN0aW9uLnUub3Bjb2RlKTsK
K30KKworaW5saW5lIE9wY29kZUlEIEludGVycHJldGVyOjpnZXRPcGNvZGVJRChjb25zdCBVbmxp
bmtlZEluc3RydWN0aW9uJiBpbnN0cnVjdGlvbikKK3sKKyAgICByZXR1cm4gaW5zdHJ1Y3Rpb24u
dS5vcGNvZGU7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQu
Y3BwCmluZGV4IGIwMGRmYWM4YzE1YzU0N2QyN2ZjNjY3ZjVjNDU5MGVkMzk5ZGVlNDAuLjEyNDA1
ZjdlNTA0YWIzODkzZGQ5N2Q3YTkyOTEzYjA5NWExMTU5MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVC5jcHAKQEAgLTIzNSw4ICsyMzUsNiBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWlu
UGFzcygpCiAgICAgICAgIERFRklORV9PUChvcF9nZXRfcmVzdF9sZW5ndGgpCiAgICAgICAgIERF
RklORV9PUChvcF9jaGVja190ZHopCiAgICAgICAgIERFRklORV9PUChvcF9hc3NlcnQpCi0gICAg
ICAgIERFRklORV9PUChvcF9zYXZlKQotICAgICAgICBERUZJTkVfT1Aob3BfcmVzdW1lKQogICAg
ICAgICBERUZJTkVfT1Aob3BfZGVidWcpCiAgICAgICAgIERFRklORV9PUChvcF9kZWxfYnlfaWQp
CiAgICAgICAgIERFRklORV9PUChvcF9kZWxfYnlfdmFsKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgK
aW5kZXggYmI5N2RjMzViZGZjMDMzOTlhYTA1MTNhOWNhNzM1NWQwODMxYzYwZC4uNTFmY2Y2MGI5
OWQ0MGIwZTUzZGJjZDIyM2M1NjkyMDI1ZjE0ZWNmMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5o
CkBAIC00OTcsOCArNDk3LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdF9v
cF9nZXRfcmVzdF9sZW5ndGgoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2No
ZWNrX3RkeihJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfYXNzZXJ0KEluc3Ry
dWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9zYXZlKEluc3RydWN0aW9uKik7Ci0gICAg
ICAgIHZvaWQgZW1pdF9vcF9yZXN1bWUoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0
X29wX2RlYnVnKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9kZWxfYnlfaWQo
SW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2RlbF9ieV92YWwoSW5zdHJ1Y3Rp
b24qKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCmluZGV4IDdmN2M3
NDUzYmQzZDJkNTBlMTgwMTgzZjI5NzMxMTVmMTE5ZDg1MmYuLjJkYmU4NmM2MjRiYzg3ZWJmNzBi
ODAxZTBhMmNjY2VmNjUxNWJhMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3Bjb2Rlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNv
ZGVzLmNwcApAQCAtMTQ5MiwxOCArMTQ5Miw2IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9yZXN0
X2xlbmd0aChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogI2VuZGlmCiB9CiAKLXZv
aWQgSklUOjplbWl0X29wX3NhdmUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKLXsK
LSAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlv
biwgc2xvd19wYXRoX3NhdmUpOwotICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7Ci19Ci0KLXZvaWQg
SklUOjplbWl0X29wX3Jlc3VtZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQotewot
ICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9u
LCBzbG93X3BhdGhfcmVzdW1lKTsKLSAgICBzbG93UGF0aENhbGwuY2FsbCgpOwotfQotCiB9IC8v
IG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEVOQUJMRShKSVQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KaW5kZXggMTQ5MThi
NjU1ZDVjZmEyMmI4NjE1OGViMmVlYWFmMDg3NDk2NTZhNy4uYzlmOTY4Nzk1OGQwNmQzMDYwY2Y2
OWZlMzc4OWQxYmQwYmY4Yzc5YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQpAQCAtMTcwOSwxNiArMTcwOSw4IEBAIF9sbGlu
dF9vcF9hc3NlcnQ6CiAgICAgZGlzcGF0Y2goMykKIAogCi1fbGxpbnRfb3Bfc2F2ZToKLSAgICB0
cmFjZUV4ZWN1dGlvbigpCi0gICAgY2FsbE9wY29kZVNsb3dQYXRoKF9zbG93X3BhdGhfc2F2ZSkK
LSAgICBkaXNwYXRjaCg0KQotCi0KLV9sbGludF9vcF9yZXN1bWU6Ci0gICAgdHJhY2VFeGVjdXRp
b24oKQotICAgIGNhbGxPcGNvZGVTbG93UGF0aChfc2xvd19wYXRoX3Jlc3VtZSkKLSAgICBkaXNw
YXRjaCgzKQorX2xsaW50X29wX3lpZWxkOgorICAgIG5vdFN1cHBvcnRlZCgpCiAKIAogX2xsaW50
X29wX2NyZWF0ZV9sZXhpY2FsX2Vudmlyb25tZW50OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9QYXJzZXIuY3BwCmluZGV4IGViZWE5OGU0ZWUxM2ZhMTJiZTA5NmJhOTJmNGQ0MTllMzRjZWQx
NzAuLjI2MTc0NWExOTAzMTdkZTc1OTEyZTNhOTIzZmE5ZjI4ODc0ODYzZDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKQEAgLTI2MCw3ICsyNjAsNyBAQCBTdHJpbmcg
UGFyc2VyPExleGVyVHlwZT46OnBhcnNlSW5uZXIoY29uc3QgSWRlbnRpZmllciYgY2FsbGVlTmFt
ZSwgU291cmNlUGFyc2VNbwogICAgIGlmIChtX2xleGVyLT5pc1JlcGFyc2luZ0Z1bmN0aW9uKCkp
IHsKICAgICAgICAgUGFyc2VyRnVuY3Rpb25JbmZvPEFTVEJ1aWxkZXI+IGZ1bmN0aW9uSW5mbzsK
ICAgICAgICAgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckJvZHlN
b2RlKQotICAgICAgICAgICAgbV9wYXJhbWV0ZXJzID0gY3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVy
cyhjb250ZXh0KTsKKyAgICAgICAgICAgIG1fcGFyYW1ldGVycyA9IGNyZWF0ZUdlbmVyYXRvclBh
cmFtZXRlcnMoY29udGV4dCwgZnVuY3Rpb25JbmZvLnBhcmFtZXRlckNvdW50KTsKICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgbV9wYXJhbWV0ZXJzID0gcGFyc2VGdW5jdGlvblBhcmFtZXRlcnMo
Y29udGV4dCwgcGFyc2VNb2RlLCBmdW5jdGlvbkluZm8pOwogCkBAIC01MTIsMTAgKzUxMiw5IEBA
IHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVNvdXJjZUVsZW1lbnRzIFBhcnNlcjxM
ZXhlclR5cGU+OjpwYXJzZUdlbmVyYXRvCiAKICAgICBQYXJzZXJGdW5jdGlvbkluZm88VHJlZUJ1
aWxkZXI+IGluZm87CiAgICAgaW5mby5uYW1lID0gJm1fdm0tPnByb3BlcnR5TmFtZXMtPm51bGxJ
ZGVudGlmaWVyOwotICAgIGNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMoY29udGV4dCk7CisgICAg
Y3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhjb250ZXh0LCBpbmZvLnBhcmFtZXRlckNvdW50KTsK
ICAgICBpbmZvLnN0YXJ0T2Zmc2V0ID0gcGFyYW1ldGVyc1N0YXJ0OwogICAgIGluZm8uc3RhcnRM
aW5lID0gdG9rZW5MaW5lKCk7Ci0gICAgaW5mby5wYXJhbWV0ZXJDb3VudCA9IDQ7IC8vIGdlbmVy
YXRvciwgc3RhdGUsIHZhbHVlLCByZXN1bWUgbW9kZQogCiAgICAgewogICAgICAgICBBdXRvUG9w
U2NvcGVSZWYgZ2VuZXJhdG9yQm9keVNjb3BlKHRoaXMsIHB1c2hTY29wZSgpKTsKQEAgLTE5MDMs
MzIgKzE5MDIsMzAgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4gdGVtcGxhdGUgPGNs
YXNzIFRyZWVCdWlsZGVyLCBjbGFzcyBGdW5jdGlvbkluZm9UeXAKIH0KIAogdGVtcGxhdGUgPHR5
cGVuYW1lIExleGVyVHlwZT4KLXRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gdHlwZW5hbWUg
VHJlZUJ1aWxkZXI6OkZvcm1hbFBhcmFtZXRlckxpc3QgUGFyc2VyPExleGVyVHlwZT46OmNyZWF0
ZUdlbmVyYXRvclBhcmFtZXRlcnMoVHJlZUJ1aWxkZXImIGNvbnRleHQpCit0ZW1wbGF0ZSA8Y2xh
c3MgVHJlZUJ1aWxkZXI+IHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpGb3JtYWxQYXJhbWV0ZXJMaXN0
IFBhcnNlcjxMZXhlclR5cGU+OjpjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKFRyZWVCdWlsZGVy
JiBjb250ZXh0LCB1bnNpZ25lZCYgcGFyYW1ldGVyQ291bnQpCiB7CiAgICAgYXV0byBwYXJhbWV0
ZXJzID0gY29udGV4dC5jcmVhdGVGb3JtYWxQYXJhbWV0ZXJMaXN0KCk7CiAKICAgICBKU1Rva2Vu
TG9jYXRpb24gbG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKICAgICBKU1RleHRQb3NpdGlvbiBw
b3NpdGlvbiA9IHRva2VuU3RhcnRQb3NpdGlvbigpOwogCi0gICAgLy8gQGdlbmVyYXRvcgotICAg
IGRlY2xhcmVQYXJhbWV0ZXIoJm1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdl
bmVyYXRvclByaXZhdGVOYW1lKCkpOwotICAgIGF1dG8gZ2VuZXJhdG9yID0gY29udGV4dC5jcmVh
dGVCaW5kaW5nTG9jYXRpb24obG9jYXRpb24sIG1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5O
YW1lcygpLmdlbmVyYXRvclByaXZhdGVOYW1lKCksIHBvc2l0aW9uLCBwb3NpdGlvbiwgQXNzaWdu
bWVudENvbnRleHQ6OkRlY2xhcmF0aW9uU3RhdGVtZW50KTsKLSAgICBjb250ZXh0LmFwcGVuZFBh
cmFtZXRlcihwYXJhbWV0ZXJzLCBnZW5lcmF0b3IsIDApOworICAgIGF1dG8gYWRkUGFyYW1ldGVy
ID0gWyZdKGNvbnN0IElkZW50aWZpZXImIG5hbWUpIHsKKyAgICAgICAgZGVjbGFyZVBhcmFtZXRl
cigmbmFtZSk7CisgICAgICAgIGF1dG8gYmluZGluZyA9IGNvbnRleHQuY3JlYXRlQmluZGluZ0xv
Y2F0aW9uKGxvY2F0aW9uLCBuYW1lLCBwb3NpdGlvbiwgcG9zaXRpb24sIEFzc2lnbm1lbnRDb250
ZXh0OjpEZWNsYXJhdGlvblN0YXRlbWVudCk7CisgICAgICAgIGNvbnRleHQuYXBwZW5kUGFyYW1l
dGVyKHBhcmFtZXRlcnMsIGJpbmRpbmcsIDApOworICAgICAgICArK3BhcmFtZXRlckNvdW50Owor
ICAgIH07CiAKKyAgICAvLyBAZ2VuZXJhdG9yCisgICAgYWRkUGFyYW1ldGVyKG1fdm0tPnByb3Bl
cnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclByaXZhdGVOYW1lKCkpOwogICAgIC8v
IEBnZW5lcmF0b3JTdGF0ZQotICAgIGRlY2xhcmVQYXJhbWV0ZXIoJm1fdm0tPnByb3BlcnR5TmFt
ZXMtPmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclN0YXRlUHJpdmF0ZU5hbWUoKSk7Ci0gICAgYXV0
byBnZW5lcmF0b3JTdGF0ZSA9IGNvbnRleHQuY3JlYXRlQmluZGluZ0xvY2F0aW9uKGxvY2F0aW9u
LCBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JTdGF0ZVByaXZh
dGVOYW1lKCksIHBvc2l0aW9uLCBwb3NpdGlvbiwgQXNzaWdubWVudENvbnRleHQ6OkRlY2xhcmF0
aW9uU3RhdGVtZW50KTsKLSAgICBjb250ZXh0LmFwcGVuZFBhcmFtZXRlcihwYXJhbWV0ZXJzLCBn
ZW5lcmF0b3JTdGF0ZSwgMCk7Ci0KKyAgICBhZGRQYXJhbWV0ZXIobV92bS0+cHJvcGVydHlOYW1l
cy0+YnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yU3RhdGVQcml2YXRlTmFtZSgpKTsKICAgICAvLyBA
Z2VuZXJhdG9yVmFsdWUKLSAgICBkZWNsYXJlUGFyYW1ldGVyKCZtX3ZtLT5wcm9wZXJ0eU5hbWVz
LT5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JWYWx1ZVByaXZhdGVOYW1lKCkpOwotICAgIGF1dG8g
Z2VuZXJhdG9yVmFsdWUgPSBjb250ZXh0LmNyZWF0ZUJpbmRpbmdMb2NhdGlvbihsb2NhdGlvbiwg
bV92bS0+cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yVmFsdWVQcml2YXRl
TmFtZSgpLCBwb3NpdGlvbiwgcG9zaXRpb24sIEFzc2lnbm1lbnRDb250ZXh0OjpEZWNsYXJhdGlv
blN0YXRlbWVudCk7Ci0gICAgY29udGV4dC5hcHBlbmRQYXJhbWV0ZXIocGFyYW1ldGVycywgZ2Vu
ZXJhdG9yVmFsdWUsIDApOwotCisgICAgYWRkUGFyYW1ldGVyKG1fdm0tPnByb3BlcnR5TmFtZXMt
PmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclZhbHVlUHJpdmF0ZU5hbWUoKSk7CiAgICAgLy8gQGdl
bmVyYXRvclJlc3VtZU1vZGUKLSAgICBkZWNsYXJlUGFyYW1ldGVyKCZtX3ZtLT5wcm9wZXJ0eU5h
bWVzLT5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JSZXN1bWVNb2RlUHJpdmF0ZU5hbWUoKSk7Ci0g
ICAgYXV0byBnZW5lcmF0b3JSZXN1bWVNb2RlID0gY29udGV4dC5jcmVhdGVCaW5kaW5nTG9jYXRp
b24obG9jYXRpb24sIG1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRv
clJlc3VtZU1vZGVQcml2YXRlTmFtZSgpLCBwb3NpdGlvbiwgcG9zaXRpb24sIEFzc2lnbm1lbnRD
b250ZXh0OjpEZWNsYXJhdGlvblN0YXRlbWVudCk7Ci0gICAgY29udGV4dC5hcHBlbmRQYXJhbWV0
ZXIocGFyYW1ldGVycywgZ2VuZXJhdG9yUmVzdW1lTW9kZSwgMCk7CisgICAgYWRkUGFyYW1ldGVy
KG1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclJlc3VtZU1vZGVQ
cml2YXRlTmFtZSgpKTsKKyAgICAvLyBAZ2VuZXJhdG9yRnJhbWUKKyAgICBhZGRQYXJhbWV0ZXIo
bV92bS0+cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yRnJhbWVQcml2YXRl
TmFtZSgpKTsKIAogICAgIHJldHVybiBwYXJhbWV0ZXJzOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvUGFyc2VyLmgKaW5kZXggMzkyMDQwNGU4YmE1MjBiMjJlNGVjZDI3NzgxYzEzZGY4MTkw
NzQzMy4uNTBlMTM5MWI1ZmQwM2RkNWU3NzhiOGZkYjU5MjNhYTc5OGFlZDEyMyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCkBAIC0xNDI2LDcgKzE0MjYsNyBAQCBjbGFzcyBQ
YXJzZXIgewogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc0Fycm93RnVuY3Rpb25QYXJhbWV0ZXJz
KCk7CiAgICAgCiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyLCBjbGFzcyBGdW5jdGlv
bkluZm9UeXBlPiBORVZFUl9JTkxJTkUgdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkZvcm1hbFBhcmFt
ZXRlckxpc3QgcGFyc2VGdW5jdGlvblBhcmFtZXRlcnMoVHJlZUJ1aWxkZXImLCBTb3VyY2VQYXJz
ZU1vZGUsIEZ1bmN0aW9uSW5mb1R5cGUmKTsKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxk
ZXI+IE5FVkVSX0lOTElORSB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6Rm9ybWFsUGFyYW1ldGVyTGlz
dCBjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKFRyZWVCdWlsZGVyJik7CisgICAgdGVtcGxhdGUg
PGNsYXNzIFRyZWVCdWlsZGVyPiBORVZFUl9JTkxJTkUgdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkZv
cm1hbFBhcmFtZXRlckxpc3QgY3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhUcmVlQnVpbGRlciYs
IHVuc2lnbmVkJiBwYXJhbWV0ZXJDb3VudCk7CiAKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1
aWxkZXI+IE5FVkVSX0lOTElORSBUcmVlQ2xhc3NFeHByZXNzaW9uIHBhcnNlQ2xhc3MoVHJlZUJ1
aWxkZXImLCBGdW5jdGlvbk5hbWVSZXF1aXJlbWVudHMsIFBhcnNlckNsYXNzSW5mbzxUcmVlQnVp
bGRlcj4mKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
bW9uU2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNs
b3dQYXRocy5jcHAKaW5kZXggYTliNzU1ZTZjOWFlOWI5OGE2MjI5MzU0NmVlNTdjYTgxZWM5YzMy
Yy4uMmU4NjhkY2IyZDcxZmU3Y2YyOGU5NTBmMDVjNzU4YmE4MDVjYzMyNiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCkBAIC0zNyw3
ICszNyw2IEBACiAjaW5jbHVkZSAiRXJyb3IuaCIKICNpbmNsdWRlICJFcnJvckhhbmRsaW5nU2Nv
cGUuaCIKICNpbmNsdWRlICJFeGNlcHRpb25GdXp6LmgiCi0jaW5jbHVkZSAiR2VuZXJhdG9yRnJh
bWUuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJIb3N0Q2FsbFJldHVy
blZhbHVlLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKQEAgLTc1MywzOCArNzUyLDYgQEAg
U0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2Fzc2VydCkKICAgICBFTkQoKTsKIH0KIAotU0xPV19Q
QVRIX0RFQ0woc2xvd19wYXRoX3NhdmUpCi17Ci0gICAgLy8gT25seSBzYXZlIHZhcmlhYmxlcyBh
bmQgdGVtcG9yYXJ5IHJlZ2lzdGVycy4gVGhlIHNjb3BlIHJlZ2lzdGVycyBhcmUgaW5jbHVkZWQg
aW4gdGhlbS4KLSAgICAvLyBCdXQgcGFyYW1ldGVycyBhcmUgbm90IGluY2x1ZGVkLiBCZWNhdXNl
IHRoZSBnZW5lcmF0b3IgaW1wbGVtZW50YXRpb24gcmVwbGFjZXMgdGhlIHZhbHVlcyBvZiBwYXJh
bWV0ZXJzIG9uIGVhY2ggZ2VuZXJhdG9yLm5leHQoKSBjYWxsLgotICAgIEJFR0lOKCk7Ci0gICAg
SlNWYWx1ZSBnZW5lcmF0b3IgPSBPUCgxKS5qc1ZhbHVlKCk7Ci0gICAgR2VuZXJhdG9yRnJhbWUq
IGZyYW1lID0gbnVsbHB0cjsKLSAgICBKU1ZhbHVlIHZhbHVlID0gZ2VuZXJhdG9yLmdldChleGVj
LCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yRnJhbWVQcml2
YXRlTmFtZSgpKTsKLSAgICBpZiAoIXZhbHVlLmlzTnVsbCgpKQotICAgICAgICBmcmFtZSA9IGpz
Q2FzdDxHZW5lcmF0b3JGcmFtZSo+KHZhbHVlKTsKLSAgICBlbHNlIHsKLSAgICAgICAgLy8gRklY
TUU6IE9uY2UgSlNHZW5lcmF0b3Igc3BlY2lhbGl6ZWQgb2JqZWN0IGlzIGludHJvZHVjZWQsIHRo
aXMgR2VuZXJhdG9yRnJhbWUgc2hvdWxkIGJlIGVtYmVkZWQgaW50byBpdCB0byBhdm9pZCBhbGxv
Y2F0aW9ucy4KLSAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1MTU0NQotICAgICAgICBmcmFtZSA9IEdlbmVyYXRvckZyYW1lOjpjcmVhdGUoZXhlYy0+
dm0oKSwgIGV4ZWMtPmNvZGVCbG9jaygpLT5udW1DYWxsZWVMb2NhbHMoKSk7Ci0gICAgICAgIFB1
dFByb3BlcnR5U2xvdCBzbG90KGdlbmVyYXRvciwgdHJ1ZSwgUHV0UHJvcGVydHlTbG90OjpQdXRC
eUlkKTsKLSAgICAgICAgYXNPYmplY3QoZ2VuZXJhdG9yKS0+bWV0aG9kVGFibGUoZXhlYy0+dm0o
KSktPnB1dChhc09iamVjdChnZW5lcmF0b3IpLCBleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCku
YnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yRnJhbWVQcml2YXRlTmFtZSgpLCBmcmFtZSwgc2xvdCk7
Ci0gICAgfQotICAgIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9IHBjWzJdLnUudW5z
aWduZWRWYWx1ZTsKLSAgICBmcmFtZS0+c2F2ZShleGVjLCBleGVjLT5jb2RlQmxvY2soKS0+bGl2
ZUNhbGxlZUxvY2Fsc0F0WWllbGQobGl2ZUNhbGxlZUxvY2Fsc0luZGV4KSk7Ci0gICAgRU5EKCk7
Ci19Ci0KLVNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9yZXN1bWUpCi17Ci0gICAgQkVHSU4oKTsK
LSAgICBKU1ZhbHVlIGdlbmVyYXRvciA9IE9QKDEpLmpzVmFsdWUoKTsKLSAgICBHZW5lcmF0b3JG
cmFtZSogZnJhbWUgPSBqc0Nhc3Q8R2VuZXJhdG9yRnJhbWUqPihnZW5lcmF0b3IuZ2V0KGV4ZWMs
IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JGcmFtZVByaXZh
dGVOYW1lKCkpKTsKLSAgICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSBwY1syXS51
LnVuc2lnbmVkVmFsdWU7Ci0gICAgZnJhbWUtPnJlc3VtZShleGVjLCBleGVjLT5jb2RlQmxvY2so
KS0+bGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQobGl2ZUNhbGxlZUxvY2Fsc0luZGV4KSk7Ci0gICAg
RU5EKCk7Ci19Ci0KIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9jcmVhdGVfbGV4aWNhbF9lbnZp
cm9ubWVudCkKIHsKICAgICBCRUdJTigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db21tb25TbG93UGF0aHMuaAppbmRleCA2NDAxYTYxNGQ1NjExNjYzNTY5YjE4YTAyNzJi
MjhhYzM1Mjg2YTgyLi4zZDljMTVmNWFmMGM3NTdkZGExMDUzMzkxOTkwZjU0NjM4ODY4MWI1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaApA
QCAtMjQ4LDggKzI0OCw2IEBAIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfbmV4dF9n
ZW5lcmljX2VudW1lcmF0b3JfcG5hbWUpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0
aF90b19pbmRleF9zdHJpbmcpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9wcm9m
aWxlX3R5cGVfY2xlYXJfbG9nKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfYXNz
ZXJ0KTsKLVNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfc2F2ZSk7Ci1TTE9XX1BBVEhf
SElEREVOX0RFQ0woc2xvd19wYXRoX3Jlc3VtZSk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xv
d19wYXRoX2NyZWF0ZV9sZXhpY2FsX2Vudmlyb25tZW50KTsKIFNMT1dfUEFUSF9ISURERU5fREVD
TChzbG93X3BhdGhfcHVzaF93aXRoX3Njb3BlKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93
X3BhdGhfcmVzb2x2ZV9zY29wZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9HZW5lcmF0b3JGcmFtZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9HZW5lcmF0b3JGcmFtZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVmNmVh
N2ExMDAyNThjM2VjZTA0ZGFhYjQzYmRhYTg1MWVjOGY3MTUuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
R2VuZXJhdG9yRnJhbWUuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsOTcgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiR2VuZXJhdG9yRnJh
bWUuaCIKLQotI2luY2x1ZGUgIkNvZGVCbG9jay5oIgotI2luY2x1ZGUgIkhlYXBJdGVyYXRpb25T
Y29wZS5oIgotI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCi0jaW5jbHVkZSAiSlNDZWxs
SW5saW5lcy5oIgotI2luY2x1ZGUgIlNsb3RWaXNpdG9ySW5saW5lcy5oIgotI2luY2x1ZGUgIlN0
cnVjdHVyZUlubGluZXMuaCIKLQotbmFtZXNwYWNlIEpTQyB7Ci0KLWNvbnN0IENsYXNzSW5mbyBH
ZW5lcmF0b3JGcmFtZTo6c19pbmZvID0geyAiR2VuZXJhdG9yRnJhbWUiLCBudWxscHRyLCBudWxs
cHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEdlbmVyYXRvckZyYW1lKSB9OwotCi1HZW5lcmF0b3JG
cmFtZTo6R2VuZXJhdG9yRnJhbWUoVk0mIHZtLCBzaXplX3QgbnVtYmVyT2ZDYWxsZWVMb2NhbHMp
Ci0gICAgOiBCYXNlKHZtLCB2bS5nZW5lcmF0b3JGcmFtZVN0cnVjdHVyZS5nZXQoKSkKLSAgICAs
IG1fbnVtYmVyT2ZDYWxsZWVMb2NhbHMobnVtYmVyT2ZDYWxsZWVMb2NhbHMpCi17Ci19Ci0KLXZv
aWQgR2VuZXJhdG9yRnJhbWU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKLXsKLSAgICBCYXNlOjpm
aW5pc2hDcmVhdGlvbih2bSk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX251bWJlck9m
Q2FsbGVlTG9jYWxzOyArK2kpCi0gICAgICAgIGxvY2FsQXQoaSkuY2xlYXIoKTsKLX0KLQotU3Ry
dWN0dXJlKiBHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCi17Ci0gICAgcmV0dXJuIFN0
cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oQ2Vs
bFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKLX0KLQotR2VuZXJhdG9yRnJhbWUqIEdl
bmVyYXRvckZyYW1lOjpjcmVhdGUoVk0mIHZtLCBzaXplX3QgbnVtYmVyT2ZMb2NhbHMpCi17Ci0g
ICAgR2VuZXJhdG9yRnJhbWUqIHJlc3VsdCA9Ci0gICAgICAgIG5ldyAoCi0gICAgICAgICAgICBO
b3ROdWxsLAotICAgICAgICAgICAgYWxsb2NhdGVDZWxsPEdlbmVyYXRvckZyYW1lPih2bS5oZWFw
LCBhbGxvY2F0aW9uU2l6ZUZvckxvY2FscyhudW1iZXJPZkxvY2FscykpKQotICAgICAgICBHZW5l
cmF0b3JGcmFtZSh2bSwgbnVtYmVyT2ZMb2NhbHMpOwotICAgIHJlc3VsdC0+ZmluaXNoQ3JlYXRp
b24odm0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLXZvaWQgR2VuZXJhdG9yRnJhbWU6OnNh
dmUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlQ2FsbGVlTG9jYWxz
KQotewotICAgIC8vIE9ubHkgc2F2ZSBjYWxsZWUgbG9jYWxzLgotICAgIC8vIEV2ZXJ5IHRpbWUg
YSBnZW5lcmF0b3IgaXMgY2FsbGVkIChvciByZXN1bWVkKSwgcGFyYW1ldGVycyBzaG91bGQgYmUg
cmVwbGFjZWQuCi0gICAgQVNTRVJUKGxpdmVDYWxsZWVMb2NhbHMubnVtQml0cygpIDw9IG1fbnVt
YmVyT2ZDYWxsZWVMb2NhbHMpOwotICAgIGxpdmVDYWxsZWVMb2NhbHMuZm9yRWFjaFNldEJpdChb
Jl0oc2l6ZV90IGluZGV4KSB7Ci0gICAgICAgIGxvY2FsQXQoaW5kZXgpLnNldChleGVjLT52bSgp
LCB0aGlzLCBleGVjLT51bmNoZWNrZWRSKHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGluZGV4KSku
anNWYWx1ZSgpKTsKLSAgICB9KTsKLX0KLQotdm9pZCBHZW5lcmF0b3JGcmFtZTo6cmVzdW1lKEV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZUNhbGxlZUxvY2FscykKLXsK
LSAgICAvLyBPbmx5IHJlc3VtZSBjYWxsZWUgbG9jYWxzLgotICAgIC8vIEV2ZXJ5IHRpbWUgYSBn
ZW5lcmF0b3IgaXMgY2FsbGVkIChvciByZXN1bWVkKSwgcGFyYW1ldGVycyBzaG91bGQgYmUgcmVw
bGFjZWQuCi0gICAgbGl2ZUNhbGxlZUxvY2Fscy5mb3JFYWNoU2V0Qml0KFsmXShzaXplX3QgaW5k
ZXgpIHsKLSAgICAgICAgZXhlYy0+dW5jaGVja2VkUih2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChp
bmRleCkpID0gbG9jYWxBdChpbmRleCkuZ2V0KCk7Ci0gICAgICAgIGxvY2FsQXQoaW5kZXgpLmNs
ZWFyKCk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgR2VuZXJhdG9yRnJhbWU6OnZpc2l0Q2hpbGRyZW4o
SlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKLXsKLSAgICBHZW5lcmF0b3JGcmFt
ZSogdGhpc09iamVjdCA9IGpzQ2FzdDxHZW5lcmF0b3JGcmFtZSo+KGNlbGwpOwotICAgIEJhc2U6
OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7Ci0gICAgLy8gU2luY2Ugb25seSB0
cnVlIGNlbGwgcG9pbnRlcnMgYXJlIHN0b3JlZCBhcyBhIGNlbGwsIHdlIGNhbiBzYWZlbHkgbWFy
ayB0aGVtLgotICAgIHZpc2l0b3IuYXBwZW5kVmFsdWVzKHRoaXNPYmplY3QtPmxvY2FscygpLCB0
aGlzT2JqZWN0LT5tX251bWJlck9mQ2FsbGVlTG9jYWxzKTsKLX0KLQotfSAvLyBuYW1lc3BhY2Ug
SlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JG
cmFtZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJhbWUuaApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2Q1NDViMTQ3ZGQ0YWJmYjJiYmI5YjVhNzE5
NGU4Zjc0ODQxYzQ5YS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGcmFtZS5oCisrKyAv
ZGV2L251bGwKQEAgLTEsOTAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1
a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIEdl
bmVyYXRvckZyYW1lX2gKLSNkZWZpbmUgR2VuZXJhdG9yRnJhbWVfaAotCi0jaW5jbHVkZSAiSlND
ZWxsLmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RCaXRWZWN0b3IuaD4KLQotbmFtZXNwYWNlIEpTQyB7
Ci0KLWNsYXNzIEdlbmVyYXRvckZyYW1lIDogcHVibGljIEpTQ2VsbCB7Ci0gICAgZnJpZW5kIGNs
YXNzIEpJVDsKLSNpZiBFTkFCTEUoREZHX0pJVCkKLSAgICBmcmllbmQgY2xhc3MgREZHOjpTcGVj
dWxhdGl2ZUpJVDsKLSAgICBmcmllbmQgY2xhc3MgREZHOjpKSVRDb21waWxlcjsKLSNlbmRpZgot
ICAgIGZyaWVuZCBjbGFzcyBWTTsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOwot
ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IFN0cnVjdHVyZUlzSW1t
b3J0YWwgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKLQotICAgIERFQ0xBUkVfRVhQT1JUX0lORk87
Ci0KLSAgICBzdGF0aWMgR2VuZXJhdG9yRnJhbWUqIGNyZWF0ZShWTSYsIHNpemVfdCBudW1iZXJP
ZkNhbGxlZUxvY2Fscyk7Ci0KLSAgICBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiBsb2NhbHMo
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxXcml0ZUJhcnJpZXJCYXNlPFVu
a25vd24+Kj4oYml0d2lzZV9jYXN0PGNoYXIqPih0aGlzKSArIG9mZnNldE9mTG9jYWxzKCkpOwot
ICAgIH0KLQotICAgIFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4mIGxvY2FsQXQoc2l6ZV90IGlu
ZGV4KQotICAgIHsKLSAgICAgICAgQVNTRVJUKGluZGV4IDwgbV9udW1iZXJPZkNhbGxlZUxvY2Fs
cyk7Ci0gICAgICAgIHJldHVybiBsb2NhbHMoKVtpbmRleF07Ci0gICAgfQotCi0gICAgc3RhdGlj
IHNpemVfdCBvZmZzZXRPZkxvY2FscygpCi0gICAgewotICAgICAgICByZXR1cm4gV1RGOjpyb3Vu
ZFVwVG9NdWx0aXBsZU9mPHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pPihzaXplb2YoR2Vu
ZXJhdG9yRnJhbWUpKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgc2l6ZV90IGFsbG9jYXRpb25TaXpl
Rm9yTG9jYWxzKHVuc2lnbmVkIG51bWJlck9mTG9jYWxzKQotICAgIHsKLSAgICAgICAgcmV0dXJu
IG9mZnNldE9mTG9jYWxzKCkgKyBudW1iZXJPZkxvY2FscyAqIHNpemVvZihXcml0ZUJhcnJpZXI8
VW5rbm93bj4pOwotICAgIH0KLQotICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVy
ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBwcm90b3R5cGUpOwotCi0gICAgdm9pZCBz
YXZlKEV4ZWNTdGF0ZSosIGNvbnN0IEZhc3RCaXRWZWN0b3ImIGxpdmVDYWxsZWVMb2NhbHMpOwot
ICAgIHZvaWQgcmVzdW1lKEV4ZWNTdGF0ZSosIGNvbnN0IEZhc3RCaXRWZWN0b3ImIGxpdmVDYWxs
ZWVMb2NhbHMpOwotCi1wcml2YXRlOgotICAgIEdlbmVyYXRvckZyYW1lKFZNJiwgc2l6ZV90IG51
bWJlck9mQ2FsbGVlTG9jYWxzKTsKLQotICAgIHNpemVfdCBtX251bWJlck9mQ2FsbGVlTG9jYWxz
OwotCi0gICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKLQotICAgIHZvaWQg
ZmluaXNoQ3JlYXRpb24oVk0mKTsKLQotcHJvdGVjdGVkOgotICAgIHN0YXRpYyB2b2lkIHZpc2l0
Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEpT
QwotCi0jZW5kaWYgLy8gR2VuZXJhdG9yRnJhbWVfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0b3JGdW5jdGlvbi5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0b3JGdW5jdGlvbi5oCmluZGV4IDM2ZjYxYzVmMjBmNTZi
ZWZkNmM1NTc4NDJiMTllMzliMTlhM2E5MTkuLmExY2JhZDk0NmRjNTY4MjllZDFhMjE1NTc5MGI0
NDBhOGRmNDMwMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2VuZXJhdG9yRnVuY3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dlbmVyYXRvckZ1bmN0aW9uLmgKQEAgLTU1LDYgKzU1LDE2IEBAIGNsYXNzIEpTR2VuZXJhdG9y
RnVuY3Rpb24gOiBwdWJsaWMgSlNGdW5jdGlvbiB7CiAgICAgICAgIEV4ZWN1dGluZyA9IC0yLAog
ICAgIH07CiAKKyAgICAvLyBbdGhpc10sIEBnZW5lcmF0b3IsIEBnZW5lcmF0b3JTdGF0ZSwgQGdl
bmVyYXRvclZhbHVlLCBAZ2VuZXJhdG9yUmVzdW1lTW9kZSwgQGdlbmVyYXRvckZyYW1lLgorICAg
IGVudW0gY2xhc3MgR2VuZXJhdG9yQXJndW1lbnQgOiBpbnQzMl90IHsKKyAgICAgICAgVGhpc1Zh
bHVlID0gMCwKKyAgICAgICAgR2VuZXJhdG9yID0gMSwKKyAgICAgICAgU3RhdGUgPSAyLAorICAg
ICAgICBWYWx1ZSA9IDMsCisgICAgICAgIFJlc3VtZU1vZGUgPSA0LAorICAgICAgICBGcmFtZSA9
IDUsCisgICAgfTsKKwogICAgIGNvbnN0IHN0YXRpYyB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9
IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwogCiAgICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCA4ODEzMWJmNWIzMDkwYWJkYWU0Yjk5NDUx
YjQxNzFjYjVmZTJjNDVjLi5jMzAxMjJjNWFmMzNjODA3ZmU5YTY1YTE4ZmU2Zjg1NDcwZWQwYTZl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC00Niw3ICs0Niw2IEBACiAj
aW5jbHVkZSAiRlRMVGh1bmtzLmgiCiAjaW5jbHVkZSAiRnVuY3Rpb25Db25zdHJ1Y3Rvci5oIgog
I2luY2x1ZGUgIkdDQWN0aXZpdHlDYWxsYmFjay5oIgotI2luY2x1ZGUgIkdlbmVyYXRvckZyYW1l
LmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiSGVhcC5oIgogI2luY2x1
ZGUgIkhlYXBJdGVyYXRpb25TY29wZS5oIgpAQCAtMjQwLDcgKzIzOSw2IEBAIFZNOjpWTShWTVR5
cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICBpbmZlcnJlZFR5cGVTdHJ1Y3R1cmUu
c2V0KCp0aGlzLCBJbmZlcnJlZFR5cGU6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxs
KCkpKTsKICAgICBpbmZlcnJlZFR5cGVUYWJsZVN0cnVjdHVyZS5zZXQoKnRoaXMsIEluZmVycmVk
VHlwZVRhYmxlOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgZnVu
Y3Rpb25SYXJlRGF0YVN0cnVjdHVyZS5zZXQoKnRoaXMsIEZ1bmN0aW9uUmFyZURhdGE6OmNyZWF0
ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKLSAgICBnZW5lcmF0b3JGcmFtZVN0cnVj
dHVyZS5zZXQoKnRoaXMsIEdlbmVyYXRvckZyYW1lOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAs
IGpzTnVsbCgpKSk7CiAgICAgZXhjZXB0aW9uU3RydWN0dXJlLnNldCgqdGhpcywgRXhjZXB0aW9u
OjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgcHJvbWlzZURlZmVy
cmVkU3RydWN0dXJlLnNldCgqdGhpcywgSlNQcm9taXNlRGVmZXJyZWQ6OmNyZWF0ZVN0cnVjdHVy
ZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICBpbnRlcm5hbFByb21pc2VEZWZlcnJlZFN0cnVj
dHVyZS5zZXQoKnRoaXMsIEpTSW50ZXJuYWxQcm9taXNlRGVmZXJyZWQ6OmNyZWF0ZVN0cnVjdHVy
ZSgqdGhpcywgMCwganNOdWxsKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCmluZGV4
IDg3YmQwZTBhMjU1MzhlOGM1ZWMzMmFiZTQwMzJjNDY5N2ViMWQwOGYuLjkxNTBiNTE1OWVlZGNh
ZDE4NTY0NWNkYTZjNzMwYjQ5MGVkM2U2NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0u
aApAQCAtMzIwLDcgKzMyMCw2IEBAIGNsYXNzIFZNIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3Vu
dGVkPFZNPiB7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gaW5mZXJyZWRUeXBlU3RydWN0dXJlOwog
ICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGluZmVycmVkVHlwZVRhYmxlU3RydWN0dXJlOwogICAgIFN0
cm9uZzxTdHJ1Y3R1cmU+IGZ1bmN0aW9uUmFyZURhdGFTdHJ1Y3R1cmU7Ci0gICAgU3Ryb25nPFN0
cnVjdHVyZT4gZ2VuZXJhdG9yRnJhbWVTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4g
ZXhjZXB0aW9uU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHByb21pc2VEZWZlcnJl
ZFN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBpbnRlcm5hbFByb21pc2VEZWZlcnJl
ZFN0cnVjdHVyZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0Zhc3RCaXRWZWN0b3IuaCBi
L1NvdXJjZS9XVEYvd3RmL0Zhc3RCaXRWZWN0b3IuaAppbmRleCA5OGZmZjVjZjczNTNlNmJjNjdk
YTVjNTU5NDBjY2NlNGU0YjE1NmQwLi5mZjAwYjdiNTRkNGEwY2ZmNGJlZjdkMDM4NTRkZTZiOTBj
ZTFkYjkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9GYXN0Qml0VmVjdG9yLmgKKysrIGIv
U291cmNlL1dURi93dGYvRmFzdEJpdFZlY3Rvci5oCkBAIC0yMyw4ICsyMyw3IEBACiAgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKICAqLwogCi0jaWZuZGVmIEZhc3RCaXRWZWN0b3JfaAotI2RlZmluZSBGYXN0Qml0
VmVjdG9yX2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAjaW5jbHVkZSA8
d3RmL0Zhc3RNYWxsb2MuaD4KQEAgLTM2LDEyICszNSwxNCBAQCBjbGFzcyBQcmludFN0cmVhbTsK
IAogY2xhc3MgRmFzdEJpdFZlY3RvciB7CiBwdWJsaWM6Ci0gICAgRmFzdEJpdFZlY3RvcigpCi0g
ICAgICAgIDogbV9hcnJheSgwKQotICAgICAgICAsIG1fbnVtQml0cygwKQorICAgIEZhc3RCaXRW
ZWN0b3IoKSA9IGRlZmF1bHQ7CisKKyAgICBGYXN0Qml0VmVjdG9yKEZhc3RCaXRWZWN0b3ImJiBv
dGhlcikKKyAgICAgICAgOiBtX2FycmF5KHN0ZDo6ZXhjaGFuZ2Uob3RoZXIubV9hcnJheSwgbnVs
bHB0cikpCisgICAgICAgICwgbV9udW1CaXRzKHN0ZDo6ZXhjaGFuZ2Uob3RoZXIubV9udW1CaXRz
LCAwKSkKICAgICB7CiAgICAgfQotICAgIAorCiAgICAgRmFzdEJpdFZlY3Rvcihjb25zdCBGYXN0
Qml0VmVjdG9yJiBvdGhlcikKICAgICAgICAgOiBtX2FycmF5KDApCiAgICAgICAgICwgbV9udW1C
aXRzKDApCkBAIC0yMDIsMTMgKzIwMywxMCBAQCBjbGFzcyBGYXN0Qml0VmVjdG9yIHsKICAgICBz
dGF0aWMgc2l6ZV90IGFycmF5TGVuZ3RoKHNpemVfdCBudW1CaXRzKSB7IHJldHVybiAobnVtQml0
cyArIDMxKSA+PiA1OyB9CiAgICAgc2l6ZV90IGFycmF5TGVuZ3RoKCkgY29uc3QgeyByZXR1cm4g
YXJyYXlMZW5ndGgobV9udW1CaXRzKTsgfQogICAgIAotICAgIHVpbnQzMl90KiBtX2FycmF5OyAv
LyBObywgdGhpcyBjYW4ndCBiZSBhbiBzdGQ6OnVuaXF1ZV9wdHI8dWludDMyX3RbXT4uCi0gICAg
c2l6ZV90IG1fbnVtQml0czsKKyAgICB1aW50MzJfdCogbV9hcnJheSB7IG51bGxwdHIgfTsgLy8g
Tm8sIHRoaXMgY2FuJ3QgYmUgYW4gc3RkOjp1bmlxdWVfcHRyPHVpbnQzMl90W10+LgorICAgIHNp
emVfdCBtX251bUJpdHMgeyAwIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXVEYKIAogdXNpbmcg
V1RGOjpGYXN0Qml0VmVjdG9yOwotCi0jZW5kaWYgLy8gRmFzdEJpdFZlY3Rvcl9oCi0KZGlmZiAt
LWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYTY3ZDAw
NjgwOTRhNTZhMWRkOGZkZTEwMzU0OWVkOWU0MjE5N2I5Ni4uMjY1NDllMjIwMWJhYmVkNTNlMzU0
Y2Q5ZTRkZmUzNGU5MTk5M2IzOCAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIv
SlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAxNi0wOC0yNCAgWXVzdWtlIFN1
enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbREZHXVtGVExdIEltcGxl
bWVudCBFUzYgR2VuZXJhdG9ycyBpbiBERkcgLyBGVEwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MjcyMworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLWFuZC1h
cnJheS5qczogQWRkZWQuCisgICAgICAgIChmaWIpOgorICAgICAgICAqIHN0cmVzcy9nZW5lcmF0
b3ItZmliLWZ0bC1hbmQtb2JqZWN0LmpzOiBBZGRlZC4KKyAgICAgICAgKGZpYik6CisgICAgICAg
ICogc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLWFuZC1zdHJpbmcuanM6IEFkZGVkLgorICAgICAg
ICAoZmliKToKKyAgICAgICAgKiBzdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwuanM6IEFkZGVkLgor
ICAgICAgICAoZmliKToKKyAgICAgICAgKiBzdHJlc3MvZ2VuZXJhdG9yLWZyYW1lLWVtcHR5Lmpz
OiBBZGRlZC4KKyAgICAgICAgKHNob3VsZFRocm93KToKKyAgICAgICAgKHNob3VsZFRocm93LmZp
Yik6CisgICAgICAgICogc3RyZXNzL2dlbmVyYXRvci1yZWR1Y2VkLXNhdmUtcG9pbnQtcHV0LXRv
LXNjb3BlLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKGdlbik6Cisg
ICAgICAgICogc3RyZXNzL2dlbmVyYXRvci10cmFuc2Zlci1yZWdpc3Rlci1iZXlvbmQtbXV0aXBs
ZS15aWVsZHMuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoZ2VuKToK
KwogMjAxNi0wOC0yNCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAg
IFVucmV2aWV3ZWQsIHJvbGwgb3V0IHIyMDQ5MDEsIHIyMDQ4OTcsIHIyMDQ4NjYsIHIyMDQ4NTYs
IHIyMDQ4NTQuCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC1h
bmQtYXJyYXkuanMgYi9KU1Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQtYXJyYXku
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZmU5Mzk4MTJmZGJhZWM2YjgzMmJmZDAwZjIxNTNkZWY4NGJiNzU5Mgot
LS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLWFuZC1h
cnJheS5qcwpAQCAtMCwwICsxLDIzIEBACisoZnVuY3Rpb24gKCkgeworICAgIGZ1bmN0aW9uICpm
aWIoKQorICAgIHsKKyAgICAgICAgbGV0IGEgPSAxOworICAgICAgICBsZXQgYiA9IDE7CisgICAg
ICAgIGxldCBjID0gWyAwIF07CisgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICBj
WzBdID0gYTsKKyAgICAgICAgICAgIHlpZWxkIGM7CisgICAgICAgICAgICBbYSwgYl0gPSBbYiwg
YSArIGJdOworICAgICAgICB9CisgICAgfQorCisgICAgbGV0IHZhbHVlID0gMDsKKyAgICBmb3Ig
KGxldCBpID0gMDsgaSA8IDFlNDsgKytpKSB7CisgICAgICAgIGxldCBmID0gZmliKCk7CisgICAg
ICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwOyArK2kpIHsKKyAgICAgICAgICAgIHZhbHVlID0g
Zi5uZXh0KCkudmFsdWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHZhbHVlWzBdICE9PSAzNTQy
MjQ4NDgxNzkyNjIwMDAwMDApCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCB2YWx1
ZToke3Jlc3VsdH1gKTsKKyAgICB9Cit9KCkpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mv
Z2VuZXJhdG9yLWZpYi1mdGwtYW5kLW9iamVjdC5qcyBiL0pTVGVzdHMvc3RyZXNzL2dlbmVyYXRv
ci1maWItZnRsLWFuZC1vYmplY3QuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjY3MzQwZjJlYTRjNzQzOGEyZDIw
OWFhNDBkMDY3N2U0YWI3ZDNmYgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2dl
bmVyYXRvci1maWItZnRsLWFuZC1vYmplY3QuanMKQEAgLTAsMCArMSwyMyBAQAorKGZ1bmN0aW9u
ICgpIHsKKyAgICBmdW5jdGlvbiAqZmliKCkKKyAgICB7CisgICAgICAgIGxldCBhID0gMTsKKyAg
ICAgICAgbGV0IGIgPSAxOworICAgICAgICBsZXQgYyA9IHsgZmliOiAwIH07CisgICAgICAgIHdo
aWxlICh0cnVlKSB7CisgICAgICAgICAgICBjLmZpYiA9IGE7CisgICAgICAgICAgICB5aWVsZCBj
OworICAgICAgICAgICAgW2EsIGJdID0gW2IsIGEgKyBiXTsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIGxldCB2YWx1ZSA9IDA7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxZTQ7ICsraSkgewor
ICAgICAgICBsZXQgZiA9IGZpYigpOworICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDsg
KytpKSB7CisgICAgICAgICAgICB2YWx1ZSA9IGYubmV4dCgpLnZhbHVlOworICAgICAgICB9Cisg
ICAgICAgIGlmICh2YWx1ZS5maWIgIT09IDM1NDIyNDg0ODE3OTI2MjAwMDAwMCkKKyAgICAgICAg
ICAgIHRocm93IG5ldyBFcnJvcihgYmFkIHZhbHVlOiR7cmVzdWx0fWApOworICAgIH0KK30oKSk7
CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQtc3RyaW5n
LmpzIGIvSlNUZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwtYW5kLXN0cmluZy5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40MzhhZTZhYjMzNDcwNDY4MjI4NDlmNDMwMDRlYTVjNDAzZWVkYTI4Ci0tLSAvZGV2
L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwtYW5kLXN0cmluZy5q
cwpAQCAtMCwwICsxLDIyIEBACisoZnVuY3Rpb24gKCkgeworICAgIGZ1bmN0aW9uICpmaWIoKQor
ICAgIHsKKyAgICAgICAgbGV0IGEgPSAxOworICAgICAgICBsZXQgYiA9IDE7CisgICAgICAgIGxl
dCBjID0gIlJlc3VsdCEgIjsKKyAgICAgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgICAgIHlp
ZWxkIGMgKyBhOworICAgICAgICAgICAgW2EsIGJdID0gW2IsIGEgKyBiXTsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIGxldCB2YWx1ZSA9IDA7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxZTQ7
ICsraSkgeworICAgICAgICBsZXQgZiA9IGZpYigpOworICAgICAgICBmb3IgKGxldCBpID0gMDsg
aSA8IDEwMDsgKytpKSB7CisgICAgICAgICAgICB2YWx1ZSA9IGYubmV4dCgpLnZhbHVlOworICAg
ICAgICB9CisgICAgICAgIGlmICh2YWx1ZSAhPT0gYFJlc3VsdCEgMzU0MjI0ODQ4MTc5MjYyMDAw
MDAwYCkKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIHZhbHVlOiR7cmVzdWx0fWAp
OworICAgIH0KK30oKSk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmli
LWZ0bC5qcyBiL0pTVGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjM0MGUzM2RiYzg2OGJlYTdhODkzYzllYzE2Yjc3OWVjMjZiZGIxOWMKLS0tIC9kZXYvbnVsbAor
KysgYi9KU1Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC5qcwpAQCAtMCwwICsxLDIxIEBA
CisoZnVuY3Rpb24gKCkgeworICAgIGZ1bmN0aW9uICpmaWIoKQorICAgIHsKKyAgICAgICAgbGV0
IGEgPSAxOworICAgICAgICBsZXQgYiA9IDE7CisgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAg
ICAgICAgICB5aWVsZCBhOworICAgICAgICAgICAgW2EsIGJdID0gW2IsIGEgKyBiXTsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIGxldCB2YWx1ZSA9IDA7CisgICAgZm9yIChsZXQgaSA9IDA7IGkg
PCAxZTQ7ICsraSkgeworICAgICAgICBsZXQgZiA9IGZpYigpOworICAgICAgICBmb3IgKGxldCBp
ID0gMDsgaSA8IDEwMDsgKytpKSB7CisgICAgICAgICAgICB2YWx1ZSA9IGYubmV4dCgpLnZhbHVl
OworICAgICAgICB9CisgICAgICAgIGlmICh2YWx1ZSAhPT0gMzU0MjI0ODQ4MTc5MjYyMDAwMDAw
KQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgdmFsdWU6JHtyZXN1bHR9YCk7Cisg
ICAgfQorfSgpKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2dlbmVyYXRvci1mcmFtZS1l
bXB0eS5qcyBiL0pTVGVzdHMvc3RyZXNzL2dlbmVyYXRvci1mcmFtZS1lbXB0eS5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi41OWU4ODU1YmZhYzNjNTZkZjkyNmFiZDQyOGMwMTNjMzM0MTYyNzQ2Ci0tLSAvZGV2L251
bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZyYW1lLWVtcHR5LmpzCkBAIC0wLDAg
KzEsMzQgQEAKK2Z1bmN0aW9uIHNob3VsZFRocm93KGZ1bmMsIGVycm9yTWVzc2FnZSkgeworICAg
IHZhciBlcnJvclRocm93biA9IGZhbHNlOworICAgIHZhciBlcnJvciA9IG51bGw7CisgICAgdHJ5
IHsKKyAgICAgICAgZnVuYygpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgZXJyb3JUaHJv
d24gPSB0cnVlOworICAgICAgICBlcnJvciA9IGU7CisgICAgfQorICAgIGlmICghZXJyb3JUaHJv
d24pCisgICAgICAgIHRocm93IG5ldyBFcnJvcignbm90IHRocm93bicpOworICAgIGlmIChTdHJp
bmcoZXJyb3IpICE9PSBlcnJvck1lc3NhZ2UpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFk
IGVycm9yOiAke1N0cmluZyhlcnJvcil9YCk7Cit9CisKK3Nob3VsZFRocm93KGZ1bmN0aW9uICgp
IHsKKyAgICBmdW5jdGlvbiAqZmliKGZsYWcpCisgICAgeworICAgICAgICBsZXQgYSA9IDE7Cisg
ICAgICAgIGxldCBiID0gMTsKKyAgICAgICAgeWllbGQgNDI7CisgICAgICAgIGlmIChmbGFnKQor
ICAgICAgICAgICAgcmV0dXJuIGM7CisgICAgICAgIGxldCBjID0gNTAwOworICAgIH0KKworICAg
IGxldCB2YWx1ZSA9IDA7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxZTQ7ICsraSkgeworICAg
ICAgICBmb3IgKGxldCB2IG9mIGZpYihmYWxzZSkpIHsKKyAgICAgICAgfQorICAgIH0KKyAgICBm
b3IgKGxldCB2IG9mIGZpYih0cnVlKSkgeworICAgIH0KK30sIGBSZWZlcmVuY2VFcnJvcjogQ2Fu
bm90IGFjY2VzcyB1bmluaXRpYWxpemVkIHZhcmlhYmxlLmApOwpkaWZmIC0tZ2l0IGEvSlNUZXN0
cy9zdHJlc3MvZ2VuZXJhdG9yLXJlZHVjZWQtc2F2ZS1wb2ludC1wdXQtdG8tc2NvcGUuanMgYi9K
U1Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItcmVkdWNlZC1zYXZlLXBvaW50LXB1dC10by1zY29wZS5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5jMGM3NWZhNDkxNDNjMTdiZTE0ZjMyODFlM2Y2NTQzNGYzNTEzOWU4Ci0t
LSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXJlZHVjZWQtc2F2ZS1w
b2ludC1wdXQtdG8tc2NvcGUuanMKQEAgLTAsMCArMSwyOCBAQAorZnVuY3Rpb24gc2hvdWxkQmUo
YWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IoYGJhZCB2YWx1ZTogJHtTdHJpbmcoYWN0dWFsKX1gKTsKK30KKwor
ZnVuY3Rpb24gZXJyb3IoKQoreworICAgIHRocm93ICJvayI7Cit9CisKK2Z1bmN0aW9uKiBnZW4o
KQoreworICAgIHZhciB2YWx1ZSA9IDQyOworICAgIHRyeSB7CisgICAgICAgIHlpZWxkIDMwMDsK
KyAgICAgICAgdmFsdWUgPSA1MDA7CisgICAgICAgIGVycm9yKCk7CisgICAgfSBjYXRjaCAoZSkg
eworICAgICAgICB5aWVsZCA0MjsKKyAgICAgICAgcmV0dXJuIHZhbHVlOworICAgIH0KKyAgICBy
ZXR1cm4gMjAwOworfQorCit2YXIgZyA9IGdlbigpOworc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUs
IDMwMCk7CitzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgNDIpOworc2hvdWxkQmUoZy5uZXh0KCku
dmFsdWUsIDUwMCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItdHJhbnNm
ZXItcmVnaXN0ZXItYmV5b25kLW11dGlwbGUteWllbGRzLmpzIGIvSlNUZXN0cy9zdHJlc3MvZ2Vu
ZXJhdG9yLXRyYW5zZmVyLXJlZ2lzdGVyLWJleW9uZC1tdXRpcGxlLXlpZWxkcy5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5mZTIwOGY1ODEyOTZmOWFlMDhhNmJmYjM5OGI0ODIyNTc0MmQ2Yjc4Ci0tLSAvZGV2L251
bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXRyYW5zZmVyLXJlZ2lzdGVyLWJleW9u
ZC1tdXRpcGxlLXlpZWxkcy5qcwpAQCAtMCwwICsxLDE4IEBACitmdW5jdGlvbiBzaG91bGRCZShh
Y3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAg
IHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKworCitmdW5jdGlv
biAqZ2VuKCkKK3sKKyAgICB2YXIgdGVzdCA9IDQyOworICAgIHlpZWxkIDMyOworICAgIHlpZWxk
IDMzOworICAgIHlpZWxkIHRlc3Q7Cit9CisKK3ZhciBnID0gZ2VuKCk7CitzaG91bGRCZShnLm5l
eHQoKS52YWx1ZSwgMzIpOworc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIDMzKTsKK3Nob3VsZEJl
KGcubmV4dCgpLnZhbHVlLCA0Mik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>286894</attachid>
            <date>2016-08-24 14:51:12 -0700</date>
            <delta_ts>2016-08-24 16:01:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-152723-20160825064910.patch</filename>
            <type>text/plain</type>
            <size>189594</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA0OTIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
NDE0ZDY0OTliYThmOGM2YTc4YWQ0YzdjOGFiZmU5YjhmNDliZTk0Li4xMjI0NDc5YzI4YzNjYTc1
MWVhZmM5ZDY0NmY0OTNmYzBkZWI1NDJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSwyMzIgQEAKIDIwMTYtMDgtMjQgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CiAKKyAgICAgICAgW0RGR11bRlRMXSBJbXBsZW1lbnQgRVM2IEdlbmVyYXRvcnMgaW4g
REZHIC8gRlRMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNTI3MjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBGSVhNRTogVGhpcyBkb2N1bWVudCBpcyBvdXQgb2YgZGF0ZS4gSSdsbCB1cGRhdGUgaXQuLi4K
KworICAgICAgICBUaGlzIHBhdGNoIGludHJvZHVjZXMgREZHIGFuZCBGVEwgc3VwcG9ydCBmb3Ig
RVM2IGdlbmVyYXRvcnMuCisgICAgICAgIEVTNiBnZW5lcmF0b3IgaXMgY29tcGlsZWQgYnkgdGhl
IEJ5dGVjb2RlR2VuZXJhdG9yLiBCdXQgYXQgdGhlIGxhc3QgcGhhc2UsIEJ5dGVjb2RlR2VuZXJh
dG9yIHBlcmZvcm1zICJnZW5lcmF0b3JpZmljYXRpb24iIG9udG8gdGhlIHVubGlua2VkIGNvZGUu
CisgICAgICAgIEluIEJ5dGVjb2RlR2VuZXJhdG9yIHBoYXNlLCB3ZSBqdXN0IGVtaXQgb3BfeWll
bGQgZm9yIGVhY2ggeWllbGQgcG9pbnQuIEFuZCB3ZSBkb24ndCBlbWl0IGFueSBnZW5lcmF0b3Ig
cmVsYXRlZCBzd2l0Y2gsIHNhdmUsIGFuZCByZXN1bWUgc2VxdWVuY2VzCisgICAgICAgIGhlcmUu
IFRob3NlIGFyZSBlbWl0dGVkIGJ5IHRoZSBnZW5lcmF0b3JpZmljYXRpb24gcGhhc2UuIFNvIHRo
ZSBncmFwaCBpcyBzdXBlciBzaW1wbGUhIEJlZm9yZSB0aGUgZ2VuZXJhdG9yaWZpY2F0aW9uLCB0
aGUgZ3JhcGggbG9va3MgbGlrZSB0aGlzLgorCisgICAgICAgICAgICAgZW50cnkgLT4gLi4uLi4u
IC0+IG9wX3lpZWxkIC0+IC4uLi4uIC0+IG9wX3lpZWxkIC0+IC4uLgorCisgICAgICAgIFJvdWdo
bHkgc3BlYWtpbmcsIGluIHRoZSBnZW5lcmF0b3JpZmljYXRpb24gcGhhc2UsIHdlIHR1cm4gb3V0
IHdoaWNoIHZhcmlhYmxlcyBzaG91bGQgYmUgc2F2ZWQgYW5kIHJlc3VtZWQgYXQgZWFjaCBvcF95
aWVsZC4KKyAgICAgICAgVGhpcyBpcyBkb25lIGJ5IGxpdmVuZXNzIGFuYWx5c2lzLiBBZnRlciB0
aGF0LCB3ZSBjb252ZXJ0IG9wX3lpZWxkIHRvIHRoZSBzZXF1ZW5jZSBvZiAib3BfcHV0X3RvX3Nj
b3BlIiwgIm9wX3JldCIsIGFuZCAib3BfZ2V0X2Zyb21fc2NvcGUiLgorICAgICAgICBvcF9wdXRf
dG9fc2NvcGUgYW5kIG9wX2dldF9mcm9tX3Njb3BlIHNlcXVlbmNlcyBhcmUgY29ycmVzcG9uZGlu
ZyB0byB0aGUgc2F2ZSBhbmQgcmVzdW1lIHNlcXVlbmNlcy4gV2Ugc2V0IHVwIHRoZSBzY29wZSBm
b3IgdGhlIGdlbmVyYXRvciBmcmFtZSBhbmQKKyAgICAgICAgcGVyZm9ybSBvcF9wdXRfdG9fc2Nv
cGUgYW5kIG9wX2dldF9mcm9tX3Njb3BlIG9udG8gaXQuIFRoZSBsaXZlIHJlZ2lzdGVycyBhcmUg
c2F2ZWQgYW5kIHJlc3VtZWQgb3ZlciB0aGUgZ2VuZXJhdG9yJ3MgbmV4dCgpIGNhbGxzIGJ5IHVz
aW5nIHRoaXMKKyAgICAgICAgc3BlY2lhbCBnZW5lcmF0b3IgZnJhbWUgc2NvcGUuIEFuZCB3ZSBh
bHNvIHNldCB1cCB0aGUgZ2xvYmFsIHN3aXRjaCBmb3IgdGhlIGdlbmVyYXRvci4KKworICAgICAg
ICBJbiB0aGUgZ2VuZXJhdG9yaWZpY2F0aW9uIHBoYXNlLAorCisgICAgICAgIDEuIFdlIGNvbnN0
cnVjdCB0aGUgQnl0ZWNvZGVHcmFwaCBmcm9tIHRoZSB1bmxpbmtlZCBpbnN0cnVjdGlvbnMuIFRo
aXMgY29uc3RydWN0cyB0aGUgYmFzaWMgYmxvY2tzLCBhbmQgaXQgaXMgdXNlZCBpbiB0aGUgc3Vi
c2VxdWVudCBhbmFseXNpcy4KKyAgICAgICAgMi4gV2UgcGVyZm9ybSB0aGUgYW5hbHlzaXMgb250
byB0aGUgdW5saW5rZWQgY29kZS4gV2UgZXh0cmFjdCB0aGUgbGl2ZSB2YXJpYWJsZXMgYXQgZWFj
aCBvcF95aWVsZC4KKyAgICAgICAgMy4gV2UgaW5zZXJ0IHRoZSBnZXRfZnJvbV9zY29wZSBhbmQg
cHV0X3RvX3Njb3BlIGF0IGVhY2ggb3BfeWllbGQuIFdoaWNoIHJlZ2lzdGVycyBzaG91bGQgYmUg
c2F2ZWQgYW5kIHJlc3VtZWQgaXMgb2ZmZXJlZCBieSAoMikuCisgICAgICAgICAgIFRoZW4sIGNs
aXAgdGhlIG9wX3lpZWxkIHRoZW1zZWx2ZXMuIEFuZCB3ZSBhbHNvIGluc2VydCB0aGUgc3dpdGNo
X2ltbS4gVGhlIGp1bXAgdGFyZ2V0cyBvZiB0aGlzIHN3aXRjaCBhcmUganVzdCBhZnRlciB0aGlz
IG9wX3N3aXRjaF9pbW0gYW5kIGVhY2ggb3BfeWllbGQgcG9pbnQuCisKKyAgICAgICAgT25lIGlu
dGVyZXN0aW5nIHBvaW50IGlzIHRyeS1yYW5nZS4KKworCisgICAgICAgIFRoZSByZXdyaXRpbmcg
ZG9uZSBieSB0aGUgQnl0ZWNvZGVSZXdyaXRlciBpcyBleGVjdXRlZCBpbiBhIGJhdGNoIG1hbm5l
ci4gU2luY2UgdGhlc2UgbW9kaWZpY2F0aW9uIGNoYW5nZXMgdGhlIGJhc2ljIGJsb2NrcyBhbmQg
c2l6ZSBvZiB1bmxpbmtlZCBpbnN0cnVjdGlvbnMsCisgICAgICAgIEJ5dGVjb2RlUmV3cml0ZXIg
YWxzbyBwZXJmb3JtcyB0aGUgb2Zmc2V0IGFkanVzdG1lbnQgZm9yIFVubGlua2VkQ29kZUJsb2Nr
LiBTbywgdGhpcyBCeXRlY29kZVJld3JpdGVyIGlzIHBlcmZvcm1lZCBvbnRvIHRoZSBCeXRlY29k
ZUdyYXBoIGluc3RlYWQgb2YgQnl0ZWNvZGVCYXNpY0Jsb2NrLgorICAgICAgICBUaGUgcmVhc29u
IHdoeSB3ZSB0YWtlIHRoaXMgZGVzaWduIGlzIHNpbXBsZTogd2UgZG9uJ3Qgd2FudCB0byBuZXds
eSBjcmVhdGUgdGhlIGJhc2ljIGJsb2NrcyBhbmQgb3Bjb2RlcyBmb3IgdGhpcyBlYXJseSBwaGFz
ZSBsaWtlIERGRy4gSW5zdGVhZCwgd2UgcGVyZm9ybSB0aGUKKyAgICAgICAgbW9kaWZpY2F0aW9u
IGFuZCBhZGp1c3RtZW50IHRvIHRoZSB1bmxpbmtlZCBpbnN0cnVjdGlvbnMgYW5kIFVubGlua2Vk
Q29kZUJsb2NrIGluIGEgaW4tcGxhY2UgbWFubmVyLgorCisgICAgICAgIEFmdGVyIHRoYXQgcGhh
c2UsIHRoZSBkYXRhIGZsb3cgb2YgdGhlIGdlbmVyYXRvci1zYXZlZC1hbmQtcmVzdW1lZC1yZWdp
c3RlcnMgYXJlIGV4cGxpY2l0bHkgcmVwcmVzZW50ZWQgYnkgdGhlIGdldF9mcm9tX3Njb3BlIGFu
ZCBwdXRfdG9fc2NvcGUuCisgICAgICAgIEFuZCB0aGUgc3dpdGNoIGlzIGluc2VydGVkIHRvIHJl
cHJlc2VudCB0aGUgYWN0dWFsIGNvbnRyb2wgZmxvdyBmb3IgdGhlIGdlbmVyYXRvci4gQW5kIG9w
X3lpZWxkIGlzIHJlbW92ZWQuIFNpbmNlIHdlIHVzZSB0aGUgZXhpc3RpbmcgYnl0ZWNvZGVzIChv
cF9zd2l0Y2hfaW1tLCBvcF9wdXRfdG9fc2NvcGUKKyAgICAgICAgb3BfcmV0LCBhbmQgb3BfZ2V0
X2Zyb21fc2NvcGUpLCBERkcgYW5kIEZUTCBjaGFuZ2VzIGFyZSBub3QgbmVjZXNzYXJ5LiBUaGlz
IHBhdGNoIGFsc28gZHJvcHMgZGF0YSBzdHJ1Y3R1cmVzIGFuZCBpbXBsZW1lbnRhdGlvbnMgZm9y
IHRoZSBvbGQgZ2VuZXJhdG9yLAorICAgICAgICBvcF9yZXN1bWUsIG9wX3NhdmUgaW1wbGVtZW50
YXRpb25zIGFuZCBHZW5lcmF0b3JGcmFtZS4KKworICAgICAgICBOb3RlIHRoYXQgdGhpcyBwYXRj
aCBkb2VzIG5vdCBsZXZlcmFnZSB0aGUgcmVjZW50IG11bHRpIGVudHJ5cG9pbnRzIHN1cHBvcnQg
aW4gQjMuIEFmdGVyIHRoaXMgcGF0Y2ggaXMgaW50cm9kdWNlZCwgd2Ugd2lsbCBzdWJtaXQgYSBu
ZXcgcGF0Y2ggdGhhdCBsZXZlcmFnZXMgdGhlIG11bHRpCisgICAgICAgIGVudHJ5cG9pbnRzIGZv
ciBnZW5lcmF0b3IncyByZXN1bWUgYW5kIHNlZXMgdGhlIHBlcmZvcm1hbmNlIGdhaW4uCisKKyAg
ICAgICAgVE9ETzogUGVyZiBUQkEgaGVyZS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0Ogor
ICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAg
ICAgICogYnVpbHRpbnMvR2VuZXJhdG9yUHJvdG90eXBlLmpzOgorICAgICAgICAoZ2xvYmFsUHJp
dmF0ZS5nZW5lcmF0b3JSZXN1bWUpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlQmFzaWNC
bG9jay5jcHA6CisgICAgICAgIChKU0M6OmlzQnJhbmNoKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNv
ZGVCYXNpY0Jsb2NrOjpjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2Nrc0ludGVybmFsKToKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVCYXNpY0Jsb2NrOjpjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2Nrcyk6
CisgICAgICAgIChKU0M6OmxpbmtCbG9ja3MpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpjb21w
dXRlQnl0ZWNvZGVCYXNpY0Jsb2Nrcyk6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUvQnl0
ZWNvZGVCYXNpY0Jsb2NrLmg6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlQmFzaWNCbG9jazo6Ynl0
ZWNvZGVPZmZzZXRzKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVCYXNpY0Jsb2NrOjpzdWNjZXNz
b3JzKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVCYXNpY0Jsb2NrOjppbmRleCk6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlQmFzaWNCbG9jazo6YWRkU3VjY2Vzc29yKToKKyAgICAgICAgKiBieXRl
Y29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHA6IEFkZGVkLgorICAgICAgICAoSlND
OjpCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbjo6Qnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24p
OgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbjo6Z3JhcGgpOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbjo6eWllbGRzKToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb246OmVudGVyUG9pbnQpOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbjo6c3RvcmFnZUZvckdlbmVyYXRvckxvY2Fs
KToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yTGl2ZW5lc3NBbmFseXNpczo6R2VuZXJhdG9yTGl2
ZW5lc3NBbmFseXNpcyk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckxpdmVuZXNzQW5hbHlzaXM6
OmNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JM
aXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAg
KEpTQzo6R2VuZXJhdG9yTGl2ZW5lc3NBbmFseXNpczo6cnVuKToKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVHZW5lcmF0b3JpZmljYXRpb246OnJ1bik6CisgICAgICAgIChKU0M6OnBlcmZvcm1HZW5l
cmF0b3JpZmljYXRpb24pOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZp
Y2F0aW9uLmg6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZUxpdmVuZXNzQW5hbHlzaXNJbmxpbmVzLmguCisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNv
ZGVHcmFwaC5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHcmFwaDo6Y29kZUJsb2Nr
KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHcmFwaDo6aW5zdHJ1Y3Rpb25zKToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHcmFwaDo6YmFzaWNCbG9ja3NJblJldmVyc2VPcmRlcik6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlR3JhcGg6OmJsb2NrQ29udGFpbnNCeXRlY29kZU9mZnNldCk6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR3JhcGg6OmZpbmRCYXNpY0Jsb2NrRm9yQnl0ZWNvZGVPZmZzZXQp
OgorICAgICAgICAoSlNDOjpCeXRlY29kZUdyYXBoOjpmaW5kQmFzaWNCbG9ja1dpdGhMZWFkZXJP
ZmZzZXQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdyYXBoOjpzaXplKToKKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVHcmFwaDo6YXQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdyYXBoOjpvcGVy
YXRvcltdKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHcmFwaDo6YmVnaW4pOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUdyYXBoOjplbmQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdyYXBoOjpm
aXJzdCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR3JhcGg6Omxhc3QpOgorICAgICAgICAoSlND
OjpCeXRlY29kZUdyYXBoPEJsb2NrPjo6Qnl0ZWNvZGVHcmFwaCk6CisgICAgICAgICogYnl0ZWNv
ZGUvQnl0ZWNvZGVMaXN0Lmpzb246CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVz
c0FuYWx5c2lzLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpC
eXRlY29kZUxpdmVuZXNzQW5hbHlzaXMpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNz
QW5hbHlzaXM6OmNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpC
eXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmdldExpdmVuZXNzSW5mb0F0
Qnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6
OmNvbXB1dGVGdWxsTGl2ZW5lc3MpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzQW5h
bHlzaXM6OmNvbXB1dGVLaWxscyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlTGl2ZW5lc3NBbmFs
eXNpczo6ZHVtcFJlc3VsdHMpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlz
aXM6OmNvbXB1dGUpOgorICAgICAgICAoSlNDOjppc1ZhbGlkUmVnaXN0ZXJGb3JMaXZlbmVzcyk6
IERlbGV0ZWQuCisgICAgICAgIChKU0M6OmdldExlYWRlck9mZnNldEZvckJhc2ljQmxvY2spOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpmaW5kQmFzaWNCbG9ja1dpdGhMZWFkZXJPZmZzZXQpOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpibG9ja0NvbnRhaW5zQnl0ZWNvZGVPZmZzZXQpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpmaW5kQmFzaWNCbG9ja0ZvckJ5dGVjb2RlT2Zmc2V0KTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6c3RlcE92ZXJJbnN0cnVjdGlvbik6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OmNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQnl0ZWNvZGVPZmZzZXQpOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJsb2NrKTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpydW5MaXZlbmVzc0ZpeHBv
aW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlz
aXMuaDoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNJbmxpbmVz
Lmg6CisgICAgICAgIChKU0M6OmlzVmFsaWRSZWdpc3RlckZvckxpdmVuZXNzKToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0aW9uPERlcml2ZWRBbmFseXNpcz46OnN0ZXBP
dmVySW5zdHJ1Y3Rpb24pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzUHJvcGFnYXRp
b248RGVyaXZlZEFuYWx5c2lzPjo6Y29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCeXRlY29kZU9mZnNl
dCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlTGl2ZW5lc3NQcm9wYWdhdGlvbjxEZXJpdmVkQW5h
bHlzaXM+Ojpjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJsb2NrKToKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0aW9uPERlcml2ZWRBbmFseXNpcz46OmdldExpdmVuZXNzSW5m
b0F0Qnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzUHJvcGFn
YXRpb248RGVyaXZlZEFuYWx5c2lzPjo6cnVuTGl2ZW5lc3NGaXhwb2ludCk6CisgICAgICAgICog
Ynl0ZWNvZGUvQnl0ZWNvZGVSZXdyaXRlci5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpCeXRl
Y29kZVJld3JpdGVyOjphcHBseU1vZGlmaWNhdGlvbik6CisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
UmV3cml0ZXI6OmV4ZWN1dGUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZVJld3JpdGVyOjphZGp1
c3RKdW1wVGFyZ2V0c0luSnVtcE9wZXJhdGlvbik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlUmV3
cml0ZXI6Omluc2VydEltcGwpOgorICAgICAgICAoSlNDOjpCeXRlY29kZVJld3JpdGVyOjppbnNl
cnRTd2l0Y2hJbW1lZGlhdGVJbXBsKToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZVJld3Jp
dGVyLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpCeXRlY29kZVJld3JpdGVyOjpDb21tYW5kOjps
ZW5ndGgpOgorICAgICAgICAoSlNDOjpCeXRlY29kZVJld3JpdGVyOjpGcmFnbWVudDo6RnJhZ21l
bnQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZVJld3JpdGVyOjpGcmFnbWVudDo6YXBwZW5kKToK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVSZXdyaXRlcjo6Qnl0ZWNvZGVSZXdyaXRlcik6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlUmV3cml0ZXI6Omluc2VydEJlZm9yZSk6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlUmV3cml0ZXI6Omluc2VydEFmdGVyKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVS
ZXdyaXRlcjo6aW5zZXJ0RnJhZ21lbnRCZWZvcmUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZVJl
d3JpdGVyOjppbnNlcnRGcmFnbWVudEFmdGVyKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVSZXdy
aXRlcjo6aW5zZXJ0U3dpdGNoSW1tZWRpYXRlQmVmb3JlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNv
ZGVSZXdyaXRlcjo6cmVtb3ZlQnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZVJld3Jp
dGVyOjpncmFwaCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlUmV3cml0ZXI6OmFkanVzdE9mZnNl
dCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlUmV3cml0ZXI6OmFkanVzdE9mZnNldFdpdGhJbnNl
cnRpb25zKToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZVVzZURlZi5oOgorICAgICAgICAo
SlNDOjpjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Y29tcHV0
ZURlZnNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNw
cDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUpOgorICAgICAgICAoSlND
OjpDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpo
YW5kbGVyRm9ySW5kZXgpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnNocmlua1RvRml0KToK
KyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjp2YWx1ZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldCk6
CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bGl2ZW5lc3NBbmFseXNpc1Nsb3cpOgorICAgICAg
ICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmlzQ29u
c3RhbnRSZWdpc3RlckluZGV4KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpsaXZlbmVzc0Fu
YWx5c2lzKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpsaXZlQ2FsbGVlTG9jYWxzQXRZaWVs
ZCk6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUvSGFuZGxlckluZm8uaDoKKyAgICAgICAg
KEpTQzo6SGFuZGxlckluZm9CYXNlOjpoYW5kbGVyRm9ySW5kZXgpOgorICAgICAgICAqIGJ5dGVj
b2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5jcHA6CisgICAgICAgIChKU0M6OmdldEp1bXBUYXJnZXRz
Rm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpjb21wdXRlUHJlY2lzZUp1bXBUYXJn
ZXRzSW50ZXJuYWwpOgorICAgICAgICAoSlNDOjpjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKToK
KyAgICAgICAgKEpTQzo6cmVjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKToKKyAgICAgICAgKEpT
Qzo6ZmluZEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAqIGJ5dGVjb2Rl
L1ByZWNpc2VKdW1wVGFyZ2V0cy5oOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJs
b2NrLmNwcDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OmhhbmRsZXJGb3JCeXRl
Y29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjpoYW5kbGVyRm9y
SW5kZXgpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6YXBwbHlNb2RpZmljYXRp
b24pOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmg6CisgICAgICAgIChK
U0M6OlVubGlua2VkU3RyaW5nSnVtcFRhYmxlOjpvZmZzZXRGb3JWYWx1ZSk6CisgICAgICAgIChK
U0M6OlVubGlua2VkQ29kZUJsb2NrOjpudW1DYWxsZWVMb2NhbHMpOgorICAgICAgICAqIGJ5dGVj
b2RlL1ZpcnR1YWxSZWdpc3Rlci5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdl
bmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZSk6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcik6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q29tcGxleFBvcFNjb3Blcyk6Cisg
ICAgICAgIChKU0M6OnByZXBhcmVKdW1wVGFibGVGb3JTdHJpbmdTd2l0Y2gpOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFlpZWxkUG9pbnQpOgorICAgICAgICAoSlNDOjpC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdFNhdmUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCeXRl
Y29kZUdlbmVyYXRvcjo6ZW1pdFJlc3VtZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0R2VuZXJhdG9yU3RhdGVMYWJlbCk6IERlbGV0ZWQuCisgICAgICAg
IChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpiZWdpbkdlbmVyYXRvcik6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbmRHZW5lcmF0b3IpOiBEZWxldGVkLgorICAg
ICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpC
eXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdG9yU3RhdGVSZWdpc3Rlcik6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0b3JWYWx1ZVJlZ2lzdGVyKToKKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRvclJlc3VtZU1vZGVSZWdpc3Rlcik6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0b3JGcmFtZVJlZ2lzdGVyKToKKyAg
ICAgICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6RnVu
Y3Rpb25Ob2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNw
cDoKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6
OmZpbmRFeGNlcHRpb25IYW5kbGVyKToKKyAgICAgICAgKEpTQzo6R2V0Q2F0Y2hIYW5kbGVyRnVu
Y3Rvcjo6b3BlcmF0b3IoKSk6CisgICAgICAgIChKU0M6OlVud2luZEZ1bmN0b3I6Om9wZXJhdG9y
KCkpOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmg6CisgICAgICAgICogaW50
ZXJwcmV0ZXIvSW50ZXJwcmV0ZXJJbmxpbmVzLmg6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHMuaC4KKyAgICAgICAgKEpTQzo6SW50
ZXJwcmV0ZXI6OmdldE9wY29kZUlEKToKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAg
KEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKToKKyAgICAgICAgKiBqaXQvSklULmg6
CisgICAgICAgICogaml0L0pJVE9wY29kZXMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRf
b3Bfc2F2ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9yZXN1bWUpOiBE
ZWxldGVkLgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAgICAg
ICAqIHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6
cGFyc2VJbm5lcik6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUdlbmVy
YXRvckZ1bmN0aW9uU291cmNlRWxlbWVudHMpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJU
eXBlPjo6Y3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyk6CisgICAgICAgICogcGFyc2VyL1BhcnNl
ci5oOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpT
Qzo6U0xPV19QQVRIX0RFQ0wpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xv
d1BhdGhzLmg6CisgICAgICAgICogcnVudGltZS9HZW5lcmF0b3JGcmFtZS5jcHA6IFJlbW92ZWQu
CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpHZW5lcmF0b3JGcmFtZSk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpmaW5pc2hDcmVhdGlvbik6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpjcmVhdGVTdHJ1Y3R1cmUpOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlKTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OnNhdmUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpH
ZW5lcmF0b3JGcmFtZTo6cmVzdW1lKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9y
RnJhbWU6OnZpc2l0Q2hpbGRyZW4pOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJh
dG9yRnJhbWUuaDogUmVtb3ZlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OmxvY2Fs
cyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpsb2NhbEF0KTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6Om9mZnNldE9mTG9jYWxzKTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OmFsbG9jYXRpb25TaXplRm9yTG9j
YWxzKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJhdG9yRnVuY3Rpb24uaDoK
KyAgICAgICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OlZNKToKKyAgICAg
ICAgKiBydW50aW1lL1ZNLmg6CisKKzIwMTYtMDgtMjQgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5l
LnRlYUBnbWFpbC5jb20+CisKICAgICAgICAgW0pTQ10gTW92ZSBnZW5lcmljIGRhdGEgc3RydWN0
dXJlcyBvdXQgb2YgQjMKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE2MTE1NQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGJlMDkwMzhmY2I0OTkwY2QwYTAxMGQyZThjMGYwNzM2ODU2
MDM4ZmMuLjU1ODkxZDA3NTI2YmM0ZWZjODg3NDZjZmEyZWEzODY4NDA3NmM0YTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0x
LDUgKzEsMTUgQEAKIDIwMTYtMDgtMjQgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CiAKKyAgICAgICAgW0RGR11bRlRMXSBJbXBsZW1lbnQgRVM2IEdlbmVyYXRvcnMgaW4g
REZHIC8gRlRMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNTI3MjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIHd0Zi9GYXN0Qml0VmVjdG9yLmg6CisgICAgICAgIChXVEY6OkZhc3RCaXRWZWN0b3I6OkZh
c3RCaXRWZWN0b3IpOgorCisyMDE2LTA4LTI0ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFA
Z21haWwuY29tPgorCiAgICAgICAgIFtKU0NdIE1vdmUgZ2VuZXJpYyBkYXRhIHN0cnVjdHVyZXMg
b3V0IG9mIEIzCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNjExNTUKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMu
dHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDNlZDU0Yjgx
NzI2ODE4YTA4ODRjZGMzMjVjZjE3ZGQyNWIyZWJlNjEuLjNiZWY0MmNmODJhZDBlNzdkODU2NDAx
YzkzNzBkZTAxMzA4NTIzOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFr
ZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAg
LTE4MSw2ICsxODEsOCBAQCBzZXQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIGJ5dGVjb2Rl
L0FycmF5QWxsb2NhdGlvblByb2ZpbGUuY3BwCiAgICAgYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmNw
cAogICAgIGJ5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5jcHAKKyAgICBieXRlY29kZS9CeXRl
Y29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHAKKyAgICBieXRlY29kZS9CeXRlY29kZVJld3JpdGVy
LmNwcAogICAgIGJ5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuY3BwCiAgICAgYnl0
ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNwcAogICAgIGJ5dGVjb2RlL0NhbGxFZGdl
LmNwcApAQCAtNjYxLDcgKzY2Myw2IEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAg
cnVudGltZS9GdW5jdGlvbkhhc0V4ZWN1dGVkQ2FjaGUuY3BwCiAgICAgcnVudGltZS9GdW5jdGlv
blByb3RvdHlwZS5jcHAKICAgICBydW50aW1lL0Z1bmN0aW9uUmFyZURhdGEuY3BwCi0gICAgcnVu
dGltZS9HZW5lcmF0b3JGcmFtZS5jcHAKICAgICBydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uQ29u
c3RydWN0b3IuY3BwCiAgICAgcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5jcHAK
ICAgICBydW50aW1lL0dlbmVyYXRvclByb3RvdHlwZS5jcHAKQEAgLTk3OSw2ICs5ODAsMTAgQEAg
YWRkX2N1c3RvbV9jb21tYW5kKAogICAgIENPTU1BTkQgJHtQWVRIT05fRVhFQ1VUQUJMRX0gJHtK
QVZBU0NSSVBUQ09SRV9ESVJ9L2dlbmVyYXRlLWJ5dGVjb2RlLWZpbGVzIC0tYnl0ZWNvZGVzX2gg
JHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9CeXRlY29kZXMuaCAtLWluaXRf
Ynl0ZWNvZGVzX2FzbSAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0luaXRC
eXRlY29kZXMuYXNtICR7SkFWQVNDUklQVENPUkVfRElSfS9ieXRlY29kZS9CeXRlY29kZUxpc3Qu
anNvbgogICAgIFZFUkJBVElNKQogCitsaXN0KEFQUEVORCBKYXZhU2NyaXB0Q29yZV9IRUFERVJT
CisgICAgJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9CeXRlY29kZXMuaAor
KQorCiBhZGRfY3VzdG9tX2NvbW1hbmQoCiAgICAgT1VUUFVUICR7REVSSVZFRF9TT1VSQ0VTX0pB
VkFTQ1JJUFRDT1JFX0RJUn0vTExJbnREZXNpcmVkT2Zmc2V0cy5oCiAgICAgTUFJTl9ERVBFTkRF
TkNZICR7SkFWQVNDUklQVENPUkVfRElSfS9vZmZsaW5lYXNtL2dlbmVyYXRlX29mZnNldF9leHRy
YWN0b3IucmIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYTFkOTgzZDhmMDA3ZTkw
YzM2MmI1OTk1ZDQ2MGUyOTAzYjIyNTNkNi4uYTNkZGFkZDNlMDVhYmQ5YTAwMjBlMDE3OTlhMDc4
M2IzMDBiNDNjZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEyNzAsOCArMTI3
MCw2IEBACiAJCTcwOUZCODZDMUFFMzM1QzYwMDM5RDA2OSAvKiBXZWFrU2V0UHJvdG90eXBlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MDlGQjg2NjFB
RTMzNUM2MDAzOUQwNjkgLyogV2Vha1NldFByb3RvdHlwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcwQjBBOUQxMUE5QjY2NDYwMDAxMzA2QSAv
KiBSdW50aW1lRmxhZ3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDcwQjBBOUQwMUE5QjY2MjAwMDAxMzA2QSAvKiBSdW50aW1lRmxhZ3MuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MEI3OTE5MTFDMDI0
QTEzMDAyNDgxRTIgLyogU291cmNlQ29kZUtleS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNzBCNzkxOEUxQzAyNDRDOTAwMjQ4MUUyIC8qIFNvdXJjZUNv
ZGVLZXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owot
CQk3MEI3OTE5MjFDMDI0QTIzMDAyNDgxRTIgLyogR2VuZXJhdG9yRnJhbWUuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBCNzkxODMxQzAyNDQzMjAw
MjQ4MUUyIC8qIEdlbmVyYXRvckZyYW1lLmNwcCAqLzsgfTsKLQkJNzBCNzkxOTMxQzAyNEEyODAw
MjQ4MUUyIC8qIEdlbmVyYXRvckZyYW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3MEI3OTE4NDFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnJh
bWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3
MEI3OTE5NDFDMDI0QTI4MDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEI3OTE4
NTFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAgKi87
IH07CiAJCTcwQjc5MTk1MUMwMjRBMjgwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0
cnVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
MEI3OTE4NjFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcwQjc5
MTk2MUMwMjRBMjgwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEI3OTE4NzFDMDI0
NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3BwICovOyB9OwpAQCAt
MjA0NSw2ICsyMDQzLDExIEBACiAJCUUxOEUzQTU5MERGOTI3OEMwMEQ5MEIzNCAvKiBWTS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMThFM0E1NzBE
RjkyNzhDMDBEOTBCMzQgLyogVk0uY3BwICovOyB9OwogCQlFMzE4Q0JDMDFCOEFFRjUxMDBBMjky
OUQgLyogSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMxOENCQkUxQjhBRUY1MTAwQTI5MjlEIC8qIEpTTW9k
dWxlTmFtZXNwYWNlT2JqZWN0LmNwcCAqLzsgfTsKIAkJRTMxOENCQzExQjhBRUY1MTAwQTI5MjlE
IC8qIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFMzE4Q0JCRjFCOEFFRjUxMDBBMjkyOUQgLyogSlNNb2R1bGVO
YW1lc3BhY2VPYmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQlFMzI4REFFNzFEMzhEMDA0MDAxQTI1MjkgLyogQnl0ZWNvZGVHZW5lcmF0b3Jp
ZmljYXRpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTNEMjY0MjYxRDM4QzA0MjAwMEJFMTc0IC8qIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9u
LmNwcCAqLzsgfTsKKwkJRTMyOERBRTgxRDM4RDAwNTAwMUEyNTI5IC8qIEJ5dGVjb2RlR2VuZXJh
dG9yaWZpY2F0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFM0QyNjQyNzFEMzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRp
b24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlF
MzI4REFFOTFEMzhEMDA1MDAxQTI1MjkgLyogQnl0ZWNvZGVHcmFwaC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNEMjY0MjgxRDM4QzA0MjAwMEJFMTc0
IC8qIEJ5dGVjb2RlR3JhcGguaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQlFMzI4REFFQTFEMzhEMDA1MDAxQTI1MjkgLyogQnl0ZWNvZGVSZXdyaXRl
ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0Qy
NjQyOTFEMzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNvZGVSZXdyaXRlci5jcHAgKi87IH07CisJCUUz
MjhEQUVCMUQzOEQwMDUwMDFBMjUyOSAvKiBCeXRlY29kZVJld3JpdGVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0QyNjQyQTFEMzhDMDQyMDAwQkUx
NzQgLyogQnl0ZWNvZGVSZXdyaXRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUUzMzYzN0E1MUI2MzIyMDIwMEVFMDg0MCAvKiBSZWZsZWN0T2Jq
ZWN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUz
MzYzN0EzMUI2MzIyMDIwMEVFMDg0MCAvKiBSZWZsZWN0T2JqZWN0LmNwcCAqLzsgfTsKIAkJRTMz
NjM3QTYxQjYzMjIwMjAwRUUwODQwIC8qIFJlZmxlY3RPYmplY3QuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMzYzN0E0MUI2MzIyMDIwMEVFMDg0MCAv
KiBSZWZsZWN0T2JqZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJRTMzQjNFMjYxQjdBQkQ3NTAwNDhEQjJFIC8qIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbk9iamVjdC5sdXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEUzM0IzRTI1MUI3QUJENzUwMDQ4REIyRSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb25PYmplY3QubHV0LmggKi87IH07CkBAIC0yMDY5LDYgKzIwNzIsNyBAQAogCQlFMzc5NEU3
NTFCNzdFQjk3MDA1NTQzQUUgLyogTW9kdWxlQW5hbHl6ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM3OTRFNzMxQjc3RUI5NzAwNTU0M0FFIC8q
IE1vZHVsZUFuYWx5emVyLmNwcCAqLzsgfTsKIAkJRTM3OTRFNzYxQjc3RUI5NzAwNTU0M0FFIC8q
IE1vZHVsZUFuYWx5emVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFMzc5NEU3NDFCNzdFQjk3MDA1NTQzQUUgLyogTW9kdWxlQW5hbHl6ZXIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzk2M0NFRTFC
NzNGNzUwMDBFQjRDRTUgLyogTm9kZXNBbmFseXplTW9kdWxlLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOTYzQ0VDMUI3M0Y3NTAwMEVCNENFNSAv
KiBOb2Rlc0FuYWx5emVNb2R1bGUuY3BwICovOyB9OworCQlFMzlENDVGNTFEMzkwMDU2MDBCM0Iz
NzcgLyogSW50ZXJwcmV0ZXJJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFMzlEOUQ4NDFEMzkwMDA2MDA2NjcyODIgLyogSW50ZXJwcmV0ZXJJ
bmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJRTM5REE0QTYxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOURBNEE0MUI3RThCN0Mw
MDg0RjMzQSAvKiBKU01vZHVsZVJlY29yZC5jcHAgKi87IH07CiAJCUUzOURBNEE3MUI3RThCN0Mw
MDg0RjMzQSAvKiBKU01vZHVsZVJlY29yZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTM5REE0QTUxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVj
b3JkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
RTNEMjM5QzgxQjgyOUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxlRW52aXJvbm1lbnQuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNEMjM5QzYxQjgyOUMx
QzAwQkJFRjY3IC8qIEpTTW9kdWxlRW52aXJvbm1lbnQuY3BwICovOyB9OwpAQCAtMzQ5Miw4ICsz
NDk2LDYgQEAKIAkJNzA5RkI4NjUxQUUzMzVDNjAwMzlEMDY5IC8qIFdlYWtTZXRQcm90b3R5cGUu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2Vha1NldFByb3RvdHlw
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcwOUZCODY2MUFFMzM1QzYwMDM5
RDA2OSAvKiBXZWFrU2V0UHJvdG90eXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdlYWtTZXRQcm90b3R5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzBC
MEE5RDAxQTlCNjYyMDAwMDEzMDZBIC8qIFJ1bnRpbWVGbGFncy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBSdW50aW1lRmxhZ3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJNzBCNzkxODMxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZyYW1lLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdlbmVyYXRvckZyYW1lLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNzBCNzkxODQxQzAyNDQzMjAwMjQ4MUUyIC8qIEdl
bmVyYXRvckZyYW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdlbmVyYXRv
ckZyYW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcwQjc5MTg1MUMwMjQ0MzIw
MDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MEI3OTE4NjFDMDI0NDMyMDAyNDgxRTIg
LyogR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTcwQjc5MTg3MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5j
dGlvblByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBH
ZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC00MzMzLDEwICs0MzM1LDE2IEBACiAJCUUzNzk0RTczMUI3N0VCOTcwMDU1NDNBRSAvKiBN
b2R1bGVBbmFseXplci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBN
b2R1bGVBbmFseXplci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNzk0RTc0
MUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFseXplci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBNb2R1bGVBbmFseXplci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlFMzk2M0NFQzFCNzNGNzUwMDBFQjRDRTUgLyogTm9kZXNBbmFseXplTW9kdWxlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5vZGVzQW5hbHl6ZU1vZHVsZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzOUQ5RDg0MUQzOTAwMDYwMDY2NzI4
MiAvKiBJbnRlcnByZXRlcklubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSW50ZXJwcmV0ZXJJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUz
OURBNEE0MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29yZC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU01vZHVsZVJlY29yZC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUUzOURBNEE1MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJl
Y29yZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU01vZHVsZVJlY29yZC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0QyMzlDNjFCODI5QzFDMDBCQkVGNjcg
LyogSlNNb2R1bGVFbnZpcm9ubWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKU01vZHVsZUVudmlyb25tZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRTNEMjM5QzcxQjgyOUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxlRW52aXJvbm1lbnQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNNb2R1bGVFbnZpcm9ubWVudC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFM0QyNjQyNjFEMzhDMDQyMDAwQkUxNzQgLyog
Qnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlFM0QyNjQyNzFEMzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNvZGVHZW5l
cmF0b3JpZmljYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnl0ZWNv
ZGVHZW5lcmF0b3JpZmljYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTNE
MjY0MjgxRDM4QzA0MjAwMEJFMTc0IC8qIEJ5dGVjb2RlR3JhcGguaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQnl0ZWNvZGVHcmFwaC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlFM0QyNjQyOTFEMzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNvZGVSZXdyaXRlci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCeXRlY29kZVJld3JpdGVyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTNEMjY0MkExRDM4QzA0MjAwMEJFMTc0
IC8qIEJ5dGVjb2RlUmV3cml0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Qnl0ZWNvZGVSZXdyaXRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0VGODg3
MjFCNjZERjIzMDAzRjI2Q0IgLyogSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNFRjg4NzMxQjY2REYyMzAwM0YyNkNCIC8q
IEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlFNDlEQzE0OTEyRUYyNjFBMDAxODRBMUYgLyogU291cmNlUHJvdmlkZXJDYWNoZUl0ZW0uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU291cmNlUHJvdmlkZXJDYWNoZUl0ZW0u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUwNjMsNiArNTA3MSw3IEBACiAJCTE0
MjlENzdBMEVEMjBENzMwMEI4OTYxOSAvKiBpbnRlcnByZXRlciAqLyA9IHsKIAkJCWlzYSA9IFBC
WEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJRTM5RDlEODQxRDM5MDAwNjAwNjY3MjgyIC8q
IEludGVycHJldGVySW5saW5lcy5oICovLAogCQkJCTBGNTVGMEYxMTREMTA2MzYwMEFDNzY0OSAv
KiBBYnN0cmFjdFBDLmNwcCAqLywKIAkJCQkwRjU1RjBGMjE0RDEwNjM2MDBBQzc2NDkgLyogQWJz
dHJhY3RQQy5oICovLAogCQkJCTE0MjlEODVCMEVEMjE4RTkwMEI4OTYxOSAvKiBDTG9vcFN0YWNr
LmNwcCAqLywKQEAgLTU3NDMsOCArNTc1Miw2IEBACiAJCQkJRjY5MkE4NUQwMjU1NTk3RDAxRkY2
MEY3IC8qIEZ1bmN0aW9uUHJvdG90eXBlLmggKi8sCiAJCQkJNjJEMkQzOEQxQURGMTAzRjAwMDIw
NkMxIC8qIEZ1bmN0aW9uUmFyZURhdGEuY3BwICovLAogCQkJCTYyRDJEMzhFMUFERjEwM0YwMDAy
MDZDMSAvKiBGdW5jdGlvblJhcmVEYXRhLmggKi8sCi0JCQkJNzBCNzkxODMxQzAyNDQzMjAwMjQ4
MUUyIC8qIEdlbmVyYXRvckZyYW1lLmNwcCAqLywKLQkJCQk3MEI3OTE4NDFDMDI0NDMyMDAyNDgx
RTIgLyogR2VuZXJhdG9yRnJhbWUuaCAqLywKIAkJCQk3MEI3OTE4NTFDMDI0NDMyMDAyNDgxRTIg
LyogR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAgKi8sCiAJCQkJNzBCNzkxODYxQzAy
NDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaCAqLywKIAkJCQk3
MEI3OTE4NzFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3Bw
ICovLApAQCAtNjYzMCw2ICs2NjM3LDExIEBACiAJCTk2OUEwNzhGMEVEMUQzQUUwMEYxRjY4MSAv
KiBieXRlY29kZSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJ
CQkJRTNEMjY0MjYxRDM4QzA0MjAwMEJFMTc0IC8qIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9u
LmNwcCAqLywKKwkJCQlFM0QyNjQyNzFEMzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNvZGVHZW5lcmF0
b3JpZmljYXRpb24uaCAqLywKKwkJCQlFM0QyNjQyODFEMzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNv
ZGVHcmFwaC5oICovLAorCQkJCUUzRDI2NDI5MUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRlY29kZVJl
d3JpdGVyLmNwcCAqLywKKwkJCQlFM0QyNjQyQTFEMzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNvZGVS
ZXdyaXRlci5oICovLAogCQkJCTUzNzBCNEYzMUJGMjVFQTIwMDVDNDBGQyAvKiBBZGFwdGl2ZUlu
ZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnRCYXNlLmNwcCAqLywKIAkJCQk1MzcwQjRGNDFC
RjI1RUEyMDA1QzQwRkMgLyogQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50
QmFzZS5oICovLAogCQkJCTBGODMzNUI0MTYzOUMxRTMwMDE0NDNCNSAvKiBBcnJheUFsbG9jYXRp
b25Qcm9maWxlLmNwcCAqLywKQEAgLTcxODQsNiArNzE5Niw3IEBACiAJCQkJMEZFQzg1MkQxQkRB
Q0RBQzAwODBGRjc0IC8qIEIzUHJvY2VkdXJlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEZFQzg1QkQxQkUxNDYyRjAwODBGRjc0IC8qIEIzUmVkdWNlU3RyZW5ndGguaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGRUM4NTMxMUJEQUNEQUMwMDgwRkY3NCAvKiBCM1N0YWNrbWFwU3BlY2lhbC5o
IGluIEhlYWRlcnMgKi8sCisJCQkJRTMyOERBRTgxRDM4RDAwNTAwMUEyNTI5IC8qIEJ5dGVjb2Rl
R2VuZXJhdG9yaWZpY2F0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVDODUzNTFCREFDREFD
MDA4MEZGNzQgLyogQjNTbG90QmFzZVZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVDODUz
NjFCREFDREFDMDA4MEZGNzQgLyogQjNTdWNjZXNzb3JDb2xsZWN0aW9uLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRkVDODUzODFCREFDREFDMDA4MEZGNzQgLyogQjNTd2l0Y2hDYXNlLmggaW4gSGVh
ZGVycyAqLywKQEAgLTc0NDksNyArNzQ2Miw2IEBACiAJCQkJQTczNzgxMEUxNzk5RUEyRTAwODE3
NTMzIC8qIERGR05hdHVyYWxMb29wcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZFQ0EzRUExMzJE
RUYxQzAwMkIyQUQ3IC8qIERGR05vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRkI5MjFCMTZE
MDJGMDEwMDU1QTVEQiAvKiBERkdOb2RlQWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLywKLQkJCQk3
MEI3OTE5MzFDMDI0QTI4MDAyNDgxRTIgLyogR2VuZXJhdG9yRnJhbWUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGQTU4MUJCMTUwRTk1MzAwMEI5QTJEOSAvKiBERkdOb2RlRmxhZ3MuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGMzAwQjc4MThBQjA1MTEwMEE2RDcyRSAvKiBERkdOb2RlT3JpZ2luLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRkE1ODFCQzE1MEU5NTMwMDBCOUEyRDkgLyogREZHTm9kZVR5
cGUuaCBpbiBIZWFkZXJzICovLApAQCAtNzQ2NCw2ICs3NDc2LDcgQEAKIAkJCQkwRkQ4QTMyNjE3
RDUxRjU3MDBDQTJDNDAgLyogREZHT1NSRW50cnlwb2ludENyZWF0aW9uUGhhc2UuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGQzA5NzZBMTQ2OEE2RjcwMENGMjQ0MiAvKiBERkdPU1JFeGl0LmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjIzNUJFQzE3MTc4RTczMDA2OTBDN0YgLyogREZHT1NSRXhpdEJh
c2UuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzOUQ0NUY1MUQzOTAwNTYwMEIzQjM3NyAvKiBJbnRl
cnByZXRlcklubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRkI5MjFDMTZEMDJGMTEwMDU1
QTVEQiAvKiBERkdPU1JFeGl0Q29tcGlsYXRpb25JbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RkMwOTc3MTE0NjkzQUY1MDBDRjI0NDIgLyogREZHT1NSRXhpdENvbXBpbGVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRjcwMjVBQTE3MTRCMEZDMDAzODJDMEUgLyogREZHT1NSRXhpdENvbXBpbGVy
Q29tbW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTc3MjYsNiArNzczOSw3IEBACiAJCQkJRTMzQjNF
MjYxQjdBQkQ3NTAwNDhEQjJFIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5sdXQu
aCBpbiBIZWFkZXJzICovLAogCQkJCUE1MzI0MzhDMTg1NjgzMzUwMDJFRDY5MiAvKiBJbnNwZWN0
b3JQcm90b2NvbE9iamVjdHMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1NUQ5M0FDMTg1MTRGNzkw
MDQwMERFRCAvKiBJbnNwZWN0b3JQcm90b2NvbFR5cGVzLmggaW4gSGVhZGVycyAqLywKKwkJCQlF
MzI4REFFQjFEMzhEMDA1MDAxQTI1MjkgLyogQnl0ZWNvZGVSZXdyaXRlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTUwRTRCNjIxODgwOURENTAwNjhBNDZEIC8qIEluc3BlY3RvclJ1bnRpbWVBZ2Vu
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU5M0NGODMxODQwMzc3MTAwQkZDRTI3IC8qIEluc3Bl
Y3RvclZhbHVlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTY5QTA3OTkwRUQxRDNBRTAwRjFGNjgx
IC8qIEluc3RydWN0aW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTc4NTcsNiArNzg3MSw3IEBACiAJ
CQkJRTMzRjUwODExQjg0MjlBNDAwNDEzODU2IC8qIEpTSW50ZXJuYWxQcm9taXNlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRjYxODMyQTFDNDVCRjA3MDA3MjQ1MEIgLyogQWlyQ0NhbGxpbmdDb252
ZW50aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMzNGNTA3OTFCODQyMjU3MDA0MTM4NTYgLyog
SlNJbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTMyOERB
RTkxRDM4RDAwNTAwMUEyNTI5IC8qIEJ5dGVjb2RlR3JhcGguaCBpbiBIZWFkZXJzICovLAogCQkJ
CUUzM0Y1MDg3MUI4NDQ5RUYwMDQxMzg1NiAvKiBKU0ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9y
Lmx1dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTMzRjUwODUxQjg0MzdBMDAwNDEzODU2IC8qIEpT
SW50ZXJuYWxQcm9taXNlRGVmZXJyZWQuaCBpbiBIZWFkZXJzICovLAogCQkJCUUzM0Y1MDc1MUI4
NDIxQzAwMDQxMzg1NiAvKiBKU0ludGVybmFsUHJvbWlzZVByb3RvdHlwZS5oIGluIEhlYWRlcnMg
Ki8sCkBAIC04ODIzLDYgKzg4MzgsNyBAQAogCQkJCTE0N0YzOUJEMTA3RUMzNzYwMDQyN0E0OCAv
KiBBcmdMaXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNzQzQkFBMTZCODgyNDkwMDlGOTI3
NyAvKiBBUk02NERpc2Fzc2VtYmxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NkQzQjJDMzEw
MTU2QkRFMDAyODY1RTcgLyogQVJNQXNzZW1ibGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUUz
MjhEQUU3MUQzOEQwMDQwMDFBMjUyOSAvKiBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk2NUMwMjg1MDE3MTc5NUUyMDAzNTFFMzUgLyogQVJNdjdEaXNh
c3NlbWJsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNjVDMDI4NUMxNzE3OTY2ODAwMzUxRTM1
IC8qIEFSTXY3RE9wY29kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjgzMzVCNzE2MzlDMUU2
MDAxNDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAgaW4gU291cmNlcyAqLywKQEAg
LTkxNTgsNiArOTE3NCw3IEBACiAJCQkJMEYyNUYxQjExODE2MzVGMzAwNTIyRjM5IC8qIEZUTFNs
b3dQYXRoQ2FsbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjMzOERGMTFCRTkzQUQxMDAxM0M4
OEYgLyogQjNTdGFja21hcFZhbHVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMjVGMUIzMTgx
NjM1RjMwMDUyMkYzOSAvKiBGVExTbG93UGF0aENhbGxLZXkuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJRTMyOERBRUExRDM4RDAwNTAwMUEyNTI5IC8qIEJ5dGVjb2RlUmV3cml0ZXIuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJNDMxOURBMDMxQzFCRTQwQTAwMUQyNjBCIC8qIEIzTG93ZXJNYWNyb3NB
ZnRlck9wdGltaXphdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFQTBBMTYxNzA2QkI5
MDAwQkI3MjJDIC8qIEZUTFN0YXRlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMjM1QkUxMTcx
NzhFMUMwMDY5MEM3RiAvKiBGVExUaHVua3MuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC05NTY1LDcg
Kzk1ODIsNiBAQAogCQkJCTc5RUUwQkZGMUI0QUZCODUwMDAzODVDOSAvKiBWYXJpYWJsZUVudmly
b25tZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNkM3MzUwMUFDOUY5OUYwMEJFMTY4MiAv
KiBWYXJpYWJsZVdyaXRlRmlyZURldGFpbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkUwNTAy
QzFBQTkwOTU2MDBEMzNCMzMgLyogVmFyT2Zmc2V0LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTcw
Qjc5MTkyMUMwMjRBMjMwMDI0ODFFMiAvKiBHZW5lcmF0b3JGcmFtZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwRjIwQzI1OTFBODAxM0FCMDBEQTMyMjkgLyogVmlydHVhbFJlZ2lzdGVyLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUUxOEUzQTU5MERGOTI3OEMwMEQ5MEIzNCAvKiBWTS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlGRTU5MzJBNzE4M0M1QTI2MDBBMUVDQ0MgLyogVk1FbnRyeVNjb3Bl
LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1
aWx0aW5zL0dlbmVyYXRvclByb3RvdHlwZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWls
dGlucy9HZW5lcmF0b3JQcm90b3R5cGUuanMKaW5kZXggM2MxNDA2ODdkZmM3ZTAwZWZlOTFhZTgw
YjJhYzY3NmZhOWJmNDhmNC4uNDk5ZGJkMzkyZTgzMTNkY2RkODZlYzhjMTYwNTY5ZDdkNmY1NDli
MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0dlbmVyYXRvclBy
b3RvdHlwZS5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvR2VuZXJhdG9y
UHJvdG90eXBlLmpzCkBAIC01MSw3ICs1MSw3IEBAIGZ1bmN0aW9uIGdlbmVyYXRvclJlc3VtZShn
ZW5lcmF0b3IsIHNlbnRWYWx1ZSwgcmVzdW1lTW9kZSkKICAgICB9IGVsc2UgewogICAgICAgICB0
cnkgewogICAgICAgICAgICAgZ2VuZXJhdG9yLkBnZW5lcmF0b3JTdGF0ZSA9IEBHZW5lcmF0b3JT
dGF0ZUV4ZWN1dGluZzsKLSAgICAgICAgICAgIHZhbHVlID0gZ2VuZXJhdG9yLkBnZW5lcmF0b3JO
ZXh0LkBjYWxsKGdlbmVyYXRvci5AZ2VuZXJhdG9yVGhpcywgZ2VuZXJhdG9yLCBzdGF0ZSwgc2Vu
dFZhbHVlLCByZXN1bWVNb2RlKTsKKyAgICAgICAgICAgIHZhbHVlID0gZ2VuZXJhdG9yLkBnZW5l
cmF0b3JOZXh0LkBjYWxsKGdlbmVyYXRvci5AZ2VuZXJhdG9yVGhpcywgZ2VuZXJhdG9yLCBzdGF0
ZSwgc2VudFZhbHVlLCByZXN1bWVNb2RlLCBnZW5lcmF0b3IuQGdlbmVyYXRvckZyYW1lKTsKICAg
ICAgICAgICAgIGlmIChnZW5lcmF0b3IuQGdlbmVyYXRvclN0YXRlID09PSBAR2VuZXJhdG9yU3Rh
dGVFeGVjdXRpbmcpIHsKICAgICAgICAgICAgICAgICBnZW5lcmF0b3IuQGdlbmVyYXRvclN0YXRl
ID0gQEdlbmVyYXRvclN0YXRlQ29tcGxldGVkOwogICAgICAgICAgICAgICAgIGRvbmUgPSB0cnVl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQmFz
aWNCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVCYXNp
Y0Jsb2NrLmNwcAppbmRleCA3ZjE3YzBlZjEwYjQzM2ZhYzhmNThjYjNiOWNhNWQ0ZDAxNWJiYTA4
Li40NzUyN2IxNWM5MWYyZmZkNDFiYWRjOTc0Yzg0Yzg4YmYyMWViZjAwIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcApA
QCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkJ5dGVjb2RlQmFzaWNCbG9jay5oIgogCiAjaW5j
bHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiSW50ZXJwcmV0ZXJJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIlByZWNpc2VKdW1wVGFyZ2V0cy5oIgogCkBA
IC01OCw3ICs1OSw2IEBAIHN0YXRpYyBib29sIGlzQnJhbmNoKE9wY29kZUlEIG9wY29kZUlEKQog
ICAgIGNhc2Ugb3Bfc3dpdGNoX2ltbToKICAgICBjYXNlIG9wX3N3aXRjaF9jaGFyOgogICAgIGNh
c2Ugb3Bfc3dpdGNoX3N0cmluZzoKLSAgICBjYXNlIG9wX3NhdmU6CiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTEwNSwxNSArMTA1
LDIwIEBAIHN0YXRpYyBib29sIGlzSnVtcFRhcmdldChPcGNvZGVJRCBvcGNvZGVJRCwgY29uc3Qg
VmVjdG9yPHVuc2lnbmVkLCAzMj4mIGp1bXBUYXJnCiAgICAgcmV0dXJuIHN0ZDo6YmluYXJ5X3Nl
YXJjaChqdW1wVGFyZ2V0cy5iZWdpbigpLCBqdW1wVGFyZ2V0cy5lbmQoKSwgYnl0ZWNvZGVPZmZz
ZXQpOwogfQogCi1zdGF0aWMgdm9pZCBsaW5rQmxvY2tzKEJ5dGVjb2RlQmFzaWNCbG9jayogcHJl
ZGVjZXNzb3IsIEJ5dGVjb2RlQmFzaWNCbG9jayogc3VjY2Vzc29yKQotewotICAgIHByZWRlY2Vz
c29yLT5hZGRTdWNjZXNzb3Ioc3VjY2Vzc29yKTsKLX0KLQotdm9pZCBjb21wdXRlQnl0ZWNvZGVC
YXNpY0Jsb2NrcyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxC
eXRlY29kZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9ja3MpCit0ZW1wbGF0ZTx0eXBlbmFtZSBCbG9j
aywgdHlwZW5hbWUgSW5zdHJ1Y3Rpb24+Cit2b2lkIEJ5dGVjb2RlQmFzaWNCbG9jazo6Y29tcHV0
ZUJ5dGVjb2RlQmFzaWNCbG9ja3NJbnRlcm5hbChCbG9jayogY29kZUJsb2NrLCBJbnN0cnVjdGlv
biogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQsIFZlY3Rvcjxz
dGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mIGJhc2ljQmxvY2tzKQogewogICAg
IFZlY3Rvcjx1bnNpZ25lZCwgMzI+IGp1bXBUYXJnZXRzOwotICAgIGNvbXB1dGVQcmVjaXNlSnVt
cFRhcmdldHMoY29kZUJsb2NrLCBqdW1wVGFyZ2V0cyk7CisgICAgY29tcHV0ZVByZWNpc2VKdW1w
VGFyZ2V0cyhjb2RlQmxvY2ssIGluc3RydWN0aW9uc0JlZ2luLCBpbnN0cnVjdGlvbkNvdW50LCBq
dW1wVGFyZ2V0cyk7CisKKyAgICBhdXRvIGFwcGVuZEJsb2NrID0gWyZdIChzdGQ6OnVuaXF1ZV9w
dHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiYmIGJsb2NrKSB7CisgICAgICAgIGJsb2NrLT5tX2luZGV4
ID0gYmFzaWNCbG9ja3Muc2l6ZSgpOworICAgICAgICBiYXNpY0Jsb2Nrcy5hcHBlbmQoV1RGTW92
ZShibG9jaykpOworICAgIH07CisKKyAgICBhdXRvIGxpbmtCbG9ja3MgPSBbJl0gKEJ5dGVjb2Rl
QmFzaWNCbG9jayogZnJvbSwgQnl0ZWNvZGVCYXNpY0Jsb2NrKiB0bykgeworICAgICAgICBmcm9t
LT5hZGRTdWNjZXNzb3IodG8pOworICAgIH07CiAKICAgICAvLyBDcmVhdGUgdGhlIGVudHJ5IGFu
ZCBleGl0IGJhc2ljIGJsb2Nrcy4KICAgICBiYXNpY0Jsb2Nrcy5yZXNlcnZlQ2FwYWNpdHkoanVt
cFRhcmdldHMuc2l6ZSgpICsgMik7CkBAIC0xMjIsMTkgKzEyNywxNyBAQCB2b2lkIGNvbXB1dGVC
eXRlY29kZUJhc2ljQmxvY2tzKENvZGVCbG9jayogY29kZUJsb2NrLCBWZWN0b3I8c3RkOjp1bmlx
dWVfcHRyPEJ5dAogICAgIGF1dG8gZmlyc3RCbG9jayA9IHN0ZDo6bWFrZV91bmlxdWU8Qnl0ZWNv
ZGVCYXNpY0Jsb2NrPigwLCAwKTsKICAgICBsaW5rQmxvY2tzKGVudHJ5LmdldCgpLCBmaXJzdEJs
b2NrLmdldCgpKTsKIAotICAgIGJhc2ljQmxvY2tzLmFwcGVuZChXVEZNb3ZlKGVudHJ5KSk7Cisg
ICAgYXBwZW5kQmxvY2soV1RGTW92ZShlbnRyeSkpOwogICAgIEJ5dGVjb2RlQmFzaWNCbG9jayog
Y3VycmVudCA9IGZpcnN0QmxvY2suZ2V0KCk7Ci0gICAgYmFzaWNCbG9ja3MuYXBwZW5kKFdURk1v
dmUoZmlyc3RCbG9jaykpOworICAgIGFwcGVuZEJsb2NrKFdURk1vdmUoZmlyc3RCbG9jaykpOwog
CiAgICAgYXV0byBleGl0ID0gc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZUJhc2ljQmxvY2s+KEJ5
dGVjb2RlQmFzaWNCbG9jazo6RXhpdEJsb2NrKTsKIAogICAgIGJvb2wgbmV4dEluc3RydWN0aW9u
SXNMZWFkZXIgPSBmYWxzZTsKIAogICAgIEludGVycHJldGVyKiBpbnRlcnByZXRlciA9IGNvZGVC
bG9jay0+dm0oKS0+aW50ZXJwcmV0ZXI7Ci0gICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0Jl
Z2luID0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpOwotICAgIHVuc2lnbmVkIGlu
c3RydWN0aW9uQ291bnQgPSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLnNpemUoKTsKICAgICBm
b3IgKHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0ID0gMDsgYnl0ZWNvZGVPZmZzZXQgPCBpbnN0cnVj
dGlvbkNvdW50OykgewotICAgICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGludGVycHJldGVyLT5n
ZXRPcGNvZGVJRChpbnN0cnVjdGlvbnNCZWdpbltieXRlY29kZU9mZnNldF0udS5vcGNvZGUpOwor
ICAgICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGludGVycHJldGVyLT5nZXRPcGNvZGVJRChpbnN0
cnVjdGlvbnNCZWdpbltieXRlY29kZU9mZnNldF0pOwogICAgICAgICB1bnNpZ25lZCBvcGNvZGVM
ZW5ndGggPSBvcGNvZGVMZW5ndGhzW29wY29kZUlEXTsKIAogICAgICAgICBib29sIGNyZWF0ZWRC
bG9jayA9IGZhbHNlOwpAQCAtMTQyLDcgKzE0NSw3IEBAIHZvaWQgY29tcHV0ZUJ5dGVjb2RlQmFz
aWNCbG9ja3MoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0
CiAgICAgICAgIGlmIChpc0p1bXBUYXJnZXQob3Bjb2RlSUQsIGp1bXBUYXJnZXRzLCBieXRlY29k
ZU9mZnNldCkgfHwgbmV4dEluc3RydWN0aW9uSXNMZWFkZXIpIHsKICAgICAgICAgICAgIGF1dG8g
bmV3QmxvY2sgPSBzdGQ6Om1ha2VfdW5pcXVlPEJ5dGVjb2RlQmFzaWNCbG9jaz4oYnl0ZWNvZGVP
ZmZzZXQsIG9wY29kZUxlbmd0aCk7CiAgICAgICAgICAgICBjdXJyZW50ID0gbmV3QmxvY2suZ2V0
KCk7Ci0gICAgICAgICAgICBiYXNpY0Jsb2Nrcy5hcHBlbmQoV1RGTW92ZShuZXdCbG9jaykpOwor
ICAgICAgICAgICAgYXBwZW5kQmxvY2soV1RGTW92ZShuZXdCbG9jaykpOwogICAgICAgICAgICAg
Y3JlYXRlZEJsb2NrID0gdHJ1ZTsKICAgICAgICAgICAgIG5leHRJbnN0cnVjdGlvbklzTGVhZGVy
ID0gZmFsc2U7CiAgICAgICAgICAgICBieXRlY29kZU9mZnNldCArPSBvcGNvZGVMZW5ndGg7CkBA
IC0xNjksOCArMTcyLDcgQEAgdm9pZCBjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2NrcyhDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXQKIAogICAgICAgICBib29s
IGZhbGxzVGhyb3VnaCA9IHRydWU7IAogICAgICAgICBmb3IgKHVuc2lnbmVkIGJ5dGVjb2RlT2Zm
c2V0ID0gYmxvY2stPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCk7IGJ5dGVjb2RlT2Zmc2V0IDwgYmxv
Y2stPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCkgKyBibG9jay0+dG90YWxCeXRlY29kZUxlbmd0aCgp
OykgewotICAgICAgICAgICAgY29uc3QgSW5zdHJ1Y3Rpb24mIGN1cnJlbnRJbnN0cnVjdGlvbiA9
IGluc3RydWN0aW9uc0JlZ2luW2J5dGVjb2RlT2Zmc2V0XTsKLSAgICAgICAgICAgIE9wY29kZUlE
IG9wY29kZUlEID0gaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGN1cnJlbnRJbnN0cnVjdGlvbi51
Lm9wY29kZSk7CisgICAgICAgICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGludGVycHJldGVyLT5n
ZXRPcGNvZGVJRChpbnN0cnVjdGlvbnNCZWdpbltieXRlY29kZU9mZnNldF0pOwogICAgICAgICAg
ICAgdW5zaWduZWQgb3Bjb2RlTGVuZ3RoID0gb3Bjb2RlTGVuZ3Roc1tvcGNvZGVJRF07CiAgICAg
ICAgICAgICAvLyBJZiB3ZSBmb3VuZCBhIHRlcm1pbmFsIGJ5dGVjb2RlLCBsaW5rIHRvIHRoZSBl
eGl0IGJsb2NrLgogICAgICAgICAgICAgaWYgKGlzVGVybWluYWwob3Bjb2RlSUQpKSB7CkBAIC0x
ODUsNyArMTg3LDcgQEAgdm9pZCBjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2NrcyhDb2RlQmxvY2sq
IGNvZGVCbG9jaywgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXQKICAgICAgICAgICAgIC8vIGJs
b2NrIGJlY2F1c2UgdGhlIGZpbmFsbHkgYmxvY2sgd2lsbCBjcmVhdGUgaXRzIG93biBjYXRjaCwg
d2hpY2ggd2lsbCBnZW5lcmF0ZSBhIEhhbmRsZXJJbmZvLgogICAgICAgICAgICAgaWYgKGlzVGhy
b3cob3Bjb2RlSUQpKSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKGJ5dGVjb2RlT2Zmc2V0ICsg
b3Bjb2RlTGVuZ3RoID09IGJsb2NrLT5sZWFkZXJCeXRlY29kZU9mZnNldCgpICsgYmxvY2stPnRv
dGFsQnl0ZWNvZGVMZW5ndGgoKSk7Ci0gICAgICAgICAgICAgICAgSGFuZGxlckluZm8qIGhhbmRs
ZXIgPSBjb2RlQmxvY2stPmhhbmRsZXJGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCk7
CisgICAgICAgICAgICAgICAgYXV0byogaGFuZGxlciA9IGNvZGVCbG9jay0+aGFuZGxlckZvckJ5
dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KTsKICAgICAgICAgICAgICAgICBmYWxsc1Rocm91
Z2ggPSBmYWxzZTsKICAgICAgICAgICAgICAgICBpZiAoIWhhbmRsZXIpIHsKICAgICAgICAgICAg
ICAgICAgICAgbGlua0Jsb2NrcyhibG9jaywgZXhpdC5nZXQoKSk7CkBAIC0yMDUsNyArMjA3LDcg
QEAgdm9pZCBjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2NrcyhDb2RlQmxvY2sqIGNvZGVCbG9jaywg
VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXQKICAgICAgICAgICAgIGlmIChpc0JyYW5jaChvcGNv
ZGVJRCkpIHsKICAgICAgICAgICAgICAgICBBU1NFUlQoYnl0ZWNvZGVPZmZzZXQgKyBvcGNvZGVM
ZW5ndGggPT0gYmxvY2stPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCkgKyBibG9jay0+dG90YWxCeXRl
Y29kZUxlbmd0aCgpKTsKICAgICAgICAgICAgICAgICBWZWN0b3I8dW5zaWduZWQsIDE+IGJ5dGVj
b2RlT2Zmc2V0c0p1bXBlZFRvOwotICAgICAgICAgICAgICAgIGZpbmRKdW1wVGFyZ2V0c0ZvckJ5
dGVjb2RlT2Zmc2V0KGNvZGVCbG9jaywgYnl0ZWNvZGVPZmZzZXQsIGJ5dGVjb2RlT2Zmc2V0c0p1
bXBlZFRvKTsKKyAgICAgICAgICAgICAgICBmaW5kSnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNl
dChjb2RlQmxvY2ssIGluc3RydWN0aW9uc0JlZ2luLCBieXRlY29kZU9mZnNldCwgYnl0ZWNvZGVP
ZmZzZXRzSnVtcGVkVG8pOwogCiAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IGJhc2ljQmxvY2tzLnNpemUoKTsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgIEJ5dGVj
b2RlQmFzaWNCbG9jayogb3RoZXJCbG9jayA9IGJhc2ljQmxvY2tzW2ldLmdldCgpOwpAQCAtMjI5
LDEwICsyMzEsMjAgQEAgdm9pZCBjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2NrcyhDb2RlQmxvY2sq
IGNvZGVCbG9jaywgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXQKICAgICAgICAgfQogICAgIH0K
IAotICAgIGJhc2ljQmxvY2tzLmFwcGVuZChXVEZNb3ZlKGV4aXQpKTsKKyAgICBhcHBlbmRCbG9j
ayhXVEZNb3ZlKGV4aXQpKTsKICAgICAKICAgICBmb3IgKGF1dG8mIGJhc2ljQmxvY2sgOiBiYXNp
Y0Jsb2NrcykKICAgICAgICAgYmFzaWNCbG9jay0+c2hyaW5rVG9GaXQoKTsKIH0KIAordm9pZCBC
eXRlY29kZUJhc2ljQmxvY2s6OmNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzKENvZGVCbG9jayog
Y29kZUJsb2NrLCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGluc3Ry
dWN0aW9uQ291bnQsIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4m
IGJhc2ljQmxvY2tzKQoreworICAgIGNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzSW50ZXJuYWwo
Y29kZUJsb2NrLCBpbnN0cnVjdGlvbnNCZWdpbiwgaW5zdHJ1Y3Rpb25Db3VudCwgYmFzaWNCbG9j
a3MpOworfQorCit2b2lkIEJ5dGVjb2RlQmFzaWNCbG9jazo6Y29tcHV0ZUJ5dGVjb2RlQmFzaWNC
bG9ja3MoVW5saW5rZWRDb2RlQmxvY2sqIGNvZGVCbG9jaywgVW5saW5rZWRJbnN0cnVjdGlvbiog
aW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQsIFZlY3RvcjxzdGQ6
OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mIGJhc2ljQmxvY2tzKQoreworICAgIEJ5
dGVjb2RlQmFzaWNCbG9jazo6Y29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3NJbnRlcm5hbChjb2Rl
QmxvY2ssIGluc3RydWN0aW9uc0JlZ2luLCBpbnN0cnVjdGlvbkNvdW50LCBiYXNpY0Jsb2Nrcyk7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5oCmluZGV4IGNkNzE0NzdlZDUwNmFhNzg4MDIx
NjVmYWNkYjdhNmQ0NmYzOGRjMmEuLjdmMTg0ZjQ3NzYyMGFjYWQ3NDUxM2EwNTA4MmQ1NzgyMmRm
ZDg1MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZUJhc2ljQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVCYXNpY0Jsb2NrLmgKQEAgLTMzLDYgKzMzLDkgQEAKIG5hbWVzcGFjZSBKU0MgewogCiBjbGFz
cyBDb2RlQmxvY2s7CitjbGFzcyBVbmxpbmtlZENvZGVCbG9jazsKK3N0cnVjdCBJbnN0cnVjdGlv
bjsKK3N0cnVjdCBVbmxpbmtlZEluc3RydWN0aW9uOwogCiBjbGFzcyBCeXRlY29kZUJhc2ljQmxv
Y2sgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtNDgsMTggKzUxLDI4IEBAIGNs
YXNzIEJ5dGVjb2RlQmFzaWNCbG9jayB7CiAgICAgdW5zaWduZWQgbGVhZGVyQnl0ZWNvZGVPZmZz
ZXQoKSB7IHJldHVybiBtX2xlYWRlckJ5dGVjb2RlT2Zmc2V0OyB9CiAgICAgdW5zaWduZWQgdG90
YWxCeXRlY29kZUxlbmd0aCgpIHsgcmV0dXJuIG1fdG90YWxCeXRlY29kZUxlbmd0aDsgfQogCi0g
ICAgVmVjdG9yPHVuc2lnbmVkPiYgYnl0ZWNvZGVPZmZzZXRzKCkgeyByZXR1cm4gbV9ieXRlY29k
ZU9mZnNldHM7IH0KLSAgICB2b2lkIGFkZEJ5dGVjb2RlTGVuZ3RoKHVuc2lnbmVkKTsKKyAgICBj
b25zdCBWZWN0b3I8dW5zaWduZWQ+JiBieXRlY29kZU9mZnNldHMoKSBjb25zdCB7IHJldHVybiBt
X2J5dGVjb2RlT2Zmc2V0czsgfQogCi0gICAgVmVjdG9yPEJ5dGVjb2RlQmFzaWNCbG9jayo+JiBz
dWNjZXNzb3JzKCkgeyByZXR1cm4gbV9zdWNjZXNzb3JzOyB9Ci0gICAgdm9pZCBhZGRTdWNjZXNz
b3IoQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaykgeyBtX3N1Y2Nlc3NvcnMuYXBwZW5kKGJsb2Nr
KTsgfQorICAgIGNvbnN0IFZlY3RvcjxCeXRlY29kZUJhc2ljQmxvY2sqPiYgc3VjY2Vzc29ycygp
IGNvbnN0IHsgcmV0dXJuIG1fc3VjY2Vzc29yczsgfQogCiAgICAgRmFzdEJpdFZlY3RvciYgaW4o
KSB7IHJldHVybiBtX2luOyB9CiAgICAgRmFzdEJpdFZlY3RvciYgb3V0KCkgeyByZXR1cm4gbV9v
dXQ7IH0KIAorICAgIHVuc2lnbmVkIGluZGV4KCkgY29uc3QgeyByZXR1cm4gbV9pbmRleDsgfQor
CisgICAgc3RhdGljIHZvaWQgY29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MoQ29kZUJsb2NrKiwg
SW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50
LCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+Jik7CisgICAgc3Rh
dGljIHZvaWQgY29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MoVW5saW5rZWRDb2RlQmxvY2sqLCBV
bmxpbmtlZEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgaW5zdHJ1Y3Rp
b25Db3VudCwgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYpOwor
CiBwcml2YXRlOgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEJsb2NrLCB0eXBlbmFtZSBJbnN0cnVj
dGlvbj4gc3RhdGljIHZvaWQgY29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3NJbnRlcm5hbChCbG9j
ayogY29kZUJsb2NrLCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGlu
c3RydWN0aW9uQ291bnQsIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2Nr
Pj4mIGJhc2ljQmxvY2tzKTsKKworICAgIHZvaWQgYWRkU3VjY2Vzc29yKEJ5dGVjb2RlQmFzaWNC
bG9jayogYmxvY2spIHsgbV9zdWNjZXNzb3JzLmFwcGVuZChibG9jayk7IH0KKworICAgIHZvaWQg
YWRkQnl0ZWNvZGVMZW5ndGgodW5zaWduZWQpOworCiAgICAgdW5zaWduZWQgbV9sZWFkZXJCeXRl
Y29kZU9mZnNldDsKICAgICB1bnNpZ25lZCBtX3RvdGFsQnl0ZWNvZGVMZW5ndGg7CisgICAgdW5z
aWduZWQgbV9pbmRleDsKIAogICAgIFZlY3Rvcjx1bnNpZ25lZD4gbV9ieXRlY29kZU9mZnNldHM7
CiAgICAgVmVjdG9yPEJ5dGVjb2RlQmFzaWNCbG9jayo+IG1fc3VjY2Vzc29yczsKQEAgLTY4LDgg
KzgxLDYgQEAgY2xhc3MgQnl0ZWNvZGVCYXNpY0Jsb2NrIHsKICAgICBGYXN0Qml0VmVjdG9yIG1f
b3V0OwogfTsKIAotdm9pZCBjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2NrcyhDb2RlQmxvY2sqLCBW
ZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+Jik7Ci0KIGlubGluZSBC
eXRlY29kZUJhc2ljQmxvY2s6OkJ5dGVjb2RlQmFzaWNCbG9jayh1bnNpZ25lZCBzdGFydCwgdW5z
aWduZWQgbGVuZ3RoKQogICAgIDogbV9sZWFkZXJCeXRlY29kZU9mZnNldChzdGFydCkKICAgICAs
IG1fdG90YWxCeXRlY29kZUxlbmd0aChsZW5ndGgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi43OGY3YWJhMTRmNzkyYjRjMmRmYzlmYWJjNmFkYmYzM2JkYWJhZTE4Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlR2Vu
ZXJhdG9yaWZpY2F0aW9uLmNwcApAQCAtMCwwICsxLDI2MyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNiBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisgKiBDb3B5cmln
aHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24u
aCIKKworI2luY2x1ZGUgIkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGluZXMuaCIKKyNpbmNs
dWRlICJCeXRlY29kZVJld3JpdGVyLmgiCisjaW5jbHVkZSAiQnl0ZWNvZGVVc2VEZWYuaCIKKyNp
bmNsdWRlICJJZGVudGlmaWVySW5saW5lcy5oIgorI2luY2x1ZGUgIkludGVycHJldGVySW5saW5l
cy5oIgorI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5l
cy5oIgorI2luY2x1ZGUgIkpTR2VuZXJhdG9yRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJTdHJvbmdJ
bmxpbmVzLmgiCisjaW5jbHVkZSAiVW5saW5rZWRDb2RlQmxvY2suaCIKKyNpbmNsdWRlIDx3dGYv
T3B0aW9uYWwuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK3N0cnVjdCBZaWVsZERhdGEgeworICAg
IHNpemVfdCBwb2ludCB7IDAgfTsKKyAgICBpbnQgYXJndW1lbnQgeyAwIH07CisgICAgRmFzdEJp
dFZlY3RvciBsaXZlbmVzczsKK307CisKK2NsYXNzIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9u
IHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIFZlY3RvcjxZaWVsZERhdGE+IFlpZWxkczsKKworICAg
IEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uKFVubGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IFVubGlua2VkQ29kZUJsb2NrOjpVbnBhY2tlZEluc3RydWN0aW9ucyYgaW5zdHJ1Y3Rpb25zLCBT
eW1ib2xUYWJsZSogZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZSwgaW50IGdlbmVyYXRvckZyYW1l
U3ltYm9sVGFibGVJbmRleCkKKyAgICAgICAgOiBtX2dyYXBoKGNvZGVCbG9jaywgaW5zdHJ1Y3Rp
b25zKQorICAgICAgICAsIG1fZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZSgqY29kZUJsb2NrLT52
bSgpLCBnZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlKQorICAgICAgICAsIG1fZ2VuZXJhdG9yRnJh
bWVTeW1ib2xUYWJsZUluZGV4KGdlbmVyYXRvckZyYW1lU3ltYm9sVGFibGVJbmRleCkKKyAgICB7
CisgICAgICAgIGZvciAoQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jayA6IG1fZ3JhcGgpIHsKKyAg
ICAgICAgICAgIGZvciAodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQgOiBibG9jay0+Ynl0ZWNvZGVP
ZmZzZXRzKCkpIHsKKyAgICAgICAgICAgICAgICBjb25zdCBVbmxpbmtlZEluc3RydWN0aW9uKiBw
YyA9ICZtX2dyYXBoLmluc3RydWN0aW9ucygpW2J5dGVjb2RlT2Zmc2V0XTsKKyAgICAgICAgICAg
ICAgICBzd2l0Y2ggKHBjLT51Lm9wY29kZSkgeworICAgICAgICAgICAgICAgIGNhc2Ugb3BfZW50
ZXI6IHsKKyAgICAgICAgICAgICAgICAgICAgbV9lbnRlclBvaW50ID0gYnl0ZWNvZGVPZmZzZXQ7
CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgICAgIGNhc2Ugb3BfeWllbGQ6IHsKKyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg
bGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gcGNbMl0udS5pbmRleDsKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKGxpdmVDYWxsZWVMb2NhbHNJbmRleCA+PSBtX3lpZWxkcy5zaXplKCkpCisgICAgICAg
ICAgICAgICAgICAgICAgICBtX3lpZWxkcy5yZXNpemUobGl2ZUNhbGxlZUxvY2Fsc0luZGV4ICsg
MSk7CisgICAgICAgICAgICAgICAgICAgIFlpZWxkRGF0YSYgZGF0YSA9IG1feWllbGRzW2xpdmVD
YWxsZWVMb2NhbHNJbmRleF07CisgICAgICAgICAgICAgICAgICAgIGRhdGEucG9pbnQgPSBieXRl
Y29kZU9mZnNldDsKKyAgICAgICAgICAgICAgICAgICAgZGF0YS5hcmd1bWVudCA9IHBjWzNdLnUu
b3BlcmFuZDsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQor
CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAg
c3RydWN0IFN0b3JhZ2UgeworICAgICAgICBJZGVudGlmaWVyIGlkZW50aWZpZXI7CisgICAgICAg
IHVuc2lnbmVkIGlkZW50aWZpZXJJbmRleDsKKyAgICAgICAgU2NvcGVPZmZzZXQgc2NvcGVPZmZz
ZXQ7CisgICAgfTsKKworICAgIHZvaWQgcnVuKCk7CisKKyAgICBCeXRlY29kZUdyYXBoPFVubGlu
a2VkQ29kZUJsb2NrPiYgZ3JhcGgoKSB7IHJldHVybiBtX2dyYXBoOyB9CisKKyAgICBjb25zdCBZ
aWVsZHMmIHlpZWxkcygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV95aWVsZHM7Cisg
ICAgfQorCisgICAgWWllbGRzJiB5aWVsZHMoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1feWll
bGRzOworICAgIH0KKworICAgIHVuc2lnbmVkIGVudGVyUG9pbnQoKSBjb25zdAorICAgIHsKKyAg
ICAgICAgcmV0dXJuIG1fZW50ZXJQb2ludDsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgU3RvcmFn
ZSBzdG9yYWdlRm9yR2VuZXJhdG9yTG9jYWwodW5zaWduZWQgaW5kZXgpCisgICAgeworICAgICAg
ICAvLyBXZSBhc3NpZ24gYSBzeW1ib2wgdG8gYSByZWdpc3Rlci4gVGhlcmUgaXMgb25lLW9uLW9u
ZSBjb3JyZXNwb25kaW5nIGJldHdlZW4gYSByZWdpc3RlciBhbmQgYSBzeW1ib2wuCisgICAgICAg
IC8vIEJ5IGRvaW5nIHNvLCB3ZSBhbGxvY2F0ZSB0aGUgc3BlY2lmaWMgc3RvcmFnZSB0byBzYXZl
IHRoZSBnaXZlbiByZWdpc3Rlci4KKyAgICAgICAgLy8gVGhpcyBhbGxvdyB1cyBub3QgdG8gc2F2
ZSBhbGwgdGhlIGxpdmUgcmVnaXN0ZXJzIGV2ZW4gaWYgdGhlIHJlZ2lzdGVycyBhcmUgbm90IG92
ZXJ3cml0dGVuIGZyb20gdGhlIHByZXZpb3VzIHJlc3VtaW5nIHRpbWUuCisgICAgICAgIC8vIEl0
IG1lYW5zIHRoYXQsIHRoZSByZWdpc3RlciBjYW4gYmUgcmV0cmlldmVkIGV2ZW4gaWYgdGhlIGlt
bWVkaWF0ZSBwcmV2aW91cyBvcF9zYXZlIGRvZXMgbm90IHNhdmUgaXQuCisKKyAgICAgICAgaWYg
KG1fc3RvcmFnZXMuc2l6ZSgpIDw9IGluZGV4KQorICAgICAgICAgICAgbV9zdG9yYWdlcy5yZXNp
emUoaW5kZXggKyAxKTsKKyAgICAgICAgaWYgKE9wdGlvbmFsPFN0b3JhZ2U+IHN0b3JhZ2UgPSBt
X3N0b3JhZ2VzW2luZGV4XSkKKyAgICAgICAgICAgIHJldHVybiAqc3RvcmFnZTsKKworICAgICAg
ICBVbmxpbmtlZENvZGVCbG9jayogY29kZUJsb2NrID0gbV9ncmFwaC5jb2RlQmxvY2soKTsKKyAg
ICAgICAgSWRlbnRpZmllciBpZGVudGlmaWVyID0gSWRlbnRpZmllcjo6ZnJvbVVpZChQcml2YXRl
TmFtZSgpKTsKKyAgICAgICAgdW5zaWduZWQgaWRlbnRpZmllckluZGV4ID0gY29kZUJsb2NrLT5u
dW1iZXJPZklkZW50aWZpZXJzKCk7CisgICAgICAgIGNvZGVCbG9jay0+YWRkSWRlbnRpZmllcihp
ZGVudGlmaWVyKTsKKyAgICAgICAgU2NvcGVPZmZzZXQgc2NvcGVPZmZzZXQgPSBtX2dlbmVyYXRv
ckZyYW1lU3ltYm9sVGFibGUtPnRha2VOZXh0U2NvcGVPZmZzZXQoTm9Mb2NraW5nTmVjZXNzYXJ5
KTsKKyAgICAgICAgbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlLT5zZXQoTm9Mb2NraW5nTmVj
ZXNzYXJ5LCBpZGVudGlmaWVyLmltcGwoKSwgU3ltYm9sVGFibGVFbnRyeShWYXJPZmZzZXQoc2Nv
cGVPZmZzZXQpKSk7CisKKyAgICAgICAgU3RvcmFnZSBzdG9yYWdlID0geworICAgICAgICAgICAg
aWRlbnRpZmllciwKKyAgICAgICAgICAgIGlkZW50aWZpZXJJbmRleCwKKyAgICAgICAgICAgIHNj
b3BlT2Zmc2V0CisgICAgICAgIH07CisgICAgICAgIG1fc3RvcmFnZXNbaW5kZXhdID0gc3RvcmFn
ZTsKKyAgICAgICAgcmV0dXJuIHN0b3JhZ2U7CisgICAgfQorCisgICAgdW5zaWduZWQgbV9lbnRl
clBvaW50IHsgMCB9OworICAgIEJ5dGVjb2RlR3JhcGg8VW5saW5rZWRDb2RlQmxvY2s+IG1fZ3Jh
cGg7CisgICAgVmVjdG9yPE9wdGlvbmFsPFN0b3JhZ2U+PiBtX3N0b3JhZ2VzOworICAgIFlpZWxk
cyBtX3lpZWxkczsKKyAgICBTdHJvbmc8U3ltYm9sVGFibGU+IG1fZ2VuZXJhdG9yRnJhbWVTeW1i
b2xUYWJsZTsKKyAgICBpbnQgbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlSW5kZXg7Cit9Owor
CitjbGFzcyBHZW5lcmF0b3JMaXZlbmVzc0FuYWx5c2lzIDogcHVibGljIEJ5dGVjb2RlTGl2ZW5l
c3NQcm9wYWdhdGlvbjxHZW5lcmF0b3JMaXZlbmVzc0FuYWx5c2lzPiB7CitwdWJsaWM6CisgICAg
R2VuZXJhdG9yTGl2ZW5lc3NBbmFseXNpcyhCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbiYgZ2Vu
ZXJhdG9yaWZpY2F0aW9uKQorICAgICAgICA6IG1fZ2VuZXJhdG9yaWZpY2F0aW9uKGdlbmVyYXRv
cmlmaWNhdGlvbikKKyAgICB7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rv
cj4KKyAgICB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoVW5saW5rZWRDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgT3Bjb2RlSUQgb3Bjb2RlSUQsIFVubGlua2VkSW5zdHJ1Y3Rpb24qIGlu
c3RydWN0aW9uLCBGYXN0Qml0VmVjdG9yJiwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikKKyAgICB7
CisgICAgICAgIEpTQzo6Y29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChjb2RlQmxvY2ssIG9w
Y29kZUlELCBpbnN0cnVjdGlvbiwgZnVuY3Rvcik7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgRnVuY3Rvcj4KKyAgICB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoVW5s
aW5rZWRDb2RlQmxvY2sqIGNvZGVCbG9jaywgT3Bjb2RlSUQgb3Bjb2RlSUQsIFVubGlua2VkSW5z
dHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBGYXN0Qml0VmVjdG9yJiwgY29uc3QgRnVuY3RvciYgZnVu
Y3RvcikKKyAgICB7CisgICAgICAgIEpTQzo6Y29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldChj
b2RlQmxvY2ssIG9wY29kZUlELCBpbnN0cnVjdGlvbiwgZnVuY3Rvcik7CisgICAgfQorCisgICAg
dm9pZCBydW4oKQorICAgIHsKKyAgICAgICAgLy8gUGVyZm9ybSBtb2RpZmllZCBsaXZlbmVzcyBh
bmFseXNpcyB0byBkZXRlcm1pbmUgd2hpY2ggbG9jYWxzIGFyZSBsaXZlIGF0IHRoZSBtZXJnZSBw
b2ludHMuCisgICAgICAgIC8vIFRoaXMgcHJvZHVjZXMgdGhlIGNvbnNlcnZhdGl2ZSByZXN1bHRz
IGZvciB0aGUgcXVlc3Rpb24sICJ3aGljaCB2YXJpYWJsZXMgc2hvdWxkIGJlIHNhdmVkIGFuZCBy
ZXN1bWVkPyIuCisKKyAgICAgICAgcnVuTGl2ZW5lc3NGaXhwb2ludChtX2dlbmVyYXRvcmlmaWNh
dGlvbi5ncmFwaCgpKTsKKworICAgICAgICBmb3IgKFlpZWxkRGF0YSYgZGF0YSA6IG1fZ2VuZXJh
dG9yaWZpY2F0aW9uLnlpZWxkcygpKQorICAgICAgICAgICAgZGF0YS5saXZlbmVzcyA9IGdldExp
dmVuZXNzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQobV9nZW5lcmF0b3JpZmljYXRpb24uZ3JhcGgoKSwg
ZGF0YS5wb2ludCArIG9wY29kZUxlbmd0aChvcF95aWVsZCkpOworICAgIH0KKworcHJpdmF0ZToK
KyAgICBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbiYgbV9nZW5lcmF0b3JpZmljYXRpb247Cit9
OworCit2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uOjpydW4oKQoreworICAgIC8vIFdl
IGNhbGN1bGF0ZSB0aGUgbGl2ZW5lc3MgYXQgZWFjaCBtZXJnZSBwb2ludC4gVGhpcyBnaXZlcyB1
cyB0aGUgaW5mb3JtYXRpb24gd2hpY2ggcmVnaXN0ZXJzIHNob3VsZCBiZSBzYXZlZCBhbmQgcmVz
dW1lZCBjb25zZXJ2YXRpdmVseS4KKworICAgIHsKKyAgICAgICAgR2VuZXJhdG9yTGl2ZW5lc3NB
bmFseXNpcyBwYXNzKCp0aGlzKTsKKyAgICAgICAgcGFzcy5ydW4oKTsKKyAgICB9CisKKyAgICBV
bmxpbmtlZENvZGVCbG9jayogY29kZUJsb2NrID0gbV9ncmFwaC5jb2RlQmxvY2soKTsKKyAgICBC
eXRlY29kZVJld3JpdGVyIHJld3JpdGVyKG1fZ3JhcGgpOworCisgICAgLy8gU2V0dXAgdGhlIGds
b2JhbCBzd2l0Y2ggZm9yIHRoZSBnZW5lcmF0b3IuCisgICAgeworICAgICAgICB1bnNpZ25lZCBu
ZXh0VG9FbnRlclBvaW50ID0gZW50ZXJQb2ludCgpICsgb3Bjb2RlTGVuZ3RoKG9wX2VudGVyKTsK
KyAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHN0YXRlID0gdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1l
bnQoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6R2VuZXJhdG9yQXJn
dW1lbnQ6OlN0YXRlKSk7CisgICAgICAgIGF1dG8mIGp1bXBUYWJsZSA9IHJld3JpdGVyLmluc2Vy
dFN3aXRjaEltbWVkaWF0ZUJlZm9yZShuZXh0VG9FbnRlclBvaW50LCBuZXh0VG9FbnRlclBvaW50
LCBzdGF0ZS5vZmZzZXQoKSk7CisgICAgICAgIGp1bXBUYWJsZS5taW4gPSAwOworICAgICAgICBq
dW1wVGFibGUuYnJhbmNoT2Zmc2V0cy5yZXNpemUobV95aWVsZHMuc2l6ZSgpICsgMSk7CisgICAg
ICAgIGp1bXBUYWJsZS5icmFuY2hPZmZzZXRzLmZpbGwoMCk7CisgICAgICAgIGp1bXBUYWJsZS5h
ZGQoMCwgbmV4dFRvRW50ZXJQb2ludCk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBtX3lpZWxkcy5zaXplKCk7ICsraSkKKyAgICAgICAgICAgIGp1bXBUYWJsZS5hZGQoaSArIDEs
IG1feWllbGRzW2ldLnBvaW50KTsKKyAgICB9CisKKyAgICBmb3IgKGNvbnN0IFlpZWxkRGF0YSYg
ZGF0YSA6IG1feWllbGRzKSB7CisgICAgICAgIFZpcnR1YWxSZWdpc3RlciBzY29wZSA9IHZpcnR1
YWxSZWdpc3RlckZvckFyZ3VtZW50KHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yRnVu
Y3Rpb246OkdlbmVyYXRvckFyZ3VtZW50OjpGcmFtZSkpOworCisgICAgICAgIC8vIEVtaXQgc2F2
ZSBzZXF1ZW5jZS4KKyAgICAgICAgcmV3cml0ZXIuaW5zZXJ0RnJhZ21lbnRCZWZvcmUoZGF0YS5w
b2ludCwgWyZdKEJ5dGVjb2RlUmV3cml0ZXI6OkZyYWdtZW50JiBmcmFnbWVudCkgeworICAgICAg
ICAgICAgZGF0YS5saXZlbmVzcy5mb3JFYWNoU2V0Qml0KFsmXShzaXplX3QgaW5kZXgpIHsKKyAg
ICAgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCA9IHZpcnR1YWxSZWdpc3RlckZv
ckxvY2FsKGluZGV4KTsKKyAgICAgICAgICAgICAgICBTdG9yYWdlIHN0b3JhZ2UgPSBzdG9yYWdl
Rm9yR2VuZXJhdG9yTG9jYWwoaW5kZXgpOworCisgICAgICAgICAgICAgICAgZnJhZ21lbnQuYXBw
ZW5kKAorICAgICAgICAgICAgICAgICAgICBvcF9wdXRfdG9fc2NvcGUsCisgICAgICAgICAgICAg
ICAgICAgIHNjb3BlLm9mZnNldCgpLCAvLyBzY29wZQorICAgICAgICAgICAgICAgICAgICBzdG9y
YWdlLmlkZW50aWZpZXJJbmRleCwgLy8gaWRlbnRpZmllcgorICAgICAgICAgICAgICAgICAgICBv
cGVyYW5kLm9mZnNldCgpLCAvLyB2YWx1ZQorICAgICAgICAgICAgICAgICAgICBHZXRQdXRJbmZv
KERvTm90VGhyb3dJZk5vdEZvdW5kLCBMb2NhbENsb3N1cmVWYXIsIEluaXRpYWxpemF0aW9uTW9k
ZTo6Tm90SW5pdGlhbGl6YXRpb24pLm9wZXJhbmQoKSwgLy8gaW5mbworICAgICAgICAgICAgICAg
ICAgICBtX2dlbmVyYXRvckZyYW1lU3ltYm9sVGFibGVJbmRleCwgLy8gc3ltYm9sIHRhYmxlIGNv
bnN0YW50IGluZGV4CisgICAgICAgICAgICAgICAgICAgIHN0b3JhZ2Uuc2NvcGVPZmZzZXQub2Zm
c2V0KCkgLy8gc2NvcGUgb2Zmc2V0CisgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgIH0p
OworCisgICAgICAgICAgICAvLyBJbnNlcnQgb3BfcmV0IGp1c3QgYWZ0ZXIgc2F2ZSBzZXF1ZW5j
ZS4KKyAgICAgICAgICAgIGZyYWdtZW50LmFwcGVuZChvcF9yZXQsIGRhdGEuYXJndW1lbnQpOwor
ICAgICAgICB9KTsKKworICAgICAgICAvLyBFbWl0IHJlc3VtZSBzZXF1ZW5jZS4KKyAgICAgICAg
cmV3cml0ZXIuaW5zZXJ0RnJhZ21lbnRCZWZvcmUoZGF0YS5wb2ludCArIG9wY29kZUxlbmd0aChv
cF95aWVsZCksIFsmXShCeXRlY29kZVJld3JpdGVyOjpGcmFnbWVudCYgZnJhZ21lbnQpIHsKKyAg
ICAgICAgICAgIGRhdGEubGl2ZW5lc3MuZm9yRWFjaFNldEJpdChbJl0oc2l6ZV90IGluZGV4KSB7
CisgICAgICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQgPSB2aXJ0dWFsUmVnaXN0
ZXJGb3JMb2NhbChpbmRleCk7CisgICAgICAgICAgICAgICAgU3RvcmFnZSBzdG9yYWdlID0gc3Rv
cmFnZUZvckdlbmVyYXRvckxvY2FsKGluZGV4KTsKKworICAgICAgICAgICAgICAgIFVubGlua2Vk
VmFsdWVQcm9maWxlIHByb2ZpbGUgPSBjb2RlQmxvY2stPmFkZFZhbHVlUHJvZmlsZSgpOworICAg
ICAgICAgICAgICAgIGZyYWdtZW50LmFwcGVuZCgKKyAgICAgICAgICAgICAgICAgICAgb3BfZ2V0
X2Zyb21fc2NvcGUsCisgICAgICAgICAgICAgICAgICAgIG9wZXJhbmQub2Zmc2V0KCksIC8vIGRz
dAorICAgICAgICAgICAgICAgICAgICBzY29wZS5vZmZzZXQoKSwgLy8gc2NvcGUKKyAgICAgICAg
ICAgICAgICAgICAgc3RvcmFnZS5pZGVudGlmaWVySW5kZXgsIC8vIGlkZW50aWZpZXIKKyAgICAg
ICAgICAgICAgICAgICAgR2V0UHV0SW5mbyhEb05vdFRocm93SWZOb3RGb3VuZCwgTG9jYWxDbG9z
dXJlVmFyLCBJbml0aWFsaXphdGlvbk1vZGU6Ok5vdEluaXRpYWxpemF0aW9uKS5vcGVyYW5kKCks
IC8vIGluZm8KKyAgICAgICAgICAgICAgICAgICAgMCwgLy8gbG9jYWwgc2NvcGUgZGVwdGgKKyAg
ICAgICAgICAgICAgICAgICAgc3RvcmFnZS5zY29wZU9mZnNldC5vZmZzZXQoKSwgLy8gc2NvcGUg
b2Zmc2V0CisgICAgICAgICAgICAgICAgICAgIHByb2ZpbGUgLy8gcHJvZmlsZQorICAgICAgICAg
ICAgICAgICk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgLy8gQ2xp
cCB0aGUgdW5uZWNlc3NhcnkgYnl0ZWNvZGVzLgorICAgICAgICByZXdyaXRlci5yZW1vdmVCeXRl
Y29kZShkYXRhLnBvaW50KTsKKyAgICB9CisKKyAgICByZXdyaXRlci5leGVjdXRlKCk7Cit9CisK
K3ZvaWQgcGVyZm9ybUdlbmVyYXRvcmlmaWNhdGlvbihVbmxpbmtlZENvZGVCbG9jayogY29kZUJs
b2NrLCBVbmxpbmtlZENvZGVCbG9jazo6VW5wYWNrZWRJbnN0cnVjdGlvbnMmIGluc3RydWN0aW9u
cywgU3ltYm9sVGFibGUqIGdlbmVyYXRvckZyYW1lU3ltYm9sVGFibGUsIGludCBnZW5lcmF0b3JG
cmFtZVN5bWJvbFRhYmxlSW5kZXgpCit7CisgICAgQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24g
cGFzcyhjb2RlQmxvY2ssIGluc3RydWN0aW9ucywgZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZSwg
Z2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZUluZGV4KTsKKyAgICBwYXNzLnJ1bigpOworfQorCit9
IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzdiNjEz
NzQ2MDg2YWUzNGM0YzBhMjJiZjRlNjdjNzZlNmNmZDRlOQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5o
CkBAIC0wLDAgKzEsMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgWXVzdWtlIFN1enVr
aSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNs
dWRlICJVbmxpbmtlZENvZGVCbG9jay5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgU3lt
Ym9sVGFibGU7CisKK3ZvaWQgcGVyZm9ybUdlbmVyYXRvcmlmaWNhdGlvbihVbmxpbmtlZENvZGVC
bG9jayosIFVubGlua2VkQ29kZUJsb2NrOjpVbnBhY2tlZEluc3RydWN0aW9ucyYsIFN5bWJvbFRh
YmxlKiBnZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlLCBpbnQgZ2VuZXJhdG9yRnJhbWVTeW1ib2xU
YWJsZUluZGV4KTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVHcmFwaC5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlR3JhcGguaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYzM2ODE2YzA2NDMyMTVh
ZTMxNTc3YTUyYWQ4NDVhNTc5MjM1ZGY0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlR3JhcGguaApAQCAtMCwwICsxLDEyNCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNiBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5j
b20+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQnl0ZWNvZGVCYXNpY0Js
b2NrLmgiCisjaW5jbHVkZSA8d3RmL0luZGV4ZWRDb250YWluZXJJdGVyYXRvci5oPgorI2luY2x1
ZGUgPHd0Zi9JdGVyYXRvclJhbmdlLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1l
c3BhY2UgSlNDIHsKKworY2xhc3MgQnl0ZWNvZGVCYXNpY0Jsb2NrOworCit0ZW1wbGF0ZTx0eXBl
bmFtZSBCbG9jaz4KK2NsYXNzIEJ5dGVjb2RlR3JhcGggeworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEJ5dGVjb2RlR3JhcGgpOworcHVibGlj
OgorICAgIHR5cGVkZWYgQmxvY2sgQ29kZUJsb2NrOworICAgIHR5cGVkZWYgdHlwZW5hbWUgQmxv
Y2s6Okluc3RydWN0aW9uIEluc3RydWN0aW9uOworICAgIHR5cGVkZWYgVmVjdG9yPHN0ZDo6dW5p
cXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiBCYXNpY0Jsb2Nrc1ZlY3RvcjsKKworICAgIGlu
bGluZSBCeXRlY29kZUdyYXBoKEJsb2NrKiwgdHlwZW5hbWUgQmxvY2s6OlVucGFja2VkSW5zdHJ1
Y3Rpb25zJik7CisKKyAgICBCbG9jayogY29kZUJsb2NrKCkgY29uc3QgeyByZXR1cm4gbV9jb2Rl
QmxvY2s7IH0KKworICAgIHR5cGVuYW1lIEJsb2NrOjpVbnBhY2tlZEluc3RydWN0aW9ucyYgaW5z
dHJ1Y3Rpb25zKCkgeyByZXR1cm4gbV9pbnN0cnVjdGlvbnM7IH0KKworICAgIFdURjo6SXRlcmF0
b3JSYW5nZTxCYXNpY0Jsb2Nrc1ZlY3Rvcjo6cmV2ZXJzZV9pdGVyYXRvcj4gYmFzaWNCbG9ja3NJ
blJldmVyc2VPcmRlcigpCisgICAgeworICAgICAgICByZXR1cm4gV1RGOjptYWtlSXRlcmF0b3JS
YW5nZShtX2Jhc2ljQmxvY2tzLnJiZWdpbigpLCBtX2Jhc2ljQmxvY2tzLnJlbmQoKSk7CisgICAg
fQorCisgICAgc3RhdGljIGJvb2wgYmxvY2tDb250YWluc0J5dGVjb2RlT2Zmc2V0KEJ5dGVjb2Rl
QmFzaWNCbG9jayogYmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KQorICAgIHsKKyAgICAg
ICAgdW5zaWduZWQgbGVhZGVyT2Zmc2V0ID0gYmxvY2stPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCk7
CisgICAgICAgIHJldHVybiBieXRlY29kZU9mZnNldCA+PSBsZWFkZXJPZmZzZXQgJiYgYnl0ZWNv
ZGVPZmZzZXQgPCBsZWFkZXJPZmZzZXQgKyBibG9jay0+dG90YWxCeXRlY29kZUxlbmd0aCgpOwor
ICAgIH0KKworICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogZmluZEJhc2ljQmxvY2tGb3JCeXRlY29k
ZU9mZnNldCh1bnNpZ25lZCBieXRlY29kZU9mZnNldCkKKyAgICB7CisgICAgICAgIC8qCisgICAg
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9iYXNpY0Jsb2Nrcy5zaXplKCk7IGkr
KykgeworICAgICAgICAgICAgICAgIGlmIChibG9ja0NvbnRhaW5zQnl0ZWNvZGVPZmZzZXQobV9i
YXNpY0Jsb2Nrc1tpXS5nZXQoKSwgYnl0ZWNvZGVPZmZzZXQpKQorICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gbV9iYXNpY0Jsb2Nrc1tpXS5nZXQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIHJldHVybiAwOworICAgICAgICAqLworCisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxCeXRl
Y29kZUJhc2ljQmxvY2s+KiBiYXNpY0Jsb2NrID0gYXBwcm94aW1hdGVCaW5hcnlTZWFyY2g8c3Rk
Ojp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4sIHVuc2lnbmVkPihtX2Jhc2ljQmxvY2tz
LCBtX2Jhc2ljQmxvY2tzLnNpemUoKSwgYnl0ZWNvZGVPZmZzZXQsIFtdIChzdGQ6OnVuaXF1ZV9w
dHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiogYmFzaWNCbG9jaykgeyByZXR1cm4gKCpiYXNpY0Jsb2Nr
KS0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKTsgfSk7CisgICAgICAgIC8vIFdlIGZvdW5kIHRoZSBi
bG9jayB3ZSB3ZXJlIGxvb2tpbmcgZm9yLgorICAgICAgICBpZiAoYmxvY2tDb250YWluc0J5dGVj
b2RlT2Zmc2V0KCgqYmFzaWNCbG9jaykuZ2V0KCksIGJ5dGVjb2RlT2Zmc2V0KSkKKyAgICAgICAg
ICAgIHJldHVybiAoKmJhc2ljQmxvY2spLmdldCgpOworCisgICAgICAgIC8vIEJhc2ljIGJsb2Nr
IGlzIHRvIHRoZSBsZWZ0IG9mIHRoZSByZXR1cm5lZCBibG9jay4KKyAgICAgICAgaWYgKGJ5dGVj
b2RlT2Zmc2V0IDwgKCpiYXNpY0Jsb2NrKS0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKSkgeworICAg
ICAgICAgICAgQVNTRVJUKGJhc2ljQmxvY2sgLSAxID49IG1fYmFzaWNCbG9ja3MuZGF0YSgpKTsK
KyAgICAgICAgICAgIEFTU0VSVChibG9ja0NvbnRhaW5zQnl0ZWNvZGVPZmZzZXQoYmFzaWNCbG9j
a1stMV0uZ2V0KCksIGJ5dGVjb2RlT2Zmc2V0KSk7CisgICAgICAgICAgICByZXR1cm4gYmFzaWNC
bG9ja1stMV0uZ2V0KCk7CisgICAgICAgIH0KKworICAgICAgICAvLyBCYXNpYyBibG9jayBpcyB0
byB0aGUgcmlnaHQgb2YgdGhlIHJldHVybmVkIGJsb2NrLgorICAgICAgICBBU1NFUlQoJmJhc2lj
QmxvY2tbMV0gPD0gJm1fYmFzaWNCbG9ja3MubGFzdCgpKTsKKyAgICAgICAgQVNTRVJUKGJsb2Nr
Q29udGFpbnNCeXRlY29kZU9mZnNldChiYXNpY0Jsb2NrWzFdLmdldCgpLCBieXRlY29kZU9mZnNl
dCkpOworICAgICAgICByZXR1cm4gYmFzaWNCbG9ja1sxXS5nZXQoKTsKKyAgICB9CisKKyAgICBC
eXRlY29kZUJhc2ljQmxvY2sqIGZpbmRCYXNpY0Jsb2NrV2l0aExlYWRlck9mZnNldCh1bnNpZ25l
ZCBsZWFkZXJPZmZzZXQpCisgICAgeworICAgICAgICByZXR1cm4gKCp0cnlCaW5hcnlTZWFyY2g8
c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4sIHVuc2lnbmVkPihtX2Jhc2ljQmxv
Y2tzLCBtX2Jhc2ljQmxvY2tzLnNpemUoKSwgbGVhZGVyT2Zmc2V0LCBbXSAoc3RkOjp1bmlxdWVf
cHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4qIGJhc2ljQmxvY2spIHsgcmV0dXJuICgqYmFzaWNCbG9j
ayktPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCk7IH0pKS5nZXQoKTsKKyAgICB9CisKKyAgICB1bnNp
Z25lZCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9iYXNpY0Jsb2Nrcy5zaXplKCk7IH0KKyAgICBC
eXRlY29kZUJhc2ljQmxvY2sqIGF0KHVuc2lnbmVkIGluZGV4KSBjb25zdCB7IHJldHVybiBtX2Jh
c2ljQmxvY2tzW2luZGV4XS5nZXQoKTsgfQorICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogb3BlcmF0
b3JbXSh1bnNpZ25lZCBpbmRleCkgY29uc3QgeyByZXR1cm4gYXQoaW5kZXgpOyB9CisKKyAgICB0
eXBlZGVmIFdURjo6SW5kZXhlZENvbnRhaW5lckl0ZXJhdG9yPEJ5dGVjb2RlR3JhcGg8QmxvY2s+
PiBpdGVyYXRvcjsKKworICAgIGl0ZXJhdG9yIGJlZ2luKCkgY29uc3QgeyByZXR1cm4gaXRlcmF0
b3IoKnRoaXMsIDApOyB9CisgICAgaXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gaXRlcmF0
b3IoKnRoaXMsIHNpemUoKSk7IH0KKyAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGZpcnN0KCkgeyBy
ZXR1cm4gYXQoMCk7IH0KKyAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGxhc3QoKSB7IHJldHVybiBh
dChzaXplKCkgLSAxKTsgfQorCitwcml2YXRlOgorICAgIEJsb2NrKiBtX2NvZGVCbG9jazsKKyAg
ICBCYXNpY0Jsb2Nrc1ZlY3RvciBtX2Jhc2ljQmxvY2tzOworICAgIHR5cGVuYW1lIEJsb2NrOjpV
bnBhY2tlZEluc3RydWN0aW9ucyYgbV9pbnN0cnVjdGlvbnM7Cit9OworCisKK3RlbXBsYXRlPHR5
cGVuYW1lIEJsb2NrPgorQnl0ZWNvZGVHcmFwaDxCbG9jaz46OkJ5dGVjb2RlR3JhcGgoQmxvY2sq
IGNvZGVCbG9jaywgdHlwZW5hbWUgQmxvY2s6OlVucGFja2VkSW5zdHJ1Y3Rpb25zJiBpbnN0cnVj
dGlvbnMpCisgICAgOiBtX2NvZGVCbG9jayhjb2RlQmxvY2spCisgICAgLCBtX2luc3RydWN0aW9u
cyhpbnN0cnVjdGlvbnMpCit7CisgICAgQVNTRVJUKG1fY29kZUJsb2NrKTsKKyAgICBCeXRlY29k
ZUJhc2ljQmxvY2s6OmNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzKG1fY29kZUJsb2NrLCBpbnN0
cnVjdGlvbnMuYmVnaW4oKSwgaW5zdHJ1Y3Rpb25zLnNpemUoKSwgbV9iYXNpY0Jsb2Nrcyk7Cisg
ICAgQVNTRVJUKG1fYmFzaWNCbG9ja3Muc2l6ZSgpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlND
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0
Lmpzb24gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24K
aW5kZXggZTM4MDI1ZDVhZmNmNjljZTQ4MGFlOTI4OThjOTM4ZTkzMTI3ODhkOS4uY2U2MGRhNGEy
NmJjMzQ3N2ZkNDcxOWIwYTRiMWZlY2U1ODljNjE5ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgpAQCAtMTQzLDggKzE0Myw3IEBACiAg
ICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9hc3NlcnQiLCAibGVuZ3RoIiA6IDMgfSwKICAgICAg
ICAgICAgIHsgIm5hbWUiIDogIm9wX2NyZWF0ZV9yZXN0IiwgImxlbmd0aCI6IDQgfSwKICAgICAg
ICAgICAgIHsgIm5hbWUiIDogIm9wX2dldF9yZXN0X2xlbmd0aCIsICJsZW5ndGgiOiAzIH0sCi0g
ICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9zYXZlIiwgImxlbmd0aCIgOiA0IH0sCi0gICAgICAg
ICAgICB7ICJuYW1lIiA6ICJvcF9yZXN1bWUiLCAibGVuZ3RoIiA6IDMgfSwKKyAgICAgICAgICAg
IHsgIm5hbWUiIDogIm9wX3lpZWxkIiwgImxlbmd0aCIgOiA0IH0sCiAgICAgICAgICAgICB7ICJu
YW1lIiA6ICJvcF93YXRjaGRvZyIsICJsZW5ndGgiIDogMSB9LAogICAgICAgICAgICAgeyAibmFt
ZSIgOiAib3BfbG9nX3NoYWRvd19jaGlja2VuX3Byb2xvZ3VlIiwgImxlbmd0aCIgOiAyfSwKICAg
ICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2xvZ19zaGFkb3dfY2hpY2tlbl90YWlsIiwgImxlbmd0
aCIgOiAzfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVj
b2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNwcAppbmRleCAxN2U4MmEyZmJiYTAxNTA0M2U5OWQz
NGVkMjU2OTM3MmIzNmY3YTg1Li5hMTU0MGYxZGJiNDNlOTJlYzdhNGQ3OWJjMzRjOTA3ZGI3YzI2
ZjNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVM
aXZlbmVzc0FuYWx5c2lzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNwcApAQCAtMzEsMTk4ICszMSwzNiBAQAogI2luY2x1
ZGUgIkJ5dGVjb2RlVXNlRGVmLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAi
RnVsbEJ5dGVjb2RlTGl2ZW5lc3MuaCIKLSNpbmNsdWRlICJQcmVjaXNlSnVtcFRhcmdldHMuaCIK
KyNpbmNsdWRlICJJbnRlcnByZXRlcklubGluZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKIEJ5
dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzKENvZGVCbG9j
ayogY29kZUJsb2NrKQotICAgIDogbV9jb2RlQmxvY2soY29kZUJsb2NrKQorICAgIDogbV9ncmFw
aChjb2RlQmxvY2ssIGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkpCiB7Ci0gICAgQVNTRVJUKG1f
Y29kZUJsb2NrKTsKICAgICBjb21wdXRlKCk7CiB9CiAKLXN0YXRpYyBib29sIGlzVmFsaWRSZWdp
c3RlckZvckxpdmVuZXNzKENvZGVCbG9jayogY29kZUJsb2NrLCBpbnQgb3BlcmFuZCkKK3RlbXBs
YXRlPHR5cGVuYW1lIEZ1bmN0b3I+Cit2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Y29t
cHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgT3Bjb2RlSUQg
b3Bjb2RlSUQsIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgRmFzdEJpdFZlY3RvciYsIGNvbnN0
IEZ1bmN0b3ImIGZ1bmN0b3IpCiB7Ci0gICAgaWYgKGNvZGVCbG9jay0+aXNDb25zdGFudFJlZ2lz
dGVySW5kZXgob3BlcmFuZCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKLSAgICBWaXJ0
dWFsUmVnaXN0ZXIgdmlydHVhbFJlZyhvcGVyYW5kKTsKLSAgICByZXR1cm4gdmlydHVhbFJlZy5p
c0xvY2FsKCk7Ci19Ci0KLXN0YXRpYyB1bnNpZ25lZCBnZXRMZWFkZXJPZmZzZXRGb3JCYXNpY0Js
b2NrKHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+KiBiYXNpY0Jsb2NrKQotewot
ICAgIHJldHVybiAoKmJhc2ljQmxvY2spLT5sZWFkZXJCeXRlY29kZU9mZnNldCgpOwotfQotCi1z
dGF0aWMgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBmaW5kQmFzaWNCbG9ja1dpdGhMZWFkZXJPZmZzZXQo
VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9ja3Ms
IHVuc2lnbmVkIGxlYWRlck9mZnNldCkKLXsKLSAgICByZXR1cm4gKCp0cnlCaW5hcnlTZWFyY2g8
c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4sIHVuc2lnbmVkPihiYXNpY0Jsb2Nr
cywgYmFzaWNCbG9ja3Muc2l6ZSgpLCBsZWFkZXJPZmZzZXQsIGdldExlYWRlck9mZnNldEZvckJh
c2ljQmxvY2spKS5nZXQoKTsKLX0KLQotc3RhdGljIGJvb2wgYmxvY2tDb250YWluc0J5dGVjb2Rl
T2Zmc2V0KEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0
KQotewotICAgIHVuc2lnbmVkIGxlYWRlck9mZnNldCA9IGJsb2NrLT5sZWFkZXJCeXRlY29kZU9m
ZnNldCgpOwotICAgIHJldHVybiBieXRlY29kZU9mZnNldCA+PSBsZWFkZXJPZmZzZXQgJiYgYnl0
ZWNvZGVPZmZzZXQgPCBsZWFkZXJPZmZzZXQgKyBibG9jay0+dG90YWxCeXRlY29kZUxlbmd0aCgp
OwotfQotCi1zdGF0aWMgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBmaW5kQmFzaWNCbG9ja0ZvckJ5dGVj
b2RlT2Zmc2V0KFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mIGJh
c2ljQmxvY2tzLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCkKLXsKLS8qCi0gICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IGJhc2ljQmxvY2tzLnNpemUoKTsgaSsrKSB7Ci0gICAgICAgIGlmIChi
bG9ja0NvbnRhaW5zQnl0ZWNvZGVPZmZzZXQoYmFzaWNCbG9ja3NbaV0uZ2V0KCksIGJ5dGVjb2Rl
T2Zmc2V0KSkKLSAgICAgICAgICAgIHJldHVybiBiYXNpY0Jsb2Nrc1tpXS5nZXQoKTsKLSAgICB9
Ci0gICAgcmV0dXJuIDA7Ci0qLwotICAgIHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxv
Y2s+KiBiYXNpY0Jsb2NrID0gYXBwcm94aW1hdGVCaW5hcnlTZWFyY2g8c3RkOjp1bmlxdWVfcHRy
PEJ5dGVjb2RlQmFzaWNCbG9jaz4sIHVuc2lnbmVkPigKLSAgICAgICAgYmFzaWNCbG9ja3MsIGJh
c2ljQmxvY2tzLnNpemUoKSwgYnl0ZWNvZGVPZmZzZXQsIGdldExlYWRlck9mZnNldEZvckJhc2lj
QmxvY2spOwotICAgIC8vIFdlIGZvdW5kIHRoZSBibG9jayB3ZSB3ZXJlIGxvb2tpbmcgZm9yLgot
ICAgIGlmIChibG9ja0NvbnRhaW5zQnl0ZWNvZGVPZmZzZXQoKCpiYXNpY0Jsb2NrKS5nZXQoKSwg
Ynl0ZWNvZGVPZmZzZXQpKQotICAgICAgICByZXR1cm4gKCpiYXNpY0Jsb2NrKS5nZXQoKTsKLQot
ICAgIC8vIEJhc2ljIGJsb2NrIGlzIHRvIHRoZSBsZWZ0IG9mIHRoZSByZXR1cm5lZCBibG9jay4K
LSAgICBpZiAoYnl0ZWNvZGVPZmZzZXQgPCAoKmJhc2ljQmxvY2spLT5sZWFkZXJCeXRlY29kZU9m
ZnNldCgpKSB7Ci0gICAgICAgIEFTU0VSVChiYXNpY0Jsb2NrIC0gMSA+PSBiYXNpY0Jsb2Nrcy5k
YXRhKCkpOwotICAgICAgICBBU1NFUlQoYmxvY2tDb250YWluc0J5dGVjb2RlT2Zmc2V0KGJhc2lj
QmxvY2tbLTFdLmdldCgpLCBieXRlY29kZU9mZnNldCkpOwotICAgICAgICByZXR1cm4gYmFzaWNC
bG9ja1stMV0uZ2V0KCk7Ci0gICAgfQotCi0gICAgLy8gQmFzaWMgYmxvY2sgaXMgdG8gdGhlIHJp
Z2h0IG9mIHRoZSByZXR1cm5lZCBibG9jay4KLSAgICBBU1NFUlQoJmJhc2ljQmxvY2tbMV0gPD0g
JmJhc2ljQmxvY2tzLmxhc3QoKSk7Ci0gICAgQVNTRVJUKGJsb2NrQ29udGFpbnNCeXRlY29kZU9m
ZnNldChiYXNpY0Jsb2NrWzFdLmdldCgpLCBieXRlY29kZU9mZnNldCkpOwotICAgIHJldHVybiBi
YXNpY0Jsb2NrWzFdLmdldCgpOwotfQotCi0vLyBTaW1wbGlmaWVkIGludGVyZmFjZSB0byBieXRl
Y29kZSB1c2UvZGVmLCB3aGljaCBkZXRlcm1pbmVzIGRlZnMgZmlyc3QgYW5kIHRoZW4gdXNlcywg
YW5kIGluY2x1ZGVzCi0vLyBleGNlcHRpb24gaGFuZGxlcnMgaW4gdGhlIHVzZXMuCi10ZW1wbGF0
ZTx0eXBlbmFtZSBVc2VGdW5jdG9yLCB0eXBlbmFtZSBEZWZGdW5jdG9yPgotc3RhdGljIHZvaWQg
c3RlcE92ZXJJbnN0cnVjdGlvbihDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Js
b2NrKiBibG9jaywgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYg
YmFzaWNCbG9ja3MsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBjb25zdCBVc2VGdW5jdG9yJiB1
c2UsIGNvbnN0IERlZkZ1bmN0b3ImIGRlZikKLXsKLSAgICAvLyBUaGlzIGFic3RyYWN0bHkgZXhl
Y3V0ZSB0aGUgaW5zdHJ1Y3Rpb24gaW4gcmV2ZXJzZS4gSW5zdHJ1Y3Rpb25zIGxvZ2ljYWxseSBm
aXJzdCB1c2Ugb3BlcmFuZHMgYW5kCi0gICAgLy8gdGhlbiBkZWZpbmUgb3BlcmFuZHMuIFRoaXMg
bG9naWNhbCBvcmRlcmluZyBpcyBuZWNlc3NhcnkgZm9yIG9wZXJhdGlvbnMgdGhhdCB1c2UgYW5k
IGRlZiB0aGUgc2FtZQotICAgIC8vIG9wZXJhbmQsIGxpa2U6Ci0gICAgLy8KLSAgICAvLyAgICAg
b3BfYWRkIGxvYzEsIGxvYzEsIGxvYzIKLSAgICAvLwotICAgIC8vIFRoZSB1c2Ugb2YgbG9jMSBo
YXBwZW5zIGJlZm9yZSB0aGUgZGVmIG9mIGxvYzEuIFRoYXQncyBhIHNlbWFudGljIHJlcXVpcmVt
ZW50IHNpbmNlIHRoZSBhZGQKLSAgICAvLyBvcGVyYXRpb24gY2Fubm90IHRyYXZlbCBmb3J3YXJk
IGluIHRpbWUgdG8gcmVhZCB0aGUgdmFsdWUgdGhhdCBpdCB3aWxsIHByb2R1Y2UgYWZ0ZXIgcmVh
ZGluZyB0aGF0Ci0gICAgLy8gdmFsdWUuIFNpbmNlIHdlIGFyZSBleGVjdXRpbmcgaW4gcmV2ZXJz
ZSwgdGhpcyBtZWFucyB0aGF0IHdlIG11c3QgZG8gZGVmcyBiZWZvcmUgdXNlcyAocmV2ZXJzZSBv
ZgotICAgIC8vIHVzZXMgYmVmb3JlIGRlZnMpLgotICAgIC8vCi0gICAgLy8gU2luY2UgdGhpcyBp
cyBhIGxpdmVuZXNzIGFuYWx5c2lzLCB0aGlzIG9yZGVyaW5nIGVuZHMgdXAgYmVpbmcgcGFydGlj
dWxhcmx5IGltcG9ydGFudDogaWYgd2UgZGlkCi0gICAgLy8gdXNlcyBiZWZvcmUgZGVmcywgdGhl
biB0aGUgYWRkIG9wZXJhdGlvbiBhYm92ZSB3b3VsZCBhcHBlYXIgdG8gbm90IGhhdmUgbG9jMSBs
aXZlLCBzaW5jZSB3ZSdkCi0gICAgLy8gZmlyc3QgYWRkIGl0IHRvIHRoZSBvdXQgc2V0ICh0aGUg
dXNlKSwgYW5kIHRoZW4gd2UnZCByZW1vdmUgaXQgKHRoZSBkZWYpLgotICAgIAotICAgIGNvbXB1
dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoCi0gICAgICAgIGNvZGVCbG9jaywgYmxvY2ssIGJ5dGVj
b2RlT2Zmc2V0LAotICAgICAgICBbJl0gKENvZGVCbG9jayogY29kZUJsb2NrLCBJbnN0cnVjdGlv
biosIE9wY29kZUlELCBpbnQgb3BlcmFuZCkgewotICAgICAgICAgICAgaWYgKGlzVmFsaWRSZWdp
c3RlckZvckxpdmVuZXNzKGNvZGVCbG9jaywgb3BlcmFuZCkpCi0gICAgICAgICAgICAgICAgZGVm
KFZpcnR1YWxSZWdpc3RlcihvcGVyYW5kKS50b0xvY2FsKCkpOwotICAgICAgICB9KTsKLQotICAg
IGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoCi0gICAgICAgIGNvZGVCbG9jaywgYmxvY2ss
IGJ5dGVjb2RlT2Zmc2V0LAotICAgICAgICBbJl0gKENvZGVCbG9jayogY29kZUJsb2NrLCBJbnN0
cnVjdGlvbiosIE9wY29kZUlELCBpbnQgb3BlcmFuZCkgewotICAgICAgICAgICAgaWYgKGlzVmFs
aWRSZWdpc3RlckZvckxpdmVuZXNzKGNvZGVCbG9jaywgb3BlcmFuZCkpCi0gICAgICAgICAgICAg
ICAgdXNlKFZpcnR1YWxSZWdpc3RlcihvcGVyYW5kKS50b0xvY2FsKCkpOwotICAgICAgICB9KTsK
LQotICAgIC8vIElmIHdlIGhhdmUgYW4gZXhjZXB0aW9uIGhhbmRsZXIsIHdlIHdhbnQgdGhlIGxp
dmUtaW4gdmFyaWFibGVzIG9mIHRoZSAKLSAgICAvLyBleGNlcHRpb24gaGFuZGxlciBibG9jayB0
byBiZSBpbmNsdWRlZCBpbiB0aGUgbGl2ZS1pbiBvZiB0aGlzIHBhcnRpY3VsYXIgYnl0ZWNvZGUu
Ci0gICAgaWYgKEhhbmRsZXJJbmZvKiBoYW5kbGVyID0gY29kZUJsb2NrLT5oYW5kbGVyRm9yQnl0
ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBUaGlzIHJl
c3VtZSBjaGVjayBzaG91bGQgbm90IGJlIG5lZWRlZC4KLSAgICAgICAgLy8gaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1OTI4MQotICAgICAgICBJbnRlcnByZXRlciog
aW50ZXJwcmV0ZXIgPSBjb2RlQmxvY2stPnZtKCktPmludGVycHJldGVyOwotICAgICAgICBJbnN0
cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4gPSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJl
Z2luKCk7Ci0gICAgICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9ICZpbnN0cnVjdGlvbnNC
ZWdpbltieXRlY29kZU9mZnNldF07Ci0gICAgICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW50ZXJw
cmV0ZXItPmdldE9wY29kZUlEKGluc3RydWN0aW9uLT51Lm9wY29kZSk7Ci0gICAgICAgIGlmIChv
cGNvZGVJRCAhPSBvcF9yZXN1bWUpIHsKLSAgICAgICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9jayog
aGFuZGxlckJsb2NrID0gZmluZEJhc2ljQmxvY2tXaXRoTGVhZGVyT2Zmc2V0KGJhc2ljQmxvY2tz
LCBoYW5kbGVyLT50YXJnZXQpOwotICAgICAgICAgICAgQVNTRVJUKGhhbmRsZXJCbG9jayk7Ci0g
ICAgICAgICAgICBoYW5kbGVyQmxvY2stPmluKCkuZm9yRWFjaFNldEJpdCh1c2UpOwotICAgICAg
ICB9Ci0gICAgfQotfQotCi1zdGF0aWMgdm9pZCBzdGVwT3Zlckluc3RydWN0aW9uKENvZGVCbG9j
ayogY29kZUJsb2NrLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrLCBWZWN0b3I8c3RkOjp1bmlx
dWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+JiBiYXNpY0Jsb2NrcywgdW5zaWduZWQgYnl0ZWNv
ZGVPZmZzZXQsIEZhc3RCaXRWZWN0b3ImIG91dCkKLXsKLSAgICBzdGVwT3Zlckluc3RydWN0aW9u
KAotICAgICAgICBjb2RlQmxvY2ssIGJsb2NrLCBiYXNpY0Jsb2NrcywgYnl0ZWNvZGVPZmZzZXQs
Ci0gICAgICAgIFsmXSAodW5zaWduZWQgYml0SW5kZXgpIHsKLSAgICAgICAgICAgIC8vIFRoaXMg
aXMgdGhlIHVzZSBmdW5jdG9yLCBzbyB3ZSBzZXQgdGhlIGJpdC4KLSAgICAgICAgICAgIG91dC5z
ZXQoYml0SW5kZXgpOwotICAgICAgICB9LAotICAgICAgICBbJl0gKHVuc2lnbmVkIGJpdEluZGV4
KSB7Ci0gICAgICAgICAgICAvLyBUaGlzIGlzIHRoZSBkZWYgZnVuY3Rvciwgc28gd2UgY2xlYXIg
dGhlIGJpdC4KLSAgICAgICAgICAgIG91dC5jbGVhcihiaXRJbmRleCk7Ci0gICAgICAgIH0pOwor
ICAgIEpTQzo6Y29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChjb2RlQmxvY2ssIG9wY29kZUlE
LCBpbnN0cnVjdGlvbiwgZnVuY3Rvcik7CiB9CiAKLXN0YXRpYyB2b2lkIGNvbXB1dGVMb2NhbExp
dmVuZXNzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFz
aWNCbG9jayogYmxvY2ssIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2Nr
Pj4mIGJhc2ljQmxvY2tzLCB1bnNpZ25lZCB0YXJnZXRPZmZzZXQsIEZhc3RCaXRWZWN0b3ImIHJl
c3VsdCkKK3RlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+Cit2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NB
bmFseXNpczo6Y29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9j
aywgT3Bjb2RlSUQgb3Bjb2RlSUQsIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgRmFzdEJpdFZl
Y3RvciYsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiB7Ci0gICAgQVNTRVJUKCFibG9jay0+aXNF
eGl0QmxvY2soKSk7Ci0gICAgQVNTRVJUKCFibG9jay0+aXNFbnRyeUJsb2NrKCkpOwotCi0gICAg
RmFzdEJpdFZlY3RvciBvdXQgPSBibG9jay0+b3V0KCk7Ci0KLSAgICBmb3IgKGludCBpID0gYmxv
Y2stPmJ5dGVjb2RlT2Zmc2V0cygpLnNpemUoKSAtIDE7IGkgPj0gMDsgaS0tKSB7Ci0gICAgICAg
IHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0ID0gYmxvY2stPmJ5dGVjb2RlT2Zmc2V0cygpW2ldOwot
ICAgICAgICBpZiAodGFyZ2V0T2Zmc2V0ID4gYnl0ZWNvZGVPZmZzZXQpCi0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgCi0gICAgICAgIHN0ZXBPdmVySW5zdHJ1Y3Rpb24oY29kZUJsb2NrLCBi
bG9jaywgYmFzaWNCbG9ja3MsIGJ5dGVjb2RlT2Zmc2V0LCBvdXQpOwotICAgIH0KLQotICAgIHJl
c3VsdC5zZXQob3V0KTsKLX0KLQotc3RhdGljIHZvaWQgY29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JC
bG9jayhDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaywgVmVj
dG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9ja3MpCi17
Ci0gICAgaWYgKGJsb2NrLT5pc0V4aXRCbG9jaygpIHx8IGJsb2NrLT5pc0VudHJ5QmxvY2soKSkK
LSAgICAgICAgcmV0dXJuOwotICAgIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQnl0ZWNvZGVPZmZz
ZXQoY29kZUJsb2NrLCBibG9jaywgYmFzaWNCbG9ja3MsIGJsb2NrLT5sZWFkZXJCeXRlY29kZU9m
ZnNldCgpLCBibG9jay0+aW4oKSk7Ci19Ci0KLXZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lz
OjpydW5MaXZlbmVzc0ZpeHBvaW50KCkKLXsKLSAgICBVbmxpbmtlZENvZGVCbG9jayogdW5saW5r
ZWRDb2RlQmxvY2sgPSBtX2NvZGVCbG9jay0+dW5saW5rZWRDb2RlQmxvY2soKTsKLSAgICB1bnNp
Z25lZCBudW1iZXJPZlZhcmlhYmxlcyA9IHVubGlua2VkQ29kZUJsb2NrLT5tX251bUNhbGxlZUxv
Y2FsczsKLQotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2Jhc2ljQmxvY2tzLnNpemUo
KTsgaSsrKSB7Ci0gICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2sgPSBtX2Jhc2ljQmxv
Y2tzW2ldLmdldCgpOwotICAgICAgICBibG9jay0+aW4oKS5yZXNpemUobnVtYmVyT2ZWYXJpYWJs
ZXMpOwotICAgICAgICBibG9jay0+b3V0KCkucmVzaXplKG51bWJlck9mVmFyaWFibGVzKTsKLSAg
ICB9Ci0KLSAgICBib29sIGNoYW5nZWQ7Ci0gICAgbV9iYXNpY0Jsb2Nrcy5sYXN0KCktPmluKCku
Y2xlYXJBbGwoKTsKLSAgICBtX2Jhc2ljQmxvY2tzLmxhc3QoKS0+b3V0KCkuY2xlYXJBbGwoKTsK
LSAgICBGYXN0Qml0VmVjdG9yIG5ld091dDsKLSAgICBuZXdPdXQucmVzaXplKG1fYmFzaWNCbG9j
a3MubGFzdCgpLT5vdXQoKS5udW1CaXRzKCkpOwotICAgIGRvIHsKLSAgICAgICAgY2hhbmdlZCA9
IGZhbHNlOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2Jhc2ljQmxvY2tzLnNpemUoKSAt
IDE7IGktLTspIHsKLSAgICAgICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2sgPSBtX2Jh
c2ljQmxvY2tzW2ldLmdldCgpOwotICAgICAgICAgICAgbmV3T3V0LmNsZWFyQWxsKCk7Ci0gICAg
ICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSAwOyBqIDwgYmxvY2stPnN1Y2Nlc3NvcnMoKS5zaXpl
KCk7IGorKykKLSAgICAgICAgICAgICAgICBuZXdPdXQubWVyZ2UoYmxvY2stPnN1Y2Nlc3NvcnMo
KVtqXS0+aW4oKSk7Ci0gICAgICAgICAgICBib29sIG91dERpZENoYW5nZSA9IGJsb2NrLT5vdXQo
KS5zZXRBbmRDaGVjayhuZXdPdXQpOwotICAgICAgICAgICAgY29tcHV0ZUxvY2FsTGl2ZW5lc3NG
b3JCbG9jayhtX2NvZGVCbG9jaywgYmxvY2ssIG1fYmFzaWNCbG9ja3MpOwotICAgICAgICAgICAg
Y2hhbmdlZCB8PSBvdXREaWRDaGFuZ2U7Ci0gICAgICAgIH0KLSAgICB9IHdoaWxlIChjaGFuZ2Vk
KTsKKyAgICBKU0M6OmNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoY29kZUJsb2NrLCBvcGNv
ZGVJRCwgaW5zdHJ1Y3Rpb24sIGZ1bmN0b3IpOwogfQogCiB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NB
bmFseXNpczo6Z2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29kZU9mZnNldCh1bnNpZ25lZCBieXRlY29k
ZU9mZnNldCwgRmFzdEJpdFZlY3RvciYgcmVzdWx0KQogewotICAgIEJ5dGVjb2RlQmFzaWNCbG9j
ayogYmxvY2sgPSBmaW5kQmFzaWNCbG9ja0ZvckJ5dGVjb2RlT2Zmc2V0KG1fYmFzaWNCbG9ja3Ms
IGJ5dGVjb2RlT2Zmc2V0KTsKKyAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrID0gbV9ncmFw
aC5maW5kQmFzaWNCbG9ja0ZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KTsKICAgICBB
U1NFUlQoYmxvY2spOwogICAgIEFTU0VSVCghYmxvY2stPmlzRW50cnlCbG9jaygpKTsKICAgICBB
U1NFUlQoIWJsb2NrLT5pc0V4aXRCbG9jaygpKTsKICAgICByZXN1bHQucmVzaXplKGJsb2NrLT5v
dXQoKS5udW1CaXRzKCkpOwotICAgIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQnl0ZWNvZGVPZmZz
ZXQobV9jb2RlQmxvY2ssIGJsb2NrLCBtX2Jhc2ljQmxvY2tzLCBieXRlY29kZU9mZnNldCwgcmVz
dWx0KTsKKyAgICBjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJ5dGVjb2RlT2Zmc2V0KG1fZ3JhcGgs
IGJsb2NrLCBieXRlY29kZU9mZnNldCwgcmVzdWx0KTsKIH0KIAogYm9vbCBCeXRlY29kZUxpdmVu
ZXNzQW5hbHlzaXM6Om9wZXJhbmRJc0xpdmVBdEJ5dGVjb2RlT2Zmc2V0KGludCBvcGVyYW5kLCB1
bnNpZ25lZCBieXRlY29kZU9mZnNldCkKQEAgLTI0NCwxMSArODIsMTEgQEAgRmFzdEJpdFZlY3Rv
ciBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVPZmZz
ZXQodW5zaWduZWQKIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlRnVsbExp
dmVuZXNzKEZ1bGxCeXRlY29kZUxpdmVuZXNzJiByZXN1bHQpCiB7CiAgICAgRmFzdEJpdFZlY3Rv
ciBvdXQ7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBtX2dyYXBoLmNvZGVCbG9jaygpOwog
ICAgIAotICAgIHJlc3VsdC5tX21hcC5yZXNpemUobV9jb2RlQmxvY2stPmluc3RydWN0aW9ucygp
LnNpemUoKSk7CisgICAgcmVzdWx0Lm1fbWFwLnJlc2l6ZShjb2RlQmxvY2stPmluc3RydWN0aW9u
cygpLnNpemUoKSk7CiAgICAgCi0gICAgZm9yICh1bnNpZ25lZCBpID0gbV9iYXNpY0Jsb2Nrcy5z
aXplKCk7IGktLTspIHsKLSAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jayA9IG1fYmFz
aWNCbG9ja3NbaV0uZ2V0KCk7CisgICAgZm9yIChzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNp
Y0Jsb2NrPiYgYmxvY2sgOiBtX2dyYXBoLmJhc2ljQmxvY2tzSW5SZXZlcnNlT3JkZXIoKSkgewog
ICAgICAgICBpZiAoYmxvY2stPmlzRW50cnlCbG9jaygpIHx8IGJsb2NrLT5pc0V4aXRCbG9jaygp
KQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIApAQCAtMjU2LDcgKzk0LDcgQEAgdm9p
ZCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGVGdWxsTGl2ZW5lc3MoRnVsbEJ5dGVj
b2RlTGl2ZW5lc3MmIHJlc3VsdCkKICAgICAgICAgCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IGJsb2NrLT5ieXRlY29kZU9mZnNldHMoKS5zaXplKCk7IGktLTspIHsKICAgICAgICAgICAgIHVu
c2lnbmVkIGJ5dGVjb2RlT2Zmc2V0ID0gYmxvY2stPmJ5dGVjb2RlT2Zmc2V0cygpW2ldOwotICAg
ICAgICAgICAgc3RlcE92ZXJJbnN0cnVjdGlvbihtX2NvZGVCbG9jaywgYmxvY2ssIG1fYmFzaWNC
bG9ja3MsIGJ5dGVjb2RlT2Zmc2V0LCBvdXQpOworICAgICAgICAgICAgc3RlcE92ZXJJbnN0cnVj
dGlvbihtX2dyYXBoLCBieXRlY29kZU9mZnNldCwgb3V0KTsKICAgICAgICAgICAgIHJlc3VsdC5t
X21hcFtieXRlY29kZU9mZnNldF0gPSBvdXQ7CiAgICAgICAgIH0KICAgICB9CkBAIC0yNjYsMTEg
KzEwNCwxMSBAQCB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0ZUtpbGxzKEJ5
dGVjb2RlS2lsbHMmIHJlc3VsdCkKIHsKICAgICBGYXN0Qml0VmVjdG9yIG91dDsKICAgICAKLSAg
ICByZXN1bHQubV9jb2RlQmxvY2sgPSBtX2NvZGVCbG9jazsKLSAgICByZXN1bHQubV9raWxsU2V0
cyA9IHN0ZDo6bWFrZV91bmlxdWU8Qnl0ZWNvZGVLaWxsczo6S2lsbFNldFtdPihtX2NvZGVCbG9j
ay0+aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IG1f
Z3JhcGguY29kZUJsb2NrKCk7CisgICAgcmVzdWx0Lm1fY29kZUJsb2NrID0gY29kZUJsb2NrOwor
ICAgIHJlc3VsdC5tX2tpbGxTZXRzID0gc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZUtpbGxzOjpL
aWxsU2V0W10+KGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKICAgICAKLSAgICBm
b3IgKHVuc2lnbmVkIGkgPSBtX2Jhc2ljQmxvY2tzLnNpemUoKTsgaS0tOykgewotICAgICAgICBC
eXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrID0gbV9iYXNpY0Jsb2Nrc1tpXS5nZXQoKTsKKyAgICBm
b3IgKHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+JiBibG9jayA6IG1fZ3JhcGgu
YmFzaWNCbG9ja3NJblJldmVyc2VPcmRlcigpKSB7CiAgICAgICAgIGlmIChibG9jay0+aXNFbnRy
eUJsb2NrKCkgfHwgYmxvY2stPmlzRXhpdEJsb2NrKCkpCiAgICAgICAgICAgICBjb250aW51ZTsK
ICAgICAgICAgCkBAIC0yNzksNyArMTE3LDcgQEAgdm9pZCBCeXRlY29kZUxpdmVuZXNzQW5hbHlz
aXM6OmNvbXB1dGVLaWxscyhCeXRlY29kZUtpbGxzJiByZXN1bHQpCiAgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IGJsb2NrLT5ieXRlY29kZU9mZnNldHMoKS5zaXplKCk7IGktLTspIHsKICAgICAg
ICAgICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0ID0gYmxvY2stPmJ5dGVjb2RlT2Zmc2V0cygp
W2ldOwogICAgICAgICAgICAgc3RlcE92ZXJJbnN0cnVjdGlvbigKLSAgICAgICAgICAgICAgICBt
X2NvZGVCbG9jaywgYmxvY2ssIG1fYmFzaWNCbG9ja3MsIGJ5dGVjb2RlT2Zmc2V0LAorICAgICAg
ICAgICAgICAgIG1fZ3JhcGgsIGJ5dGVjb2RlT2Zmc2V0LCBvdXQsCiAgICAgICAgICAgICAgICAg
WyZdICh1bnNpZ25lZCBpbmRleCkgewogICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIGZv
ciB1c2VzLgogICAgICAgICAgICAgICAgICAgICBpZiAob3V0LmdldChpbmRleCkpCkBAIC0yOTcs
MTIgKzEzNSwxMyBAQCB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0ZUtpbGxz
KEJ5dGVjb2RlS2lsbHMmIHJlc3VsdCkKIAogdm9pZCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6
OmR1bXBSZXN1bHRzKCkKIHsKLSAgICBkYXRhTG9nKCJcbkR1bXBpbmcgYnl0ZWNvZGUgbGl2ZW5l
c3MgZm9yICIsICptX2NvZGVCbG9jaywgIjpcbiIpOwotICAgIEludGVycHJldGVyKiBpbnRlcnBy
ZXRlciA9IG1fY29kZUJsb2NrLT52bSgpLT5pbnRlcnByZXRlcjsKLSAgICBJbnN0cnVjdGlvbiog
aW5zdHJ1Y3Rpb25zQmVnaW4gPSBtX2NvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsK
LSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9iYXNpY0Jsb2Nrcy5zaXplKCk7IGkrKykg
ewotICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrID0gbV9iYXNpY0Jsb2Nrc1tpXS5n
ZXQoKTsKLSAgICAgICAgZGF0YUxvZ0YoIlxuQnl0ZWNvZGUgYmFzaWMgYmxvY2sgJXU6ICVwIChv
ZmZzZXQ6ICV1LCBsZW5ndGg6ICV1KVxuIiwgaSwgYmxvY2ssIGJsb2NrLT5sZWFkZXJCeXRlY29k
ZU9mZnNldCgpLCBibG9jay0+dG90YWxCeXRlY29kZUxlbmd0aCgpKTsKKyAgICBDb2RlQmxvY2sq
IGNvZGVCbG9jayA9IG1fZ3JhcGguY29kZUJsb2NrKCk7CisgICAgZGF0YUxvZygiXG5EdW1waW5n
IGJ5dGVjb2RlIGxpdmVuZXNzIGZvciAiLCAqY29kZUJsb2NrLCAiOlxuIik7CisgICAgSW50ZXJw
cmV0ZXIqIGludGVycHJldGVyID0gY29kZUJsb2NrLT52bSgpLT5pbnRlcnByZXRlcjsKKyAgICBJ
bnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4gPSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygp
LmJlZ2luKCk7CisgICAgdW5zaWduZWQgaSA9IDA7CisgICAgZm9yIChCeXRlY29kZUJhc2ljQmxv
Y2sqIGJsb2NrIDogbV9ncmFwaCkgeworICAgICAgICBkYXRhTG9nRigiXG5CeXRlY29kZSBiYXNp
YyBibG9jayAldTogJXAgKG9mZnNldDogJXUsIGxlbmd0aDogJXUpXG4iLCBpKyssIGJsb2NrLCBi
bG9jay0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKSwgYmxvY2stPnRvdGFsQnl0ZWNvZGVMZW5ndGgo
KSk7CiAgICAgICAgIGRhdGFMb2dGKCJTdWNjZXNzb3JzOiAiKTsKICAgICAgICAgZm9yICh1bnNp
Z25lZCBqID0gMDsgaiA8IGJsb2NrLT5zdWNjZXNzb3JzKCkuc2l6ZSgpOyBqKyspIHsKICAgICAg
ICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogc3VjY2Vzc29yID0gYmxvY2stPnN1Y2Nlc3NvcnMo
KVtqXTsKQEAgLTMyNyw3ICsxNjYsNyBAQCB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6
ZHVtcFJlc3VsdHMoKQogICAgICAgICAgICAgICAgICAgICBkYXRhTG9nRigiJXUgIiwgaik7CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICBkYXRhTG9nRigiXG4iKTsKLSAgICAgICAgICAgIG1f
Y29kZUJsb2NrLT5kdW1wQnl0ZWNvZGUoV1RGOjpkYXRhRmlsZSgpLCBtX2NvZGVCbG9jay0+Z2xv
YmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKSwgaW5zdHJ1Y3Rpb25zQmVnaW4sIGN1cnJlbnRJbnN0
cnVjdGlvbik7CisgICAgICAgICAgICBjb2RlQmxvY2stPmR1bXBCeXRlY29kZShXVEY6OmRhdGFG
aWxlKCksIGNvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKSwgaW5zdHJ1Y3Rp
b25zQmVnaW4sIGN1cnJlbnRJbnN0cnVjdGlvbik7CiAKICAgICAgICAgICAgIE9wY29kZUlEIG9w
Y29kZUlEID0gaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGluc3RydWN0aW9uc0JlZ2luW2J5dGVj
b2RlT2Zmc2V0XS51Lm9wY29kZSk7CiAgICAgICAgICAgICB1bnNpZ25lZCBvcGNvZGVMZW5ndGgg
PSBvcGNvZGVMZW5ndGhzW29wY29kZUlEXTsKQEAgLTM0Niw5ICsxODUsNyBAQCB2b2lkIEJ5dGVj
b2RlTGl2ZW5lc3NBbmFseXNpczo6ZHVtcFJlc3VsdHMoKQogCiB2b2lkIEJ5dGVjb2RlTGl2ZW5l
c3NBbmFseXNpczo6Y29tcHV0ZSgpCiB7Ci0gICAgY29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3Mo
bV9jb2RlQmxvY2ssIG1fYmFzaWNCbG9ja3MpOwotICAgIEFTU0VSVChtX2Jhc2ljQmxvY2tzLnNp
emUoKSk7Ci0gICAgcnVuTGl2ZW5lc3NGaXhwb2ludCgpOworICAgIHJ1bkxpdmVuZXNzRml4cG9p
bnQobV9ncmFwaCk7CiAKICAgICBpZiAoT3B0aW9uczo6ZHVtcEJ5dGVjb2RlTGl2ZW5lc3NSZXN1
bHRzKCkpCiAgICAgICAgIGR1bXBSZXN1bHRzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmgKaW5kZXggZWNl
MTZmMjFmMDE1MTBhNjQyN2ZkODQxMTQwNzliZWQ4NzBjMDg3NS4uZTEyY2Q4ZWRjZTc2ZTEyMmVm
MDRlZTFmMzVmYmE4MjFiOGQ3ZjdmMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuaApAQCAtMjMsMTAgKzIz
LDExIEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRl
ZiBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNfaAotI2RlZmluZSBCeXRlY29kZUxpdmVuZXNzQW5h
bHlzaXNfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJCeXRlY29kZUJhc2ljQmxvY2suaCIK
KyNpbmNsdWRlICJCeXRlY29kZUdyYXBoLmgiCisjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5j
bHVkZSA8d3RmL0Zhc3RCaXRWZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTM0LDEzICszNSwyOSBAQAogbmFtZXNwYWNlIEpTQyB7
CiAKIGNsYXNzIEJ5dGVjb2RlS2lsbHM7Ci1jbGFzcyBDb2RlQmxvY2s7CiBjbGFzcyBGdWxsQnl0
ZWNvZGVMaXZlbmVzczsKIAotY2xhc3MgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzIHsKK3RlbXBs
YXRlPHR5cGVuYW1lIERlcml2ZWRBbmFseXNpcz4KK2NsYXNzIEJ5dGVjb2RlTGl2ZW5lc3NQcm9w
YWdhdGlvbiB7Citwcm90ZWN0ZWQ6CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgR3JhcGgsIHR5cGVu
YW1lIFVzZUZ1bmN0b3IsIHR5cGVuYW1lIERlZkZ1bmN0b3I+IHZvaWQgc3RlcE92ZXJJbnN0cnVj
dGlvbihHcmFwaCYsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBGYXN0Qml0VmVjdG9yJiBvdXQs
IGNvbnN0IFVzZUZ1bmN0b3ImLCBjb25zdCBEZWZGdW5jdG9yJik7CisKKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBHcmFwaD4gdm9pZCBzdGVwT3Zlckluc3RydWN0aW9uKEdyYXBoJiwgdW5zaWduZWQg
Ynl0ZWNvZGVPZmZzZXQsIEZhc3RCaXRWZWN0b3ImIG91dCk7CisKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBHcmFwaD4gYm9vbCBjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJ5dGVjb2RlT2Zmc2V0KEdy
YXBoJiwgQnl0ZWNvZGVCYXNpY0Jsb2NrKiwgdW5zaWduZWQgdGFyZ2V0T2Zmc2V0LCBGYXN0Qml0
VmVjdG9yJiByZXN1bHQpOworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgR3JhcGg+IGJvb2wgY29t
cHV0ZUxvY2FsTGl2ZW5lc3NGb3JCbG9jayhHcmFwaCYsIEJ5dGVjb2RlQmFzaWNCbG9jayopOwor
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgR3JhcGg+IEZhc3RCaXRWZWN0b3IgZ2V0TGl2ZW5lc3NJ
bmZvQXRCeXRlY29kZU9mZnNldChHcmFwaCYsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KTsKKwor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEdyYXBoPiB2b2lkIHJ1bkxpdmVuZXNzRml4cG9pbnQoR3Jh
cGgmKTsKK307CisKK2NsYXNzIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcyA6IHByaXZhdGUgQnl0
ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0aW9uPEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcz4gewogICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEJ5dGVj
b2RlTGl2ZW5lc3NBbmFseXNpcyk7CiBwdWJsaWM6CisgICAgZnJpZW5kIGNsYXNzIEJ5dGVjb2Rl
TGl2ZW5lc3NQcm9wYWdhdGlvbjxCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM+OwogICAgIEJ5dGVj
b2RlTGl2ZW5lc3NBbmFseXNpcyhDb2RlQmxvY2sqKTsKICAgICAKICAgICBib29sIG9wZXJhbmRJ
c0xpdmVBdEJ5dGVjb2RlT2Zmc2V0KGludCBvcGVyYW5kLCB1bnNpZ25lZCBieXRlY29kZU9mZnNl
dCk7CkBAIC01MSwxOSArNjgsMTkgQEAgY2xhc3MgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzIHsK
IAogcHJpdmF0ZToKICAgICB2b2lkIGNvbXB1dGUoKTsKLSAgICB2b2lkIHJ1bkxpdmVuZXNzRml4
cG9pbnQoKTsKICAgICB2b2lkIGR1bXBSZXN1bHRzKCk7CiAKICAgICB2b2lkIGdldExpdmVuZXNz
SW5mb0F0Qnl0ZWNvZGVPZmZzZXQodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIEZhc3RCaXRWZWN0
b3ImKTsKIAotICAgIENvZGVCbG9jayogbV9jb2RlQmxvY2s7Ci0gICAgVmVjdG9yPHN0ZDo6dW5p
cXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiBtX2Jhc2ljQmxvY2tzOworICAgIHRlbXBsYXRl
PHR5cGVuYW1lIEZ1bmN0b3I+IHZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChDb2Rl
QmxvY2sqLCBPcGNvZGVJRCwgSW5zdHJ1Y3Rpb24qLCBGYXN0Qml0VmVjdG9yJiwgY29uc3QgRnVu
Y3RvciYpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHZvaWQgY29tcHV0ZVVzZXNG
b3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqLCBPcGNvZGVJRCwgSW5zdHJ1Y3Rpb24qLCBGYXN0
Qml0VmVjdG9yJiwgY29uc3QgRnVuY3RvciYpOworCisgICAgQnl0ZWNvZGVHcmFwaDxDb2RlQmxv
Y2s+IG1fZ3JhcGg7CiB9OwogCiBpbmxpbmUgYm9vbCBvcGVyYW5kSXNBbHdheXNMaXZlKGludCBv
cGVyYW5kKTsKIGlubGluZSBib29sIG9wZXJhbmRUaGF0SXNOb3RBbHdheXNMaXZlSXNMaXZlKGNv
bnN0IEZhc3RCaXRWZWN0b3ImIG91dCwgaW50IG9wZXJhbmQpOwogaW5saW5lIGJvb2wgb3BlcmFu
ZElzTGl2ZShjb25zdCBGYXN0Qml0VmVjdG9yJiBvdXQsIGludCBvcGVyYW5kKTsKK2lubGluZSBi
b29sIGlzVmFsaWRSZWdpc3RlckZvckxpdmVuZXNzKGludCBvcGVyYW5kKTsKIAogfSAvLyBuYW1l
c3BhY2UgSlNDCi0KLSNlbmRpZiAvLyBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNfaApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFs
eXNpc0lubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxp
dmVuZXNzQW5hbHlzaXNJbmxpbmVzLmgKaW5kZXggOWI1Yzc1NWZjYjZjZDUxODA1MTQ1MDA3ODky
MmFjNGQ2ZDRkMjM4Zi4uY2Y2YzhkMmE0MzRkMWRlOTYxYWE0YTliMWUwZTRkMGM0ZmMxZGUxOSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5l
c3NBbmFseXNpc0lubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzSW5saW5lcy5oCkBAIC0yMywxMSArMjMsMTIgQEAKICAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIEJ5dGVjb2Rl
TGl2ZW5lc3NBbmFseXNpc0lubGluZXNfaAotI2RlZmluZSBCeXRlY29kZUxpdmVuZXNzQW5hbHlz
aXNJbmxpbmVzX2gKKyNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiQnl0ZWNvZGVHcmFwaC5oIgog
I2luY2x1ZGUgIkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5oIgogI2luY2x1ZGUgIkNvZGVCbG9j
ay5oIgorI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgog
CiBuYW1lc3BhY2UgSlNDIHsKQEAgLTUwLDcgKzUxLDE1MSBAQCBpbmxpbmUgYm9vbCBvcGVyYW5k
SXNMaXZlKGNvbnN0IEZhc3RCaXRWZWN0b3ImIG91dCwgaW50IG9wZXJhbmQpCiAgICAgcmV0dXJu
IG9wZXJhbmRJc0Fsd2F5c0xpdmUob3BlcmFuZCkgfHwgb3BlcmFuZFRoYXRJc05vdEFsd2F5c0xp
dmVJc0xpdmUob3V0LCBvcGVyYW5kKTsKIH0KIAotfSAvLyBuYW1lc3BhY2UgSlNDCitpbmxpbmUg
Ym9vbCBpc1ZhbGlkUmVnaXN0ZXJGb3JMaXZlbmVzcyhpbnQgb3BlcmFuZCkKK3sKKyAgICBWaXJ0
dWFsUmVnaXN0ZXIgdmlydHVhbFJlZyhvcGVyYW5kKTsKKyAgICBpZiAodmlydHVhbFJlZy5pc0Nv
bnN0YW50KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gdmlydHVhbFJlZy5p
c0xvY2FsKCk7Cit9CisKKy8vIFNpbXBsaWZpZWQgaW50ZXJmYWNlIHRvIGJ5dGVjb2RlIHVzZS9k
ZWYsIHdoaWNoIGRldGVybWluZXMgZGVmcyBmaXJzdCBhbmQgdGhlbiB1c2VzLCBhbmQgaW5jbHVk
ZXMKKy8vIGV4Y2VwdGlvbiBoYW5kbGVycyBpbiB0aGUgdXNlcy4KK3RlbXBsYXRlPHR5cGVuYW1l
IERlcml2ZWRBbmFseXNpcz4KK3RlbXBsYXRlPHR5cGVuYW1lIEdyYXBoLCB0eXBlbmFtZSBVc2VG
dW5jdG9yLCB0eXBlbmFtZSBEZWZGdW5jdG9yPgoraW5saW5lIHZvaWQgQnl0ZWNvZGVMaXZlbmVz
c1Byb3BhZ2F0aW9uPERlcml2ZWRBbmFseXNpcz46OnN0ZXBPdmVySW5zdHJ1Y3Rpb24oR3JhcGgm
IGdyYXBoLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgRmFzdEJpdFZlY3RvciYgb3V0LCBjb25z
dCBVc2VGdW5jdG9yJiB1c2UsIGNvbnN0IERlZkZ1bmN0b3ImIGRlZikKK3sKKyAgICAvLyBUaGlz
IGFic3RyYWN0bHkgZXhlY3V0ZSB0aGUgaW5zdHJ1Y3Rpb24gaW4gcmV2ZXJzZS4gSW5zdHJ1Y3Rp
b25zIGxvZ2ljYWxseSBmaXJzdCB1c2Ugb3BlcmFuZHMgYW5kCisgICAgLy8gdGhlbiBkZWZpbmUg
b3BlcmFuZHMuIFRoaXMgbG9naWNhbCBvcmRlcmluZyBpcyBuZWNlc3NhcnkgZm9yIG9wZXJhdGlv
bnMgdGhhdCB1c2UgYW5kIGRlZiB0aGUgc2FtZQorICAgIC8vIG9wZXJhbmQsIGxpa2U6CisgICAg
Ly8KKyAgICAvLyAgICAgb3BfYWRkIGxvYzEsIGxvYzEsIGxvYzIKKyAgICAvLworICAgIC8vIFRo
ZSB1c2Ugb2YgbG9jMSBoYXBwZW5zIGJlZm9yZSB0aGUgZGVmIG9mIGxvYzEuIFRoYXQncyBhIHNl
bWFudGljIHJlcXVpcmVtZW50IHNpbmNlIHRoZSBhZGQKKyAgICAvLyBvcGVyYXRpb24gY2Fubm90
IHRyYXZlbCBmb3J3YXJkIGluIHRpbWUgdG8gcmVhZCB0aGUgdmFsdWUgdGhhdCBpdCB3aWxsIHBy
b2R1Y2UgYWZ0ZXIgcmVhZGluZyB0aGF0CisgICAgLy8gdmFsdWUuIFNpbmNlIHdlIGFyZSBleGVj
dXRpbmcgaW4gcmV2ZXJzZSwgdGhpcyBtZWFucyB0aGF0IHdlIG11c3QgZG8gZGVmcyBiZWZvcmUg
dXNlcyAocmV2ZXJzZSBvZgorICAgIC8vIHVzZXMgYmVmb3JlIGRlZnMpLgorICAgIC8vCisgICAg
Ly8gU2luY2UgdGhpcyBpcyBhIGxpdmVuZXNzIGFuYWx5c2lzLCB0aGlzIG9yZGVyaW5nIGVuZHMg
dXAgYmVpbmcgcGFydGljdWxhcmx5IGltcG9ydGFudDogaWYgd2UgZGlkCisgICAgLy8gdXNlcyBi
ZWZvcmUgZGVmcywgdGhlbiB0aGUgYWRkIG9wZXJhdGlvbiBhYm92ZSB3b3VsZCBhcHBlYXIgdG8g
bm90IGhhdmUgbG9jMSBsaXZlLCBzaW5jZSB3ZSdkCisgICAgLy8gZmlyc3QgYWRkIGl0IHRvIHRo
ZSBvdXQgc2V0ICh0aGUgdXNlKSwgYW5kIHRoZW4gd2UnZCByZW1vdmUgaXQgKHRoZSBkZWYpLgor
CisgICAgYXV0byogY29kZUJsb2NrID0gZ3JhcGguY29kZUJsb2NrKCk7CisgICAgSW50ZXJwcmV0
ZXIqIGludGVycHJldGVyID0gY29kZUJsb2NrLT52bSgpLT5pbnRlcnByZXRlcjsKKyAgICBhdXRv
KiBpbnN0cnVjdGlvbnNCZWdpbiA9IGdyYXBoLmluc3RydWN0aW9ucygpLmJlZ2luKCk7CisgICAg
YXV0byogaW5zdHJ1Y3Rpb24gPSAmaW5zdHJ1Y3Rpb25zQmVnaW5bYnl0ZWNvZGVPZmZzZXRdOwor
ICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKCppbnN0cnVj
dGlvbik7CisKKyAgICBzdGF0aWNfY2FzdDxEZXJpdmVkQW5hbHlzaXMqPih0aGlzKS0+Y29tcHV0
ZURlZnNGb3JCeXRlY29kZU9mZnNldCgKKyAgICAgICAgY29kZUJsb2NrLCBvcGNvZGVJRCwgaW5z
dHJ1Y3Rpb24sIG91dCwKKyAgICAgICAgWyZdICh0eXBlbmFtZSBHcmFwaDo6Q29kZUJsb2NrKiwg
dHlwZW5hbWUgR3JhcGg6Okluc3RydWN0aW9uKiwgT3Bjb2RlSUQsIGludCBvcGVyYW5kKSB7Cisg
ICAgICAgICAgICBpZiAoaXNWYWxpZFJlZ2lzdGVyRm9yTGl2ZW5lc3Mob3BlcmFuZCkpCisgICAg
ICAgICAgICAgICAgZGVmKFZpcnR1YWxSZWdpc3RlcihvcGVyYW5kKS50b0xvY2FsKCkpOworICAg
ICAgICB9KTsKKworICAgIHN0YXRpY19jYXN0PERlcml2ZWRBbmFseXNpcyo+KHRoaXMpLT5jb21w
dXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAorICAgICAgICBjb2RlQmxvY2ssIG9wY29kZUlELCBp
bnN0cnVjdGlvbiwgb3V0LAorICAgICAgICBbJl0gKHR5cGVuYW1lIEdyYXBoOjpDb2RlQmxvY2sq
LCB0eXBlbmFtZSBHcmFwaDo6SW5zdHJ1Y3Rpb24qLCBPcGNvZGVJRCwgaW50IG9wZXJhbmQpIHsK
KyAgICAgICAgICAgIGlmIChpc1ZhbGlkUmVnaXN0ZXJGb3JMaXZlbmVzcyhvcGVyYW5kKSkKKyAg
ICAgICAgICAgICAgICB1c2UoVmlydHVhbFJlZ2lzdGVyKG9wZXJhbmQpLnRvTG9jYWwoKSk7Cisg
ICAgICAgIH0pOworCisgICAgLy8gSWYgd2UgaGF2ZSBhbiBleGNlcHRpb24gaGFuZGxlciwgd2Ug
d2FudCB0aGUgbGl2ZS1pbiB2YXJpYWJsZXMgb2YgdGhlIAorICAgIC8vIGV4Y2VwdGlvbiBoYW5k
bGVyIGJsb2NrIHRvIGJlIGluY2x1ZGVkIGluIHRoZSBsaXZlLWluIG9mIHRoaXMgcGFydGljdWxh
ciBieXRlY29kZS4KKyAgICBpZiAoYXV0byogaGFuZGxlciA9IGNvZGVCbG9jay0+aGFuZGxlckZv
ckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KSkgeworICAgICAgICBCeXRlY29kZUJhc2lj
QmxvY2sqIGhhbmRsZXJCbG9jayA9IGdyYXBoLmZpbmRCYXNpY0Jsb2NrV2l0aExlYWRlck9mZnNl
dChoYW5kbGVyLT50YXJnZXQpOworICAgICAgICBBU1NFUlQoaGFuZGxlckJsb2NrKTsKKyAgICAg
ICAgaGFuZGxlckJsb2NrLT5pbigpLmZvckVhY2hTZXRCaXQodXNlKTsKKyAgICB9Cit9CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIERlcml2ZWRBbmFseXNpcz4KK3RlbXBsYXRlPHR5cGVuYW1lIEdyYXBo
PgoraW5saW5lIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0aW9uPERlcml2ZWRBbmFseXNp
cz46OnN0ZXBPdmVySW5zdHJ1Y3Rpb24oR3JhcGgmIGdyYXBoLCB1bnNpZ25lZCBieXRlY29kZU9m
ZnNldCwgRmFzdEJpdFZlY3RvciYgb3V0KQoreworICAgIHN0ZXBPdmVySW5zdHJ1Y3Rpb24oCisg
ICAgICAgIGdyYXBoLCBieXRlY29kZU9mZnNldCwgb3V0LAorICAgICAgICBbJl0gKHVuc2lnbmVk
IGJpdEluZGV4KSB7CisgICAgICAgICAgICAvLyBUaGlzIGlzIHRoZSB1c2UgZnVuY3Rvciwgc28g
d2Ugc2V0IHRoZSBiaXQuCisgICAgICAgICAgICBvdXQuc2V0KGJpdEluZGV4KTsKKyAgICAgICAg
fSwKKyAgICAgICAgWyZdICh1bnNpZ25lZCBiaXRJbmRleCkgeworICAgICAgICAgICAgLy8gVGhp
cyBpcyB0aGUgZGVmIGZ1bmN0b3IsIHNvIHdlIGNsZWFyIHRoZSBiaXQuCisgICAgICAgICAgICBv
dXQuY2xlYXIoYml0SW5kZXgpOworICAgICAgICB9KTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUg
RGVyaXZlZEFuYWx5c2lzPgordGVtcGxhdGU8dHlwZW5hbWUgR3JhcGg+CitpbmxpbmUgYm9vbCBC
eXRlY29kZUxpdmVuZXNzUHJvcGFnYXRpb248RGVyaXZlZEFuYWx5c2lzPjo6Y29tcHV0ZUxvY2Fs
TGl2ZW5lc3NGb3JCeXRlY29kZU9mZnNldChHcmFwaCYgZ3JhcGgsIEJ5dGVjb2RlQmFzaWNCbG9j
ayogYmxvY2ssIHVuc2lnbmVkIHRhcmdldE9mZnNldCwgRmFzdEJpdFZlY3RvciYgcmVzdWx0KQor
eworICAgIEFTU0VSVCghYmxvY2stPmlzRXhpdEJsb2NrKCkpOworICAgIEFTU0VSVCghYmxvY2st
PmlzRW50cnlCbG9jaygpKTsKIAotI2VuZGlmIC8vIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lu
bGluZXNfaAorICAgIEZhc3RCaXRWZWN0b3Igb3V0ID0gYmxvY2stPm91dCgpOwogCisgICAgZm9y
IChpbnQgaSA9IGJsb2NrLT5ieXRlY29kZU9mZnNldHMoKS5zaXplKCkgLSAxOyBpID49IDA7IGkt
LSkgeworICAgICAgICB1bnNpZ25lZCBieXRlY29kZU9mZnNldCA9IGJsb2NrLT5ieXRlY29kZU9m
ZnNldHMoKVtpXTsKKyAgICAgICAgaWYgKHRhcmdldE9mZnNldCA+IGJ5dGVjb2RlT2Zmc2V0KQor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIHN0ZXBPdmVySW5zdHJ1Y3Rpb24oZ3JhcGgsIGJ5
dGVjb2RlT2Zmc2V0LCBvdXQpOworICAgIH0KKworICAgIHJldHVybiByZXN1bHQuc2V0QW5kQ2hl
Y2sob3V0KTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgRGVyaXZlZEFuYWx5c2lzPgordGVtcGxh
dGU8dHlwZW5hbWUgR3JhcGg+CitpbmxpbmUgYm9vbCBCeXRlY29kZUxpdmVuZXNzUHJvcGFnYXRp
b248RGVyaXZlZEFuYWx5c2lzPjo6Y29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCbG9jayhHcmFwaCYg
Z3JhcGgsIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2spCit7CisgICAgaWYgKGJsb2NrLT5pc0V4
aXRCbG9jaygpIHx8IGJsb2NrLT5pc0VudHJ5QmxvY2soKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIHJldHVybiBjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJ5dGVjb2RlT2Zmc2V0KGdyYXBo
LCBibG9jaywgYmxvY2stPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCksIGJsb2NrLT5pbigpKTsKK30K
KwordGVtcGxhdGU8dHlwZW5hbWUgRGVyaXZlZEFuYWx5c2lzPgordGVtcGxhdGU8dHlwZW5hbWUg
R3JhcGg+CitpbmxpbmUgRmFzdEJpdFZlY3RvciBCeXRlY29kZUxpdmVuZXNzUHJvcGFnYXRpb248
RGVyaXZlZEFuYWx5c2lzPjo6Z2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29kZU9mZnNldChHcmFwaCYg
Z3JhcGgsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KQoreworICAgIEJ5dGVjb2RlQmFzaWNCbG9j
ayogYmxvY2sgPSBncmFwaC5maW5kQmFzaWNCbG9ja0ZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2Rl
T2Zmc2V0KTsKKyAgICBBU1NFUlQoYmxvY2spOworICAgIEFTU0VSVCghYmxvY2stPmlzRW50cnlC
bG9jaygpKTsKKyAgICBBU1NFUlQoIWJsb2NrLT5pc0V4aXRCbG9jaygpKTsKKyAgICBGYXN0Qml0
VmVjdG9yIG91dDsKKyAgICBvdXQucmVzaXplKGJsb2NrLT5vdXQoKS5udW1CaXRzKCkpOworICAg
IGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQnl0ZWNvZGVPZmZzZXQoZ3JhcGgsIGJsb2NrLCBieXRl
Y29kZU9mZnNldCwgb3V0KTsKKyAgICByZXR1cm4gb3V0OworfQorCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBEZXJpdmVkQW5hbHlzaXM+Cit0ZW1wbGF0ZTx0eXBlbmFtZSBHcmFwaD4KK2lubGluZSB2b2lk
IEJ5dGVjb2RlTGl2ZW5lc3NQcm9wYWdhdGlvbjxEZXJpdmVkQW5hbHlzaXM+OjpydW5MaXZlbmVz
c0ZpeHBvaW50KEdyYXBoJiBncmFwaCkKK3sKKyAgICBhdXRvKiBjb2RlQmxvY2sgPSBncmFwaC5j
b2RlQmxvY2soKTsKKyAgICB1bnNpZ25lZCBudW1iZXJPZlZhcmlhYmxlcyA9IGNvZGVCbG9jay0+
bnVtQ2FsbGVlTG9jYWxzKCk7CisgICAgZm9yIChCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrIDog
Z3JhcGgpIHsKKyAgICAgICAgYmxvY2stPmluKCkucmVzaXplKG51bWJlck9mVmFyaWFibGVzKTsK
KyAgICAgICAgYmxvY2stPm91dCgpLnJlc2l6ZShudW1iZXJPZlZhcmlhYmxlcyk7CisgICAgICAg
IGJsb2NrLT5pbigpLmNsZWFyQWxsKCk7CisgICAgICAgIGJsb2NrLT5vdXQoKS5jbGVhckFsbCgp
OworICAgIH0KKworICAgIGJvb2wgY2hhbmdlZDsKKyAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGxh
c3RCbG9jayA9IGdyYXBoLmxhc3QoKTsKKyAgICBsYXN0QmxvY2stPmluKCkuY2xlYXJBbGwoKTsK
KyAgICBsYXN0QmxvY2stPm91dCgpLmNsZWFyQWxsKCk7CisgICAgRmFzdEJpdFZlY3RvciBuZXdP
dXQ7CisgICAgbmV3T3V0LnJlc2l6ZShsYXN0QmxvY2stPm91dCgpLm51bUJpdHMoKSk7CisgICAg
ZG8geworICAgICAgICBjaGFuZ2VkID0gZmFsc2U7CisgICAgICAgIGZvciAoc3RkOjp1bmlxdWVf
cHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4mIGJsb2NrIDogZ3JhcGguYmFzaWNCbG9ja3NJblJldmVy
c2VPcmRlcigpKSB7CisgICAgICAgICAgICBuZXdPdXQuY2xlYXJBbGwoKTsKKyAgICAgICAgICAg
IGZvciAoQnl0ZWNvZGVCYXNpY0Jsb2NrKiBzdWNjZXNzb3IgOiBibG9jay0+c3VjY2Vzc29ycygp
KQorICAgICAgICAgICAgICAgIG5ld091dC5tZXJnZShzdWNjZXNzb3ItPmluKCkpOworICAgICAg
ICAgICAgYmxvY2stPm91dCgpLnNldChuZXdPdXQpOworICAgICAgICAgICAgY2hhbmdlZCB8PSBj
b21wdXRlTG9jYWxMaXZlbmVzc0ZvckJsb2NrKGdyYXBoLCBibG9jay5nZXQoKSk7CisgICAgICAg
IH0KKyAgICB9IHdoaWxlIChjaGFuZ2VkKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVSZXdyaXRlci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVSZXdyaXRlci5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZDA1ZjdiZWVkZjAxODAyMjExNjE5MmI2Yzg2Yzc5OTVjYzA0MmM4NAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVJl
d3JpdGVyLmNwcApAQCAtMCwwICsxLDExNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBZ
dXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisgKiBDb3B5cmlnaHQgKEMpIDIw
MTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiQnl0ZWNvZGVSZXdyaXRlci5oIgorCisjaW5jbHVkZSA8d3Rm
L0J1YmJsZVNvcnQuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK3ZvaWQgQnl0ZWNvZGVSZXdyaXRl
cjo6YXBwbHlNb2RpZmljYXRpb24oKQoreworICAgIGZvciAoc2l6ZV90IGluc2VydGlvbkluZGV4
ID0gbV9pbnNlcnRpb25zLnNpemUoKTsgaW5zZXJ0aW9uSW5kZXgtLTspIHsKKyAgICAgICAgSW5z
ZXJ0aW9uJiBpbnNlcnRpb24gPSBtX2luc2VydGlvbnNbaW5zZXJ0aW9uSW5kZXhdOworICAgICAg
ICBpZiAoaW5zZXJ0aW9uLmVsZW1lbnQoKS50eXBlID09IENvbW1hbmQ6OlR5cGU6OlJlbW92ZSkK
KyAgICAgICAgICAgIG1fZ3JhcGguaW5zdHJ1Y3Rpb25zKCkucmVtb3ZlKGluc2VydGlvbi5pbmRl
eCgpLCBpbnNlcnRpb24uZWxlbWVudCgpLmxlbmd0aCgpKTsKKyAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgICBpZiAoaW5zZXJ0aW9uLmVsZW1lbnQoKS5ieXRlY29kZVR5cGUgPT0gQ29tbWFuZDo6
Qnl0ZWNvZGVUeXBlOjpCcmFuY2gpCisgICAgICAgICAgICAgICAgYWRqdXN0SnVtcFRhcmdldHNJ
bkp1bXBPcGVyYXRpb24oYWRqdXN0T2Zmc2V0V2l0aEluc2VydGlvbnMoMCwgaW5zZXJ0aW9uLmlu
ZGV4KCksIG1faW5zZXJ0aW9ucy5iZWdpbigpLCBtX2luc2VydGlvbnMuYmVnaW4oKSArIGluc2Vy
dGlvbkluZGV4KSwgaW5zZXJ0aW9uKTsKKyAgICAgICAgICAgIG1fZ3JhcGguaW5zdHJ1Y3Rpb25z
KCkuaW5zZXJ0VmVjdG9yKGluc2VydGlvbi5pbmRleCgpLCBpbnNlcnRpb24uZWxlbWVudCgpLmlu
c3RydWN0aW9ucyk7CisgICAgICAgIH0KKyAgICB9CisgICAgbV9pbnNlcnRpb25zLmNsZWFyKCk7
Cit9CisKK3ZvaWQgQnl0ZWNvZGVSZXdyaXRlcjo6ZXhlY3V0ZSgpCit7CisgICAgV1RGOjpidWJi
bGVTb3J0KG1faW5zZXJ0aW9ucy5iZWdpbigpLCBtX2luc2VydGlvbnMuZW5kKCksIFtdIChjb25z
dCBJbnNlcnRpb24mIGxocywgY29uc3QgSW5zZXJ0aW9uJiByaHMpIHsKKyAgICAgICAgaWYgKGxo
cy5pbmRleCgpID09IHJocy5pbmRleCgpKQorICAgICAgICAgICAgcmV0dXJuIGxocy5lbGVtZW50
KCkucG9zaXRpb24gPCByaHMuZWxlbWVudCgpLnBvc2l0aW9uOworICAgICAgICByZXR1cm4gbGhz
IDwgcmhzOworICAgIH0pOworCisgICAgLy8gQ29udmVydCB0byBhYnNvbHV0ZSBmaW5hbCBvZmZz
ZXRzLgorICAgIGZvciAoU3dpdGNoRW50cnkmIGVudHJ5IDogbV9pbnNlcnRlZFN3aXRjaGVzKSB7
CisgICAgICAgIFVubGlua2VkU2ltcGxlSnVtcFRhYmxlJiB0YWJsZSA9IG1fZ3JhcGguY29kZUJs
b2NrKCktPnN3aXRjaEp1bXBUYWJsZShlbnRyeS50YWJsZUluZGV4KTsKKyAgICAgICAgZW50cnku
ZGVmYXVsdE9mZnNldCA9IGFkanVzdE9mZnNldCgwLCBlbnRyeS5kZWZhdWx0T2Zmc2V0KTsKKyAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gdGFibGUuYnJhbmNoT2Zmc2V0cy5zaXplKCk7IGktLTsp
CisgICAgICAgICAgICB0YWJsZS5icmFuY2hPZmZzZXRzW2ldID0gYWRqdXN0T2Zmc2V0KDAsIHRh
YmxlLmJyYW5jaE9mZnNldHNbaV0pOworICAgIH0KKworICAgIFVubGlua2VkQ29kZUJsb2NrKiBj
b2RlQmxvY2sgPSBtX2dyYXBoLmNvZGVCbG9jaygpOworICAgIGNvZGVCbG9jay0+YXBwbHlNb2Rp
ZmljYXRpb24oKnRoaXMpOworfQorCit2b2lkIEJ5dGVjb2RlUmV3cml0ZXI6OmFkanVzdEp1bXBU
YXJnZXRzSW5KdW1wT3BlcmF0aW9uKHVuc2lnbmVkIGZpbmFsT2Zmc2V0LCBJbnNlcnRpb24mIGlu
c2VydGlvbikKK3sKKyAgICAvLyBDdXJyZW50bHksIHdlIG9ubHkgc3VwcG9ydCBzd2l0Y2hfaW1t
IG9wZXJhdGlvbiBoZXJlLgorICAgIC8vIFdlIGNhbiBlYXNpbHkgZXh0ZW5kIGl0IHRvIGFsbG93
IHRoZSBvdGhlciBqdW1wIG9wZXJhdGlvbnMuCisgICAgU3dpdGNoRW50cnkmIGVudHJ5ID0gbV9p
bnNlcnRlZFN3aXRjaGVzW2luc2VydGlvbi5lbGVtZW50KCkuanVtcEVudHJ5SW5kZXhdOworICAg
IFVubGlua2VkU2ltcGxlSnVtcFRhYmxlJiB0YWJsZSA9IG1fZ3JhcGguY29kZUJsb2NrKCktPnN3
aXRjaEp1bXBUYWJsZShlbnRyeS50YWJsZUluZGV4KTsKKworICAgIGZvciAodW5zaWduZWQgaSA9
IHRhYmxlLmJyYW5jaE9mZnNldHMuc2l6ZSgpOyBpLS07KQorICAgICAgICB0YWJsZS5icmFuY2hP
ZmZzZXRzW2ldID0gdGFibGUuYnJhbmNoT2Zmc2V0c1tpXSAtIHN0YXRpY19jYXN0PGludD4oZmlu
YWxPZmZzZXQpOworCisgICAgaW5zZXJ0aW9uLmVsZW1lbnQoKS5pbnN0cnVjdGlvbnNbMl0gPSBz
dGF0aWNfY2FzdDxpbnQ+KGVudHJ5LmRlZmF1bHRPZmZzZXQpIC0gc3RhdGljX2Nhc3Q8aW50Pihm
aW5hbE9mZnNldCk7Cit9CisKK3ZvaWQgQnl0ZWNvZGVSZXdyaXRlcjo6aW5zZXJ0SW1wbCh1bnNp
Z25lZCBqdW1wRW50cnlJbmRleCwgQ29tbWFuZDo6Qnl0ZWNvZGVUeXBlIGJ5dGVjb2RlVHlwZSwg
UG9zaXRpb24gcG9zaXRpb24sIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBWZWN0b3I8VW5saW5r
ZWRJbnN0cnVjdGlvbj4mJiBmcmFnbWVudCkKK3sKKyAgICBBU1NFUlQocG9zaXRpb24gPT0gUG9z
aXRpb246OkJlZm9yZSB8fCBwb3NpdGlvbiA9PSBQb3NpdGlvbjo6QWZ0ZXIpOworICAgIG1faW5z
ZXJ0aW9ucy5hcHBlbmQoSW5zZXJ0aW9uKGJ5dGVjb2RlT2Zmc2V0LCBDb21tYW5kIHsKKyAgICAg
ICAgQ29tbWFuZDo6VHlwZTo6SW5zZXJ0LAorICAgICAgICBwb3NpdGlvbiwKKyAgICAgICAgYnl0
ZWNvZGVUeXBlLAorICAgICAgICBqdW1wRW50cnlJbmRleCwKKyAgICAgICAgMCwKKyAgICAgICAg
V1RGTW92ZShmcmFnbWVudCkKKyAgICB9KSk7Cit9CisKK1VubGlua2VkU2ltcGxlSnVtcFRhYmxl
JiBCeXRlY29kZVJld3JpdGVyOjppbnNlcnRTd2l0Y2hJbW1lZGlhdGVJbXBsKFBvc2l0aW9uIHBv
c2l0aW9uLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgdW5zaWduZWQgZGVmYXVsdE9mZnNldCwg
aW50IHJlZykKK3sKKyAgICBTd2l0Y2hFbnRyeSBlbnRyeSB7CisgICAgICAgIG1fZ3JhcGguY29k
ZUJsb2NrKCktPm51bWJlck9mU3dpdGNoSnVtcFRhYmxlcygpLAorICAgICAgICBkZWZhdWx0T2Zm
c2V0LAorICAgIH07CisKKyAgICBWZWN0b3I8VW5saW5rZWRJbnN0cnVjdGlvbj4gZnJhZ21lbnQg
PSB7CisgICAgICAgIFVubGlua2VkSW5zdHJ1Y3Rpb24ob3Bfc3dpdGNoX2ltbSksCisgICAgICAg
IFVubGlua2VkSW5zdHJ1Y3Rpb24oZW50cnkudGFibGVJbmRleCksCisgICAgICAgIFVubGlua2Vk
SW5zdHJ1Y3Rpb24oZGVmYXVsdE9mZnNldCksCisgICAgICAgIFVubGlua2VkSW5zdHJ1Y3Rpb24o
cmVnKQorICAgIH07CisKKyAgICBhdXRvJiBqdW1wVGFibGUgPSBtX2dyYXBoLmNvZGVCbG9jaygp
LT5hZGRTd2l0Y2hKdW1wVGFibGUoKTsKKyAgICB1bnNpZ25lZCBqdW1wRW50cnlJbmRleCA9IG1f
aW5zZXJ0ZWRTd2l0Y2hlcy5zaXplKCk7CisgICAgbV9pbnNlcnRlZFN3aXRjaGVzLmFwcGVuZChl
bnRyeSk7CisgICAgaW5zZXJ0SW1wbChqdW1wRW50cnlJbmRleCwgQ29tbWFuZDo6Qnl0ZWNvZGVU
eXBlOjpCcmFuY2gsIHBvc2l0aW9uLCBieXRlY29kZU9mZnNldCwgV1RGTW92ZShmcmFnbWVudCkp
OworICAgIHJldHVybiBqdW1wVGFibGU7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlUmV3cml0ZXIuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVJld3JpdGVyLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMWRiY2UyYTkzYWI1MzFmYWQ2YmFiZWExNDVkMTBiMjc1OWYzOTFhOQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVJld3JpdGVy
LmgKQEAgLTAsMCArMSwyNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgWXVzdWtlIFN1
enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
bmNsdWRlICJCeXRlY29kZUdyYXBoLmgiCisjaW5jbHVkZSAiQnl0ZWNvZGVzLmgiCisjaW5jbHVk
ZSAiT3Bjb2RlLmgiCisjaW5jbHVkZSAiVW5saW5rZWRDb2RlQmxvY2suaCIKKyNpbmNsdWRlIDx3
dGYvSW5zZXJ0aW9uLmg+CisKK25hbWVzcGFjZSBKU0MgeworCisvLyBCeXRlY29kZVJld3JpdGVy
IG9mZmVycyB0aGUgYWJpbGl0eSB0byBpbnNlcnQgYW5kIHJlbW92ZSB0aGUgYnl0ZWNvZGVzIGlu
Y2x1ZGluZyBqdW1wIG9wZXJhdGlvbnMuCisvLworLy8gV2UgdXNlIHRoZSBvcmlnaW5hbCBieXRl
Y29kZSBvZmZzZXRzIGFzIGxhYmVscy4gV2hlbiB5b3UgZW1pdCBzb21lIGp1bXBzLCB5b3UgY2Fu
IHNwZWNpZnkgdGhlIGp1bXAgdGFyZ2V0IGJ5CisvLyB1c2luZyB0aGUgb3JpZ2luYWwgYnl0ZWNv
ZGUgb2Zmc2V0cy4gVGhlc2UgYnl0ZWNvZGUgb2Zmc2V0cyBhcmUgbGF0ZXIgY29udmVydGVkIGFw
cHJvcHJpYXRlIHZhbHVlcyBieSB0aGUKKy8vIHJld3JpdGVyLiBBbmQgd2UgYWxzbyB1c2UgdGhl
IGxhYmVscyB0byByZXByZXNlbnRzIHRoZSBwb3NpdGlvbiB0aGUgbmV3IGJ5dGVjb2RlcyBpbnNl
cnRlZC4KKy8vCisvLyAgICAgICAgICAgICAgICAgICAgICB8ICBbYnl0ZWNvZGVdICB8ICBbYnl0
ZWNvZGVdICB8CisvLyAgIG9mZnNldHMgICAgICAgICAgICBBICAgICAgICAgICAgICBCICAgICAg
ICAgICAgICBDCisvLworLy8gV2UgY2FuIHVzZSB0aGUgYWJvdmUgIkEiLCAiQiIsIGFuZCAiQyIg
b2Zmc2V0cyBhcyBsYWJlbHMuIEFuZCB0aGUgcmV3cml0ZXIgaGFzIHRoZSBhYmlsaXR5IHRvIGlu
c2VydCBieXRlY29kZSBmcmFnbWVudHMKKy8vIGJlZm9yZSBhbmQgYWZ0ZXIgdGhlIGxhYmVsLiBG
b3IgZXhhbXBsZSwgaWYgeW91IGluc2VydCB0aGUgZnJhZ21lbnQgYmVmb3JlICJCIiwgdGhlIGxh
eW91dCBiZWNvbWVzIGxpa2UgdGhpcy4KKy8vCisvLyAgICAgICAgICAgICAgICAgICAgICB8ICBb
Ynl0ZWNvZGVdICB8ICBbZnJhZ21lbnRdICBbYnl0ZWNvZGVdICB8CisvLyAgIG9mZnNldHMgICAg
ICAgICAgICBBICAgICAgICAgICAgICBCICAgICAgICAgICAgICAgICAgICAgICAgICBDCisvLwor
Ly8gIEFuZCBldmVuIGlmIHlvdSByZW1vdmUgc29tZSBvcmlnaW5hbCBieXRlY29kZXMsIHRoZSBv
ZmZzZXQgcmVtYWlucyBhcyBsYWJlbHMuIEZvciBleGFtcGxlLCB3aGVuIHlvdSByZW1vdmUgdGhl
IEEncyBieXRlY29kZSwKKy8vICB0aGUgbGF5b3V0IGJlY29tZXMgbGlrZSB0aGlzLgorLy8KKy8v
ICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgIHwgIFtieXRlY29kZV0gIHwKKy8v
ICAgb2Zmc2V0cyAgICAgICAgICAgIEEgICAgICAgICAgICAgIEIgICAgICAgICAgICAgIEMKKy8v
CisvLyAgQW5kIHN0aWxsIHlvdSBjYW4gaW5zZXJ0IGZyYWdtZW50cyBiZWZvcmUgYW5kIGFmdGVy
ICJBIi4KKy8vCisvLyAgICAgICAgICAgICAgICAgICAgICB8ICBbZnJhZ21lbnRdICB8ICBbYnl0
ZWNvZGVdICB8CisvLyAgIG9mZnNldHMgICAgICAgICAgICBBICAgICAgICAgICAgICBCICAgICAg
ICAgICAgICBDCisvLworLy8gICBXZSBjYW4gaW5zZXJ0IGJ5dGVjb2RlIGZyYWdtZW50cyAiQmVm
b3JlIiBhbmQgIkFmdGVyIiB0aGUgbGFiZWxzLiBUaGlzIGluc2VydGVkIHBvc2l0aW9uLCBlaXRo
ZXIgIkJlZm9yZSIgYW5kICJBZnRlciIsCisvLyAgIGhhcyBlZmZlY3Qgd2hlbiB0aGUgbGFiZWwg
aXMgaW52b2x2ZWQgd2l0aCBqdW1wcy4gRm9yIGV4YW1wbGUsIHdoZW4geW91IGhhdmUganVtcCB0
byB0aGUgcG9zaXRpb24gIkIiLAorLy8KKy8vICAgICAgICAgICAgICAgICAgICAgIHwgIFtieXRl
Y29kZV0gIHwgIFtieXRlY29kZV0gIHwKKy8vICAgb2Zmc2V0cyAgICAgICAgICAgIEEgICAgICAg
ICAgICAgIEIgICAgICAgICAgICAgIEMKKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIF4KKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGp1bXAgdG8g
aGVyZS4KKy8vCisvLyAgYW5kIHlvdSBpbnNlcnQgdGhlIGJ5dGVjb2RlIGJlZm9yZS9hZnRlciAi
QiIsCisvLworLy8gICAgICAgICAgICAgICAgICAgICAgfCAgW2J5dGVjb2RlXSBbYmVmb3JlXSAg
fCAgW2FmdGVyXSBbYnl0ZWNvZGVdICB8CisvLyAgIG9mZnNldHMgICAgICAgICAgICBBICAgICAg
ICAgICAgICAgICAgICAgICBCICAgICAgICAgICAgICBDCisvLyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBeCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBqdW1wIHRvIGhlcmUuCisvLworLy8gIGFzIHlvdSBjYW4gc2Vl
LCB0aGUgZXhlY3V0aW9uIGp1bXBpbmcgaW50byAiQiIgZG9lcyBub3QgZXhlY3V0ZSBbYmVmb3Jl
XSBjb2RlLgorY2xhc3MgQnl0ZWNvZGVSZXdyaXRlciB7CitXVEZfTUFLRV9OT05DT1BZQUJMRShC
eXRlY29kZVJld3JpdGVyKTsKK3B1YmxpYzoKKyAgICBlbnVtIGNsYXNzIFBvc2l0aW9uIDogaW50
OF90IHsKKyAgICAgICAgQmVmb3JlID0gLTEsCisgICAgICAgIExhYmVsUG9pbnQgPSAwLAorICAg
ICAgICBBZnRlciA9IDEsCisgICAgICAgIE9yaWdpbmFsQnl0ZWNvZGVQb2ludCA9IDIsCisgICAg
fTsKKworcHJpdmF0ZToKKyAgICBzdHJ1Y3QgQ29tbWFuZCB7CisgICAgICAgIGVudW0gY2xhc3Mg
VHlwZSA6IHVpbnQ4X3QgeyBJbnNlcnQgPSAwLCBSZW1vdmUgPSAxLCB9OworICAgICAgICBlbnVt
IGNsYXNzIEJ5dGVjb2RlVHlwZSA6IHVpbnQ4X3QgeyBOb3JtYWwsIEJyYW5jaCB9OworCisgICAg
ICAgIHNpemVfdCBsZW5ndGgoKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICBpZiAodHlw
ZSA9PSBUeXBlOjpSZW1vdmUpCisgICAgICAgICAgICAgICAgcmV0dXJuIHJlbW92ZUxlbmd0aDsK
KyAgICAgICAgICAgIHJldHVybiBpbnN0cnVjdGlvbnMuc2l6ZSgpOworICAgICAgICB9CisKKyAg
ICAgICAgVHlwZSB0eXBlOworICAgICAgICBQb3NpdGlvbiBwb3NpdGlvbjsKKyAgICAgICAgQnl0
ZWNvZGVUeXBlIGJ5dGVjb2RlVHlwZTsKKyAgICAgICAgdW5zaWduZWQganVtcEVudHJ5SW5kZXg7
CisgICAgICAgIHNpemVfdCByZW1vdmVMZW5ndGg7CisgICAgICAgIFZlY3RvcjxVbmxpbmtlZElu
c3RydWN0aW9uPiBpbnN0cnVjdGlvbnM7CisgICAgfTsKKworICAgIHR5cGVkZWYgV1RGOjpJbnNl
cnRpb248Q29tbWFuZD4gSW5zZXJ0aW9uOworCisgICAgc3RydWN0IFN3aXRjaEVudHJ5IHsKKyAg
ICAgICAgc2l6ZV90IHRhYmxlSW5kZXg7CisgICAgICAgIHVuc2lnbmVkIGRlZmF1bHRPZmZzZXQ7
CisgICAgfTsKKworcHVibGljOgorICAgIGNsYXNzIEZyYWdtZW50IHsKKyAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShGcmFnbWVudCk7CisgICAgcHVibGljOgorICAgICAgICBGcmFnbWVudChWZWN0
b3I8VW5saW5rZWRJbnN0cnVjdGlvbj4mIGZyYWdtZW50KQorICAgICAgICAgICAgOiBtX2ZyYWdt
ZW50KGZyYWdtZW50KQorICAgICAgICB7CisgICAgICAgIH0KKworICAgICAgICB0ZW1wbGF0ZTxj
bGFzcy4uLiBBcmdzPgorICAgICAgICB2b2lkIGFwcGVuZChBcmdzLi4uIGFyZ3MpCisgICAgICAg
IHsKKyAgICAgICAgICAgIFVubGlua2VkSW5zdHJ1Y3Rpb24gaW5zdHJ1Y3Rpb25zW3NpemVvZi4u
LihhcmdzKV0gPSB7CisgICAgICAgICAgICAgICAgVW5saW5rZWRJbnN0cnVjdGlvbihhcmdzKS4u
LgorICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIG1fZnJhZ21lbnQuYXBwZW5kKGluc3RydWN0
aW9ucywgc2l6ZW9mLi4uKGFyZ3MpKTsKKyAgICAgICAgfQorCisgICAgcHJpdmF0ZToKKyAgICAg
ICAgVmVjdG9yPFVubGlua2VkSW5zdHJ1Y3Rpb24+JiBtX2ZyYWdtZW50OworICAgIH07CisKKyAg
ICBCeXRlY29kZVJld3JpdGVyKEJ5dGVjb2RlR3JhcGg8VW5saW5rZWRDb2RlQmxvY2s+JiBncmFw
aCkKKyAgICAgICAgOiBtX2dyYXBoKGdyYXBoKQorICAgIHsKKyAgICB9CisKKyAgICB0ZW1wbGF0
ZTxjbGFzcy4uLiBBcmdzPgorICAgIHZvaWQgaW5zZXJ0QmVmb3JlKHVuc2lnbmVkIGJ5dGVjb2Rl
T2Zmc2V0LCBPcGNvZGVJRCBvcGNvZGVJRCwgQXJncy4uLiBhcmdzKQorICAgIHsKKyAgICAgICAg
VmVjdG9yPFVubGlua2VkSW5zdHJ1Y3Rpb24+IGZyYWdtZW50ID0geworICAgICAgICAgICAgVW5s
aW5rZWRJbnN0cnVjdGlvbihvcGNvZGVJRCksCisgICAgICAgICAgICBVbmxpbmtlZEluc3RydWN0
aW9uKGFyZ3MpLi4uCisgICAgICAgIH07CisgICAgICAgIGluc2VydEltcGwoMCwgQ29tbWFuZDo6
Qnl0ZWNvZGVUeXBlOjpOb3JtYWwsIFBvc2l0aW9uOjpCZWZvcmUsIGJ5dGVjb2RlT2Zmc2V0LCBX
VEZNb3ZlKGZyYWdtZW50KSk7CisgICAgfQorCisgICAgdGVtcGxhdGU8Y2xhc3MuLi4gQXJncz4K
KyAgICB2b2lkIGluc2VydEFmdGVyKHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBPcGNvZGVJRCBv
cGNvZGVJRCwgQXJncy4uLiBhcmdzKQorICAgIHsKKyAgICAgICAgVmVjdG9yPFVubGlua2VkSW5z
dHJ1Y3Rpb24+IGZyYWdtZW50ID0geworICAgICAgICAgICAgVW5saW5rZWRJbnN0cnVjdGlvbihv
cGNvZGVJRCksCisgICAgICAgICAgICBVbmxpbmtlZEluc3RydWN0aW9uKGFyZ3MpLi4uCisgICAg
ICAgIH07CisgICAgICAgIGluc2VydEltcGwoMCwgQ29tbWFuZDo6Qnl0ZWNvZGVUeXBlOjpOb3Jt
YWwsIFBvc2l0aW9uOjpBZnRlciwgYnl0ZWNvZGVPZmZzZXQsIFdURk1vdmUoZnJhZ21lbnQpKTsK
KyAgICB9CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBGdW5jdGlvbj4KKyAgICB2b2lkIGluc2VydEZy
YWdtZW50QmVmb3JlKHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBGdW5jdGlvbiBmdW5jdGlvbikK
KyAgICB7CisgICAgICAgIFZlY3RvcjxVbmxpbmtlZEluc3RydWN0aW9uPiBpbnN0cnVjdGlvbnM7
CisgICAgICAgIEZyYWdtZW50IGZyYWdtZW50KGluc3RydWN0aW9ucyk7CisgICAgICAgIGZ1bmN0
aW9uKGZyYWdtZW50KTsKKyAgICAgICAgaW5zZXJ0SW1wbCgwLCBDb21tYW5kOjpCeXRlY29kZVR5
cGU6Ok5vcm1hbCwgUG9zaXRpb246OkJlZm9yZSwgYnl0ZWNvZGVPZmZzZXQsIFdURk1vdmUoaW5z
dHJ1Y3Rpb25zKSk7CisgICAgfQorCisgICAgdGVtcGxhdGU8Y2xhc3MgRnVuY3Rpb24+CisgICAg
dm9pZCBpbnNlcnRGcmFnbWVudEFmdGVyKHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBGdW5jdGlv
biBmdW5jdGlvbikKKyAgICB7CisgICAgICAgIFZlY3RvcjxVbmxpbmtlZEluc3RydWN0aW9uPiBp
bnN0cnVjdGlvbnM7CisgICAgICAgIEZyYWdtZW50IGZyYWdtZW50KGluc3RydWN0aW9ucyk7Cisg
ICAgICAgIGZ1bmN0aW9uKGZyYWdtZW50KTsKKyAgICAgICAgaW5zZXJ0SW1wbCgwLCBDb21tYW5k
OjpCeXRlY29kZVR5cGU6Ok5vcm1hbCwgUG9zaXRpb246OkFmdGVyLCBieXRlY29kZU9mZnNldCwg
V1RGTW92ZShpbnN0cnVjdGlvbnMpKTsKKyAgICB9CisKKyAgICBVbmxpbmtlZFNpbXBsZUp1bXBU
YWJsZSYgaW5zZXJ0U3dpdGNoSW1tZWRpYXRlQmVmb3JlKHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0
LCB1bnNpZ25lZCBkZWZhdWx0T2Zmc2V0LCBpbnQgcmVnKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGluc2VydFN3aXRjaEltbWVkaWF0ZUltcGwoUG9zaXRpb246OkJlZm9yZSwgYnl0ZWNvZGVPZmZz
ZXQsIGRlZmF1bHRPZmZzZXQsIHJlZyk7CisgICAgfQorCisgICAgdm9pZCByZW1vdmVCeXRlY29k
ZSh1bnNpZ25lZCBieXRlY29kZU9mZnNldCkKKyAgICB7CisgICAgICAgIG1faW5zZXJ0aW9ucy5h
cHBlbmQoSW5zZXJ0aW9uKGJ5dGVjb2RlT2Zmc2V0LCBDb21tYW5kIHsgQ29tbWFuZDo6VHlwZTo6
UmVtb3ZlLCBQb3NpdGlvbjo6T3JpZ2luYWxCeXRlY29kZVBvaW50LCBDb21tYW5kOjpCeXRlY29k
ZVR5cGU6Ok5vcm1hbCwgMCwgb3Bjb2RlTGVuZ3RoKG1fZ3JhcGguaW5zdHJ1Y3Rpb25zKClbYnl0
ZWNvZGVPZmZzZXRdLnUub3Bjb2RlKSwgeyB9IH0pKTsKKyAgICB9CisKKyAgICB2b2lkIGV4ZWN1
dGUoKTsKKworICAgIEJ5dGVjb2RlR3JhcGg8VW5saW5rZWRDb2RlQmxvY2s+JiBncmFwaCgpIHsg
cmV0dXJuIG1fZ3JhcGg7IH0KKworICAgIGludCBhZGp1c3RPZmZzZXQoaW50IGJ5dGVjb2RlT2Zm
c2V0LCBpbnQganVtcFRhcmdldCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZGp1c3RPZmZzZXRX
aXRoSW5zZXJ0aW9ucyhieXRlY29kZU9mZnNldCwganVtcFRhcmdldCwgbV9pbnNlcnRpb25zLmJl
Z2luKCksIG1faW5zZXJ0aW9ucy5lbmQoKSk7CisgICAgfQorCitwcml2YXRlOgorICAgIHZvaWQg
aW5zZXJ0SW1wbCh1bnNpZ25lZCBqdW1wRW50cnlJbmRleCwgQ29tbWFuZDo6Qnl0ZWNvZGVUeXBl
LCBQb3NpdGlvbiwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIFZlY3RvcjxVbmxpbmtlZEluc3Ry
dWN0aW9uPiYmIGZyYWdtZW50KTsKKyAgICBVbmxpbmtlZFNpbXBsZUp1bXBUYWJsZSYgaW5zZXJ0
U3dpdGNoSW1tZWRpYXRlSW1wbChQb3NpdGlvbiwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIHVu
c2lnbmVkIGRlZmF1bHRPZmZzZXQsIGludCByZWcpOworCisgICAgZnJpZW5kIGNsYXNzIFVubGlu
a2VkQ29kZUJsb2NrOworICAgIHZvaWQgYXBwbHlNb2RpZmljYXRpb24oKTsKKyAgICB2b2lkIGFk
anVzdEp1bXBUYXJnZXRzSW5KdW1wT3BlcmF0aW9uKHVuc2lnbmVkIGZpbmFsT2Zmc2V0LCBJbnNl
cnRpb24mKTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEl0ZXJhdG9yPgorICAgIGludCBhZGp1
c3RPZmZzZXRXaXRoSW5zZXJ0aW9ucyhpbnQgYnl0ZWNvZGVPZmZzZXQsIGludCBqdW1wVGFyZ2V0
LCBJdGVyYXRvciBpbnNlcnRpb25zQmVnaW4sIEl0ZXJhdG9yIGluc2VydGlvbnNFbmQpOworCisg
ICAgQnl0ZWNvZGVHcmFwaDxVbmxpbmtlZENvZGVCbG9jaz4mIG1fZ3JhcGg7CisgICAgVmVjdG9y
PEluc2VydGlvbiwgOD4gbV9pbnNlcnRpb25zOworICAgIFZlY3RvcjxTd2l0Y2hFbnRyeT4gbV9p
bnNlcnRlZFN3aXRjaGVzOworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgSXRlcmF0b3I+Citpbmxp
bmUgaW50IEJ5dGVjb2RlUmV3cml0ZXI6OmFkanVzdE9mZnNldFdpdGhJbnNlcnRpb25zKGludCBi
eXRlY29kZU9mZnNldCwgaW50IGp1bXBUYXJnZXQsIEl0ZXJhdG9yIGluc2VydGlvbnNCZWdpbiwg
SXRlcmF0b3IgaW5zZXJ0aW9uc0VuZCkKK3sKKyAgICBpZiAoYnl0ZWNvZGVPZmZzZXQgPCBqdW1w
VGFyZ2V0KSB7CisgICAgICAgIGF1dG8gc3RhcnQgPSBzdGQ6Omxvd2VyX2JvdW5kKGluc2VydGlv
bnNCZWdpbiwgaW5zZXJ0aW9uc0VuZCwgYnl0ZWNvZGVPZmZzZXQsIFsmXSAoY29uc3QgSW5zZXJ0
aW9uJiBpbnNlcnRpb24sIGludCBieXRlY29kZU9mZnNldCkgeworICAgICAgICAgICAgaWYgKHN0
YXRpY19jYXN0PGludD4oaW5zZXJ0aW9uLmluZGV4KCkpID09IGJ5dGVjb2RlT2Zmc2V0KQorICAg
ICAgICAgICAgICAgIHJldHVybiBpbnNlcnRpb24uZWxlbWVudCgpLnBvc2l0aW9uIDwgUG9zaXRp
b246OkxhYmVsUG9pbnQ7CisgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihpbnNl
cnRpb24uaW5kZXgoKSkgPCBieXRlY29kZU9mZnNldDsKKyAgICAgICAgfSk7CisgICAgICAgIGlm
IChzdGFydCAhPSBpbnNlcnRpb25zRW5kKSB7CisgICAgICAgICAgICBhdXRvIGVuZCA9IHN0ZDo6
bG93ZXJfYm91bmQoaW5zZXJ0aW9uc0JlZ2luLCBpbnNlcnRpb25zRW5kLCBqdW1wVGFyZ2V0LCBb
Jl0gKGNvbnN0IEluc2VydGlvbiYgaW5zZXJ0aW9uLCBpbnQganVtcFRhcmdldCkgeworICAgICAg
ICAgICAgICAgIGlmIChzdGF0aWNfY2FzdDxpbnQ+KGluc2VydGlvbi5pbmRleCgpKSA9PSBqdW1w
VGFyZ2V0KQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW5zZXJ0aW9uLmVsZW1lbnQoKS5w
b3NpdGlvbiA8IFBvc2l0aW9uOjpMYWJlbFBvaW50OworICAgICAgICAgICAgICAgIHJldHVybiBz
dGF0aWNfY2FzdDxpbnQ+KGluc2VydGlvbi5pbmRleCgpKSA8IGp1bXBUYXJnZXQ7CisgICAgICAg
ICAgICB9KTsKKyAgICAgICAgICAgIGZvciAoOyBzdGFydCAhPSBlbmQ7ICsrc3RhcnQpIHsKKyAg
ICAgICAgICAgICAgICBpZiAoc3RhcnQtPmVsZW1lbnQoKS50eXBlID09IENvbW1hbmQ6OlR5cGU6
OlJlbW92ZSkKKyAgICAgICAgICAgICAgICAgICAganVtcFRhcmdldCAtPSBzdGFydC0+ZWxlbWVu
dCgpLmxlbmd0aCgpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAg
anVtcFRhcmdldCArPSBzdGFydC0+ZWxlbWVudCgpLmxlbmd0aCgpOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgICAgIHJldHVybiBqdW1wVGFyZ2V0IC0gYnl0ZWNvZGVPZmZzZXQ7Cisg
ICAgfQorCisgICAgaWYgKGJ5dGVjb2RlT2Zmc2V0ID09IGp1bXBUYXJnZXQpCisgICAgICAgIHJl
dHVybiAwOworCisgICAgcmV0dXJuIC1hZGp1c3RPZmZzZXRXaXRoSW5zZXJ0aW9ucyhqdW1wVGFy
Z2V0LCBieXRlY29kZU9mZnNldCwgaW5zZXJ0aW9uc0JlZ2luLCBpbnNlcnRpb25zRW5kKTsKK30K
KworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZVVzZURlZi5oCmluZGV4IDYwNTdlZjYwOWVlZDFlZTJhOTliMDc2MjhiOTFjOTc1
NTMzZmU0YmIuLjRmMTRiMjMwOTA0YzFkNmY2ZDczYmY2ODBkYzAzMjRhZWZjNmY2YjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCkBAIC0z
MCwxNSArMzAsOSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotdGVtcGxhdGU8dHlwZW5hbWUgRnVu
Y3Rvcj4KLXZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCgKLSAgICBDb2RlQmxvY2sq
IGNvZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaywgdW5zaWduZWQgYnl0ZWNvZGVP
ZmZzZXQsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCit0ZW1wbGF0ZTx0eXBlbmFtZSBCbG9jaywg
dHlwZW5hbWUgRnVuY3RvciwgdHlwZW5hbWUgSW5zdHJ1Y3Rpb24+Cit2b2lkIGNvbXB1dGVVc2Vz
Rm9yQnl0ZWNvZGVPZmZzZXQoQmxvY2sqIGNvZGVCbG9jaywgT3Bjb2RlSUQgb3Bjb2RlSUQsIElu
c3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikKIHsKLSAgICBJ
bnRlcnByZXRlciogaW50ZXJwcmV0ZXIgPSBjb2RlQmxvY2stPnZtKCktPmludGVycHJldGVyOwot
ICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiA9IGNvZGVCbG9jay0+aW5zdHJ1Y3Rp
b25zKCkuYmVnaW4oKTsKLSAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSAmaW5zdHJ1Y3Rp
b25zQmVnaW5bYnl0ZWNvZGVPZmZzZXRdOwotICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW50ZXJw
cmV0ZXItPmdldE9wY29kZUlEKGluc3RydWN0aW9uLT51Lm9wY29kZSk7Ci0KICAgICBpZiAob3Bj
b2RlSUQgIT0gb3BfZW50ZXIgJiYgY29kZUJsb2NrLT53YXNDb21waWxlZFdpdGhEZWJ1Z2dpbmdP
cGNvZGVzKCkgJiYgY29kZUJsb2NrLT5zY29wZVJlZ2lzdGVyKCkuaXNWYWxpZCgpKQogICAgICAg
ICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBjb2RlQmxvY2stPnNj
b3BlUmVnaXN0ZXIoKS5vZmZzZXQoKSk7CiAKQEAgLTc1LDggKzY5LDcgQEAgdm9pZCBjb21wdXRl
VXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAogICAgIGNhc2Ugb3Bfam5lcV9udWxsOgogICAgIGNhc2Ug
b3BfZGVjOgogICAgIGNhc2Ugb3BfaW5jOgotICAgIGNhc2Ugb3BfbG9nX3NoYWRvd19jaGlja2Vu
X3Byb2xvZ3VlOgotICAgIGNhc2Ugb3BfcmVzdW1lOiB7CisgICAgY2FzZSBvcF9sb2dfc2hhZG93
X2NoaWNrZW5fcHJvbG9ndWU6IHsKICAgICAgICAgQVNTRVJUKG9wY29kZUxlbmd0aHNbb3Bjb2Rl
SURdID4gMSk7CiAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2Rl
SUQsIGluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CiAgICAgICAgIHJldHVybjsKQEAgLTI4Nywy
MCArMjgwLDkgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAogICAgICAgICAg
ICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgY29kZUJsb2NrLT5z
Y29wZVJlZ2lzdGVyKCkub2Zmc2V0KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGNh
c2Ugb3Bfc2F2ZTogeworICAgIGNhc2Ugb3BfeWllbGQ6IHsKICAgICAgICAgZnVuY3Rvcihjb2Rl
QmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKTsK
LSAgICAgICAgdW5zaWduZWQgbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0ID0gYnl0ZWNvZGVPZmZz
ZXQgKyBpbnN0cnVjdGlvblszXS51Lm9wZXJhbmQ7Ci0gICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9j
ayogbWVyZ2VQb2ludEJsb2NrID0gbnVsbHB0cjsKLSAgICAgICAgZm9yIChCeXRlY29kZUJhc2lj
QmxvY2sqIHN1Y2Nlc3NvciA6IGJsb2NrLT5zdWNjZXNzb3JzKCkpIHsKLSAgICAgICAgICAgIGlm
IChzdWNjZXNzb3ItPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCkgPT0gbWVyZ2VQb2ludEJ5dGVjb2Rl
T2Zmc2V0KSB7Ci0gICAgICAgICAgICAgICAgbWVyZ2VQb2ludEJsb2NrID0gc3VjY2Vzc29yOwot
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAg
IEFTU0VSVChtZXJnZVBvaW50QmxvY2spOwotICAgICAgICBtZXJnZVBvaW50QmxvY2stPmluKCku
Zm9yRWFjaFNldEJpdChbJl0odW5zaWduZWQgbG9jYWwpIHsKLSAgICAgICAgICAgIGZ1bmN0b3Io
Y29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIHZpcnR1YWxSZWdpc3RlckZvckxvY2Fs
KGxvY2FsKS5vZmZzZXQoKSk7Ci0gICAgICAgIH0pOworICAgICAgICBmdW5jdG9yKGNvZGVCbG9j
aywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBpbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogICAgIGRlZmF1bHQ6CkBAIC0zMDksMjAgKzI5MSwxNSBAQCB2
b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoCiAgICAgfQogfQogCi10ZW1wbGF0ZTx0
eXBlbmFtZSBGdW5jdG9yPgotdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVC
bG9jayogY29kZUJsb2NrLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrLCB1bnNpZ25lZCBieXRl
Y29kZU9mZnNldCwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikKK3RlbXBsYXRlPHR5cGVuYW1lIEJs
b2NrLCB0eXBlbmFtZSBJbnN0cnVjdGlvbiwgdHlwZW5hbWUgRnVuY3Rvcj4KK3ZvaWQgY29tcHV0
ZURlZnNGb3JCeXRlY29kZU9mZnNldChCbG9jayogY29kZUJsb2NrLCBPcGNvZGVJRCBvcGNvZGVJ
RCwgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQogewot
ICAgIEludGVycHJldGVyKiBpbnRlcnByZXRlciA9IGNvZGVCbG9jay0+dm0oKS0+aW50ZXJwcmV0
ZXI7Ci0gICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luID0gY29kZUJsb2NrLT5pbnN0
cnVjdGlvbnMoKS5iZWdpbigpOwotICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9ICZpbnN0
cnVjdGlvbnNCZWdpbltieXRlY29kZU9mZnNldF07Ci0gICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBp
bnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb24tPnUub3Bjb2RlKTsKICAgICBzd2l0
Y2ggKG9wY29kZUlEKSB7CiAgICAgLy8gVGhlc2UgZG9uJ3QgZGVmaW5lIGFueXRoaW5nLgogICAg
IGNhc2Ugb3BfcHV0X3RvX3Njb3BlOgogICAgIGNhc2Ugb3BfZW5kOgogICAgIGNhc2Ugb3BfdGhy
b3c6CiAgICAgY2FzZSBvcF90aHJvd19zdGF0aWNfZXJyb3I6Ci0gICAgY2FzZSBvcF9zYXZlOgog
ICAgIGNhc2Ugb3BfYXNzZXJ0OgogICAgIGNhc2Ugb3BfZGVidWc6CiAgICAgY2FzZSBvcF9yZXQ6
CkBAIC0zNjIsNiArMzM5LDcgQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KENv
ZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2MKICAgICBjYXNlIG9w
X3dhdGNoZG9nOgogICAgIGNhc2Ugb3BfbG9nX3NoYWRvd19jaGlja2VuX3Byb2xvZ3VlOgogICAg
IGNhc2Ugb3BfbG9nX3NoYWRvd19jaGlja2VuX3RhaWw6CisgICAgY2FzZSBvcF95aWVsZDoKICNk
ZWZpbmUgTExJTlRfSEVMUEVSX09QQ09ERVMob3Bjb2RlLCBsZW5ndGgpIGNhc2Ugb3Bjb2RlOgog
ICAgICAgICBGT1JfRUFDSF9MTElOVF9PUENPREVfRVhURU5TSU9OKExMSU5UX0hFTFBFUl9PUENP
REVTKTsKICN1bmRlZiBMTElOVF9IRUxQRVJfT1BDT0RFUwpAQCAtNDgwLDE1ICs0NTgsNiBAQCB2
b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5
dGVjb2RlQmFzaWNCbG9jayogYmxvYwogICAgICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGlu
c3RydWN0aW9uLCBvcGNvZGVJRCwgdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaSkub2Zmc2V0KCkp
OwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGNhc2Ugb3BfcmVzdW1lOiB7Ci0gICAgICAg
IFJFTEVBU0VfQVNTRVJUKGJsb2NrLT5zdWNjZXNzb3JzKCkuc2l6ZSgpID09IDEpOwotICAgICAg
ICAvLyBGSVhNRTogVGhpcyBpcyByZWFsbHkgZGlydHkuCi0gICAgICAgIC8vIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTkyODEKLSAgICAgICAgYmxvY2stPnN1Y2Nl
c3NvcnMoKVswXS0+aW4oKS5mb3JFYWNoU2V0Qml0KFsmXSh1bnNpZ25lZCBsb2NhbCkgewotICAg
ICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgdmlydHVh
bFJlZ2lzdGVyRm9yTG9jYWwobG9jYWwpLm9mZnNldCgpKTsKLSAgICAgICAgfSk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suY3BwCmluZGV4IDFkOTEzNWEyMzczOTE2MzA5MThmZDU1YTZlNTQyNTg5
NzE1Y2QwYjUuLjU4NmNjZjUyOGQ0YmZhZDJhYjkwYjllYWU2NjQ2YjFlYTJkMTQxMGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC0zMyw2ICsz
Myw3IEBACiAjaW5jbHVkZSAiQXJpdGhQcm9maWxlLmgiCiAjaW5jbHVkZSAiQmFzaWNCbG9ja0xv
Y2F0aW9uLmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVHZW5lcmF0b3IuaCIKKyNpbmNsdWRlICJCeXRl
Y29kZUxpdmVuZXNzQW5hbHlzaXMuaCIKICNpbmNsdWRlICJCeXRlY29kZVVzZURlZi5oIgogI2lu
Y2x1ZGUgIkNhbGxMaW5rU3RhdHVzLmgiCiAjaW5jbHVkZSAiREZHQ2FwYWJpbGl0aWVzLmgiCkBA
IC02OTYsMTggKzY5Nyw2IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoUHJpbnRTdHJl
YW0mIG91dCkKICAgICAgICAgfSB3aGlsZSAoaSA8IG1fcmFyZURhdGEtPm1fc3RyaW5nU3dpdGNo
SnVtcFRhYmxlcy5zaXplKCkpOwogICAgIH0KIAotICAgIGlmIChtX3JhcmVEYXRhICYmICFtX3Jh
cmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkLmlzRW1wdHkoKSkgewotICAgICAgICBv
dXQucHJpbnRmKCJcbkxpdmUgQ2FsbGVlIExvY2FsczpcbiIpOwotICAgICAgICB1bnNpZ25lZCBp
ID0gMDsKLSAgICAgICAgZG8gewotICAgICAgICAgICAgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2
ZW5lc3MgPSBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkW2ldOwotICAgICAg
ICAgICAgb3V0LnByaW50ZigiICBsaXZlJTF1ID0gIiwgaSk7Ci0gICAgICAgICAgICBsaXZlbmVz
cy5kdW1wKG91dCk7Ci0gICAgICAgICAgICBvdXQucHJpbnRmKCJcbiIpOwotICAgICAgICAgICAg
KytpOwotICAgICAgICB9IHdoaWxlIChpIDwgbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxz
QXRZaWVsZC5zaXplKCkpOwotICAgIH0KLQogICAgIG91dC5wcmludGYoIlxuIik7CiB9CiAKQEAg
LTE2NzEsMzEgKzE2NjAsNiBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKAogICAgICAg
ICAgICAgb3V0LnByaW50ZigiJXMsICVkIiwgZGVidWdIb29rTmFtZShkZWJ1Z0hvb2tJRCksIGhh
c0JyZWFrcG9pbnRGbGFnKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAg
IGNhc2Ugb3Bfc2F2ZTogewotICAgICAgICAgICAgaW50IGdlbmVyYXRvciA9ICgrK2l0KS0+dS5v
cGVyYW5kOwotICAgICAgICAgICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gKCsr
aXQpLT51LnVuc2lnbmVkVmFsdWU7Ci0gICAgICAgICAgICBpbnQgb2Zmc2V0ID0gKCsraXQpLT51
Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBGYXN0Qml0VmVjdG9yIGxpdmVuZXNzOwotICAgICAgICAg
ICAgaWYgKGxpdmVDYWxsZWVMb2NhbHNJbmRleCA8IG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxv
Y2Fsc0F0WWllbGQuc2l6ZSgpKQotICAgICAgICAgICAgICAgIGxpdmVuZXNzID0gbV9yYXJlRGF0
YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZFtsaXZlQ2FsbGVlTG9jYWxzSW5kZXhdOwotICAg
ICAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAic2F2
ZSIpOwotICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICIsIHJlZ2lzdGVyTmFtZShnZW5lcmF0
b3IpLmRhdGEoKSk7Ci0gICAgICAgICAgICBsaXZlbmVzcy5kdW1wKG91dCk7Ci0gICAgICAgICAg
ICBvdXQucHJpbnRmKCIoQGxpdmUlMXUpLCAlZCgtPiVkKSIsIGxpdmVDYWxsZWVMb2NhbHNJbmRl
eCwgb2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNldCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgfQotICAgICAgICBjYXNlIG9wX3Jlc3VtZTogewotICAgICAgICAgICAgaW50IGdlbmVyYXRv
ciA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxv
Y2Fsc0luZGV4ID0gKCsraXQpLT51LnVuc2lnbmVkVmFsdWU7Ci0gICAgICAgICAgICBGYXN0Qml0
VmVjdG9yIGxpdmVuZXNzOwotICAgICAgICAgICAgaWYgKGxpdmVDYWxsZWVMb2NhbHNJbmRleCA8
IG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQuc2l6ZSgpKQotICAgICAgICAg
ICAgICAgIGxpdmVuZXNzID0gbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZFts
aXZlQ2FsbGVlTG9jYWxzSW5kZXhdOwotICAgICAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91
dCwgZXhlYywgbG9jYXRpb24sIGl0LCAicmVzdW1lIik7Ci0gICAgICAgICAgICBvdXQucHJpbnRm
KCIlcywgIiwgcmVnaXN0ZXJOYW1lKGdlbmVyYXRvcikuZGF0YSgpKTsKLSAgICAgICAgICAgIGxp
dmVuZXNzLmR1bXAob3V0KTsKLSAgICAgICAgICAgIG91dC5wcmludGYoIihAbGl2ZSUxdSkiLCBs
aXZlQ2FsbGVlTG9jYWxzSW5kZXgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KICAg
ICAgICAgY2FzZSBvcF9hc3NlcnQ6IHsKICAgICAgICAgICAgIGludCBjb25kaXRpb24gPSAoKytp
dCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBsaW5lID0gKCsraXQpLT51Lm9wZXJhbmQ7
CkBAIC0xOTA3LDcgKzE4NzEsNiBAQCB2b2lkIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0m
IHZtLCBDb3B5UGFyc2VkQmxvY2tUYWcsIENvZGVCbG9jayYgb3RoZXIpCiAgICAgICAgIG1fcmFy
ZURhdGEtPm1fY29uc3RhbnRCdWZmZXJzID0gb3RoZXIubV9yYXJlRGF0YS0+bV9jb25zdGFudEJ1
ZmZlcnM7CiAgICAgICAgIG1fcmFyZURhdGEtPm1fc3dpdGNoSnVtcFRhYmxlcyA9IG90aGVyLm1f
cmFyZURhdGEtPm1fc3dpdGNoSnVtcFRhYmxlczsKICAgICAgICAgbV9yYXJlRGF0YS0+bV9zdHJp
bmdTd2l0Y2hKdW1wVGFibGVzID0gb3RoZXIubV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1w
VGFibGVzOwotICAgICAgICBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkID0g
b3RoZXIubV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZDsKICAgICB9CiAgICAg
CiAgICAgaGVhcCgpLT5tX2NvZGVCbG9ja3MuYWRkKHRoaXMpOwpAQCAtMjAyOSw3ICsxOTkyLDcg
QEAgdm9pZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJs
ZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICAgICAgICAgICAgICBVbmxpbmtlZFN0cmlu
Z0p1bXBUYWJsZTo6U3RyaW5nT2Zmc2V0VGFibGU6Oml0ZXJhdG9yIGVuZCA9IHVubGlua2VkQ29k
ZUJsb2NrLT5zdHJpbmdTd2l0Y2hKdW1wVGFibGUoaSkub2Zmc2V0VGFibGUuZW5kKCk7CiAgICAg
ICAgICAgICAgICAgZm9yICg7IHB0ciAhPSBlbmQ7ICsrcHRyKSB7CiAgICAgICAgICAgICAgICAg
ICAgIE9mZnNldExvY2F0aW9uIG9mZnNldDsKLSAgICAgICAgICAgICAgICAgICAgb2Zmc2V0LmJy
YW5jaE9mZnNldCA9IHB0ci0+dmFsdWU7CisgICAgICAgICAgICAgICAgICAgIG9mZnNldC5icmFu
Y2hPZmZzZXQgPSBwdHItPnZhbHVlLmJyYW5jaE9mZnNldDsKICAgICAgICAgICAgICAgICAgICAg
bV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzW2ldLm9mZnNldFRhYmxlLmFkZChw
dHItPmtleSwgb2Zmc2V0KTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CkBAIC0y
MDY5LDExICsyMDMyLDE3IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0s
IFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAgLy8gQm9va2tl
ZXAgdGhlIHN0cm9uZ2x5IHJlZmVyZW5jZWQgbW9kdWxlIGVudmlyb25tZW50cy4KICAgICBIYXNo
U2V0PEpTTW9kdWxlRW52aXJvbm1lbnQqPiBzdHJvbmdseVJlZmVyZW5jZWRNb2R1bGVFbnZpcm9u
bWVudHM7CiAKLSAgICAvLyBCb29ra2VlcCB0aGUgbWVyZ2UgcG9pbnQgYnl0ZWNvZGUgb2Zmc2V0
cy4KLSAgICBWZWN0b3I8c2l6ZV90PiBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXRzOwotCiAgICAg
UmVmQ291bnRlZEFycmF5PEluc3RydWN0aW9uPiBpbnN0cnVjdGlvbnMoaW5zdHJ1Y3Rpb25Db3Vu
dCk7CiAKKyAgICB1bnNpZ25lZCB2YWx1ZVByb2ZpbGVDb3VudCA9IDA7CisgICAgYXV0byBsaW5r
VmFsdWVQcm9maWxlID0gWyZdKHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCB1bnNpZ25lZCBvcExl
bmd0aCkgeworICAgICAgICB1bnNpZ25lZCB2YWx1ZVByb2ZpbGVJbmRleCA9IHZhbHVlUHJvZmls
ZUNvdW50Kys7CisgICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9ICZtX3ZhbHVlUHJvZmls
ZXNbdmFsdWVQcm9maWxlSW5kZXhdOworICAgICAgICBBU1NFUlQocHJvZmlsZS0+bV9ieXRlY29k
ZU9mZnNldCA9PSAtMSk7CisgICAgICAgIHByb2ZpbGUtPm1fYnl0ZWNvZGVPZmZzZXQgPSBieXRl
Y29kZU9mZnNldDsKKyAgICAgICAgaW5zdHJ1Y3Rpb25zW2J5dGVjb2RlT2Zmc2V0ICsgb3BMZW5n
dGggLSAxXSA9IHByb2ZpbGU7CisgICAgfTsKKwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7ICFp
bnN0cnVjdGlvblJlYWRlci5hdEVuZCgpOyApIHsKICAgICAgICAgY29uc3QgVW5saW5rZWRJbnN0
cnVjdGlvbiogcGMgPSBpbnN0cnVjdGlvblJlYWRlci5uZXh0KCk7CiAKQEAgLTIxMDgsMTAgKzIw
NzcsNyBAQCB2b2lkIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVj
dXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGluawogICAgICAgICBjYXNlIG9wX2dldF9ieV9p
ZDoKICAgICAgICAgY2FzZSBvcF9nZXRfZnJvbV9hcmd1bWVudHM6CiAgICAgICAgIGNhc2Ugb3Bf
dG9fbnVtYmVyOiB7Ci0gICAgICAgICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSAmbV92YWx1
ZVByb2ZpbGVzW3BjW29wTGVuZ3RoIC0gMV0udS5vcGVyYW5kXTsKLSAgICAgICAgICAgIEFTU0VS
VChwcm9maWxlLT5tX2J5dGVjb2RlT2Zmc2V0ID09IC0xKTsKLSAgICAgICAgICAgIHByb2ZpbGUt
Pm1fYnl0ZWNvZGVPZmZzZXQgPSBpOwotICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zW2kgKyBvcExl
bmd0aCAtIDFdID0gcHJvZmlsZTsKKyAgICAgICAgICAgIGxpbmtWYWx1ZVByb2ZpbGUoaSwgb3BM
ZW5ndGgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9w
dXRfYnlfdmFsOiB7CkBAIC0yMTQ4LDEwICsyMTE0LDcgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmlz
aENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxp
bmsKICAgICAgICAgY2FzZSBvcF9jYWxsOgogICAgICAgICBjYXNlIG9wX3RhaWxfY2FsbDoKICAg
ICAgICAgY2FzZSBvcF9jYWxsX2V2YWw6IHsKLSAgICAgICAgICAgIFZhbHVlUHJvZmlsZSogcHJv
ZmlsZSA9ICZtX3ZhbHVlUHJvZmlsZXNbcGNbb3BMZW5ndGggLSAxXS51Lm9wZXJhbmRdOwotICAg
ICAgICAgICAgQVNTRVJUKHByb2ZpbGUtPm1fYnl0ZWNvZGVPZmZzZXQgPT0gLTEpOwotICAgICAg
ICAgICAgcHJvZmlsZS0+bV9ieXRlY29kZU9mZnNldCA9IGk7Ci0gICAgICAgICAgICBpbnN0cnVj
dGlvbnNbaSArIG9wTGVuZ3RoIC0gMV0gPSBwcm9maWxlOworICAgICAgICAgICAgbGlua1ZhbHVl
UHJvZmlsZShpLCBvcExlbmd0aCk7CiAgICAgICAgICAgICBpbnQgYXJyYXlQcm9maWxlSW5kZXgg
PSBwY1tvcExlbmd0aCAtIDJdLnUub3BlcmFuZDsKICAgICAgICAgICAgIG1fYXJyYXlQcm9maWxl
c1thcnJheVByb2ZpbGVJbmRleF0gPSBBcnJheVByb2ZpbGUoaSk7CiAgICAgICAgICAgICBpbnN0
cnVjdGlvbnNbaSArIG9wTGVuZ3RoIC0gMl0gPSAmbV9hcnJheVByb2ZpbGVzW2FycmF5UHJvZmls
ZUluZGV4XTsKQEAgLTIxNjAsMTAgKzIxMjMsNyBAQCB2b2lkIENvZGVCbG9jazo6ZmluaXNoQ3Jl
YXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGluawog
ICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfY29uc3RydWN0OiB7CiAgICAgICAgICAgICBpbnN0
cnVjdGlvbnNbaSArIDVdID0gJm1fbGxpbnRDYWxsTGlua0luZm9zW3BjWzVdLnUub3BlcmFuZF07
Ci0gICAgICAgICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSAmbV92YWx1ZVByb2ZpbGVzW3Bj
W29wTGVuZ3RoIC0gMV0udS5vcGVyYW5kXTsKLSAgICAgICAgICAgIEFTU0VSVChwcm9maWxlLT5t
X2J5dGVjb2RlT2Zmc2V0ID09IC0xKTsKLSAgICAgICAgICAgIHByb2ZpbGUtPm1fYnl0ZWNvZGVP
ZmZzZXQgPSBpOwotICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zW2kgKyBvcExlbmd0aCAtIDFdID0g
cHJvZmlsZTsKKyAgICAgICAgICAgIGxpbmtWYWx1ZVByb2ZpbGUoaSwgb3BMZW5ndGgpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9nZXRfYXJyYXlfbGVu
Z3RoOgpAQCAtMjE5NCwxMCArMjE1NCw3IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlv
bihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAg
ICAgIH0KIAogICAgICAgICBjYXNlIG9wX2dldF9mcm9tX3Njb3BlOiB7Ci0gICAgICAgICAgICBW
YWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSAmbV92YWx1ZVByb2ZpbGVzW3BjW29wTGVuZ3RoIC0gMV0u
dS5vcGVyYW5kXTsKLSAgICAgICAgICAgIEFTU0VSVChwcm9maWxlLT5tX2J5dGVjb2RlT2Zmc2V0
ID09IC0xKTsKLSAgICAgICAgICAgIHByb2ZpbGUtPm1fYnl0ZWNvZGVPZmZzZXQgPSBpOwotICAg
ICAgICAgICAgaW5zdHJ1Y3Rpb25zW2kgKyBvcExlbmd0aCAtIDFdID0gcHJvZmlsZTsKKyAgICAg
ICAgICAgIGxpbmtWYWx1ZVByb2ZpbGUoaSwgb3BMZW5ndGgpOwogCiAgICAgICAgICAgICAvLyBn
ZXRfZnJvbV9zY29wZSBkc3QsIHNjb3BlLCBpZCwgR2V0UHV0SW5mbywgU3RydWN0dXJlLCBPcGVy
YW5kCiAKQEAgLTIzNTQsMTUgKzIzMTEsNiBAQCB2b2lkIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRp
b24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGluawogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAotICAgICAgICBjYXNlIG9wX3NhdmU6IHsKLSAg
ICAgICAgICAgIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9IHBjWzJdLnUuaW5kZXg7
Ci0gICAgICAgICAgICBpbnQgb2Zmc2V0ID0gcGNbM10udS5vcGVyYW5kOwotICAgICAgICAgICAg
aWYgKGxpdmVDYWxsZWVMb2NhbHNJbmRleCA+PSBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXRzLnNp
emUoKSkKLSAgICAgICAgICAgICAgICBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXRzLnJlc2l6ZShs
aXZlQ2FsbGVlTG9jYWxzSW5kZXggKyAxKTsKLSAgICAgICAgICAgIG1lcmdlUG9pbnRCeXRlY29k
ZU9mZnNldHNbbGl2ZUNhbGxlZUxvY2Fsc0luZGV4XSA9IGkgKyBvZmZzZXQ7Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgfQotCiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQpAQCAtMjM3NCwyMCArMjMyMiw2IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5p
c2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5s
aW5rCiAKICAgICBtX2luc3RydWN0aW9ucyA9IFdURk1vdmUoaW5zdHJ1Y3Rpb25zKTsKIAotICAg
IC8vIFBlcmZvcm0gYnl0ZWNvZGUgbGl2ZW5lc3MgYW5hbHlzaXMgdG8gZGV0ZXJtaW5lIHdoaWNo
IGxvY2FscyBhcmUgbGl2ZSBhbmQgc2hvdWxkIGJlIHJlc3VtZWQgd2hlbiBleGVjdXRpbmcgb3Bf
cmVzdW1lLgotICAgIGlmICh1bmxpbmtlZENvZGVCbG9jay0+cGFyc2VNb2RlKCkgPT0gU291cmNl
UGFyc2VNb2RlOjpHZW5lcmF0b3JCb2R5TW9kZSkgewotICAgICAgICBpZiAoc2l6ZV90IGNvdW50
ID0gbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0cy5zaXplKCkpIHsKLSAgICAgICAgICAgIGNyZWF0
ZVJhcmVEYXRhSWZOZWNlc3NhcnkoKTsKLSAgICAgICAgICAgIEJ5dGVjb2RlTGl2ZW5lc3NBbmFs
eXNpcyBsaXZlbmVzcyh0aGlzKTsKLSAgICAgICAgICAgIG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxl
ZUxvY2Fsc0F0WWllbGQuZ3Jvdyhjb3VudCk7Ci0gICAgICAgICAgICBzaXplX3QgbGl2ZUNhbGxl
ZUxvY2Fsc0luZGV4ID0gMDsKLSAgICAgICAgICAgIGZvciAoc2l6ZV90IGJ5dGVjb2RlT2Zmc2V0
IDogbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0cykgewotICAgICAgICAgICAgICAgIG1fcmFyZURh
dGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGRbbGl2ZUNhbGxlZUxvY2Fsc0luZGV4XSA9IGxp
dmVuZXNzLmdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpOwot
ICAgICAgICAgICAgICAgICsrbGl2ZUNhbGxlZUxvY2Fsc0luZGV4OwotICAgICAgICAgICAgfQot
ICAgICAgICB9Ci0gICAgfQotCiAgICAgLy8gU2V0IG9wdGltaXphdGlvbiB0aHJlc2hvbGRzIG9u
bHkgYWZ0ZXIgbV9pbnN0cnVjdGlvbnMgaXMgaW5pdGlhbGl6ZWQsIHNpbmNlIHRoZXNlCiAgICAg
Ly8gcmVseSBvbiB0aGUgaW5zdHJ1Y3Rpb24gY291bnQgKGFuZCBhcmUgaW4gdGhlb3J5IHBlcm1p
dHRlZCB0byBhbHNvIGluc3BlY3QgdGhlCiAgICAgLy8gaW5zdHJ1Y3Rpb24gc3RyZWFtIHRvIG1v
cmUgYWNjdXJhdGUgYXNzZXNzIHRoZSBjb3N0IG9mIHRpZXItdXApLgpAQCAtMzI0NCwyMSArMzE3
OCw3IEBAIEhhbmRsZXJJbmZvKiBDb2RlQmxvY2s6OmhhbmRsZXJGb3JJbmRleCh1bnNpZ25lZCBp
bmRleCwgUmVxdWlyZWRIYW5kbGVyIHJlcXVpcmVkCiB7CiAgICAgaWYgKCFtX3JhcmVEYXRhKQog
ICAgICAgICByZXR1cm4gMDsKLSAgICAKLSAgICBWZWN0b3I8SGFuZGxlckluZm8+JiBleGNlcHRp
b25IYW5kbGVycyA9IG1fcmFyZURhdGEtPm1fZXhjZXB0aW9uSGFuZGxlcnM7Ci0gICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBleGNlcHRpb25IYW5kbGVycy5zaXplKCk7ICsraSkgewotICAgICAg
ICBIYW5kbGVySW5mbyYgaGFuZGxlciA9IGV4Y2VwdGlvbkhhbmRsZXJzW2ldOwotICAgICAgICBp
ZiAoKHJlcXVpcmVkSGFuZGxlciA9PSBSZXF1aXJlZEhhbmRsZXI6OkNhdGNoSGFuZGxlcikgJiYg
IWhhbmRsZXIuaXNDYXRjaEhhbmRsZXIoKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAg
ICAgIC8vIEhhbmRsZXJzIGFyZSBvcmRlcmVkIGlubmVybW9zdCBmaXJzdCwgc28gdGhlIGZpcnN0
IGhhbmRsZXIgd2UgZW5jb3VudGVyCi0gICAgICAgIC8vIHRoYXQgY29udGFpbnMgdGhlIHNvdXJj
ZSBhZGRyZXNzIGlzIHRoZSBjb3JyZWN0IGhhbmRsZXIgdG8gdXNlLgotICAgICAgICAvLyBUaGlz
IGluZGV4IHVzZWQgaXMgZWl0aGVyIHRoZSBCeXRlY29kZU9mZnNldCBvciBhIENhbGxTaXRlSW5k
ZXguCi0gICAgICAgIGlmIChoYW5kbGVyLnN0YXJ0IDw9IGluZGV4ICYmIGhhbmRsZXIuZW5kID4g
aW5kZXgpCi0gICAgICAgICAgICByZXR1cm4gJmhhbmRsZXI7Ci0gICAgfQotCi0gICAgcmV0dXJu
IDA7CisgICAgcmV0dXJuIEhhbmRsZXJJbmZvOjpoYW5kbGVyRm9ySW5kZXgobV9yYXJlRGF0YS0+
bV9leGNlcHRpb25IYW5kbGVycywgaW5kZXgsIHJlcXVpcmVkSGFuZGxlcik7CiB9CiAKIENhbGxT
aXRlSW5kZXggQ29kZUJsb2NrOjpuZXdFeGNlcHRpb25IYW5kbGluZ0NhbGxTaXRlSW5kZXgoQ2Fs
bFNpdGVJbmRleCBvcmlnaW5hbENhbGxTaXRlKQpAQCAtMzM1Myw3ICszMjczLDYgQEAgdm9pZCBD
b2RlQmxvY2s6OnNocmlua1RvRml0KFNocmlua01vZGUgc2hyaW5rTW9kZSkKICAgICAgICAgaWYg
KG1fcmFyZURhdGEpIHsKICAgICAgICAgICAgIG1fcmFyZURhdGEtPm1fc3dpdGNoSnVtcFRhYmxl
cy5zaHJpbmtUb0ZpdCgpOwogICAgICAgICAgICAgbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hK
dW1wVGFibGVzLnNocmlua1RvRml0KCk7Ci0gICAgICAgICAgICBtX3JhcmVEYXRhLT5tX2xpdmVD
YWxsZWVMb2NhbHNBdFlpZWxkLnNocmlua1RvRml0KCk7CiAgICAgICAgIH0KICAgICB9IC8vIGVs
c2UgZG9uJ3Qgc2hyaW5rIHRoZXNlLCBiZWNhdXNlIHdlIHdvdWxkIGhhdmUgYWxyZWFkeSBwb2lu
dGVkIHBvaW50ZXJzIGludG8gdGhlc2UgdGFibGVzLgogfQpAQCAtNDMzNSwxNCArNDI1NCw5IEBA
IFN0cmluZyBDb2RlQmxvY2s6Om5hbWVGb3JSZWdpc3RlcihWaXJ0dWFsUmVnaXN0ZXIgdmlydHVh
bFJlZ2lzdGVyKQogCiBWYWx1ZVByb2ZpbGUqIENvZGVCbG9jazo6dmFsdWVQcm9maWxlRm9yQnl0
ZWNvZGVPZmZzZXQoaW50IGJ5dGVjb2RlT2Zmc2V0KQogewotICAgIFZhbHVlUHJvZmlsZSogcmVz
dWx0ID0gYmluYXJ5U2VhcmNoPFZhbHVlUHJvZmlsZSwgaW50PigKLSAgICAgICAgbV92YWx1ZVBy
b2ZpbGVzLCBtX3ZhbHVlUHJvZmlsZXMuc2l6ZSgpLCBieXRlY29kZU9mZnNldCwKLSAgICAgICAg
Z2V0VmFsdWVQcm9maWxlQnl0ZWNvZGVPZmZzZXQ8VmFsdWVQcm9maWxlPik7Ci0gICAgQVNTRVJU
KHJlc3VsdC0+bV9ieXRlY29kZU9mZnNldCAhPSAtMSk7Ci0gICAgQVNTRVJUKGluc3RydWN0aW9u
cygpW2J5dGVjb2RlT2Zmc2V0ICsgb3Bjb2RlTGVuZ3RoKAotICAgICAgICBtX3ZtLT5pbnRlcnBy
ZXRlci0+Z2V0T3Bjb2RlSUQoCi0gICAgICAgICAgICBpbnN0cnVjdGlvbnMoKVtieXRlY29kZU9m
ZnNldF0udS5vcGNvZGUpKSAtIDFdLnUucHJvZmlsZSA9PSByZXN1bHQpOwotICAgIHJldHVybiBy
ZXN1bHQ7CisgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBtX3ZtLT5pbnRlcnByZXRlci0+Z2V0T3Bj
b2RlSUQoaW5zdHJ1Y3Rpb25zKClbYnl0ZWNvZGVPZmZzZXRdLnUub3Bjb2RlKTsKKyAgICB1bnNp
Z25lZCBsZW5ndGggPSBvcGNvZGVMZW5ndGgob3Bjb2RlSUQpOworICAgIHJldHVybiBpbnN0cnVj
dGlvbnMoKVtieXRlY29kZU9mZnNldCArIGxlbmd0aCAtIDFdLnUucHJvZmlsZTsKIH0KIAogdm9p
ZCBDb2RlQmxvY2s6OnZhbGlkYXRlKCkKQEAgLTQ2NzEsNCArNDU4NSwxNiBAQCB2b2lkIENvZGVC
bG9jazo6ZHVtcE1hdGhJQ1N0YXRzKCkKICNlbmRpZgogfQogCitCeXRlY29kZUxpdmVuZXNzQW5h
bHlzaXMmIENvZGVCbG9jazo6bGl2ZW5lc3NBbmFseXNpc1Nsb3coKQoreworICAgIHN0ZDo6dW5p
cXVlX3B0cjxCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM+IGFuYWx5c2lzID0gc3RkOjptYWtlX3Vu
aXF1ZTxCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM+KHRoaXMpOworICAgIHsKKyAgICAgICAgQ29u
Y3VycmVudEpJVExvY2tlciBsb2NrZXIobV9sb2NrKTsKKyAgICAgICAgaWYgKCFtX2xpdmVuZXNz
QW5hbHlzaXMpCisgICAgICAgICAgICBtX2xpdmVuZXNzQW5hbHlzaXMgPSBXVEZNb3ZlKGFuYWx5
c2lzKTsKKyAgICAgICAgcmV0dXJuICptX2xpdmVuZXNzQW5hbHlzaXM7CisgICAgfQorfQorCisK
IH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVC
bG9jay5oCmluZGV4IGFiOTI4MDRmNmJhMzliM2I2N2JhNmQ3NzVlNDQ5ZTJmM2RiZjdjMDUuLjll
NWQ2MDc4NzczZjM4Y2JiMjJkYzZhNTBmYWZhN2NlYjBlMWZmYTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKQEAgLTMzLDcgKzMzLDYgQEAKICNpbmNsdWRl
ICJBcnJheVByb2ZpbGUuaCIKICNpbmNsdWRlICJCeVZhbEluZm8uaCIKICNpbmNsdWRlICJCeXRl
Y29kZUNvbnZlbnRpb25zLmgiCi0jaW5jbHVkZSAiQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmgi
CiAjaW5jbHVkZSAiQ2FsbExpbmtJbmZvLmgiCiAjaW5jbHVkZSAiQ2FsbFJldHVybk9mZnNldFRv
Qnl0ZWNvZGVPZmZzZXQuaCIKICNpbmNsdWRlICJDb2RlQmxvY2tIYXNoLmgiCkBAIC03OSw2ICs3
OCw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCitjbGFzcyBCeXRlY29kZUxpdmVuZXNzQW5hbHlz
aXM7CiBjbGFzcyBFeGVjU3RhdGU7CiBjbGFzcyBKSVRBZGRHZW5lcmF0b3I7CiBjbGFzcyBKU01v
ZHVsZUVudmlyb25tZW50OwpAQCAtMjI2LDEwICsyMjYsNiBAQCBjbGFzcyBDb2RlQmxvY2sgOiBw
dWJsaWMgSlNDZWxsIHsKICAgICAgICAgcmV0dXJuIGluZGV4ID49IG1fbnVtVmFyczsKICAgICB9
CiAKLSAgICBlbnVtIGNsYXNzIFJlcXVpcmVkSGFuZGxlciB7Ci0gICAgICAgIENhdGNoSGFuZGxl
ciwKLSAgICAgICAgQW55SGFuZGxlcgotICAgIH07CiAgICAgSGFuZGxlckluZm8qIGhhbmRsZXJG
b3JCeXRlY29kZU9mZnNldCh1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgUmVxdWlyZWRIYW5kbGVy
ID0gUmVxdWlyZWRIYW5kbGVyOjpBbnlIYW5kbGVyKTsKICAgICBIYW5kbGVySW5mbyogaGFuZGxl
ckZvckluZGV4KHVuc2lnbmVkLCBSZXF1aXJlZEhhbmRsZXIgPSBSZXF1aXJlZEhhbmRsZXI6OkFu
eUhhbmRsZXIpOwogICAgIHZvaWQgcmVtb3ZlRXhjZXB0aW9uSGFuZGxlckZvckNhbGxTaXRlKENh
bGxTaXRlSW5kZXgpOwpAQCAtMzA0LDYgKzMwMCw5IEBAIGNsYXNzIENvZGVCbG9jayA6IHB1Ymxp
YyBKU0NlbGwgewogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SW5zdHJ1Y3Rpb24qPihyZXR1
cm5BZGRyZXNzKSAtIGluc3RydWN0aW9ucygpLmJlZ2luKCk7CiAgICAgfQogCisgICAgdHlwZWRl
ZiBKU0M6Okluc3RydWN0aW9uIEluc3RydWN0aW9uOworICAgIHR5cGVkZWYgUmVmQ291bnRlZEFy
cmF5PEluc3RydWN0aW9uPiYgVW5wYWNrZWRJbnN0cnVjdGlvbnM7CisKICAgICB1bnNpZ25lZCBu
dW1iZXJPZkluc3RydWN0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1faW5zdHJ1Y3Rpb25zLnNpemUo
KTsgfQogICAgIFJlZkNvdW50ZWRBcnJheTxJbnN0cnVjdGlvbj4mIGluc3RydWN0aW9ucygpIHsg
cmV0dXJuIG1faW5zdHJ1Y3Rpb25zOyB9CiAgICAgY29uc3QgUmVmQ291bnRlZEFycmF5PEluc3Ry
dWN0aW9uPiYgaW5zdHJ1Y3Rpb25zKCkgY29uc3QgeyByZXR1cm4gbV9pbnN0cnVjdGlvbnM7IH0K
QEAgLTU0Niw3ICs1NDUsNyBAQCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAg
ICB9CiAKICAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4mIGNvbnN0YW50UmVnaXN0ZXIoaW50IGlu
ZGV4KSB7IHJldHVybiBtX2NvbnN0YW50UmVnaXN0ZXJzW2luZGV4IC0gRmlyc3RDb25zdGFudFJl
Z2lzdGVySW5kZXhdOyB9Ci0gICAgQUxXQVlTX0lOTElORSBib29sIGlzQ29uc3RhbnRSZWdpc3Rl
ckluZGV4KGludCBpbmRleCkgY29uc3QgeyByZXR1cm4gaW5kZXggPj0gRmlyc3RDb25zdGFudFJl
Z2lzdGVySW5kZXg7IH0KKyAgICBzdGF0aWMgQUxXQVlTX0lOTElORSBib29sIGlzQ29uc3RhbnRS
ZWdpc3RlckluZGV4KGludCBpbmRleCkgeyByZXR1cm4gaW5kZXggPj0gRmlyc3RDb25zdGFudFJl
Z2lzdGVySW5kZXg7IH0KICAgICBBTFdBWVNfSU5MSU5FIEpTVmFsdWUgZ2V0Q29uc3RhbnQoaW50
IGluZGV4KSBjb25zdCB7IHJldHVybiBtX2NvbnN0YW50UmVnaXN0ZXJzW2luZGV4IC0gRmlyc3RD
b25zdGFudFJlZ2lzdGVySW5kZXhdLmdldCgpOyB9CiAgICAgQUxXQVlTX0lOTElORSBTb3VyY2VD
b2RlUmVwcmVzZW50YXRpb24gY29uc3RhbnRTb3VyY2VDb2RlUmVwcmVzZW50YXRpb24oaW50IGlu
ZGV4KSBjb25zdCB7IHJldHVybiBtX2NvbnN0YW50c1NvdXJjZUNvZGVSZXByZXNlbnRhdGlvbltp
bmRleCAtIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4XTsgfQogCkBAIC01OTIsMTQgKzU5MSw3
IEBAIGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgICAgICAgICAgaWYgKCEh
bV9saXZlbmVzc0FuYWx5c2lzKQogICAgICAgICAgICAgICAgIHJldHVybiAqbV9saXZlbmVzc0Fu
YWx5c2lzOwogICAgICAgICB9Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUxpdmVu
ZXNzQW5hbHlzaXM+IGFuYWx5c2lzID0KLSAgICAgICAgICAgIHN0ZDo6bWFrZV91bmlxdWU8Qnl0
ZWNvZGVMaXZlbmVzc0FuYWx5c2lzPih0aGlzKTsKLSAgICAgICAgewotICAgICAgICAgICAgQ29u
Y3VycmVudEpJVExvY2tlciBsb2NrZXIobV9sb2NrKTsKLSAgICAgICAgICAgIGlmICghbV9saXZl
bmVzc0FuYWx5c2lzKQotICAgICAgICAgICAgICAgIG1fbGl2ZW5lc3NBbmFseXNpcyA9IFdURk1v
dmUoYW5hbHlzaXMpOwotICAgICAgICAgICAgcmV0dXJuICptX2xpdmVuZXNzQW5hbHlzaXM7Ci0g
ICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGxpdmVuZXNzQW5hbHlzaXNTbG93KCk7CiAgICAgfQog
ICAgIAogICAgIHZvaWQgdmFsaWRhdGUoKTsKQEAgLTYyMCwxOCArNjEyLDYgQEAgY2xhc3MgQ29k
ZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgU3RyaW5nSnVtcFRhYmxlJiBhZGRTdHJpbmdT
d2l0Y2hKdW1wVGFibGUoKSB7IGNyZWF0ZVJhcmVEYXRhSWZOZWNlc3NhcnkoKTsgbV9yYXJlRGF0
YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzLmFwcGVuZChTdHJpbmdKdW1wVGFibGUoKSk7IHJl
dHVybiBtX3JhcmVEYXRhLT5tX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXMubGFzdCgpOyB9CiAgICAg
U3RyaW5nSnVtcFRhYmxlJiBzdHJpbmdTd2l0Y2hKdW1wVGFibGUoaW50IHRhYmxlSW5kZXgpIHsg
UkVMRUFTRV9BU1NFUlQobV9yYXJlRGF0YSk7IHJldHVybiBtX3JhcmVEYXRhLT5tX3N0cmluZ1N3
aXRjaEp1bXBUYWJsZXNbdGFibGVJbmRleF07IH0KIAotICAgIC8vIExpdmUgY2FsbGVlIHJlZ2lz
dGVycyBhdCB5aWVsZCBwb2ludHMuCi0gICAgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZUNhbGxl
ZUxvY2Fsc0F0WWllbGQodW5zaWduZWQgaW5kZXgpIGNvbnN0Ci0gICAgewotICAgICAgICBSRUxF
QVNFX0FTU0VSVChtX3JhcmVEYXRhKTsKLSAgICAgICAgcmV0dXJuIG1fcmFyZURhdGEtPm1fbGl2
ZUNhbGxlZUxvY2Fsc0F0WWllbGRbaW5kZXhdOwotICAgIH0KLSAgICBGYXN0Qml0VmVjdG9yJiBs
aXZlQ2FsbGVlTG9jYWxzQXRZaWVsZCh1bnNpZ25lZCBpbmRleCkKLSAgICB7Ci0gICAgICAgIFJF
TEVBU0VfQVNTRVJUKG1fcmFyZURhdGEpOwotICAgICAgICByZXR1cm4gbV9yYXJlRGF0YS0+bV9s
aXZlQ2FsbGVlTG9jYWxzQXRZaWVsZFtpbmRleF07Ci0gICAgfQotCiAgICAgRXZhbENvZGVDYWNo
ZSYgZXZhbENvZGVDYWNoZSgpIHsgY3JlYXRlUmFyZURhdGFJZk5lY2Vzc2FyeSgpOyByZXR1cm4g
bV9yYXJlRGF0YS0+bV9ldmFsQ29kZUNhY2hlOyB9CiAKICAgICBlbnVtIFNocmlua01vZGUgewpA
QCAtODg2LDggKzg2Niw2IEBAIGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAg
ICAgICBWZWN0b3I8U2ltcGxlSnVtcFRhYmxlPiBtX3N3aXRjaEp1bXBUYWJsZXM7CiAgICAgICAg
IFZlY3RvcjxTdHJpbmdKdW1wVGFibGU+IG1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlczsKIAotICAg
ICAgICBWZWN0b3I8RmFzdEJpdFZlY3Rvcj4gbV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZDsKLQog
ICAgICAgICBFdmFsQ29kZUNhY2hlIG1fZXZhbENvZGVDYWNoZTsKICAgICB9OwogCkBAIC05MjIs
NiArOTAwLDggQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAKIHByaXZhdGU6
CiAgICAgZnJpZW5kIGNsYXNzIENvZGVCbG9ja1NldDsKKworICAgIEJ5dGVjb2RlTGl2ZW5lc3NB
bmFseXNpcyYgbGl2ZW5lc3NBbmFseXNpc1Nsb3coKTsKICAgICAKICAgICBDb2RlQmxvY2sqIHNw
ZWNpYWxPU1JFbnRyeUJsb2NrT3JOdWxsKCk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvSGFuZGxlckluZm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9IYW5kbGVySW5mby5oCmluZGV4IGFjZGRhMDhlZDE0Y2JmOWYwOTcxMjc1MDQw
NWE0MTc0MWY3NmEyMTMuLjdiMTA4YWNlOTM3MjhhOGQ1ZGY4ZWIxNzNmYzBiMGE2MWJhZWQ2M2Ug
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9IYW5kbGVySW5mby5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9IYW5kbGVySW5mby5oCkBAIC0y
Nyw2ICsyNyw3IEBACiAjZGVmaW5lIEhhbmRsZXJJbmZvX2gKIAogI2luY2x1ZGUgIkNvZGVMb2Nh
dGlvbi5oIgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAg
LTM3LDYgKzM4LDExIEBAIGVudW0gY2xhc3MgSGFuZGxlclR5cGUgewogICAgIFN5bnRoZXNpemVk
RmluYWxseSA9IDMKIH07CiAKK2VudW0gY2xhc3MgUmVxdWlyZWRIYW5kbGVyIHsKKyAgICBDYXRj
aEhhbmRsZXIsCisgICAgQW55SGFuZGxlcgorfTsKKwogc3RydWN0IEhhbmRsZXJJbmZvQmFzZSB7
CiAgICAgSGFuZGxlclR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEhhbmRs
ZXJUeXBlPih0eXBlQml0cyk7IH0KICAgICB2b2lkIHNldFR5cGUoSGFuZGxlclR5cGUgdHlwZSkg
eyB0eXBlQml0cyA9IHN0YXRpY19jYXN0PHVpbnQzMl90Pih0eXBlKTsgfQpAQCAtNTgsNiArNjQs
MjMgQEAgc3RydWN0IEhhbmRsZXJJbmZvQmFzZSB7CiAKICAgICBib29sIGlzQ2F0Y2hIYW5kbGVy
KCkgY29uc3QgeyByZXR1cm4gdHlwZSgpID09IEhhbmRsZXJUeXBlOjpDYXRjaDsgfQogCisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgSGFuZGxlcj4KKyAgICBzdGF0aWMgSGFuZGxlciogaGFuZGxlckZv
ckluZGV4KFZlY3RvcjxIYW5kbGVyPiYgZXhlcHRpb25IYW5kbGVycywgdW5zaWduZWQgaW5kZXgs
IFJlcXVpcmVkSGFuZGxlciByZXF1aXJlZEhhbmRsZXIpCisgICAgeworICAgICAgICBmb3IgKEhh
bmRsZXImIGhhbmRsZXIgOiBleGVwdGlvbkhhbmRsZXJzKSB7CisgICAgICAgICAgICBpZiAoKHJl
cXVpcmVkSGFuZGxlciA9PSBSZXF1aXJlZEhhbmRsZXI6OkNhdGNoSGFuZGxlcikgJiYgIWhhbmRs
ZXIuaXNDYXRjaEhhbmRsZXIoKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAg
ICAgICAgLy8gSGFuZGxlcnMgYXJlIG9yZGVyZWQgaW5uZXJtb3N0IGZpcnN0LCBzbyB0aGUgZmly
c3QgaGFuZGxlciB3ZSBlbmNvdW50ZXIKKyAgICAgICAgICAgIC8vIHRoYXQgY29udGFpbnMgdGhl
IHNvdXJjZSBhZGRyZXNzIGlzIHRoZSBjb3JyZWN0IGhhbmRsZXIgdG8gdXNlLgorICAgICAgICAg
ICAgLy8gVGhpcyBpbmRleCB1c2VkIGlzIGVpdGhlciB0aGUgQnl0ZWNvZGVPZmZzZXQgb3IgYSBD
YWxsU2l0ZUluZGV4LgorICAgICAgICAgICAgaWYgKGhhbmRsZXIuc3RhcnQgPD0gaW5kZXggJiYg
aGFuZGxlci5lbmQgPiBpbmRleCkKKyAgICAgICAgICAgICAgICByZXR1cm4gJmhhbmRsZXI7Cisg
ICAgICAgIH0KKworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKICAgICB1aW50MzJf
dCBzdGFydDsKICAgICB1aW50MzJfdCBlbmQ7CiAgICAgdWludDMyX3QgdGFyZ2V0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmNw
cAppbmRleCBlMmNiMDAwNDgzNzk0YmE5MmQ1MTBkY2Y1ZmE5OTQ4ODVhMjNkYzNkLi5iZDg0MGY4
ZWE4MTM1OTVkNjcyYzk4YTY2NzAxYzM4ODdjNWQwODQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmNwcApAQCAtMjYsMTQg
KzI2LDE1IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUHJlY2lzZUp1bXBUYXJn
ZXRzLmgiCiAKKyNpbmNsdWRlICJJbnRlcnByZXRlcklubGluZXMuaCIKICNpbmNsdWRlICJKU0NJ
bmxpbmVzLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCi10ZW1wbGF0ZSA8c2l6ZV90IHZlY3RvclNp
emU+Ci1zdGF0aWMgdm9pZCBnZXRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9j
ayogY29kZUJsb2NrLCBJbnRlcnByZXRlciogaW50ZXJwcmV0ZXIsIEluc3RydWN0aW9uKiBpbnN0
cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIFZlY3Rvcjx1bnNpZ25lZCwg
dmVjdG9yU2l6ZT4mIG91dCkKK3RlbXBsYXRlIDxzaXplX3QgdmVjdG9yU2l6ZSwgdHlwZW5hbWUg
QmxvY2ssIHR5cGVuYW1lIEluc3RydWN0aW9uPgorc3RhdGljIHZvaWQgZ2V0SnVtcFRhcmdldHNG
b3JCeXRlY29kZU9mZnNldChCbG9jayogY29kZUJsb2NrLCBJbnRlcnByZXRlciogaW50ZXJwcmV0
ZXIsIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgYnl0ZWNvZGVPZmZz
ZXQsIFZlY3Rvcjx1bnNpZ25lZCwgdmVjdG9yU2l6ZT4mIG91dCkKIHsKLSAgICBPcGNvZGVJRCBv
cGNvZGVJRCA9IGludGVycHJldGVyLT5nZXRPcGNvZGVJRChpbnN0cnVjdGlvbnNCZWdpbltieXRl
Y29kZU9mZnNldF0udS5vcGNvZGUpOworICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0
ZXItPmdldE9wY29kZUlEKGluc3RydWN0aW9uc0JlZ2luW2J5dGVjb2RlT2Zmc2V0XSk7CiAgICAg
SW5zdHJ1Y3Rpb24qIGN1cnJlbnQgPSBpbnN0cnVjdGlvbnNCZWdpbiArIGJ5dGVjb2RlT2Zmc2V0
OwogICAgIHN3aXRjaCAob3Bjb2RlSUQpIHsKICAgICBjYXNlIG9wX2ptcDoKQEAgLTU0LDIxICs1
NSwyMCBAQCBzdGF0aWMgdm9pZCBnZXRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVC
bG9jayogY29kZUJsb2NrLCBJbnRlcnByZXRlciogaQogICAgIGNhc2Ugb3Bfam5sZXNzZXE6CiAg
ICAgY2FzZSBvcF9qbmdyZWF0ZXI6CiAgICAgY2FzZSBvcF9qbmdyZWF0ZXJlcToKLSAgICBjYXNl
IG9wX3NhdmU6IC8vIFRoZSBqdW1wIG9mIG9wX3NhdmUgaXMgcHVyZWx5IGZvciBjYWxjdWxhdGlu
ZyBsaXZlbmVzcy4KICAgICAgICAgb3V0LmFwcGVuZChieXRlY29kZU9mZnNldCArIGN1cnJlbnRb
M10udS5vcGVyYW5kKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBvcF9zd2l0Y2hfaW1tOgog
ICAgIGNhc2Ugb3Bfc3dpdGNoX2NoYXI6IHsKLSAgICAgICAgU2ltcGxlSnVtcFRhYmxlJiB0YWJs
ZSA9IGNvZGVCbG9jay0+c3dpdGNoSnVtcFRhYmxlKGN1cnJlbnRbMV0udS5vcGVyYW5kKTsKKyAg
ICAgICAgYXV0byYgdGFibGUgPSBjb2RlQmxvY2stPnN3aXRjaEp1bXBUYWJsZShjdXJyZW50WzFd
LnUub3BlcmFuZCk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IHRhYmxlLmJyYW5jaE9mZnNl
dHMuc2l6ZSgpOyBpLS07KQogICAgICAgICAgICAgb3V0LmFwcGVuZChieXRlY29kZU9mZnNldCAr
IHRhYmxlLmJyYW5jaE9mZnNldHNbaV0pOwogICAgICAgICBvdXQuYXBwZW5kKGJ5dGVjb2RlT2Zm
c2V0ICsgY3VycmVudFsyXS51Lm9wZXJhbmQpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAg
Y2FzZSBvcF9zd2l0Y2hfc3RyaW5nOiB7Ci0gICAgICAgIFN0cmluZ0p1bXBUYWJsZSYgdGFibGUg
PSBjb2RlQmxvY2stPnN0cmluZ1N3aXRjaEp1bXBUYWJsZShjdXJyZW50WzFdLnUub3BlcmFuZCk7
Ci0gICAgICAgIFN0cmluZ0p1bXBUYWJsZTo6U3RyaW5nT2Zmc2V0VGFibGU6Oml0ZXJhdG9yIGl0
ZXIgPSB0YWJsZS5vZmZzZXRUYWJsZS5iZWdpbigpOwotICAgICAgICBTdHJpbmdKdW1wVGFibGU6
OlN0cmluZ09mZnNldFRhYmxlOjppdGVyYXRvciBlbmQgPSB0YWJsZS5vZmZzZXRUYWJsZS5lbmQo
KTsKKyAgICAgICAgYXV0byYgdGFibGUgPSBjb2RlQmxvY2stPnN0cmluZ1N3aXRjaEp1bXBUYWJs
ZShjdXJyZW50WzFdLnUub3BlcmFuZCk7CisgICAgICAgIGF1dG8gaXRlciA9IHRhYmxlLm9mZnNl
dFRhYmxlLmJlZ2luKCk7CisgICAgICAgIGF1dG8gZW5kID0gdGFibGUub2Zmc2V0VGFibGUuZW5k
KCk7CiAgICAgICAgIGZvciAoOyBpdGVyICE9IGVuZDsgKytpdGVyKQogICAgICAgICAgICAgb3V0
LmFwcGVuZChieXRlY29kZU9mZnNldCArIGl0ZXItPnZhbHVlLmJyYW5jaE9mZnNldCk7CiAgICAg
ICAgIG91dC5hcHBlbmQoYnl0ZWNvZGVPZmZzZXQgKyBjdXJyZW50WzJdLnUub3BlcmFuZCk7CkBA
IC04MiwxMyArODIsMTkgQEAgc3RhdGljIHZvaWQgZ2V0SnVtcFRhcmdldHNGb3JCeXRlY29kZU9m
ZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgSW50ZXJwcmV0ZXIqIGkKICAgICB9CiB9CiAKLXZv
aWQgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgVmVjdG9y
PHVuc2lnbmVkLCAzMj4mIG91dCkKK2VudW0gY2xhc3MgQ29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0
c01vZGUgeworICAgIEZvbGxvd0NvZGVCbG9ja0NsYWltLAorICAgIEZvcmNlQ29tcHV0ZSwKK307
CisKK3RlbXBsYXRlPENvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHNNb2RlIE1vZGUsIHR5cGVuYW1l
IEJsb2NrLCB0eXBlbmFtZSBJbnN0cnVjdGlvbiwgc2l6ZV90IHZlY3RvclNpemU+Cit2b2lkIGNv
bXB1dGVQcmVjaXNlSnVtcFRhcmdldHNJbnRlcm5hbChCbG9jayogY29kZUJsb2NrLCBJbnN0cnVj
dGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQsIFZlY3Rv
cjx1bnNpZ25lZCwgdmVjdG9yU2l6ZT4mIG91dCkKIHsKICAgICBBU1NFUlQob3V0LmlzRW1wdHko
KSk7CiAgICAgCiAgICAgLy8gV2Ugd2lsbCBkZXJpdmUgYSBzdXBlcnNldCBvZiB0aGUganVtcCB0
YXJnZXRzIHRoYXQgdGhlIGNvZGUgYmxvY2sgdGhpbmtzIGl0IGhhcy4KICAgICAvLyBTbywgaWYg
dGhlIGNvZGUgYmxvY2sgY2xhaW1zIHRoZXJlIGFyZSBub25lLCB0aGVuIHdlIGFyZSBkb25lLgot
ICAgIGlmICghY29kZUJsb2NrLT5udW1iZXJPZkp1bXBUYXJnZXRzKCkpCisgICAgaWYgKE1vZGUg
PT0gQ29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0c01vZGU6OkZvbGxvd0NvZGVCbG9ja0NsYWltICYm
ICFjb2RlQmxvY2stPm51bWJlck9mSnVtcFRhcmdldHMoKSkKICAgICAgICAgcmV0dXJuOwogICAg
IAogICAgIGZvciAodW5zaWduZWQgaSA9IGNvZGVCbG9jay0+bnVtYmVyT2ZFeGNlcHRpb25IYW5k
bGVycygpOyBpLS07KSB7CkBAIC05OCwxMCArMTA0LDggQEAgdm9pZCBjb21wdXRlUHJlY2lzZUp1
bXBUYXJnZXRzKENvZGVCbG9jayogY29kZUJsb2NrLCBWZWN0b3I8dW5zaWduZWQsIDMyPiYgb3V0
KQogICAgIH0KIAogICAgIEludGVycHJldGVyKiBpbnRlcnByZXRlciA9IGNvZGVCbG9jay0+dm0o
KS0+aW50ZXJwcmV0ZXI7Ci0gICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luID0gY29k
ZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpOwotICAgIHVuc2lnbmVkIGluc3RydWN0aW9u
Q291bnQgPSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLnNpemUoKTsKICAgICBmb3IgKHVuc2ln
bmVkIGJ5dGVjb2RlT2Zmc2V0ID0gMDsgYnl0ZWNvZGVPZmZzZXQgPCBpbnN0cnVjdGlvbkNvdW50
OykgewotICAgICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGludGVycHJldGVyLT5nZXRPcGNvZGVJ
RChpbnN0cnVjdGlvbnNCZWdpbltieXRlY29kZU9mZnNldF0udS5vcGNvZGUpOworICAgICAgICBP
cGNvZGVJRCBvcGNvZGVJRCA9IGludGVycHJldGVyLT5nZXRPcGNvZGVJRChpbnN0cnVjdGlvbnNC
ZWdpbltieXRlY29kZU9mZnNldF0pOwogICAgICAgICBnZXRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2Rl
T2Zmc2V0KGNvZGVCbG9jaywgaW50ZXJwcmV0ZXIsIGluc3RydWN0aW9uc0JlZ2luLCBieXRlY29k
ZU9mZnNldCwgb3V0KTsKICAgICAgICAgYnl0ZWNvZGVPZmZzZXQgKz0gb3Bjb2RlTGVuZ3Roc1tv
cGNvZGVJRF07CiAgICAgfQpAQCAtMTIzLDExICsxMjcsMzQgQEAgdm9pZCBjb21wdXRlUHJlY2lz
ZUp1bXBUYXJnZXRzKENvZGVCbG9jayogY29kZUJsb2NrLCBWZWN0b3I8dW5zaWduZWQsIDMyPiYg
b3V0KQogICAgIG91dC5zaHJpbmtUb0ZpdCgpOwogfQogCi12b2lkIGZpbmRKdW1wVGFyZ2V0c0Zv
ckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9m
ZnNldCwgVmVjdG9yPHVuc2lnbmVkLCAxPiYgb3V0KQordm9pZCBjb21wdXRlUHJlY2lzZUp1bXBU
YXJnZXRzKENvZGVCbG9jayogY29kZUJsb2NrLCBWZWN0b3I8dW5zaWduZWQsIDMyPiYgb3V0KQog
ewotICAgIEludGVycHJldGVyKiBpbnRlcnByZXRlciA9IGNvZGVCbG9jay0+dm0oKS0+aW50ZXJw
cmV0ZXI7Ci0gICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luID0gY29kZUJsb2NrLT5p
bnN0cnVjdGlvbnMoKS5iZWdpbigpOwotICAgIGdldEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZz
ZXQoY29kZUJsb2NrLCBpbnRlcnByZXRlciwgaW5zdHJ1Y3Rpb25zQmVnaW4sIGJ5dGVjb2RlT2Zm
c2V0LCBvdXQpOworICAgIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHNJbnRlcm5hbDxDb21wdXRl
UHJlY2lzZUp1bXBUYXJnZXRzTW9kZTo6Rm9sbG93Q29kZUJsb2NrQ2xhaW0+KGNvZGVCbG9jaywg
Y29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpLCBjb2RlQmxvY2stPmluc3RydWN0aW9u
cygpLnNpemUoKSwgb3V0KTsKK30KKwordm9pZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKENv
ZGVCbG9jayogY29kZUJsb2NrLCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2ln
bmVkIGluc3RydWN0aW9uQ291bnQsIFZlY3Rvcjx1bnNpZ25lZCwgMzI+JiBvdXQpCit7CisgICAg
Y29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0c0ludGVybmFsPENvbXB1dGVQcmVjaXNlSnVtcFRhcmdl
dHNNb2RlOjpGb2xsb3dDb2RlQmxvY2tDbGFpbT4oY29kZUJsb2NrLCBpbnN0cnVjdGlvbnNCZWdp
biwgaW5zdHJ1Y3Rpb25Db3VudCwgb3V0KTsKK30KKwordm9pZCBjb21wdXRlUHJlY2lzZUp1bXBU
YXJnZXRzKFVubGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFVubGlua2VkSW5zdHJ1Y3Rpb24q
IGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50LCBWZWN0b3I8dW5z
aWduZWQsIDMyPiYgb3V0KQoreworICAgIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHNJbnRlcm5h
bDxDb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzTW9kZTo6Rm9sbG93Q29kZUJsb2NrQ2xhaW0+KGNv
ZGVCbG9jaywgaW5zdHJ1Y3Rpb25zQmVnaW4sIGluc3RydWN0aW9uQ291bnQsIG91dCk7Cit9CisK
K3ZvaWQgcmVjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKFVubGlua2VkQ29kZUJsb2NrKiBjb2Rl
QmxvY2ssIFVubGlua2VkSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBp
bnN0cnVjdGlvbkNvdW50LCBWZWN0b3I8dW5zaWduZWQ+JiBvdXQpCit7CisgICAgY29tcHV0ZVBy
ZWNpc2VKdW1wVGFyZ2V0c0ludGVybmFsPENvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHNNb2RlOjpG
b3JjZUNvbXB1dGU+KGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb25zQmVnaW4sIGluc3RydWN0aW9uQ291
bnQsIG91dCk7Cit9CisKK3ZvaWQgZmluZEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoQ29k
ZUJsb2NrKiBjb2RlQmxvY2ssIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWdu
ZWQgYnl0ZWNvZGVPZmZzZXQsIFZlY3Rvcjx1bnNpZ25lZCwgMT4mIG91dCkKK3sKKyAgICBnZXRK
dW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9jaywgY29kZUJsb2NrLT52bSgpLT5p
bnRlcnByZXRlciwgaW5zdHJ1Y3Rpb25zQmVnaW4sIGJ5dGVjb2RlT2Zmc2V0LCBvdXQpOworfQor
Cit2b2lkIGZpbmRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KFVubGlua2VkQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIFVubGlua2VkSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1bnNp
Z25lZCBieXRlY29kZU9mZnNldCwgVmVjdG9yPHVuc2lnbmVkLCAxPiYgb3V0KQoreworICAgIGdl
dEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoY29kZUJsb2NrLCBjb2RlQmxvY2stPnZtKCkt
PmludGVycHJldGVyLCBpbnN0cnVjdGlvbnNCZWdpbiwgYnl0ZWNvZGVPZmZzZXQsIG91dCk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5oCmluZGV4IDg1MjQxM2Q3N2I3OTg5ODRiMjdjZWYw
ZWQ2MmJjOTRjNjg5ZTIxMmMuLmRiOWJkMzgzYjhhYzQ1NTdkMzI2NzE3YjcyZDRiMGY1MGIxZDE4
MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVt
cFRhcmdldHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1
bXBUYXJnZXRzLmgKQEAgLTMwLDEwICszMCwxOCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorY2xh
c3MgVW5saW5rZWRDb2RlQmxvY2s7CitzdHJ1Y3QgVW5saW5rZWRJbnN0cnVjdGlvbjsKKwogLy8g
UmV0dXJuIGEgc29ydGVkIGxpc3Qgb2YgYnl0ZWNvZGUgaW5kZXggdGhhdCBhcmUgdGhlIGRlc3Rp
bmF0aW9uIG9mIGEganVtcC4KIHZvaWQgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhDb2RlQmxv
Y2sqLCBWZWN0b3I8dW5zaWduZWQsIDMyPiYgb3V0KTsKK3ZvaWQgY29tcHV0ZVByZWNpc2VKdW1w
VGFyZ2V0cyhDb2RlQmxvY2sqLCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2ln
bmVkIGluc3RydWN0aW9uQ291bnQsIFZlY3Rvcjx1bnNpZ25lZCwgMzI+JiBvdXQpOwordm9pZCBj
b21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKFVubGlua2VkQ29kZUJsb2NrKiwgVW5saW5rZWRJbnN0
cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQsIFZl
Y3Rvcjx1bnNpZ25lZCwgMzI+JiBvdXQpOworCit2b2lkIHJlY29tcHV0ZVByZWNpc2VKdW1wVGFy
Z2V0cyhVbmxpbmtlZENvZGVCbG9jayosIFVubGlua2VkSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9u
c0JlZ2luLCB1bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50LCBWZWN0b3I8dW5zaWduZWQ+JiBvdXQp
OwogCi12b2lkIGZpbmRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayosIHVu
c2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBWZWN0b3I8dW5zaWduZWQsIDE+JiBvdXQpOwordm9pZCBm
aW5kSnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqLCBJbnN0cnVjdGlvbiog
aW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBWZWN0b3I8dW5zaWdu
ZWQsIDE+JiBvdXQpOwordm9pZCBmaW5kSnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChVbmxp
bmtlZENvZGVCbG9jayosIFVubGlua2VkSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1
bnNpZ25lZCBieXRlY29kZU9mZnNldCwgVmVjdG9yPHVuc2lnbmVkLCAxPiYgb3V0KTsKIAogfSAv
LyBuYW1lc3BhY2UgSlNDCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCmluZGV4IDAwNWRmZjhiZmMyYzUwNDhjNTAzY2U2MDI5
YmJkMjM4MzA2YTE5NTQuLmE1ZWNmNTFlMWU3N2ViMjk5YWFiMTZhMDkwOWE0NjE2MjM1ZDA1NmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVC
bG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29k
ZUJsb2NrLmNwcApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIlVubGlua2VkQ29kZUJsb2Nr
LmgiCiAKICNpbmNsdWRlICJCeXRlY29kZUdlbmVyYXRvci5oIgorI2luY2x1ZGUgIkJ5dGVjb2Rl
UmV3cml0ZXIuaCIKICNpbmNsdWRlICJDbGFzc0luZm8uaCIKICNpbmNsdWRlICJDb2RlQ2FjaGUu
aCIKICNpbmNsdWRlICJFeGVjdXRhYmxlLmgiCkBAIC0zNiw2ICszNyw3IEBACiAjaW5jbHVkZSAi
SlNTdHJpbmcuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiUGFyc2VyLmgi
CisjaW5jbHVkZSAiUHJlY2lzZUp1bXBUYXJnZXRzLmgiCiAjaW5jbHVkZSAiU291cmNlUHJvdmlk
ZXIuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIKICNpbmNsdWRlICJTeW1ib2xUYWJsZS5oIgpA
QCAtMzY3LDUgKzM2OSwxMTEgQEAgY29uc3QgVW5saW5rZWRJbnN0cnVjdGlvblN0cmVhbSYgVW5s
aW5rZWRDb2RlQmxvY2s6Omluc3RydWN0aW9ucygpIGNvbnN0CiAgICAgcmV0dXJuICptX3VubGlu
a2VkSW5zdHJ1Y3Rpb25zOwogfQogCitVbmxpbmtlZEhhbmRsZXJJbmZvKiBVbmxpbmtlZENvZGVC
bG9jazo6aGFuZGxlckZvckJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBS
ZXF1aXJlZEhhbmRsZXIgcmVxdWlyZWRIYW5kbGVyKQoreworICAgIHJldHVybiBoYW5kbGVyRm9y
SW5kZXgoYnl0ZWNvZGVPZmZzZXQsIHJlcXVpcmVkSGFuZGxlcik7Cit9CisKK1VubGlua2VkSGFu
ZGxlckluZm8qIFVubGlua2VkQ29kZUJsb2NrOjpoYW5kbGVyRm9ySW5kZXgodW5zaWduZWQgaW5k
ZXgsIFJlcXVpcmVkSGFuZGxlciByZXF1aXJlZEhhbmRsZXIpCit7CisgICAgaWYgKCFtX3JhcmVE
YXRhKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gVW5saW5rZWRIYW5kbGVy
SW5mbzo6aGFuZGxlckZvckluZGV4KG1fcmFyZURhdGEtPm1fZXhjZXB0aW9uSGFuZGxlcnMsIGlu
ZGV4LCByZXF1aXJlZEhhbmRsZXIpOworfQorCit2b2lkIFVubGlua2VkQ29kZUJsb2NrOjphcHBs
eU1vZGlmaWNhdGlvbihCeXRlY29kZVJld3JpdGVyJiBpbnNlcnRpb25TZXQpCit7CisgICAgLy8g
QmVmb3JlIGFwcGx5aW5nIHRoZSBjaGFuZ2VzLCB3ZSBhZGp1c3QgdGhlIGp1bXBzIGJhc2VkIG9u
IHRoZSBvcmlnaW5hbCBieXRlY29kZSBvZmZzZXQsIHRoZSBvZmZzZXQgdG8gdGhlIGp1bXAgdGFy
Z2V0LCBhbmQKKyAgICAvLyB0aGUgaW5zZXJ0aW9uIGluZm9ybWF0aW9uLgorCisgICAgQnl0ZWNv
ZGVHcmFwaDxVbmxpbmtlZENvZGVCbG9jaz4mIGdyYXBoID0gaW5zZXJ0aW9uU2V0LmdyYXBoKCk7
CisgICAgVW5saW5rZWRJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4gPSBncmFwaC5pbnN0
cnVjdGlvbnMoKS5iZWdpbigpOworICAgIGZvciAoaW50IGJ5dGVjb2RlT2Zmc2V0ID0gMCwgaW5z
dHJ1Y3Rpb25Db3VudCA9IGdyYXBoLmluc3RydWN0aW9ucygpLnNpemUoKTsgYnl0ZWNvZGVPZmZz
ZXQgPCBpbnN0cnVjdGlvbkNvdW50OykgeworICAgICAgICBVbmxpbmtlZEluc3RydWN0aW9uKiBj
dXJyZW50ID0gaW5zdHJ1Y3Rpb25zQmVnaW4gKyBieXRlY29kZU9mZnNldDsKKyAgICAgICAgT3Bj
b2RlSUQgb3Bjb2RlSUQgPSBjdXJyZW50WzBdLnUub3Bjb2RlOworCisgICAgICAgIHN3aXRjaCAo
b3Bjb2RlSUQpIHsKKyAgICAgICAgY2FzZSBvcF9qbXA6CisgICAgICAgICAgICBjdXJyZW50WzFd
LnUub3BlcmFuZCA9IGluc2VydGlvblNldC5hZGp1c3RPZmZzZXQoYnl0ZWNvZGVPZmZzZXQsIGJ5
dGVjb2RlT2Zmc2V0ICsgY3VycmVudFsxXS51Lm9wZXJhbmQpOworICAgICAgICAgICAgYnJlYWs7
CisKKyAgICAgICAgY2FzZSBvcF9qdHJ1ZToKKyAgICAgICAgY2FzZSBvcF9qZmFsc2U6CisgICAg
ICAgIGNhc2Ugb3BfamVxX251bGw6CisgICAgICAgIGNhc2Ugb3Bfam5lcV9udWxsOgorICAgICAg
ICAgICAgY3VycmVudFsyXS51Lm9wZXJhbmQgPSBpbnNlcnRpb25TZXQuYWRqdXN0T2Zmc2V0KGJ5
dGVjb2RlT2Zmc2V0LCBieXRlY29kZU9mZnNldCArIGN1cnJlbnRbMl0udS5vcGVyYW5kKTsKKyAg
ICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2Ugb3Bfam5lcV9wdHI6CisgICAgICAgIGNh
c2Ugb3Bfamxlc3M6CisgICAgICAgIGNhc2Ugb3Bfamxlc3NlcToKKyAgICAgICAgY2FzZSBvcF9q
Z3JlYXRlcjoKKyAgICAgICAgY2FzZSBvcF9qZ3JlYXRlcmVxOgorICAgICAgICBjYXNlIG9wX2pu
bGVzczoKKyAgICAgICAgY2FzZSBvcF9qbmxlc3NlcToKKyAgICAgICAgY2FzZSBvcF9qbmdyZWF0
ZXI6CisgICAgICAgIGNhc2Ugb3Bfam5ncmVhdGVyZXE6CisgICAgICAgICAgICBjdXJyZW50WzNd
LnUub3BlcmFuZCA9IGluc2VydGlvblNldC5hZGp1c3RPZmZzZXQoYnl0ZWNvZGVPZmZzZXQsIGJ5
dGVjb2RlT2Zmc2V0ICsgY3VycmVudFszXS51Lm9wZXJhbmQpOworICAgICAgICAgICAgYnJlYWs7
CisKKyAgICAgICAgY2FzZSBvcF9zd2l0Y2hfaW1tOgorICAgICAgICBjYXNlIG9wX3N3aXRjaF9j
aGFyOiB7CisgICAgICAgICAgICBhdXRvJiB0YWJsZSA9IHN3aXRjaEp1bXBUYWJsZShjdXJyZW50
WzFdLnUub3BlcmFuZCk7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSB0YWJsZS5icmFu
Y2hPZmZzZXRzLnNpemUoKTsgaS0tOykKKyAgICAgICAgICAgICAgICB0YWJsZS5icmFuY2hPZmZz
ZXRzW2ldID0gaW5zZXJ0aW9uU2V0LmFkanVzdE9mZnNldChieXRlY29kZU9mZnNldCwgYnl0ZWNv
ZGVPZmZzZXQgKyB0YWJsZS5icmFuY2hPZmZzZXRzW2ldKTsKKyAgICAgICAgICAgIGN1cnJlbnRb
Ml0udS5vcGVyYW5kID0gaW5zZXJ0aW9uU2V0LmFkanVzdE9mZnNldChieXRlY29kZU9mZnNldCwg
Ynl0ZWNvZGVPZmZzZXQgKyBjdXJyZW50WzJdLnUub3BlcmFuZCk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2Ugb3Bfc3dpdGNoX3N0cmluZzogeworICAgICAg
ICAgICAgYXV0byYgdGFibGUgPSBzdHJpbmdTd2l0Y2hKdW1wVGFibGUoY3VycmVudFsxXS51Lm9w
ZXJhbmQpOworICAgICAgICAgICAgYXV0byBpdGVyID0gdGFibGUub2Zmc2V0VGFibGUuYmVnaW4o
KTsKKyAgICAgICAgICAgIGF1dG8gZW5kID0gdGFibGUub2Zmc2V0VGFibGUuZW5kKCk7CisgICAg
ICAgICAgICBmb3IgKDsgaXRlciAhPSBlbmQ7ICsraXRlcikKKyAgICAgICAgICAgICAgICBpdGVy
LT52YWx1ZS5icmFuY2hPZmZzZXQgPSBpbnNlcnRpb25TZXQuYWRqdXN0T2Zmc2V0KGJ5dGVjb2Rl
T2Zmc2V0LCBieXRlY29kZU9mZnNldCArIGl0ZXItPnZhbHVlLmJyYW5jaE9mZnNldCk7CisgICAg
ICAgICAgICBjdXJyZW50WzJdLnUub3BlcmFuZCA9IGluc2VydGlvblNldC5hZGp1c3RPZmZzZXQo
Ynl0ZWNvZGVPZmZzZXQsIGJ5dGVjb2RlT2Zmc2V0ICsgY3VycmVudFsyXS51Lm9wZXJhbmQpOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBieXRlY29kZU9mZnNldCArPSBvcGNv
ZGVMZW5ndGgob3Bjb2RlSUQpOworICAgIH0KKworICAgIC8vIFRoZW4sIGV4Y2VwdGlvbiBoYW5k
bGVycyBzaG91bGQgYmUgYWRqdXN0ZWQuCisgICAgaWYgKG1fcmFyZURhdGEpIHsKKyAgICAgICAg
Zm9yIChVbmxpbmtlZEhhbmRsZXJJbmZvJiBoYW5kbGVyIDogbV9yYXJlRGF0YS0+bV9leGNlcHRp
b25IYW5kbGVycykgeworICAgICAgICAgICAgaGFuZGxlci50YXJnZXQgPSBpbnNlcnRpb25TZXQu
YWRqdXN0T2Zmc2V0KDAsIGhhbmRsZXIudGFyZ2V0KTsKKyAgICAgICAgICAgIGhhbmRsZXIuc3Rh
cnQgPSBpbnNlcnRpb25TZXQuYWRqdXN0T2Zmc2V0KDAsIGhhbmRsZXIuc3RhcnQpOworICAgICAg
ICAgICAgaGFuZGxlci5lbmQgPSBpbnNlcnRpb25TZXQuYWRqdXN0T2Zmc2V0KDAsIGhhbmRsZXIu
ZW5kKTsKKyAgICAgICAgfQorCisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9yYXJl
RGF0YS0+bV9vcFByb2ZpbGVDb250cm9sRmxvd0J5dGVjb2RlT2Zmc2V0cy5zaXplKCk7ICsraSkK
KyAgICAgICAgICAgIG1fcmFyZURhdGEtPm1fb3BQcm9maWxlQ29udHJvbEZsb3dCeXRlY29kZU9m
ZnNldHNbaV0gPSBpbnNlcnRpb25TZXQuYWRqdXN0T2Zmc2V0KDAsIG1fcmFyZURhdGEtPm1fb3BQ
cm9maWxlQ29udHJvbEZsb3dCeXRlY29kZU9mZnNldHNbaV0pOworCisgICAgICAgIGlmICghbV9y
YXJlRGF0YS0+bV90eXBlUHJvZmlsZXJJbmZvTWFwLmlzRW1wdHkoKSkgeworICAgICAgICAgICAg
SGFzaE1hcDx1bnNpZ25lZCwgUmFyZURhdGE6OlR5cGVQcm9maWxlckV4cHJlc3Npb25SYW5nZT4g
YWRqdXN0ZWRUeXBlUHJvZmlsZXJJbmZvTWFwOworICAgICAgICAgICAgZm9yIChhdXRvJiBlbnRy
eSA6IG1fcmFyZURhdGEtPm1fdHlwZVByb2ZpbGVySW5mb01hcCkKKyAgICAgICAgICAgICAgICBh
ZGp1c3RlZFR5cGVQcm9maWxlckluZm9NYXAuc2V0KGluc2VydGlvblNldC5hZGp1c3RPZmZzZXQo
MCwgZW50cnkua2V5KSwgZW50cnkudmFsdWUpOworICAgICAgICAgICAgbV9yYXJlRGF0YS0+bV90
eXBlUHJvZmlsZXJJbmZvTWFwLnN3YXAoYWRqdXN0ZWRUeXBlUHJvZmlsZXJJbmZvTWFwKTsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9wcm9wZXJ0eUFj
Y2Vzc0luc3RydWN0aW9ucy5zaXplKCk7ICsraSkKKyAgICAgICAgbV9wcm9wZXJ0eUFjY2Vzc0lu
c3RydWN0aW9uc1tpXSA9IGluc2VydGlvblNldC5hZGp1c3RPZmZzZXQoMCwgbV9wcm9wZXJ0eUFj
Y2Vzc0luc3RydWN0aW9uc1tpXSk7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZXhw
cmVzc2lvbkluZm8uc2l6ZSgpOyArK2kpCisgICAgICAgIG1fZXhwcmVzc2lvbkluZm9baV0uaW5z
dHJ1Y3Rpb25PZmZzZXQgPSBpbnNlcnRpb25TZXQuYWRqdXN0T2Zmc2V0KDAsIG1fZXhwcmVzc2lv
bkluZm9baV0uaW5zdHJ1Y3Rpb25PZmZzZXQpOworCisgICAgLy8gVGhlbiwgbW9kaWZ5IHRoZSB1
bmxpbmtlZCBpbnN0cnVjdGlvbnMuCisgICAgaW5zZXJ0aW9uU2V0LmFwcGx5TW9kaWZpY2F0aW9u
KCk7CisKKyAgICAvLyBBbmQgcmVjb21wdXRlIHRoZSBqdW1wIHRhcmdldCBiYXNlZCBvbiB0aGUg
bW9kaWZpZWQgdW5saW5rZWQgaW5zdHJ1Y3Rpb25zLgorICAgIG1fanVtcFRhcmdldHMuY2xlYXIo
KTsKKyAgICByZWNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHModGhpcywgZ3JhcGguaW5zdHJ1Y3Rp
b25zKCkuYmVnaW4oKSwgZ3JhcGguaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpLCBtX2p1bXBUYXJnZXRz
KTsKK30KKwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
VW5saW5rZWRDb2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Vbmxp
bmtlZENvZGVCbG9jay5oCmluZGV4IGI0ZDJjZjQ4ZTQ2MzhkMzczYjE2NzIwZjc2ZTNjZmY5N2Rm
MDE1MGQuLjcyZDE2OTYxMWFhOTM1MTc4YzQ4MTBlZWQyZDU5YTgzMThmZjYxYTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCkBA
IC00NSw2ICs0NSw4IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCitjbGFzcyBCeXRlY29kZVJld3Jp
dGVyOworY2xhc3MgRGVidWdnZXI7CiBjbGFzcyBGdW5jdGlvbk1ldGFkYXRhTm9kZTsKIGNsYXNz
IEZ1bmN0aW9uRXhlY3V0YWJsZTsKIGNsYXNzIEpTU2NvcGU7CkBAIC02NSw3ICs2NywxMSBAQCB0
eXBlZGVmIHVuc2lnbmVkIFVubGlua2VkT2JqZWN0QWxsb2NhdGlvblByb2ZpbGU7CiB0eXBlZGVm
IHVuc2lnbmVkIFVubGlua2VkTExJbnRDYWxsTGlua0luZm87CiAKIHN0cnVjdCBVbmxpbmtlZFN0
cmluZ0p1bXBUYWJsZSB7Ci0gICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxTdHJpbmdJbXBsPiwg
aW50MzJfdD4gU3RyaW5nT2Zmc2V0VGFibGU7CisgICAgc3RydWN0IE9mZnNldExvY2F0aW9uIHsK
KyAgICAgICAgaW50MzJfdCBicmFuY2hPZmZzZXQ7CisgICAgfTsKKworICAgIHR5cGVkZWYgSGFz
aE1hcDxSZWZQdHI8U3RyaW5nSW1wbD4sIE9mZnNldExvY2F0aW9uPiBTdHJpbmdPZmZzZXRUYWJs
ZTsKICAgICBTdHJpbmdPZmZzZXRUYWJsZSBvZmZzZXRUYWJsZTsKIAogICAgIGlubGluZSBpbnQz
Ml90IG9mZnNldEZvclZhbHVlKFN0cmluZ0ltcGwqIHZhbHVlLCBpbnQzMl90IGRlZmF1bHRPZmZz
ZXQpCkBAIC03NCw3ICs4MCw3IEBAIHN0cnVjdCBVbmxpbmtlZFN0cmluZ0p1bXBUYWJsZSB7CiAg
ICAgICAgIFN0cmluZ09mZnNldFRhYmxlOjpjb25zdF9pdGVyYXRvciBsb2MgPSBvZmZzZXRUYWJs
ZS5maW5kKHZhbHVlKTsKICAgICAgICAgaWYgKGxvYyA9PSBlbmQpCiAgICAgICAgICAgICByZXR1
cm4gZGVmYXVsdE9mZnNldDsKLSAgICAgICAgcmV0dXJuIGxvYy0+dmFsdWU7CisgICAgICAgIHJl
dHVybiBsb2MtPnZhbHVlLmJyYW5jaE9mZnNldDsKICAgICB9CiAKIH07CkBAIC0xMDIsNiArMTA4
LDggQEAgc3RydWN0IFVubGlua2VkSW5zdHJ1Y3Rpb24gewogICAgIH0gdTsKIH07CiAKK2NsYXNz
IEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uOworCiBjbGFzcyBVbmxpbmtlZENvZGVCbG9jayA6
IHB1YmxpYyBKU0NlbGwgewogcHVibGljOgogICAgIHR5cGVkZWYgSlNDZWxsIEJhc2U7CkBAIC0x
MTEsNiArMTE5LDkgQEAgY2xhc3MgVW5saW5rZWRDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsK
IAogICAgIGVudW0geyBDYWxsRnVuY3Rpb24sIEFwcGx5RnVuY3Rpb24gfTsKIAorICAgIHR5cGVk
ZWYgVW5saW5rZWRJbnN0cnVjdGlvbiBJbnN0cnVjdGlvbjsKKyAgICB0eXBlZGVmIFZlY3RvcjxV
bmxpbmtlZEluc3RydWN0aW9uLCAwLCBVbnNhZmVWZWN0b3JPdmVyZmxvdz4gVW5wYWNrZWRJbnN0
cnVjdGlvbnM7CisKICAgICBib29sIGlzQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2lz
Q29uc3RydWN0b3I7IH0KICAgICBib29sIGlzU3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1f
aXNTdHJpY3RNb2RlOyB9CiAgICAgYm9vbCB1c2VzRXZhbCgpIGNvbnN0IHsgcmV0dXJuIG1fdXNl
c0V2YWw7IH0KQEAgLTIwMCw2ICsyMTEsOSBAQCBjbGFzcyBVbmxpbmtlZENvZGVCbG9jayA6IHB1
YmxpYyBKU0NlbGwgewogICAgIHVuc2lnbmVkIGp1bXBUYXJnZXQoaW50IGluZGV4KSBjb25zdCB7
IHJldHVybiBtX2p1bXBUYXJnZXRzW2luZGV4XTsgfQogICAgIHVuc2lnbmVkIGxhc3RKdW1wVGFy
Z2V0KCkgY29uc3QgeyByZXR1cm4gbV9qdW1wVGFyZ2V0cy5sYXN0KCk7IH0KIAorICAgIFVubGlu
a2VkSGFuZGxlckluZm8qIGhhbmRsZXJGb3JCeXRlY29kZU9mZnNldCh1bnNpZ25lZCBieXRlY29k
ZU9mZnNldCwgUmVxdWlyZWRIYW5kbGVyID0gUmVxdWlyZWRIYW5kbGVyOjpBbnlIYW5kbGVyKTsK
KyAgICBVbmxpbmtlZEhhbmRsZXJJbmZvKiBoYW5kbGVyRm9ySW5kZXgodW5zaWduZWQsIFJlcXVp
cmVkSGFuZGxlciA9IFJlcXVpcmVkSGFuZGxlcjo6QW55SGFuZGxlcik7CisKICAgICBib29sIGlz
QnVpbHRpbkZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc0J1aWx0aW5GdW5jdGlvbjsgfQog
CiAgICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCgpIGNvbnN0IHsgcmV0dXJuIHN0
YXRpY19jYXN0PENvbnN0cnVjdG9yS2luZD4obV9jb25zdHJ1Y3RvcktpbmQpOyB9CkBAIC0yMzAs
NiArMjQ0LDggQEAgY2xhc3MgVW5saW5rZWRDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAg
ICB2b2lkIHNldEluc3RydWN0aW9ucyhzdGQ6OnVuaXF1ZV9wdHI8VW5saW5rZWRJbnN0cnVjdGlv
blN0cmVhbT4pOwogICAgIGNvbnN0IFVubGlua2VkSW5zdHJ1Y3Rpb25TdHJlYW0mIGluc3RydWN0
aW9ucygpIGNvbnN0OwogCisgICAgaW50IG51bUNhbGxlZUxvY2FscygpIGNvbnN0IHsgcmV0dXJu
IG1fbnVtQ2FsbGVlTG9jYWxzOyB9CisKICAgICBpbnQgbV9udW1WYXJzOwogICAgIGludCBtX251
bUNhcHR1cmVkVmFyczsKICAgICBpbnQgbV9udW1DYWxsZWVMb2NhbHM7CkBAIC0zODEsNiArMzk3
LDggQEAgY2xhc3MgVW5saW5rZWRDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICB9CiAK
IHByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIEJ5dGVjb2RlUmV3cml0ZXI7CisgICAgdm9pZCBh
cHBseU1vZGlmaWNhdGlvbihCeXRlY29kZVJld3JpdGVyJik7CiAKICAgICB2b2lkIGNyZWF0ZVJh
cmVEYXRhSWZOZWNlc3NhcnkoKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9WaXJ0dWFsUmVnaXN0ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9WaXJ0dWFsUmVnaXN0ZXIuaAppbmRleCBkM2RmNDA5NTdiNTE3NTY4ZTNhZWZiZTNh
MWE2MDlmZDg3OGJhYWMzLi5kYWY1MDlmNmM3ZDExNWU0NWJjYjEwN2M2N2QzZDM4ZDgwNGYyODk0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmlydHVhbFJlZ2lz
dGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZpcnR1YWxSZWdpc3Rl
ci5oCkBAIC0yNiw4ICsyNiw4IEBACiAjaWZuZGVmIFZpcnR1YWxSZWdpc3Rlcl9oCiAjZGVmaW5l
IFZpcnR1YWxSZWdpc3Rlcl9oCiAKKyNpbmNsdWRlICJCeXRlY29kZUNvbnZlbnRpb25zLmgiCiAj
aW5jbHVkZSAiQ2FsbEZyYW1lLmgiCi0KICNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KIAog
bmFtZXNwYWNlIEpTQyB7CkBAIC0xMDMsNyArMTAzLDcgQEAgY2xhc3MgVmlydHVhbFJlZ2lzdGVy
IHsKIAogcHJpdmF0ZToKICAgICBzdGF0aWMgY29uc3QgaW50IHNfaW52YWxpZFZpcnR1YWxSZWdp
c3RlciA9IDB4M2ZmZmZmZmY7Ci0gICAgc3RhdGljIGNvbnN0IGludCBzX2ZpcnN0Q29uc3RhbnRS
ZWdpc3RlckluZGV4ID0gMHg0MDAwMDAwMDsKKyAgICBzdGF0aWMgY29uc3QgaW50IHNfZmlyc3RD
b25zdGFudFJlZ2lzdGVySW5kZXggPSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleDsKIAogICAg
IHN0YXRpYyBpbnQgbG9jYWxUb09wZXJhbmQoaW50IGxvY2FsKSB7IHJldHVybiAtMSAtIGxvY2Fs
OyB9CiAgICAgc3RhdGljIGludCBvcGVyYW5kVG9Mb2NhbChpbnQgb3BlcmFuZCkgeyByZXR1cm4g
LTEgLSBvcGVyYW5kOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IDMxMmQ4OWY3YWRjNzNmMDdkYzUx
NzliNzVlNTc1YzU1OTAyNjZkYjguLjUzM2VmMDg5OGI3N2RiZGIzNmU0YTI1M2QwNzRkZDJkNDcy
MjAxOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0
ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAKICNpbmNsdWRlICJB
cml0aFByb2ZpbGUuaCIKICNpbmNsdWRlICJCdWlsdGluRXhlY3V0YWJsZXMuaCIKKyNpbmNsdWRl
ICJCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5oIgogI2luY2x1ZGUgIkJ5dGVjb2RlTGl2ZW5l
c3NBbmFseXNpcy5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSlNGdW5j
dGlvbi5oIgpAQCAtMTU1LDYgKzE1NiwxMCBAQCBQYXJzZXJFcnJvciBCeXRlY29kZUdlbmVyYXRv
cjo6Z2VuZXJhdGUoKQogICAgICAgICBtX2NvZGVCbG9jay0+YWRkRXhjZXB0aW9uSGFuZGxlcihp
bmZvKTsKICAgICB9CiAgICAgCisKKyAgICBpZiAobV9jb2RlQmxvY2stPnBhcnNlTW9kZSgpID09
IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yQm9keU1vZGUpCisgICAgICAgIHBlcmZvcm1HZW5l
cmF0b3JpZmljYXRpb24obV9jb2RlQmxvY2suZ2V0KCksIG1faW5zdHJ1Y3Rpb25zLCBtX2dlbmVy
YXRvckZyYW1lU3ltYm9sVGFibGUuZ2V0KCksIG1fZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZUlu
ZGV4KTsKKwogICAgIG1fY29kZUJsb2NrLT5zZXRJbnN0cnVjdGlvbnMoc3RkOjptYWtlX3VuaXF1
ZTxVbmxpbmtlZEluc3RydWN0aW9uU3RyZWFtPihtX2luc3RydWN0aW9ucykpOwogCiAgICAgbV9j
b2RlQmxvY2stPnNocmlua1RvRml0KCk7CkBAIC0yNjIsMTAgKzI2NywxNCBAQCBCeXRlY29kZUdl
bmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9u
Tm9kZSwgVW5saW5rZQogICAgIGJvb2wgc2hvdWxkQ2FwdHVyZUFsbE9mVGhlVGhpbmdzID0gbV9z
aG91bGRFbWl0RGVidWdIb29rcyB8fCBjb2RlQmxvY2stPnVzZXNFdmFsKCk7CiAgICAgYm9vbCBu
ZWVkc0FyZ3VtZW50cyA9IChmdW5jdGlvbk5vZGUtPnVzZXNBcmd1bWVudHMoKSB8fCBjb2RlQmxv
Y2stPnVzZXNFdmFsKCkgfHwgKGZ1bmN0aW9uTm9kZS0+dXNlc0Fycm93RnVuY3Rpb24oKSAmJiAh
Y29kZUJsb2NrLT5pc0Fycm93RnVuY3Rpb24oKSAmJiBpc0FyZ3VtZW50c1VzZWRJbklubmVyQXJy
b3dGdW5jdGlvbigpKSk7CiAKLSAgICAvLyBHZW5lcmF0b3IgbmV2ZXIgcHJvdmlkZXMgImFyZ3Vt
ZW50cyIuICJhcmd1bWVudHMiIHJlZmVyZW5jZSB3aWxsIGJlIHJlc29sdmVkIGluIGFuIHVwcGVy
IGdlbmVyYXRvciBmdW5jdGlvbiBzY29wZS4KLSAgICBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBh
cnNlTW9kZTo6R2VuZXJhdG9yQm9keU1vZGUpCisgICAgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQ
YXJzZU1vZGU6OkdlbmVyYXRvckJvZHlNb2RlKSB7CisgICAgICAgIC8vIEdlbmVyYXRvciBuZXZl
ciBwcm92aWRlcyAiYXJndW1lbnRzIi4gImFyZ3VtZW50cyIgcmVmZXJlbmNlIHdpbGwgYmUgcmVz
b2x2ZWQgaW4gYW4gdXBwZXIgZ2VuZXJhdG9yIGZ1bmN0aW9uIHNjb3BlLgogICAgICAgICBuZWVk
c0FyZ3VtZW50cyA9IGZhbHNlOwogCisgICAgICAgIC8vIEdlbmVyYXRvciB1c2VzIHRoZSB2YXIg
c2NvcGUgdG8gc2F2ZSBhbmQgcmVzdW1lIGl0cyB2YXJpYWJsZXMuIFNvIHRoZSBsZXhpY2FsIHNj
b3BlIGlzIGFsd2F5cyBpbnN0YW50aWF0ZWQuCisgICAgICAgIHNob3VsZENhcHR1cmVTb21lT2ZU
aGVUaGluZ3MgPSB0cnVlOworICAgIH0KKwogICAgIGlmIChwYXJzZU1vZGUgPT0gU291cmNlUGFy
c2VNb2RlOjpHZW5lcmF0b3JXcmFwcGVyRnVuY3Rpb25Nb2RlICYmIG5lZWRzQXJndW1lbnRzKSB7
CiAgICAgICAgIC8vIEdlbmVyYXRvciBkb2VzIG5vdCBwcm92aWRlICJhcmd1bWVudHMiLiBJbnN0
ZWFkLCB3cmFwcGluZyBHZW5lcmF0b3JGdW5jdGlvbiBwcm92aWRlcyAiYXJndW1lbnRzIi4KICAg
ICAgICAgLy8gVGhpcyBpcyBiZWNhdXNlIGFyZ3VtZW50cyBvZiBhIGdlbmVyYXRvciBzaG91bGQg
YmUgZXZhbHVhdGVkIGJlZm9yZSBzdGFydGluZyBpdC4KQEAgLTI3NCw3ICsyODMsNyBAQCBCeXRl
Y29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1
bmN0aW9uTm9kZSwgVW5saW5rZQogICAgICAgICAvLyAgICBmdW5jdGlvbiAqZ2VuKGEsIGIgPSBo
ZWxsbygpKQogICAgICAgICAvLyAgICB7CiAgICAgICAgIC8vICAgICAgICByZXR1cm4gewotICAg
ICAgICAvLyAgICAgICAgICAgIEBnZW5lcmF0b3JOZXh0OiBmdW5jdGlvbiAoQGdlbmVyYXRvciwg
QGdlbmVyYXRvclN0YXRlLCBAZ2VuZXJhdG9yVmFsdWUsIEBnZW5lcmF0b3JSZXN1bWVNb2RlKQor
ICAgICAgICAvLyAgICAgICAgICAgIEBnZW5lcmF0b3JOZXh0OiBmdW5jdGlvbiAoQGdlbmVyYXRv
ciwgQGdlbmVyYXRvclN0YXRlLCBAZ2VuZXJhdG9yVmFsdWUsIEBnZW5lcmF0b3JSZXN1bWVNb2Rl
LCBAZ2VuZXJhdG9yRnJhbWUpCiAgICAgICAgIC8vICAgICAgICAgICAgewogICAgICAgICAvLyAg
ICAgICAgICAgICAgICBhcmd1bWVudHM7ICAvLyBUaGlzIGBhcmd1bWVudHNgIHNob3VsZCByZWZl
cmVuY2UgdG8gdGhlIGdlbidzIGFyZ3VtZW50cy4KICAgICAgICAgLy8gICAgICAgICAgICAgICAg
Li4uCkBAIC0zMDMsMjggKzMxMiwxNyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5l
cmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAgICAg
ICByZXR1cm4gY2FwdHVyZXModWlkKSA/IFZhcktpbmQ6OlNjb3BlIDogVmFyS2luZDo6U3RhY2s7
CiAgICAgfTsKIAotICAgIGVtaXRFbnRlcigpOwotCi0gICAgYWxsb2NhdGVBbmRFbWl0U2NvcGUo
KTsKLQogICAgIG1fY2FsbGVlUmVnaXN0ZXIuc2V0SW5kZXgoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVl
KTsKIAogICAgIGluaXRpYWxpemVQYXJhbWV0ZXJzKHBhcmFtZXRlcnMpOwogICAgIEFTU0VSVCgh
KGlzU2ltcGxlUGFyYW1ldGVyTGlzdCAmJiBtX3Jlc3RQYXJhbWV0ZXIpKTsKIAotICAgIC8vIEJl
Zm9yZSBlbWl0dGluZyBhIHNjb3BlIGNyZWF0aW9uLCBlbWl0IGEgZ2VuZXJhdG9yIHByb2xvZ3Vl
IHRoYXQgY29udGFpbnMganVtcCBiYXNlZCBvbiBhIGdlbmVyYXRvcidzIHN0YXRlLgotICAgIGlm
IChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JCb2R5TW9kZSkgewotICAg
ICAgICBtX2dlbmVyYXRvclJlZ2lzdGVyID0gJm1fcGFyYW1ldGVyc1sxXTsKLQotICAgICAgICAv
LyBKdW1wIHdpdGggc3dpdGNoX2ltbSBiYXNlZCBvbiBAZ2VuZXJhdG9yU3RhdGUuIFdlIGRvbid0
IHRha2UgdGhlIGNvcm91dGluZSBzdHlsZWQgZ2VuZXJhdG9yIGltcGxlbWVudGF0aW9uLgotICAg
ICAgICAvLyBXaGVuIGNhbGxpbmcgYG5leHQoKWAsIHdlIHdvdWxkIGxpa2UgdG8gZW50ZXIgdGhl
IHNhbWUgcHJvbG9ndWUgaW5zdGVhZCBvZiBqdW1waW5nIGJhc2VkIG9uIHRoZSBzYXZlZCBpbnN0
cnVjdGlvbiBwb2ludGVyLgotICAgICAgICAvLyBJdCdzIHN1aXRhbGUgZm9yIGlubGluaW5nLCBi
ZWNhdXNlIGl0IGp1c3QgaW5saW5lcyBvbmUgYG5leHRgIGZ1bmN0aW9uIGltcGxlbWVudGF0aW9u
LgorICAgIGVtaXRFbnRlcigpOwogCi0gICAgICAgIGJlZ2luR2VuZXJhdG9yKGdlbmVyYXRvclN0
YXRlUmVnaXN0ZXIoKSk7CisgICAgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6Okdl
bmVyYXRvckJvZHlNb2RlKQorICAgICAgICBtX2dlbmVyYXRvclJlZ2lzdGVyID0gJm1fcGFyYW1l
dGVyc1sxXTsKIAotICAgICAgICAvLyBJbml0aWFsIHN0YXRlLgotICAgICAgICBlbWl0R2VuZXJh
dG9yU3RhdGVMYWJlbCgpOwotICAgIH0KKyAgICBhbGxvY2F0ZUFuZEVtaXRTY29wZSgpOwogCiAg
ICAgaWYgKGZ1bmN0aW9uTmFtZUlzSW5TY29wZShmdW5jdGlvbk5vZGUtPmlkZW50KCksIGZ1bmN0
aW9uTm9kZS0+ZnVuY3Rpb25Nb2RlKCkpKSB7CiAgICAgICAgIEFTU0VSVChwYXJzZU1vZGUgIT0g
U291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JCb2R5TW9kZSk7CkBAIC02NDEsNiArNjM5LDE2IEBA
IEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9k
ZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtlCiAgICAgICAgICAgICBlbWl0TG9hZE5ld1RhcmdldEZy
b21BcnJvd0Z1bmN0aW9uTGV4aWNhbEVudmlyb25tZW50KCk7CiAgICAgfQogICAgIAorICAgIC8v
IFNldCB1cCB0aGUgbGV4aWNhbCBlbnZpcm9ubWVudCBzY29wZSBhcyB0aGUgZ2VuZXJhdG9yIGZy
YW1lLiBXZSBzdG9yZSB0aGUgc2F2ZWQgYW5kIHJlc3VtZWQgZ2VuZXJhdG9yIHJlZ2lzdGVycyBp
bnRvIHRoaXMgc2NvcGUgd2l0aCB0aGUgc3ltYm9sIGtleXMuCisgICAgLy8gU2luY2UgdGhleSBh
cmUgc3ltYm9sIGtleWVkLCB0aGVzZSB2YXJpYWJsZXMgY2Fubm90IGJlIHJlYWNoZWQgZnJvbSB0
aGUgdXN1YWwgY29kZS4KKyAgICBpZiAoU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JCb2R5TW9k
ZSA9PSBwYXJzZU1vZGUpIHsKKyAgICAgICAgQVNTRVJUKG1fbGV4aWNhbEVudmlyb25tZW50UmVn
aXN0ZXIpOworICAgICAgICBtX2dlbmVyYXRvckZyYW1lU3ltYm9sVGFibGUuc2V0KCptX3ZtLCBm
dW5jdGlvblN5bWJvbFRhYmxlKTsKKyAgICAgICAgbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxl
SW5kZXggPSBzeW1ib2xUYWJsZUNvbnN0YW50SW5kZXg7CisgICAgICAgIGVtaXRNb3ZlKGdlbmVy
YXRvckZyYW1lUmVnaXN0ZXIoKSwgbV9sZXhpY2FsRW52aXJvbm1lbnRSZWdpc3Rlcik7CisgICAg
ICAgIGVtaXRQdXRCeUlkKGdlbmVyYXRvclJlZ2lzdGVyKCksIHByb3BlcnR5TmFtZXMoKS5idWls
dGluTmFtZXMoKS5nZW5lcmF0b3JGcmFtZVByaXZhdGVOYW1lKCksIGdlbmVyYXRvckZyYW1lUmVn
aXN0ZXIoKSk7CisgICAgfQorCiAgICAgYm9vbCBzaG91bGRJbml0aWFsaXplQmxvY2tTY29wZWRG
dW5jdGlvbnMgPSBmYWxzZTsgLy8gV2UgZ2VuZXJhdGUgdG9wLWxldmVsIGZ1bmN0aW9uIGRlY2xh
cmF0aW9ucyBpbiA6OmdlbmVyYXRlKCkuCiAgICAgcHVzaExleGljYWxTY29wZShtX3Njb3BlTm9k
ZSwgVERaQ2hlY2tPcHRpbWl6YXRpb246Ok9wdGltaXplLCBOZXN0ZWRTY29wZVR5cGU6OklzTm90
TmVzdGVkLCBudWxscHRyLCBzaG91bGRJbml0aWFsaXplQmxvY2tTY29wZWRGdW5jdGlvbnMpOwog
fQpAQCAtMzY3Miw4ICszNjgwLDcgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENvbXBs
ZXhQb3BTY29wZXMoUmVnaXN0ZXJJRCogc2NvcGUsIENvbnRyb2xGbG93Q29udGUKICAgICAgICAg
ICAgIGlmIChmbGlwVHJpZXMpIHsKICAgICAgICAgICAgICAgICB3aGlsZSAobV90cnlDb250ZXh0
U3RhY2suc2l6ZSgpICE9IGZpbmFsbHlDb250ZXh0LnRyeUNvbnRleHRTdGFja1NpemUpIHsKICAg
ICAgICAgICAgICAgICAgICAgQVNTRVJUKG1fdHJ5Q29udGV4dFN0YWNrLnNpemUoKSA+IGZpbmFs
bHlDb250ZXh0LnRyeUNvbnRleHRTdGFja1NpemUpOwotICAgICAgICAgICAgICAgICAgICBUcnlD
b250ZXh0IGNvbnRleHQgPSBtX3RyeUNvbnRleHRTdGFjay5sYXN0KCk7Ci0gICAgICAgICAgICAg
ICAgICAgIG1fdHJ5Q29udGV4dFN0YWNrLnJlbW92ZUxhc3QoKTsKKyAgICAgICAgICAgICAgICAg
ICAgVHJ5Q29udGV4dCBjb250ZXh0ID0gbV90cnlDb250ZXh0U3RhY2sudGFrZUxhc3QoKTsKICAg
ICAgICAgICAgICAgICAgICAgVHJ5UmFuZ2UgcmFuZ2U7CiAgICAgICAgICAgICAgICAgICAgIHJh
bmdlLnN0YXJ0ID0gY29udGV4dC5zdGFydDsKICAgICAgICAgICAgICAgICAgICAgcmFuZ2UuZW5k
ID0gYmVmb3JlRmluYWxseTsKQEAgLTM5NTcsNyArMzk2NCw3IEBAIHN0YXRpYyB2b2lkIHByZXBh
cmVKdW1wVGFibGVGb3JTdHJpbmdTd2l0Y2goVW5saW5rZWRTdHJpbmdKdW1wVGFibGUmIGp1bXBU
YWJsZSwKICAgICAgICAgCiAgICAgICAgIEFTU0VSVChub2Rlc1tpXS0+aXNTdHJpbmcoKSk7CiAg
ICAgICAgIFN0cmluZ0ltcGwqIGNsYXVzZSA9IHN0YXRpY19jYXN0PFN0cmluZ05vZGUqPihub2Rl
c1tpXSktPnZhbHVlKCkuaW1wbCgpOwotICAgICAgICBqdW1wVGFibGUub2Zmc2V0VGFibGUuYWRk
KGNsYXVzZSwgbGFiZWxzW2ldLT5iaW5kKHN3aXRjaEFkZHJlc3MsIHN3aXRjaEFkZHJlc3MgKyAz
KSk7CisgICAgICAgIGp1bXBUYWJsZS5vZmZzZXRUYWJsZS5hZGQoY2xhdXNlLCBVbmxpbmtlZFN0
cmluZ0p1bXBUYWJsZTo6T2Zmc2V0TG9jYXRpb24geyBsYWJlbHNbaV0tPmJpbmQoc3dpdGNoQWRk
cmVzcywgc3dpdGNoQWRkcmVzcyArIDMpIH0pOwogICAgIH0KIH0KIApAQCAtNDQ1OSwzMSArNDQ2
NiwzMyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVxdWlyZU9iamVjdENvZXJjaWJs
ZShSZWdpc3RlcklEKiB2YWx1ZSwgY29uc3QgU3RyaQogdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdFlpZWxkUG9pbnQoUmVnaXN0ZXJJRCogYXJndW1lbnQpCiB7CiAgICAgUmVmUHRyPExhYmVs
PiBtZXJnZVBvaW50ID0gbmV3TGFiZWwoKTsKLSAgICBzaXplX3QgeWllbGRQb2ludEluZGV4ID0g
bV9nZW5lcmF0b3JSZXN1bWVMYWJlbHMuc2l6ZSgpOwotICAgIGVtaXRHZW5lcmF0b3JTdGF0ZUNo
YW5nZSh5aWVsZFBvaW50SW5kZXgpOwotICAgIC8vIEZpcnN0IHlpZWxkIHBvaW50IGlzIHVzZWQg
Zm9yIGluaXRpYWwgc2VxdWVuY2UuCi0gICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4
ID0geWllbGRQb2ludEluZGV4IC0gMTsKLSAgICBlbWl0U2F2ZShtZXJnZVBvaW50LmdldCgpLCBs
aXZlQ2FsbGVlTG9jYWxzSW5kZXgpOwotICAgIGVtaXRSZXR1cm4oYXJndW1lbnQpOwotICAgIGVt
aXRSZXN1bWUobWVyZ2VQb2ludC5nZXQoKSwgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4KTsKLX0KKyAg
ICB1bnNpZ25lZCB5aWVsZFBvaW50SW5kZXggPSBtX3lpZWxkUG9pbnRzKys7CisgICAgZW1pdEdl
bmVyYXRvclN0YXRlQ2hhbmdlKHlpZWxkUG9pbnRJbmRleCArIDEpOworCisgICAgLy8gU3BsaXQg
dGhlIHRyeSByYW5nZSBoZXJlLgorICAgIFJlZlB0cjxMYWJlbD4gc2F2ZVBvaW50ID0gZW1pdExh
YmVsKG5ld0xhYmVsKCkuZ2V0KCkpOworICAgIGZvciAodW5zaWduZWQgaSA9IG1fdHJ5Q29udGV4
dFN0YWNrLnNpemUoKTsgaS0tOykgeworICAgICAgICBUcnlDb250ZXh0JiBjb250ZXh0ID0gbV90
cnlDb250ZXh0U3RhY2tbaV07CisgICAgICAgIFRyeVJhbmdlIHJhbmdlOworICAgICAgICByYW5n
ZS5zdGFydCA9IGNvbnRleHQuc3RhcnQ7CisgICAgICAgIHJhbmdlLmVuZCA9IHNhdmVQb2ludDsK
KyAgICAgICAgcmFuZ2UudHJ5RGF0YSA9IGNvbnRleHQudHJ5RGF0YTsKKyAgICAgICAgbV90cnlS
YW5nZXMuYXBwZW5kKHJhbmdlKTsKKworICAgICAgICAvLyBUcnkgcmFuZ2Ugd2lsbCBiZSByZXN0
YXJlZCBhdCB0aGUgbWVyZ2UgcG9pbnQuCisgICAgICAgIGNvbnRleHQuc3RhcnQgPSBtZXJnZVBv
aW50OworICAgIH0KKyAgICBWZWN0b3I8VHJ5Q29udGV4dD4gc2F2ZWRUcnlDb250ZXh0U3RhY2s7
CisgICAgbV90cnlDb250ZXh0U3RhY2suc3dhcChzYXZlZFRyeUNvbnRleHRTdGFjayk7CiAKLXZv
aWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRTYXZlKExhYmVsKiBtZXJnZVBvaW50LCB1bnNpZ25l
ZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpCi17Ci0gICAgc2l6ZV90IGJlZ2luID0gaW5zdHJ1Y3Rp
b25zKCkuc2l6ZSgpOwotICAgIGVtaXRPcGNvZGUob3Bfc2F2ZSk7Ci0gICAgaW5zdHJ1Y3Rpb25z
KCkuYXBwZW5kKG1fZ2VuZXJhdG9yUmVnaXN0ZXItPmluZGV4KCkpOwotICAgIGluc3RydWN0aW9u
cygpLmFwcGVuZChsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpOwotICAgIGluc3RydWN0aW9ucygpLmFw
cGVuZChtZXJnZVBvaW50LT5iaW5kKGJlZ2luLCBpbnN0cnVjdGlvbnMoKS5zaXplKCkpKTsKLX0K
KyAgICBlbWl0T3Bjb2RlKG9wX3lpZWxkKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZ2Vu
ZXJhdG9yRnJhbWVSZWdpc3RlcigpLT5pbmRleCgpKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBl
bmQoeWllbGRQb2ludEluZGV4KTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYXJndW1lbnQt
PmluZGV4KCkpOwogCi12b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzdW1lKExhYmVsKiBt
ZXJnZVBvaW50LCB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpCi17Ci0gICAgZW1pdEdl
bmVyYXRvclN0YXRlTGFiZWwoKTsKLSAgICBlbWl0T3Bjb2RlKG9wX3Jlc3VtZSk7Ci0gICAgaW5z
dHJ1Y3Rpb25zKCkuYXBwZW5kKG1fZ2VuZXJhdG9yUmVnaXN0ZXItPmluZGV4KCkpOwotICAgIGlu
c3RydWN0aW9ucygpLmFwcGVuZChsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpOwotICAgIGVtaXRMYWJl
bChtZXJnZVBvaW50KTsKKyAgICAvLyBSZXN0b3JlIHRoZSB0cnkgY29udGV4dHMsIHdoaWNoIHN0
YXJ0IG9mZnNldCBpcyB1cGRhdGVkIHRvIHRoZSBtZXJnZSBwb2ludC4KKyAgICBtX3RyeUNvbnRl
eHRTdGFjay5zd2FwKHNhdmVkVHJ5Q29udGV4dFN0YWNrKTsKKyAgICBlbWl0TGFiZWwobWVyZ2VQ
b2ludC5nZXQoKSk7CiB9CiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0WWll
bGQoUmVnaXN0ZXJJRCogYXJndW1lbnQpCkBAIC00NjQwLDM5ICs0NjQ5LDYgQEAgdm9pZCBCeXRl
Y29kZUdlbmVyYXRvcjo6ZW1pdEdlbmVyYXRvclN0YXRlQ2hhbmdlKGludDMyX3Qgc3RhdGUpCiAg
ICAgZW1pdFB1dEJ5SWQoZ2VuZXJhdG9yUmVnaXN0ZXIoKSwgcHJvcGVydHlOYW1lcygpLmJ1aWx0
aW5OYW1lcygpLmdlbmVyYXRvclN0YXRlUHJpdmF0ZU5hbWUoKSwgY29tcGxldGVkU3RhdGUpOwog
fQogCi12b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2VuZXJhdG9yU3RhdGVMYWJlbCgpCi17
Ci0gICAgUmVmUHRyPExhYmVsPiBsYWJlbCA9IG5ld0xhYmVsKCk7Ci0gICAgbV9nZW5lcmF0b3JS
ZXN1bWVMYWJlbHMuYXBwZW5kKGxhYmVsLmdldCgpKTsKLSAgICBlbWl0TGFiZWwobGFiZWwuZ2V0
KCkpOwotfQotCi12b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpiZWdpbkdlbmVyYXRvcihSZWdpc3Rl
cklEKiBzdGF0ZSkKLXsKLSAgICBiZWdpblN3aXRjaChzdGF0ZSwgU3dpdGNoSW5mbzo6U3dpdGNo
SW1tZWRpYXRlKTsKLX0KLQotdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW5kR2VuZXJhdG9yKExh
YmVsKiBkZWZhdWx0TGFiZWwpCi17Ci0gICAgU3dpdGNoSW5mbyBzd2l0Y2hJbmZvID0gbV9zd2l0
Y2hDb250ZXh0U3RhY2subGFzdCgpOwotICAgIG1fc3dpdGNoQ29udGV4dFN0YWNrLnJlbW92ZUxh
c3QoKTsKLQotICAgIGluc3RydWN0aW9ucygpW3N3aXRjaEluZm8uYnl0ZWNvZGVPZmZzZXQgKyAx
XSA9IG1fY29kZUJsb2NrLT5udW1iZXJPZlN3aXRjaEp1bXBUYWJsZXMoKTsKLSAgICBpbnN0cnVj
dGlvbnMoKVtzd2l0Y2hJbmZvLmJ5dGVjb2RlT2Zmc2V0ICsgMl0gPSBkZWZhdWx0TGFiZWwtPmJp
bmQoc3dpdGNoSW5mby5ieXRlY29kZU9mZnNldCwgc3dpdGNoSW5mby5ieXRlY29kZU9mZnNldCAr
IDMpOwotCi0gICAgVW5saW5rZWRTaW1wbGVKdW1wVGFibGUmIGp1bXBUYWJsZSA9IG1fY29kZUJs
b2NrLT5hZGRTd2l0Y2hKdW1wVGFibGUoKTsKLSAgICBpbnQzMl90IHN3aXRjaEFkZHJlc3MgPSBz
d2l0Y2hJbmZvLmJ5dGVjb2RlT2Zmc2V0OwotICAgIGp1bXBUYWJsZS5taW4gPSAwOwotICAgIGp1
bXBUYWJsZS5icmFuY2hPZmZzZXRzLnJlc2l6ZShtX2dlbmVyYXRvclJlc3VtZUxhYmVscy5zaXpl
KCkgKyAxKTsKLSAgICBqdW1wVGFibGUuYnJhbmNoT2Zmc2V0cy5maWxsKDApOwotICAgIGZvciAo
dWludDMyX3QgaSA9IDA7IGkgPCBtX2dlbmVyYXRvclJlc3VtZUxhYmVscy5zaXplKCk7ICsraSkg
ewotICAgICAgICAvLyBXZSdyZSBlbWl0dGluZyB0aGlzIGFmdGVyIHRoZSBjbGF1c2UgbGFiZWxz
IHNob3VsZCBoYXZlIGJlZW4gZml4ZWQsIHNvCi0gICAgICAgIC8vIHRoZSBsYWJlbHMgc2hvdWxk
IG5vdCBiZSAiZm9yd2FyZCIgcmVmZXJlbmNlcwotICAgICAgICBBU1NFUlQoIW1fZ2VuZXJhdG9y
UmVzdW1lTGFiZWxzW2ldLT5pc0ZvcndhcmQoKSk7Ci0gICAgICAgIGp1bXBUYWJsZS5hZGQoaSwg
bV9nZW5lcmF0b3JSZXN1bWVMYWJlbHNbaV0tPmJpbmQoc3dpdGNoQWRkcmVzcywgc3dpdGNoQWRk
cmVzcyArIDMpKTsKLSAgICB9Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIEpTQwogCiBuYW1lc3BhY2Ug
V1RGIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0
ZWNvZGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0
ZWNvZGVHZW5lcmF0b3IuaAppbmRleCBmZmY3MTNhYTI1ZTcxZGYyY2Y0Y2I1MzA4ZTYxNjlhNTNh
ZjY1MWJlLi5iMWI5NDNkYTVlMDY3ZWNkZDQ5Njc0ODExNDVjZTlkYjAwNzVhMmFiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5oCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVk
ZSAiSW5zdHJ1Y3Rpb24uaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgorI2luY2x1ZGUgIkpT
R2VuZXJhdG9yRnVuY3Rpb24uaCIKICNpbmNsdWRlICJMYWJlbC5oIgogI2luY2x1ZGUgIkxhYmVs
U2NvcGUuaCIKICNpbmNsdWRlICJOb2Rlcy5oIgpAQCAtNjkwLDE4ICs2OTEsMTUgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW5kU3dpdGNoKHVpbnQzMl90IGNsYXVzZUNvdW50LCBS
ZWZQdHI8TGFiZWw+KiwgRXhwcmVzc2lvbk5vZGUqKiwgTGFiZWwqIGRlZmF1bHRMYWJlbCwgaW50
MzJfdCBtaW4sIGludDMyX3QgcmFuZ2UpOwogCiAgICAgICAgIHZvaWQgZW1pdFlpZWxkUG9pbnQo
UmVnaXN0ZXJJRCopOwotICAgICAgICB2b2lkIGVtaXRTYXZlKExhYmVsKiBtZXJnZVBvaW50LCB1
bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpOwotICAgICAgICB2b2lkIGVtaXRSZXN1bWUo
TGFiZWwqIG1lcmdlUG9pbnQsIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCk7CiAKICAg
ICAgICAgdm9pZCBlbWl0R2VuZXJhdG9yU3RhdGVMYWJlbCgpOwogICAgICAgICB2b2lkIGVtaXRH
ZW5lcmF0b3JTdGF0ZUNoYW5nZShpbnQzMl90IHN0YXRlKTsKICAgICAgICAgUmVnaXN0ZXJJRCog
ZW1pdFlpZWxkKFJlZ2lzdGVySUQqIGFyZ3VtZW50KTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1p
dERlbGVnYXRlWWllbGQoUmVnaXN0ZXJJRCogYXJndW1lbnQsIFRocm93YWJsZUV4cHJlc3Npb25E
YXRhKik7Ci0gICAgICAgIHZvaWQgYmVnaW5HZW5lcmF0b3IoUmVnaXN0ZXJJRCopOwotICAgICAg
ICB2b2lkIGVuZEdlbmVyYXRvcihMYWJlbCogZGVmYXVsdExhYmVsKTsKLSAgICAgICAgUmVnaXN0
ZXJJRCogZ2VuZXJhdG9yU3RhdGVSZWdpc3RlcigpIHsgcmV0dXJuICZtX3BhcmFtZXRlcnNbMl07
IH0KLSAgICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9yVmFsdWVSZWdpc3RlcigpIHsgcmV0dXJu
ICZtX3BhcmFtZXRlcnNbM107IH0KLSAgICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9yUmVzdW1l
TW9kZVJlZ2lzdGVyKCkgeyByZXR1cm4gJm1fcGFyYW1ldGVyc1s0XTsgfQorICAgICAgICBSZWdp
c3RlcklEKiBnZW5lcmF0b3JTdGF0ZVJlZ2lzdGVyKCkgeyByZXR1cm4gJm1fcGFyYW1ldGVyc1tz
dGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JBcmd1bWVu
dDo6U3RhdGUpXTsgfQorICAgICAgICBSZWdpc3RlcklEKiBnZW5lcmF0b3JWYWx1ZVJlZ2lzdGVy
KCkgeyByZXR1cm4gJm1fcGFyYW1ldGVyc1tzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRv
ckZ1bmN0aW9uOjpHZW5lcmF0b3JBcmd1bWVudDo6VmFsdWUpXTsgfQorICAgICAgICBSZWdpc3Rl
cklEKiBnZW5lcmF0b3JSZXN1bWVNb2RlUmVnaXN0ZXIoKSB7IHJldHVybiAmbV9wYXJhbWV0ZXJz
W3N0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yRnVuY3Rpb246OkdlbmVyYXRvckFyZ3Vt
ZW50OjpSZXN1bWVNb2RlKV07IH0KKyAgICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9yRnJhbWVS
ZWdpc3RlcigpIHsgcmV0dXJuICZtX3BhcmFtZXRlcnNbc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNH
ZW5lcmF0b3JGdW5jdGlvbjo6R2VuZXJhdG9yQXJndW1lbnQ6OkZyYW1lKV07IH0KIAogICAgICAg
ICBDb2RlVHlwZSBjb2RlVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZVR5cGU7IH0KIApAQCAt
OTI5LDcgKzkyNywxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgVmVjdG9yPFN3aXRjaElu
Zm8+IG1fc3dpdGNoQ29udGV4dFN0YWNrOwogICAgICAgICBWZWN0b3I8UmVmUHRyPEZvckluQ29u
dGV4dD4+IG1fZm9ySW5Db250ZXh0U3RhY2s7CiAgICAgICAgIFZlY3RvcjxUcnlDb250ZXh0PiBt
X3RyeUNvbnRleHRTdGFjazsKLSAgICAgICAgVmVjdG9yPFJlZlB0cjxMYWJlbD4+IG1fZ2VuZXJh
dG9yUmVzdW1lTGFiZWxzOworICAgICAgICB1bnNpZ25lZCBtX3lpZWxkUG9pbnRzIHsgMCB9Owor
CisgICAgICAgIFN0cm9uZzxTeW1ib2xUYWJsZT4gbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxl
OworICAgICAgICBpbnQgbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlSW5kZXggeyAwIH07CisK
ICAgICAgICAgZW51bSBGdW5jdGlvblZhcmlhYmxlVHlwZSA6IHVpbnQ4X3QgeyBOb3JtYWxGdW5j
dGlvblZhcmlhYmxlLCBHbG9iYWxGdW5jdGlvblZhcmlhYmxlIH07CiAgICAgICAgIFZlY3Rvcjxz
dGQ6OnBhaXI8RnVuY3Rpb25NZXRhZGF0YU5vZGUqLCBGdW5jdGlvblZhcmlhYmxlVHlwZT4+IG1f
ZnVuY3Rpb25zVG9Jbml0aWFsaXplOwogICAgICAgICBib29sIG1fbmVlZFRvSW5pdGlhbGl6ZUFy
Z3VtZW50cyB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKaW5kZXggZDBjOTllZmY1ZTc0ZjAyYzM4M2NjNTExZGUx
N2I4ZDJiNmU3N2U0Zi4uYmNkYWEyNzJjYjk1MDg1ODYwOGNhMmE3NTdmN2M0NjRlNDc2ZGZmNSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVn
ZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2Rl
Z2VuLmNwcApAQCAtMzM3Nyw3ICszMzc3LDYgQEAgdm9pZCBGdW5jdGlvbk5vZGU6OmVtaXRCeXRl
Y29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKikKICAgICAgICAg
UmVmUHRyPExhYmVsPiBkb25lID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7CiAgICAgICAgIGdlbmVy
YXRvci5lbWl0TGFiZWwoZG9uZS5nZXQoKSk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0UmV0dXJu
KGdlbmVyYXRvci5lbWl0TG9hZChudWxscHRyLCBqc1VuZGVmaW5lZCgpKSk7Ci0gICAgICAgIGdl
bmVyYXRvci5lbmRHZW5lcmF0b3IoZG9uZS5nZXQoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKaW5kZXggN2Nm
Njg3MDk2YzQzMzYwOWI1MGQxZjQwOWE5ODkzZjIwMDA5NTI2OS4uMjUxZTdhYjFiZGM2MTg5MmZl
MmUyNjhjMDRkOTIxYjYzMDk5ZGUwMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09wZXJhdGlvbnMuY3BwCkBAIC00Miw4ICs0Miw4IEBACiAjaW5jbHVkZSAiRGlyZWN0QXJndW1l
bnRzLmgiCiAjaW5jbHVkZSAiRlRMRm9yT1NSRW50cnlKSVRDb2RlLmgiCiAjaW5jbHVkZSAiRlRM
T1NSRW50cnkuaCIKLSNpbmNsdWRlICJIb3N0Q2FsbFJldHVyblZhbHVlLmgiCiAjaW5jbHVkZSAi
R2V0dGVyU2V0dGVyLmgiCisjaW5jbHVkZSAiSG9zdENhbGxSZXR1cm5WYWx1ZS5oIgogI2luY2x1
ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSklURXhjZXB0
aW9ucy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0lu
dGVycHJldGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnBy
ZXRlci5jcHAKaW5kZXggMWFhZjE3NzIzZmUxZTg4MjBmNDc3YWIwODU0ODRiNWY1ZjI3Njc5Ny4u
MmYwZTZmMmZjN2U5OTY0M2JjYTJhOWY0NDgwNDhlZDg2NmMyOGZhYiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCkBAIC02MDksNyAr
NjA5LDcgQEAgSlNTdHJpbmcqIEludGVycHJldGVyOjpzdGFja1RyYWNlQXNTdHJpbmcoVk0mIHZt
LCBjb25zdCBWZWN0b3I8U3RhY2tGcmFtZT4mIHN0YWMKICAgICByZXR1cm4ganNTdHJpbmcoJnZt
LCBidWlsZGVyLnRvU3RyaW5nKCkpOwogfQogCi1BTFdBWVNfSU5MSU5FIHN0YXRpYyBIYW5kbGVy
SW5mbyogZmluZEV4Y2VwdGlvbkhhbmRsZXIoU3RhY2tWaXNpdG9yJiB2aXNpdG9yLCBDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgQ29kZUJsb2NrOjpSZXF1aXJlZEhhbmRsZXIgcmVxdWlyZWRIYW5kbGVy
KQorQUxXQVlTX0lOTElORSBzdGF0aWMgSGFuZGxlckluZm8qIGZpbmRFeGNlcHRpb25IYW5kbGVy
KFN0YWNrVmlzaXRvciYgdmlzaXRvciwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFJlcXVpcmVkSGFu
ZGxlciByZXF1aXJlZEhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKGNvZGVCbG9jayk7CiAjaWYgRU5B
QkxFKERGR19KSVQpCkBAIC02NDMsNyArNjQzLDcgQEAgY2xhc3MgR2V0Q2F0Y2hIYW5kbGVyRnVu
Y3RvciB7CiAgICAgICAgIGlmICghY29kZUJsb2NrKQogICAgICAgICAgICAgcmV0dXJuIFN0YWNr
VmlzaXRvcjo6Q29udGludWU7CiAKLSAgICAgICAgbV9oYW5kbGVyID0gZmluZEV4Y2VwdGlvbkhh
bmRsZXIodmlzaXRvciwgY29kZUJsb2NrLCBDb2RlQmxvY2s6OlJlcXVpcmVkSGFuZGxlcjo6Q2F0
Y2hIYW5kbGVyKTsKKyAgICAgICAgbV9oYW5kbGVyID0gZmluZEV4Y2VwdGlvbkhhbmRsZXIodmlz
aXRvciwgY29kZUJsb2NrLCBSZXF1aXJlZEhhbmRsZXI6OkNhdGNoSGFuZGxlcik7CiAgICAgICAg
IGlmIChtX2hhbmRsZXIpCiAgICAgICAgICAgICByZXR1cm4gU3RhY2tWaXNpdG9yOjpEb25lOwog
CkBAIC02ODUsNyArNjg1LDcgQEAgY2xhc3MgVW53aW5kRnVuY3RvciB7CiAgICAgICAgIG1faGFu
ZGxlciA9IG51bGxwdHI7CiAgICAgICAgIGlmICghbV9pc1Rlcm1pbmF0aW9uKSB7CiAgICAgICAg
ICAgICBpZiAobV9jb2RlQmxvY2sgJiYgIWlzV2ViQXNzZW1ibHlFeGVjdXRhYmxlKG1fY29kZUJs
b2NrLT5vd25lckV4ZWN1dGFibGUoKSkpCi0gICAgICAgICAgICAgICAgbV9oYW5kbGVyID0gZmlu
ZEV4Y2VwdGlvbkhhbmRsZXIodmlzaXRvciwgbV9jb2RlQmxvY2ssIENvZGVCbG9jazo6UmVxdWly
ZWRIYW5kbGVyOjpBbnlIYW5kbGVyKTsKKyAgICAgICAgICAgICAgICBtX2hhbmRsZXIgPSBmaW5k
RXhjZXB0aW9uSGFuZGxlcih2aXNpdG9yLCBtX2NvZGVCbG9jaywgUmVxdWlyZWRIYW5kbGVyOjpB
bnlIYW5kbGVyKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChtX2hhbmRsZXIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCmluZGV4IDc5Yzdl
NTMwMWJhODM5NmJjMDJkYzI0NWUwODFjN2Y3YTM3MzhlNmMuLjNkZjAwNjc3NmY2MWE0YjViNGI3
YzI0OGU3NWNhYjFhOGMzMDkzMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlci9JbnRlcnByZXRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRl
cnByZXRlci9JbnRlcnByZXRlci5oCkBAIC02NSw2ICs2NSw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgIHN0cnVjdCBIYW5kbGVySW5mbzsKICAgICBzdHJ1Y3QgSW5zdHJ1Y3Rpb247CiAgICAgc3Ry
dWN0IFByb3RvQ2FsbEZyYW1lOworICAgIHN0cnVjdCBVbmxpbmtlZEluc3RydWN0aW9uOwogCiAg
ICAgZW51bSBVbndpbmRTdGFydCB7IFVud2luZEZyb21DdXJyZW50RnJhbWUsIFVud2luZEZyb21D
YWxsZXJGcmFtZSB9OwogCkBAIC0yMDcsNyArMjA4LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICAgICAgcmV0dXJuIG9wY29kZTsKICNlbmRpZgogICAgICAgICB9Ci0gICAgICAgIAorCisg
ICAgICAgIE9wY29kZUlEIGdldE9wY29kZUlEKGNvbnN0IEluc3RydWN0aW9uJik7CisgICAgICAg
IE9wY29kZUlEIGdldE9wY29kZUlEKGNvbnN0IFVubGlua2VkSW5zdHJ1Y3Rpb24mKTsKKwogICAg
ICAgICBib29sIGlzT3Bjb2RlKE9wY29kZSk7CiAKICAgICAgICAgSlNWYWx1ZSBleGVjdXRlKFBy
b2dyYW1FeGVjdXRhYmxlKiwgQ2FsbEZyYW1lKiwgSlNPYmplY3QqIHRoaXNPYmopOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVySW5saW5l
cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVySW5saW5l
cy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjg2ZDA3MTQ4YTUyZTY1ZTM3NWY5N2U2ZWJiOTFhZGJlMWRkNDU2MGQK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50
ZXJwcmV0ZXJJbmxpbmVzLmgKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNiBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAi
SW5zdHJ1Y3Rpb24uaCIKKyNpbmNsdWRlICJJbnRlcnByZXRlci5oIgorI2luY2x1ZGUgIlVubGlu
a2VkQ29kZUJsb2NrLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitpbmxpbmUgT3Bjb2RlSUQgSW50
ZXJwcmV0ZXI6OmdldE9wY29kZUlEKGNvbnN0IEluc3RydWN0aW9uJiBpbnN0cnVjdGlvbikKK3sK
KyAgICByZXR1cm4gZ2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb24udS5vcGNvZGUpOworfQorCitpbmxp
bmUgT3Bjb2RlSUQgSW50ZXJwcmV0ZXI6OmdldE9wY29kZUlEKGNvbnN0IFVubGlua2VkSW5zdHJ1
Y3Rpb24mIGluc3RydWN0aW9uKQoreworICAgIHJldHVybiBpbnN0cnVjdGlvbi51Lm9wY29kZTsK
K30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKaW5kZXgg
YjAwZGZhYzhjMTVjNTQ3ZDI3ZmM2NjdmNWM0NTkwZWQzOTlkZWU0MC4uMTI0MDVmN2U1MDRhYjM4
OTNkZDk3ZDdhOTI5MTNiMDk1YTExNTkzMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcApA
QCAtMjM1LDggKzIzNSw2IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAg
ICAgICAgREVGSU5FX09QKG9wX2dldF9yZXN0X2xlbmd0aCkKICAgICAgICAgREVGSU5FX09QKG9w
X2NoZWNrX3RkeikKICAgICAgICAgREVGSU5FX09QKG9wX2Fzc2VydCkKLSAgICAgICAgREVGSU5F
X09QKG9wX3NhdmUpCi0gICAgICAgIERFRklORV9PUChvcF9yZXN1bWUpCiAgICAgICAgIERFRklO
RV9PUChvcF9kZWJ1ZykKICAgICAgICAgREVGSU5FX09QKG9wX2RlbF9ieV9pZCkKICAgICAgICAg
REVGSU5FX09QKG9wX2RlbF9ieV92YWwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAppbmRleCBiYjk3
ZGMzNWJkZmMwMzM5OWFhMDUxM2E5Y2E3MzU1ZDA4MzFjNjBkLi41MWZjZjYwYjk5ZDQwYjBlNTNk
YmNkMjIzYzU2OTIwMjVmMTRlY2YzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKQEAgLTQ5Nyw4
ICs0OTcsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0X29wX2dldF9yZXN0
X2xlbmd0aChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfY2hlY2tfdGR6KElu
c3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9hc3NlcnQoSW5zdHJ1Y3Rpb24qKTsK
LSAgICAgICAgdm9pZCBlbWl0X29wX3NhdmUoSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9pZCBl
bWl0X29wX3Jlc3VtZShJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZGVidWco
SW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2RlbF9ieV9pZChJbnN0cnVjdGlv
biopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZGVsX2J5X3ZhbChJbnN0cnVjdGlvbiopOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKaW5kZXggN2Y3Yzc0NTNiZDNkMmQ1
MGUxODAxODNmMjk3MzExNWYxMTlkODUyZi4uMmRiZTg2YzYyNGJjODdlYmY3MGI4MDFlMGEyY2Nj
ZWY2NTE1YmEyMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNv
ZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCkBA
IC0xNDkyLDE4ICsxNDkyLDYgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X3Jlc3RfbGVuZ3RoKElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAjZW5kaWYKIH0KIAotdm9pZCBKSVQ6OmVt
aXRfb3Bfc2F2ZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQotewotICAgIEpJVFNs
b3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3Bh
dGhfc2F2ZSk7Ci0gICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKLX0KLQotdm9pZCBKSVQ6OmVtaXRf
b3BfcmVzdW1lKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCi17Ci0gICAgSklUU2xv
d1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3dfcGF0
aF9yZXN1bWUpOwotICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNl
IEpTQwogCiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQppbmRleCAxNDkxOGI2NTVkNWNmYTIy
Yjg2MTU4ZWIyZWVhYWYwODc0OTY1NmE3Li5jOWY5Njg3OTU4ZDA2ZDMwNjBjZjY5ZmUzNzg5ZDFi
ZDBiZjhjNzlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlci5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXIuYXNtCkBAIC0xNzA5LDE2ICsxNzA5LDggQEAgX2xsaW50X29wX2Fzc2Vy
dDoKICAgICBkaXNwYXRjaCgzKQogCiAKLV9sbGludF9vcF9zYXZlOgotICAgIHRyYWNlRXhlY3V0
aW9uKCkKLSAgICBjYWxsT3Bjb2RlU2xvd1BhdGgoX3Nsb3dfcGF0aF9zYXZlKQotICAgIGRpc3Bh
dGNoKDQpCi0KLQotX2xsaW50X29wX3Jlc3VtZToKLSAgICB0cmFjZUV4ZWN1dGlvbigpCi0gICAg
Y2FsbE9wY29kZVNsb3dQYXRoKF9zbG93X3BhdGhfcmVzdW1lKQotICAgIGRpc3BhdGNoKDMpCitf
bGxpbnRfb3BfeWllbGQ6CisgICAgbm90U3VwcG9ydGVkKCkKIAogCiBfbGxpbnRfb3BfY3JlYXRl
X2xleGljYWxfZW52aXJvbm1lbnQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1BhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5j
cHAKaW5kZXggZWJlYTk4ZTRlZTEzZmExMmJlMDk2YmE5MmY0ZDQxOWUzNGNlZDE3MC4uMjYxNzQ1
YTE5MDMxN2RlNzU5MTJlM2E5MjNmYTlmMjg4NzQ4NjNkNiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvUGFyc2VyLmNwcApAQCAtMjYwLDcgKzI2MCw3IEBAIFN0cmluZyBQYXJzZXI8TGV4
ZXJUeXBlPjo6cGFyc2VJbm5lcihjb25zdCBJZGVudGlmaWVyJiBjYWxsZWVOYW1lLCBTb3VyY2VQ
YXJzZU1vCiAgICAgaWYgKG1fbGV4ZXItPmlzUmVwYXJzaW5nRnVuY3Rpb24oKSkgewogICAgICAg
ICBQYXJzZXJGdW5jdGlvbkluZm88QVNUQnVpbGRlcj4gZnVuY3Rpb25JbmZvOwogICAgICAgICBp
ZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yQm9keU1vZGUpCi0gICAg
ICAgICAgICBtX3BhcmFtZXRlcnMgPSBjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKGNvbnRleHQp
OworICAgICAgICAgICAgbV9wYXJhbWV0ZXJzID0gY3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhj
b250ZXh0LCBmdW5jdGlvbkluZm8ucGFyYW1ldGVyQ291bnQpOwogICAgICAgICBlbHNlCiAgICAg
ICAgICAgICBtX3BhcmFtZXRlcnMgPSBwYXJzZUZ1bmN0aW9uUGFyYW1ldGVycyhjb250ZXh0LCBw
YXJzZU1vZGUsIGZ1bmN0aW9uSW5mbyk7CiAKQEAgLTUxMiwxMCArNTEyLDkgQEAgdGVtcGxhdGUg
PGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU291cmNlRWxlbWVudHMgUGFyc2VyPExleGVyVHlwZT46
OnBhcnNlR2VuZXJhdG8KIAogICAgIFBhcnNlckZ1bmN0aW9uSW5mbzxUcmVlQnVpbGRlcj4gaW5m
bzsKICAgICBpbmZvLm5hbWUgPSAmbV92bS0+cHJvcGVydHlOYW1lcy0+bnVsbElkZW50aWZpZXI7
Ci0gICAgY3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhjb250ZXh0KTsKKyAgICBjcmVhdGVHZW5l
cmF0b3JQYXJhbWV0ZXJzKGNvbnRleHQsIGluZm8ucGFyYW1ldGVyQ291bnQpOwogICAgIGluZm8u
c3RhcnRPZmZzZXQgPSBwYXJhbWV0ZXJzU3RhcnQ7CiAgICAgaW5mby5zdGFydExpbmUgPSB0b2tl
bkxpbmUoKTsKLSAgICBpbmZvLnBhcmFtZXRlckNvdW50ID0gNDsgLy8gZ2VuZXJhdG9yLCBzdGF0
ZSwgdmFsdWUsIHJlc3VtZSBtb2RlCiAKICAgICB7CiAgICAgICAgIEF1dG9Qb3BTY29wZVJlZiBn
ZW5lcmF0b3JCb2R5U2NvcGUodGhpcywgcHVzaFNjb3BlKCkpOwpAQCAtMTkwMywzMiArMTkwMiwz
MCBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPiB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1
aWxkZXIsIGNsYXNzIEZ1bmN0aW9uSW5mb1R5cAogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4
ZXJUeXBlPgotdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiB0eXBlbmFtZSBUcmVlQnVpbGRl
cjo6Rm9ybWFsUGFyYW1ldGVyTGlzdCBQYXJzZXI8TGV4ZXJUeXBlPjo6Y3JlYXRlR2VuZXJhdG9y
UGFyYW1ldGVycyhUcmVlQnVpbGRlciYgY29udGV4dCkKK3RlbXBsYXRlIDxjbGFzcyBUcmVlQnVp
bGRlcj4gdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkZvcm1hbFBhcmFtZXRlckxpc3QgUGFyc2VyPExl
eGVyVHlwZT46OmNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMoVHJlZUJ1aWxkZXImIGNvbnRleHQs
IHVuc2lnbmVkJiBwYXJhbWV0ZXJDb3VudCkKIHsKICAgICBhdXRvIHBhcmFtZXRlcnMgPSBjb250
ZXh0LmNyZWF0ZUZvcm1hbFBhcmFtZXRlckxpc3QoKTsKIAogICAgIEpTVG9rZW5Mb2NhdGlvbiBs
b2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOwogICAgIEpTVGV4dFBvc2l0aW9uIHBvc2l0aW9uID0g
dG9rZW5TdGFydFBvc2l0aW9uKCk7CiAKLSAgICAvLyBAZ2VuZXJhdG9yCi0gICAgZGVjbGFyZVBh
cmFtZXRlcigmbV92bS0+cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yUHJp
dmF0ZU5hbWUoKSk7Ci0gICAgYXV0byBnZW5lcmF0b3IgPSBjb250ZXh0LmNyZWF0ZUJpbmRpbmdM
b2NhdGlvbihsb2NhdGlvbiwgbV92bS0+cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZ2Vu
ZXJhdG9yUHJpdmF0ZU5hbWUoKSwgcG9zaXRpb24sIHBvc2l0aW9uLCBBc3NpZ25tZW50Q29udGV4
dDo6RGVjbGFyYXRpb25TdGF0ZW1lbnQpOwotICAgIGNvbnRleHQuYXBwZW5kUGFyYW1ldGVyKHBh
cmFtZXRlcnMsIGdlbmVyYXRvciwgMCk7CisgICAgYXV0byBhZGRQYXJhbWV0ZXIgPSBbJl0oY29u
c3QgSWRlbnRpZmllciYgbmFtZSkgeworICAgICAgICBkZWNsYXJlUGFyYW1ldGVyKCZuYW1lKTsK
KyAgICAgICAgYXV0byBiaW5kaW5nID0gY29udGV4dC5jcmVhdGVCaW5kaW5nTG9jYXRpb24obG9j
YXRpb24sIG5hbWUsIHBvc2l0aW9uLCBwb3NpdGlvbiwgQXNzaWdubWVudENvbnRleHQ6OkRlY2xh
cmF0aW9uU3RhdGVtZW50KTsKKyAgICAgICAgY29udGV4dC5hcHBlbmRQYXJhbWV0ZXIocGFyYW1l
dGVycywgYmluZGluZywgMCk7CisgICAgICAgICsrcGFyYW1ldGVyQ291bnQ7CisgICAgfTsKIAor
ICAgIC8vIEBnZW5lcmF0b3IKKyAgICBhZGRQYXJhbWV0ZXIobV92bS0+cHJvcGVydHlOYW1lcy0+
YnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yUHJpdmF0ZU5hbWUoKSk7CiAgICAgLy8gQGdlbmVyYXRv
clN0YXRlCi0gICAgZGVjbGFyZVBhcmFtZXRlcigmbV92bS0+cHJvcGVydHlOYW1lcy0+YnVpbHRp
bk5hbWVzKCkuZ2VuZXJhdG9yU3RhdGVQcml2YXRlTmFtZSgpKTsKLSAgICBhdXRvIGdlbmVyYXRv
clN0YXRlID0gY29udGV4dC5jcmVhdGVCaW5kaW5nTG9jYXRpb24obG9jYXRpb24sIG1fdm0tPnBy
b3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclN0YXRlUHJpdmF0ZU5hbWUoKSwg
cG9zaXRpb24sIHBvc2l0aW9uLCBBc3NpZ25tZW50Q29udGV4dDo6RGVjbGFyYXRpb25TdGF0ZW1l
bnQpOwotICAgIGNvbnRleHQuYXBwZW5kUGFyYW1ldGVyKHBhcmFtZXRlcnMsIGdlbmVyYXRvclN0
YXRlLCAwKTsKLQorICAgIGFkZFBhcmFtZXRlcihtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5idWlsdGlu
TmFtZXMoKS5nZW5lcmF0b3JTdGF0ZVByaXZhdGVOYW1lKCkpOwogICAgIC8vIEBnZW5lcmF0b3JW
YWx1ZQotICAgIGRlY2xhcmVQYXJhbWV0ZXIoJm1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5O
YW1lcygpLmdlbmVyYXRvclZhbHVlUHJpdmF0ZU5hbWUoKSk7Ci0gICAgYXV0byBnZW5lcmF0b3JW
YWx1ZSA9IGNvbnRleHQuY3JlYXRlQmluZGluZ0xvY2F0aW9uKGxvY2F0aW9uLCBtX3ZtLT5wcm9w
ZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JWYWx1ZVByaXZhdGVOYW1lKCksIHBv
c2l0aW9uLCBwb3NpdGlvbiwgQXNzaWdubWVudENvbnRleHQ6OkRlY2xhcmF0aW9uU3RhdGVtZW50
KTsKLSAgICBjb250ZXh0LmFwcGVuZFBhcmFtZXRlcihwYXJhbWV0ZXJzLCBnZW5lcmF0b3JWYWx1
ZSwgMCk7Ci0KKyAgICBhZGRQYXJhbWV0ZXIobV92bS0+cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5h
bWVzKCkuZ2VuZXJhdG9yVmFsdWVQcml2YXRlTmFtZSgpKTsKICAgICAvLyBAZ2VuZXJhdG9yUmVz
dW1lTW9kZQotICAgIGRlY2xhcmVQYXJhbWV0ZXIoJm1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0
aW5OYW1lcygpLmdlbmVyYXRvclJlc3VtZU1vZGVQcml2YXRlTmFtZSgpKTsKLSAgICBhdXRvIGdl
bmVyYXRvclJlc3VtZU1vZGUgPSBjb250ZXh0LmNyZWF0ZUJpbmRpbmdMb2NhdGlvbihsb2NhdGlv
biwgbV92bS0+cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yUmVzdW1lTW9k
ZVByaXZhdGVOYW1lKCksIHBvc2l0aW9uLCBwb3NpdGlvbiwgQXNzaWdubWVudENvbnRleHQ6OkRl
Y2xhcmF0aW9uU3RhdGVtZW50KTsKLSAgICBjb250ZXh0LmFwcGVuZFBhcmFtZXRlcihwYXJhbWV0
ZXJzLCBnZW5lcmF0b3JSZXN1bWVNb2RlLCAwKTsKKyAgICBhZGRQYXJhbWV0ZXIobV92bS0+cHJv
cGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yUmVzdW1lTW9kZVByaXZhdGVOYW1l
KCkpOworICAgIC8vIEBnZW5lcmF0b3JGcmFtZQorICAgIGFkZFBhcmFtZXRlcihtX3ZtLT5wcm9w
ZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JGcmFtZVByaXZhdGVOYW1lKCkpOwog
CiAgICAgcmV0dXJuIHBhcmFtZXRlcnM7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1BhcnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJz
ZXIuaAppbmRleCAzOTIwNDA0ZThiYTUyMGIyMmU0ZWNkMjc3ODFjMTNkZjgxOTA3NDMzLi41MGUx
MzkxYjVmZDAzZGQ1ZTc3OGI4ZmRiNTkyM2FhNzk4YWVkMTIzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvUGFyc2VyLmgKQEAgLTE0MjYsNyArMTQyNiw3IEBAIGNsYXNzIFBhcnNlciB7CiAg
ICAgQUxXQVlTX0lOTElORSBib29sIGlzQXJyb3dGdW5jdGlvblBhcmFtZXRlcnMoKTsKICAgICAK
ICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXIsIGNsYXNzIEZ1bmN0aW9uSW5mb1R5cGU+
IE5FVkVSX0lOTElORSB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6Rm9ybWFsUGFyYW1ldGVyTGlzdCBw
YXJzZUZ1bmN0aW9uUGFyYW1ldGVycyhUcmVlQnVpbGRlciYsIFNvdXJjZVBhcnNlTW9kZSwgRnVu
Y3Rpb25JbmZvVHlwZSYpOwotICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gTkVWRVJf
SU5MSU5FIHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpGb3JtYWxQYXJhbWV0ZXJMaXN0IGNyZWF0ZUdl
bmVyYXRvclBhcmFtZXRlcnMoVHJlZUJ1aWxkZXImKTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJl
ZUJ1aWxkZXI+IE5FVkVSX0lOTElORSB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6Rm9ybWFsUGFyYW1l
dGVyTGlzdCBjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKFRyZWVCdWlsZGVyJiwgdW5zaWduZWQm
IHBhcmFtZXRlckNvdW50KTsKIAogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gTkVW
RVJfSU5MSU5FIFRyZWVDbGFzc0V4cHJlc3Npb24gcGFyc2VDbGFzcyhUcmVlQnVpbGRlciYsIEZ1
bmN0aW9uTmFtZVJlcXVpcmVtZW50cywgUGFyc2VyQ2xhc3NJbmZvPFRyZWVCdWlsZGVyPiYpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0
aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNw
cAppbmRleCBhOWI3NTVlNmM5YWU5Yjk4YTYyMjkzNTQ2ZWU1N2NhODFlYzljMzJjLi4yZTg2OGRj
YjJkNzFmZTdjZjI4ZTk1MGYwNWM3NThiYTgwNWNjMzI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKQEAgLTM3LDcgKzM3LDYgQEAK
ICNpbmNsdWRlICJFcnJvci5oIgogI2luY2x1ZGUgIkVycm9ySGFuZGxpbmdTY29wZS5oIgogI2lu
Y2x1ZGUgIkV4Y2VwdGlvbkZ1enouaCIKLSNpbmNsdWRlICJHZW5lcmF0b3JGcmFtZS5oIgogI2lu
Y2x1ZGUgIkdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIkhvc3RDYWxsUmV0dXJuVmFsdWUuaCIK
ICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgpAQCAtNzUzLDM4ICs3NTIsNiBAQCBTTE9XX1BBVEhf
REVDTChzbG93X3BhdGhfYXNzZXJ0KQogICAgIEVORCgpOwogfQogCi1TTE9XX1BBVEhfREVDTChz
bG93X3BhdGhfc2F2ZSkKLXsKLSAgICAvLyBPbmx5IHNhdmUgdmFyaWFibGVzIGFuZCB0ZW1wb3Jh
cnkgcmVnaXN0ZXJzLiBUaGUgc2NvcGUgcmVnaXN0ZXJzIGFyZSBpbmNsdWRlZCBpbiB0aGVtLgot
ICAgIC8vIEJ1dCBwYXJhbWV0ZXJzIGFyZSBub3QgaW5jbHVkZWQuIEJlY2F1c2UgdGhlIGdlbmVy
YXRvciBpbXBsZW1lbnRhdGlvbiByZXBsYWNlcyB0aGUgdmFsdWVzIG9mIHBhcmFtZXRlcnMgb24g
ZWFjaCBnZW5lcmF0b3IubmV4dCgpIGNhbGwuCi0gICAgQkVHSU4oKTsKLSAgICBKU1ZhbHVlIGdl
bmVyYXRvciA9IE9QKDEpLmpzVmFsdWUoKTsKLSAgICBHZW5lcmF0b3JGcmFtZSogZnJhbWUgPSBu
dWxscHRyOwotICAgIEpTVmFsdWUgdmFsdWUgPSBnZW5lcmF0b3IuZ2V0KGV4ZWMsIGV4ZWMtPnBy
b3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JGcmFtZVByaXZhdGVOYW1lKCkp
OwotICAgIGlmICghdmFsdWUuaXNOdWxsKCkpCi0gICAgICAgIGZyYW1lID0ganNDYXN0PEdlbmVy
YXRvckZyYW1lKj4odmFsdWUpOwotICAgIGVsc2UgewotICAgICAgICAvLyBGSVhNRTogT25jZSBK
U0dlbmVyYXRvciBzcGVjaWFsaXplZCBvYmplY3QgaXMgaW50cm9kdWNlZCwgdGhpcyBHZW5lcmF0
b3JGcmFtZSBzaG91bGQgYmUgZW1iZWRlZCBpbnRvIGl0IHRvIGF2b2lkIGFsbG9jYXRpb25zLgot
ICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxNTQ1
Ci0gICAgICAgIGZyYW1lID0gR2VuZXJhdG9yRnJhbWU6OmNyZWF0ZShleGVjLT52bSgpLCAgZXhl
Yy0+Y29kZUJsb2NrKCktPm51bUNhbGxlZUxvY2FscygpKTsKLSAgICAgICAgUHV0UHJvcGVydHlT
bG90IHNsb3QoZ2VuZXJhdG9yLCB0cnVlLCBQdXRQcm9wZXJ0eVNsb3Q6OlB1dEJ5SWQpOwotICAg
ICAgICBhc09iamVjdChnZW5lcmF0b3IpLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+cHV0KGFz
T2JqZWN0KGdlbmVyYXRvciksIGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFt
ZXMoKS5nZW5lcmF0b3JGcmFtZVByaXZhdGVOYW1lKCksIGZyYW1lLCBzbG90KTsKLSAgICB9Ci0g
ICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gcGNbMl0udS51bnNpZ25lZFZhbHVl
OwotICAgIGZyYW1lLT5zYXZlKGV4ZWMsIGV4ZWMtPmNvZGVCbG9jaygpLT5saXZlQ2FsbGVlTG9j
YWxzQXRZaWVsZChsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpKTsKLSAgICBFTkQoKTsKLX0KLQotU0xP
V19QQVRIX0RFQ0woc2xvd19wYXRoX3Jlc3VtZSkKLXsKLSAgICBCRUdJTigpOwotICAgIEpTVmFs
dWUgZ2VuZXJhdG9yID0gT1AoMSkuanNWYWx1ZSgpOwotICAgIEdlbmVyYXRvckZyYW1lKiBmcmFt
ZSA9IGpzQ2FzdDxHZW5lcmF0b3JGcmFtZSo+KGdlbmVyYXRvci5nZXQoZXhlYywgZXhlYy0+cHJv
cGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvckZyYW1lUHJpdmF0ZU5hbWUoKSkp
OwotICAgIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9IHBjWzJdLnUudW5zaWduZWRW
YWx1ZTsKLSAgICBmcmFtZS0+cmVzdW1lKGV4ZWMsIGV4ZWMtPmNvZGVCbG9jaygpLT5saXZlQ2Fs
bGVlTG9jYWxzQXRZaWVsZChsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpKTsKLSAgICBFTkQoKTsKLX0K
LQogU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2NyZWF0ZV9sZXhpY2FsX2Vudmlyb25tZW50KQog
ewogICAgIEJFR0lOKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21tb25TbG93UGF0aHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1v
blNsb3dQYXRocy5oCmluZGV4IDY0MDFhNjE0ZDU2MTE2NjM1NjliMThhMDI3MmIyOGFjMzUyODZh
ODIuLjNkOWMxNWY1YWYwYzc1N2RkYTEwNTMzOTE5OTBmNTQ2Mzg4NjgxYjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCkBAIC0yNDgsOCAr
MjQ4LDYgQEAgU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9uZXh0X2dlbmVyaWNfZW51
bWVyYXRvcl9wbmFtZSk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3RvX2luZGV4
X3N0cmluZyk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3Byb2ZpbGVfdHlwZV9j
bGVhcl9sb2cpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9hc3NlcnQpOwotU0xP
V19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9zYXZlKTsKLVNMT1dfUEFUSF9ISURERU5fREVD
TChzbG93X3BhdGhfcmVzdW1lKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfY3Jl
YXRlX2xleGljYWxfZW52aXJvbm1lbnQpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0
aF9wdXNoX3dpdGhfc2NvcGUpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9yZXNv
bHZlX3Njb3BlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dl
bmVyYXRvckZyYW1lLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRv
ckZyYW1lLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWY2ZWE3YTEwMDI1OGMz
ZWNlMDRkYWFiNDNiZGFhODUxZWM4ZjcxNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JG
cmFtZS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0g
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQot
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJHZW5lcmF0b3JGcmFtZS5oIgotCi0j
aW5jbHVkZSAiQ29kZUJsb2NrLmgiCi0jaW5jbHVkZSAiSGVhcEl0ZXJhdGlvblNjb3BlLmgiCi0j
aW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKLSNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgi
Ci0jaW5jbHVkZSAiU2xvdFZpc2l0b3JJbmxpbmVzLmgiCi0jaW5jbHVkZSAiU3RydWN0dXJlSW5s
aW5lcy5oIgotCi1uYW1lc3BhY2UgSlNDIHsKLQotY29uc3QgQ2xhc3NJbmZvIEdlbmVyYXRvckZy
YW1lOjpzX2luZm8gPSB7ICJHZW5lcmF0b3JGcmFtZSIsIG51bGxwdHIsIG51bGxwdHIsIENSRUFU
RV9NRVRIT0RfVEFCTEUoR2VuZXJhdG9yRnJhbWUpIH07Ci0KLUdlbmVyYXRvckZyYW1lOjpHZW5l
cmF0b3JGcmFtZShWTSYgdm0sIHNpemVfdCBudW1iZXJPZkNhbGxlZUxvY2FscykKLSAgICA6IEJh
c2Uodm0sIHZtLmdlbmVyYXRvckZyYW1lU3RydWN0dXJlLmdldCgpKQotICAgICwgbV9udW1iZXJP
ZkNhbGxlZUxvY2FscyhudW1iZXJPZkNhbGxlZUxvY2FscykKLXsKLX0KLQotdm9pZCBHZW5lcmF0
b3JGcmFtZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQotewotICAgIEJhc2U6OmZpbmlzaENyZWF0
aW9uKHZtKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fbnVtYmVyT2ZDYWxsZWVMb2Nh
bHM7ICsraSkKLSAgICAgICAgbG9jYWxBdChpKS5jbGVhcigpOwotfQotCi1TdHJ1Y3R1cmUqIEdl
bmVyYXRvckZyYW1lOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKLXsKLSAgICByZXR1cm4gU3RydWN0dXJlOjpj
cmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhDZWxsVHlwZSwgU3Ry
dWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwotfQotCi1HZW5lcmF0b3JGcmFtZSogR2VuZXJhdG9yRnJh
bWU6OmNyZWF0ZShWTSYgdm0sIHNpemVfdCBudW1iZXJPZkxvY2FscykKLXsKLSAgICBHZW5lcmF0
b3JGcmFtZSogcmVzdWx0ID0KLSAgICAgICAgbmV3ICgKLSAgICAgICAgICAgIE5vdE51bGwsCi0g
ICAgICAgICAgICBhbGxvY2F0ZUNlbGw8R2VuZXJhdG9yRnJhbWU+KHZtLmhlYXAsIGFsbG9jYXRp
b25TaXplRm9yTG9jYWxzKG51bWJlck9mTG9jYWxzKSkpCi0gICAgICAgIEdlbmVyYXRvckZyYW1l
KHZtLCBudW1iZXJPZkxvY2Fscyk7Ci0gICAgcmVzdWx0LT5maW5pc2hDcmVhdGlvbih2bSk7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotdm9pZCBHZW5lcmF0b3JGcmFtZTo6c2F2ZShFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IEZhc3RCaXRWZWN0b3ImIGxpdmVDYWxsZWVMb2NhbHMpCi17Ci0gICAg
Ly8gT25seSBzYXZlIGNhbGxlZSBsb2NhbHMuCi0gICAgLy8gRXZlcnkgdGltZSBhIGdlbmVyYXRv
ciBpcyBjYWxsZWQgKG9yIHJlc3VtZWQpLCBwYXJhbWV0ZXJzIHNob3VsZCBiZSByZXBsYWNlZC4K
LSAgICBBU1NFUlQobGl2ZUNhbGxlZUxvY2Fscy5udW1CaXRzKCkgPD0gbV9udW1iZXJPZkNhbGxl
ZUxvY2Fscyk7Ci0gICAgbGl2ZUNhbGxlZUxvY2Fscy5mb3JFYWNoU2V0Qml0KFsmXShzaXplX3Qg
aW5kZXgpIHsKLSAgICAgICAgbG9jYWxBdChpbmRleCkuc2V0KGV4ZWMtPnZtKCksIHRoaXMsIGV4
ZWMtPnVuY2hlY2tlZFIodmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaW5kZXgpKS5qc1ZhbHVlKCkp
OwotICAgIH0pOwotfQotCi12b2lkIEdlbmVyYXRvckZyYW1lOjpyZXN1bWUoRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlQ2FsbGVlTG9jYWxzKQotewotICAgIC8vIE9u
bHkgcmVzdW1lIGNhbGxlZSBsb2NhbHMuCi0gICAgLy8gRXZlcnkgdGltZSBhIGdlbmVyYXRvciBp
cyBjYWxsZWQgKG9yIHJlc3VtZWQpLCBwYXJhbWV0ZXJzIHNob3VsZCBiZSByZXBsYWNlZC4KLSAg
ICBsaXZlQ2FsbGVlTG9jYWxzLmZvckVhY2hTZXRCaXQoWyZdKHNpemVfdCBpbmRleCkgewotICAg
ICAgICBleGVjLT51bmNoZWNrZWRSKHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGluZGV4KSkgPSBs
b2NhbEF0KGluZGV4KS5nZXQoKTsKLSAgICAgICAgbG9jYWxBdChpbmRleCkuY2xlYXIoKTsKLSAg
ICB9KTsKLX0KLQotdm9pZCBHZW5lcmF0b3JGcmFtZTo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNl
bGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQotewotICAgIEdlbmVyYXRvckZyYW1lKiB0aGlzT2Jq
ZWN0ID0ganNDYXN0PEdlbmVyYXRvckZyYW1lKj4oY2VsbCk7Ci0gICAgQmFzZTo6dmlzaXRDaGls
ZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKLSAgICAvLyBTaW5jZSBvbmx5IHRydWUgY2VsbCBw
b2ludGVycyBhcmUgc3RvcmVkIGFzIGEgY2VsbCwgd2UgY2FuIHNhZmVseSBtYXJrIHRoZW0uCi0g
ICAgdmlzaXRvci5hcHBlbmRWYWx1ZXModGhpc09iamVjdC0+bG9jYWxzKCksIHRoaXNPYmplY3Qt
Pm1fbnVtYmVyT2ZDYWxsZWVMb2NhbHMpOwotfQotCi19IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZyYW1lLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGcmFtZS5oCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAzZDU0NWIxNDdkZDRhYmZiMmJiYjliNWE3MTk0ZThmNzQ4NDFj
NDlhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZyYW1lLmgKKysrIC9kZXYvbnVsbApA
QCAtMSw5MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kg
PHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgR2VuZXJhdG9yRnJh
bWVfaAotI2RlZmluZSBHZW5lcmF0b3JGcmFtZV9oCi0KLSNpbmNsdWRlICJKU0NlbGwuaCIKLSNp
bmNsdWRlIDx3dGYvRmFzdEJpdFZlY3Rvci5oPgotCi1uYW1lc3BhY2UgSlNDIHsKLQotY2xhc3Mg
R2VuZXJhdG9yRnJhbWUgOiBwdWJsaWMgSlNDZWxsIHsKLSAgICBmcmllbmQgY2xhc3MgSklUOwot
I2lmIEVOQUJMRShERkdfSklUKQotICAgIGZyaWVuZCBjbGFzcyBERkc6OlNwZWN1bGF0aXZlSklU
OwotICAgIGZyaWVuZCBjbGFzcyBERkc6OkpJVENvbXBpbGVyOwotI2VuZGlmCi0gICAgZnJpZW5k
IGNsYXNzIFZNOwotcHVibGljOgotICAgIHR5cGVkZWYgSlNDZWxsIEJhc2U7Ci0gICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gU3RydWN0dXJlSXNJbW1vcnRhbCB8IEJh
c2U6OlN0cnVjdHVyZUZsYWdzOwotCi0gICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKLQotICAgIHN0
YXRpYyBHZW5lcmF0b3JGcmFtZSogY3JlYXRlKFZNJiwgc2l6ZV90IG51bWJlck9mQ2FsbGVlTG9j
YWxzKTsKLQotICAgIFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qIGxvY2FscygpCi0gICAgewot
ICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qPihi
aXR3aXNlX2Nhc3Q8Y2hhcio+KHRoaXMpICsgb2Zmc2V0T2ZMb2NhbHMoKSk7Ci0gICAgfQotCi0g
ICAgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiYgbG9jYWxBdChzaXplX3QgaW5kZXgpCi0gICAg
ewotICAgICAgICBBU1NFUlQoaW5kZXggPCBtX251bWJlck9mQ2FsbGVlTG9jYWxzKTsKLSAgICAg
ICAgcmV0dXJuIGxvY2FscygpW2luZGV4XTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgc2l6ZV90IG9m
ZnNldE9mTG9jYWxzKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBXVEY6OnJvdW5kVXBUb011bHRp
cGxlT2Y8c2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPik+KHNpemVvZihHZW5lcmF0b3JGcmFt
ZSkpOwotICAgIH0KLQotICAgIHN0YXRpYyBzaXplX3QgYWxsb2NhdGlvblNpemVGb3JMb2NhbHMo
dW5zaWduZWQgbnVtYmVyT2ZMb2NhbHMpCi0gICAgewotICAgICAgICByZXR1cm4gb2Zmc2V0T2ZM
b2NhbHMoKSArIG51bWJlck9mTG9jYWxzICogc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPik7
Ci0gICAgfQotCi0gICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNH
bG9iYWxPYmplY3QqLCBKU1ZhbHVlIHByb3RvdHlwZSk7Ci0KLSAgICB2b2lkIHNhdmUoRXhlY1N0
YXRlKiwgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZUNhbGxlZUxvY2Fscyk7Ci0gICAgdm9pZCBy
ZXN1bWUoRXhlY1N0YXRlKiwgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZUNhbGxlZUxvY2Fscyk7
Ci0KLXByaXZhdGU6Ci0gICAgR2VuZXJhdG9yRnJhbWUoVk0mLCBzaXplX3QgbnVtYmVyT2ZDYWxs
ZWVMb2NhbHMpOwotCi0gICAgc2l6ZV90IG1fbnVtYmVyT2ZDYWxsZWVMb2NhbHM7Ci0KLSAgICBm
cmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwotCi0gICAgdm9pZCBmaW5pc2hDcmVh
dGlvbihWTSYpOwotCi1wcm90ZWN0ZWQ6Ci0gICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihK
U0NlbGwqLCBTbG90VmlzaXRvciYpOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgSlNDCi0KLSNlbmRp
ZiAvLyBHZW5lcmF0b3JGcmFtZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dlbmVyYXRvckZ1bmN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dlbmVyYXRvckZ1bmN0aW9uLmgKaW5kZXggMzZmNjFjNWYyMGY1NmJlZmQ2YzU1Nzg0
MmIxOWUzOWIxOWEzYTkxOS4uYTFjYmFkOTQ2ZGM1NjgyOWVkMWEyMTU1NzkwYjQ0MGE4ZGY0MzAw
NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0b3JG
dW5jdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJhdG9y
RnVuY3Rpb24uaApAQCAtNTUsNiArNTUsMTYgQEAgY2xhc3MgSlNHZW5lcmF0b3JGdW5jdGlvbiA6
IHB1YmxpYyBKU0Z1bmN0aW9uIHsKICAgICAgICAgRXhlY3V0aW5nID0gLTIsCiAgICAgfTsKIAor
ICAgIC8vIFt0aGlzXSwgQGdlbmVyYXRvciwgQGdlbmVyYXRvclN0YXRlLCBAZ2VuZXJhdG9yVmFs
dWUsIEBnZW5lcmF0b3JSZXN1bWVNb2RlLCBAZ2VuZXJhdG9yRnJhbWUuCisgICAgZW51bSBjbGFz
cyBHZW5lcmF0b3JBcmd1bWVudCA6IGludDMyX3QgeworICAgICAgICBUaGlzVmFsdWUgPSAwLAor
ICAgICAgICBHZW5lcmF0b3IgPSAxLAorICAgICAgICBTdGF0ZSA9IDIsCisgICAgICAgIFZhbHVl
ID0gMywKKyAgICAgICAgUmVzdW1lTW9kZSA9IDQsCisgICAgICAgIEZyYW1lID0gNSwKKyAgICB9
OworCiAgICAgY29uc3Qgc3RhdGljIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3Ry
dWN0dXJlRmxhZ3M7CiAKICAgICBERUNMQVJFX0VYUE9SVF9JTkZPOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVk0uY3BwCmluZGV4IDg4MTMxYmY1YjMwOTBhYmRhZTRiOTk0NTFiNDE3MWNiNWZl
MmM0NWMuLmMzMDEyMmM1YWYzM2M4MDdmZTlhNjVhMThmZTZmODU0NzBlZDBhNmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKQEAgLTQ2LDcgKzQ2LDYgQEAKICNpbmNsdWRlICJG
VExUaHVua3MuaCIKICNpbmNsdWRlICJGdW5jdGlvbkNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAi
R0NBY3Rpdml0eUNhbGxiYWNrLmgiCi0jaW5jbHVkZSAiR2VuZXJhdG9yRnJhbWUuaCIKICNpbmNs
dWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJIZWFwLmgiCiAjaW5jbHVkZSAiSGVhcEl0
ZXJhdGlvblNjb3BlLmgiCkBAIC0yNDAsNyArMjM5LDYgQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUs
IEhlYXBUeXBlIGhlYXBUeXBlKQogICAgIGluZmVycmVkVHlwZVN0cnVjdHVyZS5zZXQoKnRoaXMs
IEluZmVycmVkVHlwZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAg
IGluZmVycmVkVHlwZVRhYmxlU3RydWN0dXJlLnNldCgqdGhpcywgSW5mZXJyZWRUeXBlVGFibGU6
OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICBmdW5jdGlvblJhcmVE
YXRhU3RydWN0dXJlLnNldCgqdGhpcywgRnVuY3Rpb25SYXJlRGF0YTo6Y3JlYXRlU3RydWN0dXJl
KCp0aGlzLCAwLCBqc051bGwoKSkpOwotICAgIGdlbmVyYXRvckZyYW1lU3RydWN0dXJlLnNldCgq
dGhpcywgR2VuZXJhdG9yRnJhbWU6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkp
KTsKICAgICBleGNlcHRpb25TdHJ1Y3R1cmUuc2V0KCp0aGlzLCBFeGNlcHRpb246OmNyZWF0ZVN0
cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICBwcm9taXNlRGVmZXJyZWRTdHJ1Y3R1
cmUuc2V0KCp0aGlzLCBKU1Byb21pc2VEZWZlcnJlZDo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAw
LCBqc051bGwoKSkpOwogICAgIGludGVybmFsUHJvbWlzZURlZmVycmVkU3RydWN0dXJlLnNldCgq
dGhpcywgSlNJbnRlcm5hbFByb21pc2VEZWZlcnJlZDo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAw
LCBqc051bGwoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKaW5kZXggODdiZDBlMGEy
NTUzOGU4YzVlYzMyYWJlNDAzMmM0Njk3ZWIxZDA4Zi4uOTE1MGI1MTU5ZWVkY2FkMTg1NjQ1Y2Rh
NmM3MzBiNDkwZWQzZTY3NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVk0uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCkBAIC0zMjAs
NyArMzIwLDYgQEAgY2xhc3MgVk0gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Vk0+IHsK
ICAgICBTdHJvbmc8U3RydWN0dXJlPiBpbmZlcnJlZFR5cGVTdHJ1Y3R1cmU7CiAgICAgU3Ryb25n
PFN0cnVjdHVyZT4gaW5mZXJyZWRUeXBlVGFibGVTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVj
dHVyZT4gZnVuY3Rpb25SYXJlRGF0YVN0cnVjdHVyZTsKLSAgICBTdHJvbmc8U3RydWN0dXJlPiBn
ZW5lcmF0b3JGcmFtZVN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBleGNlcHRpb25T
dHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gcHJvbWlzZURlZmVycmVkU3RydWN0dXJl
OwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGludGVybmFsUHJvbWlzZURlZmVycmVkU3RydWN0dXJl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRmFzdEJpdFZlY3Rvci5oIGIvU291cmNlL1dU
Ri93dGYvRmFzdEJpdFZlY3Rvci5oCmluZGV4IDk4ZmZmNWNmNzM1M2U2YmM2N2RhNWM1NTk0MGNj
Y2U0ZTRiMTU2ZDAuLmZmMDBiN2I1NGQ0YTBjZmY0YmVmN2QwMzg1NGRlNmI5MGNlMWRiOTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0Zhc3RCaXRWZWN0b3IuaAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9GYXN0Qml0VmVjdG9yLmgKQEAgLTIzLDggKzIzLDcgQEAKICAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAog
ICovCiAKLSNpZm5kZWYgRmFzdEJpdFZlY3Rvcl9oCi0jZGVmaW5lIEZhc3RCaXRWZWN0b3JfaAor
I3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlIDxzdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvRmFzdE1h
bGxvYy5oPgpAQCAtMzYsMTIgKzM1LDE0IEBAIGNsYXNzIFByaW50U3RyZWFtOwogCiBjbGFzcyBG
YXN0Qml0VmVjdG9yIHsKIHB1YmxpYzoKLSAgICBGYXN0Qml0VmVjdG9yKCkKLSAgICAgICAgOiBt
X2FycmF5KDApCi0gICAgICAgICwgbV9udW1CaXRzKDApCisgICAgRmFzdEJpdFZlY3RvcigpID0g
ZGVmYXVsdDsKKworICAgIEZhc3RCaXRWZWN0b3IoRmFzdEJpdFZlY3RvciYmIG90aGVyKQorICAg
ICAgICA6IG1fYXJyYXkoc3RkOjpleGNoYW5nZShvdGhlci5tX2FycmF5LCBudWxscHRyKSkKKyAg
ICAgICAgLCBtX251bUJpdHMoc3RkOjpleGNoYW5nZShvdGhlci5tX251bUJpdHMsIDApKQogICAg
IHsKICAgICB9Ci0gICAgCisKICAgICBGYXN0Qml0VmVjdG9yKGNvbnN0IEZhc3RCaXRWZWN0b3Im
IG90aGVyKQogICAgICAgICA6IG1fYXJyYXkoMCkKICAgICAgICAgLCBtX251bUJpdHMoMCkKQEAg
LTIwMiwxMyArMjAzLDEwIEBAIGNsYXNzIEZhc3RCaXRWZWN0b3IgewogICAgIHN0YXRpYyBzaXpl
X3QgYXJyYXlMZW5ndGgoc2l6ZV90IG51bUJpdHMpIHsgcmV0dXJuIChudW1CaXRzICsgMzEpID4+
IDU7IH0KICAgICBzaXplX3QgYXJyYXlMZW5ndGgoKSBjb25zdCB7IHJldHVybiBhcnJheUxlbmd0
aChtX251bUJpdHMpOyB9CiAgICAgCi0gICAgdWludDMyX3QqIG1fYXJyYXk7IC8vIE5vLCB0aGlz
IGNhbid0IGJlIGFuIHN0ZDo6dW5pcXVlX3B0cjx1aW50MzJfdFtdPi4KLSAgICBzaXplX3QgbV9u
dW1CaXRzOworICAgIHVpbnQzMl90KiBtX2FycmF5IHsgbnVsbHB0ciB9OyAvLyBObywgdGhpcyBj
YW4ndCBiZSBhbiBzdGQ6OnVuaXF1ZV9wdHI8dWludDMyX3RbXT4uCisgICAgc2l6ZV90IG1fbnVt
Qml0cyB7IDAgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdURgogCiB1c2luZyBXVEY6OkZhc3RC
aXRWZWN0b3I7Ci0KLSNlbmRpZiAvLyBGYXN0Qml0VmVjdG9yX2gKLQpkaWZmIC0tZ2l0IGEvSlNU
ZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCBhNjdkMDA2ODA5NGE1NmEx
ZGQ4ZmRlMTAzNTQ5ZWQ5ZTQyMTk3Yjk2Li4yNjU0OWUyMjAxYmFiZWQ1M2UzNTRjZDllNGRmZTM0
ZTkxOTkzYjM4IDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDE2LTA4LTI0ICBZdXN1a2UgU3V6dWtpICA8dXRh
dGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtERkddW0ZUTF0gSW1wbGVtZW50IEVTNiBH
ZW5lcmF0b3JzIGluIERGRyAvIEZUTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTUyNzIzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBzdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwtYW5kLWFycmF5LmpzOiBB
ZGRlZC4KKyAgICAgICAgKGZpYik6CisgICAgICAgICogc3RyZXNzL2dlbmVyYXRvci1maWItZnRs
LWFuZC1vYmplY3QuanM6IEFkZGVkLgorICAgICAgICAoZmliKToKKyAgICAgICAgKiBzdHJlc3Mv
Z2VuZXJhdG9yLWZpYi1mdGwtYW5kLXN0cmluZy5qczogQWRkZWQuCisgICAgICAgIChmaWIpOgor
ICAgICAgICAqIHN0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC5qczogQWRkZWQuCisgICAgICAgIChm
aWIpOgorICAgICAgICAqIHN0cmVzcy9nZW5lcmF0b3ItZnJhbWUtZW1wdHkuanM6IEFkZGVkLgor
ICAgICAgICAoc2hvdWxkVGhyb3cpOgorICAgICAgICAoc2hvdWxkVGhyb3cuZmliKToKKyAgICAg
ICAgKiBzdHJlc3MvZ2VuZXJhdG9yLXJlZHVjZWQtc2F2ZS1wb2ludC1wdXQtdG8tc2NvcGUuanM6
IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoZ2VuKToKKyAgICAgICAgKiBz
dHJlc3MvZ2VuZXJhdG9yLXRyYW5zZmVyLXJlZ2lzdGVyLWJleW9uZC1tdXRpcGxlLXlpZWxkcy5q
czogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgIChnZW4pOgorCiAyMDE2LTA4
LTI0ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdl
ZCwgcm9sbCBvdXQgcjIwNDkwMSwgcjIwNDg5NywgcjIwNDg2NiwgcjIwNDg1NiwgcjIwNDg1NC4K
ZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLWFuZC1hcnJheS5q
cyBiL0pTVGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLWFuZC1hcnJheS5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5mZTkzOTgxMmZkYmFlYzZiODMyYmZkMDBmMjE1M2RlZjg0YmI3NTkyCi0tLSAvZGV2L251
bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwtYW5kLWFycmF5LmpzCkBA
IC0wLDAgKzEsMjMgQEAKKyhmdW5jdGlvbiAoKSB7CisgICAgZnVuY3Rpb24gKmZpYigpCisgICAg
eworICAgICAgICBsZXQgYSA9IDE7CisgICAgICAgIGxldCBiID0gMTsKKyAgICAgICAgbGV0IGMg
PSBbIDAgXTsKKyAgICAgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgICAgIGNbMF0gPSBhOwor
ICAgICAgICAgICAgeWllbGQgYzsKKyAgICAgICAgICAgIFthLCBiXSA9IFtiLCBhICsgYl07Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQgdmFsdWUgPSAwOworICAgIGZvciAobGV0IGkgPSAw
OyBpIDwgMWU0OyArK2kpIHsKKyAgICAgICAgbGV0IGYgPSBmaWIoKTsKKyAgICAgICAgZm9yIChs
ZXQgaSA9IDA7IGkgPCAxMDA7ICsraSkgeworICAgICAgICAgICAgdmFsdWUgPSBmLm5leHQoKS52
YWx1ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAodmFsdWVbMF0gIT09IDM1NDIyNDg0ODE3OTI2
MjAwMDAwMCkKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIHZhbHVlOiR7cmVzdWx0
fWApOworICAgIH0KK30oKSk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9nZW5lcmF0b3It
ZmliLWZ0bC1hbmQtb2JqZWN0LmpzIGIvSlNUZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwt
YW5kLW9iamVjdC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NjczNDBmMmVhNGM3NDM4YTJkMjA5YWE0MGQwNjc3
ZTRhYjdkM2ZiCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZp
Yi1mdGwtYW5kLW9iamVjdC5qcwpAQCAtMCwwICsxLDIzIEBACisoZnVuY3Rpb24gKCkgeworICAg
IGZ1bmN0aW9uICpmaWIoKQorICAgIHsKKyAgICAgICAgbGV0IGEgPSAxOworICAgICAgICBsZXQg
YiA9IDE7CisgICAgICAgIGxldCBjID0geyBmaWI6IDAgfTsKKyAgICAgICAgd2hpbGUgKHRydWUp
IHsKKyAgICAgICAgICAgIGMuZmliID0gYTsKKyAgICAgICAgICAgIHlpZWxkIGM7CisgICAgICAg
ICAgICBbYSwgYl0gPSBbYiwgYSArIGJdOworICAgICAgICB9CisgICAgfQorCisgICAgbGV0IHZh
bHVlID0gMDsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDFlNDsgKytpKSB7CisgICAgICAgIGxl
dCBmID0gZmliKCk7CisgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwOyArK2kpIHsKKyAg
ICAgICAgICAgIHZhbHVlID0gZi5uZXh0KCkudmFsdWU7CisgICAgICAgIH0KKyAgICAgICAgaWYg
KHZhbHVlLmZpYiAhPT0gMzU0MjI0ODQ4MTc5MjYyMDAwMDAwKQorICAgICAgICAgICAgdGhyb3cg
bmV3IEVycm9yKGBiYWQgdmFsdWU6JHtyZXN1bHR9YCk7CisgICAgfQorfSgpKTsKZGlmZiAtLWdp
dCBhL0pTVGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLWFuZC1zdHJpbmcuanMgYi9KU1Rl
c3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQtc3RyaW5nLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQz
OGFlNmFiMzM0NzA0NjgyMjg0OWY0MzAwNGVhNWM0MDNlZWRhMjgKLS0tIC9kZXYvbnVsbAorKysg
Yi9KU1Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQtc3RyaW5nLmpzCkBAIC0wLDAg
KzEsMjIgQEAKKyhmdW5jdGlvbiAoKSB7CisgICAgZnVuY3Rpb24gKmZpYigpCisgICAgeworICAg
ICAgICBsZXQgYSA9IDE7CisgICAgICAgIGxldCBiID0gMTsKKyAgICAgICAgbGV0IGMgPSAiUmVz
dWx0ISAiOworICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAgeWllbGQgYyArIGE7
CisgICAgICAgICAgICBbYSwgYl0gPSBbYiwgYSArIGJdOworICAgICAgICB9CisgICAgfQorCisg
ICAgbGV0IHZhbHVlID0gMDsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDFlNDsgKytpKSB7Cisg
ICAgICAgIGxldCBmID0gZmliKCk7CisgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwOyAr
K2kpIHsKKyAgICAgICAgICAgIHZhbHVlID0gZi5uZXh0KCkudmFsdWU7CisgICAgICAgIH0KKyAg
ICAgICAgaWYgKHZhbHVlICE9PSBgUmVzdWx0ISAzNTQyMjQ4NDgxNzkyNjIwMDAwMDBgKQorICAg
ICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgdmFsdWU6JHtyZXN1bHR9YCk7CisgICAgfQor
fSgpKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLmpzIGIv
SlNUZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzQwZTMzZGJj
ODY4YmVhN2E4OTNjOWVjMTZiNzc5ZWMyNmJkYjE5YwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVz
dHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLmpzCkBAIC0wLDAgKzEsMjEgQEAKKyhmdW5jdGlv
biAoKSB7CisgICAgZnVuY3Rpb24gKmZpYigpCisgICAgeworICAgICAgICBsZXQgYSA9IDE7Cisg
ICAgICAgIGxldCBiID0gMTsKKyAgICAgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgICAgIHlp
ZWxkIGE7CisgICAgICAgICAgICBbYSwgYl0gPSBbYiwgYSArIGJdOworICAgICAgICB9CisgICAg
fQorCisgICAgbGV0IHZhbHVlID0gMDsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDFlNDsgKytp
KSB7CisgICAgICAgIGxldCBmID0gZmliKCk7CisgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwg
MTAwOyArK2kpIHsKKyAgICAgICAgICAgIHZhbHVlID0gZi5uZXh0KCkudmFsdWU7CisgICAgICAg
IH0KKyAgICAgICAgaWYgKHZhbHVlICE9PSAzNTQyMjQ4NDgxNzkyNjIwMDAwMDApCisgICAgICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCB2YWx1ZToke3Jlc3VsdH1gKTsKKyAgICB9Cit9KCkp
OwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZyYW1lLWVtcHR5LmpzIGIv
SlNUZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZyYW1lLWVtcHR5LmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU5ZTg4
NTViZmFjM2M1NmRmOTI2YWJkNDI4YzAxM2MzMzQxNjI3NDYKLS0tIC9kZXYvbnVsbAorKysgYi9K
U1Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZnJhbWUtZW1wdHkuanMKQEAgLTAsMCArMSwzNCBAQAor
ZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVuYywgZXJyb3JNZXNzYWdlKSB7CisgICAgdmFyIGVycm9y
VGhyb3duID0gZmFsc2U7CisgICAgdmFyIGVycm9yID0gbnVsbDsKKyAgICB0cnkgeworICAgICAg
ICBmdW5jKCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBlcnJvclRocm93biA9IHRydWU7
CisgICAgICAgIGVycm9yID0gZTsKKyAgICB9CisgICAgaWYgKCFlcnJvclRocm93bikKKyAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKCdub3QgdGhyb3duJyk7CisgICAgaWYgKFN0cmluZyhlcnJvcikg
IT09IGVycm9yTWVzc2FnZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgZXJyb3I6ICR7
U3RyaW5nKGVycm9yKX1gKTsKK30KKworc2hvdWxkVGhyb3coZnVuY3Rpb24gKCkgeworICAgIGZ1
bmN0aW9uICpmaWIoZmxhZykKKyAgICB7CisgICAgICAgIGxldCBhID0gMTsKKyAgICAgICAgbGV0
IGIgPSAxOworICAgICAgICB5aWVsZCA0MjsKKyAgICAgICAgaWYgKGZsYWcpCisgICAgICAgICAg
ICByZXR1cm4gYzsKKyAgICAgICAgbGV0IGMgPSA1MDA7CisgICAgfQorCisgICAgbGV0IHZhbHVl
ID0gMDsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDFlNDsgKytpKSB7CisgICAgICAgIGZvciAo
bGV0IHYgb2YgZmliKGZhbHNlKSkgeworICAgICAgICB9CisgICAgfQorICAgIGZvciAobGV0IHYg
b2YgZmliKHRydWUpKSB7CisgICAgfQorfSwgYFJlZmVyZW5jZUVycm9yOiBDYW5ub3QgYWNjZXNz
IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUuYCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9n
ZW5lcmF0b3ItcmVkdWNlZC1zYXZlLXBvaW50LXB1dC10by1zY29wZS5qcyBiL0pTVGVzdHMvc3Ry
ZXNzL2dlbmVyYXRvci1yZWR1Y2VkLXNhdmUtcG9pbnQtcHV0LXRvLXNjb3BlLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmMwYzc1ZmE0OTE0M2MxN2JlMTRmMzI4MWUzZjY1NDM0ZjM1MTM5ZTgKLS0tIC9kZXYvbnVs
bAorKysgYi9KU1Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItcmVkdWNlZC1zYXZlLXBvaW50LXB1dC10
by1zY29wZS5qcwpAQCAtMCwwICsxLDI4IEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4
cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5l
dyBFcnJvcihgYmFkIHZhbHVlOiAke1N0cmluZyhhY3R1YWwpfWApOworfQorCitmdW5jdGlvbiBl
cnJvcigpCit7CisgICAgdGhyb3cgIm9rIjsKK30KKworZnVuY3Rpb24qIGdlbigpCit7CisgICAg
dmFyIHZhbHVlID0gNDI7CisgICAgdHJ5IHsKKyAgICAgICAgeWllbGQgMzAwOworICAgICAgICB2
YWx1ZSA9IDUwMDsKKyAgICAgICAgZXJyb3IoKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAg
IHlpZWxkIDQyOworICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgfQorICAgIHJldHVybiAyMDA7
Cit9CisKK3ZhciBnID0gZ2VuKCk7CitzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgMzAwKTsKK3No
b3VsZEJlKGcubmV4dCgpLnZhbHVlLCA0Mik7CitzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgNTAw
KTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2dlbmVyYXRvci10cmFuc2Zlci1yZWdpc3Rl
ci1iZXlvbmQtbXV0aXBsZS15aWVsZHMuanMgYi9KU1Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItdHJh
bnNmZXItcmVnaXN0ZXItYmV5b25kLW11dGlwbGUteWllbGRzLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZlMjA4
ZjU4MTI5NmY5YWUwOGE2YmZiMzk4YjQ4MjI1NzQyZDZiNzgKLS0tIC9kZXYvbnVsbAorKysgYi9K
U1Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItdHJhbnNmZXItcmVnaXN0ZXItYmV5b25kLW11dGlwbGUt
eWllbGRzLmpzCkBAIC0wLDAgKzEsMTggQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhw
ZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3
IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCisKK2Z1bmN0aW9uICpnZW4oKQor
eworICAgIHZhciB0ZXN0ID0gNDI7CisgICAgeWllbGQgMzI7CisgICAgeWllbGQgMzM7CisgICAg
eWllbGQgdGVzdDsKK30KKwordmFyIGcgPSBnZW4oKTsKK3Nob3VsZEJlKGcubmV4dCgpLnZhbHVl
LCAzMik7CitzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgMzMpOworc2hvdWxkQmUoZy5uZXh0KCku
dmFsdWUsIDQyKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>286902</attachid>
            <date>2016-08-24 16:01:17 -0700</date>
            <delta_ts>2016-08-24 19:49:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-152723-20160824155916.patch</filename>
            <type>text/plain</type>
            <size>192542</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA0OTM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
NzkzZjU3OWRkYjc5NDVjMTI0YzRiMzUwNzk1N2RmZmUzNGJlZjIyLi5iY2M0NTA1ZWM4ZDdkMGJi
NWRkZDY5MTA3MzVjOGFmOWRhMGMzOWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNDMgQEAKKzIwMTYtMDgtMjQgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0RGR11bRlRMXSBJbXBsZW1lbnQgRVM2IEdlbmVyYXRvcnMgaW4g
REZHIC8gRlRMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNTI3MjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBGSVhNRTogVGhpcyBkb2N1bWVudCBpcyBvdXQgb2YgZGF0ZS4gSSdsbCB1cGRhdGUgaXQuLi4K
KworICAgICAgICBUaGlzIHBhdGNoIGludHJvZHVjZXMgREZHIGFuZCBGVEwgc3VwcG9ydCBmb3Ig
RVM2IGdlbmVyYXRvcnMuCisgICAgICAgIEVTNiBnZW5lcmF0b3IgaXMgY29tcGlsZWQgYnkgdGhl
IEJ5dGVjb2RlR2VuZXJhdG9yLiBCdXQgYXQgdGhlIGxhc3QgcGhhc2UsIEJ5dGVjb2RlR2VuZXJh
dG9yIHBlcmZvcm1zICJnZW5lcmF0b3JpZmljYXRpb24iIG9udG8gdGhlIHVubGlua2VkIGNvZGUu
CisgICAgICAgIEluIEJ5dGVjb2RlR2VuZXJhdG9yIHBoYXNlLCB3ZSBqdXN0IGVtaXQgb3BfeWll
bGQgZm9yIGVhY2ggeWllbGQgcG9pbnQuIEFuZCB3ZSBkb24ndCBlbWl0IGFueSBnZW5lcmF0b3Ig
cmVsYXRlZCBzd2l0Y2gsIHNhdmUsIGFuZCByZXN1bWUgc2VxdWVuY2VzCisgICAgICAgIGhlcmUu
IFRob3NlIGFyZSBlbWl0dGVkIGJ5IHRoZSBnZW5lcmF0b3JpZmljYXRpb24gcGhhc2UuIFNvIHRo
ZSBncmFwaCBpcyBzdXBlciBzaW1wbGUhIEJlZm9yZSB0aGUgZ2VuZXJhdG9yaWZpY2F0aW9uLCB0
aGUgZ3JhcGggbG9va3MgbGlrZSB0aGlzLgorCisgICAgICAgICAgICAgZW50cnkgLT4gLi4uLi4u
IC0+IG9wX3lpZWxkIC0+IC4uLi4uIC0+IG9wX3lpZWxkIC0+IC4uLgorCisgICAgICAgIFJvdWdo
bHkgc3BlYWtpbmcsIGluIHRoZSBnZW5lcmF0b3JpZmljYXRpb24gcGhhc2UsIHdlIHR1cm4gb3V0
IHdoaWNoIHZhcmlhYmxlcyBzaG91bGQgYmUgc2F2ZWQgYW5kIHJlc3VtZWQgYXQgZWFjaCBvcF95
aWVsZC4KKyAgICAgICAgVGhpcyBpcyBkb25lIGJ5IGxpdmVuZXNzIGFuYWx5c2lzLiBBZnRlciB0
aGF0LCB3ZSBjb252ZXJ0IG9wX3lpZWxkIHRvIHRoZSBzZXF1ZW5jZSBvZiAib3BfcHV0X3RvX3Nj
b3BlIiwgIm9wX3JldCIsIGFuZCAib3BfZ2V0X2Zyb21fc2NvcGUiLgorICAgICAgICBvcF9wdXRf
dG9fc2NvcGUgYW5kIG9wX2dldF9mcm9tX3Njb3BlIHNlcXVlbmNlcyBhcmUgY29ycmVzcG9uZGlu
ZyB0byB0aGUgc2F2ZSBhbmQgcmVzdW1lIHNlcXVlbmNlcy4gV2Ugc2V0IHVwIHRoZSBzY29wZSBm
b3IgdGhlIGdlbmVyYXRvciBmcmFtZSBhbmQKKyAgICAgICAgcGVyZm9ybSBvcF9wdXRfdG9fc2Nv
cGUgYW5kIG9wX2dldF9mcm9tX3Njb3BlIG9udG8gaXQuIFRoZSBsaXZlIHJlZ2lzdGVycyBhcmUg
c2F2ZWQgYW5kIHJlc3VtZWQgb3ZlciB0aGUgZ2VuZXJhdG9yJ3MgbmV4dCgpIGNhbGxzIGJ5IHVz
aW5nIHRoaXMKKyAgICAgICAgc3BlY2lhbCBnZW5lcmF0b3IgZnJhbWUgc2NvcGUuIEFuZCB3ZSBh
bHNvIHNldCB1cCB0aGUgZ2xvYmFsIHN3aXRjaCBmb3IgdGhlIGdlbmVyYXRvci4KKworICAgICAg
ICBJbiB0aGUgZ2VuZXJhdG9yaWZpY2F0aW9uIHBoYXNlLAorCisgICAgICAgIDEuIFdlIGNvbnN0
cnVjdCB0aGUgQnl0ZWNvZGVHcmFwaCBmcm9tIHRoZSB1bmxpbmtlZCBpbnN0cnVjdGlvbnMuIFRo
aXMgY29uc3RydWN0cyB0aGUgYmFzaWMgYmxvY2tzLCBhbmQgaXQgaXMgdXNlZCBpbiB0aGUgc3Vi
c2VxdWVudCBhbmFseXNpcy4KKyAgICAgICAgMi4gV2UgcGVyZm9ybSB0aGUgYW5hbHlzaXMgb250
byB0aGUgdW5saW5rZWQgY29kZS4gV2UgZXh0cmFjdCB0aGUgbGl2ZSB2YXJpYWJsZXMgYXQgZWFj
aCBvcF95aWVsZC4KKyAgICAgICAgMy4gV2UgaW5zZXJ0IHRoZSBnZXRfZnJvbV9zY29wZSBhbmQg
cHV0X3RvX3Njb3BlIGF0IGVhY2ggb3BfeWllbGQuIFdoaWNoIHJlZ2lzdGVycyBzaG91bGQgYmUg
c2F2ZWQgYW5kIHJlc3VtZWQgaXMgb2ZmZXJlZCBieSAoMikuCisgICAgICAgICAgIFRoZW4sIGNs
aXAgdGhlIG9wX3lpZWxkIHRoZW1zZWx2ZXMuIEFuZCB3ZSBhbHNvIGluc2VydCB0aGUgc3dpdGNo
X2ltbS4gVGhlIGp1bXAgdGFyZ2V0cyBvZiB0aGlzIHN3aXRjaCBhcmUganVzdCBhZnRlciB0aGlz
IG9wX3N3aXRjaF9pbW0gYW5kIGVhY2ggb3BfeWllbGQgcG9pbnQuCisKKyAgICAgICAgT25lIGlu
dGVyZXN0aW5nIHBvaW50IGlzIHRyeS1yYW5nZS4gV2Ugc3BsaXQgdGhlIHRyeS1yYW5nZSBhdCB0
aGUgb3BfeWllbGQgcG9pbnQgaW4gQnl0ZWNvZGVHZW5lcmF0b3IgcGhhc2UuIFRoaXMgZHJvcHMg
dGhlIGhhY2t5IHRoaW5nIHRoYXQgaXMgaW50cm9kdWNlZCBpbiBbMV0uCisgICAgICAgIElmIHRo
ZSB0cnktcmFuZ2UgY292ZXJzIHRoZSByZXN1bWUgc2VxdWVuY2VzLCB0aGUgZXhjZXB0aW9uJ3Mg
cmVnaXN0ZXIgaXMgdG91Y2hlZCBhcyBgdXNlZGAgZXZlbiBpZiB3ZSBkb24ndCBwcm9wZXJseSBy
ZXN1bWUgdGhlIHJlZ2lzdGVycyBpbiB0aGUgcmVzdW1lIHNlcXVlbmNlLgorICAgICAgICBQcmV2
aW91c2x5LCB3ZSBoYW5kbGUgdGhpcyBlZGdlIGNhc2UgYnkgdHJlYXRpbmcgb3BfcmVzdW1lIGFz
IHNwZWNpYWwgaW4gdGhlIGxpdmVuZXNzIGFuYWx5c2lzWzFdLiBOb3csIGNhcmVmdWxseSBzcGxp
dCB0aGUgdHJ5LXJhbmdlIG5vdCB0byBjb3ZlciB0aGlzIHJlc3VtZSBzZXF1ZW5jZQorICAgICAg
ICB0byBhdm9pZCB0aGlzIHByb2JsZW0uIE9LLCBsZXQncyBzaG93IHRoZSBleGFtcGxlLgorCisg
ICAgICAgIEZpcnN0LCB0aGVyZSBpcyB0aGUgbm9ybWFsIGJ5dGVjb2RlIHNlcXVlbmNlLiBIZXJl
LCB8IHJlcHJlc2VudHMgdGhlIG9mZnNldHMsIGFuZCBbXSByZXByZXNlbnRzIHRoZSBhY3R1YWwg
Ynl0ZWNvZGVzLgorCisgICAgICAgICAgICBieXRlY29kZXMgICBbIF18WyBdfFsgXXxbIF18WyBd
fFsgXXxbIF18WyBdfFsgXQorICAgICAgICAgICAgdHJ5LXJhbmdlICAgPC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLT4KKworICAgICAgICBXaGVuIHdlIGVtaXQgdGhlIG9wX3lpZWxk
IGluIHRoZSBieXRlY29kZSBnZW5lcmF0b3IsIHdlIGNhcmVmdWxseSBzcGxpdCB0aGUgdHJ5LXJh
bmdlLgorCisgICAgICAgIFRoZSByZXdyaXRpbmcgZG9uZSBieSB0aGUgQnl0ZWNvZGVSZXdyaXRl
ciBpcyBleGVjdXRlZCBpbiBhIGJhdGNoIG1hbm5lci4gU2luY2UgdGhlc2UgbW9kaWZpY2F0aW9u
IGNoYW5nZXMgdGhlIGJhc2ljIGJsb2NrcyBhbmQgc2l6ZSBvZiB1bmxpbmtlZCBpbnN0cnVjdGlv
bnMsCisgICAgICAgIEJ5dGVjb2RlUmV3cml0ZXIgYWxzbyBwZXJmb3JtcyB0aGUgb2Zmc2V0IGFk
anVzdG1lbnQgZm9yIFVubGlua2VkQ29kZUJsb2NrLiBTbywgdGhpcyBCeXRlY29kZVJld3JpdGVy
IGlzIHBlcmZvcm1lZCBvbnRvIHRoZSBCeXRlY29kZUdyYXBoIGluc3RlYWQgb2YgQnl0ZWNvZGVC
YXNpY0Jsb2NrLgorICAgICAgICBUaGUgcmVhc29uIHdoeSB3ZSB0YWtlIHRoaXMgZGVzaWduIGlz
IHNpbXBsZTogd2UgZG9uJ3Qgd2FudCB0byBuZXdseSBjcmVhdGUgdGhlIGJhc2ljIGJsb2NrcyBh
bmQgb3Bjb2RlcyBmb3IgdGhpcyBlYXJseSBwaGFzZSBsaWtlIERGRy4gSW5zdGVhZCwgd2UgcGVy
Zm9ybSB0aGUKKyAgICAgICAgbW9kaWZpY2F0aW9uIGFuZCBhZGp1c3RtZW50IHRvIHRoZSB1bmxp
bmtlZCBpbnN0cnVjdGlvbnMgYW5kIFVubGlua2VkQ29kZUJsb2NrIGluIGEgaW4tcGxhY2UgbWFu
bmVyLgorCisgICAgICAgIEFmdGVyIHRoYXQgcGhhc2UsIHRoZSBkYXRhIGZsb3cgb2YgdGhlIGdl
bmVyYXRvci1zYXZlZC1hbmQtcmVzdW1lZC1yZWdpc3RlcnMgYXJlIGV4cGxpY2l0bHkgcmVwcmVz
ZW50ZWQgYnkgdGhlIGdldF9mcm9tX3Njb3BlIGFuZCBwdXRfdG9fc2NvcGUuCisgICAgICAgIEFu
ZCB0aGUgc3dpdGNoIGlzIGluc2VydGVkIHRvIHJlcHJlc2VudCB0aGUgYWN0dWFsIGNvbnRyb2wg
ZmxvdyBmb3IgdGhlIGdlbmVyYXRvci4gQW5kIG9wX3lpZWxkIGlzIHJlbW92ZWQuIFNpbmNlIHdl
IHVzZSB0aGUgZXhpc3RpbmcgYnl0ZWNvZGVzIChvcF9zd2l0Y2hfaW1tLCBvcF9wdXRfdG9fc2Nv
cGUKKyAgICAgICAgb3BfcmV0LCBhbmQgb3BfZ2V0X2Zyb21fc2NvcGUpLCBERkcgYW5kIEZUTCBj
aGFuZ2VzIGFyZSBub3QgbmVjZXNzYXJ5LiBUaGlzIHBhdGNoIGFsc28gZHJvcHMgZGF0YSBzdHJ1
Y3R1cmVzIGFuZCBpbXBsZW1lbnRhdGlvbnMgZm9yIHRoZSBvbGQgZ2VuZXJhdG9yLAorICAgICAg
ICBvcF9yZXN1bWUsIG9wX3NhdmUgaW1wbGVtZW50YXRpb25zIGFuZCBHZW5lcmF0b3JGcmFtZS4K
KworICAgICAgICBOb3RlIHRoYXQgdGhpcyBwYXRjaCBkb2VzIG5vdCBsZXZlcmFnZSB0aGUgcmVj
ZW50IG11bHRpIGVudHJ5cG9pbnRzIHN1cHBvcnQgaW4gQjMuIEFmdGVyIHRoaXMgcGF0Y2ggaXMg
aW50cm9kdWNlZCwgd2Ugd2lsbCBzdWJtaXQgYSBuZXcgcGF0Y2ggdGhhdCBsZXZlcmFnZXMgdGhl
IG11bHRpCisgICAgICAgIGVudHJ5cG9pbnRzIGZvciBnZW5lcmF0b3IncyByZXN1bWUgYW5kIHNl
ZXMgdGhlIHBlcmZvcm1hbmNlIGdhaW4uCisKKyAgICAgICAgVE9ETzogUGVyZiBUQkEgaGVyZS4K
KworICAgICAgICBbMV06IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NTkyODEKKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEphdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYnVpbHRpbnMvR2VuZXJh
dG9yUHJvdG90eXBlLmpzOgorICAgICAgICAoZ2xvYmFsUHJpdmF0ZS5nZW5lcmF0b3JSZXN1bWUp
OgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5jcHA6CisgICAgICAgIChK
U0M6OmlzQnJhbmNoKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVCYXNpY0Jsb2NrOjpjb21wdXRl
Qnl0ZWNvZGVCYXNpY0Jsb2Nrc0ludGVybmFsKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVCYXNp
Y0Jsb2NrOjpjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2Nrcyk6CisgICAgICAgIChKU0M6OmxpbmtC
bG9ja3MpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2Nr
cyk6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmg6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlQmFzaWNCbG9jazo6Ynl0ZWNvZGVPZmZzZXRzKToKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVCYXNpY0Jsb2NrOjpzdWNjZXNzb3JzKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVCYXNpY0Jsb2NrOjppbmRleCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlQmFzaWNC
bG9jazo6YWRkU3VjY2Vzc29yKToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUdlbmVyYXRv
cmlmaWNhdGlvbi5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcmlm
aWNhdGlvbjo6Qnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24pOgorICAgICAgICAoSlNDOjpCeXRl
Y29kZUdlbmVyYXRvcmlmaWNhdGlvbjo6Z3JhcGgpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdl
bmVyYXRvcmlmaWNhdGlvbjo6eWllbGRzKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0
b3JpZmljYXRpb246OmVudGVyUG9pbnQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRv
cmlmaWNhdGlvbjo6c3RvcmFnZUZvckdlbmVyYXRvckxvY2FsKToKKyAgICAgICAgKEpTQzo6R2Vu
ZXJhdG9yTGl2ZW5lc3NBbmFseXNpczo6R2VuZXJhdG9yTGl2ZW5lc3NBbmFseXNpcyk6CisgICAg
ICAgIChKU0M6OkdlbmVyYXRvckxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGVEZWZzRm9yQnl0ZWNv
ZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JMaXZlbmVzc0FuYWx5c2lzOjpjb21w
dXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yTGl2ZW5l
c3NBbmFseXNpczo6cnVuKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRp
b246OnJ1bik6CisgICAgICAgIChKU0M6OnBlcmZvcm1HZW5lcmF0b3JpZmljYXRpb24pOgorICAg
ICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmg6IENvcGllZCBmcm9t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNJ
bmxpbmVzLmguCisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVHcmFwaC5oOiBBZGRlZC4KKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVHcmFwaDo6Y29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVHcmFwaDo6aW5zdHJ1Y3Rpb25zKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHcmFwaDo6
YmFzaWNCbG9ja3NJblJldmVyc2VPcmRlcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR3JhcGg6
OmJsb2NrQ29udGFpbnNCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR3Jh
cGg6OmZpbmRCYXNpY0Jsb2NrRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpCeXRl
Y29kZUdyYXBoOjpmaW5kQmFzaWNCbG9ja1dpdGhMZWFkZXJPZmZzZXQpOgorICAgICAgICAoSlND
OjpCeXRlY29kZUdyYXBoOjpzaXplKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHcmFwaDo6YXQp
OgorICAgICAgICAoSlNDOjpCeXRlY29kZUdyYXBoOjpvcGVyYXRvcltdKToKKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVHcmFwaDo6YmVnaW4pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdyYXBoOjpl
bmQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdyYXBoOjpyYmVnaW4pOgorICAgICAgICAoSlND
OjpCeXRlY29kZUdyYXBoOjpyZW5kKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHcmFwaDo6Zmly
c3QpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdyYXBoOjpsYXN0KToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHcmFwaDxCbG9jaz46OkJ5dGVjb2RlR3JhcGgpOgorICAgICAgICAqIGJ5dGVjb2Rl
L0J5dGVjb2RlTGlzdC5qc29uOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NB
bmFseXNpcy5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Qnl0
ZWNvZGVMaXZlbmVzc0FuYWx5c2lzKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc0Fu
YWx5c2lzOjpjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpnZXRMaXZlbmVzc0luZm9BdEJ5
dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpj
b21wdXRlRnVsbExpdmVuZXNzKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5
c2lzOjpjb21wdXRlS2lsbHMpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlz
aXM6OmR1bXBSZXN1bHRzKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lz
Ojpjb21wdXRlKToKKyAgICAgICAgKEpTQzo6aXNWYWxpZFJlZ2lzdGVyRm9yTGl2ZW5lc3MpOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpnZXRMZWFkZXJPZmZzZXRGb3JCYXNpY0Jsb2NrKTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6ZmluZEJhc2ljQmxvY2tXaXRoTGVhZGVyT2Zmc2V0KTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6YmxvY2tDb250YWluc0J5dGVjb2RlT2Zmc2V0KTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6ZmluZEJhc2ljQmxvY2tGb3JCeXRlY29kZU9mZnNldCk6IERlbGV0
ZWQuCisgICAgICAgIChKU0M6OnN0ZXBPdmVySW5zdHJ1Y3Rpb24pOiBEZWxldGVkLgorICAgICAg
ICAoSlNDOjpjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJ5dGVjb2RlT2Zmc2V0KTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6Y29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCbG9jayk6IERlbGV0ZWQuCisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6cnVuTGl2ZW5lc3NGaXhwb2lu
dCk6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lz
Lmg6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzSW5saW5lcy5o
OgorICAgICAgICAoSlNDOjppc1ZhbGlkUmVnaXN0ZXJGb3JMaXZlbmVzcyk6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlTGl2ZW5lc3NQcm9wYWdhdGlvbjxEZXJpdmVkQW5hbHlzaXM+OjpzdGVwT3Zl
ckluc3RydWN0aW9uKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0aW9u
PERlcml2ZWRBbmFseXNpcz46OmNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQnl0ZWNvZGVPZmZzZXQp
OgorICAgICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzUHJvcGFnYXRpb248RGVyaXZlZEFuYWx5
c2lzPjo6Y29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCbG9jayk6CisgICAgICAgIChKU0M6OkJ5dGVj
b2RlTGl2ZW5lc3NQcm9wYWdhdGlvbjxEZXJpdmVkQW5hbHlzaXM+OjpnZXRMaXZlbmVzc0luZm9B
dEJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0
aW9uPERlcml2ZWRBbmFseXNpcz46OnJ1bkxpdmVuZXNzRml4cG9pbnQpOgorICAgICAgICAqIGJ5
dGVjb2RlL0J5dGVjb2RlUmV3cml0ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6Qnl0ZWNv
ZGVSZXdyaXRlcjo6YXBwbHlNb2RpZmljYXRpb24pOgorICAgICAgICAoSlNDOjpCeXRlY29kZVJl
d3JpdGVyOjpleGVjdXRlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVSZXdyaXRlcjo6YWRqdXN0
SnVtcFRhcmdldHNJbkp1bXBPcGVyYXRpb24pOgorICAgICAgICAoSlNDOjpCeXRlY29kZVJld3Jp
dGVyOjppbnNlcnRJbXBsKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVSZXdyaXRlcjo6aW5zZXJ0
U3dpdGNoSW1tZWRpYXRlSW1wbCk6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVSZXdyaXRl
ci5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVSZXdyaXRlcjo6Q29tbWFuZDo6bGVu
Z3RoKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVSZXdyaXRlcjo6RnJhZ21lbnQ6OkZyYWdtZW50
KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVSZXdyaXRlcjo6RnJhZ21lbnQ6OmFwcGVuZCk6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlUmV3cml0ZXI6OkJ5dGVjb2RlUmV3cml0ZXIpOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZVJld3JpdGVyOjppbnNlcnRCZWZvcmUpOgorICAgICAgICAoSlNDOjpC
eXRlY29kZVJld3JpdGVyOjppbnNlcnRBZnRlcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlUmV3
cml0ZXI6Omluc2VydEZyYWdtZW50QmVmb3JlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVSZXdy
aXRlcjo6aW5zZXJ0RnJhZ21lbnRBZnRlcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlUmV3cml0
ZXI6Omluc2VydFN3aXRjaEltbWVkaWF0ZUJlZm9yZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
UmV3cml0ZXI6OnJlbW92ZUJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVSZXdyaXRl
cjo6Z3JhcGgpOgorICAgICAgICAoSlNDOjpCeXRlY29kZVJld3JpdGVyOjphZGp1c3RPZmZzZXQp
OgorICAgICAgICAoSlNDOjpCeXRlY29kZVJld3JpdGVyOjphZGp1c3RPZmZzZXRXaXRoSW5zZXJ0
aW9ucyk6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaDoKKyAgICAgICAgKEpT
Qzo6Y29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OmNvbXB1dGVE
ZWZzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6
CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6
Q29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6aGFu
ZGxlckZvckluZGV4KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpzaHJpbmtUb0ZpdCk6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6dmFsdWVQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQpOgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmxpdmVuZXNzQW5hbHlzaXNTbG93KToKKyAgICAgICAg
KiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjppc0NvbnN0
YW50UmVnaXN0ZXJJbmRleCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bGl2ZW5lc3NBbmFs
eXNpcyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQp
OiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2RlL0hhbmRsZXJJbmZvLmg6CisgICAgICAgIChK
U0M6OkhhbmRsZXJJbmZvQmFzZTo6aGFuZGxlckZvckluZGV4KToKKyAgICAgICAgKiBieXRlY29k
ZS9QcmVjaXNlSnVtcFRhcmdldHMuY3BwOgorICAgICAgICAoSlNDOjpnZXRKdW1wVGFyZ2V0c0Zv
ckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0
c0ludGVybmFsKToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyk6Cisg
ICAgICAgIChKU0M6OnJlY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyk6CisgICAgICAgIChKU0M6
OmZpbmRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKiBieXRlY29kZS9Q
cmVjaXNlSnVtcFRhcmdldHMuaDoKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9j
ay5jcHA6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjpoYW5kbGVyRm9yQnl0ZWNv
ZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6aGFuZGxlckZvcklu
ZGV4KToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OmFwcGx5TW9kaWZpY2F0aW9u
KToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oOgorICAgICAgICAoSlND
OjpVbmxpbmtlZFN0cmluZ0p1bXBUYWJsZTo6b2Zmc2V0Rm9yVmFsdWUpOgorICAgICAgICAoSlND
OjpVbmxpbmtlZENvZGVCbG9jazo6bnVtQ2FsbGVlTG9jYWxzKToKKyAgICAgICAgKiBieXRlY29k
ZS9WaXJ0dWFsUmVnaXN0ZXIuaDoKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IpOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENvbXBsZXhQb3BTY29wZXMpOgorICAg
ICAgICAoSlNDOjpwcmVwYXJlSnVtcFRhYmxlRm9yU3RyaW5nU3dpdGNoKToKKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRZaWVsZFBvaW50KToKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRTYXZlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Qnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXRSZXN1bWUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdEdlbmVyYXRvclN0YXRlTGFiZWwpOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6YmVnaW5HZW5lcmF0b3IpOiBEZWxldGVkLgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW5kR2VuZXJhdG9yKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRvclN0YXRlUmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpC
eXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdG9yVmFsdWVSZWdpc3Rlcik6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0b3JSZXN1bWVNb2RlUmVnaXN0ZXIpOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdG9yRnJhbWVSZWdpc3Rlcik6CisgICAg
ICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6CisgICAgICAgIChKU0M6OkZ1bmN0
aW9uTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6
CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlNDOjpm
aW5kRXhjZXB0aW9uSGFuZGxlcik6CisgICAgICAgIChKU0M6OkdldENhdGNoSGFuZGxlckZ1bmN0
b3I6Om9wZXJhdG9yKCkpOgorICAgICAgICAoSlNDOjpVbndpbmRGdW5jdG9yOjpvcGVyYXRvcigp
KToKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5oOgorICAgICAgICAqIGludGVy
cHJldGVyL0ludGVycHJldGVySW5saW5lcy5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmguCisgICAgICAgIChKU0M6OkludGVy
cHJldGVyOjpnZXRPcGNvZGVJRCk6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChK
U0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcyk6CisgICAgICAgICogaml0L0pJVC5oOgor
ICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29w
X3NhdmUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcmVzdW1lKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbToKKyAgICAgICAg
KiBwYXJzZXIvUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBh
cnNlSW5uZXIpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VHZW5lcmF0
b3JGdW5jdGlvblNvdXJjZUVsZW1lbnRzKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlw
ZT46OmNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIu
aDoKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6
OlNMT1dfUEFUSF9ERUNMKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQ
YXRocy5oOgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJhdG9yRnJhbWUuY3BwOiBSZW1vdmVkLgor
ICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6R2VuZXJhdG9yRnJhbWUpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6ZmluaXNoQ3JlYXRpb24pOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlU3RydWN0dXJlKTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OmNyZWF0ZSk6IERlbGV0ZWQuCisgICAgICAg
IChKU0M6OkdlbmVyYXRvckZyYW1lOjpzYXZlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6R2Vu
ZXJhdG9yRnJhbWU6OnJlc3VtZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkdlbmVyYXRvckZy
YW1lOjp2aXNpdENoaWxkcmVuKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0dlbmVyYXRv
ckZyYW1lLmg6IFJlbW92ZWQuCisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpsb2NhbHMp
OiBEZWxldGVkLgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6bG9jYWxBdCk6IERlbGV0
ZWQuCisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpvZmZzZXRPZkxvY2Fscyk6IERlbGV0
ZWQuCisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjphbGxvY2F0aW9uU2l6ZUZvckxvY2Fs
cyk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9KU0dlbmVyYXRvckZ1bmN0aW9uLmg6Cisg
ICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpWTSk6CisgICAgICAg
ICogcnVudGltZS9WTS5oOgorCiAyMDE2LTA4LTI0ICBSeWFuIEhhZGRhZCAgPHJ5YW5oYWRkYWRA
YXBwbGUuY29tPgogCiAgICAgICAgIFJlYmFzZWxpbmUgYnVpbHRpbnMtZ2VuZXJhdG9yLXRlc3Rz
IHNpbmNlIHIyMDQ4NTQgd2FzIHJvbGxlZCBvdXQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0No
YW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGJlMDkwMzhmY2I0OTkwY2QwYTAx
MGQyZThjMGYwNzM2ODU2MDM4ZmMuLmI3ZGYzYjBmYjQxMGQ0ODEzNGIxZDIwZjAxYTNjYmY5ZGQ4
NWI3MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nCkBAIC0xLDUgKzEsMTggQEAKIDIwMTYtMDgtMjQgIFl1c3VrZSBTdXp1a2kgIDx1
dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAKKyAgICAgICAgW0RGR11bRlRMXSBJbXBsZW1lbnQgRVM2
IEdlbmVyYXRvcnMgaW4gREZHIC8gRlRMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNTI3MjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIHd0Zi9GYXN0Qml0VmVjdG9yLmg6CisgICAgICAgIChXVEY6OkZh
c3RCaXRWZWN0b3I6OkZhc3RCaXRWZWN0b3IpOgorICAgICAgICAqIHd0Zi9JbmRleGVkQ29udGFp
bmVySXRlcmF0b3IuaDoKKyAgICAgICAgKFdURjo6SW5kZXhlZENvbnRhaW5lckl0ZXJhdG9yOjpv
cGVyYXRvci0tKToKKyAgICAgICAgKFdURjo6SW5kZXhlZENvbnRhaW5lckl0ZXJhdG9yOjpmaW5k
UHJldik6CisKKzIwMTYtMDgtMjQgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5j
b20+CisKICAgICAgICAgW0pTQ10gTW92ZSBnZW5lcmljIGRhdGEgc3RydWN0dXJlcyBvdXQgb2Yg
QjMKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MTE1
NQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggM2VkNTRiODE3MjY4MThh
MDg4NGNkYzMyNWNmMTdkZDI1YjJlYmU2MS4uM2JlZjQyY2Y4MmFkMGU3N2Q4NTY0MDFjOTM3MGRl
MDEzMDg1MjM5MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMu
dHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTgxLDYg
KzE4MSw4IEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgYnl0ZWNvZGUvQXJyYXlB
bGxvY2F0aW9uUHJvZmlsZS5jcHAKICAgICBieXRlY29kZS9BcnJheVByb2ZpbGUuY3BwCiAgICAg
Ynl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcAorICAgIGJ5dGVjb2RlL0J5dGVjb2RlR2Vu
ZXJhdG9yaWZpY2F0aW9uLmNwcAorICAgIGJ5dGVjb2RlL0J5dGVjb2RlUmV3cml0ZXIuY3BwCiAg
ICAgYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5jcHAKICAgICBieXRlY29kZS9C
eXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwCiAgICAgYnl0ZWNvZGUvQ2FsbEVkZ2UuY3BwCkBA
IC02NjEsNyArNjYzLDYgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBydW50aW1l
L0Z1bmN0aW9uSGFzRXhlY3V0ZWRDYWNoZS5jcHAKICAgICBydW50aW1lL0Z1bmN0aW9uUHJvdG90
eXBlLmNwcAogICAgIHJ1bnRpbWUvRnVuY3Rpb25SYXJlRGF0YS5jcHAKLSAgICBydW50aW1lL0dl
bmVyYXRvckZyYW1lLmNwcAogICAgIHJ1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rv
ci5jcHAKICAgICBydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcAogICAgIHJ1
bnRpbWUvR2VuZXJhdG9yUHJvdG90eXBlLmNwcApAQCAtOTc5LDYgKzk4MCwxMCBAQCBhZGRfY3Vz
dG9tX2NvbW1hbmQoCiAgICAgQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAke0pBVkFTQ1JJ
UFRDT1JFX0RJUn0vZ2VuZXJhdGUtYnl0ZWNvZGUtZmlsZXMgLS1ieXRlY29kZXNfaCAke0RFUklW
RURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0J5dGVjb2Rlcy5oIC0taW5pdF9ieXRlY29k
ZXNfYXNtICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5pdEJ5dGVjb2Rl
cy5hc20gJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCiAg
ICAgVkVSQkFUSU0pCiAKK2xpc3QoQVBQRU5EIEphdmFTY3JpcHRDb3JlX0hFQURFUlMKKyAgICAk
e0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0J5dGVjb2Rlcy5oCispCisKIGFk
ZF9jdXN0b21fY29tbWFuZCgKICAgICBPVVRQVVQgJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQ
VENPUkVfRElSfS9MTEludERlc2lyZWRPZmZzZXRzLmgKICAgICBNQUlOX0RFUEVOREVOQ1kgJHtK
QVZBU0NSSVBUQ09SRV9ESVJ9L29mZmxpbmVhc20vZ2VuZXJhdGVfb2Zmc2V0X2V4dHJhY3Rvci5y
YgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBhMWQ5ODNkOGYwMDdlOTBjMzYyYjU5
OTVkNDYwZTI5MDNiMjI1M2Q2Li5hM2RkYWRkM2UwNWFiZDlhMDAyMGUwMTc5OWEwNzgzYjMwMGI0
M2NmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTI3MCw4ICsxMjcwLDYgQEAK
IAkJNzA5RkI4NkMxQUUzMzVDNjAwMzlEMDY5IC8qIFdlYWtTZXRQcm90b3R5cGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwOUZCODY2MUFFMzM1QzYw
MDM5RDA2OSAvKiBXZWFrU2V0UHJvdG90eXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzBCMEE5RDExQTlCNjY0NjAwMDEzMDZBIC8qIFJ1bnRp
bWVGbGFncy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NzBCMEE5RDAxQTlCNjYyMDAwMDEzMDZBIC8qIFJ1bnRpbWVGbGFncy5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcwQjc5MTkxMUMwMjRBMTMwMDI0
ODFFMiAvKiBTb3VyY2VDb2RlS2V5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3MEI3OTE4RTFDMDI0NEM5MDAyNDgxRTIgLyogU291cmNlQ29kZUtleS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTcwQjc5
MTkyMUMwMjRBMjMwMDI0ODFFMiAvKiBHZW5lcmF0b3JGcmFtZS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEI3OTE4MzFDMDI0NDMyMDAyNDgxRTIg
LyogR2VuZXJhdG9yRnJhbWUuY3BwICovOyB9OwotCQk3MEI3OTE5MzFDMDI0QTI4MDAyNDgxRTIg
LyogR2VuZXJhdG9yRnJhbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDcwQjc5MTg0MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGcmFtZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcwQjc5MTk0
MUMwMjRBMjgwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwQjc5MTg1MUMwMjQ0
MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCAqLzsgfTsKIAkJ
NzBCNzkxOTUxQzAyNEEyODAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3Iu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwQjc5MTg2
MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzBCNzkxOTYxQzAy
NEEyODAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwQjc5MTg3MUMwMjQ0MzIwMDI0
ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5jcHAgKi87IH07CkBAIC0yMDQ1LDYg
KzIwNDMsMTEgQEAKIAkJRTE4RTNBNTkwREY5Mjc4QzAwRDkwQjM0IC8qIFZNLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxOEUzQTU3MERGOTI3OEMw
MEQ5MEIzNCAvKiBWTS5jcHAgKi87IH07CiAJCUUzMThDQkMwMUI4QUVGNTEwMEEyOTI5RCAvKiBK
U01vZHVsZU5hbWVzcGFjZU9iamVjdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFMzE4Q0JCRTFCOEFFRjUxMDBBMjkyOUQgLyogSlNNb2R1bGVOYW1l
c3BhY2VPYmplY3QuY3BwICovOyB9OwogCQlFMzE4Q0JDMTFCOEFFRjUxMDBBMjkyOUQgLyogSlNN
b2R1bGVOYW1lc3BhY2VPYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEUzMThDQkJGMUI4QUVGNTEwMEEyOTI5RCAvKiBKU01vZHVsZU5hbWVzcGFj
ZU9iamVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCUUzMjhEQUU3MUQzOEQwMDQwMDFBMjUyOSAvKiBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlv
bi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0Qy
NjQyNjFEMzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwICov
OyB9OworCQlFMzI4REFFODFEMzhEMDA1MDAxQTI1MjkgLyogQnl0ZWNvZGVHZW5lcmF0b3JpZmlj
YXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUz
RDI2NDI3MUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUUzMjhEQUU5
MUQzOEQwMDUwMDFBMjUyOSAvKiBCeXRlY29kZUdyYXBoLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0QyNjQyODFEMzhDMDQyMDAwQkUxNzQgLyogQnl0
ZWNvZGVHcmFwaC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCUUzMjhEQUVBMUQzOEQwMDUwMDFBMjUyOSAvKiBCeXRlY29kZVJld3JpdGVyLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzRDI2NDI5MUQz
OEMwNDIwMDBCRTE3NCAvKiBCeXRlY29kZVJld3JpdGVyLmNwcCAqLzsgfTsKKwkJRTMyOERBRUIx
RDM4RDAwNTAwMUEyNTI5IC8qIEJ5dGVjb2RlUmV3cml0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzRDI2NDJBMUQzOEMwNDIwMDBCRTE3NCAvKiBC
eXRlY29kZVJld3JpdGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJRTMzNjM3QTUxQjYzMjIwMjAwRUUwODQwIC8qIFJlZmxlY3RPYmplY3QuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMzNjM3QTMx
QjYzMjIwMjAwRUUwODQwIC8qIFJlZmxlY3RPYmplY3QuY3BwICovOyB9OwogCQlFMzM2MzdBNjFC
NjMyMjAyMDBFRTA4NDAgLyogUmVmbGVjdE9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMzNjM3QTQxQjYzMjIwMjAwRUUwODQwIC8qIFJlZmxl
Y3RPYmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQlFMzNCM0UyNjFCN0FCRDc1MDA0OERCMkUgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
T2JqZWN0Lmx1dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTMzQjNFMjUxQjdBQkQ3NTAwNDhEQjJFIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9i
amVjdC5sdXQuaCAqLzsgfTsKQEAgLTIwNjksNiArMjA3Miw3IEBACiAJCUUzNzk0RTc1MUI3N0VC
OTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFseXplci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzc5NEU3MzFCNzdFQjk3MDA1NTQzQUUgLyogTW9kdWxl
QW5hbHl6ZXIuY3BwICovOyB9OwogCQlFMzc5NEU3NjFCNzdFQjk3MDA1NTQzQUUgLyogTW9kdWxl
QW5hbHl6ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUzNzk0RTc0MUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFseXplci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzOTYzQ0VFMUI3M0Y3NTAw
MEVCNENFNSAvKiBOb2Rlc0FuYWx5emVNb2R1bGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5NjNDRUMxQjczRjc1MDAwRUI0Q0U1IC8qIE5vZGVz
QW5hbHl6ZU1vZHVsZS5jcHAgKi87IH07CisJCUUzOUQ0NUY1MUQzOTAwNTYwMEIzQjM3NyAvKiBJ
bnRlcnByZXRlcklubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEUzOUQ5RDg0MUQzOTAwMDYwMDY2NzI4MiAvKiBJbnRlcnByZXRlcklubGluZXMu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzlE
QTRBNjFCN0U4QjdDMDA4NEYzM0EgLyogSlNNb2R1bGVSZWNvcmQuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5REE0QTQxQjdFOEI3QzAwODRGMzNB
IC8qIEpTTW9kdWxlUmVjb3JkLmNwcCAqLzsgfTsKIAkJRTM5REE0QTcxQjdFOEI3QzAwODRGMzNB
IC8qIEpTTW9kdWxlUmVjb3JkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFMzlEQTRBNTFCN0U4QjdDMDA4NEYzM0EgLyogSlNNb2R1bGVSZWNvcmQuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFM0QyMzlD
ODFCODI5QzFDMDBCQkVGNjcgLyogSlNNb2R1bGVFbnZpcm9ubWVudC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0QyMzlDNjFCODI5QzFDMDBCQkVG
NjcgLyogSlNNb2R1bGVFbnZpcm9ubWVudC5jcHAgKi87IH07CkBAIC0zNDkyLDggKzM0OTYsNiBA
QAogCQk3MDlGQjg2NTFBRTMzNUM2MDAzOUQwNjkgLyogV2Vha1NldFByb3RvdHlwZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWFrU2V0UHJvdG90eXBlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzA5RkI4NjYxQUUzMzVDNjAwMzlEMDY5IC8q
IFdlYWtTZXRQcm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vh
a1NldFByb3RvdHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MEIwQTlEMDFB
OUI2NjIwMDAwMTMwNkEgLyogUnVudGltZUZsYWdzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFJ1bnRpbWVGbGFncy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3
MEI3OTE4MzFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnJhbWUuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR2VuZXJhdG9yRnJhbWUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQk3MEI3OTE4NDFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9y
RnJhbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2VuZXJhdG9yRnJhbWUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzBCNzkxODUxQzAyNDQzMjAwMjQ4MUUy
IC8qIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcwQjc5MTg2MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5l
cmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNzBCNzkxODcxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uUHJv
dG90eXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdlbmVyYXRv
ckZ1bmN0aW9uUHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQz
MzMsMTAgKzQzMzUsMTYgQEAKIAkJRTM3OTRFNzMxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFu
YWx5emVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1vZHVsZUFu
YWx5emVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM3OTRFNzQxQjc3RUI5
NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IE1vZHVsZUFuYWx5emVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUz
OTYzQ0VDMUI3M0Y3NTAwMEVCNENFNSAvKiBOb2Rlc0FuYWx5emVNb2R1bGUuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTm9kZXNBbmFseXplTW9kdWxlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM5RDlEODQxRDM5MDAwNjAwNjY3MjgyIC8qIElu
dGVycHJldGVySW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRl
cnByZXRlcklubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM5REE0QTQx
QjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEpTTW9kdWxlUmVjb3JkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRTM5REE0QTUxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTW9kdWxlUmVjb3JkLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzRDIzOUM2MUI4MjlDMUMwMEJCRUY2NyAvKiBKU01v
ZHVsZUVudmlyb25tZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEpTTW9kdWxlRW52aXJvbm1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlF
M0QyMzlDNzFCODI5QzFDMDBCQkVGNjcgLyogSlNNb2R1bGVFbnZpcm9ubWVudC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU01vZHVsZUVudmlyb25tZW50Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzRDI2NDI2MUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRlY29k
ZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUUzRDI2NDI3MUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRlY29kZUdlbmVyYXRvcmlm
aWNhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCeXRlY29kZUdlbmVy
YXRvcmlmaWNhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFM0QyNjQyODFE
MzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNvZGVHcmFwaC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBCeXRlY29kZUdyYXBoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUUzRDI2NDI5MUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRlY29kZVJld3JpdGVyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJ5dGVjb2RlUmV3cml0ZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFM0QyNjQyQTFEMzhDMDQyMDAwQkUxNzQgLyogQnl0
ZWNvZGVSZXdyaXRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCeXRlY29k
ZVJld3JpdGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzRUY4ODcyMUI2NkRG
MjMwMDNGMjZDQiAvKiBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlFM0VGODg3MzFCNjZERjIzMDAzRjI2Q0IgLyogSlNQcm9w
ZXJ0eU5hbWVJdGVyYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1By
b3BlcnR5TmFtZUl0ZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0OURD
MTQ5MTJFRjI2MUEwMDE4NEExRiAvKiBTb3VyY2VQcm92aWRlckNhY2hlSXRlbS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTb3VyY2VQcm92aWRlckNhY2hlSXRlbS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTA2Myw2ICs1MDcxLDcgQEAKIAkJMTQyOUQ3N0Ew
RUQyMEQ3MzAwQjg5NjE5IC8qIGludGVycHJldGVyICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7
CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlFMzlEOUQ4NDFEMzkwMDA2MDA2NjcyODIgLyogSW50ZXJw
cmV0ZXJJbmxpbmVzLmggKi8sCiAJCQkJMEY1NUYwRjExNEQxMDYzNjAwQUM3NjQ5IC8qIEFic3Ry
YWN0UEMuY3BwICovLAogCQkJCTBGNTVGMEYyMTREMTA2MzYwMEFDNzY0OSAvKiBBYnN0cmFjdFBD
LmggKi8sCiAJCQkJMTQyOUQ4NUIwRUQyMThFOTAwQjg5NjE5IC8qIENMb29wU3RhY2suY3BwICov
LApAQCAtNTc0Myw4ICs1NzUyLDYgQEAKIAkJCQlGNjkyQTg1RDAyNTU1OTdEMDFGRjYwRjcgLyog
RnVuY3Rpb25Qcm90b3R5cGUuaCAqLywKIAkJCQk2MkQyRDM4RDFBREYxMDNGMDAwMjA2QzEgLyog
RnVuY3Rpb25SYXJlRGF0YS5jcHAgKi8sCiAJCQkJNjJEMkQzOEUxQURGMTAzRjAwMDIwNkMxIC8q
IEZ1bmN0aW9uUmFyZURhdGEuaCAqLywKLQkJCQk3MEI3OTE4MzFDMDI0NDMyMDAyNDgxRTIgLyog
R2VuZXJhdG9yRnJhbWUuY3BwICovLAotCQkJCTcwQjc5MTg0MUMwMjQ0MzIwMDI0ODFFMiAvKiBH
ZW5lcmF0b3JGcmFtZS5oICovLAogCQkJCTcwQjc5MTg1MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5l
cmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCAqLywKIAkJCQk3MEI3OTE4NjFDMDI0NDMyMDAy
NDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5oICovLAogCQkJCTcwQjc5MTg3
MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5jcHAgKi8sCkBA
IC02NjMwLDYgKzY2MzcsMTEgQEAKIAkJOTY5QTA3OEYwRUQxRDNBRTAwRjFGNjgxIC8qIGJ5dGVj
b2RlICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlFM0Qy
NjQyNjFEMzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwICov
LAorCQkJCUUzRDI2NDI3MUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRlY29kZUdlbmVyYXRvcmlmaWNh
dGlvbi5oICovLAorCQkJCUUzRDI2NDI4MUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRlY29kZUdyYXBo
LmggKi8sCisJCQkJRTNEMjY0MjkxRDM4QzA0MjAwMEJFMTc0IC8qIEJ5dGVjb2RlUmV3cml0ZXIu
Y3BwICovLAorCQkJCUUzRDI2NDJBMUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRlY29kZVJld3JpdGVy
LmggKi8sCiAJCQkJNTM3MEI0RjMxQkYyNUVBMjAwNUM0MEZDIC8qIEFkYXB0aXZlSW5mZXJyZWRQ
cm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2UuY3BwICovLAogCQkJCTUzNzBCNEY0MUJGMjVFQTIw
MDVDNDBGQyAvKiBBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnRCYXNlLmgg
Ki8sCiAJCQkJMEY4MzM1QjQxNjM5QzFFMzAwMTQ0M0I1IC8qIEFycmF5QWxsb2NhdGlvblByb2Zp
bGUuY3BwICovLApAQCAtNzE4NCw2ICs3MTk2LDcgQEAKIAkJCQkwRkVDODUyRDFCREFDREFDMDA4
MEZGNzQgLyogQjNQcm9jZWR1cmVJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVDODVC
RDFCRTE0NjJGMDA4MEZGNzQgLyogQjNSZWR1Y2VTdHJlbmd0aC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEZFQzg1MzExQkRBQ0RBQzAwODBGRjc0IC8qIEIzU3RhY2ttYXBTcGVjaWFsLmggaW4gSGVh
ZGVycyAqLywKKwkJCQlFMzI4REFFODFEMzhEMDA1MDAxQTI1MjkgLyogQnl0ZWNvZGVHZW5lcmF0
b3JpZmljYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUM4NTM1MUJEQUNEQUMwMDgwRkY3
NCAvKiBCM1Nsb3RCYXNlVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUM4NTM2MUJEQUNE
QUMwMDgwRkY3NCAvKiBCM1N1Y2Nlc3NvckNvbGxlY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGRUM4NTM4MUJEQUNEQUMwMDgwRkY3NCAvKiBCM1N3aXRjaENhc2UuaCBpbiBIZWFkZXJzICov
LApAQCAtNzQ0OSw3ICs3NDYyLDYgQEAKIAkJCQlBNzM3ODEwRTE3OTlFQTJFMDA4MTc1MzMgLyog
REZHTmF0dXJhbExvb3BzLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkVDQTNFQTEzMkRFRjFDMDAy
QjJBRDcgLyogREZHTm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGQjkyMUIxNkQwMkYwMTAw
NTVBNURCIC8qIERGR05vZGVBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovLAotCQkJCTcwQjc5MTkz
MUMwMjRBMjgwMDI0ODFFMiAvKiBHZW5lcmF0b3JGcmFtZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEZBNTgxQkIxNTBFOTUzMDAwQjlBMkQ5IC8qIERGR05vZGVGbGFncy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEYzMDBCNzgxOEFCMDUxMTAwQTZENzJFIC8qIERGR05vZGVPcmlnaW4uaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGQTU4MUJDMTUwRTk1MzAwMEI5QTJEOSAvKiBERkdOb2RlVHlwZS5oIGlu
IEhlYWRlcnMgKi8sCkBAIC03NDY0LDYgKzc0NzYsNyBAQAogCQkJCTBGRDhBMzI2MTdENTFGNTcw
MENBMkM0MCAvKiBERkdPU1JFbnRyeXBvaW50Q3JlYXRpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEZDMDk3NkExNDY4QTZGNzAwQ0YyNDQyIC8qIERGR09TUkV4aXQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGMjM1QkVDMTcxNzhFNzMwMDY5MEM3RiAvKiBERkdPU1JFeGl0QmFzZS5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJRTM5RDQ1RjUxRDM5MDA1NjAwQjNCMzc3IC8qIEludGVycHJldGVy
SW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGQjkyMUMxNkQwMkYxMTAwNTVBNURCIC8q
IERGR09TUkV4aXRDb21waWxhdGlvbkluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQzA5Nzcx
MTQ2OTNBRjUwMENGMjQ0MiAvKiBERkdPU1JFeGl0Q29tcGlsZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGNzAyNUFBMTcxNEIwRkMwMDM4MkMwRSAvKiBERkdPU1JFeGl0Q29tcGlsZXJDb21tb24u
aCBpbiBIZWFkZXJzICovLApAQCAtNzcyNiw2ICs3NzM5LDcgQEAKIAkJCQlFMzNCM0UyNjFCN0FC
RDc1MDA0OERCMkUgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0Lmx1dC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQTUzMjQzOEMxODU2ODMzNTAwMkVENjkyIC8qIEluc3BlY3RvclByb3Rv
Y29sT2JqZWN0cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU1RDkzQUMxODUxNEY3OTAwNDAwREVE
IC8qIEluc3BlY3RvclByb3RvY29sVHlwZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzMjhEQUVC
MUQzOEQwMDUwMDFBMjUyOSAvKiBCeXRlY29kZVJld3JpdGVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBNTBFNEI2MjE4ODA5REQ1MDA2OEE0NkQgLyogSW5zcGVjdG9yUnVudGltZUFnZW50LmggaW4g
SGVhZGVycyAqLywKIAkJCQlBNTkzQ0Y4MzE4NDAzNzcxMDBCRkNFMjcgLyogSW5zcGVjdG9yVmFs
dWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NjlBMDc5OTBFRDFEM0FFMDBGMUY2ODEgLyogSW5z
dHJ1Y3Rpb24uaCBpbiBIZWFkZXJzICovLApAQCAtNzg1Nyw2ICs3ODcxLDcgQEAKIAkJCQlFMzNG
NTA4MTFCODQyOUE0MDA0MTM4NTYgLyogSlNJbnRlcm5hbFByb21pc2UuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGNjE4MzJBMUM0NUJGMDcwMDcyNDUwQiAvKiBBaXJDQ2FsbGluZ0NvbnZlbnRpb24u
aCBpbiBIZWFkZXJzICovLAogCQkJCUUzM0Y1MDc5MUI4NDIyNTcwMDQxMzg1NiAvKiBKU0ludGVy
bmFsUHJvbWlzZUNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzI4REFFOTFEMzhE
MDA1MDAxQTI1MjkgLyogQnl0ZWNvZGVHcmFwaC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTMzRjUw
ODcxQjg0NDlFRjAwNDEzODU2IC8qIEpTSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IubHV0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlFMzNGNTA4NTFCODQzN0EwMDA0MTM4NTYgLyogSlNJbnRlcm5h
bFByb21pc2VEZWZlcnJlZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTMzRjUwNzUxQjg0MjFDMDAw
NDEzODU2IC8qIEpTSW50ZXJuYWxQcm9taXNlUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKQEAg
LTg4MjMsNiArODgzOCw3IEBACiAJCQkJMTQ3RjM5QkQxMDdFQzM3NjAwNDI3QTQ4IC8qIEFyZ0xp
c3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY3NDNCQUExNkI4ODI0OTAwOUY5Mjc3IC8qIEFS
TTY0RGlzYXNzZW1ibGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2RDNCMkMzMTAxNTZCREUw
MDI4NjVFNyAvKiBBUk1Bc3NlbWJsZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTMyOERBRTcx
RDM4RDAwNDAwMUEyNTI5IC8qIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTY1QzAyODUwMTcxNzk1RTIwMDM1MUUzNSAvKiBBUk12N0Rpc2Fzc2VtYmxl
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2NUMwMjg1QzE3MTc5NjY4MDAzNTFFMzUgLyogQVJN
djdET3Bjb2RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGODMzNUI3MTYzOUMxRTYwMDE0NDNC
NSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtOTE1OCw2
ICs5MTc0LDcgQEAKIAkJCQkwRjI1RjFCMTE4MTYzNUYzMDA1MjJGMzkgLyogRlRMU2xvd1BhdGhD
YWxsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMzM4REYxMUJFOTNBRDEwMDEzQzg4RiAvKiBC
M1N0YWNrbWFwVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyNUYxQjMxODE2MzVGMzAw
NTIyRjM5IC8qIEZUTFNsb3dQYXRoQ2FsbEtleS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFMzI4
REFFQTFEMzhEMDA1MDAxQTI1MjkgLyogQnl0ZWNvZGVSZXdyaXRlci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk0MzE5REEwMzFDMUJFNDBBMDAxRDI2MEIgLyogQjNMb3dlck1hY3Jvc0FmdGVyT3B0
aW1pemF0aW9ucy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkVBMEExNjE3MDZCQjkwMDBCQjcy
MkMgLyogRlRMU3RhdGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyMzVCRTExNzE3OEUxQzAw
NjkwQzdGIC8qIEZUTFRodW5rcy5jcHAgaW4gU291cmNlcyAqLywKQEAgLTk1NjUsNyArOTU4Miw2
IEBACiAJCQkJNzlFRTBCRkYxQjRBRkI4NTAwMDM4NUM5IC8qIFZhcmlhYmxlRW52aXJvbm1lbnQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY2QzczNTAxQUM5Rjk5RjAwQkUxNjgyIC8qIFZhcmlh
YmxlV3JpdGVGaXJlRGV0YWlsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRTA1MDJDMUFBOTA5
NTYwMEQzM0IzMyAvKiBWYXJPZmZzZXQuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNzBCNzkxOTIx
QzAyNEEyMzAwMjQ4MUUyIC8qIEdlbmVyYXRvckZyYW1lLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTBGMjBDMjU5MUE4MDEzQUIwMERBMzIyOSAvKiBWaXJ0dWFsUmVnaXN0ZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJRTE4RTNBNTkwREY5Mjc4QzAwRDkwQjM0IC8qIFZNLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUZFNTkzMkE3MTgzQzVBMjYwMEExRUNDQyAvKiBWTUVudHJ5U2NvcGUuY3BwIGlu
IFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMv
R2VuZXJhdG9yUHJvdG90eXBlLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0dl
bmVyYXRvclByb3RvdHlwZS5qcwppbmRleCAzYzE0MDY4N2RmYzdlMDBlZmU5MWFlODBiMmFjNjc2
ZmE5YmY0OGY0Li40OTlkYmQzOTJlODMxM2RjZGQ4NmVjOGMxNjA1NjlkN2Q2ZjU0OWIxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvR2VuZXJhdG9yUHJvdG90eXBl
LmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9HZW5lcmF0b3JQcm90b3R5
cGUuanMKQEAgLTUxLDcgKzUxLDcgQEAgZnVuY3Rpb24gZ2VuZXJhdG9yUmVzdW1lKGdlbmVyYXRv
ciwgc2VudFZhbHVlLCByZXN1bWVNb2RlKQogICAgIH0gZWxzZSB7CiAgICAgICAgIHRyeSB7CiAg
ICAgICAgICAgICBnZW5lcmF0b3IuQGdlbmVyYXRvclN0YXRlID0gQEdlbmVyYXRvclN0YXRlRXhl
Y3V0aW5nOwotICAgICAgICAgICAgdmFsdWUgPSBnZW5lcmF0b3IuQGdlbmVyYXRvck5leHQuQGNh
bGwoZ2VuZXJhdG9yLkBnZW5lcmF0b3JUaGlzLCBnZW5lcmF0b3IsIHN0YXRlLCBzZW50VmFsdWUs
IHJlc3VtZU1vZGUpOworICAgICAgICAgICAgdmFsdWUgPSBnZW5lcmF0b3IuQGdlbmVyYXRvck5l
eHQuQGNhbGwoZ2VuZXJhdG9yLkBnZW5lcmF0b3JUaGlzLCBnZW5lcmF0b3IsIHN0YXRlLCBzZW50
VmFsdWUsIHJlc3VtZU1vZGUsIGdlbmVyYXRvci5AZ2VuZXJhdG9yRnJhbWUpOwogICAgICAgICAg
ICAgaWYgKGdlbmVyYXRvci5AZ2VuZXJhdG9yU3RhdGUgPT09IEBHZW5lcmF0b3JTdGF0ZUV4ZWN1
dGluZykgewogICAgICAgICAgICAgICAgIGdlbmVyYXRvci5AZ2VuZXJhdG9yU3RhdGUgPSBAR2Vu
ZXJhdG9yU3RhdGVDb21wbGV0ZWQ7CiAgICAgICAgICAgICAgICAgZG9uZSA9IHRydWU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2Nr
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2su
Y3BwCmluZGV4IDdmMTdjMGVmMTBiNDMzZmFjOGY1OGNiM2I5Y2E1ZDRkMDE1YmJhMDguLjQ3NTI3
YjE1YzkxZjJmZmQ0MWJhZGM5NzRjODRjODhiZjIxZWJmMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suY3BwCkBAIC0yNyw2
ICsyNyw3IEBACiAjaW5jbHVkZSAiQnl0ZWNvZGVCYXNpY0Jsb2NrLmgiCiAKICNpbmNsdWRlICJD
b2RlQmxvY2suaCIKKyNpbmNsdWRlICJJbnRlcnByZXRlcklubGluZXMuaCIKICNpbmNsdWRlICJK
U0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiUHJlY2lzZUp1bXBUYXJnZXRzLmgiCiAKQEAgLTU4LDcg
KzU5LDYgQEAgc3RhdGljIGJvb2wgaXNCcmFuY2goT3Bjb2RlSUQgb3Bjb2RlSUQpCiAgICAgY2Fz
ZSBvcF9zd2l0Y2hfaW1tOgogICAgIGNhc2Ugb3Bfc3dpdGNoX2NoYXI6CiAgICAgY2FzZSBvcF9z
d2l0Y2hfc3RyaW5nOgotICAgIGNhc2Ugb3Bfc2F2ZToKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTA1LDE1ICsxMDUsMjAgQEAg
c3RhdGljIGJvb2wgaXNKdW1wVGFyZ2V0KE9wY29kZUlEIG9wY29kZUlELCBjb25zdCBWZWN0b3I8
dW5zaWduZWQsIDMyPiYganVtcFRhcmcKICAgICByZXR1cm4gc3RkOjpiaW5hcnlfc2VhcmNoKGp1
bXBUYXJnZXRzLmJlZ2luKCksIGp1bXBUYXJnZXRzLmVuZCgpLCBieXRlY29kZU9mZnNldCk7CiB9
CiAKLXN0YXRpYyB2b2lkIGxpbmtCbG9ja3MoQnl0ZWNvZGVCYXNpY0Jsb2NrKiBwcmVkZWNlc3Nv
ciwgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBzdWNjZXNzb3IpCi17Ci0gICAgcHJlZGVjZXNzb3ItPmFk
ZFN1Y2Nlc3NvcihzdWNjZXNzb3IpOwotfQotCi12b2lkIGNvbXB1dGVCeXRlY29kZUJhc2ljQmxv
Y2tzKENvZGVCbG9jayogY29kZUJsb2NrLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2Rl
QmFzaWNCbG9jaz4+JiBiYXNpY0Jsb2NrcykKK3RlbXBsYXRlPHR5cGVuYW1lIEJsb2NrLCB0eXBl
bmFtZSBJbnN0cnVjdGlvbj4KK3ZvaWQgQnl0ZWNvZGVCYXNpY0Jsb2NrOjpjb21wdXRlQnl0ZWNv
ZGVCYXNpY0Jsb2Nrc0ludGVybmFsKEJsb2NrKiBjb2RlQmxvY2ssIEluc3RydWN0aW9uKiBpbnN0
cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCwgVmVjdG9yPHN0ZDo6dW5p
cXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9ja3MpCiB7CiAgICAgVmVjdG9y
PHVuc2lnbmVkLCAzMj4ganVtcFRhcmdldHM7Ci0gICAgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0
cyhjb2RlQmxvY2ssIGp1bXBUYXJnZXRzKTsKKyAgICBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRz
KGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb25zQmVnaW4sIGluc3RydWN0aW9uQ291bnQsIGp1bXBUYXJn
ZXRzKTsKKworICAgIGF1dG8gYXBwZW5kQmxvY2sgPSBbJl0gKHN0ZDo6dW5pcXVlX3B0cjxCeXRl
Y29kZUJhc2ljQmxvY2s+JiYgYmxvY2spIHsKKyAgICAgICAgYmxvY2stPm1faW5kZXggPSBiYXNp
Y0Jsb2Nrcy5zaXplKCk7CisgICAgICAgIGJhc2ljQmxvY2tzLmFwcGVuZChXVEZNb3ZlKGJsb2Nr
KSk7CisgICAgfTsKKworICAgIGF1dG8gbGlua0Jsb2NrcyA9IFsmXSAoQnl0ZWNvZGVCYXNpY0Js
b2NrKiBmcm9tLCBCeXRlY29kZUJhc2ljQmxvY2sqIHRvKSB7CisgICAgICAgIGZyb20tPmFkZFN1
Y2Nlc3Nvcih0byk7CisgICAgfTsKIAogICAgIC8vIENyZWF0ZSB0aGUgZW50cnkgYW5kIGV4aXQg
YmFzaWMgYmxvY2tzLgogICAgIGJhc2ljQmxvY2tzLnJlc2VydmVDYXBhY2l0eShqdW1wVGFyZ2V0
cy5zaXplKCkgKyAyKTsKQEAgLTEyMiwxOSArMTI3LDE3IEBAIHZvaWQgY29tcHV0ZUJ5dGVjb2Rl
QmFzaWNCbG9ja3MoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8
Qnl0CiAgICAgYXV0byBmaXJzdEJsb2NrID0gc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZUJhc2lj
QmxvY2s+KDAsIDApOwogICAgIGxpbmtCbG9ja3MoZW50cnkuZ2V0KCksIGZpcnN0QmxvY2suZ2V0
KCkpOwogCi0gICAgYmFzaWNCbG9ja3MuYXBwZW5kKFdURk1vdmUoZW50cnkpKTsKKyAgICBhcHBl
bmRCbG9jayhXVEZNb3ZlKGVudHJ5KSk7CiAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBjdXJyZW50
ID0gZmlyc3RCbG9jay5nZXQoKTsKLSAgICBiYXNpY0Jsb2Nrcy5hcHBlbmQoV1RGTW92ZShmaXJz
dEJsb2NrKSk7CisgICAgYXBwZW5kQmxvY2soV1RGTW92ZShmaXJzdEJsb2NrKSk7CiAKICAgICBh
dXRvIGV4aXQgPSBzdGQ6Om1ha2VfdW5pcXVlPEJ5dGVjb2RlQmFzaWNCbG9jaz4oQnl0ZWNvZGVC
YXNpY0Jsb2NrOjpFeGl0QmxvY2spOwogCiAgICAgYm9vbCBuZXh0SW5zdHJ1Y3Rpb25Jc0xlYWRl
ciA9IGZhbHNlOwogCiAgICAgSW50ZXJwcmV0ZXIqIGludGVycHJldGVyID0gY29kZUJsb2NrLT52
bSgpLT5pbnRlcnByZXRlcjsKLSAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4gPSBj
b2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCk7Ci0gICAgdW5zaWduZWQgaW5zdHJ1Y3Rp
b25Db3VudCA9IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpOwogICAgIGZvciAodW5z
aWduZWQgYnl0ZWNvZGVPZmZzZXQgPSAwOyBieXRlY29kZU9mZnNldCA8IGluc3RydWN0aW9uQ291
bnQ7KSB7Ci0gICAgICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0ZXItPmdldE9wY29k
ZUlEKGluc3RydWN0aW9uc0JlZ2luW2J5dGVjb2RlT2Zmc2V0XS51Lm9wY29kZSk7CisgICAgICAg
IE9wY29kZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGluc3RydWN0aW9u
c0JlZ2luW2J5dGVjb2RlT2Zmc2V0XSk7CiAgICAgICAgIHVuc2lnbmVkIG9wY29kZUxlbmd0aCA9
IG9wY29kZUxlbmd0aHNbb3Bjb2RlSURdOwogCiAgICAgICAgIGJvb2wgY3JlYXRlZEJsb2NrID0g
ZmFsc2U7CkBAIC0xNDIsNyArMTQ1LDcgQEAgdm9pZCBjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2Nr
cyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXQKICAgICAg
ICAgaWYgKGlzSnVtcFRhcmdldChvcGNvZGVJRCwganVtcFRhcmdldHMsIGJ5dGVjb2RlT2Zmc2V0
KSB8fCBuZXh0SW5zdHJ1Y3Rpb25Jc0xlYWRlcikgewogICAgICAgICAgICAgYXV0byBuZXdCbG9j
ayA9IHN0ZDo6bWFrZV91bmlxdWU8Qnl0ZWNvZGVCYXNpY0Jsb2NrPihieXRlY29kZU9mZnNldCwg
b3Bjb2RlTGVuZ3RoKTsKICAgICAgICAgICAgIGN1cnJlbnQgPSBuZXdCbG9jay5nZXQoKTsKLSAg
ICAgICAgICAgIGJhc2ljQmxvY2tzLmFwcGVuZChXVEZNb3ZlKG5ld0Jsb2NrKSk7CisgICAgICAg
ICAgICBhcHBlbmRCbG9jayhXVEZNb3ZlKG5ld0Jsb2NrKSk7CiAgICAgICAgICAgICBjcmVhdGVk
QmxvY2sgPSB0cnVlOwogICAgICAgICAgICAgbmV4dEluc3RydWN0aW9uSXNMZWFkZXIgPSBmYWxz
ZTsKICAgICAgICAgICAgIGJ5dGVjb2RlT2Zmc2V0ICs9IG9wY29kZUxlbmd0aDsKQEAgLTE2OSw4
ICsxNzIsNyBAQCB2b2lkIGNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzKENvZGVCbG9jayogY29k
ZUJsb2NrLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dAogCiAgICAgICAgIGJvb2wgZmFsbHNU
aHJvdWdoID0gdHJ1ZTsgCiAgICAgICAgIGZvciAodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQgPSBi
bG9jay0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKTsgYnl0ZWNvZGVPZmZzZXQgPCBibG9jay0+bGVh
ZGVyQnl0ZWNvZGVPZmZzZXQoKSArIGJsb2NrLT50b3RhbEJ5dGVjb2RlTGVuZ3RoKCk7KSB7Ci0g
ICAgICAgICAgICBjb25zdCBJbnN0cnVjdGlvbiYgY3VycmVudEluc3RydWN0aW9uID0gaW5zdHJ1
Y3Rpb25zQmVnaW5bYnl0ZWNvZGVPZmZzZXRdOwotICAgICAgICAgICAgT3Bjb2RlSUQgb3Bjb2Rl
SUQgPSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoY3VycmVudEluc3RydWN0aW9uLnUub3Bjb2Rl
KTsKKyAgICAgICAgICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0ZXItPmdldE9wY29k
ZUlEKGluc3RydWN0aW9uc0JlZ2luW2J5dGVjb2RlT2Zmc2V0XSk7CiAgICAgICAgICAgICB1bnNp
Z25lZCBvcGNvZGVMZW5ndGggPSBvcGNvZGVMZW5ndGhzW29wY29kZUlEXTsKICAgICAgICAgICAg
IC8vIElmIHdlIGZvdW5kIGEgdGVybWluYWwgYnl0ZWNvZGUsIGxpbmsgdG8gdGhlIGV4aXQgYmxv
Y2suCiAgICAgICAgICAgICBpZiAoaXNUZXJtaW5hbChvcGNvZGVJRCkpIHsKQEAgLTE4NSw3ICsx
ODcsNyBAQCB2b2lkIGNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzKENvZGVCbG9jayogY29kZUJs
b2NrLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dAogICAgICAgICAgICAgLy8gYmxvY2sgYmVj
YXVzZSB0aGUgZmluYWxseSBibG9jayB3aWxsIGNyZWF0ZSBpdHMgb3duIGNhdGNoLCB3aGljaCB3
aWxsIGdlbmVyYXRlIGEgSGFuZGxlckluZm8uCiAgICAgICAgICAgICBpZiAoaXNUaHJvdyhvcGNv
ZGVJRCkpIHsKICAgICAgICAgICAgICAgICBBU1NFUlQoYnl0ZWNvZGVPZmZzZXQgKyBvcGNvZGVM
ZW5ndGggPT0gYmxvY2stPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCkgKyBibG9jay0+dG90YWxCeXRl
Y29kZUxlbmd0aCgpKTsKLSAgICAgICAgICAgICAgICBIYW5kbGVySW5mbyogaGFuZGxlciA9IGNv
ZGVCbG9jay0+aGFuZGxlckZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KTsKKyAgICAg
ICAgICAgICAgICBhdXRvKiBoYW5kbGVyID0gY29kZUJsb2NrLT5oYW5kbGVyRm9yQnl0ZWNvZGVP
ZmZzZXQoYnl0ZWNvZGVPZmZzZXQpOwogICAgICAgICAgICAgICAgIGZhbGxzVGhyb3VnaCA9IGZh
bHNlOwogICAgICAgICAgICAgICAgIGlmICghaGFuZGxlcikgewogICAgICAgICAgICAgICAgICAg
ICBsaW5rQmxvY2tzKGJsb2NrLCBleGl0LmdldCgpKTsKQEAgLTIwNSw3ICsyMDcsNyBAQCB2b2lk
IGNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzKENvZGVCbG9jayogY29kZUJsb2NrLCBWZWN0b3I8
c3RkOjp1bmlxdWVfcHRyPEJ5dAogICAgICAgICAgICAgaWYgKGlzQnJhbmNoKG9wY29kZUlEKSkg
ewogICAgICAgICAgICAgICAgIEFTU0VSVChieXRlY29kZU9mZnNldCArIG9wY29kZUxlbmd0aCA9
PSBibG9jay0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKSArIGJsb2NrLT50b3RhbEJ5dGVjb2RlTGVu
Z3RoKCkpOwogICAgICAgICAgICAgICAgIFZlY3Rvcjx1bnNpZ25lZCwgMT4gYnl0ZWNvZGVPZmZz
ZXRzSnVtcGVkVG87Ci0gICAgICAgICAgICAgICAgZmluZEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVP
ZmZzZXQoY29kZUJsb2NrLCBieXRlY29kZU9mZnNldCwgYnl0ZWNvZGVPZmZzZXRzSnVtcGVkVG8p
OworICAgICAgICAgICAgICAgIGZpbmRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVC
bG9jaywgaW5zdHJ1Y3Rpb25zQmVnaW4sIGJ5dGVjb2RlT2Zmc2V0LCBieXRlY29kZU9mZnNldHNK
dW1wZWRUbyk7CiAKICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYmFz
aWNCbG9ja3Muc2l6ZSgpOyBpKyspIHsKICAgICAgICAgICAgICAgICAgICAgQnl0ZWNvZGVCYXNp
Y0Jsb2NrKiBvdGhlckJsb2NrID0gYmFzaWNCbG9ja3NbaV0uZ2V0KCk7CkBAIC0yMjksMTAgKzIz
MSwyMCBAQCB2b2lkIGNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzKENvZGVCbG9jayogY29kZUJs
b2NrLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dAogICAgICAgICB9CiAgICAgfQogCi0gICAg
YmFzaWNCbG9ja3MuYXBwZW5kKFdURk1vdmUoZXhpdCkpOworICAgIGFwcGVuZEJsb2NrKFdURk1v
dmUoZXhpdCkpOwogICAgIAogICAgIGZvciAoYXV0byYgYmFzaWNCbG9jayA6IGJhc2ljQmxvY2tz
KQogICAgICAgICBiYXNpY0Jsb2NrLT5zaHJpbmtUb0ZpdCgpOwogfQogCit2b2lkIEJ5dGVjb2Rl
QmFzaWNCbG9jazo6Y29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MoQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25D
b3VudCwgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYgYmFzaWNC
bG9ja3MpCit7CisgICAgY29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3NJbnRlcm5hbChjb2RlQmxv
Y2ssIGluc3RydWN0aW9uc0JlZ2luLCBpbnN0cnVjdGlvbkNvdW50LCBiYXNpY0Jsb2Nrcyk7Cit9
CisKK3ZvaWQgQnl0ZWNvZGVCYXNpY0Jsb2NrOjpjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2NrcyhV
bmxpbmtlZENvZGVCbG9jayogY29kZUJsb2NrLCBVbmxpbmtlZEluc3RydWN0aW9uKiBpbnN0cnVj
dGlvbnNCZWdpbiwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCwgVmVjdG9yPHN0ZDo6dW5pcXVl
X3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9ja3MpCit7CisgICAgQnl0ZWNvZGVC
YXNpY0Jsb2NrOjpjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2Nrc0ludGVybmFsKGNvZGVCbG9jaywg
aW5zdHJ1Y3Rpb25zQmVnaW4sIGluc3RydWN0aW9uQ291bnQsIGJhc2ljQmxvY2tzKTsKK30KKwog
fSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmgKaW5kZXggY2Q3MTQ3N2VkNTA2YWE3ODgwMjE2NWZhY2Ri
N2E2ZDQ2ZjM4ZGMyYS4uN2YxODRmNDc3NjIwYWNhZDc0NTEzYTA1MDgyZDU3ODIyZGZkODUyMiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNC
bG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2lj
QmxvY2suaApAQCAtMzMsNiArMzMsOSBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIENvZGVC
bG9jazsKK2NsYXNzIFVubGlua2VkQ29kZUJsb2NrOworc3RydWN0IEluc3RydWN0aW9uOworc3Ry
dWN0IFVubGlua2VkSW5zdHJ1Y3Rpb247CiAKIGNsYXNzIEJ5dGVjb2RlQmFzaWNCbG9jayB7CiAg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC00OCwxOCArNTEsMjggQEAgY2xhc3MgQnl0
ZWNvZGVCYXNpY0Jsb2NrIHsKICAgICB1bnNpZ25lZCBsZWFkZXJCeXRlY29kZU9mZnNldCgpIHsg
cmV0dXJuIG1fbGVhZGVyQnl0ZWNvZGVPZmZzZXQ7IH0KICAgICB1bnNpZ25lZCB0b3RhbEJ5dGVj
b2RlTGVuZ3RoKCkgeyByZXR1cm4gbV90b3RhbEJ5dGVjb2RlTGVuZ3RoOyB9CiAKLSAgICBWZWN0
b3I8dW5zaWduZWQ+JiBieXRlY29kZU9mZnNldHMoKSB7IHJldHVybiBtX2J5dGVjb2RlT2Zmc2V0
czsgfQotICAgIHZvaWQgYWRkQnl0ZWNvZGVMZW5ndGgodW5zaWduZWQpOworICAgIGNvbnN0IFZl
Y3Rvcjx1bnNpZ25lZD4mIGJ5dGVjb2RlT2Zmc2V0cygpIGNvbnN0IHsgcmV0dXJuIG1fYnl0ZWNv
ZGVPZmZzZXRzOyB9CiAKLSAgICBWZWN0b3I8Qnl0ZWNvZGVCYXNpY0Jsb2NrKj4mIHN1Y2Nlc3Nv
cnMoKSB7IHJldHVybiBtX3N1Y2Nlc3NvcnM7IH0KLSAgICB2b2lkIGFkZFN1Y2Nlc3NvcihCeXRl
Y29kZUJhc2ljQmxvY2sqIGJsb2NrKSB7IG1fc3VjY2Vzc29ycy5hcHBlbmQoYmxvY2spOyB9Cisg
ICAgY29uc3QgVmVjdG9yPEJ5dGVjb2RlQmFzaWNCbG9jayo+JiBzdWNjZXNzb3JzKCkgY29uc3Qg
eyByZXR1cm4gbV9zdWNjZXNzb3JzOyB9CiAKICAgICBGYXN0Qml0VmVjdG9yJiBpbigpIHsgcmV0
dXJuIG1faW47IH0KICAgICBGYXN0Qml0VmVjdG9yJiBvdXQoKSB7IHJldHVybiBtX291dDsgfQog
CisgICAgdW5zaWduZWQgaW5kZXgoKSBjb25zdCB7IHJldHVybiBtX2luZGV4OyB9CisKKyAgICBz
dGF0aWMgdm9pZCBjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2NrcyhDb2RlQmxvY2sqLCBJbnN0cnVj
dGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQsIFZlY3Rv
cjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mKTsKKyAgICBzdGF0aWMgdm9p
ZCBjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2NrcyhVbmxpbmtlZENvZGVCbG9jayosIFVubGlua2Vk
SW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50
LCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+Jik7CisKIHByaXZh
dGU6CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQmxvY2ssIHR5cGVuYW1lIEluc3RydWN0aW9uPiBz
dGF0aWMgdm9pZCBjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2Nrc0ludGVybmFsKEJsb2NrKiBjb2Rl
QmxvY2ssIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgaW5zdHJ1Y3Rp
b25Db3VudCwgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYgYmFz
aWNCbG9ja3MpOworCisgICAgdm9pZCBhZGRTdWNjZXNzb3IoQnl0ZWNvZGVCYXNpY0Jsb2NrKiBi
bG9jaykgeyBtX3N1Y2Nlc3NvcnMuYXBwZW5kKGJsb2NrKTsgfQorCisgICAgdm9pZCBhZGRCeXRl
Y29kZUxlbmd0aCh1bnNpZ25lZCk7CisKICAgICB1bnNpZ25lZCBtX2xlYWRlckJ5dGVjb2RlT2Zm
c2V0OwogICAgIHVuc2lnbmVkIG1fdG90YWxCeXRlY29kZUxlbmd0aDsKKyAgICB1bnNpZ25lZCBt
X2luZGV4OwogCiAgICAgVmVjdG9yPHVuc2lnbmVkPiBtX2J5dGVjb2RlT2Zmc2V0czsKICAgICBW
ZWN0b3I8Qnl0ZWNvZGVCYXNpY0Jsb2NrKj4gbV9zdWNjZXNzb3JzOwpAQCAtNjgsOCArODEsNiBA
QCBjbGFzcyBCeXRlY29kZUJhc2ljQmxvY2sgewogICAgIEZhc3RCaXRWZWN0b3IgbV9vdXQ7CiB9
OwogCi12b2lkIGNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzKENvZGVCbG9jayosIFZlY3Rvcjxz
dGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mKTsKLQogaW5saW5lIEJ5dGVjb2Rl
QmFzaWNCbG9jazo6Qnl0ZWNvZGVCYXNpY0Jsb2NrKHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBs
ZW5ndGgpCiAgICAgOiBtX2xlYWRlckJ5dGVjb2RlT2Zmc2V0KHN0YXJ0KQogICAgICwgbV90b3Rh
bEJ5dGVjb2RlTGVuZ3RoKGxlbmd0aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjc4ZjdhYmExNGY3OTJiNGMyZGZjOWZhYmM2YWRiZjMzYmRhYmFlMTgKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3Jp
ZmljYXRpb24uY3BwCkBAIC0wLDAgKzEsMjYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2
IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKyAqIENvcHlyaWdodCAoQykg
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5oIgorCisj
aW5jbHVkZSAiQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzSW5saW5lcy5oIgorI2luY2x1ZGUgIkJ5
dGVjb2RlUmV3cml0ZXIuaCIKKyNpbmNsdWRlICJCeXRlY29kZVVzZURlZi5oIgorI2luY2x1ZGUg
IklkZW50aWZpZXJJbmxpbmVzLmgiCisjaW5jbHVkZSAiSW50ZXJwcmV0ZXJJbmxpbmVzLmgiCisj
aW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCisj
aW5jbHVkZSAiSlNHZW5lcmF0b3JGdW5jdGlvbi5oIgorI2luY2x1ZGUgIlN0cm9uZ0lubGluZXMu
aCIKKyNpbmNsdWRlICJVbmxpbmtlZENvZGVCbG9jay5oIgorI2luY2x1ZGUgPHd0Zi9PcHRpb25h
bC5oPgorCituYW1lc3BhY2UgSlNDIHsKKworc3RydWN0IFlpZWxkRGF0YSB7CisgICAgc2l6ZV90
IHBvaW50IHsgMCB9OworICAgIGludCBhcmd1bWVudCB7IDAgfTsKKyAgICBGYXN0Qml0VmVjdG9y
IGxpdmVuZXNzOworfTsKKworY2xhc3MgQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24geworcHVi
bGljOgorICAgIHR5cGVkZWYgVmVjdG9yPFlpZWxkRGF0YT4gWWllbGRzOworCisgICAgQnl0ZWNv
ZGVHZW5lcmF0b3JpZmljYXRpb24oVW5saW5rZWRDb2RlQmxvY2sqIGNvZGVCbG9jaywgVW5saW5r
ZWRDb2RlQmxvY2s6OlVucGFja2VkSW5zdHJ1Y3Rpb25zJiBpbnN0cnVjdGlvbnMsIFN5bWJvbFRh
YmxlKiBnZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlLCBpbnQgZ2VuZXJhdG9yRnJhbWVTeW1ib2xU
YWJsZUluZGV4KQorICAgICAgICA6IG1fZ3JhcGgoY29kZUJsb2NrLCBpbnN0cnVjdGlvbnMpCisg
ICAgICAgICwgbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlKCpjb2RlQmxvY2stPnZtKCksIGdl
bmVyYXRvckZyYW1lU3ltYm9sVGFibGUpCisgICAgICAgICwgbV9nZW5lcmF0b3JGcmFtZVN5bWJv
bFRhYmxlSW5kZXgoZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZUluZGV4KQorICAgIHsKKyAgICAg
ICAgZm9yIChCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrIDogbV9ncmFwaCkgeworICAgICAgICAg
ICAgZm9yICh1bnNpZ25lZCBieXRlY29kZU9mZnNldCA6IGJsb2NrLT5ieXRlY29kZU9mZnNldHMo
KSkgeworICAgICAgICAgICAgICAgIGNvbnN0IFVubGlua2VkSW5zdHJ1Y3Rpb24qIHBjID0gJm1f
Z3JhcGguaW5zdHJ1Y3Rpb25zKClbYnl0ZWNvZGVPZmZzZXRdOworICAgICAgICAgICAgICAgIHN3
aXRjaCAocGMtPnUub3Bjb2RlKSB7CisgICAgICAgICAgICAgICAgY2FzZSBvcF9lbnRlcjogewor
ICAgICAgICAgICAgICAgICAgICBtX2VudGVyUG9pbnQgPSBieXRlY29kZU9mZnNldDsKKyAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAg
ICAgY2FzZSBvcF95aWVsZDogeworICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsaXZlQ2Fs
bGVlTG9jYWxzSW5kZXggPSBwY1syXS51LmluZGV4OworICAgICAgICAgICAgICAgICAgICBpZiAo
bGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID49IG1feWllbGRzLnNpemUoKSkKKyAgICAgICAgICAgICAg
ICAgICAgICAgIG1feWllbGRzLnJlc2l6ZShsaXZlQ2FsbGVlTG9jYWxzSW5kZXggKyAxKTsKKyAg
ICAgICAgICAgICAgICAgICAgWWllbGREYXRhJiBkYXRhID0gbV95aWVsZHNbbGl2ZUNhbGxlZUxv
Y2Fsc0luZGV4XTsKKyAgICAgICAgICAgICAgICAgICAgZGF0YS5wb2ludCA9IGJ5dGVjb2RlT2Zm
c2V0OworICAgICAgICAgICAgICAgICAgICBkYXRhLmFyZ3VtZW50ID0gcGNbM10udS5vcGVyYW5k
OworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBzdHJ1Y3Qg
U3RvcmFnZSB7CisgICAgICAgIElkZW50aWZpZXIgaWRlbnRpZmllcjsKKyAgICAgICAgdW5zaWdu
ZWQgaWRlbnRpZmllckluZGV4OworICAgICAgICBTY29wZU9mZnNldCBzY29wZU9mZnNldDsKKyAg
ICB9OworCisgICAgdm9pZCBydW4oKTsKKworICAgIEJ5dGVjb2RlR3JhcGg8VW5saW5rZWRDb2Rl
QmxvY2s+JiBncmFwaCgpIHsgcmV0dXJuIG1fZ3JhcGg7IH0KKworICAgIGNvbnN0IFlpZWxkcyYg
eWllbGRzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX3lpZWxkczsKKyAgICB9CisK
KyAgICBZaWVsZHMmIHlpZWxkcygpCisgICAgeworICAgICAgICByZXR1cm4gbV95aWVsZHM7Cisg
ICAgfQorCisgICAgdW5zaWduZWQgZW50ZXJQb2ludCgpIGNvbnN0CisgICAgeworICAgICAgICBy
ZXR1cm4gbV9lbnRlclBvaW50OworICAgIH0KKworcHJpdmF0ZToKKyAgICBTdG9yYWdlIHN0b3Jh
Z2VGb3JHZW5lcmF0b3JMb2NhbCh1bnNpZ25lZCBpbmRleCkKKyAgICB7CisgICAgICAgIC8vIFdl
IGFzc2lnbiBhIHN5bWJvbCB0byBhIHJlZ2lzdGVyLiBUaGVyZSBpcyBvbmUtb24tb25lIGNvcnJl
c3BvbmRpbmcgYmV0d2VlbiBhIHJlZ2lzdGVyIGFuZCBhIHN5bWJvbC4KKyAgICAgICAgLy8gQnkg
ZG9pbmcgc28sIHdlIGFsbG9jYXRlIHRoZSBzcGVjaWZpYyBzdG9yYWdlIHRvIHNhdmUgdGhlIGdp
dmVuIHJlZ2lzdGVyLgorICAgICAgICAvLyBUaGlzIGFsbG93IHVzIG5vdCB0byBzYXZlIGFsbCB0
aGUgbGl2ZSByZWdpc3RlcnMgZXZlbiBpZiB0aGUgcmVnaXN0ZXJzIGFyZSBub3Qgb3ZlcndyaXR0
ZW4gZnJvbSB0aGUgcHJldmlvdXMgcmVzdW1pbmcgdGltZS4KKyAgICAgICAgLy8gSXQgbWVhbnMg
dGhhdCwgdGhlIHJlZ2lzdGVyIGNhbiBiZSByZXRyaWV2ZWQgZXZlbiBpZiB0aGUgaW1tZWRpYXRl
IHByZXZpb3VzIG9wX3NhdmUgZG9lcyBub3Qgc2F2ZSBpdC4KKworICAgICAgICBpZiAobV9zdG9y
YWdlcy5zaXplKCkgPD0gaW5kZXgpCisgICAgICAgICAgICBtX3N0b3JhZ2VzLnJlc2l6ZShpbmRl
eCArIDEpOworICAgICAgICBpZiAoT3B0aW9uYWw8U3RvcmFnZT4gc3RvcmFnZSA9IG1fc3RvcmFn
ZXNbaW5kZXhdKQorICAgICAgICAgICAgcmV0dXJuICpzdG9yYWdlOworCisgICAgICAgIFVubGlu
a2VkQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBtX2dyYXBoLmNvZGVCbG9jaygpOworICAgICAgICBJ
ZGVudGlmaWVyIGlkZW50aWZpZXIgPSBJZGVudGlmaWVyOjpmcm9tVWlkKFByaXZhdGVOYW1lKCkp
OworICAgICAgICB1bnNpZ25lZCBpZGVudGlmaWVySW5kZXggPSBjb2RlQmxvY2stPm51bWJlck9m
SWRlbnRpZmllcnMoKTsKKyAgICAgICAgY29kZUJsb2NrLT5hZGRJZGVudGlmaWVyKGlkZW50aWZp
ZXIpOworICAgICAgICBTY29wZU9mZnNldCBzY29wZU9mZnNldCA9IG1fZ2VuZXJhdG9yRnJhbWVT
eW1ib2xUYWJsZS0+dGFrZU5leHRTY29wZU9mZnNldChOb0xvY2tpbmdOZWNlc3NhcnkpOworICAg
ICAgICBtX2dlbmVyYXRvckZyYW1lU3ltYm9sVGFibGUtPnNldChOb0xvY2tpbmdOZWNlc3Nhcnks
IGlkZW50aWZpZXIuaW1wbCgpLCBTeW1ib2xUYWJsZUVudHJ5KFZhck9mZnNldChzY29wZU9mZnNl
dCkpKTsKKworICAgICAgICBTdG9yYWdlIHN0b3JhZ2UgPSB7CisgICAgICAgICAgICBpZGVudGlm
aWVyLAorICAgICAgICAgICAgaWRlbnRpZmllckluZGV4LAorICAgICAgICAgICAgc2NvcGVPZmZz
ZXQKKyAgICAgICAgfTsKKyAgICAgICAgbV9zdG9yYWdlc1tpbmRleF0gPSBzdG9yYWdlOworICAg
ICAgICByZXR1cm4gc3RvcmFnZTsKKyAgICB9CisKKyAgICB1bnNpZ25lZCBtX2VudGVyUG9pbnQg
eyAwIH07CisgICAgQnl0ZWNvZGVHcmFwaDxVbmxpbmtlZENvZGVCbG9jaz4gbV9ncmFwaDsKKyAg
ICBWZWN0b3I8T3B0aW9uYWw8U3RvcmFnZT4+IG1fc3RvcmFnZXM7CisgICAgWWllbGRzIG1feWll
bGRzOworICAgIFN0cm9uZzxTeW1ib2xUYWJsZT4gbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxl
OworICAgIGludCBtX2dlbmVyYXRvckZyYW1lU3ltYm9sVGFibGVJbmRleDsKK307CisKK2NsYXNz
IEdlbmVyYXRvckxpdmVuZXNzQW5hbHlzaXMgOiBwdWJsaWMgQnl0ZWNvZGVMaXZlbmVzc1Byb3Bh
Z2F0aW9uPEdlbmVyYXRvckxpdmVuZXNzQW5hbHlzaXM+IHsKK3B1YmxpYzoKKyAgICBHZW5lcmF0
b3JMaXZlbmVzc0FuYWx5c2lzKEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uJiBnZW5lcmF0b3Jp
ZmljYXRpb24pCisgICAgICAgIDogbV9nZW5lcmF0b3JpZmljYXRpb24oZ2VuZXJhdG9yaWZpY2F0
aW9uKQorICAgIHsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgorICAg
IHZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChVbmxpbmtlZENvZGVCbG9jayogY29k
ZUJsb2NrLCBPcGNvZGVJRCBvcGNvZGVJRCwgVW5saW5rZWRJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rp
b24sIEZhc3RCaXRWZWN0b3ImLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQorICAgIHsKKyAgICAg
ICAgSlNDOjpjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9jaywgb3Bjb2RlSUQs
IGluc3RydWN0aW9uLCBmdW5jdG9yKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBG
dW5jdG9yPgorICAgIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldChVbmxpbmtlZENv
ZGVCbG9jayogY29kZUJsb2NrLCBPcGNvZGVJRCBvcGNvZGVJRCwgVW5saW5rZWRJbnN0cnVjdGlv
biogaW5zdHJ1Y3Rpb24sIEZhc3RCaXRWZWN0b3ImLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQor
ICAgIHsKKyAgICAgICAgSlNDOjpjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9j
aywgb3Bjb2RlSUQsIGluc3RydWN0aW9uLCBmdW5jdG9yKTsKKyAgICB9CisKKyAgICB2b2lkIHJ1
bigpCisgICAgeworICAgICAgICAvLyBQZXJmb3JtIG1vZGlmaWVkIGxpdmVuZXNzIGFuYWx5c2lz
IHRvIGRldGVybWluZSB3aGljaCBsb2NhbHMgYXJlIGxpdmUgYXQgdGhlIG1lcmdlIHBvaW50cy4K
KyAgICAgICAgLy8gVGhpcyBwcm9kdWNlcyB0aGUgY29uc2VydmF0aXZlIHJlc3VsdHMgZm9yIHRo
ZSBxdWVzdGlvbiwgIndoaWNoIHZhcmlhYmxlcyBzaG91bGQgYmUgc2F2ZWQgYW5kIHJlc3VtZWQ/
Ii4KKworICAgICAgICBydW5MaXZlbmVzc0ZpeHBvaW50KG1fZ2VuZXJhdG9yaWZpY2F0aW9uLmdy
YXBoKCkpOworCisgICAgICAgIGZvciAoWWllbGREYXRhJiBkYXRhIDogbV9nZW5lcmF0b3JpZmlj
YXRpb24ueWllbGRzKCkpCisgICAgICAgICAgICBkYXRhLmxpdmVuZXNzID0gZ2V0TGl2ZW5lc3NJ
bmZvQXRCeXRlY29kZU9mZnNldChtX2dlbmVyYXRvcmlmaWNhdGlvbi5ncmFwaCgpLCBkYXRhLnBv
aW50ICsgb3Bjb2RlTGVuZ3RoKG9wX3lpZWxkKSk7CisgICAgfQorCitwcml2YXRlOgorICAgIEJ5
dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uJiBtX2dlbmVyYXRvcmlmaWNhdGlvbjsKK307CisKK3Zv
aWQgQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb246OnJ1bigpCit7CisgICAgLy8gV2UgY2FsY3Vs
YXRlIHRoZSBsaXZlbmVzcyBhdCBlYWNoIG1lcmdlIHBvaW50LiBUaGlzIGdpdmVzIHVzIHRoZSBp
bmZvcm1hdGlvbiB3aGljaCByZWdpc3RlcnMgc2hvdWxkIGJlIHNhdmVkIGFuZCByZXN1bWVkIGNv
bnNlcnZhdGl2ZWx5LgorCisgICAgeworICAgICAgICBHZW5lcmF0b3JMaXZlbmVzc0FuYWx5c2lz
IHBhc3MoKnRoaXMpOworICAgICAgICBwYXNzLnJ1bigpOworICAgIH0KKworICAgIFVubGlua2Vk
Q29kZUJsb2NrKiBjb2RlQmxvY2sgPSBtX2dyYXBoLmNvZGVCbG9jaygpOworICAgIEJ5dGVjb2Rl
UmV3cml0ZXIgcmV3cml0ZXIobV9ncmFwaCk7CisKKyAgICAvLyBTZXR1cCB0aGUgZ2xvYmFsIHN3
aXRjaCBmb3IgdGhlIGdlbmVyYXRvci4KKyAgICB7CisgICAgICAgIHVuc2lnbmVkIG5leHRUb0Vu
dGVyUG9pbnQgPSBlbnRlclBvaW50KCkgKyBvcGNvZGVMZW5ndGgob3BfZW50ZXIpOworICAgICAg
ICBWaXJ0dWFsUmVnaXN0ZXIgc3RhdGUgPSB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChzdGF0
aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JBcmd1bWVudDo6
U3RhdGUpKTsKKyAgICAgICAgYXV0byYganVtcFRhYmxlID0gcmV3cml0ZXIuaW5zZXJ0U3dpdGNo
SW1tZWRpYXRlQmVmb3JlKG5leHRUb0VudGVyUG9pbnQsIG5leHRUb0VudGVyUG9pbnQsIHN0YXRl
Lm9mZnNldCgpKTsKKyAgICAgICAganVtcFRhYmxlLm1pbiA9IDA7CisgICAgICAgIGp1bXBUYWJs
ZS5icmFuY2hPZmZzZXRzLnJlc2l6ZShtX3lpZWxkcy5zaXplKCkgKyAxKTsKKyAgICAgICAganVt
cFRhYmxlLmJyYW5jaE9mZnNldHMuZmlsbCgwKTsKKyAgICAgICAganVtcFRhYmxlLmFkZCgwLCBu
ZXh0VG9FbnRlclBvaW50KTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1feWll
bGRzLnNpemUoKTsgKytpKQorICAgICAgICAgICAganVtcFRhYmxlLmFkZChpICsgMSwgbV95aWVs
ZHNbaV0ucG9pbnQpOworICAgIH0KKworICAgIGZvciAoY29uc3QgWWllbGREYXRhJiBkYXRhIDog
bV95aWVsZHMpIHsKKyAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHNjb3BlID0gdmlydHVhbFJlZ2lz
dGVyRm9yQXJndW1lbnQoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6
R2VuZXJhdG9yQXJndW1lbnQ6OkZyYW1lKSk7CisKKyAgICAgICAgLy8gRW1pdCBzYXZlIHNlcXVl
bmNlLgorICAgICAgICByZXdyaXRlci5pbnNlcnRGcmFnbWVudEJlZm9yZShkYXRhLnBvaW50LCBb
Jl0oQnl0ZWNvZGVSZXdyaXRlcjo6RnJhZ21lbnQmIGZyYWdtZW50KSB7CisgICAgICAgICAgICBk
YXRhLmxpdmVuZXNzLmZvckVhY2hTZXRCaXQoWyZdKHNpemVfdCBpbmRleCkgeworICAgICAgICAg
ICAgICAgIFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kID0gdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwo
aW5kZXgpOworICAgICAgICAgICAgICAgIFN0b3JhZ2Ugc3RvcmFnZSA9IHN0b3JhZ2VGb3JHZW5l
cmF0b3JMb2NhbChpbmRleCk7CisKKyAgICAgICAgICAgICAgICBmcmFnbWVudC5hcHBlbmQoCisg
ICAgICAgICAgICAgICAgICAgIG9wX3B1dF90b19zY29wZSwKKyAgICAgICAgICAgICAgICAgICAg
c2NvcGUub2Zmc2V0KCksIC8vIHNjb3BlCisgICAgICAgICAgICAgICAgICAgIHN0b3JhZ2UuaWRl
bnRpZmllckluZGV4LCAvLyBpZGVudGlmaWVyCisgICAgICAgICAgICAgICAgICAgIG9wZXJhbmQu
b2Zmc2V0KCksIC8vIHZhbHVlCisgICAgICAgICAgICAgICAgICAgIEdldFB1dEluZm8oRG9Ob3RU
aHJvd0lmTm90Rm91bmQsIExvY2FsQ2xvc3VyZVZhciwgSW5pdGlhbGl6YXRpb25Nb2RlOjpOb3RJ
bml0aWFsaXphdGlvbikub3BlcmFuZCgpLCAvLyBpbmZvCisgICAgICAgICAgICAgICAgICAgIG1f
Z2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZUluZGV4LCAvLyBzeW1ib2wgdGFibGUgY29uc3RhbnQg
aW5kZXgKKyAgICAgICAgICAgICAgICAgICAgc3RvcmFnZS5zY29wZU9mZnNldC5vZmZzZXQoKSAv
LyBzY29wZSBvZmZzZXQKKyAgICAgICAgICAgICAgICApOworICAgICAgICAgICAgfSk7CisKKyAg
ICAgICAgICAgIC8vIEluc2VydCBvcF9yZXQganVzdCBhZnRlciBzYXZlIHNlcXVlbmNlLgorICAg
ICAgICAgICAgZnJhZ21lbnQuYXBwZW5kKG9wX3JldCwgZGF0YS5hcmd1bWVudCk7CisgICAgICAg
IH0pOworCisgICAgICAgIC8vIEVtaXQgcmVzdW1lIHNlcXVlbmNlLgorICAgICAgICByZXdyaXRl
ci5pbnNlcnRGcmFnbWVudEJlZm9yZShkYXRhLnBvaW50ICsgb3Bjb2RlTGVuZ3RoKG9wX3lpZWxk
KSwgWyZdKEJ5dGVjb2RlUmV3cml0ZXI6OkZyYWdtZW50JiBmcmFnbWVudCkgeworICAgICAgICAg
ICAgZGF0YS5saXZlbmVzcy5mb3JFYWNoU2V0Qml0KFsmXShzaXplX3QgaW5kZXgpIHsKKyAgICAg
ICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCA9IHZpcnR1YWxSZWdpc3RlckZvckxv
Y2FsKGluZGV4KTsKKyAgICAgICAgICAgICAgICBTdG9yYWdlIHN0b3JhZ2UgPSBzdG9yYWdlRm9y
R2VuZXJhdG9yTG9jYWwoaW5kZXgpOworCisgICAgICAgICAgICAgICAgVW5saW5rZWRWYWx1ZVBy
b2ZpbGUgcHJvZmlsZSA9IGNvZGVCbG9jay0+YWRkVmFsdWVQcm9maWxlKCk7CisgICAgICAgICAg
ICAgICAgZnJhZ21lbnQuYXBwZW5kKAorICAgICAgICAgICAgICAgICAgICBvcF9nZXRfZnJvbV9z
Y29wZSwKKyAgICAgICAgICAgICAgICAgICAgb3BlcmFuZC5vZmZzZXQoKSwgLy8gZHN0CisgICAg
ICAgICAgICAgICAgICAgIHNjb3BlLm9mZnNldCgpLCAvLyBzY29wZQorICAgICAgICAgICAgICAg
ICAgICBzdG9yYWdlLmlkZW50aWZpZXJJbmRleCwgLy8gaWRlbnRpZmllcgorICAgICAgICAgICAg
ICAgICAgICBHZXRQdXRJbmZvKERvTm90VGhyb3dJZk5vdEZvdW5kLCBMb2NhbENsb3N1cmVWYXIs
IEluaXRpYWxpemF0aW9uTW9kZTo6Tm90SW5pdGlhbGl6YXRpb24pLm9wZXJhbmQoKSwgLy8gaW5m
bworICAgICAgICAgICAgICAgICAgICAwLCAvLyBsb2NhbCBzY29wZSBkZXB0aAorICAgICAgICAg
ICAgICAgICAgICBzdG9yYWdlLnNjb3BlT2Zmc2V0Lm9mZnNldCgpLCAvLyBzY29wZSBvZmZzZXQK
KyAgICAgICAgICAgICAgICAgICAgcHJvZmlsZSAvLyBwcm9maWxlCisgICAgICAgICAgICAgICAg
KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKworICAgICAgICAvLyBDbGlwIHRoZSB1
bm5lY2Vzc2FyeSBieXRlY29kZXMuCisgICAgICAgIHJld3JpdGVyLnJlbW92ZUJ5dGVjb2RlKGRh
dGEucG9pbnQpOworICAgIH0KKworICAgIHJld3JpdGVyLmV4ZWN1dGUoKTsKK30KKwordm9pZCBw
ZXJmb3JtR2VuZXJhdG9yaWZpY2F0aW9uKFVubGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFVu
bGlua2VkQ29kZUJsb2NrOjpVbnBhY2tlZEluc3RydWN0aW9ucyYgaW5zdHJ1Y3Rpb25zLCBTeW1i
b2xUYWJsZSogZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZSwgaW50IGdlbmVyYXRvckZyYW1lU3lt
Ym9sVGFibGVJbmRleCkKK3sKKyAgICBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbiBwYXNzKGNv
ZGVCbG9jaywgaW5zdHJ1Y3Rpb25zLCBnZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlLCBnZW5lcmF0
b3JGcmFtZVN5bWJvbFRhYmxlSW5kZXgpOworICAgIHBhc3MucnVuKCk7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jN2I2MTM3NDYwODZh
ZTM0YzRjMGEyMmJmNGU2N2M3NmU2Y2ZkNGU5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmgKQEAgLTAs
MCArMSwzNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBZdXN1a2UgU3V6dWtpIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+CisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIlVu
bGlua2VkQ29kZUJsb2NrLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBTeW1ib2xUYWJs
ZTsKKwordm9pZCBwZXJmb3JtR2VuZXJhdG9yaWZpY2F0aW9uKFVubGlua2VkQ29kZUJsb2NrKiwg
VW5saW5rZWRDb2RlQmxvY2s6OlVucGFja2VkSW5zdHJ1Y3Rpb25zJiwgU3ltYm9sVGFibGUqIGdl
bmVyYXRvckZyYW1lU3ltYm9sVGFibGUsIGludCBnZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlSW5k
ZXgpOworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9CeXRlY29kZUdyYXBoLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVHcmFwaC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYwODMzNzU2OGU0NWY4ZjQzN2VhNDZh
ZWIwZGYzNGYxNjZjYTVhMmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnl0ZWNvZGVHcmFwaC5oCkBAIC0wLDAgKzEsMTI4IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE2IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKyAq
IENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQnl0ZWNvZGVCYXNpY0Jsb2NrLmgiCisj
aW5jbHVkZSA8d3RmL0luZGV4ZWRDb250YWluZXJJdGVyYXRvci5oPgorI2luY2x1ZGUgPHd0Zi9J
dGVyYXRvclJhbmdlLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgSlND
IHsKKworY2xhc3MgQnl0ZWNvZGVCYXNpY0Jsb2NrOworCit0ZW1wbGF0ZTx0eXBlbmFtZSBCbG9j
az4KK2NsYXNzIEJ5dGVjb2RlR3JhcGggeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwor
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEJ5dGVjb2RlR3JhcGgpOworcHVibGljOgorICAgIHR5
cGVkZWYgQmxvY2sgQ29kZUJsb2NrOworICAgIHR5cGVkZWYgdHlwZW5hbWUgQmxvY2s6Okluc3Ry
dWN0aW9uIEluc3RydWN0aW9uOworICAgIHR5cGVkZWYgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxC
eXRlY29kZUJhc2ljQmxvY2s+PiBCYXNpY0Jsb2Nrc1ZlY3RvcjsKKworICAgIHR5cGVkZWYgV1RG
OjpJbmRleGVkQ29udGFpbmVySXRlcmF0b3I8Qnl0ZWNvZGVHcmFwaDxCbG9jaz4+IGl0ZXJhdG9y
OworICAgIHR5cGVkZWYgc3RkOjpyZXZlcnNlX2l0ZXJhdG9yPGl0ZXJhdG9yPiByZXZlcnNlX2l0
ZXJhdG9yOworCisgICAgaW5saW5lIEJ5dGVjb2RlR3JhcGgoQmxvY2sqLCB0eXBlbmFtZSBCbG9j
azo6VW5wYWNrZWRJbnN0cnVjdGlvbnMmKTsKKworICAgIEJsb2NrKiBjb2RlQmxvY2soKSBjb25z
dCB7IHJldHVybiBtX2NvZGVCbG9jazsgfQorCisgICAgdHlwZW5hbWUgQmxvY2s6OlVucGFja2Vk
SW5zdHJ1Y3Rpb25zJiBpbnN0cnVjdGlvbnMoKSB7IHJldHVybiBtX2luc3RydWN0aW9uczsgfQor
CisgICAgV1RGOjpJdGVyYXRvclJhbmdlPHJldmVyc2VfaXRlcmF0b3I+IGJhc2ljQmxvY2tzSW5S
ZXZlcnNlT3JkZXIoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFdURjo6bWFrZUl0ZXJhdG9yUmFu
Z2UocmJlZ2luKCksIHJlbmQoKSk7CisgICAgfQorCisgICAgc3RhdGljIGJvb2wgYmxvY2tDb250
YWluc0J5dGVjb2RlT2Zmc2V0KEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2ssIHVuc2lnbmVkIGJ5
dGVjb2RlT2Zmc2V0KQorICAgIHsKKyAgICAgICAgdW5zaWduZWQgbGVhZGVyT2Zmc2V0ID0gYmxv
Y2stPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCk7CisgICAgICAgIHJldHVybiBieXRlY29kZU9mZnNl
dCA+PSBsZWFkZXJPZmZzZXQgJiYgYnl0ZWNvZGVPZmZzZXQgPCBsZWFkZXJPZmZzZXQgKyBibG9j
ay0+dG90YWxCeXRlY29kZUxlbmd0aCgpOworICAgIH0KKworICAgIEJ5dGVjb2RlQmFzaWNCbG9j
ayogZmluZEJhc2ljQmxvY2tGb3JCeXRlY29kZU9mZnNldCh1bnNpZ25lZCBieXRlY29kZU9mZnNl
dCkKKyAgICB7CisgICAgICAgIC8qCisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgbV9iYXNpY0Jsb2Nrcy5zaXplKCk7IGkrKykgeworICAgICAgICAgICAgICAgIGlmIChibG9j
a0NvbnRhaW5zQnl0ZWNvZGVPZmZzZXQobV9iYXNpY0Jsb2Nrc1tpXS5nZXQoKSwgYnl0ZWNvZGVP
ZmZzZXQpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbV9iYXNpY0Jsb2Nrc1tpXS5nZXQo
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAqLworCisg
ICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+KiBiYXNpY0Jsb2NrID0g
YXBwcm94aW1hdGVCaW5hcnlTZWFyY2g8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9j
az4sIHVuc2lnbmVkPihtX2Jhc2ljQmxvY2tzLCBtX2Jhc2ljQmxvY2tzLnNpemUoKSwgYnl0ZWNv
ZGVPZmZzZXQsIFtdIChzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiogYmFzaWNC
bG9jaykgeyByZXR1cm4gKCpiYXNpY0Jsb2NrKS0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKTsgfSk7
CisgICAgICAgIC8vIFdlIGZvdW5kIHRoZSBibG9jayB3ZSB3ZXJlIGxvb2tpbmcgZm9yLgorICAg
ICAgICBpZiAoYmxvY2tDb250YWluc0J5dGVjb2RlT2Zmc2V0KCgqYmFzaWNCbG9jaykuZ2V0KCks
IGJ5dGVjb2RlT2Zmc2V0KSkKKyAgICAgICAgICAgIHJldHVybiAoKmJhc2ljQmxvY2spLmdldCgp
OworCisgICAgICAgIC8vIEJhc2ljIGJsb2NrIGlzIHRvIHRoZSBsZWZ0IG9mIHRoZSByZXR1cm5l
ZCBibG9jay4KKyAgICAgICAgaWYgKGJ5dGVjb2RlT2Zmc2V0IDwgKCpiYXNpY0Jsb2NrKS0+bGVh
ZGVyQnl0ZWNvZGVPZmZzZXQoKSkgeworICAgICAgICAgICAgQVNTRVJUKGJhc2ljQmxvY2sgLSAx
ID49IG1fYmFzaWNCbG9ja3MuZGF0YSgpKTsKKyAgICAgICAgICAgIEFTU0VSVChibG9ja0NvbnRh
aW5zQnl0ZWNvZGVPZmZzZXQoYmFzaWNCbG9ja1stMV0uZ2V0KCksIGJ5dGVjb2RlT2Zmc2V0KSk7
CisgICAgICAgICAgICByZXR1cm4gYmFzaWNCbG9ja1stMV0uZ2V0KCk7CisgICAgICAgIH0KKwor
ICAgICAgICAvLyBCYXNpYyBibG9jayBpcyB0byB0aGUgcmlnaHQgb2YgdGhlIHJldHVybmVkIGJs
b2NrLgorICAgICAgICBBU1NFUlQoJmJhc2ljQmxvY2tbMV0gPD0gJm1fYmFzaWNCbG9ja3MubGFz
dCgpKTsKKyAgICAgICAgQVNTRVJUKGJsb2NrQ29udGFpbnNCeXRlY29kZU9mZnNldChiYXNpY0Js
b2NrWzFdLmdldCgpLCBieXRlY29kZU9mZnNldCkpOworICAgICAgICByZXR1cm4gYmFzaWNCbG9j
a1sxXS5nZXQoKTsKKyAgICB9CisKKyAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGZpbmRCYXNpY0Js
b2NrV2l0aExlYWRlck9mZnNldCh1bnNpZ25lZCBsZWFkZXJPZmZzZXQpCisgICAgeworICAgICAg
ICByZXR1cm4gKCp0cnlCaW5hcnlTZWFyY2g8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNC
bG9jaz4sIHVuc2lnbmVkPihtX2Jhc2ljQmxvY2tzLCBtX2Jhc2ljQmxvY2tzLnNpemUoKSwgbGVh
ZGVyT2Zmc2V0LCBbXSAoc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4qIGJhc2lj
QmxvY2spIHsgcmV0dXJuICgqYmFzaWNCbG9jayktPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCk7IH0p
KS5nZXQoKTsKKyAgICB9CisKKyAgICB1bnNpZ25lZCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9i
YXNpY0Jsb2Nrcy5zaXplKCk7IH0KKyAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGF0KHVuc2lnbmVk
IGluZGV4KSBjb25zdCB7IHJldHVybiBtX2Jhc2ljQmxvY2tzW2luZGV4XS5nZXQoKTsgfQorICAg
IEJ5dGVjb2RlQmFzaWNCbG9jayogb3BlcmF0b3JbXSh1bnNpZ25lZCBpbmRleCkgY29uc3QgeyBy
ZXR1cm4gYXQoaW5kZXgpOyB9CisKKyAgICBpdGVyYXRvciBiZWdpbigpIGNvbnN0IHsgcmV0dXJu
IGl0ZXJhdG9yKCp0aGlzLCAwKTsgfQorICAgIGl0ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0dXJu
IGl0ZXJhdG9yKCp0aGlzLCBzaXplKCkpOyB9CisgICAgcmV2ZXJzZV9pdGVyYXRvciByYmVnaW4o
KSBjb25zdCB7IHJldHVybiByZXZlcnNlX2l0ZXJhdG9yKGVuZCgpKTsgfQorICAgIHJldmVyc2Vf
aXRlcmF0b3IgcmVuZCgpIGNvbnN0IHsgcmV0dXJuIHJldmVyc2VfaXRlcmF0b3IoYmVnaW4oKSk7
IH0KKyAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGZpcnN0KCkgeyByZXR1cm4gYXQoMCk7IH0KKyAg
ICBCeXRlY29kZUJhc2ljQmxvY2sqIGxhc3QoKSB7IHJldHVybiBhdChzaXplKCkgLSAxKTsgfQor
Citwcml2YXRlOgorICAgIEJsb2NrKiBtX2NvZGVCbG9jazsKKyAgICBCYXNpY0Jsb2Nrc1ZlY3Rv
ciBtX2Jhc2ljQmxvY2tzOworICAgIHR5cGVuYW1lIEJsb2NrOjpVbnBhY2tlZEluc3RydWN0aW9u
cyYgbV9pbnN0cnVjdGlvbnM7Cit9OworCisKK3RlbXBsYXRlPHR5cGVuYW1lIEJsb2NrPgorQnl0
ZWNvZGVHcmFwaDxCbG9jaz46OkJ5dGVjb2RlR3JhcGgoQmxvY2sqIGNvZGVCbG9jaywgdHlwZW5h
bWUgQmxvY2s6OlVucGFja2VkSW5zdHJ1Y3Rpb25zJiBpbnN0cnVjdGlvbnMpCisgICAgOiBtX2Nv
ZGVCbG9jayhjb2RlQmxvY2spCisgICAgLCBtX2luc3RydWN0aW9ucyhpbnN0cnVjdGlvbnMpCit7
CisgICAgQVNTRVJUKG1fY29kZUJsb2NrKTsKKyAgICBCeXRlY29kZUJhc2ljQmxvY2s6OmNvbXB1
dGVCeXRlY29kZUJhc2ljQmxvY2tzKG1fY29kZUJsb2NrLCBpbnN0cnVjdGlvbnMuYmVnaW4oKSwg
aW5zdHJ1Y3Rpb25zLnNpemUoKSwgbV9iYXNpY0Jsb2Nrcyk7CisgICAgQVNTRVJUKG1fYmFzaWNC
bG9ja3Muc2l6ZSgpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24gYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24KaW5kZXggZTM4MDI1ZDVhZmNm
NjljZTQ4MGFlOTI4OThjOTM4ZTkzMTI3ODhkOS4uY2U2MGRhNGEyNmJjMzQ3N2ZkNDcxOWIwYTRi
MWZlY2U1ODljNjE5ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlTGlzdC5qc29uCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZUxpc3QuanNvbgpAQCAtMTQzLDggKzE0Myw3IEBACiAgICAgICAgICAgICB7ICJuYW1l
IiA6ICJvcF9hc3NlcnQiLCAibGVuZ3RoIiA6IDMgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDog
Im9wX2NyZWF0ZV9yZXN0IiwgImxlbmd0aCI6IDQgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDog
Im9wX2dldF9yZXN0X2xlbmd0aCIsICJsZW5ndGgiOiAzIH0sCi0gICAgICAgICAgICB7ICJuYW1l
IiA6ICJvcF9zYXZlIiwgImxlbmd0aCIgOiA0IH0sCi0gICAgICAgICAgICB7ICJuYW1lIiA6ICJv
cF9yZXN1bWUiLCAibGVuZ3RoIiA6IDMgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX3lp
ZWxkIiwgImxlbmd0aCIgOiA0IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF93YXRjaGRv
ZyIsICJsZW5ndGgiIDogMSB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfbG9nX3NoYWRv
d19jaGlja2VuX3Byb2xvZ3VlIiwgImxlbmd0aCIgOiAyfSwKICAgICAgICAgICAgIHsgIm5hbWUi
IDogIm9wX2xvZ19zaGFkb3dfY2hpY2tlbl90YWlsIiwgImxlbmd0aCIgOiAzfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNp
cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0Fu
YWx5c2lzLmNwcAppbmRleCAxN2U4MmEyZmJiYTAxNTA0M2U5OWQzNGVkMjU2OTM3MmIzNmY3YTg1
Li4xZjlmN2Y2Njg5OGMxMWVjOWIxNzliYTk1NWI2Y2YxOGNmZjYyYWQ2IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0Fu
YWx5c2lzLmNwcApAQCAtMzEsMTk4ICszMSwzNiBAQAogI2luY2x1ZGUgIkJ5dGVjb2RlVXNlRGVm
LmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiRnVsbEJ5dGVjb2RlTGl2ZW5l
c3MuaCIKLSNpbmNsdWRlICJQcmVjaXNlSnVtcFRhcmdldHMuaCIKKyNpbmNsdWRlICJJbnRlcnBy
ZXRlcklubGluZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKIEJ5dGVjb2RlTGl2ZW5lc3NBbmFs
eXNpczo6Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzKENvZGVCbG9jayogY29kZUJsb2NrKQotICAg
IDogbV9jb2RlQmxvY2soY29kZUJsb2NrKQorICAgIDogbV9ncmFwaChjb2RlQmxvY2ssIGNvZGVC
bG9jay0+aW5zdHJ1Y3Rpb25zKCkpCiB7Ci0gICAgQVNTRVJUKG1fY29kZUJsb2NrKTsKICAgICBj
b21wdXRlKCk7CiB9CiAKLXN0YXRpYyBib29sIGlzVmFsaWRSZWdpc3RlckZvckxpdmVuZXNzKENv
ZGVCbG9jayogY29kZUJsb2NrLCBpbnQgb3BlcmFuZCkKK3RlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0
b3I+Cit2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0ZURlZnNGb3JCeXRlY29k
ZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgT3Bjb2RlSUQgb3Bjb2RlSUQsIEluc3RydWN0
aW9uKiBpbnN0cnVjdGlvbiwgRmFzdEJpdFZlY3RvciYsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3Ip
CiB7Ci0gICAgaWYgKGNvZGVCbG9jay0+aXNDb25zdGFudFJlZ2lzdGVySW5kZXgob3BlcmFuZCkp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKLSAgICBWaXJ0dWFsUmVnaXN0ZXIgdmlydHVh
bFJlZyhvcGVyYW5kKTsKLSAgICByZXR1cm4gdmlydHVhbFJlZy5pc0xvY2FsKCk7Ci19Ci0KLXN0
YXRpYyB1bnNpZ25lZCBnZXRMZWFkZXJPZmZzZXRGb3JCYXNpY0Jsb2NrKHN0ZDo6dW5pcXVlX3B0
cjxCeXRlY29kZUJhc2ljQmxvY2s+KiBiYXNpY0Jsb2NrKQotewotICAgIHJldHVybiAoKmJhc2lj
QmxvY2spLT5sZWFkZXJCeXRlY29kZU9mZnNldCgpOwotfQotCi1zdGF0aWMgQnl0ZWNvZGVCYXNp
Y0Jsb2NrKiBmaW5kQmFzaWNCbG9ja1dpdGhMZWFkZXJPZmZzZXQoVmVjdG9yPHN0ZDo6dW5pcXVl
X3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9ja3MsIHVuc2lnbmVkIGxlYWRlck9m
ZnNldCkKLXsKLSAgICByZXR1cm4gKCp0cnlCaW5hcnlTZWFyY2g8c3RkOjp1bmlxdWVfcHRyPEJ5
dGVjb2RlQmFzaWNCbG9jaz4sIHVuc2lnbmVkPihiYXNpY0Jsb2NrcywgYmFzaWNCbG9ja3Muc2l6
ZSgpLCBsZWFkZXJPZmZzZXQsIGdldExlYWRlck9mZnNldEZvckJhc2ljQmxvY2spKS5nZXQoKTsK
LX0KLQotc3RhdGljIGJvb2wgYmxvY2tDb250YWluc0J5dGVjb2RlT2Zmc2V0KEJ5dGVjb2RlQmFz
aWNCbG9jayogYmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KQotewotICAgIHVuc2lnbmVk
IGxlYWRlck9mZnNldCA9IGJsb2NrLT5sZWFkZXJCeXRlY29kZU9mZnNldCgpOwotICAgIHJldHVy
biBieXRlY29kZU9mZnNldCA+PSBsZWFkZXJPZmZzZXQgJiYgYnl0ZWNvZGVPZmZzZXQgPCBsZWFk
ZXJPZmZzZXQgKyBibG9jay0+dG90YWxCeXRlY29kZUxlbmd0aCgpOwotfQotCi1zdGF0aWMgQnl0
ZWNvZGVCYXNpY0Jsb2NrKiBmaW5kQmFzaWNCbG9ja0ZvckJ5dGVjb2RlT2Zmc2V0KFZlY3Rvcjxz
dGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mIGJhc2ljQmxvY2tzLCB1bnNpZ25l
ZCBieXRlY29kZU9mZnNldCkKLXsKLS8qCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGJh
c2ljQmxvY2tzLnNpemUoKTsgaSsrKSB7Ci0gICAgICAgIGlmIChibG9ja0NvbnRhaW5zQnl0ZWNv
ZGVPZmZzZXQoYmFzaWNCbG9ja3NbaV0uZ2V0KCksIGJ5dGVjb2RlT2Zmc2V0KSkKLSAgICAgICAg
ICAgIHJldHVybiBiYXNpY0Jsb2Nrc1tpXS5nZXQoKTsKLSAgICB9Ci0gICAgcmV0dXJuIDA7Ci0q
LwotICAgIHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+KiBiYXNpY0Jsb2NrID0g
YXBwcm94aW1hdGVCaW5hcnlTZWFyY2g8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9j
az4sIHVuc2lnbmVkPigKLSAgICAgICAgYmFzaWNCbG9ja3MsIGJhc2ljQmxvY2tzLnNpemUoKSwg
Ynl0ZWNvZGVPZmZzZXQsIGdldExlYWRlck9mZnNldEZvckJhc2ljQmxvY2spOwotICAgIC8vIFdl
IGZvdW5kIHRoZSBibG9jayB3ZSB3ZXJlIGxvb2tpbmcgZm9yLgotICAgIGlmIChibG9ja0NvbnRh
aW5zQnl0ZWNvZGVPZmZzZXQoKCpiYXNpY0Jsb2NrKS5nZXQoKSwgYnl0ZWNvZGVPZmZzZXQpKQot
ICAgICAgICByZXR1cm4gKCpiYXNpY0Jsb2NrKS5nZXQoKTsKLQotICAgIC8vIEJhc2ljIGJsb2Nr
IGlzIHRvIHRoZSBsZWZ0IG9mIHRoZSByZXR1cm5lZCBibG9jay4KLSAgICBpZiAoYnl0ZWNvZGVP
ZmZzZXQgPCAoKmJhc2ljQmxvY2spLT5sZWFkZXJCeXRlY29kZU9mZnNldCgpKSB7Ci0gICAgICAg
IEFTU0VSVChiYXNpY0Jsb2NrIC0gMSA+PSBiYXNpY0Jsb2Nrcy5kYXRhKCkpOwotICAgICAgICBB
U1NFUlQoYmxvY2tDb250YWluc0J5dGVjb2RlT2Zmc2V0KGJhc2ljQmxvY2tbLTFdLmdldCgpLCBi
eXRlY29kZU9mZnNldCkpOwotICAgICAgICByZXR1cm4gYmFzaWNCbG9ja1stMV0uZ2V0KCk7Ci0g
ICAgfQotCi0gICAgLy8gQmFzaWMgYmxvY2sgaXMgdG8gdGhlIHJpZ2h0IG9mIHRoZSByZXR1cm5l
ZCBibG9jay4KLSAgICBBU1NFUlQoJmJhc2ljQmxvY2tbMV0gPD0gJmJhc2ljQmxvY2tzLmxhc3Qo
KSk7Ci0gICAgQVNTRVJUKGJsb2NrQ29udGFpbnNCeXRlY29kZU9mZnNldChiYXNpY0Jsb2NrWzFd
LmdldCgpLCBieXRlY29kZU9mZnNldCkpOwotICAgIHJldHVybiBiYXNpY0Jsb2NrWzFdLmdldCgp
OwotfQotCi0vLyBTaW1wbGlmaWVkIGludGVyZmFjZSB0byBieXRlY29kZSB1c2UvZGVmLCB3aGlj
aCBkZXRlcm1pbmVzIGRlZnMgZmlyc3QgYW5kIHRoZW4gdXNlcywgYW5kIGluY2x1ZGVzCi0vLyBl
eGNlcHRpb24gaGFuZGxlcnMgaW4gdGhlIHVzZXMuCi10ZW1wbGF0ZTx0eXBlbmFtZSBVc2VGdW5j
dG9yLCB0eXBlbmFtZSBEZWZGdW5jdG9yPgotc3RhdGljIHZvaWQgc3RlcE92ZXJJbnN0cnVjdGlv
bihDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaywgVmVjdG9y
PHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9ja3MsIHVuc2ln
bmVkIGJ5dGVjb2RlT2Zmc2V0LCBjb25zdCBVc2VGdW5jdG9yJiB1c2UsIGNvbnN0IERlZkZ1bmN0
b3ImIGRlZikKLXsKLSAgICAvLyBUaGlzIGFic3RyYWN0bHkgZXhlY3V0ZSB0aGUgaW5zdHJ1Y3Rp
b24gaW4gcmV2ZXJzZS4gSW5zdHJ1Y3Rpb25zIGxvZ2ljYWxseSBmaXJzdCB1c2Ugb3BlcmFuZHMg
YW5kCi0gICAgLy8gdGhlbiBkZWZpbmUgb3BlcmFuZHMuIFRoaXMgbG9naWNhbCBvcmRlcmluZyBp
cyBuZWNlc3NhcnkgZm9yIG9wZXJhdGlvbnMgdGhhdCB1c2UgYW5kIGRlZiB0aGUgc2FtZQotICAg
IC8vIG9wZXJhbmQsIGxpa2U6Ci0gICAgLy8KLSAgICAvLyAgICAgb3BfYWRkIGxvYzEsIGxvYzEs
IGxvYzIKLSAgICAvLwotICAgIC8vIFRoZSB1c2Ugb2YgbG9jMSBoYXBwZW5zIGJlZm9yZSB0aGUg
ZGVmIG9mIGxvYzEuIFRoYXQncyBhIHNlbWFudGljIHJlcXVpcmVtZW50IHNpbmNlIHRoZSBhZGQK
LSAgICAvLyBvcGVyYXRpb24gY2Fubm90IHRyYXZlbCBmb3J3YXJkIGluIHRpbWUgdG8gcmVhZCB0
aGUgdmFsdWUgdGhhdCBpdCB3aWxsIHByb2R1Y2UgYWZ0ZXIgcmVhZGluZyB0aGF0Ci0gICAgLy8g
dmFsdWUuIFNpbmNlIHdlIGFyZSBleGVjdXRpbmcgaW4gcmV2ZXJzZSwgdGhpcyBtZWFucyB0aGF0
IHdlIG11c3QgZG8gZGVmcyBiZWZvcmUgdXNlcyAocmV2ZXJzZSBvZgotICAgIC8vIHVzZXMgYmVm
b3JlIGRlZnMpLgotICAgIC8vCi0gICAgLy8gU2luY2UgdGhpcyBpcyBhIGxpdmVuZXNzIGFuYWx5
c2lzLCB0aGlzIG9yZGVyaW5nIGVuZHMgdXAgYmVpbmcgcGFydGljdWxhcmx5IGltcG9ydGFudDog
aWYgd2UgZGlkCi0gICAgLy8gdXNlcyBiZWZvcmUgZGVmcywgdGhlbiB0aGUgYWRkIG9wZXJhdGlv
biBhYm92ZSB3b3VsZCBhcHBlYXIgdG8gbm90IGhhdmUgbG9jMSBsaXZlLCBzaW5jZSB3ZSdkCi0g
ICAgLy8gZmlyc3QgYWRkIGl0IHRvIHRoZSBvdXQgc2V0ICh0aGUgdXNlKSwgYW5kIHRoZW4gd2Un
ZCByZW1vdmUgaXQgKHRoZSBkZWYpLgotICAgIAotICAgIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVP
ZmZzZXQoCi0gICAgICAgIGNvZGVCbG9jaywgYmxvY2ssIGJ5dGVjb2RlT2Zmc2V0LAotICAgICAg
ICBbJl0gKENvZGVCbG9jayogY29kZUJsb2NrLCBJbnN0cnVjdGlvbiosIE9wY29kZUlELCBpbnQg
b3BlcmFuZCkgewotICAgICAgICAgICAgaWYgKGlzVmFsaWRSZWdpc3RlckZvckxpdmVuZXNzKGNv
ZGVCbG9jaywgb3BlcmFuZCkpCi0gICAgICAgICAgICAgICAgZGVmKFZpcnR1YWxSZWdpc3Rlcihv
cGVyYW5kKS50b0xvY2FsKCkpOwotICAgICAgICB9KTsKLQotICAgIGNvbXB1dGVVc2VzRm9yQnl0
ZWNvZGVPZmZzZXQoCi0gICAgICAgIGNvZGVCbG9jaywgYmxvY2ssIGJ5dGVjb2RlT2Zmc2V0LAot
ICAgICAgICBbJl0gKENvZGVCbG9jayogY29kZUJsb2NrLCBJbnN0cnVjdGlvbiosIE9wY29kZUlE
LCBpbnQgb3BlcmFuZCkgewotICAgICAgICAgICAgaWYgKGlzVmFsaWRSZWdpc3RlckZvckxpdmVu
ZXNzKGNvZGVCbG9jaywgb3BlcmFuZCkpCi0gICAgICAgICAgICAgICAgdXNlKFZpcnR1YWxSZWdp
c3RlcihvcGVyYW5kKS50b0xvY2FsKCkpOwotICAgICAgICB9KTsKLQotICAgIC8vIElmIHdlIGhh
dmUgYW4gZXhjZXB0aW9uIGhhbmRsZXIsIHdlIHdhbnQgdGhlIGxpdmUtaW4gdmFyaWFibGVzIG9m
IHRoZSAKLSAgICAvLyBleGNlcHRpb24gaGFuZGxlciBibG9jayB0byBiZSBpbmNsdWRlZCBpbiB0
aGUgbGl2ZS1pbiBvZiB0aGlzIHBhcnRpY3VsYXIgYnl0ZWNvZGUuCi0gICAgaWYgKEhhbmRsZXJJ
bmZvKiBoYW5kbGVyID0gY29kZUJsb2NrLT5oYW5kbGVyRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNv
ZGVPZmZzZXQpKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBUaGlzIHJlc3VtZSBjaGVjayBzaG91bGQg
bm90IGJlIG5lZWRlZC4KLSAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE1OTI4MQotICAgICAgICBJbnRlcnByZXRlciogaW50ZXJwcmV0ZXIgPSBjb2Rl
QmxvY2stPnZtKCktPmludGVycHJldGVyOwotICAgICAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rp
b25zQmVnaW4gPSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCk7Ci0gICAgICAgIElu
c3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9ICZpbnN0cnVjdGlvbnNCZWdpbltieXRlY29kZU9mZnNl
dF07Ci0gICAgICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0ZXItPmdldE9wY29kZUlE
KGluc3RydWN0aW9uLT51Lm9wY29kZSk7Ci0gICAgICAgIGlmIChvcGNvZGVJRCAhPSBvcF9yZXN1
bWUpIHsKLSAgICAgICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogaGFuZGxlckJsb2NrID0gZmlu
ZEJhc2ljQmxvY2tXaXRoTGVhZGVyT2Zmc2V0KGJhc2ljQmxvY2tzLCBoYW5kbGVyLT50YXJnZXQp
OwotICAgICAgICAgICAgQVNTRVJUKGhhbmRsZXJCbG9jayk7Ci0gICAgICAgICAgICBoYW5kbGVy
QmxvY2stPmluKCkuZm9yRWFjaFNldEJpdCh1c2UpOwotICAgICAgICB9Ci0gICAgfQotfQotCi1z
dGF0aWMgdm9pZCBzdGVwT3Zlckluc3RydWN0aW9uKENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRl
Y29kZUJhc2ljQmxvY2sqIGJsb2NrLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFz
aWNCbG9jaz4+JiBiYXNpY0Jsb2NrcywgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIEZhc3RCaXRW
ZWN0b3ImIG91dCkKLXsKLSAgICBzdGVwT3Zlckluc3RydWN0aW9uKAotICAgICAgICBjb2RlQmxv
Y2ssIGJsb2NrLCBiYXNpY0Jsb2NrcywgYnl0ZWNvZGVPZmZzZXQsCi0gICAgICAgIFsmXSAodW5z
aWduZWQgYml0SW5kZXgpIHsKLSAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIHVzZSBmdW5jdG9y
LCBzbyB3ZSBzZXQgdGhlIGJpdC4KLSAgICAgICAgICAgIG91dC5zZXQoYml0SW5kZXgpOwotICAg
ICAgICB9LAotICAgICAgICBbJl0gKHVuc2lnbmVkIGJpdEluZGV4KSB7Ci0gICAgICAgICAgICAv
LyBUaGlzIGlzIHRoZSBkZWYgZnVuY3Rvciwgc28gd2UgY2xlYXIgdGhlIGJpdC4KLSAgICAgICAg
ICAgIG91dC5jbGVhcihiaXRJbmRleCk7Ci0gICAgICAgIH0pOworICAgIEpTQzo6Y29tcHV0ZURl
ZnNGb3JCeXRlY29kZU9mZnNldChjb2RlQmxvY2ssIG9wY29kZUlELCBpbnN0cnVjdGlvbiwgZnVu
Y3Rvcik7CiB9CiAKLXN0YXRpYyB2b2lkIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQnl0ZWNvZGVP
ZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2ssIFZl
Y3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mIGJhc2ljQmxvY2tzLCB1
bnNpZ25lZCB0YXJnZXRPZmZzZXQsIEZhc3RCaXRWZWN0b3ImIHJlc3VsdCkKK3RlbXBsYXRlPHR5
cGVuYW1lIEZ1bmN0b3I+Cit2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0ZVVz
ZXNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgT3Bjb2RlSUQgb3Bjb2Rl
SUQsIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgRmFzdEJpdFZlY3RvciYsIGNvbnN0IEZ1bmN0
b3ImIGZ1bmN0b3IpCiB7Ci0gICAgQVNTRVJUKCFibG9jay0+aXNFeGl0QmxvY2soKSk7Ci0gICAg
QVNTRVJUKCFibG9jay0+aXNFbnRyeUJsb2NrKCkpOwotCi0gICAgRmFzdEJpdFZlY3RvciBvdXQg
PSBibG9jay0+b3V0KCk7Ci0KLSAgICBmb3IgKGludCBpID0gYmxvY2stPmJ5dGVjb2RlT2Zmc2V0
cygpLnNpemUoKSAtIDE7IGkgPj0gMDsgaS0tKSB7Ci0gICAgICAgIHVuc2lnbmVkIGJ5dGVjb2Rl
T2Zmc2V0ID0gYmxvY2stPmJ5dGVjb2RlT2Zmc2V0cygpW2ldOwotICAgICAgICBpZiAodGFyZ2V0
T2Zmc2V0ID4gYnl0ZWNvZGVPZmZzZXQpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgCi0g
ICAgICAgIHN0ZXBPdmVySW5zdHJ1Y3Rpb24oY29kZUJsb2NrLCBibG9jaywgYmFzaWNCbG9ja3Ms
IGJ5dGVjb2RlT2Zmc2V0LCBvdXQpOwotICAgIH0KLQotICAgIHJlc3VsdC5zZXQob3V0KTsKLX0K
LQotc3RhdGljIHZvaWQgY29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCbG9jayhDb2RlQmxvY2sqIGNv
ZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaywgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0
cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9ja3MpCi17Ci0gICAgaWYgKGJsb2NrLT5p
c0V4aXRCbG9jaygpIHx8IGJsb2NrLT5pc0VudHJ5QmxvY2soKSkKLSAgICAgICAgcmV0dXJuOwot
ICAgIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQnl0ZWNvZGVPZmZzZXQoY29kZUJsb2NrLCBibG9j
aywgYmFzaWNCbG9ja3MsIGJsb2NrLT5sZWFkZXJCeXRlY29kZU9mZnNldCgpLCBibG9jay0+aW4o
KSk7Ci19Ci0KLXZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpydW5MaXZlbmVzc0ZpeHBv
aW50KCkKLXsKLSAgICBVbmxpbmtlZENvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2sgPSBtX2Nv
ZGVCbG9jay0+dW5saW5rZWRDb2RlQmxvY2soKTsKLSAgICB1bnNpZ25lZCBudW1iZXJPZlZhcmlh
YmxlcyA9IHVubGlua2VkQ29kZUJsb2NrLT5tX251bUNhbGxlZUxvY2FsczsKLQotICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBtX2Jhc2ljQmxvY2tzLnNpemUoKTsgaSsrKSB7Ci0gICAgICAg
IEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2sgPSBtX2Jhc2ljQmxvY2tzW2ldLmdldCgpOwotICAg
ICAgICBibG9jay0+aW4oKS5yZXNpemUobnVtYmVyT2ZWYXJpYWJsZXMpOwotICAgICAgICBibG9j
ay0+b3V0KCkucmVzaXplKG51bWJlck9mVmFyaWFibGVzKTsKLSAgICB9Ci0KLSAgICBib29sIGNo
YW5nZWQ7Ci0gICAgbV9iYXNpY0Jsb2Nrcy5sYXN0KCktPmluKCkuY2xlYXJBbGwoKTsKLSAgICBt
X2Jhc2ljQmxvY2tzLmxhc3QoKS0+b3V0KCkuY2xlYXJBbGwoKTsKLSAgICBGYXN0Qml0VmVjdG9y
IG5ld091dDsKLSAgICBuZXdPdXQucmVzaXplKG1fYmFzaWNCbG9ja3MubGFzdCgpLT5vdXQoKS5u
dW1CaXRzKCkpOwotICAgIGRvIHsKLSAgICAgICAgY2hhbmdlZCA9IGZhbHNlOwotICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSBtX2Jhc2ljQmxvY2tzLnNpemUoKSAtIDE7IGktLTspIHsKLSAgICAg
ICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2sgPSBtX2Jhc2ljQmxvY2tzW2ldLmdldCgp
OwotICAgICAgICAgICAgbmV3T3V0LmNsZWFyQWxsKCk7Ci0gICAgICAgICAgICBmb3IgKHVuc2ln
bmVkIGogPSAwOyBqIDwgYmxvY2stPnN1Y2Nlc3NvcnMoKS5zaXplKCk7IGorKykKLSAgICAgICAg
ICAgICAgICBuZXdPdXQubWVyZ2UoYmxvY2stPnN1Y2Nlc3NvcnMoKVtqXS0+aW4oKSk7Ci0gICAg
ICAgICAgICBib29sIG91dERpZENoYW5nZSA9IGJsb2NrLT5vdXQoKS5zZXRBbmRDaGVjayhuZXdP
dXQpOwotICAgICAgICAgICAgY29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCbG9jayhtX2NvZGVCbG9j
aywgYmxvY2ssIG1fYmFzaWNCbG9ja3MpOwotICAgICAgICAgICAgY2hhbmdlZCB8PSBvdXREaWRD
aGFuZ2U7Ci0gICAgICAgIH0KLSAgICB9IHdoaWxlIChjaGFuZ2VkKTsKKyAgICBKU0M6OmNvbXB1
dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoY29kZUJsb2NrLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb24s
IGZ1bmN0b3IpOwogfQogCiB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Z2V0TGl2ZW5l
c3NJbmZvQXRCeXRlY29kZU9mZnNldCh1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgRmFzdEJpdFZl
Y3RvciYgcmVzdWx0KQogewotICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2sgPSBmaW5kQmFz
aWNCbG9ja0ZvckJ5dGVjb2RlT2Zmc2V0KG1fYmFzaWNCbG9ja3MsIGJ5dGVjb2RlT2Zmc2V0KTsK
KyAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrID0gbV9ncmFwaC5maW5kQmFzaWNCbG9ja0Zv
ckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KTsKICAgICBBU1NFUlQoYmxvY2spOwogICAg
IEFTU0VSVCghYmxvY2stPmlzRW50cnlCbG9jaygpKTsKICAgICBBU1NFUlQoIWJsb2NrLT5pc0V4
aXRCbG9jaygpKTsKICAgICByZXN1bHQucmVzaXplKGJsb2NrLT5vdXQoKS5udW1CaXRzKCkpOwot
ICAgIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQnl0ZWNvZGVPZmZzZXQobV9jb2RlQmxvY2ssIGJs
b2NrLCBtX2Jhc2ljQmxvY2tzLCBieXRlY29kZU9mZnNldCwgcmVzdWx0KTsKKyAgICBjb21wdXRl
TG9jYWxMaXZlbmVzc0ZvckJ5dGVjb2RlT2Zmc2V0KG1fZ3JhcGgsIGJsb2NrLCBieXRlY29kZU9m
ZnNldCwgcmVzdWx0KTsKIH0KIAogYm9vbCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6Om9wZXJh
bmRJc0xpdmVBdEJ5dGVjb2RlT2Zmc2V0KGludCBvcGVyYW5kLCB1bnNpZ25lZCBieXRlY29kZU9m
ZnNldCkKQEAgLTI0NCwxMSArODIsMTEgQEAgRmFzdEJpdFZlY3RvciBCeXRlY29kZUxpdmVuZXNz
QW5hbHlzaXM6OmdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQodW5zaWduZWQKIHZvaWQg
Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlRnVsbExpdmVuZXNzKEZ1bGxCeXRlY29k
ZUxpdmVuZXNzJiByZXN1bHQpCiB7CiAgICAgRmFzdEJpdFZlY3RvciBvdXQ7CisgICAgQ29kZUJs
b2NrKiBjb2RlQmxvY2sgPSBtX2dyYXBoLmNvZGVCbG9jaygpOwogICAgIAotICAgIHJlc3VsdC5t
X21hcC5yZXNpemUobV9jb2RlQmxvY2stPmluc3RydWN0aW9ucygpLnNpemUoKSk7CisgICAgcmVz
dWx0Lm1fbWFwLnJlc2l6ZShjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLnNpemUoKSk7CiAgICAg
Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gbV9iYXNpY0Jsb2Nrcy5zaXplKCk7IGktLTspIHsKLSAg
ICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jayA9IG1fYmFzaWNCbG9ja3NbaV0uZ2V0KCk7
CisgICAgZm9yIChCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrIDogbV9ncmFwaC5iYXNpY0Jsb2Nr
c0luUmV2ZXJzZU9yZGVyKCkpIHsKICAgICAgICAgaWYgKGJsb2NrLT5pc0VudHJ5QmxvY2soKSB8
fCBibG9jay0+aXNFeGl0QmxvY2soKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAK
QEAgLTI1Niw3ICs5NCw3IEBAIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpjb21wdXRl
RnVsbExpdmVuZXNzKEZ1bGxCeXRlY29kZUxpdmVuZXNzJiByZXN1bHQpCiAgICAgICAgIAogICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSBibG9jay0+Ynl0ZWNvZGVPZmZzZXRzKCkuc2l6ZSgpOyBp
LS07KSB7CiAgICAgICAgICAgICB1bnNpZ25lZCBieXRlY29kZU9mZnNldCA9IGJsb2NrLT5ieXRl
Y29kZU9mZnNldHMoKVtpXTsKLSAgICAgICAgICAgIHN0ZXBPdmVySW5zdHJ1Y3Rpb24obV9jb2Rl
QmxvY2ssIGJsb2NrLCBtX2Jhc2ljQmxvY2tzLCBieXRlY29kZU9mZnNldCwgb3V0KTsKKyAgICAg
ICAgICAgIHN0ZXBPdmVySW5zdHJ1Y3Rpb24obV9ncmFwaCwgYnl0ZWNvZGVPZmZzZXQsIG91dCk7
CiAgICAgICAgICAgICByZXN1bHQubV9tYXBbYnl0ZWNvZGVPZmZzZXRdID0gb3V0OwogICAgICAg
ICB9CiAgICAgfQpAQCAtMjY2LDExICsxMDQsMTEgQEAgdm9pZCBCeXRlY29kZUxpdmVuZXNzQW5h
bHlzaXM6OmNvbXB1dGVLaWxscyhCeXRlY29kZUtpbGxzJiByZXN1bHQpCiB7CiAgICAgRmFzdEJp
dFZlY3RvciBvdXQ7CiAgICAgCi0gICAgcmVzdWx0Lm1fY29kZUJsb2NrID0gbV9jb2RlQmxvY2s7
Ci0gICAgcmVzdWx0Lm1fa2lsbFNldHMgPSBzdGQ6Om1ha2VfdW5pcXVlPEJ5dGVjb2RlS2lsbHM6
OktpbGxTZXRbXT4obV9jb2RlQmxvY2stPmluc3RydWN0aW9ucygpLnNpemUoKSk7CisgICAgQ29k
ZUJsb2NrKiBjb2RlQmxvY2sgPSBtX2dyYXBoLmNvZGVCbG9jaygpOworICAgIHJlc3VsdC5tX2Nv
ZGVCbG9jayA9IGNvZGVCbG9jazsKKyAgICByZXN1bHQubV9raWxsU2V0cyA9IHN0ZDo6bWFrZV91
bmlxdWU8Qnl0ZWNvZGVLaWxsczo6S2lsbFNldFtdPihjb2RlQmxvY2stPmluc3RydWN0aW9ucygp
LnNpemUoKSk7CiAgICAgCi0gICAgZm9yICh1bnNpZ25lZCBpID0gbV9iYXNpY0Jsb2Nrcy5zaXpl
KCk7IGktLTspIHsKLSAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jayA9IG1fYmFzaWNC
bG9ja3NbaV0uZ2V0KCk7CisgICAgZm9yIChCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrIDogbV9n
cmFwaC5iYXNpY0Jsb2Nrc0luUmV2ZXJzZU9yZGVyKCkpIHsKICAgICAgICAgaWYgKGJsb2NrLT5p
c0VudHJ5QmxvY2soKSB8fCBibG9jay0+aXNFeGl0QmxvY2soKSkKICAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICAKQEAgLTI3OSw3ICsxMTcsNyBAQCB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NB
bmFseXNpczo6Y29tcHV0ZUtpbGxzKEJ5dGVjb2RlS2lsbHMmIHJlc3VsdCkKICAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gYmxvY2stPmJ5dGVjb2RlT2Zmc2V0cygpLnNpemUoKTsgaS0tOykgewog
ICAgICAgICAgICAgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQgPSBibG9jay0+Ynl0ZWNvZGVPZmZz
ZXRzKClbaV07CiAgICAgICAgICAgICBzdGVwT3Zlckluc3RydWN0aW9uKAotICAgICAgICAgICAg
ICAgIG1fY29kZUJsb2NrLCBibG9jaywgbV9iYXNpY0Jsb2NrcywgYnl0ZWNvZGVPZmZzZXQsCisg
ICAgICAgICAgICAgICAgbV9ncmFwaCwgYnl0ZWNvZGVPZmZzZXQsIG91dCwKICAgICAgICAgICAg
ICAgICBbJl0gKHVuc2lnbmVkIGluZGV4KSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMg
aXMgZm9yIHVzZXMuCiAgICAgICAgICAgICAgICAgICAgIGlmIChvdXQuZ2V0KGluZGV4KSkKQEAg
LTI5NywxMiArMTM1LDEzIEBAIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpjb21wdXRl
S2lsbHMoQnl0ZWNvZGVLaWxscyYgcmVzdWx0KQogCiB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFs
eXNpczo6ZHVtcFJlc3VsdHMoKQogewotICAgIGRhdGFMb2coIlxuRHVtcGluZyBieXRlY29kZSBs
aXZlbmVzcyBmb3IgIiwgKm1fY29kZUJsb2NrLCAiOlxuIik7Ci0gICAgSW50ZXJwcmV0ZXIqIGlu
dGVycHJldGVyID0gbV9jb2RlQmxvY2stPnZtKCktPmludGVycHJldGVyOwotICAgIEluc3RydWN0
aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiA9IG1fY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdp
bigpOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2Jhc2ljQmxvY2tzLnNpemUoKTsg
aSsrKSB7Ci0gICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2sgPSBtX2Jhc2ljQmxvY2tz
W2ldLmdldCgpOwotICAgICAgICBkYXRhTG9nRigiXG5CeXRlY29kZSBiYXNpYyBibG9jayAldTog
JXAgKG9mZnNldDogJXUsIGxlbmd0aDogJXUpXG4iLCBpLCBibG9jaywgYmxvY2stPmxlYWRlckJ5
dGVjb2RlT2Zmc2V0KCksIGJsb2NrLT50b3RhbEJ5dGVjb2RlTGVuZ3RoKCkpOworICAgIENvZGVC
bG9jayogY29kZUJsb2NrID0gbV9ncmFwaC5jb2RlQmxvY2soKTsKKyAgICBkYXRhTG9nKCJcbkR1
bXBpbmcgYnl0ZWNvZGUgbGl2ZW5lc3MgZm9yICIsICpjb2RlQmxvY2ssICI6XG4iKTsKKyAgICBJ
bnRlcnByZXRlciogaW50ZXJwcmV0ZXIgPSBjb2RlQmxvY2stPnZtKCktPmludGVycHJldGVyOwor
ICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiA9IGNvZGVCbG9jay0+aW5zdHJ1Y3Rp
b25zKCkuYmVnaW4oKTsKKyAgICB1bnNpZ25lZCBpID0gMDsKKyAgICBmb3IgKEJ5dGVjb2RlQmFz
aWNCbG9jayogYmxvY2sgOiBtX2dyYXBoKSB7CisgICAgICAgIGRhdGFMb2dGKCJcbkJ5dGVjb2Rl
IGJhc2ljIGJsb2NrICV1OiAlcCAob2Zmc2V0OiAldSwgbGVuZ3RoOiAldSlcbiIsIGkrKywgYmxv
Y2ssIGJsb2NrLT5sZWFkZXJCeXRlY29kZU9mZnNldCgpLCBibG9jay0+dG90YWxCeXRlY29kZUxl
bmd0aCgpKTsKICAgICAgICAgZGF0YUxvZ0YoIlN1Y2Nlc3NvcnM6ICIpOwogICAgICAgICBmb3Ig
KHVuc2lnbmVkIGogPSAwOyBqIDwgYmxvY2stPnN1Y2Nlc3NvcnMoKS5zaXplKCk7IGorKykgewog
ICAgICAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBzdWNjZXNzb3IgPSBibG9jay0+c3VjY2Vz
c29ycygpW2pdOwpAQCAtMzI3LDcgKzE2Niw3IEBAIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5
c2lzOjpkdW1wUmVzdWx0cygpCiAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2dGKCIldSAiLCBq
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGRhdGFMb2dGKCJcbiIpOwotICAgICAgICAg
ICAgbV9jb2RlQmxvY2stPmR1bXBCeXRlY29kZShXVEY6OmRhdGFGaWxlKCksIG1fY29kZUJsb2Nr
LT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpLCBpbnN0cnVjdGlvbnNCZWdpbiwgY3VycmVu
dEluc3RydWN0aW9uKTsKKyAgICAgICAgICAgIGNvZGVCbG9jay0+ZHVtcEJ5dGVjb2RlKFdURjo6
ZGF0YUZpbGUoKSwgY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpLCBpbnN0
cnVjdGlvbnNCZWdpbiwgY3VycmVudEluc3RydWN0aW9uKTsKIAogICAgICAgICAgICAgT3Bjb2Rl
SUQgb3Bjb2RlSUQgPSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25zQmVnaW5b
Ynl0ZWNvZGVPZmZzZXRdLnUub3Bjb2RlKTsKICAgICAgICAgICAgIHVuc2lnbmVkIG9wY29kZUxl
bmd0aCA9IG9wY29kZUxlbmd0aHNbb3Bjb2RlSURdOwpAQCAtMzQ2LDkgKzE4NSw3IEBAIHZvaWQg
Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpkdW1wUmVzdWx0cygpCiAKIHZvaWQgQnl0ZWNvZGVM
aXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlKCkKIHsKLSAgICBjb21wdXRlQnl0ZWNvZGVCYXNpY0Js
b2NrcyhtX2NvZGVCbG9jaywgbV9iYXNpY0Jsb2Nrcyk7Ci0gICAgQVNTRVJUKG1fYmFzaWNCbG9j
a3Muc2l6ZSgpKTsKLSAgICBydW5MaXZlbmVzc0ZpeHBvaW50KCk7CisgICAgcnVuTGl2ZW5lc3NG
aXhwb2ludChtX2dyYXBoKTsKIAogICAgIGlmIChPcHRpb25zOjpkdW1wQnl0ZWNvZGVMaXZlbmVz
c1Jlc3VsdHMoKSkKICAgICAgICAgZHVtcFJlc3VsdHMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuaAppbmRl
eCBlY2UxNmYyMWYwMTUxMGE2NDI3ZmQ4NDExNDA3OWJlZDg3MGMwODc1Li5lMTJjZDhlZGNlNzZl
MTIyZWYwNGVlMWYzNWZiYTgyMWI4ZDdmN2YwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5oCkBAIC0yMywx
MCArMjMsMTEgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0j
aWZuZGVmIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc19oCi0jZGVmaW5lIEJ5dGVjb2RlTGl2ZW5l
c3NBbmFseXNpc19oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkJ5dGVjb2RlQmFzaWNCbG9j
ay5oIgorI2luY2x1ZGUgIkJ5dGVjb2RlR3JhcGguaCIKKyNpbmNsdWRlICJDb2RlQmxvY2suaCIK
ICNpbmNsdWRlIDx3dGYvRmFzdEJpdFZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+
CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtMzQsMTMgKzM1LDI5IEBACiBuYW1lc3BhY2Ug
SlNDIHsKIAogY2xhc3MgQnl0ZWNvZGVLaWxsczsKLWNsYXNzIENvZGVCbG9jazsKIGNsYXNzIEZ1
bGxCeXRlY29kZUxpdmVuZXNzOwogCi1jbGFzcyBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMgewor
dGVtcGxhdGU8dHlwZW5hbWUgRGVyaXZlZEFuYWx5c2lzPgorY2xhc3MgQnl0ZWNvZGVMaXZlbmVz
c1Byb3BhZ2F0aW9uIHsKK3Byb3RlY3RlZDoKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBHcmFwaCwg
dHlwZW5hbWUgVXNlRnVuY3RvciwgdHlwZW5hbWUgRGVmRnVuY3Rvcj4gdm9pZCBzdGVwT3Zlcklu
c3RydWN0aW9uKEdyYXBoJiwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIEZhc3RCaXRWZWN0b3Im
IG91dCwgY29uc3QgVXNlRnVuY3RvciYsIGNvbnN0IERlZkZ1bmN0b3ImKTsKKworICAgIHRlbXBs
YXRlPHR5cGVuYW1lIEdyYXBoPiB2b2lkIHN0ZXBPdmVySW5zdHJ1Y3Rpb24oR3JhcGgmLCB1bnNp
Z25lZCBieXRlY29kZU9mZnNldCwgRmFzdEJpdFZlY3RvciYgb3V0KTsKKworICAgIHRlbXBsYXRl
PHR5cGVuYW1lIEdyYXBoPiBib29sIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQnl0ZWNvZGVPZmZz
ZXQoR3JhcGgmLCBCeXRlY29kZUJhc2ljQmxvY2sqLCB1bnNpZ25lZCB0YXJnZXRPZmZzZXQsIEZh
c3RCaXRWZWN0b3ImIHJlc3VsdCk7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBHcmFwaD4gYm9v
bCBjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJsb2NrKEdyYXBoJiwgQnl0ZWNvZGVCYXNpY0Jsb2Nr
Kik7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBHcmFwaD4gRmFzdEJpdFZlY3RvciBnZXRMaXZl
bmVzc0luZm9BdEJ5dGVjb2RlT2Zmc2V0KEdyYXBoJiwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQp
OworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgR3JhcGg+IHZvaWQgcnVuTGl2ZW5lc3NGaXhwb2lu
dChHcmFwaCYpOworfTsKKworY2xhc3MgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzIDogcHJpdmF0
ZSBCeXRlY29kZUxpdmVuZXNzUHJvcGFnYXRpb248Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzPiB7
CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzKTsKIHB1YmxpYzoKKyAgICBmcmllbmQgY2xhc3MgQnl0
ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0aW9uPEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcz47CiAgICAg
Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzKENvZGVCbG9jayopOwogICAgIAogICAgIGJvb2wgb3Bl
cmFuZElzTGl2ZUF0Qnl0ZWNvZGVPZmZzZXQoaW50IG9wZXJhbmQsIHVuc2lnbmVkIGJ5dGVjb2Rl
T2Zmc2V0KTsKQEAgLTUxLDE5ICs2OCwxOSBAQCBjbGFzcyBCeXRlY29kZUxpdmVuZXNzQW5hbHlz
aXMgewogCiBwcml2YXRlOgogICAgIHZvaWQgY29tcHV0ZSgpOwotICAgIHZvaWQgcnVuTGl2ZW5l
c3NGaXhwb2ludCgpOwogICAgIHZvaWQgZHVtcFJlc3VsdHMoKTsKIAogICAgIHZvaWQgZ2V0TGl2
ZW5lc3NJbmZvQXRCeXRlY29kZU9mZnNldCh1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgRmFzdEJp
dFZlY3RvciYpOwogCi0gICAgQ29kZUJsb2NrKiBtX2NvZGVCbG9jazsKLSAgICBWZWN0b3I8c3Rk
Ojp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+IG1fYmFzaWNCbG9ja3M7CisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0
KENvZGVCbG9jayosIE9wY29kZUlELCBJbnN0cnVjdGlvbiosIEZhc3RCaXRWZWN0b3ImLCBjb25z
dCBGdW5jdG9yJik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdm9pZCBjb21wdXRl
VXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayosIE9wY29kZUlELCBJbnN0cnVjdGlvbios
IEZhc3RCaXRWZWN0b3ImLCBjb25zdCBGdW5jdG9yJik7CisKKyAgICBCeXRlY29kZUdyYXBoPENv
ZGVCbG9jaz4gbV9ncmFwaDsKIH07CiAKIGlubGluZSBib29sIG9wZXJhbmRJc0Fsd2F5c0xpdmUo
aW50IG9wZXJhbmQpOwogaW5saW5lIGJvb2wgb3BlcmFuZFRoYXRJc05vdEFsd2F5c0xpdmVJc0xp
dmUoY29uc3QgRmFzdEJpdFZlY3RvciYgb3V0LCBpbnQgb3BlcmFuZCk7CiBpbmxpbmUgYm9vbCBv
cGVyYW5kSXNMaXZlKGNvbnN0IEZhc3RCaXRWZWN0b3ImIG91dCwgaW50IG9wZXJhbmQpOworaW5s
aW5lIGJvb2wgaXNWYWxpZFJlZ2lzdGVyRm9yTGl2ZW5lc3MoaW50IG9wZXJhbmQpOwogCiB9IC8v
IG5hbWVzcGFjZSBKU0MKLQotI2VuZGlmIC8vIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc19oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVz
c0FuYWx5c2lzSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVj
b2RlTGl2ZW5lc3NBbmFseXNpc0lubGluZXMuaAppbmRleCA5YjVjNzU1ZmNiNmNkNTE4MDUxNDUw
MDc4OTIyYWM0ZDZkNGQyMzhmLi41MDZhMGZjZDkzNzhlYThiYmFmZGQzZjZkMjljM2NlNjcwNmY1
NDA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVM
aXZlbmVzc0FuYWx5c2lzSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNJbmxpbmVzLmgKQEAgLTIzLDExICsyMywxMiBA
QAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgQnl0
ZWNvZGVMaXZlbmVzc0FuYWx5c2lzSW5saW5lc19oCi0jZGVmaW5lIEJ5dGVjb2RlTGl2ZW5lc3NB
bmFseXNpc0lubGluZXNfaAorI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJCeXRlY29kZUdyYXBo
LmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmgiCiAjaW5jbHVkZSAiQ29k
ZUJsb2NrLmgiCisjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJPcGVyYXRpb25z
LmgiCiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtNTAsNyArNTEsMTUxIEBAIGlubGluZSBib29sIG9w
ZXJhbmRJc0xpdmUoY29uc3QgRmFzdEJpdFZlY3RvciYgb3V0LCBpbnQgb3BlcmFuZCkKICAgICBy
ZXR1cm4gb3BlcmFuZElzQWx3YXlzTGl2ZShvcGVyYW5kKSB8fCBvcGVyYW5kVGhhdElzTm90QWx3
YXlzTGl2ZUlzTGl2ZShvdXQsIG9wZXJhbmQpOwogfQogCi19IC8vIG5hbWVzcGFjZSBKU0MKK2lu
bGluZSBib29sIGlzVmFsaWRSZWdpc3RlckZvckxpdmVuZXNzKGludCBvcGVyYW5kKQoreworICAg
IFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnKG9wZXJhbmQpOworICAgIGlmICh2aXJ0dWFsUmVn
LmlzQ29uc3RhbnQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiB2aXJ0dWFs
UmVnLmlzTG9jYWwoKTsKK30KKworLy8gU2ltcGxpZmllZCBpbnRlcmZhY2UgdG8gYnl0ZWNvZGUg
dXNlL2RlZiwgd2hpY2ggZGV0ZXJtaW5lcyBkZWZzIGZpcnN0IGFuZCB0aGVuIHVzZXMsIGFuZCBp
bmNsdWRlcworLy8gZXhjZXB0aW9uIGhhbmRsZXJzIGluIHRoZSB1c2VzLgordGVtcGxhdGU8dHlw
ZW5hbWUgRGVyaXZlZEFuYWx5c2lzPgordGVtcGxhdGU8dHlwZW5hbWUgR3JhcGgsIHR5cGVuYW1l
IFVzZUZ1bmN0b3IsIHR5cGVuYW1lIERlZkZ1bmN0b3I+CitpbmxpbmUgdm9pZCBCeXRlY29kZUxp
dmVuZXNzUHJvcGFnYXRpb248RGVyaXZlZEFuYWx5c2lzPjo6c3RlcE92ZXJJbnN0cnVjdGlvbihH
cmFwaCYgZ3JhcGgsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBGYXN0Qml0VmVjdG9yJiBvdXQs
IGNvbnN0IFVzZUZ1bmN0b3ImIHVzZSwgY29uc3QgRGVmRnVuY3RvciYgZGVmKQoreworICAgIC8v
IFRoaXMgYWJzdHJhY3RseSBleGVjdXRlIHRoZSBpbnN0cnVjdGlvbiBpbiByZXZlcnNlLiBJbnN0
cnVjdGlvbnMgbG9naWNhbGx5IGZpcnN0IHVzZSBvcGVyYW5kcyBhbmQKKyAgICAvLyB0aGVuIGRl
ZmluZSBvcGVyYW5kcy4gVGhpcyBsb2dpY2FsIG9yZGVyaW5nIGlzIG5lY2Vzc2FyeSBmb3Igb3Bl
cmF0aW9ucyB0aGF0IHVzZSBhbmQgZGVmIHRoZSBzYW1lCisgICAgLy8gb3BlcmFuZCwgbGlrZToK
KyAgICAvLworICAgIC8vICAgICBvcF9hZGQgbG9jMSwgbG9jMSwgbG9jMgorICAgIC8vCisgICAg
Ly8gVGhlIHVzZSBvZiBsb2MxIGhhcHBlbnMgYmVmb3JlIHRoZSBkZWYgb2YgbG9jMS4gVGhhdCdz
IGEgc2VtYW50aWMgcmVxdWlyZW1lbnQgc2luY2UgdGhlIGFkZAorICAgIC8vIG9wZXJhdGlvbiBj
YW5ub3QgdHJhdmVsIGZvcndhcmQgaW4gdGltZSB0byByZWFkIHRoZSB2YWx1ZSB0aGF0IGl0IHdp
bGwgcHJvZHVjZSBhZnRlciByZWFkaW5nIHRoYXQKKyAgICAvLyB2YWx1ZS4gU2luY2Ugd2UgYXJl
IGV4ZWN1dGluZyBpbiByZXZlcnNlLCB0aGlzIG1lYW5zIHRoYXQgd2UgbXVzdCBkbyBkZWZzIGJl
Zm9yZSB1c2VzIChyZXZlcnNlIG9mCisgICAgLy8gdXNlcyBiZWZvcmUgZGVmcykuCisgICAgLy8K
KyAgICAvLyBTaW5jZSB0aGlzIGlzIGEgbGl2ZW5lc3MgYW5hbHlzaXMsIHRoaXMgb3JkZXJpbmcg
ZW5kcyB1cCBiZWluZyBwYXJ0aWN1bGFybHkgaW1wb3J0YW50OiBpZiB3ZSBkaWQKKyAgICAvLyB1
c2VzIGJlZm9yZSBkZWZzLCB0aGVuIHRoZSBhZGQgb3BlcmF0aW9uIGFib3ZlIHdvdWxkIGFwcGVh
ciB0byBub3QgaGF2ZSBsb2MxIGxpdmUsIHNpbmNlIHdlJ2QKKyAgICAvLyBmaXJzdCBhZGQgaXQg
dG8gdGhlIG91dCBzZXQgKHRoZSB1c2UpLCBhbmQgdGhlbiB3ZSdkIHJlbW92ZSBpdCAodGhlIGRl
ZikuCisKKyAgICBhdXRvKiBjb2RlQmxvY2sgPSBncmFwaC5jb2RlQmxvY2soKTsKKyAgICBJbnRl
cnByZXRlciogaW50ZXJwcmV0ZXIgPSBjb2RlQmxvY2stPnZtKCktPmludGVycHJldGVyOworICAg
IGF1dG8qIGluc3RydWN0aW9uc0JlZ2luID0gZ3JhcGguaW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsK
KyAgICBhdXRvKiBpbnN0cnVjdGlvbiA9ICZpbnN0cnVjdGlvbnNCZWdpbltieXRlY29kZU9mZnNl
dF07CisgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoKmlu
c3RydWN0aW9uKTsKKworICAgIHN0YXRpY19jYXN0PERlcml2ZWRBbmFseXNpcyo+KHRoaXMpLT5j
b21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KAorICAgICAgICBjb2RlQmxvY2ssIG9wY29kZUlE
LCBpbnN0cnVjdGlvbiwgb3V0LAorICAgICAgICBbJl0gKHR5cGVuYW1lIEdyYXBoOjpDb2RlQmxv
Y2sqLCB0eXBlbmFtZSBHcmFwaDo6SW5zdHJ1Y3Rpb24qLCBPcGNvZGVJRCwgaW50IG9wZXJhbmQp
IHsKKyAgICAgICAgICAgIGlmIChpc1ZhbGlkUmVnaXN0ZXJGb3JMaXZlbmVzcyhvcGVyYW5kKSkK
KyAgICAgICAgICAgICAgICBkZWYoVmlydHVhbFJlZ2lzdGVyKG9wZXJhbmQpLnRvTG9jYWwoKSk7
CisgICAgICAgIH0pOworCisgICAgc3RhdGljX2Nhc3Q8RGVyaXZlZEFuYWx5c2lzKj4odGhpcykt
PmNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoCisgICAgICAgIGNvZGVCbG9jaywgb3Bjb2Rl
SUQsIGluc3RydWN0aW9uLCBvdXQsCisgICAgICAgIFsmXSAodHlwZW5hbWUgR3JhcGg6OkNvZGVC
bG9jayosIHR5cGVuYW1lIEdyYXBoOjpJbnN0cnVjdGlvbiosIE9wY29kZUlELCBpbnQgb3BlcmFu
ZCkgeworICAgICAgICAgICAgaWYgKGlzVmFsaWRSZWdpc3RlckZvckxpdmVuZXNzKG9wZXJhbmQp
KQorICAgICAgICAgICAgICAgIHVzZShWaXJ0dWFsUmVnaXN0ZXIob3BlcmFuZCkudG9Mb2NhbCgp
KTsKKyAgICAgICAgfSk7CisKKyAgICAvLyBJZiB3ZSBoYXZlIGFuIGV4Y2VwdGlvbiBoYW5kbGVy
LCB3ZSB3YW50IHRoZSBsaXZlLWluIHZhcmlhYmxlcyBvZiB0aGUgCisgICAgLy8gZXhjZXB0aW9u
IGhhbmRsZXIgYmxvY2sgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIGxpdmUtaW4gb2YgdGhpcyBwYXJ0
aWN1bGFyIGJ5dGVjb2RlLgorICAgIGlmIChhdXRvKiBoYW5kbGVyID0gY29kZUJsb2NrLT5oYW5k
bGVyRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpKSB7CisgICAgICAgIEJ5dGVjb2Rl
QmFzaWNCbG9jayogaGFuZGxlckJsb2NrID0gZ3JhcGguZmluZEJhc2ljQmxvY2tXaXRoTGVhZGVy
T2Zmc2V0KGhhbmRsZXItPnRhcmdldCk7CisgICAgICAgIEFTU0VSVChoYW5kbGVyQmxvY2spOwor
ICAgICAgICBoYW5kbGVyQmxvY2stPmluKCkuZm9yRWFjaFNldEJpdCh1c2UpOworICAgIH0KK30K
KwordGVtcGxhdGU8dHlwZW5hbWUgRGVyaXZlZEFuYWx5c2lzPgordGVtcGxhdGU8dHlwZW5hbWUg
R3JhcGg+CitpbmxpbmUgdm9pZCBCeXRlY29kZUxpdmVuZXNzUHJvcGFnYXRpb248RGVyaXZlZEFu
YWx5c2lzPjo6c3RlcE92ZXJJbnN0cnVjdGlvbihHcmFwaCYgZ3JhcGgsIHVuc2lnbmVkIGJ5dGVj
b2RlT2Zmc2V0LCBGYXN0Qml0VmVjdG9yJiBvdXQpCit7CisgICAgc3RlcE92ZXJJbnN0cnVjdGlv
bigKKyAgICAgICAgZ3JhcGgsIGJ5dGVjb2RlT2Zmc2V0LCBvdXQsCisgICAgICAgIFsmXSAodW5z
aWduZWQgYml0SW5kZXgpIHsKKyAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIHVzZSBmdW5jdG9y
LCBzbyB3ZSBzZXQgdGhlIGJpdC4KKyAgICAgICAgICAgIG91dC5zZXQoYml0SW5kZXgpOworICAg
ICAgICB9LAorICAgICAgICBbJl0gKHVuc2lnbmVkIGJpdEluZGV4KSB7CisgICAgICAgICAgICAv
LyBUaGlzIGlzIHRoZSBkZWYgZnVuY3Rvciwgc28gd2UgY2xlYXIgdGhlIGJpdC4KKyAgICAgICAg
ICAgIG91dC5jbGVhcihiaXRJbmRleCk7CisgICAgICAgIH0pOworfQorCit0ZW1wbGF0ZTx0eXBl
bmFtZSBEZXJpdmVkQW5hbHlzaXM+Cit0ZW1wbGF0ZTx0eXBlbmFtZSBHcmFwaD4KK2lubGluZSBi
b29sIEJ5dGVjb2RlTGl2ZW5lc3NQcm9wYWdhdGlvbjxEZXJpdmVkQW5hbHlzaXM+Ojpjb21wdXRl
TG9jYWxMaXZlbmVzc0ZvckJ5dGVjb2RlT2Zmc2V0KEdyYXBoJiBncmFwaCwgQnl0ZWNvZGVCYXNp
Y0Jsb2NrKiBibG9jaywgdW5zaWduZWQgdGFyZ2V0T2Zmc2V0LCBGYXN0Qml0VmVjdG9yJiByZXN1
bHQpCit7CisgICAgQVNTRVJUKCFibG9jay0+aXNFeGl0QmxvY2soKSk7CisgICAgQVNTRVJUKCFi
bG9jay0+aXNFbnRyeUJsb2NrKCkpOwogCi0jZW5kaWYgLy8gQnl0ZWNvZGVMaXZlbmVzc0FuYWx5
c2lzSW5saW5lc19oCisgICAgRmFzdEJpdFZlY3RvciBvdXQgPSBibG9jay0+b3V0KCk7CiAKKyAg
ICBmb3IgKGludCBpID0gYmxvY2stPmJ5dGVjb2RlT2Zmc2V0cygpLnNpemUoKSAtIDE7IGkgPj0g
MDsgaS0tKSB7CisgICAgICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0ID0gYmxvY2stPmJ5dGVj
b2RlT2Zmc2V0cygpW2ldOworICAgICAgICBpZiAodGFyZ2V0T2Zmc2V0ID4gYnl0ZWNvZGVPZmZz
ZXQpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgc3RlcE92ZXJJbnN0cnVjdGlvbihncmFw
aCwgYnl0ZWNvZGVPZmZzZXQsIG91dCk7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdC5zZXRB
bmRDaGVjayhvdXQpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBEZXJpdmVkQW5hbHlzaXM+Cit0
ZW1wbGF0ZTx0eXBlbmFtZSBHcmFwaD4KK2lubGluZSBib29sIEJ5dGVjb2RlTGl2ZW5lc3NQcm9w
YWdhdGlvbjxEZXJpdmVkQW5hbHlzaXM+Ojpjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJsb2NrKEdy
YXBoJiBncmFwaCwgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaykKK3sKKyAgICBpZiAoYmxvY2st
PmlzRXhpdEJsb2NrKCkgfHwgYmxvY2stPmlzRW50cnlCbG9jaygpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgcmV0dXJuIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQnl0ZWNvZGVPZmZzZXQo
Z3JhcGgsIGJsb2NrLCBibG9jay0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKSwgYmxvY2stPmluKCkp
OworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBEZXJpdmVkQW5hbHlzaXM+Cit0ZW1wbGF0ZTx0eXBl
bmFtZSBHcmFwaD4KK2lubGluZSBGYXN0Qml0VmVjdG9yIEJ5dGVjb2RlTGl2ZW5lc3NQcm9wYWdh
dGlvbjxEZXJpdmVkQW5hbHlzaXM+OjpnZXRMaXZlbmVzc0luZm9BdEJ5dGVjb2RlT2Zmc2V0KEdy
YXBoJiBncmFwaCwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpCit7CisgICAgQnl0ZWNvZGVCYXNp
Y0Jsb2NrKiBibG9jayA9IGdyYXBoLmZpbmRCYXNpY0Jsb2NrRm9yQnl0ZWNvZGVPZmZzZXQoYnl0
ZWNvZGVPZmZzZXQpOworICAgIEFTU0VSVChibG9jayk7CisgICAgQVNTRVJUKCFibG9jay0+aXNF
bnRyeUJsb2NrKCkpOworICAgIEFTU0VSVCghYmxvY2stPmlzRXhpdEJsb2NrKCkpOworICAgIEZh
c3RCaXRWZWN0b3Igb3V0OworICAgIG91dC5yZXNpemUoYmxvY2stPm91dCgpLm51bUJpdHMoKSk7
CisgICAgY29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCeXRlY29kZU9mZnNldChncmFwaCwgYmxvY2ss
IGJ5dGVjb2RlT2Zmc2V0LCBvdXQpOworICAgIHJldHVybiBvdXQ7Cit9CisKK3RlbXBsYXRlPHR5
cGVuYW1lIERlcml2ZWRBbmFseXNpcz4KK3RlbXBsYXRlPHR5cGVuYW1lIEdyYXBoPgoraW5saW5l
IHZvaWQgQnl0ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0aW9uPERlcml2ZWRBbmFseXNpcz46OnJ1bkxp
dmVuZXNzRml4cG9pbnQoR3JhcGgmIGdyYXBoKQoreworICAgIGF1dG8qIGNvZGVCbG9jayA9IGdy
YXBoLmNvZGVCbG9jaygpOworICAgIHVuc2lnbmVkIG51bWJlck9mVmFyaWFibGVzID0gY29kZUJs
b2NrLT5udW1DYWxsZWVMb2NhbHMoKTsKKyAgICBmb3IgKEJ5dGVjb2RlQmFzaWNCbG9jayogYmxv
Y2sgOiBncmFwaCkgeworICAgICAgICBibG9jay0+aW4oKS5yZXNpemUobnVtYmVyT2ZWYXJpYWJs
ZXMpOworICAgICAgICBibG9jay0+b3V0KCkucmVzaXplKG51bWJlck9mVmFyaWFibGVzKTsKKyAg
ICAgICAgYmxvY2stPmluKCkuY2xlYXJBbGwoKTsKKyAgICAgICAgYmxvY2stPm91dCgpLmNsZWFy
QWxsKCk7CisgICAgfQorCisgICAgYm9vbCBjaGFuZ2VkOworICAgIEJ5dGVjb2RlQmFzaWNCbG9j
ayogbGFzdEJsb2NrID0gZ3JhcGgubGFzdCgpOworICAgIGxhc3RCbG9jay0+aW4oKS5jbGVhckFs
bCgpOworICAgIGxhc3RCbG9jay0+b3V0KCkuY2xlYXJBbGwoKTsKKyAgICBGYXN0Qml0VmVjdG9y
IG5ld091dDsKKyAgICBuZXdPdXQucmVzaXplKGxhc3RCbG9jay0+b3V0KCkubnVtQml0cygpKTsK
KyAgICBkbyB7CisgICAgICAgIGNoYW5nZWQgPSBmYWxzZTsKKyAgICAgICAgZm9yIChCeXRlY29k
ZUJhc2ljQmxvY2sqIGJsb2NrIDogZ3JhcGguYmFzaWNCbG9ja3NJblJldmVyc2VPcmRlcigpKSB7
CisgICAgICAgICAgICBuZXdPdXQuY2xlYXJBbGwoKTsKKyAgICAgICAgICAgIGZvciAoQnl0ZWNv
ZGVCYXNpY0Jsb2NrKiBzdWNjZXNzb3IgOiBibG9jay0+c3VjY2Vzc29ycygpKQorICAgICAgICAg
ICAgICAgIG5ld091dC5tZXJnZShzdWNjZXNzb3ItPmluKCkpOworICAgICAgICAgICAgYmxvY2st
Pm91dCgpLnNldChuZXdPdXQpOworICAgICAgICAgICAgY2hhbmdlZCB8PSBjb21wdXRlTG9jYWxM
aXZlbmVzc0ZvckJsb2NrKGdyYXBoLCBibG9jayk7CisgICAgICAgIH0KKyAgICB9IHdoaWxlIChj
aGFuZ2VkKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVSZXdyaXRlci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVSZXdyaXRlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDA1Zjdi
ZWVkZjAxODAyMjExNjE5MmI2Yzg2Yzc5OTVjYzA0MmM4NAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVJld3JpdGVyLmNwcApAQCAtMCww
ICsxLDExNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBZdXN1a2UgU3V6dWtpIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+CisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiQnl0ZWNvZGVSZXdyaXRlci5oIgorCisjaW5jbHVkZSA8d3RmL0J1YmJsZVNvcnQuaD4KKwor
bmFtZXNwYWNlIEpTQyB7CisKK3ZvaWQgQnl0ZWNvZGVSZXdyaXRlcjo6YXBwbHlNb2RpZmljYXRp
b24oKQoreworICAgIGZvciAoc2l6ZV90IGluc2VydGlvbkluZGV4ID0gbV9pbnNlcnRpb25zLnNp
emUoKTsgaW5zZXJ0aW9uSW5kZXgtLTspIHsKKyAgICAgICAgSW5zZXJ0aW9uJiBpbnNlcnRpb24g
PSBtX2luc2VydGlvbnNbaW5zZXJ0aW9uSW5kZXhdOworICAgICAgICBpZiAoaW5zZXJ0aW9uLmVs
ZW1lbnQoKS50eXBlID09IENvbW1hbmQ6OlR5cGU6OlJlbW92ZSkKKyAgICAgICAgICAgIG1fZ3Jh
cGguaW5zdHJ1Y3Rpb25zKCkucmVtb3ZlKGluc2VydGlvbi5pbmRleCgpLCBpbnNlcnRpb24uZWxl
bWVudCgpLmxlbmd0aCgpKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBpZiAoaW5zZXJ0
aW9uLmVsZW1lbnQoKS5ieXRlY29kZVR5cGUgPT0gQ29tbWFuZDo6Qnl0ZWNvZGVUeXBlOjpCcmFu
Y2gpCisgICAgICAgICAgICAgICAgYWRqdXN0SnVtcFRhcmdldHNJbkp1bXBPcGVyYXRpb24oYWRq
dXN0T2Zmc2V0V2l0aEluc2VydGlvbnMoMCwgaW5zZXJ0aW9uLmluZGV4KCksIG1faW5zZXJ0aW9u
cy5iZWdpbigpLCBtX2luc2VydGlvbnMuYmVnaW4oKSArIGluc2VydGlvbkluZGV4KSwgaW5zZXJ0
aW9uKTsKKyAgICAgICAgICAgIG1fZ3JhcGguaW5zdHJ1Y3Rpb25zKCkuaW5zZXJ0VmVjdG9yKGlu
c2VydGlvbi5pbmRleCgpLCBpbnNlcnRpb24uZWxlbWVudCgpLmluc3RydWN0aW9ucyk7CisgICAg
ICAgIH0KKyAgICB9CisgICAgbV9pbnNlcnRpb25zLmNsZWFyKCk7Cit9CisKK3ZvaWQgQnl0ZWNv
ZGVSZXdyaXRlcjo6ZXhlY3V0ZSgpCit7CisgICAgV1RGOjpidWJibGVTb3J0KG1faW5zZXJ0aW9u
cy5iZWdpbigpLCBtX2luc2VydGlvbnMuZW5kKCksIFtdIChjb25zdCBJbnNlcnRpb24mIGxocywg
Y29uc3QgSW5zZXJ0aW9uJiByaHMpIHsKKyAgICAgICAgaWYgKGxocy5pbmRleCgpID09IHJocy5p
bmRleCgpKQorICAgICAgICAgICAgcmV0dXJuIGxocy5lbGVtZW50KCkucG9zaXRpb24gPCByaHMu
ZWxlbWVudCgpLnBvc2l0aW9uOworICAgICAgICByZXR1cm4gbGhzIDwgcmhzOworICAgIH0pOwor
CisgICAgLy8gQ29udmVydCB0byBhYnNvbHV0ZSBmaW5hbCBvZmZzZXRzLgorICAgIGZvciAoU3dp
dGNoRW50cnkmIGVudHJ5IDogbV9pbnNlcnRlZFN3aXRjaGVzKSB7CisgICAgICAgIFVubGlua2Vk
U2ltcGxlSnVtcFRhYmxlJiB0YWJsZSA9IG1fZ3JhcGguY29kZUJsb2NrKCktPnN3aXRjaEp1bXBU
YWJsZShlbnRyeS50YWJsZUluZGV4KTsKKyAgICAgICAgZW50cnkuZGVmYXVsdE9mZnNldCA9IGFk
anVzdE9mZnNldCgwLCBlbnRyeS5kZWZhdWx0T2Zmc2V0KTsKKyAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gdGFibGUuYnJhbmNoT2Zmc2V0cy5zaXplKCk7IGktLTspCisgICAgICAgICAgICB0YWJs
ZS5icmFuY2hPZmZzZXRzW2ldID0gYWRqdXN0T2Zmc2V0KDAsIHRhYmxlLmJyYW5jaE9mZnNldHNb
aV0pOworICAgIH0KKworICAgIFVubGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBtX2dyYXBo
LmNvZGVCbG9jaygpOworICAgIGNvZGVCbG9jay0+YXBwbHlNb2RpZmljYXRpb24oKnRoaXMpOwor
fQorCit2b2lkIEJ5dGVjb2RlUmV3cml0ZXI6OmFkanVzdEp1bXBUYXJnZXRzSW5KdW1wT3BlcmF0
aW9uKHVuc2lnbmVkIGZpbmFsT2Zmc2V0LCBJbnNlcnRpb24mIGluc2VydGlvbikKK3sKKyAgICAv
LyBDdXJyZW50bHksIHdlIG9ubHkgc3VwcG9ydCBzd2l0Y2hfaW1tIG9wZXJhdGlvbiBoZXJlLgor
ICAgIC8vIFdlIGNhbiBlYXNpbHkgZXh0ZW5kIGl0IHRvIGFsbG93IHRoZSBvdGhlciBqdW1wIG9w
ZXJhdGlvbnMuCisgICAgU3dpdGNoRW50cnkmIGVudHJ5ID0gbV9pbnNlcnRlZFN3aXRjaGVzW2lu
c2VydGlvbi5lbGVtZW50KCkuanVtcEVudHJ5SW5kZXhdOworICAgIFVubGlua2VkU2ltcGxlSnVt
cFRhYmxlJiB0YWJsZSA9IG1fZ3JhcGguY29kZUJsb2NrKCktPnN3aXRjaEp1bXBUYWJsZShlbnRy
eS50YWJsZUluZGV4KTsKKworICAgIGZvciAodW5zaWduZWQgaSA9IHRhYmxlLmJyYW5jaE9mZnNl
dHMuc2l6ZSgpOyBpLS07KQorICAgICAgICB0YWJsZS5icmFuY2hPZmZzZXRzW2ldID0gdGFibGUu
YnJhbmNoT2Zmc2V0c1tpXSAtIHN0YXRpY19jYXN0PGludD4oZmluYWxPZmZzZXQpOworCisgICAg
aW5zZXJ0aW9uLmVsZW1lbnQoKS5pbnN0cnVjdGlvbnNbMl0gPSBzdGF0aWNfY2FzdDxpbnQ+KGVu
dHJ5LmRlZmF1bHRPZmZzZXQpIC0gc3RhdGljX2Nhc3Q8aW50PihmaW5hbE9mZnNldCk7Cit9CisK
K3ZvaWQgQnl0ZWNvZGVSZXdyaXRlcjo6aW5zZXJ0SW1wbCh1bnNpZ25lZCBqdW1wRW50cnlJbmRl
eCwgQ29tbWFuZDo6Qnl0ZWNvZGVUeXBlIGJ5dGVjb2RlVHlwZSwgUG9zaXRpb24gcG9zaXRpb24s
IHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBWZWN0b3I8VW5saW5rZWRJbnN0cnVjdGlvbj4mJiBm
cmFnbWVudCkKK3sKKyAgICBBU1NFUlQocG9zaXRpb24gPT0gUG9zaXRpb246OkJlZm9yZSB8fCBw
b3NpdGlvbiA9PSBQb3NpdGlvbjo6QWZ0ZXIpOworICAgIG1faW5zZXJ0aW9ucy5hcHBlbmQoSW5z
ZXJ0aW9uKGJ5dGVjb2RlT2Zmc2V0LCBDb21tYW5kIHsKKyAgICAgICAgQ29tbWFuZDo6VHlwZTo6
SW5zZXJ0LAorICAgICAgICBwb3NpdGlvbiwKKyAgICAgICAgYnl0ZWNvZGVUeXBlLAorICAgICAg
ICBqdW1wRW50cnlJbmRleCwKKyAgICAgICAgMCwKKyAgICAgICAgV1RGTW92ZShmcmFnbWVudCkK
KyAgICB9KSk7Cit9CisKK1VubGlua2VkU2ltcGxlSnVtcFRhYmxlJiBCeXRlY29kZVJld3JpdGVy
OjppbnNlcnRTd2l0Y2hJbW1lZGlhdGVJbXBsKFBvc2l0aW9uIHBvc2l0aW9uLCB1bnNpZ25lZCBi
eXRlY29kZU9mZnNldCwgdW5zaWduZWQgZGVmYXVsdE9mZnNldCwgaW50IHJlZykKK3sKKyAgICBT
d2l0Y2hFbnRyeSBlbnRyeSB7CisgICAgICAgIG1fZ3JhcGguY29kZUJsb2NrKCktPm51bWJlck9m
U3dpdGNoSnVtcFRhYmxlcygpLAorICAgICAgICBkZWZhdWx0T2Zmc2V0LAorICAgIH07CisKKyAg
ICBWZWN0b3I8VW5saW5rZWRJbnN0cnVjdGlvbj4gZnJhZ21lbnQgPSB7CisgICAgICAgIFVubGlu
a2VkSW5zdHJ1Y3Rpb24ob3Bfc3dpdGNoX2ltbSksCisgICAgICAgIFVubGlua2VkSW5zdHJ1Y3Rp
b24oZW50cnkudGFibGVJbmRleCksCisgICAgICAgIFVubGlua2VkSW5zdHJ1Y3Rpb24oZGVmYXVs
dE9mZnNldCksCisgICAgICAgIFVubGlua2VkSW5zdHJ1Y3Rpb24ocmVnKQorICAgIH07CisKKyAg
ICBhdXRvJiBqdW1wVGFibGUgPSBtX2dyYXBoLmNvZGVCbG9jaygpLT5hZGRTd2l0Y2hKdW1wVGFi
bGUoKTsKKyAgICB1bnNpZ25lZCBqdW1wRW50cnlJbmRleCA9IG1faW5zZXJ0ZWRTd2l0Y2hlcy5z
aXplKCk7CisgICAgbV9pbnNlcnRlZFN3aXRjaGVzLmFwcGVuZChlbnRyeSk7CisgICAgaW5zZXJ0
SW1wbChqdW1wRW50cnlJbmRleCwgQ29tbWFuZDo6Qnl0ZWNvZGVUeXBlOjpCcmFuY2gsIHBvc2l0
aW9uLCBieXRlY29kZU9mZnNldCwgV1RGTW92ZShmcmFnbWVudCkpOworICAgIHJldHVybiBqdW1w
VGFibGU7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlUmV3cml0ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9CeXRlY29kZVJld3JpdGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWRiY2UyYTkzYWI1
MzFmYWQ2YmFiZWExNDVkMTBiMjc1OWYzOTFhOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVJld3JpdGVyLmgKQEAgLTAsMCArMSwyNDcg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFA
Z21haWwuY29tPgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJCeXRlY29kZUdy
YXBoLmgiCisjaW5jbHVkZSAiQnl0ZWNvZGVzLmgiCisjaW5jbHVkZSAiT3Bjb2RlLmgiCisjaW5j
bHVkZSAiVW5saW5rZWRDb2RlQmxvY2suaCIKKyNpbmNsdWRlIDx3dGYvSW5zZXJ0aW9uLmg+CisK
K25hbWVzcGFjZSBKU0MgeworCisvLyBCeXRlY29kZVJld3JpdGVyIG9mZmVycyB0aGUgYWJpbGl0
eSB0byBpbnNlcnQgYW5kIHJlbW92ZSB0aGUgYnl0ZWNvZGVzIGluY2x1ZGluZyBqdW1wIG9wZXJh
dGlvbnMuCisvLworLy8gV2UgdXNlIHRoZSBvcmlnaW5hbCBieXRlY29kZSBvZmZzZXRzIGFzIGxh
YmVscy4gV2hlbiB5b3UgZW1pdCBzb21lIGp1bXBzLCB5b3UgY2FuIHNwZWNpZnkgdGhlIGp1bXAg
dGFyZ2V0IGJ5CisvLyB1c2luZyB0aGUgb3JpZ2luYWwgYnl0ZWNvZGUgb2Zmc2V0cy4gVGhlc2Ug
Ynl0ZWNvZGUgb2Zmc2V0cyBhcmUgbGF0ZXIgY29udmVydGVkIGFwcHJvcHJpYXRlIHZhbHVlcyBi
eSB0aGUKKy8vIHJld3JpdGVyLiBBbmQgd2UgYWxzbyB1c2UgdGhlIGxhYmVscyB0byByZXByZXNl
bnRzIHRoZSBwb3NpdGlvbiB0aGUgbmV3IGJ5dGVjb2RlcyBpbnNlcnRlZC4KKy8vCisvLyAgICAg
ICAgICAgICAgICAgICAgICB8ICBbYnl0ZWNvZGVdICB8ICBbYnl0ZWNvZGVdICB8CisvLyAgIG9m
ZnNldHMgICAgICAgICAgICBBICAgICAgICAgICAgICBCICAgICAgICAgICAgICBDCisvLworLy8g
V2UgY2FuIHVzZSB0aGUgYWJvdmUgIkEiLCAiQiIsIGFuZCAiQyIgb2Zmc2V0cyBhcyBsYWJlbHMu
IEFuZCB0aGUgcmV3cml0ZXIgaGFzIHRoZSBhYmlsaXR5IHRvIGluc2VydCBieXRlY29kZSBmcmFn
bWVudHMKKy8vIGJlZm9yZSBhbmQgYWZ0ZXIgdGhlIGxhYmVsLiBGb3IgZXhhbXBsZSwgaWYgeW91
IGluc2VydCB0aGUgZnJhZ21lbnQgYmVmb3JlICJCIiwgdGhlIGxheW91dCBiZWNvbWVzIGxpa2Ug
dGhpcy4KKy8vCisvLyAgICAgICAgICAgICAgICAgICAgICB8ICBbYnl0ZWNvZGVdICB8ICBbZnJh
Z21lbnRdICBbYnl0ZWNvZGVdICB8CisvLyAgIG9mZnNldHMgICAgICAgICAgICBBICAgICAgICAg
ICAgICBCICAgICAgICAgICAgICAgICAgICAgICAgICBDCisvLworLy8gIEFuZCBldmVuIGlmIHlv
dSByZW1vdmUgc29tZSBvcmlnaW5hbCBieXRlY29kZXMsIHRoZSBvZmZzZXQgcmVtYWlucyBhcyBs
YWJlbHMuIEZvciBleGFtcGxlLCB3aGVuIHlvdSByZW1vdmUgdGhlIEEncyBieXRlY29kZSwKKy8v
ICB0aGUgbGF5b3V0IGJlY29tZXMgbGlrZSB0aGlzLgorLy8KKy8vICAgICAgICAgICAgICAgICAg
ICAgIHwgICAgICAgICAgICAgIHwgIFtieXRlY29kZV0gIHwKKy8vICAgb2Zmc2V0cyAgICAgICAg
ICAgIEEgICAgICAgICAgICAgIEIgICAgICAgICAgICAgIEMKKy8vCisvLyAgQW5kIHN0aWxsIHlv
dSBjYW4gaW5zZXJ0IGZyYWdtZW50cyBiZWZvcmUgYW5kIGFmdGVyICJBIi4KKy8vCisvLyAgICAg
ICAgICAgICAgICAgICAgICB8ICBbZnJhZ21lbnRdICB8ICBbYnl0ZWNvZGVdICB8CisvLyAgIG9m
ZnNldHMgICAgICAgICAgICBBICAgICAgICAgICAgICBCICAgICAgICAgICAgICBDCisvLworLy8g
ICBXZSBjYW4gaW5zZXJ0IGJ5dGVjb2RlIGZyYWdtZW50cyAiQmVmb3JlIiBhbmQgIkFmdGVyIiB0
aGUgbGFiZWxzLiBUaGlzIGluc2VydGVkIHBvc2l0aW9uLCBlaXRoZXIgIkJlZm9yZSIgYW5kICJB
ZnRlciIsCisvLyAgIGhhcyBlZmZlY3Qgd2hlbiB0aGUgbGFiZWwgaXMgaW52b2x2ZWQgd2l0aCBq
dW1wcy4gRm9yIGV4YW1wbGUsIHdoZW4geW91IGhhdmUganVtcCB0byB0aGUgcG9zaXRpb24gIkIi
LAorLy8KKy8vICAgICAgICAgICAgICAgICAgICAgIHwgIFtieXRlY29kZV0gIHwgIFtieXRlY29k
ZV0gIHwKKy8vICAgb2Zmc2V0cyAgICAgICAgICAgIEEgICAgICAgICAgICAgIEIgICAgICAgICAg
ICAgIEMKKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KKy8vICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGp1bXAgdG8gaGVyZS4KKy8vCisvLyAgYW5k
IHlvdSBpbnNlcnQgdGhlIGJ5dGVjb2RlIGJlZm9yZS9hZnRlciAiQiIsCisvLworLy8gICAgICAg
ICAgICAgICAgICAgICAgfCAgW2J5dGVjb2RlXSBbYmVmb3JlXSAgfCAgW2FmdGVyXSBbYnl0ZWNv
ZGVdICB8CisvLyAgIG9mZnNldHMgICAgICAgICAgICBBICAgICAgICAgICAgICAgICAgICAgICBC
ICAgICAgICAgICAgICBDCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBeCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBqdW1wIHRvIGhlcmUuCisvLworLy8gIGFzIHlvdSBjYW4gc2VlLCB0aGUgZXhlY3V0aW9uIGp1
bXBpbmcgaW50byAiQiIgZG9lcyBub3QgZXhlY3V0ZSBbYmVmb3JlXSBjb2RlLgorY2xhc3MgQnl0
ZWNvZGVSZXdyaXRlciB7CitXVEZfTUFLRV9OT05DT1BZQUJMRShCeXRlY29kZVJld3JpdGVyKTsK
K3B1YmxpYzoKKyAgICBlbnVtIGNsYXNzIFBvc2l0aW9uIDogaW50OF90IHsKKyAgICAgICAgQmVm
b3JlID0gLTEsCisgICAgICAgIExhYmVsUG9pbnQgPSAwLAorICAgICAgICBBZnRlciA9IDEsCisg
ICAgICAgIE9yaWdpbmFsQnl0ZWNvZGVQb2ludCA9IDIsCisgICAgfTsKKworcHJpdmF0ZToKKyAg
ICBzdHJ1Y3QgQ29tbWFuZCB7CisgICAgICAgIGVudW0gY2xhc3MgVHlwZSA6IHVpbnQ4X3QgeyBJ
bnNlcnQgPSAwLCBSZW1vdmUgPSAxLCB9OworICAgICAgICBlbnVtIGNsYXNzIEJ5dGVjb2RlVHlw
ZSA6IHVpbnQ4X3QgeyBOb3JtYWwsIEJyYW5jaCB9OworCisgICAgICAgIHNpemVfdCBsZW5ndGgo
KSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICBpZiAodHlwZSA9PSBUeXBlOjpSZW1vdmUp
CisgICAgICAgICAgICAgICAgcmV0dXJuIHJlbW92ZUxlbmd0aDsKKyAgICAgICAgICAgIHJldHVy
biBpbnN0cnVjdGlvbnMuc2l6ZSgpOworICAgICAgICB9CisKKyAgICAgICAgVHlwZSB0eXBlOwor
ICAgICAgICBQb3NpdGlvbiBwb3NpdGlvbjsKKyAgICAgICAgQnl0ZWNvZGVUeXBlIGJ5dGVjb2Rl
VHlwZTsKKyAgICAgICAgdW5zaWduZWQganVtcEVudHJ5SW5kZXg7CisgICAgICAgIHNpemVfdCBy
ZW1vdmVMZW5ndGg7CisgICAgICAgIFZlY3RvcjxVbmxpbmtlZEluc3RydWN0aW9uPiBpbnN0cnVj
dGlvbnM7CisgICAgfTsKKworICAgIHR5cGVkZWYgV1RGOjpJbnNlcnRpb248Q29tbWFuZD4gSW5z
ZXJ0aW9uOworCisgICAgc3RydWN0IFN3aXRjaEVudHJ5IHsKKyAgICAgICAgc2l6ZV90IHRhYmxl
SW5kZXg7CisgICAgICAgIHVuc2lnbmVkIGRlZmF1bHRPZmZzZXQ7CisgICAgfTsKKworcHVibGlj
OgorICAgIGNsYXNzIEZyYWdtZW50IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShGcmFnbWVu
dCk7CisgICAgcHVibGljOgorICAgICAgICBGcmFnbWVudChWZWN0b3I8VW5saW5rZWRJbnN0cnVj
dGlvbj4mIGZyYWdtZW50KQorICAgICAgICAgICAgOiBtX2ZyYWdtZW50KGZyYWdtZW50KQorICAg
ICAgICB7CisgICAgICAgIH0KKworICAgICAgICB0ZW1wbGF0ZTxjbGFzcy4uLiBBcmdzPgorICAg
ICAgICB2b2lkIGFwcGVuZChBcmdzLi4uIGFyZ3MpCisgICAgICAgIHsKKyAgICAgICAgICAgIFVu
bGlua2VkSW5zdHJ1Y3Rpb24gaW5zdHJ1Y3Rpb25zW3NpemVvZi4uLihhcmdzKV0gPSB7CisgICAg
ICAgICAgICAgICAgVW5saW5rZWRJbnN0cnVjdGlvbihhcmdzKS4uLgorICAgICAgICAgICAgfTsK
KyAgICAgICAgICAgIG1fZnJhZ21lbnQuYXBwZW5kKGluc3RydWN0aW9ucywgc2l6ZW9mLi4uKGFy
Z3MpKTsKKyAgICAgICAgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgVmVjdG9yPFVubGlua2Vk
SW5zdHJ1Y3Rpb24+JiBtX2ZyYWdtZW50OworICAgIH07CisKKyAgICBCeXRlY29kZVJld3JpdGVy
KEJ5dGVjb2RlR3JhcGg8VW5saW5rZWRDb2RlQmxvY2s+JiBncmFwaCkKKyAgICAgICAgOiBtX2dy
YXBoKGdyYXBoKQorICAgIHsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTxjbGFzcy4uLiBBcmdzPgor
ICAgIHZvaWQgaW5zZXJ0QmVmb3JlKHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBPcGNvZGVJRCBv
cGNvZGVJRCwgQXJncy4uLiBhcmdzKQorICAgIHsKKyAgICAgICAgVmVjdG9yPFVubGlua2VkSW5z
dHJ1Y3Rpb24+IGZyYWdtZW50ID0geworICAgICAgICAgICAgVW5saW5rZWRJbnN0cnVjdGlvbihv
cGNvZGVJRCksCisgICAgICAgICAgICBVbmxpbmtlZEluc3RydWN0aW9uKGFyZ3MpLi4uCisgICAg
ICAgIH07CisgICAgICAgIGluc2VydEltcGwoMCwgQ29tbWFuZDo6Qnl0ZWNvZGVUeXBlOjpOb3Jt
YWwsIFBvc2l0aW9uOjpCZWZvcmUsIGJ5dGVjb2RlT2Zmc2V0LCBXVEZNb3ZlKGZyYWdtZW50KSk7
CisgICAgfQorCisgICAgdGVtcGxhdGU8Y2xhc3MuLi4gQXJncz4KKyAgICB2b2lkIGluc2VydEFm
dGVyKHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBPcGNvZGVJRCBvcGNvZGVJRCwgQXJncy4uLiBh
cmdzKQorICAgIHsKKyAgICAgICAgVmVjdG9yPFVubGlua2VkSW5zdHJ1Y3Rpb24+IGZyYWdtZW50
ID0geworICAgICAgICAgICAgVW5saW5rZWRJbnN0cnVjdGlvbihvcGNvZGVJRCksCisgICAgICAg
ICAgICBVbmxpbmtlZEluc3RydWN0aW9uKGFyZ3MpLi4uCisgICAgICAgIH07CisgICAgICAgIGlu
c2VydEltcGwoMCwgQ29tbWFuZDo6Qnl0ZWNvZGVUeXBlOjpOb3JtYWwsIFBvc2l0aW9uOjpBZnRl
ciwgYnl0ZWNvZGVPZmZzZXQsIFdURk1vdmUoZnJhZ21lbnQpKTsKKyAgICB9CisKKyAgICB0ZW1w
bGF0ZTxjbGFzcyBGdW5jdGlvbj4KKyAgICB2b2lkIGluc2VydEZyYWdtZW50QmVmb3JlKHVuc2ln
bmVkIGJ5dGVjb2RlT2Zmc2V0LCBGdW5jdGlvbiBmdW5jdGlvbikKKyAgICB7CisgICAgICAgIFZl
Y3RvcjxVbmxpbmtlZEluc3RydWN0aW9uPiBpbnN0cnVjdGlvbnM7CisgICAgICAgIEZyYWdtZW50
IGZyYWdtZW50KGluc3RydWN0aW9ucyk7CisgICAgICAgIGZ1bmN0aW9uKGZyYWdtZW50KTsKKyAg
ICAgICAgaW5zZXJ0SW1wbCgwLCBDb21tYW5kOjpCeXRlY29kZVR5cGU6Ok5vcm1hbCwgUG9zaXRp
b246OkJlZm9yZSwgYnl0ZWNvZGVPZmZzZXQsIFdURk1vdmUoaW5zdHJ1Y3Rpb25zKSk7CisgICAg
fQorCisgICAgdGVtcGxhdGU8Y2xhc3MgRnVuY3Rpb24+CisgICAgdm9pZCBpbnNlcnRGcmFnbWVu
dEFmdGVyKHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBGdW5jdGlvbiBmdW5jdGlvbikKKyAgICB7
CisgICAgICAgIFZlY3RvcjxVbmxpbmtlZEluc3RydWN0aW9uPiBpbnN0cnVjdGlvbnM7CisgICAg
ICAgIEZyYWdtZW50IGZyYWdtZW50KGluc3RydWN0aW9ucyk7CisgICAgICAgIGZ1bmN0aW9uKGZy
YWdtZW50KTsKKyAgICAgICAgaW5zZXJ0SW1wbCgwLCBDb21tYW5kOjpCeXRlY29kZVR5cGU6Ok5v
cm1hbCwgUG9zaXRpb246OkFmdGVyLCBieXRlY29kZU9mZnNldCwgV1RGTW92ZShpbnN0cnVjdGlv
bnMpKTsKKyAgICB9CisKKyAgICBVbmxpbmtlZFNpbXBsZUp1bXBUYWJsZSYgaW5zZXJ0U3dpdGNo
SW1tZWRpYXRlQmVmb3JlKHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCB1bnNpZ25lZCBkZWZhdWx0
T2Zmc2V0LCBpbnQgcmVnKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGluc2VydFN3aXRjaEltbWVk
aWF0ZUltcGwoUG9zaXRpb246OkJlZm9yZSwgYnl0ZWNvZGVPZmZzZXQsIGRlZmF1bHRPZmZzZXQs
IHJlZyk7CisgICAgfQorCisgICAgdm9pZCByZW1vdmVCeXRlY29kZSh1bnNpZ25lZCBieXRlY29k
ZU9mZnNldCkKKyAgICB7CisgICAgICAgIG1faW5zZXJ0aW9ucy5hcHBlbmQoSW5zZXJ0aW9uKGJ5
dGVjb2RlT2Zmc2V0LCBDb21tYW5kIHsgQ29tbWFuZDo6VHlwZTo6UmVtb3ZlLCBQb3NpdGlvbjo6
T3JpZ2luYWxCeXRlY29kZVBvaW50LCBDb21tYW5kOjpCeXRlY29kZVR5cGU6Ok5vcm1hbCwgMCwg
b3Bjb2RlTGVuZ3RoKG1fZ3JhcGguaW5zdHJ1Y3Rpb25zKClbYnl0ZWNvZGVPZmZzZXRdLnUub3Bj
b2RlKSwgeyB9IH0pKTsKKyAgICB9CisKKyAgICB2b2lkIGV4ZWN1dGUoKTsKKworICAgIEJ5dGVj
b2RlR3JhcGg8VW5saW5rZWRDb2RlQmxvY2s+JiBncmFwaCgpIHsgcmV0dXJuIG1fZ3JhcGg7IH0K
KworICAgIGludCBhZGp1c3RPZmZzZXQoaW50IGJ5dGVjb2RlT2Zmc2V0LCBpbnQganVtcFRhcmdl
dCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZGp1c3RPZmZzZXRXaXRoSW5zZXJ0aW9ucyhieXRl
Y29kZU9mZnNldCwganVtcFRhcmdldCwgbV9pbnNlcnRpb25zLmJlZ2luKCksIG1faW5zZXJ0aW9u
cy5lbmQoKSk7CisgICAgfQorCitwcml2YXRlOgorICAgIHZvaWQgaW5zZXJ0SW1wbCh1bnNpZ25l
ZCBqdW1wRW50cnlJbmRleCwgQ29tbWFuZDo6Qnl0ZWNvZGVUeXBlLCBQb3NpdGlvbiwgdW5zaWdu
ZWQgYnl0ZWNvZGVPZmZzZXQsIFZlY3RvcjxVbmxpbmtlZEluc3RydWN0aW9uPiYmIGZyYWdtZW50
KTsKKyAgICBVbmxpbmtlZFNpbXBsZUp1bXBUYWJsZSYgaW5zZXJ0U3dpdGNoSW1tZWRpYXRlSW1w
bChQb3NpdGlvbiwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIHVuc2lnbmVkIGRlZmF1bHRPZmZz
ZXQsIGludCByZWcpOworCisgICAgZnJpZW5kIGNsYXNzIFVubGlua2VkQ29kZUJsb2NrOworICAg
IHZvaWQgYXBwbHlNb2RpZmljYXRpb24oKTsKKyAgICB2b2lkIGFkanVzdEp1bXBUYXJnZXRzSW5K
dW1wT3BlcmF0aW9uKHVuc2lnbmVkIGZpbmFsT2Zmc2V0LCBJbnNlcnRpb24mKTsKKworICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEl0ZXJhdG9yPgorICAgIGludCBhZGp1c3RPZmZzZXRXaXRoSW5zZXJ0
aW9ucyhpbnQgYnl0ZWNvZGVPZmZzZXQsIGludCBqdW1wVGFyZ2V0LCBJdGVyYXRvciBpbnNlcnRp
b25zQmVnaW4sIEl0ZXJhdG9yIGluc2VydGlvbnNFbmQpOworCisgICAgQnl0ZWNvZGVHcmFwaDxV
bmxpbmtlZENvZGVCbG9jaz4mIG1fZ3JhcGg7CisgICAgVmVjdG9yPEluc2VydGlvbiwgOD4gbV9p
bnNlcnRpb25zOworICAgIFZlY3RvcjxTd2l0Y2hFbnRyeT4gbV9pbnNlcnRlZFN3aXRjaGVzOwor
fTsKKwordGVtcGxhdGU8dHlwZW5hbWUgSXRlcmF0b3I+CitpbmxpbmUgaW50IEJ5dGVjb2RlUmV3
cml0ZXI6OmFkanVzdE9mZnNldFdpdGhJbnNlcnRpb25zKGludCBieXRlY29kZU9mZnNldCwgaW50
IGp1bXBUYXJnZXQsIEl0ZXJhdG9yIGluc2VydGlvbnNCZWdpbiwgSXRlcmF0b3IgaW5zZXJ0aW9u
c0VuZCkKK3sKKyAgICBpZiAoYnl0ZWNvZGVPZmZzZXQgPCBqdW1wVGFyZ2V0KSB7CisgICAgICAg
IGF1dG8gc3RhcnQgPSBzdGQ6Omxvd2VyX2JvdW5kKGluc2VydGlvbnNCZWdpbiwgaW5zZXJ0aW9u
c0VuZCwgYnl0ZWNvZGVPZmZzZXQsIFsmXSAoY29uc3QgSW5zZXJ0aW9uJiBpbnNlcnRpb24sIGlu
dCBieXRlY29kZU9mZnNldCkgeworICAgICAgICAgICAgaWYgKHN0YXRpY19jYXN0PGludD4oaW5z
ZXJ0aW9uLmluZGV4KCkpID09IGJ5dGVjb2RlT2Zmc2V0KQorICAgICAgICAgICAgICAgIHJldHVy
biBpbnNlcnRpb24uZWxlbWVudCgpLnBvc2l0aW9uIDwgUG9zaXRpb246OkxhYmVsUG9pbnQ7Cisg
ICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihpbnNlcnRpb24uaW5kZXgoKSkgPCBi
eXRlY29kZU9mZnNldDsKKyAgICAgICAgfSk7CisgICAgICAgIGlmIChzdGFydCAhPSBpbnNlcnRp
b25zRW5kKSB7CisgICAgICAgICAgICBhdXRvIGVuZCA9IHN0ZDo6bG93ZXJfYm91bmQoaW5zZXJ0
aW9uc0JlZ2luLCBpbnNlcnRpb25zRW5kLCBqdW1wVGFyZ2V0LCBbJl0gKGNvbnN0IEluc2VydGlv
biYgaW5zZXJ0aW9uLCBpbnQganVtcFRhcmdldCkgeworICAgICAgICAgICAgICAgIGlmIChzdGF0
aWNfY2FzdDxpbnQ+KGluc2VydGlvbi5pbmRleCgpKSA9PSBqdW1wVGFyZ2V0KQorICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gaW5zZXJ0aW9uLmVsZW1lbnQoKS5wb3NpdGlvbiA8IFBvc2l0aW9u
OjpMYWJlbFBvaW50OworICAgICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KGlu
c2VydGlvbi5pbmRleCgpKSA8IGp1bXBUYXJnZXQ7CisgICAgICAgICAgICB9KTsKKyAgICAgICAg
ICAgIGZvciAoOyBzdGFydCAhPSBlbmQ7ICsrc3RhcnQpIHsKKyAgICAgICAgICAgICAgICBpZiAo
c3RhcnQtPmVsZW1lbnQoKS50eXBlID09IENvbW1hbmQ6OlR5cGU6OlJlbW92ZSkKKyAgICAgICAg
ICAgICAgICAgICAganVtcFRhcmdldCAtPSBzdGFydC0+ZWxlbWVudCgpLmxlbmd0aCgpOworICAg
ICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAganVtcFRhcmdldCArPSBzdGFy
dC0+ZWxlbWVudCgpLmxlbmd0aCgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAg
IHJldHVybiBqdW1wVGFyZ2V0IC0gYnl0ZWNvZGVPZmZzZXQ7CisgICAgfQorCisgICAgaWYgKGJ5
dGVjb2RlT2Zmc2V0ID09IGp1bXBUYXJnZXQpCisgICAgICAgIHJldHVybiAwOworCisgICAgcmV0
dXJuIC1hZGp1c3RPZmZzZXRXaXRoSW5zZXJ0aW9ucyhqdW1wVGFyZ2V0LCBieXRlY29kZU9mZnNl
dCwgaW5zZXJ0aW9uc0JlZ2luLCBpbnNlcnRpb25zRW5kKTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
SlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVV
c2VEZWYuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5o
CmluZGV4IDYwNTdlZjYwOWVlZDFlZTJhOTliMDc2MjhiOTFjOTc1NTMzZmU0YmIuLjRmMTRiMjMw
OTA0YzFkNmY2ZDczYmY2ODBkYzAzMjRhZWZjNmY2YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCkBAIC0zMCwxNSArMzAsOSBAQAogCiBu
YW1lc3BhY2UgSlNDIHsKIAotdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KLXZvaWQgY29tcHV0
ZVVzZXNGb3JCeXRlY29kZU9mZnNldCgKLSAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNv
ZGVCYXNpY0Jsb2NrKiBibG9jaywgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIGNvbnN0IEZ1bmN0
b3ImIGZ1bmN0b3IpCit0ZW1wbGF0ZTx0eXBlbmFtZSBCbG9jaywgdHlwZW5hbWUgRnVuY3Rvciwg
dHlwZW5hbWUgSW5zdHJ1Y3Rpb24+Cit2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQo
QmxvY2sqIGNvZGVCbG9jaywgT3Bjb2RlSUQgb3Bjb2RlSUQsIEluc3RydWN0aW9uKiBpbnN0cnVj
dGlvbiwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikKIHsKLSAgICBJbnRlcnByZXRlciogaW50ZXJw
cmV0ZXIgPSBjb2RlQmxvY2stPnZtKCktPmludGVycHJldGVyOwotICAgIEluc3RydWN0aW9uKiBp
bnN0cnVjdGlvbnNCZWdpbiA9IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsKLSAg
ICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSAmaW5zdHJ1Y3Rpb25zQmVnaW5bYnl0ZWNvZGVP
ZmZzZXRdOwotICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0ZXItPmdldE9wY29kZUlE
KGluc3RydWN0aW9uLT51Lm9wY29kZSk7Ci0KICAgICBpZiAob3Bjb2RlSUQgIT0gb3BfZW50ZXIg
JiYgY29kZUJsb2NrLT53YXNDb21waWxlZFdpdGhEZWJ1Z2dpbmdPcGNvZGVzKCkgJiYgY29kZUJs
b2NrLT5zY29wZVJlZ2lzdGVyKCkuaXNWYWxpZCgpKQogICAgICAgICBmdW5jdG9yKGNvZGVCbG9j
aywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBjb2RlQmxvY2stPnNjb3BlUmVnaXN0ZXIoKS5vZmZz
ZXQoKSk7CiAKQEAgLTc1LDggKzY5LDcgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zm
c2V0KAogICAgIGNhc2Ugb3Bfam5lcV9udWxsOgogICAgIGNhc2Ugb3BfZGVjOgogICAgIGNhc2Ug
b3BfaW5jOgotICAgIGNhc2Ugb3BfbG9nX3NoYWRvd19jaGlja2VuX3Byb2xvZ3VlOgotICAgIGNh
c2Ugb3BfcmVzdW1lOiB7CisgICAgY2FzZSBvcF9sb2dfc2hhZG93X2NoaWNrZW5fcHJvbG9ndWU6
IHsKICAgICAgICAgQVNTRVJUKG9wY29kZUxlbmd0aHNbb3Bjb2RlSURdID4gMSk7CiAgICAgICAg
IGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzFd
LnUub3BlcmFuZCk7CiAgICAgICAgIHJldHVybjsKQEAgLTI4NywyMCArMjgwLDkgQEAgdm9pZCBj
b21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAogICAgICAgICAgICAgZnVuY3Rvcihjb2RlQmxv
Y2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgY29kZUJsb2NrLT5zY29wZVJlZ2lzdGVyKCkub2Zm
c2V0KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGNhc2Ugb3Bfc2F2ZTogeworICAg
IGNhc2Ugb3BfeWllbGQ6IHsKICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9u
LCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKTsKLSAgICAgICAgdW5zaWduZWQg
bWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0ID0gYnl0ZWNvZGVPZmZzZXQgKyBpbnN0cnVjdGlvblsz
XS51Lm9wZXJhbmQ7Ci0gICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogbWVyZ2VQb2ludEJsb2Nr
ID0gbnVsbHB0cjsKLSAgICAgICAgZm9yIChCeXRlY29kZUJhc2ljQmxvY2sqIHN1Y2Nlc3NvciA6
IGJsb2NrLT5zdWNjZXNzb3JzKCkpIHsKLSAgICAgICAgICAgIGlmIChzdWNjZXNzb3ItPmxlYWRl
ckJ5dGVjb2RlT2Zmc2V0KCkgPT0gbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0KSB7Ci0gICAgICAg
ICAgICAgICAgbWVyZ2VQb2ludEJsb2NrID0gc3VjY2Vzc29yOwotICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIEFTU0VSVChtZXJnZVBvaW50
QmxvY2spOwotICAgICAgICBtZXJnZVBvaW50QmxvY2stPmluKCkuZm9yRWFjaFNldEJpdChbJl0o
dW5zaWduZWQgbG9jYWwpIHsKLSAgICAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVj
dGlvbiwgb3Bjb2RlSUQsIHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGxvY2FsKS5vZmZzZXQoKSk7
Ci0gICAgICAgIH0pOworICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9w
Y29kZUlELCBpbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogICAgIGRlZmF1bHQ6CkBAIC0zMDksMjAgKzI5MSwxNSBAQCB2b2lkIGNvbXB1dGVVc2VzRm9y
Qnl0ZWNvZGVPZmZzZXQoCiAgICAgfQogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgot
dm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBC
eXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgY29uc3Qg
RnVuY3RvciYgZnVuY3RvcikKK3RlbXBsYXRlPHR5cGVuYW1lIEJsb2NrLCB0eXBlbmFtZSBJbnN0
cnVjdGlvbiwgdHlwZW5hbWUgRnVuY3Rvcj4KK3ZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZU9m
ZnNldChCbG9jayogY29kZUJsb2NrLCBPcGNvZGVJRCBvcGNvZGVJRCwgSW5zdHJ1Y3Rpb24qIGlu
c3RydWN0aW9uLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQogewotICAgIEludGVycHJldGVyKiBp
bnRlcnByZXRlciA9IGNvZGVCbG9jay0+dm0oKS0+aW50ZXJwcmV0ZXI7Ci0gICAgSW5zdHJ1Y3Rp
b24qIGluc3RydWN0aW9uc0JlZ2luID0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigp
OwotICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9ICZpbnN0cnVjdGlvbnNCZWdpbltieXRl
Y29kZU9mZnNldF07Ci0gICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnRlcnByZXRlci0+Z2V0T3Bj
b2RlSUQoaW5zdHJ1Y3Rpb24tPnUub3Bjb2RlKTsKICAgICBzd2l0Y2ggKG9wY29kZUlEKSB7CiAg
ICAgLy8gVGhlc2UgZG9uJ3QgZGVmaW5lIGFueXRoaW5nLgogICAgIGNhc2Ugb3BfcHV0X3RvX3Nj
b3BlOgogICAgIGNhc2Ugb3BfZW5kOgogICAgIGNhc2Ugb3BfdGhyb3c6CiAgICAgY2FzZSBvcF90
aHJvd19zdGF0aWNfZXJyb3I6Ci0gICAgY2FzZSBvcF9zYXZlOgogICAgIGNhc2Ugb3BfYXNzZXJ0
OgogICAgIGNhc2Ugb3BfZGVidWc6CiAgICAgY2FzZSBvcF9yZXQ6CkBAIC0zNjIsNiArMzM5LDcg
QEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2Nr
LCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2MKICAgICBjYXNlIG9wX3dhdGNoZG9nOgogICAgIGNh
c2Ugb3BfbG9nX3NoYWRvd19jaGlja2VuX3Byb2xvZ3VlOgogICAgIGNhc2Ugb3BfbG9nX3NoYWRv
d19jaGlja2VuX3RhaWw6CisgICAgY2FzZSBvcF95aWVsZDoKICNkZWZpbmUgTExJTlRfSEVMUEVS
X09QQ09ERVMob3Bjb2RlLCBsZW5ndGgpIGNhc2Ugb3Bjb2RlOgogICAgICAgICBGT1JfRUFDSF9M
TElOVF9PUENPREVfRVhURU5TSU9OKExMSU5UX0hFTFBFUl9PUENPREVTKTsKICN1bmRlZiBMTElO
VF9IRUxQRVJfT1BDT0RFUwpAQCAtNDgwLDE1ICs0NTgsNiBAQCB2b2lkIGNvbXB1dGVEZWZzRm9y
Qnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFzaWNCbG9jayog
YmxvYwogICAgICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJ
RCwgdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaSkub2Zmc2V0KCkpOwogICAgICAgICByZXR1cm47
CiAgICAgfQotICAgIGNhc2Ugb3BfcmVzdW1lOiB7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKGJs
b2NrLT5zdWNjZXNzb3JzKCkuc2l6ZSgpID09IDEpOwotICAgICAgICAvLyBGSVhNRTogVGhpcyBp
cyByZWFsbHkgZGlydHkuCi0gICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNTkyODEKLSAgICAgICAgYmxvY2stPnN1Y2Nlc3NvcnMoKVswXS0+aW4oKS5m
b3JFYWNoU2V0Qml0KFsmXSh1bnNpZ25lZCBsb2NhbCkgewotICAgICAgICAgICAgZnVuY3Rvcihj
b2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwo
bG9jYWwpLm9mZnNldCgpKTsKLSAgICAgICAgfSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CiAg
ICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3Bw
CmluZGV4IDFkOTEzNWEyMzczOTE2MzA5MThmZDU1YTZlNTQyNTg5NzE1Y2QwYjUuLjU4NmNjZjUy
OGQ0YmZhZDJhYjkwYjllYWU2NjQ2YjFlYTJkMTQxMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAi
QXJpdGhQcm9maWxlLmgiCiAjaW5jbHVkZSAiQmFzaWNCbG9ja0xvY2F0aW9uLmgiCiAjaW5jbHVk
ZSAiQnl0ZWNvZGVHZW5lcmF0b3IuaCIKKyNpbmNsdWRlICJCeXRlY29kZUxpdmVuZXNzQW5hbHlz
aXMuaCIKICNpbmNsdWRlICJCeXRlY29kZVVzZURlZi5oIgogI2luY2x1ZGUgIkNhbGxMaW5rU3Rh
dHVzLmgiCiAjaW5jbHVkZSAiREZHQ2FwYWJpbGl0aWVzLmgiCkBAIC02OTYsMTggKzY5Nyw2IEBA
IHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoUHJpbnRTdHJlYW0mIG91dCkKICAgICAgICAg
fSB3aGlsZSAoaSA8IG1fcmFyZURhdGEtPm1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlcy5zaXplKCkp
OwogICAgIH0KIAotICAgIGlmIChtX3JhcmVEYXRhICYmICFtX3JhcmVEYXRhLT5tX2xpdmVDYWxs
ZWVMb2NhbHNBdFlpZWxkLmlzRW1wdHkoKSkgewotICAgICAgICBvdXQucHJpbnRmKCJcbkxpdmUg
Q2FsbGVlIExvY2FsczpcbiIpOwotICAgICAgICB1bnNpZ25lZCBpID0gMDsKLSAgICAgICAgZG8g
ewotICAgICAgICAgICAgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZW5lc3MgPSBtX3JhcmVEYXRh
LT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkW2ldOwotICAgICAgICAgICAgb3V0LnByaW50Zigi
ICBsaXZlJTF1ID0gIiwgaSk7Ci0gICAgICAgICAgICBsaXZlbmVzcy5kdW1wKG91dCk7Ci0gICAg
ICAgICAgICBvdXQucHJpbnRmKCJcbiIpOwotICAgICAgICAgICAgKytpOwotICAgICAgICB9IHdo
aWxlIChpIDwgbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZC5zaXplKCkpOwot
ICAgIH0KLQogICAgIG91dC5wcmludGYoIlxuIik7CiB9CiAKQEAgLTE2NzEsMzEgKzE2NjAsNiBA
QCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKAogICAgICAgICAgICAgb3V0LnByaW50Zigi
JXMsICVkIiwgZGVidWdIb29rTmFtZShkZWJ1Z0hvb2tJRCksIGhhc0JyZWFrcG9pbnRGbGFnKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIGNhc2Ugb3Bfc2F2ZTogewot
ICAgICAgICAgICAgaW50IGdlbmVyYXRvciA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAg
ICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gKCsraXQpLT51LnVuc2lnbmVkVmFs
dWU7Ci0gICAgICAgICAgICBpbnQgb2Zmc2V0ID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAg
ICAgICBGYXN0Qml0VmVjdG9yIGxpdmVuZXNzOwotICAgICAgICAgICAgaWYgKGxpdmVDYWxsZWVM
b2NhbHNJbmRleCA8IG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQuc2l6ZSgp
KQotICAgICAgICAgICAgICAgIGxpdmVuZXNzID0gbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9j
YWxzQXRZaWVsZFtsaXZlQ2FsbGVlTG9jYWxzSW5kZXhdOwotICAgICAgICAgICAgcHJpbnRMb2Nh
dGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAic2F2ZSIpOwotICAgICAgICAgICAg
b3V0LnByaW50ZigiJXMsICIsIHJlZ2lzdGVyTmFtZShnZW5lcmF0b3IpLmRhdGEoKSk7Ci0gICAg
ICAgICAgICBsaXZlbmVzcy5kdW1wKG91dCk7Ci0gICAgICAgICAgICBvdXQucHJpbnRmKCIoQGxp
dmUlMXUpLCAlZCgtPiVkKSIsIGxpdmVDYWxsZWVMb2NhbHNJbmRleCwgb2Zmc2V0LCBsb2NhdGlv
biArIG9mZnNldCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNl
IG9wX3Jlc3VtZTogewotICAgICAgICAgICAgaW50IGdlbmVyYXRvciA9ICgrK2l0KS0+dS5vcGVy
YW5kOwotICAgICAgICAgICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gKCsraXQp
LT51LnVuc2lnbmVkVmFsdWU7Ci0gICAgICAgICAgICBGYXN0Qml0VmVjdG9yIGxpdmVuZXNzOwot
ICAgICAgICAgICAgaWYgKGxpdmVDYWxsZWVMb2NhbHNJbmRleCA8IG1fcmFyZURhdGEtPm1fbGl2
ZUNhbGxlZUxvY2Fsc0F0WWllbGQuc2l6ZSgpKQotICAgICAgICAgICAgICAgIGxpdmVuZXNzID0g
bV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZFtsaXZlQ2FsbGVlTG9jYWxzSW5k
ZXhdOwotICAgICAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24s
IGl0LCAicmVzdW1lIik7Ci0gICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgIiwgcmVnaXN0ZXJO
YW1lKGdlbmVyYXRvcikuZGF0YSgpKTsKLSAgICAgICAgICAgIGxpdmVuZXNzLmR1bXAob3V0KTsK
LSAgICAgICAgICAgIG91dC5wcmludGYoIihAbGl2ZSUxdSkiLCBsaXZlQ2FsbGVlTG9jYWxzSW5k
ZXgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9hc3Nl
cnQ6IHsKICAgICAgICAgICAgIGludCBjb25kaXRpb24gPSAoKytpdCktPnUub3BlcmFuZDsKICAg
ICAgICAgICAgIGludCBsaW5lID0gKCsraXQpLT51Lm9wZXJhbmQ7CkBAIC0xOTA3LDcgKzE4NzEs
NiBAQCB2b2lkIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBDb3B5UGFyc2VkQmxv
Y2tUYWcsIENvZGVCbG9jayYgb3RoZXIpCiAgICAgICAgIG1fcmFyZURhdGEtPm1fY29uc3RhbnRC
dWZmZXJzID0gb3RoZXIubV9yYXJlRGF0YS0+bV9jb25zdGFudEJ1ZmZlcnM7CiAgICAgICAgIG1f
cmFyZURhdGEtPm1fc3dpdGNoSnVtcFRhYmxlcyA9IG90aGVyLm1fcmFyZURhdGEtPm1fc3dpdGNo
SnVtcFRhYmxlczsKICAgICAgICAgbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVz
ID0gb3RoZXIubV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzOwotICAgICAgICBt
X3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkID0gb3RoZXIubV9yYXJlRGF0YS0+
bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZDsKICAgICB9CiAgICAgCiAgICAgaGVhcCgpLT5tX2Nv
ZGVCbG9ja3MuYWRkKHRoaXMpOwpAQCAtMjAyOSw3ICsxOTkyLDcgQEAgdm9pZCBDb2RlQmxvY2s6
OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxl
LCBVbmxpbmsKICAgICAgICAgICAgICAgICBVbmxpbmtlZFN0cmluZ0p1bXBUYWJsZTo6U3RyaW5n
T2Zmc2V0VGFibGU6Oml0ZXJhdG9yIGVuZCA9IHVubGlua2VkQ29kZUJsb2NrLT5zdHJpbmdTd2l0
Y2hKdW1wVGFibGUoaSkub2Zmc2V0VGFibGUuZW5kKCk7CiAgICAgICAgICAgICAgICAgZm9yICg7
IHB0ciAhPSBlbmQ7ICsrcHRyKSB7CiAgICAgICAgICAgICAgICAgICAgIE9mZnNldExvY2F0aW9u
IG9mZnNldDsKLSAgICAgICAgICAgICAgICAgICAgb2Zmc2V0LmJyYW5jaE9mZnNldCA9IHB0ci0+
dmFsdWU7CisgICAgICAgICAgICAgICAgICAgIG9mZnNldC5icmFuY2hPZmZzZXQgPSBwdHItPnZh
bHVlLmJyYW5jaE9mZnNldDsKICAgICAgICAgICAgICAgICAgICAgbV9yYXJlRGF0YS0+bV9zdHJp
bmdTd2l0Y2hKdW1wVGFibGVzW2ldLm9mZnNldFRhYmxlLmFkZChwdHItPmtleSwgb2Zmc2V0KTsK
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CkBAIC0yMDY5LDExICsyMDMyLDE3IEBA
IHZvaWQgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUq
IG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAgLy8gQm9va2tlZXAgdGhlIHN0cm9uZ2x5IHJl
ZmVyZW5jZWQgbW9kdWxlIGVudmlyb25tZW50cy4KICAgICBIYXNoU2V0PEpTTW9kdWxlRW52aXJv
bm1lbnQqPiBzdHJvbmdseVJlZmVyZW5jZWRNb2R1bGVFbnZpcm9ubWVudHM7CiAKLSAgICAvLyBC
b29ra2VlcCB0aGUgbWVyZ2UgcG9pbnQgYnl0ZWNvZGUgb2Zmc2V0cy4KLSAgICBWZWN0b3I8c2l6
ZV90PiBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXRzOwotCiAgICAgUmVmQ291bnRlZEFycmF5PElu
c3RydWN0aW9uPiBpbnN0cnVjdGlvbnMoaW5zdHJ1Y3Rpb25Db3VudCk7CiAKKyAgICB1bnNpZ25l
ZCB2YWx1ZVByb2ZpbGVDb3VudCA9IDA7CisgICAgYXV0byBsaW5rVmFsdWVQcm9maWxlID0gWyZd
KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCB1bnNpZ25lZCBvcExlbmd0aCkgeworICAgICAgICB1
bnNpZ25lZCB2YWx1ZVByb2ZpbGVJbmRleCA9IHZhbHVlUHJvZmlsZUNvdW50Kys7CisgICAgICAg
IFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9ICZtX3ZhbHVlUHJvZmlsZXNbdmFsdWVQcm9maWxlSW5k
ZXhdOworICAgICAgICBBU1NFUlQocHJvZmlsZS0+bV9ieXRlY29kZU9mZnNldCA9PSAtMSk7Cisg
ICAgICAgIHByb2ZpbGUtPm1fYnl0ZWNvZGVPZmZzZXQgPSBieXRlY29kZU9mZnNldDsKKyAgICAg
ICAgaW5zdHJ1Y3Rpb25zW2J5dGVjb2RlT2Zmc2V0ICsgb3BMZW5ndGggLSAxXSA9IHByb2ZpbGU7
CisgICAgfTsKKwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7ICFpbnN0cnVjdGlvblJlYWRlci5h
dEVuZCgpOyApIHsKICAgICAgICAgY29uc3QgVW5saW5rZWRJbnN0cnVjdGlvbiogcGMgPSBpbnN0
cnVjdGlvblJlYWRlci5uZXh0KCk7CiAKQEAgLTIxMDgsMTAgKzIwNzcsNyBAQCB2b2lkIENvZGVC
bG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1
dGFibGUsIFVubGluawogICAgICAgICBjYXNlIG9wX2dldF9ieV9pZDoKICAgICAgICAgY2FzZSBv
cF9nZXRfZnJvbV9hcmd1bWVudHM6CiAgICAgICAgIGNhc2Ugb3BfdG9fbnVtYmVyOiB7Ci0gICAg
ICAgICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSAmbV92YWx1ZVByb2ZpbGVzW3BjW29wTGVu
Z3RoIC0gMV0udS5vcGVyYW5kXTsKLSAgICAgICAgICAgIEFTU0VSVChwcm9maWxlLT5tX2J5dGVj
b2RlT2Zmc2V0ID09IC0xKTsKLSAgICAgICAgICAgIHByb2ZpbGUtPm1fYnl0ZWNvZGVPZmZzZXQg
PSBpOwotICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zW2kgKyBvcExlbmd0aCAtIDFdID0gcHJvZmls
ZTsKKyAgICAgICAgICAgIGxpbmtWYWx1ZVByb2ZpbGUoaSwgb3BMZW5ndGgpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9wdXRfYnlfdmFsOiB7CkBAIC0y
MTQ4LDEwICsyMTE0LDcgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwg
U2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICAgICAgY2FzZSBv
cF9jYWxsOgogICAgICAgICBjYXNlIG9wX3RhaWxfY2FsbDoKICAgICAgICAgY2FzZSBvcF9jYWxs
X2V2YWw6IHsKLSAgICAgICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9ICZtX3ZhbHVlUHJv
ZmlsZXNbcGNbb3BMZW5ndGggLSAxXS51Lm9wZXJhbmRdOwotICAgICAgICAgICAgQVNTRVJUKHBy
b2ZpbGUtPm1fYnl0ZWNvZGVPZmZzZXQgPT0gLTEpOwotICAgICAgICAgICAgcHJvZmlsZS0+bV9i
eXRlY29kZU9mZnNldCA9IGk7Ci0gICAgICAgICAgICBpbnN0cnVjdGlvbnNbaSArIG9wTGVuZ3Ro
IC0gMV0gPSBwcm9maWxlOworICAgICAgICAgICAgbGlua1ZhbHVlUHJvZmlsZShpLCBvcExlbmd0
aCk7CiAgICAgICAgICAgICBpbnQgYXJyYXlQcm9maWxlSW5kZXggPSBwY1tvcExlbmd0aCAtIDJd
LnUub3BlcmFuZDsKICAgICAgICAgICAgIG1fYXJyYXlQcm9maWxlc1thcnJheVByb2ZpbGVJbmRl
eF0gPSBBcnJheVByb2ZpbGUoaSk7CiAgICAgICAgICAgICBpbnN0cnVjdGlvbnNbaSArIG9wTGVu
Z3RoIC0gMl0gPSAmbV9hcnJheVByb2ZpbGVzW2FycmF5UHJvZmlsZUluZGV4XTsKQEAgLTIxNjAs
MTAgKzIxMjMsNyBAQCB2b2lkIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3Jp
cHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGluawogICAgICAgICB9CiAgICAgICAg
IGNhc2Ugb3BfY29uc3RydWN0OiB7CiAgICAgICAgICAgICBpbnN0cnVjdGlvbnNbaSArIDVdID0g
Jm1fbGxpbnRDYWxsTGlua0luZm9zW3BjWzVdLnUub3BlcmFuZF07Ci0gICAgICAgICAgICBWYWx1
ZVByb2ZpbGUqIHByb2ZpbGUgPSAmbV92YWx1ZVByb2ZpbGVzW3BjW29wTGVuZ3RoIC0gMV0udS5v
cGVyYW5kXTsKLSAgICAgICAgICAgIEFTU0VSVChwcm9maWxlLT5tX2J5dGVjb2RlT2Zmc2V0ID09
IC0xKTsKLSAgICAgICAgICAgIHByb2ZpbGUtPm1fYnl0ZWNvZGVPZmZzZXQgPSBpOwotICAgICAg
ICAgICAgaW5zdHJ1Y3Rpb25zW2kgKyBvcExlbmd0aCAtIDFdID0gcHJvZmlsZTsKKyAgICAgICAg
ICAgIGxpbmtWYWx1ZVByb2ZpbGUoaSwgb3BMZW5ndGgpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9nZXRfYXJyYXlfbGVuZ3RoOgpAQCAtMjE5NCwxMCAr
MjE1NCw3IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4
ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAgICAgIH0KIAogICAgICAgICBj
YXNlIG9wX2dldF9mcm9tX3Njb3BlOiB7Ci0gICAgICAgICAgICBWYWx1ZVByb2ZpbGUqIHByb2Zp
bGUgPSAmbV92YWx1ZVByb2ZpbGVzW3BjW29wTGVuZ3RoIC0gMV0udS5vcGVyYW5kXTsKLSAgICAg
ICAgICAgIEFTU0VSVChwcm9maWxlLT5tX2J5dGVjb2RlT2Zmc2V0ID09IC0xKTsKLSAgICAgICAg
ICAgIHByb2ZpbGUtPm1fYnl0ZWNvZGVPZmZzZXQgPSBpOwotICAgICAgICAgICAgaW5zdHJ1Y3Rp
b25zW2kgKyBvcExlbmd0aCAtIDFdID0gcHJvZmlsZTsKKyAgICAgICAgICAgIGxpbmtWYWx1ZVBy
b2ZpbGUoaSwgb3BMZW5ndGgpOwogCiAgICAgICAgICAgICAvLyBnZXRfZnJvbV9zY29wZSBkc3Qs
IHNjb3BlLCBpZCwgR2V0UHV0SW5mbywgU3RydWN0dXJlLCBPcGVyYW5kCiAKQEAgLTIzNTQsMTUg
KzIzMTEsNiBAQCB2b2lkIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRF
eGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGluawogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KIAotICAgICAgICBjYXNlIG9wX3NhdmU6IHsKLSAgICAgICAgICAgIHVuc2lnbmVk
IGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9IHBjWzJdLnUuaW5kZXg7Ci0gICAgICAgICAgICBpbnQg
b2Zmc2V0ID0gcGNbM10udS5vcGVyYW5kOwotICAgICAgICAgICAgaWYgKGxpdmVDYWxsZWVMb2Nh
bHNJbmRleCA+PSBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXRzLnNpemUoKSkKLSAgICAgICAgICAg
ICAgICBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXRzLnJlc2l6ZShsaXZlQ2FsbGVlTG9jYWxzSW5k
ZXggKyAxKTsKLSAgICAgICAgICAgIG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldHNbbGl2ZUNhbGxl
ZUxvY2Fsc0luZGV4XSA9IGkgKyBvZmZzZXQ7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
fQotCiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAt
MjM3NCwyMCArMjMyMiw2IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0s
IFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAKICAgICBtX2luc3Ry
dWN0aW9ucyA9IFdURk1vdmUoaW5zdHJ1Y3Rpb25zKTsKIAotICAgIC8vIFBlcmZvcm0gYnl0ZWNv
ZGUgbGl2ZW5lc3MgYW5hbHlzaXMgdG8gZGV0ZXJtaW5lIHdoaWNoIGxvY2FscyBhcmUgbGl2ZSBh
bmQgc2hvdWxkIGJlIHJlc3VtZWQgd2hlbiBleGVjdXRpbmcgb3BfcmVzdW1lLgotICAgIGlmICh1
bmxpbmtlZENvZGVCbG9jay0+cGFyc2VNb2RlKCkgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0
b3JCb2R5TW9kZSkgewotICAgICAgICBpZiAoc2l6ZV90IGNvdW50ID0gbWVyZ2VQb2ludEJ5dGVj
b2RlT2Zmc2V0cy5zaXplKCkpIHsKLSAgICAgICAgICAgIGNyZWF0ZVJhcmVEYXRhSWZOZWNlc3Nh
cnkoKTsKLSAgICAgICAgICAgIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcyBsaXZlbmVzcyh0aGlz
KTsKLSAgICAgICAgICAgIG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQuZ3Jv
dyhjb3VudCk7Ci0gICAgICAgICAgICBzaXplX3QgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gMDsK
LSAgICAgICAgICAgIGZvciAoc2l6ZV90IGJ5dGVjb2RlT2Zmc2V0IDogbWVyZ2VQb2ludEJ5dGVj
b2RlT2Zmc2V0cykgewotICAgICAgICAgICAgICAgIG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxv
Y2Fsc0F0WWllbGRbbGl2ZUNhbGxlZUxvY2Fsc0luZGV4XSA9IGxpdmVuZXNzLmdldExpdmVuZXNz
SW5mb0F0Qnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpOwotICAgICAgICAgICAgICAgICsr
bGl2ZUNhbGxlZUxvY2Fsc0luZGV4OwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQot
CiAgICAgLy8gU2V0IG9wdGltaXphdGlvbiB0aHJlc2hvbGRzIG9ubHkgYWZ0ZXIgbV9pbnN0cnVj
dGlvbnMgaXMgaW5pdGlhbGl6ZWQsIHNpbmNlIHRoZXNlCiAgICAgLy8gcmVseSBvbiB0aGUgaW5z
dHJ1Y3Rpb24gY291bnQgKGFuZCBhcmUgaW4gdGhlb3J5IHBlcm1pdHRlZCB0byBhbHNvIGluc3Bl
Y3QgdGhlCiAgICAgLy8gaW5zdHJ1Y3Rpb24gc3RyZWFtIHRvIG1vcmUgYWNjdXJhdGUgYXNzZXNz
IHRoZSBjb3N0IG9mIHRpZXItdXApLgpAQCAtMzI0NCwyMSArMzE3OCw3IEBAIEhhbmRsZXJJbmZv
KiBDb2RlQmxvY2s6OmhhbmRsZXJGb3JJbmRleCh1bnNpZ25lZCBpbmRleCwgUmVxdWlyZWRIYW5k
bGVyIHJlcXVpcmVkCiB7CiAgICAgaWYgKCFtX3JhcmVEYXRhKQogICAgICAgICByZXR1cm4gMDsK
LSAgICAKLSAgICBWZWN0b3I8SGFuZGxlckluZm8+JiBleGNlcHRpb25IYW5kbGVycyA9IG1fcmFy
ZURhdGEtPm1fZXhjZXB0aW9uSGFuZGxlcnM7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBl
eGNlcHRpb25IYW5kbGVycy5zaXplKCk7ICsraSkgewotICAgICAgICBIYW5kbGVySW5mbyYgaGFu
ZGxlciA9IGV4Y2VwdGlvbkhhbmRsZXJzW2ldOwotICAgICAgICBpZiAoKHJlcXVpcmVkSGFuZGxl
ciA9PSBSZXF1aXJlZEhhbmRsZXI6OkNhdGNoSGFuZGxlcikgJiYgIWhhbmRsZXIuaXNDYXRjaEhh
bmRsZXIoKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIC8vIEhhbmRsZXJzIGFy
ZSBvcmRlcmVkIGlubmVybW9zdCBmaXJzdCwgc28gdGhlIGZpcnN0IGhhbmRsZXIgd2UgZW5jb3Vu
dGVyCi0gICAgICAgIC8vIHRoYXQgY29udGFpbnMgdGhlIHNvdXJjZSBhZGRyZXNzIGlzIHRoZSBj
b3JyZWN0IGhhbmRsZXIgdG8gdXNlLgotICAgICAgICAvLyBUaGlzIGluZGV4IHVzZWQgaXMgZWl0
aGVyIHRoZSBCeXRlY29kZU9mZnNldCBvciBhIENhbGxTaXRlSW5kZXguCi0gICAgICAgIGlmICho
YW5kbGVyLnN0YXJ0IDw9IGluZGV4ICYmIGhhbmRsZXIuZW5kID4gaW5kZXgpCi0gICAgICAgICAg
ICByZXR1cm4gJmhhbmRsZXI7Ci0gICAgfQotCi0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIEhh
bmRsZXJJbmZvOjpoYW5kbGVyRm9ySW5kZXgobV9yYXJlRGF0YS0+bV9leGNlcHRpb25IYW5kbGVy
cywgaW5kZXgsIHJlcXVpcmVkSGFuZGxlcik7CiB9CiAKIENhbGxTaXRlSW5kZXggQ29kZUJsb2Nr
OjpuZXdFeGNlcHRpb25IYW5kbGluZ0NhbGxTaXRlSW5kZXgoQ2FsbFNpdGVJbmRleCBvcmlnaW5h
bENhbGxTaXRlKQpAQCAtMzM1Myw3ICszMjczLDYgQEAgdm9pZCBDb2RlQmxvY2s6OnNocmlua1Rv
Rml0KFNocmlua01vZGUgc2hyaW5rTW9kZSkKICAgICAgICAgaWYgKG1fcmFyZURhdGEpIHsKICAg
ICAgICAgICAgIG1fcmFyZURhdGEtPm1fc3dpdGNoSnVtcFRhYmxlcy5zaHJpbmtUb0ZpdCgpOwog
ICAgICAgICAgICAgbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzLnNocmlua1Rv
Rml0KCk7Ci0gICAgICAgICAgICBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxk
LnNocmlua1RvRml0KCk7CiAgICAgICAgIH0KICAgICB9IC8vIGVsc2UgZG9uJ3Qgc2hyaW5rIHRo
ZXNlLCBiZWNhdXNlIHdlIHdvdWxkIGhhdmUgYWxyZWFkeSBwb2ludGVkIHBvaW50ZXJzIGludG8g
dGhlc2UgdGFibGVzLgogfQpAQCAtNDMzNSwxNCArNDI1NCw5IEBAIFN0cmluZyBDb2RlQmxvY2s6
Om5hbWVGb3JSZWdpc3RlcihWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVyKQogCiBWYWx1
ZVByb2ZpbGUqIENvZGVCbG9jazo6dmFsdWVQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoaW50IGJ5
dGVjb2RlT2Zmc2V0KQogewotICAgIFZhbHVlUHJvZmlsZSogcmVzdWx0ID0gYmluYXJ5U2VhcmNo
PFZhbHVlUHJvZmlsZSwgaW50PigKLSAgICAgICAgbV92YWx1ZVByb2ZpbGVzLCBtX3ZhbHVlUHJv
ZmlsZXMuc2l6ZSgpLCBieXRlY29kZU9mZnNldCwKLSAgICAgICAgZ2V0VmFsdWVQcm9maWxlQnl0
ZWNvZGVPZmZzZXQ8VmFsdWVQcm9maWxlPik7Ci0gICAgQVNTRVJUKHJlc3VsdC0+bV9ieXRlY29k
ZU9mZnNldCAhPSAtMSk7Ci0gICAgQVNTRVJUKGluc3RydWN0aW9ucygpW2J5dGVjb2RlT2Zmc2V0
ICsgb3Bjb2RlTGVuZ3RoKAotICAgICAgICBtX3ZtLT5pbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQo
Ci0gICAgICAgICAgICBpbnN0cnVjdGlvbnMoKVtieXRlY29kZU9mZnNldF0udS5vcGNvZGUpKSAt
IDFdLnUucHJvZmlsZSA9PSByZXN1bHQpOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgT3Bjb2Rl
SUQgb3Bjb2RlSUQgPSBtX3ZtLT5pbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25z
KClbYnl0ZWNvZGVPZmZzZXRdLnUub3Bjb2RlKTsKKyAgICB1bnNpZ25lZCBsZW5ndGggPSBvcGNv
ZGVMZW5ndGgob3Bjb2RlSUQpOworICAgIHJldHVybiBpbnN0cnVjdGlvbnMoKVtieXRlY29kZU9m
ZnNldCArIGxlbmd0aCAtIDFdLnUucHJvZmlsZTsKIH0KIAogdm9pZCBDb2RlQmxvY2s6OnZhbGlk
YXRlKCkKQEAgLTQ2NzEsNCArNDU4NSwxNiBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcE1hdGhJQ1N0
YXRzKCkKICNlbmRpZgogfQogCitCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMmIENvZGVCbG9jazo6
bGl2ZW5lc3NBbmFseXNpc1Nsb3coKQoreworICAgIHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUxp
dmVuZXNzQW5hbHlzaXM+IGFuYWx5c2lzID0gc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZUxpdmVu
ZXNzQW5hbHlzaXM+KHRoaXMpOworICAgIHsKKyAgICAgICAgQ29uY3VycmVudEpJVExvY2tlciBs
b2NrZXIobV9sb2NrKTsKKyAgICAgICAgaWYgKCFtX2xpdmVuZXNzQW5hbHlzaXMpCisgICAgICAg
ICAgICBtX2xpdmVuZXNzQW5hbHlzaXMgPSBXVEZNb3ZlKGFuYWx5c2lzKTsKKyAgICAgICAgcmV0
dXJuICptX2xpdmVuZXNzQW5hbHlzaXM7CisgICAgfQorfQorCisKIH0gLy8gbmFtZXNwYWNlIEpT
QwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCmluZGV4IGFiOTI4
MDRmNmJhMzliM2I2N2JhNmQ3NzVlNDQ5ZTJmM2RiZjdjMDUuLjllNWQ2MDc4NzczZjM4Y2JiMjJk
YzZhNTBmYWZhN2NlYjBlMWZmYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmgKQEAgLTMzLDcgKzMzLDYgQEAKICNpbmNsdWRlICJBcnJheVByb2ZpbGUuaCIK
ICNpbmNsdWRlICJCeVZhbEluZm8uaCIKICNpbmNsdWRlICJCeXRlY29kZUNvbnZlbnRpb25zLmgi
Ci0jaW5jbHVkZSAiQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmgiCiAjaW5jbHVkZSAiQ2FsbExp
bmtJbmZvLmgiCiAjaW5jbHVkZSAiQ2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQuaCIK
ICNpbmNsdWRlICJDb2RlQmxvY2tIYXNoLmgiCkBAIC03OSw2ICs3OCw3IEBACiAKIG5hbWVzcGFj
ZSBKU0MgewogCitjbGFzcyBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM7CiBjbGFzcyBFeGVjU3Rh
dGU7CiBjbGFzcyBKSVRBZGRHZW5lcmF0b3I7CiBjbGFzcyBKU01vZHVsZUVudmlyb25tZW50OwpA
QCAtMjI2LDEwICsyMjYsNiBAQCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAg
ICAgICAgcmV0dXJuIGluZGV4ID49IG1fbnVtVmFyczsKICAgICB9CiAKLSAgICBlbnVtIGNsYXNz
IFJlcXVpcmVkSGFuZGxlciB7Ci0gICAgICAgIENhdGNoSGFuZGxlciwKLSAgICAgICAgQW55SGFu
ZGxlcgotICAgIH07CiAgICAgSGFuZGxlckluZm8qIGhhbmRsZXJGb3JCeXRlY29kZU9mZnNldCh1
bnNpZ25lZCBieXRlY29kZU9mZnNldCwgUmVxdWlyZWRIYW5kbGVyID0gUmVxdWlyZWRIYW5kbGVy
OjpBbnlIYW5kbGVyKTsKICAgICBIYW5kbGVySW5mbyogaGFuZGxlckZvckluZGV4KHVuc2lnbmVk
LCBSZXF1aXJlZEhhbmRsZXIgPSBSZXF1aXJlZEhhbmRsZXI6OkFueUhhbmRsZXIpOwogICAgIHZv
aWQgcmVtb3ZlRXhjZXB0aW9uSGFuZGxlckZvckNhbGxTaXRlKENhbGxTaXRlSW5kZXgpOwpAQCAt
MzA0LDYgKzMwMCw5IEBAIGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8SW5zdHJ1Y3Rpb24qPihyZXR1cm5BZGRyZXNzKSAtIGluc3Ry
dWN0aW9ucygpLmJlZ2luKCk7CiAgICAgfQogCisgICAgdHlwZWRlZiBKU0M6Okluc3RydWN0aW9u
IEluc3RydWN0aW9uOworICAgIHR5cGVkZWYgUmVmQ291bnRlZEFycmF5PEluc3RydWN0aW9uPiYg
VW5wYWNrZWRJbnN0cnVjdGlvbnM7CisKICAgICB1bnNpZ25lZCBudW1iZXJPZkluc3RydWN0aW9u
cygpIGNvbnN0IHsgcmV0dXJuIG1faW5zdHJ1Y3Rpb25zLnNpemUoKTsgfQogICAgIFJlZkNvdW50
ZWRBcnJheTxJbnN0cnVjdGlvbj4mIGluc3RydWN0aW9ucygpIHsgcmV0dXJuIG1faW5zdHJ1Y3Rp
b25zOyB9CiAgICAgY29uc3QgUmVmQ291bnRlZEFycmF5PEluc3RydWN0aW9uPiYgaW5zdHJ1Y3Rp
b25zKCkgY29uc3QgeyByZXR1cm4gbV9pbnN0cnVjdGlvbnM7IH0KQEAgLTU0Niw3ICs1NDUsNyBA
QCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICB9CiAKICAgICBXcml0ZUJh
cnJpZXI8VW5rbm93bj4mIGNvbnN0YW50UmVnaXN0ZXIoaW50IGluZGV4KSB7IHJldHVybiBtX2Nv
bnN0YW50UmVnaXN0ZXJzW2luZGV4IC0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXhdOyB9Ci0g
ICAgQUxXQVlTX0lOTElORSBib29sIGlzQ29uc3RhbnRSZWdpc3RlckluZGV4KGludCBpbmRleCkg
Y29uc3QgeyByZXR1cm4gaW5kZXggPj0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXg7IH0KKyAg
ICBzdGF0aWMgQUxXQVlTX0lOTElORSBib29sIGlzQ29uc3RhbnRSZWdpc3RlckluZGV4KGludCBp
bmRleCkgeyByZXR1cm4gaW5kZXggPj0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXg7IH0KICAg
ICBBTFdBWVNfSU5MSU5FIEpTVmFsdWUgZ2V0Q29uc3RhbnQoaW50IGluZGV4KSBjb25zdCB7IHJl
dHVybiBtX2NvbnN0YW50UmVnaXN0ZXJzW2luZGV4IC0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5k
ZXhdLmdldCgpOyB9CiAgICAgQUxXQVlTX0lOTElORSBTb3VyY2VDb2RlUmVwcmVzZW50YXRpb24g
Y29uc3RhbnRTb3VyY2VDb2RlUmVwcmVzZW50YXRpb24oaW50IGluZGV4KSBjb25zdCB7IHJldHVy
biBtX2NvbnN0YW50c1NvdXJjZUNvZGVSZXByZXNlbnRhdGlvbltpbmRleCAtIEZpcnN0Q29uc3Rh
bnRSZWdpc3RlckluZGV4XTsgfQogCkBAIC01OTIsMTQgKzU5MSw3IEBAIGNsYXNzIENvZGVCbG9j
ayA6IHB1YmxpYyBKU0NlbGwgewogICAgICAgICAgICAgaWYgKCEhbV9saXZlbmVzc0FuYWx5c2lz
KQogICAgICAgICAgICAgICAgIHJldHVybiAqbV9saXZlbmVzc0FuYWx5c2lzOwogICAgICAgICB9
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM+IGFuYWx5
c2lzID0KLSAgICAgICAgICAgIHN0ZDo6bWFrZV91bmlxdWU8Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5
c2lzPih0aGlzKTsKLSAgICAgICAgewotICAgICAgICAgICAgQ29uY3VycmVudEpJVExvY2tlciBs
b2NrZXIobV9sb2NrKTsKLSAgICAgICAgICAgIGlmICghbV9saXZlbmVzc0FuYWx5c2lzKQotICAg
ICAgICAgICAgICAgIG1fbGl2ZW5lc3NBbmFseXNpcyA9IFdURk1vdmUoYW5hbHlzaXMpOwotICAg
ICAgICAgICAgcmV0dXJuICptX2xpdmVuZXNzQW5hbHlzaXM7Ci0gICAgICAgIH0KKyAgICAgICAg
cmV0dXJuIGxpdmVuZXNzQW5hbHlzaXNTbG93KCk7CiAgICAgfQogICAgIAogICAgIHZvaWQgdmFs
aWRhdGUoKTsKQEAgLTYyMCwxOCArNjEyLDYgQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpT
Q2VsbCB7CiAgICAgU3RyaW5nSnVtcFRhYmxlJiBhZGRTdHJpbmdTd2l0Y2hKdW1wVGFibGUoKSB7
IGNyZWF0ZVJhcmVEYXRhSWZOZWNlc3NhcnkoKTsgbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hK
dW1wVGFibGVzLmFwcGVuZChTdHJpbmdKdW1wVGFibGUoKSk7IHJldHVybiBtX3JhcmVEYXRhLT5t
X3N0cmluZ1N3aXRjaEp1bXBUYWJsZXMubGFzdCgpOyB9CiAgICAgU3RyaW5nSnVtcFRhYmxlJiBz
dHJpbmdTd2l0Y2hKdW1wVGFibGUoaW50IHRhYmxlSW5kZXgpIHsgUkVMRUFTRV9BU1NFUlQobV9y
YXJlRGF0YSk7IHJldHVybiBtX3JhcmVEYXRhLT5tX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXNbdGFi
bGVJbmRleF07IH0KIAotICAgIC8vIExpdmUgY2FsbGVlIHJlZ2lzdGVycyBhdCB5aWVsZCBwb2lu
dHMuCi0gICAgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQodW5z
aWduZWQgaW5kZXgpIGNvbnN0Ci0gICAgewotICAgICAgICBSRUxFQVNFX0FTU0VSVChtX3JhcmVE
YXRhKTsKLSAgICAgICAgcmV0dXJuIG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWll
bGRbaW5kZXhdOwotICAgIH0KLSAgICBGYXN0Qml0VmVjdG9yJiBsaXZlQ2FsbGVlTG9jYWxzQXRZ
aWVsZCh1bnNpZ25lZCBpbmRleCkKLSAgICB7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fcmFy
ZURhdGEpOwotICAgICAgICByZXR1cm4gbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZ
aWVsZFtpbmRleF07Ci0gICAgfQotCiAgICAgRXZhbENvZGVDYWNoZSYgZXZhbENvZGVDYWNoZSgp
IHsgY3JlYXRlUmFyZURhdGFJZk5lY2Vzc2FyeSgpOyByZXR1cm4gbV9yYXJlRGF0YS0+bV9ldmFs
Q29kZUNhY2hlOyB9CiAKICAgICBlbnVtIFNocmlua01vZGUgewpAQCAtODg2LDggKzg2Niw2IEBA
IGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgICAgICBWZWN0b3I8U2ltcGxl
SnVtcFRhYmxlPiBtX3N3aXRjaEp1bXBUYWJsZXM7CiAgICAgICAgIFZlY3RvcjxTdHJpbmdKdW1w
VGFibGU+IG1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlczsKIAotICAgICAgICBWZWN0b3I8RmFzdEJp
dFZlY3Rvcj4gbV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZDsKLQogICAgICAgICBFdmFsQ29kZUNh
Y2hlIG1fZXZhbENvZGVDYWNoZTsKICAgICB9OwogCkBAIC05MjIsNiArOTAwLDggQEAgY2xhc3Mg
Q29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNz
IENvZGVCbG9ja1NldDsKKworICAgIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcyYgbGl2ZW5lc3NB
bmFseXNpc1Nsb3coKTsKICAgICAKICAgICBDb2RlQmxvY2sqIHNwZWNpYWxPU1JFbnRyeUJsb2Nr
T3JOdWxsKCk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvSGFuZGxlckluZm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9IYW5kbGVy
SW5mby5oCmluZGV4IGFjZGRhMDhlZDE0Y2JmOWYwOTcxMjc1MDQwNWE0MTc0MWY3NmEyMTMuLjdi
MTA4YWNlOTM3MjhhOGQ1ZGY4ZWIxNzNmYzBiMGE2MWJhZWQ2M2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9IYW5kbGVySW5mby5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9IYW5kbGVySW5mby5oCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVm
aW5lIEhhbmRsZXJJbmZvX2gKIAogI2luY2x1ZGUgIkNvZGVMb2NhdGlvbi5oIgorI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTM3LDYgKzM4LDExIEBAIGVu
dW0gY2xhc3MgSGFuZGxlclR5cGUgewogICAgIFN5bnRoZXNpemVkRmluYWxseSA9IDMKIH07CiAK
K2VudW0gY2xhc3MgUmVxdWlyZWRIYW5kbGVyIHsKKyAgICBDYXRjaEhhbmRsZXIsCisgICAgQW55
SGFuZGxlcgorfTsKKwogc3RydWN0IEhhbmRsZXJJbmZvQmFzZSB7CiAgICAgSGFuZGxlclR5cGUg
dHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEhhbmRsZXJUeXBlPih0eXBlQml0cyk7
IH0KICAgICB2b2lkIHNldFR5cGUoSGFuZGxlclR5cGUgdHlwZSkgeyB0eXBlQml0cyA9IHN0YXRp
Y19jYXN0PHVpbnQzMl90Pih0eXBlKTsgfQpAQCAtNTgsNiArNjQsMjMgQEAgc3RydWN0IEhhbmRs
ZXJJbmZvQmFzZSB7CiAKICAgICBib29sIGlzQ2F0Y2hIYW5kbGVyKCkgY29uc3QgeyByZXR1cm4g
dHlwZSgpID09IEhhbmRsZXJUeXBlOjpDYXRjaDsgfQogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
SGFuZGxlcj4KKyAgICBzdGF0aWMgSGFuZGxlciogaGFuZGxlckZvckluZGV4KFZlY3RvcjxIYW5k
bGVyPiYgZXhlcHRpb25IYW5kbGVycywgdW5zaWduZWQgaW5kZXgsIFJlcXVpcmVkSGFuZGxlciBy
ZXF1aXJlZEhhbmRsZXIpCisgICAgeworICAgICAgICBmb3IgKEhhbmRsZXImIGhhbmRsZXIgOiBl
eGVwdGlvbkhhbmRsZXJzKSB7CisgICAgICAgICAgICBpZiAoKHJlcXVpcmVkSGFuZGxlciA9PSBS
ZXF1aXJlZEhhbmRsZXI6OkNhdGNoSGFuZGxlcikgJiYgIWhhbmRsZXIuaXNDYXRjaEhhbmRsZXIo
KSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgLy8gSGFuZGxlcnMg
YXJlIG9yZGVyZWQgaW5uZXJtb3N0IGZpcnN0LCBzbyB0aGUgZmlyc3QgaGFuZGxlciB3ZSBlbmNv
dW50ZXIKKyAgICAgICAgICAgIC8vIHRoYXQgY29udGFpbnMgdGhlIHNvdXJjZSBhZGRyZXNzIGlz
IHRoZSBjb3JyZWN0IGhhbmRsZXIgdG8gdXNlLgorICAgICAgICAgICAgLy8gVGhpcyBpbmRleCB1
c2VkIGlzIGVpdGhlciB0aGUgQnl0ZWNvZGVPZmZzZXQgb3IgYSBDYWxsU2l0ZUluZGV4LgorICAg
ICAgICAgICAgaWYgKGhhbmRsZXIuc3RhcnQgPD0gaW5kZXggJiYgaGFuZGxlci5lbmQgPiBpbmRl
eCkKKyAgICAgICAgICAgICAgICByZXR1cm4gJmhhbmRsZXI7CisgICAgICAgIH0KKworICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKICAgICB1aW50MzJfdCBzdGFydDsKICAgICB1aW50
MzJfdCBlbmQ7CiAgICAgdWludDMyX3QgdGFyZ2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmNwcAppbmRleCBlMmNiMDAwNDgz
Nzk0YmE5MmQ1MTBkY2Y1ZmE5OTQ4ODVhMjNkYzNkLi5iZDg0MGY4ZWE4MTM1OTVkNjcyYzk4YTY2
NzAxYzM4ODdjNWQwODQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmNwcApAQCAtMjYsMTQgKzI2LDE1IEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUHJlY2lzZUp1bXBUYXJnZXRzLmgiCiAKKyNpbmNsdWRl
ICJJbnRlcnByZXRlcklubGluZXMuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAKIG5hbWVz
cGFjZSBKU0MgewogCi10ZW1wbGF0ZSA8c2l6ZV90IHZlY3RvclNpemU+Ci1zdGF0aWMgdm9pZCBn
ZXRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBJbnRl
cnByZXRlciogaW50ZXJwcmV0ZXIsIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5z
aWduZWQgYnl0ZWNvZGVPZmZzZXQsIFZlY3Rvcjx1bnNpZ25lZCwgdmVjdG9yU2l6ZT4mIG91dCkK
K3RlbXBsYXRlIDxzaXplX3QgdmVjdG9yU2l6ZSwgdHlwZW5hbWUgQmxvY2ssIHR5cGVuYW1lIElu
c3RydWN0aW9uPgorc3RhdGljIHZvaWQgZ2V0SnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChC
bG9jayogY29kZUJsb2NrLCBJbnRlcnByZXRlciogaW50ZXJwcmV0ZXIsIEluc3RydWN0aW9uKiBp
bnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIFZlY3Rvcjx1bnNpZ25l
ZCwgdmVjdG9yU2l6ZT4mIG91dCkKIHsKLSAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGludGVycHJl
dGVyLT5nZXRPcGNvZGVJRChpbnN0cnVjdGlvbnNCZWdpbltieXRlY29kZU9mZnNldF0udS5vcGNv
ZGUpOworICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGlu
c3RydWN0aW9uc0JlZ2luW2J5dGVjb2RlT2Zmc2V0XSk7CiAgICAgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnQgPSBpbnN0cnVjdGlvbnNCZWdpbiArIGJ5dGVjb2RlT2Zmc2V0OwogICAgIHN3aXRjaCAob3Bj
b2RlSUQpIHsKICAgICBjYXNlIG9wX2ptcDoKQEAgLTU0LDIxICs1NSwyMCBAQCBzdGF0aWMgdm9p
ZCBnZXRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBJ
bnRlcnByZXRlciogaQogICAgIGNhc2Ugb3Bfam5sZXNzZXE6CiAgICAgY2FzZSBvcF9qbmdyZWF0
ZXI6CiAgICAgY2FzZSBvcF9qbmdyZWF0ZXJlcToKLSAgICBjYXNlIG9wX3NhdmU6IC8vIFRoZSBq
dW1wIG9mIG9wX3NhdmUgaXMgcHVyZWx5IGZvciBjYWxjdWxhdGluZyBsaXZlbmVzcy4KICAgICAg
ICAgb3V0LmFwcGVuZChieXRlY29kZU9mZnNldCArIGN1cnJlbnRbM10udS5vcGVyYW5kKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBvcF9zd2l0Y2hfaW1tOgogICAgIGNhc2Ugb3Bfc3dpdGNo
X2NoYXI6IHsKLSAgICAgICAgU2ltcGxlSnVtcFRhYmxlJiB0YWJsZSA9IGNvZGVCbG9jay0+c3dp
dGNoSnVtcFRhYmxlKGN1cnJlbnRbMV0udS5vcGVyYW5kKTsKKyAgICAgICAgYXV0byYgdGFibGUg
PSBjb2RlQmxvY2stPnN3aXRjaEp1bXBUYWJsZShjdXJyZW50WzFdLnUub3BlcmFuZCk7CiAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IHRhYmxlLmJyYW5jaE9mZnNldHMuc2l6ZSgpOyBpLS07KQog
ICAgICAgICAgICAgb3V0LmFwcGVuZChieXRlY29kZU9mZnNldCArIHRhYmxlLmJyYW5jaE9mZnNl
dHNbaV0pOwogICAgICAgICBvdXQuYXBwZW5kKGJ5dGVjb2RlT2Zmc2V0ICsgY3VycmVudFsyXS51
Lm9wZXJhbmQpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBvcF9zd2l0Y2hfc3Ry
aW5nOiB7Ci0gICAgICAgIFN0cmluZ0p1bXBUYWJsZSYgdGFibGUgPSBjb2RlQmxvY2stPnN0cmlu
Z1N3aXRjaEp1bXBUYWJsZShjdXJyZW50WzFdLnUub3BlcmFuZCk7Ci0gICAgICAgIFN0cmluZ0p1
bXBUYWJsZTo6U3RyaW5nT2Zmc2V0VGFibGU6Oml0ZXJhdG9yIGl0ZXIgPSB0YWJsZS5vZmZzZXRU
YWJsZS5iZWdpbigpOwotICAgICAgICBTdHJpbmdKdW1wVGFibGU6OlN0cmluZ09mZnNldFRhYmxl
OjppdGVyYXRvciBlbmQgPSB0YWJsZS5vZmZzZXRUYWJsZS5lbmQoKTsKKyAgICAgICAgYXV0byYg
dGFibGUgPSBjb2RlQmxvY2stPnN0cmluZ1N3aXRjaEp1bXBUYWJsZShjdXJyZW50WzFdLnUub3Bl
cmFuZCk7CisgICAgICAgIGF1dG8gaXRlciA9IHRhYmxlLm9mZnNldFRhYmxlLmJlZ2luKCk7Cisg
ICAgICAgIGF1dG8gZW5kID0gdGFibGUub2Zmc2V0VGFibGUuZW5kKCk7CiAgICAgICAgIGZvciAo
OyBpdGVyICE9IGVuZDsgKytpdGVyKQogICAgICAgICAgICAgb3V0LmFwcGVuZChieXRlY29kZU9m
ZnNldCArIGl0ZXItPnZhbHVlLmJyYW5jaE9mZnNldCk7CiAgICAgICAgIG91dC5hcHBlbmQoYnl0
ZWNvZGVPZmZzZXQgKyBjdXJyZW50WzJdLnUub3BlcmFuZCk7CkBAIC04MiwxMyArODIsMTkgQEAg
c3RhdGljIHZvaWQgZ2V0SnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNv
ZGVCbG9jaywgSW50ZXJwcmV0ZXIqIGkKICAgICB9CiB9CiAKLXZvaWQgY29tcHV0ZVByZWNpc2VK
dW1wVGFyZ2V0cyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgVmVjdG9yPHVuc2lnbmVkLCAzMj4mIG91
dCkKK2VudW0gY2xhc3MgQ29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0c01vZGUgeworICAgIEZvbGxv
d0NvZGVCbG9ja0NsYWltLAorICAgIEZvcmNlQ29tcHV0ZSwKK307CisKK3RlbXBsYXRlPENvbXB1
dGVQcmVjaXNlSnVtcFRhcmdldHNNb2RlIE1vZGUsIHR5cGVuYW1lIEJsb2NrLCB0eXBlbmFtZSBJ
bnN0cnVjdGlvbiwgc2l6ZV90IHZlY3RvclNpemU+Cit2b2lkIGNvbXB1dGVQcmVjaXNlSnVtcFRh
cmdldHNJbnRlcm5hbChCbG9jayogY29kZUJsb2NrLCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25z
QmVnaW4sIHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQsIFZlY3Rvcjx1bnNpZ25lZCwgdmVjdG9y
U2l6ZT4mIG91dCkKIHsKICAgICBBU1NFUlQob3V0LmlzRW1wdHkoKSk7CiAgICAgCiAgICAgLy8g
V2Ugd2lsbCBkZXJpdmUgYSBzdXBlcnNldCBvZiB0aGUganVtcCB0YXJnZXRzIHRoYXQgdGhlIGNv
ZGUgYmxvY2sgdGhpbmtzIGl0IGhhcy4KICAgICAvLyBTbywgaWYgdGhlIGNvZGUgYmxvY2sgY2xh
aW1zIHRoZXJlIGFyZSBub25lLCB0aGVuIHdlIGFyZSBkb25lLgotICAgIGlmICghY29kZUJsb2Nr
LT5udW1iZXJPZkp1bXBUYXJnZXRzKCkpCisgICAgaWYgKE1vZGUgPT0gQ29tcHV0ZVByZWNpc2VK
dW1wVGFyZ2V0c01vZGU6OkZvbGxvd0NvZGVCbG9ja0NsYWltICYmICFjb2RlQmxvY2stPm51bWJl
ck9mSnVtcFRhcmdldHMoKSkKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIGZvciAodW5zaWdu
ZWQgaSA9IGNvZGVCbG9jay0+bnVtYmVyT2ZFeGNlcHRpb25IYW5kbGVycygpOyBpLS07KSB7CkBA
IC05OCwxMCArMTA0LDggQEAgdm9pZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKENvZGVCbG9j
ayogY29kZUJsb2NrLCBWZWN0b3I8dW5zaWduZWQsIDMyPiYgb3V0KQogICAgIH0KIAogICAgIElu
dGVycHJldGVyKiBpbnRlcnByZXRlciA9IGNvZGVCbG9jay0+dm0oKS0+aW50ZXJwcmV0ZXI7Ci0g
ICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luID0gY29kZUJsb2NrLT5pbnN0cnVjdGlv
bnMoKS5iZWdpbigpOwotICAgIHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQgPSBjb2RlQmxvY2st
Pmluc3RydWN0aW9ucygpLnNpemUoKTsKICAgICBmb3IgKHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0
ID0gMDsgYnl0ZWNvZGVPZmZzZXQgPCBpbnN0cnVjdGlvbkNvdW50OykgewotICAgICAgICBPcGNv
ZGVJRCBvcGNvZGVJRCA9IGludGVycHJldGVyLT5nZXRPcGNvZGVJRChpbnN0cnVjdGlvbnNCZWdp
bltieXRlY29kZU9mZnNldF0udS5vcGNvZGUpOworICAgICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9
IGludGVycHJldGVyLT5nZXRPcGNvZGVJRChpbnN0cnVjdGlvbnNCZWdpbltieXRlY29kZU9mZnNl
dF0pOwogICAgICAgICBnZXRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9jaywg
aW50ZXJwcmV0ZXIsIGluc3RydWN0aW9uc0JlZ2luLCBieXRlY29kZU9mZnNldCwgb3V0KTsKICAg
ICAgICAgYnl0ZWNvZGVPZmZzZXQgKz0gb3Bjb2RlTGVuZ3Roc1tvcGNvZGVJRF07CiAgICAgfQpA
QCAtMTIzLDExICsxMjcsMzQgQEAgdm9pZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKENvZGVC
bG9jayogY29kZUJsb2NrLCBWZWN0b3I8dW5zaWduZWQsIDMyPiYgb3V0KQogICAgIG91dC5zaHJp
bmtUb0ZpdCgpOwogfQogCi12b2lkIGZpbmRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KENv
ZGVCbG9jayogY29kZUJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgVmVjdG9yPHVuc2ln
bmVkLCAxPiYgb3V0KQordm9pZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKENvZGVCbG9jayog
Y29kZUJsb2NrLCBWZWN0b3I8dW5zaWduZWQsIDMyPiYgb3V0KQogewotICAgIEludGVycHJldGVy
KiBpbnRlcnByZXRlciA9IGNvZGVCbG9jay0+dm0oKS0+aW50ZXJwcmV0ZXI7Ci0gICAgSW5zdHJ1
Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luID0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdp
bigpOwotICAgIGdldEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoY29kZUJsb2NrLCBpbnRl
cnByZXRlciwgaW5zdHJ1Y3Rpb25zQmVnaW4sIGJ5dGVjb2RlT2Zmc2V0LCBvdXQpOworICAgIGNv
bXB1dGVQcmVjaXNlSnVtcFRhcmdldHNJbnRlcm5hbDxDb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRz
TW9kZTo6Rm9sbG93Q29kZUJsb2NrQ2xhaW0+KGNvZGVCbG9jaywgY29kZUJsb2NrLT5pbnN0cnVj
dGlvbnMoKS5iZWdpbigpLCBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLnNpemUoKSwgb3V0KTsK
K30KKwordm9pZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKENvZGVCbG9jayogY29kZUJsb2Nr
LCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGluc3RydWN0aW9uQ291
bnQsIFZlY3Rvcjx1bnNpZ25lZCwgMzI+JiBvdXQpCit7CisgICAgY29tcHV0ZVByZWNpc2VKdW1w
VGFyZ2V0c0ludGVybmFsPENvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHNNb2RlOjpGb2xsb3dDb2Rl
QmxvY2tDbGFpbT4oY29kZUJsb2NrLCBpbnN0cnVjdGlvbnNCZWdpbiwgaW5zdHJ1Y3Rpb25Db3Vu
dCwgb3V0KTsKK30KKwordm9pZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKFVubGlua2VkQ29k
ZUJsb2NrKiBjb2RlQmxvY2ssIFVubGlua2VkSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2lu
LCB1bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50LCBWZWN0b3I8dW5zaWduZWQsIDMyPiYgb3V0KQor
eworICAgIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHNJbnRlcm5hbDxDb21wdXRlUHJlY2lzZUp1
bXBUYXJnZXRzTW9kZTo6Rm9sbG93Q29kZUJsb2NrQ2xhaW0+KGNvZGVCbG9jaywgaW5zdHJ1Y3Rp
b25zQmVnaW4sIGluc3RydWN0aW9uQ291bnQsIG91dCk7Cit9CisKK3ZvaWQgcmVjb21wdXRlUHJl
Y2lzZUp1bXBUYXJnZXRzKFVubGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFVubGlua2VkSW5z
dHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50LCBW
ZWN0b3I8dW5zaWduZWQ+JiBvdXQpCit7CisgICAgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0c0lu
dGVybmFsPENvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHNNb2RlOjpGb3JjZUNvbXB1dGU+KGNvZGVC
bG9jaywgaW5zdHJ1Y3Rpb25zQmVnaW4sIGluc3RydWN0aW9uQ291bnQsIG91dCk7Cit9CisKK3Zv
aWQgZmluZEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQs
IFZlY3Rvcjx1bnNpZ25lZCwgMT4mIG91dCkKK3sKKyAgICBnZXRKdW1wVGFyZ2V0c0ZvckJ5dGVj
b2RlT2Zmc2V0KGNvZGVCbG9jaywgY29kZUJsb2NrLT52bSgpLT5pbnRlcnByZXRlciwgaW5zdHJ1
Y3Rpb25zQmVnaW4sIGJ5dGVjb2RlT2Zmc2V0LCBvdXQpOworfQorCit2b2lkIGZpbmRKdW1wVGFy
Z2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KFVubGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFVubGlu
a2VkSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBieXRlY29kZU9mZnNl
dCwgVmVjdG9yPHVuc2lnbmVkLCAxPiYgb3V0KQoreworICAgIGdldEp1bXBUYXJnZXRzRm9yQnl0
ZWNvZGVPZmZzZXQoY29kZUJsb2NrLCBjb2RlQmxvY2stPnZtKCktPmludGVycHJldGVyLCBpbnN0
cnVjdGlvbnNCZWdpbiwgYnl0ZWNvZGVPZmZzZXQsIG91dCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VK
dW1wVGFyZ2V0cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1w
VGFyZ2V0cy5oCmluZGV4IDg1MjQxM2Q3N2I3OTg5ODRiMjdjZWYwZWQ2MmJjOTRjNjg5ZTIxMmMu
LmRiOWJkMzgzYjhhYzQ1NTdkMzI2NzE3YjcyZDRiMGY1MGIxZDE4MzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmgKQEAgLTMw
LDEwICszMCwxOCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorY2xhc3MgVW5saW5rZWRDb2RlQmxv
Y2s7CitzdHJ1Y3QgVW5saW5rZWRJbnN0cnVjdGlvbjsKKwogLy8gUmV0dXJuIGEgc29ydGVkIGxp
c3Qgb2YgYnl0ZWNvZGUgaW5kZXggdGhhdCBhcmUgdGhlIGRlc3RpbmF0aW9uIG9mIGEganVtcC4K
IHZvaWQgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhDb2RlQmxvY2sqLCBWZWN0b3I8dW5zaWdu
ZWQsIDMyPiYgb3V0KTsKK3ZvaWQgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhDb2RlQmxvY2sq
LCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGluc3RydWN0aW9uQ291
bnQsIFZlY3Rvcjx1bnNpZ25lZCwgMzI+JiBvdXQpOwordm9pZCBjb21wdXRlUHJlY2lzZUp1bXBU
YXJnZXRzKFVubGlua2VkQ29kZUJsb2NrKiwgVW5saW5rZWRJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rp
b25zQmVnaW4sIHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQsIFZlY3Rvcjx1bnNpZ25lZCwgMzI+
JiBvdXQpOworCit2b2lkIHJlY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhVbmxpbmtlZENvZGVC
bG9jayosIFVubGlua2VkSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBp
bnN0cnVjdGlvbkNvdW50LCBWZWN0b3I8dW5zaWduZWQ+JiBvdXQpOwogCi12b2lkIGZpbmRKdW1w
VGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayosIHVuc2lnbmVkIGJ5dGVjb2RlT2Zm
c2V0LCBWZWN0b3I8dW5zaWduZWQsIDE+JiBvdXQpOwordm9pZCBmaW5kSnVtcFRhcmdldHNGb3JC
eXRlY29kZU9mZnNldChDb2RlQmxvY2sqLCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4s
IHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBWZWN0b3I8dW5zaWduZWQsIDE+JiBvdXQpOwordm9p
ZCBmaW5kSnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChVbmxpbmtlZENvZGVCbG9jayosIFVu
bGlua2VkSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBieXRlY29kZU9m
ZnNldCwgVmVjdG9yPHVuc2lnbmVkLCAxPiYgb3V0KTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVC
bG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxv
Y2suY3BwCmluZGV4IDAwNWRmZjhiZmMyYzUwNDhjNTAzY2U2MDI5YmJkMjM4MzA2YTE5NTQuLmE1
ZWNmNTFlMWU3N2ViMjk5YWFiMTZhMDkwOWE0NjE2MjM1ZDA1NmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcApAQCAtMjgs
NiArMjgsNyBAQAogI2luY2x1ZGUgIlVubGlua2VkQ29kZUJsb2NrLmgiCiAKICNpbmNsdWRlICJC
eXRlY29kZUdlbmVyYXRvci5oIgorI2luY2x1ZGUgIkJ5dGVjb2RlUmV3cml0ZXIuaCIKICNpbmNs
dWRlICJDbGFzc0luZm8uaCIKICNpbmNsdWRlICJDb2RlQ2FjaGUuaCIKICNpbmNsdWRlICJFeGVj
dXRhYmxlLmgiCkBAIC0zNiw2ICszNyw3IEBACiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIKICNpbmNs
dWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiUGFyc2VyLmgiCisjaW5jbHVkZSAiUHJlY2lz
ZUp1bXBUYXJnZXRzLmgiCiAjaW5jbHVkZSAiU291cmNlUHJvdmlkZXIuaCIKICNpbmNsdWRlICJT
dHJ1Y3R1cmUuaCIKICNpbmNsdWRlICJTeW1ib2xUYWJsZS5oIgpAQCAtMzY3LDUgKzM2OSwxMTEg
QEAgY29uc3QgVW5saW5rZWRJbnN0cnVjdGlvblN0cmVhbSYgVW5saW5rZWRDb2RlQmxvY2s6Omlu
c3RydWN0aW9ucygpIGNvbnN0CiAgICAgcmV0dXJuICptX3VubGlua2VkSW5zdHJ1Y3Rpb25zOwog
fQogCitVbmxpbmtlZEhhbmRsZXJJbmZvKiBVbmxpbmtlZENvZGVCbG9jazo6aGFuZGxlckZvckJ5
dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBSZXF1aXJlZEhhbmRsZXIgcmVx
dWlyZWRIYW5kbGVyKQoreworICAgIHJldHVybiBoYW5kbGVyRm9ySW5kZXgoYnl0ZWNvZGVPZmZz
ZXQsIHJlcXVpcmVkSGFuZGxlcik7Cit9CisKK1VubGlua2VkSGFuZGxlckluZm8qIFVubGlua2Vk
Q29kZUJsb2NrOjpoYW5kbGVyRm9ySW5kZXgodW5zaWduZWQgaW5kZXgsIFJlcXVpcmVkSGFuZGxl
ciByZXF1aXJlZEhhbmRsZXIpCit7CisgICAgaWYgKCFtX3JhcmVEYXRhKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gVW5saW5rZWRIYW5kbGVySW5mbzo6aGFuZGxlckZvcklu
ZGV4KG1fcmFyZURhdGEtPm1fZXhjZXB0aW9uSGFuZGxlcnMsIGluZGV4LCByZXF1aXJlZEhhbmRs
ZXIpOworfQorCit2b2lkIFVubGlua2VkQ29kZUJsb2NrOjphcHBseU1vZGlmaWNhdGlvbihCeXRl
Y29kZVJld3JpdGVyJiBpbnNlcnRpb25TZXQpCit7CisgICAgLy8gQmVmb3JlIGFwcGx5aW5nIHRo
ZSBjaGFuZ2VzLCB3ZSBhZGp1c3QgdGhlIGp1bXBzIGJhc2VkIG9uIHRoZSBvcmlnaW5hbCBieXRl
Y29kZSBvZmZzZXQsIHRoZSBvZmZzZXQgdG8gdGhlIGp1bXAgdGFyZ2V0LCBhbmQKKyAgICAvLyB0
aGUgaW5zZXJ0aW9uIGluZm9ybWF0aW9uLgorCisgICAgQnl0ZWNvZGVHcmFwaDxVbmxpbmtlZENv
ZGVCbG9jaz4mIGdyYXBoID0gaW5zZXJ0aW9uU2V0LmdyYXBoKCk7CisgICAgVW5saW5rZWRJbnN0
cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4gPSBncmFwaC5pbnN0cnVjdGlvbnMoKS5iZWdpbigp
OworICAgIGZvciAoaW50IGJ5dGVjb2RlT2Zmc2V0ID0gMCwgaW5zdHJ1Y3Rpb25Db3VudCA9IGdy
YXBoLmluc3RydWN0aW9ucygpLnNpemUoKTsgYnl0ZWNvZGVPZmZzZXQgPCBpbnN0cnVjdGlvbkNv
dW50OykgeworICAgICAgICBVbmxpbmtlZEluc3RydWN0aW9uKiBjdXJyZW50ID0gaW5zdHJ1Y3Rp
b25zQmVnaW4gKyBieXRlY29kZU9mZnNldDsKKyAgICAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBj
dXJyZW50WzBdLnUub3Bjb2RlOworCisgICAgICAgIHN3aXRjaCAob3Bjb2RlSUQpIHsKKyAgICAg
ICAgY2FzZSBvcF9qbXA6CisgICAgICAgICAgICBjdXJyZW50WzFdLnUub3BlcmFuZCA9IGluc2Vy
dGlvblNldC5hZGp1c3RPZmZzZXQoYnl0ZWNvZGVPZmZzZXQsIGJ5dGVjb2RlT2Zmc2V0ICsgY3Vy
cmVudFsxXS51Lm9wZXJhbmQpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBv
cF9qdHJ1ZToKKyAgICAgICAgY2FzZSBvcF9qZmFsc2U6CisgICAgICAgIGNhc2Ugb3BfamVxX251
bGw6CisgICAgICAgIGNhc2Ugb3Bfam5lcV9udWxsOgorICAgICAgICAgICAgY3VycmVudFsyXS51
Lm9wZXJhbmQgPSBpbnNlcnRpb25TZXQuYWRqdXN0T2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0LCBieXRl
Y29kZU9mZnNldCArIGN1cnJlbnRbMl0udS5vcGVyYW5kKTsKKyAgICAgICAgICAgIGJyZWFrOwor
CisgICAgICAgIGNhc2Ugb3Bfam5lcV9wdHI6CisgICAgICAgIGNhc2Ugb3Bfamxlc3M6CisgICAg
ICAgIGNhc2Ugb3Bfamxlc3NlcToKKyAgICAgICAgY2FzZSBvcF9qZ3JlYXRlcjoKKyAgICAgICAg
Y2FzZSBvcF9qZ3JlYXRlcmVxOgorICAgICAgICBjYXNlIG9wX2pubGVzczoKKyAgICAgICAgY2Fz
ZSBvcF9qbmxlc3NlcToKKyAgICAgICAgY2FzZSBvcF9qbmdyZWF0ZXI6CisgICAgICAgIGNhc2Ug
b3Bfam5ncmVhdGVyZXE6CisgICAgICAgICAgICBjdXJyZW50WzNdLnUub3BlcmFuZCA9IGluc2Vy
dGlvblNldC5hZGp1c3RPZmZzZXQoYnl0ZWNvZGVPZmZzZXQsIGJ5dGVjb2RlT2Zmc2V0ICsgY3Vy
cmVudFszXS51Lm9wZXJhbmQpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBv
cF9zd2l0Y2hfaW1tOgorICAgICAgICBjYXNlIG9wX3N3aXRjaF9jaGFyOiB7CisgICAgICAgICAg
ICBhdXRvJiB0YWJsZSA9IHN3aXRjaEp1bXBUYWJsZShjdXJyZW50WzFdLnUub3BlcmFuZCk7Cisg
ICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSB0YWJsZS5icmFuY2hPZmZzZXRzLnNpemUoKTsg
aS0tOykKKyAgICAgICAgICAgICAgICB0YWJsZS5icmFuY2hPZmZzZXRzW2ldID0gaW5zZXJ0aW9u
U2V0LmFkanVzdE9mZnNldChieXRlY29kZU9mZnNldCwgYnl0ZWNvZGVPZmZzZXQgKyB0YWJsZS5i
cmFuY2hPZmZzZXRzW2ldKTsKKyAgICAgICAgICAgIGN1cnJlbnRbMl0udS5vcGVyYW5kID0gaW5z
ZXJ0aW9uU2V0LmFkanVzdE9mZnNldChieXRlY29kZU9mZnNldCwgYnl0ZWNvZGVPZmZzZXQgKyBj
dXJyZW50WzJdLnUub3BlcmFuZCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisg
ICAgICAgIGNhc2Ugb3Bfc3dpdGNoX3N0cmluZzogeworICAgICAgICAgICAgYXV0byYgdGFibGUg
PSBzdHJpbmdTd2l0Y2hKdW1wVGFibGUoY3VycmVudFsxXS51Lm9wZXJhbmQpOworICAgICAgICAg
ICAgYXV0byBpdGVyID0gdGFibGUub2Zmc2V0VGFibGUuYmVnaW4oKTsKKyAgICAgICAgICAgIGF1
dG8gZW5kID0gdGFibGUub2Zmc2V0VGFibGUuZW5kKCk7CisgICAgICAgICAgICBmb3IgKDsgaXRl
ciAhPSBlbmQ7ICsraXRlcikKKyAgICAgICAgICAgICAgICBpdGVyLT52YWx1ZS5icmFuY2hPZmZz
ZXQgPSBpbnNlcnRpb25TZXQuYWRqdXN0T2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0LCBieXRlY29kZU9m
ZnNldCArIGl0ZXItPnZhbHVlLmJyYW5jaE9mZnNldCk7CisgICAgICAgICAgICBjdXJyZW50WzJd
LnUub3BlcmFuZCA9IGluc2VydGlvblNldC5hZGp1c3RPZmZzZXQoYnl0ZWNvZGVPZmZzZXQsIGJ5
dGVjb2RlT2Zmc2V0ICsgY3VycmVudFsyXS51Lm9wZXJhbmQpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0KKworICAgICAgICBieXRlY29kZU9mZnNldCArPSBvcGNvZGVMZW5ndGgob3Bjb2RlSUQp
OworICAgIH0KKworICAgIC8vIFRoZW4sIGV4Y2VwdGlvbiBoYW5kbGVycyBzaG91bGQgYmUgYWRq
dXN0ZWQuCisgICAgaWYgKG1fcmFyZURhdGEpIHsKKyAgICAgICAgZm9yIChVbmxpbmtlZEhhbmRs
ZXJJbmZvJiBoYW5kbGVyIDogbV9yYXJlRGF0YS0+bV9leGNlcHRpb25IYW5kbGVycykgeworICAg
ICAgICAgICAgaGFuZGxlci50YXJnZXQgPSBpbnNlcnRpb25TZXQuYWRqdXN0T2Zmc2V0KDAsIGhh
bmRsZXIudGFyZ2V0KTsKKyAgICAgICAgICAgIGhhbmRsZXIuc3RhcnQgPSBpbnNlcnRpb25TZXQu
YWRqdXN0T2Zmc2V0KDAsIGhhbmRsZXIuc3RhcnQpOworICAgICAgICAgICAgaGFuZGxlci5lbmQg
PSBpbnNlcnRpb25TZXQuYWRqdXN0T2Zmc2V0KDAsIGhhbmRsZXIuZW5kKTsKKyAgICAgICAgfQor
CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9yYXJlRGF0YS0+bV9vcFByb2ZpbGVD
b250cm9sRmxvd0J5dGVjb2RlT2Zmc2V0cy5zaXplKCk7ICsraSkKKyAgICAgICAgICAgIG1fcmFy
ZURhdGEtPm1fb3BQcm9maWxlQ29udHJvbEZsb3dCeXRlY29kZU9mZnNldHNbaV0gPSBpbnNlcnRp
b25TZXQuYWRqdXN0T2Zmc2V0KDAsIG1fcmFyZURhdGEtPm1fb3BQcm9maWxlQ29udHJvbEZsb3dC
eXRlY29kZU9mZnNldHNbaV0pOworCisgICAgICAgIGlmICghbV9yYXJlRGF0YS0+bV90eXBlUHJv
ZmlsZXJJbmZvTWFwLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgSGFzaE1hcDx1bnNpZ25lZCwg
UmFyZURhdGE6OlR5cGVQcm9maWxlckV4cHJlc3Npb25SYW5nZT4gYWRqdXN0ZWRUeXBlUHJvZmls
ZXJJbmZvTWFwOworICAgICAgICAgICAgZm9yIChhdXRvJiBlbnRyeSA6IG1fcmFyZURhdGEtPm1f
dHlwZVByb2ZpbGVySW5mb01hcCkKKyAgICAgICAgICAgICAgICBhZGp1c3RlZFR5cGVQcm9maWxl
ckluZm9NYXAuc2V0KGluc2VydGlvblNldC5hZGp1c3RPZmZzZXQoMCwgZW50cnkua2V5KSwgZW50
cnkudmFsdWUpOworICAgICAgICAgICAgbV9yYXJlRGF0YS0+bV90eXBlUHJvZmlsZXJJbmZvTWFw
LnN3YXAoYWRqdXN0ZWRUeXBlUHJvZmlsZXJJbmZvTWFwKTsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9ucy5z
aXplKCk7ICsraSkKKyAgICAgICAgbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uc1tpXSA9IGlu
c2VydGlvblNldC5hZGp1c3RPZmZzZXQoMCwgbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uc1tp
XSk7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZXhwcmVzc2lvbkluZm8uc2l6ZSgp
OyArK2kpCisgICAgICAgIG1fZXhwcmVzc2lvbkluZm9baV0uaW5zdHJ1Y3Rpb25PZmZzZXQgPSBp
bnNlcnRpb25TZXQuYWRqdXN0T2Zmc2V0KDAsIG1fZXhwcmVzc2lvbkluZm9baV0uaW5zdHJ1Y3Rp
b25PZmZzZXQpOworCisgICAgLy8gVGhlbiwgbW9kaWZ5IHRoZSB1bmxpbmtlZCBpbnN0cnVjdGlv
bnMuCisgICAgaW5zZXJ0aW9uU2V0LmFwcGx5TW9kaWZpY2F0aW9uKCk7CisKKyAgICAvLyBBbmQg
cmVjb21wdXRlIHRoZSBqdW1wIHRhcmdldCBiYXNlZCBvbiB0aGUgbW9kaWZpZWQgdW5saW5rZWQg
aW5zdHJ1Y3Rpb25zLgorICAgIG1fanVtcFRhcmdldHMuY2xlYXIoKTsKKyAgICByZWNvbXB1dGVQ
cmVjaXNlSnVtcFRhcmdldHModGhpcywgZ3JhcGguaW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSwgZ3Jh
cGguaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpLCBtX2p1bXBUYXJnZXRzKTsKK30KKwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2su
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCmlu
ZGV4IGI0ZDJjZjQ4ZTQ2MzhkMzczYjE2NzIwZjc2ZTNjZmY5N2RmMDE1MGQuLjcyZDE2OTYxMWFh
OTM1MTc4YzQ4MTBlZWQyZDU5YTgzMThmZjYxYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCkBAIC00NSw2ICs0NSw4IEBACiAK
IG5hbWVzcGFjZSBKU0MgewogCitjbGFzcyBCeXRlY29kZVJld3JpdGVyOworY2xhc3MgRGVidWdn
ZXI7CiBjbGFzcyBGdW5jdGlvbk1ldGFkYXRhTm9kZTsKIGNsYXNzIEZ1bmN0aW9uRXhlY3V0YWJs
ZTsKIGNsYXNzIEpTU2NvcGU7CkBAIC02NSw3ICs2NywxMSBAQCB0eXBlZGVmIHVuc2lnbmVkIFVu
bGlua2VkT2JqZWN0QWxsb2NhdGlvblByb2ZpbGU7CiB0eXBlZGVmIHVuc2lnbmVkIFVubGlua2Vk
TExJbnRDYWxsTGlua0luZm87CiAKIHN0cnVjdCBVbmxpbmtlZFN0cmluZ0p1bXBUYWJsZSB7Ci0g
ICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxTdHJpbmdJbXBsPiwgaW50MzJfdD4gU3RyaW5nT2Zm
c2V0VGFibGU7CisgICAgc3RydWN0IE9mZnNldExvY2F0aW9uIHsKKyAgICAgICAgaW50MzJfdCBi
cmFuY2hPZmZzZXQ7CisgICAgfTsKKworICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8U3RyaW5n
SW1wbD4sIE9mZnNldExvY2F0aW9uPiBTdHJpbmdPZmZzZXRUYWJsZTsKICAgICBTdHJpbmdPZmZz
ZXRUYWJsZSBvZmZzZXRUYWJsZTsKIAogICAgIGlubGluZSBpbnQzMl90IG9mZnNldEZvclZhbHVl
KFN0cmluZ0ltcGwqIHZhbHVlLCBpbnQzMl90IGRlZmF1bHRPZmZzZXQpCkBAIC03NCw3ICs4MCw3
IEBAIHN0cnVjdCBVbmxpbmtlZFN0cmluZ0p1bXBUYWJsZSB7CiAgICAgICAgIFN0cmluZ09mZnNl
dFRhYmxlOjpjb25zdF9pdGVyYXRvciBsb2MgPSBvZmZzZXRUYWJsZS5maW5kKHZhbHVlKTsKICAg
ICAgICAgaWYgKGxvYyA9PSBlbmQpCiAgICAgICAgICAgICByZXR1cm4gZGVmYXVsdE9mZnNldDsK
LSAgICAgICAgcmV0dXJuIGxvYy0+dmFsdWU7CisgICAgICAgIHJldHVybiBsb2MtPnZhbHVlLmJy
YW5jaE9mZnNldDsKICAgICB9CiAKIH07CkBAIC0xMDIsNiArMTA4LDggQEAgc3RydWN0IFVubGlu
a2VkSW5zdHJ1Y3Rpb24gewogICAgIH0gdTsKIH07CiAKK2NsYXNzIEJ5dGVjb2RlR2VuZXJhdG9y
aWZpY2F0aW9uOworCiBjbGFzcyBVbmxpbmtlZENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewog
cHVibGljOgogICAgIHR5cGVkZWYgSlNDZWxsIEJhc2U7CkBAIC0xMTEsNiArMTE5LDkgQEAgY2xh
c3MgVW5saW5rZWRDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKIAogICAgIGVudW0geyBDYWxs
RnVuY3Rpb24sIEFwcGx5RnVuY3Rpb24gfTsKIAorICAgIHR5cGVkZWYgVW5saW5rZWRJbnN0cnVj
dGlvbiBJbnN0cnVjdGlvbjsKKyAgICB0eXBlZGVmIFZlY3RvcjxVbmxpbmtlZEluc3RydWN0aW9u
LCAwLCBVbnNhZmVWZWN0b3JPdmVyZmxvdz4gVW5wYWNrZWRJbnN0cnVjdGlvbnM7CisKICAgICBi
b29sIGlzQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2lzQ29uc3RydWN0b3I7IH0KICAg
ICBib29sIGlzU3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNTdHJpY3RNb2RlOyB9CiAg
ICAgYm9vbCB1c2VzRXZhbCgpIGNvbnN0IHsgcmV0dXJuIG1fdXNlc0V2YWw7IH0KQEAgLTIwMCw2
ICsyMTEsOSBAQCBjbGFzcyBVbmxpbmtlZENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAg
IHVuc2lnbmVkIGp1bXBUYXJnZXQoaW50IGluZGV4KSBjb25zdCB7IHJldHVybiBtX2p1bXBUYXJn
ZXRzW2luZGV4XTsgfQogICAgIHVuc2lnbmVkIGxhc3RKdW1wVGFyZ2V0KCkgY29uc3QgeyByZXR1
cm4gbV9qdW1wVGFyZ2V0cy5sYXN0KCk7IH0KIAorICAgIFVubGlua2VkSGFuZGxlckluZm8qIGhh
bmRsZXJGb3JCeXRlY29kZU9mZnNldCh1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgUmVxdWlyZWRI
YW5kbGVyID0gUmVxdWlyZWRIYW5kbGVyOjpBbnlIYW5kbGVyKTsKKyAgICBVbmxpbmtlZEhhbmRs
ZXJJbmZvKiBoYW5kbGVyRm9ySW5kZXgodW5zaWduZWQsIFJlcXVpcmVkSGFuZGxlciA9IFJlcXVp
cmVkSGFuZGxlcjo6QW55SGFuZGxlcik7CisKICAgICBib29sIGlzQnVpbHRpbkZ1bmN0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9pc0J1aWx0aW5GdW5jdGlvbjsgfQogCiAgICAgQ29uc3RydWN0b3JL
aW5kIGNvbnN0cnVjdG9yS2luZCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PENvbnN0cnVj
dG9yS2luZD4obV9jb25zdHJ1Y3RvcktpbmQpOyB9CkBAIC0yMzAsNiArMjQ0LDggQEAgY2xhc3Mg
VW5saW5rZWRDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICB2b2lkIHNldEluc3RydWN0
aW9ucyhzdGQ6OnVuaXF1ZV9wdHI8VW5saW5rZWRJbnN0cnVjdGlvblN0cmVhbT4pOwogICAgIGNv
bnN0IFVubGlua2VkSW5zdHJ1Y3Rpb25TdHJlYW0mIGluc3RydWN0aW9ucygpIGNvbnN0OwogCisg
ICAgaW50IG51bUNhbGxlZUxvY2FscygpIGNvbnN0IHsgcmV0dXJuIG1fbnVtQ2FsbGVlTG9jYWxz
OyB9CisKICAgICBpbnQgbV9udW1WYXJzOwogICAgIGludCBtX251bUNhcHR1cmVkVmFyczsKICAg
ICBpbnQgbV9udW1DYWxsZWVMb2NhbHM7CkBAIC0zODEsNiArMzk3LDggQEAgY2xhc3MgVW5saW5r
ZWRDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICB9CiAKIHByaXZhdGU6CisgICAgZnJp
ZW5kIGNsYXNzIEJ5dGVjb2RlUmV3cml0ZXI7CisgICAgdm9pZCBhcHBseU1vZGlmaWNhdGlvbihC
eXRlY29kZVJld3JpdGVyJik7CiAKICAgICB2b2lkIGNyZWF0ZVJhcmVEYXRhSWZOZWNlc3Nhcnko
KQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WaXJ0
dWFsUmVnaXN0ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WaXJ0dWFsUmVn
aXN0ZXIuaAppbmRleCBkM2RmNDA5NTdiNTE3NTY4ZTNhZWZiZTNhMWE2MDlmZDg3OGJhYWMzLi5k
YWY1MDlmNmM3ZDExNWU0NWJjYjEwN2M2N2QzZDM4ZDgwNGYyODk0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmlydHVhbFJlZ2lzdGVyLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZpcnR1YWxSZWdpc3Rlci5oCkBAIC0yNiw4ICsyNiw4
IEBACiAjaWZuZGVmIFZpcnR1YWxSZWdpc3Rlcl9oCiAjZGVmaW5lIFZpcnR1YWxSZWdpc3Rlcl9o
CiAKKyNpbmNsdWRlICJCeXRlY29kZUNvbnZlbnRpb25zLmgiCiAjaW5jbHVkZSAiQ2FsbEZyYW1l
LmgiCi0KICNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBA
IC0xMDMsNyArMTAzLDcgQEAgY2xhc3MgVmlydHVhbFJlZ2lzdGVyIHsKIAogcHJpdmF0ZToKICAg
ICBzdGF0aWMgY29uc3QgaW50IHNfaW52YWxpZFZpcnR1YWxSZWdpc3RlciA9IDB4M2ZmZmZmZmY7
Ci0gICAgc3RhdGljIGNvbnN0IGludCBzX2ZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4ID0gMHg0
MDAwMDAwMDsKKyAgICBzdGF0aWMgY29uc3QgaW50IHNfZmlyc3RDb25zdGFudFJlZ2lzdGVySW5k
ZXggPSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleDsKIAogICAgIHN0YXRpYyBpbnQgbG9jYWxU
b09wZXJhbmQoaW50IGxvY2FsKSB7IHJldHVybiAtMSAtIGxvY2FsOyB9CiAgICAgc3RhdGljIGlu
dCBvcGVyYW5kVG9Mb2NhbChpbnQgb3BlcmFuZCkgeyByZXR1cm4gLTEgLSBvcGVyYW5kOyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVH
ZW5lcmF0b3IuY3BwCmluZGV4IDMxMmQ4OWY3YWRjNzNmMDdkYzUxNzliNzVlNTc1YzU1OTAyNjZk
YjguLjUzM2VmMDg5OGI3N2RiZGIzNmU0YTI1M2QwNzRkZDJkNDcyMjAxOGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAKICNpbmNsdWRlICJBcml0aFByb2ZpbGUuaCIKICNp
bmNsdWRlICJCdWlsdGluRXhlY3V0YWJsZXMuaCIKKyNpbmNsdWRlICJCeXRlY29kZUdlbmVyYXRv
cmlmaWNhdGlvbi5oIgogI2luY2x1ZGUgIkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5oIgogI2lu
Y2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgpAQCAtMTU1LDYg
KzE1NiwxMCBAQCBQYXJzZXJFcnJvciBCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUoKQogICAg
ICAgICBtX2NvZGVCbG9jay0+YWRkRXhjZXB0aW9uSGFuZGxlcihpbmZvKTsKICAgICB9CiAgICAg
CisKKyAgICBpZiAobV9jb2RlQmxvY2stPnBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6
R2VuZXJhdG9yQm9keU1vZGUpCisgICAgICAgIHBlcmZvcm1HZW5lcmF0b3JpZmljYXRpb24obV9j
b2RlQmxvY2suZ2V0KCksIG1faW5zdHJ1Y3Rpb25zLCBtX2dlbmVyYXRvckZyYW1lU3ltYm9sVGFi
bGUuZ2V0KCksIG1fZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZUluZGV4KTsKKwogICAgIG1fY29k
ZUJsb2NrLT5zZXRJbnN0cnVjdGlvbnMoc3RkOjptYWtlX3VuaXF1ZTxVbmxpbmtlZEluc3RydWN0
aW9uU3RyZWFtPihtX2luc3RydWN0aW9ucykpOwogCiAgICAgbV9jb2RlQmxvY2stPnNocmlua1Rv
Rml0KCk7CkBAIC0yNjIsMTAgKzI2NywxNCBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVH
ZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAg
IGJvb2wgc2hvdWxkQ2FwdHVyZUFsbE9mVGhlVGhpbmdzID0gbV9zaG91bGRFbWl0RGVidWdIb29r
cyB8fCBjb2RlQmxvY2stPnVzZXNFdmFsKCk7CiAgICAgYm9vbCBuZWVkc0FyZ3VtZW50cyA9IChm
dW5jdGlvbk5vZGUtPnVzZXNBcmd1bWVudHMoKSB8fCBjb2RlQmxvY2stPnVzZXNFdmFsKCkgfHwg
KGZ1bmN0aW9uTm9kZS0+dXNlc0Fycm93RnVuY3Rpb24oKSAmJiAhY29kZUJsb2NrLT5pc0Fycm93
RnVuY3Rpb24oKSAmJiBpc0FyZ3VtZW50c1VzZWRJbklubmVyQXJyb3dGdW5jdGlvbigpKSk7CiAK
LSAgICAvLyBHZW5lcmF0b3IgbmV2ZXIgcHJvdmlkZXMgImFyZ3VtZW50cyIuICJhcmd1bWVudHMi
IHJlZmVyZW5jZSB3aWxsIGJlIHJlc29sdmVkIGluIGFuIHVwcGVyIGdlbmVyYXRvciBmdW5jdGlv
biBzY29wZS4KLSAgICBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9y
Qm9keU1vZGUpCisgICAgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRv
ckJvZHlNb2RlKSB7CisgICAgICAgIC8vIEdlbmVyYXRvciBuZXZlciBwcm92aWRlcyAiYXJndW1l
bnRzIi4gImFyZ3VtZW50cyIgcmVmZXJlbmNlIHdpbGwgYmUgcmVzb2x2ZWQgaW4gYW4gdXBwZXIg
Z2VuZXJhdG9yIGZ1bmN0aW9uIHNjb3BlLgogICAgICAgICBuZWVkc0FyZ3VtZW50cyA9IGZhbHNl
OwogCisgICAgICAgIC8vIEdlbmVyYXRvciB1c2VzIHRoZSB2YXIgc2NvcGUgdG8gc2F2ZSBhbmQg
cmVzdW1lIGl0cyB2YXJpYWJsZXMuIFNvIHRoZSBsZXhpY2FsIHNjb3BlIGlzIGFsd2F5cyBpbnN0
YW50aWF0ZWQuCisgICAgICAgIHNob3VsZENhcHR1cmVTb21lT2ZUaGVUaGluZ3MgPSB0cnVlOwor
ICAgIH0KKwogICAgIGlmIChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JX
cmFwcGVyRnVuY3Rpb25Nb2RlICYmIG5lZWRzQXJndW1lbnRzKSB7CiAgICAgICAgIC8vIEdlbmVy
YXRvciBkb2VzIG5vdCBwcm92aWRlICJhcmd1bWVudHMiLiBJbnN0ZWFkLCB3cmFwcGluZyBHZW5l
cmF0b3JGdW5jdGlvbiBwcm92aWRlcyAiYXJndW1lbnRzIi4KICAgICAgICAgLy8gVGhpcyBpcyBi
ZWNhdXNlIGFyZ3VtZW50cyBvZiBhIGdlbmVyYXRvciBzaG91bGQgYmUgZXZhbHVhdGVkIGJlZm9y
ZSBzdGFydGluZyBpdC4KQEAgLTI3NCw3ICsyODMsNyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0
ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5r
ZQogICAgICAgICAvLyAgICBmdW5jdGlvbiAqZ2VuKGEsIGIgPSBoZWxsbygpKQogICAgICAgICAv
LyAgICB7CiAgICAgICAgIC8vICAgICAgICByZXR1cm4gewotICAgICAgICAvLyAgICAgICAgICAg
IEBnZW5lcmF0b3JOZXh0OiBmdW5jdGlvbiAoQGdlbmVyYXRvciwgQGdlbmVyYXRvclN0YXRlLCBA
Z2VuZXJhdG9yVmFsdWUsIEBnZW5lcmF0b3JSZXN1bWVNb2RlKQorICAgICAgICAvLyAgICAgICAg
ICAgIEBnZW5lcmF0b3JOZXh0OiBmdW5jdGlvbiAoQGdlbmVyYXRvciwgQGdlbmVyYXRvclN0YXRl
LCBAZ2VuZXJhdG9yVmFsdWUsIEBnZW5lcmF0b3JSZXN1bWVNb2RlLCBAZ2VuZXJhdG9yRnJhbWUp
CiAgICAgICAgIC8vICAgICAgICAgICAgewogICAgICAgICAvLyAgICAgICAgICAgICAgICBhcmd1
bWVudHM7ICAvLyBUaGlzIGBhcmd1bWVudHNgIHNob3VsZCByZWZlcmVuY2UgdG8gdGhlIGdlbidz
IGFyZ3VtZW50cy4KICAgICAgICAgLy8gICAgICAgICAgICAgICAgLi4uCkBAIC0zMDMsMjggKzMx
MiwxNyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5j
dGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAgICAgICByZXR1cm4gY2FwdHVyZXMo
dWlkKSA/IFZhcktpbmQ6OlNjb3BlIDogVmFyS2luZDo6U3RhY2s7CiAgICAgfTsKIAotICAgIGVt
aXRFbnRlcigpOwotCi0gICAgYWxsb2NhdGVBbmRFbWl0U2NvcGUoKTsKLQogICAgIG1fY2FsbGVl
UmVnaXN0ZXIuc2V0SW5kZXgoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlKTsKIAogICAgIGluaXRpYWxp
emVQYXJhbWV0ZXJzKHBhcmFtZXRlcnMpOwogICAgIEFTU0VSVCghKGlzU2ltcGxlUGFyYW1ldGVy
TGlzdCAmJiBtX3Jlc3RQYXJhbWV0ZXIpKTsKIAotICAgIC8vIEJlZm9yZSBlbWl0dGluZyBhIHNj
b3BlIGNyZWF0aW9uLCBlbWl0IGEgZ2VuZXJhdG9yIHByb2xvZ3VlIHRoYXQgY29udGFpbnMganVt
cCBiYXNlZCBvbiBhIGdlbmVyYXRvcidzIHN0YXRlLgotICAgIGlmIChwYXJzZU1vZGUgPT0gU291
cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JCb2R5TW9kZSkgewotICAgICAgICBtX2dlbmVyYXRvclJl
Z2lzdGVyID0gJm1fcGFyYW1ldGVyc1sxXTsKLQotICAgICAgICAvLyBKdW1wIHdpdGggc3dpdGNo
X2ltbSBiYXNlZCBvbiBAZ2VuZXJhdG9yU3RhdGUuIFdlIGRvbid0IHRha2UgdGhlIGNvcm91dGlu
ZSBzdHlsZWQgZ2VuZXJhdG9yIGltcGxlbWVudGF0aW9uLgotICAgICAgICAvLyBXaGVuIGNhbGxp
bmcgYG5leHQoKWAsIHdlIHdvdWxkIGxpa2UgdG8gZW50ZXIgdGhlIHNhbWUgcHJvbG9ndWUgaW5z
dGVhZCBvZiBqdW1waW5nIGJhc2VkIG9uIHRoZSBzYXZlZCBpbnN0cnVjdGlvbiBwb2ludGVyLgot
ICAgICAgICAvLyBJdCdzIHN1aXRhbGUgZm9yIGlubGluaW5nLCBiZWNhdXNlIGl0IGp1c3QgaW5s
aW5lcyBvbmUgYG5leHRgIGZ1bmN0aW9uIGltcGxlbWVudGF0aW9uLgorICAgIGVtaXRFbnRlcigp
OwogCi0gICAgICAgIGJlZ2luR2VuZXJhdG9yKGdlbmVyYXRvclN0YXRlUmVnaXN0ZXIoKSk7Cisg
ICAgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckJvZHlNb2RlKQor
ICAgICAgICBtX2dlbmVyYXRvclJlZ2lzdGVyID0gJm1fcGFyYW1ldGVyc1sxXTsKIAotICAgICAg
ICAvLyBJbml0aWFsIHN0YXRlLgotICAgICAgICBlbWl0R2VuZXJhdG9yU3RhdGVMYWJlbCgpOwot
ICAgIH0KKyAgICBhbGxvY2F0ZUFuZEVtaXRTY29wZSgpOwogCiAgICAgaWYgKGZ1bmN0aW9uTmFt
ZUlzSW5TY29wZShmdW5jdGlvbk5vZGUtPmlkZW50KCksIGZ1bmN0aW9uTm9kZS0+ZnVuY3Rpb25N
b2RlKCkpKSB7CiAgICAgICAgIEFTU0VSVChwYXJzZU1vZGUgIT0gU291cmNlUGFyc2VNb2RlOjpH
ZW5lcmF0b3JCb2R5TW9kZSk7CkBAIC02NDEsNiArNjM5LDE2IEBAIEJ5dGVjb2RlR2VuZXJhdG9y
OjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBV
bmxpbmtlCiAgICAgICAgICAgICBlbWl0TG9hZE5ld1RhcmdldEZyb21BcnJvd0Z1bmN0aW9uTGV4
aWNhbEVudmlyb25tZW50KCk7CiAgICAgfQogICAgIAorICAgIC8vIFNldCB1cCB0aGUgbGV4aWNh
bCBlbnZpcm9ubWVudCBzY29wZSBhcyB0aGUgZ2VuZXJhdG9yIGZyYW1lLiBXZSBzdG9yZSB0aGUg
c2F2ZWQgYW5kIHJlc3VtZWQgZ2VuZXJhdG9yIHJlZ2lzdGVycyBpbnRvIHRoaXMgc2NvcGUgd2l0
aCB0aGUgc3ltYm9sIGtleXMuCisgICAgLy8gU2luY2UgdGhleSBhcmUgc3ltYm9sIGtleWVkLCB0
aGVzZSB2YXJpYWJsZXMgY2Fubm90IGJlIHJlYWNoZWQgZnJvbSB0aGUgdXN1YWwgY29kZS4KKyAg
ICBpZiAoU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JCb2R5TW9kZSA9PSBwYXJzZU1vZGUpIHsK
KyAgICAgICAgQVNTRVJUKG1fbGV4aWNhbEVudmlyb25tZW50UmVnaXN0ZXIpOworICAgICAgICBt
X2dlbmVyYXRvckZyYW1lU3ltYm9sVGFibGUuc2V0KCptX3ZtLCBmdW5jdGlvblN5bWJvbFRhYmxl
KTsKKyAgICAgICAgbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlSW5kZXggPSBzeW1ib2xUYWJs
ZUNvbnN0YW50SW5kZXg7CisgICAgICAgIGVtaXRNb3ZlKGdlbmVyYXRvckZyYW1lUmVnaXN0ZXIo
KSwgbV9sZXhpY2FsRW52aXJvbm1lbnRSZWdpc3Rlcik7CisgICAgICAgIGVtaXRQdXRCeUlkKGdl
bmVyYXRvclJlZ2lzdGVyKCksIHByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5nZW5lcmF0
b3JGcmFtZVByaXZhdGVOYW1lKCksIGdlbmVyYXRvckZyYW1lUmVnaXN0ZXIoKSk7CisgICAgfQor
CiAgICAgYm9vbCBzaG91bGRJbml0aWFsaXplQmxvY2tTY29wZWRGdW5jdGlvbnMgPSBmYWxzZTsg
Ly8gV2UgZ2VuZXJhdGUgdG9wLWxldmVsIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucyBpbiA6OmdlbmVy
YXRlKCkuCiAgICAgcHVzaExleGljYWxTY29wZShtX3Njb3BlTm9kZSwgVERaQ2hlY2tPcHRpbWl6
YXRpb246Ok9wdGltaXplLCBOZXN0ZWRTY29wZVR5cGU6OklzTm90TmVzdGVkLCBudWxscHRyLCBz
aG91bGRJbml0aWFsaXplQmxvY2tTY29wZWRGdW5jdGlvbnMpOwogfQpAQCAtMzY3Miw4ICszNjgw
LDcgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENvbXBsZXhQb3BTY29wZXMoUmVnaXN0
ZXJJRCogc2NvcGUsIENvbnRyb2xGbG93Q29udGUKICAgICAgICAgICAgIGlmIChmbGlwVHJpZXMp
IHsKICAgICAgICAgICAgICAgICB3aGlsZSAobV90cnlDb250ZXh0U3RhY2suc2l6ZSgpICE9IGZp
bmFsbHlDb250ZXh0LnRyeUNvbnRleHRTdGFja1NpemUpIHsKICAgICAgICAgICAgICAgICAgICAg
QVNTRVJUKG1fdHJ5Q29udGV4dFN0YWNrLnNpemUoKSA+IGZpbmFsbHlDb250ZXh0LnRyeUNvbnRl
eHRTdGFja1NpemUpOwotICAgICAgICAgICAgICAgICAgICBUcnlDb250ZXh0IGNvbnRleHQgPSBt
X3RyeUNvbnRleHRTdGFjay5sYXN0KCk7Ci0gICAgICAgICAgICAgICAgICAgIG1fdHJ5Q29udGV4
dFN0YWNrLnJlbW92ZUxhc3QoKTsKKyAgICAgICAgICAgICAgICAgICAgVHJ5Q29udGV4dCBjb250
ZXh0ID0gbV90cnlDb250ZXh0U3RhY2sudGFrZUxhc3QoKTsKICAgICAgICAgICAgICAgICAgICAg
VHJ5UmFuZ2UgcmFuZ2U7CiAgICAgICAgICAgICAgICAgICAgIHJhbmdlLnN0YXJ0ID0gY29udGV4
dC5zdGFydDsKICAgICAgICAgICAgICAgICAgICAgcmFuZ2UuZW5kID0gYmVmb3JlRmluYWxseTsK
QEAgLTM5NTcsNyArMzk2NCw3IEBAIHN0YXRpYyB2b2lkIHByZXBhcmVKdW1wVGFibGVGb3JTdHJp
bmdTd2l0Y2goVW5saW5rZWRTdHJpbmdKdW1wVGFibGUmIGp1bXBUYWJsZSwKICAgICAgICAgCiAg
ICAgICAgIEFTU0VSVChub2Rlc1tpXS0+aXNTdHJpbmcoKSk7CiAgICAgICAgIFN0cmluZ0ltcGwq
IGNsYXVzZSA9IHN0YXRpY19jYXN0PFN0cmluZ05vZGUqPihub2Rlc1tpXSktPnZhbHVlKCkuaW1w
bCgpOwotICAgICAgICBqdW1wVGFibGUub2Zmc2V0VGFibGUuYWRkKGNsYXVzZSwgbGFiZWxzW2ld
LT5iaW5kKHN3aXRjaEFkZHJlc3MsIHN3aXRjaEFkZHJlc3MgKyAzKSk7CisgICAgICAgIGp1bXBU
YWJsZS5vZmZzZXRUYWJsZS5hZGQoY2xhdXNlLCBVbmxpbmtlZFN0cmluZ0p1bXBUYWJsZTo6T2Zm
c2V0TG9jYXRpb24geyBsYWJlbHNbaV0tPmJpbmQoc3dpdGNoQWRkcmVzcywgc3dpdGNoQWRkcmVz
cyArIDMpIH0pOwogICAgIH0KIH0KIApAQCAtNDQ1OSwzMSArNDQ2NiwzMyBAQCB2b2lkIEJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0UmVxdWlyZU9iamVjdENvZXJjaWJsZShSZWdpc3RlcklEKiB2YWx1
ZSwgY29uc3QgU3RyaQogdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFlpZWxkUG9pbnQoUmVn
aXN0ZXJJRCogYXJndW1lbnQpCiB7CiAgICAgUmVmUHRyPExhYmVsPiBtZXJnZVBvaW50ID0gbmV3
TGFiZWwoKTsKLSAgICBzaXplX3QgeWllbGRQb2ludEluZGV4ID0gbV9nZW5lcmF0b3JSZXN1bWVM
YWJlbHMuc2l6ZSgpOwotICAgIGVtaXRHZW5lcmF0b3JTdGF0ZUNoYW5nZSh5aWVsZFBvaW50SW5k
ZXgpOwotICAgIC8vIEZpcnN0IHlpZWxkIHBvaW50IGlzIHVzZWQgZm9yIGluaXRpYWwgc2VxdWVu
Y2UuCi0gICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0geWllbGRQb2ludEluZGV4
IC0gMTsKLSAgICBlbWl0U2F2ZShtZXJnZVBvaW50LmdldCgpLCBsaXZlQ2FsbGVlTG9jYWxzSW5k
ZXgpOwotICAgIGVtaXRSZXR1cm4oYXJndW1lbnQpOwotICAgIGVtaXRSZXN1bWUobWVyZ2VQb2lu
dC5nZXQoKSwgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4KTsKLX0KKyAgICB1bnNpZ25lZCB5aWVsZFBv
aW50SW5kZXggPSBtX3lpZWxkUG9pbnRzKys7CisgICAgZW1pdEdlbmVyYXRvclN0YXRlQ2hhbmdl
KHlpZWxkUG9pbnRJbmRleCArIDEpOworCisgICAgLy8gU3BsaXQgdGhlIHRyeSByYW5nZSBoZXJl
LgorICAgIFJlZlB0cjxMYWJlbD4gc2F2ZVBvaW50ID0gZW1pdExhYmVsKG5ld0xhYmVsKCkuZ2V0
KCkpOworICAgIGZvciAodW5zaWduZWQgaSA9IG1fdHJ5Q29udGV4dFN0YWNrLnNpemUoKTsgaS0t
OykgeworICAgICAgICBUcnlDb250ZXh0JiBjb250ZXh0ID0gbV90cnlDb250ZXh0U3RhY2tbaV07
CisgICAgICAgIFRyeVJhbmdlIHJhbmdlOworICAgICAgICByYW5nZS5zdGFydCA9IGNvbnRleHQu
c3RhcnQ7CisgICAgICAgIHJhbmdlLmVuZCA9IHNhdmVQb2ludDsKKyAgICAgICAgcmFuZ2UudHJ5
RGF0YSA9IGNvbnRleHQudHJ5RGF0YTsKKyAgICAgICAgbV90cnlSYW5nZXMuYXBwZW5kKHJhbmdl
KTsKKworICAgICAgICAvLyBUcnkgcmFuZ2Ugd2lsbCBiZSByZXN0YXJlZCBhdCB0aGUgbWVyZ2Ug
cG9pbnQuCisgICAgICAgIGNvbnRleHQuc3RhcnQgPSBtZXJnZVBvaW50OworICAgIH0KKyAgICBW
ZWN0b3I8VHJ5Q29udGV4dD4gc2F2ZWRUcnlDb250ZXh0U3RhY2s7CisgICAgbV90cnlDb250ZXh0
U3RhY2suc3dhcChzYXZlZFRyeUNvbnRleHRTdGFjayk7CiAKLXZvaWQgQnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXRTYXZlKExhYmVsKiBtZXJnZVBvaW50LCB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxz
SW5kZXgpCi17Ci0gICAgc2l6ZV90IGJlZ2luID0gaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpOwotICAg
IGVtaXRPcGNvZGUob3Bfc2F2ZSk7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fZ2VuZXJh
dG9yUmVnaXN0ZXItPmluZGV4KCkpOwotICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChsaXZlQ2Fs
bGVlTG9jYWxzSW5kZXgpOwotICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChtZXJnZVBvaW50LT5i
aW5kKGJlZ2luLCBpbnN0cnVjdGlvbnMoKS5zaXplKCkpKTsKLX0KKyAgICBlbWl0T3Bjb2RlKG9w
X3lpZWxkKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZ2VuZXJhdG9yRnJhbWVSZWdpc3Rl
cigpLT5pbmRleCgpKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoeWllbGRQb2ludEluZGV4
KTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYXJndW1lbnQtPmluZGV4KCkpOwogCi12b2lk
IEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzdW1lKExhYmVsKiBtZXJnZVBvaW50LCB1bnNpZ25l
ZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpCi17Ci0gICAgZW1pdEdlbmVyYXRvclN0YXRlTGFiZWwo
KTsKLSAgICBlbWl0T3Bjb2RlKG9wX3Jlc3VtZSk7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5k
KG1fZ2VuZXJhdG9yUmVnaXN0ZXItPmluZGV4KCkpOwotICAgIGluc3RydWN0aW9ucygpLmFwcGVu
ZChsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpOwotICAgIGVtaXRMYWJlbChtZXJnZVBvaW50KTsKKyAg
ICAvLyBSZXN0b3JlIHRoZSB0cnkgY29udGV4dHMsIHdoaWNoIHN0YXJ0IG9mZnNldCBpcyB1cGRh
dGVkIHRvIHRoZSBtZXJnZSBwb2ludC4KKyAgICBtX3RyeUNvbnRleHRTdGFjay5zd2FwKHNhdmVk
VHJ5Q29udGV4dFN0YWNrKTsKKyAgICBlbWl0TGFiZWwobWVyZ2VQb2ludC5nZXQoKSk7CiB9CiAK
IFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0WWllbGQoUmVnaXN0ZXJJRCogYXJn
dW1lbnQpCkBAIC00NjQwLDM5ICs0NjQ5LDYgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dEdlbmVyYXRvclN0YXRlQ2hhbmdlKGludDMyX3Qgc3RhdGUpCiAgICAgZW1pdFB1dEJ5SWQoZ2Vu
ZXJhdG9yUmVnaXN0ZXIoKSwgcHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRv
clN0YXRlUHJpdmF0ZU5hbWUoKSwgY29tcGxldGVkU3RhdGUpOwogfQogCi12b2lkIEJ5dGVjb2Rl
R2VuZXJhdG9yOjplbWl0R2VuZXJhdG9yU3RhdGVMYWJlbCgpCi17Ci0gICAgUmVmUHRyPExhYmVs
PiBsYWJlbCA9IG5ld0xhYmVsKCk7Ci0gICAgbV9nZW5lcmF0b3JSZXN1bWVMYWJlbHMuYXBwZW5k
KGxhYmVsLmdldCgpKTsKLSAgICBlbWl0TGFiZWwobGFiZWwuZ2V0KCkpOwotfQotCi12b2lkIEJ5
dGVjb2RlR2VuZXJhdG9yOjpiZWdpbkdlbmVyYXRvcihSZWdpc3RlcklEKiBzdGF0ZSkKLXsKLSAg
ICBiZWdpblN3aXRjaChzdGF0ZSwgU3dpdGNoSW5mbzo6U3dpdGNoSW1tZWRpYXRlKTsKLX0KLQot
dm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW5kR2VuZXJhdG9yKExhYmVsKiBkZWZhdWx0TGFiZWwp
Ci17Ci0gICAgU3dpdGNoSW5mbyBzd2l0Y2hJbmZvID0gbV9zd2l0Y2hDb250ZXh0U3RhY2subGFz
dCgpOwotICAgIG1fc3dpdGNoQ29udGV4dFN0YWNrLnJlbW92ZUxhc3QoKTsKLQotICAgIGluc3Ry
dWN0aW9ucygpW3N3aXRjaEluZm8uYnl0ZWNvZGVPZmZzZXQgKyAxXSA9IG1fY29kZUJsb2NrLT5u
dW1iZXJPZlN3aXRjaEp1bXBUYWJsZXMoKTsKLSAgICBpbnN0cnVjdGlvbnMoKVtzd2l0Y2hJbmZv
LmJ5dGVjb2RlT2Zmc2V0ICsgMl0gPSBkZWZhdWx0TGFiZWwtPmJpbmQoc3dpdGNoSW5mby5ieXRl
Y29kZU9mZnNldCwgc3dpdGNoSW5mby5ieXRlY29kZU9mZnNldCArIDMpOwotCi0gICAgVW5saW5r
ZWRTaW1wbGVKdW1wVGFibGUmIGp1bXBUYWJsZSA9IG1fY29kZUJsb2NrLT5hZGRTd2l0Y2hKdW1w
VGFibGUoKTsKLSAgICBpbnQzMl90IHN3aXRjaEFkZHJlc3MgPSBzd2l0Y2hJbmZvLmJ5dGVjb2Rl
T2Zmc2V0OwotICAgIGp1bXBUYWJsZS5taW4gPSAwOwotICAgIGp1bXBUYWJsZS5icmFuY2hPZmZz
ZXRzLnJlc2l6ZShtX2dlbmVyYXRvclJlc3VtZUxhYmVscy5zaXplKCkgKyAxKTsKLSAgICBqdW1w
VGFibGUuYnJhbmNoT2Zmc2V0cy5maWxsKDApOwotICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkg
PCBtX2dlbmVyYXRvclJlc3VtZUxhYmVscy5zaXplKCk7ICsraSkgewotICAgICAgICAvLyBXZSdy
ZSBlbWl0dGluZyB0aGlzIGFmdGVyIHRoZSBjbGF1c2UgbGFiZWxzIHNob3VsZCBoYXZlIGJlZW4g
Zml4ZWQsIHNvCi0gICAgICAgIC8vIHRoZSBsYWJlbHMgc2hvdWxkIG5vdCBiZSAiZm9yd2FyZCIg
cmVmZXJlbmNlcwotICAgICAgICBBU1NFUlQoIW1fZ2VuZXJhdG9yUmVzdW1lTGFiZWxzW2ldLT5p
c0ZvcndhcmQoKSk7Ci0gICAgICAgIGp1bXBUYWJsZS5hZGQoaSwgbV9nZW5lcmF0b3JSZXN1bWVM
YWJlbHNbaV0tPmJpbmQoc3dpdGNoQWRkcmVzcywgc3dpdGNoQWRkcmVzcyArIDMpKTsKLSAgICB9
Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIEpTQwogCiBuYW1lc3BhY2UgV1RGIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApp
bmRleCBmZmY3MTNhYTI1ZTcxZGYyY2Y0Y2I1MzA4ZTYxNjlhNTNhZjY1MWJlLi5iMWI5NDNkYTVl
MDY3ZWNkZDQ5Njc0ODExNDVjZTlkYjAwNzVhMmFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCkBAIC0zNCw2ICsz
NCw3IEBACiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiSW5zdHJ1Y3Rpb24uaCIK
ICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgorI2luY2x1ZGUgIkpTR2VuZXJhdG9yRnVuY3Rpb24u
aCIKICNpbmNsdWRlICJMYWJlbC5oIgogI2luY2x1ZGUgIkxhYmVsU2NvcGUuaCIKICNpbmNsdWRl
ICJOb2Rlcy5oIgpAQCAtNjkwLDE4ICs2OTEsMTUgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IHZvaWQgZW5kU3dpdGNoKHVpbnQzMl90IGNsYXVzZUNvdW50LCBSZWZQdHI8TGFiZWw+KiwgRXhw
cmVzc2lvbk5vZGUqKiwgTGFiZWwqIGRlZmF1bHRMYWJlbCwgaW50MzJfdCBtaW4sIGludDMyX3Qg
cmFuZ2UpOwogCiAgICAgICAgIHZvaWQgZW1pdFlpZWxkUG9pbnQoUmVnaXN0ZXJJRCopOwotICAg
ICAgICB2b2lkIGVtaXRTYXZlKExhYmVsKiBtZXJnZVBvaW50LCB1bnNpZ25lZCBsaXZlQ2FsbGVl
TG9jYWxzSW5kZXgpOwotICAgICAgICB2b2lkIGVtaXRSZXN1bWUoTGFiZWwqIG1lcmdlUG9pbnQs
IHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCk7CiAKICAgICAgICAgdm9pZCBlbWl0R2Vu
ZXJhdG9yU3RhdGVMYWJlbCgpOwogICAgICAgICB2b2lkIGVtaXRHZW5lcmF0b3JTdGF0ZUNoYW5n
ZShpbnQzMl90IHN0YXRlKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFlpZWxkKFJlZ2lzdGVy
SUQqIGFyZ3VtZW50KTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdERlbGVnYXRlWWllbGQoUmVn
aXN0ZXJJRCogYXJndW1lbnQsIFRocm93YWJsZUV4cHJlc3Npb25EYXRhKik7Ci0gICAgICAgIHZv
aWQgYmVnaW5HZW5lcmF0b3IoUmVnaXN0ZXJJRCopOwotICAgICAgICB2b2lkIGVuZEdlbmVyYXRv
cihMYWJlbCogZGVmYXVsdExhYmVsKTsKLSAgICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9yU3Rh
dGVSZWdpc3RlcigpIHsgcmV0dXJuICZtX3BhcmFtZXRlcnNbMl07IH0KLSAgICAgICAgUmVnaXN0
ZXJJRCogZ2VuZXJhdG9yVmFsdWVSZWdpc3RlcigpIHsgcmV0dXJuICZtX3BhcmFtZXRlcnNbM107
IH0KLSAgICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKCkgeyBy
ZXR1cm4gJm1fcGFyYW1ldGVyc1s0XTsgfQorICAgICAgICBSZWdpc3RlcklEKiBnZW5lcmF0b3JT
dGF0ZVJlZ2lzdGVyKCkgeyByZXR1cm4gJm1fcGFyYW1ldGVyc1tzdGF0aWNfY2FzdDxpbnQzMl90
PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JBcmd1bWVudDo6U3RhdGUpXTsgfQorICAg
ICAgICBSZWdpc3RlcklEKiBnZW5lcmF0b3JWYWx1ZVJlZ2lzdGVyKCkgeyByZXR1cm4gJm1fcGFy
YW1ldGVyc1tzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0
b3JBcmd1bWVudDo6VmFsdWUpXTsgfQorICAgICAgICBSZWdpc3RlcklEKiBnZW5lcmF0b3JSZXN1
bWVNb2RlUmVnaXN0ZXIoKSB7IHJldHVybiAmbV9wYXJhbWV0ZXJzW3N0YXRpY19jYXN0PGludDMy
X3Q+KEpTR2VuZXJhdG9yRnVuY3Rpb246OkdlbmVyYXRvckFyZ3VtZW50OjpSZXN1bWVNb2RlKV07
IH0KKyAgICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9yRnJhbWVSZWdpc3RlcigpIHsgcmV0dXJu
ICZtX3BhcmFtZXRlcnNbc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6
R2VuZXJhdG9yQXJndW1lbnQ6OkZyYW1lKV07IH0KIAogICAgICAgICBDb2RlVHlwZSBjb2RlVHlw
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZVR5cGU7IH0KIApAQCAtOTI5LDcgKzkyNywxMSBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgVmVjdG9yPFN3aXRjaEluZm8+IG1fc3dpdGNoQ29udGV4
dFN0YWNrOwogICAgICAgICBWZWN0b3I8UmVmUHRyPEZvckluQ29udGV4dD4+IG1fZm9ySW5Db250
ZXh0U3RhY2s7CiAgICAgICAgIFZlY3RvcjxUcnlDb250ZXh0PiBtX3RyeUNvbnRleHRTdGFjazsK
LSAgICAgICAgVmVjdG9yPFJlZlB0cjxMYWJlbD4+IG1fZ2VuZXJhdG9yUmVzdW1lTGFiZWxzOwor
ICAgICAgICB1bnNpZ25lZCBtX3lpZWxkUG9pbnRzIHsgMCB9OworCisgICAgICAgIFN0cm9uZzxT
eW1ib2xUYWJsZT4gbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlOworICAgICAgICBpbnQgbV9n
ZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlSW5kZXggeyAwIH07CisKICAgICAgICAgZW51bSBGdW5j
dGlvblZhcmlhYmxlVHlwZSA6IHVpbnQ4X3QgeyBOb3JtYWxGdW5jdGlvblZhcmlhYmxlLCBHbG9i
YWxGdW5jdGlvblZhcmlhYmxlIH07CiAgICAgICAgIFZlY3RvcjxzdGQ6OnBhaXI8RnVuY3Rpb25N
ZXRhZGF0YU5vZGUqLCBGdW5jdGlvblZhcmlhYmxlVHlwZT4+IG1fZnVuY3Rpb25zVG9Jbml0aWFs
aXplOwogICAgICAgICBib29sIG1fbmVlZFRvSW5pdGlhbGl6ZUFyZ3VtZW50cyB7IGZhbHNlIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29k
ZWdlbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdl
bi5jcHAKaW5kZXggZDBjOTllZmY1ZTc0ZjAyYzM4M2NjNTExZGUxN2I4ZDJiNmU3N2U0Zi4uYmNk
YWEyNzJjYjk1MDg1ODYwOGNhMmE3NTdmN2M0NjRlNDc2ZGZmNSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcApAQCAtMzM3Nyw3
ICszMzc3LDYgQEAgdm9pZCBGdW5jdGlvbk5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVy
YXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKikKICAgICAgICAgUmVmUHRyPExhYmVsPiBkb25l
ID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoZG9u
ZS5nZXQoKSk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0UmV0dXJuKGdlbmVyYXRvci5lbWl0TG9h
ZChudWxscHRyLCBqc1VuZGVmaW5lZCgpKSk7Ci0gICAgICAgIGdlbmVyYXRvci5lbmRHZW5lcmF0
b3IoZG9uZS5nZXQoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKaW5kZXggN2NmNjg3MDk2YzQzMzYwOWI1MGQx
ZjQwOWE5ODkzZjIwMDA5NTI2OS4uMjUxZTdhYjFiZGM2MTg5MmZlMmUyNjhjMDRkOTIxYjYzMDk5
ZGUwMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25z
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCkBA
IC00Miw4ICs0Miw4IEBACiAjaW5jbHVkZSAiRGlyZWN0QXJndW1lbnRzLmgiCiAjaW5jbHVkZSAi
RlRMRm9yT1NSRW50cnlKSVRDb2RlLmgiCiAjaW5jbHVkZSAiRlRMT1NSRW50cnkuaCIKLSNpbmNs
dWRlICJIb3N0Q2FsbFJldHVyblZhbHVlLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCisj
aW5jbHVkZSAiSG9zdENhbGxSZXR1cm5WYWx1ZS5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgi
CiAjaW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSklURXhjZXB0aW9ucy5oIgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKaW5kZXggMWFh
ZjE3NzIzZmUxZTg4MjBmNDc3YWIwODU0ODRiNWY1ZjI3Njc5Ny4uMmYwZTZmMmZjN2U5OTY0M2Jj
YTJhOWY0NDgwNDhlZDg2NmMyOGZhYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCkBAIC02MDksNyArNjA5LDcgQEAgSlNTdHJpbmcq
IEludGVycHJldGVyOjpzdGFja1RyYWNlQXNTdHJpbmcoVk0mIHZtLCBjb25zdCBWZWN0b3I8U3Rh
Y2tGcmFtZT4mIHN0YWMKICAgICByZXR1cm4ganNTdHJpbmcoJnZtLCBidWlsZGVyLnRvU3RyaW5n
KCkpOwogfQogCi1BTFdBWVNfSU5MSU5FIHN0YXRpYyBIYW5kbGVySW5mbyogZmluZEV4Y2VwdGlv
bkhhbmRsZXIoU3RhY2tWaXNpdG9yJiB2aXNpdG9yLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29k
ZUJsb2NrOjpSZXF1aXJlZEhhbmRsZXIgcmVxdWlyZWRIYW5kbGVyKQorQUxXQVlTX0lOTElORSBz
dGF0aWMgSGFuZGxlckluZm8qIGZpbmRFeGNlcHRpb25IYW5kbGVyKFN0YWNrVmlzaXRvciYgdmlz
aXRvciwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFJlcXVpcmVkSGFuZGxlciByZXF1aXJlZEhhbmRs
ZXIpCiB7CiAgICAgQVNTRVJUKGNvZGVCbG9jayk7CiAjaWYgRU5BQkxFKERGR19KSVQpCkBAIC02
NDMsNyArNjQzLDcgQEAgY2xhc3MgR2V0Q2F0Y2hIYW5kbGVyRnVuY3RvciB7CiAgICAgICAgIGlm
ICghY29kZUJsb2NrKQogICAgICAgICAgICAgcmV0dXJuIFN0YWNrVmlzaXRvcjo6Q29udGludWU7
CiAKLSAgICAgICAgbV9oYW5kbGVyID0gZmluZEV4Y2VwdGlvbkhhbmRsZXIodmlzaXRvciwgY29k
ZUJsb2NrLCBDb2RlQmxvY2s6OlJlcXVpcmVkSGFuZGxlcjo6Q2F0Y2hIYW5kbGVyKTsKKyAgICAg
ICAgbV9oYW5kbGVyID0gZmluZEV4Y2VwdGlvbkhhbmRsZXIodmlzaXRvciwgY29kZUJsb2NrLCBS
ZXF1aXJlZEhhbmRsZXI6OkNhdGNoSGFuZGxlcik7CiAgICAgICAgIGlmIChtX2hhbmRsZXIpCiAg
ICAgICAgICAgICByZXR1cm4gU3RhY2tWaXNpdG9yOjpEb25lOwogCkBAIC02ODUsNyArNjg1LDcg
QEAgY2xhc3MgVW53aW5kRnVuY3RvciB7CiAgICAgICAgIG1faGFuZGxlciA9IG51bGxwdHI7CiAg
ICAgICAgIGlmICghbV9pc1Rlcm1pbmF0aW9uKSB7CiAgICAgICAgICAgICBpZiAobV9jb2RlQmxv
Y2sgJiYgIWlzV2ViQXNzZW1ibHlFeGVjdXRhYmxlKG1fY29kZUJsb2NrLT5vd25lckV4ZWN1dGFi
bGUoKSkpCi0gICAgICAgICAgICAgICAgbV9oYW5kbGVyID0gZmluZEV4Y2VwdGlvbkhhbmRsZXIo
dmlzaXRvciwgbV9jb2RlQmxvY2ssIENvZGVCbG9jazo6UmVxdWlyZWRIYW5kbGVyOjpBbnlIYW5k
bGVyKTsKKyAgICAgICAgICAgICAgICBtX2hhbmRsZXIgPSBmaW5kRXhjZXB0aW9uSGFuZGxlcih2
aXNpdG9yLCBtX2NvZGVCbG9jaywgUmVxdWlyZWRIYW5kbGVyOjpBbnlIYW5kbGVyKTsKICAgICAg
ICAgfQogCiAgICAgICAgIGlmIChtX2hhbmRsZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCmluZGV4IDc5YzdlNTMwMWJhODM5NmJjMDJkYzI0
NWUwODFjN2Y3YTM3MzhlNmMuLjNkZjAwNjc3NmY2MWE0YjViNGI3YzI0OGU3NWNhYjFhOGMzMDkz
MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnBy
ZXRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRl
ci5oCkBAIC02NSw2ICs2NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHN0cnVjdCBIYW5kbGVy
SW5mbzsKICAgICBzdHJ1Y3QgSW5zdHJ1Y3Rpb247CiAgICAgc3RydWN0IFByb3RvQ2FsbEZyYW1l
OworICAgIHN0cnVjdCBVbmxpbmtlZEluc3RydWN0aW9uOwogCiAgICAgZW51bSBVbndpbmRTdGFy
dCB7IFVud2luZEZyb21DdXJyZW50RnJhbWUsIFVud2luZEZyb21DYWxsZXJGcmFtZSB9OwogCkBA
IC0yMDcsNyArMjA4LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIG9w
Y29kZTsKICNlbmRpZgogICAgICAgICB9Ci0gICAgICAgIAorCisgICAgICAgIE9wY29kZUlEIGdl
dE9wY29kZUlEKGNvbnN0IEluc3RydWN0aW9uJik7CisgICAgICAgIE9wY29kZUlEIGdldE9wY29k
ZUlEKGNvbnN0IFVubGlua2VkSW5zdHJ1Y3Rpb24mKTsKKwogICAgICAgICBib29sIGlzT3Bjb2Rl
KE9wY29kZSk7CiAKICAgICAgICAgSlNWYWx1ZSBleGVjdXRlKFByb2dyYW1FeGVjdXRhYmxlKiwg
Q2FsbEZyYW1lKiwgSlNPYmplY3QqIHRoaXNPYmopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVySW5saW5lcy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVySW5saW5lcy5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE3
N2MxNTQ3OTBhNjdmYjQxY2M5ZTJkMDlhMWRiZGZkZGZhNTliZGYKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXJJbmxpbmVzLmgK
QEAgLTAsMCArMSw0NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBZdXN1a2UgU3V6dWtp
IDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkluc3RydWN0aW9uLmgiCisjaW5j
bHVkZSAiSW50ZXJwcmV0ZXIuaCIKKyNpbmNsdWRlICJVbmxpbmtlZENvZGVCbG9jay5oIgorCitu
YW1lc3BhY2UgSlNDIHsKKworaW5saW5lIE9wY29kZUlEIEludGVycHJldGVyOjpnZXRPcGNvZGVJ
RChjb25zdCBJbnN0cnVjdGlvbiYgaW5zdHJ1Y3Rpb24pCit7CisgICAgcmV0dXJuIGdldE9wY29k
ZUlEKGluc3RydWN0aW9uLnUub3Bjb2RlKTsKK30KKworaW5saW5lIE9wY29kZUlEIEludGVycHJl
dGVyOjpnZXRPcGNvZGVJRChjb25zdCBVbmxpbmtlZEluc3RydWN0aW9uJiBpbnN0cnVjdGlvbikK
K3sKKyAgICByZXR1cm4gaW5zdHJ1Y3Rpb24udS5vcGNvZGU7Cit9CisKK30gLy8gbmFtZXNwYWNl
IEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCmluZGV4IGIwMGRmYWM4YzE1YzU0N2QyN2Zj
NjY3ZjVjNDU5MGVkMzk5ZGVlNDAuLjEyNDA1ZjdlNTA0YWIzODkzZGQ5N2Q3YTkyOTEzYjA5NWEx
MTU5MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKQEAgLTIzNSw4ICsyMzUsNiBAQCB2
b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9PUChvcF9n
ZXRfcmVzdF9sZW5ndGgpCiAgICAgICAgIERFRklORV9PUChvcF9jaGVja190ZHopCiAgICAgICAg
IERFRklORV9PUChvcF9hc3NlcnQpCi0gICAgICAgIERFRklORV9PUChvcF9zYXZlKQotICAgICAg
ICBERUZJTkVfT1Aob3BfcmVzdW1lKQogICAgICAgICBERUZJTkVfT1Aob3BfZGVidWcpCiAgICAg
ICAgIERFRklORV9PUChvcF9kZWxfYnlfaWQpCiAgICAgICAgIERFRklORV9PUChvcF9kZWxfYnlf
dmFsKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKaW5kZXggYmI5N2RjMzViZGZjMDMzOTlhYTA1MTNh
OWNhNzM1NWQwODMxYzYwZC4uNTFmY2Y2MGI5OWQ0MGIwZTUzZGJjZDIyM2M1NjkyMDI1ZjE0ZWNm
MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCkBAIC00OTcsOCArNDk3LDYgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9nZXRfcmVzdF9sZW5ndGgoSW5zdHJ1Y3Rpb24q
KTsKICAgICAgICAgdm9pZCBlbWl0X29wX2NoZWNrX3RkeihJbnN0cnVjdGlvbiopOwogICAgICAg
ICB2b2lkIGVtaXRfb3BfYXNzZXJ0KEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9v
cF9zYXZlKEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9yZXN1bWUoSW5zdHJ1
Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2RlYnVnKEluc3RydWN0aW9uKik7CiAgICAg
ICAgIHZvaWQgZW1pdF9vcF9kZWxfYnlfaWQoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBl
bWl0X29wX2RlbF9ieV92YWwoSW5zdHJ1Y3Rpb24qKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wY29kZXMuY3BwCmluZGV4IDdmN2M3NDUzYmQzZDJkNTBlMTgwMTgzZjI5NzMxMTVmMTE5
ZDg1MmYuLjJkYmU4NmM2MjRiYzg3ZWJmNzBiODAxZTBhMmNjY2VmNjUxNWJhMjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcApAQCAtMTQ5MiwxOCArMTQ5Miw2IEBA
IHZvaWQgSklUOjplbWl0X29wX2dldF9yZXN0X2xlbmd0aChJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQogI2VuZGlmCiB9CiAKLXZvaWQgSklUOjplbWl0X29wX3NhdmUoSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKLXsKLSAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhD
YWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX3NhdmUpOwotICAgIHNsb3dQ
YXRoQ2FsbC5jYWxsKCk7Ci19Ci0KLXZvaWQgSklUOjplbWl0X29wX3Jlc3VtZShJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQotewotICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENh
bGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfcmVzdW1lKTsKLSAgICBzbG93
UGF0aENhbGwuY2FsbCgpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEVO
QUJMRShKSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlci5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlci5hc20KaW5kZXggMTQ5MThiNjU1ZDVjZmEyMmI4NjE1OGViMmVlYWFmMDg3NDk2
NTZhNy4uYzlmOTY4Nzk1OGQwNmQzMDYwY2Y2OWZlMzc4OWQxYmQwYmY4Yzc5YSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQpA
QCAtMTcwOSwxNiArMTcwOSw4IEBAIF9sbGludF9vcF9hc3NlcnQ6CiAgICAgZGlzcGF0Y2goMykK
IAogCi1fbGxpbnRfb3Bfc2F2ZToKLSAgICB0cmFjZUV4ZWN1dGlvbigpCi0gICAgY2FsbE9wY29k
ZVNsb3dQYXRoKF9zbG93X3BhdGhfc2F2ZSkKLSAgICBkaXNwYXRjaCg0KQotCi0KLV9sbGludF9v
cF9yZXN1bWU6Ci0gICAgdHJhY2VFeGVjdXRpb24oKQotICAgIGNhbGxPcGNvZGVTbG93UGF0aChf
c2xvd19wYXRoX3Jlc3VtZSkKLSAgICBkaXNwYXRjaCgzKQorX2xsaW50X29wX3lpZWxkOgorICAg
IG5vdFN1cHBvcnRlZCgpCiAKIAogX2xsaW50X29wX2NyZWF0ZV9sZXhpY2FsX2Vudmlyb25tZW50
OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCmluZGV4IGViZWE5OGU0ZWUx
M2ZhMTJiZTA5NmJhOTJmNGQ0MTllMzRjZWQxNzAuLjI2MTc0NWExOTAzMTdkZTc1OTEyZTNhOTIz
ZmE5ZjI4ODc0ODYzZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAK
QEAgLTI2MCw3ICsyNjAsNyBAQCBTdHJpbmcgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlSW5uZXIo
Y29uc3QgSWRlbnRpZmllciYgY2FsbGVlTmFtZSwgU291cmNlUGFyc2VNbwogICAgIGlmIChtX2xl
eGVyLT5pc1JlcGFyc2luZ0Z1bmN0aW9uKCkpIHsKICAgICAgICAgUGFyc2VyRnVuY3Rpb25JbmZv
PEFTVEJ1aWxkZXI+IGZ1bmN0aW9uSW5mbzsKICAgICAgICAgaWYgKHBhcnNlTW9kZSA9PSBTb3Vy
Y2VQYXJzZU1vZGU6OkdlbmVyYXRvckJvZHlNb2RlKQotICAgICAgICAgICAgbV9wYXJhbWV0ZXJz
ID0gY3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhjb250ZXh0KTsKKyAgICAgICAgICAgIG1fcGFy
YW1ldGVycyA9IGNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMoY29udGV4dCwgZnVuY3Rpb25JbmZv
LnBhcmFtZXRlckNvdW50KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbV9wYXJhbWV0ZXJz
ID0gcGFyc2VGdW5jdGlvblBhcmFtZXRlcnMoY29udGV4dCwgcGFyc2VNb2RlLCBmdW5jdGlvbklu
Zm8pOwogCkBAIC01MTIsMTAgKzUxMiw5IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4g
VHJlZVNvdXJjZUVsZW1lbnRzIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUdlbmVyYXRvCiAKICAg
ICBQYXJzZXJGdW5jdGlvbkluZm88VHJlZUJ1aWxkZXI+IGluZm87CiAgICAgaW5mby5uYW1lID0g
Jm1fdm0tPnByb3BlcnR5TmFtZXMtPm51bGxJZGVudGlmaWVyOwotICAgIGNyZWF0ZUdlbmVyYXRv
clBhcmFtZXRlcnMoY29udGV4dCk7CisgICAgY3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhjb250
ZXh0LCBpbmZvLnBhcmFtZXRlckNvdW50KTsKICAgICBpbmZvLnN0YXJ0T2Zmc2V0ID0gcGFyYW1l
dGVyc1N0YXJ0OwogICAgIGluZm8uc3RhcnRMaW5lID0gdG9rZW5MaW5lKCk7Ci0gICAgaW5mby5w
YXJhbWV0ZXJDb3VudCA9IDQ7IC8vIGdlbmVyYXRvciwgc3RhdGUsIHZhbHVlLCByZXN1bWUgbW9k
ZQogCiAgICAgewogICAgICAgICBBdXRvUG9wU2NvcGVSZWYgZ2VuZXJhdG9yQm9keVNjb3BlKHRo
aXMsIHB1c2hTY29wZSgpKTsKQEAgLTE5MDMsMzIgKzE5MDIsMzAgQEAgdGVtcGxhdGUgPHR5cGVu
YW1lIExleGVyVHlwZT4gdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyLCBjbGFzcyBGdW5jdGlv
bkluZm9UeXAKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KLXRlbXBsYXRlIDxj
bGFzcyBUcmVlQnVpbGRlcj4gdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkZvcm1hbFBhcmFtZXRlckxp
c3QgUGFyc2VyPExleGVyVHlwZT46OmNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMoVHJlZUJ1aWxk
ZXImIGNvbnRleHQpCit0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IHR5cGVuYW1lIFRyZWVC
dWlsZGVyOjpGb3JtYWxQYXJhbWV0ZXJMaXN0IFBhcnNlcjxMZXhlclR5cGU+OjpjcmVhdGVHZW5l
cmF0b3JQYXJhbWV0ZXJzKFRyZWVCdWlsZGVyJiBjb250ZXh0LCB1bnNpZ25lZCYgcGFyYW1ldGVy
Q291bnQpCiB7CiAgICAgYXV0byBwYXJhbWV0ZXJzID0gY29udGV4dC5jcmVhdGVGb3JtYWxQYXJh
bWV0ZXJMaXN0KCk7CiAKICAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb24odG9rZW5Mb2NhdGlv
bigpKTsKICAgICBKU1RleHRQb3NpdGlvbiBwb3NpdGlvbiA9IHRva2VuU3RhcnRQb3NpdGlvbigp
OwogCi0gICAgLy8gQGdlbmVyYXRvcgotICAgIGRlY2xhcmVQYXJhbWV0ZXIoJm1fdm0tPnByb3Bl
cnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclByaXZhdGVOYW1lKCkpOwotICAgIGF1
dG8gZ2VuZXJhdG9yID0gY29udGV4dC5jcmVhdGVCaW5kaW5nTG9jYXRpb24obG9jYXRpb24sIG1f
dm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclByaXZhdGVOYW1lKCks
IHBvc2l0aW9uLCBwb3NpdGlvbiwgQXNzaWdubWVudENvbnRleHQ6OkRlY2xhcmF0aW9uU3RhdGVt
ZW50KTsKLSAgICBjb250ZXh0LmFwcGVuZFBhcmFtZXRlcihwYXJhbWV0ZXJzLCBnZW5lcmF0b3Is
IDApOworICAgIGF1dG8gYWRkUGFyYW1ldGVyID0gWyZdKGNvbnN0IElkZW50aWZpZXImIG5hbWUp
IHsKKyAgICAgICAgZGVjbGFyZVBhcmFtZXRlcigmbmFtZSk7CisgICAgICAgIGF1dG8gYmluZGlu
ZyA9IGNvbnRleHQuY3JlYXRlQmluZGluZ0xvY2F0aW9uKGxvY2F0aW9uLCBuYW1lLCBwb3NpdGlv
biwgcG9zaXRpb24sIEFzc2lnbm1lbnRDb250ZXh0OjpEZWNsYXJhdGlvblN0YXRlbWVudCk7Cisg
ICAgICAgIGNvbnRleHQuYXBwZW5kUGFyYW1ldGVyKHBhcmFtZXRlcnMsIGJpbmRpbmcsIDApOwor
ICAgICAgICArK3BhcmFtZXRlckNvdW50OworICAgIH07CiAKKyAgICAvLyBAZ2VuZXJhdG9yCisg
ICAgYWRkUGFyYW1ldGVyKG1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdlbmVy
YXRvclByaXZhdGVOYW1lKCkpOwogICAgIC8vIEBnZW5lcmF0b3JTdGF0ZQotICAgIGRlY2xhcmVQ
YXJhbWV0ZXIoJm1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclN0
YXRlUHJpdmF0ZU5hbWUoKSk7Ci0gICAgYXV0byBnZW5lcmF0b3JTdGF0ZSA9IGNvbnRleHQuY3Jl
YXRlQmluZGluZ0xvY2F0aW9uKGxvY2F0aW9uLCBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5idWlsdGlu
TmFtZXMoKS5nZW5lcmF0b3JTdGF0ZVByaXZhdGVOYW1lKCksIHBvc2l0aW9uLCBwb3NpdGlvbiwg
QXNzaWdubWVudENvbnRleHQ6OkRlY2xhcmF0aW9uU3RhdGVtZW50KTsKLSAgICBjb250ZXh0LmFw
cGVuZFBhcmFtZXRlcihwYXJhbWV0ZXJzLCBnZW5lcmF0b3JTdGF0ZSwgMCk7Ci0KKyAgICBhZGRQ
YXJhbWV0ZXIobV92bS0+cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yU3Rh
dGVQcml2YXRlTmFtZSgpKTsKICAgICAvLyBAZ2VuZXJhdG9yVmFsdWUKLSAgICBkZWNsYXJlUGFy
YW1ldGVyKCZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JWYWx1
ZVByaXZhdGVOYW1lKCkpOwotICAgIGF1dG8gZ2VuZXJhdG9yVmFsdWUgPSBjb250ZXh0LmNyZWF0
ZUJpbmRpbmdMb2NhdGlvbihsb2NhdGlvbiwgbV92bS0+cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5h
bWVzKCkuZ2VuZXJhdG9yVmFsdWVQcml2YXRlTmFtZSgpLCBwb3NpdGlvbiwgcG9zaXRpb24sIEFz
c2lnbm1lbnRDb250ZXh0OjpEZWNsYXJhdGlvblN0YXRlbWVudCk7Ci0gICAgY29udGV4dC5hcHBl
bmRQYXJhbWV0ZXIocGFyYW1ldGVycywgZ2VuZXJhdG9yVmFsdWUsIDApOwotCisgICAgYWRkUGFy
YW1ldGVyKG1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclZhbHVl
UHJpdmF0ZU5hbWUoKSk7CiAgICAgLy8gQGdlbmVyYXRvclJlc3VtZU1vZGUKLSAgICBkZWNsYXJl
UGFyYW1ldGVyKCZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JS
ZXN1bWVNb2RlUHJpdmF0ZU5hbWUoKSk7Ci0gICAgYXV0byBnZW5lcmF0b3JSZXN1bWVNb2RlID0g
Y29udGV4dC5jcmVhdGVCaW5kaW5nTG9jYXRpb24obG9jYXRpb24sIG1fdm0tPnByb3BlcnR5TmFt
ZXMtPmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclJlc3VtZU1vZGVQcml2YXRlTmFtZSgpLCBwb3Np
dGlvbiwgcG9zaXRpb24sIEFzc2lnbm1lbnRDb250ZXh0OjpEZWNsYXJhdGlvblN0YXRlbWVudCk7
Ci0gICAgY29udGV4dC5hcHBlbmRQYXJhbWV0ZXIocGFyYW1ldGVycywgZ2VuZXJhdG9yUmVzdW1l
TW9kZSwgMCk7CisgICAgYWRkUGFyYW1ldGVyKG1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5O
YW1lcygpLmdlbmVyYXRvclJlc3VtZU1vZGVQcml2YXRlTmFtZSgpKTsKKyAgICAvLyBAZ2VuZXJh
dG9yRnJhbWUKKyAgICBhZGRQYXJhbWV0ZXIobV92bS0+cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5h
bWVzKCkuZ2VuZXJhdG9yRnJhbWVQcml2YXRlTmFtZSgpKTsKIAogICAgIHJldHVybiBwYXJhbWV0
ZXJzOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKaW5kZXggMzkyMDQwNGU4
YmE1MjBiMjJlNGVjZDI3NzgxYzEzZGY4MTkwNzQzMy4uNTBlMTM5MWI1ZmQwM2RkNWU3NzhiOGZk
YjU5MjNhYTc5OGFlZDEyMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9QYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCkBA
IC0xNDI2LDcgKzE0MjYsNyBAQCBjbGFzcyBQYXJzZXIgewogICAgIEFMV0FZU19JTkxJTkUgYm9v
bCBpc0Fycm93RnVuY3Rpb25QYXJhbWV0ZXJzKCk7CiAgICAgCiAgICAgdGVtcGxhdGUgPGNsYXNz
IFRyZWVCdWlsZGVyLCBjbGFzcyBGdW5jdGlvbkluZm9UeXBlPiBORVZFUl9JTkxJTkUgdHlwZW5h
bWUgVHJlZUJ1aWxkZXI6OkZvcm1hbFBhcmFtZXRlckxpc3QgcGFyc2VGdW5jdGlvblBhcmFtZXRl
cnMoVHJlZUJ1aWxkZXImLCBTb3VyY2VQYXJzZU1vZGUsIEZ1bmN0aW9uSW5mb1R5cGUmKTsKLSAg
ICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElORSB0eXBlbmFtZSBUcmVl
QnVpbGRlcjo6Rm9ybWFsUGFyYW1ldGVyTGlzdCBjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKFRy
ZWVCdWlsZGVyJik7CisgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBORVZFUl9JTkxJ
TkUgdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkZvcm1hbFBhcmFtZXRlckxpc3QgY3JlYXRlR2VuZXJh
dG9yUGFyYW1ldGVycyhUcmVlQnVpbGRlciYsIHVuc2lnbmVkJiBwYXJhbWV0ZXJDb3VudCk7CiAK
ICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElORSBUcmVlQ2xhc3NF
eHByZXNzaW9uIHBhcnNlQ2xhc3MoVHJlZUJ1aWxkZXImLCBGdW5jdGlvbk5hbWVSZXF1aXJlbWVu
dHMsIFBhcnNlckNsYXNzSW5mbzxUcmVlQnVpbGRlcj4mKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKaW5kZXggYTliNzU1ZTZjOWFl
OWI5OGE2MjI5MzU0NmVlNTdjYTgxZWM5YzMyYy4uMmU4NjhkY2IyZDcxZmU3Y2YyOGU5NTBmMDVj
NzU4YmE4MDVjYzMyNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29tbW9uU2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21tb25TbG93UGF0aHMuY3BwCkBAIC0zNyw3ICszNyw2IEBACiAjaW5jbHVkZSAiRXJyb3IuaCIK
ICNpbmNsdWRlICJFcnJvckhhbmRsaW5nU2NvcGUuaCIKICNpbmNsdWRlICJFeGNlcHRpb25GdXp6
LmgiCi0jaW5jbHVkZSAiR2VuZXJhdG9yRnJhbWUuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIu
aCIKICNpbmNsdWRlICJIb3N0Q2FsbFJldHVyblZhbHVlLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0
ZXIuaCIKQEAgLTc1MywzOCArNzUyLDYgQEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2Fzc2Vy
dCkKICAgICBFTkQoKTsKIH0KIAotU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3NhdmUpCi17Ci0g
ICAgLy8gT25seSBzYXZlIHZhcmlhYmxlcyBhbmQgdGVtcG9yYXJ5IHJlZ2lzdGVycy4gVGhlIHNj
b3BlIHJlZ2lzdGVycyBhcmUgaW5jbHVkZWQgaW4gdGhlbS4KLSAgICAvLyBCdXQgcGFyYW1ldGVy
cyBhcmUgbm90IGluY2x1ZGVkLiBCZWNhdXNlIHRoZSBnZW5lcmF0b3IgaW1wbGVtZW50YXRpb24g
cmVwbGFjZXMgdGhlIHZhbHVlcyBvZiBwYXJhbWV0ZXJzIG9uIGVhY2ggZ2VuZXJhdG9yLm5leHQo
KSBjYWxsLgotICAgIEJFR0lOKCk7Ci0gICAgSlNWYWx1ZSBnZW5lcmF0b3IgPSBPUCgxKS5qc1Zh
bHVlKCk7Ci0gICAgR2VuZXJhdG9yRnJhbWUqIGZyYW1lID0gbnVsbHB0cjsKLSAgICBKU1ZhbHVl
IHZhbHVlID0gZ2VuZXJhdG9yLmdldChleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuYnVpbHRp
bk5hbWVzKCkuZ2VuZXJhdG9yRnJhbWVQcml2YXRlTmFtZSgpKTsKLSAgICBpZiAoIXZhbHVlLmlz
TnVsbCgpKQotICAgICAgICBmcmFtZSA9IGpzQ2FzdDxHZW5lcmF0b3JGcmFtZSo+KHZhbHVlKTsK
LSAgICBlbHNlIHsKLSAgICAgICAgLy8gRklYTUU6IE9uY2UgSlNHZW5lcmF0b3Igc3BlY2lhbGl6
ZWQgb2JqZWN0IGlzIGludHJvZHVjZWQsIHRoaXMgR2VuZXJhdG9yRnJhbWUgc2hvdWxkIGJlIGVt
YmVkZWQgaW50byBpdCB0byBhdm9pZCBhbGxvY2F0aW9ucy4KLSAgICAgICAgLy8gaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTU0NQotICAgICAgICBmcmFtZSA9IEdl
bmVyYXRvckZyYW1lOjpjcmVhdGUoZXhlYy0+dm0oKSwgIGV4ZWMtPmNvZGVCbG9jaygpLT5udW1D
YWxsZWVMb2NhbHMoKSk7Ci0gICAgICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGdlbmVyYXRvciwg
dHJ1ZSwgUHV0UHJvcGVydHlTbG90OjpQdXRCeUlkKTsKLSAgICAgICAgYXNPYmplY3QoZ2VuZXJh
dG9yKS0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPnB1dChhc09iamVjdChnZW5lcmF0b3IpLCBl
eGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yRnJhbWVQ
cml2YXRlTmFtZSgpLCBmcmFtZSwgc2xvdCk7Ci0gICAgfQotICAgIHVuc2lnbmVkIGxpdmVDYWxs
ZWVMb2NhbHNJbmRleCA9IHBjWzJdLnUudW5zaWduZWRWYWx1ZTsKLSAgICBmcmFtZS0+c2F2ZShl
eGVjLCBleGVjLT5jb2RlQmxvY2soKS0+bGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQobGl2ZUNhbGxl
ZUxvY2Fsc0luZGV4KSk7Ci0gICAgRU5EKCk7Ci19Ci0KLVNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0
aF9yZXN1bWUpCi17Ci0gICAgQkVHSU4oKTsKLSAgICBKU1ZhbHVlIGdlbmVyYXRvciA9IE9QKDEp
LmpzVmFsdWUoKTsKLSAgICBHZW5lcmF0b3JGcmFtZSogZnJhbWUgPSBqc0Nhc3Q8R2VuZXJhdG9y
RnJhbWUqPihnZW5lcmF0b3IuZ2V0KGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5idWlsdGlu
TmFtZXMoKS5nZW5lcmF0b3JGcmFtZVByaXZhdGVOYW1lKCkpKTsKLSAgICB1bnNpZ25lZCBsaXZl
Q2FsbGVlTG9jYWxzSW5kZXggPSBwY1syXS51LnVuc2lnbmVkVmFsdWU7Ci0gICAgZnJhbWUtPnJl
c3VtZShleGVjLCBleGVjLT5jb2RlQmxvY2soKS0+bGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQobGl2
ZUNhbGxlZUxvY2Fsc0luZGV4KSk7Ci0gICAgRU5EKCk7Ci19Ci0KIFNMT1dfUEFUSF9ERUNMKHNs
b3dfcGF0aF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudCkKIHsKICAgICBCRUdJTigpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAppbmRleCA2
NDAxYTYxNGQ1NjExNjYzNTY5YjE4YTAyNzJiMjhhYzM1Mjg2YTgyLi4zZDljMTVmNWFmMGM3NTdk
ZGExMDUzMzkxOTkwZjU0NjM4ODY4MWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21tb25TbG93UGF0aHMuaApAQCAtMjQ4LDggKzI0OCw2IEBAIFNMT1dfUEFUSF9I
SURERU5fREVDTChzbG93X3BhdGhfbmV4dF9nZW5lcmljX2VudW1lcmF0b3JfcG5hbWUpOwogU0xP
V19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF90b19pbmRleF9zdHJpbmcpOwogU0xPV19QQVRI
X0hJRERFTl9ERUNMKHNsb3dfcGF0aF9wcm9maWxlX3R5cGVfY2xlYXJfbG9nKTsKIFNMT1dfUEFU
SF9ISURERU5fREVDTChzbG93X3BhdGhfYXNzZXJ0KTsKLVNMT1dfUEFUSF9ISURERU5fREVDTChz
bG93X3BhdGhfc2F2ZSk7Ci1TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3Jlc3VtZSk7
CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2NyZWF0ZV9sZXhpY2FsX2Vudmlyb25t
ZW50KTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcHVzaF93aXRoX3Njb3BlKTsK
IFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcmVzb2x2ZV9zY29wZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGcmFtZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGcmFtZS5jcHAKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVmNmVhN2ExMDAyNThjM2VjZTA0ZGFhYjQzYmRhYTg1MWVj
OGY3MTUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJhbWUuY3BwCisrKyAvZGV2L251
bGwKQEAgLTEsOTcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6
dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
Ci0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0g
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmln
LmgiCi0jaW5jbHVkZSAiR2VuZXJhdG9yRnJhbWUuaCIKLQotI2luY2x1ZGUgIkNvZGVCbG9jay5o
IgotI2luY2x1ZGUgIkhlYXBJdGVyYXRpb25TY29wZS5oIgotI2luY2x1ZGUgIkpTQ0pTVmFsdWVJ
bmxpbmVzLmgiCi0jaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgotI2luY2x1ZGUgIlNsb3RWaXNp
dG9ySW5saW5lcy5oIgotI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKLQotbmFtZXNwYWNl
IEpTQyB7Ci0KLWNvbnN0IENsYXNzSW5mbyBHZW5lcmF0b3JGcmFtZTo6c19pbmZvID0geyAiR2Vu
ZXJhdG9yRnJhbWUiLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEdlbmVy
YXRvckZyYW1lKSB9OwotCi1HZW5lcmF0b3JGcmFtZTo6R2VuZXJhdG9yRnJhbWUoVk0mIHZtLCBz
aXplX3QgbnVtYmVyT2ZDYWxsZWVMb2NhbHMpCi0gICAgOiBCYXNlKHZtLCB2bS5nZW5lcmF0b3JG
cmFtZVN0cnVjdHVyZS5nZXQoKSkKLSAgICAsIG1fbnVtYmVyT2ZDYWxsZWVMb2NhbHMobnVtYmVy
T2ZDYWxsZWVMb2NhbHMpCi17Ci19Ci0KLXZvaWQgR2VuZXJhdG9yRnJhbWU6OmZpbmlzaENyZWF0
aW9uKFZNJiB2bSkKLXsKLSAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7Ci0gICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBtX251bWJlck9mQ2FsbGVlTG9jYWxzOyArK2kpCi0gICAgICAgIGxv
Y2FsQXQoaSkuY2xlYXIoKTsKLX0KLQotU3RydWN0dXJlKiBHZW5lcmF0b3JGcmFtZTo6Y3JlYXRl
U3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBw
cm90b3R5cGUpCi17Ci0gICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmpl
Y3QsIHByb3RvdHlwZSwgVHlwZUluZm8oQ2VsbFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygp
KTsKLX0KLQotR2VuZXJhdG9yRnJhbWUqIEdlbmVyYXRvckZyYW1lOjpjcmVhdGUoVk0mIHZtLCBz
aXplX3QgbnVtYmVyT2ZMb2NhbHMpCi17Ci0gICAgR2VuZXJhdG9yRnJhbWUqIHJlc3VsdCA9Ci0g
ICAgICAgIG5ldyAoCi0gICAgICAgICAgICBOb3ROdWxsLAotICAgICAgICAgICAgYWxsb2NhdGVD
ZWxsPEdlbmVyYXRvckZyYW1lPih2bS5oZWFwLCBhbGxvY2F0aW9uU2l6ZUZvckxvY2FscyhudW1i
ZXJPZkxvY2FscykpKQotICAgICAgICBHZW5lcmF0b3JGcmFtZSh2bSwgbnVtYmVyT2ZMb2NhbHMp
OwotICAgIHJlc3VsdC0+ZmluaXNoQ3JlYXRpb24odm0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci0KLXZvaWQgR2VuZXJhdG9yRnJhbWU6OnNhdmUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBGYXN0
Qml0VmVjdG9yJiBsaXZlQ2FsbGVlTG9jYWxzKQotewotICAgIC8vIE9ubHkgc2F2ZSBjYWxsZWUg
bG9jYWxzLgotICAgIC8vIEV2ZXJ5IHRpbWUgYSBnZW5lcmF0b3IgaXMgY2FsbGVkIChvciByZXN1
bWVkKSwgcGFyYW1ldGVycyBzaG91bGQgYmUgcmVwbGFjZWQuCi0gICAgQVNTRVJUKGxpdmVDYWxs
ZWVMb2NhbHMubnVtQml0cygpIDw9IG1fbnVtYmVyT2ZDYWxsZWVMb2NhbHMpOwotICAgIGxpdmVD
YWxsZWVMb2NhbHMuZm9yRWFjaFNldEJpdChbJl0oc2l6ZV90IGluZGV4KSB7Ci0gICAgICAgIGxv
Y2FsQXQoaW5kZXgpLnNldChleGVjLT52bSgpLCB0aGlzLCBleGVjLT51bmNoZWNrZWRSKHZpcnR1
YWxSZWdpc3RlckZvckxvY2FsKGluZGV4KSkuanNWYWx1ZSgpKTsKLSAgICB9KTsKLX0KLQotdm9p
ZCBHZW5lcmF0b3JGcmFtZTo6cmVzdW1lKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgRmFzdEJpdFZl
Y3RvciYgbGl2ZUNhbGxlZUxvY2FscykKLXsKLSAgICAvLyBPbmx5IHJlc3VtZSBjYWxsZWUgbG9j
YWxzLgotICAgIC8vIEV2ZXJ5IHRpbWUgYSBnZW5lcmF0b3IgaXMgY2FsbGVkIChvciByZXN1bWVk
KSwgcGFyYW1ldGVycyBzaG91bGQgYmUgcmVwbGFjZWQuCi0gICAgbGl2ZUNhbGxlZUxvY2Fscy5m
b3JFYWNoU2V0Qml0KFsmXShzaXplX3QgaW5kZXgpIHsKLSAgICAgICAgZXhlYy0+dW5jaGVja2Vk
Uih2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChpbmRleCkpID0gbG9jYWxBdChpbmRleCkuZ2V0KCk7
Ci0gICAgICAgIGxvY2FsQXQoaW5kZXgpLmNsZWFyKCk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgR2Vu
ZXJhdG9yRnJhbWU6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlz
aXRvcikKLXsKLSAgICBHZW5lcmF0b3JGcmFtZSogdGhpc09iamVjdCA9IGpzQ2FzdDxHZW5lcmF0
b3JGcmFtZSo+KGNlbGwpOwotICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlz
aXRvcik7Ci0gICAgLy8gU2luY2Ugb25seSB0cnVlIGNlbGwgcG9pbnRlcnMgYXJlIHN0b3JlZCBh
cyBhIGNlbGwsIHdlIGNhbiBzYWZlbHkgbWFyayB0aGVtLgotICAgIHZpc2l0b3IuYXBwZW5kVmFs
dWVzKHRoaXNPYmplY3QtPmxvY2FscygpLCB0aGlzT2JqZWN0LT5tX251bWJlck9mQ2FsbGVlTG9j
YWxzKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGcmFtZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvR2VuZXJhdG9yRnJhbWUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
M2Q1NDViMTQ3ZGQ0YWJmYjJiYmI5YjVhNzE5NGU4Zjc0ODQxYzQ5YS4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9HZW5lcmF0b3JGcmFtZS5oCisrKyAvZGV2L251bGwKQEAgLTEsOTAgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5j
b20+LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIEdlbmVyYXRvckZyYW1lX2gKLSNkZWZpbmUgR2VuZXJh
dG9yRnJhbWVfaAotCi0jaW5jbHVkZSAiSlNDZWxsLmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RCaXRW
ZWN0b3IuaD4KLQotbmFtZXNwYWNlIEpTQyB7Ci0KLWNsYXNzIEdlbmVyYXRvckZyYW1lIDogcHVi
bGljIEpTQ2VsbCB7Ci0gICAgZnJpZW5kIGNsYXNzIEpJVDsKLSNpZiBFTkFCTEUoREZHX0pJVCkK
LSAgICBmcmllbmQgY2xhc3MgREZHOjpTcGVjdWxhdGl2ZUpJVDsKLSAgICBmcmllbmQgY2xhc3Mg
REZHOjpKSVRDb21waWxlcjsKLSNlbmRpZgotICAgIGZyaWVuZCBjbGFzcyBWTTsKLXB1YmxpYzoK
LSAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOwotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1
Y3R1cmVGbGFncyA9IFN0cnVjdHVyZUlzSW1tb3J0YWwgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsK
LQotICAgIERFQ0xBUkVfRVhQT1JUX0lORk87Ci0KLSAgICBzdGF0aWMgR2VuZXJhdG9yRnJhbWUq
IGNyZWF0ZShWTSYsIHNpemVfdCBudW1iZXJPZkNhbGxlZUxvY2Fscyk7Ci0KLSAgICBXcml0ZUJh
cnJpZXJCYXNlPFVua25vd24+KiBsb2NhbHMoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGJpdHdp
c2VfY2FzdDxXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+Kj4oYml0d2lzZV9jYXN0PGNoYXIqPih0
aGlzKSArIG9mZnNldE9mTG9jYWxzKCkpOwotICAgIH0KLQotICAgIFdyaXRlQmFycmllckJhc2U8
VW5rbm93bj4mIGxvY2FsQXQoc2l6ZV90IGluZGV4KQotICAgIHsKLSAgICAgICAgQVNTRVJUKGlu
ZGV4IDwgbV9udW1iZXJPZkNhbGxlZUxvY2Fscyk7Ci0gICAgICAgIHJldHVybiBsb2NhbHMoKVtp
bmRleF07Ci0gICAgfQotCi0gICAgc3RhdGljIHNpemVfdCBvZmZzZXRPZkxvY2FscygpCi0gICAg
ewotICAgICAgICByZXR1cm4gV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mPHNpemVvZihXcml0ZUJh
cnJpZXI8VW5rbm93bj4pPihzaXplb2YoR2VuZXJhdG9yRnJhbWUpKTsKLSAgICB9Ci0KLSAgICBz
dGF0aWMgc2l6ZV90IGFsbG9jYXRpb25TaXplRm9yTG9jYWxzKHVuc2lnbmVkIG51bWJlck9mTG9j
YWxzKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG9mZnNldE9mTG9jYWxzKCkgKyBudW1iZXJPZkxv
Y2FscyAqIHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pOwotICAgIH0KLQotICAgIHN0YXRp
YyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1
ZSBwcm90b3R5cGUpOwotCi0gICAgdm9pZCBzYXZlKEV4ZWNTdGF0ZSosIGNvbnN0IEZhc3RCaXRW
ZWN0b3ImIGxpdmVDYWxsZWVMb2NhbHMpOwotICAgIHZvaWQgcmVzdW1lKEV4ZWNTdGF0ZSosIGNv
bnN0IEZhc3RCaXRWZWN0b3ImIGxpdmVDYWxsZWVMb2NhbHMpOwotCi1wcml2YXRlOgotICAgIEdl
bmVyYXRvckZyYW1lKFZNJiwgc2l6ZV90IG51bWJlck9mQ2FsbGVlTG9jYWxzKTsKLQotICAgIHNp
emVfdCBtX251bWJlck9mQ2FsbGVlTG9jYWxzOwotCi0gICAgZnJpZW5kIGNsYXNzIExMSW50T2Zm
c2V0c0V4dHJhY3RvcjsKLQotICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKLQotcHJvdGVj
dGVkOgotICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3Im
KTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEpTQwotCi0jZW5kaWYgLy8gR2VuZXJhdG9yRnJhbWVf
aApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0b3JG
dW5jdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0b3JGdW5j
dGlvbi5oCmluZGV4IDM2ZjYxYzVmMjBmNTZiZWZkNmM1NTc4NDJiMTllMzliMTlhM2E5MTkuLmEx
Y2JhZDk0NmRjNTY4MjllZDFhMjE1NTc5MGI0NDBhOGRmNDMwMDQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJhdG9yRnVuY3Rpb24uaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyYXRvckZ1bmN0aW9uLmgKQEAgLTU1LDYg
KzU1LDE2IEBAIGNsYXNzIEpTR2VuZXJhdG9yRnVuY3Rpb24gOiBwdWJsaWMgSlNGdW5jdGlvbiB7
CiAgICAgICAgIEV4ZWN1dGluZyA9IC0yLAogICAgIH07CiAKKyAgICAvLyBbdGhpc10sIEBnZW5l
cmF0b3IsIEBnZW5lcmF0b3JTdGF0ZSwgQGdlbmVyYXRvclZhbHVlLCBAZ2VuZXJhdG9yUmVzdW1l
TW9kZSwgQGdlbmVyYXRvckZyYW1lLgorICAgIGVudW0gY2xhc3MgR2VuZXJhdG9yQXJndW1lbnQg
OiBpbnQzMl90IHsKKyAgICAgICAgVGhpc1ZhbHVlID0gMCwKKyAgICAgICAgR2VuZXJhdG9yID0g
MSwKKyAgICAgICAgU3RhdGUgPSAyLAorICAgICAgICBWYWx1ZSA9IDMsCisgICAgICAgIFJlc3Vt
ZU1vZGUgPSA0LAorICAgICAgICBGcmFtZSA9IDUsCisgICAgfTsKKwogICAgIGNvbnN0IHN0YXRp
YyB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwogCiAgICAg
REVDTEFSRV9FWFBPUlRfSU5GTzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRl
eCA4ODEzMWJmNWIzMDkwYWJkYWU0Yjk5NDUxYjQxNzFjYjVmZTJjNDVjLi5jMzAxMjJjNWFmMzNj
ODA3ZmU5YTY1YTE4ZmU2Zjg1NDcwZWQwYTZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9WTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk0uY3BwCkBAIC00Niw3ICs0Niw2IEBACiAjaW5jbHVkZSAiRlRMVGh1bmtzLmgiCiAjaW5jbHVk
ZSAiRnVuY3Rpb25Db25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkdDQWN0aXZpdHlDYWxsYmFjay5o
IgotI2luY2x1ZGUgIkdlbmVyYXRvckZyYW1lLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgi
CiAjaW5jbHVkZSAiSGVhcC5oIgogI2luY2x1ZGUgIkhlYXBJdGVyYXRpb25TY29wZS5oIgpAQCAt
MjQwLDcgKzIzOSw2IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkK
ICAgICBpbmZlcnJlZFR5cGVTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBJbmZlcnJlZFR5cGU6OmNyZWF0
ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICBpbmZlcnJlZFR5cGVUYWJsZVN0
cnVjdHVyZS5zZXQoKnRoaXMsIEluZmVycmVkVHlwZVRhYmxlOjpjcmVhdGVTdHJ1Y3R1cmUoKnRo
aXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgZnVuY3Rpb25SYXJlRGF0YVN0cnVjdHVyZS5zZXQoKnRo
aXMsIEZ1bmN0aW9uUmFyZURhdGE6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkp
KTsKLSAgICBnZW5lcmF0b3JGcmFtZVN0cnVjdHVyZS5zZXQoKnRoaXMsIEdlbmVyYXRvckZyYW1l
OjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgZXhjZXB0aW9uU3Ry
dWN0dXJlLnNldCgqdGhpcywgRXhjZXB0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpz
TnVsbCgpKSk7CiAgICAgcHJvbWlzZURlZmVycmVkU3RydWN0dXJlLnNldCgqdGhpcywgSlNQcm9t
aXNlRGVmZXJyZWQ6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICBp
bnRlcm5hbFByb21pc2VEZWZlcnJlZFN0cnVjdHVyZS5zZXQoKnRoaXMsIEpTSW50ZXJuYWxQcm9t
aXNlRGVmZXJyZWQ6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9WTS5oCmluZGV4IDg3YmQwZTBhMjU1MzhlOGM1ZWMzMmFiZTQwMzJj
NDY5N2ViMWQwOGYuLjkxNTBiNTE1OWVlZGNhZDE4NTY0NWNkYTZjNzMwYjQ5MGVkM2U2NzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaApAQCAtMzIwLDcgKzMyMCw2IEBAIGNsYXNzIFZN
IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFZNPiB7CiAgICAgU3Ryb25nPFN0cnVjdHVy
ZT4gaW5mZXJyZWRUeXBlU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGluZmVycmVk
VHlwZVRhYmxlU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGZ1bmN0aW9uUmFyZURh
dGFTdHJ1Y3R1cmU7Ci0gICAgU3Ryb25nPFN0cnVjdHVyZT4gZ2VuZXJhdG9yRnJhbWVTdHJ1Y3R1
cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gZXhjZXB0aW9uU3RydWN0dXJlOwogICAgIFN0cm9u
ZzxTdHJ1Y3R1cmU+IHByb21pc2VEZWZlcnJlZFN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0
dXJlPiBpbnRlcm5hbFByb21pc2VEZWZlcnJlZFN0cnVjdHVyZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL0Zhc3RCaXRWZWN0b3IuaCBiL1NvdXJjZS9XVEYvd3RmL0Zhc3RCaXRWZWN0b3Iu
aAppbmRleCA5OGZmZjVjZjczNTNlNmJjNjdkYTVjNTU5NDBjY2NlNGU0YjE1NmQwLi5mZjAwYjdi
NTRkNGEwY2ZmNGJlZjdkMDM4NTRkZTZiOTBjZTFkYjkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi9GYXN0Qml0VmVjdG9yLmgKKysrIGIvU291cmNlL1dURi93dGYvRmFzdEJpdFZlY3Rvci5o
CkBAIC0yMyw4ICsyMyw3IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCi0jaWZuZGVmIEZhc3RC
aXRWZWN0b3JfaAotI2RlZmluZSBGYXN0Qml0VmVjdG9yX2gKKyNwcmFnbWEgb25jZQogCiAjaW5j
bHVkZSA8c3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KQEAgLTM2LDEyICsz
NSwxNCBAQCBjbGFzcyBQcmludFN0cmVhbTsKIAogY2xhc3MgRmFzdEJpdFZlY3RvciB7CiBwdWJs
aWM6Ci0gICAgRmFzdEJpdFZlY3RvcigpCi0gICAgICAgIDogbV9hcnJheSgwKQotICAgICAgICAs
IG1fbnVtQml0cygwKQorICAgIEZhc3RCaXRWZWN0b3IoKSA9IGRlZmF1bHQ7CisKKyAgICBGYXN0
Qml0VmVjdG9yKEZhc3RCaXRWZWN0b3ImJiBvdGhlcikKKyAgICAgICAgOiBtX2FycmF5KHN0ZDo6
ZXhjaGFuZ2Uob3RoZXIubV9hcnJheSwgbnVsbHB0cikpCisgICAgICAgICwgbV9udW1CaXRzKHN0
ZDo6ZXhjaGFuZ2Uob3RoZXIubV9udW1CaXRzLCAwKSkKICAgICB7CiAgICAgfQotICAgIAorCiAg
ICAgRmFzdEJpdFZlY3Rvcihjb25zdCBGYXN0Qml0VmVjdG9yJiBvdGhlcikKICAgICAgICAgOiBt
X2FycmF5KDApCiAgICAgICAgICwgbV9udW1CaXRzKDApCkBAIC0yMDIsMTMgKzIwMywxMCBAQCBj
bGFzcyBGYXN0Qml0VmVjdG9yIHsKICAgICBzdGF0aWMgc2l6ZV90IGFycmF5TGVuZ3RoKHNpemVf
dCBudW1CaXRzKSB7IHJldHVybiAobnVtQml0cyArIDMxKSA+PiA1OyB9CiAgICAgc2l6ZV90IGFy
cmF5TGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gYXJyYXlMZW5ndGgobV9udW1CaXRzKTsgfQogICAg
IAotICAgIHVpbnQzMl90KiBtX2FycmF5OyAvLyBObywgdGhpcyBjYW4ndCBiZSBhbiBzdGQ6OnVu
aXF1ZV9wdHI8dWludDMyX3RbXT4uCi0gICAgc2l6ZV90IG1fbnVtQml0czsKKyAgICB1aW50MzJf
dCogbV9hcnJheSB7IG51bGxwdHIgfTsgLy8gTm8sIHRoaXMgY2FuJ3QgYmUgYW4gc3RkOjp1bmlx
dWVfcHRyPHVpbnQzMl90W10+LgorICAgIHNpemVfdCBtX251bUJpdHMgeyAwIH07CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXVEYKIAogdXNpbmcgV1RGOjpGYXN0Qml0VmVjdG9yOwotCi0jZW5kaWYg
Ly8gRmFzdEJpdFZlY3Rvcl9oCi0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0luZGV4ZWRD
b250YWluZXJJdGVyYXRvci5oIGIvU291cmNlL1dURi93dGYvSW5kZXhlZENvbnRhaW5lckl0ZXJh
dG9yLmgKaW5kZXggM2U5YjllMzdhMTI0N2Q5MDdiZTgzMGM5ZDIwMTJmNzdhMWI3Mzc3MS4uZWY5
OTE5YjAyMjMyNWM4MTdlNWNmZWJlOWQ3OTgyY2Q3NjI2ZmRkNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvSW5kZXhlZENvbnRhaW5lckl0ZXJhdG9yLmgKKysrIGIvU291cmNlL1dURi93dGYv
SW5kZXhlZENvbnRhaW5lckl0ZXJhdG9yLmgKQEAgLTMwLDcgKzMwLDcgQEAKIG5hbWVzcGFjZSBX
VEYgewogCiB0ZW1wbGF0ZTxjbGFzcyBDb250YWluZXI+Ci1jbGFzcyBJbmRleGVkQ29udGFpbmVy
SXRlcmF0b3IgeworY2xhc3MgSW5kZXhlZENvbnRhaW5lckl0ZXJhdG9yIDogcHVibGljIHN0ZDo6
aXRlcmF0b3I8c3RkOjpiaWRpcmVjdGlvbmFsX2l0ZXJhdG9yX3RhZywgdHlwZW5hbWUgc3RkOjpy
ZXN1bHRfb2Y8ZGVjbHR5cGUoJkNvbnRhaW5lcjo6YXQpKGNvbnN0IENvbnRhaW5lciwgdW5zaWdu
ZWQpPjo6dHlwZSwgc3RkOjpwdHJkaWZmX3QsIGNvbnN0IHR5cGVuYW1lIHN0ZDo6cmVzdWx0X29m
PGRlY2x0eXBlKCZDb250YWluZXI6OmF0KShjb25zdCBDb250YWluZXIsIHVuc2lnbmVkKT46OnR5
cGUqLCBjb25zdCB0eXBlbmFtZSBzdGQ6OnJlc3VsdF9vZjxkZWNsdHlwZSgmQ29udGFpbmVyOjph
dCkoY29uc3QgQ29udGFpbmVyLCB1bnNpZ25lZCk+Ojp0eXBlJj4gewogcHVibGljOgogICAgIElu
ZGV4ZWRDb250YWluZXJJdGVyYXRvcigpCiAgICAgICAgIDogbV9jb250YWluZXIobnVsbHB0cikK
QEAgLTU1LDYgKzU1LDEyIEBAIGNsYXNzIEluZGV4ZWRDb250YWluZXJJdGVyYXRvciB7CiAgICAg
ICAgIHJldHVybiAqdGhpczsKICAgICB9CiAKKyAgICBJbmRleGVkQ29udGFpbmVySXRlcmF0b3Im
IG9wZXJhdG9yLS0oKQorICAgIHsKKyAgICAgICAgbV9pbmRleCA9IGZpbmRQcmV2KG1faW5kZXgg
LSAxKTsKKyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KKwogICAgIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBJbmRleGVkQ29udGFpbmVySXRlcmF0b3ImIG90aGVyKSBjb25zdAogICAgIHsKICAg
ICAgICAgQVNTRVJUKG1fY29udGFpbmVyID09IG90aGVyLm1fY29udGFpbmVyKTsKQEAgLTc0LDYg
KzgwLDE0IEBAIGNsYXNzIEluZGV4ZWRDb250YWluZXJJdGVyYXRvciB7CiAgICAgICAgIHJldHVy
biBpbmRleDsKICAgICB9CiAKKyAgICB1bnNpZ25lZCBmaW5kUHJldih1bnNpZ25lZCBpbmRleCkK
KyAgICB7CisgICAgICAgIC8vIFdoZW4gaW5kZXggYmVjb21lcyBvdmVyZmxvdywgaW5kZXggd2ls
bCBiZWNvbWUgc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpLgorICAgICAgICB3
aGlsZSAoaW5kZXggIT0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpICYmICFt
X2NvbnRhaW5lci0+YXQoaW5kZXgpKQorICAgICAgICAgICAgaW5kZXgtLTsKKyAgICAgICAgcmV0
dXJuIGluZGV4OworICAgIH0KKwogICAgIGNvbnN0IENvbnRhaW5lciogbV9jb250YWluZXI7CiAg
ICAgdW5zaWduZWQgbV9pbmRleDsKIH07CmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBi
L0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IGE2N2QwMDY4MDk0YTU2YTFkZDhmZGUxMDM1NDllZDll
NDIxOTdiOTYuLjI2NTQ5ZTIyMDFiYWJlZDUzZTM1NGNkOWU0ZGZlMzRlOTE5OTNiMzggMTAwNjQ0
Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjggQEAKKzIwMTYtMDgtMjQgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5j
b20+CisKKyAgICAgICAgW0RGR11bRlRMXSBJbXBsZW1lbnQgRVM2IEdlbmVyYXRvcnMgaW4gREZH
IC8gRlRMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NTI3MjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IHN0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQtYXJyYXkuanM6IEFkZGVkLgorICAgICAgICAo
ZmliKToKKyAgICAgICAgKiBzdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwtYW5kLW9iamVjdC5qczog
QWRkZWQuCisgICAgICAgIChmaWIpOgorICAgICAgICAqIHN0cmVzcy9nZW5lcmF0b3ItZmliLWZ0
bC1hbmQtc3RyaW5nLmpzOiBBZGRlZC4KKyAgICAgICAgKGZpYik6CisgICAgICAgICogc3RyZXNz
L2dlbmVyYXRvci1maWItZnRsLmpzOiBBZGRlZC4KKyAgICAgICAgKGZpYik6CisgICAgICAgICog
c3RyZXNzL2dlbmVyYXRvci1mcmFtZS1lbXB0eS5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRU
aHJvdyk6CisgICAgICAgIChzaG91bGRUaHJvdy5maWIpOgorICAgICAgICAqIHN0cmVzcy9nZW5l
cmF0b3ItcmVkdWNlZC1zYXZlLXBvaW50LXB1dC10by1zY29wZS5qczogQWRkZWQuCisgICAgICAg
IChzaG91bGRCZSk6CisgICAgICAgIChnZW4pOgorICAgICAgICAqIHN0cmVzcy9nZW5lcmF0b3It
dHJhbnNmZXItcmVnaXN0ZXItYmV5b25kLW11dGlwbGUteWllbGRzLmpzOiBBZGRlZC4KKyAgICAg
ICAgKHNob3VsZEJlKToKKyAgICAgICAgKGdlbik6CisKIDIwMTYtMDgtMjQgIEZpbGlwIFBpemxv
ICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsIG91dCByMjA0
OTAxLCByMjA0ODk3LCByMjA0ODY2LCByMjA0ODU2LCByMjA0ODU0LgpkaWZmIC0tZ2l0IGEvSlNU
ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwtYW5kLWFycmF5LmpzIGIvSlNUZXN0cy9zdHJl
c3MvZ2VuZXJhdG9yLWZpYi1mdGwtYW5kLWFycmF5LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZlOTM5ODEyZmRi
YWVjNmI4MzJiZmQwMGYyMTUzZGVmODRiYjc1OTIKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3Rz
L3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQtYXJyYXkuanMKQEAgLTAsMCArMSwyMyBAQAor
KGZ1bmN0aW9uICgpIHsKKyAgICBmdW5jdGlvbiAqZmliKCkKKyAgICB7CisgICAgICAgIGxldCBh
ID0gMTsKKyAgICAgICAgbGV0IGIgPSAxOworICAgICAgICBsZXQgYyA9IFsgMCBdOworICAgICAg
ICB3aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAgY1swXSA9IGE7CisgICAgICAgICAgICB5aWVs
ZCBjOworICAgICAgICAgICAgW2EsIGJdID0gW2IsIGEgKyBiXTsKKyAgICAgICAgfQorICAgIH0K
KworICAgIGxldCB2YWx1ZSA9IDA7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxZTQ7ICsraSkg
eworICAgICAgICBsZXQgZiA9IGZpYigpOworICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEw
MDsgKytpKSB7CisgICAgICAgICAgICB2YWx1ZSA9IGYubmV4dCgpLnZhbHVlOworICAgICAgICB9
CisgICAgICAgIGlmICh2YWx1ZVswXSAhPT0gMzU0MjI0ODQ4MTc5MjYyMDAwMDAwKQorICAgICAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgdmFsdWU6JHtyZXN1bHR9YCk7CisgICAgfQorfSgp
KTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLWFuZC1vYmpl
Y3QuanMgYi9KU1Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQtb2JqZWN0LmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjY2NzM0MGYyZWE0Yzc0MzhhMmQyMDlhYTQwZDA2NzdlNGFiN2QzZmIKLS0tIC9k
ZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQtb2JqZWN0
LmpzCkBAIC0wLDAgKzEsMjMgQEAKKyhmdW5jdGlvbiAoKSB7CisgICAgZnVuY3Rpb24gKmZpYigp
CisgICAgeworICAgICAgICBsZXQgYSA9IDE7CisgICAgICAgIGxldCBiID0gMTsKKyAgICAgICAg
bGV0IGMgPSB7IGZpYjogMCB9OworICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAg
Yy5maWIgPSBhOworICAgICAgICAgICAgeWllbGQgYzsKKyAgICAgICAgICAgIFthLCBiXSA9IFti
LCBhICsgYl07CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQgdmFsdWUgPSAwOworICAgIGZv
ciAobGV0IGkgPSAwOyBpIDwgMWU0OyArK2kpIHsKKyAgICAgICAgbGV0IGYgPSBmaWIoKTsKKyAg
ICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDA7ICsraSkgeworICAgICAgICAgICAgdmFsdWUg
PSBmLm5leHQoKS52YWx1ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAodmFsdWUuZmliICE9PSAz
NTQyMjQ4NDgxNzkyNjIwMDAwMDApCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCB2
YWx1ZToke3Jlc3VsdH1gKTsKKyAgICB9Cit9KCkpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJl
c3MvZ2VuZXJhdG9yLWZpYi1mdGwtYW5kLXN0cmluZy5qcyBiL0pTVGVzdHMvc3RyZXNzL2dlbmVy
YXRvci1maWItZnRsLWFuZC1zdHJpbmcuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDM4YWU2YWIzMzQ3MDQ2ODIy
ODQ5ZjQzMDA0ZWE1YzQwM2VlZGEyOAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNz
L2dlbmVyYXRvci1maWItZnRsLWFuZC1zdHJpbmcuanMKQEAgLTAsMCArMSwyMiBAQAorKGZ1bmN0
aW9uICgpIHsKKyAgICBmdW5jdGlvbiAqZmliKCkKKyAgICB7CisgICAgICAgIGxldCBhID0gMTsK
KyAgICAgICAgbGV0IGIgPSAxOworICAgICAgICBsZXQgYyA9ICJSZXN1bHQhICI7CisgICAgICAg
IHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICB5aWVsZCBjICsgYTsKKyAgICAgICAgICAgIFth
LCBiXSA9IFtiLCBhICsgYl07CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQgdmFsdWUgPSAw
OworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMWU0OyArK2kpIHsKKyAgICAgICAgbGV0IGYgPSBm
aWIoKTsKKyAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDA7ICsraSkgeworICAgICAgICAg
ICAgdmFsdWUgPSBmLm5leHQoKS52YWx1ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAodmFsdWUg
IT09IGBSZXN1bHQhIDM1NDIyNDg0ODE3OTI2MjAwMDAwMGApCisgICAgICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoYGJhZCB2YWx1ZToke3Jlc3VsdH1gKTsKKyAgICB9Cit9KCkpOwpkaWZmIC0tZ2l0
IGEvSlNUZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwuanMgYi9KU1Rlc3RzL3N0cmVzcy9n
ZW5lcmF0b3ItZmliLWZ0bC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNDBlMzNkYmM4NjhiZWE3YTg5M2M5ZWMx
NmI3NzllYzI2YmRiMTljCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvZ2VuZXJh
dG9yLWZpYi1mdGwuanMKQEAgLTAsMCArMSwyMSBAQAorKGZ1bmN0aW9uICgpIHsKKyAgICBmdW5j
dGlvbiAqZmliKCkKKyAgICB7CisgICAgICAgIGxldCBhID0gMTsKKyAgICAgICAgbGV0IGIgPSAx
OworICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAgeWllbGQgYTsKKyAgICAgICAg
ICAgIFthLCBiXSA9IFtiLCBhICsgYl07CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQgdmFs
dWUgPSAwOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMWU0OyArK2kpIHsKKyAgICAgICAgbGV0
IGYgPSBmaWIoKTsKKyAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDA7ICsraSkgeworICAg
ICAgICAgICAgdmFsdWUgPSBmLm5leHQoKS52YWx1ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAo
dmFsdWUgIT09IDM1NDIyNDg0ODE3OTI2MjAwMDAwMCkKKyAgICAgICAgICAgIHRocm93IG5ldyBF
cnJvcihgYmFkIHZhbHVlOiR7cmVzdWx0fWApOworICAgIH0KK30oKSk7CmRpZmYgLS1naXQgYS9K
U1Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZnJhbWUtZW1wdHkuanMgYi9KU1Rlc3RzL3N0cmVzcy9n
ZW5lcmF0b3ItZnJhbWUtZW1wdHkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTllODg1NWJmYWMzYzU2ZGY5MjZh
YmQ0MjhjMDEzYzMzNDE2Mjc0NgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2dl
bmVyYXRvci1mcmFtZS1lbXB0eS5qcwpAQCAtMCwwICsxLDM0IEBACitmdW5jdGlvbiBzaG91bGRU
aHJvdyhmdW5jLCBlcnJvck1lc3NhZ2UpIHsKKyAgICB2YXIgZXJyb3JUaHJvd24gPSBmYWxzZTsK
KyAgICB2YXIgZXJyb3IgPSBudWxsOworICAgIHRyeSB7CisgICAgICAgIGZ1bmMoKTsKKyAgICB9
IGNhdGNoIChlKSB7CisgICAgICAgIGVycm9yVGhyb3duID0gdHJ1ZTsKKyAgICAgICAgZXJyb3Ig
PSBlOworICAgIH0KKyAgICBpZiAoIWVycm9yVGhyb3duKQorICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoJ25vdCB0aHJvd24nKTsKKyAgICBpZiAoU3RyaW5nKGVycm9yKSAhPT0gZXJyb3JNZXNzYWdl
KQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCBlcnJvcjogJHtTdHJpbmcoZXJyb3IpfWAp
OworfQorCitzaG91bGRUaHJvdyhmdW5jdGlvbiAoKSB7CisgICAgZnVuY3Rpb24gKmZpYihmbGFn
KQorICAgIHsKKyAgICAgICAgbGV0IGEgPSAxOworICAgICAgICBsZXQgYiA9IDE7CisgICAgICAg
IHlpZWxkIDQyOworICAgICAgICBpZiAoZmxhZykKKyAgICAgICAgICAgIHJldHVybiBjOworICAg
ICAgICBsZXQgYyA9IDUwMDsKKyAgICB9CisKKyAgICBsZXQgdmFsdWUgPSAwOworICAgIGZvciAo
bGV0IGkgPSAwOyBpIDwgMWU0OyArK2kpIHsKKyAgICAgICAgZm9yIChsZXQgdiBvZiBmaWIoZmFs
c2UpKSB7CisgICAgICAgIH0KKyAgICB9CisgICAgZm9yIChsZXQgdiBvZiBmaWIodHJ1ZSkpIHsK
KyAgICB9Cit9LCBgUmVmZXJlbmNlRXJyb3I6IENhbm5vdCBhY2Nlc3MgdW5pbml0aWFsaXplZCB2
YXJpYWJsZS5gKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2dlbmVyYXRvci1yZWR1Y2Vk
LXNhdmUtcG9pbnQtcHV0LXRvLXNjb3BlLmpzIGIvSlNUZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXJl
ZHVjZWQtc2F2ZS1wb2ludC1wdXQtdG8tc2NvcGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzBjNzVmYTQ5MTQz
YzE3YmUxNGYzMjgxZTNmNjU0MzRmMzUxMzllOAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMv
c3RyZXNzL2dlbmVyYXRvci1yZWR1Y2VkLXNhdmUtcG9pbnQtcHV0LXRvLXNjb3BlLmpzCkBAIC0w
LDAgKzEsMjggQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBp
ZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgdmFs
dWU6ICR7U3RyaW5nKGFjdHVhbCl9YCk7Cit9CisKK2Z1bmN0aW9uIGVycm9yKCkKK3sKKyAgICB0
aHJvdyAib2siOworfQorCitmdW5jdGlvbiogZ2VuKCkKK3sKKyAgICB2YXIgdmFsdWUgPSA0MjsK
KyAgICB0cnkgeworICAgICAgICB5aWVsZCAzMDA7CisgICAgICAgIHZhbHVlID0gNTAwOworICAg
ICAgICBlcnJvcigpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgeWllbGQgNDI7CisgICAg
ICAgIHJldHVybiB2YWx1ZTsKKyAgICB9CisgICAgcmV0dXJuIDIwMDsKK30KKwordmFyIGcgPSBn
ZW4oKTsKK3Nob3VsZEJlKGcubmV4dCgpLnZhbHVlLCAzMDApOworc2hvdWxkQmUoZy5uZXh0KCku
dmFsdWUsIDQyKTsKK3Nob3VsZEJlKGcubmV4dCgpLnZhbHVlLCA1MDApOwpkaWZmIC0tZ2l0IGEv
SlNUZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXRyYW5zZmVyLXJlZ2lzdGVyLWJleW9uZC1tdXRpcGxl
LXlpZWxkcy5qcyBiL0pTVGVzdHMvc3RyZXNzL2dlbmVyYXRvci10cmFuc2Zlci1yZWdpc3Rlci1i
ZXlvbmQtbXV0aXBsZS15aWVsZHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmUyMDhmNTgxMjk2ZjlhZTA4YTZi
ZmIzOThiNDgyMjU3NDJkNmI3OAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2dl
bmVyYXRvci10cmFuc2Zlci1yZWdpc3Rlci1iZXlvbmQtbXV0aXBsZS15aWVsZHMuanMKQEAgLTAs
MCArMSwxOCBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlm
IChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1
ZTogJyArIGFjdHVhbCk7Cit9CisKKworZnVuY3Rpb24gKmdlbigpCit7CisgICAgdmFyIHRlc3Qg
PSA0MjsKKyAgICB5aWVsZCAzMjsKKyAgICB5aWVsZCAzMzsKKyAgICB5aWVsZCB0ZXN0OworfQor
Cit2YXIgZyA9IGdlbigpOworc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIDMyKTsKK3Nob3VsZEJl
KGcubmV4dCgpLnZhbHVlLCAzMyk7CitzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgNDIpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>286911</attachid>
            <date>2016-08-24 16:53:28 -0700</date>
            <delta_ts>2016-08-24 16:53:28 -0700</delta_ts>
            <desc>Archive of layout-test-results from ews102 for mac-yosemite</desc>
            <filename>layout-test-results.zip</filename>
            <type>application/zip</type>
            <size>881346</size>
            <attacher name="Build Bot">buildbot</attacher>
            
              <data encoding="base64">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
H+XjYrVME4Sdu02m2UjX2lkaPXEgsXjezGpTmc8/h+F93wEWzP+xucUWHmJCyE/N3nfRl3oiDu2d
BTdNVYhtYhkIxEVPVnuRjM04TRyh9lts/bci0DO0n+LGgVswT/VI79qkDUUxQUw8r1TxSW09RsGU
IAcqzY8iV+uJfvl7VfT+2U+TrLigof6QYKk1/Ap+KtFzPvtTzU1TA9q/s5TdzBHLfT3HxykLxc3l
R/A0hEb90N8h/Fcm0Gvt/SjmRjmI9Zjwo53KMAvOmi6E7OMZ96GWjnxaU/wtBkuan+BA0bzcf8x5
mq0m6RJ/nMDjTvQMvb1fyZd7SsfYSInQsPykR+5tP4ZusEgNcJjeJ6JC7XDCzllnjgBcivdfFTRL
pgjqa+vHlQNB+2kRsHtUvUuzbZGmJjhLVSkJJYrWsO+HQSIwPkCMfVGc9M3EuP4H/Thfw+M8GZn6
z5/eRS/KR70aZaMf1/P3WguWv64hx97Ax9VynQKNv8DtfNDvevVZMUmokMEFfXf79ie6/Pml/OWX
D9/9O/rXv19NL+irV7+//Ca8+eldOP7vnUrz23/84yt4dfLdS3jHz/bVBxgkivetPur7+2GZT/Ob
dWqykUCnhSd/oLeLzPJAHC2Q8JMklA9feyUUqdgf09FiEQnZp3zDv9bvNzDcbmC/Wy7DT1UWsogD
ib+i/2XTj+8/XL/5fsVf/v3dT29/WL7/4R9/V+q712q0nq0Xb35ObxfD7/97I66L0ezvk3D1Pl7J
j2+++dt/3/7+tfFQfEU/q5BnReVNRbgMm/aiT/ougj5ugqhP9UgEocE/JuT27z9/jOcP+bfRN7/8
9+v4x4/jt6/+8d39xweQzjL779vwq+v/0Dfqx493d+uf/vHDa7p4j9L4x/Td/ffjefbbz7e/p/li
/O//fJjc3y6+ef/VL6PFj3c3uLSFo4n8ox7Zr7YDCzocF4+e63F9Do/8eXVUn19efg5+zs3KYhT+
MlyHkx9BGIof/0EXwx+/uf9v8XN+TWez9+tfwn/A0b+6//FuKeZy8vdvTUeBkwfZp3MUr9lFJEwH
8XeW52z0t99o9C+ufno/ATb7ZzafvPnlA3st3oyH//j59Y//veN/+1Z9+OWt8SD4J0UT1oNYLkeT
8B+vp1z+/vvX9+P5/GMYPYzwPJYfJz9n9G+3b+Sbb9b//IGF3763HYToq527GUGiQW9W1qDGjNA/
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
AAEE9QEAAARQAAAAUEsDBAoAAgAAAFyDGEmQ8oHxLQAAAC0AAABJABwAY29tcG9zaXRpbmcvbGF5
ZXItY3JlYXRpb24vc2NhbGUtcm90YXRpb24tYW5pbWF0aW9uLW92ZXJsYXAtY3Jhc2gtbG9nLnR4
dFVUCQADPy2+Vz8tvld1eAsAAQT1AQAABFAAAABObyBjcmFzaCBsb2cgZm91bmQgZm9yIER1bXBS
ZW5kZXJUcmVlOjU5MjYyLgpQSwMECgAAAAAANoMYSQAAAAAAAAAAAAAAABUAHABjb21wb3NpdGlu
Zy9vdmVyZmxvdy9VVAkAA/gsvleELb5XdXgLAAEE9QEAAARQAAAAUEsDBBQAAgAIAIGDGEm7+i3e
TEEAAHsFAQBOABwAY29tcG9zaXRpbmcvb3ZlcmZsb3cvYXV0b21hdGljYWxseS1vcHQtaW50by1j
b21wb3NpdGVkLXNjcm9sbGluZy1jcmFzaC1sb2cudHh0VVQJAAOBLb5X+Cy+V3V4CwABBPUBAAAE
UAAAAOxdXXPayNK+PvoVuji1hZNgaz4lUS6nQEDWWcf2a+xk62xtqQZpZGsjJFYSTji//u2RBEiA
k2iTi1DHVCoGzUz30z093T0fDNdp4sks6+nN13Axm9/I2JfpbSql/gezMeN/atcif9iuCq+T90m0
mMns5P3Vxd270cmLk2Z77dyXcR4GoUx7T3PR3ss0C5N4m8Hr1681J/Glfrucy2bh7xbvcqp3LkUe
PsojwJcCI/16S6jrZf6QxKUU7E/tRmbzJM7CadQglz3of2CK/9TuMpnq58NtHMxAmjYUuTy5DWdb
QLCBeNewupjqiPcw7TF8TCymdw3TMLSrib5PtnfC06Hodx0Zx/CP6R1Ex8g27COAOE/SfKcVQlo/
TuLlLFlk+t1dDaPBnQHnzOqO+hbtoiGnXavf592BORzaFhkO0JBpmqaQ6/1P4qPUJ2HsSX2QJHlP
Z9QwDD2TXhL7maY5qcgepK/fPqRS+GsehEGXjd/oH5L0YxRmefEGVFVW07TRZ0/Oc8Db7KnR7447
6A/d88vJ7c2dc3t+dal3Judvzi8ujmptVBevu8z4bDRf6NXuMwPkKVjrRq+nD8NsLnLvQf97IRfA
3Utmx2I+j+TxTIRxNy9BGkA8CqfZMsvlzAX0sYyO/SU8WsH9V8nHDILAtk0iKFjeTHgP7iy7d/NU
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
dW5kIGZvciBEdW1wUmVuZGVyVHJlZTo1OTI4My4KUEsDBBQAAgAIADN/GEkz2gAjvgAAAPIGAABF
ABwAY29tcG9zaXRpbmcvcmVnaW9ucy93ZWJraXQtZmxvdy1yZW5kZXJlci1sYXllci1jb21wb3Np
dGluZy1zdGRlcnIudHh0VVQJAANiJr5XYia+V3V4CwABBPUBAAAEUAAAAO3PMQvCMBQE4N1fkVEH
mzY1WgUHLQoOouAoUp7pQ6OxKa9RyL9XcdDB1UHIdjfdfdtEjuRglGZRKns7ph1eoPGVKjbo1mRr
JOdZow8VGIMlQ6JxNxGDTLL2ea4PU2hwtT+hcjMiS8WiuoHRJTgsO6ytPxs4xjf2SgpzUEfkuSVc
YqnhnbqJ7ItI9GL+mHbW+Robvjbgkfhj7JWKyfNfpJjRFTIhhmlrGxAB8RuE/ETktvZ/oYizLCiC
Iii+KO5QSwMEFAACAAgAIoMYScubwR2sAAAAFAMAADwAHABjb21wb3NpdGluZy9zaG93LWNvbXBv
c2l0ZWQtaWZyYW1lLW9uLWJhY2stYnV0dG9uLXN0ZGVyci50eHRVVAkAA9AsvldrJr5XdXgLAAEE
9QEAAARQAAAA7Y+xDoIwFEV3v6IjDlAogkLioEQTByMJIzHkWV6wWil5VBP+XoyDfoCj27nTuacM
4lREqR96iYiPTFm8QT+0sirQ5mQ6JDuwXjUtaI01Q6KlG4j5ImLOdauaNfR4OF1Q2g2RoWrXPkCr
GizWU+ao7wWW8cLcSWIG8ow8M4R7rBV8yA2iWHhi5vNRbY0dOux5rmFA4qPsTdXq9c+TTKsWmRBJ
OCn/Ef+I30U8AVBLAwQKAAAAAAAtgxhJAAAAAAAAAAAAAAAAEgAcAGNvbXBvc2l0aW5nL3ZpZGVv
L1VUCQAD5Sy+V4Qtvld1eAsAAQT1AQAABFAAAABQSwMEFAACAAgAMn8YSXgIFCeNAAEAYCABACMA
HABjb21wb3NpdGluZy92aWRlby9wb3N0ZXItYWN0dWFsLnBuZ1VUCQADXya+V18mvld1eAsAAQT1
AQAABFAAAADsvFVYnN2zPYgFCR6coI17cHdp3C24Bnd3Da7B3d0J7q7B3T24e2NDzpxzfvm+/+3c
zDzTNzzddL9dVbv2qlW1dr+h8rJAxI+4H8HAwBAlxEUUwcAgicDAINRhod9fSXX2t33/Q+Uoqu5o
aGpsaOHgZAXGacDyjYOF08DYkI3zC4uxISunIQcrM7OxPpu+ETMnG+NHgTLC9w+BOygChcAqx/EO
wcAEwCREBJVdwU8yPrjSjtnVq02/eAcP2+FF4X/774dz8iMc8/sjrxdvUL+hKv9lwqPUwrnOxYVM
e5Yio0ONm3dtbm7O5FuBktIar4dUgagiCiyEIBEslB8RCpS/wJ8nm/RE1T5YIHGsf778/gScBAWG
lF3o359wQfTjIHJBPHJE/89b/+9/4sWsQv77KqusUNu+q6zFMwr/vo6dgD3yP7/Qj8h2ASUE0n4h
Wxb47+v0gQ/zovzrC7u0hYmQhrQDuPA//Os674bfC/y/0XBbTfyYTlBZp8bzxNvzhKqyz9u9j88l
4dsloeYxg2b/2+v5G/3rNsPrdi2ixbFrVHQ0ls8N0Keu/lVW7fma/+16O/rtIdrF+brIB1QU/vbU
+bZCFTfSGtz17I6Hj0/nfavm41SjRW+z5AvkPVIIz3p7zOo05mXP892w83lZ8PFilmHQSut8/5zu
88P7lbZ1X/d0z1Ktil7wmy2CVnujrPds9s6fx89pXw+zXg+j1H1o7tk2zvmfe/nbSJxFzd7duOeH
knUS0HmZ0/W6NJK7MwpfcMtY+NrWr9nWv725qXfpKHfvGM7u8ZNds22bpmN7GxzZtWtbqvNGCuv8
MfO82TW1yC21f+NlbcNKdMtY57cxZtbt16z6+lcmFc9BF8/BbarMbSrMrEucLLuUoHonWg4Chhsh
hjrXHXbvnQoml5btPL6jPMyqp5aq1prPr0Sdo61to9t/bMX6E7oOBfLvLsh+Mgs7+95n+5gMFxAM
tqOkHyh+i+rsijasw7vYx+tes+r+dJ0MIKh7qDwHVXIvjWlPvSxlvSyF27zd2TSS3JdPgMrh01u4
U17fo/sk7QM8y0fEEr0fe654DvZ5CO5vbV9ppcu85sxyuITxuYBp9KJstLd5G7B5Hth+d/AR8/xG
9txx5TSs533hz4pgD8x2xm+gbS6gpXhfUo0IdhgJDB/nbV7mZx7Zfa7ZGToPwjtMHz067z14GrSO
4G6UGzMf0zof0woy+aqwsg6fP3defp4gbZQ66Hw97kzceGrfaJXabZhv75Nq67viXd/htS4bD8+3
xJ+Ifj2I1uG7d+C/l0krppgf7Xwe7Ww7vAN8kXpBXV9+/ZMvXtHUirUqvwGqq9T0WHbSi3WH7s9/
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
yfT350qP57pzCq/rmdAnvZVxlaHTlvkKw4XLupryDYZWx9PStDd8zoqJ5kyre14lP1cONl2GbiRv
0jO/n/m3NVsHW6YXTyVo45TI5OPXvIcN1zuV591a1kqvdRvcrR1YRWsrrZUfrNxMZ6I4Gy43Lbx9
rGvZjf+sHz6UtXf/slVXyGPtM0TgzWV4lq4GByBt+hkLywKXKO5l1o1+gsHC+7DW+EssQkOwsbd3
UXMm/YpTelx6YhrQHDRM41Wd+QFomukKIYKDSvA9r4h6wDdTxlDgoHzxQll3Jvg5/6lA56igzYr8
mMaaPOPbDHnGfjcaTGg9y2YX4dsj2uG8VypfpnJtZTCFBw/roMRqvDu3aTrKK0olBSylheyigP4M
K3lu3esN9n6oyNpXxTin14vMwuiD/q9nKzMn60YLZhuhbmkzZ/vNJ26WnKfuv27Hr01eCC6ewNIf
l+JtHUOTq39Lzhhhljcm/7lgXZ1HwgJp++po+6py+/E94lS7zPnzojPh+fQcvnXroM3vpyUudvwJ
h4rWF08tExypxndXj1fJgGtuoFXnjWvt3daJFyn06D5IOm+KjNvWU7GfyA0JA3Z754ueMqSA/cfM
X8qZQ5m3Hra5sbL/i8vtxxoXXvvBnXbXx9wTVSup1++QXIkJ4cICUQsv+Wr6UyD1e1aqVMvDO0UH
MgitzRUeuyLDyTHth1KMoYilY79eoHwzseMOzB1GvnLY119//XZFO2koiRRu3/hi8B27xocrFuU1
xLHncprnGo3hm1Hqx773yv5FJ5d8uWMaiPkcu0zgmMl6WmuWFnW9KZF/PLbxPNZu+vDttn04rS0U
DkBaUSRvOd0/C6EoV5I86otouHd44eK97zJexkMWxVhDmUXheX1p1ymknvzqkBi4M3wmKI3MLbPx
9fy/F6Cldezr2X7iniuBpmwrgUN7Bv/EvS9Wo+ANSML5+IBkRlT8OuTrwm0sJayS0GPHeNH0Ccir
tykkvaLo9bUi6T3ytStnl2mP3g3jtztuVbfuHuMTTIkyp9YFJzxe1q3noUyX7b/9xCly458r8ytn
3Lxd7m6YrK7Xx7yMZuLfK6EsCwHF/iNBeSP/6f145Xm/2f1dpYWgJubmzzSN/5pg6aFB7NsLPHxH
MNs5nHI/MmPzys8sorl2uPp1TF7D5tt8T5op9HMHwQLIRpZJuiNS3YoAnNf+cgoLE6BrL92qp4Fk
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
ABwAY3NzMy9maWx0ZXJzL2JhY2tkcm9wL2JhY2tkcm9wZmlsdGVyLXByb3BlcnR5LWNvbXB1dGVk
LXN0eWxlLWNyYXNoLWxvZy50eHRVVAkAA0AtvldALb5XdXgLAAEE9QEAAARQAAAATm8gY3Jhc2gg
bG9nIGZvdW5kIGZvciBEdW1wUmVuZGVyVHJlZTo1OTI3Ni4KUEsDBAoAAgAAAF2DGElH6bBNLQAA
AC0AAAA5ABwAY3NzMy9maWx0ZXJzL2ZpbHRlci1wcm9wZXJ0eS1jb21wdXRlZC1zdHlsZS1jcmFz
aC1sb2cudHh0VVQJAANCLb5XQi2+V3V4CwABBPUBAAAEUAAAAE5vIGNyYXNoIGxvZyBmb3VuZCBm
b3IgRHVtcFJlbmRlclRyZWU6NTkyNzQuClBLAwQKAAAAAABcgxhJAAAAAAAAAAAAAAAADQAcAGNz
czMvZmxleGJveC9VVAkAAz8tvleELb5XdXgLAAEE9QEAAARQAAAAUEsDBAoAAgAAAFyDGEmoNmaq
LQAAAC0AAAAvABwAY3NzMy9mbGV4Ym94L2FsaWduLWFic29sdXRlLWNoaWxkLWNyYXNoLWxvZy50
eHRVVAkAAz8tvlc/Lb5XdXgLAAEE9QEAAARQAAAATm8gY3Jhc2ggbG9nIGZvdW5kIGZvciBEdW1w
UmVuZGVyVHJlZTo1OTI5MC4KUEsDBAoAAgAAAFyDGEmo2KPuLQAAAC0AAAAyABwAY3NzMy9mb250
LWZlYXR1cmUtc2V0dGluZ3MtcmVuZGVyaW5nLWNyYXNoLWxvZy50eHRVVAkAAz8tvlc/Lb5XdXgL
AAEE9QEAAARQAAAATm8gY3Jhc2ggbG9nIGZvdW5kIGZvciBEdW1wUmVuZGVyVHJlZTo1OTI1OC4K
UEsDBAoAAAAAAF2DGEkAAAAAAAAAAAAAAAARABwAY3NzMy9zY3JvbGwtc25hcC9VVAkAA0ItvleE
Lb5XdXgLAAEE9QEAAARQAAAAUEsDBAoAAgAAAF2DGEkQibDgLQAAAC0AAAA7ABwAY3NzMy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1wcm9wZXJ0eS1wYXJzaW5nLWNyYXNoLWxvZy50eHRVVAkAA0It
vldCLb5XdXgLAAEE9QEAAARQAAAATm8gY3Jhc2ggbG9nIGZvdW5kIGZvciBEdW1wUmVuZGVyVHJl
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
TNJNDEUjQlgPToEWZwRmDjR4GgMaP3o8RXFCjD000t/V1MRAZG0YPO6yQX+bzvfCQFcpLROZcGqA
ryBBRAYkZW1hFwVSVqlQEaiaoiMl9K62JhotB5k6z0jLrmbe2z8cKh2yNE7iEoWM6vYMkAqVtEGi
0VRFKRHEiVIB4iRDGBklxavtorGVE8wCiz0v+Qdk83k284eLfPq4idoyenl+hpqvoIc2m81W/nOW
F/7H7/5i/VQs/S/LBeaDKlb+Olt+Ksq73fXTdLUpuCpHZp2tPk8eF8vJl2l+5VdZ3dZPyyLLJw/w
d11c+WT/46pYl7dW9fdmw+eqJz9WPfyz1ysYgbK95+zhaTov2toLI0b/Y5ve+6GPHjj74/sOoO7m
s+8++g9gyeLR32pPV/54sc5m16FivXDoL4vVNC/m62uqoh4bXgj+26W/+gZ0VeSTxct6Ari9wFTO
FjCLRX5NCempIVD8b5feX8vpOvs4K6ASRGBbNe3xvv8NCtfF/JpS0ePDCwnV7tqKQvymm01dk5sL
Ap8azfVY/0JTaMz33iX9wd0bf/z328TveN4P3o3vza13vXu6QOtiz/Z9NPFDalut0QCkDZjCErlB
0GnpWX/qoUqxEnRVHihUv1h1wJa14rqZA1g5VV21Ml6D3g9qJEqz9dYnCm88Vx99A5eYw1KqzOQP
0WCqR4beXjK7kw90q9ohzj4hAdASSRCzTz2Ka8D1z5H/52DsfyrmpaaZA8754SCHXCCu7aAXld1O
kV8iqBTYrc0PN0U+LJQsz+HflQ9DgyLsHqFdejelMuUb/OLfzR+6ZlndeENze3tnTw9BxAjiW4Ne
ZPnzdH7ZDQ2jMCye0cJjnH2CztJu+gI6GI2NvfH79+ad68YA05EMvdEaiPvsfPGeHgInmZTYmnFy
grwlcA3vr+IjEsKwHL/OyVUIOpk4MzZnCQb4AYD2b0e38f3gdjx4M+rEVcEUTCaDoeknZ6rlYQl6
O3hzkzggm+5ekXKwJpNx8mF8uk4qy0Uzmdy/Gdg7dxoFzmFin0sO5+Nd5QmuIXty6NU847kihc5H
QLf+A4sb343N7flF26P9CvR3H4j1ZdVYOtWS2WDbi/rAkL1/AVBLAwQUAAIACACBgxhJc8NL1749
AABa0QAARwAcAGNzczMvc2hhcGVzL3NoYXBlLW91dHNpZGUvdmFsdWVzL3NoYXBlLW91dHNpZGUt
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
CgAAAAAANX8YSQAAAAAAAAAAAAAAAA0AHABkaXNwbGF5bGlzdHMvVVQJAANmJr5XhC2+V3V4CwAB
BPUBAAAEUAAAAFBLAwQUAAIACAAjgxhJo1f96FAAAACOAAAAMgAcAGRpc3BsYXlsaXN0cy9leHRl
bnQtaW5jbHVkZXMtdHJhbnNmb3Jtcy1zdGRlcnIudHh0VVQJAAPRLL5XZia+V3V4CwABBPUBAAAE
UAAAAHMvSizIyEwuds7PK0mtKLGySk8tcQ7x1dBUyCxWyMsvUahMLVFIzs8tSCzJTMpJVSjPLMlQ
KEpNzi9KycxLB8qAtRXrcbmjG1SMZhAxhgAAUEsDBBQAAgAIACODGEnylpXVRwAAAEkAAAApABwA
ZGlzcGxheWxpc3RzL2xheWVyLWRpc3BheS1saXN0LXN0ZGVyci50eHRVVAkAA9EsvldmJr5XdXgL
AAEE9QEAAARQAAAAcy9KLMjITC52zs8rSa0osbJKTy1xDvHV0FTILFbIyy9RqEwtUUjOzy1ILMlM
yklVKM8syVAoSk3OL0rJzEsHyoC1FetxAQBQSwMEFAACAAgAgYMYSd8lAwR5QgAAWuwAACIAHABE
dW1wUmVuZGVyVHJlZS01OTMxMy1jcmFzaC1sb2cudHh0VVQJAAOBLb5XgS2+V3V4CwABBPUBAAAE
UAAAAORcbW/buLL+fPUr9OFi4bR1KorUK4IWjmz3pJs3xE53cReFQEmUrRNZ8kpyGp9ff4ekXyTZ
aaNtz6LAGkVjS+TMM8PhzJAc6bbIQ1aWrtr8DFeL5R3LIlZMC8bUPwwHI/xZuaXVvN0UPm8/5elq
wcq3n24u769Gb1+9bfZXLiKWVUmcsMJ9novyiRVlkmdtBu/fv1e8PGLqdL1kzZu/22bfJGrvmlbJ
IzsBfAUwUm9bQt2uq3mecSl0w/is3LFymWdlEqQNcuVc/UMn+mflvmSFejFs4zA0pChDWrG302TR
AqJryOxrdl8nKjJd3XQxOiWOpvY1S9OUm4l6TLYrGqpw63cVaafwz1B7iIyRozknAHGZF9VBL4SU
QZZn60W+KtX7+xpGzfTOTdOw+6OBTfpoaJK+PRiY/XNrOHRsPDxHQ0NRFI5cHXyhD0ydJFnI1PM8
r1zVIJqmqSUL8ywqFcUraDlnkTqdF4xGOx42jNj4g/pbXjykSVmJL6Ap2UpRRk8hW1YAtzlQo989
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
anwypkGaNAM11Wh1cq4fznJkq+LtyST9ew2KwfTm7PJuvlpu8QCuHr9+hZF/AQ7D9Obm4ezrdL44
u/5xdrf+vLg/+3Z/h1D9i4ez9fT+06JExdafVw/bG7+UN7OePnz5uLy7//htNf/lrG240TbP/DiD
v9eLX85I9+LDYl1CDpvr9cRPDU9+bnj4R4creANlvq/T2efV7WJsPmzMqf/cnJMPl2eYVd59v+/g
qTe3Nz/OMCcW79wtz3bG1y9n7+/W05uXTJNze3l2v3hYzRe365dU83Nx+UKJv/397OEPWFeL+ce7
x/VHoO3xtjTbhRnnL7HC9vIFV3/7++S/71fr6fXNAsbA+Xcj03P+6uwPuLle3L6kYIpdvqAw6H4m
e87aS515XpJfXxC41J0LB3phLUx1NnmXXl28+efZ+/95m84O/Plw8e79b+715OX+z6FHN7cn4dUZ
5hHhUntYY5R57GEK++NXfHRVSkWP/dk9+lBs2/Z/PBx4Fh+NG38pbOZbWPGPZaf0/4Mw8A4n/7g6
+8f/Vnb2vA3CQBje/StuDFKFGsJXxhMghIyD1DhqNyuNUZWBdEj7/3uHi9RWMla9AQ/Hy32YszzQ
aXhz/wgm45d3+1fNNllBN24XfbQRo+U+J3S5cbkElE5na+nwDqSM26wfEYmEnBt+QD4Dw+3ic0cp
hcK+HyoI+IsaCbWgm7OdrrfIS+8SKY4aKwntCZ9qv9ksj7dKHD8otBAYtNIuFBWRmSWgblbQgq0+
j6/8jVKzU/zvxagxNWoMCdizB4zpFLZNgM0S8qsxfXeQTU0B9ht9zJ0A3bzowPPzNC4ZPR26aqjX
JWQZhWCaixZ448RP0hqTrH6XwTROvO3vH6n8T9XqQWMPwcjGRevQB6C0+rz/SnKX3E5qmtKERHOM
+AJQSwMECgAAAAAAaoMYSQAAAAAAAAAAAAAAAAgAHABlZGl0aW5nL1VUCQADVy2+V4Qtvld1eAsA
AQT1AQAABFAAAABQSwMECgAAAAAAZYMYSQAAAAAAAAAAAAAAABEAHABlZGl0aW5nL2RlbGV0aW5n
L1VUCQADTS2+V4Qtvld1eAsAAQT1AQAABFAAAABQSwMECgACAAAAZYMYSSaTERQtAAAALQAAACgA
HABlZGl0aW5nL2RlbGV0aW5nLzUyMDYzMTEtMi1jcmFzaC1sb2cudHh0VVQJAANNLb5XTS2+V3V4
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
CQADMy2+V4Qtvld1eAsAAQT1AQAABFAAAABQSwMEFAACAAgAQn8YSTiZ4A6uAAAA3gMAAEwAHABm
YXN0L2NhbnZhcy9jYW52YXMtY3NzLXNpemUtYWZ0ZXItaGVpZ2h0LWNoYW5nZS13aXRoLWRpc3Bs
YXktZmxleC1zdGRlcnIudHh0VVQJAAN7Jr5Xeya+V3V4CwABBPUBAAAEUAAAAO2PvQrCMBRGd58i
Yx3a9MdoKThoUXAQC45FyjW91Ghsym0U8vZWHBR8hW7nm853ykhkIs3CJIgScWLK4h1618oqN50r
yHRI1rFeNS1ojTVDoqUfxYtUMO+2Vc0aejycryjthshQtWufoFUNFusp89TvAsv40TxIYg7ygjw3
hHusFXzJj8Q8DuJZyAe1NdZ12PNCg0Pig+xD1ep9MJBMqxZZHKbppBwrxoqx4q/iBVBLAwQUAAIA
CABDfxhJFfxngIcAAAAaAQAAJgAcAGZhc3QvY2FudmFzL2NhbnZhcy1saW5lRGFzaC1zdGRlcnIu
dHh0VVQJAAN+Jr5Xfia+V3V4CwABBPUBAAAEUAAAAM3OPQ6CQBRF4d5V3A1IgIjixJgQMDZWamcs
RrnRSYY35jH4t3pZhuX5qlMNN+QzZIUpSpPOwVefpXniw9V6NEP32FNa6lHJU5EuluUZq41q0LVB
va2DRL7jgXHnhI3t7wZOnta7Fu1YsKr2Y2AjPG0fEYSgZ0eJ6IYRLoQEmX6pIZlU/zTzA1BLAwQU
AAIACACBgxhJSauA8uJBAAAE+gAANQAcAGZhc3QvY2FudmFzL0RyYXdJbWFnZVNpbmdsZVBpeGVs
U3RyZXRjaC1jcmFzaC1sb2cudHh0VVQJAAOBLb5XMy2+V3V4CwABBPUBAAAEUAAAAOxcbW+b2PJ/
ffkUvPhr5bTF4TwCVtUKA+6mN2miOOmutFpZPBwS7trgBdw299P/54AfAOM23u292tU1qhrb5zDz
mzlzfjODDTd5FoqiGKntw10tlrcijUR+lwuh/sIsgtCvyo1fPnanwnH+MZuvFqI4/3h9eX/lnb84
b5+vXEQiLZM4EfnosBblo8iLJEu7Ct6+fas4WSTUu6elaA/+bHKNU3XwwS+TT+IM8OWgSL3pGHXz
VD5mqbQCU/KrciuKZZYWSTBviSse1V8wxb8q94XI1Qu3i4PpSFFcvxTnd8miAwTriGu6qWGqIj7C
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
nMVi6d7vlmbYqh6cQHtxst9m/VZonc2Vcj2GTBerxT3mmsDbVei4czJ9ch69dkjMTxEoqwIktmsM
NBO0GYxDJKl1Qv8OqFCNQPmSvqAgBJJ/7YKIBESR54ROl8hQJCCKsPPjp9kinD2sWhlgwRBE0Sxw
pn4HWpNJ0MXsYe57IDbtvaK8pDX0/w47eCU42DQAfXqYuUvvPgmmCQO7l2aL4HZcOyQYVCtQKkOw
T/cYz9JaOHTrF+xWuAydBekUAlVMS9A/CAjrW15TnVJlZLE5A5MMVlb5D1BLAwQKAAAAAABMfxhJ
AAAAAAAAAAAAAAAADAAcAGZhc3QvaW1hZ2VzL1VUCQADkCa+V4Qtvld1eAsAAQT1AQAABFAAAABQ
SwMECgACAAAATH8YSVGnghgxAAAAMQAAAC0AHABmYXN0L2ltYWdlcy9sYXJnZS1zaXplLWltYWdl
LWNyYXNoLXN0ZGVyci50eHRVVAkAA48mvlePJr5XdXgLAAEE9QEAAARQAAAAaW5pdEltYWdlQXBw
bGVKUEVHOjE0MTY6IGZhbGxpbmcgYmFjayB0byBsaWJKUEVHClBLAwQUAAIACABMfxhJIY+9ODIA
AAAzAAAALAAcAGZhc3QvaW1hZ2VzL3BkZi1hcy1pbWFnZS1jcm9wLWJveC1zdGRlcnIudHh0VVQJ
AAOQJr5XkCa+V3V4CwABBPUBAAAEUAAAAHPLSSxJdUlNzk9JtVJIAdGZeekKqUVF+UVWCpl5yflF
RanJJQopiSWJCskZqcnZelwAUEsDBAoAAAAAAE1/GEkAAAAAAAAAAAAAAAAJABwAZmFzdC94c2wv
VVQJAAORJr5XhC2+V3V4CwABBPUBAAAEUAAAAFBLAwQUAAIACABMfxhJcv1l8oUAAADpAAAAJQAc
AGZhc3QveHNsL3RyYW5zZm9ybS14aHItZG9jLXN0ZGVyci50eHRVVAkAA5AmvleQJr5XdXgLAAEE
9QEAAARQAAAArU4xDsJADNv7inygZGC7GSbYQHRO21SclLtUuZzU/p6DfoHFsmzL9qRpjUIeNQOb
qQVYovAPAiK+VGrighdywuvwwIHHW3S8067Vn1y84ELFcSuCxkWrTS2+va2fdTo1FSRmhjOwcOLs
ENOq5l1zwkEhQM00tlFXEKX5T+P9Uc/z90X3AVBLAwQUAAIACABMfxhJzgkoAo0AAADwAAAAJwAc
AGZhc3QveHNsL3hzbHQtYmFkLWltcG9ydC11cmktc3RkZXJyLnR4dFVUCQADkCa+V5Amvld1eAsA
AQT1AQAABFAAAACljjEOwjAMRfeewhcoHtgywwQbiM5O64pITlw5jgS3J9AjsHz5/2dbf9a8JSFP
WoDN1AKsSfgnAREfKi1zxRM54Xm64cTxkhyv9Nbmd65ecaXq+KqCxlWbzX29Ox8jLWPKm5qPzdKh
ZyCpMByBhTMXh50OnYR9hACtUOwFXEGUln+LFK1tfn6f9DuR4QNQSwMEFAACAAgATH8YSc+PZg5Q
AAAAoAAAACQAHABmYXN0L3hzbC94c2x0LWNvbnRlbnRUeXBlLXN0ZGVyci50eHRVVAkAA5AmvleQ
Jr5XdXgLAAEE9QEAAARQAAAArcyxDcAgDAXRnin+BlHabIPACEs2RpaJMn7IDmmuu1dMJ0sOtgFy
N7/QWAgQHoQTJKQ0ArZirkg87ixcsbsIzRxK0a3uyyyVv7Cnh8rxkS9QSwMEFAACAAgATX8YSYFK
d61LAAAArAAAADQAHABmYXN0L3hzbC94c2x0LXRyYW5zZm9ybS10by1mcmFnbWVudC1jcmFzaC1z
dGRlcnIudHh0VVQJAAORJr5XkSa+V3V4CwABBPUBAAAEUAAAALXMsQ2AMAxE0T5T3Aq0bOPABVly
bGQs5keiYAPqr/e3mKealIaDmZErhhoBUycW0DjphVtSpRtbcudQ11fEwGHRxb6O4lVt++X6AFBL
AwQUAAIACACBgxhJwAiQ4M0DAABlDgAAEQAcAGZ1bGxfcmVzdWx0cy5qc29uVVQJAAOCLb5XhC2+
V3V4CwABBPUBAAAEUAAAALVXTW/jNhD9K4FOLWDWH8rHJsUegk3QLrptgyjtHorCGFFjizBFEuTI
sbrY/94hJWcPrU9hfLFESm84M2/ejG7v7taP99Ufn56q774UhIFCcfOlkCGU8T+04DC8XAnbU1AN
xoU96P5/toRUXmoUi0X5Q0udjg94dNZTcVM83v/ExqqPv/9WzAo8OJSEDa8/3FYVr4CkHviN4sPj
bfVz8XV2Cnr1dtDnr4bmH6NLb7UWwYBLIfp2K5y3Dj0NwoEPymxfb3BWbKwhsUGg3qMISMS4QXg0
DfoMJmb84iaSY02D4+z/Vbx/X/wd7SpN6BMLxstv3knbuZ5BRaBBY4aE1SB3DaNHlOP1GxtNodV4
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
SUig8C6LAgAAqisAADwAHABodHRwL3Rlc3RzL21lZGlhL2hscy92aWRlby1kdXJhdGlvbi1hY2Nl
c3NpYmlsaXR5LXN0ZGVyci50eHRVVAkAA6EmvlehJr5XdXgLAAEE9QEAAARQAAAA7ZpNb9pAEIbP
5VfMsTkEbD4KuG0qatISKaksCGqlqIfFHuxV1rvu7poo/z5joFGiSG3TVFWjjriwy+w7z8y+Yw4w
qXPo9iEcRINR1BsDXrkw6LaVSYUC61OLlbFe6vxiEAxH/a/wZoqrOj+KwKHOztA5keNn6YtYeMyN
vY7gpa6VOmhNfltZaukbyQWpS6NP9NpE8CWJITVaY+ppj2I2QsmsdfFdvz0ek8bs/DyZ47canYe1
zGfeV/vlVGZzTFFucI6uMtphLJRaifQyAm0aaY/awynq3Bdgd6EZHAJaG5sMQTroBsHPEtJyWpfV
B6mFWs5PJ5qylsbjJMsslROB2L2BsDtsB/QK6RjFQm0VFIQbdTq3H0WjIAg6JWZSdOiQqW2KrlMo
18lRo6WOH25M1q6K6l1W05Ia87Y58guQ+2VskVSOrTVUZFlSByJAnZqaumGpfKGb+o2NYHXtEazQ
OdJmdrdlateyw10kbT9oVp+qCZobXhx/TJZnyRFMvMey8p/QXxl7eWboxo1doK+r5jY8mcs31oC6
Ar2LgXIX9Pq2g5Rja6a/lOWen/vBoybF7wfl1OQ5RbynQ2Q7Oqgwu4sf9v5FfC+sj40m5+xNtp13
U1YKm9WM/KCQLBKLtCDPkLYWK6oMmumip4R7Wu+WDm3zDJjKdOvO+9r0vGm9OGiVFebdSliKhQRd
Yg2Nijt3iWgane69KTUkJ1Og3OAKUyuSQQh7TZcCmgyFYNZrSgm94avHSoZ3JAcPFQej7ogp/zvK
pzj/x9+vfEt8Szzx7CW+JaZkSqZkSqZkSqZkSqZkSqZkSqZkSqZkSqZkSqZkSqZkSqZkSqZkSqbk
32H/yD8bWfnZK4fPQvkGUEsDBBQAAgAIAFN/GEm5Z9o/FwEAAL8CAAAyABwAaHR0cC90ZXN0cy9t
ZWRpYS9tZWRpYS1kb2N1bWVudC1yZWZlcmVyLXN0ZGVyci50eHRVVAkAA50mvledJr5XdXgLAAEE
9QEAAARQAAAAtZBBSwMxEIXP9lfMUUGWbOtSDWvRtohCRbCIB/GQTabp0jQpmVmk/95p60HxZjGH
kHnJ+ybz6rqu4a714y3jnDOaNYxk/ZTmbJhmyT9FfEbjNHx7LZuDtIBLaEQkuAEFnNIKykKpajBQ
QGipEA1sWm8CMp5DubcRjK7lKPdF77bz0L+AstLVpR4MAT+oVP0iJGsCZLYZNylzG/1bpYZX6h3q
h7hIIw0heS8yEJvMVBR/QU2x6bywCPkRiYzH2YE6FtNKgxgDumPAu89NUly0vsuG2xRfW15ODnlI
dW+iC5g1TIxdopMIMZpGekJj7Aqjo+OmeiHMu7ymrWX9i63htHdydlSH6L6C289lGH3KW+HGLoT/
JH8CUEsDBBQAAgAIAFN/GEmbxF3O5AAAAKwCAAAqABwAaHR0cC90ZXN0cy9tZWRpYS9tZWRpYS1k
b2N1bWVudC1zdGRlcnIudHh0VVQJAAOeJr5Xnia+V3V4CwABBPUBAAAEUAAAAK2RQUsDQQyFz/ZX
5NheZNu6tA6l0G4PCgqCiELxkJ1Np0OnSZnJKv57Z8WTnup6TEi+9/Kyah1MrmBcmnJupjOg9zQu
JpdBLAaIaiOdJKpnty2L2XXxCosN1a1bGkjEzT2lhI6eve4rVHISPwwMuQ1hNFj9mezZa4d8zHQv
fMs7MfDyUIEVZrKae3nmDYNvfqjMz/Kv3/bvxLk8sc5LBwN5MVAvsGLUSnjnXRuxc/uVjxxPgbrq
BrkJFA1UaPfUQAHEWGdNqNEecqqp31VPiWKX2cZbNb/Y+T+Di1EvhXP+/p/kT1BLAwQUAAIACABU
fxhJUjTFqeoAAADGAwAAOQAcAGh0dHAvdGVzdHMvbWVkaWEvbWVkaWEtcGxheS1zdHJlYW0tY2h1
bmtlZC1pY3ktc3RkZXJyLnR4dFVUCQADoCa+V6Amvld1eAsAAQT1AQAABFAAAADdk8FKA0EMhs/2
KXJsLzKtXayDCO32oKAgiCgUD9nZdDp0zJSZrOLbmxVvnurixWNC8v3JH7LsPMzmMK1stbBnC6D3
MjWz05gcRsjiMh1SlsB+U5nzC/MCl2tqOn9loRC3d1QKenoKsqtRyKf8YWHMXYyT0fLX5MBBeuSD
0kPiG94mC8/3NbjETE40pzVvGEM7QKWQfI9/m7zXipU27S1oY6RBYMEsdeJt8F3Gftovf9LrIVIf
XSO3kbKFGt2OWjBAjI1qQoNur66WYVs9Fsq9Z+vgxP5g631GJ5NBCn9196PIc/PPycd8wSdQSwME
CgAAAAAAZH8YSQAAAAAAAAAAAAAAAB4AHABodHRwL3Rlc3RzL21lZGlhL21lZGlhLXNvdXJjZS9V
VAkAA7smvleELb5XdXgLAAEE9QEAAARQAAAAUEsDBBQAAgAIAFh/GEl0k6zGUQEAAJcEAABCABwA
aHR0cC90ZXN0cy9tZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2UtYXBwZW5kLWJ1ZmZlci1z
dGRlcnIudHh0VVQJAAOoJr5XqCa+V3V4CwABBPUBAAAEUAAAAM2Qy04CQRBF935F7YQFzPsBiQsB
iSaSGFE3xJCiuwY69nRPqnvU8esdEx8r1rKr3FSqzj2bKJtm5TRNx1lcPEPFuF+hUZXVcnvXusOs
8+TAqb1BrUkCMV+MojxMcxi8LNXv8hWz5e2jofeGhCd5Y5RfoMchDNYkrJFwXvmuOQf0tgYywrbG
E5Mc9gkEa9uyoDmKAwVzy7QiqfBvGkVZHo/jNAzu2HrbHyIXLC3X6K/RSE3sgpV9VRR8IX0Ny75I
Tcb/8I0FaGUIojwJz+IwykdhOYpT+K5fjCdlBIu2bu7JSOIHJtpkYVGU0yKN0qxXc7M3lpXZQ9/G
s9UPqqYdOgJHHnYdCK36f7AjgW2fXj6tsW40zdqqIl4o12jsbrEjhjd0gFL2Nr0FBNcZcWBr1Afx
EbTkCFoyScp/RsuOWUuSMvxftOJkrU3Ck7U2SU4B7RNQSwMEFAACAAgAWX8YSaHw8009AQAAegMA
AFAAHABodHRwL3Rlc3RzL21lZGlhL21lZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1jb25maWctY2hh
bmdlLW1wNC12LWJpdHJhdGUtc3RkZXJyLnR4dFVUCQADqia+V6omvld1eAsAAQT1AQAABFAAAADl
kc1OwzAQhO88xd6ghzbOb0MlDrSlAolKiAKXClVbe5NaOHa0doDw9KRCwEP0Nhqtdueb3cb5LC9n
WTlJxeUrVIz1Gq2unFG7h84f5n0gD17XFo0hBcR8NY4LkRVw8bbSf8M3zI53z5Y+W5KB1J3VYYkB
R3CxIemsgvMq9O05YHANkJWus4GY1GhwINq4jiUtUB4oWjimNSmN/2oc50UySTIRPbALblhEPlo5
bjDcolWG2Edr964pOkY6itUA0pANv/kmEoy2BHGRirPtP3ScnSL0yXw6EXExFuU4yeAHPxeTNE1g
2TXtI1lF/MRE21xMp+VsmqVpKV7hrraOta1hoAnszJNuaI+ewFOAfQ/S6OEe7EliN7jXLxtsWkPz
rqqIl9q3Bvt77InhAz2gUkObwQGC7608sLP6i/jsG1BLAwQUAAIACABafxhJRlC7oTwBAAB6AwAA
UgAcAGh0dHAvdGVzdHMvbWVkaWEvbWVkaWEtc291cmNlL21lZGlhc291cmNlLWNvbmZpZy1jaGFu
Z2UtbXA0LXYtZnJhbWVyYXRlLXN0ZGVyci50eHRVVAkAA6wmvlesJr5XdXgLAAEE9QEAAARQAAAA
5ZBPa8JAEMXvfoq5VQ8xf0yiCD1UrVSoINX2IiLj7iQu3eyG2U3b9NM3Qls/hLfH4zHzfm8fZ9Ns
Ms2iYZqMD1Awlms0qrBaHjeNO89aTw6cKg1qTRKI+T6I8yjNof++VP/hR2bLx1dDXzUJT3JllF+g
xwH0tySskXBX+La+A/S2AjLCNsYTkxx0DoRb27CgOYozhXPLtCap8KqCOMuTYZJG4Yatt90hcuHS
coX+CY3UxC5c2w9F4aXSRSw7kIqM/+s3FKCVIYjzUdTbX6FH8S1C57cCnURxHkSTIEnhFz8ZpukE
Fk1Vv5CRxDsm2mfReDyZjtM4zbMDrEpjWZkSOhrPVu9URSd0BI48nFoQWnX/4EQCm859eNtiVWua
NUVBvFCu1tg+Y0sMn+gApezW9BYQXGvEma1R38S9H1BLAwQUAAIACABgfxhJqT9iu4sAAACbAAAA
OQAcAGh0dHAvdGVzdHMvbWVkaWEvbWVkaWEtc291cmNlL21lZGlhc291cmNlLXBsYXktc3RkZXJy
LnR4dFVUCQADtCa+V7Qmvld1eAsAAQT1AQAABFAAAAANyLEOgjAQANDdr7gfwLSEWmDTsJg4KXEx
Dkd7YJPSkivE1K+X7eWVQp4KURdlBVK1qmmFOJaNhG6blzsFS9wz0UsJretWV7JS+g3XKUR2YQIT
w8rR926mARNBohWGDMY7CrvI4Lbv+fnAefF02caRuHNp8ZhvmInhiwnQWrKwRkBIOZgPx+B+xIc/
UEsDBBQAAgAIAGJ/GElVxxEmqgAAAAcDAAA7ABwAaHR0cC90ZXN0cy9tZWRpYS9tZWRpYS1zb3Vy
Y2UvbWVkaWFzb3VyY2UtcmVtb3ZlLXN0ZGVyci50eHRVVAkAA7cmvle3Jr5XdXgLAAEE9QEAAARQ
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
OqiAGFvzhBb90VIt4656LJSHzDbRq/vFtv9MzqajHP7++xdQSwMEFAACAAgAXX8YSXo+O4IXAQAA
PQIAADYAHABodHRwL3Rlc3RzL21lZGlhL3ZpZGVvLWVycm9yLWRvZXMtbm90LWV4aXN0LXN0ZGVy
ci50eHRVVAkAA7ImvleyJr5XdXgLAAEE9QEAAARQAAAAvY5BT8MwDIXv+xU+boe2aWm1LkJIVSs0
JJCmMgTStEPWeFlEmpQkHfDvyTTginZBvvjZz59fNQrIckgLWpS0mAO+u5RksTIdU2B9Z3Ew1kst
NgWZL8gWrhvcjeKGgkPNH9A5JvBZ+kPNPApjPylM9ajUbFL9E7m8gCy19CfkY6BLo+/03lB4WdXQ
Ga2x82EWPEemJJ9sfvgxKcotLNfrVYtvIzoPeymW3g/fspG8xQ7lEVt0g9EOa6bUjnWvFOx5weEQ
/EGd95CTHKZorbEQpdniqpzBPvQnE02SNJvHJFRKS0JIwg26SBsf4Yd0Pu4HFH+FC7IZ++FWaqae
2vtKh4S98VhxHjI4CuzcwO+rcBa8MFp1QYovUEsDBBQAAgAIAF1/GEks+AJpwwAAACQDAAAsABwA
aHR0cC90ZXN0cy9tZWRpYS92aWRlby1sb2FkLXR3aWNlLXN0ZGVyci50eHRVVAkAA7ImvleyJr5X
dXgLAAEE9QEAAARQAAAA7ZExiwIxEIVr/RVTeo2s4nIajgNdizvQUizEYjaZjcE4kWSWw39vTuzs
XOyEaQbmfY95b95aGE9gVKpymgfoL42K8dAHjR6i6EjnEMWx3ZXF56zYw9eS6tZ+K0gka0oJLa2C
tflikUVHBVnoyfTnz4MFo1SBG2fbiOICb50cqnA6e/rffpCNp6igQn0gAwUQY509oUZ9JDapiznJ
JlH85SYsnRb1wFYw6Pc+OjmwuQd3+wuFbIiXzOXW+27kdyOvaOQKUEsDBBQAAgAIAF1/GEkspyms
4QAAAGwDAAAvABwAaHR0cC90ZXN0cy9tZWRpYS92aWRlby1wbGF5LXByb2dyZXNzLXN0ZGVyci50
eHRVVAkAA7ImvleyJr5XdXgLAAEE9QEAAARQAAAA1ZHBSgNBDIbP9ilytBfZli7qIELdHhQUBBEF
6SE7m06HTpMyk1V8e7PizYPgXhRySUi+/Pmz7APMFzCrXX1mAfRWZtX8JInHBFl9poNkjRxe6ur0
vFrDxYraPlw6KMTdHZWCgZ6ibhtUCpLfHRxzn9J0svw1OXLUAflg9Ch8wxtx8HzfgBdm8mo163nF
FLsRW/6/fv2SfyshWMeVDe0c2GCiUWDFrI3wJoY+46D20x/ZHxIN2TVylyg7aNBvqYMKiLG1ndCi
35mrZdxVj4Xy4NkqenXf2PafydH0T/79J/IHUEsDBBQAAgAIAGF/GEmUnmwghAAAAMAAAAA9ABwA
aHR0cC90ZXN0cy9tZWRpYS92aWRlby1wbGF5LXN0YWxsLWJlZm9yZS1tZXRhLWRhdGEtc3RkZXJy
LnR4dFVUCQADtSa+V7Umvld1eAsAAQT1AQAABFAAAACdzDEKAjEQheF+TzGlNpJdDGoQYVkbC0Gw
UBCLmB3jQJhIMlG8vfEKwqt+Hl9fPHRzaLXRyzrAd25VNwvR2QBJXMJnTELsL1otVuoK6y3eit8Y
yMjjHnO2Hk8kj8EK+pg+BiZcQpg2/d8yMcmPPFadIu/4Hg2cDwO4yIxOaquflw00Nl9QSwMEFAAC
AAgAYX8YSVlLQaW6AAAAkgEAACsAHABodHRwL3Rlc3RzL21lZGlhL3ZpZGVvLXF1ZXJ5LXVybC1z
dGRlcnIudHh0VVQJAAO2Jr5Xtia+V3V4CwABBPUBAAAEUAAAAKWQMYsCMRCFa/dXTKmNxMVFDCLo
Wih45WEhV8wmYwzGiSSzyP37i2Jnd5YP5n0f81a9g3oKk0Y3c61qoHueqHocosEASUyiW0zi2R0b
NZurH1hsqOvdUkMm+aKc0dE+Olcu1qV00VCKgWy1+j9YMEkb+eRdn1B85IOXcxuvt0CPtEW2gZKG
Fs2ZLCggxq44oUNzIbb5EznJd6a041PceCP6ja1hWA1GHxnYvoZ7/oVCLqbfwuU+hFH1B1BLAwQU
AAIACABhfxhJ/MJ8PeoAAABYBQAAKgAcAGh0dHAvdGVzdHMvbWVkaWEvdmlkZW8tcmVkaXJlY3Qt
c3RkZXJyLnR4dFVUCQADtia+V7Ymvld1eAsAAQT1AQAABFAAAADtksFKA0EMhs/2KXJsLzJdXKSD
CHV7UFAQRBTEQ3Y2nQ6dZspMVvHtzYo3Pbl4KPSYkHx/8ifL3kN1BvPa1gtrKqD3MjfVaUwOI2Rx
mfYpS2D/UpvzhXmFixW1vb+0UIi7OyoFPT0F2TQo5FP+sDDlPsbZZPlncuAgA/JB6SHxDa+Thef7
BlxiJiea05o3jKEboVJIvse/Td5rxZU2bS1oY6RRYMEsTeJ18H3GYdovf9JuH2mIrpG7SNlCg25D
HRggxlY1oUW3VVfLuK0eC+XBs1VwYn+w9T6Tk9kohf+6+yGSj796/NXfyJ9QSwMEFAACAAgAYX8Y
SVI5O9zeAAAAUgIAACsAHABodHRwL3Rlc3RzL21lZGlhL3ZpZGVvLXVzZXJhZ2VudC1zdGRlcnIu
dHh0VVQJAAO2Jr5Xtia+V3V4CwABBPUBAAAEUAAAAKWRQUsDQQyFz/ZX5GgvMl26SAcp1O2hBQVB
pIJ4yM6m06HTpMxkFf+9s9Kb4ME9JuR9L3lZ9R6qOcxqWy+sqYA+88xUN1EcRkjqEp0laWD/Vpvb
hXmHuzW1vV9ayMTdI+WMnnZBDw0qeUlfFq65j3E6Wf2bHDjogHwu9CC85b1YeH1qwAkzOS29MvOB
MXQjXDLpZf0H8b5M3BfR0UIRRhoFVkzaCO+D7xMO2/7kI6dzpKHaIHeRkoUG3YE6MECMbfGEFt2x
pJrHXfWSKQ2ZrYNT+4td/jO5mo5y+Pvv31BLAwQKAAAAAABsfxhJAAAAAAAAAAAAAAAAEAAcAGh0
dHAvdGVzdHMvbWlzYy9VVAkAA8wmvleELb5XdXgLAAEE9QEAAARQAAAAUEsDBAoAAAAAAFF/GEkA
AAAAAAAAAAAAAAAqABwAaHR0cC90ZXN0cy9taXNjL2F1dGhlbnRpY2F0aW9uLXJlZGlyZWN0LTIv
VVQJAAOaJr5XhC2+V3V4CwABBPUBAAAEUAAAAFBLAwQUAAIACABRfxhJv+us2IUAAADAAAAAYAAc
AGh0dHAvdGVzdHMvbWlzYy9hdXRoZW50aWNhdGlvbi1yZWRpcmVjdC0yL2F1dGhlbnRpY2F0aW9u
LXNlbnQtdG8tcmVkaXJlY3Qtc2FtZS1vcmlnaW4tc3RkZXJyLnR4dFVUCQADmia+V5omvld1eAsA
AQT1AQAABFAAAACdzL8KwjAQgPG9T3GjLtLWBDWIUOriIAgOCuIQ0zMehDvJH8W3t76C68fHryse
WgWNNnpp5grwnZq6nQVxNkDMLuJTYib2F10vVuoK6y3eit8YSMjDHlOyHk+UH73N6CV+DEy4hDCt
ur9lYso/8jjqJLzjuxg4H3pwwowuj218XjbQUH0BUEsDBBQAAgAIAFl/GEm6A1T1xQAAAP4AAAA/
ABwAaHR0cC90ZXN0cy9taXNjL2RlbGV0ZS1mcmFtZS1kdXJpbmctcmVhZHlzdGF0ZWNoYW5nZS1z
dGRlcnIudHh0VVQJAAOqJr5Xqia+V3V4CwABBPUBAAAEUAAAAE2OTUvDQBRF9/0Vd6lgZVIzSQzS
TWNXQYofq1LKkLzWR5OZ8PJS0V/vFBR64S4uHLhnYZJsbor5IkViS1uU1tzbxwzV1A+v5FuSdyHa
WpPnaZk/FJlNd9hIGEj0Gx2PCvZn13GLQ5BLe6clEmNwM1xjIxrnfVA0watjj5ePur6dba9e8x2e
YrCuVpt9zT0rtVjGYM3Hv13xeFq55pOiw5mj3v6N9N+nxLNItPgSVvZHhCneXWAcuKM7qEy+cUrQ
gB+SMPsFUEsDBBQAAgAIAGx/GEkVNTWSegAAALwAAAAqABwAaHR0cC90ZXN0cy9taXNjL3hzbHQt
YmFkLWltcG9ydC1zdGRlcnIudHh0VVQJAAPMJr5XzCa+V3V4CwABBPUBAAAEUAAAAI2OQQ7DIAwE
73mFP0Ag7aEVvyHEVSwZjIyR+vwS5QPVXlY7h9kspREnI6mAqqIRPsQIp1mL3m+P1xpmtvgOIfhC
PXvFLkMzdv/tbG5Ph6PSRM0NpXVuwFQRnoCMBavBTZdJ4l0hwqhpnxoTYEnHf7oqfeTzupcsMS8/
UEsDBAoAAAAAAGJ/GEkAAAAAAAAAAAAAAAAUABwAaHR0cC90ZXN0cy9zZWN1cml0eS9VVAkAA7cm
vleELb5XdXgLAAEE9QEAAARQAAAAUEsDBBQAAgAIAFN/GEk0/7wAygAAAN0BAABVABwAaHR0cC90
ZXN0cy9zZWN1cml0eS9jYW52YXMtcmVtb3RlLXJlYWQtcmVtb3RlLXZpZGVvLWJsb2NrZWQtbm8t
Y3Jvc3NvcmlnaW4tc3RkZXJyLnR4dFVUCQADnia+V54mvld1eAsAAQT1AQAABFAAAAClkDFrwzAQ
hef6V9yYLMZOajCiBBJ7SKEdS4bS4SxdFGHlFKQzpf++ctqtU/F4D9737r39ZGHzCHWjmlZtW6DP
VFeb0geNHqLoSLcQxbF9b6q2rj7g6ZnPYafAB2uzDEkwSirLstj/G9XTMNnMSiSvlBJaevmhHrJp
VJCNnswS8PxcF/js7BRRXOCTk0sXrjdP83VENp6igg71hQxUQIxDzoQB9Uhs0rJWb4nivFfvtKg/
bAWr4mG9KIHN73D3XihkQ/zKXJ68XxffUEsDBBQAAgAIAFN/GElFbanu2gAAAKwCAABIABwAaHR0
cC90ZXN0cy9zZWN1cml0eS9jYW52YXMtcmVtb3RlLXJlYWQtcmVtb3RlLXZpZGVvLWxvY2FsaG9z
dC1zdGRlcnIudHh0VVQJAAOeJr5Xnia+V3V4CwABBPUBAAAEUAAAAM2RQUvEQAyFz+6vyHG9SLta
KIMIa/egoCCIKIiHdJqdHXY2WWZSxX9vKt48FsFjQt6Xl5f1GGB1AXXjmtadt0Afpa5WZ0k8Jsjq
Mx0la+Tw2lRtXb3B5Yb6MVw5KMTDPZWCgZ6j7jpUCpI/HSx5TOl0sf6H5MhRJ+Sj0aPwLW/FwctD
B16Yyav1bOYdUxxm+dcf+3cSgk1cm2jvwISJZoEVs3bC2xjGjJPb73zkcEw0VTfIQ6LsoEO/owEq
IMbedkKPfm+plnlXPRXKU2ab6NX9Ytt/Fid/+fcvUEsDBBQAAgAIAFR/GEnsn35f4wAAAKwCAABH
ABwAaHR0cC90ZXN0cy9zZWN1cml0eS9jYW52YXMtcmVtb3RlLXJlYWQtcmVtb3RlLXZpZGVvLXJl
ZGlyZWN0LXN0ZGVyci50eHRVVAkAA58mvlefJr5XdXgLAAEE9QEAAARQAAAAzZFBSwNBDIXP9lfk
2F5kt3VhHaTQbg8VFAQRBfGQnU2nQ6dJmckq/ntnxZOCIHvxmJB87+Vl1TuYX0BZmao2ixroLZXF
/DyIxQBRbaSTRPXsnquiLosXuNpQ27ulgUTc3VJK6OjR675BJSfx3cCU+xBmk9U/JHv2OiDvM90L
X/NODDzdNWCFmazmXp55xeC7byqXf/KvX/ZvxLk8sc5LBwN5MdAosGLURnjnXR9xcPuZjxxPgYZq
i9wFigYatHvqoABibLMmtGgPOdU07qqHRHHIbOOtmh/s/J/J2WyUwu9//wBQSwMECgAAAAAAYX8Y
SQAAAAAAAAAAAAAAACoAHABodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGlj
eS9VVAkAA7UmvleELb5XdXgLAAEE9QEAAARQAAAAUEsDBBQAAgAIAFN/GEn99SBF2QAAAPgBAABL
ABwAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvYXVkaW8tcmVkaXJl
Y3QtYWxsb3dlZC1zdGRlcnIudHh0VVQJAAOeJr5Xnia+V3V4CwABBPUBAAAEUAAAAKWQwUoDQRBE
z+5X9DG5yCZmMQ4iJJtDAhEEEQXx0DvTmQwZu8NMr+LfOyvevLnHgqpXVK16D/MFzBrTLM3VEugz
z+r5ZRSLEZLaRGdJGti/NvX1zeINbjfU9f7OQCa9p5zR0168L451CZ0MlGAkV63+D1ZM2gofgu8T
ahB+Dnps5f0caVBbZBcpGWjRHslBDcTYlU7o0J6IXR5TTvqUKe34IJtg1fxhG5hUF9NRDex+j/vZ
hUpe0lfhch/jGHLgoAPysdDLT8MGAy8PLVhhJjt8VzwfGIOrvgFQSwMEFAACAAgAU38YSdJcZlLZ
AAAA+AEAAEwAHABodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9hdWRp
by1yZWRpcmVjdC1hbGxvd2VkMi1zdGRlcnIudHh0VVQJAAOdJr5XnSa+V3V4CwABBPUBAAAEUAAA
AKWQwUoDQRBEz+5X9DG5yCZmiQ4iJJtDAhEEEQXx0DvTmQwZu8NMr+LfOyvevLnHgqpXVK16D/MF
zBrTXJurJdBnntXzyygWIyS1ic6SNLB/berlzeINbjfU9f7OQCa9p5zR0168L451CZ0MlGAkV63+
D1ZM2gofgu8TahB+Dnps5f0caVBbZBcpGWjRHslBDcTYlU7o0J6IXR5TTvqUKe34IJtg1fxhG5hU
F9NRDex+j/vZhUpe0lfhch/jGHLgoAPysdDLT8MGAy8PLVhhJjt8VzwfGIOrvgFQSwMEFAACAAgA
U38YSQcGa0amAAAAigEAAFgAHABodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBv
bGljeS9ibG9iLXVybC1kb2VzLW5vdC1tYXRjaC1zb3VyY2Utc2VsZi1zdGRlcnIudHh0VVQJAAOe
Jr5Xnia+V3V4CwABBPUBAAAEUAAAAN2PsQ6CMBRFd7+iIw5QKVaRxEGJJg5GEkZjyLO8YLVS8qgm
/XsxDvoNbudO59xjLDOZZkkaiak4Me3wDr1vVVWiK8h2SM6zXjctGIM1Q6JlGIt5Kllw2+pmDT0e
zldUbkNkqdq1TzC6Bof1mAX6d4FjvLQPUpiDuiDPLeEeaw1fCmM5E0PIhA9qZ53vsOeFAY/EB9mH
qtW7L1LM6BaZEItkdPyHEy9QSwMECgAAAAAAVH8YSQAAAAAAAAAAAAAAAEQAHABodHRwL3Rlc3Rz
L3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS91cGdyYWRlLWluc2VjdXJlLXJlcXVlc3Rz
L1VUCQADnya+V4Qtvld1eAsAAQT1AQAABFAAAABQSwMEFAACAAgAVH8YSdHq2mPqAAAAJgMAAHkA
HABodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS91cGdyYWRlLWluc2Vj
dXJlLXJlcXVlc3RzL3VwZ3JhZGUtaW5zZWN1cmUtYXVkaW8tdmlkZW8taW4tbWFpbi1mcmFtZS1z
dGRlcnIudHh0VVQJAAOfJr5Xnya+V3V4CwABBPUBAAAEUAAAAM1RO0/DMBDe+RU30oE8Grsp3qqU
ioEBRWWqGIxzbS1iO/WDgV/PtVSIoQKpQ0Fe7nzfS/pWJRd8KqrbrKrZM9wvl48t7hKGCGu9+bY2
HmXEO++db5wxaKMAtMolG9FjB9IC7o8CkvWo3Mbqd/rexjiAxzA4GxBYUVytfnYk/HGd665FhfoN
2yO/kX3/ItWrIMXD4YQ+XB9iwE05nkzqEaxp3oNEnpfjOivolWLKWJUTyyWvMOSR3DIzsN+y0TpP
ZlhoK/un9mFmKaBxEWddR2JBgPwc4MuJaISF5PvzQvCLV8L/cSX8ryr5AFBLAwQKAAAAAABUfxhJ
AAAAAAAAAAAAAAAAPQAcAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5
L3VzZXJBZ2VudFNoYWRvd0RPTS9VVAkAA58mvleELb5XdXgLAAEE9QEAAARQAAAAUEsDBBQAAgAI
AFN/GEmxpF4r5gAAAEMCAABTABwAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQ
b2xpY3kvdXNlckFnZW50U2hhZG93RE9NL2FsbG93LWF1ZGlvLXN0ZGVyci50eHRVVAkAA54mvlee
Jr5XdXgLAAEE9QEAAARQAAAApdDBSgMxEAbgs/sUc7SXZbt2YQlSqNuDQguCiIJ4mE2maWiclGRW
8e1N1Jsn2WNC5pv8/2ay0K5g2amuV1c90EdaNm3tg0YPUXSkc4ji2L50Td+0r3B9x4ewVuCDtfka
kmCUVNd1tfk3taVxstlKJHtKCS3tftSbPHRSkAc9mTlw+dwQ+ODsFFFc4CcnxyG8nT2V0y2y8RQV
DKiPZKABYhzzThhRn4hNmpfqMVEsfW2dFvXHVnBZXSxmbWDzW9x3LhSyIX5mlyfv58iOnRTyIeu5
p5JBwfP9ADowky7d5Tfv6J2pvgBQSwMEFAACAAgAVH8YSR6NxQf+AAAA+wEAAFMAHABodHRwL3Rl
c3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS91c2VyQWdlbnRTaGFkb3dET00vYWxs
b3ctdmlkZW8tc3RkZXJyLnR4dFVUCQADnya+V58mvld1eAsAAQT1AQAABFAAAAClkD9PwzAQxWfy
KW6kA5UTGggWqtSmA0ggoVYVQ8Tg2BcnqjlXtiP+fHquFSysue2ke+937zV5KctKXt/Ni4V4g3se
qLer9Q6WPNC5MfYvSGYgu0WHKuIOk4RGfN52Rlf5ja70Sbh2Xh9AQK8ikKerbwweAnag/UgJ8mw1
WigW8IcD/Ii5KOYsUw5C0gGPPiTGNKWoRMGvbLAd7VJCxPSMMSqLT95avjizJLDQoZlinFRItadu
sGNQafD0OqS+9u9Hh6ftQZFxGCTUSvdoOB2SapkJrdIHLiVOS7WPGB6p85tBc6X/vSVcZhezSQQy
v8Wdc6mE1ocv9qXRuVn2A1BLAwQUAAIACABUfxhJNzrLVoQAAADAAAAAawAcAGh0dHAvdGVzdHMv
c2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3VzZXJBZ2VudFNoYWRvd0RPTS9kZWZhdWx0
LXNyYy1vYmplY3QtZGF0YS11cmwtYWxsb3dlZC1zdGRlcnIudHh0VVQJAAOfJr5Xnya+V3V4CwAB
BPUBAAAEUAAAAJ3MPQoCMRBA4X5PMaU2ko0G1iDCsjYWgmChIBYxOxsHwkTyo3h74xVsH4+vLw7k
ClqlVaeXa8B3aoVc+GCNh5htxGeImdhdleiEvMFmh/fithoS8njAlIzDM+XHYDK6ED8aZly8nzf9
3zIx5R95qjoF3vMUNFyOA9jAjDbXVp+X8TQ2X1BLAwQUAAIACABgfxhJMlitUN4AAABSAgAASwAc
AGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3ZpZGVvLXJlZGlyZWN0
LWFsbG93ZWQtc3RkZXJyLnR4dFVUCQADtCa+V7Qmvld1eAsAAQT1AQAABFAAAAClkUFLA0EMhc/2
V+TYXmRbukgHEer20IKCIKIgHrKz6XToNCkzWcV/b1a8CR7cY0Le95KXdR9gsYR57eqVqyqgjzKv
FpdJPCbI6jOdJWvk8FpXV6vlG1xvqO3DjYNC3N1TKRjoOeqhQaUg+dPBlPuUZpP1v8mRow7IR6NH
4R3vxcHLQwNemMmr9WzmHVPsRrgU0p/17yQEm7g10dGBCRONAitmbYT3MfQZh22/85HTOdFQbZG7
RNlBg/5AHRibsTVPaNEfLdUy7qqnQnnIbBO9ul9s+8/kYjbK4e+/fwFQSwMEFAACAAgAYH8YSXT+
UTW3AAAAkgEAAEwAHABodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS92
aWRlby1yZWRpcmVjdC1hbGxvd2VkMi1zdGRlcnIudHh0VVQJAAO0Jr5XtCa+V3V4CwABBPUBAAAE
UAAAAKWQsQoCMRBEa+8rttRGTvEQgwh6FgpaioVY7CVrDMaNJHuIf28UOzstB3beY2feWhiOYFCp
aqLKEuieBuWw74NGD1F0pFuI4tgeqnI8GR1huqSmtTMFiWRLKaGlTbA2Xyxy6aIgFz2ZYv47WDBK
HfjkbBtRXOC9k3MdrjdPr7RCNp6ighr1mQxkNmOTndCgvhCb9I+cZJcorvkUlk6L+mIr6Bad3l8G
Np/h3n+hkA3xkbncet8rnlBLAwQUAAIACABgfxhJMDqr6yYBAAC7AgAAZgAcAGh0dHAvdGVzdHMv
c2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3ZpZGVvLXdpdGgtaHR0cC11cmwtYWxsb3dl
ZC1ieS1jc3AtbWVkaWEtc3JjLXN0YXItc3RkZXJyLnR4dFVUCQADtCa+V7Qmvld1eAsAAQT1AQAA
BFAAAAClkk1PwzAMhs/sV/jIDkzptG40QpO27gASSNMmBFK1Q9q6abTgTEnK16/HneDCgQP1LZH9
vPZrrzoN0xkkqUwzKQTgW0jEdGJdpSz4WHk8OR8N6SIVi2x2gJsNlp1eSghI9QOGoDQ+mdjmKqJ2
/kPCJXXWjkerf5MNmdgj90w3ju6ocRKetzlUjgiryH+c86qsqUfFD38yTzJmcEC+W633sOSAxnah
3XKnrLNDiyrgHqOEQrwvmuw6K5O0mStxgDX3dQQBrQpAjq4+0Tvw2LBmRxFmA8YJGL99undac8ZZ
SwIXWqyHgKPyMXfUGN151dtyXoR7OVnsX7eKaoteQq6qFmueDkmVrAmlqo5sShg21WNA3y9nYyq2
9DebD2F0MR6k8PeBfQFQSwMEFAACAAgAYH8YSbrlfwWEAAAAwAAAAFkAHABodHRwL3Rlc3RzL3Nl
Y3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS93b3JrZXItYmxvYi1pbmhlcml0cy1jc3AtYmxv
Y2tzLWV2YWwtc3RkZXJyLnR4dFVUCQADtCa+V7Qmvld1eAsAAQT1AQAABFAAAACdzLEKwjAQgOG9
T3GjLpKWBmkQodTFQRAcFMQhptd4EC6SXBTf3voKrj8/X188NC3U2ujOKAX4zrVqViE6GyCJS/iM
SYj9Vat1195gs8N78VsDGXk8YM7W45nkMVhBH9PHwIJLCMuq/1smJvmRp1mnyHueooHLcQAXmdHJ
3ObnZQON1RdQSwMEFAACAAgAYX8YSWOqrGyCAAAAqAAAAEAAHABodHRwL3Rlc3RzL3NlY3VyaXR5
L2NvbnRlbnRTZWN1cml0eVBvbGljeS94c2wtYWxsb3dlZC1zdGRlcnIudHh0VVQJAAO1Jr5XtSa+
V3V4CwABBPUBAAAEUAAAAC2NQQrDMAwE73mFXhA7vaT4FYW+ILgbYlAsIyml/n1NKXtahtnNcrbC
mxepBFXRRHth0OHeUgjLbZ3jyJLuMcZgyJcW7yFLdVR//vtDuOQeFCaXZlgw74z5Y0xcKmglMM4h
0A/YAfg0aHpDbVwnksqdljnSjs2vMUSbguxqTdTxmr5QSwMEFAACAAgAYX8YSWOqrGyCAAAAqAAA
AFIAHABodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS94c2wtdW5hZmZl
Y3RlZC1ieS1zdHlsZS1zcmMtMi1zdGRlcnIudHh0VVQJAAO1Jr5XtSa+V3V4CwABBPUBAAAEUAAA
AC2NQQrDMAwE73mFXhA7vaT4FYW+ILgbYlAsIyml/n1NKXtahtnNcrbCmxepBFXRRHth0OHeUgjL
bZ3jyJLuMcZgyJcW7yFLdVR//vtDuOQeFCaXZlgw74z5Y0xcKmglMM4h0A/YAfg0aHpDbVwnksqd
ljnSjs2vMUSbguxqTdTxmr5QSwMEFAACAAgAVH8YSRZuDFaEAAAAGgEAADUAHABodHRwL3Rlc3Rz
L3NlY3VyaXR5L2NvcnMtcG9zdC1yZWRpcmVjdC0zMDEtc3RkZXJyLnR4dFVUCQADnya+V58mvld1
eAsAAQT1AQAABFAAAADNzLEKwjAQgOG9T3GjLpJUAzWIUOriIAgOCuIQ02sMhIskF8W3N76F68/P
1xcH7Qqk0qrTyzXgO0vRLkK0JkBim/AZE3tyVyU6KW6w2eG9uK2GjDQeMGfj8Oz5MRhGF9NHw4xK
CPOm/0PZk+cfeaq6j7SnKWq4HAewkQgt11aflwl+bL5QSwMEFAACAAgAWn8YSVnzc0K3AAAAkgEA
AD0AHABodHRwL3Rlc3RzL3NlY3VyaXR5L2xvY2FsLXZpZGVvLXNvdXJjZS1mcm9tLXJlbW90ZS1z
dGRlcnIudHh0VVQJAAOrJr5Xqya+V3V4CwABBPUBAAAEUAAAAKWQsQoCMRBEa+8rttRG7sQDCSLo
WShoKRZisZesMRg3kuwh/r1R7Oy0HNh5j515Z2E0hqpW9UTVFdA9VeVo6INGD1F0pFuI4tge6nJS
lUeYLqnt7ExBItlSSmhpE6zNF4tcuijIRU+mmP8OFozSBD4520UUF3jv5NyE683TK62QjaeooEF9
JgMlEGObndCivhCb9I+cZJcorvkUlk6L+mIr6Be9wV8GNp/h3n+hkA3xkbnceT8onlBLAwQUAAIA
CABafxhJXiA8nYQAAADAAAAAOgAcAGh0dHAvdGVzdHMvc2VjdXJpdHkvbG9jYWwtdmlkZW8tc3Jj
LWZyb20tcmVtb3RlLXN0ZGVyci50eHRVVAkAA6smvlerJr5XdXgLAAEE9QEAAARQAAAAncy/CsIw
EIDxvU9xoy7SFAMliFDq4iAIDgriENMzPQh3kj+Kb298BdePj99QPHRrUNro3mgF+E6q7VZBnA0Q
s4v4lJiJ/VW3vWpvsNnhvfitgYQ8HTAl6/FMeR5tRi/xY2DBJYRlM/wtE1P+kaeqk/CeH2LgchzB
CTO6XFt9XjbQ1HwBUEsDBAoAAAAAAFZ/GEkAAAAAAAAAAAAAAAAhABwAaHR0cC90ZXN0cy9zZWN1
cml0eS9taXhlZENvbnRlbnQvVVQJAAOjJr5XhC2+V3V4CwABBPUBAAAEUAAAAFBLAwQUAAIACABW
fxhJwqNu5zABAABgAwAATgAcAGh0dHAvdGVzdHMvc2VjdXJpdHkvbWl4ZWRDb250ZW50L2luc2Vj
dXJlLWF1ZGlvLXZpZGVvLWluLW1haW4tZnJhbWUtc3RkZXJyLnR4dFVUCQADoya+V6Mmvld1eAsA
AQT1AQAABFAAAADNkk9LAzEQxc/2U8xRDy5pt9UapNBuDwoKpaUolB6y2dlsaJyUJOu/T+9s1YtH
C+LcEjK/9+ZNNv2RHI3lUGR5frWFay4oltPZCiZcULs2NgukypJZokMVcYVJwka8XtbjQalqJTAX
W5g5r3cgoFERyNP5OwYPAWvQvqUE/d60NTAYwrcc4Evsi0HGbcpBSDrg3ofEMpuRGIsLtnJLtZ9I
cN4YvoaYVEgxy7JfoOZYtoZZEdM9xqgM3n1SD7YlcKPD6hhwZ67wVFvTBpWspwebmsI/7R12pxtF
lcMgoVC6wYqDQlIla0Kp9I7zjcdNtY4YurzmVvN2frIlnPZOzo5SoOoruMNcKqHx4Y251Dr3d+T8
X5At2dQhV0zn3Xa5S3hcFPzXiVB3++Y3z8rZqvcBUEsDBBQAAgAIAGB/GEnqP6+sMwEAAAIFAAA5
ABwAaHR0cC90ZXN0cy9zZWN1cml0eS92aWRlby1jcm9zcy1vcmlnaW4tY2FjaGluZy1zdGRlcnIu
dHh0VVQJAAOzJr5Xsya+V3V4CwABBPUBAAAEUAAAAN2TTUsDMRCGz/ZXzNEeLLulwd0ghe32oKBQ
WkSheEh3Z7OhcVKSrF+/3tmiFz1pEdEhl8DM885n0WkYTyAVUmT8AB9DmoxH1lXKgo+Vx53z0ZBe
iyRLkzs4m+Om01MJAeMVhqA0Xjqt2WPGQVsJHGixHhTfB0flY+moMbrzKhpHNya2pbvfWex/54pq
i15CqaoWa0gASW1YEzaq2iLV4RBxjNcB/QU1bm6qKD+xJRwPjoaD9Tt7lGcTjmeDclnMVjBlg8Z2
oV2wP2ss0aIKuEKmrZOn0waFEInIGsHC+6ZxCa0KQI5OXtA78NhA5TqKkCYH1UL124j2HVQRtfPP
XAF11g4/kPN/TjZkYo9cMZ23qJ+whNtFyZ0mwqrfLPZ5UNbUB+X/havIf/Mq8h+4ir+4Ua9QSwME
FAACAAgAYH8YSZpLK9oTAQAA5wEAAD8AHABodHRwL3Rlc3RzL3NlY3VyaXR5L3ZpZGVvLXBvc3Rl
ci1jcm9zcy1vcmlnaW4tY3Jhc2gyLXN0ZGVyci50eHRVVAkAA7MmvlezJr5XdXgLAAEE9QEAAARQ
AAAAnU5NS8NAEL33V8yxPZhsYqLpIkJokQoKJVYUSg/bzSRd3M7G/aj037ul6lWUubw3782bV4ce
8gKykpcVL6eAHy5jeaKNFBqslxYHY72ifl2yKmMbuJnjNvS3HBxS+4jOiR5flN/NhMfe2COHMQWt
J6P638mKlD9FPsV0ZeieOsPhdTkDaYhQ+riLnoPQqh2tv/OTK5ZvYLFaLRt8D+g8dKpfeD980blq
G5SoDtigGww5nAmtt0K+cbBnoYVd9Ed21qFgBYzRWmPhIsunl9UEuohPJp6mWX6dsDgZrxhjqUMZ
rPLHlAyhC3KX7Ifit3qRzsN+uFMk9HPzUFPsuDce67aNLRwHcQbw8yyeRS8Eq//U4xNQSwMEFAAC
AAgAYn8YSWBLZhCRAAAA+wEAAEUAHABodHRwL3Rlc3RzL3NlY3VyaXR5L3hzcy1ERU5JRUQteHNs
LWRvY3VtZW50LXNlY3VyaXR5T3JpZ2luLXN0ZGVyci50eHRVVAkAA7cmvle3Jr5XdXgLAAEE9QEA
AARQAAAA7Y4xDoMwDEV3TuELhASWVplh6NKeAQVTIpkksp0Kbl869AYdq7++r/dC3kqkSWNOgMyZ
PSyREFbV4q3t+kvrznX+6pyzgqFy1MPuImYY77dxMLuQmXOoGyY1X+DB8RlTu28EFBNCD0j4IUD0
IJQVUZvz6V/Icro95EQHdK2DBSetjAITI0gtJbPi3IR/6I9D31BLAwQKAAAAAABVfxhJAAAAAAAA
AAAAAAAADwAcAGh0dHAvdGVzdHMvc3ZnL1VUCQADoSa+V4Qtvld1eAsAAQT1AQAABFAAAABQSwME
FAACAAgAVX8YSbQnFqQOAQAALgQAAC0AHABodHRwL3Rlc3RzL3N2Zy9jYWNoZWQtaW1hZ2Utc2l6
aW5nLXN0ZGVyci50eHRVVAkAA6EmvlehJr5XdXgLAAEE9QEAAARQAAAA7ZMxT8MwEIX3/oob06FJ
bRIaIkAqAaQOFZE6gFRVlescrsHY0dkB5d/jChDMCLZu72743r0n3bxXwHNgRVWUVc4A3zyb8tQ4
KQxQkISdo6CtWhfTWZlv4Pwad726rMCjbZfovVB4r8O+FgGVo6GCxPbGjEfrL2bKSrYBHfBF+MHK
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
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvVVQJAAPJJr5XhC2+V3V4CwABBPUBAAAEUAAAAFBL
AwQKAAAAAABifxhJAAAAAAAAAAAAAAAAJAAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvZG9tL1VUCQADtya+V4Qtvld1eAsAAQT1AQAABFAAAABQSwMEFAACAAgAYn8YSdelgUqEAAAA
wAAAADkAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2RvbS9oaXN0b3JpY2FsLXN0
ZGVyci50eHRVVAkAA7cmvle3Jr5XdXgLAAEE9QEAAARQAAAAncy/CsIwEIDxvU9xoy6SVos0iFDq
4iAIDgriENNrPAh3kj+Kb298BdePj1+fHTQrqFvddlotAd+xVs3CizUeQrIBnxISsbu2at2pG2x2
eM9uqyEijweM0Tg8U3oMJqGT8NEw4+z9vOr/lokp/chT0Ul4z5NouBwHsMKMNpVWnpfxNFZfUEsD
BAoAAAAAAGt/GEkAAAAAAAAAAAAAAAAlABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9odG1sL1VUCQADySa+V4Qtvld1eAsAAQT1AQAABFAAAABQSwMECgAAAAAAa38YSQAAAAAAAAAA
AAAAACkAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvZG9tL1VUCQADySa+
V4Qtvld1eAsAAQT1AQAABFAAAABQSwMEFAACAAgAa38YSQFSfA/BAAAATgIAAEcAHABpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvZG9tL3JlZmxlY3Rpb24tZW1iZWRkZWQtc3Rk
ZXJyLnR4dFVUCQADySa+V8kmvld1eAsAAQT1AQAABFAAAADNkDELwjAQhXd/xY06aBptMc0mijgI
StFJHGJztcW0qUnq7/ekzg4uyi3v8d5xH3fiiUxSycUkFfEZNofDPsN7hz5AUV03IbRvu6p0hjlW
D8zQt7bxuFTGXFR+k+D6QENJfXJ9DnEUwxCdsw7GfJrOxAgK0q+SZMzYXJnS+iCFiCJWhtowbWsW
6Nj4oUyHu2Jw+oxHdtXV7bpqlDlm20VDjLUNuNCaKLwE1Qvg0/kkouG0Rl3onPmaI/nvNyU/fNMT
UEsDBAoAAAAAAGt/GEkAAAAAAAAAAAAAAAAvABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9odG1sL3NlbWFudGljcy9VVAkAA8kmvleELb5XdXgLAAEE9QEAAARQAAAAUEsDBAoAAAAA
AGx/GEkAAAAAAAAAAAAAAABAABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1s
L3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L1VUCQADyya+V4Qtvld1eAsAAQT1AQAABFAAAABQ
SwMECgAAAAAAc38YSQAAAAAAAAAAAAAAAE8AHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvVVQJAAPZ
Jr5XhC2+V3V4CwABBPUBAAAEUAAAAFBLAwQUAAIACABrfxhJlhjLVfAAAACXBQAAZwAcAGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVu
dC9tZWRpYS1lbGVtZW50cy9ldmVudF9jYW5wbGF5LXN0ZGVyci50eHRVVAkAA8kmvlfJJr5XdXgL
AAEE9QEAAARQAAAA7dPBSsQwEAbgs32KOeqltMXiGkRYuwcFBUFEQTxMk9ls2DhZkqni25uoN0+y
iJceEzJfMj+Z5WShO4a2V/2p6lqgt9Q2Xe2DRg9RdKRdiOLYPvXNyWLxDGdXvA7nCnywNm9DEoyS
6rqulr+mVjRONluJ5IZSQkvXX+pFLtoqyIWezD5wedwQeO3sFFFc4AcnmyG87DyV1SWy8RQVDKg3
ZKABYhzznTCi3hKbtF9X94liyWvltKgftoLD6uBozu0fcmPzHdxnXyhkQ3zPLk/ez/Is/4Xs2Ekh
77KeZ6j8bwWPtwPowEy6zFU+84remeoDUEsDBBQAAgAIAGt/GEnoNyt27QAAAKQEAAByABwAaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250
ZW50L21lZGlhLWVsZW1lbnRzL2V2ZW50X2NhbnBsYXlfbm9hdXRvcGxheS1zdGRlcnIudHh0VVQJ
AAPKJr5Xyia+V3V4CwABBPUBAAAEUAAAAO2TwUoDQQxAz/Yrcmwvsrt0sQ4i1O1BQUEQUZAesrPp
dOiYKTNZxb83K17EU1lEBI8JyUvmDVn2Dqo5lLWpT01VAr3msqiOQ7QYIIlNtI9JPLunujhZLNZw
tqK2d+cGMnF3Qzmjowcv2waFXExvBqbchzCbLL+QqwPInr0MyDul+8hXvIkGHm8bsJGZrGhOa14w
+G7ElEzyuf51dE4rLrRpZ0AbA40CCyZpIm+86xMO2374ic/7QEN0idwFSgYatFvqoABibHUmtGh3
ajWPe9V9pjQ4W3kr5htb/2dyNPv39gvefupe/iL5kBt/B1BLAwQUAAIACABrfxhJyTzDH+sAAAAM
BgAAbgAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1i
ZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9ldmVudF9jYW5wbGF5dGhyb3VnaC1zdGRlcnIu
dHh0VVQJAAPKJr5Xyia+V3V4CwABBPUBAAAEUAAAAO2UwUoDMRBAz/Yr5mgvsl1crEGEuj20UEEQ
URAPs9lpGprOlGRW8e/NijdvruJljxlm3kxemCw6B+U5zCpTXZqyBHpLs6I8C2IxQFQb6ShRPbvn
qriYz1/gaklN564NJOL2llJCR49edzUqOYnvBk65C2E6WfyY7Nlrj7zPdC+85q0YeLqrwQozWc2x
nPOKwbcDuiTSr/E34lzOuMlFewO5MNAgsGLUWnjrXRexn/bTjxyOgfrTCrkNFA3UaHfUQgHE2OSe
0KDdZ6tp2K0eEsXe2dJbNd/Y+X0mJ9PR2z94+6t9Gckj+Tf+0g9QSwMEFAACAAgAbH8YSfgT2Qnx
AAAApAQAAHkAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNz
L2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvZXZlbnRfY2FucGxheXRocm91Z2hfbm9h
dXRvcGxheS1zdGRlcnIudHh0VVQJAAPLJr5Xyya+V3V4CwABBPUBAAAEUAAAAO2TQUsDQQyFz/ZX
5Ggvsl27WAcR6vZQQUEQURAP2dl0OnTMlJmspf/erAgePOlS8OAxIfle5j1m3jkopzCpTHVuyhJo
lydFeRKixQBJbKJtTOLZPVfF2Wz2AhcLajp3aSATt7eUMzp69LKuUcjFtDdwzF0I49H812TPXnrk
vdJ95GteRQNPdzXYyExWtKczbxh8O0Alk3yefxOd04krXdoY0MVAg8CCSerIK++6hP21H/7E122g
vloit4GSgRrtmloogBgb1YQG7UZdzcNe9ZAp9Z4tvBXzja35jI7GgxQOlft/Il8KpwdL5G+Qf/LH
3wFQSwMEFAACAAgAbH8YSW5wqhPnAAAA5AMAAGoAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvZXZl
bnRfbG9hZGVkZGF0YS1zdGRlcnIudHh0VVQJAAPLJr5Xyya+V3V4CwABBPUBAAAEUAAAAO2TwUoD
QQxAz/YrcrQX2W67WIcitNuDBQVBREF6yM6m06FjUmayin/vrHjzILiIF48zJC/JC1l2DsoZTCpT
XZhyCvSaJkV5FsRigKg20lGienZPVXE+n29hsaamc5cGEnF7Qymhowev+xqVnMQ3A6fchTAeLX9M
9uy1R95luhfe8E4MPN7WYIWZrOa/HPOCwbcDqiTSz/avxbkcscpJBwM5MdAgsGLUWnjnXRex7/bD
jzwfA/WvK+Q2UDRQo91TCwUQY5NrQoP2kK2mYVPdJ4q9s7W3ar6w835GJ+N/b3/g7bfu5TvyO1BL
AwQUAAIACABsfxhJjvJUR+QAAABkBQAAdQAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9ldmVudF9s
b2FkZWRkYXRhX25vYXV0b3BsYXktc3RkZXJyLnR4dFVUCQADyya+V8smvld1eAsAAQT1AQAABFAA
AADtk0FLA0EMhc/2V+SoF9muLtZBhLo9KCgIIgrFQ3Y2nQ4dkzKTVfz3ZsWbx14qepwh75uXl8x8
CFCfwrRxzbmrT4Dey7Sqj5N4TJDVZ9pK1shh2VRns9kLXCyoG8Klg0Lc31EpGOgp6rpFpSD5w8Eh
DykdTeZ7SI4cdUQ+GD0K3/BKHDzft+CFmbzandW8YYr9n/av3/ZvJQSruDLRxoEJE+0EVszaCq9i
GDKObr/ykddtovF0jdwnyg5a9GvqoQJi7OxN6NBvLNWyW1ePhfKY2SJ6dT/YNp/JwX7u7f9EfvNP
/ARQSwMEFAACAAgAbH8YSYMAZI/pAAAApAQAAG4AHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvZXZl
bnRfbG9hZGVkbWV0YWRhdGEtc3RkZXJyLnR4dFVUCQADzCa+V8wmvld1eAsAAQT1AQAABFAAAADt
k8FKBDEMQM/uV+ToXmR2cXAtIqyzBwUFQURBPGQ62W7ZmixtRvHvzYg3TzqICN7akrwkr2TZB5gf
wqx29bGzA72UWTU/SOIxQVafaSdZI4eHujpaLB7hZEVtH04dFOLuikrBQHdRNw0qBcmvDva5T2k6
WX6bHDnqgLwxehS+4LU4uL9uwAszebU3i3nGFLsRVQrpR/uXEoJFnFnS1oElJhoFVszaCK9j6DMO
3b77kaddouF2jtwlyg4a9BvqoAJibK0mtOi3ZrWMm+q2UB6craJX94lt/zPZm/57+wVvP7Uvf5H8
lR1/A1BLAwQUAAIACABsfxhJUggfN+YAAABKBAAAeQAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9l
dmVudF9sb2FkZWRtZXRhZGF0YV9ub2F1dG9wbGF5LXN0ZGVyci50eHRVVAkAA8wmvlfMJr5XdXgL
AAEE9QEAAARQAAAA7ZPBSgNBDEDP9itytBfZFhfrIELdHhQUBBEF6SE7m06HjkmZySr+vVnx5s1F
9OBtZkhekjdk2QeYH8OsdvWpswO9llk1P0riMUFWn2kvWSOHp7o6WSzWcLaitg/nDgpxd0OlYKCH
qNsGlYLkNweH3Kc0nSy/TY4cdUDeGT0KX/FGHDzeNuCFmbzam8W8YIrdiCqF9LP9awnBIi4saefA
EhONAitmbYQ3MfQZh24//MjzPtFwu0TuEmUHDfotdVABMbZWE1r0O7Naxk11XygPzlbRq/vCtv+Z
HEz/vf2Ct5/al7+xie9QSwMEFAACAAgAbX8YSd0m4vztAAAASgQAAGkAHABpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEt
ZWxlbWVudHMvZXZlbnRfbG9hZHN0YXJ0LXN0ZGVyci50eHRVVAkAA80mvlfNJr5XdXgLAAEE9QEA
AARQAAAAzZNBS0MxDIDP7lfkuF3kbaw4iwjz7aCgIIgoyA55fVlXVtPR5in+e/PEmyd9TL21JfmS
fCXLzsNsDlNjzanVA72WaTU7jslhhCwu0z5lCeyfTHWyWKzhbEVN588tFOL2hkpBTw9BtjUK+ZTf
LIy5i3EyWv6YHDhIj7xTekh8xZtk4fG2BpeYyYm+acwLxtAOqFJIPtu/Tt5rxIUm7SxoYqRBYMEs
deJN8F3GvtsPP+l5H6m/XSK3kbKFGt2WWqiAGButCQ26nVotw6a6L5R7Z6vgxH5h6/+Mjia/5c38
pTdzcG/mYPvyP8jf2cR3UEsDBBQAAgAIAG1/GEltu7Zt6gAAAKQEAAB0ABwAaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlh
LWVsZW1lbnRzL2V2ZW50X2xvYWRzdGFydF9ub2F1dG9wbGF5LXN0ZGVyci50eHRVVAkAA80mvlfN
Jr5XdXgLAAEE9QEAAARQAAAA7ZNBSwNBDIXP7a/Isb3IduliHURotwcFBUFEQXrIzqbTodOkzGQV
/72z4s2bi9BDjwnJ9zLvMcvOQTmHWWWqK1NWQB9pVpQXQSwGiGojHSWqZ/dWFZeLxQau19R07sZA
Im4fKCV09OJ1V6OSk/hpYMJdCNPx8s9kz1575FOme+E73oqB18carDCT1dzLM+8YfDtAJZH+nH8v
zuWJVV7aG8iLgQaBFaPWwlvvuoj9td/+yOEYqK9ukdtA0UCNdkctFECMTdaEBu0+u5qGveo5Uew9
W3ur5hc75zMeTQcp/Ffu50ROL5FT+ONfUEsDBBQAAgAIAG1/GEmJmhUa6QAAAEwFAAB8ABwAaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250
ZW50L21lZGlhLWVsZW1lbnRzL2V2ZW50X29yZGVyX2NhbnBsYXlfY2FucGxheXRocm91Z2gtc3Rk
ZXJyLnR4dFVUCQADzia+V84mvld1eAsAAQT1AQAABFAAAADtk8FKA0EMQM/2K3K0l7JdXKyDCHV7
sFChIEVBPGRn0+nQMVNmskr/3qx48+YieuhxhuQleSHzzkF5AdPKVFemrIDe87QoJyFaDJDEJjrE
JJ7dc1VczmYvcL2gpnM3BjJxe085o6NHL7sahVxMRwPn3IUwHs1/TPbspUc+KN1HXvI2Gnha12Aj
M1nRP415w+DbAVUyyVf7q+icRtxq0t6AJgYaBBZMUkfeetcl7Lv99BNfD4H61x1yGygZqNHuqIUC
iLHRmtCg3avVPGyqTabUO1t4K+YbW/czOhufvP2Bt9+6lxP5f5A/AFBLAwQUAAIACABtfxhJRK5s
de4AAADMBgAAdQAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRp
Y3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9ldmVudF9vcmRlcl9jYW5wbGF5X3Bs
YXlpbmctc3RkZXJyLnR4dFVUCQADzia+V84mvld1eAsAAQT1AQAABFAAAADtlMFKAzEQhs/2KeZo
L7JdulqDCO32oKAgiCiIh9nsNA2Nk5LMKr69s+LNm6uIsMeEmW/+fCFZdg7KOcwqU52a8hjoNc+K
8ihEiwGS2ET7mMSze6yKk8XiCc7W1HTu3EAmbq8pZ3R072Vbo5CL6c3AIXchTCfLb5M9e+mRt0r3
kS95Ew083NRgIzNZ0T2tecHg2wFT/n9++Yx/FZ3TipU27QxoY6BBYMEkdeSNd13CPu2Hn/i8D9Sv
LpDbQMlAjXZLLRRAjI3OhAbtTq3mYae6y5R6Z2tvxXxh6/1MDqajtz/w9lvvZSSP5J/4S98BUEsD
BBQAAgAIAG1/GEnb52zC7AAAAAwGAAB/ABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL2V2ZW50X29y
ZGVyX2xvYWRlZG1ldGFkYXRhX2xvYWRlZGRhdGEtc3RkZXJyLnR4dFVUCQADzia+V84mvld1eAsA
AQT1AQAABFAAAADtlMFKAzEQQM/2K+bYXmS7uFqDCO32oKAgiCgUD7PZaRoaJyWZVfx7Z8WbN1fx
sscMM28mL0yWnYPyBOaVqc5NeQr0ludFeRyixQBJbKJDTOLZbaribLF4hos1NZ27NJCJ21vKGR09
etnVKORiejcw5S6E2WT5Y7JnLz3yXuk+8jVvo4GnuxpsZCYrGtOcVwy+HdAlk3yNfxOd04yVFu0N
aGGgQWDBJHXkrXddwn7aTz/x5RCoP10ht4GSgRrtjloogBgb7QkN2r1azcNu9ZAp9c7W3or5xtb3
mRzNRm//4O2v9mUkj+Tf+Es/AFBLAwQUAAIACABufxhJzER8h+sAAAD+BAAAeAAcAGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9t
ZWRpYS1lbGVtZW50cy9ldmVudF9vcmRlcl9sb2Fkc3RhcnRfcHJvZ3Jlc3Mtc3RkZXJyLnR4dFVU
CQADzya+V88mvld1eAsAAQT1AQAABFAAAADtlMFKA0EMhs/tU+TYXmS7dGkdRKjbg4UKgoiCeMjO
ptOhY1Jmsopv76x48+biodDjhOT7kz9hVp2Dcg6zylSXplwAfaRZUV4EsRggqo10lKie3UtVLJbL
V7haU9O5awOJuL2jlNDRk9d9jUpO4qeBCXchTMerP5M9e+2RD5nuhTe8EwPP9zVYYSarOZZz3jH4
doBKIv1pfyvO5YybXHQwkAsDDQIrRq2Fd951Eftuv/2Rt2Og/nWL3AaKBmq0e2qhAGJssiY0aA/Z
1TRsqsdEsfds7a2aX+y8n/FoOkjhv/Z+muTzFZ3u7/EFUEsDBBQAAgAIAG5/GEn63Nv68AAAAAwG
AABlABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJl
ZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL2V2ZW50X3BhdXNlLXN0ZGVyci50eHRVVAkAA9Am
vlfQJr5XdXgLAAEE9QEAAARQAAAA7ZTBSgMxEEDP9ivmaC+yXVy6BhHq9qCgIIgoSA+z2WkaGmdK
Mqv492bFm6e6iAd7zDDzZvLCZNE7KE9hVpnqzJRzoLc0K8qTIBYDRLWRdhLVs3uuinldr+B8SW3v
Lgwk4u6WUkJHj143DSo5ie8GjrkPYTpZ/Jjs2euAvM90L3zNazHwdNeAFWaymmM55xWD70Z0SaRf
49+IcznjMhdtDeTCQKPAilEb4bV3fcRh2k8/8rILNJyukLtA0UCDdkMdFECMbe4JLdpttprG3eoh
URycLb1V842d32dyND14+wNvv7Uv+5HrA/kfkff5Sz8AUEsDBBQAAgAIAG5/GEkB1XPd6gAAAKQE
AABwABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJl
ZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL2V2ZW50X3BhdXNlX25vYXV0b3BsYXktc3RkZXJy
LnR4dFVUCQAD0Ca+V9Amvld1eAsAAQT1AQAABFAAAADtk0FLA0EMhc/tr8jRXmS7uLgOItTtoQUF
QURBesjOptOhY1Jmsor/3lnx5s1F6KHHhOR7mfeYRe+gvIB5ZaorU9ZAH2lelOdBLAaIaiMdJKpn
91oVl3W9gesltb27MZCIu3tKCR09e901qOQkfho44z6E2XTxZ7JnrwPyMdO98Jq3YuDloQErzGQ1
9/LMOwbfjVBJpD/n34lzeeI2L+0N5MVAo8CKURvhrXd9xOHab3/k7RBoqFbIXaBooEG7ow4KIMY2
a0KLdp9dTeNe9ZQoDp4tvVXzi53zmU5moxT+K/dTIseXyDH88S9QSwMEFAACAAgAb38YSWdX/9ns
AAAATAUAAGQAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNz
L2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvZXZlbnRfcGxheS1zdGRlcnIudHh0VVQJ
AAPRJr5X0Sa+V3V4CwABBPUBAAAEUAAAAO2TwUoDQQxAz/YrcrQX2S5d3A4i1O1BQUEQURAP2dl0
OnSalJms4t87K17Ekyyihx5nSF6SF7LsHZRzmFWmWpiyBnpNs6I8CWIxQFQbaS9RPbunqjit62c4
W1Hbu3MDibi7oZTQ0YPXTYNKTuKbgWPuQ5hOll/Iix+QPXsdkHeZ7oWveC0GHm8bsMJMVvNfjnnB
4LsRVRLpZ/vX4lyOuMhJWwM5MdAosGLURnjtXR9x6PbDj+z2gYbXJXIXKBpo0G6ogwKIsc01oUW7
zVbTuKnuE8XB2cpbNd/YeT+To+nB2x94+617OZD/B/kdUEsDBBQAAgAIAG9/GEl5L20B6gAAAGQF
AABvABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJl
ZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL2V2ZW50X3BsYXlfbm9hdXRvcGxheS1zdGRlcnIu
dHh0VVQJAAPRJr5X0Sa+V3V4CwABBPUBAAAEUAAAAO2TQUsDQQyFz/ZX5Ggvsl1cbAcR6vZgoUJB
REE8ZGfT6dAxU2aySv+9WfHmzb2s4DEh+fLmPWbZOSgvYVaZamHKBdBHnhXlRYgWAySxiY4xiWf3
UhVX8/krXK+o6dyNgUzc3lPO6OjJy75GIRfTycA5dyFMJ8tfkz176ZEPSveR17yLBp63NdjITFa0
pzPvGHw74Mrf1y/f8jfROZ241aWDAV0MNAgsmKSOvPOuS9ir/fInvh0D9dUdchsoGajR7qmFAoix
0ZvQoD2oq3nYqx4zpd6zlbdifrA1n8nZdJS5/ycyvkTG8Mc/AVBLAwQUAAIACABvfxhJ1TgIFvEA
AAAMBgAAZwAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3Mv
ZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9ldmVudF9wbGF5aW5nLXN0ZGVyci50eHRV
VAkAA9ImvlfSJr5XdXgLAAEE9QEAAARQAAAA7ZTBSgMxEIbP9inmaC+yXV1sgwh1e1BQEEQUxMNs
dpqGxklJZhXf3lnxIp7WCl72mDDzzZ8vJMvOQXkCs8pUC1MugN7yrCiPQrQYIIlNtItJPLunqjid
z5/hbEVN584NZOL2hnJGRw9eNjUKuZjeDRxyF8J0svw12bOXHnmndB/5itfRwONtDTYykxXd05pX
DL79PuW4GJRfvuJfR+e04kKbtga0MdBeYMEkdeS1d13CPu2nn/iyC9SvLpHbQMlAjXZDLSibsdGZ
0KDdqtW836nuM6Xe2cpbMT/Yej+Tg+no7R+8DXgvI3kk/wl5yF/6AVBLAwQUAAIACABvfxhJVCSp
1usAAAAMBgAAcgAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRp
Y3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9ldmVudF9wbGF5aW5nX25vYXV0b3Bs
YXktc3RkZXJyLnR4dFVUCQAD0ia+V9Imvld1eAsAAQT1AQAABFAAAADtlE1LAzEQQM/2V8zRXmT7
sViDCHV7qKAgiCgUD7PZaRqaTkoyq/jvnRVv3lzFyx4zzLyZvDBZtg6mc5iUprwwswLoLU+K6VmI
FgMksYmOMYlntymL88XiBS5XVLfuykAmbu4oZ3T05GVXoZCL6d3AKbchjEfLH5M9e+mQD0r3kW94
Gw0831dgIzNZ0ZjmvGLwTY8umeRr/NvonGZca9HegBYG6gUWTFJF3nrXJuym/fQTD8dA3WmN3ARK
Biq0O2pA2Yy19oQa7V6t5n63esyUOmcrb8V8Y+v7jE7Gg7d/8PZX+zKQB/Jv/KUfUEsDBBQAAgAI
AHB/GEk4JJyW7AAAAEwFAABoABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1s
L3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL2V2ZW50X3Byb2dyZXNz
LXN0ZGVyci50eHRVVAkAA9MmvlfTJr5XdXgLAAEE9QEAAARQAAAA7ZPBSgNBDEDP9itytBfZrV2s
gwh1e2hBQRBREA/Z2XQ6dJopM1nFvzcrXsSTLKKHHmdIXpIXMu8cTKZQVqY6N6cF0Gsui8lJiBYD
JLGJ9jGJZ/dUFWez2TNcLKjp3KWBTNzeUM7o6MHLpkYhF9ObgWPuQhiP5l/I5Q/Inr30yDul+8gr
XkcDj7c12MhMVvRPY14w+HZAlUzy2f51dE4jrjRpa0ATAw0CCyapI6+96xL23X74ibt9oP61RG4D
JQM12g21oNIZG60JDdqtWs3DprrPlHpnC2/FfGPrfkZH44O3P/D2W/dyIP8P8jtQSwMEFAACAAgA
cH8YSXLnDvXqAAAACgUAAHMAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwv
c2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvZXZlbnRfcHJvZ3Jlc3Nf
bm9hdXRvcGxheS1zdGRlcnIudHh0VVQJAAPTJr5X0ya+V3V4CwABBPUBAAAEUAAAAO2TwUoDMRCG
z/Yp5mgvsltdrEGEuj1UUBBEFIqH2ew0DU0nJZlVfHtnxVtvLlIFjwkz3/z5wsw6B5MzKCtTXZjT
Eugtl8XkJESLAZLYRLuYxLNbVsX5dPoCl3NqOndlIBO3d5QzOnrysq5RyMX0buCYuxDGo9m3yZ69
9MgHpfvIN7yKBp7va7CRmazonda8YvDtgCl/P798xb+NzmnFtTZtDGhjoEFgwSR15JV3XcI+7aef
uN0F6k8L5DZQMlCjXVMLBRBjozOhQbtRq3nYqx4zpd7Z3Fsxe2z9n9HR+N/bAbz91L78jk38AFBL
AwQUAAIACABxfxhJhluUxvAAAAAMBgAAagAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9ldmVudF90
aW1ldXBkYXRlLXN0ZGVyci50eHRVVAkAA9UmvlfVJr5XdXgLAAEE9QEAAARQAAAA7ZTBSgMxEEDP
9ivmaC+y3bpYgwjt9qCgIIgoiIfZ7DQNTWdKMqv492bFmye7iCA9Zph5M3lhMu8clKcwqUx1bqYl
0FuaFOVJEIsBotpIO4nq2T1Xxdls9gIXS2o6d2kgEbe3lBI6evS6rlHJSXw3cMxdCOPRfG+yZ689
8j7TvfA1r8TA010NVpjJao7lnFcMvh3QJZF+jX8jzuWMRS7aGMiFgQaBFaPWwivvuoj9tJ9+ZLsL
1J+ukNtA0UCNdk0tFECMTe4JDdpNtpqG3eohUeydLb1V842d32d0ND54+wNvv7UvB/L+5Ok/J//k
L/0AUEsDBBQAAgAIAHF/GEkKgwfE7wAAAAwGAAB1ABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL2V2
ZW50X3RpbWV1cGRhdGVfbm9hdXRvcGxheS1zdGRlcnIudHh0VVQJAAPVJr5X1Sa+V3V4CwABBPUB
AAAEUAAAAO2UT0sDQQzFz/ZT5Ggvsv2zWAcR6vZQQUEoolA8ZGfT6dAxKTNZxW/vbPHmrUtP9piQ
/F7mPZh562A8hVFpyhszmQB9pVExvgpiMUBUG2kvUT27dVlcz2bvcLugunV3BhJx80QpoaNXr9sK
lZzEbwOX3IYwHMyPJnv22iFXme6FH3gjBt6eK7DCTFZzL898YvBND5VE+nv+oziXJ+7z0s5AXgzU
C6wYtRLeeNdG7K49+CMf+0BdtURuAkUDFdotNVAAMdZZE2q0u+xq6veql0Sx82zhrZo/7JzP4GLY
S+FUuZ+SfM76/2R9Jh/3l/4AUEsDBBQAAgAIAHF/GEnwMpp0hQAAAMAAAABsABwAaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21l
ZGlhLWVsZW1lbnRzL2V2ZW50X3ZvbHVtZWNoYW5nZS1zdGRlcnIudHh0VVQJAAPWJr5X1ia+V3V4
CwABBPUBAAAEUAAAAJ3MuwrCQBBA0T5fMaU2koeLcQlCiI2FIFgoiMW6GdeBZUb2ofj3xl+wvVxO
nx3US6iUVmvdNIDvWJX1wos1HkKyAZ8SErG7qHLVtlfotnjLbqMhIo97jNE4PFF6DCahk/DRMOPs
/bzo/5aJKf3I46ST8I7vouF8GMAKM9o0tel5GU9j8QVQSwMECgAAAAAAa38YSQAAAAAAAAAAAAAA
AFoAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVk
ZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvaW50ZXJmYWNlcy9VVAkAA8kmvleELb5XdXgLAAEE
9QEAAARQAAAAUEsDBAoAAAAAAGt/GEkAAAAAAAAAAAAAAABkABwAaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1l
bnRzL2ludGVyZmFjZXMvVGV4dFRyYWNrL1VUCQADyia+V4Qtvld1eAsAAQT1AQAABFAAAABQSwME
FAACAAgAa38YSY+mDka7AAAAkgEAAHkAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvaW50ZXJmYWNl
cy9UZXh0VHJhY2svYWN0aXZlQ3Vlcy1zdGRlcnIudHh0VVQJAAPJJr5XySa+V3V4CwABBPUBAAAE
UAAAAKWQMYsCMRCFa/dXTKmN7C4uajgOdC0UzlIsjitmkzEG40SSWeT+vVHs7LR8MO/7mLfoLdQT
qBrVzFVdAV1TVdZjHzR6iKIjXUIUx/a3KaezyR98rajr7beCRLKllNDST7A2Xyxz6aQgFz2ZYvE+
WDBKG/jgbB9RXOC9k2MbzhdP97RGNp6ighb1kQyUQIxddkKH+kRs0idykl2iuOFDWDkt6oWtYFgM
Rh8Z2DyHe/yFQjbE/8zl3vtRcQNQSwMEFAACAAgAa38YSb1FNemEAAAAwAAAAHUAHABpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQv
bWVkaWEtZWxlbWVudHMvaW50ZXJmYWNlcy9UZXh0VHJhY2svYWRkQ3VlLXN0ZGVyci50eHRVVAkA
A8omvlfKJr5XdXgLAAEE9QEAAARQAAAAncyxCsIwEIDhvU9xoy7ShgY1iFDq4iAIDgriENNrPAgX
SS6Kb299Bdefn68rHlQLjTZ6bZQCfOemVosQnQ2QxCV8xiTE/qrr5aq9wWaH9+K3BjLycMCcrccz
yaO3gj6mj4EZlxDmVfe3TEzyI0+TTpH3PEYDl2MPLjKjk6lNz8sGGqovUEsDBBQAAgAIAHF/GEkY
rcDJ4AAAAOQDAAB3ABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFu
dGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL25ldHdvcmtTdGF0ZV9kdXJpbmdf
bG9hZHN0YXJ0LXN0ZGVyci50eHRVVAkAA9YmvlfWJr5XdXgLAAEE9QEAAARQAAAA7ZExSwNBEIVr
71dMaRq5xBzGRYR4KQwoCEEUgsXc7mSzZJ0Ju3OK/z57YmeXlFoOvPc95r1572EyhXFjmmtzOQX6
zON6chHFYoSkNtFekgb266a+ms3e4GZBXe9vDWTSR8oZPT2I90VxV0w7A8UYyVXz48GKSVvhTfB9
Qg3CL0G3rbzvIw3XPbKLlAy0aLfkoAZi7EomdGh3xC6fEk76nCkteSOLYNX8Yhs4r85GpyX893ZU
Aruf4r7/QiUv6atwuY/xr5EDBx2Qq0Iv2w69G3h9asEKM9lh76L5wBhcdQBQSwMEFAACAAgAcX8Y
SZezbDiFAAAAwAAAAG4AHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2Vt
YW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvbmV0d29ya1N0YXRlX2luaXRp
YWwtc3RkZXJyLnR4dFVUCQAD1ia+V9Ymvld1eAsAAQT1AQAABFAAAACdzD0KwkAQQOE+p5hSG0li
FuMShBAbC0GwUBCLdTOuA8uM7I/i7Y1XsH08vj47qBuolFZrvWwA37Eq64UXazyEZAM+JSRid1Hl
qm2v0G3xlt1GQ0Qe9xijcXii9BhMQifho2HG2ft50f8tE1P6kcdJJ+Ed30XD+TCAFWa0aWrT8zKe
xuILUEsDBBQAAgAIAHF/GEnjR3cH5AAAAEwFAAByABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL3Bh
dXNlZF9mYWxzZV9kdXJpbmdfcGxheS1zdGRlcnIudHh0VVQJAAPWJr5X1ia+V3V4CwABBPUBAAAE
UAAAAO2TQUsDQQyFz+6vyLFeZFu7WAcR2u1BQUEQURAP2Zl0OnRMykxW8d87K968tXjbY+C975FH
suw9zOYwbUxzac7nQJ95Ws/OoliMkNQm2kvSwP61qS8Wize4WlPX+2sDmfSeckZPd+J9UayKaWeg
GCO5ank4WDFpK7wJvk+oQfg56LaV932kYbpBdpGSgRbtlhzUQIxdyYQO7Y7Y5WPCSZ8ypVveyDpY
NX/YBibVyelxCWNvByWw+y3uZy9U8pK+Cpf7GEfySP4PcuCgA/Kx0MsPDfdt4OWhBSvMZIe/KpoP
jMFV31BLAwQUAAIACABxfxhJwKYbeusAAACkBAAAcgAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9w
YXVzZWRfdHJ1ZV9kdXJpbmdfcGF1c2Utc3RkZXJyLnR4dFVUCQAD1ia+V9Ymvld1eAsAAQT1AQAA
BFAAAADtk0FLA0EMhc/2V+TYXmRbu1gHEdrtQcGCIKJQesjOptOhY6bMZC3+e7PizZuL0EOPCcn3
Mu8x89bBZArj0pQ35moKdMzjYnIZosUASWyiQ0zi2a3L4no228DtkurW3RnIxM2KckZHr152FQq5
mD4NDLkNYTSY/5ns2UuHfFa6j/zA22jg7akCG5nJivZ05gODb3qoZJKf8x+jczqx0KW9AV0M1Ass
mKSKvPWuTdhd++1PfD8E6qp75CZQMlCh3VEDBRBjrZpQo92rq7nfq14ypc6zpbdifrE1n8HFqJfC
f+V+TuT0EjmFP/4FUEsDBAoAAAAAAGx/GEkAAAAAAAAAAAAAAABqABwAaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVs
ZW1lbnRzL3BsYXlpbmctdGhlLW1lZGlhLXJlc291cmNlL1VUCQADyya+V4Qtvld1eAsAAQT1AQAA
BFAAAABQSwMEFAACAAgAa38YSU+bR+PLAAAA3QEAAJEAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMv
cGxheWluZy10aGUtbWVkaWEtcmVzb3VyY2UvcGF1c2UtbW92ZS10by1vdGhlci1kb2N1bWVudC1z
dGRlcnIudHh0VVQJAAPKJr5Xyia+V3V4CwABBPUBAAAEUAAAAKWQMWvDMBCF5/pX3JgsxjFxS0QI
JPaQQDuWDqXDWboowsopSGdC/33ltlun4vEevO/de/vRQr2GVaOajaproHtaVXXpg0YPUXSkW4ji
2L431dPm8QO2Jz6HnQIfrM0yJMEoqSzLYv9vVEf9aDMrkbxQSmjp+Yd6yKZBQTZ6MnPA03Nt4LOz
Y0Rxgd+cXNpwvXmariOy8RQVtKgvZKACYuxzJvSoB2KT5rV6TRSnvTqnRf1hK1gUD8tZCWx+h/vu
hUI2xM/M5dH7ZfEFUEsDBBQAAgAIAGx/GElKABAI4gAAAFICAACPABwAaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVs
ZW1lbnRzL3BsYXlpbmctdGhlLW1lZGlhLXJlc291cmNlL3BhdXNlLW1vdmUtd2l0aGluLWRvY3Vt
ZW50LXN0ZGVyci50eHRVVAkAA8smvlfLJr5XdXgLAAEE9QEAAARQAAAApZFBSwNBDIXP9lfk2F5k
u+0qHaTQbg8WFAQRheIhO5tOh46ZMpNV/PdmxZOCoHtMSL738rLqHJRzmFamWpiyBHrL06I8D9Fi
gCQ20Skm8ex2VXG5uHiGqw01nVsayMTtLeWMjh69HGoUcjG9GxhzF8JktPo32bOXHnmvdB95y/to
4OmuBhuZyYr2dOYVg2+/qcz+5F++7N9E53RirUtHA7oYaBBYMEkdee9dl7B3+5lPfDkF6qtr5DZQ
MlCjPVALBRBjo5rQoD1qqnnYVQ+ZUp/ZxlsxP9j6n9HZZJDC73//AFBLAwQUAAIACABsfxhJpIna
vt4AAAAGAwAAjwAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRp
Y3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9wbGF5aW5nLXRoZS1tZWRpYS1yZXNv
dXJjZS9wYXVzZS1yZW1vdmUtZnJvbS1kb2N1bWVudC1zdGRlcnIudHh0VVQJAAPLJr5Xyya+V3V4
CwABBPUBAAAEUAAAAM2RQUsDQQyFz/ZX5KgX2a6u0kGEuj0oKAgiCsVDdjadDh2TMpNV/PdmxZsH
D3vpMSHvy8vLcghQn8O8cc3C1WdAn2Ve1adJPCbI6jPtJWvksG6qy8XFG1ytqBvCtYNC3D9QKRjo
Jeq2RaUg+cvBMQ8pncyWB0iOHHVEPhk9Ct/xRhy8PrbghZm8Ws9mPjDFfpJ//bV/LyHYxI2Jdg5M
mGgSWDFrK7yJYcg4uv3JR973icbqFrlPlB206LfUQwXE2NlO6NDvLNUy7arnQnnMbBW9uj9s+8/s
6DD//h/5G1BLAwQUAAIACABsfxhJYmm7SoQAAADAAAAAgQAcAGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50
cy9wbGF5aW5nLXRoZS1tZWRpYS1yZXNvdXJjZS9wbGF5YmFja1JhdGUtc3RkZXJyLnR4dFVUCQAD
yya+V8smvld1eAsAAQT1AQAABFAAAACdzLEKwjAQgOG9T3GjLtJGozSIUOriIAgOCuIQ0zMGwp0k
F8W3t76C68/P1xUPagGNNro1ag74zk2tZpGdjZDEJXxykkD+outVu7zCeou34jcGMtKwx5ytx1OQ
R28FPaePgQmVGKdV97ccKMiPPI56YNrRnQ2cDz04JkInYxufl41hqL5QSwMEFAACAAgAcn8YSQAx
3auEAAAAwAAAAHgAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50
aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvcHJlbG9hZF9yZWZsZWN0c19ub25l
X2F1dG9wbGF5LXN0ZGVyci50eHRVVAkAA9cmvlfXJr5XdXgLAAEE9QEAAARQAAAAncyxCsIwEIDh
vU9xoy7SVoM1iFDq4iAIDgriENMzHoSLJBfFtze+guvPz9dnB+0CGqXVSs8V4Ds1dTvzwRoPUWzE
Z4hC7C6qXnbdFdZbvGW30ZCQxz2mZByeSB6DEXQhfjRMOHs/rfq/ZWKSH3ksOgXe8T1oOB8GsIEZ
rZRWnpfxNFZfUEsDBBQAAgAIAHJ/GEmPJOe25gAAAEwFAABzABwAaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1l
bnRzL3JlYWR5U3RhdGVfZHVyaW5nX2NhbnBsYXktc3RkZXJyLnR4dFVUCQAD1ya+V9cmvld1eAsA
AQT1AQAABFAAAADtkkFLA0EMhc/ur8jRXmRbu1gHEer2oKAgFFEQD9mZdDp0TMpMVvHfO1sED97s
RbDHwMv3SN6b9x4mUxg3pjk3pw3Qex7Xk5MoFiMktYm2kjSwf27qs9nsBS4W1PX+0kAmvaOc0dOt
eF8UV2VpY6AsRnLV/PdgxaSt8Cr4PqEG4ceg61Zet5GG6RrZRUoGWrRrclADMXbFEzq0G2KX9zEn
fciUbngli2DV/GAbOK6ORns5sPt63O4uVPKSPgqX+xj/KvmQ9f/J+kD+JgcOOiCXhV76OHTFwNN9
C1aYyQ4dLZo3jMFVn1BLAwQUAAIACAByfxhJoorV0ewAAAAMBgAAegAcAGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1l
bGVtZW50cy9yZWFkeVN0YXRlX2R1cmluZ19jYW5wbGF5dGhyb3VnaC1zdGRlcnIudHh0VVQJAAPX
Jr5X1ya+V3V4CwABBPUBAAAEUAAAAO2UTUsDMRBAz/ZXzNFeZPuxWIMIdXuooCCIKBQPs9lpGprO
lGRW8d+bFW/eXMXLHjPMvJm8MFm2DqZzmJSmvDCzEugtTYrpWRCLAaLaSEeJ6tltyuJ8sXiByxXV
rbsykIibO0oJHT153VWo5CS+GzjlNoTxaPljsmevHfIh073wDW/FwPN9BVaYyWqO5ZxXDL7p0SWR
fo1/K87ljOtctDeQCwP1AitGrYS33rURu2k//cjhGKg7rZGbQNFAhXZHDRRAjHXuCTXafbaa+t3q
MVHsnK28VfONnd9ndDIevP2Dt7/al4E8kH/jL/0AUEsDBBQAAgAIAHJ/GEnw2tsU8wAAAAwGAAB2
ABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRl
ZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL3JlYWR5U3RhdGVfZHVyaW5nX2xvYWRlZGRhdGEtc3Rk
ZXJyLnR4dFVUCQAD2Ca+V9gmvld1eAsAAQT1AQAABFAAAADtlEFLA0EMhc/2V+RoL7KtrraDCHV7
ULAgiCiIh+xsOh06ZspM1uK/NytexFNZBAs9JiTfy7wHM2sdjM9gVJpyak5LoG0eFeOTEC0GSGIT
bWISz+6lLC4mk1e4nFPduisDmbhZUM7o6MnLqkIhF9OHgWNuQxgOZj/I5zuQPXvpkA9K95FveRkN
PN9XYCMzWdGezrxj8E0PlUzyff5ddE4nrnVpbUAXA/UCCyapIi+9axN21375E982gbrqBrkJlAxU
aFfUQAHEWKsm1GjX6mru96rHTKnzbO6tmF9szWdwNOyl8Fe5HxL5f4kcyPtN3uUv/QRQSwMEFAAC
AAgAcn8YSV+2vjXrAAAApAQAAHoAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0
bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvcmVhZHlTdGF0ZV9k
dXJpbmdfbG9hZGVkbWV0YWRhdGEtc3RkZXJyLnR4dFVUCQAD2Ca+V9gmvld1eAsAAQT1AQAABFAA
AADtk0FLA0EMhc/2V+TYXmRbu9oOUqjbg4KCIGKheMjOptOh06TMZBX/vbPizZuL0IPHhOR7mfeY
ZetgMoVxacq5ubgEek/jYnIexGKAqDbSUaJ6dpuyuJrNXuF6RXXrFgYScfNAKaGjF6+7CpWcxA8D
Q25DGA2WvyZ79tohnzLdC9/xVgysHyuwwkxWcy/PvGHwTQ+VRPp9/r04lydu8tLeQF4M1AusGLUS
3nrXRuyu/fJHDsdAXXWL3ASKBiq0O2qgAGKssybUaPfZ1dTvVc+JYufZyls1P9g5n8HZqJfCX+X+
n8jpJXIKf/wTUEsDBBQAAgAIAHJ/GEkGKbBk7AAAAEwFAABzABwAaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1l
bnRzL3JlYWR5U3RhdGVfZHVyaW5nX3BsYXlpbmctc3RkZXJyLnR4dFVUCQAD2Ca+V9gmvld1eAsA
AQT1AQAABFAAAADtkUFLA0EMhc/2V+TYXmRbXW0HKdTtoQUFQURBPGRn0+nQMSkzWcV/76x48+ZS
PNhjQvK95L1F62ByDuPSlDNzdgH0nsbF5DSIxQBRbaS9RPXsnsvicjp9gasl1a2bG0jEzS2lhI4e
vW4rVHISPwwMuQ1hNFj8muzZa4e8z3QvvOaNGHi6q8AKM1nNvTzzhsE3PVQS6ff5N+JcnrjOSzsD
eTFQL7Bi1Ep4410bsbv2yx953QfqqhVyEygaqNBuqYECiLHOmlCj3WVXU7+vHhLFzrOlt2p+sHM+
g5NRL4VD5X5I8jHr/5P1X5E/AVBLAwQUAAIACABzfxhJTmlKH44AAACAAQAAbAAcAGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9t
ZWRpYS1lbGVtZW50cy9yZWFkeVN0YXRlX2luaXRpYWwtc3RkZXJyLnR4dFVUCQAD2Sa+V9kmvld1
eAsAAQT1AQAABFAAAABzLE1XMDJRMDS1MrW0MjZTSC0vNjQw0svJT07MUSgqSS5KLcgvKsnMS482
NTC3sIhVsHFJTSpNt7NSKE7NS/FNLS5OTE8NzyzJcE4sSU3PL6q0UtDIK83J0eRyRDHZnASTM/My
S0BGBgNNz8zP88xLy7dSiAhwVkjOz8tLTS4BigHVlCXmZKZQYMvgcD8AUEsDBBQAAgAIAHN/GElB
kdXp2QAAAMICAACEABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFu
dGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL3NyY19yZWZsZWN0c19hdHRyaWJ1
dGVfbm90X3NvdXJjZV9lbGVtZW50cy1zdGRlcnIudHh0VVQJAAPZJr5X2Sa+V3V4CwABBPUBAAAE
UAAAANWQP2/CMBDF936KG8sQbAcQwRsCIYYOVUQnxGDsC7Hwn9R2+vl7VTpW3SoV3fKe3jvpd3cW
K7nayMV6XvPmAsfT6bXF9xFzgc7ejqUM33ZvTYsa7Qe2mIcYMu6Uc1el7xLSFBjoqU9uymHJl/CM
KcUElag3i2YGHemvkmTMRa1cH3ORTcM564t3LKNXoVidGforGoOm0jEUDIV5NFZV6NCTy6yL8en8
OzvZ/eiHgw3KvbUv20AH+FhwawwhZglqEiDq9ZzTCFqjLozJ/Qmk4I/74J/Y/8eDPwFQSwMECgAA
AAAAbH8YSQAAAAAAAAAAAAAAAFUAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0
bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvdHJhY2svVVQJAAPL
Jr5XhC2+V3V4CwABBPUBAAAEUAAAAFBLAwQKAAAAAABsfxhJAAAAAAAAAAAAAAAAYwAcAGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVu
dC9tZWRpYS1lbGVtZW50cy90cmFjay90cmFjay1lbGVtZW50L1VUCQADyya+V4Qtvld1eAsAAQT1
AQAABFAAAABQSwMEFAACAAgAbH8YSc40WvSlAAAAOAEAAIIAHABpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVu
dHMvdHJhY2svdHJhY2stZWxlbWVudC90cmFjay1hcGktdGV4dHRyYWNrcy1zdGRlcnIudHh0VVQJ
AAPLJr5Xyya+V3V4CwABBPUBAAAEUAAAAKWNsQ6CMBRFZ/mKN+piACFqY0wQBk10NA7GobSP0lBb
0j7i71tnNx1vcs851aQgLyArWbll+QrwFbI0XxonuAFPwuPoPGmr7mW63hQP2DXYTmrPICBdMASu
8OyUio9DhAYGETQok+p3MXFPtbOdVpPnpJ29aepr9xwNftaRW2nQM6i56FFCCmh5G5vQcjGgleGf
ONI1oD/ZzjVaEPtyM5gns0XyBlBLAwQKAAAAAABsfxhJAAAAAAAAAAAAAAAAXgAcAGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9t
ZWRpYS1lbGVtZW50cy91c2VyLWludGVyZmFjZS9VVAkAA8smvleELb5XdXgLAAEE9QEAAARQAAAA
UEsDBBQAAgAIAGx/GEnIKrXlhQAAABoBAABuABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL3VzZXIt
aW50ZXJmYWNlL211dGVkLXN0ZGVyci50eHRVVAkAA8smvlfLJr5XdXgLAAEE9QEAAARQAAAAzcy/
CsIwEIDxvU9xoy7SxgY1iFDq4iAIDgriENMzHoQ7yR/Ft7e+hevHx68rHlQLjTZ6ZdQc8J2aWs2C
OBsgZhfxKTET+4uuF8v2Cust3orfGEjIwx5Tsh5PlB+9zeglfgxMuIQwrbo/lIkp/8jjqJPwju9i
4HzowQkzujy28XnZQEP1BVBLAwQUAAIACABzfxhJFkom/70AAADsAQAAYwAcAGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRp
YS1lbGVtZW50cy92aWRlb18wMDgtc3RkZXJyLnR4dFVUCQAD2Sa+V9kmvld1eAsAAQT1AQAABFAA
AAC1kDGLAjEQhWv3V0zpNbLqLatBBF2LO/BKuUIsZpMxBuNEklnEf29O7K5TLB/M+z7mLToLo08Y
VqqaqnENdEnDcjTwQaOHKDrSOURxbLdVWU8mO5itqO3sXEEi+aGU0NI6WJsvlrl0VJCLnkyxeB4s
GKUJvHe2iygu8K+TQxNOZ09/6QvZeIoKGtQHMlACMbbZCS3qI7FJr8hJNoniN+/DymlR/9gK+kXv
4yUDm8dw979QyIZ4zVzuvH8n+QZQSwMEFAACAAgAc38YSW8yz1eFAAAAwAAAAGwAHABpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQv
bWVkaWEtZWxlbWVudHMvdmlkZW9fdm9sdW1lX2NoZWNrLXN0ZGVyci50eHRVVAkAA9kmvlfZJr5X
dXgLAAEE9QEAAARQAAAAncyxCsIwEIDhvU9xoy7SVktrKEKpi4MgOCiIQ0zPeBAuklwU3974Cq4/
P9+QLNQrqBrVrNWyBXzHqqwXzhvtIIgJ+PRBiO2lKduuu0K/xVuyGwURedpjjNriieQxakHrw0fB
jJNz82L4WyYm+ZHHrJPnHd+9gvNhBOOZ0Uhu+XlpR1PxBVBLAwQKAAAAAABsfxhJAAAAAAAAAAAA
AAAAUgAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1i
ZWRkZWQtY29udGVudC90aGUtYXVkaW8tZWxlbWVudC9VVAkAA8smvleELb5XdXgLAAEE9QEAAARQ
AAAAUEsDBBQAAgAIAGx/GEnHtBe43gAAANACAABuABwAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L3RoZS1hdWRpby1lbGVtZW50
L2F1ZGlvX2NvbnN0cnVjdG9yLXN0ZGVyci50eHRVVAkAA8smvlfLJr5XdXgLAAEE9QEAAARQAAAA
1ZAxT8MwEIV3fsWNMKSO01Yk3ioq1IEBRWWqGFz72lic7WBf+P04CjNMSKBb3rt7J313J7lV2041
61Un21c4HI/PPb5PmBku7npgHr/s3tkeDboP7DGPMWR80ERnbd4UpGVgYSj54pY5bOoN3GJKMUEl
m27d3sGl6DmkhKBoNA0xs2rbuhYDexIZvQ7sTBboz2gt2srEwBhY8ICVnqyLFRL6uRMmopvT9/zF
7ic/Prqg6aV/2oVyhI+MO2sLZlagFwGyuV/VpWRZK1mYEv0eaPe/Hp2T+Qn/T/x55vwEUEsDBAoA
AAAAAHN/GEkAAAAAAAAAAAAAAAAKABwAaW5zcGVjdG9yL1VUCQAD2ia+V4Qtvld1eAsAAQT1AQAA
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
ABwAbWVkaWEvbWVkaWEtc291cmNlL1VUCQAD5ia+V4Qtvld1eAsAAQT1AQAABFAAAABQSwMEFAAC
AAgAeX8YSYiaT2aLAAAAmwAAAEgAHABtZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLXN0
YWxsZWQtaG9sZHMtc2xlZXAtYXNzZXJ0aW9uLXN0ZGVyci50eHRVVAkAA+YmvlfmJr5XdXgLAAEE
9QEAAARQAAAADcixDoIwEADQ3a+4H8C0hFpg07CYOClxMQ5He2CT0pIrxNSvl+3llUKeClEXZQVS
tapplTjWUkO3zcudgiXumeilhG7KVldS1+UbrlOI7MIEJoaVo+/dTAMmgkQrDBmMdxR2kcFt3/Pz
gfPi6bKNI3Hn0uIx3zATwxcToLVkYY2AkHIwH47B/YgPf1BLAwQUAAIACAALgBhJPTRhY8AAAAAk
AwAAKAAcAG1lZGlhL3NvdXJjZXMtZmFsbGJhY2stY29kZWNzLXN0ZGVyci50eHRVVAkAAwUnvlcF
J75XdXgLAAEE9QEAAARQAAAA7ZCxikIxEEVr/YoptZH4cEWCCPosFNZysRCLeckYg3EiyTzEv98o
dnbKdlsO3HsOc+etg2oEw7FWSlcK6JqHqhqEaDBAEpPoEpN4drsvNVFqD9MlNa2bacgkG8oZHX1H
50piUUonDaUYyHbn74MFk9SRD961CcVH3no51vF8CXS/Vsg2UNJQozmShcJmbIoTGjQnYps/kZP8
ZEprPsSlN6Jf2Bp63U7/M8P/bm8Z2D6He/yFQi6mW+FyG8Jfkn8BUEsDBBQAAgAIAAuAGElUCI7c
igAAAIABAAAwABwAbWVkaWEvc3ZnLWFzLWltYWdlLXdpdGgtbWVkaWEtYmxvY2tlZC1zdGRlcnIu
dHh0VVQJAAMFJ75XBSe+V3V4CwABBPUBAAAEUAAAAM3OsQoCMRAE0N6v2FIbyQUVCSIcZ2MhCBYK
YhFzezEQdiXZKP698Re0sR2GN9MWD3oGzcIoZXQD+MyN0tPIzkZI4hLeOUkgf56rpVIXWG3wWvza
QEbqd5iz9XgMcuusoOf0MjCmEuNk1H4tBwryIQ9VD0xbGtjAad+BYyJ0UrPaedgY+h9W/uP/G1BL
AwQUAAIACAALgBhJz04p0pAAAAC9AAAAIQAcAG1lZGlhL3Vuc3VwcG9ydGVkLXJ0c3Atc3RkZXJy
LnR4dFVUCQADBSe+VwUnvld1eAsAAQT1AQAABFAAAABtjkEOgjAUBfee4l9AUKIu2FYREkkIwgGa
9kWbYD+2vyTeXl25cTWzmMXkV07BQGlzR644oIV1+mfr7f5QZMVuk3eBheU1I+aVu9XD0H2pJgcv
tfZ2glUpCj/G/vJpF2cRMkPmb6ACtKBHnNlHHJ2RisMZ0uOZEKUkxWmy5FnIsF8QhMahIWFqm/ZE
342SVm9QSwMEFAACAAgAJIAYSV0+1oDAAAAA8gYAACgAHABtZWRpYS92aWRlby1wb3N0ZXItYmFj
a2dyb3VuZC1zdGRlcnIudHh0VVQJAAMzJ75XMye+V3V4CwABBPUBAAAEUAAAAO3PvQrCMBQF4N2n
yKhDmzT+VcFBi4KDKDiKlGt6qdHYlNso5O1VHHRwdRCynTOd8+2SwVgkYzGMu6ncM+3wAo2vVL5F
tyFbIznPGl1WYAwWDIkmUSKHaZ+1zwtdzqDB9eGEys2JLOXL6gZGF+Cw6LC2/mzgGN/aKynMQB2R
Z5ZwhYWGd4qS/kDGsif4Y9pZ52ts+MaAR+KPsVfKp89/sWJGV8ikHHVbu4AIiF8geiPxichs7f9C
IdI0KIIiKL4o7lBLAwQUAAIACAArgBhJD0fmMroAAACSAQAAHwAcAG1lZGlhL3ZpZGVvLXNyYy1i
bG9iLXN0ZGVyci50eHRVVAkAA0InvldCJ75XdXgLAAEE9QEAAARQAAAApZAxiwIxEIXr218xpTaS
XVQkHIKuhYJXioVYzCZjDMaJJLOI//5yh52dlg/mfR/zFr2DZgz1VKtaNw3QPdeqGYVoMEASk+gW
k3h2h4maKXWE7xV1vZtryCQ/lDM62kbnysWylC4aSjGQrRbvgwWTtJFP3vUJxUfeezm38XoL9JfW
yDZQ0tCiOZMFBcTYFSd0aC7ENn8iJ9llShs+xZU3ol/YGgbV1/AjA9vncP9/oZCL6VG43IcwrH4B
UEsDBBQAAgAIACuAGEnlUKofgwAAAMAAAAAhABwAbWVkaWEvdmlkZW8tc3JjLWNoYW5nZS1zdGRl
cnIudHh0VVQJAANCJ75XQie+V3V4CwABBPUBAAAEUAAAAJ3MPQoCMRBA4X5PMaU2kgQVCSIsa2Mh
CBYKYhGzYxwIM5Ifxdsbr2D7eHx9DWDmoJdWaWsM4DtrZWZRvIuQik/4lFSIw2WhVkpdYb3FWw0b
Cxl53GPOLuCJymNwBYOkj4UJ1xinXf+3TEzlRx6bTsI7vouF82EAL8zoS2vteblIY/cFUEsDBAoA
AAAAABiDGEkAAAAAAAAAAAAAAAAaABwAcHl3ZWJzb2NrZXQud3MubG9nLWVyci50eHRVVAkAA78s
vle/LL5XdXgLAAEE9QEAAARQAAAAUEsDBAoAAAAAABiDGEkAAAAAAAAAAAAAAAAaABwAcHl3ZWJz
b2NrZXQud3MubG9nLW91dC50eHRVVAkAA78svle/LL5XdXgLAAEE9QEAAARQAAAAUEsDBAoAAAAA
ABiDGEkAAAAAAAAAAAAAAAAbABwAcHl3ZWJzb2NrZXQud3NzLmxvZy1lcnIudHh0VVQJAAPALL5X
wCy+V3V4CwABBPUBAAAEUAAAAFBLAwQKAAAAAAAYgxhJAAAAAAAAAAAAAAAAGwAcAHB5d2Vic29j
a2V0Lndzcy5sb2ctb3V0LnR4dFVUCQADwCy+V8Asvld1eAsAAQT1AQAABFAAAABQSwMEFAACAAgA
gYMYSUUmHTnRJwAAy6oAAAwAHAByZXN1bHRzLmh0bWxVVAkAA4ItvldWKL5XdXgLAAEE9QEAAARQ
AAAAzX35d9vIkfDv/ivachKQEQ/JM85ORIl+jsaOtevrSfIm+TRaPZAERYxAgguAOjLR//5VVd8H
QFJ23tvZrG0C3dXV1dV1daH68PnPn4/P//HlLZtV82z47LCsHrJk+GyUTx7Yb88Y/DePi+t0ccD2
BvRzmi+q7jSep9nDAXufZLdJlY7jDivjRdktkyKdGu3K9J/JAdvfX1aDZ4/PONQh+6MFuZsl0+qA
/bi8H5hPq3wpHkLH2b7oYkL9EaG6PfZ7r5I59Vnao4zyqsrnMI3eD6JBVRws8qrVK5JylVVlt8jv
2qyaiG53s7RKuuUyHsNYi/yuiJdNvQ6maVFW3XzarR6WSRhGMY8zDmNCMOw+bdGpSu6rblUAOafQ
44Bl+V1SjOMyEV1Fs2U8maSLa5jx8l7RqZodJPNl9dBBjOhfbus90U48794lo5u06q5g5WD1smRc
IaaLhFO2O8//GXoHIHpjWIoEVgP/jtNFUkh6A7FnSXo9q+RoPZisJMk4z/LigF0X8YPHJyXQJ0sK
3segr+g6isc310W+Wky6AgrR12+eTot4nnSY/XB+LVclnQCd2E97e5LlJLp/4o8ceBeTuIq7yf0y
XkySydHONM7KZOdSQJuk5TKLHwzKvKjyPBvFkh7LvEyrNIcdNE3vkwkfkXj1pRy/4MOr38QCcZZe
Qyd6x3GaZnlcwSp2AZMkc1dWbSCfTsX1KG69fPWqw/Qfe70/t0X7vJgkBWekMs/SCStT2NaF+bZb
xJN0Veod2eP06I5WsK0W61bIIDsIA4fq+2rePiaaTxSd00UG3NYdZfn4ZmBLKPYDdNyTkkoTvkgy
INytQGS8KkrEbZJMY1hjwc2rogButrm0wOUy34ZnzSnk9rGadnFJPYaIRzDLlSQQ8URXyCd8wAXj
vtzbJD2BCeLrWtajNtTkOpmE23LycRRLGHKZTLrFarFAvkriInvozpOyjK8Ta3YHRFq+Ji8me6Yu
uBPLOMqzydqlUtz6g73RPCnSAKOJSyQr/FgL3hEO5hslIeQIYpqwF1DHZXJLAtX4Rs+XuI7lBvJJ
NgXiLlbOKGoeAW0md4ai20sp7TmE+245iyf5HX8h///FTz/9NLDkO+kTwXU56KMUNEPvZemLG+S5
QSObCmHVIG7qpp3FIyW21PqKhcW1mqWTSbIwSbTMU1AyRTe5hd1XmppJTEKpGBO2IJYwLH6QiNZw
q6uA6mYlhSKOtgRJnnX/medzj3Hrxf2euav3LKH45z/93ubf/T1v5fUjRTu5usAH7htU3OpxPRnr
pxmQ/S/3NhHUJlOCLGavoA0poD1QOvx/vf941W4gpLYQjQl2p1lyDyMahon31EdrlMWullCMm8M8
QaUCmpzx1rNzGN1eCbIBpGg6B6nZwA+2FgqPLpXk3t7vbSX5ozZNaoYbGgKsUcWE+JADAx0H9CNu
k5THDTyHzUEDFXHJ1eULoWJArZXVZltA2t8/OkaP+i2m/krOHO1I8exHbaptatxIDqvDdMhmL10H
B/7vRzQg/I6lZ0YjWw9C/pFcsP+QWlwudBe2ZTku8ox8gMO+8LS4x8VSMCxXC7AZwMqGQenhzlC1
gmbjIl1Ww2fplLXu0gVsrx5idgqqOynaQo7L373Jar58U56DYG8BHZ7dgjV6fVVWMTLCdLUY4/Kw
6ywfxdkZPm21n/EZIvjnoqn0SPA/8YgdGc/IUgKemJ0jiQ7YxWXHf/e5muGWdN8BdW8evsRlWdN3
Fpfvq2op3pLJ7TU4QaZ9F6fZCnR5XSOkQWObeVqWsKan3OD3MSnki98e7RflLF9lk/P8+jpLCBVo
UxUrB/wUxgbwNdMk5vpbWs3OKth5ATrB7kvyVVXTXXOMRUrV5vGZ/rNIqlWx0GwAPK444c3PP1+d
vj37+uH8rJUulqtKsoPFItIpAiagRoKPBWNKFmVlMQYnaZVlV6J979cyXxAzO02HGgPQW2n19h48
yhJ+tpAuEgdkXmD45B7Gxeeg68vqBB98nraiXiTcGORc0eyIdfdN5hVTv8DeHbazcznw6UIve+Vq
VFYoAVFbEbR2hzlv+CC7bL99aVMR3y/Dc+j32Tn443kRFw8oFTsMGDGHEdg5OItl/4zoUfa51F0+
9EGLw7JfEX/0QWwB7Byd47KPjwRlr+4KUE1FbwkOP1rJ7M+venK4dyd///j2gJ2CkzOu8gJEP4tv
c1CJAGy6Qo6HmU8TEPnjBF+CfJ7RTBl4LWxZ5GNwA9gCbOWyp+gbWqWL/cteliyuofuQvWq7RMc2
A5PQQRh7DinncTWeJeUZRR3yorXIJ2Czl+KnKazwTU809wY3X7ZUbxCIVm9O9I/2kGFYwab1kMFK
2Qis386EaRJmGaMj+nl6/rBMaqgC9gooFHoJO4bg816f4J/mtkA01xC67YhChXJgBy1WXLVpZItk
DtqPYErkHHR6vMkxoDzh7WwI07x4G49n9OpDirt3BuyZJWqybwowPHvArlWOQbSe6NADGykL9HLx
w110Qh5hC8SWsVvF9lmVCYtXkzRnVXxdIjrszdefTz5zwf1aySe+XUkAnwhRBfB6qZRSH/R7Ka+w
G24vLb08IM9dQYZ9UKcV8dgdAYyzsWDPXl5cR23ee2D1XcKWTxE5CeQ1czv2e71eP2IHLIp0X8QT
eonuuzSyFoge3rvMnHA/EvJBTPyRJaCEnVmhTP8ZzAWTepac78LgVfUgqadpZvUjglk8ux6wCVJM
1J2fCQIFv+R+tZDAHZ9415Y3QG+5wOUQWgkozkMQRGMw2SNDaEgwsHT0Sk8FoLJdePoag8JxdVTd
V5ElVqPDSXrLxjByeeSGNobGO3KUhxFMg+YKS3XYh7fDQ3wkx4enXI1HfLHxASpwp82Qd43sXVWh
RQR0I5uoxXlG7qwtkd3hbj15J2jI7YgRD9HV4U3iBbwFA4hGYxSq5UMS8op+inVpHtC9AffkLRlV
MYUuWiAK5yCtTGuEh/Y+pIsbWHDxXm9j/bZHKKoV9SOCxgLbMDWI/10lxYMSz1EvBMTgIKMnvjvm
QXpkvmjXG82ep+op2Bt3qeoAzlYWL8ukvotJxnWtBS3rkEVcBwa1QYRrC/00v0NRZOpBDacD8gxj
oFHbI5wR0TdNRh+6ptJqCfyEk6DIP7eC/fYd7lU4JAj1LbBxWsqHalOAL1cm1ZsKxA2sa9KKrBOH
yOrDMefQiefPxXY7B0+haDlYxMsl+PTvzz9+EJodj/k88yldlElRvZn8Go+BqNha06CmQSsaJSCK
krcLxI+gBrhGdIZdjX1QgGFLG8VmVjR2XbFu4QtTtfJ25xQ0PyISa6tjI96irptwkQa2QC2B7PvL
6uXe/g+Ch2u5nLdvZEVDS27KjOiCGhqNS1zTXNPWR3LHJzzJxyuUYb1xkeAYXKK1DIrypoY8g0ma
pBiYQI+TLGuCOjGgYtseiIszmJZYJ4vkb8CMox7ChhhoncvHR7qWtT1llB82yI3JHWj/mGoKIdAu
ljHhgrXI74TnewP469AcTuLC0t1d1zzLuAQ3Wl+kl7YVxt85dkxIYpPeA4PRibmEkMdVHwTiFvjK
0sc00LUvbbiCjNoG6zzam9kCapnOBHMGAKQmwv9M0cPXuSN6tQeKDYUJJdiLdxHOAO/TllFwvSWd
VrhNxLChLcJbqG2xlfSsb2eIJViN/07LdJQlbyxTxNgADULEPVxGNHcuWc8ya0x99bxmPJNJxlkS
FycY8r+Ns5Ydw7G4QbYxFn2D1uhVruRBiS9jjDjiBiMbaFdGKK21NUqgQdWUTUgd9nJvb0+Z7JZ2
LB8W4xb+7LC4uC7lsgKocx53a8m2LUCU4Q9kv+yhhQQQnQbssYMRe4d5bvkikQvUypfVlbJwTe7R
EekjZjVi//qXYiC9+vkiezib5XdfVeBPxjZbbS+0oGCFRCpuJZ7JIiG1o5AK3xRWFJ7+W6X8SivG
vNVEwhupdh6sxkium1sD+BpIvv0CrS0TJuwuoKQOESakdToMtIzlCxh6B/QR/JsrIC1xiZ19e6rD
LgwgoI4ua8z1/zuTCDkQa6fBA/JfywRDGzbLiZV+Hoxn98xg69Ukpb33PMvHNC4InDMeB2jraMs0
zZKDfp+79Xs2GkY45C9xmXyJq5lFyZF4qHd1CHHXrigSpHmOxAxPQjbQclMOhMbarKqWgLAbJQo0
3j3SY71mragPRM+Linx/+aKNsYv+CPQX+AU1QCIYbLW46VuRIDMCFMJzw/UBN75vhz80US13Hnog
Pa1YvIpBxCKEQEeDZLehDcODHsFFxOgHRsgpihAZvw778fCwRBOWQ6TEm3wxztLxDZ7r4e9WNUvL
9s6QgXPwpz/vH/axvRt/EE3xD5NlOIO8Q6iWnYr4fYpv0+sYBBal++CTluUj4VPtFncMWO0wsfA4
im/sv5DUCxPPmK2dFKWmHYilCBLUdiYBO9wVtJEkEoTWC+nj/X8V51C8Wc3jC5ncsCKrKf0tMirL
WkY1nBmDVTUoDNYRLOJQLxhmtxQsLAeVbMwcjkxLoZjfCvXaknoWzJ9xtYoz65yulM0snwSFHG9M
gbCz/zr5ErkCToKliD5XGfS7RwdGrYiZcVrswAHK5vxXsHHImzM613lz9jj/HWerRI1DHS3HzgjA
6WkohWHAEJFg9oc/WH3xv5rO0bs3Jx9kBBl0k9ePmfCJwudv/34ewRDMfXHy8c1f3+7WvqbDDXAC
294Y1soaIqjmmFk3d86v+MHiX7WcfwcuETLm59Gv0N5kJpKu/MyXv+zZ5yXGC3CKrko6Qm/XuQ32
SXtvuSpn5rjCNbQ7mVkInnayXoLFQMfEas1Q4Wr74JnNTPas+LOBHUsytpFuqZ7CcNGXN2dnkaZG
WHWuyqS8Sgx5doWmiyaSAdxa4Q22vRF1lrMCDvp4cnZ28umv1vbW52nz+CYBGVUkrJrFFfr9mHyq
shSJlOUyhT9B+zIQuF2xr6v7iiHmuJlNuLzLHawrEyPLhI1eDSPY+R4BPmjwavUKnuc3yaKslzs8
BFmWyQR5jjzRz+DyCKKeLE6TqtBii0O72LskEjq7U7zc5y9pA0euWNVtVDfNisQo4jwQOadVYwZT
dpuwspJFDPb9BMGtnYZlq9qg7TSf7YjtMBbNAvFRm+C5fOoealstOMFo3ptPW2xnsTNAZVLWBX2m
4aoIG2ggI6dh1o9bzP/49M3Z+6ie1DoT65vIfH7y8e3nr+cNA5kpSRsPpYSbwx9GdlQAln80J6ND
ps0hY6BNfnwwnqZ649niOgiqYdTo6XJswk6uY/GkIk7Iu3hhYvpk4MhA0GrBFeB95QWNlRAXU3XY
1e8DWp8vP+/gmDT4rIdHwAKTptgx2pBSYOOhtxtK3gAVB/tvRUYZkQ46gWAgInKqo/bOwTVFeqt5
ZoX2RZuOORAezHforJd+Ix7P7Oi501MrOOzHf63vNUmnU9kH/20dAoflHNpIPIniaolZP9oIoInt
1syMd+EDYkMckT9jWwx8h203HPHOGuvOGkWYl/4xIvGDUOp4cGAIkg4zvS1hvTD3YDGKPINGq1Cu
RNrhjByErhLaMBLtZ7gZ9ismzNXFtt2kVuVEOds+qJlQN9a80hN5fhSahTiFdlakKQbyxeP8LhhW
lE3Wk66mIkEHDwunTDYwfbPwyPYIhkQxdsga4fKthDqqJdT3IFYdjXg+pkugR29mNtv4mcib4Wzj
hvusVNtOnj06mIRIvQlwSxBb8nGwNax1/GAYN+Y2xfnZ7hTN8QqfXy2TYqxOWrahmESDoLdwWelf
oHx+347avsqpFTHacXou4gO2c3YlHJcrwto4I9mKWkvK+8WmrkgFOE7uJdju6QKcdcxSGOVxMfl6
+gG8dX6ipXErXZ8dUy6B0Ds79YfpRm9lKu3uptZpoIS0a64ZGkEiDGDJxBSp5kNlXebkA5pgdzo7
liksA24iWG54pV2py4xEyYkkS9lXpLpSD2kjvYCdeQfm4+lqUR6hJP8DuRlHyCaw0fNJ8vX05Dif
L/MFpkZI3FzLF32S0/zODpNY4QKhwg55lPcbYwKCoyKZhIfYtsKBgtfGTqacUTK7dqJgkOZblJWP
nNQmoiuRV54JiDbDw6oYSrUuHx5WEyukHAwdm/qaR0axlxHHMUKpR6HEfxPAwB/fyRxqiArVyguK
EgRUlGdRmF/AeJkiAivX+NXTa3seXAgZETf0sdlYL9zFt6Ze4FnXpgDdUM4JOIKiW0Mx7WokCgKR
Buh2AtwNSoSFOSHYfoo5JCdK2elapK8fEqf1pBEFWeyxNoyM9X8pd/uG2z3mOWJbWu0qTmYmxBAo
J1qmv0gxRMcmY8LsYDMnZT9ybDcnztZ2pQoKCClaaCBXamwrjzEG5bIYq5eHcmzB+N86ev0ADXzP
DyheByPWSjlYaJnAD2PjUKvZ+LjQI1xyjTOcgd7Miwc6iQ2O0AddAH+gghzaZ8e+5cM/IqGzVPHl
SIeyc6oiSfi//OgAvhNJPPRPWL4wwckEMKLEUotosBTelxNQ5tNN8oAfjCFw1wNdJHdKGQkQr1lL
57wTN0N/PLeHv2wpIS1oCfwCWlyGDsI00UmNiJYDz7wydB+mikncBk4SI9G1Ji7qZx4G10Qh0dHD
BDO9oDd9iHqMQVInfigWLrxYOfa6GvNug40W5NvIZS1PTZSXplITerXnDepfZ1hRY/d0mZ71ynye
qFw3rjgw4U2mzfCjLX2kxx6DmZK4OBnsw+N8tag0keVHXE3RVZGDQd9oQ2dMVFCpd/TEZXkzcc7K
d6DW5JDduifGOMix7Ffau2CzhDS5ZhoKDP/UPDsvH+1p0CMz65Zm7wRVbZAqkZq4pe26fNcIeJbE
k6RwE/ArcQxqZTZatNf95ALoWDmxAIEwlpZzpLO0VraLba7WJLwIsFZqS2B60r96T2i+BwdNYOxl
XMz2Sdfxt/Q5VMtMAHG4VWZ9tA+YUmIvdoxcoG4MBoFKMpFUFpkllCwEDbjqwpEHQazlLDlSHe4W
nqivSORGLipjI8cdNjI2ckxSpoepbVmCficsXmsk3JzHtuHfiFg3fahFWp8Sjz1ZQm4cx4MO2/gZ
fJceRfSxm06Zcb1ErHnAPyjj/fGDMvOTrfrVIjOCuik1r4+Y48mEgXzUx4RTvo8xy3E1J1WA1KY2
lGGA61iiDNjGPjI+2ePY49ELnZSWcvZesBtwxgmAmTgb4shgjczoh4sqf9HnrT07wAmjNH6NYOsg
bB04ZqrPsnCwJ2lji82n2ZQWXCvMUBNnWMtmDVEIazAKCRgu+BbLaMJx89FMce7BIxuiS5qbpzis
BR1OZ2vQGi5edQACq6ocF/eUwZiBTe/gyIbzGKqDgG4khyLdSP4rWke8DRfDcTeeuiLsqXPjsLL8
Wk6PHjB4sHaGITR++/fise3CxfNllqiFo1+BAxh3YiJRoHFqWm6jAQbm9DhbTRJZ9kR4s30Kqcvq
I7B0NNZdIl5DP8wZopQh2QilpQTCpWQN69hxrxAFrCB+cIs833qT62337/F63bE815fH88wmpE7V
R9GNZ61VTgmKqr6CYz65NRlKMHsSuyKDG+Eu0nmLf23vwOIPQbEss3ictPr/c/FL+ct9vHe5+y/1
r9/1McFZfJcBDPWfK6xiwmuXYO1VYgYMtrN5vIiv6TPEHtVEOsdJn4HJRG7Eb49APeNR7wo63sEi
wIREfL28vWZUkuloh9emoqpsouYT/ntneLjMs4drTHXEqmug1/Y6e2wf/3jV2d/bkd1BIWYHL8bj
MRXGub2mpbMGx1JX32P0fRp+H8ffZni0JJPJsUwPPtJGuzRAY0TMWS96RtYdmXa4rry56ZO0VQNq
Tutmjc3dSW74HctvTi0cwN1/b5nu5DhAd/606es73cr8rk4/dQO3JlQKZ/jNdPrzm6yAtw+nyS24
WpRJqbvzz2eR/XvCqStbUSFauuKZDrVccH5abhC6qLtSC9szH2ohgTEdBhM8CDZA2B5o+MXg2cYz
8dfsyQR4dD48Dc/ZHtDlT3t22ptFCUtfm3Jfww21iNc1Xzhf8E6XNokeA9sSYIQ3A35hKznF8dsJ
iLktrpNKfJL9l4cTWmX+UapQW8a30gSajo6E3NcAQ1OZKa9f7slj7nkdSVAqdqw3k/ldN5/dZoPx
AIgRjXdcYOkBmznDmMEKKw+7s8pZuVri500sS+7TcX5dxMtZOiasSW0sYLnsrw7OeVpeHT/ggHrO
TgBqtK7zqKazlUrNlRLHMflfjPbfYgJ/yUYP3JsjJ9+TYWIV8KSEo3HE8Ql+88ADLRSRbJrpnrMb
xSTX9x35felMTfc90oB8sSd21N4gVJ9KAzk0kHmNZxOqVGjAmiuCQlbDBJIdihV8zRCUWV0p8KV8
sJ+Jgwq4BMsNICubnr0VFxEbwvwUHjuAc+9LK2sHGkFVfPJpNR/ZOlRtyS1kRY0UuDDHEFEHT5ZZ
MsDBnMf5jzFqZqKe1OELLkpcAK5aq2v5TjEvVYoH0QtmKm+FHzVotEo2sGqsAeykDm1EhPRUvQ0h
5a60HBWg16zBwjxgtbbvwFGWuqTLEWswGk3FpPAxZxnUbEF1RrTHeX3BbP3/l+dzbbIbjzAV7u7z
4ucko4/CePDYfH+FxXvf8ZKIR+xPojbqDfcB/4ZGNTz+CQucG8/fk4WN7fEFf0PwJnY/C8wfWc24
Ax+AGsAesAGEPylK/Ds2TkUUV66KrK7kQF2NFuPwRJ8/WNVfqAiyU4PYSpBJK7I3YHBegbHV/6Xb
uvifX7qXf2z/gulofZ0Ja9TRw3pfG+FFTW2c6FFkvjYFpAMTBTIWA2oRpm1vtmZXAuZuz9Ql+AZI
231s7MN1naPQqFwi8Bz5lglaJMcD0a2H6PP17iSX+qwL7tjyPvK7zBRfBri1rhOvwo0zcupwR0Ea
mHTmqY1NK2F3NpfELVRBEsPaJXxZglvEUimVKBpll5oSukV/Sj1wsu+qUMEouygVYf9zOp02Vy2K
LzAk9LujHdwmO5deoanvs4NDxcxdbpPHQO5zqwiLKFrnzcWYiJFcrOdDITQXkHuCodIjvJZNH38M
jAPREButkZ5G6oSdudz+npCNzNy2n2YXMgpt/gmbh09Dy4aMSbZUz0laqIrLvApMY2cvWgNNihjT
X0VdJe+VuQOdje1+3yXzto7Dp+EtXi5z4G+Rv2Ct+NLvDsxDr4CjwMCEqZ0CIEeWkjjDOvlY19OB
KMRpn71kXXvSIpX876C+fVHbrhWbVb4MDSNEcP04/3DH4eJZDxSi/BvKhNPFjbbI1NjmDgRM4/DG
9pmB2/kf81WZfF5VQblMn3X26AqFZHJOkpi+BbUf9cwCqifvTt98fBuw8+WB8cnU7c/SkvHKTndJ
dJuwOaI0oYOFfEonxooyzcLYjTkGZa0hBo3aUBpbimGZ+6uebB+hqU03pulmrcBcNhcVrtp21TBZ
96q5j5FUWKcka6ZcsxrfhZBOZUBT0SvMTBWoahiaoNhr7dOLPuAZ1c7SB2Bkprp4YFkh51lQjLkR
6AB31HDImm/XOd4fRGUjw2NuFodh8UZUHVPjv4NssmGT2GyD2HIek9Ssh/oPE+o/fKggJANAuYw0
mPK5polDyhpf0Y2BNbI/LzYXqhDnxama7M9W4n6z1MGbTtqhmFYwaLUx8JpPsRtUtdp/8WTyFm8N
wohDgnAjogYyXmTLdkca6aq462ABEetBgT7QkPiZnZkCpk7trLww2GOJpUbk0tjNxK1u+FBWB5ch
PT/P7Bp0hMh/wxEf3TE5zv+VPNAULVl8a5SPJj2GD3rzpIqhOQoF/qCcpdPKejKuigwe1MjM8i4F
t5q1eHWy3rTI58ezuDhGn1b0Fz8tgYJXSbIojQ4sNrMnc8UvqjnP3+ENlZRi57DlCNjtZuAA/XUz
oJ/A894Y5s1mML9gaTJgmI3hZpvB/RBvMf+kGSYvG3WsuW4joONmoLJS3rZgq2awvNrCtkCnWwJ9
xzdWA+xHf6f5zBkyZXGjuf2SypzQnmGM1IzgzL8eFckmIUxkVWAvddYwFZoxzQxvj75o/H6Iy724
GQl9iWl/jLKpFFHpQs3zXjP47nelhClB/q3UcEXK9yHG92ELA6yI6mzNziIOR00umpG+XIPCW/NO
BA8RMVDzDFrtDW9Q8BHxxHUIiUD1+k3m02qHye8L89CgwesVvmFYTy6HBg2URvyeQwpVUMdxlebI
dQveWBpTwunwj1r0LR3OkZow+aK2yioTaYrn/IBd2p/8k4NFVLGbRX7H4sVDNcO7teIROgoEBY0z
dlKJplgBbxSPsgc2po8CMD8xZ5oCBUOoYAYTnN6z8DysrBP4TZXRrQ8gHNqJoK9q6+0KVQQ1avPj
PTwfGdhf/RrgnQ/1OUwnh0bRsOn7DWlXX0gsLwHN/ZqbgkJDyVyfwGgTmF6VbDSo5SrbHfix7Tuj
W1B2+s3qeNnAAIk8yu+bztqteyit8IIPxw2eGy22PKgSdzR6vXspbtEofKtmtKavdfxg32a+rqt5
4hwdzl4OpbwgSh/24cnhsuD3aFoU25EVTt9OUpnjCg3N/P/64HYIFTOL/juspBGdcdxMkdJ+kzzw
IrQW58rvqoxHPPHJTAFIlnEhvORapMDH7i6SO7w+EHAClzEZ3/DCDr8s6GMKFnlDiblai2Jh8mue
LlpqeIHSRnQxI2kiMC4uNXbHEOYwIEpo4p3GUdC+s8woV3CSHbKNpa46sUO2J+sE8gfDI2Za6l4Z
e1E1VQc8LbQ2NJhUTFC/MkK4+mFAQoq36nvBtdEQNTXR4ckIh/EiJeEiJXMlKXOj3lpfY6wYwc5t
jAYSq7pfQ7C6yO9OxVdVqnlzEBVMCNkpLfG7YR7kBPGUF5OStdJe0lN3RKNNcJsmd5iaiDW7c/za
4VfMa7+LF2Qx4GduWCcVj43gJ55NiEmJW4bVNcy9wAmeJOOSvgDhaPXkvfY2reo/jD2exYsGk83m
ltqIvsEAOnwbYu7A8U2+socZJWPULvxGbbpuJqlM0ii+7G10EQWeMIVZVxuKupDVE91gKzUV1iGf
L1ee0eLi7105VCeyNtrnXGrJpFyT+EYQpiGMCyoKVGpZRh3WFBQ1Arn6048m+tuOXr0K0/dmi8RE
rcgGzufwiI8eSlYBIUZW431eYuO/8bt1y/hWpdio+4UcPGtufgvPZpNpkOKL2k4WfSOr6mOrSBfd
+I0J5XnAUD8O2KO82dOYj/vVfsh/WisEWjpDzySfjM9bJL3Cwgl4+OZUfqbL5sGvjNwOuAZ1Ukb0
aS7eKq6RxEurzSQBTBkRGNYXdBUDbFTRlbfVnayPbXG0C/4CrOhL1Uqzqj6foWzVM0Cf8gOS6qRK
5i2PiB32n2efP/X4N1Lp9KGFQwiP1WpMdxbVURBv50YhYA55XTekKaWxo39DHRCc97JkUM2BpFgB
mgZYi2XSIqDuekxQX9Lk3BK6uKQN5m06cUoiidvNrbxzfKQM3yO+TrBA5nqEpubvefP95hkVLwSz
dOH9SjKpUSOBowx7mSOaL8ZCXPllOLh844Ugv5bJJ2HXr5dsG3q8wYF4xcntZKh9f12Ymm4b7z4U
PnyTc8OjTF1Zy9LeaetqaOIxr/EwGAvhr0yu3GDByQ2lmiAvRE0unkjfZrpayIVT3u6yzbysQLox
5DYpqvNc0uq9qKqjmEfUKXJrvYrCR3WVhZvKgD627as1/k2zTefXF2Ux3my6Vm5gu+6e6Q2QrUtY
NMb+lC/c4TUdt6SNW5a8eRijrMeozDOwEu0bZBpXWVzVaPdUF8aE1vdxu8sSYe+d2rkt1sXvAhl+
4ay6Lpvq8/+VSjgEbrYPpdewA3H/vH2B2SaM8U40d1DSX28guo6CWRWYKFePNb3ApGuOFmVN2hpH
J8DbuaS/i9rBdJ46OobKCJiwdTbp76J26JsueYl7gM51dyabQeHaDzfrEO7lwGcyPBRcCPdze6pD
024u075+Hz5lmVWWMS3iRonFG03bxihUL96rh0zXrNX0aqp8/Bi4LUFYIx/BsLD0J1kaDXrTtEgk
fPy3FcFtuU/wmjnyvEU/FZszn4bsCMr0+Tm/c/I9n9dl3b2w8eOJoCKRLRXlGEQLzrx+qLd5xnak
2kN/XUbTBKaCt2LbkzPcX11wy7j/gj6GkkWe6KOUDli+FkHMej9eeDEyP79Z0Ed3+dR32Cib3AiS
8drC7+1E/82KDRkHMyYYrKthliwWnyWaQvG5fG4U+bGlYf0Ednc9N2ImvwDk9ars23K9olVGZSZR
3+vIr1MlaGm0MKoGW0Wp+PdDRuEqUZuKziKwTzrhxTpU+afCqnMVWfWg3DcEBWWvjG10OUo7Q/G7
vhdPxna78XR6q/M31wg1qISTETVIrWpWdWWuAoTGtluURRGVyAL1UOyppbwqDV1JVFOixUFC4FnW
IioKq1h1umTVFFk6zt4agVIrAc8HOcoS2PiU5/nVVqrEJu5XOuIbvNqb2PG9lO/0w72OhV/eyQ+9
T2VpnSKfU/EOjZRzwINzt87R+BZx7UUQmADhS2y4jdb8rdKB/GLL0O1xup1d4tOvZocV6ddweopX
SBerpSWPZJmcncOlEBMRsBnMb4K3ly3QpUniInsAFVGWaMgPEVtcrOQ+RYant73D/nK4U4eAcX2T
K9/t4l5AhrqeoBr54SFdrsaLlk5UESib5weNiPAKo09BhHrCkPQ3E4uBONQWSJL7SgD3VWL9lVEd
LfSMiWMLLO4ArNyn7wX6vEg21fFWBayfOr59f1wYg1k8AUtSlyCUValaKvljkdy1ERfLJW5YFevS
rS3Xxexrswi+oc9bqNx5qFxXPULOfYrb4mR373jk4+XhELflyqgX91Smse6hMxbtHb4QlU1bknFm
CZviWQ2D3c3AiBNX4DG6whUvvEN8AnrkqZW+wX5df4vclgQOgFBEVnxZ5UQ5Bo6OmCPdEWKV3Kud
lHn/pelP6aJiyyHepDFh8RilNhahMwqk8odXolTdztD+zTX40jJsuHEjgQIzgJFqw6RnGqT1U0G0
rMdah2AOLl1XpI7IlCjh1M2UJhcaXBFo04IZJrk2LrLhOxtUTxYP3cI1M7TDoU4Cg2VBWnuudf70
qp6Wy7bViV1Hfr/v533I5I4GHJ17Lmyk6uPDvl3tnbpFawe2ruxyIy+1Y4es88bBNyevE/begrKP
fuTPPx4MnBjQSbu02PyjJx4rPOyX4yJdVsNnh/SFfb7I8hj8FNsS3BlqIxa9OVkeVuxFHQsUDVU7
cpTyPBvFhay9vGMnmbk9RKNFXiU7w69lQpI/7bBfO+yG5H6G5dgxx0JmfIJLDv8b4xOe+UvNZD5u
h35NSaxm8TWXD3pIKaV+jW9jTomD2zydwJR1bWgO9U2WWYm2QBQ5HK8TvR1QiV8ArHy1FWCgtBlf
ca9Pt6JOO0PR1IYuF8yMu6hVMwIuxpJRP2Lk4SE/90MAvijZYVh1EmaNhz2j/B7AirM9eXQGIzQn
AuwMqUaYhq39ZY7AGqSsDbg5PqHztJ2hOObiwBoQ4B7c0Q4ysszoY+kClAWYU/mUUS1MYmaRmZfI
hDpu/+xYZDXSAredgHXyyDeWgY8aFIXKYZ+GNBhD7xnxz2eKV0yVvDNUr/tU1/TZ/wdQSwMECgAA
AAAAvIAYSQAAAAAAAAAAAAAAAAgAHAByZXRyaWVzL1VUCQADVCi+V4Qtvld1eAsAAQT1AQAABFAA
AABQSwMECgAAAAAAvIAYSQAAAAAAAAAAAAAAABQAHAByZXRyaWVzL3RyYW5zaXRpb25zL1VUCQAD
VCi+V4Qtvld1eAsAAQT1AQAABFAAAABQSwMEFAACAAgAvIAYSYb2vaXSOAAAL2EAADYAHAByZXRy
aWVzL3RyYW5zaXRpb25zL2RlZmF1bHQtdGltaW5nLWZ1bmN0aW9uLWFjdHVhbC5wbmdVVAkAA1Qo
vldUKL5XdXgLAAEE9QEAAARQAAAA7bxpXFLr9zZuNnpsONX5ZlamZWZayklNxbnR1JRS1JzL8Tgg
hSOgmHWajuWQIg6IDSLhRDlgONGoiQqFigMqlQIJKgmCIg5/Pd/f8zvn5f/t83nyzWavz2J7cd/7
Xuta67r3vn/RxX7LL3t+UVJS2uJw/oyrktJaLSUl5cubNqxYCuJvXls56MWevRwb9EdIUGRMHETJ
PPSqcZBZqFmwmbnR1atXjwddNTY9EWhqZBwKDDY1MgrSCnKLWvnSmhhX+1NKVfR940pKdkoOZ06C
E9dMDqssQPysbX9IfkUfzz+1He144HaJwyb8pVt6+N/+kwVmHkE7frbDnyzd8LnkHvP8kawdB0/z
9A5KmpaFNbX0lGW6taIihu43awNiSPxJfc38BdkgcjJ5BLkw1cwa5F/QqTykvG7Tr1p2N5TWrHzA
rk+dtVCV/K76byN4zZp7W1L//vi3LbXmsJYSMLIn9MyN/zXeUHpvavfP6Wuvnb/ewJ6IMD74j9FO
KXCv1j+nXypUNtnR99Spb//HeO3AutXDC58v2I3FNch1lDD3K4jMPs8i92vG2itXvbIGZLfhln76
v7CErFnzsfrhvn/h3aC66afTT6efTj+dfjr9dPp/26mCDv8B/I2uray2SOqNmJdJPr69vHnVz9zb
TglmUqSi8r9p/ldz8Irped70v00/vX56/fT66fXT66fXT6//f15fsMSS07pGNmv+laTTt/9YN7b7
RPev/yp2c17/UBqzXZbYei7Pk5YH/fJsl0Zt/Rff2S6c1hBpiBLbWNOz6mHCP1XX1vimzCakeMYs
z4CWZ95fhsI7fDxSFPUpyMDLogzqQgfVt1mMJvk2S4pEQxYR4mUFdRkpBSyLAUJ5tMa0sunv24ZH
FnhmJP/Zhr7KJSF1KbKfBBXOAJa+AcqQR+cylr5neCxPay5/Xtq3BIyw1qzZsnX5OD8w1ct+Mu/a
98AFNnWRHTFuDvvDS61nenkMtBTMf7ny7xX1nstzGcuJVdNYjixj9ZcELEpWDk/D6PbAlGN4/yVm
7J2dK6V+k9anLXaoeUIKIg5d7hsSRwfyK1p+qFKvSdEBcnQ5Q9HE8BmeazXzb57vJdlwzRZ+bFv+
IWikKhpB6iMbFnpAiz2C3PomrkAPBKcJ9lKn93oWS4DFNQ1LUhKnWsi3GcXmXWHYtvCRLWHSuIDZ
uHKOvIjj5TfPxFSpUVOknil18ytDPN9LSKIRKkbmWfVTXswI6as262jpAt82RepEnXEqB82XgAYR
qYqzATNny/nWInh552wkVRY5a6hYsAp0eR4gdQ9wX1sNXWRBK2XaKJFoaUpUZbMyZy1V3VEERvJU
TOSVxDbLkZdboan8e3BI7vUGobwfci0GOOK2THdOYw9PxZfbWwsulYdZjaqX+wwLPIavfJtFiWY9
RIsjIr8MJ6BpcmdbUqdg5WxxxE2F3sulb3m0L812atQmGv0lWc9PhOjzsZa9zPCj2QS9Y0AV9sqU
wqGxw+UA+SOAV3KPfXKPYG/L170u/c0rI0Pi9zv5CVzjGpd40CXeztSrgOUzV5dWuzNwdy2IHWIc
SZ1FdrsEz3MDlrgWguUl0bILZ8aZY4JWvTHOR03xXS7430SPP7Odf0aAXboemLh0JMGMAMv6fXFl
0ucsSEPrC2y+7rS5qq9WGtdvM1qha/OjYzaZM+uc8OqdRinsVKHNj7W216zjKDH+KRzG8gKDdHdy
3nVK2UWN8vFsqfkhdBpnXh5kKwuS1iwmDAv9E+bzi+X549MZKUlF0L1LuHmvKZazjrlV5QfAGsEM
PmAeX/cgByO1PbgoDViWzqzR/LGm7nlkgGKwm7E0wWCJqCt31MW+yefyKB/WdqH8E+QaG4Ztv1rI
lh2QCCBmOnN50Ug2uyqtE4WQlgckL86SAQmN7GHB9Hcz1KhZ6cLRBFH9w9D+ralyi8VKznxlQ3HO
6+jrf9kqamwLlxY5y8nHly+EYn0U9lC29YwZRrelu7t4aYZo9ZCUzTNHxwhJi4OkXurqMKL018zN
pFHn0rptF7ttnXW+lMs5MgiH7Ln0pCMoabXP5qM8rKulgqV9QNgIhltlcEzjUIh0dQWVF8/dL34O
lwNAa1u+qLY8Hjnb0Z3aBTbcISzCWjlCieuOlsOu+S12cRacNWoZ5pDB07YxdxdWR9FTU56lSWl4
+5+qF7iFU2oNn+YVNgEoiVlKzZJsCO48/x608L63Gyer7X23X/ZiZ3YYilLez0MejGnT1HkxkIX0
ZY3n5jf2BMhCAsj6urTRXV+G3ZrHnaHeJ0SzKcuzASGLGec1p7drvmxgoqvAaQVIvqE836Wtii+H
nciWv5DQZiFsGbMa4kEUQswoo0ur9005m7MkEx50+r2a5jcCLmLnup6QnCDBu/QTHtVsSRbrpoj1
E9LMulvYC1XTpikMnlX6IrLPKsNAkjlu2jduo3DAGfnNvVWzCTYVXu9QiV5MLgYUjmo2pmDTY6Ds
YX5CVLqb8it3sijNf+bpCeGevletgls232+x2CLSAo1Ugfvxp26Fzcr8Id2jn1fQHrYgquZ7AxZ7
LVCAlBjU0uG/l8IVklIw+y3/ZaKri6MB99S3NdsSX+tnCDrcsk0TF/NVpeV+kxHld63GDpQrhkUo
6UGbfOLhbPvPDooHbvZW36jiEvyGdfkzFn0UOn2HK2nZp4Xr41GsoBQ3NgjcSd63yi9cnPKvbBm1
bHnG6nKuuw3WprUfeOdKmI1s4UUKPlxq7VrY8aNWtWcz+0LKj40pLxpmm0XN+gmTkeiqlbAHqtQt
2dzhYE7fljL3zrOvgVXnwVVxNjja6gBNGt0rbD/Wkf8a0Mt5xGTp6L6EqVFy4c/2Dj/3f45v8PGB
qpOGkn1WFtastx/PCOOFJuyo8wa7NHDpf/jdBSAHOiIolBcA0HUPbnifYGUqdIXQC40YS46cXjc/
sBLNit0pPpiDnqBkgZsn8VFtpQ2qyX/hmxoJtqNrtlNXT0pz23KAKt9V/+rsIi7igIP6rEtCQ7dg
aZaaMhxtM/HOpsIfy+p8uEzLvmcRvP9G7SUmb4xnRpULbtnO3Yr8z4ta9T/C24/LbcXatq5rC3eH
Fs7RRQv0XrWUaTVPhemijRA4ygv83tgibBTIcKo8MHAQTa4sfrBMrm+GxDGQIzHoMnUvzQGbmgB0
Y2kdxLnMPDQF8f20ZoMhKnyEkscw/RFeLAuPG9yN+n4X9V2wcWV0hbVObFnDl4SUdvL0R3ubao/P
FN4JkleHo0f6WslkaWWf6eJR/+m/BDBKh1/VljIzqx0Xc3WrhFclACIr74u2wjv60NiGVquL90DR
G4J9OmUzTExLrI18HikjTdTLKweWppAcRZUkF8VQDZh7605+Ay52QKKjNDWXvmr6z2ZPdDhkwDuD
BNMhPo3P/CS+g1uNneGPvOs5as3fz0rzsvVLVgJxQIt+Qqen7cxp29r5TsZCJ2Ki0/QTk2nBqXPp
3jrGqm+JGwa1fDva8rSqMAcTlxVRMmCfjWA7axAXZsd0bSkeRKcb+WWNwKmw5mP4deeAIyFs+oJE
kct85NnK4TbFRnGwDCaZXQgtO8Y3i3JS0ee98U+i7aQ2bAlZ2NdWY93lRr+PaZ4IET72X0qy4KwQ
m2u4XUc2CqL1dV/N735lsqdqNDftHtG304V78CpCweb438X/cqHs7CHuZ5T8s7CNFvelcbnjGU+8
7ikvpTUsqXVmhYwoJBPzycXXXfL/yFgDX/AbVO457ralHA87VdbRXXYlpAm23Zo7jQTeB+EffgQb
0ljdpb8MIJv7kHXtwjDKvULa2aH7V4876KtJheGgBxeXPlo5Ft4jDnlhW1aYToq+roxY60bsyG77
4UV2DUjUT2gvZU6VePARPONiIL7svY7h9ftEkzMVZ3NVq4lD7oU0lSSaGKPrVveAGUrwAOlBokth
09bDi1MJpNEwv1ytxyjAm/dgF5gb5UdedXTx3HtdVniNLxEWl4EcepbuaYgoha3xp/Kp4EgEZyXf
jTuAEEzE5TIsOlswL+oCcL8l+q0/Cp82SFCUhlkLveJ6jiEpR83R8fukoijVl4DUAbBhS0QvFfbE
U2K6HDkiifPB0Xo54tXA5Ea59tyGaNG/Lx5IFnd8CPe70x88HEWndiX0IVy8dC4X+UvLPHsDJfnJ
h4R64TF7fb1t1eut1PNsVtJMs4ffAwfKpyLah+9gZdL45wxUbKXgsuHrSDkEGVCQkAvs1atZRKvy
9dztqpvDfMLD2eRhsTg/AqjzxWuZvNF27o0bxS4go5oyXGFMw+yo7eFeqGuF65+cnk800hxpISAc
y0gltLB9Ti96q0t3vKgqT8tdCQKJtXRsst4aGdgwVpgJXtMluiBYxO2rr7auAxtWEMDakcR1A24q
FwaLdW0wPEqk5TFQAUH8nrBE3zvy406cosMUMwqlDBg3j+kAiL2ONfvkfSv3OmiJZ2Ew+S1C/tIp
jrxjN4sahM0ZdWU5wMV+yyNhjQ51RDCpy6ZoscmKWFC9wA21MwiSUPctD1qc91dxFNpkiwoVbYak
B9SxIUty2CB8cCgeKemq1fle5HjREsDLER03BOUQxL81ezAMzM64qOuurZ7qcK4gWgFt9FOEZzbs
WKGsVlqZlmeHe5Qze+JAXy7tiQJxo/vvfzmgZsWlexscVTvDNaTfz55JOgzMz7GkSddhpmFZL/Jl
6mExBUHLI1YUfNFbfsoSH8RAyWqEVOzHmCzJTbWmx/RAPSW9hKcZ3n/6/okfvuBE2d3Q/8HQFK2r
EXfRcHN3y4EqAx3zjx8WrNCtCyeOtL+wXXhnW9GB1SrF16boJTwQFk8DQP9hUY8LTdWeAL/iqxJQ
UErjyOHKYqA6xhKpe2eYZ1pPVEuFXDFksc9C95ouD222g73MvaGltsEAbVkSt2SgdeHGIztB3soP
87WryzE9ghe4NB8RAEMLEpqFfr11sU2/o7fu8j6+Mbn1kNoDSCEtbHA7urGpDtsFudY3376Omy4G
495XYA6sGVoh7YqKZbpRmMbhG8IuSzUn9Xq8Z7OlOc1Ih/v0Wh+5KK1DPPN4g426rZRFSvxwlBfp
zCYX5nri7Hrg9RbTkERyN8vj+Ra2LH88EL2ozY52pTj51mN8D+lyvyF8aPG5qmMTRx0gTSMihxu4
L9Q6n6OgWMI2eeY2L1ExZXv2lTgf7wK+DfsqKijd2QCti9CVpeUUaR0g1tPN+sJV7XhvTqZ3eWEM
uP0c5czNK5QEWMX1/ezqu8Mc6qQyb0Tta5HVCScmGiex1ZSUmaZcLLJNJu3kLIbEsCe7EmLm8VSn
3neIGF2zrdUitO5pH3uDIqMKqBJk7xMMFbLn3WoB5/+r+fNfPMou56RlezcfzEh3i9MlYuc8uTfL
POoS32vvv4RMbli5r73K+6OEg2RsU6Q71grhcuIOeGBwghZffF3Q2ZESfveRnJzSiICFd0/MX1iU
gIsc6zIXnEhWRHJmmU6YPlpXX/hUcq8FO+FJxD0CG4Ijk7+Ia69au+QS3H0i19oKa2zKPV4WeNYU
YHxulg2uvVz2F9esdLZKtrc7xqsMmvOwmg4IWU3b0LMkW59GjKmWuyezStvdpFqjZL6PPD44V1gM
TXy3NwJ9C64hAms4OVIc5IvEXbEWeu6a3n+thIQKD4V5aXp8mRN+vt8Ziuj26DxZHD6bw/ncJPEy
JHtsQ3y6Rc6tiVwMvllxV96Qt9wyVk/tuP1d8AleH17vfsBxoFCvI0sfBE1RsIU2eSEAkMzlgWkA
C36OfacGK8mR7nzm7+g3D7bvWDBaLoE9adQ3U4moqwZ/bVzgAqh1eeBnNBkuIoMY2N8qXMTV3nbs
fRz7pug3zo6JnjJ/r6kS/H5KLo/CiL+silvsY7ntzSEjJhOR3y2gIZ22bn4vF3HyH3gRBD4Yn10W
EQ7wvPnVwkH2FV9GIppiYuzgDbWGNpParnXXfARwA6BmTFQxtLFZHu3DgryrHiboh1GuX0TmXOht
6cqJqBjfbsQfhhD/mf7t5hVS6VtXvlZ+NJyv9p1yA4Rp5rqAK58VOXSft34o9HacrefSPZoTHTT4
D6grZH1e5jXVT2JuiXSSzC9C+g8UA6/y3gaPj9WDWQtn6kzoLe9ixNGT+mRnN9zuHrKSpMn3vI4O
1CdCbZpiToN2fmCPL7WuU+VW8crA77zxqSECuOaj6gq8hcOWMx1uxRbhys/WHXKijmaK6x/6TNH7
0mZ9r0wK81Rf+pqMBdZbqbA9JuhXVWollt2swP2/GTrHfp93yJdMQpcWP8GhPqVwOFu888ahF87s
Z67o0g01kuncUsb1g3pFF8dKzzqFq/Uo3zSNGjdmX0GlsFG0nVmIZ4cgm2jZzYNbBRvMXr3Ry9a9
SF8fQin326vg7X7EBQ1KkbTudESTU2G97wwh2UOG971w+HeHxmx8rQkjuf4dnOJUqh5WHNcSOS9P
Sl/EaWm1LdcWOgYJmNp+kJ3VlU3rXCipWYVbwxlMJ2vS0OtBcnQGkMwoQkgmDWbJC4XDE6GEWL8A
3NvK/XOvN7JeJ6JiSp05HdBR+aG/if2XZU485+WflN0cNOyR3uS6iNMCk1I6FbvQbW6qVgp8eQj/
JsrlF0lONti1cW0Dw1wyLrHesssp7oaUKgsOjWlKXna5RV13hrIpggiuv4xuYE0yjJfyCdspbtQc
5u9WCRKe8HDzBu7BKNQBs2KbkNKTQYaPA2ewfKswnF9x+pjLWJVJccBeAOik+Dd9teC7NgderTZp
Uk5PgetzVAcSdUUXSpiQSAPL1H6bdPhTcJlRb6Nghc5C9hVUO3PpP3hFdCv3gVDExPwA2fcuHemj
3ngHfylaeOgK6qVpcSgbegGl/KertNQ0InqUX3pGuWVoDUc3hN3e/WjXFULNnaHNen4dLIavEtRJ
HbDm5EgceJDeE+SOw01JkI57M/f05wgulycBIHYe4Vq49LW5U+Iw9b8X0qtJs2NbLLuFSeEtkq/A
Xfia+1Ed8FMFo13Ml0AN4CFuKMsKX18DIfLrxpI6Xya3TMp4jRAv5DvxTDRKYjjKJ9qHE+KfnkQQ
9V8ZlmGo+z+rrRa89utlv9jB+KbEOLTlsgF+6lqzpMhSVqhnfRR9555wJN0xeRBxqiCgn38mq0qj
O8aVaTMaRefHLtOLFCXgZ+dpGp+H9JwAxpTnjLNwREFE71oYxjjhMQ90BDadnYaxSgaW/nKZFsHl
3ncZgl0tzuE6UvLDnMYfHk4A7gTX5gguqKzjq6VKQhzQVUwcPh3nH+7qrKPmL7dud8qwUblY8C70
RIFvBdplrWB9jOEOH0d0Dph6Xloem9ZwNGQlyuTC6s3VNCmbovRORuB4JbTLrrlhMV6DrxQoMidn
uvvdJUSg02Db8eZjXGXLhIYaZ/5TwSdCFOVae/ZT8DbH3qKh6a7sm1FIr4BC9pcqaTbX5fdsrUr8
hWKqjxQjQxpHceD1k+Ve9WIkOx7h4kjr7nh16CJIKavxg15MeGO7ycCs5JBJs2ZdTtpc/NfBO3j7
pzMFuSG0WXl80VcifcA1+t6hkMIHs652OOknRBXN+cFME5oQ2MzJrpZUd+RoFlqtd0C3r3NV+ZOn
CGgtIuDhMvI7c159fdwjo5oqvntJNZ3dhRux4PgSIEX1jJzian4KH2l5TocKqXFiO+MSg4ff64PO
BTXmMP3giETa9JFmBB5TMyPrk9WYksh+s//Nnl1c9t9EawbYyjv3gZwjccQ9DuWcd7yWHeIMjTII
UXRtoWATYLcOmhkwkZdV7RDyyn3Fqx1TkGrO2i908FZU3clw+XY3So1nQEXf4Y+qr5k1DsQCGE1V
peNNTctFvW68WgYss7K7dGM+sw4CuVI0Es/cVCtdlwPrTnOFYk2XtxePH9fbIqjBhs94K6d7R+0Z
IXgSN4NGP85sQIOnxnr9C42srL/X7s+inY2Z3K6/X+fI89EpRQCl0B2p4ajdlZQBQjQ76J88m6zn
w8OcG+e+rzU0fWjXcbsVPHWMhXvOVGryzelZYG2ypupZr8O/TNxTVJ8zzVSq9j3Wy8m7MxKe5G/4
gJCTLcfrlpkERutJGD9MsDiAvbhmYsAj15VyPj/Q25AVcWsYtmOFpZ/VsAacPAqyjNjmc51uZNYn
BuNbmoysCfivsifEdZZ1/KKZreCR8wHIJEdAoKR27LKhrNR1y1MZbSWaMVUvb6ZlNw5KPjVhR2ab
XlQPpVZ2Y/RPC1vxbPIbvDQbHrz3gvZ3kwgGCh1X5M+u9vVq82KxXllai4ObDbss4dxvFJfCDbLx
7QZLekfZCbnP6iGEA4mIG5EPBQFLYkxfXK5aGVq1tWHYEGImtx4wZWr7IEYdtb/Csswgsr/Qi/oP
u1ZyPLjse8/WnUxtrz03wlAS8NRhED7tO3Fdndv4QcT8apMOLptHsrhxTnzVcd+DWzqcpOUFfQrr
yhsmY7jZb5jFZ5B6CLaLgYeHNuEnX/hWsCBmd8YTH9fGEa1vcF/5RC/0cPIhWorIVgcoPD80vCjM
XxLnrSwmxob7Epy1hVFrvXJz0OfG9HSbEdzEvCB40+xA9GB8JkwMKHIOHm6WVkK7DmIfuYbSj6ub
ASqc+Xsd2LKMzQFixxFDPj4IWcq+wE6HN/IKIUCNv4akVQnDx8qWiuIwi6ZCQ0XEHnnYZaeBYid0
ecSnIbFXQyOp6NiM2Ados1oT+6uZ66pe3notTKeu0YsIKIowgO941MiRWFQpHsR47CJ3Hkogig8d
TOAzf2/CiJEwe7PlrQ5wszNTgtwvhIZOTiXzKMFXi1XmRnQqLnM3QGd71zn33m1S007Q7N6EMObe
P9M5m3zgytQQFDmIllly3zcVmOVwsJ4ikZXf/ZjchFha0eiQe6fTkXq8ThtkFDf1oun0gYTHPs+G
/bgaDah4NLrpNM8aEFkMsWRfkk2WTFjiPavitjuxuxB/inUSKB3rh1gbhigSnLh6y0rNm9bb0Axt
LMcRlOSYkBFyJRkeiq3VaN85EqVWCDKMX8TlZEFCW0jQpWGe8fJEl+RC1F0nYVJxnEWA7DQVo1Ri
40Dv7jT5nbEgfm+1zANVmHZ0oQrSNXlsBs98UqRDwkkOtMkg7ClmUo2vZLLUgM8LsxLHnj24kqfX
u3+p2KClBh4bEUWvOX+z6FL4/hsTEU4wC0mHg7kaZHz8sPv6XESsRRE8L1cpddYqtXbUMWwHt1m9
LsJHsV7llKu1nvuTvzcxvvryy+bx9cKbHWY8jO6P84qCHspU3ZP+hHTKaWyOxVSYvpJDY5GJkktj
Vi03a4XA/ZpqdYl2/cCkBXM4CkfnqYQNzuGti/7e1KgWtQZkR+dKi1XnTP5ycQximSSBgljdDkSj
iwJgn/5BIjOndShcydoC3SCVamwK/xNl4U46B8CIV6LZ7HpXd0MNx5KNlFjboqk4fi+EsahT+/fG
xmvRq3seDeASnX9UoDW/JZJUv0Bl2f/WkDDr7mzUGidYi259x890Mkc2TqcnNAUJvyse1MS9vZ3q
VTXz4pFJ9ZvZtxOsW901oD1BhvjYM7m4q7muiFgH9zs1/VcHmE/3WVl1LPDMqHBpQ19z9PDs4pvb
2FQV7735HjOUOkitvNjTltEzH6kIGOFnlVkY4HVfxUZfK+1esDaVwEMSc3UnXw6+DMRRRbP1TVwD
qR9AkZ6C2gdlI5/J5EUDvMHGyzJ1jjnhl7EiA4im5YnZZf+FRiG2FlKQ9Y4OVdhb+OVRjcO69Xuf
8tsopyVmbbNmqZJbdmZK7arfqmDo8p6RdPEpYmx9AcbxH+nnw+OZUaq+aKd5SOLeTLPhEXFuva81
Vw9EBOztUG2qSlkU1k/MUxjmuof7JRni/ffc4Ql2zf2goI+xHxJL3QYdSvbSSIZQp5FcMZknHsno
XVnTzZCBuMv+pnkYralfXHfp2qgZw147Q80omR0dFPFbiuQUYqDDn7zaq0UEXqI/hIy+V8ZuXDZ3
E5KaPJ/G12EXAW05fJtZSl0hy3JkOj1ubtx3bnZ392IkIszRsy8ck4mB0t0sPBJHJLh6muziyDYT
xqAQ2aDGiPcfKX6pL2rsjyyQsM/D34SyQvyPeI2og22R1OOQHuYz/yV85JhZ87hzs8MYYFNwir5I
3QudcMTgwcsy6125CeoGvGLiAwl7KUstdGTssJnXByPeJPdNl0hKSklu9m/owRu6ZwDhX8cXNkAA
VPRo9mu56+MhiKBUnP7XfGBJk5KBHsCH5vROHEhseh+Bc3zhGvA+Ry0TUtqkZQDI04d+8Q9DW26U
hvzJDSRsZYdhpe83ovTUNLs1pq7dnQ8sb/pVFIVvCjYAzPs4ZqQsjArTuLliYyvAnkICrD5kEfZe
/qNLxJ3scYM/qgXOVSwUYWhcfLyD10iFMMYSbXmpu46UPElsujv6/inWh916//buBXu4qjQcnVjK
CoCLWsEjqa4YA+FT3+csEbdrQGoeU0rO3nH5ArdSJtVBwOXsruj4mvmDdHmHqSTwbdPmE4rg9P+0
lcD4lKV0pvHQ8ezi6XAXft4ny6mm72cBZYDBo6BMgeje2fE1kfpqEWlUoQ4A3p6DucL7QJZ7Nkir
+HkfVIKxB19QSBgtJKL/3f54WiLEjgXy/5EYXRITs9y/EmI4AdGPL4BS5rsJOy72BML2HVW7L8TM
5iaY92KO8z+851qfk+Kz2xnHjxAxAfZizVTJS7tZlfNPq2boOT3+PWhG4xDXUBoSwDXgnQAso3f6
TMYf79XHLS/wSXfrAfCvnk+XrVAQPcDro5bBk3dM38nUCc7I72H+1zBqMnzax6O+X3+564KamWvG
7J6SvK2Ud8hduwysQfiEfD+9jH4oSlJY/Gq0OnIBLNVnz1dd2iVx7Yoy5hqGCqWHh1VFiup3XbBz
S0WEGG4lQwihoJMnyC8nE+qNMhb3XeKtCj/uFCVg/HZBbFjEItrsJKkqFn+0F24yu/CZDRKsI0wH
+P/qOZLpJzrDU/kD7pM0PMJZWZdVTl3isQ/PJFzvsCk5HiJBpqM87C3H8l7I/0wsHnUZCc/RHeKe
c1v0wzSN6Xh6Uud7hcibuajv2vun782bWLjDOvaKhOTP9BOQguTZ+36jkCWch2wcNVXAH89tZsyw
ZdKoW4V3JNXVqFx/moUmlD17mrG9cLSYvvTSi0Xm+uwhd4WHDyXf4X8g1jdPQvoAAc2tJ6ouBTzO
J2g4jH8Vq4AS35YNJVUAigzMIMI4+zI3Ufb/zM1r/zUfyZxie6KDpD6enyVau//HDe+iI1DZyIVx
taUIz8ZBwYFt8I8C1GxjwJYrRi77+/jTISt1R8/2jDkA1I/x4SwzriqmqEhnaElWT4JeQk0EafoI
b3Gm4uvLUzgrMYEY1yM5VVk4MlMqTGvC/gkTd0Hb13y/lIHo0eMSGuzLarj1pb8MknMQ3fmzldFx
5e43G/eN4aQVYb0RESR4V6Tg0Evnvmb4E0/DUreAZOOQhsbhyegTjxuXF0VUxMwzTb9t9xIauos8
5JZCLeh9uvaXHiTo17nOMJuYuFt7h66s6tdVuzD65vmeI9quU65VRpB5CcjzzeSZTIbvR67Bd/hC
EkcxUu/ig5vvSUvf96ekeQhe9m40d3oqWYQkRV9P8+kRQeTGUzzx39sHrKfvgyrUjofv/E0ydzjz
Y+zsyvUFFl2KDd7Awl2Toqji/Ba/fXVf5UNh7I+W7tVD3KrkLS/c6gyhUfQX5sHFiXPvNFsaWHVV
7py0R2n9E9scKB+72vVFdh+rS8sCXZXF2BJYVu7jxXNmDZeS1S6UHSYnHxvFW3Q0T8WRekMMY/Ld
4WW10cUvuo75/R5WVOIPI2dEHU1okRRF9j6LosLLE5luxfM97mX7IJG3TkQshigGc2nZdywS2bdR
g5t1rtF96G63AamnnZzS2xlL6NeH7wyU7owa0/jN4PV56Wd4w8rS9CxXvK/FR22kOHxWzjJNksQU
LybbOOfqCm16DdwWAWaRj0Zk5PrKKTgDWeV6QlsRI4Y9uFDXYT4WaNOWdtdm5onwWy5vmB1Qr7GT
dZveEoyEj2lrUmgvRQV9TaF+6cGz6ZZeIK+pV/TuEAByYHBDlE1FMiiuaYEehQEeJnT8qF0bET4+
xxSz+VXT/6MRITZfkOavsx1AMdcjZIwJ4X8FIhgkElMbiWtMj9HugxuG8hUIS/vggZjTevyBKMYA
YBC6QlvaiDLU832eMVEO6PcVaROFXJXr1qUEbC5uYUy3T+JKBxHvFFXHbPZypHxhJFVDCPr+lFGq
iSAC43kYIaspbnbsbcG2wU5ymExU7wqiR91Vow4sKL1PvoXtCv8L+a3UIcn1Q03cs+LJ58nQbv78
YcVpVwDVeTXNeDyeCB4GG/4hePaBmfkq3cdwphSWCtasI+ifdi1zz1EdmbfOAKr2z18K1pibWnYd
fjIEJ8rxfu/A/i4nGFWcWXV+zn3Z7kz7UjwKrlEzOwd0x9E0Soi1qV4ZAVND2OcysOAeSJTEt4xE
hY/+3rySmss4knxOgPK9+QSgEoh7Kk5ft8b7w2NfcO+CVYEzgpmNq6266T5lAVKnYn9E+JdZ5ez8
Q4Pq+6Dvqpw09KaItp41L4IE0D6EF1Wpt51wz6DdluSU7SCe83RxdAtXM0bretfdA6PP9zbAXrqW
n8zZ6W0wyqpvkYINN7M6xExMS216wKBbD7dLc/UrwXGJS0fVQEL9y/JGX/Pesj90HtOK3Vj2lEgT
dLySVATp8Bz81GPPwvvPgV3WSS/Fl/0IGc6xK/VwRk5GBvikeALX9MDIixiO11Qtq+JCwE3SzmeT
NZBgv+DhVa0bR2t/4QFJ82PFsUKA6i54m2t+fTr3ynsTHS+aoRvpcYul856uDwCIz2ku3HV+W6qL
Sh7AUq3QrfVuKi6Ef3QsqtOJlpIoKPeQaUjyIYhxB7QLcUTttzjsAibCmetnEOcTudat9w/MwD0p
JmQgF9Z0vkB0l7jnt7tM/wh9tQ29uuzAmH5uPy8LcpCdmH7Jy8xJwpgbiHZ1x/s+r2sXXj+WUvJL
uKVHhXFYQPykaGCr2NL7PxVRPjqfynt/rdmWY3owTt0NJSMyl554nO6yyV9sWTfnpnKjFPbyBN4x
ooxZ0kS2cpK4DDQvxknyflc4SCNlih0/KjJCtqF+3CLAUlv2Q/qu6/JvHgsjC+GO6Gwn3287JCd1
W9pshZZt3Stj9gJxrP18YzpAcip3tS2MvVXd/LfgBKshLgKb5z4AcI5XqpeQSyHhuObRoY9xOO7A
UJ9xRe3JAlcNC/YVclsUnxt6plpw/JDCwXJDqA+DotVWh33meuII+4/0kwb4QbAKXTitTyVZEQui
E9/tddG5Ev4MO9c5fR1leOTkeM6kaXjM8nd4iLzauRasLGtgTA2SBl9JGM6E5HRd7uEBcHRVVxqQ
i0wfwJ87Za2LHwxVeQ9aFZqKMFeu0YAoHwEXWtj6u7KoXZkSw3Y2UNJLOBfxJeuWj8uuybem68cO
eU0Z9VTDdhhkLd9fq0g6DFRCN+ZIg7OnaX5MePxiC8OccMEk0e5mReOItEroKmlkt+tTX/rV8t8+
Bh/Np/kVSKlpvmMH3ShCN4Kz3SX/t3WGut085dqi795Kj9JuYSti7HAE2N0Gb8gGLYoWB032iyox
cDSM5Y8DGXD6/E1ttTLKpiO9Y4IjlO90jkEe7XVFTU8WSD/hteA+se6S3hau8MdCPXxNYTbc8EjM
tz/0ugkL8S/JELmrvdVobQMZeIArgm2s+Y8xutHBjZLWsDIVOqmXWEGlToO7bnS2caTNQ+pVEOyg
uZ4iUK2xH4yL7TkJTCUkn2Zdd1LxDjwOwo/elp71mhAjve0KpmEHj/auEx4a8KS5lUvJccPVmrzA
J37mUOOO9ngU0+VkPaULIjjrYFC7gEnLjL/EvtNla19Jhec3ttQrBY+E6kHuOUqbG0Az+9xkq+Ml
8LZofz75S3wXgAqYdNnq3LyYLFE+CgmnFS1K5ztuX2bNqvr/uGkhhNnD9UERrLQspWZwh+9yESdn
emeU7P9kAGP9ANiEHuh45Jfsr1y9lQrkqP91a0flTPyoS3hsAMaYnwantWRxspPxGNixTijEDBWv
EcALMXjYp7DmjkcM+w9Wo3Xf1XU5slNi3AzeTJBXu+KrEV9OTrbml4n/DGzuVzlC666QcrjEyC03
2Td8g9ua8Z7NisPeZG7JvlnXUKfrDl+aDHS+dwAPrkE5DdSzpW94S58lNNPiwpTKyT+U71aQRlC9
vGEbsyIZEFcbnpCcq8+XtgZH73t/bcqmeEqdkdgKxvUzNhbNjXTYHq+23YTdtm5r2U10m5j7GqzZ
zbseVN5w0fBPgTbTSuCSPDKjld1AJcZnT/FN3Sh7Pcr5Y9dD9icTNj6Hhc2+/0PxoPvweXd8Z/2i
096cZDfKbn8QZtxNoxQ/4+u+FVGHglGyvcsjc9LueK8vH6qssE4NGaoN11tjX4nIFGyUe25tqSNk
eXjs7yPn1N/hf46mRen1qjG1L5Z9myhrZLcywvZC+6B5GRiRF93Kv5gAM2uW9aD11Yh3MmvLLdwG
Y3J2xmoAetVoqIsEwMl2gRhDTdJomaSaNX3dIs2aadp6DQV1Hdx7COLTIrMUbuJSa/P11L5MMubz
4x25Z+ICLyu0MybdIFodXjczG2zYs1GNd0tnmN2ugwY5dnHSvzybnm6licP8GJzNxW3LlX9dLTTs
1XT9EOHfFeEfXfa0pK8GjDl/onRmqIdcCbZ1cscs3CmBhEJsJIwd18B8Zv6ZSlyWIECNOveB/2xi
ATUxz/b6ntspb9lBiEq7Pth23P2b6+JL354eQbzPX6RbrouH3YGuflOfahlLNgBjIaD3yuC8k5S2
kAuGOtJk1pxWPtVWvsLJOHfplt2M2b6FIpNizvIWOXXZ2Apyl9b9AOHbWY15HGpD+1Zb+bCPh8qT
YsogA54IvebfSiGnypR1JpFJXntIs0hmrqH7LddeY70W4Lkc3SZh0BeyfqF6QjhOMaHrVSW3+ENo
zj1cR83w4+sF+aPKjOkZ44UruUDSw+OkS4hVPhYbL6OvvErPjfnoeoIHPt4ht7I2I+fIthO9XxlI
m2AP9M2EHkAQXt8zV4ftCqUOmpLkL1ZipGQa08Lvx5XhiPpFIydjogYuEHkFI9YxW+oMpOJ656Dd
qbOxqaoP59YMvKwerdsZQetUMYur6vB7Otii9c5VBNRdzGX6hVD2uoIS8RbnNVKKrw/OTBqLYs/7
rXC0uFb2CzzD930XoSggE//wVO5xqWjnxUOf9EBGEch74rlk9ylWb+DOM/jpJMEnOuAghpf/lVv1
7X7DLPf+eYh2pumvlO+DhNQrlm8m5rfke+4FcOrxMM9aMv787EOVrcz9wZzfSPs+dgyXuO8Z+ADb
/76rw+Hxb4RENGHDiaNqrPww8VYHNpa9Xh4KBB4vSZeHOv6abXqI8ti2KGdnYKTny0rsAhmbw9eb
tH+Ui0pQ3REznZ2NImfgd841Dclnu6S4K4DhotBGgwS9SOsp+VyzSLsvAOpvYKtwQNkbPpbFdd72
MPyFST5ottnUzbCqIzvjWZ/iiQLJCiB3JfcFkCflDYUptrEjhdTmRWtAzZbIYhW7HXOhti7NinWN
kloTyE1qBaHL9CyRQxW2vg8dAC7hK72YLW0Yv9HJeet8EN0vXDO3cLfK+RoSNy/r9SH+jVXBLkiW
3e3HdxIGhw9s08BdOcoX15bTrtsoQNGnop0o43l7LSnEHEkIYHIULTsUbjn9eKP181wfXF7f6LcD
CvfcoKla0XRJ/YJkgVkzoteGFv8WLX290eYaem+spBAKafBH7WXopkoKXy9T0Y2jGAO//joH2BXa
bd89fHIKxS1rA5rSH56Q3/3RSK1ckrPWx7Uxkvxfye7hEE177H8kO0gK30WaNCj/8MeUMnddTvY1
lwWgEi/dC/dbbePvesbvYgh/SOj2U28NB7gu7IWtl2gO7374mnOjGcxYdRLelF7FybzOToQ0dDEq
yl2tw9AEl7ul2E2wg3RFoLjkgBA5rtKDJiVxG46pJHrTbrvAsS2OI/mOKrucNHhSaqxSpmrG5o77
X2PdDD/BPtfmMJVMEoQ84ZOetaSTl3G/RTvpGW/ZVYMdwDmdoOx8xh3/GHoxJvDP27bi3w6lxkZm
Un8fZL3ht84fHa5mQbT/VgVdXcv0e3UxwNyx1lYrnYsXggRWk1F678jWRIi8sPjulEjdtiNLdTq3
uosQdPd09xOJv35KiwG9zeHZEMvhw0IgxIbOrFUngCN9Qtg4QtO2kPFoeVJTEmiAoo2z5Dko9gfk
trL5s2MOCRY3zoepyXGjUNw1fmt3Fde/gP99MbjHgvTYfgmz99x43sG2p1Ynu6b/GLcqJPg5UI4D
QZINYslXa9I+Qo0z97Cr/x+F6d47tHBTqDrGdHALVpHE6H4rf9h/IZuwH6/Bvr9hHD842fDKfwlx
JmATlrFuVQ7sswhnF0JiDuQ0EldIyIXxSt2NGay1TLxTHwZ4rwv0HniP7xKLGHUYDMN2ybHt1JhT
tNunXBwd5J1GDGRPe+qxhNxuIXg/lx94+KST76CDVYbUxxGFG3x/UA8OnD6ceURq50kyBCRiZxHd
U1WM8lNjT6m1b4jdXD0muWfqKaHMc8qR91RXUoDJbrRT2S0e0+v41ACim7d3QM9HnAxuqW9KYogg
7u07NpWm9Q6td6ZpvF8XbaCT19Gu98bRSeW8xETLPf2RKQbwzvvEDfJmL/rmQs8VJmBg212CuBQ+
e4ljV0xwoHyCLnv/yKOyq0MLklfqBB9dr4yB1phVkfLjzldDvRF6zcEfrqJ0gWpeKoNsWdZ1fqpP
WSyarFx3r25B/YGSktbz1XcBgDWd3F+vSzzu7F9G07FzGAzNjSsWVx+TwHba6b5IB5XxJhyfsThV
8KiODlG4Xq/FzjzdydE8QgLlBr1oYl9KdUad7tMBG0d2wXyJkRqGcjJzJE6cI8mcfFxPrU8uXUy3
0uh0y5zZj1Elrksf314+fOMjGZtcs6pRsuM5KzVJMt+ao8ZTCMlBpwqhNuy9H2Os7vmkJw8wYMc+
mg5bTo3tzgv3tsPEnJOhySnB+ylrsoLOykatnhSI1IjfCnV3TKp8rRp1okWEhzeNiNpniPMFyQdN
4b880kfjt5yuNDLj2LKbBvlMq1kg/aEvny2TVkjiH9DEPNFCpB7cizRp3ksekCXsrYdg4N+yJIkV
zLWsqkUda+fSu4R9JEfkY3d/FmZEiY3q5/WShTjPKrXBE2ci1Me8D1gfkMnKZT5sfmm3TVv2vlsx
2kE+NJuiSTPFOVcyP2rnOLoCP4Tt6uqdkABHxg6HILZFrjn/vw3VCRNLt4GrEdrvxaMrlON5S0m5
cybmHN7sAaxvKUdtR65GVcufut14/t3qIFZ4t/D8+F/VpoPO717NVByHfsHi4IjRWnnxQwbMzga/
ZjpUe+qYPRFhgrY0qtvuDceinr70UrkcATiEP9oz+DsZXFM2GtYws/SoNfW6PmhbxChjJi+b2v3J
tjX8B4bq1FfiRrR51F4WcAf/BAl83Xu1cBmd3QY2vBxBuoD3o4OnEH1qJ0vVqk3yoHpbOB3PvhKH
PpCav5fMlpjccIFqhC9g5TlTkQTYAcvF19sW7BYtHwq6Ey2sr+MvxQJ/BYV/ym99eNzpdA/MiLTF
ouNk/LDxebhEAZ5K7B2naVQPOnmoXBE8jfJpMfmL0VSzmVsVBwnG3nkqt2Rf2nOo1KzABHFMtyXu
2bcZE3fD/RGnP8gs2WEq1Szr17VXFajcRve6hLyK7CSGUQn/SckO8AV8gZsf2aSpiIQR51RWpZnM
MRCGasHCO4LrnSKHW8IdiazWb9ehRN+KHlyWGGnkv6cI85oQCjV2OqcyEUHyHLDtWO9/tAwVOlAT
AMBnCaHh+9l3MFqVsops3L3q5tIw3MxBU5BT+gCro7tisNyb5kAjq5PEOXUysvvNrPmEO13LIXNP
wsNTAKArrGZgSHLujWe7ihYPaICCWwY8aiZ1udyq8QP6RZfHdudDnkwuD2wQ+9DWOxdV+T7vlbaY
iHbExs72dQWd8rs3kDL+/YAiJdwTnGEASJF3CI8/q/UhFpkHN9Kh/XFDempRUp0MoEfS6uM6iw9r
vHo4btHkHk7upDUXnbbUYMudu2T4nfUMatmyWkz/Xc16nNlzhGHp3i6KalvJSbyVRWE8UvV3FQuH
TAmBrWP7coIS6YDxpsfg1HKNG8FUEAkxae5+88+Grg+2K+lG6XlzcAi7izNup9NWTNYIvryEN87C
rmVOvybnjLpVqRlFwxFeyD5aotPqNsmmvOqhvAo+5liKxW/t8dja2oDezofLpkWPmmOtHPzTb+H9
uu+n/2HUhMem1XB487qKCIuojy9yq235TYOdg2HwuJOTdiUYDm3a4cuC/jUX1OWB43THiAQ71zZT
dx1YmHbCe7704Kw6v+LYRNRhis8J6AzW0gzu/dIAD5IOhYc/nOONjs3y0r2nqh+ep3S8mmzvbpoY
UulK8ikSwEcWkEM1/o+MnHONpY+QeqOhTVY6Hdl3LtSDaN2FJocW5sRVD4zR4h7dBCP70iahjnsi
TNeS/WPB2rxZHmxJ2/muNqOAlAFjlilOlpm+105Q636RtCqustwiJxrzqfIEFpLMlpMLr4tnqrCJ
avVfu2DkxeTDfQGUV88TtmAGTxoAo33oxtZRfUstQNGQXld39dCBEcJJGW+mMEXTSCSvVezbyWu7
dWx2IYSo2JdgRI0iSSabDE67AClHh9L94I6PggRkwb2VRItYJVdeVV1BCzwOZIBf3AwPHfqsaGda
BAz28TuQFhwnJdfib9x28J68MBQwlxtgke3l6MUI32vCQeW2dv2A+Ov8+pyfZ3XWBVgIit42QCID
Jy1wnfWFeG66PW6z47pN+w5f81ib+W5XV/86OlLZQKn99thzk2128XU6wCI591Dhl9+tB0r07fbE
rPj++l2lpMjfQlUPVBj5H7YpypDn9n901H36v5eoVZwOi0hSFhGVVaxgbaZSgpnovYaikJl+SA8S
TgcrPUJ0E5HF8drh7w5t17K7oplqdb/zuvZ/ldQIrsMHvFMhvTbk0aq++eCGrlbb83yesl7mf8XU
Ew0m+jbD+v5EuqvgeJ++FjE3u3Vu/NOVWH1oDklkfl57Bi+49YxPtFJeR9dUJu7K33qa+c53z00C
chjeOy5pI80c3fSreaGycmYNEeL/zyN2hl+UFz1a1a5p2Rb/61H46yt+13Md//UemsfaWkrjSu2H
/7Fcwd5QCsbiH/3zyptfv2/aZGdhV/0vTXa3rpaSehjx36/LsVi59tbMqH9ZWlU22bV66d//F4D0
G0olaw8V/oT0E9JPSD8h/YT0E9JPSD8h/YT0E9JPSD8h/YT0E9JPSD8h/YT0E9JPSD8h/YT0E9JP
SD8h/d8H6fXyWnLKr6HdlMTdSit/DmddzlSdunLz/wNQSwMEFAACAAgAvIAYSbZWR8k1JAAAJDAA
ADQAHAByZXRyaWVzL3RyYW5zaXRpb25zL2RlZmF1bHQtdGltaW5nLWZ1bmN0aW9uLWRpZmYucG5n
VVQJAANUKL5XVCi+V3V4CwABBPUBAAAEUAAAAO2aV1ATbhTlUUSsIB2p0nvvXaVJl95BOtI7AgFU
BKlGeu+dUERqaFFI6EVqEAihdwgEAgQC2f/O7L7t7My+7vh0f+e83jnnm/nmxr3VVX/6iO4RAQHB
U403KgYEBIQvCAjumj34zyCAMCJqCQiE9jVUXhl9uHO49PCdjsuy0jESwSql1TQiq8GumcFaZXab
AVVhSzKj0+k+b8woSq8q/qDfVedksfhCwo1PwFuruk4gppFEs7KV3JhVP2XeLe4ZEI/Ky81d+ppV
PY6F4NsqkZXp/gVN8heKhf4RLp0XwXFvXxDcefCS4O6zjwT3/k/4UZHoydXBHB5oY44ntmneiFyR
OCb/dldt4FE/C8Edc4I7rGFF9+9o/Dd9i+7+0//0P41D53w4z2y4FoMDhOV2XQTjYM3kLz+6csQF
BfB8JJjcdFat/Gf8M/4Z/6+Gxv0xi1B7ZVIYhYvd/f/9ROH3ifgFmTZRIr3TCE0vXRUqNhLvZdjA
3+jX3MvwqWZ7Nx8ahxIa+OexcUUWKsPIkzdZuYsO++gEOh2V22XgmD7Xh5D29kH/PdUhTGVtCK0C
I/xBy5WMCR7hm/msprjLFvWmBnW70U+59gHJNdFgr1uUzhXTkdL2UwGgQ9XHSw0rixR4J5wMg80e
1PCD0XNbC8PChgyiM6gPx2YAWKxoS8nSs3A5tVjyVcBZSvjC0VijYb9187O4fkTQw+UkfJ39HoI/
/K4UJ03EpNp6t9iowubQ+cLHh3zqMj0+K1NZp+chkHe0WH09vEWJPKfaI0KnWPU1FI24BVgzM8WD
pQSseEEb15k+zfzcPeDMoOgZI1P21URNixQjX7axbWy4xmvAknasAqOHcvHuIt4F9ZL5lNdripmu
6mA83+WI2xKiZePHSSq/pY2L0JnMuby2OU9GauQva13kHS3FlWzAzoe8xmRvwmFlkmkvA/A9F/nE
57tK3jtTuXB/forwCy+bIKRvvGgEZIHx4rGpVtq6vXH5AmJt75sQbj3ytrgGxpTr/DCT05yO1GTP
i15XANw1j/kpO4HFKoHvHyS1swlcehvxP6S8jjJUbonGH7xcnZBvrItK2B2g08sbOfyecBXER/N+
+hB8pOzeoegf4AqNdJIufw458Dd63oEqt0x/bHdg+8jo3oP0k5+kDQobpWa8As+nEgg5vvSr448G
qF51J52ThVTitCktBcODgTsFN6ua/jX7fvbYVVLLZwiw9XVnvGkD+s5EKYWAKeo49BtM6eNRXmBe
0TeabMFskunwkb6BrSqKu/X5KULGRzIKdhrvw6d/SJ53DGk7Wmxd1xugtsQkoxSlb14YVJ8JnUfu
Z+P8h103c00HtKH7Rvq8NCD7it0+6pGBNEWjlbj6CL0QbWxZLxRt9TUDzPhzyQDpBds7elw/uWUp
p5nzRK9T4dxnrr8sr1l2+DjoNF5VGN1816PeJveB4aiGSCycutcUZwzuqKJNzqnNpEhXE7ur+pWF
JgoGPncnbSGTiQOXhulltYUPYX98yXs+PKVvD5svaGgYS+CbV3T7qJ5cPd8Cg5o3Y9cbNcxPti0M
kQ7W7kcNSk6WJoujS3eS5LYCJAJIKph6MGnGcjPfRNq42LLH1AjNE3FbM92svNGfras83+7f141b
VfGN2JibzF74MpuUbdEpMokWfLrA636qi8u2HXM6oZTeZ9BPkRHvoUZ20movkVyk4C+SPMm+q7bQ
BboZTwe/CHzyqKmKZUp2SDjYO5WsrWS94fiVPUKTTFMAWhCcdv/igeFgqF1F4rlugiqzk2b/y7by
181Mf0PH5VgrXBfSV6P9dePrO1sf9XjyFe6KurQXnuqdslWch6JAjYsQC9+aQtdtKYeBqc3PmsGt
3X/Bys7HBX1rG7Hdni5SBQWSE7Nasc/9+8NF2D0bn/HF5XEBcdI/XjpSvl0Zq33urm5D0+u5MqgQ
nFlwPB/CbfUgWZNNk1Tob8Rp9C89Z4lnJaeVuOGSlyH+fekJf1KbYufGTSvi4otFKTZ3iZ44/szS
2RAKDY0rH/hwQ73W0cmtGUibTCcRclpPXXQ/1mf5Q/VBd+8nVuvjDGm5eJzO0fKd4SnBNY+j3bz8
zvE4BI2ib76fvXtb+xRwLklBbiNg35MNvZDmJZ5OZGPzAzVWF7XFvCgR/5rO3wxDZxeWH5f6oYph
Ysz5Z9bgkLUC8kRw/NOUJDdbl++xuGGAUVh8dd9j3dP3EtV8QqhDT5NzXcFgGnA5qTSq/t4b+8+5
Lp09R5xNv4dcRdqzlgbfAcASScfPVyRE5H+vJ3mpMHN/vRdR/ThXFrjPu3PwIJBL7rjCp1S6cSbo
W63IiklfKqwiijVEzR3TzXjA4kzrtSlFsQtCxSs/jp7veRObZpPdZZqikc8TxPkAeMMH/dUADPdz
mBySOp2GbobRI4bVKDlj2Uq/SPux417jgzspSfhqfFn2HdG3Pyj1RMJlQ+aGScg+r4cbygfKPFdf
hxu+O+WOf3KdZu+QYYAUXY9JEBf6C11Yhi5TMulVMCaFcwuE8BArkyQj7UXgtSrfxfIT1kujXQ1E
jOTilfQE3rGDhFCWmZZ1kvFDrJ/gpJQXMQ82HQ1E0B9KNT/mUcdk/6W3eAxHEzzf/WFWL31ZoF9L
tQ49omJ3Ps3vzGK5C2u9eMNA3Sk3fmYtbSJOXVi7MtaRC8+d5090dpmfM70Lrb1HNECMmiRJ4r0z
lbmjk0njnChx0ij6QwTcFrfHIrDW7VrRgMp6f5hGkP1nAi7VF6ecn/Cqm060NeEC47mHk9Q51E6b
lf/D9EKcD87mT0g8SB8y3KsuFp1uD70+TxhsLxFe5aCOfePAWLAvYP+lqXGcX29ye94rORufTWsd
YK7dVCPV25rdcslzH0OzDy3B2OvSLNsiVPtxOmNKnrzyqvBkhhepe7G+nW+kaVJjbVVlCIMNtmOi
eKQOnm5m6cVlDmqIn1RAT2e+G7w5o0nqDgNodqNaFijTp4o6tylZfu4evNH8Jq8zE86vnvYzw+C1
2FyCyO8oLNX0tl9gzIvrt/lJSkp6v3wzRbM041HJkw2eXpfsF9fK4E/MSYvOeMxU4TSfemz/tkDi
G9SAZW+xRxGZk1aYrZ7btvCY3dmnIhKpimkEa0l2NIAQkZNDplD03hceJJM+uUNUB3z7fMJw5FsX
+3rzWDoffRp97NfhyPPwGcWGL8yY5eoC+tGnc9ciKV4xhZk0Grj4hiN/akAdP54QifeK3Pre1x1V
9TvVD3GbcLl7DyHQaDIaehi9YQlKC5wJi9JKqpIFG1g7fTbowZ4JbUBCf4GQzYrDLSAQsNuq62bH
3aaUDvFejRmbxCXVNssx8DSg0n6LL3o2luSPdMdYqlcN/pyhAx3s7xUIhD602iyYpJIqIWBSXImc
MCpdc7H4I5hZVxbQPmsTX9rQYFAbbXF5Mgl6KtEeKhC+x3vaxEycHhSyvD4ChTpp8p0o+c2TanoU
JRLzRnJ7B143yNKMik3NJq4CFId+tmeSzoIvT8WIZkrfY3++/kuzG9jReHvUXB6e8XVmkTZUQpVd
MbIKVrnJ9hzwKZfObwAXT3+DOCHy46mvzYp/37WuEoJ7VW1BCjryczm4t6bwWQio0T6H5uNcWDUE
H9gSm2g1RViZ05COOZ19nCA3To80GzliCgArDwxmC4kOayLSFf7Y9KIB4EP7wEjw4UTpZjmufn56
O37B9trx+gceqGXLXGQkfRwrCNXfCQmON67PnvkJkqQK7G5/cTZP/xi8jFmLJC6kJLRsjsDAJqbr
vWhxm14jxV0ZE5BawZpxQMiaTnBEJGB54/1aj2q2IXtMhXWIGWCZzNa6FDdx3N8YyR/xzC2RpeaW
IdoQVDf8BF5CD7Dtn6RjPFF7nGC6WNdfd3aFRRtb3RUiU1CKVaKnk8tmmzKZczzxGcrpuxjy+Yv/
vdjnqXxt9STy28vN519Iy9yyV2f2oLBFoaeVnwq5LiFqdTsIf5oDNsg6x1pSQ/74hxOhTa3F+ze7
nZK6FZ+aywB762HL1KiAwGU+Sr0Gq4pI7nTYQHjB4kx/3B6M95BX1XzC/Qg+fAK3yUujJzmNGr54
X1j8JHU/79h6OraqfhtIKd2/3YBflfYfaBrDfpdrLhcda8lS34+WHe9pVUgFkRRKLhCU+C2T6tOs
k8a0A84PojiNrmP5bGcWNZc0RU3xi4+5uPgMcSH8Unsq45cvME1QUhvzpqmrnlXSbABD40Sepjv2
sq4gxuPpMXJQMncXyB+m9TCHV7NzlwfCfINUuLkUWQHnkH3d0Ypw9gV+m/IqeS27a+uy9bgx8kO4
0UPIRAwAJPbW9/qb4gtZyJb0JF/A+HLZ22/2yrc+ya5a3SUHkGP9uK8qLQenIjj43XS5gqHzByCm
7gqrFQByBWRK44XnBG0Z7dHeVoc7OlA97fgOMhTmINa+ZnGx0qtRG9/eySEOkebH/uJKzDige+3M
Vx6oNB2z1xWyJ4vYalLrs/40cneLPfxsSspxxZ0hh5H84BWqdeLyJ2AzhTmvemYof9B1M8qWamAx
NR+isEI+nvlZC1K2Gi54M1DP/TVTYYlnVWf6zNvP+sh8BwyrnkEfhEew92caAKT68J5JN8USsx7K
zrfHE1C9/DxvM2w1ler0UOIWxSDgZtEH+K7kaaacbjk04izf6SwMkdoaIy1FPz0t5zA2N5F2Snxi
drtgor6zFeUCKk8OmUa4Al8pgXn92+edewCr3mnnuOrA4DztjT0P8MCwbvjdWzP52vXlFiKIXPAs
5pPUcyzOxf5jrlpNxIBKzzok31g05Kxrf2mwJiwh/7y7wCKyO5rkntPbhdWGtg8NkCZM+hKpQ4cV
uuBS3/HgRiKA7UtPR2fSZ0uTyDdjnCerqo4yp6q1Iu/Ls0PFGciQMx1sLMcBEFYnaXFLKMibNLJA
92UIbmjgzweRBldPWmRGhB252EQ8MLWzn9n8T5TSF2P1mvaph8/WphG9pQEFmdxPqK7D4t/3lHSa
7Vie7IFLkOqHct5xlCMT2xBtmc62a20zm86KWNvlXx2wCdatbEMhjvjN/IlubfuzZnDXcp7I5j4n
NKTlEStX6azrD+7OICfh07tMnn1WJdPYovnxt5V2Kl98rbSf5uh59vHZZHIH/fz7o0b5V/xV6lR1
ZdxaDg8XG2Hhcw98uWoK/G1NNq2wdG13SIrTx3Iq5qoh7H4HogK5Z4Weq1tG8lVm/sDo2MSucJnr
21/FkEPIMiSsea5Gcx2I04+ZBh0kaM4su9cG9cbmdLLMeEenWVVmoA/s5FQWnb1qg/k9Nne09ZXw
0HNvJeq+eo6HhYBMg9VutePU7xoyJ2GKcnmCveedcd8FbFx6b+l85WyeyL34sl9kwHL5NJCb0kWR
Iiwzob6NlAvjJoc7hn6iCG1zN8rxbBd4dIOlBghPOp7bkOcveDjRiIi8lxR7SGbywXnYyoWFE02O
+357G9TjbhqjORZUE/Cxd0eI4ofFELn7t6DS+GSuNod6p9gfX4GdqX3Rj08Ma09MFK3TaCo5FclU
JGCtcfcDSzIjYaEboHp4ZXq4+fWPPQGLiGE2LqmBzKaGUhJl3CEqbqmWqvRcdZRT0c+U+nrazgV0
5fp3kWndBrcpJKjoNS5YXNwqVgoaUpyelfm+LUPRNu4i/VimGj9M3zJWNrjCabNpeEDo/4Xn84T4
8sZ4ZgQwXT+50ctLrLsjstzmM/bEPbNQgY1tsDqOC2yZBHCBeX4HZ4TOvCUAhHBOYAyuyvK+zWYC
SkYdGuIe4iH3pF86y58vMLwA6hll+Pm55Z3MT0EaH960oieX8dEP/Aox9PtYfO9RDXERvhLFZ3BP
TfH8biPrzkncsEH21ikWKHBDn/ujAbZnGjpT3W3DMHGbhMG1zSPK1tQi+jrkp/yRDkmj1kz5VYKG
I49NiTYKFoT4Q/z3HOBfgNwlj/7XN/WvBq2VXdFHhX+klJ+AufU+VDHJfEX/yipyHLvBGRiLrpa6
E0efULCD9N5clooVdBzlPkvG7RALjA/P2sQOcQj/rFHXkZ9YTFDiYXFBrRBkDg8EyMOmznhS8R8Y
v679hpvcpgcSNag5YZCM65RqtyviS60iAPuCmTwBrbPqq+IKYfS6I9eimJwtEF2sKEgV6au2StGB
tIq9Le+LvaSffw5PrxRhVGVwGbtZMggUXWVz59o88f8jggiOCwMeLQL5L4VAN6L0Bd11ikaBZgGj
brdv9C/TOR8vuuyTNKVNxtjGtY+3bf3JmrVNYB0IpGeMQFWn4DeC2EwxYXImo2Th6UM4TzWyEbxN
ZiZWys1aU+0Urg914ohuROcmASUGeRKHTY0KS5jdHrHp3zwtqM9VCiqRtMy5Rln/Vt5MpcHIYB0a
Tvhy320BJ58s3y8XWvuSNUZIKhIxu/DMTjrFg1kj86rZ/GzwQTuHjl/VcZumkO/HP5KvOmcH0iWw
RZui8ynvLCs832Jj6652kENsg9GF+/jptcYGEVSmcgcDZLc97HbaeNjFgpxTI8Hce4xaZ1YZtL7B
wuzDFL/jXx2YfmetdWiX2TuWRiWBhRkQmS+3+/bno4jxbzByT8bxJ1bGP+8idFsri1tCDbJWUFVy
DbraAVhuxZ5Pyuv48arPkZ8hOcoML/Z2lzhWNMacfD8e5+683cShk7hZSE5KAsjcQ8OUO79M2ue5
rE6V5U0Srcur1ux7XdMkgjz2TcWTlYBi3MymlfHJUd4+RcfF+4vKFZu/MQYHbDdly0/4tXbVvpZp
kFCZDBnedawrqhMbqbSEYozXZ06yphgWH8AT0U3OGIff0caR2gbL3zyF62Ayy0KGU8MkMgcFewtT
9lYhjiXvjRP76OSVCoB+wPo+Ab0VvRsVK5tcXkJ2no/ItV1j+5Dhe418TaO+GBas3nwjA41oHR1N
KcBoPFqv17neIq3s7BOs67pi+7SaLxPyppUfxjuegSpLz18RsdncTaXFSsTOuaBrWhN5N1sKjWKs
NmTyht/OAloYdXX8xf23U9tHxgjgUAI/Gq7WM7fBYq49j10Ys78JgBBS0xqhMz2M2P0vNrNMjyar
/qA0NVe3omB9wYzk2MBgv/M/DPhJASFmOn7X1EJXQNFN65X3RizLKYnA6kRIPmzmIN1bKN6P2fqZ
ZHFQWx6tYWfVEaJrMRptql6LUTdN1t6hKZx6ISncpMZWmYimOOdrcePNNNOv85eGv+JpoStvIz3J
efNqTC7Qp3BbVLbLGCc3A/jFd2gYnkGcYouKsAGFr/XPncnO7rd6DxR0rpMkHHePpSEddjpDLAe8
7KF5PL5HUiqHROH0R7mCCz4j3Vi296spcJ59wIG+nYDe01o8bC4wl1TymUBappWcuqMKpgejS7gJ
SsCVQ5+LyR5Ia2h+vBy75A2LepAtKysXtp4R3nRqAH1qyWTXAKwIJTpUerGQzvSok+NSthIzKKUY
drHxsfPrtDcaNtjR7UhlraIc2LDABs1uYegSmGV4zRErNtP4/rf3QZx07tvI5E4l7OVo9ga1GvHl
vmNrtuorsTndTk6SDz2pHd7Qa0ype4AHK5otiMktbZHXZzMlZtm7P082CN2/Olmg/zCBlStPpkNL
HFvtghBSpMuutXpaZ2RA2/QejLzuHdnMXz11kelMYArfR7Huwfes3eWJTkUPpaMn90RrTD+bira4
SlqNbtfzsVRWCPNqJP4Xer0E460dnpcRGmrFmm8Nn8iLWz7ZAsg2pKWN96tK9Y/ahniiskn28yeO
wOruoxm3zxGqpyGqJS+HItZTuHWBbo2gOVPl5WV5DhYv3MBM0dZjDP3MaIVg3+DgBRTIQXGl9zj8
t3SPGiOwXhFVLXCvO0LS+uGz1K/BHw9f/w7+8M5PZWJlhs6abc1AztNmxeHKfWqqqMlOiw0Ofrg+
pSU+fWEA0HfV3Tqftvsc5PXMPQl0XW9Ap7VdpyvXGRd3DY8LhAc1vHGrARQOQ23ZygiGF9silofC
Lw6qP2lZJsS5E2dGIvfycoWzum4IR/cqpfqTiHZPhazoR+5MeZX6/z3oxRkS601AZLAB5HjOod/X
7rPyvQlheh/ytQqWrRkY07lLLuW/F66kYZgQOozlR47EkoZlO4PqXpg8Ewczjerc9oGL1+Ejg9zS
Wsl94NE8pehlj9lsanRdlxzznN/VKVdt07DL1Ldxx2btSmG4Wv7dkqpyy9Qc+qWfXh/GkCkvByoS
y9u066J0OePVpqO+IE+SC2MKzsjDrtt9t0whVhxKjSKVwnM01rDvCa8PtKl4ruEJbSQ5Koai9zqT
I4sfI/V8ZtBqjvVTN/ulqsCWPJ+hV99LK4TJo5vKU3oHtz19awDzKtW3VyNCI9zNGEsfRevsD00/
vnAi8+yzwF5X7YQJ3EIJqD+wBegrMeKK1IZBWiN+tPS1Dg/DCzYNcavfxcJQPsfzV37v5T5FstqR
6NQYm4K3QuWzfRzj00W5E5bCTjSttqzEQHdKTDwiM85WvENC6ouJGPnT5PcF8cOvgYzNYWa8s7cr
+4Jbdj0603C685mtIln6cR6rte+uk18pTMDcd1JG/4ZW3MqbQV73LA+7C7k5xprvH1Z/Opv8vRFm
C2rIUjQt+2tjcbO42aQXnhsv8ZmQ3c/QTNdQxOiJrdAl4Jhkm0yt1sxuhO2J1Sbr1QF7o3cZ3Qvx
kYS9cK1O679sQENauKHCpEbZqVeVTUg/lVBZMBizfOFmwKhrp63f70z0dusuqeipQ8nbnua49qHM
z4KbYg4ye6Lbvq1eE2kk4mkot5jc/SDzNhb2RaT/8Grbve7Z9EiHQeU/RUSfJUmoxIOTi26qWX+8
HTIj+2xIG3dl5SW1Yb/48lbjM8kNjIk0+SfuQ2eQRgFPlMr3rF6NRPwKpZrd2oCwPUcD1J0HYWpI
i6WZvJ8wS6aZ7/wkz52+pml20hbJPDCCt03Tdx0fsXQ9hDdQCZwi3kyamFYyW0MY9OeCbwuELGue
B1zzBFsC9rKEKOnGB9c2uMbfNJ9f52pSGUGfx/Op0Rycraw/5Yoy8i++qCnU8fsZNzz0RbN+0FOx
benJrb651OlrLuW/ypttDLwjyvV57yEJmvJHhjhHm/NfOIdPjrylhp7BSvAgxs0jAOJtieL3TSIl
yHfliboS0Pns+mP/nd93FF3y1qQ40lk7Ggt/kuLNxjLoaLMYw/uXdMx7FdY3iicYqT1Dl7TBs1/h
qxrVpqJafqAGvcSVk1yjX/je8/zGTbKeEQWerdY0XV68zSmDTH8OPBFSXs8uYoMubqJUARCWjJd5
K8aV1rKLBKdjz76V5vW26z8HuTD+3YPNd6HqBHbqREtTJzHGNLr2zWMekXtyOdMf6Y5pLr4mMxfa
HhliKqT4iZqQF5dTVwIQqYKAGy6vfHVmtCV4sx8vm4oxMBzXf6b5iG1SRGnZxvKKyuK/JAchzbpP
Ai6PJa9Nyxl1F17b+pGX8iFbeaqLiXfEhcY4vuOreRJViE7lQ5lNK7CBegz1JE3t2baevkuQe8Hm
Y9xWvsEWPoW6LNWUexmv4w6rosNVsEzFOfqXKT8pqmDPyP0qMVpC0fqoIC5SCH3Hjz7eK8s825O/
h95qNaenl22vnD3BLp38BtNn0myNGC2dEdNtJH0I5jlQxQnVlg5SL22rAIPW87QH+bjbSs/tw77u
hR1dYO+MVAi3eewemZnXt9YJ0CDpu4qtvU4LBjeLeebr/H19T0Isd3hSoYVciGv2dO/mkQQtDCta
vr9z1kEAfTekTdmbeHnjPvaofeGmVwCuy+3ejQjXBWAX9n5dOC9QRTx1unhAzRZzsqPrwkRzQWWm
3JiiPpjqkW9o+tahCA9VSrIguwKjW0PAj2dlsnAzBI0CPxPYXKZRxN5Nb7UiTq1deB24ULj3lrdH
f7x7O+A3c39pmZSbKnpGtUBiFyr+H6VWoMrMqxr9BhEhhIXdiwHMORltTRb3IG2a7ouPj5FKHMyd
Ptfs1o9F+n0esdly+krSIP1Nt9XTBuq/u8CzKSwzLm9lrmbDkYrqcuBjap/q8bbPAzMq9nQj71+6
mZcuM/Xc1BhIWNlkBNoyXoGu0z3jbBHIYYJVwgSLAtHS457Jy4V+Glvcd2eJSInbkdGzsrdX66Se
eTHkdSY5nRQrFLaHA06I66CfLV5r+5VwXW9AMinvJr3bQpovAzFVeQ/m3dW2UNVsZI72fB10BHQB
a6hAG8cYud0GC7TcWg8j07V7XCZ4WnIURYgsB07f+NQatJRn4GCgvlEgV5Xx5kQwgGFnRV3ucvsX
k9Cd+m7Af723zamEn3Tc00tTaJqJwy0B+Kjxdj5DzDJJAO6Lgw+59Bu6ddqVvM4GSTat8r3+5xpd
tKfqm45SI3tD0+3DxFETdz8sZK9zABqdLAWPUBvB1V/8HySp80AhodRA2BN58svwGOZCgM0u5M+L
R63BLBxxk5JNMZeSjmpk22JIyfFWyBSpUJrPwKXuIYt3Ju/w1sNcS3abwgp2Eb//olLs3bNRnuFf
9N32XQBizzxQN1EefZ0jsJsat8QnijAxoMXOr7j01byxNzKkbcJP2WSnIsM3VWtgfbbB5GzeSWi0
ltijEVPU67CjnqOmk0qtr7uQW/Jj5vIeSFhB1ZfPkUpr2OsEOo/8n5dc6OAWg8tAPYnFHx/R3Tqq
8FpHRQWurW6I+ZiJ4px+9ic1rj85914BuShyLu/W5ByzTo8ROw7dEufzcXPzul99n6BI32ylnxXT
Zp0mJKyLCFSnU8Dba91qfLlKc1W4sFtd0akg2f9mmVa68DTY7xG4A51KstfAd8yliPOPAp12Tq9t
63H8QaV5PBqwL3aD4D2WdnHomV8bS2vdkQt5Doe7WN3TPZGKwnpT/mu7NyNkY00pXSCZyaOPTvBv
Tkw9eH7U6Tj1rYQdOaLPM+QLNRt+SURPkcbAp66xkCfHnv52zFXn8VNRyq+GxzEjz2cONPXQQjfC
3IMNifdVITr13Rf+JCz40D5j1JO1RterinYson6uOfMoA8Ev0YEwAKrm9VaNWuVDtvbmGfHgaMEC
M7UL5pzB8tqDvo+mkcPXfbeCprerhyeReXUs411/rR9jU85Jnlsxpdj11sMFlw+FDTTsNyj7q6pM
b1y7NaBbXKn7p0gO4IZ2f5Zs5KNQ/A4pReX0U137rhGeRKznuD5inT5N65ssIKWzd4DKYdjslohD
aGTWIoq+frQrXACtAIzhIwxMgV7+t12+c5JXeXrqFGxpQL2tQ+roPDfamdLtQTJTFaje04sjsILL
uMuiisr7PIHFP9wxCbdNS3oQbVP7nERLk32EyNH71XxWC5UxEJVFQ93JiWPvD3HIHRvlKoeX8bYJ
89yNjiQQn4GuYT7OzXD+erINL6+XmJxLyIEOpmf4nKkL9rpzX7JRBTBCGsn5fQL3RxC+RKO3StnF
hK2eAYAHDZARpfmsp2foKoeG2tFYijqvfAuWiqppz0hOhqGducs1cV69px4RvjzImqMliMrBCvbO
BSOy91fnpKK7Smk3aCsjgJdK0F3F59XylpgMK6bj6+AgKth0iC0vpPvdeLJJOQY6snYD8P2YB1wa
NVfrPzs4QTGbRmzwetzsE67DiJ2WS9T79ovXLfLJwMp+1zwyX/YvOVGJopLvdCZL5p6KaXbEdxQD
uKDeyuFVzrnZCHfDoEWwLc29i0Fvqrl5vBMyQNM3SRQSwqMbq28rdCDAetF+KM4v5V0v1gdqn+sR
4VqIPMGkaQSsTAnr2m2wq+naycP5A/zDb4u3inqml8MgQTdRi266+Y5ux+eeInJJW6eiUemU/aED
sl6uO3oyjH6mD3uYpBVyDWndDTcyVui7VF5dSRIJNb8Mwf2GRYSUaM/oVb9hr6XFuoQb+u2m4dtV
2nn/em2MTxCFvKCyvZ5gp+XrgXsFmjBZ/k341G5jXvBivw9OA8yEdeflMVTEdPDBbTu/Shn69WBD
ag4zD2aIuv5rxwiN4YxA7mSySQnGGqrS2+HZh5m8BoR8GY1JWWyX2zOHpY5aFyCrMnngH8VPhawg
mljc0SWrYYiBR6eFISdaiXn8yZlwaiStqafMl+H4VhEbVQ17qUVkZEjbCE1C4orHOzDX3v04n014
FW9csiFtbkUiJkHXIJXW2NKSvHSKvG2zr8HpBZzAyb1GI1FTjrIaR0ImM2ssZ9dSLsxrnsKNtySi
vqhZyz9kKrCCGd3qfl1dpzZGAE3BP3q4/utD5kM4XyUru4jiz2pGFJA5G7MPshHaQA6GNt+LQG4l
qFf6hv8ppJdvOs3mdcbd5zq8Pt1Tro8w9foTlwXApJ3Qi18KBICL/eYim0sZEVXve0spwEcSwo7f
bu6Wx/+F1Gnk9dK+4mQXuW1tlQ19/H89w/yH//Af/sN/+P8F3g7cuxVaDbKHgOwL7/zP838NVV2V
+tfvPv8PUEsDBBQAAgAIALyAGEkL08b2jQUAACoSAAA2ABwAcmV0cmllcy90cmFuc2l0aW9ucy9k
ZWZhdWx0LXRpbWluZy1mdW5jdGlvbi1kaWZmcy5odG1sVVQJAANUKL5XVCi+V3V4CwABBPUBAAAE
UAAAAK1YS2/jNhC++1dwDRSSkUhOtjdbMZA6ARogxRbdXIogB1qibSKUqJJUHG/h/97hQxIly8l2
sznEMef1ceabIZnk082X5cPff96i3x/+uF+Mkq3Kmf4gOIMPRRUjCyVwIamivJDTjKxxxVSkaE6L
TbSuilQLYm2XTK3+KJFqrz8R/MQ0xxuy5IXCtCAC/WtW9U/JrdMZwivJWaXIvJHlWGwoSC4vytd2
lVeKgRO7jMCGZkhS9kKE1TmY34NhF4jmGy94RmXJ8H6GVoynz7W5Z5+CqeBMejYWVLTiSvF8hj43
2A5DdqsK1ArPfEcztQXsn0n+hpnK/BThLIM0z9CFl4lBM4ZXhHmWaxBEa5xTBnuMdmT1TFUk91KR
PNKyeVdT0m86rZdDMexG6kQceoEXkOoioylWXAzlV+EVI1FKGGtD1nhSqHpeRLLEutStfMVFRkSk
eAlZbiq9YritVAPPooslYSRVxE+eIq8qykjKBbY0qwrwqglUO0mmjqjJ1BF+xbO95r0GjVKGpbwa
11sdW0InSiyaGInKFkD7rLfiak+zqzF5LQ2wyFRojDKscKT2JWlFY8SLlNH0+Wosd1Sl2wd+p9kb
qi2Vk/Hi1ukhs5pMrfd34uJUVZgNRLWC92JeG63/FTGj6/VAPL38XrQb0DkZC/4Sp1JPi7JSyAZK
tyR9XvHXsd1/ARNAERN5i4sNKCi+2TBybQXhZIyMBdEVNH4Wie2iNRet/cLpz5KpkQ4l4TSKdJ8C
+zuFdmCqEnJEzJ6XWuk9PD1PDSk+AMtjwodAOT+OMx8A1FDlNJw3YBhrQ6VjCJZD8Fs39mI0SjL6
Uvd396Rw3C0FWdNXYO/weTde3HOsR3Mcx8kUnOlDLxW0VIsRXaNwBzOR72JFpPqrKsDtZGRHUv09
zqq8vJYPMKPCyXw0esECpc1pdYUynlY5KVT8T0XE/quZblyEQe9cC2pbDRrM7PQLapoEaOYNxMDY
6jXYHQP8tgebsPGGqGulBIUWJGHg5SGYoDMUNOyLy2ITTM5bxybd2nEDG1zdMqL//G1/l4VBdwzW
xgf7EVgG/WS01ukPYPVHZx+pJtlPxqld/gDKdtx6GA+ODg4KsWCWvCoUsOMCpDWDa5Ulz0tG9Dwc
2T2dnQ0Y2xNTM3vIc4J+nTTQBVGVKObtCS23fGdzovf+WBf7aWJ1jpvcrkuFhdIr0GVGKrXkcLwD
67sSrN6BKQhstyA7e6jULo0ghjvV7Quk8Z7CbQgKFAbaS3Dez0jHSIoUPEIQu2g3aWVdUN3zjdiK
1ch0aYzNA8xA8OfEQxTRUzKoU9HNYOPhqZcQQSRR95oSsiknDEgUmrhw9UO0MJOirZZ1CKKn2HAp
NkNRpyYWJOcvAKe+WgW9aC0quPyRDRf7G+Paxm35LwjcBFOy3FKWdVTtLDv3VNdUSGUUJx6BOtuy
6x03feBQ4NOoj+nmAOtMxM2EM0eKP4f77dc9j4NJ7M7JeevMDaDvdOXaYsiRmRDf6cYMKM+Jv3ew
WFZCgAXbf4Xq1Z2lufQOYbyBp6fAG7Rx1ZR+CVq++c2j2oeQj7J3TaubWkc9ObGtcrvvNuDwGNES
oBPx1Hg5NGzMuawTe1coIl4wu7uZey0w4NzhHXRoqNv1BhV1lwUgeb0cWiVjdw4PzYuLfu8de/fy
1Asx6TxCTSyQY9GL1uq3L7FjsPoRtYZmzYZK58EO/ZmXWtbducH8Ng/njZl5BoL+Y3uhOW8uC+fu
MH5q9WFv5BX0jV1svn1Zh35wf6zUwO6cVWjNz9DlBP3ifDBSbNTWtSL38qiNlR3iRvOx8fQ0P+4U
rflkO7jbCitB8HNr0Obdx9V+OYntgHYwNYmv++nK5kPfEAcOkT5qe5bAi9jdYuEhZt/CU/svof8A
UEsDBBQAAgAIALyAGElLmIhReTUAAGFdAAA4ABwAcmV0cmllcy90cmFuc2l0aW9ucy9kZWZhdWx0
LXRpbWluZy1mdW5jdGlvbi1leHBlY3RlZC5wbmdVVAkAA1QovldUKL5XdXgLAAEE9QEAAARQAAAA
7Xv3V1Np9y8iM4gNHQuDChELRZoC0pujKC0gRZAaFQICAhIIoSVBnYFRUFBKJJSIQBBp0oVAoqK0
EKKhhB4FQqSGmpCEJDfM+73veNe6/8Bd1/ySrL129vmcfZ5nl88+z8Ordlf27DyyU0xMbI+V5SVH
MbHtx8XExK/v+FUkQUfevyv6UomwuB7hcxvsExQODRa7qQs+e+6mj/457fMGN2+eu3nTzw98Tlvn
1jlfbe2zWjrgjFNDuSILiwEXL161unjx+FVIqF/AHbCYWNS2v5zJQQcuHBTohpR8PrHDPWhvdVTq
CSu30tsWfbr8/beCdo8A6i1SfbWtBkJ05xYV64r+npr4cmbcYiFfUhgvH7Pkq2n9l7uF8nip8q18
GfVlUohtfdHsux7E6rgeEx4aSRPbA6HorMdLTO1pd3y5P+BO3B+Bm3+LPXkpdUHn9LWRebtTv154
EM6JZQzGSN/zcGmN5cGqYeVoSj1a8k+++dcr6KEzb5gyYTvdfhP/25iWr9IesYM2Obgyn2JgFx31
vk5a1eSj24k48/PqPUjgWyfS6V7zB5b66ethjqY51KR0qpxkQIhfW8e+FvtULK57sfRWfo4da29q
S+4awq5m3PSDwoddsuVml98+zltP7jebuPmtcPpjgsmx38+vbdw41HCkZOP8h4OgfUCll85hQxp7
lp9X8F1WrO/fTdXv8r0ZH+5uaU+1DdloSvwFrkg9UDkBc3H4Fp1ywH+8b4xpMSxeeXav3O4ju9F7
LK/us5C4+fzNVfME4yPndKohZidLfz2aFqsFPRWIi7h1qepCrO6oSYND4ZixQPlEWPrFuh3PNi8I
zlR22tOjOUTPN4Mu7PTybHTTylejT/SsxiPy1N6OyXCgd1xGX2Sa65XMsuiYZvT8EbN5V9S56fvn
Uz6Gv+Etq4MyulEqyQc/TV5bnbX5E+p+To+GuYM0MpnQIGvUDYSXP0zSc8lG+fMDLXmLr5vTpq9x
7L3Xlzf9SR99JlTOKUY+Yig8RH3SWH42aFO6a+JGcPuO3IwEFUrwU+6p/hs30M3rml5mHlEtl5G7
1x3SZbspzg/ZyA9nfHVyG/eGclNG2jdlptiPGBhlcc07XzuymoKdwpj78sFFIeEV4jKEL/Cl+pCg
AoT+psR149LD5Y7nMcebtx2LTIyR/67yvDczk2TgmKiGSWua6brl2H115KKjI/U0FWxzuCbr2q2Z
yMGsXrmQY/kGf7A/FluD07iVy/vf8N84cjhljkMIuyMD91Dc0HfNfIt3UUkPxcSOi1lduuActW1h
THJDzdVLbyn/0tWmR8dfmH/fp3IC+OjP15qWKOVKHYUdOyh/yvyxRyrfOvTC8Y37tZc6bBJfOVvc
N0+169g+aG5RdSN/MRY/mQteHB8zMMpOa+PnMBrZBByjOyuL3N3TEzqdo+3vkd5nJbFj33HzeLFt
4qIf+nISPQjD7la1H2THP+/aYT6/4we1nBBx8dTex8PJP2jtix+U/NHQmITE8eKjdbL7/7VzXKxK
+gezd5ukdpjb6QVqn/ivyPxrzo6trxvuX69Im91oih/tvfYVAxAu9EIRfpe3tIJ/Gd0WMFeiK/4v
HEXRlQ7oV/9w8duqx8V+Kv1U+qn0U+mn0k+l/6+V9t0jIjhGx3suibdjVtq0v1CuH9zSey76T5Yq
1njbv38yEuX5SKy2wg+i8F8kjod/Slf6N0Pf8N+2raMnQvHUD6KKeDHfiucrP1QI82rHxYayev78
QdR9aF989yGnPLH/mr+XK7Ju1JuV+oOoUVRZNN7qOvBvmfCmRmTd3/DAb/+Kzrqai2m52kb/cL+R
h/fFz9v6//GDaHrnDvPpRyr2/8UZ/65HZD13xtbyB5Gn6HY8z9Gl/vXmoJu5WLV2rtQPop/O+ums
n8766ayfzvr/3Fk9BjDxLVNvaFJqXUcYmAjsPn0PWL32J8j1Hf+YBn69k/QsMrvP+ceu+rnSC6kB
Y82iHy6of0i82E1sRVO4oumhPkDgjxCgIEEpYZYo4BGEsWyakE/j2TYAs+CK6I2vBMEcoQnJLUbO
2myug4Tr3qcJ6+WhUCTLH1lP9a/TE26kCAf5nZhNKzZZuEnmHcxFU03/YhdIY7sjbz6HCFJECotM
wSIzsiSyNAA73XLtl9idC9VMUomw21O3PYkZxzAyUp+4uzkYMMGPexmn55Jyz+fZMSV7wQeZNkBu
SCUyFS9tINhkIAWMy7jKQwwoAdAqUbeZn0PYupXSHc7bUxua6epjF8xWtceGeiLrFxX1Gq1gxUZj
JTwORshZjGwgwNn50vDbkzHyK6WEYTirBjP2HLN9xYsZQ12EIRiwJoYxb2iMzB8lQ6kti1BcCnJz
khhQr1KjZjz56R/sBE42YUiTZi9cs4fRxsMnwiceKkWaxZKCIhs05+qDYzqZfG82mtqMjSXHjvd6
cbpcF1cKDOyyp89r1BBaKrIWJqo6OZ80o61g+bu8XsXy50AEmzoPYE3AuAewufizBm88h0suA4dD
eKowfDhsPqw9MiW626ep3WQxrN8CPuuEGQakQGy7CMLVv684FzvcAN1zJXD7x1L4gynQyji6Kps0
umpV374QEjvymFN8rU26i61AuEdYsyH0jW1O6zERa1eQtbwFmmChpUMwoSl4iRsihQx4bbQjm2mH
YaZTqS0aH/pX2K+7j25xLBkSFMnCzDz+vD/b66zoqQqbNd0rnDUW4cxYzb36X+M/8WhCAVxRU+kQ
nCNp/HUbb2oPYHTGFQEOyx4Zj4zCbQw0EFrezl6rbNJnvZ3MxAQ7+blFtSUxTNmNSbGjk/JJv31V
Q0xdQfhWqmCWk/3VEBNKiFuVZN0WFVdp3gyB3cJctxCs2QsjlkmhiHCHxQQ1pSw0tfqz2/dPs1yS
1xrUL3zuuiuiy2Bk1Y0cM9DUiY7TPc800H5eI1pX7L5Mk/MjcYHDEP/wMA4RhAjbXG7XlFmOoeLG
J76jmn05iHWLxkfNbyflmG83Js0EkwIQPki4JC18497N2yNeOjL5yLV5YsLKPoaSQEn6RMWz6j4x
7E2jfQQBWWGX4wAucDsSlw5TaE+AyJRUTg/6pCwgZcyWH9qvMWuEQpFzJyaAoTG9E6ogTteEQ6Lc
AMPs21JrQ5fZeaKf+5Z7v4j3Gx2XwmpEvd/FOnetQlcxd/IY47s8600ilCZgNeDMNh6YfTc7KmRT
IK5f9RCTek1be5IJSUJ6cef9TXtpXMCi6bG7PeEsentDfoNKTcXisL+kfNQNlBHAjJNmNuT17ZHr
aOmGNP+z9LrrNTb3bmv2ykUKzQXgWQFdCIIJeVRki+qFIcijkmj1XbkW3r4e5RW0UQvQeeJY7eGA
Lk687EgECpyFZudwp+djw2dNzoMZd1b7FZ3rAsLnlZXejgWHhGfTT0y/Dds4kPcZzsbRvBC6iOVY
+uBKq9lmqxe6hf5k5r0kYNRr44OMvEzASgzUC+0c86trdUhsH6txVKFxFKwZm6AWHTzkrtlniHHS
TtFRwTPhzBEax9Kk8QAkbzWnmND7lE2/781eQRGaeXSQgL74UqblNqwvLa/Pq/46apdbZ8U0+6/N
K6LAXvPqncu2jiYo8eFFigXRalO/SPpK44khE8FyChMiZrevWoM/XMl3Z1elIGoJ/E02UsiGPy0F
8WfH4HtNItzisrWIH7S9p/5cdkQ1OZt9eoz8JqNY3F1tspYvvRASUXB0nVST4OevCZ+xwbVnQG25
5TRuOV5lqAazXrYolEPGsdv08FU43hhzXFJppGcuRfA9pamM6SPPG1x8mhLnC3ua5FnIK8FwSzQw
SvB5H8Bc9mOTJh0nFVc1HECzYd5+cymRJ1Y5GjC7/cPI+GIkX12Qk3O6f9Y2CzjXEIKQhndcZLkT
NqO86WdcZ0KgpR7q2SPwlTTMfEVsyxyUiWDjnPjeAbluO09ZjtXuncs8OdeCDuwJQOZOI+ghlgQ5
MyfxrwpAkrAADGjhqId8qfRHD9H5/RWRdS2sueHmRM4UU5EZlvVtHVsN0qenL+4vGnJgEXWedrOn
0UVSPna3JzB+z/hSJIcre64F54TW91ZmTj+rih4ieg/IRWURI1zffjjUtOUdfu0cawZcFOudjtvv
hbYwWc0iz2f7I7bCV+BwQ8tC8BhdA8lpERdArhQyK9MW8BotrLrKBe/1167QBvx6OQ6yjreRm1xr
orZUxH5J8u7TJDvfxZWMYqHRrUfHPyMZlLU1UQ4C4UT78xCfp4PpZFnG+HEEtK+/6g2WSpF0ibp1
wrrRgex6cKMjzaRep65rWZHGuDmCKl0Z681j1Qp4OeuvFlRV0nzs8UT7uIkDPCaQVT5/FLDxTvJZ
i701p1We/x1viwZk4OR56bKmzyHWWcCRiF727VewDVxPsS755BPj6lBT475zgljBKoagWi6RCcgw
ih3b5b10X/DB1dS2psxT4mixqoxwu8gjggJ3QZRhpSj53s08MDh92JZTtRC6B5XGxEeFONHmp/VA
6fXrSToNR4rT1ZUs+FfoHyMcuBbJNahKYsrGhGhVhYFCG7vqo1azac3dR73vOPkpGzFC0bF8nwD3
1HS/65PpHtP0KYJQGUjqulZqEZLBiIyZ0atWVhIkUW7WkwEhJSnFhKnTmo36s68KMgFAUpDbq2Zl
M24S5DTMQbwA7zbCG2fj8VbDpzXCHuKvowleX8Vlrqen0T6FITcS+dWFAR/3hEa1fhLC6ao8rSxq
XQW03GI0LRBqV07DcsorQNPI3uzxWgxIYJMbcKJGpVw72z0RSKxyF6avfkq6yWqd9wmoToO+Xbsn
qdEl14xHl3CKzaWmuPy1hVAk72XOkkbXw2nvGgya/fZrOqwrGMeE58cxrD9/YaoOyVDUVEiHNMOz
iGs8bzQpvZ7H10KKMiezoRPL39javS8ltiX9FqE27olvAHFXUDw/h0T5mO+QL64NHK2CZmV43mEZ
3OCnTNLe3jjfZn4xVp2PP9zwlq7e3q9uHU/VhElNsLlxm9PpTnZuhW7fG3ugFXjZ71tJytRoZFWU
zaerv1+UX0kVxOI2b5CTgPTAOchjDH/IovFiTZlGe2Xs+GoekR0Kn/OQaT8W3r3C3/iEjcZ29wmo
EA9/79KRkyTvVU3eBm2TRFvjXUBTFTPunThM3yk40c4oDGZlMEyY0UkQWLMm6P43hEemWCGtkivt
KrA5UBjXnma68jRljV4jfeoxQTrajF7b2cDKtWmZrJ3VPk+2dRV/1IL+LWXuiHd7uWfqLHVBFAFA
wlzZFRdhptEqH3ZjffUbXB2pzNAU1Xs98+Jjurv0JY4b/M64oqekRg/kTzhhBGumaajSSr6UvRbk
g+uJanpnZ+C3nLcmsw4ps8RCz73TpQHZWqW9OWj2JKCFYlUTWpB9IGmT2HktUzs4Mm0g15YhOd9p
j1ixS7pq+E5Tfu2FpHqxuusMjwOPSQkfbm+HWxoo9Kx8vG2pacj9LqiRRiw94F9xgg4MhEIRJXeh
fMjL5+CNCRnCIJnZIor7L0dnvoMqeaH9d7Kh1xuOzc2Or7mJp+ZI7CnxtGCiDFbH/QRZi6kX987Y
cycxaWgvR1JsDx51gKbwubs6fdqWb7iHmHHcYITuo5Rb+4qk995K/LkC/ZQKbV2hPGT12+o35nbR
DgcbsXPin2ga2gJjMx7sHQ6Sc6TdpaD5hZmQl+6GLI0H9z2dOwwZOHQ6k9QUfP5aSKBXdYhUfYIp
6Ip8tC8SkpdGK5Qwpj+KFsasE4Cro37CoMZy14Yr91Mgkrca3w6xqATBOooZbvtkOTWQZ60Rn6z5
buo+aQOn15dGmGmvGaaJ1ozEZ6tJ5kVSQFpoMI3pr8MNnXfKZtyu7kQ17kv3sWsMojIx9sYTf9fR
e4XnBNmO6sjeCFNRg/Quy+GGy4GyYmO6ypiUUs5nuCAcM9d1rwW3klHhjGASMHaGM4V4IJto3ZuT
HLHmCo4aG72vYTZK09SJyUAA6O2vVZXK4b3PdcCGi28nL59uCsnWapVQwsRBzGjdRsKujDqFoGIC
/RQ+tDK7voMD41NACnOgimq7Ab01qSy1WkVtkzsUgp9lwC3HxRi17Ju5uFo4oAFGtjwX4HiwQMGr
Ye2ilbVTfmGJYdBcgyEB/6GvsVjz6ngxH4IOOQZf+wKPlDLkKZrzs9UFI35yuurth/s1k3KQ9mbY
uFTFW1ZDoPosZJdfYSkZKVjl1wNCC6aCswPHJ2MCwe0jx3uLGtv19zC1R5d1oY/njGicngZ77Zdh
gijTaC+7g7jdBdlYXY6G/+B82LDOgoWNdmsYptI2TVHTCtUySucSnIRek0eo39l1aazkHPZkEeGP
y33Wae+O2VC6IWP16DN6dRoBJ2TJ+SmuaBx88ijtO+WOKtC+N71kd2BV5FM9Ung2P7Q/dLC+NTmB
PXJnzrbGnbbB/4X4d5hbscLp0BwCFwEFdfKWz04H7HyON5xzZGX0+0HYLWR4JvxUW29fji5ngMVf
Nk6gtnIHpg3SK/nqF4CuGjci6B+uubrvjWiXi503TSt0A6FTRXmEN0V/4C4YfhgnaiPvaVe9Y5M9
G653hGceGNscSaewmjzL53pEcUcjqZC0VgXe0Zd8HnOgv1ATySHC25s3r58uQlpwgemqoWNz1kO1
N2lYW7Pl7wTb1TaKS6ylgf342qReehY3G6HhRqtdNS1wtHuhm1UMusgdmSpUzz2attfw+wsB8+4J
KsGNE/qq5hO3qGKr0veSBb8OZefqjkmh64G4itb69UpVWKeW2IXmaiF/q6dwSRj6VUoAeeaFftXt
3n5TdjqKrJLNDafohISa5lw6HRrileVn13W1Hen+q3cU51x7hGz8re9K10pPtj/45otQzkb4WKFo
J8SsGiHF2KNsRjSw8SxkOcmrzOwpz1LqA229B7Z4IAfcBKRjB07LVfeyT8GvVqf4f1+qwfDnvbhF
UxLLkUXSA87uemQvllAb4mFfDlqhaKrwab/lZChCxlLSmW5PmHOOT7xUGoDDbQG5zJIhdkMWQ5do
mt4ZiZuUW/zMPnTE9KhAPnLwphf3xdQf1CZnIkjvMXlrVOx3+DlU0jfQYmW753AKDIYbGWsySn8w
v8QMK3KCUpLYngrkuYidcT3heWkoYrrqzUZHHeODQaKS8iG72fLF1ZBsTaFcDJMJuw1Sx5F4Nhk9
8aK+E8dqPJLT0+EUELeid60iE6W61vhH88wTm8XUU3TrsVTIIZ0Za3rWqTnK2x6XORhT6675TNDn
jOkIvtS3Jk4I9w4KOuhMrccUhweL13peoEUKUtR5YazyOyPGlbdQOu2xdkPD1bWvgnpN+TOULCGC
nmU4Y2yMP6DnjQX2Tv/ZUptCC/pYSsEUqAJrdMetfqdmUxvnYnLnPIuF+tBVHv/G/34XgF6o+/4u
vgGzQSTMe3tUnKnEAun1bqhkSoZqv+xjVR5c423hg5hf45RJTq7+dXGEgLyRRSTx0RnN+iFRFXal
aLa8Opw9Y0rXuIxXBWg8sGj2J904eNHCYBxlquE106sd1yck6XoBzxcD8SNRZT1BSyWkcGhT+Tgq
ft0wdtFRmr461mnxOAm0OdF6hR86tYTNNEtfRYltE/c/fa9cPPVbYWRUzEbToW7pFeGZ1t0VWM+n
ZEKBSBvcm5x8JH1/OETLuHAzfmrvZcS7Z/Uq2rYjK6Hyp64PR7CvCWJkHfXuXZV3f66oGKbfnLz4
7GnMs98iTu8psKNDE9Q0cg1WqzFY5LlJQtUyAAVgJr8OXzAxu05TIZ7Po+bahKdRCPmhh3W7T0hX
dClfJkQRPfYC1DHcPOm2/2S5LMQYt4jT6rUIQS1+Ah9NSXQGcvprA+tJhmUeT/pjgpgEvZiuSHS3
78c3yX51pE3a8hNYBErVdarSGX3Mz/kFw0zI4T8MDc4r5YhaW54364sOR9ZR9veXtFDt9NuUJXYs
WH9kOE47eGbwrHN/yjhr7AsPOhKnbDwKV+arc81PkAIpxwIsnXqnQz7Yb5WKiZf8CosYTzTsPp4i
6YQXnxFWq1t7DOC5cTKUUaV7oY731yUkrWQvKG/riWaPys6bja7SsJA6aOdUUW8EbDEcgwsdht6j
zJfvfveZdtPKqaCkVvSw55HqDeuzLMvjAlCBUoQQdk4O4AORubGJr680xifvfj7pM0McABzQ8l3B
pu+v3qsMs1oMS4ldg1VNCJcSzZpxH/OM6P9NiCCv+ip7Vv7w8vmCWJOgizUlb/dcnPUzlXXnyp0+
qwpPzKwhKT8VemqM+3qFM87ywi93HUF/HlhBHYq+sNUEos3LfawNnxXX3HartJANRzrYibGyCo+d
kimSg5gd6fgsG63sXHFJw/rsF3uMpPTeAjtwX24f6kn2TO3znlR615C33OsGFe3u4k806dyoiRO5
9TUVmnHfdvG+WFvXVCMKc+My92a0fjeW3V8mIQkf0vpz5sTJ1VN7pNO6bhvQA+fLPnXtMJWlv979
CaffHBGl2UpgnSQXPovQ6rl4gPiw52WOr/qcemsGKxchKr6K2Sd1MgDrFhwF0LR9f9Yf2QOhvZu6
5aDLC2cudEDwc953tP5TSFcIgBjwpVe/SWhaA7CI+PiINXKH30U0GnmZ1PXqNv31HZCxXHaNpufr
ZJdMPjhkeMrEn0Z8dQG80YPfHmpwk3nFyCZxTc11YB3UtSN85nguu8j+48uct6GjPUMhnEUsvi97
vfu2e3THd5ydfj6oBThinEWXqKP526TVIy69ihAjf3emf6wUCmyB2TPhzR3V/r5Vg75m8sXvjdqf
QyxaKnHGqvmA5glvdhN1JRYV0LVE4FcpSmt1m+8vCvgKKawJy83u6h8AvzpJYyfbnS+MA7UzE8nt
SD2SNhjLImSOGK4eCU3RmocQUnw/x+92SaUru/J5ZMgo2TRr2/FqAP1CnqxKqWgtbbyXXiT6ozdt
lFbvJELu5w4x0yDGpLDzYO0PTgb5TGIZz9TWACiKjD0LNWfpD6rsn9CcVrvX6J3T/OWbYzckhxpq
QmTDNB+Uf7wZd6cHBrt7REiCnVvvX6GqE/6J8i779T0O1x7btGOnq7qAIzIEs+4GV9n8iwmmCq0f
tvquWHcB6VBHxCv7tHtA/rm2VeGwGd8JhRMPdxpOF/4RrdG5/8qxL6C/NMy8PVwdEi4u9nijJTPS
2luwQ9iew3MoOyFKIxcR3n+XWhsgF1keCm0aBSfNYIOj3MnI63kG4+Fde9dDubGBs68XehuHjTwX
esZQYeFlw7Vu499w+JCh3ifIDY2pR/BFa6yw4y3ZBkvMVyP5Q1Dq0dmGf1K7gOU202ml/ZP13FKm
k9/5/umsFXU2oSS4hcS67iUIpqH2i+G0XrqzSRAZtQf7p3rCFu/S7T46g5ru9BrzbmfX9pRMG9Gr
DMlQ07lpA1u9cVACuQ1ZzFoIM9hqXt+YSeXc3NYh+LN5oWnv+z8uewZm2CUZthMz7VoDnj1TvA7+
3heWSZXYMX9FvHHHchNFwQx4rH0mF3w8npiuFAeKpE90vE2m/kO4I6XuyFMChRD9Vqqu65L1ai3d
KcND7XOAAyOq0Vq7DvG2tzbNFLu7RW3/8TfCnZtxsuPcbeCNSZAKzFzrbtvZR33lxKtj91P4MMKb
aZHB60pf93YYZmh/rYnQPWZYWbwdkWdwN7B3y1wWpfZ4LqJ3qKHWQ94/Ghj/DqG8VFk01M+jsfGL
qiC+NWzpvd7+qPlEXvw1RVGJrSsunhqcnq7w7+zhxcN3Lq1Lullp1j8Q6oPMX+xqxE4VYO6kaTl2
oYg7nKxmPhsjEt6d5euCE6pHNkmvTreu6iZIAkK0vZK0ZD8pwU10i9Q88hKrVcCN2ieIbip0jooo
diMKC7RbIYzo3yYjLi9KT9L1a1pCWsawOUG0JBdd2W/KQEnX3r7q8szcGMz+qhW1RP45+nNQQspY
QH8iLT5XcZys1AXzn4XNJ2+SNi5wTadgRny0bhGwPTM/7p/e7x7f4sWR+Ga6eujMXm4WZiaxobkT
GEIZm7GDza70rYyMCVj8B2m6F+Qc5bXWh8iISKdI5G8IKm68TtVnFkZWkYZ03Qb+wIev/FWZ4XY4
b/lEgS392303vBZrcyU/WPv1YMn3JNDKs8U/ZJo+e0t7H3VNFxyMfjHUp3ydbiA9tsVIL/v6z1Jl
ZRnnK6OBqOJ2FGPP2sXneU93xf0RfWu9vxKx3nL4W/IwgOX+t/ZQdu8tXDCkAq7p/nlqW67sr6wP
4N+nAaoXfWmc1IuspsGqgKHpbt7HA/bzXeF/No2gfCYF6ZALhcahWCPWWx9cu/H0Oa8nDnVrfcWm
dUJg55tODhspv/z38KkV6o5mbn/lIpvhil/JCIIIGQXas3qTknRe6uqfoDPSbj37VqMjzKNZRO+B
Oh8bdWRlV7OCaOGnP332embLPcJ3hcYHVVWkrZrYLcwxs7J5PhMpNO1FAQrxm9vll+LhKwnSXdeX
+Q92JbJpXFYDL3G/fOxoWOuVpOAutV3kqOVRhinMIQ8/YnbwnDTbyMRJvjsjMSbY+vRbD+Ole9Kj
6S3K5EvX4wRTaSgOvfNjkrFa6JlgJ79ArtdqV0aj4NtD+sMx+CF6yTucS79vUyWSP5dk/Lxq8+/5
azTZRrP5uuOPx3OGF+DuwQ0qjGH2RN/nqfw0utQ0v1WKsJJRqQbQZf+58oasAFQfueqXTSBHtWlz
E5nBTqw1tfBA1sOSAB+PvDi8vmBjElWaligzfTM121F+I6rdaDzMIWFuQUjfOM/OL8+eHQeYgsbk
o6Om0vLWCh+X4rnZVVVfA1L/NzEeSG9Q/Q8xjt19noYZiZs4gPlOoz5Rr9t0qrmDPX3XRebV+Dar
s5Hvd3m/SemEFJ2ZOcbQv8J+k2hSRmzN7Up7zSO3CVtqPdc17MWZWjudQqQrbTD8bn/uSFv0bTdH
ec/Mlcnp/SPpbq6whZpkrQwjgGzjzE7X5lvlUb2b2xHfE7mqiOwzJq7R2LavzRW2FePeFcklmIM4
oZf80rX776AWDRraeVFUxYOThglU+vExWrX8gBKsp6fDGVGI46UbgVpXdhMhoh3ZqlXLxZFMHbKp
AXX/2ZbDWvZ01C6lMSLx7BeCZ8IDklxbQRfiah52PCM+ymCor1p9V/DyCWllzzFC/fN5HXUtf8x1
voCKJS2bST9qJgWH1HgmHuNJIz8caNoibYnkNk1E5abpVH5GACsTNy4JiLsL+7YLFOVZ2DnXDw1w
nJH17GxacBhhtBFki9kT1Mzy9ZWyVYPzq5Y1S1u8HT83pS/NSIFhQI7m4uyiQUb1fStOiZduIA8N
nhFzS0wD5BYmVewmoE2P0QNd2BvtZnhm79MXt7y6ztYAeN+v8Pz2R+8McUS3jTI+X0R9avhn3mVh
p6txLW84N2JyZWq5ZC1BrzkfuTMcnUOXIlZGfVLlsgN6lv9ysptRgk/X5PWPff1V77ruTAfX+L9U
OVDLdOv3+aTak8DeGkh/A1loK9U2UJRmZ1gSis68wSyk6JR7tizksWqLoVT1yQUlE1w3+/9g0fH1
8NnArJyIIs5QgY3Tw5xUhlSvEmKjld/aSlGbyCLH+dE+LjphuM5mKTACb2ysMnM6wm0c1TIPHrtH
v3nrv3Q0HCGw6a2Saflu4YUF3E9G4deKxia7TFPXPOhDYlmmKtsCGrUHJN80qLeypyMj7S49M2VV
pSzU3EFe3wQ4oP0/apO21aR41uhQiff4aZhNX9qpN2YlxrOv8E+AwpZ64+MLhxuaweyCIqnRwOFI
5EYBJU6VN/Vf1l84NW381AijVO4hGLQrDy/v6cMFIN31CImmUwqxCwcMlvFd1yooY7MuDe66D5M9
WPl3Rvr7AnHgFlcnUvRs7DnwxhfIscb/4eu5/+HrBfcvZyoAlVwSH+Ih5wyWKChvjVvBQ5m/EJOA
Iz6eflEtJXeeyIWz54DQfnxBaXs8dGFwdekdlCYcrg2NHRlpInoJVmJ/8aI/saR91OUxmtKZE6Xe
668XBxrwUNeKcViJT86AnH0bp3UOSNctJ2q0r9z0bqUBV3OGzTxC5oAjBZ4lTHkPNJ4elc7k3Y3z
5pNeLai6kY+lhCcjRBt9EFkJ2STjl+9Jx924MTgX2gVgfb/CBlNqq0bXB1WRm35dKnRdTsgwux3K
WDfEDBun6K90CGCRdRXNom6HTJO7+24bsQziXxm7FR2M8/q2wgb4k/e+QcAv9Y2iZdfEG3lCv9Sk
meeRo4fjkGSKzFpPkMrbVMDEh7eEDgYzbumRwsl5+hxEi/B2+XHoKNWj4rPa+Oa0nuZqgsxIumxX
Dyd72lt4Ha11OgOh2G9VuVxjhlN2Xc+kV4+ymxkmKCaNO9Cg8cRg+rkAji7OKD2VNBpDWhiBVBOU
lThJlAs1ZE3phTlgNT4g5m6njTckbGa7tGc6zgoueK/X2PkyJ51dCYpY+5L027v1ylXQzMFmZVef
w8tHHLFms68KEhqChE+I6QfYn37RuHvPwuCCxzF2InJQEySl+x+mGthI0TkNPPUML0pUGl1SbS8l
5JL0UAvcIk1kYygk7Ht+IovjtqgTdISyxUsjWlYRb71MpujMfzn6lGq5Cmh5kHo15lS5Rz3kPl75
QvtLiWT+CpZzGT3tNa2FmqEakXZZH2UgzKwPlEJLjEFgB/EKU1WiDouYOLIoTb8Cd6joYxGfYROZ
sTQe1+8BSnlEJ2BspbhxtM+QOpszjNElhTa31HhmCbemnM3zTrPH6plLQxuhSQu6IYr6fSZ0T563
rSxWMK9E32iJ4o3Q8MpKtUkQhxvPF4YJ9L3fX0qcITaXgD0On9HE1l/pKmpss9CAPEU8K6kGKbeT
DHjrzl51zNuH/aCY7zJ3yciigqU2JjJ4mAILdRDnhUFbguotGs9WUxmTesU5kK4TwFgytCJ8HRht
xm4krw85tactr/3TdPRUxRkTmsd1yFPABYx6A3S6rkm9Mqa/lNWeHycJKSNWGQIL01yQ2vVDrnmi
h6/eZVGJ4EKqXgq9M8QKzVhsQMUmavqxweHT8KmTgBmiNK18ma3AcbLLjitm8fsa0S5w7HRWgI15
lWv4Uj93xTSEfgJECGHjaPzDQ2Tdon4fYmCjuyAwmim1+WJnxEjZ4L74qaScNGZOaqbq+yR7OLeX
Z+ttWMI2o3R2WEUi/tZdd+hIERTIr7/C23bRzd+g61VqDIFzbIPjDAn4d+LdqadXWEpVBjcU6YU4
T/AMCGV3Dx67KnGag0rjlI1kj69hTc2U3A2eS5d47plfDZ9I15E4Tn/y4dYowE8ZUBAGSDh2B7M5
pSQ9FCSsyLQ6unCHEGZNSMvPDRqAHdNXfNFlJUyFiPXgU9PNNeZQUCA3Ykhp5cHT2pgT2VDboTu9
Cqc7uvwBm18leSkD6h73WxQsrfIp8wUYv1cn33vNbgxaKe0BLKzrEbPfnQ7wEqt2/daVTemMWn4h
aXLb7fVoyywjd93OXdSLDES/7hkW1BoS1FpnWT0Pb8ThNz5pKsYuixIazGExYq2SyqcG4spLY3v9
nWhJwbudmAqJxyiYPn+aPOs9dJXIPsP7qFFSb9Km5FlXHc6ac/dyon0pY8yaVjUtOtGEJQGVkM8X
YuF6Tswtdv9VJuQlenLo7j3/2SitiqDXo31N3QaZKQwUNXu6kSQYgnhUhqSI/LT3IySsJhQk5FJB
eNA/Ya1RWQf/KmPX7UlaGfgT3YK7XCgc0Kc/z9t18V8KH0A2qmw3rYuusMPNwDUO0huaRuvmUor+
ofAtgtoz3QXD1nDLr5LO/xf2/kL+P+x9TxAeQ/FVBtZ4u6DhvgdzCWda56ZZYIPvSMLn79e48PTt
Xq52f3OnLQNeh4+GtT+23rSnpbpn3byfZm/aiAmdzkXSX3en1vXTgL3FQ8CEU3Jc90Ipoh5++TF+
yFGUt1mwme5xckGOJXvhYi/rvLACxDX5WDZ6+rpGK4e9VtIpeTH8dXesJd0Xb1Stk9IEDnCpRlPw
cXWPOUuI3pXiJ/m23hhcLcE7ONwLody0uyDLY2FInr7X7hErAJrHMKJxMkkkRPOaVecO/YCJtAUU
NnjmZK0G2Dldx4gYCaBAK+ELAjCatBWOlquLbUOSUnqXTEdunzcRBXxmdnERKTopot6xM4pP+bNw
1MFdt/X/WCM35dr9ZnipWNkrAHgExktj9xqQmlBdRxgpa8XSX/Wb9NDWWgb9BCVKJ93gglUMkxA0
GayTdwXtgM260sg1FUTNUesWzlW8colsfqw19gYgDd3NrAGFOlHf4pdhEa9Cc8zidDdzuYLibmyA
ZszTpPn+UE1w79TpmWoUzlMImyUEeU4e4eOfK2KtRuTtsaI+m5jjw5mFhKIZovz5mvYmODF6N7Nh
aCDLrw6/zNuV6YflwI84rrRxSpmu7IxmgPTpXMWKmdIaDXrDrduRRlM0tinbjfX0d1MiDd2rSBvG
m+W1L8Vcpw0bJ67UEU6/mun65UmFp+W89VzK4luflDH/Z8NVRZkE+79Mjy9t11jia79Xd1nLoX88
J9QtWtuu7BrTtCoKXsQTM0Zh83MgGkyfbHXVMS/86bd5yAsba9DDNR9l1+Amaka17CwsW4v/sUCo
RTpqg7mnkDG52LadcdVvE9a7NvMRxeoKaMhJI+2WjWPVYFpsPKaPOYe4crV2q2y7nky54psd0UmR
Nc0d/jXJ9kAKO30774EoEuBpn3TXC7uxdJofd/df3OIibR4xxQBLPC5eynfBzkYBpS5rIqqS1pWg
AJV7H3HjnB64HVYLPpxXjLxqd7W6x0pSLuKqEKYfMENzFhBTiG+9Fpd8akKq1wIskY8V4KURo0KW
HmGIWTCDfPaV1YfNmQ/hes839VzMDWcXQ+eeNS0ihTwYeK0O7wUbvuNvNq670LR3ZIBQMboR+5RR
f6eG5nv01Bu7fV7oF2Ve7a17jcpClfKStuMKDUZ87IbUiH0Ik4aKxrn6ObZZ+9q3D91nyRGjwKbN
w9ssuzJwJWNvAaP17WlbQwdRKjEm1qMHSOEoZrtsY7krNWAdzh3JmL4MB+Aolyp4TyFlPaEUUTkF
1ugITqsPc2fEBrL4waIIUy0Nrh5bjEo0iphhN6IDt0JCIHz8wMYFma2pws6TShNFSHNYA26sHHeR
c3+vUN7VcF6xJYrcT222S6xmGDMMohttGx89K93duj1DlBByoshJOWsojwoiMnGcx5MbdiVWxJqd
h1+O7MzoTf4KYVIcTO+5GJ7HHggLyKwvW3Qs8pnDja9X0OXuK5zM9aEWRfzW3QmrkNir8r6jtOvt
4ox5jt1gnU5OvL268KqflxdGI/cr09UQW7z6dWPxY1N1KSajvorfedMupGb8f6YAOQNFo+qWXddK
FPbA1Cuc8/ZD3AuTKatKRTXrS8y/W6WZDwqayd8Vi3XpFU6XQ47Svh2hNhINU+ZycGZ7Vr3Hxof8
bQBZFTrR8/YbCZCRzTGwXH0J7HX3RmzVwibA48l5jsB/bNX4UX863+he5ydNxDLY5Yl2OCVn4Vzx
nWBZ9766Jvvdq6PTPELAsGdc57kbxhPXZshfMrBuRNyH1jhdPil3dc6TYQhn/fP06t1QwSn0UiJu
azSBKV0PjiGQ6sdrTXT7DRiroyS8fWPSUyYlkXjjN6ab9vVPV0GIGhsAqmJtRtZ0VuiXXYHd2qbB
xi6M8xt9042GYy5M4qf2ufnGcLP0SjmPQM5FE8FvgxiJ+p3mCWkfjR2gTl0POcIzF/vKsZ7fev4z
i6jJS9ZP+5LZRnoCWeo8tHls89lWZq/sXYHP3Kbm4nY/zS7tlFEGxlsXjwsu6TYUt89QiW/eGpR0
WjoFUA7iWom3T8jK+lnSjpqo65+s99V5lTyctparVRsWsEilDfR0nCA4iOcub5cLt/D//fwZuvYl
yEzUcxR/kyujKizP7DRug+52BdiYJQgunWjob7cv1HywN6Joe3f1gForjN1M7oSJ1xQmbzw98Gx1
sRH39IVOwHNqro1TOWWAEPpswD9duJKKTX69ngT+83VhP5joX1QJpHWrV6ZVG3PULmoo7kESGvwH
ycZwPZguhG588oMnz53qLiBGdoylxWXmP4eJ0uV7AArASI6PXDAxsywlEkiG/rK6/W4jGBcGqsml
AWZqs5qAG6VrjCUR2XeNfQNXXJxKF+rdQxf4WOYn3QRmVLtREzFDddH1DOkPbUdP9Phj+/tcBbyN
WCb8JIxN+VhY+5h5pfu1OlWfUG/iiGSRCt2HDHjQ8ooS5u1M8JjpU3Ja4FZlEO6/oWStXUZFGVEv
dlnakOW8bhxBAlZzu+u7zmmotCfcSZJosxIVkPh3eULdjNJyG0Ua67ppHsj7n3DvTwxuaTKBbJsj
dJ2LthR62Sb6hJh6/FMrpGgWyEzru3Gb1tuTS6ZLZRXm4iGoKXn22ysEwCfhN2lkFOyhSblcGy3x
f4J+GXsJNp9GKxwOtbvMjhlIUMwKOyZNzTXnbU06+OaJQ3zy5HbFJ+rlT0yIsjEXvkpavBhoOC3X
2fvlTRnzZTIVr2wmz7N99hRtfXQAcephfsHc1Veeh0DpN15iBLoNLQuQvpLkvqdcyj1cjhqrICq9
VCMWenUc230W0zsZKmsd+XQ/MME5wWdsjr8UbZiKShtF5PbeCzU+Ynv5zpltQy/XimeMUoovhl/u
traWrKPolLDPLHjLyKooFnxMP+7vYPfqMMBw+SM+LbzeQt7v+t5FYuLrogP+jXKmah+8kQDo4E1+
dWH3LtDGB8G3+JIaib3wxpXt/SmPMqKLa3wN0/3x9He0FI30YI+EcwtXDFWUoPwdzm4EWO7dDydO
3gbzpt/7zNwGoblrBZ98P9ZCbo2T9ULcUIVaOv609/wZe2SMmbsDZ5tHOqDcVDOXuHqjY7kaHJHR
bSQnR3xIOpG7rVfB5NeqTZQW2v3XXzp4FBmwg91d7pOlaDP5C2WYC5zK0bph/4NlCqHZBNll1ZN/
g0cA3r/+rrw1sCn0HYYSMeTiAQOOE1QR2SuoDUBMLpiMK2kFukr94UhvEzXowTnvE5JLmBaKWVrd
x2Vko8/w/Bx/lehgEZxlDdRpWfN60QSuJq/f2X8dX31eGDwsn+X668GOuBUTIjvcaciLJWrOwTg7
+JWandmsh1NAuLDBoG3qOYbpe1meqDWNM7FrZXWwqzwdmCnqdAM1vtgpdhO1JbM9wbZmRlTBhr72
DPZKiKk3yZSmF09nNZfwa+j1Pc1tI9W7H48zQ2V1Tj2462vQdU0oqNmMrBT4+RaWDeMd0YLFda/O
Kr329fldc44I2ooRim960jjjABc/2MRsTe/tq6fVMis98qrsnyC3BieyUK32FGj7/fkRt4Zk56xt
4RNnN73Bw1u1CMbwlDiv9N1Q9QT9XVhTseeCpVmq501l0Ao+bf4t4NLh29laxYz7qO13aVVxzxmz
vG+rm6RDlREfyOqzUP52SHvxscGB6cdzQ9Pr1K7cEs9vedYj6Z31v1dE0is+6JKqqnlTkbAKNKPn
w2dZZKDbM9eE0MUeb6xq68zAo8V0TGTrcnAuRciQ6arxeaI/8begayIn+o47I3i2bMG+dK4xJNb/
RoINaNaRn/u6f2UET6vdO2IHUnXleecMrFaq01LN/GO7VYz6CDPMkpKgMdNzeeQ+NkE3eFb2CXXS
MJE6yfSpGGRohHFTpp6fsxPVfIFbLx2sephEVuIBmr1LTbrk9KBGpF3wXHB9+5vRcGGmwyGc1uxN
NknrnfWvJztzN0e/deX+XYJ/PISlX0KUDpWHv+bYRZf1ROSSm6L39j5mo77VLNNK4LGePUHiEvUy
+q3iqQsyDlbi/vL3FK53/G1TTtmaXgxRVPRJkr0SpbsfG/asoMW2idvc8yyM8pL1PA18sDVbufGU
6MmqHgPbF+y6PBm9Nd8QKLyJtizl+/DLT98r/wXyV4Xx22pi2mOPot6XPcvVGVhz/lJHgCTcVrbP
/IR5/DvFexjC+HqTZPq3PmTR6LbOd0dmzJ49rQjxSlg5HHfHcdVgmzhuR9HvFWfFxGS/bb0L8HZ7
dRI6gGVzL0LxmOGmf+qfxk5f+7BbxrWKZsx/ler4KlZEbtUnBm2d0Tj5f521nJzaLi7hvmOHubvy
6wc/nMwol6g/kgArRR/84Tx+vLmFuZjjtmfAHyRG27ZZGtmc/+Fg/9X9++Kd431/ONPx2c5cjNLj
CPzhFISzhMTxQ8eHfpDUHtgXX1vjfOCHExaHRLZ/sdT9QbIg+tuCWv+ln5B+QvoJ6Sekn5B+QvoJ
6Sekn5B+QvoJ6Sekn5B+QvoJ6Sekn5B+QvoJ6Sekn5B+QvoJ6Sek//cgbQi1Hu12U9WYCRETfaws
7C5V/HHj/v8CUEsDBBQAAgAIAIGDGEm9jDbIAagBAI9SCgAKABwAc3RhdHMuanNvblVUCQADgi2+
V1Yovld1eAsAAQT1AQAABFAAAACs/VmTK0eSJoj+lZJ+nQbFbXe/b7l28kommUMyZ7rlSskRBOAR
gSICiAIQZ+FI/ffrZr6YmsP0MwN7RqZPHrLoClt0/XSx/+e/7a5X9d/+P//2//y368f7+/lyu272
57fN9v3w3evt7Rj+L5f++nG8XYe///9E89//zdn//m+mU1L8938T7fD/un//r//+b//t43TYnff9
5umwP2wOp+v5uL31m/ft5dqzlNpmoTQQGun86v/jzdN29+vL5fxx2m+uh9/6TfO12Ty9vbOUrI5r
ksP/U4HW7nzaH26H82k7fvRF7cL/bm+bZbeNbPJUh13q1lOVLlA0/g8b6Kbfd+z3xsXvdeP/EPff
C8H/fkN+vwtEMr8v+d8n32vr/3D33yvFfm9F/F7672XmewnW363PL/c9//uG/L6/C6G7zPk5/vcN
+d4w+xeG/16R711YxP33Db9+Rb43/vdNhn8ann8UOT8d/tCZ8+P3b8j+hecfmeEfwfOPJudv/Pc2
w7+K/94S/hPa/5HZv7D87+u1/MjM9/z5abfm39z9tfz5txXyI/nvjSW/75jfFzz/+Dtffl9x98/z
r4n8J/3+ZVZ++fM35Pwbv/8mt35+/5rsX+mgBDLnz+sPRfnP37/J8J/U/Pplxf01/PdKr/SPychP
w5+fsuv7y+xf8fs3RP6l/32Z0X8NL3+K7F/685MZ+VG8/TPU/nnTqjLfN7z+UUT+vC4XRmW+5/lX
3envQX/8l6fwfD7dNs/99vZx6TfX/nY7nF6um/Hfbnf95tKf9v1l+JesxzDxtt+iboT/Y/IZrtfN
5+3lsH069pt9/3w4BQ+CpyMXOsKvWYiRx46H0+AMXfrtr+Gr+I+b7cftvHn99v7an65ZsnqxvCPT
Es1PyBzP52u/ed0enze/bk9bjpJTCyXt7YmefAhC6Xq7HHa3SGpjOGJduxBTTecFtMkv6/0ynNzX
nt2fi4SEC6bVTbb1ntT5esO0XKSlGhf+bJk9XoNL+ba9/MqSE41Z6HXeg+lMUzh7/sCcjGsLEqzu
aJ3Ol7ftcbPrT7f+0u83kqM1esuBlpPS/6GZXZZpdZErTNCyk2Tfr6vIYK2NPCGN/8MyyyrepGji
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
gQ4y0FHGQ6ThFF0rqTUlv1ZueIOEA+xkCxkrsq0eugaQLzwdLPXrKzLyPdZqTd1C3rz841WzbNXo
UkP6Pz++Ln+BEoW/XYdh59+4rdff7/wvnx7H4/RXfw1htt3/C1BLAwQKAAAAAAAQgBhJAAAAAAAA
AAAAAAAABAAcAHN2Zy9VVAkAAxAnvleELb5XdXgLAAEE9QEAAARQAAAAUEsDBAoAAAAAABCAGEkA
AAAAAAAAAAAAAAALABwAc3ZnL2N1c3RvbS9VVAkAAxAnvleELb5XdXgLAAEE9QEAAARQAAAAUEsD
BBQAAgAIABCAGEnoch3OfwAAAI0AAAAkABwAc3ZnL2N1c3RvbS96ZXJvLWRhc2hhcnJheS1zdGRl
cnIudHh0VVQJAAMQJ75XECe+V3V4CwABBPUBAAAEUAAAAA3IzQ7BQBQG0L2n+F5AMy1KJiKRVmys
sBOLS7/QZHpHbqf+np7lOevhhmKKvPTO+UkBvvrcFVmIVwmoh+6xpza0o5GnmZuXizOWG7NoK49q
W0VNfKcD065V1tLfPVp9SmgbNH9BzOTjIQmB0idEJRjYURO64R8XQqOOv7SYjX5QSwMECgAAAAAA
BIAYSQAAAAAAAAAAAAAAAAsAHABzdmcvc3Ryb2tlL1VUCQAD9ya+V4Qtvld1eAsAAQT1AQAABFAA
AABQSwMEFAACAAgABIAYSWhvZdZ/AAAAjQAAACUAHABzdmcvc3Ryb2tlL3plcm8td2lkdGgtaGFu
Zy1zdGRlcnIudHh0VVQJAAP3Jr5X9ya+V3V4CwABBPUBAAAEUAAAAA3IuwrCQBAF0N6vuD9g2IT4
YBFBErGxUjuxGM1FA5tZmWx8fb0pz9kMdxQl8rl3zrsF+O5zV2Qh3iSgHrrngdrQTkaeZ26Zlxes
tmbR1h7Vroqa+ElHpn2rrKV/eLT6ktA2aEZBzOTrIQmB0idEJRjYURO6YYwroVGnP1rMJn9QSwME
CgAAAAAACYAYSQAAAAAAAAAAAAAAAAwAHAB0cmFuc2l0aW9ucy9VVAkAAwEnvleELb5XdXgLAAEE
9QEAAARQAAAAUEsDBBQAAgAIAAaAGEnzRROTwAEAAAQFAAAuABwAdHJhbnNpdGlvbnMvZGVmYXVs
dC10aW1pbmctZnVuY3Rpb24tYWN0dWFsLnR4dFVUCQAD/Ca+V/wmvld1eAsAAQT1AQAABFAAAACl
U9FO4kAUfecrbvChkIC5nVYdm+yDKLgmsCRgTIzuQ6HXdWLpNNNhKZL9d6dUSq2Cbmwm6WRy7jn3
3DlzPvw1Hva7MOiOx2eXXQ9CERGwU8eDni9CCkBLiP15QmCF9KAt0MqPEqGFjMAsCmlGkQZrIlOr
dv4fbO0FTZ6Ebq/5HqSa7aNmVi30l6TA19DAFjYhEc8EHDE9RqwBjCgKSN0IWuyA7CpnR6wo74Ry
+gSrn9eD/r+d0AIsgyWsOsOL2xzLW/wVe8LdlDnHa2yF+uLqZsPMEEv4Ar4puKZUw+pAm1+1F5c7
qc0LPEAGAjWPtriFCPRjBvSg3ju76kMb7uvZ/d3XIVYyJqWXYIZuTs10zeFm2IYBD48SoDSmqabA
A4cxmMw1JP7CAxexXmm0MzJTGOU9upwVXdrlHnd6souhOfZeUxkwd2WQZVfvcnTofmiSfd3lzNdK
pA27BbheZmOMm21zn/kTp2RnbWabuUo4SpHNg9FQFPpa/CWIZf4CKGi+iQtW6rfcjtEtZLOYvmf/
mNR43t5WXgh3kz9TGUr146DXQ/P9Lgm5yN8I2d+w8Vpf0kPkFT3esvG7ejZ+rvgCUEsDBBQAAgAI
AAaAGEncKce9dwIAAPgHAAAsABwAdHJhbnNpdGlvbnMvZGVmYXVsdC10aW1pbmctZnVuY3Rpb24t
ZGlmZi50eHRVVAkAA/wmvlf8Jr5XdXgLAAEE9QEAAARQAAAAvVTRbtowFH3nK67oA62CGyehkCJN
oqywVWvXCapW07oHQy6t1RCj5GaEVfv3OaQQSIG16zQUksg+Pvece2IzxsC8Vn48xsg8FSTMzk3f
vMHBJ0lPj3Ysfc/soY8iQtMXMxUTI4yIhRjFPkUmhSKIJEkVRKaHI6EHGcmxDO7YKA6G6QTDZIJD
Qu+QEioZhvF/qoohxcKf12y1gFlVm4Oh7za0WiXj/eXn/uV5By46/f7Jh04TfBkg2MdOE7pC+ugB
KZiIOEKo+DiiCuQ1QV9a3BgDgspAJZXX0bEpDh6kFpwSjlQ43sVtV0qgO4AhCIJ9XuUHEMmfCC7n
SZ3zEgD0MPAwvJY43YbZRmAf2TlB21fDB3j8eHVx/ms7dolW3gwe25enXzOwW3WfwA23lthOPQMX
yE/PrhfcNucrCzSewdqKK0wIHvdIP4pyasdOYrn5AoAUBWEc5MCp9Og+RTah/OWk3wcGt+U0yNsy
TEI1wZBmoJuvR3WX9eCi6ZqBHx5FEIkpRGqMdK+/Khj6SkdHqgmObZeLWts93YpeJrN2bC+FWmsy
t/qyFq2rc3e3sRSZOdPQVWfPvqnD2kaj9j90WueNXPrcqvHyCF1nbcGOCN00wu7J2fmrI1ycO3Mr
MIgptdqEGuflotS1BN1CgsbLE2w41m5feYIaumrsLQluMToWFMpk36oCn1/6RXvXrwc7/TccXsh1
5QAp7PPVEyjb4/sh+oLkD4SJyo409A7Wdj4vEuTsji69rJweOhv4N9Nq43lo2Ur4NrgbKl+F7/a6
Xa5/30tseyn9Lxn5dI27z6b/2ukTwYogzt25oLXOWvzNFS3+55q/AVBLAwQUAAIACAAGgBhJnIBW
fm0BAABFBAAAMAAcAHRyYW5zaXRpb25zL2RlZmF1bHQtdGltaW5nLWZ1bmN0aW9uLWV4cGVjdGVk
LnR4dFVUCQAD/Ca+V/wmvld1eAsAAQT1AQAABFAAAACtkk9rwkAQxe/9FEO8KKhM/jSuQg8VkRZa
WlSEUnuIZtRgzMpm28RKv3sTo0maGnuwuQSW37x5b/e51pYEWBKqWMca+M4nAUMMTcQrgAF5Nomx
Q0EJ4paMa9daOt51+WwFu7vR48NXKZrC3N7CrvvUe0lYVmcHtsWMUNPNPVuQ7t2Pj8oaYo5P8ePA
iEIJu4qMfkUvRlsPVZbyADEE4t3LuMCx5TIGO6A83w6H0ICJ4tJcThTYCL4hIbcw5yI6nfIwOiSX
1uTJWAGb1z74VgA+X5NcOt4CZi73CSTvgK5pSsFpdxBdwyAxabS11KaaN1kaSj3emonsbKoYTGJF
ZD5WI6DpypENKSzPjzKtm8bJlNr/xTSxlRnf58zqVehBrp1JB6qCXEs6HwQb7jvS4R7ZtR/NwMJ8
pq3rmKqrcSN/q58WjfJk75IMwut0MeMuFzeVfh+j7+3MIvWCGIf53D5EVtjH6ipeuk/Fvzd+A1BL
AwQUAAIACAAHgBhJy2rnXUkKAACWMQAANAAcAHRyYW5zaXRpb25zL2RlZmF1bHQtdGltaW5nLWZ1
bmN0aW9uLXByZXR0eS1kaWZmLmh0bWxVVAkAA/0mvlf9Jr5XdXgLAAEE9QEAAARQAAAA1Vv9c5tG
Gv7df8VOPBcnHYMASbYkO75J/NF2Lmk6cSadm7ubm0UsEgmwKiy2nFz/93v3Cy0IJBzLaeo2Afbz
eT+fd9ft6Zwl8dne6ZzgAB4JYRhN5zjLCXtxULDQGh1Ac87uYnK2N4mj9NMhmtxEecRIgL7sIfhh
ZMmsgExphllE0wlKaUpORJdPs4Bklk8Zo8kEuYslCuCdBCd7f+zJ5dQiUxrTbIL2nf5Y9NlXUUwu
ojBU/T6efppltEgDSw8NR/wfcyO5Q07jKED7QRDIvpCmzApxEsV3E5TQlOYLPFUAE5zNIoDskgQ5
smlBQTghR0ZikOiGCEBzt4a03+83rJ/jNLdykkWh0ZlHn4nYw9zUiknIJsixh7o9iPJFjGGRKAXN
KIS3UcDmMNlx/qbw4SCI0lk5U2JTpuFvVesouFE6B1CsHD6nNySrSTQcDk/alE2IVIPNbfIa9srV
5DCmGMTIotmcVS3HR52D+Bhk0VtRUH3EQESnJjLDfkysKYnjipSWWLeipds5SGcJG3JXu83wYoXs
mky57VqdRkyuukzdXZTPar2DQzmLpdzhcrkA88L6IBo5RDZ/1CVshZdHAfHv+N9IQH0V0+mnX3HG
bBB1EkZZzqzpPIqDVsXy7a5h/uGmxTKSgGkPt+yn9tDqlw5n+XxIxe2G2uvAW1g0xbGF42gGscFo
g1gZ4Z7+E06DmGh1qHW4Cvn3nEiDrvx5WmQ5Nw2HXY9A7IN1Cm0x2LN0HBk8At4mFBU/X3eHWUbu
TmqOaQ+32UuqGNmMblWzHWY0qSlb5Ue+B9f6L0Xikwy8iZjeJVs18PU0qrx2PK4kQB0uTWlQR/Jg
MGhMN6b1yxzDFxrKEJBhUCZ85QfKPZtcRMKtuFNfJSxDcCFiY8KRJNGqlg1JapHx6OQwlQJ1NlFe
owWpxCpMsmS0ii7Qp/gEOTKCP1m8QQKKEjwjFctMkFcq3I8x1yIfOIXUABgAinpDdblXVhkNxq25
NyThKgFwt4IVS3o0orlhahAG1alg7Lx9+JiMTzZxermSyjImDhUV7XQdBGsLoIDE7TPIeCua3g/o
ulgsaMaAaTPlyaDUJCEpy9EPPdgPF2xOpb4lG/NiBryegZ9OtaXEBDGmhf/LMRwMBpcQg3U6O9KO
zdMNjuNzjaBxtCe5LMFLq0bvCdQFqslzSt6pbw1637hPGdllSFe2acJp0wWRtGndEv9TxCyW8bCT
mpDAke3lJ4YYAyX0fs4wK/JXhQ8cXvKhzaOnEQ6fwiiNfZxV+/XWYUxEhK46Evq5bC2TU1/Gsaqj
+KuuFvh7e0nYljk2lnIrtwijJZHrqHzsVEWysahBZJits/htBLkgq7laueZnK0oDsoQktUG0FREa
EJrkUsmoQm8jlcVSDlMFbCM1wX4+XW4FerQC6kon1iQkvwRY9V4ymPosAZeVWWXrKMxwIhHW4qRa
Rhgxct6Sadd1cwe1Jr1VXE9iKByhZu5ATEfjq5V7KU5u6RSKqPaVZWSwXh5Xi2O1hlTfug+3lgSB
zrNym5c6KeijjmP2vtccWTuTHB3rhLYOc0OQGKedPMGyljdzbkozaD5pyTJKfl6C5U2bSzl0XDtN
Q2Lsk3iCQ4iww7Xpsl0sIgg5BVGfoP+hJyd7JREb9F2fHWOo0GlosbsFaVzqSSsiNbB2xJ2TWCTI
shjFvBht4aj9hOS5Ljxa9dxkFiM6rkWi7kKFQDFQEN1EtMjPyxYoZj+T9Nwgyyae1yVHnWJMcuG5
HLxWeILO7epbeaJKIn3NgZ3QKNeAGocwHhMVulBlX0vRZ/KsX0BUpWbe0fweRDeTkE6VDmnBeL4w
w8+PC8Ekqgv8JQQswGCuFsQkS7EK1DDv50Tu1FNMOwP8XAZGEYM+X45WrpajmwjznMzeKJ8AsH5G
b8HgUAnMMcxVRVHEbF4ElXIMhqqKL0sR9a2zAy9k+R+nSqL6Sqde4ydRAKcsKRg3UK4P3w2MAnUY
zfEN6B40QGq8Yp701qjOcu2+LJlWlx+a/RtssH9xcWGE9P7o6uJqeNWYn6C4bPbiy8vLJtQTkiwg
Q1WMr8q02kgbXgFpJfIvxyNnpPLWNCY4+68oD/RRgLeIY9OcDzntqVu303yaRQuwaTZ98WTO2CKf
9Hr4I17aM0pnMGkR5dx1RVsvjvy89/H3gmR3Pdce2J76sKG0tD/mT85gXbHeGaquPKUBsbgNyS2M
+ztYmhvzxWBkTAFQ6qLQp8EdPCAeADfO8xcH+iTA7wvn7lnvA9gTclbvAjPcu/ztuvcb8f8RMfV4
VURx0HsHvItz0gNPAXVajECGheN7EbO8t2KGvBeQEEOjxaKEH+PCIhUllgUlTIFjmy0ZAHOreIzr
oIP1HnFMb2vnx3cEnlbr5wcXVL3zUYMgm6R6lDjxr8qIg7OnqZ8vTkCHMOisMhSi2xzoNo4Bhj44
O3/7y/Xb15fozeX19csfLydiHvLG/Qm6wqD4gGeKBS5ygp7uA79wHhcvaKVGniVA3yLDiT4oscRT
bQvGBWG/rcje7kSuVBRwGEy6yO81KkA8TDUYwXpwprrXldXNr/I5nNO2u9ZWHbsd1NtvVy+EHDcm
Q8+cQ+c54kkRjRxneeQ49/KHrTi9DjgH7TgRekfgoJF9gLz0LeD2O8Ad3l+t3tDbLc5BB5xH29Uq
/BJ9+en9m9d/fAvYww6wjzfBLoEDAaEvr95e/FPiHh2OFO7j0WDp9Y92i/uoA+7RZtw1lV/8/EFr
3HMcA/s69EfNR/ImbjvVrcZtVNRxB0VtoAdDW1pf8oy6z7vqLjo4DUh8NgbZ4dFfuqP7UVlHkUY7
FEleZqKsSFeiiNq8JssEPf29oOxENP4qG8X7y+tr+YUs9G85hpO9eoUDDV1AjX4nrkNVI/Cc7tb8
B3vzUzYSS+b4FirnxNiEGO9szsvYaUxzcwCQr/yEI5rnKayPofzxzv3p1TvIG++kK1WU7pV+5T6W
K7nOtwgPV6dCId2RM5LyPZpQ7mMGCBdGRkhVmvtEyFptaA+2BIz3140Y13vUkJFWMCRzjuXHyu2a
wmeNw/7s09Z4J/wTpTnnB/64P//s9vToPIx9TEnK2OJfV7JRvL/8+bX82g378JXIckGmxhbMeCeB
/BAhI1r43RyC8JugAa/8edPXhNJuNe9+HfUYGn8I9exWFm8nvMNlOu67Urg/WaL+w0inIsp9AmOX
pPOQQEkwy6LlM/cQOeJfeIHYgdfn30v8DL6Kh6RhDCWofHBPHvou73a63EK4na4haufiXV+XuF3u
IdzOFxHP9H9zUf5qgATPK2dl51Gl6XI94R530Xu/75Sad/lNys6xdrmScEedNd+scEgnK2qSYqB/
+TPxG40X+1dXDvz85698X+Hu4sJiZXZREff7ZnmsqmPTGdx1Z/ju6mN33ElennEHZhJWFc295f0u
83CXqx/P2X12U0ozQs1xRk2h9kD5utyueG43nnGdLSZ/4O8RulydeN7ubOE697bGfZy69hC/UD3t
yf8d4/9QSwMEFAACAAgAB4AYSbhb7F2xAAAA7wAAADQAHAB0cmFuc2l0aW9ucy9mb250LWZhbWls
eS1kdXJpbmctdHJhbnNpdGlvbi1hY3R1YWwudHh0VVQJAAP+Jr5X/ia+V3V4CwABBPUBAAAEUAAA
AGXMwWrCQBSF4X2e4pBNNgqNoqWzkxKrYHWRJ5g0J2QgzoS5Nyb69A0u3Ahn9R/4vi/n8nIq8FuU
5e6nMOicJ1Zfa4O9dR1raEBvByGyJnhdinswg0brxakLHvPY8UqvyKowZcmBkXACCVdCOSneU7Lf
HU9YIn2ZKfoYeka9owkR6UylL9gqcgGnnn/K2iDfoBoUYkeD1ccTMxhdrS1GK/O9XUDaMHQ1Wnsj
KtIjzz+Tf1BLAwQUAAIACAAHgBhJEOejtzkBAABrAgAAMgAcAHRyYW5zaXRpb25zL2ZvbnQtZmFt
aWx5LWR1cmluZy10cmFuc2l0aW9uLWRpZmYudHh0VVQJAAP+Jr5X/ia+V3V4CwABBPUBAAAEUAAA
AL2RQU/CMBiG7/sVb3bZYdQ5FI07gTrUiGJcIueOfUiTbl3WrwL+egsIXrx4MWnyJd+bPs/bVAiB
5M1oV5NNbiXLJJ8VyYzKR8Xf49opXSWvpElaSrTcGMeCybLoyDrNNuFONlaxMo1NFqZhsZC10htR
uU417+InFrRuac5UnfCagziO/9Mt5+yk3pmHQ4i0d4447Q0wHAbxzfS5mE5yPOVFMbrLM2jVEPpX
ZxnGUmmqwAatdJYQ7SxWfVKEHzr88S1rahhRadZRgHvqCMrCmprAtGb8sgvEy6goIBAesSHazrTU
8QYL0yH0tPDIlozUX5erHYKX/o2Ya+N7scmQDva8DCtV8XJrOoSYe35ndBCPRw+TvwoP/7ZVoHS8
bZChf7qnHXQraX1+0YNdGqcrLOUHoSRqkKaXwRdQSwMEFAACAAgAB4AYScMxzW1xAAAAlAAAADYA
HAB0cmFuc2l0aW9ucy9mb250LWZhbWlseS1kdXJpbmctdHJhbnNpdGlvbi1leHBlY3RlZC50eHRV
VAkAA/4mvlf+Jr5XdXgLAAEE9QEAAARQAAAAXc29DoMwEAPgPU9hZWdgYGHrxliJJ+DHlEghhy4n
AX36pkhdutry545KhIwsG2E8Da77j9zz0feo4BdJVuXwpseuslPtwiIKP8rpwciNyTAY6rIejluw
NaQXpii5YNKibm6uxRFmW78/vw5T4VWi+wBQSwMEFAACAAgAB4AYSTLdtR5tCAAAHh0AADoAHAB0
cmFuc2l0aW9ucy9mb250LWZhbWlseS1kdXJpbmctdHJhbnNpdGlvbi1wcmV0dHktZGlmZi5odG1s
VVQJAAP+Jr5X/ia+V3V4CwABBPUBAAAEUAAAAMVZa2/juBX9nl9BTNAJsIhkO7azsZNxMZPHbtHZ
B+pF92NBSZTFCSVqRSp2pu1/7+VLpmTJSdptO8FE4vs+zj33UrnJZM5WJzcZwQk8ciIxijNcCSI/
nNUyDa7OoFvIZ0ZWJ0tGi8dztHyigkqSoL+fIPgnyU4GCYl5hSXlxRIVvCDXeijiVUKqIOJS8nyJ
JuUOJfBOkuuTf56Y7ewmMWe8WqLT8XShx8IHysgdTVM7HuH4cVPxukgCNzW9Uj/+QeYEwRlN0GmS
JGYs5YUMUpxT9rxEOS+4KHFsBcxxtaEg8oTkaGy6Sg7KaT0qwkCjJ6IFyiYdSafTac/+AhciEKSi
qTco6Feiz/APDRhJ5RKNw7nrT6goGYZNaAGWsRJuaSIzWDwe/8HKh5OEFptmpZHNuka9tb1jxaVF
BkLJZnrGn0jV0Wg+n18PGZsQY4ZQ+eQznCXs4pRxDGpUdJPJtufUrFtQH4Mu7igOpqcSVBx3VJY4
YiSICWMtLQO9b8tK2wy0C7QPFdS2FS73kq1JrHw3CBq9uA2ZLlwsZp3dAVDjcmdOuN+V4F7YH1Qj
5yhUj66Gg+IJmpDoWf1GWtRPjMePP+NKhqDqMqWVkEGcUZYMGlYdt4b158c2q0gOrj1/4Tx7hjO/
AVwQqSkt2M0d6gAtksaYBZjRDcSG5D1qVUQh/XtcJIw4c9h9lAlVOyPGoXs8x3UllGuU2N0IxBF4
p3YegzMb4Jjg0eIdk6KF80M4bCryfN0BZjh/yV/GxCiU/EUzh2nF846xLT+qM5TVf6zziFSAJuKj
y/Q6wQ9p1KJ2sWgRoAuXPhp0kTybzXrpxvd+wzFqo7kJARMGDeFbHFh49kHEiNuC09QSlqe4VrGX
cEySGDTLEZIqKxWdSkxrQMcmFjVOkVaswqLARKseAnvqJuhREfwYqA4jEM3xhrQ8s0QXjcEjhpUV
1cQYqAFkAFHsG+rqvffK1WwxyL0pSfcEoGAFOzbp0YvmnqVJmrSXgrPF8PQFWVwfy+nNTpZlfDls
VAyn6yQ52AAlhA2vIIsXpRl9g9Z1WfJKQqatLJLBqHlOCinQNyM4D9cy48beJhurYgZQLwGnsfOU
XqDnDOT/Zo4SBgMk9GRHZ5cO2IpuMGO3ToLe2Rcml+V4F3TSew51ge26GDd5p3s02P3oOU1kNyHd
OqZPzpCXxKTNYEuiRyoDWamwM5YwgqPwQlx7asys0qdCYlmLT3UEObzJh6GKnl5x1BLJOYtw1R53
R6eM6AjdD+T8a9PbkNPUxLGto9SrqxbU+3BJOMQcR0u5PSxSuiNmH8vH47ZKIdY1iAmzwyy+pcAF
VQdqzZ5fA1okZAckdUS1fSL0ROjTy5JRK71dWRYrlJg2YHtTE5wX8d2Lgl7uBZ0YELskZFpaWPve
ZDDbbARuKrPW0TStcG4k7MRJu4zwYuR2gGkPbfMMtSbf2lxPGBSOUDO/IjFdLh728LI5eWBQG6I9
1pSRyWF53C6O7R7GfIcYHiwJEsez5piPjhTcVWfsj/7icmTnTnL5rSO0QzGPBIl32xE5NrW8z7kF
r6D7eoBlrP6qBBN9hxs9XFyP+6YwHBG2xClE2PnBctOvN9EJuQBV36F/oHfXJ00i9tJ3dzXDUKHz
NJDPJend6t2gRHZi54qbEaYJsilGsSpGB3LUaU6EcIXHoJ373OJFx1oT9WtSIaQYKIieKK/FbdMD
xexXUtx6ybIvz7uSo5ti/OSiuBxQq5HguN22LRItiUxdDnyVNBYaUOMQqWKilS5s2TdQ9Pl5Nqoh
qgqfd1x+T+jTMuWxtSGvpeILP/wiVutMYocALynIAhls4hTxk6XeBWqYXzJiThrZTLsB+ZUOkiMJ
Y5GZbaEm0BPFipPlDxYTIGxU8S04HCqBDMNaWxRRGaoiqNFjNrdVfFOK2LZjB1XIqv/jdhJ1n3S6
NX5OE7hlGcWUg4S7fPdkFKjDuMBPYHuwAOnkFf+md5Dqgkk4NSXT/uOHy/49Pji9u7vzQvr06uHu
Yf7Qy09QXPaj+P7+vk/qJclLYKiW822Z1pkZwitI2or8+8XV+MryVswIrv6mywN3FVA9+tqUqSk3
I/vV7UbEFS3Bp1X84V0mZSmWoxH+gnfhhvMNLCqpUNDVfSNGIzH68ltNqufRJJyFF7YRQmkZfhHv
VrCv3m+F2jvHPCGB8iHZwrw/gqeVMz/MrrwlIJT9UBjx5BkeEA8gNxbiw5m7CajvhdlkNfor+BM4
a3SHJR7d/7oe/UqiP1NpH59qypLRXyDvYkFGgBQwZyAJMCxc32smxWifGcTI47YgqSt1ldsPB1DI
1JiFcidBvElbKu+j0NnhiL6sD/WrSzwCvHXG1fUFtb/82EnAKYWbpe/9+2LibPW+iER5DZaESavW
VIhxf+Kkdw7k6bPV7U8/rn/6fI9+uF+vP353v9Tr0MViukQPGMyfKL4ocS0Ien8KWaaBu26hvckU
YYDpNdnpMai29NOeDX4Gjd3D196D7dnKDtu5b7atyODG8rJ5XzTt5BVWvRi26vekIogKIA+oNXXx
2LXCfybexSvEm75BvP+pj8w9/eUQ2M87aovpK2xxJFK0QW4SwlY/g0bw0O8f12vTQgF6/1vNpQd8
3YQ0D9fbCohbfSQwfQrxZtAFAhDxRCC9o8BbZW/vDOK9y0wRe8y48CdA7JkmpKL5mxD0WuPN/qvG
W5oawRiAejMEir3WkNa6qSuUijPb9RJQ/99UOztiJ6ghVw83I/XQ7x//9Nm0fheQqY3IriSxd4L0
3kliGhpL+lSoSaGq36qKzc57E8R+V7vN/x27NfhSjS32pghQ8vIc0gGvvV6WoAw/+TZBESGF14Em
k2/7bfEWSuw8dGEDdYT+s+i/AFBLAwQUAAIACAAIgBhJyuzSEMAAAAAfAgAAOQAcAHRyYW5zaXRp
b25zL2xlbmd0aHNpemUtdHJhbnNpdGlvbi10by1mcm9tLWF1dG8tYWN0dWFsLnR4dFVUCQAD/ya+
V/8mvld1eAsAAQT1AQAABFAAAAC1z7sKwkAQBdA+X3FJs41CHqQwXZAoQnzAfsGajHEx7obdCT6+
3mhhYaWFMM0U93DvfLuR26rEupSyWJY5Om0IySzNsVC6owZs0avBE8Re1afW2cE0U6/vJMBOGa9Z
W4PxqKMzGYZg8hyLYP4nOvkfnYpgUawqTBF+xEL0zvbk+IaDdQhfG8N3WjFiD7r2VDM1ObJsEkfY
DwyvLjniKBr/YFdI+aWdfNqjA2/PxEdtWtSdHbexfdK/sOn37LNw8ABQSwMEFAACAAgACIAYSbhA
4QkuAQAAkQMAADcAHAB0cmFuc2l0aW9ucy9sZW5ndGhzaXplLXRyYW5zaXRpb24tdG8tZnJvbS1h
dXRvLWRpZmYudHh0VVQJAAP/Jr5X/ya+V3V4CwABBPUBAAAEUAAAAL2SUWvCMBSF3/srLn3pQ81i
dTLWp7qtjjE3xwrzObZXDUuTktww3a9fK4qwJx04CCSE5Dsn54QxBvzDKF+j4w+CBM/nBZ/j4lnS
frrzUlX8HRUKh1yJrfHECB0xi84rcpys0E6SNNpxhXpFaye/kR23GRm2tKZmwrcr3DRYElZXtKEg
juN/NyBK8kLt5LMMWNK7hjjp3UCWBextXBTAIFyI8nNljdcV61ghNNY0aGkLS2Mh7OSTEFpPNWoC
QZA4cOILnKmR1lKvoFTGIZBJYTTqJf0gvp+9FrNpDi95UYwf8xSU1AiD22EKEyEVVu1haIRvb0W/
5CM4vgXacdCNdj6iy7EHF2QPW/Zk/DT9a9yHf7QPGBaeugpSSPr9LnA4o8vBqV2eyR2ezt1ZDn4A
UEsDBBQAAgAIAAiAGEnvoKWXagAAAAwBAAA7ABwAdHJhbnNpdGlvbnMvbGVuZ3Roc2l6ZS10cmFu
c2l0aW9uLXRvLWZyb20tYXV0by1leHBlY3RlZC50eHRVVAkAA/8mvlf/Jr5XdXgLAAEE9QEAAARQ
AAAAlc5BCoMwEAXQfU7xydpAU3HTXW8geILUjlFqMpKZIvb00hvECzxe/xwGONhXGD+x8De/nSw/
stgKb1T0wMQFVknUW9BKibIiKLxAwg7hRDovOWJcWQjKD3Rd42+mr5fvtfI1tq1n/2FzAlBLAwQU
AAIACAAIgBhJA9l9kBwIAACNHQAAPwAcAHRyYW5zaXRpb25zL2xlbmd0aHNpemUtdHJhbnNpdGlv
bi10by1mcm9tLWF1dG8tcHJldHR5LWRpZmYuaHRtbFVUCQAD/ya+V/8mvld1eAsAAQT1AQAABFAA
AADFWWtz2zYW/e5fwbGn8UzHpN6uJSXaSWx5d6fpY1ad7ccOSIIiYpBgAdCSs93/vhcviqRIWZ22
m2YakcAFcJ/nXDBvU5nR1cXbFKMYfjIskReliAss312XMvHvrmFYyBeKVxcLSvKnG2/xTASROPb+
c+HBfxLvpR/jiHEkCcsXXs5yvNRTIeMx5n7IpGTZwhsVey+GZxwvL/57Ybazm0SMMr7wroaTuZ4L
HgnFDyRJ7HyIoqctZ2Ue+040uVN/6geZEwSjJPau4jg2cwnLpZ+gjNCXhZexnIkCRVbBDPEtAZVH
OPOGZqhgYJy2g2MKFj1jrVA6amk6mUw69hcoF77AnCS1SUE+Y31G/VCf4kQuvGEwc+MxEQVFsAnJ
wTNWwx2JZQqLh8OvrH4ojkm+rVYa3Wxo1FMzOlZdkqeglKzEU/aMecui2Wy27HM2xsYNgYrJRzhL
2MUJZQjM4GSbymbklNQ9mI/AFncUA9cTCSYOWyZLFFLsR5jShpW+3rfhpV0K1vk6hirVdhwVB802
OFKx600avbiZMu10sTnr/A4JNSz25oT1voDwwv5gGr7xAvXTtrBXPUFiHL6ovz2t6gfKoqcfEZcB
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
aHRDOV1IM8TBtDMxCUaijUo5+6cp2x9C3fHo19DOjFabGDas/lsWitIUVPIVJ1PCuh9kPdckw5l6
Fagt6MiU+ph5Dg41o5KND9dxBuQj4X/i81MvSPcTufB60RuC7xLHeJMbUEsDBBQAAgAIAAiAGEmy
g2RjTwEAAP4EAAA1ABwAdHJhbnNpdGlvbnMvbWluLW1heC13aWR0aC1oZWlnaHQtdHJhbnNpdGlv
bnMtZGlmZi50eHRVVAkAA/8mvlf/Jr5XdXgLAAEE9QEAAARQAAAAvZNNa8JAEIbv/orBSw5xzUcJ
Yk6xbSyl9oMG6nk1U7OwyYbsBOO/b5LWBgu2RqSwMJeZZ96ZeZcxBtabkmWK2rrlxK1wGVlLXD0I
+grXpZCx9YoSuUZL8p0qiRFqYgXqUpK2qOCZFiRUpq1UZCzlFduKmBKWoNgkdXaXwLDKcU0Yj6mi
gWma/9yer6nksm0eBMCckQemM5pCEAzYyyyKgMGwgXyWDiEvVI4F7eBdFTBcqcoZQq0lxYyAE9hj
T4PmW9AqRUpEtoG1VBqBlA+OZx9CW1WXZNaTHhXqng6deIfMYzr7Ic2b56foeRHCYxhFs7vQByky
BHd65cOcC4lxnQk5L+sSo9u5Ad29oH77jkazKKM/tR3motDvrf9Gdc+g/im1gc5n94tzXLr/eK2H
YFVSczsfXNs+ZPYw6UnInh7tmBOvQ3o/iD0cehQIgw9QSwMEFAACAAgACIAYSYJgVc5xAAAATQEA
ADkAHAB0cmFuc2l0aW9ucy9taW4tbWF4LXdpZHRoLWhlaWdodC10cmFuc2l0aW9ucy1leHBlY3Rl
ZC50eHRVVAkAA/8mvlf/Jr5XdXgLAAEE9QEAAARQAAAArc5BCoMwEAXQvaf4ZG/RQhC68waCJ0jt
mASSjCQD2tu7bReCghd4vKEfR9RQ0afakbdOFJbMC2X5YuYM9eatVaBAkZLACJqHLihmReFI4nyy
mAIXgvALrW6q4cdc/UfcjaTZjpvP82an/8ij5TWx2gFQSwMEFAACAAgACIAYST1dYlJXCAAAWyIA
AD0AHAB0cmFuc2l0aW9ucy9taW4tbWF4LXdpZHRoLWhlaWdodC10cmFuc2l0aW9ucy1wcmV0dHkt
ZGlmZi5odG1sVVQJAAP/Jr5X/ya+V3V4CwABBPUBAAAEUAAAANVaa2/bOBb9nl8hJNgGGETyO/Wj
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
ABgAAAAAAAEAAACkgUw0AABfd3B0X2NlcnRzL3NlcmlhbC5vbGRVVAUAA1smvld1eAsAAQT1AQAA
BFAAAABQSwECHgMUAAIACAAQgBhJupc2wNNzAQDZ/Q0ADgAYAAAAAAABAAAApIGiNAAAYWNjZXNz
X2xvZy50eHRVVAUAAw8nvld1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAABkgxhJAAAAAAAAAAAA
AAAADgAYAAAAAAAAABAA7UG9qAEAYWNjZXNzaWJpbGl0eS9VVAUAA0stvld1eAsAAQT1AQAABFAA
AABQSwECHgMUAAIACACBgxhJVSZ+hHJFAADkDgEANQAYAAAAAAABAAAApIEFqQEAYWNjZXNzaWJp
bGl0eS9jYW52YXMtZmFsbGJhY2stY29udGVudC0yLWNyYXNoLWxvZy50eHRVVAUAA4Etvld1eAsA
AQT1AQAABFAAAABQSwECHgMKAAIAAABkgxhJJw23pS0AAAAtAAAAKQAYAAAAAAABAAAApIHm7gEA
YWNjZXNzaWJpbGl0eS9tZWRpYS1lbGVtZW50LWNyYXNoLWxvZy50eHRVVAUAA0stvld1eAsAAQT1
AQAABFAAAABQSwECHgMKAAAAAABogxhJAAAAAAAAAAAAAAAACwAYAAAAAAAAABAA7UF27wEAYW5p
bWF0aW9ucy9VVAUAA1Mtvld1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACACBgxhJ5Asd7i8+AACS
8QAAOAAYAAAAAAABAAAApIG77wEAYW5pbWF0aW9ucy9hbmltYXRpb24tYWRkLWV2ZW50cy1pbi1o
YW5kbGVyLWNyYXNoLWxvZy50eHRVVAUAA4Etvld1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACACB
gxhJdM1kA/RBAACeCAEALgAYAAAAAAABAAAApIFcLgIAYW5pbWF0aW9ucy91bnByZWZpeGVkLXBy
b3BlcnRpZXMtY3Jhc2gtbG9nLnR4dFVUBQADgS2+V3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAA
AFyDGEkAAAAAAAAAAAAAAAAMABgAAAAAAAAAEADtQbhwAgBjb21wb3NpdGluZy9VVAUAAz8tvld1
eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAAAhgxhJAAAAAAAAAAAAAAAAFQAYAAAAAAAAABAA7UH+
cAIAY29tcG9zaXRpbmcvZ2VvbWV0cnkvVVQFAAPOLL5XdXgLAAEE9QEAAARQAAAAUEsBAh4DFAAC
AAgAgYMYST5ij9oVQQAAXhABADsAGAAAAAAAAQAAAKSBTXECAGNvbXBvc2l0aW5nL2dlb21ldHJ5
L2NsaXBwZWQtdmlkZW8tY29udHJvbGxlci1jcmFzaC1sb2cudHh0VVQFAAOBLb5XdXgLAAEE9QEA
AARQAAAAUEsBAh4DCgAAAAAAXIMYSQAAAAAAAAAAAAAAABsAGAAAAAAAAAAQAO1B17ICAGNvbXBv
c2l0aW5nL2xheWVyLWNyZWF0aW9uL1VUBQADPy2+V3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAgAA
AFyDGEmQ8oHxLQAAAC0AAABJABgAAAAAAAEAAACkgSyzAgBjb21wb3NpdGluZy9sYXllci1jcmVh
dGlvbi9zY2FsZS1yb3RhdGlvbi1hbmltYXRpb24tb3ZlcmxhcC1jcmFzaC1sb2cudHh0VVQFAAM/
Lb5XdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAANoMYSQAAAAAAAAAAAAAAABUAGAAAAAAAAAAQ
AO1B3LMCAGNvbXBvc2l0aW5nL292ZXJmbG93L1VUBQAD+Cy+V3V4CwABBPUBAAAEUAAAAFBLAQIe
AxQAAgAIAIGDGEm7+i3eTEEAAHsFAQBOABgAAAAAAAEAAACkgSu0AgBjb21wb3NpdGluZy9vdmVy
Zmxvdy9hdXRvbWF0aWNhbGx5LW9wdC1pbnRvLWNvbXBvc2l0ZWQtc2Nyb2xsaW5nLWNyYXNoLWxv
Zy50eHRVVAUAA4Etvld1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAABcgxhJAAAAAAAAAAAAAAAA
FAAYAAAAAAAAABAA7UH/9QIAY29tcG9zaXRpbmcvcmVnaW9ucy9VVAUAA0Atvld1eAsAAQT1AQAA
BFAAAABQSwECHgMKAAIAAABcgxhJlO+cEC0AAAAtAAAAOgAYAAAAAAABAAAApIFN9gIAY29tcG9z
aXRpbmcvcmVnaW9ucy92aWRlby1pbi1vdmVyZmxvdy1yZWdpb24tY3Jhc2gtbG9nLnR4dFVUBQAD
QC2+V3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIADN/GEkz2gAjvgAAAPIGAABFABgAAAAAAAEA
AACkge72AgBjb21wb3NpdGluZy9yZWdpb25zL3dlYmtpdC1mbG93LXJlbmRlcmVyLWxheWVyLWNv
bXBvc2l0aW5nLXN0ZGVyci50eHRVVAUAA2Imvld1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACAAi
gxhJy5vBHawAAAAUAwAAPAAYAAAAAAABAAAApIEr+AIAY29tcG9zaXRpbmcvc2hvdy1jb21wb3Np
dGVkLWlmcmFtZS1vbi1iYWNrLWJ1dHRvbi1zdGRlcnIudHh0VVQFAAPQLL5XdXgLAAEE9QEAAARQ
AAAAUEsBAh4DCgAAAAAALYMYSQAAAAAAAAAAAAAAABIAGAAAAAAAAAAQAO1BTfkCAGNvbXBvc2l0
aW5nL3ZpZGVvL1VUBQAD5Sy+V3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIADJ/GEl4CBQnjQAB
AGAgAQAjABgAAAAAAAAAAACkgZn5AgBjb21wb3NpdGluZy92aWRlby9wb3N0ZXItYWN0dWFsLnBu
Z1VUBQADXya+V3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAIGDGEn8Kcq7dEEAACYGAQAmABgA
AAAAAAEAAACkgYP6AwBjb21wb3NpdGluZy92aWRlby9wb3N0ZXItY3Jhc2gtbG9nLnR4dFVUBQAD
gS2+V3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIADJ/GEnqGHrEeQAAAIcIAAAhABgAAAAAAAAA
AACkgVc8BABjb21wb3NpdGluZy92aWRlby9wb3N0ZXItZGlmZi5wbmdVVAUAA18mvld1eAsAAQT1
AQAABFAAAABQSwECHgMUAAIACAAyfxhJZ8QkCIkFAAAOEgAAIwAYAAAAAAABAAAApIErPQQAY29t
cG9zaXRpbmcvdmlkZW8vcG9zdGVyLWRpZmZzLmh0bWxVVAUAA18mvld1eAsAAQT1AQAABFAAAABQ
SwECHgMUAAIACAAyfxhJrMJPXAwBAAD9AQAAJgAYAAAAAAABAAAApIERQwQAY29tcG9zaXRpbmcv
dmlkZW8vcG9zdGVyLWV4cGVjdGVkLmh0bWxVVAUAA18mvld1eAsAAQT1AQAABFAAAABQSwECHgMU
AAIACAAyfxhJOmw5uqYAAQCAIAEAJQAYAAAAAAAAAAAApIF9RAQAY29tcG9zaXRpbmcvdmlkZW8v
cG9zdGVyLWV4cGVjdGVkLnBuZ1VUBQADXya+V3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIADJ/
GEn6zpMFrgAAAN4DAAAwABgAAAAAAAEAAACkgYJFBQBjb21wb3NpdGluZy92aWRlby92aWRlby1i
b3JkZXItcmFkaXVzLXN0ZGVyci50eHRVVAUAA2Amvld1eAsAAQT1AQAABFAAAABQSwECHgMUAAIA
CAAugxhJ1ImUUasAAAAUAwAAMgAYAAAAAAABAAAApIGaRgUAY29tcG9zaXRpbmcvdmlkZW8vdmlk
ZW8tY2xpcC1jaGFuZ2Utc3JjLXN0ZGVyci50eHRVVAUAA+csvld1eAsAAQT1AQAABFAAAABQSwEC
HgMKAAAAAABbgxhJAAAAAAAAAAAAAAAABwAYAAAAAAAAABAA7UGxRwUAY3J5cHRvL1VUBQADPS2+
V3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAAFuDGEkAAAAAAAAAAAAAAAAPABgAAAAAAAAAEADt
QfJHBQBjcnlwdG8vd29ya2Vycy9VVAUAAz0tvld1eAsAAQT1AQAABFAAAABQSwECHgMKAAIAAABb
gxhJTFqI9i0AAAAtAAAALQAYAAAAAAABAAAApIE7SAUAY3J5cHRvL3dvcmtlcnMvY3J5cHRvLWdj
LXdvcmtlci1jcmFzaC1sb2cudHh0VVQFAAM9Lb5XdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAA
XYMYSQAAAAAAAAAAAAAAAAUAGAAAAAAAAAAQAO1Bz0gFAGNzczMvVVQFAANCLb5XdXgLAAEE9QEA
AARQAAAAUEsBAh4DCgAAAAAAXYMYSQAAAAAAAAAAAAAAAA0AGAAAAAAAAAAQAO1BDkkFAGNzczMv
ZmlsdGVycy9VVAUAA0Itvld1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAABcgxhJAAAAAAAAAAAA
AAAAFgAYAAAAAAAAABAA7UFVSQUAY3NzMy9maWx0ZXJzL2JhY2tkcm9wL1VUBQADQC2+V3V4CwAB
BPUBAAAEUAAAAFBLAQIeAwoAAgAAAFyDGEkpPTROLQAAAC0AAABKABgAAAAAAAEAAACkgaVJBQBj
c3MzL2ZpbHRlcnMvYmFja2Ryb3AvYmFja2Ryb3BmaWx0ZXItcHJvcGVydHktY29tcHV0ZWQtc3R5
bGUtY3Jhc2gtbG9nLnR4dFVUBQADQC2+V3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAgAAAF2DGElH
6bBNLQAAAC0AAAA5ABgAAAAAAAEAAACkgVZKBQBjc3MzL2ZpbHRlcnMvZmlsdGVyLXByb3BlcnR5
LWNvbXB1dGVkLXN0eWxlLWNyYXNoLWxvZy50eHRVVAUAA0Itvld1eAsAAQT1AQAABFAAAABQSwEC
HgMKAAAAAABcgxhJAAAAAAAAAAAAAAAADQAYAAAAAAAAABAA7UH2SgUAY3NzMy9mbGV4Ym94L1VU
BQADPy2+V3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAgAAAFyDGEmoNmaqLQAAAC0AAAAvABgAAAAA
AAEAAACkgT1LBQBjc3MzL2ZsZXhib3gvYWxpZ24tYWJzb2x1dGUtY2hpbGQtY3Jhc2gtbG9nLnR4
dFVUBQADPy2+V3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAgAAAFyDGEmo2KPuLQAAAC0AAAAyABgA
AAAAAAEAAACkgdNLBQBjc3MzL2ZvbnQtZmVhdHVyZS1zZXR0aW5ncy1yZW5kZXJpbmctY3Jhc2gt
bG9nLnR4dFVUBQADPy2+V3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAAF2DGEkAAAAAAAAAAAAA
AAARABgAAAAAAAAAEADtQWxMBQBjc3MzL3Njcm9sbC1zbmFwL1VUBQADQi2+V3V4CwABBPUBAAAE
UAAAAFBLAQIeAwoAAgAAAF2DGEkQibDgLQAAAC0AAAA7ABgAAAAAAAEAAACkgbdMBQBjc3MzL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLXByb3BlcnR5LXBhcnNpbmctY3Jhc2gtbG9nLnR4dFVUBQAD
Qi2+V3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAADuDGEkAAAAAAAAAAAAAAAAMABgAAAAAAAAA
EADtQVlNBQBjc3MzL3NoYXBlcy9VVAUAAwItvld1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAAA7
gxhJAAAAAAAAAAAAAAAAGgAYAAAAAAAAABAA7UGfTQUAY3NzMy9zaGFwZXMvc2hhcGUtb3V0c2lk
ZS9VVAUAAwItvld1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAABWgxhJAAAAAAAAAAAAAAAAIQAY
AAAAAAAAABAA7UHzTQUAY3NzMy9zaGFwZXMvc2hhcGUtb3V0c2lkZS92YWx1ZXMvVVQFAAMzLb5X
dXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAgYMYSQHvAMR0RQAAshQBAEcAGAAAAAAAAQAAAKSB
Tk4FAGNzczMvc2hhcGVzL3NoYXBlLW91dHNpZGUvdmFsdWVzL3NoYXBlLW91dHNpZGUtY2lyY2xl
LTAwMi1jcmFzaC1sb2cudHh0VVQFAAOBLb5XdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAgYMY
SXPDS9e+PQAAWtEAAEcAGAAAAAAAAQAAAKSBQ5QFAGNzczMvc2hhcGVzL3NoYXBlLW91dHNpZGUv
dmFsdWVzL3NoYXBlLW91dHNpZGUtY2lyY2xlLTAwMy1jcmFzaC1sb2cudHh0VVQFAAOBLb5XdXgL
AAEE9QEAAARQAAAAUEsBAh4DFAACAAgAgYMYSezsOjaqPQAA8dIAAEcAGAAAAAAAAQAAAKSBgtIF
AGNzczMvc2hhcGVzL3NoYXBlLW91dHNpZGUvdmFsdWVzL3NoYXBlLW91dHNpZGUtY2lyY2xlLTAw
NC1jcmFzaC1sb2cudHh0VVQFAAOBLb5XdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAAI4MYSQAA
AAAAAAAAAAAAABoAGAAAAAAAAAAQAO1BrRAGAGNzczMvc2hhcGVzL3NwZWMtZXhhbXBsZXMvVVQF
AAPRLL5XdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAI4MYSbwFBt6sAAAAFAMAADYAGAAAAAAA
AQAAAKSBAREGAGNzczMvc2hhcGVzL3NwZWMtZXhhbXBsZXMvc2hhcGUtb3V0c2lkZS0wMDEtc3Rk
ZXJyLnR4dFVUBQAD0Sy+V3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAADuDGEkAAAAAAAAAAAAA
AAAGABgAAAAAAAAAEADtQR0SBgBjc3NvbS9VVAUAAwItvld1eAsAAQT1AQAABFAAAABQSwECHgMU
AAIACACBgxhJtVwr1y5CAACUCgEAJwAYAAAAAAABAAAApIFdEgYAY3Nzb20vY3NzdmFsdWUtY29t
cGFyaXNvbi1jcmFzaC1sb2cudHh0VVQFAAOBLb5XdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAA
NX8YSQAAAAAAAAAAAAAAAA0AGAAAAAAAAAAQAO1B7FQGAGRpc3BsYXlsaXN0cy9VVAUAA2Ymvld1
eAsAAQT1AQAABFAAAABQSwECHgMUAAIACAAjgxhJo1f96FAAAACOAAAAMgAYAAAAAAABAAAApIEz
VQYAZGlzcGxheWxpc3RzL2V4dGVudC1pbmNsdWRlcy10cmFuc2Zvcm1zLXN0ZGVyci50eHRVVAUA
A9Esvld1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACAAjgxhJ8paV1UcAAABJAAAAKQAYAAAAAAAB
AAAApIHvVQYAZGlzcGxheWxpc3RzL2xheWVyLWRpc3BheS1saXN0LXN0ZGVyci50eHRVVAUAA9Es
vld1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACACBgxhJ3yUDBHlCAABa7AAAIgAYAAAAAAABAAAA
pIGZVgYARHVtcFJlbmRlclRyZWUtNTkzMTMtY3Jhc2gtbG9nLnR4dFVUBQADgS2+V3V4CwABBPUB
AAAEUAAAAFBLAQIeAxQAAgAIAIGDGEkRmy6mOEMAALXtAAAiABgAAAAAAAEAAACkgW6ZBgBEdW1w
UmVuZGVyVHJlZS01OTMxNy1jcmFzaC1sb2cudHh0VVQFAAOBLb5XdXgLAAEE9QEAAARQAAAAUEsB
Ah4DFAACAAgAgYMYSTmbJa5XPQAAfvUAACIAGAAAAAAAAQAAAKSBAt0GAER1bXBSZW5kZXJUcmVl
LTU5MzI3LWNyYXNoLWxvZy50eHRVVAUAA4Etvld1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACACB
gxhJtKWfwY0+AACo1wAAIgAYAAAAAAABAAAApIG1GgcARHVtcFJlbmRlclRyZWUtNTkzMzEtY3Jh
c2gtbG9nLnR4dFVUBQADgS2+V3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAIGDGElKaavIRD4A
AHnvAAAiABgAAAAAAAEAAACkgZ5ZBwBEdW1wUmVuZGVyVHJlZS01OTMzNi1jcmFzaC1sb2cudHh0
VVQFAAOBLb5XdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAAaoMYSQAAAAAAAAAAAAAAAAgAGAAA
AAAAAAAQAO1BPpgHAGVkaXRpbmcvVVQFAANXLb5XdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAA
ZYMYSQAAAAAAAAAAAAAAABEAGAAAAAAAAAAQAO1BgJgHAGVkaXRpbmcvZGVsZXRpbmcvVVQFAANN
Lb5XdXgLAAEE9QEAAARQAAAAUEsBAh4DCgACAAAAZYMYSSaTERQtAAAALQAAACgAGAAAAAAAAQAA
AKSBy5gHAGVkaXRpbmcvZGVsZXRpbmcvNTIwNjMxMS0yLWNyYXNoLWxvZy50eHRVVAUAA00tvld1
eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAABmgxhJAAAAAAAAAAAAAAAAFAAYAAAAAAAAABAA7UFa
mQcAZWRpdGluZy9leGVjQ29tbWFuZC9VVAUAA1Atvld1eAsAAQT1AQAABFAAAABQSwECHgMKAAIA
AABmgxhJde4MWC0AAAAtAAAAOgAYAAAAAAABAAAApIGomQcAZWRpdGluZy9leGVjQ29tbWFuZC9l
bmFibGluZy1hbmQtc2VsZWN0aW9uLTItY3Jhc2gtbG9nLnR4dFVUBQADUC2+V3V4CwABBPUBAAAE
UAAAAFBLAQIeAwoAAAAAAGiDGEkAAAAAAAAAAAAAAAAMABgAAAAAAAAAEADtQUmaBwBlZGl0aW5n
L21hYy9VVAUAA1Mtvld1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAABogxhJAAAAAAAAAAAAAAAA
HgAYAAAAAAAAABAA7UGPmgcAZWRpdGluZy9tYWMvYXR0cmlidXRlZC1zdHJpbmcvVVQFAANTLb5X
dXgLAAEE9QEAAARQAAAAUEsBAh4DCgACAAAAaIMYSXUAyRwtAAAALQAAADEAGAAAAAAAAQAAAKSB
55oHAGVkaXRpbmcvbWFjL2F0dHJpYnV0ZWQtc3RyaW5nL2Jhc2ljLWNyYXNoLWxvZy50eHRVVAUA
A1Mtvld1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAABqgxhJAAAAAAAAAAAAAAAAEgAYAAAAAAAA
ABAA7UF/mwcAZWRpdGluZy9zZWxlY3Rpb24vVVQFAANXLb5XdXgLAAEE9QEAAARQAAAAUEsBAh4D
CgACAAAAaoMYSfWVPUktAAAALQAAADYAGAAAAAAAAQAAAKSBy5sHAGVkaXRpbmcvc2VsZWN0aW9u
L2NhcmV0LWF0LWJpZGktYm91bmRhcnktY3Jhc2gtbG9nLnR4dFVUBQADVy2+V3V4CwABBPUBAAAE
UAAAAFBLAQIeAwoAAAAAAGqDGEkAAAAAAAAAAAAAAAAWABgAAAAAAAAAEADtQWicBwBlZGl0aW5n
L3RleHQtaXRlcmF0b3IvVVQFAANXLb5XdXgLAAEE9QEAAARQAAAAUEsBAh4DCgACAAAAaoMYSfo7
GBMtAAAALQAAAC4AGAAAAAAAAQAAAKSBuJwHAGVkaXRpbmcvdGV4dC1pdGVyYXRvci9maW5kU3Ry
aW5nLWNyYXNoLWxvZy50eHRVVAUAA1ctvld1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACABqgxhJ
Q1aORvIKAAASPwAADQAYAAAAAAABAAAApIFNnQcAZXJyb3JfbG9nLnR4dFVUBQADWC2+V3V4CwAB
BPUBAAAEUAAAAFBLAQIeAwoAAAAAAFSDGEkAAAAAAAAAAAAAAAAFABgAAAAAAAAAEADtQYaoBwBm
YXN0L1VUBQADMC2+V3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAAGODGEkAAAAAAAAAAAAAAAAL
ABgAAAAAAAAAEADtQcWoBwBmYXN0L2Jsb2NrL1VUBQADSS2+V3V4CwABBPUBAAAEUAAAAFBLAQIe
AxQAAgAIAIGDGEmlv4GeB0UAAJoTAQAvABgAAAAAAAEAAACkgQqpBwBmYXN0L2Jsb2NrL2R5bmFt
aWMtcGFkZGluZy1ib3JkZXItY3Jhc2gtbG9nLnR4dFVUBQADgS2+V3V4CwABBPUBAAAEUAAAAFBL
AQIeAxQAAgAIAIGDGEkqbXOuM0EAAJEFAQA/ABgAAAAAAAEAAACkgXruBwBmYXN0L2Jsb2NrL21h
cmdpbnMtcGVycGVuZGljdWxhci1jb250YWluaW5nLWJsb2NrLWNyYXNoLWxvZy50eHRVVAUAA4Et
vld1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACACBgxhJ+6DE2XA+AAA7+AAAPAAYAAAAAAABAAAA
pIEmMAgAZmFzdC9ibG9jay9taW4tbWF4LWhlaWdodC1wZXJjZW50LWhlaWdodC1jaGlsZC1jcmFz
aC1sb2cudHh0VVQFAAOBLb5XdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAAVIMYSQAAAAAAAAAA
AAAAAA0AGAAAAAAAAAAQAO1BDG8IAGZhc3QvYm9yZGVycy9VVAUAAzAtvld1eAsAAQT1AQAABFAA
AABQSwECHgMUAAIACABUgxhJIIMl9I8AAAD6AAAAPQAYAAAAAAABAAAApIFTbwgAZmFzdC9ib3Jk
ZXJzL2Rhc2hlZC1ib3JkZXItb24tc3VicGl4ZWwtcG9zaXRpb24tY3Jhc2gtbG9nLnR4dFVUBQAD
MC2+V3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAAGqDGEkAAAAAAAAAAAAAAAAQABgAAAAAAAAA
EADtQVlwCABmYXN0L2JveC1zaXppbmcvVVQFAANXLb5XdXgLAAEE9QEAAARQAAAAUEsBAh4DFAAC
AAgAgYMYSe7mFRKxRQAA8hUBADAAGAAAAAAAAQAAAKSBo3AIAGZhc3QvYm94LXNpemluZy9jc3Mt
dGFibGUtY29sbGFwc2UtY3Jhc2gtbG9nLnR4dFVUBQADgS2+V3V4CwABBPUBAAAEUAAAAFBLAQIe
AxQAAgAIAGqDGEnfJQMEeUIAAFrsAAAzABgAAAAAAAEAAACkgb62CABmYXN0L2JveC1zaXppbmcv
Y3NzLXRhYmxlLW5vLWNvbGxhcHNlLWNyYXNoLWxvZy50eHRVVAUAA1ctvld1eAsAAQT1AQAABFAA
AABQSwECHgMKAAAAAABWgxhJAAAAAAAAAAAAAAAADAAYAAAAAAAAABAA7UGk+QgAZmFzdC9jYW52
YXMvVVQFAAMzLb5XdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAQn8YSTiZ4A6uAAAA3gMAAEwA
GAAAAAAAAQAAAKSB6vkIAGZhc3QvY2FudmFzL2NhbnZhcy1jc3Mtc2l6ZS1hZnRlci1oZWlnaHQt
Y2hhbmdlLXdpdGgtZGlzcGxheS1mbGV4LXN0ZGVyci50eHRVVAUAA3smvld1eAsAAQT1AQAABFAA
AABQSwECHgMUAAIACABDfxhJFfxngIcAAAAaAQAAJgAYAAAAAAABAAAApIEe+wgAZmFzdC9jYW52
YXMvY2FudmFzLWxpbmVEYXNoLXN0ZGVyci50eHRVVAUAA34mvld1eAsAAQT1AQAABFAAAABQSwEC
HgMUAAIACACBgxhJSauA8uJBAAAE+gAANQAYAAAAAAABAAAApIEF/AgAZmFzdC9jYW52YXMvRHJh
d0ltYWdlU2luZ2xlUGl4ZWxTdHJldGNoLWNyYXNoLWxvZy50eHRVVAUAA4Etvld1eAsAAQT1AQAA
BFAAAABQSwECHgMKAAAAAABMfxhJAAAAAAAAAAAAAAAADAAYAAAAAAAAABAA7UFWPgkAZmFzdC9p
bWFnZXMvVVQFAAOQJr5XdXgLAAEE9QEAAARQAAAAUEsBAh4DCgACAAAATH8YSVGnghgxAAAAMQAA
AC0AGAAAAAAAAQAAAKSBnD4JAGZhc3QvaW1hZ2VzL2xhcmdlLXNpemUtaW1hZ2UtY3Jhc2gtc3Rk
ZXJyLnR4dFVUBQADjya+V3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAEx/GEkhj704MgAAADMA
AAAsABgAAAAAAAEAAACkgTQ/CQBmYXN0L2ltYWdlcy9wZGYtYXMtaW1hZ2UtY3JvcC1ib3gtc3Rk
ZXJyLnR4dFVUBQADkCa+V3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAAE1/GEkAAAAAAAAAAAAA
AAAJABgAAAAAAAAAEADtQcw/CQBmYXN0L3hzbC9VVAUAA5Emvld1eAsAAQT1AQAABFAAAABQSwEC
HgMUAAIACABMfxhJcv1l8oUAAADpAAAAJQAYAAAAAAABAAAApIEPQAkAZmFzdC94c2wvdHJhbnNm
b3JtLXhoci1kb2Mtc3RkZXJyLnR4dFVUBQADkCa+V3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAI
AEx/GEnOCSgCjQAAAPAAAAAnABgAAAAAAAEAAACkgfNACQBmYXN0L3hzbC94c2x0LWJhZC1pbXBv
cnQtdXJpLXN0ZGVyci50eHRVVAUAA5Amvld1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACABMfxhJ
z49mDlAAAACgAAAAJAAYAAAAAAABAAAApIHhQQkAZmFzdC94c2wveHNsdC1jb250ZW50VHlwZS1z
dGRlcnIudHh0VVQFAAOQJr5XdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgATX8YSYFKd61LAAAA
rAAAADQAGAAAAAAAAQAAAKSBj0IJAGZhc3QveHNsL3hzbHQtdHJhbnNmb3JtLXRvLWZyYWdtZW50
LWNyYXNoLXN0ZGVyci50eHRVVAUAA5Emvld1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACACBgxhJ
wAiQ4M0DAABlDgAAEQAYAAAAAAABAAAApIFIQwkAZnVsbF9yZXN1bHRzLmpzb25VVAUAA4Itvld1
eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAABPfxhJAAAAAAAAAAAAAAAABQAYAAAAAAAAABAA7UFg
RwkAaHR0cC9VVAUAA5Umvld1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAABVfxhJAAAAAAAAAAAA
AAAACwAYAAAAAAAAABAA7UGfRwkAaHR0cC90ZXN0cy9VVAUAA6Emvld1eAsAAQT1AQAABFAAAABQ
SwECHgMKAAAAAABSfxhJAAAAAAAAAAAAAAAAEQAYAAAAAAAAABAA7UHkRwkAaHR0cC90ZXN0cy9j
YWNoZS9VVAUAA5wmvld1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACABSfxhJjmNOY/AAAACJBAAA
MAAYAAAAAAABAAAApIEvSAkAaHR0cC90ZXN0cy9jYWNoZS9tZW1vcnktY2FjaGUtcHJ1bmluZy1z
dGRlcnIudHh0VVQFAAObJr5XdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAUn8YSZjfF62EAAAA
wAAAAD0AGAAAAAAAAQAAAKSBiUkJAGh0dHAvdGVzdHMvY2FjaGUvbmV0d29yay1lcnJvci1kdXJp
bmctcmV2YWxpZGF0aW9uLXN0ZGVyci50eHRVVAUAA5wmvld1eAsAAQT1AQAABFAAAABQSwECHgMK
AAAAAABPfxhJAAAAAAAAAAAAAAAAEgAYAAAAAAAAABAA7UGESgkAaHR0cC90ZXN0cy9jYW52YXMv
VVQFAAOVJr5XdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAAT38YSQAAAAAAAAAAAAAAABgAGAAA
AAAAAAAQAO1B0EoJAGh0dHAvdGVzdHMvY2FudmFzL3dlYmdsL1VUBQADlSa+V3V4CwABBPUBAAAE
UAAAAFBLAQIeAxQAAgAIAE9/GEnnSrsUzAAAADcCAAA7ABgAAAAAAAEAAACkgSJLCQBodHRwL3Rl
c3RzL2NhbnZhcy93ZWJnbC9vcmlnaW4tY2xlYW4tY29uZm9ybWFuY2Utc3RkZXJyLnR4dFVUBQAD
lSa+V3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAAE9/GEkAAAAAAAAAAAAAAAATABgAAAAAAAAA
EADtQWNMCQBodHRwL3Rlc3RzL2ZpbGVhcGkvVVQFAAOWJr5XdXgLAAEE9QEAAARQAAAAUEsBAh4D
FAACAAgAT38YSU4Ss42EAAAAwAAAADIAGAAAAAAAAQAAAKSBsEwJAGh0dHAvdGVzdHMvZmlsZWFw
aS9ibG9iLXVybC1pbi1zdWJmcmFtZS1zdGRlcnIudHh0VVQFAAOWJr5XdXgLAAEE9QEAAARQAAAA
UEsBAh4DCgAAAAAAYX8YSQAAAAAAAAAAAAAAABEAGAAAAAAAAAAQAO1BoE0JAGh0dHAvdGVzdHMv
bWVkaWEvVVQFAAO2Jr5XdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAAUX8YSQAAAAAAAAAAAAAA
ABoAGAAAAAAAAAAQAO1B600JAGh0dHAvdGVzdHMvbWVkaWEvY2xlYXJrZXkvVVQFAAOaJr5XdXgL
AAEE9QEAAARQAAAAUEsBAh4DFAACAAgAUX8YSeXQNYxSAQAAfwMAADkAGAAAAAAAAQAAAKSBP04J
AGh0dHAvdGVzdHMvbWVkaWEvY2xlYXJrZXkvY2xlYXIta2V5LWhscy1hZXMxMjgtc3RkZXJyLnR4
dFVUBQADmia+V3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAAFV/GEkAAAAAAAAAAAAAAAAVABgA
AAAAAAAAEADtQQRQCQBodHRwL3Rlc3RzL21lZGlhL2hscy9VVAUAA6Emvld1eAsAAQT1AQAABFAA
AABQSwECHgMUAAIACABSfxhJ56gyujwCAAByBQAARQAYAAAAAAABAAAApIFTUAkAaHR0cC90ZXN0
cy9tZWRpYS9obHMvaGxzLWFjY2Vzc2libGl0eS1kZXNjcmliZXMtdmlkZW8tbWVudS1zdGRlcnIu
dHh0VVQFAAOcJr5XdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAU38YSVM63g7QAQAAnwUAAEAA
GAAAAAAAAQAAAKSBDlMJAGh0dHAvdGVzdHMvbWVkaWEvaGxzL2hscy1hY2Nlc3NpYmxpdHktZGVz
Y3JpYmVzLXZpZGVvLXN0ZGVyci50eHRVVAUAA50mvld1eAsAAQT1AQAABFAAAABQSwECHgMUAAIA
CABTfxhJmElltMsBAABFBQAAOgAYAAAAAAABAAAApIFYVQkAaHR0cC90ZXN0cy9tZWRpYS9obHMv
aGxzLWF1ZGlvLXRyYWNrcy1oYXMtYXVkaW8tc3RkZXJyLnR4dFVUBQADnia+V3V4CwABBPUBAAAE
UAAAAFBLAQIeAxQAAgAIAFN/GEn+58kayQEAAJ8FAABBABgAAAAAAAEAAACkgZdXCQBodHRwL3Rl
c3RzL21lZGlhL2hscy9obHMtYXVkaW8tdHJhY2tzLWxvY2FsZS1zZWxlY3Rpb24tc3RkZXJyLnR4
dFVUBQADnia+V3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAFN/GEkzcjNxyAEAAEUFAAAwABgA
AAAAAAEAAACkgdtZCQBodHRwL3Rlc3RzL21lZGlhL2hscy9obHMtYXVkaW8tdHJhY2tzLXN0ZGVy
ci50eHRVVAUAA54mvld1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACABUfxhJDqlTOiUBAADeAwAA
LAAYAAAAAAABAAAApIENXAkAaHR0cC90ZXN0cy9tZWRpYS9obHMvaGxzLXByb2dyZXNzLXN0ZGVy
ci50eHRVVAUAA58mvld1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACABUfxhJ8eozqCsBAACEAwAA
MAAYAAAAAAABAAAApIGYXQkAaHR0cC90ZXN0cy9tZWRpYS9obHMvaGxzLXZpZGVvLXJlc2l6ZS1z
dGRlcnIudHh0VVQFAAOfJr5XdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAVH8YSa+En1VyAQAA
KgYAADoAGAAAAAAAAQAAAKSBLV8JAGh0dHAvdGVzdHMvbWVkaWEvaGxzL3ZpZGVvLWNvbnRyb2xz
LWxpdmUtc3RyZWFtLXN0ZGVyci50eHRVVAUAA58mvld1eAsAAQT1AQAABFAAAABQSwECHgMUAAIA
CABVfxhJSKDwLosCAACqKwAAPAAYAAAAAAABAAAApIETYQkAaHR0cC90ZXN0cy9tZWRpYS9obHMv
dmlkZW8tZHVyYXRpb24tYWNjZXNzaWJpbGl0eS1zdGRlcnIudHh0VVQFAAOhJr5XdXgLAAEE9QEA
AARQAAAAUEsBAh4DFAACAAgAU38YSbln2j8XAQAAvwIAADIAGAAAAAAAAQAAAKSBFGQJAGh0dHAv
dGVzdHMvbWVkaWEvbWVkaWEtZG9jdW1lbnQtcmVmZXJlci1zdGRlcnIudHh0VVQFAAOdJr5XdXgL
AAEE9QEAAARQAAAAUEsBAh4DFAACAAgAU38YSZvEXc7kAAAArAIAACoAGAAAAAAAAQAAAKSBl2UJ
AGh0dHAvdGVzdHMvbWVkaWEvbWVkaWEtZG9jdW1lbnQtc3RkZXJyLnR4dFVUBQADnia+V3V4CwAB
BPUBAAAEUAAAAFBLAQIeAxQAAgAIAFR/GElSNMWp6gAAAMYDAAA5ABgAAAAAAAEAAACkgd9mCQBo
dHRwL3Rlc3RzL21lZGlhL21lZGlhLXBsYXktc3RyZWFtLWNodW5rZWQtaWN5LXN0ZGVyci50eHRV
VAUAA6Amvld1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAABkfxhJAAAAAAAAAAAAAAAAHgAYAAAA
AAAAABAA7UE8aAkAaHR0cC90ZXN0cy9tZWRpYS9tZWRpYS1zb3VyY2UvVVQFAAO7Jr5XdXgLAAEE
9QEAAARQAAAAUEsBAh4DFAACAAgAWH8YSXSTrMZRAQAAlwQAAEIAGAAAAAAAAQAAAKSBlGgJAGh0
dHAvdGVzdHMvbWVkaWEvbWVkaWEtc291cmNlL21lZGlhc291cmNlLWFwcGVuZC1idWZmZXItc3Rk
ZXJyLnR4dFVUBQADqCa+V3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAFl/GEmh8PNNPQEAAHoD
AABQABgAAAAAAAEAAACkgWFqCQBodHRwL3Rlc3RzL21lZGlhL21lZGlhLXNvdXJjZS9tZWRpYXNv
dXJjZS1jb25maWctY2hhbmdlLW1wNC12LWJpdHJhdGUtc3RkZXJyLnR4dFVUBQADqia+V3V4CwAB
BPUBAAAEUAAAAFBLAQIeAxQAAgAIAFp/GElGULuhPAEAAHoDAABSABgAAAAAAAEAAACkgShsCQBo
dHRwL3Rlc3RzL21lZGlhL21lZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1jb25maWctY2hhbmdlLW1w
NC12LWZyYW1lcmF0ZS1zdGRlcnIudHh0VVQFAAOsJr5XdXgLAAEE9QEAAARQAAAAUEsBAh4DFAAC
AAgAYH8YSak/YruLAAAAmwAAADkAGAAAAAAAAQAAAKSB8G0JAGh0dHAvdGVzdHMvbWVkaWEvbWVk
aWEtc291cmNlL21lZGlhc291cmNlLXBsYXktc3RkZXJyLnR4dFVUBQADtCa+V3V4CwABBPUBAAAE
UAAAAFBLAQIeAxQAAgAIAGJ/GElVxxEmqgAAAAcDAAA7ABgAAAAAAAEAAACkge5uCQBodHRwL3Rl
c3RzL21lZGlhL21lZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1yZW1vdmUtc3RkZXJyLnR4dFVUBQAD
tya+V3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAGR/GEkuixtEmwAAANEBAABGABgAAAAAAAEA
AACkgQ1wCQBodHRwL3Rlc3RzL21lZGlhL21lZGlhLXNvdXJjZS9tZWRpYXNvdXJjZS1zb3VyY2Vi
dWZmZXItbW9kZS1zdGRlcnIudHh0VVQFAAO7Jr5XdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgA
Vn8YSYwbb8ztAAAAXwEAAC0AGAAAAAAAAQAAAKSBKHEJAGh0dHAvdGVzdHMvbWVkaWEvcGRmLXNl
cnZlZC1hcy1wZGYtc3RkZXJyLnR4dFVUBQADpCa+V3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAI
AFt/GEmj6gXdCwEAABoCAAAvABgAAAAAAAEAAACkgXxyCQBodHRwL3Rlc3RzL21lZGlhL3JlbG9h
ZC1hZnRlci1kaWFsb2ctc3RkZXJyLnR4dFVUBQADrSa+V3V4CwABBPUBAAAEUAAAAFBLAQIeAxQA
AgAIAFt/GElhcnRlSQEAAHQCAAAvABgAAAAAAAEAAACkgfBzCQBodHRwL3Rlc3RzL21lZGlhL3Rl
eHQtc2VydmVkLWFzLXRleHQtc3RkZXJyLnR4dFVUBQADria+V3V4CwABBPUBAAAEUAAAAFBLAQIe
AxQAAgAIAFx/GEkgA0LtCgEAAHgDAAA2ABgAAAAAAAEAAACkgaJ1CQBodHRwL3Rlc3RzL21lZGlh
L3RyYWNrLWluLWJhbmQtaGxzLW1ldGFkYXRhLXN0ZGVyci50eHRVVAUAA7Amvld1eAsAAQT1AQAA
BFAAAABQSwECHgMUAAIACABcfxhJ9nbd13IBAABsBwAAJgAYAAAAAAABAAAApIEcdwkAaHR0cC90
ZXN0cy9tZWRpYS92aWRlby1hdXRoLXN0ZGVyci50eHRVVAUAA7Amvld1eAsAAQT1AQAABFAAAABQ
SwECHgMUAAIACABdfxhJqw4T894AAABSAgAALQAYAAAAAAABAAAApIHueAkAaHR0cC90ZXN0cy9t
ZWRpYS92aWRlby1lcnJvci1hYm9ydC1zdGRlcnIudHh0VVQFAAOxJr5XdXgLAAEE9QEAAARQAAAA
UEsBAh4DFAACAAgAXX8YSXo+O4IXAQAAPQIAADYAGAAAAAAAAQAAAKSBM3oJAGh0dHAvdGVzdHMv
bWVkaWEvdmlkZW8tZXJyb3ItZG9lcy1ub3QtZXhpc3Qtc3RkZXJyLnR4dFVUBQADsia+V3V4CwAB
BPUBAAAEUAAAAFBLAQIeAxQAAgAIAF1/GEks+AJpwwAAACQDAAAsABgAAAAAAAEAAACkgbp7CQBo
dHRwL3Rlc3RzL21lZGlhL3ZpZGVvLWxvYWQtdHdpY2Utc3RkZXJyLnR4dFVUBQADsia+V3V4CwAB
BPUBAAAEUAAAAFBLAQIeAxQAAgAIAF1/GEkspyms4QAAAGwDAAAvABgAAAAAAAEAAACkgeN8CQBo
dHRwL3Rlc3RzL21lZGlhL3ZpZGVvLXBsYXktcHJvZ3Jlc3Mtc3RkZXJyLnR4dFVUBQADsia+V3V4
CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAGF/GEmUnmwghAAAAMAAAAA9ABgAAAAAAAEAAACkgS1+
CQBodHRwL3Rlc3RzL21lZGlhL3ZpZGVvLXBsYXktc3RhbGwtYmVmb3JlLW1ldGEtZGF0YS1zdGRl
cnIudHh0VVQFAAO1Jr5XdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAYX8YSVlLQaW6AAAAkgEA
ACsAGAAAAAAAAQAAAKSBKH8JAGh0dHAvdGVzdHMvbWVkaWEvdmlkZW8tcXVlcnktdXJsLXN0ZGVy
ci50eHRVVAUAA7Ymvld1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACABhfxhJ/MJ8PeoAAABYBQAA
KgAYAAAAAAABAAAApIFHgAkAaHR0cC90ZXN0cy9tZWRpYS92aWRlby1yZWRpcmVjdC1zdGRlcnIu
dHh0VVQFAAO2Jr5XdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAYX8YSVI5O9zeAAAAUgIAACsA
GAAAAAAAAQAAAKSBlYEJAGh0dHAvdGVzdHMvbWVkaWEvdmlkZW8tdXNlcmFnZW50LXN0ZGVyci50
eHRVVAUAA7Ymvld1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAABsfxhJAAAAAAAAAAAAAAAAEAAY
AAAAAAAAABAA7UHYggkAaHR0cC90ZXN0cy9taXNjL1VUBQADzCa+V3V4CwABBPUBAAAEUAAAAFBL
AQIeAwoAAAAAAFF/GEkAAAAAAAAAAAAAAAAqABgAAAAAAAAAEADtQSKDCQBodHRwL3Rlc3RzL21p
c2MvYXV0aGVudGljYXRpb24tcmVkaXJlY3QtMi9VVAUAA5omvld1eAsAAQT1AQAABFAAAABQSwEC
HgMUAAIACABRfxhJv+us2IUAAADAAAAAYAAYAAAAAAABAAAApIGGgwkAaHR0cC90ZXN0cy9taXNj
L2F1dGhlbnRpY2F0aW9uLXJlZGlyZWN0LTIvYXV0aGVudGljYXRpb24tc2VudC10by1yZWRpcmVj
dC1zYW1lLW9yaWdpbi1zdGRlcnIudHh0VVQFAAOaJr5XdXgLAAEE9QEAAARQAAAAUEsBAh4DFAAC
AAgAWX8YSboDVPXFAAAA/gAAAD8AGAAAAAAAAQAAAKSBpYQJAGh0dHAvdGVzdHMvbWlzYy9kZWxl
dGUtZnJhbWUtZHVyaW5nLXJlYWR5c3RhdGVjaGFuZ2Utc3RkZXJyLnR4dFVUBQADqia+V3V4CwAB
BPUBAAAEUAAAAFBLAQIeAxQAAgAIAGx/GEkVNTWSegAAALwAAAAqABgAAAAAAAEAAACkgeOFCQBo
dHRwL3Rlc3RzL21pc2MveHNsdC1iYWQtaW1wb3J0LXN0ZGVyci50eHRVVAUAA8wmvld1eAsAAQT1
AQAABFAAAABQSwECHgMKAAAAAABifxhJAAAAAAAAAAAAAAAAFAAYAAAAAAAAABAA7UHBhgkAaHR0
cC90ZXN0cy9zZWN1cml0eS9VVAUAA7cmvld1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACABTfxhJ
NP+8AMoAAADdAQAAVQAYAAAAAAABAAAApIEPhwkAaHR0cC90ZXN0cy9zZWN1cml0eS9jYW52YXMt
cmVtb3RlLXJlYWQtcmVtb3RlLXZpZGVvLWJsb2NrZWQtbm8tY3Jvc3NvcmlnaW4tc3RkZXJyLnR4
dFVUBQADnia+V3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAFN/GElFbanu2gAAAKwCAABIABgA
AAAAAAEAAACkgWiICQBodHRwL3Rlc3RzL3NlY3VyaXR5L2NhbnZhcy1yZW1vdGUtcmVhZC1yZW1v
dGUtdmlkZW8tbG9jYWxob3N0LXN0ZGVyci50eHRVVAUAA54mvld1eAsAAQT1AQAABFAAAABQSwEC
HgMUAAIACABUfxhJ7J9+X+MAAACsAgAARwAYAAAAAAABAAAApIHEiQkAaHR0cC90ZXN0cy9zZWN1
cml0eS9jYW52YXMtcmVtb3RlLXJlYWQtcmVtb3RlLXZpZGVvLXJlZGlyZWN0LXN0ZGVyci50eHRV
VAUAA58mvld1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAABhfxhJAAAAAAAAAAAAAAAAKgAYAAAA
AAAAABAA7UEoiwkAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvVVQF
AAO1Jr5XdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAU38YSf31IEXZAAAA+AEAAEsAGAAAAAAA
AQAAAKSBjIsJAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L2F1ZGlv
LXJlZGlyZWN0LWFsbG93ZWQtc3RkZXJyLnR4dFVUBQADnia+V3V4CwABBPUBAAAEUAAAAFBLAQIe
AxQAAgAIAFN/GEnSXGZS2QAAAPgBAABMABgAAAAAAAEAAACkgeqMCQBodHRwL3Rlc3RzL3NlY3Vy
aXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9hdWRpby1yZWRpcmVjdC1hbGxvd2VkMi1zdGRlcnIu
dHh0VVQFAAOdJr5XdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAU38YSQcGa0amAAAAigEAAFgA
GAAAAAAAAQAAAKSBSY4JAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5
L2Jsb2ItdXJsLWRvZXMtbm90LW1hdGNoLXNvdXJjZS1zZWxmLXN0ZGVyci50eHRVVAUAA54mvld1
eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAABUfxhJAAAAAAAAAAAAAAAARAAYAAAAAAAAABAA7UGB
jwkAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvdXBncmFkZS1pbnNl
Y3VyZS1yZXF1ZXN0cy9VVAUAA58mvld1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACABUfxhJ0era
Y+oAAAAmAwAAeQAYAAAAAAABAAAApIH/jwkAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2Vj
dXJpdHlQb2xpY3kvdXBncmFkZS1pbnNlY3VyZS1yZXF1ZXN0cy91cGdyYWRlLWluc2VjdXJlLWF1
ZGlvLXZpZGVvLWluLW1haW4tZnJhbWUtc3RkZXJyLnR4dFVUBQADnya+V3V4CwABBPUBAAAEUAAA
AFBLAQIeAwoAAAAAAFR/GEkAAAAAAAAAAAAAAAA9ABgAAAAAAAAAEADtQZyRCQBodHRwL3Rlc3Rz
L3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS91c2VyQWdlbnRTaGFkb3dET00vVVQFAAOf
Jr5XdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAU38YSbGkXivmAAAAQwIAAFMAGAAAAAAAAQAA
AKSBE5IJAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3VzZXJBZ2Vu
dFNoYWRvd0RPTS9hbGxvdy1hdWRpby1zdGRlcnIudHh0VVQFAAOeJr5XdXgLAAEE9QEAAARQAAAA
UEsBAh4DFAACAAgAVH8YSR6NxQf+AAAA+wEAAFMAGAAAAAAAAQAAAKSBhpMJAGh0dHAvdGVzdHMv
c2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3VzZXJBZ2VudFNoYWRvd0RPTS9hbGxvdy12
aWRlby1zdGRlcnIudHh0VVQFAAOfJr5XdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAVH8YSTc6
y1aEAAAAwAAAAGsAGAAAAAAAAQAAAKSBEZUJAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNl
Y3VyaXR5UG9saWN5L3VzZXJBZ2VudFNoYWRvd0RPTS9kZWZhdWx0LXNyYy1vYmplY3QtZGF0YS11
cmwtYWxsb3dlZC1zdGRlcnIudHh0VVQFAAOfJr5XdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgA
YH8YSTJYrVDeAAAAUgIAAEsAGAAAAAAAAQAAAKSBOpYJAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29u
dGVudFNlY3VyaXR5UG9saWN5L3ZpZGVvLXJlZGlyZWN0LWFsbG93ZWQtc3RkZXJyLnR4dFVUBQAD
tCa+V3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAGB/GEl0/lE1twAAAJIBAABMABgAAAAAAAEA
AACkgZ2XCQBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS92aWRlby1y
ZWRpcmVjdC1hbGxvd2VkMi1zdGRlcnIudHh0VVQFAAO0Jr5XdXgLAAEE9QEAAARQAAAAUEsBAh4D
FAACAAgAYH8YSTA6q+smAQAAuwIAAGYAGAAAAAAAAQAAAKSB2pgJAGh0dHAvdGVzdHMvc2VjdXJp
dHkvY29udGVudFNlY3VyaXR5UG9saWN5L3ZpZGVvLXdpdGgtaHR0cC11cmwtYWxsb3dlZC1ieS1j
c3AtbWVkaWEtc3JjLXN0YXItc3RkZXJyLnR4dFVUBQADtCa+V3V4CwABBPUBAAAEUAAAAFBLAQIe
AxQAAgAIAGB/GEm65X8FhAAAAMAAAABZABgAAAAAAAEAAACkgaCaCQBodHRwL3Rlc3RzL3NlY3Vy
aXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS93b3JrZXItYmxvYi1pbmhlcml0cy1jc3AtYmxvY2tz
LWV2YWwtc3RkZXJyLnR4dFVUBQADtCa+V3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAGF/GElj
qqxsggAAAKgAAABAABgAAAAAAAEAAACkgbebCQBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRT
ZWN1cml0eVBvbGljeS94c2wtYWxsb3dlZC1zdGRlcnIudHh0VVQFAAO1Jr5XdXgLAAEE9QEAAARQ
AAAAUEsBAh4DFAACAAgAYX8YSWOqrGyCAAAAqAAAAFIAGAAAAAAAAQAAAKSBs5wJAGh0dHAvdGVz
dHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3hzbC11bmFmZmVjdGVkLWJ5LXN0eWxl
LXNyYy0yLXN0ZGVyci50eHRVVAUAA7Umvld1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACABUfxhJ
Fm4MVoQAAAAaAQAANQAYAAAAAAABAAAApIHBnQkAaHR0cC90ZXN0cy9zZWN1cml0eS9jb3JzLXBv
c3QtcmVkaXJlY3QtMzAxLXN0ZGVyci50eHRVVAUAA58mvld1eAsAAQT1AQAABFAAAABQSwECHgMU
AAIACABafxhJWfNzQrcAAACSAQAAPQAYAAAAAAABAAAApIG0ngkAaHR0cC90ZXN0cy9zZWN1cml0
eS9sb2NhbC12aWRlby1zb3VyY2UtZnJvbS1yZW1vdGUtc3RkZXJyLnR4dFVUBQADqya+V3V4CwAB
BPUBAAAEUAAAAFBLAQIeAxQAAgAIAFp/GEleIDydhAAAAMAAAAA6ABgAAAAAAAEAAACkgeKfCQBo
dHRwL3Rlc3RzL3NlY3VyaXR5L2xvY2FsLXZpZGVvLXNyYy1mcm9tLXJlbW90ZS1zdGRlcnIudHh0
VVQFAAOrJr5XdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAAVn8YSQAAAAAAAAAAAAAAACEAGAAA
AAAAAAAQAO1B2qAJAGh0dHAvdGVzdHMvc2VjdXJpdHkvbWl4ZWRDb250ZW50L1VUBQADoya+V3V4
CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAFZ/GEnCo27nMAEAAGADAABOABgAAAAAAAEAAACkgTWh
CQBodHRwL3Rlc3RzL3NlY3VyaXR5L21peGVkQ29udGVudC9pbnNlY3VyZS1hdWRpby12aWRlby1p
bi1tYWluLWZyYW1lLXN0ZGVyci50eHRVVAUAA6Mmvld1eAsAAQT1AQAABFAAAABQSwECHgMUAAIA
CABgfxhJ6j+vrDMBAAACBQAAOQAYAAAAAAABAAAApIHtogkAaHR0cC90ZXN0cy9zZWN1cml0eS92
aWRlby1jcm9zcy1vcmlnaW4tY2FjaGluZy1zdGRlcnIudHh0VVQFAAOzJr5XdXgLAAEE9QEAAARQ
AAAAUEsBAh4DFAACAAgAYH8YSZpLK9oTAQAA5wEAAD8AGAAAAAAAAQAAAKSBk6QJAGh0dHAvdGVz
dHMvc2VjdXJpdHkvdmlkZW8tcG9zdGVyLWNyb3NzLW9yaWdpbi1jcmFzaDItc3RkZXJyLnR4dFVU
BQADsya+V3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAGJ/GElgS2YQkQAAAPsBAABFABgAAAAA
AAEAAACkgR+mCQBodHRwL3Rlc3RzL3NlY3VyaXR5L3hzcy1ERU5JRUQteHNsLWRvY3VtZW50LXNl
Y3VyaXR5T3JpZ2luLXN0ZGVyci50eHRVVAUAA7cmvld1eAsAAQT1AQAABFAAAABQSwECHgMKAAAA
AABVfxhJAAAAAAAAAAAAAAAADwAYAAAAAAAAABAA7UEvpwkAaHR0cC90ZXN0cy9zdmcvVVQFAAOh
Jr5XdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAVX8YSbQnFqQOAQAALgQAAC0AGAAAAAAAAQAA
AKSBeKcJAGh0dHAvdGVzdHMvc3ZnL2NhY2hlZC1pbWFnZS1zaXppbmctc3RkZXJyLnR4dFVUBQAD
oSa+V3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIABeDGElbBFgOogUAAE0QAAAKABgAAAAAAAEA
AACkge2oCQBodHRwZC5jb25mVVQFAAO+LL5XdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAAYn8Y
SQAAAAAAAAAAAAAAAAkAGAAAAAAAAAAQAO1B064JAGltcG9ydGVkL1VUBQADtya+V3V4CwABBPUB
AAAEUAAAAFBLAQIeAwoAAAAAAGJ/GEkAAAAAAAAAAAAAAAANABgAAAAAAAAAEADtQRavCQBpbXBv
cnRlZC93M2MvVVQFAAO3Jr5XdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAAa38YSQAAAAAAAAAA
AAAAACAAGAAAAAAAAAAQAO1BXa8JAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvVVQF
AAPJJr5XdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAAYn8YSQAAAAAAAAAAAAAAACQAGAAAAAAA
AAAQAO1Bt68JAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZG9tL1VUBQADtya+V3V4
CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAGJ/GEnXpYFKhAAAAMAAAAA5ABgAAAAAAAEAAACkgRWw
CQBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2RvbS9oaXN0b3JpY2FsLXN0ZGVyci50
eHRVVAUAA7cmvld1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAABrfxhJAAAAAAAAAAAAAAAAJQAY
AAAAAAAAABAA7UEMsQkAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL1VUBQAD
ySa+V3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAAGt/GEkAAAAAAAAAAAAAAAApABgAAAAAAAAA
EADtQWuxCQBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvZG9tL1VUBQADySa+
V3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAGt/GEkBUnwPwQAAAE4CAABHABgAAAAAAAEAAACk
gc6xCQBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvZG9tL3JlZmxlY3Rpb24t
ZW1iZWRkZWQtc3RkZXJyLnR4dFVUBQADySa+V3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAAGt/
GEkAAAAAAAAAAAAAAAAvABgAAAAAAAAAEADtQRCzCQBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2h0bWwvc2VtYW50aWNzL1VUBQADySa+V3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAA
AGx/GEkAAAAAAAAAAAAAAABAABgAAAAAAAAAEADtQXmzCQBpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvVVQFAAPLJr5XdXgLAAEE
9QEAAARQAAAAUEsBAh4DCgAAAAAAc38YSQAAAAAAAAAAAAAAAE8AGAAAAAAAAAAQAO1B87MJAGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29u
dGVudC9tZWRpYS1lbGVtZW50cy9VVAUAA9kmvld1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACABr
fxhJlhjLVfAAAACXBQAAZwAYAAAAAAABAAAApIF8tAkAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL2V2
ZW50X2NhbnBsYXktc3RkZXJyLnR4dFVUBQADySa+V3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAI
AGt/GEnoNyt27QAAAKQEAAByABgAAAAAAAEAAACkgQ22CQBpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMv
ZXZlbnRfY2FucGxheV9ub2F1dG9wbGF5LXN0ZGVyci50eHRVVAUAA8omvld1eAsAAQT1AQAABFAA
AABQSwECHgMUAAIACABrfxhJyTzDH+sAAAAMBgAAbgAYAAAAAAABAAAApIGmtwkAaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21l
ZGlhLWVsZW1lbnRzL2V2ZW50X2NhbnBsYXl0aHJvdWdoLXN0ZGVyci50eHRVVAUAA8omvld1eAsA
AQT1AQAABFAAAABQSwECHgMUAAIACABsfxhJ+BPZCfEAAACkBAAAeQAYAAAAAAABAAAApIE5uQkA
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1j
b250ZW50L21lZGlhLWVsZW1lbnRzL2V2ZW50X2NhbnBsYXl0aHJvdWdoX25vYXV0b3BsYXktc3Rk
ZXJyLnR4dFVUBQADyya+V3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAGx/GElucKoT5wAAAOQD
AABqABgAAAAAAAEAAACkgd26CQBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwv
c2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvZXZlbnRfbG9hZGVkZGF0
YS1zdGRlcnIudHh0VVQFAAPLJr5XdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAbH8YSY7yVEfk
AAAAZAUAAHUAGAAAAAAAAQAAAKSBaLwJAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
aHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9ldmVudF9sb2Fk
ZWRkYXRhX25vYXV0b3BsYXktc3RkZXJyLnR4dFVUBQADyya+V3V4CwABBPUBAAAEUAAAAFBLAQIe
AxQAAgAIAGx/GEmDAGSP6QAAAKQEAABuABgAAAAAAAEAAACkgfu9CQBpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxl
bWVudHMvZXZlbnRfbG9hZGVkbWV0YWRhdGEtc3RkZXJyLnR4dFVUBQADzCa+V3V4CwABBPUBAAAE
UAAAAFBLAQIeAxQAAgAIAGx/GElSCB835gAAAEoEAAB5ABgAAAAAAAEAAACkgYy/CQBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQv
bWVkaWEtZWxlbWVudHMvZXZlbnRfbG9hZGVkbWV0YWRhdGFfbm9hdXRvcGxheS1zdGRlcnIudHh0
VVQFAAPMJr5XdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAbX8YSd0m4vztAAAASgQAAGkAGAAA
AAAAAQAAAKSBJcEJAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRp
Y3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9ldmVudF9sb2Fkc3RhcnQtc3RkZXJy
LnR4dFVUBQADzSa+V3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAG1/GEltu7Zt6gAAAKQEAAB0
ABgAAAAAAAEAAACkgbXCCQBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2Vt
YW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvZXZlbnRfbG9hZHN0YXJ0X25v
YXV0b3BsYXktc3RkZXJyLnR4dFVUBQADzSa+V3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAG1/
GEmJmhUa6QAAAEwFAAB8ABgAAAAAAAEAAACkgU3ECQBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvZXZl
bnRfb3JkZXJfY2FucGxheV9jYW5wbGF5dGhyb3VnaC1zdGRlcnIudHh0VVQFAAPOJr5XdXgLAAEE
9QEAAARQAAAAUEsBAh4DFAACAAgAbX8YSUSubHXuAAAAzAYAAHUAGAAAAAAAAQAAAKSB7MUJAGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29u
dGVudC9tZWRpYS1lbGVtZW50cy9ldmVudF9vcmRlcl9jYW5wbGF5X3BsYXlpbmctc3RkZXJyLnR4
dFVUBQADzia+V3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAG1/GEnb52zC7AAAAAwGAAB/ABgA
AAAAAAEAAACkgYnHCQBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50
aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvZXZlbnRfb3JkZXJfbG9hZGVkbWV0
YWRhdGFfbG9hZGVkZGF0YS1zdGRlcnIudHh0VVQFAAPOJr5XdXgLAAEE9QEAAARQAAAAUEsBAh4D
FAACAAgAbn8YScxEfIfrAAAA/gQAAHgAGAAAAAAAAQAAAKSBLskJAGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVt
ZW50cy9ldmVudF9vcmRlcl9sb2Fkc3RhcnRfcHJvZ3Jlc3Mtc3RkZXJyLnR4dFVUBQADzya+V3V4
CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAG5/GEn63Nv68AAAAAwGAABlABgAAAAAAAEAAACkgcvK
CQBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVk
LWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvZXZlbnRfcGF1c2Utc3RkZXJyLnR4dFVUBQAD0Ca+V3V4
CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAG5/GEkB1XPd6gAAAKQEAABwABgAAAAAAAEAAACkgVrM
CQBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVk
LWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvZXZlbnRfcGF1c2Vfbm9hdXRvcGxheS1zdGRlcnIudHh0
VVQFAAPQJr5XdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAb38YSWdX/9nsAAAATAUAAGQAGAAA
AAAAAQAAAKSB7s0JAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRp
Y3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9ldmVudF9wbGF5LXN0ZGVyci50eHRV
VAUAA9Emvld1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACABvfxhJeS9tAeoAAABkBQAAbwAYAAAA
AAABAAAApIF4zwkAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGlj
cy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL2V2ZW50X3BsYXlfbm9hdXRvcGxheS1z
dGRlcnIudHh0VVQFAAPRJr5XdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAb38YSdU4CBbxAAAA
DAYAAGcAGAAAAAAAAQAAAKSBC9EJAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRt
bC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9ldmVudF9wbGF5aW5n
LXN0ZGVyci50eHRVVAUAA9Imvld1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACABvfxhJVCSp1usA
AAAMBgAAcgAYAAAAAAABAAAApIGd0gkAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9o
dG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL2V2ZW50X3BsYXlp
bmdfbm9hdXRvcGxheS1zdGRlcnIudHh0VVQFAAPSJr5XdXgLAAEE9QEAAARQAAAAUEsBAh4DFAAC
AAgAcH8YSTgknJbsAAAATAUAAGgAGAAAAAAAAQAAAKSBNNQJAGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50
cy9ldmVudF9wcm9ncmVzcy1zdGRlcnIudHh0VVQFAAPTJr5XdXgLAAEE9QEAAARQAAAAUEsBAh4D
FAACAAgAcH8YSXLnDvXqAAAACgUAAHMAGAAAAAAAAQAAAKSBwtUJAGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVt
ZW50cy9ldmVudF9wcm9ncmVzc19ub2F1dG9wbGF5LXN0ZGVyci50eHRVVAUAA9Mmvld1eAsAAQT1
AQAABFAAAABQSwECHgMUAAIACABxfxhJhluUxvAAAAAMBgAAagAYAAAAAAABAAAApIFZ1wkAaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250
ZW50L21lZGlhLWVsZW1lbnRzL2V2ZW50X3RpbWV1cGRhdGUtc3RkZXJyLnR4dFVUBQAD1Sa+V3V4
CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAHF/GEkKgwfE7wAAAAwGAAB1ABgAAAAAAAEAAACkge3Y
CQBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVk
LWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvZXZlbnRfdGltZXVwZGF0ZV9ub2F1dG9wbGF5LXN0ZGVy
ci50eHRVVAUAA9Umvld1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACABxfxhJ8DKadIUAAADAAAAA
bAAYAAAAAAABAAAApIGL2gkAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3Nl
bWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL2V2ZW50X3ZvbHVtZWNoYW5n
ZS1zdGRlcnIudHh0VVQFAAPWJr5XdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAAa38YSQAAAAAA
AAAAAAAAAFoAGAAAAAAAAAAQAO1BttsJAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
aHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9pbnRlcmZhY2Vz
L1VUBQADySa+V3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAAGt/GEkAAAAAAAAAAAAAAABkABgA
AAAAAAAAEADtQUrcCQBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50
aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvaW50ZXJmYWNlcy9UZXh0VHJhY2sv
VVQFAAPKJr5XdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAa38YSY+mDka7AAAAkgEAAHkAGAAA
AAAAAQAAAKSB6NwJAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRp
Y3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9pbnRlcmZhY2VzL1RleHRUcmFjay9h
Y3RpdmVDdWVzLXN0ZGVyci50eHRVVAUAA8kmvld1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACABr
fxhJvUU16YQAAADAAAAAdQAYAAAAAAABAAAApIFW3gkAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL2lu
dGVyZmFjZXMvVGV4dFRyYWNrL2FkZEN1ZS1zdGRlcnIudHh0VVQFAAPKJr5XdXgLAAEE9QEAAARQ
AAAAUEsBAh4DFAACAAgAcX8YSRitwMngAAAA5AMAAHcAGAAAAAAAAQAAAKSBid8JAGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9t
ZWRpYS1lbGVtZW50cy9uZXR3b3JrU3RhdGVfZHVyaW5nX2xvYWRzdGFydC1zdGRlcnIudHh0VVQF
AAPWJr5XdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAcX8YSZezbDiFAAAAwAAAAG4AGAAAAAAA
AQAAAKSBGuEJAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3Mv
ZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9uZXR3b3JrU3RhdGVfaW5pdGlhbC1zdGRl
cnIudHh0VVQFAAPWJr5XdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAcX8YSeNHdwfkAAAATAUA
AHIAGAAAAAAAAQAAAKSBR+IJAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9z
ZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9wYXVzZWRfZmFsc2VfZHVy
aW5nX3BsYXktc3RkZXJyLnR4dFVUBQAD1ia+V3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAHF/
GEnApht66wAAAKQEAAByABgAAAAAAAEAAACkgdfjCQBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvcGF1
c2VkX3RydWVfZHVyaW5nX3BhdXNlLXN0ZGVyci50eHRVVAUAA9Ymvld1eAsAAQT1AQAABFAAAABQ
SwECHgMKAAAAAABsfxhJAAAAAAAAAAAAAAAAagAYAAAAAAAAABAA7UFu5QkAaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlh
LWVsZW1lbnRzL3BsYXlpbmctdGhlLW1lZGlhLXJlc291cmNlL1VUBQADyya+V3V4CwABBPUBAAAE
UAAAAFBLAQIeAxQAAgAIAGt/GElPm0fjywAAAN0BAACRABgAAAAAAAEAAACkgRLmCQBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQv
bWVkaWEtZWxlbWVudHMvcGxheWluZy10aGUtbWVkaWEtcmVzb3VyY2UvcGF1c2UtbW92ZS10by1v
dGhlci1kb2N1bWVudC1zdGRlcnIudHh0VVQFAAPKJr5XdXgLAAEE9QEAAARQAAAAUEsBAh4DFAAC
AAgAbH8YSUoAEAjiAAAAUgIAAI8AGAAAAAAAAQAAAKSBqOcJAGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50
cy9wbGF5aW5nLXRoZS1tZWRpYS1yZXNvdXJjZS9wYXVzZS1tb3ZlLXdpdGhpbi1kb2N1bWVudC1z
dGRlcnIudHh0VVQFAAPLJr5XdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAbH8YSaSJ2r7eAAAA
BgMAAI8AGAAAAAAAAQAAAKSBU+kJAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRt
bC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9wbGF5aW5nLXRoZS1t
ZWRpYS1yZXNvdXJjZS9wYXVzZS1yZW1vdmUtZnJvbS1kb2N1bWVudC1zdGRlcnIudHh0VVQFAAPL
Jr5XdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAbH8YSWJpu0qEAAAAwAAAAIEAGAAAAAAAAQAA
AKSB+uoJAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1i
ZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9wbGF5aW5nLXRoZS1tZWRpYS1yZXNvdXJjZS9w
bGF5YmFja1JhdGUtc3RkZXJyLnR4dFVUBQADyya+V3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAI
AHJ/GEkAMd2rhAAAAMAAAAB4ABgAAAAAAAEAAACkgTnsCQBpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMv
cHJlbG9hZF9yZWZsZWN0c19ub25lX2F1dG9wbGF5LXN0ZGVyci50eHRVVAUAA9cmvld1eAsAAQT1
AQAABFAAAABQSwECHgMUAAIACAByfxhJjyTntuYAAABMBQAAcwAYAAAAAAABAAAApIFv7QkAaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250
ZW50L21lZGlhLWVsZW1lbnRzL3JlYWR5U3RhdGVfZHVyaW5nX2NhbnBsYXktc3RkZXJyLnR4dFVU
BQAD1ya+V3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAHJ/GEmiitXR7AAAAAwGAAB6ABgAAAAA
AAEAAACkgQLvCQBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNz
L2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvcmVhZHlTdGF0ZV9kdXJpbmdfY2FucGxh
eXRocm91Z2gtc3RkZXJyLnR4dFVUBQAD1ya+V3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAHJ/
GEnw2tsU8wAAAAwGAAB2ABgAAAAAAAEAAACkgaLwCQBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvcmVh
ZHlTdGF0ZV9kdXJpbmdfbG9hZGVkZGF0YS1zdGRlcnIudHh0VVQFAAPYJr5XdXgLAAEE9QEAAARQ
AAAAUEsBAh4DFAACAAgAcn8YSV+2vjXrAAAApAQAAHoAGAAAAAAAAQAAAKSBRfIJAGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9t
ZWRpYS1lbGVtZW50cy9yZWFkeVN0YXRlX2R1cmluZ19sb2FkZWRtZXRhZGF0YS1zdGRlcnIudHh0
VVQFAAPYJr5XdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAcn8YSQYpsGTsAAAATAUAAHMAGAAA
AAAAAQAAAKSB5PMJAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRp
Y3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9yZWFkeVN0YXRlX2R1cmluZ19wbGF5
aW5nLXN0ZGVyci50eHRVVAUAA9gmvld1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACABzfxhJTmlK
H44AAACAAQAAbAAYAAAAAAABAAAApIF99QkAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL3JlYWR5U3Rh
dGVfaW5pdGlhbC1zdGRlcnIudHh0VVQFAAPZJr5XdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgA
c38YSUGR1enZAAAAwgIAAIQAGAAAAAAAAQAAAKSBsfYJAGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy9z
cmNfcmVmbGVjdHNfYXR0cmlidXRlX25vdF9zb3VyY2VfZWxlbWVudHMtc3RkZXJyLnR4dFVUBQAD
2Sa+V3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAAGx/GEkAAAAAAAAAAAAAAABVABgAAAAAAAAA
EADtQUj4CQBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2Vt
YmVkZGVkLWNvbnRlbnQvbWVkaWEtZWxlbWVudHMvdHJhY2svVVQFAAPLJr5XdXgLAAEE9QEAAARQ
AAAAUEsBAh4DCgAAAAAAbH8YSQAAAAAAAAAAAAAAAGMAGAAAAAAAAAAQAO1B1/gJAGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9t
ZWRpYS1lbGVtZW50cy90cmFjay90cmFjay1lbGVtZW50L1VUBQADyya+V3V4CwABBPUBAAAEUAAA
AFBLAQIeAxQAAgAIAGx/GEnONFr0pQAAADgBAACCABgAAAAAAAEAAACkgXT5CQBpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvbWVk
aWEtZWxlbWVudHMvdHJhY2svdHJhY2stZWxlbWVudC90cmFjay1hcGktdGV4dHRyYWNrcy1zdGRl
cnIudHh0VVQFAAPLJr5XdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAAbH8YSQAAAAAAAAAAAAAA
AF4AGAAAAAAAAAAQAO1B1foJAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9z
ZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy91c2VyLWludGVyZmFjZS9V
VAUAA8smvld1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACABsfxhJyCq15YUAAAAaAQAAbgAYAAAA
AAABAAAApIFt+wkAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGlj
cy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL3VzZXItaW50ZXJmYWNlL211dGVkLXN0
ZGVyci50eHRVVAUAA8smvld1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACABzfxhJFkom/70AAADs
AQAAYwAYAAAAAAABAAAApIGa/AkAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1s
L3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L21lZGlhLWVsZW1lbnRzL3ZpZGVvXzAwOC1zdGRl
cnIudHh0VVQFAAPZJr5XdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAc38YSW8yz1eFAAAAwAAA
AGwAGAAAAAAAAQAAAKSB9P0JAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9z
ZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC9tZWRpYS1lbGVtZW50cy92aWRlb192b2x1bWVfY2hl
Y2stc3RkZXJyLnR4dFVUBQAD2Sa+V3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAAGx/GEkAAAAA
AAAAAAAAAABSABgAAAAAAAAAEADtQR//CQBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvdGhlLWF1ZGlvLWVsZW1lbnQvVVQFAAPL
Jr5XdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAbH8YSce0F7jeAAAA0AIAAG4AGAAAAAAAAQAA
AKSBq/8JAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1i
ZWRkZWQtY29udGVudC90aGUtYXVkaW8tZWxlbWVudC9hdWRpb19jb25zdHJ1Y3Rvci1zdGRlcnIu
dHh0VVQFAAPLJr5XdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAAc38YSQAAAAAAAAAAAAAAAAoA
GAAAAAAAAAAQAO1BMQEKAGluc3BlY3Rvci9VVAUAA9omvld1eAsAAQT1AQAABFAAAABQSwECHgMK
AAAAAABzfxhJAAAAAAAAAAAAAAAAEwAYAAAAAAAAABAA7UF1AQoAaW5zcGVjdG9yL2RlYnVnZ2Vy
L1VUBQAD2ia+V3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAHN/GEk13XE72AsAAIPiAABBABgA
AAAAAAEAAACkgcIBCgBpbnNwZWN0b3IvZGVidWdnZXIvYnJlYWstb24tZXhjZXB0aW9uLXRocm93
LWluLXByb21pc2Utc3RkZXJyLnR4dFVUBQAD2ia+V3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAA
ACuAGEkAAAAAAAAAAAAAAAAGABgAAAAAAAAAEADtQRUOCgBtZWRpYS9VVAUAA0Invld1eAsAAQT1
AQAABFAAAABQSwECHgMUAAIACAB2fxhJ6LL6HOcAAACdAgAAHwAYAAAAAAABAAAApIFVDgoAbWVk
aWEvYXVkaW8tZGF0YS11cmwtc3RkZXJyLnR4dFVUBQAD4Ca+V3V4CwABBPUBAAAEUAAAAFBLAQIe
AwoAAAAAAHl/GEkAAAAAAAAAAAAAAAATABgAAAAAAAAAEADtQZUPCgBtZWRpYS9tZWRpYS1zb3Vy
Y2UvVVQFAAPmJr5XdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAeX8YSYiaT2aLAAAAmwAAAEgA
GAAAAAAAAQAAAKSB4g8KAG1lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2Utc3RhbGxlZC1o
b2xkcy1zbGVlcC1hc3NlcnRpb24tc3RkZXJyLnR4dFVUBQAD5ia+V3V4CwABBPUBAAAEUAAAAFBL
AQIeAxQAAgAIAAuAGEk9NGFjwAAAACQDAAAoABgAAAAAAAEAAACkge8QCgBtZWRpYS9zb3VyY2Vz
LWZhbGxiYWNrLWNvZGVjcy1zdGRlcnIudHh0VVQFAAMFJ75XdXgLAAEE9QEAAARQAAAAUEsBAh4D
FAACAAgAC4AYSVQIjtyKAAAAgAEAADAAGAAAAAAAAQAAAKSBERIKAG1lZGlhL3N2Zy1hcy1pbWFn
ZS13aXRoLW1lZGlhLWJsb2NrZWQtc3RkZXJyLnR4dFVUBQADBSe+V3V4CwABBPUBAAAEUAAAAFBL
AQIeAxQAAgAIAAuAGEnPTinSkAAAAL0AAAAhABgAAAAAAAEAAACkgQUTCgBtZWRpYS91bnN1cHBv
cnRlZC1ydHNwLXN0ZGVyci50eHRVVAUAAwUnvld1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACAAk
gBhJXT7WgMAAAADyBgAAKAAYAAAAAAABAAAApIHwEwoAbWVkaWEvdmlkZW8tcG9zdGVyLWJhY2tn
cm91bmQtc3RkZXJyLnR4dFVUBQADMye+V3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIACuAGEkP
R+YyugAAAJIBAAAfABgAAAAAAAEAAACkgRIVCgBtZWRpYS92aWRlby1zcmMtYmxvYi1zdGRlcnIu
dHh0VVQFAANCJ75XdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAK4AYSeVQqh+DAAAAwAAAACEA
GAAAAAAAAQAAAKSBJRYKAG1lZGlhL3ZpZGVvLXNyYy1jaGFuZ2Utc3RkZXJyLnR4dFVUBQADQie+
V3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAABiDGEkAAAAAAAAAAAAAAAAaABgAAAAAAAAAAACk
gQMXCgBweXdlYnNvY2tldC53cy5sb2ctZXJyLnR4dFVUBQADvyy+V3V4CwABBPUBAAAEUAAAAFBL
AQIeAwoAAAAAABiDGEkAAAAAAAAAAAAAAAAaABgAAAAAAAAAAACkgVcXCgBweXdlYnNvY2tldC53
cy5sb2ctb3V0LnR4dFVUBQADvyy+V3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAABiDGEkAAAAA
AAAAAAAAAAAbABgAAAAAAAAAAACkgasXCgBweXdlYnNvY2tldC53c3MubG9nLWVyci50eHRVVAUA
A8Asvld1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAAAYgxhJAAAAAAAAAAAAAAAAGwAYAAAAAAAA
AAAApIEAGAoAcHl3ZWJzb2NrZXQud3NzLmxvZy1vdXQudHh0VVQFAAPALL5XdXgLAAEE9QEAAARQ
AAAAUEsBAh4DFAACAAgAgYMYSUUmHTnRJwAAy6oAAAwAGAAAAAAAAQAAAKSBVRgKAHJlc3VsdHMu
aHRtbFVUBQADgi2+V3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAALyAGEkAAAAAAAAAAAAAAAAI
ABgAAAAAAAAAEADtQWxACgByZXRyaWVzL1VUBQADVCi+V3V4CwABBPUBAAAEUAAAAFBLAQIeAwoA
AAAAALyAGEkAAAAAAAAAAAAAAAAUABgAAAAAAAAAEADtQa5ACgByZXRyaWVzL3RyYW5zaXRpb25z
L1VUBQADVCi+V3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIALyAGEmG9r2l0jgAAC9hAAA2ABgA
AAAAAAAAAACkgfxACgByZXRyaWVzL3RyYW5zaXRpb25zL2RlZmF1bHQtdGltaW5nLWZ1bmN0aW9u
LWFjdHVhbC5wbmdVVAUAA1Qovld1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACAC8gBhJtlZHyTUk
AAAkMAAANAAYAAAAAAAAAAAApIE+egoAcmV0cmllcy90cmFuc2l0aW9ucy9kZWZhdWx0LXRpbWlu
Zy1mdW5jdGlvbi1kaWZmLnBuZ1VUBQADVCi+V3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIALyA
GEkL08b2jQUAACoSAAA2ABgAAAAAAAEAAACkgeGeCgByZXRyaWVzL3RyYW5zaXRpb25zL2RlZmF1
bHQtdGltaW5nLWZ1bmN0aW9uLWRpZmZzLmh0bWxVVAUAA1Qovld1eAsAAQT1AQAABFAAAABQSwEC
HgMUAAIACAC8gBhJS5iIUXk1AABhXQAAOAAYAAAAAAAAAAAApIHepAoAcmV0cmllcy90cmFuc2l0
aW9ucy9kZWZhdWx0LXRpbWluZy1mdW5jdGlvbi1leHBlY3RlZC5wbmdVVAUAA1Qovld1eAsAAQT1
AQAABFAAAABQSwECHgMUAAIACACBgxhJvYw2yAGoAQCPUgoACgAYAAAAAAABAAAApIHJ2goAc3Rh
dHMuanNvblVUBQADgi2+V3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAABCAGEkAAAAAAAAAAAAA
AAAEABgAAAAAAAAAEADtQQ6DDABzdmcvVVQFAAMQJ75XdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAA
AAAAEIAYSQAAAAAAAAAAAAAAAAsAGAAAAAAAAAAQAO1BTIMMAHN2Zy9jdXN0b20vVVQFAAMQJ75X
dXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAEIAYSehyHc5/AAAAjQAAACQAGAAAAAAAAQAAAKSB
kYMMAHN2Zy9jdXN0b20vemVyby1kYXNoYXJyYXktc3RkZXJyLnR4dFVUBQADECe+V3V4CwABBPUB
AAAEUAAAAFBLAQIeAwoAAAAAAASAGEkAAAAAAAAAAAAAAAALABgAAAAAAAAAEADtQW6EDABzdmcv
c3Ryb2tlL1VUBQAD9ya+V3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAASAGElob2XWfwAAAI0A
AAAlABgAAAAAAAEAAACkgbOEDABzdmcvc3Ryb2tlL3plcm8td2lkdGgtaGFuZy1zdGRlcnIudHh0
VVQFAAP3Jr5XdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAACYAYSQAAAAAAAAAAAAAAAAwAGAAA
AAAAAAAQAO1BkYUMAHRyYW5zaXRpb25zL1VUBQADASe+V3V4CwABBPUBAAAEUAAAAFBLAQIeAxQA
AgAIAAaAGEnzRROTwAEAAAQFAAAuABgAAAAAAAEAAACkgdeFDAB0cmFuc2l0aW9ucy9kZWZhdWx0
LXRpbWluZy1mdW5jdGlvbi1hY3R1YWwudHh0VVQFAAP8Jr5XdXgLAAEE9QEAAARQAAAAUEsBAh4D
FAACAAgABoAYSdwpx713AgAA+AcAACwAGAAAAAAAAQAAAKSB/4cMAHRyYW5zaXRpb25zL2RlZmF1
bHQtdGltaW5nLWZ1bmN0aW9uLWRpZmYudHh0VVQFAAP8Jr5XdXgLAAEE9QEAAARQAAAAUEsBAh4D
FAACAAgABoAYSZyAVn5tAQAARQQAADAAGAAAAAAAAQAAAKSB3IoMAHRyYW5zaXRpb25zL2RlZmF1
bHQtdGltaW5nLWZ1bmN0aW9uLWV4cGVjdGVkLnR4dFVUBQAD/Ca+V3V4CwABBPUBAAAEUAAAAFBL
AQIeAxQAAgAIAAeAGEnLauddSQoAAJYxAAA0ABgAAAAAAAEAAACkgbOMDAB0cmFuc2l0aW9ucy9k
ZWZhdWx0LXRpbWluZy1mdW5jdGlvbi1wcmV0dHktZGlmZi5odG1sVVQFAAP9Jr5XdXgLAAEE9QEA
AARQAAAAUEsBAh4DFAACAAgAB4AYSbhb7F2xAAAA7wAAADQAGAAAAAAAAQAAAKSBapcMAHRyYW5z
aXRpb25zL2ZvbnQtZmFtaWx5LWR1cmluZy10cmFuc2l0aW9uLWFjdHVhbC50eHRVVAUAA/4mvld1
eAsAAQT1AQAABFAAAABQSwECHgMUAAIACAAHgBhJEOejtzkBAABrAgAAMgAYAAAAAAABAAAApIGJ
mAwAdHJhbnNpdGlvbnMvZm9udC1mYW1pbHktZHVyaW5nLXRyYW5zaXRpb24tZGlmZi50eHRVVAUA
A/4mvld1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACAAHgBhJwzHNbXEAAACUAAAANgAYAAAAAAAB
AAAApIEumgwAdHJhbnNpdGlvbnMvZm9udC1mYW1pbHktZHVyaW5nLXRyYW5zaXRpb24tZXhwZWN0
ZWQudHh0VVQFAAP+Jr5XdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAB4AYSTLdtR5tCAAAHh0A
ADoAGAAAAAAAAQAAAKSBD5sMAHRyYW5zaXRpb25zL2ZvbnQtZmFtaWx5LWR1cmluZy10cmFuc2l0
aW9uLXByZXR0eS1kaWZmLmh0bWxVVAUAA/4mvld1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACAAI
gBhJyuzSEMAAAAAfAgAAOQAYAAAAAAABAAAApIHwowwAdHJhbnNpdGlvbnMvbGVuZ3Roc2l6ZS10
cmFuc2l0aW9uLXRvLWZyb20tYXV0by1hY3R1YWwudHh0VVQFAAP/Jr5XdXgLAAEE9QEAAARQAAAA
UEsBAh4DFAACAAgACIAYSbhA4QkuAQAAkQMAADcAGAAAAAAAAQAAAKSBI6UMAHRyYW5zaXRpb25z
L2xlbmd0aHNpemUtdHJhbnNpdGlvbi10by1mcm9tLWF1dG8tZGlmZi50eHRVVAUAA/8mvld1eAsA
AQT1AQAABFAAAABQSwECHgMUAAIACAAIgBhJ76Cll2oAAAAMAQAAOwAYAAAAAAABAAAApIHCpgwA
dHJhbnNpdGlvbnMvbGVuZ3Roc2l6ZS10cmFuc2l0aW9uLXRvLWZyb20tYXV0by1leHBlY3RlZC50
eHRVVAUAA/8mvld1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACAAIgBhJA9l9kBwIAACNHQAAPwAY
AAAAAAABAAAApIGhpwwAdHJhbnNpdGlvbnMvbGVuZ3Roc2l6ZS10cmFuc2l0aW9uLXRvLWZyb20t
YXV0by1wcmV0dHktZGlmZi5odG1sVVQFAAP/Jr5XdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgA
CIAYSY2vfzu8AAAAmQIAADcAGAAAAAAAAQAAAKSBNrAMAHRyYW5zaXRpb25zL21pbi1tYXgtd2lk
dGgtaGVpZ2h0LXRyYW5zaXRpb25zLWFjdHVhbC50eHRVVAUAA/8mvld1eAsAAQT1AQAABFAAAABQ
SwECHgMUAAIACAAIgBhJsoNkY08BAAD+BAAANQAYAAAAAAABAAAApIFjsQwAdHJhbnNpdGlvbnMv
bWluLW1heC13aWR0aC1oZWlnaHQtdHJhbnNpdGlvbnMtZGlmZi50eHRVVAUAA/8mvld1eAsAAQT1
AQAABFAAAABQSwECHgMUAAIACAAIgBhJgmBVznEAAABNAQAAOQAYAAAAAAABAAAApIEhswwAdHJh
bnNpdGlvbnMvbWluLW1heC13aWR0aC1oZWlnaHQtdHJhbnNpdGlvbnMtZXhwZWN0ZWQudHh0VVQF
AAP/Jr5XdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgACIAYST1dYlJXCAAAWyIAAD0AGAAAAAAA
AQAAAKSBBbQMAHRyYW5zaXRpb25zL21pbi1tYXgtd2lkdGgtaGVpZ2h0LXRyYW5zaXRpb25zLXBy
ZXR0eS1kaWZmLmh0bWxVVAUAA/8mvld1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACAAIgBhJqnNj
ihcBAAAfBAAAMAAYAAAAAAABAAAApIHTvAwAdHJhbnNpdGlvbnMvc2hhcGUtb3V0c2lkZS10cmFu
c2l0aW9ucy1hY3R1YWwudHh0VVQFAAMAJ75XdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgACIAY
SZqKTr21AQAA+wYAAC4AGAAAAAAAAQAAAKSBVL4MAHRyYW5zaXRpb25zL3NoYXBlLW91dHNpZGUt
dHJhbnNpdGlvbnMtZGlmZi50eHRVVAUAAwAnvld1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACAAI
gBhJqBqzLq0AAAAuAgAAMgAYAAAAAAABAAAApIFxwAwAdHJhbnNpdGlvbnMvc2hhcGUtb3V0c2lk
ZS10cmFuc2l0aW9ucy1leHBlY3RlZC50eHRVVAUAAwAnvld1eAsAAQT1AQAABFAAAABQSwECHgMU
AAIACAAIgBhJ8Va76CsJAAAHKwAANgAYAAAAAAABAAAApIGKwQwAdHJhbnNpdGlvbnMvc2hhcGUt
b3V0c2lkZS10cmFuc2l0aW9ucy1wcmV0dHktZGlmZi5odG1sVVQFAAMAJ75XdXgLAAEE9QEAAARQ
AAAAUEsBAh4DFAACAAgACYAYSR5yj/7mAAAArwIAACwAGAAAAAAAAQAAAKSBJcsMAHRyYW5zaXRp
b25zL3N0ZXBzLXRpbWluZy1mdW5jdGlvbi1hY3R1YWwudHh0VVQFAAMBJ75XdXgLAAEE9QEAAARQ
AAAAUEsBAh4DFAACAAgACYAYSd55uAtyAQAAxAQAACoAGAAAAAAAAQAAAKSBccwMAHRyYW5zaXRp
b25zL3N0ZXBzLXRpbWluZy1mdW5jdGlvbi1kaWZmLnR4dFVUBQADASe+V3V4CwABBPUBAAAEUAAA
AFBLAQIeAxQAAgAIAAmAGElZScLqmgAAAFwBAAAuABgAAAAAAAEAAACkgUfODAB0cmFuc2l0aW9u
cy9zdGVwcy10aW1pbmctZnVuY3Rpb24tZXhwZWN0ZWQudHh0VVQFAAMBJ75XdXgLAAEE9QEAAARQ
AAAAUEsBAh4DFAACAAgACYAYSQSo9abKCAAAjCMAADIAGAAAAAAAAQAAAKSBSc8MAHRyYW5zaXRp
b25zL3N0ZXBzLXRpbWluZy1mdW5jdGlvbi1wcmV0dHktZGlmZi5odG1sVVQFAAMBJ75XdXgLAAEE
9QEAAARQAAAAUEsBAh4DFAACAAgAIYMYSXv07HUYAgAA5g4AABkAGAAAAAAAAQAAAKSBf9gMAHdw
dHdrX3Byb2Nlc3NfbG9nLm91dC50eHRVVAUAA80svld1eAsAAQT1AQAABFAAAABQSwUGAAAAADcB
NwHClwAA6toMAAAA
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>286913</attachid>
            <date>2016-08-24 17:03:43 -0700</date>
            <delta_ts>2016-08-24 17:03:43 -0700</delta_ts>
            <desc>Archive of layout-test-results from ews106 for mac-yosemite-wk2</desc>
            <filename>layout-test-results.zip</filename>
            <type>application/zip</type>
            <size>573966</size>
            <attacher name="Build Bot">buildbot</attacher>
            
              <data encoding="base64">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
tjqTYdPaWFQX7ZolziM3GS9tezYwBpemYsqHp3lvtb96cyD1nMC8u7HiSnA6bLZda5nY06i/bC28
9NWvTWaN+67VtpN9Y20NBC/dWIPq8tig3Do2hw/lyl1MhMy2ytJJVt1+uUItzDt0UouT6nBid8Iy
WnV7QdvcrJbXXSB7QpKIciSH50/f0pYSpMIp2KwP3nZyr3kzr4jk6BjmrV206SqrqVoEkrcO2qg7
eeq08vV5MBWLaDs/edvr+tX5fF5zc4jfu5+tJCpZvg62H8va8uzk7bB+S9tmKdjWuGhZ1jOVctPq
78375LUrDKMX63hdFW/cOyijOHO6UrBa7/VZ/xBt9k95Pww6R89DXPbJbkivgbbq1866PuiFh4XT
6bYWI9t+7vkbMdtO5Vn/KD5lm3jT2OzVfFCe8qbZPrdmDSS6TO5OKi6GQ/NYi0YvjSAw7XYu3qWk
v7nYXr8ZvawVM07knvS2GfXs7no1bUjeRJZeLvf+1M08tfCMjuPJF7U2eT2E2yTTxMsmdWIpfCvO
4iW6TzqDbfEsa23F6S7cZSgN88t+FTYaaTcZemdjtRLVQSDE51qkuWJTHvaK41uUKxkfT5JVsXi+
B7eRM0/NsP+UN6yBNHOyp+XtPJ4azmCiFOVgus73kTud15xh13yTVmN7Fj1f++V+nIwuZ+e2lso/
/vg5C5ue+3US/glQSwMEFAACAAgAGoQYSSvsEH4OCQAAOhEAABUAHABfd3B0X2NlcnRzL2NhY2Vy
dC5wZW1VVAkAA6MuvlejLr5XdXgLAAEE9QEAAARQAAAArVbJjqPKEt37K7y8V6UrJ0MyhPQWgCds
QxnP9g7IxHN5wuPXvwi6u9qtdvWVnh6LkgsyTkacjDgnPXnMl9kyjXMJpTI+1TiPv/2iZySPp+Xu
A8pa+S92U//+/NCXx2W8KYfnbSKPUDZ0i+sKrbEl5+Jp3XL+Eefnoyw7m/nuuMwXWyifFrHKjTH+
0+s7tY/0eN/nuMtnkH86nQnVC/9zlck/+02cZ7vj9p9cnvLTz9zizVIs8/vnC3rCXV52Ja6WUHbO
87Kql1UNNBW4UlaZYpQbweC3ACfL5bEMWNQeV/8hoH9OVjLN/y2z78vK3XOyWabltryX/Y9sB79s
/PTxiZrjKX5BCD1I1VMMlP9SmW6Vk2X+9y/L6Al24rw5n56WwG9r6GEMYgN4grWCtIFZIATEDKQC
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
CQADES++V3Uvvld1eAsAAQT1AQAABFAAAABQSwMEFAACAAgAG4QYSXI7K7VpAAAAawAAAC4AHABh
Y2Nlc3NpYmlsaXR5L2FyaWEtY2hlY2tib3gtY2hlY2tlZC1zdGRlcnIudHh0VVQJAAOlLr5XpS6+
V3V4CwABBPUBAAAEUAAAADMyMDTTNbDQNTJRMDSzMjayMjXWMza2UEjOz9VLLCjISdULT03yziwB
Uc75eSWpeSV6LqllqTn5BblAdrSluYGFsZWlsbmlmVGsgl+wU2lJSX6eY15mbmJJZn5esWteYlJO
aoqtnz8XAFBLAwQUAAIACAAjhBhJruucSLNIAADaIgEANQAcAGFjY2Vzc2liaWxpdHkvY2FudmFz
LWZhbGxiYWNrLWNvbnRlbnQtMi1jcmFzaC1sb2cudHh0VVQJAAOyLr5Xsi6+V3V4CwABBPUBAAAE
UAAAAOxdbXObyLL+fPkVfLiVkpNgMzO8lytbet1oj2yrLDvZqlRKNcBgc4JAC8i2zq+/PQOSEJIc
s+u9JzlHqpSswND9TE93T/fQDOM08ViWOfL2x0tmp3Q+j9jpZ+b+I8z5n24S5yzOT3vsgUXJfAa/
5S+2qVrkqzSm+X2dBnzOPiXRYsays09Xo9uL/tnbs5JckNIZe0zSb2efWJqFSZydtc9+H3cnLH0I
AdDZCwGcPs29s/J4dnZBvavJSy+Vhj58h0HIUudPdF0qgdd7bajkndyC71N0qr07kbqJz+Sb5Zxt
N/zdMhRDk1uXNA8f2AkIMOXyHNeG45dffpG/oK/SNcvmIKTQjbboZPfyF6yB/G8zlsrDXh2MriJJ
6tGcnd2EsxoCrCJDUS0FazIyHIId3Tw1DFVWVFNVpauJvK+DIGEZTv0uI/UU/ulyC2kDZKv2CUCc
J2m+cxVCUjtO4uUsWWTy7W0FY8+0bYsM2opq475iEYsoBjYMxe63e7in6gPS7kqSxJHL7Uf6jcmT
MPaY3EmS3JF1TVVVOWNeEvuZJHVTmt0zX765Txn11zygc3Jv8Kv8GVQtCrNc/ABRFc0kqf/ksXkO
eLeHqP97d9pp96bDy8nN9W33Znh1Kbcmw1+Ho9FJ5Ro+tuuxUp/U7Q96v3tMlaQ26FboUUFgMmce
aKAnD+MgSWfioCN1r9uTj8PLX+Wb/uTGkanHVSJ0wyjMl2cejR9opgQ0ilzqfVO8QjUVfHqfzyIQ
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
Zm5iSWZ+XrFrXmJSTmqKrZ8/FwBQSwMECgAAAAAAHYQYSQAAAAAAAAAAAAAAABIAHABhY2Nlc3Np
YmlsaXR5L21hYy9VVAkAA6kuvld1L75XdXgLAAEE9QEAAARQAAAAUEsDBBQAAgAIAB2EGElYbiqE
aQAAAGsAAABhABwAYWNjZXNzaWJpbGl0eS9tYWMvY2hlY2tib3gtcG9zdHMtdmFsdWUtY2hhbmdl
LW5vdGlmaWNhdGlvbi1hZnRlci1hY3RpdmF0aW9uLXdpdGgtc3BhY2Utc3RkZXJyLnR4dFVUCQAD
qS6+V6kuvld1eAsAAQT1AQAABFAAAAAzMjA00zWw0DUyUTA0szI2sjI11zMwtlBIzs/VSywoyEnV
C09N8s4sAVHO+XklqXklei6pZak5+QW5QHa0pbmBhbmVpbG5pbl5rIJfsFNpSUl+nmNeZm5iSWZ+
XrFrXmJSTmqKrZ8/FwBQSwMEFAACAAgAVYQYSTDS7PFDAAAARgAAACkAHABhY2Nlc3NpYmlsaXR5
L21lZGlhLWVsZW1lbnQtY3Jhc2gtbG9nLnR4dFVUCQADES++VxEvvld1eAsAAQT1AQAABFAAAADz
y1dILkoszlDIyU9XSMsvzUsBkkUKyfm5eokFBTmpeuGpSd6ZJSDKOT+vJDWvRM8ltSw1J78gF8i2
sjQ3tDTR4wIAUEsDBAoAAAAAADmEGEkAAAAAAAAAAAAAAAALABwAYW5pbWF0aW9ucy9VVAkAA94u
vld1L75XdXgLAAEE9QEAAARQAAAAUEsDBBQAAgAIAImEGElZE06HfUAAAOr/AAAyABwAYW5pbWF0
aW9ucy9hbmltYXRpb24tYm9yZGVyLW92ZXJmbG93LWNyYXNoLWxvZy50eHRVVAkAA3EvvlfeLr5X
dXgLAAEE9QEAAARQAAAA7Fztc5tGt/98+Sv40OnISbDZF2DReNJBSGrVOravZaed2+kwK1jZPEGg
AnLi/vX3LOgFEHJMms6k80iTiWR2Oed3Xvcsu+x1mvgiy/pq/eMni1O+XEbi9Fcx+yXM5ZebxLmI
89OheBRRslzAb/V320I6/kO55vlDkwZ8zt4n0WohsrP3Vxd370Znr87W5OYpX4iPSfrh7L1IszCJ
szPn7LdrdyrSxxAAnb0QwOmnpX+2vp6dveP+1fSltyqTAP4P56FI+18gurIG3pTa1MlrtQf/n6JT
+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
AAAAOYQYSQAAAAAAAAAAAAAAABsAHABjb21wb3NpdGluZy9sYXllci1jcmVhdGlvbi9VVAkAA94u
vld1L75XdXgLAAEE9QEAAARQAAAAUEsDBBQAAgAIADmEGEmqcWzSogAAACwBAABJABwAY29tcG9z
aXRpbmcvbGF5ZXItY3JlYXRpb24vc2NhbGUtcm90YXRpb24tYW5pbWF0aW9uLW92ZXJsYXAtY3Jh
c2gtbG9nLnR4dFVUCQAD3i6+V94uvld1eAsAAQT1AQAABFAAAADFzrEOgjAQgOHdp7iNCVogQcMq
uEg0ITEOxpDSntAEOHItGt5efAqn/x+/sq6vdQ4nZQc04AkYlYFA3ByyE+1iB9OSF5VtWfEqKuqc
KKzqJnLe6hpnYu+EpjFS8zxgdMf2bP0vR5o8Tj4q8I0DzeP2TSLjLJSHUCah3KdJKhv8uFhmkWbl
+iCHR8k8ESRPuBC4Rffw2mBADMYyak+85v/S7b5QSwMECgAAAAAAJYQYSQAAAAAAAAAAAAAAABUA
HABjb21wb3NpdGluZy9vdmVyZmxvdy9VVAkAA7Yuvld1L75XdXgLAAEE9QEAAARQAAAAUEsDBBQA
AgAIACKEGElnUStUzkAAALAAAQBOABwAY29tcG9zaXRpbmcvb3ZlcmZsb3cvYXV0b21hdGljYWxs
eS1vcHQtaW50by1jb21wb3NpdGVkLXNjcm9sbGluZy1jcmFzaC1sb2cudHh0VVQJAAOwLr5XsC6+
V3V4CwABBPUBAAAEUAAAAOxcWW/byLJ+vvwVfLgIlIU2e+EKIwOKkiaa6w2WnAwwGAhNsmnzRCI1
JOXY//5WN7WQWhxzxoOTOUdG4Mhkd9VXS1dVL+rrPAt5Ubhq8yfMZidsPp/yky88+L+kFP/5WVry
tDzp8Qc+zeYz+Kz+5ljIwL8r16y836YBP6efs+lixovTz1fntxf903enS3Jxzmb8W5Z/Pf3M8yLJ
0uLUO/312h/x/CEBQKcvBHDyOA9Pl8+L0wsWXo1e2lUZRvA7iROeu39CdGUJfFtqUyfv1Q78PkEn
9P1bxc8iro6f5rzZ8Ffb1Eyqdi5ZmTzwt6DAXOjzesscP/30k/ob+l254cUclJQE0wad4l79DVPy
u3Jb8Fwd9rbBGDpSlB4r+ek4mW0hwDoyNd3WMFWR6RLsGsYJNk1V0y1dV65G6j4BQcMqvPpVRfoJ
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
1QtPTfLOLAFRzvl5Jal5JXouqWWpOfkFuUB2tKW5kaGJlaWJhZGRYayCX7BTaUlJfp5jXmZuYklm
fl6xa15iUk5qiq2fPxcAUEsDBAoAAAAAAE+EGEkAAAAAAAAAAAAAAAAUABwAY29tcG9zaXRpbmcv
cmVnaW9ucy9VVAkAAwUvvld1L75XdXgLAAEE9QEAAARQAAAAUEsDBBQAAgAIAE+EGEm+mV4LQwAA
AEYAAAA6ABwAY29tcG9zaXRpbmcvcmVnaW9ucy92aWRlby1pbi1vdmVyZmxvdy1yZWdpb24tY3Jh
c2gtbG9nLnR4dFVUCQADBS++VwUvvld1eAsAAQT1AQAABFAAAADzy1dILkoszlDIyU9XSMsvzUsB
kkUKyfm5eokFBTmpeuGpSd6ZJSDKOT+vJDWvRM8ltSw1J78gF8i2sjQ3NLHU4wIAUEsDBBQAAgAI
ACOEGEkMIZFEwAAAAPIGAAA8ABwAY29tcG9zaXRpbmcvc2hvdy1jb21wb3NpdGVkLWlmcmFtZS1v
bi1iYWNrLWJ1dHRvbi1zdGRlcnIudHh0VVQJAAOxLr5XsS6+V3V4CwABBPUBAAAEUAAAAO3PMQvC
MBQE4N1fkVGHNm1qtQoOWhQcRKGjSHmmD43GprxGIf9exUEHVwch2910923jwThJxlEapmK4Y8ri
BVpXy7JAuyHTIFnHWnWoQWusGBJNglgMs5R1zwt1mEGL6/0JpZ0TGSqX9Q20qsBi1WNd9dnAMl6Y
K0nMQR6R54ZwhZWCdwridCBC0Y/4Y9oa6xps+UaDQ+KPsVcqp89/oWRa1ciEGCWdrUd4xE8QSfyJ
yE3j/kIRZZlXeIVXfFHcAVBLAwQKAAAAAAA7hBhJAAAAAAAAAAAAAAAAEgAcAGNvbXBvc2l0aW5n
L3ZpZGVvL1VUCQAD4i6+V3Uvvld1eAsAAQT1AQAABFAAAABQSwMEFAACAAgAiYQYSapEGVHPQQAA
4gYBACYAHABjb21wb3NpdGluZy92aWRlby9wb3N0ZXItY3Jhc2gtbG9nLnR4dFVUCQADcS++V+Au
vld1eAsAAQT1AQAABFAAAADsXW1v27iy/nz1K/ThYOG0lSO+6M0IupBlu81umuTGSXdxFwuBlqhE
p7bkleQ02V9/h5Rsy7KdRt303hbHQdG6IjXzzHBmOEPSzGWWBjzPe+rmT5DOumw+n/Lub3zya1yI
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
a3NUQRhOx7OJP8SxUE/UcCqqgf87aOoAC/0EQq9m48F8eFoE20YVbJQrAFq81iNd8j5sZ1ybSr/1
Be3rG74gmAfeFBo1q3dGFfQH4AjcFkf2UNlBJaplkX0BY/8AUEsDBBQAAgAIAFOEGElcU4XLQwAA
AEYAAAA5ABwAY3NzMy9maWx0ZXJzL2ZpbHRlci1wcm9wZXJ0eS1jb21wdXRlZC1zdHlsZS1jcmFz
aC1sb2cudHh0VVQJAAMOL75XDi++V3V4CwABBPUBAAAEUAAAAPPLV0guSizOUMjJT1dIyy/NSwGS
RQrJ+bl6iQUFOal64alJ3pklIMo5P68kNa9EzyW1LDUnvyAXyLayNDewNNDjAgBQSwMEFAACAAgA
XIQYSRUQBkChAAAALAEAADoAHABjc3MzL2ZpbHRlcnMvZmlsdGVyLXByb3BlcnR5LXBhcnNpbmct
aW52YWxpZC1jcmFzaC1sb2cudHh0VVQJAAMfL75XHy++V3V4CwABBPUBAAAEUAAAAMWOsQ6CMBQA
d7/ibUxQqAYNq+Ai0YTEOBhDSnlCk8Ijr0XD34tf4XJ34xVVda0yOCljsQVPwKhaCMTNITvRzMa2
DXlRmoYVL6KkzoncqG4k542ucCL2TmgaIjVNFqM7NmfjfzrS6HH0UY5vtDQNa9cyTtIwPoQrpdzu
d0mNH5fEaaRZuT7I4FEwjwTyCRcCN+seXusYEENrGLUnXrJ/3W2+UEsDBAoAAAAAAHKEGEkAAAAA
AAAAAAAAAAANABwAY3NzMy9mbGV4Ym94L1VUCQADRy++V3Uvvld1eAsAAQT1AQAABFAAAABQSwME
FAACAAgAiYQYSbnMczKAQQAAgQIBAC8AHABjc3MzL2ZsZXhib3gvYWxpZ24tYWJzb2x1dGUtY2hp
bGQtY3Jhc2gtbG9nLnR4dFVUCQADcS++V+Yuvld1eAsAAQT1AQAABFAAAADsXWtv4zaX/rz6Ffqw
KJzOKBEvuiJIId9mPG9uiJ1pgaIwaIlK1JElV5Izyfvr95CSbcmXTDTN7tvBJlMkjkie8xzy3HjE
sNdZ6vM8d9Xml5/Oj9liEfPjX/nsX1EhfvTSpOBJcdznDzxOF3P4rP7uWLrj/KFcs+J+mwZ8nXxO
4+Wc5yefr85vLwYnP59U5MKMzfnXNPty8plneZQm+Yl38tt1b8yzhwgAnbwQwPHjwj+pnucnF8y/
Gr90qDIK4HsURjxzv0N0pQK+LbWpk3dqB74fo2P67kjppQFXJ08L3uz4m21qJlU7l6yIHvgRTGAm
5vN6azl++eUX9Xf0h3LD8wVMUjSLG3Tye/V3TMkfym3OM3XU3wZj6EhR+qzgJ5NovoUA68jUdFvD
VEWmS4irm8dEN1RNt3RduRqr+wSEGVah6TcV6cfwn6F2EB0iR3eOAOIizYqdUQgpXpImT/N0mau3
tzWMfctxbDL0NN3BA80mNtFMbJqaM/D6uK8bQ+L1FEURyFXvK/vC1XGU+Fztpmnhqoah67qacz9N
glxRehnL73mgTu4zzoINdwf4DD+ov4KqxVFeyA8wVWU3RRk8+nxRAN7mEg1+6027Xn86uhxPbm57
k9HVpdoZjz6Mzs+PamPE2q7XSn/Um1/o/e4zXVE80K3IZ5LAeMF90EBfHSVhms3lQ1fp3Xjjj6PL
D+pkMJ64qp/n5CSM+eMsfTxhcXSXaGyWg2EVXPPvozg4vi/mMUyUlEnVXVftR/mCFf69+teSL0Gs
jU7PWZRoRSm93tD2T+yBjf0sWhS9NOOlTP+1FgDpAZ4hSnX107jnup9GE9fl86iYpovpn8kd0Ct4
1pFtoyQvsqUvZPn5SH2n6gpqyYixIAxrjBZZ9AD0e+l8EcX8AkS4ZnneEcQJoUTBben7Mz+o0fdL
wr9GxX26LM6j5EuU3HVW7SVbuTaDEJapEHyxQZFC2vElLESUrPmudNJ1r2OWrFFcpl9L1kK7unHq
f5GziJCh0Lb8uEX0PfwqTuebNWvyMixTMdrxooZvOqzkdX4+SoDLn1FRrZiXBGNefOTLDNhHfr7N
8305bvDI/XEBoEqBLV0xW4KgIUK2GsdRUkwzvogZuAtYK4IVqyUlkxg0rCiBY86eBCLDNLBit6Vk
MPBCTUrYACerOK9GCemvRgm9GiX8apRIa0r2bIcSsqmC6KtRMl6NktnS0EKT2urDfCCoTNLNAEHR
cRRktfTqIXG4unF2AQfPDpYI4aW0088XKwOF7KRIeyyOhyJ9K63UsBUwuVYcdUZx5SrAUfBskXH4
vuYqGHS2HEIF4NP4avYn94vV76KrCNy1XyHbYYAGYtBP60GfWbxc9fGyu3ORCJRdhAgUm4rIE14u
gs+RbhhVhFpkaQg+LngG9rXsAjHlhrM8Tfbi+tuivFd/nQxd9xISpeC6yE4rKFWuciZFRQ5SsL6V
425kVHdF5dTyDZuqVT8BYfAACiwY80Ss2j1LgpjLh511r3L2BnJBgbvMnx/Fsq17yAGryGaqMHMi
rpc5zHoCj+9dix4pGLWCrIPzZuEWqwnL7jhEpTDKeEOCvNPsuJrIz6BnaXYqP9/wUEzpuuMNvxOj
Mx40SJ29V9EyrsbLjPQquXrgWRinX6HJXMZnUuFMonYgS1pIDmW6JLYUMsUAkbEpZMZtZUYh+m6Z
ZUqDIZ2vjTv2FwsX6yZgIW2wBCEPiO9vsPSvLn6NkiD96rpBlZhuqct64vfAlzqCCajImo5EBroM
uw5M20ELMXOsZ6Gdp6xcVZlfYgcmRTyCbQgYMKyOgYGr0Y6rA2xrNtRPfbngrhvNxWYAEqU4zXmZ
0IJEnVUHKSj4J8HSbKcPYejrZMNSemwhhzBZ/577X0RuFoPjDUo5LZCz1klytpENjK1WsnLd8Wmw
YdxjwC2A/Wu6zPw1ghh+9tOEdw70A08xS9NYugfdUTv7qJRaAFwBo91qcnyMfLOGcbycZVsAgygY
RkmUS3UQu4EgXcLmWwLClgW7we0xEo5Bhbk4u1UE9SCaWWhy3cdq2c914efNLpgb7vPoge80XvA8
Z3e8M7qWGXWScLnxAluST/qwP4Ze0r6JjtXOR+mtq1GgzYgcKURvhTcwHIgK6hbHjQGtIOVF4LrT
KXLdZRLBRnS6ABdaR/Ve3XQJeMiWcTENuNDJRrcz9awME6AHcz5PsyfwkATmmaCWuH1MzcO4r5LV
vHTKZTZr/AzBr11Ga2Fq20EZDG6WyXmaLiBbgGgAO32xF6v2r0QhpC1dBkt5mO5DGgXSaxKqkIZ/
FBSH6TIJyvJDnbYVhqHNHRIyHanTaW94c3t5fnV1PR2Npz0PtnSXH6ZXt5Pp5GrqTcdXtze9gT69
HtwMr24upsPbS1kkmU7lxk0hRkuuaAYzJbmWAvXTsVTyXBe+yXQUYraliGZhnSL8AFIOBnBWS1Kg
OrZaJ7Qu24j4YCqk4X0+jibguWbp464eSoIO5TPDDFWg01tmoupXhmYgPUouRLVQhDtDIU5bqpgz
tfITl5BtSbLg5eepkJwSpFC9LUmEZ+pUbtJvkyKK12QvhMGAWxQJRYlaFE+GUQxJETCzgFfDOL3F
4pBxCl4ONkJmM+DVvx6vmYj1smyF4paUHG7Yqvb75bheaku2oV+w/At4JpBKFEjdSEoBfqgsmf0h
zcdUKGnHHNxYSHaYZ8tEEDQcqlDajqAJTouqDXIiURZ2ZhOsULC0OJo9Lvzj4Ak+7Nbg6+RMyqkD
wXIK/afp7E9/Oi9pWQ5RwDe2I2XqEDkEpYoIdXSFWi+uoDeds864gdQVJch+O5vXAULg4/ncRRhi
PWx+BUyAGBzA2VBi5GPDdyDSsEwoFFrXSdGzdVLBoWrU5iyBoJDJeik8z58giZ5Pv/As4XETQsNx
gAvCEDK+cKF1JpWpjCyF1mjvkaCBfhb42OTqdNV/Or/LpmX5VugTXkuD3fbwdIcycJHiNcxfsj/s
w5dZ0gBaUVuUPBvk6tQCZoQkCMppnn79aw0RkTVE0h6iPqPgD+dMCJ7fTYuMLfahewEhZtJwTUhM
nbFVNX5JSOEzWg8pa+30769TqV0Y4a2i8EvIEmu2G6ngKdoq+L5CqGpWdb/pfcD5GCaAuyw3/ZPN
qlqyNttGQUysG6BuVcfpLA1kTRXCktWWEgoDa0NpbdqWKYuzLbWWB+o2oY3O0u8xK2oLs8r5/CuL
imke3SUsbqit/+7dMdrvvOrTr6OZGYC33mTJxX2UV+bvunnM+WIKWV8t0/bvszRJIaddZlJJTuM0
uVPFt3qyLdtOUfxeResXUzGk2bWimGW0fatiUYPAsszmLIZ8wXU/cgZ5ae4z0Jw7fi728mXxLt/d
GYgE43Q9UpR+Iv9iWfDHs5/quL9HurjaPliUtH1fY1EawB7jgET/ESmwRdq+BQIpWEi3pYCV9svs
c7ySR9A37bYvfixqYr82SV7+lPgTyK1OGxzfq2JXona2YPx81Dk6E3otVLryWhKIY7V9+QNAEAT6
1wAiS+vXaZQUnb9DTu7BnLavnkAOagWS7M81fZhWdj9dZOnj02nNJyyB7GmJAtj+PcDv/9b8/Qxa
utl9Qkppv1qMcF4vRoiXZa8ZIwy3njhejm9vzjflhbJK85b4/LMSn97wkhci7z0QeQ0CuTHW1Xe/
by1np1zPI3VaL/7JEswfcpNNt9zWNuxtTtRChDsYpuFyXOrTVG6nykoKoUb77OigDdmvZ0POK+dZ
JtjQqhyrgntMxZvSuzez+YeZzTcJctu0kLpddNuO5d8s0DNu8bBeoF9pRHW8y42SqIhYHP2b15MG
bBC1s9UXZluUDgxy1DoQE1M3qjrrTl6wjnLIstseCQHC1AxLwl+LcHKYttE+7h20/rZh77kIil7X
+i2w/k+jyaFTeu3Oqfm+P8P2rP4St7sMQ169EfdmObgFvwC9yFIvh13aLF61/Wab6yfVO/ZmN+hQ
FlQhVfy0nEMyhJcxfM6/skXn/44hbCeWidhXwqyW+4bGr6UpoNbH7ma+blbvKz6y/H7CAIEXiLdu
y7g4bT4fFRx2KGklR/3IX/X6+1/8SZ5VuGbR3k6VsMX9qPdBvJKWLkW+9D/bQwE+Dx7lNK5eyf8N
+uqKw3WRCYF2h686iNYLtmhHvw3xScaiIn95n0MCNeejHPESNqr496OJyoLguS67p1Cbh2j2jvrp
p/LgY/vDpDMW2OV2betobMlnyPLidNUwXs4qvinY+3rfLzduO0eHamWB2sfq5E9U3JenirjYtH0H
paOz9QHXEuhekGer5W9qxH8Wudxctj9+ixlzjBceK8bIcNoWWl7tWLHR+phvUDvBtznmmy2r81RS
JErNtiUVoBzKov6mCBEuk+q1efn5dJdt7ZfOkev+91Sv17Vk1WATOb4x8mxVbhDFmXRRKmXnqHxB
T94yun9qRmeL/dxkqF6zDBacx+pHHi+aGV27mjoiJux5FqImdT/1H0Rl/ftK6pblO0a9GpsmQSQ0
evrAskikNrCEQP1AeXfzdF5WdqVpWa2L5RjrjFfRk2XCMZynYAEL+NxbIYKZexrNF7FUnzKGrbKr
sQ/GEJyz+Sxgp+KklLCQ5kHQRpeVEa277Jaji2jOpwuhrqe7jbBOLHia+mIO/m4tu/a+oaxpm8Ru
XZrHiGKynj+pY6WKXcNklCs4TLNeHPGkEA5YFDLLDP0cROBVEik+d1nO628+dvfRL0GDnGfQ3MvP
pe53wX6l+7JJ61L7i92X+b/nvv5flKOcN/f15r7e3Neb+/ox3RfS3/zXm/96819v/usH9V/ozX+9
+a83//Xmv35Q/4Xf/Neb/3rzX2/+6wf1X+TNf735rzf/9ea/flD/Rf/5fw2HjB8Ao/kDYLR+AIz2
D4DRUas7FMXfxR6+MrHlYUyuh0aAasejuk+FvNbhPHrgCc/z6yxdsLsy+uzt4EEgfcqj/EweaFk9
HUaPZbBrjPmQsUV1DG19u5z4m5Rvd/qp/Osnp+WhSZCP28xXn0V+uGXf5XvgD3FLDIQgbqpNWq4b
bzEbx+nX8s6JtvHaD02bm9UCgm64rpzDDQuI1ftEIXbbWAycHB37u5yiXMzdKFnNZHU1WZQVSxav
rmN6v5mDqyy6i5LySBVuG6l1ZNvYroGobte4vmdJkc5HSc4z+dcgWzCrO7Yc3DaC68ifUVZj2LgR
clQd45LJ5KbPeSruX3jgQXmAsUoezLaHonQ042z2Ld6H+b6vDS37invL5PqbOml7kkrnloPqmrbv
ONtBhkg3SNtrFV+elrW8ZbFNWtb2/NUzh8Lw6x0KI6+cljmqX13T+xVyenEHchVVVKlKasek2iwq
jlxFVTP26G7uz0WYGYzrNqxANqs3rL7AzWT+vgYw/SzY16ALJkF0gEke7RsiuC/qI5BuhgFncsSe
BkMwUTN7Py41c3YbaAjPkb7TgELZgHbxgmaKFixaoFf9yxcNpDHE4aaNuAAMWfKBEUZzhENthOV0
RQ0Z19FdzcJ4CzDSxV1LsN54ZwSRtJTz9C7yWaz2rm/LK5QRVgZZlmbyWmV3+1JlZSL+mOtyOZ+t
7us2FUXpRgnLntTRnN3xXKhNNUreKOKIFdPU5sMgDGcvv9+8I6/z1tT1fd7qaa87RI7dtzQT4YFG
vEFX82yPaiDxkKABGkD72T/75vPGjKB904R80AX1HYyvbiQf30fzyvQ7OswCzEHfcAZI63q2qRGn
72hOHw00G3nY68Ks6MhqOwvD1cP8ZB/jJmw824Ht6zYLwz0X0OxbRs/EiFqGp9k9b6gRanS1bt+A
T11k9geGiQZ40FaAsq2O07d8fxenw7iY3h2c5/yO+U/70NJ+3+x5eKh1e2K6uwOsdW3T0pBjDSlG
Fur1vMNoS7rPYS57NJD7aHeGAyvAYfjcdWV7sFtD5A2wgzUKmZFGDFAVz6BDzUCkZyBdt4cDex/2
JuX96Jt96viDAFs7+EMd3PLOzB8Cjj1q97qeo9Ge7oGKEFvzeh7SyMDDfRsNHYwOqchhxFVjDSqk
FmIamlDhoe0IZX5XLtCE58XNMkl4NkrEJRo86C7FTX6lNTq2afbQsKshz+lppO8A0j5BWs/Tu/rQ
tInhPGONh2gfz+SPbS/z/KCmYCHfFcwxbelcwKSryRC0xsuF+P8H1H0MIralg+ZoA892NGKSrmb3
7Z7WG2Js0WGvi3v6PqmeIayUKETCYpIQsQ269UNDdzBoiLhfSu0QgxzjYyq0WLcHxDYGmqH3wAKx
RzTHJj2N4oFjdQcDSqgJYJZ5JvifiOE1ZrZls2CbmXgYSoe1ybJ8QJ1XoWA1F45wAKhr9QzL1gzP
IBpBPVhhxxxqPYsMdAKr7BC7xr6kdvIc3Sa6mb4HXSAXqoYuSsJ0hYoazjHVj5EwlAEye7RLNI9g
C4KBYWlOjyINUeIgcFGOJw3lILgN2SYojndBBcIDNSz4ggcRW11l10HHYgQyTHyMqdAiyzAH/eFA
18y+A/Ga2ljzBlT8igemZ+kUy3g9LkGdR7MMMop6LKrT32/T9R4NCfiuhsHO0gxCvxGlHmT+onZs
iR2+A2wCTt7qgg1buN/VCOwltC6xBlqPYCymGVyT8Sxsz/d5LP5ghn8z2pb893cr25SGAJa+RyqL
bK2LKJuL9SDHBPpSU+ROHjUoGlLtf3i7kuVIciN751fMsc1koLAvR6ytGlWPOE2pZ665VqWJRZa4
qLv09fMQkRsikVlpI1rXJYuMIOCOcLi/5+6IjLkohAIViS2sYINrlSILktJyUak4e54/PX5XoZq9
799Ur0yUkR1lFmaAibBI/0vxb8vN3uwZs7dVFS4lSzIykiz8rki+AiCgQsckNqSE77L88vP55XCU
vi/r7k2vL388kaNVYWE7KizdEKlbF/D6sPcqQu22L1MqeQoFOJVwbQKwNhT4t2SckV6xYgT7nm/Z
D9xIZmlncfHLiaWMTxVrq+Swd00NaaEopg0nTFtJREkZqEEzUqJynlstc7H/b1MZr7WiMt4Rlc8n
cOfp6+rxZQAcm3pmkd3q20Hm6m4gdSjGcWoC/LIG1pE6wcALhX2kmGN02WX+Hgb+F4hxvxOjf3dz
S6sqX/RUXe2c/T/eZs+zR/zZamcrRt/y0VaML+AL8O3caEuEsZ44DhSdrGCaWQ0/xbu2Mh20kcix
jgU7KXYSLf7wh9l8s9+CXEESaz08IS3EmhqQKQUkLsEDotHCLbXBBnckyWSUdnrZMVM3X65XY2yu
Br54/vb1de8FuIBXG1dEGeNK8ZTI5IASfYKjNoWDHlrAFLCMFPuReTpqI9JC6VORliu5W5Hw0d8f
XBK3FSIg0DIOj+SdRaDjFuQswyNlF43CHudFs3eLGKsFBujf1kjXKLVcdwLHituJO/h59eXpdfXL
ZvXrjhRjwYfQ6CoUig7cTTtoR0ElhAwGC84iAVoPqsgUlRKnet6Nh32PdDid5pwbnt7XKLWSqqOU
dLsn9XX2BRByZzc1tGdLlXA2EecrIWLFEpi/AriNzNqQbNC5tdyjMSZzz3pz73fyor42fTe3HnCk
ynCfGXEKCA2YOmDX5CwIjTIz7GDpU9/XHw01EWHdEUHzCRGvaDw8vK1en55eP+9RWt3GyYBiYd/m
IOo2NnAowIyEBtAYI3h0vad57DGPRz7j7o9vaaWf9Sxysce9P3+4u/V7L2gtwEz1PbTEkqqbdyEj
+JssicX2IkXZmFgGM5fqu0IPJYPN4uWK4H8kRiv+wvXEdztS8TB7e9y/ZPYHdUDsslgWvYDf5hG+
AgyCgGMlsJkCKFMfiS1dMzgecSJKxxTXYjVJt72sFm/Pm9dv68NrhH7QgzEoxXgFVkLCGzPAQ1m/
oG7Ir4WSwPqyzUohogp3GSPeb6f4Hrw6va9RaC07HngtFxPDPqTudk6qrq/3AE7CCQJFUsUBCu6J
GYLIKYMD1qWKX+OjDqN/L3HYyq468XSt1hNH+zi+BO32pb6qcvhmrsMsdY/yrTaagYiwBC5SWIXt
YHqWIs45hyCbHfUxuWu02b507b4z3bFSJ7cd6+bY/NTh1Lc872z+6MXQR/Sdc1mEioroLKBChvPz
zoB+UCddzLC5bLoGfxiulWIhOlKsFjvM/dvLw+u+o+0HJm5ZhYfMBZ4c1jBFjtAFsEgc+CmQdg6O
AmnnUlrPfzxOIwB3p/vN8bmcmOefV8/z1fMTIqjYG6cxmmYawYM5R/wx1JHAvSZBO0hHaczhMlDY
Ddp/fLurrbjzjriiVo7ENEwMbPrDX2pGbgwTEvJWoCV1oCIU4rU1CF0ZSMcXT5RNMjCPWJHkd53u
dvDzcWJ7w00rp+0Jb3cm9/fVty+fnvcx3g5rbKWykpOUDeB/hOWFRBnoe2ISuDDmpLr2djxWI4Sc
n/p6Z+aryQoe3uoPd8RuGf7AKHtbKVUAd7UpJ6KyYfCsATs4K0O0KRZMlukc87uw7w8XsyX7yzet
Jp1tbRZ0t6FGqW7DgQQwUQNZ4DKokIlUpSaXQUWcxw5PUlhQV43Vpu2OagdqZLCys8R2JnfP+a8f
SjnML80AugG0rUmV4WFHGw4kIBP8YzaR56JdFpdp6pBeOWeQDQg4zN4KPTvFn27m1rX2XIWur/k/
YBg9SG1q6Qasn4QIExVJZmK1C0QXZZI0hhkT21U7HqWZfm7M6fRzt9it2X/e5R8naxaLjK7IUoGe
qNSeEuuB56NWxYVQvBTundbsMHsrtFt2hF6qSbpzFx93GU/GKw0WQ0SkKjIhsXeqC631AS+BpFQG
iKmlIxbjpZRJM3Ir2vIUdjjw9X14a7854Acp+a0aQZ3HzIaKSOB7wES1syQorLBRKTHufdKpL1Q7
5k07M+uIw5aTtPX4MuA90NyT45QAK7kNJEaKPcJVdYMWwpXsqbM8WEcvrdPxuMdyzUzH7GZAoTvK
/s90f7cXh1VcmUpOgTPwdAckIyzFJrWew+pYCtpLBdf8O9Hjg3CNTq6D5rGRD1Y5e1xWr8oO8MZW
g6yMRGvBTPTw6NTpmo6MCOc0EsVN1joV6t2EU05GaySZ0dNk2Gymp7Hmp5/i/ZDhxZ2Cm0GQEh2e
q9QkJ43AJyRobnYS/lkAgOXiorHXYMU69plsO6600up1R1q3d9t3j58mHsgYxOIMv1O4qFACRCMI
UA4tCi+BO2Z9eCcPtJ+8FdmpjsjrxYQtgZbMlqvX4Z2SL4uxTDlAIuE0HlyFlFl5Jo3PROsAYFur
fuD3lCRRfLDgHJmVa9a79lCl3VTny5cntzVqzTtlpNlCsE4y4G+vm4eXajwVoTA2ugvsShsDsBJL
pe5RzhAZoJsyUYBwFAX2dI0y+wnO47zh8k0rZ8foF2pa1tiPWL8+42FlKWcMetBhFzAw6VvDhgoB
ggIzAnFNRThAAYwK34eNYZOW0gdE2kyvUeYwTV+bw/VWHSU76hx2xY8fx6rPPol4O4qNKAF6yiTh
0cgqtgBHQXzjumCKUozOl/l3TTz/+LEv63j7ZtwajQSN7Eva2dFLriZRZ/bysAfd2gxdKUr4qAKh
quIapYFrbLSEU695rMW+zC+Fm/2ArTTilOvB0HmHu2wLedUaxkRR5Z0K3EoLjahnZCBB6kiYyFRr
5QAfLieK/vtt9vz6r/P7cWL0Fwp5+8s3rRqyp9tsstJbvLL67XX1WAfcW402NaVUIVHwygZBA7HC
wKcGmIz1WRAJcgHjTA4o8wpINJliIuy8J+xiFyAfZo+fNsuDRQ+kR0kvvaeE51o412A+jsLVe1gy
Y5GCeE8C4/Eok+mXnekPWGj+8uWW7mNzzTp4AV+s8Lx50HDOJho8fgGsWJtHQGA9DaGd/GiMdm62
6s097SM6wigjBqm8n9W/2/5Yf6qrAlAGLkgRpUXtfhKA4AWCaUhbEtNRld+lVjBeazVd0Y6mFQWN
Bdn44/Cl0evZUYcEd3KsZHoNmJs1oS5HIuAFiAWnIFl7oanJAS7g9yiaN27uVOBGX+ZOUR9+udwZ
dd23v/w0HoXbZ6Ld2HcBEFMA7oii1VXHYAj0ROB0NhanjOdavo+rPhWi0YHT0+zOnAs1iftpM7w7
FEIcCjtjlpHzUSPNcxSZBaI8t5Uv8LpbCwGXdvgXuef+uzmey+WcY8xzIs8Z0HNy37H2C7E+9aEL
sZ5mWxGn70fMDdY2oDguBvw+FI4z4FotGwZWe50cq7UFnkgpReTMgzFBXwkWtpOcBQvb640Kkp5u
uoVk0weIv67NYLPN4+q5owQ4Js9FOuKKsLWwBbATqCU2RhN5TS4UcaUS+2nOqrG/o1WkA6wXirnJ
s7gbD3TMHher3fGY46IUdSrrwGLN04LE2BSJdUDWTFPJApUWLOYaRTrT9PXp3HjTajDrqMXZRK3/
Wr2W+x1HkEMfEdZdRFssqE7to2AU/CDWHihnvGUGGunL9bVhzLOJ+nLfysnXHTnVYtrwUd3JZrl6
qotu66JLNTpwmwL8NCUIUAARHBTS85pmEUCfzibmmPnu/h9GPg+Chsut1GrZkdpNW0X95vnuYfZt
21C4K/dwBtFrytcbU3EioIWq1k8zDJ8Bixpu4IuTkdFeVSVppzlj/809rTLuNDOy0EKddM2BWoLM
DWDVjNV1Zm5FpQCURhmDSiQbXjET48RKPBQpHHVWOB5Tej8vvJPkXG/dePWmVUf3dFztMMLi6eu3
+obx46atkS7TqG0SAOQeOhCRC9iNY55E7IkoOCiz0Ge6NY6HnEjTMXqtZqf+/2H1y50vxyU2eauq
+dfPGgVqK7csEKzUswU6WUgHEpNBxbTRxQlRrqaMmOoCYcTVVgk17yihp0p8BDg+9pij5QyflTuy
XBNOksTaqiUUL8RJZUi2UVEusBFEvIy/Dt9ye7X9HIt0Bsoc3dEqrXtKbzvnjmoqq82X5exhH/EG
XeGMtDaxkCQBM8HnAL6UxbNiSiF8K48Ycs2z2g5+rl1xuNgKvezEAjvfdxJvFm81VXTI+SvBbtUQ
C7w3PtaNTLGlhWeCWC0T2InSQcLx8pJaOjIZq5HDsQ5mcHp6BKMu/huQcv165Ydt09y+TB69E7U3
11MwRSFEJqCMCLY5mJRVEZpfZe/TOc6bwfFdrTY9t+ncVJufMMbz0z9Xx1roGqc41lFFW7euAgCS
ejwskCkL0dB4VcpzO/YZR7i9OpG6Y8BzOe1aPGQRhozbkEHU+I8bEoiVf3gPrAMWKIoRoKdUEGhE
ldHRKaX/rRTF4Xoj+nx9WllYLBSdes0MPGPZ4CbrZ+X0PBQBv6IIG5w44hGxXHr4SsMjcFsJyrxf
fPL5jBvNN63oXX3MRJ+Xr6vV4vPt82rx9Olx03anYKuC/LvaDFM/a0AAB1AGFJ16ADdhXAEeCh5c
D04npxgYY+9Rsr0fpPq5J1TTMjO9bbICp2XyxVLOdlH5ty8P/KgVTt+ywQfgSfISLUmilohYLRHF
QknOStqUtOdRTXoijsa5aefq7Ibl1qQOmaba7vJyyGANxaqKDbR3uSQbAPMDoq+tiy0k9rGIDkhO
1b1xKYN1NG4rVs8yllt8UPOg5X/vP8+eV8uTXGwcqtsJ8CQwwGFPwQplZvUQiE0eG7aE9E652FaG
ify9ZdVssqz165kOHcN81zFsJS1KwHpDLc4LaoBpaHCk9rokHYGLmb+0qkfDtlKtOw57uXYTh71r
OPu8+Y8f3LbRjFI9tL0nPGMGZ60dFjcLD8ODYDIDqMBr82jepR1i12f2pw+X+9D+9KHRb70+7dJe
Urnvcyrgv+OLD56/HfqMxjxYzJIlG4feztp+pmKt9Bc4EKNipDpqw98dh/m/3l9RDzsV+6ZVUPS0
Xkzz0U+vm/WR2vXM3tipxqSBFyJFVOKeENasotDepyKEVQos8mIS+mjciVzLjlzVu5sJAfdvtcFV
DWktNaZFQoCVO4iSma3tcyCGufoVR4U0sZ7dNFe2z9XBz3LxerEV2p6mFpdD01Uj9M+zXyNGfJ5t
D/wNCQQ5tg65oZnJ1Uq5KoR77eCiWSaOu0yCoQDB0ghXOnnG4yD7x+kc00OF++uNAoL3FKg9T5N6
4sPT8/23x0VF6G6b/HADSncMj58HQ3gGjxKK1u2ePTFBFKdcodLld98Je3nOJSG2lxtdpTvN8CN4
0k7qJL2tXtNq/vbp49OnTxNI7bzOyjDET+/qoUldD/NISvB7lesRK+3ZtSXU6TzncyrTO1vNZqyn
2TS9kjYvf/fP883r87YvmN/qgW0NKYlUikwuwAQjmEKw8G21nVPQIjOiIE/hcs/QZPRzid7mpokW
pqeFndji1+fN41HS5vau/jwkWQbqqCvNF9UZZ1OIsR5eqvbg2SJrswbNBhBE6OLfI/LctbI0Ccd6
aaJfZ6/JOTtNAT+s7n++G7DqjgDZQqMy4PmpNp/ImsY2tdkxC7B+oU2S6eq0Bca+kLbA1Vbq+WnR
HohvKnU9trV4qCYlx3pD/aw9pY4qKosnWaXaCouQ6Zg3hLqiCoVfc4Z9F2DFj+dPYMWPN61kPXH5
cgeRZ8+LzxswwD1KBjTddndFJqnRoAJK1o5SUc87iXqsVWFTB+UEzRPyPhmsFaRzhhO/nHa3VxXS
5nlo9/g2WPFAHpkdaBjHnjScESoS4pplgXhvBeGBmqQdjcaY7y7efvTza7i/ZaLBsqfB/uxL2sw+
PT7V/vGfVi8v9f0gbQ0NPmk4upwRi4UGd08RpguX4hAXiAqeM5sUNWVSob087kTEdUfExTSnEB+e
3pbpabEvQQjOxjKtt5wzxECQPl/rx9oQMEJNInabj5BPpqsyC/sZznjw3eVG+pnoLPDsAEDfHn/d
PB612o9dAHBgisGrhRplhVeSOOAb4pK19UUEXqd+fvV4tFaMHiKcqeUkxfG3+eYfb0DR+360oT04
FaUR+AxWrIb/+t4MqyGdYYUaxo3h8qoF3I3eX7/d1VZu1YnnM20mrKl9rRKscn8s18dcm/ngVWOi
tRbKiM85EKlZFlFLJou5hGWbkVvRtO2JNs31gpjUV/H8zzN+7Nb7oo6Ma3B1DYiBOMYdMC2wlgHc
tomZnOVV6bt2orMs6eieiTrzjjrzadFpNhyfrmhlOEhd9RFbrCjGjG7WHtxP1/IljIVVjFHfGVCq
FTHOtq+EuZxWGg9pnwVKw+VW+nlnm81PaufjrEDN682ntx1CgpuQ4/lj/KcCC6CkZAq8RKqFm4op
PAfkjdLT5FzBTrhc7OvMcuZxnN540yrQQUtrue8+++jvfPzz5ARrcZwynyE+FayWP0JNBVmCIJyd
A84DWfqdWnSP5btpdVA9xdTZRpx9xvXoV1v3XlhwcE+MmCwDDC4k4kV9EZEHCmSF6Vzkv6Xv4Xqr
w+rUpcJZiWmu++3hdfP69Lb4fFKLrOk7OcLz+jlkU4CWasVfCwFfYGphLSpOKM+lwD1Yoa7CgBcm
bbLh09tuWl1kR0G22lnfSR+bGpm6CIEyh3DFXD3LrT32j+ecMAAszZmwSk5ykRfa1TDhuiMFn2Ks
k6TqmKf/P+KurDluI0m/81fMo1+KW/fxWKdGEeO1PbS8+9rsRssMSaRCFBW2f/1mFvpAAdWHbcbs
vIhuYAqZQFXe+SV274ym6pi5VIoJzkGBRZbhBQtjCZooBJMkzqossrhKlXUfd2W4dx7EHxhbBqkG
LuddaJhDenmoPKFqpiOEhss0u6g9Af9Boe0FCo6ZCA465zpJyq50G2o579szpb5NYA3I23RoXiQe
fvu8vt15/N+vHsHOGwHhJskrpzwDsxHMCo7JTiawqNASlkzKIoXiGb/QqDpb/ZTmm93WctMJLg/c
spl59Oburk1fOlO4p9wSKWNBZWcRUUwQcKdzEC6GdCG0DCv26YULLYWW9yjke0OoAarAsuxjaH4E
1cAcAGcahGMKHFPjEtGtKCk6UWo5uGrzU3liyRlZHSGIh3MnI9Yvn5+PfpiEPVvL7a1PzBZHdD2F
BmEIrKQEvEipbeRqzJZNUScm67QEbJd53EGwuYHYQEV/x42t/T6o7RPXgiVhSUwZswNWkcBlIWDT
UsEz2GbsbLXzdOWblgjboWzVK+O/+/3T/dM+QFaLTTHsaejOQizJFzT8iUkM81chkmAUbLoA+qCg
ZR78tUe8edTp097c1rK16mxEMKNPFvi//aGCB8KBGVuhKbz4HWPURaqYBWFFExyfEkHdgWsDUiwB
Y4ZHe6FKvq7d56JeaihHl39BuT5WaX/7/uF53bY7cSadwSJKmyLYFjnA+cauICeiE8KCj+79f6rd
6Uhdw5VmHS2t2f2eq/gmfn/Xg18oigEbWGYCmx54M4g3FhzhRXGE6cPqoNeEX2gImbHQ0X/azkFG
e0Fk/zNIZKAUFaJR9UBbOCqZBkbgcGD5Mv5FfQLhonUE4UfFhXreV03bwIWWV7t0aAdwoOe6HoMJ
H2Bv16jCeICsuMVGAVQ+uz9RlHoNZi8HE0t4NLaEJsHBOSoahBoajbBJz3/F3QPOBDXmB6lW6C14
WMBxNvUBP9wdq5U1+ObIRv0XtSh4uWACYAO9KVjw5IjlGrSDThZjYcpe4TJe/amOlJwIlt316pOB
v44dahed45vh+cPXp8/Pk9JsNzY14b947HJmTEhOVEDsGOMNsQyYTYi8k5mBr3dVgWMaH7SnFW84
EY5f3njT8tBhbL1IyuE7Lg3eiKs9Z0qMhZsqUus4CEiHqEJCskIcN+A1w8Y0Minn/WVxcgltpL2n
YWPb6XYatmwRJkTs7H8P6OwMXw5FqPuQLJgCGJGRkgO9kVDPIsJcYDgT/hOBTBWn3lB3nUndedYJ
vjp3ttxx1eFuLQe+zCtgu3ZTWaW5SdhY70EwEuE0KDGOeXqwCOGrCMecvzqxUHvBT2cW8HJL+HpJ
+Jbxedpq9W2KZTPWBFvrbnl18TkFrw1rA7VHGDjESwsGnDilNdgLSkRr3N+ECZzecdPQKtcdBpRa
9K19+vT0OKatGw8BjjU4A5rAIgLhIjD+COal90qCoxyKuq4Y9bj+qZOxv95S30FA27K1WgQpMc1R
1QxW0dJdNW2N51FrRUiMRMSXAltdYjQsE4mVtDIl67x7PeF8IOSUF7e73DK57jJ5xJ9abR6wKWDW
vwwuf7YVAEVHjr12iTgZCkksIjKiZtabV+pfbiloie9U8OGPnbrnmVECGw2r/mWVvoiZyGhAZFMw
5gJ40MHDNotZ8aCMjJmy1zF6Ojc2/PBOe+FWyDk83eLdoduzQ9cZP09Q2WdNLckMQUmChUMT4dAn
o7SPNAXt/gYoyO5iQ3ovGbZVdjtTIfX/Glefv75ghGmslBjrJEwJWqUkQTBhG7kCBW812GbgQqSc
nGOJvQoy65SCM+zt7mh5dLTD42ZzTQJ+V/o6NmlLNRYLpewcfDBJqJXYbe7Bl5fgq0pw5JTIUsmk
Xt3cPpBzJi8/D7MBl0OH9eHgKd3/gVHCY+9pdQBTsaKAw43mDehOkBZOFkUit8CdwRL1GdZUs0r7
/KGjSQybZ1jevZ2aWUc1LrUOqYCrRoMrqEkocYg2V5wBocy54/oqNT5d/0Qm7u0JXWh4R1YZvulX
5z7//vj116HpJ8B6B7AXa3ij/lGzi9GUZBUpDFhCAA5iK+AK58rQCOf+QlHKX9lAY1D2bknhMnJ7
uKl9FUNHzFl6Pxdz60ZemxrZwX9qFEykkkUgWuHJMeC6OR0C4TpFlRAyplxVZDR9xglpsD4hrG0H
9GO7Gubmwb788x/fjZ0q8F0EwwxrzTeBMWlLQZMGeIF9ibh2oH948jZxnzxT/iqowfOFnTctiR2N
f88PBY6rlyPKLLN4kD3X1FgXSJJYZsG0h4PsKOEKDBkTrB97taeFHy89TNntveucgfVqNQtWjMD5
v31FiHc57vjxD1QToJQ5IipYTKqLoCMJAlFnbDDOCypZvtyfi4ufdpLw6k1LYWe/btxwRJjic4Cp
5DNFWKkM/hCmSijO9pC1GpaC5MsuhlcDmOqEdrebDjog/HjEZa0mb2wghWFbaLbHTcrwwY20KCLB
yxYR9mgA+VKjjWCRBGBBnWhTm688I6xzajaDPqRlHx7BTvUf3w/wTmbZWaApxuA98Q4rCxHRwObo
CNUpMJW1icL8p7KzSzJbNodlvHQ7YLtss9NrxeIYL8ZwB1NjWAAdz0KF0SwRYAq7LSwFyYDQOuBW
M59MNFRfF+o4PuFUjON4x4QHsHWWOAgOnMluPd4v06ZC7B0RbNdEUqMCoJiEwqZUEznC1QpFPANh
l620Bs+E1vb6tsKzXYW+4YGpbYcHfYhbf/jtiNU5zWyA/sDGAFSsWJWFcw+8YA5cZ5dw7Aq4DP3M
xnHBlg7Te5drOcEXn4B1VpBmFpwSIETQUsHcPJiJATvCQ4pMOQVLMrqAF++AaTnKV3L5cL5az/I8
m8fn58PLUEbju+A1SxqVB6ZJoliiGBIWXwdNEnxHmgQI4nh28sdk3RlZmyVZ2sqKoNZqA/8uwvep
XSljx3P9C18S11JpnNBCEd/EWvhO6D9QJ31tH7MxX5vegYecKZt5Fxvit8MiNgPKbQHOe/QCcJH/
eSgPexxUkM91pzGwPV2Eg54DIrIicB5YzWDCpZSwCdElf3UOGtc/zQJevWnJXX4AVtN/ZjHeBKvl
vzx9vBseN1iJNes8t9ZwzZUm3rAMxwUsbY+oMz54Tq1TLLqr0IaXjzoz76S5r2GMLRtU8cf7WQ/H
Pc4JPfRh1cJop5lKjHpSIqq9kCVKXE9YYE4l8KGZPzuJYrrkjKT1kiTODiArb/71btF8JUMEIwfc
FK+x/s6D/LGWZpK5Kz578OGzeS0grHcdmvkS8gd+5PM6hY9P7x8enw/h4IPTlTzoKYpFCQx4EFZZ
EkoxJGWWfNEaUbav2RR1/YsKe0rFCbU9uaPl8150+Nwhv04gO748fX1aP30ML9stngFWYWPs7Q45
TnKXA8XaPYp9HgoMJucDAUVhweIzRrirVFz7lFM++vSehhfVUXgMNtEBkP2PT6tbdchoogBKVGRr
QCObCLsMKzIsk6D0IjfFBPjRzMZYTNdoH246506tXC9tv3OpKjLRI7a2c45N/CMWT/2rokQJRINV
hEkcK1YBRQXmvKOi2sA1peLV2fvZE88k8Gd3tjwuA6b4431PaKK9+fz8cP/wcVcXXPMkFd+FepEp
KFGDyREBRhAJHEFRfCrgKYD/XvTlmVDN+mckZXNfy01PjanBLdKRaNT/uHocRsjEsTHG6VoymWO0
vpCEZWtCKEp8CZIoxgTW4lrn1WvE7aYknAvjj3fMmOxsS00PE5a+gD/18dutO9o+GL3SsNOyZoQ7
hItFK9zibBMRVIZfksp8dizaZRoKtOpo2pqlXwD4+V/iPxPa0KZ2nCuDFukoYbICP8hEkh3CPVur
wZ+0cFqLBvULJp41+mpbB59yxtrByy0HtqMLHN10jnYaQV3GSBXXNXOrPDeZJktUVnWXBMQ71YRr
yqIJzlxsONotfKYDrMVoQep6JK9UJ9VeT0lndFuMvlhFQZTzbAmYZYG4lB3hIUjtJAjOVK5DfL+A
994SvtI9wuez8NZNkfRhxkodsVHrNWuSKWaS0GQXYNnAVqGofzU3NLliQz4/VWux/ozM+yWZGzZP
T1a0o9PT8UIG6oIVOK6owK4O2NUJtpfK1OkguU0XdsZ0/f5bnt4x5QAM1kXHmRN0WC093HGG65i2
F9LeVmTHLK1KSiOKj+HjHCDnQp0WkjPH8SzlYvj+RLou7q5NyQX/c2mnCH5vFngnOCFlWjIib5Wu
NSP4R80Je199SVwTqJdgYlKOMjvQlBS4viK8Xl6ypecUMsr0noZrvrnvcL2ZV8y8/eHupUIc/uM7
N1b6uLHKx2fGIqYhJGLfgkctMAwH/xktEwyMG+HYhUK53cqniuV2l2dUL+0wIdiiw6WtXmSVcKWp
VLXsVCoDngeR0mIzBc7cTdoQ75jQtBhn+FVt21fULZ6qWUSal1JUaHQCmkjWm+FpCqlYDzk1Bo1j
O3agg7iRkqT6EaTgxEYriU7ae0pl5OIqYL7JY07U/h5vuGkpZj02WLdF5+Xx4evzbe2Uefc4JvYZ
H5tcRsRrUGDScWIyFoWw7GFHgQSQ3sWctU3KXmjp3q98IpC1v9xyIHsfQg7Hbrj1EY20in9QqgZo
iwwLRMFnJIGCf5J4BCOfB5MMPdEIt6yVxCd1NrSzh2a8T8N6NQnZaq0rUg7NyfqsMjFeIQY1Ap/x
nEGDWsWzppk1gMjzhRoS3H3nG7rNqQb1qS8qYJu5khQYHFbBJwOJF3CiqSheamuT1SH9mab0843o
DdXDtvPd4MczFX/w+nC76bHFzSVvQSEGhePJsMgCIasIiwxnE0cNu+1vyurpHTPSO998u5ofmslY
Nexk07uONr1Fy49pB8ZGcLD5sEXPWRyWpxiJ1iBiOM1O0Qvi98JwtckNNy2hvEP9MM8Z//NtgwVb
UTM4Uu6cT15wRbBICuwnjC2qgqMjQP7GxLm8kJz7K8nVIzWnZtf0vpSkZhlektQeZgD+tvpyjC9z
hdrFxKTBWlHEGSxOwvCM9TYQXoQojLusm4FU7SLtw90yviwZqIihtVePLaZgiOxAu0EGgB/vNMlj
11YCxSAEtsMbYUUIXpizPaYdUQWPZj16XMfbOrzscpe/IRpInetTi+zrWID93xVGCDRuEiDJwAMk
WMROrDRgPinjpMdXpl6x0nZPz4kbd1dnbC/dXCkZ62RXD2SMzveuOIVhW9Q4DGHsj7JOCYURR2Mx
2SoCBig0Jlu50xaD/96+HstHWs7NzJ2VpiCHvMe2mGNuDesH1LiHzDaqSMuST+De6aCxwFBaEnDI
u2PGw8d2PvizyFDNmjOiOkdCynlPLQby6uj6Wit+9/Xpy4jefwRTSaDEcZpG5BiFSGDGgvVXSLYG
4dOlDoVeG1VcPOh0cHFxa8tcxxIB3tgRIP1/f/7989BrnAg+gtntGKGYXBNUIgCk8cTonIEvreQV
5ep/qnGiIaVlQ/U2jj7O/P30+TDkaCwiylE4Bw50FQBg1pAA/wPXSSivpE8izhNyhxWaB6slZiL8
uDo8+Ps6CukormWdOcsQxhd8TYEFlyCpiQspEXCa4VjKrEcgtsnDm1Xa53fygVI7OwX2+nH15Xn4
0sB6obeuY5FgxCFICUb7pMFOb/BLGChDanPyVKX/R1yvKdU3LXeuw/Jm3nn1U0LAk7FFdKxmxyoc
Ch6jFSjpccoWllEH6anF+Em6ADDyV9j96URg7qfUsrRZhm7lis7DL92+A1kHx4Gvglh+ruBcCpUY
DjBmhINTw7Hch6vzvT7nS+Hif3UL4ZzcdMoKQKDM6Y6/vjx+eHh8v3vwvnUX0RJrCMMlGYNTBAQG
zo+ImtgRLyGA1xMCy+aqVpDZY05onvamm5Zy02HHzYvZHh4/NKNNR5TNcYSgzRT0qaCEKQRANWAI
eRBEhIGbKQrNxsdXCaG/ndLQWNCPH1qeXMeaHHbtl+iirda/HsqGbHVTGNcRHLtEUsYWFjgdBEfa
kwDeC4jNCGq1D7syWauloRNdVHwzf6/fHmrve1mth9GKQSA+NGLEHsESobqwvytyRIQ2SeDpjSQq
cNZBilkur8pC7p9w4i3vrk5ZUGI508Apxeg8Zl5282YRtJLeqluDuHfjXxi/kuCpJ7CLlcMuCIfD
ChM3RHmTeWLMJXth6uh+/RObe3/5piWT9WhfH/PVi3S1sEGU4jy2lmAi0VLiUrDgqfpMs43JXJiq
+CfS1csNA8RtOhTzw6Z983Y+OtOA2uYM3meIDDvQExhXWJ+UaACnNQQBWvWVqvQOD29J5rxDsh1O
9gPXMo5/+f/eY5+BBrgVI3IEFUAzk24HScyxYE+Brc4iy0Vll1W8PMYc1z5TQAJXG/rt/VIFqTp5
ZIF99v7jfqdUDbQf9RVcAasGMSTwCwiwqxz1jjjHI5xZk+MFB+PclhmvtQSvl5aPZrw3BHhvZKI1
rukInne0Y6U3JXlE55A4yZbhwFVTFOHKZasdl1a5v2nHTu+4aem1HSbEIcX/x9F0rI6+tdFEkzKh
MtTyXRDNwUgcQOCKSJl5Pyvf/aNnNsIjVp3nqjkWJqL4VkhIwTFPUtHEdgmTmjXF8VMBcaRFMoEA
K2BB8wjOFoslX1e1vXvEiVD2eLElfXAd0of7uY+4G1yznG4p8AghDHY0FMxvhn3siCVAVVGROQXe
8Nlxq83KM9KWMTYtlJ557WNg+usuzVUjxJOc2jQ6rbSxJdaBlzjxrWAhigepzGgOOkvNwYW5HJ0+
m1Cb3nHT0m16zBzCUPGX7+9+/Pjy/uFx39I5VyLF8lBsBLnF4UyJ7BPxGfauEsJHCj4XKO9XmijV
p6Xlxyy1oK4u4n7SwdPjtwlGxziDiOpEeT1kGjw1kMEWA1xgaxcVJA1Rx/mMg8kqN+2jOvJK2nnE
+83wOIxp2tXHQxBhV6JH3Vg470qxCTEwuCoBPW+cFhFwPAZYncKBssvxugzM4lmnMjGLG1ve7KbH
23Csyvj09G2YDlER9SSCaA2qSKIjpuSj5vB6SwLxK3ROOlsl+hV68/VaYhzvEONWc6y8j6uvOCbp
kOWoo5hlFpIaR5LBoRZJa+Kw2U4yMI2lV5HKsyOG20VbstZDh6ytPoR1Px9BN5Tb4/YpMGqBH444
RhlnPsIODIoSitW6MVqbq8W4JOiwXEvEtnOoFe1VdVUU3tWAZTi7ErVpMAvs7eJDQJtE4ZgKhyPG
QCWpGBWNIqss/hwycPOkC9jAzb0Nf7pTMqc1sL3biL+OI1DI6vnxOPjY2f3bNomHDGqUYEqWCK8z
8Q7ee/I0F5cETsBtz/tywYYeu+wCxR/n09x+jrF5udGDK5yxDoGC9S3hozuJJUJ1UIOmyUl5zcuF
ZftvEi60ZC6nr8CP/Aie8u9y9/LwdWjmUSY44f9X2rX1qK0D4ff8Cr9UAukE2c4diQeTBEQhy9Fu
tpenKJB0GxXIHhJ6+fdnxoGFBEJa1Q8rEc+OZ+zxeOw43+jQX6o19nSYKxTWUXigMg/sdWK5XBiN
WKTOpi4BX9+QwGp+LovYX5v87RU7dEoVljAIXga8gj3hBjhArvoUj0J8TFEGtqhaDvSjBrPIo2Zn
NLfIu4CBThR1Ja5RoBzT0Zsx9Cpefzu81o4QBuYxdZMpQxTbBEkpJv7SEPiU6ngV1YJZ72gCnBJ4
KO+3DGDcaOlSi6pOqYt6w407xhvOIqjwCj53H50Xe+nHYZWfuEzTVN9nEigfxB07sGXkVHN8bmMU
0/aBUZ1hXRz7xmR2rkCy3cldYOEJs6kh6ET1wDepmoGnrRrsrajOPcP2IAIf078FFq7t0H+DvkFU
1zq9sXyt+Dlx+38bmELaGdeswhIbu2M2sSxfhf0KwqdC2CWYZ6hM+LANA4sRXGvkbL9kdCmCpV+j
JeAHZGZjBd2ecaVxHuLJkc+4GOuGakrsbrzqLjg31QnXYX8yBsfVAthb51gTxriG7JUPr965r/MY
j0VteRYnIYFc6gv8hgEDC23MMUmCzlTDw0/eqG1AFNXhCYBlmwuAKkXxfx5vPAd5kn05Xf15Omy3
wGoIarjxZlOQbZykZPWL5OXXdE9e9zle4U0LUsb7lxRR5Uj5NStOFUOpfhkX3yIIJaLXLBmSKht3
hcEbreFvmQ4JvXxYpKXMGXN8Xm+4iz39O/bw40Ir6AHZHp4GZrv0Vnvctq0/VEn5EBBM9XHZv49A
tdxtfhEM+bEm/0Le9gVDEuZlvBlxCxbWgOzTIkvSXTlimE0m6Jn6uz4pfiAAcBLlhzIC2Q4wlHJ1
SZMRBAV20NPMd33l4z4r49UmBR7Y/htnNtCn5AdUluluZPOBCVyB6bklbgycoOfUGxrReY/Co8vG
2ECb9hwGbRHl0Z/Olg8k/PyvT1rKh9lj+CwWyuhc2kiP1YpYl9l3vLke7uM1WtytwqluzxV3SjKZ
efxu4aYuSQuZ6Kf6j+I2KdORFK8i74BMDlRLYbZ9JH2eHYWQaSVvSwCyelnxiu/GwBHsYCIdJPem
GLoNBqBU2dRny7taabDDCpT3T+T9LCQv1a4HtFvnSbM7GJdcb5P2wAbS/fc06SOp7ZhogcdyqiJg
0HGSwM+CgBJ42fHCJPrKXAIqEoFPyHK3bhsP6IVALBZLt2O88PQjOJH24mSb7frt/cCBK0TZsJyG
8QvhOm8lZQ1Sg7WTmnPlKRTunEyfxaPXLqxh4jA8lRCikI7CLJjN4BwiqZgI/S7Sj+kKbwAHsqtb
daJIGkWeCEWXAE5FOgvE1O+gNdBmo2gxe5j7HphNO1NqVlxD/1PY0b6pg6cC0ueHmbv07otgGDBa
W+mLCG6f73BlOATH2b2txre9wKz9A2cULkOx6BpYBI6aVqT/EDDWQ1GbOtWUOUk7YFNwncr/UEsD
BBQAAgAIAImEGEmSe09NnkEAAIEBAQAuABwAY3NzMy9mbGV4Ym94L2F1dG8taGVpZ2h0LWR5bmFt
aWMtY3Jhc2gtbG9nLnR4dFVUCQADcS++Vxgvvld1eAsAAQT1AQAABFAAAADsXW1v28ay/nz5K/ih
KOQktLkvfBOMHFCU1KrHsX0tOy1uURBLcmnzhCJVknLs8+vv7FIvFCU5ZpoDpDgyClshd2eemZ2Z
ndldba+LPORl2Ve3f8J8dsrm85Sf/sqDfyaV+OPlWcWz6nTIH3maz2fwWf3dsTC1/1CuWfXQpgE/
Zx/zdDHj5dnHq4u7D6OzN2dLcnHBZvxzXnw6+8iLMsmz8sw9++3am/LiMQFAZ68EcPo0D8+Wz8uz
Dyy8mr62qzKJ4HcSJ7zof4XoyhJ4W2pTJ2/VHvw+Raf07Yni5RFXb5/nfLvhb7apmVTtXbIqeeQn
oMBC6PO6NRz/+Mc/1N/RH8oNL+egpCRIt+iUD+rvmJI/lLuSF+pk2AZj6EhRhqziZ7fJrIUA68jU
dFvDVEVmn5C+4ZxaJlI13dJ15Wqq7hMQNKzCq99UpJ/Cf4baQ3SMHN05AYjzvKh2eiGkuFmePc/y
Rane3TUwDi3HscnY1XQHjzSb2EQzsWlqzsgd4qFujInrKYoikKvuZ/aJq9MkC7k6yPOqrxqGrutq
ycM8i0pF8QpWPvBIvX0oOIs23G3gM/5J/RVMLU3KSn4AVdXNFGX0FPJ5BXi3h2j0m+cP3KE/uZze
3tx5t5OrS7U3nfw0ubg4afQRY7seK/1J3/5B73af6Yrigm0lIZMEpnMeggWG6iSL82ImH/YV78ad
/jy5/Em9HU1v+2pYluQsTvlTkD+dsUWVaw88uX+otOg5Y7MkPH2oZinoSYqk6v2+OkzKOavCB/XP
BV+AVBuTnrEk06paeB1Ap0lQPpcVn/nzlFUCw2n0DA9rkf6nxm/FceyY1DFYEKnrhv6Mz0pe+cCp
4kVm//DRvZm4l7c/TB6fgyKJ7rn6VqWGgrZ8yssL/lPB5g9JWK603WRj2FFsWqbq/TRIKz9O0nTw
XPESSGGMFdyNFthlFBKVFfcBwf6MFZ+ADtFNRyG17DeT61O3KfHmp0HItjmzMKIqNL9gz7wAaNMH
NhcCImoaCu1KjYbEVotkHvo3PIvAHgEWshSjKx3EbFbTGRbs8w0PK6EpYmHF7Kp1OyYctC4j3VM1
BsWvyDmmYrXjoiC4D5gwe90kMYkjR1226/dXrJfE+/14Sb63bjJOc1aJR8AnK6sf3216e3maF8vH
J4DHMIjakw9PH/qI0hPF7gYv0mnI4g2Degw+Jvxzvz8HB6kG+dMQAksh/bHcgLwWL4WrNuGBReSL
6jqHVw2QCDSr9tYdAKkJMdLpBjQwAoSMNtBBmoeflkivgn9tqbEDQmwBwAbF03A+7yPTsU4UpHfV
p82MF/T5dRo0jRU+QUrCo44J6FAndCGiNsxxLXTSj1fDzcJP90W+yKJxXowLdi/mdxj223G//xHU
mxfnTax83eadihYpCCIaygnoKrt65EWc5p/hlblI3+9ac8sXXvmqVtGWfwR5nr47IJb8I3WdZPdC
3eteC0gi7jOYKBMBv9W7tqY3QvvEtlfal8Rq9VtIB/3jjvpHxq51NPUvP6+SuN5r1PEVwkqTp7qx
RypiCqlIN6mwzWi0F5EwJ0CyFG6SVbl8vCuYfFyDffM6MwBiWzawPZptcQ2KtqRdApNCgyqE0LSr
0CG3XyH04cF8tcwHDLU9T0g5sb5Xzoc+Ng0Q0ug4edk2ttT9yJfybT3rZLn78CMCVrlFsrZLZAN4
s9uMgQyEGzPv9TJZ89wl/AjyhG3U6zm/OR6tfm+WQa4dDdfSvFONL0RCKSkBbL2WdsTUiBFIanWR
FGoU0zHMDeLbJIUUJ4lghLaxX+83yD0Sfu3wmabaqzUjZCHCr+xuskTUpqGq/Q4tp8kM+tRuIgZr
kq2ypj8ELwurQobaSmazPiJCdU6T3f8uWFH9e5tjM28MncAhoaV67tJRpoCc380jqBN9MUiQIStY
70jSNiNL9X3//y6x5xoSnx1BHZKyZ3/06AcixfCT7DH/JNJmw1Ew6szBoeoTUGIz7rMUCNb5GZCz
kYJxN3IspCQEHSznD/CMJdieHFODgg5I11G0zGDPKNaExfBR0ho9hE8UTDsiZ1Yc7UOexH7GecSj
nnh5W7CsZKFQkZzRTZ0o2OjIyuE2arJKZR7isyzyX8eVGAo2uzI1IcUQxNb1AnSfJZVfbYjvZYYp
lIhWV26EcbVFbcVR2gJxdAXbuwtD6kFToDrnhs3Vul0dmyIBws2SusgX5Rp4nguFOFRDeRHyG16n
yrX1gZe/2EkaD4VUHQLqks0tL6ubRZbxYpKJNI5HA8hoU94EFrM4ZsxU9SfxmTOxhALeY1ugOKJ3
ExEHZmCuRdzmec3u+UXOYEL20gTirrDRaJxkSfkgHtdp9oz3Vr3hr+hSB+HVE9lkNfPc8Pi6Ks7d
60m/X6ep9YxiQex9mXdd11AoHAjqJCEiEbLpDqK2XPVSy7ApnxxECFa9fX0kHkOMHemWSBOGdBY2
5qINZbDXBx5+Ev/wchF5Kg46vn1IylrP0qgcB3TV6FTngQQTQNIt+SWOEcfBa5FI7lSEvqTiUFPn
Rd/UIe4R2pVpiF8Uf8Ww1j+B1AmywhjmZAMSKdItC9SdOGzm9x4DFtENL/MFOOuKLWQD0TDPeO9A
uzd1mVYvCEDqs49KbZ+6SMdJt2SPB1ZoNjBOF0HRArjldhA7elG+CFIuAckFgJ0+S/MU7mJ1ches
Mz3ETXe52QUDqRNPHvnOyw+8LMFve5NrT4b9jMs4DKmXfCJWY6BVnUPqEBx/ZsLVl73EMpAw4k4x
msSxwamltjhuPHoFqawgp/R91O8vsuTPBffnEIeaqN6pmyYRj9kirfyIC0PcavZefS/VDslab8Zn
efEM5QkRenY64rYxNQ/jvspWeqndHqbfDT8D+NGtQP8Le2TTsEjm1cbYmvwMJwgt7iyj8CK7yPM5
5NiQ20PyLFbTay6mo1DUlS6DoTxM9zFPojqHoArF7eXMsVivqVfRd2Z17pCY6QjSUW98c3d5cXV1
7U+mPqT6F5PLn/yru1v/9sp3/enV3Y030v3r0c346uaDP767lGv9vi9TbYWSjlxRYEc111qgYT6V
Rl6KaRYLHdGuFFEQNynCHzG3YABndCSlB5GtNgmtdx8Am2MqdCv6/Dy5hcgV5E8HVp8dygPDjFWg
4y0KsXk1eoRfgvQk+yA2vYAqZH/U6koVc6Yu48QlZH+SLIT2WZ7JDBop1O5KEuFA9eUq511WJema
7AfhMBAWL5KyqlH/mlQP4ySt5Jq8Bby2nNOdzw85p1xHx0bMbAa8htfTNRMxXpatGHpHSg7kkFBN
XE6bO0ZZG/oHVn6CyARSiX2+fiKlgDhUb/38Id3HVAzUjTmEsZjsMC8W2R+yeKOKgbsRNEMMtr9F
7gPku8LPbIIVg8idj6d5uH/fo70XxakDKbkP7f08+Ffoz2palkMUg3YkBYWRrgpKSyIU8n3DePVG
8HZwZjYHXa8oQVHa2+xqC4Fl4o5hrjdMCRMgRgdwbhkxCrEROjDTQD0jlLbe70Mv7vcJDsuX2oxl
MCkUrX2/T7zIeLoNYStwQAiCJFH9xIXVmVSmMnJTr0F7jwRb6IMoxCZX/VV7f3Zf+PU2pFy/W0uD
+93h6Q5lECLFaYI/ZfuCV4si2wK62uSseW6Ra1KLmBGTKKrV7H/+cw0RkTVE8v1DpN8/ROP7h2h2
h6gHFCa+GRMWXt6L9Yr5PnSvIMRMGq8JyU3PPZvfX8odeECbucM6DIUP17kMIxhhuRXejSyxgt2U
BJ4iuRH+TXMSQ+00zcAsY5gA7nIq58jbzahacke8i4GYWDfA3JYN/SCPniUlJHfDO1FCsVgbXVFa
x3DLlDvXHa2WR2qb0MZmra9xK2oLtyr57DNLKl9su7B0y2zDt29P0RcPJDg6CswIpuVNOVQ9JOUy
zvf7Zcr53If0vlFShQ9FnuVQvCzqzfbzNM/uVfGrWVXJd+cofSe21Zc/KdRTjUV4q+0fX64/ojAM
AjWYyaXkfv9nzqAAKUMGlrOv7BPZ4/m69bQCTOGHRcWf3v/YxPo1EqWr2hC8nHSWgsW0LQXoJayT
8ulKHrkEbLc89BXkOQ7RhrxbPmfhLaSc51sc36miWFN7LRhvTnon74UVCANY+ni9Nma1PPs1QBDk
P98CyCirimd52qD3V8jJ0tRpHbR5jRzUiiTZNw178Jde4s+L/On5vOFBCyB7XqMAtn8N8Lu/pL83
YKWbohwybeubRVT720VU5xtHVLvfzKcvp3c3F5tVl3rx6pgmfF9pgje+5JXIEg/MUwaBTBLr6tvf
W8PZq8fzRPWba6JyZarevaMtd2/DbnOiFiLcwaCGy2ltT76sMusFJkKN/w4fcsCHVqvUKoTHPE2T
7P7oNt+Z23yRILdNC6nttUir5RRfPi9oRTxu7lusLGJ5eLufZEmVsDT5N28mDVic+2y1BW2LFRWD
nLTOqH55Ig65biyXn3fygvUshyy7dbr0NYSpGdeEP1fx7WHaRmdHO+z94sjmN/J+cb7yW3o/0r//
Wh+JZbRfJreHvijQHT8iJuCfizTrwQ8fRWn1dTWVZYWO0Sww8ixKhIf6j6xImPhGSF9QP1CxbJ7O
6mJF7sZanaulgOmM11Z9zQpxbOgir8RxuOKTt0IEOePzZDZPpY1vDvmJPtMwn/Pogs2CiJ2LPVEV
MsrN6didJnUa2miyW2FVyYz7c+FT57svYZxY9OyHQgd/tTxrFJyyTMMmsbvWaSY1w4ipv0y9fh/s
bGVmwGqR1Ta2jHF61xINKMfSuje1RLzIlpuC9efzXbaNf/RO+v0ffL0p//J0VV68quf7VdUgaiwY
Q7nH3zupNwZJ50rv1YHZ/M8F5v+KtAxhkZfdjlVwaBhxnqo/83R+DHrHoPeNgp4TQJ1F1vqTNlab
2DUoox7Bcb48FyV2XsWCRP29iwsQgRfn688DVvLmet9uPvwaNMh5Ac2D/Fzb/gAcWMYv+xi/vt/4
RY7x6xi/jvHrGL/+pvGLHuPXMX4d49cxfv1N45dxjF/H+HWMX8f49TeNX+Yxfh3j1zF+HePX3zR+
Wcf4dYxfx/h1jF9/0/hlq8trG8V3mA7f0qh307POLCNC9Za03L4WNwiKr+BeJI8842V5XeRzdl97
0t4GLgSF5zIp38vt+dXTcfJUO+5WH3lZTP1IXAcpv2QoDsp+udGP9ZFsp3VD4ivkM20Wqi8iP/ym
t43iTX2JQtfIqocB4qa6TavfT1vMpmn+uf4yfufYg3Wdm8sBBNtY3sqzYQFxZ58oxO4cVzD8wuEu
p6QUuptkK03W7D4mRbVg6Q2/B0MVX/5eg7gqkvskq09x4K5RBwe6je0GiOU3oa8fWFbls0lW8kIe
UW3B/HF5tQPuGo1wQAPKGgyvU1bfezJPUpC69j05MW7aXOTiu7KPPBJff+A/LgOh2fXsHQ4IZ8GX
eB/m+67RtW47ZBVb33LT8cAesWIHNS1t3+GcgwwFgda9jt9wikH6f2yK6XrM74Wzh/jbnT0k33yK
CZc3A3+G/ERcu7ycVVRpSmrPpFqQVCd9RVUL9tTfXNmLELVCrNswAkXQfLH6gTBThPtegOsX0b4X
umASJQeYlMm+LoL7fKsH4Y7Fmeyx54UhmKiFvR+XWji7L2gMz5G+8wLF8gXaxQuWKd5g8QZaNX9C
8YI0u+hxaCErEoARPdTDaDNBCEt1JVsyrmd3tYjTFmCI4vIKgwLv9CCSlnKR3ychS1Xv+q6+tZkq
o6LIC3mRc799jbNyKw6YXy5mweqGcFNRlEGSseJZnczYPS+F1Sx7yS9/W2LANHX7YSDuynn1jeo9
eYG4pq5vEFfPvcEYOfbQ0kyERxpxRwPNtV2qgcBjgkZoBO/ff993rW9pJHD2qCkIwRTUt+ImqPoO
9OlDsrqMuqeDFkAHQ8MZIW3g2qZGnKGjOUM00mzkYncAWoGqs6sWxquH5dk+xtuww93RpQSbcbzv
npw9w+iaGAzbcDXbc8caocZAGwwN+DRA5nBkmGiER10FqN81cVIRqHdwhpQK9e7gvOD3LHzeh5YO
h6bn4rE28IS6ByOsDWzT0pBjjSlGFvI89zDamu5LmOsWW8h5QHaQG8xkcUxemAX3YLfGyB1hB2sU
EiONGGAqrkHHmoGIZ0BxbI9H9j7s25T3o99u08RvxEG0g9/CTrir+UPAsUttb+A6GvV0F0yE2Jrr
uUgjIxcPbTR2MDpkIocRL182oa7uftuCGgcYC2N++/J9crU3OrZpemg80JDreBoZOoB0SJDmufpA
H5s2MZwXvPEQ7dNA/mlHmZc7NQQT99LpbcHgobAhCC7g0ktlCFrTxVz8HwuaMQYR29LBcrSRazsa
MclAs4e2p3ljjC069gbY0/dJ9QJhpUYh8hUz0HFD7euHpu5gsBBxFYjaIwY5xadUWLFuj4htjDRD
98ADsUs0xyaeRvHIsQajESXUBDCLshD8z0T3BjPbslnUZiYexjJgbZKsEFCXy6lgpQtHBAA0sDzD
sjXDNYhGkAcj7JhjzbPISCcwyg6xG+xramcv0d1GF+h70EW2dJYNlURcnr5ERQ3nlOqnSDjKCJke
HRDNJdiCycCwNMejSEOUOAhClONKRzkIbkN2GxTHu6CiCLc8+AOPEra6daiHTkUPZJj4FFNhRZZh
jobjka6ZQwfma2pjzR1R8U88Ml1Lp1jO19Ma1EXy/7xdyXIkx5G94yt0pJksodiXY6wSR81RGyFx
5lobmmUCAQoLpf77eZ61ZWRFVcNGMPFANCoDEe6RHu7vuXtmLZ+BKKaxaDp//0xPRzQabPiZhTkn
zBrRa6rBbyN++d13bpQd/4fYEk7eRpxhK3IcpAQyjtKWIUkhaJvhmvRVscNqtXmg7v/NN6Ptbv3+
sN21m0YByzpaWTm7L5QBpPshbyXGKkPYKSiteFVDKlUjFOg0uMorDrjROfEIf1GvKpUWz8unx28q
RInI/iC6MlNGdZRZ2REmwiLDTzW8rbdHs+fc3ZIqQimeVeJDdvC7MgcCQECFniscSAXf5cT1+/PT
6fG+vqyHl/K9/OFMjlaFleuosPZjpG5dwOvD0atIfTi+XOscGBQQ8M0wNcDaWOHfsvVWBc2rlfxb
vuU4cSOZY53NxYczS9ndVeytVuPZtRTSYtXcWDFw49Qgay5ADYYPNWkfhDOqVPf/NpXdtVZULjqi
iuUM7jz9unl8GQHH9vELWbe5HWUmdwOpY7UehCzCLxtgHWUyDLwy2EdOJSVffBEfYeB/gRh3BzH6
o5shrapi1VN1c3D2/3hbPC/o/f2bg61Ycyt2tmJDBV+AbxfWuEFaFwYvgKKzk9xwZ+CnRNdW5pM2
EnnesWCv5EGi1e9/v1huj0dQaEjiXIAnZHVwlgIyY4DENQZANFaFYy666CeSzGZpl1cdM/XL9f1m
F5vJwFfPX399PXoBIeHVdjuirfW1Bjao7IESQ4ajtlWAHjrAFLCMnPqReT5rI9JKm3OR1ht12JH4
KdydXJJwBBEQaLmARwreIdAJB3JW4JGKT1bjjItq+IdFjM0KE/SHNdI1Sq3vO4FjI9zMHfy4+eXp
dUNfM3IgxdjwMTR6gkLJg7sZD+0YqIRU0WLDeRqA1qOuKiet5bmen5+3v0GziQ7ny1xyw/NxjVIb
pTtKKX+4U78ufgGEPNgNhfbimJbe5cEHIkS8ugHmrwFuE3cuZhdNaS13Msds7UVv7eNJXtEbbg9r
mxFH6gL3WRCngNCAqSNOTSlyYEkVjhOsQu77+slUMxHuOyIYMSPihMbjw9vm9enp9ecjSqNjnC0o
Fs5tiZKOsYVDAWYcWASNsVIk37ubU485nfmCu58OaaVf9CxydcS90y9/+s46BzBDvofVVDO5eR8L
gr8tanA4XkPVLmVewMyV/qbQhy82eEfwn4jRir/yPfH9gVQ8LN4ej+8D/E6fELuqjqcg4bdFgq8A
gxjAsTLYTAWUoVviatcMpjPOROmY4r3czNJtL5vV2/P29ev96dUG35nRGLTmgoCVVPDGHPBQ0Vfi
jfm1WDNYX3FFa0RU6a9jxLv9Et+CV+fjGoXuVccD36vVzLBPqbuDk6L9DQHASXo5QJFMOEDDPXE7
IHKq6IF1mRbv8VGn2b+VOGxl1514eq/vZ472cfdiltsXen3Wy2tji3RGxV4bw0FEeAYXqZxgO5ie
Y4hz3iPIFs9Cyv492uxfBHPXWW6q1NmwqW6eL88dDr2Q82Dzk3d4Tui7EKpKnfRgioQKBc4veAv6
wbzyqcDmiu0a/Gm6VoqV7EixWR0w979eHl6PzTnfcXnLCR5yH0X22MOcBEIXwOLgwU+BtEv0DEi7
1Np6/uk8jQDCn583L5ZqZp5/3jwvN89PiKDyaJzWGlZYAg8WAvHHMj9EEcwQjYd0jKUSrwOFw6T9
23e42oq77IgrqXB09lbnkU1//xfKyO3ChIK8BLSUiUzGOgTjLEJXAdIJNQzaZRV5QKzI6ptOdz/5
5TixH3DTyul6wruDyf198/WXL8/HGO/GPXZKOyWGXCzgf4Llxcw46HvmCrgwlay79jadqxFCLc99
vbfLzWwHTy9ghjvitxx/YLW7JUoVwV1dLnnQxXJ41ogTXLQdjK0OTJabksqHsO/vr2ZLjpdvWk06
x9qu2OFA7aS6jScSwCUFsihU1LEMSldKLoOK+IATnpV0oK4Gu83aE9VO1MjgVGeL3UId7vNfv6/1
tL6yI+gG0HY2E8PDibYCSEBl+MdikyjV+CKv09QxvXLJIBsQcFq9FXpxjj/9wt9T6ZmEpjcynzCM
GaW2VLoB6x9igonKrMrgjI+DqdpmZS23NrW7Np2lWX5p7fnyS7867Nl/fS5/nO1Zqir5qioBPUnU
ng0uAM8no6uPsQYl/Qft2Wn1Vmi/7gi91rN05yE+HjKeXBANlmNEZDpxqXB2yIVSfSAoICldAGKo
dMRTupYyaWZuRVufww4Pvn4Mb+1Lnr9TStzqHagLWNkymQb4HjBR490QNXbY6py5CCGb3BeqnfOm
XZl3xOHrWdp694LCI9A8kuOcASuFi0NKDGdEaHKDDsLVEph3IjrPru3TdN6pXAvbMbsFUOiBsv+W
7z4fxeGEK3MtOQoOnu6BZKRjOKQuCFgdz9EEpeGa/0P0+CRco5PvoHkc5JNVLh7X5FX5Cd44Mkhi
JMZIblOAR2feUDoyIZyzNGhhizG5suBnnHI2WyPJgp0nwxYLM481P/yQ7sYML0ZKYUdBavKevhJj
KNkg8EkFmlu8gn+WAGCl+mTde7AizX0h244rrbTmviOtP7rtz49fZh7IWsTiAr9ThSQoAaIRJSiH
kVXUKDx3IX6QBzou3orsdUfk+9WMLYGWLNab1/Hb7F5WuzLlCImkN7hxBCmLDlzZUAZjIoAtVf3A
79mQZQ3RgXMUXt+z39RClQ9LXS5fng1r1Fp2ykiLleSdZMDfXrcPL2Q8hFA437kLnEqXIrASz5XO
qOCIDNBN2yRBOKoGe3qPMscFLuO88fJNK2fH6Fd6XtY4zkgvwH7YOCY4hx5sPAUcTPrW8rFCgKDA
rURc0wkOUAKjwvfhYLhslAoRkbaw9yhzWqavzel6q45WHXVOp+KPn3ZVn2MS8XYnNqIE6ClXg0hW
kdgSHAXxTZiKJWq1plzn35R4/uOnvqy74dvd0WgkaGRfs86JXgs9izqLl4cj6DZ27ErRMiQdB6YJ
12gDXOOSGwQLRiQq9hVxLdwcJ2ylkedcD4YuOtxlX8gja9glioh3anArIw2inlVxiMqkgcvCjNEe
8OF6ouj0lXnfDDrH9S8b/VktD2qonm6L2U7v8crmX6+bR5rwaDXGUkqJIFEM2kXJ4uCkhU+NMBkX
ihwUyAWMM3ugzHdAotkSM2GXPWFXhwD5sHj8sl2fLHokPVoFFQIbRKHCuQHz8QyuPsCSOU8MxHsW
GKezzJZfd5Y/YaHlyy+37BibKesQJHyxxv0W0cA522Rx+yWwIjWPgMAGFmO7+GSOdm2+6a29mTmn
CUbZYRDi/Zz+bv8r/Ua7AlAGLsgQpSV1P0lA8ArBDKStmZuk63+kVrC71mjK/TkKwofrw00mO/7p
h/239x0ys37Xh4CgXgF2Bs3IdaVoh4DgPkjvUvXaBmHUx7iucyEaHejb1850EFLP4mDeji8GhBCn
Qscu6ybETiMjSpKFx0EH4Qg/C7LeOoBbevyXRBDhmzmP6+WNKQY4k+cCCDgbN9V+Je/PfcpK3s+z
j4hbdzsMChYzohohRzw7FlIL4AuV0SKn3h/PKdcu8lBrlaWIaG007wye+0UuBs/99UaFpnHp+CGf
30D8NTVHLbaPm+eOEuBcolTlB1+lo0IPgn9kbnAp2SSIbFf5TiWOy1xU4ziiVaQDNFea+9m9+Lx7
vmHxuNocnhaZFmmY18VEnihvCVDvchqcB9LkhikemXJA9e9RpLNMX5/OwJtWg0VHLcFnav335rXe
HTCzGvtqsO8yueoA/amvgDPg5UQ9Qd4Gxy00MtfrTeOcFxPX9a6VU9x35NTzJsTRnWzXmyfadEeb
rvSuNcPlyCzgPBw2gqoApQqC0g4SaMy7zD233zz/48yXQcF4uZVarztSezM/wNvnzw+Lr/sGu0P5
Q3CITinQYC3hJoRaTdbPCgyfA5tZYeGLs1XJvatq0C5zwf6bMa0y/jxTsDJSn3WRgWqB3Izgze6q
zdzeSoLEjCWVos5DsYIwBBeDU7gpSoJtO+lFyvnjvPBBkku9ZrurN606pqfj5tDEtHr69ev99mEz
bWLa0UeWjMsSADVAh0GWCrTveRgSzkSSAhRSmgvdC9MpZ9J0jN7oxbn/f9j89DnUaclJ3Woyf/pJ
UYBam1WFYJV67U12kA6gvoCaGGuql7K+m0JhqSsECldbJfSyo4SZK/EJYHHqMXeWM/4kLsULJWDU
kKh1SWpRB6+0HYpLmgmJgyDTdZh1+oK+d9vPVKQLUGYyolXa9JTed5JNagyb7S/rxcMx4o26whkZ
Y1MdstJwrIUBfGmHe8W1RvjWATHkPfdqP/ml9r3xYiv0uhML3PLYWbtdvVHq5JQD15Lf6jEWhGBD
ooPMcKRl4HJwRmWgdW2iguMVNbfwfDZXI4fnHczgzWKGGWjz30DD6JshH/ZNZMeycQpeUq9qYGBO
UsoygEIh2JZoc9FVGvEue5+vcdkMpqNabXpu0/u5Nj9gjuen3zZTLQzFKYF91MnR0dUAQMrsmucL
4zFZlt6VAtzPfcER7q/OpO4Y8FLNu/gmX0RPGagxo2bwDz8m1Ih/hACsA1Ykq5Wga0wO0Ihpa5LX
2vxblP10vRF9eX+eaV+tNJt7zQI84/joJukncVwRq4Rf0QMfnTji0eCECvCVViTgthq1/bj4FMoF
N1puWtG7+tiZPi+/bjarn2+fN6unL4/btlsDRxVk2FNzCP2kgAAOoC0oKwsAbtL6CjwUA7genE7J
KXLOP6KEeTdK9WNPqKaFZD5stgPnZePVWi0OUflfvzyISWuYueWjD8CdFDW5IUsqmXAqmaQKpl60
cjmbIJKe9QhM5rlp1+qchvXepE6ZF2r/eDlldMbiDWEDE3yp2UXA/Ijo62izpcI5lskDyWk6G9cy
OpN5W7F6lrHe4wPKC9b/vft58bxZn+Um01jtzYAnkQMOBwZWqAqnhyJcDjiwNeYPyk22Mszk722r
4bNtfX1erE4dtOLQQesUq1rCeiMVqyWzwDQs+oF6P7JJwMU8XNvVybStVPcdh72+9zOHfWjA+nn7
u+/8vvGKMTO2gWfcYw5nbTw2t8gAw4NgqgCowGuLZD+kPeDQd/Wn76/3Zf3p+0a/+/vzruU1U8e+
nwr+u3sPwPPXU9+NGvc8FcWzS2OvI7Vj6USV7woHYnVKzCRjxYfjsPDXu3fUh87FvmkVlD2tV/P8
7NPr9n6iNj3Dtuvc4srCCw1VEnHPCGtOM2gfcpXSaQ0WeTUpO5l3Jte6Ixd5dzsj4OGNGj71mNbS
u7RIjLByD1EKd9ROBmJYyK94JpVN9CyjfWc7GU1+kYvTxVZod55aXI9NSI3QPy7+mTDj82L/ANyY
QFC7Vho/Nvd4qhzrOohgPFw0L4MXvgzRMoBgZaWvnTzjNMj+Yb7G/CG74/VGASl6ClAP0Ky+9vD0
fPf1cUUI3e+TH35E6Z7j9otoB1HAo6RmdNxLGGyU1WtfmfLlw0/CUZ5LSYj95UZX5c8z3gierJM6
yW+b17xZvn359PTlywxS+2CKthzxM3h6iNDQwy2KDfhcF3rkyAT+3pLifJ3LOZX5yFazBe9pNk+v
5O3L38Pzcvv6vO+TFbdmZFtjSiLXqrKPMMEEphAdfBu1N0pWVUEUFDle76GZzX4p0dsMmmlhe1q4
mS3++rx9nCRtbj/T72OSZaSOhmi+JGdcbB2sC/BS1JPmqqLmBVYsIIg0NXxE5PncytIkHOnSTL/O
WVNLfp4Cftjc/fh5xKoHAuQqS9qC52dqxlCUxrbU/FckWL80Nqv87rQF5r6StsDVVurleREbiG8u
NT3GtHogk1K7egP9pB5LzzRTNQxFZ2oNRcj0PNiB+aorg1/zln8TYKVPl59ISp9uWsl64or1ASIv
nlc/b8EAjygZ0HTf7ZS4YtaACmhFHZaSnv+R9JinxqGO2ktWZuR9NlkrSOeZRnw47/YmFfL2eWx/
+Dpa8UgeuRtpmMCZtIIPTGbENcfjEIKTg4jMZuNZstZ+c/OOs1/ew+OQmQbrngbHZ0HydvHl8Yn6
qX/YvLzQ+zLaGhp80vgob0EslgbcPSeYLlyKR1wYdAyCu6yZrbOK5fV5ZyLed0RczXMK6eHpbZ2f
VscShBR8V7YMTgiOGAjSF6ieauwARmiGhNMWEuRT+V2ZheMKFzz44XIj/UJ2NnhxAqBvj//cPk5a
z3dVcTgwzeHVIkVZGbQaPPDN4LNz9GB+MLmfX53O1orRQ4QLvZ6lOP623P7jDSj62J81tsvmqg0C
n8WOUfin90g4A+ksr8xyYa1Q79rAw+z9/TtcbeXWnXi+MHbGmtq3DMEqj4+phlSouQ1eNWVGtVA+
hFLioAwvMhnFVbXXsGwzcyuacT3R5rleEBN6Nc3/POPXbr0vmcSFAVc3gBiIY8ID0wJrWcBtl7kt
Rb0rfdcudJElTcbM1Fl21FnOi06L8XFiQivjg8Wkj9xjRbnL6BYTwP0MlS9hLJwwBj1DX8mKuOD7
V6RcTyvtHlq+CJTGy630y84xW57VznerAjXfb7+8HRAS3ITaPY+LfxCwAErKtsJLZCrcEKYIApA3
qcCy9xUn4Xqxr7PKhdtxPvCmVaCDlu7VsRvrU/gc0p9nT3RWLxgPBeIzyan8ESkV5AYE4eI9cB7I
0n+oZXUq302rg+4ppi82phwzrpOP9u698ujhnvhgi4owuJiHIOnFPAEokFduSlX/lr6n660Om3OX
Cmcl57nut4fX7evT2+rns1okpe/UDp7TzzGbArREFX8jJXyBpcJa0mJgotQK9+CkfhcGvLJokw2f
D7tpdVEdBfnmYH1nfV16x9RljIx7hCvu6dnm/yPuyprjNpL0O3/FPs5Lces+HuvUKGK8tpeWd1+b
3WibIYlUiKTC9q/fzEIfKKD6sM2YnRfRDUwhE6jKO7/UHs6P55wwMLA0Z8IqOYtFninfggduO1Tw
uY21CKqOcXrsZhlN1TFzqRQTnIMCiyzDCxbGEjRRCCZJnFVZZHGVKus+7spw7zyIPzC2DFINXM67
sjCH9PpQeULVTEdICZdpdlF7Av6DQtsLFBwzERx0znWSlF3pNtTy1vdnSl+bwBqQt+nQvEg8/PZl
fXuYqv0Idt4IkDZJXjnlGZiNYFZwTHYygUV2lrBkUhYpFM/4hcbN2eqnNN/stpabTnB54JbNzKN3
d3dt+tKZwj3llkgZCyo7iwhbgoA7nYNwMaQLoWVYsU8vXGgptLxHId8bQg1wA5YpH0PzI8gE5gA4
0yAcU+CYGpeI9kRJ0YlSy8FVm5/KE0vOyOoIQTycOxmxfv3yfPTDJOzZWn5ufWK2OKLrKTTYlm8l
JeBFSm0jV2O2bIrCMFmnJWC7zOMOgs0NxAY5/R/c2Nr/gto+cS1YEpbElDE7YBUJXBYCNi0VPINt
xs5W/05XvmmJsB3KVr2y9rvfP98/7QNktfgSw56G7izEknxBw5+YxDB/FSIJRsGmC6APClrmwV97
xJtHnT7tzW0tW6vORgQz+mTB+/vvK5geHJixNZjCi98xRl2kilkQVjTB8SkR1B24NiDFEjBmeLQX
qsbr2n0u6qWGcnT5F5TrY9Xyt+8entdt+w9n0hksorQpgm2RA5xv7JJxIjohLPjo3v+72n+O1DVc
adbR0prd77mK7+J3dz04gqIYsIFlJrDpgTeD+FvBEV4UR9g6rA56SziChpAZCx39p+1m1tfSCyL7
n0AiA6WoEI2qB9rCUck0MAKHIxJR/6I+gXDROoLwo+JCPe+bpm3gQsurXTq0AzjQc12PwYSPsLdr
VGE8QFbcYuE8Kp/dnyhKvQazl4OJJTwaW0KT4OAcFQ1CDY1G2KTnv+LuAWeCGvODVCv0Fjyshk6Q
/fACv787Vitr8M2RjfovalHwcsEEwIZyU7DgyRHLNWgHnSzGwpS9wmW8+lMdKTkRLLvr1ScDfx07
1C46qTfD88eXpy/Pk9JsNzb54L947HJmTEhOVEAsFeMNsQyYTYhEk5mBr3dVgWMaH7SnFW84EY5f
3njT8tBhbL1IyuE7Lg3+hqs9WEqMhZsqUus4CEiHKDtCskIcN+A1w8Y0Minn/WVxcgl9o72nYWPb
6f4ZtmwRJkQo6f8e0NkZvh6KUPchWTAFMCIjJQd6I6GeRYR9wHAm/CcCeypOvaHuOpO686wTfHXu
bLnjqsPdWg58mVfA9uWmskpzk7DR3INgJMJpUGIc8/RgEcJXEY45f3ViofZGn84s4OWW8PWS8C3j
87TV6tsU22WsCbbW3fLq4nMKXhvWBmqPsGiIHxYMOHFKa7AXlIjWuL8Jmze946ahVa47DCi16OP6
/PnpcUxbNx4CHGtwBjSBRQTCJ2D8EcxL75UERzkUdV0x6nH9Uydjf72lvoMItmVrtQhSYpqjqhms
oqW7atoaz6PWipAYiYi3BLa6xGhYJhIraWVK1nn3dsL5QMgpL253uWVy3WXyiMe02jxgU8Csnxdc
/mwrIIiOHHvPEnEyFJJYRKRAzaw3b9TP21LQEt+p4MMfO3XPM6MENhpW/csqfRFDkNGASJ9gzAXw
oIOHbRaz4kEZGTNlb2P0dG5s+OGddrutkHO4tsW7Q7dnhzYzfp6gss+aWpIZgnQEC4cmwqFPRmkf
aQra/Q2QjN3FhvReMmyr7HamQur/Na6+vLxihGmslBjrJEwJWqUkQTBhW7UCBW812GbgQqScnGOJ
vQlS6ZSCM+zt7mh5dLTD42ZzTQJ+V/o6Ni1LNRYLpewcfDBJqJXYfe3Bl5fgq0pw5JTIUsmk3tzc
PpBzJi8/D7MBl0OH9eHgKd3/gVHCYy9mdQBTsaKAw43mDehOkBZOFkUit8CdwRL1GfZSs0r7/KGj
SQybZ1g+vJ+aWUc1LrUOqYCrRoMrqEkocYi+VpwBocy54/oqNT5d/0Qm7v0JXWh4R1YZvulX5z7/
/vjy69D0E2C9A9iLNbxR/6jZxWhKsooUBiwhIAWxFYCEc2VohHN/oSjlr2ygMSh7t6RwGbk93NS+
iqEj5iy9n4u5dSOvTY3s4D81CiZSySIQrfDkGHDdnA6BcJ2iSgihUq4qMpo+44Q0WJ8Q1rYDgrFd
DXPzYF/++R//GDtV4LsIhhnWmm8CY9KWgiYN8AL7EnHeQP/w5G3iPnmm/FXQe+cLO29aEjsa/54f
ChxXr0fUVWbxIHuuqbEukCSxzIJpDwfZUcIVGDImWD/2Lk8LP157GKvbe9c5A+vVahasGIHkf3tB
yHM57vjxD1QToJQ5IgxYTKqLoCMJAlFYbDDOCypZvtyfi4ufdpLw6k1LYWe/btxwRFzic8Cl5DNF
mKUM/hCmSijOupC1GpaC5MsuhjcDXOqEdrebDloe/HjEKa0mb2wgdmFbaLbHEcrwwY20KCLByxYR
9mgA+VKjjWCRBGBBnWhTm688I6xzajaDPqRlHx7BTvWffhngncyys0BTjMF74h1WFmKHv83REapT
YCprE4X5d2Vnl2S2bA7LeOl2wHbZZqfXisUxXozhDqbGsAA6noUKo1kiwBR2W1gKkgGhZsCtZj6Z
aKi+LtRxfMKpGMfxjgkPYOsMC3PHgTPZrcf7edpUiL0jgu2aSGpUABSTUNiUaiJH+FahiGcg7LKV
1uCZ0Npe31Z4tqvQNzwwte3woA9x64+/HbErp5kN0B/YGICKFauycA6AF8yB6+wSjiEBl6Gf2Tgu
2NJheu9yLSd42xPwygpazIJTAoQIWiqYmwczMWBHeEiRKadgSUYXcNsdcClH+UouH85X61meZ/P4
/Hx4GcpofBe8Zkmj8sA0SRRLFEPC4uugSYLvSJMAQRzPTsKYrDsja7MkS1tZEcVabeA/RPg+tStl
7Hiuf+FL4loqjRNLKOJ9WAvfCf0H6qSv7WM25mvTO/CQM2UzH2JD/HZYxGYcowuw2qMXgIv8z0N5
2OOCgnyuO42B7ekiHPQcEKEUgeTAagYTLqWETYgu+atz0Lj+aRbw6k1L7vIDsJr+M4txH1gt//Xp
093wuMFKrFnnubWGa6408YZlOC5gaXtEYfHBc2qdYtFdhb67fNSZ+R/NfQ1jbNmgij/ez3o47nFs
5qEPqxZGO81UYtSTElHthSxR4nrCAnMqgQ/N/NnJDNMlZyStlyRxdgBZefevD4vmKxkiGDngpniN
9Xce5I+1NJPMXfHZgw+fzVsBQ33o0MyXEDjwI5/XKXx6+uXh8fkQDj44XcmDnqJYlMCAB2GVJaEU
Q1JmyRetEXX6mk1R17+osKdUnFDbkztaPu9Fh88dEuoEsuPr08vT+ulTeN1u8QywChtjb3dIapK7
HCjW7lHs81BgMDkfCCgKCxafMcJdpeLap5zy0af3NLyojsJjsIkOAOV/fF7dqkNGEwVQoiJbAxrZ
RNhlWJFhmQSlF7kpJsCPZjbWYbpG+3DTOXdq5Xpp+51L9f7xZfj6iK3tnGMT/4jFU/+qqEkC0VEV
YRLHbFWATYE576ioNnBNqXh19n72xDMJ/NmdLY/LgCn+eN8TmmhvPj8/3D982tUF1zxJxXehXmQK
StRgckSAEUQCR1AUnwp4CuC/F315RlKz/hlJ2dzXctNTY2pwi3QkGvU/rB6HEUJwbIxxupZM5hit
LyRh2ZoQihJfgiSKMYG1uNZ59RZxuykJ58L44x0zJjvbUtPDxKGv4E99+nbrjrYPRq807LSsGeEO
4VPRCrc460MEleGXpDKfHYt2mYYCrTqatmbpF4B2/uf4z4Q2tKkd58qgRTpKmKzADzKRZIfwx9Zq
8CctnNaiQf2CiWeNvtrWwaecsXbwcsuB7egCRzedo51GUJcxUsV1zdwqz02myRKVVd0lAfE/NeGa
smiCMxcbjnYLn+kAazFakLoeySvVSbXXU9IZZRajL1ZREOU8WwJmWSAuZUd4CFI7CYIzlesQ0C/g
n7eEr3SP8PlsuHVTJH2YOVJHTtR6zZpkipkkNNkFWDawVSjqX80NTa7YkM9PmVqsPyPzfknmhs3T
kxXt6PS0uJCBumAFju8psKsDdnWC7aUydTpIbtOFnTFdv/+Wp3dMOQCDddFx5gQdVksPd5xpOqbt
hbS3FekwS6uS0ojiY/g4F8e5UKdn5MxxXEm5GL4/ka6Lu2tTcsH/XNopgt+bBd4JTgyZlozIW6Vr
zQj+UXPC3ldfEtcE6iWYmJSjzA40JQWurwhvl5ds6TmFjDK9p+Gab+47XG/mFTPvv797/bpd4VQQ
N1b6uLHKx2fGIqYhJGLBgkctMAwH/xktEwyMG+HYhUK53cqniuV2l2dUL+0wIdiiw6WtXmSVcKWp
VLXsVCoDngeR0mIzBc6gTdoQ75jQtBhn+FVt21fULZ6qWUSal1JUaHQCmkjWu+FpCqlYDzk1Bo1j
O3agg7iRkqT6EaTgxEYriU7ae0pl5OIqYL7JY07U/h5vuGkpZj02WLdF5/Xx4eX5tnbKfHgcE/uM
j00uIwI0KDDpODEZi0JY9rCjQAJI72LO2iZlL7R071c+EcjaX245kL0PIYdjN9yhAJO7Kv5BqRqg
LTIsEAWfkQQK/kniEYx8Hgw4Zyca4Za1kvikzoZ29tCM93lYryYhW611RcqhOVmfVSbGK8RkRuAz
njNoUKt41jSzBiB4vlBDgrvvfEO3OdWgPvVFBWwzV5ICg8Mq+GQg8QJO+BTFS21tsjqkP9OUfr4R
vaF62Ha+G/x4puIPXh9uNz22uLnkLSjEoHBcFxZZIGQVYZHhrN6oYbf9TVk9vWNGeuebb1fzQzMZ
M4adbHrX0aa3aPkx7cDYCA42H7boOYvD4xQj0RpE0KbZKXpB/F4YNja54aYllHeoH+Y543++b7Bg
K2oGR8qd88kLrggWSYH9hLFFVXCUAsjfmDiXF5JzfyW5eqTm1CyX3peS1CzDS5Law0y831Zfj/Fl
rlC7mJg0WCuKOIPFSRiesd4GwosQhXGXdTOgqV2kfbhbxpclAxUxtPbqscUUDJEdiDXIAPDjnSZ5
7NpKoBiEwHZ4I6wIwQtztse0I6rg0axHj+t4W4eXXe7yN0QDqXNuapF9hcnf/11hhEDjJgGSDDxA
gkXsxEoD5pMyTnp8ZeoNK2339Jy4cXd1xvbSzZWSsU529UDG6HzvilMYtkWNwwHG/ijrlFAYcTQW
k60iYIBCY7KVO20x+O/t27F8pOXcDNlZaQpyyHtsiznm1rB+QI17yGyjirQs+QTunQ4aCwylJQGH
njtmPHxs54M/iwzVrDkjqnMkpJz31GIgr45yr7Xidy9PX0c0+yOYSgIljtMlIscoRAIzFqy/QrI1
CCcudSj02qji4kGng4uLW1vmOpYI8Mb28ZT47n9/+v3L0GucCD6C2e0YoZhcE1QiAKTxxOicgS+t
5BXl6n+qcaIhpWVD9TaOPs7A/fzlMPRnLCLKUTgHDnQVAGDWkAD/A9dJKK+kTyLOE3KHFZoHqyVm
Ivy4Ojz4uzoa6CiuZZ3ByhDGF3xNgQWXIKmJCykRcJrhWMqsRyC2ycObVdrnd/KBUjs7Bfb6YfX1
efjawHqht65jkWDEIUgJRvukwU5v8EsYKENqc/JUpf9HXK8p1Tctd67D8mbeefVjQsCTsUV0rGbH
KhwKHqMVKOlx6hSWUQfpqcX4SboAMPJX2P3xRGDux9SytFmGbuWKzsMv3b4DWQepga+CWH6u4JwG
lRgO9GWEg1PDsdyHq/O9PudL4eJ/dgvhnNx0ygpAoMzpjr++Pn58ePxl9+B96y6iJdYQhksyBqcI
CAycpxA1sSNeQgCvJwSWzVWtILPHnNA87U03LeWmw46bF7M9PH5sRn2OKJvjSD2bKehTQQlTCIBq
wBDyIIgIAzdTFJqNj28SQn8/paGxoB8/tjy5jjU57Nov0UVbrX89lA3Z6qYwriM4domkjC0scDoI
jngnAbwXEJsR1GofdmWyVktDJ7qo+Gb+Xr891N73sloPoxWDQHxoxIg9giVCdWF/V+SICG2SwNMb
SVTgrIMUs1xelYXcP+HEW95dnbKgxHKmgVOK0XnMvOzmryJoJb1VtwZx78a/MH4lwVNPYBcrh10Q
Dof3JW6I8ibzxJhL9sIUzv36Jzb3/vJNSybr0b4+5qsX6WphgyjFeWwtwUSipcSlYMFT9ZlmG5O5
MGXwT6SrlxsGiNt0KOaHTfvu/XyUpAG1zRm8zxAZdqAnMK6wPinRAE5rCAK06htV6R0e3pLMeYdk
O5zsB65lHP/y/7XHPgMNcCtG5AgqgGYm3Q6SmGPBngJbnUWWi8ouq3h5rDeufaaABK429Nv7pQpS
dfLIAvvsl0/7nVI10H70VXAFrBrEkMAvIMCuctQ74hyPcGZNjhccjHNbZrzWErxeWj6a8d5Q3L2R
ida4piN43tGOld6U5BGdQ+JkV4YDSE1RhCuXrXZcWuX+ph07veOmpdd2mBCHFP8fR9OxOvrWRhNN
yoTKUMt3QTQHI3EAgSsiZeb9rHz3j57ZCI9YdZ6r5liYiOJbISEFxzxJRRPbJUxq1hTHMQXEkRbJ
BAKsgAXNIzhbLJZ8XdX27hEnQtnjxZb0wXVIH+7nPuJucM1y2qPAI4Qw2NFQML8Z9rEjlgBVRUXm
FHjDZ8ePNivPSFvG2LRQeua1j4Hpl12aq0aIJzm1aXRaaWNLrAMgcQJawUIUD1KZ0Rx0lpqDC3M5
On02oTa946al2/SYOYSh4s/f3f3w6fWXh8d9S+dciRTLQ7ER5BaHMyWyT8Rn2LtKCB8p+FygvN9o
olSflpYfs9SCurqI+0kHT4/fJhgd4wwiqhPl9ZBp8NRABlsMcIGtXVSQNEQd5zMOJqvctI/qyCtp
5xHvd8PjMKZpV58OQYRdiR51Y+G8K8UmxMDgqgT0vHFaRMDxGGB1CgfKLsfrMjCLZ53KxCxubHmz
mx5vw7Eq4/PTt2E6REXUkwiiNagiiY6Yko+aw+stCcSv0DnpbJXoV+jN12uJcbxDjFvNsfI+rV5w
TNIhy1FHE8ssJDWOJINDLZLWxGGznWRgGkuvIpVnR+62i7ZkrYcOWVt9COt+OYJuKLfH7VNg1AI/
HHGMMs5AhB0YFCUUq3VjtDZXi3FJ0GG5loht51Ar2qvqqii8qwHLcHYlatNgFtjbxYeANonCMRUO
R4yBSlIxKhpFVln8OWTg5kkXsIGbexv+dKdkTmtge7cRfx1HoJDV8+NxELCz+7dtEg8Z1CjBlCwR
XmfiHbz35GkuLgmcCNue9+WCDT122QWKP86nuf0UY/Ny4/+VdnS9iurAd35FXzbR5EJKKV8mPlRA
4yrHG+Xs3vtEUNizZFXOFdyPf39nih5FRc9m+2BiO0yn05nptJQZAVvhAO8hUPC+OUy6y/GKkEzU
YFHf5fw9zAW0tzkJDU0yr7OvQCU7BU+ZDxf7vMoa+Rl90HAO/FLtgc9BVyiso1Ch6j7I69D2mDAv
fJEmmiYFbHWDAvvyc1mM/bUu3l6xA1Nqt0QH50VjddgTZoIBZGpA8SgkwBRlIIuq7QIfDdAin1oP
vblp8Sgw0BGiOYjrKFCu5fJLH3qZrL7tXxtHCJp1SN1kSRfFsYBSiom/DAx8SjleRbVB611DgFEC
C+W/SwAGFz2dj6JuU5qk3jDjrvkWZxGG8Ao2dxefFntpx2GVH3q6YahBoMtA+UDuwIUtI6OGGzAH
vZi2D4yaCJvkODeU2b0Kku0N7wYWHuoONQUdqj7YJtUw8bTVgL0V5cw3HR888AH908DCjR36O+Av
gJqjzm4sX0t2SmT+3xpUyDjFNatjiQ28gT607UCF/QqGTwW3S+i+qeoigG0YSIxgxkUO83NE5yTY
/DpaAn5AZl2soJtTXGnUQzw5CnQmBtxULRm7G6+6C8Ysdcg47E8GYLhaAvY2MTaIMa9D9srKq3fu
qyLBY1FHnsXJkEAeDQR+w4COhTFgmCSB66rp4ydv1DHBi3pgCQBlmwmAJkUJfh5uPIdFmn85Xv1Z
7DcbQNWDYXjJel2STZJmZPmLFNXXbEdedwVe4c1KUiW7lwyjypHqa14eG3py+FVSfovBlYhf87RH
6uzUdQzeeAW/VdYj9LyyzCqZM+ZQ3+z4EXr6Z+jhz9mogAOyPzwNzLfZrf6Y47LfHJLyKSSY6uOc
v3OAmm3Xvwi6/NhSfCFv+4IeiYoqWfeZTTU3JLuszNNsW/V1m2lG2LH4hy4pf2AA4DQu9lUMtO1h
KuXqkqV9cArssGNYH7rK511eJct1Bjiw/zfMusZG5Ac0Vtm2r3NNDzs6ID3rCVHozX76dNKhUHXe
FyLquC50RZR5MBrPnkj0798BaSmfxvPoWUyV/qm0gR6aFbGq8u94cT3aJSsUuFuFUe5MFG9EcpmI
+25hFpWgpczzUz9R3gbVOQdQvIm8BTA5Ty3FsE02Ufy8fMX3XaDcW1COvXzkEjd3NBoqHxfk4zgi
L/X2BOhYFekl4Tq7A9qBycp237O0i6COawHo8cFjEwHJS9IU/pYEKMNbiWeT11UmMvIhEVhDZttV
G+eAt6GYTmfefc4CuzQrPIJ2knSTb7ut0AYwLAR3GNa9KHkhjLN2xAC6iIQ3IaNnMffbKTDBmIfK
ogIHgTwougUiDqoZS2pFFNwBtRHr52yJ929Dyb9WUFjSQiWOfRGJRwS4Neg4FKPgAazJYArieDp+
mgQ+yEI7UmrVWKPgn+gRA7jmIOjz09ib+fdJMFG8N9IUENy8tkO6OsrAQbk29fy2F9Cv37AF0SwS
U/JwZjV7VIP+RUAC92VDH2o9qMVamjmwXMr/UEsDBBQAAgAIAHKEGElanaygUEEAANkGAQAzABwA
Y3NzMy9mbGV4Ym94L2JveC1zaXppbmctbWluLW1heC1zaXplcy1jcmFzaC1sb2cudHh0VVQJAANH
L75XRy++V3V4CwABBPUBAAAEUAAAAOxda2/bOJf+vPoV+rAonLZKxIuuCPrClu1OZnPb2OkMMCgM
SqISvZUljySnyf76PaR8kXxJo5m8gwzGQZs4EnnOc67kESnmOs8CXhSu2vwKsukxm80SfvwL9/8n
LsUPL0tLnpbHff7Ak2w2hc/qb46FHeurcs3K+00a8HXyJUvmU16cfLk6v70YnLw/WZCLcjbl37P8
28kXnhdxlhYn3ZNfr70Rzx9iAHTyQgDHj7PgZHG9OLlgwdXopV2VsxC+x1HMc/cPiK4sgG9Kberk
g9qB78fomH44Urws5Or4acabDX+1Tc2kaueSlfEDPwIF5kKf1xvm+Ne//qX+hr4qN7yYgZJiP2nQ
Ke7V3zAlX5XbgufqWX8TjKEjRemzkp+M4+kGAqwjU9NtDVMVmS6hLrWPHYJUTbd0XbkaqbsEBA2r
cOtXFenH8M9QO4gOkaM7RwBxluXlVi+ElG6apU/TbF6ot7c1jH3LcWwy7Gq6gweaTWyimdg0NWfQ
7eO+bgxJ11MURSBXu9/ZN66O4jTgai/LSlc1DF3X1YIHWRoWiuLlrLjnoTq+zzkL19xt4DP8rP4C
rpbERSk/gKqqZooyeAz4rAS8TRMNfvUmvW5/cnY5Gt/ceuOzq0u1Mzr7fHZ+flTrI2y7spX+qDe/
0Mfta7qidMG34oBJAqMZD8ADA/UsjbJ8Ki+6infTHf10dvlZHQ9GY1cNioKcRAl/9LPHE/ivFfH/
xemdNo1Tbcrkr7w4vi+nCShLyqXqrqv242LGyuBe/X3O5yDa2q+nDHqWlQZ0QJ7EfvFUlHw6AdWk
PDkOn+DSUhf/VQlhRVFkc6L7FPx5yoL7ybS4m5Q5m6kfwBsU1JYQM2m0IgQ0DEPBFY0hRNsNvwNz
5U9NEg0aoa5H1A/UX8cjnoZeNnuC6JnxvIx5McxyQaW4EBoAZd1w0EJRjlgaggbBTwCzqSukJUMU
GsxXx5+TzGdJvdeK8Nl05rovwtKZTLxhPw6EzVn+BPZJi/L9R1VcHvFy9ftYdP7fOc+frqTXFdWd
d0fVT5AEU0uhrSQJ4FtAhOoEVInul7i8X2OW+kGK0ciHXpbzMX8s6wmhTjUKsEUoxGCfF0Eez8os
H2XzPOCVRtZXhUpaasEbetl0xvK4yFJIhvOkVDvvjzoPWRyu2mz98v5o8fOjOofkeZeC4ZMsvQOl
esMbHp0KLt08Z0u+n96vtWqblmK2k98PbMxRXX6QHMKs5Evb13TQ2RSxAXGNAwEOqz0OnauedJ01
yyaU5j1p/6WDfVAdXbEbPCFrwVjYHF1qPB1sWYjYEdjtciSMfSnSWQKZKWyafcimcfIEHIhjK05b
FnoI4af9djkS4C9Yyu4gl7MHFicMRsYLPvVh9LmKxN2KkftVxIdjKEjfGNmFEnexEolbDxBhFqPq
op3rzhJWigwtKAtNVdQ7v4yHrtsts2kcjMoclLqIzZox47T8uKYj+/P47r5+UdjyBlIYFxQuYEz5
qEZJxsojYX3DMNWO6OZBqgTjBcfTqUvEgItQS5EsyyBrrtF/QhSpefCyec7BtUsgU6zoNBp9gVBm
afl8o52U3r+E0vvn1LtittYygpnMvIyTuHxyLdMA5eK2ykWB1QQmDea6gYw6ceF64UQwIWOdRtNl
jIg5wUoTew3yWjo6kmGI1M4NL2FKcF3mx/euLTyLtBReDxjeKfwdrz6Fb1H+j6qfZYnQAjZstTPl
0yx/crFJbVABbakCpOvOThWIOFslvrclNtKNWm45DmYzlxAEwhtthPcjMerVnN8byfw84gkP5Bgo
VHDD0jtevIIijqoZj9rZYCPhY4cAfLOd7ajhwKxlBQjiVQxcl5A2hixJfBZ862wYtghYyHeBrufK
TZMtgcq4QxQtVS+JyTmYFAEZGESw2opgBJG6C6UkvBJqKVBljW75hwSTFrAA/5dK8feQMkXWsFth
9sPQDtka8yieQr/zOOXn7Cmbl5A5WQp1LbjMGmWVx3tJFnwbJtn3mksgk+IdGr13ERbYnFbYHCOi
Zi2cN9i6biIhnqUJwPXu4ySE6r0jwqpm80qM2zRueELtqoBNZfptUJdeYFJwZKy3RM2Z/mPU8sJ+
sEdy+mesYGWPYsxMrvx/g7WFPoWtcbu5h0Mdm5o7kS1RdQRfgza0ITXhODAc43bDsWPClJG8TBPS
fFselj3WjbbV/4Lld3EqqvZ3bS1uO85uk1tiUodJW0c1o6CFoM/7qbQBpntckkBiwrStSzoReg2X
tO09kUJtC2AZf7E/mv8Uf7TeuD/ab9Mfnb/WH4n+D/FHgt62PxL8Jv2RkL/YH9sNEyyikR9u8vsS
8+8NdpaQcV2mUeDTLu8jFtioPk8Wy1ANNsvSiOhEumEkZjxUGLZdxtcBX1Cb3fazYC6WjVxXTHPj
IC69JCu4FMu2QI3LBlUZYyMow0jLIsA2A51sCHeewVQYSjCo78DDMzHFLnnYqabwovpbN5KcbQTF
L2mVVH3u6EG9gKoq/hteyIe/SwQJ/OxnKe/sadeoS0H3u6hUBRJwBYztMmzA7MCsYRzN/XwDYBiH
wziNi3txAerNTpjN/YRLQNiCgnOrj4RjUPNIofr2wqG6Fw3TdUMP5BMTaOe68PNmG8wND3j8wLdu
XvCiYHe8c3btiQfracrl03NIqfJKnwcwX8/fVV4MNdFPLA3Fw1HZS7gzVBYUtcHrhJHOoeTe4ChQ
VmtMS0hFGbruZIJcd57Gv8/5ZFbmp3VUH9V1k5BHbJ6UEyguwCcbzT6pn6rHck4t3onQM26Jm2DI
Y3txX6VLvXQqM5s1fobg18ibP7MHNpKl8drZGpFg+djiTvXo4maenmfZzHVnPBdPvcTKY8XFdBRK
29JlYMr9dKvVDmFxqlBjc7FgmM3TsFpx3F6Jc0jEdCQXXG5uL8+vrq4nZ6OJ1z0/P7v8PLm6HU/G
V5PuZHR1e+MN9Mn14GZ4dXMxGd5eynXRyUSIZCnUbMkV+XZYca0E6mfVYlGhi9wkdGS1pYj8qE4R
fohaFgM4uyUp3Q9ttU5otVIrlhNMhTayz09nY8hcfva4Z0HGodw3zEgFOt48Fwv9gwf4JkifpfKJ
NFAlhmLobaliztRFnhDPqyRZyPLTTEhOCVIM1JYkwr46kcP5bVrGyYrsct3oPC7KCrVcPYiTkudi
bAZeuNVyjhExmwGv/vVoxUTYy7IVg7Sk5HDDlgtD9dX1dBP6BSu+QWYCqcSeCDeWUkAeqlbIv8rw
MRWDtmMOaQzm0pvM83kqCBoOVQyjHUEzwJAfGuQuWCwsimyCFcOUS72Ps2BjhXcnOZNy6kCVNIH2
k8z/dzCZVrQshyiG1ZKUqUOlISgtiFBHVwz7xZtmmsmZGRzcc0kJw1C13gEkBBYrXQjDWG84EiZA
DPfgbDgxCrARODDSsFwuoK62RaBnt0UIDoub2rRaW2y9PQIhDBXANy68zqSNnRFL2jskaKD3wwCb
XJ0s20+md/mk2q0hq4+VNNhtD093KIMUKXZe/S7b57yc5+muLRyzimeDXGM3BDMiEoaVmifff19B
RGQFkbx9iPTtQzTePkTz7UO03Le32and9Ib7tD69WWXK4P46k5kOIyy3NLUjSyx/e9YkFrTlpqJX
nTYZ7TZ8wEBomADuciSH8fHaqtXWnDYOYmLdAHdbNJz4WfgkKSG5uaYVJRSF1prSapixTLlnpqXX
8lDdJLT2WfuPhBW1RVgVfPqdxeVELNuxpOG2wYcPx2j3QFpXv458M4SZw7piK+/jYjEUuW6RcD6b
QAVSq/qC+zxLM6iv5rl0klOxlWmx5WrdSt47RclHFa32RSZQ8tVW86zN+PhxiRTiwPdVf8oSmLu6
7k+cQY1UBAw8Z1dlKia4p6vWoxIwBRfzkj9+elfH+kckSpblK0Q5aS0Fi+imFKCXoKobRkt5BH3T
3ojQF5CnOEBr8t3iKQ3GMCs+bXBcbKXrbMB4f9Q5+iS8QDjAIsYlEMfaiOyXAEEwRXsNIIO0zJ+u
szgtO3+GnKyenY0dfy+Rg1phtcmw5g+TRZRMZnn2+HRai6A5kD2tUADbPwf445/S33vw0vVzAygG
rFfLqPbrZVTnlTOq49an/Jej25vz9YOh6vnaYZrwtqYJ3vCSl2KWuGecMgjMJLGufvhtw5ydyp5H
6qT+2FY+PPsqH4/QjXDfhL3JiVqIcAfLTa6VP01kIVw9AyPU+GfEEBKvFyyfpKuQH7MkidO7Q9y8
sbj5IUFumxZSN5+Xbm57//FOLpPzqL62svSIxcs4bpzGZSz3n9VnDdggamej7WJ/s0GONva8/3gk
DqhuLB6Rb00MVsMcsuyNje0vIUzNqCL8vYzG+2kbrSNtf/iL/eqvFP5in/irhr94jPbz2XjfS1Xt
KxZETAiRmZjD3E+CB1G3/LGCxbICx6jP3rM0jIX3Tx7EVljx9pwrqO8pB9ZXp1UlIHfoWa1LEV/X
Ga885prl38RD86x03Rl89paIYEL2dDadJc1XWGSfUZDNeHjOpn7ITsWaqArTtea+2EaTao5Xa7Jd
vpTxlE9mwl9Pt2+CnVj4NAmEDv5s7VOr5mQNhE1ity2CKAmCkKk/jzzXBT9buhmwmqeVjy3yh962
/gHKkXxMtJ6oR/N0sShYfT7dZlv7pXPkuv890evyy5k1K7P8RT0/LafkooARb1uJnp2jamGQtC6j
Xpz0zP9c0vtnzHmwmPOMhyoENFicJ+pPPJkdkt4h6b1S0rNYRDFZ6U/6WOVi16CMyoLDLPeSmFfv
bYlqv3pr6xxE4Pnp6nOPFbz+MG17rvkSNMh5Bs29/Fz5fg8CuNrHdMhfbzd/kUP+OuSvQ/465K+/
af6ih/x1yF+H/HXIX3/T/GUc8tchfx3y1yF//U3zl3nIX4f8dchfh/z1N81f1iF/HfLXIX8d8tff
NH/Z6uKIW/EO0/4TbfVWembcCY0QVUvScvm691TKV3DP4wee8qIQR4KyuyqSdjboQlJ4KuLik1ye
X14dxo9V4Db6fM7Z7L66JI7OlS8Zil2oP270rtrv7Mjk2kq+wGaB+izy/Xc6TRTS4cC2uCWGACFu
qk1arptsMBsl2XcZhq1zD4sik5sLA4JvuK7U4ZqFOEJrhyjEbptXgJOl42CbU1wI3Z2lS01W7L7E
eTlnSXUgrXj5ewXiKo/v4rTaxYHbZh2dmTa2ayAWb0Jf37O0zKZnaSEOsc3SzgbM6pwwx8Fts5HO
mE9ZjeF1wlIxUE9ncQJSV7EnB8Z1m/NMvCv7wEPxbgF/t0iEZtt9bTpzOPN/xHs/34+1rlVbcfyi
tL+pk7ab4ZBlOKjuabs25+xliHSDbBz6+opDTPOI11cdYtpuoXtmXx9+vX195NWHmGBxivp3mJ+I
I+oXo4oqXUntmFTz4/LIVVQ1Z4/u+nhzhAxm6boNFsj9+o3lF6SZPNh1A0I/D3fd0AWTMN7DpIh3
dRHcZ40ejk8jzmSPHTcMwUTN7d241NzZvkEjuI70rRsokjfQNl7wTHEHizvQqv4ViBtko4tp6BIw
ovt6GJs9OMJSXXFDxtXoruZRsgEY6Vge2JDjrR5E0lLOs7s4YInqXd9WJ9xDZTPI8yyXp967m2fe
K2Oxe/tyLk5grm6aiqL0Ynmo99mU3fFCuM2il3z7mwqLaWrzoh1F/sv//ERH/rUFTV39uQX11OsN
kWP3Lc1EeKCR7qCnde0u1UDiIUEDNID7n972H6ZoaMQnO9Tkm+AL6gfov/iDEaP7eLoI/Y4OWgAd
9A1ngLRe1zY14vQdzemjgWajLu72QCtQdrbVwnB5sTjZxbgJO8BbsBnC4M3WjgNcdpixa2JELaOr
2V53qBFq9LRe34BPPWT2B4aJBnjQVoDqXh0nsw2+jRM8U6h3C+c5v2PB0y60tN83vS4eaj1PqLs3
wFrPNi0NOdaQYmQhz+vuR1vRfQ5z1aKBPGDOFnLfNgH5c0fW7MBuDVF3gB2sUZgZacQAV+kadKgZ
iHgGVMf2cGDvwt6kvBt9s00dvx+ybc2Huh1ua34fcNylttfrOhr19C64CLG1rtdFGhl0cd9GQwej
fS6yH/HiZg0qMnE1uNShwkViC2f+UBlozIvyZp6mPD9LxTmpPOzNxalLVTQ6tml6aNjTUNfxNNJ3
AGmfIM3r6j19aNrEcJ6Jxn20j335YzPLPN+pKRgLtwUjyJLJBUJ6oQxBazSfiT/vUs8xiNiWDp6j
Dbq2oxGT9DS7b3uaN8TYokOvhz19l1TPEFYqFAIAaD2qecjyIiLUweAh4iwQtUMMcoyPqfBi3R4Q
2xhohu5BBOIu0RybeBrFA8fqDQaUUBPAzItc8D8R3WvMbMuuq2J9MZIJaz3LCgB1sRgKlrpwRAJA
PcszLFszugbRCPLAwo451DyLDHQCVnaIXWNfUTt5jm4Tna/vQBfaMljWVOI0ypaoqOEcU/0YiUAZ
INOjPaJ1CbZgMDAszfEo0hAlDsyELKcrA2UvuDXZJiiOt0GFId6I4Asexmx57FAHHYseyDDxMabC
iyzDHPSHA10z+w6M19TGWndAxa94YHYtnWI5Xo8qUOexn8OMoj4W1envjul6i4YEHLEtCWxshlHQ
GKUe5PxF7dgSO3wH2ASSvNWDGLZwv6cRAlPjHrEGmkcwFmqG1GQ8C7sbBDwR2//5D0fbiv/uZtU9
pSGApe+QyiIbdvl/3q5kOZLcyN75FXNsM1lQ2JcjVqlH1aOaptQz11yr08QmW1wklb5+nkeuiERm
pY1oqksWGUHAHeFwf8/dEUkpQHoe8l7iXmUIOwWlFa9qSKVqhAKdBld5xQY3OicegdjqVaXS7GX+
/PRNhSgT2b+JrkyUUR1lFnaEibDI8FMN78vNwew5d/ekilCKZ5X4kB38rsyBABBQoecKG1LBdzlx
/fn8dDw715d1/1a+19+eydGqsHAdFZZ+jNStC3h7PHgVqffbl2udA4MCgim4NglYGyv8W7beqqB5
tZJ/y7ccBm4kc6yzuPjlxFK2TxVrq9W4dy2FtFg1N1YM3Dg1yJoLUIPhQ03aB+GMKtX9v01le60V
lYuOqGI+gTvPv66edi+vf/pC1m3uR5nJ3UDqWK0XzEb4ZQOso0yGgVcG+8ippOSLL+IjDPyPEONh
L0b/7uaWVlWx6Km62jv7v77PXmZP+LPV3lasuRdbW7GhAhbCtwtr3CCtC4MXQNHZSW64M/BTomsr
00EbiTzvWLBXci/R4je/mc03hy0oNCRxLsATsjo4SwGZMUDiGgMgGqvCMRdd9CeSTEZpp1cdM/Xz
5Xq1jc1k4IuXr7++HbyAkPBq2xXR1vpaAxtU9kCJIcNR2ypADx1gCgBFTv3IPB21EWmhzblIy5Xa
r0j8FB6OLkk4gggItFzAIwXvEOiEAzkr8EjFJ6uxx0U1/MMixmqBAfq3NdI1Si3XncCxEm7iDn5c
/fL8Nr41d0+KseBjaPQEhZIHdzMe2jFQCamixYLzNACtR11VTlrLcz0/v2z+Rl+Tc9ThfJpLbnh6
X6PUSumOUsrvn9Svs18AIfd2Q6G9OKald3nwgQgRr26A+WuA28Sdi9lFU1rLPRljMvesN/dhJy/G
r13ZzW1GHKkL3GdBnAJCA6aO2DWlyIElVYDNuQq57+tPhpqIsO6IYMSEiBMaj4/vq7fn57efDyiN
tnG2oFjYtyVK2sYWDgWYcWARNMZKkXzvaZ56zNORL7j701ta6Wc9i1wccO+P33++Dwcv6BzADPke
VlPN5OZ9LAj+tqjBYXsNVbuUeQEzV/qbQo8lg83i9YbgfyJGK/7C98T3e1LxOHt/OrwQ8Dt9ROyq
Op6ChN8WCb4CDGIAx8pgMxVQhh6Jq10zOB1xIkrHFNdyNUm3va4W7y+bt6/r43sDvjOjMWjNBQEr
qeCNOeChou8PHfNrsWawvuKK1oio0l/HiA+7Kb4Fr87vaxRaq44HXqvFxLCPqbu9k6L1DQHASXo5
QJFMOEDDPXE7IHKq6IF1mRa3+Kjj6N9KHLay6048Xev1xNE+bV97cv9KL6d6fWtskfao2GljOIgI
z+AilRNsB9NzDHHOewTZ4llI2d+ize41Kw+d6U6VOrvtVDfP5+cOh97Iubf5k5d4ntB3IVSVOunB
FAkVCpxf8Bb0g3nlU4HNFds1+ONwrRQL2ZFitdhj7n+8Pr4dunO+4/KeEzzkPorssYY5CYQugMXB
g58CaZfoGZB2qbX1/KfjNAIIf77fvJiriXn+YfUyX708I4LKg3Faa1hhCTxYCMQfy/wQRTBDNB7S
MZZKvA4U9oP2H9/+aivuvCOupMqRnIaJkU1//0fKyG3DhIK8BLSUiUzGOgTjLEJXAdIJNQzaZRV5
QKzI6ptOdzf45Tixu+GuldP1hHd7k/vL6usvX14OMd6Na+yUdkoMuVjA/wTLi5lx0PfMFXBhKll3
7e10rEYINT/39d7OV5MVPL6BGe6I33P8gdXunihVBHd1ueRBF8vhWSN2cNF2MLY6MFluSiofwr6/
v5otOVy+azXpbGu7YPsNtZXqPh5JAJcUyKJQUccyKF0puQwq4gN2eFbSgboarDZrd1Q7UCODU50l
djO1f85/+r7W4/zKjqAbQNvZTAwPO9oKIAGV4R+LTaJU44u8TlPH9Molg2xAwHH2VujZOf70M7+m
2jMJTa9kPmIYM0ptqXQD1j/EBBOVWZXBGR8HU7XNylpubWpX7XSUZvq5tefTz/1iv2b/+bn8brJm
qarkq6oE9CRReza4ADyfjK4+xhqU9B+0ZsfZW6H9siP0Uk/Snfv4uM94ckE0WI4RkenEpcLeIRdK
9YGggKR0AYih0hFP6VrKpBm5FW15Djs8+PohvLVvef5OKXGvt6AuYGbLZBrge8BEjXdD1Fhhq3Pm
IoRscl+odsy7dmbeEYcvJ2nr7ev/DkDzQI5zBqwULg4pMewRockNOghXS2Deieg8u7ZOp+OeyjWz
HbObAYXuKfvf8sPngziccGWuJUfBwdM9kIx0DJvUBQGr4zmaoDRc87+JHh+Fa3TyHTSPjXy0yu13
gB9hhYRjh0ESIzFUVkkBHp15Q+nIhHDO0qCFLcbkyoKfcMrJaI0kM3aeDJvNzDTW/PBDehgzvLhT
CjsKUpPHc1VmKNkg8EkFmlu8gn+WAGCl+mTdLViRxr6QbceVVlqz7kjrD27789OXiQeyFrG4wO9U
IQlKgGhECcphZBU1Cs9diB/kgQ6TtyJ73RF5vZiwJdCS2XL1Nn4L5utiW6YcIZH0Bg+OIGXRgSsb
ymBMBLClqh/4PRuyrCE6cI7C6y3rTT1UeT/V5fLl2W2NWvNOGWm2kLyTDPjz2+bxlYyHEArnW3eB
XelSBFbiudIeFRyRAbppmyQIR9VgT7coc5jgMs4bL9+1cnaMfqGnZY3DiPR66ceVY4Jz6MHGXcDB
pO8tHysECArcSsQ1neAAJTAqfB82hstGqRARaQu7RZnjNH1tjtdbdbTqqHPcFb/7tK36HJKI91ux
ESVAT7kaRLKKxJbgKIhvwlRMUas15Tr/psTz7z71Zd3evtlujUaCRvYl6+zopdCTqDN7fTyAbmPH
rhQtQ9JxYJpwjTbANS65QbBgRKJiXxHXws1hwFYaec71YOiiw112hTyyhm2iiHinBrcy0iDqWRWH
qEwauCzMGO0BH64niv77ffby9s/L+3Fi9FcKeYfLd60aqqfbbLLSO7yy+sfb6okGPFiNsZRSIkgU
g3ZRsjg4aeFTI0zGhSIHBXIB48weKPMGSDSZYiLsvCfsYh8gH2dPXzbLo0WPpEeroEJggyhUODdg
Pp7B1QdYMueJgXhPAuPpKJPpl53pj1ho/vrLPTvEZso6BAlfrPG8RTRwzjZZPH4JrEjNIyCwgcXY
Tn4yRjs3X/XmXk2c0wlG2WIQ4v2c/m73I/1EqwJQBi7IEKUldT9JQPAKwQykrZmbpOu/pVawvdZo
yv05CsIvl/uHTHb80w/bYy6HzKzf9iEgqFeAnUEzcl0p2iEguA/Su1S9tkEY9TGu61yIRgfBzrMd
cyH1JA7mzfhmQAhxLHRss25CbDUyoiRZeBx0EI7wsyDrrQO4pce/JIII38x5XC9vnGKAM3kugICz
+061X8j1uU9ZyPU0+4i49bDFoGAxI6oRcsSzYyG1AL5QGS1y6v3xnHLtIg+1VlmKiNZGc2Pw3E1y
MXjurjcqKHYOZBaKTx8g/pqao2abp9VLRwlwLlGq8oOv0lGhB8E/Mje4lGwSRLarvFGJwzQX1Tjc
0SrSAZoLzf3kWXzeHnCYPS1W++Mip0Ua5nUxkSfKWwLUu5wG54E0uWGKR6YcUP0tinSm6evTufGu
1WDWUYvaPxu1/mv1Vh/2mFmNfTVYd5lcdYD+1FfAGfByop4gb4PjFhqZ6/WmccyLiev60Mop1h05
9WLaAEHuZLNcPdOiO1p0pbetGS5HZgHn4bARVAUoVRCUdpBAY95l7rn95v4fR74MCsbLrdR62ZHa
m+kG3rx8fpx93TXY7csfgkN0SoEGawk3IdRqsn5WYPgc2MwKC1+crUrupqpBO80F+2/uaZXx55mC
hZH6rIsMVAvkZgRvdltt5vZeEiRmLKkUdR6KFYQhuBicwkNREmzbSS9Szh/nhfeSXOo12169a9Ux
PR1X+yamxfOvX9ebx9VpE9OWPrJkXJYAqAE6DLJUoH3Pw5CwJ5IUoJDSXOheOB1yIk3H6I2enfv/
x9VPn0M9LTmpe03mT58UBai1WVUIVqnX3mQH6QDqC6iJsaZ6KevNFApTXSFQuNoqoecdJcxUiU8A
i6cec2s54ydxKV4oAaOGRK1LUos6eKXtUFzSTEhsBJmuw6zjN/TdbD+nIl2AMid3tEqbntK7TrKT
GsNq88ty9niIeKOucEbG2FSHrDQca2EAX9rhWXGtEb51QAy55VntBr/UvjdebIVedmKBmx86azeL
d0qdHHPgWvJ7PcaCEGxItJEZtrQMXA7OqAy0rk1UcLyi5haeT8Zq5PC8gxm8mU0wAy3+O2gYfTXk
466J7FA2TsFL6lUNDMxJSlkGUCgE2xJtLrpKI26y9+kcl83g9K5Wm57b9H6qzQ8Y4+X5b6tTLQzF
KYF11MnR1tUAQMpsm+cL4zFZlm5KAe7GvuAId1cnUncMeK6mXXxHVj1moMaMmsF//JhQI/4RArAO
WJGsVoKuMTlAI6atSV5r8y9R9uP1RvT5+jzTvljo6UmRUIBnHB/dJH0SxxWxSvgVPfDRiSMeDU6o
AF9pRQJuq1Hbj4tPoVxwo+WuFb2rj53o8/rrarX4+f5ltXj+8rRpuzWwVUGGPTWH0CcFBHAAbUFZ
WQBwk9ZX4KEYwPXgdEpOkXP+ESXMh1GqH3tCNS0k09smK3BeNl4s1Wwflf/xy6M4aQ0z93z0AXiS
oiY3ZEklE04lk1TB1ItWLmcTRNKTHoGTce7auTq7YbkzqWPmhdo/Xo8ZnbF4Q9jABF9qdhEwPyL6
OlpsqbCPZfJAcpr2xrWMzsm4rVg9y1ju8AHlBev/Pvw8e1ktz3KTaaz2ZsCTyAGHAwMrVIXToQiX
AzZsjfmDcpOtDBP5e8tq+GRZ315mi2MHrdh30DrFqpaw3kjFasksMA2LfqDej2wScDEP11b1ZNhW
qnXHYS/XfuKw9w1YP2/+4zu/a7xizIxt4BnPmMNZG4/FLTLA8CCYKgAq8Noi2Q9pD9j3Xf3+++t9
Wb//vtFvvT7vWl4ydej7qeC/2xcBvHw99t2occ1TUTy7NPY6UjuWTlT5rnAgVqfETDJWfDgOC396
uKE+dC72Xaug7Gm9mOZnn9826xO16QzbtnOLKwsvNFRJxD0jrDnNoH3IVUqnNVjk1aTsybgTuZYd
uci72wkBD+/U8KnHtJbepkVihJV7iFK4o3YyEMNCfsUzqWyis4z2xnYyGvwiF6eLrdDuPLW4HJuQ
GqF/nP09YcSX2e4A3JhAUNtWGj8293iqHOs6iGA8XDQvgxe+DNEygGBlpa+dPONpkP3tdI7pIbvD
9UYBKXoKUA/QpL72+Pzy8PVpQQjd75IffkTpnuPxi2gHUcCjpGa03UsYbJTVa1+Z8uXDd8JBnktJ
iN3lRlflzzPeCJ6skzrJ76u3vJq/f/n0/OXLBFL7YIq2HPEzeDpEaOhwi2IDfq8LHTkygd9aUpzO
czmnMr2z1WzGe5pN0yt58/qX8DLfvL3s+mTFvRnZ1piSyLWq7CNMMIEpRAffRu2NklVVEAVFjtd7
aCajX0r0NjdNtLA9LdzEFn992TydJG3uP9PPY5JlpI6GaL4kZ1xsHawL8FLUk+aqouYFViwgiDQ1
fETk+dzK0iQc6dJEv85eU3N+ngJ+XD38+HnEqnsC5CpL2oLnZ2rGUJTGttT8VyRYvzQ2q3xz2gJj
X0lb4Gor9fy8iA3EN5WajjEtHsmk1LbeQJ/UY+mZZqqGoehMraEImZ4HOzBfdWXwa97ybwKs9Ony
iaT06a6VrCeuWO4h8uxl8fMGDPCAkgFNd91OiStmDaiAVtRhKen8j6RjnhqbOmovWZmQ98lgrSCd
M4345bTbm1TIm5ex/eHraMUjeeRupGECe9IKPjCZEdccj0MITg4iMpuNZ8la+83FO4x+eQ0Pt0w0
WPY0OJwFyZvZl6dn6qf+YfX6Su/LaGto8EnjUd6CWCwNuHtOMF24FI+4MOgYBHdZM1snFcvr405E
XHdEXExzCunx+X2ZnxeHEoQUfFu2DE4IjhgI0heonmrsAEZohoTdFhLkU/mmzMJhhgsefH+5kX4m
Ows8OwLQ96e/b55OWs+3VXE4MM3h1SJFWRm0GjzwzeCzc3QwP5jcz6+ejtaK0UOEM72cpDj+PN/8
9R0o+tCfNbbL5qoNAp/FilH4p/dIOAPpLK/McmGtUDct4H70/vrtr7Zy6048nxk7YU3ta4ZglYdj
qiEVam6DV02ZUS2UD6GUOCjDi0xGcVXtNSzbjNyKZlxPtGmuF8SEXk3zPy/4sVvvSyZxYcDVDSAG
4pjwwLTAWhZw22VuS1E3pe/aiS6ypJN7JurMO+rMp0Wn2XicmNDKeLCY9JE7rCi3Gd1iArifofIl
jIUTxqAz9JWsiAu+e0XK9bTS9tDyRaA0Xm6ln3e22fysdr6dFah5vfnyvkdIcBNqex4X/yFgAZSU
bYWXyFS4IUwRBCBvUoFl7yt2wvViX2eWC4/j/Ma7VoEOWlqrQzfWp/A5pD9MTnRWLxgPBeIzyan8
ESkV5AYE4eI9cB7I0r+pZfVUvrtWB91TTF9sTDlkXE9+tXPvlUcP98QHW1SEwcU8BEkv5glAgbxy
U6r6l/Q9Xm91WJ27VDgrOc11vz++bd6e3xc/n9UiKX2ntvCcPsdsCtASVfyNlPAFlgprSYuBiVIr
3IOT+iYMeGXSJhs+ve2u1UV1FOSrvfWd9XXpLVOXMTLuEa64p7PNJmD/BCEGDoBFr0pxWk1ykVfa
tzDhuiOFmGKss6TqNk9Pp1m2UHVbudSaSyEQwBIvWGBp3UAQZaAiiXe6yCJvCmXd6W5M906T+Cv+
f8RdWXPcRpJ+56/Yx3kpbt3HY50aRYzXnqHl2ddmN9pmSCIVIqmw/es3s9AHCqg+bDNm50V0A1PI
BKryzi/ZMkg1cDnvysIc0utD5QlVMx0hJVym2UXtCfgPCm0vUHDMRHDQOddJUnal21DLW9+fKX1t
AmtA3qZD8yLx8OuX9e1hZPUj2HkjQNokeeWUZ2A2glnBMdnJBBbZWcKSSVmkUDzjFxo3Z6uf0nyz
21puOsHlgVs2M4/e3d216UtnCveUWyJlLKjsLCJsCQLudA7CxZAuhJZhxT69cKGl0PIehXxvCDXA
DVimfAzNjyATmAPgTINwTIFjalwi2hMlRSdKLQdXbX4qTyw5I6sjBPFw7mTE+vXL89EPk7Bna/m5
9YnZ4oiup9BgW76VlIAXKbWNXI3ZsikKw2SdloDtMo877MCiTkGn/40bW/tfUNsnrgVLwpKYMmYH
rCKBy0LApqWCZ7DN2Nnq3+nKNy0RtkPZqlfWfvfb5/unfYCsFl9i2NPQnYVYki9o+BOTGOavQiTB
KNh0AfRBQcs8+GuPePOo06e9ua1la9XZiGBGnyx4f/99BdODAzO2BlN48TvGqItUMQvCiiY4PiWC
ugPXBqRYAsYMj/ZC1Xhdu89FvdRQji7/gnJ9rFr+9t3D87pt/+FMOoNFlDZFsC1ygPONXTJORCeE
BR/d+/9U+8+RuoYrzTpaWrP7PVfxXfzurgdHUBQDNrDMBDY98GYQfys4woviCFuH1UFvCUfQEDJj
oaP/tN3M+lp6QWT/I0hkoBQVolH1QFs4KpkGRuBwRCLqX9QnEC5aRxB+VFyo533TtA1caHm1S4d2
AAd6rusxmPAR9naNKowHyIpbLJxH5bP7E0Wp12D2cjCxhEdjS2gSHJyjokGoodEIm/T8V9w94ExQ
Y36QaoXegofV0AmyH17g93fHamUNvjmyUf9FLQpeLpgA2FBuChY8OWK5Bu2gk8VYmLJXuIxXf6oj
JSeCZXe9+mTgr2OH2kUn9WZ4/vjy9OV5UprtxiYf/BePXc6MCcmJCoilYrwhlgGzCZFoMjPw9a4q
cEzjg/a04g0nwvHLG29aHjqMrRdJOXzHpcHfcLUHS4mxcFNFah0HAekQZUdIVojjBrxm2JhGJuW8
vyxOLqFvtPc0bGw73T/Dli3ChIgl/a8BnZ3h66EIdR+SBVMAIzJScqA3EupZRNgHDGfCfyKwp+LU
G+quM6k7zzrBV+fOljuuOtyt5cCXeQVsX24qqzQ3CRvNPQhGIpwGJcYxTw8WIXwV4ZjzVycWam/0
6cwCXm4JXy8J3zI+T1utvk2xXcaaYGvdLa8uPqfgtWFtoPYIi4b4YcGAE6e0BntBiWiN+4uwedM7
bhpa5brDgFKLPq7Pn58ex7R14yHAsQZnQBNYRCB8AsYfwbz0XklwlENR1xWjHtc/dTL211vqO4hg
W7ZWiyAlpjmqmsEqWrqrpq3xPGqtCImRiHhLYKtLjIZlIrGSVqZknXdvJ5wPhJzy4naXWybXXSaP
eEyrzQM2Bcz6ecHlz7YCgujIsfcsESdDIYlFRArUzHrzRv28LQUt8Z0KPvyxU/c8M0pgo2HVv6zS
FzEEGQ2I9AnGXAAPOnjYZjErHpSRMVP2NkZP58aGH95pt9sKOYdrW7w7dHt2aDPj5wkq+6ypJZkh
SEewcGgiHPpklPaRpqDdXwDJ2F1sSO8lw7bKbmcqpP5f4+rLyytGmMZKibFOwpSgVUoSBBO2VStQ
8FaDbQYuRMrJOZbYmyCVTik4w97ujpZHRzs8bjbXJOB3pa9j07JUY7FQys7BB5OEWond1x58eQm+
qgRHTokslUzqzc3tAzln8vLzMBtwOXRYHw6e0v3vGCU89mJWBzAVKwo43GjegO4EaeFkUSRyC9wZ
LFGfYS81q7TPHzqaxLB5huXD+6mZdVTjUuuQCrhqNLiCmoQSh+hrxRkQypw7rq9S49P1T2Ti3p/Q
hYZ3ZJXhm3517vNvjy+/DE0/AdY7gL1Ywxv1j5pdjKYkq0hhwBICUhBbAUg4V4ZGOPcXilL+zAYa
g7J3SwqXkdvDTe2rGDpiztL7uZhbN/La1MgO/lOjYCKVLALRCk+OAdfN6RAI1ymqhBAq5aoio+kz
TkiD9QlhbTsgGNvVMDcP9uWf//W3sVMFvotgmGGt+SYwJm0paNIAL7AvEecN9A9P3ibuk2fKXwW9
d76w86YlsaPx7/mhwHH1ekRdZRYPsueaGusCSRLLLJj2cJAdJVyBIWOC9WPv8rTw47WHsbq9d50z
sF6tZsGKEUj+1xeEPJfjjh//QDUBSpkjwoDFpLoIOpIgEIXFBuO8oJLly/25uPhpJwmv3rQUdvbr
xg1HxCU+B1xKPlOEWcrgD2GqhOKsC1mrYSlIvuxieDPApU5od7vpoOXBj0ec0mryxgZiF7aFZnsc
oQwf3EiLIhK8bBFhjwaQLzXaCBZJABbUiTa1+cozwjqnZjPoQ1r24RHsVP/p5wHeySw7CzTFGLwn
3mFlIXb42xwdoToFprI2UZj/VHZ2SWbL5rCMl24HbJdtdnqtWBzjxRjuYGoMC6DjWagwmiUCTGG3
haUgGRBqBtxq5pOJhurrQh3HJ5yKcRzvmPAAts6wMHccOJPderyfpk2F2Dsi2K6JpEYFQDEJhU2p
JnKEbxWKeAbCLltpDZ4Jre31bYVnuwp9wwNT2w4P+hC3/vjrEbtymtkA/YGNAahYsSoL5wB4wRy4
zi7hGBJwGfqZjeOCLR2m9y7XcoK3PQGvrKDFLDglQIigpYK5eTATA3aEhxSZcgqWZHQBt90Bl3KU
r+Ty4Xy1nuV5No/Pz4eXoYzGd8FrljQqD0yTRLFEMSQsvg6aJPiONAkQxPHsJIzJujOyNkuytJUV
UazVBv5DhO9Tu1LGjuf6F74krqXSOLGEIt6HtfCd0H+gTvraPmZjvja9Aw85UzbzITbE46ixOfGM
LsBqj14ALvLvh/KwxwUF+Vx3GgPb00U46DkgQikCyYHVDCZcSgmbEF3yV+egcf3TLODVm5bc5Qdg
Nf1nFuM+sFr+69Onu+Fxg5VYs85zaw3XXGniDctwXMDS9ojC4oPn1DrForsKfXf5qDPzP5r7GsbY
skEVf7yf9XDc49zMQx9WLYx2mqnEqCclotoLWaLE9YQF5lQCH5r5s5MZpkvOSFovSeLsALLy7h8f
Fs1XMkQwcsBN8Rrr7zzIH2tpJpm74rMHHz6btwKG+tChmS8hcOBHPq9T+PT088Pj8yEcfHC6kgc9
RbEogQEPwipLQimGpMySL1oj6vQ1m6Kuf1FhT6k4obYnd7R83osOn+v54K0fvj69PK2fPoXX7RbP
AKuwMfZ2h6QmucuBYu0exT4PBQaT84GAorBg8Rkj3FUqrn3KKR99ek/Di+ooPAab6ABQ/vvn1a06
ZDRRACUqsjWgkU2EXYYVGZZJUHqRm2IC/GhmYx2ma7QPN51zp1aul7bfuVTvH1+Gr4/Y2s45NvGP
WDz1r4qaJBAdVREmccxWBdgUmPOOimoD15SKV2fvZ088k8Cf3dnyuAyY4o/3PaGJ9ubz88P9w6dd
XXDNk1R8F+pFpqBEDSZHBBhBJHAERfGpgKcA/nvRl2ckNeufkZTNfS03PTWmBrdIR6JR/8PqcRgh
BMfGGKdryWSO0fpCEpatCaEo8SVIohgTWItrnVdvEbebknAujD/eMWOysy01PUwc+gr+1Kdvt+5o
+2D0SsNOy5oR7hA+Fa1wi7M+RFAZfkkq89mxaJdpKNCqo2lrln4BaOd/in9PaEOb2nGuDFqko4TJ
CvwgE0l2CH9srQZ/0sJpLRrUL5h41uirbR18yhlrBy+3HNiOLnB00znaaQR1GSNVXNfMrfLcZJos
UVnVXRIQ/1MTrimLJjhzseFot/CZDrAWowWp65G8Up1Uez0lnVFmMfpiFQVRzrMlYJYF4lJ2hIcg
tZMgOFO5DgH9Av55S/hK9wifz4ZbN0XSh5kjdeRErdesSaaYSUKTXYBlA1uFov7V3NDkig35/JSp
xfozMu+XZG7YPD1Z0Y5OT4sLGagLVuD4ngK7OmBXJ9heKlOng+Q2XdgZ0/X7b3l6x5QDMFgXHWdO
0GG19HDHmaZj2l5Ie1uRDrO0KimNKD6Gj3NxnAt1ekbOHMeVlIvh+xPpuri7NiUX/M+lnSL4vVng
neDEkGnJiLxVutaM4B81J+x99SVxTaBegolJOcrsQFNS4PqK8HZ5yZaeU8go03sarvnmvsP1Zl4x
8/77u9ev2xVOBXFjpY8bq3x8ZixiGkIiFix41ALDcPCf0TLBwLgRjl0olNutfKpYbnd5RvXSDhOC
LTpc2upFVglXmkpVy06lMuB5ECktNlPgDNqkDfGOCU2LcYZf1bZ9Rd3iqZpFpHkpRQWO8mwjWe+G
pymkYj3k1Bg0ju3YgQ7iRkqS6keQghMbrSQ6ae8plZGLq4D5Jo85Uft7vOGmpZj12GDdFp3Xx4eX
59vaKfPhcUzsMz42uYwI0KDApOPEZCwKYdnDjgIJIL2LOWublL3Q0r1f+UQga3+55UD2PoQcjt1w
hwJM7qr4B6VqgLbIsEAUfEYSKPgniUcw8nkw4JydaIRb1krikzob2tlDM97nYb2ahGy11hUph+Zk
fVaZGK8QkxmBz3jOoEGt4lnTzBqA4PlCDQnuvvMN3eZUg/rUFxWwzVxJCgwOq+CTgcQLOOFTFC+1
tcnqkP5IU/r5RvSG6mHb+W7w45mKP3h9uN302OLmkregEIPCcV1YZIGQVYRFhrN6o4bd9hdl9fSO
Gemdb75dzQ/NZMwYdrLpXUeb3qLlx7QDYyM42HzYoucsDo9TjERrEEGbZqfoBfF7YdjY5IabllDe
oX6Y54z//r7Bgq2oGRwpd84nL7giWCQF9hPGFlXBUQogf2PiXF5Izv2Z5OqRmlOzXHpfSlKzDC9J
ag8z8X5dfT3Gl7lC7WJi0mCtKOIMFidheMZ6GwgvQhTGXdbNgKZ2kfbhbhlflgynPbf26rHFFAyR
HYg1yADw450meezaSqAYhMB2eCOsCMELc7bHtCOq4NGsR4/reFuHl13u8jdEA6lzbmqRfYXJ3/9d
YYRA4yYBkgw8QIJF7MRKA+aTMk56fGXqDStt9/ScuHF3dcb20s2VkrFOdvVAxuh874pTGLZFjcMB
xv4o65RQGHE0FpOtImCAQmOylTttMfjv7duxfKTl3AzZWWkKcsh7bIs55tawfkCNe8hso4q0LPkE
7p0OGgsMpSUBh547Zjx8bOeDP4sM1aw5I6pzJKSc99RiIK+Ocq+14ncvT19HNPsjmEoCJY7TJSLH
KEQCMxasv0KyNQgnLnUo9Nqo4uJBp4OLi1tb5jqWCPDG9vGU+O5/f/zty9BrnAg+gtntGKGYXBNU
IgCk8cTonIEvreQV5ep/qHGiIaVlQ/U2jj7OwP385TD0ZywiylE4Bw50FQBg1pAA/wPXSSivpE8i
zhNyhxWaB6slZiL8uDo8+Ls6GugormWdwcoQxhd8TYEFlyCpiQspEXCa4VjKrEcgtsnDm1Xa53fy
gVI7OwX2+mH19Xn42sB6obeuY5FgxCFICUb7pMFOb/BLGChDanPyVKX/R1yvKdU3LXeuw/Jm3nn1
z4SAJ2OL6FjNjlU4FDxGK1DS49QpLKMO0lOL8ZN0AWDkz7D7zxOBuX+mlqXNMnQrV3Qefun2Hcg6
SA18FcTycwXnNKjEcKAvIxycGo7lPlyd7/U5XwoX/7tbCOfkplNWAAJlTnf85fXx48Pjz7sH71t3
ES2xhjBckjE4RUBg4DyFqIkd8RICeD0hsGyuagWZPeaE5mlvumkpNx123LyY7eHxYzPqc0TZHEfq
2UxBnwpKmEIAVAOGkAdBRBi4maLQbHx8kxD6+ykNjQX9+LHlyXWsyWHXfoku2mr9y6FsyFY3hXEd
wbFLJGVsYYHTQXDEOwngvYDYjKBW+7Ark7VaGjrRRcU38/f67aH2vpfVehitGATiQyNG7BEsEaoL
+7siR0RokwSe3kiiAmcdpJjl8qos5P4JJ97y7uqUBSWWMw2cUozOY+ZlN38VQSvprbo1iHs3/oXx
KwmeegK7WDnsgnA4vC9xQ5Q3mSfGXLIXpnDu1z+xufeXb1oyWY/29TFfvUhXCxtEKc5jawkmEi0l
LgULnqrPNNuYzIUpg38gXb3cMEDcpkMxP2zad+/noyQNqG3O4H2GyLADPYFxhfVJiQZwWkMQoFXf
qErv8PCWZM47JNvhZD9wLeP4h/+fPfYZaIBbMSJHUAE0M+l2kMQcC/YU2OosslxUdlnFy2O9ce0z
BSRwtaHf3i9VkKqTRxbYZz9/2u+UqoH2o6+CK2DVIIYEfgEBdpWj3hHneIQza3K84GCc2zLjtZbg
9dLy0Yz3huLujUy0xjUdwfOOdqz0piSP6BwSJ7syHEBqiiJcuWy149Iq9xft2OkdNy29tsOEOKT4
fz+ajtXRtzaaaFImVIZavguiORiJAwhcESkz72flu7/3zEZ4xKrzXDXHwkQU3woJKTjmSSqa2C5h
UrOmOI4pII60SCYQYAUsaB7B2WKx5OuqtnePOBHKHi+2pA+uQ/pwP/cRd4NrltMeBR4hhMGOhoL5
zbCPHbEEqCoqMqfAGz47frRZeUbaMsamhdIzr30MTL/s0lw1QjzJqU2j00obW2IdAIkT0AoWoniQ
yozmoLPUHFyYy9Hpswm16R03Ld2mx8whDBV/+u7uh0+vPz887ls650qkWB6KjSC3OJwpkX0iPsPe
VUL4SMHnAuX9RhOl+rS0/JilFtTVRdxPOnh6/DbB6BhnEFGdKK+HTIOnBjLYYoALbO2igqQh6jif
cTBZ5aZ9VEdeSTuPeL8bHocxTbv6dAgi7Er0qBsL510pNiEGBlcloOeN0yICjscAq1M4UHY5XpeB
WTzrVCZmcWPLm930eBuOVRmfn74N0yEqop5EEK1BFUl0xJR81Bxeb0kgfoXOSWerRL9Cb75eS4zj
HWLcao6V92n1gmOSDlmOOppYZiGpcSQZHGqRtCYOm+0kA9NYehWpPDtyt120JWs9dMja6kNY98sR
dEO5PW6fAqMW+OGIY5RxBiLswKAooVitG6O1uVqMS4IOy7VEbDuHWtFeVVdF4V0NWIazK1GbBrPA
3i4+BLRJFI6pcDhiDFSSilHRKLLK4o8hAzdPuoAN3Nzb8Kc7JXNaA9u7jfjLOAKFrJ4fj4OAnd2/
bZN4yKBGCaZkifA6E+/gvSdPc3FJ4ETY9rwvF2zoscsuUPxxPs3txxiblxs9uMIZ6xAoWN8SPrqT
WCJUBzVompyU17xcWLb/JuFCS+Zy+gr8yI/gKf8qd68PL0MznzHBCZfwvogJScJZoaBH4QfCEuzX
YiL3amaLtMu0FPB1h4L/K+1aetSGgfA9v8KXSiA1ke28kTgYEhCFLNVuto9TFEi6jQqEktDHv++M
A0sCBFrVByTiyXj8mPHYsb+xz6/LIvbXKn/9xA6NUrklDJwXjVewJ9wEA8hVn+JWiI8hymAsqrYL
7aiDFnnUuuvNzfJ7wEBHimYlLlGgXMs1zn3oRbz8tt82thA06xC6yZIuimOBpBQDf+kIfEoNPIpq
g9a7ugCjBBbK+6sBMDgrqV6LKk9pinrFjLvmK84iVGELNncXnSZ7acdhlh8Nma6rvs8kUD6IO3Bh
ycip7vrcQS+m7YJRk2FTHOeKMrsXINnD0U1g4RFzqCnoSPXANqm6ibutOqytqME90/HAAx/Q/wUW
bqzQ/4L+jKhZ6/TK9LXgp0Dm31egQvoJ16zCEhsMB2xk274K6xWETwW3SzDPVJnwYRkGI0Zw/SyG
eZ1RXQTbuERLwAtk1tkMuj7hSqMe4s6Rz7gYGKZqSexuPOouOLfUETdgfTIAw9UC2Nvk2BDGvITs
lQ8vvrkv8xi3RR25FychgYbUF3iHAR0LfcAxSILBVNPDK2/UMcGLumMJgGWbCYAsRfF/HU48B3mS
fTke/Xnar9fAqgfVGMarVUHWcZKSxW+Sl1/THdnucjzCmxakjHcvKaLKkfJrVhwzerL6ZVx8i8CV
iLZZ0iNVdOoKgzdawm+Z9gitPyzSUsaMOTxvFnyPPf0/9vCnVitoAVke7gZmm/RaeRzvkfxbmcqH
gGCoj3r7PgLVfLP6TdDlx5z8C3ldF/RImJfxqs9tqrkB2aVFlqSbss9srulBxzLedEnxEwGAkyjf
lxHItoeulLNLmvTBKbCCjm696Sofd1kZL1Yp8MDyXzkzjY/JT8gs002fcY0FHQZMTyWZmlE9qpXT
p9MOhUf1spBRx3WhKKI8+uPJ/IGEn9/7pCV9mDyGz2Km9E+pjfSQrYhlmf3Ag+vhLl7igLuWODWc
qTIck0wG4r6ZuEUlaSHj/FRvFNdJmWEAKZ5E3gCZ7KeWBAbbmipeVmzxexco9waUYy9fOedtOBoN
lHdP5N0kJC/V8gTkWObJueCM3yDtQGelux9p0kVSx7WA9PjiMYvAyIuTBP4WBCTDU4m1zusqU4l8
SAQ+IfPNsq3loG0DMZvNh7dbljEDRt6RtBMn62zTbaXWOXAFdxjmvTB+Idzg7YybpI5zQwjosadQ
DKdk/CwevXY6E+x+oDyV4EuQO4lZmh2AFkeyYiL0b5DayPVjusCjuoFs6htceaBEkSdCcU8AtyKd
BGLs36E1OfRWFM0mD1Pfg2HTzpQeBAj9T+G9BjA0B0mfHybDuXdbBNOE3lpLq0FwndtO6VIwZ8pB
D9dV/97s2H8wG+E8FDNyt2c1a1yRviUwWPdFQ3UqlZEJL+XC0CaK8gdQSwMECgAAAAAAJIQYSQAA
AAAAAAAAAAAAABMAHABjc3MzL2ZsZXhib3gvY3Nzd2cvVVQJAAOzLr5XdS++V3V4CwABBPUBAAAE
UAAAAFBLAwQUAAIACAAkhBhJZyMrnr4AAADyBgAALAAcAGNzczMvZmxleGJveC9jc3N3Zy9GbGV4
aWJsZS1vcmRlci1zdGRlcnIudHh0VVQJAAOzLr5Xsy6+V3V4CwABBPUBAAAEUAAAAO3PMQvCMBQE
4N1fkVEHmzRVWwUHLQoOouAoUp7pQ6OxKa9RyL9XcdDB1UHIdjfdfdt4MEqSkUijVIgd0w4v0PhK
FRt0a7I1kvOs0YcKjMGSIdG4G8s067P2ea4PU2hwtT+hcjMiS8WiuoHRJTgsO6ytPxs4xjf2Sgpz
UEfkuSVcYqnhnbpxfyAj2RP8Me2s8zU2fG3AI/HH2CsVk+e/SDGjK2RSDpPWNiAC4jcI+YnIbe3/
QiGyLCiCIii+KO5QSwMEFAACAAgAT4QYSdpgRAJDAAAARgAAADIAHABjc3MzL2ZvbnQtZmVhdHVy
ZS1zZXR0aW5ncy1yZW5kZXJpbmctY3Jhc2gtbG9nLnR4dFVUCQADBi++VwYvvld1eAsAAQT1AQAA
BFAAAADzy1dILkoszlDIyU9XSMsvzUsBkkUKyfm5eokFBTmpeuGpSd6ZJSDKOT+vJDWvRM8ltSw1
J78gF8i2sjQ3NDHV4wIAUEsDBAoAAAAAAFWEGEkAAAAAAAAAAAAAAAARABwAY3NzMy9zY3JvbGwt
c25hcC9VVAkAAxEvvld1L75XdXgLAAEE9QEAAARQAAAAUEsDBBQAAgAIAFWEGEkPgPhzQwAAAEYA
AAA7ABwAY3NzMy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1wcm9wZXJ0eS1wYXJzaW5nLWNyYXNo
LWxvZy50eHRVVAkAAxEvvlcRL75XdXgLAAEE9QEAAARQAAAA88tXSC5KLM5QyMlPV0jLL81LAZJF
Csn5uXqJBQU5qXrhqUnemSUgyjk/ryQ1r0TPJbUsNSe/IBfItrI0NzI00eMCAFBLAwQKAAAAAAAp
hBhJAAAAAAAAAAAAAAAAEAAcAGNzczMvc2VsZWN0b3JzMy9VVAkAA70uvld1L75XdXgLAAEE9QEA
AARQAAAAUEsDBAoAAAAAACeEGEkAAAAAAAAAAAAAAAAVABwAY3NzMy9zZWxlY3RvcnMzL2h0bWwv
VVQJAAO5Lr5XdS++V3V4CwABBPUBAAAEUAAAAFBLAwQUAAIACAAnhBhJrOvkk2kAAABrAAAALgAc
AGNzczMvc2VsZWN0b3JzMy9odG1sL2NzczMtbW9kc2VsLTI1LXN0ZGVyci50eHRVVAkAA7kuvle5
Lr5XdXgLAAEE9QEAAARQAAAAMzIwNNM1sNA1MlEwNLMyNrYyNNYzs7RQSM7P1UssKMhJ1QtPTfLO
LAFRzvl5Jal5JXouqWWpOfkFuUB2tKW5oYm5laWxhbmxQayCX7BTaUlJfp5jXmZuYklmfl6xa15i
Uk5qiq2fPxcAUEsDBAoAAAAAACmEGEkAAAAAAAAAAAAAAAAWABwAY3NzMy9zZWxlY3RvcnMzL3ho
dG1sL1VUCQADvS6+V3Uvvld1eAsAAQT1AQAABFAAAABQSwMEFAACAAgAKYQYSQdw+KppAAAAawAA
AC8AHABjc3MzL3NlbGVjdG9yczMveGh0bWwvY3NzMy1tb2RzZWwtMjUtc3RkZXJyLnR4dFVUCQAD
vS6+V70uvld1eAsAAQT1AQAABFAAAAAzMjA00zWw0DUyUTA0szI2tjI01zM2MFFIzs/VSywoyEnV
C09N8s4sAVHO+XklqXklei6pZak5+QW5QHa0pbmhmamVpYmBqZlxrIJfsFNpSUl+nmNeZm5iSWZ+
XrFrXmJSTmqKrZ8/FwBQSwMECgAAAAAAYIQYSQAAAAAAAAAAAAAAAAwAHABjc3MzL3NoYXBlcy9V
VAkAAyMvvld1L75XdXgLAAEE9QEAAARQAAAAUEsDBAoAAAAAAGCEGEkAAAAAAAAAAAAAAAAaABwA
Y3NzMy9zaGFwZXMvc2hhcGUtb3V0c2lkZS9VVAkAAyMvvld1L75XdXgLAAEE9QEAAARQAAAAUEsD
BAoAAAAAAGCEGEkAAAAAAAAAAAAAAAAhABwAY3NzMy9zaGFwZXMvc2hhcGUtb3V0c2lkZS92YWx1
ZXMvVVQJAAMjL75XdS++V3V4CwABBPUBAAAEUAAAAFBLAwQUAAIACABghBhJ6JCaNUMAAABGAAAA
PwAcAGNzczMvc2hhcGVzL3NoYXBlLW91dHNpZGUvdmFsdWVzL3NoYXBlLW1hcmdpbi0wMDEtY3Jh
c2gtbG9nLnR4dFVUCQADIy++VyMvvld1eAsAAQT1AQAABFAAAADzy1dILkoszlDIyU9XSMsvzUsB
kkUKyfm5eokFBTmpeuGpSd6ZJSDKOT+vJDWvRM8ltSw1J78gF8i2sjQ3NDTV4wIAUEsDBAoAAAAA
AGCEGEkAAAAAAAAAAAAAAAAhABwAY3NzMy92aWV3cG9ydC1wZXJjZW50YWdlLWxlbmd0aHMvVVQJ
AAMkL75XdS++V3V4CwABBPUBAAAEUAAAAFBLAwQUAAIACABghBhJUahNqEMAAABGAAAAWAAcAGNz
czMvdmlld3BvcnQtcGVyY2VudGFnZS1sZW5ndGhzL2NzczMtdmlld3BvcnQtcGVyY2VudGFnZS1s
ZW5ndGhzLWdldFN0eWxlLWNyYXNoLWxvZy50eHRVVAkAAyQvvlckL75XdXgLAAEE9QEAAARQAAAA
88tXSC5KLM5QyMlPV0jLL81LAZJFCsn5uXqJBQU5qXrhqUnemSUgyjk/ryQ1r0TPJbUsNSe/IBfI
trI0NzQz1eMCAFBLAwQKAAAAAABchBhJAAAAAAAAAAAAAAAABgAcAGNzc29tL1VUCQADHy++V3Uv
vld1eAsAAQT1AQAABFAAAABQSwMEFAACAAgAXIQYSRUQBkChAAAALAEAACcAHABjc3NvbS9jc3N2
YWx1ZS1jb21wYXJpc29uLWNyYXNoLWxvZy50eHRVVAkAAx8vvlcfL75XdXgLAAEE9QEAAARQAAAA
xY6xDoIwFAB3v+JtTFCoBg2r4CLRhMQ4GENKeUKTwiOvRcPfi1/hcnfjFVV1rTI4KWOxBU/AqFoI
xM0hO9HMxrYNeVGahhUvoqTOidyobiTnja5wIvZOaBoiNU0Wozs2Z+N/OtLocfRRjm+0NA1r1zJO
0jA+hCul3O53SY0fl8RppFm5PsjgUTCPBPIJFwI36x5e6xgQQ2sYtSdesn/dbb5QSwMECgAAAAAA
MIQYSQAAAAAAAAAAAAAAAA0AHABkaXNwbGF5bGlzdHMvVVQJAAPLLr5XdS++V3V4CwABBPUBAAAE
UAAAAFBLAwQUAAIACAAvhBhJo1f96FAAAACOAAAAMgAcAGRpc3BsYXlsaXN0cy9leHRlbnQtaW5j
bHVkZXMtdHJhbnNmb3Jtcy1zdGRlcnIudHh0VVQJAAPKLr5Xyi6+V3V4CwABBPUBAAAEUAAAAHMv
SizIyEwuds7PK0mtKLGySk8tcQ7x1dBUyCxWyMsvUahMLVFIzs8tSCzJTMpJVSjPLMlQKEpNzi9K
ycxLB8qAtRXrcbmjG1SMZhAxhgAAUEsDBBQAAgAIADCEGEnylpXVRwAAAEkAAAApABwAZGlzcGxh
eWxpc3RzL2xheWVyLWRpc3BheS1saXN0LXN0ZGVyci50eHRVVAkAA8suvlfLLr5XdXgLAAEE9QEA
AARQAAAAcy9KLMjITC52zs8rSa0osbJKTy1xDvHV0FTILFbIyy9RqEwtUUjOzy1ILMlMyklVKM8s
yVAoSk3OL0rJzEsHyoC1FetxAQBQSwMECgAAAAAAO4QYSQAAAAAAAAAAAAAAAAQAHABkb20vVVQJ
AAPhLr5XdS++V3V4CwABBPUBAAAEUAAAAFBLAwQKAAAAAAA7hBhJAAAAAAAAAAAAAAAACgAcAGRv
bS94aHRtbC9VVAkAA+Euvld1L75XdXgLAAEE9QEAAARQAAAAUEsDBAoAAAAAADuEGEkAAAAAAAAA
AAAAAAARABwAZG9tL3hodG1sL2xldmVsMi9VVAkAA+Euvld1L75XdXgLAAEE9QEAAARQAAAAUEsD
BAoAAAAAADuEGEkAAAAAAAAAAAAAAAAWABwAZG9tL3hodG1sL2xldmVsMi9odG1sL1VUCQAD4S6+
V3Uvvld1eAsAAQT1AQAABFAAAABQSwMEFAACAAgAO4QYST9xr+hpAAAAawAAADMAHABkb20veGh0
bWwvbGV2ZWwyL2h0bWwvSFRNTElucHV0RWxlbWVudDIwLXN0ZGVyci50eHRVVAkAA+EuvlfhLr5X
dXgLAAEE9QEAAARQAAAAMzIwNNM1sNA1MlEwNLMyNrYyNdYzNTdQSM7P1UssKMhJ1QtPTfLOLAFR
zvl5Jal5JXouqWWpOfkFuUB2tKW5oZGxlaWxhYmpeayCX7BTaUlJfp5jXmZuYklmfl6xa15iUk5q
iq2fPxcAUEsDBAoAAAAAAGqEGEkAAAAAAAAAAAAAAAAIABwAZWRpdGluZy9VVAkAAzcvvld1L75X
dXgLAAEE9QEAAARQAAAAUEsDBAoAAAAAAGqEGEkAAAAAAAAAAAAAAAARABwAZWRpdGluZy9kZWxl
dGluZy9VVAkAAzcvvld1L75XdXgLAAEE9QEAAARQAAAAUEsDBBQAAgAIAGqEGEm0tMABQwAAAEYA
AAAoABwAZWRpdGluZy9kZWxldGluZy81MjA2MzExLTItY3Jhc2gtbG9nLnR4dFVUCQADNy++Vzcv
vld1eAsAAQT1AQAABFAAAADzy1dILkoszlDIyU9XSMsvzUsBkkUKyfm5eokFBTmpeuGpSd6ZJSDK
OT+vJDWvRM8ltSw1J78gF8i2sjQ3NDHX4wIAUEsDBAoAAAAAAHKEGEkAAAAAAAAAAAAAAAAUABwA
ZWRpdGluZy9leGVjQ29tbWFuZC9VVAkAA0cvvld1L75XdXgLAAEE9QEAAARQAAAAUEsDBBQAAgAI
AImEGEkAUTnMGkUAAEoMAQBEABwAZWRpdGluZy9leGVjQ29tbWFuZC9jbGlwYm9hcmQtYWNjZXNz
LXdpdGgtdXNlci1nZXN0dXJlLWNyYXNoLWxvZy50eHRVVAkAA3EvvlfqLr5XdXgLAAEE9QEAAARQ
AAAA7Fxrb6PI0v788iv48GrluZD0BRqwollhbM9kT26KnZ2VViuLS5NwBoMXcCY5v/6tbrANvmTC
7rzSrI6j0cSB7qqnqquerm5w3+RZwIuir7Z/gmx+4i0WCT/5zP1/xaX45WZpydPyZMgfeZIt5vBZ
/d02CWF/KDde+bAtA35Of82S5ZwXp79eX9xdjk7fntbiotyb869Z/uX0V54XcZYWp87pbzfuhOeP
MQA6fSWAk6dFcFpfL04vveB68tquynkI/8dRzPP+XzBdqYFvW80Qfaf24P8TfKK/e6O4WcjV6fOC
txv+ZjGN6WrvyivjR/4GHJgLf95sDcfPP/+s/o7/UG55sQAnxX7SklM8qL8Tnf6h3BU8V8+H22AM
hBVl6JX8dBrPtxAQhJmGLI3oKmZ9SvuGcWIZlqohEyHleqLuMxA8rMKt31SMTuCfofawPsY2st8A
xEWWlzu9MFacNEuf59myUO/uGhiHpm1bdOxoyCYjzaIW1RhhTLNHzpAMkTGmjqsoikCuOl+9L1yd
xGnA1UGWlX3VMBBCasGDLA0LRXFzr3jgoTp9yLkX9jdGgp7xR/UzhFoSF6X8AK6qminK6CngixLw
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
o9ZMCuhRKwNMg5AGYikWbFkoKzFNmSjLxsNNZVU426vf9sO39f9HMp2g4z044zm/zhUupLqN7H5Z
jM882kKbUTcvd0t8p2kJ8OlSsLvPcHF6QVpOy2kEcJ6jsNEQ1+k44Z/lbnD1OijUBWdiaTNVnGYg
c1TU2Az1XpNt+39jMpYK97pzO80IepJzKhLImMAIjkmhFdFzJkhqTG4dLID8klnBUZM+NZScXI3J
Fc5/MLP5+lqwLCEjzJBqJBm9l4WpG9SmXlrPjF6TnHJbUO9BX8aWJsxI2iap7YUPK9DEctYAUiJ1
DeoxTO5z1L0qpUMApQHCGUfHlIAKZR/D4GzQZ+pQULW6V2gj+VC+ZuO9IdE4tmfjOpNLx9yZmu0C
zu2RsionSkn1b0SwRD1qlAGw5BvLEIjh+QNt/bzKZrEF3YxRDeRGb0myUNbqOwPb1td2YBwTRg9G
Vat2MVtA1RupnRI2QSfWB3t7uv5tkZuPady8LaEwl8p8UGgLqZUn79JOOKjNyy6ZS1NdGjJtUOyM
0dCOhZ0b0yjyZk8v7laHL1WHe6rtjH5eXV2My5dD73Fqr3vysKO9wvktM/VN9yI/fjYgW1EjcPym
H9jtHDTF7ZsmpsUyNTAefJ+cjH5+AZ0WxpRzOZErcfQXUEsDBAoAAAAAAF2EGEkAAAAAAAAAAAAA
AAAFABwAZmFzdC9VVAkAAyEvvld1L75XdXgLAAEE9QEAAARQAAAAUEsDBAoAAAAAAF2EGEkAAAAA
AAAAAAAAAAAPABwAZmFzdC9hbmltYXRpb24vVVQJAAMhL75XdS++V3V4CwABBPUBAAAEUAAAAFBL
AwQUAAIACACJhBhJjevJf+FDAABNCAEAOwAcAGZhc3QvYW5pbWF0aW9uL3JlcXVlc3QtYW5pbWF0
aW9uLWZyYW1lLXByZWZpeC1jcmFzaC1sb2cudHh0VVQJAANxL75XIS++V3V4CwABBPUBAAAEUAAA
AOxca2+jSLP+fPgVfDhaOTODQzdN021Fs8IYZjJvboqT2ZVWKwtDk/CODV7AmeT8+lMNvoAvSZjN
q7OjY2uUsaG76qnu6qequPRVlgYiz3tq8xOk064/m01E9zcx/ldcyP+cNClEUnQH4kFM0tkUvqt/
cAsh9Kdy5Rf3mzLgc/w1ncynIj/+enl2e+4evzteiIsyfyq+p9m3468iy+M0yY/t49+vnKHIHmIA
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
xBlhX6gnVa2KNXB+BU29UForDBc37tAfXVbBNNEEaznBAG2JL7DqiuWx3ZBdV/atTzgUvzDDBH4g
ptBoWcUeV9BvgD1wWxyNh2ocyNQzObUAMPYPUEsDBAoAAAAAAE2EGEkAAAAAAAAAAAAAAAAbABwA
ZmFzdC9ibG9jay9tYXJnaW4tY29sbGFwc2UvVVQJAAMBL75XdS++V3V4CwABBPUBAAAEUAAAAFBL
AwQUAAIACABNhBhJWwgKrWkAAABrAAAAKQAcAGZhc3QvYmxvY2svbWFyZ2luLWNvbGxhcHNlLzEw
My1zdGRlcnIudHh0VVQJAAMBL75XAS++V3V4CwABBPUBAAAEUAAAADMyMDTTNbDQNTJRMDSzMjax
MjLVM7cwVEjOz9VLLCjISdULT03yziwBUc75eSWpeSV6LqllqTn5BblAdrSluZGZqZWlpampmUGs
gl+wU2lJSX6eY15mbmJJZn5esWteYlJOaoqtnz8XAFBLAwQUAAIACACJhBhJ02iFWKxAAADB/QAA
PwAcAGZhc3QvYmxvY2svbWFyZ2lucy1wZXJwZW5kaWN1bGFyLWNvbnRhaW5pbmctYmxvY2stY3Jh
c2gtbG9nLnR4dFVUCQADcS++Vy0vvld1eAsAAQT1AQAABFAAAADsXGtv2ziz/nz0K/ThYOG0VSJe
dEXQhSzbW/fkhjjpLrBYGJREJdrKkleS0+T8+jOkZFu+JI12c4AuXgdF44jkzDPDmeEMKfOqyENe
lq66+RPms2M2n6f8+Fce/E9SiV9+nlU8q44H/IGn+XwGn9XfHQub5A/lilX32zTg5+RLni5mvDz5
cnl2ez48eXfSkIsLNuPf8uLryRdelEmelSfeyW9X/oQXDwkAOnklgOPHeXjSPC9Pzll4OXntUGUc
wf9JnPDC/RuiKw3wbalNnbxXe/D/MTqm748UP4+4evM055sdf7NNzaRq74JVyQM/AgUWQp9XW9Px
888/q7+jP5RrXs5BSUmQbtAp79XfMQX935a8UMeDbTCGjhRlwCp+cpPMthBgHZmabmuYqsh0CXUx
PrZMQ9V0S9eVy4m6T0DQsApNv6lIP4Z/htpDdIQc3TkCiPO8qHZGIaR4WZ49zfJFqd7etjAOLMex
ycjTdAcPNZvYRDOxaWrO0BvggW6MiOcriiKQq9439pWrkyQLudrP88pVDUPXdbXkYZ5FpaL4BSvv
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
AAAAAQAAAKSBijUAAGFjY2Vzc2liaWxpdHkvYXJpYS1jaGVja2JveC1jaGVja2VkLXN0ZGVyci50
eHRVVAUAA6Uuvld1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACAAjhBhJruucSLNIAADaIgEANQAY
AAAAAAABAAAApIFbNgAAYWNjZXNzaWJpbGl0eS9jYW52YXMtZmFsbGJhY2stY29udGVudC0yLWNy
YXNoLWxvZy50eHRVVAUAA7Iuvld1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACAAkhBhJWuXKyWkA
AABrAAAANAAYAAAAAAABAAAApIF9fwAAYWNjZXNzaWJpbGl0eS9mb3JtLWNvbnRyb2wtdmFsdWUt
c2V0dGFibGUtc3RkZXJyLnR4dFVUBQADtC6+V3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAAB2E
GEkAAAAAAAAAAAAAAAASABgAAAAAAAAAEADtQVSAAABhY2Nlc3NpYmlsaXR5L21hYy9VVAUAA6ku
vld1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACAAdhBhJWG4qhGkAAABrAAAAYQAYAAAAAAABAAAA
pIGggAAAYWNjZXNzaWJpbGl0eS9tYWMvY2hlY2tib3gtcG9zdHMtdmFsdWUtY2hhbmdlLW5vdGlm
aWNhdGlvbi1hZnRlci1hY3RpdmF0aW9uLXdpdGgtc3BhY2Utc3RkZXJyLnR4dFVUBQADqS6+V3V4
CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAFWEGEkw0uzxQwAAAEYAAAApABgAAAAAAAEAAACkgaSB
AABhY2Nlc3NpYmlsaXR5L21lZGlhLWVsZW1lbnQtY3Jhc2gtbG9nLnR4dFVUBQADES++V3V4CwAB
BPUBAAAEUAAAAFBLAQIeAwoAAAAAADmEGEkAAAAAAAAAAAAAAAALABgAAAAAAAAAEADtQUqCAABh
bmltYXRpb25zL1VUBQAD3i6+V3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAImEGElZE06HfUAA
AOr/AAAyABgAAAAAAAEAAACkgY+CAABhbmltYXRpb25zL2FuaW1hdGlvbi1ib3JkZXItb3ZlcmZs
b3ctY3Jhc2gtbG9nLnR4dFVUBQADcS++V3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAImEGEla
naygUEEAANkGAQA7ABgAAAAAAAEAAACkgXjDAABjb20uYXBwbGUuV2ViS2l0LldlYkNvbnRlbnQu
RGV2ZWxvcG1lbnQtOTcyOTctY3Jhc2gtbG9nLnR4dFVUBQADcS++V3V4CwABBPUBAAAEUAAAAFBL
AQIeAxQAAgAIAImEGEmFsD+ru0EAACMFAQA7ABgAAAAAAAEAAACkgT0FAQBjb20uYXBwbGUuV2Vi
S2l0LldlYkNvbnRlbnQuRGV2ZWxvcG1lbnQtOTczMDktY3Jhc2gtbG9nLnR4dFVUBQADcS++V3V4
CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAImEGEkp8Enb0joAAAvoAAA7ABgAAAAAAAEAAACkgW1H
AQBjb20uYXBwbGUuV2ViS2l0LldlYkNvbnRlbnQuRGV2ZWxvcG1lbnQtOTczMTItY3Jhc2gtbG9n
LnR4dFVUBQADcS++V3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAImEGElsr6fasj8AAJb3AAA7
ABgAAAAAAAEAAACkgbSCAQBjb20uYXBwbGUuV2ViS2l0LldlYkNvbnRlbnQuRGV2ZWxvcG1lbnQt
OTczMjEtY3Jhc2gtbG9nLnR4dFVUBQADcS++V3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAImE
GElL6JIq6UMAAFQQAQA7ABgAAAAAAAEAAACkgdvCAQBjb20uYXBwbGUuV2ViS2l0LldlYkNvbnRl
bnQuRGV2ZWxvcG1lbnQtOTczMzAtY3Jhc2gtbG9nLnR4dFVUBQADcS++V3V4CwABBPUBAAAEUAAA
AFBLAQIeAwoAAAAAAE+EGEkAAAAAAAAAAAAAAAAMABgAAAAAAAAAEADtQTkHAgBjb21wb3NpdGlu
Zy9VVAUAAwUvvld1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAAA5hBhJAAAAAAAAAAAAAAAAFQAY
AAAAAAAAABAA7UF/BwIAY29tcG9zaXRpbmcvZ2VvbWV0cnkvVVQFAAPeLr5XdXgLAAEE9QEAAARQ
AAAAUEsBAh4DFAACAAgAiYQYSeXKH0AWRwAAsRUBADsAGAAAAAAAAQAAAKSBzgcCAGNvbXBvc2l0
aW5nL2dlb21ldHJ5L2NsaXBwZWQtdmlkZW8tY29udHJvbGxlci1jcmFzaC1sb2cudHh0VVQFAANx
L75XdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAAOYQYSQAAAAAAAAAAAAAAABsAGAAAAAAAAAAQ
AO1BWU8CAGNvbXBvc2l0aW5nL2xheWVyLWNyZWF0aW9uL1VUBQAD3i6+V3V4CwABBPUBAAAEUAAA
AFBLAQIeAxQAAgAIADmEGEmqcWzSogAAACwBAABJABgAAAAAAAEAAACkga5PAgBjb21wb3NpdGlu
Zy9sYXllci1jcmVhdGlvbi9zY2FsZS1yb3RhdGlvbi1hbmltYXRpb24tb3ZlcmxhcC1jcmFzaC1s
b2cudHh0VVQFAAPeLr5XdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAAJYQYSQAAAAAAAAAAAAAA
ABUAGAAAAAAAAAAQAO1B01ACAGNvbXBvc2l0aW5nL292ZXJmbG93L1VUBQADti6+V3V4CwABBPUB
AAAEUAAAAFBLAQIeAxQAAgAIACKEGElnUStUzkAAALAAAQBOABgAAAAAAAEAAACkgSJRAgBjb21w
b3NpdGluZy9vdmVyZmxvdy9hdXRvbWF0aWNhbGx5LW9wdC1pbnRvLWNvbXBvc2l0ZWQtc2Nyb2xs
aW5nLWNyYXNoLWxvZy50eHRVVAUAA7Auvld1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACAAlhBhJ
tNO7DWkAAABrAAAAPQAYAAAAAAABAAAApIF4kgIAY29tcG9zaXRpbmcvb3ZlcmZsb3cvdGhlbWUt
YWZmZWN0cy12aXN1YWwtb3ZlcmZsb3ctc3RkZXJyLnR4dFVUBQADti6+V3V4CwABBPUBAAAEUAAA
AFBLAQIeAwoAAAAAAE+EGEkAAAAAAAAAAAAAAAAUABgAAAAAAAAAEADtQViTAgBjb21wb3NpdGlu
Zy9yZWdpb25zL1VUBQADBS++V3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAE+EGEm+mV4LQwAA
AEYAAAA6ABgAAAAAAAEAAACkgaaTAgBjb21wb3NpdGluZy9yZWdpb25zL3ZpZGVvLWluLW92ZXJm
bG93LXJlZ2lvbi1jcmFzaC1sb2cudHh0VVQFAAMFL75XdXgLAAEE9QEAAARQAAAAUEsBAh4DFAAC
AAgAI4QYSQwhkUTAAAAA8gYAADwAGAAAAAAAAQAAAKSBXZQCAGNvbXBvc2l0aW5nL3Nob3ctY29t
cG9zaXRlZC1pZnJhbWUtb24tYmFjay1idXR0b24tc3RkZXJyLnR4dFVUBQADsS6+V3V4CwABBPUB
AAAEUAAAAFBLAQIeAwoAAAAAADuEGEkAAAAAAAAAAAAAAAASABgAAAAAAAAAEADtQZOVAgBjb21w
b3NpdGluZy92aWRlby9VVAUAA+Iuvld1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACACJhBhJqkQZ
Uc9BAADiBgEAJgAYAAAAAAABAAAApIHflQIAY29tcG9zaXRpbmcvdmlkZW8vcG9zdGVyLWNyYXNo
LWxvZy50eHRVVAUAA3Evvld1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACAA7hBhJNNgHL8UAAADy
BgAAMgAYAAAAAAABAAAApIEO2AIAY29tcG9zaXRpbmcvdmlkZW8vdmlkZW8tY2xpcC1jaGFuZ2Ut
c3JjLXN0ZGVyci50eHRVVAUAA+Iuvld1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAABLhBhJAAAA
AAAAAAAAAAAABwAYAAAAAAAAABAA7UE/2QIAY3J5cHRvL1VUBQAD/i6+V3V4CwABBPUBAAAEUAAA
AFBLAQIeAwoAAAAAAEuEGEkAAAAAAAAAAAAAAAAPABgAAAAAAAAAEADtQYDZAgBjcnlwdG8vd29y
a2Vycy9VVAUAA/4uvld1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACABLhBhJgPYDv6AAAAAsAQAA
LQAYAAAAAAABAAAApIHJ2QIAY3J5cHRvL3dvcmtlcnMvY3J5cHRvLWdjLXdvcmtlci1jcmFzaC1s
b2cudHh0VVQFAAP+Lr5XdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAAYIQYSQAAAAAAAAAAAAAA
AAUAGAAAAAAAAAAQAO1B0NoCAGNzczMvVVQFAAMkL75XdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAA
AAAAXIQYSQAAAAAAAAAAAAAAAA0AGAAAAAAAAAAQAO1BD9sCAGNzczMvZmlsdGVycy9VVAUAAx8v
vld1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAABDhBhJAAAAAAAAAAAAAAAAFgAYAAAAAAAAABAA
7UFW2wIAY3NzMy9maWx0ZXJzL2JhY2tkcm9wL1VUBQAD7S6+V3V4CwABBPUBAAAEUAAAAFBLAQIe
AxQAAgAIACiEGEkvwA5i/UUAAEoRAQBKABgAAAAAAAEAAACkgabbAgBjc3MzL2ZpbHRlcnMvYmFj
a2Ryb3AvYmFja2Ryb3BmaWx0ZXItcHJvcGVydHktY29tcHV0ZWQtc3R5bGUtY3Jhc2gtbG9nLnR4
dFVUBQADuy6+V3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAImEGEn2yo4qGT8AAN72AABDABgA
AAAAAAEAAACkgSciAwBjc3MzL2ZpbHRlcnMvYmFja2Ryb3AvYmFja2Ryb3BmaWx0ZXItcHJvcGVy
dHktcGFyc2luZy1jcmFzaC1sb2cudHh0VVQFAANxL75XdXgLAAEE9QEAAARQAAAAUEsBAh4DFAAC
AAgAiYQYSZOu4Q7rPwAAzvkAAEsAGAAAAAAAAQAAAKSBvWEDAGNzczMvZmlsdGVycy9iYWNrZHJv
cC9iYWNrZHJvcGZpbHRlci1wcm9wZXJ0eS1wYXJzaW5nLWludmFsaWQtY3Jhc2gtbG9nLnR4dFVU
BQADcS++V3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAFOEGElcU4XLQwAAAEYAAAA5ABgAAAAA
AAEAAACkgS2iAwBjc3MzL2ZpbHRlcnMvZmlsdGVyLXByb3BlcnR5LWNvbXB1dGVkLXN0eWxlLWNy
YXNoLWxvZy50eHRVVAUAAw4vvld1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACABchBhJFRAGQKEA
AAAsAQAAOgAYAAAAAAABAAAApIHjogMAY3NzMy9maWx0ZXJzL2ZpbHRlci1wcm9wZXJ0eS1wYXJz
aW5nLWludmFsaWQtY3Jhc2gtbG9nLnR4dFVUBQADHy++V3V4CwABBPUBAAAEUAAAAFBLAQIeAwoA
AAAAAHKEGEkAAAAAAAAAAAAAAAANABgAAAAAAAAAEADtQfijAwBjc3MzL2ZsZXhib3gvVVQFAANH
L75XdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAiYQYSbnMczKAQQAAgQIBAC8AGAAAAAAAAQAA
AKSBP6QDAGNzczMvZmxleGJveC9hbGlnbi1hYnNvbHV0ZS1jaGlsZC1jcmFzaC1sb2cudHh0VVQF
AANxL75XdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAiYQYSZJ7T02eQQAAgQEBAC4AGAAAAAAA
AQAAAKSBKOYDAGNzczMvZmxleGJveC9hdXRvLWhlaWdodC1keW5hbWljLWNyYXNoLWxvZy50eHRV
VAUAA3Evvld1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACAByhBhJWp2soFBBAADZBgEAMwAYAAAA
AAABAAAApIEuKAQAY3NzMy9mbGV4Ym94L2JveC1zaXppbmctbWluLW1heC1zaXplcy1jcmFzaC1s
b2cudHh0VVQFAANHL75XdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAAJIQYSQAAAAAAAAAAAAAA
ABMAGAAAAAAAAAAQAO1B62kEAGNzczMvZmxleGJveC9jc3N3Zy9VVAUAA7Muvld1eAsAAQT1AQAA
BFAAAABQSwECHgMUAAIACAAkhBhJZyMrnr4AAADyBgAALAAYAAAAAAABAAAApIE4agQAY3NzMy9m
bGV4Ym94L2Nzc3dnL0ZsZXhpYmxlLW9yZGVyLXN0ZGVyci50eHRVVAUAA7Muvld1eAsAAQT1AQAA
BFAAAABQSwECHgMUAAIACABPhBhJ2mBEAkMAAABGAAAAMgAYAAAAAAABAAAApIFcawQAY3NzMy9m
b250LWZlYXR1cmUtc2V0dGluZ3MtcmVuZGVyaW5nLWNyYXNoLWxvZy50eHRVVAUAAwYvvld1eAsA
AQT1AQAABFAAAABQSwECHgMKAAAAAABVhBhJAAAAAAAAAAAAAAAAEQAYAAAAAAAAABAA7UELbAQA
Y3NzMy9zY3JvbGwtc25hcC9VVAUAAxEvvld1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACABVhBhJ
D4D4c0MAAABGAAAAOwAYAAAAAAABAAAApIFWbAQAY3NzMy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1wcm9wZXJ0eS1wYXJzaW5nLWNyYXNoLWxvZy50eHRVVAUAAxEvvld1eAsAAQT1AQAABFAAAABQ
SwECHgMKAAAAAAAphBhJAAAAAAAAAAAAAAAAEAAYAAAAAAAAABAA7UEObQQAY3NzMy9zZWxlY3Rv
cnMzL1VUBQADvS6+V3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAACeEGEkAAAAAAAAAAAAAAAAV
ABgAAAAAAAAAEADtQVhtBABjc3MzL3NlbGVjdG9yczMvaHRtbC9VVAUAA7kuvld1eAsAAQT1AQAA
BFAAAABQSwECHgMUAAIACAAnhBhJrOvkk2kAAABrAAAALgAYAAAAAAABAAAApIGnbQQAY3NzMy9z
ZWxlY3RvcnMzL2h0bWwvY3NzMy1tb2RzZWwtMjUtc3RkZXJyLnR4dFVUBQADuS6+V3V4CwABBPUB
AAAEUAAAAFBLAQIeAwoAAAAAACmEGEkAAAAAAAAAAAAAAAAWABgAAAAAAAAAEADtQXhuBABjc3Mz
L3NlbGVjdG9yczMveGh0bWwvVVQFAAO9Lr5XdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAKYQY
SQdw+KppAAAAawAAAC8AGAAAAAAAAQAAAKSByG4EAGNzczMvc2VsZWN0b3JzMy94aHRtbC9jc3Mz
LW1vZHNlbC0yNS1zdGRlcnIudHh0VVQFAAO9Lr5XdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAA
YIQYSQAAAAAAAAAAAAAAAAwAGAAAAAAAAAAQAO1Bmm8EAGNzczMvc2hhcGVzL1VUBQADIy++V3V4
CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAAGCEGEkAAAAAAAAAAAAAAAAaABgAAAAAAAAAEADtQeBv
BABjc3MzL3NoYXBlcy9zaGFwZS1vdXRzaWRlL1VUBQADIy++V3V4CwABBPUBAAAEUAAAAFBLAQIe
AwoAAAAAAGCEGEkAAAAAAAAAAAAAAAAhABgAAAAAAAAAEADtQTRwBABjc3MzL3NoYXBlcy9zaGFw
ZS1vdXRzaWRlL3ZhbHVlcy9VVAUAAyMvvld1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACABghBhJ
6JCaNUMAAABGAAAAPwAYAAAAAAABAAAApIGPcAQAY3NzMy9zaGFwZXMvc2hhcGUtb3V0c2lkZS92
YWx1ZXMvc2hhcGUtbWFyZ2luLTAwMS1jcmFzaC1sb2cudHh0VVQFAAMjL75XdXgLAAEE9QEAAARQ
AAAAUEsBAh4DCgAAAAAAYIQYSQAAAAAAAAAAAAAAACEAGAAAAAAAAAAQAO1BS3EEAGNzczMvdmll
d3BvcnQtcGVyY2VudGFnZS1sZW5ndGhzL1VUBQADJC++V3V4CwABBPUBAAAEUAAAAFBLAQIeAxQA
AgAIAGCEGElRqE2oQwAAAEYAAABYABgAAAAAAAEAAACkgaZxBABjc3MzL3ZpZXdwb3J0LXBlcmNl
bnRhZ2UtbGVuZ3Rocy9jc3MzLXZpZXdwb3J0LXBlcmNlbnRhZ2UtbGVuZ3Rocy1nZXRTdHlsZS1j
cmFzaC1sb2cudHh0VVQFAAMkL75XdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAAXIQYSQAAAAAA
AAAAAAAAAAYAGAAAAAAAAAAQAO1Be3IEAGNzc29tL1VUBQADHy++V3V4CwABBPUBAAAEUAAAAFBL
AQIeAxQAAgAIAFyEGEkVEAZAoQAAACwBAAAnABgAAAAAAAEAAACkgbtyBABjc3NvbS9jc3N2YWx1
ZS1jb21wYXJpc29uLWNyYXNoLWxvZy50eHRVVAUAAx8vvld1eAsAAQT1AQAABFAAAABQSwECHgMK
AAAAAAAwhBhJAAAAAAAAAAAAAAAADQAYAAAAAAAAABAA7UG9cwQAZGlzcGxheWxpc3RzL1VUBQAD
yy6+V3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAC+EGEmjV/3oUAAAAI4AAAAyABgAAAAAAAEA
AACkgQR0BABkaXNwbGF5bGlzdHMvZXh0ZW50LWluY2x1ZGVzLXRyYW5zZm9ybXMtc3RkZXJyLnR4
dFVUBQADyi6+V3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIADCEGEnylpXVRwAAAEkAAAApABgA
AAAAAAEAAACkgcB0BABkaXNwbGF5bGlzdHMvbGF5ZXItZGlzcGF5LWxpc3Qtc3RkZXJyLnR4dFVU
BQADyy6+V3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAADuEGEkAAAAAAAAAAAAAAAAEABgAAAAA
AAAAEADtQWp1BABkb20vVVQFAAPhLr5XdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAAO4QYSQAA
AAAAAAAAAAAAAAoAGAAAAAAAAAAQAO1BqHUEAGRvbS94aHRtbC9VVAUAA+Euvld1eAsAAQT1AQAA
BFAAAABQSwECHgMKAAAAAAA7hBhJAAAAAAAAAAAAAAAAEQAYAAAAAAAAABAA7UHsdQQAZG9tL3ho
dG1sL2xldmVsMi9VVAUAA+Euvld1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAAA7hBhJAAAAAAAA
AAAAAAAAFgAYAAAAAAAAABAA7UE3dgQAZG9tL3hodG1sL2xldmVsMi9odG1sL1VUBQAD4S6+V3V4
CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIADuEGEk/ca/oaQAAAGsAAAAzABgAAAAAAAEAAACkgYd2
BABkb20veGh0bWwvbGV2ZWwyL2h0bWwvSFRNTElucHV0RWxlbWVudDIwLXN0ZGVyci50eHRVVAUA
A+Euvld1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAABqhBhJAAAAAAAAAAAAAAAACAAYAAAAAAAA
ABAA7UFddwQAZWRpdGluZy9VVAUAAzcvvld1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAABqhBhJ
AAAAAAAAAAAAAAAAEQAYAAAAAAAAABAA7UGfdwQAZWRpdGluZy9kZWxldGluZy9VVAUAAzcvvld1
eAsAAQT1AQAABFAAAABQSwECHgMUAAIACABqhBhJtLTAAUMAAABGAAAAKAAYAAAAAAABAAAApIHq
dwQAZWRpdGluZy9kZWxldGluZy81MjA2MzExLTItY3Jhc2gtbG9nLnR4dFVUBQADNy++V3V4CwAB
BPUBAAAEUAAAAFBLAQIeAwoAAAAAAHKEGEkAAAAAAAAAAAAAAAAUABgAAAAAAAAAEADtQY94BABl
ZGl0aW5nL2V4ZWNDb21tYW5kL1VUBQADRy++V3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAImE
GEkAUTnMGkUAAEoMAQBEABgAAAAAAAEAAACkgd14BABlZGl0aW5nL2V4ZWNDb21tYW5kL2NsaXBi
b2FyZC1hY2Nlc3Mtd2l0aC11c2VyLWdlc3R1cmUtY3Jhc2gtbG9nLnR4dFVUBQADcS++V3V4CwAB
BPUBAAAEUAAAAFBLAQIeAxQAAgAIAImEGEm/a7ucAEIAAI4DAQA6ABgAAAAAAAEAAACkgXW+BABl
ZGl0aW5nL2V4ZWNDb21tYW5kL2VuYWJsaW5nLWFuZC1zZWxlY3Rpb24tMi1jcmFzaC1sb2cudHh0
VVQFAANxL75XdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAiYQYSYwaQiJrQgAACQYBADgAGAAA
AAAAAQAAAKSB6QAFAGVkaXRpbmcvZXhlY0NvbW1hbmQvZW5hYmxpbmctYW5kLXNlbGVjdGlvbi1j
cmFzaC1sb2cudHh0VVQFAANxL75XdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAAXIQYSQAAAAAA
AAAAAAAAABIAGAAAAAAAAAAQAO1BxkMFAGVkaXRpbmcvc2VsZWN0aW9uL1VUBQADHy++V3V4CwAB
BPUBAAAEUAAAAFBLAQIeAxQAAgAIAImEGEmLJQQTRkwAAGMnAQA2ABgAAAAAAAEAAACkgRJEBQBl
ZGl0aW5nL3NlbGVjdGlvbi9jYXJldC1hdC1iaWRpLWJvdW5kYXJ5LWNyYXNoLWxvZy50eHRVVAUA
A3Evvld1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAABHhBhJAAAAAAAAAAAAAAAAFgAYAAAAAAAA
ABAA7UHIkAUAZWRpdGluZy90ZXh0LWl0ZXJhdG9yL1VUBQAD9S6+V3V4CwABBPUBAAAEUAAAAFBL
AQIeAxQAAgAIAImEGEkieUzMTkkAAOskAQAuABgAAAAAAAEAAACkgRiRBQBlZGl0aW5nL3RleHQt
aXRlcmF0b3IvZmluZFN0cmluZy1jcmFzaC1sb2cudHh0VVQFAANxL75XdXgLAAEE9QEAAARQAAAA
UEsBAh4DFAACAAgAcoQYST96as+kAgAA5AcAAA0AGAAAAAAAAQAAAKSBztoFAGVycm9yX2xvZy50
eHRVVAUAA0gvvld1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAABdhBhJAAAAAAAAAAAAAAAABQAY
AAAAAAAAABAA7UG53QUAZmFzdC9VVAUAAyEvvld1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAABd
hBhJAAAAAAAAAAAAAAAADwAYAAAAAAAAABAA7UH43QUAZmFzdC9hbmltYXRpb24vVVQFAAMhL75X
dXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAiYQYSY3ryX/hQwAATQgBADsAGAAAAAAAAQAAAKSB
Qd4FAGZhc3QvYW5pbWF0aW9uL3JlcXVlc3QtYW5pbWF0aW9uLWZyYW1lLXByZWZpeC1jcmFzaC1s
b2cudHh0VVQFAANxL75XdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAAZYQYSQAAAAAAAAAAAAAA
AAsAGAAAAAAAAAAQAO1BlyIGAGZhc3QvYmxvY2svVVQFAAMtL75XdXgLAAEE9QEAAARQAAAAUEsB
Ah4DFAACAAgAiYQYSRZu/qg/QAAAGvwAAC8AGAAAAAAAAQAAAKSB3CIGAGZhc3QvYmxvY2svZHlu
YW1pYy1wYWRkaW5nLWJvcmRlci1jcmFzaC1sb2cudHh0VVQFAANxL75XdXgLAAEE9QEAAARQAAAA
UEsBAh4DCgAAAAAATYQYSQAAAAAAAAAAAAAAABsAGAAAAAAAAAAQAO1BhGMGAGZhc3QvYmxvY2sv
bWFyZ2luLWNvbGxhcHNlL1VUBQADAS++V3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAE2EGElb
CAqtaQAAAGsAAAApABgAAAAAAAEAAACkgdljBgBmYXN0L2Jsb2NrL21hcmdpbi1jb2xsYXBzZS8x
MDMtc3RkZXJyLnR4dFVUBQADAS++V3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAImEGEnTaIVY
rEAAAMH9AAA/ABgAAAAAAAEAAACkgaVkBgBmYXN0L2Jsb2NrL21hcmdpbnMtcGVycGVuZGljdWxh
ci1jb250YWluaW5nLWJsb2NrLWNyYXNoLWxvZy50eHRVVAUAA3Evvld1eAsAAQT1AQAABFAAAABQ
SwECHgMUAAIACACJhBhJqM3RCsEDAADjDgAAEQAYAAAAAAABAAAApIHKpQYAZnVsbF9yZXN1bHRz
Lmpzb25VVAUAA3Ivvld1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACAAWhBhJWwRYDqIFAABNEAAA
CgAYAAAAAAABAAAApIHWqQYAaHR0cGQuY29uZlVUBQADnC6+V3V4CwABBPUBAAAEUAAAAFBLAQIe
AwoAAAAAABiEGEkAAAAAAAAAAAAAAAAaABgAAAAAAAAAAACkgbyvBgBweXdlYnNvY2tldC53cy5s
b2ctZXJyLnR4dFVUBQADoC6+V3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAABiEGEkAAAAAAAAA
AAAAAAAaABgAAAAAAAAAAACkgRCwBgBweXdlYnNvY2tldC53cy5sb2ctb3V0LnR4dFVUBQADoC6+
V3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAABmEGEkAAAAAAAAAAAAAAAAbABgAAAAAAAAAAACk
gWSwBgBweXdlYnNvY2tldC53c3MubG9nLWVyci50eHRVVAUAA6Iuvld1eAsAAQT1AQAABFAAAABQ
SwECHgMKAAAAAAAZhBhJAAAAAAAAAAAAAAAAGwAYAAAAAAAAAAAApIG5sAYAcHl3ZWJzb2NrZXQu
d3NzLmxvZy1vdXQudHh0VVQFAAOiLr5XdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAiYQYSUUm
HTnRJwAAy6oAAAwAGAAAAAAAAQAAAKSBDrEGAHJlc3VsdHMuaHRtbFVUBQADci++V3V4CwABBPUB
AAAEUAAAAFBLAQIeAxQAAgAIAImEGEn4LWhzpbUBABInCgAKABgAAAAAAAEAAACkgSXZBgBzdGF0
cy5qc29uVVQFAANyL75XdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAHIQYSYFTNZrSBAAAnhoA
ABkAGAAAAAAAAQAAAKSBDo8IAHdwdHdrX3Byb2Nlc3NfbG9nLm91dC50eHRVVAUAA6guvld1eAsA
AQT1AQAABFAAAABQSwUGAAAAAHAAcADFLQAAM5QIAAAA
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>286916</attachid>
            <date>2016-08-24 17:19:52 -0700</date>
            <delta_ts>2016-08-24 17:19:52 -0700</delta_ts>
            <desc>Archive of layout-test-results from ews122 for ios-simulator-elcapitan-wk2</desc>
            <filename>layout-test-results.zip</filename>
            <type>application/zip</type>
            <size>395451</size>
            <attacher name="Build Bot">buildbot</attacher>
            
              <data encoding="base64">UEsDBAoAAAAAAMODGEkAAAAAAAAAAAAAAAALABwAX3dwdF9jZXJ0cy9VVAkAA/4tvleRL75XdXgL
AAEE9QEAAARQAAAAUEsDBBQAAgAIAMODGEkxixRpEQkAADoRAAAVABwAX3dwdF9jZXJ0cy8wMzA2
MjcucGVtVVQJAAP+Lb5X/i2+V3V4CwABBPUBAAAEUAAAAK1W127jWhJ811fo8V4YF2YODewDk4Jl
yqZkxTeGQ4mykkUqWF+/1ZwZjwcjzwUWSwgCwzkdqrurjicOVZEXaVwJajRx+XEVf7vjaywOZbHb
UlNt/iVdlL8/PgzFoYjXzf5xk4gDNWXbkq16jSoZivlpXbHYxtXxIJrOerE7FNVyQ81yGSu6McHD
YOgE2/Twvq/g5WNTtyyPbNXr/+cskn/267jKd4fNP5Uoq/JnbPG6yIrq/eMFX/1d1XQFVgtqOsdF
U9GaikqqRJLRVCTZaLbDl982OHklDk1CUnus/sOG4TFZibT6t8i+L2s+H5N1kTZ74r3Z3eY7+sXx
p4+foDmU8Q1A+AJUn/ZQ8y9F0qxmUlR//7KMr3CXHdfH8tMS+m0NX5JESUKxINsgTSPLJj2jTCM5
ISUmSyJLIxtfZZKN2xYSlRSbF0sxGSrJMuUJSfjV1oTFj6lCqQCcty1YOZk2pVipk6VTbrPfxCJD
I1UhOac8JhUvBQnzCwuC8pQsk+yEnVoqWQYlOtk2Ibw4J10moZKWkJ3dtqAhcakOXqVUZgupxP+2
xPEgHSGTYVAaU5rctpBqbB8oIU3dJACL9QmQMcg0SbcozsiKyTZJ+yILEykrlMOCTrLNfpE+tiN9
XSMjp9QgWyP0pvWVBUBtUixRJthRUkOBNwLVRGqCVKP+qvHjTQtqxhjqcG0y4Kipip+gGK5jymEq
5/eKRtkXSGIx1sARjBgmGXqNhskZmbivbWoWKRlp0m0LaBgjI4EekGsYEUnK7oROWkpyRmZOskmq
xlHdrkVMAogBjYzBRBElmZSUuxFG0KX8+K2gyhcdZbIv5Isgc4ushO1gFlCIHP8656XoJKGpvkAS
AcQppSkZEikWZRbfZPVMCXSUxWOl1S1hfNFRWKAkHAZqgawBu45aJFzWTCF0iwmIctJ0MtXbFrhq
KL3gANAPssZtHMts01RIynjqAbIWf9lRSFAWDLhaxwkcZJVxwDzCCGYccw1UVZnb9aaFDJOl/vYl
uOx3W7EFjxq6rposG7IkSfJPJpvqkn1Sm+JSiS0LUPmr+e+f3bgEG3r4XB3iYluV1PzNl+fQy2AU
3Nr+g6Zrfs4QD4SQZec3GxhMIObJFKB2rXowcQ9WdKllc4PhjeqS7pDrkNxi9fB18tH/1i2/zrFa
Mt+//7vnV/FeZPT/8l/re3HoxxtB93+WsB9XWes8tzqYTTEbt/LhLEZlvBC34P95vqjPArf2B1zl
TGR/NPTyOGxORMIHjxPEmjFk3GD4h1D+T0cNECv6WK/nCiOXJWTKZBqUSSxsWUpazgOGLocoMnPJ
3P0f2zEMGCRFYmYBSYEOwH1ZzhXD3ILvQBMKKCyrBw/EqvIofmwHpqAhIfgrwsB2rI8tvokRksaj
K2pV1hSmXehZ9ok386wmF+hrza2WzIvVlMVMtThmKJ+s17koLNJgVVn83A4aReSgZrCVMHjOUea4
1lpJYdmAX7A5xBWylBjMNcqn4KF5kGQ0JqQF4WU6k3ICXznnDv2GXyln0AAIZB78BRptfJLt2GRe
Bl/DKWDHCQAeQVsAWZb42AGsmMVsJrtY4WA+tkNgIKswztpssvHUZvAhmRaCMb7HHyMMm8kLaHyG
DlAAZFhACZAd0sfRIalBxnkIxwVshxFUQUD5avzzT3qTS8zOSB/lM2s6hkFOAfoEYtWZKHEg4Doq
zI84x4hPyEtQ6Jw5VDe4IsAHoeYyKx9SBshmXTV0EdpSVlj4JemXrkPKOIugVWKdfzjxGCnjA83D
0Qc3oHUcdxCnUeuxqf3cDtdmvRHtBLmFOCF3HFMgBhAJPed20nB0ANHnjAnX5VPPAxm5bu9YZTlH
j6F86MNvZ0HUC7ngsJKqHAAfiRLusZ+FM1kXWZuVxj98uUG72296weCl2+p6zktQv22E3a4/unqe
szounHPXdRZd3znPtqEjtb3hW3vYTVQ/ClzvPHJCV7q0r87cXfTHrhOGwTZbN2aFfE7aLWm+sd+T
oSzNp30pvTqidZYu/ZWjhavoPbyG59Cfx9/f6eEq/HjXuGX1tlFEOeye/Wj20NvNu8tT2ncQWcON
HH+xCJ4dHwuinYd713k8Htevw4dpFiW9nRds98GkfH998zbh4O5cBoVYmedSa6/Ubbdhz6b64nH5
Gi7vjaeZuV2d3jsbbeMvD5N5adgDTTpmw7EzsKy2f+4+RXfRaTkvD4+XoJy469RpzA+vm0wuqmKf
dUT7UXEHWz0sEmPcvm+vvaeOsMRC3Qt9YeWHbq4pu360fJ5X876m9Z5WxqaxOeWnVfGSPR8tZTLJ
1uNzOs/GWm/oyc6doi7KyN2u+ur6xZXvW9fh5v04OFyjSeQMrzt9ErqN7iTxltJVjZ6LR3c2GNmt
8foh6rt67xrOvNVs1n9zjKgQL7P9YVtUYf+iPE1WR13aLs8naXxt7PflsfeQjrS4FaYLZVKO3jrO
Rb9/2hwfAy3SX5yXJ8Pv6Mo49Jxz4Djxk7u5eu7GR1ugco3OIAzcF8d3os49Stp25FHmL6KJ6w6K
tOzs/Wt3qQ1O+qvfNSeHXR72p9PYdzu8uTMMg0bkO3eLPy3uBcu9a507L0ESuq/sIHDO52GmjIvH
qVs2ZtPBJlEfqsfpYJ2qg+tiEfpukZ6988wfD6Rn14GLRTcI3bCO7iGKwtDZtT2vbDvRqNVwz/h0
o+8dDXMRuSe3ddS3VXXJKmevBvbVcKtu92UT+EN/rY4CpaEqXXVajLaruPUQ6ml7fjSWbhCs34L2
ofJW++mo+1ravt3rP7amu87+ueVoRisYS173TXO1aaPrbl/1reW/zTTPkNXT/XOsDIZ5oKuPd1E1
kkrPUud953nYv3ueLCZP+/dr723akafxbBk8tKco4/q8O9rzSbBazuXDQ7+IPflYZfv++mD0UY/x
om0f44eyGB61u9Pk7e5gR6fk3LvLNul2tWikuWyvB/3HKO5eOnfa01a6TDqVnVkTZfqgTqPZ4XW4
drxgbh13+3jSTp7u+5Wwe9vcPfW3w7whepPrnV08ZGYwmlpj/+Lfvdvj7SFYiZW3bu97jyGCVNtn
XZp4l/X0GkreN4YK+v7v/PRfUEsDBBQAAgAIAMODGEkWMuLJ7wkAADsSAAAVABwAX3dwdF9jZXJ0
cy8wMzA2MjgucGVtVVQJAAP+Lb5X/i2+V3V4CwABBPUBAAAEUAAAAJ1WWZPqRg9951fwmNTNzXhf
VJWHtlnGDDaLWQbe2nYbzIDNgMHAr4/kJHOZDDdf1edyUaYXtXSkPkeuOJRZmsW8FNBo4tPiJf/r
i56ZOByzIoem2vxFuii/fkyE4pDxbTM47SJxgKZsW7Kl0RpVMhTrbl22ynl5Oogm266KQ1aud9A8
rrmiG3P8Mw5ZO48P132Jp3xs8o7HE1l1gz8qEX3fb3mZFofd91Icy+MP3/g2S7Ly+jFAT1CUTUfg
agFNdlo1Fa2pqKBKIBlNRZKNZteffNnA0lIcmoBB7XH1f2wIT9FGxGXt2baI+XZdHMt/zzaHp2ib
xc0XcW16eVrAp/PuJu8QORz5AxzoQYTu9kDzF0XSrGaUlb9+WkaPXySn7el4twS+rKFHkkBIYAiw
JIgjsAyQNVAt4AKMFOQYDAUkFWwZYuOxBdmAyAZbBW5CrIKkQxRDihZ0MGKwcTvakSG16YiHFlIJ
IglUGcwIDA0Qci0CM4XEADslZ0zMAKcRNPXQAo/JAk/oUPRH1cDgIAtIOagqWAoknOzgeGI+tqAK
kBUwLEgSELg4BaGBldCuyADy0ARNAlkHPfmJBRmUFEwdYoxUpaNFCooClgYcHYiA22AahAni/DMk
EwVEQoDLHGINbJuM2BKBb1qgGaCnoCsU2kMLiLyJUdggaZDGhJuugYn+4DeHpM5IKtc2lZ9EYVLU
6EksgSlASqgMOGaEE3QpgmODkRBWQn9sAZHHrGEeMV+qUb8RJDGFENVvjIHUqEo/qSjLomJQsAJ1
QH8wd3FKecTXwO0xSIKQwaKytccWEguEBTrWT0QIYDqSlGLRI0gVKjOqN5WKils/sWBS4lLMXUwl
kUiEJ9oRMXAcr6tdV0GR6I48tKBYkEagqYReLCgErEN0CXHABOlYHuiMSQ6gJw8tCBOUhNDG68Ax
HTFdT5tTarBI9NqaEJRx+ydVTaVigoRFiGcJMoXrsfwoCryYEigIjgDdpvdxLhTKoGJSZao6FZKa
UAkh8jJGlBI74k3RUrr4j6MQINQvM+3LvshFjvRp6LpqklrIkiTJP5jsVZfss9oUl1LkpDvHz+b/
nnb4EdnQxenywLO8PELzy1kugw7rh+1H+//h6ZqgE3QIBZDk5osRZkNbohS6yEcdkCWwGcgWYJpx
sK2D3SGCYB1o6aDht02oIShMfnQuO5VrIvzr/z75TVyzhHgYE+3K0Mbb3QFVAQW/ZZAd6NhEETii
OqAzcNCvDuUFHWmZyGmNRw7QsdMjX4kHJ7ayVVaion8I9m8ojXlzLPanJOMkS7/V+1Gmsv1aHHbo
/aMz2pS7RCT/edikHzbnIqIu4ozKS8AQGDH/In//ShnbolKjf9lZNAO+exhIEMKHNv9W/62q6vd/
DV3y799za2MkR13dVtXb4X19Viz+aNn2LL4bW578/tWq8mBM/v1zZ/B/dUCoKvgaJlUbVpiZ0K1F
OkeexopAOUKGi2TgMtGAjWyBd1r+cVmQ5JDAsEwFKoNKpGUbpPnIrLglikCxiVGQpaSIqgZ517qT
OG7QdTdVosMYRVgm9iIpS8kTq7aGwo4jSIRI1WhHvuMSFEzLJNJNa/5OajpBGkaJQFdtnWgVPUQu
SQQoBoUT3cmjZhJpoSwbEakfyg7OYreCdpBTMRZ0BqUMeVpF37ABSej3B3QyKZ5kEXUpNQ0ntbdR
jRICIgzqVnSL7irqCSq/cScIGC8Kl1qrGYKM6odG8HRsdtAZSyeRR5voA1mW6qDuehxsi6Q6fNRz
khFEWyO4MJU4hWqMXI4Ej9SLdI7AItTiTtBik4ROrxuoCEUYld+kNgRDwMV4NDYXiBjyusVJ5DWZ
bH5sx8WKTphjK4FHY4pRi7A9kROCS6nhwimicPPvqeQOeb2mHLUGHHFGRdUERGotXDbli/oyBFwh
/IUMFibiTglJeRISGSwnrAoN16hUpQi7EtMgRofYIuBoENsiDOq+LVLqJhRhwb4M92InEsuEOUoi
VkJUp5s6NeyVbJI4bAeku5rHjgNj12rVxTWaTilD8RR1veHtQDzRoPTPgsSmrqRx14Aodc+ry43v
9Djtrhc03fZ44nU8l03a9WjD97xWfnNdVogVqzyHrbwWqxaFz6SuG753Qy9SW6O241ZT5jvSpXtj
S2cVzBzm++082TYWmVxF3Y603NnXKJSl5WsgxTcmOpV0CTZM8zejq3/zK7+15H+P6f7G/xhr+M7o
0t6w0T9W3fnlvFA6R961b0kLPQu9qjVa9F6Kpbc+xwFDb5wRa61W7SHD+QYbFS7+cdjAOa38U7fT
yk7R5ZIx/bnbOewme8vvnIfZNup5w3a6Y1afXYQy2oTq0zy/rauGm1vDQ98t9+OFxNem4Wt9PmhN
XofrXqGK4kn3JK08u+rImSV+aMvXxdAwry/tojztk92t3+iU/ZJdDu2d+Da65Ovuq+yJ83Nv7wwv
1ex554tydrTEtzDQpHn1rAWREbzIT+o+Gve3fG+/NdLbQhnYt255iLywv+hmrfZpOUn57ebflsdq
sBt3p8pgPd/JYUut5MjKT5VfvReyNpEOgTpqPHnD4344yKdXFr8My1ZhmcPVNury2eFgG6ubfpXL
0HCs9f7AzFlvbuYvr9N17GZPemkez8dGsWJvm+12udoscmkz94dpd/qsWZXetjrmyXdZ1WaMDxyr
5TrmhPUoW89jv802jOqi22DyNGmtRnPHCfea1/fSi8u7bubqS5sd7NkwDONOMWFpvTH0290Wm6+c
cRYfn/etm7duaOOz/tbyzPmhSP3g9ZW3WL9ePLIwt77rCPShWrRmY2nrsKpyVwvvpVpgLUyfaaaR
rurJsfMcV8nC60Vde7OYX4pIDaTVSlYTNT59Gss6WpRJZbRZvwe78a0RTIJjoiaHOO8UycbTFqF+
jJRgHXWx7tTQ7eTrUz+Uj8luWga7y3rpfp5vtHLcfvM+n7LS6eRLf3df1ixwVm/v67esa1eSw0bH
DmMDKuU261/tvNt27N7zexBvZew5uq/5NHTcUiq0XTDZnphaRMd99eL3fdcI9ufObe3vL5xvnxrp
YjBfvbzFyru/7CzSq3UbhsH2lObLV8tdP4neVjHHilxwaRGeFDO8bYP923lkJJasevPKawThcCAX
rj0e9Hfnzipvi31xLaunZWdie4oxGRevxm2XD6Tet9FpNH9mxm1c9pb5KZnz/gx7qJhHb5dKD1vm
t/PMTOdxWmS9s/Eips+z2XWKNf7MRuo0sd292i0sdaS+Rq9z73qSh4vJIeANY2xpifUSaotdPF0r
Wb/cu5rZafdd81kd7HlSRv1ea1MO33rfqmmUc3NkqELqdfQ3Z3CdDRq3b3LnTYu2T173qRqZQzPJ
vcwdjKejP/74iwvbQesrE/4JUEsDBBQAAgAIAMODGEkxixRpEQkAADoRAAAVABwAX3dwdF9jZXJ0
cy9jYWNlcnQucGVtVVQJAAP+Lb5X/i2+V3V4CwABBPUBAAAEUAAAAK1W127jWhJ811fo8V4YF2YO
DewDk4JlyqZkxTeGQ4mykkUqWF+/1ZwZjwcjzwUWSwgCwzkdqrurjicOVZEXaVwJajRx+XEVf7vj
aywOZbHbUlNt/iVdlL8/PgzFoYjXzf5xk4gDNWXbkq16jSoZivlpXbHYxtXxIJrOerE7FNVyQ81y
GSu6McHDYOgE2/Twvq/g5WNTtyyPbNXr/+cskn/267jKd4fNP5Uoq/JnbPG6yIrq/eMFX/1d1XQF
VgtqOsdFU9GaikqqRJLRVCTZaLbDl982OHklDk1CUnus/sOG4TFZibT6t8i+L2s+H5N1kTZ74r3Z
3eY7+sXxp4+foDmU8Q1A+AJUn/ZQ8y9F0qxmUlR//7KMr3CXHdfH8tMS+m0NX5JESUKxINsgTSPL
Jj2jTCM5ISUmSyJLIxtfZZKN2xYSlRSbF0sxGSrJMuUJSfjV1oTFj6lCqQCcty1YOZk2pVipk6VT
brPfxCJDI1UhOac8JhUvBQnzCwuC8pQsk+yEnVoqWQYlOtk2Ibw4J10moZKWkJ3dtqAhcakOXqVU
ZgupxP+2xPEgHSGTYVAaU5rctpBqbB8oIU3dJACL9QmQMcg0SbcozsiKyTZJ+yILEykrlMOCTrLN
fpE+tiN9XSMjp9QgWyP0pvWVBUBtUixRJthRUkOBNwLVRGqCVKP+qvHjTQtqxhjqcG0y4Kipip+g
GK5jymEq5/eKRtkXSGIx1sARjBgmGXqNhskZmbivbWoWKRlp0m0LaBgjI4EekGsYEUnK7oROWkpy
RmZOskmqxlHdrkVMAogBjYzBRBElmZSUuxFG0KX8+K2gyhcdZbIv5Isgc4ushO1gFlCIHP8656Xo
JKGpvkASAcQppSkZEikWZRbfZPVMCXSUxWOl1S1hfNFRWKAkHAZqgawBu45aJFzWTCF0iwmIctJ0
MtXbFrhqKL3gANAPssZtHMts01RIynjqAbIWf9lRSFAWDLhaxwkcZJVxwDzCCGYccw1UVZnb9aaF
DJOl/vYluOx3W7EFjxq6rposG7IkSfJPJpvqkn1Sm+JSiS0LUPmr+e+f3bgEG3r4XB3iYluV1PzN
l+fQy2AU3Nr+g6Zrfs4QD4SQZec3GxhMIObJFKB2rXowcQ9WdKllc4PhjeqS7pDrkNxi9fB18tH/
1i2/zrFaMt+//7vnV/FeZPT/8l/re3HoxxtB93+WsB9XWes8tzqYTTEbt/LhLEZlvBC34P95vqjP
Arf2B1zlTGR/NPTyOGxORMIHjxPEmjFk3GD4h1D+T0cNECv6WK/nCiOXJWTKZBqUSSxsWUpazgOG
LocoMnPJ3P0f2zEMGCRFYmYBSYEOwH1ZzhXD3ILvQBMKKCyrBw/EqvIofmwHpqAhIfgrwsB2rI8t
vokRksajK2pV1hSmXehZ9ok386wmF+hrza2WzIvVlMVMtThmKJ+s17koLNJgVVn83A4aReSgZrCV
MHjOUea41lpJYdmAX7A5xBWylBjMNcqn4KF5kGQ0JqQF4WU6k3ICXznnDv2GXyln0AAIZB78BRpt
fJLt2GReBl/DKWDHCQAeQVsAWZb42AGsmMVsJrtY4WA+tkNgIKswztpssvHUZvAhmRaCMb7HHyMM
m8kLaHyGDlAAZFhACZAd0sfRIalBxnkIxwVshxFUQUD5avzzT3qTS8zOSB/lM2s6hkFOAfoEYtWZ
KHEg4DoqzI84x4hPyEtQ6Jw5VDe4IsAHoeYyKx9SBshmXTV0EdpSVlj4JemXrkPKOIugVWKdfzjx
GCnjA83D0Qc3oHUcdxCnUeuxqf3cDtdmvRHtBLmFOCF3HFMgBhAJPed20nB0ANHnjAnX5VPPAxm5
bu9YZTlHj6F86MNvZ0HUC7ngsJKqHAAfiRLusZ+FM1kXWZuVxj98uUG72296weCl2+p6zktQv22E
3a4/unqeszounHPXdRZd3znPtqEjtb3hW3vYTVQ/ClzvPHJCV7q0r87cXfTHrhOGwTZbN2aFfE7a
LWm+sd+ToSzNp30pvTqidZYu/ZWjhavoPbyG59Cfx9/f6eEq/HjXuGX1tlFEOeye/Wj20NvNu8tT
2ncQWcONHH+xCJ4dHwuinYd713k8Htevw4dpFiW9nRds98GkfH998zbh4O5cBoVYmedSa6/Ubbdh
z6b64nH5Gi7vjaeZuV2d3jsbbeMvD5N5adgDTTpmw7EzsKy2f+4+RXfRaTkvD4+XoJy469RpzA+v
m0wuqmKfdUT7UXEHWz0sEmPcvm+vvaeOsMRC3Qt9YeWHbq4pu360fJ5X876m9Z5WxqaxOeWnVfGS
PR8tZTLJ1uNzOs/GWm/oyc6doi7KyN2u+ur6xZXvW9fh5v04OFyjSeQMrzt9ErqN7iTxltJVjZ6L
R3c2GNmt8foh6rt67xrOvNVs1n9zjKgQL7P9YVtUYf+iPE1WR13aLs8naXxt7PflsfeQjrS4FaYL
ZVKO3jrORb9/2hwfAy3SX5yXJ8Pv6Mo49Jxz4Djxk7u5eu7GR1ugco3OIAzcF8d3os49Stp25FHm
L6KJ6w6KtOzs/Wt3qQ1O+qvfNSeHXR72p9PYdzu8uTMMg0bkO3eLPy3uBcu9a507L0ESuq/sIHDO
52GmjIvHqVs2ZtPBJlEfqsfpYJ2qg+tiEfpukZ6988wfD6Rn14GLRTcI3bCO7iGKwtDZtT2vbDvR
qNVwz/h0o+8dDXMRuSe3ddS3VXXJKmevBvbVcKtu92UT+EN/rY4CpaEqXXVajLaruPUQ6ml7fjSW
bhCs34L2ofJW++mo+1ravt3rP7amu87+ueVoRisYS173TXO1aaPrbl/1reW/zTTPkNXT/XOsDIZ5
oKuPd1E1kkrPUud953nYv3ueLCZP+/dr723akafxbBk8tKco4/q8O9rzSbBazuXDQ7+IPflYZfv+
+mD0UY/xom0f44eyGB61u9Pk7e5gR6fk3LvLNul2tWikuWyvB/3HKO5eOnfa01a6TDqVnVkTZfqg
TqPZ4XW4drxgbh13+3jSTp7u+5Wwe9vcPfW3w7whepPrnV08ZGYwmlpj/+Lfvdvj7SFYiZW3bu97
jyGCVNtnXZp4l/X0GkreN4YK+v7v/PRfUEsDBBQAAgAIAMODGEmHknAPQAUAAM8GAAAUABwAX3dw
dF9jZXJ0cy9jYWtleS5wZW1VVAkAA/4tvlf+Lb5XdXgLAAEE9QEAAARQAAAAbZW3sqvYAgVzvuLk
mlN4N1UTwMZ7jyDDg/BOAn393HnxW+lKu6t/f/+MF2XV+vF87sfx1IgLxB9dTP47fiFnm4vf4F6q
v3+Iv0QLeIkTiAIkiPqvOtXz3z+C6P+Kgoj/Ah78RTKA53GeJUhSIliJhiDN53zCfy9vpqK5/cMy
mRE4U7Tw5fj0u5qQXpMSwXtJDzPpx9gJNOSqXkN/U60gMXcHHdLExQoK3DBbJornX7ihbOE5VhhA
bcGvRyuv5HM9xZKTLJheT0HKipDtmDdXgOn1gHBgjCk3HedsSCvs0EFVGUij0DD95Timf82cKHG7
J/NgL/nPvnvoUKzDVabm0pTTmkJB0sfV7pZxD2DbuGjEXZtLsuQ45SrVdM5KaDqJ0iZs57VNI4YR
ORQ3fVAtr/dSOBFQfFVj7l6y+e5DJf76VWuPulHlAWIUKJq87ZXt0jIp8ujuLcZLTyXVpwEvs7LA
zbJ1INYjZO8x5j7SMimh0qvDL5j5RgZeboPNTWMftBY8mszkaGTMEkAwfH7wZ1wuFAHdCWjfXAPb
LZ/24wbol5UMqEovqXTbQ0aUpG3EBhrKAeGEZlUys7tgcL9/dEDAjN/7+gkVfJg+lZYN48N8NDe5
p1lQfJd6XToTBFjo5DuFN836YDYtS7oILykKKFkyw+QdyDUBNW1v6vNWgK/HhHLmHWW7RIZblO7Z
pryMXEq7T3CXVdG957TUgjBhn4huEGwa+UH3hfzVya4v85GKpX04jcKzSqO0hD8+BW194Fu0PspW
HUG/Rn1LhYveXJT2mrsW7kljo1oIFvZDvjh3xpR5D7eWdV84n1iY/ewYerLrJ5fIbFHOXM6Oe/3c
Ph2FF2T9iuL4E30YGXLtdZoHz5Zw93M3IqbZJQZOAv2kZBF9o1cV7c+bpDXvqDF5xJNAf2IcoETz
npRaVR7QcWuSbZ6GCgqqkFE0x4/zcNz3d3lLqAuyD3XNGWcJqKLp5nTWtICSOHLb11HlYmeVkOQZ
OCjzVLO9yynIhjiHDnfj576WcRbo4pvya1ZNo3UMfUZD6H7Sq/Cxb0lTKWe9s1D9bvcCDy8SyS2j
8fMtQPWov+jxOsuTqxZ8n8MQLgazA7BLJM1BSIrMy5TJfD9DqunQOVSSjMQPp46Fz5ijKtVr68BE
qA8S0KMRxly57rCBmUZM8KGT3l+o5c57ILrYrmAytHp4RUcBUcWu/4ciseYsaXHjUrHdK+P01onf
mKbyWoKK9ugLHJrn6ujej3G1UpFIV6gVnSELFjO7cw5Eb2pOM/6p2aSaTmdybOdBHaXyHfsNDJsK
8BbNHs/8ZNpYQJj2aAMo17chz7SH2MXaru+MxFFeJcRJrlnXci29yIJ786Ys6HFeOL1nqXFcXpEE
C1jZyscBYobzi+xhIe9WIhL24p2p/3rhr5wYYIENxwyWQD8EuF8i+Vysj/G2ZAaWjNQfdLVVe4hN
wvKPRwgSVm7NRKUc7V+S5/MOm0GIyb7Ql8Zy6cudrdnzPay3k0wstdCvYL+Nbdah5RUVjbMKs9mU
p3PxvNuaiiiEAZtvC8cJ5IhhCG0qztWZ7bnvZxR2Yj544vwHvQB+QP4H5Qj5OgcYhmPtpd3WzZsj
KesAXTHD2FfPzmNFj1fMdZ8eMknLluDEat7EqqG6QUNv95JOTGbEc/zIfDp8jKopbav3L/hpd/Ok
nsF2xn6mcwQD36cfFcwqry6MtWUtH/ILqlatyHUCnb/rk/EMnSxw7vCdKphLnJvoc2yXxH7fsLkX
W267phqLmsX98w/0vyyJlvD/c/UvUEsDBBQAAgAIAMODGEmv+0qJSQAAAGUAAAAUABwAX3dwdF9j
ZXJ0cy9pbmRleC50eHRVVAkAA/4tvlf+Lb5XdXgLAAEE9QEAAARQAAAAC+M0NDOwNDI2MjY2MDCL
4uQ0MDYwMzLnLM3Lzssvz+PUd/azLU9N0i3ISSxJyy/K1S1JLS4p5grDqs0CRVtOfnJiTkZ+cQkX
AFBLAwQKAAIAAADDgxhJmFx5fxUAAAAVAAAAGQAcAF93cHRfY2VydHMvaW5kZXgudHh0LmF0dHJV
VAkAA/4tvlf+Lb5XdXgLAAEE9QEAAARQAAAAdW5pcXVlX3N1YmplY3QgPSB5ZXMKUEsDBAoAAgAA
AMODGEmYXHl/FQAAABUAAAAdABwAX3dwdF9jZXJ0cy9pbmRleC50eHQuYXR0ci5vbGRVVAkAA/4t
vlf+Lb5XdXgLAAEE9QEAAARQAAAAdW5pcXVlX3N1YmplY3QgPSB5ZXMKUEsDBAoAAgAAAMODGEln
yPe2NwAAADcAAAAYABwAX3dwdF9jZXJ0cy9pbmRleC50eHQub2xkVVQJAAP+Lb5X/i2+V3V4CwAB
BPUBAAAEUAAAAFYJMTYwOTIzMjMzMDA2WgkJMDMwNjI3CXVua25vd24JL0NOPXdlYi1wbGF0Zm9y
bS10ZXN0cwpQSwMEFAACAAgAw4MYSSZJ5K8KBQAAiwYAABgAHABfd3B0X2NlcnRzL2xvY2FsaG9z
dC5rZXlVVAkAA/4tvlf/Lb5XdXgLAAEE9QEAAARQAAAAbZW3rqRqEIRznmJztMLNYIINfjyD9ybD
DAzem+Hp79mNb6ctdX1qVal+//4ZVpAU45fjgl+WowTAE36pQvx38RvSFUUYK4UFQOWALYCHRILv
I/ZN9XnIksK3eRzuiTmcZ0jDarC2Fe3AMX+uvEglnKFBJZOWpgzU8oTXVcU7sXFm+RjvahsfhpHD
Qt8UZIO0jVfjtFYAMUAvjYheFbIcyujWEE52eKavIbqjvLS6CfXkpbeQlP6HpPO+FRCZ9d/xRWLh
fVFPhWicDJQVdozoEiHvboOEPZgH3EGMJqYIPcW39aNsVaro7rMzmMXSb6O/AZkIiReTYpoFilXy
wfF9U+Dm5iaCPpa7EgVPV/C3pcnCU9hzhFGzuVeYC9ZkCveDmHlr0EJMG+Wv1K/85nfZnk+FK56q
BiE9sX/hbw041wyDnjPq0jXik6ETu2xuvvXOaH+cCg9swILx77Ph6bkUxtLC78zObEiS9v2VHLUi
YKZ+V0dMTLi23k/FMDRbZ/rorsMnO+wOjHGejh50sF+xTqIzCZ8OWj4gLH8QMhGVJBUOnxTNLBsB
E2b3U4cUR0Jt8l5fmAvCTVljiQzyARtkcOgh2/ohwtoKJIsUCcDmrWoO5njUKekHzfRK7xZjW7qb
dxTmXo8b8rtUpqtwq41HxH7ITKGVI36goUsVyOH9zFYBf3TOZlQBvr7lXu4qFUZFmA9Ey50PUXLN
pQI3XJEc1zq9PI/3p+yrk4TSUVo6AmY3BORi1HDndOfbp/cPdVE2PymGoBg2D9CGRe1OHCvteNGh
oputJcAt4e2QE+NSZghcFQuAoRSF+YacRXoFQjz9w74G++MO7m4VKezSI/2EvfA8VXz/TMgGFilN
IQpjbP37eA7tQzqDLi67oW5PxnjGj+sYre9QVBvyxYRauNsaUdihRciPmZW5pGAp3MUQajN28tg2
GJsl6WA3uyBw3uDQERGV7Yyths29Gms/3K0C6SXTSzfZ4+j/I34ingYNh6qvuYLINto51OPVPSPX
VJpnumFWjcszw9BcXI/amPp5XHlNr2SRr7phtvdLVQsapH3Ie32Te1I1zj7kwRXeMTYaMmuZSfP4
3BHFEUnrvdYoyCsOdmWv+pqYapUENhw+nkA/nn4lflcX6fsa4os60iD9yCHubdPMjEjmtfJXE/If
ZEBTq59gWBI4GQNTr4Wg5vyEdPGDqIVG13kqyZFdjSS5EfRUn+NLSA7RDeJ40W156JOYwpomvgUk
baMc1rGfhPsXDxH81b5px1Xxj7jYgk7uR0YW76llGCGbefQw+3O5lUL0I91Y0BdpT2f4ookykAEr
mzM0a3MundRB8dOMmtSX96SVtFW2YhfHjrGLJBzjW4IHWWxww21ZUsKdNzRFgQ85jKYypNjJnIIy
c8HwkswVrejEFJxpmEg8xHrUGVLtOIZKq44DpefnNvEseKDg7RU4FcHGAvllU9JOiDrm/BIj1Yiz
Lhc9tFQTRwmjKXqF9lUYElHOHJsPDdN/UpDGLBnVGPPuHBQiQysCowR8/Rrztv2cjpSkJ7G1AlvC
unQo3+xBE4KyvbYm7OREvLjQKtGIyDJB/LkMrUp8tXqXNkNNuPLrfXjN91EamZSLqJK0Q5O8KqaT
AuUuF2GXJS6prPmR+k2Akd56a1A/3JkrWnmnIXJiOszAxZYXv8GPzgwSDBdgnEYmLDa+kjhMG9pP
4A/0r1IEg///qvkPUEsDBBQAAgAIAMODGEkWMuLJ7wkAADsSAAAYABwAX3dwdF9jZXJ0cy9sb2Nh
bGhvc3QucGVtVVQJAAP+Lb5X/y2+V3V4CwABBPUBAAAEUAAAAJ1WWZPqRg9951fwmNTNzXhfVJWH
tlnGDDaLWQbe2nYbzIDNgMHAr4/kJHOZDDdf1edyUaYXtXSkPkeuOJRZmsW8FNBo4tPiJf/ri56Z
OByzIoem2vxFuii/fkyE4pDxbTM47SJxgKZsW7Kl0RpVMhTrbl22ynl5Oogm266KQ1aud9A8rrmi
G3P8Mw5ZO48P132Jp3xs8o7HE1l1gz8qEX3fb3mZFofd91Icy+MP3/g2S7Ly+jFAT1CUTUfgagFN
dlo1Fa2pqKBKIBlNRZKNZteffNnA0lIcmoBB7XH1f2wIT9FGxGXt2baI+XZdHMt/zzaHp2ibxc0X
cW16eVrAp/PuJu8QORz5AxzoQYTu9kDzF0XSrGaUlb9+WkaPXySn7el4twS+rKFHkkBIYAiwJIgj
sAyQNVAt4AKMFOQYDAUkFWwZYuOxBdmAyAZbBW5CrIKkQxRDihZ0MGKwcTvakSG16YiHFlIJIglU
GcwIDA0Qci0CM4XEADslZ0zMAKcRNPXQAo/JAk/oUPRH1cDgIAtIOagqWAoknOzgeGI+tqAKkBUw
LEgSELg4BaGBldCuyADy0ARNAlkHPfmJBRmUFEwdYoxUpaNFCooClgYcHYiA22AahAni/DMkEwVE
QoDLHGINbJuM2BKBb1qgGaCnoCsU2kMLiLyJUdggaZDGhJuugYn+4DeHpM5IKtc2lZ9EYVLU6Eks
gSlASqgMOGaEE3QpgmODkRBWQn9sAZHHrGEeMV+qUb8RJDGFENVvjIHUqEo/qSjLomJQsAJ1QH8w
d3FKecTXwO0xSIKQwaKytccWEguEBTrWT0QIYDqSlGLRI0gVKjOqN5WKils/sWBS4lLMXUwlkUiE
J9oRMXAcr6tdV0GR6I48tKBYkEagqYReLCgErEN0CXHABOlYHuiMSQ6gJw8tCBOUhNDG68AxHTFd
T5tTarBI9NqaEJRx+ydVTaVigoRFiGcJMoXrsfwoCryYEigIjgDdpvdxLhTKoGJSZao6FZKaUAkh
8jJGlBI74k3RUrr4j6MQINQvM+3LvshFjvRp6LpqklrIkiTJP5jsVZfss9oUl1LkpDvHz+b/nnb4
EdnQxenywLO8PELzy1kugw7rh+1H+//h6ZqgE3QIBZDk5osRZkNbohS6yEcdkCWwGcgWYJpxsK2D
3SGCYB1o6aDht02oIShMfnQuO5VrIvzr/z75TVyzhHgYE+3K0Mbb3QFVAQW/ZZAd6NhEETiiOqAz
cNCvDuUFHWmZyGmNRw7QsdMjX4kHJ7ayVVaion8I9m8ojXlzLPanJOMkS7/V+1Gmsv1aHHbo/aMz
2pS7RCT/edikHzbnIqIu4ozKS8AQGDH/In//ShnbolKjf9lZNAO+exhIEMKHNv9W/62q6vd/DV3y
799za2MkR13dVtXb4X19Viz+aNn2LL4bW578/tWq8mBM/v1zZ/B/dUCoKvgaJlUbVpiZ0K1FOkee
xopAOUKGi2TgMtGAjWyBd1r+cVmQ5JDAsEwFKoNKpGUbpPnIrLglikCxiVGQpaSIqgZ517qTOG7Q
dTdVosMYRVgm9iIpS8kTq7aGwo4jSIRI1WhHvuMSFEzLJNJNa/5OajpBGkaJQFdtnWgVPUQuSQQo
BoUT3cmjZhJpoSwbEakfyg7OYreCdpBTMRZ0BqUMeVpF37ABSej3B3QyKZ5kEXUpNQ0ntbdRjRIC
IgzqVnSL7irqCSq/cScIGC8Kl1qrGYKM6odG8HRsdtAZSyeRR5voA1mW6qDuehxsi6Q6fNRzkhFE
WyO4MJU4hWqMXI4Ej9SLdI7AItTiTtBik4ROrxuoCEUYld+kNgRDwMV4NDYXiBjyusVJ5DWZbH5s
x8WKTphjK4FHY4pRi7A9kROCS6nhwimicPPvqeQOeb2mHLUGHHFGRdUERGotXDbli/oyBFwh/IUM
FibiTglJeRISGSwnrAoN16hUpQi7EtMgRofYIuBoENsiDOq+LVLqJhRhwb4M92InEsuEOUoiVkJU
p5s6NeyVbJI4bAeku5rHjgNj12rVxTWaTilD8RR1veHtQDzRoPTPgsSmrqRx14Aodc+ry43v9Djt
rhc03fZ44nU8l03a9WjD97xWfnNdVogVqzyHrbwWqxaFz6SuG753Qy9SW6O241ZT5jvSpXtjS2cV
zBzm++082TYWmVxF3Y603NnXKJSl5WsgxTcmOpV0CTZM8zejq3/zK7+15H+P6f7G/xhr+M7o0t6w
0T9W3fnlvFA6R961b0kLPQu9qjVa9F6Kpbc+xwFDb5wRa61W7SHD+QYbFS7+cdjAOa38U7fTyk7R
5ZIx/bnbOewme8vvnIfZNup5w3a6Y1afXYQy2oTq0zy/rauGm1vDQ98t9+OFxNem4Wt9PmhNXofr
XqGK4kn3JK08u+rImSV+aMvXxdAwry/tojztk92t3+iU/ZJdDu2d+Da65Ovuq+yJ83Nv7wwv1ex5
54tydrTEtzDQpHn1rAWREbzIT+o+Gve3fG+/NdLbQhnYt255iLywv+hmrfZpOUn57ebflsdqsBt3
p8pgPd/JYUut5MjKT5VfvReyNpEOgTpqPHnD4344yKdXFr8My1ZhmcPVNury2eFgG6ubfpXL0HCs
9f7AzFlvbuYvr9N17GZPemkez8dGsWJvm+12udoscmkz94dpd/qsWZXetjrmyXdZ1WaMDxyr5Trm
hPUoW89jv802jOqi22DyNGmtRnPHCfea1/fSi8u7bubqS5sd7NkwDONOMWFpvTH0290Wm6+ccRYf
n/etm7duaOOz/tbyzPmhSP3g9ZW3WL9ePLIwt77rCPShWrRmY2nrsKpyVwvvpVpgLUyfaaaRrurJ
sfMcV8nC60Vde7OYX4pIDaTVSlYTNT59Gss6WpRJZbRZvwe78a0RTIJjoiaHOO8UycbTFqF+jJRg
HXWx7tTQ7eTrUz+Uj8luWga7y3rpfp5vtHLcfvM+n7LS6eRLf3df1ixwVm/v67esa1eSw0bHDmMD
KuU261/tvNt27N7zexBvZew5uq/5NHTcUiq0XTDZnphaRMd99eL3fdcI9ufObe3vL5xvnxrpYjBf
vbzFyru/7CzSq3UbhsH2lObLV8tdP4neVjHHilxwaRGeFDO8bYP923lkJJasevPKawThcCAXrj0e
9Hfnzipvi31xLaunZWdie4oxGRevxm2XD6Tet9FpNH9mxm1c9pb5KZnz/gx7qJhHb5dKD1vmt/PM
TOdxWmS9s/Eips+z2XWKNf7MRuo0sd292i0sdaS+Rq9z73qSh4vJIeANY2xpifUSaotdPF0rWb/c
u5rZafdd81kd7HlSRv1ea1MO33rfqmmUc3NkqELqdfQ3Z3CdDRq3b3LnTYu2T173qRqZQzPJvcwd
jKejP/74iwvbQesrE/4JUEsDBAoAAgAAAMODGEmORT4KBwAAAAcAAAARABwAX3dwdF9jZXJ0cy9z
ZXJpYWxVVAkAA/4tvlf+Lb5XdXgLAAEE9QEAAARQAAAAMDMwNjI5ClBLAwQKAAIAAADDgxhJz3Ql
EwcAAAAHAAAAFQAcAF93cHRfY2VydHMvc2VyaWFsLm9sZFVUCQAD/i2+V/4tvld1eAsAAQT1AQAA
BFAAAAAwMzA2MjgKUEsDBAoAAAAAAMGDGEkAAAAAAAAAAAAAAAAOABwAYWNjZXNzX2xvZy50eHRV
VAkAA/otvlf6Lb5XdXgLAAEE9QEAAARQAAAAUEsDBAoAAAAAAAqEGEkAAAAAAAAAAAAAAAALABwA
YW5pbWF0aW9ucy9VVAkAA4QuvleRL75XdXgLAAEE9QEAAARQAAAAUEsDBBQAAgAIANODGEnumsSr
QwAAAEYAAAAyABwAYW5pbWF0aW9ucy9hbmltYXRpb24tYm9yZGVyLW92ZXJmbG93LWNyYXNoLWxv
Zy50eHRVVAkAAx0uvlcdLr5XdXgLAAEE9QEAAARQAAAA88tXSC5KLM5QyMlPV0jLL81LAZJFCsn5
uXqJBQU5qXrhqUnemSUgyjk/ryQ1r0TPJbUsNSe/IBfItjIyNrYw1eMCAFBLAwQUAAIACACVhBhJ
dGVuXBA6AABDJAEALgAcAGFuaW1hdGlvbnMvdW5wcmVmaXhlZC1wcm9wZXJ0aWVzLWNyYXNoLWxv
Zy50eHRVVAkAA4ovvldoLr5XdXgLAAEE9QEAAARQAAAA7F1tc9u2sv58+Sv44U5HTiyZAPg+Hndk
vaROHVvHcpLe6XQ4IAlabChSISknvr/+LABKIvWSmGkmPWcqfXAUElw8u1g82AVAaJJnASsKV21+
gmzeo4tFwnrvmf9rXPJ/BllasrTsDdkjS7LFHL6rv2Oia9YfyoSWs20Z8Dl7lyXLOSvO3t1ev30z
OntxVomLcjpnn7L8w9lvk8GU5Y8xoDh7Zq29z4vguWWVqxD+xlHMcvcbFFTesbyIs3RbN1MjL9UO
/O2hnv7yRBlkIVPvnxasWfA32+yautq5oWX8yE7ATDm32mTL6AldpsEs9Ip4zi2qIf0P5Y4Viywt
Yj9pyGzbMG8LlqtXw238hoYUZUhLdnYfz7dAYw2ZXc3uYl1FpkuQi62eZdhqV7M0Tbmdqvts8oYG
Ktz6TUVaD6GeoXaQMSb6CeixyPJy5xmElH6apU/zbFmob9/WEA6JPTBGut210GDQNQfDfte2+0bX
GNvOZR9bmmkBdoXjVvuf6AemTuM0YOpllpWuahiapqkFC7I0LBRl+lSUbK5egYEe8rh84qYvWVAK
KGFcUDBvqCiDnBYzFqr3s5zRcAPSBDjjV+p7cNQkLkrxBewpiynK6HPAFlxWs+lHvw28y/7Qu7qZ
3t+9Hdxf3d6onenVq6vr65PaM9xn1j6gfdaaH3S6e02rPX0DejRqHNzeTaYj7+b2/mr8f4rSByeJ
AyrKThcsgC4QgB2iLJ+Liy74bM6m8XyZ0DLLodWdHnLUrgpeBJ3RVePJLEuZahSq9DT1noEtcwJF
7pbQpbjbxNDkTo9AY5MR+O3J+nFpj7UIZXDXn/5ydfNKvR9N712VprFEUZwt00XOovgzC7uLPFuw
vIxZ0ZuV8wTaWNhZ1VxXHcbFgpbBTP24ZEsQvekHcxqn3VK2iLbdQ7iODef+n7VREdLsyA50pFbl
XHeYBUvee1y3CMAdlgmblk8Ju2MBTYLOifpSRWpnVagXLBYusrF5oqBW1SLkA1ZnU+0NOILrxil0
1ZKF4KtZZ32P921QkOW80E8CArGAUOB/AoCtQR/D7dR2bJ9EbFP/KGFS6+dCIJraqR6SVjBM40Qh
7VBYATKJvUGRZkDTT4NZnIS8oqsKyyEcp0378f/fj133HXTuLD8X3+9YdN4odHEKvLNMqqKi09+m
t48sj5LsE9wzl8mFtLEGpN2or588ZEAgs3khNLbwiaK31NenIfbV/eo01N9VfVvjrWfFU4MZTR/Y
NFvmARM6GEblJzPXxNqJYrTGa4fsYJ3LRQjDx33OWD8CWpCYoUdvgV65S+NpaULDPlHM9piwdhAT
SGFpKKzxHtoqW5aTnK2RvaNJHMIYMJix4MOObeO0FGAdhPehNS3o51ZbtH4Eg8oz0B5EY6K9YAxy
othtSQdsZ2+TznMwYL3GNzpxThSnnR0i5JiWvqn69XS38tfTARDRZxZMS3ArqbutdmTRwbIoobqK
cIFvtZb129ip1f9nwYXySCArYZwaQ/DF/aN/EM4LDsfWV3AEEMPkxA/M//PPP6uHPysgiISGbWqB
hm1VEyxuYse2iGnrtq2Az7WSgzDVwoYcxzAcS0GkpRxbN1ldjo5Alq4gvaUcQ4u0hhzNMAysIOCc
1/SRToM8XpQ7rdRsKC0KbZ+Zjpok4HoeDC75E3c/A+JOhYdiLSWF/o4k0FdBVktJBnVs9XE+4lLu
s82jXKLjKMhuJc9nUWgxVTjY66v7gegJDDxtWTLpdu/evDiV94WLDmiSjHm69EKyOu8V8jkZACBw
Q6cdBAoodFkFj4xziMDg7xYMqPwBqh2JazxOXqHadIvqwuvprf8njLsSoEksYNCaXAHT4d0FqLsN
TgdTnyFZB3ukyZKusO1AkMOeyMIg8i/Kn9bQgPWXrBrxbyBbCCdlfl4JqWJpOeYbDuFcOwdK4Rcl
22gcNWpFtLphhEa0YZuVsuA+WZIIM1e6XKWQT9SJVxbdo8smQr198z7nvJmLR+u31uoMGQwXSSFa
A9sWZ603MH7IYHptOYgKbAgKMG6pnM98Z1u5dQBZOZC8+lW9hNWhv3cGy5znxbLYVRrkQhx4zsw1
OEbSEiO16nS/hRGccgFp+Aoj94t79rmcZEUskqUdm289f80eaPDEE5zpcsFzWxkwWqbaWZZxAgGG
a+kWoNZbDVK+RXyCN7X+cv/mWtYM2VbK3SZfptuGrUC9qPx7jx4i/oIwu9PQghsWoi9stIXoONqX
IK4IRKCZ0KKAEJz3t23AF18GrAPebeGyPzrcHcx2qLUAR0ET9SqHm9C8aJi2GGf5hC4LFvLI9nIJ
sQDLReZH0E4DW21xmPV4eh+OxXK+uM8+sDT+f5ZfZ9mi88Xi06c0mOVZmi2LN9CtTlU/y5Ka505A
3JQVfOJF2NVClWGbgoRpMZ+sgeCknUp+pJMWKrVSR/QriCA6W2hnrsW9wGlrfeaEX4Yq49HOKncU
jsu/T8s8Th+uYGS4+EnakZB9qGAkJu0iUzuwNNOo0TsLQPFwSEu6H9zlU8mKzs6ExXtITVkOpBXM
aC47EnDCMi3ihxQykCRLH6Q1rS0fJqjdzAFGlJq7EybXGQ05SBA1j0sOv/MVJNjQNyaUj8s4AQMv
Ebw70Xk4TqB+SCOqV9NUrgv/inhJSh0ksaBtCQ2yan65c0CDF1sWhOhRDFKQwO6TKhETjpi0tCOJ
fPQ1Owqk+/DAELdjvJmL+VQUaTfqWAYxzNqoM6B84uuOfrpjhRiu1xMTQuGCN+17CrQesPiRhQda
uYIpxp0diZLIEXc+oy1WYqMvYqWh6DuXyyiqk80UULJQXv1pbcD9yEzIb0mrEQZB5mWGtV4xXfp5
JXLVoGEcVjbj+G7zCuF241bD4vaoWccPFHQqupH4Uw8NQfCEPiVQIw9OZCwOY9YOGqEmEV5rtdYT
4xZ6HnaPZ6sA/nxIA8TnHO1WTBFQ2zZJnSnuDiqwc/MNjKT0gXWuJgMxl5PKdQRoDnFFcrf0L+wg
GGhpGiasegr6JyKA12mFlzJqGkjdqpGjlLPhK0hFGbqu5yHXXabxxyXzFuA+dVSn6qZIyCK6TEov
ZJDpsEaxC/VCjhMQlM/ZPMufXGw6gFvXWuIOHDs8jPs2XdlFzqpbxqY+i9tJR60yxcjWQ56WiM6z
THnkBJEHy/lqB1+zkbWYNa0MBGSp47a1RCH+Qi2PWRy+WHltVWIwlt4KtKI3Bgle3ThbpqFco9mp
zncsjWhI9bzB+O7tzfXt7cS7mnqD/vX11c0r7/btvXd/6/W96e3bu8FI8yaju/Ht3Rtv/PZGLDl5
nrCsouvtajWhjweyVqnBMJOZW8HndwzDVHSjpUTDZKQuEf7hE2omgDPbitIiW60LWq9t8bTBVvQG
pW0L23FUkzoUYqDu7zfTSmRn/e1EhbSAB6Kuz6CJOaMx9w/euzlwu1U9Fgki9qV6uFxLV3TghyT2
Py+CXvgEXw5PvHGxAQuRHuqqB+W9zP8z8PhiGLeEpikQtLQTRWybqVxSJQTZjmKgZy85N/Q1QseC
WHgNB+LOzUI/n43ozecuEqsSWMAEiOEBnA2YPgsdHAKb0ZxPwKH1IiFyxeofCCjEmq/3geUpS5oy
G6Ii3TYYBr/k+xA+ivI5K5e50F0Ti3obaQu5wtgQ15SmBYZlq6uC3qeP8osIdm0i1uhaiaMESFDo
2ZBF1hrjLy6LcptWN7tzmgLV5t9gIAYG+gBtnJam3jDLSvaeNmu2Fw2tSFO9VXlv/pB7cfoIGaHo
SdrKMC0EGjbdErg2j6GvzUP+cQ6hf4vG0FlB44LNP9G49HiERpN9+gZfa5jAdwLqqylNsyJhbMGF
OM5KzeDlyx7a38EbDG87ugP+solWyllcVO3rukKwB2Rci3jklAHEFstcMPB5LbLclBL3zlFyCpqt
PgmEO7VZJ8sQS9htAgJqB8hQ/TlNkixw3V8YXfC9AxQ6zL6oDAp9OF+X5tOwcfBmWbLPFz/VsX6L
RskqdIMRpON5cy7V82nBXORYcq26nWIUEvQtxcBUwWqmtlJxtU7XrJEgudrcqkZKKNrU2C+e0uCe
FjV7cRCnKo+x1M4WshcnnZML7ivcTVYDrFjNhYGHltk8DlybrxyarVFh6nwXVGL5aJJB7tP5K+JE
eOmIleh2ehhGKMS+qLmQV3Usb5Fnn5/Oa51uCUPIuUQB1f41wKd/yX4vwLE3gTVfo9kkCrpcBW9H
yo4TbkjZz8InQaJILGq3lIToRtI6IjFtsT7dktoh0NoWtCF2w62P7DfTt3fXm6xKJqftmR9FFoYA
jY+gxYNX5nSxj/afI4j4ZC1IpAhbG5Kek3PokDLVMoR1pBjMJpkwB0Z4a4fRc7IF2452Ew+EHWNr
9853yDya22sG4xtW8jji0HCpUxxiiKl+32rOjmzPE9Wrz3mIXJPnCDqYoblp5uu5Bwzy2Acz3Eyl
P3nSx2SCiBxbsMn36UT29+tEjvp9O5EJnaj/rr8M46xaE+F7KOPoabWd89iD/gN6EBip/24sWunL
AScKgigyfUt9xVKWx0EltdrB64rhdjNu8FzWbCk+NBDV1UF/0pS5viB3BWn/jN5jQe95fXV/aCt0
675jhb4JfrXgAcHMCx559vGNaVZo4VqaxTd+e5U0y7Ra5x+GqVtRPRgHeWJ92nukecz3wbguF38g
ut9cncvAXqxnW60zCxtbDlOrdfT8Q5w+XGd88wJ8H6wQQbD0xFclhZuvp9nlkmWQLVh4Ted+SM/5
qrAKodRma8NOERl/1YrsZiN8x7e34AHs+e5NaCsaPnkBt8FfTWVqyZlIabDJ1wo3VpDb7xyzdVYD
Pdow6Xrr1cqVxfK/9GORM2DSrG7mWqR1PgN12VbYiLWjap/h6vv5LpDafzonrvu/nlY3kwiO+Wb9
Zz15sYqqeQ7CN9bzJzsnciqctM6EHNvH1dz3TkKzoVkLcsGVnjRxkWVW22bbVRWRSFb1qYzuD9dm
/BOTARuYGGyjgoeCQ7BE/YUliyMTH5n4v4iJIxvRCK+NKvxYuvEELCSbdZxVuyz4Vn4+ZyA35lyD
XqzamMO/X9KC1WfxiKX9dfYGfGKd+BC+mfgue9wlsIYgVZuIircKV7vWnZMj4/63Mq5zZNwj4x4Z
98i4R8b9QYyLtCPlHin3SLlHyj1S7o+iXHSk3CPlHin3SLlHyv1RlIuPlHuk3CPlHin3SLk/inLJ
kXKPlHuk3CPlHin3R1Gu3ti9PBhPuQ+WvUUeP9KSfcMrK5olX1lJWFDj2jZbEalvMCq2NUowb+QL
UuIdPLP9mzkHm4V8v2bRv/OGPmR88fWxq8mgV70I/S9+7296d0z36++OffjoyWMHOZti/RteHSNB
sPXqGD9Bdsk37hJj1VzPl+c4EavJE1asJHqfgHi9j1nhFUn2SZyCuGrD58s3oQV25Ie5fKvSQust
sy0kOqG2I3H9Pp7hGKttss8XaWNm10TmWVZuITVMY7VLtoVYjdbb6pPYb1q9sEL4qyD2N/CnHrL9
b+Qh7HzLntmvvJGHTLU6Wph3tsMnCWvtRhw7MGwdy+19YisgPxaGv8B/Dd01ZUUxybMFfZCRyt4C
fRjtnoq4uBCbH1dXx/FnGRg1nnmV08VMXuKHd13y2Ii/lPP1QvIYRwdCijEtysu4lKezQlTB30lD
bZXWfTNQv6jO4TudJjQxHvMjuw6Vrx031RImc2zbVJvVuW6yJX8KpCDPleJnpKzKySM2DQeftA20
HWaHEEKJasHRXFc0yKZeiAf3mUDXSL36GcSjeut4FOqOSLBbd1xwq16lKxtXxxvGebmkyR17iPl5
0qcbU93m8UOcilDZwOAzyyTZbh5AqOPWASl/+a1hnOrQhsmMpmU235xdu6WCPMuDWPzU5/ErMGE/
SX6Nk4TDMFHrmJQaTkRpDcYkoak47GcRJ2AnSQYiE9qUuYYcg2sfbg5GRRibAhF/Xp4uwU+tsVqj
MYj/NTSHkZzWHpVl+fEtwqtM7lV1fMi2ZbTb5pRKLTBJWKtk337tgxAcYOaOPEenSmKcH5dAIO0H
JRD8/NnvE6ki/P0SCPKdI1VTDarz+XlMxX9UoRo3VeGJasfUu35cnriKqub0s6vWXuPxfWJEBrhe
7tdvrD6gdR7suwE65OG+GxqvJIwPVFLE+x7htS9WNyxxyfIDRvmNYs8Ng1ei5vauLJPyG87ODRRF
cB1pe57gsBDag1dogjC/A4/XPwG/QeqPYKzpBg45YMjndlXU+Q1jqxIrsLCoJF7U76zjFzWPki1Z
SMPiSJgc7zxhOFyWcp09xAFN1MHkrfz5A00Z5XmWi59TcLd/TEG552/l3Szn/ur3P0xFUS7jlOZP
6tUckr6Ce031lDi4xOYN1lWbF52IG/i5P77RET8P0lXXvw+invcHl8OBQUZdZzwedolj9ruXI33c
7WPN1EwC2YxNLv4Tfi+lqXe4awxTA6iW+pKf2CJ+saRDTK2HMSipO9i0se50x2gAShrjQfeSq3up
X9pjYhnoUhuCkrWfpijOfuPDO0d2VqEpzio4LD+DAaTkA3VxJn9KYv1zFb1FdadWeDr8dbdcEX44
Wxb5GZDP2QpxQ0dTd3Z1tAMzisiBt2w7Zo//TgbCNqhtgNrjoTHsI2R1Sd8Zd8nQGnYdcOSuObIR
f7/20jLHf4Pa8rdPzq5jPwdvPxuvXKg42yhTc6zNxYZ9qB/s2if0jS37VEeC7fF8zcT9Acaoi4k5
6hIyGoN1RmaXYAsPByNkkQF+lufLC3Vwvo7QDjjfsgjSI/UlNDk/E6nXr8aejmk5Pe6mo5Ftj7Wx
2cUjBxptNNB4NyTd/uhyqJsDDP3U+RvddAt3Q2Fbj3YVtinnb6FwfXmgA5Gr0NcxzD4eDewuHhqk
S8Yj6JbIRF3CzQC6Du3L4b+pu5reRo4ke/ev8FGX5OT3x8nIT8O7bbh322vsbUAWq3oEqKVeSe21
/esnosgiK6tScxqAJcDolpJNOt9jROSLyMis2+KdTbuGO+gG3MEMgxnhnkx8wou6eIfPHwLM3IvM
E0RZwUMgIugAoYhpYqkNwthUpIi3xTyf+wJ0vwbd6Q5Bv13lnEclYYEBCDxZBy4JVWDbwplMQlSR
MGVLhohFjZObiko1oJnj1y9UXB2P6+h06KmaDAQMa3+4vxqI3kkM2LzQ5E0kkoIvgPqkxAprSHLW
BMMY9zbf3CEu864A90w1AEMCPhzmxvHz0wGSuPEJT2ex8P2d4WZnwTbgzdOPwIUpPOUUA0lRK1jB
sic+gt/YkngJFAxI6k2ZyRrazFTWL1bsDaYRTwYncTFDc+n/ADR4NcRkMRbjpyg+yKwhfkYH5iKi
Jy5TSTRTPtIoKOfltuaymHeN+dDC3LMJ8/65+wdk9Ts+YRZix+m4cCTmogJNB8ADRFIXGfE+cfAT
fLqcUxBK/G2BLyZfA+/X6rVjg5zWyvvuWweGctUHSrGdQtzUgjQJwRETLAgVGkAgJPAOz4SSJgQr
A70t7sXc57g7flinMJ3YGwwRiPuPLw/8+m1zt0MNy3Ly0oJKo65wIpgQxMYgifOOBRNc8czeFvJ8
2hVecewbePthwvvXVRFphqaN+iDaULQzgUQBqkCY7IhV4NMxMMEp85pxcVu8f7UUUScaiqjTZr+I
/9frh+6Mgki/YwrD/vlHwK+91syXQgp1qMVVJlYrS5LSSWgfMyjEbamDCdFcGExjFUVWNezBov1X
KfzpfwVIhvvP564OUAg7JlFFwV9AkjVC+QL6UQWQCII7ICkZTaTIMnNHc7HbIqmBaUZX49WauEbt
o8P7GGvb+tR338Znad6B1sZ//sMPP2CWobXyzgoSdHEQNMGYbAqKWA4SQ/NiBd9WFjzhmDN0Hqpo
cfu15Or2WHKraLl8yu6nX8ZUmO9gFUVjYpB3SjauqEJb5XTOJEuWIOxIA2EnQj5mjKEylJCM3RRJ
I5YZQ+fnuL78zZ9eqpjagypYMyUvkTj+d/n07f61vygNg2Jcy+yFg9DrOKgrKiASR6DEUR0iTRH+
vnEkrqddI1aHBmLVTRrjYf/4+f44S1ABsDLeOh4yYc6B4pZMEBclZGcclKXnoLjLjdXFfNY1XM0b
cI2dtORJfv/Yv7zuH14v37LjOwmugMuu4yZlXHFzFLDsKGlJyBySD6m9pSimubot9gaEmoJDy8Y7
Odn44eUL+P0kruwoNhhTIsciifI0Y9klEC+jJGj61FsPWkPeFvVs1jXarqGh98drvQmfoTGhNWon
sAocQCvLANl1UYaIYMGXQTMTqbziwYaQ4i2l5Glf6m/15GvQR9MA3fNLUeHpy5enx/j859fXp4uy
pBTgy1PeJJIJQidJssWcmgpLPIUIxwoLXlGRPFPbYGCFpCZioA0iBnP59k97xc9/f744u+anzQ4u
LbMksgSrXKGcBJUguEMCnSlNrhS+Ffw1gAr+gTbgH+glkeqevv45wNuv4R3XMxqKKh63diis8yL7
TJwpjOjgINSHJBVjGwE/n/4C+dBAbvVwnJA/911l/0KM1o8VJV1iVqaIk80DYk+cYJ6waIoUwUP2
vBH/X6CoKdi3vnyM86cgsGhku1OUIQFs3AcrkC8IsHpqcaMjwgrvEy3EhGKNYrYYvQ0GahA1/r6h
bA79cfL92QMbYIWnOzT96AWklUWTGC1EfgPq38GfRJosI4uBqo34/XXyNeahofRhcPrOH/bfHq/f
uNEKZT0u8MVSVhSDL1xL3PiEb91KI4iSqbiYqcppGz4/R7CAvi6kd90pyUHoeDvtxdnBiLFybEC+
hECJy8mClSdKvNCR8AJyngWWS/GbAD2b+3c1PNvC7CbMz/2Xp9/7eYSXY+mIleSkiJCmgHIVoO2I
YyoQbRn8By8x7TaBezn/BfhGiO+4nsCf23f2Lw8XL+cCIxxKPJqyg6UdMHNIXETgBTdPYb03mrsU
JVd0GwJniaKmoJWudkJNIe785gO2Rr5cBI7GFA6Wdl4k1oYdmL5wjnieYYmTmhnlk1CBbQn/HMKC
gkaUh9Ep4i0e/nHHqOVYQsXqGLc6OwkOX2wEEqz3BLNXEiC/KVFGF7zbEgldC3/fCnt9v8RfVdSm
KEjHvJahQ2D/gAmw1IUgwCEiGITzGkKjLCUowzR1aVNcrAHVvLTKzN3gFq4BH/O6v3/sn89PGLqK
IWRGoibQCqUQBT6cdqAJIAEONDuSlfaMCe9t4BtjpgGpIudI110nMLhyGpCXL9MW5eQ/bnfef8jJ
gZVwYqgCkUxBH3tjGaHe0pAY9cGybdGyBLOgZN+ghNPFaoKf8vpwYcOOCwpqCQyYmYdEQFoYLB5D
zmCYg18jLZLFnL3dGh0XIDUTvBFRj0IsmDg+vrwcr0nzmDwxh3sOlquYJSU5CQ9SMjJilQSJoSGU
lCKzL2FLTMyA1Dy0VpajWkbW+8fhIiulMSioMZ5ywSy3ANuapIhwthBXOAgMHpTOUljL5JZYuMKo
STCNeunRiKleen73y/3iRN0dk27aqVSFFpCXnBRPIbfQOhEfvSKQVVrJPARXvykqlmAWhLTixHVv
+vwZl5YuwSiGB0mdA0vQhGbPYXmFQBGYKGAdIQSZXLHab4mDLy3oh0ZB4dh1C4c4PQLp2rI4BgaU
3JBjBgvZFlABEdI6SoJymShRPHfGG523RcEMR81Dq7rai+Xq+Xje7Z0UBa4Vp2RblBBT1p6UgNXV
DHbgLRcQMGnxJnNvZd4SExWSiopeuwYVGB4qlXV6AvclNJzEFTJheeIaS6ySZWwqhwwsRFgwEvOF
K6CZe7MpJmZAaiLMsUXEsLAJDC3TRBqRMkepg7CZuAR/CE9BU1HDiZXU+OIwYwtbi5Q1nJoU29Dg
MLiwjvFTqkM2c04oEyJQrUnRDlcP70hwWI3GFo+oIWvXeXOczNEsKOlalAxLSvaPx8PTHxddoemk
K4SiwhqW8FyCx8IFKE7sEnZMFpoERNiyqWykQlJT4VphdG8WLvP6vO8u5StOGfZHi9OWpMOzGrCI
KOyPLtjxqRRhLOmUjXTmpv3RKyJmOGoaDi0aDsdJUHx7/P/7x+OyAVhTZbP3hUgPolKAiiI2c02c
ctLmEhmz26hfzadf4+4apeq+P0xf//Wxz/M6tdaRWwqrZnQJvvWIsZLrQpSXlEPSqRPbRoS8TL8C
PdDGejmwcWP2zSOHd6CT0erluDGbWC4yEgZAYYUIBXtNNAkiYI6ZnVJYsnrTCt+OTANvqLuB26Ef
qqktVi8jpz1j7ryjKheijQF9F7EBk4Pc01F4a6MMpz3jt6f29kIyiEa9YuyDNW/e6XEnuLQ7dW7b
MDYrmZQjCackisLGUOkJWAyET8NAbYh/Nbk384FBr834iO37U0D/v4f7115cAhjT40ZTSjyKkhUB
ZnCjCTIDH8CinYCoKJWisdz4dEc18e8qdMY2IOOyfvLcw198x64tJGOTfqYsFEj9QMrA2i2UN8B/
dCB+qU0paBZuKvSWs67x2mMDLy5Upxz44a8v+526FpixS8jFZJj3JAcJXy/HDhJwVgKRi7ogpGG3
Pp8xn3SNtpHlweB+0XzqX85XDlyPZ7Cxl3JsF+IyFpktgS8XvI1KSayLmcSiOLVeeEbz7ZsEP57u
b5r1Cq5AzfoGV6/VrHXrlt2jPorGkafxYob77mXsr0TCqBCnOkmIPGVWiGEcm3WjxRilSAGVq5Nn
Otq0ufNOE5rFaadpuCLJNBTf0Rq6OImJ7/+YCqTMIz/wJwbMbLDxSBHFAqQBEoTfGEoyCF7JYO0T
Um7RpM5gFvTASMWMbfQqHPesXzbFw1t/7f94haCqTsYjHRvLz9QrBWEGhBA1GFWdhMwxcZJ18Nw7
Z6Wjm7MdhLIgBocqZvadbjBzXB4XmOxtFY1G4wHjoNJDJOZBg2d5zklIkRPuUlLGS0gYyhaNZ4lq
RtbypZq0QaxJ60W3cLTx+oCffrl+KtjVTpx4E4aN5+FVMIqOWzsgNzUVJHgKXidyUU5YbW5Sy/8X
3d5LSNNIxc9A14Go7xhb8PM/P41t8GdLgndgAsKtdYE5onUpEIcgAfFSOIhDtFCZDKdqW4cERhAz
Psbf52wMsnE8YJCH5fEAmMDj54fRtfBggGTjYd3xJ6zkFQfwBShqpjlYSobEvKREkrfJUBaN2tgp
zF8Azo8f8qcZNdNQzc5haLDTHab83HcdPoz7cP+AJzEmEWiV3jlI2kY1ZI3MPOFpEqqJgFSNACmw
uHOutDMFYvSNm6cbGGoO+vUuECY+zTtFPvSf992frYsUhOVMuZQJ43iFiDSFBK1RG8rkPaSOPsW3
L1I4fe7qOoXTcDXdxh0D4L3cjjnZ4lqjO3RqmSTkz4KRKEGzi0IV8QWyk+CjgLdGSsf29tXE6s+a
Ta1+4bv5PKQU68mpTi24/K9v++fXv05TZDuGziaZGnWi9yKzCBksrF3gahCGicPDOCpZr0NROoVt
6cQrlhlF18GKHm1XwYgx5w5rUztxs7YyWZz0gUZwtwRSSDlUij6TxKiJYGIQvssbVraY4nlkPj/e
r8/LwOB+mR7htcThaf98hG/PqB0fj1GNP2ClJNCkuActW7CnPBpJnLWJWLzsSMesYY5blCMXUDOO
LmMVSwPla5ZgcJlEQtx5wOc6n4wc3zAbwhFsTZXBBAXmrqjK4JwgcoNkgYCrlpCLSM7HTZn7FcI8
fbwMLohayVsmRH8cjlXe+PuoYr6/s6MUsaOotSDApMGiQg4FwwCotAwLjKG4hURdzo5vn5fZ6yeQ
s9dOA3O+IMlbux8OvmlYu9/77sNYhjrZ1/lXcbItzkrhEF+ISAw8UTpYmqmFxADrNhYz7qLfF4cj
vDmH48CCw/XyKMDBpnrW7+nTx8uutRZjcddIL7TmIF/wpg3BIWR5YTGXikImlgTj+X0TVQGv+FKa
rfly+rLf/8F/9PE/L9IP9O9IGRUxmGQyURqPhRqeIFOQkeicTeYlsiLpu6dsjr0izTm5Ju2gLqcM
wwf/aUVZ4q54DYEsJkipBLgi5OmBQ7rppLPeGHWTUwj/XsquyCvCDqZBWAcSuz975c/3L93SLUuJ
CuRqINpgE6bF5mXOCzZhMi5EpmCC798tr8grxjq2bzAm6MUv7x/7/bN/+NzDNNbuSV3Izmq8ICTj
FUqJuCw51qiTUTx5bd+/rTUoqCkULQrlftq9+vR1/wz6ruWr3HBHLSwGhuPVOtpbvF1GE12UyXhh
IA3u3fO3xF+Tp0SDPCUWWqQA1NYmSQa2vCqGeLQ9WIAFpHE5EgN5cVLaMWU2mQXM8VS3L16HFzS5
NU1HcZhsDN/4EWl+vjaI2bGoLZkWxSVJcNMfM7lMgnMQ3VyKIHB1NEa8I4YaWCuijuvDe0z0ltu+
ygUQbv8fH/OPc2NSCrxR20A4M3hgU0sSNFfEJwO5JrVWhE1uj1zAzFOlaaxip+8b3tZfj3P+WP73
0z/2z/2sVWasTY6WBGqNecUp8cEwgvcjEVtAvnJQskU7oCqprVcn1xhrfoZGJjlc3ezHD6f0qsGO
MZwzrjgxJUMmGQKIew0UcYjhgfLEJH8X7MwRVtwMssWNtBM38befP318+Pb5/vHTt69fn66XAVQs
gSCIVmoixxQoOA0sMYM2VJzlXvji3gFLb2Bd8NXIEAd1uTYBq2K//Xx6PNdVGJixOhm09jJLRkw0
eGGCgiBkNeTVjhaKN9MW+S5oWkGsGdKrLgkmO0qHw0mtf/gAb54OYq0o8lLpIhQpSqG/6UQsc4pY
l73NOiXOwjugqIFxzpEc5DqjkXgWfd0T8dv9sX/C9Qzv9mTWjdcwcK85SiSiZYSgLcD1LE8JFLpT
JjJjkoub29MekSw2tcexmhqz2oBkiiu9oGb/7Xj/tHt9enrAFlqPv/16+uXC1ciUEzRplTiYkQIt
7kECOMwKPRXOBmey2VouM4MyX/lnw3O+lFi3YDEl2bKejGT/3B/v9xdpZATbMcV2eOZ5PNdtFEMD
AsENEZy4qAKh3KYsk+M2bq9HYoSzsKdxrOJHmhY/6xsDvz7fP34ey/XtRglIOZLWkJPw8XYrCi4X
WKYkccWkyXiOy25RRjaAzS/FW79as3dcF5VBUJvFBvjJG/ELGO30+zt5bpYY/8YjsS7xiA1cQQbs
+nMB2IP1jxvn8M606JPdnIGNWBYGNo5VFCnZNShSyx6BX2OcZyU6BpAD1EFc4uNlaSAsAzWkUI1n
OKzWxmzRnADGjBH4reZCtczF0UXwLs8w/4WvcXveCzz9MB5vKYFqCkbC8A4CnyEoGc6IVKA3swpO
+bDJHHeFrqqqLF+sCVzfdwuD/ZLA+684r5fLvC4zPKmyuaHFYrn4Z3VX1tw2rqXf/Sv0cqvSNQOH
2IGu6gesGd/ESSaxe5aXlCxRjia2lLLk7s6/n3NISSZI2lP3YSq8qpQjA6bI8wk4G86CNaqsjRnD
qRPx0UiSKs8yq0QwdpK+lB5JXZ5VzpT41WYEv1VfGl7v6of3mLB2IHnMCSVsMAE4FeGRY1KmccRw
AXay0cl6I1yMYYrAPUdbN9DpmT8poISdN4RSMT04zl98e0FscjCfBU8JDMIMm1h5CiKAAZ8z3hvD
GDNiogf6PbKKg/3eXImbHFrUUvN+GMT1RbfBQwuZ4KyxgrRWCWznSGLCzjPWaBATShItmIxCRi/V
JL17XZqKuLrRDg+AynxoTEujbkZ01+uLI0hci/M244lpbVBzINI7kKECFpgHS4FYngLzznAQpFMN
fL6+6CkW1xcFNFYNLUTZeNALraKxnzqGz0Czj9Ro6bA5DwZDcV1F4rlBH5+PHOMPPeeTUry6FHVr
E3eGC6CwEskQqLofgNeWfsVMhX3B5XPIgmdHScTmBzxaCfahBLVey8gzxo3RSeZjdOgZtMhoRkuQ
VsNzelm3kZq9jXYIp7Hnot1tSsG7tvKhj1WqtCbUYqEGrmAVUW2JT7rKTkod+PScDv3AmdNYFx9V
seEiUpXQvajnuG57QT786Ao7diqTrqIB9R10rcq4QDjGQhuaPLEmUmqD46CCTXExDenqIDacLKFT
ixHobvrpPUDzwana7L5mbTGsieNpBqnGQa03oTo0K2A6ECMkN4Khyy9M9Hjm6CUuzmcOgyVGw1q7
VFE2MBHrv/YXm++PLUTN2Yw20WlBNJqGXGA2KygARGOZDHgnc2CTNBKPhHRNxeNYgQwdCSBSbKAs
fXzYblef6vmyfsDcMI6MqSnIy5SzHOQYERbPQR3sPQ8mNAHprxjsRgPK+hQR6hDUwagzWqDE9BhK
i74X5uPXH7v1YtfNzMANZj13ldJEKI6H6QLM6Mp5kphRTitHdZikBv5ETReh02AJ0GqoLSnNbI9/
/7Fu+ijl+aJuQ6QxMho7qzX/N/WYkg5BGUI9BwZusdBxDIKAGh51BlZk4zSP1Q8UdR0Nh6ECJytG
5Jydy4HCfbd9+Pxjs0CEGi0AxT9YvRW3njCPZdwU/HCcMjCKeeKwyIxmE00zPBBTaAGHsRKdxYgo
s8u+88Xd3j7Ut3CTJ8nY3W8VhmYkBytHY1HE7AGnCDhRmyOoBNTnLCcp0IZkdSXbcLbEbjkMZVHz
6lRX/6/d3f6pVxMVrZ0LIj9FG4mRDtsYck58UJ6gY8AnJ0CL+sntQbqPXdA7pyMifc5Ome/384f1
7hRax5v2GDypiPYXw9LpIkfiZMyEKiNEDFLl8JNznbrPXBLL5QixC9aTP+/mm9tHUK0v4aHv1pvb
7q4wYNgHlNFeK+xTCu9sZooEMNMxBkdnV01xV/Rp6myJ/lQJ2eh+qOfH9bG4/34qNo52uuCVTJWq
SNYhE15FR5xwkQAjickZaUT6yX0In564JHRM9N7Up5IX68V288dTSzrR9Oj0npkqOFKhO5r7JDDS
D0SJsh64J/oLw8/uwdd56oLem5UeoXfVTyBuDiKL5MHjbjBNhGN0xkeLtnQEYYrZagbznGCHyEA1
DVxP68B1SE/X7TCYLCCr9YhchcFh4hoowPgh77aNYjz/6+Zxs7yrex5lT52CDUFkZZpIeIDORWCm
upIGu5K5NAGjqEDDN2TsXj9L4WCmxM+YEfzmbbnVNtXzqt7tPz1uNvXDxeZ/6sW+XvoDdE0uj1Qa
mzy22WE8AGQO1hyJIHdjiD4rjqsNjwV2r68/p08nMp4Ib/quHinG8aZLfXKaJaMEKIW8IkIDA/Mu
Yz9mm7CuZzCZv17O9/PXp3CY3ev20brf0GvNsQJulMShA0Bg80YvMLw16SRskMAd3Os+qfABzXeK
MVsXm93rl6E4f4L6hb8qgR85TVIryY5M/JAFiZ/Vi46r2oJcXHkXSFLYCyzAajU+J0xKUxyUHRD8
aSzb8oUPLp5utRjhRMiIDqFoRberdOwiuxtt3VUJl3WsSGDoKk4ZmyZHT7IMIJekqwxPE2rd1Sem
hGVM8q6W9cDG2cBnbfbhbr7b9Wr0+GxMACCSwlwbo7HAebQkCGE8xeA946dp6RQkFfZOMdPF68bK
YYDMjTVipPTM0QF4ARQ+bOZ3s1dMYKgV/Gx6Z9joFasIo9iUHBQ6YAPAGlyUOinKHZjPUz2O6VPW
8xj3p0sA62oEwLrfWhO562VTd/6+d0TPnUdHjMB68bHtkmgNk1gWXCnOQgrTtKxLinrny08TXbAW
bNh3CwefYrE/YyJA6LaekxwUsab7llIuaeZIigIWmACbEUwnTmjK1DEfqTbmnyvpYUBtgRVfDcUP
DPYXlr96l5qwJKTwYXt3h07STv4Dl4kbEPm2OYFvCvGrqIjmTCjs9P1zWnn83yfwQ7K6Z/DD2QK7
+dg6WyjVkwKf5n8G+MiH+flR1VRtl2DeGGVglTfxWdpbLE0Odrv3VJCKiySqQOMkghe6DOp1n6Cn
gQKexc2Q6S+WGCbTajbu99xGvx0dNsqct+VVU44azHVYSTmB5RJhO7ogJElgoYZYAbsK0yqxAaSM
BSUMiCzwGatlsahVP/gF5MHdx4d6VT/Um27oi207AkfYcclZLElaVYRrYPE+YY22LHSllfRVnKQi
0SOrWzKqnCkx02oEs0H9j1CDKbRfo/YwEq+QlKfYL4Qoi9xKavQye0Wkzt5njBal04zpOFLV1RyO
YyVMw25sdLEaFLRrQxUONxxNkkzeBs4NiRqPvlB/8EZUBLg9lr+Ijqk41UqSA8J61SQH8wWCK2FH
EJzPexor9nG52y6OEVZG0XPQJOS5wJMeKnlWyjrQ7DHiPVLMC3CaBKeUAhyzzNMLZnh3oKannR6H
S5CGZTdhcGAGfXzY7reL7Z1/XK0avaFR55s2LWACea8cmIMGzFfq0SQHwLAbVhMKn3Se6NFqh6Ly
dLUzUYI1Eh+DHr0eWB/c4/4rGD0SQcLEN5ZpZbLOxAk8oA+6Ik4y0Eit915rBuxqknuwIaRb3g1/
7yKyHNPTl9zQfhrOH6tOFOOxaqsAJYqp5ogncutUyhk2FsafYW0uqxUWTDRg7VBBqUj/DOpCd7gA
SlbDfbbUi1F/8EuBekI6bVj0hAnMw9Ug87wwmmRhKdiBjDnPp+cRHgbqdYcLoMxIKsnSLvqJXeFu
+7iEB9lvD/c8osUExn02FRVTdobGZMFgrvCINXAshgLMG5QrqZwVNkxy2w1o6zLy/lwB3nykUsBy
vhxEOV6Gz4hXEyAj25TKoANNMmOXMUxcSpgKADYhFqDmlMYQTZikRoW0dNcV/FpAcjO28Va2H8vw
pt4OtCfcc40WkBmLLgSw6JzH5HdmiQnCkuhNYlIlH/wksekQ1S18+zTaRQqb2w+QqjldjXj4/N1j
vd9uUcp1/KHYpUAFQwTYu4RzTMTJVSCMBaGl91YbPTld6URJT1k6jRcQcV6PQCSW/QBZ9NREUOv3
dZFjoxR1UXKQagGbEwlKfAVKuQjepaa8cppknF6HnC5KT6MlRnJouNSC96MA2t6ay6ILaXmCp8B0
0UlFAqsHU5KcIdZ40Cy1rjKwoxynyb5bl+YyFP1VOxxqZLoAcKRWLK0ltcMKfaBqNGHqlDfsCtVx
7XCfMTBYZMb8UwwwEhz0TeeZY0bzysipFRVqyCgrPTZDBSpj+ZO1VH17GJ5it94hEbCyNvViuKyk
Dt5LBwg57NOLergRIsOvXjNqsHX3JAOvPp4oCyfKumbLyHQJoJUjANq+3wVPYe/Xt2Mb0kvJY1SB
GG8odhDwxPkMmnrSKUVjg/CTdBFHIOnySFI3ZL07XmI1H8FK4RbUfdfBHjggpln+OO5DrmzjOUhS
OyUVyRw9VNGCPoXVvbVMLmotwKxJE+wncCBm0FTgMF6gpMwIozJ1g9K/4GUI8OyVEq3pUsnMXKCa
OIrnMsZb4iWtCM3WBuNYzNJODhEkoQcGDhU4zIc9qWCQsdWirdQIC+b7A4Z5PDUOZ3gS6mKqDKjd
JCuBFd99Io7DOgnJMh2wrVJQPzmYq//kJd3DPscwyPveb3h3v9087jHGZY3qdVuD1zbdAJLVOTqn
iKhUbIsI+qoSRDpgKZViPoiJJuchUddHooolUsyUiIkRvjLH4ruHcL/H71ug81QF/8BLKuC8RnBK
FEcvJLWZeI2VJSQVsfKZmUx/8kIpHrykeSTRtZ6bxbGO6Ym3IGTxxwakz+KpelTVhAwAt/QM7InA
sSB5CGB/WYrujyxypDyJGH8u/c8TUWKxGNsxdd0zsdAF2QQbNdb+Z7hfk2zXSdYwlTCUovxFg9Sl
TJw1nCTqQTYbrmOYaj7LkLCe73UwXyA4Zs7XN5T3EGxOBxoLpWPV44EtbQNLJTVeJgKCx4OSnCTs
p1yRAPDprJU008zfGFLVPxApJkvght0JYVCovun69XHzbb25ffKqKY2wKYyskFUGBpYccZljID4Y
Y96GijAQ7DGHDP8mGVnRI6rLrMuZEjEpRhCT9hiy/LVe3y/nd2S+25wyFoTkTWfmRrSJilNgViQF
AYZGyIAby4kowZUyVWSZ/+Tw5SEFBQBLNaLfrQadJBpXLjzbj0NACS4UGqNkyaCrFaxQxyUxWBQp
GxeDoYxOwtPR91K3NPSd1O1oF5gVVUMmtKKmbx40l4+dyTofjMQYW2Mc8B/KAp4qehJYVEZbkbWY
5IF/QVAfpzGus6LzmxGkBgJvvX/cgJq5b5u1CDQY8NwM/dFMR06oUplwzgEnzJuWTkoBqhHI/Uny
6fUVkoPiqyvcOqMFRowP47eaM8XeanrcrRfdw452OaF+FEVwzCpPGDPYFohnTBMQhAqnwKKoaEqT
rBLVJam7nDrDBVKyGhbbXgE7bdTnBtiutD+uIi9AWnFsURE4w0wAQYxLGOCuqIraZeonmVNUENQt
bNQdL/AZaQ9JV6ZSYwz7U32/Ld3TwIsi1UKAvHKgVCZXEacjaJZcaWz6y1VUk+VKLTl9ntSOFhgZ
o0YwWpoeRv+2va+xUnAvP01yE60VWJEOXWAalB/jjCFVzlSoSmvF3BQx6pDTwagzWmBk2TDOYWVF
v7sfRgP0ssgdTyolDiqhwVo7oYrEaizToFxm0QfF/STX0IGUopJmM1Liokb2l1XLHqeOzn3s4YLn
Pgk4MakYsJ/WYPNgywseqEq6EraapMQ/kNJ1mrYjHVyAoqFZyyrJ+kc+//64Xnx7t91+O4aAqMq2
ZepNtjQrQ3TCkjHKoWGbFGEBeJLjTkhBJ9aP7UBJ0Y7tMFZAI9VqBBrdj/s4XXz19fH+ZjNf9xNj
QTEUgBFAlBn2qspNZfoAfEhUSQkKo5PcWKOEjaHWnS8RNGMIDiqzvqk3devJn9+dPCbtMmPcNnG2
NIGwDzQQGTGbMjNOrAOzv7LUA99yVTXNfhEjpBXH+YPZsxYnhEiJuovfaXChmAT8wOhbopuxamtp
OqFMNDKRaCKWSsPaTcFaImzk3rqQQ1NR7mhC4tVnZ5hm1aT5XG6Xp1qBs8+P9/dAzq/wLGF+d7eb
3c+X9ezmx2y7/wqG4vc2jRE0tf384bbe43Lff13vjhO/NjTs57tvXwDHL9/Xy19nVTv29aGeL78s
4Oe+7g3u6v2X3f40Xt74//nj4ZcOVYBAc7/7+eLrelOP3Y8zafU/ds+z3y9nn+rbAl8sBPNhc/dj
hvl/OLNdzdq1tK53v86utvv53W+M0XN2OXuod+slLOLfqrevqr/9Mtv9CSu7Xn7ZPu6/wGM9wrfY
hMLWy8MVr0AR+NsvZ//xsN7Pb+5q+AC8+elj6Tl/M/sTJmFnHD/zhXsch7r3wY843GV23PfPvn6/
+HR17d7Bu0/pzcWH97Ozw/9X//UxPXfR54v/bubCh+v3V7NXm+2GLLbzu3q3qJe/zM5+e3qNXn6a
O745awr8btb37UIff3H29vhWtlecTJPxl2HmdAVrr7i+mK2bMmurNUA/eFFVna7gs7O43n2f7xdf
gSduYDs9tgyse4Ew59Vl5x5tDbeLDy8hrkT3Hn//PPv7xdXstmU59XKG3LH3VOfVm9MNZ2dvgTXU
dzOH3/fsw2ZRj9Levcele/fuQ3jhkajUuJYPZMjTFbeP2C30O9L04vehZ2eHJOoZoPx9BxBsVtve
34NSU3wfn69ceDt7c+0+xWceS6pzenwqauCK/Xzx7cXVTOW57l7x++WXhhJ39dxapuLpipmanbVJ
yrPLZjuNXsHEE1YS0P3yJbor99JTaUWPWLHKHK/4Ej68/3z1zFOpc3t5WpN4xbuL929TvLh6dlWZ
01NRTfGKq/SfVy9CxU9r93DF9fuL8CGm56+RknW/wYOHFtgTbETc+S+vRHYaO14xA+Y7Xy7xPHQG
Ww2W8qsOI/vl7L7hc89s1nY/0KclMrOzs13TimZ2D1bqw4/nKFdvO9vpH2dWVx+uGob5Erjn6rBl
jVSHK/51dg88ZFcQ3xI9csXZ/wJQSwMEFAACAAgAlYQYSXzdZ3brOAAAPR8BAC0AHABhbmltYXRp
b25zL3VucHJlZml4ZWQtc2hvcnRoYW5kLWNyYXNoLWxvZy50eHRVVAkAA4ovvleELr5XdXgLAAEE
9QEAAARQAAAA7F1rc9s2s/589Cv44Z2OnIQyAfA+nnQkSkrd+jaWnfZMp8OBSNDiG4pUScqxz68/
C4CSSF0cs82k7VT+kMgkuPvsYvFgF6DgmzwLWFG4SvMnyOY9ulgkrPczm/4Ul/w/L0tLlpa9IXtk
SbaYw2flV0x0Hf3WuaHlbFsG/Jx+zJLlnBWnH68v7i9Hp29OK3FRTufsc5Z/Ov3lxpuw/DEGFKev
1Np7WgSvbds5D+HfOIpZ7v4BAzsfWV7EWbptm6mRt0oX/u2hnv72pONlIVPunhes2fAX21RNXele
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
03zZWAKg7IvCiCUH+IB8ANxIiE/X7iag3hdm07vJPyCeULMmD0iiyePPz5OfcfRnIu3H54rQZPJ3
0F0ksE/KDGgiSF5Bx834BJgD7vUlhooL1/mKSjEBCw1diu0kR+Kl9cSPKSn9EsnMjzNUbLFfMFhZ
Qg2Gq2osK0QDuZcAf9pG3XhpdH06oi/zQ8/VJd8TGXTdSWeKuuF4rZdD+iUqCK6boV8LHHuN67vb
78HJMOGuNQ3Sf8Qk0PDrO6/x53d/gpKWkVj8iA6Y2zUQO4D464EuxwBdjgMKUCOVdsKbhWEQhvbj
9+8MeTUG8mo05ISjnbg3tdibnoDVH03IjVS/vrPDp4aN45u5N7/Jt8a8s66ZhSNc89siEuVmtHts
2gGEWIpviuRo1NN3R61xx9LTLGxQ8X9i5Gg7bt/djv8vG9+r+s1mIxwxwNUTJ7xz9ZjNx2CbjsH2
K1LjbZiLMTBvRwrIN+XCt1Cs86HbCFBl/Y+Q/wVQSwMECgAAAAAA2IMYSQAAAAAAAAAAAAAAABIA
HABjb21wb3NpdGluZy92aWRlby9VVAkAAyguvleRL75XdXgLAAEE9QEAAARQAAAAUEsDBBQAAgAI
ANiDGElAPSHTvAAAAEsBAAAyABwAY29tcG9zaXRpbmcvdmlkZW8vdmlkZW8tb2JqZWN0LXBvc2l0
aW9uLXN0ZGVyci50eHRVVAkAAyguvlcoLr5XdXgLAAEE9QEAAARQAAAApY7BCoJAGITvPcV0sqCW
X9fUFjpERURQIEGH6GD6l8K2Sq3R46cQRNCt08zA8PF55AZDioaeDzdQkpQfCJdCpOVVJFWlWez5
tC5sG7PSWDZWzPnBuqyuTT94UkahGo+CSPrHb8R+Gm9Wm6UCfFJYxPE2Vg231plxLC5skfE5qbVF
Yaq6XY8i5QFWc0xAA/Dt1pZux/vl6I7+dmwQH8eIpMIu559SoCfB6Zla676DPLnDlO9DmifGsL6L
zgtQSwMECgAAAAAA2YMYSQAAAAAAAAAAAAAAABEAHABjb250ZW50ZmlsdGVyaW5nL1VUCQADKi6+
V5Evvld1eAsAAQT1AQAABFAAAABQSwMEFAACAAgA2YMYSeHzON68AAAASwEAACcAHABjb250ZW50
ZmlsdGVyaW5nL2FsbG93LW5ldmVyLXN0ZGVyci50eHRVVAkAAyouvlcqLr5XdXgLAAEE9QEAAARQ
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
b3BlcnR5LXBhcnNpbmctY3Jhc2gtbG9nLnR4dFVUCQADvS6+V70uvld1eAsAAQT1AQAABFAAAADz
y1dILkoszlDIyU9XSMsvzUsBkkUKyfm5eokFBTmpeuGpSd6ZJSDKOT+vJDWvRM8ltSw1J78gF8i2
MjI2MbfU4wIAUEsDBBQAAgAIAJWEGEk8wC2edjcAAHYXAQBLABwAY3NzMy9maWx0ZXJzL2JhY2tk
cm9wL2JhY2tkcm9wZmlsdGVyLXByb3BlcnR5LXBhcnNpbmctaW52YWxpZC1jcmFzaC1sb2cudHh0
VVQJAAOKL75XoS6+V3V4CwABBPUBAAAEUAAAAOxcXXPbNrO+PvoVvDjzjpyEMgEQIMDJpCNRYurU
sT2Wk/ZMp6OhSMhmTZEqSTlxf/1ZgPogJTkN00zSdypf2DQBLp5dLJ7dhShc5Vkoi8I1mj9hNu8F
i0Uiez/L6U9xqf54WVrKtOwN5YNMssUcro1fMbGp+K1zFZR3uzLg5/R9liznsjh9f3n+7u3o9Nnp
StwsD+byQ5bfn/5y5Y1l/hADitPPHLX3cRF+bt/OWQS/41ksc/cLFOy8l3kRZ+mubswiz40u/O6h
nv38pONlkTRuHhey2fEXzkxmG92LoIwf5AmYKVdWu9oxehIs0/AumhTxHCyKOae/da5lscjSIp4m
DZltJ+ZdIXPjbLiLn1qo0xkGpTy9iec7oLGFmGlxE9sGYi7BLrZ7hGLDtBzL6lyOjUM2eRuEBjT9
YiCrh1CPGl1EfWKfgB6LLC/3nkGo00+z9HGeLQvj3bsawiHhHh3Z3HSQ55nMG/ZNzvvUpD4Xgz52
LOYA9o7CbfQ/BPfSGMdpKI1BlpWuQallWUYhwyyNik5n/FiUcm6cgYFu87h8VKYvZVhqKFFcBGDe
qNPx8qC4k5Fxc5fLINqCZADHf238DI6axEWpL8CeVbdOZ/QxlAslqzn1o1+8yaA/nJxdjG+u33k3
Z5cXRnd89vrs/Pyk9ozymY0PWB+t5g96sX/Pqj19AXo0RvQur6/Go8nF5c2Z/3+dTh+cJA4D3Xe8
kCEsgRDsMMvyub7pgs/mchzPl0lQZjnMuughYZgGeBEsRteIr+6yVBq0MCpPM24k2DJH0OV6CUtK
uU0MUy56BCabjDCxTjaPV/bYiOh41/3xj2cXr42b0fjGNcKiIKezOAF5xek0CO+jPFtsLqoGcwGX
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
EdKy89fB7FmLE+77mvOqY6wcBwXVXAF+YPQt0M1I21qaTmobrUok2oil0rB2UygKIosofOFCGZqK
ckcTEq8+O8MsoSZb7HKzONUKnF3tHx+BnF/hWcJ8tdrOHueLenb7Y7bZPYCh+L1NYwRNbTd/uq93
yO67h+X2OPFrQ8Nuvv12AzjefF8ufp3RduzhqZ4vbir4uat7g9t6d7PdncbzG/+TPx5+6VAFCDT3
e5xXD8t1PXY/wUH+/WP3PPv9cvalvs/wxUIwn9arHzPM/8OZzd2s5aVlvf11dr3ZzVe/cc7O+eXs
qd4uF8DEv9H3b+i//TLb/gmcXS9uNvvdDTzWHr7FJmKxXhyueMMo/N3ZX5+Wu/ntqoYPwJufPhb+
5N3sT5iElXH8zFfucRzq3gc/4nCX2XHdv/j6/eLL9Vf3Ad59Se8uPn2cnR3+v/6fz+mli64u/reZ
C5++fryevVlv1qTazFf1tqoXv8zOfnt+jV5+mju+OWsK/K6Xjy2jj78Ef398q9orTqbJ+Mtye7qC
t1d8vZgtmzJrd0uAfvBimp6uELOzuNx+n++qB5CJa1hO+1aAdS+Q9pxedu7xl6vZXy6uZ/etAKkX
M5R1vXuc03eny2dn72Gh16uZw29v9mld1aOUdJ/q0n348Cm88pUyIc7l8amYPV1xv8fen9+R/FfR
NbOzQ0r0DDD7vq1nF+u7Te/vQenK0L26duH97N1X9yW+8FhKn7PuU13t5tW3V3mTqXPTveL3y5uG
Enf9EmcaxWWXS9qU49llszjG72FxFR++DjY7u7mJ7tq99lRGsyNWnNrjFTfh08er6xfo0OfF5YnD
8IoPFx/fp3hx/dI99PNTMdM81XX67+tXoRInTjxc8fXjRfgU08vXKMW73+DB3wrCBpYVruPXOZGf
xo5XzECUzhcLPN2cwcIBVn7TEUu/nD02UuuFpdcyoT63p+WkZ2fbprHM7BFszqcfL1Gu33eW0z8u
eq4/XTfi7zVwz/VhyVrBDlf8x+wRJMI2I74leuSKs78DUEsDBBQAAgAIABCEGEmKY96iQwAAAEYA
AAA5ABwAY3NzMy9maWx0ZXJzL2ZpbHRlci1wcm9wZXJ0eS1jb21wdXRlZC1zdHlsZS1jcmFzaC1s
b2cudHh0VVQJAAOQLr5XkC6+V3V4CwABBPUBAAAEUAAAAPPLV0guSizOUMjJT1dIyy/NSwGSRQrJ
+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
eGj2mzUs7l+q1y+qf/lpsf8TVnyz/rR7PHyC13qEb7GNC23WxxkvaAV/d/EfD5tDvbxr4Ab48PNt
4U9eLf6Ei7BjTvd85hmnof5z8BbHpyxOPOC7P79dvb/56N7Ap/fp1dXbXxcXx//f/Ne79L1JH67+
u70W3n789WbxYrvbktWuvmv2q2b90+Lil6efyenna6cPF22x5O3mvlvo0z+cvT59lN2Ms5k3/WOY
Oc9g3YyPV4tNW7LudgPQj36oqs4z+OIibvZf68PqC8iXLWynx46x9ScIc1ld957R1cO7evsM4FSJ
8zP04uLvHxZ/v7pZfO7Yd7NeINcczLisXp0fuLh4DayhuVs4/L4Xb7erZpL2Ph3X7s2bt+G5d+Lm
UpzoYPo84/Mjdl79ijQ9+33AjGNC+gJQ/roHCLa3u8Hfg8pbfB8fblx4vXj10b2P33ktqS7p6a2o
gRmHevX7s6uZykvdn/Hb9aeWEnfzvbUMfFv011WXqbu4brfT9Axxya5PuAHlnz5Fd+OeeyutqHp9
AsGeZnwKb3/9cPO9RXJpT89QFGe8ufr1dYpXN997hjLIjboZmuGMm/SfN89Cxc/oHmd8/PUqvI3p
+3OkZP1v8KgmAHuCjYg7//mVyM5jpxkLYL71eo1nywvYarCUX/QY2U8X9y2f+85m7fZDdSYbHrW4
2LdtfRb3YPE/fPvuDnzd207/OLO6eXvTMsznwL1Uxy1rhTnO+NfFPfCQfUF8R/TEjIv/BVBLAwQU
AAIACAAchBhJSCd0/EMAAABGAAAALgAcAGNzczMvZmxleGJveC9hdXRvLWhlaWdodC1keW5hbWlj
LWNyYXNoLWxvZy50eHRVVAkAA6cuvlenLr5XdXgLAAEE9QEAAARQAAAA88tXSC5KLM5QyMlPV0jL
L81LAZJFCsn5uXqJBQU5qXrhqUnemSUgyjk/ryQ1r0TPJbUsNSe/IBfItjIyNjEz0uMCAFBLAwQU
AAIACACVhBhJF/sqbvY6AAC7LQEAJQAcAGNzczMvZmxleGJveC9ib3gtc2l6aW5nLWNyYXNoLWxv
Zy50eHRVVAkAA4ovvlfhLr5XdXgLAAEE9QEAAARQAAAA7D1rb9u4sp+vfgU/XCyctklEvSUUBRwn
7qabJkHsdPdisRAoiYq1lSWvJKfJ+fV3hvRDsp1u2QZFD2oDiWWJnBeH8+BL11UZ87oOSPcTl9Mj
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
n9FTmmJVLfwsVhqIvtNbhGGVbKaAkgXy7Ju1AfcjM2wA1myEoZ5hBJVeMV14WSly1aBBFJQ24/hu
shJhvXHLYbE+albxAwWdim4kflVDQxA8ocsYauTBiYzFYczaQSPUVLnXaqSxnoQ00POwe7xYBaD5
QxpgHTRQGzEF9k3LUKtMcXtQgZ2LVzCS0gfWHk/6Ys46kQ+soDnEGcnd0r+IjWGgpUkQs/IuPt2v
Al6tGbMptqFjVKuRo5QPX1aQ9k5hV1E9M3FdLVZOV2NsbyaKDZvj1hvi9mwrOIz7JlnZpb1+MrKZ
mOb1NZt30aga8LREdJ5FwiMniDxYxh+r8YeDshajopWOgSw1s2ktYUCeqeUpjYK3K68tS/RH0ls5
rWwNEry6UbpIAvkwcNeIzApVBSPX7Y9u768vb24m7njq9ruXl+PrD+7N/Z17d+N23enN/W1/qLiT
4e3o5vbKHd1fi2ebriss29LshrXqhPiyVqnBIJWZWy5minSjpSsNJWoGU6sS4Q+IsgyzpeOmopTQ
QlVB64eoPG2wWvoWpdWF1QQqoedbFPKJzm/X01Jke310giAt4IGo4zFoYs5ozPmd924OXG1Uj697
IXuuHi7X1FoQFaE48r7O/bNgCQeHp/C4PYgaKlqgIRfKu6n3h+/yZ6/cEorS0vWGoohlMcQllUKw
Zbd048VrG7b0paFlQna5hgNx52ZFCZ+NOJvNHEwgjtdNARMgBgdwbsHEim+TANiMZnwCDq+fSWNH
PGwGAblYXOB+ZlnC4m2ZW6I0w9QZAb/kC17+FOUzViwyobsinhJvpM3lA+0tcdvSiKebFloVdL/8
KQ9EsGup4jlvI3G2CmGI0HNLlrrWmDz7FJ7btLzYmdEEqDb7DgMxMNBnaOOkMLQts6xk72mzLRmK
75uhgtxVeXf2kLlR8gQZoehJysowDQTqFq0JXJtH19bmUf9xDqF9j8ZYAWO6OZt9oVHh8ghNPK7Y
0df/VsPgwPKphxKapHnM2JwL4dPjUor/7t0Z3t/Btxg+8FQb/GUTrRSPUV62r+MIwS6QcSXikVMG
EFss5IOVi0pkuSklrl3g+BTh9bKdGMKdyqyTqYtVD00CAt/0sY68GY3j1HecnxiFiCD3KXSYfVEZ
f7x5sS7Np2Ej/2pRsK/v31Sxfo9G8Sp044+lXXfGpboezZmD7XLxRDPFKAxFNcXAVP5qprZUUSwl
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
ABUAAAAdABgAAAAAAAEAAACkgdAjAABfd3B0X2NlcnRzL2luZGV4LnR4dC5hdHRyLm9sZFVUBQAD
/i2+V3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAgAAAMODGElnyPe2NwAAADcAAAAYABgAAAAAAAEA
AACkgTwkAABfd3B0X2NlcnRzL2luZGV4LnR4dC5vbGRVVAUAA/4tvld1eAsAAQT1AQAABFAAAABQ
SwECHgMUAAIACADDgxhJJknkrwoFAACLBgAAGAAYAAAAAAABAAAApIHFJAAAX3dwdF9jZXJ0cy9s
b2NhbGhvc3Qua2V5VVQFAAP+Lb5XdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAw4MYSRYy4snv
CQAAOxIAABgAGAAAAAAAAQAAAKSBISoAAF93cHRfY2VydHMvbG9jYWxob3N0LnBlbVVUBQAD/i2+
V3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAgAAAMODGEmORT4KBwAAAAcAAAARABgAAAAAAAEAAACk
gWI0AABfd3B0X2NlcnRzL3NlcmlhbFVUBQAD/i2+V3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAgAA
AMODGEnPdCUTBwAAAAcAAAAVABgAAAAAAAEAAACkgbQ0AABfd3B0X2NlcnRzL3NlcmlhbC5vbGRV
VAUAA/4tvld1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAADBgxhJAAAAAAAAAAAAAAAADgAYAAAA
AAAAAAAApIEKNQAAYWNjZXNzX2xvZy50eHRVVAUAA/otvld1eAsAAQT1AQAABFAAAABQSwECHgMK
AAAAAAAKhBhJAAAAAAAAAAAAAAAACwAYAAAAAAAAABAA7UFSNQAAYW5pbWF0aW9ucy9VVAUAA4Qu
vld1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACADTgxhJ7prEq0MAAABGAAAAMgAYAAAAAAABAAAA
pIGXNQAAYW5pbWF0aW9ucy9hbmltYXRpb24tYm9yZGVyLW92ZXJmbG93LWNyYXNoLWxvZy50eHRV
VAUAAx0uvld1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACACVhBhJdGVuXBA6AABDJAEALgAYAAAA
AAABAAAApIFGNgAAYW5pbWF0aW9ucy91bnByZWZpeGVkLXByb3BlcnRpZXMtY3Jhc2gtbG9nLnR4
dFVUBQADii++V3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAJWEGEl83Wd26zgAAD0fAQAtABgA
AAAAAAEAAACkgb5wAABhbmltYXRpb25zL3VucHJlZml4ZWQtc2hvcnRoYW5kLWNyYXNoLWxvZy50
eHRVVAUAA4ovvld1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACACVhBhJOnruR842AADuFQEAOwAY
AAAAAAABAAAApIEQqgAAY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50LkRldmVsb3BtZW50LTIz
NTY0LWNyYXNoLWxvZy50eHRVVAUAA4ovvld1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAADagxhJ
AAAAAAAAAAAAAAAADAAYAAAAAAAAABAA7UFT4QAAY29tcG9zaXRpbmcvVVQFAAMrLr5XdXgLAAEE
9QEAAARQAAAAUEsBAh4DCgAAAAAA2oMYSQAAAAAAAAAAAAAAABsAGAAAAAAAAAAQAO1BmeEAAGNv
bXBvc2l0aW5nL2xheWVyLWNyZWF0aW9uL1VUBQADKy6+V3V4CwABBPUBAAAEUAAAAFBLAQIeAxQA
AgAIAJWEGEk3eJDmYT0AAMdJAQBJABgAAAAAAAEAAACkge7hAABjb21wb3NpdGluZy9sYXllci1j
cmVhdGlvbi9zY2FsZS1yb3RhdGlvbi1hbmltYXRpb24tb3ZlcmxhcC1jcmFzaC1sb2cudHh0VVQF
AAOKL75XdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAA0YMYSQAAAAAAAAAAAAAAABIAGAAAAAAA
AAAQAO1B0h8BAGNvbXBvc2l0aW5nL21hc2tzL1VUBQADGi6+V3V4CwABBPUBAAAEUAAAAFBLAQIe
AxQAAgAIANGDGEkL2YJA5gAAACQDAABEABgAAAAAAAEAAACkgR4gAQBjb21wb3NpdGluZy9tYXNr
cy9jb21wb3NpdGluZy1jbGlwLXBhdGgtY2hhbmdlLW5vLXJlcGFpbnQtYWN0dWFsLnR4dFVUBQAD
Gi6+V3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIANGDGEn3+NL25gAAAF4CAABCABgAAAAAAAEA
AACkgYIhAQBjb21wb3NpdGluZy9tYXNrcy9jb21wb3NpdGluZy1jbGlwLXBhdGgtY2hhbmdlLW5v
LXJlcGFpbnQtZGlmZi50eHRVVAUAAxouvld1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACADRgxhJ
6l0np+kAAACAAwAARgAYAAAAAAABAAAApIHkIgEAY29tcG9zaXRpbmcvbWFza3MvY29tcG9zaXRp
bmctY2xpcC1wYXRoLWNoYW5nZS1uby1yZXBhaW50LWV4cGVjdGVkLnR4dFVUBQADGi6+V3V4CwAB
BPUBAAAEUAAAAFBLAQIeAxQAAgAIANGDGEkGQUMQ4gcAAIwcAABKABgAAAAAAAEAAACkgU0kAQBj
b21wb3NpdGluZy9tYXNrcy9jb21wb3NpdGluZy1jbGlwLXBhdGgtY2hhbmdlLW5vLXJlcGFpbnQt
cHJldHR5LWRpZmYuaHRtbFVUBQADGi6+V3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAANiDGEkA
AAAAAAAAAAAAAAASABgAAAAAAAAAEADtQbMsAQBjb21wb3NpdGluZy92aWRlby9VVAUAAyguvld1
eAsAAQT1AQAABFAAAABQSwECHgMUAAIACADYgxhJQD0h07wAAABLAQAAMgAYAAAAAAABAAAApIH/
LAEAY29tcG9zaXRpbmcvdmlkZW8vdmlkZW8tb2JqZWN0LXBvc2l0aW9uLXN0ZGVyci50eHRVVAUA
Ayguvld1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAADZgxhJAAAAAAAAAAAAAAAAEQAYAAAAAAAA
ABAA7UEnLgEAY29udGVudGZpbHRlcmluZy9VVAUAAyouvld1eAsAAQT1AQAABFAAAABQSwECHgMU
AAIACADZgxhJ4fM43rwAAABLAQAAJwAYAAAAAAABAAAApIFyLgEAY29udGVudGZpbHRlcmluZy9h
bGxvdy1uZXZlci1zdGRlcnIudHh0VVQFAAMqLr5XdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAA
6IMYSQAAAAAAAAAAAAAAAAcAGAAAAAAAAAAQAO1Bjy8BAGNyeXB0by9VVAUAA0Muvld1eAsAAQT1
AQAABFAAAABQSwECHgMKAAAAAADogxhJAAAAAAAAAAAAAAAADwAYAAAAAAAAABAA7UHQLwEAY3J5
cHRvL3dvcmtlcnMvVVQFAANDLr5XdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAlYQYSTJUCLdT
OQAAsiUBAC0AGAAAAAAAAQAAAKSBGTABAGNyeXB0by93b3JrZXJzL2NyeXB0by1nYy13b3JrZXIt
Y3Jhc2gtbG9nLnR4dFVUBQADii++V3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAAFeEGEkAAAAA
AAAAAAAAAAAFABgAAAAAAAAAEADtQdNpAQBjc3MzL1VUBQADFS++V3V4CwABBPUBAAAEUAAAAFBL
AQIeAwoAAAAAAFSEGEkAAAAAAAAAAAAAAAANABgAAAAAAAAAEADtQRJqAQBjc3MzL2ZpbHRlcnMv
VVQFAAMPL75XdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAAKYQYSQAAAAAAAAAAAAAAABYAGAAA
AAAAAAAQAO1BWWoBAGNzczMvZmlsdGVycy9iYWNrZHJvcC9VVAUAA70uvld1eAsAAQT1AQAABFAA
AABQSwECHgMUAAIACACVhBhJH4+41e44AADQHgEASgAYAAAAAAABAAAApIGpagEAY3NzMy9maWx0
ZXJzL2JhY2tkcm9wL2JhY2tkcm9wZmlsdGVyLXByb3BlcnR5LWNvbXB1dGVkLXN0eWxlLWNyYXNo
LWxvZy50eHRVVAUAA4ovvld1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACAAphBhJzK+dSEMAAABG
AAAAQwAYAAAAAAABAAAApIEbpAEAY3NzMy9maWx0ZXJzL2JhY2tkcm9wL2JhY2tkcm9wZmlsdGVy
LXByb3BlcnR5LXBhcnNpbmctY3Jhc2gtbG9nLnR4dFVUBQADvS6+V3V4CwABBPUBAAAEUAAAAFBL
AQIeAxQAAgAIAJWEGEk8wC2edjcAAHYXAQBLABgAAAAAAAEAAACkgdukAQBjc3MzL2ZpbHRlcnMv
YmFja2Ryb3AvYmFja2Ryb3BmaWx0ZXItcHJvcGVydHktcGFyc2luZy1pbnZhbGlkLWNyYXNoLWxv
Zy50eHRVVAUAA4ovvld1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACAAQhBhJimPeokMAAABGAAAA
OQAYAAAAAAABAAAApIHW3AEAY3NzMy9maWx0ZXJzL2ZpbHRlci1wcm9wZXJ0eS1jb21wdXRlZC1z
dHlsZS1jcmFzaC1sb2cudHh0VVQFAAOQLr5XdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAlYQY
SdSis7bRNwAAhBsBADIAGAAAAAAAAQAAAKSBjN0BAGNzczMvZmlsdGVycy9maWx0ZXItcHJvcGVy
dHktcGFyc2luZy1jcmFzaC1sb2cudHh0VVQFAAOKL75XdXgLAAEE9QEAAARQAAAAUEsBAh4DFAAC
AAgAIYQYSRoqCkVDAAAARgAAADoAGAAAAAAAAQAAAKSByRUCAGNzczMvZmlsdGVycy9maWx0ZXIt
cHJvcGVydHktcGFyc2luZy1pbnZhbGlkLWNyYXNoLWxvZy50eHRVVAUAA60uvld1eAsAAQT1AQAA
BFAAAABQSwECHgMUAAIACABEhBhJwU3yTUMAAABGAAAAOQAYAAAAAAABAAAApIGAFgIAY3NzMy9m
aWx0ZXJzL29mZnNjcmVlbi1maWx0ZXJzLW1lbW9yeS11c2FnZS1jcmFzaC1sb2cudHh0VVQFAAPv
Lr5XdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAlYQYSSp1lUdOOAAATCgBACUAGAAAAAAAAQAA
AKSBNhcCAGNzczMvZmlsdGVycy91bnByZWZpeGVkLWNyYXNoLWxvZy50eHRVVAUAA4ovvld1eAsA
AQT1AQAABFAAAABQSwECHgMKAAAAAABahBhJAAAAAAAAAAAAAAAADQAYAAAAAAAAABAA7UHjTwIA
Y3NzMy9mbGV4Ym94L1VUBQADHC++V3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAJWEGEku42kE
AjoAAMggAQAvABgAAAAAAAEAAACkgSpQAgBjc3MzL2ZsZXhib3gvYWxpZ24tYWJzb2x1dGUtY2hp
bGQtY3Jhc2gtbG9nLnR4dFVUBQADii++V3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAByEGElI
J3T8QwAAAEYAAAAuABgAAAAAAAEAAACkgZWKAgBjc3MzL2ZsZXhib3gvYXV0by1oZWlnaHQtZHlu
YW1pYy1jcmFzaC1sb2cudHh0VVQFAAOnLr5XdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAlYQY
SRf7Km72OgAAuy0BACUAGAAAAAAAAQAAAKSBQIsCAGNzczMvZmxleGJveC9ib3gtc2l6aW5nLWNy
YXNoLWxvZy50eHRVVAUAA4ovvld1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACACVhBhJtlZVMkY5
AAAgIQEAMwAYAAAAAAABAAAApIGVxgIAY3NzMy9mbGV4Ym94L2JveC1zaXppbmctbWluLW1heC1z
aXplcy1jcmFzaC1sb2cudHh0VVQFAAOKL75XdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAlYQY
SdwytVNLOgAA+ykBACwAGAAAAAAAAQAAAKSBSAADAGNzczMvZmxleGJveC9jb2x1bW5zLWF1dG8t
c2l6ZS1jcmFzaC1sb2cudHh0VVQFAAOKL75XdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAlYQY
SWDk9NByOQAAKSIBADwAGAAAAAAAAQAAAKSB+ToDAGNzczMvZmxleGJveC9jb2x1bW5zLWhlaWdo
dC1zZXQtdmlhLXRvcC1ib3R0b20tY3Jhc2gtbG9nLnR4dFVUBQADii++V3V4CwABBPUBAAAEUAAA
AFBLAQIeAxQAAgAIAJWEGElTHZv2WEAAALNMAQAyABgAAAAAAAEAAACkgeF0AwBjc3MzL2ZvbnQt
ZmVhdHVyZS1zZXR0aW5ncy1yZW5kZXJpbmctY3Jhc2gtbG9nLnR4dFVUBQADii++V3V4CwABBPUB
AAAEUAAAAFBLAQIeAxQAAgAIAJWEGElOnJs0VzoAAK0oAQAmABgAAAAAAAEAAACkgaW1AwBjc3Mz
L3BhcnNlLWFsaWduLWNvbnRlbnQtY3Jhc2gtbG9nLnR4dFVUBQADii++V3V4CwABBPUBAAAEUAAA
AFBLAQIeAxQAAgAIABCEGEkfR3RRQwAAAEYAAAAkABgAAAAAAAEAAACkgVzwAwBjc3MzL3BhcnNl
LWFsaWduLWl0ZW1zLWNyYXNoLWxvZy50eHRVVAUAA5Auvld1eAsAAQT1AQAABFAAAABQSwECHgMU
AAIACACVhBhJPCQFS5c5AADLIQEAIwAYAAAAAAABAAAApIH98AMAY3NzMy9wYXJzZS1hbGlnbi1z
ZWxmLWNyYXNoLWxvZy50eHRVVAUAA4ovvld1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACACVhBhJ
ENDca7E5AAAUJAEAKAAYAAAAAAABAAAApIHxKgQAY3NzMy9wYXJzZS1qdXN0aWZ5LWNvbnRlbnQt
Y3Jhc2gtbG9nLnR4dFVUBQADii++V3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAAFSEGEkAAAAA
AAAAAAAAAAARABgAAAAAAAAAEADtQQRlBABjc3MzL3Njcm9sbC1zbmFwL1VUBQADDy++V3V4CwAB
BPUBAAAEUAAAAFBLAQIeAxQAAgAIAEaEGEl6IMjpQwAAAEYAAABCABgAAAAAAAEAAACkgU9lBABj
c3MzL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLXByb3BlcnR5LWNvbXB1dGVkLXN0eWxlLWNyYXNo
LWxvZy50eHRVVAUAA/Muvld1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACACVhBhJSnv64Pc2AABu
FgEAOwAYAAAAAAABAAAApIEOZgQAY3NzMy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1wcm9wZXJ0
eS1wYXJzaW5nLWNyYXNoLWxvZy50eHRVVAUAA4ovvld1eAsAAQT1AQAABFAAAABQSwECHgMKAAAA
AABXhBhJAAAAAAAAAAAAAAAADAAYAAAAAAAAABAA7UF6nQQAY3NzMy9zaGFwZXMvVVQFAAMVL75X
dXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAAV4QYSQAAAAAAAAAAAAAAABoAGAAAAAAAAAAQAO1B
wJ0EAGNzczMvc2hhcGVzL3NoYXBlLW91dHNpZGUvVVQFAAMVL75XdXgLAAEE9QEAAARQAAAAUEsB
Ah4DCgAAAAAAV4QYSQAAAAAAAAAAAAAAACEAGAAAAAAAAAAQAO1BFJ4EAGNzczMvc2hhcGVzL3No
YXBlLW91dHNpZGUvdmFsdWVzL1VUBQADFS++V3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAFeE
GEnK/sr2QwAAAEYAAABHABgAAAAAAAEAAACkgW+eBABjc3MzL3NoYXBlcy9zaGFwZS1vdXRzaWRl
L3ZhbHVlcy9zaGFwZS1vdXRzaWRlLWNpcmNsZS0wMDItY3Jhc2gtbG9nLnR4dFVUBQADFS++V3V4
CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAJWEGEmqhpvzRjgAAGYdAQAtABgAAAAAAAEAAACkgTOf
BABjc3MzL3VuaWNvZGUtYmlkaS1pc29sYXRlLWJhc2ljLWNyYXNoLWxvZy50eHRVVAUAA4ovvld1
eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAABbhBhJAAAAAAAAAAAAAAAABgAYAAAAAAAAABAA7UHg
1wQAY3Nzb20vVVQFAAMdL75XdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAW4QYSaFHMOFDAAAA
RgAAACcAGAAAAAAAAQAAAKSBINgEAGNzc29tL2Nzc3ZhbHVlLWNvbXBhcmlzb24tY3Jhc2gtbG9n
LnR4dFVUBQADHS++V3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAFuEGEnqMFT/qQIAABMIAAAN
ABgAAAAAAAEAAACkgcTYBABlcnJvcl9sb2cudHh0VVQFAAMeL75XdXgLAAEE9QEAAARQAAAAUEsB
Ah4DFAACAAgAloQYScxQkQ4gAwAAKw0AABEAGAAAAAAAAQAAAKSBtNsEAGZ1bGxfcmVzdWx0cy5q
c29uVVQFAAOLL75XdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAwYMYSVsEWA6iBQAATRAAAAoA
GAAAAAAAAQAAAKSBH98EAGh0dHBkLmNvbmZVVAUAA/otvld1eAsAAQT1AQAABFAAAABQSwECHgMK
AAAAAACPhBhJAAAAAAAAAAAAAAAABgAYAAAAAAAAABAA7UEF5QQAbWVkaWEvVVQFAAN9L75XdXgL
AAEE9QEAAARQAAAAUEsBAh4DCgAAAAAAj4QYSQAAAAAAAAAAAAAAAA8AGAAAAAAAAAAQAO1BReUE
AG1lZGlhL2NvbnRyb2xzL1VUBQADfS++V3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAAI+EGEkA
AAAAAAAAAAAAAAAUABgAAAAAAAAAEADtQY7lBABtZWRpYS9jb250cm9scy9pcGFkL1VUBQADfS++
V3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAI+EGElkNvbdvQAAAE0BAABZABgAAAAAAAEAAACk
gdzlBABtZWRpYS9jb250cm9scy9pcGFkL2Nsb3NlLXBhZ2Utd2l0aC1waWN0dXJlLWluLXBpY3R1
cmUtdmlkZW8tYXNzZXJ0aW9uLWZhaWx1cmUtc3RkZXJyLnR4dFVUBQADfS++V3V4CwABBPUBAAAE
UAAAAFBLAQIeAwoAAAAAAMKDGEkAAAAAAAAAAAAAAAAaABgAAAAAAAAAAACkgSznBABweXdlYnNv
Y2tldC53cy5sb2ctZXJyLnR4dFVUBQAD+y2+V3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAAMKD
GEkAAAAAAAAAAAAAAAAaABgAAAAAAAAAAACkgYDnBABweXdlYnNvY2tldC53cy5sb2ctb3V0LnR4
dFVUBQAD+y2+V3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAAMKDGEkAAAAAAAAAAAAAAAAbABgA
AAAAAAAAAACkgdTnBABweXdlYnNvY2tldC53c3MubG9nLWVyci50eHRVVAUAA/wtvld1eAsAAQT1
AQAABFAAAABQSwECHgMKAAAAAADCgxhJAAAAAAAAAAAAAAAAGwAYAAAAAAAAAAAApIEp6AQAcHl3
ZWJzb2NrZXQud3NzLmxvZy1vdXQudHh0VVQFAAP8Lb5XdXgLAAEE9QEAAARQAAAAUEsBAh4DFAAC
AAgAloQYSUUmHTnRJwAAy6oAAAwAGAAAAAAAAQAAAKSBfugEAHJlc3VsdHMuaHRtbFVUBQADiy++
V3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAJaEGEmvUw/uetEAAHE7BQAKABgAAAAAAAEAAACk
gZUQBQBzdGF0cy5qc29uVVQFAAOLL75XdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAxoMYScv5
LrHeBAAAPxsAABkAGAAAAAAAAQAAAKSBU+IFAHdwdHdrX3Byb2Nlc3NfbG9nLm91dC50eHRVVAUA
AwQuvld1eAsAAQT1AQAABFAAAABQSwUGAAAAAFEAUQAhIQAAhOcFAAAA
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>286933</attachid>
            <date>2016-08-24 19:49:13 -0700</date>
            <delta_ts>2016-08-24 19:58:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-152723-20160824194712.patch</filename>
            <type>text/plain</type>
            <size>192571</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA0OTM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
NzkzZjU3OWRkYjc5NDVjMTI0YzRiMzUwNzk1N2RmZmUzNGJlZjIyLi5mNTdhYTdmNWYyMzhkYmUw
ODZlZTIwZDYzY2NiZmI1YTAxNzNmMjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNjAgQEAKKzIwMTYtMDgtMjQgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0RGR11bRlRMXSBJbXBsZW1lbnQgRVM2IEdlbmVyYXRvcnMgaW4g
REZHIC8gRlRMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNTI3MjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUaGlzIHBhdGNoIGludHJvZHVjZXMgREZHIGFuZCBGVEwgc3VwcG9ydCBmb3IgRVM2IGdlbmVy
YXRvcnMuCisgICAgICAgIEVTNiBnZW5lcmF0b3IgaXMgY29tcGlsZWQgYnkgdGhlIEJ5dGVjb2Rl
R2VuZXJhdG9yLiBCdXQgYXQgdGhlIGxhc3QgcGhhc2UsIEJ5dGVjb2RlR2VuZXJhdG9yIHBlcmZv
cm1zICJnZW5lcmF0b3JpZmljYXRpb24iIG9udG8gdGhlIHVubGlua2VkIGNvZGUuCisgICAgICAg
IEluIEJ5dGVjb2RlR2VuZXJhdG9yIHBoYXNlLCB3ZSBqdXN0IGVtaXQgb3BfeWllbGQgZm9yIGVh
Y2ggeWllbGQgcG9pbnQuIEFuZCB3ZSBkb24ndCBlbWl0IGFueSBnZW5lcmF0b3IgcmVsYXRlZCBz
d2l0Y2gsIHNhdmUsIGFuZCByZXN1bWUgc2VxdWVuY2VzCisgICAgICAgIGhlcmUuIFRob3NlIGFy
ZSBlbWl0dGVkIGJ5IHRoZSBnZW5lcmF0b3JpZmljYXRpb24gcGhhc2UuIFNvIHRoZSBncmFwaCBp
cyBzdXBlciBzaW1wbGUhIEJlZm9yZSB0aGUgZ2VuZXJhdG9yaWZpY2F0aW9uLCB0aGUgZ3JhcGgg
bG9va3MgbGlrZSB0aGlzLgorCisgICAgICAgICAgICAgb3BfZW50ZXIgLT4gLi4uLi4uIC0+IG9w
X3lpZWxkIC0+IC4uLi4uIC0+IG9wX3lpZWxkIC0+IC4uLgorCisgICAgICAgIFJvdWdobHkgc3Bl
YWtpbmcsIGluIHRoZSBnZW5lcmF0b3JpZmljYXRpb24gcGhhc2UsIHdlIHR1cm4gb3V0IHdoaWNo
IHZhcmlhYmxlcyBzaG91bGQgYmUgc2F2ZWQgYW5kIHJlc3VtZWQgYXQgZWFjaCBvcF95aWVsZC4K
KyAgICAgICAgVGhpcyBpcyBkb25lIGJ5IGxpdmVuZXNzIGFuYWx5c2lzLiBBZnRlciB0aGF0LCB3
ZSBjb252ZXJ0IG9wX3lpZWxkIHRvIHRoZSBzZXF1ZW5jZSBvZiAib3BfcHV0X3RvX3Njb3BlIiwg
Im9wX3JldCIsIGFuZCAib3BfZ2V0X2Zyb21fc2NvcGUiLgorICAgICAgICBvcF9wdXRfdG9fc2Nv
cGUgYW5kIG9wX2dldF9mcm9tX3Njb3BlIHNlcXVlbmNlcyBhcmUgY29ycmVzcG9uZGluZyB0byB0
aGUgc2F2ZSBhbmQgcmVzdW1lIHNlcXVlbmNlcy4gV2Ugc2V0IHVwIHRoZSBzY29wZSBmb3IgdGhl
IGdlbmVyYXRvciBmcmFtZSBhbmQKKyAgICAgICAgcGVyZm9ybSBvcF9wdXRfdG9fc2NvcGUgYW5k
IG9wX2dldF9mcm9tX3Njb3BlIG9udG8gaXQuIFRoZSBsaXZlIHJlZ2lzdGVycyBhcmUgc2F2ZWQg
YW5kIHJlc3VtZWQgb3ZlciB0aGUgZ2VuZXJhdG9yJ3MgbmV4dCgpIGNhbGxzIGJ5IHVzaW5nIHRo
aXMKKyAgICAgICAgc3BlY2lhbCBnZW5lcmF0b3IgZnJhbWUgc2NvcGUuIEFuZCB3ZSBhbHNvIHNl
dCB1cCB0aGUgZ2xvYmFsIHN3aXRjaCBmb3IgdGhlIGdlbmVyYXRvci4KKworICAgICAgICBJbiB0
aGUgZ2VuZXJhdG9yaWZpY2F0aW9uIHBoYXNlLAorCisgICAgICAgIDEuIFdlIGNvbnN0cnVjdCB0
aGUgQnl0ZWNvZGVHcmFwaCBmcm9tIHRoZSB1bmxpbmtlZCBpbnN0cnVjdGlvbnMuIFRoaXMgY29u
c3RydWN0cyB0aGUgYmFzaWMgYmxvY2tzLCBhbmQgaXQgaXMgdXNlZCBpbiB0aGUgc3Vic2VxdWVu
dCBhbmFseXNpcy4KKyAgICAgICAgMi4gV2UgcGVyZm9ybSB0aGUgYW5hbHlzaXMgb250byB0aGUg
dW5saW5rZWQgY29kZS4gV2UgZXh0cmFjdCB0aGUgbGl2ZSB2YXJpYWJsZXMgYXQgZWFjaCBvcF95
aWVsZC4KKyAgICAgICAgMy4gV2UgaW5zZXJ0IHRoZSBnZXRfZnJvbV9zY29wZSBhbmQgcHV0X3Rv
X3Njb3BlIGF0IGVhY2ggb3BfeWllbGQuIFdoaWNoIHJlZ2lzdGVycyBzaG91bGQgYmUgc2F2ZWQg
YW5kIHJlc3VtZWQgaXMgb2ZmZXJlZCBieSAoMikuCisgICAgICAgICAgIFRoZW4sIGNsaXAgdGhl
IG9wX3lpZWxkIHRoZW1zZWx2ZXMuIEFuZCB3ZSBhbHNvIGluc2VydCB0aGUgc3dpdGNoX2ltbS4g
VGhlIGp1bXAgdGFyZ2V0cyBvZiB0aGlzIHN3aXRjaCBhcmUganVzdCBhZnRlciB0aGlzIG9wX3N3
aXRjaF9pbW0gYW5kIGVhY2ggb3BfeWllbGQgcG9pbnQuCisKKyAgICAgICAgT25lIGludGVyZXN0
aW5nIHBvaW50IGlzIHRoZSB0cnktcmFuZ2UuIFdlIHNwbGl0IHRoZSB0cnktcmFuZ2UgYXQgdGhl
IG9wX3lpZWxkIHBvaW50IGluIEJ5dGVjb2RlR2VuZXJhdG9yIHBoYXNlLiBUaGlzIGRyb3BzIHRo
ZSBoYWNreSB0aGluZyB0aGF0IGlzIGludHJvZHVjZWQgaW4gWzFdLgorICAgICAgICBJZiB0aGUg
dHJ5LXJhbmdlIGNvdmVycyB0aGUgcmVzdW1lIHNlcXVlbmNlcywgdGhlIGV4Y2VwdGlvbidzIHJl
Z2lzdGVyIGlzIHRvdWNoZWQgYXMgYHVzZWRgIGV2ZW4gaWYgd2UgZG9uJ3QgcHJvcGVybHkgcmVz
dW1lIHRoZSByZWdpc3RlcnMgaW4gdGhlIHJlc3VtZSBzZXF1ZW5jZS4KKyAgICAgICAgUHJldmlv
dXNseSwgd2UgaGFuZGxlIHRoaXMgZWRnZSBjYXNlIGJ5IHRyZWF0aW5nIG9wX3Jlc3VtZSBhcyBz
cGVjaWFsIGluIHRoZSBsaXZlbmVzcyBhbmFseXNpc1sxXS4gTm93LCBjYXJlZnVsbHkgc3BsaXQg
dGhlIHRyeS1yYW5nZSBub3QgdG8gY292ZXIgdGhpcyByZXN1bWUgc2VxdWVuY2UKKyAgICAgICAg
dG8gYXZvaWQgdGhpcyBwcm9ibGVtLgorCisgICAgICAgIE9LLiBMZXQncyBzaG93IHRoZSBkZXRh
aWxlZCBleGFtcGxlLgorCisgICAgICAgICAgICAxLiBGaXJzdCwgdGhlcmUgaXMgdGhlIG5vcm1h
bCBieXRlY29kZSBzZXF1ZW5jZS4gSGVyZSwgfCByZXByZXNlbnRzIHRoZSBvZmZzZXRzLCBhbmQg
W10gcmVwcmVzZW50cyB0aGUgYnl0ZWNvZGVzLgorCisgICAgICAgICAgICAgICAgYnl0ZWNvZGVz
ICAgfCBbIF0gfCBbIF0gfCBbIF0gfCBbIF0gfCBbIF0gfCBbIF0gfAorICAgICAgICAgICAgICAg
IHRyeS1yYW5nZSAgIDwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT4KKworICAg
ICAgICAgICAgMi4gV2hlbiB3ZSBlbWl0IHRoZSBvcF95aWVsZCBpbiB0aGUgYnl0ZWNvZGUgZ2Vu
ZXJhdG9yLCB3ZSBjYXJlZnVsbHkgc3BsaXQgdGhlIHRyeS1yYW5nZS4KKworICAgICAgICAgICAg
ICAgIGJ5dGVjb2RlcyAgIHwgWyBdIHwgWyBdIHwgW29wX3lpZWxkXSB8IFsgXSB8IFsgXSB8IFsg
XSB8CisgICAgICAgICAgICAgICAgdHJ5LXJhbmdlICAgPC0tLS0tLS0tLS0tPiAgICAgICAgICAg
IDwtLS0tLS0tLS0tLS0tLS0tLT4KKworICAgICAgICAgICAgMy4gQW5kIGluIHRoZSBnZW5lcmF0
b3JpZmljYXRpb24gcGhhc2UsIHdlIGluc2VydCB0aGUgc3dpdGNoJ3MganVtcCB0YXJnZXQgYW5k
IHNhdmUgJiByZXN1bWUgc2VxdWVuY2VzLiBBbmQgd2UgYWxzbyBkcm9wIG9wX3lpZWxkLgorCisg
ICAgICAgICAgICAgICAgSW5zZXJ0IHNhdmUgc2VxIGJlZm9yZSBvcF95aWVsZC4gICAgSW5zZXJ0
IHJlc3VtZSBzZXEgYmVmb3JlIHRoZSBieXRlY29kZSB0aGF0IGlzIGp1c3QgYWZ0ZXIgb3BfeWll
bGQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ICAgICAgICAgICAg
dgorICAgICAgICAgICAgICAgIGJ5dGVjb2RlcyAgIHwgWyBdIHwgWyBdIHwgW29wX3lpZWxkXSB8
IFsgXSB8IFsgXSB8IFsgXSB8CisgICAgICAgICAgICAgICAgdHJ5LXJhbmdlICAgPC0tLS0tLS0t
LS0tPiAgICAgXiAgICAgIDwtLS0tLS0tLS0tLS0tLS0tLT4KKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBeICAgICB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEp1bXAgdG8gaGVyZS4gICAgRHJvcCB0aGlzIG9wX3lpZWxkLgorCisgICAgICAgICAgICA0LiBU
aGUgZmluYWwgbGF5b3V0IGlzIHRoZSBmb2xsb3dpbmcuCisKKyAgICAgICAgICAgICAgICBieXRl
Y29kZXMgICB8IFsgXSB8IFsgXVtzYXZlIHNlcV1bb3BfcmV0XSB8IFtyZXN1bWUgc2VxXSB8IFsg
XSB8IFsgXSB8IFsgXSB8CisgICAgICAgICAgICAgICAgdHJ5LXJhbmdlICAgPC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tPiAgICAgICAgICAgICAgIDwtLS0tLS0tLS0tLS0tLS0tPgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4K
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBKdW1wIHRvIGhl
cmUuCisKKyAgICAgICAgVGhlIHJld3JpdGluZyBkb25lIGJ5IHRoZSBCeXRlY29kZVJld3JpdGVy
IGlzIGV4ZWN1dGVkIGluIGEgYmF0Y2ggbWFubmVyLiBTaW5jZSB0aGVzZSBtb2RpZmljYXRpb24g
Y2hhbmdlcyB0aGUgYmFzaWMgYmxvY2tzIGFuZCBzaXplIG9mIHVubGlua2VkIGluc3RydWN0aW9u
cywKKyAgICAgICAgQnl0ZWNvZGVSZXdyaXRlciBhbHNvIHBlcmZvcm1zIHRoZSBvZmZzZXQgYWRq
dXN0bWVudCBmb3IgVW5saW5rZWRDb2RlQmxvY2suIFNvLCB0aGlzIEJ5dGVjb2RlUmV3cml0ZXIg
aXMgcGVyZm9ybWVkIG9udG8gdGhlIEJ5dGVjb2RlR3JhcGggaW5zdGVhZCBvZiBCeXRlY29kZUJh
c2ljQmxvY2suCisgICAgICAgIFRoZSByZWFzb24gd2h5IHdlIHRha2UgdGhpcyBkZXNpZ24gaXMg
c2ltcGxlOiB3ZSBkb24ndCB3YW50IHRvIG5ld2x5IGNyZWF0ZSB0aGUgYmFzaWMgYmxvY2tzIGFu
ZCBvcGNvZGVzIGZvciB0aGlzIGVhcmx5IHBoYXNlIGxpa2UgREZHLiBJbnN0ZWFkLCB3ZSBwZXJm
b3JtIHRoZQorICAgICAgICBtb2RpZmljYXRpb24gYW5kIGFkanVzdG1lbnQgdG8gdGhlIHVubGlu
a2VkIGluc3RydWN0aW9ucyBhbmQgVW5saW5rZWRDb2RlQmxvY2sgaW4gYSBpbi1wbGFjZSBtYW5u
ZXIuCisKKyAgICAgICAgQWZ0ZXIgdGhhdCBwaGFzZSwgdGhlIGRhdGEgZmxvdyBvZiB0aGUgZ2Vu
ZXJhdG9yLXNhdmVkLWFuZC1yZXN1bWVkLXJlZ2lzdGVycyBhcmUgZXhwbGljaXRseSByZXByZXNl
bnRlZCBieSB0aGUgZ2V0X2Zyb21fc2NvcGUgYW5kIHB1dF90b19zY29wZS4KKyAgICAgICAgQW5k
IHRoZSBzd2l0Y2ggaXMgaW5zZXJ0ZWQgdG8gcmVwcmVzZW50IHRoZSBhY3R1YWwgY29udHJvbCBm
bG93IGZvciB0aGUgZ2VuZXJhdG9yLiBBbmQgb3BfeWllbGQgaXMgcmVtb3ZlZC4gU2luY2Ugd2Ug
dXNlIHRoZSBleGlzdGluZyBieXRlY29kZXMgKG9wX3N3aXRjaF9pbW0sIG9wX3B1dF90b19zY29w
ZQorICAgICAgICBvcF9yZXQsIGFuZCBvcF9nZXRfZnJvbV9zY29wZSksIERGRyBhbmQgRlRMIGNo
YW5nZXMgYXJlIG5vdCBuZWNlc3NhcnkuIFRoaXMgcGF0Y2ggYWxzbyBkcm9wcyBkYXRhIHN0cnVj
dHVyZXMgYW5kIGltcGxlbWVudGF0aW9ucyBmb3IgdGhlIG9sZCBnZW5lcmF0b3IsCisgICAgICAg
IG9wX3Jlc3VtZSwgb3Bfc2F2ZSBpbXBsZW1lbnRhdGlvbnMgYW5kIEdlbmVyYXRvckZyYW1lLgor
CisgICAgICAgIE5vdGUgdGhhdCB0aGlzIHBhdGNoIGRvZXMgbm90IGxldmVyYWdlIHRoZSByZWNl
bnQgbXVsdGkgZW50cnlwb2ludHMgc3VwcG9ydCBpbiBCMy4gQWZ0ZXIgdGhpcyBwYXRjaCBpcyBp
bnRyb2R1Y2VkLCB3ZSB3aWxsIHN1Ym1pdCBhIG5ldyBwYXRjaCB0aGF0IGxldmVyYWdlcyB0aGUg
bXVsdGkKKyAgICAgICAgZW50cnlwb2ludHMgZm9yIGdlbmVyYXRvcidzIHJlc3VtZSBhbmQgc2Vl
cyB0aGUgcGVyZm9ybWFuY2UgZ2Fpbi4KKworICAgICAgICBUT0RPOiBQZXJmIFRCQSBoZXJlLgor
CisgICAgICAgIFsxXTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1
OTI4MQorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBidWlsdGlucy9HZW5lcmF0
b3JQcm90b3R5cGUuanM6CisgICAgICAgIChnbG9iYWxQcml2YXRlLmdlbmVyYXRvclJlc3VtZSk6
CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcDoKKyAgICAgICAgKEpT
Qzo6aXNCcmFuY2gpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUJhc2ljQmxvY2s6OmNvbXB1dGVC
eXRlY29kZUJhc2ljQmxvY2tzSW50ZXJuYWwpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUJhc2lj
QmxvY2s6OmNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzKToKKyAgICAgICAgKEpTQzo6bGlua0Js
b2Nrcyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OmNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tz
KTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suaDoKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVCYXNpY0Jsb2NrOjpieXRlY29kZU9mZnNldHMpOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUJhc2ljQmxvY2s6OnN1Y2Nlc3NvcnMpOgorICAgICAgICAoSlNDOjpC
eXRlY29kZUJhc2ljQmxvY2s6OmluZGV4KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVCYXNpY0Js
b2NrOjphZGRTdWNjZXNzb3IpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9y
aWZpY2F0aW9uLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yaWZp
Y2F0aW9uOjpCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbik6CisgICAgICAgIChKU0M6OkJ5dGVj
b2RlR2VuZXJhdG9yaWZpY2F0aW9uOjpncmFwaCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2Vu
ZXJhdG9yaWZpY2F0aW9uOjp5aWVsZHMpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRv
cmlmaWNhdGlvbjo6ZW50ZXJQb2ludCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9y
aWZpY2F0aW9uOjpzdG9yYWdlRm9yR2VuZXJhdG9yTG9jYWwpOgorICAgICAgICAoSlNDOjpHZW5l
cmF0b3JMaXZlbmVzc0FuYWx5c2lzOjpHZW5lcmF0b3JMaXZlbmVzc0FuYWx5c2lzKToKKyAgICAg
ICAgKEpTQzo6R2VuZXJhdG9yTGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0ZURlZnNGb3JCeXRlY29k
ZU9mZnNldCk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1
dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JMaXZlbmVz
c0FuYWx5c2lzOjpydW4pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlv
bjo6cnVuKToKKyAgICAgICAgKEpTQzo6cGVyZm9ybUdlbmVyYXRvcmlmaWNhdGlvbik6CisgICAg
ICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uaDogQ29waWVkIGZyb20g
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lu
bGluZXMuaC4KKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUdyYXBoLmg6IEFkZGVkLgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUdyYXBoOjpjb2RlQmxvY2spOgorICAgICAgICAoSlNDOjpCeXRl
Y29kZUdyYXBoOjppbnN0cnVjdGlvbnMpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdyYXBoOjpi
YXNpY0Jsb2Nrc0luUmV2ZXJzZU9yZGVyKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHcmFwaDo6
YmxvY2tDb250YWluc0J5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHcmFw
aDo6ZmluZEJhc2ljQmxvY2tGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OkJ5dGVj
b2RlR3JhcGg6OmZpbmRCYXNpY0Jsb2NrV2l0aExlYWRlck9mZnNldCk6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlR3JhcGg6OnNpemUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdyYXBoOjphdCk6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR3JhcGg6Om9wZXJhdG9yW10pOgorICAgICAgICAoSlND
OjpCeXRlY29kZUdyYXBoOjpiZWdpbik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR3JhcGg6OmVu
ZCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR3JhcGg6OmZpcnN0KToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHcmFwaDo6bGFzdCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR3JhcGg8QmxvY2s+
OjpCeXRlY29kZUdyYXBoKToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbjoK
KyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNp
cyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0ZURlZnNG
b3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNp
czo6Y29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
TGl2ZW5lc3NBbmFseXNpczo6Z2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29kZU9mZnNldCk6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0ZUZ1bGxMaXZlbmVzcyk6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0ZUtpbGxzKToK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpkdW1wUmVzdWx0cyk6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0ZSk6CisgICAgICAg
IChKU0M6OmlzVmFsaWRSZWdpc3RlckZvckxpdmVuZXNzKTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6Z2V0TGVhZGVyT2Zmc2V0Rm9yQmFzaWNCbG9jayk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
OmZpbmRCYXNpY0Jsb2NrV2l0aExlYWRlck9mZnNldCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
OmJsb2NrQ29udGFpbnNCeXRlY29kZU9mZnNldCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OmZp
bmRCYXNpY0Jsb2NrRm9yQnl0ZWNvZGVPZmZzZXQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpz
dGVwT3Zlckluc3RydWN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Y29tcHV0ZUxvY2Fs
TGl2ZW5lc3NGb3JCeXRlY29kZU9mZnNldCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OmNvbXB1
dGVMb2NhbExpdmVuZXNzRm9yQmxvY2spOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUxpdmVuZXNzQW5hbHlzaXM6OnJ1bkxpdmVuZXNzRml4cG9pbnQpOiBEZWxldGVkLgorICAgICAg
ICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5oOgorICAgICAgICAqIGJ5dGVj
b2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGluZXMuaDoKKyAgICAgICAgKEpTQzo6aXNW
YWxpZFJlZ2lzdGVyRm9yTGl2ZW5lc3MpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNz
UHJvcGFnYXRpb248RGVyaXZlZEFuYWx5c2lzPjo6c3RlcE92ZXJJbnN0cnVjdGlvbik6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlTGl2ZW5lc3NQcm9wYWdhdGlvbjxEZXJpdmVkQW5hbHlzaXM+Ojpj
b21wdXRlTG9jYWxMaXZlbmVzc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0aW9uPERlcml2ZWRBbmFseXNpcz46OmNvbXB1dGVMb2NhbExp
dmVuZXNzRm9yQmxvY2spOgorICAgICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzUHJvcGFnYXRp
b248RGVyaXZlZEFuYWx5c2lzPjo6Z2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29kZU9mZnNldCk6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlTGl2ZW5lc3NQcm9wYWdhdGlvbjxEZXJpdmVkQW5hbHlzaXM+
OjpydW5MaXZlbmVzc0ZpeHBvaW50KToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZVJld3Jp
dGVyLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkJ5dGVjb2RlUmV3cml0ZXI6OmFwcGx5TW9k
aWZpY2F0aW9uKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVSZXdyaXRlcjo6ZXhlY3V0ZSk6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlUmV3cml0ZXI6OmFkanVzdEp1bXBUYXJnZXRzSW5KdW1wT3Bl
cmF0aW9uKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVSZXdyaXRlcjo6aW5zZXJ0SW1wbCk6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlUmV3cml0ZXI6Omluc2VydFN3aXRjaEltbWVkaWF0ZUltcGwp
OgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlUmV3cml0ZXIuaDogQWRkZWQuCisgICAgICAg
IChKU0M6OkJ5dGVjb2RlUmV3cml0ZXI6OkNvbW1hbmQ6Omxlbmd0aCk6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlUmV3cml0ZXI6OkZyYWdtZW50OjpGcmFnbWVudCk6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlUmV3cml0ZXI6OkZyYWdtZW50OjphcHBlbmQpOgorICAgICAgICAoSlNDOjpCeXRlY29k
ZVJld3JpdGVyOjpCeXRlY29kZVJld3JpdGVyKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVSZXdy
aXRlcjo6aW5zZXJ0QmVmb3JlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVSZXdyaXRlcjo6aW5z
ZXJ0QWZ0ZXIpOgorICAgICAgICAoSlNDOjpCeXRlY29kZVJld3JpdGVyOjppbnNlcnRGcmFnbWVu
dEJlZm9yZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlUmV3cml0ZXI6Omluc2VydEZyYWdtZW50
QWZ0ZXIpOgorICAgICAgICAoSlNDOjpCeXRlY29kZVJld3JpdGVyOjppbnNlcnRTd2l0Y2hJbW1l
ZGlhdGVCZWZvcmUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZVJld3JpdGVyOjpyZW1vdmVCeXRl
Y29kZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlUmV3cml0ZXI6OmdyYXBoKToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVSZXdyaXRlcjo6YWRqdXN0T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVSZXdyaXRlcjo6YWRqdXN0T2Zmc2V0V2l0aEluc2VydGlvbnMpOgorICAgICAgICAqIGJ5
dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmg6CisgICAgICAgIChKU0M6OmNvbXB1dGVVc2VzRm9yQnl0
ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0
KToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2Rl
QmxvY2s6OmR1bXBCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluaXNoQ3Jl
YXRpb24pOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmhhbmRsZXJGb3JJbmRleCk6CisgICAg
ICAgIChKU0M6OkNvZGVCbG9jazo6c2hyaW5rVG9GaXQpOgorICAgICAgICAoSlNDOjpDb2RlQmxv
Y2s6OnZhbHVlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Q29kZUJs
b2NrOjpsaXZlbmVzc0FuYWx5c2lzU2xvdyk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2Nr
Lmg6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6aXNDb25zdGFudFJlZ2lzdGVySW5kZXgpOgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmxpdmVuZXNzQW5hbHlzaXMpOgorICAgICAgICAoSlND
OjpDb2RlQmxvY2s6OmxpdmVDYWxsZWVMb2NhbHNBdFlpZWxkKTogRGVsZXRlZC4KKyAgICAgICAg
KiBieXRlY29kZS9IYW5kbGVySW5mby5oOgorICAgICAgICAoSlNDOjpIYW5kbGVySW5mb0Jhc2U6
OmhhbmRsZXJGb3JJbmRleCk6CisgICAgICAgICogYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRz
LmNwcDoKKyAgICAgICAgKEpTQzo6Z2V0SnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldCk6Cisg
ICAgICAgIChKU0M6OmNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHNJbnRlcm5hbCk6CisgICAgICAg
IChKU0M6OmNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMpOgorICAgICAgICAoSlNDOjpyZWNvbXB1
dGVQcmVjaXNlSnVtcFRhcmdldHMpOgorICAgICAgICAoSlNDOjpmaW5kSnVtcFRhcmdldHNGb3JC
eXRlY29kZU9mZnNldCk6CisgICAgICAgICogYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmg6
CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwOgorICAgICAgICAoSlND
OjpVbmxpbmtlZENvZGVCbG9jazo6aGFuZGxlckZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAg
KEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OmhhbmRsZXJGb3JJbmRleCk6CisgICAgICAgIChKU0M6
OlVubGlua2VkQ29kZUJsb2NrOjphcHBseU1vZGlmaWNhdGlvbik6CisgICAgICAgICogYnl0ZWNv
ZGUvVW5saW5rZWRDb2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRTdHJpbmdKdW1w
VGFibGU6Om9mZnNldEZvclZhbHVlKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6
Om51bUNhbGxlZUxvY2Fscyk6CisgICAgICAgICogYnl0ZWNvZGUvVmlydHVhbFJlZ2lzdGVyLmg6
CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNv
ZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXRDb21wbGV4UG9wU2NvcGVzKToKKyAgICAgICAgKEpTQzo6cHJlcGFyZUp1
bXBUYWJsZUZvclN0cmluZ1N3aXRjaCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0WWllbGRQb2ludCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
U2F2ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVz
dW1lKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZW5l
cmF0b3JTdGF0ZUxhYmVsKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0
b3I6OmJlZ2luR2VuZXJhdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5l
cmF0b3I6OmVuZEdlbmVyYXRvcik6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5l
cmF0b3JTdGF0ZVJlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6Omdl
bmVyYXRvclZhbHVlUmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6
Z2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5l
cmF0b3I6OmdlbmVyYXRvckZyYW1lUmVnaXN0ZXIpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9O
b2Rlc0NvZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpGdW5jdGlvbk5vZGU6OmVtaXRCeXRlY29k
ZSk6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGludGVycHJl
dGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpTQzo6ZmluZEV4Y2VwdGlvbkhhbmRsZXIp
OgorICAgICAgICAoSlNDOjpHZXRDYXRjaEhhbmRsZXJGdW5jdG9yOjpvcGVyYXRvcigpKToKKyAg
ICAgICAgKEpTQzo6VW53aW5kRnVuY3Rvcjo6b3BlcmF0b3IoKSk6CisgICAgICAgICogaW50ZXJw
cmV0ZXIvSW50ZXJwcmV0ZXIuaDoKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlcklu
bGluZXMuaDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNp
c2VKdW1wVGFyZ2V0cy5oLgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6Z2V0T3Bjb2RlSUQp
OgorICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21w
aWxlTWFpblBhc3MpOgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUT3Bj
b2Rlcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9zYXZlKTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0X29wX3Jlc3VtZSk6IERlbGV0ZWQuCisgICAgICAgICogbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc206CisgICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6
CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUlubmVyKToKKyAgICAgICAg
KEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlR2VuZXJhdG9yRnVuY3Rpb25Tb3VyY2VFbGVt
ZW50cyk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpjcmVhdGVHZW5lcmF0b3JQ
YXJhbWV0ZXJzKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmg6CisgICAgICAgICogcnVudGlt
ZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpTTE9XX1BBVEhfREVDTCk6IERl
bGV0ZWQuCisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuaDoKKyAgICAgICAgKiBy
dW50aW1lL0dlbmVyYXRvckZyYW1lLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJh
dG9yRnJhbWU6OkdlbmVyYXRvckZyYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJh
dG9yRnJhbWU6OmZpbmlzaENyZWF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJh
dG9yRnJhbWU6OmNyZWF0ZVN0cnVjdHVyZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkdlbmVy
YXRvckZyYW1lOjpjcmVhdGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFt
ZTo6c2F2ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpyZXN1bWUp
OiBEZWxldGVkLgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6dmlzaXRDaGlsZHJlbik6
IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9HZW5lcmF0b3JGcmFtZS5oOiBSZW1vdmVkLgor
ICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6bG9jYWxzKTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6R2VuZXJhdG9yRnJhbWU6OmxvY2FsQXQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpH
ZW5lcmF0b3JGcmFtZTo6b2Zmc2V0T2ZMb2NhbHMpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpH
ZW5lcmF0b3JGcmFtZTo6YWxsb2NhdGlvblNpemVGb3JMb2NhbHMpOiBEZWxldGVkLgorICAgICAg
ICAqIHJ1bnRpbWUvSlNHZW5lcmF0b3JGdW5jdGlvbi5oOgorICAgICAgICAqIHJ1bnRpbWUvVk0u
Y3BwOgorICAgICAgICAoSlNDOjpWTTo6Vk0pOgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKwog
MjAxNi0wOC0yNCAgUnlhbiBIYWRkYWQgIDxyeWFuaGFkZGFkQGFwcGxlLmNvbT4KIAogICAgICAg
ICBSZWJhc2VsaW5lIGJ1aWx0aW5zLWdlbmVyYXRvci10ZXN0cyBzaW5jZSByMjA0ODU0IHdhcyBy
b2xsZWQgb3V0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RG
L0NoYW5nZUxvZwppbmRleCBiZTA5MDM4ZmNiNDk5MGNkMGEwMTBkMmU4YzBmMDczNjg1NjAzOGZj
Li5iMjZkYzIzMDI4MWZiZDNlZGM1NDFiMzM2ZDUxZTNiZTNiNWUyNTEwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSw1ICsx
LDE2IEBACiAyMDE2LTA4LTI0ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29t
PgogCisgICAgICAgIFtERkddW0ZUTF0gSW1wbGVtZW50IEVTNiBHZW5lcmF0b3JzIGluIERGRyAv
IEZUTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUy
NzIzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3
dGYvRmFzdEJpdFZlY3Rvci5oOgorICAgICAgICAoV1RGOjpGYXN0Qml0VmVjdG9yOjpGYXN0Qml0
VmVjdG9yKToKKyAgICAgICAgKiB3dGYvSW5kZXhlZENvbnRhaW5lckl0ZXJhdG9yLmg6CisKKzIw
MTYtMDgtMjQgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKICAgICAg
ICAgW0pTQ10gTW92ZSBnZW5lcmljIGRhdGEgc3RydWN0dXJlcyBvdXQgb2YgQjMKICAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MTE1NQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggM2VkNTRiODE3MjY4MThhMDg4NGNkYzMyNWNm
MTdkZDI1YjJlYmU2MS4uM2JlZjQyY2Y4MmFkMGU3N2Q4NTY0MDFjOTM3MGRlMDEzMDg1MjM5MCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTgxLDYgKzE4MSw4IEBAIHNl
dChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgYnl0ZWNvZGUvQXJyYXlBbGxvY2F0aW9uUHJv
ZmlsZS5jcHAKICAgICBieXRlY29kZS9BcnJheVByb2ZpbGUuY3BwCiAgICAgYnl0ZWNvZGUvQnl0
ZWNvZGVCYXNpY0Jsb2NrLmNwcAorICAgIGJ5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0
aW9uLmNwcAorICAgIGJ5dGVjb2RlL0J5dGVjb2RlUmV3cml0ZXIuY3BwCiAgICAgYnl0ZWNvZGUv
Qnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5jcHAKICAgICBieXRlY29kZS9CeXRlY29kZUxpdmVu
ZXNzQW5hbHlzaXMuY3BwCiAgICAgYnl0ZWNvZGUvQ2FsbEVkZ2UuY3BwCkBAIC02NjEsNyArNjYz
LDYgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBydW50aW1lL0Z1bmN0aW9uSGFz
RXhlY3V0ZWRDYWNoZS5jcHAKICAgICBydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcAogICAg
IHJ1bnRpbWUvRnVuY3Rpb25SYXJlRGF0YS5jcHAKLSAgICBydW50aW1lL0dlbmVyYXRvckZyYW1l
LmNwcAogICAgIHJ1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKICAgICBy
dW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcAogICAgIHJ1bnRpbWUvR2VuZXJh
dG9yUHJvdG90eXBlLmNwcApAQCAtOTc5LDYgKzk4MCwxMCBAQCBhZGRfY3VzdG9tX2NvbW1hbmQo
CiAgICAgQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAke0pBVkFTQ1JJUFRDT1JFX0RJUn0v
Z2VuZXJhdGUtYnl0ZWNvZGUtZmlsZXMgLS1ieXRlY29kZXNfaCAke0RFUklWRURfU09VUkNFU19K
QVZBU0NSSVBUQ09SRV9ESVJ9L0J5dGVjb2Rlcy5oIC0taW5pdF9ieXRlY29kZXNfYXNtICR7REVS
SVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5pdEJ5dGVjb2Rlcy5hc20gJHtKQVZB
U0NSSVBUQ09SRV9ESVJ9L2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCiAgICAgVkVSQkFUSU0p
CiAKK2xpc3QoQVBQRU5EIEphdmFTY3JpcHRDb3JlX0hFQURFUlMKKyAgICAke0RFUklWRURfU09V
UkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0J5dGVjb2Rlcy5oCispCisKIGFkZF9jdXN0b21fY29t
bWFuZCgKICAgICBPVVRQVVQgJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9M
TEludERlc2lyZWRPZmZzZXRzLmgKICAgICBNQUlOX0RFUEVOREVOQ1kgJHtKQVZBU0NSSVBUQ09S
RV9ESVJ9L29mZmxpbmVhc20vZ2VuZXJhdGVfb2Zmc2V0X2V4dHJhY3Rvci5yYgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCBhMWQ5ODNkOGYwMDdlOTBjMzYyYjU5OTVkNDYwZTI5MDNi
MjI1M2Q2Li5hM2RkYWRkM2UwNWFiZDlhMDAyMGUwMTc5OWEwNzgzYjMwMGI0M2NmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTI3MCw4ICsxMjcwLDYgQEAKIAkJNzA5RkI4NkMx
QUUzMzVDNjAwMzlEMDY5IC8qIFdlYWtTZXRQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwOUZCODY2MUFFMzM1QzYwMDM5RDA2OSAvKiBX
ZWFrU2V0UHJvdG90eXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJNzBCMEE5RDExQTlCNjY0NjAwMDEzMDZBIC8qIFJ1bnRpbWVGbGFncy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBCMEE5RDAxQTlC
NjYyMDAwMDEzMDZBIC8qIFJ1bnRpbWVGbGFncy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcwQjc5MTkxMUMwMjRBMTMwMDI0ODFFMiAvKiBTb3Vy
Y2VDb2RlS2V5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3MEI3OTE4RTFDMDI0NEM5MDAyNDgxRTIgLyogU291cmNlQ29kZUtleS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTcwQjc5MTkyMUMwMjRBMjMw
MDI0ODFFMiAvKiBHZW5lcmF0b3JGcmFtZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3MEI3OTE4MzFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9y
RnJhbWUuY3BwICovOyB9OwotCQk3MEI3OTE5MzFDMDI0QTI4MDAyNDgxRTIgLyogR2VuZXJhdG9y
RnJhbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcw
Qjc5MTg0MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGcmFtZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcwQjc5MTk0MUMwMjRBMjgwMDI0
ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwQjc5MTg1MUMwMjQ0MzIwMDI0ODFFMiAv
KiBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCAqLzsgfTsKIAkJNzBCNzkxOTUxQzAy
NEEyODAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwQjc5MTg2MUMwMjQ0MzIwMDI0
ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzBCNzkxOTYxQzAyNEEyODAwMjQ4MUUy
IC8qIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwQjc5MTg3MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5l
cmF0b3JGdW5jdGlvblByb3RvdHlwZS5jcHAgKi87IH07CkBAIC0yMDQ1LDYgKzIwNDMsMTEgQEAK
IAkJRTE4RTNBNTkwREY5Mjc4QzAwRDkwQjM0IC8qIFZNLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxOEUzQTU3MERGOTI3OEMwMEQ5MEIzNCAvKiBW
TS5jcHAgKi87IH07CiAJCUUzMThDQkMwMUI4QUVGNTEwMEEyOTI5RCAvKiBKU01vZHVsZU5hbWVz
cGFjZU9iamVjdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFMzE4Q0JCRTFCOEFFRjUxMDBBMjkyOUQgLyogSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Qu
Y3BwICovOyB9OwogCQlFMzE4Q0JDMTFCOEFFRjUxMDBBMjkyOUQgLyogSlNNb2R1bGVOYW1lc3Bh
Y2VPYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUzMThDQkJGMUI4QUVGNTEwMEEyOTI5RCAvKiBKU01vZHVsZU5hbWVzcGFjZU9iamVjdC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUUzMjhEQUU3
MUQzOEQwMDQwMDFBMjUyOSAvKiBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0QyNjQyNjFEMzhDMDQy
MDAwQkUxNzQgLyogQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwICovOyB9OworCQlFMzI4
REFFODFEMzhEMDA1MDAxQTI1MjkgLyogQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzRDI2NDI3MUQzOEMw
NDIwMDBCRTE3NCAvKiBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUUzMjhEQUU5MUQzOEQwMDUwMDFB
MjUyOSAvKiBCeXRlY29kZUdyYXBoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFM0QyNjQyODFEMzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNvZGVHcmFwaC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUUzMjhE
QUVBMUQzOEQwMDUwMDFBMjUyOSAvKiBCeXRlY29kZVJld3JpdGVyLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzRDI2NDI5MUQzOEMwNDIwMDBCRTE3
NCAvKiBCeXRlY29kZVJld3JpdGVyLmNwcCAqLzsgfTsKKwkJRTMyOERBRUIxRDM4RDAwNTAwMUEy
NTI5IC8qIEJ5dGVjb2RlUmV3cml0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEUzRDI2NDJBMUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRlY29kZVJld3Jp
dGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
RTMzNjM3QTUxQjYzMjIwMjAwRUUwODQwIC8qIFJlZmxlY3RPYmplY3QuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMzNjM3QTMxQjYzMjIwMjAwRUUw
ODQwIC8qIFJlZmxlY3RPYmplY3QuY3BwICovOyB9OwogCQlFMzM2MzdBNjFCNjMyMjAyMDBFRTA4
NDAgLyogUmVmbGVjdE9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTMzNjM3QTQxQjYzMjIwMjAwRUUwODQwIC8qIFJlZmxlY3RPYmplY3QuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzNCM0Uy
NjFCN0FCRDc1MDA0OERCMkUgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0Lmx1dC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMzQjNFMjUx
QjdBQkQ3NTAwNDhEQjJFIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5sdXQuaCAq
LzsgfTsKQEAgLTIwNjksNiArMjA3Miw3IEBACiAJCUUzNzk0RTc1MUI3N0VCOTcwMDU1NDNBRSAv
KiBNb2R1bGVBbmFseXplci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFMzc5NEU3MzFCNzdFQjk3MDA1NTQzQUUgLyogTW9kdWxlQW5hbHl6ZXIuY3Bw
ICovOyB9OwogCQlFMzc5NEU3NjFCNzdFQjk3MDA1NTQzQUUgLyogTW9kdWxlQW5hbHl6ZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNzk0RTc0MUI3
N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFseXplci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzOTYzQ0VFMUI3M0Y3NTAwMEVCNENFNSAvKiBO
b2Rlc0FuYWx5emVNb2R1bGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTM5NjNDRUMxQjczRjc1MDAwRUI0Q0U1IC8qIE5vZGVzQW5hbHl6ZU1vZHVs
ZS5jcHAgKi87IH07CisJCUUzOUQ0NUY1MUQzOTAwNTYwMEIzQjM3NyAvKiBJbnRlcnByZXRlcklu
bGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUz
OUQ5RDg0MUQzOTAwMDYwMDY2NzI4MiAvKiBJbnRlcnByZXRlcklubGluZXMuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzlEQTRBNjFCN0U4QjdD
MDA4NEYzM0EgLyogSlNNb2R1bGVSZWNvcmQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5REE0QTQxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxl
UmVjb3JkLmNwcCAqLzsgfTsKIAkJRTM5REE0QTcxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxl
UmVjb3JkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
MzlEQTRBNTFCN0U4QjdDMDA4NEYzM0EgLyogSlNNb2R1bGVSZWNvcmQuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFM0QyMzlDODFCODI5QzFDMDBC
QkVGNjcgLyogSlNNb2R1bGVFbnZpcm9ubWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0QyMzlDNjFCODI5QzFDMDBCQkVGNjcgLyogSlNNb2R1
bGVFbnZpcm9ubWVudC5jcHAgKi87IH07CkBAIC0zNDkyLDggKzM0OTYsNiBAQAogCQk3MDlGQjg2
NTFBRTMzNUM2MDAzOUQwNjkgLyogV2Vha1NldFByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWFrU2V0UHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNzA5RkI4NjYxQUUzMzVDNjAwMzlEMDY5IC8qIFdlYWtTZXRQcm90
b3R5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vha1NldFByb3RvdHlw
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MEIwQTlEMDFBOUI2NjIwMDAwMTMw
NkEgLyogUnVudGltZUZsYWdzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJ1
bnRpbWVGbGFncy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3MEI3OTE4MzFDMDI0
NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnJhbWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gR2VuZXJhdG9yRnJhbWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQk3MEI3OTE4NDFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnJhbWUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2VuZXJhdG9yRnJhbWUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzBCNzkxODUxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRv
ckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTcwQjc5MTg2MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlv
bkNvbnN0cnVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdlbmVyYXRv
ckZ1bmN0aW9uQ29uc3RydWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzBC
NzkxODcxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdlbmVyYXRvckZ1bmN0aW9uUHJv
dG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQzMzMsMTAgKzQzMzUs
MTYgQEAKIAkJRTM3OTRFNzMxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1vZHVsZUFuYWx5emVyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM3OTRFNzQxQjc3RUI5NzAwNTU0M0FFIC8q
IE1vZHVsZUFuYWx5emVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vZHVs
ZUFuYWx5emVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOTYzQ0VDMUI3M0Y3
NTAwMEVCNENFNSAvKiBOb2Rlc0FuYWx5emVNb2R1bGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gTm9kZXNBbmFseXplTW9kdWxlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJRTM5RDlEODQxRDM5MDAwNjAwNjY3MjgyIC8qIEludGVycHJldGVySW5s
aW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRlcnByZXRlcklubGlu
ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM5REE0QTQxQjdFOEI3QzAwODRG
MzNBIC8qIEpTTW9kdWxlUmVjb3JkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTTW9kdWxlUmVjb3JkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RTM5REE0QTUxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTW9kdWxlUmVjb3JkLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUUzRDIzOUM2MUI4MjlDMUMwMEJCRUY2NyAvKiBKU01vZHVsZUVudmlyb25t
ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTW9kdWxlRW52
aXJvbm1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0QyMzlDNzFCODI5
QzFDMDBCQkVGNjcgLyogSlNNb2R1bGVFbnZpcm9ubWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBKU01vZHVsZUVudmlyb25tZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUUzRDI2NDI2MUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRlY29kZUdlbmVyYXRvcmlm
aWNhdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCeXRlY29k
ZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUz
RDI2NDI3MUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlv
bi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFM0QyNjQyODFEMzhDMDQyMDAwQkUx
NzQgLyogQnl0ZWNvZGVHcmFwaC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBC
eXRlY29kZUdyYXBoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzRDI2NDI5MUQz
OEMwNDIwMDBCRTE3NCAvKiBCeXRlY29kZVJld3JpdGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEJ5dGVjb2RlUmV3cml0ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlFM0QyNjQyQTFEMzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNvZGVSZXdyaXRl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCeXRlY29kZVJld3JpdGVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzRUY4ODcyMUI2NkRGMjMwMDNGMjZDQiAv
KiBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlFM0VGODg3MzFCNjZERjIzMDAzRjI2Q0IgLyogSlNQcm9wZXJ0eU5hbWVJdGVy
YXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1Byb3BlcnR5TmFtZUl0
ZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0OURDMTQ5MTJFRjI2MUEw
MDE4NEExRiAvKiBTb3VyY2VQcm92aWRlckNhY2hlSXRlbS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTb3VyY2VQcm92aWRlckNhY2hlSXRlbS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtNTA2Myw2ICs1MDcxLDcgQEAKIAkJMTQyOUQ3N0EwRUQyMEQ3MzAwQjg5
NjE5IC8qIGludGVycHJldGVyICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJl
biA9ICgKKwkJCQlFMzlEOUQ4NDFEMzkwMDA2MDA2NjcyODIgLyogSW50ZXJwcmV0ZXJJbmxpbmVz
LmggKi8sCiAJCQkJMEY1NUYwRjExNEQxMDYzNjAwQUM3NjQ5IC8qIEFic3RyYWN0UEMuY3BwICov
LAogCQkJCTBGNTVGMEYyMTREMTA2MzYwMEFDNzY0OSAvKiBBYnN0cmFjdFBDLmggKi8sCiAJCQkJ
MTQyOUQ4NUIwRUQyMThFOTAwQjg5NjE5IC8qIENMb29wU3RhY2suY3BwICovLApAQCAtNTc0Myw4
ICs1NzUyLDYgQEAKIAkJCQlGNjkyQTg1RDAyNTU1OTdEMDFGRjYwRjcgLyogRnVuY3Rpb25Qcm90
b3R5cGUuaCAqLywKIAkJCQk2MkQyRDM4RDFBREYxMDNGMDAwMjA2QzEgLyogRnVuY3Rpb25SYXJl
RGF0YS5jcHAgKi8sCiAJCQkJNjJEMkQzOEUxQURGMTAzRjAwMDIwNkMxIC8qIEZ1bmN0aW9uUmFy
ZURhdGEuaCAqLywKLQkJCQk3MEI3OTE4MzFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnJh
bWUuY3BwICovLAotCQkJCTcwQjc5MTg0MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGcmFt
ZS5oICovLAogCQkJCTcwQjc5MTg1MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlv
bkNvbnN0cnVjdG9yLmNwcCAqLywKIAkJCQk3MEI3OTE4NjFDMDI0NDMyMDAyNDgxRTIgLyogR2Vu
ZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5oICovLAogCQkJCTcwQjc5MTg3MUMwMjQ0MzIwMDI0
ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5jcHAgKi8sCkBAIC02NjMwLDYgKzY2
MzcsMTEgQEAKIAkJOTY5QTA3OEYwRUQxRDNBRTAwRjFGNjgxIC8qIGJ5dGVjb2RlICovID0gewog
CQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlFM0QyNjQyNjFEMzhDMDQy
MDAwQkUxNzQgLyogQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwICovLAorCQkJCUUzRDI2
NDI3MUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5oICovLAor
CQkJCUUzRDI2NDI4MUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRlY29kZUdyYXBoLmggKi8sCisJCQkJ
RTNEMjY0MjkxRDM4QzA0MjAwMEJFMTc0IC8qIEJ5dGVjb2RlUmV3cml0ZXIuY3BwICovLAorCQkJ
CUUzRDI2NDJBMUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRlY29kZVJld3JpdGVyLmggKi8sCiAJCQkJ
NTM3MEI0RjMxQkYyNUVBMjAwNUM0MEZDIC8qIEFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVl
V2F0Y2hwb2ludEJhc2UuY3BwICovLAogCQkJCTUzNzBCNEY0MUJGMjVFQTIwMDVDNDBGQyAvKiBB
ZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnRCYXNlLmggKi8sCiAJCQkJMEY4
MzM1QjQxNjM5QzFFMzAwMTQ0M0I1IC8qIEFycmF5QWxsb2NhdGlvblByb2ZpbGUuY3BwICovLApA
QCAtNzE4NCw2ICs3MTk2LDcgQEAKIAkJCQkwRkVDODUyRDFCREFDREFDMDA4MEZGNzQgLyogQjNQ
cm9jZWR1cmVJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVDODVCRDFCRTE0NjJGMDA4
MEZGNzQgLyogQjNSZWR1Y2VTdHJlbmd0aC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQzg1MzEx
QkRBQ0RBQzAwODBGRjc0IC8qIEIzU3RhY2ttYXBTcGVjaWFsLmggaW4gSGVhZGVycyAqLywKKwkJ
CQlFMzI4REFFODFEMzhEMDA1MDAxQTI1MjkgLyogQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24u
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUM4NTM1MUJEQUNEQUMwMDgwRkY3NCAvKiBCM1Nsb3RC
YXNlVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUM4NTM2MUJEQUNEQUMwMDgwRkY3NCAv
KiBCM1N1Y2Nlc3NvckNvbGxlY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUM4NTM4MUJE
QUNEQUMwMDgwRkY3NCAvKiBCM1N3aXRjaENhc2UuaCBpbiBIZWFkZXJzICovLApAQCAtNzQ0OSw3
ICs3NDYyLDYgQEAKIAkJCQlBNzM3ODEwRTE3OTlFQTJFMDA4MTc1MzMgLyogREZHTmF0dXJhbExv
b3BzLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkVDQTNFQTEzMkRFRjFDMDAyQjJBRDcgLyogREZH
Tm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGQjkyMUIxNkQwMkYwMTAwNTVBNURCIC8qIERG
R05vZGVBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovLAotCQkJCTcwQjc5MTkzMUMwMjRBMjgwMDI0
ODFFMiAvKiBHZW5lcmF0b3JGcmFtZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZBNTgxQkIxNTBF
OTUzMDAwQjlBMkQ5IC8qIERGR05vZGVGbGFncy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYzMDBC
NzgxOEFCMDUxMTAwQTZENzJFIC8qIERGR05vZGVPcmlnaW4uaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGQTU4MUJDMTUwRTk1MzAwMEI5QTJEOSAvKiBERkdOb2RlVHlwZS5oIGluIEhlYWRlcnMgKi8s
CkBAIC03NDY0LDYgKzc0NzYsNyBAQAogCQkJCTBGRDhBMzI2MTdENTFGNTcwMENBMkM0MCAvKiBE
RkdPU1JFbnRyeXBvaW50Q3JlYXRpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDMDk3
NkExNDY4QTZGNzAwQ0YyNDQyIC8qIERGR09TUkV4aXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
MjM1QkVDMTcxNzhFNzMwMDY5MEM3RiAvKiBERkdPU1JFeGl0QmFzZS5oIGluIEhlYWRlcnMgKi8s
CisJCQkJRTM5RDQ1RjUxRDM5MDA1NjAwQjNCMzc3IC8qIEludGVycHJldGVySW5saW5lcy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEZGQjkyMUMxNkQwMkYxMTAwNTVBNURCIC8qIERGR09TUkV4aXRD
b21waWxhdGlvbkluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQzA5NzcxMTQ2OTNBRjUwMENG
MjQ0MiAvKiBERkdPU1JFeGl0Q29tcGlsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNzAyNUFB
MTcxNEIwRkMwMDM4MkMwRSAvKiBERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uaCBpbiBIZWFkZXJz
ICovLApAQCAtNzcyNiw2ICs3NzM5LDcgQEAKIAkJCQlFMzNCM0UyNjFCN0FCRDc1MDA0OERCMkUg
LyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0Lmx1dC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTUzMjQzOEMxODU2ODMzNTAwMkVENjkyIC8qIEluc3BlY3RvclByb3RvY29sT2JqZWN0cy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQTU1RDkzQUMxODUxNEY3OTAwNDAwREVEIC8qIEluc3BlY3Rv
clByb3RvY29sVHlwZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzMjhEQUVCMUQzOEQwMDUwMDFB
MjUyOSAvKiBCeXRlY29kZVJld3JpdGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTBFNEI2MjE4
ODA5REQ1MDA2OEE0NkQgLyogSW5zcGVjdG9yUnVudGltZUFnZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQlBNTkzQ0Y4MzE4NDAzNzcxMDBCRkNFMjcgLyogSW5zcGVjdG9yVmFsdWVzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk5NjlBMDc5OTBFRDFEM0FFMDBGMUY2ODEgLyogSW5zdHJ1Y3Rpb24uaCBp
biBIZWFkZXJzICovLApAQCAtNzg1Nyw2ICs3ODcxLDcgQEAKIAkJCQlFMzNGNTA4MTFCODQyOUE0
MDA0MTM4NTYgLyogSlNJbnRlcm5hbFByb21pc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNjE4
MzJBMUM0NUJGMDcwMDcyNDUwQiAvKiBBaXJDQ2FsbGluZ0NvbnZlbnRpb24uaCBpbiBIZWFkZXJz
ICovLAogCQkJCUUzM0Y1MDc5MUI4NDIyNTcwMDQxMzg1NiAvKiBKU0ludGVybmFsUHJvbWlzZUNv
bnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzI4REFFOTFEMzhEMDA1MDAxQTI1Mjkg
LyogQnl0ZWNvZGVHcmFwaC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTMzRjUwODcxQjg0NDlFRjAw
NDEzODU2IC8qIEpTSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IubHV0LmggaW4gSGVhZGVycyAq
LywKIAkJCQlFMzNGNTA4NTFCODQzN0EwMDA0MTM4NTYgLyogSlNJbnRlcm5hbFByb21pc2VEZWZl
cnJlZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTMzRjUwNzUxQjg0MjFDMDAwNDEzODU2IC8qIEpT
SW50ZXJuYWxQcm9taXNlUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKQEAgLTg4MjMsNiArODgz
OCw3IEBACiAJCQkJMTQ3RjM5QkQxMDdFQzM3NjAwNDI3QTQ4IC8qIEFyZ0xpc3QuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEY3NDNCQUExNkI4ODI0OTAwOUY5Mjc3IC8qIEFSTTY0RGlzYXNzZW1i
bGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2RDNCMkMzMTAxNTZCREUwMDI4NjVFNyAvKiBB
Uk1Bc3NlbWJsZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTMyOERBRTcxRDM4RDAwNDAwMUEy
NTI5IC8qIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTY1QzAyODUwMTcxNzk1RTIwMDM1MUUzNSAvKiBBUk12N0Rpc2Fzc2VtYmxlci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk2NUMwMjg1QzE3MTc5NjY4MDAzNTFFMzUgLyogQVJNdjdET3Bjb2RlLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTBGODMzNUI3MTYzOUMxRTYwMDE0NDNCNSAvKiBBcnJheUFs
bG9jYXRpb25Qcm9maWxlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtOTE1OCw2ICs5MTc0LDcgQEAK
IAkJCQkwRjI1RjFCMTE4MTYzNUYzMDA1MjJGMzkgLyogRlRMU2xvd1BhdGhDYWxsLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTBGMzM4REYxMUJFOTNBRDEwMDEzQzg4RiAvKiBCM1N0YWNrbWFwVmFs
dWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyNUYxQjMxODE2MzVGMzAwNTIyRjM5IC8qIEZU
TFNsb3dQYXRoQ2FsbEtleS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFMzI4REFFQTFEMzhEMDA1
MDAxQTI1MjkgLyogQnl0ZWNvZGVSZXdyaXRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MzE5
REEwMzFDMUJFNDBBMDAxRDI2MEIgLyogQjNMb3dlck1hY3Jvc0FmdGVyT3B0aW1pemF0aW9ucy5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkVBMEExNjE3MDZCQjkwMDBCQjcyMkMgLyogRlRMU3Rh
dGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyMzVCRTExNzE3OEUxQzAwNjkwQzdGIC8qIEZU
TFRodW5rcy5jcHAgaW4gU291cmNlcyAqLywKQEAgLTk1NjUsNyArOTU4Miw2IEBACiAJCQkJNzlF
RTBCRkYxQjRBRkI4NTAwMDM4NUM5IC8qIFZhcmlhYmxlRW52aXJvbm1lbnQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMEY2QzczNTAxQUM5Rjk5RjAwQkUxNjgyIC8qIFZhcmlhYmxlV3JpdGVGaXJl
RGV0YWlsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRTA1MDJDMUFBOTA5NTYwMEQzM0IzMyAv
KiBWYXJPZmZzZXQuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNzBCNzkxOTIxQzAyNEEyMzAwMjQ4
MUUyIC8qIEdlbmVyYXRvckZyYW1lLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMjBDMjU5MUE4
MDEzQUIwMERBMzIyOSAvKiBWaXJ0dWFsUmVnaXN0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
RTE4RTNBNTkwREY5Mjc4QzAwRDkwQjM0IC8qIFZNLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZF
NTkzMkE3MTgzQzVBMjYwMEExRUNDQyAvKiBWTUVudHJ5U2NvcGUuY3BwIGluIFNvdXJjZXMgKi8s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvR2VuZXJhdG9yUHJv
dG90eXBlLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0dlbmVyYXRvclByb3Rv
dHlwZS5qcwppbmRleCAzYzE0MDY4N2RmYzdlMDBlZmU5MWFlODBiMmFjNjc2ZmE5YmY0OGY0Li40
OTlkYmQzOTJlODMxM2RjZGQ4NmVjOGMxNjA1NjlkN2Q2ZjU0OWIxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvR2VuZXJhdG9yUHJvdG90eXBlLmpzCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9HZW5lcmF0b3JQcm90b3R5cGUuanMKQEAgLTUx
LDcgKzUxLDcgQEAgZnVuY3Rpb24gZ2VuZXJhdG9yUmVzdW1lKGdlbmVyYXRvciwgc2VudFZhbHVl
LCByZXN1bWVNb2RlKQogICAgIH0gZWxzZSB7CiAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICBn
ZW5lcmF0b3IuQGdlbmVyYXRvclN0YXRlID0gQEdlbmVyYXRvclN0YXRlRXhlY3V0aW5nOwotICAg
ICAgICAgICAgdmFsdWUgPSBnZW5lcmF0b3IuQGdlbmVyYXRvck5leHQuQGNhbGwoZ2VuZXJhdG9y
LkBnZW5lcmF0b3JUaGlzLCBnZW5lcmF0b3IsIHN0YXRlLCBzZW50VmFsdWUsIHJlc3VtZU1vZGUp
OworICAgICAgICAgICAgdmFsdWUgPSBnZW5lcmF0b3IuQGdlbmVyYXRvck5leHQuQGNhbGwoZ2Vu
ZXJhdG9yLkBnZW5lcmF0b3JUaGlzLCBnZW5lcmF0b3IsIHN0YXRlLCBzZW50VmFsdWUsIHJlc3Vt
ZU1vZGUsIGdlbmVyYXRvci5AZ2VuZXJhdG9yRnJhbWUpOwogICAgICAgICAgICAgaWYgKGdlbmVy
YXRvci5AZ2VuZXJhdG9yU3RhdGUgPT09IEBHZW5lcmF0b3JTdGF0ZUV4ZWN1dGluZykgewogICAg
ICAgICAgICAgICAgIGdlbmVyYXRvci5AZ2VuZXJhdG9yU3RhdGUgPSBAR2VuZXJhdG9yU3RhdGVD
b21wbGV0ZWQ7CiAgICAgICAgICAgICAgICAgZG9uZSA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suY3BwCmluZGV4IDdm
MTdjMGVmMTBiNDMzZmFjOGY1OGNiM2I5Y2E1ZDRkMDE1YmJhMDguLjQ3NTI3YjE1YzkxZjJmZmQ0
MWJhZGM5NzRjODRjODhiZjIxZWJmMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAj
aW5jbHVkZSAiQnl0ZWNvZGVCYXNpY0Jsb2NrLmgiCiAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIK
KyNpbmNsdWRlICJJbnRlcnByZXRlcklubGluZXMuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgi
CiAjaW5jbHVkZSAiUHJlY2lzZUp1bXBUYXJnZXRzLmgiCiAKQEAgLTU4LDcgKzU5LDYgQEAgc3Rh
dGljIGJvb2wgaXNCcmFuY2goT3Bjb2RlSUQgb3Bjb2RlSUQpCiAgICAgY2FzZSBvcF9zd2l0Y2hf
aW1tOgogICAgIGNhc2Ugb3Bfc3dpdGNoX2NoYXI6CiAgICAgY2FzZSBvcF9zd2l0Y2hfc3RyaW5n
OgotICAgIGNhc2Ugb3Bfc2F2ZToKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgZGVmYXVsdDoK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTA1LDE1ICsxMDUsMjAgQEAgc3RhdGljIGJvb2wg
aXNKdW1wVGFyZ2V0KE9wY29kZUlEIG9wY29kZUlELCBjb25zdCBWZWN0b3I8dW5zaWduZWQsIDMy
PiYganVtcFRhcmcKICAgICByZXR1cm4gc3RkOjpiaW5hcnlfc2VhcmNoKGp1bXBUYXJnZXRzLmJl
Z2luKCksIGp1bXBUYXJnZXRzLmVuZCgpLCBieXRlY29kZU9mZnNldCk7CiB9CiAKLXN0YXRpYyB2
b2lkIGxpbmtCbG9ja3MoQnl0ZWNvZGVCYXNpY0Jsb2NrKiBwcmVkZWNlc3NvciwgQnl0ZWNvZGVC
YXNpY0Jsb2NrKiBzdWNjZXNzb3IpCi17Ci0gICAgcHJlZGVjZXNzb3ItPmFkZFN1Y2Nlc3Nvcihz
dWNjZXNzb3IpOwotfQotCi12b2lkIGNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzKENvZGVCbG9j
ayogY29kZUJsb2NrLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+
JiBiYXNpY0Jsb2NrcykKK3RlbXBsYXRlPHR5cGVuYW1lIEJsb2NrLCB0eXBlbmFtZSBJbnN0cnVj
dGlvbj4KK3ZvaWQgQnl0ZWNvZGVCYXNpY0Jsb2NrOjpjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2Nr
c0ludGVybmFsKEJsb2NrKiBjb2RlQmxvY2ssIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdp
biwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCwgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRl
Y29kZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9ja3MpCiB7CiAgICAgVmVjdG9yPHVuc2lnbmVkLCAz
Mj4ganVtcFRhcmdldHM7Ci0gICAgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhjb2RlQmxvY2ss
IGp1bXBUYXJnZXRzKTsKKyAgICBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKGNvZGVCbG9jaywg
aW5zdHJ1Y3Rpb25zQmVnaW4sIGluc3RydWN0aW9uQ291bnQsIGp1bXBUYXJnZXRzKTsKKworICAg
IGF1dG8gYXBwZW5kQmxvY2sgPSBbJl0gKHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxv
Y2s+JiYgYmxvY2spIHsKKyAgICAgICAgYmxvY2stPm1faW5kZXggPSBiYXNpY0Jsb2Nrcy5zaXpl
KCk7CisgICAgICAgIGJhc2ljQmxvY2tzLmFwcGVuZChXVEZNb3ZlKGJsb2NrKSk7CisgICAgfTsK
KworICAgIGF1dG8gbGlua0Jsb2NrcyA9IFsmXSAoQnl0ZWNvZGVCYXNpY0Jsb2NrKiBmcm9tLCBC
eXRlY29kZUJhc2ljQmxvY2sqIHRvKSB7CisgICAgICAgIGZyb20tPmFkZFN1Y2Nlc3Nvcih0byk7
CisgICAgfTsKIAogICAgIC8vIENyZWF0ZSB0aGUgZW50cnkgYW5kIGV4aXQgYmFzaWMgYmxvY2tz
LgogICAgIGJhc2ljQmxvY2tzLnJlc2VydmVDYXBhY2l0eShqdW1wVGFyZ2V0cy5zaXplKCkgKyAy
KTsKQEAgLTEyMiwxOSArMTI3LDE3IEBAIHZvaWQgY29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3Mo
Q29kZUJsb2NrKiBjb2RlQmxvY2ssIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0CiAgICAgYXV0
byBmaXJzdEJsb2NrID0gc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZUJhc2ljQmxvY2s+KDAsIDAp
OwogICAgIGxpbmtCbG9ja3MoZW50cnkuZ2V0KCksIGZpcnN0QmxvY2suZ2V0KCkpOwogCi0gICAg
YmFzaWNCbG9ja3MuYXBwZW5kKFdURk1vdmUoZW50cnkpKTsKKyAgICBhcHBlbmRCbG9jayhXVEZN
b3ZlKGVudHJ5KSk7CiAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBjdXJyZW50ID0gZmlyc3RCbG9j
ay5nZXQoKTsKLSAgICBiYXNpY0Jsb2Nrcy5hcHBlbmQoV1RGTW92ZShmaXJzdEJsb2NrKSk7Cisg
ICAgYXBwZW5kQmxvY2soV1RGTW92ZShmaXJzdEJsb2NrKSk7CiAKICAgICBhdXRvIGV4aXQgPSBz
dGQ6Om1ha2VfdW5pcXVlPEJ5dGVjb2RlQmFzaWNCbG9jaz4oQnl0ZWNvZGVCYXNpY0Jsb2NrOjpF
eGl0QmxvY2spOwogCiAgICAgYm9vbCBuZXh0SW5zdHJ1Y3Rpb25Jc0xlYWRlciA9IGZhbHNlOwog
CiAgICAgSW50ZXJwcmV0ZXIqIGludGVycHJldGVyID0gY29kZUJsb2NrLT52bSgpLT5pbnRlcnBy
ZXRlcjsKLSAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4gPSBjb2RlQmxvY2stPmlu
c3RydWN0aW9ucygpLmJlZ2luKCk7Ci0gICAgdW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCA9IGNv
ZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpOwogICAgIGZvciAodW5zaWduZWQgYnl0ZWNv
ZGVPZmZzZXQgPSAwOyBieXRlY29kZU9mZnNldCA8IGluc3RydWN0aW9uQ291bnQ7KSB7Ci0gICAg
ICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGluc3RydWN0
aW9uc0JlZ2luW2J5dGVjb2RlT2Zmc2V0XS51Lm9wY29kZSk7CisgICAgICAgIE9wY29kZUlEIG9w
Y29kZUlEID0gaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGluc3RydWN0aW9uc0JlZ2luW2J5dGVj
b2RlT2Zmc2V0XSk7CiAgICAgICAgIHVuc2lnbmVkIG9wY29kZUxlbmd0aCA9IG9wY29kZUxlbmd0
aHNbb3Bjb2RlSURdOwogCiAgICAgICAgIGJvb2wgY3JlYXRlZEJsb2NrID0gZmFsc2U7CkBAIC0x
NDIsNyArMTQ1LDcgQEAgdm9pZCBjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2NrcyhDb2RlQmxvY2sq
IGNvZGVCbG9jaywgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXQKICAgICAgICAgaWYgKGlzSnVt
cFRhcmdldChvcGNvZGVJRCwganVtcFRhcmdldHMsIGJ5dGVjb2RlT2Zmc2V0KSB8fCBuZXh0SW5z
dHJ1Y3Rpb25Jc0xlYWRlcikgewogICAgICAgICAgICAgYXV0byBuZXdCbG9jayA9IHN0ZDo6bWFr
ZV91bmlxdWU8Qnl0ZWNvZGVCYXNpY0Jsb2NrPihieXRlY29kZU9mZnNldCwgb3Bjb2RlTGVuZ3Ro
KTsKICAgICAgICAgICAgIGN1cnJlbnQgPSBuZXdCbG9jay5nZXQoKTsKLSAgICAgICAgICAgIGJh
c2ljQmxvY2tzLmFwcGVuZChXVEZNb3ZlKG5ld0Jsb2NrKSk7CisgICAgICAgICAgICBhcHBlbmRC
bG9jayhXVEZNb3ZlKG5ld0Jsb2NrKSk7CiAgICAgICAgICAgICBjcmVhdGVkQmxvY2sgPSB0cnVl
OwogICAgICAgICAgICAgbmV4dEluc3RydWN0aW9uSXNMZWFkZXIgPSBmYWxzZTsKICAgICAgICAg
ICAgIGJ5dGVjb2RlT2Zmc2V0ICs9IG9wY29kZUxlbmd0aDsKQEAgLTE2OSw4ICsxNzIsNyBAQCB2
b2lkIGNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzKENvZGVCbG9jayogY29kZUJsb2NrLCBWZWN0
b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dAogCiAgICAgICAgIGJvb2wgZmFsbHNUaHJvdWdoID0gdHJ1
ZTsgCiAgICAgICAgIGZvciAodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQgPSBibG9jay0+bGVhZGVy
Qnl0ZWNvZGVPZmZzZXQoKTsgYnl0ZWNvZGVPZmZzZXQgPCBibG9jay0+bGVhZGVyQnl0ZWNvZGVP
ZmZzZXQoKSArIGJsb2NrLT50b3RhbEJ5dGVjb2RlTGVuZ3RoKCk7KSB7Ci0gICAgICAgICAgICBj
b25zdCBJbnN0cnVjdGlvbiYgY3VycmVudEluc3RydWN0aW9uID0gaW5zdHJ1Y3Rpb25zQmVnaW5b
Ynl0ZWNvZGVPZmZzZXRdOwotICAgICAgICAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnRlcnBy
ZXRlci0+Z2V0T3Bjb2RlSUQoY3VycmVudEluc3RydWN0aW9uLnUub3Bjb2RlKTsKKyAgICAgICAg
ICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGluc3RydWN0
aW9uc0JlZ2luW2J5dGVjb2RlT2Zmc2V0XSk7CiAgICAgICAgICAgICB1bnNpZ25lZCBvcGNvZGVM
ZW5ndGggPSBvcGNvZGVMZW5ndGhzW29wY29kZUlEXTsKICAgICAgICAgICAgIC8vIElmIHdlIGZv
dW5kIGEgdGVybWluYWwgYnl0ZWNvZGUsIGxpbmsgdG8gdGhlIGV4aXQgYmxvY2suCiAgICAgICAg
ICAgICBpZiAoaXNUZXJtaW5hbChvcGNvZGVJRCkpIHsKQEAgLTE4NSw3ICsxODcsNyBAQCB2b2lk
IGNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzKENvZGVCbG9jayogY29kZUJsb2NrLCBWZWN0b3I8
c3RkOjp1bmlxdWVfcHRyPEJ5dAogICAgICAgICAgICAgLy8gYmxvY2sgYmVjYXVzZSB0aGUgZmlu
YWxseSBibG9jayB3aWxsIGNyZWF0ZSBpdHMgb3duIGNhdGNoLCB3aGljaCB3aWxsIGdlbmVyYXRl
IGEgSGFuZGxlckluZm8uCiAgICAgICAgICAgICBpZiAoaXNUaHJvdyhvcGNvZGVJRCkpIHsKICAg
ICAgICAgICAgICAgICBBU1NFUlQoYnl0ZWNvZGVPZmZzZXQgKyBvcGNvZGVMZW5ndGggPT0gYmxv
Y2stPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCkgKyBibG9jay0+dG90YWxCeXRlY29kZUxlbmd0aCgp
KTsKLSAgICAgICAgICAgICAgICBIYW5kbGVySW5mbyogaGFuZGxlciA9IGNvZGVCbG9jay0+aGFu
ZGxlckZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KTsKKyAgICAgICAgICAgICAgICBh
dXRvKiBoYW5kbGVyID0gY29kZUJsb2NrLT5oYW5kbGVyRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNv
ZGVPZmZzZXQpOwogICAgICAgICAgICAgICAgIGZhbGxzVGhyb3VnaCA9IGZhbHNlOwogICAgICAg
ICAgICAgICAgIGlmICghaGFuZGxlcikgewogICAgICAgICAgICAgICAgICAgICBsaW5rQmxvY2tz
KGJsb2NrLCBleGl0LmdldCgpKTsKQEAgLTIwNSw3ICsyMDcsNyBAQCB2b2lkIGNvbXB1dGVCeXRl
Y29kZUJhc2ljQmxvY2tzKENvZGVCbG9jayogY29kZUJsb2NrLCBWZWN0b3I8c3RkOjp1bmlxdWVf
cHRyPEJ5dAogICAgICAgICAgICAgaWYgKGlzQnJhbmNoKG9wY29kZUlEKSkgewogICAgICAgICAg
ICAgICAgIEFTU0VSVChieXRlY29kZU9mZnNldCArIG9wY29kZUxlbmd0aCA9PSBibG9jay0+bGVh
ZGVyQnl0ZWNvZGVPZmZzZXQoKSArIGJsb2NrLT50b3RhbEJ5dGVjb2RlTGVuZ3RoKCkpOwogICAg
ICAgICAgICAgICAgIFZlY3Rvcjx1bnNpZ25lZCwgMT4gYnl0ZWNvZGVPZmZzZXRzSnVtcGVkVG87
Ci0gICAgICAgICAgICAgICAgZmluZEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoY29kZUJs
b2NrLCBieXRlY29kZU9mZnNldCwgYnl0ZWNvZGVPZmZzZXRzSnVtcGVkVG8pOworICAgICAgICAg
ICAgICAgIGZpbmRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9jaywgaW5zdHJ1
Y3Rpb25zQmVnaW4sIGJ5dGVjb2RlT2Zmc2V0LCBieXRlY29kZU9mZnNldHNKdW1wZWRUbyk7CiAK
ICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYmFzaWNCbG9ja3Muc2l6
ZSgpOyBpKyspIHsKICAgICAgICAgICAgICAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBvdGhl
ckJsb2NrID0gYmFzaWNCbG9ja3NbaV0uZ2V0KCk7CkBAIC0yMjksMTAgKzIzMSwyMCBAQCB2b2lk
IGNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzKENvZGVCbG9jayogY29kZUJsb2NrLCBWZWN0b3I8
c3RkOjp1bmlxdWVfcHRyPEJ5dAogICAgICAgICB9CiAgICAgfQogCi0gICAgYmFzaWNCbG9ja3Mu
YXBwZW5kKFdURk1vdmUoZXhpdCkpOworICAgIGFwcGVuZEJsb2NrKFdURk1vdmUoZXhpdCkpOwog
ICAgIAogICAgIGZvciAoYXV0byYgYmFzaWNCbG9jayA6IGJhc2ljQmxvY2tzKQogICAgICAgICBi
YXNpY0Jsb2NrLT5zaHJpbmtUb0ZpdCgpOwogfQogCit2b2lkIEJ5dGVjb2RlQmFzaWNCbG9jazo6
Y29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEluc3RydWN0
aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCwgVmVjdG9y
PHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9ja3MpCit7Cisg
ICAgY29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3NJbnRlcm5hbChjb2RlQmxvY2ssIGluc3RydWN0
aW9uc0JlZ2luLCBpbnN0cnVjdGlvbkNvdW50LCBiYXNpY0Jsb2Nrcyk7Cit9CisKK3ZvaWQgQnl0
ZWNvZGVCYXNpY0Jsb2NrOjpjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2NrcyhVbmxpbmtlZENvZGVC
bG9jayogY29kZUJsb2NrLCBVbmxpbmtlZEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwg
dW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCwgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29k
ZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9ja3MpCit7CisgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrOjpj
b21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2Nrc0ludGVybmFsKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb25z
QmVnaW4sIGluc3RydWN0aW9uQ291bnQsIGJhc2ljQmxvY2tzKTsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVCYXNpY0Jsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVC
YXNpY0Jsb2NrLmgKaW5kZXggY2Q3MTQ3N2VkNTA2YWE3ODgwMjE2NWZhY2RiN2E2ZDQ2ZjM4ZGMy
YS4uN2YxODRmNDc3NjIwYWNhZDc0NTEzYTA1MDgyZDU3ODIyZGZkODUyMiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suaApAQCAt
MzMsNiArMzMsOSBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIENvZGVCbG9jazsKK2NsYXNz
IFVubGlua2VkQ29kZUJsb2NrOworc3RydWN0IEluc3RydWN0aW9uOworc3RydWN0IFVubGlua2Vk
SW5zdHJ1Y3Rpb247CiAKIGNsYXNzIEJ5dGVjb2RlQmFzaWNCbG9jayB7CiAgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CkBAIC00OCwxOCArNTEsMjggQEAgY2xhc3MgQnl0ZWNvZGVCYXNpY0Js
b2NrIHsKICAgICB1bnNpZ25lZCBsZWFkZXJCeXRlY29kZU9mZnNldCgpIHsgcmV0dXJuIG1fbGVh
ZGVyQnl0ZWNvZGVPZmZzZXQ7IH0KICAgICB1bnNpZ25lZCB0b3RhbEJ5dGVjb2RlTGVuZ3RoKCkg
eyByZXR1cm4gbV90b3RhbEJ5dGVjb2RlTGVuZ3RoOyB9CiAKLSAgICBWZWN0b3I8dW5zaWduZWQ+
JiBieXRlY29kZU9mZnNldHMoKSB7IHJldHVybiBtX2J5dGVjb2RlT2Zmc2V0czsgfQotICAgIHZv
aWQgYWRkQnl0ZWNvZGVMZW5ndGgodW5zaWduZWQpOworICAgIGNvbnN0IFZlY3Rvcjx1bnNpZ25l
ZD4mIGJ5dGVjb2RlT2Zmc2V0cygpIGNvbnN0IHsgcmV0dXJuIG1fYnl0ZWNvZGVPZmZzZXRzOyB9
CiAKLSAgICBWZWN0b3I8Qnl0ZWNvZGVCYXNpY0Jsb2NrKj4mIHN1Y2Nlc3NvcnMoKSB7IHJldHVy
biBtX3N1Y2Nlc3NvcnM7IH0KLSAgICB2b2lkIGFkZFN1Y2Nlc3NvcihCeXRlY29kZUJhc2ljQmxv
Y2sqIGJsb2NrKSB7IG1fc3VjY2Vzc29ycy5hcHBlbmQoYmxvY2spOyB9CisgICAgY29uc3QgVmVj
dG9yPEJ5dGVjb2RlQmFzaWNCbG9jayo+JiBzdWNjZXNzb3JzKCkgY29uc3QgeyByZXR1cm4gbV9z
dWNjZXNzb3JzOyB9CiAKICAgICBGYXN0Qml0VmVjdG9yJiBpbigpIHsgcmV0dXJuIG1faW47IH0K
ICAgICBGYXN0Qml0VmVjdG9yJiBvdXQoKSB7IHJldHVybiBtX291dDsgfQogCisgICAgdW5zaWdu
ZWQgaW5kZXgoKSBjb25zdCB7IHJldHVybiBtX2luZGV4OyB9CisKKyAgICBzdGF0aWMgdm9pZCBj
b21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2NrcyhDb2RlQmxvY2sqLCBJbnN0cnVjdGlvbiogaW5zdHJ1
Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQsIFZlY3RvcjxzdGQ6OnVuaXF1
ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mKTsKKyAgICBzdGF0aWMgdm9pZCBjb21wdXRlQnl0
ZWNvZGVCYXNpY0Jsb2NrcyhVbmxpbmtlZENvZGVCbG9jayosIFVubGlua2VkSW5zdHJ1Y3Rpb24q
IGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50LCBWZWN0b3I8c3Rk
Ojp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+Jik7CisKIHByaXZhdGU6CisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgQmxvY2ssIHR5cGVuYW1lIEluc3RydWN0aW9uPiBzdGF0aWMgdm9pZCBj
b21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2Nrc0ludGVybmFsKEJsb2NrKiBjb2RlQmxvY2ssIEluc3Ry
dWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCwgVmVj
dG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9ja3MpOwor
CisgICAgdm9pZCBhZGRTdWNjZXNzb3IoQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaykgeyBtX3N1
Y2Nlc3NvcnMuYXBwZW5kKGJsb2NrKTsgfQorCisgICAgdm9pZCBhZGRCeXRlY29kZUxlbmd0aCh1
bnNpZ25lZCk7CisKICAgICB1bnNpZ25lZCBtX2xlYWRlckJ5dGVjb2RlT2Zmc2V0OwogICAgIHVu
c2lnbmVkIG1fdG90YWxCeXRlY29kZUxlbmd0aDsKKyAgICB1bnNpZ25lZCBtX2luZGV4OwogCiAg
ICAgVmVjdG9yPHVuc2lnbmVkPiBtX2J5dGVjb2RlT2Zmc2V0czsKICAgICBWZWN0b3I8Qnl0ZWNv
ZGVCYXNpY0Jsb2NrKj4gbV9zdWNjZXNzb3JzOwpAQCAtNjgsOCArODEsNiBAQCBjbGFzcyBCeXRl
Y29kZUJhc2ljQmxvY2sgewogICAgIEZhc3RCaXRWZWN0b3IgbV9vdXQ7CiB9OwogCi12b2lkIGNv
bXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzKENvZGVCbG9jayosIFZlY3RvcjxzdGQ6OnVuaXF1ZV9w
dHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mKTsKLQogaW5saW5lIEJ5dGVjb2RlQmFzaWNCbG9jazo6
Qnl0ZWNvZGVCYXNpY0Jsb2NrKHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBsZW5ndGgpCiAgICAg
OiBtX2xlYWRlckJ5dGVjb2RlT2Zmc2V0KHN0YXJ0KQogICAgICwgbV90b3RhbEJ5dGVjb2RlTGVu
Z3RoKGxlbmd0aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc4ZjdhYmEx
NGY3OTJiNGMyZGZjOWZhYmM2YWRiZjMzYmRhYmFlMTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3Bw
CkBAIC0wLDAgKzEsMjYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IFl1c3VrZSBTdXp1
a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5oIgorCisjaW5jbHVkZSAiQnl0
ZWNvZGVMaXZlbmVzc0FuYWx5c2lzSW5saW5lcy5oIgorI2luY2x1ZGUgIkJ5dGVjb2RlUmV3cml0
ZXIuaCIKKyNpbmNsdWRlICJCeXRlY29kZVVzZURlZi5oIgorI2luY2x1ZGUgIklkZW50aWZpZXJJ
bmxpbmVzLmgiCisjaW5jbHVkZSAiSW50ZXJwcmV0ZXJJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlND
SW5saW5lcy5oIgorI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNH
ZW5lcmF0b3JGdW5jdGlvbi5oIgorI2luY2x1ZGUgIlN0cm9uZ0lubGluZXMuaCIKKyNpbmNsdWRl
ICJVbmxpbmtlZENvZGVCbG9jay5oIgorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgorCituYW1l
c3BhY2UgSlNDIHsKKworc3RydWN0IFlpZWxkRGF0YSB7CisgICAgc2l6ZV90IHBvaW50IHsgMCB9
OworICAgIGludCBhcmd1bWVudCB7IDAgfTsKKyAgICBGYXN0Qml0VmVjdG9yIGxpdmVuZXNzOwor
fTsKKworY2xhc3MgQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24geworcHVibGljOgorICAgIHR5
cGVkZWYgVmVjdG9yPFlpZWxkRGF0YT4gWWllbGRzOworCisgICAgQnl0ZWNvZGVHZW5lcmF0b3Jp
ZmljYXRpb24oVW5saW5rZWRDb2RlQmxvY2sqIGNvZGVCbG9jaywgVW5saW5rZWRDb2RlQmxvY2s6
OlVucGFja2VkSW5zdHJ1Y3Rpb25zJiBpbnN0cnVjdGlvbnMsIFN5bWJvbFRhYmxlKiBnZW5lcmF0
b3JGcmFtZVN5bWJvbFRhYmxlLCBpbnQgZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZUluZGV4KQor
ICAgICAgICA6IG1fZ3JhcGgoY29kZUJsb2NrLCBpbnN0cnVjdGlvbnMpCisgICAgICAgICwgbV9n
ZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlKCpjb2RlQmxvY2stPnZtKCksIGdlbmVyYXRvckZyYW1l
U3ltYm9sVGFibGUpCisgICAgICAgICwgbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlSW5kZXgo
Z2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZUluZGV4KQorICAgIHsKKyAgICAgICAgZm9yIChCeXRl
Y29kZUJhc2ljQmxvY2sqIGJsb2NrIDogbV9ncmFwaCkgeworICAgICAgICAgICAgZm9yICh1bnNp
Z25lZCBieXRlY29kZU9mZnNldCA6IGJsb2NrLT5ieXRlY29kZU9mZnNldHMoKSkgeworICAgICAg
ICAgICAgICAgIGNvbnN0IFVubGlua2VkSW5zdHJ1Y3Rpb24qIHBjID0gJm1fZ3JhcGguaW5zdHJ1
Y3Rpb25zKClbYnl0ZWNvZGVPZmZzZXRdOworICAgICAgICAgICAgICAgIHN3aXRjaCAocGMtPnUu
b3Bjb2RlKSB7CisgICAgICAgICAgICAgICAgY2FzZSBvcF9lbnRlcjogeworICAgICAgICAgICAg
ICAgICAgICBtX2VudGVyUG9pbnQgPSBieXRlY29kZU9mZnNldDsKKyAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgY2FzZSBvcF95
aWVsZDogeworICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5k
ZXggPSBwY1syXS51LmluZGV4OworICAgICAgICAgICAgICAgICAgICBpZiAobGl2ZUNhbGxlZUxv
Y2Fsc0luZGV4ID49IG1feWllbGRzLnNpemUoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIG1f
eWllbGRzLnJlc2l6ZShsaXZlQ2FsbGVlTG9jYWxzSW5kZXggKyAxKTsKKyAgICAgICAgICAgICAg
ICAgICAgWWllbGREYXRhJiBkYXRhID0gbV95aWVsZHNbbGl2ZUNhbGxlZUxvY2Fsc0luZGV4XTsK
KyAgICAgICAgICAgICAgICAgICAgZGF0YS5wb2ludCA9IGJ5dGVjb2RlT2Zmc2V0OworICAgICAg
ICAgICAgICAgICAgICBkYXRhLmFyZ3VtZW50ID0gcGNbM10udS5vcGVyYW5kOworICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBzdHJ1Y3QgU3RvcmFnZSB7Cisg
ICAgICAgIElkZW50aWZpZXIgaWRlbnRpZmllcjsKKyAgICAgICAgdW5zaWduZWQgaWRlbnRpZmll
ckluZGV4OworICAgICAgICBTY29wZU9mZnNldCBzY29wZU9mZnNldDsKKyAgICB9OworCisgICAg
dm9pZCBydW4oKTsKKworICAgIEJ5dGVjb2RlR3JhcGg8VW5saW5rZWRDb2RlQmxvY2s+JiBncmFw
aCgpIHsgcmV0dXJuIG1fZ3JhcGg7IH0KKworICAgIGNvbnN0IFlpZWxkcyYgeWllbGRzKCkgY29u
c3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX3lpZWxkczsKKyAgICB9CisKKyAgICBZaWVsZHMm
IHlpZWxkcygpCisgICAgeworICAgICAgICByZXR1cm4gbV95aWVsZHM7CisgICAgfQorCisgICAg
dW5zaWduZWQgZW50ZXJQb2ludCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9lbnRl
clBvaW50OworICAgIH0KKworcHJpdmF0ZToKKyAgICBTdG9yYWdlIHN0b3JhZ2VGb3JHZW5lcmF0
b3JMb2NhbCh1bnNpZ25lZCBpbmRleCkKKyAgICB7CisgICAgICAgIC8vIFdlIGFzc2lnbiBhIHN5
bWJvbCB0byBhIHJlZ2lzdGVyLiBUaGVyZSBpcyBvbmUtb24tb25lIGNvcnJlc3BvbmRpbmcgYmV0
d2VlbiBhIHJlZ2lzdGVyIGFuZCBhIHN5bWJvbC4KKyAgICAgICAgLy8gQnkgZG9pbmcgc28sIHdl
IGFsbG9jYXRlIHRoZSBzcGVjaWZpYyBzdG9yYWdlIHRvIHNhdmUgdGhlIGdpdmVuIHJlZ2lzdGVy
LgorICAgICAgICAvLyBUaGlzIGFsbG93IHVzIG5vdCB0byBzYXZlIGFsbCB0aGUgbGl2ZSByZWdp
c3RlcnMgZXZlbiBpZiB0aGUgcmVnaXN0ZXJzIGFyZSBub3Qgb3ZlcndyaXR0ZW4gZnJvbSB0aGUg
cHJldmlvdXMgcmVzdW1pbmcgdGltZS4KKyAgICAgICAgLy8gSXQgbWVhbnMgdGhhdCwgdGhlIHJl
Z2lzdGVyIGNhbiBiZSByZXRyaWV2ZWQgZXZlbiBpZiB0aGUgaW1tZWRpYXRlIHByZXZpb3VzIG9w
X3NhdmUgZG9lcyBub3Qgc2F2ZSBpdC4KKworICAgICAgICBpZiAobV9zdG9yYWdlcy5zaXplKCkg
PD0gaW5kZXgpCisgICAgICAgICAgICBtX3N0b3JhZ2VzLnJlc2l6ZShpbmRleCArIDEpOworICAg
ICAgICBpZiAoT3B0aW9uYWw8U3RvcmFnZT4gc3RvcmFnZSA9IG1fc3RvcmFnZXNbaW5kZXhdKQor
ICAgICAgICAgICAgcmV0dXJuICpzdG9yYWdlOworCisgICAgICAgIFVubGlua2VkQ29kZUJsb2Nr
KiBjb2RlQmxvY2sgPSBtX2dyYXBoLmNvZGVCbG9jaygpOworICAgICAgICBJZGVudGlmaWVyIGlk
ZW50aWZpZXIgPSBJZGVudGlmaWVyOjpmcm9tVWlkKFByaXZhdGVOYW1lKCkpOworICAgICAgICB1
bnNpZ25lZCBpZGVudGlmaWVySW5kZXggPSBjb2RlQmxvY2stPm51bWJlck9mSWRlbnRpZmllcnMo
KTsKKyAgICAgICAgY29kZUJsb2NrLT5hZGRJZGVudGlmaWVyKGlkZW50aWZpZXIpOworICAgICAg
ICBTY29wZU9mZnNldCBzY29wZU9mZnNldCA9IG1fZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZS0+
dGFrZU5leHRTY29wZU9mZnNldChOb0xvY2tpbmdOZWNlc3NhcnkpOworICAgICAgICBtX2dlbmVy
YXRvckZyYW1lU3ltYm9sVGFibGUtPnNldChOb0xvY2tpbmdOZWNlc3NhcnksIGlkZW50aWZpZXIu
aW1wbCgpLCBTeW1ib2xUYWJsZUVudHJ5KFZhck9mZnNldChzY29wZU9mZnNldCkpKTsKKworICAg
ICAgICBTdG9yYWdlIHN0b3JhZ2UgPSB7CisgICAgICAgICAgICBpZGVudGlmaWVyLAorICAgICAg
ICAgICAgaWRlbnRpZmllckluZGV4LAorICAgICAgICAgICAgc2NvcGVPZmZzZXQKKyAgICAgICAg
fTsKKyAgICAgICAgbV9zdG9yYWdlc1tpbmRleF0gPSBzdG9yYWdlOworICAgICAgICByZXR1cm4g
c3RvcmFnZTsKKyAgICB9CisKKyAgICB1bnNpZ25lZCBtX2VudGVyUG9pbnQgeyAwIH07CisgICAg
Qnl0ZWNvZGVHcmFwaDxVbmxpbmtlZENvZGVCbG9jaz4gbV9ncmFwaDsKKyAgICBWZWN0b3I8T3B0
aW9uYWw8U3RvcmFnZT4+IG1fc3RvcmFnZXM7CisgICAgWWllbGRzIG1feWllbGRzOworICAgIFN0
cm9uZzxTeW1ib2xUYWJsZT4gbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlOworICAgIGludCBt
X2dlbmVyYXRvckZyYW1lU3ltYm9sVGFibGVJbmRleDsKK307CisKK2NsYXNzIEdlbmVyYXRvckxp
dmVuZXNzQW5hbHlzaXMgOiBwdWJsaWMgQnl0ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0aW9uPEdlbmVy
YXRvckxpdmVuZXNzQW5hbHlzaXM+IHsKK3B1YmxpYzoKKyAgICBHZW5lcmF0b3JMaXZlbmVzc0Fu
YWx5c2lzKEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uJiBnZW5lcmF0b3JpZmljYXRpb24pCisg
ICAgICAgIDogbV9nZW5lcmF0b3JpZmljYXRpb24oZ2VuZXJhdG9yaWZpY2F0aW9uKQorICAgIHsK
KyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgorICAgIHZvaWQgY29tcHV0
ZURlZnNGb3JCeXRlY29kZU9mZnNldChVbmxpbmtlZENvZGVCbG9jayogY29kZUJsb2NrLCBPcGNv
ZGVJRCBvcGNvZGVJRCwgVW5saW5rZWRJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIEZhc3RCaXRW
ZWN0b3ImLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQorICAgIHsKKyAgICAgICAgSlNDOjpjb21w
dXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9jaywgb3Bjb2RlSUQsIGluc3RydWN0aW9u
LCBmdW5jdG9yKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgorICAg
IHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldChVbmxpbmtlZENvZGVCbG9jayogY29k
ZUJsb2NrLCBPcGNvZGVJRCBvcGNvZGVJRCwgVW5saW5rZWRJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rp
b24sIEZhc3RCaXRWZWN0b3ImLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQorICAgIHsKKyAgICAg
ICAgSlNDOjpjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9jaywgb3Bjb2RlSUQs
IGluc3RydWN0aW9uLCBmdW5jdG9yKTsKKyAgICB9CisKKyAgICB2b2lkIHJ1bigpCisgICAgewor
ICAgICAgICAvLyBQZXJmb3JtIG1vZGlmaWVkIGxpdmVuZXNzIGFuYWx5c2lzIHRvIGRldGVybWlu
ZSB3aGljaCBsb2NhbHMgYXJlIGxpdmUgYXQgdGhlIG1lcmdlIHBvaW50cy4KKyAgICAgICAgLy8g
VGhpcyBwcm9kdWNlcyB0aGUgY29uc2VydmF0aXZlIHJlc3VsdHMgZm9yIHRoZSBxdWVzdGlvbiwg
IndoaWNoIHZhcmlhYmxlcyBzaG91bGQgYmUgc2F2ZWQgYW5kIHJlc3VtZWQ/Ii4KKworICAgICAg
ICBydW5MaXZlbmVzc0ZpeHBvaW50KG1fZ2VuZXJhdG9yaWZpY2F0aW9uLmdyYXBoKCkpOworCisg
ICAgICAgIGZvciAoWWllbGREYXRhJiBkYXRhIDogbV9nZW5lcmF0b3JpZmljYXRpb24ueWllbGRz
KCkpCisgICAgICAgICAgICBkYXRhLmxpdmVuZXNzID0gZ2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29k
ZU9mZnNldChtX2dlbmVyYXRvcmlmaWNhdGlvbi5ncmFwaCgpLCBkYXRhLnBvaW50ICsgb3Bjb2Rl
TGVuZ3RoKG9wX3lpZWxkKSk7CisgICAgfQorCitwcml2YXRlOgorICAgIEJ5dGVjb2RlR2VuZXJh
dG9yaWZpY2F0aW9uJiBtX2dlbmVyYXRvcmlmaWNhdGlvbjsKK307CisKK3ZvaWQgQnl0ZWNvZGVH
ZW5lcmF0b3JpZmljYXRpb246OnJ1bigpCit7CisgICAgLy8gV2UgY2FsY3VsYXRlIHRoZSBsaXZl
bmVzcyBhdCBlYWNoIG1lcmdlIHBvaW50LiBUaGlzIGdpdmVzIHVzIHRoZSBpbmZvcm1hdGlvbiB3
aGljaCByZWdpc3RlcnMgc2hvdWxkIGJlIHNhdmVkIGFuZCByZXN1bWVkIGNvbnNlcnZhdGl2ZWx5
LgorCisgICAgeworICAgICAgICBHZW5lcmF0b3JMaXZlbmVzc0FuYWx5c2lzIHBhc3MoKnRoaXMp
OworICAgICAgICBwYXNzLnJ1bigpOworICAgIH0KKworICAgIFVubGlua2VkQ29kZUJsb2NrKiBj
b2RlQmxvY2sgPSBtX2dyYXBoLmNvZGVCbG9jaygpOworICAgIEJ5dGVjb2RlUmV3cml0ZXIgcmV3
cml0ZXIobV9ncmFwaCk7CisKKyAgICAvLyBTZXR1cCB0aGUgZ2xvYmFsIHN3aXRjaCBmb3IgdGhl
IGdlbmVyYXRvci4KKyAgICB7CisgICAgICAgIHVuc2lnbmVkIG5leHRUb0VudGVyUG9pbnQgPSBl
bnRlclBvaW50KCkgKyBvcGNvZGVMZW5ndGgob3BfZW50ZXIpOworICAgICAgICBWaXJ0dWFsUmVn
aXN0ZXIgc3RhdGUgPSB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChzdGF0aWNfY2FzdDxpbnQz
Ml90PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JBcmd1bWVudDo6U3RhdGUpKTsKKyAg
ICAgICAgYXV0byYganVtcFRhYmxlID0gcmV3cml0ZXIuaW5zZXJ0U3dpdGNoSW1tZWRpYXRlQmVm
b3JlKG5leHRUb0VudGVyUG9pbnQsIG5leHRUb0VudGVyUG9pbnQsIHN0YXRlLm9mZnNldCgpKTsK
KyAgICAgICAganVtcFRhYmxlLm1pbiA9IDA7CisgICAgICAgIGp1bXBUYWJsZS5icmFuY2hPZmZz
ZXRzLnJlc2l6ZShtX3lpZWxkcy5zaXplKCkgKyAxKTsKKyAgICAgICAganVtcFRhYmxlLmJyYW5j
aE9mZnNldHMuZmlsbCgwKTsKKyAgICAgICAganVtcFRhYmxlLmFkZCgwLCBuZXh0VG9FbnRlclBv
aW50KTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1feWllbGRzLnNpemUoKTsg
KytpKQorICAgICAgICAgICAganVtcFRhYmxlLmFkZChpICsgMSwgbV95aWVsZHNbaV0ucG9pbnQp
OworICAgIH0KKworICAgIGZvciAoY29uc3QgWWllbGREYXRhJiBkYXRhIDogbV95aWVsZHMpIHsK
KyAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHNjb3BlID0gdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1l
bnQoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6R2VuZXJhdG9yQXJn
dW1lbnQ6OkZyYW1lKSk7CisKKyAgICAgICAgLy8gRW1pdCBzYXZlIHNlcXVlbmNlLgorICAgICAg
ICByZXdyaXRlci5pbnNlcnRGcmFnbWVudEJlZm9yZShkYXRhLnBvaW50LCBbJl0oQnl0ZWNvZGVS
ZXdyaXRlcjo6RnJhZ21lbnQmIGZyYWdtZW50KSB7CisgICAgICAgICAgICBkYXRhLmxpdmVuZXNz
LmZvckVhY2hTZXRCaXQoWyZdKHNpemVfdCBpbmRleCkgeworICAgICAgICAgICAgICAgIFZpcnR1
YWxSZWdpc3RlciBvcGVyYW5kID0gdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaW5kZXgpOworICAg
ICAgICAgICAgICAgIFN0b3JhZ2Ugc3RvcmFnZSA9IHN0b3JhZ2VGb3JHZW5lcmF0b3JMb2NhbChp
bmRleCk7CisKKyAgICAgICAgICAgICAgICBmcmFnbWVudC5hcHBlbmQoCisgICAgICAgICAgICAg
ICAgICAgIG9wX3B1dF90b19zY29wZSwKKyAgICAgICAgICAgICAgICAgICAgc2NvcGUub2Zmc2V0
KCksIC8vIHNjb3BlCisgICAgICAgICAgICAgICAgICAgIHN0b3JhZ2UuaWRlbnRpZmllckluZGV4
LCAvLyBpZGVudGlmaWVyCisgICAgICAgICAgICAgICAgICAgIG9wZXJhbmQub2Zmc2V0KCksIC8v
IHZhbHVlCisgICAgICAgICAgICAgICAgICAgIEdldFB1dEluZm8oRG9Ob3RUaHJvd0lmTm90Rm91
bmQsIExvY2FsQ2xvc3VyZVZhciwgSW5pdGlhbGl6YXRpb25Nb2RlOjpOb3RJbml0aWFsaXphdGlv
bikub3BlcmFuZCgpLCAvLyBpbmZvCisgICAgICAgICAgICAgICAgICAgIG1fZ2VuZXJhdG9yRnJh
bWVTeW1ib2xUYWJsZUluZGV4LCAvLyBzeW1ib2wgdGFibGUgY29uc3RhbnQgaW5kZXgKKyAgICAg
ICAgICAgICAgICAgICAgc3RvcmFnZS5zY29wZU9mZnNldC5vZmZzZXQoKSAvLyBzY29wZSBvZmZz
ZXQKKyAgICAgICAgICAgICAgICApOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIC8v
IEluc2VydCBvcF9yZXQganVzdCBhZnRlciBzYXZlIHNlcXVlbmNlLgorICAgICAgICAgICAgZnJh
Z21lbnQuYXBwZW5kKG9wX3JldCwgZGF0YS5hcmd1bWVudCk7CisgICAgICAgIH0pOworCisgICAg
ICAgIC8vIEVtaXQgcmVzdW1lIHNlcXVlbmNlLgorICAgICAgICByZXdyaXRlci5pbnNlcnRGcmFn
bWVudEJlZm9yZShkYXRhLnBvaW50ICsgb3Bjb2RlTGVuZ3RoKG9wX3lpZWxkKSwgWyZdKEJ5dGVj
b2RlUmV3cml0ZXI6OkZyYWdtZW50JiBmcmFnbWVudCkgeworICAgICAgICAgICAgZGF0YS5saXZl
bmVzcy5mb3JFYWNoU2V0Qml0KFsmXShzaXplX3QgaW5kZXgpIHsKKyAgICAgICAgICAgICAgICBW
aXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCA9IHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGluZGV4KTsK
KyAgICAgICAgICAgICAgICBTdG9yYWdlIHN0b3JhZ2UgPSBzdG9yYWdlRm9yR2VuZXJhdG9yTG9j
YWwoaW5kZXgpOworCisgICAgICAgICAgICAgICAgVW5saW5rZWRWYWx1ZVByb2ZpbGUgcHJvZmls
ZSA9IGNvZGVCbG9jay0+YWRkVmFsdWVQcm9maWxlKCk7CisgICAgICAgICAgICAgICAgZnJhZ21l
bnQuYXBwZW5kKAorICAgICAgICAgICAgICAgICAgICBvcF9nZXRfZnJvbV9zY29wZSwKKyAgICAg
ICAgICAgICAgICAgICAgb3BlcmFuZC5vZmZzZXQoKSwgLy8gZHN0CisgICAgICAgICAgICAgICAg
ICAgIHNjb3BlLm9mZnNldCgpLCAvLyBzY29wZQorICAgICAgICAgICAgICAgICAgICBzdG9yYWdl
LmlkZW50aWZpZXJJbmRleCwgLy8gaWRlbnRpZmllcgorICAgICAgICAgICAgICAgICAgICBHZXRQ
dXRJbmZvKERvTm90VGhyb3dJZk5vdEZvdW5kLCBMb2NhbENsb3N1cmVWYXIsIEluaXRpYWxpemF0
aW9uTW9kZTo6Tm90SW5pdGlhbGl6YXRpb24pLm9wZXJhbmQoKSwgLy8gaW5mbworICAgICAgICAg
ICAgICAgICAgICAwLCAvLyBsb2NhbCBzY29wZSBkZXB0aAorICAgICAgICAgICAgICAgICAgICBz
dG9yYWdlLnNjb3BlT2Zmc2V0Lm9mZnNldCgpLCAvLyBzY29wZSBvZmZzZXQKKyAgICAgICAgICAg
ICAgICAgICAgcHJvZmlsZSAvLyBwcm9maWxlCisgICAgICAgICAgICAgICAgKTsKKyAgICAgICAg
ICAgIH0pOworICAgICAgICB9KTsKKworICAgICAgICAvLyBDbGlwIHRoZSB1bm5lY2Vzc2FyeSBi
eXRlY29kZXMuCisgICAgICAgIHJld3JpdGVyLnJlbW92ZUJ5dGVjb2RlKGRhdGEucG9pbnQpOwor
ICAgIH0KKworICAgIHJld3JpdGVyLmV4ZWN1dGUoKTsKK30KKwordm9pZCBwZXJmb3JtR2VuZXJh
dG9yaWZpY2F0aW9uKFVubGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFVubGlua2VkQ29kZUJs
b2NrOjpVbnBhY2tlZEluc3RydWN0aW9ucyYgaW5zdHJ1Y3Rpb25zLCBTeW1ib2xUYWJsZSogZ2Vu
ZXJhdG9yRnJhbWVTeW1ib2xUYWJsZSwgaW50IGdlbmVyYXRvckZyYW1lU3ltYm9sVGFibGVJbmRl
eCkKK3sKKyAgICBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbiBwYXNzKGNvZGVCbG9jaywgaW5z
dHJ1Y3Rpb25zLCBnZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlLCBnZW5lcmF0b3JGcmFtZVN5bWJv
bFRhYmxlSW5kZXgpOworICAgIHBhc3MucnVuKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlR2VuZXJh
dG9yaWZpY2F0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVH
ZW5lcmF0b3JpZmljYXRpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jN2I2MTM3NDYwODZhZTM0YzRjMGEyMmJm
NGU2N2M3NmU2Y2ZkNGU5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmgKQEAgLTAsMCArMSwzNyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIlVubGlua2VkQ29kZUJs
b2NrLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBTeW1ib2xUYWJsZTsKKwordm9pZCBw
ZXJmb3JtR2VuZXJhdG9yaWZpY2F0aW9uKFVubGlua2VkQ29kZUJsb2NrKiwgVW5saW5rZWRDb2Rl
QmxvY2s6OlVucGFja2VkSW5zdHJ1Y3Rpb25zJiwgU3ltYm9sVGFibGUqIGdlbmVyYXRvckZyYW1l
U3ltYm9sVGFibGUsIGludCBnZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlSW5kZXgpOworCit9IC8v
IG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZUdyYXBoLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVHcmFwaC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNiYWE3ZTg1ZWZhMDc0MTZhMWQ1ZmY4MjEyOGZiZGM2NWI0
YzA0NGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Qnl0ZWNvZGVHcmFwaC5oCkBAIC0wLDAgKzEsMTI1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE2IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKyAqIENvcHlyaWdodCAo
QykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaW5jbHVkZSAiQnl0ZWNvZGVCYXNpY0Jsb2NrLmgiCisjaW5jbHVkZSA8d3Rm
L0luZGV4ZWRDb250YWluZXJJdGVyYXRvci5oPgorI2luY2x1ZGUgPHd0Zi9JdGVyYXRvclJhbmdl
Lmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3Mg
Qnl0ZWNvZGVCYXNpY0Jsb2NrOworCit0ZW1wbGF0ZTx0eXBlbmFtZSBCbG9jaz4KK2NsYXNzIEJ5
dGVjb2RlR3JhcGggeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKEJ5dGVjb2RlR3JhcGgpOworcHVibGljOgorICAgIHR5cGVkZWYgQmxvY2sg
Q29kZUJsb2NrOworICAgIHR5cGVkZWYgdHlwZW5hbWUgQmxvY2s6Okluc3RydWN0aW9uIEluc3Ry
dWN0aW9uOworICAgIHR5cGVkZWYgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2lj
QmxvY2s+PiBCYXNpY0Jsb2Nrc1ZlY3RvcjsKKworICAgIHR5cGVkZWYgV1RGOjpJbmRleGVkQ29u
dGFpbmVySXRlcmF0b3I8Qnl0ZWNvZGVHcmFwaDxCbG9jaz4+IGl0ZXJhdG9yOworCisgICAgaW5s
aW5lIEJ5dGVjb2RlR3JhcGgoQmxvY2sqLCB0eXBlbmFtZSBCbG9jazo6VW5wYWNrZWRJbnN0cnVj
dGlvbnMmKTsKKworICAgIEJsb2NrKiBjb2RlQmxvY2soKSBjb25zdCB7IHJldHVybiBtX2NvZGVC
bG9jazsgfQorCisgICAgdHlwZW5hbWUgQmxvY2s6OlVucGFja2VkSW5zdHJ1Y3Rpb25zJiBpbnN0
cnVjdGlvbnMoKSB7IHJldHVybiBtX2luc3RydWN0aW9uczsgfQorCisgICAgV1RGOjpJdGVyYXRv
clJhbmdlPEJhc2ljQmxvY2tzVmVjdG9yOjpyZXZlcnNlX2l0ZXJhdG9yPiBiYXNpY0Jsb2Nrc0lu
UmV2ZXJzZU9yZGVyKCkKKyAgICB7CisgICAgICAgIHJldHVybiBXVEY6Om1ha2VJdGVyYXRvclJh
bmdlKG1fYmFzaWNCbG9ja3MucmJlZ2luKCksIG1fYmFzaWNCbG9ja3MucmVuZCgpKTsKKyAgICB9
CisKKyAgICBzdGF0aWMgYm9vbCBibG9ja0NvbnRhaW5zQnl0ZWNvZGVPZmZzZXQoQnl0ZWNvZGVC
YXNpY0Jsb2NrKiBibG9jaywgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpCisgICAgeworICAgICAg
ICB1bnNpZ25lZCBsZWFkZXJPZmZzZXQgPSBibG9jay0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKTsK
KyAgICAgICAgcmV0dXJuIGJ5dGVjb2RlT2Zmc2V0ID49IGxlYWRlck9mZnNldCAmJiBieXRlY29k
ZU9mZnNldCA8IGxlYWRlck9mZnNldCArIGJsb2NrLT50b3RhbEJ5dGVjb2RlTGVuZ3RoKCk7Cisg
ICAgfQorCisgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBmaW5kQmFzaWNCbG9ja0ZvckJ5dGVjb2Rl
T2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KQorICAgIHsKKyAgICAgICAgLyoKKyAgICAg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2Jhc2ljQmxvY2tzLnNpemUoKTsgaSsr
KSB7CisgICAgICAgICAgICAgICAgaWYgKGJsb2NrQ29udGFpbnNCeXRlY29kZU9mZnNldChtX2Jh
c2ljQmxvY2tzW2ldLmdldCgpLCBieXRlY29kZU9mZnNldCkpCisgICAgICAgICAgICAgICAgICAg
IHJldHVybiBtX2Jhc2ljQmxvY2tzW2ldLmdldCgpOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgcmV0dXJuIDA7CisgICAgICAgICovCisKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEJ5dGVj
b2RlQmFzaWNCbG9jaz4qIGJhc2ljQmxvY2sgPSBhcHByb3hpbWF0ZUJpbmFyeVNlYXJjaDxzdGQ6
OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiwgdW5zaWduZWQ+KG1fYmFzaWNCbG9ja3Ms
IG1fYmFzaWNCbG9ja3Muc2l6ZSgpLCBieXRlY29kZU9mZnNldCwgW10gKHN0ZDo6dW5pcXVlX3B0
cjxCeXRlY29kZUJhc2ljQmxvY2s+KiBiYXNpY0Jsb2NrKSB7IHJldHVybiAoKmJhc2ljQmxvY2sp
LT5sZWFkZXJCeXRlY29kZU9mZnNldCgpOyB9KTsKKyAgICAgICAgLy8gV2UgZm91bmQgdGhlIGJs
b2NrIHdlIHdlcmUgbG9va2luZyBmb3IuCisgICAgICAgIGlmIChibG9ja0NvbnRhaW5zQnl0ZWNv
ZGVPZmZzZXQoKCpiYXNpY0Jsb2NrKS5nZXQoKSwgYnl0ZWNvZGVPZmZzZXQpKQorICAgICAgICAg
ICAgcmV0dXJuICgqYmFzaWNCbG9jaykuZ2V0KCk7CisKKyAgICAgICAgLy8gQmFzaWMgYmxvY2sg
aXMgdG8gdGhlIGxlZnQgb2YgdGhlIHJldHVybmVkIGJsb2NrLgorICAgICAgICBpZiAoYnl0ZWNv
ZGVPZmZzZXQgPCAoKmJhc2ljQmxvY2spLT5sZWFkZXJCeXRlY29kZU9mZnNldCgpKSB7CisgICAg
ICAgICAgICBBU1NFUlQoYmFzaWNCbG9jayAtIDEgPj0gbV9iYXNpY0Jsb2Nrcy5kYXRhKCkpOwor
ICAgICAgICAgICAgQVNTRVJUKGJsb2NrQ29udGFpbnNCeXRlY29kZU9mZnNldChiYXNpY0Jsb2Nr
Wy0xXS5nZXQoKSwgYnl0ZWNvZGVPZmZzZXQpKTsKKyAgICAgICAgICAgIHJldHVybiBiYXNpY0Js
b2NrWy0xXS5nZXQoKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEJhc2ljIGJsb2NrIGlzIHRv
IHRoZSByaWdodCBvZiB0aGUgcmV0dXJuZWQgYmxvY2suCisgICAgICAgIEFTU0VSVCgmYmFzaWNC
bG9ja1sxXSA8PSAmbV9iYXNpY0Jsb2Nrcy5sYXN0KCkpOworICAgICAgICBBU1NFUlQoYmxvY2tD
b250YWluc0J5dGVjb2RlT2Zmc2V0KGJhc2ljQmxvY2tbMV0uZ2V0KCksIGJ5dGVjb2RlT2Zmc2V0
KSk7CisgICAgICAgIHJldHVybiBiYXNpY0Jsb2NrWzFdLmdldCgpOworICAgIH0KKworICAgIEJ5
dGVjb2RlQmFzaWNCbG9jayogZmluZEJhc2ljQmxvY2tXaXRoTGVhZGVyT2Zmc2V0KHVuc2lnbmVk
IGxlYWRlck9mZnNldCkKKyAgICB7CisgICAgICAgIHJldHVybiAoKnRyeUJpbmFyeVNlYXJjaDxz
dGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiwgdW5zaWduZWQ+KG1fYmFzaWNCbG9j
a3MsIG1fYmFzaWNCbG9ja3Muc2l6ZSgpLCBsZWFkZXJPZmZzZXQsIFtdIChzdGQ6OnVuaXF1ZV9w
dHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiogYmFzaWNCbG9jaykgeyByZXR1cm4gKCpiYXNpY0Jsb2Nr
KS0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKTsgfSkpLmdldCgpOworICAgIH0KKworICAgIHVuc2ln
bmVkIHNpemUoKSBjb25zdCB7IHJldHVybiBtX2Jhc2ljQmxvY2tzLnNpemUoKTsgfQorICAgIEJ5
dGVjb2RlQmFzaWNCbG9jayogYXQodW5zaWduZWQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIG1fYmFz
aWNCbG9ja3NbaW5kZXhdLmdldCgpOyB9CisgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBvcGVyYXRv
cltdKHVuc2lnbmVkIGluZGV4KSBjb25zdCB7IHJldHVybiBhdChpbmRleCk7IH0KKworICAgIGl0
ZXJhdG9yIGJlZ2luKCkgY29uc3QgeyByZXR1cm4gaXRlcmF0b3IoKnRoaXMsIDApOyB9CisgICAg
aXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gaXRlcmF0b3IoKnRoaXMsIHNpemUoKSk7IH0K
KyAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGZpcnN0KCkgeyByZXR1cm4gYXQoMCk7IH0KKyAgICBC
eXRlY29kZUJhc2ljQmxvY2sqIGxhc3QoKSB7IHJldHVybiBhdChzaXplKCkgLSAxKTsgfQorCitw
cml2YXRlOgorICAgIEJsb2NrKiBtX2NvZGVCbG9jazsKKyAgICBCYXNpY0Jsb2Nrc1ZlY3RvciBt
X2Jhc2ljQmxvY2tzOworICAgIHR5cGVuYW1lIEJsb2NrOjpVbnBhY2tlZEluc3RydWN0aW9ucyYg
bV9pbnN0cnVjdGlvbnM7Cit9OworCisKK3RlbXBsYXRlPHR5cGVuYW1lIEJsb2NrPgorQnl0ZWNv
ZGVHcmFwaDxCbG9jaz46OkJ5dGVjb2RlR3JhcGgoQmxvY2sqIGNvZGVCbG9jaywgdHlwZW5hbWUg
QmxvY2s6OlVucGFja2VkSW5zdHJ1Y3Rpb25zJiBpbnN0cnVjdGlvbnMpCisgICAgOiBtX2NvZGVC
bG9jayhjb2RlQmxvY2spCisgICAgLCBtX2luc3RydWN0aW9ucyhpbnN0cnVjdGlvbnMpCit7Cisg
ICAgQVNTRVJUKG1fY29kZUJsb2NrKTsKKyAgICBCeXRlY29kZUJhc2ljQmxvY2s6OmNvbXB1dGVC
eXRlY29kZUJhc2ljQmxvY2tzKG1fY29kZUJsb2NrLCBpbnN0cnVjdGlvbnMuYmVnaW4oKSwgaW5z
dHJ1Y3Rpb25zLnNpemUoKSwgbV9iYXNpY0Jsb2Nrcyk7CisgICAgQVNTRVJUKG1fYmFzaWNCbG9j
a3Muc2l6ZSgpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24gYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24KaW5kZXggZTM4MDI1ZDVhZmNmNjlj
ZTQ4MGFlOTI4OThjOTM4ZTkzMTI3ODhkOS4uY2U2MGRhNGEyNmJjMzQ3N2ZkNDcxOWIwYTRiMWZl
Y2U1ODljNjE5ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlTGlzdC5qc29uCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZUxpc3QuanNvbgpAQCAtMTQzLDggKzE0Myw3IEBACiAgICAgICAgICAgICB7ICJuYW1lIiA6
ICJvcF9hc3NlcnQiLCAibGVuZ3RoIiA6IDMgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9w
X2NyZWF0ZV9yZXN0IiwgImxlbmd0aCI6IDQgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9w
X2dldF9yZXN0X2xlbmd0aCIsICJsZW5ndGgiOiAzIH0sCi0gICAgICAgICAgICB7ICJuYW1lIiA6
ICJvcF9zYXZlIiwgImxlbmd0aCIgOiA0IH0sCi0gICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9y
ZXN1bWUiLCAibGVuZ3RoIiA6IDMgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX3lpZWxk
IiwgImxlbmd0aCIgOiA0IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF93YXRjaGRvZyIs
ICJsZW5ndGgiIDogMSB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfbG9nX3NoYWRvd19j
aGlja2VuX3Byb2xvZ3VlIiwgImxlbmd0aCIgOiAyfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDog
Im9wX2xvZ19zaGFkb3dfY2hpY2tlbl90YWlsIiwgImxlbmd0aCIgOiAzfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5
c2lzLmNwcAppbmRleCAxN2U4MmEyZmJiYTAxNTA0M2U5OWQzNGVkMjU2OTM3MmIzNmY3YTg1Li5h
MTU0MGYxZGJiNDNlOTJlYzdhNGQ3OWJjMzRjOTA3ZGI3YzI2ZjNkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5
c2lzLmNwcApAQCAtMzEsMTk4ICszMSwzNiBAQAogI2luY2x1ZGUgIkJ5dGVjb2RlVXNlRGVmLmgi
CiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiRnVsbEJ5dGVjb2RlTGl2ZW5lc3Mu
aCIKLSNpbmNsdWRlICJQcmVjaXNlSnVtcFRhcmdldHMuaCIKKyNpbmNsdWRlICJJbnRlcnByZXRl
cklubGluZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNp
czo6Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzKENvZGVCbG9jayogY29kZUJsb2NrKQotICAgIDog
bV9jb2RlQmxvY2soY29kZUJsb2NrKQorICAgIDogbV9ncmFwaChjb2RlQmxvY2ssIGNvZGVCbG9j
ay0+aW5zdHJ1Y3Rpb25zKCkpCiB7Ci0gICAgQVNTRVJUKG1fY29kZUJsb2NrKTsKICAgICBjb21w
dXRlKCk7CiB9CiAKLXN0YXRpYyBib29sIGlzVmFsaWRSZWdpc3RlckZvckxpdmVuZXNzKENvZGVC
bG9jayogY29kZUJsb2NrLCBpbnQgb3BlcmFuZCkKK3RlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+
Cit2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0ZURlZnNGb3JCeXRlY29kZU9m
ZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgT3Bjb2RlSUQgb3Bjb2RlSUQsIEluc3RydWN0aW9u
KiBpbnN0cnVjdGlvbiwgRmFzdEJpdFZlY3RvciYsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiB7
Ci0gICAgaWYgKGNvZGVCbG9jay0+aXNDb25zdGFudFJlZ2lzdGVySW5kZXgob3BlcmFuZCkpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKLSAgICBWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJl
ZyhvcGVyYW5kKTsKLSAgICByZXR1cm4gdmlydHVhbFJlZy5pc0xvY2FsKCk7Ci19Ci0KLXN0YXRp
YyB1bnNpZ25lZCBnZXRMZWFkZXJPZmZzZXRGb3JCYXNpY0Jsb2NrKHN0ZDo6dW5pcXVlX3B0cjxC
eXRlY29kZUJhc2ljQmxvY2s+KiBiYXNpY0Jsb2NrKQotewotICAgIHJldHVybiAoKmJhc2ljQmxv
Y2spLT5sZWFkZXJCeXRlY29kZU9mZnNldCgpOwotfQotCi1zdGF0aWMgQnl0ZWNvZGVCYXNpY0Js
b2NrKiBmaW5kQmFzaWNCbG9ja1dpdGhMZWFkZXJPZmZzZXQoVmVjdG9yPHN0ZDo6dW5pcXVlX3B0
cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9ja3MsIHVuc2lnbmVkIGxlYWRlck9mZnNl
dCkKLXsKLSAgICByZXR1cm4gKCp0cnlCaW5hcnlTZWFyY2g8c3RkOjp1bmlxdWVfcHRyPEJ5dGVj
b2RlQmFzaWNCbG9jaz4sIHVuc2lnbmVkPihiYXNpY0Jsb2NrcywgYmFzaWNCbG9ja3Muc2l6ZSgp
LCBsZWFkZXJPZmZzZXQsIGdldExlYWRlck9mZnNldEZvckJhc2ljQmxvY2spKS5nZXQoKTsKLX0K
LQotc3RhdGljIGJvb2wgYmxvY2tDb250YWluc0J5dGVjb2RlT2Zmc2V0KEJ5dGVjb2RlQmFzaWNC
bG9jayogYmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KQotewotICAgIHVuc2lnbmVkIGxl
YWRlck9mZnNldCA9IGJsb2NrLT5sZWFkZXJCeXRlY29kZU9mZnNldCgpOwotICAgIHJldHVybiBi
eXRlY29kZU9mZnNldCA+PSBsZWFkZXJPZmZzZXQgJiYgYnl0ZWNvZGVPZmZzZXQgPCBsZWFkZXJP
ZmZzZXQgKyBibG9jay0+dG90YWxCeXRlY29kZUxlbmd0aCgpOwotfQotCi1zdGF0aWMgQnl0ZWNv
ZGVCYXNpY0Jsb2NrKiBmaW5kQmFzaWNCbG9ja0ZvckJ5dGVjb2RlT2Zmc2V0KFZlY3RvcjxzdGQ6
OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mIGJhc2ljQmxvY2tzLCB1bnNpZ25lZCBi
eXRlY29kZU9mZnNldCkKLXsKLS8qCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGJhc2lj
QmxvY2tzLnNpemUoKTsgaSsrKSB7Ci0gICAgICAgIGlmIChibG9ja0NvbnRhaW5zQnl0ZWNvZGVP
ZmZzZXQoYmFzaWNCbG9ja3NbaV0uZ2V0KCksIGJ5dGVjb2RlT2Zmc2V0KSkKLSAgICAgICAgICAg
IHJldHVybiBiYXNpY0Jsb2Nrc1tpXS5nZXQoKTsKLSAgICB9Ci0gICAgcmV0dXJuIDA7Ci0qLwot
ICAgIHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+KiBiYXNpY0Jsb2NrID0gYXBw
cm94aW1hdGVCaW5hcnlTZWFyY2g8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4s
IHVuc2lnbmVkPigKLSAgICAgICAgYmFzaWNCbG9ja3MsIGJhc2ljQmxvY2tzLnNpemUoKSwgYnl0
ZWNvZGVPZmZzZXQsIGdldExlYWRlck9mZnNldEZvckJhc2ljQmxvY2spOwotICAgIC8vIFdlIGZv
dW5kIHRoZSBibG9jayB3ZSB3ZXJlIGxvb2tpbmcgZm9yLgotICAgIGlmIChibG9ja0NvbnRhaW5z
Qnl0ZWNvZGVPZmZzZXQoKCpiYXNpY0Jsb2NrKS5nZXQoKSwgYnl0ZWNvZGVPZmZzZXQpKQotICAg
ICAgICByZXR1cm4gKCpiYXNpY0Jsb2NrKS5nZXQoKTsKLQotICAgIC8vIEJhc2ljIGJsb2NrIGlz
IHRvIHRoZSBsZWZ0IG9mIHRoZSByZXR1cm5lZCBibG9jay4KLSAgICBpZiAoYnl0ZWNvZGVPZmZz
ZXQgPCAoKmJhc2ljQmxvY2spLT5sZWFkZXJCeXRlY29kZU9mZnNldCgpKSB7Ci0gICAgICAgIEFT
U0VSVChiYXNpY0Jsb2NrIC0gMSA+PSBiYXNpY0Jsb2Nrcy5kYXRhKCkpOwotICAgICAgICBBU1NF
UlQoYmxvY2tDb250YWluc0J5dGVjb2RlT2Zmc2V0KGJhc2ljQmxvY2tbLTFdLmdldCgpLCBieXRl
Y29kZU9mZnNldCkpOwotICAgICAgICByZXR1cm4gYmFzaWNCbG9ja1stMV0uZ2V0KCk7Ci0gICAg
fQotCi0gICAgLy8gQmFzaWMgYmxvY2sgaXMgdG8gdGhlIHJpZ2h0IG9mIHRoZSByZXR1cm5lZCBi
bG9jay4KLSAgICBBU1NFUlQoJmJhc2ljQmxvY2tbMV0gPD0gJmJhc2ljQmxvY2tzLmxhc3QoKSk7
Ci0gICAgQVNTRVJUKGJsb2NrQ29udGFpbnNCeXRlY29kZU9mZnNldChiYXNpY0Jsb2NrWzFdLmdl
dCgpLCBieXRlY29kZU9mZnNldCkpOwotICAgIHJldHVybiBiYXNpY0Jsb2NrWzFdLmdldCgpOwot
fQotCi0vLyBTaW1wbGlmaWVkIGludGVyZmFjZSB0byBieXRlY29kZSB1c2UvZGVmLCB3aGljaCBk
ZXRlcm1pbmVzIGRlZnMgZmlyc3QgYW5kIHRoZW4gdXNlcywgYW5kIGluY2x1ZGVzCi0vLyBleGNl
cHRpb24gaGFuZGxlcnMgaW4gdGhlIHVzZXMuCi10ZW1wbGF0ZTx0eXBlbmFtZSBVc2VGdW5jdG9y
LCB0eXBlbmFtZSBEZWZGdW5jdG9yPgotc3RhdGljIHZvaWQgc3RlcE92ZXJJbnN0cnVjdGlvbihD
b2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaywgVmVjdG9yPHN0
ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9ja3MsIHVuc2lnbmVk
IGJ5dGVjb2RlT2Zmc2V0LCBjb25zdCBVc2VGdW5jdG9yJiB1c2UsIGNvbnN0IERlZkZ1bmN0b3Im
IGRlZikKLXsKLSAgICAvLyBUaGlzIGFic3RyYWN0bHkgZXhlY3V0ZSB0aGUgaW5zdHJ1Y3Rpb24g
aW4gcmV2ZXJzZS4gSW5zdHJ1Y3Rpb25zIGxvZ2ljYWxseSBmaXJzdCB1c2Ugb3BlcmFuZHMgYW5k
Ci0gICAgLy8gdGhlbiBkZWZpbmUgb3BlcmFuZHMuIFRoaXMgbG9naWNhbCBvcmRlcmluZyBpcyBu
ZWNlc3NhcnkgZm9yIG9wZXJhdGlvbnMgdGhhdCB1c2UgYW5kIGRlZiB0aGUgc2FtZQotICAgIC8v
IG9wZXJhbmQsIGxpa2U6Ci0gICAgLy8KLSAgICAvLyAgICAgb3BfYWRkIGxvYzEsIGxvYzEsIGxv
YzIKLSAgICAvLwotICAgIC8vIFRoZSB1c2Ugb2YgbG9jMSBoYXBwZW5zIGJlZm9yZSB0aGUgZGVm
IG9mIGxvYzEuIFRoYXQncyBhIHNlbWFudGljIHJlcXVpcmVtZW50IHNpbmNlIHRoZSBhZGQKLSAg
ICAvLyBvcGVyYXRpb24gY2Fubm90IHRyYXZlbCBmb3J3YXJkIGluIHRpbWUgdG8gcmVhZCB0aGUg
dmFsdWUgdGhhdCBpdCB3aWxsIHByb2R1Y2UgYWZ0ZXIgcmVhZGluZyB0aGF0Ci0gICAgLy8gdmFs
dWUuIFNpbmNlIHdlIGFyZSBleGVjdXRpbmcgaW4gcmV2ZXJzZSwgdGhpcyBtZWFucyB0aGF0IHdl
IG11c3QgZG8gZGVmcyBiZWZvcmUgdXNlcyAocmV2ZXJzZSBvZgotICAgIC8vIHVzZXMgYmVmb3Jl
IGRlZnMpLgotICAgIC8vCi0gICAgLy8gU2luY2UgdGhpcyBpcyBhIGxpdmVuZXNzIGFuYWx5c2lz
LCB0aGlzIG9yZGVyaW5nIGVuZHMgdXAgYmVpbmcgcGFydGljdWxhcmx5IGltcG9ydGFudDogaWYg
d2UgZGlkCi0gICAgLy8gdXNlcyBiZWZvcmUgZGVmcywgdGhlbiB0aGUgYWRkIG9wZXJhdGlvbiBh
Ym92ZSB3b3VsZCBhcHBlYXIgdG8gbm90IGhhdmUgbG9jMSBsaXZlLCBzaW5jZSB3ZSdkCi0gICAg
Ly8gZmlyc3QgYWRkIGl0IHRvIHRoZSBvdXQgc2V0ICh0aGUgdXNlKSwgYW5kIHRoZW4gd2UnZCBy
ZW1vdmUgaXQgKHRoZSBkZWYpLgotICAgIAotICAgIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZz
ZXQoCi0gICAgICAgIGNvZGVCbG9jaywgYmxvY2ssIGJ5dGVjb2RlT2Zmc2V0LAotICAgICAgICBb
Jl0gKENvZGVCbG9jayogY29kZUJsb2NrLCBJbnN0cnVjdGlvbiosIE9wY29kZUlELCBpbnQgb3Bl
cmFuZCkgewotICAgICAgICAgICAgaWYgKGlzVmFsaWRSZWdpc3RlckZvckxpdmVuZXNzKGNvZGVC
bG9jaywgb3BlcmFuZCkpCi0gICAgICAgICAgICAgICAgZGVmKFZpcnR1YWxSZWdpc3RlcihvcGVy
YW5kKS50b0xvY2FsKCkpOwotICAgICAgICB9KTsKLQotICAgIGNvbXB1dGVVc2VzRm9yQnl0ZWNv
ZGVPZmZzZXQoCi0gICAgICAgIGNvZGVCbG9jaywgYmxvY2ssIGJ5dGVjb2RlT2Zmc2V0LAotICAg
ICAgICBbJl0gKENvZGVCbG9jayogY29kZUJsb2NrLCBJbnN0cnVjdGlvbiosIE9wY29kZUlELCBp
bnQgb3BlcmFuZCkgewotICAgICAgICAgICAgaWYgKGlzVmFsaWRSZWdpc3RlckZvckxpdmVuZXNz
KGNvZGVCbG9jaywgb3BlcmFuZCkpCi0gICAgICAgICAgICAgICAgdXNlKFZpcnR1YWxSZWdpc3Rl
cihvcGVyYW5kKS50b0xvY2FsKCkpOwotICAgICAgICB9KTsKLQotICAgIC8vIElmIHdlIGhhdmUg
YW4gZXhjZXB0aW9uIGhhbmRsZXIsIHdlIHdhbnQgdGhlIGxpdmUtaW4gdmFyaWFibGVzIG9mIHRo
ZSAKLSAgICAvLyBleGNlcHRpb24gaGFuZGxlciBibG9jayB0byBiZSBpbmNsdWRlZCBpbiB0aGUg
bGl2ZS1pbiBvZiB0aGlzIHBhcnRpY3VsYXIgYnl0ZWNvZGUuCi0gICAgaWYgKEhhbmRsZXJJbmZv
KiBoYW5kbGVyID0gY29kZUJsb2NrLT5oYW5kbGVyRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVP
ZmZzZXQpKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBUaGlzIHJlc3VtZSBjaGVjayBzaG91bGQgbm90
IGJlIG5lZWRlZC4KLSAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE1OTI4MQotICAgICAgICBJbnRlcnByZXRlciogaW50ZXJwcmV0ZXIgPSBjb2RlQmxv
Y2stPnZtKCktPmludGVycHJldGVyOwotICAgICAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25z
QmVnaW4gPSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCk7Ci0gICAgICAgIEluc3Ry
dWN0aW9uKiBpbnN0cnVjdGlvbiA9ICZpbnN0cnVjdGlvbnNCZWdpbltieXRlY29kZU9mZnNldF07
Ci0gICAgICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGlu
c3RydWN0aW9uLT51Lm9wY29kZSk7Ci0gICAgICAgIGlmIChvcGNvZGVJRCAhPSBvcF9yZXN1bWUp
IHsKLSAgICAgICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogaGFuZGxlckJsb2NrID0gZmluZEJh
c2ljQmxvY2tXaXRoTGVhZGVyT2Zmc2V0KGJhc2ljQmxvY2tzLCBoYW5kbGVyLT50YXJnZXQpOwot
ICAgICAgICAgICAgQVNTRVJUKGhhbmRsZXJCbG9jayk7Ci0gICAgICAgICAgICBoYW5kbGVyQmxv
Y2stPmluKCkuZm9yRWFjaFNldEJpdCh1c2UpOwotICAgICAgICB9Ci0gICAgfQotfQotCi1zdGF0
aWMgdm9pZCBzdGVwT3Zlckluc3RydWN0aW9uKENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29k
ZUJhc2ljQmxvY2sqIGJsb2NrLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNC
bG9jaz4+JiBiYXNpY0Jsb2NrcywgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIEZhc3RCaXRWZWN0
b3ImIG91dCkKLXsKLSAgICBzdGVwT3Zlckluc3RydWN0aW9uKAotICAgICAgICBjb2RlQmxvY2ss
IGJsb2NrLCBiYXNpY0Jsb2NrcywgYnl0ZWNvZGVPZmZzZXQsCi0gICAgICAgIFsmXSAodW5zaWdu
ZWQgYml0SW5kZXgpIHsKLSAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIHVzZSBmdW5jdG9yLCBz
byB3ZSBzZXQgdGhlIGJpdC4KLSAgICAgICAgICAgIG91dC5zZXQoYml0SW5kZXgpOwotICAgICAg
ICB9LAotICAgICAgICBbJl0gKHVuc2lnbmVkIGJpdEluZGV4KSB7Ci0gICAgICAgICAgICAvLyBU
aGlzIGlzIHRoZSBkZWYgZnVuY3Rvciwgc28gd2UgY2xlYXIgdGhlIGJpdC4KLSAgICAgICAgICAg
IG91dC5jbGVhcihiaXRJbmRleCk7Ci0gICAgICAgIH0pOworICAgIEpTQzo6Y29tcHV0ZURlZnNG
b3JCeXRlY29kZU9mZnNldChjb2RlQmxvY2ssIG9wY29kZUlELCBpbnN0cnVjdGlvbiwgZnVuY3Rv
cik7CiB9CiAKLXN0YXRpYyB2b2lkIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQnl0ZWNvZGVPZmZz
ZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2ssIFZlY3Rv
cjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mIGJhc2ljQmxvY2tzLCB1bnNp
Z25lZCB0YXJnZXRPZmZzZXQsIEZhc3RCaXRWZWN0b3ImIHJlc3VsdCkKK3RlbXBsYXRlPHR5cGVu
YW1lIEZ1bmN0b3I+Cit2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0ZVVzZXNG
b3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgT3Bjb2RlSUQgb3Bjb2RlSUQs
IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgRmFzdEJpdFZlY3RvciYsIGNvbnN0IEZ1bmN0b3Im
IGZ1bmN0b3IpCiB7Ci0gICAgQVNTRVJUKCFibG9jay0+aXNFeGl0QmxvY2soKSk7Ci0gICAgQVNT
RVJUKCFibG9jay0+aXNFbnRyeUJsb2NrKCkpOwotCi0gICAgRmFzdEJpdFZlY3RvciBvdXQgPSBi
bG9jay0+b3V0KCk7Ci0KLSAgICBmb3IgKGludCBpID0gYmxvY2stPmJ5dGVjb2RlT2Zmc2V0cygp
LnNpemUoKSAtIDE7IGkgPj0gMDsgaS0tKSB7Ci0gICAgICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zm
c2V0ID0gYmxvY2stPmJ5dGVjb2RlT2Zmc2V0cygpW2ldOwotICAgICAgICBpZiAodGFyZ2V0T2Zm
c2V0ID4gYnl0ZWNvZGVPZmZzZXQpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgCi0gICAg
ICAgIHN0ZXBPdmVySW5zdHJ1Y3Rpb24oY29kZUJsb2NrLCBibG9jaywgYmFzaWNCbG9ja3MsIGJ5
dGVjb2RlT2Zmc2V0LCBvdXQpOwotICAgIH0KLQotICAgIHJlc3VsdC5zZXQob3V0KTsKLX0KLQot
c3RhdGljIHZvaWQgY29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCbG9jayhDb2RlQmxvY2sqIGNvZGVC
bG9jaywgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaywgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxC
eXRlY29kZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9ja3MpCi17Ci0gICAgaWYgKGJsb2NrLT5pc0V4
aXRCbG9jaygpIHx8IGJsb2NrLT5pc0VudHJ5QmxvY2soKSkKLSAgICAgICAgcmV0dXJuOwotICAg
IGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQnl0ZWNvZGVPZmZzZXQoY29kZUJsb2NrLCBibG9jaywg
YmFzaWNCbG9ja3MsIGJsb2NrLT5sZWFkZXJCeXRlY29kZU9mZnNldCgpLCBibG9jay0+aW4oKSk7
Ci19Ci0KLXZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpydW5MaXZlbmVzc0ZpeHBvaW50
KCkKLXsKLSAgICBVbmxpbmtlZENvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2sgPSBtX2NvZGVC
bG9jay0+dW5saW5rZWRDb2RlQmxvY2soKTsKLSAgICB1bnNpZ25lZCBudW1iZXJPZlZhcmlhYmxl
cyA9IHVubGlua2VkQ29kZUJsb2NrLT5tX251bUNhbGxlZUxvY2FsczsKLQotICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBtX2Jhc2ljQmxvY2tzLnNpemUoKTsgaSsrKSB7Ci0gICAgICAgIEJ5
dGVjb2RlQmFzaWNCbG9jayogYmxvY2sgPSBtX2Jhc2ljQmxvY2tzW2ldLmdldCgpOwotICAgICAg
ICBibG9jay0+aW4oKS5yZXNpemUobnVtYmVyT2ZWYXJpYWJsZXMpOwotICAgICAgICBibG9jay0+
b3V0KCkucmVzaXplKG51bWJlck9mVmFyaWFibGVzKTsKLSAgICB9Ci0KLSAgICBib29sIGNoYW5n
ZWQ7Ci0gICAgbV9iYXNpY0Jsb2Nrcy5sYXN0KCktPmluKCkuY2xlYXJBbGwoKTsKLSAgICBtX2Jh
c2ljQmxvY2tzLmxhc3QoKS0+b3V0KCkuY2xlYXJBbGwoKTsKLSAgICBGYXN0Qml0VmVjdG9yIG5l
d091dDsKLSAgICBuZXdPdXQucmVzaXplKG1fYmFzaWNCbG9ja3MubGFzdCgpLT5vdXQoKS5udW1C
aXRzKCkpOwotICAgIGRvIHsKLSAgICAgICAgY2hhbmdlZCA9IGZhbHNlOwotICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSBtX2Jhc2ljQmxvY2tzLnNpemUoKSAtIDE7IGktLTspIHsKLSAgICAgICAg
ICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2sgPSBtX2Jhc2ljQmxvY2tzW2ldLmdldCgpOwot
ICAgICAgICAgICAgbmV3T3V0LmNsZWFyQWxsKCk7Ci0gICAgICAgICAgICBmb3IgKHVuc2lnbmVk
IGogPSAwOyBqIDwgYmxvY2stPnN1Y2Nlc3NvcnMoKS5zaXplKCk7IGorKykKLSAgICAgICAgICAg
ICAgICBuZXdPdXQubWVyZ2UoYmxvY2stPnN1Y2Nlc3NvcnMoKVtqXS0+aW4oKSk7Ci0gICAgICAg
ICAgICBib29sIG91dERpZENoYW5nZSA9IGJsb2NrLT5vdXQoKS5zZXRBbmRDaGVjayhuZXdPdXQp
OwotICAgICAgICAgICAgY29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCbG9jayhtX2NvZGVCbG9jaywg
YmxvY2ssIG1fYmFzaWNCbG9ja3MpOwotICAgICAgICAgICAgY2hhbmdlZCB8PSBvdXREaWRDaGFu
Z2U7Ci0gICAgICAgIH0KLSAgICB9IHdoaWxlIChjaGFuZ2VkKTsKKyAgICBKU0M6OmNvbXB1dGVV
c2VzRm9yQnl0ZWNvZGVPZmZzZXQoY29kZUJsb2NrLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb24sIGZ1
bmN0b3IpOwogfQogCiB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Z2V0TGl2ZW5lc3NJ
bmZvQXRCeXRlY29kZU9mZnNldCh1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgRmFzdEJpdFZlY3Rv
ciYgcmVzdWx0KQogewotICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2sgPSBmaW5kQmFzaWNC
bG9ja0ZvckJ5dGVjb2RlT2Zmc2V0KG1fYmFzaWNCbG9ja3MsIGJ5dGVjb2RlT2Zmc2V0KTsKKyAg
ICBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrID0gbV9ncmFwaC5maW5kQmFzaWNCbG9ja0ZvckJ5
dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KTsKICAgICBBU1NFUlQoYmxvY2spOwogICAgIEFT
U0VSVCghYmxvY2stPmlzRW50cnlCbG9jaygpKTsKICAgICBBU1NFUlQoIWJsb2NrLT5pc0V4aXRC
bG9jaygpKTsKICAgICByZXN1bHQucmVzaXplKGJsb2NrLT5vdXQoKS5udW1CaXRzKCkpOwotICAg
IGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQnl0ZWNvZGVPZmZzZXQobV9jb2RlQmxvY2ssIGJsb2Nr
LCBtX2Jhc2ljQmxvY2tzLCBieXRlY29kZU9mZnNldCwgcmVzdWx0KTsKKyAgICBjb21wdXRlTG9j
YWxMaXZlbmVzc0ZvckJ5dGVjb2RlT2Zmc2V0KG1fZ3JhcGgsIGJsb2NrLCBieXRlY29kZU9mZnNl
dCwgcmVzdWx0KTsKIH0KIAogYm9vbCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6Om9wZXJhbmRJ
c0xpdmVBdEJ5dGVjb2RlT2Zmc2V0KGludCBvcGVyYW5kLCB1bnNpZ25lZCBieXRlY29kZU9mZnNl
dCkKQEAgLTI0NCwxMSArODIsMTEgQEAgRmFzdEJpdFZlY3RvciBCeXRlY29kZUxpdmVuZXNzQW5h
bHlzaXM6OmdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQodW5zaWduZWQKIHZvaWQgQnl0
ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlRnVsbExpdmVuZXNzKEZ1bGxCeXRlY29kZUxp
dmVuZXNzJiByZXN1bHQpCiB7CiAgICAgRmFzdEJpdFZlY3RvciBvdXQ7CisgICAgQ29kZUJsb2Nr
KiBjb2RlQmxvY2sgPSBtX2dyYXBoLmNvZGVCbG9jaygpOwogICAgIAotICAgIHJlc3VsdC5tX21h
cC5yZXNpemUobV9jb2RlQmxvY2stPmluc3RydWN0aW9ucygpLnNpemUoKSk7CisgICAgcmVzdWx0
Lm1fbWFwLnJlc2l6ZShjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLnNpemUoKSk7CiAgICAgCi0g
ICAgZm9yICh1bnNpZ25lZCBpID0gbV9iYXNpY0Jsb2Nrcy5zaXplKCk7IGktLTspIHsKLSAgICAg
ICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jayA9IG1fYmFzaWNCbG9ja3NbaV0uZ2V0KCk7Cisg
ICAgZm9yIChzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiYgYmxvY2sgOiBtX2dy
YXBoLmJhc2ljQmxvY2tzSW5SZXZlcnNlT3JkZXIoKSkgewogICAgICAgICBpZiAoYmxvY2stPmlz
RW50cnlCbG9jaygpIHx8IGJsb2NrLT5pc0V4aXRCbG9jaygpKQogICAgICAgICAgICAgY29udGlu
dWU7CiAgICAgICAgIApAQCAtMjU2LDcgKzk0LDcgQEAgdm9pZCBCeXRlY29kZUxpdmVuZXNzQW5h
bHlzaXM6OmNvbXB1dGVGdWxsTGl2ZW5lc3MoRnVsbEJ5dGVjb2RlTGl2ZW5lc3MmIHJlc3VsdCkK
ICAgICAgICAgCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGJsb2NrLT5ieXRlY29kZU9mZnNl
dHMoKS5zaXplKCk7IGktLTspIHsKICAgICAgICAgICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0
ID0gYmxvY2stPmJ5dGVjb2RlT2Zmc2V0cygpW2ldOwotICAgICAgICAgICAgc3RlcE92ZXJJbnN0
cnVjdGlvbihtX2NvZGVCbG9jaywgYmxvY2ssIG1fYmFzaWNCbG9ja3MsIGJ5dGVjb2RlT2Zmc2V0
LCBvdXQpOworICAgICAgICAgICAgc3RlcE92ZXJJbnN0cnVjdGlvbihtX2dyYXBoLCBieXRlY29k
ZU9mZnNldCwgb3V0KTsKICAgICAgICAgICAgIHJlc3VsdC5tX21hcFtieXRlY29kZU9mZnNldF0g
PSBvdXQ7CiAgICAgICAgIH0KICAgICB9CkBAIC0yNjYsMTEgKzEwNCwxMSBAQCB2b2lkIEJ5dGVj
b2RlTGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0ZUtpbGxzKEJ5dGVjb2RlS2lsbHMmIHJlc3VsdCkK
IHsKICAgICBGYXN0Qml0VmVjdG9yIG91dDsKICAgICAKLSAgICByZXN1bHQubV9jb2RlQmxvY2sg
PSBtX2NvZGVCbG9jazsKLSAgICByZXN1bHQubV9raWxsU2V0cyA9IHN0ZDo6bWFrZV91bmlxdWU8
Qnl0ZWNvZGVLaWxsczo6S2lsbFNldFtdPihtX2NvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuc2l6
ZSgpKTsKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IG1fZ3JhcGguY29kZUJsb2NrKCk7Cisg
ICAgcmVzdWx0Lm1fY29kZUJsb2NrID0gY29kZUJsb2NrOworICAgIHJlc3VsdC5tX2tpbGxTZXRz
ID0gc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZUtpbGxzOjpLaWxsU2V0W10+KGNvZGVCbG9jay0+
aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKICAgICAKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2Jh
c2ljQmxvY2tzLnNpemUoKTsgaS0tOykgewotICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGJs
b2NrID0gbV9iYXNpY0Jsb2Nrc1tpXS5nZXQoKTsKKyAgICBmb3IgKHN0ZDo6dW5pcXVlX3B0cjxC
eXRlY29kZUJhc2ljQmxvY2s+JiBibG9jayA6IG1fZ3JhcGguYmFzaWNCbG9ja3NJblJldmVyc2VP
cmRlcigpKSB7CiAgICAgICAgIGlmIChibG9jay0+aXNFbnRyeUJsb2NrKCkgfHwgYmxvY2stPmlz
RXhpdEJsb2NrKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgCkBAIC0yNzksNyAr
MTE3LDcgQEAgdm9pZCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGVLaWxscyhCeXRl
Y29kZUtpbGxzJiByZXN1bHQpCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGJsb2NrLT5ieXRl
Y29kZU9mZnNldHMoKS5zaXplKCk7IGktLTspIHsKICAgICAgICAgICAgIHVuc2lnbmVkIGJ5dGVj
b2RlT2Zmc2V0ID0gYmxvY2stPmJ5dGVjb2RlT2Zmc2V0cygpW2ldOwogICAgICAgICAgICAgc3Rl
cE92ZXJJbnN0cnVjdGlvbigKLSAgICAgICAgICAgICAgICBtX2NvZGVCbG9jaywgYmxvY2ssIG1f
YmFzaWNCbG9ja3MsIGJ5dGVjb2RlT2Zmc2V0LAorICAgICAgICAgICAgICAgIG1fZ3JhcGgsIGJ5
dGVjb2RlT2Zmc2V0LCBvdXQsCiAgICAgICAgICAgICAgICAgWyZdICh1bnNpZ25lZCBpbmRleCkg
ewogICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIGZvciB1c2VzLgogICAgICAgICAgICAg
ICAgICAgICBpZiAob3V0LmdldChpbmRleCkpCkBAIC0yOTcsMTIgKzEzNSwxMyBAQCB2b2lkIEJ5
dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0ZUtpbGxzKEJ5dGVjb2RlS2lsbHMmIHJlc3Vs
dCkKIAogdm9pZCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmR1bXBSZXN1bHRzKCkKIHsKLSAg
ICBkYXRhTG9nKCJcbkR1bXBpbmcgYnl0ZWNvZGUgbGl2ZW5lc3MgZm9yICIsICptX2NvZGVCbG9j
aywgIjpcbiIpOwotICAgIEludGVycHJldGVyKiBpbnRlcnByZXRlciA9IG1fY29kZUJsb2NrLT52
bSgpLT5pbnRlcnByZXRlcjsKLSAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4gPSBt
X2NvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgbV9iYXNpY0Jsb2Nrcy5zaXplKCk7IGkrKykgewotICAgICAgICBCeXRlY29kZUJh
c2ljQmxvY2sqIGJsb2NrID0gbV9iYXNpY0Jsb2Nrc1tpXS5nZXQoKTsKLSAgICAgICAgZGF0YUxv
Z0YoIlxuQnl0ZWNvZGUgYmFzaWMgYmxvY2sgJXU6ICVwIChvZmZzZXQ6ICV1LCBsZW5ndGg6ICV1
KVxuIiwgaSwgYmxvY2ssIGJsb2NrLT5sZWFkZXJCeXRlY29kZU9mZnNldCgpLCBibG9jay0+dG90
YWxCeXRlY29kZUxlbmd0aCgpKTsKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IG1fZ3JhcGgu
Y29kZUJsb2NrKCk7CisgICAgZGF0YUxvZygiXG5EdW1waW5nIGJ5dGVjb2RlIGxpdmVuZXNzIGZv
ciAiLCAqY29kZUJsb2NrLCAiOlxuIik7CisgICAgSW50ZXJwcmV0ZXIqIGludGVycHJldGVyID0g
Y29kZUJsb2NrLT52bSgpLT5pbnRlcnByZXRlcjsKKyAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rp
b25zQmVnaW4gPSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCk7CisgICAgdW5zaWdu
ZWQgaSA9IDA7CisgICAgZm9yIChCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrIDogbV9ncmFwaCkg
eworICAgICAgICBkYXRhTG9nRigiXG5CeXRlY29kZSBiYXNpYyBibG9jayAldTogJXAgKG9mZnNl
dDogJXUsIGxlbmd0aDogJXUpXG4iLCBpKyssIGJsb2NrLCBibG9jay0+bGVhZGVyQnl0ZWNvZGVP
ZmZzZXQoKSwgYmxvY2stPnRvdGFsQnl0ZWNvZGVMZW5ndGgoKSk7CiAgICAgICAgIGRhdGFMb2dG
KCJTdWNjZXNzb3JzOiAiKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8IGJsb2Nr
LT5zdWNjZXNzb3JzKCkuc2l6ZSgpOyBqKyspIHsKICAgICAgICAgICAgIEJ5dGVjb2RlQmFzaWNC
bG9jayogc3VjY2Vzc29yID0gYmxvY2stPnN1Y2Nlc3NvcnMoKVtqXTsKQEAgLTMyNyw3ICsxNjYs
NyBAQCB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6ZHVtcFJlc3VsdHMoKQogICAgICAg
ICAgICAgICAgICAgICBkYXRhTG9nRigiJXUgIiwgaik7CiAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICBkYXRhTG9nRigiXG4iKTsKLSAgICAgICAgICAgIG1fY29kZUJsb2NrLT5kdW1wQnl0ZWNv
ZGUoV1RGOjpkYXRhRmlsZSgpLCBtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4
ZWMoKSwgaW5zdHJ1Y3Rpb25zQmVnaW4sIGN1cnJlbnRJbnN0cnVjdGlvbik7CisgICAgICAgICAg
ICBjb2RlQmxvY2stPmR1bXBCeXRlY29kZShXVEY6OmRhdGFGaWxlKCksIGNvZGVCbG9jay0+Z2xv
YmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKSwgaW5zdHJ1Y3Rpb25zQmVnaW4sIGN1cnJlbnRJbnN0
cnVjdGlvbik7CiAKICAgICAgICAgICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0ZXIt
PmdldE9wY29kZUlEKGluc3RydWN0aW9uc0JlZ2luW2J5dGVjb2RlT2Zmc2V0XS51Lm9wY29kZSk7
CiAgICAgICAgICAgICB1bnNpZ25lZCBvcGNvZGVMZW5ndGggPSBvcGNvZGVMZW5ndGhzW29wY29k
ZUlEXTsKQEAgLTM0Niw5ICsxODUsNyBAQCB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6
ZHVtcFJlc3VsdHMoKQogCiB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0ZSgp
CiB7Ci0gICAgY29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MobV9jb2RlQmxvY2ssIG1fYmFzaWNC
bG9ja3MpOwotICAgIEFTU0VSVChtX2Jhc2ljQmxvY2tzLnNpemUoKSk7Ci0gICAgcnVuTGl2ZW5l
c3NGaXhwb2ludCgpOworICAgIHJ1bkxpdmVuZXNzRml4cG9pbnQobV9ncmFwaCk7CiAKICAgICBp
ZiAoT3B0aW9uczo6ZHVtcEJ5dGVjb2RlTGl2ZW5lc3NSZXN1bHRzKCkpCiAgICAgICAgIGR1bXBS
ZXN1bHRzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmgKaW5kZXggZWNlMTZmMjFmMDE1MTBhNjQyN2ZkODQx
MTQwNzliZWQ4NzBjMDg3NS4uZTEyY2Q4ZWRjZTc2ZTEyMmVmMDRlZTFmMzVmYmE4MjFiOGQ3Zjdm
MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2
ZW5lc3NBbmFseXNpcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZUxpdmVuZXNzQW5hbHlzaXMuaApAQCAtMjMsMTAgKzIzLDExIEBACiAgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBCeXRlY29kZUxpdmVuZXNzQW5h
bHlzaXNfaAotI2RlZmluZSBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNfaAorI3ByYWdtYSBvbmNl
CiAKICNpbmNsdWRlICJCeXRlY29kZUJhc2ljQmxvY2suaCIKKyNpbmNsdWRlICJCeXRlY29kZUdy
YXBoLmgiCisjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSA8d3RmL0Zhc3RCaXRWZWN0
b3IuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
QEAgLTM0LDEzICszNSwyOSBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIEJ5dGVjb2RlS2ls
bHM7Ci1jbGFzcyBDb2RlQmxvY2s7CiBjbGFzcyBGdWxsQnl0ZWNvZGVMaXZlbmVzczsKIAotY2xh
c3MgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzIHsKK3RlbXBsYXRlPHR5cGVuYW1lIERlcml2ZWRB
bmFseXNpcz4KK2NsYXNzIEJ5dGVjb2RlTGl2ZW5lc3NQcm9wYWdhdGlvbiB7Citwcm90ZWN0ZWQ6
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgR3JhcGgsIHR5cGVuYW1lIFVzZUZ1bmN0b3IsIHR5cGVu
YW1lIERlZkZ1bmN0b3I+IHZvaWQgc3RlcE92ZXJJbnN0cnVjdGlvbihHcmFwaCYsIHVuc2lnbmVk
IGJ5dGVjb2RlT2Zmc2V0LCBGYXN0Qml0VmVjdG9yJiBvdXQsIGNvbnN0IFVzZUZ1bmN0b3ImLCBj
b25zdCBEZWZGdW5jdG9yJik7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBHcmFwaD4gdm9pZCBz
dGVwT3Zlckluc3RydWN0aW9uKEdyYXBoJiwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIEZhc3RC
aXRWZWN0b3ImIG91dCk7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBHcmFwaD4gYm9vbCBjb21w
dXRlTG9jYWxMaXZlbmVzc0ZvckJ5dGVjb2RlT2Zmc2V0KEdyYXBoJiwgQnl0ZWNvZGVCYXNpY0Js
b2NrKiwgdW5zaWduZWQgdGFyZ2V0T2Zmc2V0LCBGYXN0Qml0VmVjdG9yJiByZXN1bHQpOworCisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgR3JhcGg+IGJvb2wgY29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JC
bG9jayhHcmFwaCYsIEJ5dGVjb2RlQmFzaWNCbG9jayopOworCisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgR3JhcGg+IEZhc3RCaXRWZWN0b3IgZ2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29kZU9mZnNldChH
cmFwaCYsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1l
IEdyYXBoPiB2b2lkIHJ1bkxpdmVuZXNzRml4cG9pbnQoR3JhcGgmKTsKK307CisKK2NsYXNzIEJ5
dGVjb2RlTGl2ZW5lc3NBbmFseXNpcyA6IHByaXZhdGUgQnl0ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0
aW9uPEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcz4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcyk7
CiBwdWJsaWM6CisgICAgZnJpZW5kIGNsYXNzIEJ5dGVjb2RlTGl2ZW5lc3NQcm9wYWdhdGlvbjxC
eXRlY29kZUxpdmVuZXNzQW5hbHlzaXM+OwogICAgIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcyhD
b2RlQmxvY2sqKTsKICAgICAKICAgICBib29sIG9wZXJhbmRJc0xpdmVBdEJ5dGVjb2RlT2Zmc2V0
KGludCBvcGVyYW5kLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCk7CkBAIC01MSwxOSArNjgsMTkg
QEAgY2xhc3MgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzIHsKIAogcHJpdmF0ZToKICAgICB2b2lk
IGNvbXB1dGUoKTsKLSAgICB2b2lkIHJ1bkxpdmVuZXNzRml4cG9pbnQoKTsKICAgICB2b2lkIGR1
bXBSZXN1bHRzKCk7CiAKICAgICB2b2lkIGdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQo
dW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIEZhc3RCaXRWZWN0b3ImKTsKIAotICAgIENvZGVCbG9j
ayogbV9jb2RlQmxvY2s7Ci0gICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2lj
QmxvY2s+PiBtX2Jhc2ljQmxvY2tzOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHZv
aWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqLCBPcGNvZGVJRCwgSW5z
dHJ1Y3Rpb24qLCBGYXN0Qml0VmVjdG9yJiwgY29uc3QgRnVuY3RvciYpOworICAgIHRlbXBsYXRl
PHR5cGVuYW1lIEZ1bmN0b3I+IHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldChDb2Rl
QmxvY2sqLCBPcGNvZGVJRCwgSW5zdHJ1Y3Rpb24qLCBGYXN0Qml0VmVjdG9yJiwgY29uc3QgRnVu
Y3RvciYpOworCisgICAgQnl0ZWNvZGVHcmFwaDxDb2RlQmxvY2s+IG1fZ3JhcGg7CiB9OwogCiBp
bmxpbmUgYm9vbCBvcGVyYW5kSXNBbHdheXNMaXZlKGludCBvcGVyYW5kKTsKIGlubGluZSBib29s
IG9wZXJhbmRUaGF0SXNOb3RBbHdheXNMaXZlSXNMaXZlKGNvbnN0IEZhc3RCaXRWZWN0b3ImIG91
dCwgaW50IG9wZXJhbmQpOwogaW5saW5lIGJvb2wgb3BlcmFuZElzTGl2ZShjb25zdCBGYXN0Qml0
VmVjdG9yJiBvdXQsIGludCBvcGVyYW5kKTsKK2lubGluZSBib29sIGlzVmFsaWRSZWdpc3RlckZv
ckxpdmVuZXNzKGludCBvcGVyYW5kKTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCi0KLSNlbmRpZiAv
LyBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGluZXMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNJbmxpbmVz
LmgKaW5kZXggOWI1Yzc1NWZjYjZjZDUxODA1MTQ1MDA3ODkyMmFjNGQ2ZDRkMjM4Zi4uY2Y2Yzhk
MmE0MzRkMWRlOTYxYWE0YTliMWUwZTRkMGM0ZmMxZGUxOSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGluZXMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5
c2lzSW5saW5lcy5oCkBAIC0yMywxMSArMjMsMTIgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGlu
ZXNfaAotI2RlZmluZSBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNJbmxpbmVzX2gKKyNwcmFnbWEg
b25jZQogCisjaW5jbHVkZSAiQnl0ZWNvZGVHcmFwaC5oIgogI2luY2x1ZGUgIkJ5dGVjb2RlTGl2
ZW5lc3NBbmFseXNpcy5oIgogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkludGVy
cHJldGVyLmgiCiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKQEAg
LTUwLDcgKzUxLDE1MSBAQCBpbmxpbmUgYm9vbCBvcGVyYW5kSXNMaXZlKGNvbnN0IEZhc3RCaXRW
ZWN0b3ImIG91dCwgaW50IG9wZXJhbmQpCiAgICAgcmV0dXJuIG9wZXJhbmRJc0Fsd2F5c0xpdmUo
b3BlcmFuZCkgfHwgb3BlcmFuZFRoYXRJc05vdEFsd2F5c0xpdmVJc0xpdmUob3V0LCBvcGVyYW5k
KTsKIH0KIAotfSAvLyBuYW1lc3BhY2UgSlNDCitpbmxpbmUgYm9vbCBpc1ZhbGlkUmVnaXN0ZXJG
b3JMaXZlbmVzcyhpbnQgb3BlcmFuZCkKK3sKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJl
ZyhvcGVyYW5kKTsKKyAgICBpZiAodmlydHVhbFJlZy5pc0NvbnN0YW50KCkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICByZXR1cm4gdmlydHVhbFJlZy5pc0xvY2FsKCk7Cit9CisKKy8vIFNp
bXBsaWZpZWQgaW50ZXJmYWNlIHRvIGJ5dGVjb2RlIHVzZS9kZWYsIHdoaWNoIGRldGVybWluZXMg
ZGVmcyBmaXJzdCBhbmQgdGhlbiB1c2VzLCBhbmQgaW5jbHVkZXMKKy8vIGV4Y2VwdGlvbiBoYW5k
bGVycyBpbiB0aGUgdXNlcy4KK3RlbXBsYXRlPHR5cGVuYW1lIERlcml2ZWRBbmFseXNpcz4KK3Rl
bXBsYXRlPHR5cGVuYW1lIEdyYXBoLCB0eXBlbmFtZSBVc2VGdW5jdG9yLCB0eXBlbmFtZSBEZWZG
dW5jdG9yPgoraW5saW5lIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0aW9uPERlcml2ZWRB
bmFseXNpcz46OnN0ZXBPdmVySW5zdHJ1Y3Rpb24oR3JhcGgmIGdyYXBoLCB1bnNpZ25lZCBieXRl
Y29kZU9mZnNldCwgRmFzdEJpdFZlY3RvciYgb3V0LCBjb25zdCBVc2VGdW5jdG9yJiB1c2UsIGNv
bnN0IERlZkZ1bmN0b3ImIGRlZikKK3sKKyAgICAvLyBUaGlzIGFic3RyYWN0bHkgZXhlY3V0ZSB0
aGUgaW5zdHJ1Y3Rpb24gaW4gcmV2ZXJzZS4gSW5zdHJ1Y3Rpb25zIGxvZ2ljYWxseSBmaXJzdCB1
c2Ugb3BlcmFuZHMgYW5kCisgICAgLy8gdGhlbiBkZWZpbmUgb3BlcmFuZHMuIFRoaXMgbG9naWNh
bCBvcmRlcmluZyBpcyBuZWNlc3NhcnkgZm9yIG9wZXJhdGlvbnMgdGhhdCB1c2UgYW5kIGRlZiB0
aGUgc2FtZQorICAgIC8vIG9wZXJhbmQsIGxpa2U6CisgICAgLy8KKyAgICAvLyAgICAgb3BfYWRk
IGxvYzEsIGxvYzEsIGxvYzIKKyAgICAvLworICAgIC8vIFRoZSB1c2Ugb2YgbG9jMSBoYXBwZW5z
IGJlZm9yZSB0aGUgZGVmIG9mIGxvYzEuIFRoYXQncyBhIHNlbWFudGljIHJlcXVpcmVtZW50IHNp
bmNlIHRoZSBhZGQKKyAgICAvLyBvcGVyYXRpb24gY2Fubm90IHRyYXZlbCBmb3J3YXJkIGluIHRp
bWUgdG8gcmVhZCB0aGUgdmFsdWUgdGhhdCBpdCB3aWxsIHByb2R1Y2UgYWZ0ZXIgcmVhZGluZyB0
aGF0CisgICAgLy8gdmFsdWUuIFNpbmNlIHdlIGFyZSBleGVjdXRpbmcgaW4gcmV2ZXJzZSwgdGhp
cyBtZWFucyB0aGF0IHdlIG11c3QgZG8gZGVmcyBiZWZvcmUgdXNlcyAocmV2ZXJzZSBvZgorICAg
IC8vIHVzZXMgYmVmb3JlIGRlZnMpLgorICAgIC8vCisgICAgLy8gU2luY2UgdGhpcyBpcyBhIGxp
dmVuZXNzIGFuYWx5c2lzLCB0aGlzIG9yZGVyaW5nIGVuZHMgdXAgYmVpbmcgcGFydGljdWxhcmx5
IGltcG9ydGFudDogaWYgd2UgZGlkCisgICAgLy8gdXNlcyBiZWZvcmUgZGVmcywgdGhlbiB0aGUg
YWRkIG9wZXJhdGlvbiBhYm92ZSB3b3VsZCBhcHBlYXIgdG8gbm90IGhhdmUgbG9jMSBsaXZlLCBz
aW5jZSB3ZSdkCisgICAgLy8gZmlyc3QgYWRkIGl0IHRvIHRoZSBvdXQgc2V0ICh0aGUgdXNlKSwg
YW5kIHRoZW4gd2UnZCByZW1vdmUgaXQgKHRoZSBkZWYpLgorCisgICAgYXV0byogY29kZUJsb2Nr
ID0gZ3JhcGguY29kZUJsb2NrKCk7CisgICAgSW50ZXJwcmV0ZXIqIGludGVycHJldGVyID0gY29k
ZUJsb2NrLT52bSgpLT5pbnRlcnByZXRlcjsKKyAgICBhdXRvKiBpbnN0cnVjdGlvbnNCZWdpbiA9
IGdyYXBoLmluc3RydWN0aW9ucygpLmJlZ2luKCk7CisgICAgYXV0byogaW5zdHJ1Y3Rpb24gPSAm
aW5zdHJ1Y3Rpb25zQmVnaW5bYnl0ZWNvZGVPZmZzZXRdOworICAgIE9wY29kZUlEIG9wY29kZUlE
ID0gaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKCppbnN0cnVjdGlvbik7CisKKyAgICBzdGF0aWNf
Y2FzdDxEZXJpdmVkQW5hbHlzaXMqPih0aGlzKS0+Y29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNl
dCgKKyAgICAgICAgY29kZUJsb2NrLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb24sIG91dCwKKyAgICAg
ICAgWyZdICh0eXBlbmFtZSBHcmFwaDo6Q29kZUJsb2NrKiwgdHlwZW5hbWUgR3JhcGg6Okluc3Ry
dWN0aW9uKiwgT3Bjb2RlSUQsIGludCBvcGVyYW5kKSB7CisgICAgICAgICAgICBpZiAoaXNWYWxp
ZFJlZ2lzdGVyRm9yTGl2ZW5lc3Mob3BlcmFuZCkpCisgICAgICAgICAgICAgICAgZGVmKFZpcnR1
YWxSZWdpc3RlcihvcGVyYW5kKS50b0xvY2FsKCkpOworICAgICAgICB9KTsKKworICAgIHN0YXRp
Y19jYXN0PERlcml2ZWRBbmFseXNpcyo+KHRoaXMpLT5jb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zm
c2V0KAorICAgICAgICBjb2RlQmxvY2ssIG9wY29kZUlELCBpbnN0cnVjdGlvbiwgb3V0LAorICAg
ICAgICBbJl0gKHR5cGVuYW1lIEdyYXBoOjpDb2RlQmxvY2sqLCB0eXBlbmFtZSBHcmFwaDo6SW5z
dHJ1Y3Rpb24qLCBPcGNvZGVJRCwgaW50IG9wZXJhbmQpIHsKKyAgICAgICAgICAgIGlmIChpc1Zh
bGlkUmVnaXN0ZXJGb3JMaXZlbmVzcyhvcGVyYW5kKSkKKyAgICAgICAgICAgICAgICB1c2UoVmly
dHVhbFJlZ2lzdGVyKG9wZXJhbmQpLnRvTG9jYWwoKSk7CisgICAgICAgIH0pOworCisgICAgLy8g
SWYgd2UgaGF2ZSBhbiBleGNlcHRpb24gaGFuZGxlciwgd2Ugd2FudCB0aGUgbGl2ZS1pbiB2YXJp
YWJsZXMgb2YgdGhlIAorICAgIC8vIGV4Y2VwdGlvbiBoYW5kbGVyIGJsb2NrIHRvIGJlIGluY2x1
ZGVkIGluIHRoZSBsaXZlLWluIG9mIHRoaXMgcGFydGljdWxhciBieXRlY29kZS4KKyAgICBpZiAo
YXV0byogaGFuZGxlciA9IGNvZGVCbG9jay0+aGFuZGxlckZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVj
b2RlT2Zmc2V0KSkgeworICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGhhbmRsZXJCbG9jayA9
IGdyYXBoLmZpbmRCYXNpY0Jsb2NrV2l0aExlYWRlck9mZnNldChoYW5kbGVyLT50YXJnZXQpOwor
ICAgICAgICBBU1NFUlQoaGFuZGxlckJsb2NrKTsKKyAgICAgICAgaGFuZGxlckJsb2NrLT5pbigp
LmZvckVhY2hTZXRCaXQodXNlKTsKKyAgICB9Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIERlcml2
ZWRBbmFseXNpcz4KK3RlbXBsYXRlPHR5cGVuYW1lIEdyYXBoPgoraW5saW5lIHZvaWQgQnl0ZWNv
ZGVMaXZlbmVzc1Byb3BhZ2F0aW9uPERlcml2ZWRBbmFseXNpcz46OnN0ZXBPdmVySW5zdHJ1Y3Rp
b24oR3JhcGgmIGdyYXBoLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgRmFzdEJpdFZlY3RvciYg
b3V0KQoreworICAgIHN0ZXBPdmVySW5zdHJ1Y3Rpb24oCisgICAgICAgIGdyYXBoLCBieXRlY29k
ZU9mZnNldCwgb3V0LAorICAgICAgICBbJl0gKHVuc2lnbmVkIGJpdEluZGV4KSB7CisgICAgICAg
ICAgICAvLyBUaGlzIGlzIHRoZSB1c2UgZnVuY3Rvciwgc28gd2Ugc2V0IHRoZSBiaXQuCisgICAg
ICAgICAgICBvdXQuc2V0KGJpdEluZGV4KTsKKyAgICAgICAgfSwKKyAgICAgICAgWyZdICh1bnNp
Z25lZCBiaXRJbmRleCkgeworICAgICAgICAgICAgLy8gVGhpcyBpcyB0aGUgZGVmIGZ1bmN0b3Is
IHNvIHdlIGNsZWFyIHRoZSBiaXQuCisgICAgICAgICAgICBvdXQuY2xlYXIoYml0SW5kZXgpOwor
ICAgICAgICB9KTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgRGVyaXZlZEFuYWx5c2lzPgordGVt
cGxhdGU8dHlwZW5hbWUgR3JhcGg+CitpbmxpbmUgYm9vbCBCeXRlY29kZUxpdmVuZXNzUHJvcGFn
YXRpb248RGVyaXZlZEFuYWx5c2lzPjo6Y29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCeXRlY29kZU9m
ZnNldChHcmFwaCYgZ3JhcGgsIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2ssIHVuc2lnbmVkIHRh
cmdldE9mZnNldCwgRmFzdEJpdFZlY3RvciYgcmVzdWx0KQoreworICAgIEFTU0VSVCghYmxvY2st
PmlzRXhpdEJsb2NrKCkpOworICAgIEFTU0VSVCghYmxvY2stPmlzRW50cnlCbG9jaygpKTsKIAot
I2VuZGlmIC8vIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGluZXNfaAorICAgIEZhc3RCaXRW
ZWN0b3Igb3V0ID0gYmxvY2stPm91dCgpOwogCisgICAgZm9yIChpbnQgaSA9IGJsb2NrLT5ieXRl
Y29kZU9mZnNldHMoKS5zaXplKCkgLSAxOyBpID49IDA7IGktLSkgeworICAgICAgICB1bnNpZ25l
ZCBieXRlY29kZU9mZnNldCA9IGJsb2NrLT5ieXRlY29kZU9mZnNldHMoKVtpXTsKKyAgICAgICAg
aWYgKHRhcmdldE9mZnNldCA+IGJ5dGVjb2RlT2Zmc2V0KQorICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIHN0ZXBPdmVySW5zdHJ1Y3Rpb24oZ3JhcGgsIGJ5dGVjb2RlT2Zmc2V0LCBvdXQpOwor
ICAgIH0KKworICAgIHJldHVybiByZXN1bHQuc2V0QW5kQ2hlY2sob3V0KTsKK30KKwordGVtcGxh
dGU8dHlwZW5hbWUgRGVyaXZlZEFuYWx5c2lzPgordGVtcGxhdGU8dHlwZW5hbWUgR3JhcGg+Citp
bmxpbmUgYm9vbCBCeXRlY29kZUxpdmVuZXNzUHJvcGFnYXRpb248RGVyaXZlZEFuYWx5c2lzPjo6
Y29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCbG9jayhHcmFwaCYgZ3JhcGgsIEJ5dGVjb2RlQmFzaWNC
bG9jayogYmxvY2spCit7CisgICAgaWYgKGJsb2NrLT5pc0V4aXRCbG9jaygpIHx8IGJsb2NrLT5p
c0VudHJ5QmxvY2soKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBjb21wdXRl
TG9jYWxMaXZlbmVzc0ZvckJ5dGVjb2RlT2Zmc2V0KGdyYXBoLCBibG9jaywgYmxvY2stPmxlYWRl
ckJ5dGVjb2RlT2Zmc2V0KCksIGJsb2NrLT5pbigpKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUg
RGVyaXZlZEFuYWx5c2lzPgordGVtcGxhdGU8dHlwZW5hbWUgR3JhcGg+CitpbmxpbmUgRmFzdEJp
dFZlY3RvciBCeXRlY29kZUxpdmVuZXNzUHJvcGFnYXRpb248RGVyaXZlZEFuYWx5c2lzPjo6Z2V0
TGl2ZW5lc3NJbmZvQXRCeXRlY29kZU9mZnNldChHcmFwaCYgZ3JhcGgsIHVuc2lnbmVkIGJ5dGVj
b2RlT2Zmc2V0KQoreworICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2sgPSBncmFwaC5maW5k
QmFzaWNCbG9ja0ZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KTsKKyAgICBBU1NFUlQo
YmxvY2spOworICAgIEFTU0VSVCghYmxvY2stPmlzRW50cnlCbG9jaygpKTsKKyAgICBBU1NFUlQo
IWJsb2NrLT5pc0V4aXRCbG9jaygpKTsKKyAgICBGYXN0Qml0VmVjdG9yIG91dDsKKyAgICBvdXQu
cmVzaXplKGJsb2NrLT5vdXQoKS5udW1CaXRzKCkpOworICAgIGNvbXB1dGVMb2NhbExpdmVuZXNz
Rm9yQnl0ZWNvZGVPZmZzZXQoZ3JhcGgsIGJsb2NrLCBieXRlY29kZU9mZnNldCwgb3V0KTsKKyAg
ICByZXR1cm4gb3V0OworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBEZXJpdmVkQW5hbHlzaXM+Cit0
ZW1wbGF0ZTx0eXBlbmFtZSBHcmFwaD4KK2lubGluZSB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NQcm9w
YWdhdGlvbjxEZXJpdmVkQW5hbHlzaXM+OjpydW5MaXZlbmVzc0ZpeHBvaW50KEdyYXBoJiBncmFw
aCkKK3sKKyAgICBhdXRvKiBjb2RlQmxvY2sgPSBncmFwaC5jb2RlQmxvY2soKTsKKyAgICB1bnNp
Z25lZCBudW1iZXJPZlZhcmlhYmxlcyA9IGNvZGVCbG9jay0+bnVtQ2FsbGVlTG9jYWxzKCk7Cisg
ICAgZm9yIChCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrIDogZ3JhcGgpIHsKKyAgICAgICAgYmxv
Y2stPmluKCkucmVzaXplKG51bWJlck9mVmFyaWFibGVzKTsKKyAgICAgICAgYmxvY2stPm91dCgp
LnJlc2l6ZShudW1iZXJPZlZhcmlhYmxlcyk7CisgICAgICAgIGJsb2NrLT5pbigpLmNsZWFyQWxs
KCk7CisgICAgICAgIGJsb2NrLT5vdXQoKS5jbGVhckFsbCgpOworICAgIH0KKworICAgIGJvb2wg
Y2hhbmdlZDsKKyAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGxhc3RCbG9jayA9IGdyYXBoLmxhc3Qo
KTsKKyAgICBsYXN0QmxvY2stPmluKCkuY2xlYXJBbGwoKTsKKyAgICBsYXN0QmxvY2stPm91dCgp
LmNsZWFyQWxsKCk7CisgICAgRmFzdEJpdFZlY3RvciBuZXdPdXQ7CisgICAgbmV3T3V0LnJlc2l6
ZShsYXN0QmxvY2stPm91dCgpLm51bUJpdHMoKSk7CisgICAgZG8geworICAgICAgICBjaGFuZ2Vk
ID0gZmFsc2U7CisgICAgICAgIGZvciAoc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9j
az4mIGJsb2NrIDogZ3JhcGguYmFzaWNCbG9ja3NJblJldmVyc2VPcmRlcigpKSB7CisgICAgICAg
ICAgICBuZXdPdXQuY2xlYXJBbGwoKTsKKyAgICAgICAgICAgIGZvciAoQnl0ZWNvZGVCYXNpY0Js
b2NrKiBzdWNjZXNzb3IgOiBibG9jay0+c3VjY2Vzc29ycygpKQorICAgICAgICAgICAgICAgIG5l
d091dC5tZXJnZShzdWNjZXNzb3ItPmluKCkpOworICAgICAgICAgICAgYmxvY2stPm91dCgpLnNl
dChuZXdPdXQpOworICAgICAgICAgICAgY2hhbmdlZCB8PSBjb21wdXRlTG9jYWxMaXZlbmVzc0Zv
ckJsb2NrKGdyYXBoLCBibG9jay5nZXQoKSk7CisgICAgICAgIH0KKyAgICB9IHdoaWxlIChjaGFu
Z2VkKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVSZXdyaXRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVSZXdyaXRlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDA1ZjdiZWVk
ZjAxODAyMjExNjE5MmI2Yzg2Yzc5OTVjYzA0MmM4NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVJld3JpdGVyLmNwcApAQCAtMCwwICsx
LDExNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBZdXN1a2UgU3V6dWtpIDx1dGF0YW5l
LnRlYUBnbWFpbC5jb20+CisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
Qnl0ZWNvZGVSZXdyaXRlci5oIgorCisjaW5jbHVkZSA8d3RmL0J1YmJsZVNvcnQuaD4KKworbmFt
ZXNwYWNlIEpTQyB7CisKK3ZvaWQgQnl0ZWNvZGVSZXdyaXRlcjo6YXBwbHlNb2RpZmljYXRpb24o
KQoreworICAgIGZvciAoc2l6ZV90IGluc2VydGlvbkluZGV4ID0gbV9pbnNlcnRpb25zLnNpemUo
KTsgaW5zZXJ0aW9uSW5kZXgtLTspIHsKKyAgICAgICAgSW5zZXJ0aW9uJiBpbnNlcnRpb24gPSBt
X2luc2VydGlvbnNbaW5zZXJ0aW9uSW5kZXhdOworICAgICAgICBpZiAoaW5zZXJ0aW9uLmVsZW1l
bnQoKS50eXBlID09IENvbW1hbmQ6OlR5cGU6OlJlbW92ZSkKKyAgICAgICAgICAgIG1fZ3JhcGgu
aW5zdHJ1Y3Rpb25zKCkucmVtb3ZlKGluc2VydGlvbi5pbmRleCgpLCBpbnNlcnRpb24uZWxlbWVu
dCgpLmxlbmd0aCgpKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBpZiAoaW5zZXJ0aW9u
LmVsZW1lbnQoKS5ieXRlY29kZVR5cGUgPT0gQ29tbWFuZDo6Qnl0ZWNvZGVUeXBlOjpCcmFuY2gp
CisgICAgICAgICAgICAgICAgYWRqdXN0SnVtcFRhcmdldHNJbkp1bXBPcGVyYXRpb24oYWRqdXN0
T2Zmc2V0V2l0aEluc2VydGlvbnMoMCwgaW5zZXJ0aW9uLmluZGV4KCksIG1faW5zZXJ0aW9ucy5i
ZWdpbigpLCBtX2luc2VydGlvbnMuYmVnaW4oKSArIGluc2VydGlvbkluZGV4KSwgaW5zZXJ0aW9u
KTsKKyAgICAgICAgICAgIG1fZ3JhcGguaW5zdHJ1Y3Rpb25zKCkuaW5zZXJ0VmVjdG9yKGluc2Vy
dGlvbi5pbmRleCgpLCBpbnNlcnRpb24uZWxlbWVudCgpLmluc3RydWN0aW9ucyk7CisgICAgICAg
IH0KKyAgICB9CisgICAgbV9pbnNlcnRpb25zLmNsZWFyKCk7Cit9CisKK3ZvaWQgQnl0ZWNvZGVS
ZXdyaXRlcjo6ZXhlY3V0ZSgpCit7CisgICAgV1RGOjpidWJibGVTb3J0KG1faW5zZXJ0aW9ucy5i
ZWdpbigpLCBtX2luc2VydGlvbnMuZW5kKCksIFtdIChjb25zdCBJbnNlcnRpb24mIGxocywgY29u
c3QgSW5zZXJ0aW9uJiByaHMpIHsKKyAgICAgICAgaWYgKGxocy5pbmRleCgpID09IHJocy5pbmRl
eCgpKQorICAgICAgICAgICAgcmV0dXJuIGxocy5lbGVtZW50KCkucG9zaXRpb24gPCByaHMuZWxl
bWVudCgpLnBvc2l0aW9uOworICAgICAgICByZXR1cm4gbGhzIDwgcmhzOworICAgIH0pOworCisg
ICAgLy8gQ29udmVydCB0byBhYnNvbHV0ZSBmaW5hbCBvZmZzZXRzLgorICAgIGZvciAoU3dpdGNo
RW50cnkmIGVudHJ5IDogbV9pbnNlcnRlZFN3aXRjaGVzKSB7CisgICAgICAgIFVubGlua2VkU2lt
cGxlSnVtcFRhYmxlJiB0YWJsZSA9IG1fZ3JhcGguY29kZUJsb2NrKCktPnN3aXRjaEp1bXBUYWJs
ZShlbnRyeS50YWJsZUluZGV4KTsKKyAgICAgICAgZW50cnkuZGVmYXVsdE9mZnNldCA9IGFkanVz
dE9mZnNldCgwLCBlbnRyeS5kZWZhdWx0T2Zmc2V0KTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gdGFibGUuYnJhbmNoT2Zmc2V0cy5zaXplKCk7IGktLTspCisgICAgICAgICAgICB0YWJsZS5i
cmFuY2hPZmZzZXRzW2ldID0gYWRqdXN0T2Zmc2V0KDAsIHRhYmxlLmJyYW5jaE9mZnNldHNbaV0p
OworICAgIH0KKworICAgIFVubGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBtX2dyYXBoLmNv
ZGVCbG9jaygpOworICAgIGNvZGVCbG9jay0+YXBwbHlNb2RpZmljYXRpb24oKnRoaXMpOworfQor
Cit2b2lkIEJ5dGVjb2RlUmV3cml0ZXI6OmFkanVzdEp1bXBUYXJnZXRzSW5KdW1wT3BlcmF0aW9u
KHVuc2lnbmVkIGZpbmFsT2Zmc2V0LCBJbnNlcnRpb24mIGluc2VydGlvbikKK3sKKyAgICAvLyBD
dXJyZW50bHksIHdlIG9ubHkgc3VwcG9ydCBzd2l0Y2hfaW1tIG9wZXJhdGlvbiBoZXJlLgorICAg
IC8vIFdlIGNhbiBlYXNpbHkgZXh0ZW5kIGl0IHRvIGFsbG93IHRoZSBvdGhlciBqdW1wIG9wZXJh
dGlvbnMuCisgICAgU3dpdGNoRW50cnkmIGVudHJ5ID0gbV9pbnNlcnRlZFN3aXRjaGVzW2luc2Vy
dGlvbi5lbGVtZW50KCkuanVtcEVudHJ5SW5kZXhdOworICAgIFVubGlua2VkU2ltcGxlSnVtcFRh
YmxlJiB0YWJsZSA9IG1fZ3JhcGguY29kZUJsb2NrKCktPnN3aXRjaEp1bXBUYWJsZShlbnRyeS50
YWJsZUluZGV4KTsKKworICAgIGZvciAodW5zaWduZWQgaSA9IHRhYmxlLmJyYW5jaE9mZnNldHMu
c2l6ZSgpOyBpLS07KQorICAgICAgICB0YWJsZS5icmFuY2hPZmZzZXRzW2ldID0gdGFibGUuYnJh
bmNoT2Zmc2V0c1tpXSAtIHN0YXRpY19jYXN0PGludD4oZmluYWxPZmZzZXQpOworCisgICAgaW5z
ZXJ0aW9uLmVsZW1lbnQoKS5pbnN0cnVjdGlvbnNbMl0gPSBzdGF0aWNfY2FzdDxpbnQ+KGVudHJ5
LmRlZmF1bHRPZmZzZXQpIC0gc3RhdGljX2Nhc3Q8aW50PihmaW5hbE9mZnNldCk7Cit9CisKK3Zv
aWQgQnl0ZWNvZGVSZXdyaXRlcjo6aW5zZXJ0SW1wbCh1bnNpZ25lZCBqdW1wRW50cnlJbmRleCwg
Q29tbWFuZDo6Qnl0ZWNvZGVUeXBlIGJ5dGVjb2RlVHlwZSwgUG9zaXRpb24gcG9zaXRpb24sIHVu
c2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBWZWN0b3I8VW5saW5rZWRJbnN0cnVjdGlvbj4mJiBmcmFn
bWVudCkKK3sKKyAgICBBU1NFUlQocG9zaXRpb24gPT0gUG9zaXRpb246OkJlZm9yZSB8fCBwb3Np
dGlvbiA9PSBQb3NpdGlvbjo6QWZ0ZXIpOworICAgIG1faW5zZXJ0aW9ucy5hcHBlbmQoSW5zZXJ0
aW9uKGJ5dGVjb2RlT2Zmc2V0LCBDb21tYW5kIHsKKyAgICAgICAgQ29tbWFuZDo6VHlwZTo6SW5z
ZXJ0LAorICAgICAgICBwb3NpdGlvbiwKKyAgICAgICAgYnl0ZWNvZGVUeXBlLAorICAgICAgICBq
dW1wRW50cnlJbmRleCwKKyAgICAgICAgMCwKKyAgICAgICAgV1RGTW92ZShmcmFnbWVudCkKKyAg
ICB9KSk7Cit9CisKK1VubGlua2VkU2ltcGxlSnVtcFRhYmxlJiBCeXRlY29kZVJld3JpdGVyOjpp
bnNlcnRTd2l0Y2hJbW1lZGlhdGVJbXBsKFBvc2l0aW9uIHBvc2l0aW9uLCB1bnNpZ25lZCBieXRl
Y29kZU9mZnNldCwgdW5zaWduZWQgZGVmYXVsdE9mZnNldCwgaW50IHJlZykKK3sKKyAgICBTd2l0
Y2hFbnRyeSBlbnRyeSB7CisgICAgICAgIG1fZ3JhcGguY29kZUJsb2NrKCktPm51bWJlck9mU3dp
dGNoSnVtcFRhYmxlcygpLAorICAgICAgICBkZWZhdWx0T2Zmc2V0LAorICAgIH07CisKKyAgICBW
ZWN0b3I8VW5saW5rZWRJbnN0cnVjdGlvbj4gZnJhZ21lbnQgPSB7CisgICAgICAgIFVubGlua2Vk
SW5zdHJ1Y3Rpb24ob3Bfc3dpdGNoX2ltbSksCisgICAgICAgIFVubGlua2VkSW5zdHJ1Y3Rpb24o
ZW50cnkudGFibGVJbmRleCksCisgICAgICAgIFVubGlua2VkSW5zdHJ1Y3Rpb24oZGVmYXVsdE9m
ZnNldCksCisgICAgICAgIFVubGlua2VkSW5zdHJ1Y3Rpb24ocmVnKQorICAgIH07CisKKyAgICBh
dXRvJiBqdW1wVGFibGUgPSBtX2dyYXBoLmNvZGVCbG9jaygpLT5hZGRTd2l0Y2hKdW1wVGFibGUo
KTsKKyAgICB1bnNpZ25lZCBqdW1wRW50cnlJbmRleCA9IG1faW5zZXJ0ZWRTd2l0Y2hlcy5zaXpl
KCk7CisgICAgbV9pbnNlcnRlZFN3aXRjaGVzLmFwcGVuZChlbnRyeSk7CisgICAgaW5zZXJ0SW1w
bChqdW1wRW50cnlJbmRleCwgQ29tbWFuZDo6Qnl0ZWNvZGVUeXBlOjpCcmFuY2gsIHBvc2l0aW9u
LCBieXRlY29kZU9mZnNldCwgV1RGTW92ZShmcmFnbWVudCkpOworICAgIHJldHVybiBqdW1wVGFi
bGU7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlUmV3cml0ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZVJld3JpdGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWRiY2UyYTkzYWI1MzFm
YWQ2YmFiZWExNDVkMTBiMjc1OWYzOTFhOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVJld3JpdGVyLmgKQEAgLTAsMCArMSwyNDcgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21h
aWwuY29tPgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJCeXRlY29kZUdyYXBo
LmgiCisjaW5jbHVkZSAiQnl0ZWNvZGVzLmgiCisjaW5jbHVkZSAiT3Bjb2RlLmgiCisjaW5jbHVk
ZSAiVW5saW5rZWRDb2RlQmxvY2suaCIKKyNpbmNsdWRlIDx3dGYvSW5zZXJ0aW9uLmg+CisKK25h
bWVzcGFjZSBKU0MgeworCisvLyBCeXRlY29kZVJld3JpdGVyIG9mZmVycyB0aGUgYWJpbGl0eSB0
byBpbnNlcnQgYW5kIHJlbW92ZSB0aGUgYnl0ZWNvZGVzIGluY2x1ZGluZyBqdW1wIG9wZXJhdGlv
bnMuCisvLworLy8gV2UgdXNlIHRoZSBvcmlnaW5hbCBieXRlY29kZSBvZmZzZXRzIGFzIGxhYmVs
cy4gV2hlbiB5b3UgZW1pdCBzb21lIGp1bXBzLCB5b3UgY2FuIHNwZWNpZnkgdGhlIGp1bXAgdGFy
Z2V0IGJ5CisvLyB1c2luZyB0aGUgb3JpZ2luYWwgYnl0ZWNvZGUgb2Zmc2V0cy4gVGhlc2UgYnl0
ZWNvZGUgb2Zmc2V0cyBhcmUgbGF0ZXIgY29udmVydGVkIGFwcHJvcHJpYXRlIHZhbHVlcyBieSB0
aGUKKy8vIHJld3JpdGVyLiBBbmQgd2UgYWxzbyB1c2UgdGhlIGxhYmVscyB0byByZXByZXNlbnRz
IHRoZSBwb3NpdGlvbiB0aGUgbmV3IGJ5dGVjb2RlcyBpbnNlcnRlZC4KKy8vCisvLyAgICAgICAg
ICAgICAgICAgICAgICB8ICBbYnl0ZWNvZGVdICB8ICBbYnl0ZWNvZGVdICB8CisvLyAgIG9mZnNl
dHMgICAgICAgICAgICBBICAgICAgICAgICAgICBCICAgICAgICAgICAgICBDCisvLworLy8gV2Ug
Y2FuIHVzZSB0aGUgYWJvdmUgIkEiLCAiQiIsIGFuZCAiQyIgb2Zmc2V0cyBhcyBsYWJlbHMuIEFu
ZCB0aGUgcmV3cml0ZXIgaGFzIHRoZSBhYmlsaXR5IHRvIGluc2VydCBieXRlY29kZSBmcmFnbWVu
dHMKKy8vIGJlZm9yZSBhbmQgYWZ0ZXIgdGhlIGxhYmVsLiBGb3IgZXhhbXBsZSwgaWYgeW91IGlu
c2VydCB0aGUgZnJhZ21lbnQgYmVmb3JlICJCIiwgdGhlIGxheW91dCBiZWNvbWVzIGxpa2UgdGhp
cy4KKy8vCisvLyAgICAgICAgICAgICAgICAgICAgICB8ICBbYnl0ZWNvZGVdICB8ICBbZnJhZ21l
bnRdICBbYnl0ZWNvZGVdICB8CisvLyAgIG9mZnNldHMgICAgICAgICAgICBBICAgICAgICAgICAg
ICBCICAgICAgICAgICAgICAgICAgICAgICAgICBDCisvLworLy8gIEFuZCBldmVuIGlmIHlvdSBy
ZW1vdmUgc29tZSBvcmlnaW5hbCBieXRlY29kZXMsIHRoZSBvZmZzZXQgcmVtYWlucyBhcyBsYWJl
bHMuIEZvciBleGFtcGxlLCB3aGVuIHlvdSByZW1vdmUgdGhlIEEncyBieXRlY29kZSwKKy8vICB0
aGUgbGF5b3V0IGJlY29tZXMgbGlrZSB0aGlzLgorLy8KKy8vICAgICAgICAgICAgICAgICAgICAg
IHwgICAgICAgICAgICAgIHwgIFtieXRlY29kZV0gIHwKKy8vICAgb2Zmc2V0cyAgICAgICAgICAg
IEEgICAgICAgICAgICAgIEIgICAgICAgICAgICAgIEMKKy8vCisvLyAgQW5kIHN0aWxsIHlvdSBj
YW4gaW5zZXJ0IGZyYWdtZW50cyBiZWZvcmUgYW5kIGFmdGVyICJBIi4KKy8vCisvLyAgICAgICAg
ICAgICAgICAgICAgICB8ICBbZnJhZ21lbnRdICB8ICBbYnl0ZWNvZGVdICB8CisvLyAgIG9mZnNl
dHMgICAgICAgICAgICBBICAgICAgICAgICAgICBCICAgICAgICAgICAgICBDCisvLworLy8gICBX
ZSBjYW4gaW5zZXJ0IGJ5dGVjb2RlIGZyYWdtZW50cyAiQmVmb3JlIiBhbmQgIkFmdGVyIiB0aGUg
bGFiZWxzLiBUaGlzIGluc2VydGVkIHBvc2l0aW9uLCBlaXRoZXIgIkJlZm9yZSIgYW5kICJBZnRl
ciIsCisvLyAgIGhhcyBlZmZlY3Qgd2hlbiB0aGUgbGFiZWwgaXMgaW52b2x2ZWQgd2l0aCBqdW1w
cy4gRm9yIGV4YW1wbGUsIHdoZW4geW91IGhhdmUganVtcCB0byB0aGUgcG9zaXRpb24gIkIiLAor
Ly8KKy8vICAgICAgICAgICAgICAgICAgICAgIHwgIFtieXRlY29kZV0gIHwgIFtieXRlY29kZV0g
IHwKKy8vICAgb2Zmc2V0cyAgICAgICAgICAgIEEgICAgICAgICAgICAgIEIgICAgICAgICAgICAg
IEMKKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KKy8vICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGp1bXAgdG8gaGVyZS4KKy8vCisvLyAgYW5kIHlv
dSBpbnNlcnQgdGhlIGJ5dGVjb2RlIGJlZm9yZS9hZnRlciAiQiIsCisvLworLy8gICAgICAgICAg
ICAgICAgICAgICAgfCAgW2J5dGVjb2RlXSBbYmVmb3JlXSAgfCAgW2FmdGVyXSBbYnl0ZWNvZGVd
ICB8CisvLyAgIG9mZnNldHMgICAgICAgICAgICBBICAgICAgICAgICAgICAgICAgICAgICBCICAg
ICAgICAgICAgICBDCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBeCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBq
dW1wIHRvIGhlcmUuCisvLworLy8gIGFzIHlvdSBjYW4gc2VlLCB0aGUgZXhlY3V0aW9uIGp1bXBp
bmcgaW50byAiQiIgZG9lcyBub3QgZXhlY3V0ZSBbYmVmb3JlXSBjb2RlLgorY2xhc3MgQnl0ZWNv
ZGVSZXdyaXRlciB7CitXVEZfTUFLRV9OT05DT1BZQUJMRShCeXRlY29kZVJld3JpdGVyKTsKK3B1
YmxpYzoKKyAgICBlbnVtIGNsYXNzIFBvc2l0aW9uIDogaW50OF90IHsKKyAgICAgICAgQmVmb3Jl
ID0gLTEsCisgICAgICAgIExhYmVsUG9pbnQgPSAwLAorICAgICAgICBBZnRlciA9IDEsCisgICAg
ICAgIE9yaWdpbmFsQnl0ZWNvZGVQb2ludCA9IDIsCisgICAgfTsKKworcHJpdmF0ZToKKyAgICBz
dHJ1Y3QgQ29tbWFuZCB7CisgICAgICAgIGVudW0gY2xhc3MgVHlwZSA6IHVpbnQ4X3QgeyBJbnNl
cnQgPSAwLCBSZW1vdmUgPSAxLCB9OworICAgICAgICBlbnVtIGNsYXNzIEJ5dGVjb2RlVHlwZSA6
IHVpbnQ4X3QgeyBOb3JtYWwsIEJyYW5jaCB9OworCisgICAgICAgIHNpemVfdCBsZW5ndGgoKSBj
b25zdAorICAgICAgICB7CisgICAgICAgICAgICBpZiAodHlwZSA9PSBUeXBlOjpSZW1vdmUpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIHJlbW92ZUxlbmd0aDsKKyAgICAgICAgICAgIHJldHVybiBp
bnN0cnVjdGlvbnMuc2l6ZSgpOworICAgICAgICB9CisKKyAgICAgICAgVHlwZSB0eXBlOworICAg
ICAgICBQb3NpdGlvbiBwb3NpdGlvbjsKKyAgICAgICAgQnl0ZWNvZGVUeXBlIGJ5dGVjb2RlVHlw
ZTsKKyAgICAgICAgdW5zaWduZWQganVtcEVudHJ5SW5kZXg7CisgICAgICAgIHNpemVfdCByZW1v
dmVMZW5ndGg7CisgICAgICAgIFZlY3RvcjxVbmxpbmtlZEluc3RydWN0aW9uPiBpbnN0cnVjdGlv
bnM7CisgICAgfTsKKworICAgIHR5cGVkZWYgV1RGOjpJbnNlcnRpb248Q29tbWFuZD4gSW5zZXJ0
aW9uOworCisgICAgc3RydWN0IFN3aXRjaEVudHJ5IHsKKyAgICAgICAgc2l6ZV90IHRhYmxlSW5k
ZXg7CisgICAgICAgIHVuc2lnbmVkIGRlZmF1bHRPZmZzZXQ7CisgICAgfTsKKworcHVibGljOgor
ICAgIGNsYXNzIEZyYWdtZW50IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShGcmFnbWVudCk7
CisgICAgcHVibGljOgorICAgICAgICBGcmFnbWVudChWZWN0b3I8VW5saW5rZWRJbnN0cnVjdGlv
bj4mIGZyYWdtZW50KQorICAgICAgICAgICAgOiBtX2ZyYWdtZW50KGZyYWdtZW50KQorICAgICAg
ICB7CisgICAgICAgIH0KKworICAgICAgICB0ZW1wbGF0ZTxjbGFzcy4uLiBBcmdzPgorICAgICAg
ICB2b2lkIGFwcGVuZChBcmdzLi4uIGFyZ3MpCisgICAgICAgIHsKKyAgICAgICAgICAgIFVubGlu
a2VkSW5zdHJ1Y3Rpb24gaW5zdHJ1Y3Rpb25zW3NpemVvZi4uLihhcmdzKV0gPSB7CisgICAgICAg
ICAgICAgICAgVW5saW5rZWRJbnN0cnVjdGlvbihhcmdzKS4uLgorICAgICAgICAgICAgfTsKKyAg
ICAgICAgICAgIG1fZnJhZ21lbnQuYXBwZW5kKGluc3RydWN0aW9ucywgc2l6ZW9mLi4uKGFyZ3Mp
KTsKKyAgICAgICAgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgVmVjdG9yPFVubGlua2VkSW5z
dHJ1Y3Rpb24+JiBtX2ZyYWdtZW50OworICAgIH07CisKKyAgICBCeXRlY29kZVJld3JpdGVyKEJ5
dGVjb2RlR3JhcGg8VW5saW5rZWRDb2RlQmxvY2s+JiBncmFwaCkKKyAgICAgICAgOiBtX2dyYXBo
KGdyYXBoKQorICAgIHsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTxjbGFzcy4uLiBBcmdzPgorICAg
IHZvaWQgaW5zZXJ0QmVmb3JlKHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBPcGNvZGVJRCBvcGNv
ZGVJRCwgQXJncy4uLiBhcmdzKQorICAgIHsKKyAgICAgICAgVmVjdG9yPFVubGlua2VkSW5zdHJ1
Y3Rpb24+IGZyYWdtZW50ID0geworICAgICAgICAgICAgVW5saW5rZWRJbnN0cnVjdGlvbihvcGNv
ZGVJRCksCisgICAgICAgICAgICBVbmxpbmtlZEluc3RydWN0aW9uKGFyZ3MpLi4uCisgICAgICAg
IH07CisgICAgICAgIGluc2VydEltcGwoMCwgQ29tbWFuZDo6Qnl0ZWNvZGVUeXBlOjpOb3JtYWws
IFBvc2l0aW9uOjpCZWZvcmUsIGJ5dGVjb2RlT2Zmc2V0LCBXVEZNb3ZlKGZyYWdtZW50KSk7Cisg
ICAgfQorCisgICAgdGVtcGxhdGU8Y2xhc3MuLi4gQXJncz4KKyAgICB2b2lkIGluc2VydEFmdGVy
KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBPcGNvZGVJRCBvcGNvZGVJRCwgQXJncy4uLiBhcmdz
KQorICAgIHsKKyAgICAgICAgVmVjdG9yPFVubGlua2VkSW5zdHJ1Y3Rpb24+IGZyYWdtZW50ID0g
eworICAgICAgICAgICAgVW5saW5rZWRJbnN0cnVjdGlvbihvcGNvZGVJRCksCisgICAgICAgICAg
ICBVbmxpbmtlZEluc3RydWN0aW9uKGFyZ3MpLi4uCisgICAgICAgIH07CisgICAgICAgIGluc2Vy
dEltcGwoMCwgQ29tbWFuZDo6Qnl0ZWNvZGVUeXBlOjpOb3JtYWwsIFBvc2l0aW9uOjpBZnRlciwg
Ynl0ZWNvZGVPZmZzZXQsIFdURk1vdmUoZnJhZ21lbnQpKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0
ZTxjbGFzcyBGdW5jdGlvbj4KKyAgICB2b2lkIGluc2VydEZyYWdtZW50QmVmb3JlKHVuc2lnbmVk
IGJ5dGVjb2RlT2Zmc2V0LCBGdW5jdGlvbiBmdW5jdGlvbikKKyAgICB7CisgICAgICAgIFZlY3Rv
cjxVbmxpbmtlZEluc3RydWN0aW9uPiBpbnN0cnVjdGlvbnM7CisgICAgICAgIEZyYWdtZW50IGZy
YWdtZW50KGluc3RydWN0aW9ucyk7CisgICAgICAgIGZ1bmN0aW9uKGZyYWdtZW50KTsKKyAgICAg
ICAgaW5zZXJ0SW1wbCgwLCBDb21tYW5kOjpCeXRlY29kZVR5cGU6Ok5vcm1hbCwgUG9zaXRpb246
OkJlZm9yZSwgYnl0ZWNvZGVPZmZzZXQsIFdURk1vdmUoaW5zdHJ1Y3Rpb25zKSk7CisgICAgfQor
CisgICAgdGVtcGxhdGU8Y2xhc3MgRnVuY3Rpb24+CisgICAgdm9pZCBpbnNlcnRGcmFnbWVudEFm
dGVyKHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBGdW5jdGlvbiBmdW5jdGlvbikKKyAgICB7Cisg
ICAgICAgIFZlY3RvcjxVbmxpbmtlZEluc3RydWN0aW9uPiBpbnN0cnVjdGlvbnM7CisgICAgICAg
IEZyYWdtZW50IGZyYWdtZW50KGluc3RydWN0aW9ucyk7CisgICAgICAgIGZ1bmN0aW9uKGZyYWdt
ZW50KTsKKyAgICAgICAgaW5zZXJ0SW1wbCgwLCBDb21tYW5kOjpCeXRlY29kZVR5cGU6Ok5vcm1h
bCwgUG9zaXRpb246OkFmdGVyLCBieXRlY29kZU9mZnNldCwgV1RGTW92ZShpbnN0cnVjdGlvbnMp
KTsKKyAgICB9CisKKyAgICBVbmxpbmtlZFNpbXBsZUp1bXBUYWJsZSYgaW5zZXJ0U3dpdGNoSW1t
ZWRpYXRlQmVmb3JlKHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCB1bnNpZ25lZCBkZWZhdWx0T2Zm
c2V0LCBpbnQgcmVnKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGluc2VydFN3aXRjaEltbWVkaWF0
ZUltcGwoUG9zaXRpb246OkJlZm9yZSwgYnl0ZWNvZGVPZmZzZXQsIGRlZmF1bHRPZmZzZXQsIHJl
Zyk7CisgICAgfQorCisgICAgdm9pZCByZW1vdmVCeXRlY29kZSh1bnNpZ25lZCBieXRlY29kZU9m
ZnNldCkKKyAgICB7CisgICAgICAgIG1faW5zZXJ0aW9ucy5hcHBlbmQoSW5zZXJ0aW9uKGJ5dGVj
b2RlT2Zmc2V0LCBDb21tYW5kIHsgQ29tbWFuZDo6VHlwZTo6UmVtb3ZlLCBQb3NpdGlvbjo6T3Jp
Z2luYWxCeXRlY29kZVBvaW50LCBDb21tYW5kOjpCeXRlY29kZVR5cGU6Ok5vcm1hbCwgMCwgb3Bj
b2RlTGVuZ3RoKG1fZ3JhcGguaW5zdHJ1Y3Rpb25zKClbYnl0ZWNvZGVPZmZzZXRdLnUub3Bjb2Rl
KSwgeyB9IH0pKTsKKyAgICB9CisKKyAgICB2b2lkIGV4ZWN1dGUoKTsKKworICAgIEJ5dGVjb2Rl
R3JhcGg8VW5saW5rZWRDb2RlQmxvY2s+JiBncmFwaCgpIHsgcmV0dXJuIG1fZ3JhcGg7IH0KKwor
ICAgIGludCBhZGp1c3RPZmZzZXQoaW50IGJ5dGVjb2RlT2Zmc2V0LCBpbnQganVtcFRhcmdldCkK
KyAgICB7CisgICAgICAgIHJldHVybiBhZGp1c3RPZmZzZXRXaXRoSW5zZXJ0aW9ucyhieXRlY29k
ZU9mZnNldCwganVtcFRhcmdldCwgbV9pbnNlcnRpb25zLmJlZ2luKCksIG1faW5zZXJ0aW9ucy5l
bmQoKSk7CisgICAgfQorCitwcml2YXRlOgorICAgIHZvaWQgaW5zZXJ0SW1wbCh1bnNpZ25lZCBq
dW1wRW50cnlJbmRleCwgQ29tbWFuZDo6Qnl0ZWNvZGVUeXBlLCBQb3NpdGlvbiwgdW5zaWduZWQg
Ynl0ZWNvZGVPZmZzZXQsIFZlY3RvcjxVbmxpbmtlZEluc3RydWN0aW9uPiYmIGZyYWdtZW50KTsK
KyAgICBVbmxpbmtlZFNpbXBsZUp1bXBUYWJsZSYgaW5zZXJ0U3dpdGNoSW1tZWRpYXRlSW1wbChQ
b3NpdGlvbiwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIHVuc2lnbmVkIGRlZmF1bHRPZmZzZXQs
IGludCByZWcpOworCisgICAgZnJpZW5kIGNsYXNzIFVubGlua2VkQ29kZUJsb2NrOworICAgIHZv
aWQgYXBwbHlNb2RpZmljYXRpb24oKTsKKyAgICB2b2lkIGFkanVzdEp1bXBUYXJnZXRzSW5KdW1w
T3BlcmF0aW9uKHVuc2lnbmVkIGZpbmFsT2Zmc2V0LCBJbnNlcnRpb24mKTsKKworICAgIHRlbXBs
YXRlPHR5cGVuYW1lIEl0ZXJhdG9yPgorICAgIGludCBhZGp1c3RPZmZzZXRXaXRoSW5zZXJ0aW9u
cyhpbnQgYnl0ZWNvZGVPZmZzZXQsIGludCBqdW1wVGFyZ2V0LCBJdGVyYXRvciBpbnNlcnRpb25z
QmVnaW4sIEl0ZXJhdG9yIGluc2VydGlvbnNFbmQpOworCisgICAgQnl0ZWNvZGVHcmFwaDxVbmxp
bmtlZENvZGVCbG9jaz4mIG1fZ3JhcGg7CisgICAgVmVjdG9yPEluc2VydGlvbiwgOD4gbV9pbnNl
cnRpb25zOworICAgIFZlY3RvcjxTd2l0Y2hFbnRyeT4gbV9pbnNlcnRlZFN3aXRjaGVzOworfTsK
KwordGVtcGxhdGU8dHlwZW5hbWUgSXRlcmF0b3I+CitpbmxpbmUgaW50IEJ5dGVjb2RlUmV3cml0
ZXI6OmFkanVzdE9mZnNldFdpdGhJbnNlcnRpb25zKGludCBieXRlY29kZU9mZnNldCwgaW50IGp1
bXBUYXJnZXQsIEl0ZXJhdG9yIGluc2VydGlvbnNCZWdpbiwgSXRlcmF0b3IgaW5zZXJ0aW9uc0Vu
ZCkKK3sKKyAgICBpZiAoYnl0ZWNvZGVPZmZzZXQgPCBqdW1wVGFyZ2V0KSB7CisgICAgICAgIGF1
dG8gc3RhcnQgPSBzdGQ6Omxvd2VyX2JvdW5kKGluc2VydGlvbnNCZWdpbiwgaW5zZXJ0aW9uc0Vu
ZCwgYnl0ZWNvZGVPZmZzZXQsIFsmXSAoY29uc3QgSW5zZXJ0aW9uJiBpbnNlcnRpb24sIGludCBi
eXRlY29kZU9mZnNldCkgeworICAgICAgICAgICAgaWYgKHN0YXRpY19jYXN0PGludD4oaW5zZXJ0
aW9uLmluZGV4KCkpID09IGJ5dGVjb2RlT2Zmc2V0KQorICAgICAgICAgICAgICAgIHJldHVybiBp
bnNlcnRpb24uZWxlbWVudCgpLnBvc2l0aW9uIDwgUG9zaXRpb246OkxhYmVsUG9pbnQ7CisgICAg
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihpbnNlcnRpb24uaW5kZXgoKSkgPCBieXRl
Y29kZU9mZnNldDsKKyAgICAgICAgfSk7CisgICAgICAgIGlmIChzdGFydCAhPSBpbnNlcnRpb25z
RW5kKSB7CisgICAgICAgICAgICBhdXRvIGVuZCA9IHN0ZDo6bG93ZXJfYm91bmQoaW5zZXJ0aW9u
c0JlZ2luLCBpbnNlcnRpb25zRW5kLCBqdW1wVGFyZ2V0LCBbJl0gKGNvbnN0IEluc2VydGlvbiYg
aW5zZXJ0aW9uLCBpbnQganVtcFRhcmdldCkgeworICAgICAgICAgICAgICAgIGlmIChzdGF0aWNf
Y2FzdDxpbnQ+KGluc2VydGlvbi5pbmRleCgpKSA9PSBqdW1wVGFyZ2V0KQorICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gaW5zZXJ0aW9uLmVsZW1lbnQoKS5wb3NpdGlvbiA8IFBvc2l0aW9uOjpM
YWJlbFBvaW50OworICAgICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KGluc2Vy
dGlvbi5pbmRleCgpKSA8IGp1bXBUYXJnZXQ7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAg
IGZvciAoOyBzdGFydCAhPSBlbmQ7ICsrc3RhcnQpIHsKKyAgICAgICAgICAgICAgICBpZiAoc3Rh
cnQtPmVsZW1lbnQoKS50eXBlID09IENvbW1hbmQ6OlR5cGU6OlJlbW92ZSkKKyAgICAgICAgICAg
ICAgICAgICAganVtcFRhcmdldCAtPSBzdGFydC0+ZWxlbWVudCgpLmxlbmd0aCgpOworICAgICAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAganVtcFRhcmdldCArPSBzdGFydC0+
ZWxlbWVudCgpLmxlbmd0aCgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJl
dHVybiBqdW1wVGFyZ2V0IC0gYnl0ZWNvZGVPZmZzZXQ7CisgICAgfQorCisgICAgaWYgKGJ5dGVj
b2RlT2Zmc2V0ID09IGp1bXBUYXJnZXQpCisgICAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJu
IC1hZGp1c3RPZmZzZXRXaXRoSW5zZXJ0aW9ucyhqdW1wVGFyZ2V0LCBieXRlY29kZU9mZnNldCwg
aW5zZXJ0aW9uc0JlZ2luLCBpbnNlcnRpb25zRW5kKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlND
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VE
ZWYuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCmlu
ZGV4IDYwNTdlZjYwOWVlZDFlZTJhOTliMDc2MjhiOTFjOTc1NTMzZmU0YmIuLjRmMTRiMjMwOTA0
YzFkNmY2ZDczYmY2ODBkYzAzMjRhZWZjNmY2YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCkBAIC0zMCwxNSArMzAsOSBAQAogCiBuYW1l
c3BhY2UgSlNDIHsKIAotdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KLXZvaWQgY29tcHV0ZVVz
ZXNGb3JCeXRlY29kZU9mZnNldCgKLSAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVC
YXNpY0Jsb2NrKiBibG9jaywgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIGNvbnN0IEZ1bmN0b3Im
IGZ1bmN0b3IpCit0ZW1wbGF0ZTx0eXBlbmFtZSBCbG9jaywgdHlwZW5hbWUgRnVuY3RvciwgdHlw
ZW5hbWUgSW5zdHJ1Y3Rpb24+Cit2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoQmxv
Y2sqIGNvZGVCbG9jaywgT3Bjb2RlSUQgb3Bjb2RlSUQsIEluc3RydWN0aW9uKiBpbnN0cnVjdGlv
biwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikKIHsKLSAgICBJbnRlcnByZXRlciogaW50ZXJwcmV0
ZXIgPSBjb2RlQmxvY2stPnZtKCktPmludGVycHJldGVyOwotICAgIEluc3RydWN0aW9uKiBpbnN0
cnVjdGlvbnNCZWdpbiA9IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsKLSAgICBJ
bnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSAmaW5zdHJ1Y3Rpb25zQmVnaW5bYnl0ZWNvZGVPZmZz
ZXRdOwotICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGlu
c3RydWN0aW9uLT51Lm9wY29kZSk7Ci0KICAgICBpZiAob3Bjb2RlSUQgIT0gb3BfZW50ZXIgJiYg
Y29kZUJsb2NrLT53YXNDb21waWxlZFdpdGhEZWJ1Z2dpbmdPcGNvZGVzKCkgJiYgY29kZUJsb2Nr
LT5zY29wZVJlZ2lzdGVyKCkuaXNWYWxpZCgpKQogICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywg
aW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBjb2RlQmxvY2stPnNjb3BlUmVnaXN0ZXIoKS5vZmZzZXQo
KSk7CiAKQEAgLTc1LDggKzY5LDcgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0
KAogICAgIGNhc2Ugb3Bfam5lcV9udWxsOgogICAgIGNhc2Ugb3BfZGVjOgogICAgIGNhc2Ugb3Bf
aW5jOgotICAgIGNhc2Ugb3BfbG9nX3NoYWRvd19jaGlja2VuX3Byb2xvZ3VlOgotICAgIGNhc2Ug
b3BfcmVzdW1lOiB7CisgICAgY2FzZSBvcF9sb2dfc2hhZG93X2NoaWNrZW5fcHJvbG9ndWU6IHsK
ICAgICAgICAgQVNTRVJUKG9wY29kZUxlbmd0aHNbb3Bjb2RlSURdID4gMSk7CiAgICAgICAgIGZ1
bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzFdLnUu
b3BlcmFuZCk7CiAgICAgICAgIHJldHVybjsKQEAgLTI4NywyMCArMjgwLDkgQEAgdm9pZCBjb21w
dXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAogICAgICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ss
IGluc3RydWN0aW9uLCBvcGNvZGVJRCwgY29kZUJsb2NrLT5zY29wZVJlZ2lzdGVyKCkub2Zmc2V0
KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGNhc2Ugb3Bfc2F2ZTogeworICAgIGNh
c2Ugb3BfeWllbGQ6IHsKICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBv
cGNvZGVJRCwgaW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKTsKLSAgICAgICAgdW5zaWduZWQgbWVy
Z2VQb2ludEJ5dGVjb2RlT2Zmc2V0ID0gYnl0ZWNvZGVPZmZzZXQgKyBpbnN0cnVjdGlvblszXS51
Lm9wZXJhbmQ7Ci0gICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogbWVyZ2VQb2ludEJsb2NrID0g
bnVsbHB0cjsKLSAgICAgICAgZm9yIChCeXRlY29kZUJhc2ljQmxvY2sqIHN1Y2Nlc3NvciA6IGJs
b2NrLT5zdWNjZXNzb3JzKCkpIHsKLSAgICAgICAgICAgIGlmIChzdWNjZXNzb3ItPmxlYWRlckJ5
dGVjb2RlT2Zmc2V0KCkgPT0gbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0KSB7Ci0gICAgICAgICAg
ICAgICAgbWVyZ2VQb2ludEJsb2NrID0gc3VjY2Vzc29yOwotICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIEFTU0VSVChtZXJnZVBvaW50Qmxv
Y2spOwotICAgICAgICBtZXJnZVBvaW50QmxvY2stPmluKCkuZm9yRWFjaFNldEJpdChbJl0odW5z
aWduZWQgbG9jYWwpIHsKLSAgICAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlv
biwgb3Bjb2RlSUQsIHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGxvY2FsKS5vZmZzZXQoKSk7Ci0g
ICAgICAgIH0pOworICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29k
ZUlELCBpbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
ICAgIGRlZmF1bHQ6CkBAIC0zMDksMjAgKzI5MSwxNSBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0
ZWNvZGVPZmZzZXQoCiAgICAgfQogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgotdm9p
ZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRl
Y29kZUJhc2ljQmxvY2sqIGJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgY29uc3QgRnVu
Y3RvciYgZnVuY3RvcikKK3RlbXBsYXRlPHR5cGVuYW1lIEJsb2NrLCB0eXBlbmFtZSBJbnN0cnVj
dGlvbiwgdHlwZW5hbWUgRnVuY3Rvcj4KK3ZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNl
dChCbG9jayogY29kZUJsb2NrLCBPcGNvZGVJRCBvcGNvZGVJRCwgSW5zdHJ1Y3Rpb24qIGluc3Ry
dWN0aW9uLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQogewotICAgIEludGVycHJldGVyKiBpbnRl
cnByZXRlciA9IGNvZGVCbG9jay0+dm0oKS0+aW50ZXJwcmV0ZXI7Ci0gICAgSW5zdHJ1Y3Rpb24q
IGluc3RydWN0aW9uc0JlZ2luID0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpOwot
ICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9ICZpbnN0cnVjdGlvbnNCZWdpbltieXRlY29k
ZU9mZnNldF07Ci0gICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnRlcnByZXRlci0+Z2V0T3Bjb2Rl
SUQoaW5zdHJ1Y3Rpb24tPnUub3Bjb2RlKTsKICAgICBzd2l0Y2ggKG9wY29kZUlEKSB7CiAgICAg
Ly8gVGhlc2UgZG9uJ3QgZGVmaW5lIGFueXRoaW5nLgogICAgIGNhc2Ugb3BfcHV0X3RvX3Njb3Bl
OgogICAgIGNhc2Ugb3BfZW5kOgogICAgIGNhc2Ugb3BfdGhyb3c6CiAgICAgY2FzZSBvcF90aHJv
d19zdGF0aWNfZXJyb3I6Ci0gICAgY2FzZSBvcF9zYXZlOgogICAgIGNhc2Ugb3BfYXNzZXJ0Ogog
ICAgIGNhc2Ugb3BfZGVidWc6CiAgICAgY2FzZSBvcF9yZXQ6CkBAIC0zNjIsNiArMzM5LDcgQEAg
dm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBC
eXRlY29kZUJhc2ljQmxvY2sqIGJsb2MKICAgICBjYXNlIG9wX3dhdGNoZG9nOgogICAgIGNhc2Ug
b3BfbG9nX3NoYWRvd19jaGlja2VuX3Byb2xvZ3VlOgogICAgIGNhc2Ugb3BfbG9nX3NoYWRvd19j
aGlja2VuX3RhaWw6CisgICAgY2FzZSBvcF95aWVsZDoKICNkZWZpbmUgTExJTlRfSEVMUEVSX09Q
Q09ERVMob3Bjb2RlLCBsZW5ndGgpIGNhc2Ugb3Bjb2RlOgogICAgICAgICBGT1JfRUFDSF9MTElO
VF9PUENPREVfRVhURU5TSU9OKExMSU5UX0hFTFBFUl9PUENPREVTKTsKICN1bmRlZiBMTElOVF9I
RUxQRVJfT1BDT0RFUwpAQCAtNDgwLDE1ICs0NTgsNiBAQCB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0
ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxv
YwogICAgICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwg
dmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaSkub2Zmc2V0KCkpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQotICAgIGNhc2Ugb3BfcmVzdW1lOiB7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKGJsb2Nr
LT5zdWNjZXNzb3JzKCkuc2l6ZSgpID09IDEpOwotICAgICAgICAvLyBGSVhNRTogVGhpcyBpcyBy
ZWFsbHkgZGlydHkuCi0gICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNTkyODEKLSAgICAgICAgYmxvY2stPnN1Y2Nlc3NvcnMoKVswXS0+aW4oKS5mb3JF
YWNoU2V0Qml0KFsmXSh1bnNpZ25lZCBsb2NhbCkgewotICAgICAgICAgICAgZnVuY3Rvcihjb2Rl
QmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwobG9j
YWwpLm9mZnNldCgpKTsKLSAgICAgICAgfSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CiAgICAg
fQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCmlu
ZGV4IDFkOTEzNWEyMzczOTE2MzA5MThmZDU1YTZlNTQyNTg5NzE1Y2QwYjUuLjU4NmNjZjUyOGQ0
YmZhZDJhYjkwYjllYWU2NjQ2YjFlYTJkMTQxMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiQXJp
dGhQcm9maWxlLmgiCiAjaW5jbHVkZSAiQmFzaWNCbG9ja0xvY2F0aW9uLmgiCiAjaW5jbHVkZSAi
Qnl0ZWNvZGVHZW5lcmF0b3IuaCIKKyNpbmNsdWRlICJCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMu
aCIKICNpbmNsdWRlICJCeXRlY29kZVVzZURlZi5oIgogI2luY2x1ZGUgIkNhbGxMaW5rU3RhdHVz
LmgiCiAjaW5jbHVkZSAiREZHQ2FwYWJpbGl0aWVzLmgiCkBAIC02OTYsMTggKzY5Nyw2IEBAIHZv
aWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoUHJpbnRTdHJlYW0mIG91dCkKICAgICAgICAgfSB3
aGlsZSAoaSA8IG1fcmFyZURhdGEtPm1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlcy5zaXplKCkpOwog
ICAgIH0KIAotICAgIGlmIChtX3JhcmVEYXRhICYmICFtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVM
b2NhbHNBdFlpZWxkLmlzRW1wdHkoKSkgewotICAgICAgICBvdXQucHJpbnRmKCJcbkxpdmUgQ2Fs
bGVlIExvY2FsczpcbiIpOwotICAgICAgICB1bnNpZ25lZCBpID0gMDsKLSAgICAgICAgZG8gewot
ICAgICAgICAgICAgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZW5lc3MgPSBtX3JhcmVEYXRhLT5t
X2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkW2ldOwotICAgICAgICAgICAgb3V0LnByaW50ZigiICBs
aXZlJTF1ID0gIiwgaSk7Ci0gICAgICAgICAgICBsaXZlbmVzcy5kdW1wKG91dCk7Ci0gICAgICAg
ICAgICBvdXQucHJpbnRmKCJcbiIpOwotICAgICAgICAgICAgKytpOwotICAgICAgICB9IHdoaWxl
IChpIDwgbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZC5zaXplKCkpOwotICAg
IH0KLQogICAgIG91dC5wcmludGYoIlxuIik7CiB9CiAKQEAgLTE2NzEsMzEgKzE2NjAsNiBAQCB2
b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKAogICAgICAgICAgICAgb3V0LnByaW50ZigiJXMs
ICVkIiwgZGVidWdIb29rTmFtZShkZWJ1Z0hvb2tJRCksIGhhc0JyZWFrcG9pbnRGbGFnKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIGNhc2Ugb3Bfc2F2ZTogewotICAg
ICAgICAgICAgaW50IGdlbmVyYXRvciA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAg
dW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gKCsraXQpLT51LnVuc2lnbmVkVmFsdWU7
Ci0gICAgICAgICAgICBpbnQgb2Zmc2V0ID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAg
ICBGYXN0Qml0VmVjdG9yIGxpdmVuZXNzOwotICAgICAgICAgICAgaWYgKGxpdmVDYWxsZWVMb2Nh
bHNJbmRleCA8IG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQuc2l6ZSgpKQot
ICAgICAgICAgICAgICAgIGxpdmVuZXNzID0gbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxz
QXRZaWVsZFtsaXZlQ2FsbGVlTG9jYWxzSW5kZXhdOwotICAgICAgICAgICAgcHJpbnRMb2NhdGlv
bkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAic2F2ZSIpOwotICAgICAgICAgICAgb3V0
LnByaW50ZigiJXMsICIsIHJlZ2lzdGVyTmFtZShnZW5lcmF0b3IpLmRhdGEoKSk7Ci0gICAgICAg
ICAgICBsaXZlbmVzcy5kdW1wKG91dCk7Ci0gICAgICAgICAgICBvdXQucHJpbnRmKCIoQGxpdmUl
MXUpLCAlZCgtPiVkKSIsIGxpdmVDYWxsZWVMb2NhbHNJbmRleCwgb2Zmc2V0LCBsb2NhdGlvbiAr
IG9mZnNldCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIG9w
X3Jlc3VtZTogewotICAgICAgICAgICAgaW50IGdlbmVyYXRvciA9ICgrK2l0KS0+dS5vcGVyYW5k
OwotICAgICAgICAgICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gKCsraXQpLT51
LnVuc2lnbmVkVmFsdWU7Ci0gICAgICAgICAgICBGYXN0Qml0VmVjdG9yIGxpdmVuZXNzOwotICAg
ICAgICAgICAgaWYgKGxpdmVDYWxsZWVMb2NhbHNJbmRleCA8IG1fcmFyZURhdGEtPm1fbGl2ZUNh
bGxlZUxvY2Fsc0F0WWllbGQuc2l6ZSgpKQotICAgICAgICAgICAgICAgIGxpdmVuZXNzID0gbV9y
YXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZFtsaXZlQ2FsbGVlTG9jYWxzSW5kZXhd
OwotICAgICAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0
LCAicmVzdW1lIik7Ci0gICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgIiwgcmVnaXN0ZXJOYW1l
KGdlbmVyYXRvcikuZGF0YSgpKTsKLSAgICAgICAgICAgIGxpdmVuZXNzLmR1bXAob3V0KTsKLSAg
ICAgICAgICAgIG91dC5wcmludGYoIihAbGl2ZSUxdSkiLCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXgp
OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9hc3NlcnQ6
IHsKICAgICAgICAgICAgIGludCBjb25kaXRpb24gPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAg
ICAgICAgIGludCBsaW5lID0gKCsraXQpLT51Lm9wZXJhbmQ7CkBAIC0xOTA3LDcgKzE4NzEsNiBA
QCB2b2lkIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBDb3B5UGFyc2VkQmxvY2tU
YWcsIENvZGVCbG9jayYgb3RoZXIpCiAgICAgICAgIG1fcmFyZURhdGEtPm1fY29uc3RhbnRCdWZm
ZXJzID0gb3RoZXIubV9yYXJlRGF0YS0+bV9jb25zdGFudEJ1ZmZlcnM7CiAgICAgICAgIG1fcmFy
ZURhdGEtPm1fc3dpdGNoSnVtcFRhYmxlcyA9IG90aGVyLm1fcmFyZURhdGEtPm1fc3dpdGNoSnVt
cFRhYmxlczsKICAgICAgICAgbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzID0g
b3RoZXIubV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzOwotICAgICAgICBtX3Jh
cmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkID0gb3RoZXIubV9yYXJlRGF0YS0+bV9s
aXZlQ2FsbGVlTG9jYWxzQXRZaWVsZDsKICAgICB9CiAgICAgCiAgICAgaGVhcCgpLT5tX2NvZGVC
bG9ja3MuYWRkKHRoaXMpOwpAQCAtMjAyOSw3ICsxOTkyLDcgQEAgdm9pZCBDb2RlQmxvY2s6OmZp
bmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBV
bmxpbmsKICAgICAgICAgICAgICAgICBVbmxpbmtlZFN0cmluZ0p1bXBUYWJsZTo6U3RyaW5nT2Zm
c2V0VGFibGU6Oml0ZXJhdG9yIGVuZCA9IHVubGlua2VkQ29kZUJsb2NrLT5zdHJpbmdTd2l0Y2hK
dW1wVGFibGUoaSkub2Zmc2V0VGFibGUuZW5kKCk7CiAgICAgICAgICAgICAgICAgZm9yICg7IHB0
ciAhPSBlbmQ7ICsrcHRyKSB7CiAgICAgICAgICAgICAgICAgICAgIE9mZnNldExvY2F0aW9uIG9m
ZnNldDsKLSAgICAgICAgICAgICAgICAgICAgb2Zmc2V0LmJyYW5jaE9mZnNldCA9IHB0ci0+dmFs
dWU7CisgICAgICAgICAgICAgICAgICAgIG9mZnNldC5icmFuY2hPZmZzZXQgPSBwdHItPnZhbHVl
LmJyYW5jaE9mZnNldDsKICAgICAgICAgICAgICAgICAgICAgbV9yYXJlRGF0YS0+bV9zdHJpbmdT
d2l0Y2hKdW1wVGFibGVzW2ldLm9mZnNldFRhYmxlLmFkZChwdHItPmtleSwgb2Zmc2V0KTsKICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CkBAIC0yMDY5LDExICsyMDMyLDE3IEBAIHZv
aWQgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93
bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAgLy8gQm9va2tlZXAgdGhlIHN0cm9uZ2x5IHJlZmVy
ZW5jZWQgbW9kdWxlIGVudmlyb25tZW50cy4KICAgICBIYXNoU2V0PEpTTW9kdWxlRW52aXJvbm1l
bnQqPiBzdHJvbmdseVJlZmVyZW5jZWRNb2R1bGVFbnZpcm9ubWVudHM7CiAKLSAgICAvLyBCb29r
a2VlcCB0aGUgbWVyZ2UgcG9pbnQgYnl0ZWNvZGUgb2Zmc2V0cy4KLSAgICBWZWN0b3I8c2l6ZV90
PiBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXRzOwotCiAgICAgUmVmQ291bnRlZEFycmF5PEluc3Ry
dWN0aW9uPiBpbnN0cnVjdGlvbnMoaW5zdHJ1Y3Rpb25Db3VudCk7CiAKKyAgICB1bnNpZ25lZCB2
YWx1ZVByb2ZpbGVDb3VudCA9IDA7CisgICAgYXV0byBsaW5rVmFsdWVQcm9maWxlID0gWyZdKHVu
c2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCB1bnNpZ25lZCBvcExlbmd0aCkgeworICAgICAgICB1bnNp
Z25lZCB2YWx1ZVByb2ZpbGVJbmRleCA9IHZhbHVlUHJvZmlsZUNvdW50Kys7CisgICAgICAgIFZh
bHVlUHJvZmlsZSogcHJvZmlsZSA9ICZtX3ZhbHVlUHJvZmlsZXNbdmFsdWVQcm9maWxlSW5kZXhd
OworICAgICAgICBBU1NFUlQocHJvZmlsZS0+bV9ieXRlY29kZU9mZnNldCA9PSAtMSk7CisgICAg
ICAgIHByb2ZpbGUtPm1fYnl0ZWNvZGVPZmZzZXQgPSBieXRlY29kZU9mZnNldDsKKyAgICAgICAg
aW5zdHJ1Y3Rpb25zW2J5dGVjb2RlT2Zmc2V0ICsgb3BMZW5ndGggLSAxXSA9IHByb2ZpbGU7Cisg
ICAgfTsKKwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7ICFpbnN0cnVjdGlvblJlYWRlci5hdEVu
ZCgpOyApIHsKICAgICAgICAgY29uc3QgVW5saW5rZWRJbnN0cnVjdGlvbiogcGMgPSBpbnN0cnVj
dGlvblJlYWRlci5uZXh0KCk7CiAKQEAgLTIxMDgsMTAgKzIwNzcsNyBAQCB2b2lkIENvZGVCbG9j
azo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFi
bGUsIFVubGluawogICAgICAgICBjYXNlIG9wX2dldF9ieV9pZDoKICAgICAgICAgY2FzZSBvcF9n
ZXRfZnJvbV9hcmd1bWVudHM6CiAgICAgICAgIGNhc2Ugb3BfdG9fbnVtYmVyOiB7Ci0gICAgICAg
ICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSAmbV92YWx1ZVByb2ZpbGVzW3BjW29wTGVuZ3Ro
IC0gMV0udS5vcGVyYW5kXTsKLSAgICAgICAgICAgIEFTU0VSVChwcm9maWxlLT5tX2J5dGVjb2Rl
T2Zmc2V0ID09IC0xKTsKLSAgICAgICAgICAgIHByb2ZpbGUtPm1fYnl0ZWNvZGVPZmZzZXQgPSBp
OwotICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zW2kgKyBvcExlbmd0aCAtIDFdID0gcHJvZmlsZTsK
KyAgICAgICAgICAgIGxpbmtWYWx1ZVByb2ZpbGUoaSwgb3BMZW5ndGgpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9wdXRfYnlfdmFsOiB7CkBAIC0yMTQ4
LDEwICsyMTE0LDcgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2Ny
aXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICAgICAgY2FzZSBvcF9j
YWxsOgogICAgICAgICBjYXNlIG9wX3RhaWxfY2FsbDoKICAgICAgICAgY2FzZSBvcF9jYWxsX2V2
YWw6IHsKLSAgICAgICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9ICZtX3ZhbHVlUHJvZmls
ZXNbcGNbb3BMZW5ndGggLSAxXS51Lm9wZXJhbmRdOwotICAgICAgICAgICAgQVNTRVJUKHByb2Zp
bGUtPm1fYnl0ZWNvZGVPZmZzZXQgPT0gLTEpOwotICAgICAgICAgICAgcHJvZmlsZS0+bV9ieXRl
Y29kZU9mZnNldCA9IGk7Ci0gICAgICAgICAgICBpbnN0cnVjdGlvbnNbaSArIG9wTGVuZ3RoIC0g
MV0gPSBwcm9maWxlOworICAgICAgICAgICAgbGlua1ZhbHVlUHJvZmlsZShpLCBvcExlbmd0aCk7
CiAgICAgICAgICAgICBpbnQgYXJyYXlQcm9maWxlSW5kZXggPSBwY1tvcExlbmd0aCAtIDJdLnUu
b3BlcmFuZDsKICAgICAgICAgICAgIG1fYXJyYXlQcm9maWxlc1thcnJheVByb2ZpbGVJbmRleF0g
PSBBcnJheVByb2ZpbGUoaSk7CiAgICAgICAgICAgICBpbnN0cnVjdGlvbnNbaSArIG9wTGVuZ3Ro
IC0gMl0gPSAmbV9hcnJheVByb2ZpbGVzW2FycmF5UHJvZmlsZUluZGV4XTsKQEAgLTIxNjAsMTAg
KzIxMjMsNyBAQCB2b2lkIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRF
eGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGluawogICAgICAgICB9CiAgICAgICAgIGNh
c2Ugb3BfY29uc3RydWN0OiB7CiAgICAgICAgICAgICBpbnN0cnVjdGlvbnNbaSArIDVdID0gJm1f
bGxpbnRDYWxsTGlua0luZm9zW3BjWzVdLnUub3BlcmFuZF07Ci0gICAgICAgICAgICBWYWx1ZVBy
b2ZpbGUqIHByb2ZpbGUgPSAmbV92YWx1ZVByb2ZpbGVzW3BjW29wTGVuZ3RoIC0gMV0udS5vcGVy
YW5kXTsKLSAgICAgICAgICAgIEFTU0VSVChwcm9maWxlLT5tX2J5dGVjb2RlT2Zmc2V0ID09IC0x
KTsKLSAgICAgICAgICAgIHByb2ZpbGUtPm1fYnl0ZWNvZGVPZmZzZXQgPSBpOwotICAgICAgICAg
ICAgaW5zdHJ1Y3Rpb25zW2kgKyBvcExlbmd0aCAtIDFdID0gcHJvZmlsZTsKKyAgICAgICAgICAg
IGxpbmtWYWx1ZVByb2ZpbGUoaSwgb3BMZW5ndGgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KICAgICAgICAgY2FzZSBvcF9nZXRfYXJyYXlfbGVuZ3RoOgpAQCAtMjE5NCwxMCArMjE1
NCw3IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1
dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAgICAgIH0KIAogICAgICAgICBjYXNl
IG9wX2dldF9mcm9tX3Njb3BlOiB7Ci0gICAgICAgICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUg
PSAmbV92YWx1ZVByb2ZpbGVzW3BjW29wTGVuZ3RoIC0gMV0udS5vcGVyYW5kXTsKLSAgICAgICAg
ICAgIEFTU0VSVChwcm9maWxlLT5tX2J5dGVjb2RlT2Zmc2V0ID09IC0xKTsKLSAgICAgICAgICAg
IHByb2ZpbGUtPm1fYnl0ZWNvZGVPZmZzZXQgPSBpOwotICAgICAgICAgICAgaW5zdHJ1Y3Rpb25z
W2kgKyBvcExlbmd0aCAtIDFdID0gcHJvZmlsZTsKKyAgICAgICAgICAgIGxpbmtWYWx1ZVByb2Zp
bGUoaSwgb3BMZW5ndGgpOwogCiAgICAgICAgICAgICAvLyBnZXRfZnJvbV9zY29wZSBkc3QsIHNj
b3BlLCBpZCwgR2V0UHV0SW5mbywgU3RydWN0dXJlLCBPcGVyYW5kCiAKQEAgLTIzNTQsMTUgKzIz
MTEsNiBAQCB2b2lkIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVj
dXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGluawogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KIAotICAgICAgICBjYXNlIG9wX3NhdmU6IHsKLSAgICAgICAgICAgIHVuc2lnbmVkIGxp
dmVDYWxsZWVMb2NhbHNJbmRleCA9IHBjWzJdLnUuaW5kZXg7Ci0gICAgICAgICAgICBpbnQgb2Zm
c2V0ID0gcGNbM10udS5vcGVyYW5kOwotICAgICAgICAgICAgaWYgKGxpdmVDYWxsZWVMb2NhbHNJ
bmRleCA+PSBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXRzLnNpemUoKSkKLSAgICAgICAgICAgICAg
ICBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXRzLnJlc2l6ZShsaXZlQ2FsbGVlTG9jYWxzSW5kZXgg
KyAxKTsKLSAgICAgICAgICAgIG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldHNbbGl2ZUNhbGxlZUxv
Y2Fsc0luZGV4XSA9IGkgKyBvZmZzZXQ7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQot
CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMjM3
NCwyMCArMjMyMiw2IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNj
cmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAKICAgICBtX2luc3RydWN0
aW9ucyA9IFdURk1vdmUoaW5zdHJ1Y3Rpb25zKTsKIAotICAgIC8vIFBlcmZvcm0gYnl0ZWNvZGUg
bGl2ZW5lc3MgYW5hbHlzaXMgdG8gZGV0ZXJtaW5lIHdoaWNoIGxvY2FscyBhcmUgbGl2ZSBhbmQg
c2hvdWxkIGJlIHJlc3VtZWQgd2hlbiBleGVjdXRpbmcgb3BfcmVzdW1lLgotICAgIGlmICh1bmxp
bmtlZENvZGVCbG9jay0+cGFyc2VNb2RlKCkgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JC
b2R5TW9kZSkgewotICAgICAgICBpZiAoc2l6ZV90IGNvdW50ID0gbWVyZ2VQb2ludEJ5dGVjb2Rl
T2Zmc2V0cy5zaXplKCkpIHsKLSAgICAgICAgICAgIGNyZWF0ZVJhcmVEYXRhSWZOZWNlc3Nhcnko
KTsKLSAgICAgICAgICAgIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcyBsaXZlbmVzcyh0aGlzKTsK
LSAgICAgICAgICAgIG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQuZ3Jvdyhj
b3VudCk7Ci0gICAgICAgICAgICBzaXplX3QgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gMDsKLSAg
ICAgICAgICAgIGZvciAoc2l6ZV90IGJ5dGVjb2RlT2Zmc2V0IDogbWVyZ2VQb2ludEJ5dGVjb2Rl
T2Zmc2V0cykgewotICAgICAgICAgICAgICAgIG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fs
c0F0WWllbGRbbGl2ZUNhbGxlZUxvY2Fsc0luZGV4XSA9IGxpdmVuZXNzLmdldExpdmVuZXNzSW5m
b0F0Qnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpOwotICAgICAgICAgICAgICAgICsrbGl2
ZUNhbGxlZUxvY2Fsc0luZGV4OwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCiAg
ICAgLy8gU2V0IG9wdGltaXphdGlvbiB0aHJlc2hvbGRzIG9ubHkgYWZ0ZXIgbV9pbnN0cnVjdGlv
bnMgaXMgaW5pdGlhbGl6ZWQsIHNpbmNlIHRoZXNlCiAgICAgLy8gcmVseSBvbiB0aGUgaW5zdHJ1
Y3Rpb24gY291bnQgKGFuZCBhcmUgaW4gdGhlb3J5IHBlcm1pdHRlZCB0byBhbHNvIGluc3BlY3Qg
dGhlCiAgICAgLy8gaW5zdHJ1Y3Rpb24gc3RyZWFtIHRvIG1vcmUgYWNjdXJhdGUgYXNzZXNzIHRo
ZSBjb3N0IG9mIHRpZXItdXApLgpAQCAtMzI0NCwyMSArMzE3OCw3IEBAIEhhbmRsZXJJbmZvKiBD
b2RlQmxvY2s6OmhhbmRsZXJGb3JJbmRleCh1bnNpZ25lZCBpbmRleCwgUmVxdWlyZWRIYW5kbGVy
IHJlcXVpcmVkCiB7CiAgICAgaWYgKCFtX3JhcmVEYXRhKQogICAgICAgICByZXR1cm4gMDsKLSAg
ICAKLSAgICBWZWN0b3I8SGFuZGxlckluZm8+JiBleGNlcHRpb25IYW5kbGVycyA9IG1fcmFyZURh
dGEtPm1fZXhjZXB0aW9uSGFuZGxlcnM7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBleGNl
cHRpb25IYW5kbGVycy5zaXplKCk7ICsraSkgewotICAgICAgICBIYW5kbGVySW5mbyYgaGFuZGxl
ciA9IGV4Y2VwdGlvbkhhbmRsZXJzW2ldOwotICAgICAgICBpZiAoKHJlcXVpcmVkSGFuZGxlciA9
PSBSZXF1aXJlZEhhbmRsZXI6OkNhdGNoSGFuZGxlcikgJiYgIWhhbmRsZXIuaXNDYXRjaEhhbmRs
ZXIoKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIC8vIEhhbmRsZXJzIGFyZSBv
cmRlcmVkIGlubmVybW9zdCBmaXJzdCwgc28gdGhlIGZpcnN0IGhhbmRsZXIgd2UgZW5jb3VudGVy
Ci0gICAgICAgIC8vIHRoYXQgY29udGFpbnMgdGhlIHNvdXJjZSBhZGRyZXNzIGlzIHRoZSBjb3Jy
ZWN0IGhhbmRsZXIgdG8gdXNlLgotICAgICAgICAvLyBUaGlzIGluZGV4IHVzZWQgaXMgZWl0aGVy
IHRoZSBCeXRlY29kZU9mZnNldCBvciBhIENhbGxTaXRlSW5kZXguCi0gICAgICAgIGlmIChoYW5k
bGVyLnN0YXJ0IDw9IGluZGV4ICYmIGhhbmRsZXIuZW5kID4gaW5kZXgpCi0gICAgICAgICAgICBy
ZXR1cm4gJmhhbmRsZXI7Ci0gICAgfQotCi0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIEhhbmRs
ZXJJbmZvOjpoYW5kbGVyRm9ySW5kZXgobV9yYXJlRGF0YS0+bV9leGNlcHRpb25IYW5kbGVycywg
aW5kZXgsIHJlcXVpcmVkSGFuZGxlcik7CiB9CiAKIENhbGxTaXRlSW5kZXggQ29kZUJsb2NrOjpu
ZXdFeGNlcHRpb25IYW5kbGluZ0NhbGxTaXRlSW5kZXgoQ2FsbFNpdGVJbmRleCBvcmlnaW5hbENh
bGxTaXRlKQpAQCAtMzM1Myw3ICszMjczLDYgQEAgdm9pZCBDb2RlQmxvY2s6OnNocmlua1RvRml0
KFNocmlua01vZGUgc2hyaW5rTW9kZSkKICAgICAgICAgaWYgKG1fcmFyZURhdGEpIHsKICAgICAg
ICAgICAgIG1fcmFyZURhdGEtPm1fc3dpdGNoSnVtcFRhYmxlcy5zaHJpbmtUb0ZpdCgpOwogICAg
ICAgICAgICAgbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzLnNocmlua1RvRml0
KCk7Ci0gICAgICAgICAgICBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkLnNo
cmlua1RvRml0KCk7CiAgICAgICAgIH0KICAgICB9IC8vIGVsc2UgZG9uJ3Qgc2hyaW5rIHRoZXNl
LCBiZWNhdXNlIHdlIHdvdWxkIGhhdmUgYWxyZWFkeSBwb2ludGVkIHBvaW50ZXJzIGludG8gdGhl
c2UgdGFibGVzLgogfQpAQCAtNDMzNSwxNCArNDI1NCw5IEBAIFN0cmluZyBDb2RlQmxvY2s6Om5h
bWVGb3JSZWdpc3RlcihWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVyKQogCiBWYWx1ZVBy
b2ZpbGUqIENvZGVCbG9jazo6dmFsdWVQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoaW50IGJ5dGVj
b2RlT2Zmc2V0KQogewotICAgIFZhbHVlUHJvZmlsZSogcmVzdWx0ID0gYmluYXJ5U2VhcmNoPFZh
bHVlUHJvZmlsZSwgaW50PigKLSAgICAgICAgbV92YWx1ZVByb2ZpbGVzLCBtX3ZhbHVlUHJvZmls
ZXMuc2l6ZSgpLCBieXRlY29kZU9mZnNldCwKLSAgICAgICAgZ2V0VmFsdWVQcm9maWxlQnl0ZWNv
ZGVPZmZzZXQ8VmFsdWVQcm9maWxlPik7Ci0gICAgQVNTRVJUKHJlc3VsdC0+bV9ieXRlY29kZU9m
ZnNldCAhPSAtMSk7Ci0gICAgQVNTRVJUKGluc3RydWN0aW9ucygpW2J5dGVjb2RlT2Zmc2V0ICsg
b3Bjb2RlTGVuZ3RoKAotICAgICAgICBtX3ZtLT5pbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoCi0g
ICAgICAgICAgICBpbnN0cnVjdGlvbnMoKVtieXRlY29kZU9mZnNldF0udS5vcGNvZGUpKSAtIDFd
LnUucHJvZmlsZSA9PSByZXN1bHQpOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgT3Bjb2RlSUQg
b3Bjb2RlSUQgPSBtX3ZtLT5pbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25zKClb
Ynl0ZWNvZGVPZmZzZXRdLnUub3Bjb2RlKTsKKyAgICB1bnNpZ25lZCBsZW5ndGggPSBvcGNvZGVM
ZW5ndGgob3Bjb2RlSUQpOworICAgIHJldHVybiBpbnN0cnVjdGlvbnMoKVtieXRlY29kZU9mZnNl
dCArIGxlbmd0aCAtIDFdLnUucHJvZmlsZTsKIH0KIAogdm9pZCBDb2RlQmxvY2s6OnZhbGlkYXRl
KCkKQEAgLTQ2NzEsNCArNDU4NSwxNiBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcE1hdGhJQ1N0YXRz
KCkKICNlbmRpZgogfQogCitCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMmIENvZGVCbG9jazo6bGl2
ZW5lc3NBbmFseXNpc1Nsb3coKQoreworICAgIHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUxpdmVu
ZXNzQW5hbHlzaXM+IGFuYWx5c2lzID0gc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZUxpdmVuZXNz
QW5hbHlzaXM+KHRoaXMpOworICAgIHsKKyAgICAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2Nr
ZXIobV9sb2NrKTsKKyAgICAgICAgaWYgKCFtX2xpdmVuZXNzQW5hbHlzaXMpCisgICAgICAgICAg
ICBtX2xpdmVuZXNzQW5hbHlzaXMgPSBXVEZNb3ZlKGFuYWx5c2lzKTsKKyAgICAgICAgcmV0dXJu
ICptX2xpdmVuZXNzQW5hbHlzaXM7CisgICAgfQorfQorCisKIH0gLy8gbmFtZXNwYWNlIEpTQwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCmluZGV4IGFiOTI4MDRm
NmJhMzliM2I2N2JhNmQ3NzVlNDQ5ZTJmM2RiZjdjMDUuLjllNWQ2MDc4NzczZjM4Y2JiMjJkYzZh
NTBmYWZhN2NlYjBlMWZmYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmgKQEAgLTMzLDcgKzMzLDYgQEAKICNpbmNsdWRlICJBcnJheVByb2ZpbGUuaCIKICNp
bmNsdWRlICJCeVZhbEluZm8uaCIKICNpbmNsdWRlICJCeXRlY29kZUNvbnZlbnRpb25zLmgiCi0j
aW5jbHVkZSAiQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmgiCiAjaW5jbHVkZSAiQ2FsbExpbmtJ
bmZvLmgiCiAjaW5jbHVkZSAiQ2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQuaCIKICNp
bmNsdWRlICJDb2RlQmxvY2tIYXNoLmgiCkBAIC03OSw2ICs3OCw3IEBACiAKIG5hbWVzcGFjZSBK
U0MgewogCitjbGFzcyBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM7CiBjbGFzcyBFeGVjU3RhdGU7
CiBjbGFzcyBKSVRBZGRHZW5lcmF0b3I7CiBjbGFzcyBKU01vZHVsZUVudmlyb25tZW50OwpAQCAt
MjI2LDEwICsyMjYsNiBAQCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAg
ICAgcmV0dXJuIGluZGV4ID49IG1fbnVtVmFyczsKICAgICB9CiAKLSAgICBlbnVtIGNsYXNzIFJl
cXVpcmVkSGFuZGxlciB7Ci0gICAgICAgIENhdGNoSGFuZGxlciwKLSAgICAgICAgQW55SGFuZGxl
cgotICAgIH07CiAgICAgSGFuZGxlckluZm8qIGhhbmRsZXJGb3JCeXRlY29kZU9mZnNldCh1bnNp
Z25lZCBieXRlY29kZU9mZnNldCwgUmVxdWlyZWRIYW5kbGVyID0gUmVxdWlyZWRIYW5kbGVyOjpB
bnlIYW5kbGVyKTsKICAgICBIYW5kbGVySW5mbyogaGFuZGxlckZvckluZGV4KHVuc2lnbmVkLCBS
ZXF1aXJlZEhhbmRsZXIgPSBSZXF1aXJlZEhhbmRsZXI6OkFueUhhbmRsZXIpOwogICAgIHZvaWQg
cmVtb3ZlRXhjZXB0aW9uSGFuZGxlckZvckNhbGxTaXRlKENhbGxTaXRlSW5kZXgpOwpAQCAtMzA0
LDYgKzMwMCw5IEBAIGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8SW5zdHJ1Y3Rpb24qPihyZXR1cm5BZGRyZXNzKSAtIGluc3RydWN0
aW9ucygpLmJlZ2luKCk7CiAgICAgfQogCisgICAgdHlwZWRlZiBKU0M6Okluc3RydWN0aW9uIElu
c3RydWN0aW9uOworICAgIHR5cGVkZWYgUmVmQ291bnRlZEFycmF5PEluc3RydWN0aW9uPiYgVW5w
YWNrZWRJbnN0cnVjdGlvbnM7CisKICAgICB1bnNpZ25lZCBudW1iZXJPZkluc3RydWN0aW9ucygp
IGNvbnN0IHsgcmV0dXJuIG1faW5zdHJ1Y3Rpb25zLnNpemUoKTsgfQogICAgIFJlZkNvdW50ZWRB
cnJheTxJbnN0cnVjdGlvbj4mIGluc3RydWN0aW9ucygpIHsgcmV0dXJuIG1faW5zdHJ1Y3Rpb25z
OyB9CiAgICAgY29uc3QgUmVmQ291bnRlZEFycmF5PEluc3RydWN0aW9uPiYgaW5zdHJ1Y3Rpb25z
KCkgY29uc3QgeyByZXR1cm4gbV9pbnN0cnVjdGlvbnM7IH0KQEAgLTU0Niw3ICs1NDUsNyBAQCBj
bGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICB9CiAKICAgICBXcml0ZUJhcnJp
ZXI8VW5rbm93bj4mIGNvbnN0YW50UmVnaXN0ZXIoaW50IGluZGV4KSB7IHJldHVybiBtX2NvbnN0
YW50UmVnaXN0ZXJzW2luZGV4IC0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXhdOyB9Ci0gICAg
QUxXQVlTX0lOTElORSBib29sIGlzQ29uc3RhbnRSZWdpc3RlckluZGV4KGludCBpbmRleCkgY29u
c3QgeyByZXR1cm4gaW5kZXggPj0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXg7IH0KKyAgICBz
dGF0aWMgQUxXQVlTX0lOTElORSBib29sIGlzQ29uc3RhbnRSZWdpc3RlckluZGV4KGludCBpbmRl
eCkgeyByZXR1cm4gaW5kZXggPj0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXg7IH0KICAgICBB
TFdBWVNfSU5MSU5FIEpTVmFsdWUgZ2V0Q29uc3RhbnQoaW50IGluZGV4KSBjb25zdCB7IHJldHVy
biBtX2NvbnN0YW50UmVnaXN0ZXJzW2luZGV4IC0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXhd
LmdldCgpOyB9CiAgICAgQUxXQVlTX0lOTElORSBTb3VyY2VDb2RlUmVwcmVzZW50YXRpb24gY29u
c3RhbnRTb3VyY2VDb2RlUmVwcmVzZW50YXRpb24oaW50IGluZGV4KSBjb25zdCB7IHJldHVybiBt
X2NvbnN0YW50c1NvdXJjZUNvZGVSZXByZXNlbnRhdGlvbltpbmRleCAtIEZpcnN0Q29uc3RhbnRS
ZWdpc3RlckluZGV4XTsgfQogCkBAIC01OTIsMTQgKzU5MSw3IEBAIGNsYXNzIENvZGVCbG9jayA6
IHB1YmxpYyBKU0NlbGwgewogICAgICAgICAgICAgaWYgKCEhbV9saXZlbmVzc0FuYWx5c2lzKQog
ICAgICAgICAgICAgICAgIHJldHVybiAqbV9saXZlbmVzc0FuYWx5c2lzOwogICAgICAgICB9Ci0g
ICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM+IGFuYWx5c2lz
ID0KLSAgICAgICAgICAgIHN0ZDo6bWFrZV91bmlxdWU8Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lz
Pih0aGlzKTsKLSAgICAgICAgewotICAgICAgICAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2Nr
ZXIobV9sb2NrKTsKLSAgICAgICAgICAgIGlmICghbV9saXZlbmVzc0FuYWx5c2lzKQotICAgICAg
ICAgICAgICAgIG1fbGl2ZW5lc3NBbmFseXNpcyA9IFdURk1vdmUoYW5hbHlzaXMpOwotICAgICAg
ICAgICAgcmV0dXJuICptX2xpdmVuZXNzQW5hbHlzaXM7Ci0gICAgICAgIH0KKyAgICAgICAgcmV0
dXJuIGxpdmVuZXNzQW5hbHlzaXNTbG93KCk7CiAgICAgfQogICAgIAogICAgIHZvaWQgdmFsaWRh
dGUoKTsKQEAgLTYyMCwxOCArNjEyLDYgQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2Vs
bCB7CiAgICAgU3RyaW5nSnVtcFRhYmxlJiBhZGRTdHJpbmdTd2l0Y2hKdW1wVGFibGUoKSB7IGNy
ZWF0ZVJhcmVEYXRhSWZOZWNlc3NhcnkoKTsgbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1w
VGFibGVzLmFwcGVuZChTdHJpbmdKdW1wVGFibGUoKSk7IHJldHVybiBtX3JhcmVEYXRhLT5tX3N0
cmluZ1N3aXRjaEp1bXBUYWJsZXMubGFzdCgpOyB9CiAgICAgU3RyaW5nSnVtcFRhYmxlJiBzdHJp
bmdTd2l0Y2hKdW1wVGFibGUoaW50IHRhYmxlSW5kZXgpIHsgUkVMRUFTRV9BU1NFUlQobV9yYXJl
RGF0YSk7IHJldHVybiBtX3JhcmVEYXRhLT5tX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXNbdGFibGVJ
bmRleF07IH0KIAotICAgIC8vIExpdmUgY2FsbGVlIHJlZ2lzdGVycyBhdCB5aWVsZCBwb2ludHMu
Ci0gICAgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQodW5zaWdu
ZWQgaW5kZXgpIGNvbnN0Ci0gICAgewotICAgICAgICBSRUxFQVNFX0FTU0VSVChtX3JhcmVEYXRh
KTsKLSAgICAgICAgcmV0dXJuIG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGRb
aW5kZXhdOwotICAgIH0KLSAgICBGYXN0Qml0VmVjdG9yJiBsaXZlQ2FsbGVlTG9jYWxzQXRZaWVs
ZCh1bnNpZ25lZCBpbmRleCkKLSAgICB7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fcmFyZURh
dGEpOwotICAgICAgICByZXR1cm4gbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVs
ZFtpbmRleF07Ci0gICAgfQotCiAgICAgRXZhbENvZGVDYWNoZSYgZXZhbENvZGVDYWNoZSgpIHsg
Y3JlYXRlUmFyZURhdGFJZk5lY2Vzc2FyeSgpOyByZXR1cm4gbV9yYXJlRGF0YS0+bV9ldmFsQ29k
ZUNhY2hlOyB9CiAKICAgICBlbnVtIFNocmlua01vZGUgewpAQCAtODg2LDggKzg2Niw2IEBAIGNs
YXNzIENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgICAgICBWZWN0b3I8U2ltcGxlSnVt
cFRhYmxlPiBtX3N3aXRjaEp1bXBUYWJsZXM7CiAgICAgICAgIFZlY3RvcjxTdHJpbmdKdW1wVGFi
bGU+IG1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlczsKIAotICAgICAgICBWZWN0b3I8RmFzdEJpdFZl
Y3Rvcj4gbV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZDsKLQogICAgICAgICBFdmFsQ29kZUNhY2hl
IG1fZXZhbENvZGVDYWNoZTsKICAgICB9OwogCkBAIC05MjIsNiArOTAwLDggQEAgY2xhc3MgQ29k
ZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIENv
ZGVCbG9ja1NldDsKKworICAgIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcyYgbGl2ZW5lc3NBbmFs
eXNpc1Nsb3coKTsKICAgICAKICAgICBDb2RlQmxvY2sqIHNwZWNpYWxPU1JFbnRyeUJsb2NrT3JO
dWxsKCk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
SGFuZGxlckluZm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9IYW5kbGVySW5m
by5oCmluZGV4IGFjZGRhMDhlZDE0Y2JmOWYwOTcxMjc1MDQwNWE0MTc0MWY3NmEyMTMuLjdiMTA4
YWNlOTM3MjhhOGQ1ZGY4ZWIxNzNmYzBiMGE2MWJhZWQ2M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9IYW5kbGVySW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9IYW5kbGVySW5mby5oCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5l
IEhhbmRsZXJJbmZvX2gKIAogI2luY2x1ZGUgIkNvZGVMb2NhdGlvbi5oIgorI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTM3LDYgKzM4LDExIEBAIGVudW0g
Y2xhc3MgSGFuZGxlclR5cGUgewogICAgIFN5bnRoZXNpemVkRmluYWxseSA9IDMKIH07CiAKK2Vu
dW0gY2xhc3MgUmVxdWlyZWRIYW5kbGVyIHsKKyAgICBDYXRjaEhhbmRsZXIsCisgICAgQW55SGFu
ZGxlcgorfTsKKwogc3RydWN0IEhhbmRsZXJJbmZvQmFzZSB7CiAgICAgSGFuZGxlclR5cGUgdHlw
ZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEhhbmRsZXJUeXBlPih0eXBlQml0cyk7IH0K
ICAgICB2b2lkIHNldFR5cGUoSGFuZGxlclR5cGUgdHlwZSkgeyB0eXBlQml0cyA9IHN0YXRpY19j
YXN0PHVpbnQzMl90Pih0eXBlKTsgfQpAQCAtNTgsNiArNjQsMjMgQEAgc3RydWN0IEhhbmRsZXJJ
bmZvQmFzZSB7CiAKICAgICBib29sIGlzQ2F0Y2hIYW5kbGVyKCkgY29uc3QgeyByZXR1cm4gdHlw
ZSgpID09IEhhbmRsZXJUeXBlOjpDYXRjaDsgfQogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgSGFu
ZGxlcj4KKyAgICBzdGF0aWMgSGFuZGxlciogaGFuZGxlckZvckluZGV4KFZlY3RvcjxIYW5kbGVy
PiYgZXhlcHRpb25IYW5kbGVycywgdW5zaWduZWQgaW5kZXgsIFJlcXVpcmVkSGFuZGxlciByZXF1
aXJlZEhhbmRsZXIpCisgICAgeworICAgICAgICBmb3IgKEhhbmRsZXImIGhhbmRsZXIgOiBleGVw
dGlvbkhhbmRsZXJzKSB7CisgICAgICAgICAgICBpZiAoKHJlcXVpcmVkSGFuZGxlciA9PSBSZXF1
aXJlZEhhbmRsZXI6OkNhdGNoSGFuZGxlcikgJiYgIWhhbmRsZXIuaXNDYXRjaEhhbmRsZXIoKSkK
KyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgLy8gSGFuZGxlcnMgYXJl
IG9yZGVyZWQgaW5uZXJtb3N0IGZpcnN0LCBzbyB0aGUgZmlyc3QgaGFuZGxlciB3ZSBlbmNvdW50
ZXIKKyAgICAgICAgICAgIC8vIHRoYXQgY29udGFpbnMgdGhlIHNvdXJjZSBhZGRyZXNzIGlzIHRo
ZSBjb3JyZWN0IGhhbmRsZXIgdG8gdXNlLgorICAgICAgICAgICAgLy8gVGhpcyBpbmRleCB1c2Vk
IGlzIGVpdGhlciB0aGUgQnl0ZWNvZGVPZmZzZXQgb3IgYSBDYWxsU2l0ZUluZGV4LgorICAgICAg
ICAgICAgaWYgKGhhbmRsZXIuc3RhcnQgPD0gaW5kZXggJiYgaGFuZGxlci5lbmQgPiBpbmRleCkK
KyAgICAgICAgICAgICAgICByZXR1cm4gJmhhbmRsZXI7CisgICAgICAgIH0KKworICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKICAgICB1aW50MzJfdCBzdGFydDsKICAgICB1aW50MzJf
dCBlbmQ7CiAgICAgdWludDMyX3QgdGFyZ2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmNwcAppbmRleCBlMmNiMDAwNDgzNzk0
YmE5MmQ1MTBkY2Y1ZmE5OTQ4ODVhMjNkYzNkLi5iZDg0MGY4ZWE4MTM1OTVkNjcyYzk4YTY2NzAx
YzM4ODdjNWQwODQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
UHJlY2lzZUp1bXBUYXJnZXRzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmNwcApAQCAtMjYsMTQgKzI2LDE1IEBACiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiUHJlY2lzZUp1bXBUYXJnZXRzLmgiCiAKKyNpbmNsdWRlICJJ
bnRlcnByZXRlcklubGluZXMuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAKIG5hbWVzcGFj
ZSBKU0MgewogCi10ZW1wbGF0ZSA8c2l6ZV90IHZlY3RvclNpemU+Ci1zdGF0aWMgdm9pZCBnZXRK
dW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBJbnRlcnBy
ZXRlciogaW50ZXJwcmV0ZXIsIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWdu
ZWQgYnl0ZWNvZGVPZmZzZXQsIFZlY3Rvcjx1bnNpZ25lZCwgdmVjdG9yU2l6ZT4mIG91dCkKK3Rl
bXBsYXRlIDxzaXplX3QgdmVjdG9yU2l6ZSwgdHlwZW5hbWUgQmxvY2ssIHR5cGVuYW1lIEluc3Ry
dWN0aW9uPgorc3RhdGljIHZvaWQgZ2V0SnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChCbG9j
ayogY29kZUJsb2NrLCBJbnRlcnByZXRlciogaW50ZXJwcmV0ZXIsIEluc3RydWN0aW9uKiBpbnN0
cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIFZlY3Rvcjx1bnNpZ25lZCwg
dmVjdG9yU2l6ZT4mIG91dCkKIHsKLSAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGludGVycHJldGVy
LT5nZXRPcGNvZGVJRChpbnN0cnVjdGlvbnNCZWdpbltieXRlY29kZU9mZnNldF0udS5vcGNvZGUp
OworICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGluc3Ry
dWN0aW9uc0JlZ2luW2J5dGVjb2RlT2Zmc2V0XSk7CiAgICAgSW5zdHJ1Y3Rpb24qIGN1cnJlbnQg
PSBpbnN0cnVjdGlvbnNCZWdpbiArIGJ5dGVjb2RlT2Zmc2V0OwogICAgIHN3aXRjaCAob3Bjb2Rl
SUQpIHsKICAgICBjYXNlIG9wX2ptcDoKQEAgLTU0LDIxICs1NSwyMCBAQCBzdGF0aWMgdm9pZCBn
ZXRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBJbnRl
cnByZXRlciogaQogICAgIGNhc2Ugb3Bfam5sZXNzZXE6CiAgICAgY2FzZSBvcF9qbmdyZWF0ZXI6
CiAgICAgY2FzZSBvcF9qbmdyZWF0ZXJlcToKLSAgICBjYXNlIG9wX3NhdmU6IC8vIFRoZSBqdW1w
IG9mIG9wX3NhdmUgaXMgcHVyZWx5IGZvciBjYWxjdWxhdGluZyBsaXZlbmVzcy4KICAgICAgICAg
b3V0LmFwcGVuZChieXRlY29kZU9mZnNldCArIGN1cnJlbnRbM10udS5vcGVyYW5kKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBvcF9zd2l0Y2hfaW1tOgogICAgIGNhc2Ugb3Bfc3dpdGNoX2No
YXI6IHsKLSAgICAgICAgU2ltcGxlSnVtcFRhYmxlJiB0YWJsZSA9IGNvZGVCbG9jay0+c3dpdGNo
SnVtcFRhYmxlKGN1cnJlbnRbMV0udS5vcGVyYW5kKTsKKyAgICAgICAgYXV0byYgdGFibGUgPSBj
b2RlQmxvY2stPnN3aXRjaEp1bXBUYWJsZShjdXJyZW50WzFdLnUub3BlcmFuZCk7CiAgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IHRhYmxlLmJyYW5jaE9mZnNldHMuc2l6ZSgpOyBpLS07KQogICAg
ICAgICAgICAgb3V0LmFwcGVuZChieXRlY29kZU9mZnNldCArIHRhYmxlLmJyYW5jaE9mZnNldHNb
aV0pOwogICAgICAgICBvdXQuYXBwZW5kKGJ5dGVjb2RlT2Zmc2V0ICsgY3VycmVudFsyXS51Lm9w
ZXJhbmQpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBvcF9zd2l0Y2hfc3RyaW5n
OiB7Ci0gICAgICAgIFN0cmluZ0p1bXBUYWJsZSYgdGFibGUgPSBjb2RlQmxvY2stPnN0cmluZ1N3
aXRjaEp1bXBUYWJsZShjdXJyZW50WzFdLnUub3BlcmFuZCk7Ci0gICAgICAgIFN0cmluZ0p1bXBU
YWJsZTo6U3RyaW5nT2Zmc2V0VGFibGU6Oml0ZXJhdG9yIGl0ZXIgPSB0YWJsZS5vZmZzZXRUYWJs
ZS5iZWdpbigpOwotICAgICAgICBTdHJpbmdKdW1wVGFibGU6OlN0cmluZ09mZnNldFRhYmxlOjpp
dGVyYXRvciBlbmQgPSB0YWJsZS5vZmZzZXRUYWJsZS5lbmQoKTsKKyAgICAgICAgYXV0byYgdGFi
bGUgPSBjb2RlQmxvY2stPnN0cmluZ1N3aXRjaEp1bXBUYWJsZShjdXJyZW50WzFdLnUub3BlcmFu
ZCk7CisgICAgICAgIGF1dG8gaXRlciA9IHRhYmxlLm9mZnNldFRhYmxlLmJlZ2luKCk7CisgICAg
ICAgIGF1dG8gZW5kID0gdGFibGUub2Zmc2V0VGFibGUuZW5kKCk7CiAgICAgICAgIGZvciAoOyBp
dGVyICE9IGVuZDsgKytpdGVyKQogICAgICAgICAgICAgb3V0LmFwcGVuZChieXRlY29kZU9mZnNl
dCArIGl0ZXItPnZhbHVlLmJyYW5jaE9mZnNldCk7CiAgICAgICAgIG91dC5hcHBlbmQoYnl0ZWNv
ZGVPZmZzZXQgKyBjdXJyZW50WzJdLnUub3BlcmFuZCk7CkBAIC04MiwxMyArODIsMTkgQEAgc3Rh
dGljIHZvaWQgZ2V0SnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVC
bG9jaywgSW50ZXJwcmV0ZXIqIGkKICAgICB9CiB9CiAKLXZvaWQgY29tcHV0ZVByZWNpc2VKdW1w
VGFyZ2V0cyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgVmVjdG9yPHVuc2lnbmVkLCAzMj4mIG91dCkK
K2VudW0gY2xhc3MgQ29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0c01vZGUgeworICAgIEZvbGxvd0Nv
ZGVCbG9ja0NsYWltLAorICAgIEZvcmNlQ29tcHV0ZSwKK307CisKK3RlbXBsYXRlPENvbXB1dGVQ
cmVjaXNlSnVtcFRhcmdldHNNb2RlIE1vZGUsIHR5cGVuYW1lIEJsb2NrLCB0eXBlbmFtZSBJbnN0
cnVjdGlvbiwgc2l6ZV90IHZlY3RvclNpemU+Cit2b2lkIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdl
dHNJbnRlcm5hbChCbG9jayogY29kZUJsb2NrLCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVn
aW4sIHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQsIFZlY3Rvcjx1bnNpZ25lZCwgdmVjdG9yU2l6
ZT4mIG91dCkKIHsKICAgICBBU1NFUlQob3V0LmlzRW1wdHkoKSk7CiAgICAgCiAgICAgLy8gV2Ug
d2lsbCBkZXJpdmUgYSBzdXBlcnNldCBvZiB0aGUganVtcCB0YXJnZXRzIHRoYXQgdGhlIGNvZGUg
YmxvY2sgdGhpbmtzIGl0IGhhcy4KICAgICAvLyBTbywgaWYgdGhlIGNvZGUgYmxvY2sgY2xhaW1z
IHRoZXJlIGFyZSBub25lLCB0aGVuIHdlIGFyZSBkb25lLgotICAgIGlmICghY29kZUJsb2NrLT5u
dW1iZXJPZkp1bXBUYXJnZXRzKCkpCisgICAgaWYgKE1vZGUgPT0gQ29tcHV0ZVByZWNpc2VKdW1w
VGFyZ2V0c01vZGU6OkZvbGxvd0NvZGVCbG9ja0NsYWltICYmICFjb2RlQmxvY2stPm51bWJlck9m
SnVtcFRhcmdldHMoKSkKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIGZvciAodW5zaWduZWQg
aSA9IGNvZGVCbG9jay0+bnVtYmVyT2ZFeGNlcHRpb25IYW5kbGVycygpOyBpLS07KSB7CkBAIC05
OCwxMCArMTA0LDggQEAgdm9pZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKENvZGVCbG9jayog
Y29kZUJsb2NrLCBWZWN0b3I8dW5zaWduZWQsIDMyPiYgb3V0KQogICAgIH0KIAogICAgIEludGVy
cHJldGVyKiBpbnRlcnByZXRlciA9IGNvZGVCbG9jay0+dm0oKS0+aW50ZXJwcmV0ZXI7Ci0gICAg
SW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luID0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMo
KS5iZWdpbigpOwotICAgIHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQgPSBjb2RlQmxvY2stPmlu
c3RydWN0aW9ucygpLnNpemUoKTsKICAgICBmb3IgKHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0ID0g
MDsgYnl0ZWNvZGVPZmZzZXQgPCBpbnN0cnVjdGlvbkNvdW50OykgewotICAgICAgICBPcGNvZGVJ
RCBvcGNvZGVJRCA9IGludGVycHJldGVyLT5nZXRPcGNvZGVJRChpbnN0cnVjdGlvbnNCZWdpblti
eXRlY29kZU9mZnNldF0udS5vcGNvZGUpOworICAgICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGlu
dGVycHJldGVyLT5nZXRPcGNvZGVJRChpbnN0cnVjdGlvbnNCZWdpbltieXRlY29kZU9mZnNldF0p
OwogICAgICAgICBnZXRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9jaywgaW50
ZXJwcmV0ZXIsIGluc3RydWN0aW9uc0JlZ2luLCBieXRlY29kZU9mZnNldCwgb3V0KTsKICAgICAg
ICAgYnl0ZWNvZGVPZmZzZXQgKz0gb3Bjb2RlTGVuZ3Roc1tvcGNvZGVJRF07CiAgICAgfQpAQCAt
MTIzLDExICsxMjcsMzQgQEAgdm9pZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKENvZGVCbG9j
ayogY29kZUJsb2NrLCBWZWN0b3I8dW5zaWduZWQsIDMyPiYgb3V0KQogICAgIG91dC5zaHJpbmtU
b0ZpdCgpOwogfQogCi12b2lkIGZpbmRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVC
bG9jayogY29kZUJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgVmVjdG9yPHVuc2lnbmVk
LCAxPiYgb3V0KQordm9pZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKENvZGVCbG9jayogY29k
ZUJsb2NrLCBWZWN0b3I8dW5zaWduZWQsIDMyPiYgb3V0KQogewotICAgIEludGVycHJldGVyKiBp
bnRlcnByZXRlciA9IGNvZGVCbG9jay0+dm0oKS0+aW50ZXJwcmV0ZXI7Ci0gICAgSW5zdHJ1Y3Rp
b24qIGluc3RydWN0aW9uc0JlZ2luID0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigp
OwotICAgIGdldEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoY29kZUJsb2NrLCBpbnRlcnBy
ZXRlciwgaW5zdHJ1Y3Rpb25zQmVnaW4sIGJ5dGVjb2RlT2Zmc2V0LCBvdXQpOworICAgIGNvbXB1
dGVQcmVjaXNlSnVtcFRhcmdldHNJbnRlcm5hbDxDb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzTW9k
ZTo6Rm9sbG93Q29kZUJsb2NrQ2xhaW0+KGNvZGVCbG9jaywgY29kZUJsb2NrLT5pbnN0cnVjdGlv
bnMoKS5iZWdpbigpLCBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLnNpemUoKSwgb3V0KTsKK30K
Kwordm9pZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKENvZGVCbG9jayogY29kZUJsb2NrLCBJ
bnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQs
IFZlY3Rvcjx1bnNpZ25lZCwgMzI+JiBvdXQpCit7CisgICAgY29tcHV0ZVByZWNpc2VKdW1wVGFy
Z2V0c0ludGVybmFsPENvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHNNb2RlOjpGb2xsb3dDb2RlQmxv
Y2tDbGFpbT4oY29kZUJsb2NrLCBpbnN0cnVjdGlvbnNCZWdpbiwgaW5zdHJ1Y3Rpb25Db3VudCwg
b3V0KTsKK30KKwordm9pZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKFVubGlua2VkQ29kZUJs
b2NrKiBjb2RlQmxvY2ssIFVubGlua2VkSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1
bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50LCBWZWN0b3I8dW5zaWduZWQsIDMyPiYgb3V0KQorewor
ICAgIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHNJbnRlcm5hbDxDb21wdXRlUHJlY2lzZUp1bXBU
YXJnZXRzTW9kZTo6Rm9sbG93Q29kZUJsb2NrQ2xhaW0+KGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb25z
QmVnaW4sIGluc3RydWN0aW9uQ291bnQsIG91dCk7Cit9CisKK3ZvaWQgcmVjb21wdXRlUHJlY2lz
ZUp1bXBUYXJnZXRzKFVubGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFVubGlua2VkSW5zdHJ1
Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50LCBWZWN0
b3I8dW5zaWduZWQ+JiBvdXQpCit7CisgICAgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0c0ludGVy
bmFsPENvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHNNb2RlOjpGb3JjZUNvbXB1dGU+KGNvZGVCbG9j
aywgaW5zdHJ1Y3Rpb25zQmVnaW4sIGluc3RydWN0aW9uQ291bnQsIG91dCk7Cit9CisKK3ZvaWQg
ZmluZEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIElu
c3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIFZl
Y3Rvcjx1bnNpZ25lZCwgMT4mIG91dCkKK3sKKyAgICBnZXRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2Rl
T2Zmc2V0KGNvZGVCbG9jaywgY29kZUJsb2NrLT52bSgpLT5pbnRlcnByZXRlciwgaW5zdHJ1Y3Rp
b25zQmVnaW4sIGJ5dGVjb2RlT2Zmc2V0LCBvdXQpOworfQorCit2b2lkIGZpbmRKdW1wVGFyZ2V0
c0ZvckJ5dGVjb2RlT2Zmc2V0KFVubGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFVubGlua2Vk
SW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwg
VmVjdG9yPHVuc2lnbmVkLCAxPiYgb3V0KQoreworICAgIGdldEp1bXBUYXJnZXRzRm9yQnl0ZWNv
ZGVPZmZzZXQoY29kZUJsb2NrLCBjb2RlQmxvY2stPnZtKCktPmludGVycHJldGVyLCBpbnN0cnVj
dGlvbnNCZWdpbiwgYnl0ZWNvZGVPZmZzZXQsIG91dCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpT
QwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1w
VGFyZ2V0cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFy
Z2V0cy5oCmluZGV4IDg1MjQxM2Q3N2I3OTg5ODRiMjdjZWYwZWQ2MmJjOTRjNjg5ZTIxMmMuLmRi
OWJkMzgzYjhhYzQ1NTdkMzI2NzE3YjcyZDRiMGY1MGIxZDE4MzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmgKQEAgLTMwLDEw
ICszMCwxOCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorY2xhc3MgVW5saW5rZWRDb2RlQmxvY2s7
CitzdHJ1Y3QgVW5saW5rZWRJbnN0cnVjdGlvbjsKKwogLy8gUmV0dXJuIGEgc29ydGVkIGxpc3Qg
b2YgYnl0ZWNvZGUgaW5kZXggdGhhdCBhcmUgdGhlIGRlc3RpbmF0aW9uIG9mIGEganVtcC4KIHZv
aWQgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhDb2RlQmxvY2sqLCBWZWN0b3I8dW5zaWduZWQs
IDMyPiYgb3V0KTsKK3ZvaWQgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhDb2RlQmxvY2sqLCBJ
bnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQs
IFZlY3Rvcjx1bnNpZ25lZCwgMzI+JiBvdXQpOwordm9pZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJn
ZXRzKFVubGlua2VkQ29kZUJsb2NrKiwgVW5saW5rZWRJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25z
QmVnaW4sIHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQsIFZlY3Rvcjx1bnNpZ25lZCwgMzI+JiBv
dXQpOworCit2b2lkIHJlY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhVbmxpbmtlZENvZGVCbG9j
ayosIFVubGlua2VkSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBpbnN0
cnVjdGlvbkNvdW50LCBWZWN0b3I8dW5zaWduZWQ+JiBvdXQpOwogCi12b2lkIGZpbmRKdW1wVGFy
Z2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayosIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0
LCBWZWN0b3I8dW5zaWduZWQsIDE+JiBvdXQpOwordm9pZCBmaW5kSnVtcFRhcmdldHNGb3JCeXRl
Y29kZU9mZnNldChDb2RlQmxvY2sqLCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVu
c2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBWZWN0b3I8dW5zaWduZWQsIDE+JiBvdXQpOwordm9pZCBm
aW5kSnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChVbmxpbmtlZENvZGVCbG9jayosIFVubGlu
a2VkSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBieXRlY29kZU9mZnNl
dCwgVmVjdG9yPHVuc2lnbmVkLCAxPiYgb3V0KTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9j
ay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2su
Y3BwCmluZGV4IDAwNWRmZjhiZmMyYzUwNDhjNTAzY2U2MDI5YmJkMjM4MzA2YTE5NTQuLmE1ZWNm
NTFlMWU3N2ViMjk5YWFiMTZhMDkwOWE0NjE2MjM1ZDA1NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcApAQCAtMjgsNiAr
MjgsNyBAQAogI2luY2x1ZGUgIlVubGlua2VkQ29kZUJsb2NrLmgiCiAKICNpbmNsdWRlICJCeXRl
Y29kZUdlbmVyYXRvci5oIgorI2luY2x1ZGUgIkJ5dGVjb2RlUmV3cml0ZXIuaCIKICNpbmNsdWRl
ICJDbGFzc0luZm8uaCIKICNpbmNsdWRlICJDb2RlQ2FjaGUuaCIKICNpbmNsdWRlICJFeGVjdXRh
YmxlLmgiCkBAIC0zNiw2ICszNyw3IEBACiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIKICNpbmNsdWRl
ICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiUGFyc2VyLmgiCisjaW5jbHVkZSAiUHJlY2lzZUp1
bXBUYXJnZXRzLmgiCiAjaW5jbHVkZSAiU291cmNlUHJvdmlkZXIuaCIKICNpbmNsdWRlICJTdHJ1
Y3R1cmUuaCIKICNpbmNsdWRlICJTeW1ib2xUYWJsZS5oIgpAQCAtMzY3LDUgKzM2OSwxMTEgQEAg
Y29uc3QgVW5saW5rZWRJbnN0cnVjdGlvblN0cmVhbSYgVW5saW5rZWRDb2RlQmxvY2s6Omluc3Ry
dWN0aW9ucygpIGNvbnN0CiAgICAgcmV0dXJuICptX3VubGlua2VkSW5zdHJ1Y3Rpb25zOwogfQog
CitVbmxpbmtlZEhhbmRsZXJJbmZvKiBVbmxpbmtlZENvZGVCbG9jazo6aGFuZGxlckZvckJ5dGVj
b2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBSZXF1aXJlZEhhbmRsZXIgcmVxdWly
ZWRIYW5kbGVyKQoreworICAgIHJldHVybiBoYW5kbGVyRm9ySW5kZXgoYnl0ZWNvZGVPZmZzZXQs
IHJlcXVpcmVkSGFuZGxlcik7Cit9CisKK1VubGlua2VkSGFuZGxlckluZm8qIFVubGlua2VkQ29k
ZUJsb2NrOjpoYW5kbGVyRm9ySW5kZXgodW5zaWduZWQgaW5kZXgsIFJlcXVpcmVkSGFuZGxlciBy
ZXF1aXJlZEhhbmRsZXIpCit7CisgICAgaWYgKCFtX3JhcmVEYXRhKQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICByZXR1cm4gVW5saW5rZWRIYW5kbGVySW5mbzo6aGFuZGxlckZvckluZGV4
KG1fcmFyZURhdGEtPm1fZXhjZXB0aW9uSGFuZGxlcnMsIGluZGV4LCByZXF1aXJlZEhhbmRsZXIp
OworfQorCit2b2lkIFVubGlua2VkQ29kZUJsb2NrOjphcHBseU1vZGlmaWNhdGlvbihCeXRlY29k
ZVJld3JpdGVyJiBpbnNlcnRpb25TZXQpCit7CisgICAgLy8gQmVmb3JlIGFwcGx5aW5nIHRoZSBj
aGFuZ2VzLCB3ZSBhZGp1c3QgdGhlIGp1bXBzIGJhc2VkIG9uIHRoZSBvcmlnaW5hbCBieXRlY29k
ZSBvZmZzZXQsIHRoZSBvZmZzZXQgdG8gdGhlIGp1bXAgdGFyZ2V0LCBhbmQKKyAgICAvLyB0aGUg
aW5zZXJ0aW9uIGluZm9ybWF0aW9uLgorCisgICAgQnl0ZWNvZGVHcmFwaDxVbmxpbmtlZENvZGVC
bG9jaz4mIGdyYXBoID0gaW5zZXJ0aW9uU2V0LmdyYXBoKCk7CisgICAgVW5saW5rZWRJbnN0cnVj
dGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4gPSBncmFwaC5pbnN0cnVjdGlvbnMoKS5iZWdpbigpOwor
ICAgIGZvciAoaW50IGJ5dGVjb2RlT2Zmc2V0ID0gMCwgaW5zdHJ1Y3Rpb25Db3VudCA9IGdyYXBo
Lmluc3RydWN0aW9ucygpLnNpemUoKTsgYnl0ZWNvZGVPZmZzZXQgPCBpbnN0cnVjdGlvbkNvdW50
OykgeworICAgICAgICBVbmxpbmtlZEluc3RydWN0aW9uKiBjdXJyZW50ID0gaW5zdHJ1Y3Rpb25z
QmVnaW4gKyBieXRlY29kZU9mZnNldDsKKyAgICAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBjdXJy
ZW50WzBdLnUub3Bjb2RlOworCisgICAgICAgIHN3aXRjaCAob3Bjb2RlSUQpIHsKKyAgICAgICAg
Y2FzZSBvcF9qbXA6CisgICAgICAgICAgICBjdXJyZW50WzFdLnUub3BlcmFuZCA9IGluc2VydGlv
blNldC5hZGp1c3RPZmZzZXQoYnl0ZWNvZGVPZmZzZXQsIGJ5dGVjb2RlT2Zmc2V0ICsgY3VycmVu
dFsxXS51Lm9wZXJhbmQpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBvcF9q
dHJ1ZToKKyAgICAgICAgY2FzZSBvcF9qZmFsc2U6CisgICAgICAgIGNhc2Ugb3BfamVxX251bGw6
CisgICAgICAgIGNhc2Ugb3Bfam5lcV9udWxsOgorICAgICAgICAgICAgY3VycmVudFsyXS51Lm9w
ZXJhbmQgPSBpbnNlcnRpb25TZXQuYWRqdXN0T2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0LCBieXRlY29k
ZU9mZnNldCArIGN1cnJlbnRbMl0udS5vcGVyYW5kKTsKKyAgICAgICAgICAgIGJyZWFrOworCisg
ICAgICAgIGNhc2Ugb3Bfam5lcV9wdHI6CisgICAgICAgIGNhc2Ugb3Bfamxlc3M6CisgICAgICAg
IGNhc2Ugb3Bfamxlc3NlcToKKyAgICAgICAgY2FzZSBvcF9qZ3JlYXRlcjoKKyAgICAgICAgY2Fz
ZSBvcF9qZ3JlYXRlcmVxOgorICAgICAgICBjYXNlIG9wX2pubGVzczoKKyAgICAgICAgY2FzZSBv
cF9qbmxlc3NlcToKKyAgICAgICAgY2FzZSBvcF9qbmdyZWF0ZXI6CisgICAgICAgIGNhc2Ugb3Bf
am5ncmVhdGVyZXE6CisgICAgICAgICAgICBjdXJyZW50WzNdLnUub3BlcmFuZCA9IGluc2VydGlv
blNldC5hZGp1c3RPZmZzZXQoYnl0ZWNvZGVPZmZzZXQsIGJ5dGVjb2RlT2Zmc2V0ICsgY3VycmVu
dFszXS51Lm9wZXJhbmQpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBvcF9z
d2l0Y2hfaW1tOgorICAgICAgICBjYXNlIG9wX3N3aXRjaF9jaGFyOiB7CisgICAgICAgICAgICBh
dXRvJiB0YWJsZSA9IHN3aXRjaEp1bXBUYWJsZShjdXJyZW50WzFdLnUub3BlcmFuZCk7CisgICAg
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSB0YWJsZS5icmFuY2hPZmZzZXRzLnNpemUoKTsgaS0t
OykKKyAgICAgICAgICAgICAgICB0YWJsZS5icmFuY2hPZmZzZXRzW2ldID0gaW5zZXJ0aW9uU2V0
LmFkanVzdE9mZnNldChieXRlY29kZU9mZnNldCwgYnl0ZWNvZGVPZmZzZXQgKyB0YWJsZS5icmFu
Y2hPZmZzZXRzW2ldKTsKKyAgICAgICAgICAgIGN1cnJlbnRbMl0udS5vcGVyYW5kID0gaW5zZXJ0
aW9uU2V0LmFkanVzdE9mZnNldChieXRlY29kZU9mZnNldCwgYnl0ZWNvZGVPZmZzZXQgKyBjdXJy
ZW50WzJdLnUub3BlcmFuZCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAg
ICAgIGNhc2Ugb3Bfc3dpdGNoX3N0cmluZzogeworICAgICAgICAgICAgYXV0byYgdGFibGUgPSBz
dHJpbmdTd2l0Y2hKdW1wVGFibGUoY3VycmVudFsxXS51Lm9wZXJhbmQpOworICAgICAgICAgICAg
YXV0byBpdGVyID0gdGFibGUub2Zmc2V0VGFibGUuYmVnaW4oKTsKKyAgICAgICAgICAgIGF1dG8g
ZW5kID0gdGFibGUub2Zmc2V0VGFibGUuZW5kKCk7CisgICAgICAgICAgICBmb3IgKDsgaXRlciAh
PSBlbmQ7ICsraXRlcikKKyAgICAgICAgICAgICAgICBpdGVyLT52YWx1ZS5icmFuY2hPZmZzZXQg
PSBpbnNlcnRpb25TZXQuYWRqdXN0T2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0LCBieXRlY29kZU9mZnNl
dCArIGl0ZXItPnZhbHVlLmJyYW5jaE9mZnNldCk7CisgICAgICAgICAgICBjdXJyZW50WzJdLnUu
b3BlcmFuZCA9IGluc2VydGlvblNldC5hZGp1c3RPZmZzZXQoYnl0ZWNvZGVPZmZzZXQsIGJ5dGVj
b2RlT2Zmc2V0ICsgY3VycmVudFsyXS51Lm9wZXJhbmQpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KKworICAgICAgICBieXRlY29kZU9mZnNldCArPSBvcGNvZGVMZW5ndGgob3Bjb2RlSUQpOwor
ICAgIH0KKworICAgIC8vIFRoZW4sIGV4Y2VwdGlvbiBoYW5kbGVycyBzaG91bGQgYmUgYWRqdXN0
ZWQuCisgICAgaWYgKG1fcmFyZURhdGEpIHsKKyAgICAgICAgZm9yIChVbmxpbmtlZEhhbmRsZXJJ
bmZvJiBoYW5kbGVyIDogbV9yYXJlRGF0YS0+bV9leGNlcHRpb25IYW5kbGVycykgeworICAgICAg
ICAgICAgaGFuZGxlci50YXJnZXQgPSBpbnNlcnRpb25TZXQuYWRqdXN0T2Zmc2V0KDAsIGhhbmRs
ZXIudGFyZ2V0KTsKKyAgICAgICAgICAgIGhhbmRsZXIuc3RhcnQgPSBpbnNlcnRpb25TZXQuYWRq
dXN0T2Zmc2V0KDAsIGhhbmRsZXIuc3RhcnQpOworICAgICAgICAgICAgaGFuZGxlci5lbmQgPSBp
bnNlcnRpb25TZXQuYWRqdXN0T2Zmc2V0KDAsIGhhbmRsZXIuZW5kKTsKKyAgICAgICAgfQorCisg
ICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9yYXJlRGF0YS0+bV9vcFByb2ZpbGVDb250
cm9sRmxvd0J5dGVjb2RlT2Zmc2V0cy5zaXplKCk7ICsraSkKKyAgICAgICAgICAgIG1fcmFyZURh
dGEtPm1fb3BQcm9maWxlQ29udHJvbEZsb3dCeXRlY29kZU9mZnNldHNbaV0gPSBpbnNlcnRpb25T
ZXQuYWRqdXN0T2Zmc2V0KDAsIG1fcmFyZURhdGEtPm1fb3BQcm9maWxlQ29udHJvbEZsb3dCeXRl
Y29kZU9mZnNldHNbaV0pOworCisgICAgICAgIGlmICghbV9yYXJlRGF0YS0+bV90eXBlUHJvZmls
ZXJJbmZvTWFwLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgSGFzaE1hcDx1bnNpZ25lZCwgUmFy
ZURhdGE6OlR5cGVQcm9maWxlckV4cHJlc3Npb25SYW5nZT4gYWRqdXN0ZWRUeXBlUHJvZmlsZXJJ
bmZvTWFwOworICAgICAgICAgICAgZm9yIChhdXRvJiBlbnRyeSA6IG1fcmFyZURhdGEtPm1fdHlw
ZVByb2ZpbGVySW5mb01hcCkKKyAgICAgICAgICAgICAgICBhZGp1c3RlZFR5cGVQcm9maWxlcklu
Zm9NYXAuc2V0KGluc2VydGlvblNldC5hZGp1c3RPZmZzZXQoMCwgZW50cnkua2V5KSwgZW50cnku
dmFsdWUpOworICAgICAgICAgICAgbV9yYXJlRGF0YS0+bV90eXBlUHJvZmlsZXJJbmZvTWFwLnN3
YXAoYWRqdXN0ZWRUeXBlUHJvZmlsZXJJbmZvTWFwKTsKKyAgICAgICAgfQorICAgIH0KKworICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9ucy5zaXpl
KCk7ICsraSkKKyAgICAgICAgbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uc1tpXSA9IGluc2Vy
dGlvblNldC5hZGp1c3RPZmZzZXQoMCwgbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uc1tpXSk7
CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZXhwcmVzc2lvbkluZm8uc2l6ZSgpOyAr
K2kpCisgICAgICAgIG1fZXhwcmVzc2lvbkluZm9baV0uaW5zdHJ1Y3Rpb25PZmZzZXQgPSBpbnNl
cnRpb25TZXQuYWRqdXN0T2Zmc2V0KDAsIG1fZXhwcmVzc2lvbkluZm9baV0uaW5zdHJ1Y3Rpb25P
ZmZzZXQpOworCisgICAgLy8gVGhlbiwgbW9kaWZ5IHRoZSB1bmxpbmtlZCBpbnN0cnVjdGlvbnMu
CisgICAgaW5zZXJ0aW9uU2V0LmFwcGx5TW9kaWZpY2F0aW9uKCk7CisKKyAgICAvLyBBbmQgcmVj
b21wdXRlIHRoZSBqdW1wIHRhcmdldCBiYXNlZCBvbiB0aGUgbW9kaWZpZWQgdW5saW5rZWQgaW5z
dHJ1Y3Rpb25zLgorICAgIG1fanVtcFRhcmdldHMuY2xlYXIoKTsKKyAgICByZWNvbXB1dGVQcmVj
aXNlSnVtcFRhcmdldHModGhpcywgZ3JhcGguaW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSwgZ3JhcGgu
aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpLCBtX2p1bXBUYXJnZXRzKTsKK30KKwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCmluZGV4
IGI0ZDJjZjQ4ZTQ2MzhkMzczYjE2NzIwZjc2ZTNjZmY5N2RmMDE1MGQuLjcyZDE2OTYxMWFhOTM1
MTc4YzQ4MTBlZWQyZDU5YTgzMThmZjYxYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCkBAIC00NSw2ICs0NSw4IEBACiAKIG5h
bWVzcGFjZSBKU0MgewogCitjbGFzcyBCeXRlY29kZVJld3JpdGVyOworY2xhc3MgRGVidWdnZXI7
CiBjbGFzcyBGdW5jdGlvbk1ldGFkYXRhTm9kZTsKIGNsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZTsK
IGNsYXNzIEpTU2NvcGU7CkBAIC02NSw3ICs2NywxMSBAQCB0eXBlZGVmIHVuc2lnbmVkIFVubGlu
a2VkT2JqZWN0QWxsb2NhdGlvblByb2ZpbGU7CiB0eXBlZGVmIHVuc2lnbmVkIFVubGlua2VkTExJ
bnRDYWxsTGlua0luZm87CiAKIHN0cnVjdCBVbmxpbmtlZFN0cmluZ0p1bXBUYWJsZSB7Ci0gICAg
dHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxTdHJpbmdJbXBsPiwgaW50MzJfdD4gU3RyaW5nT2Zmc2V0
VGFibGU7CisgICAgc3RydWN0IE9mZnNldExvY2F0aW9uIHsKKyAgICAgICAgaW50MzJfdCBicmFu
Y2hPZmZzZXQ7CisgICAgfTsKKworICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8U3RyaW5nSW1w
bD4sIE9mZnNldExvY2F0aW9uPiBTdHJpbmdPZmZzZXRUYWJsZTsKICAgICBTdHJpbmdPZmZzZXRU
YWJsZSBvZmZzZXRUYWJsZTsKIAogICAgIGlubGluZSBpbnQzMl90IG9mZnNldEZvclZhbHVlKFN0
cmluZ0ltcGwqIHZhbHVlLCBpbnQzMl90IGRlZmF1bHRPZmZzZXQpCkBAIC03NCw3ICs4MCw3IEBA
IHN0cnVjdCBVbmxpbmtlZFN0cmluZ0p1bXBUYWJsZSB7CiAgICAgICAgIFN0cmluZ09mZnNldFRh
YmxlOjpjb25zdF9pdGVyYXRvciBsb2MgPSBvZmZzZXRUYWJsZS5maW5kKHZhbHVlKTsKICAgICAg
ICAgaWYgKGxvYyA9PSBlbmQpCiAgICAgICAgICAgICByZXR1cm4gZGVmYXVsdE9mZnNldDsKLSAg
ICAgICAgcmV0dXJuIGxvYy0+dmFsdWU7CisgICAgICAgIHJldHVybiBsb2MtPnZhbHVlLmJyYW5j
aE9mZnNldDsKICAgICB9CiAKIH07CkBAIC0xMDIsNiArMTA4LDggQEAgc3RydWN0IFVubGlua2Vk
SW5zdHJ1Y3Rpb24gewogICAgIH0gdTsKIH07CiAKK2NsYXNzIEJ5dGVjb2RlR2VuZXJhdG9yaWZp
Y2F0aW9uOworCiBjbGFzcyBVbmxpbmtlZENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogcHVi
bGljOgogICAgIHR5cGVkZWYgSlNDZWxsIEJhc2U7CkBAIC0xMTEsNiArMTE5LDkgQEAgY2xhc3Mg
VW5saW5rZWRDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKIAogICAgIGVudW0geyBDYWxsRnVu
Y3Rpb24sIEFwcGx5RnVuY3Rpb24gfTsKIAorICAgIHR5cGVkZWYgVW5saW5rZWRJbnN0cnVjdGlv
biBJbnN0cnVjdGlvbjsKKyAgICB0eXBlZGVmIFZlY3RvcjxVbmxpbmtlZEluc3RydWN0aW9uLCAw
LCBVbnNhZmVWZWN0b3JPdmVyZmxvdz4gVW5wYWNrZWRJbnN0cnVjdGlvbnM7CisKICAgICBib29s
IGlzQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2lzQ29uc3RydWN0b3I7IH0KICAgICBi
b29sIGlzU3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNTdHJpY3RNb2RlOyB9CiAgICAg
Ym9vbCB1c2VzRXZhbCgpIGNvbnN0IHsgcmV0dXJuIG1fdXNlc0V2YWw7IH0KQEAgLTIwMCw2ICsy
MTEsOSBAQCBjbGFzcyBVbmxpbmtlZENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgIHVu
c2lnbmVkIGp1bXBUYXJnZXQoaW50IGluZGV4KSBjb25zdCB7IHJldHVybiBtX2p1bXBUYXJnZXRz
W2luZGV4XTsgfQogICAgIHVuc2lnbmVkIGxhc3RKdW1wVGFyZ2V0KCkgY29uc3QgeyByZXR1cm4g
bV9qdW1wVGFyZ2V0cy5sYXN0KCk7IH0KIAorICAgIFVubGlua2VkSGFuZGxlckluZm8qIGhhbmRs
ZXJGb3JCeXRlY29kZU9mZnNldCh1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgUmVxdWlyZWRIYW5k
bGVyID0gUmVxdWlyZWRIYW5kbGVyOjpBbnlIYW5kbGVyKTsKKyAgICBVbmxpbmtlZEhhbmRsZXJJ
bmZvKiBoYW5kbGVyRm9ySW5kZXgodW5zaWduZWQsIFJlcXVpcmVkSGFuZGxlciA9IFJlcXVpcmVk
SGFuZGxlcjo6QW55SGFuZGxlcik7CisKICAgICBib29sIGlzQnVpbHRpbkZ1bmN0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9pc0J1aWx0aW5GdW5jdGlvbjsgfQogCiAgICAgQ29uc3RydWN0b3JLaW5k
IGNvbnN0cnVjdG9yS2luZCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PENvbnN0cnVjdG9y
S2luZD4obV9jb25zdHJ1Y3RvcktpbmQpOyB9CkBAIC0yMzAsNiArMjQ0LDggQEAgY2xhc3MgVW5s
aW5rZWRDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICB2b2lkIHNldEluc3RydWN0aW9u
cyhzdGQ6OnVuaXF1ZV9wdHI8VW5saW5rZWRJbnN0cnVjdGlvblN0cmVhbT4pOwogICAgIGNvbnN0
IFVubGlua2VkSW5zdHJ1Y3Rpb25TdHJlYW0mIGluc3RydWN0aW9ucygpIGNvbnN0OwogCisgICAg
aW50IG51bUNhbGxlZUxvY2FscygpIGNvbnN0IHsgcmV0dXJuIG1fbnVtQ2FsbGVlTG9jYWxzOyB9
CisKICAgICBpbnQgbV9udW1WYXJzOwogICAgIGludCBtX251bUNhcHR1cmVkVmFyczsKICAgICBp
bnQgbV9udW1DYWxsZWVMb2NhbHM7CkBAIC0zODEsNiArMzk3LDggQEAgY2xhc3MgVW5saW5rZWRD
b2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICB9CiAKIHByaXZhdGU6CisgICAgZnJpZW5k
IGNsYXNzIEJ5dGVjb2RlUmV3cml0ZXI7CisgICAgdm9pZCBhcHBseU1vZGlmaWNhdGlvbihCeXRl
Y29kZVJld3JpdGVyJik7CiAKICAgICB2b2lkIGNyZWF0ZVJhcmVEYXRhSWZOZWNlc3NhcnkoKQog
ICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WaXJ0dWFs
UmVnaXN0ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WaXJ0dWFsUmVnaXN0
ZXIuaAppbmRleCBkM2RmNDA5NTdiNTE3NTY4ZTNhZWZiZTNhMWE2MDlmZDg3OGJhYWMzLi5kYWY1
MDlmNmM3ZDExNWU0NWJjYjEwN2M2N2QzZDM4ZDgwNGYyODk0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmlydHVhbFJlZ2lzdGVyLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZpcnR1YWxSZWdpc3Rlci5oCkBAIC0yNiw4ICsyNiw4IEBA
CiAjaWZuZGVmIFZpcnR1YWxSZWdpc3Rlcl9oCiAjZGVmaW5lIFZpcnR1YWxSZWdpc3Rlcl9oCiAK
KyNpbmNsdWRlICJCeXRlY29kZUNvbnZlbnRpb25zLmgiCiAjaW5jbHVkZSAiQ2FsbEZyYW1lLmgi
Ci0KICNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC0x
MDMsNyArMTAzLDcgQEAgY2xhc3MgVmlydHVhbFJlZ2lzdGVyIHsKIAogcHJpdmF0ZToKICAgICBz
dGF0aWMgY29uc3QgaW50IHNfaW52YWxpZFZpcnR1YWxSZWdpc3RlciA9IDB4M2ZmZmZmZmY7Ci0g
ICAgc3RhdGljIGNvbnN0IGludCBzX2ZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4ID0gMHg0MDAw
MDAwMDsKKyAgICBzdGF0aWMgY29uc3QgaW50IHNfZmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgg
PSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleDsKIAogICAgIHN0YXRpYyBpbnQgbG9jYWxUb09w
ZXJhbmQoaW50IGxvY2FsKSB7IHJldHVybiAtMSAtIGxvY2FsOyB9CiAgICAgc3RhdGljIGludCBv
cGVyYW5kVG9Mb2NhbChpbnQgb3BlcmFuZCkgeyByZXR1cm4gLTEgLSBvcGVyYW5kOyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuY3BwCmluZGV4IDMxMmQ4OWY3YWRjNzNmMDdkYzUxNzliNzVlNTc1YzU1OTAyNjZkYjgu
LjUzM2VmMDg5OGI3N2RiZGIzNmU0YTI1M2QwNzRkZDJkNDcyMjAxOGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3Iu
Y3BwCkBAIC0zMyw2ICszMyw3IEBACiAKICNpbmNsdWRlICJBcml0aFByb2ZpbGUuaCIKICNpbmNs
dWRlICJCdWlsdGluRXhlY3V0YWJsZXMuaCIKKyNpbmNsdWRlICJCeXRlY29kZUdlbmVyYXRvcmlm
aWNhdGlvbi5oIgogI2luY2x1ZGUgIkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5oIgogI2luY2x1
ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgpAQCAtMTU1LDYgKzE1
NiwxMCBAQCBQYXJzZXJFcnJvciBCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUoKQogICAgICAg
ICBtX2NvZGVCbG9jay0+YWRkRXhjZXB0aW9uSGFuZGxlcihpbmZvKTsKICAgICB9CiAgICAgCisK
KyAgICBpZiAobV9jb2RlQmxvY2stPnBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6R2Vu
ZXJhdG9yQm9keU1vZGUpCisgICAgICAgIHBlcmZvcm1HZW5lcmF0b3JpZmljYXRpb24obV9jb2Rl
QmxvY2suZ2V0KCksIG1faW5zdHJ1Y3Rpb25zLCBtX2dlbmVyYXRvckZyYW1lU3ltYm9sVGFibGUu
Z2V0KCksIG1fZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZUluZGV4KTsKKwogICAgIG1fY29kZUJs
b2NrLT5zZXRJbnN0cnVjdGlvbnMoc3RkOjptYWtlX3VuaXF1ZTxVbmxpbmtlZEluc3RydWN0aW9u
U3RyZWFtPihtX2luc3RydWN0aW9ucykpOwogCiAgICAgbV9jb2RlQmxvY2stPnNocmlua1RvRml0
KCk7CkBAIC0yNjIsMTAgKzI2NywxNCBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5l
cmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAgIGJv
b2wgc2hvdWxkQ2FwdHVyZUFsbE9mVGhlVGhpbmdzID0gbV9zaG91bGRFbWl0RGVidWdIb29rcyB8
fCBjb2RlQmxvY2stPnVzZXNFdmFsKCk7CiAgICAgYm9vbCBuZWVkc0FyZ3VtZW50cyA9IChmdW5j
dGlvbk5vZGUtPnVzZXNBcmd1bWVudHMoKSB8fCBjb2RlQmxvY2stPnVzZXNFdmFsKCkgfHwgKGZ1
bmN0aW9uTm9kZS0+dXNlc0Fycm93RnVuY3Rpb24oKSAmJiAhY29kZUJsb2NrLT5pc0Fycm93RnVu
Y3Rpb24oKSAmJiBpc0FyZ3VtZW50c1VzZWRJbklubmVyQXJyb3dGdW5jdGlvbigpKSk7CiAKLSAg
ICAvLyBHZW5lcmF0b3IgbmV2ZXIgcHJvdmlkZXMgImFyZ3VtZW50cyIuICJhcmd1bWVudHMiIHJl
ZmVyZW5jZSB3aWxsIGJlIHJlc29sdmVkIGluIGFuIHVwcGVyIGdlbmVyYXRvciBmdW5jdGlvbiBz
Y29wZS4KLSAgICBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yQm9k
eU1vZGUpCisgICAgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckJv
ZHlNb2RlKSB7CisgICAgICAgIC8vIEdlbmVyYXRvciBuZXZlciBwcm92aWRlcyAiYXJndW1lbnRz
Ii4gImFyZ3VtZW50cyIgcmVmZXJlbmNlIHdpbGwgYmUgcmVzb2x2ZWQgaW4gYW4gdXBwZXIgZ2Vu
ZXJhdG9yIGZ1bmN0aW9uIHNjb3BlLgogICAgICAgICBuZWVkc0FyZ3VtZW50cyA9IGZhbHNlOwog
CisgICAgICAgIC8vIEdlbmVyYXRvciB1c2VzIHRoZSB2YXIgc2NvcGUgdG8gc2F2ZSBhbmQgcmVz
dW1lIGl0cyB2YXJpYWJsZXMuIFNvIHRoZSBsZXhpY2FsIHNjb3BlIGlzIGFsd2F5cyBpbnN0YW50
aWF0ZWQuCisgICAgICAgIHNob3VsZENhcHR1cmVTb21lT2ZUaGVUaGluZ3MgPSB0cnVlOworICAg
IH0KKwogICAgIGlmIChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JXcmFw
cGVyRnVuY3Rpb25Nb2RlICYmIG5lZWRzQXJndW1lbnRzKSB7CiAgICAgICAgIC8vIEdlbmVyYXRv
ciBkb2VzIG5vdCBwcm92aWRlICJhcmd1bWVudHMiLiBJbnN0ZWFkLCB3cmFwcGluZyBHZW5lcmF0
b3JGdW5jdGlvbiBwcm92aWRlcyAiYXJndW1lbnRzIi4KICAgICAgICAgLy8gVGhpcyBpcyBiZWNh
dXNlIGFyZ3VtZW50cyBvZiBhIGdlbmVyYXRvciBzaG91bGQgYmUgZXZhbHVhdGVkIGJlZm9yZSBz
dGFydGluZyBpdC4KQEAgLTI3NCw3ICsyODMsNyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNv
ZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQog
ICAgICAgICAvLyAgICBmdW5jdGlvbiAqZ2VuKGEsIGIgPSBoZWxsbygpKQogICAgICAgICAvLyAg
ICB7CiAgICAgICAgIC8vICAgICAgICByZXR1cm4gewotICAgICAgICAvLyAgICAgICAgICAgIEBn
ZW5lcmF0b3JOZXh0OiBmdW5jdGlvbiAoQGdlbmVyYXRvciwgQGdlbmVyYXRvclN0YXRlLCBAZ2Vu
ZXJhdG9yVmFsdWUsIEBnZW5lcmF0b3JSZXN1bWVNb2RlKQorICAgICAgICAvLyAgICAgICAgICAg
IEBnZW5lcmF0b3JOZXh0OiBmdW5jdGlvbiAoQGdlbmVyYXRvciwgQGdlbmVyYXRvclN0YXRlLCBA
Z2VuZXJhdG9yVmFsdWUsIEBnZW5lcmF0b3JSZXN1bWVNb2RlLCBAZ2VuZXJhdG9yRnJhbWUpCiAg
ICAgICAgIC8vICAgICAgICAgICAgewogICAgICAgICAvLyAgICAgICAgICAgICAgICBhcmd1bWVu
dHM7ICAvLyBUaGlzIGBhcmd1bWVudHNgIHNob3VsZCByZWZlcmVuY2UgdG8gdGhlIGdlbidzIGFy
Z3VtZW50cy4KICAgICAgICAgLy8gICAgICAgICAgICAgICAgLi4uCkBAIC0zMDMsMjggKzMxMiwx
NyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlv
bk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAgICAgICByZXR1cm4gY2FwdHVyZXModWlk
KSA/IFZhcktpbmQ6OlNjb3BlIDogVmFyS2luZDo6U3RhY2s7CiAgICAgfTsKIAotICAgIGVtaXRF
bnRlcigpOwotCi0gICAgYWxsb2NhdGVBbmRFbWl0U2NvcGUoKTsKLQogICAgIG1fY2FsbGVlUmVn
aXN0ZXIuc2V0SW5kZXgoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlKTsKIAogICAgIGluaXRpYWxpemVQ
YXJhbWV0ZXJzKHBhcmFtZXRlcnMpOwogICAgIEFTU0VSVCghKGlzU2ltcGxlUGFyYW1ldGVyTGlz
dCAmJiBtX3Jlc3RQYXJhbWV0ZXIpKTsKIAotICAgIC8vIEJlZm9yZSBlbWl0dGluZyBhIHNjb3Bl
IGNyZWF0aW9uLCBlbWl0IGEgZ2VuZXJhdG9yIHByb2xvZ3VlIHRoYXQgY29udGFpbnMganVtcCBi
YXNlZCBvbiBhIGdlbmVyYXRvcidzIHN0YXRlLgotICAgIGlmIChwYXJzZU1vZGUgPT0gU291cmNl
UGFyc2VNb2RlOjpHZW5lcmF0b3JCb2R5TW9kZSkgewotICAgICAgICBtX2dlbmVyYXRvclJlZ2lz
dGVyID0gJm1fcGFyYW1ldGVyc1sxXTsKLQotICAgICAgICAvLyBKdW1wIHdpdGggc3dpdGNoX2lt
bSBiYXNlZCBvbiBAZ2VuZXJhdG9yU3RhdGUuIFdlIGRvbid0IHRha2UgdGhlIGNvcm91dGluZSBz
dHlsZWQgZ2VuZXJhdG9yIGltcGxlbWVudGF0aW9uLgotICAgICAgICAvLyBXaGVuIGNhbGxpbmcg
YG5leHQoKWAsIHdlIHdvdWxkIGxpa2UgdG8gZW50ZXIgdGhlIHNhbWUgcHJvbG9ndWUgaW5zdGVh
ZCBvZiBqdW1waW5nIGJhc2VkIG9uIHRoZSBzYXZlZCBpbnN0cnVjdGlvbiBwb2ludGVyLgotICAg
ICAgICAvLyBJdCdzIHN1aXRhbGUgZm9yIGlubGluaW5nLCBiZWNhdXNlIGl0IGp1c3QgaW5saW5l
cyBvbmUgYG5leHRgIGZ1bmN0aW9uIGltcGxlbWVudGF0aW9uLgorICAgIGVtaXRFbnRlcigpOwog
Ci0gICAgICAgIGJlZ2luR2VuZXJhdG9yKGdlbmVyYXRvclN0YXRlUmVnaXN0ZXIoKSk7CisgICAg
aWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckJvZHlNb2RlKQorICAg
ICAgICBtX2dlbmVyYXRvclJlZ2lzdGVyID0gJm1fcGFyYW1ldGVyc1sxXTsKIAotICAgICAgICAv
LyBJbml0aWFsIHN0YXRlLgotICAgICAgICBlbWl0R2VuZXJhdG9yU3RhdGVMYWJlbCgpOwotICAg
IH0KKyAgICBhbGxvY2F0ZUFuZEVtaXRTY29wZSgpOwogCiAgICAgaWYgKGZ1bmN0aW9uTmFtZUlz
SW5TY29wZShmdW5jdGlvbk5vZGUtPmlkZW50KCksIGZ1bmN0aW9uTm9kZS0+ZnVuY3Rpb25Nb2Rl
KCkpKSB7CiAgICAgICAgIEFTU0VSVChwYXJzZU1vZGUgIT0gU291cmNlUGFyc2VNb2RlOjpHZW5l
cmF0b3JCb2R5TW9kZSk7CkBAIC02NDEsNiArNjM5LDE2IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpC
eXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxp
bmtlCiAgICAgICAgICAgICBlbWl0TG9hZE5ld1RhcmdldEZyb21BcnJvd0Z1bmN0aW9uTGV4aWNh
bEVudmlyb25tZW50KCk7CiAgICAgfQogICAgIAorICAgIC8vIFNldCB1cCB0aGUgbGV4aWNhbCBl
bnZpcm9ubWVudCBzY29wZSBhcyB0aGUgZ2VuZXJhdG9yIGZyYW1lLiBXZSBzdG9yZSB0aGUgc2F2
ZWQgYW5kIHJlc3VtZWQgZ2VuZXJhdG9yIHJlZ2lzdGVycyBpbnRvIHRoaXMgc2NvcGUgd2l0aCB0
aGUgc3ltYm9sIGtleXMuCisgICAgLy8gU2luY2UgdGhleSBhcmUgc3ltYm9sIGtleWVkLCB0aGVz
ZSB2YXJpYWJsZXMgY2Fubm90IGJlIHJlYWNoZWQgZnJvbSB0aGUgdXN1YWwgY29kZS4KKyAgICBp
ZiAoU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JCb2R5TW9kZSA9PSBwYXJzZU1vZGUpIHsKKyAg
ICAgICAgQVNTRVJUKG1fbGV4aWNhbEVudmlyb25tZW50UmVnaXN0ZXIpOworICAgICAgICBtX2dl
bmVyYXRvckZyYW1lU3ltYm9sVGFibGUuc2V0KCptX3ZtLCBmdW5jdGlvblN5bWJvbFRhYmxlKTsK
KyAgICAgICAgbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlSW5kZXggPSBzeW1ib2xUYWJsZUNv
bnN0YW50SW5kZXg7CisgICAgICAgIGVtaXRNb3ZlKGdlbmVyYXRvckZyYW1lUmVnaXN0ZXIoKSwg
bV9sZXhpY2FsRW52aXJvbm1lbnRSZWdpc3Rlcik7CisgICAgICAgIGVtaXRQdXRCeUlkKGdlbmVy
YXRvclJlZ2lzdGVyKCksIHByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JG
cmFtZVByaXZhdGVOYW1lKCksIGdlbmVyYXRvckZyYW1lUmVnaXN0ZXIoKSk7CisgICAgfQorCiAg
ICAgYm9vbCBzaG91bGRJbml0aWFsaXplQmxvY2tTY29wZWRGdW5jdGlvbnMgPSBmYWxzZTsgLy8g
V2UgZ2VuZXJhdGUgdG9wLWxldmVsIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucyBpbiA6OmdlbmVyYXRl
KCkuCiAgICAgcHVzaExleGljYWxTY29wZShtX3Njb3BlTm9kZSwgVERaQ2hlY2tPcHRpbWl6YXRp
b246Ok9wdGltaXplLCBOZXN0ZWRTY29wZVR5cGU6OklzTm90TmVzdGVkLCBudWxscHRyLCBzaG91
bGRJbml0aWFsaXplQmxvY2tTY29wZWRGdW5jdGlvbnMpOwogfQpAQCAtMzY3Miw4ICszNjgwLDcg
QEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENvbXBsZXhQb3BTY29wZXMoUmVnaXN0ZXJJ
RCogc2NvcGUsIENvbnRyb2xGbG93Q29udGUKICAgICAgICAgICAgIGlmIChmbGlwVHJpZXMpIHsK
ICAgICAgICAgICAgICAgICB3aGlsZSAobV90cnlDb250ZXh0U3RhY2suc2l6ZSgpICE9IGZpbmFs
bHlDb250ZXh0LnRyeUNvbnRleHRTdGFja1NpemUpIHsKICAgICAgICAgICAgICAgICAgICAgQVNT
RVJUKG1fdHJ5Q29udGV4dFN0YWNrLnNpemUoKSA+IGZpbmFsbHlDb250ZXh0LnRyeUNvbnRleHRT
dGFja1NpemUpOwotICAgICAgICAgICAgICAgICAgICBUcnlDb250ZXh0IGNvbnRleHQgPSBtX3Ry
eUNvbnRleHRTdGFjay5sYXN0KCk7Ci0gICAgICAgICAgICAgICAgICAgIG1fdHJ5Q29udGV4dFN0
YWNrLnJlbW92ZUxhc3QoKTsKKyAgICAgICAgICAgICAgICAgICAgVHJ5Q29udGV4dCBjb250ZXh0
ID0gbV90cnlDb250ZXh0U3RhY2sudGFrZUxhc3QoKTsKICAgICAgICAgICAgICAgICAgICAgVHJ5
UmFuZ2UgcmFuZ2U7CiAgICAgICAgICAgICAgICAgICAgIHJhbmdlLnN0YXJ0ID0gY29udGV4dC5z
dGFydDsKICAgICAgICAgICAgICAgICAgICAgcmFuZ2UuZW5kID0gYmVmb3JlRmluYWxseTsKQEAg
LTM5NTcsNyArMzk2NCw3IEBAIHN0YXRpYyB2b2lkIHByZXBhcmVKdW1wVGFibGVGb3JTdHJpbmdT
d2l0Y2goVW5saW5rZWRTdHJpbmdKdW1wVGFibGUmIGp1bXBUYWJsZSwKICAgICAgICAgCiAgICAg
ICAgIEFTU0VSVChub2Rlc1tpXS0+aXNTdHJpbmcoKSk7CiAgICAgICAgIFN0cmluZ0ltcGwqIGNs
YXVzZSA9IHN0YXRpY19jYXN0PFN0cmluZ05vZGUqPihub2Rlc1tpXSktPnZhbHVlKCkuaW1wbCgp
OwotICAgICAgICBqdW1wVGFibGUub2Zmc2V0VGFibGUuYWRkKGNsYXVzZSwgbGFiZWxzW2ldLT5i
aW5kKHN3aXRjaEFkZHJlc3MsIHN3aXRjaEFkZHJlc3MgKyAzKSk7CisgICAgICAgIGp1bXBUYWJs
ZS5vZmZzZXRUYWJsZS5hZGQoY2xhdXNlLCBVbmxpbmtlZFN0cmluZ0p1bXBUYWJsZTo6T2Zmc2V0
TG9jYXRpb24geyBsYWJlbHNbaV0tPmJpbmQoc3dpdGNoQWRkcmVzcywgc3dpdGNoQWRkcmVzcyAr
IDMpIH0pOwogICAgIH0KIH0KIApAQCAtNDQ1OSwzMSArNDQ2NiwzMyBAQCB2b2lkIEJ5dGVjb2Rl
R2VuZXJhdG9yOjplbWl0UmVxdWlyZU9iamVjdENvZXJjaWJsZShSZWdpc3RlcklEKiB2YWx1ZSwg
Y29uc3QgU3RyaQogdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFlpZWxkUG9pbnQoUmVnaXN0
ZXJJRCogYXJndW1lbnQpCiB7CiAgICAgUmVmUHRyPExhYmVsPiBtZXJnZVBvaW50ID0gbmV3TGFi
ZWwoKTsKLSAgICBzaXplX3QgeWllbGRQb2ludEluZGV4ID0gbV9nZW5lcmF0b3JSZXN1bWVMYWJl
bHMuc2l6ZSgpOwotICAgIGVtaXRHZW5lcmF0b3JTdGF0ZUNoYW5nZSh5aWVsZFBvaW50SW5kZXgp
OwotICAgIC8vIEZpcnN0IHlpZWxkIHBvaW50IGlzIHVzZWQgZm9yIGluaXRpYWwgc2VxdWVuY2Uu
Ci0gICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0geWllbGRQb2ludEluZGV4IC0g
MTsKLSAgICBlbWl0U2F2ZShtZXJnZVBvaW50LmdldCgpLCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXgp
OwotICAgIGVtaXRSZXR1cm4oYXJndW1lbnQpOwotICAgIGVtaXRSZXN1bWUobWVyZ2VQb2ludC5n
ZXQoKSwgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4KTsKLX0KKyAgICB1bnNpZ25lZCB5aWVsZFBvaW50
SW5kZXggPSBtX3lpZWxkUG9pbnRzKys7CisgICAgZW1pdEdlbmVyYXRvclN0YXRlQ2hhbmdlKHlp
ZWxkUG9pbnRJbmRleCArIDEpOworCisgICAgLy8gU3BsaXQgdGhlIHRyeSByYW5nZSBoZXJlLgor
ICAgIFJlZlB0cjxMYWJlbD4gc2F2ZVBvaW50ID0gZW1pdExhYmVsKG5ld0xhYmVsKCkuZ2V0KCkp
OworICAgIGZvciAodW5zaWduZWQgaSA9IG1fdHJ5Q29udGV4dFN0YWNrLnNpemUoKTsgaS0tOykg
eworICAgICAgICBUcnlDb250ZXh0JiBjb250ZXh0ID0gbV90cnlDb250ZXh0U3RhY2tbaV07Cisg
ICAgICAgIFRyeVJhbmdlIHJhbmdlOworICAgICAgICByYW5nZS5zdGFydCA9IGNvbnRleHQuc3Rh
cnQ7CisgICAgICAgIHJhbmdlLmVuZCA9IHNhdmVQb2ludDsKKyAgICAgICAgcmFuZ2UudHJ5RGF0
YSA9IGNvbnRleHQudHJ5RGF0YTsKKyAgICAgICAgbV90cnlSYW5nZXMuYXBwZW5kKHJhbmdlKTsK
KworICAgICAgICAvLyBUcnkgcmFuZ2Ugd2lsbCBiZSByZXN0YXJlZCBhdCB0aGUgbWVyZ2UgcG9p
bnQuCisgICAgICAgIGNvbnRleHQuc3RhcnQgPSBtZXJnZVBvaW50OworICAgIH0KKyAgICBWZWN0
b3I8VHJ5Q29udGV4dD4gc2F2ZWRUcnlDb250ZXh0U3RhY2s7CisgICAgbV90cnlDb250ZXh0U3Rh
Y2suc3dhcChzYXZlZFRyeUNvbnRleHRTdGFjayk7CiAKLXZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRTYXZlKExhYmVsKiBtZXJnZVBvaW50LCB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5k
ZXgpCi17Ci0gICAgc2l6ZV90IGJlZ2luID0gaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpOwotICAgIGVt
aXRPcGNvZGUob3Bfc2F2ZSk7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fZ2VuZXJhdG9y
UmVnaXN0ZXItPmluZGV4KCkpOwotICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChsaXZlQ2FsbGVl
TG9jYWxzSW5kZXgpOwotICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChtZXJnZVBvaW50LT5iaW5k
KGJlZ2luLCBpbnN0cnVjdGlvbnMoKS5zaXplKCkpKTsKLX0KKyAgICBlbWl0T3Bjb2RlKG9wX3lp
ZWxkKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZ2VuZXJhdG9yRnJhbWVSZWdpc3Rlcigp
LT5pbmRleCgpKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoeWllbGRQb2ludEluZGV4KTsK
KyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYXJndW1lbnQtPmluZGV4KCkpOwogCi12b2lkIEJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzdW1lKExhYmVsKiBtZXJnZVBvaW50LCB1bnNpZ25lZCBs
aXZlQ2FsbGVlTG9jYWxzSW5kZXgpCi17Ci0gICAgZW1pdEdlbmVyYXRvclN0YXRlTGFiZWwoKTsK
LSAgICBlbWl0T3Bjb2RlKG9wX3Jlc3VtZSk7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1f
Z2VuZXJhdG9yUmVnaXN0ZXItPmluZGV4KCkpOwotICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChs
aXZlQ2FsbGVlTG9jYWxzSW5kZXgpOwotICAgIGVtaXRMYWJlbChtZXJnZVBvaW50KTsKKyAgICAv
LyBSZXN0b3JlIHRoZSB0cnkgY29udGV4dHMsIHdoaWNoIHN0YXJ0IG9mZnNldCBpcyB1cGRhdGVk
IHRvIHRoZSBtZXJnZSBwb2ludC4KKyAgICBtX3RyeUNvbnRleHRTdGFjay5zd2FwKHNhdmVkVHJ5
Q29udGV4dFN0YWNrKTsKKyAgICBlbWl0TGFiZWwobWVyZ2VQb2ludC5nZXQoKSk7CiB9CiAKIFJl
Z2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0WWllbGQoUmVnaXN0ZXJJRCogYXJndW1l
bnQpCkBAIC00NjQwLDM5ICs0NjQ5LDYgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdl
bmVyYXRvclN0YXRlQ2hhbmdlKGludDMyX3Qgc3RhdGUpCiAgICAgZW1pdFB1dEJ5SWQoZ2VuZXJh
dG9yUmVnaXN0ZXIoKSwgcHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclN0
YXRlUHJpdmF0ZU5hbWUoKSwgY29tcGxldGVkU3RhdGUpOwogfQogCi12b2lkIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0R2VuZXJhdG9yU3RhdGVMYWJlbCgpCi17Ci0gICAgUmVmUHRyPExhYmVsPiBs
YWJlbCA9IG5ld0xhYmVsKCk7Ci0gICAgbV9nZW5lcmF0b3JSZXN1bWVMYWJlbHMuYXBwZW5kKGxh
YmVsLmdldCgpKTsKLSAgICBlbWl0TGFiZWwobGFiZWwuZ2V0KCkpOwotfQotCi12b2lkIEJ5dGVj
b2RlR2VuZXJhdG9yOjpiZWdpbkdlbmVyYXRvcihSZWdpc3RlcklEKiBzdGF0ZSkKLXsKLSAgICBi
ZWdpblN3aXRjaChzdGF0ZSwgU3dpdGNoSW5mbzo6U3dpdGNoSW1tZWRpYXRlKTsKLX0KLQotdm9p
ZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW5kR2VuZXJhdG9yKExhYmVsKiBkZWZhdWx0TGFiZWwpCi17
Ci0gICAgU3dpdGNoSW5mbyBzd2l0Y2hJbmZvID0gbV9zd2l0Y2hDb250ZXh0U3RhY2subGFzdCgp
OwotICAgIG1fc3dpdGNoQ29udGV4dFN0YWNrLnJlbW92ZUxhc3QoKTsKLQotICAgIGluc3RydWN0
aW9ucygpW3N3aXRjaEluZm8uYnl0ZWNvZGVPZmZzZXQgKyAxXSA9IG1fY29kZUJsb2NrLT5udW1i
ZXJPZlN3aXRjaEp1bXBUYWJsZXMoKTsKLSAgICBpbnN0cnVjdGlvbnMoKVtzd2l0Y2hJbmZvLmJ5
dGVjb2RlT2Zmc2V0ICsgMl0gPSBkZWZhdWx0TGFiZWwtPmJpbmQoc3dpdGNoSW5mby5ieXRlY29k
ZU9mZnNldCwgc3dpdGNoSW5mby5ieXRlY29kZU9mZnNldCArIDMpOwotCi0gICAgVW5saW5rZWRT
aW1wbGVKdW1wVGFibGUmIGp1bXBUYWJsZSA9IG1fY29kZUJsb2NrLT5hZGRTd2l0Y2hKdW1wVGFi
bGUoKTsKLSAgICBpbnQzMl90IHN3aXRjaEFkZHJlc3MgPSBzd2l0Y2hJbmZvLmJ5dGVjb2RlT2Zm
c2V0OwotICAgIGp1bXBUYWJsZS5taW4gPSAwOwotICAgIGp1bXBUYWJsZS5icmFuY2hPZmZzZXRz
LnJlc2l6ZShtX2dlbmVyYXRvclJlc3VtZUxhYmVscy5zaXplKCkgKyAxKTsKLSAgICBqdW1wVGFi
bGUuYnJhbmNoT2Zmc2V0cy5maWxsKDApOwotICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCBt
X2dlbmVyYXRvclJlc3VtZUxhYmVscy5zaXplKCk7ICsraSkgewotICAgICAgICAvLyBXZSdyZSBl
bWl0dGluZyB0aGlzIGFmdGVyIHRoZSBjbGF1c2UgbGFiZWxzIHNob3VsZCBoYXZlIGJlZW4gZml4
ZWQsIHNvCi0gICAgICAgIC8vIHRoZSBsYWJlbHMgc2hvdWxkIG5vdCBiZSAiZm9yd2FyZCIgcmVm
ZXJlbmNlcwotICAgICAgICBBU1NFUlQoIW1fZ2VuZXJhdG9yUmVzdW1lTGFiZWxzW2ldLT5pc0Zv
cndhcmQoKSk7Ci0gICAgICAgIGp1bXBUYWJsZS5hZGQoaSwgbV9nZW5lcmF0b3JSZXN1bWVMYWJl
bHNbaV0tPmJpbmQoc3dpdGNoQWRkcmVzcywgc3dpdGNoQWRkcmVzcyArIDMpKTsKLSAgICB9Ci19
Ci0KIH0gLy8gbmFtZXNwYWNlIEpTQwogCiBuYW1lc3BhY2UgV1RGIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAppbmRl
eCBmZmY3MTNhYTI1ZTcxZGYyY2Y0Y2I1MzA4ZTYxNjlhNTNhZjY1MWJlLi5iMWI5NDNkYTVlMDY3
ZWNkZDQ5Njc0ODExNDVjZTlkYjAwNzVhMmFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCkBAIC0zNCw2ICszNCw3
IEBACiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiSW5zdHJ1Y3Rpb24uaCIKICNp
bmNsdWRlICJJbnRlcnByZXRlci5oIgorI2luY2x1ZGUgIkpTR2VuZXJhdG9yRnVuY3Rpb24uaCIK
ICNpbmNsdWRlICJMYWJlbC5oIgogI2luY2x1ZGUgIkxhYmVsU2NvcGUuaCIKICNpbmNsdWRlICJO
b2Rlcy5oIgpAQCAtNjkwLDE4ICs2OTEsMTUgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZv
aWQgZW5kU3dpdGNoKHVpbnQzMl90IGNsYXVzZUNvdW50LCBSZWZQdHI8TGFiZWw+KiwgRXhwcmVz
c2lvbk5vZGUqKiwgTGFiZWwqIGRlZmF1bHRMYWJlbCwgaW50MzJfdCBtaW4sIGludDMyX3QgcmFu
Z2UpOwogCiAgICAgICAgIHZvaWQgZW1pdFlpZWxkUG9pbnQoUmVnaXN0ZXJJRCopOwotICAgICAg
ICB2b2lkIGVtaXRTYXZlKExhYmVsKiBtZXJnZVBvaW50LCB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9j
YWxzSW5kZXgpOwotICAgICAgICB2b2lkIGVtaXRSZXN1bWUoTGFiZWwqIG1lcmdlUG9pbnQsIHVu
c2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCk7CiAKICAgICAgICAgdm9pZCBlbWl0R2VuZXJh
dG9yU3RhdGVMYWJlbCgpOwogICAgICAgICB2b2lkIGVtaXRHZW5lcmF0b3JTdGF0ZUNoYW5nZShp
bnQzMl90IHN0YXRlKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFlpZWxkKFJlZ2lzdGVySUQq
IGFyZ3VtZW50KTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdERlbGVnYXRlWWllbGQoUmVnaXN0
ZXJJRCogYXJndW1lbnQsIFRocm93YWJsZUV4cHJlc3Npb25EYXRhKik7Ci0gICAgICAgIHZvaWQg
YmVnaW5HZW5lcmF0b3IoUmVnaXN0ZXJJRCopOwotICAgICAgICB2b2lkIGVuZEdlbmVyYXRvcihM
YWJlbCogZGVmYXVsdExhYmVsKTsKLSAgICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9yU3RhdGVS
ZWdpc3RlcigpIHsgcmV0dXJuICZtX3BhcmFtZXRlcnNbMl07IH0KLSAgICAgICAgUmVnaXN0ZXJJ
RCogZ2VuZXJhdG9yVmFsdWVSZWdpc3RlcigpIHsgcmV0dXJuICZtX3BhcmFtZXRlcnNbM107IH0K
LSAgICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKCkgeyByZXR1
cm4gJm1fcGFyYW1ldGVyc1s0XTsgfQorICAgICAgICBSZWdpc3RlcklEKiBnZW5lcmF0b3JTdGF0
ZVJlZ2lzdGVyKCkgeyByZXR1cm4gJm1fcGFyYW1ldGVyc1tzdGF0aWNfY2FzdDxpbnQzMl90PihK
U0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JBcmd1bWVudDo6U3RhdGUpXTsgfQorICAgICAg
ICBSZWdpc3RlcklEKiBnZW5lcmF0b3JWYWx1ZVJlZ2lzdGVyKCkgeyByZXR1cm4gJm1fcGFyYW1l
dGVyc1tzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JB
cmd1bWVudDo6VmFsdWUpXTsgfQorICAgICAgICBSZWdpc3RlcklEKiBnZW5lcmF0b3JSZXN1bWVN
b2RlUmVnaXN0ZXIoKSB7IHJldHVybiAmbV9wYXJhbWV0ZXJzW3N0YXRpY19jYXN0PGludDMyX3Q+
KEpTR2VuZXJhdG9yRnVuY3Rpb246OkdlbmVyYXRvckFyZ3VtZW50OjpSZXN1bWVNb2RlKV07IH0K
KyAgICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9yRnJhbWVSZWdpc3RlcigpIHsgcmV0dXJuICZt
X3BhcmFtZXRlcnNbc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6R2Vu
ZXJhdG9yQXJndW1lbnQ6OkZyYW1lKV07IH0KIAogICAgICAgICBDb2RlVHlwZSBjb2RlVHlwZSgp
IGNvbnN0IHsgcmV0dXJuIG1fY29kZVR5cGU7IH0KIApAQCAtOTI5LDcgKzkyNywxMSBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgVmVjdG9yPFN3aXRjaEluZm8+IG1fc3dpdGNoQ29udGV4dFN0
YWNrOwogICAgICAgICBWZWN0b3I8UmVmUHRyPEZvckluQ29udGV4dD4+IG1fZm9ySW5Db250ZXh0
U3RhY2s7CiAgICAgICAgIFZlY3RvcjxUcnlDb250ZXh0PiBtX3RyeUNvbnRleHRTdGFjazsKLSAg
ICAgICAgVmVjdG9yPFJlZlB0cjxMYWJlbD4+IG1fZ2VuZXJhdG9yUmVzdW1lTGFiZWxzOworICAg
ICAgICB1bnNpZ25lZCBtX3lpZWxkUG9pbnRzIHsgMCB9OworCisgICAgICAgIFN0cm9uZzxTeW1i
b2xUYWJsZT4gbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlOworICAgICAgICBpbnQgbV9nZW5l
cmF0b3JGcmFtZVN5bWJvbFRhYmxlSW5kZXggeyAwIH07CisKICAgICAgICAgZW51bSBGdW5jdGlv
blZhcmlhYmxlVHlwZSA6IHVpbnQ4X3QgeyBOb3JtYWxGdW5jdGlvblZhcmlhYmxlLCBHbG9iYWxG
dW5jdGlvblZhcmlhYmxlIH07CiAgICAgICAgIFZlY3RvcjxzdGQ6OnBhaXI8RnVuY3Rpb25NZXRh
ZGF0YU5vZGUqLCBGdW5jdGlvblZhcmlhYmxlVHlwZT4+IG1fZnVuY3Rpb25zVG9Jbml0aWFsaXpl
OwogICAgICAgICBib29sIG1fbmVlZFRvSW5pdGlhbGl6ZUFyZ3VtZW50cyB7IGZhbHNlIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdl
bi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5j
cHAKaW5kZXggZDBjOTllZmY1ZTc0ZjAyYzM4M2NjNTExZGUxN2I4ZDJiNmU3N2U0Zi4uYmNkYWEy
NzJjYjk1MDg1ODYwOGNhMmE3NTdmN2M0NjRlNDc2ZGZmNSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcApAQCAtMzM3Nyw3ICsz
Mzc3LDYgQEAgdm9pZCBGdW5jdGlvbk5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRv
ciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKikKICAgICAgICAgUmVmUHRyPExhYmVsPiBkb25lID0g
Z2VuZXJhdG9yLm5ld0xhYmVsKCk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoZG9uZS5n
ZXQoKSk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0UmV0dXJuKGdlbmVyYXRvci5lbWl0TG9hZChu
dWxscHRyLCBqc1VuZGVmaW5lZCgpKSk7Ci0gICAgICAgIGdlbmVyYXRvci5lbmRHZW5lcmF0b3Io
ZG9uZS5nZXQoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKaW5kZXggN2NmNjg3MDk2YzQzMzYwOWI1MGQxZjQw
OWE5ODkzZjIwMDA5NTI2OS4uMjUxZTdhYjFiZGM2MTg5MmZlMmUyNjhjMDRkOTIxYjYzMDk5ZGUw
MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCkBAIC00
Miw4ICs0Miw4IEBACiAjaW5jbHVkZSAiRGlyZWN0QXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiRlRM
Rm9yT1NSRW50cnlKSVRDb2RlLmgiCiAjaW5jbHVkZSAiRlRMT1NSRW50cnkuaCIKLSNpbmNsdWRl
ICJIb3N0Q2FsbFJldHVyblZhbHVlLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCisjaW5j
bHVkZSAiSG9zdENhbGxSZXR1cm5WYWx1ZS5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAj
aW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSklURXhjZXB0aW9ucy5oIgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKaW5kZXggMWFhZjE3
NzIzZmUxZTg4MjBmNDc3YWIwODU0ODRiNWY1ZjI3Njc5Ny4uMmYwZTZmMmZjN2U5OTY0M2JjYTJh
OWY0NDgwNDhlZDg2NmMyOGZhYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
dGVycHJldGVyL0ludGVycHJldGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50
ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCkBAIC02MDksNyArNjA5LDcgQEAgSlNTdHJpbmcqIElu
dGVycHJldGVyOjpzdGFja1RyYWNlQXNTdHJpbmcoVk0mIHZtLCBjb25zdCBWZWN0b3I8U3RhY2tG
cmFtZT4mIHN0YWMKICAgICByZXR1cm4ganNTdHJpbmcoJnZtLCBidWlsZGVyLnRvU3RyaW5nKCkp
OwogfQogCi1BTFdBWVNfSU5MSU5FIHN0YXRpYyBIYW5kbGVySW5mbyogZmluZEV4Y2VwdGlvbkhh
bmRsZXIoU3RhY2tWaXNpdG9yJiB2aXNpdG9yLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZUJs
b2NrOjpSZXF1aXJlZEhhbmRsZXIgcmVxdWlyZWRIYW5kbGVyKQorQUxXQVlTX0lOTElORSBzdGF0
aWMgSGFuZGxlckluZm8qIGZpbmRFeGNlcHRpb25IYW5kbGVyKFN0YWNrVmlzaXRvciYgdmlzaXRv
ciwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFJlcXVpcmVkSGFuZGxlciByZXF1aXJlZEhhbmRsZXIp
CiB7CiAgICAgQVNTRVJUKGNvZGVCbG9jayk7CiAjaWYgRU5BQkxFKERGR19KSVQpCkBAIC02NDMs
NyArNjQzLDcgQEAgY2xhc3MgR2V0Q2F0Y2hIYW5kbGVyRnVuY3RvciB7CiAgICAgICAgIGlmICgh
Y29kZUJsb2NrKQogICAgICAgICAgICAgcmV0dXJuIFN0YWNrVmlzaXRvcjo6Q29udGludWU7CiAK
LSAgICAgICAgbV9oYW5kbGVyID0gZmluZEV4Y2VwdGlvbkhhbmRsZXIodmlzaXRvciwgY29kZUJs
b2NrLCBDb2RlQmxvY2s6OlJlcXVpcmVkSGFuZGxlcjo6Q2F0Y2hIYW5kbGVyKTsKKyAgICAgICAg
bV9oYW5kbGVyID0gZmluZEV4Y2VwdGlvbkhhbmRsZXIodmlzaXRvciwgY29kZUJsb2NrLCBSZXF1
aXJlZEhhbmRsZXI6OkNhdGNoSGFuZGxlcik7CiAgICAgICAgIGlmIChtX2hhbmRsZXIpCiAgICAg
ICAgICAgICByZXR1cm4gU3RhY2tWaXNpdG9yOjpEb25lOwogCkBAIC02ODUsNyArNjg1LDcgQEAg
Y2xhc3MgVW53aW5kRnVuY3RvciB7CiAgICAgICAgIG1faGFuZGxlciA9IG51bGxwdHI7CiAgICAg
ICAgIGlmICghbV9pc1Rlcm1pbmF0aW9uKSB7CiAgICAgICAgICAgICBpZiAobV9jb2RlQmxvY2sg
JiYgIWlzV2ViQXNzZW1ibHlFeGVjdXRhYmxlKG1fY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUo
KSkpCi0gICAgICAgICAgICAgICAgbV9oYW5kbGVyID0gZmluZEV4Y2VwdGlvbkhhbmRsZXIodmlz
aXRvciwgbV9jb2RlQmxvY2ssIENvZGVCbG9jazo6UmVxdWlyZWRIYW5kbGVyOjpBbnlIYW5kbGVy
KTsKKyAgICAgICAgICAgICAgICBtX2hhbmRsZXIgPSBmaW5kRXhjZXB0aW9uSGFuZGxlcih2aXNp
dG9yLCBtX2NvZGVCbG9jaywgUmVxdWlyZWRIYW5kbGVyOjpBbnlIYW5kbGVyKTsKICAgICAgICAg
fQogCiAgICAgICAgIGlmIChtX2hhbmRsZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlci9JbnRlcnByZXRlci5oCmluZGV4IDc5YzdlNTMwMWJhODM5NmJjMDJkYzI0NWUw
ODFjN2Y3YTM3MzhlNmMuLjNkZjAwNjc3NmY2MWE0YjViNGI3YzI0OGU3NWNhYjFhOGMzMDkzMDkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRl
ci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5o
CkBAIC02NSw2ICs2NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHN0cnVjdCBIYW5kbGVySW5m
bzsKICAgICBzdHJ1Y3QgSW5zdHJ1Y3Rpb247CiAgICAgc3RydWN0IFByb3RvQ2FsbEZyYW1lOwor
ICAgIHN0cnVjdCBVbmxpbmtlZEluc3RydWN0aW9uOwogCiAgICAgZW51bSBVbndpbmRTdGFydCB7
IFVud2luZEZyb21DdXJyZW50RnJhbWUsIFVud2luZEZyb21DYWxsZXJGcmFtZSB9OwogCkBAIC0y
MDcsNyArMjA4LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIG9wY29k
ZTsKICNlbmRpZgogICAgICAgICB9Ci0gICAgICAgIAorCisgICAgICAgIE9wY29kZUlEIGdldE9w
Y29kZUlEKGNvbnN0IEluc3RydWN0aW9uJik7CisgICAgICAgIE9wY29kZUlEIGdldE9wY29kZUlE
KGNvbnN0IFVubGlua2VkSW5zdHJ1Y3Rpb24mKTsKKwogICAgICAgICBib29sIGlzT3Bjb2RlKE9w
Y29kZSk7CiAKICAgICAgICAgSlNWYWx1ZSBleGVjdXRlKFByb2dyYW1FeGVjdXRhYmxlKiwgQ2Fs
bEZyYW1lKiwgSlNPYmplY3QqIHRoaXNPYmopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVySW5saW5lcy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVySW5saW5lcy5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE3N2Mx
NTQ3OTBhNjdmYjQxY2M5ZTJkMDlhMWRiZGZkZGZhNTliZGYKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXJJbmxpbmVzLmgKQEAg
LTAsMCArMSw0NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBZdXN1a2UgU3V6dWtpIDx1
dGF0YW5lLnRlYUBnbWFpbC5jb20+CisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkluc3RydWN0aW9uLmgiCisjaW5jbHVk
ZSAiSW50ZXJwcmV0ZXIuaCIKKyNpbmNsdWRlICJVbmxpbmtlZENvZGVCbG9jay5oIgorCituYW1l
c3BhY2UgSlNDIHsKKworaW5saW5lIE9wY29kZUlEIEludGVycHJldGVyOjpnZXRPcGNvZGVJRChj
b25zdCBJbnN0cnVjdGlvbiYgaW5zdHJ1Y3Rpb24pCit7CisgICAgcmV0dXJuIGdldE9wY29kZUlE
KGluc3RydWN0aW9uLnUub3Bjb2RlKTsKK30KKworaW5saW5lIE9wY29kZUlEIEludGVycHJldGVy
OjpnZXRPcGNvZGVJRChjb25zdCBVbmxpbmtlZEluc3RydWN0aW9uJiBpbnN0cnVjdGlvbikKK3sK
KyAgICByZXR1cm4gaW5zdHJ1Y3Rpb24udS5vcGNvZGU7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpT
QwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCmluZGV4IGIwMGRmYWM4YzE1YzU0N2QyN2ZjNjY3
ZjVjNDU5MGVkMzk5ZGVlNDAuLjEyNDA1ZjdlNTA0YWIzODkzZGQ5N2Q3YTkyOTEzYjA5NWExMTU5
MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKQEAgLTIzNSw4ICsyMzUsNiBAQCB2b2lk
IEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9PUChvcF9nZXRf
cmVzdF9sZW5ndGgpCiAgICAgICAgIERFRklORV9PUChvcF9jaGVja190ZHopCiAgICAgICAgIERF
RklORV9PUChvcF9hc3NlcnQpCi0gICAgICAgIERFRklORV9PUChvcF9zYXZlKQotICAgICAgICBE
RUZJTkVfT1Aob3BfcmVzdW1lKQogICAgICAgICBERUZJTkVfT1Aob3BfZGVidWcpCiAgICAgICAg
IERFRklORV9PUChvcF9kZWxfYnlfaWQpCiAgICAgICAgIERFRklORV9PUChvcF9kZWxfYnlfdmFs
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklULmgKaW5kZXggYmI5N2RjMzViZGZjMDMzOTlhYTA1MTNhOWNh
NzM1NWQwODMxYzYwZC4uNTFmY2Y2MGI5OWQ0MGIwZTUzZGJjZDIyM2M1NjkyMDI1ZjE0ZWNmMyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCkBAIC00OTcsOCArNDk3LDYgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9nZXRfcmVzdF9sZW5ndGgoSW5zdHJ1Y3Rpb24qKTsK
ICAgICAgICAgdm9pZCBlbWl0X29wX2NoZWNrX3RkeihJbnN0cnVjdGlvbiopOwogICAgICAgICB2
b2lkIGVtaXRfb3BfYXNzZXJ0KEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9z
YXZlKEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9yZXN1bWUoSW5zdHJ1Y3Rp
b24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2RlYnVnKEluc3RydWN0aW9uKik7CiAgICAgICAg
IHZvaWQgZW1pdF9vcF9kZWxfYnlfaWQoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0
X29wX2RlbF9ieV92YWwoSW5zdHJ1Y3Rpb24qKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wY29kZXMuY3BwCmluZGV4IDdmN2M3NDUzYmQzZDJkNTBlMTgwMTgzZjI5NzMxMTVmMTE5ZDg1
MmYuLjJkYmU4NmM2MjRiYzg3ZWJmNzBiODAxZTBhMmNjY2VmNjUxNWJhMjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcApAQCAtMTQ5MiwxOCArMTQ5Miw2IEBAIHZv
aWQgSklUOjplbWl0X29wX2dldF9yZXN0X2xlbmd0aChJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogI2VuZGlmCiB9CiAKLXZvaWQgSklUOjplbWl0X29wX3NhdmUoSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKLXsKLSAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxs
KHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX3NhdmUpOwotICAgIHNsb3dQYXRo
Q2FsbC5jYWxsKCk7Ci19Ci0KLXZvaWQgSklUOjplbWl0X29wX3Jlc3VtZShJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQotewotICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwo
dGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfcmVzdW1lKTsKLSAgICBzbG93UGF0
aENhbGwuY2FsbCgpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEVOQUJM
RShKSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlci5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlci5hc20KaW5kZXggMTQ5MThiNjU1ZDVjZmEyMmI4NjE1OGViMmVlYWFmMDg3NDk2NTZh
Ny4uYzlmOTY4Nzk1OGQwNmQzMDYwY2Y2OWZlMzc4OWQxYmQwYmY4Yzc5YSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQpAQCAt
MTcwOSwxNiArMTcwOSw4IEBAIF9sbGludF9vcF9hc3NlcnQ6CiAgICAgZGlzcGF0Y2goMykKIAog
Ci1fbGxpbnRfb3Bfc2F2ZToKLSAgICB0cmFjZUV4ZWN1dGlvbigpCi0gICAgY2FsbE9wY29kZVNs
b3dQYXRoKF9zbG93X3BhdGhfc2F2ZSkKLSAgICBkaXNwYXRjaCg0KQotCi0KLV9sbGludF9vcF9y
ZXN1bWU6Ci0gICAgdHJhY2VFeGVjdXRpb24oKQotICAgIGNhbGxPcGNvZGVTbG93UGF0aChfc2xv
d19wYXRoX3Jlc3VtZSkKLSAgICBkaXNwYXRjaCgzKQorX2xsaW50X29wX3lpZWxkOgorICAgIG5v
dFN1cHBvcnRlZCgpCiAKIAogX2xsaW50X29wX2NyZWF0ZV9sZXhpY2FsX2Vudmlyb25tZW50Ogpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCmluZGV4IGViZWE5OGU0ZWUxM2Zh
MTJiZTA5NmJhOTJmNGQ0MTllMzRjZWQxNzAuLjI2MTc0NWExOTAzMTdkZTc1OTEyZTNhOTIzZmE5
ZjI4ODc0ODYzZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFy
c2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKQEAg
LTI2MCw3ICsyNjAsNyBAQCBTdHJpbmcgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlSW5uZXIoY29u
c3QgSWRlbnRpZmllciYgY2FsbGVlTmFtZSwgU291cmNlUGFyc2VNbwogICAgIGlmIChtX2xleGVy
LT5pc1JlcGFyc2luZ0Z1bmN0aW9uKCkpIHsKICAgICAgICAgUGFyc2VyRnVuY3Rpb25JbmZvPEFT
VEJ1aWxkZXI+IGZ1bmN0aW9uSW5mbzsKICAgICAgICAgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQ
YXJzZU1vZGU6OkdlbmVyYXRvckJvZHlNb2RlKQotICAgICAgICAgICAgbV9wYXJhbWV0ZXJzID0g
Y3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhjb250ZXh0KTsKKyAgICAgICAgICAgIG1fcGFyYW1l
dGVycyA9IGNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMoY29udGV4dCwgZnVuY3Rpb25JbmZvLnBh
cmFtZXRlckNvdW50KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbV9wYXJhbWV0ZXJzID0g
cGFyc2VGdW5jdGlvblBhcmFtZXRlcnMoY29udGV4dCwgcGFyc2VNb2RlLCBmdW5jdGlvbkluZm8p
OwogCkBAIC01MTIsMTAgKzUxMiw5IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJl
ZVNvdXJjZUVsZW1lbnRzIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUdlbmVyYXRvCiAKICAgICBQ
YXJzZXJGdW5jdGlvbkluZm88VHJlZUJ1aWxkZXI+IGluZm87CiAgICAgaW5mby5uYW1lID0gJm1f
dm0tPnByb3BlcnR5TmFtZXMtPm51bGxJZGVudGlmaWVyOwotICAgIGNyZWF0ZUdlbmVyYXRvclBh
cmFtZXRlcnMoY29udGV4dCk7CisgICAgY3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhjb250ZXh0
LCBpbmZvLnBhcmFtZXRlckNvdW50KTsKICAgICBpbmZvLnN0YXJ0T2Zmc2V0ID0gcGFyYW1ldGVy
c1N0YXJ0OwogICAgIGluZm8uc3RhcnRMaW5lID0gdG9rZW5MaW5lKCk7Ci0gICAgaW5mby5wYXJh
bWV0ZXJDb3VudCA9IDQ7IC8vIGdlbmVyYXRvciwgc3RhdGUsIHZhbHVlLCByZXN1bWUgbW9kZQog
CiAgICAgewogICAgICAgICBBdXRvUG9wU2NvcGVSZWYgZ2VuZXJhdG9yQm9keVNjb3BlKHRoaXMs
IHB1c2hTY29wZSgpKTsKQEAgLTE5MDMsMzIgKzE5MDIsMzAgQEAgdGVtcGxhdGUgPHR5cGVuYW1l
IExleGVyVHlwZT4gdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyLCBjbGFzcyBGdW5jdGlvbklu
Zm9UeXAKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KLXRlbXBsYXRlIDxjbGFz
cyBUcmVlQnVpbGRlcj4gdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkZvcm1hbFBhcmFtZXRlckxpc3Qg
UGFyc2VyPExleGVyVHlwZT46OmNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMoVHJlZUJ1aWxkZXIm
IGNvbnRleHQpCit0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IHR5cGVuYW1lIFRyZWVCdWls
ZGVyOjpGb3JtYWxQYXJhbWV0ZXJMaXN0IFBhcnNlcjxMZXhlclR5cGU+OjpjcmVhdGVHZW5lcmF0
b3JQYXJhbWV0ZXJzKFRyZWVCdWlsZGVyJiBjb250ZXh0LCB1bnNpZ25lZCYgcGFyYW1ldGVyQ291
bnQpCiB7CiAgICAgYXV0byBwYXJhbWV0ZXJzID0gY29udGV4dC5jcmVhdGVGb3JtYWxQYXJhbWV0
ZXJMaXN0KCk7CiAKICAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb24odG9rZW5Mb2NhdGlvbigp
KTsKICAgICBKU1RleHRQb3NpdGlvbiBwb3NpdGlvbiA9IHRva2VuU3RhcnRQb3NpdGlvbigpOwog
Ci0gICAgLy8gQGdlbmVyYXRvcgotICAgIGRlY2xhcmVQYXJhbWV0ZXIoJm1fdm0tPnByb3BlcnR5
TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclByaXZhdGVOYW1lKCkpOwotICAgIGF1dG8g
Z2VuZXJhdG9yID0gY29udGV4dC5jcmVhdGVCaW5kaW5nTG9jYXRpb24obG9jYXRpb24sIG1fdm0t
PnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclByaXZhdGVOYW1lKCksIHBv
c2l0aW9uLCBwb3NpdGlvbiwgQXNzaWdubWVudENvbnRleHQ6OkRlY2xhcmF0aW9uU3RhdGVtZW50
KTsKLSAgICBjb250ZXh0LmFwcGVuZFBhcmFtZXRlcihwYXJhbWV0ZXJzLCBnZW5lcmF0b3IsIDAp
OworICAgIGF1dG8gYWRkUGFyYW1ldGVyID0gWyZdKGNvbnN0IElkZW50aWZpZXImIG5hbWUpIHsK
KyAgICAgICAgZGVjbGFyZVBhcmFtZXRlcigmbmFtZSk7CisgICAgICAgIGF1dG8gYmluZGluZyA9
IGNvbnRleHQuY3JlYXRlQmluZGluZ0xvY2F0aW9uKGxvY2F0aW9uLCBuYW1lLCBwb3NpdGlvbiwg
cG9zaXRpb24sIEFzc2lnbm1lbnRDb250ZXh0OjpEZWNsYXJhdGlvblN0YXRlbWVudCk7CisgICAg
ICAgIGNvbnRleHQuYXBwZW5kUGFyYW1ldGVyKHBhcmFtZXRlcnMsIGJpbmRpbmcsIDApOworICAg
ICAgICArK3BhcmFtZXRlckNvdW50OworICAgIH07CiAKKyAgICAvLyBAZ2VuZXJhdG9yCisgICAg
YWRkUGFyYW1ldGVyKG1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRv
clByaXZhdGVOYW1lKCkpOwogICAgIC8vIEBnZW5lcmF0b3JTdGF0ZQotICAgIGRlY2xhcmVQYXJh
bWV0ZXIoJm1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclN0YXRl
UHJpdmF0ZU5hbWUoKSk7Ci0gICAgYXV0byBnZW5lcmF0b3JTdGF0ZSA9IGNvbnRleHQuY3JlYXRl
QmluZGluZ0xvY2F0aW9uKGxvY2F0aW9uLCBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFt
ZXMoKS5nZW5lcmF0b3JTdGF0ZVByaXZhdGVOYW1lKCksIHBvc2l0aW9uLCBwb3NpdGlvbiwgQXNz
aWdubWVudENvbnRleHQ6OkRlY2xhcmF0aW9uU3RhdGVtZW50KTsKLSAgICBjb250ZXh0LmFwcGVu
ZFBhcmFtZXRlcihwYXJhbWV0ZXJzLCBnZW5lcmF0b3JTdGF0ZSwgMCk7Ci0KKyAgICBhZGRQYXJh
bWV0ZXIobV92bS0+cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yU3RhdGVQ
cml2YXRlTmFtZSgpKTsKICAgICAvLyBAZ2VuZXJhdG9yVmFsdWUKLSAgICBkZWNsYXJlUGFyYW1l
dGVyKCZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JWYWx1ZVBy
aXZhdGVOYW1lKCkpOwotICAgIGF1dG8gZ2VuZXJhdG9yVmFsdWUgPSBjb250ZXh0LmNyZWF0ZUJp
bmRpbmdMb2NhdGlvbihsb2NhdGlvbiwgbV92bS0+cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVz
KCkuZ2VuZXJhdG9yVmFsdWVQcml2YXRlTmFtZSgpLCBwb3NpdGlvbiwgcG9zaXRpb24sIEFzc2ln
bm1lbnRDb250ZXh0OjpEZWNsYXJhdGlvblN0YXRlbWVudCk7Ci0gICAgY29udGV4dC5hcHBlbmRQ
YXJhbWV0ZXIocGFyYW1ldGVycywgZ2VuZXJhdG9yVmFsdWUsIDApOwotCisgICAgYWRkUGFyYW1l
dGVyKG1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclZhbHVlUHJp
dmF0ZU5hbWUoKSk7CiAgICAgLy8gQGdlbmVyYXRvclJlc3VtZU1vZGUKLSAgICBkZWNsYXJlUGFy
YW1ldGVyKCZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JSZXN1
bWVNb2RlUHJpdmF0ZU5hbWUoKSk7Ci0gICAgYXV0byBnZW5lcmF0b3JSZXN1bWVNb2RlID0gY29u
dGV4dC5jcmVhdGVCaW5kaW5nTG9jYXRpb24obG9jYXRpb24sIG1fdm0tPnByb3BlcnR5TmFtZXMt
PmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclJlc3VtZU1vZGVQcml2YXRlTmFtZSgpLCBwb3NpdGlv
biwgcG9zaXRpb24sIEFzc2lnbm1lbnRDb250ZXh0OjpEZWNsYXJhdGlvblN0YXRlbWVudCk7Ci0g
ICAgY29udGV4dC5hcHBlbmRQYXJhbWV0ZXIocGFyYW1ldGVycywgZ2VuZXJhdG9yUmVzdW1lTW9k
ZSwgMCk7CisgICAgYWRkUGFyYW1ldGVyKG1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1l
cygpLmdlbmVyYXRvclJlc3VtZU1vZGVQcml2YXRlTmFtZSgpKTsKKyAgICAvLyBAZ2VuZXJhdG9y
RnJhbWUKKyAgICBhZGRQYXJhbWV0ZXIobV92bS0+cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVz
KCkuZ2VuZXJhdG9yRnJhbWVQcml2YXRlTmFtZSgpKTsKIAogICAgIHJldHVybiBwYXJhbWV0ZXJz
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKaW5kZXggMzkyMDQwNGU4YmE1
MjBiMjJlNGVjZDI3NzgxYzEzZGY4MTkwNzQzMy4uNTBlMTM5MWI1ZmQwM2RkNWU3NzhiOGZkYjU5
MjNhYTc5OGFlZDEyMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Q
YXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCkBAIC0x
NDI2LDcgKzE0MjYsNyBAQCBjbGFzcyBQYXJzZXIgewogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBp
c0Fycm93RnVuY3Rpb25QYXJhbWV0ZXJzKCk7CiAgICAgCiAgICAgdGVtcGxhdGUgPGNsYXNzIFRy
ZWVCdWlsZGVyLCBjbGFzcyBGdW5jdGlvbkluZm9UeXBlPiBORVZFUl9JTkxJTkUgdHlwZW5hbWUg
VHJlZUJ1aWxkZXI6OkZvcm1hbFBhcmFtZXRlckxpc3QgcGFyc2VGdW5jdGlvblBhcmFtZXRlcnMo
VHJlZUJ1aWxkZXImLCBTb3VyY2VQYXJzZU1vZGUsIEZ1bmN0aW9uSW5mb1R5cGUmKTsKLSAgICB0
ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElORSB0eXBlbmFtZSBUcmVlQnVp
bGRlcjo6Rm9ybWFsUGFyYW1ldGVyTGlzdCBjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKFRyZWVC
dWlsZGVyJik7CisgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBORVZFUl9JTkxJTkUg
dHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkZvcm1hbFBhcmFtZXRlckxpc3QgY3JlYXRlR2VuZXJhdG9y
UGFyYW1ldGVycyhUcmVlQnVpbGRlciYsIHVuc2lnbmVkJiBwYXJhbWV0ZXJDb3VudCk7CiAKICAg
ICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElORSBUcmVlQ2xhc3NFeHBy
ZXNzaW9uIHBhcnNlQ2xhc3MoVHJlZUJ1aWxkZXImLCBGdW5jdGlvbk5hbWVSZXF1aXJlbWVudHMs
IFBhcnNlckNsYXNzSW5mbzxUcmVlQnVpbGRlcj4mKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKaW5kZXggYTliNzU1ZTZjOWFlOWI5
OGE2MjI5MzU0NmVlNTdjYTgxZWM5YzMyYy4uMmU4NjhkY2IyZDcxZmU3Y2YyOGU5NTBmMDVjNzU4
YmE4MDVjYzMyNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
bW9uU2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21t
b25TbG93UGF0aHMuY3BwCkBAIC0zNyw3ICszNyw2IEBACiAjaW5jbHVkZSAiRXJyb3IuaCIKICNp
bmNsdWRlICJFcnJvckhhbmRsaW5nU2NvcGUuaCIKICNpbmNsdWRlICJFeGNlcHRpb25GdXp6Lmgi
Ci0jaW5jbHVkZSAiR2VuZXJhdG9yRnJhbWUuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIK
ICNpbmNsdWRlICJIb3N0Q2FsbFJldHVyblZhbHVlLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIu
aCIKQEAgLTc1MywzOCArNzUyLDYgQEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2Fzc2VydCkK
ICAgICBFTkQoKTsKIH0KIAotU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3NhdmUpCi17Ci0gICAg
Ly8gT25seSBzYXZlIHZhcmlhYmxlcyBhbmQgdGVtcG9yYXJ5IHJlZ2lzdGVycy4gVGhlIHNjb3Bl
IHJlZ2lzdGVycyBhcmUgaW5jbHVkZWQgaW4gdGhlbS4KLSAgICAvLyBCdXQgcGFyYW1ldGVycyBh
cmUgbm90IGluY2x1ZGVkLiBCZWNhdXNlIHRoZSBnZW5lcmF0b3IgaW1wbGVtZW50YXRpb24gcmVw
bGFjZXMgdGhlIHZhbHVlcyBvZiBwYXJhbWV0ZXJzIG9uIGVhY2ggZ2VuZXJhdG9yLm5leHQoKSBj
YWxsLgotICAgIEJFR0lOKCk7Ci0gICAgSlNWYWx1ZSBnZW5lcmF0b3IgPSBPUCgxKS5qc1ZhbHVl
KCk7Ci0gICAgR2VuZXJhdG9yRnJhbWUqIGZyYW1lID0gbnVsbHB0cjsKLSAgICBKU1ZhbHVlIHZh
bHVlID0gZ2VuZXJhdG9yLmdldChleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5h
bWVzKCkuZ2VuZXJhdG9yRnJhbWVQcml2YXRlTmFtZSgpKTsKLSAgICBpZiAoIXZhbHVlLmlzTnVs
bCgpKQotICAgICAgICBmcmFtZSA9IGpzQ2FzdDxHZW5lcmF0b3JGcmFtZSo+KHZhbHVlKTsKLSAg
ICBlbHNlIHsKLSAgICAgICAgLy8gRklYTUU6IE9uY2UgSlNHZW5lcmF0b3Igc3BlY2lhbGl6ZWQg
b2JqZWN0IGlzIGludHJvZHVjZWQsIHRoaXMgR2VuZXJhdG9yRnJhbWUgc2hvdWxkIGJlIGVtYmVk
ZWQgaW50byBpdCB0byBhdm9pZCBhbGxvY2F0aW9ucy4KLSAgICAgICAgLy8gaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTU0NQotICAgICAgICBmcmFtZSA9IEdlbmVy
YXRvckZyYW1lOjpjcmVhdGUoZXhlYy0+dm0oKSwgIGV4ZWMtPmNvZGVCbG9jaygpLT5udW1DYWxs
ZWVMb2NhbHMoKSk7Ci0gICAgICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGdlbmVyYXRvciwgdHJ1
ZSwgUHV0UHJvcGVydHlTbG90OjpQdXRCeUlkKTsKLSAgICAgICAgYXNPYmplY3QoZ2VuZXJhdG9y
KS0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPnB1dChhc09iamVjdChnZW5lcmF0b3IpLCBleGVj
LCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yRnJhbWVQcml2
YXRlTmFtZSgpLCBmcmFtZSwgc2xvdCk7Ci0gICAgfQotICAgIHVuc2lnbmVkIGxpdmVDYWxsZWVM
b2NhbHNJbmRleCA9IHBjWzJdLnUudW5zaWduZWRWYWx1ZTsKLSAgICBmcmFtZS0+c2F2ZShleGVj
LCBleGVjLT5jb2RlQmxvY2soKS0+bGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQobGl2ZUNhbGxlZUxv
Y2Fsc0luZGV4KSk7Ci0gICAgRU5EKCk7Ci19Ci0KLVNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9y
ZXN1bWUpCi17Ci0gICAgQkVHSU4oKTsKLSAgICBKU1ZhbHVlIGdlbmVyYXRvciA9IE9QKDEpLmpz
VmFsdWUoKTsKLSAgICBHZW5lcmF0b3JGcmFtZSogZnJhbWUgPSBqc0Nhc3Q8R2VuZXJhdG9yRnJh
bWUqPihnZW5lcmF0b3IuZ2V0KGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFt
ZXMoKS5nZW5lcmF0b3JGcmFtZVByaXZhdGVOYW1lKCkpKTsKLSAgICB1bnNpZ25lZCBsaXZlQ2Fs
bGVlTG9jYWxzSW5kZXggPSBwY1syXS51LnVuc2lnbmVkVmFsdWU7Ci0gICAgZnJhbWUtPnJlc3Vt
ZShleGVjLCBleGVjLT5jb2RlQmxvY2soKS0+bGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQobGl2ZUNh
bGxlZUxvY2Fsc0luZGV4KSk7Ci0gICAgRU5EKCk7Ci19Ci0KIFNMT1dfUEFUSF9ERUNMKHNsb3df
cGF0aF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudCkKIHsKICAgICBCRUdJTigpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAppbmRleCA2NDAx
YTYxNGQ1NjExNjYzNTY5YjE4YTAyNzJiMjhhYzM1Mjg2YTgyLi4zZDljMTVmNWFmMGM3NTdkZGEx
MDUzMzkxOTkwZjU0NjM4ODY4MWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21tb25TbG93UGF0aHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db21tb25TbG93UGF0aHMuaApAQCAtMjQ4LDggKzI0OCw2IEBAIFNMT1dfUEFUSF9ISURE
RU5fREVDTChzbG93X3BhdGhfbmV4dF9nZW5lcmljX2VudW1lcmF0b3JfcG5hbWUpOwogU0xPV19Q
QVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF90b19pbmRleF9zdHJpbmcpOwogU0xPV19QQVRIX0hJ
RERFTl9ERUNMKHNsb3dfcGF0aF9wcm9maWxlX3R5cGVfY2xlYXJfbG9nKTsKIFNMT1dfUEFUSF9I
SURERU5fREVDTChzbG93X3BhdGhfYXNzZXJ0KTsKLVNMT1dfUEFUSF9ISURERU5fREVDTChzbG93
X3BhdGhfc2F2ZSk7Ci1TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3Jlc3VtZSk7CiBT
TE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2NyZWF0ZV9sZXhpY2FsX2Vudmlyb25tZW50
KTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcHVzaF93aXRoX3Njb3BlKTsKIFNM
T1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcmVzb2x2ZV9zY29wZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGcmFtZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGcmFtZS5jcHAKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGVmNmVhN2ExMDAyNThjM2VjZTA0ZGFhYjQzYmRhYTg1MWVjOGY3
MTUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJhbWUuY3BwCisrKyAvZGV2L251bGwK
QEAgLTEsOTcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtp
IDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgi
Ci0jaW5jbHVkZSAiR2VuZXJhdG9yRnJhbWUuaCIKLQotI2luY2x1ZGUgIkNvZGVCbG9jay5oIgot
I2luY2x1ZGUgIkhlYXBJdGVyYXRpb25TY29wZS5oIgotI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxp
bmVzLmgiCi0jaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgotI2luY2x1ZGUgIlNsb3RWaXNpdG9y
SW5saW5lcy5oIgotI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKLQotbmFtZXNwYWNlIEpT
QyB7Ci0KLWNvbnN0IENsYXNzSW5mbyBHZW5lcmF0b3JGcmFtZTo6c19pbmZvID0geyAiR2VuZXJh
dG9yRnJhbWUiLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEdlbmVyYXRv
ckZyYW1lKSB9OwotCi1HZW5lcmF0b3JGcmFtZTo6R2VuZXJhdG9yRnJhbWUoVk0mIHZtLCBzaXpl
X3QgbnVtYmVyT2ZDYWxsZWVMb2NhbHMpCi0gICAgOiBCYXNlKHZtLCB2bS5nZW5lcmF0b3JGcmFt
ZVN0cnVjdHVyZS5nZXQoKSkKLSAgICAsIG1fbnVtYmVyT2ZDYWxsZWVMb2NhbHMobnVtYmVyT2ZD
YWxsZWVMb2NhbHMpCi17Ci19Ci0KLXZvaWQgR2VuZXJhdG9yRnJhbWU6OmZpbmlzaENyZWF0aW9u
KFZNJiB2bSkKLXsKLSAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7Ci0gICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBtX251bWJlck9mQ2FsbGVlTG9jYWxzOyArK2kpCi0gICAgICAgIGxvY2Fs
QXQoaSkuY2xlYXIoKTsKLX0KLQotU3RydWN0dXJlKiBHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlU3Ry
dWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90
b3R5cGUpCi17Ci0gICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3Qs
IHByb3RvdHlwZSwgVHlwZUluZm8oQ2VsbFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsK
LX0KLQotR2VuZXJhdG9yRnJhbWUqIEdlbmVyYXRvckZyYW1lOjpjcmVhdGUoVk0mIHZtLCBzaXpl
X3QgbnVtYmVyT2ZMb2NhbHMpCi17Ci0gICAgR2VuZXJhdG9yRnJhbWUqIHJlc3VsdCA9Ci0gICAg
ICAgIG5ldyAoCi0gICAgICAgICAgICBOb3ROdWxsLAotICAgICAgICAgICAgYWxsb2NhdGVDZWxs
PEdlbmVyYXRvckZyYW1lPih2bS5oZWFwLCBhbGxvY2F0aW9uU2l6ZUZvckxvY2FscyhudW1iZXJP
ZkxvY2FscykpKQotICAgICAgICBHZW5lcmF0b3JGcmFtZSh2bSwgbnVtYmVyT2ZMb2NhbHMpOwot
ICAgIHJlc3VsdC0+ZmluaXNoQ3JlYXRpb24odm0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0K
LXZvaWQgR2VuZXJhdG9yRnJhbWU6OnNhdmUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBGYXN0Qml0
VmVjdG9yJiBsaXZlQ2FsbGVlTG9jYWxzKQotewotICAgIC8vIE9ubHkgc2F2ZSBjYWxsZWUgbG9j
YWxzLgotICAgIC8vIEV2ZXJ5IHRpbWUgYSBnZW5lcmF0b3IgaXMgY2FsbGVkIChvciByZXN1bWVk
KSwgcGFyYW1ldGVycyBzaG91bGQgYmUgcmVwbGFjZWQuCi0gICAgQVNTRVJUKGxpdmVDYWxsZWVM
b2NhbHMubnVtQml0cygpIDw9IG1fbnVtYmVyT2ZDYWxsZWVMb2NhbHMpOwotICAgIGxpdmVDYWxs
ZWVMb2NhbHMuZm9yRWFjaFNldEJpdChbJl0oc2l6ZV90IGluZGV4KSB7Ci0gICAgICAgIGxvY2Fs
QXQoaW5kZXgpLnNldChleGVjLT52bSgpLCB0aGlzLCBleGVjLT51bmNoZWNrZWRSKHZpcnR1YWxS
ZWdpc3RlckZvckxvY2FsKGluZGV4KSkuanNWYWx1ZSgpKTsKLSAgICB9KTsKLX0KLQotdm9pZCBH
ZW5lcmF0b3JGcmFtZTo6cmVzdW1lKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgRmFzdEJpdFZlY3Rv
ciYgbGl2ZUNhbGxlZUxvY2FscykKLXsKLSAgICAvLyBPbmx5IHJlc3VtZSBjYWxsZWUgbG9jYWxz
LgotICAgIC8vIEV2ZXJ5IHRpbWUgYSBnZW5lcmF0b3IgaXMgY2FsbGVkIChvciByZXN1bWVkKSwg
cGFyYW1ldGVycyBzaG91bGQgYmUgcmVwbGFjZWQuCi0gICAgbGl2ZUNhbGxlZUxvY2Fscy5mb3JF
YWNoU2V0Qml0KFsmXShzaXplX3QgaW5kZXgpIHsKLSAgICAgICAgZXhlYy0+dW5jaGVja2VkUih2
aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChpbmRleCkpID0gbG9jYWxBdChpbmRleCkuZ2V0KCk7Ci0g
ICAgICAgIGxvY2FsQXQoaW5kZXgpLmNsZWFyKCk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgR2VuZXJh
dG9yRnJhbWU6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRv
cikKLXsKLSAgICBHZW5lcmF0b3JGcmFtZSogdGhpc09iamVjdCA9IGpzQ2FzdDxHZW5lcmF0b3JG
cmFtZSo+KGNlbGwpOwotICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRv
cik7Ci0gICAgLy8gU2luY2Ugb25seSB0cnVlIGNlbGwgcG9pbnRlcnMgYXJlIHN0b3JlZCBhcyBh
IGNlbGwsIHdlIGNhbiBzYWZlbHkgbWFyayB0aGVtLgotICAgIHZpc2l0b3IuYXBwZW5kVmFsdWVz
KHRoaXNPYmplY3QtPmxvY2FscygpLCB0aGlzT2JqZWN0LT5tX251bWJlck9mQ2FsbGVlTG9jYWxz
KTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9HZW5lcmF0b3JGcmFtZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvR2VuZXJhdG9yRnJhbWUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2Q1
NDViMTQ3ZGQ0YWJmYjJiYmI5YjVhNzE5NGU4Zjc0ODQxYzQ5YS4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9HZW5lcmF0b3JGcmFtZS5oCisrKyAvZGV2L251bGwKQEAgLTEsOTAgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaWZuZGVmIEdlbmVyYXRvckZyYW1lX2gKLSNkZWZpbmUgR2VuZXJhdG9y
RnJhbWVfaAotCi0jaW5jbHVkZSAiSlNDZWxsLmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RCaXRWZWN0
b3IuaD4KLQotbmFtZXNwYWNlIEpTQyB7Ci0KLWNsYXNzIEdlbmVyYXRvckZyYW1lIDogcHVibGlj
IEpTQ2VsbCB7Ci0gICAgZnJpZW5kIGNsYXNzIEpJVDsKLSNpZiBFTkFCTEUoREZHX0pJVCkKLSAg
ICBmcmllbmQgY2xhc3MgREZHOjpTcGVjdWxhdGl2ZUpJVDsKLSAgICBmcmllbmQgY2xhc3MgREZH
OjpKSVRDb21waWxlcjsKLSNlbmRpZgotICAgIGZyaWVuZCBjbGFzcyBWTTsKLXB1YmxpYzoKLSAg
ICB0eXBlZGVmIEpTQ2VsbCBCYXNlOwotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1
cmVGbGFncyA9IFN0cnVjdHVyZUlzSW1tb3J0YWwgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKLQot
ICAgIERFQ0xBUkVfRVhQT1JUX0lORk87Ci0KLSAgICBzdGF0aWMgR2VuZXJhdG9yRnJhbWUqIGNy
ZWF0ZShWTSYsIHNpemVfdCBudW1iZXJPZkNhbGxlZUxvY2Fscyk7Ci0KLSAgICBXcml0ZUJhcnJp
ZXJCYXNlPFVua25vd24+KiBsb2NhbHMoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGJpdHdpc2Vf
Y2FzdDxXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+Kj4oYml0d2lzZV9jYXN0PGNoYXIqPih0aGlz
KSArIG9mZnNldE9mTG9jYWxzKCkpOwotICAgIH0KLQotICAgIFdyaXRlQmFycmllckJhc2U8VW5r
bm93bj4mIGxvY2FsQXQoc2l6ZV90IGluZGV4KQotICAgIHsKLSAgICAgICAgQVNTRVJUKGluZGV4
IDwgbV9udW1iZXJPZkNhbGxlZUxvY2Fscyk7Ci0gICAgICAgIHJldHVybiBsb2NhbHMoKVtpbmRl
eF07Ci0gICAgfQotCi0gICAgc3RhdGljIHNpemVfdCBvZmZzZXRPZkxvY2FscygpCi0gICAgewot
ICAgICAgICByZXR1cm4gV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mPHNpemVvZihXcml0ZUJhcnJp
ZXI8VW5rbm93bj4pPihzaXplb2YoR2VuZXJhdG9yRnJhbWUpKTsKLSAgICB9Ci0KLSAgICBzdGF0
aWMgc2l6ZV90IGFsbG9jYXRpb25TaXplRm9yTG9jYWxzKHVuc2lnbmVkIG51bWJlck9mTG9jYWxz
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIG9mZnNldE9mTG9jYWxzKCkgKyBudW1iZXJPZkxvY2Fs
cyAqIHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pOwotICAgIH0KLQotICAgIHN0YXRpYyBT
dHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBw
cm90b3R5cGUpOwotCi0gICAgdm9pZCBzYXZlKEV4ZWNTdGF0ZSosIGNvbnN0IEZhc3RCaXRWZWN0
b3ImIGxpdmVDYWxsZWVMb2NhbHMpOwotICAgIHZvaWQgcmVzdW1lKEV4ZWNTdGF0ZSosIGNvbnN0
IEZhc3RCaXRWZWN0b3ImIGxpdmVDYWxsZWVMb2NhbHMpOwotCi1wcml2YXRlOgotICAgIEdlbmVy
YXRvckZyYW1lKFZNJiwgc2l6ZV90IG51bWJlck9mQ2FsbGVlTG9jYWxzKTsKLQotICAgIHNpemVf
dCBtX251bWJlck9mQ2FsbGVlTG9jYWxzOwotCi0gICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0
c0V4dHJhY3RvcjsKLQotICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKLQotcHJvdGVjdGVk
OgotICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsK
LX07Ci0KLX0gLy8gbmFtZXNwYWNlIEpTQwotCi0jZW5kaWYgLy8gR2VuZXJhdG9yRnJhbWVfaApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0b3JGdW5j
dGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0b3JGdW5jdGlv
bi5oCmluZGV4IDM2ZjYxYzVmMjBmNTZiZWZkNmM1NTc4NDJiMTllMzliMTlhM2E5MTkuLmExY2Jh
ZDk0NmRjNTY4MjllZDFhMjE1NTc5MGI0NDBhOGRmNDMwMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJhdG9yRnVuY3Rpb24uaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyYXRvckZ1bmN0aW9uLmgKQEAgLTU1LDYgKzU1
LDE2IEBAIGNsYXNzIEpTR2VuZXJhdG9yRnVuY3Rpb24gOiBwdWJsaWMgSlNGdW5jdGlvbiB7CiAg
ICAgICAgIEV4ZWN1dGluZyA9IC0yLAogICAgIH07CiAKKyAgICAvLyBbdGhpc10sIEBnZW5lcmF0
b3IsIEBnZW5lcmF0b3JTdGF0ZSwgQGdlbmVyYXRvclZhbHVlLCBAZ2VuZXJhdG9yUmVzdW1lTW9k
ZSwgQGdlbmVyYXRvckZyYW1lLgorICAgIGVudW0gY2xhc3MgR2VuZXJhdG9yQXJndW1lbnQgOiBp
bnQzMl90IHsKKyAgICAgICAgVGhpc1ZhbHVlID0gMCwKKyAgICAgICAgR2VuZXJhdG9yID0gMSwK
KyAgICAgICAgU3RhdGUgPSAyLAorICAgICAgICBWYWx1ZSA9IDMsCisgICAgICAgIFJlc3VtZU1v
ZGUgPSA0LAorICAgICAgICBGcmFtZSA9IDUsCisgICAgfTsKKwogICAgIGNvbnN0IHN0YXRpYyB1
bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwogCiAgICAgREVD
TEFSRV9FWFBPUlRfSU5GTzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCA4
ODEzMWJmNWIzMDkwYWJkYWU0Yjk5NDUxYjQxNzFjYjVmZTJjNDVjLi5jMzAxMjJjNWFmMzNjODA3
ZmU5YTY1YTE4ZmU2Zjg1NDcwZWQwYTZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0u
Y3BwCkBAIC00Niw3ICs0Niw2IEBACiAjaW5jbHVkZSAiRlRMVGh1bmtzLmgiCiAjaW5jbHVkZSAi
RnVuY3Rpb25Db25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkdDQWN0aXZpdHlDYWxsYmFjay5oIgot
I2luY2x1ZGUgIkdlbmVyYXRvckZyYW1lLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAj
aW5jbHVkZSAiSGVhcC5oIgogI2luY2x1ZGUgIkhlYXBJdGVyYXRpb25TY29wZS5oIgpAQCAtMjQw
LDcgKzIzOSw2IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAg
ICBpbmZlcnJlZFR5cGVTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBJbmZlcnJlZFR5cGU6OmNyZWF0ZVN0
cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICBpbmZlcnJlZFR5cGVUYWJsZVN0cnVj
dHVyZS5zZXQoKnRoaXMsIEluZmVycmVkVHlwZVRhYmxlOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMs
IDAsIGpzTnVsbCgpKSk7CiAgICAgZnVuY3Rpb25SYXJlRGF0YVN0cnVjdHVyZS5zZXQoKnRoaXMs
IEZ1bmN0aW9uUmFyZURhdGE6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsK
LSAgICBnZW5lcmF0b3JGcmFtZVN0cnVjdHVyZS5zZXQoKnRoaXMsIEdlbmVyYXRvckZyYW1lOjpj
cmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgZXhjZXB0aW9uU3RydWN0
dXJlLnNldCgqdGhpcywgRXhjZXB0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVs
bCgpKSk7CiAgICAgcHJvbWlzZURlZmVycmVkU3RydWN0dXJlLnNldCgqdGhpcywgSlNQcm9taXNl
RGVmZXJyZWQ6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICBpbnRl
cm5hbFByb21pc2VEZWZlcnJlZFN0cnVjdHVyZS5zZXQoKnRoaXMsIEpTSW50ZXJuYWxQcm9taXNl
RGVmZXJyZWQ6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9WTS5oCmluZGV4IDg3YmQwZTBhMjU1MzhlOGM1ZWMzMmFiZTQwMzJjNDY5
N2ViMWQwOGYuLjkxNTBiNTE1OWVlZGNhZDE4NTY0NWNkYTZjNzMwYjQ5MGVkM2U2NzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaApAQCAtMzIwLDcgKzMyMCw2IEBAIGNsYXNzIFZNIDog
cHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFZNPiB7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4g
aW5mZXJyZWRUeXBlU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGluZmVycmVkVHlw
ZVRhYmxlU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGZ1bmN0aW9uUmFyZURhdGFT
dHJ1Y3R1cmU7Ci0gICAgU3Ryb25nPFN0cnVjdHVyZT4gZ2VuZXJhdG9yRnJhbWVTdHJ1Y3R1cmU7
CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gZXhjZXB0aW9uU3RydWN0dXJlOwogICAgIFN0cm9uZzxT
dHJ1Y3R1cmU+IHByb21pc2VEZWZlcnJlZFN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJl
PiBpbnRlcm5hbFByb21pc2VEZWZlcnJlZFN0cnVjdHVyZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL0Zhc3RCaXRWZWN0b3IuaCBiL1NvdXJjZS9XVEYvd3RmL0Zhc3RCaXRWZWN0b3IuaApp
bmRleCA5OGZmZjVjZjczNTNlNmJjNjdkYTVjNTU5NDBjY2NlNGU0YjE1NmQwLi5mZjAwYjdiNTRk
NGEwY2ZmNGJlZjdkMDM4NTRkZTZiOTBjZTFkYjkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi9GYXN0Qml0VmVjdG9yLmgKKysrIGIvU291cmNlL1dURi93dGYvRmFzdEJpdFZlY3Rvci5oCkBA
IC0yMyw4ICsyMyw3IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCi0jaWZuZGVmIEZhc3RCaXRW
ZWN0b3JfaAotI2RlZmluZSBGYXN0Qml0VmVjdG9yX2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVk
ZSA8c3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KQEAgLTM2LDEyICszNSwx
NCBAQCBjbGFzcyBQcmludFN0cmVhbTsKIAogY2xhc3MgRmFzdEJpdFZlY3RvciB7CiBwdWJsaWM6
Ci0gICAgRmFzdEJpdFZlY3RvcigpCi0gICAgICAgIDogbV9hcnJheSgwKQotICAgICAgICAsIG1f
bnVtQml0cygwKQorICAgIEZhc3RCaXRWZWN0b3IoKSA9IGRlZmF1bHQ7CisKKyAgICBGYXN0Qml0
VmVjdG9yKEZhc3RCaXRWZWN0b3ImJiBvdGhlcikKKyAgICAgICAgOiBtX2FycmF5KHN0ZDo6ZXhj
aGFuZ2Uob3RoZXIubV9hcnJheSwgbnVsbHB0cikpCisgICAgICAgICwgbV9udW1CaXRzKHN0ZDo6
ZXhjaGFuZ2Uob3RoZXIubV9udW1CaXRzLCAwKSkKICAgICB7CiAgICAgfQotICAgIAorCiAgICAg
RmFzdEJpdFZlY3Rvcihjb25zdCBGYXN0Qml0VmVjdG9yJiBvdGhlcikKICAgICAgICAgOiBtX2Fy
cmF5KDApCiAgICAgICAgICwgbV9udW1CaXRzKDApCkBAIC0yMDIsMTMgKzIwMywxMCBAQCBjbGFz
cyBGYXN0Qml0VmVjdG9yIHsKICAgICBzdGF0aWMgc2l6ZV90IGFycmF5TGVuZ3RoKHNpemVfdCBu
dW1CaXRzKSB7IHJldHVybiAobnVtQml0cyArIDMxKSA+PiA1OyB9CiAgICAgc2l6ZV90IGFycmF5
TGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gYXJyYXlMZW5ndGgobV9udW1CaXRzKTsgfQogICAgIAot
ICAgIHVpbnQzMl90KiBtX2FycmF5OyAvLyBObywgdGhpcyBjYW4ndCBiZSBhbiBzdGQ6OnVuaXF1
ZV9wdHI8dWludDMyX3RbXT4uCi0gICAgc2l6ZV90IG1fbnVtQml0czsKKyAgICB1aW50MzJfdCog
bV9hcnJheSB7IG51bGxwdHIgfTsgLy8gTm8sIHRoaXMgY2FuJ3QgYmUgYW4gc3RkOjp1bmlxdWVf
cHRyPHVpbnQzMl90W10+LgorICAgIHNpemVfdCBtX251bUJpdHMgeyAwIH07CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXVEYKIAogdXNpbmcgV1RGOjpGYXN0Qml0VmVjdG9yOwotCi0jZW5kaWYgLy8g
RmFzdEJpdFZlY3Rvcl9oCi0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0luZGV4ZWRDb250
YWluZXJJdGVyYXRvci5oIGIvU291cmNlL1dURi93dGYvSW5kZXhlZENvbnRhaW5lckl0ZXJhdG9y
LmgKaW5kZXggM2U5YjllMzdhMTI0N2Q5MDdiZTgzMGM5ZDIwMTJmNzdhMWI3Mzc3MS4uMmM0NjVi
OGZlZGZhM2QzMmNjYjVkODhlZmE0ZDY5YzZhNzRmOWQ2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvSW5kZXhlZENvbnRhaW5lckl0ZXJhdG9yLmgKKysrIGIvU291cmNlL1dURi93dGYvSW5k
ZXhlZENvbnRhaW5lckl0ZXJhdG9yLmgKQEAgLTMwLDcgKzMwLDcgQEAKIG5hbWVzcGFjZSBXVEYg
ewogCiB0ZW1wbGF0ZTxjbGFzcyBDb250YWluZXI+Ci1jbGFzcyBJbmRleGVkQ29udGFpbmVySXRl
cmF0b3IgeworY2xhc3MgSW5kZXhlZENvbnRhaW5lckl0ZXJhdG9yIDogcHVibGljIHN0ZDo6aXRl
cmF0b3I8c3RkOjpiaWRpcmVjdGlvbmFsX2l0ZXJhdG9yX3RhZywgdHlwZW5hbWUgc3RkOjpyZXN1
bHRfb2Y8ZGVjbHR5cGUoJkNvbnRhaW5lcjo6YXQpKGNvbnN0IENvbnRhaW5lciwgdW5zaWduZWQp
Pjo6dHlwZSwgc3RkOjpwdHJkaWZmX3QsIGNvbnN0IHR5cGVuYW1lIHN0ZDo6cmVzdWx0X29mPGRl
Y2x0eXBlKCZDb250YWluZXI6OmF0KShjb25zdCBDb250YWluZXIsIHVuc2lnbmVkKT46OnR5cGUq
LCBjb25zdCB0eXBlbmFtZSBzdGQ6OnJlc3VsdF9vZjxkZWNsdHlwZSgmQ29udGFpbmVyOjphdCko
Y29uc3QgQ29udGFpbmVyLCB1bnNpZ25lZCk+Ojp0eXBlJj4gewogcHVibGljOgogICAgIEluZGV4
ZWRDb250YWluZXJJdGVyYXRvcigpCiAgICAgICAgIDogbV9jb250YWluZXIobnVsbHB0cikKZGlm
ZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYTY3
ZDAwNjgwOTRhNTZhMWRkOGZkZTEwMzU0OWVkOWU0MjE5N2I5Ni4uMjY1NDllMjIwMWJhYmVkNTNl
MzU0Y2Q5ZTRkZmUzNGU5MTk5M2IzOCAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysr
IGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAxNi0wOC0yNCAgWXVzdWtl
IFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbREZHXVtGVExdIElt
cGxlbWVudCBFUzYgR2VuZXJhdG9ycyBpbiBERkcgLyBGVEwKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MjcyMworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLWFu
ZC1hcnJheS5qczogQWRkZWQuCisgICAgICAgIChmaWIpOgorICAgICAgICAqIHN0cmVzcy9nZW5l
cmF0b3ItZmliLWZ0bC1hbmQtb2JqZWN0LmpzOiBBZGRlZC4KKyAgICAgICAgKGZpYik6CisgICAg
ICAgICogc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLWFuZC1zdHJpbmcuanM6IEFkZGVkLgorICAg
ICAgICAoZmliKToKKyAgICAgICAgKiBzdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwuanM6IEFkZGVk
LgorICAgICAgICAoZmliKToKKyAgICAgICAgKiBzdHJlc3MvZ2VuZXJhdG9yLWZyYW1lLWVtcHR5
LmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZFRocm93KToKKyAgICAgICAgKHNob3VsZFRocm93
LmZpYik6CisgICAgICAgICogc3RyZXNzL2dlbmVyYXRvci1yZWR1Y2VkLXNhdmUtcG9pbnQtcHV0
LXRvLXNjb3BlLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKGdlbik6
CisgICAgICAgICogc3RyZXNzL2dlbmVyYXRvci10cmFuc2Zlci1yZWdpc3Rlci1iZXlvbmQtbXV0
aXBsZS15aWVsZHMuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoZ2Vu
KToKKwogMjAxNi0wOC0yNCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAg
ICAgIFVucmV2aWV3ZWQsIHJvbGwgb3V0IHIyMDQ5MDEsIHIyMDQ4OTcsIHIyMDQ4NjYsIHIyMDQ4
NTYsIHIyMDQ4NTQuCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0
bC1hbmQtYXJyYXkuanMgYi9KU1Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQtYXJy
YXkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZmU5Mzk4MTJmZGJhZWM2YjgzMmJmZDAwZjIxNTNkZWY4NGJiNzU5
MgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLWFu
ZC1hcnJheS5qcwpAQCAtMCwwICsxLDIzIEBACisoZnVuY3Rpb24gKCkgeworICAgIGZ1bmN0aW9u
ICpmaWIoKQorICAgIHsKKyAgICAgICAgbGV0IGEgPSAxOworICAgICAgICBsZXQgYiA9IDE7Cisg
ICAgICAgIGxldCBjID0gWyAwIF07CisgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAg
ICBjWzBdID0gYTsKKyAgICAgICAgICAgIHlpZWxkIGM7CisgICAgICAgICAgICBbYSwgYl0gPSBb
YiwgYSArIGJdOworICAgICAgICB9CisgICAgfQorCisgICAgbGV0IHZhbHVlID0gMDsKKyAgICBm
b3IgKGxldCBpID0gMDsgaSA8IDFlNDsgKytpKSB7CisgICAgICAgIGxldCBmID0gZmliKCk7Cisg
ICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwOyArK2kpIHsKKyAgICAgICAgICAgIHZhbHVl
ID0gZi5uZXh0KCkudmFsdWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHZhbHVlWzBdICE9PSAz
NTQyMjQ4NDgxNzkyNjIwMDAwMDApCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCB2
YWx1ZToke3Jlc3VsdH1gKTsKKyAgICB9Cit9KCkpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJl
c3MvZ2VuZXJhdG9yLWZpYi1mdGwtYW5kLW9iamVjdC5qcyBiL0pTVGVzdHMvc3RyZXNzL2dlbmVy
YXRvci1maWItZnRsLWFuZC1vYmplY3QuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjY3MzQwZjJlYTRjNzQzOGEy
ZDIwOWFhNDBkMDY3N2U0YWI3ZDNmYgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNz
L2dlbmVyYXRvci1maWItZnRsLWFuZC1vYmplY3QuanMKQEAgLTAsMCArMSwyMyBAQAorKGZ1bmN0
aW9uICgpIHsKKyAgICBmdW5jdGlvbiAqZmliKCkKKyAgICB7CisgICAgICAgIGxldCBhID0gMTsK
KyAgICAgICAgbGV0IGIgPSAxOworICAgICAgICBsZXQgYyA9IHsgZmliOiAwIH07CisgICAgICAg
IHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICBjLmZpYiA9IGE7CisgICAgICAgICAgICB5aWVs
ZCBjOworICAgICAgICAgICAgW2EsIGJdID0gW2IsIGEgKyBiXTsKKyAgICAgICAgfQorICAgIH0K
KworICAgIGxldCB2YWx1ZSA9IDA7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxZTQ7ICsraSkg
eworICAgICAgICBsZXQgZiA9IGZpYigpOworICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEw
MDsgKytpKSB7CisgICAgICAgICAgICB2YWx1ZSA9IGYubmV4dCgpLnZhbHVlOworICAgICAgICB9
CisgICAgICAgIGlmICh2YWx1ZS5maWIgIT09IDM1NDIyNDg0ODE3OTI2MjAwMDAwMCkKKyAgICAg
ICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIHZhbHVlOiR7cmVzdWx0fWApOworICAgIH0KK30o
KSk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQtc3Ry
aW5nLmpzIGIvSlNUZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwtYW5kLXN0cmluZy5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40MzhhZTZhYjMzNDcwNDY4MjI4NDlmNDMwMDRlYTVjNDAzZWVkYTI4Ci0tLSAv
ZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwtYW5kLXN0cmlu
Zy5qcwpAQCAtMCwwICsxLDIyIEBACisoZnVuY3Rpb24gKCkgeworICAgIGZ1bmN0aW9uICpmaWIo
KQorICAgIHsKKyAgICAgICAgbGV0IGEgPSAxOworICAgICAgICBsZXQgYiA9IDE7CisgICAgICAg
IGxldCBjID0gIlJlc3VsdCEgIjsKKyAgICAgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgICAg
IHlpZWxkIGMgKyBhOworICAgICAgICAgICAgW2EsIGJdID0gW2IsIGEgKyBiXTsKKyAgICAgICAg
fQorICAgIH0KKworICAgIGxldCB2YWx1ZSA9IDA7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAx
ZTQ7ICsraSkgeworICAgICAgICBsZXQgZiA9IGZpYigpOworICAgICAgICBmb3IgKGxldCBpID0g
MDsgaSA8IDEwMDsgKytpKSB7CisgICAgICAgICAgICB2YWx1ZSA9IGYubmV4dCgpLnZhbHVlOwor
ICAgICAgICB9CisgICAgICAgIGlmICh2YWx1ZSAhPT0gYFJlc3VsdCEgMzU0MjI0ODQ4MTc5MjYy
MDAwMDAwYCkKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIHZhbHVlOiR7cmVzdWx0
fWApOworICAgIH0KK30oKSk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9nZW5lcmF0b3It
ZmliLWZ0bC5qcyBiL0pTVGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjM0MGUzM2RiYzg2OGJlYTdhODkzYzllYzE2Yjc3OWVjMjZiZGIxOWMKLS0tIC9kZXYvbnVs
bAorKysgYi9KU1Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC5qcwpAQCAtMCwwICsxLDIx
IEBACisoZnVuY3Rpb24gKCkgeworICAgIGZ1bmN0aW9uICpmaWIoKQorICAgIHsKKyAgICAgICAg
bGV0IGEgPSAxOworICAgICAgICBsZXQgYiA9IDE7CisgICAgICAgIHdoaWxlICh0cnVlKSB7Cisg
ICAgICAgICAgICB5aWVsZCBhOworICAgICAgICAgICAgW2EsIGJdID0gW2IsIGEgKyBiXTsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIGxldCB2YWx1ZSA9IDA7CisgICAgZm9yIChsZXQgaSA9IDA7
IGkgPCAxZTQ7ICsraSkgeworICAgICAgICBsZXQgZiA9IGZpYigpOworICAgICAgICBmb3IgKGxl
dCBpID0gMDsgaSA8IDEwMDsgKytpKSB7CisgICAgICAgICAgICB2YWx1ZSA9IGYubmV4dCgpLnZh
bHVlOworICAgICAgICB9CisgICAgICAgIGlmICh2YWx1ZSAhPT0gMzU0MjI0ODQ4MTc5MjYyMDAw
MDAwKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgdmFsdWU6JHtyZXN1bHR9YCk7
CisgICAgfQorfSgpKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2dlbmVyYXRvci1mcmFt
ZS1lbXB0eS5qcyBiL0pTVGVzdHMvc3RyZXNzL2dlbmVyYXRvci1mcmFtZS1lbXB0eS5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi41OWU4ODU1YmZhYzNjNTZkZjkyNmFiZDQyOGMwMTNjMzM0MTYyNzQ2Ci0tLSAvZGV2
L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZyYW1lLWVtcHR5LmpzCkBAIC0w
LDAgKzEsMzQgQEAKK2Z1bmN0aW9uIHNob3VsZFRocm93KGZ1bmMsIGVycm9yTWVzc2FnZSkgewor
ICAgIHZhciBlcnJvclRocm93biA9IGZhbHNlOworICAgIHZhciBlcnJvciA9IG51bGw7CisgICAg
dHJ5IHsKKyAgICAgICAgZnVuYygpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgZXJyb3JU
aHJvd24gPSB0cnVlOworICAgICAgICBlcnJvciA9IGU7CisgICAgfQorICAgIGlmICghZXJyb3JU
aHJvd24pCisgICAgICAgIHRocm93IG5ldyBFcnJvcignbm90IHRocm93bicpOworICAgIGlmIChT
dHJpbmcoZXJyb3IpICE9PSBlcnJvck1lc3NhZ2UpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihg
YmFkIGVycm9yOiAke1N0cmluZyhlcnJvcil9YCk7Cit9CisKK3Nob3VsZFRocm93KGZ1bmN0aW9u
ICgpIHsKKyAgICBmdW5jdGlvbiAqZmliKGZsYWcpCisgICAgeworICAgICAgICBsZXQgYSA9IDE7
CisgICAgICAgIGxldCBiID0gMTsKKyAgICAgICAgeWllbGQgNDI7CisgICAgICAgIGlmIChmbGFn
KQorICAgICAgICAgICAgcmV0dXJuIGM7CisgICAgICAgIGxldCBjID0gNTAwOworICAgIH0KKwor
ICAgIGxldCB2YWx1ZSA9IDA7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxZTQ7ICsraSkgewor
ICAgICAgICBmb3IgKGxldCB2IG9mIGZpYihmYWxzZSkpIHsKKyAgICAgICAgfQorICAgIH0KKyAg
ICBmb3IgKGxldCB2IG9mIGZpYih0cnVlKSkgeworICAgIH0KK30sIGBSZWZlcmVuY2VFcnJvcjog
Q2Fubm90IGFjY2VzcyB1bmluaXRpYWxpemVkIHZhcmlhYmxlLmApOwpkaWZmIC0tZ2l0IGEvSlNU
ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXJlZHVjZWQtc2F2ZS1wb2ludC1wdXQtdG8tc2NvcGUuanMg
Yi9KU1Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItcmVkdWNlZC1zYXZlLXBvaW50LXB1dC10by1zY29w
ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5jMGM3NWZhNDkxNDNjMTdiZTE0ZjMyODFlM2Y2NTQzNGYzNTEzOWU4
Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXJlZHVjZWQtc2F2
ZS1wb2ludC1wdXQtdG8tc2NvcGUuanMKQEAgLTAsMCArMSwyOCBAQAorZnVuY3Rpb24gc2hvdWxk
QmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCB2YWx1ZTogJHtTdHJpbmcoYWN0dWFsKX1gKTsKK30K
KworZnVuY3Rpb24gZXJyb3IoKQoreworICAgIHRocm93ICJvayI7Cit9CisKK2Z1bmN0aW9uKiBn
ZW4oKQoreworICAgIHZhciB2YWx1ZSA9IDQyOworICAgIHRyeSB7CisgICAgICAgIHlpZWxkIDMw
MDsKKyAgICAgICAgdmFsdWUgPSA1MDA7CisgICAgICAgIGVycm9yKCk7CisgICAgfSBjYXRjaCAo
ZSkgeworICAgICAgICB5aWVsZCA0MjsKKyAgICAgICAgcmV0dXJuIHZhbHVlOworICAgIH0KKyAg
ICByZXR1cm4gMjAwOworfQorCit2YXIgZyA9IGdlbigpOworc2hvdWxkQmUoZy5uZXh0KCkudmFs
dWUsIDMwMCk7CitzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgNDIpOworc2hvdWxkQmUoZy5uZXh0
KCkudmFsdWUsIDUwMCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItdHJh
bnNmZXItcmVnaXN0ZXItYmV5b25kLW11dGlwbGUteWllbGRzLmpzIGIvSlNUZXN0cy9zdHJlc3Mv
Z2VuZXJhdG9yLXRyYW5zZmVyLXJlZ2lzdGVyLWJleW9uZC1tdXRpcGxlLXlpZWxkcy5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5mZTIwOGY1ODEyOTZmOWFlMDhhNmJmYjM5OGI0ODIyNTc0MmQ2Yjc4Ci0tLSAvZGV2
L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXRyYW5zZmVyLXJlZ2lzdGVyLWJl
eW9uZC1tdXRpcGxlLXlpZWxkcy5qcwpAQCAtMCwwICsxLDE4IEBACitmdW5jdGlvbiBzaG91bGRC
ZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAg
ICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKworCitmdW5j
dGlvbiAqZ2VuKCkKK3sKKyAgICB2YXIgdGVzdCA9IDQyOworICAgIHlpZWxkIDMyOworICAgIHlp
ZWxkIDMzOworICAgIHlpZWxkIHRlc3Q7Cit9CisKK3ZhciBnID0gZ2VuKCk7CitzaG91bGRCZShn
Lm5leHQoKS52YWx1ZSwgMzIpOworc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIDMzKTsKK3Nob3Vs
ZEJlKGcubmV4dCgpLnZhbHVlLCA0Mik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>286935</attachid>
            <date>2016-08-24 19:58:52 -0700</date>
            <delta_ts>2016-08-25 11:34:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-152723-20160825115650.patch</filename>
            <type>text/plain</type>
            <size>191635</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA0OTUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
ODg4NTQ1MDJhODY4NzA3YmJkOTdmOWZmODhlOTQwMzcxYjFmMzczLi4yMThjMTlhMDcxZmE4OTRl
M2Y1Zjc1MDQ3MzVkZWVhM2U0NjUyMDY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNjEgQEAKKzIwMTYtMDgtMjQgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0RGR11bRlRMXSBJbXBsZW1lbnQgRVM2IEdlbmVyYXRvcnMgaW4g
REZHIC8gRlRMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNTI3MjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUaGlzIHBhdGNoIGludHJvZHVjZXMgREZHIGFuZCBGVEwgc3VwcG9ydCBmb3IgRVM2IGdlbmVy
YXRvcnMuCisgICAgICAgIEVTNiBnZW5lcmF0b3IgaXMgY29tcGlsZWQgYnkgdGhlIEJ5dGVjb2Rl
R2VuZXJhdG9yLiBCdXQgYXQgdGhlIGxhc3QgcGhhc2UsIEJ5dGVjb2RlR2VuZXJhdG9yIHBlcmZv
cm1zICJnZW5lcmF0b3JpZmljYXRpb24iIG9udG8gdGhlIHVubGlua2VkIGNvZGUuCisgICAgICAg
IEluIEJ5dGVjb2RlR2VuZXJhdG9yIHBoYXNlLCB3ZSBqdXN0IGVtaXQgb3BfeWllbGQgZm9yIGVh
Y2ggeWllbGQgcG9pbnQuIEFuZCB3ZSBkb24ndCBlbWl0IGFueSBnZW5lcmF0b3IgcmVsYXRlZCBz
d2l0Y2gsIHNhdmUsIGFuZCByZXN1bWUgc2VxdWVuY2VzCisgICAgICAgIGhlcmUuIFRob3NlIGFy
ZSBlbWl0dGVkIGJ5IHRoZSBnZW5lcmF0b3JpZmljYXRpb24gcGhhc2UuCisKKyAgICAgICAgU28g
dGhlIGdyYXBoIGlzIHN1cGVyIHNpbXBsZSEgQmVmb3JlIHRoZSBnZW5lcmF0b3JpZmljYXRpb24s
IHRoZSBncmFwaCBsb29rcyBsaWtlIHRoaXMuCisKKyAgICAgICAgICAgICBvcF9lbnRlciAtPiAu
Li4uLi4gLT4gb3BfeWllbGQgLT4gLi4uLi4gLT4gb3BfeWllbGQgLT4gLi4uCisKKyAgICAgICAg
Um91Z2hseSBzcGVha2luZywgaW4gdGhlIGdlbmVyYXRvcmlmaWNhdGlvbiBwaGFzZSwgd2UgdHVy
biBvdXQgd2hpY2ggdmFyaWFibGVzIHNob3VsZCBiZSBzYXZlZCBhbmQgcmVzdW1lZCBhdCBlYWNo
IG9wX3lpZWxkLgorICAgICAgICBUaGlzIGlzIGRvbmUgYnkgbGl2ZW5lc3MgYW5hbHlzaXMuIEFm
dGVyIHRoYXQsIHdlIGNvbnZlcnQgb3BfeWllbGQgdG8gdGhlIHNlcXVlbmNlIG9mICJvcF9wdXRf
dG9fc2NvcGUiLCAib3BfcmV0IiwgYW5kICJvcF9nZXRfZnJvbV9zY29wZSIuCisgICAgICAgIG9w
X3B1dF90b19zY29wZSBhbmQgb3BfZ2V0X2Zyb21fc2NvcGUgc2VxdWVuY2VzIGFyZSBjb3JyZXNw
b25kaW5nIHRvIHRoZSBzYXZlIGFuZCByZXN1bWUgc2VxdWVuY2VzLiBXZSBzZXQgdXAgdGhlIHNj
b3BlIGZvciB0aGUgZ2VuZXJhdG9yIGZyYW1lIGFuZAorICAgICAgICBwZXJmb3JtIG9wX3B1dF90
b19zY29wZSBhbmQgb3BfZ2V0X2Zyb21fc2NvcGUgb250byBpdC4gVGhlIGxpdmUgcmVnaXN0ZXJz
IGFyZSBzYXZlZCBhbmQgcmVzdW1lZCBvdmVyIHRoZSBnZW5lcmF0b3IncyBuZXh0KCkgY2FsbHMg
YnkgdXNpbmcgdGhpcworICAgICAgICBzcGVjaWFsIGdlbmVyYXRvciBmcmFtZSBzY29wZS4gQW5k
IHdlIGFsc28gc2V0IHVwIHRoZSBnbG9iYWwgc3dpdGNoIGZvciB0aGUgZ2VuZXJhdG9yLgorCisg
ICAgICAgIEluIHRoZSBnZW5lcmF0b3JpZmljYXRpb24gcGhhc2UsCisKKyAgICAgICAgMS4gV2Ug
Y29uc3RydWN0IHRoZSBCeXRlY29kZUdyYXBoIGZyb20gdGhlIHVubGlua2VkIGluc3RydWN0aW9u
cy4gVGhpcyBjb25zdHJ1Y3RzIHRoZSBiYXNpYyBibG9ja3MsIGFuZCBpdCBpcyB1c2VkIGluIHRo
ZSBzdWJzZXF1ZW50IGFuYWx5c2lzLgorICAgICAgICAyLiBXZSBwZXJmb3JtIHRoZSBhbmFseXNp
cyBvbnRvIHRoZSB1bmxpbmtlZCBjb2RlLiBXZSBleHRyYWN0IHRoZSBsaXZlIHZhcmlhYmxlcyBh
dCBlYWNoIG9wX3lpZWxkLgorICAgICAgICAzLiBXZSBpbnNlcnQgdGhlIGdldF9mcm9tX3Njb3Bl
IGFuZCBwdXRfdG9fc2NvcGUgYXQgZWFjaCBvcF95aWVsZC4gV2hpY2ggcmVnaXN0ZXJzIHNob3Vs
ZCBiZSBzYXZlZCBhbmQgcmVzdW1lZCBpcyBvZmZlcmVkIGJ5ICgyKS4KKyAgICAgICAgICAgVGhl
biwgY2xpcCB0aGUgb3BfeWllbGQgdGhlbXNlbHZlcy4gQW5kIHdlIGFsc28gaW5zZXJ0IHRoZSBz
d2l0Y2hfaW1tLiBUaGUganVtcCB0YXJnZXRzIG9mIHRoaXMgc3dpdGNoIGFyZSBqdXN0IGFmdGVy
IHRoaXMgb3Bfc3dpdGNoX2ltbSBhbmQgZWFjaCBvcF95aWVsZCBwb2ludC4KKworICAgICAgICBP
bmUgaW50ZXJlc3RpbmcgcG9pbnQgaXMgdGhlIHRyeS1yYW5nZS4gV2Ugc3BsaXQgdGhlIHRyeS1y
YW5nZSBhdCB0aGUgb3BfeWllbGQgcG9pbnQgaW4gQnl0ZWNvZGVHZW5lcmF0b3IgcGhhc2UuIFRo
aXMgZHJvcHMgdGhlIGhhY2t5IHRoaW5nIHRoYXQgaXMgaW50cm9kdWNlZCBpbiBbMV0uCisgICAg
ICAgIElmIHRoZSB0cnktcmFuZ2UgY292ZXJzIHRoZSByZXN1bWUgc2VxdWVuY2VzLCB0aGUgZXhj
ZXB0aW9uJ3MgcmVnaXN0ZXIgaXMgdG91Y2hlZCBhcyBgdXNlZGAgZXZlbiBpZiB3ZSBkb24ndCBw
cm9wZXJseSByZXN1bWUgdGhlIHJlZ2lzdGVycyBpbiB0aGUgcmVzdW1lIHNlcXVlbmNlIHlldC4K
KyAgICAgICAgUHJldmlvdXNseSwgd2UgaGFuZGxlIHRoaXMgZWRnZSBjYXNlIGJ5IHRyZWF0aW5n
IG9wX3Jlc3VtZSBzcGVjaWFsbHkgaW4gdGhlIGxpdmVuZXNzIGFuYWx5c2lzWzFdLiBXZSBzcGxp
dCB0aGUgdHJ5LXJhbmdlIG5vdCB0byBjb3ZlciB0aGlzIHJlc3VtZSBzZXF1ZW5jZSB0byBhdm9p
ZCB0aGlzIHByb2JsZW0uCisKKyAgICAgICAgT0suIExldCdzIHNob3cgdGhlIGRldGFpbGVkIGV4
YW1wbGUuCisKKyAgICAgICAgICAgIDEuIEZpcnN0LCB0aGVyZSBpcyB0aGUgbm9ybWFsIGJ5dGVj
b2RlIHNlcXVlbmNlLiBIZXJlLCB8IHJlcHJlc2VudHMgdGhlIG9mZnNldHMsIGFuZCBbXSByZXBy
ZXNlbnRzIHRoZSBieXRlY29kZXMuCisKKyAgICAgICAgICAgICAgICBieXRlY29kZXMgICB8IFsg
XSB8IFsgXSB8IFsgXSB8IFsgXSB8IFsgXSB8IFsgXSB8CisgICAgICAgICAgICAgICAgdHJ5LXJh
bmdlICAgPC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPgorCisgICAgICAgICAg
ICAyLiBXaGVuIHdlIGVtaXQgdGhlIG9wX3lpZWxkIGluIHRoZSBieXRlY29kZSBnZW5lcmF0b3Is
IHdlIGNhcmVmdWxseSBzcGxpdCB0aGUgdHJ5LXJhbmdlLgorCisgICAgICAgICAgICAgICAgYnl0
ZWNvZGVzICAgfCBbIF0gfCBbIF0gfCBbb3BfeWllbGRdIHwgWyBdIHwgWyBdIHwgWyBdIHwKKyAg
ICAgICAgICAgICAgICB0cnktcmFuZ2UgICA8LS0tLS0tLS0tLS0+ICAgICAgICAgICAgPC0tLS0t
LS0tLS0tLS0tLS0tPgorCisgICAgICAgICAgICAzLiBBbmQgaW4gdGhlIGdlbmVyYXRvcmlmaWNh
dGlvbiBwaGFzZSwgd2UgaW5zZXJ0IHRoZSBzd2l0Y2gncyBqdW1wIHRhcmdldCBhbmQgc2F2ZSAm
IHJlc3VtZSBzZXF1ZW5jZXMuIEFuZCB3ZSBhbHNvIGRyb3Agb3BfeWllbGQuCisKKyAgICAgICAg
ICAgICAgICBJbnNlcnQgc2F2ZSBzZXEgYmVmb3JlIG9wX3lpZWxkLiAgICBJbnNlcnQgcmVzdW1l
IHNlcSBiZWZvcmUgdGhlIGJ5dGVjb2RlIHRoYXQgaXMganVzdCBhZnRlciBvcF95aWVsZC4KKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYgICAgICAgICAgICB2CisgICAg
ICAgICAgICAgICAgYnl0ZWNvZGVzICAgfCBbIF0gfCBbIF0gfCBbb3BfeWllbGRdIHwgWyBdIHwg
WyBdIHwgWyBdIHwKKyAgICAgICAgICAgICAgICB0cnktcmFuZ2UgICA8LS0tLS0tLS0tLS0+ICAg
ICBeICAgICAgPC0tLS0tLS0tLS0tLS0tLS0tPgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIF4gICAgIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSnVtcCB0
byBoZXJlLiAgICBEcm9wIHRoaXMgb3BfeWllbGQuCisKKyAgICAgICAgICAgIDQuIFRoZSBmaW5h
bCBsYXlvdXQgaXMgdGhlIGZvbGxvd2luZy4KKworICAgICAgICAgICAgICAgIGJ5dGVjb2RlcyAg
IHwgWyBdIHwgWyBdW3NhdmUgc2VxXVtvcF9yZXRdIHwgW3Jlc3VtZSBzZXFdIHwgWyBdIHwgWyBd
IHwgWyBdIHwKKyAgICAgICAgICAgICAgICB0cnktcmFuZ2UgICA8LS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0+ICAgICAgICAgICAgICAgPC0tLS0tLS0tLS0tLS0tLS0+CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEp1bXAgdG8gaGVyZS4KKwor
ICAgICAgICBUaGUgcmV3cml0aW5nIGRvbmUgYnkgdGhlIEJ5dGVjb2RlUmV3cml0ZXIgaXMgZXhl
Y3V0ZWQgaW4gYSBiYXRjaCBtYW5uZXIuIFNpbmNlIHRoZXNlIG1vZGlmaWNhdGlvbiBjaGFuZ2Vz
IHRoZSBiYXNpYyBibG9ja3MgYW5kIHNpemUgb2YgdW5saW5rZWQgaW5zdHJ1Y3Rpb25zLAorICAg
ICAgICBCeXRlY29kZVJld3JpdGVyIGFsc28gcGVyZm9ybXMgdGhlIG9mZnNldCBhZGp1c3RtZW50
IGZvciBVbmxpbmtlZENvZGVCbG9jay4gU28sIHRoaXMgcmV3cml0aW5nIGlzIHBlcmZvcm1lZCBv
bnRvIHRoZSBCeXRlY29kZUdyYXBoIHJhdGhlciB0aGFuIEJ5dGVjb2RlQmFzaWNCbG9jay4KKyAg
ICAgICAgVGhlIHJlYXNvbiB3aHkgd2UgdGFrZSB0aGlzIGRlc2lnbiBpcyBzaW1wbGU6IHdlIGRv
bid0IHdhbnQgdG8gbmV3bHkgY3JlYXRlIHRoZSBiYXNpYyBibG9ja3MgYW5kIG9wY29kZXMgZm9y
IHRoaXMgZWFybHkgcGhhc2UgbGlrZSBERkcuIEluc3RlYWQsIHdlIHBlcmZvcm0gdGhlCisgICAg
ICAgIG1vZGlmaWNhdGlvbiBhbmQgYWRqdXN0bWVudCB0byB0aGUgdW5saW5rZWQgaW5zdHJ1Y3Rp
b25zIGFuZCBVbmxpbmtlZENvZGVCbG9jayBpbiBhIGluLXBsYWNlIG1hbm5lci4KKworICAgICAg
ICBBZnRlciB0aGF0IHBoYXNlLCB0aGUgZGF0YSBmbG93IG9mIHRoZSBnZW5lcmF0b3Itc2F2ZWQt
YW5kLXJlc3VtZWQtcmVnaXN0ZXJzIGFyZSBleHBsaWNpdGx5IHJlcHJlc2VudGVkIGJ5IHRoZSBn
ZXRfZnJvbV9zY29wZSBhbmQgcHV0X3RvX3Njb3BlLgorICAgICAgICBBbmQgdGhlIHN3aXRjaCBp
cyBpbnNlcnRlZCB0byByZXByZXNlbnQgdGhlIGFjdHVhbCBjb250cm9sIGZsb3cgZm9yIHRoZSBn
ZW5lcmF0b3IuIEFuZCBvcF95aWVsZCBpcyByZW1vdmVkLiBTaW5jZSB3ZSB1c2UgdGhlIGV4aXN0
aW5nIGJ5dGVjb2RlcyAob3Bfc3dpdGNoX2ltbSwgb3BfcHV0X3RvX3Njb3BlCisgICAgICAgIG9w
X3JldCwgYW5kIG9wX2dldF9mcm9tX3Njb3BlKSwgREZHIGFuZCBGVEwgY2hhbmdlcyBhcmUgbm90
IG5lY2Vzc2FyeS4gVGhpcyBwYXRjaCBhbHNvIGRyb3BzIGRhdGEgc3RydWN0dXJlcyBhbmQgaW1w
bGVtZW50YXRpb25zIGZvciB0aGUgb2xkIGdlbmVyYXRvciwKKyAgICAgICAgb3BfcmVzdW1lLCBv
cF9zYXZlIGltcGxlbWVudGF0aW9ucyBhbmQgR2VuZXJhdG9yRnJhbWUuCisKKyAgICAgICAgTm90
ZSB0aGF0IHRoaXMgcGF0Y2ggZG9lcyBub3QgbGV2ZXJhZ2UgdGhlIHJlY2VudCBtdWx0aSBlbnRy
eXBvaW50cyBzdXBwb3J0IGluIEIzLiBBZnRlciB0aGlzIHBhdGNoIGlzIGludHJvZHVjZWQsIHdl
IHdpbGwgc3VibWl0IGEgbmV3IHBhdGNoIHRoYXQgbGV2ZXJhZ2VzIHRoZSBtdWx0aQorICAgICAg
ICBlbnRyeXBvaW50cyBmb3IgZ2VuZXJhdG9yJ3MgcmVzdW1lIGFuZCBzZWVzIHRoZSBwZXJmb3Jt
YW5jZSBnYWluLgorCisgICAgICAgIFRPRE86IFBlcmYgVEJBIGhlcmUuCisKKyAgICAgICAgWzFd
OiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU5MjgxCisKKyAgICAg
ICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJ1aWx0aW5zL0dlbmVyYXRvclByb3RvdHlwZS5q
czoKKyAgICAgICAgKGdsb2JhbFByaXZhdGUuZ2VuZXJhdG9yUmVzdW1lKToKKyAgICAgICAgKiBi
eXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suY3BwOgorICAgICAgICAoSlNDOjppc0JyYW5jaCk6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlQmFzaWNCbG9jazo6Y29tcHV0ZUJ5dGVjb2RlQmFzaWNC
bG9ja3NJbnRlcm5hbCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlQmFzaWNCbG9jazo6Y29tcHV0
ZUJ5dGVjb2RlQmFzaWNCbG9ja3MpOgorICAgICAgICAoSlNDOjpsaW5rQmxvY2tzKTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6Y29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MpOiBEZWxldGVkLgor
ICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5oOgorICAgICAgICAoSlNDOjpC
eXRlY29kZUJhc2ljQmxvY2s6OmJ5dGVjb2RlT2Zmc2V0cyk6CisgICAgICAgIChKU0M6OkJ5dGVj
b2RlQmFzaWNCbG9jazo6c3VjY2Vzc29ycyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlQmFzaWNC
bG9jazo6aW5kZXgpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUJhc2ljQmxvY2s6OmFkZFN1Y2Nl
c3Nvcik6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3Bw
OiBBZGRlZC4KKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb246OkJ5dGVj
b2RlR2VuZXJhdG9yaWZpY2F0aW9uKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3Jp
ZmljYXRpb246OmdyYXBoKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRp
b246OnlpZWxkcyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uOjpl
bnRlclBvaW50KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb246OnN0
b3JhZ2VGb3JHZW5lcmF0b3JMb2NhbCk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckxpdmVuZXNz
QW5hbHlzaXM6OkdlbmVyYXRvckxpdmVuZXNzQW5hbHlzaXMpOgorICAgICAgICAoSlNDOjpHZW5l
cmF0b3JMaXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAg
ICAgICAgKEpTQzo6R2VuZXJhdG9yTGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0ZVVzZXNGb3JCeXRl
Y29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckxpdmVuZXNzQW5hbHlzaXM6OnJ1
bik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uOjpydW4pOgorICAg
ICAgICAoSlNDOjpwZXJmb3JtR2VuZXJhdG9yaWZpY2F0aW9uKToKKyAgICAgICAgKiBieXRlY29k
ZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzSW5saW5lcy5oLgorICAg
ICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlR3JhcGguaDogQWRkZWQuCisgICAgICAgIChKU0M6OkJ5
dGVjb2RlR3JhcGg6OmNvZGVCbG9jayk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR3JhcGg6Omlu
c3RydWN0aW9ucyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR3JhcGg6OmJhc2ljQmxvY2tzSW5S
ZXZlcnNlT3JkZXIpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdyYXBoOjpibG9ja0NvbnRhaW5z
Qnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdyYXBoOjpmaW5kQmFzaWNC
bG9ja0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHcmFwaDo6Zmlu
ZEJhc2ljQmxvY2tXaXRoTGVhZGVyT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHcmFw
aDo6c2l6ZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR3JhcGg6OmF0KToKKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVHcmFwaDo6b3BlcmF0b3JbXSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR3Jh
cGg6OmJlZ2luKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHcmFwaDo6ZW5kKToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHcmFwaDo6Zmlyc3QpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdyYXBo
OjpsYXN0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHcmFwaDxCbG9jaz46OkJ5dGVjb2RlR3Jh
cGgpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uOgorICAgICAgICAqIGJ5
dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVj
b2RlTGl2ZW5lc3NBbmFseXNpczo6Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzKToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zm
c2V0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlVXNl
c0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5
c2lzOjpnZXRMaXZlbmVzc0luZm9BdEJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlRnVsbExpdmVuZXNzKToKKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlS2lsbHMpOgorICAgICAgICAoSlND
OjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmR1bXBSZXN1bHRzKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlKToKKyAgICAgICAgKEpTQzo6aXNWYWxp
ZFJlZ2lzdGVyRm9yTGl2ZW5lc3MpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpnZXRMZWFkZXJP
ZmZzZXRGb3JCYXNpY0Jsb2NrKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6ZmluZEJhc2ljQmxv
Y2tXaXRoTGVhZGVyT2Zmc2V0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6YmxvY2tDb250YWlu
c0J5dGVjb2RlT2Zmc2V0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6ZmluZEJhc2ljQmxvY2tG
b3JCeXRlY29kZU9mZnNldCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OnN0ZXBPdmVySW5zdHJ1
Y3Rpb24pOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJ5
dGVjb2RlT2Zmc2V0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Y29tcHV0ZUxvY2FsTGl2ZW5l
c3NGb3JCbG9jayk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkJ5dGVjb2RlTGl2ZW5lc3NBbmFs
eXNpczo6cnVuTGl2ZW5lc3NGaXhwb2ludCk6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUv
Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmg6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVM
aXZlbmVzc0FuYWx5c2lzSW5saW5lcy5oOgorICAgICAgICAoSlNDOjppc1ZhbGlkUmVnaXN0ZXJG
b3JMaXZlbmVzcyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlTGl2ZW5lc3NQcm9wYWdhdGlvbjxE
ZXJpdmVkQW5hbHlzaXM+OjpzdGVwT3Zlckluc3RydWN0aW9uKToKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0aW9uPERlcml2ZWRBbmFseXNpcz46OmNvbXB1dGVMb2NhbExp
dmVuZXNzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNz
UHJvcGFnYXRpb248RGVyaXZlZEFuYWx5c2lzPjo6Y29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCbG9j
ayk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlTGl2ZW5lc3NQcm9wYWdhdGlvbjxEZXJpdmVkQW5h
bHlzaXM+OjpnZXRMaXZlbmVzc0luZm9BdEJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0aW9uPERlcml2ZWRBbmFseXNpcz46OnJ1bkxpdmVuZXNz
Rml4cG9pbnQpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlUmV3cml0ZXIuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVSZXdyaXRlcjo6YXBwbHlNb2RpZmljYXRpb24pOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZVJld3JpdGVyOjpleGVjdXRlKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVSZXdyaXRlcjo6YWRqdXN0SnVtcFRhcmdldHNJbkp1bXBPcGVyYXRpb24pOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZVJld3JpdGVyOjppbnNlcnRJbXBsKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVSZXdyaXRlcjo6aW5zZXJ0U3dpdGNoSW1tZWRpYXRlSW1wbCk6CisgICAgICAgICog
Ynl0ZWNvZGUvQnl0ZWNvZGVSZXdyaXRlci5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6Qnl0ZWNv
ZGVSZXdyaXRlcjo6Q29tbWFuZDo6bGVuZ3RoKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVSZXdy
aXRlcjo6RnJhZ21lbnQ6OkZyYWdtZW50KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVSZXdyaXRl
cjo6RnJhZ21lbnQ6OmFwcGVuZCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlUmV3cml0ZXI6OkJ5
dGVjb2RlUmV3cml0ZXIpOgorICAgICAgICAoSlNDOjpCeXRlY29kZVJld3JpdGVyOjppbnNlcnRC
ZWZvcmUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZVJld3JpdGVyOjppbnNlcnRBZnRlcik6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlUmV3cml0ZXI6Omluc2VydEZyYWdtZW50QmVmb3JlKToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVSZXdyaXRlcjo6aW5zZXJ0RnJhZ21lbnRBZnRlcik6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlUmV3cml0ZXI6Omluc2VydFN3aXRjaEltbWVkaWF0ZUJlZm9yZSk6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlUmV3cml0ZXI6OnJlbW92ZUJ5dGVjb2RlKToKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVSZXdyaXRlcjo6Z3JhcGgpOgorICAgICAgICAoSlNDOjpCeXRlY29k
ZVJld3JpdGVyOjphZGp1c3RPZmZzZXQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZVJld3JpdGVy
OjphZGp1c3RPZmZzZXRXaXRoSW5zZXJ0aW9ucyk6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNv
ZGVVc2VEZWYuaDoKKyAgICAgICAgKEpTQzo6Y29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCk6
CisgICAgICAgIChKU0M6OmNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAq
IGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZHVtcEJ5
dGVjb2RlKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbik6CisgICAg
ICAgIChKU0M6OkNvZGVCbG9jazo6aGFuZGxlckZvckluZGV4KToKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjpzaHJpbmtUb0ZpdCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6dmFsdWVQcm9m
aWxlRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmxpdmVuZXNz
QW5hbHlzaXNTbG93KToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAgICAgICAg
KEpTQzo6Q29kZUJsb2NrOjppc0NvbnN0YW50UmVnaXN0ZXJJbmRleCk6CisgICAgICAgIChKU0M6
OkNvZGVCbG9jazo6bGl2ZW5lc3NBbmFseXNpcyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6
bGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQpOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2RlL0hh
bmRsZXJJbmZvLmg6CisgICAgICAgIChKU0M6OkhhbmRsZXJJbmZvQmFzZTo6aGFuZGxlckZvcklu
ZGV4KToKKyAgICAgICAgKiBieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHMuY3BwOgorICAgICAg
ICAoSlNDOjpnZXRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6
Y29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0c0ludGVybmFsKToKKyAgICAgICAgKEpTQzo6Y29tcHV0
ZVByZWNpc2VKdW1wVGFyZ2V0cyk6CisgICAgICAgIChKU0M6OnJlY29tcHV0ZVByZWNpc2VKdW1w
VGFyZ2V0cyk6CisgICAgICAgIChKU0M6OmZpbmRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0
KToKKyAgICAgICAgKiBieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHMuaDoKKyAgICAgICAgKiBi
eXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29k
ZUJsb2NrOjpoYW5kbGVyRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpVbmxpbmtl
ZENvZGVCbG9jazo6aGFuZGxlckZvckluZGV4KToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2Rl
QmxvY2s6OmFwcGx5TW9kaWZpY2F0aW9uKToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENv
ZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpVbmxpbmtlZFN0cmluZ0p1bXBUYWJsZTo6b2Zmc2V0
Rm9yVmFsdWUpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6bnVtQ2FsbGVlTG9j
YWxzKToKKyAgICAgICAgKiBieXRlY29kZS9WaXJ0dWFsUmVnaXN0ZXIuaDoKKyAgICAgICAgKiBi
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUdlbmVyYXRvcjo6Z2VuZXJhdGUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6
Qnl0ZWNvZGVHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dENvbXBsZXhQb3BTY29wZXMpOgorICAgICAgICAoSlNDOjpwcmVwYXJlSnVtcFRhYmxlRm9yU3Ry
aW5nU3dpdGNoKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRZaWVsZFBv
aW50KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRTYXZlKTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXN1bWUpOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdlbmVyYXRvclN0YXRlTGFi
ZWwpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6YmVnaW5HZW5l
cmF0b3IpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW5kR2Vu
ZXJhdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuaDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRvclN0YXRlUmVn
aXN0ZXIpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdG9yVmFsdWVS
ZWdpc3Rlcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0b3JSZXN1
bWVNb2RlUmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJh
dG9yRnJhbWVSZWdpc3Rlcik6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5j
cHA6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAg
KiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0
ZXIuY3BwOgorICAgICAgICAoSlNDOjpmaW5kRXhjZXB0aW9uSGFuZGxlcik6CisgICAgICAgIChK
U0M6OkdldENhdGNoSGFuZGxlckZ1bmN0b3I6Om9wZXJhdG9yKCkpOgorICAgICAgICAoSlNDOjpV
bndpbmRGdW5jdG9yOjpvcGVyYXRvcigpKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnBy
ZXRlci5oOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVySW5saW5lcy5oOiBDb3Bp
ZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRz
LmguCisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpnZXRPcGNvZGVJRCk6CisgICAgICAgICog
aml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcyk6
CisgICAgICAgICogaml0L0pJVC5oOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0X29wX3NhdmUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRfb3BfcmVzdW1lKTogRGVsZXRlZC4KKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbElu
dGVycHJldGVyLmFzbToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmNwcDoKKyAgICAgICAgKEpT
Qzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlSW5uZXIpOgorICAgICAgICAoSlNDOjpQYXJzZXI8
TGV4ZXJUeXBlPjo6cGFyc2VHZW5lcmF0b3JGdW5jdGlvblNvdXJjZUVsZW1lbnRzKToKKyAgICAg
ICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OmNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMpOgor
ICAgICAgICAqIHBhcnNlci9QYXJzZXIuaDoKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQ
YXRocy5jcHA6CisgICAgICAgIChKU0M6OlNMT1dfUEFUSF9ERUNMKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5oOgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJh
dG9yRnJhbWUuY3BwOiBSZW1vdmVkLgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6R2Vu
ZXJhdG9yRnJhbWUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6Zmlu
aXNoQ3JlYXRpb24pOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6Y3Jl
YXRlU3RydWN0dXJlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OmNy
ZWF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpzYXZlKTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OnJlc3VtZSk6IERlbGV0ZWQuCisg
ICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjp2aXNpdENoaWxkcmVuKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBydW50aW1lL0dlbmVyYXRvckZyYW1lLmg6IFJlbW92ZWQuCisgICAgICAgIChKU0M6
OkdlbmVyYXRvckZyYW1lOjpsb2NhbHMpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpHZW5lcmF0
b3JGcmFtZTo6bG9jYWxBdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1l
OjpvZmZzZXRPZkxvY2Fscyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1l
OjphbGxvY2F0aW9uU2l6ZUZvckxvY2Fscyk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9K
U0dlbmVyYXRvckZ1bmN0aW9uLmg6CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAg
IChKU0M6OlZNOjpWTSk6CisgICAgICAgICogcnVudGltZS9WTS5oOgorCiAyMDE2LTA4LTI0ICBC
ZW5qYW1pbiBQb3VsYWluICA8YmVuamFtaW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBbSlNDXSBN
YWtlIEZSb3VuZCB3b3JrIHdpdGggYW55IHR5cGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggYmUwOTAzOGZjYjQ5OTBjZDBhMDEw
ZDJlOGMwZjA3MzY4NTYwMzhmYy4uNTU4OTFkMDc1MjZiYzRlZmM4ODc0NmNmYTJlYTM4Njg0MDc2
YzRhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9D
aGFuZ2VMb2cKQEAgLTEsNSArMSwxNSBAQAogMjAxNi0wOC0yNCAgWXVzdWtlIFN1enVraSAgPHV0
YXRhbmUudGVhQGdtYWlsLmNvbT4KIAorICAgICAgICBbREZHXVtGVExdIEltcGxlbWVudCBFUzYg
R2VuZXJhdG9ycyBpbiBERkcgLyBGVEwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE1MjcyMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogd3RmL0Zhc3RCaXRWZWN0b3IuaDoKKyAgICAgICAgKFdURjo6RmFz
dEJpdFZlY3Rvcjo6RmFzdEJpdFZlY3Rvcik6CisKKzIwMTYtMDgtMjQgIFl1c3VrZSBTdXp1a2kg
IDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKICAgICAgICAgW0pTQ10gTW92ZSBnZW5lcmljIGRh
dGEgc3RydWN0dXJlcyBvdXQgb2YgQjMKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE2MTE1NQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQK
aW5kZXggM2VkNTRiODE3MjY4MThhMDg4NGNkYzMyNWNmMTdkZDI1YjJlYmU2MS4uM2JlZjQyY2Y4
MmFkMGU3N2Q4NTY0MDFjOTM3MGRlMDEzMDg1MjM5MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFr
ZUxpc3RzLnR4dApAQCAtMTgxLDYgKzE4MSw4IEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VT
CiAgICAgYnl0ZWNvZGUvQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAKICAgICBieXRlY29kZS9B
cnJheVByb2ZpbGUuY3BwCiAgICAgYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcAorICAg
IGJ5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcAorICAgIGJ5dGVjb2RlL0J5
dGVjb2RlUmV3cml0ZXIuY3BwCiAgICAgYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3Ry
eS5jcHAKICAgICBieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwCiAgICAgYnl0
ZWNvZGUvQ2FsbEVkZ2UuY3BwCkBAIC02NjEsNyArNjYzLDYgQEAgc2V0KEphdmFTY3JpcHRDb3Jl
X1NPVVJDRVMKICAgICBydW50aW1lL0Z1bmN0aW9uSGFzRXhlY3V0ZWRDYWNoZS5jcHAKICAgICBy
dW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcAogICAgIHJ1bnRpbWUvRnVuY3Rpb25SYXJlRGF0
YS5jcHAKLSAgICBydW50aW1lL0dlbmVyYXRvckZyYW1lLmNwcAogICAgIHJ1bnRpbWUvR2VuZXJh
dG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKICAgICBydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9u
UHJvdG90eXBlLmNwcAogICAgIHJ1bnRpbWUvR2VuZXJhdG9yUHJvdG90eXBlLmNwcApAQCAtOTc5
LDYgKzk4MCwxMCBAQCBhZGRfY3VzdG9tX2NvbW1hbmQoCiAgICAgQ09NTUFORCAke1BZVEhPTl9F
WEVDVVRBQkxFfSAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vZ2VuZXJhdGUtYnl0ZWNvZGUtZmlsZXMg
LS1ieXRlY29kZXNfaCAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0J5dGVj
b2Rlcy5oIC0taW5pdF9ieXRlY29kZXNfYXNtICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRD
T1JFX0RJUn0vSW5pdEJ5dGVjb2Rlcy5hc20gJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J5dGVjb2Rl
L0J5dGVjb2RlTGlzdC5qc29uCiAgICAgVkVSQkFUSU0pCiAKK2xpc3QoQVBQRU5EIEphdmFTY3Jp
cHRDb3JlX0hFQURFUlMKKyAgICAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9
L0J5dGVjb2Rlcy5oCispCisKIGFkZF9jdXN0b21fY29tbWFuZCgKICAgICBPVVRQVVQgJHtERVJJ
VkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9MTEludERlc2lyZWRPZmZzZXRzLmgKICAg
ICBNQUlOX0RFUEVOREVOQ1kgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L29mZmxpbmVhc20vZ2VuZXJh
dGVfb2Zmc2V0X2V4dHJhY3Rvci5yYgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBh
MWQ5ODNkOGYwMDdlOTBjMzYyYjU5OTVkNDYwZTI5MDNiMjI1M2Q2Li5hM2RkYWRkM2UwNWFiZDlh
MDAyMGUwMTc5OWEwNzgzYjMwMGI0M2NmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtMTI3MCw4ICsxMjcwLDYgQEAKIAkJNzA5RkI4NkMxQUUzMzVDNjAwMzlEMDY5IC8qIFdlYWtT
ZXRQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDcwOUZCODY2MUFFMzM1QzYwMDM5RDA2OSAvKiBXZWFrU2V0UHJvdG90eXBlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzBCMEE5RDExQTlC
NjY0NjAwMDEzMDZBIC8qIFJ1bnRpbWVGbGFncy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNzBCMEE5RDAxQTlCNjYyMDAwMDEzMDZBIC8qIFJ1bnRpbWVG
bGFncy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTcwQjc5MTkxMUMwMjRBMTMwMDI0ODFFMiAvKiBTb3VyY2VDb2RlS2V5LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEI3OTE4RTFDMDI0NEM5MDAyNDgx
RTIgLyogU291cmNlQ29kZUtleS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07Ci0JCTcwQjc5MTkyMUMwMjRBMjMwMDI0ODFFMiAvKiBHZW5lcmF0b3JGcmFt
ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEI3
OTE4MzFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnJhbWUuY3BwICovOyB9OwotCQk3MEI3
OTE5MzFDMDI0QTI4MDAyNDgxRTIgLyogR2VuZXJhdG9yRnJhbWUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwQjc5MTg0MUMwMjQ0MzIwMDI0ODFFMiAv
KiBHZW5lcmF0b3JGcmFtZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTcwQjc5MTk0MUMwMjRBMjgwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlv
bkNvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDcwQjc5MTg1MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0
cnVjdG9yLmNwcCAqLzsgfTsKIAkJNzBCNzkxOTUxQzAyNEEyODAwMjQ4MUUyIC8qIEdlbmVyYXRv
ckZ1bmN0aW9uQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDcwQjc5MTg2MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlv
bkNvbnN0cnVjdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNzBCNzkxOTYxQzAyNEEyODAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uUHJv
dG90eXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDcwQjc5MTg3MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5j
cHAgKi87IH07CkBAIC0yMDQ1LDYgKzIwNDMsMTEgQEAKIAkJRTE4RTNBNTkwREY5Mjc4QzAwRDkw
QjM0IC8qIFZNLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEUxOEUzQTU3MERGOTI3OEMwMEQ5MEIzNCAvKiBWTS5jcHAgKi87IH07CiAJCUUzMThDQkMw
MUI4QUVGNTEwMEEyOTI5RCAvKiBKU01vZHVsZU5hbWVzcGFjZU9iamVjdC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzE4Q0JCRTFCOEFFRjUxMDBB
MjkyOUQgLyogSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuY3BwICovOyB9OwogCQlFMzE4Q0JDMTFC
OEFFRjUxMDBBMjkyOUQgLyogSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMThDQkJGMUI4QUVGNTEwMEEyOTI5
RCAvKiBKU01vZHVsZU5hbWVzcGFjZU9iamVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCUUzMjhEQUU3MUQzOEQwMDQwMDFBMjUyOSAvKiBCeXRl
Y29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFM0QyNjQyNjFEMzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNvZGVHZW5l
cmF0b3JpZmljYXRpb24uY3BwICovOyB9OworCQlFMzI4REFFODFEMzhEMDA1MDAxQTI1MjkgLyog
Qnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEUzRDI2NDI3MUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRlY29kZUdl
bmVyYXRvcmlmaWNhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCUUzMjhEQUU5MUQzOEQwMDUwMDFBMjUyOSAvKiBCeXRlY29kZUdyYXBoLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0QyNjQyODFE
MzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNvZGVHcmFwaC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUUzMjhEQUVBMUQzOEQwMDUwMDFBMjUyOSAvKiBC
eXRlY29kZVJld3JpdGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEUzRDI2NDI5MUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRlY29kZVJld3JpdGVyLmNw
cCAqLzsgfTsKKwkJRTMyOERBRUIxRDM4RDAwNTAwMUEyNTI5IC8qIEJ5dGVjb2RlUmV3cml0ZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzRDI2NDJB
MUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRlY29kZVJld3JpdGVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTMzNjM3QTUxQjYzMjIwMjAwRUUwODQw
IC8qIFJlZmxlY3RPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTMzNjM3QTMxQjYzMjIwMjAwRUUwODQwIC8qIFJlZmxlY3RPYmplY3QuY3Bw
ICovOyB9OwogCQlFMzM2MzdBNjFCNjMyMjAyMDBFRTA4NDAgLyogUmVmbGVjdE9iamVjdC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMzNjM3QTQxQjYz
MjIwMjAwRUUwODQwIC8qIFJlZmxlY3RPYmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzNCM0UyNjFCN0FCRDc1MDA0OERCMkUgLyogSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0Lmx1dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMzQjNFMjUxQjdBQkQ3NTAwNDhEQjJFIC8qIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5sdXQuaCAqLzsgfTsKQEAgLTIwNjksNiArMjA3Miw3
IEBACiAJCUUzNzk0RTc1MUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFseXplci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzc5NEU3MzFCNzdF
Qjk3MDA1NTQzQUUgLyogTW9kdWxlQW5hbHl6ZXIuY3BwICovOyB9OwogCQlFMzc5NEU3NjFCNzdF
Qjk3MDA1NTQzQUUgLyogTW9kdWxlQW5hbHl6ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNzk0RTc0MUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVB
bmFseXplci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUUzOTYzQ0VFMUI3M0Y3NTAwMEVCNENFNSAvKiBOb2Rlc0FuYWx5emVNb2R1bGUuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5NjNDRUMxQjcz
Rjc1MDAwRUI0Q0U1IC8qIE5vZGVzQW5hbHl6ZU1vZHVsZS5jcHAgKi87IH07CisJCUUzOUQ0NUY1
MUQzOTAwNTYwMEIzQjM3NyAvKiBJbnRlcnByZXRlcklubGluZXMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOUQ5RDg0MUQzOTAwMDYwMDY2NzI4MiAv
KiBJbnRlcnByZXRlcklubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlFMzlEQTRBNjFCN0U4QjdDMDA4NEYzM0EgLyogSlNNb2R1bGVSZWNv
cmQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5
REE0QTQxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmNwcCAqLzsgfTsKIAkJRTM5
REE0QTcxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzlEQTRBNTFCN0U4QjdDMDA4NEYzM0Eg
LyogSlNNb2R1bGVSZWNvcmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlFM0QyMzlDODFCODI5QzFDMDBCQkVGNjcgLyogSlNNb2R1bGVFbnZpcm9u
bWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
M0QyMzlDNjFCODI5QzFDMDBCQkVGNjcgLyogSlNNb2R1bGVFbnZpcm9ubWVudC5jcHAgKi87IH07
CkBAIC0zNDkyLDggKzM0OTYsNiBAQAogCQk3MDlGQjg2NTFBRTMzNUM2MDAzOUQwNjkgLyogV2Vh
a1NldFByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBX
ZWFrU2V0UHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzA5RkI4
NjYxQUUzMzVDNjAwMzlEMDY5IC8qIFdlYWtTZXRQcm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV2Vha1NldFByb3RvdHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3MEIwQTlEMDFBOUI2NjIwMDAwMTMwNkEgLyogUnVudGltZUZsYWdzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJ1bnRpbWVGbGFncy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQk3MEI3OTE4MzFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9y
RnJhbWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR2VuZXJhdG9y
RnJhbWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3MEI3OTE4NDFDMDI0NDMy
MDAyNDgxRTIgLyogR2VuZXJhdG9yRnJhbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gR2VuZXJhdG9yRnJhbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzBC
NzkxODUxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR2VuZXJhdG9yRnVuY3Rpb25D
b25zdHJ1Y3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcwQjc5MTg2MUMw
MjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzBCNzkxODcxQzAyNDQzMjAwMjQ4MUUyIC8q
IEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTQzMzMsMTAgKzQzMzUsMTYgQEAKIAkJRTM3OTRFNzMxQjc3RUI5
NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IE1vZHVsZUFuYWx5emVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRTM3OTRFNzQxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vZHVsZUFuYWx5emVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUUzOTYzQ0VDMUI3M0Y3NTAwMEVCNENFNSAvKiBOb2Rlc0FuYWx5
emVNb2R1bGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTm9kZXNB
bmFseXplTW9kdWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM5RDlEODQx
RDM5MDAwNjAwNjY3MjgyIC8qIEludGVycHJldGVySW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBJbnRlcnByZXRlcklubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRTM5REE0QTQxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTW9kdWxlUmVjb3JkLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM5REE0QTUxQjdFOEI3QzAwODRGMzNB
IC8qIEpTTW9kdWxlUmVjb3JkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpT
TW9kdWxlUmVjb3JkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzRDIzOUM2MUI4
MjlDMUMwMEJCRUY2NyAvKiBKU01vZHVsZUVudmlyb25tZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTW9kdWxlRW52aXJvbm1lbnQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlFM0QyMzlDNzFCODI5QzFDMDBCQkVGNjcgLyogSlNNb2R1bGVF
bnZpcm9ubWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU01vZHVsZUVu
dmlyb25tZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzRDI2NDI2MUQzOEMw
NDIwMDBCRTE3NCAvKiBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzRDI2NDI3MUQzOEMwNDIwMDBCRTE3NCAv
KiBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlFM0QyNjQyODFEMzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNvZGVHcmFwaC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCeXRlY29kZUdyYXBoLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzRDI2NDI5MUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRlY29k
ZVJld3JpdGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJ5dGVj
b2RlUmV3cml0ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFM0QyNjQyQTFE
MzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNvZGVSZXdyaXRlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBCeXRlY29kZVJld3JpdGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUUzRUY4ODcyMUI2NkRGMjMwMDNGMjZDQiAvKiBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9y
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUHJvcGVydHlOYW1l
SXRlcmF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0VGODg3MzFCNjZE
RjIzMDAzRjI2Q0IgLyogSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUU0OURDMTQ5MTJFRjI2MUEwMDE4NEExRiAvKiBTb3VyY2VQcm92aWRl
ckNhY2hlSXRlbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTb3VyY2VQcm92
aWRlckNhY2hlSXRlbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTA2Myw2ICs1
MDcxLDcgQEAKIAkJMTQyOUQ3N0EwRUQyMEQ3MzAwQjg5NjE5IC8qIGludGVycHJldGVyICovID0g
ewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlFMzlEOUQ4NDFEMzkw
MDA2MDA2NjcyODIgLyogSW50ZXJwcmV0ZXJJbmxpbmVzLmggKi8sCiAJCQkJMEY1NUYwRjExNEQx
MDYzNjAwQUM3NjQ5IC8qIEFic3RyYWN0UEMuY3BwICovLAogCQkJCTBGNTVGMEYyMTREMTA2MzYw
MEFDNzY0OSAvKiBBYnN0cmFjdFBDLmggKi8sCiAJCQkJMTQyOUQ4NUIwRUQyMThFOTAwQjg5NjE5
IC8qIENMb29wU3RhY2suY3BwICovLApAQCAtNTc0Myw4ICs1NzUyLDYgQEAKIAkJCQlGNjkyQTg1
RDAyNTU1OTdEMDFGRjYwRjcgLyogRnVuY3Rpb25Qcm90b3R5cGUuaCAqLywKIAkJCQk2MkQyRDM4
RDFBREYxMDNGMDAwMjA2QzEgLyogRnVuY3Rpb25SYXJlRGF0YS5jcHAgKi8sCiAJCQkJNjJEMkQz
OEUxQURGMTAzRjAwMDIwNkMxIC8qIEZ1bmN0aW9uUmFyZURhdGEuaCAqLywKLQkJCQk3MEI3OTE4
MzFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnJhbWUuY3BwICovLAotCQkJCTcwQjc5MTg0
MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGcmFtZS5oICovLAogCQkJCTcwQjc5MTg1MUMw
MjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCAqLywKIAkJ
CQk3MEI3OTE4NjFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rv
ci5oICovLAogCQkJCTcwQjc5MTg3MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlv
blByb3RvdHlwZS5jcHAgKi8sCkBAIC02NjMwLDYgKzY2MzcsMTEgQEAKIAkJOTY5QTA3OEYwRUQx
RDNBRTAwRjFGNjgxIC8qIGJ5dGVjb2RlICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQlj
aGlsZHJlbiA9ICgKKwkJCQlFM0QyNjQyNjFEMzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNvZGVHZW5l
cmF0b3JpZmljYXRpb24uY3BwICovLAorCQkJCUUzRDI2NDI3MUQzOEMwNDIwMDBCRTE3NCAvKiBC
eXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5oICovLAorCQkJCUUzRDI2NDI4MUQzOEMwNDIwMDBC
RTE3NCAvKiBCeXRlY29kZUdyYXBoLmggKi8sCisJCQkJRTNEMjY0MjkxRDM4QzA0MjAwMEJFMTc0
IC8qIEJ5dGVjb2RlUmV3cml0ZXIuY3BwICovLAorCQkJCUUzRDI2NDJBMUQzOEMwNDIwMDBCRTE3
NCAvKiBCeXRlY29kZVJld3JpdGVyLmggKi8sCiAJCQkJNTM3MEI0RjMxQkYyNUVBMjAwNUM0MEZD
IC8qIEFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2UuY3BwICovLAog
CQkJCTUzNzBCNEY0MUJGMjVFQTIwMDVDNDBGQyAvKiBBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlW
YWx1ZVdhdGNocG9pbnRCYXNlLmggKi8sCiAJCQkJMEY4MzM1QjQxNjM5QzFFMzAwMTQ0M0I1IC8q
IEFycmF5QWxsb2NhdGlvblByb2ZpbGUuY3BwICovLApAQCAtNzE4NCw2ICs3MTk2LDcgQEAKIAkJ
CQkwRkVDODUyRDFCREFDREFDMDA4MEZGNzQgLyogQjNQcm9jZWR1cmVJbmxpbmVzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRkVDODVCRDFCRTE0NjJGMDA4MEZGNzQgLyogQjNSZWR1Y2VTdHJlbmd0
aC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQzg1MzExQkRBQ0RBQzAwODBGRjc0IC8qIEIzU3Rh
Y2ttYXBTcGVjaWFsLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzI4REFFODFEMzhEMDA1MDAxQTI1
MjkgLyogQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
RUM4NTM1MUJEQUNEQUMwMDgwRkY3NCAvKiBCM1Nsb3RCYXNlVmFsdWUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGRUM4NTM2MUJEQUNEQUMwMDgwRkY3NCAvKiBCM1N1Y2Nlc3NvckNvbGxlY3Rpb24u
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUM4NTM4MUJEQUNEQUMwMDgwRkY3NCAvKiBCM1N3aXRj
aENhc2UuaCBpbiBIZWFkZXJzICovLApAQCAtNzQ0OSw3ICs3NDYyLDYgQEAKIAkJCQlBNzM3ODEw
RTE3OTlFQTJFMDA4MTc1MzMgLyogREZHTmF0dXJhbExvb3BzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk4NkVDQTNFQTEzMkRFRjFDMDAyQjJBRDcgLyogREZHTm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEZGQjkyMUIxNkQwMkYwMTAwNTVBNURCIC8qIERGR05vZGVBbGxvY2F0b3IuaCBpbiBIZWFk
ZXJzICovLAotCQkJCTcwQjc5MTkzMUMwMjRBMjgwMDI0ODFFMiAvKiBHZW5lcmF0b3JGcmFtZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEZBNTgxQkIxNTBFOTUzMDAwQjlBMkQ5IC8qIERGR05vZGVG
bGFncy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYzMDBCNzgxOEFCMDUxMTAwQTZENzJFIC8qIERG
R05vZGVPcmlnaW4uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQTU4MUJDMTUwRTk1MzAwMEI5QTJE
OSAvKiBERkdOb2RlVHlwZS5oIGluIEhlYWRlcnMgKi8sCkBAIC03NDY0LDYgKzc0NzYsNyBAQAog
CQkJCTBGRDhBMzI2MTdENTFGNTcwMENBMkM0MCAvKiBERkdPU1JFbnRyeXBvaW50Q3JlYXRpb25Q
aGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDMDk3NkExNDY4QTZGNzAwQ0YyNDQyIC8qIERG
R09TUkV4aXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjM1QkVDMTcxNzhFNzMwMDY5MEM3RiAv
KiBERkdPU1JFeGl0QmFzZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM5RDQ1RjUxRDM5MDA1NjAw
QjNCMzc3IC8qIEludGVycHJldGVySW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGQjky
MUMxNkQwMkYxMTAwNTVBNURCIC8qIERGR09TUkV4aXRDb21waWxhdGlvbkluZm8uaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGQzA5NzcxMTQ2OTNBRjUwMENGMjQ0MiAvKiBERkdPU1JFeGl0Q29tcGls
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNzAyNUFBMTcxNEIwRkMwMDM4MkMwRSAvKiBERkdP
U1JFeGl0Q29tcGlsZXJDb21tb24uaCBpbiBIZWFkZXJzICovLApAQCAtNzcyNiw2ICs3NzM5LDcg
QEAKIAkJCQlFMzNCM0UyNjFCN0FCRDc1MDA0OERCMkUgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uT2JqZWN0Lmx1dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTUzMjQzOEMxODU2ODMzNTAwMkVE
NjkyIC8qIEluc3BlY3RvclByb3RvY29sT2JqZWN0cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU1
RDkzQUMxODUxNEY3OTAwNDAwREVEIC8qIEluc3BlY3RvclByb3RvY29sVHlwZXMuaCBpbiBIZWFk
ZXJzICovLAorCQkJCUUzMjhEQUVCMUQzOEQwMDUwMDFBMjUyOSAvKiBCeXRlY29kZVJld3JpdGVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTBFNEI2MjE4ODA5REQ1MDA2OEE0NkQgLyogSW5zcGVj
dG9yUnVudGltZUFnZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTkzQ0Y4MzE4NDAzNzcxMDBC
RkNFMjcgLyogSW5zcGVjdG9yVmFsdWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk5NjlBMDc5OTBF
RDFEM0FFMDBGMUY2ODEgLyogSW5zdHJ1Y3Rpb24uaCBpbiBIZWFkZXJzICovLApAQCAtNzg1Nyw2
ICs3ODcxLDcgQEAKIAkJCQlFMzNGNTA4MTFCODQyOUE0MDA0MTM4NTYgLyogSlNJbnRlcm5hbFBy
b21pc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNjE4MzJBMUM0NUJGMDcwMDcyNDUwQiAvKiBB
aXJDQ2FsbGluZ0NvbnZlbnRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUUzM0Y1MDc5MUI4NDIy
NTcwMDQxMzg1NiAvKiBKU0ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAq
LywKKwkJCQlFMzI4REFFOTFEMzhEMDA1MDAxQTI1MjkgLyogQnl0ZWNvZGVHcmFwaC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRTMzRjUwODcxQjg0NDlFRjAwNDEzODU2IC8qIEpTSW50ZXJuYWxQcm9t
aXNlQ29uc3RydWN0b3IubHV0LmggaW4gSGVhZGVycyAqLywKIAkJCQlFMzNGNTA4NTFCODQzN0Ew
MDA0MTM4NTYgLyogSlNJbnRlcm5hbFByb21pc2VEZWZlcnJlZC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJRTMzRjUwNzUxQjg0MjFDMDAwNDEzODU2IC8qIEpTSW50ZXJuYWxQcm9taXNlUHJvdG90eXBl
LmggaW4gSGVhZGVycyAqLywKQEAgLTg4MjMsNiArODgzOCw3IEBACiAJCQkJMTQ3RjM5QkQxMDdF
QzM3NjAwNDI3QTQ4IC8qIEFyZ0xpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY3NDNCQUEx
NkI4ODI0OTAwOUY5Mjc3IC8qIEFSTTY0RGlzYXNzZW1ibGVyLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTg2RDNCMkMzMTAxNTZCREUwMDI4NjVFNyAvKiBBUk1Bc3NlbWJsZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJRTMyOERBRTcxRDM4RDAwNDAwMUEyNTI5IC8qIEJ5dGVjb2RlR2VuZXJhdG9y
aWZpY2F0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTY1QzAyODUwMTcxNzk1RTIwMDM1MUUz
NSAvKiBBUk12N0Rpc2Fzc2VtYmxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2NUMwMjg1QzE3
MTc5NjY4MDAzNTFFMzUgLyogQVJNdjdET3Bjb2RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
ODMzNUI3MTYzOUMxRTYwMDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcCBpbiBT
b3VyY2VzICovLApAQCAtOTE1OCw2ICs5MTc0LDcgQEAKIAkJCQkwRjI1RjFCMTE4MTYzNUYzMDA1
MjJGMzkgLyogRlRMU2xvd1BhdGhDYWxsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMzM4REYx
MUJFOTNBRDEwMDEzQzg4RiAvKiBCM1N0YWNrbWFwVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMEYyNUYxQjMxODE2MzVGMzAwNTIyRjM5IC8qIEZUTFNsb3dQYXRoQ2FsbEtleS5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQlFMzI4REFFQTFEMzhEMDA1MDAxQTI1MjkgLyogQnl0ZWNvZGVSZXdy
aXRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MzE5REEwMzFDMUJFNDBBMDAxRDI2MEIgLyog
QjNMb3dlck1hY3Jvc0FmdGVyT3B0aW1pemF0aW9ucy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkw
RkVBMEExNjE3MDZCQjkwMDBCQjcyMkMgLyogRlRMU3RhdGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMEYyMzVCRTExNzE3OEUxQzAwNjkwQzdGIC8qIEZUTFRodW5rcy5jcHAgaW4gU291cmNlcyAq
LywKQEAgLTk1NjUsNyArOTU4Miw2IEBACiAJCQkJNzlFRTBCRkYxQjRBRkI4NTAwMDM4NUM5IC8q
IFZhcmlhYmxlRW52aXJvbm1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY2QzczNTAxQUM5
Rjk5RjAwQkUxNjgyIC8qIFZhcmlhYmxlV3JpdGVGaXJlRGV0YWlsLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGRTA1MDJDMUFBOTA5NTYwMEQzM0IzMyAvKiBWYXJPZmZzZXQuY3BwIGluIFNvdXJj
ZXMgKi8sCi0JCQkJNzBCNzkxOTIxQzAyNEEyMzAwMjQ4MUUyIC8qIEdlbmVyYXRvckZyYW1lLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTBGMjBDMjU5MUE4MDEzQUIwMERBMzIyOSAvKiBWaXJ0dWFs
UmVnaXN0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTE4RTNBNTkwREY5Mjc4QzAwRDkwQjM0
IC8qIFZNLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZFNTkzMkE3MTgzQzVBMjYwMEExRUNDQyAv
KiBWTUVudHJ5U2NvcGUuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnVpbHRpbnMvR2VuZXJhdG9yUHJvdG90eXBlLmpzIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J1aWx0aW5zL0dlbmVyYXRvclByb3RvdHlwZS5qcwppbmRleCAzYzE0MDY4N2Rm
YzdlMDBlZmU5MWFlODBiMmFjNjc2ZmE5YmY0OGY0Li40OTlkYmQzOTJlODMxM2RjZGQ4NmVjOGMx
NjA1NjlkN2Q2ZjU0OWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRp
bnMvR2VuZXJhdG9yUHJvdG90eXBlLmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWls
dGlucy9HZW5lcmF0b3JQcm90b3R5cGUuanMKQEAgLTUxLDcgKzUxLDcgQEAgZnVuY3Rpb24gZ2Vu
ZXJhdG9yUmVzdW1lKGdlbmVyYXRvciwgc2VudFZhbHVlLCByZXN1bWVNb2RlKQogICAgIH0gZWxz
ZSB7CiAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICBnZW5lcmF0b3IuQGdlbmVyYXRvclN0YXRl
ID0gQEdlbmVyYXRvclN0YXRlRXhlY3V0aW5nOwotICAgICAgICAgICAgdmFsdWUgPSBnZW5lcmF0
b3IuQGdlbmVyYXRvck5leHQuQGNhbGwoZ2VuZXJhdG9yLkBnZW5lcmF0b3JUaGlzLCBnZW5lcmF0
b3IsIHN0YXRlLCBzZW50VmFsdWUsIHJlc3VtZU1vZGUpOworICAgICAgICAgICAgdmFsdWUgPSBn
ZW5lcmF0b3IuQGdlbmVyYXRvck5leHQuQGNhbGwoZ2VuZXJhdG9yLkBnZW5lcmF0b3JUaGlzLCBn
ZW5lcmF0b3IsIHN0YXRlLCBzZW50VmFsdWUsIHJlc3VtZU1vZGUsIGdlbmVyYXRvci5AZ2VuZXJh
dG9yRnJhbWUpOwogICAgICAgICAgICAgaWYgKGdlbmVyYXRvci5AZ2VuZXJhdG9yU3RhdGUgPT09
IEBHZW5lcmF0b3JTdGF0ZUV4ZWN1dGluZykgewogICAgICAgICAgICAgICAgIGdlbmVyYXRvci5A
Z2VuZXJhdG9yU3RhdGUgPSBAR2VuZXJhdG9yU3RhdGVDb21wbGV0ZWQ7CiAgICAgICAgICAgICAg
ICAgZG9uZSA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZUJhc2ljQmxvY2suY3BwCmluZGV4IDdmMTdjMGVmMTBiNDMzZmFjOGY1OGNiM2I5
Y2E1ZDRkMDE1YmJhMDguLjQ3NTI3YjE1YzkxZjJmZmQ0MWJhZGM5NzRjODRjODhiZjIxZWJmMDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2lj
QmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJh
c2ljQmxvY2suY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiQnl0ZWNvZGVCYXNpY0Js
b2NrLmgiCiAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJJbnRlcnByZXRlcklu
bGluZXMuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiUHJlY2lzZUp1bXBU
YXJnZXRzLmgiCiAKQEAgLTU4LDcgKzU5LDYgQEAgc3RhdGljIGJvb2wgaXNCcmFuY2goT3Bjb2Rl
SUQgb3Bjb2RlSUQpCiAgICAgY2FzZSBvcF9zd2l0Y2hfaW1tOgogICAgIGNhc2Ugb3Bfc3dpdGNo
X2NoYXI6CiAgICAgY2FzZSBvcF9zd2l0Y2hfc3RyaW5nOgotICAgIGNhc2Ugb3Bfc2F2ZToKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIGZhbHNlOwpA
QCAtMTA1LDE1ICsxMDUsMjAgQEAgc3RhdGljIGJvb2wgaXNKdW1wVGFyZ2V0KE9wY29kZUlEIG9w
Y29kZUlELCBjb25zdCBWZWN0b3I8dW5zaWduZWQsIDMyPiYganVtcFRhcmcKICAgICByZXR1cm4g
c3RkOjpiaW5hcnlfc2VhcmNoKGp1bXBUYXJnZXRzLmJlZ2luKCksIGp1bXBUYXJnZXRzLmVuZCgp
LCBieXRlY29kZU9mZnNldCk7CiB9CiAKLXN0YXRpYyB2b2lkIGxpbmtCbG9ja3MoQnl0ZWNvZGVC
YXNpY0Jsb2NrKiBwcmVkZWNlc3NvciwgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBzdWNjZXNzb3IpCi17
Ci0gICAgcHJlZGVjZXNzb3ItPmFkZFN1Y2Nlc3NvcihzdWNjZXNzb3IpOwotfQotCi12b2lkIGNv
bXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzKENvZGVCbG9jayogY29kZUJsb2NrLCBWZWN0b3I8c3Rk
Ojp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+JiBiYXNpY0Jsb2NrcykKK3RlbXBsYXRl
PHR5cGVuYW1lIEJsb2NrLCB0eXBlbmFtZSBJbnN0cnVjdGlvbj4KK3ZvaWQgQnl0ZWNvZGVCYXNp
Y0Jsb2NrOjpjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2Nrc0ludGVybmFsKEJsb2NrKiBjb2RlQmxv
Y2ssIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25D
b3VudCwgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYgYmFzaWNC
bG9ja3MpCiB7CiAgICAgVmVjdG9yPHVuc2lnbmVkLCAzMj4ganVtcFRhcmdldHM7Ci0gICAgY29t
cHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhjb2RlQmxvY2ssIGp1bXBUYXJnZXRzKTsKKyAgICBjb21w
dXRlUHJlY2lzZUp1bXBUYXJnZXRzKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb25zQmVnaW4sIGluc3Ry
dWN0aW9uQ291bnQsIGp1bXBUYXJnZXRzKTsKKworICAgIGF1dG8gYXBwZW5kQmxvY2sgPSBbJl0g
KHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+JiYgYmxvY2spIHsKKyAgICAgICAg
YmxvY2stPm1faW5kZXggPSBiYXNpY0Jsb2Nrcy5zaXplKCk7CisgICAgICAgIGJhc2ljQmxvY2tz
LmFwcGVuZChXVEZNb3ZlKGJsb2NrKSk7CisgICAgfTsKKworICAgIGF1dG8gbGlua0Jsb2NrcyA9
IFsmXSAoQnl0ZWNvZGVCYXNpY0Jsb2NrKiBmcm9tLCBCeXRlY29kZUJhc2ljQmxvY2sqIHRvKSB7
CisgICAgICAgIGZyb20tPmFkZFN1Y2Nlc3Nvcih0byk7CisgICAgfTsKIAogICAgIC8vIENyZWF0
ZSB0aGUgZW50cnkgYW5kIGV4aXQgYmFzaWMgYmxvY2tzLgogICAgIGJhc2ljQmxvY2tzLnJlc2Vy
dmVDYXBhY2l0eShqdW1wVGFyZ2V0cy5zaXplKCkgKyAyKTsKQEAgLTEyMiwxOSArMTI3LDE3IEBA
IHZvaWQgY29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFZl
Y3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0CiAgICAgYXV0byBmaXJzdEJsb2NrID0gc3RkOjptYWtl
X3VuaXF1ZTxCeXRlY29kZUJhc2ljQmxvY2s+KDAsIDApOwogICAgIGxpbmtCbG9ja3MoZW50cnku
Z2V0KCksIGZpcnN0QmxvY2suZ2V0KCkpOwogCi0gICAgYmFzaWNCbG9ja3MuYXBwZW5kKFdURk1v
dmUoZW50cnkpKTsKKyAgICBhcHBlbmRCbG9jayhXVEZNb3ZlKGVudHJ5KSk7CiAgICAgQnl0ZWNv
ZGVCYXNpY0Jsb2NrKiBjdXJyZW50ID0gZmlyc3RCbG9jay5nZXQoKTsKLSAgICBiYXNpY0Jsb2Nr
cy5hcHBlbmQoV1RGTW92ZShmaXJzdEJsb2NrKSk7CisgICAgYXBwZW5kQmxvY2soV1RGTW92ZShm
aXJzdEJsb2NrKSk7CiAKICAgICBhdXRvIGV4aXQgPSBzdGQ6Om1ha2VfdW5pcXVlPEJ5dGVjb2Rl
QmFzaWNCbG9jaz4oQnl0ZWNvZGVCYXNpY0Jsb2NrOjpFeGl0QmxvY2spOwogCiAgICAgYm9vbCBu
ZXh0SW5zdHJ1Y3Rpb25Jc0xlYWRlciA9IGZhbHNlOwogCiAgICAgSW50ZXJwcmV0ZXIqIGludGVy
cHJldGVyID0gY29kZUJsb2NrLT52bSgpLT5pbnRlcnByZXRlcjsKLSAgICBJbnN0cnVjdGlvbiog
aW5zdHJ1Y3Rpb25zQmVnaW4gPSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCk7Ci0g
ICAgdW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCA9IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCku
c2l6ZSgpOwogICAgIGZvciAodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQgPSAwOyBieXRlY29kZU9m
ZnNldCA8IGluc3RydWN0aW9uQ291bnQ7KSB7Ci0gICAgICAgIE9wY29kZUlEIG9wY29kZUlEID0g
aW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGluc3RydWN0aW9uc0JlZ2luW2J5dGVjb2RlT2Zmc2V0
XS51Lm9wY29kZSk7CisgICAgICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0ZXItPmdl
dE9wY29kZUlEKGluc3RydWN0aW9uc0JlZ2luW2J5dGVjb2RlT2Zmc2V0XSk7CiAgICAgICAgIHVu
c2lnbmVkIG9wY29kZUxlbmd0aCA9IG9wY29kZUxlbmd0aHNbb3Bjb2RlSURdOwogCiAgICAgICAg
IGJvb2wgY3JlYXRlZEJsb2NrID0gZmFsc2U7CkBAIC0xNDIsNyArMTQ1LDcgQEAgdm9pZCBjb21w
dXRlQnl0ZWNvZGVCYXNpY0Jsb2NrcyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgVmVjdG9yPHN0ZDo6
dW5pcXVlX3B0cjxCeXQKICAgICAgICAgaWYgKGlzSnVtcFRhcmdldChvcGNvZGVJRCwganVtcFRh
cmdldHMsIGJ5dGVjb2RlT2Zmc2V0KSB8fCBuZXh0SW5zdHJ1Y3Rpb25Jc0xlYWRlcikgewogICAg
ICAgICAgICAgYXV0byBuZXdCbG9jayA9IHN0ZDo6bWFrZV91bmlxdWU8Qnl0ZWNvZGVCYXNpY0Js
b2NrPihieXRlY29kZU9mZnNldCwgb3Bjb2RlTGVuZ3RoKTsKICAgICAgICAgICAgIGN1cnJlbnQg
PSBuZXdCbG9jay5nZXQoKTsKLSAgICAgICAgICAgIGJhc2ljQmxvY2tzLmFwcGVuZChXVEZNb3Zl
KG5ld0Jsb2NrKSk7CisgICAgICAgICAgICBhcHBlbmRCbG9jayhXVEZNb3ZlKG5ld0Jsb2NrKSk7
CiAgICAgICAgICAgICBjcmVhdGVkQmxvY2sgPSB0cnVlOwogICAgICAgICAgICAgbmV4dEluc3Ry
dWN0aW9uSXNMZWFkZXIgPSBmYWxzZTsKICAgICAgICAgICAgIGJ5dGVjb2RlT2Zmc2V0ICs9IG9w
Y29kZUxlbmd0aDsKQEAgLTE2OSw4ICsxNzIsNyBAQCB2b2lkIGNvbXB1dGVCeXRlY29kZUJhc2lj
QmxvY2tzKENvZGVCbG9jayogY29kZUJsb2NrLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dAog
CiAgICAgICAgIGJvb2wgZmFsbHNUaHJvdWdoID0gdHJ1ZTsgCiAgICAgICAgIGZvciAodW5zaWdu
ZWQgYnl0ZWNvZGVPZmZzZXQgPSBibG9jay0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKTsgYnl0ZWNv
ZGVPZmZzZXQgPCBibG9jay0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKSArIGJsb2NrLT50b3RhbEJ5
dGVjb2RlTGVuZ3RoKCk7KSB7Ci0gICAgICAgICAgICBjb25zdCBJbnN0cnVjdGlvbiYgY3VycmVu
dEluc3RydWN0aW9uID0gaW5zdHJ1Y3Rpb25zQmVnaW5bYnl0ZWNvZGVPZmZzZXRdOwotICAgICAg
ICAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoY3VycmVu
dEluc3RydWN0aW9uLnUub3Bjb2RlKTsKKyAgICAgICAgICAgIE9wY29kZUlEIG9wY29kZUlEID0g
aW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGluc3RydWN0aW9uc0JlZ2luW2J5dGVjb2RlT2Zmc2V0
XSk7CiAgICAgICAgICAgICB1bnNpZ25lZCBvcGNvZGVMZW5ndGggPSBvcGNvZGVMZW5ndGhzW29w
Y29kZUlEXTsKICAgICAgICAgICAgIC8vIElmIHdlIGZvdW5kIGEgdGVybWluYWwgYnl0ZWNvZGUs
IGxpbmsgdG8gdGhlIGV4aXQgYmxvY2suCiAgICAgICAgICAgICBpZiAoaXNUZXJtaW5hbChvcGNv
ZGVJRCkpIHsKQEAgLTE4NSw3ICsxODcsNyBAQCB2b2lkIGNvbXB1dGVCeXRlY29kZUJhc2ljQmxv
Y2tzKENvZGVCbG9jayogY29kZUJsb2NrLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dAogICAg
ICAgICAgICAgLy8gYmxvY2sgYmVjYXVzZSB0aGUgZmluYWxseSBibG9jayB3aWxsIGNyZWF0ZSBp
dHMgb3duIGNhdGNoLCB3aGljaCB3aWxsIGdlbmVyYXRlIGEgSGFuZGxlckluZm8uCiAgICAgICAg
ICAgICBpZiAoaXNUaHJvdyhvcGNvZGVJRCkpIHsKICAgICAgICAgICAgICAgICBBU1NFUlQoYnl0
ZWNvZGVPZmZzZXQgKyBvcGNvZGVMZW5ndGggPT0gYmxvY2stPmxlYWRlckJ5dGVjb2RlT2Zmc2V0
KCkgKyBibG9jay0+dG90YWxCeXRlY29kZUxlbmd0aCgpKTsKLSAgICAgICAgICAgICAgICBIYW5k
bGVySW5mbyogaGFuZGxlciA9IGNvZGVCbG9jay0+aGFuZGxlckZvckJ5dGVjb2RlT2Zmc2V0KGJ5
dGVjb2RlT2Zmc2V0KTsKKyAgICAgICAgICAgICAgICBhdXRvKiBoYW5kbGVyID0gY29kZUJsb2Nr
LT5oYW5kbGVyRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpOwogICAgICAgICAgICAg
ICAgIGZhbGxzVGhyb3VnaCA9IGZhbHNlOwogICAgICAgICAgICAgICAgIGlmICghaGFuZGxlcikg
ewogICAgICAgICAgICAgICAgICAgICBsaW5rQmxvY2tzKGJsb2NrLCBleGl0LmdldCgpKTsKQEAg
LTIwNSw3ICsyMDcsNyBAQCB2b2lkIGNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzKENvZGVCbG9j
ayogY29kZUJsb2NrLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dAogICAgICAgICAgICAgaWYg
KGlzQnJhbmNoKG9wY29kZUlEKSkgewogICAgICAgICAgICAgICAgIEFTU0VSVChieXRlY29kZU9m
ZnNldCArIG9wY29kZUxlbmd0aCA9PSBibG9jay0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKSArIGJs
b2NrLT50b3RhbEJ5dGVjb2RlTGVuZ3RoKCkpOwogICAgICAgICAgICAgICAgIFZlY3Rvcjx1bnNp
Z25lZCwgMT4gYnl0ZWNvZGVPZmZzZXRzSnVtcGVkVG87Ci0gICAgICAgICAgICAgICAgZmluZEp1
bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoY29kZUJsb2NrLCBieXRlY29kZU9mZnNldCwgYnl0
ZWNvZGVPZmZzZXRzSnVtcGVkVG8pOworICAgICAgICAgICAgICAgIGZpbmRKdW1wVGFyZ2V0c0Zv
ckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb25zQmVnaW4sIGJ5dGVjb2RlT2Zm
c2V0LCBieXRlY29kZU9mZnNldHNKdW1wZWRUbyk7CiAKICAgICAgICAgICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgYmFzaWNCbG9ja3Muc2l6ZSgpOyBpKyspIHsKICAgICAgICAgICAg
ICAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBvdGhlckJsb2NrID0gYmFzaWNCbG9ja3NbaV0u
Z2V0KCk7CkBAIC0yMjksMTAgKzIzMSwyMCBAQCB2b2lkIGNvbXB1dGVCeXRlY29kZUJhc2ljQmxv
Y2tzKENvZGVCbG9jayogY29kZUJsb2NrLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dAogICAg
ICAgICB9CiAgICAgfQogCi0gICAgYmFzaWNCbG9ja3MuYXBwZW5kKFdURk1vdmUoZXhpdCkpOwor
ICAgIGFwcGVuZEJsb2NrKFdURk1vdmUoZXhpdCkpOwogICAgIAogICAgIGZvciAoYXV0byYgYmFz
aWNCbG9jayA6IGJhc2ljQmxvY2tzKQogICAgICAgICBiYXNpY0Jsb2NrLT5zaHJpbmtUb0ZpdCgp
OwogfQogCit2b2lkIEJ5dGVjb2RlQmFzaWNCbG9jazo6Y29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9j
a3MoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwg
dW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCwgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29k
ZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9ja3MpCit7CisgICAgY29tcHV0ZUJ5dGVjb2RlQmFzaWNC
bG9ja3NJbnRlcm5hbChjb2RlQmxvY2ssIGluc3RydWN0aW9uc0JlZ2luLCBpbnN0cnVjdGlvbkNv
dW50LCBiYXNpY0Jsb2Nrcyk7Cit9CisKK3ZvaWQgQnl0ZWNvZGVCYXNpY0Jsb2NrOjpjb21wdXRl
Qnl0ZWNvZGVCYXNpY0Jsb2NrcyhVbmxpbmtlZENvZGVCbG9jayogY29kZUJsb2NrLCBVbmxpbmtl
ZEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3Vu
dCwgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9j
a3MpCit7CisgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrOjpjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2Nr
c0ludGVybmFsKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb25zQmVnaW4sIGluc3RydWN0aW9uQ291bnQs
IGJhc2ljQmxvY2tzKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmgKaW5kZXggY2Q3MTQ3
N2VkNTA2YWE3ODgwMjE2NWZhY2RiN2E2ZDQ2ZjM4ZGMyYS4uN2YxODRmNDc3NjIwYWNhZDc0NTEz
YTA1MDgyZDU3ODIyZGZkODUyMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suaApAQCAtMzMsNiArMzMsOSBAQAogbmFtZXNwYWNl
IEpTQyB7CiAKIGNsYXNzIENvZGVCbG9jazsKK2NsYXNzIFVubGlua2VkQ29kZUJsb2NrOworc3Ry
dWN0IEluc3RydWN0aW9uOworc3RydWN0IFVubGlua2VkSW5zdHJ1Y3Rpb247CiAKIGNsYXNzIEJ5
dGVjb2RlQmFzaWNCbG9jayB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC00OCwx
OCArNTEsMjggQEAgY2xhc3MgQnl0ZWNvZGVCYXNpY0Jsb2NrIHsKICAgICB1bnNpZ25lZCBsZWFk
ZXJCeXRlY29kZU9mZnNldCgpIHsgcmV0dXJuIG1fbGVhZGVyQnl0ZWNvZGVPZmZzZXQ7IH0KICAg
ICB1bnNpZ25lZCB0b3RhbEJ5dGVjb2RlTGVuZ3RoKCkgeyByZXR1cm4gbV90b3RhbEJ5dGVjb2Rl
TGVuZ3RoOyB9CiAKLSAgICBWZWN0b3I8dW5zaWduZWQ+JiBieXRlY29kZU9mZnNldHMoKSB7IHJl
dHVybiBtX2J5dGVjb2RlT2Zmc2V0czsgfQotICAgIHZvaWQgYWRkQnl0ZWNvZGVMZW5ndGgodW5z
aWduZWQpOworICAgIGNvbnN0IFZlY3Rvcjx1bnNpZ25lZD4mIGJ5dGVjb2RlT2Zmc2V0cygpIGNv
bnN0IHsgcmV0dXJuIG1fYnl0ZWNvZGVPZmZzZXRzOyB9CiAKLSAgICBWZWN0b3I8Qnl0ZWNvZGVC
YXNpY0Jsb2NrKj4mIHN1Y2Nlc3NvcnMoKSB7IHJldHVybiBtX3N1Y2Nlc3NvcnM7IH0KLSAgICB2
b2lkIGFkZFN1Y2Nlc3NvcihCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrKSB7IG1fc3VjY2Vzc29y
cy5hcHBlbmQoYmxvY2spOyB9CisgICAgY29uc3QgVmVjdG9yPEJ5dGVjb2RlQmFzaWNCbG9jayo+
JiBzdWNjZXNzb3JzKCkgY29uc3QgeyByZXR1cm4gbV9zdWNjZXNzb3JzOyB9CiAKICAgICBGYXN0
Qml0VmVjdG9yJiBpbigpIHsgcmV0dXJuIG1faW47IH0KICAgICBGYXN0Qml0VmVjdG9yJiBvdXQo
KSB7IHJldHVybiBtX291dDsgfQogCisgICAgdW5zaWduZWQgaW5kZXgoKSBjb25zdCB7IHJldHVy
biBtX2luZGV4OyB9CisKKyAgICBzdGF0aWMgdm9pZCBjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2Nr
cyhDb2RlQmxvY2sqLCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGlu
c3RydWN0aW9uQ291bnQsIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2Nr
Pj4mKTsKKyAgICBzdGF0aWMgdm9pZCBjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2NrcyhVbmxpbmtl
ZENvZGVCbG9jayosIFVubGlua2VkSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1bnNp
Z25lZCBpbnN0cnVjdGlvbkNvdW50LCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFz
aWNCbG9jaz4+Jik7CisKIHByaXZhdGU6CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQmxvY2ssIHR5
cGVuYW1lIEluc3RydWN0aW9uPiBzdGF0aWMgdm9pZCBjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2Nr
c0ludGVybmFsKEJsb2NrKiBjb2RlQmxvY2ssIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdp
biwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCwgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRl
Y29kZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9ja3MpOworCisgICAgdm9pZCBhZGRTdWNjZXNzb3Io
Qnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaykgeyBtX3N1Y2Nlc3NvcnMuYXBwZW5kKGJsb2NrKTsg
fQorCisgICAgdm9pZCBhZGRCeXRlY29kZUxlbmd0aCh1bnNpZ25lZCk7CisKICAgICB1bnNpZ25l
ZCBtX2xlYWRlckJ5dGVjb2RlT2Zmc2V0OwogICAgIHVuc2lnbmVkIG1fdG90YWxCeXRlY29kZUxl
bmd0aDsKKyAgICB1bnNpZ25lZCBtX2luZGV4OwogCiAgICAgVmVjdG9yPHVuc2lnbmVkPiBtX2J5
dGVjb2RlT2Zmc2V0czsKICAgICBWZWN0b3I8Qnl0ZWNvZGVCYXNpY0Jsb2NrKj4gbV9zdWNjZXNz
b3JzOwpAQCAtNjgsOCArODEsNiBAQCBjbGFzcyBCeXRlY29kZUJhc2ljQmxvY2sgewogICAgIEZh
c3RCaXRWZWN0b3IgbV9vdXQ7CiB9OwogCi12b2lkIGNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tz
KENvZGVCbG9jayosIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4m
KTsKLQogaW5saW5lIEJ5dGVjb2RlQmFzaWNCbG9jazo6Qnl0ZWNvZGVCYXNpY0Jsb2NrKHVuc2ln
bmVkIHN0YXJ0LCB1bnNpZ25lZCBsZW5ndGgpCiAgICAgOiBtX2xlYWRlckJ5dGVjb2RlT2Zmc2V0
KHN0YXJ0KQogICAgICwgbV90b3RhbEJ5dGVjb2RlTGVuZ3RoKGxlbmd0aCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlv
bi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3Jp
ZmljYXRpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc4ZjdhYmExNGY3OTJiNGMyZGZjOWZhYmM2YWRiZjMz
YmRhYmFlMTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwCkBAIC0wLDAgKzEsMjYzIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE2IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNv
bT4KKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJCeXRlY29kZUdlbmVy
YXRvcmlmaWNhdGlvbi5oIgorCisjaW5jbHVkZSAiQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzSW5s
aW5lcy5oIgorI2luY2x1ZGUgIkJ5dGVjb2RlUmV3cml0ZXIuaCIKKyNpbmNsdWRlICJCeXRlY29k
ZVVzZURlZi5oIgorI2luY2x1ZGUgIklkZW50aWZpZXJJbmxpbmVzLmgiCisjaW5jbHVkZSAiSW50
ZXJwcmV0ZXJJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIkpT
Q0pTVmFsdWVJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNHZW5lcmF0b3JGdW5jdGlvbi5oIgorI2lu
Y2x1ZGUgIlN0cm9uZ0lubGluZXMuaCIKKyNpbmNsdWRlICJVbmxpbmtlZENvZGVCbG9jay5oIgor
I2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgorCituYW1lc3BhY2UgSlNDIHsKKworc3RydWN0IFlp
ZWxkRGF0YSB7CisgICAgc2l6ZV90IHBvaW50IHsgMCB9OworICAgIGludCBhcmd1bWVudCB7IDAg
fTsKKyAgICBGYXN0Qml0VmVjdG9yIGxpdmVuZXNzOworfTsKKworY2xhc3MgQnl0ZWNvZGVHZW5l
cmF0b3JpZmljYXRpb24geworcHVibGljOgorICAgIHR5cGVkZWYgVmVjdG9yPFlpZWxkRGF0YT4g
WWllbGRzOworCisgICAgQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24oVW5saW5rZWRDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgVW5saW5rZWRDb2RlQmxvY2s6OlVucGFja2VkSW5zdHJ1Y3Rpb25zJiBp
bnN0cnVjdGlvbnMsIFN5bWJvbFRhYmxlKiBnZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlLCBpbnQg
Z2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZUluZGV4KQorICAgICAgICA6IG1fZ3JhcGgoY29kZUJs
b2NrLCBpbnN0cnVjdGlvbnMpCisgICAgICAgICwgbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxl
KCpjb2RlQmxvY2stPnZtKCksIGdlbmVyYXRvckZyYW1lU3ltYm9sVGFibGUpCisgICAgICAgICwg
bV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlSW5kZXgoZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJs
ZUluZGV4KQorICAgIHsKKyAgICAgICAgZm9yIChCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrIDog
bV9ncmFwaCkgeworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBieXRlY29kZU9mZnNldCA6IGJs
b2NrLT5ieXRlY29kZU9mZnNldHMoKSkgeworICAgICAgICAgICAgICAgIGNvbnN0IFVubGlua2Vk
SW5zdHJ1Y3Rpb24qIHBjID0gJm1fZ3JhcGguaW5zdHJ1Y3Rpb25zKClbYnl0ZWNvZGVPZmZzZXRd
OworICAgICAgICAgICAgICAgIHN3aXRjaCAocGMtPnUub3Bjb2RlKSB7CisgICAgICAgICAgICAg
ICAgY2FzZSBvcF9lbnRlcjogeworICAgICAgICAgICAgICAgICAgICBtX2VudGVyUG9pbnQgPSBi
eXRlY29kZU9mZnNldDsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICAgICAgY2FzZSBvcF95aWVsZDogeworICAgICAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSBwY1syXS51LmluZGV4OworICAg
ICAgICAgICAgICAgICAgICBpZiAobGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID49IG1feWllbGRzLnNp
emUoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIG1feWllbGRzLnJlc2l6ZShsaXZlQ2FsbGVl
TG9jYWxzSW5kZXggKyAxKTsKKyAgICAgICAgICAgICAgICAgICAgWWllbGREYXRhJiBkYXRhID0g
bV95aWVsZHNbbGl2ZUNhbGxlZUxvY2Fsc0luZGV4XTsKKyAgICAgICAgICAgICAgICAgICAgZGF0
YS5wb2ludCA9IGJ5dGVjb2RlT2Zmc2V0OworICAgICAgICAgICAgICAgICAgICBkYXRhLmFyZ3Vt
ZW50ID0gcGNbM10udS5vcGVyYW5kOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICB9CisKKyAgICBzdHJ1Y3QgU3RvcmFnZSB7CisgICAgICAgIElkZW50aWZpZXIgaWRlbnRp
ZmllcjsKKyAgICAgICAgdW5zaWduZWQgaWRlbnRpZmllckluZGV4OworICAgICAgICBTY29wZU9m
ZnNldCBzY29wZU9mZnNldDsKKyAgICB9OworCisgICAgdm9pZCBydW4oKTsKKworICAgIEJ5dGVj
b2RlR3JhcGg8VW5saW5rZWRDb2RlQmxvY2s+JiBncmFwaCgpIHsgcmV0dXJuIG1fZ3JhcGg7IH0K
KworICAgIGNvbnN0IFlpZWxkcyYgeWllbGRzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVy
biBtX3lpZWxkczsKKyAgICB9CisKKyAgICBZaWVsZHMmIHlpZWxkcygpCisgICAgeworICAgICAg
ICByZXR1cm4gbV95aWVsZHM7CisgICAgfQorCisgICAgdW5zaWduZWQgZW50ZXJQb2ludCgpIGNv
bnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9lbnRlclBvaW50OworICAgIH0KKworcHJpdmF0
ZToKKyAgICBTdG9yYWdlIHN0b3JhZ2VGb3JHZW5lcmF0b3JMb2NhbCh1bnNpZ25lZCBpbmRleCkK
KyAgICB7CisgICAgICAgIC8vIFdlIGFzc2lnbiBhIHN5bWJvbCB0byBhIHJlZ2lzdGVyLiBUaGVy
ZSBpcyBvbmUtb24tb25lIGNvcnJlc3BvbmRpbmcgYmV0d2VlbiBhIHJlZ2lzdGVyIGFuZCBhIHN5
bWJvbC4KKyAgICAgICAgLy8gQnkgZG9pbmcgc28sIHdlIGFsbG9jYXRlIHRoZSBzcGVjaWZpYyBz
dG9yYWdlIHRvIHNhdmUgdGhlIGdpdmVuIHJlZ2lzdGVyLgorICAgICAgICAvLyBUaGlzIGFsbG93
IHVzIG5vdCB0byBzYXZlIGFsbCB0aGUgbGl2ZSByZWdpc3RlcnMgZXZlbiBpZiB0aGUgcmVnaXN0
ZXJzIGFyZSBub3Qgb3ZlcndyaXR0ZW4gZnJvbSB0aGUgcHJldmlvdXMgcmVzdW1pbmcgdGltZS4K
KyAgICAgICAgLy8gSXQgbWVhbnMgdGhhdCwgdGhlIHJlZ2lzdGVyIGNhbiBiZSByZXRyaWV2ZWQg
ZXZlbiBpZiB0aGUgaW1tZWRpYXRlIHByZXZpb3VzIG9wX3NhdmUgZG9lcyBub3Qgc2F2ZSBpdC4K
KworICAgICAgICBpZiAobV9zdG9yYWdlcy5zaXplKCkgPD0gaW5kZXgpCisgICAgICAgICAgICBt
X3N0b3JhZ2VzLnJlc2l6ZShpbmRleCArIDEpOworICAgICAgICBpZiAoT3B0aW9uYWw8U3RvcmFn
ZT4gc3RvcmFnZSA9IG1fc3RvcmFnZXNbaW5kZXhdKQorICAgICAgICAgICAgcmV0dXJuICpzdG9y
YWdlOworCisgICAgICAgIFVubGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBtX2dyYXBoLmNv
ZGVCbG9jaygpOworICAgICAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIgPSBJZGVudGlmaWVyOjpm
cm9tVWlkKFByaXZhdGVOYW1lKCkpOworICAgICAgICB1bnNpZ25lZCBpZGVudGlmaWVySW5kZXgg
PSBjb2RlQmxvY2stPm51bWJlck9mSWRlbnRpZmllcnMoKTsKKyAgICAgICAgY29kZUJsb2NrLT5h
ZGRJZGVudGlmaWVyKGlkZW50aWZpZXIpOworICAgICAgICBTY29wZU9mZnNldCBzY29wZU9mZnNl
dCA9IG1fZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZS0+dGFrZU5leHRTY29wZU9mZnNldChOb0xv
Y2tpbmdOZWNlc3NhcnkpOworICAgICAgICBtX2dlbmVyYXRvckZyYW1lU3ltYm9sVGFibGUtPnNl
dChOb0xvY2tpbmdOZWNlc3NhcnksIGlkZW50aWZpZXIuaW1wbCgpLCBTeW1ib2xUYWJsZUVudHJ5
KFZhck9mZnNldChzY29wZU9mZnNldCkpKTsKKworICAgICAgICBTdG9yYWdlIHN0b3JhZ2UgPSB7
CisgICAgICAgICAgICBpZGVudGlmaWVyLAorICAgICAgICAgICAgaWRlbnRpZmllckluZGV4LAor
ICAgICAgICAgICAgc2NvcGVPZmZzZXQKKyAgICAgICAgfTsKKyAgICAgICAgbV9zdG9yYWdlc1tp
bmRleF0gPSBzdG9yYWdlOworICAgICAgICByZXR1cm4gc3RvcmFnZTsKKyAgICB9CisKKyAgICB1
bnNpZ25lZCBtX2VudGVyUG9pbnQgeyAwIH07CisgICAgQnl0ZWNvZGVHcmFwaDxVbmxpbmtlZENv
ZGVCbG9jaz4gbV9ncmFwaDsKKyAgICBWZWN0b3I8T3B0aW9uYWw8U3RvcmFnZT4+IG1fc3RvcmFn
ZXM7CisgICAgWWllbGRzIG1feWllbGRzOworICAgIFN0cm9uZzxTeW1ib2xUYWJsZT4gbV9nZW5l
cmF0b3JGcmFtZVN5bWJvbFRhYmxlOworICAgIGludCBtX2dlbmVyYXRvckZyYW1lU3ltYm9sVGFi
bGVJbmRleDsKK307CisKK2NsYXNzIEdlbmVyYXRvckxpdmVuZXNzQW5hbHlzaXMgOiBwdWJsaWMg
Qnl0ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0aW9uPEdlbmVyYXRvckxpdmVuZXNzQW5hbHlzaXM+IHsK
K3B1YmxpYzoKKyAgICBHZW5lcmF0b3JMaXZlbmVzc0FuYWx5c2lzKEJ5dGVjb2RlR2VuZXJhdG9y
aWZpY2F0aW9uJiBnZW5lcmF0b3JpZmljYXRpb24pCisgICAgICAgIDogbV9nZW5lcmF0b3JpZmlj
YXRpb24oZ2VuZXJhdG9yaWZpY2F0aW9uKQorICAgIHsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBGdW5jdG9yPgorICAgIHZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChV
bmxpbmtlZENvZGVCbG9jayogY29kZUJsb2NrLCBPcGNvZGVJRCBvcGNvZGVJRCwgVW5saW5rZWRJ
bnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIEZhc3RCaXRWZWN0b3ImLCBjb25zdCBGdW5jdG9yJiBm
dW5jdG9yKQorICAgIHsKKyAgICAgICAgSlNDOjpjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0
KGNvZGVCbG9jaywgb3Bjb2RlSUQsIGluc3RydWN0aW9uLCBmdW5jdG9yKTsKKyAgICB9CisKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgorICAgIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRl
Y29kZU9mZnNldChVbmxpbmtlZENvZGVCbG9jayogY29kZUJsb2NrLCBPcGNvZGVJRCBvcGNvZGVJ
RCwgVW5saW5rZWRJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIEZhc3RCaXRWZWN0b3ImLCBjb25z
dCBGdW5jdG9yJiBmdW5jdG9yKQorICAgIHsKKyAgICAgICAgSlNDOjpjb21wdXRlVXNlc0ZvckJ5
dGVjb2RlT2Zmc2V0KGNvZGVCbG9jaywgb3Bjb2RlSUQsIGluc3RydWN0aW9uLCBmdW5jdG9yKTsK
KyAgICB9CisKKyAgICB2b2lkIHJ1bigpCisgICAgeworICAgICAgICAvLyBQZXJmb3JtIG1vZGlm
aWVkIGxpdmVuZXNzIGFuYWx5c2lzIHRvIGRldGVybWluZSB3aGljaCBsb2NhbHMgYXJlIGxpdmUg
YXQgdGhlIG1lcmdlIHBvaW50cy4KKyAgICAgICAgLy8gVGhpcyBwcm9kdWNlcyB0aGUgY29uc2Vy
dmF0aXZlIHJlc3VsdHMgZm9yIHRoZSBxdWVzdGlvbiwgIndoaWNoIHZhcmlhYmxlcyBzaG91bGQg
YmUgc2F2ZWQgYW5kIHJlc3VtZWQ/Ii4KKworICAgICAgICBydW5MaXZlbmVzc0ZpeHBvaW50KG1f
Z2VuZXJhdG9yaWZpY2F0aW9uLmdyYXBoKCkpOworCisgICAgICAgIGZvciAoWWllbGREYXRhJiBk
YXRhIDogbV9nZW5lcmF0b3JpZmljYXRpb24ueWllbGRzKCkpCisgICAgICAgICAgICBkYXRhLmxp
dmVuZXNzID0gZ2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29kZU9mZnNldChtX2dlbmVyYXRvcmlmaWNh
dGlvbi5ncmFwaCgpLCBkYXRhLnBvaW50ICsgb3Bjb2RlTGVuZ3RoKG9wX3lpZWxkKSk7CisgICAg
fQorCitwcml2YXRlOgorICAgIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uJiBtX2dlbmVyYXRv
cmlmaWNhdGlvbjsKK307CisKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb246OnJ1bigp
Cit7CisgICAgLy8gV2UgY2FsY3VsYXRlIHRoZSBsaXZlbmVzcyBhdCBlYWNoIG1lcmdlIHBvaW50
LiBUaGlzIGdpdmVzIHVzIHRoZSBpbmZvcm1hdGlvbiB3aGljaCByZWdpc3RlcnMgc2hvdWxkIGJl
IHNhdmVkIGFuZCByZXN1bWVkIGNvbnNlcnZhdGl2ZWx5LgorCisgICAgeworICAgICAgICBHZW5l
cmF0b3JMaXZlbmVzc0FuYWx5c2lzIHBhc3MoKnRoaXMpOworICAgICAgICBwYXNzLnJ1bigpOwor
ICAgIH0KKworICAgIFVubGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBtX2dyYXBoLmNvZGVC
bG9jaygpOworICAgIEJ5dGVjb2RlUmV3cml0ZXIgcmV3cml0ZXIobV9ncmFwaCk7CisKKyAgICAv
LyBTZXR1cCB0aGUgZ2xvYmFsIHN3aXRjaCBmb3IgdGhlIGdlbmVyYXRvci4KKyAgICB7CisgICAg
ICAgIHVuc2lnbmVkIG5leHRUb0VudGVyUG9pbnQgPSBlbnRlclBvaW50KCkgKyBvcGNvZGVMZW5n
dGgob3BfZW50ZXIpOworICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgc3RhdGUgPSB2aXJ0dWFsUmVn
aXN0ZXJGb3JBcmd1bWVudChzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvckZ1bmN0aW9u
OjpHZW5lcmF0b3JBcmd1bWVudDo6U3RhdGUpKTsKKyAgICAgICAgYXV0byYganVtcFRhYmxlID0g
cmV3cml0ZXIuaW5zZXJ0U3dpdGNoSW1tZWRpYXRlQmVmb3JlKG5leHRUb0VudGVyUG9pbnQsIG5l
eHRUb0VudGVyUG9pbnQsIHN0YXRlLm9mZnNldCgpKTsKKyAgICAgICAganVtcFRhYmxlLm1pbiA9
IDA7CisgICAgICAgIGp1bXBUYWJsZS5icmFuY2hPZmZzZXRzLnJlc2l6ZShtX3lpZWxkcy5zaXpl
KCkgKyAxKTsKKyAgICAgICAganVtcFRhYmxlLmJyYW5jaE9mZnNldHMuZmlsbCgwKTsKKyAgICAg
ICAganVtcFRhYmxlLmFkZCgwLCBuZXh0VG9FbnRlclBvaW50KTsKKyAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IG1feWllbGRzLnNpemUoKTsgKytpKQorICAgICAgICAgICAganVtcFRh
YmxlLmFkZChpICsgMSwgbV95aWVsZHNbaV0ucG9pbnQpOworICAgIH0KKworICAgIGZvciAoY29u
c3QgWWllbGREYXRhJiBkYXRhIDogbV95aWVsZHMpIHsKKyAgICAgICAgVmlydHVhbFJlZ2lzdGVy
IHNjb3BlID0gdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoc3RhdGljX2Nhc3Q8aW50MzJfdD4o
SlNHZW5lcmF0b3JGdW5jdGlvbjo6R2VuZXJhdG9yQXJndW1lbnQ6OkZyYW1lKSk7CisKKyAgICAg
ICAgLy8gRW1pdCBzYXZlIHNlcXVlbmNlLgorICAgICAgICByZXdyaXRlci5pbnNlcnRGcmFnbWVu
dEJlZm9yZShkYXRhLnBvaW50LCBbJl0oQnl0ZWNvZGVSZXdyaXRlcjo6RnJhZ21lbnQmIGZyYWdt
ZW50KSB7CisgICAgICAgICAgICBkYXRhLmxpdmVuZXNzLmZvckVhY2hTZXRCaXQoWyZdKHNpemVf
dCBpbmRleCkgeworICAgICAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kID0gdmly
dHVhbFJlZ2lzdGVyRm9yTG9jYWwoaW5kZXgpOworICAgICAgICAgICAgICAgIFN0b3JhZ2Ugc3Rv
cmFnZSA9IHN0b3JhZ2VGb3JHZW5lcmF0b3JMb2NhbChpbmRleCk7CisKKyAgICAgICAgICAgICAg
ICBmcmFnbWVudC5hcHBlbmQoCisgICAgICAgICAgICAgICAgICAgIG9wX3B1dF90b19zY29wZSwK
KyAgICAgICAgICAgICAgICAgICAgc2NvcGUub2Zmc2V0KCksIC8vIHNjb3BlCisgICAgICAgICAg
ICAgICAgICAgIHN0b3JhZ2UuaWRlbnRpZmllckluZGV4LCAvLyBpZGVudGlmaWVyCisgICAgICAg
ICAgICAgICAgICAgIG9wZXJhbmQub2Zmc2V0KCksIC8vIHZhbHVlCisgICAgICAgICAgICAgICAg
ICAgIEdldFB1dEluZm8oRG9Ob3RUaHJvd0lmTm90Rm91bmQsIExvY2FsQ2xvc3VyZVZhciwgSW5p
dGlhbGl6YXRpb25Nb2RlOjpOb3RJbml0aWFsaXphdGlvbikub3BlcmFuZCgpLCAvLyBpbmZvCisg
ICAgICAgICAgICAgICAgICAgIG1fZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZUluZGV4LCAvLyBz
eW1ib2wgdGFibGUgY29uc3RhbnQgaW5kZXgKKyAgICAgICAgICAgICAgICAgICAgc3RvcmFnZS5z
Y29wZU9mZnNldC5vZmZzZXQoKSAvLyBzY29wZSBvZmZzZXQKKyAgICAgICAgICAgICAgICApOwor
ICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIC8vIEluc2VydCBvcF9yZXQganVzdCBhZnRl
ciBzYXZlIHNlcXVlbmNlLgorICAgICAgICAgICAgZnJhZ21lbnQuYXBwZW5kKG9wX3JldCwgZGF0
YS5hcmd1bWVudCk7CisgICAgICAgIH0pOworCisgICAgICAgIC8vIEVtaXQgcmVzdW1lIHNlcXVl
bmNlLgorICAgICAgICByZXdyaXRlci5pbnNlcnRGcmFnbWVudEJlZm9yZShkYXRhLnBvaW50ICsg
b3Bjb2RlTGVuZ3RoKG9wX3lpZWxkKSwgWyZdKEJ5dGVjb2RlUmV3cml0ZXI6OkZyYWdtZW50JiBm
cmFnbWVudCkgeworICAgICAgICAgICAgZGF0YS5saXZlbmVzcy5mb3JFYWNoU2V0Qml0KFsmXShz
aXplX3QgaW5kZXgpIHsKKyAgICAgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCA9
IHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGluZGV4KTsKKyAgICAgICAgICAgICAgICBTdG9yYWdl
IHN0b3JhZ2UgPSBzdG9yYWdlRm9yR2VuZXJhdG9yTG9jYWwoaW5kZXgpOworCisgICAgICAgICAg
ICAgICAgVW5saW5rZWRWYWx1ZVByb2ZpbGUgcHJvZmlsZSA9IGNvZGVCbG9jay0+YWRkVmFsdWVQ
cm9maWxlKCk7CisgICAgICAgICAgICAgICAgZnJhZ21lbnQuYXBwZW5kKAorICAgICAgICAgICAg
ICAgICAgICBvcF9nZXRfZnJvbV9zY29wZSwKKyAgICAgICAgICAgICAgICAgICAgb3BlcmFuZC5v
ZmZzZXQoKSwgLy8gZHN0CisgICAgICAgICAgICAgICAgICAgIHNjb3BlLm9mZnNldCgpLCAvLyBz
Y29wZQorICAgICAgICAgICAgICAgICAgICBzdG9yYWdlLmlkZW50aWZpZXJJbmRleCwgLy8gaWRl
bnRpZmllcgorICAgICAgICAgICAgICAgICAgICBHZXRQdXRJbmZvKERvTm90VGhyb3dJZk5vdEZv
dW5kLCBMb2NhbENsb3N1cmVWYXIsIEluaXRpYWxpemF0aW9uTW9kZTo6Tm90SW5pdGlhbGl6YXRp
b24pLm9wZXJhbmQoKSwgLy8gaW5mbworICAgICAgICAgICAgICAgICAgICAwLCAvLyBsb2NhbCBz
Y29wZSBkZXB0aAorICAgICAgICAgICAgICAgICAgICBzdG9yYWdlLnNjb3BlT2Zmc2V0Lm9mZnNl
dCgpLCAvLyBzY29wZSBvZmZzZXQKKyAgICAgICAgICAgICAgICAgICAgcHJvZmlsZSAvLyBwcm9m
aWxlCisgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKwor
ICAgICAgICAvLyBDbGlwIHRoZSB1bm5lY2Vzc2FyeSBieXRlY29kZXMuCisgICAgICAgIHJld3Jp
dGVyLnJlbW92ZUJ5dGVjb2RlKGRhdGEucG9pbnQpOworICAgIH0KKworICAgIHJld3JpdGVyLmV4
ZWN1dGUoKTsKK30KKwordm9pZCBwZXJmb3JtR2VuZXJhdG9yaWZpY2F0aW9uKFVubGlua2VkQ29k
ZUJsb2NrKiBjb2RlQmxvY2ssIFVubGlua2VkQ29kZUJsb2NrOjpVbnBhY2tlZEluc3RydWN0aW9u
cyYgaW5zdHJ1Y3Rpb25zLCBTeW1ib2xUYWJsZSogZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZSwg
aW50IGdlbmVyYXRvckZyYW1lU3ltYm9sVGFibGVJbmRleCkKK3sKKyAgICBCeXRlY29kZUdlbmVy
YXRvcmlmaWNhdGlvbiBwYXNzKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb25zLCBnZW5lcmF0b3JGcmFt
ZVN5bWJvbFRhYmxlLCBnZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlSW5kZXgpOworICAgIHBhc3Mu
cnVuKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5jN2I2MTM3NDYwODZhZTM0YzRjMGEyMmJmNGU2N2M3NmU2Y2ZkNGU5Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlR2VuZXJh
dG9yaWZpY2F0aW9uLmgKQEAgLTAsMCArMSwzNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NiBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisgKiBDb3B5cmlnaHQgKEMp
IDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgIlVubGlua2VkQ29kZUJsb2NrLmgiCisKK25hbWVzcGFjZSBKU0Mg
eworCitjbGFzcyBTeW1ib2xUYWJsZTsKKwordm9pZCBwZXJmb3JtR2VuZXJhdG9yaWZpY2F0aW9u
KFVubGlua2VkQ29kZUJsb2NrKiwgVW5saW5rZWRDb2RlQmxvY2s6OlVucGFja2VkSW5zdHJ1Y3Rp
b25zJiwgU3ltYm9sVGFibGUqIGdlbmVyYXRvckZyYW1lU3ltYm9sVGFibGUsIGludCBnZW5lcmF0
b3JGcmFtZVN5bWJvbFRhYmxlSW5kZXgpOworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUdyYXBoLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVHcmFwaC5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNi
YWE3ZTg1ZWZhMDc0MTZhMWQ1ZmY4MjEyOGZiZGM2NWI0YzA0NGEKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVHcmFwaC5oCkBAIC0wLDAg
KzEsMTI1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IFl1c3VrZSBTdXp1a2kgPHV0YXRh
bmUudGVhQGdtYWlsLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQnl0
ZWNvZGVCYXNpY0Jsb2NrLmgiCisjaW5jbHVkZSA8d3RmL0luZGV4ZWRDb250YWluZXJJdGVyYXRv
ci5oPgorI2luY2x1ZGUgPHd0Zi9JdGVyYXRvclJhbmdlLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgQnl0ZWNvZGVCYXNpY0Jsb2NrOworCit0
ZW1wbGF0ZTx0eXBlbmFtZSBCbG9jaz4KK2NsYXNzIEJ5dGVjb2RlR3JhcGggeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEJ5dGVjb2RlR3Jh
cGgpOworcHVibGljOgorICAgIHR5cGVkZWYgQmxvY2sgQ29kZUJsb2NrOworICAgIHR5cGVkZWYg
dHlwZW5hbWUgQmxvY2s6Okluc3RydWN0aW9uIEluc3RydWN0aW9uOworICAgIHR5cGVkZWYgVmVj
dG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiBCYXNpY0Jsb2Nrc1ZlY3Rv
cjsKKworICAgIHR5cGVkZWYgV1RGOjpJbmRleGVkQ29udGFpbmVySXRlcmF0b3I8Qnl0ZWNvZGVH
cmFwaDxCbG9jaz4+IGl0ZXJhdG9yOworCisgICAgaW5saW5lIEJ5dGVjb2RlR3JhcGgoQmxvY2sq
LCB0eXBlbmFtZSBCbG9jazo6VW5wYWNrZWRJbnN0cnVjdGlvbnMmKTsKKworICAgIEJsb2NrKiBj
b2RlQmxvY2soKSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9jazsgfQorCisgICAgdHlwZW5hbWUg
QmxvY2s6OlVucGFja2VkSW5zdHJ1Y3Rpb25zJiBpbnN0cnVjdGlvbnMoKSB7IHJldHVybiBtX2lu
c3RydWN0aW9uczsgfQorCisgICAgV1RGOjpJdGVyYXRvclJhbmdlPEJhc2ljQmxvY2tzVmVjdG9y
OjpyZXZlcnNlX2l0ZXJhdG9yPiBiYXNpY0Jsb2Nrc0luUmV2ZXJzZU9yZGVyKCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBXVEY6Om1ha2VJdGVyYXRvclJhbmdlKG1fYmFzaWNCbG9ja3MucmJlZ2lu
KCksIG1fYmFzaWNCbG9ja3MucmVuZCgpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgYm9vbCBibG9j
a0NvbnRhaW5zQnl0ZWNvZGVPZmZzZXQoQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaywgdW5zaWdu
ZWQgYnl0ZWNvZGVPZmZzZXQpCisgICAgeworICAgICAgICB1bnNpZ25lZCBsZWFkZXJPZmZzZXQg
PSBibG9jay0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKTsKKyAgICAgICAgcmV0dXJuIGJ5dGVjb2Rl
T2Zmc2V0ID49IGxlYWRlck9mZnNldCAmJiBieXRlY29kZU9mZnNldCA8IGxlYWRlck9mZnNldCAr
IGJsb2NrLT50b3RhbEJ5dGVjb2RlTGVuZ3RoKCk7CisgICAgfQorCisgICAgQnl0ZWNvZGVCYXNp
Y0Jsb2NrKiBmaW5kQmFzaWNCbG9ja0ZvckJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2Rl
T2Zmc2V0KQorICAgIHsKKyAgICAgICAgLyoKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBtX2Jhc2ljQmxvY2tzLnNpemUoKTsgaSsrKSB7CisgICAgICAgICAgICAgICAgaWYg
KGJsb2NrQ29udGFpbnNCeXRlY29kZU9mZnNldChtX2Jhc2ljQmxvY2tzW2ldLmdldCgpLCBieXRl
Y29kZU9mZnNldCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBtX2Jhc2ljQmxvY2tzW2ld
LmdldCgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICov
CisKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4qIGJhc2ljQmxv
Y2sgPSBhcHByb3hpbWF0ZUJpbmFyeVNlYXJjaDxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNp
Y0Jsb2NrPiwgdW5zaWduZWQ+KG1fYmFzaWNCbG9ja3MsIG1fYmFzaWNCbG9ja3Muc2l6ZSgpLCBi
eXRlY29kZU9mZnNldCwgW10gKHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+KiBi
YXNpY0Jsb2NrKSB7IHJldHVybiAoKmJhc2ljQmxvY2spLT5sZWFkZXJCeXRlY29kZU9mZnNldCgp
OyB9KTsKKyAgICAgICAgLy8gV2UgZm91bmQgdGhlIGJsb2NrIHdlIHdlcmUgbG9va2luZyBmb3Iu
CisgICAgICAgIGlmIChibG9ja0NvbnRhaW5zQnl0ZWNvZGVPZmZzZXQoKCpiYXNpY0Jsb2NrKS5n
ZXQoKSwgYnl0ZWNvZGVPZmZzZXQpKQorICAgICAgICAgICAgcmV0dXJuICgqYmFzaWNCbG9jayku
Z2V0KCk7CisKKyAgICAgICAgLy8gQmFzaWMgYmxvY2sgaXMgdG8gdGhlIGxlZnQgb2YgdGhlIHJl
dHVybmVkIGJsb2NrLgorICAgICAgICBpZiAoYnl0ZWNvZGVPZmZzZXQgPCAoKmJhc2ljQmxvY2sp
LT5sZWFkZXJCeXRlY29kZU9mZnNldCgpKSB7CisgICAgICAgICAgICBBU1NFUlQoYmFzaWNCbG9j
ayAtIDEgPj0gbV9iYXNpY0Jsb2Nrcy5kYXRhKCkpOworICAgICAgICAgICAgQVNTRVJUKGJsb2Nr
Q29udGFpbnNCeXRlY29kZU9mZnNldChiYXNpY0Jsb2NrWy0xXS5nZXQoKSwgYnl0ZWNvZGVPZmZz
ZXQpKTsKKyAgICAgICAgICAgIHJldHVybiBiYXNpY0Jsb2NrWy0xXS5nZXQoKTsKKyAgICAgICAg
fQorCisgICAgICAgIC8vIEJhc2ljIGJsb2NrIGlzIHRvIHRoZSByaWdodCBvZiB0aGUgcmV0dXJu
ZWQgYmxvY2suCisgICAgICAgIEFTU0VSVCgmYmFzaWNCbG9ja1sxXSA8PSAmbV9iYXNpY0Jsb2Nr
cy5sYXN0KCkpOworICAgICAgICBBU1NFUlQoYmxvY2tDb250YWluc0J5dGVjb2RlT2Zmc2V0KGJh
c2ljQmxvY2tbMV0uZ2V0KCksIGJ5dGVjb2RlT2Zmc2V0KSk7CisgICAgICAgIHJldHVybiBiYXNp
Y0Jsb2NrWzFdLmdldCgpOworICAgIH0KKworICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogZmluZEJh
c2ljQmxvY2tXaXRoTGVhZGVyT2Zmc2V0KHVuc2lnbmVkIGxlYWRlck9mZnNldCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiAoKnRyeUJpbmFyeVNlYXJjaDxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVC
YXNpY0Jsb2NrPiwgdW5zaWduZWQ+KG1fYmFzaWNCbG9ja3MsIG1fYmFzaWNCbG9ja3Muc2l6ZSgp
LCBsZWFkZXJPZmZzZXQsIFtdIChzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiog
YmFzaWNCbG9jaykgeyByZXR1cm4gKCpiYXNpY0Jsb2NrKS0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQo
KTsgfSkpLmdldCgpOworICAgIH0KKworICAgIHVuc2lnbmVkIHNpemUoKSBjb25zdCB7IHJldHVy
biBtX2Jhc2ljQmxvY2tzLnNpemUoKTsgfQorICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogYXQodW5z
aWduZWQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIG1fYmFzaWNCbG9ja3NbaW5kZXhdLmdldCgpOyB9
CisgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBvcGVyYXRvcltdKHVuc2lnbmVkIGluZGV4KSBjb25z
dCB7IHJldHVybiBhdChpbmRleCk7IH0KKworICAgIGl0ZXJhdG9yIGJlZ2luKCkgY29uc3QgeyBy
ZXR1cm4gaXRlcmF0b3IoKnRoaXMsIDApOyB9CisgICAgaXRlcmF0b3IgZW5kKCkgY29uc3QgeyBy
ZXR1cm4gaXRlcmF0b3IoKnRoaXMsIHNpemUoKSk7IH0KKyAgICBCeXRlY29kZUJhc2ljQmxvY2sq
IGZpcnN0KCkgeyByZXR1cm4gYXQoMCk7IH0KKyAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGxhc3Qo
KSB7IHJldHVybiBhdChzaXplKCkgLSAxKTsgfQorCitwcml2YXRlOgorICAgIEJsb2NrKiBtX2Nv
ZGVCbG9jazsKKyAgICBCYXNpY0Jsb2Nrc1ZlY3RvciBtX2Jhc2ljQmxvY2tzOworICAgIHR5cGVu
YW1lIEJsb2NrOjpVbnBhY2tlZEluc3RydWN0aW9ucyYgbV9pbnN0cnVjdGlvbnM7Cit9OworCisK
K3RlbXBsYXRlPHR5cGVuYW1lIEJsb2NrPgorQnl0ZWNvZGVHcmFwaDxCbG9jaz46OkJ5dGVjb2Rl
R3JhcGgoQmxvY2sqIGNvZGVCbG9jaywgdHlwZW5hbWUgQmxvY2s6OlVucGFja2VkSW5zdHJ1Y3Rp
b25zJiBpbnN0cnVjdGlvbnMpCisgICAgOiBtX2NvZGVCbG9jayhjb2RlQmxvY2spCisgICAgLCBt
X2luc3RydWN0aW9ucyhpbnN0cnVjdGlvbnMpCit7CisgICAgQVNTRVJUKG1fY29kZUJsb2NrKTsK
KyAgICBCeXRlY29kZUJhc2ljQmxvY2s6OmNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzKG1fY29k
ZUJsb2NrLCBpbnN0cnVjdGlvbnMuYmVnaW4oKSwgaW5zdHJ1Y3Rpb25zLnNpemUoKSwgbV9iYXNp
Y0Jsb2Nrcyk7CisgICAgQVNTRVJUKG1fYmFzaWNCbG9ja3Muc2l6ZSgpKTsKK30KKworfSAvLyBu
YW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Qnl0ZWNvZGVMaXN0Lmpzb24gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVMaXN0Lmpzb24KaW5kZXggZTM4MDI1ZDVhZmNmNjljZTQ4MGFlOTI4OThjOTM4ZTkzMTI3ODhk
OS4uY2U2MGRhNGEyNmJjMzQ3N2ZkNDcxOWIwYTRiMWZlY2U1ODljNjE5ZCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgpAQCAtMTQzLDgg
KzE0Myw3IEBACiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9hc3NlcnQiLCAibGVuZ3RoIiA6
IDMgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2NyZWF0ZV9yZXN0IiwgImxlbmd0aCI6
IDQgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2dldF9yZXN0X2xlbmd0aCIsICJsZW5n
dGgiOiAzIH0sCi0gICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9zYXZlIiwgImxlbmd0aCIgOiA0
IH0sCi0gICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9yZXN1bWUiLCAibGVuZ3RoIiA6IDMgfSwK
KyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX3lpZWxkIiwgImxlbmd0aCIgOiA0IH0sCiAgICAg
ICAgICAgICB7ICJuYW1lIiA6ICJvcF93YXRjaGRvZyIsICJsZW5ndGgiIDogMSB9LAogICAgICAg
ICAgICAgeyAibmFtZSIgOiAib3BfbG9nX3NoYWRvd19jaGlja2VuX3Byb2xvZ3VlIiwgImxlbmd0
aCIgOiAyfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2xvZ19zaGFkb3dfY2hpY2tlbl90
YWlsIiwgImxlbmd0aCIgOiAzfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNwcAppbmRleCAxN2U4MmEyZmJi
YTAxNTA0M2U5OWQzNGVkMjU2OTM3MmIzNmY3YTg1Li5hMTU0MGYxZGJiNDNlOTJlYzdhNGQ3OWJj
MzRjOTA3ZGI3YzI2ZjNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNwcApAQCAtMzEsMTk4ICszMSwz
NiBAQAogI2luY2x1ZGUgIkJ5dGVjb2RlVXNlRGVmLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgi
CiAjaW5jbHVkZSAiRnVsbEJ5dGVjb2RlTGl2ZW5lc3MuaCIKLSNpbmNsdWRlICJQcmVjaXNlSnVt
cFRhcmdldHMuaCIKKyNpbmNsdWRlICJJbnRlcnByZXRlcklubGluZXMuaCIKIAogbmFtZXNwYWNl
IEpTQyB7CiAKIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5
c2lzKENvZGVCbG9jayogY29kZUJsb2NrKQotICAgIDogbV9jb2RlQmxvY2soY29kZUJsb2NrKQor
ICAgIDogbV9ncmFwaChjb2RlQmxvY2ssIGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkpCiB7Ci0g
ICAgQVNTRVJUKG1fY29kZUJsb2NrKTsKICAgICBjb21wdXRlKCk7CiB9CiAKLXN0YXRpYyBib29s
IGlzVmFsaWRSZWdpc3RlckZvckxpdmVuZXNzKENvZGVCbG9jayogY29kZUJsb2NrLCBpbnQgb3Bl
cmFuZCkKK3RlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+Cit2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NB
bmFseXNpczo6Y29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9j
aywgT3Bjb2RlSUQgb3Bjb2RlSUQsIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgRmFzdEJpdFZl
Y3RvciYsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiB7Ci0gICAgaWYgKGNvZGVCbG9jay0+aXND
b25zdGFudFJlZ2lzdGVySW5kZXgob3BlcmFuZCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICAKLSAgICBWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZyhvcGVyYW5kKTsKLSAgICByZXR1cm4g
dmlydHVhbFJlZy5pc0xvY2FsKCk7Ci19Ci0KLXN0YXRpYyB1bnNpZ25lZCBnZXRMZWFkZXJPZmZz
ZXRGb3JCYXNpY0Jsb2NrKHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+KiBiYXNp
Y0Jsb2NrKQotewotICAgIHJldHVybiAoKmJhc2ljQmxvY2spLT5sZWFkZXJCeXRlY29kZU9mZnNl
dCgpOwotfQotCi1zdGF0aWMgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBmaW5kQmFzaWNCbG9ja1dpdGhM
ZWFkZXJPZmZzZXQoVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYg
YmFzaWNCbG9ja3MsIHVuc2lnbmVkIGxlYWRlck9mZnNldCkKLXsKLSAgICByZXR1cm4gKCp0cnlC
aW5hcnlTZWFyY2g8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4sIHVuc2lnbmVk
PihiYXNpY0Jsb2NrcywgYmFzaWNCbG9ja3Muc2l6ZSgpLCBsZWFkZXJPZmZzZXQsIGdldExlYWRl
ck9mZnNldEZvckJhc2ljQmxvY2spKS5nZXQoKTsKLX0KLQotc3RhdGljIGJvb2wgYmxvY2tDb250
YWluc0J5dGVjb2RlT2Zmc2V0KEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2ssIHVuc2lnbmVkIGJ5
dGVjb2RlT2Zmc2V0KQotewotICAgIHVuc2lnbmVkIGxlYWRlck9mZnNldCA9IGJsb2NrLT5sZWFk
ZXJCeXRlY29kZU9mZnNldCgpOwotICAgIHJldHVybiBieXRlY29kZU9mZnNldCA+PSBsZWFkZXJP
ZmZzZXQgJiYgYnl0ZWNvZGVPZmZzZXQgPCBsZWFkZXJPZmZzZXQgKyBibG9jay0+dG90YWxCeXRl
Y29kZUxlbmd0aCgpOwotfQotCi1zdGF0aWMgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBmaW5kQmFzaWNC
bG9ja0ZvckJ5dGVjb2RlT2Zmc2V0KFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNp
Y0Jsb2NrPj4mIGJhc2ljQmxvY2tzLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCkKLXsKLS8qCi0g
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGJhc2ljQmxvY2tzLnNpemUoKTsgaSsrKSB7Ci0g
ICAgICAgIGlmIChibG9ja0NvbnRhaW5zQnl0ZWNvZGVPZmZzZXQoYmFzaWNCbG9ja3NbaV0uZ2V0
KCksIGJ5dGVjb2RlT2Zmc2V0KSkKLSAgICAgICAgICAgIHJldHVybiBiYXNpY0Jsb2Nrc1tpXS5n
ZXQoKTsKLSAgICB9Ci0gICAgcmV0dXJuIDA7Ci0qLwotICAgIHN0ZDo6dW5pcXVlX3B0cjxCeXRl
Y29kZUJhc2ljQmxvY2s+KiBiYXNpY0Jsb2NrID0gYXBwcm94aW1hdGVCaW5hcnlTZWFyY2g8c3Rk
Ojp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4sIHVuc2lnbmVkPigKLSAgICAgICAgYmFz
aWNCbG9ja3MsIGJhc2ljQmxvY2tzLnNpemUoKSwgYnl0ZWNvZGVPZmZzZXQsIGdldExlYWRlck9m
ZnNldEZvckJhc2ljQmxvY2spOwotICAgIC8vIFdlIGZvdW5kIHRoZSBibG9jayB3ZSB3ZXJlIGxv
b2tpbmcgZm9yLgotICAgIGlmIChibG9ja0NvbnRhaW5zQnl0ZWNvZGVPZmZzZXQoKCpiYXNpY0Js
b2NrKS5nZXQoKSwgYnl0ZWNvZGVPZmZzZXQpKQotICAgICAgICByZXR1cm4gKCpiYXNpY0Jsb2Nr
KS5nZXQoKTsKLQotICAgIC8vIEJhc2ljIGJsb2NrIGlzIHRvIHRoZSBsZWZ0IG9mIHRoZSByZXR1
cm5lZCBibG9jay4KLSAgICBpZiAoYnl0ZWNvZGVPZmZzZXQgPCAoKmJhc2ljQmxvY2spLT5sZWFk
ZXJCeXRlY29kZU9mZnNldCgpKSB7Ci0gICAgICAgIEFTU0VSVChiYXNpY0Jsb2NrIC0gMSA+PSBi
YXNpY0Jsb2Nrcy5kYXRhKCkpOwotICAgICAgICBBU1NFUlQoYmxvY2tDb250YWluc0J5dGVjb2Rl
T2Zmc2V0KGJhc2ljQmxvY2tbLTFdLmdldCgpLCBieXRlY29kZU9mZnNldCkpOwotICAgICAgICBy
ZXR1cm4gYmFzaWNCbG9ja1stMV0uZ2V0KCk7Ci0gICAgfQotCi0gICAgLy8gQmFzaWMgYmxvY2sg
aXMgdG8gdGhlIHJpZ2h0IG9mIHRoZSByZXR1cm5lZCBibG9jay4KLSAgICBBU1NFUlQoJmJhc2lj
QmxvY2tbMV0gPD0gJmJhc2ljQmxvY2tzLmxhc3QoKSk7Ci0gICAgQVNTRVJUKGJsb2NrQ29udGFp
bnNCeXRlY29kZU9mZnNldChiYXNpY0Jsb2NrWzFdLmdldCgpLCBieXRlY29kZU9mZnNldCkpOwot
ICAgIHJldHVybiBiYXNpY0Jsb2NrWzFdLmdldCgpOwotfQotCi0vLyBTaW1wbGlmaWVkIGludGVy
ZmFjZSB0byBieXRlY29kZSB1c2UvZGVmLCB3aGljaCBkZXRlcm1pbmVzIGRlZnMgZmlyc3QgYW5k
IHRoZW4gdXNlcywgYW5kIGluY2x1ZGVzCi0vLyBleGNlcHRpb24gaGFuZGxlcnMgaW4gdGhlIHVz
ZXMuCi10ZW1wbGF0ZTx0eXBlbmFtZSBVc2VGdW5jdG9yLCB0eXBlbmFtZSBEZWZGdW5jdG9yPgot
c3RhdGljIHZvaWQgc3RlcE92ZXJJbnN0cnVjdGlvbihDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0
ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaywgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJh
c2ljQmxvY2s+PiYgYmFzaWNCbG9ja3MsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBjb25zdCBV
c2VGdW5jdG9yJiB1c2UsIGNvbnN0IERlZkZ1bmN0b3ImIGRlZikKLXsKLSAgICAvLyBUaGlzIGFi
c3RyYWN0bHkgZXhlY3V0ZSB0aGUgaW5zdHJ1Y3Rpb24gaW4gcmV2ZXJzZS4gSW5zdHJ1Y3Rpb25z
IGxvZ2ljYWxseSBmaXJzdCB1c2Ugb3BlcmFuZHMgYW5kCi0gICAgLy8gdGhlbiBkZWZpbmUgb3Bl
cmFuZHMuIFRoaXMgbG9naWNhbCBvcmRlcmluZyBpcyBuZWNlc3NhcnkgZm9yIG9wZXJhdGlvbnMg
dGhhdCB1c2UgYW5kIGRlZiB0aGUgc2FtZQotICAgIC8vIG9wZXJhbmQsIGxpa2U6Ci0gICAgLy8K
LSAgICAvLyAgICAgb3BfYWRkIGxvYzEsIGxvYzEsIGxvYzIKLSAgICAvLwotICAgIC8vIFRoZSB1
c2Ugb2YgbG9jMSBoYXBwZW5zIGJlZm9yZSB0aGUgZGVmIG9mIGxvYzEuIFRoYXQncyBhIHNlbWFu
dGljIHJlcXVpcmVtZW50IHNpbmNlIHRoZSBhZGQKLSAgICAvLyBvcGVyYXRpb24gY2Fubm90IHRy
YXZlbCBmb3J3YXJkIGluIHRpbWUgdG8gcmVhZCB0aGUgdmFsdWUgdGhhdCBpdCB3aWxsIHByb2R1
Y2UgYWZ0ZXIgcmVhZGluZyB0aGF0Ci0gICAgLy8gdmFsdWUuIFNpbmNlIHdlIGFyZSBleGVjdXRp
bmcgaW4gcmV2ZXJzZSwgdGhpcyBtZWFucyB0aGF0IHdlIG11c3QgZG8gZGVmcyBiZWZvcmUgdXNl
cyAocmV2ZXJzZSBvZgotICAgIC8vIHVzZXMgYmVmb3JlIGRlZnMpLgotICAgIC8vCi0gICAgLy8g
U2luY2UgdGhpcyBpcyBhIGxpdmVuZXNzIGFuYWx5c2lzLCB0aGlzIG9yZGVyaW5nIGVuZHMgdXAg
YmVpbmcgcGFydGljdWxhcmx5IGltcG9ydGFudDogaWYgd2UgZGlkCi0gICAgLy8gdXNlcyBiZWZv
cmUgZGVmcywgdGhlbiB0aGUgYWRkIG9wZXJhdGlvbiBhYm92ZSB3b3VsZCBhcHBlYXIgdG8gbm90
IGhhdmUgbG9jMSBsaXZlLCBzaW5jZSB3ZSdkCi0gICAgLy8gZmlyc3QgYWRkIGl0IHRvIHRoZSBv
dXQgc2V0ICh0aGUgdXNlKSwgYW5kIHRoZW4gd2UnZCByZW1vdmUgaXQgKHRoZSBkZWYpLgotICAg
IAotICAgIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoCi0gICAgICAgIGNvZGVCbG9jaywg
YmxvY2ssIGJ5dGVjb2RlT2Zmc2V0LAotICAgICAgICBbJl0gKENvZGVCbG9jayogY29kZUJsb2Nr
LCBJbnN0cnVjdGlvbiosIE9wY29kZUlELCBpbnQgb3BlcmFuZCkgewotICAgICAgICAgICAgaWYg
KGlzVmFsaWRSZWdpc3RlckZvckxpdmVuZXNzKGNvZGVCbG9jaywgb3BlcmFuZCkpCi0gICAgICAg
ICAgICAgICAgZGVmKFZpcnR1YWxSZWdpc3RlcihvcGVyYW5kKS50b0xvY2FsKCkpOwotICAgICAg
ICB9KTsKLQotICAgIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoCi0gICAgICAgIGNvZGVC
bG9jaywgYmxvY2ssIGJ5dGVjb2RlT2Zmc2V0LAotICAgICAgICBbJl0gKENvZGVCbG9jayogY29k
ZUJsb2NrLCBJbnN0cnVjdGlvbiosIE9wY29kZUlELCBpbnQgb3BlcmFuZCkgewotICAgICAgICAg
ICAgaWYgKGlzVmFsaWRSZWdpc3RlckZvckxpdmVuZXNzKGNvZGVCbG9jaywgb3BlcmFuZCkpCi0g
ICAgICAgICAgICAgICAgdXNlKFZpcnR1YWxSZWdpc3RlcihvcGVyYW5kKS50b0xvY2FsKCkpOwot
ICAgICAgICB9KTsKLQotICAgIC8vIElmIHdlIGhhdmUgYW4gZXhjZXB0aW9uIGhhbmRsZXIsIHdl
IHdhbnQgdGhlIGxpdmUtaW4gdmFyaWFibGVzIG9mIHRoZSAKLSAgICAvLyBleGNlcHRpb24gaGFu
ZGxlciBibG9jayB0byBiZSBpbmNsdWRlZCBpbiB0aGUgbGl2ZS1pbiBvZiB0aGlzIHBhcnRpY3Vs
YXIgYnl0ZWNvZGUuCi0gICAgaWYgKEhhbmRsZXJJbmZvKiBoYW5kbGVyID0gY29kZUJsb2NrLT5o
YW5kbGVyRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpKSB7Ci0gICAgICAgIC8vIEZJ
WE1FOiBUaGlzIHJlc3VtZSBjaGVjayBzaG91bGQgbm90IGJlIG5lZWRlZC4KLSAgICAgICAgLy8g
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1OTI4MQotICAgICAgICBJ
bnRlcnByZXRlciogaW50ZXJwcmV0ZXIgPSBjb2RlQmxvY2stPnZtKCktPmludGVycHJldGVyOwot
ICAgICAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4gPSBjb2RlQmxvY2stPmluc3Ry
dWN0aW9ucygpLmJlZ2luKCk7Ci0gICAgICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9ICZp
bnN0cnVjdGlvbnNCZWdpbltieXRlY29kZU9mZnNldF07Ci0gICAgICAgIE9wY29kZUlEIG9wY29k
ZUlEID0gaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGluc3RydWN0aW9uLT51Lm9wY29kZSk7Ci0g
ICAgICAgIGlmIChvcGNvZGVJRCAhPSBvcF9yZXN1bWUpIHsKLSAgICAgICAgICAgIEJ5dGVjb2Rl
QmFzaWNCbG9jayogaGFuZGxlckJsb2NrID0gZmluZEJhc2ljQmxvY2tXaXRoTGVhZGVyT2Zmc2V0
KGJhc2ljQmxvY2tzLCBoYW5kbGVyLT50YXJnZXQpOwotICAgICAgICAgICAgQVNTRVJUKGhhbmRs
ZXJCbG9jayk7Ci0gICAgICAgICAgICBoYW5kbGVyQmxvY2stPmluKCkuZm9yRWFjaFNldEJpdCh1
c2UpOwotICAgICAgICB9Ci0gICAgfQotfQotCi1zdGF0aWMgdm9pZCBzdGVwT3Zlckluc3RydWN0
aW9uKENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrLCBWZWN0
b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+JiBiYXNpY0Jsb2NrcywgdW5z
aWduZWQgYnl0ZWNvZGVPZmZzZXQsIEZhc3RCaXRWZWN0b3ImIG91dCkKLXsKLSAgICBzdGVwT3Zl
ckluc3RydWN0aW9uKAotICAgICAgICBjb2RlQmxvY2ssIGJsb2NrLCBiYXNpY0Jsb2NrcywgYnl0
ZWNvZGVPZmZzZXQsCi0gICAgICAgIFsmXSAodW5zaWduZWQgYml0SW5kZXgpIHsKLSAgICAgICAg
ICAgIC8vIFRoaXMgaXMgdGhlIHVzZSBmdW5jdG9yLCBzbyB3ZSBzZXQgdGhlIGJpdC4KLSAgICAg
ICAgICAgIG91dC5zZXQoYml0SW5kZXgpOwotICAgICAgICB9LAotICAgICAgICBbJl0gKHVuc2ln
bmVkIGJpdEluZGV4KSB7Ci0gICAgICAgICAgICAvLyBUaGlzIGlzIHRoZSBkZWYgZnVuY3Rvciwg
c28gd2UgY2xlYXIgdGhlIGJpdC4KLSAgICAgICAgICAgIG91dC5jbGVhcihiaXRJbmRleCk7Ci0g
ICAgICAgIH0pOworICAgIEpTQzo6Y29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChjb2RlQmxv
Y2ssIG9wY29kZUlELCBpbnN0cnVjdGlvbiwgZnVuY3Rvcik7CiB9CiAKLXN0YXRpYyB2b2lkIGNv
bXB1dGVMb2NhbExpdmVuZXNzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2ssIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNv
ZGVCYXNpY0Jsb2NrPj4mIGJhc2ljQmxvY2tzLCB1bnNpZ25lZCB0YXJnZXRPZmZzZXQsIEZhc3RC
aXRWZWN0b3ImIHJlc3VsdCkKK3RlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+Cit2b2lkIEJ5dGVj
b2RlTGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgT3Bjb2RlSUQgb3Bjb2RlSUQsIEluc3RydWN0aW9uKiBpbnN0cnVjdGlv
biwgRmFzdEJpdFZlY3RvciYsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiB7Ci0gICAgQVNTRVJU
KCFibG9jay0+aXNFeGl0QmxvY2soKSk7Ci0gICAgQVNTRVJUKCFibG9jay0+aXNFbnRyeUJsb2Nr
KCkpOwotCi0gICAgRmFzdEJpdFZlY3RvciBvdXQgPSBibG9jay0+b3V0KCk7Ci0KLSAgICBmb3Ig
KGludCBpID0gYmxvY2stPmJ5dGVjb2RlT2Zmc2V0cygpLnNpemUoKSAtIDE7IGkgPj0gMDsgaS0t
KSB7Ci0gICAgICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0ID0gYmxvY2stPmJ5dGVjb2RlT2Zm
c2V0cygpW2ldOwotICAgICAgICBpZiAodGFyZ2V0T2Zmc2V0ID4gYnl0ZWNvZGVPZmZzZXQpCi0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgCi0gICAgICAgIHN0ZXBPdmVySW5zdHJ1Y3Rpb24o
Y29kZUJsb2NrLCBibG9jaywgYmFzaWNCbG9ja3MsIGJ5dGVjb2RlT2Zmc2V0LCBvdXQpOwotICAg
IH0KLQotICAgIHJlc3VsdC5zZXQob3V0KTsKLX0KLQotc3RhdGljIHZvaWQgY29tcHV0ZUxvY2Fs
TGl2ZW5lc3NGb3JCbG9jayhDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Jsb2Nr
KiBibG9jaywgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYgYmFz
aWNCbG9ja3MpCi17Ci0gICAgaWYgKGJsb2NrLT5pc0V4aXRCbG9jaygpIHx8IGJsb2NrLT5pc0Vu
dHJ5QmxvY2soKSkKLSAgICAgICAgcmV0dXJuOwotICAgIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9y
Qnl0ZWNvZGVPZmZzZXQoY29kZUJsb2NrLCBibG9jaywgYmFzaWNCbG9ja3MsIGJsb2NrLT5sZWFk
ZXJCeXRlY29kZU9mZnNldCgpLCBibG9jay0+aW4oKSk7Ci19Ci0KLXZvaWQgQnl0ZWNvZGVMaXZl
bmVzc0FuYWx5c2lzOjpydW5MaXZlbmVzc0ZpeHBvaW50KCkKLXsKLSAgICBVbmxpbmtlZENvZGVC
bG9jayogdW5saW5rZWRDb2RlQmxvY2sgPSBtX2NvZGVCbG9jay0+dW5saW5rZWRDb2RlQmxvY2so
KTsKLSAgICB1bnNpZ25lZCBudW1iZXJPZlZhcmlhYmxlcyA9IHVubGlua2VkQ29kZUJsb2NrLT5t
X251bUNhbGxlZUxvY2FsczsKLQotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2Jhc2lj
QmxvY2tzLnNpemUoKTsgaSsrKSB7Ci0gICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2sg
PSBtX2Jhc2ljQmxvY2tzW2ldLmdldCgpOwotICAgICAgICBibG9jay0+aW4oKS5yZXNpemUobnVt
YmVyT2ZWYXJpYWJsZXMpOwotICAgICAgICBibG9jay0+b3V0KCkucmVzaXplKG51bWJlck9mVmFy
aWFibGVzKTsKLSAgICB9Ci0KLSAgICBib29sIGNoYW5nZWQ7Ci0gICAgbV9iYXNpY0Jsb2Nrcy5s
YXN0KCktPmluKCkuY2xlYXJBbGwoKTsKLSAgICBtX2Jhc2ljQmxvY2tzLmxhc3QoKS0+b3V0KCku
Y2xlYXJBbGwoKTsKLSAgICBGYXN0Qml0VmVjdG9yIG5ld091dDsKLSAgICBuZXdPdXQucmVzaXpl
KG1fYmFzaWNCbG9ja3MubGFzdCgpLT5vdXQoKS5udW1CaXRzKCkpOwotICAgIGRvIHsKLSAgICAg
ICAgY2hhbmdlZCA9IGZhbHNlOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2Jhc2ljQmxv
Y2tzLnNpemUoKSAtIDE7IGktLTspIHsKLSAgICAgICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9jayog
YmxvY2sgPSBtX2Jhc2ljQmxvY2tzW2ldLmdldCgpOwotICAgICAgICAgICAgbmV3T3V0LmNsZWFy
QWxsKCk7Ci0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSAwOyBqIDwgYmxvY2stPnN1Y2Nl
c3NvcnMoKS5zaXplKCk7IGorKykKLSAgICAgICAgICAgICAgICBuZXdPdXQubWVyZ2UoYmxvY2st
PnN1Y2Nlc3NvcnMoKVtqXS0+aW4oKSk7Ci0gICAgICAgICAgICBib29sIG91dERpZENoYW5nZSA9
IGJsb2NrLT5vdXQoKS5zZXRBbmRDaGVjayhuZXdPdXQpOwotICAgICAgICAgICAgY29tcHV0ZUxv
Y2FsTGl2ZW5lc3NGb3JCbG9jayhtX2NvZGVCbG9jaywgYmxvY2ssIG1fYmFzaWNCbG9ja3MpOwot
ICAgICAgICAgICAgY2hhbmdlZCB8PSBvdXREaWRDaGFuZ2U7Ci0gICAgICAgIH0KLSAgICB9IHdo
aWxlIChjaGFuZ2VkKTsKKyAgICBKU0M6OmNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoY29k
ZUJsb2NrLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb24sIGZ1bmN0b3IpOwogfQogCiB2b2lkIEJ5dGVj
b2RlTGl2ZW5lc3NBbmFseXNpczo6Z2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29kZU9mZnNldCh1bnNp
Z25lZCBieXRlY29kZU9mZnNldCwgRmFzdEJpdFZlY3RvciYgcmVzdWx0KQogewotICAgIEJ5dGVj
b2RlQmFzaWNCbG9jayogYmxvY2sgPSBmaW5kQmFzaWNCbG9ja0ZvckJ5dGVjb2RlT2Zmc2V0KG1f
YmFzaWNCbG9ja3MsIGJ5dGVjb2RlT2Zmc2V0KTsKKyAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGJs
b2NrID0gbV9ncmFwaC5maW5kQmFzaWNCbG9ja0ZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zm
c2V0KTsKICAgICBBU1NFUlQoYmxvY2spOwogICAgIEFTU0VSVCghYmxvY2stPmlzRW50cnlCbG9j
aygpKTsKICAgICBBU1NFUlQoIWJsb2NrLT5pc0V4aXRCbG9jaygpKTsKICAgICByZXN1bHQucmVz
aXplKGJsb2NrLT5vdXQoKS5udW1CaXRzKCkpOwotICAgIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9y
Qnl0ZWNvZGVPZmZzZXQobV9jb2RlQmxvY2ssIGJsb2NrLCBtX2Jhc2ljQmxvY2tzLCBieXRlY29k
ZU9mZnNldCwgcmVzdWx0KTsKKyAgICBjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJ5dGVjb2RlT2Zm
c2V0KG1fZ3JhcGgsIGJsb2NrLCBieXRlY29kZU9mZnNldCwgcmVzdWx0KTsKIH0KIAogYm9vbCBC
eXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6Om9wZXJhbmRJc0xpdmVBdEJ5dGVjb2RlT2Zmc2V0KGlu
dCBvcGVyYW5kLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCkKQEAgLTI0NCwxMSArODIsMTEgQEAg
RmFzdEJpdFZlY3RvciBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmdldExpdmVuZXNzSW5mb0F0
Qnl0ZWNvZGVPZmZzZXQodW5zaWduZWQKIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpj
b21wdXRlRnVsbExpdmVuZXNzKEZ1bGxCeXRlY29kZUxpdmVuZXNzJiByZXN1bHQpCiB7CiAgICAg
RmFzdEJpdFZlY3RvciBvdXQ7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBtX2dyYXBoLmNv
ZGVCbG9jaygpOwogICAgIAotICAgIHJlc3VsdC5tX21hcC5yZXNpemUobV9jb2RlQmxvY2stPmlu
c3RydWN0aW9ucygpLnNpemUoKSk7CisgICAgcmVzdWx0Lm1fbWFwLnJlc2l6ZShjb2RlQmxvY2st
Pmluc3RydWN0aW9ucygpLnNpemUoKSk7CiAgICAgCi0gICAgZm9yICh1bnNpZ25lZCBpID0gbV9i
YXNpY0Jsb2Nrcy5zaXplKCk7IGktLTspIHsKLSAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBi
bG9jayA9IG1fYmFzaWNCbG9ja3NbaV0uZ2V0KCk7CisgICAgZm9yIChzdGQ6OnVuaXF1ZV9wdHI8
Qnl0ZWNvZGVCYXNpY0Jsb2NrPiYgYmxvY2sgOiBtX2dyYXBoLmJhc2ljQmxvY2tzSW5SZXZlcnNl
T3JkZXIoKSkgewogICAgICAgICBpZiAoYmxvY2stPmlzRW50cnlCbG9jaygpIHx8IGJsb2NrLT5p
c0V4aXRCbG9jaygpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIApAQCAtMjU2LDcg
Kzk0LDcgQEAgdm9pZCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGVGdWxsTGl2ZW5l
c3MoRnVsbEJ5dGVjb2RlTGl2ZW5lc3MmIHJlc3VsdCkKICAgICAgICAgCiAgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IGJsb2NrLT5ieXRlY29kZU9mZnNldHMoKS5zaXplKCk7IGktLTspIHsKICAg
ICAgICAgICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0ID0gYmxvY2stPmJ5dGVjb2RlT2Zmc2V0
cygpW2ldOwotICAgICAgICAgICAgc3RlcE92ZXJJbnN0cnVjdGlvbihtX2NvZGVCbG9jaywgYmxv
Y2ssIG1fYmFzaWNCbG9ja3MsIGJ5dGVjb2RlT2Zmc2V0LCBvdXQpOworICAgICAgICAgICAgc3Rl
cE92ZXJJbnN0cnVjdGlvbihtX2dyYXBoLCBieXRlY29kZU9mZnNldCwgb3V0KTsKICAgICAgICAg
ICAgIHJlc3VsdC5tX21hcFtieXRlY29kZU9mZnNldF0gPSBvdXQ7CiAgICAgICAgIH0KICAgICB9
CkBAIC0yNjYsMTEgKzEwNCwxMSBAQCB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Y29t
cHV0ZUtpbGxzKEJ5dGVjb2RlS2lsbHMmIHJlc3VsdCkKIHsKICAgICBGYXN0Qml0VmVjdG9yIG91
dDsKICAgICAKLSAgICByZXN1bHQubV9jb2RlQmxvY2sgPSBtX2NvZGVCbG9jazsKLSAgICByZXN1
bHQubV9raWxsU2V0cyA9IHN0ZDo6bWFrZV91bmlxdWU8Qnl0ZWNvZGVLaWxsczo6S2lsbFNldFtd
PihtX2NvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKKyAgICBDb2RlQmxvY2sqIGNv
ZGVCbG9jayA9IG1fZ3JhcGguY29kZUJsb2NrKCk7CisgICAgcmVzdWx0Lm1fY29kZUJsb2NrID0g
Y29kZUJsb2NrOworICAgIHJlc3VsdC5tX2tpbGxTZXRzID0gc3RkOjptYWtlX3VuaXF1ZTxCeXRl
Y29kZUtpbGxzOjpLaWxsU2V0W10+KGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsK
ICAgICAKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2Jhc2ljQmxvY2tzLnNpemUoKTsgaS0tOykg
ewotICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrID0gbV9iYXNpY0Jsb2Nrc1tpXS5n
ZXQoKTsKKyAgICBmb3IgKHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+JiBibG9j
ayA6IG1fZ3JhcGguYmFzaWNCbG9ja3NJblJldmVyc2VPcmRlcigpKSB7CiAgICAgICAgIGlmIChi
bG9jay0+aXNFbnRyeUJsb2NrKCkgfHwgYmxvY2stPmlzRXhpdEJsb2NrKCkpCiAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgCkBAIC0yNzksNyArMTE3LDcgQEAgdm9pZCBCeXRlY29kZUxp
dmVuZXNzQW5hbHlzaXM6OmNvbXB1dGVLaWxscyhCeXRlY29kZUtpbGxzJiByZXN1bHQpCiAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IGJsb2NrLT5ieXRlY29kZU9mZnNldHMoKS5zaXplKCk7IGkt
LTspIHsKICAgICAgICAgICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0ID0gYmxvY2stPmJ5dGVj
b2RlT2Zmc2V0cygpW2ldOwogICAgICAgICAgICAgc3RlcE92ZXJJbnN0cnVjdGlvbigKLSAgICAg
ICAgICAgICAgICBtX2NvZGVCbG9jaywgYmxvY2ssIG1fYmFzaWNCbG9ja3MsIGJ5dGVjb2RlT2Zm
c2V0LAorICAgICAgICAgICAgICAgIG1fZ3JhcGgsIGJ5dGVjb2RlT2Zmc2V0LCBvdXQsCiAgICAg
ICAgICAgICAgICAgWyZdICh1bnNpZ25lZCBpbmRleCkgewogICAgICAgICAgICAgICAgICAgICAv
LyBUaGlzIGlzIGZvciB1c2VzLgogICAgICAgICAgICAgICAgICAgICBpZiAob3V0LmdldChpbmRl
eCkpCkBAIC0yOTcsMTIgKzEzNSwxMyBAQCB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6
Y29tcHV0ZUtpbGxzKEJ5dGVjb2RlS2lsbHMmIHJlc3VsdCkKIAogdm9pZCBCeXRlY29kZUxpdmVu
ZXNzQW5hbHlzaXM6OmR1bXBSZXN1bHRzKCkKIHsKLSAgICBkYXRhTG9nKCJcbkR1bXBpbmcgYnl0
ZWNvZGUgbGl2ZW5lc3MgZm9yICIsICptX2NvZGVCbG9jaywgIjpcbiIpOwotICAgIEludGVycHJl
dGVyKiBpbnRlcnByZXRlciA9IG1fY29kZUJsb2NrLT52bSgpLT5pbnRlcnByZXRlcjsKLSAgICBJ
bnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4gPSBtX2NvZGVCbG9jay0+aW5zdHJ1Y3Rpb25z
KCkuYmVnaW4oKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9iYXNpY0Jsb2Nrcy5z
aXplKCk7IGkrKykgewotICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrID0gbV9iYXNp
Y0Jsb2Nrc1tpXS5nZXQoKTsKLSAgICAgICAgZGF0YUxvZ0YoIlxuQnl0ZWNvZGUgYmFzaWMgYmxv
Y2sgJXU6ICVwIChvZmZzZXQ6ICV1LCBsZW5ndGg6ICV1KVxuIiwgaSwgYmxvY2ssIGJsb2NrLT5s
ZWFkZXJCeXRlY29kZU9mZnNldCgpLCBibG9jay0+dG90YWxCeXRlY29kZUxlbmd0aCgpKTsKKyAg
ICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IG1fZ3JhcGguY29kZUJsb2NrKCk7CisgICAgZGF0YUxv
ZygiXG5EdW1waW5nIGJ5dGVjb2RlIGxpdmVuZXNzIGZvciAiLCAqY29kZUJsb2NrLCAiOlxuIik7
CisgICAgSW50ZXJwcmV0ZXIqIGludGVycHJldGVyID0gY29kZUJsb2NrLT52bSgpLT5pbnRlcnBy
ZXRlcjsKKyAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4gPSBjb2RlQmxvY2stPmlu
c3RydWN0aW9ucygpLmJlZ2luKCk7CisgICAgdW5zaWduZWQgaSA9IDA7CisgICAgZm9yIChCeXRl
Y29kZUJhc2ljQmxvY2sqIGJsb2NrIDogbV9ncmFwaCkgeworICAgICAgICBkYXRhTG9nRigiXG5C
eXRlY29kZSBiYXNpYyBibG9jayAldTogJXAgKG9mZnNldDogJXUsIGxlbmd0aDogJXUpXG4iLCBp
KyssIGJsb2NrLCBibG9jay0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKSwgYmxvY2stPnRvdGFsQnl0
ZWNvZGVMZW5ndGgoKSk7CiAgICAgICAgIGRhdGFMb2dGKCJTdWNjZXNzb3JzOiAiKTsKICAgICAg
ICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8IGJsb2NrLT5zdWNjZXNzb3JzKCkuc2l6ZSgpOyBq
KyspIHsKICAgICAgICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogc3VjY2Vzc29yID0gYmxvY2st
PnN1Y2Nlc3NvcnMoKVtqXTsKQEAgLTMyNyw3ICsxNjYsNyBAQCB2b2lkIEJ5dGVjb2RlTGl2ZW5l
c3NBbmFseXNpczo6ZHVtcFJlc3VsdHMoKQogICAgICAgICAgICAgICAgICAgICBkYXRhTG9nRigi
JXUgIiwgaik7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBkYXRhTG9nRigiXG4iKTsKLSAg
ICAgICAgICAgIG1fY29kZUJsb2NrLT5kdW1wQnl0ZWNvZGUoV1RGOjpkYXRhRmlsZSgpLCBtX2Nv
ZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKSwgaW5zdHJ1Y3Rpb25zQmVnaW4s
IGN1cnJlbnRJbnN0cnVjdGlvbik7CisgICAgICAgICAgICBjb2RlQmxvY2stPmR1bXBCeXRlY29k
ZShXVEY6OmRhdGFGaWxlKCksIGNvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMo
KSwgaW5zdHJ1Y3Rpb25zQmVnaW4sIGN1cnJlbnRJbnN0cnVjdGlvbik7CiAKICAgICAgICAgICAg
IE9wY29kZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGluc3RydWN0aW9u
c0JlZ2luW2J5dGVjb2RlT2Zmc2V0XS51Lm9wY29kZSk7CiAgICAgICAgICAgICB1bnNpZ25lZCBv
cGNvZGVMZW5ndGggPSBvcGNvZGVMZW5ndGhzW29wY29kZUlEXTsKQEAgLTM0Niw5ICsxODUsNyBA
QCB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6ZHVtcFJlc3VsdHMoKQogCiB2b2lkIEJ5
dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0ZSgpCiB7Ci0gICAgY29tcHV0ZUJ5dGVjb2Rl
QmFzaWNCbG9ja3MobV9jb2RlQmxvY2ssIG1fYmFzaWNCbG9ja3MpOwotICAgIEFTU0VSVChtX2Jh
c2ljQmxvY2tzLnNpemUoKSk7Ci0gICAgcnVuTGl2ZW5lc3NGaXhwb2ludCgpOworICAgIHJ1bkxp
dmVuZXNzRml4cG9pbnQobV9ncmFwaCk7CiAKICAgICBpZiAoT3B0aW9uczo6ZHVtcEJ5dGVjb2Rl
TGl2ZW5lc3NSZXN1bHRzKCkpCiAgICAgICAgIGR1bXBSZXN1bHRzKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lz
LmgKaW5kZXggZWNlMTZmMjFmMDE1MTBhNjQyN2ZkODQxMTQwNzliZWQ4NzBjMDg3NS4uZTEyY2Q4
ZWRjZTc2ZTEyMmVmMDRlZTFmMzVmYmE4MjFiOGQ3ZjdmMCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuaApA
QCAtMjMsMTAgKzIzLDExIEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAg
Ki8KIAotI2lmbmRlZiBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNfaAotI2RlZmluZSBCeXRlY29k
ZUxpdmVuZXNzQW5hbHlzaXNfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJCeXRlY29kZUJh
c2ljQmxvY2suaCIKKyNpbmNsdWRlICJCeXRlY29kZUdyYXBoLmgiCisjaW5jbHVkZSAiQ29kZUJs
b2NrLmgiCiAjaW5jbHVkZSA8d3RmL0Zhc3RCaXRWZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvSGFz
aE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTM0LDEzICszNSwyOSBAQAogbmFt
ZXNwYWNlIEpTQyB7CiAKIGNsYXNzIEJ5dGVjb2RlS2lsbHM7Ci1jbGFzcyBDb2RlQmxvY2s7CiBj
bGFzcyBGdWxsQnl0ZWNvZGVMaXZlbmVzczsKIAotY2xhc3MgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5
c2lzIHsKK3RlbXBsYXRlPHR5cGVuYW1lIERlcml2ZWRBbmFseXNpcz4KK2NsYXNzIEJ5dGVjb2Rl
TGl2ZW5lc3NQcm9wYWdhdGlvbiB7Citwcm90ZWN0ZWQ6CisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
R3JhcGgsIHR5cGVuYW1lIFVzZUZ1bmN0b3IsIHR5cGVuYW1lIERlZkZ1bmN0b3I+IHZvaWQgc3Rl
cE92ZXJJbnN0cnVjdGlvbihHcmFwaCYsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBGYXN0Qml0
VmVjdG9yJiBvdXQsIGNvbnN0IFVzZUZ1bmN0b3ImLCBjb25zdCBEZWZGdW5jdG9yJik7CisKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBHcmFwaD4gdm9pZCBzdGVwT3Zlckluc3RydWN0aW9uKEdyYXBo
JiwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIEZhc3RCaXRWZWN0b3ImIG91dCk7CisKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBHcmFwaD4gYm9vbCBjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJ5dGVj
b2RlT2Zmc2V0KEdyYXBoJiwgQnl0ZWNvZGVCYXNpY0Jsb2NrKiwgdW5zaWduZWQgdGFyZ2V0T2Zm
c2V0LCBGYXN0Qml0VmVjdG9yJiByZXN1bHQpOworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgR3Jh
cGg+IGJvb2wgY29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCbG9jayhHcmFwaCYsIEJ5dGVjb2RlQmFz
aWNCbG9jayopOworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgR3JhcGg+IEZhc3RCaXRWZWN0b3Ig
Z2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29kZU9mZnNldChHcmFwaCYsIHVuc2lnbmVkIGJ5dGVjb2Rl
T2Zmc2V0KTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEdyYXBoPiB2b2lkIHJ1bkxpdmVuZXNz
Rml4cG9pbnQoR3JhcGgmKTsKK307CisKK2NsYXNzIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcyA6
IHByaXZhdGUgQnl0ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0aW9uPEJ5dGVjb2RlTGl2ZW5lc3NBbmFs
eXNpcz4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcyk7CiBwdWJsaWM6CisgICAgZnJpZW5kIGNs
YXNzIEJ5dGVjb2RlTGl2ZW5lc3NQcm9wYWdhdGlvbjxCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM+
OwogICAgIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcyhDb2RlQmxvY2sqKTsKICAgICAKICAgICBi
b29sIG9wZXJhbmRJc0xpdmVBdEJ5dGVjb2RlT2Zmc2V0KGludCBvcGVyYW5kLCB1bnNpZ25lZCBi
eXRlY29kZU9mZnNldCk7CkBAIC01MSwxOSArNjgsMTkgQEAgY2xhc3MgQnl0ZWNvZGVMaXZlbmVz
c0FuYWx5c2lzIHsKIAogcHJpdmF0ZToKICAgICB2b2lkIGNvbXB1dGUoKTsKLSAgICB2b2lkIHJ1
bkxpdmVuZXNzRml4cG9pbnQoKTsKICAgICB2b2lkIGR1bXBSZXN1bHRzKCk7CiAKICAgICB2b2lk
IGdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQs
IEZhc3RCaXRWZWN0b3ImKTsKIAotICAgIENvZGVCbG9jayogbV9jb2RlQmxvY2s7Ci0gICAgVmVj
dG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiBtX2Jhc2ljQmxvY2tzOwor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29k
ZU9mZnNldChDb2RlQmxvY2sqLCBPcGNvZGVJRCwgSW5zdHJ1Y3Rpb24qLCBGYXN0Qml0VmVjdG9y
JiwgY29uc3QgRnVuY3RvciYpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHZvaWQg
Y29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqLCBPcGNvZGVJRCwgSW5zdHJ1
Y3Rpb24qLCBGYXN0Qml0VmVjdG9yJiwgY29uc3QgRnVuY3RvciYpOworCisgICAgQnl0ZWNvZGVH
cmFwaDxDb2RlQmxvY2s+IG1fZ3JhcGg7CiB9OwogCiBpbmxpbmUgYm9vbCBvcGVyYW5kSXNBbHdh
eXNMaXZlKGludCBvcGVyYW5kKTsKIGlubGluZSBib29sIG9wZXJhbmRUaGF0SXNOb3RBbHdheXNM
aXZlSXNMaXZlKGNvbnN0IEZhc3RCaXRWZWN0b3ImIG91dCwgaW50IG9wZXJhbmQpOwogaW5saW5l
IGJvb2wgb3BlcmFuZElzTGl2ZShjb25zdCBGYXN0Qml0VmVjdG9yJiBvdXQsIGludCBvcGVyYW5k
KTsKK2lubGluZSBib29sIGlzVmFsaWRSZWdpc3RlckZvckxpdmVuZXNzKGludCBvcGVyYW5kKTsK
IAogfSAvLyBuYW1lc3BhY2UgSlNDCi0KLSNlbmRpZiAvLyBCeXRlY29kZUxpdmVuZXNzQW5hbHlz
aXNfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
TGl2ZW5lc3NBbmFseXNpc0lubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNJbmxpbmVzLmgKaW5kZXggOWI1Yzc1NWZjYjZjZDUx
ODA1MTQ1MDA3ODkyMmFjNGQ2ZDRkMjM4Zi4uY2Y2YzhkMmE0MzRkMWRlOTYxYWE0YTliMWUwZTRk
MGM0ZmMxZGUxOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzSW5saW5lcy5oCkBAIC0yMywxMSAr
MjMsMTIgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZu
ZGVmIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGluZXNfaAotI2RlZmluZSBCeXRlY29kZUxp
dmVuZXNzQW5hbHlzaXNJbmxpbmVzX2gKKyNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiQnl0ZWNv
ZGVHcmFwaC5oIgogI2luY2x1ZGUgIkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5oIgogI2luY2x1
ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiT3Bl
cmF0aW9ucy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTUwLDcgKzUxLDE1MSBAQCBpbmxpbmUg
Ym9vbCBvcGVyYW5kSXNMaXZlKGNvbnN0IEZhc3RCaXRWZWN0b3ImIG91dCwgaW50IG9wZXJhbmQp
CiAgICAgcmV0dXJuIG9wZXJhbmRJc0Fsd2F5c0xpdmUob3BlcmFuZCkgfHwgb3BlcmFuZFRoYXRJ
c05vdEFsd2F5c0xpdmVJc0xpdmUob3V0LCBvcGVyYW5kKTsKIH0KIAotfSAvLyBuYW1lc3BhY2Ug
SlNDCitpbmxpbmUgYm9vbCBpc1ZhbGlkUmVnaXN0ZXJGb3JMaXZlbmVzcyhpbnQgb3BlcmFuZCkK
K3sKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZyhvcGVyYW5kKTsKKyAgICBpZiAodmly
dHVhbFJlZy5pc0NvbnN0YW50KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4g
dmlydHVhbFJlZy5pc0xvY2FsKCk7Cit9CisKKy8vIFNpbXBsaWZpZWQgaW50ZXJmYWNlIHRvIGJ5
dGVjb2RlIHVzZS9kZWYsIHdoaWNoIGRldGVybWluZXMgZGVmcyBmaXJzdCBhbmQgdGhlbiB1c2Vz
LCBhbmQgaW5jbHVkZXMKKy8vIGV4Y2VwdGlvbiBoYW5kbGVycyBpbiB0aGUgdXNlcy4KK3RlbXBs
YXRlPHR5cGVuYW1lIERlcml2ZWRBbmFseXNpcz4KK3RlbXBsYXRlPHR5cGVuYW1lIEdyYXBoLCB0
eXBlbmFtZSBVc2VGdW5jdG9yLCB0eXBlbmFtZSBEZWZGdW5jdG9yPgoraW5saW5lIHZvaWQgQnl0
ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0aW9uPERlcml2ZWRBbmFseXNpcz46OnN0ZXBPdmVySW5zdHJ1
Y3Rpb24oR3JhcGgmIGdyYXBoLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgRmFzdEJpdFZlY3Rv
ciYgb3V0LCBjb25zdCBVc2VGdW5jdG9yJiB1c2UsIGNvbnN0IERlZkZ1bmN0b3ImIGRlZikKK3sK
KyAgICAvLyBUaGlzIGFic3RyYWN0bHkgZXhlY3V0ZSB0aGUgaW5zdHJ1Y3Rpb24gaW4gcmV2ZXJz
ZS4gSW5zdHJ1Y3Rpb25zIGxvZ2ljYWxseSBmaXJzdCB1c2Ugb3BlcmFuZHMgYW5kCisgICAgLy8g
dGhlbiBkZWZpbmUgb3BlcmFuZHMuIFRoaXMgbG9naWNhbCBvcmRlcmluZyBpcyBuZWNlc3Nhcnkg
Zm9yIG9wZXJhdGlvbnMgdGhhdCB1c2UgYW5kIGRlZiB0aGUgc2FtZQorICAgIC8vIG9wZXJhbmQs
IGxpa2U6CisgICAgLy8KKyAgICAvLyAgICAgb3BfYWRkIGxvYzEsIGxvYzEsIGxvYzIKKyAgICAv
LworICAgIC8vIFRoZSB1c2Ugb2YgbG9jMSBoYXBwZW5zIGJlZm9yZSB0aGUgZGVmIG9mIGxvYzEu
IFRoYXQncyBhIHNlbWFudGljIHJlcXVpcmVtZW50IHNpbmNlIHRoZSBhZGQKKyAgICAvLyBvcGVy
YXRpb24gY2Fubm90IHRyYXZlbCBmb3J3YXJkIGluIHRpbWUgdG8gcmVhZCB0aGUgdmFsdWUgdGhh
dCBpdCB3aWxsIHByb2R1Y2UgYWZ0ZXIgcmVhZGluZyB0aGF0CisgICAgLy8gdmFsdWUuIFNpbmNl
IHdlIGFyZSBleGVjdXRpbmcgaW4gcmV2ZXJzZSwgdGhpcyBtZWFucyB0aGF0IHdlIG11c3QgZG8g
ZGVmcyBiZWZvcmUgdXNlcyAocmV2ZXJzZSBvZgorICAgIC8vIHVzZXMgYmVmb3JlIGRlZnMpLgor
ICAgIC8vCisgICAgLy8gU2luY2UgdGhpcyBpcyBhIGxpdmVuZXNzIGFuYWx5c2lzLCB0aGlzIG9y
ZGVyaW5nIGVuZHMgdXAgYmVpbmcgcGFydGljdWxhcmx5IGltcG9ydGFudDogaWYgd2UgZGlkCisg
ICAgLy8gdXNlcyBiZWZvcmUgZGVmcywgdGhlbiB0aGUgYWRkIG9wZXJhdGlvbiBhYm92ZSB3b3Vs
ZCBhcHBlYXIgdG8gbm90IGhhdmUgbG9jMSBsaXZlLCBzaW5jZSB3ZSdkCisgICAgLy8gZmlyc3Qg
YWRkIGl0IHRvIHRoZSBvdXQgc2V0ICh0aGUgdXNlKSwgYW5kIHRoZW4gd2UnZCByZW1vdmUgaXQg
KHRoZSBkZWYpLgorCisgICAgYXV0byogY29kZUJsb2NrID0gZ3JhcGguY29kZUJsb2NrKCk7Cisg
ICAgSW50ZXJwcmV0ZXIqIGludGVycHJldGVyID0gY29kZUJsb2NrLT52bSgpLT5pbnRlcnByZXRl
cjsKKyAgICBhdXRvKiBpbnN0cnVjdGlvbnNCZWdpbiA9IGdyYXBoLmluc3RydWN0aW9ucygpLmJl
Z2luKCk7CisgICAgYXV0byogaW5zdHJ1Y3Rpb24gPSAmaW5zdHJ1Y3Rpb25zQmVnaW5bYnl0ZWNv
ZGVPZmZzZXRdOworICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0ZXItPmdldE9wY29k
ZUlEKCppbnN0cnVjdGlvbik7CisKKyAgICBzdGF0aWNfY2FzdDxEZXJpdmVkQW5hbHlzaXMqPih0
aGlzKS0+Y29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldCgKKyAgICAgICAgY29kZUJsb2NrLCBv
cGNvZGVJRCwgaW5zdHJ1Y3Rpb24sIG91dCwKKyAgICAgICAgWyZdICh0eXBlbmFtZSBHcmFwaDo6
Q29kZUJsb2NrKiwgdHlwZW5hbWUgR3JhcGg6Okluc3RydWN0aW9uKiwgT3Bjb2RlSUQsIGludCBv
cGVyYW5kKSB7CisgICAgICAgICAgICBpZiAoaXNWYWxpZFJlZ2lzdGVyRm9yTGl2ZW5lc3Mob3Bl
cmFuZCkpCisgICAgICAgICAgICAgICAgZGVmKFZpcnR1YWxSZWdpc3RlcihvcGVyYW5kKS50b0xv
Y2FsKCkpOworICAgICAgICB9KTsKKworICAgIHN0YXRpY19jYXN0PERlcml2ZWRBbmFseXNpcyo+
KHRoaXMpLT5jb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAorICAgICAgICBjb2RlQmxvY2ss
IG9wY29kZUlELCBpbnN0cnVjdGlvbiwgb3V0LAorICAgICAgICBbJl0gKHR5cGVuYW1lIEdyYXBo
OjpDb2RlQmxvY2sqLCB0eXBlbmFtZSBHcmFwaDo6SW5zdHJ1Y3Rpb24qLCBPcGNvZGVJRCwgaW50
IG9wZXJhbmQpIHsKKyAgICAgICAgICAgIGlmIChpc1ZhbGlkUmVnaXN0ZXJGb3JMaXZlbmVzcyhv
cGVyYW5kKSkKKyAgICAgICAgICAgICAgICB1c2UoVmlydHVhbFJlZ2lzdGVyKG9wZXJhbmQpLnRv
TG9jYWwoKSk7CisgICAgICAgIH0pOworCisgICAgLy8gSWYgd2UgaGF2ZSBhbiBleGNlcHRpb24g
aGFuZGxlciwgd2Ugd2FudCB0aGUgbGl2ZS1pbiB2YXJpYWJsZXMgb2YgdGhlIAorICAgIC8vIGV4
Y2VwdGlvbiBoYW5kbGVyIGJsb2NrIHRvIGJlIGluY2x1ZGVkIGluIHRoZSBsaXZlLWluIG9mIHRo
aXMgcGFydGljdWxhciBieXRlY29kZS4KKyAgICBpZiAoYXV0byogaGFuZGxlciA9IGNvZGVCbG9j
ay0+aGFuZGxlckZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KSkgeworICAgICAgICBC
eXRlY29kZUJhc2ljQmxvY2sqIGhhbmRsZXJCbG9jayA9IGdyYXBoLmZpbmRCYXNpY0Jsb2NrV2l0
aExlYWRlck9mZnNldChoYW5kbGVyLT50YXJnZXQpOworICAgICAgICBBU1NFUlQoaGFuZGxlckJs
b2NrKTsKKyAgICAgICAgaGFuZGxlckJsb2NrLT5pbigpLmZvckVhY2hTZXRCaXQodXNlKTsKKyAg
ICB9Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIERlcml2ZWRBbmFseXNpcz4KK3RlbXBsYXRlPHR5
cGVuYW1lIEdyYXBoPgoraW5saW5lIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0aW9uPERl
cml2ZWRBbmFseXNpcz46OnN0ZXBPdmVySW5zdHJ1Y3Rpb24oR3JhcGgmIGdyYXBoLCB1bnNpZ25l
ZCBieXRlY29kZU9mZnNldCwgRmFzdEJpdFZlY3RvciYgb3V0KQoreworICAgIHN0ZXBPdmVySW5z
dHJ1Y3Rpb24oCisgICAgICAgIGdyYXBoLCBieXRlY29kZU9mZnNldCwgb3V0LAorICAgICAgICBb
Jl0gKHVuc2lnbmVkIGJpdEluZGV4KSB7CisgICAgICAgICAgICAvLyBUaGlzIGlzIHRoZSB1c2Ug
ZnVuY3Rvciwgc28gd2Ugc2V0IHRoZSBiaXQuCisgICAgICAgICAgICBvdXQuc2V0KGJpdEluZGV4
KTsKKyAgICAgICAgfSwKKyAgICAgICAgWyZdICh1bnNpZ25lZCBiaXRJbmRleCkgeworICAgICAg
ICAgICAgLy8gVGhpcyBpcyB0aGUgZGVmIGZ1bmN0b3IsIHNvIHdlIGNsZWFyIHRoZSBiaXQuCisg
ICAgICAgICAgICBvdXQuY2xlYXIoYml0SW5kZXgpOworICAgICAgICB9KTsKK30KKwordGVtcGxh
dGU8dHlwZW5hbWUgRGVyaXZlZEFuYWx5c2lzPgordGVtcGxhdGU8dHlwZW5hbWUgR3JhcGg+Citp
bmxpbmUgYm9vbCBCeXRlY29kZUxpdmVuZXNzUHJvcGFnYXRpb248RGVyaXZlZEFuYWx5c2lzPjo6
Y29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCeXRlY29kZU9mZnNldChHcmFwaCYgZ3JhcGgsIEJ5dGVj
b2RlQmFzaWNCbG9jayogYmxvY2ssIHVuc2lnbmVkIHRhcmdldE9mZnNldCwgRmFzdEJpdFZlY3Rv
ciYgcmVzdWx0KQoreworICAgIEFTU0VSVCghYmxvY2stPmlzRXhpdEJsb2NrKCkpOworICAgIEFT
U0VSVCghYmxvY2stPmlzRW50cnlCbG9jaygpKTsKIAotI2VuZGlmIC8vIEJ5dGVjb2RlTGl2ZW5l
c3NBbmFseXNpc0lubGluZXNfaAorICAgIEZhc3RCaXRWZWN0b3Igb3V0ID0gYmxvY2stPm91dCgp
OwogCisgICAgZm9yIChpbnQgaSA9IGJsb2NrLT5ieXRlY29kZU9mZnNldHMoKS5zaXplKCkgLSAx
OyBpID49IDA7IGktLSkgeworICAgICAgICB1bnNpZ25lZCBieXRlY29kZU9mZnNldCA9IGJsb2Nr
LT5ieXRlY29kZU9mZnNldHMoKVtpXTsKKyAgICAgICAgaWYgKHRhcmdldE9mZnNldCA+IGJ5dGVj
b2RlT2Zmc2V0KQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIHN0ZXBPdmVySW5zdHJ1Y3Rp
b24oZ3JhcGgsIGJ5dGVjb2RlT2Zmc2V0LCBvdXQpOworICAgIH0KKworICAgIHJldHVybiByZXN1
bHQuc2V0QW5kQ2hlY2sob3V0KTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgRGVyaXZlZEFuYWx5
c2lzPgordGVtcGxhdGU8dHlwZW5hbWUgR3JhcGg+CitpbmxpbmUgYm9vbCBCeXRlY29kZUxpdmVu
ZXNzUHJvcGFnYXRpb248RGVyaXZlZEFuYWx5c2lzPjo6Y29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JC
bG9jayhHcmFwaCYgZ3JhcGgsIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2spCit7CisgICAgaWYg
KGJsb2NrLT5pc0V4aXRCbG9jaygpIHx8IGJsb2NrLT5pc0VudHJ5QmxvY2soKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIHJldHVybiBjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJ5dGVjb2Rl
T2Zmc2V0KGdyYXBoLCBibG9jaywgYmxvY2stPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCksIGJsb2Nr
LT5pbigpKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgRGVyaXZlZEFuYWx5c2lzPgordGVtcGxh
dGU8dHlwZW5hbWUgR3JhcGg+CitpbmxpbmUgRmFzdEJpdFZlY3RvciBCeXRlY29kZUxpdmVuZXNz
UHJvcGFnYXRpb248RGVyaXZlZEFuYWx5c2lzPjo6Z2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29kZU9m
ZnNldChHcmFwaCYgZ3JhcGgsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KQoreworICAgIEJ5dGVj
b2RlQmFzaWNCbG9jayogYmxvY2sgPSBncmFwaC5maW5kQmFzaWNCbG9ja0ZvckJ5dGVjb2RlT2Zm
c2V0KGJ5dGVjb2RlT2Zmc2V0KTsKKyAgICBBU1NFUlQoYmxvY2spOworICAgIEFTU0VSVCghYmxv
Y2stPmlzRW50cnlCbG9jaygpKTsKKyAgICBBU1NFUlQoIWJsb2NrLT5pc0V4aXRCbG9jaygpKTsK
KyAgICBGYXN0Qml0VmVjdG9yIG91dDsKKyAgICBvdXQucmVzaXplKGJsb2NrLT5vdXQoKS5udW1C
aXRzKCkpOworICAgIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQnl0ZWNvZGVPZmZzZXQoZ3JhcGgs
IGJsb2NrLCBieXRlY29kZU9mZnNldCwgb3V0KTsKKyAgICByZXR1cm4gb3V0OworfQorCit0ZW1w
bGF0ZTx0eXBlbmFtZSBEZXJpdmVkQW5hbHlzaXM+Cit0ZW1wbGF0ZTx0eXBlbmFtZSBHcmFwaD4K
K2lubGluZSB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NQcm9wYWdhdGlvbjxEZXJpdmVkQW5hbHlzaXM+
OjpydW5MaXZlbmVzc0ZpeHBvaW50KEdyYXBoJiBncmFwaCkKK3sKKyAgICBhdXRvKiBjb2RlQmxv
Y2sgPSBncmFwaC5jb2RlQmxvY2soKTsKKyAgICB1bnNpZ25lZCBudW1iZXJPZlZhcmlhYmxlcyA9
IGNvZGVCbG9jay0+bnVtQ2FsbGVlTG9jYWxzKCk7CisgICAgZm9yIChCeXRlY29kZUJhc2ljQmxv
Y2sqIGJsb2NrIDogZ3JhcGgpIHsKKyAgICAgICAgYmxvY2stPmluKCkucmVzaXplKG51bWJlck9m
VmFyaWFibGVzKTsKKyAgICAgICAgYmxvY2stPm91dCgpLnJlc2l6ZShudW1iZXJPZlZhcmlhYmxl
cyk7CisgICAgICAgIGJsb2NrLT5pbigpLmNsZWFyQWxsKCk7CisgICAgICAgIGJsb2NrLT5vdXQo
KS5jbGVhckFsbCgpOworICAgIH0KKworICAgIGJvb2wgY2hhbmdlZDsKKyAgICBCeXRlY29kZUJh
c2ljQmxvY2sqIGxhc3RCbG9jayA9IGdyYXBoLmxhc3QoKTsKKyAgICBsYXN0QmxvY2stPmluKCku
Y2xlYXJBbGwoKTsKKyAgICBsYXN0QmxvY2stPm91dCgpLmNsZWFyQWxsKCk7CisgICAgRmFzdEJp
dFZlY3RvciBuZXdPdXQ7CisgICAgbmV3T3V0LnJlc2l6ZShsYXN0QmxvY2stPm91dCgpLm51bUJp
dHMoKSk7CisgICAgZG8geworICAgICAgICBjaGFuZ2VkID0gZmFsc2U7CisgICAgICAgIGZvciAo
c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4mIGJsb2NrIDogZ3JhcGguYmFzaWNC
bG9ja3NJblJldmVyc2VPcmRlcigpKSB7CisgICAgICAgICAgICBuZXdPdXQuY2xlYXJBbGwoKTsK
KyAgICAgICAgICAgIGZvciAoQnl0ZWNvZGVCYXNpY0Jsb2NrKiBzdWNjZXNzb3IgOiBibG9jay0+
c3VjY2Vzc29ycygpKQorICAgICAgICAgICAgICAgIG5ld091dC5tZXJnZShzdWNjZXNzb3ItPmlu
KCkpOworICAgICAgICAgICAgYmxvY2stPm91dCgpLnNldChuZXdPdXQpOworICAgICAgICAgICAg
Y2hhbmdlZCB8PSBjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJsb2NrKGdyYXBoLCBibG9jay5nZXQo
KSk7CisgICAgICAgIH0KKyAgICB9IHdoaWxlIChjaGFuZ2VkKTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVSZXdyaXRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVS
ZXdyaXRlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDA1ZjdiZWVkZjAxODAyMjExNjE5MmI2Yzg2Yzc5OTVj
YzA0MmM4NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZVJld3JpdGVyLmNwcApAQCAtMCwwICsxLDExNiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNiBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisgKiBDb3B5
cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQnl0ZWNvZGVSZXdyaXRlci5oIgorCisj
aW5jbHVkZSA8d3RmL0J1YmJsZVNvcnQuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK3ZvaWQgQnl0
ZWNvZGVSZXdyaXRlcjo6YXBwbHlNb2RpZmljYXRpb24oKQoreworICAgIGZvciAoc2l6ZV90IGlu
c2VydGlvbkluZGV4ID0gbV9pbnNlcnRpb25zLnNpemUoKTsgaW5zZXJ0aW9uSW5kZXgtLTspIHsK
KyAgICAgICAgSW5zZXJ0aW9uJiBpbnNlcnRpb24gPSBtX2luc2VydGlvbnNbaW5zZXJ0aW9uSW5k
ZXhdOworICAgICAgICBpZiAoaW5zZXJ0aW9uLmVsZW1lbnQoKS50eXBlID09IENvbW1hbmQ6OlR5
cGU6OlJlbW92ZSkKKyAgICAgICAgICAgIG1fZ3JhcGguaW5zdHJ1Y3Rpb25zKCkucmVtb3ZlKGlu
c2VydGlvbi5pbmRleCgpLCBpbnNlcnRpb24uZWxlbWVudCgpLmxlbmd0aCgpKTsKKyAgICAgICAg
ZWxzZSB7CisgICAgICAgICAgICBpZiAoaW5zZXJ0aW9uLmVsZW1lbnQoKS5ieXRlY29kZVR5cGUg
PT0gQ29tbWFuZDo6Qnl0ZWNvZGVUeXBlOjpCcmFuY2gpCisgICAgICAgICAgICAgICAgYWRqdXN0
SnVtcFRhcmdldHNJbkp1bXBPcGVyYXRpb24oYWRqdXN0T2Zmc2V0V2l0aEluc2VydGlvbnMoMCwg
aW5zZXJ0aW9uLmluZGV4KCksIG1faW5zZXJ0aW9ucy5iZWdpbigpLCBtX2luc2VydGlvbnMuYmVn
aW4oKSArIGluc2VydGlvbkluZGV4KSwgaW5zZXJ0aW9uKTsKKyAgICAgICAgICAgIG1fZ3JhcGgu
aW5zdHJ1Y3Rpb25zKCkuaW5zZXJ0VmVjdG9yKGluc2VydGlvbi5pbmRleCgpLCBpbnNlcnRpb24u
ZWxlbWVudCgpLmluc3RydWN0aW9ucyk7CisgICAgICAgIH0KKyAgICB9CisgICAgbV9pbnNlcnRp
b25zLmNsZWFyKCk7Cit9CisKK3ZvaWQgQnl0ZWNvZGVSZXdyaXRlcjo6ZXhlY3V0ZSgpCit7Cisg
ICAgV1RGOjpidWJibGVTb3J0KG1faW5zZXJ0aW9ucy5iZWdpbigpLCBtX2luc2VydGlvbnMuZW5k
KCksIFtdIChjb25zdCBJbnNlcnRpb24mIGxocywgY29uc3QgSW5zZXJ0aW9uJiByaHMpIHsKKyAg
ICAgICAgaWYgKGxocy5pbmRleCgpID09IHJocy5pbmRleCgpKQorICAgICAgICAgICAgcmV0dXJu
IGxocy5lbGVtZW50KCkucG9zaXRpb24gPCByaHMuZWxlbWVudCgpLnBvc2l0aW9uOworICAgICAg
ICByZXR1cm4gbGhzIDwgcmhzOworICAgIH0pOworCisgICAgLy8gQ29udmVydCB0byBhYnNvbHV0
ZSBmaW5hbCBvZmZzZXRzLgorICAgIGZvciAoU3dpdGNoRW50cnkmIGVudHJ5IDogbV9pbnNlcnRl
ZFN3aXRjaGVzKSB7CisgICAgICAgIFVubGlua2VkU2ltcGxlSnVtcFRhYmxlJiB0YWJsZSA9IG1f
Z3JhcGguY29kZUJsb2NrKCktPnN3aXRjaEp1bXBUYWJsZShlbnRyeS50YWJsZUluZGV4KTsKKyAg
ICAgICAgZW50cnkuZGVmYXVsdE9mZnNldCA9IGFkanVzdE9mZnNldCgwLCBlbnRyeS5kZWZhdWx0
T2Zmc2V0KTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gdGFibGUuYnJhbmNoT2Zmc2V0cy5z
aXplKCk7IGktLTspCisgICAgICAgICAgICB0YWJsZS5icmFuY2hPZmZzZXRzW2ldID0gYWRqdXN0
T2Zmc2V0KDAsIHRhYmxlLmJyYW5jaE9mZnNldHNbaV0pOworICAgIH0KKworICAgIFVubGlua2Vk
Q29kZUJsb2NrKiBjb2RlQmxvY2sgPSBtX2dyYXBoLmNvZGVCbG9jaygpOworICAgIGNvZGVCbG9j
ay0+YXBwbHlNb2RpZmljYXRpb24oKnRoaXMpOworfQorCit2b2lkIEJ5dGVjb2RlUmV3cml0ZXI6
OmFkanVzdEp1bXBUYXJnZXRzSW5KdW1wT3BlcmF0aW9uKHVuc2lnbmVkIGZpbmFsT2Zmc2V0LCBJ
bnNlcnRpb24mIGluc2VydGlvbikKK3sKKyAgICAvLyBDdXJyZW50bHksIHdlIG9ubHkgc3VwcG9y
dCBzd2l0Y2hfaW1tIG9wZXJhdGlvbiBoZXJlLgorICAgIC8vIFdlIGNhbiBlYXNpbHkgZXh0ZW5k
IGl0IHRvIGFsbG93IHRoZSBvdGhlciBqdW1wIG9wZXJhdGlvbnMuCisgICAgU3dpdGNoRW50cnkm
IGVudHJ5ID0gbV9pbnNlcnRlZFN3aXRjaGVzW2luc2VydGlvbi5lbGVtZW50KCkuanVtcEVudHJ5
SW5kZXhdOworICAgIFVubGlua2VkU2ltcGxlSnVtcFRhYmxlJiB0YWJsZSA9IG1fZ3JhcGguY29k
ZUJsb2NrKCktPnN3aXRjaEp1bXBUYWJsZShlbnRyeS50YWJsZUluZGV4KTsKKworICAgIGZvciAo
dW5zaWduZWQgaSA9IHRhYmxlLmJyYW5jaE9mZnNldHMuc2l6ZSgpOyBpLS07KQorICAgICAgICB0
YWJsZS5icmFuY2hPZmZzZXRzW2ldID0gdGFibGUuYnJhbmNoT2Zmc2V0c1tpXSAtIHN0YXRpY19j
YXN0PGludD4oZmluYWxPZmZzZXQpOworCisgICAgaW5zZXJ0aW9uLmVsZW1lbnQoKS5pbnN0cnVj
dGlvbnNbMl0gPSBzdGF0aWNfY2FzdDxpbnQ+KGVudHJ5LmRlZmF1bHRPZmZzZXQpIC0gc3RhdGlj
X2Nhc3Q8aW50PihmaW5hbE9mZnNldCk7Cit9CisKK3ZvaWQgQnl0ZWNvZGVSZXdyaXRlcjo6aW5z
ZXJ0SW1wbCh1bnNpZ25lZCBqdW1wRW50cnlJbmRleCwgQ29tbWFuZDo6Qnl0ZWNvZGVUeXBlIGJ5
dGVjb2RlVHlwZSwgUG9zaXRpb24gcG9zaXRpb24sIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBW
ZWN0b3I8VW5saW5rZWRJbnN0cnVjdGlvbj4mJiBmcmFnbWVudCkKK3sKKyAgICBBU1NFUlQocG9z
aXRpb24gPT0gUG9zaXRpb246OkJlZm9yZSB8fCBwb3NpdGlvbiA9PSBQb3NpdGlvbjo6QWZ0ZXIp
OworICAgIG1faW5zZXJ0aW9ucy5hcHBlbmQoSW5zZXJ0aW9uKGJ5dGVjb2RlT2Zmc2V0LCBDb21t
YW5kIHsKKyAgICAgICAgQ29tbWFuZDo6VHlwZTo6SW5zZXJ0LAorICAgICAgICBwb3NpdGlvbiwK
KyAgICAgICAgYnl0ZWNvZGVUeXBlLAorICAgICAgICBqdW1wRW50cnlJbmRleCwKKyAgICAgICAg
MCwKKyAgICAgICAgV1RGTW92ZShmcmFnbWVudCkKKyAgICB9KSk7Cit9CisKK1VubGlua2VkU2lt
cGxlSnVtcFRhYmxlJiBCeXRlY29kZVJld3JpdGVyOjppbnNlcnRTd2l0Y2hJbW1lZGlhdGVJbXBs
KFBvc2l0aW9uIHBvc2l0aW9uLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgdW5zaWduZWQgZGVm
YXVsdE9mZnNldCwgaW50IHJlZykKK3sKKyAgICBTd2l0Y2hFbnRyeSBlbnRyeSB7CisgICAgICAg
IG1fZ3JhcGguY29kZUJsb2NrKCktPm51bWJlck9mU3dpdGNoSnVtcFRhYmxlcygpLAorICAgICAg
ICBkZWZhdWx0T2Zmc2V0LAorICAgIH07CisKKyAgICBWZWN0b3I8VW5saW5rZWRJbnN0cnVjdGlv
bj4gZnJhZ21lbnQgPSB7CisgICAgICAgIFVubGlua2VkSW5zdHJ1Y3Rpb24ob3Bfc3dpdGNoX2lt
bSksCisgICAgICAgIFVubGlua2VkSW5zdHJ1Y3Rpb24oZW50cnkudGFibGVJbmRleCksCisgICAg
ICAgIFVubGlua2VkSW5zdHJ1Y3Rpb24oZGVmYXVsdE9mZnNldCksCisgICAgICAgIFVubGlua2Vk
SW5zdHJ1Y3Rpb24ocmVnKQorICAgIH07CisKKyAgICBhdXRvJiBqdW1wVGFibGUgPSBtX2dyYXBo
LmNvZGVCbG9jaygpLT5hZGRTd2l0Y2hKdW1wVGFibGUoKTsKKyAgICB1bnNpZ25lZCBqdW1wRW50
cnlJbmRleCA9IG1faW5zZXJ0ZWRTd2l0Y2hlcy5zaXplKCk7CisgICAgbV9pbnNlcnRlZFN3aXRj
aGVzLmFwcGVuZChlbnRyeSk7CisgICAgaW5zZXJ0SW1wbChqdW1wRW50cnlJbmRleCwgQ29tbWFu
ZDo6Qnl0ZWNvZGVUeXBlOjpCcmFuY2gsIHBvc2l0aW9uLCBieXRlY29kZU9mZnNldCwgV1RGTW92
ZShmcmFnbWVudCkpOworICAgIHJldHVybiBqdW1wVGFibGU7Cit9CisKK30gLy8gbmFtZXNwYWNl
IEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
UmV3cml0ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVJld3Jp
dGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMWRiY2UyYTkzYWI1MzFmYWQ2YmFiZWExNDVkMTBiMjc1OWYzOTFh
OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZVJld3JpdGVyLmgKQEAgLTAsMCArMSwyNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTYgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorICogQ29weXJpZ2h0IChD
KSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpbmNsdWRlICJCeXRlY29kZUdyYXBoLmgiCisjaW5jbHVkZSAiQnl0ZWNvZGVz
LmgiCisjaW5jbHVkZSAiT3Bjb2RlLmgiCisjaW5jbHVkZSAiVW5saW5rZWRDb2RlQmxvY2suaCIK
KyNpbmNsdWRlIDx3dGYvSW5zZXJ0aW9uLmg+CisKK25hbWVzcGFjZSBKU0MgeworCisvLyBCeXRl
Y29kZVJld3JpdGVyIG9mZmVycyB0aGUgYWJpbGl0eSB0byBpbnNlcnQgYW5kIHJlbW92ZSB0aGUg
Ynl0ZWNvZGVzIGluY2x1ZGluZyBqdW1wIG9wZXJhdGlvbnMuCisvLworLy8gV2UgdXNlIHRoZSBv
cmlnaW5hbCBieXRlY29kZSBvZmZzZXRzIGFzIGxhYmVscy4gV2hlbiB5b3UgZW1pdCBzb21lIGp1
bXBzLCB5b3UgY2FuIHNwZWNpZnkgdGhlIGp1bXAgdGFyZ2V0IGJ5CisvLyB1c2luZyB0aGUgb3Jp
Z2luYWwgYnl0ZWNvZGUgb2Zmc2V0cy4gVGhlc2UgYnl0ZWNvZGUgb2Zmc2V0cyBhcmUgbGF0ZXIg
Y29udmVydGVkIGFwcHJvcHJpYXRlIHZhbHVlcyBieSB0aGUKKy8vIHJld3JpdGVyLiBBbmQgd2Ug
YWxzbyB1c2UgdGhlIGxhYmVscyB0byByZXByZXNlbnRzIHRoZSBwb3NpdGlvbiB0aGUgbmV3IGJ5
dGVjb2RlcyBpbnNlcnRlZC4KKy8vCisvLyAgICAgICAgICAgICAgICAgICAgICB8ICBbYnl0ZWNv
ZGVdICB8ICBbYnl0ZWNvZGVdICB8CisvLyAgIG9mZnNldHMgICAgICAgICAgICBBICAgICAgICAg
ICAgICBCICAgICAgICAgICAgICBDCisvLworLy8gV2UgY2FuIHVzZSB0aGUgYWJvdmUgIkEiLCAi
QiIsIGFuZCAiQyIgb2Zmc2V0cyBhcyBsYWJlbHMuIEFuZCB0aGUgcmV3cml0ZXIgaGFzIHRoZSBh
YmlsaXR5IHRvIGluc2VydCBieXRlY29kZSBmcmFnbWVudHMKKy8vIGJlZm9yZSBhbmQgYWZ0ZXIg
dGhlIGxhYmVsLiBGb3IgZXhhbXBsZSwgaWYgeW91IGluc2VydCB0aGUgZnJhZ21lbnQgYmVmb3Jl
ICJCIiwgdGhlIGxheW91dCBiZWNvbWVzIGxpa2UgdGhpcy4KKy8vCisvLyAgICAgICAgICAgICAg
ICAgICAgICB8ICBbYnl0ZWNvZGVdICB8ICBbZnJhZ21lbnRdICBbYnl0ZWNvZGVdICB8CisvLyAg
IG9mZnNldHMgICAgICAgICAgICBBICAgICAgICAgICAgICBCICAgICAgICAgICAgICAgICAgICAg
ICAgICBDCisvLworLy8gIEFuZCBldmVuIGlmIHlvdSByZW1vdmUgc29tZSBvcmlnaW5hbCBieXRl
Y29kZXMsIHRoZSBvZmZzZXQgcmVtYWlucyBhcyBsYWJlbHMuIEZvciBleGFtcGxlLCB3aGVuIHlv
dSByZW1vdmUgdGhlIEEncyBieXRlY29kZSwKKy8vICB0aGUgbGF5b3V0IGJlY29tZXMgbGlrZSB0
aGlzLgorLy8KKy8vICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgIHwgIFtieXRl
Y29kZV0gIHwKKy8vICAgb2Zmc2V0cyAgICAgICAgICAgIEEgICAgICAgICAgICAgIEIgICAgICAg
ICAgICAgIEMKKy8vCisvLyAgQW5kIHN0aWxsIHlvdSBjYW4gaW5zZXJ0IGZyYWdtZW50cyBiZWZv
cmUgYW5kIGFmdGVyICJBIi4KKy8vCisvLyAgICAgICAgICAgICAgICAgICAgICB8ICBbZnJhZ21l
bnRdICB8ICBbYnl0ZWNvZGVdICB8CisvLyAgIG9mZnNldHMgICAgICAgICAgICBBICAgICAgICAg
ICAgICBCICAgICAgICAgICAgICBDCisvLworLy8gICBXZSBjYW4gaW5zZXJ0IGJ5dGVjb2RlIGZy
YWdtZW50cyAiQmVmb3JlIiBhbmQgIkFmdGVyIiB0aGUgbGFiZWxzLiBUaGlzIGluc2VydGVkIHBv
c2l0aW9uLCBlaXRoZXIgIkJlZm9yZSIgYW5kICJBZnRlciIsCisvLyAgIGhhcyBlZmZlY3Qgd2hl
biB0aGUgbGFiZWwgaXMgaW52b2x2ZWQgd2l0aCBqdW1wcy4gRm9yIGV4YW1wbGUsIHdoZW4geW91
IGhhdmUganVtcCB0byB0aGUgcG9zaXRpb24gIkIiLAorLy8KKy8vICAgICAgICAgICAgICAgICAg
ICAgIHwgIFtieXRlY29kZV0gIHwgIFtieXRlY29kZV0gIHwKKy8vICAgb2Zmc2V0cyAgICAgICAg
ICAgIEEgICAgICAgICAgICAgIEIgICAgICAgICAgICAgIEMKKy8vICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIF4KKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGp1bXAgdG8gaGVyZS4KKy8vCisvLyAgYW5kIHlvdSBpbnNlcnQgdGhlIGJ5dGVjb2RlIGJl
Zm9yZS9hZnRlciAiQiIsCisvLworLy8gICAgICAgICAgICAgICAgICAgICAgfCAgW2J5dGVjb2Rl
XSBbYmVmb3JlXSAgfCAgW2FmdGVyXSBbYnl0ZWNvZGVdICB8CisvLyAgIG9mZnNldHMgICAgICAg
ICAgICBBICAgICAgICAgICAgICAgICAgICAgICBCICAgICAgICAgICAgICBDCisvLyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCisvLyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqdW1wIHRvIGhlcmUuCisvLworLy8gIGFz
IHlvdSBjYW4gc2VlLCB0aGUgZXhlY3V0aW9uIGp1bXBpbmcgaW50byAiQiIgZG9lcyBub3QgZXhl
Y3V0ZSBbYmVmb3JlXSBjb2RlLgorY2xhc3MgQnl0ZWNvZGVSZXdyaXRlciB7CitXVEZfTUFLRV9O
T05DT1BZQUJMRShCeXRlY29kZVJld3JpdGVyKTsKK3B1YmxpYzoKKyAgICBlbnVtIGNsYXNzIFBv
c2l0aW9uIDogaW50OF90IHsKKyAgICAgICAgQmVmb3JlID0gLTEsCisgICAgICAgIExhYmVsUG9p
bnQgPSAwLAorICAgICAgICBBZnRlciA9IDEsCisgICAgICAgIE9yaWdpbmFsQnl0ZWNvZGVQb2lu
dCA9IDIsCisgICAgfTsKKworcHJpdmF0ZToKKyAgICBzdHJ1Y3QgQ29tbWFuZCB7CisgICAgICAg
IGVudW0gY2xhc3MgVHlwZSA6IHVpbnQ4X3QgeyBJbnNlcnQgPSAwLCBSZW1vdmUgPSAxLCB9Owor
ICAgICAgICBlbnVtIGNsYXNzIEJ5dGVjb2RlVHlwZSA6IHVpbnQ4X3QgeyBOb3JtYWwsIEJyYW5j
aCB9OworCisgICAgICAgIHNpemVfdCBsZW5ndGgoKSBjb25zdAorICAgICAgICB7CisgICAgICAg
ICAgICBpZiAodHlwZSA9PSBUeXBlOjpSZW1vdmUpCisgICAgICAgICAgICAgICAgcmV0dXJuIHJl
bW92ZUxlbmd0aDsKKyAgICAgICAgICAgIHJldHVybiBpbnN0cnVjdGlvbnMuc2l6ZSgpOworICAg
ICAgICB9CisKKyAgICAgICAgVHlwZSB0eXBlOworICAgICAgICBQb3NpdGlvbiBwb3NpdGlvbjsK
KyAgICAgICAgQnl0ZWNvZGVUeXBlIGJ5dGVjb2RlVHlwZTsKKyAgICAgICAgdW5zaWduZWQganVt
cEVudHJ5SW5kZXg7CisgICAgICAgIHNpemVfdCByZW1vdmVMZW5ndGg7CisgICAgICAgIFZlY3Rv
cjxVbmxpbmtlZEluc3RydWN0aW9uPiBpbnN0cnVjdGlvbnM7CisgICAgfTsKKworICAgIHR5cGVk
ZWYgV1RGOjpJbnNlcnRpb248Q29tbWFuZD4gSW5zZXJ0aW9uOworCisgICAgc3RydWN0IFN3aXRj
aEVudHJ5IHsKKyAgICAgICAgc2l6ZV90IHRhYmxlSW5kZXg7CisgICAgICAgIHVuc2lnbmVkIGRl
ZmF1bHRPZmZzZXQ7CisgICAgfTsKKworcHVibGljOgorICAgIGNsYXNzIEZyYWdtZW50IHsKKyAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShGcmFnbWVudCk7CisgICAgcHVibGljOgorICAgICAgICBG
cmFnbWVudChWZWN0b3I8VW5saW5rZWRJbnN0cnVjdGlvbj4mIGZyYWdtZW50KQorICAgICAgICAg
ICAgOiBtX2ZyYWdtZW50KGZyYWdtZW50KQorICAgICAgICB7CisgICAgICAgIH0KKworICAgICAg
ICB0ZW1wbGF0ZTxjbGFzcy4uLiBBcmdzPgorICAgICAgICB2b2lkIGFwcGVuZChBcmdzLi4uIGFy
Z3MpCisgICAgICAgIHsKKyAgICAgICAgICAgIFVubGlua2VkSW5zdHJ1Y3Rpb24gaW5zdHJ1Y3Rp
b25zW3NpemVvZi4uLihhcmdzKV0gPSB7CisgICAgICAgICAgICAgICAgVW5saW5rZWRJbnN0cnVj
dGlvbihhcmdzKS4uLgorICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIG1fZnJhZ21lbnQuYXBw
ZW5kKGluc3RydWN0aW9ucywgc2l6ZW9mLi4uKGFyZ3MpKTsKKyAgICAgICAgfQorCisgICAgcHJp
dmF0ZToKKyAgICAgICAgVmVjdG9yPFVubGlua2VkSW5zdHJ1Y3Rpb24+JiBtX2ZyYWdtZW50Owor
ICAgIH07CisKKyAgICBCeXRlY29kZVJld3JpdGVyKEJ5dGVjb2RlR3JhcGg8VW5saW5rZWRDb2Rl
QmxvY2s+JiBncmFwaCkKKyAgICAgICAgOiBtX2dyYXBoKGdyYXBoKQorICAgIHsKKyAgICB9CisK
KyAgICB0ZW1wbGF0ZTxjbGFzcy4uLiBBcmdzPgorICAgIHZvaWQgaW5zZXJ0QmVmb3JlKHVuc2ln
bmVkIGJ5dGVjb2RlT2Zmc2V0LCBPcGNvZGVJRCBvcGNvZGVJRCwgQXJncy4uLiBhcmdzKQorICAg
IHsKKyAgICAgICAgVmVjdG9yPFVubGlua2VkSW5zdHJ1Y3Rpb24+IGZyYWdtZW50ID0geworICAg
ICAgICAgICAgVW5saW5rZWRJbnN0cnVjdGlvbihvcGNvZGVJRCksCisgICAgICAgICAgICBVbmxp
bmtlZEluc3RydWN0aW9uKGFyZ3MpLi4uCisgICAgICAgIH07CisgICAgICAgIGluc2VydEltcGwo
MCwgQ29tbWFuZDo6Qnl0ZWNvZGVUeXBlOjpOb3JtYWwsIFBvc2l0aW9uOjpCZWZvcmUsIGJ5dGVj
b2RlT2Zmc2V0LCBXVEZNb3ZlKGZyYWdtZW50KSk7CisgICAgfQorCisgICAgdGVtcGxhdGU8Y2xh
c3MuLi4gQXJncz4KKyAgICB2b2lkIGluc2VydEFmdGVyKHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0
LCBPcGNvZGVJRCBvcGNvZGVJRCwgQXJncy4uLiBhcmdzKQorICAgIHsKKyAgICAgICAgVmVjdG9y
PFVubGlua2VkSW5zdHJ1Y3Rpb24+IGZyYWdtZW50ID0geworICAgICAgICAgICAgVW5saW5rZWRJ
bnN0cnVjdGlvbihvcGNvZGVJRCksCisgICAgICAgICAgICBVbmxpbmtlZEluc3RydWN0aW9uKGFy
Z3MpLi4uCisgICAgICAgIH07CisgICAgICAgIGluc2VydEltcGwoMCwgQ29tbWFuZDo6Qnl0ZWNv
ZGVUeXBlOjpOb3JtYWwsIFBvc2l0aW9uOjpBZnRlciwgYnl0ZWNvZGVPZmZzZXQsIFdURk1vdmUo
ZnJhZ21lbnQpKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBGdW5jdGlvbj4KKyAgICB2
b2lkIGluc2VydEZyYWdtZW50QmVmb3JlKHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBGdW5jdGlv
biBmdW5jdGlvbikKKyAgICB7CisgICAgICAgIFZlY3RvcjxVbmxpbmtlZEluc3RydWN0aW9uPiBp
bnN0cnVjdGlvbnM7CisgICAgICAgIEZyYWdtZW50IGZyYWdtZW50KGluc3RydWN0aW9ucyk7Cisg
ICAgICAgIGZ1bmN0aW9uKGZyYWdtZW50KTsKKyAgICAgICAgaW5zZXJ0SW1wbCgwLCBDb21tYW5k
OjpCeXRlY29kZVR5cGU6Ok5vcm1hbCwgUG9zaXRpb246OkJlZm9yZSwgYnl0ZWNvZGVPZmZzZXQs
IFdURk1vdmUoaW5zdHJ1Y3Rpb25zKSk7CisgICAgfQorCisgICAgdGVtcGxhdGU8Y2xhc3MgRnVu
Y3Rpb24+CisgICAgdm9pZCBpbnNlcnRGcmFnbWVudEFmdGVyKHVuc2lnbmVkIGJ5dGVjb2RlT2Zm
c2V0LCBGdW5jdGlvbiBmdW5jdGlvbikKKyAgICB7CisgICAgICAgIFZlY3RvcjxVbmxpbmtlZElu
c3RydWN0aW9uPiBpbnN0cnVjdGlvbnM7CisgICAgICAgIEZyYWdtZW50IGZyYWdtZW50KGluc3Ry
dWN0aW9ucyk7CisgICAgICAgIGZ1bmN0aW9uKGZyYWdtZW50KTsKKyAgICAgICAgaW5zZXJ0SW1w
bCgwLCBDb21tYW5kOjpCeXRlY29kZVR5cGU6Ok5vcm1hbCwgUG9zaXRpb246OkFmdGVyLCBieXRl
Y29kZU9mZnNldCwgV1RGTW92ZShpbnN0cnVjdGlvbnMpKTsKKyAgICB9CisKKyAgICBVbmxpbmtl
ZFNpbXBsZUp1bXBUYWJsZSYgaW5zZXJ0U3dpdGNoSW1tZWRpYXRlQmVmb3JlKHVuc2lnbmVkIGJ5
dGVjb2RlT2Zmc2V0LCB1bnNpZ25lZCBkZWZhdWx0T2Zmc2V0LCBpbnQgcmVnKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGluc2VydFN3aXRjaEltbWVkaWF0ZUltcGwoUG9zaXRpb246OkJlZm9yZSwg
Ynl0ZWNvZGVPZmZzZXQsIGRlZmF1bHRPZmZzZXQsIHJlZyk7CisgICAgfQorCisgICAgdm9pZCBy
ZW1vdmVCeXRlY29kZSh1bnNpZ25lZCBieXRlY29kZU9mZnNldCkKKyAgICB7CisgICAgICAgIG1f
aW5zZXJ0aW9ucy5hcHBlbmQoSW5zZXJ0aW9uKGJ5dGVjb2RlT2Zmc2V0LCBDb21tYW5kIHsgQ29t
bWFuZDo6VHlwZTo6UmVtb3ZlLCBQb3NpdGlvbjo6T3JpZ2luYWxCeXRlY29kZVBvaW50LCBDb21t
YW5kOjpCeXRlY29kZVR5cGU6Ok5vcm1hbCwgMCwgb3Bjb2RlTGVuZ3RoKG1fZ3JhcGguaW5zdHJ1
Y3Rpb25zKClbYnl0ZWNvZGVPZmZzZXRdLnUub3Bjb2RlKSwgeyB9IH0pKTsKKyAgICB9CisKKyAg
ICB2b2lkIGV4ZWN1dGUoKTsKKworICAgIEJ5dGVjb2RlR3JhcGg8VW5saW5rZWRDb2RlQmxvY2s+
JiBncmFwaCgpIHsgcmV0dXJuIG1fZ3JhcGg7IH0KKworICAgIGludCBhZGp1c3RPZmZzZXQoaW50
IGJ5dGVjb2RlT2Zmc2V0LCBpbnQganVtcFRhcmdldCkKKyAgICB7CisgICAgICAgIHJldHVybiBh
ZGp1c3RPZmZzZXRXaXRoSW5zZXJ0aW9ucyhieXRlY29kZU9mZnNldCwganVtcFRhcmdldCwgbV9p
bnNlcnRpb25zLmJlZ2luKCksIG1faW5zZXJ0aW9ucy5lbmQoKSk7CisgICAgfQorCitwcml2YXRl
OgorICAgIHZvaWQgaW5zZXJ0SW1wbCh1bnNpZ25lZCBqdW1wRW50cnlJbmRleCwgQ29tbWFuZDo6
Qnl0ZWNvZGVUeXBlLCBQb3NpdGlvbiwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIFZlY3RvcjxV
bmxpbmtlZEluc3RydWN0aW9uPiYmIGZyYWdtZW50KTsKKyAgICBVbmxpbmtlZFNpbXBsZUp1bXBU
YWJsZSYgaW5zZXJ0U3dpdGNoSW1tZWRpYXRlSW1wbChQb3NpdGlvbiwgdW5zaWduZWQgYnl0ZWNv
ZGVPZmZzZXQsIHVuc2lnbmVkIGRlZmF1bHRPZmZzZXQsIGludCByZWcpOworCisgICAgZnJpZW5k
IGNsYXNzIFVubGlua2VkQ29kZUJsb2NrOworICAgIHZvaWQgYXBwbHlNb2RpZmljYXRpb24oKTsK
KyAgICB2b2lkIGFkanVzdEp1bXBUYXJnZXRzSW5KdW1wT3BlcmF0aW9uKHVuc2lnbmVkIGZpbmFs
T2Zmc2V0LCBJbnNlcnRpb24mKTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEl0ZXJhdG9yPgor
ICAgIGludCBhZGp1c3RPZmZzZXRXaXRoSW5zZXJ0aW9ucyhpbnQgYnl0ZWNvZGVPZmZzZXQsIGlu
dCBqdW1wVGFyZ2V0LCBJdGVyYXRvciBpbnNlcnRpb25zQmVnaW4sIEl0ZXJhdG9yIGluc2VydGlv
bnNFbmQpOworCisgICAgQnl0ZWNvZGVHcmFwaDxVbmxpbmtlZENvZGVCbG9jaz4mIG1fZ3JhcGg7
CisgICAgVmVjdG9yPEluc2VydGlvbiwgOD4gbV9pbnNlcnRpb25zOworICAgIFZlY3RvcjxTd2l0
Y2hFbnRyeT4gbV9pbnNlcnRlZFN3aXRjaGVzOworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgSXRl
cmF0b3I+CitpbmxpbmUgaW50IEJ5dGVjb2RlUmV3cml0ZXI6OmFkanVzdE9mZnNldFdpdGhJbnNl
cnRpb25zKGludCBieXRlY29kZU9mZnNldCwgaW50IGp1bXBUYXJnZXQsIEl0ZXJhdG9yIGluc2Vy
dGlvbnNCZWdpbiwgSXRlcmF0b3IgaW5zZXJ0aW9uc0VuZCkKK3sKKyAgICBpZiAoYnl0ZWNvZGVP
ZmZzZXQgPCBqdW1wVGFyZ2V0KSB7CisgICAgICAgIGF1dG8gc3RhcnQgPSBzdGQ6Omxvd2VyX2Jv
dW5kKGluc2VydGlvbnNCZWdpbiwgaW5zZXJ0aW9uc0VuZCwgYnl0ZWNvZGVPZmZzZXQsIFsmXSAo
Y29uc3QgSW5zZXJ0aW9uJiBpbnNlcnRpb24sIGludCBieXRlY29kZU9mZnNldCkgeworICAgICAg
ICAgICAgaWYgKHN0YXRpY19jYXN0PGludD4oaW5zZXJ0aW9uLmluZGV4KCkpID09IGJ5dGVjb2Rl
T2Zmc2V0KQorICAgICAgICAgICAgICAgIHJldHVybiBpbnNlcnRpb24uZWxlbWVudCgpLnBvc2l0
aW9uIDwgUG9zaXRpb246OkxhYmVsUG9pbnQ7CisgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8aW50PihpbnNlcnRpb24uaW5kZXgoKSkgPCBieXRlY29kZU9mZnNldDsKKyAgICAgICAgfSk7
CisgICAgICAgIGlmIChzdGFydCAhPSBpbnNlcnRpb25zRW5kKSB7CisgICAgICAgICAgICBhdXRv
IGVuZCA9IHN0ZDo6bG93ZXJfYm91bmQoaW5zZXJ0aW9uc0JlZ2luLCBpbnNlcnRpb25zRW5kLCBq
dW1wVGFyZ2V0LCBbJl0gKGNvbnN0IEluc2VydGlvbiYgaW5zZXJ0aW9uLCBpbnQganVtcFRhcmdl
dCkgeworICAgICAgICAgICAgICAgIGlmIChzdGF0aWNfY2FzdDxpbnQ+KGluc2VydGlvbi5pbmRl
eCgpKSA9PSBqdW1wVGFyZ2V0KQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW5zZXJ0aW9u
LmVsZW1lbnQoKS5wb3NpdGlvbiA8IFBvc2l0aW9uOjpMYWJlbFBvaW50OworICAgICAgICAgICAg
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KGluc2VydGlvbi5pbmRleCgpKSA8IGp1bXBUYXJn
ZXQ7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIGZvciAoOyBzdGFydCAhPSBlbmQ7ICsr
c3RhcnQpIHsKKyAgICAgICAgICAgICAgICBpZiAoc3RhcnQtPmVsZW1lbnQoKS50eXBlID09IENv
bW1hbmQ6OlR5cGU6OlJlbW92ZSkKKyAgICAgICAgICAgICAgICAgICAganVtcFRhcmdldCAtPSBz
dGFydC0+ZWxlbWVudCgpLmxlbmd0aCgpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICAgICAganVtcFRhcmdldCArPSBzdGFydC0+ZWxlbWVudCgpLmxlbmd0aCgpOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiBqdW1wVGFyZ2V0IC0gYnl0ZWNv
ZGVPZmZzZXQ7CisgICAgfQorCisgICAgaWYgKGJ5dGVjb2RlT2Zmc2V0ID09IGp1bXBUYXJnZXQp
CisgICAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIC1hZGp1c3RPZmZzZXRXaXRoSW5zZXJ0
aW9ucyhqdW1wVGFyZ2V0LCBieXRlY29kZU9mZnNldCwgaW5zZXJ0aW9uc0JlZ2luLCBpbnNlcnRp
b25zRW5kKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCmluZGV4IDYwNTdlZjYwOWVlZDFlZTJhOTli
MDc2MjhiOTFjOTc1NTMzZmU0YmIuLjRmMTRiMjMwOTA0YzFkNmY2ZDczYmY2ODBkYzAzMjRhZWZj
NmY2YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZVVzZURlZi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVz
ZURlZi5oCkBAIC0zMCwxNSArMzAsOSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotdGVtcGxhdGU8
dHlwZW5hbWUgRnVuY3Rvcj4KLXZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCgKLSAg
ICBDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaywgdW5zaWdu
ZWQgYnl0ZWNvZGVPZmZzZXQsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCit0ZW1wbGF0ZTx0eXBl
bmFtZSBCbG9jaywgdHlwZW5hbWUgRnVuY3RvciwgdHlwZW5hbWUgSW5zdHJ1Y3Rpb24+Cit2b2lk
IGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoQmxvY2sqIGNvZGVCbG9jaywgT3Bjb2RlSUQg
b3Bjb2RlSUQsIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgY29uc3QgRnVuY3RvciYgZnVuY3Rv
cikKIHsKLSAgICBJbnRlcnByZXRlciogaW50ZXJwcmV0ZXIgPSBjb2RlQmxvY2stPnZtKCktPmlu
dGVycHJldGVyOwotICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiA9IGNvZGVCbG9j
ay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsKLSAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24g
PSAmaW5zdHJ1Y3Rpb25zQmVnaW5bYnl0ZWNvZGVPZmZzZXRdOwotICAgIE9wY29kZUlEIG9wY29k
ZUlEID0gaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGluc3RydWN0aW9uLT51Lm9wY29kZSk7Ci0K
ICAgICBpZiAob3Bjb2RlSUQgIT0gb3BfZW50ZXIgJiYgY29kZUJsb2NrLT53YXNDb21waWxlZFdp
dGhEZWJ1Z2dpbmdPcGNvZGVzKCkgJiYgY29kZUJsb2NrLT5zY29wZVJlZ2lzdGVyKCkuaXNWYWxp
ZCgpKQogICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBj
b2RlQmxvY2stPnNjb3BlUmVnaXN0ZXIoKS5vZmZzZXQoKSk7CiAKQEAgLTc1LDggKzY5LDcgQEAg
dm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAogICAgIGNhc2Ugb3Bfam5lcV9udWxs
OgogICAgIGNhc2Ugb3BfZGVjOgogICAgIGNhc2Ugb3BfaW5jOgotICAgIGNhc2Ugb3BfbG9nX3No
YWRvd19jaGlja2VuX3Byb2xvZ3VlOgotICAgIGNhc2Ugb3BfcmVzdW1lOiB7CisgICAgY2FzZSBv
cF9sb2dfc2hhZG93X2NoaWNrZW5fcHJvbG9ndWU6IHsKICAgICAgICAgQVNTRVJUKG9wY29kZUxl
bmd0aHNbb3Bjb2RlSURdID4gMSk7CiAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVj
dGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CiAgICAgICAgIHJldHVy
bjsKQEAgLTI4NywyMCArMjgwLDkgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0
KAogICAgICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwg
Y29kZUJsb2NrLT5zY29wZVJlZ2lzdGVyKCkub2Zmc2V0KCkpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQotICAgIGNhc2Ugb3Bfc2F2ZTogeworICAgIGNhc2Ugb3BfeWllbGQ6IHsKICAgICAgICAg
ZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb25bMV0u
dS5vcGVyYW5kKTsKLSAgICAgICAgdW5zaWduZWQgbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0ID0g
Ynl0ZWNvZGVPZmZzZXQgKyBpbnN0cnVjdGlvblszXS51Lm9wZXJhbmQ7Ci0gICAgICAgIEJ5dGVj
b2RlQmFzaWNCbG9jayogbWVyZ2VQb2ludEJsb2NrID0gbnVsbHB0cjsKLSAgICAgICAgZm9yIChC
eXRlY29kZUJhc2ljQmxvY2sqIHN1Y2Nlc3NvciA6IGJsb2NrLT5zdWNjZXNzb3JzKCkpIHsKLSAg
ICAgICAgICAgIGlmIChzdWNjZXNzb3ItPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCkgPT0gbWVyZ2VQ
b2ludEJ5dGVjb2RlT2Zmc2V0KSB7Ci0gICAgICAgICAgICAgICAgbWVyZ2VQb2ludEJsb2NrID0g
c3VjY2Vzc29yOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAg
ICB9Ci0gICAgICAgIEFTU0VSVChtZXJnZVBvaW50QmxvY2spOwotICAgICAgICBtZXJnZVBvaW50
QmxvY2stPmluKCkuZm9yRWFjaFNldEJpdChbJl0odW5zaWduZWQgbG9jYWwpIHsKLSAgICAgICAg
ICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIHZpcnR1YWxSZWdp
c3RlckZvckxvY2FsKGxvY2FsKS5vZmZzZXQoKSk7Ci0gICAgICAgIH0pOworICAgICAgICBmdW5j
dG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBpbnN0cnVjdGlvblszXS51Lm9w
ZXJhbmQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGRlZmF1bHQ6CkBAIC0zMDksMjAg
KzI5MSwxNSBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoCiAgICAgfQogfQog
Ci10ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgotdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2Rl
T2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrLCB1
bnNpZ25lZCBieXRlY29kZU9mZnNldCwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikKK3RlbXBsYXRl
PHR5cGVuYW1lIEJsb2NrLCB0eXBlbmFtZSBJbnN0cnVjdGlvbiwgdHlwZW5hbWUgRnVuY3Rvcj4K
K3ZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChCbG9jayogY29kZUJsb2NrLCBPcGNv
ZGVJRCBvcGNvZGVJRCwgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBjb25zdCBGdW5jdG9yJiBm
dW5jdG9yKQogewotICAgIEludGVycHJldGVyKiBpbnRlcnByZXRlciA9IGNvZGVCbG9jay0+dm0o
KS0+aW50ZXJwcmV0ZXI7Ci0gICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luID0gY29k
ZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpOwotICAgIEluc3RydWN0aW9uKiBpbnN0cnVj
dGlvbiA9ICZpbnN0cnVjdGlvbnNCZWdpbltieXRlY29kZU9mZnNldF07Ci0gICAgT3Bjb2RlSUQg
b3Bjb2RlSUQgPSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb24tPnUub3Bjb2Rl
KTsKICAgICBzd2l0Y2ggKG9wY29kZUlEKSB7CiAgICAgLy8gVGhlc2UgZG9uJ3QgZGVmaW5lIGFu
eXRoaW5nLgogICAgIGNhc2Ugb3BfcHV0X3RvX3Njb3BlOgogICAgIGNhc2Ugb3BfZW5kOgogICAg
IGNhc2Ugb3BfdGhyb3c6CiAgICAgY2FzZSBvcF90aHJvd19zdGF0aWNfZXJyb3I6Ci0gICAgY2Fz
ZSBvcF9zYXZlOgogICAgIGNhc2Ugb3BfYXNzZXJ0OgogICAgIGNhc2Ugb3BfZGVidWc6CiAgICAg
Y2FzZSBvcF9yZXQ6CkBAIC0zNjIsNiArMzM5LDcgQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVj
b2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2MK
ICAgICBjYXNlIG9wX3dhdGNoZG9nOgogICAgIGNhc2Ugb3BfbG9nX3NoYWRvd19jaGlja2VuX3By
b2xvZ3VlOgogICAgIGNhc2Ugb3BfbG9nX3NoYWRvd19jaGlja2VuX3RhaWw6CisgICAgY2FzZSBv
cF95aWVsZDoKICNkZWZpbmUgTExJTlRfSEVMUEVSX09QQ09ERVMob3Bjb2RlLCBsZW5ndGgpIGNh
c2Ugb3Bjb2RlOgogICAgICAgICBGT1JfRUFDSF9MTElOVF9PUENPREVfRVhURU5TSU9OKExMSU5U
X0hFTFBFUl9PUENPREVTKTsKICN1bmRlZiBMTElOVF9IRUxQRVJfT1BDT0RFUwpAQCAtNDgwLDE1
ICs0NTgsNiBAQCB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvYwogICAgICAgICAgICAgZnVuY3Rvcihj
b2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwo
aSkub2Zmc2V0KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGNhc2Ugb3BfcmVzdW1l
OiB7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKGJsb2NrLT5zdWNjZXNzb3JzKCkuc2l6ZSgpID09
IDEpOwotICAgICAgICAvLyBGSVhNRTogVGhpcyBpcyByZWFsbHkgZGlydHkuCi0gICAgICAgIC8v
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTkyODEKLSAgICAgICAg
YmxvY2stPnN1Y2Nlc3NvcnMoKVswXS0+aW4oKS5mb3JFYWNoU2V0Qml0KFsmXSh1bnNpZ25lZCBs
b2NhbCkgewotICAgICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNv
ZGVJRCwgdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwobG9jYWwpLm9mZnNldCgpKTsKLSAgICAgICAg
fSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IDFkOTEzNWEyMzczOTE2MzA5MThm
ZDU1YTZlNTQyNTg5NzE1Y2QwYjUuLjU4NmNjZjUyOGQ0YmZhZDJhYjkwYjllYWU2NjQ2YjFlYTJk
MTQxMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3Bw
CkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiQXJpdGhQcm9maWxlLmgiCiAjaW5jbHVkZSAi
QmFzaWNCbG9ja0xvY2F0aW9uLmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVHZW5lcmF0b3IuaCIKKyNp
bmNsdWRlICJCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuaCIKICNpbmNsdWRlICJCeXRlY29kZVVz
ZURlZi5oIgogI2luY2x1ZGUgIkNhbGxMaW5rU3RhdHVzLmgiCiAjaW5jbHVkZSAiREZHQ2FwYWJp
bGl0aWVzLmgiCkBAIC02OTYsMTggKzY5Nyw2IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNv
ZGUoUHJpbnRTdHJlYW0mIG91dCkKICAgICAgICAgfSB3aGlsZSAoaSA8IG1fcmFyZURhdGEtPm1f
c3RyaW5nU3dpdGNoSnVtcFRhYmxlcy5zaXplKCkpOwogICAgIH0KIAotICAgIGlmIChtX3JhcmVE
YXRhICYmICFtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkLmlzRW1wdHkoKSkg
ewotICAgICAgICBvdXQucHJpbnRmKCJcbkxpdmUgQ2FsbGVlIExvY2FsczpcbiIpOwotICAgICAg
ICB1bnNpZ25lZCBpID0gMDsKLSAgICAgICAgZG8gewotICAgICAgICAgICAgY29uc3QgRmFzdEJp
dFZlY3RvciYgbGl2ZW5lc3MgPSBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxk
W2ldOwotICAgICAgICAgICAgb3V0LnByaW50ZigiICBsaXZlJTF1ID0gIiwgaSk7Ci0gICAgICAg
ICAgICBsaXZlbmVzcy5kdW1wKG91dCk7Ci0gICAgICAgICAgICBvdXQucHJpbnRmKCJcbiIpOwot
ICAgICAgICAgICAgKytpOwotICAgICAgICB9IHdoaWxlIChpIDwgbV9yYXJlRGF0YS0+bV9saXZl
Q2FsbGVlTG9jYWxzQXRZaWVsZC5zaXplKCkpOwotICAgIH0KLQogICAgIG91dC5wcmludGYoIlxu
Iik7CiB9CiAKQEAgLTE2NzEsMzEgKzE2NjAsNiBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVj
b2RlKAogICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVkIiwgZGVidWdIb29rTmFtZShkZWJ1
Z0hvb2tJRCksIGhhc0JyZWFrcG9pbnRGbGFnKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9Ci0gICAgICAgIGNhc2Ugb3Bfc2F2ZTogewotICAgICAgICAgICAgaW50IGdlbmVyYXRvciA9
ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fs
c0luZGV4ID0gKCsraXQpLT51LnVuc2lnbmVkVmFsdWU7Ci0gICAgICAgICAgICBpbnQgb2Zmc2V0
ID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBGYXN0Qml0VmVjdG9yIGxpdmVuZXNz
OwotICAgICAgICAgICAgaWYgKGxpdmVDYWxsZWVMb2NhbHNJbmRleCA8IG1fcmFyZURhdGEtPm1f
bGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQuc2l6ZSgpKQotICAgICAgICAgICAgICAgIGxpdmVuZXNz
ID0gbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZFtsaXZlQ2FsbGVlTG9jYWxz
SW5kZXhdOwotICAgICAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRp
b24sIGl0LCAic2F2ZSIpOwotICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICIsIHJlZ2lzdGVy
TmFtZShnZW5lcmF0b3IpLmRhdGEoKSk7Ci0gICAgICAgICAgICBsaXZlbmVzcy5kdW1wKG91dCk7
Ci0gICAgICAgICAgICBvdXQucHJpbnRmKCIoQGxpdmUlMXUpLCAlZCgtPiVkKSIsIGxpdmVDYWxs
ZWVMb2NhbHNJbmRleCwgb2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNldCk7Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIG9wX3Jlc3VtZTogewotICAgICAgICAgICAg
aW50IGdlbmVyYXRvciA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgdW5zaWduZWQg
bGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gKCsraXQpLT51LnVuc2lnbmVkVmFsdWU7Ci0gICAgICAg
ICAgICBGYXN0Qml0VmVjdG9yIGxpdmVuZXNzOwotICAgICAgICAgICAgaWYgKGxpdmVDYWxsZWVM
b2NhbHNJbmRleCA8IG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQuc2l6ZSgp
KQotICAgICAgICAgICAgICAgIGxpdmVuZXNzID0gbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9j
YWxzQXRZaWVsZFtsaXZlQ2FsbGVlTG9jYWxzSW5kZXhdOwotICAgICAgICAgICAgcHJpbnRMb2Nh
dGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAicmVzdW1lIik7Ci0gICAgICAgICAg
ICBvdXQucHJpbnRmKCIlcywgIiwgcmVnaXN0ZXJOYW1lKGdlbmVyYXRvcikuZGF0YSgpKTsKLSAg
ICAgICAgICAgIGxpdmVuZXNzLmR1bXAob3V0KTsKLSAgICAgICAgICAgIG91dC5wcmludGYoIihA
bGl2ZSUxdSkiLCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpOwotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9hc3NlcnQ6IHsKICAgICAgICAgICAgIGludCBjb25k
aXRpb24gPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBsaW5lID0gKCsraXQp
LT51Lm9wZXJhbmQ7CkBAIC0xOTA3LDcgKzE4NzEsNiBAQCB2b2lkIENvZGVCbG9jazo6ZmluaXNo
Q3JlYXRpb24oVk0mIHZtLCBDb3B5UGFyc2VkQmxvY2tUYWcsIENvZGVCbG9jayYgb3RoZXIpCiAg
ICAgICAgIG1fcmFyZURhdGEtPm1fY29uc3RhbnRCdWZmZXJzID0gb3RoZXIubV9yYXJlRGF0YS0+
bV9jb25zdGFudEJ1ZmZlcnM7CiAgICAgICAgIG1fcmFyZURhdGEtPm1fc3dpdGNoSnVtcFRhYmxl
cyA9IG90aGVyLm1fcmFyZURhdGEtPm1fc3dpdGNoSnVtcFRhYmxlczsKICAgICAgICAgbV9yYXJl
RGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzID0gb3RoZXIubV9yYXJlRGF0YS0+bV9zdHJp
bmdTd2l0Y2hKdW1wVGFibGVzOwotICAgICAgICBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2Nh
bHNBdFlpZWxkID0gb3RoZXIubV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZDsK
ICAgICB9CiAgICAgCiAgICAgaGVhcCgpLT5tX2NvZGVCbG9ja3MuYWRkKHRoaXMpOwpAQCAtMjAy
OSw3ICsxOTkyLDcgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2Ny
aXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICAgICAgICAgICAgICBV
bmxpbmtlZFN0cmluZ0p1bXBUYWJsZTo6U3RyaW5nT2Zmc2V0VGFibGU6Oml0ZXJhdG9yIGVuZCA9
IHVubGlua2VkQ29kZUJsb2NrLT5zdHJpbmdTd2l0Y2hKdW1wVGFibGUoaSkub2Zmc2V0VGFibGUu
ZW5kKCk7CiAgICAgICAgICAgICAgICAgZm9yICg7IHB0ciAhPSBlbmQ7ICsrcHRyKSB7CiAgICAg
ICAgICAgICAgICAgICAgIE9mZnNldExvY2F0aW9uIG9mZnNldDsKLSAgICAgICAgICAgICAgICAg
ICAgb2Zmc2V0LmJyYW5jaE9mZnNldCA9IHB0ci0+dmFsdWU7CisgICAgICAgICAgICAgICAgICAg
IG9mZnNldC5icmFuY2hPZmZzZXQgPSBwdHItPnZhbHVlLmJyYW5jaE9mZnNldDsKICAgICAgICAg
ICAgICAgICAgICAgbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzW2ldLm9mZnNl
dFRhYmxlLmFkZChwdHItPmtleSwgb2Zmc2V0KTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICB9CkBAIC0yMDY5LDExICsyMDMyLDE3IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5pc2hDcmVh
dGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAg
ICAgLy8gQm9va2tlZXAgdGhlIHN0cm9uZ2x5IHJlZmVyZW5jZWQgbW9kdWxlIGVudmlyb25tZW50
cy4KICAgICBIYXNoU2V0PEpTTW9kdWxlRW52aXJvbm1lbnQqPiBzdHJvbmdseVJlZmVyZW5jZWRN
b2R1bGVFbnZpcm9ubWVudHM7CiAKLSAgICAvLyBCb29ra2VlcCB0aGUgbWVyZ2UgcG9pbnQgYnl0
ZWNvZGUgb2Zmc2V0cy4KLSAgICBWZWN0b3I8c2l6ZV90PiBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZz
ZXRzOwotCiAgICAgUmVmQ291bnRlZEFycmF5PEluc3RydWN0aW9uPiBpbnN0cnVjdGlvbnMoaW5z
dHJ1Y3Rpb25Db3VudCk7CiAKKyAgICB1bnNpZ25lZCB2YWx1ZVByb2ZpbGVDb3VudCA9IDA7Cisg
ICAgYXV0byBsaW5rVmFsdWVQcm9maWxlID0gWyZdKHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCB1
bnNpZ25lZCBvcExlbmd0aCkgeworICAgICAgICB1bnNpZ25lZCB2YWx1ZVByb2ZpbGVJbmRleCA9
IHZhbHVlUHJvZmlsZUNvdW50Kys7CisgICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9ICZt
X3ZhbHVlUHJvZmlsZXNbdmFsdWVQcm9maWxlSW5kZXhdOworICAgICAgICBBU1NFUlQocHJvZmls
ZS0+bV9ieXRlY29kZU9mZnNldCA9PSAtMSk7CisgICAgICAgIHByb2ZpbGUtPm1fYnl0ZWNvZGVP
ZmZzZXQgPSBieXRlY29kZU9mZnNldDsKKyAgICAgICAgaW5zdHJ1Y3Rpb25zW2J5dGVjb2RlT2Zm
c2V0ICsgb3BMZW5ndGggLSAxXSA9IHByb2ZpbGU7CisgICAgfTsKKwogICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7ICFpbnN0cnVjdGlvblJlYWRlci5hdEVuZCgpOyApIHsKICAgICAgICAgY29uc3Qg
VW5saW5rZWRJbnN0cnVjdGlvbiogcGMgPSBpbnN0cnVjdGlvblJlYWRlci5uZXh0KCk7CiAKQEAg
LTIxMDgsMTAgKzIwNzcsNyBAQCB2b2lkIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZt
LCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGluawogICAgICAgICBjYXNl
IG9wX2dldF9ieV9pZDoKICAgICAgICAgY2FzZSBvcF9nZXRfZnJvbV9hcmd1bWVudHM6CiAgICAg
ICAgIGNhc2Ugb3BfdG9fbnVtYmVyOiB7Ci0gICAgICAgICAgICBWYWx1ZVByb2ZpbGUqIHByb2Zp
bGUgPSAmbV92YWx1ZVByb2ZpbGVzW3BjW29wTGVuZ3RoIC0gMV0udS5vcGVyYW5kXTsKLSAgICAg
ICAgICAgIEFTU0VSVChwcm9maWxlLT5tX2J5dGVjb2RlT2Zmc2V0ID09IC0xKTsKLSAgICAgICAg
ICAgIHByb2ZpbGUtPm1fYnl0ZWNvZGVPZmZzZXQgPSBpOwotICAgICAgICAgICAgaW5zdHJ1Y3Rp
b25zW2kgKyBvcExlbmd0aCAtIDFdID0gcHJvZmlsZTsKKyAgICAgICAgICAgIGxpbmtWYWx1ZVBy
b2ZpbGUoaSwgb3BMZW5ndGgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAg
ICAgY2FzZSBvcF9wdXRfYnlfdmFsOiB7CkBAIC0yMTQ4LDEwICsyMTE0LDcgQEAgdm9pZCBDb2Rl
QmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVj
dXRhYmxlLCBVbmxpbmsKICAgICAgICAgY2FzZSBvcF9jYWxsOgogICAgICAgICBjYXNlIG9wX3Rh
aWxfY2FsbDoKICAgICAgICAgY2FzZSBvcF9jYWxsX2V2YWw6IHsKLSAgICAgICAgICAgIFZhbHVl
UHJvZmlsZSogcHJvZmlsZSA9ICZtX3ZhbHVlUHJvZmlsZXNbcGNbb3BMZW5ndGggLSAxXS51Lm9w
ZXJhbmRdOwotICAgICAgICAgICAgQVNTRVJUKHByb2ZpbGUtPm1fYnl0ZWNvZGVPZmZzZXQgPT0g
LTEpOwotICAgICAgICAgICAgcHJvZmlsZS0+bV9ieXRlY29kZU9mZnNldCA9IGk7Ci0gICAgICAg
ICAgICBpbnN0cnVjdGlvbnNbaSArIG9wTGVuZ3RoIC0gMV0gPSBwcm9maWxlOworICAgICAgICAg
ICAgbGlua1ZhbHVlUHJvZmlsZShpLCBvcExlbmd0aCk7CiAgICAgICAgICAgICBpbnQgYXJyYXlQ
cm9maWxlSW5kZXggPSBwY1tvcExlbmd0aCAtIDJdLnUub3BlcmFuZDsKICAgICAgICAgICAgIG1f
YXJyYXlQcm9maWxlc1thcnJheVByb2ZpbGVJbmRleF0gPSBBcnJheVByb2ZpbGUoaSk7CiAgICAg
ICAgICAgICBpbnN0cnVjdGlvbnNbaSArIG9wTGVuZ3RoIC0gMl0gPSAmbV9hcnJheVByb2ZpbGVz
W2FycmF5UHJvZmlsZUluZGV4XTsKQEAgLTIxNjAsMTAgKzIxMjMsNyBAQCB2b2lkIENvZGVCbG9j
azo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFi
bGUsIFVubGluawogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfY29uc3RydWN0OiB7CiAgICAg
ICAgICAgICBpbnN0cnVjdGlvbnNbaSArIDVdID0gJm1fbGxpbnRDYWxsTGlua0luZm9zW3BjWzVd
LnUub3BlcmFuZF07Ci0gICAgICAgICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSAmbV92YWx1
ZVByb2ZpbGVzW3BjW29wTGVuZ3RoIC0gMV0udS5vcGVyYW5kXTsKLSAgICAgICAgICAgIEFTU0VS
VChwcm9maWxlLT5tX2J5dGVjb2RlT2Zmc2V0ID09IC0xKTsKLSAgICAgICAgICAgIHByb2ZpbGUt
Pm1fYnl0ZWNvZGVPZmZzZXQgPSBpOwotICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zW2kgKyBvcExl
bmd0aCAtIDFdID0gcHJvZmlsZTsKKyAgICAgICAgICAgIGxpbmtWYWx1ZVByb2ZpbGUoaSwgb3BM
ZW5ndGgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9n
ZXRfYXJyYXlfbGVuZ3RoOgpAQCAtMjE5NCwxMCArMjE1NCw3IEBAIHZvaWQgQ29kZUJsb2NrOjpm
aW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwg
VW5saW5rCiAgICAgICAgIH0KIAogICAgICAgICBjYXNlIG9wX2dldF9mcm9tX3Njb3BlOiB7Ci0g
ICAgICAgICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSAmbV92YWx1ZVByb2ZpbGVzW3BjW29w
TGVuZ3RoIC0gMV0udS5vcGVyYW5kXTsKLSAgICAgICAgICAgIEFTU0VSVChwcm9maWxlLT5tX2J5
dGVjb2RlT2Zmc2V0ID09IC0xKTsKLSAgICAgICAgICAgIHByb2ZpbGUtPm1fYnl0ZWNvZGVPZmZz
ZXQgPSBpOwotICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zW2kgKyBvcExlbmd0aCAtIDFdID0gcHJv
ZmlsZTsKKyAgICAgICAgICAgIGxpbmtWYWx1ZVByb2ZpbGUoaSwgb3BMZW5ndGgpOwogCiAgICAg
ICAgICAgICAvLyBnZXRfZnJvbV9zY29wZSBkc3QsIHNjb3BlLCBpZCwgR2V0UHV0SW5mbywgU3Ry
dWN0dXJlLCBPcGVyYW5kCiAKQEAgLTIzNTQsMTUgKzIzMTEsNiBAQCB2b2lkIENvZGVCbG9jazo6
ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUs
IFVubGluawogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAotICAgICAgICBjYXNlIG9w
X3NhdmU6IHsKLSAgICAgICAgICAgIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9IHBj
WzJdLnUuaW5kZXg7Ci0gICAgICAgICAgICBpbnQgb2Zmc2V0ID0gcGNbM10udS5vcGVyYW5kOwot
ICAgICAgICAgICAgaWYgKGxpdmVDYWxsZWVMb2NhbHNJbmRleCA+PSBtZXJnZVBvaW50Qnl0ZWNv
ZGVPZmZzZXRzLnNpemUoKSkKLSAgICAgICAgICAgICAgICBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZz
ZXRzLnJlc2l6ZShsaXZlQ2FsbGVlTG9jYWxzSW5kZXggKyAxKTsKLSAgICAgICAgICAgIG1lcmdl
UG9pbnRCeXRlY29kZU9mZnNldHNbbGl2ZUNhbGxlZUxvY2Fsc0luZGV4XSA9IGkgKyBvZmZzZXQ7
Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotCiAgICAgICAgIGRlZmF1bHQ6CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMjM3NCwyMCArMjMyMiw2IEBAIHZvaWQgQ29k
ZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhl
Y3V0YWJsZSwgVW5saW5rCiAKICAgICBtX2luc3RydWN0aW9ucyA9IFdURk1vdmUoaW5zdHJ1Y3Rp
b25zKTsKIAotICAgIC8vIFBlcmZvcm0gYnl0ZWNvZGUgbGl2ZW5lc3MgYW5hbHlzaXMgdG8gZGV0
ZXJtaW5lIHdoaWNoIGxvY2FscyBhcmUgbGl2ZSBhbmQgc2hvdWxkIGJlIHJlc3VtZWQgd2hlbiBl
eGVjdXRpbmcgb3BfcmVzdW1lLgotICAgIGlmICh1bmxpbmtlZENvZGVCbG9jay0+cGFyc2VNb2Rl
KCkgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JCb2R5TW9kZSkgewotICAgICAgICBpZiAo
c2l6ZV90IGNvdW50ID0gbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0cy5zaXplKCkpIHsKLSAgICAg
ICAgICAgIGNyZWF0ZVJhcmVEYXRhSWZOZWNlc3NhcnkoKTsKLSAgICAgICAgICAgIEJ5dGVjb2Rl
TGl2ZW5lc3NBbmFseXNpcyBsaXZlbmVzcyh0aGlzKTsKLSAgICAgICAgICAgIG1fcmFyZURhdGEt
Pm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQuZ3Jvdyhjb3VudCk7Ci0gICAgICAgICAgICBzaXpl
X3QgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gMDsKLSAgICAgICAgICAgIGZvciAoc2l6ZV90IGJ5
dGVjb2RlT2Zmc2V0IDogbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0cykgewotICAgICAgICAgICAg
ICAgIG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGRbbGl2ZUNhbGxlZUxvY2Fs
c0luZGV4XSA9IGxpdmVuZXNzLmdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQoYnl0ZWNv
ZGVPZmZzZXQpOwotICAgICAgICAgICAgICAgICsrbGl2ZUNhbGxlZUxvY2Fsc0luZGV4OwotICAg
ICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCiAgICAgLy8gU2V0IG9wdGltaXphdGlvbiB0
aHJlc2hvbGRzIG9ubHkgYWZ0ZXIgbV9pbnN0cnVjdGlvbnMgaXMgaW5pdGlhbGl6ZWQsIHNpbmNl
IHRoZXNlCiAgICAgLy8gcmVseSBvbiB0aGUgaW5zdHJ1Y3Rpb24gY291bnQgKGFuZCBhcmUgaW4g
dGhlb3J5IHBlcm1pdHRlZCB0byBhbHNvIGluc3BlY3QgdGhlCiAgICAgLy8gaW5zdHJ1Y3Rpb24g
c3RyZWFtIHRvIG1vcmUgYWNjdXJhdGUgYXNzZXNzIHRoZSBjb3N0IG9mIHRpZXItdXApLgpAQCAt
MzI0NCwyMSArMzE3OCw3IEBAIEhhbmRsZXJJbmZvKiBDb2RlQmxvY2s6OmhhbmRsZXJGb3JJbmRl
eCh1bnNpZ25lZCBpbmRleCwgUmVxdWlyZWRIYW5kbGVyIHJlcXVpcmVkCiB7CiAgICAgaWYgKCFt
X3JhcmVEYXRhKQogICAgICAgICByZXR1cm4gMDsKLSAgICAKLSAgICBWZWN0b3I8SGFuZGxlcklu
Zm8+JiBleGNlcHRpb25IYW5kbGVycyA9IG1fcmFyZURhdGEtPm1fZXhjZXB0aW9uSGFuZGxlcnM7
Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBleGNlcHRpb25IYW5kbGVycy5zaXplKCk7ICsr
aSkgewotICAgICAgICBIYW5kbGVySW5mbyYgaGFuZGxlciA9IGV4Y2VwdGlvbkhhbmRsZXJzW2ld
OwotICAgICAgICBpZiAoKHJlcXVpcmVkSGFuZGxlciA9PSBSZXF1aXJlZEhhbmRsZXI6OkNhdGNo
SGFuZGxlcikgJiYgIWhhbmRsZXIuaXNDYXRjaEhhbmRsZXIoKSkKLSAgICAgICAgICAgIGNvbnRp
bnVlOwotCi0gICAgICAgIC8vIEhhbmRsZXJzIGFyZSBvcmRlcmVkIGlubmVybW9zdCBmaXJzdCwg
c28gdGhlIGZpcnN0IGhhbmRsZXIgd2UgZW5jb3VudGVyCi0gICAgICAgIC8vIHRoYXQgY29udGFp
bnMgdGhlIHNvdXJjZSBhZGRyZXNzIGlzIHRoZSBjb3JyZWN0IGhhbmRsZXIgdG8gdXNlLgotICAg
ICAgICAvLyBUaGlzIGluZGV4IHVzZWQgaXMgZWl0aGVyIHRoZSBCeXRlY29kZU9mZnNldCBvciBh
IENhbGxTaXRlSW5kZXguCi0gICAgICAgIGlmIChoYW5kbGVyLnN0YXJ0IDw9IGluZGV4ICYmIGhh
bmRsZXIuZW5kID4gaW5kZXgpCi0gICAgICAgICAgICByZXR1cm4gJmhhbmRsZXI7Ci0gICAgfQot
Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIEhhbmRsZXJJbmZvOjpoYW5kbGVyRm9ySW5kZXgo
bV9yYXJlRGF0YS0+bV9leGNlcHRpb25IYW5kbGVycywgaW5kZXgsIHJlcXVpcmVkSGFuZGxlcik7
CiB9CiAKIENhbGxTaXRlSW5kZXggQ29kZUJsb2NrOjpuZXdFeGNlcHRpb25IYW5kbGluZ0NhbGxT
aXRlSW5kZXgoQ2FsbFNpdGVJbmRleCBvcmlnaW5hbENhbGxTaXRlKQpAQCAtMzM1Myw3ICszMjcz
LDYgQEAgdm9pZCBDb2RlQmxvY2s6OnNocmlua1RvRml0KFNocmlua01vZGUgc2hyaW5rTW9kZSkK
ICAgICAgICAgaWYgKG1fcmFyZURhdGEpIHsKICAgICAgICAgICAgIG1fcmFyZURhdGEtPm1fc3dp
dGNoSnVtcFRhYmxlcy5zaHJpbmtUb0ZpdCgpOwogICAgICAgICAgICAgbV9yYXJlRGF0YS0+bV9z
dHJpbmdTd2l0Y2hKdW1wVGFibGVzLnNocmlua1RvRml0KCk7Ci0gICAgICAgICAgICBtX3JhcmVE
YXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkLnNocmlua1RvRml0KCk7CiAgICAgICAgIH0K
ICAgICB9IC8vIGVsc2UgZG9uJ3Qgc2hyaW5rIHRoZXNlLCBiZWNhdXNlIHdlIHdvdWxkIGhhdmUg
YWxyZWFkeSBwb2ludGVkIHBvaW50ZXJzIGludG8gdGhlc2UgdGFibGVzLgogfQpAQCAtNDMzNSwx
NCArNDI1NCw5IEBAIFN0cmluZyBDb2RlQmxvY2s6Om5hbWVGb3JSZWdpc3RlcihWaXJ0dWFsUmVn
aXN0ZXIgdmlydHVhbFJlZ2lzdGVyKQogCiBWYWx1ZVByb2ZpbGUqIENvZGVCbG9jazo6dmFsdWVQ
cm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoaW50IGJ5dGVjb2RlT2Zmc2V0KQogewotICAgIFZhbHVl
UHJvZmlsZSogcmVzdWx0ID0gYmluYXJ5U2VhcmNoPFZhbHVlUHJvZmlsZSwgaW50PigKLSAgICAg
ICAgbV92YWx1ZVByb2ZpbGVzLCBtX3ZhbHVlUHJvZmlsZXMuc2l6ZSgpLCBieXRlY29kZU9mZnNl
dCwKLSAgICAgICAgZ2V0VmFsdWVQcm9maWxlQnl0ZWNvZGVPZmZzZXQ8VmFsdWVQcm9maWxlPik7
Ci0gICAgQVNTRVJUKHJlc3VsdC0+bV9ieXRlY29kZU9mZnNldCAhPSAtMSk7Ci0gICAgQVNTRVJU
KGluc3RydWN0aW9ucygpW2J5dGVjb2RlT2Zmc2V0ICsgb3Bjb2RlTGVuZ3RoKAotICAgICAgICBt
X3ZtLT5pbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoCi0gICAgICAgICAgICBpbnN0cnVjdGlvbnMo
KVtieXRlY29kZU9mZnNldF0udS5vcGNvZGUpKSAtIDFdLnUucHJvZmlsZSA9PSByZXN1bHQpOwot
ICAgIHJldHVybiByZXN1bHQ7CisgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBtX3ZtLT5pbnRlcnBy
ZXRlci0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25zKClbYnl0ZWNvZGVPZmZzZXRdLnUub3Bjb2Rl
KTsKKyAgICB1bnNpZ25lZCBsZW5ndGggPSBvcGNvZGVMZW5ndGgob3Bjb2RlSUQpOworICAgIHJl
dHVybiBpbnN0cnVjdGlvbnMoKVtieXRlY29kZU9mZnNldCArIGxlbmd0aCAtIDFdLnUucHJvZmls
ZTsKIH0KIAogdm9pZCBDb2RlQmxvY2s6OnZhbGlkYXRlKCkKQEAgLTQ2NzEsNCArNDU4NSwxNiBA
QCB2b2lkIENvZGVCbG9jazo6ZHVtcE1hdGhJQ1N0YXRzKCkKICNlbmRpZgogfQogCitCeXRlY29k
ZUxpdmVuZXNzQW5hbHlzaXMmIENvZGVCbG9jazo6bGl2ZW5lc3NBbmFseXNpc1Nsb3coKQorewor
ICAgIHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM+IGFuYWx5c2lzID0g
c3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM+KHRoaXMpOworICAgIHsK
KyAgICAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIobV9sb2NrKTsKKyAgICAgICAgaWYg
KCFtX2xpdmVuZXNzQW5hbHlzaXMpCisgICAgICAgICAgICBtX2xpdmVuZXNzQW5hbHlzaXMgPSBX
VEZNb3ZlKGFuYWx5c2lzKTsKKyAgICAgICAgcmV0dXJuICptX2xpdmVuZXNzQW5hbHlzaXM7Cisg
ICAgfQorfQorCisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5oCmluZGV4IGFiOTI4MDRmNmJhMzliM2I2N2JhNmQ3NzVlNDQ5ZTJm
M2RiZjdjMDUuLjllNWQ2MDc4NzczZjM4Y2JiMjJkYzZhNTBmYWZhN2NlYjBlMWZmYTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKQEAgLTMzLDcgKzMzLDYg
QEAKICNpbmNsdWRlICJBcnJheVByb2ZpbGUuaCIKICNpbmNsdWRlICJCeVZhbEluZm8uaCIKICNp
bmNsdWRlICJCeXRlY29kZUNvbnZlbnRpb25zLmgiCi0jaW5jbHVkZSAiQnl0ZWNvZGVMaXZlbmVz
c0FuYWx5c2lzLmgiCiAjaW5jbHVkZSAiQ2FsbExpbmtJbmZvLmgiCiAjaW5jbHVkZSAiQ2FsbFJl
dHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQuaCIKICNpbmNsdWRlICJDb2RlQmxvY2tIYXNoLmgi
CkBAIC03OSw2ICs3OCw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCitjbGFzcyBCeXRlY29kZUxp
dmVuZXNzQW5hbHlzaXM7CiBjbGFzcyBFeGVjU3RhdGU7CiBjbGFzcyBKSVRBZGRHZW5lcmF0b3I7
CiBjbGFzcyBKU01vZHVsZUVudmlyb25tZW50OwpAQCAtMjI2LDEwICsyMjYsNiBAQCBjbGFzcyBD
b2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAgICAgcmV0dXJuIGluZGV4ID49IG1fbnVt
VmFyczsKICAgICB9CiAKLSAgICBlbnVtIGNsYXNzIFJlcXVpcmVkSGFuZGxlciB7Ci0gICAgICAg
IENhdGNoSGFuZGxlciwKLSAgICAgICAgQW55SGFuZGxlcgotICAgIH07CiAgICAgSGFuZGxlcklu
Zm8qIGhhbmRsZXJGb3JCeXRlY29kZU9mZnNldCh1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgUmVx
dWlyZWRIYW5kbGVyID0gUmVxdWlyZWRIYW5kbGVyOjpBbnlIYW5kbGVyKTsKICAgICBIYW5kbGVy
SW5mbyogaGFuZGxlckZvckluZGV4KHVuc2lnbmVkLCBSZXF1aXJlZEhhbmRsZXIgPSBSZXF1aXJl
ZEhhbmRsZXI6OkFueUhhbmRsZXIpOwogICAgIHZvaWQgcmVtb3ZlRXhjZXB0aW9uSGFuZGxlckZv
ckNhbGxTaXRlKENhbGxTaXRlSW5kZXgpOwpAQCAtMzA0LDYgKzMwMCw5IEBAIGNsYXNzIENvZGVC
bG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SW5zdHJ1
Y3Rpb24qPihyZXR1cm5BZGRyZXNzKSAtIGluc3RydWN0aW9ucygpLmJlZ2luKCk7CiAgICAgfQog
CisgICAgdHlwZWRlZiBKU0M6Okluc3RydWN0aW9uIEluc3RydWN0aW9uOworICAgIHR5cGVkZWYg
UmVmQ291bnRlZEFycmF5PEluc3RydWN0aW9uPiYgVW5wYWNrZWRJbnN0cnVjdGlvbnM7CisKICAg
ICB1bnNpZ25lZCBudW1iZXJPZkluc3RydWN0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1faW5zdHJ1
Y3Rpb25zLnNpemUoKTsgfQogICAgIFJlZkNvdW50ZWRBcnJheTxJbnN0cnVjdGlvbj4mIGluc3Ry
dWN0aW9ucygpIHsgcmV0dXJuIG1faW5zdHJ1Y3Rpb25zOyB9CiAgICAgY29uc3QgUmVmQ291bnRl
ZEFycmF5PEluc3RydWN0aW9uPiYgaW5zdHJ1Y3Rpb25zKCkgY29uc3QgeyByZXR1cm4gbV9pbnN0
cnVjdGlvbnM7IH0KQEAgLTU0Niw3ICs1NDUsNyBAQCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMg
SlNDZWxsIHsKICAgICB9CiAKICAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4mIGNvbnN0YW50UmVn
aXN0ZXIoaW50IGluZGV4KSB7IHJldHVybiBtX2NvbnN0YW50UmVnaXN0ZXJzW2luZGV4IC0gRmly
c3RDb25zdGFudFJlZ2lzdGVySW5kZXhdOyB9Ci0gICAgQUxXQVlTX0lOTElORSBib29sIGlzQ29u
c3RhbnRSZWdpc3RlckluZGV4KGludCBpbmRleCkgY29uc3QgeyByZXR1cm4gaW5kZXggPj0gRmly
c3RDb25zdGFudFJlZ2lzdGVySW5kZXg7IH0KKyAgICBzdGF0aWMgQUxXQVlTX0lOTElORSBib29s
IGlzQ29uc3RhbnRSZWdpc3RlckluZGV4KGludCBpbmRleCkgeyByZXR1cm4gaW5kZXggPj0gRmly
c3RDb25zdGFudFJlZ2lzdGVySW5kZXg7IH0KICAgICBBTFdBWVNfSU5MSU5FIEpTVmFsdWUgZ2V0
Q29uc3RhbnQoaW50IGluZGV4KSBjb25zdCB7IHJldHVybiBtX2NvbnN0YW50UmVnaXN0ZXJzW2lu
ZGV4IC0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXhdLmdldCgpOyB9CiAgICAgQUxXQVlTX0lO
TElORSBTb3VyY2VDb2RlUmVwcmVzZW50YXRpb24gY29uc3RhbnRTb3VyY2VDb2RlUmVwcmVzZW50
YXRpb24oaW50IGluZGV4KSBjb25zdCB7IHJldHVybiBtX2NvbnN0YW50c1NvdXJjZUNvZGVSZXBy
ZXNlbnRhdGlvbltpbmRleCAtIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4XTsgfQogCkBAIC01
OTIsMTQgKzU5MSw3IEBAIGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgICAg
ICAgICAgaWYgKCEhbV9saXZlbmVzc0FuYWx5c2lzKQogICAgICAgICAgICAgICAgIHJldHVybiAq
bV9saXZlbmVzc0FuYWx5c2lzOwogICAgICAgICB9Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxC
eXRlY29kZUxpdmVuZXNzQW5hbHlzaXM+IGFuYWx5c2lzID0KLSAgICAgICAgICAgIHN0ZDo6bWFr
ZV91bmlxdWU8Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzPih0aGlzKTsKLSAgICAgICAgewotICAg
ICAgICAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIobV9sb2NrKTsKLSAgICAgICAgICAg
IGlmICghbV9saXZlbmVzc0FuYWx5c2lzKQotICAgICAgICAgICAgICAgIG1fbGl2ZW5lc3NBbmFs
eXNpcyA9IFdURk1vdmUoYW5hbHlzaXMpOwotICAgICAgICAgICAgcmV0dXJuICptX2xpdmVuZXNz
QW5hbHlzaXM7Ci0gICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGxpdmVuZXNzQW5hbHlzaXNTbG93
KCk7CiAgICAgfQogICAgIAogICAgIHZvaWQgdmFsaWRhdGUoKTsKQEAgLTYyMCwxOCArNjEyLDYg
QEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgU3RyaW5nSnVtcFRhYmxl
JiBhZGRTdHJpbmdTd2l0Y2hKdW1wVGFibGUoKSB7IGNyZWF0ZVJhcmVEYXRhSWZOZWNlc3Nhcnko
KTsgbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzLmFwcGVuZChTdHJpbmdKdW1w
VGFibGUoKSk7IHJldHVybiBtX3JhcmVEYXRhLT5tX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXMubGFz
dCgpOyB9CiAgICAgU3RyaW5nSnVtcFRhYmxlJiBzdHJpbmdTd2l0Y2hKdW1wVGFibGUoaW50IHRh
YmxlSW5kZXgpIHsgUkVMRUFTRV9BU1NFUlQobV9yYXJlRGF0YSk7IHJldHVybiBtX3JhcmVEYXRh
LT5tX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXNbdGFibGVJbmRleF07IH0KIAotICAgIC8vIExpdmUg
Y2FsbGVlIHJlZ2lzdGVycyBhdCB5aWVsZCBwb2ludHMuCi0gICAgY29uc3QgRmFzdEJpdFZlY3Rv
ciYgbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQodW5zaWduZWQgaW5kZXgpIGNvbnN0Ci0gICAgewot
ICAgICAgICBSRUxFQVNFX0FTU0VSVChtX3JhcmVEYXRhKTsKLSAgICAgICAgcmV0dXJuIG1fcmFy
ZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGRbaW5kZXhdOwotICAgIH0KLSAgICBGYXN0
Qml0VmVjdG9yJiBsaXZlQ2FsbGVlTG9jYWxzQXRZaWVsZCh1bnNpZ25lZCBpbmRleCkKLSAgICB7
Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fcmFyZURhdGEpOwotICAgICAgICByZXR1cm4gbV9y
YXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZFtpbmRleF07Ci0gICAgfQotCiAgICAg
RXZhbENvZGVDYWNoZSYgZXZhbENvZGVDYWNoZSgpIHsgY3JlYXRlUmFyZURhdGFJZk5lY2Vzc2Fy
eSgpOyByZXR1cm4gbV9yYXJlRGF0YS0+bV9ldmFsQ29kZUNhY2hlOyB9CiAKICAgICBlbnVtIFNo
cmlua01vZGUgewpAQCAtODg2LDggKzg2Niw2IEBAIGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBK
U0NlbGwgewogICAgICAgICBWZWN0b3I8U2ltcGxlSnVtcFRhYmxlPiBtX3N3aXRjaEp1bXBUYWJs
ZXM7CiAgICAgICAgIFZlY3RvcjxTdHJpbmdKdW1wVGFibGU+IG1fc3RyaW5nU3dpdGNoSnVtcFRh
YmxlczsKIAotICAgICAgICBWZWN0b3I8RmFzdEJpdFZlY3Rvcj4gbV9saXZlQ2FsbGVlTG9jYWxz
QXRZaWVsZDsKLQogICAgICAgICBFdmFsQ29kZUNhY2hlIG1fZXZhbENvZGVDYWNoZTsKICAgICB9
OwogCkBAIC05MjIsNiArOTAwLDggQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7
CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIENvZGVCbG9ja1NldDsKKworICAgIEJ5dGVj
b2RlTGl2ZW5lc3NBbmFseXNpcyYgbGl2ZW5lc3NBbmFseXNpc1Nsb3coKTsKICAgICAKICAgICBD
b2RlQmxvY2sqIHNwZWNpYWxPU1JFbnRyeUJsb2NrT3JOdWxsKCk7CiAgICAgCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSGFuZGxlckluZm8uaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9IYW5kbGVySW5mby5oCmluZGV4IGFjZGRhMDhlZDE0Y2Jm
OWYwOTcxMjc1MDQwNWE0MTc0MWY3NmEyMTMuLjdiMTA4YWNlOTM3MjhhOGQ1ZGY4ZWIxNzNmYzBi
MGE2MWJhZWQ2M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9I
YW5kbGVySW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9IYW5kbGVy
SW5mby5oCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIEhhbmRsZXJJbmZvX2gKIAogI2luY2x1
ZGUgIkNvZGVMb2NhdGlvbi5oIgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNl
IEpTQyB7CiAKQEAgLTM3LDYgKzM4LDExIEBAIGVudW0gY2xhc3MgSGFuZGxlclR5cGUgewogICAg
IFN5bnRoZXNpemVkRmluYWxseSA9IDMKIH07CiAKK2VudW0gY2xhc3MgUmVxdWlyZWRIYW5kbGVy
IHsKKyAgICBDYXRjaEhhbmRsZXIsCisgICAgQW55SGFuZGxlcgorfTsKKwogc3RydWN0IEhhbmRs
ZXJJbmZvQmFzZSB7CiAgICAgSGFuZGxlclR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRp
Y19jYXN0PEhhbmRsZXJUeXBlPih0eXBlQml0cyk7IH0KICAgICB2b2lkIHNldFR5cGUoSGFuZGxl
clR5cGUgdHlwZSkgeyB0eXBlQml0cyA9IHN0YXRpY19jYXN0PHVpbnQzMl90Pih0eXBlKTsgfQpA
QCAtNTgsNiArNjQsMjMgQEAgc3RydWN0IEhhbmRsZXJJbmZvQmFzZSB7CiAKICAgICBib29sIGlz
Q2F0Y2hIYW5kbGVyKCkgY29uc3QgeyByZXR1cm4gdHlwZSgpID09IEhhbmRsZXJUeXBlOjpDYXRj
aDsgfQogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgSGFuZGxlcj4KKyAgICBzdGF0aWMgSGFuZGxl
ciogaGFuZGxlckZvckluZGV4KFZlY3RvcjxIYW5kbGVyPiYgZXhlcHRpb25IYW5kbGVycywgdW5z
aWduZWQgaW5kZXgsIFJlcXVpcmVkSGFuZGxlciByZXF1aXJlZEhhbmRsZXIpCisgICAgeworICAg
ICAgICBmb3IgKEhhbmRsZXImIGhhbmRsZXIgOiBleGVwdGlvbkhhbmRsZXJzKSB7CisgICAgICAg
ICAgICBpZiAoKHJlcXVpcmVkSGFuZGxlciA9PSBSZXF1aXJlZEhhbmRsZXI6OkNhdGNoSGFuZGxl
cikgJiYgIWhhbmRsZXIuaXNDYXRjaEhhbmRsZXIoKSkKKyAgICAgICAgICAgICAgICBjb250aW51
ZTsKKworICAgICAgICAgICAgLy8gSGFuZGxlcnMgYXJlIG9yZGVyZWQgaW5uZXJtb3N0IGZpcnN0
LCBzbyB0aGUgZmlyc3QgaGFuZGxlciB3ZSBlbmNvdW50ZXIKKyAgICAgICAgICAgIC8vIHRoYXQg
Y29udGFpbnMgdGhlIHNvdXJjZSBhZGRyZXNzIGlzIHRoZSBjb3JyZWN0IGhhbmRsZXIgdG8gdXNl
LgorICAgICAgICAgICAgLy8gVGhpcyBpbmRleCB1c2VkIGlzIGVpdGhlciB0aGUgQnl0ZWNvZGVP
ZmZzZXQgb3IgYSBDYWxsU2l0ZUluZGV4LgorICAgICAgICAgICAgaWYgKGhhbmRsZXIuc3RhcnQg
PD0gaW5kZXggJiYgaGFuZGxlci5lbmQgPiBpbmRleCkKKyAgICAgICAgICAgICAgICByZXR1cm4g
JmhhbmRsZXI7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisK
ICAgICB1aW50MzJfdCBzdGFydDsKICAgICB1aW50MzJfdCBlbmQ7CiAgICAgdWludDMyX3QgdGFy
Z2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VK
dW1wVGFyZ2V0cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1
bXBUYXJnZXRzLmNwcAppbmRleCBlMmNiMDAwNDgzNzk0YmE5MmQ1MTBkY2Y1ZmE5OTQ4ODVhMjNk
YzNkLi5iZDg0MGY4ZWE4MTM1OTVkNjcyYzk4YTY2NzAxYzM4ODdjNWQwODQ0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmNw
cApAQCAtMjYsMTQgKzI2LDE1IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUHJl
Y2lzZUp1bXBUYXJnZXRzLmgiCiAKKyNpbmNsdWRlICJJbnRlcnByZXRlcklubGluZXMuaCIKICNp
bmNsdWRlICJKU0NJbmxpbmVzLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCi10ZW1wbGF0ZSA8c2l6
ZV90IHZlY3RvclNpemU+Ci1zdGF0aWMgdm9pZCBnZXRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zm
c2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBJbnRlcnByZXRlciogaW50ZXJwcmV0ZXIsIEluc3Ry
dWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIFZlY3Rv
cjx1bnNpZ25lZCwgdmVjdG9yU2l6ZT4mIG91dCkKK3RlbXBsYXRlIDxzaXplX3QgdmVjdG9yU2l6
ZSwgdHlwZW5hbWUgQmxvY2ssIHR5cGVuYW1lIEluc3RydWN0aW9uPgorc3RhdGljIHZvaWQgZ2V0
SnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChCbG9jayogY29kZUJsb2NrLCBJbnRlcnByZXRl
ciogaW50ZXJwcmV0ZXIsIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQg
Ynl0ZWNvZGVPZmZzZXQsIFZlY3Rvcjx1bnNpZ25lZCwgdmVjdG9yU2l6ZT4mIG91dCkKIHsKLSAg
ICBPcGNvZGVJRCBvcGNvZGVJRCA9IGludGVycHJldGVyLT5nZXRPcGNvZGVJRChpbnN0cnVjdGlv
bnNCZWdpbltieXRlY29kZU9mZnNldF0udS5vcGNvZGUpOworICAgIE9wY29kZUlEIG9wY29kZUlE
ID0gaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGluc3RydWN0aW9uc0JlZ2luW2J5dGVjb2RlT2Zm
c2V0XSk7CiAgICAgSW5zdHJ1Y3Rpb24qIGN1cnJlbnQgPSBpbnN0cnVjdGlvbnNCZWdpbiArIGJ5
dGVjb2RlT2Zmc2V0OwogICAgIHN3aXRjaCAob3Bjb2RlSUQpIHsKICAgICBjYXNlIG9wX2ptcDoK
QEAgLTU0LDIxICs1NSwyMCBAQCBzdGF0aWMgdm9pZCBnZXRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2Rl
T2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBJbnRlcnByZXRlciogaQogICAgIGNhc2Ugb3Bf
am5sZXNzZXE6CiAgICAgY2FzZSBvcF9qbmdyZWF0ZXI6CiAgICAgY2FzZSBvcF9qbmdyZWF0ZXJl
cToKLSAgICBjYXNlIG9wX3NhdmU6IC8vIFRoZSBqdW1wIG9mIG9wX3NhdmUgaXMgcHVyZWx5IGZv
ciBjYWxjdWxhdGluZyBsaXZlbmVzcy4KICAgICAgICAgb3V0LmFwcGVuZChieXRlY29kZU9mZnNl
dCArIGN1cnJlbnRbM10udS5vcGVyYW5kKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBvcF9z
d2l0Y2hfaW1tOgogICAgIGNhc2Ugb3Bfc3dpdGNoX2NoYXI6IHsKLSAgICAgICAgU2ltcGxlSnVt
cFRhYmxlJiB0YWJsZSA9IGNvZGVCbG9jay0+c3dpdGNoSnVtcFRhYmxlKGN1cnJlbnRbMV0udS5v
cGVyYW5kKTsKKyAgICAgICAgYXV0byYgdGFibGUgPSBjb2RlQmxvY2stPnN3aXRjaEp1bXBUYWJs
ZShjdXJyZW50WzFdLnUub3BlcmFuZCk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IHRhYmxl
LmJyYW5jaE9mZnNldHMuc2l6ZSgpOyBpLS07KQogICAgICAgICAgICAgb3V0LmFwcGVuZChieXRl
Y29kZU9mZnNldCArIHRhYmxlLmJyYW5jaE9mZnNldHNbaV0pOwogICAgICAgICBvdXQuYXBwZW5k
KGJ5dGVjb2RlT2Zmc2V0ICsgY3VycmVudFsyXS51Lm9wZXJhbmQpOwogICAgICAgICBicmVhazsK
ICAgICB9CiAgICAgY2FzZSBvcF9zd2l0Y2hfc3RyaW5nOiB7Ci0gICAgICAgIFN0cmluZ0p1bXBU
YWJsZSYgdGFibGUgPSBjb2RlQmxvY2stPnN0cmluZ1N3aXRjaEp1bXBUYWJsZShjdXJyZW50WzFd
LnUub3BlcmFuZCk7Ci0gICAgICAgIFN0cmluZ0p1bXBUYWJsZTo6U3RyaW5nT2Zmc2V0VGFibGU6
Oml0ZXJhdG9yIGl0ZXIgPSB0YWJsZS5vZmZzZXRUYWJsZS5iZWdpbigpOwotICAgICAgICBTdHJp
bmdKdW1wVGFibGU6OlN0cmluZ09mZnNldFRhYmxlOjppdGVyYXRvciBlbmQgPSB0YWJsZS5vZmZz
ZXRUYWJsZS5lbmQoKTsKKyAgICAgICAgYXV0byYgdGFibGUgPSBjb2RlQmxvY2stPnN0cmluZ1N3
aXRjaEp1bXBUYWJsZShjdXJyZW50WzFdLnUub3BlcmFuZCk7CisgICAgICAgIGF1dG8gaXRlciA9
IHRhYmxlLm9mZnNldFRhYmxlLmJlZ2luKCk7CisgICAgICAgIGF1dG8gZW5kID0gdGFibGUub2Zm
c2V0VGFibGUuZW5kKCk7CiAgICAgICAgIGZvciAoOyBpdGVyICE9IGVuZDsgKytpdGVyKQogICAg
ICAgICAgICAgb3V0LmFwcGVuZChieXRlY29kZU9mZnNldCArIGl0ZXItPnZhbHVlLmJyYW5jaE9m
ZnNldCk7CiAgICAgICAgIG91dC5hcHBlbmQoYnl0ZWNvZGVPZmZzZXQgKyBjdXJyZW50WzJdLnUu
b3BlcmFuZCk7CkBAIC04MiwxMyArODIsMTkgQEAgc3RhdGljIHZvaWQgZ2V0SnVtcFRhcmdldHNG
b3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgSW50ZXJwcmV0ZXIqIGkKICAg
ICB9CiB9CiAKLXZvaWQgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhDb2RlQmxvY2sqIGNvZGVC
bG9jaywgVmVjdG9yPHVuc2lnbmVkLCAzMj4mIG91dCkKK2VudW0gY2xhc3MgQ29tcHV0ZVByZWNp
c2VKdW1wVGFyZ2V0c01vZGUgeworICAgIEZvbGxvd0NvZGVCbG9ja0NsYWltLAorICAgIEZvcmNl
Q29tcHV0ZSwKK307CisKK3RlbXBsYXRlPENvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHNNb2RlIE1v
ZGUsIHR5cGVuYW1lIEJsb2NrLCB0eXBlbmFtZSBJbnN0cnVjdGlvbiwgc2l6ZV90IHZlY3RvclNp
emU+Cit2b2lkIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHNJbnRlcm5hbChCbG9jayogY29kZUJs
b2NrLCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGluc3RydWN0aW9u
Q291bnQsIFZlY3Rvcjx1bnNpZ25lZCwgdmVjdG9yU2l6ZT4mIG91dCkKIHsKICAgICBBU1NFUlQo
b3V0LmlzRW1wdHkoKSk7CiAgICAgCiAgICAgLy8gV2Ugd2lsbCBkZXJpdmUgYSBzdXBlcnNldCBv
ZiB0aGUganVtcCB0YXJnZXRzIHRoYXQgdGhlIGNvZGUgYmxvY2sgdGhpbmtzIGl0IGhhcy4KICAg
ICAvLyBTbywgaWYgdGhlIGNvZGUgYmxvY2sgY2xhaW1zIHRoZXJlIGFyZSBub25lLCB0aGVuIHdl
IGFyZSBkb25lLgotICAgIGlmICghY29kZUJsb2NrLT5udW1iZXJPZkp1bXBUYXJnZXRzKCkpCisg
ICAgaWYgKE1vZGUgPT0gQ29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0c01vZGU6OkZvbGxvd0NvZGVC
bG9ja0NsYWltICYmICFjb2RlQmxvY2stPm51bWJlck9mSnVtcFRhcmdldHMoKSkKICAgICAgICAg
cmV0dXJuOwogICAgIAogICAgIGZvciAodW5zaWduZWQgaSA9IGNvZGVCbG9jay0+bnVtYmVyT2ZF
eGNlcHRpb25IYW5kbGVycygpOyBpLS07KSB7CkBAIC05OCwxMCArMTA0LDggQEAgdm9pZCBjb21w
dXRlUHJlY2lzZUp1bXBUYXJnZXRzKENvZGVCbG9jayogY29kZUJsb2NrLCBWZWN0b3I8dW5zaWdu
ZWQsIDMyPiYgb3V0KQogICAgIH0KIAogICAgIEludGVycHJldGVyKiBpbnRlcnByZXRlciA9IGNv
ZGVCbG9jay0+dm0oKS0+aW50ZXJwcmV0ZXI7Ci0gICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9u
c0JlZ2luID0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpOwotICAgIHVuc2lnbmVk
IGluc3RydWN0aW9uQ291bnQgPSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLnNpemUoKTsKICAg
ICBmb3IgKHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0ID0gMDsgYnl0ZWNvZGVPZmZzZXQgPCBpbnN0
cnVjdGlvbkNvdW50OykgewotICAgICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGludGVycHJldGVy
LT5nZXRPcGNvZGVJRChpbnN0cnVjdGlvbnNCZWdpbltieXRlY29kZU9mZnNldF0udS5vcGNvZGUp
OworICAgICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGludGVycHJldGVyLT5nZXRPcGNvZGVJRChp
bnN0cnVjdGlvbnNCZWdpbltieXRlY29kZU9mZnNldF0pOwogICAgICAgICBnZXRKdW1wVGFyZ2V0
c0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9jaywgaW50ZXJwcmV0ZXIsIGluc3RydWN0aW9uc0Jl
Z2luLCBieXRlY29kZU9mZnNldCwgb3V0KTsKICAgICAgICAgYnl0ZWNvZGVPZmZzZXQgKz0gb3Bj
b2RlTGVuZ3Roc1tvcGNvZGVJRF07CiAgICAgfQpAQCAtMTIzLDExICsxMjcsMzQgQEAgdm9pZCBj
b21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKENvZGVCbG9jayogY29kZUJsb2NrLCBWZWN0b3I8dW5z
aWduZWQsIDMyPiYgb3V0KQogICAgIG91dC5zaHJpbmtUb0ZpdCgpOwogfQogCi12b2lkIGZpbmRK
dW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCB1bnNpZ25l
ZCBieXRlY29kZU9mZnNldCwgVmVjdG9yPHVuc2lnbmVkLCAxPiYgb3V0KQordm9pZCBjb21wdXRl
UHJlY2lzZUp1bXBUYXJnZXRzKENvZGVCbG9jayogY29kZUJsb2NrLCBWZWN0b3I8dW5zaWduZWQs
IDMyPiYgb3V0KQogewotICAgIEludGVycHJldGVyKiBpbnRlcnByZXRlciA9IGNvZGVCbG9jay0+
dm0oKS0+aW50ZXJwcmV0ZXI7Ci0gICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luID0g
Y29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpOwotICAgIGdldEp1bXBUYXJnZXRzRm9y
Qnl0ZWNvZGVPZmZzZXQoY29kZUJsb2NrLCBpbnRlcnByZXRlciwgaW5zdHJ1Y3Rpb25zQmVnaW4s
IGJ5dGVjb2RlT2Zmc2V0LCBvdXQpOworICAgIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHNJbnRl
cm5hbDxDb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzTW9kZTo6Rm9sbG93Q29kZUJsb2NrQ2xhaW0+
KGNvZGVCbG9jaywgY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpLCBjb2RlQmxvY2st
Pmluc3RydWN0aW9ucygpLnNpemUoKSwgb3V0KTsKK30KKwordm9pZCBjb21wdXRlUHJlY2lzZUp1
bXBUYXJnZXRzKENvZGVCbG9jayogY29kZUJsb2NrLCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25z
QmVnaW4sIHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQsIFZlY3Rvcjx1bnNpZ25lZCwgMzI+JiBv
dXQpCit7CisgICAgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0c0ludGVybmFsPENvbXB1dGVQcmVj
aXNlSnVtcFRhcmdldHNNb2RlOjpGb2xsb3dDb2RlQmxvY2tDbGFpbT4oY29kZUJsb2NrLCBpbnN0
cnVjdGlvbnNCZWdpbiwgaW5zdHJ1Y3Rpb25Db3VudCwgb3V0KTsKK30KKwordm9pZCBjb21wdXRl
UHJlY2lzZUp1bXBUYXJnZXRzKFVubGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFVubGlua2Vk
SW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50
LCBWZWN0b3I8dW5zaWduZWQsIDMyPiYgb3V0KQoreworICAgIGNvbXB1dGVQcmVjaXNlSnVtcFRh
cmdldHNJbnRlcm5hbDxDb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzTW9kZTo6Rm9sbG93Q29kZUJs
b2NrQ2xhaW0+KGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb25zQmVnaW4sIGluc3RydWN0aW9uQ291bnQs
IG91dCk7Cit9CisKK3ZvaWQgcmVjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKFVubGlua2VkQ29k
ZUJsb2NrKiBjb2RlQmxvY2ssIFVubGlua2VkSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2lu
LCB1bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50LCBWZWN0b3I8dW5zaWduZWQ+JiBvdXQpCit7Cisg
ICAgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0c0ludGVybmFsPENvbXB1dGVQcmVjaXNlSnVtcFRh
cmdldHNNb2RlOjpGb3JjZUNvbXB1dGU+KGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb25zQmVnaW4sIGlu
c3RydWN0aW9uQ291bnQsIG91dCk7Cit9CisKK3ZvaWQgZmluZEp1bXBUYXJnZXRzRm9yQnl0ZWNv
ZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNC
ZWdpbiwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIFZlY3Rvcjx1bnNpZ25lZCwgMT4mIG91dCkK
K3sKKyAgICBnZXRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9jaywgY29kZUJs
b2NrLT52bSgpLT5pbnRlcnByZXRlciwgaW5zdHJ1Y3Rpb25zQmVnaW4sIGJ5dGVjb2RlT2Zmc2V0
LCBvdXQpOworfQorCit2b2lkIGZpbmRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KFVubGlu
a2VkQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFVubGlua2VkSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9u
c0JlZ2luLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgVmVjdG9yPHVuc2lnbmVkLCAxPiYgb3V0
KQoreworICAgIGdldEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoY29kZUJsb2NrLCBjb2Rl
QmxvY2stPnZtKCktPmludGVycHJldGVyLCBpbnN0cnVjdGlvbnNCZWdpbiwgYnl0ZWNvZGVPZmZz
ZXQsIG91dCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5oCmluZGV4IDg1MjQxM2Q3N2I3
OTg5ODRiMjdjZWYwZWQ2MmJjOTRjNjg5ZTIxMmMuLmRiOWJkMzgzYjhhYzQ1NTdkMzI2NzE3Yjcy
ZDRiMGY1MGIxZDE4MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9QcmVjaXNlSnVtcFRhcmdldHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmgKQEAgLTMwLDEwICszMCwxOCBAQAogCiBuYW1lc3BhY2Ug
SlNDIHsKIAorY2xhc3MgVW5saW5rZWRDb2RlQmxvY2s7CitzdHJ1Y3QgVW5saW5rZWRJbnN0cnVj
dGlvbjsKKwogLy8gUmV0dXJuIGEgc29ydGVkIGxpc3Qgb2YgYnl0ZWNvZGUgaW5kZXggdGhhdCBh
cmUgdGhlIGRlc3RpbmF0aW9uIG9mIGEganVtcC4KIHZvaWQgY29tcHV0ZVByZWNpc2VKdW1wVGFy
Z2V0cyhDb2RlQmxvY2sqLCBWZWN0b3I8dW5zaWduZWQsIDMyPiYgb3V0KTsKK3ZvaWQgY29tcHV0
ZVByZWNpc2VKdW1wVGFyZ2V0cyhDb2RlQmxvY2sqLCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25z
QmVnaW4sIHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQsIFZlY3Rvcjx1bnNpZ25lZCwgMzI+JiBv
dXQpOwordm9pZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKFVubGlua2VkQ29kZUJsb2NrKiwg
VW5saW5rZWRJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGluc3RydWN0
aW9uQ291bnQsIFZlY3Rvcjx1bnNpZ25lZCwgMzI+JiBvdXQpOworCit2b2lkIHJlY29tcHV0ZVBy
ZWNpc2VKdW1wVGFyZ2V0cyhVbmxpbmtlZENvZGVCbG9jayosIFVubGlua2VkSW5zdHJ1Y3Rpb24q
IGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50LCBWZWN0b3I8dW5z
aWduZWQ+JiBvdXQpOwogCi12b2lkIGZpbmRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KENv
ZGVCbG9jayosIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBWZWN0b3I8dW5zaWduZWQsIDE+JiBv
dXQpOwordm9pZCBmaW5kSnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqLCBJ
bnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBW
ZWN0b3I8dW5zaWduZWQsIDE+JiBvdXQpOwordm9pZCBmaW5kSnVtcFRhcmdldHNGb3JCeXRlY29k
ZU9mZnNldChVbmxpbmtlZENvZGVCbG9jayosIFVubGlua2VkSW5zdHJ1Y3Rpb24qIGluc3RydWN0
aW9uc0JlZ2luLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgVmVjdG9yPHVuc2lnbmVkLCAxPiYg
b3V0KTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCmluZGV4IDAwNWRmZjhiZmMyYzUw
NDhjNTAzY2U2MDI5YmJkMjM4MzA2YTE5NTQuLmE1ZWNmNTFlMWU3N2ViMjk5YWFiMTZhMDkwOWE0
NjE2MjM1ZDA1NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9V
bmxpbmtlZENvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1VubGlua2VkQ29kZUJsb2NrLmNwcApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIlVubGlu
a2VkQ29kZUJsb2NrLmgiCiAKICNpbmNsdWRlICJCeXRlY29kZUdlbmVyYXRvci5oIgorI2luY2x1
ZGUgIkJ5dGVjb2RlUmV3cml0ZXIuaCIKICNpbmNsdWRlICJDbGFzc0luZm8uaCIKICNpbmNsdWRl
ICJDb2RlQ2FjaGUuaCIKICNpbmNsdWRlICJFeGVjdXRhYmxlLmgiCkBAIC0zNiw2ICszNyw3IEBA
CiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiUGFyc2VyLmgiCisjaW5jbHVkZSAiUHJlY2lzZUp1bXBUYXJnZXRzLmgiCiAjaW5jbHVkZSAi
U291cmNlUHJvdmlkZXIuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIKICNpbmNsdWRlICJTeW1i
b2xUYWJsZS5oIgpAQCAtMzY3LDUgKzM2OSwxMTEgQEAgY29uc3QgVW5saW5rZWRJbnN0cnVjdGlv
blN0cmVhbSYgVW5saW5rZWRDb2RlQmxvY2s6Omluc3RydWN0aW9ucygpIGNvbnN0CiAgICAgcmV0
dXJuICptX3VubGlua2VkSW5zdHJ1Y3Rpb25zOwogfQogCitVbmxpbmtlZEhhbmRsZXJJbmZvKiBV
bmxpbmtlZENvZGVCbG9jazo6aGFuZGxlckZvckJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVj
b2RlT2Zmc2V0LCBSZXF1aXJlZEhhbmRsZXIgcmVxdWlyZWRIYW5kbGVyKQoreworICAgIHJldHVy
biBoYW5kbGVyRm9ySW5kZXgoYnl0ZWNvZGVPZmZzZXQsIHJlcXVpcmVkSGFuZGxlcik7Cit9CisK
K1VubGlua2VkSGFuZGxlckluZm8qIFVubGlua2VkQ29kZUJsb2NrOjpoYW5kbGVyRm9ySW5kZXgo
dW5zaWduZWQgaW5kZXgsIFJlcXVpcmVkSGFuZGxlciByZXF1aXJlZEhhbmRsZXIpCit7CisgICAg
aWYgKCFtX3JhcmVEYXRhKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gVW5s
aW5rZWRIYW5kbGVySW5mbzo6aGFuZGxlckZvckluZGV4KG1fcmFyZURhdGEtPm1fZXhjZXB0aW9u
SGFuZGxlcnMsIGluZGV4LCByZXF1aXJlZEhhbmRsZXIpOworfQorCit2b2lkIFVubGlua2VkQ29k
ZUJsb2NrOjphcHBseU1vZGlmaWNhdGlvbihCeXRlY29kZVJld3JpdGVyJiBpbnNlcnRpb25TZXQp
Cit7CisgICAgLy8gQmVmb3JlIGFwcGx5aW5nIHRoZSBjaGFuZ2VzLCB3ZSBhZGp1c3QgdGhlIGp1
bXBzIGJhc2VkIG9uIHRoZSBvcmlnaW5hbCBieXRlY29kZSBvZmZzZXQsIHRoZSBvZmZzZXQgdG8g
dGhlIGp1bXAgdGFyZ2V0LCBhbmQKKyAgICAvLyB0aGUgaW5zZXJ0aW9uIGluZm9ybWF0aW9uLgor
CisgICAgQnl0ZWNvZGVHcmFwaDxVbmxpbmtlZENvZGVCbG9jaz4mIGdyYXBoID0gaW5zZXJ0aW9u
U2V0LmdyYXBoKCk7CisgICAgVW5saW5rZWRJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4g
PSBncmFwaC5pbnN0cnVjdGlvbnMoKS5iZWdpbigpOworICAgIGZvciAoaW50IGJ5dGVjb2RlT2Zm
c2V0ID0gMCwgaW5zdHJ1Y3Rpb25Db3VudCA9IGdyYXBoLmluc3RydWN0aW9ucygpLnNpemUoKTsg
Ynl0ZWNvZGVPZmZzZXQgPCBpbnN0cnVjdGlvbkNvdW50OykgeworICAgICAgICBVbmxpbmtlZElu
c3RydWN0aW9uKiBjdXJyZW50ID0gaW5zdHJ1Y3Rpb25zQmVnaW4gKyBieXRlY29kZU9mZnNldDsK
KyAgICAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBjdXJyZW50WzBdLnUub3Bjb2RlOworCisgICAg
ICAgIHN3aXRjaCAob3Bjb2RlSUQpIHsKKyAgICAgICAgY2FzZSBvcF9qbXA6CisgICAgICAgICAg
ICBjdXJyZW50WzFdLnUub3BlcmFuZCA9IGluc2VydGlvblNldC5hZGp1c3RPZmZzZXQoYnl0ZWNv
ZGVPZmZzZXQsIGJ5dGVjb2RlT2Zmc2V0ICsgY3VycmVudFsxXS51Lm9wZXJhbmQpOworICAgICAg
ICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBvcF9qdHJ1ZToKKyAgICAgICAgY2FzZSBvcF9q
ZmFsc2U6CisgICAgICAgIGNhc2Ugb3BfamVxX251bGw6CisgICAgICAgIGNhc2Ugb3Bfam5lcV9u
dWxsOgorICAgICAgICAgICAgY3VycmVudFsyXS51Lm9wZXJhbmQgPSBpbnNlcnRpb25TZXQuYWRq
dXN0T2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0LCBieXRlY29kZU9mZnNldCArIGN1cnJlbnRbMl0udS5v
cGVyYW5kKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2Ugb3Bfam5lcV9wdHI6
CisgICAgICAgIGNhc2Ugb3Bfamxlc3M6CisgICAgICAgIGNhc2Ugb3Bfamxlc3NlcToKKyAgICAg
ICAgY2FzZSBvcF9qZ3JlYXRlcjoKKyAgICAgICAgY2FzZSBvcF9qZ3JlYXRlcmVxOgorICAgICAg
ICBjYXNlIG9wX2pubGVzczoKKyAgICAgICAgY2FzZSBvcF9qbmxlc3NlcToKKyAgICAgICAgY2Fz
ZSBvcF9qbmdyZWF0ZXI6CisgICAgICAgIGNhc2Ugb3Bfam5ncmVhdGVyZXE6CisgICAgICAgICAg
ICBjdXJyZW50WzNdLnUub3BlcmFuZCA9IGluc2VydGlvblNldC5hZGp1c3RPZmZzZXQoYnl0ZWNv
ZGVPZmZzZXQsIGJ5dGVjb2RlT2Zmc2V0ICsgY3VycmVudFszXS51Lm9wZXJhbmQpOworICAgICAg
ICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBvcF9zd2l0Y2hfaW1tOgorICAgICAgICBjYXNl
IG9wX3N3aXRjaF9jaGFyOiB7CisgICAgICAgICAgICBhdXRvJiB0YWJsZSA9IHN3aXRjaEp1bXBU
YWJsZShjdXJyZW50WzFdLnUub3BlcmFuZCk7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSB0YWJsZS5icmFuY2hPZmZzZXRzLnNpemUoKTsgaS0tOykKKyAgICAgICAgICAgICAgICB0YWJs
ZS5icmFuY2hPZmZzZXRzW2ldID0gaW5zZXJ0aW9uU2V0LmFkanVzdE9mZnNldChieXRlY29kZU9m
ZnNldCwgYnl0ZWNvZGVPZmZzZXQgKyB0YWJsZS5icmFuY2hPZmZzZXRzW2ldKTsKKyAgICAgICAg
ICAgIGN1cnJlbnRbMl0udS5vcGVyYW5kID0gaW5zZXJ0aW9uU2V0LmFkanVzdE9mZnNldChieXRl
Y29kZU9mZnNldCwgYnl0ZWNvZGVPZmZzZXQgKyBjdXJyZW50WzJdLnUub3BlcmFuZCk7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2Ugb3Bfc3dpdGNoX3N0cmlu
ZzogeworICAgICAgICAgICAgYXV0byYgdGFibGUgPSBzdHJpbmdTd2l0Y2hKdW1wVGFibGUoY3Vy
cmVudFsxXS51Lm9wZXJhbmQpOworICAgICAgICAgICAgYXV0byBpdGVyID0gdGFibGUub2Zmc2V0
VGFibGUuYmVnaW4oKTsKKyAgICAgICAgICAgIGF1dG8gZW5kID0gdGFibGUub2Zmc2V0VGFibGUu
ZW5kKCk7CisgICAgICAgICAgICBmb3IgKDsgaXRlciAhPSBlbmQ7ICsraXRlcikKKyAgICAgICAg
ICAgICAgICBpdGVyLT52YWx1ZS5icmFuY2hPZmZzZXQgPSBpbnNlcnRpb25TZXQuYWRqdXN0T2Zm
c2V0KGJ5dGVjb2RlT2Zmc2V0LCBieXRlY29kZU9mZnNldCArIGl0ZXItPnZhbHVlLmJyYW5jaE9m
ZnNldCk7CisgICAgICAgICAgICBjdXJyZW50WzJdLnUub3BlcmFuZCA9IGluc2VydGlvblNldC5h
ZGp1c3RPZmZzZXQoYnl0ZWNvZGVPZmZzZXQsIGJ5dGVjb2RlT2Zmc2V0ICsgY3VycmVudFsyXS51
Lm9wZXJhbmQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBieXRlY29kZU9m
ZnNldCArPSBvcGNvZGVMZW5ndGgob3Bjb2RlSUQpOworICAgIH0KKworICAgIC8vIFRoZW4sIGV4
Y2VwdGlvbiBoYW5kbGVycyBzaG91bGQgYmUgYWRqdXN0ZWQuCisgICAgaWYgKG1fcmFyZURhdGEp
IHsKKyAgICAgICAgZm9yIChVbmxpbmtlZEhhbmRsZXJJbmZvJiBoYW5kbGVyIDogbV9yYXJlRGF0
YS0+bV9leGNlcHRpb25IYW5kbGVycykgeworICAgICAgICAgICAgaGFuZGxlci50YXJnZXQgPSBp
bnNlcnRpb25TZXQuYWRqdXN0T2Zmc2V0KDAsIGhhbmRsZXIudGFyZ2V0KTsKKyAgICAgICAgICAg
IGhhbmRsZXIuc3RhcnQgPSBpbnNlcnRpb25TZXQuYWRqdXN0T2Zmc2V0KDAsIGhhbmRsZXIuc3Rh
cnQpOworICAgICAgICAgICAgaGFuZGxlci5lbmQgPSBpbnNlcnRpb25TZXQuYWRqdXN0T2Zmc2V0
KDAsIGhhbmRsZXIuZW5kKTsKKyAgICAgICAgfQorCisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgbV9yYXJlRGF0YS0+bV9vcFByb2ZpbGVDb250cm9sRmxvd0J5dGVjb2RlT2Zmc2V0cy5z
aXplKCk7ICsraSkKKyAgICAgICAgICAgIG1fcmFyZURhdGEtPm1fb3BQcm9maWxlQ29udHJvbEZs
b3dCeXRlY29kZU9mZnNldHNbaV0gPSBpbnNlcnRpb25TZXQuYWRqdXN0T2Zmc2V0KDAsIG1fcmFy
ZURhdGEtPm1fb3BQcm9maWxlQ29udHJvbEZsb3dCeXRlY29kZU9mZnNldHNbaV0pOworCisgICAg
ICAgIGlmICghbV9yYXJlRGF0YS0+bV90eXBlUHJvZmlsZXJJbmZvTWFwLmlzRW1wdHkoKSkgewor
ICAgICAgICAgICAgSGFzaE1hcDx1bnNpZ25lZCwgUmFyZURhdGE6OlR5cGVQcm9maWxlckV4cHJl
c3Npb25SYW5nZT4gYWRqdXN0ZWRUeXBlUHJvZmlsZXJJbmZvTWFwOworICAgICAgICAgICAgZm9y
IChhdXRvJiBlbnRyeSA6IG1fcmFyZURhdGEtPm1fdHlwZVByb2ZpbGVySW5mb01hcCkKKyAgICAg
ICAgICAgICAgICBhZGp1c3RlZFR5cGVQcm9maWxlckluZm9NYXAuc2V0KGluc2VydGlvblNldC5h
ZGp1c3RPZmZzZXQoMCwgZW50cnkua2V5KSwgZW50cnkudmFsdWUpOworICAgICAgICAgICAgbV9y
YXJlRGF0YS0+bV90eXBlUHJvZmlsZXJJbmZvTWFwLnN3YXAoYWRqdXN0ZWRUeXBlUHJvZmlsZXJJ
bmZvTWFwKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
bV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9ucy5zaXplKCk7ICsraSkKKyAgICAgICAgbV9wcm9w
ZXJ0eUFjY2Vzc0luc3RydWN0aW9uc1tpXSA9IGluc2VydGlvblNldC5hZGp1c3RPZmZzZXQoMCwg
bV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uc1tpXSk7CisKKyAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IG1fZXhwcmVzc2lvbkluZm8uc2l6ZSgpOyArK2kpCisgICAgICAgIG1fZXhwcmVzc2lv
bkluZm9baV0uaW5zdHJ1Y3Rpb25PZmZzZXQgPSBpbnNlcnRpb25TZXQuYWRqdXN0T2Zmc2V0KDAs
IG1fZXhwcmVzc2lvbkluZm9baV0uaW5zdHJ1Y3Rpb25PZmZzZXQpOworCisgICAgLy8gVGhlbiwg
bW9kaWZ5IHRoZSB1bmxpbmtlZCBpbnN0cnVjdGlvbnMuCisgICAgaW5zZXJ0aW9uU2V0LmFwcGx5
TW9kaWZpY2F0aW9uKCk7CisKKyAgICAvLyBBbmQgcmVjb21wdXRlIHRoZSBqdW1wIHRhcmdldCBi
YXNlZCBvbiB0aGUgbW9kaWZpZWQgdW5saW5rZWQgaW5zdHJ1Y3Rpb25zLgorICAgIG1fanVtcFRh
cmdldHMuY2xlYXIoKTsKKyAgICByZWNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHModGhpcywgZ3Jh
cGguaW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSwgZ3JhcGguaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpLCBt
X2p1bXBUYXJnZXRzKTsKK30KKwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCmluZGV4IGI0ZDJjZjQ4ZTQ2MzhkMzczYjE2NzIw
Zjc2ZTNjZmY5N2RmMDE1MGQuLjcyZDE2OTYxMWFhOTM1MTc4YzQ4MTBlZWQyZDU5YTgzMThmZjYx
YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENv
ZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENv
ZGVCbG9jay5oCkBAIC00NSw2ICs0NSw4IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCitjbGFzcyBC
eXRlY29kZVJld3JpdGVyOworY2xhc3MgRGVidWdnZXI7CiBjbGFzcyBGdW5jdGlvbk1ldGFkYXRh
Tm9kZTsKIGNsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZTsKIGNsYXNzIEpTU2NvcGU7CkBAIC02NSw3
ICs2NywxMSBAQCB0eXBlZGVmIHVuc2lnbmVkIFVubGlua2VkT2JqZWN0QWxsb2NhdGlvblByb2Zp
bGU7CiB0eXBlZGVmIHVuc2lnbmVkIFVubGlua2VkTExJbnRDYWxsTGlua0luZm87CiAKIHN0cnVj
dCBVbmxpbmtlZFN0cmluZ0p1bXBUYWJsZSB7Ci0gICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxT
dHJpbmdJbXBsPiwgaW50MzJfdD4gU3RyaW5nT2Zmc2V0VGFibGU7CisgICAgc3RydWN0IE9mZnNl
dExvY2F0aW9uIHsKKyAgICAgICAgaW50MzJfdCBicmFuY2hPZmZzZXQ7CisgICAgfTsKKworICAg
IHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8U3RyaW5nSW1wbD4sIE9mZnNldExvY2F0aW9uPiBTdHJp
bmdPZmZzZXRUYWJsZTsKICAgICBTdHJpbmdPZmZzZXRUYWJsZSBvZmZzZXRUYWJsZTsKIAogICAg
IGlubGluZSBpbnQzMl90IG9mZnNldEZvclZhbHVlKFN0cmluZ0ltcGwqIHZhbHVlLCBpbnQzMl90
IGRlZmF1bHRPZmZzZXQpCkBAIC03NCw3ICs4MCw3IEBAIHN0cnVjdCBVbmxpbmtlZFN0cmluZ0p1
bXBUYWJsZSB7CiAgICAgICAgIFN0cmluZ09mZnNldFRhYmxlOjpjb25zdF9pdGVyYXRvciBsb2Mg
PSBvZmZzZXRUYWJsZS5maW5kKHZhbHVlKTsKICAgICAgICAgaWYgKGxvYyA9PSBlbmQpCiAgICAg
ICAgICAgICByZXR1cm4gZGVmYXVsdE9mZnNldDsKLSAgICAgICAgcmV0dXJuIGxvYy0+dmFsdWU7
CisgICAgICAgIHJldHVybiBsb2MtPnZhbHVlLmJyYW5jaE9mZnNldDsKICAgICB9CiAKIH07CkBA
IC0xMDIsNiArMTA4LDggQEAgc3RydWN0IFVubGlua2VkSW5zdHJ1Y3Rpb24gewogICAgIH0gdTsK
IH07CiAKK2NsYXNzIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uOworCiBjbGFzcyBVbmxpbmtl
ZENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogcHVibGljOgogICAgIHR5cGVkZWYgSlNDZWxs
IEJhc2U7CkBAIC0xMTEsNiArMTE5LDkgQEAgY2xhc3MgVW5saW5rZWRDb2RlQmxvY2sgOiBwdWJs
aWMgSlNDZWxsIHsKIAogICAgIGVudW0geyBDYWxsRnVuY3Rpb24sIEFwcGx5RnVuY3Rpb24gfTsK
IAorICAgIHR5cGVkZWYgVW5saW5rZWRJbnN0cnVjdGlvbiBJbnN0cnVjdGlvbjsKKyAgICB0eXBl
ZGVmIFZlY3RvcjxVbmxpbmtlZEluc3RydWN0aW9uLCAwLCBVbnNhZmVWZWN0b3JPdmVyZmxvdz4g
VW5wYWNrZWRJbnN0cnVjdGlvbnM7CisKICAgICBib29sIGlzQ29uc3RydWN0b3IoKSBjb25zdCB7
IHJldHVybiBtX2lzQ29uc3RydWN0b3I7IH0KICAgICBib29sIGlzU3RyaWN0TW9kZSgpIGNvbnN0
IHsgcmV0dXJuIG1faXNTdHJpY3RNb2RlOyB9CiAgICAgYm9vbCB1c2VzRXZhbCgpIGNvbnN0IHsg
cmV0dXJuIG1fdXNlc0V2YWw7IH0KQEAgLTIwMCw2ICsyMTEsOSBAQCBjbGFzcyBVbmxpbmtlZENv
ZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgIHVuc2lnbmVkIGp1bXBUYXJnZXQoaW50IGlu
ZGV4KSBjb25zdCB7IHJldHVybiBtX2p1bXBUYXJnZXRzW2luZGV4XTsgfQogICAgIHVuc2lnbmVk
IGxhc3RKdW1wVGFyZ2V0KCkgY29uc3QgeyByZXR1cm4gbV9qdW1wVGFyZ2V0cy5sYXN0KCk7IH0K
IAorICAgIFVubGlua2VkSGFuZGxlckluZm8qIGhhbmRsZXJGb3JCeXRlY29kZU9mZnNldCh1bnNp
Z25lZCBieXRlY29kZU9mZnNldCwgUmVxdWlyZWRIYW5kbGVyID0gUmVxdWlyZWRIYW5kbGVyOjpB
bnlIYW5kbGVyKTsKKyAgICBVbmxpbmtlZEhhbmRsZXJJbmZvKiBoYW5kbGVyRm9ySW5kZXgodW5z
aWduZWQsIFJlcXVpcmVkSGFuZGxlciA9IFJlcXVpcmVkSGFuZGxlcjo6QW55SGFuZGxlcik7CisK
ICAgICBib29sIGlzQnVpbHRpbkZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc0J1aWx0aW5G
dW5jdGlvbjsgfQogCiAgICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCgpIGNvbnN0
IHsgcmV0dXJuIHN0YXRpY19jYXN0PENvbnN0cnVjdG9yS2luZD4obV9jb25zdHJ1Y3RvcktpbmQp
OyB9CkBAIC0yMzAsNiArMjQ0LDggQEAgY2xhc3MgVW5saW5rZWRDb2RlQmxvY2sgOiBwdWJsaWMg
SlNDZWxsIHsKICAgICB2b2lkIHNldEluc3RydWN0aW9ucyhzdGQ6OnVuaXF1ZV9wdHI8VW5saW5r
ZWRJbnN0cnVjdGlvblN0cmVhbT4pOwogICAgIGNvbnN0IFVubGlua2VkSW5zdHJ1Y3Rpb25TdHJl
YW0mIGluc3RydWN0aW9ucygpIGNvbnN0OwogCisgICAgaW50IG51bUNhbGxlZUxvY2FscygpIGNv
bnN0IHsgcmV0dXJuIG1fbnVtQ2FsbGVlTG9jYWxzOyB9CisKICAgICBpbnQgbV9udW1WYXJzOwog
ICAgIGludCBtX251bUNhcHR1cmVkVmFyczsKICAgICBpbnQgbV9udW1DYWxsZWVMb2NhbHM7CkBA
IC0zODEsNiArMzk3LDggQEAgY2xhc3MgVW5saW5rZWRDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxs
IHsKICAgICB9CiAKIHByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIEJ5dGVjb2RlUmV3cml0ZXI7
CisgICAgdm9pZCBhcHBseU1vZGlmaWNhdGlvbihCeXRlY29kZVJld3JpdGVyJik7CiAKICAgICB2
b2lkIGNyZWF0ZVJhcmVEYXRhSWZOZWNlc3NhcnkoKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WaXJ0dWFsUmVnaXN0ZXIuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9WaXJ0dWFsUmVnaXN0ZXIuaAppbmRleCBkM2RmNDA5NTdiNTE3
NTY4ZTNhZWZiZTNhMWE2MDlmZDg3OGJhYWMzLi5kYWY1MDlmNmM3ZDExNWU0NWJjYjEwN2M2N2Qz
ZDM4ZDgwNGYyODk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
VmlydHVhbFJlZ2lzdGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Zp
cnR1YWxSZWdpc3Rlci5oCkBAIC0yNiw4ICsyNiw4IEBACiAjaWZuZGVmIFZpcnR1YWxSZWdpc3Rl
cl9oCiAjZGVmaW5lIFZpcnR1YWxSZWdpc3Rlcl9oCiAKKyNpbmNsdWRlICJCeXRlY29kZUNvbnZl
bnRpb25zLmgiCiAjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCi0KICNpbmNsdWRlIDx3dGYvUHJpbnRT
dHJlYW0uaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC0xMDMsNyArMTAzLDcgQEAgY2xhc3MgVmly
dHVhbFJlZ2lzdGVyIHsKIAogcHJpdmF0ZToKICAgICBzdGF0aWMgY29uc3QgaW50IHNfaW52YWxp
ZFZpcnR1YWxSZWdpc3RlciA9IDB4M2ZmZmZmZmY7Ci0gICAgc3RhdGljIGNvbnN0IGludCBzX2Zp
cnN0Q29uc3RhbnRSZWdpc3RlckluZGV4ID0gMHg0MDAwMDAwMDsKKyAgICBzdGF0aWMgY29uc3Qg
aW50IHNfZmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXggPSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJ
bmRleDsKIAogICAgIHN0YXRpYyBpbnQgbG9jYWxUb09wZXJhbmQoaW50IGxvY2FsKSB7IHJldHVy
biAtMSAtIGxvY2FsOyB9CiAgICAgc3RhdGljIGludCBvcGVyYW5kVG9Mb2NhbChpbnQgb3BlcmFu
ZCkgeyByZXR1cm4gLTEgLSBvcGVyYW5kOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IDMxMmQ4OWY3
YWRjNzNmMDdkYzUxNzliNzVlNTc1YzU1OTAyNjZkYjguLjUzM2VmMDg5OGI3N2RiZGIzNmU0YTI1
M2QwNzRkZDJkNDcyMjAxOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAK
ICNpbmNsdWRlICJBcml0aFByb2ZpbGUuaCIKICNpbmNsdWRlICJCdWlsdGluRXhlY3V0YWJsZXMu
aCIKKyNpbmNsdWRlICJCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5oIgogI2luY2x1ZGUgIkJ5
dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5j
bHVkZSAiSlNGdW5jdGlvbi5oIgpAQCAtMTU1LDYgKzE1NiwxMCBAQCBQYXJzZXJFcnJvciBCeXRl
Y29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUoKQogICAgICAgICBtX2NvZGVCbG9jay0+YWRkRXhjZXB0
aW9uSGFuZGxlcihpbmZvKTsKICAgICB9CiAgICAgCisKKyAgICBpZiAobV9jb2RlQmxvY2stPnBh
cnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yQm9keU1vZGUpCisgICAgICAg
IHBlcmZvcm1HZW5lcmF0b3JpZmljYXRpb24obV9jb2RlQmxvY2suZ2V0KCksIG1faW5zdHJ1Y3Rp
b25zLCBtX2dlbmVyYXRvckZyYW1lU3ltYm9sVGFibGUuZ2V0KCksIG1fZ2VuZXJhdG9yRnJhbWVT
eW1ib2xUYWJsZUluZGV4KTsKKwogICAgIG1fY29kZUJsb2NrLT5zZXRJbnN0cnVjdGlvbnMoc3Rk
OjptYWtlX3VuaXF1ZTxVbmxpbmtlZEluc3RydWN0aW9uU3RyZWFtPihtX2luc3RydWN0aW9ucykp
OwogCiAgICAgbV9jb2RlQmxvY2stPnNocmlua1RvRml0KCk7CkBAIC0yNjIsMTAgKzI2NywxNCBA
QCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5v
ZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAgIGJvb2wgc2hvdWxkQ2FwdHVyZUFsbE9mVGhl
VGhpbmdzID0gbV9zaG91bGRFbWl0RGVidWdIb29rcyB8fCBjb2RlQmxvY2stPnVzZXNFdmFsKCk7
CiAgICAgYm9vbCBuZWVkc0FyZ3VtZW50cyA9IChmdW5jdGlvbk5vZGUtPnVzZXNBcmd1bWVudHMo
KSB8fCBjb2RlQmxvY2stPnVzZXNFdmFsKCkgfHwgKGZ1bmN0aW9uTm9kZS0+dXNlc0Fycm93RnVu
Y3Rpb24oKSAmJiAhY29kZUJsb2NrLT5pc0Fycm93RnVuY3Rpb24oKSAmJiBpc0FyZ3VtZW50c1Vz
ZWRJbklubmVyQXJyb3dGdW5jdGlvbigpKSk7CiAKLSAgICAvLyBHZW5lcmF0b3IgbmV2ZXIgcHJv
dmlkZXMgImFyZ3VtZW50cyIuICJhcmd1bWVudHMiIHJlZmVyZW5jZSB3aWxsIGJlIHJlc29sdmVk
IGluIGFuIHVwcGVyIGdlbmVyYXRvciBmdW5jdGlvbiBzY29wZS4KLSAgICBpZiAocGFyc2VNb2Rl
ID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yQm9keU1vZGUpCisgICAgaWYgKHBhcnNlTW9k
ZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckJvZHlNb2RlKSB7CisgICAgICAgIC8vIEdl
bmVyYXRvciBuZXZlciBwcm92aWRlcyAiYXJndW1lbnRzIi4gImFyZ3VtZW50cyIgcmVmZXJlbmNl
IHdpbGwgYmUgcmVzb2x2ZWQgaW4gYW4gdXBwZXIgZ2VuZXJhdG9yIGZ1bmN0aW9uIHNjb3BlLgog
ICAgICAgICBuZWVkc0FyZ3VtZW50cyA9IGZhbHNlOwogCisgICAgICAgIC8vIEdlbmVyYXRvciB1
c2VzIHRoZSB2YXIgc2NvcGUgdG8gc2F2ZSBhbmQgcmVzdW1lIGl0cyB2YXJpYWJsZXMuIFNvIHRo
ZSBsZXhpY2FsIHNjb3BlIGlzIGFsd2F5cyBpbnN0YW50aWF0ZWQuCisgICAgICAgIHNob3VsZENh
cHR1cmVTb21lT2ZUaGVUaGluZ3MgPSB0cnVlOworICAgIH0KKwogICAgIGlmIChwYXJzZU1vZGUg
PT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JXcmFwcGVyRnVuY3Rpb25Nb2RlICYmIG5lZWRz
QXJndW1lbnRzKSB7CiAgICAgICAgIC8vIEdlbmVyYXRvciBkb2VzIG5vdCBwcm92aWRlICJhcmd1
bWVudHMiLiBJbnN0ZWFkLCB3cmFwcGluZyBHZW5lcmF0b3JGdW5jdGlvbiBwcm92aWRlcyAiYXJn
dW1lbnRzIi4KICAgICAgICAgLy8gVGhpcyBpcyBiZWNhdXNlIGFyZ3VtZW50cyBvZiBhIGdlbmVy
YXRvciBzaG91bGQgYmUgZXZhbHVhdGVkIGJlZm9yZSBzdGFydGluZyBpdC4KQEAgLTI3NCw3ICsy
ODMsNyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5j
dGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAgICAgICAvLyAgICBmdW5jdGlvbiAq
Z2VuKGEsIGIgPSBoZWxsbygpKQogICAgICAgICAvLyAgICB7CiAgICAgICAgIC8vICAgICAgICBy
ZXR1cm4gewotICAgICAgICAvLyAgICAgICAgICAgIEBnZW5lcmF0b3JOZXh0OiBmdW5jdGlvbiAo
QGdlbmVyYXRvciwgQGdlbmVyYXRvclN0YXRlLCBAZ2VuZXJhdG9yVmFsdWUsIEBnZW5lcmF0b3JS
ZXN1bWVNb2RlKQorICAgICAgICAvLyAgICAgICAgICAgIEBnZW5lcmF0b3JOZXh0OiBmdW5jdGlv
biAoQGdlbmVyYXRvciwgQGdlbmVyYXRvclN0YXRlLCBAZ2VuZXJhdG9yVmFsdWUsIEBnZW5lcmF0
b3JSZXN1bWVNb2RlLCBAZ2VuZXJhdG9yRnJhbWUpCiAgICAgICAgIC8vICAgICAgICAgICAgewog
ICAgICAgICAvLyAgICAgICAgICAgICAgICBhcmd1bWVudHM7ICAvLyBUaGlzIGBhcmd1bWVudHNg
IHNob3VsZCByZWZlcmVuY2UgdG8gdGhlIGdlbidzIGFyZ3VtZW50cy4KICAgICAgICAgLy8gICAg
ICAgICAgICAgICAgLi4uCkBAIC0zMDMsMjggKzMxMiwxNyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6
Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5s
aW5rZQogICAgICAgICByZXR1cm4gY2FwdHVyZXModWlkKSA/IFZhcktpbmQ6OlNjb3BlIDogVmFy
S2luZDo6U3RhY2s7CiAgICAgfTsKIAotICAgIGVtaXRFbnRlcigpOwotCi0gICAgYWxsb2NhdGVB
bmRFbWl0U2NvcGUoKTsKLQogICAgIG1fY2FsbGVlUmVnaXN0ZXIuc2V0SW5kZXgoQ2FsbEZyYW1l
U2xvdDo6Y2FsbGVlKTsKIAogICAgIGluaXRpYWxpemVQYXJhbWV0ZXJzKHBhcmFtZXRlcnMpOwog
ICAgIEFTU0VSVCghKGlzU2ltcGxlUGFyYW1ldGVyTGlzdCAmJiBtX3Jlc3RQYXJhbWV0ZXIpKTsK
IAotICAgIC8vIEJlZm9yZSBlbWl0dGluZyBhIHNjb3BlIGNyZWF0aW9uLCBlbWl0IGEgZ2VuZXJh
dG9yIHByb2xvZ3VlIHRoYXQgY29udGFpbnMganVtcCBiYXNlZCBvbiBhIGdlbmVyYXRvcidzIHN0
YXRlLgotICAgIGlmIChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JCb2R5
TW9kZSkgewotICAgICAgICBtX2dlbmVyYXRvclJlZ2lzdGVyID0gJm1fcGFyYW1ldGVyc1sxXTsK
LQotICAgICAgICAvLyBKdW1wIHdpdGggc3dpdGNoX2ltbSBiYXNlZCBvbiBAZ2VuZXJhdG9yU3Rh
dGUuIFdlIGRvbid0IHRha2UgdGhlIGNvcm91dGluZSBzdHlsZWQgZ2VuZXJhdG9yIGltcGxlbWVu
dGF0aW9uLgotICAgICAgICAvLyBXaGVuIGNhbGxpbmcgYG5leHQoKWAsIHdlIHdvdWxkIGxpa2Ug
dG8gZW50ZXIgdGhlIHNhbWUgcHJvbG9ndWUgaW5zdGVhZCBvZiBqdW1waW5nIGJhc2VkIG9uIHRo
ZSBzYXZlZCBpbnN0cnVjdGlvbiBwb2ludGVyLgotICAgICAgICAvLyBJdCdzIHN1aXRhbGUgZm9y
IGlubGluaW5nLCBiZWNhdXNlIGl0IGp1c3QgaW5saW5lcyBvbmUgYG5leHRgIGZ1bmN0aW9uIGlt
cGxlbWVudGF0aW9uLgorICAgIGVtaXRFbnRlcigpOwogCi0gICAgICAgIGJlZ2luR2VuZXJhdG9y
KGdlbmVyYXRvclN0YXRlUmVnaXN0ZXIoKSk7CisgICAgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQ
YXJzZU1vZGU6OkdlbmVyYXRvckJvZHlNb2RlKQorICAgICAgICBtX2dlbmVyYXRvclJlZ2lzdGVy
ID0gJm1fcGFyYW1ldGVyc1sxXTsKIAotICAgICAgICAvLyBJbml0aWFsIHN0YXRlLgotICAgICAg
ICBlbWl0R2VuZXJhdG9yU3RhdGVMYWJlbCgpOwotICAgIH0KKyAgICBhbGxvY2F0ZUFuZEVtaXRT
Y29wZSgpOwogCiAgICAgaWYgKGZ1bmN0aW9uTmFtZUlzSW5TY29wZShmdW5jdGlvbk5vZGUtPmlk
ZW50KCksIGZ1bmN0aW9uTm9kZS0+ZnVuY3Rpb25Nb2RlKCkpKSB7CiAgICAgICAgIEFTU0VSVChw
YXJzZU1vZGUgIT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JCb2R5TW9kZSk7CkBAIC02NDEs
NiArNjM5LDE2IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0s
IEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtlCiAgICAgICAgICAgICBlbWl0TG9h
ZE5ld1RhcmdldEZyb21BcnJvd0Z1bmN0aW9uTGV4aWNhbEVudmlyb25tZW50KCk7CiAgICAgfQog
ICAgIAorICAgIC8vIFNldCB1cCB0aGUgbGV4aWNhbCBlbnZpcm9ubWVudCBzY29wZSBhcyB0aGUg
Z2VuZXJhdG9yIGZyYW1lLiBXZSBzdG9yZSB0aGUgc2F2ZWQgYW5kIHJlc3VtZWQgZ2VuZXJhdG9y
IHJlZ2lzdGVycyBpbnRvIHRoaXMgc2NvcGUgd2l0aCB0aGUgc3ltYm9sIGtleXMuCisgICAgLy8g
U2luY2UgdGhleSBhcmUgc3ltYm9sIGtleWVkLCB0aGVzZSB2YXJpYWJsZXMgY2Fubm90IGJlIHJl
YWNoZWQgZnJvbSB0aGUgdXN1YWwgY29kZS4KKyAgICBpZiAoU291cmNlUGFyc2VNb2RlOjpHZW5l
cmF0b3JCb2R5TW9kZSA9PSBwYXJzZU1vZGUpIHsKKyAgICAgICAgQVNTRVJUKG1fbGV4aWNhbEVu
dmlyb25tZW50UmVnaXN0ZXIpOworICAgICAgICBtX2dlbmVyYXRvckZyYW1lU3ltYm9sVGFibGUu
c2V0KCptX3ZtLCBmdW5jdGlvblN5bWJvbFRhYmxlKTsKKyAgICAgICAgbV9nZW5lcmF0b3JGcmFt
ZVN5bWJvbFRhYmxlSW5kZXggPSBzeW1ib2xUYWJsZUNvbnN0YW50SW5kZXg7CisgICAgICAgIGVt
aXRNb3ZlKGdlbmVyYXRvckZyYW1lUmVnaXN0ZXIoKSwgbV9sZXhpY2FsRW52aXJvbm1lbnRSZWdp
c3Rlcik7CisgICAgICAgIGVtaXRQdXRCeUlkKGdlbmVyYXRvclJlZ2lzdGVyKCksIHByb3BlcnR5
TmFtZXMoKS5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JGcmFtZVByaXZhdGVOYW1lKCksIGdlbmVy
YXRvckZyYW1lUmVnaXN0ZXIoKSk7CisgICAgfQorCiAgICAgYm9vbCBzaG91bGRJbml0aWFsaXpl
QmxvY2tTY29wZWRGdW5jdGlvbnMgPSBmYWxzZTsgLy8gV2UgZ2VuZXJhdGUgdG9wLWxldmVsIGZ1
bmN0aW9uIGRlY2xhcmF0aW9ucyBpbiA6OmdlbmVyYXRlKCkuCiAgICAgcHVzaExleGljYWxTY29w
ZShtX3Njb3BlTm9kZSwgVERaQ2hlY2tPcHRpbWl6YXRpb246Ok9wdGltaXplLCBOZXN0ZWRTY29w
ZVR5cGU6OklzTm90TmVzdGVkLCBudWxscHRyLCBzaG91bGRJbml0aWFsaXplQmxvY2tTY29wZWRG
dW5jdGlvbnMpOwogfQpAQCAtMzY3Miw4ICszNjgwLDcgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRv
cjo6ZW1pdENvbXBsZXhQb3BTY29wZXMoUmVnaXN0ZXJJRCogc2NvcGUsIENvbnRyb2xGbG93Q29u
dGUKICAgICAgICAgICAgIGlmIChmbGlwVHJpZXMpIHsKICAgICAgICAgICAgICAgICB3aGlsZSAo
bV90cnlDb250ZXh0U3RhY2suc2l6ZSgpICE9IGZpbmFsbHlDb250ZXh0LnRyeUNvbnRleHRTdGFj
a1NpemUpIHsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKG1fdHJ5Q29udGV4dFN0YWNrLnNp
emUoKSA+IGZpbmFsbHlDb250ZXh0LnRyeUNvbnRleHRTdGFja1NpemUpOwotICAgICAgICAgICAg
ICAgICAgICBUcnlDb250ZXh0IGNvbnRleHQgPSBtX3RyeUNvbnRleHRTdGFjay5sYXN0KCk7Ci0g
ICAgICAgICAgICAgICAgICAgIG1fdHJ5Q29udGV4dFN0YWNrLnJlbW92ZUxhc3QoKTsKKyAgICAg
ICAgICAgICAgICAgICAgVHJ5Q29udGV4dCBjb250ZXh0ID0gbV90cnlDb250ZXh0U3RhY2sudGFr
ZUxhc3QoKTsKICAgICAgICAgICAgICAgICAgICAgVHJ5UmFuZ2UgcmFuZ2U7CiAgICAgICAgICAg
ICAgICAgICAgIHJhbmdlLnN0YXJ0ID0gY29udGV4dC5zdGFydDsKICAgICAgICAgICAgICAgICAg
ICAgcmFuZ2UuZW5kID0gYmVmb3JlRmluYWxseTsKQEAgLTM5NTcsNyArMzk2NCw3IEBAIHN0YXRp
YyB2b2lkIHByZXBhcmVKdW1wVGFibGVGb3JTdHJpbmdTd2l0Y2goVW5saW5rZWRTdHJpbmdKdW1w
VGFibGUmIGp1bXBUYWJsZSwKICAgICAgICAgCiAgICAgICAgIEFTU0VSVChub2Rlc1tpXS0+aXNT
dHJpbmcoKSk7CiAgICAgICAgIFN0cmluZ0ltcGwqIGNsYXVzZSA9IHN0YXRpY19jYXN0PFN0cmlu
Z05vZGUqPihub2Rlc1tpXSktPnZhbHVlKCkuaW1wbCgpOwotICAgICAgICBqdW1wVGFibGUub2Zm
c2V0VGFibGUuYWRkKGNsYXVzZSwgbGFiZWxzW2ldLT5iaW5kKHN3aXRjaEFkZHJlc3MsIHN3aXRj
aEFkZHJlc3MgKyAzKSk7CisgICAgICAgIGp1bXBUYWJsZS5vZmZzZXRUYWJsZS5hZGQoY2xhdXNl
LCBVbmxpbmtlZFN0cmluZ0p1bXBUYWJsZTo6T2Zmc2V0TG9jYXRpb24geyBsYWJlbHNbaV0tPmJp
bmQoc3dpdGNoQWRkcmVzcywgc3dpdGNoQWRkcmVzcyArIDMpIH0pOwogICAgIH0KIH0KIApAQCAt
NDQ1OSwzMSArNDQ2NiwzMyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVxdWlyZU9i
amVjdENvZXJjaWJsZShSZWdpc3RlcklEKiB2YWx1ZSwgY29uc3QgU3RyaQogdm9pZCBCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdFlpZWxkUG9pbnQoUmVnaXN0ZXJJRCogYXJndW1lbnQpCiB7CiAgICAg
UmVmUHRyPExhYmVsPiBtZXJnZVBvaW50ID0gbmV3TGFiZWwoKTsKLSAgICBzaXplX3QgeWllbGRQ
b2ludEluZGV4ID0gbV9nZW5lcmF0b3JSZXN1bWVMYWJlbHMuc2l6ZSgpOwotICAgIGVtaXRHZW5l
cmF0b3JTdGF0ZUNoYW5nZSh5aWVsZFBvaW50SW5kZXgpOwotICAgIC8vIEZpcnN0IHlpZWxkIHBv
aW50IGlzIHVzZWQgZm9yIGluaXRpYWwgc2VxdWVuY2UuCi0gICAgdW5zaWduZWQgbGl2ZUNhbGxl
ZUxvY2Fsc0luZGV4ID0geWllbGRQb2ludEluZGV4IC0gMTsKLSAgICBlbWl0U2F2ZShtZXJnZVBv
aW50LmdldCgpLCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpOwotICAgIGVtaXRSZXR1cm4oYXJndW1l
bnQpOwotICAgIGVtaXRSZXN1bWUobWVyZ2VQb2ludC5nZXQoKSwgbGl2ZUNhbGxlZUxvY2Fsc0lu
ZGV4KTsKLX0KKyAgICB1bnNpZ25lZCB5aWVsZFBvaW50SW5kZXggPSBtX3lpZWxkUG9pbnRzKys7
CisgICAgZW1pdEdlbmVyYXRvclN0YXRlQ2hhbmdlKHlpZWxkUG9pbnRJbmRleCArIDEpOworCisg
ICAgLy8gU3BsaXQgdGhlIHRyeSByYW5nZSBoZXJlLgorICAgIFJlZlB0cjxMYWJlbD4gc2F2ZVBv
aW50ID0gZW1pdExhYmVsKG5ld0xhYmVsKCkuZ2V0KCkpOworICAgIGZvciAodW5zaWduZWQgaSA9
IG1fdHJ5Q29udGV4dFN0YWNrLnNpemUoKTsgaS0tOykgeworICAgICAgICBUcnlDb250ZXh0JiBj
b250ZXh0ID0gbV90cnlDb250ZXh0U3RhY2tbaV07CisgICAgICAgIFRyeVJhbmdlIHJhbmdlOwor
ICAgICAgICByYW5nZS5zdGFydCA9IGNvbnRleHQuc3RhcnQ7CisgICAgICAgIHJhbmdlLmVuZCA9
IHNhdmVQb2ludDsKKyAgICAgICAgcmFuZ2UudHJ5RGF0YSA9IGNvbnRleHQudHJ5RGF0YTsKKyAg
ICAgICAgbV90cnlSYW5nZXMuYXBwZW5kKHJhbmdlKTsKKworICAgICAgICAvLyBUcnkgcmFuZ2Ug
d2lsbCBiZSByZXN0YXJlZCBhdCB0aGUgbWVyZ2UgcG9pbnQuCisgICAgICAgIGNvbnRleHQuc3Rh
cnQgPSBtZXJnZVBvaW50OworICAgIH0KKyAgICBWZWN0b3I8VHJ5Q29udGV4dD4gc2F2ZWRUcnlD
b250ZXh0U3RhY2s7CisgICAgbV90cnlDb250ZXh0U3RhY2suc3dhcChzYXZlZFRyeUNvbnRleHRT
dGFjayk7CiAKLXZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRTYXZlKExhYmVsKiBtZXJnZVBv
aW50LCB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpCi17Ci0gICAgc2l6ZV90IGJlZ2lu
ID0gaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpOwotICAgIGVtaXRPcGNvZGUob3Bfc2F2ZSk7Ci0gICAg
aW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fZ2VuZXJhdG9yUmVnaXN0ZXItPmluZGV4KCkpOwotICAg
IGluc3RydWN0aW9ucygpLmFwcGVuZChsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpOwotICAgIGluc3Ry
dWN0aW9ucygpLmFwcGVuZChtZXJnZVBvaW50LT5iaW5kKGJlZ2luLCBpbnN0cnVjdGlvbnMoKS5z
aXplKCkpKTsKLX0KKyAgICBlbWl0T3Bjb2RlKG9wX3lpZWxkKTsKKyAgICBpbnN0cnVjdGlvbnMo
KS5hcHBlbmQoZ2VuZXJhdG9yRnJhbWVSZWdpc3RlcigpLT5pbmRleCgpKTsKKyAgICBpbnN0cnVj
dGlvbnMoKS5hcHBlbmQoeWllbGRQb2ludEluZGV4KTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBl
bmQoYXJndW1lbnQtPmluZGV4KCkpOwogCi12b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVz
dW1lKExhYmVsKiBtZXJnZVBvaW50LCB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpCi17
Ci0gICAgZW1pdEdlbmVyYXRvclN0YXRlTGFiZWwoKTsKLSAgICBlbWl0T3Bjb2RlKG9wX3Jlc3Vt
ZSk7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fZ2VuZXJhdG9yUmVnaXN0ZXItPmluZGV4
KCkpOwotICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpOwot
ICAgIGVtaXRMYWJlbChtZXJnZVBvaW50KTsKKyAgICAvLyBSZXN0b3JlIHRoZSB0cnkgY29udGV4
dHMsIHdoaWNoIHN0YXJ0IG9mZnNldCBpcyB1cGRhdGVkIHRvIHRoZSBtZXJnZSBwb2ludC4KKyAg
ICBtX3RyeUNvbnRleHRTdGFjay5zd2FwKHNhdmVkVHJ5Q29udGV4dFN0YWNrKTsKKyAgICBlbWl0
TGFiZWwobWVyZ2VQb2ludC5nZXQoKSk7CiB9CiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0WWllbGQoUmVnaXN0ZXJJRCogYXJndW1lbnQpCkBAIC00NjQwLDM5ICs0NjQ5LDYg
QEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdlbmVyYXRvclN0YXRlQ2hhbmdlKGludDMy
X3Qgc3RhdGUpCiAgICAgZW1pdFB1dEJ5SWQoZ2VuZXJhdG9yUmVnaXN0ZXIoKSwgcHJvcGVydHlO
YW1lcygpLmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclN0YXRlUHJpdmF0ZU5hbWUoKSwgY29tcGxl
dGVkU3RhdGUpOwogfQogCi12b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2VuZXJhdG9yU3Rh
dGVMYWJlbCgpCi17Ci0gICAgUmVmUHRyPExhYmVsPiBsYWJlbCA9IG5ld0xhYmVsKCk7Ci0gICAg
bV9nZW5lcmF0b3JSZXN1bWVMYWJlbHMuYXBwZW5kKGxhYmVsLmdldCgpKTsKLSAgICBlbWl0TGFi
ZWwobGFiZWwuZ2V0KCkpOwotfQotCi12b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpiZWdpbkdlbmVy
YXRvcihSZWdpc3RlcklEKiBzdGF0ZSkKLXsKLSAgICBiZWdpblN3aXRjaChzdGF0ZSwgU3dpdGNo
SW5mbzo6U3dpdGNoSW1tZWRpYXRlKTsKLX0KLQotdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW5k
R2VuZXJhdG9yKExhYmVsKiBkZWZhdWx0TGFiZWwpCi17Ci0gICAgU3dpdGNoSW5mbyBzd2l0Y2hJ
bmZvID0gbV9zd2l0Y2hDb250ZXh0U3RhY2subGFzdCgpOwotICAgIG1fc3dpdGNoQ29udGV4dFN0
YWNrLnJlbW92ZUxhc3QoKTsKLQotICAgIGluc3RydWN0aW9ucygpW3N3aXRjaEluZm8uYnl0ZWNv
ZGVPZmZzZXQgKyAxXSA9IG1fY29kZUJsb2NrLT5udW1iZXJPZlN3aXRjaEp1bXBUYWJsZXMoKTsK
LSAgICBpbnN0cnVjdGlvbnMoKVtzd2l0Y2hJbmZvLmJ5dGVjb2RlT2Zmc2V0ICsgMl0gPSBkZWZh
dWx0TGFiZWwtPmJpbmQoc3dpdGNoSW5mby5ieXRlY29kZU9mZnNldCwgc3dpdGNoSW5mby5ieXRl
Y29kZU9mZnNldCArIDMpOwotCi0gICAgVW5saW5rZWRTaW1wbGVKdW1wVGFibGUmIGp1bXBUYWJs
ZSA9IG1fY29kZUJsb2NrLT5hZGRTd2l0Y2hKdW1wVGFibGUoKTsKLSAgICBpbnQzMl90IHN3aXRj
aEFkZHJlc3MgPSBzd2l0Y2hJbmZvLmJ5dGVjb2RlT2Zmc2V0OwotICAgIGp1bXBUYWJsZS5taW4g
PSAwOwotICAgIGp1bXBUYWJsZS5icmFuY2hPZmZzZXRzLnJlc2l6ZShtX2dlbmVyYXRvclJlc3Vt
ZUxhYmVscy5zaXplKCkgKyAxKTsKLSAgICBqdW1wVGFibGUuYnJhbmNoT2Zmc2V0cy5maWxsKDAp
OwotICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCBtX2dlbmVyYXRvclJlc3VtZUxhYmVscy5z
aXplKCk7ICsraSkgewotICAgICAgICAvLyBXZSdyZSBlbWl0dGluZyB0aGlzIGFmdGVyIHRoZSBj
bGF1c2UgbGFiZWxzIHNob3VsZCBoYXZlIGJlZW4gZml4ZWQsIHNvCi0gICAgICAgIC8vIHRoZSBs
YWJlbHMgc2hvdWxkIG5vdCBiZSAiZm9yd2FyZCIgcmVmZXJlbmNlcwotICAgICAgICBBU1NFUlQo
IW1fZ2VuZXJhdG9yUmVzdW1lTGFiZWxzW2ldLT5pc0ZvcndhcmQoKSk7Ci0gICAgICAgIGp1bXBU
YWJsZS5hZGQoaSwgbV9nZW5lcmF0b3JSZXN1bWVMYWJlbHNbaV0tPmJpbmQoc3dpdGNoQWRkcmVz
cywgc3dpdGNoQWRkcmVzcyArIDMpKTsKLSAgICB9Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIEpTQwog
CiBuYW1lc3BhY2UgV1RGIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAppbmRleCBmZmY3MTNhYTI1ZTcxZGYyY2Y0Y2I1
MzA4ZTYxNjlhNTNhZjY1MWJlLi5iMWI5NDNkYTVlMDY3ZWNkZDQ5Njc0ODExNDVjZTlkYjAwNzVh
MmFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5oCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiQ29kZUJsb2Nr
LmgiCiAjaW5jbHVkZSAiSW5zdHJ1Y3Rpb24uaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgor
I2luY2x1ZGUgIkpTR2VuZXJhdG9yRnVuY3Rpb24uaCIKICNpbmNsdWRlICJMYWJlbC5oIgogI2lu
Y2x1ZGUgIkxhYmVsU2NvcGUuaCIKICNpbmNsdWRlICJOb2Rlcy5oIgpAQCAtNjkwLDE4ICs2OTEs
MTUgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW5kU3dpdGNoKHVpbnQzMl90IGNs
YXVzZUNvdW50LCBSZWZQdHI8TGFiZWw+KiwgRXhwcmVzc2lvbk5vZGUqKiwgTGFiZWwqIGRlZmF1
bHRMYWJlbCwgaW50MzJfdCBtaW4sIGludDMyX3QgcmFuZ2UpOwogCiAgICAgICAgIHZvaWQgZW1p
dFlpZWxkUG9pbnQoUmVnaXN0ZXJJRCopOwotICAgICAgICB2b2lkIGVtaXRTYXZlKExhYmVsKiBt
ZXJnZVBvaW50LCB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpOwotICAgICAgICB2b2lk
IGVtaXRSZXN1bWUoTGFiZWwqIG1lcmdlUG9pbnQsIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJ
bmRleCk7CiAKICAgICAgICAgdm9pZCBlbWl0R2VuZXJhdG9yU3RhdGVMYWJlbCgpOwogICAgICAg
ICB2b2lkIGVtaXRHZW5lcmF0b3JTdGF0ZUNoYW5nZShpbnQzMl90IHN0YXRlKTsKICAgICAgICAg
UmVnaXN0ZXJJRCogZW1pdFlpZWxkKFJlZ2lzdGVySUQqIGFyZ3VtZW50KTsKICAgICAgICAgUmVn
aXN0ZXJJRCogZW1pdERlbGVnYXRlWWllbGQoUmVnaXN0ZXJJRCogYXJndW1lbnQsIFRocm93YWJs
ZUV4cHJlc3Npb25EYXRhKik7Ci0gICAgICAgIHZvaWQgYmVnaW5HZW5lcmF0b3IoUmVnaXN0ZXJJ
RCopOwotICAgICAgICB2b2lkIGVuZEdlbmVyYXRvcihMYWJlbCogZGVmYXVsdExhYmVsKTsKLSAg
ICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9yU3RhdGVSZWdpc3RlcigpIHsgcmV0dXJuICZtX3Bh
cmFtZXRlcnNbMl07IH0KLSAgICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9yVmFsdWVSZWdpc3Rl
cigpIHsgcmV0dXJuICZtX3BhcmFtZXRlcnNbM107IH0KLSAgICAgICAgUmVnaXN0ZXJJRCogZ2Vu
ZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKCkgeyByZXR1cm4gJm1fcGFyYW1ldGVyc1s0XTsgfQor
ICAgICAgICBSZWdpc3RlcklEKiBnZW5lcmF0b3JTdGF0ZVJlZ2lzdGVyKCkgeyByZXR1cm4gJm1f
cGFyYW1ldGVyc1tzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5l
cmF0b3JBcmd1bWVudDo6U3RhdGUpXTsgfQorICAgICAgICBSZWdpc3RlcklEKiBnZW5lcmF0b3JW
YWx1ZVJlZ2lzdGVyKCkgeyByZXR1cm4gJm1fcGFyYW1ldGVyc1tzdGF0aWNfY2FzdDxpbnQzMl90
PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JBcmd1bWVudDo6VmFsdWUpXTsgfQorICAg
ICAgICBSZWdpc3RlcklEKiBnZW5lcmF0b3JSZXN1bWVNb2RlUmVnaXN0ZXIoKSB7IHJldHVybiAm
bV9wYXJhbWV0ZXJzW3N0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yRnVuY3Rpb246Okdl
bmVyYXRvckFyZ3VtZW50OjpSZXN1bWVNb2RlKV07IH0KKyAgICAgICAgUmVnaXN0ZXJJRCogZ2Vu
ZXJhdG9yRnJhbWVSZWdpc3RlcigpIHsgcmV0dXJuICZtX3BhcmFtZXRlcnNbc3RhdGljX2Nhc3Q8
aW50MzJfdD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6R2VuZXJhdG9yQXJndW1lbnQ6OkZyYW1lKV07
IH0KIAogICAgICAgICBDb2RlVHlwZSBjb2RlVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZVR5
cGU7IH0KIApAQCAtOTI5LDcgKzkyNywxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgVmVj
dG9yPFN3aXRjaEluZm8+IG1fc3dpdGNoQ29udGV4dFN0YWNrOwogICAgICAgICBWZWN0b3I8UmVm
UHRyPEZvckluQ29udGV4dD4+IG1fZm9ySW5Db250ZXh0U3RhY2s7CiAgICAgICAgIFZlY3RvcjxU
cnlDb250ZXh0PiBtX3RyeUNvbnRleHRTdGFjazsKLSAgICAgICAgVmVjdG9yPFJlZlB0cjxMYWJl
bD4+IG1fZ2VuZXJhdG9yUmVzdW1lTGFiZWxzOworICAgICAgICB1bnNpZ25lZCBtX3lpZWxkUG9p
bnRzIHsgMCB9OworCisgICAgICAgIFN0cm9uZzxTeW1ib2xUYWJsZT4gbV9nZW5lcmF0b3JGcmFt
ZVN5bWJvbFRhYmxlOworICAgICAgICBpbnQgbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlSW5k
ZXggeyAwIH07CisKICAgICAgICAgZW51bSBGdW5jdGlvblZhcmlhYmxlVHlwZSA6IHVpbnQ4X3Qg
eyBOb3JtYWxGdW5jdGlvblZhcmlhYmxlLCBHbG9iYWxGdW5jdGlvblZhcmlhYmxlIH07CiAgICAg
ICAgIFZlY3RvcjxzdGQ6OnBhaXI8RnVuY3Rpb25NZXRhZGF0YU5vZGUqLCBGdW5jdGlvblZhcmlh
YmxlVHlwZT4+IG1fZnVuY3Rpb25zVG9Jbml0aWFsaXplOwogICAgICAgICBib29sIG1fbmVlZFRv
SW5pdGlhbGl6ZUFyZ3VtZW50cyB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKaW5kZXggZDBjOTllZmY1ZTc0ZjAy
YzM4M2NjNTExZGUxN2I4ZDJiNmU3N2U0Zi4uYmNkYWEyNzJjYjk1MDg1ODYwOGNhMmE3NTdmN2M0
NjRlNDc2ZGZmNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9Ob2Rlc0NvZGVnZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvTm9kZXNDb2RlZ2VuLmNwcApAQCAtMzM3Nyw3ICszMzc3LDYgQEAgdm9pZCBGdW5jdGlvbk5v
ZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklE
KikKICAgICAgICAgUmVmUHRyPExhYmVsPiBkb25lID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7CiAg
ICAgICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoZG9uZS5nZXQoKSk7CiAgICAgICAgIGdlbmVyYXRv
ci5lbWl0UmV0dXJuKGdlbmVyYXRvci5lbWl0TG9hZChudWxscHRyLCBqc1VuZGVmaW5lZCgpKSk7
Ci0gICAgICAgIGdlbmVyYXRvci5lbmRHZW5lcmF0b3IoZG9uZS5nZXQoKSk7CiAgICAgICAgIGJy
ZWFrOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
cGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5j
cHAKaW5kZXggY2UyMGQyODNhZDcwYjI3NmJlZWM5ZTBmNmM5Zjg2MGU4YTNkMDgyNS4uMDBjZDY0
MWU3N2FiMGIxOTFlM2M4NjQ3YmYzODcxYTIyYTkwNjBmZiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCkBAIC00Miw4ICs0Miw4IEBACiAjaW5jbHVkZSAi
RGlyZWN0QXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiRlRMRm9yT1NSRW50cnlKSVRDb2RlLmgiCiAj
aW5jbHVkZSAiRlRMT1NSRW50cnkuaCIKLSNpbmNsdWRlICJIb3N0Q2FsbFJldHVyblZhbHVlLmgi
CiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCisjaW5jbHVkZSAiSG9zdENhbGxSZXR1cm5WYWx1
ZS5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSklULmgiCiAjaW5jbHVk
ZSAiSklURXhjZXB0aW9ucy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
dGVycHJldGVyL0ludGVycHJldGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9JbnRlcnByZXRlci5jcHAKaW5kZXggMWFhZjE3NzIzZmUxZTg4MjBmNDc3YWIwODU0ODRi
NWY1ZjI3Njc5Ny4uMmYwZTZmMmZjN2U5OTY0M2JjYTJhOWY0NDgwNDhlZDg2NmMyOGZhYiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3Bw
CkBAIC02MDksNyArNjA5LDcgQEAgSlNTdHJpbmcqIEludGVycHJldGVyOjpzdGFja1RyYWNlQXNT
dHJpbmcoVk0mIHZtLCBjb25zdCBWZWN0b3I8U3RhY2tGcmFtZT4mIHN0YWMKICAgICByZXR1cm4g
anNTdHJpbmcoJnZtLCBidWlsZGVyLnRvU3RyaW5nKCkpOwogfQogCi1BTFdBWVNfSU5MSU5FIHN0
YXRpYyBIYW5kbGVySW5mbyogZmluZEV4Y2VwdGlvbkhhbmRsZXIoU3RhY2tWaXNpdG9yJiB2aXNp
dG9yLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZUJsb2NrOjpSZXF1aXJlZEhhbmRsZXIgcmVx
dWlyZWRIYW5kbGVyKQorQUxXQVlTX0lOTElORSBzdGF0aWMgSGFuZGxlckluZm8qIGZpbmRFeGNl
cHRpb25IYW5kbGVyKFN0YWNrVmlzaXRvciYgdmlzaXRvciwgQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IFJlcXVpcmVkSGFuZGxlciByZXF1aXJlZEhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKGNvZGVCbG9j
ayk7CiAjaWYgRU5BQkxFKERGR19KSVQpCkBAIC02NDMsNyArNjQzLDcgQEAgY2xhc3MgR2V0Q2F0
Y2hIYW5kbGVyRnVuY3RvciB7CiAgICAgICAgIGlmICghY29kZUJsb2NrKQogICAgICAgICAgICAg
cmV0dXJuIFN0YWNrVmlzaXRvcjo6Q29udGludWU7CiAKLSAgICAgICAgbV9oYW5kbGVyID0gZmlu
ZEV4Y2VwdGlvbkhhbmRsZXIodmlzaXRvciwgY29kZUJsb2NrLCBDb2RlQmxvY2s6OlJlcXVpcmVk
SGFuZGxlcjo6Q2F0Y2hIYW5kbGVyKTsKKyAgICAgICAgbV9oYW5kbGVyID0gZmluZEV4Y2VwdGlv
bkhhbmRsZXIodmlzaXRvciwgY29kZUJsb2NrLCBSZXF1aXJlZEhhbmRsZXI6OkNhdGNoSGFuZGxl
cik7CiAgICAgICAgIGlmIChtX2hhbmRsZXIpCiAgICAgICAgICAgICByZXR1cm4gU3RhY2tWaXNp
dG9yOjpEb25lOwogCkBAIC02ODUsNyArNjg1LDcgQEAgY2xhc3MgVW53aW5kRnVuY3RvciB7CiAg
ICAgICAgIG1faGFuZGxlciA9IG51bGxwdHI7CiAgICAgICAgIGlmICghbV9pc1Rlcm1pbmF0aW9u
KSB7CiAgICAgICAgICAgICBpZiAobV9jb2RlQmxvY2sgJiYgIWlzV2ViQXNzZW1ibHlFeGVjdXRh
YmxlKG1fY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSkpCi0gICAgICAgICAgICAgICAgbV9o
YW5kbGVyID0gZmluZEV4Y2VwdGlvbkhhbmRsZXIodmlzaXRvciwgbV9jb2RlQmxvY2ssIENvZGVC
bG9jazo6UmVxdWlyZWRIYW5kbGVyOjpBbnlIYW5kbGVyKTsKKyAgICAgICAgICAgICAgICBtX2hh
bmRsZXIgPSBmaW5kRXhjZXB0aW9uSGFuZGxlcih2aXNpdG9yLCBtX2NvZGVCbG9jaywgUmVxdWly
ZWRIYW5kbGVyOjpBbnlIYW5kbGVyKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChtX2hhbmRs
ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJw
cmV0ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5o
CmluZGV4IDc5YzdlNTMwMWJhODM5NmJjMDJkYzI0NWUwODFjN2Y3YTM3MzhlNmMuLjNkZjAwNjc3
NmY2MWE0YjViNGI3YzI0OGU3NWNhYjFhOGMzMDkzMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCkBAIC02NSw2ICs2NSw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgIHN0cnVjdCBIYW5kbGVySW5mbzsKICAgICBzdHJ1Y3QgSW5zdHJ1Y3Rp
b247CiAgICAgc3RydWN0IFByb3RvQ2FsbEZyYW1lOworICAgIHN0cnVjdCBVbmxpbmtlZEluc3Ry
dWN0aW9uOwogCiAgICAgZW51bSBVbndpbmRTdGFydCB7IFVud2luZEZyb21DdXJyZW50RnJhbWUs
IFVud2luZEZyb21DYWxsZXJGcmFtZSB9OwogCkBAIC0yMDcsNyArMjA4LDEwIEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIG9wY29kZTsKICNlbmRpZgogICAgICAgICB9Ci0g
ICAgICAgIAorCisgICAgICAgIE9wY29kZUlEIGdldE9wY29kZUlEKGNvbnN0IEluc3RydWN0aW9u
Jik7CisgICAgICAgIE9wY29kZUlEIGdldE9wY29kZUlEKGNvbnN0IFVubGlua2VkSW5zdHJ1Y3Rp
b24mKTsKKwogICAgICAgICBib29sIGlzT3Bjb2RlKE9wY29kZSk7CiAKICAgICAgICAgSlNWYWx1
ZSBleGVjdXRlKFByb2dyYW1FeGVjdXRhYmxlKiwgQ2FsbEZyYW1lKiwgSlNPYmplY3QqIHRoaXNP
YmopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVy
cHJldGVySW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVy
cHJldGVySW5saW5lcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE3N2MxNTQ3OTBhNjdmYjQxY2M5ZTJkMDlhMWRi
ZGZkZGZhNTliZGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50
ZXJwcmV0ZXIvSW50ZXJwcmV0ZXJJbmxpbmVzLmgKQEAgLTAsMCArMSw0NSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNiBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+Cisg
KiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2luY2x1ZGUgIkluc3RydWN0aW9uLmgiCisjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKKyNpbmNs
dWRlICJVbmxpbmtlZENvZGVCbG9jay5oIgorCituYW1lc3BhY2UgSlNDIHsKKworaW5saW5lIE9w
Y29kZUlEIEludGVycHJldGVyOjpnZXRPcGNvZGVJRChjb25zdCBJbnN0cnVjdGlvbiYgaW5zdHJ1
Y3Rpb24pCit7CisgICAgcmV0dXJuIGdldE9wY29kZUlEKGluc3RydWN0aW9uLnUub3Bjb2RlKTsK
K30KKworaW5saW5lIE9wY29kZUlEIEludGVycHJldGVyOjpnZXRPcGNvZGVJRChjb25zdCBVbmxp
bmtlZEluc3RydWN0aW9uJiBpbnN0cnVjdGlvbikKK3sKKyAgICByZXR1cm4gaW5zdHJ1Y3Rpb24u
dS5vcGNvZGU7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQu
Y3BwCmluZGV4IGIwMGRmYWM4YzE1YzU0N2QyN2ZjNjY3ZjVjNDU5MGVkMzk5ZGVlNDAuLjEyNDA1
ZjdlNTA0YWIzODkzZGQ5N2Q3YTkyOTEzYjA5NWExMTU5MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVC5jcHAKQEAgLTIzNSw4ICsyMzUsNiBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWlu
UGFzcygpCiAgICAgICAgIERFRklORV9PUChvcF9nZXRfcmVzdF9sZW5ndGgpCiAgICAgICAgIERF
RklORV9PUChvcF9jaGVja190ZHopCiAgICAgICAgIERFRklORV9PUChvcF9hc3NlcnQpCi0gICAg
ICAgIERFRklORV9PUChvcF9zYXZlKQotICAgICAgICBERUZJTkVfT1Aob3BfcmVzdW1lKQogICAg
ICAgICBERUZJTkVfT1Aob3BfZGVidWcpCiAgICAgICAgIERFRklORV9PUChvcF9kZWxfYnlfaWQp
CiAgICAgICAgIERFRklORV9PUChvcF9kZWxfYnlfdmFsKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgK
aW5kZXggYmI5N2RjMzViZGZjMDMzOTlhYTA1MTNhOWNhNzM1NWQwODMxYzYwZC4uNTFmY2Y2MGI5
OWQ0MGIwZTUzZGJjZDIyM2M1NjkyMDI1ZjE0ZWNmMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5o
CkBAIC00OTcsOCArNDk3LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdF9v
cF9nZXRfcmVzdF9sZW5ndGgoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2No
ZWNrX3RkeihJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfYXNzZXJ0KEluc3Ry
dWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9zYXZlKEluc3RydWN0aW9uKik7Ci0gICAg
ICAgIHZvaWQgZW1pdF9vcF9yZXN1bWUoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0
X29wX2RlYnVnKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9kZWxfYnlfaWQo
SW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2RlbF9ieV92YWwoSW5zdHJ1Y3Rp
b24qKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCmluZGV4IDdmN2M3
NDUzYmQzZDJkNTBlMTgwMTgzZjI5NzMxMTVmMTE5ZDg1MmYuLjJkYmU4NmM2MjRiYzg3ZWJmNzBi
ODAxZTBhMmNjY2VmNjUxNWJhMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3Bjb2Rlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNv
ZGVzLmNwcApAQCAtMTQ5MiwxOCArMTQ5Miw2IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9yZXN0
X2xlbmd0aChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogI2VuZGlmCiB9CiAKLXZv
aWQgSklUOjplbWl0X29wX3NhdmUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKLXsK
LSAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlv
biwgc2xvd19wYXRoX3NhdmUpOwotICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7Ci19Ci0KLXZvaWQg
SklUOjplbWl0X29wX3Jlc3VtZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQotewot
ICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9u
LCBzbG93X3BhdGhfcmVzdW1lKTsKLSAgICBzbG93UGF0aENhbGwuY2FsbCgpOwotfQotCiB9IC8v
IG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEVOQUJMRShKSVQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KaW5kZXggMTQ5MThi
NjU1ZDVjZmEyMmI4NjE1OGViMmVlYWFmMDg3NDk2NTZhNy4uYzlmOTY4Nzk1OGQwNmQzMDYwY2Y2
OWZlMzc4OWQxYmQwYmY4Yzc5YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQpAQCAtMTcwOSwxNiArMTcwOSw4IEBAIF9sbGlu
dF9vcF9hc3NlcnQ6CiAgICAgZGlzcGF0Y2goMykKIAogCi1fbGxpbnRfb3Bfc2F2ZToKLSAgICB0
cmFjZUV4ZWN1dGlvbigpCi0gICAgY2FsbE9wY29kZVNsb3dQYXRoKF9zbG93X3BhdGhfc2F2ZSkK
LSAgICBkaXNwYXRjaCg0KQotCi0KLV9sbGludF9vcF9yZXN1bWU6Ci0gICAgdHJhY2VFeGVjdXRp
b24oKQotICAgIGNhbGxPcGNvZGVTbG93UGF0aChfc2xvd19wYXRoX3Jlc3VtZSkKLSAgICBkaXNw
YXRjaCgzKQorX2xsaW50X29wX3lpZWxkOgorICAgIG5vdFN1cHBvcnRlZCgpCiAKIAogX2xsaW50
X29wX2NyZWF0ZV9sZXhpY2FsX2Vudmlyb25tZW50OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9QYXJzZXIuY3BwCmluZGV4IGViZWE5OGU0ZWUxM2ZhMTJiZTA5NmJhOTJmNGQ0MTllMzRjZWQx
NzAuLjI2MTc0NWExOTAzMTdkZTc1OTEyZTNhOTIzZmE5ZjI4ODc0ODYzZDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKQEAgLTI2MCw3ICsyNjAsNyBAQCBTdHJpbmcg
UGFyc2VyPExleGVyVHlwZT46OnBhcnNlSW5uZXIoY29uc3QgSWRlbnRpZmllciYgY2FsbGVlTmFt
ZSwgU291cmNlUGFyc2VNbwogICAgIGlmIChtX2xleGVyLT5pc1JlcGFyc2luZ0Z1bmN0aW9uKCkp
IHsKICAgICAgICAgUGFyc2VyRnVuY3Rpb25JbmZvPEFTVEJ1aWxkZXI+IGZ1bmN0aW9uSW5mbzsK
ICAgICAgICAgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckJvZHlN
b2RlKQotICAgICAgICAgICAgbV9wYXJhbWV0ZXJzID0gY3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVy
cyhjb250ZXh0KTsKKyAgICAgICAgICAgIG1fcGFyYW1ldGVycyA9IGNyZWF0ZUdlbmVyYXRvclBh
cmFtZXRlcnMoY29udGV4dCwgZnVuY3Rpb25JbmZvLnBhcmFtZXRlckNvdW50KTsKICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgbV9wYXJhbWV0ZXJzID0gcGFyc2VGdW5jdGlvblBhcmFtZXRlcnMo
Y29udGV4dCwgcGFyc2VNb2RlLCBmdW5jdGlvbkluZm8pOwogCkBAIC01MTIsMTAgKzUxMiw5IEBA
IHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVNvdXJjZUVsZW1lbnRzIFBhcnNlcjxM
ZXhlclR5cGU+OjpwYXJzZUdlbmVyYXRvCiAKICAgICBQYXJzZXJGdW5jdGlvbkluZm88VHJlZUJ1
aWxkZXI+IGluZm87CiAgICAgaW5mby5uYW1lID0gJm1fdm0tPnByb3BlcnR5TmFtZXMtPm51bGxJ
ZGVudGlmaWVyOwotICAgIGNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMoY29udGV4dCk7CisgICAg
Y3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhjb250ZXh0LCBpbmZvLnBhcmFtZXRlckNvdW50KTsK
ICAgICBpbmZvLnN0YXJ0T2Zmc2V0ID0gcGFyYW1ldGVyc1N0YXJ0OwogICAgIGluZm8uc3RhcnRM
aW5lID0gdG9rZW5MaW5lKCk7Ci0gICAgaW5mby5wYXJhbWV0ZXJDb3VudCA9IDQ7IC8vIGdlbmVy
YXRvciwgc3RhdGUsIHZhbHVlLCByZXN1bWUgbW9kZQogCiAgICAgewogICAgICAgICBBdXRvUG9w
U2NvcGVSZWYgZ2VuZXJhdG9yQm9keVNjb3BlKHRoaXMsIHB1c2hTY29wZSgpKTsKQEAgLTE5MDMs
MzIgKzE5MDIsMzAgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4gdGVtcGxhdGUgPGNs
YXNzIFRyZWVCdWlsZGVyLCBjbGFzcyBGdW5jdGlvbkluZm9UeXAKIH0KIAogdGVtcGxhdGUgPHR5
cGVuYW1lIExleGVyVHlwZT4KLXRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gdHlwZW5hbWUg
VHJlZUJ1aWxkZXI6OkZvcm1hbFBhcmFtZXRlckxpc3QgUGFyc2VyPExleGVyVHlwZT46OmNyZWF0
ZUdlbmVyYXRvclBhcmFtZXRlcnMoVHJlZUJ1aWxkZXImIGNvbnRleHQpCit0ZW1wbGF0ZSA8Y2xh
c3MgVHJlZUJ1aWxkZXI+IHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpGb3JtYWxQYXJhbWV0ZXJMaXN0
IFBhcnNlcjxMZXhlclR5cGU+OjpjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKFRyZWVCdWlsZGVy
JiBjb250ZXh0LCB1bnNpZ25lZCYgcGFyYW1ldGVyQ291bnQpCiB7CiAgICAgYXV0byBwYXJhbWV0
ZXJzID0gY29udGV4dC5jcmVhdGVGb3JtYWxQYXJhbWV0ZXJMaXN0KCk7CiAKICAgICBKU1Rva2Vu
TG9jYXRpb24gbG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKICAgICBKU1RleHRQb3NpdGlvbiBw
b3NpdGlvbiA9IHRva2VuU3RhcnRQb3NpdGlvbigpOwogCi0gICAgLy8gQGdlbmVyYXRvcgotICAg
IGRlY2xhcmVQYXJhbWV0ZXIoJm1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdl
bmVyYXRvclByaXZhdGVOYW1lKCkpOwotICAgIGF1dG8gZ2VuZXJhdG9yID0gY29udGV4dC5jcmVh
dGVCaW5kaW5nTG9jYXRpb24obG9jYXRpb24sIG1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5O
YW1lcygpLmdlbmVyYXRvclByaXZhdGVOYW1lKCksIHBvc2l0aW9uLCBwb3NpdGlvbiwgQXNzaWdu
bWVudENvbnRleHQ6OkRlY2xhcmF0aW9uU3RhdGVtZW50KTsKLSAgICBjb250ZXh0LmFwcGVuZFBh
cmFtZXRlcihwYXJhbWV0ZXJzLCBnZW5lcmF0b3IsIDApOworICAgIGF1dG8gYWRkUGFyYW1ldGVy
ID0gWyZdKGNvbnN0IElkZW50aWZpZXImIG5hbWUpIHsKKyAgICAgICAgZGVjbGFyZVBhcmFtZXRl
cigmbmFtZSk7CisgICAgICAgIGF1dG8gYmluZGluZyA9IGNvbnRleHQuY3JlYXRlQmluZGluZ0xv
Y2F0aW9uKGxvY2F0aW9uLCBuYW1lLCBwb3NpdGlvbiwgcG9zaXRpb24sIEFzc2lnbm1lbnRDb250
ZXh0OjpEZWNsYXJhdGlvblN0YXRlbWVudCk7CisgICAgICAgIGNvbnRleHQuYXBwZW5kUGFyYW1l
dGVyKHBhcmFtZXRlcnMsIGJpbmRpbmcsIDApOworICAgICAgICArK3BhcmFtZXRlckNvdW50Owor
ICAgIH07CiAKKyAgICAvLyBAZ2VuZXJhdG9yCisgICAgYWRkUGFyYW1ldGVyKG1fdm0tPnByb3Bl
cnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclByaXZhdGVOYW1lKCkpOwogICAgIC8v
IEBnZW5lcmF0b3JTdGF0ZQotICAgIGRlY2xhcmVQYXJhbWV0ZXIoJm1fdm0tPnByb3BlcnR5TmFt
ZXMtPmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclN0YXRlUHJpdmF0ZU5hbWUoKSk7Ci0gICAgYXV0
byBnZW5lcmF0b3JTdGF0ZSA9IGNvbnRleHQuY3JlYXRlQmluZGluZ0xvY2F0aW9uKGxvY2F0aW9u
LCBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JTdGF0ZVByaXZh
dGVOYW1lKCksIHBvc2l0aW9uLCBwb3NpdGlvbiwgQXNzaWdubWVudENvbnRleHQ6OkRlY2xhcmF0
aW9uU3RhdGVtZW50KTsKLSAgICBjb250ZXh0LmFwcGVuZFBhcmFtZXRlcihwYXJhbWV0ZXJzLCBn
ZW5lcmF0b3JTdGF0ZSwgMCk7Ci0KKyAgICBhZGRQYXJhbWV0ZXIobV92bS0+cHJvcGVydHlOYW1l
cy0+YnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yU3RhdGVQcml2YXRlTmFtZSgpKTsKICAgICAvLyBA
Z2VuZXJhdG9yVmFsdWUKLSAgICBkZWNsYXJlUGFyYW1ldGVyKCZtX3ZtLT5wcm9wZXJ0eU5hbWVz
LT5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JWYWx1ZVByaXZhdGVOYW1lKCkpOwotICAgIGF1dG8g
Z2VuZXJhdG9yVmFsdWUgPSBjb250ZXh0LmNyZWF0ZUJpbmRpbmdMb2NhdGlvbihsb2NhdGlvbiwg
bV92bS0+cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yVmFsdWVQcml2YXRl
TmFtZSgpLCBwb3NpdGlvbiwgcG9zaXRpb24sIEFzc2lnbm1lbnRDb250ZXh0OjpEZWNsYXJhdGlv
blN0YXRlbWVudCk7Ci0gICAgY29udGV4dC5hcHBlbmRQYXJhbWV0ZXIocGFyYW1ldGVycywgZ2Vu
ZXJhdG9yVmFsdWUsIDApOwotCisgICAgYWRkUGFyYW1ldGVyKG1fdm0tPnByb3BlcnR5TmFtZXMt
PmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclZhbHVlUHJpdmF0ZU5hbWUoKSk7CiAgICAgLy8gQGdl
bmVyYXRvclJlc3VtZU1vZGUKLSAgICBkZWNsYXJlUGFyYW1ldGVyKCZtX3ZtLT5wcm9wZXJ0eU5h
bWVzLT5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JSZXN1bWVNb2RlUHJpdmF0ZU5hbWUoKSk7Ci0g
ICAgYXV0byBnZW5lcmF0b3JSZXN1bWVNb2RlID0gY29udGV4dC5jcmVhdGVCaW5kaW5nTG9jYXRp
b24obG9jYXRpb24sIG1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRv
clJlc3VtZU1vZGVQcml2YXRlTmFtZSgpLCBwb3NpdGlvbiwgcG9zaXRpb24sIEFzc2lnbm1lbnRD
b250ZXh0OjpEZWNsYXJhdGlvblN0YXRlbWVudCk7Ci0gICAgY29udGV4dC5hcHBlbmRQYXJhbWV0
ZXIocGFyYW1ldGVycywgZ2VuZXJhdG9yUmVzdW1lTW9kZSwgMCk7CisgICAgYWRkUGFyYW1ldGVy
KG1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclJlc3VtZU1vZGVQ
cml2YXRlTmFtZSgpKTsKKyAgICAvLyBAZ2VuZXJhdG9yRnJhbWUKKyAgICBhZGRQYXJhbWV0ZXIo
bV92bS0+cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yRnJhbWVQcml2YXRl
TmFtZSgpKTsKIAogICAgIHJldHVybiBwYXJhbWV0ZXJzOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvUGFyc2VyLmgKaW5kZXggMzkyMDQwNGU4YmE1MjBiMjJlNGVjZDI3NzgxYzEzZGY4MTkw
NzQzMy4uNTBlMTM5MWI1ZmQwM2RkNWU3NzhiOGZkYjU5MjNhYTc5OGFlZDEyMyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCkBAIC0xNDI2LDcgKzE0MjYsNyBAQCBjbGFzcyBQ
YXJzZXIgewogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc0Fycm93RnVuY3Rpb25QYXJhbWV0ZXJz
KCk7CiAgICAgCiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyLCBjbGFzcyBGdW5jdGlv
bkluZm9UeXBlPiBORVZFUl9JTkxJTkUgdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkZvcm1hbFBhcmFt
ZXRlckxpc3QgcGFyc2VGdW5jdGlvblBhcmFtZXRlcnMoVHJlZUJ1aWxkZXImLCBTb3VyY2VQYXJz
ZU1vZGUsIEZ1bmN0aW9uSW5mb1R5cGUmKTsKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxk
ZXI+IE5FVkVSX0lOTElORSB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6Rm9ybWFsUGFyYW1ldGVyTGlz
dCBjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKFRyZWVCdWlsZGVyJik7CisgICAgdGVtcGxhdGUg
PGNsYXNzIFRyZWVCdWlsZGVyPiBORVZFUl9JTkxJTkUgdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkZv
cm1hbFBhcmFtZXRlckxpc3QgY3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhUcmVlQnVpbGRlciYs
IHVuc2lnbmVkJiBwYXJhbWV0ZXJDb3VudCk7CiAKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1
aWxkZXI+IE5FVkVSX0lOTElORSBUcmVlQ2xhc3NFeHByZXNzaW9uIHBhcnNlQ2xhc3MoVHJlZUJ1
aWxkZXImLCBGdW5jdGlvbk5hbWVSZXF1aXJlbWVudHMsIFBhcnNlckNsYXNzSW5mbzxUcmVlQnVp
bGRlcj4mKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
bW9uU2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNs
b3dQYXRocy5jcHAKaW5kZXggYTliNzU1ZTZjOWFlOWI5OGE2MjI5MzU0NmVlNTdjYTgxZWM5YzMy
Yy4uMmU4NjhkY2IyZDcxZmU3Y2YyOGU5NTBmMDVjNzU4YmE4MDVjYzMyNiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCkBAIC0zNyw3
ICszNyw2IEBACiAjaW5jbHVkZSAiRXJyb3IuaCIKICNpbmNsdWRlICJFcnJvckhhbmRsaW5nU2Nv
cGUuaCIKICNpbmNsdWRlICJFeGNlcHRpb25GdXp6LmgiCi0jaW5jbHVkZSAiR2VuZXJhdG9yRnJh
bWUuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJIb3N0Q2FsbFJldHVy
blZhbHVlLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKQEAgLTc1MywzOCArNzUyLDYgQEAg
U0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2Fzc2VydCkKICAgICBFTkQoKTsKIH0KIAotU0xPV19Q
QVRIX0RFQ0woc2xvd19wYXRoX3NhdmUpCi17Ci0gICAgLy8gT25seSBzYXZlIHZhcmlhYmxlcyBh
bmQgdGVtcG9yYXJ5IHJlZ2lzdGVycy4gVGhlIHNjb3BlIHJlZ2lzdGVycyBhcmUgaW5jbHVkZWQg
aW4gdGhlbS4KLSAgICAvLyBCdXQgcGFyYW1ldGVycyBhcmUgbm90IGluY2x1ZGVkLiBCZWNhdXNl
IHRoZSBnZW5lcmF0b3IgaW1wbGVtZW50YXRpb24gcmVwbGFjZXMgdGhlIHZhbHVlcyBvZiBwYXJh
bWV0ZXJzIG9uIGVhY2ggZ2VuZXJhdG9yLm5leHQoKSBjYWxsLgotICAgIEJFR0lOKCk7Ci0gICAg
SlNWYWx1ZSBnZW5lcmF0b3IgPSBPUCgxKS5qc1ZhbHVlKCk7Ci0gICAgR2VuZXJhdG9yRnJhbWUq
IGZyYW1lID0gbnVsbHB0cjsKLSAgICBKU1ZhbHVlIHZhbHVlID0gZ2VuZXJhdG9yLmdldChleGVj
LCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yRnJhbWVQcml2
YXRlTmFtZSgpKTsKLSAgICBpZiAoIXZhbHVlLmlzTnVsbCgpKQotICAgICAgICBmcmFtZSA9IGpz
Q2FzdDxHZW5lcmF0b3JGcmFtZSo+KHZhbHVlKTsKLSAgICBlbHNlIHsKLSAgICAgICAgLy8gRklY
TUU6IE9uY2UgSlNHZW5lcmF0b3Igc3BlY2lhbGl6ZWQgb2JqZWN0IGlzIGludHJvZHVjZWQsIHRo
aXMgR2VuZXJhdG9yRnJhbWUgc2hvdWxkIGJlIGVtYmVkZWQgaW50byBpdCB0byBhdm9pZCBhbGxv
Y2F0aW9ucy4KLSAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1MTU0NQotICAgICAgICBmcmFtZSA9IEdlbmVyYXRvckZyYW1lOjpjcmVhdGUoZXhlYy0+
dm0oKSwgIGV4ZWMtPmNvZGVCbG9jaygpLT5udW1DYWxsZWVMb2NhbHMoKSk7Ci0gICAgICAgIFB1
dFByb3BlcnR5U2xvdCBzbG90KGdlbmVyYXRvciwgdHJ1ZSwgUHV0UHJvcGVydHlTbG90OjpQdXRC
eUlkKTsKLSAgICAgICAgYXNPYmplY3QoZ2VuZXJhdG9yKS0+bWV0aG9kVGFibGUoZXhlYy0+dm0o
KSktPnB1dChhc09iamVjdChnZW5lcmF0b3IpLCBleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCku
YnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yRnJhbWVQcml2YXRlTmFtZSgpLCBmcmFtZSwgc2xvdCk7
Ci0gICAgfQotICAgIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9IHBjWzJdLnUudW5z
aWduZWRWYWx1ZTsKLSAgICBmcmFtZS0+c2F2ZShleGVjLCBleGVjLT5jb2RlQmxvY2soKS0+bGl2
ZUNhbGxlZUxvY2Fsc0F0WWllbGQobGl2ZUNhbGxlZUxvY2Fsc0luZGV4KSk7Ci0gICAgRU5EKCk7
Ci19Ci0KLVNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9yZXN1bWUpCi17Ci0gICAgQkVHSU4oKTsK
LSAgICBKU1ZhbHVlIGdlbmVyYXRvciA9IE9QKDEpLmpzVmFsdWUoKTsKLSAgICBHZW5lcmF0b3JG
cmFtZSogZnJhbWUgPSBqc0Nhc3Q8R2VuZXJhdG9yRnJhbWUqPihnZW5lcmF0b3IuZ2V0KGV4ZWMs
IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JGcmFtZVByaXZh
dGVOYW1lKCkpKTsKLSAgICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSBwY1syXS51
LnVuc2lnbmVkVmFsdWU7Ci0gICAgZnJhbWUtPnJlc3VtZShleGVjLCBleGVjLT5jb2RlQmxvY2so
KS0+bGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQobGl2ZUNhbGxlZUxvY2Fsc0luZGV4KSk7Ci0gICAg
RU5EKCk7Ci19Ci0KIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9jcmVhdGVfbGV4aWNhbF9lbnZp
cm9ubWVudCkKIHsKICAgICBCRUdJTigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db21tb25TbG93UGF0aHMuaAppbmRleCA2NDAxYTYxNGQ1NjExNjYzNTY5YjE4YTAyNzJi
MjhhYzM1Mjg2YTgyLi4zZDljMTVmNWFmMGM3NTdkZGExMDUzMzkxOTkwZjU0NjM4ODY4MWI1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaApA
QCAtMjQ4LDggKzI0OCw2IEBAIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfbmV4dF9n
ZW5lcmljX2VudW1lcmF0b3JfcG5hbWUpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0
aF90b19pbmRleF9zdHJpbmcpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9wcm9m
aWxlX3R5cGVfY2xlYXJfbG9nKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfYXNz
ZXJ0KTsKLVNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfc2F2ZSk7Ci1TTE9XX1BBVEhf
SElEREVOX0RFQ0woc2xvd19wYXRoX3Jlc3VtZSk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xv
d19wYXRoX2NyZWF0ZV9sZXhpY2FsX2Vudmlyb25tZW50KTsKIFNMT1dfUEFUSF9ISURERU5fREVD
TChzbG93X3BhdGhfcHVzaF93aXRoX3Njb3BlKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93
X3BhdGhfcmVzb2x2ZV9zY29wZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9HZW5lcmF0b3JGcmFtZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9HZW5lcmF0b3JGcmFtZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVmNmVh
N2ExMDAyNThjM2VjZTA0ZGFhYjQzYmRhYTg1MWVjOGY3MTUuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
R2VuZXJhdG9yRnJhbWUuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsOTcgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiR2VuZXJhdG9yRnJh
bWUuaCIKLQotI2luY2x1ZGUgIkNvZGVCbG9jay5oIgotI2luY2x1ZGUgIkhlYXBJdGVyYXRpb25T
Y29wZS5oIgotI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCi0jaW5jbHVkZSAiSlNDZWxs
SW5saW5lcy5oIgotI2luY2x1ZGUgIlNsb3RWaXNpdG9ySW5saW5lcy5oIgotI2luY2x1ZGUgIlN0
cnVjdHVyZUlubGluZXMuaCIKLQotbmFtZXNwYWNlIEpTQyB7Ci0KLWNvbnN0IENsYXNzSW5mbyBH
ZW5lcmF0b3JGcmFtZTo6c19pbmZvID0geyAiR2VuZXJhdG9yRnJhbWUiLCBudWxscHRyLCBudWxs
cHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEdlbmVyYXRvckZyYW1lKSB9OwotCi1HZW5lcmF0b3JG
cmFtZTo6R2VuZXJhdG9yRnJhbWUoVk0mIHZtLCBzaXplX3QgbnVtYmVyT2ZDYWxsZWVMb2NhbHMp
Ci0gICAgOiBCYXNlKHZtLCB2bS5nZW5lcmF0b3JGcmFtZVN0cnVjdHVyZS5nZXQoKSkKLSAgICAs
IG1fbnVtYmVyT2ZDYWxsZWVMb2NhbHMobnVtYmVyT2ZDYWxsZWVMb2NhbHMpCi17Ci19Ci0KLXZv
aWQgR2VuZXJhdG9yRnJhbWU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKLXsKLSAgICBCYXNlOjpm
aW5pc2hDcmVhdGlvbih2bSk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX251bWJlck9m
Q2FsbGVlTG9jYWxzOyArK2kpCi0gICAgICAgIGxvY2FsQXQoaSkuY2xlYXIoKTsKLX0KLQotU3Ry
dWN0dXJlKiBHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCi17Ci0gICAgcmV0dXJuIFN0
cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oQ2Vs
bFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKLX0KLQotR2VuZXJhdG9yRnJhbWUqIEdl
bmVyYXRvckZyYW1lOjpjcmVhdGUoVk0mIHZtLCBzaXplX3QgbnVtYmVyT2ZMb2NhbHMpCi17Ci0g
ICAgR2VuZXJhdG9yRnJhbWUqIHJlc3VsdCA9Ci0gICAgICAgIG5ldyAoCi0gICAgICAgICAgICBO
b3ROdWxsLAotICAgICAgICAgICAgYWxsb2NhdGVDZWxsPEdlbmVyYXRvckZyYW1lPih2bS5oZWFw
LCBhbGxvY2F0aW9uU2l6ZUZvckxvY2FscyhudW1iZXJPZkxvY2FscykpKQotICAgICAgICBHZW5l
cmF0b3JGcmFtZSh2bSwgbnVtYmVyT2ZMb2NhbHMpOwotICAgIHJlc3VsdC0+ZmluaXNoQ3JlYXRp
b24odm0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLXZvaWQgR2VuZXJhdG9yRnJhbWU6OnNh
dmUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlQ2FsbGVlTG9jYWxz
KQotewotICAgIC8vIE9ubHkgc2F2ZSBjYWxsZWUgbG9jYWxzLgotICAgIC8vIEV2ZXJ5IHRpbWUg
YSBnZW5lcmF0b3IgaXMgY2FsbGVkIChvciByZXN1bWVkKSwgcGFyYW1ldGVycyBzaG91bGQgYmUg
cmVwbGFjZWQuCi0gICAgQVNTRVJUKGxpdmVDYWxsZWVMb2NhbHMubnVtQml0cygpIDw9IG1fbnVt
YmVyT2ZDYWxsZWVMb2NhbHMpOwotICAgIGxpdmVDYWxsZWVMb2NhbHMuZm9yRWFjaFNldEJpdChb
Jl0oc2l6ZV90IGluZGV4KSB7Ci0gICAgICAgIGxvY2FsQXQoaW5kZXgpLnNldChleGVjLT52bSgp
LCB0aGlzLCBleGVjLT51bmNoZWNrZWRSKHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGluZGV4KSku
anNWYWx1ZSgpKTsKLSAgICB9KTsKLX0KLQotdm9pZCBHZW5lcmF0b3JGcmFtZTo6cmVzdW1lKEV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZUNhbGxlZUxvY2FscykKLXsK
LSAgICAvLyBPbmx5IHJlc3VtZSBjYWxsZWUgbG9jYWxzLgotICAgIC8vIEV2ZXJ5IHRpbWUgYSBn
ZW5lcmF0b3IgaXMgY2FsbGVkIChvciByZXN1bWVkKSwgcGFyYW1ldGVycyBzaG91bGQgYmUgcmVw
bGFjZWQuCi0gICAgbGl2ZUNhbGxlZUxvY2Fscy5mb3JFYWNoU2V0Qml0KFsmXShzaXplX3QgaW5k
ZXgpIHsKLSAgICAgICAgZXhlYy0+dW5jaGVja2VkUih2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChp
bmRleCkpID0gbG9jYWxBdChpbmRleCkuZ2V0KCk7Ci0gICAgICAgIGxvY2FsQXQoaW5kZXgpLmNs
ZWFyKCk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgR2VuZXJhdG9yRnJhbWU6OnZpc2l0Q2hpbGRyZW4o
SlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKLXsKLSAgICBHZW5lcmF0b3JGcmFt
ZSogdGhpc09iamVjdCA9IGpzQ2FzdDxHZW5lcmF0b3JGcmFtZSo+KGNlbGwpOwotICAgIEJhc2U6
OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7Ci0gICAgLy8gU2luY2Ugb25seSB0
cnVlIGNlbGwgcG9pbnRlcnMgYXJlIHN0b3JlZCBhcyBhIGNlbGwsIHdlIGNhbiBzYWZlbHkgbWFy
ayB0aGVtLgotICAgIHZpc2l0b3IuYXBwZW5kVmFsdWVzKHRoaXNPYmplY3QtPmxvY2FscygpLCB0
aGlzT2JqZWN0LT5tX251bWJlck9mQ2FsbGVlTG9jYWxzKTsKLX0KLQotfSAvLyBuYW1lc3BhY2Ug
SlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JG
cmFtZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJhbWUuaApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2Q1NDViMTQ3ZGQ0YWJmYjJiYmI5YjVhNzE5
NGU4Zjc0ODQxYzQ5YS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGcmFtZS5oCisrKyAv
ZGV2L251bGwKQEAgLTEsOTAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1
a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIEdl
bmVyYXRvckZyYW1lX2gKLSNkZWZpbmUgR2VuZXJhdG9yRnJhbWVfaAotCi0jaW5jbHVkZSAiSlND
ZWxsLmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RCaXRWZWN0b3IuaD4KLQotbmFtZXNwYWNlIEpTQyB7
Ci0KLWNsYXNzIEdlbmVyYXRvckZyYW1lIDogcHVibGljIEpTQ2VsbCB7Ci0gICAgZnJpZW5kIGNs
YXNzIEpJVDsKLSNpZiBFTkFCTEUoREZHX0pJVCkKLSAgICBmcmllbmQgY2xhc3MgREZHOjpTcGVj
dWxhdGl2ZUpJVDsKLSAgICBmcmllbmQgY2xhc3MgREZHOjpKSVRDb21waWxlcjsKLSNlbmRpZgot
ICAgIGZyaWVuZCBjbGFzcyBWTTsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOwot
ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IFN0cnVjdHVyZUlzSW1t
b3J0YWwgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKLQotICAgIERFQ0xBUkVfRVhQT1JUX0lORk87
Ci0KLSAgICBzdGF0aWMgR2VuZXJhdG9yRnJhbWUqIGNyZWF0ZShWTSYsIHNpemVfdCBudW1iZXJP
ZkNhbGxlZUxvY2Fscyk7Ci0KLSAgICBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiBsb2NhbHMo
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxXcml0ZUJhcnJpZXJCYXNlPFVu
a25vd24+Kj4oYml0d2lzZV9jYXN0PGNoYXIqPih0aGlzKSArIG9mZnNldE9mTG9jYWxzKCkpOwot
ICAgIH0KLQotICAgIFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4mIGxvY2FsQXQoc2l6ZV90IGlu
ZGV4KQotICAgIHsKLSAgICAgICAgQVNTRVJUKGluZGV4IDwgbV9udW1iZXJPZkNhbGxlZUxvY2Fs
cyk7Ci0gICAgICAgIHJldHVybiBsb2NhbHMoKVtpbmRleF07Ci0gICAgfQotCi0gICAgc3RhdGlj
IHNpemVfdCBvZmZzZXRPZkxvY2FscygpCi0gICAgewotICAgICAgICByZXR1cm4gV1RGOjpyb3Vu
ZFVwVG9NdWx0aXBsZU9mPHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pPihzaXplb2YoR2Vu
ZXJhdG9yRnJhbWUpKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgc2l6ZV90IGFsbG9jYXRpb25TaXpl
Rm9yTG9jYWxzKHVuc2lnbmVkIG51bWJlck9mTG9jYWxzKQotICAgIHsKLSAgICAgICAgcmV0dXJu
IG9mZnNldE9mTG9jYWxzKCkgKyBudW1iZXJPZkxvY2FscyAqIHNpemVvZihXcml0ZUJhcnJpZXI8
VW5rbm93bj4pOwotICAgIH0KLQotICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVy
ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBwcm90b3R5cGUpOwotCi0gICAgdm9pZCBz
YXZlKEV4ZWNTdGF0ZSosIGNvbnN0IEZhc3RCaXRWZWN0b3ImIGxpdmVDYWxsZWVMb2NhbHMpOwot
ICAgIHZvaWQgcmVzdW1lKEV4ZWNTdGF0ZSosIGNvbnN0IEZhc3RCaXRWZWN0b3ImIGxpdmVDYWxs
ZWVMb2NhbHMpOwotCi1wcml2YXRlOgotICAgIEdlbmVyYXRvckZyYW1lKFZNJiwgc2l6ZV90IG51
bWJlck9mQ2FsbGVlTG9jYWxzKTsKLQotICAgIHNpemVfdCBtX251bWJlck9mQ2FsbGVlTG9jYWxz
OwotCi0gICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKLQotICAgIHZvaWQg
ZmluaXNoQ3JlYXRpb24oVk0mKTsKLQotcHJvdGVjdGVkOgotICAgIHN0YXRpYyB2b2lkIHZpc2l0
Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEpT
QwotCi0jZW5kaWYgLy8gR2VuZXJhdG9yRnJhbWVfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0b3JGdW5jdGlvbi5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0b3JGdW5jdGlvbi5oCmluZGV4IDM2ZjYxYzVmMjBmNTZi
ZWZkNmM1NTc4NDJiMTllMzliMTlhM2E5MTkuLmExY2JhZDk0NmRjNTY4MjllZDFhMjE1NTc5MGI0
NDBhOGRmNDMwMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2VuZXJhdG9yRnVuY3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dlbmVyYXRvckZ1bmN0aW9uLmgKQEAgLTU1LDYgKzU1LDE2IEBAIGNsYXNzIEpTR2VuZXJhdG9y
RnVuY3Rpb24gOiBwdWJsaWMgSlNGdW5jdGlvbiB7CiAgICAgICAgIEV4ZWN1dGluZyA9IC0yLAog
ICAgIH07CiAKKyAgICAvLyBbdGhpc10sIEBnZW5lcmF0b3IsIEBnZW5lcmF0b3JTdGF0ZSwgQGdl
bmVyYXRvclZhbHVlLCBAZ2VuZXJhdG9yUmVzdW1lTW9kZSwgQGdlbmVyYXRvckZyYW1lLgorICAg
IGVudW0gY2xhc3MgR2VuZXJhdG9yQXJndW1lbnQgOiBpbnQzMl90IHsKKyAgICAgICAgVGhpc1Zh
bHVlID0gMCwKKyAgICAgICAgR2VuZXJhdG9yID0gMSwKKyAgICAgICAgU3RhdGUgPSAyLAorICAg
ICAgICBWYWx1ZSA9IDMsCisgICAgICAgIFJlc3VtZU1vZGUgPSA0LAorICAgICAgICBGcmFtZSA9
IDUsCisgICAgfTsKKwogICAgIGNvbnN0IHN0YXRpYyB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9
IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwogCiAgICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCA4ODEzMWJmNWIzMDkwYWJkYWU0Yjk5NDUx
YjQxNzFjYjVmZTJjNDVjLi5jMzAxMjJjNWFmMzNjODA3ZmU5YTY1YTE4ZmU2Zjg1NDcwZWQwYTZl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC00Niw3ICs0Niw2IEBACiAj
aW5jbHVkZSAiRlRMVGh1bmtzLmgiCiAjaW5jbHVkZSAiRnVuY3Rpb25Db25zdHJ1Y3Rvci5oIgog
I2luY2x1ZGUgIkdDQWN0aXZpdHlDYWxsYmFjay5oIgotI2luY2x1ZGUgIkdlbmVyYXRvckZyYW1l
LmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiSGVhcC5oIgogI2luY2x1
ZGUgIkhlYXBJdGVyYXRpb25TY29wZS5oIgpAQCAtMjQwLDcgKzIzOSw2IEBAIFZNOjpWTShWTVR5
cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICBpbmZlcnJlZFR5cGVTdHJ1Y3R1cmUu
c2V0KCp0aGlzLCBJbmZlcnJlZFR5cGU6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxs
KCkpKTsKICAgICBpbmZlcnJlZFR5cGVUYWJsZVN0cnVjdHVyZS5zZXQoKnRoaXMsIEluZmVycmVk
VHlwZVRhYmxlOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgZnVu
Y3Rpb25SYXJlRGF0YVN0cnVjdHVyZS5zZXQoKnRoaXMsIEZ1bmN0aW9uUmFyZURhdGE6OmNyZWF0
ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKLSAgICBnZW5lcmF0b3JGcmFtZVN0cnVj
dHVyZS5zZXQoKnRoaXMsIEdlbmVyYXRvckZyYW1lOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAs
IGpzTnVsbCgpKSk7CiAgICAgZXhjZXB0aW9uU3RydWN0dXJlLnNldCgqdGhpcywgRXhjZXB0aW9u
OjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgcHJvbWlzZURlZmVy
cmVkU3RydWN0dXJlLnNldCgqdGhpcywgSlNQcm9taXNlRGVmZXJyZWQ6OmNyZWF0ZVN0cnVjdHVy
ZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICBpbnRlcm5hbFByb21pc2VEZWZlcnJlZFN0cnVj
dHVyZS5zZXQoKnRoaXMsIEpTSW50ZXJuYWxQcm9taXNlRGVmZXJyZWQ6OmNyZWF0ZVN0cnVjdHVy
ZSgqdGhpcywgMCwganNOdWxsKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCmluZGV4
IDg3YmQwZTBhMjU1MzhlOGM1ZWMzMmFiZTQwMzJjNDY5N2ViMWQwOGYuLjkxNTBiNTE1OWVlZGNh
ZDE4NTY0NWNkYTZjNzMwYjQ5MGVkM2U2NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1ZNLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0u
aApAQCAtMzIwLDcgKzMyMCw2IEBAIGNsYXNzIFZNIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3Vu
dGVkPFZNPiB7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gaW5mZXJyZWRUeXBlU3RydWN0dXJlOwog
ICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGluZmVycmVkVHlwZVRhYmxlU3RydWN0dXJlOwogICAgIFN0
cm9uZzxTdHJ1Y3R1cmU+IGZ1bmN0aW9uUmFyZURhdGFTdHJ1Y3R1cmU7Ci0gICAgU3Ryb25nPFN0
cnVjdHVyZT4gZ2VuZXJhdG9yRnJhbWVTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4g
ZXhjZXB0aW9uU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHByb21pc2VEZWZlcnJl
ZFN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBpbnRlcm5hbFByb21pc2VEZWZlcnJl
ZFN0cnVjdHVyZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0Zhc3RCaXRWZWN0b3IuaCBi
L1NvdXJjZS9XVEYvd3RmL0Zhc3RCaXRWZWN0b3IuaAppbmRleCA5OGZmZjVjZjczNTNlNmJjNjdk
YTVjNTU5NDBjY2NlNGU0YjE1NmQwLi5mZjAwYjdiNTRkNGEwY2ZmNGJlZjdkMDM4NTRkZTZiOTBj
ZTFkYjkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9GYXN0Qml0VmVjdG9yLmgKKysrIGIv
U291cmNlL1dURi93dGYvRmFzdEJpdFZlY3Rvci5oCkBAIC0yMyw4ICsyMyw3IEBACiAgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKICAqLwogCi0jaWZuZGVmIEZhc3RCaXRWZWN0b3JfaAotI2RlZmluZSBGYXN0Qml0
VmVjdG9yX2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAjaW5jbHVkZSA8
d3RmL0Zhc3RNYWxsb2MuaD4KQEAgLTM2LDEyICszNSwxNCBAQCBjbGFzcyBQcmludFN0cmVhbTsK
IAogY2xhc3MgRmFzdEJpdFZlY3RvciB7CiBwdWJsaWM6Ci0gICAgRmFzdEJpdFZlY3RvcigpCi0g
ICAgICAgIDogbV9hcnJheSgwKQotICAgICAgICAsIG1fbnVtQml0cygwKQorICAgIEZhc3RCaXRW
ZWN0b3IoKSA9IGRlZmF1bHQ7CisKKyAgICBGYXN0Qml0VmVjdG9yKEZhc3RCaXRWZWN0b3ImJiBv
dGhlcikKKyAgICAgICAgOiBtX2FycmF5KHN0ZDo6ZXhjaGFuZ2Uob3RoZXIubV9hcnJheSwgbnVs
bHB0cikpCisgICAgICAgICwgbV9udW1CaXRzKHN0ZDo6ZXhjaGFuZ2Uob3RoZXIubV9udW1CaXRz
LCAwKSkKICAgICB7CiAgICAgfQotICAgIAorCiAgICAgRmFzdEJpdFZlY3Rvcihjb25zdCBGYXN0
Qml0VmVjdG9yJiBvdGhlcikKICAgICAgICAgOiBtX2FycmF5KDApCiAgICAgICAgICwgbV9udW1C
aXRzKDApCkBAIC0yMDIsMTMgKzIwMywxMCBAQCBjbGFzcyBGYXN0Qml0VmVjdG9yIHsKICAgICBz
dGF0aWMgc2l6ZV90IGFycmF5TGVuZ3RoKHNpemVfdCBudW1CaXRzKSB7IHJldHVybiAobnVtQml0
cyArIDMxKSA+PiA1OyB9CiAgICAgc2l6ZV90IGFycmF5TGVuZ3RoKCkgY29uc3QgeyByZXR1cm4g
YXJyYXlMZW5ndGgobV9udW1CaXRzKTsgfQogICAgIAotICAgIHVpbnQzMl90KiBtX2FycmF5OyAv
LyBObywgdGhpcyBjYW4ndCBiZSBhbiBzdGQ6OnVuaXF1ZV9wdHI8dWludDMyX3RbXT4uCi0gICAg
c2l6ZV90IG1fbnVtQml0czsKKyAgICB1aW50MzJfdCogbV9hcnJheSB7IG51bGxwdHIgfTsgLy8g
Tm8sIHRoaXMgY2FuJ3QgYmUgYW4gc3RkOjp1bmlxdWVfcHRyPHVpbnQzMl90W10+LgorICAgIHNp
emVfdCBtX251bUJpdHMgeyAwIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXVEYKIAogdXNpbmcg
V1RGOjpGYXN0Qml0VmVjdG9yOwotCi0jZW5kaWYgLy8gRmFzdEJpdFZlY3Rvcl9oCi0KZGlmZiAt
LWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNjQxMDA4
NzcxYTBiYjBlM2JmODE4ZTFjODVjY2ZlN2JjNDM4MDYxYi4uNTUxODlkYmI3ODliZTFmMDMwYjQ5
NTNhNmVhNDdlZDU5OTMwZThiYSAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIv
SlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAxNi0wOC0yNCAgWXVzdWtlIFN1
enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbREZHXVtGVExdIEltcGxl
bWVudCBFUzYgR2VuZXJhdG9ycyBpbiBERkcgLyBGVEwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MjcyMworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLWFuZC1h
cnJheS5qczogQWRkZWQuCisgICAgICAgIChmaWIpOgorICAgICAgICAqIHN0cmVzcy9nZW5lcmF0
b3ItZmliLWZ0bC1hbmQtb2JqZWN0LmpzOiBBZGRlZC4KKyAgICAgICAgKGZpYik6CisgICAgICAg
ICogc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLWFuZC1zdHJpbmcuanM6IEFkZGVkLgorICAgICAg
ICAoZmliKToKKyAgICAgICAgKiBzdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwuanM6IEFkZGVkLgor
ICAgICAgICAoZmliKToKKyAgICAgICAgKiBzdHJlc3MvZ2VuZXJhdG9yLWZyYW1lLWVtcHR5Lmpz
OiBBZGRlZC4KKyAgICAgICAgKHNob3VsZFRocm93KToKKyAgICAgICAgKHNob3VsZFRocm93LmZp
Yik6CisgICAgICAgICogc3RyZXNzL2dlbmVyYXRvci1yZWR1Y2VkLXNhdmUtcG9pbnQtcHV0LXRv
LXNjb3BlLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKGdlbik6Cisg
ICAgICAgICogc3RyZXNzL2dlbmVyYXRvci10cmFuc2Zlci1yZWdpc3Rlci1iZXlvbmQtbXV0aXBs
ZS15aWVsZHMuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoZ2VuKToK
KwogMjAxNi0wOC0yNCAgQmVuamFtaW4gUG91bGFpbiAgPGJlbmphbWluQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgW0pTQ10gTWFrZSBGUm91bmQgd29yayB3aXRoIGFueSB0eXBlCmRpZmYgLS1naXQg
YS9KU1Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQtYXJyYXkuanMgYi9KU1Rlc3Rz
L3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQtYXJyYXkuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmU5Mzk4
MTJmZGJhZWM2YjgzMmJmZDAwZjIxNTNkZWY4NGJiNzU5MgotLS0gL2Rldi9udWxsCisrKyBiL0pT
VGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLWFuZC1hcnJheS5qcwpAQCAtMCwwICsxLDIz
IEBACisoZnVuY3Rpb24gKCkgeworICAgIGZ1bmN0aW9uICpmaWIoKQorICAgIHsKKyAgICAgICAg
bGV0IGEgPSAxOworICAgICAgICBsZXQgYiA9IDE7CisgICAgICAgIGxldCBjID0gWyAwIF07Cisg
ICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICBjWzBdID0gYTsKKyAgICAgICAgICAg
IHlpZWxkIGM7CisgICAgICAgICAgICBbYSwgYl0gPSBbYiwgYSArIGJdOworICAgICAgICB9Cisg
ICAgfQorCisgICAgbGV0IHZhbHVlID0gMDsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDFlNDsg
KytpKSB7CisgICAgICAgIGxldCBmID0gZmliKCk7CisgICAgICAgIGZvciAobGV0IGkgPSAwOyBp
IDwgMTAwOyArK2kpIHsKKyAgICAgICAgICAgIHZhbHVlID0gZi5uZXh0KCkudmFsdWU7CisgICAg
ICAgIH0KKyAgICAgICAgaWYgKHZhbHVlWzBdICE9PSAzNTQyMjQ4NDgxNzkyNjIwMDAwMDApCisg
ICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCB2YWx1ZToke3Jlc3VsdH1gKTsKKyAgICB9
Cit9KCkpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwtYW5k
LW9iamVjdC5qcyBiL0pTVGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLWFuZC1vYmplY3Qu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNjY3MzQwZjJlYTRjNzQzOGEyZDIwOWFhNDBkMDY3N2U0YWI3ZDNmYgot
LS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLWFuZC1v
YmplY3QuanMKQEAgLTAsMCArMSwyMyBAQAorKGZ1bmN0aW9uICgpIHsKKyAgICBmdW5jdGlvbiAq
ZmliKCkKKyAgICB7CisgICAgICAgIGxldCBhID0gMTsKKyAgICAgICAgbGV0IGIgPSAxOworICAg
ICAgICBsZXQgYyA9IHsgZmliOiAwIH07CisgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAg
ICAgICBjLmZpYiA9IGE7CisgICAgICAgICAgICB5aWVsZCBjOworICAgICAgICAgICAgW2EsIGJd
ID0gW2IsIGEgKyBiXTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGxldCB2YWx1ZSA9IDA7Cisg
ICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxZTQ7ICsraSkgeworICAgICAgICBsZXQgZiA9IGZpYigp
OworICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDsgKytpKSB7CisgICAgICAgICAgICB2
YWx1ZSA9IGYubmV4dCgpLnZhbHVlOworICAgICAgICB9CisgICAgICAgIGlmICh2YWx1ZS5maWIg
IT09IDM1NDIyNDg0ODE3OTI2MjAwMDAwMCkKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihg
YmFkIHZhbHVlOiR7cmVzdWx0fWApOworICAgIH0KK30oKSk7CmRpZmYgLS1naXQgYS9KU1Rlc3Rz
L3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQtc3RyaW5nLmpzIGIvSlNUZXN0cy9zdHJlc3Mv
Z2VuZXJhdG9yLWZpYi1mdGwtYW5kLXN0cmluZy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MzhhZTZhYjMzNDcw
NDY4MjI4NDlmNDMwMDRlYTVjNDAzZWVkYTI4Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9z
dHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwtYW5kLXN0cmluZy5qcwpAQCAtMCwwICsxLDIyIEBACiso
ZnVuY3Rpb24gKCkgeworICAgIGZ1bmN0aW9uICpmaWIoKQorICAgIHsKKyAgICAgICAgbGV0IGEg
PSAxOworICAgICAgICBsZXQgYiA9IDE7CisgICAgICAgIGxldCBjID0gIlJlc3VsdCEgIjsKKyAg
ICAgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgICAgIHlpZWxkIGMgKyBhOworICAgICAgICAg
ICAgW2EsIGJdID0gW2IsIGEgKyBiXTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGxldCB2YWx1
ZSA9IDA7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxZTQ7ICsraSkgeworICAgICAgICBsZXQg
ZiA9IGZpYigpOworICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDsgKytpKSB7CisgICAg
ICAgICAgICB2YWx1ZSA9IGYubmV4dCgpLnZhbHVlOworICAgICAgICB9CisgICAgICAgIGlmICh2
YWx1ZSAhPT0gYFJlc3VsdCEgMzU0MjI0ODQ4MTc5MjYyMDAwMDAwYCkKKyAgICAgICAgICAgIHRo
cm93IG5ldyBFcnJvcihgYmFkIHZhbHVlOiR7cmVzdWx0fWApOworICAgIH0KK30oKSk7CmRpZmYg
LS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC5qcyBiL0pTVGVzdHMvc3Ry
ZXNzL2dlbmVyYXRvci1maWItZnRsLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM0MGUzM2RiYzg2OGJlYTdhODkz
YzllYzE2Yjc3OWVjMjZiZGIxOWMKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9n
ZW5lcmF0b3ItZmliLWZ0bC5qcwpAQCAtMCwwICsxLDIxIEBACisoZnVuY3Rpb24gKCkgeworICAg
IGZ1bmN0aW9uICpmaWIoKQorICAgIHsKKyAgICAgICAgbGV0IGEgPSAxOworICAgICAgICBsZXQg
YiA9IDE7CisgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICB5aWVsZCBhOworICAg
ICAgICAgICAgW2EsIGJdID0gW2IsIGEgKyBiXTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGxl
dCB2YWx1ZSA9IDA7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxZTQ7ICsraSkgeworICAgICAg
ICBsZXQgZiA9IGZpYigpOworICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDsgKytpKSB7
CisgICAgICAgICAgICB2YWx1ZSA9IGYubmV4dCgpLnZhbHVlOworICAgICAgICB9CisgICAgICAg
IGlmICh2YWx1ZSAhPT0gMzU0MjI0ODQ4MTc5MjYyMDAwMDAwKQorICAgICAgICAgICAgdGhyb3cg
bmV3IEVycm9yKGBiYWQgdmFsdWU6JHtyZXN1bHR9YCk7CisgICAgfQorfSgpKTsKZGlmZiAtLWdp
dCBhL0pTVGVzdHMvc3RyZXNzL2dlbmVyYXRvci1mcmFtZS1lbXB0eS5qcyBiL0pTVGVzdHMvc3Ry
ZXNzL2dlbmVyYXRvci1mcmFtZS1lbXB0eS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41OWU4ODU1YmZhYzNjNTZk
ZjkyNmFiZDQyOGMwMTNjMzM0MTYyNzQ2Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJl
c3MvZ2VuZXJhdG9yLWZyYW1lLWVtcHR5LmpzCkBAIC0wLDAgKzEsMzQgQEAKK2Z1bmN0aW9uIHNo
b3VsZFRocm93KGZ1bmMsIGVycm9yTWVzc2FnZSkgeworICAgIHZhciBlcnJvclRocm93biA9IGZh
bHNlOworICAgIHZhciBlcnJvciA9IG51bGw7CisgICAgdHJ5IHsKKyAgICAgICAgZnVuYygpOwor
ICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgZXJyb3JUaHJvd24gPSB0cnVlOworICAgICAgICBl
cnJvciA9IGU7CisgICAgfQorICAgIGlmICghZXJyb3JUaHJvd24pCisgICAgICAgIHRocm93IG5l
dyBFcnJvcignbm90IHRocm93bicpOworICAgIGlmIChTdHJpbmcoZXJyb3IpICE9PSBlcnJvck1l
c3NhZ2UpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIGVycm9yOiAke1N0cmluZyhlcnJv
cil9YCk7Cit9CisKK3Nob3VsZFRocm93KGZ1bmN0aW9uICgpIHsKKyAgICBmdW5jdGlvbiAqZmli
KGZsYWcpCisgICAgeworICAgICAgICBsZXQgYSA9IDE7CisgICAgICAgIGxldCBiID0gMTsKKyAg
ICAgICAgeWllbGQgNDI7CisgICAgICAgIGlmIChmbGFnKQorICAgICAgICAgICAgcmV0dXJuIGM7
CisgICAgICAgIGxldCBjID0gNTAwOworICAgIH0KKworICAgIGxldCB2YWx1ZSA9IDA7CisgICAg
Zm9yIChsZXQgaSA9IDA7IGkgPCAxZTQ7ICsraSkgeworICAgICAgICBmb3IgKGxldCB2IG9mIGZp
YihmYWxzZSkpIHsKKyAgICAgICAgfQorICAgIH0KKyAgICBmb3IgKGxldCB2IG9mIGZpYih0cnVl
KSkgeworICAgIH0KK30sIGBSZWZlcmVuY2VFcnJvcjogQ2Fubm90IGFjY2VzcyB1bmluaXRpYWxp
emVkIHZhcmlhYmxlLmApOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXJl
ZHVjZWQtc2F2ZS1wb2ludC1wdXQtdG8tc2NvcGUuanMgYi9KU1Rlc3RzL3N0cmVzcy9nZW5lcmF0
b3ItcmVkdWNlZC1zYXZlLXBvaW50LXB1dC10by1zY29wZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMGM3NWZh
NDkxNDNjMTdiZTE0ZjMyODFlM2Y2NTQzNGYzNTEzOWU4Ci0tLSAvZGV2L251bGwKKysrIGIvSlNU
ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXJlZHVjZWQtc2F2ZS1wb2ludC1wdXQtdG8tc2NvcGUuanMK
QEAgLTAsMCArMSwyOCBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgewor
ICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJh
ZCB2YWx1ZTogJHtTdHJpbmcoYWN0dWFsKX1gKTsKK30KKworZnVuY3Rpb24gZXJyb3IoKQorewor
ICAgIHRocm93ICJvayI7Cit9CisKK2Z1bmN0aW9uKiBnZW4oKQoreworICAgIHZhciB2YWx1ZSA9
IDQyOworICAgIHRyeSB7CisgICAgICAgIHlpZWxkIDMwMDsKKyAgICAgICAgdmFsdWUgPSA1MDA7
CisgICAgICAgIGVycm9yKCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICB5aWVsZCA0MjsK
KyAgICAgICAgcmV0dXJuIHZhbHVlOworICAgIH0KKyAgICByZXR1cm4gMjAwOworfQorCit2YXIg
ZyA9IGdlbigpOworc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIDMwMCk7CitzaG91bGRCZShnLm5l
eHQoKS52YWx1ZSwgNDIpOworc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIDUwMCk7CmRpZmYgLS1n
aXQgYS9KU1Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItdHJhbnNmZXItcmVnaXN0ZXItYmV5b25kLW11
dGlwbGUteWllbGRzLmpzIGIvSlNUZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXRyYW5zZmVyLXJlZ2lz
dGVyLWJleW9uZC1tdXRpcGxlLXlpZWxkcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZTIwOGY1ODEyOTZmOWFl
MDhhNmJmYjM5OGI0ODIyNTc0MmQ2Yjc4Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJl
c3MvZ2VuZXJhdG9yLXRyYW5zZmVyLXJlZ2lzdGVyLWJleW9uZC1tdXRpcGxlLXlpZWxkcy5qcwpA
QCAtMCwwICsxLDE4IEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7Cisg
ICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFk
IHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKworCitmdW5jdGlvbiAqZ2VuKCkKK3sKKyAgICB2YXIg
dGVzdCA9IDQyOworICAgIHlpZWxkIDMyOworICAgIHlpZWxkIDMzOworICAgIHlpZWxkIHRlc3Q7
Cit9CisKK3ZhciBnID0gZ2VuKCk7CitzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgMzIpOworc2hv
dWxkQmUoZy5uZXh0KCkudmFsdWUsIDMzKTsKK3Nob3VsZEJlKGcubmV4dCgpLnZhbHVlLCA0Mik7
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>286951</attachid>
            <date>2016-08-25 01:18:35 -0700</date>
            <delta_ts>2016-08-25 01:18:35 -0700</delta_ts>
            <desc>Archive of layout-test-results from ews121 for ios-simulator-elcapitan-wk2</desc>
            <filename>layout-test-results.zip</filename>
            <type>application/zip</type>
            <size>742284</size>
            <attacher name="Build Bot">buildbot</attacher>
            
              <data encoding="base64">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
wnqBKWgEvt260u/JX5LuHyRbxkcyJE9hX/BPK9CT4AxMo/XQQZHeYar3QVakxrC+i94LUEsDBBQA
AgAIAPgCGUktAJB3jwAAADQBAAAmABwAZmFzdC9jYW52YXMvY2FudmFzLWxpbmVEYXNoLXN0ZGVy
ci50eHRVVAkAAwOdvlcDnb5XdXgLAAEE9QEAAARQAAAAzY4xCsJAFER7TzEXcImJoi4ihEQstLOw
EIuNfnRh83/Y/AT19CaewmpmHsMwefdAukCS2DSz8yVwk9q4pglkzlQdvI5SCCuxmpJ6CtLUg7+s
Zuk6u2Kzi1Hi1qLY/1ovPZEePVPp2qeF594Ff8d9SHAxureFUwRyrUKYQIHGOdTdACoCC08/FMVM
8r999gVQSwMECgAAAAAAAAMZSQAAAAAAAAAAAAAAAAkAHABmYXN0L2Nzcy9VVAkAAxCdvlf+n75X
dXgLAAEE9QEAAARQAAAAUEsDBBQAAgAIAAADGUnbCNNCOwAAAD8AAAApABwAZmFzdC9jc3MvY29t
cGFyZS1jb250ZW50LXN0eWxlLXN0ZGVyci50eHRVVAkAAxCdvlcQnb5XdXgLAAEE9QEAAARQAAAA
cywpSc0tKFEoyVdIzSssTS1NVUhUKM8vylbIBEoolGdk5qQqQMQzixWSUjPz0hUKivKTU4uLU1P0
uABQSwMECgAAAAAABQMZSQAAAAAAAAAAAAAAAAwAHABmYXN0L2V2ZW50cy9VVAkAAxmdvlf+n75X
dXgLAAEE9QEAAARQAAAAUEsDBBQAAgAIAAUDGUnKzw1XvAAAAE0BAAA/ABwAZmFzdC9ldmVudHMv
bWVkaWEtZm9jdXMtaW4tc3RhbmRhbG9uZS1tZWRpYS1kb2N1bWVudC1zdGRlcnIudHh0VVQJAAMZ
nb5XGZ2+V3V4CwABBPUBAAAEUAAAAKWOwQqCQBiE7z3FdLKglt9dC13oEBURQYEEHqKD2V8K2yq1
Ro+fQhBBt04zA8PHJ8kfDykcyhGItAw0RULJEFl5FWlVGRYJH9eFa2NWWsfWiTk/2JTVten70Fe+
1FIFo8iXh29GMo03q81SAwFpLOJ4G+sGXJuT9Rwu7HDic1obh8JWdbseRcYDrOaYgAbg260t3Y78
Jami/yUbxkcyJKWxy/mnFehJ8Hq2NqbvIU/vsOX7kOWptWzuovMCUEsDBAoAAAAAAAgDGUkAAAAA
AAAAAAAAAAAMABwAZmFzdC9mcmFtZXMvVVQJAAMfnb5X/p++V3V4CwABBPUBAAAEUAAAAFBLAwQU
AAIACAAIAxlJ2wjTQjsAAAA/AAAALwAcAGZhc3QvZnJhbWVzL2ZyYW1lLWRpc3BsYXktbm9uZS1m
b2N1cy1zdGRlcnIudHh0VVQJAAMfnb5XH52+V3V4CwABBPUBAAAEUAAAAHMsKUnNLShRKMlXSM0r
LE0tTVVIVCjPL8pWyARKKJRnZOakKkDEM4sVklIz89IVCoryk1OLi1NT9LgAUEsDBAoAAAAAAA0D
GUkAAAAAAAAAAAAAAAAMABwAZmFzdC9pbWFnZXMvVVQJAAMpnb5X/p++V3V4CwABBPUBAAAEUAAA
AFBLAwQUAAIACAANAxlJIY+9ODIAAAAzAAAALAAcAGZhc3QvaW1hZ2VzL3BkZi1hcy1pbWFnZS1j
cm9wLWJveC1zdGRlcnIudHh0VVQJAAMpnb5XKZ2+V3V4CwABBPUBAAAEUAAAAHPLSSxJdUlNzk9J
tVJIAdGZeekKqUVF+UVWCpl5yflFRanJJQopiSWJCskZqcnZelwAUEsDBAoAAAAAABMDGUkAAAAA
AAAAAAAAAAAMABwAZmFzdC9sb2FkZXIvVVQJAAM1nb5X/p++V3V4CwABBPUBAAAEUAAAAFBLAwQU
AAIACAALAxlJ2wjTQjsAAAA/AAAAUgAcAGZhc3QvbG9hZGVyL2Rpc3BsYXktaW1hZ2UtdW5zZXQt
Y2FuLWJsb2NrLWltYWdlLWFuZC1jYW4tcmVsb2FkLWluLXBsYWNlLXN0ZGVyci50eHRVVAkAAyad
vlcmnb5XdXgLAAEE9QEAAARQAAAAcywpSc0tKFEoyVdIzSssTS1NVUhUKM8vylbIBEoolGdk5qQq
QMQzixWSUjPz0hUKivKTU4uLU1P0uABQSwMEFAACAAgADgMZSdsI00I7AAAAPwAAAFMAHABmYXN0
L2xvYWRlci9pbWFnZXMtZW5hYmxlZC11bnNldC1jYW4tYmxvY2staW1hZ2UtYW5kLWNhbi1yZWxv
YWQtaW4tcGxhY2Utc3RkZXJyLnR4dFVUCQADLJ2+Vyydvld1eAsAAQT1AQAABFAAAABzLClJzS0o
USjJV0jNKyxNLU1VSFQozy/KVsgESiiUZ2TmpCpAxDOLFZJSM/PSFQqK8pNTi4tTU/S4AFBLAwQU
AAIACAATAxlJ2wjTQjsAAAA/AAAALQAcAGZhc3QvbG9hZGVyL3JlbG9hZC1wb2xpY3ktZGVsZWdh
dGUtc3RkZXJyLnR4dFVUCQADNZ2+VzWdvld1eAsAAQT1AQAABFAAAABzLClJzS0oUSjJV0jNKyxN
LU1VSFQozy/KVsgESiiUZ2TmpCpAxDOLFZJSM/PSFQqK8pNTi4tTU/S4AFBLAwQKAAAAAAAdAxlJ
AAAAAAAAAAAAAAAACgAcAGZhc3QvdGV4dC9VVAkAA0qdvlf+n75XdXgLAAEE9QEAAARQAAAAUEsD
BBQAAgAIAB0DGUn9256YXwEAAAYEAAAjABwAZmFzdC90ZXh0L2Vtb2ppLWdlbmRlci0yLXN0ZGVy
ci50eHRVVAkAA0qdvldKnb5XdXgLAAEE9QEAAARQAAAA7ZJLT4NAFIXX8ismLBtK7gwMtERJaiua
mHRha1y0XQwwtCS8AoNBG/67M61WEx9L3chmmJM73zk5uQSwM4TRkFAE4BHbo65J6RhFZW6yqsq4
+cDD21SoY1oWghfCnPFHnpVVLv9XI0zGlkcsGxObbNC0rPmSd8JDg8EA3Re5ZPAY6euWODas2+AK
Ah2dT5eBZHkIOjeJLGvksNB2wN8XLOfoAk2U8WJ2XYpdGs15Obzj2zZjtYGa9FkNYAATDp+Bcibq
tJMidPIW8yaq00qUtVRefWYn7eQYJjhkiXRkQr4OW8Gbw3xwyZo0umHN7uNkaANaQYch4dRhNmz8
vXiqVJC8FSzMOIrTSBiytLYQKp6hyW7qVEF97YwgT6EXUim2kosxjgi48SdodCxYRdHnCxV9LguZ
vEXU+2PGdxABGo45/RH0XZl6r/Wa3/ca+WoFHPeXV4CMLIr/V+BvVuAFUEsDBAoAAAAAAB0DGUkA
AAAAAAAAAAAAAAAOABwAZmFzdC92aWV3cG9ydC9VVAkAA0qdvlf+n75XdXgLAAEE9QEAAARQAAAA
UEsDBAoAAAAAACADGUkAAAAAAAAAAAAAAAASABwAZmFzdC92aWV3cG9ydC9pb3MvVVQJAANLnb5X
/p++V3V4CwABBPUBAAAEUAAAAFBLAwQUAAIACAAgAxlJIv+//XAAAACpAAAAPgAcAGZhc3Qvdmll
d3BvcnQvaW9zL3dpZHRoLWlzLWRldmljZS13aWR0aC1vdmVyZmxvd2luZy1hY3R1YWwudHh0VVQJ
AANLnb5XS52+V3V4CwABBPUBAAAEUAAAAAvLTC0vyC8qsVIoz0wpybBNSS3LTE7VBXO4uIqTE3NS
OQ31DECAKzexIhgsYAoTyMwLRlFRllmcmZSTGpSaXMJZrZSTmlaiZKVkbGICkVbSUSrJLwCKGMD5
YHtAaowQYhmpmekZII2mZhZQwVouLgBQSwMEFAACAAgAHQMZSSxTJvyEAAAAqgAAAFgAHABmYXN0
L3ZpZXdwb3J0L2lvcy93aWR0aC1pcy1kZXZpY2Utd2lkdGgtb3ZlcmZsb3dpbmctYm9keS1vdmVy
Zmxvdy1oaWRkZW4tdGFsbC1hY3R1YWwudHh0VVQJAANKnb5XSp2+V3V4CwABBPUBAAAEUAAAAFWN
ywrCMBRE171fIVlrSNok0oI/YcF9Ta/mQvrAhlYo/XfT6MbZzeEMcyNcxuEVqsNCbXCXFmeyeEoF
YLKNx0xwrZUpoWvedQKaiz3QUV//GTNNdPd4RRuylXl8BFaxXGquCmMkO7IwjJGI7z729BOJPhte
CqmKyBzS0+1DKXL1MzeAD1BLAwQUAAIACAAdAxlJMb6wCQcBAABZAgAAVgAcAGZhc3Qvdmlld3Bv
cnQvaW9zL3dpZHRoLWlzLWRldmljZS13aWR0aC1vdmVyZmxvd2luZy1ib2R5LW92ZXJmbG93LWhp
ZGRlbi10YWxsLWRpZmYudHh0VVQJAANKnb5XS52+V3V4CwABBPUBAAAEUAAAAM2QMW+DQAyF5/Ar
ECsxBwlQpROq2qlbIjXzwZlgyeEQZ0iiqv+9kESVInXrUg+2/On56ckA4KsPy8MRnXrVotXbfqf2
WL6T3MfLQGzUFhm1Q6CusS06Og6sxfaK9cUOAoJOoEc3sDhVaydqJDx1thdF1qkTGWmAHBgcqUK4
7XbEvmZ7ovYApTWXHwANGYMtiGYGPHdYCZpIzuKFYfjf8+pKBs3XtEXhw3qZ+eHcisLzXaUZF3GU
ZWm+8fyjPu+uJIviuSZC7e5BAyM5Khm30w8WnwFjLcFzEN/0wTIQ2z3s16QTyZ7yaBMn6XpiDdKh
mc+SeJXelV9e+KvzKsmidJ3nyZ+8fe8bUEsDBBQAAgAIAB0DGUlwQpprewAAAKgAAABaABwAZmFz
dC92aWV3cG9ydC9pb3Mvd2lkdGgtaXMtZGV2aWNlLXdpZHRoLW92ZXJmbG93aW5nLWJvZHktb3Zl
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
eHNsdC1iYWQtaW1wb3J0LXVyaS1zdGRlcnIudHh0VVQJAANPnb5XT52+V3V4CwABBPUBAAAEUAAA
AJ2OMQ7CMAxF957CFyge2DLDBBuIzm7rikhOXDmOVG5PoJyA5cv/f9t6k6Y1CnnUDGymFmCJwl8J
iPhQqYkLnsgJz8MNBx4v0fFKL61+5+IFFyqOWxE0LlptauvNeT/S3Me0qnlfLR5aBhIzwxFYOHF2
2NuuNWEfIUDNNDYAVxCl+QfyJ0bWUqfn50W7E+neUEsDBBQAAgAIACIDGUnPj2YOUAAAAKAAAAAk
ABwAZmFzdC94c2wveHNsdC1jb250ZW50VHlwZS1zdGRlcnIudHh0VVQJAANPnb5XT52+V3V4CwAB
BPUBAAAEUAAAAK3MsQ3AIAwF0Z4p/gZR2myDwAhLNkaWiTJ+yA5prrtXTCdLDrYBcje/0FgIEB6E
EySkNAK2Yq5IPO4sXLG7CM0cStGt7ssslb+wp4fK8ZEvUEsDBBQAAgAIACIDGUmBSnetSwAAAKwA
AAA0ABwAZmFzdC94c2wveHNsdC10cmFuc2Zvcm0tdG8tZnJhZ21lbnQtY3Jhc2gtc3RkZXJyLnR4
dFVUCQADUJ2+V1Cdvld1eAsAAQT1AQAABFAAAAC1zLENgDAMRNE+U9wKtGzjwAVZcmxkLOZHomAD
6q/3t5inmpSGg5mRK4YaAVMnFtA46YVbUqUbW3LnUNdXxMBh0cW+juJVbfvl+gBQSwMEFAACAAgA
jgQZSSIbVboGAgAA3AQAABEAHABmdWxsX3Jlc3VsdHMuanNvblVUCQAD+5++V/6fvld1eAsAAQT1
AQAABFAAAACtU01v2zAM/SuBThtgLU3aBK13CpBsKNquQ52u28lQLDoWYkuGSOdjQf77KLvNCuxQ
YM3JEkW+90g+T6bT9GGWPN7Okw97QYCEIt6LCrRR4UBeZavjQRorF8pqibQr4VNBVRnePNTOk4jF
l9vJzS8RCdjWkBFoDn2fJAlHVEaN4mQxv76b3T/Oe238cDhEAdmiIeNsS12CXVKB5jfIvy+SnMy9
q6RqyP0f7+znC2kkkKBGSaYydinzxmaB4wSwhapBuobQ6Nfq8b3QjF0Q1e0ejisymIXvBhbPjXhA
VzanaKXdS66QAsbawKZD2QvjWu6N0VRIg1LD2mQgu7tbg89Lt2Et/wp4mH1lnyXX99/eVhFm+SaF
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
AQAABFAAAABQSwMEFAACAAgAQAMZSXhxaTu5AAAA9wAAAC8AHABodHRwL3Rlc3RzL21pc2Mvd2Vi
dGltaW5nLXJlc29sdXRpb24tYWN0dWFsLnR4dFVUCQADh52+V4edvld1eAsAAQT1AQAABFAAAABt
zTFrwzAUBODdv+Lw1EJi6qFblyQ4UEjqgE0D2WT7HAtkPdCzCIH8+KoUMnW54fi4+2awo6VimYjZ
ejvHGYEqLi5WPKziPfV9EGUvftAiy2oPjX1P1RXuEnGzzkFJmJThd0xG5KdN0+SYkzJXJjmKc3Lj
gO6OvK2aFrv6eDpUbZWnzWy/+TxAJ4lu2PKLJlwYpA61Jz5Qcl2+4fHA0SxTYTp9+V+uUb4++R9B
RywhssDZKEbjlOnuB1BLAwQUAAIACABAAxlJqN5FvxUBAAA/AgAALQAcAGh0dHAvdGVzdHMvbWlz
Yy93ZWJ0aW1pbmctcmVzb2x1dGlvbi1kaWZmLnR4dFVUCQADh52+V4edvld1eAsAAQT1AQAABFAA
AADFj0FLw0AQhe/5FUNOSrpZi3jzkFYjiK0ppljwNkmmzcImW3ZmaQv98SZVPHkUZOANDN/Me6OU
Av3ubOiI9SMK6nxT6g1VL0a+2zwY2+g3soRMyuxb1xObLlgU57XFkwuihFiUJw5WWLciez1OWHeG
a32gSkxn+t1IDF5iXK/ouKdaqEnlKFGSJP8UA2sJaC8hsgzU7eQOklGyLIKiBw51TcwTGM7DwVgL
TAQ4qDfE4LYQr2ZlGcMQnHFHA7l11roDNVCdIF7n5RoeiuVqka/zOI1gKDVuALcu2GZOr4T+g7wr
fNET3MOU1PQGzmdYorQpVnz1O6lgev2DGwbxgaLkafa8+NvTXwhUdHFIYYMMW7RM4zOfUEsDBBQA
AgAIAEADGUniEFtWqgAAAOQAAAAxABwAaHR0cC90ZXN0cy9taXNjL3dlYnRpbWluZy1yZXNvbHV0
aW9uLWV4cGVjdGVkLnR4dFVUCQADh52+V4edvld1eAsAAQT1AQAABFAAAABtzjELwjAUBOA9v+Lo
pKDFDm4uKt2sKbQ4uMX21QbSPMhrKII/3rg4udxwfBx3o2AHS4J5JEzW2ylOCCTs4mzZwwr2qe8C
C3Xse8mV0h4Su45ENnhxxGKdgxDBpAzfMR6Q1cemyTAlZZ6U5MDO8UI9Hi9kbdm0OOuqvpRtmaVN
9eWQkaPrT3QlE+4UWAftCQcUtC12eL9RmXnMzUNW/+UWxfrH0/U5RFLqA1BLAwQUAAIACABAAxlJ
hDe5YzEIAABjGwAANQAcAGh0dHAvdGVzdHMvbWlzYy93ZWJ0aW1pbmctcmVzb2x1dGlvbi1wcmV0
dHktZGlmZi5odG1sVVQJAAOHnb5Xh52+V3V4CwABBPUBAAAEUAAAAL1Za2/byBX97l8xsNG4XZik
ZEuOLTkqEj/QRZNNUBsN0C/FkByKEw852pmhLWfT/947L4qkSFlAd7vBRuS87rnPc4e5ylXBFgdX
OcEp/BREYZTkWEii3h1XKgsujmFYqhdGFgczRsvHEzR7opIqkqLfDhD8p8haBSlJuMCK8nKGSl6S
uZmKuUiJCGKuFC9maLxaoxSeSTo/+M+BPc4dknDGxQwdjc4uzVx4Rxm5oVnm5mOcPC4Fr8o08Euz
C/2nKchKkJzRFB2laWrnMl6qIMMFZS8zVPCSyxVOHMACiyUFyGNSoJEdWnFQzughCAONnogBlI87
SM/OznrOl7iUgSSCZo1JSb8TI6MpNGAkUzM0Cqd+PKVyxTAcQkuwjEP4TFOVw+bR6E8OH05TWi7r
nRabc41+anvHwaVlDqBUvTznT0R0NJpOp/MhYxNizRBqn3wEWdJtzhjHoIagy1y1PadXXYP6GHTx
ojiYnipQcdRRWeGYkSAhjLW0DMy5LSs956BdYHyoQ+1Z4NUG2T1JtO8Gg8ZsbodMN1xczHq7Q0CN
Vmsr4Xa9AvfC+aAaOUGh/ulqOAhP0pTEL/pvZKB+YDx5/IKFCkHVWUaFVEGSU5YOGlaLu4f9J7sO
E6QA1568Is/J8Oa3ARfEekkr7KY+6iBaFE0wCzCjS8gNxXvUEkRH+t9wmTLizeHO0SbU7zmxDt3E
c1IJqV2jYXczEMfgncp7DGTWgWOTx8DbhaIV59vhsBTkZd4JzHD6mr+siVGo+KtmDjPBi46xXX3U
MrTVf6mKmAiIJtKMLjvqgW+XURe1l5etAujTpa8M+kyeTCa95abp/brG6IOmNgVsGtQF38WBC8++
ELFwW+F05gpWQ3GjYm/BsSQxaJYdRWoldHZqmM6Avpq4qPGKtHIVNgU2W80U2NO8gh6C4MdAD1hA
tMBL0vLMDJ3WBo8Z1lbUCxMoDYABoLgn1NV745WLyeVg7c1ItikAOqzgxJoeG9ncszXN0vZWcLYc
Xn5JLue7OL0+yVWZJg6XFcN0naZbB6CUsOEd5PJVNNFP6L5arbhQwLTCRTIYtShIqST6KQJ5uFI5
t/a2bKybGYh6BXGaeE+ZDWbNAP/XazQYDCFhFvtydu4DW5cbzNi1R9C7+tRyWYHXQYfeC+gL3NDp
qOadrmiw+045dWbXKd0S04cz5CtiaTN4JvEjVYESOu2sJSxwFJ7KeUONiVP6SCqsKvmhioHDaz4M
dfb0wtFbFOcsxqI970VnjJgM3UwU/Hs9WhenM5vHro/Sj75b0M/DLeFQ5djZym3CIqNrYs9x9XjU
VinEpgexabbN4s8UaoHohFp95veAlilZQ5HaodqGCBsQ+vRyxahFbxeuipUapkvYXmoCeTFfvwr0
fAN0bIPYk5B9M2Ddc81g7rUGXHdmLdE0E7iwCDt50m4jGjlyPVBpt23zAr0mf3ZcTxg0jtAz70FM
55d3m/BynDwwaQzRnqvbyHS7PW43x+4Ma77tGB5sCVJfZ62Y974o+KvOqDn74Dmycyc5f+sL2jbM
HUnSuO3IAttevllzSy5geD5QZZz+ugWTfcKtHj6vR31LGI4Jm+EMMuxka7sdN4cYQi5B1UP0Ax3O
D2oibtB3dzfD0KHzLFAvK9J71OEgIrewc8XNCTMFsm5GsW5GBzjqqCBS+sZj0M59bmlkx70p1PtQ
IVAMNERPlFfyuh6BZvY7Ka8bZNnH877l6FJMk1x0LYeoNZHga7t7d5HoisiZ58C90LjQgB6HKJ0T
Lbpwbd9A09fk2biCrCqbdcfze0qfZhlPnA15pXS9aKZfzCrDJG4K4iUDLMBgY69IkyzNKdDDPOTE
Sooc0y4Bv9ZBcaRgLrarXahJ9ESxrsnqk4sJABsL/gwOh04gx7DXNUVUhboJqvWYTF0XX7ci7t1X
B93I6v9HbRL1n3S6PX5BU7hlWcW0g6S/fPcwCvRhXOInsD1YgHR4pXnT26K6YBye2ZZp8/HDs3+P
D45ubm4aKX10cXdzN73rrU/QXPZH8e3tbR/qGSlWUKFazndtWmdlCI+AtJX5t5cXowtXtxJGsPi3
aQ/8VUCPmGtTrpdcRe6r25VMBF2BT0Xy7jBXaiVnUYS/4XW45HwJm1ZU6tA1YxGjsYy+/VoR8RKN
w0l46l5CaC3Db/JwAeea8xaofXLCUxJoH5JnWPdX8LR25rvJRWMLgHIfCmOevsAP5APgxlK+O/Y3
Af29MB8von+CP6FmRTdY4ej26330lcR/p8r9fKgoS6N/AO9iSQK6yiFMJC0q6Li5iCBywLyBIlBx
4TpfMSUjrXmkR2RUUJlEUEkULcw3ImJiB9AG0NNUmIVqrQDpuA2w8X3oeHvG3NuHxvV9HskcGuy0
s0RfZlDrO5D5Xgrc6leYLwCbtuJ4cQbmhPlFaxUk+utrgKyPF59LyO4kgcw/QWAlyGzGoFYQoEdd
8IlEPENvfq24mn95f39vn5BjD9iTcd33QK8Tv7hlD7f3D+j686cvH28fbu1Q6OSDw0HZ/1nlyR4q
T4ZV/n3BTPcAM90fjPlpQmpktl5tpreB7xdz9pr8asw11u1U/XwP1d+UsVzNd+gPd/bFF9AIfswz
BJl9gwzhFUs/kF/AAP8ign8WnwHpGwbxNybBeIR+/ECfsMpDqPZ/7l8coPFfmjuMBNqQJp0sJSry
qivaxgTueN2SbtFOM+4wEd/D3taM0KQs7q4i/WOe3//80b79IWbUB9ulKCZOjjGhfgrRVyxRhpkk
oUP0/wzy36uwvt3DI2//mMTu/Bh2BAYy/7b2X1BLAwQUAAIACABEAxlJFTU1knoAAAC8AAAAKgAc
AGh0dHAvdGVzdHMvbWlzYy94c2x0LWJhZC1pbXBvcnQtc3RkZXJyLnR4dFVUCQADkJ2+V5Cdvld1
eAsAAQT1AQAABFAAAACNjkEOwyAMBO95hT9AIO2hFb8hxFUsGYyMkfr8EuUD1V5WO4fZLKURJyOp
gKqiET7ECKdZi95vj9caZrb4DiH4Qj17xS5DM3b/7WxuT4ej0kTNDaV1bsBUEZ6AjAWrwU2XSeJd
IcKoaZ8aE2BJx3+6Kn3k87qXLDEvP1BLAwQKAAAAAAAsAxlJAAAAAAAAAAAAAAAAFgAcAGh0dHAv
dGVzdHMvbmF2aWdhdGlvbi9VVAkAA2Sdvlf+n75XdXgLAAEE9QEAAARQAAAAUEsDBBQAAgAIACwD
GUnbCNNCOwAAAD8AAAA3ABwAaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL2ZhbGxiYWNrLWFuY2hvci1y
ZWxvYWQtc3RkZXJyLnR4dFVUCQADZJ2+V2Sdvld1eAsAAQT1AQAABFAAAABzLClJzS0oUSjJV0jN
KyxNLU1VSFQozy/KVsgESiiUZ2TmpCpAxDOLFZJSM/PSFQqK8pNTi4tTU/S4AFBLAwQKAAAAAAA8
AxlJAAAAAAAAAAAAAAAAFAAcAGh0dHAvdGVzdHMvc2VjdXJpdHkvVVQJAAODnb5X/p++V3V4CwAB
BPUBAAAEUAAAAFBLAwQKAAAAAABDAxlJAAAAAAAAAAAAAAAAKgAcAGh0dHAvdGVzdHMvc2VjdXJp
dHkvY29udGVudFNlY3VyaXR5UG9saWN5L1VUCQADjZ2+V/6fvld1eAsAAQT1AQAABFAAAABQSwME
CgAAAAAAMAMZSQAAAAAAAAAAAAAAAD0AHABodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1
cml0eVBvbGljeS91c2VyQWdlbnRTaGFkb3dET00vVVQJAANsnb5X/p++V3V4CwABBPUBAAAEUAAA
AFBLAwQUAAIACAAwAxlJHY8FRbwAAABNAQAAUwAcAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVu
dFNlY3VyaXR5UG9saWN5L3VzZXJBZ2VudFNoYWRvd0RPTS9hbGxvdy1hdWRpby1zdGRlcnIudHh0
VVQJAANsnb5XbJ2+V3V4CwABBPUBAAAEUAAAAKWOwQqCQBRF933FbWVBDa8xTQdaREVEUCCBi2hh
9kphHKXG6PNTCCJo1+reC+8djqSRP6RgKD0QKekpVwrfD5CWhUiqSrOI+bTJbRvz0lg2Viz4wbqs
iqYfgpHb/rke+eH4+M2IZ9F2vV0pYEwKyyjaRaoB1/psHIsrW5z5ktTaIjdV3a5HnvIA6wWmoAH4
dmtLtyN/SU7C/yUbxkcyIFdhn/FPK9CT4PRMrXXfQZbcYcr3QZolxrC+i84LUEsDBBQAAgAIAEED
GUljqqxsggAAAKgAAABAABwAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xp
Y3kveHNsLWFsbG93ZWQtc3RkZXJyLnR4dFVUCQADip2+V4qdvld1eAsAAQT1AQAABFAAAAAtjUEK
wzAMBO95hV4QO72k+BWFviC4G2JQLCMppf59TSl7WobZzXK2wpsXqQRV0UR7YdDh3lIIy22d48iS
7jHGYMiXFu8hS3VUf/77Q7jkHhQml2ZYMO+M+WNMXCpoJTDOIdAP2AH4NGh6Q21cJ5LKnZY50o7N
rzFEm4Lsak3U8Zq+UEsDBBQAAgAIAEMDGUljqqxsggAAAKgAAABSABwAaHR0cC90ZXN0cy9zZWN1
cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kveHNsLXVuYWZmZWN0ZWQtYnktc3R5bGUtc3JjLTIt
c3RkZXJyLnR4dFVUCQADjZ2+V42dvld1eAsAAQT1AQAABFAAAAAtjUEKwzAMBO95hV4QO72k+BWF
viC4G2JQLCMppf59TSl7WobZzXK2wpsXqQRV0UR7YdDh3lIIy22d48iS7jHGYMiXFu8hS3VUf/77
Q7jkHhQml2ZYMO+M+WNMXCpoJTDOIdAP2AH4NGh6Q21cJ5LKnZY50o7NrzFEm4Lsak3U8Zq+UEsD
BBQAAgAIADwDGUlgS2YQkQAAAPsBAABFABwAaHR0cC90ZXN0cy9zZWN1cml0eS94c3MtREVOSUVE
LXhzbC1kb2N1bWVudC1zZWN1cml0eU9yaWdpbi1zdGRlcnIudHh0VVQJAAODnb5Xg52+V3V4CwAB
BPUBAAAEUAAAAO2OMQ6DMAxFd07hC4QEllaZYejSngEFUyKZJLKdCm5fOvQGHau/vq/3Qt5KpElj
ToDMmT0skRBW1eKt7fpL6851/uqcs4KhctTD7iJmGO+3cTC7kJlzqBsmNV/gwfEZU7tvBBQTQg9I
+CFA9CCUFVGb8+lfyHK6PeREB3StgwUnrYwCEyNILSWz4tyEf+iPQ99QSwMECgAAAAAAPQMZSQAA
AAAAAAAAAAAAABoAHABodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L1VUCQADhZ2+V/6fvld1eAsA
AQT1AQAABFAAAABQSwMEFAACAAgAOAMZSWHfAKA0AQAAbAUAAE4AHABodHRwL3Rlc3RzL3htbGh0
dHByZXF1ZXN0L2FjY2Vzcy1jb250cm9sLXByZWZsaWdodC1jcmVkZW50aWFsLWFzeW5jLXN0ZGVy
ci50eHRVVAkAA3udvld7nb5XdXgLAAEE9QEAAARQAAAA7ZK/TsMwEMZ3nsIPgGPnEjt/NhOnC4il
QgyIwUndYjWxI8cF9e1x1MICElOnsvjk09199/10QFOOaYmBIUprYHVeJMAY6t2YqGkadPKsu3sT
kkcdPpzfG7tLpH7Xg5tGbcNLmUKV15DlKeTZK5Jm3jfO7Y1eB+fVTqP+Tdld7EKTG0x/RFvvRgQo
OERvo8pSirZm0PXpJYQ8zdrPpDuYYdO5QB5M55U/krOq9qRxXq/NeBhU1FjyptczAc7EqmlLTAXl
OC9lg0UDFJecU6CyWglRko0KKvbboIxdVOTyF9Gn6VUwzpK0FakEnmHWNm2cQlNcySzDbSvuGKRV
kRfV90onp/NXTDpjY/pkar6BX9Hyn2hjWFaKOH+gZWe0+T/aP9Hy4sJXSxe0cJVoywtf7VWg/QRQ
SwMEFAACAAgAOAMZSaC7WqBMAQAA2AoAAE0AHABodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2Fj
Y2Vzcy1jb250cm9sLXByZWZsaWdodC1jcmVkZW50aWFsLXN5bmMtc3RkZXJyLnR4dFVUCQADe52+
V3udvld1eAsAAQT1AQAABFAAAADtlbFOwzAQhneewg+AY/viuEk2k6QLiKVCDIjBSd1iNYkjxwX1
7XHUwgISA8rULD75dOf/7tPpDJQJTFMMCaI0hyTnqyimDDW2i9QwtDp61vW98dGj9h/WHUy/j0r9
rls7dLr3LymDjOcQcwY8fkWlGQ+FtQejN946tdeoeVP9PmShwbamOaGdsx0C5C2it0FlCkU70+r8
fBJCnkbtRlIfTbutrScPpnbKnchFVTtSWKc3pju2KmhMftPokYBI5LqoUkwlFZinZYFlARSnQlCg
ZbaWMiVb5VXI770y/aRSTncZ+jSN8sb2hFWSlSBinFRFFV6hDGdlHOOqkncJsGzFV9l3SedOxy8b
1aYP7nNT4w38ijaeGS2d0MJVouU/0QYzlRRw/kCbXNDyZWr/RitmRnu9Uwt02bVzoWXLQpgLrVi+
sbnQrpZd+3+0n1BLAwQUAAIACAA4AxlJsewhgzMBAABsBQAASwAcAGh0dHAvdGVzdHMveG1saHR0
cHJlcXVlc3QvYWNjZXNzLWNvbnRyb2wtcHJlZmxpZ2h0LWhlYWRlcnMtYXN5bmMtc3RkZXJyLnR4
dFVUCQADe52+V3udvld1eAsAAQT1AQAABFAAAADtkr9OwzAQxneewg+AY/ts599mknQBsVSIATE4
qVusJnHkuKC+PY5aWEBi6lQWn3y6u+++nw4oSzHNMUhEaQmyFFnCBaDODYmept4kz6a9tyF5NOHD
+b0dd0lt3k3vpsGM4SVnUIgSuGAg+Cuq7byvnNtbsw7O651B3Zsed7ELTa633RFtvRsQoOAQvY0q
Syna2t6Up5cQ8jQbP5P2YPtN6wJ5sK3X/kjOqsaTynmztsOh11FjydvOzARSqVZVk2OqaIpFXldY
VUBxnqYUaF2slMrJRgcd+8eg7bio1MtfRZ+208G6kbBGsRpSjmVTNXEKZbioOcdNo+4ksCITWfG9
0snp/BWT1o4xfTI138CvaLMLo6ULWrhGtJL9RBvDslLE+QOtPKMV/1f7N1p+YbRXcbWfUEsDBBQA
AgAIAD0DGUnnqLtvIQEAALYCAABAABwAaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9jcm9zcy1v
cmlnaW4tY29va2llLXN0b3JhZ2Utc3RkZXJyLnR4dFVUCQADhZ2+V4Wdvld1eAsAAQT1AQAABFAA
AADtkM9OwzAMxu88RR6ANH/aZG1voekuIC4T4oA4pF02rLVJlWagvT2pNhDSeIRdbNmy/fn7ccok
piXmAlFac1GLVSakRL0fMzNNg81ebfcIMXu28cuHA7h9pu2nHfw0WhffSsarouZ5wXiRvyMN86Hx
/gB2E30we4v6D+P2aQtNfoD+hHbBj4ij6BG9TyrLKNrBYOtzJIS8zDbMpDvCsO18JE/QBRNO5KJq
A2l8sBsYj4NJGksfejsTLoVaN22JqaISF6VusGo4xaWUlFNdrZUqydZEk/ZdNOAWFb3UKvmE3kTw
jrBWMc1ljkXbtOkKZbjSeY7bVj0IzqpVsap+Xzo7nX9y1oFL7bOp+Y7/h7bMr9GmtLyUcF6hFRe0
xQ3tX7TfUEsDBBQAAgAIAD0DGUkWRKOnHgEAALYCAABGABwAaHR0cC90ZXN0cy94bWxodHRwcmVx
dWVzdC9jcm9zcy1vcmlnaW4tbm8tY3JlZGVudGlhbC1wcm9tcHQtc3RkZXJyLnR4dFVUCQADhZ2+
V4Wdvld1eAsAAQT1AQAABFAAAADtkMFOwzAMhu88RR6ANInbZG1voekuIC4T4oA4pF1WorVJlWag
vT2pNhASFx6Aiy1btn//H1AmMC0xcERpDbzmm0yAQL2fMj3Po8meTXdvY/Zo4ocPR+uGTJl3M/p5
Mi6+lAyqooa8YFDkr0jZ5dh4f7RmF33Qg0H9m3ZD2kKzH21/RofgJ0RR9Ahuk8o6ig52NPUlEkKe
FhMW0p3suO98JA+2CzqcyVXVBNL4YHZ2Oo06aax925uFgOBy27QlppIKXJSqwbIBikshKFBVbaUs
yV5HnfZd1NatKmqtZfJpex2td4S1kikQOeZt06YrlOFK5TluW3nHgVWbYlN9v3RxunzlrLMutS+m
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
Y2gvVVQJAAO/nb5X/p++V3V4CwABBPUBAAAEUAAAAFBLAwQKAAAAAABgAxlJAAAAAAAAAAAAAAAA
KgAcAGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL1VUCQADw52+V/6f
vld1eAsAAQT1AQAABFAAAABQSwMECgAAAAAAXAMZSQAAAAAAAAAAAAAAADAAHABpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9iYXNpYy9VVAkAA7+dvlf+n75XdXgLAAEE
9QEAAARQAAAAUEsDBBQAAgAIAFwDGUmdtW0UkgAAAJ4AAABHABwAaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvYmFzaWMvbW9kZS1uby1jb3JzLXN0ZGVyci50eHRVVAkA
A7+dvle/nb5XdXgLAAEE9QEAAARQAAAAHcy7DoIwFADQ3a+4oyZSSxF5rKAxkRBjMQ7GocLVNJRe
Uhr9fYnjWY7g4S7gaSBi4DwXuzyOWZpwaGlgahwNshs+T9qzGv2XXK/tm5X4QUPjgNbf0zDiWS6i
bZhE4gG1vF4qidOkyW7+KMhabP1sODbNGQypDl5KG+xg2RcH6R2qYe8cuZIGpa2U1RqCbI5Xix9Q
SwMEFAACAAgAXAMZSckJRHiSAAAAngAAAE4AHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2ZldGNoL2FwaS9iYXNpYy9tb2RlLW5vLWNvcnMtd29ya2VyLXN0ZGVyci50eHRVVAkAA7+d
vle/nb5XdXgLAAEE9QEAAARQAAAAHcy7CsIwFADQ3a+4o4KNaWqfa6sIliJGcRCH2F4lNM0tadDf
tzie5QgeJgHPAhED54VIijhmaSKgpYGpcTTIbvg8as8a9F9yvbZvVuEHDY0DWn/PwojnhYi2YRqJ
BzTyeq4lTpMmu/mjJGux9bPhcLmcwJDq4KW0wQ6WfbmX3qEads6Rq2hQ2kpZryHI53i1+AFQSwME
CgAAAAAAYQMZSQAAAAAAAAAAAAAAAC8AHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2ZldGNoL2FwaS9jb3JzL1VUCQADxZ2+V/6fvld1eAsAAQT1AQAABFAAAABQSwMEFAACAAgAYAMZ
SX8yWRmrAAAAtAMAAEQAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2Fw
aS9jb3JzL2NvcnMtYmFzaWMtc3RkZXJyLnR4dFVUCQADw52+V8Odvld1eAsAAQT1AQAABFAAAADN
zsEKgjAcgPF7T7FjQa45nalXLYJEohkdosPSfzF0m8xRr5907gF2/C4fP0rCJCBpQBkiJKdJzjIc
pwlqjcJiHAfAV3gcpcM1uI+xvdQvXMIbBjMq0O6WhhHJchrF4Taid1Tzy7niME3S6M0vCqM1tG5u
dGiaExqM6NBTyAE6tOyLPXcWhNpZa2xplJCa82qNgmwerxb0ny7zWccI9VkXxT7rYq91jHii+wJQ
SwMEFAACAAgAYAMZSUjHi+2sAAAAtAMAAEsAHABpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2ZldGNoL2FwaS9jb3JzL2NvcnMtYmFzaWMtd29ya2VyLXN0ZGVyci50eHRVVAkAA8OdvlfD
nb5XdXgLAAEE9QEAAARQAAAAzc67CsIwGEDh3afIqGBjkl7TtVUESxGjOIhDbH8ltE1KGvT1Lc4+
QMazHD5GaBKQLGAxIiRnSR5zTLIINWbAchx7wFd4HJTDNbiPsZ3SL1zCG3ozDqDdLaMh4TkLI5qG
7I5qcTlVAqZJGb35RWG0hsbNjfbn8xH1RrboKVUPLVp2xU44C3LYWmtsaQaptBDVGgV8Hq8W7J+O
px7rKPFaFyc+65LYZ11KPdF9AVBLAwQUAAIACABhAxlJ62sEi50AAAA8AQAASwAcAGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL2NvcnMvY29ycy1uby1wcmVmbGlnaHQt
c3RkZXJyLnR4dFVUCQADxZ2+V8Wdvld1eAsAAQT1AQAABFAAAADNzr0KwjAUQOHdp7ijgo1J2tqf
tVUESxGjOIhDbK8S2iQlDfr6FmcfwPFbDodTtg5oGvAYKM15klNGYp5CYzWRw9AjueB9rzyp0b+t
65R5khJf2NtBo/HXlIU0y3kYsSTkN6jF+VgJHEdlzeqLwhqDjZ8Mu9PpAL2VLTyk6rGFeVdshXco
9cY560qrpTJCVEsIsim8mPFfd1H0J3cfUEsDBBQAAgAIAGEDGUmzgc5DnQAAADwBAABSABwAaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvY29ycy9jb3JzLW5vLXByZWZs
aWdodC13b3JrZXItc3RkZXJyLnR4dFVUCQADxZ2+V8Wdvld1eAsAAQT1AQAABFAAAADNzr0KwjAU
QOHdp8ioYONNqv1bW0WwFDEVB3GI7VVC06SkQV/f4uwDOH7L4XBgUQBJwDcEIONxBoxCEpHG9lQO
g0Z6wftBeVqhf1vXKfOkBb5Q26FH468JCyHNeLhmcchvpBLnUylwHJU1qy9yaww2fjLZ1/WRaCtb
8pBKY0vmXb4T3qHst85ZV9heKiNEuSRBOoUXM/7jjgP8yd0HUEsDBAoAAAAAAIYEGUkAAAAAAAAA
AAAAAAAGABwAbWVkaWEvVVQJAAPsn75X/p++V3V4CwABBPUBAAAEUAAAAFBLAwQKAAAAAACGBBlJ
AAAAAAAAAAAAAAAADwAcAG1lZGlhL2NvbnRyb2xzL1VUCQAD7J++V/6fvld1eAsAAQT1AQAABFAA
AABQSwMECgAAAAAAhgQZSQAAAAAAAAAAAAAAABQAHABtZWRpYS9jb250cm9scy9pcGFkL1VUCQAD
7J++V/6fvld1eAsAAQT1AQAABFAAAABQSwMEFAACAAgAhgQZSXwdIeC+AAAATQEAAFkAHABtZWRp
YS9jb250cm9scy9pcGFkL2Nsb3NlLXBhZ2Utd2l0aC1waWN0dXJlLWluLXBpY3R1cmUtdmlkZW8t
YXNzZXJ0aW9uLWZhaWx1cmUtc3RkZXJyLnR4dFVUCQAD7J++V+yfvld1eAsAAQT1AQAABFAAAACl
jrEKwjAYhHef4pyqoOFvbGMNOIiKiKBQhA7iUOuvLcS0aCo+vhYEHdyc7g6Oj0+Sr/oU9WUIIj1Q
2vdFOBoiKy8irSrDIuHDqnBNTEvr2Dox4zubsrq8+i4K/HCoZUBqpOT+m6GQTOL1cr3QQEAa8zje
xPoFrs3Reg5ndjjyKa2NQ2Gruln3IuMeljOMQT3w9dqUdkv+kFQU/C3ZMD6SEQ00tjn/tAI9CF7H
1sZ0PeTpDbZ8H7I8tZbNTbSeUEsDBAoAAAAAAMEDGUkAAAAAAAAAAAAAAAAMABwAbWVkaWEvdHJh
Y2svVVQJAAN5nr5X/p++V3V4CwABBPUBAAAEUAAAAFBLAwQKAAIAAAC8AxlJ/ic44DUAAAA1AAAA
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
dHh0VVQJAANsn75XbJ++V3V4CwABBPUBAAAEUAAAAAvLTC0vyC8qsVIoz0wpybBNSS3LTE7VBXO4
uIqTE3NSOQ31DECAKzexIhgsYAoTyMwLRlFRllmcmZSTGpSaXMJZrZSTmlaiZKVkbGICkVbSUSrJ
LwCKGMD5YHtAaowQYhmpmekZII2mZhZQwVouLgBQSwMEFAACAAgAQgQZSQ0DuyXvAAAAMwIAAEQA
HAByZXRyaWVzL2Zhc3Qvdmlld3BvcnQvaW9zL3dpZHRoLWlzLWRldmljZS13aWR0aC1vdmVyZmxv
d2luZy1kaWZmLnR4dFVUCQADbJ++V2yfvld1eAsAAQT1AQAABFAAAADNj7Fug0AMhufwFKdbiXNp
CVHVCVXt1C1IzXwBEywdHLrzAVXVdy+QqFWkbl3qwZY/279+A4BQb9aEBr161qzVyzFXRzy9El/L
UyBTqgMa1B6Butq26KkJRrN1yuh3GxgYPYNDHwx75ZAdTXqV9qx6wqGzjhVZrwYquQbyUGJPBcKl
tz26ytiB2jPg2GHBWG545CiO4//lThcctFm8ZZmAZJ2KeE5ZFglfaIOru812jkg0eswXkn4TavOb
HejJ08ngYfp49SENViwf5fYylWvJtrvpFz8TSe5/WI10ruezdP9whZ9R/Ktwstv9XVpEX1BLAwQU
AAIACABCBBlJhKNxFGwAAACnAAAASAAcAHJldHJpZXMvZmFzdC92aWV3cG9ydC9pb3Mvd2lkdGgt
aXMtZGV2aWNlLXdpZHRoLW92ZXJmbG93aW5nLWV4cGVjdGVkLnR4dFVUCQADbJ++V2yfvld1eAsA
AQT1AQAABFAAAAALy0wtL8gvKrFSKM9MKcmwTUkty0xO1QVzuLiKkxNzUjkN9QxAgCs3sSIYLGAK
E8jMC0ZRUZZZnJmUkxqUmlzCWa2Uk5pWomSlZACRVNJRKskvQOGDbQGKGBshxDJSM9MzQNpMzSyg
grVcXABQSwMEFAACAAgAQgQZSTMgSzDxBwAAfhsAAEwAHAByZXRyaWVzL2Zhc3Qvdmlld3BvcnQv
aW9zL3dpZHRoLWlzLWRldmljZS13aWR0aC1vdmVyZmxvd2luZy1wcmV0dHktZGlmZi5odG1sVVQJ
AANsn75XbJ++V3V4CwABBPUBAAAEUAAAANVZW2/jNhZ+bn6FkGAboIgkO7YzvmS82MkFBbotFk2x
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
MrjmvGhws78D3OwMcLMj4Ejxcsxy+tGE2Mjb67WdPlTkvNAxl+CTodOQO2qKuzNM8XURiXI1bA9V
woFqfoSE+Oq3r3+tmFypntC8Lc3jHm7ta7CUehirmfEb84CS3RIf9cjoFG1JTW775AxNtQRnd/Om
4B8nPda2ORDIaYNboaPWPmJJdoZbzrc2dDPryRQSTL38H9j7r8yQv6q4fjjDTx+G/fRndO48NHEC
C+l/dvsfUEsDBAoAAAAAAFMEGUkAAAAAAAAAAAAAAAAMABwAcmV0cmllcy9zdmcvVVQJAAONn75X
/p++V3V4CwABBPUBAAAEUAAAAFBLAwQKAAAAAABTBBlJAAAAAAAAAAAAAAAAFwAcAHJldHJpZXMv
c3ZnL2FuaW1hdGlvbnMvVVQJAAONn75X/p++V3V4CwABBPUBAAAEUAAAAFBLAwQKAAIAAABTBBlJ
/ic44DUAAAA1AAAAQAAcAHJldHJpZXMvc3ZnL2FuaW1hdGlvbnMvYW5pbWF0ZS10ZXh0LW5lc3Rl
ZC10cmFuc2Zvcm1zLWFjdHVhbC50eHRVVAkAA42fvleNn75XdXgLAAEE9QEAAARQAAAARkFJTDog
VGltZWQgb3V0IHdhaXRpbmcgZm9yIG5vdGlmeURvbmUgdG8gYmUgY2FsbGVkCgpQSwMEFAACAAgA
UwQZScmGP/mhAQAAVwMAAD4AHAByZXRyaWVzL3N2Zy9hbmltYXRpb25zL2FuaW1hdGUtdGV4dC1u
ZXN0ZWQtdHJhbnNmb3Jtcy1kaWZmLnR4dFVUCQADjZ++V42fvld1eAsAAQT1AQAABFAAAADNkU9v
nDAQxe98itGeWrGGkCobqafNNrSqmiirgpKzF4bFksHIM+7Ct++wIm1ySo6REH/Gz8+/91BKQfro
bOiQ0lvNOs2fivQJD78ML49dMLZOf6NFTajM0LoeyXTBanY+tXpygRUjsfJIwTKlHtkb8aM/x1T3
ptNsXE/LK4p2ZCUejLVir3tqnO9I4ThgJbOER47iOP4oXLrioO2ZarsFla2zDcTZ+hK220gVjz8g
SzKop153poJ/tjCfTFH8/ebn3VcoTYc1CBCctGHTH0G8oXdsmulWuIEdHBAqbS3WEUSqbA2BXOQ6
WRSwJDpnmYU1MvrOyK5Ti9yiBx3YKe9YUiwEeO/OFIPm9j8UweBRSUVmsBMIweCkHvnm8+AF/HN8
kIE3Y6Qi9dADhapCojVIt3Ay1gKhnCj3uVdwDaz2N0WxAvlrpI8oysZZ604S/jDBqsyLEr493O/v
8jJfJbNrpOYd4J1j6TK32GHPyRF5t3Pjp8/JOLeQZddv6aZZp7LN5bsMv2zeZ3h1dbHoluhNsHba
a0+SSNbZB5wzvAomg79QSwMEFAACAAgAUwQZSfJaU0wCAQAA0wEAAEIAHAByZXRyaWVzL3N2Zy9h
bmltYXRpb25zL2FuaW1hdGUtdGV4dC1uZXN0ZWQtdHJhbnNmb3Jtcy1leHBlY3RlZC50eHRVVAkA
A42fvleNn75XdXgLAAEE9QEAAARQAAAAjZFBasMwEEX3OsXgVQu1qVuSrpNismmIwSZ71R7HAklj
NGNs375yGmh2DQiB/jye9FF1PkCe5dAuXjvTgPbGaTHkQZCFlap7wxAXk8OYzZKpdQJC0KJgcMYj
TD1KjwH0KJQGEi14M+GRrrZBS/8nZxgCpm60ZrALUICBWNazXIO7RwTtuaPgIAbBzEqdPPDYNMj8
AguNMBlrgTHeF/dgkIE6SMpdVSXgIqUvGMmOrKUJW/heIKmLqobP07H8KuoiyZRSKw6BSKrzobDo
0Et2QdnvaX56zua1f55//IMtK5bm27dHdO/bh3SbzesvduvcjdYupQ4cq8SxhBHjF933UeoHUEsD
BBQAAgAIAFMEGUnnkzkj9wgAAF0jAABGABwAcmV0cmllcy9zdmcvYW5pbWF0aW9ucy9hbmltYXRl
LXRleHQtbmVzdGVkLXRyYW5zZm9ybXMtcHJldHR5LWRpZmYuaHRtbFVUCQADjZ++V42fvld1eAsA
AQT1AQAABFAAAADNWmtv28gV/e5fMbDR9XZhUpIlOZbkuIhtuS2adIPa2P1YDMmhOPGQo+UMLSm7
/e+986JIipS9gBUkiUPO+9zXuXcIXyUyZddHVwnBETxSIjEKE5wLIt+fFjL2Lk+hW8gNI9dHU0az
pzM0faaCShKh348Q/JFkLb2IhDzHkvJsijKekZkeCngekdwLuJQ8naLBco0ieCfR7Oh/R2Y7u0nI
Gc+n6KQ/nOgx/54yckfj2I4HOHxa5LzIIs9NjS/V3+pB5gTBGY3QSRRFZizmmfRinFK2maKUZ1ws
cWgBpjhfUIA8ICnqm64lB+G0HDlhINEz0YCSQQPpcDhs2V/gTHiC5DSuDAr6legzqod6jMRyivr+
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
ANjPGRSBYQgF4hmCZAoFIGNQUoJ9kLoXEIF4jH74reBy9vnDw4N5Q/aSAWtirq7HQHzBxk57nD88
otufP33+OH+cm67D+Oq779Uul98rsMkbAFNegHLOJZQPc0bURciHa8jNDV//+Fd/rThqMHh3EPiD
/sHxbxR+b3BxfhgBBt/GAMOLAxng/NsYYDzuHwb/8K3wW86MC8Y2n9WvQUQKt8wLchjgo++VUgZv
kR1rKeMwMC8OoMA/U4M2HvpeDFdN/Vs1/wdQSwMECgAAAAAAkgMZSQAAAAAAAAAAAAAAAAkAHABz
ZWN1cml0eS9VVAkAAySevlf+n75XdXgLAAEE9QEAAARQAAAAUEsDBAoAAAAAAJIDGUkAAAAAAAAA
AAAAAAAfABwAc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L1VUCQADJJ6+V/6fvld1eAsA
AQT1AQAABFAAAABQSwMEFAACAAgAkgMZST314uO9AAAATQEAAJsAHABzZWN1cml0eS9jb250ZW50
U2VjdXJpdHlQb2xpY3kvdmlkZW8td2l0aC1maWxlLXVybC1hbGxvd2VkLWJ5LW1lZGlhLXNyYy1z
dGFyLXdpdGgtQWxsb3dDb250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VTdGFyVG9NYXRjaEFueVBy
b3RvY29sLWVuYWJsZWQtc3RkZXJyLnR4dFVUCQADJJ6+VySevld1eAsAAQT1AQAABFAAAACljsEK
gkAYhO89xXSyoJa/XTVb6BAVEUGBBB2ig9lfCtsqtUaPn0IQQbdOMwPDxydpEPYp6ssARFpGWoVC
+T7S4iqSsjQsdnxc5a6JaWEdWydm/GBTlNe67yMZBgMt1ZDCkTp8M3aTeL1cLzTgk8Y8jjexrsGV
OVnP4cIOJz4nlXHIbVk165Gn3MNyhjGoB77dmtJuyV+SwfB/yZrxkYxIaWwz/mkFehK8jq2M6XrI
kjts8T6kWWItm7tovQBQSwMEFAACAAgAjgQZSVK+eI4nDAcA/GcmAAoAHABzdGF0cy5qc29uVVQJ
AAP7n75X+5++V3V4CwABBPUBAAAEUAAAAKT9a7Mju5IlBv6VNn0d8RjeD32rrtZIrelRt1XXjCQb
k6Vx783MZF1uchfJnY8r6/8+AUSQcCDgC5EltSlvnlMnwAjA4Y/ly93/r//ueLgfbvfXw/l+uP53
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
u2/XyyTID43+83j/vrsf7yf+RUR9HWaVUinP3fcjb6AanbBo78OkZidPJG3LdCAn1nbrIju6MIYm
lTIpFPDO9eVb7s8k+q/fj6e3rDwWLcTqEF87UUUS8utOhmu3/wVPwJZ3IHNW80/nTc+Owi1vAfsS
ZAn7VGRUlhbrOZkEditi/RqBegffD69/e7n84t031aiA5epeL9+SIn3Zs/undbV/C+7xOonc4fpx
AeLia2mbT+59f//OvmK560lUF2O6f3m5Hn4c4dYUwTY6MaWMs2Lx3D8+J5/w98ckocd39oRl7JnM
23S1XpN2RCery+3WuT5h8bfed7PN/3qc/vtdNnmTN/KKXYppkdgzmbeP43k2WOxrEOEoxfNZwND1
sqKWivlwT/vzWxLLvHHsaclKpBfz9H0/XYTL5+v33eFH0kpJyx7OQE+XMy85p+fGz9/MyrRu/Mn5
FS7TiV++7l4un+e326InsKVVsRLVh5FOEn7en7CHImr7NF/K++Xbt8lTwkdmdb2B4anYP6ZLsnu9
7m/sVTGSbtuiCq77FOQO5MTUku6fzkyy/1mdZfcKekTSVYss+1UbkrzK4nSmI5g8cXa5ysAt+1DU
a4rjZh3LHoKuV5g/Kqv32xSa3K/7I/DQGvtKfMy8CYuOfwgD0gWmPlC9vMa0BZ8fp8v+bXA2UtWa
tliq6SZdfw++w3a3cYpAL5PLPxm5y4/D9etp8t3fjj9Y6aiBlIU6Pqmrz+QozVbmwFp4RQKPQsx9
+CdJqPlDaKCF+Sa/HW9JgBYnn3041I6l7khjvkyzqU+hx/4IVFI5hVytG5cYs8jz02++cXGhfMaF
mWU92aTW3ueH1r5klrXr4X06rLfJwX87ADWgHh5ZOipCmaSrfiTTmaKsMye26vG2eZWEijzC4Cla
ve4nNXydtOnXdI9+HKf9nL7/43I7JmucorhJqG7prymy5dYXz/WNSq1OjbVq9ab5y2dQIWv/6esZ
l1o9Llp+4zItab2bk9icDhu2UT2Xy5CmXVDJdGWXk8q39+3wNS09PfqOFsw+/uy1qzyeJ/cIl2Jx
Da6HvNjtc3JrbpfP6+t06t8P59lJmRGCG1jXPtdNq5rZjTvvfxy/ZQ9pOpzT8XUGQW7fL5+T7bt8
TKsnJZL11xRwzRjrz+P5bdIG+f+aNj+Zza+n/RQEXifnZXq9HKPybzLHlPlNMlFnAaumq7Xgb/lE
84rJy9xPnt/xFSynnssl4qBfgpOP4+7r/nRLUdZpUl7JJ5hsy/Rv79dP8HKzZzCvZp8vN+mTSQs9
fZPXaaf+tjveMiybRW/a+vsUzYC3FM91SSVqu5V/to+mvKp8Dp3pLgkWKWKRKPPeP3dvuri3+X1e
9jd0ALMjO39aiu1Ne56LkE1HkKOG+UD3p8k4T0ey4TvLjcidxGJPXp5CSH4CLKl7IsgJNljHc7v3
djnM4pH036ZdLLciXZAFIXkI7EqKs2yD1WKRjel4vFw0E7nvP78n/yKrpgzhJOWC9EeRNpLWfD/c
95Ni+zr91993D6sLFiH7LubXSv5yxstnpbnbv10+7v9r0rz7W0qegMXKldLmyTYpChc8WVSG1Lm5
0RI+JG/h8vIvkxW5LQ9mtCX/+93t+PfD7sgLa/YHF2H12ZXzYm7EsajvZi2wiCKLiFzoKvzsTXyb
/PT9pHxe95NP9bbLt+BhDvgPVpEYlew12Xm519tN/SVnn0IEoYXcvRopdz8mg3j9dt4JsXvpLpui
nZmhrtTSHmqJwdI6dvdqrYy7l+vbZPd206oHbpUlOZRXIWSSuzBicip2h9vr/mO6SsKBF1nujlpa
Hj/MurBSpQ9SOgXTtwX9xJ8knyslS7C047inglKhdi/T10yuy9fT5GX83Cm1e+MWMnPHhvmVCkv5
Pn2Tmb7qNlnrt+lOT7Zk+if+dWbHeH4dAn11X0cK8DqmLBSf0Xo5Kbs75qNCe7Nkc+ZPsk848j7t
sZpe4zPFOWk+ALvA0jVuvSePtwizvNzTa+z51yhS5wsgNm3r9BZe7r7+nMzMfvItJ5U27e1Xbp2g
65dBJ20l2Nrgugt1TlqhkzZllTK2O+2NSXsj/PRRb+d0lxT/TdIW8SUlc/2P0hZ8lBeVvCzxgXTT
NXy1TiXjkbTYR5aYHWMi83fVt1s9JFiIMGkaszuddy+XX+mr3sAyyuhaSSwCPCnufMOtNruXb5OG
nRTFtF9gJbOowseXGbBDBu1QKB9GQ4mkRPOBqd0xa9BrvuFAnmU5+fC8FNNXpfkjes4BTjZt8sV+
XvcfOUv9ckjR+PG8qDOZLd3KkKSAZK6byg1vczmlWfY/mZCUBDgnFDtlcCbXZFopcAupORWRF8oF
kWZBWG+X0xTOppBrt9i3t8l1epvcTiEUt5rUZLXwRBz2KXP+cbmm++/YN1l0ff4klzNUsyv9crkm
9yGf3rGgpZPt8exac1Z4Xit5E+YhVzP6tP/IjtIl/88UAYFPMpF8Url5U1D5LWEHHx+nYwL6L2iT
zWL27aLZZhXwcrpM5r7a4O+H47fvaZci+2W2vE543l94XJLd8oUJXY5LLt7yW4YclmWe+y0kt5Cd
wZrmrXL0PXne6WEqjIZdRhCp9pls82Db5Bux3if+2GSRAFkqEvsb9VyO/cClNUqRAtN9r8eOW/a1
FhDA1i1Sn6+1fiVWqKQrm0WwRfa2aFYMNNmr3M/eLLZ3CpPy971eTpfrVlmfC7HyYhk8DZywP7QJ
f4u9qs7wcW+4LwS3JpZtNxkkWVAS/gvnHgv9LyTbleBF81Bz7CmCK+iLYOVc5EggNC+jwdVLqdFS
vB4n5iU+PZ9srToiykq7bkRUs7pTGl531q/iyat0tZ3k30ZWd3iRzCcIvvF9ZlLrfPopFjA2Isur
ectLTr7wGJBVULxVKJ+WGKxYafJ3V5VvU5XS/LjcdgtKntzv+SWnv9+P2XrGPftmytab7scGSxle
5xU7kzkccuVf8NpEU+OS/ghyIEv8Ysv071ayX0/Hj4cZOXWfU7H121zvbg09Le3JTpTSKV7789dC
UoFOr7T03uLMt+LNdznr3CTaCj2Uad4ftLZymkzZpySCfyDW2rtKrBcZBG/FG3DlTHXwjzzrY4X3
SbG9738hX2LpbDRfVv/EFt9+n/fv0wanOGBhBU6qlb1YWltybDmFosHVSu803vOlC/szGlB6g3tp
efdSVgapvfurbQcXP5QXI0yjgTvneXeu9g612/Cdgl3NuMr71eBGA/Pka3knNve2kybyzxGVkuRp
8k+YfV7ewfLSLVztnqolX50IRXPsdNr/Tug5ECJNLHYdyIELJ/kLVyu65eQzufD2sX+ddUHKjuZ/
PCCTa6VtVR26e/zVIxozNzR+7NN8WNAAeLo52ZtUW68tHwpoVVujeY8Ol69ID2kjiNs/fwuManiN
pnzt8wu6HRy6oU/sm0XyZknhGrcpfOP1mgy9DVpepWv6+Y+VxJoUPhZGTHjFRg4hB5aOd0rBO5FI
qYpvli+cb94fxLvLsIT5tUpVxqwClsf3p2+X6/H+/X0SDeATkKP086sih4fXKt7UG6Wow/PQBJUP
z19g6pTqQnvlFCYwcdHW7kAcuGG8R6nobczVs24UhDs+RNUE//KZAwkPUAFMRtUutxgZcT6q9F0o
7WHihAJaM5DvSZujN4cmL3xo4npgJQ838jYqku1W+R0l1KQ8tkDig4IUcsvwQaruu0skTuI/hkBU
C7zhgU7ig0nql6RbZqQZ+CV87EaAQSmfkgPQGx4YdESUck7eePxawKwQTz5Q7Hwgk+Yr+6HUMS2p
706IOtbh2oraKss6VCkx3TXxBnDIUmRClwkO2OZF3ubZCtIxg3vHu6txhRe7ERLHw2e+wRY2ZEKU
5mOf2NN1AIzjlwqhBor8CFHlY2rfwYmAKuffiVzuvFmWzYrwQkUiWFK9wKGMvOV0ddJJh60ONR8f
Uph+q4/HOwlG1kj9BskCckrCK8KJWLZ+UoWn/cdt0omnw/4KFSGJzrNSNH7gBgHLTi5iWCcR24U8
L6Cym5Eaq1T7ypt5smR89qMDKoKPs3wNZi5S349zXr6+DlK41M6qjL6Si709IFEEG5mN5TDaFjzo
FjvAf9/ye97yExMrc2nCaM8VUMu+Or4ldKPgJHCErNAMWs9aGx5GpKHMjLipEYDMhzPW1RHpLOiH
94/77xIi8/CvbgJaP0iN8QQAGmsn1WIMDRXmqt7b7vBrn0uyoZNAHD6Tm5MOIxhehgjOWqH1vJvG
X1vinpNgdgBPKHBzY//d+LBP8Og7FdAZMRsCXCAPT1Zz+fXm1V6tkbtlyWkB/nVITGRmtEOugYQ/
zE7p2DgLCmATw5tjqImQpIpwnVQUfFKxBhMWPdfcPs3fvq6X3oOTnrvDh3wElCSUgJqpAq+d7nma
bPaP5yZQQ1msWxcb5YMOGnmWErYNcTofE6nQ8zWBAQcIhKzCaws9TpBJ1lWaRI/CUXD6BN42iQH1
QGq4mJ/351To5ZNnEBiA9TRn59MfcXDhh7lJI2QXFAMOCZ/Zds1ang00eFtC/e/SM4K9IQCdEb3k
H6v2FZ+0IUosH5zRW0JqPh4jGimXqYlRjGj4Ha9zY5IP7XgJIFy+ol7HERm4ubr2l9SAC8RzW3SV
BEp+tx2SsPjQjrCdiGgBTcCrX0dEIvW4MHao6PiUpGvgB90CgADNrPJC2X1XW5IJ/JeJ0AkqgGyC
ZKCrIQMc+/L4qNV9zgPrXRregSapkhWPZ71L/L3zTVw/1Jpgnwj058fxuONfSsSaHmw3QBc88Gfr
bEntCP6hkZG+560gt5mPEklKLw8FnkIZxOni4QvTlU8m18X7l172gsMNiBYfRqtm6+UoIudR76Bq
nuEWmeAtl4k1etePz+fmdsLzFlXpHtoNlDq/Vy1RcEvyGZguZeBprpfiLxBhMsnSlYTmdXgOLIEM
KtYCyKLwKt1T8DBXNj7aRuRvmI99udhzKIP86eiqdNVSr8+pdf6trOm/Vc954QNMmpKXpDVW2WQ+
I0FZWZv9Ot5QSaLIcz1/GGo5y2s5ki0JWdXJja4+7xGLurJB8SEjiKa7GeY+6MifGiXWWNnhw61M
Ok/NJahh3IoXaR4vouzz2dtw0EfgoyEKQJunuznHeHyChFilyuNlIyDecVKylyQbeIZ8ZCYiA/eP
AgXe8yXkLFkaev/xqyma4SKxHghieXly1S0Zxi48cUWGfl3Tn4JoiiQfMqtuAK7yxSOKBvvF5WlU
v9rzoWJ91wYhtQYOAA2p/ZayDEDLojTfxpEDkDHPaAvMwW3w6YBj4arLqGXXbArF3z9iXnK5qwmg
KAKYAU855K4QK0GdBh+gu7rsR2+mVfBUHxLzk5be2Cjz2WFbw39qQCAxfJwmVE/M+Aws/060TLHk
OPg0F58CjKrvJ/IwF2/ahetnN5p8BO8ZEmapSYsZMSSR894zKd3JztRoKSACvgn6Iwr0DB/oNcTd
raJuAautIRsE6EvzV5rUhpoUdhg/rzRphtzkZbc/Hb/lGu/DDeakCPpjUm2+CZaGCh+Ha+ocuR9w
rgnRMrMbJ/9+YLIAqNGw47bmKMwbr2B8HcWO0QjH++mhXwULDBkv865JnmDPk3dhSOSZ54CMMt+8
eqdFx6UrXd/iRL4MT/QplyCK4aM2L3pJBj6bDvyqst3Z5us4zA3xzjbBIVrWK0gS8EqLVBzK0q2f
txF8HBKJvU8OnNG9rOWsdG44e+mgZV7z5HgsPsROpehyq5tdWtQhyIQrmsgMOaUyaCEAvtH3isc3
uH68f6pCLwPZwzkASbiG5S0oh+XNRCBIuplj7xVcwmsVrdvsp18rzmfXwRusPpQSZjL/kLRgZLfQ
b0NoyuOKusFgxwg/H57aKsO2gZ8IKFakmNVj/AVQKiidbQ4BtppV/iMpcuo2BM68o0Wxrzn+Ymkj
IMzRTcsFsfUi80pLNVQSuSXQlCDQdG0WcUSJVjxxilxuwtAd44W8zhENFSsgv5n3BknXBMKoHcBQ
AMWsK0EeZLwMq/EyZajqc4U5168mfOHxT9dWu1mUfeIRfppKkVs45zyKFnhuNsN0BfgnWSyD68Yo
GgHUCoaveKZOxwzwxJWp4Z1+zeQGgA/LHz1JNCSBMaNOArze1E1LA60hJ4l/JZoaj+OGAMAbpr2l
aF3ohgCJ7wNBzCmpIEFwKmCodBlvyI7yH2trE/No8sb0PuBLi4kKsckjs8OyFv77iE+cW0eZhbPO
KAT+4wi5i2TveSCHx2Eoj9pLtoxzrGu1q1MYD+SkU2IOCjhN7FdRt02rcOwRmkreMMqH8nbNiz7P
fFCxzPsFFFBwz7iI94tB0bvqO2adQjBE4iE8cUILA5gEj1s79WdFszwlX9EIWeVgdKuq4gtGZA2r
qwAhEx7cJRihe+ZGNziLPFdC1YGk2dD9DdAcdF/E8nPVUsXv5NVf7cZCz3hDQwPV9CEZES15tElQ
3FBlDwvxa0GCWblOjRPwHngVaGv7pYdgGqjxlPSlRj3gUBERjcRtwZr+LawA5WpkYZA/4LujKZLV
qEpuODgbZLqYHDhbEQ9Mvawo7gv01VWnADcJle2p8rjd3eYJiE0wJFG5NrBglkkts2qZF3DKp9tW
dcWndQVTJjdW8byw026Opp6j13H6gNajRUo+VwNtNT8H/uXq0i5Yfc/DV57D5WDOk9fIts6djYSD
BxW0lH3hWILLvx+ul8d9zIEmrCzSbbmS2mAS+a805t8I8PAJGAJxEj4K/7GAJUebvMgSRuOP5Xmc
RvXqalDOCoCv9CbozAgYpLJ57CG6XkjGixofE1f9ZOv7yTCh+ZSHCL2SsQ11ceBAQ7eD65/y6xXt
q1LIPMCf4AMrWxej6a2Rv+VTo0r3KIwgIQZK1mOfTsDLBv+lNC1Nu5QNaL682Komr+l4MBDU9UpQ
zMdJBt+DhfRlVp4eJ3LL+awTjYzKOK8xHgz6TIkekNsr5uQjUxN6JEIg/rxtIt21cwPUMeyJoHjR
NmHakqbhBcz22gwizcMjTFb3ekiAYJ6PSQkY59lmLgt9P4BI3vRqhPFW8QiDbWohXY+UCPI8ptdm
tlZZSKot5SKHjFEN/F8+lopMgSYSSkREJE5ECq3NCKfkOWdaij6veaBfeF+pz13CLisvBCb0+mLU
+fvvU7z392TWFj7TKE42sWESjpAJHvgn3L+FQ2EhMgHaL9qOYsDl9aC9Yc3wloPCOEC3o2X/hZLY
zyvz2p0mj2YeGpx0wSeTTd1DrNmmNKoEsQF0mz1yfbItKNCmoHW38PQPW6NK6lm5Z53SnLbkg3ND
8WBd1ZmOnDzQ5lv00tjzqwAY3/TpxzSjx3vkWvVL5xnJ4K2hqXNTWuPqCHB3Qo+QzcNxvNanUp88
VSNQKx5Qp7VCYkK3vQSYf8KFxKOGDjzCoWrgGQFooA9/7LU4fO71ch+XOaVIjILqNQMFWSCeA+No
vDnPEuo5HqAlmvo3lNeARgy1YRjVQ2jQ6VDUrbxtr2EK6Ariq8etGuHUfDhJ5y9Qr7oXM/Aenmlo
h6PRIrzyoISbOQU1zAzwYGfdfmvdthPQ9jVttxlK1v7f0sFDOf8nAD5fK6xF7FM/AOmeDz99t1CQ
S0GDApO6REwPCgVBCi12w/VXa/Tu/uu+ezu85khBgIEQhDCc/Yox0QY496bfBprhV4EGN037iCFm
wxO1CS8lt6leIYN/SMyUBGqMLWKwSgjx6Txr/zBGU5KnJpFEQG6YbIVBrgh/8YhzlgPXYdUhyAvZ
+hI7nmgBnEVavGGzm7au895Q4O17zNeBXQMswron4LiZASCNy5rWALgRvJ0ljCkyxJC3JnyQQrya
zHfTcVDm4ng6oKzr2JVi7SSIWRrKMiKJg/1R/TQuAJz4KgbXTQ8M1AmPX8maj7RQrYCqA7AP02GB
jST4dDUN7cKm4VB8LGFVZzgfo5lAVyDSArrs0xzh8abWyEbL2kEGBnQKibXi50sewPi92PFr+D61
IIMs644VYzojT3Jwtldp0Psw3soa3ZuS0k0+8OkykqosggJxRsD51eyQvBQ4dvzRDTU5lCyfUr9q
VHpr+bWEXY06AnOCNRoYG6o5r/I5CNfsXidH8Ppx2r28JHgJT8JtZ13r1SjnPET552CIsqgHBcfn
LOe0itO70/F2391/f+B52YoOPy7UUWbgMJqi7Fx3NnR3oej4hayW/YVsGjhslZ9nMUuxe2VnFi9U
SLWQboxdD7q+TdcebAv9Gjoc2Iq4e03Ttt9ucCh6tNXxaL2aBn18jIPG85cfVAVVT3ss4uJncUnc
UH5HHrl2VefO0qamedDKzpv6846FJZaZ6KoM+Zsnvad98dPuvi98XAlmZbuyO7YaZj5vTlg25yVP
3AaXoJlHTgaaT2+0u71ekvRLflsMEZR8zIugiJg210iz+3p6Ejb4w37wjJrh7JNm0GmWtEkz1ZPF
+DnSDZpusHwyBe7TFZrWkbKgpWDKuyCD6wu4UE95RzPrH6Oin7uq6abYLCyn+/f8Ma87Xs9J8i2F
AD5doTQYe/d2ed99T/5lOuPX3fHC7gmd011wu3IB3O6Yb8DrQGE2suKfNzoP/J7O+vW0v91ykTt/
1I/pbc+L5Jqp4XaXh4anj2JfRYfKAjxHqtcaDt4goWsjEp4iJ3eTldxl0Ha6Pxacswr1xkpwmwW6
zaa7zupdAngXqvQN2ZKuGVLIDPnKSKsiu0kRPK50uof8JZSM7s+C+6qmr3q9H3+kyfdJVHZHXlhc
baR1T71M7/WGrpGsDXRsBM7MAnearyMwJHSLSyPF+bj17nB73X8cBiet66soHTglb4CNX+DCp/gC
CyB3X5EFILJniez13kg5JDeyWgi7LwG5L5pz7+ZPc7v8ZffF8PN2X1dqXMu+krBISRANrJ5ofOsG
SeQGye7H9K+lQNtruxayt46MYB163s3dzDfz43b4nCzs+fX74G7GWCst/bwN0974Seh+vk0Hdb2l
lFeSQW6dIKsP4535aZv5Wy5jo/9EdTmP8/yLCFxeE/on1YhLBOJCNA3pdfMMKdwcUtzup3lrQYhD
g5NYfNbJIswehHlC02hTHqmOdhlylY6PuyTxXWo0eqxPSan5lKaj5308EbqB0tMrckmZv56uIz38
mFOjlkzAw4mWLhkoa3wZdwJslDSVMidf9IgvHuGFTG/D609RfVXrXE03Ku/MabA3tu8B2Gyjpu3N
wvd1/348/R5EGGZ7OCqQojCm79kXIz57nxuMeKA3/LFD3TcK4I2sqo+MbHU+simgzUeWokpwYK65
5/a51T5ttZu3+vb3Qej0GHKj6nR/EaC43K3TshCvumysHWt0ZFGjDWriDmjLkbGhYSE1wY0TmI5e
Iz+wiZlN43mpKRxLrtd0yQzeImn7K6VDf53iqWy1LrvD6T2nDXg1H0NlJh5OwdPcxCUWusJY6NGO
TlUdYfobbRAi5uvXkchr9x4cPY3Da39w/q5FQV+HdpR63JbstJwsqd7dvu/PbxuiK6U5V1kn98DJ
3fVw2p0O5xF6o10dYz3V0Np71yhgNN3LmnCO3fv0Hx7nkU38CooE0QS7fO6vXuTmZYA6BlNf0YeL
MHlN2Xrp6SJ8ux5G22LoBlNvW+Vj+nG8HV+Op+P9N/yoBw1rE+QYkPgRk0xQdXpKx8cxSXzTla32
OfIey8D7F12N0b+iBl3R2HWY+wsFhH7reiEUCliknUMdChS0IMwOkNn92J++5au1RzJELVitM1bq
2Q3Ucx0n6Qg+zSF9GBvj7HtefEBefHmT59xOJtpCwaxvMINQe/Jm9uSP799GHngIm8M2j0y7CN0z
78oOkuYQa4PjCCx/fNvdJq18+32+73/BmC3WRuIJYz+0oVmc3p8YaCWCTG1N1srH95TOe0vOE/s1
yse+n+KyFnyEs+nDBi5q8FyOoLUyOBrQqqtQJz8lQwaTd/lxS47K+XDDfoom2oKUPTcY8iMVDGFk
VQXYUBE6hMtQxJQ0gFmhlAohppZeTxLW1ksYtISvhSb00HmElFpVKavHAp2zhhB02Q0SPjYOhUQO
BYMMrUJ86K8paueoeaq2AyXqrKxTUppHErHFtX35yIDQQ6dYgAPFSuU61feMPm5pFYQPGAqyjpzq
IJBTbRll+QyBv15eP29bQmDPZQpygsupR3ffsT8ca01FdeZMo8JurOrG0NJlqTM2sTHv1/35NnwR
WV4ks4tF5YEmvnv6nPPlfBj4oK528MNTh08CnPzq8/fd53n6sNPxDDNLUjSJ3m7eDmEnxtZujFg5
+U8fHwdR5G7nN9E8EIh1N0E108tZEEEP/GoaIKpBfigiV1/3Q9/nNZ1cxW9Jjw9eyBAFGqr8WyGD
HLeQQXztqRkuSSpxkpS6EiS//9xpvez0UA2q2gV43rC1ey7hlz2GQ6pHia3tIvXTrfjb4FqI6oXI
RaVJjIiSGKHGtQ3xyu1uf//b4Tf29DSxDflmSS7sHQgNBwFW8YFB8UE/uSTN/BryWbMKwJ+ocIKq
QMeaN3eSuCFSVyHziuAywA9NkyRFSUWDGEgE+6H8LJffyKjd6XBPOjRNIoDpAk1xhUBQjm7YY5EF
Fv2tfkje9XN2s4DkVQHh04R3s1QCeCf1JVIw/4bS68Z3TUObRAZLaK02o7MwS6/7hvdh7ZbMxX0M
Gcqu2Dzvtp3u9u7r8dfbIFg2JMGuLGGYtFkm7BFT+o4YADYR5RsoaBgGcLpGqAbFMGNlW1Y7DWhF
0uv++zw3enr42/E9D4iAW2RauC6yNkpnG3XkjVRN3HKARInS5MH3eRG1jXLIRtk+ukadP4niSqIo
qsR4x9UaEA4p4YS6EklqJm/2cD3es/RM6j27E7zlrvUxctmUR/KneuBRL8LTOMJz1f3Umgnf0Tmp
WL1Le8XFA0cf5F/6WU6SxnlkcWDWVW6/4AExbgnEMmTuIlYP2RyalC43fArkv3399XEb5cgN0V0q
VKFMnSsdiLLzeJ/NclynUdqjTnFqtNMOOQRC9B3ABvF7Pd2GkF8ddz4hPzf7BvrBFd2fMV1UB9vN
DHUYsAOemqm9bJRUlMiNM66fue9kpk3ihoHjl320oOvHSXRsDBucYkPAWW7Mg0GaUCBc39Rko9Cj
oIyJuYoJIiprJSEtLNaxnSOE504xBOA7s6GZniKIAuXz4ku8CtuL56f9/TYOioysVRdB0OVM4P7+
96V3CDQxov4erCiQn02I4P45homRGHSZtOtzKjqw5EAlK8tw3GvjiQJxXfttuh8OwUDccUSjpBuU
XtgvcxcqyDOyDG2vZnHrAaU29pnyxUwdt9kp10dFu7rTIuaL6NOnFofWzg5txrdgUVDcTvtUKF9n
GZ7vHC6+7m+D86aUIOIWd+gccBXVrURoFJ4DuLM3HBNxRRAY5Jq1+APOArJJsl9v1QNgsFtsmoxU
v1gKFYw43Y2gu/4jSlgou8EwQcF1ggPYOniJARbbVIm+LhSPDCTxYVZ2bSYQfXz/fXsyiPh0ie+n
cDpYCYJcYsM/s4zyRoesXM1H1+STpqvjdMEeYeLFyz5ztTYCGhmBhrrtO94YOtuakmU0HynbQaTs
uIxN1rZy1rZvx9vHaaBvbd+/rJzwr0dct6JIjqTmeK101ICu2BIxXZ9Ljs6IMIKzIyR6NwgF2rah
kLsqP5f3dP97S37Od9mpFeQuQaZckwTzcwBbj98PeAMyNtkrrmhs4CboWt6gd+kRF0L2uVwEqZzj
Ygxi1MyyjvMz+z4KZBFc7LphUaR88OOQHxXtGbQHdYKR4ZWZP6o5CDWfYM2LfgSfuOSgsYkoGnYo
XykYtDwJzevks7wdbq+H81sO8wFYFGt2g5W8tzDIxJoKL4C5EYtQPSYN1U/7oFDJ+66P2ce5EcPR
627MlTP51rjc6WkehgxttnRDSsstefG87vN1upEQz1eJfMhPExVzCuL/6KS82s78NIj56S1XAbGy
UIOcoXJ9pFEkC2VMcoiWaB1m39u6IPRlAeF6qvE7UQBnkQzGMTaDZcf2GZur4iKBM6CaS/k86AQb
2QS6b/iqhLdGCW/1B/VASIjpQr0ITu0eTh+izZFzrtKfnZuJ/AFCY6LS2xU7RKuVgG9cmA0wv1wz
Eh7jnXv4kBrgQ74SPMPuL6agysa576fSEEHS+b5z06SoA6pz7l6ijg+gd19BZtnV0Lrpu9EeudGx
bmSCcECDyuFo4YYZVG47lFUmqavQScYV8sigGt3E2sbZbhhoUGzclC5KthJOoxJyLWQ/xu64RoO4
yYRub4g+jIeUlVWb6fIKWROnN69j0PsEpk1Kh3YP1F6ss3HWtmn7kOx27uOHaVS0FNdX5VDUw0JE
bi+6yaoepQF5WF50L3hXjyukx31vneUubOj5opvuBcr06PbH88ypgdXJbU0Vsk0IczLad0u8+lAc
iBFDEzsbBrtCJHHdFLuWICpbuUlUUou8j4VFBZJNdaeTto6cliki808jFl+KI/p6AjFzDHNYFcqC
MjKE2JjYS7rfawvaSllXqmmYZEWXQHBUWNpyCwASsa5N1Jql9g6KE9sqmNi7TKlKYpDdVEp0v6jR
Ux5VCHWT880Cgb88yjuOAbFKpuMsgRNceUTlVSGDTQlpoEUFWkLUuDqs1PPIjSFshbjKSy2oIIpL
bI21Ct5t1gO3OVShAMydoHRQExH3qcUWRVqmy7Lq0bU1omvXlb2a708A07ONJwWbLiCksyk0rrZF
7VJ8dLm+DboeKZb9QbbWo61lstaVmkbuium3dKsyHsiE1koAsn8dSufGiITsqQRQYkDrzRWlBlFh
2vqzNp6Xc7w5LLSWol8q290bRKITkuNRVY3HFObDMI62yw0NX7VKOfPX/dvQUwlmg4sMZc6pbtu9
viOInBRdaTgMjSGHMvhOIqYfE6FImHSrI0NguiAktoiqxhlUU8huVC4A+r54CXz8SS4VgZ1r7eKQ
drG9jnc1YuiAi2AjhzavXIRBfsr6cfONl3GVn1YNb0/yKBsinAfd5T51YByYojK9gjHSfvVY+q+C
7pO+D1h3HRfEkaCtlnqUVhKCQDJ+6FY0NZ0JYba5T2Sp5Radso4cY31VhQ+x1FroluFYeVTBLf/3
89SC/fly/v1++bztLi//cni9J4BA/PXr+71d0zwYApmVRabzcOsI7Zl15vswrxMLUYF7H2m491HP
dTJ/KeB1nGXWkbONmhcioBv3YUpzH6bLOmVKEPtCkfswKeuFlBvsdOBeKNQvFPEL+cDukClHRtwB
9ssEu1B8LhSKy8Wuo9kdKmdPG71yC1nu7GMji4Mjk5GTRbIOabjJvo/j3qc5scE63rMbrf/owwT3
Yd7XGz0QIcmJ0OxsP9epplF21jGcBEUiiWH4XUqwl166eqHBTkfFLiSpSD/Cd+6uRsms43x98oM7
b7gPs7E6eDP4LsMd/EyOK+8jBkqRU2bWVMrVDA7esu9Tvov2AGe1Pa+CRNkgOZboyEtQ+bK44WZw
Vz6Y+qYODp5VZc5WAj04MCk51RFsrcoG67A3zNcaaKTKomP3mbyQ2aDKuIV8LYmDFxKRk0RX37CR
5gi8JLo/2SFhuA9zRKJ1IR+xOy3ZnRZ/ZjQ48+wbh8oM1uF0h1f1+5iBsmetoQz1QgO/w7LWp5xY
nnTlBneM26Ag63UGJ8Z6nFFWJz/SQZpVrrqWoMF3Kc4YxloS5ciIcd6CKwfvx5GGZG0h2R5f8jjs
67A3XteRz8D2sLYwqtqGDb6L9TlcqH2XOPgu7l44Wav6wT1VnOIIsX6fkcngjt27Ou4ZBGKsSbWq
EsORDxQiq6FDJUCDD1OCt2G+tmEDVc/GB87VkjhyOjgJCqI++YFEszcs6MqZGkmQ5BSrbzZ6pOnZ
SFXGPzNh3NXwtfs7sBiCtRjO/JHqcKwEiVqmB6KYhhkzd8PVOnGELbC61f7JOpPXzW20qDd6hFHw
d9XW3tRACQXWCxJNJDaSaW4hH1coTgeDRvVS1nQLlESc6SILlp46TgwnKInt/W4dqpyNrs+tLEDr
8Ym0IuTXM0MMao6mQhxN22XA1HyEl9Pr34Z8Z9IRsClumL8pLN90H4DZNStRu17jU9Q80oft3H+B
6l1J+0g/WCci/rYWbA7mScCSkIDVJzrXW4Iy3t5vJRTIAaHAcSyLdMbKzAn4H/tBM0Ei/jRPu07j
wzIYFesC4Kf098pXQBe4WM8EpG0jy6A3jcrATLcwv6HYwZl1TdOhUgCv8i3Uj/oiheuLbLe7Zy/b
NijEsaE/MqaTyBzUMapGRcVeKgfVyBm5vWeVR0l0KXnS4IPoAHKZsU7m6265gUQf0u8p3qGoDjr9
iXr4nUaaSSLKBeFJ9xr3E6IqZBw2xVZxVY98+EXmGfCXoO6cTaR3JXODXDHTCrGfz0f0Ahv6RJAe
cUki4pLs9plsuS2IQqXt5h5ceK6l1FubcJpRg7OmqWzsCPQh8UkGLAVDC3ppT9iuyUZFYNr2B9d2
bTbiiyrfay/WKThBkzVUxdqBUqjRNXV9EkWf5YLoKQ2LVfF1NIMCCxm4gqfH2MxNUzNNVxKXqv8N
vfa1V/121rNjn5srvu7PP/aDzg6x22OiaiSCFLuKXCfO3LHImd3n9TiPnACtCwQ3dGvFvYBVA3Wb
CyW7pS8wIgj9WaZrZsuo8Yzq6vOOvTO42y9hg+TIQvJkjkHvaVf1ojPNBILJfT1eb/fd6X6/Dhhw
qltg1KeQoq52sh/A1exNVJJpYr/7RsN7Rgcu6vhYKxJeXC+XO+gS2Izsoa3+i+uMVBsNGnXVvGA1
0wZbtbYEkyvalYOiXVUT+Dxo+QUceqOqmK+NhZ/dWpFSEo6bc1jXpiDogzhCOZjut99B8uUME6pV
4oXuilDd+YgdNaAHTb+bxnCx/y4OvUvDTIPN8pDc6tgfutZSv+EgMKaBZM+5VMi5rMm0GrkHGrkH
3vQDlAppQ218rOtWdvfxMeTHkZ5ChI6bmyWYySIfHvMKIFon+9zVbpSECh2tZsbCdmAGEATEhvMc
VqTyY8Uq582YaOZcwFJQxHO3/RYFNfi3ZewoaUuRolzTq2KQiK9puF4tq1ZUEnPcTbdvzMoM6IEZ
MN05OH2PG+1wZCfZtMGWGgVbavsrCSTORo+rk5C3a5t6Rxarwq3I2y68sA4ZYenWMfX0j/ZHx0f/
oz3sf9TE151ZK6k79f78ehjMlLD9qKa0cd7UxVl3IVsyygbsiWrn6QXW5grUMMEQH2RdPvCELZCR
07LrP1QOokLYqmYC8ZXrD9n6oV8k1RU2lBNwzPykumgS9VInIWtmL/j+nqLGDdr3lOX6Ag6aUTVt
WHqd7tBs8mZAXVyBh0dS5g5SWKbfJqc3WWPQV8Zzg7jrRmh4BjItLQ/VfCJ6wsgL8nL7jC2LhC2K
DdEVcL2NlP3OQb2pCKiBsZJ9lVYXLS9aFjsKZDKWmgOSvFQaq/X1cn1fqioe/7g73vK4rP3xnKrS
Xk6X179Nbv41BUCX0+e9r4XTyC23fHs6gRw5mAXWOV++PJf/8v14/3I/3O7T4vxKC9w+50GeIfbr
7fa+v1+Pv3bqbTIOk1h83b8eUhKbW8Y+l7HmOcStLKM3LuOey6S8oJudP/XWbNxcCjX5Ot3vErmB
+cxhSJ+XC5Gkn3fodrjvykKprup++QDLqOcyyRTbxdaUBV5fP6/7199gBVtehARCzxXUG3jWPJ/N
ExTVose+H89vx931ct/fD+DxpZIiP27y7K95P18v7x/TZX8rG3Hb/XjK4qQCwJJlW3PKRztdL6no
qmCdsitkymVaZZL7t6UP9eV6/HY8g0U82Z65K9lqc3cf18PX4y+0TUspjfBLjaPxollmfpFNYueb
LV/6Bf79cnnfvR/On6mxKXicnJjN11E1rzI51J+HPFgF7O7CZc0yl5Xr4iNNe3E7XH8cptt4vqS+
qNO+lGMH68nnelFmTuksSB+TrHwcXu/HH4c/XFCQF0z7NP2p15on7Ro4/vKVufmkSuMBms/8t6vY
JQ7NKjaBGWYJSug3/99YPZTV5dxGf1ZPP77lq3i7AS25QMa5E7x5tqTUs5b8dph2fj8/+LJ//Vvq
zzLdSzIZ/LT/zd3xeXn9XD6J83KpZm2zM5NNP3y7HiY37nSZPvp4nn5udz/8uk9/3b3dwbJlQzOh
WTxEcpYa/dYIOXpDunvJl1idzOf5eEcLFKtHsJxanM/zRoFFirHKTqJb2zxWgOcFTG+B5emfx8nL
zWpDv4Elit3N4qAWUfiDvVRlL32ZNNnqvr8vzWT5hRSRSpsI/stlvEyGf/e+/0hNgvKD075U/3L5
if47ztyXJX9kc/vsJ9TbLoQWUM8F5sGl3QWm2/xx2p/3V7DSMtPL1tmR1Upvh8MHWiWWDxLsB+0U
WsKXFyl1gKslHsqQE6Nlf+RzMWNmKZgdjclbml3I/Nw8UnNxPHbnw7d9vix/B1JBLol40v0fKzzW
V/wCWlbKbtFG6cHHl93gDVHkhhQwu7z65evX5BM+3gQsFGpPebZXScUmp3ZSGMSv3LCaqjTQUneQ
3ajbkW4NWKLo6Yz3z3e/PqKsRV6/H09v18N524GRgCA8+TdUNb6ejh8fB7DlWlQGZImo0nudFqGc
TdCWb4yVflv831Z8wKsQW1YaST0PbcMLyOrUF/F76Illf/fvk8kFa5ja2vTvADkr8D2q/p7J8v23
fFNvr9fL6fSyv85B5vMf02lNXsnbZbomyUV7OX1eH0OaWddKUT/U5Lkq8zuXZV8+7/fL+QaWID5o
yDCMWvb+dnzdPRfiF6ChxvzHbOav9/m/fzv+2H2fTMffkwd26uu2dCuWMud0kAWkSw9P8ng/vsJH
zfNRUrSSnoUe3vysKs8+Tqrawdfr/vZ9N7kZkwc0Pfyd3wlV3O/cSE/78LxRX0+Xnzuy6OX95Xie
Ljk+mxKl5DIzs+jUt7dJSRy/Xid53jUvqsBqqvXDZSMsk398P+5Pu6zbplcDn0oiXpNnqoRmrce8
9I/9W27mk9+OX1CTl5ubzcRmwdP++m2KNR97eZ203OTonA7gJW37wQ+huqUKgLct0k1CqjydQC6z
zcp7TaI9fed+sF800nuaVyoP8zj2wS4pGo/N7K5moffj7bZLVQ2H92mrwEpFtFzaG/c02EC4wDaV
2FynBgo6ilr0Xz9v98lH3r4gwYVKGni1ylzK8Xo4nYCCInuvMnnXdBe7TbKaPLLL5/12fDssewBe
sRxGyH6r1+QwDj/SeS77ODkd879NN+Hn98MBvK425MuzWhKLcV/Ohtyxa/6VW7LT01uDVy1ruie3
LEEcKQ/5x1qpXKvU/2XBEMmF+JnD7MmReTtcD8OTVsSG5WSEai/Hx/46fePlY/86hcVg48hVFSnB
OP1pWw03n8e/ydgqTUCf3FPXd150+txDcemmg5/+5YabrYswaZepeLYv8XnZ4zl5oKfDFOhnCA4I
f6TSlDOD/XUnj++wv+bM4sf1MmlvtNUU0UtxyNrveP5tPrzrYb5bo10gWxyfrnJZ9dt1/3bcoicV
scSpZ5L3Kz359nY6zHJwnkTrdkfK0jXWzoTZS/h5eNmfj+/zjcmP/ofL6+c7J0YzclkCHbVEFM9I
/lgWKv+8my7SblYnqSfr8SP3DeeDRC1KxOnTq/slL5aU8TVpNrI2v5FzwBlUHQAv5/w5RRkUmCZL
osVKTJ7JzXYJhk+H87f799vx79Wr3S+7r9dJRvef9wtatGAOKtfRuv+z3k+yf2+T/369/EaqfdnC
EmfLkENS36769nndz1t4mi7OISVOyNun3xzt7VKBlN98vkWef/X96fS4mMcDwmAiOf2UR/QL0X+S
8I/b7n58T8r56+f5dXRYZZ25KM+Al7vfr8cp1MAvRk4/yZLVil/x8/xEHIUEB7UAa0WkFvj3mv0f
Kk68oly+V5fTCJkb5VqI7WOedzYp9enKv8KjJdeGtPEtd/zRGRx82hKOpjVykg3s/2xr8XKyvNJk
CbIpWECxvx+ulyLOi9067+Z/fUgDqm73SYujV7Vk7ZBNb1hdw4Q759U+vu9v6PIpcvl0nYprP/w8
XejDG7rIRehiaiYeFxT+qUkzJH77vn+bnNRtSqy8XXZX4jYh1uhoPBHi+Ac3Q6FFHbluNv2xOpFt
GvYxXdQ28yN6L7ft0opIXi0x0GlCkF8SbmE5lVxjZ5eIYS3bk6MM0g7LF7tK9y1wVEr6zJ72RkmJ
RL8XckvvI59KBn2iaaVk3rUpAjq/vV8quw5BerJOuqu2Y9smP3b/cUQKzta3wGw5QCiugshEGp6x
UIiXdFlmJVw/P5JnPdj8GYArWJ52GYvRrZ/V9auQjIkiFSEPJrCi/WoIVC6yJXq3iX5fMvWbBMwX
AfPJzfVBMCc5a150noZocJ01uAb3HOeOlyVja+8fn5pJjLvLffrf7NNAafWVe4c048/jedLiSMbI
G+UBLYtpmaKC2+3rvrpB6JWK7CcCWjT0s9BzxBYVAhNRx7U3fUp53Nf96fXzlAPK2UseeZVaaXKS
he3Y27CUUEkDRtGWEa9IZzKzHrvXj9Af3SWS6Eu9i5TTjLc1dLVklV9b8j2TRf84PKGcbYox2Mrv
UMttSmp/2wJR9HKOKR87e1Uve6q8dizHZBGXom6yQdJI9k+Hr0jpCE1sh8hjA8DlzggGWq18pynJ
loFmRcpfWBKzpIh1cZiz3/nHUWbZt0waNOhby/tBh4WYzIQs2Qfekf1G9C6GnGHONzwyW5Uk3L5f
rvfcPXwUM/pykKlU3W30PhFcIElclomBcu0PLINqITK03AEiaSJXF4olRz09Yk/HF8J+mbTavMjn
eXeeAvLbR0r23Q75Z38kDszPSaP2JTHnaha8KLm3xJam5ZIRvoXR8648n4s6ff28Uru3/X3PP7/0
0c60/cy3qp+XbvQCS0/etECiGiyMtrJAHC0QyhckszRZ7eYTzOATlkZ2aQGTFUPzBsM9XBog5j00
T35DWcAPXsCXPcxTT+Ujgk8r5CbnQo7eYcbU5ncI1Tu8XV4TCS8VKsC3WBBybZe5e9q1GyGGwlTO
MrGd7EoY8Ru4chDz7a4fd4PHbSAfkFuDmEYSRu9vy0Hq+OwPkZ6ftMkxoU5idB+W/FQ+S52J9OUs
fx5e/na8Dw5CCUHkMbM8QzmIrEJyDv51iloHr1LWkTZPGimX+3hLQ2J/jVZwRahs4TTQT4E7On1L
uZz5WMuO3l6vx497+v2hZBryISaX/jVX3A8FkxysqLTc5Ft9H/y8FlDFTtdiINZlF20SK0suVsKQ
ExqZKCsLb+02eh1TaRvl6m8Z2QtJhOJZFcG+ymTzEqibEKLP823/9TBc3xFd9uQrlis4OutARC7k
phDkEl+Pr3/7vUHoZGXTqDZN72BHeoR8QtpsqcsWT87OR/IHxFCXSPISujqmRZmNdFEsIptH4zQb
OdKGkXxF4swpYVameWCWyAom5Mx/iM0aQ7vkYmVc28/4klm5//M//7//05eRZMSi3lUZ6vMHkju4
Vpbs1zM2LV9qh46MJWr7SU+t5Hag94HpIPZn8BpK1o5Aq61GBsyXt7BmbcPV0AkItnICWl09VPbl
mBdaBmf9RhtBPONQHeh7kozD6fCeI3ZsAYnQlXiWeBQDVUI202W2QHMJ9VANlK9ICTJjWxOsRlJl
yC12pbwoLTHtYtqDDe6lJGFCfDY3IJ8x2IdiwdXcRUOuVerwJUSsVWpzGHFkh4nh1G7JYT/8ofPL
5e33+BWUhb6AGvkCwZDLkcNzRxz193+5bVNW0rWubmj3YqSXLVkh4aY9oRi8BHHLVGaHidbQjoS7
xAu5DFH3vcNR6KM5sfhz7yVykRyRUrwrggRzPifP1SoeHbxFJB8kn/UnfZs5WipWHrxWK3dspM1J
SKeeLSUaV2ggJ6I2CK0fMorPfZGz5Me3KlQOvX8fK5+3dcXkSHGE8gLR57lGcq04BnaEBNemCkBK
eD5SweXGpmjOmjYGGmi/cgq5MuRRYpkWuH6+/B6ZZeKcUN5l5ZwMNUa5G0Zn36CBm0aiYE1tjmPf
po+UeMRKfGiUY+NjUUP0/pGzFoPdLPo7l+858g5db3akt3wVdcn2igxVaNkRn/vF16IxerqJrtUq
VBntp69ByNbLGhqSWPuctshmH1QdhAKKC92IpI9uKwnffMcLHgWhnrhtmQKyktLRCpGsYHPhnl0B
mwO9R+68y6ZMrHHJgaCTlxDzmKCV9h9pb+LHx8brWy7bSD6LeNmchV3BYCOF4SuDrPQqCh7oXuIT
6Jz1Fn2vbyRUxF/SFT65aM+Rv1V7r0qtYsPRWdQ33aiV5hzIpKhiZOKA/3G4TrZ0LtoR68hohBPZ
Gt50q9zHyDmKtWdTOLHT7+/Sf/0OUsDy0cMpg90JwHdmqb15vd0u7/mZ6W+Ztvd2eD3tH3TL6V+l
jfp6PO9PiddwfJ9es/9D5tlQ7jmvZdEkieB2+3z5OP46nBaycuowkfOoqBY3r1jmboQMuzv/KCme
y/4TOXt/Pd6YNGVeg05Cy38sGc/HO831jvl10nvN3XS+H47fvo/fj0yoydpzwQDzvu5+HA8/d8f3
b4S0uRNM9jOvpnuTjqa15p7yuZfr++HtuOdXKPNOcmJBLUycMsH2/fL34+m0n8/8cj0sfzl9yZ99
+5IIavmP/+fx139BvAJBeUnNANgvA9KvJBwyVZrjta/xdfgKoUeNIstMK3z5QEtIwjQiWr9ZArP2
JEnSk5b1l/PhyxWlrCUhYrUz8b6kw76hZwlbxD4jyN5BDraQMKPLRJr34+0VfXCo6XaO27RJiNAy
hH1a+gy9nC6X95fDFTBsBWFMuzwGdOkTcMVV85Lw9UmYOu/4/OpoywlxK3CiMpJZSQgYupli92VW
OvAdCEHUPy1reofJ+Tyjc1bbj2zwAarahkejmv3HgLMjCGfHxKfzPLeQQc+F5pZr7tUH7617+qq9
MR/4tsRKYpfKyVQUNz47QehTD+XclR/0Dabma8eldD9RsyV6jrx36WnKqH30CaZexy1H+OvL7fh3
SIoXlKIrWJWPNa0glJesMSRnN9Aavr4JizP1tjhCk5tzuB/+8XKSXCWzCZpUQRcxmFTP4Xqfnrxp
/tEl9Z8FuQyxWR6d5Oj2P/6aLvIb+HGj6zJq2/w4ejSWR+Xzx1M92vntny4/x7+tYqdyvPy0At8t
yk8XruRzs8GOLZne55OWPJle+p8OL5/HE3prXd669Ptffjpt+X/9fj2e/4YWKJXr/nl7ymcb8Nmq
rpenn/3PCdEbH7esj9u0b7/h+yUWVwveX1dfLsiT2/Z+CQXzb2vCwW7kHUiOMZXQVueft3D8EkYh
sf2frpfPDyS7S6pw2YTYFx/wvNb1F0Ry7bYJgW5uj27OYbiANfUxWPIK0xaAl1fl44mTSg5w2X60
f67Xb+Jx9fP2o90L1e0lYcZ/YFpJzV9cfpSY+/V7I7EhslsmSNUvjg7NQ0U9ix36eV+LjW8U31Bt
GYH2HW25XSmMxb/+cTznJ359uX+9XO5fpvj4+O38JXWM/NVdzEqlagGyi8/w9vvLPf3Jv4YjG+Cf
jt/0029fjm/s75E2IwRVnZ76fti/fZnfN3O4uQXosft6wvjtyzIO4svldPzB9joxj5zlY+vt8g7T
s6n73MfyGv/yebsfv/7m3kRQe00KDOY3AVWW6Q10beslmaH65dErIu3k2+/z/v34+uXtsE/NjPZ8
BxcTgukIVPNNc7d+fg0vO2vkM52fvyY3mt2R6Hr29H59nst5/+P3l+u3F+4FrJCiY8yTeCw7yomF
rrWYfzyXd7T8/Du7gnDFDmSqVSVY0wZkH5Y/UeNX/XPWcpm+H4hlrRGe357vMv58GXpuGNn5l9Pn
Ae28eTCr6l+fr+WiR14u9ztQ6o+E2Az2kBKl50ukPoxnfP6idt7pcOFbkoLBKVBLKp5GYe4r+SWj
/MAmlROkJQX1Cf6ejNN0NeFOKltf7uolElyYym3nhi2X0+f7GejYoqjm3PtjRx8nsr8dTsfzgd9P
8i61vr0OJIpcB8kp6tfv+yuvqHWtDHxvOz8+rx9IT8pGHJZasc0iSYwU8TOyqt9gHYWpHWxb3cgN
eyAb67rsAXmcr1dKr+9171r/mk3z4wPmFh68Uha1NJreOez/9XMPhTpEItSkkXorDeynBNvVj29b
Rdk8GNQr9fi2xc8RsWMf6Ns/rD3/AfXPy9Zp2HYaNOKKT6DlYaheT/vUSZd51quex/urGCdWDEV9
i9RKDPHZEa+gxJnTp8+oInD3BInNSXhY1Pl18pRZaDQrdN1zsrL+2nDq5PqHVvSPb8A988C1e9yZ
r5+v329MuievIkQd1oXeKtfDG7Ym0vddsu+NDmQ9owCOoNbDgxexnRfpWDVgzsoKCXqxtfDPWPOX
j1+8i1bHXM/K4cY6A2uoO1jTYyvmn1fArodKBS68o3wUM77Mn0EdcMTqu7d41sQRyD9N/OLz5ed1
z18BioYWRvtsAfPVY69u7Fz6yqOcjh44g02UyjtBV/7EJpGpX/9hNmrHFryFr50Q0z5+O56mcGsQ
k1QYx7KDTWAF7XjwXVT4qfUT4JG6up2/8bpf1Me48q3vh/0Jf4YSPbDv8RI5pfklfxKwQPWhPnKi
1MPfDwI8CgBIagCvdYjKyTP18G3t0G6ywJK4EXknKyWw5TCj6u/jwxyO3coWMLQrnY6MmhE97CA/
vSXQlUSN5XJ6QRPbU2yzDSkIlkcwZlniOyrkXRRr2Daf4qZvsEU56dLzf9ZqYxBJUPvuqCEh28/f
o9CDe2eXnOpy3pEVPTPGOJK8TqmtkXQ9tTTyaoPnhLkESE/PnI2SRKXdniZmFaaxzrmvg1RbxZrb
rjXJ5YSS+232FJzrtBWRUdLfEaBJ0wdlQnP+eBxgC8t489etGy+pcYwFC22xX96vb77Yd238ADaq
wiLVjS7Hy4TYeNyLnf++PTwMorfCLMk5PEKeJUGVPTmLp/xAT4mmER1172iAha2alLUwrNycQZgw
OSkOu2vv++vlcgZ22a/18ZwGSJcQOGixF9c/N27Z+VdgT4Po5VDzvZuWQTsvdb1tjeLYBONL0/Uw
a+ccGhNXJ3CV7W/9wC0KPeCyCvNG2kB7xi+4bgkxpA2MIrsi9edUT2k29//n9yNIXESlelE6hbiG
MF8d17mu8h8sErwHQFny0ZcW7lCao9a9HvzkFGB2y9aOyQNCJ77FEKei51gCvuUzkn9XYkb+I7ou
DnWvsD4T/agTM+HyGYjOQZKrNMYpJk1YZ9OVajCnTf5tNKED91G9MnDyQujRCohJmTXj9XDi7Uqo
REnLHvqL4owoQdjJ/2ysJXj96aO9C2YD5IyxGvMolqvhpk6sytuVyCh2YpaxSiSIV3UNKg9rqJdl
F0h55hWHEKhxXfS1WIaBZ0yAHEIuXaW7USJDkNuwVvMF/+KVUlHxjkR7T/iDqlbWzsYaAxPE2x3g
1zXN6fHk963mJcgas1ihSMP0yaMO68ks1O0S0EZaoZqrHNYBc/p91kwXvZr7tslVBmBoV7zqEV7W
5hFYldpXeHBN+pDgLssm8DtJut49B1KR13kgavzrVApmlWnepOWt4GLG1lCw7mcDR8UuGoMRKZKa
Iu18amQvozEsrud6qpLPWA8Pp0hrrrVbg3QDRMDVaeuHH/S2Kax1DTHH92PSASEixNjNeBJfbGQH
rWNC/FKG8+XHBaTPfDdfUa786fg+cIZEQ8mxXROGD0MJVvkvwrU/nYB09hNQFNuBxxl7m5ABlg2a
TxBaC2mJN58itho0rqOZk57WZG2/rtcwnYyTBj5QrONbz5LdBqm7aqbYGrYfLjF51aqbgGhpe7wN
9TxquulSN1TluBYDSO8iABNp6tFVcQckzRS8NdSvX9B/nMLXknNqb01KChxm6KfEKWQLL7SgrHWQ
FQPC4BnH+G1beEhSKG114m1j/qEf26xywYOUmOlBT6t4E2wEo5u+b7L9yve0wyPAw5IUuvAxtSzc
4O9ZKWv28Qa3GXDd9Bo2XFZ5O3zdT/8tcMBch13VWDdg2WwP++tYeSBDoV5iJcYQ94u2TzndmrEQ
I84mZDFPsie7/snTgX2Ap7x7IjdQVsfgpYmicbhcl/gJjrIWxtpKPrF7/jtsL7Zq0kcoo0pIRnky
reig7+AcbM/dfNziLewOgpcEGuFXEOgoCxfqSgy9Sn8gqIlGISWx/6swbtnwRfZymW0yfGCPqJtT
Eih9lIWPT103SH/iLBthP9Hj7pZVRsgpSSQVLHvOo6TPAX5FYBXpBik0UbpuSruJI3E4G4Jnk/q3
tgiA3wLVI5LXn5J4IkCfcETHdezF3gbRFamsEQZE1dgDL1dwGb7RVvbYDY9LARPDQusOWaw27Clu
AKeoGDhghsqQWyGpGMlOHhb66MSpWF/BrTUgJsqabloJ4fz2vEthmexLPniQxzJM9quTyGTP3PcY
by3EN3BI67vjeIsMbk8Tb7sV1je4wL5vjkjyB0HFukv8a74hsdWAUyl6p1jXogztQZ/3XpNNeazZ
1pIcGbb3wLA15ShKriEkqIus71vXXlkO69zIXqy1+pDRfgZqXzWHJA1cXopiCzY1h4GEftlde09R
6FO7vcpwZEx4231NPdAdPGNDSYPql6cQKh9C9YnflCTNVZTs0/734YrHBc9lT0VdJKn3omvzB2ci
udqIjbWUbRsB0yOWggBCdh9/fsMoPUU4IFWK7boR5muAXtOtvRz4Xr5bSU+2YFhvEOtOCopzvAbB
nO7TSAi8NKhxMarLEl6zoXgLxBFk30ZMe9GTxGYPRqj5tAe+twpR2/g62C6TcAZ1LghbbHz4sKaw
AY3UCLHuH/+gAnP69iZZyhU6DQNSy5He3wbQVow9/3VRax+Xx5Q4XGtia91o65wz9sApE8hwCaSU
8wXQkumxc+ePH5DaRL8MuMdlZbe+JmWKtW0asIuj6+eruxVQA3mS3dT/HInBWISWVNtOEnD4DYHR
ItfBDzuJoghM66XuSXyyLSpoe2AIIlfytmbgsC+helXUdQANsc2ggUHdgs9O5+76oNbbqGJJaBRA
zDkzCYIHvyH7Oy77MVHG3h48NhFkbUONa6sunIcDhxC72bJ1EDVA5+tIugYCQDQsPSYToz4GkzcW
+z0cOixG9vsVB2Z2ulmwBtF3vdJSaYRKt22dXjC+V3AFQOHY6yT2qwlyWMe+RmE4yha8wpSaQjI8
nZIK3qHs9UnpeRRAC5heDWzNrh4cI8m4OjI9eht5ywq6l3qFqczqRIAr1C/7JrXLLO/OIvbHsCTB
c/TF7xuDEtr6QVFe+qbTnzaOuT5buj+I2KR0au4qdr/CFvcLl5+G6Bgj2mIv7EvIHguWxrQYAdah
443X9SR8KFifnK4R0DazAtBQ0S117AA2fCQW+tXnVIYRStJrD0ZkGKrghgFsmIB4QIDiQsn8BYh7
ZTpU9KZWHZLqXJdUt6Lt8mh6Dwv+RSnDrAfFwBldAJU1gKKX1K3pT9CIyfr4dCepN+Ddes9JD/bf
qdxHCqttrAkS0WzoJoVYZyR8StiY0xzjmV+h6ewXG0hrmN2n/XdMndLdFEMozeDn20VIuC7vuqfH
YF5Jy1VGIyMCn9/mtunTX5STPnRXSD6DWwDKGCuiz/Sc9ZF/zC5KPMaaF/v5Laho3E6xT/pl92Os
/L/pSee84X9wSR+vf9B6Db7PS/KixdylfVHRsY+ZQB4rWN/0mNHB8m+5KObnY+H5a8bHneZ/L5Zj
UAXgSp8XteW3xS9psfyDlm6LDNaCY18a3zy2Uz2PfXLvDTiGWPaFkgXT7wnBf54vh57nO7nnY1Ir
bZG8eHLwkcrLdA+DAw8GyQlaiBI8p8mNKCBt+sEpcpc7CTaViLalm6OF9uBBK8iu6ifNJomNjpE/
DaebU7TP51y0jhfvsASi+Tzks5t7+kYdvLJgU2O9OU+5MU67AM7RRVGfYygSF6UAN3hxWJ/n6Ins
GAXuxmIk49KAXT8FQCtjPP+mrr5T+vmNTgipwV0sx08Y5en3Ji3EH74sW1piybSjSgbwll7Virvs
p9BWg9d0jrv6k2mVDuynqKW0qFILdKKJttbAT1WqzWRGwDH4Speqcim8dUBGg2zeU1ZKWII3LQ/m
eTVF1ZhJSwGlaKt7X0TbqAB0KdHdxY3N52Atek0bq+9Trra9EtheVWlvFYuCmvQefxS2SHYh8+Y3
ne41uPTWRU7vTwJskPIm0m2eOO30oDceKFJLjl7VdmZ6Vf45b2rl5IrITAErUMBkQ8MzHi12DVxD
X65hyk9ZU87CRaBHra9PPxbtFIQH2snVn0gst7aR/z1qm9xz+Fy+FJPmRlYtasaQpuNF1kkqxtdz
RiAXsRyiivTeB+eRgSGu5WOywuPwnQIaWDfmviioyfYCoTGCcbknt0SjDXWCcUqllsjCEGeWjIVM
+klEoNaUZPTMZOkmifnF+U+u1ve2nJ6Eaq38XInN824Kj3wgX7sHz7c01gReyFzQtRkU1MM3yJMh
foWsfOB8fkgbNhv6FDSvgS60JtZKTRT1G4VBKkZVW0MMoZwsaATuoag9maIOrXboRkTm4ppJjVqw
o7WOUSSKkWEHfAvi49fR3eRZRGAIRb2lxQeyk8kCLiXx8CO9gFMsCQ5Q1E8pogdRNBkkY3aTKwZ+
L0hZObDl+CaPC+hP6epTL27MtCfgBhIHnTY0zEYwmBuwur7+QeJXOA8uknH1B0pf3tQEAaOQ+kqU
g49AYxtb33hJ7oNAOoaiJJp6MUpJH5CSCcIwUU8MEgAX3rr67Eu0pKNV6Cc9xSA81TMhWBRnmVCJ
tyx3yRoQSsoGuiiQx+QAIQfYi8pSRGKuI1AVsTaeptxdA3Shs6qKIol3MJ+hBGeouchVKQCWOFM7
lcUShqiRX+Gre1g8tSjA8VkbmJBepjJb4N45xm1K07CRvBAMKQ8Uc3U4gRwg9lXVZNCBAyQYu6SU
0hrhJDXqSGC5yYUFLqVqXDxLYDIgoyQmqPWMR09Zy7mFyesHIUHrAj1vrvcSCYxkgqUU9IDTo0ie
o9dBpViJl2sVmPswY04AkKN3XleWSUugKyx5Lnmzpuzo5AEAyIIqbU/DwcltigKqNM+cYdAOxbuG
CZP1pGEQrOoIiJCC2IIApvSUAC/KeEAOIGrGasZD0FpqhMSZygEqZl4Z4Pc6X/tNT3lxUQeFTkE3
2ymIvACja2PjLxfbIqwHtkX6+iYVOQvTt4PnuMhsisg1Aqpi9XvlJk1RFHBEvQqch6ctglWi4mIs
bzTy0jyDVUQHggFbe1tEXKy2AmiJ+i2L3UzSDvWLUUwkryZxiRr6d4rz74QHoQS5trWFyCkGFIPE
2i8sqmn6vwF/UjTRPEGLJUrYeeKja/lsRJxjQeRVqGIkEk5SVK9KI3CAq+2YkNUGoLEtSX+Swrzs
TCqQ0HIkSWQKCS7pa6EVOgeqCk2VzvIWwf3EQGQYLhK4AvwczUlUdkUrEPBYqZnEkhRCg9NzDRhT
pEx6AKV5Yjhrf2ly0IwDMKojGVcyZTc/CVwfEzwTfEQlEaRimvsXiW+uUJq9Ec9IfF5pIFBMjGBW
T4q4TREYF1WDMcS4qCiQWrPEL6wdrgjdH2/rmLU8Z50F0uYJ8ED4eLPZBbCRpYeoqeLWUQGH2ZGs
BJnGli6vjBoFurLe0eKeSwkvPYnMMjJdkBUZItAyXvYj68l4Il3oOa6EnN4kAOeuSdWRkE5FiXAV
G2oMnXi+Abj2lkDhKZetdQ3CAtNLQyWZ1UZxRcV0TYEzYxjnYtI1waBgsI6vybYqoYG75oNgMpmz
lw5CHydZx2tSHOhEPD0R9RRWYx0I0QyFmqubr6fzQO9pGTx1cks0crkdjWA0dWhmZx3xNCyj+UME
3p61nsGBJIroTdD9q+hEBNk6rziI00mUGmYdyymc8ICVVX4tOcOuEFBckOj6ysCKdlDAXfPBVN9X
Eq7GqUFsbmoPqsb8ARjrIwP+zrKGYl5bEwM0AX+R0Sc+WzIBtiSjpUIpLWua3Glhy4QA3SHBxT+T
sYQAmWL0hQkgjW21YqhSk5ACMMCJyFBJVNAGxU22vhW6dvfAESrF+esRABCWIMZW0mR7FlMgpDXN
sWyM8cgNphSyigmUOGvg2tN0lq4z5ikSBftCWJWNA20BpcdE00dKfJCIWqebjKRszm8PDlAzvteS
nwDoTEvPIUk7FOKRyLBOayyuN4phLSPf1lp0fyk+U5nDrNtAYoskQmvdJg2ItQ1J9CYSBEXUJ50I
PtDWACkBvGQAxtBpxlxMhxQ1REwagiyNgyLiLlnCPktekTP0GwEGReluSa9K4QgYj87CMMTTMOlS
mJ8iwZ6ylVeb05Nge6Jk4uecEQWOG6GGkFbm2cUMSBM7zfknBjkMhmTFyPzW2ZRCgVMMWwPBA4Ym
NZt0ikROhuEzzFMkC0+C4nOqDoVQMsYGDvJckAykGi2Tm87eG7gasvlKUX8lMBs0Q1mZ06ADSjtY
ZnN8QhOB3Qh1uFf4h1rAxJ80XBzkJbLfNH+nKkKKRjiW8zWVzJQ4SCI/SgrmIKZrr6A3THKioVKL
mWSHIH1Th+zEulkAllvKDYo1NyhD1yitLRkoWfrJ4wWH4TioLgAShSXOcF0aMSk2ybHQrHVc6iEH
JuBO0MDZUxawisKiyMSZ2I8RpyAfpPuD4UpNnIN8QEcJlhX7SSoBCI+WRFB5RmDRUQLlV4JlgtLp
36GaEeLUZKarIK8pEWXV1+kq4uwn9ojmzj6IukiFJJqTDvZAsh2TTo1TkI8CxEYBF2s4qTz0XB0H
kWoakfYGOKaivkquxoW+HHM/RBC2E6AgjSGwhKinUGa1IdEUiknwmLlhGM04KX6QeXQNOaWA35Or
BNIlXnMeauqigSJvxeQQ540FO0ro3O7ZVSdj30YgFlRTHVE0f9QWUMukZUL26XajyDRWd5iEX1Pw
BQLoWEPt5DUnnW9hEEUerdnHU/BlPeKjMcEpKv4wlrMWk55F+2L6RTjpboPwmWNtzNEMANx8nUoo
N39W+ig3bhj8UgsDSOCOGERVJUvmsjbwi5JjtUhYQum4WNYmNjC4EaJ2L0iZEWJBRc1oGBUlOENn
62ohgtXI6AMqhwoMMTBngxAqyAIS2iB0iASHoc7ECxSROMvUpEoFWHqGPFbdvqWyBRgn6jy7TCTW
deiMqoM9UzygIqIut9EaySDqCHxSz5ZGTBsAiFdOGxaHxLGaYKvhJgcZRBaKyTtrGVHcJFHgjOqf
FUNTmDwhtJ/EXtcAxhwBIb0WucDZe1Q4zRFiErhzA8iA7XPyM7ETSahkf9AJiUJtTs9MvopCnDRf
416+cLZgMRQL7ExKDRWUR+Y1g/AOkueMYLBylfgkAPZwzFWSImhERfSSySJYrwUyMJ4Jm3J2BdXv
MDnAqDWiN1gO1JvcaQk1KanvTsCZ0w10DcS0AfaKP5oVFCKKuTpnVaJYjZhpjmQ6K1zfuKhQ8Yhl
Uh7GegAKaMFkIFKhESS+kmS8qgokXIig44XXDbBHMG9UOhIDW3aQ0AQElTdkd+LQaEC6dFYyFSAp
5wpe1DGMKDVZGOBXEqp7HYhMJwEsE7n1Nf9YTYEvYjU1Fq2U4kgQuJrgOE89RERskJxjkcIJdI20
Zmub8tVFwX2NkbuaW4hgWcU4iNJpmDxQnEkTDtGJvWbyHDOvBeh8xwKlGZ0DBxI8k3iwwQhon5Ts
W/yMPSNuhGXu4RS9BkCNkExICREWq9hSSOXREXoOmxOTlQH4A8uFy8V7/woO3zHV3dpIoLmd425i
1tzg4CXXP0SjLB75vhRbEPAxAeQovNNcjltC2qWMjMYIDlV9eWMYym2q60cOG98fxyGBcVymWQNt
b7xgnLWU+AFiJixTw2xQIt0Sb7TmB+ro0WOiNi62IRkAZy2qftgbVXAo7mFL84WT0M77ljNNDCiQ
F0uZZZW8zLVGwDUUgQME5ndFXmWo4UNBOqSg9k+SCSoUlG1HaGlNm6IUvgJnpmFcUq8L8eeE58iI
KIFjDcPSFYhR6MhVqtu/zDKKEFXNYMZ60mjA9aWnV+eJo4UqzTF0ltxQB/mU5TIltqYuSsZNAgxi
ZVI7UmOViYcMku+Oo0/EyXFAxOdaaZeMmEU8GKstI9ezGwMcoMCVq6TWc6jupIaPCt9SRYCS2La+
wte1AIjYXWfeUxnP0q/1tP+4pVkwc8fPZ7/BxI9govY5QT1/urJrfTdZLMWI0/KoLY/WViQ/qtGj
5vloLukU83dc7t8P1/wEHNKeRxTN3MN5Cf0UkvvhdnfoqfLO6f9fYvif+6Xj5f07aVsKVimbFnN3
lFnL3E772/fT5dsFPaqfj0qdsOfUzap5iaXxN1rFP1dJ0NLiR52njz+8/XPuW4keluXcilP7jh6Z
3ah5s4sJT5ut0Q+Z+i3dhvki88+VUyJu8Px5Cv2geD5XmtaQSUnoJ8uO5jJ4+Xx2bh8Md6eIAyEI
v19+5JGG6MFQHlzihHwPvh/vaW+nN87PfT2eTvPM59t9WgPgqASlyJnkWbzL89f7CTzc5eKXhw/v
H/ffeTfBGqaHG5c1TocfB/i8rZFu2Tx/+byzo6rmBep0ThLuZzPX3e3wmmeyTCdz/Xq6/Ny9no4f
u9frdG3BiroXQrxf/j691P7L4dfHtOjh7cvX/fH0OT2b13i9XA/LX85fT8fXe/+TE91j4bap3Lwo
xUSL5M1tZ2+SfXBp+TA/qMuDl9Pn+xn9niyPTbtt6diay+f57QZ+0T4fTSx8//xF8JoL1K7m43zq
jtt9f37bX9/gk/r5ZJJNr6udUeA9ffnEwmx7PKjBg6H8Ynpt8/jA3Akd/WJ8Ppi83WhnsXu7vOf/
fP/xcTi//WO6O/90ePk8nt76n50bWC+5CZGHcohSTEUW4Z9+VJWLDPpnV0jSpy+n/yl1dkc/r8oC
Jv8R6wXQs7J5drFMx/PtcL3/c1L9G77fkO9PanG5cmSR//HXdBxwDd1ZI9/b/fXH8Zyfma3tQxc8
Gz1/P769Hc5fwNym7CepWCv93lC7aSm0hCwuTAo76Ui78lpvx+v995frIf9DHgsAVtTEMVnNkpyn
sp6+9xuS5+cdcQ2q4Ylkge+36avQGqLemDD6KvQ9xFsS3enx+5fLD7jHsfZvde9tJqfv7fd5/358
/fJ22E824sf+jhY1pn4t3Z0mzXadz2tY8mmk/0pvetguGV30jcTPSvGSpUvNAcGyEHRHlCh7lRwJ
a8Er4ZWIY5NomFavzu3HLEXgftnaN7K9g8sDOh6XY7BL2lfhCp36yyw4um2G3JaCuD9uy/UztY9P
wQS4K65ydB+lyPOOfz3+OrztXr6hfS5vkBgiLjLjgH8BOST7TPhEHeEZ7K8gUjgt5Lra7HFD+MGE
81mJ+nJwt3bDiIr5pFz9kaDDP5h6Nu+XrJZSdpsYfbkdX04wBFFG/anEp4Hp43V1uYzZAXN4M9G0
i/k9icToenRcbz12ZMK8mK9vQD1DphlyC05F8QKzTCM/YFNDYsd2CAS9yuBLiPYUXZ33fajzZG06
7VptXo5vaAHTc0qYO4gPRjfS6Fb7kfx+tB+hDuIlepfRrdOyiux7js3LBWm5xlvzHVWdv4dX1bZa
wajOK8zOCP8StbZ/ZBP7dnqXFTjSt2V/c6yv2NX+9fN4/Rs6KlGDH9Z1/Rl+kNT8daa6gjKC80Yi
TDZJrsaRzSe1nwwRf1Cm8mFNz4e9Qie4lvy+4NYafhAr6Fghbpo9KmTqi35KJrseot36ixkDGEoQ
gdlogwLO3xuvV8Qoz7J16MbPYRYShFDFMpwLsM1qG107f66nQLKF4OW7sVRqm1hsEHkjqi9VK61/
+g6thqq/LXSVYxIy8HGh9mo87wVuky1ha1nwnZf6MYokde24WN5rG/iTtuxwBoT88PIgMS8aKrcv
8J3I//Ydx0fly1K4vCXyH6mYBjKH3vfQxSP5hcDdver1cDioTS1dYiBdSK5cpQbtGhG44suiV6mF
dkbXzJeSALf3sYZJXF0gilIUzvdkei6FEiBRJ0NjF0sWlmv2OT9HIJQmay8kygxKggXlBg+E5O7c
TqLfpNhGxYJhO4gt7+p6YM1Mf9LoQKimqFtlBe/RR/pa9ZJCqqBQHtHF3nV7bA56kkZ51d4YFQ3a
U1uBDWRshOLGDiyCoyqJK3uTXxUdB8E3GmpKtHB3PAFGmsZVPqCPDLI6jvpVGSbUsj2GuR5OCqPg
lYzMj0qeu7ykG0lW1NKmmgnaRQ96XZujWc6jdwzXdvk5EsdXhbTz7qAfJLFYWsUQppAQHiuscicT
kGB9xY3AarKB8GLFVIGKoDyZ0AZLy8AMerBx/gmTIxO84aHU20ub5iUuK3o0hB528DwZdDsJalAX
2uRH0Y82sE41OYxro77YUNWLzHPxCzeIZLkpprophLfi4Juq6jHSZQQqLhKz58q8Rt6RGFCQruKl
z48i3WUbb9qSMS1QA3nFiJ6f4j/0nVEzVi+12UFm1rteduRZHQR1Xm1NdM2s/IJudYxdFCN1+tPw
UCKx7sm5UF4STjwyCwT9aWp2uAbby1m6+oqQHvcBOk3eMD+Ye8yhjSWBVO2JzM2YoALySBWge0kQ
2UgfjJMJQ58ZfZ04IsXgJqAfdKG+mk3FADTxXZgoE2y5ZpjLg03CrEw2iRx9cXkwMr84V3zBa6KY
R6VUSBeQ/EWtRGIaDAKNZgyVGiFsSzGdSUBqvclMFIPADRFdXtbUIUktd+h+ac54TbGFtxG9q6iN
rawVNPpNXzt6dViCJK+BWUqpg5cOOtDV7Sqe5fyq0GcXjPh4CZ0CCjVVHSfnn0TbYzwTXsx+MJQ8
wcQ0qUgKBkOKcUyt40bPLDvre3l03MBk+cn6ghH5ycE7/FHB7NDsC8NfbUAWWpoVHXS5dI0A1yeK
dDRBLpOOLu1O85NICRGWggrrO4bCYpovXdJpmGc8U34RLck9CTk6eUo62Jou7MCzobCK9MyDrp+1
4FlPns3ejm65xpnX+IUnNs5cNFOobykJZReq5jLffvfzeP++O+2v3w67H/vT52HIKlQrsuXMUTv/
2M+7+vH9eDp+zEylw+0+/0v19tfH/v79r5fD34+H6z9+Xn8c/vny18v+dnzt/lYOS2c+VbKfpOH1
tNLr5T1jn4e/Ps+vCdc75NXvh+v5r7fMP91nXHTPZQpTqdJCFwu6cnhUWen4vv+WfuHt8PV4Prxx
Cz3atT0XmgX9dvz74a9ppevx5XPahr8ywM6t8Zi3lj+1tH4iL/N6vdxu8yazLyLKfpHAalokf8l/
2N/3f11e/uXwev/r43r5OFzvxwO7mKabb59Zg2mxxGn9r/ljPvbX2+Gv18/r9XC+/3U9JOIwu02L
gzkvWGxKZ8HjOSXgp4VuJ+Zy5RH18rlcMYrLav+UvvF+3Z9vXy/Xd3YJEyr5kmYtX3mR6bXSB94u
n9fXAxSqUF4qT8Z5rng//LrvXj9v98v77uvlfN+dLvs3cNVSomwp0giZIptr98tyj2/Lcv7X9XJP
vK+343XmCbNLeiJm6imqj7t5PB/vx/2JvY9LD4n1fUxf99fbdf8z7/5f7/tf/1ui7/x1e9+f2OUe
PdvzcoJuf/N15SBvfzv85CXs0dPoKWGh+rrb/Xr5W7rP+69fM/OZ/c6lMOr5Yk9JveVtvu2TxpmO
8npoX5V7M1kkLdAvXV3M2+HO30iy/WVkc/N5H9fPc76TP1hl85ha8lQ2z6v97bp/OyZRP54npfNx
OaXPnQzFJPjcYkuK+Cny5a2Qkl6u0uXzzqtnWyuzp6hmGv3r/uOvSa/ym0VkNVD1UN5qUabUXqS3
ZF+IKIsSORIN/bE/Zi34cdjfp5+Z3AzFamplqreTfYtxuP/D45/+Ovxilc6j5rdrPKZbffsvl+nN
/uP5v6R/ms7idLkB4beyFn5dXfK5vuepoTnN5Ss1Iw2jKLiqjqwdiqrKaYOVeV52+vM8Kb3Lt/MR
fJTVobo6C6xWi8Pks2yQS110Q45y1frTlpsIfZvHTLq18itvdLukPV5e6cgqF18OLEcUz5XSy/zH
7MP8/XC9YN9hiTHnVSrx7tvCrV4WNTiW3uKy7OxmPXYe3EDbuzQPKc/HN2+5ZGVbieoOL+jGY4n9
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
QP1y6G5KruNfahvv6+1MiatKhf/r28v1GRhWgj995gYecNMbtifd5stkE/Px8gI61ZZTNb7MuVJ2
FPMC0lsyApbb7LU7+DCsPMU8VgEiqceodAvpXF9Ksezz7Rn0dNqGwNanPuhGnsypWqmYdLVpLWdz
Vf5P9ePvvr2evz9e4XHTp2ptTfoUKc0RNs4gtjQckdk4K9VCvEL5KUxNIhK56ioXSNs2G3w7+eXD
0x7EWWDAu/ZBpbPBVHCQnOd71GYKHckRAivFens5lYfq9jSafkO1HZCUg9bm6mbQvuY3bnbNJnuh
jLW+vE46YE1XEu22lcgRFNumaN2YoDDTvmOGwImDI7fHpPeYk31rynJqsZpv5PoppaMkj/OUfOhH
XG5VXNhFGP1hSg2GUIPLdT2+R96vp49vFHO/B21xXyVZ17VMoFDc7WQ52+bHaE73hF/oJvWLTMIo
TaG53fppTjSRoiuTbc2QF07O+c0QmNz2pWBL6DhHca24yNTZulGISdFTgqg1UxlC5YHeNbzVN2qj
c2VLpPT2l5TCWl5ycs4xbU8+6XJvtr4nv5UJ57U3pJpfaRNWthU3MYIdMvH8k0FR7O5O6ZtOneNW
RSYy5R4GfD2nHOqP129zGiKkn2NVoSP8L799+3J7o/3NMkOSdfKzu2bxjpgbYIfIbelzIr69r5vf
XQwlGkHkoe/+KIbLXj9ev364POehqVmkJvU7JzOi0Vo4UHoxv9E4EYXJK5tmTv6W/bM5e6sEEnPZ
VCHXKa9TsW1zQodmDTpyRClZRExem+m5arJlITuVZ9zXSe7nj5dPl5KMW9tqza80yibFZNqWrGjf
PDGZ6M6vRJpR9JfCvj3r/bfnt9Ovc2InjJInONdsLm6oXGqh0Z5rUXfyWov0yiSiKYl6T7TjzsDS
2o/T6/ZEOGZvroxLAypRd8r52vrFnZ62X6hDW67AxiJcJHLTYEcywTAZeUu0Tqm/rhpWz2W5loSe
Q6a/+kwpdwtlVBBEJLbZHCL4OQM5qjxknjW8tRfK+iHl0+fup+VKNxTX/OrXXVADNISeReu2/Nzq
JAo7K8FdEjzOJYEhIOk5YKtCkFNDysnYY7u2KegJKE+EfUkvsq+p+duWAjg9dCBotWU8xd5zu0lg
TrXfX9OMrdfEVRua5wYNYR2dX9S2GdGZOKegobMvCqB082dDCEwsb5fh3ByiSeU8G0DXl+3dfOdc
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
c3ZnL3N0cm9rZS96ZXJvLXdpZHRoLWhhbmctc3RkZXJyLnR4dFVUCQADZZ6+V2Wevld1eAsAAQT1
AQAABFAAAAAdjLEKwkAQRHu/Yn7AI4kK8RBBErHQzsJCLDZmiQeX23DZBPXrTaxm3vCYw9Ag2yBJ
bLa16xR4Smuo6zybG1dnp3MUEpSDmpJH9tK1U7/n6SrJH9gdY5S4tyhOf+utV9aLC1xS/7JwYSTv
atQTgWKkjwUpPFOvkMBgz/Md2mEaKkaQsPxyFLP4AVBLAwQKAAAAAAC7AxlJAAAAAAAAAAAAAAAA
DAAcAHRyYW5zaXRpb25zL1VUCQADcp6+V/6fvld1eAsAAQT1AQAABFAAAABQSwMEFAACAAgAuwMZ
Scrs0hDAAAAAHwIAADkAHAB0cmFuc2l0aW9ucy9sZW5ndGhzaXplLXRyYW5zaXRpb24tdG8tZnJv
bS1hdXRvLWFjdHVhbC50eHRVVAkAA3Gevldxnr5XdXgLAAEE9QEAAARQAAAAtc+7CsJAEAXQPl9x
SbONQh6kMF2QKEJ8wH7BmoxxMe6G3Qk+vt5oYWGlhTDNFPdw73y7kduqxLqUsliWOTptCMkszbFQ
uqMGbNGrwRPEXtWn1tnBNFOv7yTAThmvWVuD8aijMxmGYPIci2D+Jzr5H52KYFGsKkwRfsRC9M72
5PiGg3UIXxvDd1oxYg+69lQzNTmybBJH2A8Mry454iga/2BXSPmlnXzaowNvz8RHbVrUnR23sX3S
v7Dp9+yzcPAAUEsDBBQAAgAIALsDGUnN1xtKOAEAALEDAAA3ABwAdHJhbnNpdGlvbnMvbGVuZ3Ro
c2l6ZS10cmFuc2l0aW9uLXRvLWZyb20tYXV0by1kaWZmLnR4dFVUCQADcZ6+V3Gevld1eAsAAQT1
AQAABFAAAADFklFrwjAUhd/7Ky596UPNYnUy1qe6rY4xN8cK8zm2Vw1Lk5LcMN2vXyuKsCcdyCCQ
EJLvnJwTxhjwD6N8jY4/CBI8nxd8jotnSfvpzktV8XdUKBwy2ayNRidrrwQZy5XYGk+M0BGz6Lwi
x8kK7SRJox1XqFe0dvIb2XGbkWFLa2omfLvCTYMlYXVFGwriOP53Q6IkL9TOTpYBS3rXECe9G8iy
gL2NiwIYhAtRfq6s8bpiHSuExpoGLW1haSyEnXwSQuuxRk0gCBIHTnyBMzXSWuoVlMo4BDIpjEa9
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
s5gBAGZhc3QvY2FudmFzL2NhbnZhcy1jcmVhdGVQYXR0ZXJuLXZpZGVvLWxvYWRpbmctc3RkZXJy
LnR4dFVUBQADAJ2+V3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAPgCGUktAJB3jwAAADQBAAAm
ABgAAAAAAAEAAACkgeOZAQBmYXN0L2NhbnZhcy9jYW52YXMtbGluZURhc2gtc3RkZXJyLnR4dFVU
BQADA52+V3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAAAADGUkAAAAAAAAAAAAAAAAJABgAAAAA
AAAAEADtQdKaAQBmYXN0L2Nzcy9VVAUAAxCdvld1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACAAA
AxlJ2wjTQjsAAAA/AAAAKQAYAAAAAAABAAAApIEVmwEAZmFzdC9jc3MvY29tcGFyZS1jb250ZW50
LXN0eWxlLXN0ZGVyci50eHRVVAUAAxCdvld1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAAAFAxlJ
AAAAAAAAAAAAAAAADAAYAAAAAAAAABAA7UGzmwEAZmFzdC9ldmVudHMvVVQFAAMZnb5XdXgLAAEE
9QEAAARQAAAAUEsBAh4DFAACAAgABQMZScrPDVe8AAAATQEAAD8AGAAAAAAAAQAAAKSB+ZsBAGZh
c3QvZXZlbnRzL21lZGlhLWZvY3VzLWluLXN0YW5kYWxvbmUtbWVkaWEtZG9jdW1lbnQtc3RkZXJy
LnR4dFVUBQADGZ2+V3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAAAgDGUkAAAAAAAAAAAAAAAAM
ABgAAAAAAAAAEADtQS6dAQBmYXN0L2ZyYW1lcy9VVAUAAx+dvld1eAsAAQT1AQAABFAAAABQSwEC
HgMUAAIACAAIAxlJ2wjTQjsAAAA/AAAALwAYAAAAAAABAAAApIF0nQEAZmFzdC9mcmFtZXMvZnJh
bWUtZGlzcGxheS1ub25lLWZvY3VzLXN0ZGVyci50eHRVVAUAAx+dvld1eAsAAQT1AQAABFAAAABQ
SwECHgMKAAAAAAANAxlJAAAAAAAAAAAAAAAADAAYAAAAAAAAABAA7UEYngEAZmFzdC9pbWFnZXMv
VVQFAAMpnb5XdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgADQMZSSGPvTgyAAAAMwAAACwAGAAA
AAAAAQAAAKSBXp4BAGZhc3QvaW1hZ2VzL3BkZi1hcy1pbWFnZS1jcm9wLWJveC1zdGRlcnIudHh0
VVQFAAMpnb5XdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAAEwMZSQAAAAAAAAAAAAAAAAwAGAAA
AAAAAAAQAO1B9p4BAGZhc3QvbG9hZGVyL1VUBQADNZ2+V3V4CwABBPUBAAAEUAAAAFBLAQIeAxQA
AgAIAAsDGUnbCNNCOwAAAD8AAABSABgAAAAAAAEAAACkgTyfAQBmYXN0L2xvYWRlci9kaXNwbGF5
LWltYWdlLXVuc2V0LWNhbi1ibG9jay1pbWFnZS1hbmQtY2FuLXJlbG9hZC1pbi1wbGFjZS1zdGRl
cnIudHh0VVQFAAMmnb5XdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgADgMZSdsI00I7AAAAPwAA
AFMAGAAAAAAAAQAAAKSBA6ABAGZhc3QvbG9hZGVyL2ltYWdlcy1lbmFibGVkLXVuc2V0LWNhbi1i
bG9jay1pbWFnZS1hbmQtY2FuLXJlbG9hZC1pbi1wbGFjZS1zdGRlcnIudHh0VVQFAAMsnb5XdXgL
AAEE9QEAAARQAAAAUEsBAh4DFAACAAgAEwMZSdsI00I7AAAAPwAAAC0AGAAAAAAAAQAAAKSBy6AB
AGZhc3QvbG9hZGVyL3JlbG9hZC1wb2xpY3ktZGVsZWdhdGUtc3RkZXJyLnR4dFVUBQADNZ2+V3V4
CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAAB0DGUkAAAAAAAAAAAAAAAAKABgAAAAAAAAAEADtQW2h
AQBmYXN0L3RleHQvVVQFAANKnb5XdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAHQMZSf3bnphf
AQAABgQAACMAGAAAAAAAAQAAAKSBsaEBAGZhc3QvdGV4dC9lbW9qaS1nZW5kZXItMi1zdGRlcnIu
dHh0VVQFAANKnb5XdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAAHQMZSQAAAAAAAAAAAAAAAA4A
GAAAAAAAAAAQAO1BbaMBAGZhc3Qvdmlld3BvcnQvVVQFAANKnb5XdXgLAAEE9QEAAARQAAAAUEsB
Ah4DCgAAAAAAIAMZSQAAAAAAAAAAAAAAABIAGAAAAAAAAAAQAO1BtaMBAGZhc3Qvdmlld3BvcnQv
aW9zL1VUBQADS52+V3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIACADGUki/7/9cAAAAKkAAAA+
ABgAAAAAAAEAAACkgQGkAQBmYXN0L3ZpZXdwb3J0L2lvcy93aWR0aC1pcy1kZXZpY2Utd2lkdGgt
b3ZlcmZsb3dpbmctYWN0dWFsLnR4dFVUBQADS52+V3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAI
AB0DGUksUyb8hAAAAKoAAABYABgAAAAAAAEAAACkgemkAQBmYXN0L3ZpZXdwb3J0L2lvcy93aWR0
aC1pcy1kZXZpY2Utd2lkdGgtb3ZlcmZsb3dpbmctYm9keS1vdmVyZmxvdy1oaWRkZW4tdGFsbC1h
Y3R1YWwudHh0VVQFAANKnb5XdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAHQMZSTG+sAkHAQAA
WQIAAFYAGAAAAAAAAQAAAKSB/6UBAGZhc3Qvdmlld3BvcnQvaW9zL3dpZHRoLWlzLWRldmljZS13
aWR0aC1vdmVyZmxvd2luZy1ib2R5LW92ZXJmbG93LWhpZGRlbi10YWxsLWRpZmYudHh0VVQFAANK
nb5XdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAHQMZSXBCmmt7AAAAqAAAAFoAGAAAAAAAAQAA
AKSBlqcBAGZhc3Qvdmlld3BvcnQvaW9zL3dpZHRoLWlzLWRldmljZS13aWR0aC1vdmVyZmxvd2lu
Zy1ib2R5LW92ZXJmbG93LWhpZGRlbi10YWxsLWV4cGVjdGVkLnR4dFVUBQADSp2+V3V4CwABBPUB
AAAEUAAAAFBLAQIeAxQAAgAIACADGUn28BJGEggAAKgbAABeABgAAAAAAAEAAACkgaWoAQBmYXN0
L3ZpZXdwb3J0L2lvcy93aWR0aC1pcy1kZXZpY2Utd2lkdGgtb3ZlcmZsb3dpbmctYm9keS1vdmVy
Zmxvdy1oaWRkZW4tdGFsbC1wcmV0dHktZGlmZi5odG1sVVQFAANLnb5XdXgLAAEE9QEAAARQAAAA
UEsBAh4DFAACAAgAIAMZScs9hHnqAAAAIwIAADwAGAAAAAAAAQAAAKSBT7EBAGZhc3Qvdmlld3Bv
cnQvaW9zL3dpZHRoLWlzLWRldmljZS13aWR0aC1vdmVyZmxvd2luZy1kaWZmLnR4dFVUBQADS52+
V3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIACADGUmEo3EUbAAAAKcAAABAABgAAAAAAAEAAACk
ga+yAQBmYXN0L3ZpZXdwb3J0L2lvcy93aWR0aC1pcy1kZXZpY2Utd2lkdGgtb3ZlcmZsb3dpbmct
ZXhwZWN0ZWQudHh0VVQFAANLnb5XdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAIAMZSRzCWk/s
BwAAdhsAAEQAGAAAAAAAAQAAAKSBlbMBAGZhc3Qvdmlld3BvcnQvaW9zL3dpZHRoLWlzLWRldmlj
ZS13aWR0aC1vdmVyZmxvd2luZy1wcmV0dHktZGlmZi5odG1sVVQFAANLnb5XdXgLAAEE9QEAAARQ
AAAAUEsBAh4DCgAAAAAAIgMZSQAAAAAAAAAAAAAAAAkAGAAAAAAAAAAQAO1B/7sBAGZhc3QveHNs
L1VUBQADUJ2+V3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIACIDGUlO+yD4iAAAAOcAAAAlABgA
AAAAAAEAAACkgUK8AQBmYXN0L3hzbC90cmFuc2Zvcm0teGhyLWRvYy1zdGRlcnIudHh0VVQFAANP
nb5XdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAIgMZSf2iLmSPAAAA7gAAACcAGAAAAAAAAQAA
AKSBKb0BAGZhc3QveHNsL3hzbHQtYmFkLWltcG9ydC11cmktc3RkZXJyLnR4dFVUBQADT52+V3V4
CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIACIDGUnPj2YOUAAAAKAAAAAkABgAAAAAAAEAAACkgRm+
AQBmYXN0L3hzbC94c2x0LWNvbnRlbnRUeXBlLXN0ZGVyci50eHRVVAUAA0+dvld1eAsAAQT1AQAA
BFAAAABQSwECHgMUAAIACAAiAxlJgUp3rUsAAACsAAAANAAYAAAAAAABAAAApIHHvgEAZmFzdC94
c2wveHNsdC10cmFuc2Zvcm0tdG8tZnJhZ21lbnQtY3Jhc2gtc3RkZXJyLnR4dFVUBQADUJ2+V3V4
CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAI4EGUkiG1W6BgIAANwEAAARABgAAAAAAAEAAACkgYC/
AQBmdWxsX3Jlc3VsdHMuanNvblVUBQAD+5++V3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAACYD
GUkAAAAAAAAAAAAAAAAFABgAAAAAAAAAEADtQdHBAQBodHRwL1VUBQADV52+V3V4CwABBPUBAAAE
UAAAAFBLAQIeAwoAAAAAAEADGUkAAAAAAAAAAAAAAAALABgAAAAAAAAAEADtQRDCAQBodHRwL3Rl
c3RzL1VUBQADh52+V3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAACkDGUkAAAAAAAAAAAAAAAAU
ABgAAAAAAAAAEADtQVXCAQBodHRwL3Rlc3RzL2FwcGNhY2hlL1VUBQADXZ2+V3V4CwABBPUBAAAE
UAAAAFBLAQIeAxQAAgAIACkDGUn418mjwQAAAE0BAAAkABgAAAAAAAEAAACkgaPCAQBodHRwL3Rl
c3RzL2FwcGNhY2hlL3ZpZGVvLXN0ZGVyci50eHRVVAUAA12dvld1eAsAAQT1AQAABFAAAABQSwEC
HgMKAAAAAAAmAxlJAAAAAAAAAAAAAAAAEQAYAAAAAAAAABAA7UHCwwEAaHR0cC90ZXN0cy9jYWNo
ZS9VVAUAA1edvld1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACAAmAxlJ6cDnrbwAAABNAQAAMAAY
AAAAAAABAAAApIENxAEAaHR0cC90ZXN0cy9jYWNoZS9tZW1vcnktY2FjaGUtcHJ1bmluZy1zdGRl
cnIudHh0VVQFAANXnb5XdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAAJgMZSQAAAAAAAAAAAAAA
ABMAGAAAAAAAAAAQAO1BM8UBAGh0dHAvdGVzdHMvY29va2llcy9VVAUAA1idvld1eAsAAQT1AQAA
BFAAAABQSwECHgMUAAIACAAmAxlJctYlbMsBAABgKwAAOQAYAAAAAAABAAAApIGAxQEAaHR0cC90
ZXN0cy9jb29raWVzL3RoaXJkLXBhcnR5LWNvb2tpZS1yZWxheGluZy1zdGRlcnIudHh0VVQFAANY
nb5XdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAARAMZSQAAAAAAAAAAAAAAABAAGAAAAAAAAAAQ
AO1BvscBAGh0dHAvdGVzdHMvbWlzYy9VVAUAA5Cdvld1eAsAAQT1AQAABFAAAABQSwECHgMUAAIA
CABAAxlJeHFpO7kAAAD3AAAALwAYAAAAAAABAAAApIEIyAEAaHR0cC90ZXN0cy9taXNjL3dlYnRp
bWluZy1yZXNvbHV0aW9uLWFjdHVhbC50eHRVVAUAA4edvld1eAsAAQT1AQAABFAAAABQSwECHgMU
AAIACABAAxlJqN5FvxUBAAA/AgAALQAYAAAAAAABAAAApIEqyQEAaHR0cC90ZXN0cy9taXNjL3dl
YnRpbWluZy1yZXNvbHV0aW9uLWRpZmYudHh0VVQFAAOHnb5XdXgLAAEE9QEAAARQAAAAUEsBAh4D
FAACAAgAQAMZSeIQW1aqAAAA5AAAADEAGAAAAAAAAQAAAKSBpsoBAGh0dHAvdGVzdHMvbWlzYy93
ZWJ0aW1pbmctcmVzb2x1dGlvbi1leHBlY3RlZC50eHRVVAUAA4edvld1eAsAAQT1AQAABFAAAABQ
SwECHgMUAAIACABAAxlJhDe5YzEIAABjGwAANQAYAAAAAAABAAAApIG7ywEAaHR0cC90ZXN0cy9t
aXNjL3dlYnRpbWluZy1yZXNvbHV0aW9uLXByZXR0eS1kaWZmLmh0bWxVVAUAA4edvld1eAsAAQT1
AQAABFAAAABQSwECHgMUAAIACABEAxlJFTU1knoAAAC8AAAAKgAYAAAAAAABAAAApIFb1AEAaHR0
cC90ZXN0cy9taXNjL3hzbHQtYmFkLWltcG9ydC1zdGRlcnIudHh0VVQFAAOQnb5XdXgLAAEE9QEA
AARQAAAAUEsBAh4DCgAAAAAALAMZSQAAAAAAAAAAAAAAABYAGAAAAAAAAAAQAO1BOdUBAGh0dHAv
dGVzdHMvbmF2aWdhdGlvbi9VVAUAA2Sdvld1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACAAsAxlJ
2wjTQjsAAAA/AAAANwAYAAAAAAABAAAApIGJ1QEAaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL2ZhbGxi
YWNrLWFuY2hvci1yZWxvYWQtc3RkZXJyLnR4dFVUBQADZJ2+V3V4CwABBPUBAAAEUAAAAFBLAQIe
AwoAAAAAADwDGUkAAAAAAAAAAAAAAAAUABgAAAAAAAAAEADtQTXWAQBodHRwL3Rlc3RzL3NlY3Vy
aXR5L1VUBQADg52+V3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAAEMDGUkAAAAAAAAAAAAAAAAq
ABgAAAAAAAAAEADtQYPWAQBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGlj
eS9VVAUAA42dvld1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAAAwAxlJAAAAAAAAAAAAAAAAPQAY
AAAAAAAAABAA7UHn1gEAaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2VjdXJpdHlQb2xpY3kv
dXNlckFnZW50U2hhZG93RE9NL1VUBQADbJ2+V3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIADAD
GUkdjwVFvAAAAE0BAABTABgAAAAAAAEAAACkgV7XAQBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRl
bnRTZWN1cml0eVBvbGljeS91c2VyQWdlbnRTaGFkb3dET00vYWxsb3ctYXVkaW8tc3RkZXJyLnR4
dFVUBQADbJ2+V3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAEEDGUljqqxsggAAAKgAAABAABgA
AAAAAAEAAACkgafYAQBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS94
c2wtYWxsb3dlZC1zdGRlcnIudHh0VVQFAAOKnb5XdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgA
QwMZSWOqrGyCAAAAqAAAAFIAGAAAAAAAAQAAAKSBo9kBAGh0dHAvdGVzdHMvc2VjdXJpdHkvY29u
dGVudFNlY3VyaXR5UG9saWN5L3hzbC11bmFmZmVjdGVkLWJ5LXN0eWxlLXNyYy0yLXN0ZGVyci50
eHRVVAUAA42dvld1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACAA8AxlJYEtmEJEAAAD7AQAARQAY
AAAAAAABAAAApIGx2gEAaHR0cC90ZXN0cy9zZWN1cml0eS94c3MtREVOSUVELXhzbC1kb2N1bWVu
dC1zZWN1cml0eU9yaWdpbi1zdGRlcnIudHh0VVQFAAODnb5XdXgLAAEE9QEAAARQAAAAUEsBAh4D
CgAAAAAAPQMZSQAAAAAAAAAAAAAAABoAGAAAAAAAAAAQAO1BwdsBAGh0dHAvdGVzdHMveG1saHR0
cHJlcXVlc3QvVVQFAAOFnb5XdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAOAMZSWHfAKA0AQAA
bAUAAE4AGAAAAAAAAQAAAKSBFdwBAGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QvYWNjZXNzLWNv
bnRyb2wtcHJlZmxpZ2h0LWNyZWRlbnRpYWwtYXN5bmMtc3RkZXJyLnR4dFVUBQADe52+V3V4CwAB
BPUBAAAEUAAAAFBLAQIeAxQAAgAIADgDGUmgu1qgTAEAANgKAABNABgAAAAAAAEAAACkgdHdAQBo
dHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2FjY2Vzcy1jb250cm9sLXByZWZsaWdodC1jcmVkZW50
aWFsLXN5bmMtc3RkZXJyLnR4dFVUBQADe52+V3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIADgD
GUmx7CGDMwEAAGwFAABLABgAAAAAAAEAAACkgaTfAQBodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0
L2FjY2Vzcy1jb250cm9sLXByZWZsaWdodC1oZWFkZXJzLWFzeW5jLXN0ZGVyci50eHRVVAUAA3ud
vld1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACAA9AxlJ56i7byEBAAC2AgAAQAAYAAAAAAABAAAA
pIFc4QEAaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC9jcm9zcy1vcmlnaW4tY29va2llLXN0b3Jh
Z2Utc3RkZXJyLnR4dFVUBQADhZ2+V3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAD0DGUkWRKOn
HgEAALYCAABGABgAAAAAAAEAAACkgffiAQBodHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L2Nyb3Nz
LW9yaWdpbi1uby1jcmVkZW50aWFsLXByb21wdC1zdGRlcnIudHh0VVQFAAOFnb5XdXgLAAEE9QEA
AARQAAAAUEsBAh4DFAACAAgAPQQZSVsEWA6iBQAATRAAAAoAGAAAAAAAAQAAAKSBleQBAGh0dHBk
LmNvbmZVVAUAA2Wfvld1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAABcAxlJAAAAAAAAAAAAAAAA
CQAYAAAAAAAAABAA7UF76gEAaW1wb3J0ZWQvVVQFAAO/nb5XdXgLAAEE9QEAAARQAAAAUEsBAh4D
CgAAAAAAXAMZSQAAAAAAAAAAAAAAAA0AGAAAAAAAAAAQAO1BvuoBAGltcG9ydGVkL3czYy9VVAUA
A7+dvld1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAABcAxlJAAAAAAAAAAAAAAAAIAAYAAAAAAAA
ABAA7UEF6wEAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9VVAUAA7+dvld1eAsAAQT1
AQAABFAAAABQSwECHgMKAAAAAABcAxlJAAAAAAAAAAAAAAAAJgAYAAAAAAAAABAA7UFf6wEAaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9VVAUAA7+dvld1eAsAAQT1AQAABFAA
AABQSwECHgMKAAAAAABgAxlJAAAAAAAAAAAAAAAAKgAYAAAAAAAAABAA7UG/6wEAaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvVVQFAAPDnb5XdXgLAAEE9QEAAARQAAAA
UEsBAh4DCgAAAAAAXAMZSQAAAAAAAAAAAAAAADAAGAAAAAAAAAAQAO1BI+wBAGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL2Jhc2ljL1VUBQADv52+V3V4CwABBPUBAAAE
UAAAAFBLAQIeAxQAAgAIAFwDGUmdtW0UkgAAAJ4AAABHABgAAAAAAAEAAACkgY3sAQBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9iYXNpYy9tb2RlLW5vLWNvcnMtc3Rk
ZXJyLnR4dFVUBQADv52+V3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAFwDGUnJCUR4kgAAAJ4A
AABOABgAAAAAAAEAAACkgaDtAQBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNo
L2FwaS9iYXNpYy9tb2RlLW5vLWNvcnMtd29ya2VyLXN0ZGVyci50eHRVVAUAA7+dvld1eAsAAQT1
AQAABFAAAABQSwECHgMKAAAAAABhAxlJAAAAAAAAAAAAAAAALwAYAAAAAAAAABAA7UG67gEAaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvY29ycy9VVAUAA8Wdvld1eAsA
AQT1AQAABFAAAABQSwECHgMUAAIACABgAxlJfzJZGasAAAC0AwAARAAYAAAAAAABAAAApIEj7wEA
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9hcGkvY29ycy9jb3JzLWJhc2lj
LXN0ZGVyci50eHRVVAUAA8Odvld1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACABgAxlJSMeL7awA
AAC0AwAASwAYAAAAAAABAAAApIFM8AEAaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9m
ZXRjaC9hcGkvY29ycy9jb3JzLWJhc2ljLXdvcmtlci1zdGRlcnIudHh0VVQFAAPDnb5XdXgLAAEE
9QEAAARQAAAAUEsBAh4DFAACAAgAYQMZSetrBIudAAAAPAEAAEsAGAAAAAAAAQAAAKSBffEBAGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL2NvcnMvY29ycy1uby1wcmVm
bGlnaHQtc3RkZXJyLnR4dFVUBQADxZ2+V3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAGEDGUmz
gc5DnQAAADwBAABSABgAAAAAAAEAAACkgZ/yAQBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2ZldGNoL2FwaS9jb3JzL2NvcnMtbm8tcHJlZmxpZ2h0LXdvcmtlci1zdGRlcnIudHh0VVQF
AAPFnb5XdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAAhgQZSQAAAAAAAAAAAAAAAAYAGAAAAAAA
AAAQAO1ByPMBAG1lZGlhL1VUBQAD7J++V3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAAIYEGUkA
AAAAAAAAAAAAAAAPABgAAAAAAAAAEADtQQj0AQBtZWRpYS9jb250cm9scy9VVAUAA+yfvld1eAsA
AQT1AQAABFAAAABQSwECHgMKAAAAAACGBBlJAAAAAAAAAAAAAAAAFAAYAAAAAAAAABAA7UFR9AEA
bWVkaWEvY29udHJvbHMvaXBhZC9VVAUAA+yfvld1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACACG
BBlJfB0h4L4AAABNAQAAWQAYAAAAAAABAAAApIGf9AEAbWVkaWEvY29udHJvbHMvaXBhZC9jbG9z
ZS1wYWdlLXdpdGgtcGljdHVyZS1pbi1waWN0dXJlLXZpZGVvLWFzc2VydGlvbi1mYWlsdXJlLXN0
ZGVyci50eHRVVAUAA+yfvld1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAADBAxlJAAAAAAAAAAAA
AAAADAAYAAAAAAAAABAA7UHw9QEAbWVkaWEvdHJhY2svVVQFAAN5nr5XdXgLAAEE9QEAAARQAAAA
UEsBAh4DCgACAAAAvAMZSf4nOOA1AAAANQAAACoAGAAAAAAAAQAAAKSBNvYBAG1lZGlhL3RyYWNr
L3RyYWNrLWluLWJhbmQtc3R5bGUtYWN0dWFsLnR4dFVUBQADc56+V3V4CwABBPUBAAAEUAAAAFBL
AQIeAxQAAgAIALwDGUkOgSw70AEAAI4DAAAoABgAAAAAAAEAAACkgc/2AQBtZWRpYS90cmFjay90
cmFjay1pbi1iYW5kLXN0eWxlLWRpZmYudHh0VVQFAANznr5XdXgLAAEE9QEAAARQAAAAUEsBAh4D
FAACAAgAvAMZSQz65Oo2AQAAMwIAACwAGAAAAAAAAQAAAKSBAfkBAG1lZGlhL3RyYWNrL3RyYWNr
LWluLWJhbmQtc3R5bGUtZXhwZWN0ZWQudHh0VVQFAANznr5XdXgLAAEE9QEAAARQAAAAUEsBAh4D
FAACAAgAvAMZSbHZSeD4CAAAtSQAADAAGAAAAAAAAQAAAKSBnfoBAG1lZGlhL3RyYWNrL3RyYWNr
LWluLWJhbmQtc3R5bGUtcHJldHR5LWRpZmYuaHRtbFVUBQADc56+V3V4CwABBPUBAAAEUAAAAFBL
AQIeAxQAAgAIAMEDGUmSD3+MvQAAAE0BAAA0ABgAAAAAAAEAAACkgf8DAgBtZWRpYS90cmFjay90
cmFjay1pbnNlcnQtYWZ0ZXItbG9hZC1jcmFzaC1zdGRlcnIudHh0VVQFAAN5nr5XdXgLAAEE9QEA
AARQAAAAUEsBAh4DCgAAAAAAjgMZSQAAAAAAAAAAAAAAAAoAGAAAAAAAAAAQAO1BKgUCAG1lZGlh
L1czQy9VVAUAAxuevld1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAACLAxlJAAAAAAAAAAAAAAAA
EAAYAAAAAAAAABAA7UFuBQIAbWVkaWEvVzNDL2F1ZGlvL1VUBQADFp6+V3V4CwABBPUBAAAEUAAA
AFBLAQIeAwoAAAAAAIsDGUkAAAAAAAAAAAAAAAAXABgAAAAAAAAAEADtQbgFAgBtZWRpYS9XM0Mv
YXVkaW8vZXZlbnRzL1VUBQADFp6+V3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAIsDGUlDtpUy
vAAAAE0BAAAvABgAAAAAAAEAAACkgQkGAgBtZWRpYS9XM0MvYXVkaW8vZXZlbnRzL2V2ZW50X2Nh
bnBsYXktc3RkZXJyLnR4dFVUBQADFp6+V3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAAI4DGUkA
AAAAAAAAAAAAAAAQABgAAAAAAAAAEADtQS4HAgBtZWRpYS9XM0MvdmlkZW8vVVQFAAMbnr5XdXgL
AAEE9QEAAARQAAAAUEsBAh4DCgAAAAAAjgMZSQAAAAAAAAAAAAAAABQAGAAAAAAAAAAQAO1BeAcC
AG1lZGlhL1czQy92aWRlby9zcmMvVVQFAAMbnr5XdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgA
jgMZSfxNNI28AAAATQEAAEUAGAAAAAAAAQAAAKSBxgcCAG1lZGlhL1czQy92aWRlby9zcmMvc3Jj
X3JlbW92YWxfZG9lc19ub3RfdHJpZ2dlcl9sb2Fkc3RhcnQtc3RkZXJyLnR4dFVUBQADG56+V3V4
CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAEQDGUk/5O8elAIAANgkAAAaABgAAAAAAAEAAACkgQEJ
AgBweXdlYnNvY2tldC53cy5sb2ctZXJyLnR4dFVUBQADkJ2+V3V4CwABBPUBAAAEUAAAAFBLAQIe
AxQAAgAIAEQDGUmmkz+CBgEAAI8CAAAaABgAAAAAAAEAAACkgekLAgBweXdlYnNvY2tldC53cy5s
b2ctb3V0LnR4dFVUBQADkJ2+V3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAAM0CGUkAAAAAAAAA
AAAAAAAbABgAAAAAAAAAAACkgUMNAgBweXdlYnNvY2tldC53c3MubG9nLWVyci50eHRVVAUAA7Gc
vld1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAADNAhlJAAAAAAAAAAAAAAAAGwAYAAAAAAAAAAAA
pIGYDQIAcHl3ZWJzb2NrZXQud3NzLmxvZy1vdXQudHh0VVQFAAOxnL5XdXgLAAEE9QEAAARQAAAA
UEsBAh4DCgAAAAAAkAMZSQAAAAAAAAAAAAAAAAoAGAAAAAAAAAAQAO1B7Q0CAHF1aWNrbG9vay9V
VAUAAyCevld1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACACQAxlJN8BPpdEBAADeJQAAHwAYAAAA
AAABAAAApIExDgIAcXVpY2tsb29rL2tleW5vdGUtMDktc3RkZXJyLnR4dFVUBQADIJ6+V3V4CwAB
BPUBAAAEUAAAAFBLAQIeAxQAAgAIAI4EGUlFJh050ScAAMuqAAAMABgAAAAAAAEAAACkgVsQAgBy
ZXN1bHRzLmh0bWxVVAUAA/ufvld1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAABTBBlJAAAAAAAA
AAAAAAAACAAYAAAAAAAAABAA7UFyOAIAcmV0cmllcy9VVAUAA42fvld1eAsAAQT1AQAABFAAAABQ
SwECHgMKAAAAAABCBBlJAAAAAAAAAAAAAAAADQAYAAAAAAAAABAA7UG0OAIAcmV0cmllcy9mYXN0
L1VUBQADbJ++V3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAAEIEGUkAAAAAAAAAAAAAAAAWABgA
AAAAAAAAEADtQfs4AgByZXRyaWVzL2Zhc3Qvdmlld3BvcnQvVVQFAANsn75XdXgLAAEE9QEAAARQ
AAAAUEsBAh4DCgAAAAAAQgQZSQAAAAAAAAAAAAAAABoAGAAAAAAAAAAQAO1BSzkCAHJldHJpZXMv
ZmFzdC92aWV3cG9ydC9pb3MvVVQFAANsn75XdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAQgQZ
SSL/v/1wAAAAqQAAAEYAGAAAAAAAAQAAAKSBnzkCAHJldHJpZXMvZmFzdC92aWV3cG9ydC9pb3Mv
d2lkdGgtaXMtZGV2aWNlLXdpZHRoLW92ZXJmbG93aW5nLWFjdHVhbC50eHRVVAUAA2yfvld1eAsA
AQT1AQAABFAAAABQSwECHgMUAAIACABCBBlJDQO7Je8AAAAzAgAARAAYAAAAAAABAAAApIGPOgIA
cmV0cmllcy9mYXN0L3ZpZXdwb3J0L2lvcy93aWR0aC1pcy1kZXZpY2Utd2lkdGgtb3ZlcmZsb3dp
bmctZGlmZi50eHRVVAUAA2yfvld1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACABCBBlJhKNxFGwA
AACnAAAASAAYAAAAAAABAAAApIH8OwIAcmV0cmllcy9mYXN0L3ZpZXdwb3J0L2lvcy93aWR0aC1p
cy1kZXZpY2Utd2lkdGgtb3ZlcmZsb3dpbmctZXhwZWN0ZWQudHh0VVQFAANsn75XdXgLAAEE9QEA
AARQAAAAUEsBAh4DFAACAAgAQgQZSTMgSzDxBwAAfhsAAEwAGAAAAAAAAQAAAKSB6jwCAHJldHJp
ZXMvZmFzdC92aWV3cG9ydC9pb3Mvd2lkdGgtaXMtZGV2aWNlLXdpZHRoLW92ZXJmbG93aW5nLXBy
ZXR0eS1kaWZmLmh0bWxVVAUAA2yfvld1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAABTBBlJAAAA
AAAAAAAAAAAADAAYAAAAAAAAABAA7UFhRQIAcmV0cmllcy9zdmcvVVQFAAONn75XdXgLAAEE9QEA
AARQAAAAUEsBAh4DCgAAAAAAUwQZSQAAAAAAAAAAAAAAABcAGAAAAAAAAAAQAO1Bp0UCAHJldHJp
ZXMvc3ZnL2FuaW1hdGlvbnMvVVQFAAONn75XdXgLAAEE9QEAAARQAAAAUEsBAh4DCgACAAAAUwQZ
Sf4nOOA1AAAANQAAAEAAGAAAAAAAAQAAAKSB+EUCAHJldHJpZXMvc3ZnL2FuaW1hdGlvbnMvYW5p
bWF0ZS10ZXh0LW5lc3RlZC10cmFuc2Zvcm1zLWFjdHVhbC50eHRVVAUAA42fvld1eAsAAQT1AQAA
BFAAAABQSwECHgMUAAIACABTBBlJyYY/+aEBAABXAwAAPgAYAAAAAAABAAAApIGnRgIAcmV0cmll
cy9zdmcvYW5pbWF0aW9ucy9hbmltYXRlLXRleHQtbmVzdGVkLXRyYW5zZm9ybXMtZGlmZi50eHRV
VAUAA42fvld1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACABTBBlJ8lpTTAIBAADTAQAAQgAYAAAA
AAABAAAApIHASAIAcmV0cmllcy9zdmcvYW5pbWF0aW9ucy9hbmltYXRlLXRleHQtbmVzdGVkLXRy
YW5zZm9ybXMtZXhwZWN0ZWQudHh0VVQFAAONn75XdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgA
UwQZSeeTOSP3CAAAXSMAAEYAGAAAAAAAAQAAAKSBPkoCAHJldHJpZXMvc3ZnL2FuaW1hdGlvbnMv
YW5pbWF0ZS10ZXh0LW5lc3RlZC10cmFuc2Zvcm1zLXByZXR0eS1kaWZmLmh0bWxVVAUAA42fvld1
eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAACSAxlJAAAAAAAAAAAAAAAACQAYAAAAAAAAABAA7UG1
UwIAc2VjdXJpdHkvVVQFAAMknr5XdXgLAAEE9QEAAARQAAAAUEsBAh4DCgAAAAAAkgMZSQAAAAAA
AAAAAAAAAB8AGAAAAAAAAAAQAO1B+FMCAHNlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9V
VAUAAySevld1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACACSAxlJPfXi470AAABNAQAAmwAYAAAA
AAABAAAApIFRVAIAc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3ZpZGVvLXdpdGgtZmls
ZS11cmwtYWxsb3dlZC1ieS1tZWRpYS1zcmMtc3Rhci13aXRoLUFsbG93Q29udGVudFNlY3VyaXR5
UG9saWN5U291cmNlU3RhclRvTWF0Y2hBbnlQcm90b2NvbC1lbmFibGVkLXN0ZGVyci50eHRVVAUA
AySevld1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACACOBBlJUr54jicMBwD8ZyYACgAYAAAAAAAB
AAAApIHjVQIAc3RhdHMuanNvblVUBQAD+5++V3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAAM4D
GUkAAAAAAAAAAAAAAAAEABgAAAAAAAAAEADtQU5iCQBzdmcvVVQFAAOTnr5XdXgLAAEE9QEAAARQ
AAAAUEsBAh4DCgAAAAAAugMZSQAAAAAAAAAAAAAAAA8AGAAAAAAAAAAQAO1BjGIJAHN2Zy9hbmlt
YXRpb25zL1VUBQADb56+V3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAgAAALkDGUn+JzjgNQAAADUA
AAA4ABgAAAAAAAEAAACkgdViCQBzdmcvYW5pbWF0aW9ucy9hbmltYXRlLXRleHQtbmVzdGVkLXRy
YW5zZm9ybXMtYWN0dWFsLnR4dFVUBQADbp6+V3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIALkD
GUkaZXOMnQEAAEcDAAA2ABgAAAAAAAEAAACkgXxjCQBzdmcvYW5pbWF0aW9ucy9hbmltYXRlLXRl
eHQtbmVzdGVkLXRyYW5zZm9ybXMtZGlmZi50eHRVVAUAA26evld1eAsAAQT1AQAABFAAAABQSwEC
HgMUAAIACAC5AxlJ8lpTTAIBAADTAQAAOgAYAAAAAAABAAAApIGJZQkAc3ZnL2FuaW1hdGlvbnMv
YW5pbWF0ZS10ZXh0LW5lc3RlZC10cmFuc2Zvcm1zLWV4cGVjdGVkLnR4dFVUBQADbp6+V3V4CwAB
BPUBAAAEUAAAAFBLAQIeAxQAAgAIALoDGUknjkRg8AgAAFUjAAA+ABgAAAAAAAEAAACkgf9mCQBz
dmcvYW5pbWF0aW9ucy9hbmltYXRlLXRleHQtbmVzdGVkLXRyYW5zZm9ybXMtcHJldHR5LWRpZmYu
aHRtbFVUBQADb56+V3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAAKwDGUkAAAAAAAAAAAAAAAAN
ABgAAAAAAAAAEADtQWdwCQBzdmcvYXMtaW1hZ2UvVVQFAANUnr5XdXgLAAEE9QEAAARQAAAAUEsB
Ah4DFAACAAgArAMZSdsI00I7AAAAPwAAAD8AGAAAAAAAAQAAAKSBrnAJAHN2Zy9hcy1pbWFnZS9z
dmctaW1hZ2Utd2l0aC1kYXRhLXVyaS1pbWFnZXMtZGlzYWJsZWQtc3RkZXJyLnR4dFVUBQADVJ6+
V3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAAAM4DGUkAAAAAAAAAAAAAAAALABgAAAAAAAAAEADt
QWJxCQBzdmcvY3VzdG9tL1VUBQADk56+V3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIAM4DGUm2
60PNiAAAAJoAAAAkABgAAAAAAAEAAACkgadxCQBzdmcvY3VzdG9tL3plcm8tZGFzaGFycmF5LXN0
ZGVyci50eHRVVAUAA5Oevld1eAsAAQT1AQAABFAAAABQSwECHgMKAAAAAAC1AxlJAAAAAAAAAAAA
AAAACwAYAAAAAAAAABAA7UGNcgkAc3ZnL3N0cm9rZS9VVAUAA2Wevld1eAsAAQT1AQAABFAAAABQ
SwECHgMUAAIACAC1AxlJ3pJQeIkAAACaAAAAJQAYAAAAAAABAAAApIHScgkAc3ZnL3N0cm9rZS96
ZXJvLXdpZHRoLWhhbmctc3RkZXJyLnR4dFVUBQADZZ6+V3V4CwABBPUBAAAEUAAAAFBLAQIeAwoA
AAAAALsDGUkAAAAAAAAAAAAAAAAMABgAAAAAAAAAEADtQbpzCQB0cmFuc2l0aW9ucy9VVAUAA3Ke
vld1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACAC7AxlJyuzSEMAAAAAfAgAAOQAYAAAAAAABAAAA
pIEAdAkAdHJhbnNpdGlvbnMvbGVuZ3Roc2l6ZS10cmFuc2l0aW9uLXRvLWZyb20tYXV0by1hY3R1
YWwudHh0VVQFAANxnr5XdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAuwMZSc3XG0o4AQAAsQMA
ADcAGAAAAAAAAQAAAKSBM3UJAHRyYW5zaXRpb25zL2xlbmd0aHNpemUtdHJhbnNpdGlvbi10by1m
cm9tLWF1dG8tZGlmZi50eHRVVAUAA3Gevld1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACAC7AxlJ
76Cll2oAAAAMAQAAOwAYAAAAAAABAAAApIHcdgkAdHJhbnNpdGlvbnMvbGVuZ3Roc2l6ZS10cmFu
c2l0aW9uLXRvLWZyb20tYXV0by1leHBlY3RlZC50eHRVVAUAA3Gevld1eAsAAQT1AQAABFAAAABQ
SwECHgMUAAIACAC7AxlJSQuJRygIAACdHQAAPwAYAAAAAAABAAAApIG7dwkAdHJhbnNpdGlvbnMv
bGVuZ3Roc2l6ZS10cmFuc2l0aW9uLXRvLWZyb20tYXV0by1wcmV0dHktZGlmZi5odG1sVVQFAANx
nr5XdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAuwMZSapzY4oXAQAAHwQAADAAGAAAAAAAAQAA
AKSBXIAJAHRyYW5zaXRpb25zL3NoYXBlLW91dHNpZGUtdHJhbnNpdGlvbnMtYWN0dWFsLnR4dFVU
BQADcp6+V3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIALsDGUlB8eHmwQEAABsHAAAuABgAAAAA
AAEAAACkgd2BCQB0cmFuc2l0aW9ucy9zaGFwZS1vdXRzaWRlLXRyYW5zaXRpb25zLWRpZmYudHh0
VVQFAANynr5XdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAuwMZSagasy6tAAAALgIAADIAGAAA
AAAAAQAAAKSBBoQJAHRyYW5zaXRpb25zL3NoYXBlLW91dHNpZGUtdHJhbnNpdGlvbnMtZXhwZWN0
ZWQudHh0VVQFAANynr5XdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAuwMZSSRwO342CQAAFysA
ADYAGAAAAAAAAQAAAKSBH4UJAHRyYW5zaXRpb25zL3NoYXBlLW91dHNpZGUtdHJhbnNpdGlvbnMt
cHJldHR5LWRpZmYuaHRtbFVUBQADcp6+V3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIALsDGUke
co/+5gAAAK8CAAAsABgAAAAAAAEAAACkgcWOCQB0cmFuc2l0aW9ucy9zdGVwcy10aW1pbmctZnVu
Y3Rpb24tYWN0dWFsLnR4dFVUBQADcp6+V3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIALsDGUkB
mt0/fgEAAOQEAAAqABgAAAAAAAEAAACkgRGQCQB0cmFuc2l0aW9ucy9zdGVwcy10aW1pbmctZnVu
Y3Rpb24tZGlmZi50eHRVVAUAA3Kevld1eAsAAQT1AQAABFAAAABQSwECHgMUAAIACAC7AxlJWUnC
6poAAABcAQAALgAYAAAAAAABAAAApIHzkQkAdHJhbnNpdGlvbnMvc3RlcHMtdGltaW5nLWZ1bmN0
aW9uLWV4cGVjdGVkLnR4dFVUBQADcp6+V3V4CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIALsDGUm/
nQWp1QgAAJwjAAAyABgAAAAAAAEAAACkgfWSCQB0cmFuc2l0aW9ucy9zdGVwcy10aW1pbmctZnVu
Y3Rpb24tcHJldHR5LWRpZmYuaHRtbFVUBQADcp6+V3V4CwABBPUBAAAEUAAAAFBLAQIeAwoAAAAA
ALoDGUkAAAAAAAAAAAAAAAALABgAAAAAAAAAEADtQTacCQB3ZWJhcmNoaXZlL1VUBQADb56+V3V4
CwABBPUBAAAEUAAAAFBLAQIeAxQAAgAIALoDGUnbCNNCOwAAAD8AAAA6ABgAAAAAAAEAAACkgXuc
CQB3ZWJhcmNoaXZlL3Rlc3QtbGluay1yZWwtc3VicmVzb3VyY2UtYmVmb3JlbG9hZC1zdGRlcnIu
dHh0VVQFAANvnr5XdXgLAAEE9QEAAARQAAAAUEsBAh4DFAACAAgAMwQZSfSjd+v8bQEAIYcmABkA
GAAAAAAAAQAAAKSBKp0JAHdwdHdrX3Byb2Nlc3NfbG9nLm91dC50eHRVVAUAA1Kfvld1eAsAAQT1
AQAABFAAAABQSwUGAAAAAKgAqAD9RwAAeQsLAAAA
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>286991</attachid>
            <date>2016-08-25 11:34:43 -0700</date>
            <delta_ts>2016-08-25 13:44:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-152723-20160825113241.patch</filename>
            <type>text/plain</type>
            <size>201172</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA0OTUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
ODg4NTQ1MDJhODY4NzA3YmJkOTdmOWZmODhlOTQwMzcxYjFmMzczLi5iNjgxNDMxYTI1MDI4Y2Jj
NjVkMThhNGQ2YTY5MzM2NTE4MjY0ZWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNzAgQEAKKzIwMTYtMDgtMjUgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0RGR11bRlRMXSBJbXBsZW1lbnQgRVM2IEdlbmVyYXRvcnMgaW4g
REZHIC8gRlRMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNTI3MjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUaGlzIHBhdGNoIGludHJvZHVjZXMgREZHIGFuZCBGVEwgc3VwcG9ydCBmb3IgRVM2IGdlbmVy
YXRvcnMuCisgICAgICAgIEVTNiBnZW5lcmF0b3IgaXMgY29tcGlsZWQgYnkgdGhlIEJ5dGVjb2Rl
R2VuZXJhdG9yLiBCdXQgYXQgdGhlIGxhc3QgcGhhc2UsIEJ5dGVjb2RlR2VuZXJhdG9yIHBlcmZv
cm1zICJnZW5lcmF0b3JpZmljYXRpb24iIG9udG8gdGhlIHVubGlua2VkIGNvZGUuCisgICAgICAg
IEluIEJ5dGVjb2RlR2VuZXJhdG9yIHBoYXNlLCB3ZSBqdXN0IGVtaXQgb3BfeWllbGQgZm9yIGVh
Y2ggeWllbGQgcG9pbnQuIEFuZCB3ZSBkb24ndCBlbWl0IGFueSBnZW5lcmF0b3IgcmVsYXRlZCBz
d2l0Y2gsIHNhdmUsIGFuZCByZXN1bWUgc2VxdWVuY2VzCisgICAgICAgIGhlcmUuIFRob3NlIGFy
ZSBlbWl0dGVkIGJ5IHRoZSBnZW5lcmF0b3JpZmljYXRpb24gcGhhc2UuCisKKyAgICAgICAgU28g
dGhlIGdyYXBoIGlzIHN1cGVyIHNpbXBsZSEgQmVmb3JlIHRoZSBnZW5lcmF0b3JpZmljYXRpb24s
IHRoZSBncmFwaCBsb29rcyBsaWtlIHRoaXMuCisKKyAgICAgICAgICAgICBvcF9lbnRlciAtPiAu
Li4uLi4gLT4gb3BfeWllbGQgLT4gLi4uLi4gLT4gb3BfeWllbGQgLT4gLi4uCisKKyAgICAgICAg
Um91Z2hseSBzcGVha2luZywgaW4gdGhlIGdlbmVyYXRvcmlmaWNhdGlvbiBwaGFzZSwgd2UgdHVy
biBvdXQgd2hpY2ggdmFyaWFibGVzIHNob3VsZCBiZSBzYXZlZCBhbmQgcmVzdW1lZCBhdCBlYWNo
IG9wX3lpZWxkLgorICAgICAgICBUaGlzIGlzIGRvbmUgYnkgbGl2ZW5lc3MgYW5hbHlzaXMuIEFm
dGVyIHRoYXQsIHdlIGNvbnZlcnQgb3BfeWllbGQgdG8gdGhlIHNlcXVlbmNlIG9mICJvcF9wdXRf
dG9fc2NvcGUiLCAib3BfcmV0IiwgYW5kICJvcF9nZXRfZnJvbV9zY29wZSIuCisgICAgICAgIG9w
X3B1dF90b19zY29wZSBhbmQgb3BfZ2V0X2Zyb21fc2NvcGUgc2VxdWVuY2VzIGFyZSBjb3JyZXNw
b25kaW5nIHRvIHRoZSBzYXZlIGFuZCByZXN1bWUgc2VxdWVuY2VzLiBXZSBzZXQgdXAgdGhlIHNj
b3BlIGZvciB0aGUgZ2VuZXJhdG9yIGZyYW1lIGFuZAorICAgICAgICBwZXJmb3JtIG9wX3B1dF90
b19zY29wZSBhbmQgb3BfZ2V0X2Zyb21fc2NvcGUgb250byBpdC4gVGhlIGxpdmUgcmVnaXN0ZXJz
IGFyZSBzYXZlZCBhbmQgcmVzdW1lZCBvdmVyIHRoZSBnZW5lcmF0b3IncyBuZXh0KCkgY2FsbHMg
YnkgdXNpbmcgdGhpcworICAgICAgICBzcGVjaWFsIGdlbmVyYXRvciBmcmFtZSBzY29wZS4gQW5k
IHdlIGFsc28gc2V0IHVwIHRoZSBnbG9iYWwgc3dpdGNoIGZvciB0aGUgZ2VuZXJhdG9yLgorCisg
ICAgICAgIEluIHRoZSBnZW5lcmF0b3JpZmljYXRpb24gcGhhc2UsCisKKyAgICAgICAgMS4gV2Ug
Y29uc3RydWN0IHRoZSBCeXRlY29kZUdyYXBoIGZyb20gdGhlIHVubGlua2VkIGluc3RydWN0aW9u
cy4gVGhpcyBjb25zdHJ1Y3RzIHRoZSBiYXNpYyBibG9ja3MsIGFuZCBpdCBpcyB1c2VkIGluIHRo
ZSBzdWJzZXF1ZW50IGFuYWx5c2lzLgorICAgICAgICAyLiBXZSBwZXJmb3JtIHRoZSBhbmFseXNp
cyBvbnRvIHRoZSB1bmxpbmtlZCBjb2RlLiBXZSBleHRyYWN0IHRoZSBsaXZlIHZhcmlhYmxlcyBh
dCBlYWNoIG9wX3lpZWxkLgorICAgICAgICAzLiBXZSBpbnNlcnQgdGhlIGdldF9mcm9tX3Njb3Bl
IGFuZCBwdXRfdG9fc2NvcGUgYXQgZWFjaCBvcF95aWVsZC4gV2hpY2ggcmVnaXN0ZXJzIHNob3Vs
ZCBiZSBzYXZlZCBhbmQgcmVzdW1lZCBpcyBvZmZlcmVkIGJ5ICgyKS4KKyAgICAgICAgICAgVGhl
biwgY2xpcCB0aGUgb3BfeWllbGQgdGhlbXNlbHZlcy4gQW5kIHdlIGFsc28gaW5zZXJ0IHRoZSBz
d2l0Y2hfaW1tLiBUaGUganVtcCB0YXJnZXRzIG9mIHRoaXMgc3dpdGNoIGFyZSBqdXN0IGFmdGVy
IHRoaXMgb3Bfc3dpdGNoX2ltbSBhbmQgZWFjaCBvcF95aWVsZCBwb2ludC4KKworICAgICAgICBP
bmUgaW50ZXJlc3RpbmcgcG9pbnQgaXMgdGhlIHRyeS1yYW5nZS4gV2Ugc3BsaXQgdGhlIHRyeS1y
YW5nZSBhdCB0aGUgb3BfeWllbGQgcG9pbnQgaW4gQnl0ZWNvZGVHZW5lcmF0b3IgcGhhc2UuIFRo
aXMgZHJvcHMgdGhlIGhhY2t5IHRoaW5nIHRoYXQgaXMgaW50cm9kdWNlZCBpbiBbMV0uCisgICAg
ICAgIElmIHRoZSB0cnktcmFuZ2UgY292ZXJzIHRoZSByZXN1bWUgc2VxdWVuY2VzLCB0aGUgZXhj
ZXB0aW9uJ3MgcmVnaXN0ZXIgaXMgdG91Y2hlZCBhcyBgdXNlZGAgZXZlbiBpZiB3ZSBkb24ndCBw
cm9wZXJseSByZXN1bWUgdGhlIHJlZ2lzdGVycyBpbiB0aGUgcmVzdW1lIHNlcXVlbmNlIHlldC4K
KyAgICAgICAgUHJldmlvdXNseSwgd2UgaGFuZGxlIHRoaXMgZWRnZSBjYXNlIGJ5IHRyZWF0aW5n
IG9wX3Jlc3VtZSBzcGVjaWFsbHkgaW4gdGhlIGxpdmVuZXNzIGFuYWx5c2lzWzFdLiBXZSBzcGxp
dCB0aGUgdHJ5LXJhbmdlIG5vdCB0byBjb3ZlciB0aGlzIHJlc3VtZSBzZXF1ZW5jZSB0byBhdm9p
ZCB0aGlzIHByb2JsZW0uCisKKyAgICAgICAgT0suIExldCdzIHNob3cgdGhlIGRldGFpbGVkIGV4
YW1wbGUuCisKKyAgICAgICAgICAgIDEuIEZpcnN0LCB0aGVyZSBpcyB0aGUgbm9ybWFsIGJ5dGVj
b2RlIHNlcXVlbmNlLiBIZXJlLCB8IHJlcHJlc2VudHMgdGhlIG9mZnNldHMsIGFuZCBbXSByZXBy
ZXNlbnRzIHRoZSBieXRlY29kZXMuCisKKyAgICAgICAgICAgICAgICBieXRlY29kZXMgICB8IFsg
XSB8IFsgXSB8IFsgXSB8IFsgXSB8IFsgXSB8IFsgXSB8CisgICAgICAgICAgICAgICAgdHJ5LXJh
bmdlICAgPC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPgorCisgICAgICAgICAg
ICAyLiBXaGVuIHdlIGVtaXQgdGhlIG9wX3lpZWxkIGluIHRoZSBieXRlY29kZSBnZW5lcmF0b3Is
IHdlIGNhcmVmdWxseSBzcGxpdCB0aGUgdHJ5LXJhbmdlLgorCisgICAgICAgICAgICAgICAgYnl0
ZWNvZGVzICAgfCBbIF0gfCBbIF0gfCBbb3BfeWllbGRdIHwgWyBdIHwgWyBdIHwgWyBdIHwKKyAg
ICAgICAgICAgICAgICB0cnktcmFuZ2UgICA8LS0tLS0tLS0tLS0+ICAgICAgICAgICAgPC0tLS0t
LS0tLS0tLS0tLS0tPgorCisgICAgICAgICAgICAzLiBBbmQgaW4gdGhlIGdlbmVyYXRvcmlmaWNh
dGlvbiBwaGFzZSwgd2UgaW5zZXJ0IHRoZSBzd2l0Y2gncyBqdW1wIHRhcmdldCBhbmQgc2F2ZSAm
IHJlc3VtZSBzZXF1ZW5jZXMuIEFuZCB3ZSBhbHNvIGRyb3Agb3BfeWllbGQuCisKKyAgICAgICAg
ICAgICAgICBJbnNlcnQgc2F2ZSBzZXEgYmVmb3JlIG9wX3lpZWxkLiAgICBJbnNlcnQgcmVzdW1l
IHNlcSBiZWZvcmUgdGhlIGJ5dGVjb2RlIHRoYXQgaXMganVzdCBhZnRlciBvcF95aWVsZC4KKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYgICAgICAgICAgICB2CisgICAg
ICAgICAgICAgICAgYnl0ZWNvZGVzICAgfCBbIF0gfCBbIF0gfCBbb3BfeWllbGRdIHwgWyBdIHwg
WyBdIHwgWyBdIHwKKyAgICAgICAgICAgICAgICB0cnktcmFuZ2UgICA8LS0tLS0tLS0tLS0+ICAg
ICBeICAgICAgPC0tLS0tLS0tLS0tLS0tLS0tPgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIF4gICAgIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSnVtcCB0
byBoZXJlLiAgICBEcm9wIHRoaXMgb3BfeWllbGQuCisKKyAgICAgICAgICAgIDQuIFRoZSBmaW5h
bCBsYXlvdXQgaXMgdGhlIGZvbGxvd2luZy4KKworICAgICAgICAgICAgICAgIGJ5dGVjb2RlcyAg
IHwgWyBdIHwgWyBdW3NhdmUgc2VxXVtvcF9yZXRdIHwgW3Jlc3VtZSBzZXFdIHwgWyBdIHwgWyBd
IHwgWyBdIHwKKyAgICAgICAgICAgICAgICB0cnktcmFuZ2UgICA8LS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0+ICAgICAgICAgICAgICAgPC0tLS0tLS0tLS0tLS0tLS0+CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEp1bXAgdG8gaGVyZS4KKwor
ICAgICAgICBUaGUgcmV3cml0aW5nIGRvbmUgYnkgdGhlIEJ5dGVjb2RlUmV3cml0ZXIgaXMgZXhl
Y3V0ZWQgaW4gYSBiYXRjaCBtYW5uZXIuIFNpbmNlIHRoZXNlIG1vZGlmaWNhdGlvbiBjaGFuZ2Vz
IHRoZSBiYXNpYyBibG9ja3MgYW5kIHNpemUgb2YgdW5saW5rZWQgaW5zdHJ1Y3Rpb25zLAorICAg
ICAgICBCeXRlY29kZVJld3JpdGVyIGFsc28gcGVyZm9ybXMgdGhlIG9mZnNldCBhZGp1c3RtZW50
IGZvciBVbmxpbmtlZENvZGVCbG9jay4gU28sIHRoaXMgcmV3cml0aW5nIGlzIHBlcmZvcm1lZCBv
bnRvIHRoZSBCeXRlY29kZUdyYXBoIHJhdGhlciB0aGFuIEJ5dGVjb2RlQmFzaWNCbG9jay4KKyAg
ICAgICAgVGhlIHJlYXNvbiB3aHkgd2UgdGFrZSB0aGlzIGRlc2lnbiBpcyBzaW1wbGU6IHdlIGRv
bid0IHdhbnQgdG8gbmV3bHkgY3JlYXRlIHRoZSBiYXNpYyBibG9ja3MgYW5kIG9wY29kZXMgZm9y
IHRoaXMgZWFybHkgcGhhc2UgbGlrZSBERkcuIEluc3RlYWQsIHdlIHBlcmZvcm0gdGhlCisgICAg
ICAgIG1vZGlmaWNhdGlvbiBhbmQgYWRqdXN0bWVudCB0byB0aGUgdW5saW5rZWQgaW5zdHJ1Y3Rp
b25zIGFuZCBVbmxpbmtlZENvZGVCbG9jayBpbiBhIGluLXBsYWNlIG1hbm5lci4KKworICAgICAg
ICBBZnRlciB0aGF0IHBoYXNlLCB0aGUgZGF0YSBmbG93IG9mIHRoZSBnZW5lcmF0b3Itc2F2ZWQt
YW5kLXJlc3VtZWQtcmVnaXN0ZXJzIGFyZSBleHBsaWNpdGx5IHJlcHJlc2VudGVkIGJ5IHRoZSBn
ZXRfZnJvbV9zY29wZSBhbmQgcHV0X3RvX3Njb3BlLgorICAgICAgICBBbmQgdGhlIHN3aXRjaCBp
cyBpbnNlcnRlZCB0byByZXByZXNlbnQgdGhlIGFjdHVhbCBjb250cm9sIGZsb3cgZm9yIHRoZSBn
ZW5lcmF0b3IuIEFuZCBvcF95aWVsZCBpcyByZW1vdmVkLiBTaW5jZSB3ZSB1c2UgdGhlIGV4aXN0
aW5nIGJ5dGVjb2RlcyAob3Bfc3dpdGNoX2ltbSwgb3BfcHV0X3RvX3Njb3BlCisgICAgICAgIG9w
X3JldCwgYW5kIG9wX2dldF9mcm9tX3Njb3BlKSwgREZHIGFuZCBGVEwgY2hhbmdlcyBhcmUgbm90
IG5lY2Vzc2FyeS4gVGhpcyBwYXRjaCBhbHNvIGRyb3BzIGRhdGEgc3RydWN0dXJlcyBhbmQgaW1w
bGVtZW50YXRpb25zIGZvciB0aGUgb2xkIGdlbmVyYXRvciwKKyAgICAgICAgb3BfcmVzdW1lLCBv
cF9zYXZlIGltcGxlbWVudGF0aW9ucyBhbmQgR2VuZXJhdG9yRnJhbWUuCisKKyAgICAgICAgTm90
ZSB0aGF0IHRoaXMgcGF0Y2ggZG9lcyBub3QgbGV2ZXJhZ2UgdGhlIHJlY2VudCBtdWx0aSBlbnRy
eXBvaW50cyBzdXBwb3J0IGluIEIzLiBBZnRlciB0aGlzIHBhdGNoIGlzIGludHJvZHVjZWQsIHdl
IHdpbGwgc3VibWl0IGEgbmV3IHBhdGNoIHRoYXQgbGV2ZXJhZ2VzIHRoZSBtdWx0aQorICAgICAg
ICBlbnRyeXBvaW50cyBmb3IgZ2VuZXJhdG9yJ3MgcmVzdW1lIGFuZCBzZWVzIHRoZSBwZXJmb3Jt
YW5jZSBnYWluLgorCisgICAgICAgIFRPRE86IFBlcmYgVEJBIGhlcmUuCisKKyAgICAgICAgWzFd
OiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU5MjgxCisKKyAgICAg
ICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJ1aWx0aW5zL0dlbmVyYXRvclByb3RvdHlwZS5q
czoKKyAgICAgICAgKGdsb2JhbFByaXZhdGUuZ2VuZXJhdG9yUmVzdW1lKToKKyAgICAgICAgKiBi
eXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUJh
c2ljQmxvY2s6OmNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzSW50ZXJuYWwpOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUJhc2ljQmxvY2s6OmNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzKToKKyAg
ICAgICAgKEpTQzo6aXNCcmFuY2gpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjppc1VuY29uZGl0
aW9uYWxCcmFuY2gpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjppc1Rlcm1pbmFsKTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6aXNUaHJvdyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OmxpbmtC
bG9ja3MpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2Nr
cyk6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmg6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlQmFzaWNCbG9jazo6Ynl0ZWNvZGVPZmZzZXRzKToKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVCYXNpY0Jsb2NrOjpzdWNjZXNzb3JzKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVCYXNpY0Jsb2NrOjppbmRleCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlQmFzaWNC
bG9jazo6YWRkU3VjY2Vzc29yKToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUdlbmVyYXRv
cmlmaWNhdGlvbi5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcmlm
aWNhdGlvbjo6Qnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24pOgorICAgICAgICAoSlNDOjpCeXRl
Y29kZUdlbmVyYXRvcmlmaWNhdGlvbjo6Z3JhcGgpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdl
bmVyYXRvcmlmaWNhdGlvbjo6eWllbGRzKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0
b3JpZmljYXRpb246OmVudGVyUG9pbnQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRv
cmlmaWNhdGlvbjo6c3RvcmFnZUZvckdlbmVyYXRvckxvY2FsKToKKyAgICAgICAgKEpTQzo6R2Vu
ZXJhdG9yTGl2ZW5lc3NBbmFseXNpczo6R2VuZXJhdG9yTGl2ZW5lc3NBbmFseXNpcyk6CisgICAg
ICAgIChKU0M6OkdlbmVyYXRvckxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGVEZWZzRm9yQnl0ZWNv
ZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JMaXZlbmVzc0FuYWx5c2lzOjpjb21w
dXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yTGl2ZW5l
c3NBbmFseXNpczo6cnVuKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRp
b246OnJ1bik6CisgICAgICAgIChKU0M6OnBlcmZvcm1HZW5lcmF0b3JpZmljYXRpb24pOgorICAg
ICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmg6IENvcGllZCBmcm9t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNJ
bmxpbmVzLmguCisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVHcmFwaC5oOiBBZGRlZC4KKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVHcmFwaDo6Y29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVHcmFwaDo6aW5zdHJ1Y3Rpb25zKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHcmFwaDo6
YmFzaWNCbG9ja3NJblJldmVyc2VPcmRlcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR3JhcGg6
OmJsb2NrQ29udGFpbnNCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR3Jh
cGg6OmZpbmRCYXNpY0Jsb2NrRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpCeXRl
Y29kZUdyYXBoOjpmaW5kQmFzaWNCbG9ja1dpdGhMZWFkZXJPZmZzZXQpOgorICAgICAgICAoSlND
OjpCeXRlY29kZUdyYXBoOjpzaXplKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHcmFwaDo6YXQp
OgorICAgICAgICAoSlNDOjpCeXRlY29kZUdyYXBoOjpvcGVyYXRvcltdKToKKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVHcmFwaDo6YmVnaW4pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdyYXBoOjpl
bmQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdyYXBoOjpmaXJzdCk6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlR3JhcGg6Omxhc3QpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdyYXBoPEJsb2Nr
Pjo6Qnl0ZWNvZGVHcmFwaCk6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb246
CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNwcDoKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlz
aXMpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGVEZWZz
Rm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlz
aXM6OmNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUxpdmVuZXNzQW5hbHlzaXM6OmdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQpOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGVGdWxsTGl2ZW5lc3Mp
OgorICAgICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGVLaWxscyk6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6ZHVtcFJlc3VsdHMpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGUpOgorICAgICAg
ICAoSlNDOjppc1ZhbGlkUmVnaXN0ZXJGb3JMaXZlbmVzcyk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OmdldExlYWRlck9mZnNldEZvckJhc2ljQmxvY2spOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpmaW5kQmFzaWNCbG9ja1dpdGhMZWFkZXJPZmZzZXQpOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpibG9ja0NvbnRhaW5zQnl0ZWNvZGVPZmZzZXQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpm
aW5kQmFzaWNCbG9ja0ZvckJ5dGVjb2RlT2Zmc2V0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
c3RlcE92ZXJJbnN0cnVjdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OmNvbXB1dGVMb2Nh
bExpdmVuZXNzRm9yQnl0ZWNvZGVPZmZzZXQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpjb21w
dXRlTG9jYWxMaXZlbmVzc0ZvckJsb2NrKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Qnl0ZWNv
ZGVMaXZlbmVzc0FuYWx5c2lzOjpydW5MaXZlbmVzc0ZpeHBvaW50KTogRGVsZXRlZC4KKyAgICAg
ICAgKiBieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuaDoKKyAgICAgICAgKiBieXRl
Y29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNJbmxpbmVzLmg6CisgICAgICAgIChKU0M6Omlz
VmFsaWRSZWdpc3RlckZvckxpdmVuZXNzKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVz
c1Byb3BhZ2F0aW9uPERlcml2ZWRBbmFseXNpcz46OnN0ZXBPdmVySW5zdHJ1Y3Rpb24pOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzUHJvcGFnYXRpb248RGVyaXZlZEFuYWx5c2lzPjo6
Y29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlTGl2ZW5lc3NQcm9wYWdhdGlvbjxEZXJpdmVkQW5hbHlzaXM+Ojpjb21wdXRlTG9jYWxM
aXZlbmVzc0ZvckJsb2NrKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0
aW9uPERlcml2ZWRBbmFseXNpcz46OmdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzUHJvcGFnYXRpb248RGVyaXZlZEFuYWx5c2lz
Pjo6cnVuTGl2ZW5lc3NGaXhwb2ludCk6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVSZXdy
aXRlci5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpCeXRlY29kZVJld3JpdGVyOjphcHBseU1v
ZGlmaWNhdGlvbik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlUmV3cml0ZXI6OmV4ZWN1dGUpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZVJld3JpdGVyOjphZGp1c3RKdW1wVGFyZ2V0cyk6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlUmV3cml0ZXI6Omluc2VydEltcGwpOgorICAgICAgICAqIGJ5dGVj
b2RlL0J5dGVjb2RlUmV3cml0ZXIuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkJ5dGVjb2RlUmV3
cml0ZXI6Okluc2VydGlvblBvaW50OjpJbnNlcnRpb25Qb2ludCk6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlUmV3cml0ZXI6Okluc2VydGlvblBvaW50OjpvcGVyYXRvcjwpOgorICAgICAgICAoSlND
OjpCeXRlY29kZVJld3JpdGVyOjpJbnNlcnRpb246Omxlbmd0aCk6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlUmV3cml0ZXI6OkZyYWdtZW50OjpGcmFnbWVudCk6CisgICAgICAgIChKU0M6OkJ5dGVj
b2RlUmV3cml0ZXI6OkZyYWdtZW50OjphcHBlbmRJbnN0cnVjdGlvbik6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlUmV3cml0ZXI6OkJ5dGVjb2RlUmV3cml0ZXIpOgorICAgICAgICAoSlNDOjpCeXRl
Y29kZVJld3JpdGVyOjppbnNlcnRGcmFnbWVudEJlZm9yZSk6CisgICAgICAgIChKU0M6OkJ5dGVj
b2RlUmV3cml0ZXI6Omluc2VydEZyYWdtZW50QWZ0ZXIpOgorICAgICAgICAoSlNDOjpCeXRlY29k
ZVJld3JpdGVyOjpyZW1vdmVCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlUmV3cml0
ZXI6OmdyYXBoKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVSZXdyaXRlcjo6YWRqdXN0T2Zmc2V0
KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVSZXdyaXRlcjo6YWRqdXN0T2Zmc2V0V2l0aEluc2Vy
dGlvbnMpOgorICAgICAgICAoSlNDOjpCeXRlY29kZVJld3JpdGVyOjpjYWxjdWxhdGVEaWZmZXJl
bmNlKToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZVVzZURlZi5oOgorICAgICAgICAoSlND
Ojpjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZURl
ZnNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoK
KyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpD
b2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpoYW5k
bGVyRm9ySW5kZXgpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnNocmlua1RvRml0KToKKyAg
ICAgICAgKEpTQzo6Q29kZUJsb2NrOjp2YWx1ZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldCk6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6bGl2ZW5lc3NBbmFseXNpc1Nsb3cpOgorICAgICAgICAq
IGJ5dGVjb2RlL0NvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmlzQ29uc3Rh
bnRSZWdpc3RlckluZGV4KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpsaXZlbmVzc0FuYWx5
c2lzKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpsaXZlQ2FsbGVlTG9jYWxzQXRZaWVsZCk6
IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUvSGFuZGxlckluZm8uaDoKKyAgICAgICAgKEpT
Qzo6SGFuZGxlckluZm9CYXNlOjpoYW5kbGVyRm9ySW5kZXgpOgorICAgICAgICAqIGJ5dGVjb2Rl
L09wY29kZS5oOgorICAgICAgICAoSlNDOjppc0JyYW5jaCk6CisgICAgICAgIChKU0M6OmlzVW5j
b25kaXRpb25hbEJyYW5jaCk6CisgICAgICAgIChKU0M6OmlzVGVybWluYWwpOgorICAgICAgICAo
SlNDOjppc1Rocm93KToKKyAgICAgICAgKiBieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHMuY3Bw
OgorICAgICAgICAoSlNDOjpnZXRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAg
ICAgKEpTQzo6Y29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0c0ludGVybmFsKToKKyAgICAgICAgKEpT
Qzo6Y29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyk6CisgICAgICAgIChKU0M6OnJlY29tcHV0ZVBy
ZWNpc2VKdW1wVGFyZ2V0cyk6CisgICAgICAgIChKU0M6OmZpbmRKdW1wVGFyZ2V0c0ZvckJ5dGVj
b2RlT2Zmc2V0KToKKyAgICAgICAgKiBieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHMuaDoKKyAg
ICAgICAgKiBieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHNJbmxpbmVzLmg6IEFkZGVkLgorICAg
ICAgICAoSlNDOjpleHRyYWN0U3RvcmVkSnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldCk6Cisg
ICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpV
bmxpbmtlZENvZGVCbG9jazo6aGFuZGxlckZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpT
Qzo6VW5saW5rZWRDb2RlQmxvY2s6OmhhbmRsZXJGb3JJbmRleCk6CisgICAgICAgIChKU0M6OlVu
bGlua2VkQ29kZUJsb2NrOjphcHBseU1vZGlmaWNhdGlvbik6CisgICAgICAgICogYnl0ZWNvZGUv
VW5saW5rZWRDb2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRTdHJpbmdKdW1wVGFi
bGU6Om9mZnNldEZvclZhbHVlKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6Om51
bUNhbGxlZUxvY2Fscyk6CisgICAgICAgICogYnl0ZWNvZGUvVmlydHVhbFJlZ2lzdGVyLmg6Cisg
ICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVH
ZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXRDb21wbGV4UG9wU2NvcGVzKToKKyAgICAgICAgKEpTQzo6cHJlcGFyZUp1bXBU
YWJsZUZvclN0cmluZ1N3aXRjaCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0WWllbGRQb2ludCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0U2F2
ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzdW1l
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZW5lcmF0
b3JTdGF0ZUxhYmVsKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6
OmJlZ2luR2VuZXJhdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0
b3I6OmVuZEdlbmVyYXRvcik6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0
b3JTdGF0ZVJlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVy
YXRvclZhbHVlUmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Z2Vu
ZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0
b3I6OmdlbmVyYXRvckZyYW1lUmVnaXN0ZXIpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rl
c0NvZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpGdW5jdGlvbk5vZGU6OmVtaXRCeXRlY29kZSk6
CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGludGVycHJldGVy
L0ludGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpTQzo6ZmluZEV4Y2VwdGlvbkhhbmRsZXIpOgor
ICAgICAgICAoSlNDOjpHZXRDYXRjaEhhbmRsZXJGdW5jdG9yOjpvcGVyYXRvcigpKToKKyAgICAg
ICAgKEpTQzo6VW53aW5kRnVuY3Rvcjo6b3BlcmF0b3IoKSk6CisgICAgICAgICogaW50ZXJwcmV0
ZXIvSW50ZXJwcmV0ZXIuaDoKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlcklubGlu
ZXMuaDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VK
dW1wVGFyZ2V0cy5oLgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6Z2V0T3Bjb2RlSUQpOgor
ICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxl
TWFpblBhc3MpOgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklUT3Bjb2Rl
cy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9zYXZlKTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX3Jlc3VtZSk6IERlbGV0ZWQuCisgICAgICAgICogbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlci5hc206CisgICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6Cisg
ICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUlubmVyKToKKyAgICAgICAgKEpT
Qzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlR2VuZXJhdG9yRnVuY3Rpb25Tb3VyY2VFbGVtZW50
cyk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpjcmVhdGVHZW5lcmF0b3JQYXJh
bWV0ZXJzKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmg6CisgICAgICAgICogcnVudGltZS9D
b21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpTTE9XX1BBVEhfREVDTCk6IERlbGV0
ZWQuCisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuaDoKKyAgICAgICAgKiBydW50
aW1lL0dlbmVyYXRvckZyYW1lLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9y
RnJhbWU6OkdlbmVyYXRvckZyYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9y
RnJhbWU6OmZpbmlzaENyZWF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9y
RnJhbWU6OmNyZWF0ZVN0cnVjdHVyZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkdlbmVyYXRv
ckZyYW1lOjpjcmVhdGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6
c2F2ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpyZXN1bWUpOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6dmlzaXRDaGlsZHJlbik6IERl
bGV0ZWQuCisgICAgICAgICogcnVudGltZS9HZW5lcmF0b3JGcmFtZS5oOiBSZW1vdmVkLgorICAg
ICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6bG9jYWxzKTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6R2VuZXJhdG9yRnJhbWU6OmxvY2FsQXQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpHZW5l
cmF0b3JGcmFtZTo6b2Zmc2V0T2ZMb2NhbHMpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpHZW5l
cmF0b3JGcmFtZTo6YWxsb2NhdGlvblNpemVGb3JMb2NhbHMpOiBEZWxldGVkLgorICAgICAgICAq
IHJ1bnRpbWUvSlNHZW5lcmF0b3JGdW5jdGlvbi5oOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3Bw
OgorICAgICAgICAoSlNDOjpWTTo6Vk0pOgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKwogMjAx
Ni0wOC0yNCAgQmVuamFtaW4gUG91bGFpbiAgPGJlbmphbWluQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgW0pTQ10gTWFrZSBGUm91bmQgd29yayB3aXRoIGFueSB0eXBlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGJlMDkwMzhmY2I0
OTkwY2QwYTAxMGQyZThjMGYwNzM2ODU2MDM4ZmMuLmFlZTQ3ODE4NjY1YTU0NmY1MDNkMDE1ZmQz
YjU2ZDM4YjExMmFkNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTYtMDgtMjUgIFl1c3VrZSBT
dXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0RGR11bRlRMXSBJbXBs
ZW1lbnQgRVM2IEdlbmVyYXRvcnMgaW4gREZHIC8gRlRMCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTI3MjMKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9GYXN0Qml0VmVjdG9yLmg6CisgICAgICAg
IChXVEY6OkZhc3RCaXRWZWN0b3I6OkZhc3RCaXRWZWN0b3IpOgorCiAyMDE2LTA4LTI0ICBZdXN1
a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgogCiAgICAgICAgIFtKU0NdIE1vdmUg
Z2VuZXJpYyBkYXRhIHN0cnVjdHVyZXMgb3V0IG9mIEIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VM
aXN0cy50eHQKaW5kZXggM2VkNTRiODE3MjY4MThhMDg4NGNkYzMyNWNmMTdkZDI1YjJlYmU2MS4u
M2JlZjQyY2Y4MmFkMGU3N2Q4NTY0MDFjOTM3MGRlMDEzMDg1MjM5MCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTgxLDYgKzE4MSw4IEBAIHNldChKYXZhU2NyaXB0Q29y
ZV9TT1VSQ0VTCiAgICAgYnl0ZWNvZGUvQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAKICAgICBi
eXRlY29kZS9BcnJheVByb2ZpbGUuY3BwCiAgICAgYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2Nr
LmNwcAorICAgIGJ5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcAorICAgIGJ5
dGVjb2RlL0J5dGVjb2RlUmV3cml0ZXIuY3BwCiAgICAgYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5z
aWNSZWdpc3RyeS5jcHAKICAgICBieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3Bw
CiAgICAgYnl0ZWNvZGUvQ2FsbEVkZ2UuY3BwCkBAIC02NjEsNyArNjYzLDYgQEAgc2V0KEphdmFT
Y3JpcHRDb3JlX1NPVVJDRVMKICAgICBydW50aW1lL0Z1bmN0aW9uSGFzRXhlY3V0ZWRDYWNoZS5j
cHAKICAgICBydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcAogICAgIHJ1bnRpbWUvRnVuY3Rp
b25SYXJlRGF0YS5jcHAKLSAgICBydW50aW1lL0dlbmVyYXRvckZyYW1lLmNwcAogICAgIHJ1bnRp
bWUvR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKICAgICBydW50aW1lL0dlbmVyYXRv
ckZ1bmN0aW9uUHJvdG90eXBlLmNwcAogICAgIHJ1bnRpbWUvR2VuZXJhdG9yUHJvdG90eXBlLmNw
cApAQCAtOTc5LDYgKzk4MCwxMCBAQCBhZGRfY3VzdG9tX2NvbW1hbmQoCiAgICAgQ09NTUFORCAk
e1BZVEhPTl9FWEVDVVRBQkxFfSAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vZ2VuZXJhdGUtYnl0ZWNv
ZGUtZmlsZXMgLS1ieXRlY29kZXNfaCAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9E
SVJ9L0J5dGVjb2Rlcy5oIC0taW5pdF9ieXRlY29kZXNfYXNtICR7REVSSVZFRF9TT1VSQ0VTX0pB
VkFTQ1JJUFRDT1JFX0RJUn0vSW5pdEJ5dGVjb2Rlcy5hc20gJHtKQVZBU0NSSVBUQ09SRV9ESVJ9
L2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCiAgICAgVkVSQkFUSU0pCiAKK2xpc3QoQVBQRU5E
IEphdmFTY3JpcHRDb3JlX0hFQURFUlMKKyAgICAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBU
Q09SRV9ESVJ9L0J5dGVjb2Rlcy5oCispCisKIGFkZF9jdXN0b21fY29tbWFuZCgKICAgICBPVVRQ
VVQgJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9MTEludERlc2lyZWRPZmZz
ZXRzLmgKICAgICBNQUlOX0RFUEVOREVOQ1kgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L29mZmxpbmVh
c20vZ2VuZXJhdGVfb2Zmc2V0X2V4dHJhY3Rvci5yYgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCBhMWQ5ODNkOGYwMDdlOTBjMzYyYjU5OTVkNDYwZTI5MDNiMjI1M2Q2Li5mMzZlNWE3
MGNkYzJmYTBjN2JjMGY5NTc5MGU4N2I0NGYyMzIxNWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtMTE5OCw3ICsxMTk4LDcgQEAKIAkJNTNGNDBFOEQxRDU5MDFGMjAwOTlBMUI2
IC8qIFdBU01QYXJzZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUzRjQwRThDMUQ1OTAxRjIwMDk5QTFCNiAvKiBXQVNNUGFyc2VyLmggKi87IH07CiAJ
CTUzRjQwRThGMUQ1OTAyODIwMDk5QTFCNiAvKiBXQVNNQjNJUkdlbmVyYXRvci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1M0Y0MEU4RTFENTkwMjgy
MDA5OUExQjYgLyogV0FTTUIzSVJHZW5lcmF0b3IuY3BwICovOyB9OwogCQk1M0Y0MEU5MTFENTkw
MzAyMDA5OUExQjYgLyogV0FTTU9wcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTNGNDBFOTAxRDU5MDMwMjAwOTlBMUI2IC8qIFdBU01PcHMuaCAqLzsg
fTsKLSAgICAgICAgICAgICAgICA1M0Y0MEU5MzFENUE0QUIzMDA5OUExQjYgLyogV0FTTUIzSVJH
ZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUzRjQwRTkyMUQ1QTRBQjMwMDk5QTFCNiAvKiBXQVNNQjNJUkdlbmVyYXRvci5oICovOyB9Owor
CQk1M0Y0MEU5MzFENUE0QUIzMDA5OUExQjYgLyogV0FTTUIzSVJHZW5lcmF0b3IuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzRjQwRTkyMUQ1QTRBQjMw
MDk5QTFCNiAvKiBXQVNNQjNJUkdlbmVyYXRvci5oICovOyB9OwogCQk1M0Y0MEU5NTFENUE3QUVG
MDA5OUExQjYgLyogV0FTTU1vZHVsZVBhcnNlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTNGNDBFOTQxRDVBN0FFRjAwOTlBMUI2IC8qIFdBU01Nb2R1
bGVQYXJzZXIuaCAqLzsgfTsKIAkJNTNGNDBFOTcxRDVBN0JFQzAwOTlBMUI2IC8qIFdBU01Nb2R1
bGVQYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTNGNDBFOTYxRDVBN0JFQzAwOTlBMUI2IC8qIFdBU01Nb2R1bGVQYXJzZXIuY3BwICovOyB9
OwogCQk1M0Y2QkY2RDFDM0YwNjBBMDBGNDFFNUQgLyogSW50ZXJuYWxGdW5jdGlvbkFsbG9jYXRp
b25Qcm9maWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1M0Y2QkY2QzFDM0YwNjBBMDBGNDFFNUQgLyogSW50ZXJuYWxGdW5jdGlvbkFsbG9jYXRpb25Q
cm9maWxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
QEAgLTEyNzAsOCArMTI3MCw2IEBACiAJCTcwOUZCODZDMUFFMzM1QzYwMDM5RDA2OSAvKiBXZWFr
U2V0UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3MDlGQjg2NjFBRTMzNUM2MDAzOUQwNjkgLyogV2Vha1NldFByb3RvdHlwZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcwQjBBOUQxMUE5
QjY2NDYwMDAxMzA2QSAvKiBSdW50aW1lRmxhZ3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwQjBBOUQwMUE5QjY2MjAwMDAxMzA2QSAvKiBSdW50aW1l
RmxhZ3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk3MEI3OTE5MTFDMDI0QTEzMDAyNDgxRTIgLyogU291cmNlQ29kZUtleS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBCNzkxOEUxQzAyNDRDOTAwMjQ4
MUUyIC8qIFNvdXJjZUNvZGVLZXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwotCQk3MEI3OTE5MjFDMDI0QTIzMDAyNDgxRTIgLyogR2VuZXJhdG9yRnJh
bWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBC
NzkxODMxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZyYW1lLmNwcCAqLzsgfTsKLQkJNzBC
NzkxOTMxQzAyNEEyODAwMjQ4MUUyIC8qIEdlbmVyYXRvckZyYW1lLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEI3OTE4NDFDMDI0NDMyMDAyNDgxRTIg
LyogR2VuZXJhdG9yRnJhbWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk3MEI3OTE5NDFDMDI0QTI4MDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rp
b25Db25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3MEI3OTE4NTFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Db25z
dHJ1Y3Rvci5jcHAgKi87IH07CiAJCTcwQjc5MTk1MUMwMjRBMjgwMDI0ODFFMiAvKiBHZW5lcmF0
b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3MEI3OTE4NjFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rp
b25Db25zdHJ1Y3Rvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTcwQjc5MTk2MUMwMjRBMjgwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvblBy
b3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3MEI3OTE4NzFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUu
Y3BwICovOyB9OwpAQCAtMjA0NSw2ICsyMDQzLDExIEBACiAJCUUxOEUzQTU5MERGOTI3OEMwMEQ5
MEIzNCAvKiBWTS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFMThFM0E1NzBERjkyNzhDMDBEOTBCMzQgLyogVk0uY3BwICovOyB9OwogCQlFMzE4Q0JD
MDFCOEFFRjUxMDBBMjkyOUQgLyogSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMxOENCQkUxQjhBRUY1MTAw
QTI5MjlEIC8qIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmNwcCAqLzsgfTsKIAkJRTMxOENCQzEx
QjhBRUY1MTAwQTI5MjlEIC8qIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzE4Q0JCRjFCOEFFRjUxMDBBMjky
OUQgLyogSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFMzI4REFFNzFEMzhEMDA0MDAxQTI1MjkgLyogQnl0
ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTNEMjY0MjYxRDM4QzA0MjAwMEJFMTc0IC8qIEJ5dGVjb2RlR2Vu
ZXJhdG9yaWZpY2F0aW9uLmNwcCAqLzsgfTsKKwkJRTMyOERBRTgxRDM4RDAwNTAwMUEyNTI5IC8q
IEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFM0QyNjQyNzFEMzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNvZGVH
ZW5lcmF0b3JpZmljYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQlFMzI4REFFOTFEMzhEMDA1MDAxQTI1MjkgLyogQnl0ZWNvZGVHcmFwaC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNEMjY0Mjgx
RDM4QzA0MjAwMEJFMTc0IC8qIEJ5dGVjb2RlR3JhcGguaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFMzI4REFFQTFEMzhEMDA1MDAxQTI1MjkgLyog
Qnl0ZWNvZGVSZXdyaXRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFM0QyNjQyOTFEMzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNvZGVSZXdyaXRlci5j
cHAgKi87IH07CisJCUUzMjhEQUVCMUQzOEQwMDUwMDFBMjUyOSAvKiBCeXRlY29kZVJld3JpdGVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0QyNjQy
QTFEMzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNvZGVSZXdyaXRlci5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzMzYzN0E1MUI2MzIyMDIwMEVFMDg0
MCAvKiBSZWZsZWN0T2JqZWN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEUzMzYzN0EzMUI2MzIyMDIwMEVFMDg0MCAvKiBSZWZsZWN0T2JqZWN0LmNw
cCAqLzsgfTsKIAkJRTMzNjM3QTYxQjYzMjIwMjAwRUUwODQwIC8qIFJlZmxlY3RPYmplY3QuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMzYzN0E0MUI2
MzIyMDIwMEVFMDg0MCAvKiBSZWZsZWN0T2JqZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTMzQjNFMjYxQjdBQkQ3NTAwNDhEQjJFIC8qIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5sdXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzM0IzRTI1MUI3QUJENzUwMDQ4REIyRSAvKiBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QubHV0LmggKi87IH07CkBAIC0yMDY5LDggKzIwNzIs
MTAgQEAKIAkJRTM3OTRFNzUxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNzk0RTczMUI3
N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFseXplci5jcHAgKi87IH07CiAJCUUzNzk0RTc2MUI3
N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFseXplci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM3OTRFNzQxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVs
ZUFuYWx5emVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJRTM5NjNDRUUxQjczRjc1MDAwRUI0Q0U1IC8qIE5vZGVzQW5hbHl6ZU1vZHVsZS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzk2M0NFQzFC
NzNGNzUwMDBFQjRDRTUgLyogTm9kZXNBbmFseXplTW9kdWxlLmNwcCAqLzsgfTsKKwkJRTM5RDQ1
RjUxRDM5MDA1NjAwQjNCMzc3IC8qIEludGVycHJldGVySW5saW5lcy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5RDlEODQxRDM5MDAwNjAwNjY3Mjgy
IC8qIEludGVycHJldGVySW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUUzOURBNEE2MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJl
Y29yZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
MzlEQTRBNDFCN0U4QjdDMDA4NEYzM0EgLyogSlNNb2R1bGVSZWNvcmQuY3BwICovOyB9OwogCQlF
MzlEQTRBNzFCN0U4QjdDMDA4NEYzM0EgLyogSlNNb2R1bGVSZWNvcmQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOURBNEE1MUI3RThCN0MwMDg0RjMz
QSAvKiBKU01vZHVsZVJlY29yZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCUUzQTQyMTQzMUQ2RjU4OTMwMDA3QzYxNyAvKiBQcmVjaXNlSnVtcFRh
cmdldHNJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFM0E0MjE0MjFENkY1ODhGMDAwN0M2MTcgLyogUHJlY2lzZUp1bXBUYXJnZXRzSW5saW5l
cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUz
RDIzOUM4MUI4MjlDMUMwMEJCRUY2NyAvKiBKU01vZHVsZUVudmlyb25tZW50LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzRDIzOUM2MUI4MjlDMUMw
MEJCRUY2NyAvKiBKU01vZHVsZUVudmlyb25tZW50LmNwcCAqLzsgfTsKIAkJRTNEMjM5QzkxQjgy
OUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxlRW52aXJvbm1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzRDIzOUM3MUI4MjlDMUMwMEJCRUY2NyAvKiBK
U01vZHVsZUVudmlyb25tZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJRTNFRjg4NzQxQjY2REYyMzAwM0YyNkNCIC8qIEpTUHJvcGVydHlOYW1l
SXRlcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTNFRjg4NzIxQjY2REYyMzAwM0YyNkNCIC8qIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3Bw
ICovOyB9OwpAQCAtMzM4Niw3ICszMzkxLDcgQEAKIAkJNTNGNDBFOEMxRDU5MDFGMjAwOTlBMUI2
IC8qIFdBU01QYXJzZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0FTTVBh
cnNlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1M0Y0MEU4RTFENTkwMjgyMDA5
OUExQjYgLyogV0FTTUIzSVJHZW5lcmF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gV0FTTUIzSVJHZW5lcmF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1M0Y0MEU5MDFENTkwMzAyMDA5OUExQjYgLyogV0FTTU9wcy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXQVNNT3BzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0gICAgICAgICAgICAgICAgNTNGNDBFOTIxRDVBNEFCMzAwOTlBMUI2IC8qIFdBU01CM0lS
R2VuZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdBU01CM0lSR2Vu
ZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUzRjQwRTkyMUQ1QTRBQjMw
MDk5QTFCNiAvKiBXQVNNQjNJUkdlbmVyYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXQVNNQjNJUkdlbmVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1M0Y0MEU5NDFENUE3QUVGMDA5OUExQjYgLyogV0FTTU1vZHVsZVBhcnNlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXQVNNTW9kdWxlUGFyc2VyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTUzRjQwRTk2MUQ1QTdCRUMwMDk5QTFCNiAvKiBXQVNNTW9kdWxl
UGFyc2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdBU01Nb2R1
bGVQYXJzZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1M0Y2QkY2QzFDM0Yw
NjBBMDBGNDFFNUQgLyogSW50ZXJuYWxGdW5jdGlvbkFsbG9jYXRpb25Qcm9maWxlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludGVybmFsRnVuY3Rpb25BbGxvY2F0aW9uUHJv
ZmlsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzQ5Miw4ICszNDk3LDYgQEAK
IAkJNzA5RkI4NjUxQUUzMzVDNjAwMzlEMDY5IC8qIFdlYWtTZXRQcm90b3R5cGUuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2Vha1NldFByb3RvdHlwZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcwOUZCODY2MUFFMzM1QzYwMDM5RDA2OSAvKiBX
ZWFrU2V0UHJvdG90eXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYWtT
ZXRQcm90b3R5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzBCMEE5RDAxQTlC
NjYyMDAwMDEzMDZBIC8qIFJ1bnRpbWVGbGFncy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBSdW50aW1lRmxhZ3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNzBC
NzkxODMxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZyYW1lLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdlbmVyYXRvckZyYW1lLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJNzBCNzkxODQxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZy
YW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdlbmVyYXRvckZyYW1lLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcwQjc5MTg1MUMwMjQ0MzIwMDI0ODFFMiAv
KiBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3MEI3OTE4NjFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJh
dG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTcwQjc5MTg3MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvblByb3Rv
dHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHZW5lcmF0b3JG
dW5jdGlvblByb3RvdHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00MzMz
LDEwICs0MzM2LDE3IEBACiAJCUUzNzk0RTczMUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFs
eXplci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNb2R1bGVBbmFs
eXplci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNzk0RTc0MUI3N0VCOTcw
MDU1NDNBRSAvKiBNb2R1bGVBbmFseXplci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBNb2R1bGVBbmFseXplci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzk2
M0NFQzFCNzNGNzUwMDBFQjRDRTUgLyogTm9kZXNBbmFseXplTW9kdWxlLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5vZGVzQW5hbHl6ZU1vZHVsZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzOUQ5RDg0MUQzOTAwMDYwMDY2NzI4MiAvKiBJbnRl
cnByZXRlcklubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW50ZXJw
cmV0ZXJJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOURBNEE0MUI3
RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29yZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBKU01vZHVsZVJlY29yZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUUzOURBNEE1MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29yZC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU01vZHVsZVJlY29yZC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlFM0E0MjE0MjFENkY1ODhGMDAwN0M2MTcgLyogUHJlY2lz
ZUp1bXBUYXJnZXRzSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQ
cmVjaXNlSnVtcFRhcmdldHNJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUUzRDIzOUM2MUI4MjlDMUMwMEJCRUY2NyAvKiBKU01vZHVsZUVudmlyb25tZW50LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTW9kdWxlRW52aXJvbm1lbnQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0QyMzlDNzFCODI5QzFDMDBCQkVGNjcg
LyogSlNNb2R1bGVFbnZpcm9ubWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBKU01vZHVsZUVudmlyb25tZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUz
RDI2NDI2MUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCeXRlY29kZUdlbmVyYXRvcmlm
aWNhdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzRDI2NDI3MUQzOEMw
NDIwMDBCRTE3NCAvKiBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlFM0QyNjQyODFEMzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNv
ZGVHcmFwaC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCeXRlY29kZUdyYXBo
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzRDI2NDI5MUQzOEMwNDIwMDBCRTE3
NCAvKiBCeXRlY29kZVJld3JpdGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEJ5dGVjb2RlUmV3cml0ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlFM0QyNjQyQTFEMzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNvZGVSZXdyaXRlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCeXRlY29kZVJld3JpdGVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUUzRUY4ODcyMUI2NkRGMjMwMDNGMjZDQiAvKiBKU1Byb3BlcnR5
TmFtZUl0ZXJhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpT
UHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlF
M0VGODg3MzFCNjZERjIzMDAzRjI2Q0IgLyogSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0OURDMTQ5MTJFRjI2MUEwMDE4NEExRiAvKiBT
b3VyY2VQcm92aWRlckNhY2hlSXRlbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTb3VyY2VQcm92aWRlckNhY2hlSXRlbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtNTA2Myw2ICs1MDczLDcgQEAKIAkJMTQyOUQ3N0EwRUQyMEQ3MzAwQjg5NjE5IC8qIGludGVy
cHJldGVyICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlF
MzlEOUQ4NDFEMzkwMDA2MDA2NjcyODIgLyogSW50ZXJwcmV0ZXJJbmxpbmVzLmggKi8sCiAJCQkJ
MEY1NUYwRjExNEQxMDYzNjAwQUM3NjQ5IC8qIEFic3RyYWN0UEMuY3BwICovLAogCQkJCTBGNTVG
MEYyMTREMTA2MzYwMEFDNzY0OSAvKiBBYnN0cmFjdFBDLmggKi8sCiAJCQkJMTQyOUQ4NUIwRUQy
MThFOTAwQjg5NjE5IC8qIENMb29wU3RhY2suY3BwICovLApAQCAtNTU1OCw3ICs1NTY5LDcgQEAK
IAkJCQk1M0Y0MEU5MDFENTkwMzAyMDA5OUExQjYgLyogV0FTTU9wcy5oICovLAogCQkJCTdCQzU0
N0QyMUI2OTU5OUIwMDk1OUI1OCAvKiBXQVNNRm9ybWF0LmggKi8sCiAJCQkJNTNGNDBFOEUxRDU5
MDI4MjAwOTlBMUI2IC8qIFdBU01CM0lSR2VuZXJhdG9yLmNwcCAqLywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgNTNGNDBFOTIxRDVBNEFCMzAwOTlBMUI2IC8qIFdBU01CM0lSR2Vu
ZXJhdG9yLmggKi8sCisJCQkJNTNGNDBFOTIxRDVBNEFCMzAwOTlBMUI2IC8qIFdBU01CM0lSR2Vu
ZXJhdG9yLmggKi8sCiAJCQkJNTNGNDBFOEExRDU5MDFCQjAwOTlBMUI2IC8qIFdBU01GdW5jdGlv
blBhcnNlci5oICovLAogCQkJCTUzRjQwRTk2MUQ1QTdCRUMwMDk5QTFCNiAvKiBXQVNNTW9kdWxl
UGFyc2VyLmNwcCAqLywKIAkJCQk1M0Y0MEU5NDFENUE3QUVGMDA5OUExQjYgLyogV0FTTU1vZHVs
ZVBhcnNlci5oICovLApAQCAtNTc0Myw4ICs1NzU0LDYgQEAKIAkJCQlGNjkyQTg1RDAyNTU1OTdE
MDFGRjYwRjcgLyogRnVuY3Rpb25Qcm90b3R5cGUuaCAqLywKIAkJCQk2MkQyRDM4RDFBREYxMDNG
MDAwMjA2QzEgLyogRnVuY3Rpb25SYXJlRGF0YS5jcHAgKi8sCiAJCQkJNjJEMkQzOEUxQURGMTAz
RjAwMDIwNkMxIC8qIEZ1bmN0aW9uUmFyZURhdGEuaCAqLywKLQkJCQk3MEI3OTE4MzFDMDI0NDMy
MDAyNDgxRTIgLyogR2VuZXJhdG9yRnJhbWUuY3BwICovLAotCQkJCTcwQjc5MTg0MUMwMjQ0MzIw
MDI0ODFFMiAvKiBHZW5lcmF0b3JGcmFtZS5oICovLAogCQkJCTcwQjc5MTg1MUMwMjQ0MzIwMDI0
ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCAqLywKIAkJCQk3MEI3OTE4
NjFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5oICovLAog
CQkJCTcwQjc5MTg3MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlw
ZS5jcHAgKi8sCkBAIC02NjMwLDYgKzY2MzksMTIgQEAKIAkJOTY5QTA3OEYwRUQxRDNBRTAwRjFG
NjgxIC8qIGJ5dGVjb2RlICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9
ICgKKwkJCQlFM0E0MjE0MjFENkY1ODhGMDAwN0M2MTcgLyogUHJlY2lzZUp1bXBUYXJnZXRzSW5s
aW5lcy5oICovLAorCQkJCUUzRDI2NDI2MUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRlY29kZUdlbmVy
YXRvcmlmaWNhdGlvbi5jcHAgKi8sCisJCQkJRTNEMjY0MjcxRDM4QzA0MjAwMEJFMTc0IC8qIEJ5
dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmggKi8sCisJCQkJRTNEMjY0MjgxRDM4QzA0MjAwMEJF
MTc0IC8qIEJ5dGVjb2RlR3JhcGguaCAqLywKKwkJCQlFM0QyNjQyOTFEMzhDMDQyMDAwQkUxNzQg
LyogQnl0ZWNvZGVSZXdyaXRlci5jcHAgKi8sCisJCQkJRTNEMjY0MkExRDM4QzA0MjAwMEJFMTc0
IC8qIEJ5dGVjb2RlUmV3cml0ZXIuaCAqLywKIAkJCQk1MzcwQjRGMzFCRjI1RUEyMDA1QzQwRkMg
LyogQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50QmFzZS5jcHAgKi8sCiAJ
CQkJNTM3MEI0RjQxQkYyNUVBMjAwNUM0MEZDIC8qIEFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZh
bHVlV2F0Y2hwb2ludEJhc2UuaCAqLywKIAkJCQkwRjgzMzVCNDE2MzlDMUUzMDAxNDQzQjUgLyog
QXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAgKi8sCkBAIC03MTg0LDYgKzcxOTksNyBAQAogCQkJ
CTBGRUM4NTJEMUJEQUNEQUMwMDgwRkY3NCAvKiBCM1Byb2NlZHVyZUlubGluZXMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGRUM4NUJEMUJFMTQ2MkYwMDgwRkY3NCAvKiBCM1JlZHVjZVN0cmVuZ3Ro
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVDODUzMTFCREFDREFDMDA4MEZGNzQgLyogQjNTdGFj
a21hcFNwZWNpYWwuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzMjhEQUU4MUQzOEQwMDUwMDFBMjUy
OSAvKiBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZF
Qzg1MzUxQkRBQ0RBQzAwODBGRjc0IC8qIEIzU2xvdEJhc2VWYWx1ZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEZFQzg1MzYxQkRBQ0RBQzAwODBGRjc0IC8qIEIzU3VjY2Vzc29yQ29sbGVjdGlvbi5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQzg1MzgxQkRBQ0RBQzAwODBGRjc0IC8qIEIzU3dpdGNo
Q2FzZS5oIGluIEhlYWRlcnMgKi8sCkBAIC03MjE0LDYgKzcyMzAsNyBAQAogCQkJCTk5REEwMEE5
MUJENTk5MzEwMEY0NTc1QyAvKiBidWlsdGluc19nZW5lcmF0ZV9zZXBhcmF0ZV9oZWFkZXIucHkg
aW4gSGVhZGVycyAqLywKIAkJCQkwRjMzOEUxMTFCRjAyNzZDMDAxM0M4OEYgLyogQjNPcGFxdWVC
eXByb2R1Y3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFQTBDNDAzMUNERDdEMUQwMDQ4MTk5MSAv
KiBGdW5jdGlvbldoaXRlbGlzdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTNBNDIxNDMxRDZGNTg5
MzAwMDdDNjE3IC8qIFByZWNpc2VKdW1wVGFyZ2V0c0lubGluZXMuaCBpbiBIZWFkZXJzICovLAog
CQkJCTk5REEwMEFBMUJENTk5MzEwMEY0NTc1QyAvKiBidWlsdGluc19nZW5lcmF0ZV9zZXBhcmF0
ZV9pbXBsZW1lbnRhdGlvbi5weSBpbiBIZWFkZXJzICovLAogCQkJCTk5REEwMEEzMUJENTk5MzEw
MEY0NTc1QyAvKiBidWlsdGluc19nZW5lcmF0b3IucHkgaW4gSGVhZGVycyAqLywKIAkJCQk0MTI5
NTI3ODFEMkNGNkJDMDBFNzhCODkgLyogYnVpbHRpbnNfZ2VuZXJhdGVfaW50ZXJuYWxzX3dyYXBw
ZXJfaW1wbGVtZW50YXRpb24ucHkgaW4gSGVhZGVycyAqLywKQEAgLTc0NDksNyArNzQ2Niw2IEBA
CiAJCQkJQTczNzgxMEUxNzk5RUEyRTAwODE3NTMzIC8qIERGR05hdHVyYWxMb29wcy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJODZFQ0EzRUExMzJERUYxQzAwMkIyQUQ3IC8qIERGR05vZGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGRkI5MjFCMTZEMDJGMDEwMDU1QTVEQiAvKiBERkdOb2RlQWxsb2Nh
dG9yLmggaW4gSGVhZGVycyAqLywKLQkJCQk3MEI3OTE5MzFDMDI0QTI4MDAyNDgxRTIgLyogR2Vu
ZXJhdG9yRnJhbWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQTU4MUJCMTUwRTk1MzAwMEI5QTJE
OSAvKiBERkdOb2RlRmxhZ3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMzAwQjc4MThBQjA1MTEw
MEE2RDcyRSAvKiBERkdOb2RlT3JpZ2luLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkE1ODFCQzE1
MEU5NTMwMDBCOUEyRDkgLyogREZHTm9kZVR5cGUuaCBpbiBIZWFkZXJzICovLApAQCAtNzQ2NCw2
ICs3NDgwLDcgQEAKIAkJCQkwRkQ4QTMyNjE3RDUxRjU3MDBDQTJDNDAgLyogREZHT1NSRW50cnlw
b2ludENyZWF0aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQzA5NzZBMTQ2OEE2Rjcw
MENGMjQ0MiAvKiBERkdPU1JFeGl0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjIzNUJFQzE3MTc4
RTczMDA2OTBDN0YgLyogREZHT1NSRXhpdEJhc2UuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzOUQ0
NUY1MUQzOTAwNTYwMEIzQjM3NyAvKiBJbnRlcnByZXRlcklubGluZXMuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGRkI5MjFDMTZEMDJGMTEwMDU1QTVEQiAvKiBERkdPU1JFeGl0Q29tcGlsYXRpb25J
bmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkMwOTc3MTE0NjkzQUY1MDBDRjI0NDIgLyogREZH
T1NSRXhpdENvbXBpbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjcwMjVBQTE3MTRCMEZDMDAz
ODJDMEUgLyogREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTc3
MjYsNiArNzc0Myw3IEBACiAJCQkJRTMzQjNFMjYxQjdBQkQ3NTAwNDhEQjJFIC8qIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbk9iamVjdC5sdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1MzI0MzhD
MTg1NjgzMzUwMDJFRDY5MiAvKiBJbnNwZWN0b3JQcm90b2NvbE9iamVjdHMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUE1NUQ5M0FDMTg1MTRGNzkwMDQwMERFRCAvKiBJbnNwZWN0b3JQcm90b2NvbFR5
cGVzLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzI4REFFQjFEMzhEMDA1MDAxQTI1MjkgLyogQnl0
ZWNvZGVSZXdyaXRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTUwRTRCNjIxODgwOURENTAwNjhB
NDZEIC8qIEluc3BlY3RvclJ1bnRpbWVBZ2VudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU5M0NG
ODMxODQwMzc3MTAwQkZDRTI3IC8qIEluc3BlY3RvclZhbHVlcy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJOTY5QTA3OTkwRUQxRDNBRTAwRjFGNjgxIC8qIEluc3RydWN0aW9uLmggaW4gSGVhZGVycyAq
LywKQEAgLTc4NTcsNiArNzg3NSw3IEBACiAJCQkJRTMzRjUwODExQjg0MjlBNDAwNDEzODU2IC8q
IEpTSW50ZXJuYWxQcm9taXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjYxODMyQTFDNDVCRjA3
MDA3MjQ1MEIgLyogQWlyQ0NhbGxpbmdDb252ZW50aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlF
MzNGNTA3OTFCODQyMjU3MDA0MTM4NTYgLyogSlNJbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvci5o
IGluIEhlYWRlcnMgKi8sCisJCQkJRTMyOERBRTkxRDM4RDAwNTAwMUEyNTI5IC8qIEJ5dGVjb2Rl
R3JhcGguaCBpbiBIZWFkZXJzICovLAogCQkJCUUzM0Y1MDg3MUI4NDQ5RUYwMDQxMzg1NiAvKiBK
U0ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yLmx1dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTMz
RjUwODUxQjg0MzdBMDAwNDEzODU2IC8qIEpTSW50ZXJuYWxQcm9taXNlRGVmZXJyZWQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUUzM0Y1MDc1MUI4NDIxQzAwMDQxMzg1NiAvKiBKU0ludGVybmFsUHJv
bWlzZVByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCkBAIC03OTQ1LDcgKzc5NjQsNyBAQAogCQkJ
CTBGQjU0Njc3MTRGNTlCNUMwMDJDMjk4OSAvKiBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJOTlEQTAwQjAxQkQ1OTk0RTAwRjQ1NzVDIC8qIGxhenl3cml0ZXIu
cHkgaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQzMTBFMTZGNUNEMDBCMzQ0NjAgLyogTGV4ZXIu
aCBpbiBIZWFkZXJzICovLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1M0Y0MEU5
MzFENUE0QUIzMDA5OUExQjYgLyogV0FTTUIzSVJHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovLAor
CQkJCTUzRjQwRTkzMUQ1QTRBQjMwMDk5QTFCNiAvKiBXQVNNQjNJUkdlbmVyYXRvci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQkMxOEM1MkUwRTE2RkNFMTAwQjM0NDYwIC8qIExleGVyLmx1dC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRENGM0Q1NkIxQ0QyOTQ3MjAwM0Q1QzY1IC8qIExhenlDbGFzc1N0
cnVjdHVyZUlubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFMTg3QTAyMUJGQkU1NjEwMDM4
QkJDQSAvKiBKSVRNdWxHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovLApAQCAtODgyMyw2ICs4ODQy
LDcgQEAKIAkJCQkxNDdGMzlCRDEwN0VDMzc2MDA0MjdBNDggLyogQXJnTGlzdC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkwRjc0M0JBQTE2Qjg4MjQ5MDA5RjkyNzcgLyogQVJNNjREaXNhc3NlbWJs
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODZEM0IyQzMxMDE1NkJERTAwMjg2NUU3IC8qIEFS
TUFzc2VtYmxlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFMzI4REFFNzFEMzhEMDA0MDAxQTI1
MjkgLyogQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NjVDMDI4NTAxNzE3OTVFMjAwMzUxRTM1IC8qIEFSTXY3RGlzYXNzZW1ibGVyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTY1QzAyODVDMTcxNzk2NjgwMDM1MUUzNSAvKiBBUk12N0RPcGNvZGUuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMEY4MzM1QjcxNjM5QzFFNjAwMTQ0M0I1IC8qIEFycmF5QWxs
b2NhdGlvblByb2ZpbGUuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC05MTU4LDYgKzkxNzgsNyBAQAog
CQkJCTBGMjVGMUIxMTgxNjM1RjMwMDUyMkYzOSAvKiBGVExTbG93UGF0aENhbGwuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEYzMzhERjExQkU5M0FEMTAwMTNDODhGIC8qIEIzU3RhY2ttYXBWYWx1
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjI1RjFCMzE4MTYzNUYzMDA1MjJGMzkgLyogRlRM
U2xvd1BhdGhDYWxsS2V5LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUUzMjhEQUVBMUQzOEQwMDUw
MDFBMjUyOSAvKiBCeXRlY29kZVJld3JpdGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQzMTlE
QTAzMUMxQkU0MEEwMDFEMjYwQiAvKiBCM0xvd2VyTWFjcm9zQWZ0ZXJPcHRpbWl6YXRpb25zLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTBGRUEwQTE2MTcwNkJCOTAwMEJCNzIyQyAvKiBGVExTdGF0
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjIzNUJFMTE3MTc4RTFDMDA2OTBDN0YgLyogRlRM
VGh1bmtzLmNwcCBpbiBTb3VyY2VzICovLApAQCAtOTU2NSw3ICs5NTg2LDYgQEAKIAkJCQk3OUVF
MEJGRjFCNEFGQjg1MDAwMzg1QzkgLyogVmFyaWFibGVFbnZpcm9ubWVudC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkwRjZDNzM1MDFBQzlGOTlGMDBCRTE2ODIgLyogVmFyaWFibGVXcml0ZUZpcmVE
ZXRhaWwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFMDUwMkMxQUE5MDk1NjAwRDMzQjMzIC8q
IFZhck9mZnNldC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk3MEI3OTE5MjFDMDI0QTIzMDAyNDgx
RTIgLyogR2VuZXJhdG9yRnJhbWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyMEMyNTkxQTgw
MTNBQjAwREEzMjI5IC8qIFZpcnR1YWxSZWdpc3Rlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlF
MThFM0E1OTBERjkyNzhDMDBEOTBCMzQgLyogVk0uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkU1
OTMyQTcxODNDNUEyNjAwQTFFQ0NDIC8qIFZNRW50cnlTY29wZS5jcHAgaW4gU291cmNlcyAqLywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9HZW5lcmF0b3JQcm90
b3R5cGUuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvR2VuZXJhdG9yUHJvdG90
eXBlLmpzCmluZGV4IDNjMTQwNjg3ZGZjN2UwMGVmZTkxYWU4MGIyYWM2NzZmYTliZjQ4ZjQuLjQ5
OWRiZDM5MmU4MzEzZGNkZDg2ZWM4YzE2MDU2OWQ3ZDZmNTQ5YjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9HZW5lcmF0b3JQcm90b3R5cGUuanMKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0dlbmVyYXRvclByb3RvdHlwZS5qcwpAQCAtNTEs
NyArNTEsNyBAQCBmdW5jdGlvbiBnZW5lcmF0b3JSZXN1bWUoZ2VuZXJhdG9yLCBzZW50VmFsdWUs
IHJlc3VtZU1vZGUpCiAgICAgfSBlbHNlIHsKICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgIGdl
bmVyYXRvci5AZ2VuZXJhdG9yU3RhdGUgPSBAR2VuZXJhdG9yU3RhdGVFeGVjdXRpbmc7Ci0gICAg
ICAgICAgICB2YWx1ZSA9IGdlbmVyYXRvci5AZ2VuZXJhdG9yTmV4dC5AY2FsbChnZW5lcmF0b3Iu
QGdlbmVyYXRvclRoaXMsIGdlbmVyYXRvciwgc3RhdGUsIHNlbnRWYWx1ZSwgcmVzdW1lTW9kZSk7
CisgICAgICAgICAgICB2YWx1ZSA9IGdlbmVyYXRvci5AZ2VuZXJhdG9yTmV4dC5AY2FsbChnZW5l
cmF0b3IuQGdlbmVyYXRvclRoaXMsIGdlbmVyYXRvciwgc3RhdGUsIHNlbnRWYWx1ZSwgcmVzdW1l
TW9kZSwgZ2VuZXJhdG9yLkBnZW5lcmF0b3JGcmFtZSk7CiAgICAgICAgICAgICBpZiAoZ2VuZXJh
dG9yLkBnZW5lcmF0b3JTdGF0ZSA9PT0gQEdlbmVyYXRvclN0YXRlRXhlY3V0aW5nKSB7CiAgICAg
ICAgICAgICAgICAgZ2VuZXJhdG9yLkBnZW5lcmF0b3JTdGF0ZSA9IEBHZW5lcmF0b3JTdGF0ZUNv
bXBsZXRlZDsKICAgICAgICAgICAgICAgICBkb25lID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5jcHAKaW5kZXggN2Yx
N2MwZWYxMGI0MzNmYWM4ZjU4Y2IzYjljYTVkNGQwMTViYmEwOC4uZTJhYjkyMmYwNmM5ODc1NDEy
ODIzYzk2YTY3MDk0ODI4NDUyNWYzYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNp
bmNsdWRlICJCeXRlY29kZUJhc2ljQmxvY2suaCIKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgor
I2luY2x1ZGUgIkludGVycHJldGVySW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIK
ICNpbmNsdWRlICJQcmVjaXNlSnVtcFRhcmdldHMuaCIKIApAQCAtMzgsNjUgKzM5LDYgQEAgdm9p
ZCBCeXRlY29kZUJhc2ljQmxvY2s6OnNocmlua1RvRml0KCkKICAgICBtX3N1Y2Nlc3NvcnMuc2hy
aW5rVG9GaXQoKTsKIH0KIAotc3RhdGljIGJvb2wgaXNCcmFuY2goT3Bjb2RlSUQgb3Bjb2RlSUQp
Ci17Ci0gICAgc3dpdGNoIChvcGNvZGVJRCkgewotICAgIGNhc2Ugb3Bfam1wOgotICAgIGNhc2Ug
b3BfanRydWU6Ci0gICAgY2FzZSBvcF9qZmFsc2U6Ci0gICAgY2FzZSBvcF9qZXFfbnVsbDoKLSAg
ICBjYXNlIG9wX2puZXFfbnVsbDoKLSAgICBjYXNlIG9wX2puZXFfcHRyOgotICAgIGNhc2Ugb3Bf
amxlc3M6Ci0gICAgY2FzZSBvcF9qbGVzc2VxOgotICAgIGNhc2Ugb3BfamdyZWF0ZXI6Ci0gICAg
Y2FzZSBvcF9qZ3JlYXRlcmVxOgotICAgIGNhc2Ugb3Bfam5sZXNzOgotICAgIGNhc2Ugb3Bfam5s
ZXNzZXE6Ci0gICAgY2FzZSBvcF9qbmdyZWF0ZXI6Ci0gICAgY2FzZSBvcF9qbmdyZWF0ZXJlcToK
LSAgICBjYXNlIG9wX3N3aXRjaF9pbW06Ci0gICAgY2FzZSBvcF9zd2l0Y2hfY2hhcjoKLSAgICBj
YXNlIG9wX3N3aXRjaF9zdHJpbmc6Ci0gICAgY2FzZSBvcF9zYXZlOgotICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotfQotCi1z
dGF0aWMgYm9vbCBpc1VuY29uZGl0aW9uYWxCcmFuY2goT3Bjb2RlSUQgb3Bjb2RlSUQpCi17Ci0g
ICAgc3dpdGNoIChvcGNvZGVJRCkgewotICAgIGNhc2Ugb3Bfam1wOgotICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotfQotCi1z
dGF0aWMgYm9vbCBpc1Rlcm1pbmFsKE9wY29kZUlEIG9wY29kZUlEKQotewotICAgIHN3aXRjaCAo
b3Bjb2RlSUQpIHsKLSAgICBjYXNlIG9wX3JldDoKLSAgICBjYXNlIG9wX2VuZDoKLSAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0K
LX0KLQotc3RhdGljIGJvb2wgaXNUaHJvdyhPcGNvZGVJRCBvcGNvZGVJRCkKLXsKLSAgICBzd2l0
Y2ggKG9wY29kZUlEKSB7Ci0gICAgY2FzZSBvcF90aHJvdzoKLSAgICBjYXNlIG9wX3Rocm93X3N0
YXRpY19lcnJvcjoKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIH0KLX0KLQogc3RhdGljIGJvb2wgaXNKdW1wVGFyZ2V0KE9wY29k
ZUlEIG9wY29kZUlELCBjb25zdCBWZWN0b3I8dW5zaWduZWQsIDMyPiYganVtcFRhcmdldHMsIHVu
c2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KQogewogICAgIGlmIChvcGNvZGVJRCA9PSBvcF9jYXRjaCkK
QEAgLTEwNSwxNSArNDcsMjAgQEAgc3RhdGljIGJvb2wgaXNKdW1wVGFyZ2V0KE9wY29kZUlEIG9w
Y29kZUlELCBjb25zdCBWZWN0b3I8dW5zaWduZWQsIDMyPiYganVtcFRhcmcKICAgICByZXR1cm4g
c3RkOjpiaW5hcnlfc2VhcmNoKGp1bXBUYXJnZXRzLmJlZ2luKCksIGp1bXBUYXJnZXRzLmVuZCgp
LCBieXRlY29kZU9mZnNldCk7CiB9CiAKLXN0YXRpYyB2b2lkIGxpbmtCbG9ja3MoQnl0ZWNvZGVC
YXNpY0Jsb2NrKiBwcmVkZWNlc3NvciwgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBzdWNjZXNzb3IpCi17
Ci0gICAgcHJlZGVjZXNzb3ItPmFkZFN1Y2Nlc3NvcihzdWNjZXNzb3IpOwotfQotCi12b2lkIGNv
bXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzKENvZGVCbG9jayogY29kZUJsb2NrLCBWZWN0b3I8c3Rk
Ojp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+JiBiYXNpY0Jsb2NrcykKK3RlbXBsYXRl
PHR5cGVuYW1lIEJsb2NrLCB0eXBlbmFtZSBJbnN0cnVjdGlvbj4KK3ZvaWQgQnl0ZWNvZGVCYXNp
Y0Jsb2NrOjpjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2Nrc0ludGVybmFsKEJsb2NrKiBjb2RlQmxv
Y2ssIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25D
b3VudCwgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYgYmFzaWNC
bG9ja3MpCiB7CiAgICAgVmVjdG9yPHVuc2lnbmVkLCAzMj4ganVtcFRhcmdldHM7Ci0gICAgY29t
cHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhjb2RlQmxvY2ssIGp1bXBUYXJnZXRzKTsKKyAgICBjb21w
dXRlUHJlY2lzZUp1bXBUYXJnZXRzKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb25zQmVnaW4sIGluc3Ry
dWN0aW9uQ291bnQsIGp1bXBUYXJnZXRzKTsKKworICAgIGF1dG8gYXBwZW5kQmxvY2sgPSBbJl0g
KHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+JiYgYmxvY2spIHsKKyAgICAgICAg
YmxvY2stPm1faW5kZXggPSBiYXNpY0Jsb2Nrcy5zaXplKCk7CisgICAgICAgIGJhc2ljQmxvY2tz
LmFwcGVuZChXVEZNb3ZlKGJsb2NrKSk7CisgICAgfTsKKworICAgIGF1dG8gbGlua0Jsb2NrcyA9
IFsmXSAoQnl0ZWNvZGVCYXNpY0Jsb2NrKiBmcm9tLCBCeXRlY29kZUJhc2ljQmxvY2sqIHRvKSB7
CisgICAgICAgIGZyb20tPmFkZFN1Y2Nlc3Nvcih0byk7CisgICAgfTsKIAogICAgIC8vIENyZWF0
ZSB0aGUgZW50cnkgYW5kIGV4aXQgYmFzaWMgYmxvY2tzLgogICAgIGJhc2ljQmxvY2tzLnJlc2Vy
dmVDYXBhY2l0eShqdW1wVGFyZ2V0cy5zaXplKCkgKyAyKTsKQEAgLTEyMiwxOSArNjksMTcgQEAg
dm9pZCBjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2NrcyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgVmVj
dG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXQKICAgICBhdXRvIGZpcnN0QmxvY2sgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEJ5dGVjb2RlQmFzaWNCbG9jaz4oMCwgMCk7CiAgICAgbGlua0Jsb2NrcyhlbnRyeS5n
ZXQoKSwgZmlyc3RCbG9jay5nZXQoKSk7CiAKLSAgICBiYXNpY0Jsb2Nrcy5hcHBlbmQoV1RGTW92
ZShlbnRyeSkpOworICAgIGFwcGVuZEJsb2NrKFdURk1vdmUoZW50cnkpKTsKICAgICBCeXRlY29k
ZUJhc2ljQmxvY2sqIGN1cnJlbnQgPSBmaXJzdEJsb2NrLmdldCgpOwotICAgIGJhc2ljQmxvY2tz
LmFwcGVuZChXVEZNb3ZlKGZpcnN0QmxvY2spKTsKKyAgICBhcHBlbmRCbG9jayhXVEZNb3ZlKGZp
cnN0QmxvY2spKTsKIAogICAgIGF1dG8gZXhpdCA9IHN0ZDo6bWFrZV91bmlxdWU8Qnl0ZWNvZGVC
YXNpY0Jsb2NrPihCeXRlY29kZUJhc2ljQmxvY2s6OkV4aXRCbG9jayk7CiAKICAgICBib29sIG5l
eHRJbnN0cnVjdGlvbklzTGVhZGVyID0gZmFsc2U7CiAKICAgICBJbnRlcnByZXRlciogaW50ZXJw
cmV0ZXIgPSBjb2RlQmxvY2stPnZtKCktPmludGVycHJldGVyOwotICAgIEluc3RydWN0aW9uKiBp
bnN0cnVjdGlvbnNCZWdpbiA9IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsKLSAg
ICB1bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50ID0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5z
aXplKCk7CiAgICAgZm9yICh1bnNpZ25lZCBieXRlY29kZU9mZnNldCA9IDA7IGJ5dGVjb2RlT2Zm
c2V0IDwgaW5zdHJ1Y3Rpb25Db3VudDspIHsKLSAgICAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBp
bnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25zQmVnaW5bYnl0ZWNvZGVPZmZzZXRd
LnUub3Bjb2RlKTsKKyAgICAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnRlcnByZXRlci0+Z2V0
T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25zQmVnaW5bYnl0ZWNvZGVPZmZzZXRdKTsKICAgICAgICAgdW5z
aWduZWQgb3Bjb2RlTGVuZ3RoID0gb3Bjb2RlTGVuZ3Roc1tvcGNvZGVJRF07CiAKICAgICAgICAg
Ym9vbCBjcmVhdGVkQmxvY2sgPSBmYWxzZTsKQEAgLTE0Miw3ICs4Nyw3IEBAIHZvaWQgY29tcHV0
ZUJ5dGVjb2RlQmFzaWNCbG9ja3MoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFZlY3RvcjxzdGQ6OnVu
aXF1ZV9wdHI8Qnl0CiAgICAgICAgIGlmIChpc0p1bXBUYXJnZXQob3Bjb2RlSUQsIGp1bXBUYXJn
ZXRzLCBieXRlY29kZU9mZnNldCkgfHwgbmV4dEluc3RydWN0aW9uSXNMZWFkZXIpIHsKICAgICAg
ICAgICAgIGF1dG8gbmV3QmxvY2sgPSBzdGQ6Om1ha2VfdW5pcXVlPEJ5dGVjb2RlQmFzaWNCbG9j
az4oYnl0ZWNvZGVPZmZzZXQsIG9wY29kZUxlbmd0aCk7CiAgICAgICAgICAgICBjdXJyZW50ID0g
bmV3QmxvY2suZ2V0KCk7Ci0gICAgICAgICAgICBiYXNpY0Jsb2Nrcy5hcHBlbmQoV1RGTW92ZShu
ZXdCbG9jaykpOworICAgICAgICAgICAgYXBwZW5kQmxvY2soV1RGTW92ZShuZXdCbG9jaykpOwog
ICAgICAgICAgICAgY3JlYXRlZEJsb2NrID0gdHJ1ZTsKICAgICAgICAgICAgIG5leHRJbnN0cnVj
dGlvbklzTGVhZGVyID0gZmFsc2U7CiAgICAgICAgICAgICBieXRlY29kZU9mZnNldCArPSBvcGNv
ZGVMZW5ndGg7CkBAIC0xNjksOCArMTE0LDcgQEAgdm9pZCBjb21wdXRlQnl0ZWNvZGVCYXNpY0Js
b2NrcyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXQKIAog
ICAgICAgICBib29sIGZhbGxzVGhyb3VnaCA9IHRydWU7IAogICAgICAgICBmb3IgKHVuc2lnbmVk
IGJ5dGVjb2RlT2Zmc2V0ID0gYmxvY2stPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCk7IGJ5dGVjb2Rl
T2Zmc2V0IDwgYmxvY2stPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCkgKyBibG9jay0+dG90YWxCeXRl
Y29kZUxlbmd0aCgpOykgewotICAgICAgICAgICAgY29uc3QgSW5zdHJ1Y3Rpb24mIGN1cnJlbnRJ
bnN0cnVjdGlvbiA9IGluc3RydWN0aW9uc0JlZ2luW2J5dGVjb2RlT2Zmc2V0XTsKLSAgICAgICAg
ICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGN1cnJlbnRJ
bnN0cnVjdGlvbi51Lm9wY29kZSk7CisgICAgICAgICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGlu
dGVycHJldGVyLT5nZXRPcGNvZGVJRChpbnN0cnVjdGlvbnNCZWdpbltieXRlY29kZU9mZnNldF0p
OwogICAgICAgICAgICAgdW5zaWduZWQgb3Bjb2RlTGVuZ3RoID0gb3Bjb2RlTGVuZ3Roc1tvcGNv
ZGVJRF07CiAgICAgICAgICAgICAvLyBJZiB3ZSBmb3VuZCBhIHRlcm1pbmFsIGJ5dGVjb2RlLCBs
aW5rIHRvIHRoZSBleGl0IGJsb2NrLgogICAgICAgICAgICAgaWYgKGlzVGVybWluYWwob3Bjb2Rl
SUQpKSB7CkBAIC0xODUsNyArMTI5LDcgQEAgdm9pZCBjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2Nr
cyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXQKICAgICAg
ICAgICAgIC8vIGJsb2NrIGJlY2F1c2UgdGhlIGZpbmFsbHkgYmxvY2sgd2lsbCBjcmVhdGUgaXRz
IG93biBjYXRjaCwgd2hpY2ggd2lsbCBnZW5lcmF0ZSBhIEhhbmRsZXJJbmZvLgogICAgICAgICAg
ICAgaWYgKGlzVGhyb3cob3Bjb2RlSUQpKSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKGJ5dGVj
b2RlT2Zmc2V0ICsgb3Bjb2RlTGVuZ3RoID09IGJsb2NrLT5sZWFkZXJCeXRlY29kZU9mZnNldCgp
ICsgYmxvY2stPnRvdGFsQnl0ZWNvZGVMZW5ndGgoKSk7Ci0gICAgICAgICAgICAgICAgSGFuZGxl
ckluZm8qIGhhbmRsZXIgPSBjb2RlQmxvY2stPmhhbmRsZXJGb3JCeXRlY29kZU9mZnNldChieXRl
Y29kZU9mZnNldCk7CisgICAgICAgICAgICAgICAgYXV0byogaGFuZGxlciA9IGNvZGVCbG9jay0+
aGFuZGxlckZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KTsKICAgICAgICAgICAgICAg
ICBmYWxsc1Rocm91Z2ggPSBmYWxzZTsKICAgICAgICAgICAgICAgICBpZiAoIWhhbmRsZXIpIHsK
ICAgICAgICAgICAgICAgICAgICAgbGlua0Jsb2NrcyhibG9jaywgZXhpdC5nZXQoKSk7CkBAIC0y
MDUsNyArMTQ5LDcgQEAgdm9pZCBjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2NrcyhDb2RlQmxvY2sq
IGNvZGVCbG9jaywgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXQKICAgICAgICAgICAgIGlmIChp
c0JyYW5jaChvcGNvZGVJRCkpIHsKICAgICAgICAgICAgICAgICBBU1NFUlQoYnl0ZWNvZGVPZmZz
ZXQgKyBvcGNvZGVMZW5ndGggPT0gYmxvY2stPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCkgKyBibG9j
ay0+dG90YWxCeXRlY29kZUxlbmd0aCgpKTsKICAgICAgICAgICAgICAgICBWZWN0b3I8dW5zaWdu
ZWQsIDE+IGJ5dGVjb2RlT2Zmc2V0c0p1bXBlZFRvOwotICAgICAgICAgICAgICAgIGZpbmRKdW1w
VGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9jaywgYnl0ZWNvZGVPZmZzZXQsIGJ5dGVj
b2RlT2Zmc2V0c0p1bXBlZFRvKTsKKyAgICAgICAgICAgICAgICBmaW5kSnVtcFRhcmdldHNGb3JC
eXRlY29kZU9mZnNldChjb2RlQmxvY2ssIGluc3RydWN0aW9uc0JlZ2luLCBieXRlY29kZU9mZnNl
dCwgYnl0ZWNvZGVPZmZzZXRzSnVtcGVkVG8pOwogCiAgICAgICAgICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IGJhc2ljQmxvY2tzLnNpemUoKTsgaSsrKSB7CiAgICAgICAgICAgICAg
ICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogb3RoZXJCbG9jayA9IGJhc2ljQmxvY2tzW2ldLmdl
dCgpOwpAQCAtMjI5LDEwICsxNzMsMjAgQEAgdm9pZCBjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2Nr
cyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXQKICAgICAg
ICAgfQogICAgIH0KIAotICAgIGJhc2ljQmxvY2tzLmFwcGVuZChXVEZNb3ZlKGV4aXQpKTsKKyAg
ICBhcHBlbmRCbG9jayhXVEZNb3ZlKGV4aXQpKTsKICAgICAKICAgICBmb3IgKGF1dG8mIGJhc2lj
QmxvY2sgOiBiYXNpY0Jsb2NrcykKICAgICAgICAgYmFzaWNCbG9jay0+c2hyaW5rVG9GaXQoKTsK
IH0KIAordm9pZCBCeXRlY29kZUJhc2ljQmxvY2s6OmNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tz
KENvZGVCbG9jayogY29kZUJsb2NrLCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVu
c2lnbmVkIGluc3RydWN0aW9uQ291bnQsIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVC
YXNpY0Jsb2NrPj4mIGJhc2ljQmxvY2tzKQoreworICAgIGNvbXB1dGVCeXRlY29kZUJhc2ljQmxv
Y2tzSW50ZXJuYWwoY29kZUJsb2NrLCBpbnN0cnVjdGlvbnNCZWdpbiwgaW5zdHJ1Y3Rpb25Db3Vu
dCwgYmFzaWNCbG9ja3MpOworfQorCit2b2lkIEJ5dGVjb2RlQmFzaWNCbG9jazo6Y29tcHV0ZUJ5
dGVjb2RlQmFzaWNCbG9ja3MoVW5saW5rZWRDb2RlQmxvY2sqIGNvZGVCbG9jaywgVW5saW5rZWRJ
bnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQs
IFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mIGJhc2ljQmxvY2tz
KQoreworICAgIEJ5dGVjb2RlQmFzaWNCbG9jazo6Y29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3NJ
bnRlcm5hbChjb2RlQmxvY2ssIGluc3RydWN0aW9uc0JlZ2luLCBpbnN0cnVjdGlvbkNvdW50LCBi
YXNpY0Jsb2Nrcyk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5oCmluZGV4IGNkNzE0Nzdl
ZDUwNmFhNzg4MDIxNjVmYWNkYjdhNmQ0NmYzOGRjMmEuLjdmMTg0ZjQ3NzYyMGFjYWQ3NDUxM2Ew
NTA4MmQ1NzgyMmRmZDg1MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZUJhc2ljQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmgKQEAgLTMzLDYgKzMzLDkgQEAKIG5hbWVzcGFjZSBK
U0MgewogCiBjbGFzcyBDb2RlQmxvY2s7CitjbGFzcyBVbmxpbmtlZENvZGVCbG9jazsKK3N0cnVj
dCBJbnN0cnVjdGlvbjsKK3N0cnVjdCBVbmxpbmtlZEluc3RydWN0aW9uOwogCiBjbGFzcyBCeXRl
Y29kZUJhc2ljQmxvY2sgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtNDgsMTgg
KzUxLDI4IEBAIGNsYXNzIEJ5dGVjb2RlQmFzaWNCbG9jayB7CiAgICAgdW5zaWduZWQgbGVhZGVy
Qnl0ZWNvZGVPZmZzZXQoKSB7IHJldHVybiBtX2xlYWRlckJ5dGVjb2RlT2Zmc2V0OyB9CiAgICAg
dW5zaWduZWQgdG90YWxCeXRlY29kZUxlbmd0aCgpIHsgcmV0dXJuIG1fdG90YWxCeXRlY29kZUxl
bmd0aDsgfQogCi0gICAgVmVjdG9yPHVuc2lnbmVkPiYgYnl0ZWNvZGVPZmZzZXRzKCkgeyByZXR1
cm4gbV9ieXRlY29kZU9mZnNldHM7IH0KLSAgICB2b2lkIGFkZEJ5dGVjb2RlTGVuZ3RoKHVuc2ln
bmVkKTsKKyAgICBjb25zdCBWZWN0b3I8dW5zaWduZWQ+JiBieXRlY29kZU9mZnNldHMoKSBjb25z
dCB7IHJldHVybiBtX2J5dGVjb2RlT2Zmc2V0czsgfQogCi0gICAgVmVjdG9yPEJ5dGVjb2RlQmFz
aWNCbG9jayo+JiBzdWNjZXNzb3JzKCkgeyByZXR1cm4gbV9zdWNjZXNzb3JzOyB9Ci0gICAgdm9p
ZCBhZGRTdWNjZXNzb3IoQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaykgeyBtX3N1Y2Nlc3NvcnMu
YXBwZW5kKGJsb2NrKTsgfQorICAgIGNvbnN0IFZlY3RvcjxCeXRlY29kZUJhc2ljQmxvY2sqPiYg
c3VjY2Vzc29ycygpIGNvbnN0IHsgcmV0dXJuIG1fc3VjY2Vzc29yczsgfQogCiAgICAgRmFzdEJp
dFZlY3RvciYgaW4oKSB7IHJldHVybiBtX2luOyB9CiAgICAgRmFzdEJpdFZlY3RvciYgb3V0KCkg
eyByZXR1cm4gbV9vdXQ7IH0KIAorICAgIHVuc2lnbmVkIGluZGV4KCkgY29uc3QgeyByZXR1cm4g
bV9pbmRleDsgfQorCisgICAgc3RhdGljIHZvaWQgY29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3Mo
Q29kZUJsb2NrKiwgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBpbnN0
cnVjdGlvbkNvdW50LCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+
Jik7CisgICAgc3RhdGljIHZvaWQgY29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MoVW5saW5rZWRD
b2RlQmxvY2sqLCBVbmxpbmtlZEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWdu
ZWQgaW5zdHJ1Y3Rpb25Db3VudCwgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2lj
QmxvY2s+PiYpOworCiBwcml2YXRlOgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEJsb2NrLCB0eXBl
bmFtZSBJbnN0cnVjdGlvbj4gc3RhdGljIHZvaWQgY29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3NJ
bnRlcm5hbChCbG9jayogY29kZUJsb2NrLCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4s
IHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQsIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNv
ZGVCYXNpY0Jsb2NrPj4mIGJhc2ljQmxvY2tzKTsKKworICAgIHZvaWQgYWRkU3VjY2Vzc29yKEJ5
dGVjb2RlQmFzaWNCbG9jayogYmxvY2spIHsgbV9zdWNjZXNzb3JzLmFwcGVuZChibG9jayk7IH0K
KworICAgIHZvaWQgYWRkQnl0ZWNvZGVMZW5ndGgodW5zaWduZWQpOworCiAgICAgdW5zaWduZWQg
bV9sZWFkZXJCeXRlY29kZU9mZnNldDsKICAgICB1bnNpZ25lZCBtX3RvdGFsQnl0ZWNvZGVMZW5n
dGg7CisgICAgdW5zaWduZWQgbV9pbmRleDsKIAogICAgIFZlY3Rvcjx1bnNpZ25lZD4gbV9ieXRl
Y29kZU9mZnNldHM7CiAgICAgVmVjdG9yPEJ5dGVjb2RlQmFzaWNCbG9jayo+IG1fc3VjY2Vzc29y
czsKQEAgLTY4LDggKzgxLDYgQEAgY2xhc3MgQnl0ZWNvZGVCYXNpY0Jsb2NrIHsKICAgICBGYXN0
Qml0VmVjdG9yIG1fb3V0OwogfTsKIAotdm9pZCBjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2NrcyhD
b2RlQmxvY2sqLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+Jik7
Ci0KIGlubGluZSBCeXRlY29kZUJhc2ljQmxvY2s6OkJ5dGVjb2RlQmFzaWNCbG9jayh1bnNpZ25l
ZCBzdGFydCwgdW5zaWduZWQgbGVuZ3RoKQogICAgIDogbV9sZWFkZXJCeXRlY29kZU9mZnNldChz
dGFydCkKICAgICAsIG1fdG90YWxCeXRlY29kZUxlbmd0aChsZW5ndGgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24u
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZp
Y2F0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZTFiMGFhNjE4NmY1YzNjNGE5ZGY4YzMyYzVhMWQ3NmJm
MjhkMTVlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcApAQCAtMCwwICsxLDI2OCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNiBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQnl0ZWNvZGVHZW5lcmF0
b3JpZmljYXRpb24uaCIKKworI2luY2x1ZGUgIkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGlu
ZXMuaCIKKyNpbmNsdWRlICJCeXRlY29kZVJld3JpdGVyLmgiCisjaW5jbHVkZSAiQnl0ZWNvZGVV
c2VEZWYuaCIKKyNpbmNsdWRlICJJZGVudGlmaWVySW5saW5lcy5oIgorI2luY2x1ZGUgIkludGVy
cHJldGVySW5saW5lcy5oIgorI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJKU0NK
U1ZhbHVlSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTR2VuZXJhdG9yRnVuY3Rpb24uaCIKKyNpbmNs
dWRlICJTdHJvbmdJbmxpbmVzLmgiCisjaW5jbHVkZSAiVW5saW5rZWRDb2RlQmxvY2suaCIKKyNp
bmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK3N0cnVjdCBZaWVs
ZERhdGEgeworICAgIHNpemVfdCBwb2ludCB7IDAgfTsKKyAgICBpbnQgYXJndW1lbnQgeyAwIH07
CisgICAgRmFzdEJpdFZlY3RvciBsaXZlbmVzczsKK307CisKK2NsYXNzIEJ5dGVjb2RlR2VuZXJh
dG9yaWZpY2F0aW9uIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIFZlY3RvcjxZaWVsZERhdGE+IFlp
ZWxkczsKKworICAgIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uKFVubGlua2VkQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIFVubGlua2VkQ29kZUJsb2NrOjpVbnBhY2tlZEluc3RydWN0aW9ucyYgaW5z
dHJ1Y3Rpb25zLCBTeW1ib2xUYWJsZSogZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZSwgaW50IGdl
bmVyYXRvckZyYW1lU3ltYm9sVGFibGVJbmRleCkKKyAgICAgICAgOiBtX2dyYXBoKGNvZGVCbG9j
aywgaW5zdHJ1Y3Rpb25zKQorICAgICAgICAsIG1fZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZSgq
Y29kZUJsb2NrLT52bSgpLCBnZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlKQorICAgICAgICAsIG1f
Z2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZUluZGV4KGdlbmVyYXRvckZyYW1lU3ltYm9sVGFibGVJ
bmRleCkKKyAgICB7CisgICAgICAgIGZvciAoQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jayA6IG1f
Z3JhcGgpIHsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQgOiBibG9j
ay0+Ynl0ZWNvZGVPZmZzZXRzKCkpIHsKKyAgICAgICAgICAgICAgICBjb25zdCBVbmxpbmtlZElu
c3RydWN0aW9uKiBwYyA9ICZtX2dyYXBoLmluc3RydWN0aW9ucygpW2J5dGVjb2RlT2Zmc2V0XTsK
KyAgICAgICAgICAgICAgICBzd2l0Y2ggKHBjLT51Lm9wY29kZSkgeworICAgICAgICAgICAgICAg
IGNhc2Ugb3BfZW50ZXI6IHsKKyAgICAgICAgICAgICAgICAgICAgbV9lbnRlclBvaW50ID0gYnl0
ZWNvZGVPZmZzZXQ7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgICAgIGNhc2Ugb3BfeWllbGQ6IHsKKyAgICAgICAgICAgICAgICAg
ICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gcGNbMl0udS5pbmRleDsKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKGxpdmVDYWxsZWVMb2NhbHNJbmRleCA+PSBtX3lpZWxkcy5zaXpl
KCkpCisgICAgICAgICAgICAgICAgICAgICAgICBtX3lpZWxkcy5yZXNpemUobGl2ZUNhbGxlZUxv
Y2Fsc0luZGV4ICsgMSk7CisgICAgICAgICAgICAgICAgICAgIFlpZWxkRGF0YSYgZGF0YSA9IG1f
eWllbGRzW2xpdmVDYWxsZWVMb2NhbHNJbmRleF07CisgICAgICAgICAgICAgICAgICAgIGRhdGEu
cG9pbnQgPSBieXRlY29kZU9mZnNldDsKKyAgICAgICAgICAgICAgICAgICAgZGF0YS5hcmd1bWVu
dCA9IHBjWzNdLnUub3BlcmFuZDsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgfQorCisgICAgc3RydWN0IFN0b3JhZ2UgeworICAgICAgICBJZGVudGlmaWVyIGlkZW50aWZp
ZXI7CisgICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXJJbmRleDsKKyAgICAgICAgU2NvcGVPZmZz
ZXQgc2NvcGVPZmZzZXQ7CisgICAgfTsKKworICAgIHZvaWQgcnVuKCk7CisKKyAgICBCeXRlY29k
ZUdyYXBoPFVubGlua2VkQ29kZUJsb2NrPiYgZ3JhcGgoKSB7IHJldHVybiBtX2dyYXBoOyB9CisK
KyAgICBjb25zdCBZaWVsZHMmIHlpZWxkcygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4g
bV95aWVsZHM7CisgICAgfQorCisgICAgWWllbGRzJiB5aWVsZHMoKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIG1feWllbGRzOworICAgIH0KKworICAgIHVuc2lnbmVkIGVudGVyUG9pbnQoKSBjb25z
dAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZW50ZXJQb2ludDsKKyAgICB9CisKK3ByaXZhdGU6
CisgICAgU3RvcmFnZSBzdG9yYWdlRm9yR2VuZXJhdG9yTG9jYWwodW5zaWduZWQgaW5kZXgpCisg
ICAgeworICAgICAgICAvLyBXZSBhc3NpZ24gYSBzeW1ib2wgdG8gYSByZWdpc3Rlci4gVGhlcmUg
aXMgb25lLW9uLW9uZSBjb3JyZXNwb25kaW5nIGJldHdlZW4gYSByZWdpc3RlciBhbmQgYSBzeW1i
b2wuCisgICAgICAgIC8vIEJ5IGRvaW5nIHNvLCB3ZSBhbGxvY2F0ZSB0aGUgc3BlY2lmaWMgc3Rv
cmFnZSB0byBzYXZlIHRoZSBnaXZlbiByZWdpc3Rlci4KKyAgICAgICAgLy8gVGhpcyBhbGxvdyB1
cyBub3QgdG8gc2F2ZSBhbGwgdGhlIGxpdmUgcmVnaXN0ZXJzIGV2ZW4gaWYgdGhlIHJlZ2lzdGVy
cyBhcmUgbm90IG92ZXJ3cml0dGVuIGZyb20gdGhlIHByZXZpb3VzIHJlc3VtaW5nIHRpbWUuCisg
ICAgICAgIC8vIEl0IG1lYW5zIHRoYXQsIHRoZSByZWdpc3RlciBjYW4gYmUgcmV0cmlldmVkIGV2
ZW4gaWYgdGhlIGltbWVkaWF0ZSBwcmV2aW91cyBvcF9zYXZlIGRvZXMgbm90IHNhdmUgaXQuCisK
KyAgICAgICAgaWYgKG1fc3RvcmFnZXMuc2l6ZSgpIDw9IGluZGV4KQorICAgICAgICAgICAgbV9z
dG9yYWdlcy5yZXNpemUoaW5kZXggKyAxKTsKKyAgICAgICAgaWYgKE9wdGlvbmFsPFN0b3JhZ2U+
IHN0b3JhZ2UgPSBtX3N0b3JhZ2VzW2luZGV4XSkKKyAgICAgICAgICAgIHJldHVybiAqc3RvcmFn
ZTsKKworICAgICAgICBVbmxpbmtlZENvZGVCbG9jayogY29kZUJsb2NrID0gbV9ncmFwaC5jb2Rl
QmxvY2soKTsKKyAgICAgICAgSWRlbnRpZmllciBpZGVudGlmaWVyID0gSWRlbnRpZmllcjo6ZnJv
bVVpZChQcml2YXRlTmFtZSgpKTsKKyAgICAgICAgdW5zaWduZWQgaWRlbnRpZmllckluZGV4ID0g
Y29kZUJsb2NrLT5udW1iZXJPZklkZW50aWZpZXJzKCk7CisgICAgICAgIGNvZGVCbG9jay0+YWRk
SWRlbnRpZmllcihpZGVudGlmaWVyKTsKKyAgICAgICAgU2NvcGVPZmZzZXQgc2NvcGVPZmZzZXQg
PSBtX2dlbmVyYXRvckZyYW1lU3ltYm9sVGFibGUtPnRha2VOZXh0U2NvcGVPZmZzZXQoTm9Mb2Nr
aW5nTmVjZXNzYXJ5KTsKKyAgICAgICAgbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlLT5zZXQo
Tm9Mb2NraW5nTmVjZXNzYXJ5LCBpZGVudGlmaWVyLmltcGwoKSwgU3ltYm9sVGFibGVFbnRyeShW
YXJPZmZzZXQoc2NvcGVPZmZzZXQpKSk7CisKKyAgICAgICAgU3RvcmFnZSBzdG9yYWdlID0gewor
ICAgICAgICAgICAgaWRlbnRpZmllciwKKyAgICAgICAgICAgIGlkZW50aWZpZXJJbmRleCwKKyAg
ICAgICAgICAgIHNjb3BlT2Zmc2V0CisgICAgICAgIH07CisgICAgICAgIG1fc3RvcmFnZXNbaW5k
ZXhdID0gc3RvcmFnZTsKKyAgICAgICAgcmV0dXJuIHN0b3JhZ2U7CisgICAgfQorCisgICAgdW5z
aWduZWQgbV9lbnRlclBvaW50IHsgMCB9OworICAgIEJ5dGVjb2RlR3JhcGg8VW5saW5rZWRDb2Rl
QmxvY2s+IG1fZ3JhcGg7CisgICAgVmVjdG9yPE9wdGlvbmFsPFN0b3JhZ2U+PiBtX3N0b3JhZ2Vz
OworICAgIFlpZWxkcyBtX3lpZWxkczsKKyAgICBTdHJvbmc8U3ltYm9sVGFibGU+IG1fZ2VuZXJh
dG9yRnJhbWVTeW1ib2xUYWJsZTsKKyAgICBpbnQgbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxl
SW5kZXg7Cit9OworCitjbGFzcyBHZW5lcmF0b3JMaXZlbmVzc0FuYWx5c2lzIDogcHVibGljIEJ5
dGVjb2RlTGl2ZW5lc3NQcm9wYWdhdGlvbjxHZW5lcmF0b3JMaXZlbmVzc0FuYWx5c2lzPiB7Citw
dWJsaWM6CisgICAgR2VuZXJhdG9yTGl2ZW5lc3NBbmFseXNpcyhCeXRlY29kZUdlbmVyYXRvcmlm
aWNhdGlvbiYgZ2VuZXJhdG9yaWZpY2F0aW9uKQorICAgICAgICA6IG1fZ2VuZXJhdG9yaWZpY2F0
aW9uKGdlbmVyYXRvcmlmaWNhdGlvbikKKyAgICB7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgRnVuY3Rvcj4KKyAgICB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoVW5s
aW5rZWRDb2RlQmxvY2sqIGNvZGVCbG9jaywgT3Bjb2RlSUQgb3Bjb2RlSUQsIFVubGlua2VkSW5z
dHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBGYXN0Qml0VmVjdG9yJiwgY29uc3QgRnVuY3RvciYgZnVu
Y3RvcikKKyAgICB7CisgICAgICAgIEpTQzo6Y29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChj
b2RlQmxvY2ssIG9wY29kZUlELCBpbnN0cnVjdGlvbiwgZnVuY3Rvcik7CisgICAgfQorCisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KKyAgICB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNv
ZGVPZmZzZXQoVW5saW5rZWRDb2RlQmxvY2sqIGNvZGVCbG9jaywgT3Bjb2RlSUQgb3Bjb2RlSUQs
IFVubGlua2VkSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBGYXN0Qml0VmVjdG9yJiwgY29uc3Qg
RnVuY3RvciYgZnVuY3RvcikKKyAgICB7CisgICAgICAgIEpTQzo6Y29tcHV0ZVVzZXNGb3JCeXRl
Y29kZU9mZnNldChjb2RlQmxvY2ssIG9wY29kZUlELCBpbnN0cnVjdGlvbiwgZnVuY3Rvcik7Cisg
ICAgfQorCisgICAgdm9pZCBydW4oKQorICAgIHsKKyAgICAgICAgLy8gUGVyZm9ybSBtb2RpZmll
ZCBsaXZlbmVzcyBhbmFseXNpcyB0byBkZXRlcm1pbmUgd2hpY2ggbG9jYWxzIGFyZSBsaXZlIGF0
IHRoZSBtZXJnZSBwb2ludHMuCisgICAgICAgIC8vIFRoaXMgcHJvZHVjZXMgdGhlIGNvbnNlcnZh
dGl2ZSByZXN1bHRzIGZvciB0aGUgcXVlc3Rpb24sICJ3aGljaCB2YXJpYWJsZXMgc2hvdWxkIGJl
IHNhdmVkIGFuZCByZXN1bWVkPyIuCisKKyAgICAgICAgcnVuTGl2ZW5lc3NGaXhwb2ludChtX2dl
bmVyYXRvcmlmaWNhdGlvbi5ncmFwaCgpKTsKKworICAgICAgICBmb3IgKFlpZWxkRGF0YSYgZGF0
YSA6IG1fZ2VuZXJhdG9yaWZpY2F0aW9uLnlpZWxkcygpKQorICAgICAgICAgICAgZGF0YS5saXZl
bmVzcyA9IGdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQobV9nZW5lcmF0b3JpZmljYXRp
b24uZ3JhcGgoKSwgZGF0YS5wb2ludCArIG9wY29kZUxlbmd0aChvcF95aWVsZCkpOworICAgIH0K
KworcHJpdmF0ZToKKyAgICBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbiYgbV9nZW5lcmF0b3Jp
ZmljYXRpb247Cit9OworCit2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uOjpydW4oKQor
eworICAgIC8vIFdlIGNhbGN1bGF0ZSB0aGUgbGl2ZW5lc3MgYXQgZWFjaCBtZXJnZSBwb2ludC4g
VGhpcyBnaXZlcyB1cyB0aGUgaW5mb3JtYXRpb24gd2hpY2ggcmVnaXN0ZXJzIHNob3VsZCBiZSBz
YXZlZCBhbmQgcmVzdW1lZCBjb25zZXJ2YXRpdmVseS4KKworICAgIHsKKyAgICAgICAgR2VuZXJh
dG9yTGl2ZW5lc3NBbmFseXNpcyBwYXNzKCp0aGlzKTsKKyAgICAgICAgcGFzcy5ydW4oKTsKKyAg
ICB9CisKKyAgICBVbmxpbmtlZENvZGVCbG9jayogY29kZUJsb2NrID0gbV9ncmFwaC5jb2RlQmxv
Y2soKTsKKyAgICBCeXRlY29kZVJld3JpdGVyIHJld3JpdGVyKG1fZ3JhcGgpOworCisgICAgLy8g
U2V0dXAgdGhlIGdsb2JhbCBzd2l0Y2ggZm9yIHRoZSBnZW5lcmF0b3IuCisgICAgeworICAgICAg
ICB1bnNpZ25lZCBuZXh0VG9FbnRlclBvaW50ID0gZW50ZXJQb2ludCgpICsgb3Bjb2RlTGVuZ3Ro
KG9wX2VudGVyKTsKKyAgICAgICAgdW5zaWduZWQgc3dpdGNoVGFibGVJbmRleCA9IG1fZ3JhcGgu
Y29kZUJsb2NrKCktPm51bWJlck9mU3dpdGNoSnVtcFRhYmxlcygpOworICAgICAgICBWaXJ0dWFs
UmVnaXN0ZXIgc3RhdGUgPSB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChzdGF0aWNfY2FzdDxp
bnQzMl90PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JBcmd1bWVudDo6U3RhdGUpKTsK
KyAgICAgICAgYXV0byYganVtcFRhYmxlID0gbV9ncmFwaC5jb2RlQmxvY2soKS0+YWRkU3dpdGNo
SnVtcFRhYmxlKCk7CisgICAgICAgIGp1bXBUYWJsZS5taW4gPSAwOworICAgICAgICBqdW1wVGFi
bGUuYnJhbmNoT2Zmc2V0cy5yZXNpemUobV95aWVsZHMuc2l6ZSgpICsgMSk7CisgICAgICAgIGp1
bXBUYWJsZS5icmFuY2hPZmZzZXRzLmZpbGwoMCk7CisgICAgICAgIGp1bXBUYWJsZS5hZGQoMCwg
bmV4dFRvRW50ZXJQb2ludCk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3lp
ZWxkcy5zaXplKCk7ICsraSkKKyAgICAgICAgICAgIGp1bXBUYWJsZS5hZGQoaSArIDEsIG1feWll
bGRzW2ldLnBvaW50KTsKKworICAgICAgICByZXdyaXRlci5pbnNlcnRGcmFnbWVudEJlZm9yZShu
ZXh0VG9FbnRlclBvaW50LCBbJl0oQnl0ZWNvZGVSZXdyaXRlcjo6RnJhZ21lbnQmIGZyYWdtZW50
KSB7CisgICAgICAgICAgICBmcmFnbWVudC5hcHBlbmRJbnN0cnVjdGlvbihvcF9zd2l0Y2hfaW1t
LCBzd2l0Y2hUYWJsZUluZGV4LCBuZXh0VG9FbnRlclBvaW50LCBzdGF0ZS5vZmZzZXQoKSk7Cisg
ICAgICAgIH0pOworICAgIH0KKworICAgIGZvciAoY29uc3QgWWllbGREYXRhJiBkYXRhIDogbV95
aWVsZHMpIHsKKyAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHNjb3BlID0gdmlydHVhbFJlZ2lzdGVy
Rm9yQXJndW1lbnQoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6R2Vu
ZXJhdG9yQXJndW1lbnQ6OkZyYW1lKSk7CisKKyAgICAgICAgLy8gRW1pdCBzYXZlIHNlcXVlbmNl
LgorICAgICAgICByZXdyaXRlci5pbnNlcnRGcmFnbWVudEJlZm9yZShkYXRhLnBvaW50LCBbJl0o
Qnl0ZWNvZGVSZXdyaXRlcjo6RnJhZ21lbnQmIGZyYWdtZW50KSB7CisgICAgICAgICAgICBkYXRh
LmxpdmVuZXNzLmZvckVhY2hTZXRCaXQoWyZdKHNpemVfdCBpbmRleCkgeworICAgICAgICAgICAg
ICAgIFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kID0gdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaW5k
ZXgpOworICAgICAgICAgICAgICAgIFN0b3JhZ2Ugc3RvcmFnZSA9IHN0b3JhZ2VGb3JHZW5lcmF0
b3JMb2NhbChpbmRleCk7CisKKyAgICAgICAgICAgICAgICBmcmFnbWVudC5hcHBlbmRJbnN0cnVj
dGlvbigKKyAgICAgICAgICAgICAgICAgICAgb3BfcHV0X3RvX3Njb3BlLAorICAgICAgICAgICAg
ICAgICAgICBzY29wZS5vZmZzZXQoKSwgLy8gc2NvcGUKKyAgICAgICAgICAgICAgICAgICAgc3Rv
cmFnZS5pZGVudGlmaWVySW5kZXgsIC8vIGlkZW50aWZpZXIKKyAgICAgICAgICAgICAgICAgICAg
b3BlcmFuZC5vZmZzZXQoKSwgLy8gdmFsdWUKKyAgICAgICAgICAgICAgICAgICAgR2V0UHV0SW5m
byhEb05vdFRocm93SWZOb3RGb3VuZCwgTG9jYWxDbG9zdXJlVmFyLCBJbml0aWFsaXphdGlvbk1v
ZGU6Ok5vdEluaXRpYWxpemF0aW9uKS5vcGVyYW5kKCksIC8vIGluZm8KKyAgICAgICAgICAgICAg
ICAgICAgbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlSW5kZXgsIC8vIHN5bWJvbCB0YWJsZSBj
b25zdGFudCBpbmRleAorICAgICAgICAgICAgICAgICAgICBzdG9yYWdlLnNjb3BlT2Zmc2V0Lm9m
ZnNldCgpIC8vIHNjb3BlIG9mZnNldAorICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICB9
KTsKKworICAgICAgICAgICAgLy8gSW5zZXJ0IG9wX3JldCBqdXN0IGFmdGVyIHNhdmUgc2VxdWVu
Y2UuCisgICAgICAgICAgICBmcmFnbWVudC5hcHBlbmRJbnN0cnVjdGlvbihvcF9yZXQsIGRhdGEu
YXJndW1lbnQpOworICAgICAgICB9KTsKKworICAgICAgICAvLyBFbWl0IHJlc3VtZSBzZXF1ZW5j
ZS4KKyAgICAgICAgcmV3cml0ZXIuaW5zZXJ0RnJhZ21lbnRCZWZvcmUoZGF0YS5wb2ludCArIG9w
Y29kZUxlbmd0aChvcF95aWVsZCksIFsmXShCeXRlY29kZVJld3JpdGVyOjpGcmFnbWVudCYgZnJh
Z21lbnQpIHsKKyAgICAgICAgICAgIGRhdGEubGl2ZW5lc3MuZm9yRWFjaFNldEJpdChbJl0oc2l6
ZV90IGluZGV4KSB7CisgICAgICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQgPSB2
aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChpbmRleCk7CisgICAgICAgICAgICAgICAgU3RvcmFnZSBz
dG9yYWdlID0gc3RvcmFnZUZvckdlbmVyYXRvckxvY2FsKGluZGV4KTsKKworICAgICAgICAgICAg
ICAgIFVubGlua2VkVmFsdWVQcm9maWxlIHByb2ZpbGUgPSBjb2RlQmxvY2stPmFkZFZhbHVlUHJv
ZmlsZSgpOworICAgICAgICAgICAgICAgIGZyYWdtZW50LmFwcGVuZEluc3RydWN0aW9uKAorICAg
ICAgICAgICAgICAgICAgICBvcF9nZXRfZnJvbV9zY29wZSwKKyAgICAgICAgICAgICAgICAgICAg
b3BlcmFuZC5vZmZzZXQoKSwgLy8gZHN0CisgICAgICAgICAgICAgICAgICAgIHNjb3BlLm9mZnNl
dCgpLCAvLyBzY29wZQorICAgICAgICAgICAgICAgICAgICBzdG9yYWdlLmlkZW50aWZpZXJJbmRl
eCwgLy8gaWRlbnRpZmllcgorICAgICAgICAgICAgICAgICAgICBHZXRQdXRJbmZvKERvTm90VGhy
b3dJZk5vdEZvdW5kLCBMb2NhbENsb3N1cmVWYXIsIEluaXRpYWxpemF0aW9uTW9kZTo6Tm90SW5p
dGlhbGl6YXRpb24pLm9wZXJhbmQoKSwgLy8gaW5mbworICAgICAgICAgICAgICAgICAgICAwLCAv
LyBsb2NhbCBzY29wZSBkZXB0aAorICAgICAgICAgICAgICAgICAgICBzdG9yYWdlLnNjb3BlT2Zm
c2V0Lm9mZnNldCgpLCAvLyBzY29wZSBvZmZzZXQKKyAgICAgICAgICAgICAgICAgICAgcHJvZmls
ZSAvLyBwcm9maWxlCisgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgIH0pOworICAgICAg
ICB9KTsKKworICAgICAgICAvLyBDbGlwIHRoZSB1bm5lY2Vzc2FyeSBieXRlY29kZXMuCisgICAg
ICAgIHJld3JpdGVyLnJlbW92ZUJ5dGVjb2RlKGRhdGEucG9pbnQpOworICAgIH0KKworICAgIHJl
d3JpdGVyLmV4ZWN1dGUoKTsKK30KKwordm9pZCBwZXJmb3JtR2VuZXJhdG9yaWZpY2F0aW9uKFVu
bGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFVubGlua2VkQ29kZUJsb2NrOjpVbnBhY2tlZElu
c3RydWN0aW9ucyYgaW5zdHJ1Y3Rpb25zLCBTeW1ib2xUYWJsZSogZ2VuZXJhdG9yRnJhbWVTeW1i
b2xUYWJsZSwgaW50IGdlbmVyYXRvckZyYW1lU3ltYm9sVGFibGVJbmRleCkKK3sKKyAgICBCeXRl
Y29kZUdlbmVyYXRvcmlmaWNhdGlvbiBwYXNzKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb25zLCBnZW5l
cmF0b3JGcmFtZVN5bWJvbFRhYmxlLCBnZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlSW5kZXgpOwor
ICAgIHBhc3MucnVuKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRp
b24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5jN2I2MTM3NDYwODZhZTM0YzRjMGEyMmJmNGU2N2M3NmU2Y2ZkNGU5
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVj
b2RlR2VuZXJhdG9yaWZpY2F0aW9uLmgKQEAgLTAsMCArMSwzNyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNiBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisgKiBDb3B5
cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIlVubGlua2VkQ29kZUJsb2NrLmgiCisKK25hbWVz
cGFjZSBKU0MgeworCitjbGFzcyBTeW1ib2xUYWJsZTsKKwordm9pZCBwZXJmb3JtR2VuZXJhdG9y
aWZpY2F0aW9uKFVubGlua2VkQ29kZUJsb2NrKiwgVW5saW5rZWRDb2RlQmxvY2s6OlVucGFja2Vk
SW5zdHJ1Y3Rpb25zJiwgU3ltYm9sVGFibGUqIGdlbmVyYXRvckZyYW1lU3ltYm9sVGFibGUsIGlu
dCBnZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlSW5kZXgpOworCit9IC8vIG5hbWVzcGFjZSBKU0MK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUdyYXBo
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVHcmFwaC5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjNiYWE3ZTg1ZWZhMDc0MTZhMWQ1ZmY4MjEyOGZiZGM2NWI0YzA0NGEKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVHcmFwaC5o
CkBAIC0wLDAgKzEsMTI1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IFl1c3VrZSBTdXp1
a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5j
bHVkZSAiQnl0ZWNvZGVCYXNpY0Jsb2NrLmgiCisjaW5jbHVkZSA8d3RmL0luZGV4ZWRDb250YWlu
ZXJJdGVyYXRvci5oPgorI2luY2x1ZGUgPHd0Zi9JdGVyYXRvclJhbmdlLmg+CisjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgQnl0ZWNvZGVCYXNpY0Js
b2NrOworCit0ZW1wbGF0ZTx0eXBlbmFtZSBCbG9jaz4KK2NsYXNzIEJ5dGVjb2RlR3JhcGggewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEJ5
dGVjb2RlR3JhcGgpOworcHVibGljOgorICAgIHR5cGVkZWYgQmxvY2sgQ29kZUJsb2NrOworICAg
IHR5cGVkZWYgdHlwZW5hbWUgQmxvY2s6Okluc3RydWN0aW9uIEluc3RydWN0aW9uOworICAgIHR5
cGVkZWYgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiBCYXNpY0Js
b2Nrc1ZlY3RvcjsKKworICAgIHR5cGVkZWYgV1RGOjpJbmRleGVkQ29udGFpbmVySXRlcmF0b3I8
Qnl0ZWNvZGVHcmFwaDxCbG9jaz4+IGl0ZXJhdG9yOworCisgICAgaW5saW5lIEJ5dGVjb2RlR3Jh
cGgoQmxvY2sqLCB0eXBlbmFtZSBCbG9jazo6VW5wYWNrZWRJbnN0cnVjdGlvbnMmKTsKKworICAg
IEJsb2NrKiBjb2RlQmxvY2soKSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9jazsgfQorCisgICAg
dHlwZW5hbWUgQmxvY2s6OlVucGFja2VkSW5zdHJ1Y3Rpb25zJiBpbnN0cnVjdGlvbnMoKSB7IHJl
dHVybiBtX2luc3RydWN0aW9uczsgfQorCisgICAgV1RGOjpJdGVyYXRvclJhbmdlPEJhc2ljQmxv
Y2tzVmVjdG9yOjpyZXZlcnNlX2l0ZXJhdG9yPiBiYXNpY0Jsb2Nrc0luUmV2ZXJzZU9yZGVyKCkK
KyAgICB7CisgICAgICAgIHJldHVybiBXVEY6Om1ha2VJdGVyYXRvclJhbmdlKG1fYmFzaWNCbG9j
a3MucmJlZ2luKCksIG1fYmFzaWNCbG9ja3MucmVuZCgpKTsKKyAgICB9CisKKyAgICBzdGF0aWMg
Ym9vbCBibG9ja0NvbnRhaW5zQnl0ZWNvZGVPZmZzZXQoQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9j
aywgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpCisgICAgeworICAgICAgICB1bnNpZ25lZCBsZWFk
ZXJPZmZzZXQgPSBibG9jay0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKTsKKyAgICAgICAgcmV0dXJu
IGJ5dGVjb2RlT2Zmc2V0ID49IGxlYWRlck9mZnNldCAmJiBieXRlY29kZU9mZnNldCA8IGxlYWRl
ck9mZnNldCArIGJsb2NrLT50b3RhbEJ5dGVjb2RlTGVuZ3RoKCk7CisgICAgfQorCisgICAgQnl0
ZWNvZGVCYXNpY0Jsb2NrKiBmaW5kQmFzaWNCbG9ja0ZvckJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVk
IGJ5dGVjb2RlT2Zmc2V0KQorICAgIHsKKyAgICAgICAgLyoKKyAgICAgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBtX2Jhc2ljQmxvY2tzLnNpemUoKTsgaSsrKSB7CisgICAgICAgICAg
ICAgICAgaWYgKGJsb2NrQ29udGFpbnNCeXRlY29kZU9mZnNldChtX2Jhc2ljQmxvY2tzW2ldLmdl
dCgpLCBieXRlY29kZU9mZnNldCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBtX2Jhc2lj
QmxvY2tzW2ldLmdldCgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIDA7Cisg
ICAgICAgICovCisKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4q
IGJhc2ljQmxvY2sgPSBhcHByb3hpbWF0ZUJpbmFyeVNlYXJjaDxzdGQ6OnVuaXF1ZV9wdHI8Qnl0
ZWNvZGVCYXNpY0Jsb2NrPiwgdW5zaWduZWQ+KG1fYmFzaWNCbG9ja3MsIG1fYmFzaWNCbG9ja3Mu
c2l6ZSgpLCBieXRlY29kZU9mZnNldCwgW10gKHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2lj
QmxvY2s+KiBiYXNpY0Jsb2NrKSB7IHJldHVybiAoKmJhc2ljQmxvY2spLT5sZWFkZXJCeXRlY29k
ZU9mZnNldCgpOyB9KTsKKyAgICAgICAgLy8gV2UgZm91bmQgdGhlIGJsb2NrIHdlIHdlcmUgbG9v
a2luZyBmb3IuCisgICAgICAgIGlmIChibG9ja0NvbnRhaW5zQnl0ZWNvZGVPZmZzZXQoKCpiYXNp
Y0Jsb2NrKS5nZXQoKSwgYnl0ZWNvZGVPZmZzZXQpKQorICAgICAgICAgICAgcmV0dXJuICgqYmFz
aWNCbG9jaykuZ2V0KCk7CisKKyAgICAgICAgLy8gQmFzaWMgYmxvY2sgaXMgdG8gdGhlIGxlZnQg
b2YgdGhlIHJldHVybmVkIGJsb2NrLgorICAgICAgICBpZiAoYnl0ZWNvZGVPZmZzZXQgPCAoKmJh
c2ljQmxvY2spLT5sZWFkZXJCeXRlY29kZU9mZnNldCgpKSB7CisgICAgICAgICAgICBBU1NFUlQo
YmFzaWNCbG9jayAtIDEgPj0gbV9iYXNpY0Jsb2Nrcy5kYXRhKCkpOworICAgICAgICAgICAgQVNT
RVJUKGJsb2NrQ29udGFpbnNCeXRlY29kZU9mZnNldChiYXNpY0Jsb2NrWy0xXS5nZXQoKSwgYnl0
ZWNvZGVPZmZzZXQpKTsKKyAgICAgICAgICAgIHJldHVybiBiYXNpY0Jsb2NrWy0xXS5nZXQoKTsK
KyAgICAgICAgfQorCisgICAgICAgIC8vIEJhc2ljIGJsb2NrIGlzIHRvIHRoZSByaWdodCBvZiB0
aGUgcmV0dXJuZWQgYmxvY2suCisgICAgICAgIEFTU0VSVCgmYmFzaWNCbG9ja1sxXSA8PSAmbV9i
YXNpY0Jsb2Nrcy5sYXN0KCkpOworICAgICAgICBBU1NFUlQoYmxvY2tDb250YWluc0J5dGVjb2Rl
T2Zmc2V0KGJhc2ljQmxvY2tbMV0uZ2V0KCksIGJ5dGVjb2RlT2Zmc2V0KSk7CisgICAgICAgIHJl
dHVybiBiYXNpY0Jsb2NrWzFdLmdldCgpOworICAgIH0KKworICAgIEJ5dGVjb2RlQmFzaWNCbG9j
ayogZmluZEJhc2ljQmxvY2tXaXRoTGVhZGVyT2Zmc2V0KHVuc2lnbmVkIGxlYWRlck9mZnNldCkK
KyAgICB7CisgICAgICAgIHJldHVybiAoKnRyeUJpbmFyeVNlYXJjaDxzdGQ6OnVuaXF1ZV9wdHI8
Qnl0ZWNvZGVCYXNpY0Jsb2NrPiwgdW5zaWduZWQ+KG1fYmFzaWNCbG9ja3MsIG1fYmFzaWNCbG9j
a3Muc2l6ZSgpLCBsZWFkZXJPZmZzZXQsIFtdIChzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNp
Y0Jsb2NrPiogYmFzaWNCbG9jaykgeyByZXR1cm4gKCpiYXNpY0Jsb2NrKS0+bGVhZGVyQnl0ZWNv
ZGVPZmZzZXQoKTsgfSkpLmdldCgpOworICAgIH0KKworICAgIHVuc2lnbmVkIHNpemUoKSBjb25z
dCB7IHJldHVybiBtX2Jhc2ljQmxvY2tzLnNpemUoKTsgfQorICAgIEJ5dGVjb2RlQmFzaWNCbG9j
ayogYXQodW5zaWduZWQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIG1fYmFzaWNCbG9ja3NbaW5kZXhd
LmdldCgpOyB9CisgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBvcGVyYXRvcltdKHVuc2lnbmVkIGlu
ZGV4KSBjb25zdCB7IHJldHVybiBhdChpbmRleCk7IH0KKworICAgIGl0ZXJhdG9yIGJlZ2luKCkg
Y29uc3QgeyByZXR1cm4gaXRlcmF0b3IoKnRoaXMsIDApOyB9CisgICAgaXRlcmF0b3IgZW5kKCkg
Y29uc3QgeyByZXR1cm4gaXRlcmF0b3IoKnRoaXMsIHNpemUoKSk7IH0KKyAgICBCeXRlY29kZUJh
c2ljQmxvY2sqIGZpcnN0KCkgeyByZXR1cm4gYXQoMCk7IH0KKyAgICBCeXRlY29kZUJhc2ljQmxv
Y2sqIGxhc3QoKSB7IHJldHVybiBhdChzaXplKCkgLSAxKTsgfQorCitwcml2YXRlOgorICAgIEJs
b2NrKiBtX2NvZGVCbG9jazsKKyAgICBCYXNpY0Jsb2Nrc1ZlY3RvciBtX2Jhc2ljQmxvY2tzOwor
ICAgIHR5cGVuYW1lIEJsb2NrOjpVbnBhY2tlZEluc3RydWN0aW9ucyYgbV9pbnN0cnVjdGlvbnM7
Cit9OworCisKK3RlbXBsYXRlPHR5cGVuYW1lIEJsb2NrPgorQnl0ZWNvZGVHcmFwaDxCbG9jaz46
OkJ5dGVjb2RlR3JhcGgoQmxvY2sqIGNvZGVCbG9jaywgdHlwZW5hbWUgQmxvY2s6OlVucGFja2Vk
SW5zdHJ1Y3Rpb25zJiBpbnN0cnVjdGlvbnMpCisgICAgOiBtX2NvZGVCbG9jayhjb2RlQmxvY2sp
CisgICAgLCBtX2luc3RydWN0aW9ucyhpbnN0cnVjdGlvbnMpCit7CisgICAgQVNTRVJUKG1fY29k
ZUJsb2NrKTsKKyAgICBCeXRlY29kZUJhc2ljQmxvY2s6OmNvbXB1dGVCeXRlY29kZUJhc2ljQmxv
Y2tzKG1fY29kZUJsb2NrLCBpbnN0cnVjdGlvbnMuYmVnaW4oKSwgaW5zdHJ1Y3Rpb25zLnNpemUo
KSwgbV9iYXNpY0Jsb2Nrcyk7CisgICAgQVNTRVJUKG1fYmFzaWNCbG9ja3Muc2l6ZSgpKTsKK30K
KworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVMaXN0Lmpzb24KaW5kZXggZTM4MDI1ZDVhZmNmNjljZTQ4MGFlOTI4OThjOTM4
ZTkzMTI3ODhkOS4uY2U2MGRhNGEyNmJjMzQ3N2ZkNDcxOWIwYTRiMWZlY2U1ODljNjE5ZCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29u
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgpA
QCAtMTQzLDggKzE0Myw3IEBACiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9hc3NlcnQiLCAi
bGVuZ3RoIiA6IDMgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2NyZWF0ZV9yZXN0Iiwg
Imxlbmd0aCI6IDQgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2dldF9yZXN0X2xlbmd0
aCIsICJsZW5ndGgiOiAzIH0sCi0gICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9zYXZlIiwgImxl
bmd0aCIgOiA0IH0sCi0gICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9yZXN1bWUiLCAibGVuZ3Ro
IiA6IDMgfSwKKyAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX3lpZWxkIiwgImxlbmd0aCIgOiA0
IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF93YXRjaGRvZyIsICJsZW5ndGgiIDogMSB9
LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfbG9nX3NoYWRvd19jaGlja2VuX3Byb2xvZ3Vl
IiwgImxlbmd0aCIgOiAyfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2xvZ19zaGFkb3df
Y2hpY2tlbl90YWlsIiwgImxlbmd0aCIgOiAzfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNwcAppbmRleCAx
N2U4MmEyZmJiYTAxNTA0M2U5OWQzNGVkMjU2OTM3MmIzNmY3YTg1Li5hMTU0MGYxZGJiNDNlOTJl
YzdhNGQ3OWJjMzRjOTA3ZGI3YzI2ZjNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNwcApAQCAtMzEs
MTk4ICszMSwzNiBAQAogI2luY2x1ZGUgIkJ5dGVjb2RlVXNlRGVmLmgiCiAjaW5jbHVkZSAiQ29k
ZUJsb2NrLmgiCiAjaW5jbHVkZSAiRnVsbEJ5dGVjb2RlTGl2ZW5lc3MuaCIKLSNpbmNsdWRlICJQ
cmVjaXNlSnVtcFRhcmdldHMuaCIKKyNpbmNsdWRlICJJbnRlcnByZXRlcklubGluZXMuaCIKIAog
bmFtZXNwYWNlIEpTQyB7CiAKIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Qnl0ZWNvZGVMaXZl
bmVzc0FuYWx5c2lzKENvZGVCbG9jayogY29kZUJsb2NrKQotICAgIDogbV9jb2RlQmxvY2soY29k
ZUJsb2NrKQorICAgIDogbV9ncmFwaChjb2RlQmxvY2ssIGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25z
KCkpCiB7Ci0gICAgQVNTRVJUKG1fY29kZUJsb2NrKTsKICAgICBjb21wdXRlKCk7CiB9CiAKLXN0
YXRpYyBib29sIGlzVmFsaWRSZWdpc3RlckZvckxpdmVuZXNzKENvZGVCbG9jayogY29kZUJsb2Nr
LCBpbnQgb3BlcmFuZCkKK3RlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+Cit2b2lkIEJ5dGVjb2Rl
TGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sq
IGNvZGVCbG9jaywgT3Bjb2RlSUQgb3Bjb2RlSUQsIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwg
RmFzdEJpdFZlY3RvciYsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiB7Ci0gICAgaWYgKGNvZGVC
bG9jay0+aXNDb25zdGFudFJlZ2lzdGVySW5kZXgob3BlcmFuZCkpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICAKLSAgICBWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZyhvcGVyYW5kKTsKLSAg
ICByZXR1cm4gdmlydHVhbFJlZy5pc0xvY2FsKCk7Ci19Ci0KLXN0YXRpYyB1bnNpZ25lZCBnZXRM
ZWFkZXJPZmZzZXRGb3JCYXNpY0Jsb2NrKHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxv
Y2s+KiBiYXNpY0Jsb2NrKQotewotICAgIHJldHVybiAoKmJhc2ljQmxvY2spLT5sZWFkZXJCeXRl
Y29kZU9mZnNldCgpOwotfQotCi1zdGF0aWMgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBmaW5kQmFzaWNC
bG9ja1dpdGhMZWFkZXJPZmZzZXQoVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2lj
QmxvY2s+PiYgYmFzaWNCbG9ja3MsIHVuc2lnbmVkIGxlYWRlck9mZnNldCkKLXsKLSAgICByZXR1
cm4gKCp0cnlCaW5hcnlTZWFyY2g8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4s
IHVuc2lnbmVkPihiYXNpY0Jsb2NrcywgYmFzaWNCbG9ja3Muc2l6ZSgpLCBsZWFkZXJPZmZzZXQs
IGdldExlYWRlck9mZnNldEZvckJhc2ljQmxvY2spKS5nZXQoKTsKLX0KLQotc3RhdGljIGJvb2wg
YmxvY2tDb250YWluc0J5dGVjb2RlT2Zmc2V0KEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2ssIHVu
c2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KQotewotICAgIHVuc2lnbmVkIGxlYWRlck9mZnNldCA9IGJs
b2NrLT5sZWFkZXJCeXRlY29kZU9mZnNldCgpOwotICAgIHJldHVybiBieXRlY29kZU9mZnNldCA+
PSBsZWFkZXJPZmZzZXQgJiYgYnl0ZWNvZGVPZmZzZXQgPCBsZWFkZXJPZmZzZXQgKyBibG9jay0+
dG90YWxCeXRlY29kZUxlbmd0aCgpOwotfQotCi1zdGF0aWMgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBm
aW5kQmFzaWNCbG9ja0ZvckJ5dGVjb2RlT2Zmc2V0KFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0
ZWNvZGVCYXNpY0Jsb2NrPj4mIGJhc2ljQmxvY2tzLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCkK
LXsKLS8qCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGJhc2ljQmxvY2tzLnNpemUoKTsg
aSsrKSB7Ci0gICAgICAgIGlmIChibG9ja0NvbnRhaW5zQnl0ZWNvZGVPZmZzZXQoYmFzaWNCbG9j
a3NbaV0uZ2V0KCksIGJ5dGVjb2RlT2Zmc2V0KSkKLSAgICAgICAgICAgIHJldHVybiBiYXNpY0Js
b2Nrc1tpXS5nZXQoKTsKLSAgICB9Ci0gICAgcmV0dXJuIDA7Ci0qLwotICAgIHN0ZDo6dW5pcXVl
X3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+KiBiYXNpY0Jsb2NrID0gYXBwcm94aW1hdGVCaW5hcnlT
ZWFyY2g8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4sIHVuc2lnbmVkPigKLSAg
ICAgICAgYmFzaWNCbG9ja3MsIGJhc2ljQmxvY2tzLnNpemUoKSwgYnl0ZWNvZGVPZmZzZXQsIGdl
dExlYWRlck9mZnNldEZvckJhc2ljQmxvY2spOwotICAgIC8vIFdlIGZvdW5kIHRoZSBibG9jayB3
ZSB3ZXJlIGxvb2tpbmcgZm9yLgotICAgIGlmIChibG9ja0NvbnRhaW5zQnl0ZWNvZGVPZmZzZXQo
KCpiYXNpY0Jsb2NrKS5nZXQoKSwgYnl0ZWNvZGVPZmZzZXQpKQotICAgICAgICByZXR1cm4gKCpi
YXNpY0Jsb2NrKS5nZXQoKTsKLQotICAgIC8vIEJhc2ljIGJsb2NrIGlzIHRvIHRoZSBsZWZ0IG9m
IHRoZSByZXR1cm5lZCBibG9jay4KLSAgICBpZiAoYnl0ZWNvZGVPZmZzZXQgPCAoKmJhc2ljQmxv
Y2spLT5sZWFkZXJCeXRlY29kZU9mZnNldCgpKSB7Ci0gICAgICAgIEFTU0VSVChiYXNpY0Jsb2Nr
IC0gMSA+PSBiYXNpY0Jsb2Nrcy5kYXRhKCkpOwotICAgICAgICBBU1NFUlQoYmxvY2tDb250YWlu
c0J5dGVjb2RlT2Zmc2V0KGJhc2ljQmxvY2tbLTFdLmdldCgpLCBieXRlY29kZU9mZnNldCkpOwot
ICAgICAgICByZXR1cm4gYmFzaWNCbG9ja1stMV0uZ2V0KCk7Ci0gICAgfQotCi0gICAgLy8gQmFz
aWMgYmxvY2sgaXMgdG8gdGhlIHJpZ2h0IG9mIHRoZSByZXR1cm5lZCBibG9jay4KLSAgICBBU1NF
UlQoJmJhc2ljQmxvY2tbMV0gPD0gJmJhc2ljQmxvY2tzLmxhc3QoKSk7Ci0gICAgQVNTRVJUKGJs
b2NrQ29udGFpbnNCeXRlY29kZU9mZnNldChiYXNpY0Jsb2NrWzFdLmdldCgpLCBieXRlY29kZU9m
ZnNldCkpOwotICAgIHJldHVybiBiYXNpY0Jsb2NrWzFdLmdldCgpOwotfQotCi0vLyBTaW1wbGlm
aWVkIGludGVyZmFjZSB0byBieXRlY29kZSB1c2UvZGVmLCB3aGljaCBkZXRlcm1pbmVzIGRlZnMg
Zmlyc3QgYW5kIHRoZW4gdXNlcywgYW5kIGluY2x1ZGVzCi0vLyBleGNlcHRpb24gaGFuZGxlcnMg
aW4gdGhlIHVzZXMuCi10ZW1wbGF0ZTx0eXBlbmFtZSBVc2VGdW5jdG9yLCB0eXBlbmFtZSBEZWZG
dW5jdG9yPgotc3RhdGljIHZvaWQgc3RlcE92ZXJJbnN0cnVjdGlvbihDb2RlQmxvY2sqIGNvZGVC
bG9jaywgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaywgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxC
eXRlY29kZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9ja3MsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0
LCBjb25zdCBVc2VGdW5jdG9yJiB1c2UsIGNvbnN0IERlZkZ1bmN0b3ImIGRlZikKLXsKLSAgICAv
LyBUaGlzIGFic3RyYWN0bHkgZXhlY3V0ZSB0aGUgaW5zdHJ1Y3Rpb24gaW4gcmV2ZXJzZS4gSW5z
dHJ1Y3Rpb25zIGxvZ2ljYWxseSBmaXJzdCB1c2Ugb3BlcmFuZHMgYW5kCi0gICAgLy8gdGhlbiBk
ZWZpbmUgb3BlcmFuZHMuIFRoaXMgbG9naWNhbCBvcmRlcmluZyBpcyBuZWNlc3NhcnkgZm9yIG9w
ZXJhdGlvbnMgdGhhdCB1c2UgYW5kIGRlZiB0aGUgc2FtZQotICAgIC8vIG9wZXJhbmQsIGxpa2U6
Ci0gICAgLy8KLSAgICAvLyAgICAgb3BfYWRkIGxvYzEsIGxvYzEsIGxvYzIKLSAgICAvLwotICAg
IC8vIFRoZSB1c2Ugb2YgbG9jMSBoYXBwZW5zIGJlZm9yZSB0aGUgZGVmIG9mIGxvYzEuIFRoYXQn
cyBhIHNlbWFudGljIHJlcXVpcmVtZW50IHNpbmNlIHRoZSBhZGQKLSAgICAvLyBvcGVyYXRpb24g
Y2Fubm90IHRyYXZlbCBmb3J3YXJkIGluIHRpbWUgdG8gcmVhZCB0aGUgdmFsdWUgdGhhdCBpdCB3
aWxsIHByb2R1Y2UgYWZ0ZXIgcmVhZGluZyB0aGF0Ci0gICAgLy8gdmFsdWUuIFNpbmNlIHdlIGFy
ZSBleGVjdXRpbmcgaW4gcmV2ZXJzZSwgdGhpcyBtZWFucyB0aGF0IHdlIG11c3QgZG8gZGVmcyBi
ZWZvcmUgdXNlcyAocmV2ZXJzZSBvZgotICAgIC8vIHVzZXMgYmVmb3JlIGRlZnMpLgotICAgIC8v
Ci0gICAgLy8gU2luY2UgdGhpcyBpcyBhIGxpdmVuZXNzIGFuYWx5c2lzLCB0aGlzIG9yZGVyaW5n
IGVuZHMgdXAgYmVpbmcgcGFydGljdWxhcmx5IGltcG9ydGFudDogaWYgd2UgZGlkCi0gICAgLy8g
dXNlcyBiZWZvcmUgZGVmcywgdGhlbiB0aGUgYWRkIG9wZXJhdGlvbiBhYm92ZSB3b3VsZCBhcHBl
YXIgdG8gbm90IGhhdmUgbG9jMSBsaXZlLCBzaW5jZSB3ZSdkCi0gICAgLy8gZmlyc3QgYWRkIGl0
IHRvIHRoZSBvdXQgc2V0ICh0aGUgdXNlKSwgYW5kIHRoZW4gd2UnZCByZW1vdmUgaXQgKHRoZSBk
ZWYpLgotICAgIAotICAgIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoCi0gICAgICAgIGNv
ZGVCbG9jaywgYmxvY2ssIGJ5dGVjb2RlT2Zmc2V0LAotICAgICAgICBbJl0gKENvZGVCbG9jayog
Y29kZUJsb2NrLCBJbnN0cnVjdGlvbiosIE9wY29kZUlELCBpbnQgb3BlcmFuZCkgewotICAgICAg
ICAgICAgaWYgKGlzVmFsaWRSZWdpc3RlckZvckxpdmVuZXNzKGNvZGVCbG9jaywgb3BlcmFuZCkp
Ci0gICAgICAgICAgICAgICAgZGVmKFZpcnR1YWxSZWdpc3RlcihvcGVyYW5kKS50b0xvY2FsKCkp
OwotICAgICAgICB9KTsKLQotICAgIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoCi0gICAg
ICAgIGNvZGVCbG9jaywgYmxvY2ssIGJ5dGVjb2RlT2Zmc2V0LAotICAgICAgICBbJl0gKENvZGVC
bG9jayogY29kZUJsb2NrLCBJbnN0cnVjdGlvbiosIE9wY29kZUlELCBpbnQgb3BlcmFuZCkgewot
ICAgICAgICAgICAgaWYgKGlzVmFsaWRSZWdpc3RlckZvckxpdmVuZXNzKGNvZGVCbG9jaywgb3Bl
cmFuZCkpCi0gICAgICAgICAgICAgICAgdXNlKFZpcnR1YWxSZWdpc3RlcihvcGVyYW5kKS50b0xv
Y2FsKCkpOwotICAgICAgICB9KTsKLQotICAgIC8vIElmIHdlIGhhdmUgYW4gZXhjZXB0aW9uIGhh
bmRsZXIsIHdlIHdhbnQgdGhlIGxpdmUtaW4gdmFyaWFibGVzIG9mIHRoZSAKLSAgICAvLyBleGNl
cHRpb24gaGFuZGxlciBibG9jayB0byBiZSBpbmNsdWRlZCBpbiB0aGUgbGl2ZS1pbiBvZiB0aGlz
IHBhcnRpY3VsYXIgYnl0ZWNvZGUuCi0gICAgaWYgKEhhbmRsZXJJbmZvKiBoYW5kbGVyID0gY29k
ZUJsb2NrLT5oYW5kbGVyRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpKSB7Ci0gICAg
ICAgIC8vIEZJWE1FOiBUaGlzIHJlc3VtZSBjaGVjayBzaG91bGQgbm90IGJlIG5lZWRlZC4KLSAg
ICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1OTI4MQot
ICAgICAgICBJbnRlcnByZXRlciogaW50ZXJwcmV0ZXIgPSBjb2RlQmxvY2stPnZtKCktPmludGVy
cHJldGVyOwotICAgICAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4gPSBjb2RlQmxv
Y2stPmluc3RydWN0aW9ucygpLmJlZ2luKCk7Ci0gICAgICAgIEluc3RydWN0aW9uKiBpbnN0cnVj
dGlvbiA9ICZpbnN0cnVjdGlvbnNCZWdpbltieXRlY29kZU9mZnNldF07Ci0gICAgICAgIE9wY29k
ZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGluc3RydWN0aW9uLT51Lm9w
Y29kZSk7Ci0gICAgICAgIGlmIChvcGNvZGVJRCAhPSBvcF9yZXN1bWUpIHsKLSAgICAgICAgICAg
IEJ5dGVjb2RlQmFzaWNCbG9jayogaGFuZGxlckJsb2NrID0gZmluZEJhc2ljQmxvY2tXaXRoTGVh
ZGVyT2Zmc2V0KGJhc2ljQmxvY2tzLCBoYW5kbGVyLT50YXJnZXQpOwotICAgICAgICAgICAgQVNT
RVJUKGhhbmRsZXJCbG9jayk7Ci0gICAgICAgICAgICBoYW5kbGVyQmxvY2stPmluKCkuZm9yRWFj
aFNldEJpdCh1c2UpOwotICAgICAgICB9Ci0gICAgfQotfQotCi1zdGF0aWMgdm9pZCBzdGVwT3Zl
ckluc3RydWN0aW9uKENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJs
b2NrLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+JiBiYXNpY0Js
b2NrcywgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIEZhc3RCaXRWZWN0b3ImIG91dCkKLXsKLSAg
ICBzdGVwT3Zlckluc3RydWN0aW9uKAotICAgICAgICBjb2RlQmxvY2ssIGJsb2NrLCBiYXNpY0Js
b2NrcywgYnl0ZWNvZGVPZmZzZXQsCi0gICAgICAgIFsmXSAodW5zaWduZWQgYml0SW5kZXgpIHsK
LSAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIHVzZSBmdW5jdG9yLCBzbyB3ZSBzZXQgdGhlIGJp
dC4KLSAgICAgICAgICAgIG91dC5zZXQoYml0SW5kZXgpOwotICAgICAgICB9LAotICAgICAgICBb
Jl0gKHVuc2lnbmVkIGJpdEluZGV4KSB7Ci0gICAgICAgICAgICAvLyBUaGlzIGlzIHRoZSBkZWYg
ZnVuY3Rvciwgc28gd2UgY2xlYXIgdGhlIGJpdC4KLSAgICAgICAgICAgIG91dC5jbGVhcihiaXRJ
bmRleCk7Ci0gICAgICAgIH0pOworICAgIEpTQzo6Y29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNl
dChjb2RlQmxvY2ssIG9wY29kZUlELCBpbnN0cnVjdGlvbiwgZnVuY3Rvcik7CiB9CiAKLXN0YXRp
YyB2b2lkIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2ssIFZlY3RvcjxzdGQ6OnVuaXF1ZV9w
dHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mIGJhc2ljQmxvY2tzLCB1bnNpZ25lZCB0YXJnZXRPZmZz
ZXQsIEZhc3RCaXRWZWN0b3ImIHJlc3VsdCkKK3RlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+Cit2
b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNl
dChDb2RlQmxvY2sqIGNvZGVCbG9jaywgT3Bjb2RlSUQgb3Bjb2RlSUQsIEluc3RydWN0aW9uKiBp
bnN0cnVjdGlvbiwgRmFzdEJpdFZlY3RvciYsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiB7Ci0g
ICAgQVNTRVJUKCFibG9jay0+aXNFeGl0QmxvY2soKSk7Ci0gICAgQVNTRVJUKCFibG9jay0+aXNF
bnRyeUJsb2NrKCkpOwotCi0gICAgRmFzdEJpdFZlY3RvciBvdXQgPSBibG9jay0+b3V0KCk7Ci0K
LSAgICBmb3IgKGludCBpID0gYmxvY2stPmJ5dGVjb2RlT2Zmc2V0cygpLnNpemUoKSAtIDE7IGkg
Pj0gMDsgaS0tKSB7Ci0gICAgICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0ID0gYmxvY2stPmJ5
dGVjb2RlT2Zmc2V0cygpW2ldOwotICAgICAgICBpZiAodGFyZ2V0T2Zmc2V0ID4gYnl0ZWNvZGVP
ZmZzZXQpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgCi0gICAgICAgIHN0ZXBPdmVySW5z
dHJ1Y3Rpb24oY29kZUJsb2NrLCBibG9jaywgYmFzaWNCbG9ja3MsIGJ5dGVjb2RlT2Zmc2V0LCBv
dXQpOwotICAgIH0KLQotICAgIHJlc3VsdC5zZXQob3V0KTsKLX0KLQotc3RhdGljIHZvaWQgY29t
cHV0ZUxvY2FsTGl2ZW5lc3NGb3JCbG9jayhDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVC
YXNpY0Jsb2NrKiBibG9jaywgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxv
Y2s+PiYgYmFzaWNCbG9ja3MpCi17Ci0gICAgaWYgKGJsb2NrLT5pc0V4aXRCbG9jaygpIHx8IGJs
b2NrLT5pc0VudHJ5QmxvY2soKSkKLSAgICAgICAgcmV0dXJuOwotICAgIGNvbXB1dGVMb2NhbExp
dmVuZXNzRm9yQnl0ZWNvZGVPZmZzZXQoY29kZUJsb2NrLCBibG9jaywgYmFzaWNCbG9ja3MsIGJs
b2NrLT5sZWFkZXJCeXRlY29kZU9mZnNldCgpLCBibG9jay0+aW4oKSk7Ci19Ci0KLXZvaWQgQnl0
ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpydW5MaXZlbmVzc0ZpeHBvaW50KCkKLXsKLSAgICBVbmxp
bmtlZENvZGVCbG9jayogdW5saW5rZWRDb2RlQmxvY2sgPSBtX2NvZGVCbG9jay0+dW5saW5rZWRD
b2RlQmxvY2soKTsKLSAgICB1bnNpZ25lZCBudW1iZXJPZlZhcmlhYmxlcyA9IHVubGlua2VkQ29k
ZUJsb2NrLT5tX251bUNhbGxlZUxvY2FsczsKLQotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBtX2Jhc2ljQmxvY2tzLnNpemUoKTsgaSsrKSB7Ci0gICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9j
ayogYmxvY2sgPSBtX2Jhc2ljQmxvY2tzW2ldLmdldCgpOwotICAgICAgICBibG9jay0+aW4oKS5y
ZXNpemUobnVtYmVyT2ZWYXJpYWJsZXMpOwotICAgICAgICBibG9jay0+b3V0KCkucmVzaXplKG51
bWJlck9mVmFyaWFibGVzKTsKLSAgICB9Ci0KLSAgICBib29sIGNoYW5nZWQ7Ci0gICAgbV9iYXNp
Y0Jsb2Nrcy5sYXN0KCktPmluKCkuY2xlYXJBbGwoKTsKLSAgICBtX2Jhc2ljQmxvY2tzLmxhc3Qo
KS0+b3V0KCkuY2xlYXJBbGwoKTsKLSAgICBGYXN0Qml0VmVjdG9yIG5ld091dDsKLSAgICBuZXdP
dXQucmVzaXplKG1fYmFzaWNCbG9ja3MubGFzdCgpLT5vdXQoKS5udW1CaXRzKCkpOwotICAgIGRv
IHsKLSAgICAgICAgY2hhbmdlZCA9IGZhbHNlOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBt
X2Jhc2ljQmxvY2tzLnNpemUoKSAtIDE7IGktLTspIHsKLSAgICAgICAgICAgIEJ5dGVjb2RlQmFz
aWNCbG9jayogYmxvY2sgPSBtX2Jhc2ljQmxvY2tzW2ldLmdldCgpOwotICAgICAgICAgICAgbmV3
T3V0LmNsZWFyQWxsKCk7Ci0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSAwOyBqIDwgYmxv
Y2stPnN1Y2Nlc3NvcnMoKS5zaXplKCk7IGorKykKLSAgICAgICAgICAgICAgICBuZXdPdXQubWVy
Z2UoYmxvY2stPnN1Y2Nlc3NvcnMoKVtqXS0+aW4oKSk7Ci0gICAgICAgICAgICBib29sIG91dERp
ZENoYW5nZSA9IGJsb2NrLT5vdXQoKS5zZXRBbmRDaGVjayhuZXdPdXQpOwotICAgICAgICAgICAg
Y29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCbG9jayhtX2NvZGVCbG9jaywgYmxvY2ssIG1fYmFzaWNC
bG9ja3MpOwotICAgICAgICAgICAgY2hhbmdlZCB8PSBvdXREaWRDaGFuZ2U7Ci0gICAgICAgIH0K
LSAgICB9IHdoaWxlIChjaGFuZ2VkKTsKKyAgICBKU0M6OmNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVP
ZmZzZXQoY29kZUJsb2NrLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb24sIGZ1bmN0b3IpOwogfQogCiB2
b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Z2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29kZU9m
ZnNldCh1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgRmFzdEJpdFZlY3RvciYgcmVzdWx0KQogewot
ICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2sgPSBmaW5kQmFzaWNCbG9ja0ZvckJ5dGVjb2Rl
T2Zmc2V0KG1fYmFzaWNCbG9ja3MsIGJ5dGVjb2RlT2Zmc2V0KTsKKyAgICBCeXRlY29kZUJhc2lj
QmxvY2sqIGJsb2NrID0gbV9ncmFwaC5maW5kQmFzaWNCbG9ja0ZvckJ5dGVjb2RlT2Zmc2V0KGJ5
dGVjb2RlT2Zmc2V0KTsKICAgICBBU1NFUlQoYmxvY2spOwogICAgIEFTU0VSVCghYmxvY2stPmlz
RW50cnlCbG9jaygpKTsKICAgICBBU1NFUlQoIWJsb2NrLT5pc0V4aXRCbG9jaygpKTsKICAgICBy
ZXN1bHQucmVzaXplKGJsb2NrLT5vdXQoKS5udW1CaXRzKCkpOwotICAgIGNvbXB1dGVMb2NhbExp
dmVuZXNzRm9yQnl0ZWNvZGVPZmZzZXQobV9jb2RlQmxvY2ssIGJsb2NrLCBtX2Jhc2ljQmxvY2tz
LCBieXRlY29kZU9mZnNldCwgcmVzdWx0KTsKKyAgICBjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJ5
dGVjb2RlT2Zmc2V0KG1fZ3JhcGgsIGJsb2NrLCBieXRlY29kZU9mZnNldCwgcmVzdWx0KTsKIH0K
IAogYm9vbCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6Om9wZXJhbmRJc0xpdmVBdEJ5dGVjb2Rl
T2Zmc2V0KGludCBvcGVyYW5kLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCkKQEAgLTI0NCwxMSAr
ODIsMTEgQEAgRmFzdEJpdFZlY3RvciBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmdldExpdmVu
ZXNzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQodW5zaWduZWQKIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0Fu
YWx5c2lzOjpjb21wdXRlRnVsbExpdmVuZXNzKEZ1bGxCeXRlY29kZUxpdmVuZXNzJiByZXN1bHQp
CiB7CiAgICAgRmFzdEJpdFZlY3RvciBvdXQ7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBt
X2dyYXBoLmNvZGVCbG9jaygpOwogICAgIAotICAgIHJlc3VsdC5tX21hcC5yZXNpemUobV9jb2Rl
QmxvY2stPmluc3RydWN0aW9ucygpLnNpemUoKSk7CisgICAgcmVzdWx0Lm1fbWFwLnJlc2l6ZShj
b2RlQmxvY2stPmluc3RydWN0aW9ucygpLnNpemUoKSk7CiAgICAgCi0gICAgZm9yICh1bnNpZ25l
ZCBpID0gbV9iYXNpY0Jsb2Nrcy5zaXplKCk7IGktLTspIHsKLSAgICAgICAgQnl0ZWNvZGVCYXNp
Y0Jsb2NrKiBibG9jayA9IG1fYmFzaWNCbG9ja3NbaV0uZ2V0KCk7CisgICAgZm9yIChzdGQ6OnVu
aXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiYgYmxvY2sgOiBtX2dyYXBoLmJhc2ljQmxvY2tz
SW5SZXZlcnNlT3JkZXIoKSkgewogICAgICAgICBpZiAoYmxvY2stPmlzRW50cnlCbG9jaygpIHx8
IGJsb2NrLT5pc0V4aXRCbG9jaygpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIApA
QCAtMjU2LDcgKzk0LDcgQEAgdm9pZCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGVG
dWxsTGl2ZW5lc3MoRnVsbEJ5dGVjb2RlTGl2ZW5lc3MmIHJlc3VsdCkKICAgICAgICAgCiAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IGJsb2NrLT5ieXRlY29kZU9mZnNldHMoKS5zaXplKCk7IGkt
LTspIHsKICAgICAgICAgICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0ID0gYmxvY2stPmJ5dGVj
b2RlT2Zmc2V0cygpW2ldOwotICAgICAgICAgICAgc3RlcE92ZXJJbnN0cnVjdGlvbihtX2NvZGVC
bG9jaywgYmxvY2ssIG1fYmFzaWNCbG9ja3MsIGJ5dGVjb2RlT2Zmc2V0LCBvdXQpOworICAgICAg
ICAgICAgc3RlcE92ZXJJbnN0cnVjdGlvbihtX2dyYXBoLCBieXRlY29kZU9mZnNldCwgb3V0KTsK
ICAgICAgICAgICAgIHJlc3VsdC5tX21hcFtieXRlY29kZU9mZnNldF0gPSBvdXQ7CiAgICAgICAg
IH0KICAgICB9CkBAIC0yNjYsMTEgKzEwNCwxMSBAQCB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFs
eXNpczo6Y29tcHV0ZUtpbGxzKEJ5dGVjb2RlS2lsbHMmIHJlc3VsdCkKIHsKICAgICBGYXN0Qml0
VmVjdG9yIG91dDsKICAgICAKLSAgICByZXN1bHQubV9jb2RlQmxvY2sgPSBtX2NvZGVCbG9jazsK
LSAgICByZXN1bHQubV9raWxsU2V0cyA9IHN0ZDo6bWFrZV91bmlxdWU8Qnl0ZWNvZGVLaWxsczo6
S2lsbFNldFtdPihtX2NvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKKyAgICBDb2Rl
QmxvY2sqIGNvZGVCbG9jayA9IG1fZ3JhcGguY29kZUJsb2NrKCk7CisgICAgcmVzdWx0Lm1fY29k
ZUJsb2NrID0gY29kZUJsb2NrOworICAgIHJlc3VsdC5tX2tpbGxTZXRzID0gc3RkOjptYWtlX3Vu
aXF1ZTxCeXRlY29kZUtpbGxzOjpLaWxsU2V0W10+KGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCku
c2l6ZSgpKTsKICAgICAKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2Jhc2ljQmxvY2tzLnNpemUo
KTsgaS0tOykgewotICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrID0gbV9iYXNpY0Js
b2Nrc1tpXS5nZXQoKTsKKyAgICBmb3IgKHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxv
Y2s+JiBibG9jayA6IG1fZ3JhcGguYmFzaWNCbG9ja3NJblJldmVyc2VPcmRlcigpKSB7CiAgICAg
ICAgIGlmIChibG9jay0+aXNFbnRyeUJsb2NrKCkgfHwgYmxvY2stPmlzRXhpdEJsb2NrKCkpCiAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgCkBAIC0yNzksNyArMTE3LDcgQEAgdm9pZCBC
eXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGVLaWxscyhCeXRlY29kZUtpbGxzJiByZXN1
bHQpCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGJsb2NrLT5ieXRlY29kZU9mZnNldHMoKS5z
aXplKCk7IGktLTspIHsKICAgICAgICAgICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0ID0gYmxv
Y2stPmJ5dGVjb2RlT2Zmc2V0cygpW2ldOwogICAgICAgICAgICAgc3RlcE92ZXJJbnN0cnVjdGlv
bigKLSAgICAgICAgICAgICAgICBtX2NvZGVCbG9jaywgYmxvY2ssIG1fYmFzaWNCbG9ja3MsIGJ5
dGVjb2RlT2Zmc2V0LAorICAgICAgICAgICAgICAgIG1fZ3JhcGgsIGJ5dGVjb2RlT2Zmc2V0LCBv
dXQsCiAgICAgICAgICAgICAgICAgWyZdICh1bnNpZ25lZCBpbmRleCkgewogICAgICAgICAgICAg
ICAgICAgICAvLyBUaGlzIGlzIGZvciB1c2VzLgogICAgICAgICAgICAgICAgICAgICBpZiAob3V0
LmdldChpbmRleCkpCkBAIC0yOTcsMTIgKzEzNSwxMyBAQCB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NB
bmFseXNpczo6Y29tcHV0ZUtpbGxzKEJ5dGVjb2RlS2lsbHMmIHJlc3VsdCkKIAogdm9pZCBCeXRl
Y29kZUxpdmVuZXNzQW5hbHlzaXM6OmR1bXBSZXN1bHRzKCkKIHsKLSAgICBkYXRhTG9nKCJcbkR1
bXBpbmcgYnl0ZWNvZGUgbGl2ZW5lc3MgZm9yICIsICptX2NvZGVCbG9jaywgIjpcbiIpOwotICAg
IEludGVycHJldGVyKiBpbnRlcnByZXRlciA9IG1fY29kZUJsb2NrLT52bSgpLT5pbnRlcnByZXRl
cjsKLSAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4gPSBtX2NvZGVCbG9jay0+aW5z
dHJ1Y3Rpb25zKCkuYmVnaW4oKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9iYXNp
Y0Jsb2Nrcy5zaXplKCk7IGkrKykgewotICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2Nr
ID0gbV9iYXNpY0Jsb2Nrc1tpXS5nZXQoKTsKLSAgICAgICAgZGF0YUxvZ0YoIlxuQnl0ZWNvZGUg
YmFzaWMgYmxvY2sgJXU6ICVwIChvZmZzZXQ6ICV1LCBsZW5ndGg6ICV1KVxuIiwgaSwgYmxvY2ss
IGJsb2NrLT5sZWFkZXJCeXRlY29kZU9mZnNldCgpLCBibG9jay0+dG90YWxCeXRlY29kZUxlbmd0
aCgpKTsKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IG1fZ3JhcGguY29kZUJsb2NrKCk7Cisg
ICAgZGF0YUxvZygiXG5EdW1waW5nIGJ5dGVjb2RlIGxpdmVuZXNzIGZvciAiLCAqY29kZUJsb2Nr
LCAiOlxuIik7CisgICAgSW50ZXJwcmV0ZXIqIGludGVycHJldGVyID0gY29kZUJsb2NrLT52bSgp
LT5pbnRlcnByZXRlcjsKKyAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4gPSBjb2Rl
QmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCk7CisgICAgdW5zaWduZWQgaSA9IDA7CisgICAg
Zm9yIChCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrIDogbV9ncmFwaCkgeworICAgICAgICBkYXRh
TG9nRigiXG5CeXRlY29kZSBiYXNpYyBibG9jayAldTogJXAgKG9mZnNldDogJXUsIGxlbmd0aDog
JXUpXG4iLCBpKyssIGJsb2NrLCBibG9jay0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKSwgYmxvY2st
PnRvdGFsQnl0ZWNvZGVMZW5ndGgoKSk7CiAgICAgICAgIGRhdGFMb2dGKCJTdWNjZXNzb3JzOiAi
KTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8IGJsb2NrLT5zdWNjZXNzb3JzKCku
c2l6ZSgpOyBqKyspIHsKICAgICAgICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogc3VjY2Vzc29y
ID0gYmxvY2stPnN1Y2Nlc3NvcnMoKVtqXTsKQEAgLTMyNyw3ICsxNjYsNyBAQCB2b2lkIEJ5dGVj
b2RlTGl2ZW5lc3NBbmFseXNpczo6ZHVtcFJlc3VsdHMoKQogICAgICAgICAgICAgICAgICAgICBk
YXRhTG9nRigiJXUgIiwgaik7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBkYXRhTG9nRigi
XG4iKTsKLSAgICAgICAgICAgIG1fY29kZUJsb2NrLT5kdW1wQnl0ZWNvZGUoV1RGOjpkYXRhRmls
ZSgpLCBtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKSwgaW5zdHJ1Y3Rp
b25zQmVnaW4sIGN1cnJlbnRJbnN0cnVjdGlvbik7CisgICAgICAgICAgICBjb2RlQmxvY2stPmR1
bXBCeXRlY29kZShXVEY6OmRhdGFGaWxlKCksIGNvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCktPmds
b2JhbEV4ZWMoKSwgaW5zdHJ1Y3Rpb25zQmVnaW4sIGN1cnJlbnRJbnN0cnVjdGlvbik7CiAKICAg
ICAgICAgICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGlu
c3RydWN0aW9uc0JlZ2luW2J5dGVjb2RlT2Zmc2V0XS51Lm9wY29kZSk7CiAgICAgICAgICAgICB1
bnNpZ25lZCBvcGNvZGVMZW5ndGggPSBvcGNvZGVMZW5ndGhzW29wY29kZUlEXTsKQEAgLTM0Niw5
ICsxODUsNyBAQCB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6ZHVtcFJlc3VsdHMoKQog
CiB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0ZSgpCiB7Ci0gICAgY29tcHV0
ZUJ5dGVjb2RlQmFzaWNCbG9ja3MobV9jb2RlQmxvY2ssIG1fYmFzaWNCbG9ja3MpOwotICAgIEFT
U0VSVChtX2Jhc2ljQmxvY2tzLnNpemUoKSk7Ci0gICAgcnVuTGl2ZW5lc3NGaXhwb2ludCgpOwor
ICAgIHJ1bkxpdmVuZXNzRml4cG9pbnQobV9ncmFwaCk7CiAKICAgICBpZiAoT3B0aW9uczo6ZHVt
cEJ5dGVjb2RlTGl2ZW5lc3NSZXN1bHRzKCkpCiAgICAgICAgIGR1bXBSZXN1bHRzKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0Fu
YWx5c2lzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVz
c0FuYWx5c2lzLmgKaW5kZXggZWNlMTZmMjFmMDE1MTBhNjQyN2ZkODQxMTQwNzliZWQ4NzBjMDg3
NS4uZTEyY2Q4ZWRjZTc2ZTEyMmVmMDRlZTFmMzVmYmE4MjFiOGQ3ZjdmMCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5h
bHlzaXMuaApAQCAtMjMsMTAgKzIzLDExIEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCiAgKi8KIAotI2lmbmRlZiBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNfaAotI2RlZmlu
ZSBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJC
eXRlY29kZUJhc2ljQmxvY2suaCIKKyNpbmNsdWRlICJCeXRlY29kZUdyYXBoLmgiCisjaW5jbHVk
ZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSA8d3RmL0Zhc3RCaXRWZWN0b3IuaD4KICNpbmNsdWRl
IDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTM0LDEzICszNSwy
OSBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIEJ5dGVjb2RlS2lsbHM7Ci1jbGFzcyBDb2Rl
QmxvY2s7CiBjbGFzcyBGdWxsQnl0ZWNvZGVMaXZlbmVzczsKIAotY2xhc3MgQnl0ZWNvZGVMaXZl
bmVzc0FuYWx5c2lzIHsKK3RlbXBsYXRlPHR5cGVuYW1lIERlcml2ZWRBbmFseXNpcz4KK2NsYXNz
IEJ5dGVjb2RlTGl2ZW5lc3NQcm9wYWdhdGlvbiB7Citwcm90ZWN0ZWQ6CisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgR3JhcGgsIHR5cGVuYW1lIFVzZUZ1bmN0b3IsIHR5cGVuYW1lIERlZkZ1bmN0b3I+
IHZvaWQgc3RlcE92ZXJJbnN0cnVjdGlvbihHcmFwaCYsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0
LCBGYXN0Qml0VmVjdG9yJiBvdXQsIGNvbnN0IFVzZUZ1bmN0b3ImLCBjb25zdCBEZWZGdW5jdG9y
Jik7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBHcmFwaD4gdm9pZCBzdGVwT3Zlckluc3RydWN0
aW9uKEdyYXBoJiwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIEZhc3RCaXRWZWN0b3ImIG91dCk7
CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBHcmFwaD4gYm9vbCBjb21wdXRlTG9jYWxMaXZlbmVz
c0ZvckJ5dGVjb2RlT2Zmc2V0KEdyYXBoJiwgQnl0ZWNvZGVCYXNpY0Jsb2NrKiwgdW5zaWduZWQg
dGFyZ2V0T2Zmc2V0LCBGYXN0Qml0VmVjdG9yJiByZXN1bHQpOworCisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgR3JhcGg+IGJvb2wgY29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCbG9jayhHcmFwaCYsIEJ5
dGVjb2RlQmFzaWNCbG9jayopOworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgR3JhcGg+IEZhc3RC
aXRWZWN0b3IgZ2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29kZU9mZnNldChHcmFwaCYsIHVuc2lnbmVk
IGJ5dGVjb2RlT2Zmc2V0KTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEdyYXBoPiB2b2lkIHJ1
bkxpdmVuZXNzRml4cG9pbnQoR3JhcGgmKTsKK307CisKK2NsYXNzIEJ5dGVjb2RlTGl2ZW5lc3NB
bmFseXNpcyA6IHByaXZhdGUgQnl0ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0aW9uPEJ5dGVjb2RlTGl2
ZW5lc3NBbmFseXNpcz4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcyk7CiBwdWJsaWM6CisgICAg
ZnJpZW5kIGNsYXNzIEJ5dGVjb2RlTGl2ZW5lc3NQcm9wYWdhdGlvbjxCeXRlY29kZUxpdmVuZXNz
QW5hbHlzaXM+OwogICAgIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcyhDb2RlQmxvY2sqKTsKICAg
ICAKICAgICBib29sIG9wZXJhbmRJc0xpdmVBdEJ5dGVjb2RlT2Zmc2V0KGludCBvcGVyYW5kLCB1
bnNpZ25lZCBieXRlY29kZU9mZnNldCk7CkBAIC01MSwxOSArNjgsMTkgQEAgY2xhc3MgQnl0ZWNv
ZGVMaXZlbmVzc0FuYWx5c2lzIHsKIAogcHJpdmF0ZToKICAgICB2b2lkIGNvbXB1dGUoKTsKLSAg
ICB2b2lkIHJ1bkxpdmVuZXNzRml4cG9pbnQoKTsKICAgICB2b2lkIGR1bXBSZXN1bHRzKCk7CiAK
ICAgICB2b2lkIGdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQodW5zaWduZWQgYnl0ZWNv
ZGVPZmZzZXQsIEZhc3RCaXRWZWN0b3ImKTsKIAotICAgIENvZGVCbG9jayogbV9jb2RlQmxvY2s7
Ci0gICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiBtX2Jhc2lj
QmxvY2tzOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHZvaWQgY29tcHV0ZURlZnNG
b3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqLCBPcGNvZGVJRCwgSW5zdHJ1Y3Rpb24qLCBGYXN0
Qml0VmVjdG9yJiwgY29uc3QgRnVuY3RvciYpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0
b3I+IHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqLCBPcGNvZGVJ
RCwgSW5zdHJ1Y3Rpb24qLCBGYXN0Qml0VmVjdG9yJiwgY29uc3QgRnVuY3RvciYpOworCisgICAg
Qnl0ZWNvZGVHcmFwaDxDb2RlQmxvY2s+IG1fZ3JhcGg7CiB9OwogCiBpbmxpbmUgYm9vbCBvcGVy
YW5kSXNBbHdheXNMaXZlKGludCBvcGVyYW5kKTsKIGlubGluZSBib29sIG9wZXJhbmRUaGF0SXNO
b3RBbHdheXNMaXZlSXNMaXZlKGNvbnN0IEZhc3RCaXRWZWN0b3ImIG91dCwgaW50IG9wZXJhbmQp
OwogaW5saW5lIGJvb2wgb3BlcmFuZElzTGl2ZShjb25zdCBGYXN0Qml0VmVjdG9yJiBvdXQsIGlu
dCBvcGVyYW5kKTsKK2lubGluZSBib29sIGlzVmFsaWRSZWdpc3RlckZvckxpdmVuZXNzKGludCBv
cGVyYW5kKTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCi0KLSNlbmRpZiAvLyBCeXRlY29kZUxpdmVu
ZXNzQW5hbHlzaXNfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNJbmxpbmVzLmgKaW5kZXggOWI1Yzc1
NWZjYjZjZDUxODA1MTQ1MDA3ODkyMmFjNGQ2ZDRkMjM4Zi4uY2Y2YzhkMmE0MzRkMWRlOTYxYWE0
YTliMWUwZTRkMGM0ZmMxZGUxOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzSW5saW5lcy5oCkBA
IC0yMywxMSArMjMsMTIgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAq
LwogCi0jaWZuZGVmIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGluZXNfaAotI2RlZmluZSBC
eXRlY29kZUxpdmVuZXNzQW5hbHlzaXNJbmxpbmVzX2gKKyNwcmFnbWEgb25jZQogCisjaW5jbHVk
ZSAiQnl0ZWNvZGVHcmFwaC5oIgogI2luY2x1ZGUgIkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5o
IgogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5j
bHVkZSAiT3BlcmF0aW9ucy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTUwLDcgKzUxLDE1MSBA
QCBpbmxpbmUgYm9vbCBvcGVyYW5kSXNMaXZlKGNvbnN0IEZhc3RCaXRWZWN0b3ImIG91dCwgaW50
IG9wZXJhbmQpCiAgICAgcmV0dXJuIG9wZXJhbmRJc0Fsd2F5c0xpdmUob3BlcmFuZCkgfHwgb3Bl
cmFuZFRoYXRJc05vdEFsd2F5c0xpdmVJc0xpdmUob3V0LCBvcGVyYW5kKTsKIH0KIAotfSAvLyBu
YW1lc3BhY2UgSlNDCitpbmxpbmUgYm9vbCBpc1ZhbGlkUmVnaXN0ZXJGb3JMaXZlbmVzcyhpbnQg
b3BlcmFuZCkKK3sKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZyhvcGVyYW5kKTsKKyAg
ICBpZiAodmlydHVhbFJlZy5pc0NvbnN0YW50KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICByZXR1cm4gdmlydHVhbFJlZy5pc0xvY2FsKCk7Cit9CisKKy8vIFNpbXBsaWZpZWQgaW50ZXJm
YWNlIHRvIGJ5dGVjb2RlIHVzZS9kZWYsIHdoaWNoIGRldGVybWluZXMgZGVmcyBmaXJzdCBhbmQg
dGhlbiB1c2VzLCBhbmQgaW5jbHVkZXMKKy8vIGV4Y2VwdGlvbiBoYW5kbGVycyBpbiB0aGUgdXNl
cy4KK3RlbXBsYXRlPHR5cGVuYW1lIERlcml2ZWRBbmFseXNpcz4KK3RlbXBsYXRlPHR5cGVuYW1l
IEdyYXBoLCB0eXBlbmFtZSBVc2VGdW5jdG9yLCB0eXBlbmFtZSBEZWZGdW5jdG9yPgoraW5saW5l
IHZvaWQgQnl0ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0aW9uPERlcml2ZWRBbmFseXNpcz46OnN0ZXBP
dmVySW5zdHJ1Y3Rpb24oR3JhcGgmIGdyYXBoLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgRmFz
dEJpdFZlY3RvciYgb3V0LCBjb25zdCBVc2VGdW5jdG9yJiB1c2UsIGNvbnN0IERlZkZ1bmN0b3Im
IGRlZikKK3sKKyAgICAvLyBUaGlzIGFic3RyYWN0bHkgZXhlY3V0ZSB0aGUgaW5zdHJ1Y3Rpb24g
aW4gcmV2ZXJzZS4gSW5zdHJ1Y3Rpb25zIGxvZ2ljYWxseSBmaXJzdCB1c2Ugb3BlcmFuZHMgYW5k
CisgICAgLy8gdGhlbiBkZWZpbmUgb3BlcmFuZHMuIFRoaXMgbG9naWNhbCBvcmRlcmluZyBpcyBu
ZWNlc3NhcnkgZm9yIG9wZXJhdGlvbnMgdGhhdCB1c2UgYW5kIGRlZiB0aGUgc2FtZQorICAgIC8v
IG9wZXJhbmQsIGxpa2U6CisgICAgLy8KKyAgICAvLyAgICAgb3BfYWRkIGxvYzEsIGxvYzEsIGxv
YzIKKyAgICAvLworICAgIC8vIFRoZSB1c2Ugb2YgbG9jMSBoYXBwZW5zIGJlZm9yZSB0aGUgZGVm
IG9mIGxvYzEuIFRoYXQncyBhIHNlbWFudGljIHJlcXVpcmVtZW50IHNpbmNlIHRoZSBhZGQKKyAg
ICAvLyBvcGVyYXRpb24gY2Fubm90IHRyYXZlbCBmb3J3YXJkIGluIHRpbWUgdG8gcmVhZCB0aGUg
dmFsdWUgdGhhdCBpdCB3aWxsIHByb2R1Y2UgYWZ0ZXIgcmVhZGluZyB0aGF0CisgICAgLy8gdmFs
dWUuIFNpbmNlIHdlIGFyZSBleGVjdXRpbmcgaW4gcmV2ZXJzZSwgdGhpcyBtZWFucyB0aGF0IHdl
IG11c3QgZG8gZGVmcyBiZWZvcmUgdXNlcyAocmV2ZXJzZSBvZgorICAgIC8vIHVzZXMgYmVmb3Jl
IGRlZnMpLgorICAgIC8vCisgICAgLy8gU2luY2UgdGhpcyBpcyBhIGxpdmVuZXNzIGFuYWx5c2lz
LCB0aGlzIG9yZGVyaW5nIGVuZHMgdXAgYmVpbmcgcGFydGljdWxhcmx5IGltcG9ydGFudDogaWYg
d2UgZGlkCisgICAgLy8gdXNlcyBiZWZvcmUgZGVmcywgdGhlbiB0aGUgYWRkIG9wZXJhdGlvbiBh
Ym92ZSB3b3VsZCBhcHBlYXIgdG8gbm90IGhhdmUgbG9jMSBsaXZlLCBzaW5jZSB3ZSdkCisgICAg
Ly8gZmlyc3QgYWRkIGl0IHRvIHRoZSBvdXQgc2V0ICh0aGUgdXNlKSwgYW5kIHRoZW4gd2UnZCBy
ZW1vdmUgaXQgKHRoZSBkZWYpLgorCisgICAgYXV0byogY29kZUJsb2NrID0gZ3JhcGguY29kZUJs
b2NrKCk7CisgICAgSW50ZXJwcmV0ZXIqIGludGVycHJldGVyID0gY29kZUJsb2NrLT52bSgpLT5p
bnRlcnByZXRlcjsKKyAgICBhdXRvKiBpbnN0cnVjdGlvbnNCZWdpbiA9IGdyYXBoLmluc3RydWN0
aW9ucygpLmJlZ2luKCk7CisgICAgYXV0byogaW5zdHJ1Y3Rpb24gPSAmaW5zdHJ1Y3Rpb25zQmVn
aW5bYnl0ZWNvZGVPZmZzZXRdOworICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0ZXIt
PmdldE9wY29kZUlEKCppbnN0cnVjdGlvbik7CisKKyAgICBzdGF0aWNfY2FzdDxEZXJpdmVkQW5h
bHlzaXMqPih0aGlzKS0+Y29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldCgKKyAgICAgICAgY29k
ZUJsb2NrLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb24sIG91dCwKKyAgICAgICAgWyZdICh0eXBlbmFt
ZSBHcmFwaDo6Q29kZUJsb2NrKiwgdHlwZW5hbWUgR3JhcGg6Okluc3RydWN0aW9uKiwgT3Bjb2Rl
SUQsIGludCBvcGVyYW5kKSB7CisgICAgICAgICAgICBpZiAoaXNWYWxpZFJlZ2lzdGVyRm9yTGl2
ZW5lc3Mob3BlcmFuZCkpCisgICAgICAgICAgICAgICAgZGVmKFZpcnR1YWxSZWdpc3RlcihvcGVy
YW5kKS50b0xvY2FsKCkpOworICAgICAgICB9KTsKKworICAgIHN0YXRpY19jYXN0PERlcml2ZWRB
bmFseXNpcyo+KHRoaXMpLT5jb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAorICAgICAgICBj
b2RlQmxvY2ssIG9wY29kZUlELCBpbnN0cnVjdGlvbiwgb3V0LAorICAgICAgICBbJl0gKHR5cGVu
YW1lIEdyYXBoOjpDb2RlQmxvY2sqLCB0eXBlbmFtZSBHcmFwaDo6SW5zdHJ1Y3Rpb24qLCBPcGNv
ZGVJRCwgaW50IG9wZXJhbmQpIHsKKyAgICAgICAgICAgIGlmIChpc1ZhbGlkUmVnaXN0ZXJGb3JM
aXZlbmVzcyhvcGVyYW5kKSkKKyAgICAgICAgICAgICAgICB1c2UoVmlydHVhbFJlZ2lzdGVyKG9w
ZXJhbmQpLnRvTG9jYWwoKSk7CisgICAgICAgIH0pOworCisgICAgLy8gSWYgd2UgaGF2ZSBhbiBl
eGNlcHRpb24gaGFuZGxlciwgd2Ugd2FudCB0aGUgbGl2ZS1pbiB2YXJpYWJsZXMgb2YgdGhlIAor
ICAgIC8vIGV4Y2VwdGlvbiBoYW5kbGVyIGJsb2NrIHRvIGJlIGluY2x1ZGVkIGluIHRoZSBsaXZl
LWluIG9mIHRoaXMgcGFydGljdWxhciBieXRlY29kZS4KKyAgICBpZiAoYXV0byogaGFuZGxlciA9
IGNvZGVCbG9jay0+aGFuZGxlckZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KSkgewor
ICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGhhbmRsZXJCbG9jayA9IGdyYXBoLmZpbmRCYXNp
Y0Jsb2NrV2l0aExlYWRlck9mZnNldChoYW5kbGVyLT50YXJnZXQpOworICAgICAgICBBU1NFUlQo
aGFuZGxlckJsb2NrKTsKKyAgICAgICAgaGFuZGxlckJsb2NrLT5pbigpLmZvckVhY2hTZXRCaXQo
dXNlKTsKKyAgICB9Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIERlcml2ZWRBbmFseXNpcz4KK3Rl
bXBsYXRlPHR5cGVuYW1lIEdyYXBoPgoraW5saW5lIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc1Byb3Bh
Z2F0aW9uPERlcml2ZWRBbmFseXNpcz46OnN0ZXBPdmVySW5zdHJ1Y3Rpb24oR3JhcGgmIGdyYXBo
LCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgRmFzdEJpdFZlY3RvciYgb3V0KQoreworICAgIHN0
ZXBPdmVySW5zdHJ1Y3Rpb24oCisgICAgICAgIGdyYXBoLCBieXRlY29kZU9mZnNldCwgb3V0LAor
ICAgICAgICBbJl0gKHVuc2lnbmVkIGJpdEluZGV4KSB7CisgICAgICAgICAgICAvLyBUaGlzIGlz
IHRoZSB1c2UgZnVuY3Rvciwgc28gd2Ugc2V0IHRoZSBiaXQuCisgICAgICAgICAgICBvdXQuc2V0
KGJpdEluZGV4KTsKKyAgICAgICAgfSwKKyAgICAgICAgWyZdICh1bnNpZ25lZCBiaXRJbmRleCkg
eworICAgICAgICAgICAgLy8gVGhpcyBpcyB0aGUgZGVmIGZ1bmN0b3IsIHNvIHdlIGNsZWFyIHRo
ZSBiaXQuCisgICAgICAgICAgICBvdXQuY2xlYXIoYml0SW5kZXgpOworICAgICAgICB9KTsKK30K
KwordGVtcGxhdGU8dHlwZW5hbWUgRGVyaXZlZEFuYWx5c2lzPgordGVtcGxhdGU8dHlwZW5hbWUg
R3JhcGg+CitpbmxpbmUgYm9vbCBCeXRlY29kZUxpdmVuZXNzUHJvcGFnYXRpb248RGVyaXZlZEFu
YWx5c2lzPjo6Y29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCeXRlY29kZU9mZnNldChHcmFwaCYgZ3Jh
cGgsIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2ssIHVuc2lnbmVkIHRhcmdldE9mZnNldCwgRmFz
dEJpdFZlY3RvciYgcmVzdWx0KQoreworICAgIEFTU0VSVCghYmxvY2stPmlzRXhpdEJsb2NrKCkp
OworICAgIEFTU0VSVCghYmxvY2stPmlzRW50cnlCbG9jaygpKTsKIAotI2VuZGlmIC8vIEJ5dGVj
b2RlTGl2ZW5lc3NBbmFseXNpc0lubGluZXNfaAorICAgIEZhc3RCaXRWZWN0b3Igb3V0ID0gYmxv
Y2stPm91dCgpOwogCisgICAgZm9yIChpbnQgaSA9IGJsb2NrLT5ieXRlY29kZU9mZnNldHMoKS5z
aXplKCkgLSAxOyBpID49IDA7IGktLSkgeworICAgICAgICB1bnNpZ25lZCBieXRlY29kZU9mZnNl
dCA9IGJsb2NrLT5ieXRlY29kZU9mZnNldHMoKVtpXTsKKyAgICAgICAgaWYgKHRhcmdldE9mZnNl
dCA+IGJ5dGVjb2RlT2Zmc2V0KQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIHN0ZXBPdmVy
SW5zdHJ1Y3Rpb24oZ3JhcGgsIGJ5dGVjb2RlT2Zmc2V0LCBvdXQpOworICAgIH0KKworICAgIHJl
dHVybiByZXN1bHQuc2V0QW5kQ2hlY2sob3V0KTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgRGVy
aXZlZEFuYWx5c2lzPgordGVtcGxhdGU8dHlwZW5hbWUgR3JhcGg+CitpbmxpbmUgYm9vbCBCeXRl
Y29kZUxpdmVuZXNzUHJvcGFnYXRpb248RGVyaXZlZEFuYWx5c2lzPjo6Y29tcHV0ZUxvY2FsTGl2
ZW5lc3NGb3JCbG9jayhHcmFwaCYgZ3JhcGgsIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2spCit7
CisgICAgaWYgKGJsb2NrLT5pc0V4aXRCbG9jaygpIHx8IGJsb2NrLT5pc0VudHJ5QmxvY2soKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBjb21wdXRlTG9jYWxMaXZlbmVzc0Zv
ckJ5dGVjb2RlT2Zmc2V0KGdyYXBoLCBibG9jaywgYmxvY2stPmxlYWRlckJ5dGVjb2RlT2Zmc2V0
KCksIGJsb2NrLT5pbigpKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgRGVyaXZlZEFuYWx5c2lz
PgordGVtcGxhdGU8dHlwZW5hbWUgR3JhcGg+CitpbmxpbmUgRmFzdEJpdFZlY3RvciBCeXRlY29k
ZUxpdmVuZXNzUHJvcGFnYXRpb248RGVyaXZlZEFuYWx5c2lzPjo6Z2V0TGl2ZW5lc3NJbmZvQXRC
eXRlY29kZU9mZnNldChHcmFwaCYgZ3JhcGgsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KQorewor
ICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2sgPSBncmFwaC5maW5kQmFzaWNCbG9ja0ZvckJ5
dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KTsKKyAgICBBU1NFUlQoYmxvY2spOworICAgIEFT
U0VSVCghYmxvY2stPmlzRW50cnlCbG9jaygpKTsKKyAgICBBU1NFUlQoIWJsb2NrLT5pc0V4aXRC
bG9jaygpKTsKKyAgICBGYXN0Qml0VmVjdG9yIG91dDsKKyAgICBvdXQucmVzaXplKGJsb2NrLT5v
dXQoKS5udW1CaXRzKCkpOworICAgIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQnl0ZWNvZGVPZmZz
ZXQoZ3JhcGgsIGJsb2NrLCBieXRlY29kZU9mZnNldCwgb3V0KTsKKyAgICByZXR1cm4gb3V0Owor
fQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBEZXJpdmVkQW5hbHlzaXM+Cit0ZW1wbGF0ZTx0eXBlbmFt
ZSBHcmFwaD4KK2lubGluZSB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NQcm9wYWdhdGlvbjxEZXJpdmVk
QW5hbHlzaXM+OjpydW5MaXZlbmVzc0ZpeHBvaW50KEdyYXBoJiBncmFwaCkKK3sKKyAgICBhdXRv
KiBjb2RlQmxvY2sgPSBncmFwaC5jb2RlQmxvY2soKTsKKyAgICB1bnNpZ25lZCBudW1iZXJPZlZh
cmlhYmxlcyA9IGNvZGVCbG9jay0+bnVtQ2FsbGVlTG9jYWxzKCk7CisgICAgZm9yIChCeXRlY29k
ZUJhc2ljQmxvY2sqIGJsb2NrIDogZ3JhcGgpIHsKKyAgICAgICAgYmxvY2stPmluKCkucmVzaXpl
KG51bWJlck9mVmFyaWFibGVzKTsKKyAgICAgICAgYmxvY2stPm91dCgpLnJlc2l6ZShudW1iZXJP
ZlZhcmlhYmxlcyk7CisgICAgICAgIGJsb2NrLT5pbigpLmNsZWFyQWxsKCk7CisgICAgICAgIGJs
b2NrLT5vdXQoKS5jbGVhckFsbCgpOworICAgIH0KKworICAgIGJvb2wgY2hhbmdlZDsKKyAgICBC
eXRlY29kZUJhc2ljQmxvY2sqIGxhc3RCbG9jayA9IGdyYXBoLmxhc3QoKTsKKyAgICBsYXN0Qmxv
Y2stPmluKCkuY2xlYXJBbGwoKTsKKyAgICBsYXN0QmxvY2stPm91dCgpLmNsZWFyQWxsKCk7Cisg
ICAgRmFzdEJpdFZlY3RvciBuZXdPdXQ7CisgICAgbmV3T3V0LnJlc2l6ZShsYXN0QmxvY2stPm91
dCgpLm51bUJpdHMoKSk7CisgICAgZG8geworICAgICAgICBjaGFuZ2VkID0gZmFsc2U7CisgICAg
ICAgIGZvciAoc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4mIGJsb2NrIDogZ3Jh
cGguYmFzaWNCbG9ja3NJblJldmVyc2VPcmRlcigpKSB7CisgICAgICAgICAgICBuZXdPdXQuY2xl
YXJBbGwoKTsKKyAgICAgICAgICAgIGZvciAoQnl0ZWNvZGVCYXNpY0Jsb2NrKiBzdWNjZXNzb3Ig
OiBibG9jay0+c3VjY2Vzc29ycygpKQorICAgICAgICAgICAgICAgIG5ld091dC5tZXJnZShzdWNj
ZXNzb3ItPmluKCkpOworICAgICAgICAgICAgYmxvY2stPm91dCgpLnNldChuZXdPdXQpOworICAg
ICAgICAgICAgY2hhbmdlZCB8PSBjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJsb2NrKGdyYXBoLCBi
bG9jay5nZXQoKSk7CisgICAgICAgIH0KKyAgICB9IHdoaWxlIChjaGFuZ2VkKTsKK30KKworfSAv
LyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVSZXdyaXRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Qnl0ZWNvZGVSZXdyaXRlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzlmZDFkMTUyNWFmZWM1NmUxMTMzNWI0
ZDIwMTNkNjA3MDQwZjAwMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZVJld3JpdGVyLmNwcApAQCAtMCwwICsxLDkxIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE2IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4K
KyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJCeXRlY29kZVJld3JpdGVy
LmgiCisKKyNpbmNsdWRlICJQcmVjaXNlSnVtcFRhcmdldHNJbmxpbmVzLmgiCisjaW5jbHVkZSA8
d3RmL0J1YmJsZVNvcnQuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK3ZvaWQgQnl0ZWNvZGVSZXdy
aXRlcjo6YXBwbHlNb2RpZmljYXRpb24oKQoreworICAgIGZvciAoc2l6ZV90IGluc2VydGlvbklu
ZGV4ID0gbV9pbnNlcnRpb25zLnNpemUoKTsgaW5zZXJ0aW9uSW5kZXgtLTspIHsKKyAgICAgICAg
SW5zZXJ0aW9uJiBpbnNlcnRpb24gPSBtX2luc2VydGlvbnNbaW5zZXJ0aW9uSW5kZXhdOworICAg
ICAgICBpZiAoaW5zZXJ0aW9uLnR5cGUgPT0gSW5zZXJ0aW9uOjpUeXBlOjpSZW1vdmUpCisgICAg
ICAgICAgICBtX2dyYXBoLmluc3RydWN0aW9ucygpLnJlbW92ZShpbnNlcnRpb24uaW5kZXguYnl0
ZWNvZGVPZmZzZXQsIGluc2VydGlvbi5sZW5ndGgoKSk7CisgICAgICAgIGVsc2UgeworICAgICAg
ICAgICAgaWYgKGluc2VydGlvbi5pbmNsdWRlQnJhbmNoID09IEluY2x1ZGVCcmFuY2g6OlllcykK
KyAgICAgICAgICAgICAgICBhZGp1c3RKdW1wVGFyZ2V0cyhpbnNlcnRpb24uaW5kZXguYnl0ZWNv
ZGVPZmZzZXQgKyBjYWxjdWxhdGVEaWZmZXJlbmNlKG1faW5zZXJ0aW9ucy5iZWdpbigpLCBtX2lu
c2VydGlvbnMuYmVnaW4oKSArIGluc2VydGlvbkluZGV4KSwgaW5zZXJ0aW9uKTsKKyAgICAgICAg
ICAgIG1fZ3JhcGguaW5zdHJ1Y3Rpb25zKCkuaW5zZXJ0VmVjdG9yKGluc2VydGlvbi5pbmRleC5i
eXRlY29kZU9mZnNldCwgaW5zZXJ0aW9uLmluc3RydWN0aW9ucyk7CisgICAgICAgIH0KKyAgICB9
CisgICAgbV9pbnNlcnRpb25zLmNsZWFyKCk7Cit9CisKK3ZvaWQgQnl0ZWNvZGVSZXdyaXRlcjo6
ZXhlY3V0ZSgpCit7CisgICAgV1RGOjpidWJibGVTb3J0KG1faW5zZXJ0aW9ucy5iZWdpbigpLCBt
X2luc2VydGlvbnMuZW5kKCksIFtdIChjb25zdCBJbnNlcnRpb24mIGxocywgY29uc3QgSW5zZXJ0
aW9uJiByaHMpIHsKKyAgICAgICAgcmV0dXJuIGxocy5pbmRleCA8IHJocy5pbmRleDsKKyAgICB9
KTsKKworICAgIFVubGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBtX2dyYXBoLmNvZGVCbG9j
aygpOworICAgIGNvZGVCbG9jay0+YXBwbHlNb2RpZmljYXRpb24oKnRoaXMpOworfQorCit2b2lk
IEJ5dGVjb2RlUmV3cml0ZXI6OmFkanVzdEp1bXBUYXJnZXRzKHVuc2lnbmVkIGZpbmFsT2Zmc2V0
LCBJbnNlcnRpb24mIGluc2VydGlvbikKK3sKKyAgICBhdXRvJiBmcmFnbWVudCA9IGluc2VydGlv
bi5pbnN0cnVjdGlvbnM7CisgICAgVW5saW5rZWRJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVn
aW4gPSBmcmFnbWVudC5kYXRhKCk7CisgICAgZm9yICh1bnNpZ25lZCBmcmFnbWVudE9mZnNldCA9
IDAsIGZyYWdtZW50Q291bnQgPSBmcmFnbWVudC5zaXplKCk7IGZyYWdtZW50T2Zmc2V0IDwgZnJh
Z21lbnRDb3VudDspIHsKKyAgICAgICAgVW5saW5rZWRJbnN0cnVjdGlvbiYgaW5zdHJ1Y3Rpb24g
PSBmcmFnbWVudFtmcmFnbWVudE9mZnNldF07CisgICAgICAgIE9wY29kZUlEIG9wY29kZUlEID0g
aW5zdHJ1Y3Rpb24udS5vcGNvZGU7CisgICAgICAgIGlmIChpc0JyYW5jaChvcGNvZGVJRCkpIHsK
KyAgICAgICAgICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0ID0gZmluYWxPZmZzZXQgKyBmcmFn
bWVudE9mZnNldDsKKyAgICAgICAgICAgIFVubGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBt
X2dyYXBoLmNvZGVCbG9jaygpOworICAgICAgICAgICAgZXh0cmFjdFN0b3JlZEp1bXBUYXJnZXRz
Rm9yQnl0ZWNvZGVPZmZzZXQoY29kZUJsb2NrLCBjb2RlQmxvY2stPnZtKCktPmludGVycHJldGVy
LCBpbnN0cnVjdGlvbnNCZWdpbiwgZnJhZ21lbnRPZmZzZXQsIFsmXShpbnQmIGxhYmVsKSB7Cisg
ICAgICAgICAgICAgICAgaW50IGFic29sdXRlT2Zmc2V0ID0gYWRqdXN0T2Zmc2V0KDAsIGxhYmVs
KTsKKyAgICAgICAgICAgICAgICBsYWJlbCA9IGFic29sdXRlT2Zmc2V0IC0gc3RhdGljX2Nhc3Q8
aW50PihieXRlY29kZU9mZnNldCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorICAgICAg
ICBmcmFnbWVudE9mZnNldCArPSBvcGNvZGVMZW5ndGgob3Bjb2RlSUQpOworICAgIH0KK30KKwor
dm9pZCBCeXRlY29kZVJld3JpdGVyOjppbnNlcnRJbXBsKEluc2VydGlvblBvaW50IGluc2VydGlv
blBvaW50LCBJbmNsdWRlQnJhbmNoIGluY2x1ZGVCcmFuY2gsIFZlY3RvcjxVbmxpbmtlZEluc3Ry
dWN0aW9uPiYmIGZyYWdtZW50KQoreworICAgIEFTU0VSVChpbnNlcnRpb25Qb2ludC5wb3NpdGlv
biA9PSBQb3NpdGlvbjo6QmVmb3JlIHx8IGluc2VydGlvblBvaW50LnBvc2l0aW9uID09IFBvc2l0
aW9uOjpBZnRlcik7CisgICAgbV9pbnNlcnRpb25zLmFwcGVuZChJbnNlcnRpb24geworICAgICAg
ICBpbnNlcnRpb25Qb2ludCwKKyAgICAgICAgSW5zZXJ0aW9uOjpUeXBlOjpJbnNlcnQsCisgICAg
ICAgIGluY2x1ZGVCcmFuY2gsCisgICAgICAgIDAsCisgICAgICAgIFdURk1vdmUoZnJhZ21lbnQp
CisgICAgfSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlUmV3cml0ZXIuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVJld3JpdGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTU1YTQ2MzY2
MjM5MWVkNDBjZDU3Zjk3ODg2ODRiMTkyZDdjZDM0ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVJld3JpdGVyLmgKQEAgLTAsMCArMSwy
NDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50
ZWFAZ21haWwuY29tPgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJCeXRlY29k
ZUdyYXBoLmgiCisjaW5jbHVkZSAiQnl0ZWNvZGVzLmgiCisjaW5jbHVkZSAiT3Bjb2RlLmgiCisj
aW5jbHVkZSAiVW5saW5rZWRDb2RlQmxvY2suaCIKKyNpbmNsdWRlIDx3dGYvSW5zZXJ0aW9uLmg+
CisKK25hbWVzcGFjZSBKU0MgeworCisvLyBCeXRlY29kZVJld3JpdGVyIG9mZmVycyB0aGUgYWJp
bGl0eSB0byBpbnNlcnQgYW5kIHJlbW92ZSB0aGUgYnl0ZWNvZGVzIGluY2x1ZGluZyBqdW1wIG9w
ZXJhdGlvbnMuCisvLworLy8gV2UgdXNlIHRoZSBvcmlnaW5hbCBieXRlY29kZSBvZmZzZXRzIGFz
IGxhYmVscy4gV2hlbiB5b3UgZW1pdCBzb21lIGp1bXBzLCB5b3UgY2FuIHNwZWNpZnkgdGhlIGp1
bXAgdGFyZ2V0IGJ5CisvLyB1c2luZyB0aGUgb3JpZ2luYWwgYnl0ZWNvZGUgb2Zmc2V0cy4gVGhl
c2UgYnl0ZWNvZGUgb2Zmc2V0cyBhcmUgbGF0ZXIgY29udmVydGVkIGFwcHJvcHJpYXRlIHZhbHVl
cyBieSB0aGUKKy8vIHJld3JpdGVyLiBBbmQgd2UgYWxzbyB1c2UgdGhlIGxhYmVscyB0byByZXBy
ZXNlbnRzIHRoZSBwb3NpdGlvbiB0aGUgbmV3IGJ5dGVjb2RlcyBpbnNlcnRlZC4KKy8vCisvLyAg
ICAgICAgICAgICAgICAgICAgICB8ICBbYnl0ZWNvZGVdICB8ICBbYnl0ZWNvZGVdICB8CisvLyAg
IG9mZnNldHMgICAgICAgICAgICBBICAgICAgICAgICAgICBCICAgICAgICAgICAgICBDCisvLwor
Ly8gV2UgY2FuIHVzZSB0aGUgYWJvdmUgIkEiLCAiQiIsIGFuZCAiQyIgb2Zmc2V0cyBhcyBsYWJl
bHMuIEFuZCB0aGUgcmV3cml0ZXIgaGFzIHRoZSBhYmlsaXR5IHRvIGluc2VydCBieXRlY29kZSBm
cmFnbWVudHMKKy8vIGJlZm9yZSBhbmQgYWZ0ZXIgdGhlIGxhYmVsLiBGb3IgZXhhbXBsZSwgaWYg
eW91IGluc2VydCB0aGUgZnJhZ21lbnQgYmVmb3JlICJCIiwgdGhlIGxheW91dCBiZWNvbWVzIGxp
a2UgdGhpcy4KKy8vCisvLyAgICAgICAgICAgICAgICAgICAgICB8ICBbYnl0ZWNvZGVdICB8ICBb
ZnJhZ21lbnRdICBbYnl0ZWNvZGVdICB8CisvLyAgIG9mZnNldHMgICAgICAgICAgICBBICAgICAg
ICAgICAgICBCICAgICAgICAgICAgICAgICAgICAgICAgICBDCisvLworLy8gIEFuZCBldmVuIGlm
IHlvdSByZW1vdmUgc29tZSBvcmlnaW5hbCBieXRlY29kZXMsIHRoZSBvZmZzZXQgcmVtYWlucyBh
cyBsYWJlbHMuIEZvciBleGFtcGxlLCB3aGVuIHlvdSByZW1vdmUgdGhlIEEncyBieXRlY29kZSwK
Ky8vICB0aGUgbGF5b3V0IGJlY29tZXMgbGlrZSB0aGlzLgorLy8KKy8vICAgICAgICAgICAgICAg
ICAgICAgIHwgICAgICAgICAgICAgIHwgIFtieXRlY29kZV0gIHwKKy8vICAgb2Zmc2V0cyAgICAg
ICAgICAgIEEgICAgICAgICAgICAgIEIgICAgICAgICAgICAgIEMKKy8vCisvLyAgQW5kIHN0aWxs
IHlvdSBjYW4gaW5zZXJ0IGZyYWdtZW50cyBiZWZvcmUgYW5kIGFmdGVyICJBIi4KKy8vCisvLyAg
ICAgICAgICAgICAgICAgICAgICB8ICBbZnJhZ21lbnRdICB8ICBbYnl0ZWNvZGVdICB8CisvLyAg
IG9mZnNldHMgICAgICAgICAgICBBICAgICAgICAgICAgICBCICAgICAgICAgICAgICBDCisvLwor
Ly8gICBXZSBjYW4gaW5zZXJ0IGJ5dGVjb2RlIGZyYWdtZW50cyAiQmVmb3JlIiBhbmQgIkFmdGVy
IiB0aGUgbGFiZWxzLiBUaGlzIGluc2VydGVkIHBvc2l0aW9uLCBlaXRoZXIgIkJlZm9yZSIgYW5k
ICJBZnRlciIsCisvLyAgIGhhcyBlZmZlY3Qgd2hlbiB0aGUgbGFiZWwgaXMgaW52b2x2ZWQgd2l0
aCBqdW1wcy4gRm9yIGV4YW1wbGUsIHdoZW4geW91IGhhdmUganVtcCB0byB0aGUgcG9zaXRpb24g
IkIiLAorLy8KKy8vICAgICAgICAgICAgICAgICAgICAgIHwgIFtieXRlY29kZV0gIHwgIFtieXRl
Y29kZV0gIHwKKy8vICAgb2Zmc2V0cyAgICAgICAgICAgIEEgICAgICAgICAgICAgIEIgICAgICAg
ICAgICAgIEMKKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KKy8vICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGp1bXAgdG8gaGVyZS4KKy8vCisvLyAg
YW5kIHlvdSBpbnNlcnQgdGhlIGJ5dGVjb2RlIGJlZm9yZS9hZnRlciAiQiIsCisvLworLy8gICAg
ICAgICAgICAgICAgICAgICAgfCAgW2J5dGVjb2RlXSBbYmVmb3JlXSAgfCAgW2FmdGVyXSBbYnl0
ZWNvZGVdICB8CisvLyAgIG9mZnNldHMgICAgICAgICAgICBBICAgICAgICAgICAgICAgICAgICAg
ICBCICAgICAgICAgICAgICBDCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBeCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBqdW1wIHRvIGhlcmUuCisvLworLy8gIGFzIHlvdSBjYW4gc2VlLCB0aGUgZXhlY3V0aW9u
IGp1bXBpbmcgaW50byAiQiIgZG9lcyBub3QgZXhlY3V0ZSBbYmVmb3JlXSBjb2RlLgorY2xhc3Mg
Qnl0ZWNvZGVSZXdyaXRlciB7CitXVEZfTUFLRV9OT05DT1BZQUJMRShCeXRlY29kZVJld3JpdGVy
KTsKK3B1YmxpYzoKKyAgICBlbnVtIGNsYXNzIFBvc2l0aW9uIDogaW50OF90IHsKKyAgICAgICAg
RW50cnlQb2ludCA9IC0yLAorICAgICAgICBCZWZvcmUgPSAtMSwKKyAgICAgICAgTGFiZWxQb2lu
dCA9IDAsCisgICAgICAgIEFmdGVyID0gMSwKKyAgICAgICAgT3JpZ2luYWxCeXRlY29kZVBvaW50
ID0gMiwKKyAgICB9OworCisgICAgZW51bSBjbGFzcyBJbmNsdWRlQnJhbmNoIDogdWludDhfdCB7
CisgICAgICAgIE5vID0gMCwKKyAgICAgICAgWWVzID0gMSwKKyAgICB9OworCisgICAgc3RydWN0
IEluc2VydGlvblBvaW50IHsKKyAgICAgICAgaW50IGJ5dGVjb2RlT2Zmc2V0OworICAgICAgICBQ
b3NpdGlvbiBwb3NpdGlvbjsKKworICAgICAgICBJbnNlcnRpb25Qb2ludChpbnQgb2Zmc2V0LCBQ
b3NpdGlvbiBwb3MpCisgICAgICAgICAgICA6IGJ5dGVjb2RlT2Zmc2V0KG9mZnNldCkKKyAgICAg
ICAgICAgICwgcG9zaXRpb24ocG9zKQorICAgICAgICB7CisgICAgICAgIH0KKworICAgICAgICBi
b29sIG9wZXJhdG9yPChjb25zdCBJbnNlcnRpb25Qb2ludCYgb3RoZXIpIGNvbnN0CisgICAgICAg
IHsKKyAgICAgICAgICAgIGlmIChieXRlY29kZU9mZnNldCA9PSBvdGhlci5ieXRlY29kZU9mZnNl
dCkKKyAgICAgICAgICAgICAgICByZXR1cm4gcG9zaXRpb24gPCBvdGhlci5wb3NpdGlvbjsKKyAg
ICAgICAgICAgIHJldHVybiBieXRlY29kZU9mZnNldCA8IG90aGVyLmJ5dGVjb2RlT2Zmc2V0Owor
ICAgICAgICB9CisgICAgfTsKKworcHJpdmF0ZToKKyAgICBzdHJ1Y3QgSW5zZXJ0aW9uIHsKKyAg
ICAgICAgZW51bSBjbGFzcyBUeXBlIDogdWludDhfdCB7IEluc2VydCA9IDAsIFJlbW92ZSA9IDEs
IH07CisKKyAgICAgICAgc2l6ZV90IGxlbmd0aCgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAg
ICAgIGlmICh0eXBlID09IFR5cGU6OlJlbW92ZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVt
b3ZlTGVuZ3RoOworICAgICAgICAgICAgcmV0dXJuIGluc3RydWN0aW9ucy5zaXplKCk7CisgICAg
ICAgIH0KKworICAgICAgICBJbnNlcnRpb25Qb2ludCBpbmRleDsKKyAgICAgICAgVHlwZSB0eXBl
OworICAgICAgICBJbmNsdWRlQnJhbmNoIGluY2x1ZGVCcmFuY2g7CisgICAgICAgIHNpemVfdCBy
ZW1vdmVMZW5ndGg7CisgICAgICAgIFZlY3RvcjxVbmxpbmtlZEluc3RydWN0aW9uPiBpbnN0cnVj
dGlvbnM7CisgICAgfTsKKworcHVibGljOgorICAgIGNsYXNzIEZyYWdtZW50IHsKKyAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShGcmFnbWVudCk7CisgICAgcHVibGljOgorICAgICAgICBGcmFnbWVu
dChWZWN0b3I8VW5saW5rZWRJbnN0cnVjdGlvbj4mIGZyYWdtZW50LCBJbmNsdWRlQnJhbmNoJiBp
bmNsdWRlQnJhbmNoKQorICAgICAgICAgICAgOiBtX2ZyYWdtZW50KGZyYWdtZW50KQorICAgICAg
ICAgICAgLCBtX2luY2x1ZGVCcmFuY2goaW5jbHVkZUJyYW5jaCkKKyAgICAgICAgeworICAgICAg
ICB9CisKKyAgICAgICAgdGVtcGxhdGU8Y2xhc3MuLi4gQXJncz4KKyAgICAgICAgdm9pZCBhcHBl
bmRJbnN0cnVjdGlvbihPcGNvZGVJRCBvcGNvZGVJRCwgQXJncy4uLiBhcmdzKQorICAgICAgICB7
CisgICAgICAgICAgICBpZiAoaXNCcmFuY2gob3Bjb2RlSUQpKQorICAgICAgICAgICAgICAgIG1f
aW5jbHVkZUJyYW5jaCA9IEluY2x1ZGVCcmFuY2g6OlllczsKKworICAgICAgICAgICAgVW5saW5r
ZWRJbnN0cnVjdGlvbiBpbnN0cnVjdGlvbnNbc2l6ZW9mLi4uKGFyZ3MpICsgMV0gPSB7CisgICAg
ICAgICAgICAgICAgVW5saW5rZWRJbnN0cnVjdGlvbihvcGNvZGVJRCksCisgICAgICAgICAgICAg
ICAgVW5saW5rZWRJbnN0cnVjdGlvbihhcmdzKS4uLgorICAgICAgICAgICAgfTsKKyAgICAgICAg
ICAgIG1fZnJhZ21lbnQuYXBwZW5kKGluc3RydWN0aW9ucywgc2l6ZW9mLi4uKGFyZ3MpICsgMSk7
CisgICAgICAgIH0KKworICAgIHByaXZhdGU6CisgICAgICAgIFZlY3RvcjxVbmxpbmtlZEluc3Ry
dWN0aW9uPiYgbV9mcmFnbWVudDsKKyAgICAgICAgSW5jbHVkZUJyYW5jaCYgbV9pbmNsdWRlQnJh
bmNoOworICAgIH07CisKKyAgICBCeXRlY29kZVJld3JpdGVyKEJ5dGVjb2RlR3JhcGg8VW5saW5r
ZWRDb2RlQmxvY2s+JiBncmFwaCkKKyAgICAgICAgOiBtX2dyYXBoKGdyYXBoKQorICAgIHsKKyAg
ICB9CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBGdW5jdGlvbj4KKyAgICB2b2lkIGluc2VydEZyYWdt
ZW50QmVmb3JlKHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBGdW5jdGlvbiBmdW5jdGlvbikKKyAg
ICB7CisgICAgICAgIEluY2x1ZGVCcmFuY2ggaW5jbHVkZUJyYW5jaCA9IEluY2x1ZGVCcmFuY2g6
Ok5vOworICAgICAgICBWZWN0b3I8VW5saW5rZWRJbnN0cnVjdGlvbj4gaW5zdHJ1Y3Rpb25zOwor
ICAgICAgICBGcmFnbWVudCBmcmFnbWVudChpbnN0cnVjdGlvbnMsIGluY2x1ZGVCcmFuY2gpOwor
ICAgICAgICBmdW5jdGlvbihmcmFnbWVudCk7CisgICAgICAgIGluc2VydEltcGwoSW5zZXJ0aW9u
UG9pbnQoYnl0ZWNvZGVPZmZzZXQsIFBvc2l0aW9uOjpCZWZvcmUpLCBpbmNsdWRlQnJhbmNoLCBX
VEZNb3ZlKGluc3RydWN0aW9ucykpOworICAgIH0KKworICAgIHRlbXBsYXRlPGNsYXNzIEZ1bmN0
aW9uPgorICAgIHZvaWQgaW5zZXJ0RnJhZ21lbnRBZnRlcih1bnNpZ25lZCBieXRlY29kZU9mZnNl
dCwgRnVuY3Rpb24gZnVuY3Rpb24pCisgICAgeworICAgICAgICBJbmNsdWRlQnJhbmNoIGluY2x1
ZGVCcmFuY2ggPSBJbmNsdWRlQnJhbmNoOjpObzsKKyAgICAgICAgVmVjdG9yPFVubGlua2VkSW5z
dHJ1Y3Rpb24+IGluc3RydWN0aW9uczsKKyAgICAgICAgRnJhZ21lbnQgZnJhZ21lbnQoaW5zdHJ1
Y3Rpb25zLCBpbmNsdWRlQnJhbmNoKTsKKyAgICAgICAgZnVuY3Rpb24oZnJhZ21lbnQpOworICAg
ICAgICBpbnNlcnRJbXBsKEluc2VydGlvblBvaW50KGJ5dGVjb2RlT2Zmc2V0LCBQb3NpdGlvbjo6
QWZ0ZXIpLCBpbmNsdWRlQnJhbmNoLCBXVEZNb3ZlKGluc3RydWN0aW9ucykpOworICAgIH0KKwor
ICAgIHZvaWQgcmVtb3ZlQnl0ZWNvZGUodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpCisgICAgewor
ICAgICAgICBtX2luc2VydGlvbnMuYXBwZW5kKEluc2VydGlvbiB7IEluc2VydGlvblBvaW50KGJ5
dGVjb2RlT2Zmc2V0LCBQb3NpdGlvbjo6T3JpZ2luYWxCeXRlY29kZVBvaW50KSwgSW5zZXJ0aW9u
OjpUeXBlOjpSZW1vdmUsIEluY2x1ZGVCcmFuY2g6Ok5vLCBvcGNvZGVMZW5ndGgobV9ncmFwaC5p
bnN0cnVjdGlvbnMoKVtieXRlY29kZU9mZnNldF0udS5vcGNvZGUpLCB7IH0gfSk7CisgICAgfQor
CisgICAgdm9pZCBleGVjdXRlKCk7CisKKyAgICBCeXRlY29kZUdyYXBoPFVubGlua2VkQ29kZUJs
b2NrPiYgZ3JhcGgoKSB7IHJldHVybiBtX2dyYXBoOyB9CisKKyAgICBpbnQgYWRqdXN0T2Zmc2V0
KGludCBieXRlY29kZU9mZnNldCwgaW50IGp1bXBUYXJnZXQpCisgICAgeworICAgICAgICByZXR1
cm4gYWRqdXN0T2Zmc2V0V2l0aEluc2VydGlvbnMoYnl0ZWNvZGVPZmZzZXQsIGp1bXBUYXJnZXQs
IG1faW5zZXJ0aW9ucy5iZWdpbigpLCBtX2luc2VydGlvbnMuZW5kKCkpOworICAgIH0KKworcHJp
dmF0ZToKKyAgICB2b2lkIGluc2VydEltcGwoSW5zZXJ0aW9uUG9pbnQsIEluY2x1ZGVCcmFuY2gs
IFZlY3RvcjxVbmxpbmtlZEluc3RydWN0aW9uPiYmIGZyYWdtZW50KTsKKworICAgIGZyaWVuZCBj
bGFzcyBVbmxpbmtlZENvZGVCbG9jazsKKyAgICB2b2lkIGFwcGx5TW9kaWZpY2F0aW9uKCk7Cisg
ICAgdm9pZCBhZGp1c3RKdW1wVGFyZ2V0cyh1bnNpZ25lZCBmaW5hbE9mZnNldCwgSW5zZXJ0aW9u
Jik7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJdGVyYXRvcj4gaW50IGFkanVzdE9mZnNldFdp
dGhJbnNlcnRpb25zKGludCBieXRlY29kZU9mZnNldCwgaW50IGp1bXBUYXJnZXQsIEl0ZXJhdG9y
IGluc2VydGlvbnNCZWdpbiwgSXRlcmF0b3IgaW5zZXJ0aW9uc0VuZCk7CisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgSXRlcmF0b3I+IGludCBjYWxjdWxhdGVEaWZmZXJlbmNlKEl0ZXJhdG9yIGJlZ2lu
LCBJdGVyYXRvciBlbmQpOworCisgICAgQnl0ZWNvZGVHcmFwaDxVbmxpbmtlZENvZGVCbG9jaz4m
IG1fZ3JhcGg7CisgICAgVmVjdG9yPEluc2VydGlvbiwgOD4gbV9pbnNlcnRpb25zOworfTsKKwor
dGVtcGxhdGU8dHlwZW5hbWUgSXRlcmF0b3I+CitpbmxpbmUgaW50IEJ5dGVjb2RlUmV3cml0ZXI6
OmFkanVzdE9mZnNldFdpdGhJbnNlcnRpb25zKGludCBieXRlY29kZU9mZnNldCwgaW50IGp1bXBU
YXJnZXQsIEl0ZXJhdG9yIGluc2VydGlvbnNCZWdpbiwgSXRlcmF0b3IgaW5zZXJ0aW9uc0VuZCkK
K3sKKyAgICBpZiAoYnl0ZWNvZGVPZmZzZXQgPCBqdW1wVGFyZ2V0KSB7CisgICAgICAgIEluc2Vy
dGlvblBvaW50IHN0YXJ0UG9pbnQoYnl0ZWNvZGVPZmZzZXQsIFBvc2l0aW9uOjpMYWJlbFBvaW50
KTsKKyAgICAgICAgSW5zZXJ0aW9uUG9pbnQganVtcFRhcmdldFBvaW50KGp1bXBUYXJnZXQsIFBv
c2l0aW9uOjpMYWJlbFBvaW50KTsKKyAgICAgICAgYXV0byBzdGFydCA9IHN0ZDo6bG93ZXJfYm91
bmQoaW5zZXJ0aW9uc0JlZ2luLCBpbnNlcnRpb25zRW5kLCBzdGFydFBvaW50LCBbJl0gKGNvbnN0
IEluc2VydGlvbiYgaW5zZXJ0aW9uLCBJbnNlcnRpb25Qb2ludCBzdGFydFBvaW50KSB7CisgICAg
ICAgICAgICByZXR1cm4gaW5zZXJ0aW9uLmluZGV4IDwgc3RhcnRQb2ludDsKKyAgICAgICAgfSk7
CisgICAgICAgIGlmIChzdGFydCAhPSBpbnNlcnRpb25zRW5kKSB7CisgICAgICAgICAgICBhdXRv
IGVuZCA9IHN0ZDo6bG93ZXJfYm91bmQoaW5zZXJ0aW9uc0JlZ2luLCBpbnNlcnRpb25zRW5kLCBq
dW1wVGFyZ2V0UG9pbnQsIFsmXSAoY29uc3QgSW5zZXJ0aW9uJiBpbnNlcnRpb24sIEluc2VydGlv
blBvaW50IGp1bXBUYXJnZXRQb2ludCkgeworICAgICAgICAgICAgICAgIHJldHVybiBpbnNlcnRp
b24uaW5kZXggPCBqdW1wVGFyZ2V0UG9pbnQ7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAg
IGp1bXBUYXJnZXQgKz0gY2FsY3VsYXRlRGlmZmVyZW5jZShzdGFydCwgZW5kKTsKKyAgICAgICAg
fQorICAgICAgICByZXR1cm4ganVtcFRhcmdldCAtIGJ5dGVjb2RlT2Zmc2V0OworICAgIH0KKwor
ICAgIGlmIChieXRlY29kZU9mZnNldCA9PSBqdW1wVGFyZ2V0KQorICAgICAgICByZXR1cm4gMDsK
KworICAgIHJldHVybiAtYWRqdXN0T2Zmc2V0V2l0aEluc2VydGlvbnMoanVtcFRhcmdldCwgYnl0
ZWNvZGVPZmZzZXQsIGluc2VydGlvbnNCZWdpbiwgaW5zZXJ0aW9uc0VuZCk7Cit9CisKK3RlbXBs
YXRlPHR5cGVuYW1lIEl0ZXJhdG9yPgoraW5saW5lIGludCBCeXRlY29kZVJld3JpdGVyOjpjYWxj
dWxhdGVEaWZmZXJlbmNlKEl0ZXJhdG9yIGJlZ2luLCBJdGVyYXRvciBlbmQpCit7CisgICAgaW50
IHJlc3VsdCA9IDA7CisgICAgZm9yICg7IGJlZ2luICE9IGVuZDsgKytiZWdpbikgeworICAgICAg
ICBpZiAoYmVnaW4tPnR5cGUgPT0gSW5zZXJ0aW9uOjpUeXBlOjpSZW1vdmUpCisgICAgICAgICAg
ICByZXN1bHQgLT0gYmVnaW4tPmxlbmd0aCgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBy
ZXN1bHQgKz0gYmVnaW4tPmxlbmd0aCgpOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQor
Cit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZVVzZURlZi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlVXNlRGVmLmgKaW5kZXggNjA1N2VmNjA5ZWVkMWVlMmE5OWIwNzYyOGI5MWM5NzU1
MzNmZTRiYi4uNGYxNGIyMzA5MDRjMWQ2ZjZkNzNiZjY4MGRjMDMyNGFlZmM2ZjZiNiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKQEAgLTMw
LDE1ICszMCw5IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi10ZW1wbGF0ZTx0eXBlbmFtZSBGdW5j
dG9yPgotdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAotICAgIENvZGVCbG9jayog
Y29kZUJsb2NrLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9m
ZnNldCwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikKK3RlbXBsYXRlPHR5cGVuYW1lIEJsb2NrLCB0
eXBlbmFtZSBGdW5jdG9yLCB0eXBlbmFtZSBJbnN0cnVjdGlvbj4KK3ZvaWQgY29tcHV0ZVVzZXNG
b3JCeXRlY29kZU9mZnNldChCbG9jayogY29kZUJsb2NrLCBPcGNvZGVJRCBvcGNvZGVJRCwgSW5z
dHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQogewotICAgIElu
dGVycHJldGVyKiBpbnRlcnByZXRlciA9IGNvZGVCbG9jay0+dm0oKS0+aW50ZXJwcmV0ZXI7Ci0g
ICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luID0gY29kZUJsb2NrLT5pbnN0cnVjdGlv
bnMoKS5iZWdpbigpOwotICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9ICZpbnN0cnVjdGlv
bnNCZWdpbltieXRlY29kZU9mZnNldF07Ci0gICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnRlcnBy
ZXRlci0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb24tPnUub3Bjb2RlKTsKLQogICAgIGlmIChvcGNv
ZGVJRCAhPSBvcF9lbnRlciAmJiBjb2RlQmxvY2stPndhc0NvbXBpbGVkV2l0aERlYnVnZ2luZ09w
Y29kZXMoKSAmJiBjb2RlQmxvY2stPnNjb3BlUmVnaXN0ZXIoKS5pc1ZhbGlkKCkpCiAgICAgICAg
IGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGNvZGVCbG9jay0+c2Nv
cGVSZWdpc3RlcigpLm9mZnNldCgpKTsKIApAQCAtNzUsOCArNjksNyBAQCB2b2lkIGNvbXB1dGVV
c2VzRm9yQnl0ZWNvZGVPZmZzZXQoCiAgICAgY2FzZSBvcF9qbmVxX251bGw6CiAgICAgY2FzZSBv
cF9kZWM6CiAgICAgY2FzZSBvcF9pbmM6Ci0gICAgY2FzZSBvcF9sb2dfc2hhZG93X2NoaWNrZW5f
cHJvbG9ndWU6Ci0gICAgY2FzZSBvcF9yZXN1bWU6IHsKKyAgICBjYXNlIG9wX2xvZ19zaGFkb3df
Y2hpY2tlbl9wcm9sb2d1ZTogewogICAgICAgICBBU1NFUlQob3Bjb2RlTGVuZ3Roc1tvcGNvZGVJ
RF0gPiAxKTsKICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJ
RCwgaW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjg3LDIw
ICsyODAsOSBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoCiAgICAgICAgICAg
ICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBjb2RlQmxvY2stPnNj
b3BlUmVnaXN0ZXIoKS5vZmZzZXQoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgY2Fz
ZSBvcF9zYXZlOiB7CisgICAgY2FzZSBvcF95aWVsZDogewogICAgICAgICBmdW5jdG9yKGNvZGVC
bG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBpbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOwot
ICAgICAgICB1bnNpZ25lZCBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXQgPSBieXRlY29kZU9mZnNl
dCArIGluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKLSAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2Nr
KiBtZXJnZVBvaW50QmxvY2sgPSBudWxscHRyOwotICAgICAgICBmb3IgKEJ5dGVjb2RlQmFzaWNC
bG9jayogc3VjY2Vzc29yIDogYmxvY2stPnN1Y2Nlc3NvcnMoKSkgewotICAgICAgICAgICAgaWYg
KHN1Y2Nlc3Nvci0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKSA9PSBtZXJnZVBvaW50Qnl0ZWNvZGVP
ZmZzZXQpIHsKLSAgICAgICAgICAgICAgICBtZXJnZVBvaW50QmxvY2sgPSBzdWNjZXNzb3I7Ci0g
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAg
QVNTRVJUKG1lcmdlUG9pbnRCbG9jayk7Ci0gICAgICAgIG1lcmdlUG9pbnRCbG9jay0+aW4oKS5m
b3JFYWNoU2V0Qml0KFsmXSh1bnNpZ25lZCBsb2NhbCkgewotICAgICAgICAgICAgZnVuY3Rvcihj
b2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwo
bG9jYWwpLm9mZnNldCgpKTsKLSAgICAgICAgfSk7CisgICAgICAgIGZ1bmN0b3IoY29kZUJsb2Nr
LCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzNdLnUub3BlcmFuZCk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAgICAgZGVmYXVsdDoKQEAgLTMwOSwyMCArMjkxLDE1IEBAIHZv
aWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCgKICAgICB9CiB9CiAKLXRlbXBsYXRlPHR5
cGVuYW1lIEZ1bmN0b3I+Ci12b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJs
b2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2ssIHVuc2lnbmVkIGJ5dGVj
b2RlT2Zmc2V0LCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQordGVtcGxhdGU8dHlwZW5hbWUgQmxv
Y2ssIHR5cGVuYW1lIEluc3RydWN0aW9uLCB0eXBlbmFtZSBGdW5jdG9yPgordm9pZCBjb21wdXRl
RGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KEJsb2NrKiBjb2RlQmxvY2ssIE9wY29kZUlEIG9wY29kZUlE
LCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiB7Ci0g
ICAgSW50ZXJwcmV0ZXIqIGludGVycHJldGVyID0gY29kZUJsb2NrLT52bSgpLT5pbnRlcnByZXRl
cjsKLSAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4gPSBjb2RlQmxvY2stPmluc3Ry
dWN0aW9ucygpLmJlZ2luKCk7Ci0gICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uID0gJmluc3Ry
dWN0aW9uc0JlZ2luW2J5dGVjb2RlT2Zmc2V0XTsKLSAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGlu
dGVycHJldGVyLT5nZXRPcGNvZGVJRChpbnN0cnVjdGlvbi0+dS5vcGNvZGUpOwogICAgIHN3aXRj
aCAob3Bjb2RlSUQpIHsKICAgICAvLyBUaGVzZSBkb24ndCBkZWZpbmUgYW55dGhpbmcuCiAgICAg
Y2FzZSBvcF9wdXRfdG9fc2NvcGU6CiAgICAgY2FzZSBvcF9lbmQ6CiAgICAgY2FzZSBvcF90aHJv
dzoKICAgICBjYXNlIG9wX3Rocm93X3N0YXRpY19lcnJvcjoKLSAgICBjYXNlIG9wX3NhdmU6CiAg
ICAgY2FzZSBvcF9hc3NlcnQ6CiAgICAgY2FzZSBvcF9kZWJ1ZzoKICAgICBjYXNlIG9wX3JldDoK
QEAgLTM2Miw2ICszMzksNyBAQCB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQ29k
ZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvYwogICAgIGNhc2Ugb3Bf
d2F0Y2hkb2c6CiAgICAgY2FzZSBvcF9sb2dfc2hhZG93X2NoaWNrZW5fcHJvbG9ndWU6CiAgICAg
Y2FzZSBvcF9sb2dfc2hhZG93X2NoaWNrZW5fdGFpbDoKKyAgICBjYXNlIG9wX3lpZWxkOgogI2Rl
ZmluZSBMTElOVF9IRUxQRVJfT1BDT0RFUyhvcGNvZGUsIGxlbmd0aCkgY2FzZSBvcGNvZGU6CiAg
ICAgICAgIEZPUl9FQUNIX0xMSU5UX09QQ09ERV9FWFRFTlNJT04oTExJTlRfSEVMUEVSX09QQ09E
RVMpOwogI3VuZGVmIExMSU5UX0hFTFBFUl9PUENPREVTCkBAIC00ODAsMTUgKzQ1OCw2IEBAIHZv
aWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0
ZWNvZGVCYXNpY0Jsb2NrKiBibG9jCiAgICAgICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5z
dHJ1Y3Rpb24sIG9wY29kZUlELCB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChpKS5vZmZzZXQoKSk7
CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgY2FzZSBvcF9yZXN1bWU6IHsKLSAgICAgICAg
UkVMRUFTRV9BU1NFUlQoYmxvY2stPnN1Y2Nlc3NvcnMoKS5zaXplKCkgPT0gMSk7Ci0gICAgICAg
IC8vIEZJWE1FOiBUaGlzIGlzIHJlYWxseSBkaXJ0eS4KLSAgICAgICAgLy8gaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1OTI4MQotICAgICAgICBibG9jay0+c3VjY2Vz
c29ycygpWzBdLT5pbigpLmZvckVhY2hTZXRCaXQoWyZdKHVuc2lnbmVkIGxvY2FsKSB7Ci0gICAg
ICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCB2aXJ0dWFs
UmVnaXN0ZXJGb3JMb2NhbChsb2NhbCkub2Zmc2V0KCkpOwotICAgICAgICB9KTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5jcHAKaW5kZXggMWQ5MTM1YTIzNzM5MTYzMDkxOGZkNTVhNmU1NDI1ODk3
MTVjZDBiNS4uNTg2Y2NmNTI4ZDRiZmFkMmFiOTBiOWVhZTY2NDZiMWVhMmQxNDEwYSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTMzLDYgKzMz
LDcgQEAKICNpbmNsdWRlICJBcml0aFByb2ZpbGUuaCIKICNpbmNsdWRlICJCYXNpY0Jsb2NrTG9j
YXRpb24uaCIKICNpbmNsdWRlICJCeXRlY29kZUdlbmVyYXRvci5oIgorI2luY2x1ZGUgIkJ5dGVj
b2RlTGl2ZW5lc3NBbmFseXNpcy5oIgogI2luY2x1ZGUgIkJ5dGVjb2RlVXNlRGVmLmgiCiAjaW5j
bHVkZSAiQ2FsbExpbmtTdGF0dXMuaCIKICNpbmNsdWRlICJERkdDYXBhYmlsaXRpZXMuaCIKQEAg
LTY5NiwxOCArNjk3LDYgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZShQcmludFN0cmVh
bSYgb3V0KQogICAgICAgICB9IHdoaWxlIChpIDwgbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hK
dW1wVGFibGVzLnNpemUoKSk7CiAgICAgfQogCi0gICAgaWYgKG1fcmFyZURhdGEgJiYgIW1fcmFy
ZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQuaXNFbXB0eSgpKSB7Ci0gICAgICAgIG91
dC5wcmludGYoIlxuTGl2ZSBDYWxsZWUgTG9jYWxzOlxuIik7Ci0gICAgICAgIHVuc2lnbmVkIGkg
PSAwOwotICAgICAgICBkbyB7Ci0gICAgICAgICAgICBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZl
bmVzcyA9IG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGRbaV07Ci0gICAgICAg
ICAgICBvdXQucHJpbnRmKCIgIGxpdmUlMXUgPSAiLCBpKTsKLSAgICAgICAgICAgIGxpdmVuZXNz
LmR1bXAob3V0KTsKLSAgICAgICAgICAgIG91dC5wcmludGYoIlxuIik7Ci0gICAgICAgICAgICAr
K2k7Ci0gICAgICAgIH0gd2hpbGUgKGkgPCBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNB
dFlpZWxkLnNpemUoKSk7Ci0gICAgfQotCiAgICAgb3V0LnByaW50ZigiXG4iKTsKIH0KIApAQCAt
MTY3MSwzMSArMTY2MCw2IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoCiAgICAgICAg
ICAgICBvdXQucHJpbnRmKCIlcywgJWQiLCBkZWJ1Z0hvb2tOYW1lKGRlYnVnSG9va0lEKSwgaGFz
QnJlYWtwb2ludEZsYWcpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAg
Y2FzZSBvcF9zYXZlOiB7Ci0gICAgICAgICAgICBpbnQgZ2VuZXJhdG9yID0gKCsraXQpLT51Lm9w
ZXJhbmQ7Ci0gICAgICAgICAgICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSAoKytp
dCktPnUudW5zaWduZWRWYWx1ZTsKLSAgICAgICAgICAgIGludCBvZmZzZXQgPSAoKytpdCktPnUu
b3BlcmFuZDsKLSAgICAgICAgICAgIEZhc3RCaXRWZWN0b3IgbGl2ZW5lc3M7Ci0gICAgICAgICAg
ICBpZiAobGl2ZUNhbGxlZUxvY2Fsc0luZGV4IDwgbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9j
YWxzQXRZaWVsZC5zaXplKCkpCi0gICAgICAgICAgICAgICAgbGl2ZW5lc3MgPSBtX3JhcmVEYXRh
LT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkW2xpdmVDYWxsZWVMb2NhbHNJbmRleF07Ci0gICAg
ICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJzYXZl
Iik7Ci0gICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgIiwgcmVnaXN0ZXJOYW1lKGdlbmVyYXRv
cikuZGF0YSgpKTsKLSAgICAgICAgICAgIGxpdmVuZXNzLmR1bXAob3V0KTsKLSAgICAgICAgICAg
IG91dC5wcmludGYoIihAbGl2ZSUxdSksICVkKC0+JWQpIiwgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4
LCBvZmZzZXQsIGxvY2F0aW9uICsgb2Zmc2V0KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICB9Ci0gICAgICAgIGNhc2Ugb3BfcmVzdW1lOiB7Ci0gICAgICAgICAgICBpbnQgZ2VuZXJhdG9y
ID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9j
YWxzSW5kZXggPSAoKytpdCktPnUudW5zaWduZWRWYWx1ZTsKLSAgICAgICAgICAgIEZhc3RCaXRW
ZWN0b3IgbGl2ZW5lc3M7Ci0gICAgICAgICAgICBpZiAobGl2ZUNhbGxlZUxvY2Fsc0luZGV4IDwg
bV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZC5zaXplKCkpCi0gICAgICAgICAg
ICAgICAgbGl2ZW5lc3MgPSBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkW2xp
dmVDYWxsZWVMb2NhbHNJbmRleF07Ci0gICAgICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0
LCBleGVjLCBsb2NhdGlvbiwgaXQsICJyZXN1bWUiKTsKLSAgICAgICAgICAgIG91dC5wcmludGYo
IiVzLCAiLCByZWdpc3Rlck5hbWUoZ2VuZXJhdG9yKS5kYXRhKCkpOwotICAgICAgICAgICAgbGl2
ZW5lc3MuZHVtcChvdXQpOwotICAgICAgICAgICAgb3V0LnByaW50ZigiKEBsaXZlJTF1KSIsIGxp
dmVDYWxsZWVMb2NhbHNJbmRleCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQogICAg
ICAgICBjYXNlIG9wX2Fzc2VydDogewogICAgICAgICAgICAgaW50IGNvbmRpdGlvbiA9ICgrK2l0
KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IGxpbmUgPSAoKytpdCktPnUub3BlcmFuZDsK
QEAgLTE5MDcsNyArMTg3MSw2IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYg
dm0sIENvcHlQYXJzZWRCbG9ja1RhZywgQ29kZUJsb2NrJiBvdGhlcikKICAgICAgICAgbV9yYXJl
RGF0YS0+bV9jb25zdGFudEJ1ZmZlcnMgPSBvdGhlci5tX3JhcmVEYXRhLT5tX2NvbnN0YW50QnVm
ZmVyczsKICAgICAgICAgbV9yYXJlRGF0YS0+bV9zd2l0Y2hKdW1wVGFibGVzID0gb3RoZXIubV9y
YXJlRGF0YS0+bV9zd2l0Y2hKdW1wVGFibGVzOwogICAgICAgICBtX3JhcmVEYXRhLT5tX3N0cmlu
Z1N3aXRjaEp1bXBUYWJsZXMgPSBvdGhlci5tX3JhcmVEYXRhLT5tX3N0cmluZ1N3aXRjaEp1bXBU
YWJsZXM7Ci0gICAgICAgIG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQgPSBv
dGhlci5tX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkOwogICAgIH0KICAgICAK
ICAgICBoZWFwKCktPm1fY29kZUJsb2Nrcy5hZGQodGhpcyk7CkBAIC0yMDI5LDcgKzE5OTIsNyBA
QCB2b2lkIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxl
KiBvd25lckV4ZWN1dGFibGUsIFVubGluawogICAgICAgICAgICAgICAgIFVubGlua2VkU3RyaW5n
SnVtcFRhYmxlOjpTdHJpbmdPZmZzZXRUYWJsZTo6aXRlcmF0b3IgZW5kID0gdW5saW5rZWRDb2Rl
QmxvY2stPnN0cmluZ1N3aXRjaEp1bXBUYWJsZShpKS5vZmZzZXRUYWJsZS5lbmQoKTsKICAgICAg
ICAgICAgICAgICBmb3IgKDsgcHRyICE9IGVuZDsgKytwdHIpIHsKICAgICAgICAgICAgICAgICAg
ICAgT2Zmc2V0TG9jYXRpb24gb2Zmc2V0OwotICAgICAgICAgICAgICAgICAgICBvZmZzZXQuYnJh
bmNoT2Zmc2V0ID0gcHRyLT52YWx1ZTsKKyAgICAgICAgICAgICAgICAgICAgb2Zmc2V0LmJyYW5j
aE9mZnNldCA9IHB0ci0+dmFsdWUuYnJhbmNoT2Zmc2V0OwogICAgICAgICAgICAgICAgICAgICBt
X3JhcmVEYXRhLT5tX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXNbaV0ub2Zmc2V0VGFibGUuYWRkKHB0
ci0+a2V5LCBvZmZzZXQpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KQEAgLTIw
NjksMTEgKzIwMzIsMTcgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwg
U2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICAvLyBCb29ra2Vl
cCB0aGUgc3Ryb25nbHkgcmVmZXJlbmNlZCBtb2R1bGUgZW52aXJvbm1lbnRzLgogICAgIEhhc2hT
ZXQ8SlNNb2R1bGVFbnZpcm9ubWVudCo+IHN0cm9uZ2x5UmVmZXJlbmNlZE1vZHVsZUVudmlyb25t
ZW50czsKIAotICAgIC8vIEJvb2trZWVwIHRoZSBtZXJnZSBwb2ludCBieXRlY29kZSBvZmZzZXRz
LgotICAgIFZlY3RvcjxzaXplX3Q+IG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldHM7Ci0KICAgICBS
ZWZDb3VudGVkQXJyYXk8SW5zdHJ1Y3Rpb24+IGluc3RydWN0aW9ucyhpbnN0cnVjdGlvbkNvdW50
KTsKIAorICAgIHVuc2lnbmVkIHZhbHVlUHJvZmlsZUNvdW50ID0gMDsKKyAgICBhdXRvIGxpbmtW
YWx1ZVByb2ZpbGUgPSBbJl0odW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIHVuc2lnbmVkIG9wTGVu
Z3RoKSB7CisgICAgICAgIHVuc2lnbmVkIHZhbHVlUHJvZmlsZUluZGV4ID0gdmFsdWVQcm9maWxl
Q291bnQrKzsKKyAgICAgICAgVmFsdWVQcm9maWxlKiBwcm9maWxlID0gJm1fdmFsdWVQcm9maWxl
c1t2YWx1ZVByb2ZpbGVJbmRleF07CisgICAgICAgIEFTU0VSVChwcm9maWxlLT5tX2J5dGVjb2Rl
T2Zmc2V0ID09IC0xKTsKKyAgICAgICAgcHJvZmlsZS0+bV9ieXRlY29kZU9mZnNldCA9IGJ5dGVj
b2RlT2Zmc2V0OworICAgICAgICBpbnN0cnVjdGlvbnNbYnl0ZWNvZGVPZmZzZXQgKyBvcExlbmd0
aCAtIDFdID0gcHJvZmlsZTsKKyAgICB9OworCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgIWlu
c3RydWN0aW9uUmVhZGVyLmF0RW5kKCk7ICkgewogICAgICAgICBjb25zdCBVbmxpbmtlZEluc3Ry
dWN0aW9uKiBwYyA9IGluc3RydWN0aW9uUmVhZGVyLm5leHQoKTsKIApAQCAtMjEwOCwxMCArMjA3
Nyw3IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1
dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAgICAgIGNhc2Ugb3BfZ2V0X2J5X2lk
OgogICAgICAgICBjYXNlIG9wX2dldF9mcm9tX2FyZ3VtZW50czoKICAgICAgICAgY2FzZSBvcF90
b19udW1iZXI6IHsKLSAgICAgICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9ICZtX3ZhbHVl
UHJvZmlsZXNbcGNbb3BMZW5ndGggLSAxXS51Lm9wZXJhbmRdOwotICAgICAgICAgICAgQVNTRVJU
KHByb2ZpbGUtPm1fYnl0ZWNvZGVPZmZzZXQgPT0gLTEpOwotICAgICAgICAgICAgcHJvZmlsZS0+
bV9ieXRlY29kZU9mZnNldCA9IGk7Ci0gICAgICAgICAgICBpbnN0cnVjdGlvbnNbaSArIG9wTGVu
Z3RoIC0gMV0gPSBwcm9maWxlOworICAgICAgICAgICAgbGlua1ZhbHVlUHJvZmlsZShpLCBvcExl
bmd0aCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX3B1
dF9ieV92YWw6IHsKQEAgLTIxNDgsMTAgKzIxMTQsNyBAQCB2b2lkIENvZGVCbG9jazo6ZmluaXNo
Q3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGlu
awogICAgICAgICBjYXNlIG9wX2NhbGw6CiAgICAgICAgIGNhc2Ugb3BfdGFpbF9jYWxsOgogICAg
ICAgICBjYXNlIG9wX2NhbGxfZXZhbDogewotICAgICAgICAgICAgVmFsdWVQcm9maWxlKiBwcm9m
aWxlID0gJm1fdmFsdWVQcm9maWxlc1twY1tvcExlbmd0aCAtIDFdLnUub3BlcmFuZF07Ci0gICAg
ICAgICAgICBBU1NFUlQocHJvZmlsZS0+bV9ieXRlY29kZU9mZnNldCA9PSAtMSk7Ci0gICAgICAg
ICAgICBwcm9maWxlLT5tX2J5dGVjb2RlT2Zmc2V0ID0gaTsKLSAgICAgICAgICAgIGluc3RydWN0
aW9uc1tpICsgb3BMZW5ndGggLSAxXSA9IHByb2ZpbGU7CisgICAgICAgICAgICBsaW5rVmFsdWVQ
cm9maWxlKGksIG9wTGVuZ3RoKTsKICAgICAgICAgICAgIGludCBhcnJheVByb2ZpbGVJbmRleCA9
IHBjW29wTGVuZ3RoIC0gMl0udS5vcGVyYW5kOwogICAgICAgICAgICAgbV9hcnJheVByb2ZpbGVz
W2FycmF5UHJvZmlsZUluZGV4XSA9IEFycmF5UHJvZmlsZShpKTsKICAgICAgICAgICAgIGluc3Ry
dWN0aW9uc1tpICsgb3BMZW5ndGggLSAyXSA9ICZtX2FycmF5UHJvZmlsZXNbYXJyYXlQcm9maWxl
SW5kZXhdOwpAQCAtMjE2MCwxMCArMjEyMyw3IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5pc2hDcmVh
dGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAg
ICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9jb25zdHJ1Y3Q6IHsKICAgICAgICAgICAgIGluc3Ry
dWN0aW9uc1tpICsgNV0gPSAmbV9sbGludENhbGxMaW5rSW5mb3NbcGNbNV0udS5vcGVyYW5kXTsK
LSAgICAgICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9ICZtX3ZhbHVlUHJvZmlsZXNbcGNb
b3BMZW5ndGggLSAxXS51Lm9wZXJhbmRdOwotICAgICAgICAgICAgQVNTRVJUKHByb2ZpbGUtPm1f
Ynl0ZWNvZGVPZmZzZXQgPT0gLTEpOwotICAgICAgICAgICAgcHJvZmlsZS0+bV9ieXRlY29kZU9m
ZnNldCA9IGk7Ci0gICAgICAgICAgICBpbnN0cnVjdGlvbnNbaSArIG9wTGVuZ3RoIC0gMV0gPSBw
cm9maWxlOworICAgICAgICAgICAgbGlua1ZhbHVlUHJvZmlsZShpLCBvcExlbmd0aCk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2dldF9hcnJheV9sZW5n
dGg6CkBAIC0yMTk0LDEwICsyMTU0LDcgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9u
KFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICAg
ICAgfQogCiAgICAgICAgIGNhc2Ugb3BfZ2V0X2Zyb21fc2NvcGU6IHsKLSAgICAgICAgICAgIFZh
bHVlUHJvZmlsZSogcHJvZmlsZSA9ICZtX3ZhbHVlUHJvZmlsZXNbcGNbb3BMZW5ndGggLSAxXS51
Lm9wZXJhbmRdOwotICAgICAgICAgICAgQVNTRVJUKHByb2ZpbGUtPm1fYnl0ZWNvZGVPZmZzZXQg
PT0gLTEpOwotICAgICAgICAgICAgcHJvZmlsZS0+bV9ieXRlY29kZU9mZnNldCA9IGk7Ci0gICAg
ICAgICAgICBpbnN0cnVjdGlvbnNbaSArIG9wTGVuZ3RoIC0gMV0gPSBwcm9maWxlOworICAgICAg
ICAgICAgbGlua1ZhbHVlUHJvZmlsZShpLCBvcExlbmd0aCk7CiAKICAgICAgICAgICAgIC8vIGdl
dF9mcm9tX3Njb3BlIGRzdCwgc2NvcGUsIGlkLCBHZXRQdXRJbmZvLCBTdHJ1Y3R1cmUsIE9wZXJh
bmQKIApAQCAtMjM1NCwxNSArMjMxMSw2IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlv
bihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogCi0gICAgICAgIGNhc2Ugb3Bfc2F2ZTogewotICAg
ICAgICAgICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gcGNbMl0udS5pbmRleDsK
LSAgICAgICAgICAgIGludCBvZmZzZXQgPSBwY1szXS51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBp
ZiAobGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID49IG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldHMuc2l6
ZSgpKQotICAgICAgICAgICAgICAgIG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldHMucmVzaXplKGxp
dmVDYWxsZWVMb2NhbHNJbmRleCArIDEpOwotICAgICAgICAgICAgbWVyZ2VQb2ludEJ5dGVjb2Rl
T2Zmc2V0c1tsaXZlQ2FsbGVlTG9jYWxzSW5kZXhdID0gaSArIG9mZnNldDsKLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICB9Ci0KICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CkBAIC0yMzc0LDIwICsyMzIyLDYgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmlz
aENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxp
bmsKIAogICAgIG1faW5zdHJ1Y3Rpb25zID0gV1RGTW92ZShpbnN0cnVjdGlvbnMpOwogCi0gICAg
Ly8gUGVyZm9ybSBieXRlY29kZSBsaXZlbmVzcyBhbmFseXNpcyB0byBkZXRlcm1pbmUgd2hpY2gg
bG9jYWxzIGFyZSBsaXZlIGFuZCBzaG91bGQgYmUgcmVzdW1lZCB3aGVuIGV4ZWN1dGluZyBvcF9y
ZXN1bWUuCi0gICAgaWYgKHVubGlua2VkQ29kZUJsb2NrLT5wYXJzZU1vZGUoKSA9PSBTb3VyY2VQ
YXJzZU1vZGU6OkdlbmVyYXRvckJvZHlNb2RlKSB7Ci0gICAgICAgIGlmIChzaXplX3QgY291bnQg
PSBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXRzLnNpemUoKSkgewotICAgICAgICAgICAgY3JlYXRl
UmFyZURhdGFJZk5lY2Vzc2FyeSgpOwotICAgICAgICAgICAgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5
c2lzIGxpdmVuZXNzKHRoaXMpOwotICAgICAgICAgICAgbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVl
TG9jYWxzQXRZaWVsZC5ncm93KGNvdW50KTsKLSAgICAgICAgICAgIHNpemVfdCBsaXZlQ2FsbGVl
TG9jYWxzSW5kZXggPSAwOwotICAgICAgICAgICAgZm9yIChzaXplX3QgYnl0ZWNvZGVPZmZzZXQg
OiBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXRzKSB7Ci0gICAgICAgICAgICAgICAgbV9yYXJlRGF0
YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZFtsaXZlQ2FsbGVlTG9jYWxzSW5kZXhdID0gbGl2
ZW5lc3MuZ2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCk7Ci0g
ICAgICAgICAgICAgICAgKytsaXZlQ2FsbGVlTG9jYWxzSW5kZXg7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgIH0KLSAgICB9Ci0KICAgICAvLyBTZXQgb3B0aW1pemF0aW9uIHRocmVzaG9sZHMgb25s
eSBhZnRlciBtX2luc3RydWN0aW9ucyBpcyBpbml0aWFsaXplZCwgc2luY2UgdGhlc2UKICAgICAv
LyByZWx5IG9uIHRoZSBpbnN0cnVjdGlvbiBjb3VudCAoYW5kIGFyZSBpbiB0aGVvcnkgcGVybWl0
dGVkIHRvIGFsc28gaW5zcGVjdCB0aGUKICAgICAvLyBpbnN0cnVjdGlvbiBzdHJlYW0gdG8gbW9y
ZSBhY2N1cmF0ZSBhc3Nlc3MgdGhlIGNvc3Qgb2YgdGllci11cCkuCkBAIC0zMjQ0LDIxICszMTc4
LDcgQEAgSGFuZGxlckluZm8qIENvZGVCbG9jazo6aGFuZGxlckZvckluZGV4KHVuc2lnbmVkIGlu
ZGV4LCBSZXF1aXJlZEhhbmRsZXIgcmVxdWlyZWQKIHsKICAgICBpZiAoIW1fcmFyZURhdGEpCiAg
ICAgICAgIHJldHVybiAwOwotICAgIAotICAgIFZlY3RvcjxIYW5kbGVySW5mbz4mIGV4Y2VwdGlv
bkhhbmRsZXJzID0gbV9yYXJlRGF0YS0+bV9leGNlcHRpb25IYW5kbGVyczsKLSAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGV4Y2VwdGlvbkhhbmRsZXJzLnNpemUoKTsgKytpKSB7Ci0gICAgICAg
IEhhbmRsZXJJbmZvJiBoYW5kbGVyID0gZXhjZXB0aW9uSGFuZGxlcnNbaV07Ci0gICAgICAgIGlm
ICgocmVxdWlyZWRIYW5kbGVyID09IFJlcXVpcmVkSGFuZGxlcjo6Q2F0Y2hIYW5kbGVyKSAmJiAh
aGFuZGxlci5pc0NhdGNoSGFuZGxlcigpKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAg
ICAgLy8gSGFuZGxlcnMgYXJlIG9yZGVyZWQgaW5uZXJtb3N0IGZpcnN0LCBzbyB0aGUgZmlyc3Qg
aGFuZGxlciB3ZSBlbmNvdW50ZXIKLSAgICAgICAgLy8gdGhhdCBjb250YWlucyB0aGUgc291cmNl
IGFkZHJlc3MgaXMgdGhlIGNvcnJlY3QgaGFuZGxlciB0byB1c2UuCi0gICAgICAgIC8vIFRoaXMg
aW5kZXggdXNlZCBpcyBlaXRoZXIgdGhlIEJ5dGVjb2RlT2Zmc2V0IG9yIGEgQ2FsbFNpdGVJbmRl
eC4KLSAgICAgICAgaWYgKGhhbmRsZXIuc3RhcnQgPD0gaW5kZXggJiYgaGFuZGxlci5lbmQgPiBp
bmRleCkKLSAgICAgICAgICAgIHJldHVybiAmaGFuZGxlcjsKLSAgICB9Ci0KLSAgICByZXR1cm4g
MDsKKyAgICByZXR1cm4gSGFuZGxlckluZm86OmhhbmRsZXJGb3JJbmRleChtX3JhcmVEYXRhLT5t
X2V4Y2VwdGlvbkhhbmRsZXJzLCBpbmRleCwgcmVxdWlyZWRIYW5kbGVyKTsKIH0KIAogQ2FsbFNp
dGVJbmRleCBDb2RlQmxvY2s6Om5ld0V4Y2VwdGlvbkhhbmRsaW5nQ2FsbFNpdGVJbmRleChDYWxs
U2l0ZUluZGV4IG9yaWdpbmFsQ2FsbFNpdGUpCkBAIC0zMzUzLDcgKzMyNzMsNiBAQCB2b2lkIENv
ZGVCbG9jazo6c2hyaW5rVG9GaXQoU2hyaW5rTW9kZSBzaHJpbmtNb2RlKQogICAgICAgICBpZiAo
bV9yYXJlRGF0YSkgewogICAgICAgICAgICAgbV9yYXJlRGF0YS0+bV9zd2l0Y2hKdW1wVGFibGVz
LnNocmlua1RvRml0KCk7CiAgICAgICAgICAgICBtX3JhcmVEYXRhLT5tX3N0cmluZ1N3aXRjaEp1
bXBUYWJsZXMuc2hyaW5rVG9GaXQoKTsKLSAgICAgICAgICAgIG1fcmFyZURhdGEtPm1fbGl2ZUNh
bGxlZUxvY2Fsc0F0WWllbGQuc2hyaW5rVG9GaXQoKTsKICAgICAgICAgfQogICAgIH0gLy8gZWxz
ZSBkb24ndCBzaHJpbmsgdGhlc2UsIGJlY2F1c2Ugd2Ugd291bGQgaGF2ZSBhbHJlYWR5IHBvaW50
ZWQgcG9pbnRlcnMgaW50byB0aGVzZSB0YWJsZXMuCiB9CkBAIC00MzM1LDE0ICs0MjU0LDkgQEAg
U3RyaW5nIENvZGVCbG9jazo6bmFtZUZvclJlZ2lzdGVyKFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFs
UmVnaXN0ZXIpCiAKIFZhbHVlUHJvZmlsZSogQ29kZUJsb2NrOjp2YWx1ZVByb2ZpbGVGb3JCeXRl
Y29kZU9mZnNldChpbnQgYnl0ZWNvZGVPZmZzZXQpCiB7Ci0gICAgVmFsdWVQcm9maWxlKiByZXN1
bHQgPSBiaW5hcnlTZWFyY2g8VmFsdWVQcm9maWxlLCBpbnQ+KAotICAgICAgICBtX3ZhbHVlUHJv
ZmlsZXMsIG1fdmFsdWVQcm9maWxlcy5zaXplKCksIGJ5dGVjb2RlT2Zmc2V0LAotICAgICAgICBn
ZXRWYWx1ZVByb2ZpbGVCeXRlY29kZU9mZnNldDxWYWx1ZVByb2ZpbGU+KTsKLSAgICBBU1NFUlQo
cmVzdWx0LT5tX2J5dGVjb2RlT2Zmc2V0ICE9IC0xKTsKLSAgICBBU1NFUlQoaW5zdHJ1Y3Rpb25z
KClbYnl0ZWNvZGVPZmZzZXQgKyBvcGNvZGVMZW5ndGgoCi0gICAgICAgIG1fdm0tPmludGVycHJl
dGVyLT5nZXRPcGNvZGVJRCgKLSAgICAgICAgICAgIGluc3RydWN0aW9ucygpW2J5dGVjb2RlT2Zm
c2V0XS51Lm9wY29kZSkpIC0gMV0udS5wcm9maWxlID09IHJlc3VsdCk7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKKyAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IG1fdm0tPmludGVycHJldGVyLT5nZXRPcGNv
ZGVJRChpbnN0cnVjdGlvbnMoKVtieXRlY29kZU9mZnNldF0udS5vcGNvZGUpOworICAgIHVuc2ln
bmVkIGxlbmd0aCA9IG9wY29kZUxlbmd0aChvcGNvZGVJRCk7CisgICAgcmV0dXJuIGluc3RydWN0
aW9ucygpW2J5dGVjb2RlT2Zmc2V0ICsgbGVuZ3RoIC0gMV0udS5wcm9maWxlOwogfQogCiB2b2lk
IENvZGVCbG9jazo6dmFsaWRhdGUoKQpAQCAtNDY3MSw0ICs0NTg1LDE2IEBAIHZvaWQgQ29kZUJs
b2NrOjpkdW1wTWF0aElDU3RhdHMoKQogI2VuZGlmCiB9CiAKK0J5dGVjb2RlTGl2ZW5lc3NBbmFs
eXNpcyYgQ29kZUJsb2NrOjpsaXZlbmVzc0FuYWx5c2lzU2xvdygpCit7CisgICAgc3RkOjp1bmlx
dWVfcHRyPEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcz4gYW5hbHlzaXMgPSBzdGQ6Om1ha2VfdW5p
cXVlPEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcz4odGhpcyk7CisgICAgeworICAgICAgICBDb25j
dXJyZW50SklUTG9ja2VyIGxvY2tlcihtX2xvY2spOworICAgICAgICBpZiAoIW1fbGl2ZW5lc3NB
bmFseXNpcykKKyAgICAgICAgICAgIG1fbGl2ZW5lc3NBbmFseXNpcyA9IFdURk1vdmUoYW5hbHlz
aXMpOworICAgICAgICByZXR1cm4gKm1fbGl2ZW5lc3NBbmFseXNpczsKKyAgICB9Cit9CisKKwog
fSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrLmgKaW5kZXggYWI5MjgwNGY2YmEzOWIzYjY3YmE2ZDc3NWU0NDllMmYzZGJmN2MwNS4uOWU1
ZDYwNzg3NzNmMzhjYmIyMmRjNmE1MGZhZmE3Y2ViMGUxZmZhMiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaApAQCAtMzMsNyArMzMsNiBAQAogI2luY2x1ZGUg
IkFycmF5UHJvZmlsZS5oIgogI2luY2x1ZGUgIkJ5VmFsSW5mby5oIgogI2luY2x1ZGUgIkJ5dGVj
b2RlQ29udmVudGlvbnMuaCIKLSNpbmNsdWRlICJCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuaCIK
ICNpbmNsdWRlICJDYWxsTGlua0luZm8uaCIKICNpbmNsdWRlICJDYWxsUmV0dXJuT2Zmc2V0VG9C
eXRlY29kZU9mZnNldC5oIgogI2luY2x1ZGUgIkNvZGVCbG9ja0hhc2guaCIKQEAgLTc5LDYgKzc4
LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKK2NsYXNzIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNp
czsKIGNsYXNzIEV4ZWNTdGF0ZTsKIGNsYXNzIEpJVEFkZEdlbmVyYXRvcjsKIGNsYXNzIEpTTW9k
dWxlRW52aXJvbm1lbnQ7CkBAIC0yMjYsMTAgKzIyNiw2IEBAIGNsYXNzIENvZGVCbG9jayA6IHB1
YmxpYyBKU0NlbGwgewogICAgICAgICByZXR1cm4gaW5kZXggPj0gbV9udW1WYXJzOwogICAgIH0K
IAotICAgIGVudW0gY2xhc3MgUmVxdWlyZWRIYW5kbGVyIHsKLSAgICAgICAgQ2F0Y2hIYW5kbGVy
LAotICAgICAgICBBbnlIYW5kbGVyCi0gICAgfTsKICAgICBIYW5kbGVySW5mbyogaGFuZGxlckZv
ckJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBSZXF1aXJlZEhhbmRsZXIg
PSBSZXF1aXJlZEhhbmRsZXI6OkFueUhhbmRsZXIpOwogICAgIEhhbmRsZXJJbmZvKiBoYW5kbGVy
Rm9ySW5kZXgodW5zaWduZWQsIFJlcXVpcmVkSGFuZGxlciA9IFJlcXVpcmVkSGFuZGxlcjo6QW55
SGFuZGxlcik7CiAgICAgdm9pZCByZW1vdmVFeGNlcHRpb25IYW5kbGVyRm9yQ2FsbFNpdGUoQ2Fs
bFNpdGVJbmRleCk7CkBAIC0zMDQsNiArMzAwLDkgQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGlj
IEpTQ2VsbCB7CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxJbnN0cnVjdGlvbio+KHJldHVy
bkFkZHJlc3MpIC0gaW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsKICAgICB9CiAKKyAgICB0eXBlZGVm
IEpTQzo6SW5zdHJ1Y3Rpb24gSW5zdHJ1Y3Rpb247CisgICAgdHlwZWRlZiBSZWZDb3VudGVkQXJy
YXk8SW5zdHJ1Y3Rpb24+JiBVbnBhY2tlZEluc3RydWN0aW9uczsKKwogICAgIHVuc2lnbmVkIG51
bWJlck9mSW5zdHJ1Y3Rpb25zKCkgY29uc3QgeyByZXR1cm4gbV9pbnN0cnVjdGlvbnMuc2l6ZSgp
OyB9CiAgICAgUmVmQ291bnRlZEFycmF5PEluc3RydWN0aW9uPiYgaW5zdHJ1Y3Rpb25zKCkgeyBy
ZXR1cm4gbV9pbnN0cnVjdGlvbnM7IH0KICAgICBjb25zdCBSZWZDb3VudGVkQXJyYXk8SW5zdHJ1
Y3Rpb24+JiBpbnN0cnVjdGlvbnMoKSBjb25zdCB7IHJldHVybiBtX2luc3RydWN0aW9uczsgfQpA
QCAtNTQ2LDcgKzU0NSw3IEBAIGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAg
IH0KIAogICAgIFdyaXRlQmFycmllcjxVbmtub3duPiYgY29uc3RhbnRSZWdpc3RlcihpbnQgaW5k
ZXgpIHsgcmV0dXJuIG1fY29uc3RhbnRSZWdpc3RlcnNbaW5kZXggLSBGaXJzdENvbnN0YW50UmVn
aXN0ZXJJbmRleF07IH0KLSAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNDb25zdGFudFJlZ2lzdGVy
SW5kZXgoaW50IGluZGV4KSBjb25zdCB7IHJldHVybiBpbmRleCA+PSBGaXJzdENvbnN0YW50UmVn
aXN0ZXJJbmRleDsgfQorICAgIHN0YXRpYyBBTFdBWVNfSU5MSU5FIGJvb2wgaXNDb25zdGFudFJl
Z2lzdGVySW5kZXgoaW50IGluZGV4KSB7IHJldHVybiBpbmRleCA+PSBGaXJzdENvbnN0YW50UmVn
aXN0ZXJJbmRleDsgfQogICAgIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBnZXRDb25zdGFudChpbnQg
aW5kZXgpIGNvbnN0IHsgcmV0dXJuIG1fY29uc3RhbnRSZWdpc3RlcnNbaW5kZXggLSBGaXJzdENv
bnN0YW50UmVnaXN0ZXJJbmRleF0uZ2V0KCk7IH0KICAgICBBTFdBWVNfSU5MSU5FIFNvdXJjZUNv
ZGVSZXByZXNlbnRhdGlvbiBjb25zdGFudFNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbihpbnQgaW5k
ZXgpIGNvbnN0IHsgcmV0dXJuIG1fY29uc3RhbnRzU291cmNlQ29kZVJlcHJlc2VudGF0aW9uW2lu
ZGV4IC0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXhdOyB9CiAKQEAgLTU5MiwxNCArNTkxLDcg
QEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgICAgICAgICBpZiAoISFt
X2xpdmVuZXNzQW5hbHlzaXMpCiAgICAgICAgICAgICAgICAgcmV0dXJuICptX2xpdmVuZXNzQW5h
bHlzaXM7CiAgICAgICAgIH0KLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlTGl2ZW5l
c3NBbmFseXNpcz4gYW5hbHlzaXMgPQotICAgICAgICAgICAgc3RkOjptYWtlX3VuaXF1ZTxCeXRl
Y29kZUxpdmVuZXNzQW5hbHlzaXM+KHRoaXMpOwotICAgICAgICB7Ci0gICAgICAgICAgICBDb25j
dXJyZW50SklUTG9ja2VyIGxvY2tlcihtX2xvY2spOwotICAgICAgICAgICAgaWYgKCFtX2xpdmVu
ZXNzQW5hbHlzaXMpCi0gICAgICAgICAgICAgICAgbV9saXZlbmVzc0FuYWx5c2lzID0gV1RGTW92
ZShhbmFseXNpcyk7Ci0gICAgICAgICAgICByZXR1cm4gKm1fbGl2ZW5lc3NBbmFseXNpczsKLSAg
ICAgICAgfQorICAgICAgICByZXR1cm4gbGl2ZW5lc3NBbmFseXNpc1Nsb3coKTsKICAgICB9CiAg
ICAgCiAgICAgdm9pZCB2YWxpZGF0ZSgpOwpAQCAtNjIwLDE4ICs2MTIsNiBAQCBjbGFzcyBDb2Rl
QmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICBTdHJpbmdKdW1wVGFibGUmIGFkZFN0cmluZ1N3
aXRjaEp1bXBUYWJsZSgpIHsgY3JlYXRlUmFyZURhdGFJZk5lY2Vzc2FyeSgpOyBtX3JhcmVEYXRh
LT5tX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXMuYXBwZW5kKFN0cmluZ0p1bXBUYWJsZSgpKTsgcmV0
dXJuIG1fcmFyZURhdGEtPm1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlcy5sYXN0KCk7IH0KICAgICBT
dHJpbmdKdW1wVGFibGUmIHN0cmluZ1N3aXRjaEp1bXBUYWJsZShpbnQgdGFibGVJbmRleCkgeyBS
RUxFQVNFX0FTU0VSVChtX3JhcmVEYXRhKTsgcmV0dXJuIG1fcmFyZURhdGEtPm1fc3RyaW5nU3dp
dGNoSnVtcFRhYmxlc1t0YWJsZUluZGV4XTsgfQogCi0gICAgLy8gTGl2ZSBjYWxsZWUgcmVnaXN0
ZXJzIGF0IHlpZWxkIHBvaW50cy4KLSAgICBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlQ2FsbGVl
TG9jYWxzQXRZaWVsZCh1bnNpZ25lZCBpbmRleCkgY29uc3QKLSAgICB7Ci0gICAgICAgIFJFTEVB
U0VfQVNTRVJUKG1fcmFyZURhdGEpOwotICAgICAgICByZXR1cm4gbV9yYXJlRGF0YS0+bV9saXZl
Q2FsbGVlTG9jYWxzQXRZaWVsZFtpbmRleF07Ci0gICAgfQotICAgIEZhc3RCaXRWZWN0b3ImIGxp
dmVDYWxsZWVMb2NhbHNBdFlpZWxkKHVuc2lnbmVkIGluZGV4KQotICAgIHsKLSAgICAgICAgUkVM
RUFTRV9BU1NFUlQobV9yYXJlRGF0YSk7Ci0gICAgICAgIHJldHVybiBtX3JhcmVEYXRhLT5tX2xp
dmVDYWxsZWVMb2NhbHNBdFlpZWxkW2luZGV4XTsKLSAgICB9Ci0KICAgICBFdmFsQ29kZUNhY2hl
JiBldmFsQ29kZUNhY2hlKCkgeyBjcmVhdGVSYXJlRGF0YUlmTmVjZXNzYXJ5KCk7IHJldHVybiBt
X3JhcmVEYXRhLT5tX2V2YWxDb2RlQ2FjaGU7IH0KIAogICAgIGVudW0gU2hyaW5rTW9kZSB7CkBA
IC04ODYsOCArODY2LDYgQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAg
ICAgIFZlY3RvcjxTaW1wbGVKdW1wVGFibGU+IG1fc3dpdGNoSnVtcFRhYmxlczsKICAgICAgICAg
VmVjdG9yPFN0cmluZ0p1bXBUYWJsZT4gbV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzOwogCi0gICAg
ICAgIFZlY3RvcjxGYXN0Qml0VmVjdG9yPiBtX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkOwotCiAg
ICAgICAgIEV2YWxDb2RlQ2FjaGUgbV9ldmFsQ29kZUNhY2hlOwogICAgIH07CiAKQEAgLTkyMiw2
ICs5MDAsOCBAQCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKIAogcHJpdmF0ZToK
ICAgICBmcmllbmQgY2xhc3MgQ29kZUJsb2NrU2V0OworCisgICAgQnl0ZWNvZGVMaXZlbmVzc0Fu
YWx5c2lzJiBsaXZlbmVzc0FuYWx5c2lzU2xvdygpOwogICAgIAogICAgIENvZGVCbG9jayogc3Bl
Y2lhbE9TUkVudHJ5QmxvY2tPck51bGwoKTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9IYW5kbGVySW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0hhbmRsZXJJbmZvLmgKaW5kZXggYWNkZGEwOGVkMTRjYmY5ZjA5NzEyNzUwNDA1
YTQxNzQxZjc2YTIxMy4uN2IxMDhhY2U5MzcyOGE4ZDVkZjhlYjE3M2ZjMGIwYTYxYmFlZDYzZSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0hhbmRsZXJJbmZvLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0hhbmRsZXJJbmZvLmgKQEAgLTI3
LDYgKzI3LDcgQEAKICNkZWZpbmUgSGFuZGxlckluZm9faAogCiAjaW5jbHVkZSAiQ29kZUxvY2F0
aW9uLmgiCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAt
MzcsNiArMzgsMTEgQEAgZW51bSBjbGFzcyBIYW5kbGVyVHlwZSB7CiAgICAgU3ludGhlc2l6ZWRG
aW5hbGx5ID0gMwogfTsKIAorZW51bSBjbGFzcyBSZXF1aXJlZEhhbmRsZXIgeworICAgIENhdGNo
SGFuZGxlciwKKyAgICBBbnlIYW5kbGVyCit9OworCiBzdHJ1Y3QgSGFuZGxlckluZm9CYXNlIHsK
ICAgICBIYW5kbGVyVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8SGFuZGxl
clR5cGU+KHR5cGVCaXRzKTsgfQogICAgIHZvaWQgc2V0VHlwZShIYW5kbGVyVHlwZSB0eXBlKSB7
IHR5cGVCaXRzID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHR5cGUpOyB9CkBAIC01OCw2ICs2NCwy
MyBAQCBzdHJ1Y3QgSGFuZGxlckluZm9CYXNlIHsKIAogICAgIGJvb2wgaXNDYXRjaEhhbmRsZXIo
KSBjb25zdCB7IHJldHVybiB0eXBlKCkgPT0gSGFuZGxlclR5cGU6OkNhdGNoOyB9CiAKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBIYW5kbGVyPgorICAgIHN0YXRpYyBIYW5kbGVyKiBoYW5kbGVyRm9y
SW5kZXgoVmVjdG9yPEhhbmRsZXI+JiBleGVwdGlvbkhhbmRsZXJzLCB1bnNpZ25lZCBpbmRleCwg
UmVxdWlyZWRIYW5kbGVyIHJlcXVpcmVkSGFuZGxlcikKKyAgICB7CisgICAgICAgIGZvciAoSGFu
ZGxlciYgaGFuZGxlciA6IGV4ZXB0aW9uSGFuZGxlcnMpIHsKKyAgICAgICAgICAgIGlmICgocmVx
dWlyZWRIYW5kbGVyID09IFJlcXVpcmVkSGFuZGxlcjo6Q2F0Y2hIYW5kbGVyKSAmJiAhaGFuZGxl
ci5pc0NhdGNoSGFuZGxlcigpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAg
ICAgICAvLyBIYW5kbGVycyBhcmUgb3JkZXJlZCBpbm5lcm1vc3QgZmlyc3QsIHNvIHRoZSBmaXJz
dCBoYW5kbGVyIHdlIGVuY291bnRlcgorICAgICAgICAgICAgLy8gdGhhdCBjb250YWlucyB0aGUg
c291cmNlIGFkZHJlc3MgaXMgdGhlIGNvcnJlY3QgaGFuZGxlciB0byB1c2UuCisgICAgICAgICAg
ICAvLyBUaGlzIGluZGV4IHVzZWQgaXMgZWl0aGVyIHRoZSBCeXRlY29kZU9mZnNldCBvciBhIENh
bGxTaXRlSW5kZXguCisgICAgICAgICAgICBpZiAoaGFuZGxlci5zdGFydCA8PSBpbmRleCAmJiBo
YW5kbGVyLmVuZCA+IGluZGV4KQorICAgICAgICAgICAgICAgIHJldHVybiAmaGFuZGxlcjsKKyAg
ICAgICAgfQorCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKwogICAgIHVpbnQzMl90
IHN0YXJ0OwogICAgIHVpbnQzMl90IGVuZDsKICAgICB1aW50MzJfdCB0YXJnZXQ7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgKaW5kZXggZWU2NjdjODRmYjI2NTJmMjU5ZTMy
MTI0ZDFlOWE3YTcxZGRlMDFlMC4uNGRiNjEwZTRlOGU0ZGY1NmNiODRlMmU3MjhhZWE0OGI4N2Ex
NWE3OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaApAQCAtMTI2LDYg
KzEyNiw2NCBAQCBpbmxpbmUgc2l6ZV90IG9wY29kZUxlbmd0aChPcGNvZGVJRCBvcGNvZGUpCiAg
ICAgcmV0dXJuIDA7CiB9CiAKK2lubGluZSBib29sIGlzQnJhbmNoKE9wY29kZUlEIG9wY29kZUlE
KQoreworICAgIHN3aXRjaCAob3Bjb2RlSUQpIHsKKyAgICBjYXNlIG9wX2ptcDoKKyAgICBjYXNl
IG9wX2p0cnVlOgorICAgIGNhc2Ugb3BfamZhbHNlOgorICAgIGNhc2Ugb3BfamVxX251bGw6Cisg
ICAgY2FzZSBvcF9qbmVxX251bGw6CisgICAgY2FzZSBvcF9qbmVxX3B0cjoKKyAgICBjYXNlIG9w
X2psZXNzOgorICAgIGNhc2Ugb3Bfamxlc3NlcToKKyAgICBjYXNlIG9wX2pncmVhdGVyOgorICAg
IGNhc2Ugb3BfamdyZWF0ZXJlcToKKyAgICBjYXNlIG9wX2pubGVzczoKKyAgICBjYXNlIG9wX2pu
bGVzc2VxOgorICAgIGNhc2Ugb3Bfam5ncmVhdGVyOgorICAgIGNhc2Ugb3Bfam5ncmVhdGVyZXE6
CisgICAgY2FzZSBvcF9zd2l0Y2hfaW1tOgorICAgIGNhc2Ugb3Bfc3dpdGNoX2NoYXI6CisgICAg
Y2FzZSBvcF9zd2l0Y2hfc3RyaW5nOgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBkZWZhdWx0
OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQorCitpbmxpbmUgYm9vbCBpc1VuY29u
ZGl0aW9uYWxCcmFuY2goT3Bjb2RlSUQgb3Bjb2RlSUQpCit7CisgICAgc3dpdGNoIChvcGNvZGVJ
RCkgeworICAgIGNhc2Ugb3Bfam1wOgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBkZWZhdWx0
OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQorCitpbmxpbmUgYm9vbCBpc1Rlcm1p
bmFsKE9wY29kZUlEIG9wY29kZUlEKQoreworICAgIHN3aXRjaCAob3Bjb2RlSUQpIHsKKyAgICBj
YXNlIG9wX3JldDoKKyAgICBjYXNlIG9wX2VuZDoKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
ZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKworaW5saW5lIGJvb2wg
aXNUaHJvdyhPcGNvZGVJRCBvcGNvZGVJRCkKK3sKKyAgICBzd2l0Y2ggKG9wY29kZUlEKSB7Cisg
ICAgY2FzZSBvcF90aHJvdzoKKyAgICBjYXNlIG9wX3Rocm93X3N0YXRpY19lcnJvcjoKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKIG5hbWVzcGFjZSBXVEYgewpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmNwcApp
bmRleCBlMmNiMDAwNDgzNzk0YmE5MmQ1MTBkY2Y1ZmE5OTQ4ODVhMjNkYzNkLi5jZWY0MWUyOGJi
NzQyOTIxMzgwZDFiNTEyYjJlNWMwNTk4ZjNlOWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmNwcApAQCAtMjYsNjkgKzI2
LDM3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUHJlY2lzZUp1bXBUYXJnZXRz
LmgiCiAKKyNpbmNsdWRlICJJbnRlcnByZXRlcklubGluZXMuaCIKICNpbmNsdWRlICJKU0NJbmxp
bmVzLmgiCisjaW5jbHVkZSAiUHJlY2lzZUp1bXBUYXJnZXRzSW5saW5lcy5oIgogCiBuYW1lc3Bh
Y2UgSlNDIHsKIAotdGVtcGxhdGUgPHNpemVfdCB2ZWN0b3JTaXplPgotc3RhdGljIHZvaWQgZ2V0
SnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgSW50ZXJw
cmV0ZXIqIGludGVycHJldGVyLCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2ln
bmVkIGJ5dGVjb2RlT2Zmc2V0LCBWZWN0b3I8dW5zaWduZWQsIHZlY3RvclNpemU+JiBvdXQpCit0
ZW1wbGF0ZSA8c2l6ZV90IHZlY3RvclNpemUsIHR5cGVuYW1lIEJsb2NrLCB0eXBlbmFtZSBJbnN0
cnVjdGlvbj4KK3N0YXRpYyB2b2lkIGdldEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoQmxv
Y2sqIGNvZGVCbG9jaywgSW50ZXJwcmV0ZXIqIGludGVycHJldGVyLCBJbnN0cnVjdGlvbiogaW5z
dHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBWZWN0b3I8dW5zaWduZWQs
IHZlY3RvclNpemU+JiBvdXQpCiB7Ci0gICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnRlcnByZXRl
ci0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25zQmVnaW5bYnl0ZWNvZGVPZmZzZXRdLnUub3Bjb2Rl
KTsKLSAgICBJbnN0cnVjdGlvbiogY3VycmVudCA9IGluc3RydWN0aW9uc0JlZ2luICsgYnl0ZWNv
ZGVPZmZzZXQ7Ci0gICAgc3dpdGNoIChvcGNvZGVJRCkgewotICAgIGNhc2Ugb3Bfam1wOgotICAg
ICAgICBvdXQuYXBwZW5kKGJ5dGVjb2RlT2Zmc2V0ICsgY3VycmVudFsxXS51Lm9wZXJhbmQpOwot
ICAgICAgICBicmVhazsKLSAgICBjYXNlIG9wX2p0cnVlOgotICAgIGNhc2Ugb3BfamZhbHNlOgot
ICAgIGNhc2Ugb3BfamVxX251bGw6Ci0gICAgY2FzZSBvcF9qbmVxX251bGw6Ci0gICAgICAgIG91
dC5hcHBlbmQoYnl0ZWNvZGVPZmZzZXQgKyBjdXJyZW50WzJdLnUub3BlcmFuZCk7Ci0gICAgICAg
IGJyZWFrOwotICAgIGNhc2Ugb3Bfam5lcV9wdHI6Ci0gICAgY2FzZSBvcF9qbGVzczoKLSAgICBj
YXNlIG9wX2psZXNzZXE6Ci0gICAgY2FzZSBvcF9qZ3JlYXRlcjoKLSAgICBjYXNlIG9wX2pncmVh
dGVyZXE6Ci0gICAgY2FzZSBvcF9qbmxlc3M6Ci0gICAgY2FzZSBvcF9qbmxlc3NlcToKLSAgICBj
YXNlIG9wX2puZ3JlYXRlcjoKLSAgICBjYXNlIG9wX2puZ3JlYXRlcmVxOgotICAgIGNhc2Ugb3Bf
c2F2ZTogLy8gVGhlIGp1bXAgb2Ygb3Bfc2F2ZSBpcyBwdXJlbHkgZm9yIGNhbGN1bGF0aW5nIGxp
dmVuZXNzLgotICAgICAgICBvdXQuYXBwZW5kKGJ5dGVjb2RlT2Zmc2V0ICsgY3VycmVudFszXS51
Lm9wZXJhbmQpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIG9wX3N3aXRjaF9pbW06Ci0gICAg
Y2FzZSBvcF9zd2l0Y2hfY2hhcjogewotICAgICAgICBTaW1wbGVKdW1wVGFibGUmIHRhYmxlID0g
Y29kZUJsb2NrLT5zd2l0Y2hKdW1wVGFibGUoY3VycmVudFsxXS51Lm9wZXJhbmQpOwotICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSB0YWJsZS5icmFuY2hPZmZzZXRzLnNpemUoKTsgaS0tOykKLSAg
ICAgICAgICAgIG91dC5hcHBlbmQoYnl0ZWNvZGVPZmZzZXQgKyB0YWJsZS5icmFuY2hPZmZzZXRz
W2ldKTsKLSAgICAgICAgb3V0LmFwcGVuZChieXRlY29kZU9mZnNldCArIGN1cnJlbnRbMl0udS5v
cGVyYW5kKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGNhc2Ugb3Bfc3dpdGNoX3N0cmlu
ZzogewotICAgICAgICBTdHJpbmdKdW1wVGFibGUmIHRhYmxlID0gY29kZUJsb2NrLT5zdHJpbmdT
d2l0Y2hKdW1wVGFibGUoY3VycmVudFsxXS51Lm9wZXJhbmQpOwotICAgICAgICBTdHJpbmdKdW1w
VGFibGU6OlN0cmluZ09mZnNldFRhYmxlOjppdGVyYXRvciBpdGVyID0gdGFibGUub2Zmc2V0VGFi
bGUuYmVnaW4oKTsKLSAgICAgICAgU3RyaW5nSnVtcFRhYmxlOjpTdHJpbmdPZmZzZXRUYWJsZTo6
aXRlcmF0b3IgZW5kID0gdGFibGUub2Zmc2V0VGFibGUuZW5kKCk7Ci0gICAgICAgIGZvciAoOyBp
dGVyICE9IGVuZDsgKytpdGVyKQotICAgICAgICAgICAgb3V0LmFwcGVuZChieXRlY29kZU9mZnNl
dCArIGl0ZXItPnZhbHVlLmJyYW5jaE9mZnNldCk7Ci0gICAgICAgIG91dC5hcHBlbmQoYnl0ZWNv
ZGVPZmZzZXQgKyBjdXJyZW50WzJdLnUub3BlcmFuZCk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0K
LSAgICBjYXNlIG9wX2xvb3BfaGludDoKKyAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGludGVycHJl
dGVyLT5nZXRPcGNvZGVJRChpbnN0cnVjdGlvbnNCZWdpbltieXRlY29kZU9mZnNldF0pOworICAg
IGV4dHJhY3RTdG9yZWRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9jaywgaW50
ZXJwcmV0ZXIsIGluc3RydWN0aW9uc0JlZ2luLCBieXRlY29kZU9mZnNldCwgWyZdKGludCYgcmVs
YXRpdmVPZmZzZXQpIHsKKyAgICAgICAgb3V0LmFwcGVuZChieXRlY29kZU9mZnNldCArIHJlbGF0
aXZlT2Zmc2V0KTsKKyAgICB9KTsKKyAgICAvLyBvcF9sb29wX2hpbnQgZG9lcyBub3QgaGF2ZSBq
dW1wIHRhcmdldCBzdG9yZWQgaW4gYnl0ZWNvZGUgaW5zdHJ1Y3Rpb25zLgorICAgIGlmIChvcGNv
ZGVJRCA9PSBvcF9sb29wX2hpbnQpCiAgICAgICAgIG91dC5hcHBlbmQoYnl0ZWNvZGVPZmZzZXQp
OwotICAgICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgICBicmVhazsKLSAgICB9CiB9
CiAKLXZvaWQgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhDb2RlQmxvY2sqIGNvZGVCbG9jaywg
VmVjdG9yPHVuc2lnbmVkLCAzMj4mIG91dCkKK2VudW0gY2xhc3MgQ29tcHV0ZVByZWNpc2VKdW1w
VGFyZ2V0c01vZGUgeworICAgIEZvbGxvd0NvZGVCbG9ja0NsYWltLAorICAgIEZvcmNlQ29tcHV0
ZSwKK307CisKK3RlbXBsYXRlPENvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHNNb2RlIE1vZGUsIHR5
cGVuYW1lIEJsb2NrLCB0eXBlbmFtZSBJbnN0cnVjdGlvbiwgc2l6ZV90IHZlY3RvclNpemU+Cit2
b2lkIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHNJbnRlcm5hbChCbG9jayogY29kZUJsb2NrLCBJ
bnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQs
IFZlY3Rvcjx1bnNpZ25lZCwgdmVjdG9yU2l6ZT4mIG91dCkKIHsKICAgICBBU1NFUlQob3V0Lmlz
RW1wdHkoKSk7CiAgICAgCiAgICAgLy8gV2Ugd2lsbCBkZXJpdmUgYSBzdXBlcnNldCBvZiB0aGUg
anVtcCB0YXJnZXRzIHRoYXQgdGhlIGNvZGUgYmxvY2sgdGhpbmtzIGl0IGhhcy4KICAgICAvLyBT
bywgaWYgdGhlIGNvZGUgYmxvY2sgY2xhaW1zIHRoZXJlIGFyZSBub25lLCB0aGVuIHdlIGFyZSBk
b25lLgotICAgIGlmICghY29kZUJsb2NrLT5udW1iZXJPZkp1bXBUYXJnZXRzKCkpCisgICAgaWYg
KE1vZGUgPT0gQ29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0c01vZGU6OkZvbGxvd0NvZGVCbG9ja0Ns
YWltICYmICFjb2RlQmxvY2stPm51bWJlck9mSnVtcFRhcmdldHMoKSkKICAgICAgICAgcmV0dXJu
OwogICAgIAogICAgIGZvciAodW5zaWduZWQgaSA9IGNvZGVCbG9jay0+bnVtYmVyT2ZFeGNlcHRp
b25IYW5kbGVycygpOyBpLS07KSB7CkBAIC05OCwxMCArNjYsOCBAQCB2b2lkIGNvbXB1dGVQcmVj
aXNlSnVtcFRhcmdldHMoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFZlY3Rvcjx1bnNpZ25lZCwgMzI+
JiBvdXQpCiAgICAgfQogCiAgICAgSW50ZXJwcmV0ZXIqIGludGVycHJldGVyID0gY29kZUJsb2Nr
LT52bSgpLT5pbnRlcnByZXRlcjsKLSAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4g
PSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCk7Ci0gICAgdW5zaWduZWQgaW5zdHJ1
Y3Rpb25Db3VudCA9IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpOwogICAgIGZvciAo
dW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQgPSAwOyBieXRlY29kZU9mZnNldCA8IGluc3RydWN0aW9u
Q291bnQ7KSB7Ci0gICAgICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0ZXItPmdldE9w
Y29kZUlEKGluc3RydWN0aW9uc0JlZ2luW2J5dGVjb2RlT2Zmc2V0XS51Lm9wY29kZSk7CisgICAg
ICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGluc3RydWN0
aW9uc0JlZ2luW2J5dGVjb2RlT2Zmc2V0XSk7CiAgICAgICAgIGdldEp1bXBUYXJnZXRzRm9yQnl0
ZWNvZGVPZmZzZXQoY29kZUJsb2NrLCBpbnRlcnByZXRlciwgaW5zdHJ1Y3Rpb25zQmVnaW4sIGJ5
dGVjb2RlT2Zmc2V0LCBvdXQpOwogICAgICAgICBieXRlY29kZU9mZnNldCArPSBvcGNvZGVMZW5n
dGhzW29wY29kZUlEXTsKICAgICB9CkBAIC0xMjMsMTEgKzg5LDM0IEBAIHZvaWQgY29tcHV0ZVBy
ZWNpc2VKdW1wVGFyZ2V0cyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgVmVjdG9yPHVuc2lnbmVkLCAz
Mj4mIG91dCkKICAgICBvdXQuc2hyaW5rVG9GaXQoKTsKIH0KIAotdm9pZCBmaW5kSnVtcFRhcmdl
dHNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgdW5zaWduZWQgYnl0ZWNv
ZGVPZmZzZXQsIFZlY3Rvcjx1bnNpZ25lZCwgMT4mIG91dCkKK3ZvaWQgY29tcHV0ZVByZWNpc2VK
dW1wVGFyZ2V0cyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgVmVjdG9yPHVuc2lnbmVkLCAzMj4mIG91
dCkKIHsKLSAgICBJbnRlcnByZXRlciogaW50ZXJwcmV0ZXIgPSBjb2RlQmxvY2stPnZtKCktPmlu
dGVycHJldGVyOwotICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiA9IGNvZGVCbG9j
ay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsKLSAgICBnZXRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2Rl
T2Zmc2V0KGNvZGVCbG9jaywgaW50ZXJwcmV0ZXIsIGluc3RydWN0aW9uc0JlZ2luLCBieXRlY29k
ZU9mZnNldCwgb3V0KTsKKyAgICBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzSW50ZXJuYWw8Q29t
cHV0ZVByZWNpc2VKdW1wVGFyZ2V0c01vZGU6OkZvbGxvd0NvZGVCbG9ja0NsYWltPihjb2RlQmxv
Y2ssIGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSwgY29kZUJsb2NrLT5pbnN0cnVj
dGlvbnMoKS5zaXplKCksIG91dCk7Cit9CisKK3ZvaWQgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0
cyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1
bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50LCBWZWN0b3I8dW5zaWduZWQsIDMyPiYgb3V0KQorewor
ICAgIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHNJbnRlcm5hbDxDb21wdXRlUHJlY2lzZUp1bXBU
YXJnZXRzTW9kZTo6Rm9sbG93Q29kZUJsb2NrQ2xhaW0+KGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb25z
QmVnaW4sIGluc3RydWN0aW9uQ291bnQsIG91dCk7Cit9CisKK3ZvaWQgY29tcHV0ZVByZWNpc2VK
dW1wVGFyZ2V0cyhVbmxpbmtlZENvZGVCbG9jayogY29kZUJsb2NrLCBVbmxpbmtlZEluc3RydWN0
aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCwgVmVjdG9y
PHVuc2lnbmVkLCAzMj4mIG91dCkKK3sKKyAgICBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzSW50
ZXJuYWw8Q29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0c01vZGU6OkZvbGxvd0NvZGVCbG9ja0NsYWlt
Pihjb2RlQmxvY2ssIGluc3RydWN0aW9uc0JlZ2luLCBpbnN0cnVjdGlvbkNvdW50LCBvdXQpOwor
fQorCit2b2lkIHJlY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhVbmxpbmtlZENvZGVCbG9jayog
Y29kZUJsb2NrLCBVbmxpbmtlZEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWdu
ZWQgaW5zdHJ1Y3Rpb25Db3VudCwgVmVjdG9yPHVuc2lnbmVkPiYgb3V0KQoreworICAgIGNvbXB1
dGVQcmVjaXNlSnVtcFRhcmdldHNJbnRlcm5hbDxDb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzTW9k
ZTo6Rm9yY2VDb21wdXRlPihjb2RlQmxvY2ssIGluc3RydWN0aW9uc0JlZ2luLCBpbnN0cnVjdGlv
bkNvdW50LCBvdXQpOworfQorCit2b2lkIGZpbmRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0
KENvZGVCbG9jayogY29kZUJsb2NrLCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVu
c2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBWZWN0b3I8dW5zaWduZWQsIDE+JiBvdXQpCit7CisgICAg
Z2V0SnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChjb2RlQmxvY2ssIGNvZGVCbG9jay0+dm0o
KS0+aW50ZXJwcmV0ZXIsIGluc3RydWN0aW9uc0JlZ2luLCBieXRlY29kZU9mZnNldCwgb3V0KTsK
K30KKwordm9pZCBmaW5kSnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChVbmxpbmtlZENvZGVC
bG9jayogY29kZUJsb2NrLCBVbmxpbmtlZEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwg
dW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIFZlY3Rvcjx1bnNpZ25lZCwgMT4mIG91dCkKK3sKKyAg
ICBnZXRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9jaywgY29kZUJsb2NrLT52
bSgpLT5pbnRlcnByZXRlciwgaW5zdHJ1Y3Rpb25zQmVnaW4sIGJ5dGVjb2RlT2Zmc2V0LCBvdXQp
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHMuaAppbmRleCA4NTI0MTNkNzdiNzk4OTg0YjI3
Y2VmMGVkNjJiYzk0YzY4OWUyMTJjLi5iY2M5MzQ2Y2Q1ZDcwMjA0NjVkZWYwOWE1YjI1OWNmNDg3
MmQ5YjkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lz
ZUp1bXBUYXJnZXRzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNp
c2VKdW1wVGFyZ2V0cy5oCkBAIC0yMywxOSArMjMsMjMgQEAKICAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICov
CiAKLSNpZm5kZWYgUHJlY2lzZUp1bXBUYXJnZXRzX2gKLSNkZWZpbmUgUHJlY2lzZUp1bXBUYXJn
ZXRzX2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAKIG5hbWVzcGFj
ZSBKU0MgewogCitjbGFzcyBVbmxpbmtlZENvZGVCbG9jazsKK3N0cnVjdCBVbmxpbmtlZEluc3Ry
dWN0aW9uOworCiAvLyBSZXR1cm4gYSBzb3J0ZWQgbGlzdCBvZiBieXRlY29kZSBpbmRleCB0aGF0
IGFyZSB0aGUgZGVzdGluYXRpb24gb2YgYSBqdW1wLgogdm9pZCBjb21wdXRlUHJlY2lzZUp1bXBU
YXJnZXRzKENvZGVCbG9jayosIFZlY3Rvcjx1bnNpZ25lZCwgMzI+JiBvdXQpOwordm9pZCBjb21w
dXRlUHJlY2lzZUp1bXBUYXJnZXRzKENvZGVCbG9jayosIEluc3RydWN0aW9uKiBpbnN0cnVjdGlv
bnNCZWdpbiwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCwgVmVjdG9yPHVuc2lnbmVkLCAzMj4m
IG91dCk7Cit2b2lkIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMoVW5saW5rZWRDb2RlQmxvY2sq
LCBVbmxpbmtlZEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgaW5zdHJ1
Y3Rpb25Db3VudCwgVmVjdG9yPHVuc2lnbmVkLCAzMj4mIG91dCk7CiAKLXZvaWQgZmluZEp1bXBU
YXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiwgdW5zaWduZWQgYnl0ZWNvZGVPZmZz
ZXQsIFZlY3Rvcjx1bnNpZ25lZCwgMT4mIG91dCk7Ci0KLX0gLy8gbmFtZXNwYWNlIEpTQwordm9p
ZCByZWNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMoVW5saW5rZWRDb2RlQmxvY2sqLCBVbmxpbmtl
ZEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3Vu
dCwgVmVjdG9yPHVuc2lnbmVkPiYgb3V0KTsKIAotI2VuZGlmIC8vIFByZWNpc2VKdW1wVGFyZ2V0
c19oCit2b2lkIGZpbmRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayosIElu
c3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIFZl
Y3Rvcjx1bnNpZ25lZCwgMT4mIG91dCk7Cit2b2lkIGZpbmRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2Rl
T2Zmc2V0KFVubGlua2VkQ29kZUJsb2NrKiwgVW5saW5rZWRJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rp
b25zQmVnaW4sIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBWZWN0b3I8dW5zaWduZWQsIDE+JiBv
dXQpOwogCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHNJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzSW5saW5lcy5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjE5ZmRjZGNlYmI3MmY0NjJmMDg0ODVmOGRkZDhjMWYzMmZhMGRlNTUKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzSW5s
aW5lcy5oCkBAIC0wLDAgKzEsODIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkludGVycHJldGVySW5saW5l
cy5oIgorI2luY2x1ZGUgIk9wY29kZS5oIgorI2luY2x1ZGUgIlByZWNpc2VKdW1wVGFyZ2V0cy5o
IgorCituYW1lc3BhY2UgSlNDIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgQmxvY2ssIHR5cGVuYW1l
IEluc3RydWN0aW9uLCB0eXBlbmFtZSBGdW5jdGlvbj4KK2lubGluZSB2b2lkIGV4dHJhY3RTdG9y
ZWRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KEJsb2NrKiBjb2RlQmxvY2ssIEludGVycHJl
dGVyKiBpbnRlcnByZXRlciwgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25l
ZCBieXRlY29kZU9mZnNldCwgRnVuY3Rpb24gZnVuY3Rpb24pCit7CisgICAgT3Bjb2RlSUQgb3Bj
b2RlSUQgPSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25zQmVnaW5bYnl0ZWNv
ZGVPZmZzZXRdKTsKKyAgICBJbnN0cnVjdGlvbiogY3VycmVudCA9IGluc3RydWN0aW9uc0JlZ2lu
ICsgYnl0ZWNvZGVPZmZzZXQ7CisgICAgc3dpdGNoIChvcGNvZGVJRCkgeworICAgIGNhc2Ugb3Bf
am1wOgorICAgICAgICBmdW5jdGlvbihjdXJyZW50WzFdLnUub3BlcmFuZCk7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2Ugb3BfanRydWU6CisgICAgY2FzZSBvcF9qZmFsc2U6CisgICAgY2FzZSBv
cF9qZXFfbnVsbDoKKyAgICBjYXNlIG9wX2puZXFfbnVsbDoKKyAgICAgICAgZnVuY3Rpb24oY3Vy
cmVudFsyXS51Lm9wZXJhbmQpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIG9wX2puZXFfcHRy
OgorICAgIGNhc2Ugb3Bfamxlc3M6CisgICAgY2FzZSBvcF9qbGVzc2VxOgorICAgIGNhc2Ugb3Bf
amdyZWF0ZXI6CisgICAgY2FzZSBvcF9qZ3JlYXRlcmVxOgorICAgIGNhc2Ugb3Bfam5sZXNzOgor
ICAgIGNhc2Ugb3Bfam5sZXNzZXE6CisgICAgY2FzZSBvcF9qbmdyZWF0ZXI6CisgICAgY2FzZSBv
cF9qbmdyZWF0ZXJlcToKKyAgICAgICAgZnVuY3Rpb24oY3VycmVudFszXS51Lm9wZXJhbmQpOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIG9wX3N3aXRjaF9pbW06CisgICAgY2FzZSBvcF9zd2l0
Y2hfY2hhcjogeworICAgICAgICBhdXRvJiB0YWJsZSA9IGNvZGVCbG9jay0+c3dpdGNoSnVtcFRh
YmxlKGN1cnJlbnRbMV0udS5vcGVyYW5kKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gdGFi
bGUuYnJhbmNoT2Zmc2V0cy5zaXplKCk7IGktLTspCisgICAgICAgICAgICBmdW5jdGlvbih0YWJs
ZS5icmFuY2hPZmZzZXRzW2ldKTsKKyAgICAgICAgZnVuY3Rpb24oY3VycmVudFsyXS51Lm9wZXJh
bmQpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBvcF9zd2l0Y2hfc3RyaW5nOiB7
CisgICAgICAgIGF1dG8mIHRhYmxlID0gY29kZUJsb2NrLT5zdHJpbmdTd2l0Y2hKdW1wVGFibGUo
Y3VycmVudFsxXS51Lm9wZXJhbmQpOworICAgICAgICBhdXRvIGl0ZXIgPSB0YWJsZS5vZmZzZXRU
YWJsZS5iZWdpbigpOworICAgICAgICBhdXRvIGVuZCA9IHRhYmxlLm9mZnNldFRhYmxlLmVuZCgp
OworICAgICAgICBmb3IgKDsgaXRlciAhPSBlbmQ7ICsraXRlcikKKyAgICAgICAgICAgIGZ1bmN0
aW9uKGl0ZXItPnZhbHVlLmJyYW5jaE9mZnNldCk7CisgICAgICAgIGZ1bmN0aW9uKGN1cnJlbnRb
Ml0udS5vcGVyYW5kKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGRlZmF1bHQ6CisgICAg
ICAgIGJyZWFrOworICAgIH0KK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcAppbmRleCAw
MDVkZmY4YmZjMmM1MDQ4YzUwM2NlNjAyOWJiZDIzODMwNmExOTU0Li40MTRkOGU0M2FlNWNmZDJm
NDQzODE2Yjk5NmZiNjEzNzQzYjgzYjQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKICNp
bmNsdWRlICJVbmxpbmtlZENvZGVCbG9jay5oIgogCiAjaW5jbHVkZSAiQnl0ZWNvZGVHZW5lcmF0
b3IuaCIKKyNpbmNsdWRlICJCeXRlY29kZVJld3JpdGVyLmgiCiAjaW5jbHVkZSAiQ2xhc3NJbmZv
LmgiCiAjaW5jbHVkZSAiQ29kZUNhY2hlLmgiCiAjaW5jbHVkZSAiRXhlY3V0YWJsZS5oIgpAQCAt
MzYsNiArMzcsNyBAQAogI2luY2x1ZGUgIkpTU3RyaW5nLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5l
cy5oIgogI2luY2x1ZGUgIlBhcnNlci5oIgorI2luY2x1ZGUgIlByZWNpc2VKdW1wVGFyZ2V0c0lu
bGluZXMuaCIKICNpbmNsdWRlICJTb3VyY2VQcm92aWRlci5oIgogI2luY2x1ZGUgIlN0cnVjdHVy
ZS5oIgogI2luY2x1ZGUgIlN5bWJvbFRhYmxlLmgiCkBAIC0zNjcsNSArMzY5LDY3IEBAIGNvbnN0
IFVubGlua2VkSW5zdHJ1Y3Rpb25TdHJlYW0mIFVubGlua2VkQ29kZUJsb2NrOjppbnN0cnVjdGlv
bnMoKSBjb25zdAogICAgIHJldHVybiAqbV91bmxpbmtlZEluc3RydWN0aW9uczsKIH0KIAorVW5s
aW5rZWRIYW5kbGVySW5mbyogVW5saW5rZWRDb2RlQmxvY2s6OmhhbmRsZXJGb3JCeXRlY29kZU9m
ZnNldCh1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgUmVxdWlyZWRIYW5kbGVyIHJlcXVpcmVkSGFu
ZGxlcikKK3sKKyAgICByZXR1cm4gaGFuZGxlckZvckluZGV4KGJ5dGVjb2RlT2Zmc2V0LCByZXF1
aXJlZEhhbmRsZXIpOworfQorCitVbmxpbmtlZEhhbmRsZXJJbmZvKiBVbmxpbmtlZENvZGVCbG9j
azo6aGFuZGxlckZvckluZGV4KHVuc2lnbmVkIGluZGV4LCBSZXF1aXJlZEhhbmRsZXIgcmVxdWly
ZWRIYW5kbGVyKQoreworICAgIGlmICghbV9yYXJlRGF0YSkKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgcmV0dXJuIFVubGlua2VkSGFuZGxlckluZm86OmhhbmRsZXJGb3JJbmRleChtX3Jh
cmVEYXRhLT5tX2V4Y2VwdGlvbkhhbmRsZXJzLCBpbmRleCwgcmVxdWlyZWRIYW5kbGVyKTsKK30K
Kwordm9pZCBVbmxpbmtlZENvZGVCbG9jazo6YXBwbHlNb2RpZmljYXRpb24oQnl0ZWNvZGVSZXdy
aXRlciYgcmV3cml0ZXIpCit7CisgICAgLy8gQmVmb3JlIGFwcGx5aW5nIHRoZSBjaGFuZ2VzLCB3
ZSBhZGp1c3QgdGhlIGp1bXBzIGJhc2VkIG9uIHRoZSBvcmlnaW5hbCBieXRlY29kZSBvZmZzZXQs
IHRoZSBvZmZzZXQgdG8gdGhlIGp1bXAgdGFyZ2V0LCBhbmQKKyAgICAvLyB0aGUgaW5zZXJ0aW9u
IGluZm9ybWF0aW9uLgorCisgICAgQnl0ZWNvZGVHcmFwaDxVbmxpbmtlZENvZGVCbG9jaz4mIGdy
YXBoID0gcmV3cml0ZXIuZ3JhcGgoKTsKKyAgICBVbmxpbmtlZEluc3RydWN0aW9uKiBpbnN0cnVj
dGlvbnNCZWdpbiA9IGdyYXBoLmluc3RydWN0aW9ucygpLmJlZ2luKCk7CisKKyAgICBmb3IgKGlu
dCBieXRlY29kZU9mZnNldCA9IDAsIGluc3RydWN0aW9uQ291bnQgPSBncmFwaC5pbnN0cnVjdGlv
bnMoKS5zaXplKCk7IGJ5dGVjb2RlT2Zmc2V0IDwgaW5zdHJ1Y3Rpb25Db3VudDspIHsKKyAgICAg
ICAgVW5saW5rZWRJbnN0cnVjdGlvbiogY3VycmVudCA9IGluc3RydWN0aW9uc0JlZ2luICsgYnl0
ZWNvZGVPZmZzZXQ7CisgICAgICAgIE9wY29kZUlEIG9wY29kZUlEID0gY3VycmVudFswXS51Lm9w
Y29kZTsKKyAgICAgICAgZXh0cmFjdFN0b3JlZEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQo
dGhpcywgdm0oKS0+aW50ZXJwcmV0ZXIsIGluc3RydWN0aW9uc0JlZ2luLCBieXRlY29kZU9mZnNl
dCwgWyZdKGludCYgcmVsYXRpdmVPZmZzZXQpIHsKKyAgICAgICAgICAgIHJlbGF0aXZlT2Zmc2V0
ID0gcmV3cml0ZXIuYWRqdXN0T2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0LCBieXRlY29kZU9mZnNldCAr
IHJlbGF0aXZlT2Zmc2V0KTsKKyAgICAgICAgfSk7CisgICAgICAgIGJ5dGVjb2RlT2Zmc2V0ICs9
IG9wY29kZUxlbmd0aChvcGNvZGVJRCk7CisgICAgfQorCisgICAgLy8gVGhlbiwgZXhjZXB0aW9u
IGhhbmRsZXJzIHNob3VsZCBiZSBhZGp1c3RlZC4KKyAgICBpZiAobV9yYXJlRGF0YSkgeworICAg
ICAgICBmb3IgKFVubGlua2VkSGFuZGxlckluZm8mIGhhbmRsZXIgOiBtX3JhcmVEYXRhLT5tX2V4
Y2VwdGlvbkhhbmRsZXJzKSB7CisgICAgICAgICAgICBoYW5kbGVyLnRhcmdldCA9IHJld3JpdGVy
LmFkanVzdE9mZnNldCgwLCBoYW5kbGVyLnRhcmdldCk7CisgICAgICAgICAgICBoYW5kbGVyLnN0
YXJ0ID0gcmV3cml0ZXIuYWRqdXN0T2Zmc2V0KDAsIGhhbmRsZXIuc3RhcnQpOworICAgICAgICAg
ICAgaGFuZGxlci5lbmQgPSByZXdyaXRlci5hZGp1c3RPZmZzZXQoMCwgaGFuZGxlci5lbmQpOwor
ICAgICAgICB9CisKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3JhcmVEYXRhLT5t
X29wUHJvZmlsZUNvbnRyb2xGbG93Qnl0ZWNvZGVPZmZzZXRzLnNpemUoKTsgKytpKQorICAgICAg
ICAgICAgbV9yYXJlRGF0YS0+bV9vcFByb2ZpbGVDb250cm9sRmxvd0J5dGVjb2RlT2Zmc2V0c1tp
XSA9IHJld3JpdGVyLmFkanVzdE9mZnNldCgwLCBtX3JhcmVEYXRhLT5tX29wUHJvZmlsZUNvbnRy
b2xGbG93Qnl0ZWNvZGVPZmZzZXRzW2ldKTsKKworICAgICAgICBpZiAoIW1fcmFyZURhdGEtPm1f
dHlwZVByb2ZpbGVySW5mb01hcC5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIEhhc2hNYXA8dW5z
aWduZWQsIFJhcmVEYXRhOjpUeXBlUHJvZmlsZXJFeHByZXNzaW9uUmFuZ2U+IGFkanVzdGVkVHlw
ZVByb2ZpbGVySW5mb01hcDsKKyAgICAgICAgICAgIGZvciAoYXV0byYgZW50cnkgOiBtX3JhcmVE
YXRhLT5tX3R5cGVQcm9maWxlckluZm9NYXApCisgICAgICAgICAgICAgICAgYWRqdXN0ZWRUeXBl
UHJvZmlsZXJJbmZvTWFwLnNldChyZXdyaXRlci5hZGp1c3RPZmZzZXQoMCwgZW50cnkua2V5KSwg
ZW50cnkudmFsdWUpOworICAgICAgICAgICAgbV9yYXJlRGF0YS0+bV90eXBlUHJvZmlsZXJJbmZv
TWFwLnN3YXAoYWRqdXN0ZWRUeXBlUHJvZmlsZXJJbmZvTWFwKTsKKyAgICAgICAgfQorICAgIH0K
KworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9u
cy5zaXplKCk7ICsraSkKKyAgICAgICAgbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uc1tpXSA9
IHJld3JpdGVyLmFkanVzdE9mZnNldCgwLCBtX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zW2ld
KTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9leHByZXNzaW9uSW5mby5zaXplKCk7
ICsraSkKKyAgICAgICAgbV9leHByZXNzaW9uSW5mb1tpXS5pbnN0cnVjdGlvbk9mZnNldCA9IHJl
d3JpdGVyLmFkanVzdE9mZnNldCgwLCBtX2V4cHJlc3Npb25JbmZvW2ldLmluc3RydWN0aW9uT2Zm
c2V0KTsKKworICAgIC8vIFRoZW4sIG1vZGlmeSB0aGUgdW5saW5rZWQgaW5zdHJ1Y3Rpb25zLgor
ICAgIHJld3JpdGVyLmFwcGx5TW9kaWZpY2F0aW9uKCk7CisKKyAgICAvLyBBbmQgcmVjb21wdXRl
IHRoZSBqdW1wIHRhcmdldCBiYXNlZCBvbiB0aGUgbW9kaWZpZWQgdW5saW5rZWQgaW5zdHJ1Y3Rp
b25zLgorICAgIG1fanVtcFRhcmdldHMuY2xlYXIoKTsKKyAgICByZWNvbXB1dGVQcmVjaXNlSnVt
cFRhcmdldHModGhpcywgZ3JhcGguaW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSwgZ3JhcGguaW5zdHJ1
Y3Rpb25zKCkuc2l6ZSgpLCBtX2p1bXBUYXJnZXRzKTsKK30KKwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCmluZGV4IGI0ZDJj
ZjQ4ZTQ2MzhkMzczYjE2NzIwZjc2ZTNjZmY5N2RmMDE1MGQuLjcyZDE2OTYxMWFhOTM1MTc4YzQ4
MTBlZWQyZDU5YTgzMThmZjYxYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCkBAIC00NSw2ICs0NSw4IEBACiAKIG5hbWVzcGFj
ZSBKU0MgewogCitjbGFzcyBCeXRlY29kZVJld3JpdGVyOworY2xhc3MgRGVidWdnZXI7CiBjbGFz
cyBGdW5jdGlvbk1ldGFkYXRhTm9kZTsKIGNsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZTsKIGNsYXNz
IEpTU2NvcGU7CkBAIC02NSw3ICs2NywxMSBAQCB0eXBlZGVmIHVuc2lnbmVkIFVubGlua2VkT2Jq
ZWN0QWxsb2NhdGlvblByb2ZpbGU7CiB0eXBlZGVmIHVuc2lnbmVkIFVubGlua2VkTExJbnRDYWxs
TGlua0luZm87CiAKIHN0cnVjdCBVbmxpbmtlZFN0cmluZ0p1bXBUYWJsZSB7Ci0gICAgdHlwZWRl
ZiBIYXNoTWFwPFJlZlB0cjxTdHJpbmdJbXBsPiwgaW50MzJfdD4gU3RyaW5nT2Zmc2V0VGFibGU7
CisgICAgc3RydWN0IE9mZnNldExvY2F0aW9uIHsKKyAgICAgICAgaW50MzJfdCBicmFuY2hPZmZz
ZXQ7CisgICAgfTsKKworICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8U3RyaW5nSW1wbD4sIE9m
ZnNldExvY2F0aW9uPiBTdHJpbmdPZmZzZXRUYWJsZTsKICAgICBTdHJpbmdPZmZzZXRUYWJsZSBv
ZmZzZXRUYWJsZTsKIAogICAgIGlubGluZSBpbnQzMl90IG9mZnNldEZvclZhbHVlKFN0cmluZ0lt
cGwqIHZhbHVlLCBpbnQzMl90IGRlZmF1bHRPZmZzZXQpCkBAIC03NCw3ICs4MCw3IEBAIHN0cnVj
dCBVbmxpbmtlZFN0cmluZ0p1bXBUYWJsZSB7CiAgICAgICAgIFN0cmluZ09mZnNldFRhYmxlOjpj
b25zdF9pdGVyYXRvciBsb2MgPSBvZmZzZXRUYWJsZS5maW5kKHZhbHVlKTsKICAgICAgICAgaWYg
KGxvYyA9PSBlbmQpCiAgICAgICAgICAgICByZXR1cm4gZGVmYXVsdE9mZnNldDsKLSAgICAgICAg
cmV0dXJuIGxvYy0+dmFsdWU7CisgICAgICAgIHJldHVybiBsb2MtPnZhbHVlLmJyYW5jaE9mZnNl
dDsKICAgICB9CiAKIH07CkBAIC0xMDIsNiArMTA4LDggQEAgc3RydWN0IFVubGlua2VkSW5zdHJ1
Y3Rpb24gewogICAgIH0gdTsKIH07CiAKK2NsYXNzIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9u
OworCiBjbGFzcyBVbmxpbmtlZENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogcHVibGljOgog
ICAgIHR5cGVkZWYgSlNDZWxsIEJhc2U7CkBAIC0xMTEsNiArMTE5LDkgQEAgY2xhc3MgVW5saW5r
ZWRDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKIAogICAgIGVudW0geyBDYWxsRnVuY3Rpb24s
IEFwcGx5RnVuY3Rpb24gfTsKIAorICAgIHR5cGVkZWYgVW5saW5rZWRJbnN0cnVjdGlvbiBJbnN0
cnVjdGlvbjsKKyAgICB0eXBlZGVmIFZlY3RvcjxVbmxpbmtlZEluc3RydWN0aW9uLCAwLCBVbnNh
ZmVWZWN0b3JPdmVyZmxvdz4gVW5wYWNrZWRJbnN0cnVjdGlvbnM7CisKICAgICBib29sIGlzQ29u
c3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2lzQ29uc3RydWN0b3I7IH0KICAgICBib29sIGlz
U3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNTdHJpY3RNb2RlOyB9CiAgICAgYm9vbCB1
c2VzRXZhbCgpIGNvbnN0IHsgcmV0dXJuIG1fdXNlc0V2YWw7IH0KQEAgLTIwMCw2ICsyMTEsOSBA
QCBjbGFzcyBVbmxpbmtlZENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgIHVuc2lnbmVk
IGp1bXBUYXJnZXQoaW50IGluZGV4KSBjb25zdCB7IHJldHVybiBtX2p1bXBUYXJnZXRzW2luZGV4
XTsgfQogICAgIHVuc2lnbmVkIGxhc3RKdW1wVGFyZ2V0KCkgY29uc3QgeyByZXR1cm4gbV9qdW1w
VGFyZ2V0cy5sYXN0KCk7IH0KIAorICAgIFVubGlua2VkSGFuZGxlckluZm8qIGhhbmRsZXJGb3JC
eXRlY29kZU9mZnNldCh1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgUmVxdWlyZWRIYW5kbGVyID0g
UmVxdWlyZWRIYW5kbGVyOjpBbnlIYW5kbGVyKTsKKyAgICBVbmxpbmtlZEhhbmRsZXJJbmZvKiBo
YW5kbGVyRm9ySW5kZXgodW5zaWduZWQsIFJlcXVpcmVkSGFuZGxlciA9IFJlcXVpcmVkSGFuZGxl
cjo6QW55SGFuZGxlcik7CisKICAgICBib29sIGlzQnVpbHRpbkZ1bmN0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV9pc0J1aWx0aW5GdW5jdGlvbjsgfQogCiAgICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0
cnVjdG9yS2luZCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PENvbnN0cnVjdG9yS2luZD4o
bV9jb25zdHJ1Y3RvcktpbmQpOyB9CkBAIC0yMzAsNiArMjQ0LDggQEAgY2xhc3MgVW5saW5rZWRD
b2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICB2b2lkIHNldEluc3RydWN0aW9ucyhzdGQ6
OnVuaXF1ZV9wdHI8VW5saW5rZWRJbnN0cnVjdGlvblN0cmVhbT4pOwogICAgIGNvbnN0IFVubGlu
a2VkSW5zdHJ1Y3Rpb25TdHJlYW0mIGluc3RydWN0aW9ucygpIGNvbnN0OwogCisgICAgaW50IG51
bUNhbGxlZUxvY2FscygpIGNvbnN0IHsgcmV0dXJuIG1fbnVtQ2FsbGVlTG9jYWxzOyB9CisKICAg
ICBpbnQgbV9udW1WYXJzOwogICAgIGludCBtX251bUNhcHR1cmVkVmFyczsKICAgICBpbnQgbV9u
dW1DYWxsZWVMb2NhbHM7CkBAIC0zODEsNiArMzk3LDggQEAgY2xhc3MgVW5saW5rZWRDb2RlQmxv
Y2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICB9CiAKIHByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNz
IEJ5dGVjb2RlUmV3cml0ZXI7CisgICAgdm9pZCBhcHBseU1vZGlmaWNhdGlvbihCeXRlY29kZVJl
d3JpdGVyJik7CiAKICAgICB2b2lkIGNyZWF0ZVJhcmVEYXRhSWZOZWNlc3NhcnkoKQogICAgIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WaXJ0dWFsUmVnaXN0
ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WaXJ0dWFsUmVnaXN0ZXIuaApp
bmRleCBkM2RmNDA5NTdiNTE3NTY4ZTNhZWZiZTNhMWE2MDlmZDg3OGJhYWMzLi5kYWY1MDlmNmM3
ZDExNWU0NWJjYjEwN2M2N2QzZDM4ZDgwNGYyODk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvVmlydHVhbFJlZ2lzdGVyLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1ZpcnR1YWxSZWdpc3Rlci5oCkBAIC0yNiw4ICsyNiw4IEBACiAjaWZu
ZGVmIFZpcnR1YWxSZWdpc3Rlcl9oCiAjZGVmaW5lIFZpcnR1YWxSZWdpc3Rlcl9oCiAKKyNpbmNs
dWRlICJCeXRlY29kZUNvbnZlbnRpb25zLmgiCiAjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCi0KICNp
bmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC0xMDMsNyAr
MTAzLDcgQEAgY2xhc3MgVmlydHVhbFJlZ2lzdGVyIHsKIAogcHJpdmF0ZToKICAgICBzdGF0aWMg
Y29uc3QgaW50IHNfaW52YWxpZFZpcnR1YWxSZWdpc3RlciA9IDB4M2ZmZmZmZmY7Ci0gICAgc3Rh
dGljIGNvbnN0IGludCBzX2ZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4ID0gMHg0MDAwMDAwMDsK
KyAgICBzdGF0aWMgY29uc3QgaW50IHNfZmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXggPSBGaXJz
dENvbnN0YW50UmVnaXN0ZXJJbmRleDsKIAogICAgIHN0YXRpYyBpbnQgbG9jYWxUb09wZXJhbmQo
aW50IGxvY2FsKSB7IHJldHVybiAtMSAtIGxvY2FsOyB9CiAgICAgc3RhdGljIGludCBvcGVyYW5k
VG9Mb2NhbChpbnQgb3BlcmFuZCkgeyByZXR1cm4gLTEgLSBvcGVyYW5kOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3Iu
Y3BwCmluZGV4IDMxMmQ4OWY3YWRjNzNmMDdkYzUxNzliNzVlNTc1YzU1OTAyNjZkYjguLjUzM2Vm
MDg5OGI3N2RiZGIzNmU0YTI1M2QwNzRkZDJkNDcyMjAxOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBA
IC0zMyw2ICszMyw3IEBACiAKICNpbmNsdWRlICJBcml0aFByb2ZpbGUuaCIKICNpbmNsdWRlICJC
dWlsdGluRXhlY3V0YWJsZXMuaCIKKyNpbmNsdWRlICJCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlv
bi5oIgogI2luY2x1ZGUgIkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5oIgogI2luY2x1ZGUgIklu
dGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgpAQCAtMTU1LDYgKzE1NiwxMCBA
QCBQYXJzZXJFcnJvciBCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUoKQogICAgICAgICBtX2Nv
ZGVCbG9jay0+YWRkRXhjZXB0aW9uSGFuZGxlcihpbmZvKTsKICAgICB9CiAgICAgCisKKyAgICBp
ZiAobV9jb2RlQmxvY2stPnBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9y
Qm9keU1vZGUpCisgICAgICAgIHBlcmZvcm1HZW5lcmF0b3JpZmljYXRpb24obV9jb2RlQmxvY2su
Z2V0KCksIG1faW5zdHJ1Y3Rpb25zLCBtX2dlbmVyYXRvckZyYW1lU3ltYm9sVGFibGUuZ2V0KCks
IG1fZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZUluZGV4KTsKKwogICAgIG1fY29kZUJsb2NrLT5z
ZXRJbnN0cnVjdGlvbnMoc3RkOjptYWtlX3VuaXF1ZTxVbmxpbmtlZEluc3RydWN0aW9uU3RyZWFt
PihtX2luc3RydWN0aW9ucykpOwogCiAgICAgbV9jb2RlQmxvY2stPnNocmlua1RvRml0KCk7CkBA
IC0yNjIsMTAgKzI2NywxNCBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3Io
Vk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAgIGJvb2wgc2hv
dWxkQ2FwdHVyZUFsbE9mVGhlVGhpbmdzID0gbV9zaG91bGRFbWl0RGVidWdIb29rcyB8fCBjb2Rl
QmxvY2stPnVzZXNFdmFsKCk7CiAgICAgYm9vbCBuZWVkc0FyZ3VtZW50cyA9IChmdW5jdGlvbk5v
ZGUtPnVzZXNBcmd1bWVudHMoKSB8fCBjb2RlQmxvY2stPnVzZXNFdmFsKCkgfHwgKGZ1bmN0aW9u
Tm9kZS0+dXNlc0Fycm93RnVuY3Rpb24oKSAmJiAhY29kZUJsb2NrLT5pc0Fycm93RnVuY3Rpb24o
KSAmJiBpc0FyZ3VtZW50c1VzZWRJbklubmVyQXJyb3dGdW5jdGlvbigpKSk7CiAKLSAgICAvLyBH
ZW5lcmF0b3IgbmV2ZXIgcHJvdmlkZXMgImFyZ3VtZW50cyIuICJhcmd1bWVudHMiIHJlZmVyZW5j
ZSB3aWxsIGJlIHJlc29sdmVkIGluIGFuIHVwcGVyIGdlbmVyYXRvciBmdW5jdGlvbiBzY29wZS4K
LSAgICBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yQm9keU1vZGUp
CisgICAgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckJvZHlNb2Rl
KSB7CisgICAgICAgIC8vIEdlbmVyYXRvciBuZXZlciBwcm92aWRlcyAiYXJndW1lbnRzIi4gImFy
Z3VtZW50cyIgcmVmZXJlbmNlIHdpbGwgYmUgcmVzb2x2ZWQgaW4gYW4gdXBwZXIgZ2VuZXJhdG9y
IGZ1bmN0aW9uIHNjb3BlLgogICAgICAgICBuZWVkc0FyZ3VtZW50cyA9IGZhbHNlOwogCisgICAg
ICAgIC8vIEdlbmVyYXRvciB1c2VzIHRoZSB2YXIgc2NvcGUgdG8gc2F2ZSBhbmQgcmVzdW1lIGl0
cyB2YXJpYWJsZXMuIFNvIHRoZSBsZXhpY2FsIHNjb3BlIGlzIGFsd2F5cyBpbnN0YW50aWF0ZWQu
CisgICAgICAgIHNob3VsZENhcHR1cmVTb21lT2ZUaGVUaGluZ3MgPSB0cnVlOworICAgIH0KKwog
ICAgIGlmIChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JXcmFwcGVyRnVu
Y3Rpb25Nb2RlICYmIG5lZWRzQXJndW1lbnRzKSB7CiAgICAgICAgIC8vIEdlbmVyYXRvciBkb2Vz
IG5vdCBwcm92aWRlICJhcmd1bWVudHMiLiBJbnN0ZWFkLCB3cmFwcGluZyBHZW5lcmF0b3JGdW5j
dGlvbiBwcm92aWRlcyAiYXJndW1lbnRzIi4KICAgICAgICAgLy8gVGhpcyBpcyBiZWNhdXNlIGFy
Z3VtZW50cyBvZiBhIGdlbmVyYXRvciBzaG91bGQgYmUgZXZhbHVhdGVkIGJlZm9yZSBzdGFydGlu
ZyBpdC4KQEAgLTI3NCw3ICsyODMsNyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5l
cmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAgICAg
ICAvLyAgICBmdW5jdGlvbiAqZ2VuKGEsIGIgPSBoZWxsbygpKQogICAgICAgICAvLyAgICB7CiAg
ICAgICAgIC8vICAgICAgICByZXR1cm4gewotICAgICAgICAvLyAgICAgICAgICAgIEBnZW5lcmF0
b3JOZXh0OiBmdW5jdGlvbiAoQGdlbmVyYXRvciwgQGdlbmVyYXRvclN0YXRlLCBAZ2VuZXJhdG9y
VmFsdWUsIEBnZW5lcmF0b3JSZXN1bWVNb2RlKQorICAgICAgICAvLyAgICAgICAgICAgIEBnZW5l
cmF0b3JOZXh0OiBmdW5jdGlvbiAoQGdlbmVyYXRvciwgQGdlbmVyYXRvclN0YXRlLCBAZ2VuZXJh
dG9yVmFsdWUsIEBnZW5lcmF0b3JSZXN1bWVNb2RlLCBAZ2VuZXJhdG9yRnJhbWUpCiAgICAgICAg
IC8vICAgICAgICAgICAgewogICAgICAgICAvLyAgICAgICAgICAgICAgICBhcmd1bWVudHM7ICAv
LyBUaGlzIGBhcmd1bWVudHNgIHNob3VsZCByZWZlcmVuY2UgdG8gdGhlIGdlbidzIGFyZ3VtZW50
cy4KICAgICAgICAgLy8gICAgICAgICAgICAgICAgLi4uCkBAIC0zMDMsMjggKzMxMiwxNyBAQCBC
eXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUq
IGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAgICAgICByZXR1cm4gY2FwdHVyZXModWlkKSA/IFZh
cktpbmQ6OlNjb3BlIDogVmFyS2luZDo6U3RhY2s7CiAgICAgfTsKIAotICAgIGVtaXRFbnRlcigp
OwotCi0gICAgYWxsb2NhdGVBbmRFbWl0U2NvcGUoKTsKLQogICAgIG1fY2FsbGVlUmVnaXN0ZXIu
c2V0SW5kZXgoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlKTsKIAogICAgIGluaXRpYWxpemVQYXJhbWV0
ZXJzKHBhcmFtZXRlcnMpOwogICAgIEFTU0VSVCghKGlzU2ltcGxlUGFyYW1ldGVyTGlzdCAmJiBt
X3Jlc3RQYXJhbWV0ZXIpKTsKIAotICAgIC8vIEJlZm9yZSBlbWl0dGluZyBhIHNjb3BlIGNyZWF0
aW9uLCBlbWl0IGEgZ2VuZXJhdG9yIHByb2xvZ3VlIHRoYXQgY29udGFpbnMganVtcCBiYXNlZCBv
biBhIGdlbmVyYXRvcidzIHN0YXRlLgotICAgIGlmIChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VN
b2RlOjpHZW5lcmF0b3JCb2R5TW9kZSkgewotICAgICAgICBtX2dlbmVyYXRvclJlZ2lzdGVyID0g
Jm1fcGFyYW1ldGVyc1sxXTsKLQotICAgICAgICAvLyBKdW1wIHdpdGggc3dpdGNoX2ltbSBiYXNl
ZCBvbiBAZ2VuZXJhdG9yU3RhdGUuIFdlIGRvbid0IHRha2UgdGhlIGNvcm91dGluZSBzdHlsZWQg
Z2VuZXJhdG9yIGltcGxlbWVudGF0aW9uLgotICAgICAgICAvLyBXaGVuIGNhbGxpbmcgYG5leHQo
KWAsIHdlIHdvdWxkIGxpa2UgdG8gZW50ZXIgdGhlIHNhbWUgcHJvbG9ndWUgaW5zdGVhZCBvZiBq
dW1waW5nIGJhc2VkIG9uIHRoZSBzYXZlZCBpbnN0cnVjdGlvbiBwb2ludGVyLgotICAgICAgICAv
LyBJdCdzIHN1aXRhbGUgZm9yIGlubGluaW5nLCBiZWNhdXNlIGl0IGp1c3QgaW5saW5lcyBvbmUg
YG5leHRgIGZ1bmN0aW9uIGltcGxlbWVudGF0aW9uLgorICAgIGVtaXRFbnRlcigpOwogCi0gICAg
ICAgIGJlZ2luR2VuZXJhdG9yKGdlbmVyYXRvclN0YXRlUmVnaXN0ZXIoKSk7CisgICAgaWYgKHBh
cnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckJvZHlNb2RlKQorICAgICAgICBt
X2dlbmVyYXRvclJlZ2lzdGVyID0gJm1fcGFyYW1ldGVyc1sxXTsKIAotICAgICAgICAvLyBJbml0
aWFsIHN0YXRlLgotICAgICAgICBlbWl0R2VuZXJhdG9yU3RhdGVMYWJlbCgpOwotICAgIH0KKyAg
ICBhbGxvY2F0ZUFuZEVtaXRTY29wZSgpOwogCiAgICAgaWYgKGZ1bmN0aW9uTmFtZUlzSW5TY29w
ZShmdW5jdGlvbk5vZGUtPmlkZW50KCksIGZ1bmN0aW9uTm9kZS0+ZnVuY3Rpb25Nb2RlKCkpKSB7
CiAgICAgICAgIEFTU0VSVChwYXJzZU1vZGUgIT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JC
b2R5TW9kZSk7CkBAIC02NDEsNiArNjM5LDE2IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29k
ZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtlCiAg
ICAgICAgICAgICBlbWl0TG9hZE5ld1RhcmdldEZyb21BcnJvd0Z1bmN0aW9uTGV4aWNhbEVudmly
b25tZW50KCk7CiAgICAgfQogICAgIAorICAgIC8vIFNldCB1cCB0aGUgbGV4aWNhbCBlbnZpcm9u
bWVudCBzY29wZSBhcyB0aGUgZ2VuZXJhdG9yIGZyYW1lLiBXZSBzdG9yZSB0aGUgc2F2ZWQgYW5k
IHJlc3VtZWQgZ2VuZXJhdG9yIHJlZ2lzdGVycyBpbnRvIHRoaXMgc2NvcGUgd2l0aCB0aGUgc3lt
Ym9sIGtleXMuCisgICAgLy8gU2luY2UgdGhleSBhcmUgc3ltYm9sIGtleWVkLCB0aGVzZSB2YXJp
YWJsZXMgY2Fubm90IGJlIHJlYWNoZWQgZnJvbSB0aGUgdXN1YWwgY29kZS4KKyAgICBpZiAoU291
cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JCb2R5TW9kZSA9PSBwYXJzZU1vZGUpIHsKKyAgICAgICAg
QVNTRVJUKG1fbGV4aWNhbEVudmlyb25tZW50UmVnaXN0ZXIpOworICAgICAgICBtX2dlbmVyYXRv
ckZyYW1lU3ltYm9sVGFibGUuc2V0KCptX3ZtLCBmdW5jdGlvblN5bWJvbFRhYmxlKTsKKyAgICAg
ICAgbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlSW5kZXggPSBzeW1ib2xUYWJsZUNvbnN0YW50
SW5kZXg7CisgICAgICAgIGVtaXRNb3ZlKGdlbmVyYXRvckZyYW1lUmVnaXN0ZXIoKSwgbV9sZXhp
Y2FsRW52aXJvbm1lbnRSZWdpc3Rlcik7CisgICAgICAgIGVtaXRQdXRCeUlkKGdlbmVyYXRvclJl
Z2lzdGVyKCksIHByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JGcmFtZVBy
aXZhdGVOYW1lKCksIGdlbmVyYXRvckZyYW1lUmVnaXN0ZXIoKSk7CisgICAgfQorCiAgICAgYm9v
bCBzaG91bGRJbml0aWFsaXplQmxvY2tTY29wZWRGdW5jdGlvbnMgPSBmYWxzZTsgLy8gV2UgZ2Vu
ZXJhdGUgdG9wLWxldmVsIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucyBpbiA6OmdlbmVyYXRlKCkuCiAg
ICAgcHVzaExleGljYWxTY29wZShtX3Njb3BlTm9kZSwgVERaQ2hlY2tPcHRpbWl6YXRpb246Ok9w
dGltaXplLCBOZXN0ZWRTY29wZVR5cGU6OklzTm90TmVzdGVkLCBudWxscHRyLCBzaG91bGRJbml0
aWFsaXplQmxvY2tTY29wZWRGdW5jdGlvbnMpOwogfQpAQCAtMzY3Miw4ICszNjgwLDcgQEAgdm9p
ZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENvbXBsZXhQb3BTY29wZXMoUmVnaXN0ZXJJRCogc2Nv
cGUsIENvbnRyb2xGbG93Q29udGUKICAgICAgICAgICAgIGlmIChmbGlwVHJpZXMpIHsKICAgICAg
ICAgICAgICAgICB3aGlsZSAobV90cnlDb250ZXh0U3RhY2suc2l6ZSgpICE9IGZpbmFsbHlDb250
ZXh0LnRyeUNvbnRleHRTdGFja1NpemUpIHsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKG1f
dHJ5Q29udGV4dFN0YWNrLnNpemUoKSA+IGZpbmFsbHlDb250ZXh0LnRyeUNvbnRleHRTdGFja1Np
emUpOwotICAgICAgICAgICAgICAgICAgICBUcnlDb250ZXh0IGNvbnRleHQgPSBtX3RyeUNvbnRl
eHRTdGFjay5sYXN0KCk7Ci0gICAgICAgICAgICAgICAgICAgIG1fdHJ5Q29udGV4dFN0YWNrLnJl
bW92ZUxhc3QoKTsKKyAgICAgICAgICAgICAgICAgICAgVHJ5Q29udGV4dCBjb250ZXh0ID0gbV90
cnlDb250ZXh0U3RhY2sudGFrZUxhc3QoKTsKICAgICAgICAgICAgICAgICAgICAgVHJ5UmFuZ2Ug
cmFuZ2U7CiAgICAgICAgICAgICAgICAgICAgIHJhbmdlLnN0YXJ0ID0gY29udGV4dC5zdGFydDsK
ICAgICAgICAgICAgICAgICAgICAgcmFuZ2UuZW5kID0gYmVmb3JlRmluYWxseTsKQEAgLTM5NTcs
NyArMzk2NCw3IEBAIHN0YXRpYyB2b2lkIHByZXBhcmVKdW1wVGFibGVGb3JTdHJpbmdTd2l0Y2go
VW5saW5rZWRTdHJpbmdKdW1wVGFibGUmIGp1bXBUYWJsZSwKICAgICAgICAgCiAgICAgICAgIEFT
U0VSVChub2Rlc1tpXS0+aXNTdHJpbmcoKSk7CiAgICAgICAgIFN0cmluZ0ltcGwqIGNsYXVzZSA9
IHN0YXRpY19jYXN0PFN0cmluZ05vZGUqPihub2Rlc1tpXSktPnZhbHVlKCkuaW1wbCgpOwotICAg
ICAgICBqdW1wVGFibGUub2Zmc2V0VGFibGUuYWRkKGNsYXVzZSwgbGFiZWxzW2ldLT5iaW5kKHN3
aXRjaEFkZHJlc3MsIHN3aXRjaEFkZHJlc3MgKyAzKSk7CisgICAgICAgIGp1bXBUYWJsZS5vZmZz
ZXRUYWJsZS5hZGQoY2xhdXNlLCBVbmxpbmtlZFN0cmluZ0p1bXBUYWJsZTo6T2Zmc2V0TG9jYXRp
b24geyBsYWJlbHNbaV0tPmJpbmQoc3dpdGNoQWRkcmVzcywgc3dpdGNoQWRkcmVzcyArIDMpIH0p
OwogICAgIH0KIH0KIApAQCAtNDQ1OSwzMSArNDQ2NiwzMyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0UmVxdWlyZU9iamVjdENvZXJjaWJsZShSZWdpc3RlcklEKiB2YWx1ZSwgY29uc3Qg
U3RyaQogdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFlpZWxkUG9pbnQoUmVnaXN0ZXJJRCog
YXJndW1lbnQpCiB7CiAgICAgUmVmUHRyPExhYmVsPiBtZXJnZVBvaW50ID0gbmV3TGFiZWwoKTsK
LSAgICBzaXplX3QgeWllbGRQb2ludEluZGV4ID0gbV9nZW5lcmF0b3JSZXN1bWVMYWJlbHMuc2l6
ZSgpOwotICAgIGVtaXRHZW5lcmF0b3JTdGF0ZUNoYW5nZSh5aWVsZFBvaW50SW5kZXgpOwotICAg
IC8vIEZpcnN0IHlpZWxkIHBvaW50IGlzIHVzZWQgZm9yIGluaXRpYWwgc2VxdWVuY2UuCi0gICAg
dW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0geWllbGRQb2ludEluZGV4IC0gMTsKLSAg
ICBlbWl0U2F2ZShtZXJnZVBvaW50LmdldCgpLCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpOwotICAg
IGVtaXRSZXR1cm4oYXJndW1lbnQpOwotICAgIGVtaXRSZXN1bWUobWVyZ2VQb2ludC5nZXQoKSwg
bGl2ZUNhbGxlZUxvY2Fsc0luZGV4KTsKLX0KKyAgICB1bnNpZ25lZCB5aWVsZFBvaW50SW5kZXgg
PSBtX3lpZWxkUG9pbnRzKys7CisgICAgZW1pdEdlbmVyYXRvclN0YXRlQ2hhbmdlKHlpZWxkUG9p
bnRJbmRleCArIDEpOworCisgICAgLy8gU3BsaXQgdGhlIHRyeSByYW5nZSBoZXJlLgorICAgIFJl
ZlB0cjxMYWJlbD4gc2F2ZVBvaW50ID0gZW1pdExhYmVsKG5ld0xhYmVsKCkuZ2V0KCkpOworICAg
IGZvciAodW5zaWduZWQgaSA9IG1fdHJ5Q29udGV4dFN0YWNrLnNpemUoKTsgaS0tOykgeworICAg
ICAgICBUcnlDb250ZXh0JiBjb250ZXh0ID0gbV90cnlDb250ZXh0U3RhY2tbaV07CisgICAgICAg
IFRyeVJhbmdlIHJhbmdlOworICAgICAgICByYW5nZS5zdGFydCA9IGNvbnRleHQuc3RhcnQ7Cisg
ICAgICAgIHJhbmdlLmVuZCA9IHNhdmVQb2ludDsKKyAgICAgICAgcmFuZ2UudHJ5RGF0YSA9IGNv
bnRleHQudHJ5RGF0YTsKKyAgICAgICAgbV90cnlSYW5nZXMuYXBwZW5kKHJhbmdlKTsKKworICAg
ICAgICAvLyBUcnkgcmFuZ2Ugd2lsbCBiZSByZXN0YXJlZCBhdCB0aGUgbWVyZ2UgcG9pbnQuCisg
ICAgICAgIGNvbnRleHQuc3RhcnQgPSBtZXJnZVBvaW50OworICAgIH0KKyAgICBWZWN0b3I8VHJ5
Q29udGV4dD4gc2F2ZWRUcnlDb250ZXh0U3RhY2s7CisgICAgbV90cnlDb250ZXh0U3RhY2suc3dh
cChzYXZlZFRyeUNvbnRleHRTdGFjayk7CiAKLXZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRT
YXZlKExhYmVsKiBtZXJnZVBvaW50LCB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpCi17
Ci0gICAgc2l6ZV90IGJlZ2luID0gaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpOwotICAgIGVtaXRPcGNv
ZGUob3Bfc2F2ZSk7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fZ2VuZXJhdG9yUmVnaXN0
ZXItPmluZGV4KCkpOwotICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChsaXZlQ2FsbGVlTG9jYWxz
SW5kZXgpOwotICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChtZXJnZVBvaW50LT5iaW5kKGJlZ2lu
LCBpbnN0cnVjdGlvbnMoKS5zaXplKCkpKTsKLX0KKyAgICBlbWl0T3Bjb2RlKG9wX3lpZWxkKTsK
KyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZ2VuZXJhdG9yRnJhbWVSZWdpc3RlcigpLT5pbmRl
eCgpKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoeWllbGRQb2ludEluZGV4KTsKKyAgICBp
bnN0cnVjdGlvbnMoKS5hcHBlbmQoYXJndW1lbnQtPmluZGV4KCkpOwogCi12b2lkIEJ5dGVjb2Rl
R2VuZXJhdG9yOjplbWl0UmVzdW1lKExhYmVsKiBtZXJnZVBvaW50LCB1bnNpZ25lZCBsaXZlQ2Fs
bGVlTG9jYWxzSW5kZXgpCi17Ci0gICAgZW1pdEdlbmVyYXRvclN0YXRlTGFiZWwoKTsKLSAgICBl
bWl0T3Bjb2RlKG9wX3Jlc3VtZSk7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fZ2VuZXJh
dG9yUmVnaXN0ZXItPmluZGV4KCkpOwotICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChsaXZlQ2Fs
bGVlTG9jYWxzSW5kZXgpOwotICAgIGVtaXRMYWJlbChtZXJnZVBvaW50KTsKKyAgICAvLyBSZXN0
b3JlIHRoZSB0cnkgY29udGV4dHMsIHdoaWNoIHN0YXJ0IG9mZnNldCBpcyB1cGRhdGVkIHRvIHRo
ZSBtZXJnZSBwb2ludC4KKyAgICBtX3RyeUNvbnRleHRTdGFjay5zd2FwKHNhdmVkVHJ5Q29udGV4
dFN0YWNrKTsKKyAgICBlbWl0TGFiZWwobWVyZ2VQb2ludC5nZXQoKSk7CiB9CiAKIFJlZ2lzdGVy
SUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0WWllbGQoUmVnaXN0ZXJJRCogYXJndW1lbnQpCkBA
IC00NjQwLDM5ICs0NjQ5LDYgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdlbmVyYXRv
clN0YXRlQ2hhbmdlKGludDMyX3Qgc3RhdGUpCiAgICAgZW1pdFB1dEJ5SWQoZ2VuZXJhdG9yUmVn
aXN0ZXIoKSwgcHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclN0YXRlUHJp
dmF0ZU5hbWUoKSwgY29tcGxldGVkU3RhdGUpOwogfQogCi12b2lkIEJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0R2VuZXJhdG9yU3RhdGVMYWJlbCgpCi17Ci0gICAgUmVmUHRyPExhYmVsPiBsYWJlbCA9
IG5ld0xhYmVsKCk7Ci0gICAgbV9nZW5lcmF0b3JSZXN1bWVMYWJlbHMuYXBwZW5kKGxhYmVsLmdl
dCgpKTsKLSAgICBlbWl0TGFiZWwobGFiZWwuZ2V0KCkpOwotfQotCi12b2lkIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjpiZWdpbkdlbmVyYXRvcihSZWdpc3RlcklEKiBzdGF0ZSkKLXsKLSAgICBiZWdpblN3
aXRjaChzdGF0ZSwgU3dpdGNoSW5mbzo6U3dpdGNoSW1tZWRpYXRlKTsKLX0KLQotdm9pZCBCeXRl
Y29kZUdlbmVyYXRvcjo6ZW5kR2VuZXJhdG9yKExhYmVsKiBkZWZhdWx0TGFiZWwpCi17Ci0gICAg
U3dpdGNoSW5mbyBzd2l0Y2hJbmZvID0gbV9zd2l0Y2hDb250ZXh0U3RhY2subGFzdCgpOwotICAg
IG1fc3dpdGNoQ29udGV4dFN0YWNrLnJlbW92ZUxhc3QoKTsKLQotICAgIGluc3RydWN0aW9ucygp
W3N3aXRjaEluZm8uYnl0ZWNvZGVPZmZzZXQgKyAxXSA9IG1fY29kZUJsb2NrLT5udW1iZXJPZlN3
aXRjaEp1bXBUYWJsZXMoKTsKLSAgICBpbnN0cnVjdGlvbnMoKVtzd2l0Y2hJbmZvLmJ5dGVjb2Rl
T2Zmc2V0ICsgMl0gPSBkZWZhdWx0TGFiZWwtPmJpbmQoc3dpdGNoSW5mby5ieXRlY29kZU9mZnNl
dCwgc3dpdGNoSW5mby5ieXRlY29kZU9mZnNldCArIDMpOwotCi0gICAgVW5saW5rZWRTaW1wbGVK
dW1wVGFibGUmIGp1bXBUYWJsZSA9IG1fY29kZUJsb2NrLT5hZGRTd2l0Y2hKdW1wVGFibGUoKTsK
LSAgICBpbnQzMl90IHN3aXRjaEFkZHJlc3MgPSBzd2l0Y2hJbmZvLmJ5dGVjb2RlT2Zmc2V0Owot
ICAgIGp1bXBUYWJsZS5taW4gPSAwOwotICAgIGp1bXBUYWJsZS5icmFuY2hPZmZzZXRzLnJlc2l6
ZShtX2dlbmVyYXRvclJlc3VtZUxhYmVscy5zaXplKCkgKyAxKTsKLSAgICBqdW1wVGFibGUuYnJh
bmNoT2Zmc2V0cy5maWxsKDApOwotICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCBtX2dlbmVy
YXRvclJlc3VtZUxhYmVscy5zaXplKCk7ICsraSkgewotICAgICAgICAvLyBXZSdyZSBlbWl0dGlu
ZyB0aGlzIGFmdGVyIHRoZSBjbGF1c2UgbGFiZWxzIHNob3VsZCBoYXZlIGJlZW4gZml4ZWQsIHNv
Ci0gICAgICAgIC8vIHRoZSBsYWJlbHMgc2hvdWxkIG5vdCBiZSAiZm9yd2FyZCIgcmVmZXJlbmNl
cwotICAgICAgICBBU1NFUlQoIW1fZ2VuZXJhdG9yUmVzdW1lTGFiZWxzW2ldLT5pc0ZvcndhcmQo
KSk7Ci0gICAgICAgIGp1bXBUYWJsZS5hZGQoaSwgbV9nZW5lcmF0b3JSZXN1bWVMYWJlbHNbaV0t
PmJpbmQoc3dpdGNoQWRkcmVzcywgc3dpdGNoQWRkcmVzcyArIDMpKTsKLSAgICB9Ci19Ci0KIH0g
Ly8gbmFtZXNwYWNlIEpTQwogCiBuYW1lc3BhY2UgV1RGIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAppbmRleCBmZmY3
MTNhYTI1ZTcxZGYyY2Y0Y2I1MzA4ZTYxNjlhNTNhZjY1MWJlLi5iMWI5NDNkYTVlMDY3ZWNkZDQ5
Njc0ODExNDVjZTlkYjAwNzVhMmFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCkBAIC0zNCw2ICszNCw3IEBACiAj
aW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiSW5zdHJ1Y3Rpb24uaCIKICNpbmNsdWRl
ICJJbnRlcnByZXRlci5oIgorI2luY2x1ZGUgIkpTR2VuZXJhdG9yRnVuY3Rpb24uaCIKICNpbmNs
dWRlICJMYWJlbC5oIgogI2luY2x1ZGUgIkxhYmVsU2NvcGUuaCIKICNpbmNsdWRlICJOb2Rlcy5o
IgpAQCAtNjkwLDE4ICs2OTEsMTUgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW5k
U3dpdGNoKHVpbnQzMl90IGNsYXVzZUNvdW50LCBSZWZQdHI8TGFiZWw+KiwgRXhwcmVzc2lvbk5v
ZGUqKiwgTGFiZWwqIGRlZmF1bHRMYWJlbCwgaW50MzJfdCBtaW4sIGludDMyX3QgcmFuZ2UpOwog
CiAgICAgICAgIHZvaWQgZW1pdFlpZWxkUG9pbnQoUmVnaXN0ZXJJRCopOwotICAgICAgICB2b2lk
IGVtaXRTYXZlKExhYmVsKiBtZXJnZVBvaW50LCB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5k
ZXgpOwotICAgICAgICB2b2lkIGVtaXRSZXN1bWUoTGFiZWwqIG1lcmdlUG9pbnQsIHVuc2lnbmVk
IGxpdmVDYWxsZWVMb2NhbHNJbmRleCk7CiAKICAgICAgICAgdm9pZCBlbWl0R2VuZXJhdG9yU3Rh
dGVMYWJlbCgpOwogICAgICAgICB2b2lkIGVtaXRHZW5lcmF0b3JTdGF0ZUNoYW5nZShpbnQzMl90
IHN0YXRlKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFlpZWxkKFJlZ2lzdGVySUQqIGFyZ3Vt
ZW50KTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdERlbGVnYXRlWWllbGQoUmVnaXN0ZXJJRCog
YXJndW1lbnQsIFRocm93YWJsZUV4cHJlc3Npb25EYXRhKik7Ci0gICAgICAgIHZvaWQgYmVnaW5H
ZW5lcmF0b3IoUmVnaXN0ZXJJRCopOwotICAgICAgICB2b2lkIGVuZEdlbmVyYXRvcihMYWJlbCog
ZGVmYXVsdExhYmVsKTsKLSAgICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9yU3RhdGVSZWdpc3Rl
cigpIHsgcmV0dXJuICZtX3BhcmFtZXRlcnNbMl07IH0KLSAgICAgICAgUmVnaXN0ZXJJRCogZ2Vu
ZXJhdG9yVmFsdWVSZWdpc3RlcigpIHsgcmV0dXJuICZtX3BhcmFtZXRlcnNbM107IH0KLSAgICAg
ICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKCkgeyByZXR1cm4gJm1f
cGFyYW1ldGVyc1s0XTsgfQorICAgICAgICBSZWdpc3RlcklEKiBnZW5lcmF0b3JTdGF0ZVJlZ2lz
dGVyKCkgeyByZXR1cm4gJm1fcGFyYW1ldGVyc1tzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVy
YXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JBcmd1bWVudDo6U3RhdGUpXTsgfQorICAgICAgICBSZWdp
c3RlcklEKiBnZW5lcmF0b3JWYWx1ZVJlZ2lzdGVyKCkgeyByZXR1cm4gJm1fcGFyYW1ldGVyc1tz
dGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JBcmd1bWVu
dDo6VmFsdWUpXTsgfQorICAgICAgICBSZWdpc3RlcklEKiBnZW5lcmF0b3JSZXN1bWVNb2RlUmVn
aXN0ZXIoKSB7IHJldHVybiAmbV9wYXJhbWV0ZXJzW3N0YXRpY19jYXN0PGludDMyX3Q+KEpTR2Vu
ZXJhdG9yRnVuY3Rpb246OkdlbmVyYXRvckFyZ3VtZW50OjpSZXN1bWVNb2RlKV07IH0KKyAgICAg
ICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9yRnJhbWVSZWdpc3RlcigpIHsgcmV0dXJuICZtX3BhcmFt
ZXRlcnNbc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6R2VuZXJhdG9y
QXJndW1lbnQ6OkZyYW1lKV07IH0KIAogICAgICAgICBDb2RlVHlwZSBjb2RlVHlwZSgpIGNvbnN0
IHsgcmV0dXJuIG1fY29kZVR5cGU7IH0KIApAQCAtOTI5LDcgKzkyNywxMSBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgVmVjdG9yPFN3aXRjaEluZm8+IG1fc3dpdGNoQ29udGV4dFN0YWNrOwog
ICAgICAgICBWZWN0b3I8UmVmUHRyPEZvckluQ29udGV4dD4+IG1fZm9ySW5Db250ZXh0U3RhY2s7
CiAgICAgICAgIFZlY3RvcjxUcnlDb250ZXh0PiBtX3RyeUNvbnRleHRTdGFjazsKLSAgICAgICAg
VmVjdG9yPFJlZlB0cjxMYWJlbD4+IG1fZ2VuZXJhdG9yUmVzdW1lTGFiZWxzOworICAgICAgICB1
bnNpZ25lZCBtX3lpZWxkUG9pbnRzIHsgMCB9OworCisgICAgICAgIFN0cm9uZzxTeW1ib2xUYWJs
ZT4gbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlOworICAgICAgICBpbnQgbV9nZW5lcmF0b3JG
cmFtZVN5bWJvbFRhYmxlSW5kZXggeyAwIH07CisKICAgICAgICAgZW51bSBGdW5jdGlvblZhcmlh
YmxlVHlwZSA6IHVpbnQ4X3QgeyBOb3JtYWxGdW5jdGlvblZhcmlhYmxlLCBHbG9iYWxGdW5jdGlv
blZhcmlhYmxlIH07CiAgICAgICAgIFZlY3RvcjxzdGQ6OnBhaXI8RnVuY3Rpb25NZXRhZGF0YU5v
ZGUqLCBGdW5jdGlvblZhcmlhYmxlVHlwZT4+IG1fZnVuY3Rpb25zVG9Jbml0aWFsaXplOwogICAg
ICAgICBib29sIG1fbmVlZFRvSW5pdGlhbGl6ZUFyZ3VtZW50cyB7IGZhbHNlIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKaW5k
ZXggZDBjOTllZmY1ZTc0ZjAyYzM4M2NjNTExZGUxN2I4ZDJiNmU3N2U0Zi4uYmNkYWEyNzJjYjk1
MDg1ODYwOGNhMmE3NTdmN2M0NjRlNDc2ZGZmNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcApAQCAtMzM3Nyw3ICszMzc3LDYg
QEAgdm9pZCBGdW5jdGlvbk5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2Vu
ZXJhdG9yLCBSZWdpc3RlcklEKikKICAgICAgICAgUmVmUHRyPExhYmVsPiBkb25lID0gZ2VuZXJh
dG9yLm5ld0xhYmVsKCk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoZG9uZS5nZXQoKSk7
CiAgICAgICAgIGdlbmVyYXRvci5lbWl0UmV0dXJuKGdlbmVyYXRvci5lbWl0TG9hZChudWxscHRy
LCBqc1VuZGVmaW5lZCgpKSk7Ci0gICAgICAgIGdlbmVyYXRvci5lbmRHZW5lcmF0b3IoZG9uZS5n
ZXQoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT3BlcmF0aW9ucy5jcHAKaW5kZXggY2UyMGQyODNhZDcwYjI3NmJlZWM5ZTBmNmM5Zjg2
MGU4YTNkMDgyNS4uMDBjZDY0MWU3N2FiMGIxOTFlM2M4NjQ3YmYzODcxYTIyYTkwNjBmZiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCkBAIC00Miw4ICs0
Miw4IEBACiAjaW5jbHVkZSAiRGlyZWN0QXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiRlRMRm9yT1NS
RW50cnlKSVRDb2RlLmgiCiAjaW5jbHVkZSAiRlRMT1NSRW50cnkuaCIKLSNpbmNsdWRlICJIb3N0
Q2FsbFJldHVyblZhbHVlLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCisjaW5jbHVkZSAi
SG9zdENhbGxSZXR1cm5WYWx1ZS5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVk
ZSAiSklULmgiCiAjaW5jbHVkZSAiSklURXhjZXB0aW9ucy5oIgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKaW5kZXggMWFhZjE3NzIzZmUx
ZTg4MjBmNDc3YWIwODU0ODRiNWY1ZjI3Njc5Ny4uMmYwZTZmMmZjN2U5OTY0M2JjYTJhOWY0NDgw
NDhlZDg2NmMyOGZhYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL0ludGVycHJldGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvSW50ZXJwcmV0ZXIuY3BwCkBAIC02MDksNyArNjA5LDcgQEAgSlNTdHJpbmcqIEludGVycHJl
dGVyOjpzdGFja1RyYWNlQXNTdHJpbmcoVk0mIHZtLCBjb25zdCBWZWN0b3I8U3RhY2tGcmFtZT4m
IHN0YWMKICAgICByZXR1cm4ganNTdHJpbmcoJnZtLCBidWlsZGVyLnRvU3RyaW5nKCkpOwogfQog
Ci1BTFdBWVNfSU5MSU5FIHN0YXRpYyBIYW5kbGVySW5mbyogZmluZEV4Y2VwdGlvbkhhbmRsZXIo
U3RhY2tWaXNpdG9yJiB2aXNpdG9yLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZUJsb2NrOjpS
ZXF1aXJlZEhhbmRsZXIgcmVxdWlyZWRIYW5kbGVyKQorQUxXQVlTX0lOTElORSBzdGF0aWMgSGFu
ZGxlckluZm8qIGZpbmRFeGNlcHRpb25IYW5kbGVyKFN0YWNrVmlzaXRvciYgdmlzaXRvciwgQ29k
ZUJsb2NrKiBjb2RlQmxvY2ssIFJlcXVpcmVkSGFuZGxlciByZXF1aXJlZEhhbmRsZXIpCiB7CiAg
ICAgQVNTRVJUKGNvZGVCbG9jayk7CiAjaWYgRU5BQkxFKERGR19KSVQpCkBAIC02NDMsNyArNjQz
LDcgQEAgY2xhc3MgR2V0Q2F0Y2hIYW5kbGVyRnVuY3RvciB7CiAgICAgICAgIGlmICghY29kZUJs
b2NrKQogICAgICAgICAgICAgcmV0dXJuIFN0YWNrVmlzaXRvcjo6Q29udGludWU7CiAKLSAgICAg
ICAgbV9oYW5kbGVyID0gZmluZEV4Y2VwdGlvbkhhbmRsZXIodmlzaXRvciwgY29kZUJsb2NrLCBD
b2RlQmxvY2s6OlJlcXVpcmVkSGFuZGxlcjo6Q2F0Y2hIYW5kbGVyKTsKKyAgICAgICAgbV9oYW5k
bGVyID0gZmluZEV4Y2VwdGlvbkhhbmRsZXIodmlzaXRvciwgY29kZUJsb2NrLCBSZXF1aXJlZEhh
bmRsZXI6OkNhdGNoSGFuZGxlcik7CiAgICAgICAgIGlmIChtX2hhbmRsZXIpCiAgICAgICAgICAg
ICByZXR1cm4gU3RhY2tWaXNpdG9yOjpEb25lOwogCkBAIC02ODUsNyArNjg1LDcgQEAgY2xhc3Mg
VW53aW5kRnVuY3RvciB7CiAgICAgICAgIG1faGFuZGxlciA9IG51bGxwdHI7CiAgICAgICAgIGlm
ICghbV9pc1Rlcm1pbmF0aW9uKSB7CiAgICAgICAgICAgICBpZiAobV9jb2RlQmxvY2sgJiYgIWlz
V2ViQXNzZW1ibHlFeGVjdXRhYmxlKG1fY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSkpCi0g
ICAgICAgICAgICAgICAgbV9oYW5kbGVyID0gZmluZEV4Y2VwdGlvbkhhbmRsZXIodmlzaXRvciwg
bV9jb2RlQmxvY2ssIENvZGVCbG9jazo6UmVxdWlyZWRIYW5kbGVyOjpBbnlIYW5kbGVyKTsKKyAg
ICAgICAgICAgICAgICBtX2hhbmRsZXIgPSBmaW5kRXhjZXB0aW9uSGFuZGxlcih2aXNpdG9yLCBt
X2NvZGVCbG9jaywgUmVxdWlyZWRIYW5kbGVyOjpBbnlIYW5kbGVyKTsKICAgICAgICAgfQogCiAg
ICAgICAgIGlmIChtX2hhbmRsZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9JbnRlcnByZXRlci5oCmluZGV4IDc5YzdlNTMwMWJhODM5NmJjMDJkYzI0NWUwODFjN2Y3
YTM3MzhlNmMuLjNkZjAwNjc3NmY2MWE0YjViNGI3YzI0OGU3NWNhYjFhOGMzMDkzMDkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCkBAIC02
NSw2ICs2NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHN0cnVjdCBIYW5kbGVySW5mbzsKICAg
ICBzdHJ1Y3QgSW5zdHJ1Y3Rpb247CiAgICAgc3RydWN0IFByb3RvQ2FsbEZyYW1lOworICAgIHN0
cnVjdCBVbmxpbmtlZEluc3RydWN0aW9uOwogCiAgICAgZW51bSBVbndpbmRTdGFydCB7IFVud2lu
ZEZyb21DdXJyZW50RnJhbWUsIFVud2luZEZyb21DYWxsZXJGcmFtZSB9OwogCkBAIC0yMDcsNyAr
MjA4LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIG9wY29kZTsKICNl
bmRpZgogICAgICAgICB9Ci0gICAgICAgIAorCisgICAgICAgIE9wY29kZUlEIGdldE9wY29kZUlE
KGNvbnN0IEluc3RydWN0aW9uJik7CisgICAgICAgIE9wY29kZUlEIGdldE9wY29kZUlEKGNvbnN0
IFVubGlua2VkSW5zdHJ1Y3Rpb24mKTsKKwogICAgICAgICBib29sIGlzT3Bjb2RlKE9wY29kZSk7
CiAKICAgICAgICAgSlNWYWx1ZSBleGVjdXRlKFByb2dyYW1FeGVjdXRhYmxlKiwgQ2FsbEZyYW1l
KiwgSlNPYmplY3QqIHRoaXNPYmopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL0ludGVycHJldGVySW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL0ludGVycHJldGVySW5saW5lcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE3N2MxNTQ3OTBh
NjdmYjQxY2M5ZTJkMDlhMWRiZGZkZGZhNTliZGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXJJbmxpbmVzLmgKQEAgLTAsMCAr
MSw0NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBZdXN1a2UgU3V6dWtpIDx1dGF0YW5l
LnRlYUBnbWFpbC5jb20+CisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkluc3RydWN0aW9uLmgiCisjaW5jbHVkZSAiSW50
ZXJwcmV0ZXIuaCIKKyNpbmNsdWRlICJVbmxpbmtlZENvZGVCbG9jay5oIgorCituYW1lc3BhY2Ug
SlNDIHsKKworaW5saW5lIE9wY29kZUlEIEludGVycHJldGVyOjpnZXRPcGNvZGVJRChjb25zdCBJ
bnN0cnVjdGlvbiYgaW5zdHJ1Y3Rpb24pCit7CisgICAgcmV0dXJuIGdldE9wY29kZUlEKGluc3Ry
dWN0aW9uLnUub3Bjb2RlKTsKK30KKworaW5saW5lIE9wY29kZUlEIEludGVycHJldGVyOjpnZXRP
cGNvZGVJRChjb25zdCBVbmxpbmtlZEluc3RydWN0aW9uJiBpbnN0cnVjdGlvbikKK3sKKyAgICBy
ZXR1cm4gaW5zdHJ1Y3Rpb24udS5vcGNvZGU7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVQuY3BwCmluZGV4IGIwMGRmYWM4YzE1YzU0N2QyN2ZjNjY3ZjVjNDU5
MGVkMzk5ZGVlNDAuLjEyNDA1ZjdlNTA0YWIzODkzZGQ5N2Q3YTkyOTEzYjA5NWExMTU5MzIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKQEAgLTIzNSw4ICsyMzUsNiBAQCB2b2lkIEpJVDo6
cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9PUChvcF9nZXRfcmVzdF9s
ZW5ndGgpCiAgICAgICAgIERFRklORV9PUChvcF9jaGVja190ZHopCiAgICAgICAgIERFRklORV9P
UChvcF9hc3NlcnQpCi0gICAgICAgIERFRklORV9PUChvcF9zYXZlKQotICAgICAgICBERUZJTkVf
T1Aob3BfcmVzdW1lKQogICAgICAgICBERUZJTkVfT1Aob3BfZGVidWcpCiAgICAgICAgIERFRklO
RV9PUChvcF9kZWxfYnlfaWQpCiAgICAgICAgIERFRklORV9PUChvcF9kZWxfYnlfdmFsKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklULmgKaW5kZXggYmI5N2RjMzViZGZjMDMzOTlhYTA1MTNhOWNhNzM1NWQw
ODMxYzYwZC4uNTFmY2Y2MGI5OWQ0MGIwZTUzZGJjZDIyM2M1NjkyMDI1ZjE0ZWNmMyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVC5oCkBAIC00OTcsOCArNDk3LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIHZvaWQgZW1pdF9vcF9nZXRfcmVzdF9sZW5ndGgoSW5zdHJ1Y3Rpb24qKTsKICAgICAg
ICAgdm9pZCBlbWl0X29wX2NoZWNrX3RkeihJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVt
aXRfb3BfYXNzZXJ0KEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9zYXZlKElu
c3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9yZXN1bWUoSW5zdHJ1Y3Rpb24qKTsK
ICAgICAgICAgdm9pZCBlbWl0X29wX2RlYnVnKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQg
ZW1pdF9vcF9kZWxfYnlfaWQoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2Rl
bF9ieV92YWwoSW5zdHJ1Y3Rpb24qKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3Bjb2Rlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29k
ZXMuY3BwCmluZGV4IDdmN2M3NDUzYmQzZDJkNTBlMTgwMTgzZjI5NzMxMTVmMTE5ZDg1MmYuLjJk
YmU4NmM2MjRiYzg3ZWJmNzBiODAxZTBhMmNjY2VmNjUxNWJhMjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcApAQCAtMTQ5MiwxOCArMTQ5Miw2IEBAIHZvaWQgSklU
OjplbWl0X29wX2dldF9yZXN0X2xlbmd0aChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQogI2VuZGlmCiB9CiAKLXZvaWQgSklUOjplbWl0X29wX3NhdmUoSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKLXsKLSAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMs
IGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX3NhdmUpOwotICAgIHNsb3dQYXRoQ2FsbC5j
YWxsKCk7Ci19Ci0KLXZvaWQgSklUOjplbWl0X29wX3Jlc3VtZShJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQotewotICAgIEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywg
Y3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfcmVzdW1lKTsKLSAgICBzbG93UGF0aENhbGwu
Y2FsbCgpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEVOQUJMRShKSVQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlci5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
ci5hc20KaW5kZXggMTQ5MThiNjU1ZDVjZmEyMmI4NjE1OGViMmVlYWFmMDg3NDk2NTZhNy4uYzlm
OTY4Nzk1OGQwNmQzMDYwY2Y2OWZlMzc4OWQxYmQwYmY4Yzc5YSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQpAQCAtMTcwOSwx
NiArMTcwOSw4IEBAIF9sbGludF9vcF9hc3NlcnQ6CiAgICAgZGlzcGF0Y2goMykKIAogCi1fbGxp
bnRfb3Bfc2F2ZToKLSAgICB0cmFjZUV4ZWN1dGlvbigpCi0gICAgY2FsbE9wY29kZVNsb3dQYXRo
KF9zbG93X3BhdGhfc2F2ZSkKLSAgICBkaXNwYXRjaCg0KQotCi0KLV9sbGludF9vcF9yZXN1bWU6
Ci0gICAgdHJhY2VFeGVjdXRpb24oKQotICAgIGNhbGxPcGNvZGVTbG93UGF0aChfc2xvd19wYXRo
X3Jlc3VtZSkKLSAgICBkaXNwYXRjaCgzKQorX2xsaW50X29wX3lpZWxkOgorICAgIG5vdFN1cHBv
cnRlZCgpCiAKIAogX2xsaW50X29wX2NyZWF0ZV9sZXhpY2FsX2Vudmlyb25tZW50OgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCmluZGV4IGViZWE5OGU0ZWUxM2ZhMTJiZTA5
NmJhOTJmNGQ0MTllMzRjZWQxNzAuLjI2MTc0NWExOTAzMTdkZTc1OTEyZTNhOTIzZmE5ZjI4ODc0
ODYzZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKQEAgLTI2MCw3
ICsyNjAsNyBAQCBTdHJpbmcgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlSW5uZXIoY29uc3QgSWRl
bnRpZmllciYgY2FsbGVlTmFtZSwgU291cmNlUGFyc2VNbwogICAgIGlmIChtX2xleGVyLT5pc1Jl
cGFyc2luZ0Z1bmN0aW9uKCkpIHsKICAgICAgICAgUGFyc2VyRnVuY3Rpb25JbmZvPEFTVEJ1aWxk
ZXI+IGZ1bmN0aW9uSW5mbzsKICAgICAgICAgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1v
ZGU6OkdlbmVyYXRvckJvZHlNb2RlKQotICAgICAgICAgICAgbV9wYXJhbWV0ZXJzID0gY3JlYXRl
R2VuZXJhdG9yUGFyYW1ldGVycyhjb250ZXh0KTsKKyAgICAgICAgICAgIG1fcGFyYW1ldGVycyA9
IGNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMoY29udGV4dCwgZnVuY3Rpb25JbmZvLnBhcmFtZXRl
ckNvdW50KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbV9wYXJhbWV0ZXJzID0gcGFyc2VG
dW5jdGlvblBhcmFtZXRlcnMoY29udGV4dCwgcGFyc2VNb2RlLCBmdW5jdGlvbkluZm8pOwogCkBA
IC01MTIsMTAgKzUxMiw5IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVNvdXJj
ZUVsZW1lbnRzIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUdlbmVyYXRvCiAKICAgICBQYXJzZXJG
dW5jdGlvbkluZm88VHJlZUJ1aWxkZXI+IGluZm87CiAgICAgaW5mby5uYW1lID0gJm1fdm0tPnBy
b3BlcnR5TmFtZXMtPm51bGxJZGVudGlmaWVyOwotICAgIGNyZWF0ZUdlbmVyYXRvclBhcmFtZXRl
cnMoY29udGV4dCk7CisgICAgY3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhjb250ZXh0LCBpbmZv
LnBhcmFtZXRlckNvdW50KTsKICAgICBpbmZvLnN0YXJ0T2Zmc2V0ID0gcGFyYW1ldGVyc1N0YXJ0
OwogICAgIGluZm8uc3RhcnRMaW5lID0gdG9rZW5MaW5lKCk7Ci0gICAgaW5mby5wYXJhbWV0ZXJD
b3VudCA9IDQ7IC8vIGdlbmVyYXRvciwgc3RhdGUsIHZhbHVlLCByZXN1bWUgbW9kZQogCiAgICAg
ewogICAgICAgICBBdXRvUG9wU2NvcGVSZWYgZ2VuZXJhdG9yQm9keVNjb3BlKHRoaXMsIHB1c2hT
Y29wZSgpKTsKQEAgLTE5MDMsMzIgKzE5MDIsMzAgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIExleGVy
VHlwZT4gdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyLCBjbGFzcyBGdW5jdGlvbkluZm9UeXAK
IH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KLXRlbXBsYXRlIDxjbGFzcyBUcmVl
QnVpbGRlcj4gdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkZvcm1hbFBhcmFtZXRlckxpc3QgUGFyc2Vy
PExleGVyVHlwZT46OmNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMoVHJlZUJ1aWxkZXImIGNvbnRl
eHQpCit0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpG
b3JtYWxQYXJhbWV0ZXJMaXN0IFBhcnNlcjxMZXhlclR5cGU+OjpjcmVhdGVHZW5lcmF0b3JQYXJh
bWV0ZXJzKFRyZWVCdWlsZGVyJiBjb250ZXh0LCB1bnNpZ25lZCYgcGFyYW1ldGVyQ291bnQpCiB7
CiAgICAgYXV0byBwYXJhbWV0ZXJzID0gY29udGV4dC5jcmVhdGVGb3JtYWxQYXJhbWV0ZXJMaXN0
KCk7CiAKICAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKICAg
ICBKU1RleHRQb3NpdGlvbiBwb3NpdGlvbiA9IHRva2VuU3RhcnRQb3NpdGlvbigpOwogCi0gICAg
Ly8gQGdlbmVyYXRvcgotICAgIGRlY2xhcmVQYXJhbWV0ZXIoJm1fdm0tPnByb3BlcnR5TmFtZXMt
PmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclByaXZhdGVOYW1lKCkpOwotICAgIGF1dG8gZ2VuZXJh
dG9yID0gY29udGV4dC5jcmVhdGVCaW5kaW5nTG9jYXRpb24obG9jYXRpb24sIG1fdm0tPnByb3Bl
cnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclByaXZhdGVOYW1lKCksIHBvc2l0aW9u
LCBwb3NpdGlvbiwgQXNzaWdubWVudENvbnRleHQ6OkRlY2xhcmF0aW9uU3RhdGVtZW50KTsKLSAg
ICBjb250ZXh0LmFwcGVuZFBhcmFtZXRlcihwYXJhbWV0ZXJzLCBnZW5lcmF0b3IsIDApOworICAg
IGF1dG8gYWRkUGFyYW1ldGVyID0gWyZdKGNvbnN0IElkZW50aWZpZXImIG5hbWUpIHsKKyAgICAg
ICAgZGVjbGFyZVBhcmFtZXRlcigmbmFtZSk7CisgICAgICAgIGF1dG8gYmluZGluZyA9IGNvbnRl
eHQuY3JlYXRlQmluZGluZ0xvY2F0aW9uKGxvY2F0aW9uLCBuYW1lLCBwb3NpdGlvbiwgcG9zaXRp
b24sIEFzc2lnbm1lbnRDb250ZXh0OjpEZWNsYXJhdGlvblN0YXRlbWVudCk7CisgICAgICAgIGNv
bnRleHQuYXBwZW5kUGFyYW1ldGVyKHBhcmFtZXRlcnMsIGJpbmRpbmcsIDApOworICAgICAgICAr
K3BhcmFtZXRlckNvdW50OworICAgIH07CiAKKyAgICAvLyBAZ2VuZXJhdG9yCisgICAgYWRkUGFy
YW1ldGVyKG1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclByaXZh
dGVOYW1lKCkpOwogICAgIC8vIEBnZW5lcmF0b3JTdGF0ZQotICAgIGRlY2xhcmVQYXJhbWV0ZXIo
Jm1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclN0YXRlUHJpdmF0
ZU5hbWUoKSk7Ci0gICAgYXV0byBnZW5lcmF0b3JTdGF0ZSA9IGNvbnRleHQuY3JlYXRlQmluZGlu
Z0xvY2F0aW9uKGxvY2F0aW9uLCBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5n
ZW5lcmF0b3JTdGF0ZVByaXZhdGVOYW1lKCksIHBvc2l0aW9uLCBwb3NpdGlvbiwgQXNzaWdubWVu
dENvbnRleHQ6OkRlY2xhcmF0aW9uU3RhdGVtZW50KTsKLSAgICBjb250ZXh0LmFwcGVuZFBhcmFt
ZXRlcihwYXJhbWV0ZXJzLCBnZW5lcmF0b3JTdGF0ZSwgMCk7Ci0KKyAgICBhZGRQYXJhbWV0ZXIo
bV92bS0+cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yU3RhdGVQcml2YXRl
TmFtZSgpKTsKICAgICAvLyBAZ2VuZXJhdG9yVmFsdWUKLSAgICBkZWNsYXJlUGFyYW1ldGVyKCZt
X3ZtLT5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JWYWx1ZVByaXZhdGVO
YW1lKCkpOwotICAgIGF1dG8gZ2VuZXJhdG9yVmFsdWUgPSBjb250ZXh0LmNyZWF0ZUJpbmRpbmdM
b2NhdGlvbihsb2NhdGlvbiwgbV92bS0+cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZ2Vu
ZXJhdG9yVmFsdWVQcml2YXRlTmFtZSgpLCBwb3NpdGlvbiwgcG9zaXRpb24sIEFzc2lnbm1lbnRD
b250ZXh0OjpEZWNsYXJhdGlvblN0YXRlbWVudCk7Ci0gICAgY29udGV4dC5hcHBlbmRQYXJhbWV0
ZXIocGFyYW1ldGVycywgZ2VuZXJhdG9yVmFsdWUsIDApOwotCisgICAgYWRkUGFyYW1ldGVyKG1f
dm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclZhbHVlUHJpdmF0ZU5h
bWUoKSk7CiAgICAgLy8gQGdlbmVyYXRvclJlc3VtZU1vZGUKLSAgICBkZWNsYXJlUGFyYW1ldGVy
KCZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JSZXN1bWVNb2Rl
UHJpdmF0ZU5hbWUoKSk7Ci0gICAgYXV0byBnZW5lcmF0b3JSZXN1bWVNb2RlID0gY29udGV4dC5j
cmVhdGVCaW5kaW5nTG9jYXRpb24obG9jYXRpb24sIG1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0
aW5OYW1lcygpLmdlbmVyYXRvclJlc3VtZU1vZGVQcml2YXRlTmFtZSgpLCBwb3NpdGlvbiwgcG9z
aXRpb24sIEFzc2lnbm1lbnRDb250ZXh0OjpEZWNsYXJhdGlvblN0YXRlbWVudCk7Ci0gICAgY29u
dGV4dC5hcHBlbmRQYXJhbWV0ZXIocGFyYW1ldGVycywgZ2VuZXJhdG9yUmVzdW1lTW9kZSwgMCk7
CisgICAgYWRkUGFyYW1ldGVyKG1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdl
bmVyYXRvclJlc3VtZU1vZGVQcml2YXRlTmFtZSgpKTsKKyAgICAvLyBAZ2VuZXJhdG9yRnJhbWUK
KyAgICBhZGRQYXJhbWV0ZXIobV92bS0+cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZ2Vu
ZXJhdG9yRnJhbWVQcml2YXRlTmFtZSgpKTsKIAogICAgIHJldHVybiBwYXJhbWV0ZXJzOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKaW5kZXggMzkyMDQwNGU4YmE1MjBiMjJl
NGVjZDI3NzgxYzEzZGY4MTkwNzQzMy4uNTBlMTM5MWI1ZmQwM2RkNWU3NzhiOGZkYjU5MjNhYTc5
OGFlZDEyMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCkBAIC0xNDI2LDcg
KzE0MjYsNyBAQCBjbGFzcyBQYXJzZXIgewogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc0Fycm93
RnVuY3Rpb25QYXJhbWV0ZXJzKCk7CiAgICAgCiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWls
ZGVyLCBjbGFzcyBGdW5jdGlvbkluZm9UeXBlPiBORVZFUl9JTkxJTkUgdHlwZW5hbWUgVHJlZUJ1
aWxkZXI6OkZvcm1hbFBhcmFtZXRlckxpc3QgcGFyc2VGdW5jdGlvblBhcmFtZXRlcnMoVHJlZUJ1
aWxkZXImLCBTb3VyY2VQYXJzZU1vZGUsIEZ1bmN0aW9uSW5mb1R5cGUmKTsKLSAgICB0ZW1wbGF0
ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElORSB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6
Rm9ybWFsUGFyYW1ldGVyTGlzdCBjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKFRyZWVCdWlsZGVy
Jik7CisgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBORVZFUl9JTkxJTkUgdHlwZW5h
bWUgVHJlZUJ1aWxkZXI6OkZvcm1hbFBhcmFtZXRlckxpc3QgY3JlYXRlR2VuZXJhdG9yUGFyYW1l
dGVycyhUcmVlQnVpbGRlciYsIHVuc2lnbmVkJiBwYXJhbWV0ZXJDb3VudCk7CiAKICAgICB0ZW1w
bGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElORSBUcmVlQ2xhc3NFeHByZXNzaW9u
IHBhcnNlQ2xhc3MoVHJlZUJ1aWxkZXImLCBGdW5jdGlvbk5hbWVSZXF1aXJlbWVudHMsIFBhcnNl
ckNsYXNzSW5mbzxUcmVlQnVpbGRlcj4mKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKaW5kZXggYTliNzU1ZTZjOWFlOWI5OGE2MjI5
MzU0NmVlNTdjYTgxZWM5YzMyYy4uMmU4NjhkY2IyZDcxZmU3Y2YyOGU5NTBmMDVjNzU4YmE4MDVj
YzMyNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xv
d1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93
UGF0aHMuY3BwCkBAIC0zNyw3ICszNyw2IEBACiAjaW5jbHVkZSAiRXJyb3IuaCIKICNpbmNsdWRl
ICJFcnJvckhhbmRsaW5nU2NvcGUuaCIKICNpbmNsdWRlICJFeGNlcHRpb25GdXp6LmgiCi0jaW5j
bHVkZSAiR2VuZXJhdG9yRnJhbWUuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNpbmNs
dWRlICJIb3N0Q2FsbFJldHVyblZhbHVlLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKQEAg
LTc1MywzOCArNzUyLDYgQEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2Fzc2VydCkKICAgICBF
TkQoKTsKIH0KIAotU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3NhdmUpCi17Ci0gICAgLy8gT25s
eSBzYXZlIHZhcmlhYmxlcyBhbmQgdGVtcG9yYXJ5IHJlZ2lzdGVycy4gVGhlIHNjb3BlIHJlZ2lz
dGVycyBhcmUgaW5jbHVkZWQgaW4gdGhlbS4KLSAgICAvLyBCdXQgcGFyYW1ldGVycyBhcmUgbm90
IGluY2x1ZGVkLiBCZWNhdXNlIHRoZSBnZW5lcmF0b3IgaW1wbGVtZW50YXRpb24gcmVwbGFjZXMg
dGhlIHZhbHVlcyBvZiBwYXJhbWV0ZXJzIG9uIGVhY2ggZ2VuZXJhdG9yLm5leHQoKSBjYWxsLgot
ICAgIEJFR0lOKCk7Ci0gICAgSlNWYWx1ZSBnZW5lcmF0b3IgPSBPUCgxKS5qc1ZhbHVlKCk7Ci0g
ICAgR2VuZXJhdG9yRnJhbWUqIGZyYW1lID0gbnVsbHB0cjsKLSAgICBKU1ZhbHVlIHZhbHVlID0g
Z2VuZXJhdG9yLmdldChleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCku
Z2VuZXJhdG9yRnJhbWVQcml2YXRlTmFtZSgpKTsKLSAgICBpZiAoIXZhbHVlLmlzTnVsbCgpKQot
ICAgICAgICBmcmFtZSA9IGpzQ2FzdDxHZW5lcmF0b3JGcmFtZSo+KHZhbHVlKTsKLSAgICBlbHNl
IHsKLSAgICAgICAgLy8gRklYTUU6IE9uY2UgSlNHZW5lcmF0b3Igc3BlY2lhbGl6ZWQgb2JqZWN0
IGlzIGludHJvZHVjZWQsIHRoaXMgR2VuZXJhdG9yRnJhbWUgc2hvdWxkIGJlIGVtYmVkZWQgaW50
byBpdCB0byBhdm9pZCBhbGxvY2F0aW9ucy4KLSAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTU0NQotICAgICAgICBmcmFtZSA9IEdlbmVyYXRvckZy
YW1lOjpjcmVhdGUoZXhlYy0+dm0oKSwgIGV4ZWMtPmNvZGVCbG9jaygpLT5udW1DYWxsZWVMb2Nh
bHMoKSk7Ci0gICAgICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGdlbmVyYXRvciwgdHJ1ZSwgUHV0
UHJvcGVydHlTbG90OjpQdXRCeUlkKTsKLSAgICAgICAgYXNPYmplY3QoZ2VuZXJhdG9yKS0+bWV0
aG9kVGFibGUoZXhlYy0+dm0oKSktPnB1dChhc09iamVjdChnZW5lcmF0b3IpLCBleGVjLCBleGVj
LT5wcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yRnJhbWVQcml2YXRlTmFt
ZSgpLCBmcmFtZSwgc2xvdCk7Ci0gICAgfQotICAgIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJ
bmRleCA9IHBjWzJdLnUudW5zaWduZWRWYWx1ZTsKLSAgICBmcmFtZS0+c2F2ZShleGVjLCBleGVj
LT5jb2RlQmxvY2soKS0+bGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQobGl2ZUNhbGxlZUxvY2Fsc0lu
ZGV4KSk7Ci0gICAgRU5EKCk7Ci19Ci0KLVNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9yZXN1bWUp
Ci17Ci0gICAgQkVHSU4oKTsKLSAgICBKU1ZhbHVlIGdlbmVyYXRvciA9IE9QKDEpLmpzVmFsdWUo
KTsKLSAgICBHZW5lcmF0b3JGcmFtZSogZnJhbWUgPSBqc0Nhc3Q8R2VuZXJhdG9yRnJhbWUqPihn
ZW5lcmF0b3IuZ2V0KGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5n
ZW5lcmF0b3JGcmFtZVByaXZhdGVOYW1lKCkpKTsKLSAgICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9j
YWxzSW5kZXggPSBwY1syXS51LnVuc2lnbmVkVmFsdWU7Ci0gICAgZnJhbWUtPnJlc3VtZShleGVj
LCBleGVjLT5jb2RlQmxvY2soKS0+bGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQobGl2ZUNhbGxlZUxv
Y2Fsc0luZGV4KSk7Ci0gICAgRU5EKCk7Ci19Ci0KIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9j
cmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudCkKIHsKICAgICBCRUdJTigpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAppbmRleCA2NDAxYTYxNGQ1
NjExNjYzNTY5YjE4YTAyNzJiMjhhYzM1Mjg2YTgyLi4zZDljMTVmNWFmMGM3NTdkZGExMDUzMzkx
OTkwZjU0NjM4ODY4MWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21tb25TbG93UGF0aHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21tb25TbG93UGF0aHMuaApAQCAtMjQ4LDggKzI0OCw2IEBAIFNMT1dfUEFUSF9ISURERU5fREVD
TChzbG93X3BhdGhfbmV4dF9nZW5lcmljX2VudW1lcmF0b3JfcG5hbWUpOwogU0xPV19QQVRIX0hJ
RERFTl9ERUNMKHNsb3dfcGF0aF90b19pbmRleF9zdHJpbmcpOwogU0xPV19QQVRIX0hJRERFTl9E
RUNMKHNsb3dfcGF0aF9wcm9maWxlX3R5cGVfY2xlYXJfbG9nKTsKIFNMT1dfUEFUSF9ISURERU5f
REVDTChzbG93X3BhdGhfYXNzZXJ0KTsKLVNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhf
c2F2ZSk7Ci1TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3Jlc3VtZSk7CiBTTE9XX1BB
VEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2NyZWF0ZV9sZXhpY2FsX2Vudmlyb25tZW50KTsKIFNM
T1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcHVzaF93aXRoX3Njb3BlKTsKIFNMT1dfUEFU
SF9ISURERU5fREVDTChzbG93X3BhdGhfcmVzb2x2ZV9zY29wZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGcmFtZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGcmFtZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGVmNmVhN2ExMDAyNThjM2VjZTA0ZGFhYjQzYmRhYTg1MWVjOGY3MTUuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJhbWUuY3BwCisrKyAvZGV2L251bGwKQEAgLTEs
OTcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5j
bHVkZSAiR2VuZXJhdG9yRnJhbWUuaCIKLQotI2luY2x1ZGUgIkNvZGVCbG9jay5oIgotI2luY2x1
ZGUgIkhlYXBJdGVyYXRpb25TY29wZS5oIgotI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgi
Ci0jaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgotI2luY2x1ZGUgIlNsb3RWaXNpdG9ySW5saW5l
cy5oIgotI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKLQotbmFtZXNwYWNlIEpTQyB7Ci0K
LWNvbnN0IENsYXNzSW5mbyBHZW5lcmF0b3JGcmFtZTo6c19pbmZvID0geyAiR2VuZXJhdG9yRnJh
bWUiLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEdlbmVyYXRvckZyYW1l
KSB9OwotCi1HZW5lcmF0b3JGcmFtZTo6R2VuZXJhdG9yRnJhbWUoVk0mIHZtLCBzaXplX3QgbnVt
YmVyT2ZDYWxsZWVMb2NhbHMpCi0gICAgOiBCYXNlKHZtLCB2bS5nZW5lcmF0b3JGcmFtZVN0cnVj
dHVyZS5nZXQoKSkKLSAgICAsIG1fbnVtYmVyT2ZDYWxsZWVMb2NhbHMobnVtYmVyT2ZDYWxsZWVM
b2NhbHMpCi17Ci19Ci0KLXZvaWQgR2VuZXJhdG9yRnJhbWU6OmZpbmlzaENyZWF0aW9uKFZNJiB2
bSkKLXsKLSAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7Ci0gICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBtX251bWJlck9mQ2FsbGVlTG9jYWxzOyArK2kpCi0gICAgICAgIGxvY2FsQXQoaSku
Y2xlYXIoKTsKLX0KLQotU3RydWN0dXJlKiBHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlU3RydWN0dXJl
KFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUp
Ci17Ci0gICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3Rv
dHlwZSwgVHlwZUluZm8oQ2VsbFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKLX0KLQot
R2VuZXJhdG9yRnJhbWUqIEdlbmVyYXRvckZyYW1lOjpjcmVhdGUoVk0mIHZtLCBzaXplX3QgbnVt
YmVyT2ZMb2NhbHMpCi17Ci0gICAgR2VuZXJhdG9yRnJhbWUqIHJlc3VsdCA9Ci0gICAgICAgIG5l
dyAoCi0gICAgICAgICAgICBOb3ROdWxsLAotICAgICAgICAgICAgYWxsb2NhdGVDZWxsPEdlbmVy
YXRvckZyYW1lPih2bS5oZWFwLCBhbGxvY2F0aW9uU2l6ZUZvckxvY2FscyhudW1iZXJPZkxvY2Fs
cykpKQotICAgICAgICBHZW5lcmF0b3JGcmFtZSh2bSwgbnVtYmVyT2ZMb2NhbHMpOwotICAgIHJl
c3VsdC0+ZmluaXNoQ3JlYXRpb24odm0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLXZvaWQg
R2VuZXJhdG9yRnJhbWU6OnNhdmUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBGYXN0Qml0VmVjdG9y
JiBsaXZlQ2FsbGVlTG9jYWxzKQotewotICAgIC8vIE9ubHkgc2F2ZSBjYWxsZWUgbG9jYWxzLgot
ICAgIC8vIEV2ZXJ5IHRpbWUgYSBnZW5lcmF0b3IgaXMgY2FsbGVkIChvciByZXN1bWVkKSwgcGFy
YW1ldGVycyBzaG91bGQgYmUgcmVwbGFjZWQuCi0gICAgQVNTRVJUKGxpdmVDYWxsZWVMb2NhbHMu
bnVtQml0cygpIDw9IG1fbnVtYmVyT2ZDYWxsZWVMb2NhbHMpOwotICAgIGxpdmVDYWxsZWVMb2Nh
bHMuZm9yRWFjaFNldEJpdChbJl0oc2l6ZV90IGluZGV4KSB7Ci0gICAgICAgIGxvY2FsQXQoaW5k
ZXgpLnNldChleGVjLT52bSgpLCB0aGlzLCBleGVjLT51bmNoZWNrZWRSKHZpcnR1YWxSZWdpc3Rl
ckZvckxvY2FsKGluZGV4KSkuanNWYWx1ZSgpKTsKLSAgICB9KTsKLX0KLQotdm9pZCBHZW5lcmF0
b3JGcmFtZTo6cmVzdW1lKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2
ZUNhbGxlZUxvY2FscykKLXsKLSAgICAvLyBPbmx5IHJlc3VtZSBjYWxsZWUgbG9jYWxzLgotICAg
IC8vIEV2ZXJ5IHRpbWUgYSBnZW5lcmF0b3IgaXMgY2FsbGVkIChvciByZXN1bWVkKSwgcGFyYW1l
dGVycyBzaG91bGQgYmUgcmVwbGFjZWQuCi0gICAgbGl2ZUNhbGxlZUxvY2Fscy5mb3JFYWNoU2V0
Qml0KFsmXShzaXplX3QgaW5kZXgpIHsKLSAgICAgICAgZXhlYy0+dW5jaGVja2VkUih2aXJ0dWFs
UmVnaXN0ZXJGb3JMb2NhbChpbmRleCkpID0gbG9jYWxBdChpbmRleCkuZ2V0KCk7Ci0gICAgICAg
IGxvY2FsQXQoaW5kZXgpLmNsZWFyKCk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgR2VuZXJhdG9yRnJh
bWU6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKLXsK
LSAgICBHZW5lcmF0b3JGcmFtZSogdGhpc09iamVjdCA9IGpzQ2FzdDxHZW5lcmF0b3JGcmFtZSo+
KGNlbGwpOwotICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7Ci0g
ICAgLy8gU2luY2Ugb25seSB0cnVlIGNlbGwgcG9pbnRlcnMgYXJlIHN0b3JlZCBhcyBhIGNlbGws
IHdlIGNhbiBzYWZlbHkgbWFyayB0aGVtLgotICAgIHZpc2l0b3IuYXBwZW5kVmFsdWVzKHRoaXNP
YmplY3QtPmxvY2FscygpLCB0aGlzT2JqZWN0LT5tX251bWJlck9mQ2FsbGVlTG9jYWxzKTsKLX0K
LQotfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9HZW5lcmF0b3JGcmFtZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
R2VuZXJhdG9yRnJhbWUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2Q1NDViMTQ3
ZGQ0YWJmYjJiYmI5YjVhNzE5NGU4Zjc0ODQxYzQ5YS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5l
cmF0b3JGcmFtZS5oCisrKyAvZGV2L251bGwKQEAgLTEsOTAgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jaWZuZGVmIEdlbmVyYXRvckZyYW1lX2gKLSNkZWZpbmUgR2VuZXJhdG9yRnJhbWVf
aAotCi0jaW5jbHVkZSAiSlNDZWxsLmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RCaXRWZWN0b3IuaD4K
LQotbmFtZXNwYWNlIEpTQyB7Ci0KLWNsYXNzIEdlbmVyYXRvckZyYW1lIDogcHVibGljIEpTQ2Vs
bCB7Ci0gICAgZnJpZW5kIGNsYXNzIEpJVDsKLSNpZiBFTkFCTEUoREZHX0pJVCkKLSAgICBmcmll
bmQgY2xhc3MgREZHOjpTcGVjdWxhdGl2ZUpJVDsKLSAgICBmcmllbmQgY2xhc3MgREZHOjpKSVRD
b21waWxlcjsKLSNlbmRpZgotICAgIGZyaWVuZCBjbGFzcyBWTTsKLXB1YmxpYzoKLSAgICB0eXBl
ZGVmIEpTQ2VsbCBCYXNlOwotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFn
cyA9IFN0cnVjdHVyZUlzSW1tb3J0YWwgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKLQotICAgIERF
Q0xBUkVfRVhQT1JUX0lORk87Ci0KLSAgICBzdGF0aWMgR2VuZXJhdG9yRnJhbWUqIGNyZWF0ZShW
TSYsIHNpemVfdCBudW1iZXJPZkNhbGxlZUxvY2Fscyk7Ci0KLSAgICBXcml0ZUJhcnJpZXJCYXNl
PFVua25vd24+KiBsb2NhbHMoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxX
cml0ZUJhcnJpZXJCYXNlPFVua25vd24+Kj4oYml0d2lzZV9jYXN0PGNoYXIqPih0aGlzKSArIG9m
ZnNldE9mTG9jYWxzKCkpOwotICAgIH0KLQotICAgIFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4m
IGxvY2FsQXQoc2l6ZV90IGluZGV4KQotICAgIHsKLSAgICAgICAgQVNTRVJUKGluZGV4IDwgbV9u
dW1iZXJPZkNhbGxlZUxvY2Fscyk7Ci0gICAgICAgIHJldHVybiBsb2NhbHMoKVtpbmRleF07Ci0g
ICAgfQotCi0gICAgc3RhdGljIHNpemVfdCBvZmZzZXRPZkxvY2FscygpCi0gICAgewotICAgICAg
ICByZXR1cm4gV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mPHNpemVvZihXcml0ZUJhcnJpZXI8VW5r
bm93bj4pPihzaXplb2YoR2VuZXJhdG9yRnJhbWUpKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgc2l6
ZV90IGFsbG9jYXRpb25TaXplRm9yTG9jYWxzKHVuc2lnbmVkIG51bWJlck9mTG9jYWxzKQotICAg
IHsKLSAgICAgICAgcmV0dXJuIG9mZnNldE9mTG9jYWxzKCkgKyBudW1iZXJPZkxvY2FscyAqIHNp
emVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pOwotICAgIH0KLQotICAgIHN0YXRpYyBTdHJ1Y3R1
cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBwcm90b3R5
cGUpOwotCi0gICAgdm9pZCBzYXZlKEV4ZWNTdGF0ZSosIGNvbnN0IEZhc3RCaXRWZWN0b3ImIGxp
dmVDYWxsZWVMb2NhbHMpOwotICAgIHZvaWQgcmVzdW1lKEV4ZWNTdGF0ZSosIGNvbnN0IEZhc3RC
aXRWZWN0b3ImIGxpdmVDYWxsZWVMb2NhbHMpOwotCi1wcml2YXRlOgotICAgIEdlbmVyYXRvckZy
YW1lKFZNJiwgc2l6ZV90IG51bWJlck9mQ2FsbGVlTG9jYWxzKTsKLQotICAgIHNpemVfdCBtX251
bWJlck9mQ2FsbGVlTG9jYWxzOwotCi0gICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJh
Y3RvcjsKLQotICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKLQotcHJvdGVjdGVkOgotICAg
IHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKLX07Ci0K
LX0gLy8gbmFtZXNwYWNlIEpTQwotCi0jZW5kaWYgLy8gR2VuZXJhdG9yRnJhbWVfaApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0b3JGdW5jdGlvbi5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0b3JGdW5jdGlvbi5oCmlu
ZGV4IDM2ZjYxYzVmMjBmNTZiZWZkNmM1NTc4NDJiMTllMzliMTlhM2E5MTkuLmExY2JhZDk0NmRj
NTY4MjllZDFhMjE1NTc5MGI0NDBhOGRmNDMwMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2VuZXJhdG9yRnVuY3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dlbmVyYXRvckZ1bmN0aW9uLmgKQEAgLTU1LDYgKzU1LDE2IEBA
IGNsYXNzIEpTR2VuZXJhdG9yRnVuY3Rpb24gOiBwdWJsaWMgSlNGdW5jdGlvbiB7CiAgICAgICAg
IEV4ZWN1dGluZyA9IC0yLAogICAgIH07CiAKKyAgICAvLyBbdGhpc10sIEBnZW5lcmF0b3IsIEBn
ZW5lcmF0b3JTdGF0ZSwgQGdlbmVyYXRvclZhbHVlLCBAZ2VuZXJhdG9yUmVzdW1lTW9kZSwgQGdl
bmVyYXRvckZyYW1lLgorICAgIGVudW0gY2xhc3MgR2VuZXJhdG9yQXJndW1lbnQgOiBpbnQzMl90
IHsKKyAgICAgICAgVGhpc1ZhbHVlID0gMCwKKyAgICAgICAgR2VuZXJhdG9yID0gMSwKKyAgICAg
ICAgU3RhdGUgPSAyLAorICAgICAgICBWYWx1ZSA9IDMsCisgICAgICAgIFJlc3VtZU1vZGUgPSA0
LAorICAgICAgICBGcmFtZSA9IDUsCisgICAgfTsKKwogICAgIGNvbnN0IHN0YXRpYyB1bnNpZ25l
ZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwogCiAgICAgREVDTEFSRV9F
WFBPUlRfSU5GTzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZN
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCA4ODEzMWJm
NWIzMDkwYWJkYWU0Yjk5NDUxYjQxNzFjYjVmZTJjNDVjLi5jMzAxMjJjNWFmMzNjODA3ZmU5YTY1
YTE4ZmU2Zjg1NDcwZWQwYTZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9WTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBA
IC00Niw3ICs0Niw2IEBACiAjaW5jbHVkZSAiRlRMVGh1bmtzLmgiCiAjaW5jbHVkZSAiRnVuY3Rp
b25Db25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkdDQWN0aXZpdHlDYWxsYmFjay5oIgotI2luY2x1
ZGUgIkdlbmVyYXRvckZyYW1lLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVk
ZSAiSGVhcC5oIgogI2luY2x1ZGUgIkhlYXBJdGVyYXRpb25TY29wZS5oIgpAQCAtMjQwLDcgKzIz
OSw2IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICBpbmZl
cnJlZFR5cGVTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBJbmZlcnJlZFR5cGU6OmNyZWF0ZVN0cnVjdHVy
ZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICBpbmZlcnJlZFR5cGVUYWJsZVN0cnVjdHVyZS5z
ZXQoKnRoaXMsIEluZmVycmVkVHlwZVRhYmxlOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpz
TnVsbCgpKSk7CiAgICAgZnVuY3Rpb25SYXJlRGF0YVN0cnVjdHVyZS5zZXQoKnRoaXMsIEZ1bmN0
aW9uUmFyZURhdGE6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKLSAgICBn
ZW5lcmF0b3JGcmFtZVN0cnVjdHVyZS5zZXQoKnRoaXMsIEdlbmVyYXRvckZyYW1lOjpjcmVhdGVT
dHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgZXhjZXB0aW9uU3RydWN0dXJlLnNl
dCgqdGhpcywgRXhjZXB0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7
CiAgICAgcHJvbWlzZURlZmVycmVkU3RydWN0dXJlLnNldCgqdGhpcywgSlNQcm9taXNlRGVmZXJy
ZWQ6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICBpbnRlcm5hbFBy
b21pc2VEZWZlcnJlZFN0cnVjdHVyZS5zZXQoKnRoaXMsIEpTSW50ZXJuYWxQcm9taXNlRGVmZXJy
ZWQ6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9WTS5oCmluZGV4IDg3YmQwZTBhMjU1MzhlOGM1ZWMzMmFiZTQwMzJjNDY5N2ViMWQw
OGYuLjkxNTBiNTE1OWVlZGNhZDE4NTY0NWNkYTZjNzMwYjQ5MGVkM2U2NzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVk0uaApAQCAtMzIwLDcgKzMyMCw2IEBAIGNsYXNzIFZNIDogcHVibGlj
IFRocmVhZFNhZmVSZWZDb3VudGVkPFZNPiB7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gaW5mZXJy
ZWRUeXBlU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGluZmVycmVkVHlwZVRhYmxl
U3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGZ1bmN0aW9uUmFyZURhdGFTdHJ1Y3R1
cmU7Ci0gICAgU3Ryb25nPFN0cnVjdHVyZT4gZ2VuZXJhdG9yRnJhbWVTdHJ1Y3R1cmU7CiAgICAg
U3Ryb25nPFN0cnVjdHVyZT4gZXhjZXB0aW9uU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1
cmU+IHByb21pc2VEZWZlcnJlZFN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBpbnRl
cm5hbFByb21pc2VEZWZlcnJlZFN0cnVjdHVyZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L0Zhc3RCaXRWZWN0b3IuaCBiL1NvdXJjZS9XVEYvd3RmL0Zhc3RCaXRWZWN0b3IuaAppbmRleCA5
OGZmZjVjZjczNTNlNmJjNjdkYTVjNTU5NDBjY2NlNGU0YjE1NmQwLi5mZjAwYjdiNTRkNGEwY2Zm
NGJlZjdkMDM4NTRkZTZiOTBjZTFkYjkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9GYXN0
Qml0VmVjdG9yLmgKKysrIGIvU291cmNlL1dURi93dGYvRmFzdEJpdFZlY3Rvci5oCkBAIC0yMyw4
ICsyMyw3IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCi0jaWZuZGVmIEZhc3RCaXRWZWN0b3Jf
aAotI2RlZmluZSBGYXN0Qml0VmVjdG9yX2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSA8c3Ry
aW5nLmg+CiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KQEAgLTM2LDEyICszNSwxNCBAQCBj
bGFzcyBQcmludFN0cmVhbTsKIAogY2xhc3MgRmFzdEJpdFZlY3RvciB7CiBwdWJsaWM6Ci0gICAg
RmFzdEJpdFZlY3RvcigpCi0gICAgICAgIDogbV9hcnJheSgwKQotICAgICAgICAsIG1fbnVtQml0
cygwKQorICAgIEZhc3RCaXRWZWN0b3IoKSA9IGRlZmF1bHQ7CisKKyAgICBGYXN0Qml0VmVjdG9y
KEZhc3RCaXRWZWN0b3ImJiBvdGhlcikKKyAgICAgICAgOiBtX2FycmF5KHN0ZDo6ZXhjaGFuZ2Uo
b3RoZXIubV9hcnJheSwgbnVsbHB0cikpCisgICAgICAgICwgbV9udW1CaXRzKHN0ZDo6ZXhjaGFu
Z2Uob3RoZXIubV9udW1CaXRzLCAwKSkKICAgICB7CiAgICAgfQotICAgIAorCiAgICAgRmFzdEJp
dFZlY3Rvcihjb25zdCBGYXN0Qml0VmVjdG9yJiBvdGhlcikKICAgICAgICAgOiBtX2FycmF5KDAp
CiAgICAgICAgICwgbV9udW1CaXRzKDApCkBAIC0yMDIsMTMgKzIwMywxMCBAQCBjbGFzcyBGYXN0
Qml0VmVjdG9yIHsKICAgICBzdGF0aWMgc2l6ZV90IGFycmF5TGVuZ3RoKHNpemVfdCBudW1CaXRz
KSB7IHJldHVybiAobnVtQml0cyArIDMxKSA+PiA1OyB9CiAgICAgc2l6ZV90IGFycmF5TGVuZ3Ro
KCkgY29uc3QgeyByZXR1cm4gYXJyYXlMZW5ndGgobV9udW1CaXRzKTsgfQogICAgIAotICAgIHVp
bnQzMl90KiBtX2FycmF5OyAvLyBObywgdGhpcyBjYW4ndCBiZSBhbiBzdGQ6OnVuaXF1ZV9wdHI8
dWludDMyX3RbXT4uCi0gICAgc2l6ZV90IG1fbnVtQml0czsKKyAgICB1aW50MzJfdCogbV9hcnJh
eSB7IG51bGxwdHIgfTsgLy8gTm8sIHRoaXMgY2FuJ3QgYmUgYW4gc3RkOjp1bmlxdWVfcHRyPHVp
bnQzMl90W10+LgorICAgIHNpemVfdCBtX251bUJpdHMgeyAwIH07CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXVEYKIAogdXNpbmcgV1RGOjpGYXN0Qml0VmVjdG9yOwotCi0jZW5kaWYgLy8gRmFzdEJp
dFZlY3Rvcl9oCi0KZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFu
Z2VMb2cKaW5kZXggNjQxMDA4NzcxYTBiYjBlM2JmODE4ZTFjODVjY2ZlN2JjNDM4MDYxYi4uMmQw
MzViNzMxMGQzOGMxOTE2YzUxYWYxNDQwMDQxZWIyZjA2NDE5NiAxMDA2NDQKLS0tIGEvSlNUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAx
Ni0wOC0yNSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAg
ICBbREZHXVtGVExdIEltcGxlbWVudCBFUzYgR2VuZXJhdG9ycyBpbiBERkcgLyBGVEwKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MjcyMworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3RyZXNzL2dlbmVy
YXRvci1maWItZnRsLWFuZC1hcnJheS5qczogQWRkZWQuCisgICAgICAgIChmaWIpOgorICAgICAg
ICAqIHN0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQtb2JqZWN0LmpzOiBBZGRlZC4KKyAgICAg
ICAgKGZpYik6CisgICAgICAgICogc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLWFuZC1zdHJpbmcu
anM6IEFkZGVkLgorICAgICAgICAoZmliKToKKyAgICAgICAgKiBzdHJlc3MvZ2VuZXJhdG9yLWZp
Yi1mdGwuanM6IEFkZGVkLgorICAgICAgICAoZmliKToKKyAgICAgICAgKiBzdHJlc3MvZ2VuZXJh
dG9yLWZyYW1lLWVtcHR5LmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZFRocm93KToKKyAgICAg
ICAgKHNob3VsZFRocm93LmZpYik6CisgICAgICAgICogc3RyZXNzL2dlbmVyYXRvci1yZWR1Y2Vk
LXNhdmUtcG9pbnQtcHV0LXRvLXNjb3BlLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToK
KyAgICAgICAgKGdlbik6CisgICAgICAgICogc3RyZXNzL2dlbmVyYXRvci10cmFuc2Zlci1yZWdp
c3Rlci1iZXlvbmQtbXV0aXBsZS15aWVsZHMuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUp
OgorICAgICAgICAoZ2VuKToKKwogMjAxNi0wOC0yNCAgQmVuamFtaW4gUG91bGFpbiAgPGJlbmph
bWluQHdlYmtpdC5vcmc+CiAKICAgICAgICAgW0pTQ10gTWFrZSBGUm91bmQgd29yayB3aXRoIGFu
eSB0eXBlCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQt
YXJyYXkuanMgYi9KU1Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQtYXJyYXkuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZmU5Mzk4MTJmZGJhZWM2YjgzMmJmZDAwZjIxNTNkZWY4NGJiNzU5MgotLS0g
L2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLWFuZC1hcnJh
eS5qcwpAQCAtMCwwICsxLDIzIEBACisoZnVuY3Rpb24gKCkgeworICAgIGZ1bmN0aW9uICpmaWIo
KQorICAgIHsKKyAgICAgICAgbGV0IGEgPSAxOworICAgICAgICBsZXQgYiA9IDE7CisgICAgICAg
IGxldCBjID0gWyAwIF07CisgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICBjWzBd
ID0gYTsKKyAgICAgICAgICAgIHlpZWxkIGM7CisgICAgICAgICAgICBbYSwgYl0gPSBbYiwgYSAr
IGJdOworICAgICAgICB9CisgICAgfQorCisgICAgbGV0IHZhbHVlID0gMDsKKyAgICBmb3IgKGxl
dCBpID0gMDsgaSA8IDFlNDsgKytpKSB7CisgICAgICAgIGxldCBmID0gZmliKCk7CisgICAgICAg
IGZvciAobGV0IGkgPSAwOyBpIDwgMTAwOyArK2kpIHsKKyAgICAgICAgICAgIHZhbHVlID0gZi5u
ZXh0KCkudmFsdWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHZhbHVlWzBdICE9PSAzNTQyMjQ4
NDgxNzkyNjIwMDAwMDApCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCB2YWx1ZTok
e3Jlc3VsdH1gKTsKKyAgICB9Cit9KCkpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvZ2Vu
ZXJhdG9yLWZpYi1mdGwtYW5kLW9iamVjdC5qcyBiL0pTVGVzdHMvc3RyZXNzL2dlbmVyYXRvci1m
aWItZnRsLWFuZC1vYmplY3QuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjY3MzQwZjJlYTRjNzQzOGEyZDIwOWFh
NDBkMDY3N2U0YWI3ZDNmYgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2dlbmVy
YXRvci1maWItZnRsLWFuZC1vYmplY3QuanMKQEAgLTAsMCArMSwyMyBAQAorKGZ1bmN0aW9uICgp
IHsKKyAgICBmdW5jdGlvbiAqZmliKCkKKyAgICB7CisgICAgICAgIGxldCBhID0gMTsKKyAgICAg
ICAgbGV0IGIgPSAxOworICAgICAgICBsZXQgYyA9IHsgZmliOiAwIH07CisgICAgICAgIHdoaWxl
ICh0cnVlKSB7CisgICAgICAgICAgICBjLmZpYiA9IGE7CisgICAgICAgICAgICB5aWVsZCBjOwor
ICAgICAgICAgICAgW2EsIGJdID0gW2IsIGEgKyBiXTsKKyAgICAgICAgfQorICAgIH0KKworICAg
IGxldCB2YWx1ZSA9IDA7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxZTQ7ICsraSkgeworICAg
ICAgICBsZXQgZiA9IGZpYigpOworICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDsgKytp
KSB7CisgICAgICAgICAgICB2YWx1ZSA9IGYubmV4dCgpLnZhbHVlOworICAgICAgICB9CisgICAg
ICAgIGlmICh2YWx1ZS5maWIgIT09IDM1NDIyNDg0ODE3OTI2MjAwMDAwMCkKKyAgICAgICAgICAg
IHRocm93IG5ldyBFcnJvcihgYmFkIHZhbHVlOiR7cmVzdWx0fWApOworICAgIH0KK30oKSk7CmRp
ZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQtc3RyaW5nLmpz
IGIvSlNUZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwtYW5kLXN0cmluZy5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40MzhhZTZhYjMzNDcwNDY4MjI4NDlmNDMwMDRlYTVjNDAzZWVkYTI4Ci0tLSAvZGV2L251
bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwtYW5kLXN0cmluZy5qcwpA
QCAtMCwwICsxLDIyIEBACisoZnVuY3Rpb24gKCkgeworICAgIGZ1bmN0aW9uICpmaWIoKQorICAg
IHsKKyAgICAgICAgbGV0IGEgPSAxOworICAgICAgICBsZXQgYiA9IDE7CisgICAgICAgIGxldCBj
ID0gIlJlc3VsdCEgIjsKKyAgICAgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgICAgIHlpZWxk
IGMgKyBhOworICAgICAgICAgICAgW2EsIGJdID0gW2IsIGEgKyBiXTsKKyAgICAgICAgfQorICAg
IH0KKworICAgIGxldCB2YWx1ZSA9IDA7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxZTQ7ICsr
aSkgeworICAgICAgICBsZXQgZiA9IGZpYigpOworICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8
IDEwMDsgKytpKSB7CisgICAgICAgICAgICB2YWx1ZSA9IGYubmV4dCgpLnZhbHVlOworICAgICAg
ICB9CisgICAgICAgIGlmICh2YWx1ZSAhPT0gYFJlc3VsdCEgMzU0MjI0ODQ4MTc5MjYyMDAwMDAw
YCkKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIHZhbHVlOiR7cmVzdWx0fWApOwor
ICAgIH0KK30oKSk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0
bC5qcyBiL0pTVGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM0
MGUzM2RiYzg2OGJlYTdhODkzYzllYzE2Yjc3OWVjMjZiZGIxOWMKLS0tIC9kZXYvbnVsbAorKysg
Yi9KU1Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC5qcwpAQCAtMCwwICsxLDIxIEBACiso
ZnVuY3Rpb24gKCkgeworICAgIGZ1bmN0aW9uICpmaWIoKQorICAgIHsKKyAgICAgICAgbGV0IGEg
PSAxOworICAgICAgICBsZXQgYiA9IDE7CisgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAg
ICAgICB5aWVsZCBhOworICAgICAgICAgICAgW2EsIGJdID0gW2IsIGEgKyBiXTsKKyAgICAgICAg
fQorICAgIH0KKworICAgIGxldCB2YWx1ZSA9IDA7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAx
ZTQ7ICsraSkgeworICAgICAgICBsZXQgZiA9IGZpYigpOworICAgICAgICBmb3IgKGxldCBpID0g
MDsgaSA8IDEwMDsgKytpKSB7CisgICAgICAgICAgICB2YWx1ZSA9IGYubmV4dCgpLnZhbHVlOwor
ICAgICAgICB9CisgICAgICAgIGlmICh2YWx1ZSAhPT0gMzU0MjI0ODQ4MTc5MjYyMDAwMDAwKQor
ICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgdmFsdWU6JHtyZXN1bHR9YCk7CisgICAg
fQorfSgpKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2dlbmVyYXRvci1mcmFtZS1lbXB0
eS5qcyBiL0pTVGVzdHMvc3RyZXNzL2dlbmVyYXRvci1mcmFtZS1lbXB0eS5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li41OWU4ODU1YmZhYzNjNTZkZjkyNmFiZDQyOGMwMTNjMzM0MTYyNzQ2Ci0tLSAvZGV2L251bGwK
KysrIGIvSlNUZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZyYW1lLWVtcHR5LmpzCkBAIC0wLDAgKzEs
MzQgQEAKK2Z1bmN0aW9uIHNob3VsZFRocm93KGZ1bmMsIGVycm9yTWVzc2FnZSkgeworICAgIHZh
ciBlcnJvclRocm93biA9IGZhbHNlOworICAgIHZhciBlcnJvciA9IG51bGw7CisgICAgdHJ5IHsK
KyAgICAgICAgZnVuYygpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgZXJyb3JUaHJvd24g
PSB0cnVlOworICAgICAgICBlcnJvciA9IGU7CisgICAgfQorICAgIGlmICghZXJyb3JUaHJvd24p
CisgICAgICAgIHRocm93IG5ldyBFcnJvcignbm90IHRocm93bicpOworICAgIGlmIChTdHJpbmco
ZXJyb3IpICE9PSBlcnJvck1lc3NhZ2UpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIGVy
cm9yOiAke1N0cmluZyhlcnJvcil9YCk7Cit9CisKK3Nob3VsZFRocm93KGZ1bmN0aW9uICgpIHsK
KyAgICBmdW5jdGlvbiAqZmliKGZsYWcpCisgICAgeworICAgICAgICBsZXQgYSA9IDE7CisgICAg
ICAgIGxldCBiID0gMTsKKyAgICAgICAgeWllbGQgNDI7CisgICAgICAgIGlmIChmbGFnKQorICAg
ICAgICAgICAgcmV0dXJuIGM7CisgICAgICAgIGxldCBjID0gNTAwOworICAgIH0KKworICAgIGxl
dCB2YWx1ZSA9IDA7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxZTQ7ICsraSkgeworICAgICAg
ICBmb3IgKGxldCB2IG9mIGZpYihmYWxzZSkpIHsKKyAgICAgICAgfQorICAgIH0KKyAgICBmb3Ig
KGxldCB2IG9mIGZpYih0cnVlKSkgeworICAgIH0KK30sIGBSZWZlcmVuY2VFcnJvcjogQ2Fubm90
IGFjY2VzcyB1bmluaXRpYWxpemVkIHZhcmlhYmxlLmApOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9z
dHJlc3MvZ2VuZXJhdG9yLXJlZHVjZWQtc2F2ZS1wb2ludC1wdXQtdG8tc2NvcGUuanMgYi9KU1Rl
c3RzL3N0cmVzcy9nZW5lcmF0b3ItcmVkdWNlZC1zYXZlLXBvaW50LXB1dC10by1zY29wZS5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5jMGM3NWZhNDkxNDNjMTdiZTE0ZjMyODFlM2Y2NTQzNGYzNTEzOWU4Ci0tLSAv
ZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXJlZHVjZWQtc2F2ZS1wb2lu
dC1wdXQtdG8tc2NvcGUuanMKQEAgLTAsMCArMSwyOCBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0
dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoYGJhZCB2YWx1ZTogJHtTdHJpbmcoYWN0dWFsKX1gKTsKK30KKworZnVu
Y3Rpb24gZXJyb3IoKQoreworICAgIHRocm93ICJvayI7Cit9CisKK2Z1bmN0aW9uKiBnZW4oKQor
eworICAgIHZhciB2YWx1ZSA9IDQyOworICAgIHRyeSB7CisgICAgICAgIHlpZWxkIDMwMDsKKyAg
ICAgICAgdmFsdWUgPSA1MDA7CisgICAgICAgIGVycm9yKCk7CisgICAgfSBjYXRjaCAoZSkgewor
ICAgICAgICB5aWVsZCA0MjsKKyAgICAgICAgcmV0dXJuIHZhbHVlOworICAgIH0KKyAgICByZXR1
cm4gMjAwOworfQorCit2YXIgZyA9IGdlbigpOworc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIDMw
MCk7CitzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgNDIpOworc2hvdWxkQmUoZy5uZXh0KCkudmFs
dWUsIDUwMCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItdHJhbnNmZXIt
cmVnaXN0ZXItYmV5b25kLW11dGlwbGUteWllbGRzLmpzIGIvSlNUZXN0cy9zdHJlc3MvZ2VuZXJh
dG9yLXRyYW5zZmVyLXJlZ2lzdGVyLWJleW9uZC1tdXRpcGxlLXlpZWxkcy5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5mZTIwOGY1ODEyOTZmOWFlMDhhNmJmYjM5OGI0ODIyNTc0MmQ2Yjc4Ci0tLSAvZGV2L251bGwK
KysrIGIvSlNUZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXRyYW5zZmVyLXJlZ2lzdGVyLWJleW9uZC1t
dXRpcGxlLXlpZWxkcy5qcwpAQCAtMCwwICsxLDE4IEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1
YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRo
cm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKworCitmdW5jdGlvbiAq
Z2VuKCkKK3sKKyAgICB2YXIgdGVzdCA9IDQyOworICAgIHlpZWxkIDMyOworICAgIHlpZWxkIDMz
OworICAgIHlpZWxkIHRlc3Q7Cit9CisKK3ZhciBnID0gZ2VuKCk7CitzaG91bGRCZShnLm5leHQo
KS52YWx1ZSwgMzIpOworc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIDMzKTsKK3Nob3VsZEJlKGcu
bmV4dCgpLnZhbHVlLCA0Mik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>287004</attachid>
            <date>2016-08-25 13:44:20 -0700</date>
            <delta_ts>2016-08-25 14:18:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-152723-20160825134218.patch</filename>
            <type>text/plain</type>
            <size>212718</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA0OTUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
ODg4NTQ1MDJhODY4NzA3YmJkOTdmOWZmODhlOTQwMzcxYjFmMzczLi41ZDYwYmQ4MTMyZTZhNDdl
ZTA3MDZhZTliMjYyNzhhYjdjNWJhMzNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0ODUgQEAKKzIwMTYtMDgtMjUgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0RGR11bRlRMXSBJbXBsZW1lbnQgRVM2IEdlbmVyYXRvcnMgaW4g
REZHIC8gRlRMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNTI3MjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUaGlzIHBhdGNoIGludHJvZHVjZXMgREZHIGFuZCBGVEwgc3VwcG9ydCBmb3IgRVM2IGdlbmVy
YXRvcnMuCisgICAgICAgIEVTNiBnZW5lcmF0b3IgaXMgY29tcGlsZWQgYnkgdGhlIEJ5dGVjb2Rl
R2VuZXJhdG9yLiBCdXQgYXQgdGhlIGxhc3QgcGhhc2UsIEJ5dGVjb2RlR2VuZXJhdG9yIHBlcmZv
cm1zICJnZW5lcmF0b3JpZmljYXRpb24iIG9udG8gdGhlIHVubGlua2VkIGNvZGUuCisgICAgICAg
IEluIEJ5dGVjb2RlR2VuZXJhdG9yIHBoYXNlLCB3ZSBqdXN0IGVtaXQgb3BfeWllbGQgZm9yIGVh
Y2ggeWllbGQgcG9pbnQuIEFuZCB3ZSBkb24ndCBlbWl0IGFueSBnZW5lcmF0b3IgcmVsYXRlZCBz
d2l0Y2gsIHNhdmUsIGFuZCByZXN1bWUgc2VxdWVuY2VzCisgICAgICAgIGhlcmUuIFRob3NlIGFy
ZSBlbWl0dGVkIGJ5IHRoZSBnZW5lcmF0b3JpZmljYXRpb24gcGhhc2UuCisKKyAgICAgICAgU28g
dGhlIGdyYXBoIGlzIHN1cGVyIHNpbXBsZSEgQmVmb3JlIHRoZSBnZW5lcmF0b3JpZmljYXRpb24s
IHRoZSBncmFwaCBsb29rcyBsaWtlIHRoaXMuCisKKyAgICAgICAgICAgICBvcF9lbnRlciAtPiAu
Li4uLi4gLT4gb3BfeWllbGQgLT4gLi4uLi4gLT4gb3BfeWllbGQgLT4gLi4uCisKKyAgICAgICAg
Um91Z2hseSBzcGVha2luZywgaW4gdGhlIGdlbmVyYXRvcmlmaWNhdGlvbiBwaGFzZSwgd2UgdHVy
biBvdXQgd2hpY2ggdmFyaWFibGVzIHNob3VsZCBiZSBzYXZlZCBhbmQgcmVzdW1lZCBhdCBlYWNo
IG9wX3lpZWxkLgorICAgICAgICBUaGlzIGlzIGRvbmUgYnkgbGl2ZW5lc3MgYW5hbHlzaXMuIEFm
dGVyIHRoYXQsIHdlIGNvbnZlcnQgb3BfeWllbGQgdG8gdGhlIHNlcXVlbmNlIG9mICJvcF9wdXRf
dG9fc2NvcGUiLCAib3BfcmV0IiwgYW5kICJvcF9nZXRfZnJvbV9zY29wZSIuCisgICAgICAgIG9w
X3B1dF90b19zY29wZSBhbmQgb3BfZ2V0X2Zyb21fc2NvcGUgc2VxdWVuY2VzIGFyZSBjb3JyZXNw
b25kaW5nIHRvIHRoZSBzYXZlIGFuZCByZXN1bWUgc2VxdWVuY2VzLiBXZSBzZXQgdXAgdGhlIHNj
b3BlIGZvciB0aGUgZ2VuZXJhdG9yIGZyYW1lIGFuZAorICAgICAgICBwZXJmb3JtIG9wX3B1dF90
b19zY29wZSBhbmQgb3BfZ2V0X2Zyb21fc2NvcGUgb250byBpdC4gVGhlIGxpdmUgcmVnaXN0ZXJz
IGFyZSBzYXZlZCBhbmQgcmVzdW1lZCBvdmVyIHRoZSBnZW5lcmF0b3IncyBuZXh0KCkgY2FsbHMg
YnkgdXNpbmcgdGhpcworICAgICAgICBzcGVjaWFsIGdlbmVyYXRvciBmcmFtZSBzY29wZS4gQW5k
IHdlIGFsc28gc2V0IHVwIHRoZSBnbG9iYWwgc3dpdGNoIGZvciB0aGUgZ2VuZXJhdG9yLgorCisg
ICAgICAgIEluIHRoZSBnZW5lcmF0b3JpZmljYXRpb24gcGhhc2UsCisKKyAgICAgICAgMS4gV2Ug
Y29uc3RydWN0IHRoZSBCeXRlY29kZUdyYXBoIGZyb20gdGhlIHVubGlua2VkIGluc3RydWN0aW9u
cy4gVGhpcyBjb25zdHJ1Y3RzIHRoZSBiYXNpYyBibG9ja3MsIGFuZCBpdCBpcyB1c2VkIGluIHRo
ZSBzdWJzZXF1ZW50IGFuYWx5c2lzLgorICAgICAgICAyLiBXZSBwZXJmb3JtIHRoZSBhbmFseXNp
cyBvbnRvIHRoZSB1bmxpbmtlZCBjb2RlLiBXZSBleHRyYWN0IHRoZSBsaXZlIHZhcmlhYmxlcyBh
dCBlYWNoIG9wX3lpZWxkLgorICAgICAgICAzLiBXZSBpbnNlcnQgdGhlIGdldF9mcm9tX3Njb3Bl
IGFuZCBwdXRfdG9fc2NvcGUgYXQgZWFjaCBvcF95aWVsZC4gV2hpY2ggcmVnaXN0ZXJzIHNob3Vs
ZCBiZSBzYXZlZCBhbmQgcmVzdW1lZCBpcyBvZmZlcmVkIGJ5ICgyKS4KKyAgICAgICAgICAgVGhl
biwgY2xpcCB0aGUgb3BfeWllbGQgdGhlbXNlbHZlcy4gQW5kIHdlIGFsc28gaW5zZXJ0IHRoZSBz
d2l0Y2hfaW1tLiBUaGUganVtcCB0YXJnZXRzIG9mIHRoaXMgc3dpdGNoIGFyZSBqdXN0IGFmdGVy
IHRoaXMgb3Bfc3dpdGNoX2ltbSBhbmQgZWFjaCBvcF95aWVsZCBwb2ludC4KKworICAgICAgICBP
bmUgaW50ZXJlc3RpbmcgcG9pbnQgaXMgdGhlIHRyeS1yYW5nZS4gV2Ugc3BsaXQgdGhlIHRyeS1y
YW5nZSBhdCB0aGUgb3BfeWllbGQgcG9pbnQgaW4gQnl0ZWNvZGVHZW5lcmF0b3IgcGhhc2UuIFRo
aXMgZHJvcHMgdGhlIGhhY2t5IHRoaW5nIHRoYXQgaXMgaW50cm9kdWNlZCBpbiBbMV0uCisgICAg
ICAgIElmIHRoZSB0cnktcmFuZ2UgY292ZXJzIHRoZSByZXN1bWUgc2VxdWVuY2VzLCB0aGUgZXhj
ZXB0aW9uJ3MgcmVnaXN0ZXIgaXMgdG91Y2hlZCBhcyBgdXNlZGAgZXZlbiBpZiB3ZSBkb24ndCBw
cm9wZXJseSByZXN1bWUgdGhlIHJlZ2lzdGVycyBpbiB0aGUgcmVzdW1lIHNlcXVlbmNlIHlldC4K
KyAgICAgICAgUHJldmlvdXNseSwgd2UgaGFuZGxlIHRoaXMgZWRnZSBjYXNlIGJ5IHRyZWF0aW5n
IG9wX3Jlc3VtZSBzcGVjaWFsbHkgaW4gdGhlIGxpdmVuZXNzIGFuYWx5c2lzWzFdLiBXZSBzcGxp
dCB0aGUgdHJ5LXJhbmdlIG5vdCB0byBjb3ZlciB0aGlzIHJlc3VtZSBzZXF1ZW5jZSB0byBhdm9p
ZCB0aGlzIHByb2JsZW0uCisKKyAgICAgICAgT0suIExldCdzIHNob3cgdGhlIGRldGFpbGVkIGV4
YW1wbGUuCisKKyAgICAgICAgICAgIDEuIEZpcnN0LCB0aGVyZSBpcyB0aGUgbm9ybWFsIGJ5dGVj
b2RlIHNlcXVlbmNlLiBIZXJlLCB8IHJlcHJlc2VudHMgdGhlIG9mZnNldHMsIGFuZCBbXSByZXBy
ZXNlbnRzIHRoZSBieXRlY29kZXMuCisKKyAgICAgICAgICAgICAgICBieXRlY29kZXMgICB8IFsg
XSB8IFsgXSB8IFsgXSB8IFsgXSB8IFsgXSB8IFsgXSB8CisgICAgICAgICAgICAgICAgdHJ5LXJh
bmdlICAgPC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPgorCisgICAgICAgICAg
ICAyLiBXaGVuIHdlIGVtaXQgdGhlIG9wX3lpZWxkIGluIHRoZSBieXRlY29kZSBnZW5lcmF0b3Is
IHdlIGNhcmVmdWxseSBzcGxpdCB0aGUgdHJ5LXJhbmdlLgorCisgICAgICAgICAgICAgICAgYnl0
ZWNvZGVzICAgfCBbIF0gfCBbIF0gfCBbb3BfeWllbGRdIHwgWyBdIHwgWyBdIHwgWyBdIHwKKyAg
ICAgICAgICAgICAgICB0cnktcmFuZ2UgICA8LS0tLS0tLS0tLS0+ICAgICAgICAgICAgPC0tLS0t
LS0tLS0tLS0tLS0tPgorCisgICAgICAgICAgICAzLiBBbmQgaW4gdGhlIGdlbmVyYXRvcmlmaWNh
dGlvbiBwaGFzZSwgd2UgaW5zZXJ0IHRoZSBzd2l0Y2gncyBqdW1wIHRhcmdldCBhbmQgc2F2ZSAm
IHJlc3VtZSBzZXF1ZW5jZXMuIEFuZCB3ZSBhbHNvIGRyb3Agb3BfeWllbGQuCisKKyAgICAgICAg
ICAgICAgICBJbnNlcnQgc2F2ZSBzZXEgYmVmb3JlIG9wX3lpZWxkLiAgICBJbnNlcnQgcmVzdW1l
IHNlcSBiZWZvcmUgdGhlIGJ5dGVjb2RlIHRoYXQgaXMganVzdCBhZnRlciBvcF95aWVsZC4KKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYgICAgICAgICAgICB2CisgICAg
ICAgICAgICAgICAgYnl0ZWNvZGVzICAgfCBbIF0gfCBbIF0gfCBbb3BfeWllbGRdIHwgWyBdIHwg
WyBdIHwgWyBdIHwKKyAgICAgICAgICAgICAgICB0cnktcmFuZ2UgICA8LS0tLS0tLS0tLS0+ICAg
ICBeICAgICAgPC0tLS0tLS0tLS0tLS0tLS0tPgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIF4gICAgIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSnVtcCB0
byBoZXJlLiAgICBEcm9wIHRoaXMgb3BfeWllbGQuCisKKyAgICAgICAgICAgIDQuIFRoZSBmaW5h
bCBsYXlvdXQgaXMgdGhlIGZvbGxvd2luZy4KKworICAgICAgICAgICAgICAgIGJ5dGVjb2RlcyAg
IHwgWyBdIHwgWyBdW3NhdmUgc2VxXVtvcF9yZXRdIHwgW3Jlc3VtZSBzZXFdIHwgWyBdIHwgWyBd
IHwgWyBdIHwKKyAgICAgICAgICAgICAgICB0cnktcmFuZ2UgICA8LS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0+ICAgICAgICAgICAgICAgPC0tLS0tLS0tLS0tLS0tLS0+CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEp1bXAgdG8gaGVyZS4KKwor
ICAgICAgICBUaGUgcmV3cml0aW5nIGRvbmUgYnkgdGhlIEJ5dGVjb2RlUmV3cml0ZXIgaXMgZXhl
Y3V0ZWQgaW4gYSBiYXRjaCBtYW5uZXIuIFNpbmNlIHRoZXNlIG1vZGlmaWNhdGlvbiBjaGFuZ2Vz
IHRoZSBiYXNpYyBibG9ja3MgYW5kIHNpemUgb2YgdW5saW5rZWQgaW5zdHJ1Y3Rpb25zLAorICAg
ICAgICBCeXRlY29kZVJld3JpdGVyIGFsc28gcGVyZm9ybXMgdGhlIG9mZnNldCBhZGp1c3RtZW50
IGZvciBVbmxpbmtlZENvZGVCbG9jay4gU28sIHRoaXMgcmV3cml0aW5nIGlzIHBlcmZvcm1lZCBv
bnRvIHRoZSBCeXRlY29kZUdyYXBoIHJhdGhlciB0aGFuIEJ5dGVjb2RlQmFzaWNCbG9jay4KKyAg
ICAgICAgVGhlIHJlYXNvbiB3aHkgd2UgdGFrZSB0aGlzIGRlc2lnbiBpcyBzaW1wbGU6IHdlIGRv
bid0IHdhbnQgdG8gbmV3bHkgY3JlYXRlIHRoZSBiYXNpYyBibG9ja3MgYW5kIG9wY29kZXMgZm9y
IHRoaXMgZWFybHkgcGhhc2UgbGlrZSBERkcuIEluc3RlYWQsIHdlIHBlcmZvcm0gdGhlCisgICAg
ICAgIG1vZGlmaWNhdGlvbiBhbmQgYWRqdXN0bWVudCB0byB0aGUgdW5saW5rZWQgaW5zdHJ1Y3Rp
b25zIGFuZCBVbmxpbmtlZENvZGVCbG9jayBpbiBhIGluLXBsYWNlIG1hbm5lci4KKworICAgICAg
ICBBZnRlciB0aGF0IHBoYXNlLCB0aGUgZGF0YSBmbG93IG9mIHRoZSBnZW5lcmF0b3Itc2F2ZWQt
YW5kLXJlc3VtZWQtcmVnaXN0ZXJzIGFyZSBleHBsaWNpdGx5IHJlcHJlc2VudGVkIGJ5IHRoZSBn
ZXRfZnJvbV9zY29wZSBhbmQgcHV0X3RvX3Njb3BlLgorICAgICAgICBBbmQgdGhlIHN3aXRjaCBp
cyBpbnNlcnRlZCB0byByZXByZXNlbnQgdGhlIGFjdHVhbCBjb250cm9sIGZsb3cgZm9yIHRoZSBn
ZW5lcmF0b3IuIEFuZCBvcF95aWVsZCBpcyByZW1vdmVkLiBTaW5jZSB3ZSB1c2UgdGhlIGV4aXN0
aW5nIGJ5dGVjb2RlcyAob3Bfc3dpdGNoX2ltbSwgb3BfcHV0X3RvX3Njb3BlCisgICAgICAgIG9w
X3JldCwgYW5kIG9wX2dldF9mcm9tX3Njb3BlKSwgREZHIGFuZCBGVEwgY2hhbmdlcyBhcmUgbm90
IG5lY2Vzc2FyeS4gVGhpcyBwYXRjaCBhbHNvIGRyb3BzIGRhdGEgc3RydWN0dXJlcyBhbmQgaW1w
bGVtZW50YXRpb25zIGZvciB0aGUgb2xkIGdlbmVyYXRvciwKKyAgICAgICAgb3BfcmVzdW1lLCBv
cF9zYXZlIGltcGxlbWVudGF0aW9ucyBhbmQgR2VuZXJhdG9yRnJhbWUuCisKKyAgICAgICAgTm90
ZSB0aGF0IHRoaXMgcGF0Y2ggZG9lcyBub3QgbGV2ZXJhZ2UgdGhlIHJlY2VudCBtdWx0aSBlbnRy
eXBvaW50cyBzdXBwb3J0IGluIEIzLiBBZnRlciB0aGlzIHBhdGNoIGlzIGludHJvZHVjZWQsIHdl
IHdpbGwgc3VibWl0IGEgbmV3IHBhdGNoIHRoYXQgbGV2ZXJhZ2VzIHRoZSBtdWx0aQorICAgICAg
ICBlbnRyeXBvaW50cyBmb3IgZ2VuZXJhdG9yJ3MgcmVzdW1lIGFuZCBzZWVzIHRoZSBwZXJmb3Jt
YW5jZSBnYWluLgorCisgICAgICAgIE1pY3JvYmVuY2htYXJrcyByZWxhdGVkIHRvIGdlbmVyYXRv
cnMgc2hvdyB1cCB0byAyLjl4IGltcHJvdmVtZW50cy4KKworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCYXNlbGluZSAgICAgICAgICAgICAg
ICAgIFBhdGNoZWQKKworICAgICAgICAgICAgZ2VuZXJhdG9yLWZpYiAgICAgICAgICAgICAgICAg
ICAgICAgICAgMTAyLjAxMTYrLTMuMjg4MCAgICAgXiAgICAgMzQuOTY3MCstMC4yMjIxICAgICAg
ICBeIGRlZmluaXRlbHkgMi45MTc0eCBmYXN0ZXIKKyAgICAgICAgICAgIGdlbmVyYXRvci1zdW5z
cGlkZXItYWNjZXNzLW5zaWV2ZSAgICAgICAgNS44NTk2Ky0wLjAzNzEgICAgIF4gICAgICA0Ljkw
NTErLTAuMDcyMCAgICAgICAgXiBkZWZpbml0ZWx5IDEuMTk0NnggZmFzdGVyCisgICAgICAgICAg
ICBnZW5lcmF0b3Itd2l0aC1zZXZlcmFsLXR5cGVzICAgICAgICAgICAzMzIuMTQ3OCstNC4yNDI1
ICAgICBeICAgIDEyNC42NjQyKy0yLjQ4MjYgICAgICAgIF4gZGVmaW5pdGVseSAyLjY2NDN4IGZh
c3RlcgorCisgICAgICAgICAgICA8Z2VvbWV0cmljPiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgNTguMjk5OCstMC43NzU4ICAgICBeICAgICAyNy43NDI1Ky0wLjI1NzcgICAgICAgIF4gZGVm
aW5pdGVseSAyLjEwMTV4IGZhc3RlcgorCisgICAgICAgIEluIEVTNlNhbXBsZUJlbmNoJ3MgQmFz
aWMsIHdlIGNhbiBvYnNlcnZlIDQxJSBpbXByb3ZlbWVudCAoTWFjYm9vayBQcm8pLgorCisgICAg
ICAgICAgICBCYXNlbGluZToKKyAgICAgICAgICAgICAgICBHZW9tZXRyaWMgTWVhbiBSZXN1bHQ6
IDEzMy41NSBtcyArLSA0LjQ5IG1zCisKKyAgICAgICAgICAgICAgICBCZW5jaG1hcmsgICAgRmly
c3QgSXRlcmF0aW9uICAgICAgICBXb3JzdCAyJSAgICAgICAgICAgICAgIFN0ZWFkeSBTdGF0ZQor
ICAgICAgICAgICAgICAgIEFpciAgICAgICAgICA1NC4wMyBtcyArLSA3LjUxIG1zICAgIDI5LjA2
IG1zICstIDMuMTMgbXMgICAgMjI3Ni41OSBtcyArLSA2MS4xNyBtcworICAgICAgICAgICAgICAg
IEJhc2ljICAgICAgICAzMC4xOCBtcyArLSAxLjg2IG1zICAgIDE4Ljg1IG1zICstIDAuNDUgbXMg
ICAgMjg1MS4xNiBtcyArLSA0MS44NyBtcworCisgICAgICAgICAgICBQYXRjaGVkOgorICAgICAg
ICAgICAgICAgIEdlb21ldHJpYyBNZWFuIFJlc3VsdDogMTIxLjc4IG1zICstIDMuOTYgbXMKKwor
ICAgICAgICAgICAgICAgIEJlbmNobWFyayAgICBGaXJzdCBJdGVyYXRpb24gICAgICAgIFdvcnN0
IDIlICAgICAgICAgICAgICAgU3RlYWR5IFN0YXRlCisgICAgICAgICAgICAgICAgQWlyICAgICAg
ICAgIDUyLjA5IG1zICstIDYuODkgbXMgICAgMjkuNTkgbXMgKy0gMy4xNiBtcyAgICAyMjM5Ljkw
IG1zICstIDU0LjYwIG1zCisgICAgICAgICAgICAgICAgQmFzaWMgICAgICAgIDI5LjI4IG1zICst
IDEuNDYgbXMgICAgMTYuMjYgbXMgKy0gMC42NiBtcyAgICAyMDI1LjE1IG1zICstIDM4LjU2IG1z
CisKKyAgICAgICAgWzFdOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTU5MjgxCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJ1aWx0aW5zL0dlbmVy
YXRvclByb3RvdHlwZS5qczoKKyAgICAgICAgKGdsb2JhbFByaXZhdGUuZ2VuZXJhdG9yUmVzdW1l
KToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suY3BwOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUJhc2ljQmxvY2s6OmNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzSW50ZXJu
YWwpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUJhc2ljQmxvY2s6OmNvbXB1dGVCeXRlY29kZUJh
c2ljQmxvY2tzKToKKyAgICAgICAgKEpTQzo6aXNCcmFuY2gpOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjppc1VuY29uZGl0aW9uYWxCcmFuY2gpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjppc1Rl
cm1pbmFsKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6aXNUaHJvdyk6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OmxpbmtCbG9ja3MpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpjb21wdXRlQnl0
ZWNvZGVCYXNpY0Jsb2Nrcyk6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVC
YXNpY0Jsb2NrLmg6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlQmFzaWNCbG9jazo6Ynl0ZWNvZGVP
ZmZzZXRzKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVCYXNpY0Jsb2NrOjpzdWNjZXNzb3JzKToK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVCYXNpY0Jsb2NrOjppbmRleCk6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlQmFzaWNCbG9jazo6YWRkU3VjY2Vzc29yKToKKyAgICAgICAgKiBieXRlY29kZS9C
eXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpCeXRl
Y29kZUdlbmVyYXRvcmlmaWNhdGlvbjo6Qnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24pOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbjo6Z3JhcGgpOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbjo6eWllbGRzKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb246OmVudGVyUG9pbnQpOgorICAgICAgICAoSlNDOjpC
eXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbjo6c3RvcmFnZUZvckdlbmVyYXRvckxvY2FsKToKKyAg
ICAgICAgKEpTQzo6R2VuZXJhdG9yTGl2ZW5lc3NBbmFseXNpczo6R2VuZXJhdG9yTGl2ZW5lc3NB
bmFseXNpcyk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1
dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JMaXZlbmVz
c0FuYWx5c2lzOjpjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6
R2VuZXJhdG9yTGl2ZW5lc3NBbmFseXNpczo6cnVuKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVH
ZW5lcmF0b3JpZmljYXRpb246OnJ1bik6CisgICAgICAgIChKU0M6OnBlcmZvcm1HZW5lcmF0b3Jp
ZmljYXRpb24pOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9u
Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxp
dmVuZXNzQW5hbHlzaXNJbmxpbmVzLmguCisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVHcmFw
aC5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHcmFwaDo6Y29kZUJsb2NrKToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVHcmFwaDo6aW5zdHJ1Y3Rpb25zKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHcmFwaDo6YmFzaWNCbG9ja3NJblJldmVyc2VPcmRlcik6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlR3JhcGg6OmJsb2NrQ29udGFpbnNCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlR3JhcGg6OmZpbmRCYXNpY0Jsb2NrRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUdyYXBoOjpmaW5kQmFzaWNCbG9ja1dpdGhMZWFkZXJPZmZzZXQp
OgorICAgICAgICAoSlNDOjpCeXRlY29kZUdyYXBoOjpzaXplKToKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVHcmFwaDo6YXQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdyYXBoOjpvcGVyYXRvcltd
KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHcmFwaDo6YmVnaW4pOgorICAgICAgICAoSlNDOjpC
eXRlY29kZUdyYXBoOjplbmQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdyYXBoOjpmaXJzdCk6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR3JhcGg6Omxhc3QpOgorICAgICAgICAoSlNDOjpCeXRl
Y29kZUdyYXBoPEJsb2NrPjo6Qnl0ZWNvZGVHcmFwaCk6CisgICAgICAgICogYnl0ZWNvZGUvQnl0
ZWNvZGVMaXN0Lmpzb246CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5
c2lzLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpCeXRlY29k
ZUxpdmVuZXNzQW5hbHlzaXMpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlz
aXM6OmNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmdldExpdmVuZXNzSW5mb0F0Qnl0ZWNv
ZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1
dGVGdWxsTGl2ZW5lc3MpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6
OmNvbXB1dGVLaWxscyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6
ZHVtcFJlc3VsdHMpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmNv
bXB1dGUpOgorICAgICAgICAoSlNDOjppc1ZhbGlkUmVnaXN0ZXJGb3JMaXZlbmVzcyk6IERlbGV0
ZWQuCisgICAgICAgIChKU0M6OmdldExlYWRlck9mZnNldEZvckJhc2ljQmxvY2spOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpmaW5kQmFzaWNCbG9ja1dpdGhMZWFkZXJPZmZzZXQpOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpibG9ja0NvbnRhaW5zQnl0ZWNvZGVPZmZzZXQpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpmaW5kQmFzaWNCbG9ja0ZvckJ5dGVjb2RlT2Zmc2V0KTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6c3RlcE92ZXJJbnN0cnVjdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OmNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQnl0ZWNvZGVPZmZzZXQpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJsb2NrKTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpydW5MaXZlbmVzc0ZpeHBvaW50KTog
RGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuaDoK
KyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNJbmxpbmVzLmg6Cisg
ICAgICAgIChKU0M6OmlzVmFsaWRSZWdpc3RlckZvckxpdmVuZXNzKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0aW9uPERlcml2ZWRBbmFseXNpcz46OnN0ZXBPdmVySW5z
dHJ1Y3Rpb24pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzUHJvcGFnYXRpb248RGVy
aXZlZEFuYWx5c2lzPjo6Y29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCeXRlY29kZU9mZnNldCk6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlTGl2ZW5lc3NQcm9wYWdhdGlvbjxEZXJpdmVkQW5hbHlzaXM+
Ojpjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJsb2NrKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVM
aXZlbmVzc1Byb3BhZ2F0aW9uPERlcml2ZWRBbmFseXNpcz46OmdldExpdmVuZXNzSW5mb0F0Qnl0
ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzUHJvcGFnYXRpb248
RGVyaXZlZEFuYWx5c2lzPjo6cnVuTGl2ZW5lc3NGaXhwb2ludCk6CisgICAgICAgICogYnl0ZWNv
ZGUvQnl0ZWNvZGVSZXdyaXRlci5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpCeXRlY29kZVJl
d3JpdGVyOjphcHBseU1vZGlmaWNhdGlvbik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlUmV3cml0
ZXI6OmV4ZWN1dGUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZVJld3JpdGVyOjphZGp1c3RKdW1w
VGFyZ2V0cyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlUmV3cml0ZXI6Omluc2VydEltcGwpOgor
ICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlUmV3cml0ZXIuaDogQWRkZWQuCisgICAgICAgIChK
U0M6OkJ5dGVjb2RlUmV3cml0ZXI6Okluc2VydGlvblBvaW50OjpJbnNlcnRpb25Qb2ludCk6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlUmV3cml0ZXI6Okluc2VydGlvblBvaW50OjpvcGVyYXRvcjwp
OgorICAgICAgICAoSlNDOjpCeXRlY29kZVJld3JpdGVyOjpJbnNlcnRpb246Omxlbmd0aCk6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlUmV3cml0ZXI6OkZyYWdtZW50OjpGcmFnbWVudCk6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlUmV3cml0ZXI6OkZyYWdtZW50OjphcHBlbmRJbnN0cnVjdGlvbik6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlUmV3cml0ZXI6OkJ5dGVjb2RlUmV3cml0ZXIpOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZVJld3JpdGVyOjppbnNlcnRGcmFnbWVudEJlZm9yZSk6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlUmV3cml0ZXI6Omluc2VydEZyYWdtZW50QWZ0ZXIpOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZVJld3JpdGVyOjpyZW1vdmVCeXRlY29kZSk6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlUmV3cml0ZXI6OmdyYXBoKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVSZXdyaXRl
cjo6YWRqdXN0T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVSZXdyaXRlcjo6YWRqdXN0
T2Zmc2V0V2l0aEluc2VydGlvbnMpOgorICAgICAgICAoSlNDOjpCeXRlY29kZVJld3JpdGVyOjpj
YWxjdWxhdGVEaWZmZXJlbmNlKToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZVVzZURlZi5o
OgorICAgICAgICAoSlNDOjpjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAg
KEpTQzo6Y29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgICogYnl0ZWNvZGUv
Q29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUpOgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6
Q29kZUJsb2NrOjpoYW5kbGVyRm9ySW5kZXgpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnNo
cmlua1RvRml0KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjp2YWx1ZVByb2ZpbGVGb3JCeXRl
Y29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bGl2ZW5lc3NBbmFseXNpc1Ns
b3cpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpDb2Rl
QmxvY2s6OmlzQ29uc3RhbnRSZWdpc3RlckluZGV4KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
OjpsaXZlbmVzc0FuYWx5c2lzKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpsaXZlQ2FsbGVl
TG9jYWxzQXRZaWVsZCk6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUvSGFuZGxlckluZm8u
aDoKKyAgICAgICAgKEpTQzo6SGFuZGxlckluZm9CYXNlOjpoYW5kbGVyRm9ySW5kZXgpOgorICAg
ICAgICAqIGJ5dGVjb2RlL09wY29kZS5oOgorICAgICAgICAoSlNDOjppc0JyYW5jaCk6CisgICAg
ICAgIChKU0M6OmlzVW5jb25kaXRpb25hbEJyYW5jaCk6CisgICAgICAgIChKU0M6OmlzVGVybWlu
YWwpOgorICAgICAgICAoSlNDOjppc1Rocm93KToKKyAgICAgICAgKiBieXRlY29kZS9QcmVjaXNl
SnVtcFRhcmdldHMuY3BwOgorICAgICAgICAoSlNDOjpnZXRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2Rl
T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0c0ludGVybmFs
KToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyk6CisgICAgICAgIChK
U0M6OnJlY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyk6CisgICAgICAgIChKU0M6OmZpbmRKdW1w
VGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKiBieXRlY29kZS9QcmVjaXNlSnVt
cFRhcmdldHMuaDoKKyAgICAgICAgKiBieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHNJbmxpbmVz
Lmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpleHRyYWN0U3RvcmVkSnVtcFRhcmdldHNGb3JCeXRl
Y29kZU9mZnNldCk6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwOgor
ICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6aGFuZGxlckZvckJ5dGVjb2RlT2Zmc2V0
KToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OmhhbmRsZXJGb3JJbmRleCk6Cisg
ICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjphcHBseU1vZGlmaWNhdGlvbik6CisgICAg
ICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6VW5saW5r
ZWRTdHJpbmdKdW1wVGFibGU6Om9mZnNldEZvclZhbHVlKToKKyAgICAgICAgKEpTQzo6VW5saW5r
ZWRDb2RlQmxvY2s6Om51bUNhbGxlZUxvY2Fscyk6CisgICAgICAgICogYnl0ZWNvZGUvVmlydHVh
bFJlZ2lzdGVyLmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNw
cDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKToKKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDb21wbGV4UG9wU2NvcGVzKToKKyAgICAgICAgKEpT
Qzo6cHJlcGFyZUp1bXBUYWJsZUZvclN0cmluZ1N3aXRjaCk6CisgICAgICAgIChKU0M6OkJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0WWllbGRQb2ludCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0U2F2ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0UmVzdW1lKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXRHZW5lcmF0b3JTdGF0ZUxhYmVsKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVHZW5lcmF0b3I6OmJlZ2luR2VuZXJhdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVuZEdlbmVyYXRvcik6IERlbGV0ZWQuCisgICAgICAgICogYnl0
ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2Vu
ZXJhdG9yOjpnZW5lcmF0b3JTdGF0ZVJlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVH
ZW5lcmF0b3I6OmdlbmVyYXRvclZhbHVlUmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUdlbmVyYXRvcjo6Z2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRvckZyYW1lUmVnaXN0ZXIpOgorICAgICAgICAqIGJ5
dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpGdW5jdGlvbk5vZGU6
OmVtaXRCeXRlY29kZSk6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuY3BwOgorICAgICAg
ICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpTQzo6ZmluZEV4Y2Vw
dGlvbkhhbmRsZXIpOgorICAgICAgICAoSlNDOjpHZXRDYXRjaEhhbmRsZXJGdW5jdG9yOjpvcGVy
YXRvcigpKToKKyAgICAgICAgKEpTQzo6VW53aW5kRnVuY3Rvcjo6b3BlcmF0b3IoKSk6CisgICAg
ICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaDoKKyAgICAgICAgKiBpbnRlcnByZXRlci9J
bnRlcnByZXRlcklubGluZXMuaDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5oLgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6
Z2V0T3Bjb2RlSUQpOgorICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6
OnByaXZhdGVDb21waWxlTWFpblBhc3MpOgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAg
KiBqaXQvSklUT3Bjb2Rlcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9zYXZlKTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3Jlc3VtZSk6IERlbGV0ZWQuCisg
ICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc206CisgICAgICAgICogcGFyc2Vy
L1BhcnNlci5jcHA6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUlubmVy
KToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlR2VuZXJhdG9yRnVuY3Rp
b25Tb3VyY2VFbGVtZW50cyk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpjcmVh
dGVHZW5lcmF0b3JQYXJhbWV0ZXJzKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmg6CisgICAg
ICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpTTE9XX1BB
VEhfREVDTCk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuaDoK
KyAgICAgICAgKiBydW50aW1lL0dlbmVyYXRvckZyYW1lLmNwcDogUmVtb3ZlZC4KKyAgICAgICAg
KEpTQzo6R2VuZXJhdG9yRnJhbWU6OkdlbmVyYXRvckZyYW1lKTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6R2VuZXJhdG9yRnJhbWU6OmZpbmlzaENyZWF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6R2VuZXJhdG9yRnJhbWU6OmNyZWF0ZVN0cnVjdHVyZSk6IERlbGV0ZWQuCisgICAgICAg
IChKU0M6OkdlbmVyYXRvckZyYW1lOjpjcmVhdGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpH
ZW5lcmF0b3JGcmFtZTo6c2F2ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkdlbmVyYXRvckZy
YW1lOjpyZXN1bWUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6dmlz
aXRDaGlsZHJlbik6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9HZW5lcmF0b3JGcmFtZS5o
OiBSZW1vdmVkLgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6bG9jYWxzKTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OmxvY2FsQXQpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6b2Zmc2V0T2ZMb2NhbHMpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6YWxsb2NhdGlvblNpemVGb3JMb2NhbHMpOiBEZWxl
dGVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNHZW5lcmF0b3JGdW5jdGlvbi5oOgorICAgICAgICAq
IHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6Vk0pOgorICAgICAgICAqIHJ1bnRp
bWUvVk0uaDoKKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEphdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYnVpbHRpbnMvR2Vu
ZXJhdG9yUHJvdG90eXBlLmpzOgorICAgICAgICAoZ2xvYmFsUHJpdmF0ZS5nZW5lcmF0b3JSZXN1
bWUpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5jcHA6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlQmFzaWNCbG9jazo6Y29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3NJbnRl
cm5hbCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlQmFzaWNCbG9jazo6Y29tcHV0ZUJ5dGVjb2Rl
QmFzaWNCbG9ja3MpOgorICAgICAgICAoSlNDOjppc0JyYW5jaCk6IERlbGV0ZWQuCisgICAgICAg
IChKU0M6OmlzVW5jb25kaXRpb25hbEJyYW5jaCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Omlz
VGVybWluYWwpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjppc1Rocm93KTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6bGlua0Jsb2Nrcyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OmNvbXB1dGVC
eXRlY29kZUJhc2ljQmxvY2tzKTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29k
ZUJhc2ljQmxvY2suaDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVCYXNpY0Jsb2NrOjpieXRlY29k
ZU9mZnNldHMpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUJhc2ljQmxvY2s6OnN1Y2Nlc3NvcnMp
OgorICAgICAgICAoSlNDOjpCeXRlY29kZUJhc2ljQmxvY2s6OmluZGV4KToKKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVCYXNpY0Jsb2NrOjphZGRTdWNjZXNzb3IpOgorICAgICAgICAqIGJ5dGVjb2Rl
L0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkJ5
dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uOjpCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbik6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uOjpncmFwaCk6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uOjp5aWVsZHMpOgorICAgICAgICAoSlND
OjpCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbjo6ZW50ZXJQb2ludCk6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uOjpzdG9yYWdlRm9yR2VuZXJhdG9yTG9jYWwpOgor
ICAgICAgICAoSlNDOjpHZW5lcmF0b3JMaXZlbmVzc0FuYWx5c2lzOjpHZW5lcmF0b3JMaXZlbmVz
c0FuYWx5c2lzKToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yTGl2ZW5lc3NBbmFseXNpczo6Y29t
cHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckxpdmVu
ZXNzQW5hbHlzaXM6OmNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlND
OjpHZW5lcmF0b3JMaXZlbmVzc0FuYWx5c2lzOjpydW4pOgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUdlbmVyYXRvcmlmaWNhdGlvbjo6cnVuKToKKyAgICAgICAgKEpTQzo6cGVyZm9ybUdlbmVyYXRv
cmlmaWNhdGlvbik6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRp
b24uaDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
TGl2ZW5lc3NBbmFseXNpc0lubGluZXMuaC4KKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUdy
YXBoLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpCeXRlY29kZUdyYXBoOjpjb2RlQmxvY2spOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdyYXBoOjppbnN0cnVjdGlvbnMpOgorICAgICAgICAoSlND
OjpCeXRlY29kZUdyYXBoOjpiYXNpY0Jsb2Nrc0luUmV2ZXJzZU9yZGVyKToKKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVHcmFwaDo6YmxvY2tDb250YWluc0J5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHcmFwaDo6ZmluZEJhc2ljQmxvY2tGb3JCeXRlY29kZU9mZnNldCk6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR3JhcGg6OmZpbmRCYXNpY0Jsb2NrV2l0aExlYWRlck9mZnNl
dCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR3JhcGg6OnNpemUpOgorICAgICAgICAoSlNDOjpC
eXRlY29kZUdyYXBoOjphdCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR3JhcGg6Om9wZXJhdG9y
W10pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdyYXBoOjpiZWdpbik6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlR3JhcGg6OmVuZCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR3JhcGg6OmZpcnN0
KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHcmFwaDo6bGFzdCk6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlR3JhcGg8QmxvY2s+OjpCeXRlY29kZUdyYXBoKToKKyAgICAgICAgKiBieXRlY29kZS9C
eXRlY29kZUxpc3QuanNvbjoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5h
bHlzaXMuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OkJ5dGVj
b2RlTGl2ZW5lc3NBbmFseXNpcyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlTGl2ZW5lc3NBbmFs
eXNpczo6Y29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OkJ5dGVj
b2RlTGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCk6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Z2V0TGl2ZW5lc3NJbmZvQXRCeXRl
Y29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Y29t
cHV0ZUZ1bGxMaXZlbmVzcyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNp
czo6Y29tcHV0ZUtpbGxzKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lz
OjpkdW1wUmVzdWx0cyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6
Y29tcHV0ZSk6CisgICAgICAgIChKU0M6OmlzVmFsaWRSZWdpc3RlckZvckxpdmVuZXNzKTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6Z2V0TGVhZGVyT2Zmc2V0Rm9yQmFzaWNCbG9jayk6IERlbGV0
ZWQuCisgICAgICAgIChKU0M6OmZpbmRCYXNpY0Jsb2NrV2l0aExlYWRlck9mZnNldCk6IERlbGV0
ZWQuCisgICAgICAgIChKU0M6OmJsb2NrQ29udGFpbnNCeXRlY29kZU9mZnNldCk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OmZpbmRCYXNpY0Jsb2NrRm9yQnl0ZWNvZGVPZmZzZXQpOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpzdGVwT3Zlckluc3RydWN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6Y29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCeXRlY29kZU9mZnNldCk6IERlbGV0ZWQuCisg
ICAgICAgIChKU0M6OmNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQmxvY2spOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OnJ1bkxpdmVuZXNzRml4cG9pbnQp
OiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5o
OgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGluZXMuaDoK
KyAgICAgICAgKEpTQzo6aXNWYWxpZFJlZ2lzdGVyRm9yTGl2ZW5lc3MpOgorICAgICAgICAoSlND
OjpCeXRlY29kZUxpdmVuZXNzUHJvcGFnYXRpb248RGVyaXZlZEFuYWx5c2lzPjo6c3RlcE92ZXJJ
bnN0cnVjdGlvbik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlTGl2ZW5lc3NQcm9wYWdhdGlvbjxE
ZXJpdmVkQW5hbHlzaXM+Ojpjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJ5dGVjb2RlT2Zmc2V0KToK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0aW9uPERlcml2ZWRBbmFseXNp
cz46OmNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQmxvY2spOgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUxpdmVuZXNzUHJvcGFnYXRpb248RGVyaXZlZEFuYWx5c2lzPjo6Z2V0TGl2ZW5lc3NJbmZvQXRC
eXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlTGl2ZW5lc3NQcm9wYWdhdGlv
bjxEZXJpdmVkQW5hbHlzaXM+OjpydW5MaXZlbmVzc0ZpeHBvaW50KToKKyAgICAgICAgKiBieXRl
Y29kZS9CeXRlY29kZVJld3JpdGVyLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
UmV3cml0ZXI6OmFwcGx5TW9kaWZpY2F0aW9uKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVSZXdy
aXRlcjo6ZXhlY3V0ZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlUmV3cml0ZXI6OmFkanVzdEp1
bXBUYXJnZXRzSW5GcmFnbWVudCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlUmV3cml0ZXI6Omlu
c2VydEltcGwpOgorICAgICAgICAoSlNDOjpCeXRlY29kZVJld3JpdGVyOjphZGp1c3RKdW1wVGFy
Z2V0KToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZVJld3JpdGVyLmg6IEFkZGVkLgorICAg
ICAgICAoSlNDOjpCeXRlY29kZVJld3JpdGVyOjpJbnNlcnRpb25Qb2ludDo6SW5zZXJ0aW9uUG9p
bnQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZVJld3JpdGVyOjpJbnNlcnRpb25Qb2ludDo6b3Bl
cmF0b3I8KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVSZXdyaXRlcjo6SW5zZXJ0aW9uUG9pbnQ6
Om9wZXJhdG9yPT0pOgorICAgICAgICAoSlNDOjpCeXRlY29kZVJld3JpdGVyOjpJbnNlcnRpb246
Omxlbmd0aCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlUmV3cml0ZXI6OkZyYWdtZW50OjpGcmFn
bWVudCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlUmV3cml0ZXI6OkZyYWdtZW50OjphcHBlbmRJ
bnN0cnVjdGlvbik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlUmV3cml0ZXI6OkJ5dGVjb2RlUmV3
cml0ZXIpOgorICAgICAgICAoSlNDOjpCeXRlY29kZVJld3JpdGVyOjppbnNlcnRGcmFnbWVudEJl
Zm9yZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlUmV3cml0ZXI6Omluc2VydEZyYWdtZW50QWZ0
ZXIpOgorICAgICAgICAoSlNDOjpCeXRlY29kZVJld3JpdGVyOjpyZW1vdmVCeXRlY29kZSk6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlUmV3cml0ZXI6OmdyYXBoKToKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVSZXdyaXRlcjo6YWRqdXN0QWJzb2x1dGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpCeXRl
Y29kZVJld3JpdGVyOjphZGp1c3RKdW1wVGFyZ2V0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVS
ZXdyaXRlcjo6Y2FsY3VsYXRlRGlmZmVyZW5jZSk6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNv
ZGVVc2VEZWYuaDoKKyAgICAgICAgKEpTQzo6Y29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCk6
CisgICAgICAgIChKU0M6OmNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAq
IGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZHVtcEJ5
dGVjb2RlKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbik6CisgICAg
ICAgIChKU0M6OkNvZGVCbG9jazo6aGFuZGxlckZvckluZGV4KToKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjpzaHJpbmtUb0ZpdCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6dmFsdWVQcm9m
aWxlRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmxpdmVuZXNz
QW5hbHlzaXNTbG93KToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAgICAgICAg
KEpTQzo6Q29kZUJsb2NrOjppc0NvbnN0YW50UmVnaXN0ZXJJbmRleCk6CisgICAgICAgIChKU0M6
OkNvZGVCbG9jazo6bGl2ZW5lc3NBbmFseXNpcyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6
bGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQpOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2RlL0hh
bmRsZXJJbmZvLmg6CisgICAgICAgIChKU0M6OkhhbmRsZXJJbmZvQmFzZTo6aGFuZGxlckZvcklu
ZGV4KToKKyAgICAgICAgKiBieXRlY29kZS9PcGNvZGUuaDoKKyAgICAgICAgKEpTQzo6aXNCcmFu
Y2gpOgorICAgICAgICAoSlNDOjppc1VuY29uZGl0aW9uYWxCcmFuY2gpOgorICAgICAgICAoSlND
Ojppc1Rlcm1pbmFsKToKKyAgICAgICAgKEpTQzo6aXNUaHJvdyk6CisgICAgICAgICogYnl0ZWNv
ZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmNwcDoKKyAgICAgICAgKEpTQzo6Z2V0SnVtcFRhcmdldHNG
b3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OmNvbXB1dGVQcmVjaXNlSnVtcFRhcmdl
dHNJbnRlcm5hbCk6CisgICAgICAgIChKU0M6OmNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMpOgor
ICAgICAgICAoSlNDOjpyZWNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMpOgorICAgICAgICAoSlND
OjpmaW5kSnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgICogYnl0ZWNvZGUv
UHJlY2lzZUp1bXBUYXJnZXRzLmg6CisgICAgICAgICogYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJn
ZXRzSW5saW5lcy5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6ZXh0cmFjdFN0b3JlZEp1bXBUYXJn
ZXRzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJs
b2NrLmNwcDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OmhhbmRsZXJGb3JCeXRl
Y29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjpoYW5kbGVyRm9y
SW5kZXgpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6YXBwbHlNb2RpZmljYXRp
b24pOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmg6CisgICAgICAgIChK
U0M6OlVubGlua2VkU3RyaW5nSnVtcFRhYmxlOjpvZmZzZXRGb3JWYWx1ZSk6CisgICAgICAgIChK
U0M6OlVubGlua2VkQ29kZUJsb2NrOjpudW1DYWxsZWVMb2NhbHMpOgorICAgICAgICAqIGJ5dGVj
b2RlL1ZpcnR1YWxSZWdpc3Rlci5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdl
bmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZSk6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcik6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q29tcGxleFBvcFNjb3Blcyk6Cisg
ICAgICAgIChKU0M6OnByZXBhcmVKdW1wVGFibGVGb3JTdHJpbmdTd2l0Y2gpOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFlpZWxkUG9pbnQpOgorICAgICAgICAoSlNDOjpC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdFNhdmUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCeXRl
Y29kZUdlbmVyYXRvcjo6ZW1pdFJlc3VtZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0R2VuZXJhdG9yU3RhdGVMYWJlbCk6IERlbGV0ZWQuCisgICAgICAg
IChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpiZWdpbkdlbmVyYXRvcik6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbmRHZW5lcmF0b3IpOiBEZWxldGVkLgorICAg
ICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpC
eXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdG9yU3RhdGVSZWdpc3Rlcik6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0b3JWYWx1ZVJlZ2lzdGVyKToKKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRvclJlc3VtZU1vZGVSZWdpc3Rlcik6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0b3JGcmFtZVJlZ2lzdGVyKToKKyAg
ICAgICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6RnVu
Y3Rpb25Ob2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNw
cDoKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6
OmZpbmRFeGNlcHRpb25IYW5kbGVyKToKKyAgICAgICAgKEpTQzo6R2V0Q2F0Y2hIYW5kbGVyRnVu
Y3Rvcjo6b3BlcmF0b3IoKSk6CisgICAgICAgIChKU0M6OlVud2luZEZ1bmN0b3I6Om9wZXJhdG9y
KCkpOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmg6CisgICAgICAgICogaW50
ZXJwcmV0ZXIvSW50ZXJwcmV0ZXJJbmxpbmVzLmg6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHMuaC4KKyAgICAgICAgKEpTQzo6SW50
ZXJwcmV0ZXI6OmdldE9wY29kZUlEKToKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAg
KEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKToKKyAgICAgICAgKiBqaXQvSklULmg6
CisgICAgICAgICogaml0L0pJVE9wY29kZXMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRf
b3Bfc2F2ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9yZXN1bWUpOiBE
ZWxldGVkLgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOgorICAgICAg
ICAqIHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6
cGFyc2VJbm5lcik6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUdlbmVy
YXRvckZ1bmN0aW9uU291cmNlRWxlbWVudHMpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJU
eXBlPjo6Y3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyk6CisgICAgICAgICogcGFyc2VyL1BhcnNl
ci5oOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpT
Qzo6U0xPV19QQVRIX0RFQ0wpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xv
d1BhdGhzLmg6CisgICAgICAgICogcnVudGltZS9HZW5lcmF0b3JGcmFtZS5jcHA6IFJlbW92ZWQu
CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpHZW5lcmF0b3JGcmFtZSk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpmaW5pc2hDcmVhdGlvbik6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpjcmVhdGVTdHJ1Y3R1cmUpOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlKTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OnNhdmUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpH
ZW5lcmF0b3JGcmFtZTo6cmVzdW1lKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9y
RnJhbWU6OnZpc2l0Q2hpbGRyZW4pOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJh
dG9yRnJhbWUuaDogUmVtb3ZlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OmxvY2Fs
cyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpsb2NhbEF0KTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6Om9mZnNldE9mTG9jYWxzKTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OmFsbG9jYXRpb25TaXplRm9yTG9j
YWxzKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJhdG9yRnVuY3Rpb24uaDoK
KyAgICAgICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OlZNKToKKyAgICAg
ICAgKiBydW50aW1lL1ZNLmg6CisKIDIwMTYtMDgtMjQgIEJlbmphbWluIFBvdWxhaW4gIDxiZW5q
YW1pbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFtKU0NdIE1ha2UgRlJvdW5kIHdvcmsgd2l0aCBh
bnkgdHlwZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0No
YW5nZUxvZwppbmRleCBiZTA5MDM4ZmNiNDk5MGNkMGEwMTBkMmU4YzBmMDczNjg1NjAzOGZjLi5h
ZWU0NzgxODY2NWE1NDZmNTAzZDAxNWZkM2I1NmQzOGIxMTJhZDRkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEz
IEBACisyMDE2LTA4LTI1ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgor
CisgICAgICAgIFtERkddW0ZUTF0gSW1wbGVtZW50IEVTNiBHZW5lcmF0b3JzIGluIERGRyAvIEZU
TAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUyNzIz
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYv
RmFzdEJpdFZlY3Rvci5oOgorICAgICAgICAoV1RGOjpGYXN0Qml0VmVjdG9yOjpGYXN0Qml0VmVj
dG9yKToKKwogMjAxNi0wOC0yNCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNv
bT4KIAogICAgICAgICBbSlNDXSBNb3ZlIGdlbmVyaWMgZGF0YSBzdHJ1Y3R1cmVzIG91dCBvZiBC
MwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDNlZDU0YjgxNzI2ODE4YTA4
ODRjZGMzMjVjZjE3ZGQyNWIyZWJlNjEuLjNiZWY0MmNmODJhZDBlNzdkODU2NDAxYzkzNzBkZTAx
MzA4NTIzOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4
dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTE4MSw2ICsx
ODEsOCBAQCBzZXQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIGJ5dGVjb2RlL0FycmF5QWxs
b2NhdGlvblByb2ZpbGUuY3BwCiAgICAgYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmNwcAogICAgIGJ5
dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5jcHAKKyAgICBieXRlY29kZS9CeXRlY29kZUdlbmVy
YXRvcmlmaWNhdGlvbi5jcHAKKyAgICBieXRlY29kZS9CeXRlY29kZVJld3JpdGVyLmNwcAogICAg
IGJ5dGVjb2RlL0J5dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuY3BwCiAgICAgYnl0ZWNvZGUvQnl0
ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNwcAogICAgIGJ5dGVjb2RlL0NhbGxFZGdlLmNwcApAQCAt
NjYxLDcgKzY2Myw2IEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgcnVudGltZS9G
dW5jdGlvbkhhc0V4ZWN1dGVkQ2FjaGUuY3BwCiAgICAgcnVudGltZS9GdW5jdGlvblByb3RvdHlw
ZS5jcHAKICAgICBydW50aW1lL0Z1bmN0aW9uUmFyZURhdGEuY3BwCi0gICAgcnVudGltZS9HZW5l
cmF0b3JGcmFtZS5jcHAKICAgICBydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3Iu
Y3BwCiAgICAgcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5jcHAKICAgICBydW50
aW1lL0dlbmVyYXRvclByb3RvdHlwZS5jcHAKQEAgLTk3OSw2ICs5ODAsMTAgQEAgYWRkX2N1c3Rv
bV9jb21tYW5kKAogICAgIENPTU1BTkQgJHtQWVRIT05fRVhFQ1VUQUJMRX0gJHtKQVZBU0NSSVBU
Q09SRV9ESVJ9L2dlbmVyYXRlLWJ5dGVjb2RlLWZpbGVzIC0tYnl0ZWNvZGVzX2ggJHtERVJJVkVE
X1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9CeXRlY29kZXMuaCAtLWluaXRfYnl0ZWNvZGVz
X2FzbSAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0luaXRCeXRlY29kZXMu
YXNtICR7SkFWQVNDUklQVENPUkVfRElSfS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgogICAg
IFZFUkJBVElNKQogCitsaXN0KEFQUEVORCBKYXZhU2NyaXB0Q29yZV9IRUFERVJTCisgICAgJHtE
RVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9CeXRlY29kZXMuaAorKQorCiBhZGRf
Y3VzdG9tX2NvbW1hbmQoCiAgICAgT1VUUFVUICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRD
T1JFX0RJUn0vTExJbnREZXNpcmVkT2Zmc2V0cy5oCiAgICAgTUFJTl9ERVBFTkRFTkNZICR7SkFW
QVNDUklQVENPUkVfRElSfS9vZmZsaW5lYXNtL2dlbmVyYXRlX29mZnNldF9leHRyYWN0b3IucmIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYTFkOTgzZDhmMDA3ZTkwYzM2MmI1OTk1
ZDQ2MGUyOTAzYjIyNTNkNi4uZjM2ZTVhNzBjZGMyZmEwYzdiYzBmOTU3OTBlODdiNDRmMjMyMTVk
ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTExOTgsNyArMTE5OCw3IEBACiAJ
CTUzRjQwRThEMUQ1OTAxRjIwMDk5QTFCNiAvKiBXQVNNUGFyc2VyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1M0Y0MEU4QzFENTkwMUYyMDA5OUExQjYg
LyogV0FTTVBhcnNlci5oICovOyB9OwogCQk1M0Y0MEU4RjFENTkwMjgyMDA5OUExQjYgLyogV0FT
TUIzSVJHZW5lcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTNGNDBFOEUxRDU5MDI4MjAwOTlBMUI2IC8qIFdBU01CM0lSR2VuZXJhdG9yLmNw
cCAqLzsgfTsKIAkJNTNGNDBFOTExRDU5MDMwMjAwOTlBMUI2IC8qIFdBU01PcHMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzRjQwRTkwMUQ1OTAzMDIw
MDk5QTFCNiAvKiBXQVNNT3BzLmggKi87IH07Ci0gICAgICAgICAgICAgICAgNTNGNDBFOTMxRDVB
NEFCMzAwOTlBMUI2IC8qIFdBU01CM0lSR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1M0Y0MEU5MjFENUE0QUIzMDA5OUExQjYgLyogV0FT
TUIzSVJHZW5lcmF0b3IuaCAqLzsgfTsKKwkJNTNGNDBFOTMxRDVBNEFCMzAwOTlBMUI2IC8qIFdB
U01CM0lSR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1M0Y0MEU5MjFENUE0QUIzMDA5OUExQjYgLyogV0FTTUIzSVJHZW5lcmF0b3IuaCAq
LzsgfTsKIAkJNTNGNDBFOTUxRDVBN0FFRjAwOTlBMUI2IC8qIFdBU01Nb2R1bGVQYXJzZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzRjQwRTk0MUQ1
QTdBRUYwMDk5QTFCNiAvKiBXQVNNTW9kdWxlUGFyc2VyLmggKi87IH07CiAJCTUzRjQwRTk3MUQ1
QTdCRUMwMDk5QTFCNiAvKiBXQVNNTW9kdWxlUGFyc2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzRjQwRTk2MUQ1QTdCRUMwMDk5QTFCNiAvKiBX
QVNNTW9kdWxlUGFyc2VyLmNwcCAqLzsgfTsKIAkJNTNGNkJGNkQxQzNGMDYwQTAwRjQxRTVEIC8q
IEludGVybmFsRnVuY3Rpb25BbGxvY2F0aW9uUHJvZmlsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTNGNkJGNkMxQzNGMDYwQTAwRjQxRTVEIC8qIElu
dGVybmFsRnVuY3Rpb25BbGxvY2F0aW9uUHJvZmlsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMjcwLDggKzEyNzAsNiBAQAogCQk3MDlGQjg2
QzFBRTMzNUM2MDAzOUQwNjkgLyogV2Vha1NldFByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzA5RkI4NjYxQUUzMzVDNjAwMzlEMDY5IC8q
IFdlYWtTZXRQcm90b3R5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk3MEIwQTlEMTFBOUI2NjQ2MDAwMTMwNkEgLyogUnVudGltZUZsYWdzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEIwQTlEMDFB
OUI2NjIwMDAwMTMwNkEgLyogUnVudGltZUZsYWdzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzBCNzkxOTExQzAyNEExMzAwMjQ4MUUyIC8qIFNv
dXJjZUNvZGVLZXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDcwQjc5MThFMUMwMjQ0QzkwMDI0ODFFMiAvKiBTb3VyY2VDb2RlS2V5LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNzBCNzkxOTIxQzAyNEEy
MzAwMjQ4MUUyIC8qIEdlbmVyYXRvckZyYW1lLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwQjc5MTgzMUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0
b3JGcmFtZS5jcHAgKi87IH07Ci0JCTcwQjc5MTkzMUMwMjRBMjgwMDI0ODFFMiAvKiBHZW5lcmF0
b3JGcmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NzBCNzkxODQxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZyYW1lLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzBCNzkxOTQxQzAyNEEyODAw
MjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBCNzkxODUxQzAyNDQzMjAwMjQ4MUUy
IC8qIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwICovOyB9OwogCQk3MEI3OTE5NTFD
MDI0QTI4MDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBCNzkxODYxQzAyNDQzMjAw
MjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MEI3OTE5NjFDMDI0QTI4MDAyNDgx
RTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBCNzkxODcxQzAyNDQzMjAwMjQ4MUUyIC8qIEdl
bmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcCAqLzsgfTsKQEAgLTIwNDUsNiArMjA0MywxMSBA
QAogCQlFMThFM0E1OTBERjkyNzhDMDBEOTBCMzQgLyogVk0uY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTE4RTNBNTcwREY5Mjc4QzAwRDkwQjM0IC8q
IFZNLmNwcCAqLzsgfTsKIAkJRTMxOENCQzAxQjhBRUY1MTAwQTI5MjlEIC8qIEpTTW9kdWxlTmFt
ZXNwYWNlT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEUzMThDQkJFMUI4QUVGNTEwMEEyOTI5RCAvKiBKU01vZHVsZU5hbWVzcGFjZU9iamVj
dC5jcHAgKi87IH07CiAJCUUzMThDQkMxMUI4QUVGNTEwMEEyOTI5RCAvKiBKU01vZHVsZU5hbWVz
cGFjZU9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTMxOENCQkYxQjhBRUY1MTAwQTI5MjlEIC8qIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTMyOERB
RTcxRDM4RDAwNDAwMUEyNTI5IC8qIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzRDI2NDI2MUQzOEMw
NDIwMDBCRTE3NCAvKiBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHAgKi87IH07CisJCUUz
MjhEQUU4MUQzOEQwMDUwMDFBMjUyOSAvKiBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNEMjY0MjcxRDM4
QzA0MjAwMEJFMTc0IC8qIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTMyOERBRTkxRDM4RDAwNTAw
MUEyNTI5IC8qIEJ5dGVjb2RlR3JhcGguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEUzRDI2NDI4MUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRlY29kZUdyYXBo
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTMy
OERBRUExRDM4RDAwNTAwMUEyNTI5IC8qIEJ5dGVjb2RlUmV3cml0ZXIuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNEMjY0MjkxRDM4QzA0MjAwMEJF
MTc0IC8qIEJ5dGVjb2RlUmV3cml0ZXIuY3BwICovOyB9OworCQlFMzI4REFFQjFEMzhEMDA1MDAx
QTI1MjkgLyogQnl0ZWNvZGVSZXdyaXRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTNEMjY0MkExRDM4QzA0MjAwMEJFMTc0IC8qIEJ5dGVjb2RlUmV3
cml0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlFMzM2MzdBNTFCNjMyMjAyMDBFRTA4NDAgLyogUmVmbGVjdE9iamVjdC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzM2MzdBMzFCNjMyMjAyMDBF
RTA4NDAgLyogUmVmbGVjdE9iamVjdC5jcHAgKi87IH07CiAJCUUzMzYzN0E2MUI2MzIyMDIwMEVF
MDg0MCAvKiBSZWZsZWN0T2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFMzM2MzdBNDFCNjMyMjAyMDBFRTA4NDAgLyogUmVmbGVjdE9iamVjdC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzM0Iz
RTI2MUI3QUJENzUwMDQ4REIyRSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QubHV0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzNCM0Uy
NTFCN0FCRDc1MDA0OERCMkUgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0Lmx1dC5o
ICovOyB9OwpAQCAtMjA2OSw4ICsyMDcyLDEwIEBACiAJCUUzNzk0RTc1MUI3N0VCOTcwMDU1NDNB
RSAvKiBNb2R1bGVBbmFseXplci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFMzc5NEU3MzFCNzdFQjk3MDA1NTQzQUUgLyogTW9kdWxlQW5hbHl6ZXIu
Y3BwICovOyB9OwogCQlFMzc5NEU3NjFCNzdFQjk3MDA1NTQzQUUgLyogTW9kdWxlQW5hbHl6ZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNzk0RTc0
MUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFseXplci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzOTYzQ0VFMUI3M0Y3NTAwMEVCNENFNSAv
KiBOb2Rlc0FuYWx5emVNb2R1bGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTM5NjNDRUMxQjczRjc1MDAwRUI0Q0U1IC8qIE5vZGVzQW5hbHl6ZU1v
ZHVsZS5jcHAgKi87IH07CisJCUUzOUQ0NUY1MUQzOTAwNTYwMEIzQjM3NyAvKiBJbnRlcnByZXRl
cklubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUzOUQ5RDg0MUQzOTAwMDYwMDY2NzI4MiAvKiBJbnRlcnByZXRlcklubGluZXMuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzlEQTRBNjFCN0U4
QjdDMDA4NEYzM0EgLyogSlNNb2R1bGVSZWNvcmQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5REE0QTQxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9k
dWxlUmVjb3JkLmNwcCAqLzsgfTsKIAkJRTM5REE0QTcxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9k
dWxlUmVjb3JkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFMzlEQTRBNTFCN0U4QjdDMDA4NEYzM0EgLyogSlNNb2R1bGVSZWNvcmQuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFM0E0MjE0MzFENkY1ODkz
MDAwN0M2MTcgLyogUHJlY2lzZUp1bXBUYXJnZXRzSW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNBNDIxNDIxRDZGNTg4RjAwMDdDNjE3IC8q
IFByZWNpc2VKdW1wVGFyZ2V0c0lubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlFM0QyMzlDODFCODI5QzFDMDBCQkVGNjcgLyogSlNNb2R1
bGVFbnZpcm9ubWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFM0QyMzlDNjFCODI5QzFDMDBCQkVGNjcgLyogSlNNb2R1bGVFbnZpcm9ubWVudC5j
cHAgKi87IH07CiAJCUUzRDIzOUM5MUI4MjlDMUMwMEJCRUY2NyAvKiBKU01vZHVsZUVudmlyb25t
ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0Qy
MzlDNzFCODI5QzFDMDBCQkVGNjcgLyogSlNNb2R1bGVFbnZpcm9ubWVudC5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzRUY4ODc0MUI2NkRGMjMw
MDNGMjZDQiAvKiBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzRUY4ODcyMUI2NkRGMjMwMDNGMjZDQiAvKiBK
U1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcCAqLzsgfTsKQEAgLTMzODYsNyArMzM5MSw3IEBACiAJ
CTUzRjQwRThDMUQ1OTAxRjIwMDk5QTFCNiAvKiBXQVNNUGFyc2VyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdBU01QYXJzZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTNGNDBFOEUxRDU5MDI4MjAwOTlBMUI2IC8qIFdBU01CM0lSR2VuZXJhdG9yLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdBU01CM0lSR2VuZXJhdG9yLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTNGNDBFOTAxRDU5MDMwMjAwOTlBMUI2
IC8qIFdBU01PcHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0FTTU9wcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotICAgICAgICAgICAgICAgIDUzRjQwRTkyMUQ1
QTRBQjMwMDk5QTFCNiAvKiBXQVNNQjNJUkdlbmVyYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXQVNNQjNJUkdlbmVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk1M0Y0MEU5MjFENUE0QUIzMDA5OUExQjYgLyogV0FTTUIzSVJHZW5lcmF0b3IuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0FTTUIzSVJHZW5lcmF0b3IuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTNGNDBFOTQxRDVBN0FFRjAwOTlBMUI2IC8qIFdB
U01Nb2R1bGVQYXJzZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0FTTU1v
ZHVsZVBhcnNlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1M0Y0MEU5NjFENUE3
QkVDMDA5OUExQjYgLyogV0FTTU1vZHVsZVBhcnNlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBXQVNNTW9kdWxlUGFyc2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTNGNkJGNkMxQzNGMDYwQTAwRjQxRTVEIC8qIEludGVybmFsRnVuY3Rpb25B
bGxvY2F0aW9uUHJvZmlsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRl
cm5hbEZ1bmN0aW9uQWxsb2NhdGlvblByb2ZpbGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTM0OTIsOCArMzQ5Nyw2IEBACiAJCTcwOUZCODY1MUFFMzM1QzYwMDM5RDA2OSAvKiBX
ZWFrU2V0UHJvdG90eXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdlYWtTZXRQcm90b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MDlG
Qjg2NjFBRTMzNUM2MDAzOUQwNjkgLyogV2Vha1NldFByb3RvdHlwZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXZWFrU2V0UHJvdG90eXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTcwQjBBOUQwMUE5QjY2MjAwMDAxMzA2QSAvKiBSdW50aW1lRmxhZ3MuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUnVudGltZUZsYWdzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTcwQjc5MTgzMUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0
b3JGcmFtZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHZW5lcmF0
b3JGcmFtZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTcwQjc5MTg0MUMwMjQ0
MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGcmFtZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBHZW5lcmF0b3JGcmFtZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
MEI3OTE4NTFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHZW5lcmF0b3JGdW5jdGlv
bkNvbnN0cnVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzBCNzkxODYx
QzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MEI3OTE4NzFDMDI0NDMyMDAyNDgxRTIg
LyogR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtNDMzMywxMCArNDMzNiwxNyBAQAogCQlFMzc5NEU3MzFCNzdF
Qjk3MDA1NTQzQUUgLyogTW9kdWxlQW5hbHl6ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gTW9kdWxlQW5hbHl6ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlFMzc5NEU3NDFCNzdFQjk3MDA1NTQzQUUgLyogTW9kdWxlQW5hbHl6ZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW9kdWxlQW5hbHl6ZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM5NjNDRUMxQjczRjc1MDAwRUI0Q0U1IC8qIE5vZGVzQW5h
bHl6ZU1vZHVsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOb2Rl
c0FuYWx5emVNb2R1bGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzlEOUQ4
NDFEMzkwMDA2MDA2NjcyODIgLyogSW50ZXJwcmV0ZXJJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEludGVycHJldGVySW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlFMzlEQTRBNDFCN0U4QjdDMDA4NEYzM0EgLyogSlNNb2R1bGVSZWNvcmQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNNb2R1bGVSZWNvcmQu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzlEQTRBNTFCN0U4QjdDMDA4NEYz
M0EgLyogSlNNb2R1bGVSZWNvcmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SlNNb2R1bGVSZWNvcmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTNBNDIxNDIx
RDZGNTg4RjAwMDdDNjE3IC8qIFByZWNpc2VKdW1wVGFyZ2V0c0lubGluZXMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJlY2lzZUp1bXBUYXJnZXRzSW5saW5lcy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0QyMzlDNjFCODI5QzFDMDBCQkVGNjcgLyogSlNN
b2R1bGVFbnZpcm9ubWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBKU01vZHVsZUVudmlyb25tZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RTNEMjM5QzcxQjgyOUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxlRW52aXJvbm1lbnQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNNb2R1bGVFbnZpcm9ubWVudC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlFM0QyNjQyNjFEMzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNv
ZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlFM0QyNjQyNzFEMzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNvZGVHZW5lcmF0b3Jp
ZmljYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnl0ZWNvZGVHZW5l
cmF0b3JpZmljYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTNEMjY0Mjgx
RDM4QzA0MjAwMEJFMTc0IC8qIEJ5dGVjb2RlR3JhcGguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQnl0ZWNvZGVHcmFwaC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlFM0QyNjQyOTFEMzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNvZGVSZXdyaXRlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCeXRlY29kZVJld3JpdGVyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTNEMjY0MkExRDM4QzA0MjAwMEJFMTc0IC8qIEJ5
dGVjb2RlUmV3cml0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnl0ZWNv
ZGVSZXdyaXRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0VGODg3MjFCNjZE
RjIzMDAzRjI2Q0IgLyogSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNFRjg4NzMxQjY2REYyMzAwM0YyNkNCIC8qIEpTUHJv
cGVydHlOYW1lSXRlcmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNQ
cm9wZXJ0eU5hbWVJdGVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNDlE
QzE0OTEyRUYyNjFBMDAxODRBMUYgLyogU291cmNlUHJvdmlkZXJDYWNoZUl0ZW0uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU291cmNlUHJvdmlkZXJDYWNoZUl0ZW0uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUwNjMsNiArNTA3Myw3IEBACiAJCTE0MjlENzdB
MEVEMjBENzMwMEI4OTYxOSAvKiBpbnRlcnByZXRlciAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3Vw
OwogCQkJY2hpbGRyZW4gPSAoCisJCQkJRTM5RDlEODQxRDM5MDAwNjAwNjY3MjgyIC8qIEludGVy
cHJldGVySW5saW5lcy5oICovLAogCQkJCTBGNTVGMEYxMTREMTA2MzYwMEFDNzY0OSAvKiBBYnN0
cmFjdFBDLmNwcCAqLywKIAkJCQkwRjU1RjBGMjE0RDEwNjM2MDBBQzc2NDkgLyogQWJzdHJhY3RQ
Qy5oICovLAogCQkJCTE0MjlEODVCMEVEMjE4RTkwMEI4OTYxOSAvKiBDTG9vcFN0YWNrLmNwcCAq
LywKQEAgLTU1NTgsNyArNTU2OSw3IEBACiAJCQkJNTNGNDBFOTAxRDU5MDMwMjAwOTlBMUI2IC8q
IFdBU01PcHMuaCAqLywKIAkJCQk3QkM1NDdEMjFCNjk1OTlCMDA5NTlCNTggLyogV0FTTUZvcm1h
dC5oICovLAogCQkJCTUzRjQwRThFMUQ1OTAyODIwMDk5QTFCNiAvKiBXQVNNQjNJUkdlbmVyYXRv
ci5jcHAgKi8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUzRjQwRTkyMUQ1QTRB
QjMwMDk5QTFCNiAvKiBXQVNNQjNJUkdlbmVyYXRvci5oICovLAorCQkJCTUzRjQwRTkyMUQ1QTRB
QjMwMDk5QTFCNiAvKiBXQVNNQjNJUkdlbmVyYXRvci5oICovLAogCQkJCTUzRjQwRThBMUQ1OTAx
QkIwMDk5QTFCNiAvKiBXQVNNRnVuY3Rpb25QYXJzZXIuaCAqLywKIAkJCQk1M0Y0MEU5NjFENUE3
QkVDMDA5OUExQjYgLyogV0FTTU1vZHVsZVBhcnNlci5jcHAgKi8sCiAJCQkJNTNGNDBFOTQxRDVB
N0FFRjAwOTlBMUI2IC8qIFdBU01Nb2R1bGVQYXJzZXIuaCAqLywKQEAgLTU3NDMsOCArNTc1NCw2
IEBACiAJCQkJRjY5MkE4NUQwMjU1NTk3RDAxRkY2MEY3IC8qIEZ1bmN0aW9uUHJvdG90eXBlLmgg
Ki8sCiAJCQkJNjJEMkQzOEQxQURGMTAzRjAwMDIwNkMxIC8qIEZ1bmN0aW9uUmFyZURhdGEuY3Bw
ICovLAogCQkJCTYyRDJEMzhFMUFERjEwM0YwMDAyMDZDMSAvKiBGdW5jdGlvblJhcmVEYXRhLmgg
Ki8sCi0JCQkJNzBCNzkxODMxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZyYW1lLmNwcCAq
LywKLQkJCQk3MEI3OTE4NDFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnJhbWUuaCAqLywK
IAkJCQk3MEI3OTE4NTFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1
Y3Rvci5jcHAgKi8sCiAJCQkJNzBCNzkxODYxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1
bmN0aW9uQ29uc3RydWN0b3IuaCAqLywKIAkJCQk3MEI3OTE4NzFDMDI0NDMyMDAyNDgxRTIgLyog
R2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3BwICovLApAQCAtNjYzMCw2ICs2NjM5LDEyIEBA
CiAJCTk2OUEwNzhGMEVEMUQzQUUwMEYxRjY4MSAvKiBieXRlY29kZSAqLyA9IHsKIAkJCWlzYSA9
IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJRTNBNDIxNDIxRDZGNTg4RjAwMDdDNjE3
IC8qIFByZWNpc2VKdW1wVGFyZ2V0c0lubGluZXMuaCAqLywKKwkJCQlFM0QyNjQyNjFEMzhDMDQy
MDAwQkUxNzQgLyogQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwICovLAorCQkJCUUzRDI2
NDI3MUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5oICovLAor
CQkJCUUzRDI2NDI4MUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRlY29kZUdyYXBoLmggKi8sCisJCQkJ
RTNEMjY0MjkxRDM4QzA0MjAwMEJFMTc0IC8qIEJ5dGVjb2RlUmV3cml0ZXIuY3BwICovLAorCQkJ
CUUzRDI2NDJBMUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRlY29kZVJld3JpdGVyLmggKi8sCiAJCQkJ
NTM3MEI0RjMxQkYyNUVBMjAwNUM0MEZDIC8qIEFkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVl
V2F0Y2hwb2ludEJhc2UuY3BwICovLAogCQkJCTUzNzBCNEY0MUJGMjVFQTIwMDVDNDBGQyAvKiBB
ZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnRCYXNlLmggKi8sCiAJCQkJMEY4
MzM1QjQxNjM5QzFFMzAwMTQ0M0I1IC8qIEFycmF5QWxsb2NhdGlvblByb2ZpbGUuY3BwICovLApA
QCAtNzE4NCw2ICs3MTk5LDcgQEAKIAkJCQkwRkVDODUyRDFCREFDREFDMDA4MEZGNzQgLyogQjNQ
cm9jZWR1cmVJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVDODVCRDFCRTE0NjJGMDA4
MEZGNzQgLyogQjNSZWR1Y2VTdHJlbmd0aC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQzg1MzEx
QkRBQ0RBQzAwODBGRjc0IC8qIEIzU3RhY2ttYXBTcGVjaWFsLmggaW4gSGVhZGVycyAqLywKKwkJ
CQlFMzI4REFFODFEMzhEMDA1MDAxQTI1MjkgLyogQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24u
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUM4NTM1MUJEQUNEQUMwMDgwRkY3NCAvKiBCM1Nsb3RC
YXNlVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUM4NTM2MUJEQUNEQUMwMDgwRkY3NCAv
KiBCM1N1Y2Nlc3NvckNvbGxlY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUM4NTM4MUJE
QUNEQUMwMDgwRkY3NCAvKiBCM1N3aXRjaENhc2UuaCBpbiBIZWFkZXJzICovLApAQCAtNzIxNCw2
ICs3MjMwLDcgQEAKIAkJCQk5OURBMDBBOTFCRDU5OTMxMDBGNDU3NUMgLyogYnVpbHRpbnNfZ2Vu
ZXJhdGVfc2VwYXJhdGVfaGVhZGVyLnB5IGluIEhlYWRlcnMgKi8sCiAJCQkJMEYzMzhFMTExQkYw
Mjc2QzAwMTNDODhGIC8qIEIzT3BhcXVlQnlwcm9kdWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlG
RUEwQzQwMzFDREQ3RDFEMDA0ODE5OTEgLyogRnVuY3Rpb25XaGl0ZWxpc3QuaCBpbiBIZWFkZXJz
ICovLAorCQkJCUUzQTQyMTQzMUQ2RjU4OTMwMDA3QzYxNyAvKiBQcmVjaXNlSnVtcFRhcmdldHNJ
bmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk5OURBMDBBQTFCRDU5OTMxMDBGNDU3NUMgLyog
YnVpbHRpbnNfZ2VuZXJhdGVfc2VwYXJhdGVfaW1wbGVtZW50YXRpb24ucHkgaW4gSGVhZGVycyAq
LywKIAkJCQk5OURBMDBBMzFCRDU5OTMxMDBGNDU3NUMgLyogYnVpbHRpbnNfZ2VuZXJhdG9yLnB5
IGluIEhlYWRlcnMgKi8sCiAJCQkJNDEyOTUyNzgxRDJDRjZCQzAwRTc4Qjg5IC8qIGJ1aWx0aW5z
X2dlbmVyYXRlX2ludGVybmFsc193cmFwcGVyX2ltcGxlbWVudGF0aW9uLnB5IGluIEhlYWRlcnMg
Ki8sCkBAIC03NDQ5LDcgKzc0NjYsNiBAQAogCQkJCUE3Mzc4MTBFMTc5OUVBMkUwMDgxNzUzMyAv
KiBERkdOYXR1cmFsTG9vcHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2RUNBM0VBMTMyREVGMUMw
MDJCMkFENyAvKiBERkdOb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkZCOTIxQjE2RDAyRjAx
MDA1NUE1REIgLyogREZHTm9kZUFsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNzBCNzkx
OTMxQzAyNEEyODAwMjQ4MUUyIC8qIEdlbmVyYXRvckZyYW1lLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRkE1ODFCQjE1MEU5NTMwMDBCOUEyRDkgLyogREZHTm9kZUZsYWdzLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjMwMEI3ODE4QUIwNTExMDBBNkQ3MkUgLyogREZHTm9kZU9yaWdpbi5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEZBNTgxQkMxNTBFOTUzMDAwQjlBMkQ5IC8qIERGR05vZGVUeXBlLmgg
aW4gSGVhZGVycyAqLywKQEAgLTc0NjQsNiArNzQ4MCw3IEBACiAJCQkJMEZEOEEzMjYxN0Q1MUY1
NzAwQ0EyQzQwIC8qIERGR09TUkVudHJ5cG9pbnRDcmVhdGlvblBoYXNlLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRkMwOTc2QTE0NjhBNkY3MDBDRjI0NDIgLyogREZHT1NSRXhpdC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEYyMzVCRUMxNzE3OEU3MzAwNjkwQzdGIC8qIERGR09TUkV4aXRCYXNlLmgg
aW4gSGVhZGVycyAqLywKKwkJCQlFMzlENDVGNTFEMzkwMDU2MDBCM0IzNzcgLyogSW50ZXJwcmV0
ZXJJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkZCOTIxQzE2RDAyRjExMDA1NUE1REIg
LyogREZHT1NSRXhpdENvbXBpbGF0aW9uSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDMDk3
NzExNDY5M0FGNTAwQ0YyNDQyIC8qIERGR09TUkV4aXRDb21waWxlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEY3MDI1QUExNzE0QjBGQzAwMzgyQzBFIC8qIERGR09TUkV4aXRDb21waWxlckNvbW1v
bi5oIGluIEhlYWRlcnMgKi8sCkBAIC03NzI2LDYgKzc3NDMsNyBAQAogCQkJCUUzM0IzRTI2MUI3
QUJENzUwMDQ4REIyRSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QubHV0LmggaW4g
SGVhZGVycyAqLywKIAkJCQlBNTMyNDM4QzE4NTY4MzM1MDAyRUQ2OTIgLyogSW5zcGVjdG9yUHJv
dG9jb2xPYmplY3RzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTVEOTNBQzE4NTE0Rjc5MDA0MDBE
RUQgLyogSW5zcGVjdG9yUHJvdG9jb2xUeXBlcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTMyOERB
RUIxRDM4RDAwNTAwMUEyNTI5IC8qIEJ5dGVjb2RlUmV3cml0ZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCUE1MEU0QjYyMTg4MDlERDUwMDY4QTQ2RCAvKiBJbnNwZWN0b3JSdW50aW1lQWdlbnQuaCBp
biBIZWFkZXJzICovLAogCQkJCUE1OTNDRjgzMTg0MDM3NzEwMEJGQ0UyNyAvKiBJbnNwZWN0b3JW
YWx1ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTk2OUEwNzk5MEVEMUQzQUUwMEYxRjY4MSAvKiBJ
bnN0cnVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCkBAIC03ODU3LDYgKzc4NzUsNyBAQAogCQkJCUUz
M0Y1MDgxMUI4NDI5QTQwMDQxMzg1NiAvKiBKU0ludGVybmFsUHJvbWlzZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEY2MTgzMkExQzQ1QkYwNzAwNzI0NTBCIC8qIEFpckNDYWxsaW5nQ29udmVudGlv
bi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTMzRjUwNzkxQjg0MjI1NzAwNDEzODU2IC8qIEpTSW50
ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzMjhEQUU5MUQz
OEQwMDUwMDFBMjUyOSAvKiBCeXRlY29kZUdyYXBoLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMzNG
NTA4NzFCODQ0OUVGMDA0MTM4NTYgLyogSlNJbnRlcm5hbFByb21pc2VDb25zdHJ1Y3Rvci5sdXQu
aCBpbiBIZWFkZXJzICovLAogCQkJCUUzM0Y1MDg1MUI4NDM3QTAwMDQxMzg1NiAvKiBKU0ludGVy
bmFsUHJvbWlzZURlZmVycmVkLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMzNGNTA3NTFCODQyMUMw
MDA0MTM4NTYgLyogSlNJbnRlcm5hbFByb21pc2VQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLApA
QCAtNzk0NSw3ICs3OTY0LDcgQEAKIAkJCQkwRkI1NDY3NzE0RjU5QjVDMDAyQzI5ODkgLyogTGF6
eU9wZXJhbmRWYWx1ZVByb2ZpbGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTk5REEwMEIwMUJENTk5
NEUwMEY0NTc1QyAvKiBsYXp5d3JpdGVyLnB5IGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MzEw
RTE2RjVDRDAwQjM0NDYwIC8qIExleGVyLmggaW4gSGVhZGVycyAqLywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgNTNGNDBFOTMxRDVBNEFCMzAwOTlBMUI2IC8qIFdBU01CM0lSR2Vu
ZXJhdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQk1M0Y0MEU5MzFENUE0QUIzMDA5OUExQjYgLyog
V0FTTUIzSVJHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNTJFMEUxNkZDRTEw
MEIzNDQ2MCAvKiBMZXhlci5sdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCURDRjNENTZCMUNEMjk0
NzIwMDNENUM2NSAvKiBMYXp5Q2xhc3NTdHJ1Y3R1cmVJbmxpbmVzLmggaW4gSGVhZGVycyAqLywK
IAkJCQlGRTE4N0EwMjFCRkJFNTYxMDAzOEJCQ0EgLyogSklUTXVsR2VuZXJhdG9yLmggaW4gSGVh
ZGVycyAqLywKQEAgLTg4MjMsNiArODg0Miw3IEBACiAJCQkJMTQ3RjM5QkQxMDdFQzM3NjAwNDI3
QTQ4IC8qIEFyZ0xpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY3NDNCQUExNkI4ODI0OTAw
OUY5Mjc3IC8qIEFSTTY0RGlzYXNzZW1ibGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2RDNC
MkMzMTAxNTZCREUwMDI4NjVFNyAvKiBBUk1Bc3NlbWJsZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJRTMyOERBRTcxRDM4RDAwNDAwMUEyNTI5IC8qIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9u
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTY1QzAyODUwMTcxNzk1RTIwMDM1MUUzNSAvKiBBUk12
N0Rpc2Fzc2VtYmxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2NUMwMjg1QzE3MTc5NjY4MDAz
NTFFMzUgLyogQVJNdjdET3Bjb2RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGODMzNUI3MTYz
OUMxRTYwMDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcCBpbiBTb3VyY2VzICov
LApAQCAtOTE1OCw2ICs5MTc4LDcgQEAKIAkJCQkwRjI1RjFCMTE4MTYzNUYzMDA1MjJGMzkgLyog
RlRMU2xvd1BhdGhDYWxsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMzM4REYxMUJFOTNBRDEw
MDEzQzg4RiAvKiBCM1N0YWNrbWFwVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyNUYx
QjMxODE2MzVGMzAwNTIyRjM5IC8qIEZUTFNsb3dQYXRoQ2FsbEtleS5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQlFMzI4REFFQTFEMzhEMDA1MDAxQTI1MjkgLyogQnl0ZWNvZGVSZXdyaXRlci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk0MzE5REEwMzFDMUJFNDBBMDAxRDI2MEIgLyogQjNMb3dlck1h
Y3Jvc0FmdGVyT3B0aW1pemF0aW9ucy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkVBMEExNjE3
MDZCQjkwMDBCQjcyMkMgLyogRlRMU3RhdGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyMzVC
RTExNzE3OEUxQzAwNjkwQzdGIC8qIEZUTFRodW5rcy5jcHAgaW4gU291cmNlcyAqLywKQEAgLTk1
NjUsNyArOTU4Niw2IEBACiAJCQkJNzlFRTBCRkYxQjRBRkI4NTAwMDM4NUM5IC8qIFZhcmlhYmxl
RW52aXJvbm1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY2QzczNTAxQUM5Rjk5RjAwQkUx
NjgyIC8qIFZhcmlhYmxlV3JpdGVGaXJlRGV0YWlsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
RTA1MDJDMUFBOTA5NTYwMEQzM0IzMyAvKiBWYXJPZmZzZXQuY3BwIGluIFNvdXJjZXMgKi8sCi0J
CQkJNzBCNzkxOTIxQzAyNEEyMzAwMjQ4MUUyIC8qIEdlbmVyYXRvckZyYW1lLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTBGMjBDMjU5MUE4MDEzQUIwMERBMzIyOSAvKiBWaXJ0dWFsUmVnaXN0ZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTE4RTNBNTkwREY5Mjc4QzAwRDkwQjM0IC8qIFZNLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUZFNTkzMkE3MTgzQzVBMjYwMEExRUNDQyAvKiBWTUVudHJ5
U2NvcGUuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnVpbHRpbnMvR2VuZXJhdG9yUHJvdG90eXBlLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J1aWx0aW5zL0dlbmVyYXRvclByb3RvdHlwZS5qcwppbmRleCAzYzE0MDY4N2RmYzdlMDBlZmU5
MWFlODBiMmFjNjc2ZmE5YmY0OGY0Li40OTlkYmQzOTJlODMxM2RjZGQ4NmVjOGMxNjA1NjlkN2Q2
ZjU0OWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvR2VuZXJh
dG9yUHJvdG90eXBlLmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9HZW5l
cmF0b3JQcm90b3R5cGUuanMKQEAgLTUxLDcgKzUxLDcgQEAgZnVuY3Rpb24gZ2VuZXJhdG9yUmVz
dW1lKGdlbmVyYXRvciwgc2VudFZhbHVlLCByZXN1bWVNb2RlKQogICAgIH0gZWxzZSB7CiAgICAg
ICAgIHRyeSB7CiAgICAgICAgICAgICBnZW5lcmF0b3IuQGdlbmVyYXRvclN0YXRlID0gQEdlbmVy
YXRvclN0YXRlRXhlY3V0aW5nOwotICAgICAgICAgICAgdmFsdWUgPSBnZW5lcmF0b3IuQGdlbmVy
YXRvck5leHQuQGNhbGwoZ2VuZXJhdG9yLkBnZW5lcmF0b3JUaGlzLCBnZW5lcmF0b3IsIHN0YXRl
LCBzZW50VmFsdWUsIHJlc3VtZU1vZGUpOworICAgICAgICAgICAgdmFsdWUgPSBnZW5lcmF0b3Iu
QGdlbmVyYXRvck5leHQuQGNhbGwoZ2VuZXJhdG9yLkBnZW5lcmF0b3JUaGlzLCBnZW5lcmF0b3Is
IHN0YXRlLCBzZW50VmFsdWUsIHJlc3VtZU1vZGUsIGdlbmVyYXRvci5AZ2VuZXJhdG9yRnJhbWUp
OwogICAgICAgICAgICAgaWYgKGdlbmVyYXRvci5AZ2VuZXJhdG9yU3RhdGUgPT09IEBHZW5lcmF0
b3JTdGF0ZUV4ZWN1dGluZykgewogICAgICAgICAgICAgICAgIGdlbmVyYXRvci5AZ2VuZXJhdG9y
U3RhdGUgPSBAR2VuZXJhdG9yU3RhdGVDb21wbGV0ZWQ7CiAgICAgICAgICAgICAgICAgZG9uZSA9
IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVCYXNpY0Jsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZUJhc2ljQmxvY2suY3BwCmluZGV4IDdmMTdjMGVmMTBiNDMzZmFjOGY1OGNiM2I5Y2E1ZDRkMDE1
YmJhMDguLmUyYWI5MjJmMDZjOTg3NTQxMjgyM2M5NmE2NzA5NDgyODQ1MjVmM2MgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2su
Y3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiQnl0ZWNvZGVCYXNpY0Jsb2NrLmgiCiAK
ICNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJJbnRlcnByZXRlcklubGluZXMuaCIK
ICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiUHJlY2lzZUp1bXBUYXJnZXRzLmgi
CiAKQEAgLTM4LDY1ICszOSw2IEBAIHZvaWQgQnl0ZWNvZGVCYXNpY0Jsb2NrOjpzaHJpbmtUb0Zp
dCgpCiAgICAgbV9zdWNjZXNzb3JzLnNocmlua1RvRml0KCk7CiB9CiAKLXN0YXRpYyBib29sIGlz
QnJhbmNoKE9wY29kZUlEIG9wY29kZUlEKQotewotICAgIHN3aXRjaCAob3Bjb2RlSUQpIHsKLSAg
ICBjYXNlIG9wX2ptcDoKLSAgICBjYXNlIG9wX2p0cnVlOgotICAgIGNhc2Ugb3BfamZhbHNlOgot
ICAgIGNhc2Ugb3BfamVxX251bGw6Ci0gICAgY2FzZSBvcF9qbmVxX251bGw6Ci0gICAgY2FzZSBv
cF9qbmVxX3B0cjoKLSAgICBjYXNlIG9wX2psZXNzOgotICAgIGNhc2Ugb3Bfamxlc3NlcToKLSAg
ICBjYXNlIG9wX2pncmVhdGVyOgotICAgIGNhc2Ugb3BfamdyZWF0ZXJlcToKLSAgICBjYXNlIG9w
X2pubGVzczoKLSAgICBjYXNlIG9wX2pubGVzc2VxOgotICAgIGNhc2Ugb3Bfam5ncmVhdGVyOgot
ICAgIGNhc2Ugb3Bfam5ncmVhdGVyZXE6Ci0gICAgY2FzZSBvcF9zd2l0Y2hfaW1tOgotICAgIGNh
c2Ugb3Bfc3dpdGNoX2NoYXI6Ci0gICAgY2FzZSBvcF9zd2l0Y2hfc3RyaW5nOgotICAgIGNhc2Ug
b3Bfc2F2ZToKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIH0KLX0KLQotc3RhdGljIGJvb2wgaXNVbmNvbmRpdGlvbmFsQnJhbmNo
KE9wY29kZUlEIG9wY29kZUlEKQotewotICAgIHN3aXRjaCAob3Bjb2RlSUQpIHsKLSAgICBjYXNl
IG9wX2ptcDoKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIH0KLX0KLQotc3RhdGljIGJvb2wgaXNUZXJtaW5hbChPcGNvZGVJRCBv
cGNvZGVJRCkKLXsKLSAgICBzd2l0Y2ggKG9wY29kZUlEKSB7Ci0gICAgY2FzZSBvcF9yZXQ6Ci0g
ICAgY2FzZSBvcF9lbmQ6Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIGRlZmF1bHQ6Ci0gICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci19Ci0KLXN0YXRpYyBib29sIGlzVGhyb3coT3Bjb2Rl
SUQgb3Bjb2RlSUQpCi17Ci0gICAgc3dpdGNoIChvcGNvZGVJRCkgewotICAgIGNhc2Ugb3BfdGhy
b3c6Ci0gICAgY2FzZSBvcF90aHJvd19zdGF0aWNfZXJyb3I6Ci0gICAgICAgIHJldHVybiB0cnVl
OwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci19Ci0KIHN0YXRp
YyBib29sIGlzSnVtcFRhcmdldChPcGNvZGVJRCBvcGNvZGVJRCwgY29uc3QgVmVjdG9yPHVuc2ln
bmVkLCAzMj4mIGp1bXBUYXJnZXRzLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCkKIHsKICAgICBp
ZiAob3Bjb2RlSUQgPT0gb3BfY2F0Y2gpCkBAIC0xMDUsMTUgKzQ3LDIwIEBAIHN0YXRpYyBib29s
IGlzSnVtcFRhcmdldChPcGNvZGVJRCBvcGNvZGVJRCwgY29uc3QgVmVjdG9yPHVuc2lnbmVkLCAz
Mj4mIGp1bXBUYXJnCiAgICAgcmV0dXJuIHN0ZDo6YmluYXJ5X3NlYXJjaChqdW1wVGFyZ2V0cy5i
ZWdpbigpLCBqdW1wVGFyZ2V0cy5lbmQoKSwgYnl0ZWNvZGVPZmZzZXQpOwogfQogCi1zdGF0aWMg
dm9pZCBsaW5rQmxvY2tzKEJ5dGVjb2RlQmFzaWNCbG9jayogcHJlZGVjZXNzb3IsIEJ5dGVjb2Rl
QmFzaWNCbG9jayogc3VjY2Vzc29yKQotewotICAgIHByZWRlY2Vzc29yLT5hZGRTdWNjZXNzb3Io
c3VjY2Vzc29yKTsKLX0KLQotdm9pZCBjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2NrcyhDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+
PiYgYmFzaWNCbG9ja3MpCit0ZW1wbGF0ZTx0eXBlbmFtZSBCbG9jaywgdHlwZW5hbWUgSW5zdHJ1
Y3Rpb24+Cit2b2lkIEJ5dGVjb2RlQmFzaWNCbG9jazo6Y29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9j
a3NJbnRlcm5hbChCbG9jayogY29kZUJsb2NrLCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVn
aW4sIHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQsIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0
ZWNvZGVCYXNpY0Jsb2NrPj4mIGJhc2ljQmxvY2tzKQogewogICAgIFZlY3Rvcjx1bnNpZ25lZCwg
MzI+IGp1bXBUYXJnZXRzOwotICAgIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMoY29kZUJsb2Nr
LCBqdW1wVGFyZ2V0cyk7CisgICAgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhjb2RlQmxvY2ss
IGluc3RydWN0aW9uc0JlZ2luLCBpbnN0cnVjdGlvbkNvdW50LCBqdW1wVGFyZ2V0cyk7CisKKyAg
ICBhdXRvIGFwcGVuZEJsb2NrID0gWyZdIChzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Js
b2NrPiYmIGJsb2NrKSB7CisgICAgICAgIGJsb2NrLT5tX2luZGV4ID0gYmFzaWNCbG9ja3Muc2l6
ZSgpOworICAgICAgICBiYXNpY0Jsb2Nrcy5hcHBlbmQoV1RGTW92ZShibG9jaykpOworICAgIH07
CisKKyAgICBhdXRvIGxpbmtCbG9ja3MgPSBbJl0gKEJ5dGVjb2RlQmFzaWNCbG9jayogZnJvbSwg
Qnl0ZWNvZGVCYXNpY0Jsb2NrKiB0bykgeworICAgICAgICBmcm9tLT5hZGRTdWNjZXNzb3IodG8p
OworICAgIH07CiAKICAgICAvLyBDcmVhdGUgdGhlIGVudHJ5IGFuZCBleGl0IGJhc2ljIGJsb2Nr
cy4KICAgICBiYXNpY0Jsb2Nrcy5yZXNlcnZlQ2FwYWNpdHkoanVtcFRhcmdldHMuc2l6ZSgpICsg
Mik7CkBAIC0xMjIsMTkgKzY5LDE3IEBAIHZvaWQgY29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3Mo
Q29kZUJsb2NrKiBjb2RlQmxvY2ssIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0CiAgICAgYXV0
byBmaXJzdEJsb2NrID0gc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZUJhc2ljQmxvY2s+KDAsIDAp
OwogICAgIGxpbmtCbG9ja3MoZW50cnkuZ2V0KCksIGZpcnN0QmxvY2suZ2V0KCkpOwogCi0gICAg
YmFzaWNCbG9ja3MuYXBwZW5kKFdURk1vdmUoZW50cnkpKTsKKyAgICBhcHBlbmRCbG9jayhXVEZN
b3ZlKGVudHJ5KSk7CiAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBjdXJyZW50ID0gZmlyc3RCbG9j
ay5nZXQoKTsKLSAgICBiYXNpY0Jsb2Nrcy5hcHBlbmQoV1RGTW92ZShmaXJzdEJsb2NrKSk7Cisg
ICAgYXBwZW5kQmxvY2soV1RGTW92ZShmaXJzdEJsb2NrKSk7CiAKICAgICBhdXRvIGV4aXQgPSBz
dGQ6Om1ha2VfdW5pcXVlPEJ5dGVjb2RlQmFzaWNCbG9jaz4oQnl0ZWNvZGVCYXNpY0Jsb2NrOjpF
eGl0QmxvY2spOwogCiAgICAgYm9vbCBuZXh0SW5zdHJ1Y3Rpb25Jc0xlYWRlciA9IGZhbHNlOwog
CiAgICAgSW50ZXJwcmV0ZXIqIGludGVycHJldGVyID0gY29kZUJsb2NrLT52bSgpLT5pbnRlcnBy
ZXRlcjsKLSAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4gPSBjb2RlQmxvY2stPmlu
c3RydWN0aW9ucygpLmJlZ2luKCk7Ci0gICAgdW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCA9IGNv
ZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpOwogICAgIGZvciAodW5zaWduZWQgYnl0ZWNv
ZGVPZmZzZXQgPSAwOyBieXRlY29kZU9mZnNldCA8IGluc3RydWN0aW9uQ291bnQ7KSB7Ci0gICAg
ICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGluc3RydWN0
aW9uc0JlZ2luW2J5dGVjb2RlT2Zmc2V0XS51Lm9wY29kZSk7CisgICAgICAgIE9wY29kZUlEIG9w
Y29kZUlEID0gaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGluc3RydWN0aW9uc0JlZ2luW2J5dGVj
b2RlT2Zmc2V0XSk7CiAgICAgICAgIHVuc2lnbmVkIG9wY29kZUxlbmd0aCA9IG9wY29kZUxlbmd0
aHNbb3Bjb2RlSURdOwogCiAgICAgICAgIGJvb2wgY3JlYXRlZEJsb2NrID0gZmFsc2U7CkBAIC0x
NDIsNyArODcsNyBAQCB2b2lkIGNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzKENvZGVCbG9jayog
Y29kZUJsb2NrLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dAogICAgICAgICBpZiAoaXNKdW1w
VGFyZ2V0KG9wY29kZUlELCBqdW1wVGFyZ2V0cywgYnl0ZWNvZGVPZmZzZXQpIHx8IG5leHRJbnN0
cnVjdGlvbklzTGVhZGVyKSB7CiAgICAgICAgICAgICBhdXRvIG5ld0Jsb2NrID0gc3RkOjptYWtl
X3VuaXF1ZTxCeXRlY29kZUJhc2ljQmxvY2s+KGJ5dGVjb2RlT2Zmc2V0LCBvcGNvZGVMZW5ndGgp
OwogICAgICAgICAgICAgY3VycmVudCA9IG5ld0Jsb2NrLmdldCgpOwotICAgICAgICAgICAgYmFz
aWNCbG9ja3MuYXBwZW5kKFdURk1vdmUobmV3QmxvY2spKTsKKyAgICAgICAgICAgIGFwcGVuZEJs
b2NrKFdURk1vdmUobmV3QmxvY2spKTsKICAgICAgICAgICAgIGNyZWF0ZWRCbG9jayA9IHRydWU7
CiAgICAgICAgICAgICBuZXh0SW5zdHJ1Y3Rpb25Jc0xlYWRlciA9IGZhbHNlOwogICAgICAgICAg
ICAgYnl0ZWNvZGVPZmZzZXQgKz0gb3Bjb2RlTGVuZ3RoOwpAQCAtMTY5LDggKzExNCw3IEBAIHZv
aWQgY29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFZlY3Rv
cjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0CiAKICAgICAgICAgYm9vbCBmYWxsc1Rocm91Z2ggPSB0cnVl
OyAKICAgICAgICAgZm9yICh1bnNpZ25lZCBieXRlY29kZU9mZnNldCA9IGJsb2NrLT5sZWFkZXJC
eXRlY29kZU9mZnNldCgpOyBieXRlY29kZU9mZnNldCA8IGJsb2NrLT5sZWFkZXJCeXRlY29kZU9m
ZnNldCgpICsgYmxvY2stPnRvdGFsQnl0ZWNvZGVMZW5ndGgoKTspIHsKLSAgICAgICAgICAgIGNv
bnN0IEluc3RydWN0aW9uJiBjdXJyZW50SW5zdHJ1Y3Rpb24gPSBpbnN0cnVjdGlvbnNCZWdpblti
eXRlY29kZU9mZnNldF07Ci0gICAgICAgICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGludGVycHJl
dGVyLT5nZXRPcGNvZGVJRChjdXJyZW50SW5zdHJ1Y3Rpb24udS5vcGNvZGUpOworICAgICAgICAg
ICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rp
b25zQmVnaW5bYnl0ZWNvZGVPZmZzZXRdKTsKICAgICAgICAgICAgIHVuc2lnbmVkIG9wY29kZUxl
bmd0aCA9IG9wY29kZUxlbmd0aHNbb3Bjb2RlSURdOwogICAgICAgICAgICAgLy8gSWYgd2UgZm91
bmQgYSB0ZXJtaW5hbCBieXRlY29kZSwgbGluayB0byB0aGUgZXhpdCBibG9jay4KICAgICAgICAg
ICAgIGlmIChpc1Rlcm1pbmFsKG9wY29kZUlEKSkgewpAQCAtMTg1LDcgKzEyOSw3IEBAIHZvaWQg
Y29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFZlY3Rvcjxz
dGQ6OnVuaXF1ZV9wdHI8Qnl0CiAgICAgICAgICAgICAvLyBibG9jayBiZWNhdXNlIHRoZSBmaW5h
bGx5IGJsb2NrIHdpbGwgY3JlYXRlIGl0cyBvd24gY2F0Y2gsIHdoaWNoIHdpbGwgZ2VuZXJhdGUg
YSBIYW5kbGVySW5mby4KICAgICAgICAgICAgIGlmIChpc1Rocm93KG9wY29kZUlEKSkgewogICAg
ICAgICAgICAgICAgIEFTU0VSVChieXRlY29kZU9mZnNldCArIG9wY29kZUxlbmd0aCA9PSBibG9j
ay0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKSArIGJsb2NrLT50b3RhbEJ5dGVjb2RlTGVuZ3RoKCkp
OwotICAgICAgICAgICAgICAgIEhhbmRsZXJJbmZvKiBoYW5kbGVyID0gY29kZUJsb2NrLT5oYW5k
bGVyRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpOworICAgICAgICAgICAgICAgIGF1
dG8qIGhhbmRsZXIgPSBjb2RlQmxvY2stPmhhbmRsZXJGb3JCeXRlY29kZU9mZnNldChieXRlY29k
ZU9mZnNldCk7CiAgICAgICAgICAgICAgICAgZmFsbHNUaHJvdWdoID0gZmFsc2U7CiAgICAgICAg
ICAgICAgICAgaWYgKCFoYW5kbGVyKSB7CiAgICAgICAgICAgICAgICAgICAgIGxpbmtCbG9ja3Mo
YmxvY2ssIGV4aXQuZ2V0KCkpOwpAQCAtMjA1LDcgKzE0OSw3IEBAIHZvaWQgY29tcHV0ZUJ5dGVj
b2RlQmFzaWNCbG9ja3MoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFZlY3RvcjxzdGQ6OnVuaXF1ZV9w
dHI8Qnl0CiAgICAgICAgICAgICBpZiAoaXNCcmFuY2gob3Bjb2RlSUQpKSB7CiAgICAgICAgICAg
ICAgICAgQVNTRVJUKGJ5dGVjb2RlT2Zmc2V0ICsgb3Bjb2RlTGVuZ3RoID09IGJsb2NrLT5sZWFk
ZXJCeXRlY29kZU9mZnNldCgpICsgYmxvY2stPnRvdGFsQnl0ZWNvZGVMZW5ndGgoKSk7CiAgICAg
ICAgICAgICAgICAgVmVjdG9yPHVuc2lnbmVkLCAxPiBieXRlY29kZU9mZnNldHNKdW1wZWRUbzsK
LSAgICAgICAgICAgICAgICBmaW5kSnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChjb2RlQmxv
Y2ssIGJ5dGVjb2RlT2Zmc2V0LCBieXRlY29kZU9mZnNldHNKdW1wZWRUbyk7CisgICAgICAgICAg
ICAgICAgZmluZEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoY29kZUJsb2NrLCBpbnN0cnVj
dGlvbnNCZWdpbiwgYnl0ZWNvZGVPZmZzZXQsIGJ5dGVjb2RlT2Zmc2V0c0p1bXBlZFRvKTsKIAog
ICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBiYXNpY0Jsb2Nrcy5zaXpl
KCk7IGkrKykgewogICAgICAgICAgICAgICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIG90aGVy
QmxvY2sgPSBiYXNpY0Jsb2Nrc1tpXS5nZXQoKTsKQEAgLTIyOSwxMCArMTczLDIwIEBAIHZvaWQg
Y29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFZlY3Rvcjxz
dGQ6OnVuaXF1ZV9wdHI8Qnl0CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBiYXNpY0Jsb2Nrcy5h
cHBlbmQoV1RGTW92ZShleGl0KSk7CisgICAgYXBwZW5kQmxvY2soV1RGTW92ZShleGl0KSk7CiAg
ICAgCiAgICAgZm9yIChhdXRvJiBiYXNpY0Jsb2NrIDogYmFzaWNCbG9ja3MpCiAgICAgICAgIGJh
c2ljQmxvY2stPnNocmlua1RvRml0KCk7CiB9CiAKK3ZvaWQgQnl0ZWNvZGVCYXNpY0Jsb2NrOjpj
b21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2NrcyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgSW5zdHJ1Y3Rp
b24qIGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50LCBWZWN0b3I8
c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+JiBiYXNpY0Jsb2NrcykKK3sKKyAg
ICBjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2Nrc0ludGVybmFsKGNvZGVCbG9jaywgaW5zdHJ1Y3Rp
b25zQmVnaW4sIGluc3RydWN0aW9uQ291bnQsIGJhc2ljQmxvY2tzKTsKK30KKwordm9pZCBCeXRl
Y29kZUJhc2ljQmxvY2s6OmNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzKFVubGlua2VkQ29kZUJs
b2NrKiBjb2RlQmxvY2ssIFVubGlua2VkSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1
bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50LCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2Rl
QmFzaWNCbG9jaz4+JiBiYXNpY0Jsb2NrcykKK3sKKyAgICBCeXRlY29kZUJhc2ljQmxvY2s6OmNv
bXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzSW50ZXJuYWwoY29kZUJsb2NrLCBpbnN0cnVjdGlvbnNC
ZWdpbiwgaW5zdHJ1Y3Rpb25Db3VudCwgYmFzaWNCbG9ja3MpOworfQorCiB9IC8vIG5hbWVzcGFj
ZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZUJhc2ljQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJh
c2ljQmxvY2suaAppbmRleCBjZDcxNDc3ZWQ1MDZhYTc4ODAyMTY1ZmFjZGI3YTZkNDZmMzhkYzJh
Li43ZjE4NGY0Nzc2MjBhY2FkNzQ1MTNhMDUwODJkNTc4MjJkZmQ4NTIyIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5oCkBAIC0z
Myw2ICszMyw5IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgQ29kZUJsb2NrOworY2xhc3Mg
VW5saW5rZWRDb2RlQmxvY2s7CitzdHJ1Y3QgSW5zdHJ1Y3Rpb247CitzdHJ1Y3QgVW5saW5rZWRJ
bnN0cnVjdGlvbjsKIAogY2xhc3MgQnl0ZWNvZGVCYXNpY0Jsb2NrIHsKICAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKQEAgLTQ4LDE4ICs1MSwyOCBAQCBjbGFzcyBCeXRlY29kZUJhc2ljQmxv
Y2sgewogICAgIHVuc2lnbmVkIGxlYWRlckJ5dGVjb2RlT2Zmc2V0KCkgeyByZXR1cm4gbV9sZWFk
ZXJCeXRlY29kZU9mZnNldDsgfQogICAgIHVuc2lnbmVkIHRvdGFsQnl0ZWNvZGVMZW5ndGgoKSB7
IHJldHVybiBtX3RvdGFsQnl0ZWNvZGVMZW5ndGg7IH0KIAotICAgIFZlY3Rvcjx1bnNpZ25lZD4m
IGJ5dGVjb2RlT2Zmc2V0cygpIHsgcmV0dXJuIG1fYnl0ZWNvZGVPZmZzZXRzOyB9Ci0gICAgdm9p
ZCBhZGRCeXRlY29kZUxlbmd0aCh1bnNpZ25lZCk7CisgICAgY29uc3QgVmVjdG9yPHVuc2lnbmVk
PiYgYnl0ZWNvZGVPZmZzZXRzKCkgY29uc3QgeyByZXR1cm4gbV9ieXRlY29kZU9mZnNldHM7IH0K
IAotICAgIFZlY3RvcjxCeXRlY29kZUJhc2ljQmxvY2sqPiYgc3VjY2Vzc29ycygpIHsgcmV0dXJu
IG1fc3VjY2Vzc29yczsgfQotICAgIHZvaWQgYWRkU3VjY2Vzc29yKEJ5dGVjb2RlQmFzaWNCbG9j
ayogYmxvY2spIHsgbV9zdWNjZXNzb3JzLmFwcGVuZChibG9jayk7IH0KKyAgICBjb25zdCBWZWN0
b3I8Qnl0ZWNvZGVCYXNpY0Jsb2NrKj4mIHN1Y2Nlc3NvcnMoKSBjb25zdCB7IHJldHVybiBtX3N1
Y2Nlc3NvcnM7IH0KIAogICAgIEZhc3RCaXRWZWN0b3ImIGluKCkgeyByZXR1cm4gbV9pbjsgfQog
ICAgIEZhc3RCaXRWZWN0b3ImIG91dCgpIHsgcmV0dXJuIG1fb3V0OyB9CiAKKyAgICB1bnNpZ25l
ZCBpbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1faW5kZXg7IH0KKworICAgIHN0YXRpYyB2b2lkIGNv
bXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzKENvZGVCbG9jayosIEluc3RydWN0aW9uKiBpbnN0cnVj
dGlvbnNCZWdpbiwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCwgVmVjdG9yPHN0ZDo6dW5pcXVl
X3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYpOworICAgIHN0YXRpYyB2b2lkIGNvbXB1dGVCeXRl
Y29kZUJhc2ljQmxvY2tzKFVubGlua2VkQ29kZUJsb2NrKiwgVW5saW5rZWRJbnN0cnVjdGlvbiog
aW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQsIFZlY3RvcjxzdGQ6
OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mKTsKKwogcHJpdmF0ZToKKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBCbG9jaywgdHlwZW5hbWUgSW5zdHJ1Y3Rpb24+IHN0YXRpYyB2b2lkIGNv
bXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzSW50ZXJuYWwoQmxvY2sqIGNvZGVCbG9jaywgSW5zdHJ1
Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50LCBWZWN0
b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+JiBiYXNpY0Jsb2Nrcyk7CisK
KyAgICB2b2lkIGFkZFN1Y2Nlc3NvcihCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrKSB7IG1fc3Vj
Y2Vzc29ycy5hcHBlbmQoYmxvY2spOyB9CisKKyAgICB2b2lkIGFkZEJ5dGVjb2RlTGVuZ3RoKHVu
c2lnbmVkKTsKKwogICAgIHVuc2lnbmVkIG1fbGVhZGVyQnl0ZWNvZGVPZmZzZXQ7CiAgICAgdW5z
aWduZWQgbV90b3RhbEJ5dGVjb2RlTGVuZ3RoOworICAgIHVuc2lnbmVkIG1faW5kZXg7CiAKICAg
ICBWZWN0b3I8dW5zaWduZWQ+IG1fYnl0ZWNvZGVPZmZzZXRzOwogICAgIFZlY3RvcjxCeXRlY29k
ZUJhc2ljQmxvY2sqPiBtX3N1Y2Nlc3NvcnM7CkBAIC02OCw4ICs4MSw2IEBAIGNsYXNzIEJ5dGVj
b2RlQmFzaWNCbG9jayB7CiAgICAgRmFzdEJpdFZlY3RvciBtX291dDsKIH07CiAKLXZvaWQgY29t
cHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MoQ29kZUJsb2NrKiwgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0
cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYpOwotCiBpbmxpbmUgQnl0ZWNvZGVCYXNpY0Jsb2NrOjpC
eXRlY29kZUJhc2ljQmxvY2sodW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGxlbmd0aCkKICAgICA6
IG1fbGVhZGVyQnl0ZWNvZGVPZmZzZXQoc3RhcnQpCiAgICAgLCBtX3RvdGFsQnl0ZWNvZGVMZW5n
dGgobGVuZ3RoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWUxYjBhYTYx
ODZmNWMzYzRhOWRmOGMzMmM1YTFkNzZiZjI4ZDE1ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHAK
QEAgLTAsMCArMSwyNjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgWXVzdWtlIFN1enVr
aSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIkJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmgiCisKKyNpbmNsdWRlICJCeXRl
Y29kZUxpdmVuZXNzQW5hbHlzaXNJbmxpbmVzLmgiCisjaW5jbHVkZSAiQnl0ZWNvZGVSZXdyaXRl
ci5oIgorI2luY2x1ZGUgIkJ5dGVjb2RlVXNlRGVmLmgiCisjaW5jbHVkZSAiSWRlbnRpZmllcklu
bGluZXMuaCIKKyNpbmNsdWRlICJJbnRlcnByZXRlcklubGluZXMuaCIKKyNpbmNsdWRlICJKU0NJ
bmxpbmVzLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRlICJKU0dl
bmVyYXRvckZ1bmN0aW9uLmgiCisjaW5jbHVkZSAiU3Ryb25nSW5saW5lcy5oIgorI2luY2x1ZGUg
IlVubGlua2VkQ29kZUJsb2NrLmgiCisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CisKK25hbWVz
cGFjZSBKU0MgeworCitzdHJ1Y3QgWWllbGREYXRhIHsKKyAgICBzaXplX3QgcG9pbnQgeyAwIH07
CisgICAgaW50IGFyZ3VtZW50IHsgMCB9OworICAgIEZhc3RCaXRWZWN0b3IgbGl2ZW5lc3M7Cit9
OworCitjbGFzcyBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbiB7CitwdWJsaWM6CisgICAgdHlw
ZWRlZiBWZWN0b3I8WWllbGREYXRhPiBZaWVsZHM7CisKKyAgICBCeXRlY29kZUdlbmVyYXRvcmlm
aWNhdGlvbihVbmxpbmtlZENvZGVCbG9jayogY29kZUJsb2NrLCBVbmxpbmtlZENvZGVCbG9jazo6
VW5wYWNrZWRJbnN0cnVjdGlvbnMmIGluc3RydWN0aW9ucywgU3ltYm9sVGFibGUqIGdlbmVyYXRv
ckZyYW1lU3ltYm9sVGFibGUsIGludCBnZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlSW5kZXgpCisg
ICAgICAgIDogbV9ncmFwaChjb2RlQmxvY2ssIGluc3RydWN0aW9ucykKKyAgICAgICAgLCBtX2dl
bmVyYXRvckZyYW1lU3ltYm9sVGFibGUoKmNvZGVCbG9jay0+dm0oKSwgZ2VuZXJhdG9yRnJhbWVT
eW1ib2xUYWJsZSkKKyAgICAgICAgLCBtX2dlbmVyYXRvckZyYW1lU3ltYm9sVGFibGVJbmRleChn
ZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlSW5kZXgpCisgICAgeworICAgICAgICBmb3IgKEJ5dGVj
b2RlQmFzaWNCbG9jayogYmxvY2sgOiBtX2dyYXBoKSB7CisgICAgICAgICAgICBmb3IgKHVuc2ln
bmVkIGJ5dGVjb2RlT2Zmc2V0IDogYmxvY2stPmJ5dGVjb2RlT2Zmc2V0cygpKSB7CisgICAgICAg
ICAgICAgICAgY29uc3QgVW5saW5rZWRJbnN0cnVjdGlvbiogcGMgPSAmbV9ncmFwaC5pbnN0cnVj
dGlvbnMoKVtieXRlY29kZU9mZnNldF07CisgICAgICAgICAgICAgICAgc3dpdGNoIChwYy0+dS5v
cGNvZGUpIHsKKyAgICAgICAgICAgICAgICBjYXNlIG9wX2VudGVyOiB7CisgICAgICAgICAgICAg
ICAgICAgIG1fZW50ZXJQb2ludCA9IGJ5dGVjb2RlT2Zmc2V0OworICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBjYXNlIG9wX3lp
ZWxkOiB7CisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRl
eCA9IHBjWzJdLnUuaW5kZXg7CisgICAgICAgICAgICAgICAgICAgIGlmIChsaXZlQ2FsbGVlTG9j
YWxzSW5kZXggPj0gbV95aWVsZHMuc2l6ZSgpKQorICAgICAgICAgICAgICAgICAgICAgICAgbV95
aWVsZHMucmVzaXplKGxpdmVDYWxsZWVMb2NhbHNJbmRleCArIDEpOworICAgICAgICAgICAgICAg
ICAgICBZaWVsZERhdGEmIGRhdGEgPSBtX3lpZWxkc1tsaXZlQ2FsbGVlTG9jYWxzSW5kZXhdOwor
ICAgICAgICAgICAgICAgICAgICBkYXRhLnBvaW50ID0gYnl0ZWNvZGVPZmZzZXQ7CisgICAgICAg
ICAgICAgICAgICAgIGRhdGEuYXJndW1lbnQgPSBwY1szXS51Lm9wZXJhbmQ7CisgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHN0cnVjdCBTdG9yYWdlIHsKKyAg
ICAgICAgSWRlbnRpZmllciBpZGVudGlmaWVyOworICAgICAgICB1bnNpZ25lZCBpZGVudGlmaWVy
SW5kZXg7CisgICAgICAgIFNjb3BlT2Zmc2V0IHNjb3BlT2Zmc2V0OworICAgIH07CisKKyAgICB2
b2lkIHJ1bigpOworCisgICAgQnl0ZWNvZGVHcmFwaDxVbmxpbmtlZENvZGVCbG9jaz4mIGdyYXBo
KCkgeyByZXR1cm4gbV9ncmFwaDsgfQorCisgICAgY29uc3QgWWllbGRzJiB5aWVsZHMoKSBjb25z
dAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1feWllbGRzOworICAgIH0KKworICAgIFlpZWxkcyYg
eWllbGRzKCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX3lpZWxkczsKKyAgICB9CisKKyAgICB1
bnNpZ25lZCBlbnRlclBvaW50KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2VudGVy
UG9pbnQ7CisgICAgfQorCitwcml2YXRlOgorICAgIFN0b3JhZ2Ugc3RvcmFnZUZvckdlbmVyYXRv
ckxvY2FsKHVuc2lnbmVkIGluZGV4KQorICAgIHsKKyAgICAgICAgLy8gV2UgYXNzaWduIGEgc3lt
Ym9sIHRvIGEgcmVnaXN0ZXIuIFRoZXJlIGlzIG9uZS1vbi1vbmUgY29ycmVzcG9uZGluZyBiZXR3
ZWVuIGEgcmVnaXN0ZXIgYW5kIGEgc3ltYm9sLgorICAgICAgICAvLyBCeSBkb2luZyBzbywgd2Ug
YWxsb2NhdGUgdGhlIHNwZWNpZmljIHN0b3JhZ2UgdG8gc2F2ZSB0aGUgZ2l2ZW4gcmVnaXN0ZXIu
CisgICAgICAgIC8vIFRoaXMgYWxsb3cgdXMgbm90IHRvIHNhdmUgYWxsIHRoZSBsaXZlIHJlZ2lz
dGVycyBldmVuIGlmIHRoZSByZWdpc3RlcnMgYXJlIG5vdCBvdmVyd3JpdHRlbiBmcm9tIHRoZSBw
cmV2aW91cyByZXN1bWluZyB0aW1lLgorICAgICAgICAvLyBJdCBtZWFucyB0aGF0LCB0aGUgcmVn
aXN0ZXIgY2FuIGJlIHJldHJpZXZlZCBldmVuIGlmIHRoZSBpbW1lZGlhdGUgcHJldmlvdXMgb3Bf
c2F2ZSBkb2VzIG5vdCBzYXZlIGl0LgorCisgICAgICAgIGlmIChtX3N0b3JhZ2VzLnNpemUoKSA8
PSBpbmRleCkKKyAgICAgICAgICAgIG1fc3RvcmFnZXMucmVzaXplKGluZGV4ICsgMSk7CisgICAg
ICAgIGlmIChPcHRpb25hbDxTdG9yYWdlPiBzdG9yYWdlID0gbV9zdG9yYWdlc1tpbmRleF0pCisg
ICAgICAgICAgICByZXR1cm4gKnN0b3JhZ2U7CisKKyAgICAgICAgVW5saW5rZWRDb2RlQmxvY2sq
IGNvZGVCbG9jayA9IG1fZ3JhcGguY29kZUJsb2NrKCk7CisgICAgICAgIElkZW50aWZpZXIgaWRl
bnRpZmllciA9IElkZW50aWZpZXI6OmZyb21VaWQoUHJpdmF0ZU5hbWUoKSk7CisgICAgICAgIHVu
c2lnbmVkIGlkZW50aWZpZXJJbmRleCA9IGNvZGVCbG9jay0+bnVtYmVyT2ZJZGVudGlmaWVycygp
OworICAgICAgICBjb2RlQmxvY2stPmFkZElkZW50aWZpZXIoaWRlbnRpZmllcik7CisgICAgICAg
IFNjb3BlT2Zmc2V0IHNjb3BlT2Zmc2V0ID0gbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlLT50
YWtlTmV4dFNjb3BlT2Zmc2V0KE5vTG9ja2luZ05lY2Vzc2FyeSk7CisgICAgICAgIG1fZ2VuZXJh
dG9yRnJhbWVTeW1ib2xUYWJsZS0+c2V0KE5vTG9ja2luZ05lY2Vzc2FyeSwgaWRlbnRpZmllci5p
bXBsKCksIFN5bWJvbFRhYmxlRW50cnkoVmFyT2Zmc2V0KHNjb3BlT2Zmc2V0KSkpOworCisgICAg
ICAgIFN0b3JhZ2Ugc3RvcmFnZSA9IHsKKyAgICAgICAgICAgIGlkZW50aWZpZXIsCisgICAgICAg
ICAgICBpZGVudGlmaWVySW5kZXgsCisgICAgICAgICAgICBzY29wZU9mZnNldAorICAgICAgICB9
OworICAgICAgICBtX3N0b3JhZ2VzW2luZGV4XSA9IHN0b3JhZ2U7CisgICAgICAgIHJldHVybiBz
dG9yYWdlOworICAgIH0KKworICAgIHVuc2lnbmVkIG1fZW50ZXJQb2ludCB7IDAgfTsKKyAgICBC
eXRlY29kZUdyYXBoPFVubGlua2VkQ29kZUJsb2NrPiBtX2dyYXBoOworICAgIFZlY3RvcjxPcHRp
b25hbDxTdG9yYWdlPj4gbV9zdG9yYWdlczsKKyAgICBZaWVsZHMgbV95aWVsZHM7CisgICAgU3Ry
b25nPFN5bWJvbFRhYmxlPiBtX2dlbmVyYXRvckZyYW1lU3ltYm9sVGFibGU7CisgICAgaW50IG1f
Z2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZUluZGV4OworfTsKKworY2xhc3MgR2VuZXJhdG9yTGl2
ZW5lc3NBbmFseXNpcyA6IHB1YmxpYyBCeXRlY29kZUxpdmVuZXNzUHJvcGFnYXRpb248R2VuZXJh
dG9yTGl2ZW5lc3NBbmFseXNpcz4geworcHVibGljOgorICAgIEdlbmVyYXRvckxpdmVuZXNzQW5h
bHlzaXMoQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24mIGdlbmVyYXRvcmlmaWNhdGlvbikKKyAg
ICAgICAgOiBtX2dlbmVyYXRvcmlmaWNhdGlvbihnZW5lcmF0b3JpZmljYXRpb24pCisgICAgewor
ICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+CisgICAgdm9pZCBjb21wdXRl
RGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KFVubGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2ssIE9wY29k
ZUlEIG9wY29kZUlELCBVbmxpbmtlZEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgRmFzdEJpdFZl
Y3RvciYsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCisgICAgeworICAgICAgICBKU0M6OmNvbXB1
dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoY29kZUJsb2NrLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb24s
IGZ1bmN0b3IpOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+CisgICAg
dm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KFVubGlua2VkQ29kZUJsb2NrKiBjb2Rl
QmxvY2ssIE9wY29kZUlEIG9wY29kZUlELCBVbmxpbmtlZEluc3RydWN0aW9uKiBpbnN0cnVjdGlv
biwgRmFzdEJpdFZlY3RvciYsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCisgICAgeworICAgICAg
ICBKU0M6OmNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoY29kZUJsb2NrLCBvcGNvZGVJRCwg
aW5zdHJ1Y3Rpb24sIGZ1bmN0b3IpOworICAgIH0KKworICAgIHZvaWQgcnVuKCkKKyAgICB7Cisg
ICAgICAgIC8vIFBlcmZvcm0gbW9kaWZpZWQgbGl2ZW5lc3MgYW5hbHlzaXMgdG8gZGV0ZXJtaW5l
IHdoaWNoIGxvY2FscyBhcmUgbGl2ZSBhdCB0aGUgbWVyZ2UgcG9pbnRzLgorICAgICAgICAvLyBU
aGlzIHByb2R1Y2VzIHRoZSBjb25zZXJ2YXRpdmUgcmVzdWx0cyBmb3IgdGhlIHF1ZXN0aW9uLCAi
d2hpY2ggdmFyaWFibGVzIHNob3VsZCBiZSBzYXZlZCBhbmQgcmVzdW1lZD8iLgorCisgICAgICAg
IHJ1bkxpdmVuZXNzRml4cG9pbnQobV9nZW5lcmF0b3JpZmljYXRpb24uZ3JhcGgoKSk7CisKKyAg
ICAgICAgZm9yIChZaWVsZERhdGEmIGRhdGEgOiBtX2dlbmVyYXRvcmlmaWNhdGlvbi55aWVsZHMo
KSkKKyAgICAgICAgICAgIGRhdGEubGl2ZW5lc3MgPSBnZXRMaXZlbmVzc0luZm9BdEJ5dGVjb2Rl
T2Zmc2V0KG1fZ2VuZXJhdG9yaWZpY2F0aW9uLmdyYXBoKCksIGRhdGEucG9pbnQgKyBvcGNvZGVM
ZW5ndGgob3BfeWllbGQpKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQnl0ZWNvZGVHZW5lcmF0
b3JpZmljYXRpb24mIG1fZ2VuZXJhdG9yaWZpY2F0aW9uOworfTsKKwordm9pZCBCeXRlY29kZUdl
bmVyYXRvcmlmaWNhdGlvbjo6cnVuKCkKK3sKKyAgICAvLyBXZSBjYWxjdWxhdGUgdGhlIGxpdmVu
ZXNzIGF0IGVhY2ggbWVyZ2UgcG9pbnQuIFRoaXMgZ2l2ZXMgdXMgdGhlIGluZm9ybWF0aW9uIHdo
aWNoIHJlZ2lzdGVycyBzaG91bGQgYmUgc2F2ZWQgYW5kIHJlc3VtZWQgY29uc2VydmF0aXZlbHku
CisKKyAgICB7CisgICAgICAgIEdlbmVyYXRvckxpdmVuZXNzQW5hbHlzaXMgcGFzcygqdGhpcyk7
CisgICAgICAgIHBhc3MucnVuKCk7CisgICAgfQorCisgICAgVW5saW5rZWRDb2RlQmxvY2sqIGNv
ZGVCbG9jayA9IG1fZ3JhcGguY29kZUJsb2NrKCk7CisgICAgQnl0ZWNvZGVSZXdyaXRlciByZXdy
aXRlcihtX2dyYXBoKTsKKworICAgIC8vIFNldHVwIHRoZSBnbG9iYWwgc3dpdGNoIGZvciB0aGUg
Z2VuZXJhdG9yLgorICAgIHsKKyAgICAgICAgdW5zaWduZWQgbmV4dFRvRW50ZXJQb2ludCA9IGVu
dGVyUG9pbnQoKSArIG9wY29kZUxlbmd0aChvcF9lbnRlcik7CisgICAgICAgIHVuc2lnbmVkIHN3
aXRjaFRhYmxlSW5kZXggPSBtX2dyYXBoLmNvZGVCbG9jaygpLT5udW1iZXJPZlN3aXRjaEp1bXBU
YWJsZXMoKTsKKyAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHN0YXRlID0gdmlydHVhbFJlZ2lzdGVy
Rm9yQXJndW1lbnQoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6R2Vu
ZXJhdG9yQXJndW1lbnQ6OlN0YXRlKSk7CisgICAgICAgIGF1dG8mIGp1bXBUYWJsZSA9IG1fZ3Jh
cGguY29kZUJsb2NrKCktPmFkZFN3aXRjaEp1bXBUYWJsZSgpOworICAgICAgICBqdW1wVGFibGUu
bWluID0gMDsKKyAgICAgICAganVtcFRhYmxlLmJyYW5jaE9mZnNldHMucmVzaXplKG1feWllbGRz
LnNpemUoKSArIDEpOworICAgICAgICBqdW1wVGFibGUuYnJhbmNoT2Zmc2V0cy5maWxsKDApOwor
ICAgICAgICBqdW1wVGFibGUuYWRkKDAsIG5leHRUb0VudGVyUG9pbnQpOworICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbV95aWVsZHMuc2l6ZSgpOyArK2kpCisgICAgICAgICAgICBq
dW1wVGFibGUuYWRkKGkgKyAxLCBtX3lpZWxkc1tpXS5wb2ludCk7CisKKyAgICAgICAgcmV3cml0
ZXIuaW5zZXJ0RnJhZ21lbnRCZWZvcmUobmV4dFRvRW50ZXJQb2ludCwgWyZdKEJ5dGVjb2RlUmV3
cml0ZXI6OkZyYWdtZW50JiBmcmFnbWVudCkgeworICAgICAgICAgICAgZnJhZ21lbnQuYXBwZW5k
SW5zdHJ1Y3Rpb24ob3Bfc3dpdGNoX2ltbSwgc3dpdGNoVGFibGVJbmRleCwgbmV4dFRvRW50ZXJQ
b2ludCwgc3RhdGUub2Zmc2V0KCkpOworICAgICAgICB9KTsKKyAgICB9CisKKyAgICBmb3IgKGNv
bnN0IFlpZWxkRGF0YSYgZGF0YSA6IG1feWllbGRzKSB7CisgICAgICAgIFZpcnR1YWxSZWdpc3Rl
ciBzY29wZSA9IHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KHN0YXRpY19jYXN0PGludDMyX3Q+
KEpTR2VuZXJhdG9yRnVuY3Rpb246OkdlbmVyYXRvckFyZ3VtZW50OjpGcmFtZSkpOworCisgICAg
ICAgIC8vIEVtaXQgc2F2ZSBzZXF1ZW5jZS4KKyAgICAgICAgcmV3cml0ZXIuaW5zZXJ0RnJhZ21l
bnRCZWZvcmUoZGF0YS5wb2ludCwgWyZdKEJ5dGVjb2RlUmV3cml0ZXI6OkZyYWdtZW50JiBmcmFn
bWVudCkgeworICAgICAgICAgICAgZGF0YS5saXZlbmVzcy5mb3JFYWNoU2V0Qml0KFsmXShzaXpl
X3QgaW5kZXgpIHsKKyAgICAgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCA9IHZp
cnR1YWxSZWdpc3RlckZvckxvY2FsKGluZGV4KTsKKyAgICAgICAgICAgICAgICBTdG9yYWdlIHN0
b3JhZ2UgPSBzdG9yYWdlRm9yR2VuZXJhdG9yTG9jYWwoaW5kZXgpOworCisgICAgICAgICAgICAg
ICAgZnJhZ21lbnQuYXBwZW5kSW5zdHJ1Y3Rpb24oCisgICAgICAgICAgICAgICAgICAgIG9wX3B1
dF90b19zY29wZSwKKyAgICAgICAgICAgICAgICAgICAgc2NvcGUub2Zmc2V0KCksIC8vIHNjb3Bl
CisgICAgICAgICAgICAgICAgICAgIHN0b3JhZ2UuaWRlbnRpZmllckluZGV4LCAvLyBpZGVudGlm
aWVyCisgICAgICAgICAgICAgICAgICAgIG9wZXJhbmQub2Zmc2V0KCksIC8vIHZhbHVlCisgICAg
ICAgICAgICAgICAgICAgIEdldFB1dEluZm8oRG9Ob3RUaHJvd0lmTm90Rm91bmQsIExvY2FsQ2xv
c3VyZVZhciwgSW5pdGlhbGl6YXRpb25Nb2RlOjpOb3RJbml0aWFsaXphdGlvbikub3BlcmFuZCgp
LCAvLyBpbmZvCisgICAgICAgICAgICAgICAgICAgIG1fZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJs
ZUluZGV4LCAvLyBzeW1ib2wgdGFibGUgY29uc3RhbnQgaW5kZXgKKyAgICAgICAgICAgICAgICAg
ICAgc3RvcmFnZS5zY29wZU9mZnNldC5vZmZzZXQoKSAvLyBzY29wZSBvZmZzZXQKKyAgICAgICAg
ICAgICAgICApOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIC8vIEluc2VydCBvcF9y
ZXQganVzdCBhZnRlciBzYXZlIHNlcXVlbmNlLgorICAgICAgICAgICAgZnJhZ21lbnQuYXBwZW5k
SW5zdHJ1Y3Rpb24ob3BfcmV0LCBkYXRhLmFyZ3VtZW50KTsKKyAgICAgICAgfSk7CisKKyAgICAg
ICAgLy8gRW1pdCByZXN1bWUgc2VxdWVuY2UuCisgICAgICAgIHJld3JpdGVyLmluc2VydEZyYWdt
ZW50QmVmb3JlKGRhdGEucG9pbnQgKyBvcGNvZGVMZW5ndGgob3BfeWllbGQpLCBbJl0oQnl0ZWNv
ZGVSZXdyaXRlcjo6RnJhZ21lbnQmIGZyYWdtZW50KSB7CisgICAgICAgICAgICBkYXRhLmxpdmVu
ZXNzLmZvckVhY2hTZXRCaXQoWyZdKHNpemVfdCBpbmRleCkgeworICAgICAgICAgICAgICAgIFZp
cnR1YWxSZWdpc3RlciBvcGVyYW5kID0gdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaW5kZXgpOwor
ICAgICAgICAgICAgICAgIFN0b3JhZ2Ugc3RvcmFnZSA9IHN0b3JhZ2VGb3JHZW5lcmF0b3JMb2Nh
bChpbmRleCk7CisKKyAgICAgICAgICAgICAgICBVbmxpbmtlZFZhbHVlUHJvZmlsZSBwcm9maWxl
ID0gY29kZUJsb2NrLT5hZGRWYWx1ZVByb2ZpbGUoKTsKKyAgICAgICAgICAgICAgICBmcmFnbWVu
dC5hcHBlbmRJbnN0cnVjdGlvbigKKyAgICAgICAgICAgICAgICAgICAgb3BfZ2V0X2Zyb21fc2Nv
cGUsCisgICAgICAgICAgICAgICAgICAgIG9wZXJhbmQub2Zmc2V0KCksIC8vIGRzdAorICAgICAg
ICAgICAgICAgICAgICBzY29wZS5vZmZzZXQoKSwgLy8gc2NvcGUKKyAgICAgICAgICAgICAgICAg
ICAgc3RvcmFnZS5pZGVudGlmaWVySW5kZXgsIC8vIGlkZW50aWZpZXIKKyAgICAgICAgICAgICAg
ICAgICAgR2V0UHV0SW5mbyhEb05vdFRocm93SWZOb3RGb3VuZCwgTG9jYWxDbG9zdXJlVmFyLCBJ
bml0aWFsaXphdGlvbk1vZGU6Ok5vdEluaXRpYWxpemF0aW9uKS5vcGVyYW5kKCksIC8vIGluZm8K
KyAgICAgICAgICAgICAgICAgICAgMCwgLy8gbG9jYWwgc2NvcGUgZGVwdGgKKyAgICAgICAgICAg
ICAgICAgICAgc3RvcmFnZS5zY29wZU9mZnNldC5vZmZzZXQoKSwgLy8gc2NvcGUgb2Zmc2V0Cisg
ICAgICAgICAgICAgICAgICAgIHByb2ZpbGUgLy8gcHJvZmlsZQorICAgICAgICAgICAgICAgICk7
CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgLy8gQ2xpcCB0aGUgdW5u
ZWNlc3NhcnkgYnl0ZWNvZGVzLgorICAgICAgICByZXdyaXRlci5yZW1vdmVCeXRlY29kZShkYXRh
LnBvaW50KTsKKyAgICB9CisKKyAgICByZXdyaXRlci5leGVjdXRlKCk7Cit9CisKK3ZvaWQgcGVy
Zm9ybUdlbmVyYXRvcmlmaWNhdGlvbihVbmxpbmtlZENvZGVCbG9jayogY29kZUJsb2NrLCBVbmxp
bmtlZENvZGVCbG9jazo6VW5wYWNrZWRJbnN0cnVjdGlvbnMmIGluc3RydWN0aW9ucywgU3ltYm9s
VGFibGUqIGdlbmVyYXRvckZyYW1lU3ltYm9sVGFibGUsIGludCBnZW5lcmF0b3JGcmFtZVN5bWJv
bFRhYmxlSW5kZXgpCit7CisgICAgQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24gcGFzcyhjb2Rl
QmxvY2ssIGluc3RydWN0aW9ucywgZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZSwgZ2VuZXJhdG9y
RnJhbWVTeW1ib2xUYWJsZUluZGV4KTsKKyAgICBwYXNzLnJ1bigpOworfQorCit9IC8vIG5hbWVz
cGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZUdlbmVyYXRvcmlmaWNhdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzdiNjEzNzQ2MDg2YWUz
NGM0YzBhMjJiZjRlNjdjNzZlNmNmZDRlOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5oCkBAIC0wLDAg
KzEsMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgWXVzdWtlIFN1enVraSA8dXRhdGFu
ZS50ZWFAZ21haWwuY29tPgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJVbmxp
bmtlZENvZGVCbG9jay5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgU3ltYm9sVGFibGU7
CisKK3ZvaWQgcGVyZm9ybUdlbmVyYXRvcmlmaWNhdGlvbihVbmxpbmtlZENvZGVCbG9jayosIFVu
bGlua2VkQ29kZUJsb2NrOjpVbnBhY2tlZEluc3RydWN0aW9ucyYsIFN5bWJvbFRhYmxlKiBnZW5l
cmF0b3JGcmFtZVN5bWJvbFRhYmxlLCBpbnQgZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZUluZGV4
KTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnl0ZWNvZGVHcmFwaC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlR3JhcGguaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zYmFhN2U4NWVmYTA3NDE2YTFkNWZmODIx
MjhmYmRjNjViNGMwNDRhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlR3JhcGguaApAQCAtMCwwICsxLDEyNSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNiBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisgKiBD
b3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkJ5dGVjb2RlQmFzaWNCbG9jay5oIgorI2lu
Y2x1ZGUgPHd0Zi9JbmRleGVkQ29udGFpbmVySXRlcmF0b3IuaD4KKyNpbmNsdWRlIDx3dGYvSXRl
cmF0b3JSYW5nZS5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIEpTQyB7
CisKK2NsYXNzIEJ5dGVjb2RlQmFzaWNCbG9jazsKKwordGVtcGxhdGU8dHlwZW5hbWUgQmxvY2s+
CitjbGFzcyBCeXRlY29kZUdyYXBoIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShCeXRlY29kZUdyYXBoKTsKK3B1YmxpYzoKKyAgICB0eXBl
ZGVmIEJsb2NrIENvZGVCbG9jazsKKyAgICB0eXBlZGVmIHR5cGVuYW1lIEJsb2NrOjpJbnN0cnVj
dGlvbiBJbnN0cnVjdGlvbjsKKyAgICB0eXBlZGVmIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0
ZWNvZGVCYXNpY0Jsb2NrPj4gQmFzaWNCbG9ja3NWZWN0b3I7CisKKyAgICB0eXBlZGVmIFdURjo6
SW5kZXhlZENvbnRhaW5lckl0ZXJhdG9yPEJ5dGVjb2RlR3JhcGg8QmxvY2s+PiBpdGVyYXRvcjsK
KworICAgIGlubGluZSBCeXRlY29kZUdyYXBoKEJsb2NrKiwgdHlwZW5hbWUgQmxvY2s6OlVucGFj
a2VkSW5zdHJ1Y3Rpb25zJik7CisKKyAgICBCbG9jayogY29kZUJsb2NrKCkgY29uc3QgeyByZXR1
cm4gbV9jb2RlQmxvY2s7IH0KKworICAgIHR5cGVuYW1lIEJsb2NrOjpVbnBhY2tlZEluc3RydWN0
aW9ucyYgaW5zdHJ1Y3Rpb25zKCkgeyByZXR1cm4gbV9pbnN0cnVjdGlvbnM7IH0KKworICAgIFdU
Rjo6SXRlcmF0b3JSYW5nZTxCYXNpY0Jsb2Nrc1ZlY3Rvcjo6cmV2ZXJzZV9pdGVyYXRvcj4gYmFz
aWNCbG9ja3NJblJldmVyc2VPcmRlcigpCisgICAgeworICAgICAgICByZXR1cm4gV1RGOjptYWtl
SXRlcmF0b3JSYW5nZShtX2Jhc2ljQmxvY2tzLnJiZWdpbigpLCBtX2Jhc2ljQmxvY2tzLnJlbmQo
KSk7CisgICAgfQorCisgICAgc3RhdGljIGJvb2wgYmxvY2tDb250YWluc0J5dGVjb2RlT2Zmc2V0
KEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KQorICAg
IHsKKyAgICAgICAgdW5zaWduZWQgbGVhZGVyT2Zmc2V0ID0gYmxvY2stPmxlYWRlckJ5dGVjb2Rl
T2Zmc2V0KCk7CisgICAgICAgIHJldHVybiBieXRlY29kZU9mZnNldCA+PSBsZWFkZXJPZmZzZXQg
JiYgYnl0ZWNvZGVPZmZzZXQgPCBsZWFkZXJPZmZzZXQgKyBibG9jay0+dG90YWxCeXRlY29kZUxl
bmd0aCgpOworICAgIH0KKworICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogZmluZEJhc2ljQmxvY2tG
b3JCeXRlY29kZU9mZnNldCh1bnNpZ25lZCBieXRlY29kZU9mZnNldCkKKyAgICB7CisgICAgICAg
IC8qCisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9iYXNpY0Jsb2Nrcy5z
aXplKCk7IGkrKykgeworICAgICAgICAgICAgICAgIGlmIChibG9ja0NvbnRhaW5zQnl0ZWNvZGVP
ZmZzZXQobV9iYXNpY0Jsb2Nrc1tpXS5nZXQoKSwgYnl0ZWNvZGVPZmZzZXQpKQorICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gbV9iYXNpY0Jsb2Nrc1tpXS5nZXQoKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAqLworCisgICAgICAgIHN0ZDo6dW5pcXVl
X3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+KiBiYXNpY0Jsb2NrID0gYXBwcm94aW1hdGVCaW5hcnlT
ZWFyY2g8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4sIHVuc2lnbmVkPihtX2Jh
c2ljQmxvY2tzLCBtX2Jhc2ljQmxvY2tzLnNpemUoKSwgYnl0ZWNvZGVPZmZzZXQsIFtdIChzdGQ6
OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiogYmFzaWNCbG9jaykgeyByZXR1cm4gKCpi
YXNpY0Jsb2NrKS0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKTsgfSk7CisgICAgICAgIC8vIFdlIGZv
dW5kIHRoZSBibG9jayB3ZSB3ZXJlIGxvb2tpbmcgZm9yLgorICAgICAgICBpZiAoYmxvY2tDb250
YWluc0J5dGVjb2RlT2Zmc2V0KCgqYmFzaWNCbG9jaykuZ2V0KCksIGJ5dGVjb2RlT2Zmc2V0KSkK
KyAgICAgICAgICAgIHJldHVybiAoKmJhc2ljQmxvY2spLmdldCgpOworCisgICAgICAgIC8vIEJh
c2ljIGJsb2NrIGlzIHRvIHRoZSBsZWZ0IG9mIHRoZSByZXR1cm5lZCBibG9jay4KKyAgICAgICAg
aWYgKGJ5dGVjb2RlT2Zmc2V0IDwgKCpiYXNpY0Jsb2NrKS0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQo
KSkgeworICAgICAgICAgICAgQVNTRVJUKGJhc2ljQmxvY2sgLSAxID49IG1fYmFzaWNCbG9ja3Mu
ZGF0YSgpKTsKKyAgICAgICAgICAgIEFTU0VSVChibG9ja0NvbnRhaW5zQnl0ZWNvZGVPZmZzZXQo
YmFzaWNCbG9ja1stMV0uZ2V0KCksIGJ5dGVjb2RlT2Zmc2V0KSk7CisgICAgICAgICAgICByZXR1
cm4gYmFzaWNCbG9ja1stMV0uZ2V0KCk7CisgICAgICAgIH0KKworICAgICAgICAvLyBCYXNpYyBi
bG9jayBpcyB0byB0aGUgcmlnaHQgb2YgdGhlIHJldHVybmVkIGJsb2NrLgorICAgICAgICBBU1NF
UlQoJmJhc2ljQmxvY2tbMV0gPD0gJm1fYmFzaWNCbG9ja3MubGFzdCgpKTsKKyAgICAgICAgQVNT
RVJUKGJsb2NrQ29udGFpbnNCeXRlY29kZU9mZnNldChiYXNpY0Jsb2NrWzFdLmdldCgpLCBieXRl
Y29kZU9mZnNldCkpOworICAgICAgICByZXR1cm4gYmFzaWNCbG9ja1sxXS5nZXQoKTsKKyAgICB9
CisKKyAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGZpbmRCYXNpY0Jsb2NrV2l0aExlYWRlck9mZnNl
dCh1bnNpZ25lZCBsZWFkZXJPZmZzZXQpCisgICAgeworICAgICAgICByZXR1cm4gKCp0cnlCaW5h
cnlTZWFyY2g8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4sIHVuc2lnbmVkPiht
X2Jhc2ljQmxvY2tzLCBtX2Jhc2ljQmxvY2tzLnNpemUoKSwgbGVhZGVyT2Zmc2V0LCBbXSAoc3Rk
Ojp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4qIGJhc2ljQmxvY2spIHsgcmV0dXJuICgq
YmFzaWNCbG9jayktPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCk7IH0pKS5nZXQoKTsKKyAgICB9CisK
KyAgICB1bnNpZ25lZCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9iYXNpY0Jsb2Nrcy5zaXplKCk7
IH0KKyAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGF0KHVuc2lnbmVkIGluZGV4KSBjb25zdCB7IHJl
dHVybiBtX2Jhc2ljQmxvY2tzW2luZGV4XS5nZXQoKTsgfQorICAgIEJ5dGVjb2RlQmFzaWNCbG9j
ayogb3BlcmF0b3JbXSh1bnNpZ25lZCBpbmRleCkgY29uc3QgeyByZXR1cm4gYXQoaW5kZXgpOyB9
CisKKyAgICBpdGVyYXRvciBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIGl0ZXJhdG9yKCp0aGlzLCAw
KTsgfQorICAgIGl0ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0dXJuIGl0ZXJhdG9yKCp0aGlzLCBz
aXplKCkpOyB9CisgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBmaXJzdCgpIHsgcmV0dXJuIGF0KDAp
OyB9CisgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBsYXN0KCkgeyByZXR1cm4gYXQoc2l6ZSgpIC0g
MSk7IH0KKworcHJpdmF0ZToKKyAgICBCbG9jayogbV9jb2RlQmxvY2s7CisgICAgQmFzaWNCbG9j
a3NWZWN0b3IgbV9iYXNpY0Jsb2NrczsKKyAgICB0eXBlbmFtZSBCbG9jazo6VW5wYWNrZWRJbnN0
cnVjdGlvbnMmIG1faW5zdHJ1Y3Rpb25zOworfTsKKworCit0ZW1wbGF0ZTx0eXBlbmFtZSBCbG9j
az4KK0J5dGVjb2RlR3JhcGg8QmxvY2s+OjpCeXRlY29kZUdyYXBoKEJsb2NrKiBjb2RlQmxvY2ss
IHR5cGVuYW1lIEJsb2NrOjpVbnBhY2tlZEluc3RydWN0aW9ucyYgaW5zdHJ1Y3Rpb25zKQorICAg
IDogbV9jb2RlQmxvY2soY29kZUJsb2NrKQorICAgICwgbV9pbnN0cnVjdGlvbnMoaW5zdHJ1Y3Rp
b25zKQoreworICAgIEFTU0VSVChtX2NvZGVCbG9jayk7CisgICAgQnl0ZWNvZGVCYXNpY0Jsb2Nr
Ojpjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2NrcyhtX2NvZGVCbG9jaywgaW5zdHJ1Y3Rpb25zLmJl
Z2luKCksIGluc3RydWN0aW9ucy5zaXplKCksIG1fYmFzaWNCbG9ja3MpOworICAgIEFTU0VSVCht
X2Jhc2ljQmxvY2tzLnNpemUoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCmluZGV4IGUzODAy
NWQ1YWZjZjY5Y2U0ODBhZTkyODk4YzkzOGU5MzEyNzg4ZDkuLmNlNjBkYTRhMjZiYzM0NzdmZDQ3
MTliMGE0YjFmZWNlNTg5YzYxOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24KQEAgLTE0Myw4ICsxNDMsNyBAQAogICAgICAgICAgICAg
eyAibmFtZSIgOiAib3BfYXNzZXJ0IiwgImxlbmd0aCIgOiAzIH0sCiAgICAgICAgICAgICB7ICJu
YW1lIiA6ICJvcF9jcmVhdGVfcmVzdCIsICJsZW5ndGgiOiA0IH0sCiAgICAgICAgICAgICB7ICJu
YW1lIiA6ICJvcF9nZXRfcmVzdF9sZW5ndGgiLCAibGVuZ3RoIjogMyB9LAotICAgICAgICAgICAg
eyAibmFtZSIgOiAib3Bfc2F2ZSIsICJsZW5ndGgiIDogNCB9LAotICAgICAgICAgICAgeyAibmFt
ZSIgOiAib3BfcmVzdW1lIiwgImxlbmd0aCIgOiAzIH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6
ICJvcF95aWVsZCIsICJsZW5ndGgiIDogNCB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3Bf
d2F0Y2hkb2ciLCAibGVuZ3RoIiA6IDEgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2xv
Z19zaGFkb3dfY2hpY2tlbl9wcm9sb2d1ZSIsICJsZW5ndGgiIDogMn0sCiAgICAgICAgICAgICB7
ICJuYW1lIiA6ICJvcF9sb2dfc2hhZG93X2NoaWNrZW5fdGFpbCIsICJsZW5ndGgiIDogM30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNz
QW5hbHlzaXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2
ZW5lc3NBbmFseXNpcy5jcHAKaW5kZXggMTdlODJhMmZiYmEwMTUwNDNlOTlkMzRlZDI1NjkzNzJi
MzZmN2E4NS4uYTE1NDBmMWRiYjQzZTkyZWM3YTRkNzliYzM0YzkwN2RiN2MyNmYzZCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFs
eXNpcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2
ZW5lc3NBbmFseXNpcy5jcHAKQEAgLTMxLDE5OCArMzEsMzYgQEAKICNpbmNsdWRlICJCeXRlY29k
ZVVzZURlZi5oIgogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkZ1bGxCeXRlY29k
ZUxpdmVuZXNzLmgiCi0jaW5jbHVkZSAiUHJlY2lzZUp1bXBUYXJnZXRzLmgiCisjaW5jbHVkZSAi
SW50ZXJwcmV0ZXJJbmxpbmVzLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCiBCeXRlY29kZUxpdmVu
ZXNzQW5hbHlzaXM6OkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcyhDb2RlQmxvY2sqIGNvZGVCbG9j
aykKLSAgICA6IG1fY29kZUJsb2NrKGNvZGVCbG9jaykKKyAgICA6IG1fZ3JhcGgoY29kZUJsb2Nr
LCBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpKQogewotICAgIEFTU0VSVChtX2NvZGVCbG9jayk7
CiAgICAgY29tcHV0ZSgpOwogfQogCi1zdGF0aWMgYm9vbCBpc1ZhbGlkUmVnaXN0ZXJGb3JMaXZl
bmVzcyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgaW50IG9wZXJhbmQpCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBGdW5jdG9yPgordm9pZCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGVEZWZzRm9y
Qnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIE9wY29kZUlEIG9wY29kZUlELCBJ
bnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIEZhc3RCaXRWZWN0b3ImLCBjb25zdCBGdW5jdG9yJiBm
dW5jdG9yKQogewotICAgIGlmIChjb2RlQmxvY2stPmlzQ29uc3RhbnRSZWdpc3RlckluZGV4KG9w
ZXJhbmQpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCi0gICAgVmlydHVhbFJlZ2lzdGVy
IHZpcnR1YWxSZWcob3BlcmFuZCk7Ci0gICAgcmV0dXJuIHZpcnR1YWxSZWcuaXNMb2NhbCgpOwot
fQotCi1zdGF0aWMgdW5zaWduZWQgZ2V0TGVhZGVyT2Zmc2V0Rm9yQmFzaWNCbG9jayhzdGQ6OnVu
aXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiogYmFzaWNCbG9jaykKLXsKLSAgICByZXR1cm4g
KCpiYXNpY0Jsb2NrKS0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKTsKLX0KLQotc3RhdGljIEJ5dGVj
b2RlQmFzaWNCbG9jayogZmluZEJhc2ljQmxvY2tXaXRoTGVhZGVyT2Zmc2V0KFZlY3RvcjxzdGQ6
OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mIGJhc2ljQmxvY2tzLCB1bnNpZ25lZCBs
ZWFkZXJPZmZzZXQpCi17Ci0gICAgcmV0dXJuICgqdHJ5QmluYXJ5U2VhcmNoPHN0ZDo6dW5pcXVl
X3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+LCB1bnNpZ25lZD4oYmFzaWNCbG9ja3MsIGJhc2ljQmxv
Y2tzLnNpemUoKSwgbGVhZGVyT2Zmc2V0LCBnZXRMZWFkZXJPZmZzZXRGb3JCYXNpY0Jsb2NrKSku
Z2V0KCk7Ci19Ci0KLXN0YXRpYyBib29sIGJsb2NrQ29udGFpbnNCeXRlY29kZU9mZnNldChCeXRl
Y29kZUJhc2ljQmxvY2sqIGJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCkKLXsKLSAgICB1
bnNpZ25lZCBsZWFkZXJPZmZzZXQgPSBibG9jay0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKTsKLSAg
ICByZXR1cm4gYnl0ZWNvZGVPZmZzZXQgPj0gbGVhZGVyT2Zmc2V0ICYmIGJ5dGVjb2RlT2Zmc2V0
IDwgbGVhZGVyT2Zmc2V0ICsgYmxvY2stPnRvdGFsQnl0ZWNvZGVMZW5ndGgoKTsKLX0KLQotc3Rh
dGljIEJ5dGVjb2RlQmFzaWNCbG9jayogZmluZEJhc2ljQmxvY2tGb3JCeXRlY29kZU9mZnNldChW
ZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+JiBiYXNpY0Jsb2Nrcywg
dW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpCi17Ci0vKgotICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBiYXNpY0Jsb2Nrcy5zaXplKCk7IGkrKykgewotICAgICAgICBpZiAoYmxvY2tDb250YWlu
c0J5dGVjb2RlT2Zmc2V0KGJhc2ljQmxvY2tzW2ldLmdldCgpLCBieXRlY29kZU9mZnNldCkpCi0g
ICAgICAgICAgICByZXR1cm4gYmFzaWNCbG9ja3NbaV0uZ2V0KCk7Ci0gICAgfQotICAgIHJldHVy
biAwOwotKi8KLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiogYmFzaWNC
bG9jayA9IGFwcHJveGltYXRlQmluYXJ5U2VhcmNoPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJh
c2ljQmxvY2s+LCB1bnNpZ25lZD4oCi0gICAgICAgIGJhc2ljQmxvY2tzLCBiYXNpY0Jsb2Nrcy5z
aXplKCksIGJ5dGVjb2RlT2Zmc2V0LCBnZXRMZWFkZXJPZmZzZXRGb3JCYXNpY0Jsb2NrKTsKLSAg
ICAvLyBXZSBmb3VuZCB0aGUgYmxvY2sgd2Ugd2VyZSBsb29raW5nIGZvci4KLSAgICBpZiAoYmxv
Y2tDb250YWluc0J5dGVjb2RlT2Zmc2V0KCgqYmFzaWNCbG9jaykuZ2V0KCksIGJ5dGVjb2RlT2Zm
c2V0KSkKLSAgICAgICAgcmV0dXJuICgqYmFzaWNCbG9jaykuZ2V0KCk7Ci0KLSAgICAvLyBCYXNp
YyBibG9jayBpcyB0byB0aGUgbGVmdCBvZiB0aGUgcmV0dXJuZWQgYmxvY2suCi0gICAgaWYgKGJ5
dGVjb2RlT2Zmc2V0IDwgKCpiYXNpY0Jsb2NrKS0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKSkgewot
ICAgICAgICBBU1NFUlQoYmFzaWNCbG9jayAtIDEgPj0gYmFzaWNCbG9ja3MuZGF0YSgpKTsKLSAg
ICAgICAgQVNTRVJUKGJsb2NrQ29udGFpbnNCeXRlY29kZU9mZnNldChiYXNpY0Jsb2NrWy0xXS5n
ZXQoKSwgYnl0ZWNvZGVPZmZzZXQpKTsKLSAgICAgICAgcmV0dXJuIGJhc2ljQmxvY2tbLTFdLmdl
dCgpOwotICAgIH0KLQotICAgIC8vIEJhc2ljIGJsb2NrIGlzIHRvIHRoZSByaWdodCBvZiB0aGUg
cmV0dXJuZWQgYmxvY2suCi0gICAgQVNTRVJUKCZiYXNpY0Jsb2NrWzFdIDw9ICZiYXNpY0Jsb2Nr
cy5sYXN0KCkpOwotICAgIEFTU0VSVChibG9ja0NvbnRhaW5zQnl0ZWNvZGVPZmZzZXQoYmFzaWNC
bG9ja1sxXS5nZXQoKSwgYnl0ZWNvZGVPZmZzZXQpKTsKLSAgICByZXR1cm4gYmFzaWNCbG9ja1sx
XS5nZXQoKTsKLX0KLQotLy8gU2ltcGxpZmllZCBpbnRlcmZhY2UgdG8gYnl0ZWNvZGUgdXNlL2Rl
Ziwgd2hpY2ggZGV0ZXJtaW5lcyBkZWZzIGZpcnN0IGFuZCB0aGVuIHVzZXMsIGFuZCBpbmNsdWRl
cwotLy8gZXhjZXB0aW9uIGhhbmRsZXJzIGluIHRoZSB1c2VzLgotdGVtcGxhdGU8dHlwZW5hbWUg
VXNlRnVuY3RvciwgdHlwZW5hbWUgRGVmRnVuY3Rvcj4KLXN0YXRpYyB2b2lkIHN0ZXBPdmVySW5z
dHJ1Y3Rpb24oQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2ss
IFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mIGJhc2ljQmxvY2tz
LCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgY29uc3QgVXNlRnVuY3RvciYgdXNlLCBjb25zdCBE
ZWZGdW5jdG9yJiBkZWYpCi17Ci0gICAgLy8gVGhpcyBhYnN0cmFjdGx5IGV4ZWN1dGUgdGhlIGlu
c3RydWN0aW9uIGluIHJldmVyc2UuIEluc3RydWN0aW9ucyBsb2dpY2FsbHkgZmlyc3QgdXNlIG9w
ZXJhbmRzIGFuZAotICAgIC8vIHRoZW4gZGVmaW5lIG9wZXJhbmRzLiBUaGlzIGxvZ2ljYWwgb3Jk
ZXJpbmcgaXMgbmVjZXNzYXJ5IGZvciBvcGVyYXRpb25zIHRoYXQgdXNlIGFuZCBkZWYgdGhlIHNh
bWUKLSAgICAvLyBvcGVyYW5kLCBsaWtlOgotICAgIC8vCi0gICAgLy8gICAgIG9wX2FkZCBsb2Mx
LCBsb2MxLCBsb2MyCi0gICAgLy8KLSAgICAvLyBUaGUgdXNlIG9mIGxvYzEgaGFwcGVucyBiZWZv
cmUgdGhlIGRlZiBvZiBsb2MxLiBUaGF0J3MgYSBzZW1hbnRpYyByZXF1aXJlbWVudCBzaW5jZSB0
aGUgYWRkCi0gICAgLy8gb3BlcmF0aW9uIGNhbm5vdCB0cmF2ZWwgZm9yd2FyZCBpbiB0aW1lIHRv
IHJlYWQgdGhlIHZhbHVlIHRoYXQgaXQgd2lsbCBwcm9kdWNlIGFmdGVyIHJlYWRpbmcgdGhhdAot
ICAgIC8vIHZhbHVlLiBTaW5jZSB3ZSBhcmUgZXhlY3V0aW5nIGluIHJldmVyc2UsIHRoaXMgbWVh
bnMgdGhhdCB3ZSBtdXN0IGRvIGRlZnMgYmVmb3JlIHVzZXMgKHJldmVyc2Ugb2YKLSAgICAvLyB1
c2VzIGJlZm9yZSBkZWZzKS4KLSAgICAvLwotICAgIC8vIFNpbmNlIHRoaXMgaXMgYSBsaXZlbmVz
cyBhbmFseXNpcywgdGhpcyBvcmRlcmluZyBlbmRzIHVwIGJlaW5nIHBhcnRpY3VsYXJseSBpbXBv
cnRhbnQ6IGlmIHdlIGRpZAotICAgIC8vIHVzZXMgYmVmb3JlIGRlZnMsIHRoZW4gdGhlIGFkZCBv
cGVyYXRpb24gYWJvdmUgd291bGQgYXBwZWFyIHRvIG5vdCBoYXZlIGxvYzEgbGl2ZSwgc2luY2Ug
d2UnZAotICAgIC8vIGZpcnN0IGFkZCBpdCB0byB0aGUgb3V0IHNldCAodGhlIHVzZSksIGFuZCB0
aGVuIHdlJ2QgcmVtb3ZlIGl0ICh0aGUgZGVmKS4KLSAgICAKLSAgICBjb21wdXRlRGVmc0ZvckJ5
dGVjb2RlT2Zmc2V0KAotICAgICAgICBjb2RlQmxvY2ssIGJsb2NrLCBieXRlY29kZU9mZnNldCwK
LSAgICAgICAgWyZdIChDb2RlQmxvY2sqIGNvZGVCbG9jaywgSW5zdHJ1Y3Rpb24qLCBPcGNvZGVJ
RCwgaW50IG9wZXJhbmQpIHsKLSAgICAgICAgICAgIGlmIChpc1ZhbGlkUmVnaXN0ZXJGb3JMaXZl
bmVzcyhjb2RlQmxvY2ssIG9wZXJhbmQpKQotICAgICAgICAgICAgICAgIGRlZihWaXJ0dWFsUmVn
aXN0ZXIob3BlcmFuZCkudG9Mb2NhbCgpKTsKLSAgICAgICAgfSk7Ci0KLSAgICBjb21wdXRlVXNl
c0ZvckJ5dGVjb2RlT2Zmc2V0KAotICAgICAgICBjb2RlQmxvY2ssIGJsb2NrLCBieXRlY29kZU9m
ZnNldCwKLSAgICAgICAgWyZdIChDb2RlQmxvY2sqIGNvZGVCbG9jaywgSW5zdHJ1Y3Rpb24qLCBP
cGNvZGVJRCwgaW50IG9wZXJhbmQpIHsKLSAgICAgICAgICAgIGlmIChpc1ZhbGlkUmVnaXN0ZXJG
b3JMaXZlbmVzcyhjb2RlQmxvY2ssIG9wZXJhbmQpKQotICAgICAgICAgICAgICAgIHVzZShWaXJ0
dWFsUmVnaXN0ZXIob3BlcmFuZCkudG9Mb2NhbCgpKTsKLSAgICAgICAgfSk7Ci0KLSAgICAvLyBJ
ZiB3ZSBoYXZlIGFuIGV4Y2VwdGlvbiBoYW5kbGVyLCB3ZSB3YW50IHRoZSBsaXZlLWluIHZhcmlh
YmxlcyBvZiB0aGUgCi0gICAgLy8gZXhjZXB0aW9uIGhhbmRsZXIgYmxvY2sgdG8gYmUgaW5jbHVk
ZWQgaW4gdGhlIGxpdmUtaW4gb2YgdGhpcyBwYXJ0aWN1bGFyIGJ5dGVjb2RlLgotICAgIGlmIChI
YW5kbGVySW5mbyogaGFuZGxlciA9IGNvZGVCbG9jay0+aGFuZGxlckZvckJ5dGVjb2RlT2Zmc2V0
KGJ5dGVjb2RlT2Zmc2V0KSkgewotICAgICAgICAvLyBGSVhNRTogVGhpcyByZXN1bWUgY2hlY2sg
c2hvdWxkIG5vdCBiZSBuZWVkZWQuCi0gICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNTkyODEKLSAgICAgICAgSW50ZXJwcmV0ZXIqIGludGVycHJldGVy
ID0gY29kZUJsb2NrLT52bSgpLT5pbnRlcnByZXRlcjsKLSAgICAgICAgSW5zdHJ1Y3Rpb24qIGlu
c3RydWN0aW9uc0JlZ2luID0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpOwotICAg
ICAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSAmaW5zdHJ1Y3Rpb25zQmVnaW5bYnl0ZWNv
ZGVPZmZzZXRdOwotICAgICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGludGVycHJldGVyLT5nZXRP
cGNvZGVJRChpbnN0cnVjdGlvbi0+dS5vcGNvZGUpOwotICAgICAgICBpZiAob3Bjb2RlSUQgIT0g
b3BfcmVzdW1lKSB7Ci0gICAgICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGhhbmRsZXJCbG9j
ayA9IGZpbmRCYXNpY0Jsb2NrV2l0aExlYWRlck9mZnNldChiYXNpY0Jsb2NrcywgaGFuZGxlci0+
dGFyZ2V0KTsKLSAgICAgICAgICAgIEFTU0VSVChoYW5kbGVyQmxvY2spOwotICAgICAgICAgICAg
aGFuZGxlckJsb2NrLT5pbigpLmZvckVhY2hTZXRCaXQodXNlKTsKLSAgICAgICAgfQotICAgIH0K
LX0KLQotc3RhdGljIHZvaWQgc3RlcE92ZXJJbnN0cnVjdGlvbihDb2RlQmxvY2sqIGNvZGVCbG9j
aywgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaywgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRl
Y29kZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9ja3MsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBG
YXN0Qml0VmVjdG9yJiBvdXQpCi17Ci0gICAgc3RlcE92ZXJJbnN0cnVjdGlvbigKLSAgICAgICAg
Y29kZUJsb2NrLCBibG9jaywgYmFzaWNCbG9ja3MsIGJ5dGVjb2RlT2Zmc2V0LAotICAgICAgICBb
Jl0gKHVuc2lnbmVkIGJpdEluZGV4KSB7Ci0gICAgICAgICAgICAvLyBUaGlzIGlzIHRoZSB1c2Ug
ZnVuY3Rvciwgc28gd2Ugc2V0IHRoZSBiaXQuCi0gICAgICAgICAgICBvdXQuc2V0KGJpdEluZGV4
KTsKLSAgICAgICAgfSwKLSAgICAgICAgWyZdICh1bnNpZ25lZCBiaXRJbmRleCkgewotICAgICAg
ICAgICAgLy8gVGhpcyBpcyB0aGUgZGVmIGZ1bmN0b3IsIHNvIHdlIGNsZWFyIHRoZSBiaXQuCi0g
ICAgICAgICAgICBvdXQuY2xlYXIoYml0SW5kZXgpOwotICAgICAgICB9KTsKKyAgICBKU0M6OmNv
bXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoY29kZUJsb2NrLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rp
b24sIGZ1bmN0b3IpOwogfQogCi1zdGF0aWMgdm9pZCBjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJ5
dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJs
b2NrLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+JiBiYXNpY0Js
b2NrcywgdW5zaWduZWQgdGFyZ2V0T2Zmc2V0LCBGYXN0Qml0VmVjdG9yJiByZXN1bHQpCit0ZW1w
bGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgordm9pZCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmNv
bXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIE9wY29kZUlE
IG9wY29kZUlELCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIEZhc3RCaXRWZWN0b3ImLCBjb25z
dCBGdW5jdG9yJiBmdW5jdG9yKQogewotICAgIEFTU0VSVCghYmxvY2stPmlzRXhpdEJsb2NrKCkp
OwotICAgIEFTU0VSVCghYmxvY2stPmlzRW50cnlCbG9jaygpKTsKLQotICAgIEZhc3RCaXRWZWN0
b3Igb3V0ID0gYmxvY2stPm91dCgpOwotCi0gICAgZm9yIChpbnQgaSA9IGJsb2NrLT5ieXRlY29k
ZU9mZnNldHMoKS5zaXplKCkgLSAxOyBpID49IDA7IGktLSkgewotICAgICAgICB1bnNpZ25lZCBi
eXRlY29kZU9mZnNldCA9IGJsb2NrLT5ieXRlY29kZU9mZnNldHMoKVtpXTsKLSAgICAgICAgaWYg
KHRhcmdldE9mZnNldCA+IGJ5dGVjb2RlT2Zmc2V0KQotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIAotICAgICAgICBzdGVwT3Zlckluc3RydWN0aW9uKGNvZGVCbG9jaywgYmxvY2ssIGJhc2lj
QmxvY2tzLCBieXRlY29kZU9mZnNldCwgb3V0KTsKLSAgICB9Ci0KLSAgICByZXN1bHQuc2V0KG91
dCk7Ci19Ci0KLXN0YXRpYyB2b2lkIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQmxvY2soQ29kZUJs
b2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2ssIFZlY3RvcjxzdGQ6OnVu
aXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mIGJhc2ljQmxvY2tzKQotewotICAgIGlmIChi
bG9jay0+aXNFeGl0QmxvY2soKSB8fCBibG9jay0+aXNFbnRyeUJsb2NrKCkpCi0gICAgICAgIHJl
dHVybjsKLSAgICBjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9j
aywgYmxvY2ssIGJhc2ljQmxvY2tzLCBibG9jay0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKSwgYmxv
Y2stPmluKCkpOwotfQotCi12b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6cnVuTGl2ZW5l
c3NGaXhwb2ludCgpCi17Ci0gICAgVW5saW5rZWRDb2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2Nr
ID0gbV9jb2RlQmxvY2stPnVubGlua2VkQ29kZUJsb2NrKCk7Ci0gICAgdW5zaWduZWQgbnVtYmVy
T2ZWYXJpYWJsZXMgPSB1bmxpbmtlZENvZGVCbG9jay0+bV9udW1DYWxsZWVMb2NhbHM7Ci0KLSAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9iYXNpY0Jsb2Nrcy5zaXplKCk7IGkrKykgewot
ICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrID0gbV9iYXNpY0Jsb2Nrc1tpXS5nZXQo
KTsKLSAgICAgICAgYmxvY2stPmluKCkucmVzaXplKG51bWJlck9mVmFyaWFibGVzKTsKLSAgICAg
ICAgYmxvY2stPm91dCgpLnJlc2l6ZShudW1iZXJPZlZhcmlhYmxlcyk7Ci0gICAgfQotCi0gICAg
Ym9vbCBjaGFuZ2VkOwotICAgIG1fYmFzaWNCbG9ja3MubGFzdCgpLT5pbigpLmNsZWFyQWxsKCk7
Ci0gICAgbV9iYXNpY0Jsb2Nrcy5sYXN0KCktPm91dCgpLmNsZWFyQWxsKCk7Ci0gICAgRmFzdEJp
dFZlY3RvciBuZXdPdXQ7Ci0gICAgbmV3T3V0LnJlc2l6ZShtX2Jhc2ljQmxvY2tzLmxhc3QoKS0+
b3V0KCkubnVtQml0cygpKTsKLSAgICBkbyB7Ci0gICAgICAgIGNoYW5nZWQgPSBmYWxzZTsKLSAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9iYXNpY0Jsb2Nrcy5zaXplKCkgLSAxOyBpLS07KSB7
Ci0gICAgICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrID0gbV9iYXNpY0Jsb2Nrc1tp
XS5nZXQoKTsKLSAgICAgICAgICAgIG5ld091dC5jbGVhckFsbCgpOwotICAgICAgICAgICAgZm9y
ICh1bnNpZ25lZCBqID0gMDsgaiA8IGJsb2NrLT5zdWNjZXNzb3JzKCkuc2l6ZSgpOyBqKyspCi0g
ICAgICAgICAgICAgICAgbmV3T3V0Lm1lcmdlKGJsb2NrLT5zdWNjZXNzb3JzKClbal0tPmluKCkp
OwotICAgICAgICAgICAgYm9vbCBvdXREaWRDaGFuZ2UgPSBibG9jay0+b3V0KCkuc2V0QW5kQ2hl
Y2sobmV3T3V0KTsKLSAgICAgICAgICAgIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQmxvY2sobV9j
b2RlQmxvY2ssIGJsb2NrLCBtX2Jhc2ljQmxvY2tzKTsKLSAgICAgICAgICAgIGNoYW5nZWQgfD0g
b3V0RGlkQ2hhbmdlOwotICAgICAgICB9Ci0gICAgfSB3aGlsZSAoY2hhbmdlZCk7CisgICAgSlND
Ojpjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9jaywgb3Bjb2RlSUQsIGluc3Ry
dWN0aW9uLCBmdW5jdG9yKTsKIH0KIAogdm9pZCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6Omdl
dExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIEZh
c3RCaXRWZWN0b3ImIHJlc3VsdCkKIHsKLSAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrID0g
ZmluZEJhc2ljQmxvY2tGb3JCeXRlY29kZU9mZnNldChtX2Jhc2ljQmxvY2tzLCBieXRlY29kZU9m
ZnNldCk7CisgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jayA9IG1fZ3JhcGguZmluZEJhc2lj
QmxvY2tGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCk7CiAgICAgQVNTRVJUKGJsb2Nr
KTsKICAgICBBU1NFUlQoIWJsb2NrLT5pc0VudHJ5QmxvY2soKSk7CiAgICAgQVNTRVJUKCFibG9j
ay0+aXNFeGl0QmxvY2soKSk7CiAgICAgcmVzdWx0LnJlc2l6ZShibG9jay0+b3V0KCkubnVtQml0
cygpKTsKLSAgICBjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJ5dGVjb2RlT2Zmc2V0KG1fY29kZUJs
b2NrLCBibG9jaywgbV9iYXNpY0Jsb2NrcywgYnl0ZWNvZGVPZmZzZXQsIHJlc3VsdCk7CisgICAg
Y29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCeXRlY29kZU9mZnNldChtX2dyYXBoLCBibG9jaywgYnl0
ZWNvZGVPZmZzZXQsIHJlc3VsdCk7CiB9CiAKIGJvb2wgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lz
OjpvcGVyYW5kSXNMaXZlQXRCeXRlY29kZU9mZnNldChpbnQgb3BlcmFuZCwgdW5zaWduZWQgYnl0
ZWNvZGVPZmZzZXQpCkBAIC0yNDQsMTEgKzgyLDExIEBAIEZhc3RCaXRWZWN0b3IgQnl0ZWNvZGVM
aXZlbmVzc0FuYWx5c2lzOjpnZXRMaXZlbmVzc0luZm9BdEJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVk
CiB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0ZUZ1bGxMaXZlbmVzcyhGdWxs
Qnl0ZWNvZGVMaXZlbmVzcyYgcmVzdWx0KQogewogICAgIEZhc3RCaXRWZWN0b3Igb3V0OworICAg
IENvZGVCbG9jayogY29kZUJsb2NrID0gbV9ncmFwaC5jb2RlQmxvY2soKTsKICAgICAKLSAgICBy
ZXN1bHQubV9tYXAucmVzaXplKG1fY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5zaXplKCkpOwor
ICAgIHJlc3VsdC5tX21hcC5yZXNpemUoY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5zaXplKCkp
OwogICAgIAotICAgIGZvciAodW5zaWduZWQgaSA9IG1fYmFzaWNCbG9ja3Muc2l6ZSgpOyBpLS07
KSB7Ci0gICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2sgPSBtX2Jhc2ljQmxvY2tzW2ld
LmdldCgpOworICAgIGZvciAoc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4mIGJs
b2NrIDogbV9ncmFwaC5iYXNpY0Jsb2Nrc0luUmV2ZXJzZU9yZGVyKCkpIHsKICAgICAgICAgaWYg
KGJsb2NrLT5pc0VudHJ5QmxvY2soKSB8fCBibG9jay0+aXNFeGl0QmxvY2soKSkKICAgICAgICAg
ICAgIGNvbnRpbnVlOwogICAgICAgICAKQEAgLTI1Niw3ICs5NCw3IEBAIHZvaWQgQnl0ZWNvZGVM
aXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlRnVsbExpdmVuZXNzKEZ1bGxCeXRlY29kZUxpdmVuZXNz
JiByZXN1bHQpCiAgICAgICAgIAogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBibG9jay0+Ynl0
ZWNvZGVPZmZzZXRzKCkuc2l6ZSgpOyBpLS07KSB7CiAgICAgICAgICAgICB1bnNpZ25lZCBieXRl
Y29kZU9mZnNldCA9IGJsb2NrLT5ieXRlY29kZU9mZnNldHMoKVtpXTsKLSAgICAgICAgICAgIHN0
ZXBPdmVySW5zdHJ1Y3Rpb24obV9jb2RlQmxvY2ssIGJsb2NrLCBtX2Jhc2ljQmxvY2tzLCBieXRl
Y29kZU9mZnNldCwgb3V0KTsKKyAgICAgICAgICAgIHN0ZXBPdmVySW5zdHJ1Y3Rpb24obV9ncmFw
aCwgYnl0ZWNvZGVPZmZzZXQsIG91dCk7CiAgICAgICAgICAgICByZXN1bHQubV9tYXBbYnl0ZWNv
ZGVPZmZzZXRdID0gb3V0OwogICAgICAgICB9CiAgICAgfQpAQCAtMjY2LDExICsxMDQsMTEgQEAg
dm9pZCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGVLaWxscyhCeXRlY29kZUtpbGxz
JiByZXN1bHQpCiB7CiAgICAgRmFzdEJpdFZlY3RvciBvdXQ7CiAgICAgCi0gICAgcmVzdWx0Lm1f
Y29kZUJsb2NrID0gbV9jb2RlQmxvY2s7Ci0gICAgcmVzdWx0Lm1fa2lsbFNldHMgPSBzdGQ6Om1h
a2VfdW5pcXVlPEJ5dGVjb2RlS2lsbHM6OktpbGxTZXRbXT4obV9jb2RlQmxvY2stPmluc3RydWN0
aW9ucygpLnNpemUoKSk7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBtX2dyYXBoLmNvZGVC
bG9jaygpOworICAgIHJlc3VsdC5tX2NvZGVCbG9jayA9IGNvZGVCbG9jazsKKyAgICByZXN1bHQu
bV9raWxsU2V0cyA9IHN0ZDo6bWFrZV91bmlxdWU8Qnl0ZWNvZGVLaWxsczo6S2lsbFNldFtdPihj
b2RlQmxvY2stPmluc3RydWN0aW9ucygpLnNpemUoKSk7CiAgICAgCi0gICAgZm9yICh1bnNpZ25l
ZCBpID0gbV9iYXNpY0Jsb2Nrcy5zaXplKCk7IGktLTspIHsKLSAgICAgICAgQnl0ZWNvZGVCYXNp
Y0Jsb2NrKiBibG9jayA9IG1fYmFzaWNCbG9ja3NbaV0uZ2V0KCk7CisgICAgZm9yIChzdGQ6OnVu
aXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiYgYmxvY2sgOiBtX2dyYXBoLmJhc2ljQmxvY2tz
SW5SZXZlcnNlT3JkZXIoKSkgewogICAgICAgICBpZiAoYmxvY2stPmlzRW50cnlCbG9jaygpIHx8
IGJsb2NrLT5pc0V4aXRCbG9jaygpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIApA
QCAtMjc5LDcgKzExNyw3IEBAIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpjb21wdXRl
S2lsbHMoQnl0ZWNvZGVLaWxscyYgcmVzdWx0KQogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBi
bG9jay0+Ynl0ZWNvZGVPZmZzZXRzKCkuc2l6ZSgpOyBpLS07KSB7CiAgICAgICAgICAgICB1bnNp
Z25lZCBieXRlY29kZU9mZnNldCA9IGJsb2NrLT5ieXRlY29kZU9mZnNldHMoKVtpXTsKICAgICAg
ICAgICAgIHN0ZXBPdmVySW5zdHJ1Y3Rpb24oCi0gICAgICAgICAgICAgICAgbV9jb2RlQmxvY2ss
IGJsb2NrLCBtX2Jhc2ljQmxvY2tzLCBieXRlY29kZU9mZnNldCwKKyAgICAgICAgICAgICAgICBt
X2dyYXBoLCBieXRlY29kZU9mZnNldCwgb3V0LAogICAgICAgICAgICAgICAgIFsmXSAodW5zaWdu
ZWQgaW5kZXgpIHsKICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyBmb3IgdXNlcy4KICAg
ICAgICAgICAgICAgICAgICAgaWYgKG91dC5nZXQoaW5kZXgpKQpAQCAtMjk3LDEyICsxMzUsMTMg
QEAgdm9pZCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGVLaWxscyhCeXRlY29kZUtp
bGxzJiByZXN1bHQpCiAKIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpkdW1wUmVzdWx0
cygpCiB7Ci0gICAgZGF0YUxvZygiXG5EdW1waW5nIGJ5dGVjb2RlIGxpdmVuZXNzIGZvciAiLCAq
bV9jb2RlQmxvY2ssICI6XG4iKTsKLSAgICBJbnRlcnByZXRlciogaW50ZXJwcmV0ZXIgPSBtX2Nv
ZGVCbG9jay0+dm0oKS0+aW50ZXJwcmV0ZXI7Ci0gICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9u
c0JlZ2luID0gbV9jb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCk7Ci0gICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IG1fYmFzaWNCbG9ja3Muc2l6ZSgpOyBpKyspIHsKLSAgICAgICAg
Qnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jayA9IG1fYmFzaWNCbG9ja3NbaV0uZ2V0KCk7Ci0gICAg
ICAgIGRhdGFMb2dGKCJcbkJ5dGVjb2RlIGJhc2ljIGJsb2NrICV1OiAlcCAob2Zmc2V0OiAldSwg
bGVuZ3RoOiAldSlcbiIsIGksIGJsb2NrLCBibG9jay0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKSwg
YmxvY2stPnRvdGFsQnl0ZWNvZGVMZW5ndGgoKSk7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sg
PSBtX2dyYXBoLmNvZGVCbG9jaygpOworICAgIGRhdGFMb2coIlxuRHVtcGluZyBieXRlY29kZSBs
aXZlbmVzcyBmb3IgIiwgKmNvZGVCbG9jaywgIjpcbiIpOworICAgIEludGVycHJldGVyKiBpbnRl
cnByZXRlciA9IGNvZGVCbG9jay0+dm0oKS0+aW50ZXJwcmV0ZXI7CisgICAgSW5zdHJ1Y3Rpb24q
IGluc3RydWN0aW9uc0JlZ2luID0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpOwor
ICAgIHVuc2lnbmVkIGkgPSAwOworICAgIGZvciAoQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jayA6
IG1fZ3JhcGgpIHsKKyAgICAgICAgZGF0YUxvZ0YoIlxuQnl0ZWNvZGUgYmFzaWMgYmxvY2sgJXU6
ICVwIChvZmZzZXQ6ICV1LCBsZW5ndGg6ICV1KVxuIiwgaSsrLCBibG9jaywgYmxvY2stPmxlYWRl
ckJ5dGVjb2RlT2Zmc2V0KCksIGJsb2NrLT50b3RhbEJ5dGVjb2RlTGVuZ3RoKCkpOwogICAgICAg
ICBkYXRhTG9nRigiU3VjY2Vzc29yczogIik7CiAgICAgICAgIGZvciAodW5zaWduZWQgaiA9IDA7
IGogPCBibG9jay0+c3VjY2Vzc29ycygpLnNpemUoKTsgaisrKSB7CiAgICAgICAgICAgICBCeXRl
Y29kZUJhc2ljQmxvY2sqIHN1Y2Nlc3NvciA9IGJsb2NrLT5zdWNjZXNzb3JzKClbal07CkBAIC0z
MjcsNyArMTY2LDcgQEAgdm9pZCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmR1bXBSZXN1bHRz
KCkKICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZ0YoIiV1ICIsIGopOwogICAgICAgICAgICAg
fQogICAgICAgICAgICAgZGF0YUxvZ0YoIlxuIik7Ci0gICAgICAgICAgICBtX2NvZGVCbG9jay0+
ZHVtcEJ5dGVjb2RlKFdURjo6ZGF0YUZpbGUoKSwgbV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgp
LT5nbG9iYWxFeGVjKCksIGluc3RydWN0aW9uc0JlZ2luLCBjdXJyZW50SW5zdHJ1Y3Rpb24pOwor
ICAgICAgICAgICAgY29kZUJsb2NrLT5kdW1wQnl0ZWNvZGUoV1RGOjpkYXRhRmlsZSgpLCBjb2Rl
QmxvY2stPmdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVjKCksIGluc3RydWN0aW9uc0JlZ2luLCBj
dXJyZW50SW5zdHJ1Y3Rpb24pOwogCiAgICAgICAgICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGlu
dGVycHJldGVyLT5nZXRPcGNvZGVJRChpbnN0cnVjdGlvbnNCZWdpbltieXRlY29kZU9mZnNldF0u
dS5vcGNvZGUpOwogICAgICAgICAgICAgdW5zaWduZWQgb3Bjb2RlTGVuZ3RoID0gb3Bjb2RlTGVu
Z3Roc1tvcGNvZGVJRF07CkBAIC0zNDYsOSArMTg1LDcgQEAgdm9pZCBCeXRlY29kZUxpdmVuZXNz
QW5hbHlzaXM6OmR1bXBSZXN1bHRzKCkKIAogdm9pZCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6
OmNvbXB1dGUoKQogewotICAgIGNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzKG1fY29kZUJsb2Nr
LCBtX2Jhc2ljQmxvY2tzKTsKLSAgICBBU1NFUlQobV9iYXNpY0Jsb2Nrcy5zaXplKCkpOwotICAg
IHJ1bkxpdmVuZXNzRml4cG9pbnQoKTsKKyAgICBydW5MaXZlbmVzc0ZpeHBvaW50KG1fZ3JhcGgp
OwogCiAgICAgaWYgKE9wdGlvbnM6OmR1bXBCeXRlY29kZUxpdmVuZXNzUmVzdWx0cygpKQogICAg
ICAgICBkdW1wUmVzdWx0cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5oCmluZGV4IGVjZTE2ZjIxZjAxNTEw
YTY0MjdmZDg0MTE0MDc5YmVkODcwYzA4NzUuLmUxMmNkOGVkY2U3NmUxMjJlZjA0ZWUxZjM1ZmJh
ODIxYjhkN2Y3ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmgKQEAgLTIzLDEwICsyMywxMSBAQAogICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgQnl0ZWNvZGVM
aXZlbmVzc0FuYWx5c2lzX2gKLSNkZWZpbmUgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzX2gKKyNw
cmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQnl0ZWNvZGVCYXNpY0Jsb2NrLmgiCisjaW5jbHVkZSAi
Qnl0ZWNvZGVHcmFwaC5oIgorI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgPHd0Zi9G
YXN0Qml0VmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+CkBAIC0zNCwxMyArMzUsMjkgQEAKIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBC
eXRlY29kZUtpbGxzOwotY2xhc3MgQ29kZUJsb2NrOwogY2xhc3MgRnVsbEJ5dGVjb2RlTGl2ZW5l
c3M7CiAKLWNsYXNzIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcyB7Cit0ZW1wbGF0ZTx0eXBlbmFt
ZSBEZXJpdmVkQW5hbHlzaXM+CitjbGFzcyBCeXRlY29kZUxpdmVuZXNzUHJvcGFnYXRpb24gewor
cHJvdGVjdGVkOgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEdyYXBoLCB0eXBlbmFtZSBVc2VGdW5j
dG9yLCB0eXBlbmFtZSBEZWZGdW5jdG9yPiB2b2lkIHN0ZXBPdmVySW5zdHJ1Y3Rpb24oR3JhcGgm
LCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgRmFzdEJpdFZlY3RvciYgb3V0LCBjb25zdCBVc2VG
dW5jdG9yJiwgY29uc3QgRGVmRnVuY3RvciYpOworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgR3Jh
cGg+IHZvaWQgc3RlcE92ZXJJbnN0cnVjdGlvbihHcmFwaCYsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zm
c2V0LCBGYXN0Qml0VmVjdG9yJiBvdXQpOworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgR3JhcGg+
IGJvb2wgY29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCeXRlY29kZU9mZnNldChHcmFwaCYsIEJ5dGVj
b2RlQmFzaWNCbG9jayosIHVuc2lnbmVkIHRhcmdldE9mZnNldCwgRmFzdEJpdFZlY3RvciYgcmVz
dWx0KTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEdyYXBoPiBib29sIGNvbXB1dGVMb2NhbExp
dmVuZXNzRm9yQmxvY2soR3JhcGgmLCBCeXRlY29kZUJhc2ljQmxvY2sqKTsKKworICAgIHRlbXBs
YXRlPHR5cGVuYW1lIEdyYXBoPiBGYXN0Qml0VmVjdG9yIGdldExpdmVuZXNzSW5mb0F0Qnl0ZWNv
ZGVPZmZzZXQoR3JhcGgmLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCk7CisKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBHcmFwaD4gdm9pZCBydW5MaXZlbmVzc0ZpeHBvaW50KEdyYXBoJik7Cit9Owor
CitjbGFzcyBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMgOiBwcml2YXRlIEJ5dGVjb2RlTGl2ZW5l
c3NQcm9wYWdhdGlvbjxCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM+IHsKICAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShCeXRlY29kZUxpdmVuZXNz
QW5hbHlzaXMpOwogcHVibGljOgorICAgIGZyaWVuZCBjbGFzcyBCeXRlY29kZUxpdmVuZXNzUHJv
cGFnYXRpb248Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzPjsKICAgICBCeXRlY29kZUxpdmVuZXNz
QW5hbHlzaXMoQ29kZUJsb2NrKik7CiAgICAgCiAgICAgYm9vbCBvcGVyYW5kSXNMaXZlQXRCeXRl
Y29kZU9mZnNldChpbnQgb3BlcmFuZCwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpOwpAQCAtNTEs
MTkgKzY4LDE5IEBAIGNsYXNzIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcyB7CiAKIHByaXZhdGU6
CiAgICAgdm9pZCBjb21wdXRlKCk7Ci0gICAgdm9pZCBydW5MaXZlbmVzc0ZpeHBvaW50KCk7CiAg
ICAgdm9pZCBkdW1wUmVzdWx0cygpOwogCiAgICAgdm9pZCBnZXRMaXZlbmVzc0luZm9BdEJ5dGVj
b2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBGYXN0Qml0VmVjdG9yJik7CiAKLSAg
ICBDb2RlQmxvY2sqIG1fY29kZUJsb2NrOwotICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0
ZWNvZGVCYXNpY0Jsb2NrPj4gbV9iYXNpY0Jsb2NrczsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBG
dW5jdG9yPiB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiwgT3Bj
b2RlSUQsIEluc3RydWN0aW9uKiwgRmFzdEJpdFZlY3RvciYsIGNvbnN0IEZ1bmN0b3ImKTsKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVP
ZmZzZXQoQ29kZUJsb2NrKiwgT3Bjb2RlSUQsIEluc3RydWN0aW9uKiwgRmFzdEJpdFZlY3RvciYs
IGNvbnN0IEZ1bmN0b3ImKTsKKworICAgIEJ5dGVjb2RlR3JhcGg8Q29kZUJsb2NrPiBtX2dyYXBo
OwogfTsKIAogaW5saW5lIGJvb2wgb3BlcmFuZElzQWx3YXlzTGl2ZShpbnQgb3BlcmFuZCk7CiBp
bmxpbmUgYm9vbCBvcGVyYW5kVGhhdElzTm90QWx3YXlzTGl2ZUlzTGl2ZShjb25zdCBGYXN0Qml0
VmVjdG9yJiBvdXQsIGludCBvcGVyYW5kKTsKIGlubGluZSBib29sIG9wZXJhbmRJc0xpdmUoY29u
c3QgRmFzdEJpdFZlY3RvciYgb3V0LCBpbnQgb3BlcmFuZCk7CitpbmxpbmUgYm9vbCBpc1ZhbGlk
UmVnaXN0ZXJGb3JMaXZlbmVzcyhpbnQgb3BlcmFuZCk7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwot
Ci0jZW5kaWYgLy8gQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzX2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNJbmxpbmVz
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5
c2lzSW5saW5lcy5oCmluZGV4IDliNWM3NTVmY2I2Y2Q1MTgwNTE0NTAwNzg5MjJhYzRkNmQ0ZDIz
OGYuLmNmNmM4ZDJhNDM0ZDFkZTk2MWFhNGE5YjFlMGU0ZDBjNGZjMWRlMTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNJ
bmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2
ZW5lc3NBbmFseXNpc0lubGluZXMuaApAQCAtMjMsMTEgKzIzLDEyIEBACiAgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBCeXRlY29kZUxpdmVuZXNzQW5h
bHlzaXNJbmxpbmVzX2gKLSNkZWZpbmUgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzSW5saW5lc19o
CisjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkJ5dGVjb2RlR3JhcGguaCIKICNpbmNsdWRlICJC
eXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuaCIKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNs
dWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKIAogbmFtZXNwYWNl
IEpTQyB7CkBAIC01MCw3ICs1MSwxNTEgQEAgaW5saW5lIGJvb2wgb3BlcmFuZElzTGl2ZShjb25z
dCBGYXN0Qml0VmVjdG9yJiBvdXQsIGludCBvcGVyYW5kKQogICAgIHJldHVybiBvcGVyYW5kSXNB
bHdheXNMaXZlKG9wZXJhbmQpIHx8IG9wZXJhbmRUaGF0SXNOb3RBbHdheXNMaXZlSXNMaXZlKG91
dCwgb3BlcmFuZCk7CiB9CiAKLX0gLy8gbmFtZXNwYWNlIEpTQworaW5saW5lIGJvb2wgaXNWYWxp
ZFJlZ2lzdGVyRm9yTGl2ZW5lc3MoaW50IG9wZXJhbmQpCit7CisgICAgVmlydHVhbFJlZ2lzdGVy
IHZpcnR1YWxSZWcob3BlcmFuZCk7CisgICAgaWYgKHZpcnR1YWxSZWcuaXNDb25zdGFudCgpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHZpcnR1YWxSZWcuaXNMb2NhbCgpOwor
fQorCisvLyBTaW1wbGlmaWVkIGludGVyZmFjZSB0byBieXRlY29kZSB1c2UvZGVmLCB3aGljaCBk
ZXRlcm1pbmVzIGRlZnMgZmlyc3QgYW5kIHRoZW4gdXNlcywgYW5kIGluY2x1ZGVzCisvLyBleGNl
cHRpb24gaGFuZGxlcnMgaW4gdGhlIHVzZXMuCit0ZW1wbGF0ZTx0eXBlbmFtZSBEZXJpdmVkQW5h
bHlzaXM+Cit0ZW1wbGF0ZTx0eXBlbmFtZSBHcmFwaCwgdHlwZW5hbWUgVXNlRnVuY3RvciwgdHlw
ZW5hbWUgRGVmRnVuY3Rvcj4KK2lubGluZSB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NQcm9wYWdhdGlv
bjxEZXJpdmVkQW5hbHlzaXM+OjpzdGVwT3Zlckluc3RydWN0aW9uKEdyYXBoJiBncmFwaCwgdW5z
aWduZWQgYnl0ZWNvZGVPZmZzZXQsIEZhc3RCaXRWZWN0b3ImIG91dCwgY29uc3QgVXNlRnVuY3Rv
ciYgdXNlLCBjb25zdCBEZWZGdW5jdG9yJiBkZWYpCit7CisgICAgLy8gVGhpcyBhYnN0cmFjdGx5
IGV4ZWN1dGUgdGhlIGluc3RydWN0aW9uIGluIHJldmVyc2UuIEluc3RydWN0aW9ucyBsb2dpY2Fs
bHkgZmlyc3QgdXNlIG9wZXJhbmRzIGFuZAorICAgIC8vIHRoZW4gZGVmaW5lIG9wZXJhbmRzLiBU
aGlzIGxvZ2ljYWwgb3JkZXJpbmcgaXMgbmVjZXNzYXJ5IGZvciBvcGVyYXRpb25zIHRoYXQgdXNl
IGFuZCBkZWYgdGhlIHNhbWUKKyAgICAvLyBvcGVyYW5kLCBsaWtlOgorICAgIC8vCisgICAgLy8g
ICAgIG9wX2FkZCBsb2MxLCBsb2MxLCBsb2MyCisgICAgLy8KKyAgICAvLyBUaGUgdXNlIG9mIGxv
YzEgaGFwcGVucyBiZWZvcmUgdGhlIGRlZiBvZiBsb2MxLiBUaGF0J3MgYSBzZW1hbnRpYyByZXF1
aXJlbWVudCBzaW5jZSB0aGUgYWRkCisgICAgLy8gb3BlcmF0aW9uIGNhbm5vdCB0cmF2ZWwgZm9y
d2FyZCBpbiB0aW1lIHRvIHJlYWQgdGhlIHZhbHVlIHRoYXQgaXQgd2lsbCBwcm9kdWNlIGFmdGVy
IHJlYWRpbmcgdGhhdAorICAgIC8vIHZhbHVlLiBTaW5jZSB3ZSBhcmUgZXhlY3V0aW5nIGluIHJl
dmVyc2UsIHRoaXMgbWVhbnMgdGhhdCB3ZSBtdXN0IGRvIGRlZnMgYmVmb3JlIHVzZXMgKHJldmVy
c2Ugb2YKKyAgICAvLyB1c2VzIGJlZm9yZSBkZWZzKS4KKyAgICAvLworICAgIC8vIFNpbmNlIHRo
aXMgaXMgYSBsaXZlbmVzcyBhbmFseXNpcywgdGhpcyBvcmRlcmluZyBlbmRzIHVwIGJlaW5nIHBh
cnRpY3VsYXJseSBpbXBvcnRhbnQ6IGlmIHdlIGRpZAorICAgIC8vIHVzZXMgYmVmb3JlIGRlZnMs
IHRoZW4gdGhlIGFkZCBvcGVyYXRpb24gYWJvdmUgd291bGQgYXBwZWFyIHRvIG5vdCBoYXZlIGxv
YzEgbGl2ZSwgc2luY2Ugd2UnZAorICAgIC8vIGZpcnN0IGFkZCBpdCB0byB0aGUgb3V0IHNldCAo
dGhlIHVzZSksIGFuZCB0aGVuIHdlJ2QgcmVtb3ZlIGl0ICh0aGUgZGVmKS4KKworICAgIGF1dG8q
IGNvZGVCbG9jayA9IGdyYXBoLmNvZGVCbG9jaygpOworICAgIEludGVycHJldGVyKiBpbnRlcnBy
ZXRlciA9IGNvZGVCbG9jay0+dm0oKS0+aW50ZXJwcmV0ZXI7CisgICAgYXV0byogaW5zdHJ1Y3Rp
b25zQmVnaW4gPSBncmFwaC5pbnN0cnVjdGlvbnMoKS5iZWdpbigpOworICAgIGF1dG8qIGluc3Ry
dWN0aW9uID0gJmluc3RydWN0aW9uc0JlZ2luW2J5dGVjb2RlT2Zmc2V0XTsKKyAgICBPcGNvZGVJ
RCBvcGNvZGVJRCA9IGludGVycHJldGVyLT5nZXRPcGNvZGVJRCgqaW5zdHJ1Y3Rpb24pOworCisg
ICAgc3RhdGljX2Nhc3Q8RGVyaXZlZEFuYWx5c2lzKj4odGhpcyktPmNvbXB1dGVEZWZzRm9yQnl0
ZWNvZGVPZmZzZXQoCisgICAgICAgIGNvZGVCbG9jaywgb3Bjb2RlSUQsIGluc3RydWN0aW9uLCBv
dXQsCisgICAgICAgIFsmXSAodHlwZW5hbWUgR3JhcGg6OkNvZGVCbG9jayosIHR5cGVuYW1lIEdy
YXBoOjpJbnN0cnVjdGlvbiosIE9wY29kZUlELCBpbnQgb3BlcmFuZCkgeworICAgICAgICAgICAg
aWYgKGlzVmFsaWRSZWdpc3RlckZvckxpdmVuZXNzKG9wZXJhbmQpKQorICAgICAgICAgICAgICAg
IGRlZihWaXJ0dWFsUmVnaXN0ZXIob3BlcmFuZCkudG9Mb2NhbCgpKTsKKyAgICAgICAgfSk7CisK
KyAgICBzdGF0aWNfY2FzdDxEZXJpdmVkQW5hbHlzaXMqPih0aGlzKS0+Y29tcHV0ZVVzZXNGb3JC
eXRlY29kZU9mZnNldCgKKyAgICAgICAgY29kZUJsb2NrLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb24s
IG91dCwKKyAgICAgICAgWyZdICh0eXBlbmFtZSBHcmFwaDo6Q29kZUJsb2NrKiwgdHlwZW5hbWUg
R3JhcGg6Okluc3RydWN0aW9uKiwgT3Bjb2RlSUQsIGludCBvcGVyYW5kKSB7CisgICAgICAgICAg
ICBpZiAoaXNWYWxpZFJlZ2lzdGVyRm9yTGl2ZW5lc3Mob3BlcmFuZCkpCisgICAgICAgICAgICAg
ICAgdXNlKFZpcnR1YWxSZWdpc3RlcihvcGVyYW5kKS50b0xvY2FsKCkpOworICAgICAgICB9KTsK
KworICAgIC8vIElmIHdlIGhhdmUgYW4gZXhjZXB0aW9uIGhhbmRsZXIsIHdlIHdhbnQgdGhlIGxp
dmUtaW4gdmFyaWFibGVzIG9mIHRoZSAKKyAgICAvLyBleGNlcHRpb24gaGFuZGxlciBibG9jayB0
byBiZSBpbmNsdWRlZCBpbiB0aGUgbGl2ZS1pbiBvZiB0aGlzIHBhcnRpY3VsYXIgYnl0ZWNvZGUu
CisgICAgaWYgKGF1dG8qIGhhbmRsZXIgPSBjb2RlQmxvY2stPmhhbmRsZXJGb3JCeXRlY29kZU9m
ZnNldChieXRlY29kZU9mZnNldCkpIHsKKyAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBoYW5k
bGVyQmxvY2sgPSBncmFwaC5maW5kQmFzaWNCbG9ja1dpdGhMZWFkZXJPZmZzZXQoaGFuZGxlci0+
dGFyZ2V0KTsKKyAgICAgICAgQVNTRVJUKGhhbmRsZXJCbG9jayk7CisgICAgICAgIGhhbmRsZXJC
bG9jay0+aW4oKS5mb3JFYWNoU2V0Qml0KHVzZSk7CisgICAgfQorfQorCit0ZW1wbGF0ZTx0eXBl
bmFtZSBEZXJpdmVkQW5hbHlzaXM+Cit0ZW1wbGF0ZTx0eXBlbmFtZSBHcmFwaD4KK2lubGluZSB2
b2lkIEJ5dGVjb2RlTGl2ZW5lc3NQcm9wYWdhdGlvbjxEZXJpdmVkQW5hbHlzaXM+OjpzdGVwT3Zl
ckluc3RydWN0aW9uKEdyYXBoJiBncmFwaCwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIEZhc3RC
aXRWZWN0b3ImIG91dCkKK3sKKyAgICBzdGVwT3Zlckluc3RydWN0aW9uKAorICAgICAgICBncmFw
aCwgYnl0ZWNvZGVPZmZzZXQsIG91dCwKKyAgICAgICAgWyZdICh1bnNpZ25lZCBiaXRJbmRleCkg
eworICAgICAgICAgICAgLy8gVGhpcyBpcyB0aGUgdXNlIGZ1bmN0b3IsIHNvIHdlIHNldCB0aGUg
Yml0LgorICAgICAgICAgICAgb3V0LnNldChiaXRJbmRleCk7CisgICAgICAgIH0sCisgICAgICAg
IFsmXSAodW5zaWduZWQgYml0SW5kZXgpIHsKKyAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIGRl
ZiBmdW5jdG9yLCBzbyB3ZSBjbGVhciB0aGUgYml0LgorICAgICAgICAgICAgb3V0LmNsZWFyKGJp
dEluZGV4KTsKKyAgICAgICAgfSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIERlcml2ZWRBbmFs
eXNpcz4KK3RlbXBsYXRlPHR5cGVuYW1lIEdyYXBoPgoraW5saW5lIGJvb2wgQnl0ZWNvZGVMaXZl
bmVzc1Byb3BhZ2F0aW9uPERlcml2ZWRBbmFseXNpcz46OmNvbXB1dGVMb2NhbExpdmVuZXNzRm9y
Qnl0ZWNvZGVPZmZzZXQoR3JhcGgmIGdyYXBoLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrLCB1
bnNpZ25lZCB0YXJnZXRPZmZzZXQsIEZhc3RCaXRWZWN0b3ImIHJlc3VsdCkKK3sKKyAgICBBU1NF
UlQoIWJsb2NrLT5pc0V4aXRCbG9jaygpKTsKKyAgICBBU1NFUlQoIWJsb2NrLT5pc0VudHJ5Qmxv
Y2soKSk7CiAKLSNlbmRpZiAvLyBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNJbmxpbmVzX2gKKyAg
ICBGYXN0Qml0VmVjdG9yIG91dCA9IGJsb2NrLT5vdXQoKTsKIAorICAgIGZvciAoaW50IGkgPSBi
bG9jay0+Ynl0ZWNvZGVPZmZzZXRzKCkuc2l6ZSgpIC0gMTsgaSA+PSAwOyBpLS0pIHsKKyAgICAg
ICAgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQgPSBibG9jay0+Ynl0ZWNvZGVPZmZzZXRzKClbaV07
CisgICAgICAgIGlmICh0YXJnZXRPZmZzZXQgPiBieXRlY29kZU9mZnNldCkKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBzdGVwT3Zlckluc3RydWN0aW9uKGdyYXBoLCBieXRlY29kZU9mZnNl
dCwgb3V0KTsKKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0LnNldEFuZENoZWNrKG91dCk7Cit9
CisKK3RlbXBsYXRlPHR5cGVuYW1lIERlcml2ZWRBbmFseXNpcz4KK3RlbXBsYXRlPHR5cGVuYW1l
IEdyYXBoPgoraW5saW5lIGJvb2wgQnl0ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0aW9uPERlcml2ZWRB
bmFseXNpcz46OmNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQmxvY2soR3JhcGgmIGdyYXBoLCBCeXRl
Y29kZUJhc2ljQmxvY2sqIGJsb2NrKQoreworICAgIGlmIChibG9jay0+aXNFeGl0QmxvY2soKSB8
fCBibG9jay0+aXNFbnRyeUJsb2NrKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1
cm4gY29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCeXRlY29kZU9mZnNldChncmFwaCwgYmxvY2ssIGJs
b2NrLT5sZWFkZXJCeXRlY29kZU9mZnNldCgpLCBibG9jay0+aW4oKSk7Cit9CisKK3RlbXBsYXRl
PHR5cGVuYW1lIERlcml2ZWRBbmFseXNpcz4KK3RlbXBsYXRlPHR5cGVuYW1lIEdyYXBoPgoraW5s
aW5lIEZhc3RCaXRWZWN0b3IgQnl0ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0aW9uPERlcml2ZWRBbmFs
eXNpcz46OmdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQoR3JhcGgmIGdyYXBoLCB1bnNp
Z25lZCBieXRlY29kZU9mZnNldCkKK3sKKyAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrID0g
Z3JhcGguZmluZEJhc2ljQmxvY2tGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCk7Cisg
ICAgQVNTRVJUKGJsb2NrKTsKKyAgICBBU1NFUlQoIWJsb2NrLT5pc0VudHJ5QmxvY2soKSk7Cisg
ICAgQVNTRVJUKCFibG9jay0+aXNFeGl0QmxvY2soKSk7CisgICAgRmFzdEJpdFZlY3RvciBvdXQ7
CisgICAgb3V0LnJlc2l6ZShibG9jay0+b3V0KCkubnVtQml0cygpKTsKKyAgICBjb21wdXRlTG9j
YWxMaXZlbmVzc0ZvckJ5dGVjb2RlT2Zmc2V0KGdyYXBoLCBibG9jaywgYnl0ZWNvZGVPZmZzZXQs
IG91dCk7CisgICAgcmV0dXJuIG91dDsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgRGVyaXZlZEFu
YWx5c2lzPgordGVtcGxhdGU8dHlwZW5hbWUgR3JhcGg+CitpbmxpbmUgdm9pZCBCeXRlY29kZUxp
dmVuZXNzUHJvcGFnYXRpb248RGVyaXZlZEFuYWx5c2lzPjo6cnVuTGl2ZW5lc3NGaXhwb2ludChH
cmFwaCYgZ3JhcGgpCit7CisgICAgYXV0byogY29kZUJsb2NrID0gZ3JhcGguY29kZUJsb2NrKCk7
CisgICAgdW5zaWduZWQgbnVtYmVyT2ZWYXJpYWJsZXMgPSBjb2RlQmxvY2stPm51bUNhbGxlZUxv
Y2FscygpOworICAgIGZvciAoQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jayA6IGdyYXBoKSB7Cisg
ICAgICAgIGJsb2NrLT5pbigpLnJlc2l6ZShudW1iZXJPZlZhcmlhYmxlcyk7CisgICAgICAgIGJs
b2NrLT5vdXQoKS5yZXNpemUobnVtYmVyT2ZWYXJpYWJsZXMpOworICAgICAgICBibG9jay0+aW4o
KS5jbGVhckFsbCgpOworICAgICAgICBibG9jay0+b3V0KCkuY2xlYXJBbGwoKTsKKyAgICB9CisK
KyAgICBib29sIGNoYW5nZWQ7CisgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBsYXN0QmxvY2sgPSBn
cmFwaC5sYXN0KCk7CisgICAgbGFzdEJsb2NrLT5pbigpLmNsZWFyQWxsKCk7CisgICAgbGFzdEJs
b2NrLT5vdXQoKS5jbGVhckFsbCgpOworICAgIEZhc3RCaXRWZWN0b3IgbmV3T3V0OworICAgIG5l
d091dC5yZXNpemUobGFzdEJsb2NrLT5vdXQoKS5udW1CaXRzKCkpOworICAgIGRvIHsKKyAgICAg
ICAgY2hhbmdlZCA9IGZhbHNlOworICAgICAgICBmb3IgKHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29k
ZUJhc2ljQmxvY2s+JiBibG9jayA6IGdyYXBoLmJhc2ljQmxvY2tzSW5SZXZlcnNlT3JkZXIoKSkg
eworICAgICAgICAgICAgbmV3T3V0LmNsZWFyQWxsKCk7CisgICAgICAgICAgICBmb3IgKEJ5dGVj
b2RlQmFzaWNCbG9jayogc3VjY2Vzc29yIDogYmxvY2stPnN1Y2Nlc3NvcnMoKSkKKyAgICAgICAg
ICAgICAgICBuZXdPdXQubWVyZ2Uoc3VjY2Vzc29yLT5pbigpKTsKKyAgICAgICAgICAgIGJsb2Nr
LT5vdXQoKS5zZXQobmV3T3V0KTsKKyAgICAgICAgICAgIGNoYW5nZWQgfD0gY29tcHV0ZUxvY2Fs
TGl2ZW5lc3NGb3JCbG9jayhncmFwaCwgYmxvY2suZ2V0KCkpOworICAgICAgICB9CisgICAgfSB3
aGlsZSAoY2hhbmdlZCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlUmV3cml0ZXIuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlUmV3cml0ZXIuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjI4ZGMyMGIzZmU3YmJiNTA3OTI5ODQxZTIyMTI1ODk0ZDhiMjcxZjgKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVSZXdyaXRlci5jcHAK
QEAgLTAsMCArMSwxMTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgWXVzdWtlIFN1enVr
aSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIkJ5dGVjb2RlUmV3cml0ZXIuaCIKKworI2luY2x1ZGUgIlByZWNpc2VKdW1wVGFy
Z2V0c0lubGluZXMuaCIKKyNpbmNsdWRlIDx3dGYvQnViYmxlU29ydC5oPgorCituYW1lc3BhY2Ug
SlNDIHsKKwordm9pZCBCeXRlY29kZVJld3JpdGVyOjphcHBseU1vZGlmaWNhdGlvbigpCit7Cisg
ICAgZm9yIChzaXplX3QgaW5zZXJ0aW9uSW5kZXggPSBtX2luc2VydGlvbnMuc2l6ZSgpOyBpbnNl
cnRpb25JbmRleC0tOykgeworICAgICAgICBJbnNlcnRpb24mIGluc2VydGlvbiA9IG1faW5zZXJ0
aW9uc1tpbnNlcnRpb25JbmRleF07CisgICAgICAgIGlmIChpbnNlcnRpb24udHlwZSA9PSBJbnNl
cnRpb246OlR5cGU6OlJlbW92ZSkKKyAgICAgICAgICAgIG1fZ3JhcGguaW5zdHJ1Y3Rpb25zKCku
cmVtb3ZlKGluc2VydGlvbi5pbmRleC5ieXRlY29kZU9mZnNldCwgaW5zZXJ0aW9uLmxlbmd0aCgp
KTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBpZiAoaW5zZXJ0aW9uLmluY2x1ZGVCcmFu
Y2ggPT0gSW5jbHVkZUJyYW5jaDo6WWVzKSB7CisgICAgICAgICAgICAgICAgaW50IGZpbmFsT2Zm
c2V0ID0gaW5zZXJ0aW9uLmluZGV4LmJ5dGVjb2RlT2Zmc2V0ICsgY2FsY3VsYXRlRGlmZmVyZW5j
ZShtX2luc2VydGlvbnMuYmVnaW4oKSwgbV9pbnNlcnRpb25zLmJlZ2luKCkgKyBpbnNlcnRpb25J
bmRleCk7CisgICAgICAgICAgICAgICAgYWRqdXN0SnVtcFRhcmdldHNJbkZyYWdtZW50KGZpbmFs
T2Zmc2V0LCBpbnNlcnRpb24pOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbV9ncmFwaC5p
bnN0cnVjdGlvbnMoKS5pbnNlcnRWZWN0b3IoaW5zZXJ0aW9uLmluZGV4LmJ5dGVjb2RlT2Zmc2V0
LCBpbnNlcnRpb24uaW5zdHJ1Y3Rpb25zKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBtX2luc2Vy
dGlvbnMuY2xlYXIoKTsKK30KKwordm9pZCBCeXRlY29kZVJld3JpdGVyOjpleGVjdXRlKCkKK3sK
KyAgICBXVEY6OmJ1YmJsZVNvcnQobV9pbnNlcnRpb25zLmJlZ2luKCksIG1faW5zZXJ0aW9ucy5l
bmQoKSwgW10gKGNvbnN0IEluc2VydGlvbiYgbGhzLCBjb25zdCBJbnNlcnRpb24mIHJocykgewor
ICAgICAgICByZXR1cm4gbGhzLmluZGV4IDwgcmhzLmluZGV4OworICAgIH0pOworCisgICAgVW5s
aW5rZWRDb2RlQmxvY2sqIGNvZGVCbG9jayA9IG1fZ3JhcGguY29kZUJsb2NrKCk7CisgICAgY29k
ZUJsb2NrLT5hcHBseU1vZGlmaWNhdGlvbigqdGhpcyk7Cit9CisKK3ZvaWQgQnl0ZWNvZGVSZXdy
aXRlcjo6YWRqdXN0SnVtcFRhcmdldHNJbkZyYWdtZW50KHVuc2lnbmVkIGZpbmFsT2Zmc2V0LCBJ
bnNlcnRpb24mIGluc2VydGlvbikKK3sKKyAgICBhdXRvJiBmcmFnbWVudCA9IGluc2VydGlvbi5p
bnN0cnVjdGlvbnM7CisgICAgVW5saW5rZWRJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4g
PSBmcmFnbWVudC5kYXRhKCk7CisgICAgZm9yICh1bnNpZ25lZCBmcmFnbWVudE9mZnNldCA9IDAs
IGZyYWdtZW50Q291bnQgPSBmcmFnbWVudC5zaXplKCk7IGZyYWdtZW50T2Zmc2V0IDwgZnJhZ21l
bnRDb3VudDspIHsKKyAgICAgICAgVW5saW5rZWRJbnN0cnVjdGlvbiYgaW5zdHJ1Y3Rpb24gPSBm
cmFnbWVudFtmcmFnbWVudE9mZnNldF07CisgICAgICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW5z
dHJ1Y3Rpb24udS5vcGNvZGU7CisgICAgICAgIGlmIChpc0JyYW5jaChvcGNvZGVJRCkpIHsKKyAg
ICAgICAgICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0ID0gZmluYWxPZmZzZXQgKyBmcmFnbWVu
dE9mZnNldDsKKyAgICAgICAgICAgIFVubGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBtX2dy
YXBoLmNvZGVCbG9jaygpOworICAgICAgICAgICAgZXh0cmFjdFN0b3JlZEp1bXBUYXJnZXRzRm9y
Qnl0ZWNvZGVPZmZzZXQoY29kZUJsb2NrLCBjb2RlQmxvY2stPnZtKCktPmludGVycHJldGVyLCBp
bnN0cnVjdGlvbnNCZWdpbiwgZnJhZ21lbnRPZmZzZXQsIFsmXShpbnQzMl90JiBsYWJlbCkgewor
ICAgICAgICAgICAgICAgIGludCBhYnNvbHV0ZU9mZnNldCA9IGFkanVzdEFic29sdXRlT2Zmc2V0
KGxhYmVsKTsKKyAgICAgICAgICAgICAgICBsYWJlbCA9IGFic29sdXRlT2Zmc2V0IC0gc3RhdGlj
X2Nhc3Q8aW50PihieXRlY29kZU9mZnNldCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQor
ICAgICAgICBmcmFnbWVudE9mZnNldCArPSBvcGNvZGVMZW5ndGgob3Bjb2RlSUQpOworICAgIH0K
K30KKwordm9pZCBCeXRlY29kZVJld3JpdGVyOjppbnNlcnRJbXBsKEluc2VydGlvblBvaW50IGlu
c2VydGlvblBvaW50LCBJbmNsdWRlQnJhbmNoIGluY2x1ZGVCcmFuY2gsIFZlY3RvcjxVbmxpbmtl
ZEluc3RydWN0aW9uPiYmIGZyYWdtZW50KQoreworICAgIEFTU0VSVChpbnNlcnRpb25Qb2ludC5w
b3NpdGlvbiA9PSBQb3NpdGlvbjo6QmVmb3JlIHx8IGluc2VydGlvblBvaW50LnBvc2l0aW9uID09
IFBvc2l0aW9uOjpBZnRlcik7CisgICAgbV9pbnNlcnRpb25zLmFwcGVuZChJbnNlcnRpb24gewor
ICAgICAgICBpbnNlcnRpb25Qb2ludCwKKyAgICAgICAgSW5zZXJ0aW9uOjpUeXBlOjpJbnNlcnQs
CisgICAgICAgIGluY2x1ZGVCcmFuY2gsCisgICAgICAgIDAsCisgICAgICAgIFdURk1vdmUoZnJh
Z21lbnQpCisgICAgfSk7Cit9CisKK2ludCBCeXRlY29kZVJld3JpdGVyOjphZGp1c3RKdW1wVGFy
Z2V0KEluc2VydGlvblBvaW50IHN0YXJ0UG9pbnQsIEluc2VydGlvblBvaW50IGp1bXBUYXJnZXRQ
b2ludCkKK3sKKyAgICBpZiAoc3RhcnRQb2ludCA8IGp1bXBUYXJnZXRQb2ludCkgeworICAgICAg
ICBpbnQganVtcFRhcmdldCA9IGp1bXBUYXJnZXRQb2ludC5ieXRlY29kZU9mZnNldDsKKyAgICAg
ICAgYXV0byBzdGFydCA9IHN0ZDo6bG93ZXJfYm91bmQobV9pbnNlcnRpb25zLmJlZ2luKCksIG1f
aW5zZXJ0aW9ucy5lbmQoKSwgc3RhcnRQb2ludCwgWyZdIChjb25zdCBJbnNlcnRpb24mIGluc2Vy
dGlvbiwgSW5zZXJ0aW9uUG9pbnQgc3RhcnRQb2ludCkgeworICAgICAgICAgICAgcmV0dXJuIGlu
c2VydGlvbi5pbmRleCA8IHN0YXJ0UG9pbnQ7CisgICAgICAgIH0pOworICAgICAgICBpZiAoc3Rh
cnQgIT0gbV9pbnNlcnRpb25zLmVuZCgpKSB7CisgICAgICAgICAgICBhdXRvIGVuZCA9IHN0ZDo6
bG93ZXJfYm91bmQobV9pbnNlcnRpb25zLmJlZ2luKCksIG1faW5zZXJ0aW9ucy5lbmQoKSwganVt
cFRhcmdldFBvaW50LCBbJl0gKGNvbnN0IEluc2VydGlvbiYgaW5zZXJ0aW9uLCBJbnNlcnRpb25Q
b2ludCBqdW1wVGFyZ2V0UG9pbnQpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gaW5zZXJ0aW9u
LmluZGV4IDwganVtcFRhcmdldFBvaW50OworICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBq
dW1wVGFyZ2V0ICs9IGNhbGN1bGF0ZURpZmZlcmVuY2Uoc3RhcnQsIGVuZCk7CisgICAgICAgIH0K
KyAgICAgICAgcmV0dXJuIGp1bXBUYXJnZXQgLSBzdGFydFBvaW50LmJ5dGVjb2RlT2Zmc2V0Owor
ICAgIH0KKworICAgIGlmIChzdGFydFBvaW50ID09IGp1bXBUYXJnZXRQb2ludCkKKyAgICAgICAg
cmV0dXJuIDA7CisKKyAgICByZXR1cm4gLWFkanVzdEp1bXBUYXJnZXQoanVtcFRhcmdldFBvaW50
LCBzdGFydFBvaW50KTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVSZXdyaXRlci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlUmV3cml0ZXIuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mOTA3
YTQ3NGM2MDNiNjVlZjliM2NiN2Y1MmI0ODg4OTVlMzBjODAxCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlUmV3cml0ZXIuaApAQCAtMCww
ICsxLDIzNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBZdXN1a2UgU3V6dWtpIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+CisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkJ5
dGVjb2RlR3JhcGguaCIKKyNpbmNsdWRlICJCeXRlY29kZXMuaCIKKyNpbmNsdWRlICJPcGNvZGUu
aCIKKyNpbmNsdWRlICJVbmxpbmtlZENvZGVCbG9jay5oIgorI2luY2x1ZGUgPHd0Zi9JbnNlcnRp
b24uaD4KKworbmFtZXNwYWNlIEpTQyB7CisKKy8vIEJ5dGVjb2RlUmV3cml0ZXIgb2ZmZXJzIHRo
ZSBhYmlsaXR5IHRvIGluc2VydCBhbmQgcmVtb3ZlIHRoZSBieXRlY29kZXMgaW5jbHVkaW5nIGp1
bXAgb3BlcmF0aW9ucy4KKy8vCisvLyBXZSB1c2UgdGhlIG9yaWdpbmFsIGJ5dGVjb2RlIG9mZnNl
dHMgYXMgbGFiZWxzLiBXaGVuIHlvdSBlbWl0IHNvbWUganVtcHMsIHlvdSBjYW4gc3BlY2lmeSB0
aGUganVtcCB0YXJnZXQgYnkKKy8vIHVzaW5nIHRoZSBvcmlnaW5hbCBieXRlY29kZSBvZmZzZXRz
LiBUaGVzZSBieXRlY29kZSBvZmZzZXRzIGFyZSBsYXRlciBjb252ZXJ0ZWQgYXBwcm9wcmlhdGUg
dmFsdWVzIGJ5IHRoZQorLy8gcmV3cml0ZXIuIEFuZCB3ZSBhbHNvIHVzZSB0aGUgbGFiZWxzIHRv
IHJlcHJlc2VudHMgdGhlIHBvc2l0aW9uIHRoZSBuZXcgYnl0ZWNvZGVzIGluc2VydGVkLgorLy8K
Ky8vICAgICAgICAgICAgICAgICAgICAgIHwgIFtieXRlY29kZV0gIHwgIFtieXRlY29kZV0gIHwK
Ky8vICAgb2Zmc2V0cyAgICAgICAgICAgIEEgICAgICAgICAgICAgIEIgICAgICAgICAgICAgIEMK
Ky8vCisvLyBXZSBjYW4gdXNlIHRoZSBhYm92ZSAiQSIsICJCIiwgYW5kICJDIiBvZmZzZXRzIGFz
IGxhYmVscy4gQW5kIHRoZSByZXdyaXRlciBoYXMgdGhlIGFiaWxpdHkgdG8gaW5zZXJ0IGJ5dGVj
b2RlIGZyYWdtZW50cworLy8gYmVmb3JlIGFuZCBhZnRlciB0aGUgbGFiZWwuIEZvciBleGFtcGxl
LCBpZiB5b3UgaW5zZXJ0IHRoZSBmcmFnbWVudCBiZWZvcmUgIkIiLCB0aGUgbGF5b3V0IGJlY29t
ZXMgbGlrZSB0aGlzLgorLy8KKy8vICAgICAgICAgICAgICAgICAgICAgIHwgIFtieXRlY29kZV0g
IHwgIFtmcmFnbWVudF0gIFtieXRlY29kZV0gIHwKKy8vICAgb2Zmc2V0cyAgICAgICAgICAgIEEg
ICAgICAgICAgICAgIEIgICAgICAgICAgICAgICAgICAgICAgICAgIEMKKy8vCisvLyAgQW5kIGV2
ZW4gaWYgeW91IHJlbW92ZSBzb21lIG9yaWdpbmFsIGJ5dGVjb2RlcywgdGhlIG9mZnNldCByZW1h
aW5zIGFzIGxhYmVscy4gRm9yIGV4YW1wbGUsIHdoZW4geW91IHJlbW92ZSB0aGUgQSdzIGJ5dGVj
b2RlLAorLy8gIHRoZSBsYXlvdXQgYmVjb21lcyBsaWtlIHRoaXMuCisvLworLy8gICAgICAgICAg
ICAgICAgICAgICAgfCAgICAgICAgICAgICAgfCAgW2J5dGVjb2RlXSAgfAorLy8gICBvZmZzZXRz
ICAgICAgICAgICAgQSAgICAgICAgICAgICAgQiAgICAgICAgICAgICAgQworLy8KKy8vICBBbmQg
c3RpbGwgeW91IGNhbiBpbnNlcnQgZnJhZ21lbnRzIGJlZm9yZSBhbmQgYWZ0ZXIgIkEiLgorLy8K
Ky8vICAgICAgICAgICAgICAgICAgICAgIHwgIFtmcmFnbWVudF0gIHwgIFtieXRlY29kZV0gIHwK
Ky8vICAgb2Zmc2V0cyAgICAgICAgICAgIEEgICAgICAgICAgICAgIEIgICAgICAgICAgICAgIEMK
Ky8vCisvLyAgIFdlIGNhbiBpbnNlcnQgYnl0ZWNvZGUgZnJhZ21lbnRzICJCZWZvcmUiIGFuZCAi
QWZ0ZXIiIHRoZSBsYWJlbHMuIFRoaXMgaW5zZXJ0ZWQgcG9zaXRpb24sIGVpdGhlciAiQmVmb3Jl
IiBhbmQgIkFmdGVyIiwKKy8vICAgaGFzIGVmZmVjdCB3aGVuIHRoZSBsYWJlbCBpcyBpbnZvbHZl
ZCB3aXRoIGp1bXBzLiBGb3IgZXhhbXBsZSwgd2hlbiB5b3UgaGF2ZSBqdW1wIHRvIHRoZSBwb3Np
dGlvbiAiQiIsCisvLworLy8gICAgICAgICAgICAgICAgICAgICAgfCAgW2J5dGVjb2RlXSAgfCAg
W2J5dGVjb2RlXSAgfAorLy8gICBvZmZzZXRzICAgICAgICAgICAgQSAgICAgICAgICAgICAgQiAg
ICAgICAgICAgICAgQworLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgor
Ly8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganVtcCB0byBoZXJlLgorLy8K
Ky8vICBhbmQgeW91IGluc2VydCB0aGUgYnl0ZWNvZGUgYmVmb3JlL2FmdGVyICJCIiwKKy8vCisv
LyAgICAgICAgICAgICAgICAgICAgICB8ICBbYnl0ZWNvZGVdIFtiZWZvcmVdICB8ICBbYWZ0ZXJd
IFtieXRlY29kZV0gIHwKKy8vICAgb2Zmc2V0cyAgICAgICAgICAgIEEgICAgICAgICAgICAgICAg
ICAgICAgIEIgICAgICAgICAgICAgIEMKKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIF4KKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGp1bXAgdG8gaGVyZS4KKy8vCisvLyAgYXMgeW91IGNhbiBzZWUsIHRoZSBleGVj
dXRpb24ganVtcGluZyBpbnRvICJCIiBkb2VzIG5vdCBleGVjdXRlIFtiZWZvcmVdIGNvZGUuCitj
bGFzcyBCeXRlY29kZVJld3JpdGVyIHsKK1dURl9NQUtFX05PTkNPUFlBQkxFKEJ5dGVjb2RlUmV3
cml0ZXIpOworcHVibGljOgorICAgIGVudW0gY2xhc3MgUG9zaXRpb24gOiBpbnQ4X3QgeworICAg
ICAgICBFbnRyeVBvaW50ID0gLTIsCisgICAgICAgIEJlZm9yZSA9IC0xLAorICAgICAgICBMYWJl
bFBvaW50ID0gMCwKKyAgICAgICAgQWZ0ZXIgPSAxLAorICAgICAgICBPcmlnaW5hbEJ5dGVjb2Rl
UG9pbnQgPSAyLAorICAgIH07CisKKyAgICBlbnVtIGNsYXNzIEluY2x1ZGVCcmFuY2ggOiB1aW50
OF90IHsKKyAgICAgICAgTm8gPSAwLAorICAgICAgICBZZXMgPSAxLAorICAgIH07CisKKyAgICBz
dHJ1Y3QgSW5zZXJ0aW9uUG9pbnQgeworICAgICAgICBpbnQgYnl0ZWNvZGVPZmZzZXQ7CisgICAg
ICAgIFBvc2l0aW9uIHBvc2l0aW9uOworCisgICAgICAgIEluc2VydGlvblBvaW50KGludCBvZmZz
ZXQsIFBvc2l0aW9uIHBvcykKKyAgICAgICAgICAgIDogYnl0ZWNvZGVPZmZzZXQob2Zmc2V0KQor
ICAgICAgICAgICAgLCBwb3NpdGlvbihwb3MpCisgICAgICAgIHsKKyAgICAgICAgfQorCisgICAg
ICAgIGJvb2wgb3BlcmF0b3I8KGNvbnN0IEluc2VydGlvblBvaW50JiBvdGhlcikgY29uc3QKKyAg
ICAgICAgeworICAgICAgICAgICAgaWYgKGJ5dGVjb2RlT2Zmc2V0ID09IG90aGVyLmJ5dGVjb2Rl
T2Zmc2V0KQorICAgICAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbiA8IG90aGVyLnBvc2l0aW9u
OworICAgICAgICAgICAgcmV0dXJuIGJ5dGVjb2RlT2Zmc2V0IDwgb3RoZXIuYnl0ZWNvZGVPZmZz
ZXQ7CisgICAgICAgIH0KKworICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgSW5zZXJ0aW9u
UG9pbnQmIG90aGVyKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gYnl0ZWNv
ZGVPZmZzZXQgPT0gb3RoZXIuYnl0ZWNvZGVPZmZzZXQgJiYgcG9zaXRpb24gPT0gb3RoZXIucG9z
aXRpb247CisgICAgICAgIH0KKyAgICB9OworCitwcml2YXRlOgorICAgIHN0cnVjdCBJbnNlcnRp
b24geworICAgICAgICBlbnVtIGNsYXNzIFR5cGUgOiB1aW50OF90IHsgSW5zZXJ0ID0gMCwgUmVt
b3ZlID0gMSwgfTsKKworICAgICAgICBzaXplX3QgbGVuZ3RoKCkgY29uc3QKKyAgICAgICAgewor
ICAgICAgICAgICAgaWYgKHR5cGUgPT0gVHlwZTo6UmVtb3ZlKQorICAgICAgICAgICAgICAgIHJl
dHVybiByZW1vdmVMZW5ndGg7CisgICAgICAgICAgICByZXR1cm4gaW5zdHJ1Y3Rpb25zLnNpemUo
KTsKKyAgICAgICAgfQorCisgICAgICAgIEluc2VydGlvblBvaW50IGluZGV4OworICAgICAgICBU
eXBlIHR5cGU7CisgICAgICAgIEluY2x1ZGVCcmFuY2ggaW5jbHVkZUJyYW5jaDsKKyAgICAgICAg
c2l6ZV90IHJlbW92ZUxlbmd0aDsKKyAgICAgICAgVmVjdG9yPFVubGlua2VkSW5zdHJ1Y3Rpb24+
IGluc3RydWN0aW9uczsKKyAgICB9OworCitwdWJsaWM6CisgICAgY2xhc3MgRnJhZ21lbnQgewor
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEZyYWdtZW50KTsKKyAgICBwdWJsaWM6CisgICAgICAg
IEZyYWdtZW50KFZlY3RvcjxVbmxpbmtlZEluc3RydWN0aW9uPiYgZnJhZ21lbnQsIEluY2x1ZGVC
cmFuY2gmIGluY2x1ZGVCcmFuY2gpCisgICAgICAgICAgICA6IG1fZnJhZ21lbnQoZnJhZ21lbnQp
CisgICAgICAgICAgICAsIG1faW5jbHVkZUJyYW5jaChpbmNsdWRlQnJhbmNoKQorICAgICAgICB7
CisgICAgICAgIH0KKworICAgICAgICB0ZW1wbGF0ZTxjbGFzcy4uLiBBcmdzPgorICAgICAgICB2
b2lkIGFwcGVuZEluc3RydWN0aW9uKE9wY29kZUlEIG9wY29kZUlELCBBcmdzLi4uIGFyZ3MpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGlmIChpc0JyYW5jaChvcGNvZGVJRCkpCisgICAgICAgICAg
ICAgICAgbV9pbmNsdWRlQnJhbmNoID0gSW5jbHVkZUJyYW5jaDo6WWVzOworCisgICAgICAgICAg
ICBVbmxpbmtlZEluc3RydWN0aW9uIGluc3RydWN0aW9uc1tzaXplb2YuLi4oYXJncykgKyAxXSA9
IHsKKyAgICAgICAgICAgICAgICBVbmxpbmtlZEluc3RydWN0aW9uKG9wY29kZUlEKSwKKyAgICAg
ICAgICAgICAgICBVbmxpbmtlZEluc3RydWN0aW9uKGFyZ3MpLi4uCisgICAgICAgICAgICB9Owor
ICAgICAgICAgICAgbV9mcmFnbWVudC5hcHBlbmQoaW5zdHJ1Y3Rpb25zLCBzaXplb2YuLi4oYXJn
cykgKyAxKTsKKyAgICAgICAgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgVmVjdG9yPFVubGlu
a2VkSW5zdHJ1Y3Rpb24+JiBtX2ZyYWdtZW50OworICAgICAgICBJbmNsdWRlQnJhbmNoJiBtX2lu
Y2x1ZGVCcmFuY2g7CisgICAgfTsKKworICAgIEJ5dGVjb2RlUmV3cml0ZXIoQnl0ZWNvZGVHcmFw
aDxVbmxpbmtlZENvZGVCbG9jaz4mIGdyYXBoKQorICAgICAgICA6IG1fZ3JhcGgoZ3JhcGgpCisg
ICAgeworICAgIH0KKworICAgIHRlbXBsYXRlPGNsYXNzIEZ1bmN0aW9uPgorICAgIHZvaWQgaW5z
ZXJ0RnJhZ21lbnRCZWZvcmUodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIEZ1bmN0aW9uIGZ1bmN0
aW9uKQorICAgIHsKKyAgICAgICAgSW5jbHVkZUJyYW5jaCBpbmNsdWRlQnJhbmNoID0gSW5jbHVk
ZUJyYW5jaDo6Tm87CisgICAgICAgIFZlY3RvcjxVbmxpbmtlZEluc3RydWN0aW9uPiBpbnN0cnVj
dGlvbnM7CisgICAgICAgIEZyYWdtZW50IGZyYWdtZW50KGluc3RydWN0aW9ucywgaW5jbHVkZUJy
YW5jaCk7CisgICAgICAgIGZ1bmN0aW9uKGZyYWdtZW50KTsKKyAgICAgICAgaW5zZXJ0SW1wbChJ
bnNlcnRpb25Qb2ludChieXRlY29kZU9mZnNldCwgUG9zaXRpb246OkJlZm9yZSksIGluY2x1ZGVC
cmFuY2gsIFdURk1vdmUoaW5zdHJ1Y3Rpb25zKSk7CisgICAgfQorCisgICAgdGVtcGxhdGU8Y2xh
c3MgRnVuY3Rpb24+CisgICAgdm9pZCBpbnNlcnRGcmFnbWVudEFmdGVyKHVuc2lnbmVkIGJ5dGVj
b2RlT2Zmc2V0LCBGdW5jdGlvbiBmdW5jdGlvbikKKyAgICB7CisgICAgICAgIEluY2x1ZGVCcmFu
Y2ggaW5jbHVkZUJyYW5jaCA9IEluY2x1ZGVCcmFuY2g6Ok5vOworICAgICAgICBWZWN0b3I8VW5s
aW5rZWRJbnN0cnVjdGlvbj4gaW5zdHJ1Y3Rpb25zOworICAgICAgICBGcmFnbWVudCBmcmFnbWVu
dChpbnN0cnVjdGlvbnMsIGluY2x1ZGVCcmFuY2gpOworICAgICAgICBmdW5jdGlvbihmcmFnbWVu
dCk7CisgICAgICAgIGluc2VydEltcGwoSW5zZXJ0aW9uUG9pbnQoYnl0ZWNvZGVPZmZzZXQsIFBv
c2l0aW9uOjpBZnRlciksIGluY2x1ZGVCcmFuY2gsIFdURk1vdmUoaW5zdHJ1Y3Rpb25zKSk7Cisg
ICAgfQorCisgICAgdm9pZCByZW1vdmVCeXRlY29kZSh1bnNpZ25lZCBieXRlY29kZU9mZnNldCkK
KyAgICB7CisgICAgICAgIG1faW5zZXJ0aW9ucy5hcHBlbmQoSW5zZXJ0aW9uIHsgSW5zZXJ0aW9u
UG9pbnQoYnl0ZWNvZGVPZmZzZXQsIFBvc2l0aW9uOjpPcmlnaW5hbEJ5dGVjb2RlUG9pbnQpLCBJ
bnNlcnRpb246OlR5cGU6OlJlbW92ZSwgSW5jbHVkZUJyYW5jaDo6Tm8sIG9wY29kZUxlbmd0aCht
X2dyYXBoLmluc3RydWN0aW9ucygpW2J5dGVjb2RlT2Zmc2V0XS51Lm9wY29kZSksIHsgfSB9KTsK
KyAgICB9CisKKyAgICB2b2lkIGV4ZWN1dGUoKTsKKworICAgIEJ5dGVjb2RlR3JhcGg8VW5saW5r
ZWRDb2RlQmxvY2s+JiBncmFwaCgpIHsgcmV0dXJuIG1fZ3JhcGg7IH0KKworICAgIGludCBhZGp1
c3RBYnNvbHV0ZU9mZnNldChpbnQgYWJzb2x1dGVPZmZzZXQpCisgICAgeworICAgICAgICByZXR1
cm4gYWRqdXN0SnVtcFRhcmdldChJbnNlcnRpb25Qb2ludCgwLCBQb3NpdGlvbjo6RW50cnlQb2lu
dCksIEluc2VydGlvblBvaW50KGFic29sdXRlT2Zmc2V0LCBQb3NpdGlvbjo6TGFiZWxQb2ludCkp
OworICAgIH0KKworICAgIGludCBhZGp1c3RKdW1wVGFyZ2V0KGludCBvcmlnaW5hbEJ5dGVjb2Rl
T2Zmc2V0LCBpbnQgb3JpZ2luYWxKdW1wVGFyZ2V0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFk
anVzdEp1bXBUYXJnZXQoSW5zZXJ0aW9uUG9pbnQob3JpZ2luYWxCeXRlY29kZU9mZnNldCwgUG9z
aXRpb246OkxhYmVsUG9pbnQpLCBJbnNlcnRpb25Qb2ludChvcmlnaW5hbEp1bXBUYXJnZXQsIFBv
c2l0aW9uOjpMYWJlbFBvaW50KSk7CisgICAgfQorCitwcml2YXRlOgorICAgIHZvaWQgaW5zZXJ0
SW1wbChJbnNlcnRpb25Qb2ludCwgSW5jbHVkZUJyYW5jaCwgVmVjdG9yPFVubGlua2VkSW5zdHJ1
Y3Rpb24+JiYgZnJhZ21lbnQpOworCisgICAgZnJpZW5kIGNsYXNzIFVubGlua2VkQ29kZUJsb2Nr
OworICAgIHZvaWQgYXBwbHlNb2RpZmljYXRpb24oKTsKKyAgICB2b2lkIGFkanVzdEp1bXBUYXJn
ZXRzSW5GcmFnbWVudCh1bnNpZ25lZCBmaW5hbE9mZnNldCwgSW5zZXJ0aW9uJik7CisKKyAgICBp
bnQgYWRqdXN0SnVtcFRhcmdldChJbnNlcnRpb25Qb2ludCBzdGFydFBvaW50LCBJbnNlcnRpb25Q
b2ludCBqdW1wVGFyZ2V0UG9pbnQpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEl0ZXJhdG9yPiBp
bnQgY2FsY3VsYXRlRGlmZmVyZW5jZShJdGVyYXRvciBiZWdpbiwgSXRlcmF0b3IgZW5kKTsKKwor
ICAgIEJ5dGVjb2RlR3JhcGg8VW5saW5rZWRDb2RlQmxvY2s+JiBtX2dyYXBoOworICAgIFZlY3Rv
cjxJbnNlcnRpb24sIDg+IG1faW5zZXJ0aW9uczsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIEl0
ZXJhdG9yPgoraW5saW5lIGludCBCeXRlY29kZVJld3JpdGVyOjpjYWxjdWxhdGVEaWZmZXJlbmNl
KEl0ZXJhdG9yIGJlZ2luLCBJdGVyYXRvciBlbmQpCit7CisgICAgaW50IHJlc3VsdCA9IDA7Cisg
ICAgZm9yICg7IGJlZ2luICE9IGVuZDsgKytiZWdpbikgeworICAgICAgICBpZiAoYmVnaW4tPnR5
cGUgPT0gSW5zZXJ0aW9uOjpUeXBlOjpSZW1vdmUpCisgICAgICAgICAgICByZXN1bHQgLT0gYmVn
aW4tPmxlbmd0aCgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXN1bHQgKz0gYmVnaW4t
Pmxlbmd0aCgpOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCit9IC8vIG5hbWVzcGFj
ZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZVVzZURlZi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVm
LmgKaW5kZXggNjA1N2VmNjA5ZWVkMWVlMmE5OWIwNzYyOGI5MWM5NzU1MzNmZTRiYi4uNGYxNGIy
MzA5MDRjMWQ2ZjZkNzNiZjY4MGRjMDMyNGFlZmM2ZjZiNiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKQEAgLTMwLDE1ICszMCw5IEBACiAK
IG5hbWVzcGFjZSBKU0MgewogCi10ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgotdm9pZCBjb21w
dXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAotICAgIENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRl
Y29kZUJhc2ljQmxvY2sqIGJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgY29uc3QgRnVu
Y3RvciYgZnVuY3RvcikKK3RlbXBsYXRlPHR5cGVuYW1lIEJsb2NrLCB0eXBlbmFtZSBGdW5jdG9y
LCB0eXBlbmFtZSBJbnN0cnVjdGlvbj4KK3ZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNl
dChCbG9jayogY29kZUJsb2NrLCBPcGNvZGVJRCBvcGNvZGVJRCwgSW5zdHJ1Y3Rpb24qIGluc3Ry
dWN0aW9uLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQogewotICAgIEludGVycHJldGVyKiBpbnRl
cnByZXRlciA9IGNvZGVCbG9jay0+dm0oKS0+aW50ZXJwcmV0ZXI7Ci0gICAgSW5zdHJ1Y3Rpb24q
IGluc3RydWN0aW9uc0JlZ2luID0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpOwot
ICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9ICZpbnN0cnVjdGlvbnNCZWdpbltieXRlY29k
ZU9mZnNldF07Ci0gICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnRlcnByZXRlci0+Z2V0T3Bjb2Rl
SUQoaW5zdHJ1Y3Rpb24tPnUub3Bjb2RlKTsKLQogICAgIGlmIChvcGNvZGVJRCAhPSBvcF9lbnRl
ciAmJiBjb2RlQmxvY2stPndhc0NvbXBpbGVkV2l0aERlYnVnZ2luZ09wY29kZXMoKSAmJiBjb2Rl
QmxvY2stPnNjb3BlUmVnaXN0ZXIoKS5pc1ZhbGlkKCkpCiAgICAgICAgIGZ1bmN0b3IoY29kZUJs
b2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGNvZGVCbG9jay0+c2NvcGVSZWdpc3RlcigpLm9m
ZnNldCgpKTsKIApAQCAtNzUsOCArNjksNyBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVP
ZmZzZXQoCiAgICAgY2FzZSBvcF9qbmVxX251bGw6CiAgICAgY2FzZSBvcF9kZWM6CiAgICAgY2Fz
ZSBvcF9pbmM6Ci0gICAgY2FzZSBvcF9sb2dfc2hhZG93X2NoaWNrZW5fcHJvbG9ndWU6Ci0gICAg
Y2FzZSBvcF9yZXN1bWU6IHsKKyAgICBjYXNlIG9wX2xvZ19zaGFkb3dfY2hpY2tlbl9wcm9sb2d1
ZTogewogICAgICAgICBBU1NFUlQob3Bjb2RlTGVuZ3Roc1tvcGNvZGVJRF0gPiAxKTsKICAgICAg
ICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb25b
MV0udS5vcGVyYW5kKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjg3LDIwICsyODAsOSBAQCB2b2lk
IGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoCiAgICAgICAgICAgICBmdW5jdG9yKGNvZGVC
bG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBjb2RlQmxvY2stPnNjb3BlUmVnaXN0ZXIoKS5v
ZmZzZXQoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgY2FzZSBvcF9zYXZlOiB7Cisg
ICAgY2FzZSBvcF95aWVsZDogewogICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rp
b24sIG9wY29kZUlELCBpbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOwotICAgICAgICB1bnNpZ25l
ZCBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXQgPSBieXRlY29kZU9mZnNldCArIGluc3RydWN0aW9u
WzNdLnUub3BlcmFuZDsKLSAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBtZXJnZVBvaW50Qmxv
Y2sgPSBudWxscHRyOwotICAgICAgICBmb3IgKEJ5dGVjb2RlQmFzaWNCbG9jayogc3VjY2Vzc29y
IDogYmxvY2stPnN1Y2Nlc3NvcnMoKSkgewotICAgICAgICAgICAgaWYgKHN1Y2Nlc3Nvci0+bGVh
ZGVyQnl0ZWNvZGVPZmZzZXQoKSA9PSBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXQpIHsKLSAgICAg
ICAgICAgICAgICBtZXJnZVBvaW50QmxvY2sgPSBzdWNjZXNzb3I7Ci0gICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgQVNTRVJUKG1lcmdlUG9p
bnRCbG9jayk7Ci0gICAgICAgIG1lcmdlUG9pbnRCbG9jay0+aW4oKS5mb3JFYWNoU2V0Qml0KFsm
XSh1bnNpZ25lZCBsb2NhbCkgewotICAgICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3Ry
dWN0aW9uLCBvcGNvZGVJRCwgdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwobG9jYWwpLm9mZnNldCgp
KTsKLSAgICAgICAgfSk7CisgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwg
b3Bjb2RlSUQsIGluc3RydWN0aW9uWzNdLnUub3BlcmFuZCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAgICAgZGVmYXVsdDoKQEAgLTMwOSwyMCArMjkxLDE1IEBAIHZvaWQgY29tcHV0ZVVzZXNG
b3JCeXRlY29kZU9mZnNldCgKICAgICB9CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+
Ci12b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBjb25z
dCBGdW5jdG9yJiBmdW5jdG9yKQordGVtcGxhdGU8dHlwZW5hbWUgQmxvY2ssIHR5cGVuYW1lIElu
c3RydWN0aW9uLCB0eXBlbmFtZSBGdW5jdG9yPgordm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2Rl
T2Zmc2V0KEJsb2NrKiBjb2RlQmxvY2ssIE9wY29kZUlEIG9wY29kZUlELCBJbnN0cnVjdGlvbiog
aW5zdHJ1Y3Rpb24sIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiB7Ci0gICAgSW50ZXJwcmV0ZXIq
IGludGVycHJldGVyID0gY29kZUJsb2NrLT52bSgpLT5pbnRlcnByZXRlcjsKLSAgICBJbnN0cnVj
dGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4gPSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2lu
KCk7Ci0gICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uID0gJmluc3RydWN0aW9uc0JlZ2luW2J5
dGVjb2RlT2Zmc2V0XTsKLSAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGludGVycHJldGVyLT5nZXRP
cGNvZGVJRChpbnN0cnVjdGlvbi0+dS5vcGNvZGUpOwogICAgIHN3aXRjaCAob3Bjb2RlSUQpIHsK
ICAgICAvLyBUaGVzZSBkb24ndCBkZWZpbmUgYW55dGhpbmcuCiAgICAgY2FzZSBvcF9wdXRfdG9f
c2NvcGU6CiAgICAgY2FzZSBvcF9lbmQ6CiAgICAgY2FzZSBvcF90aHJvdzoKICAgICBjYXNlIG9w
X3Rocm93X3N0YXRpY19lcnJvcjoKLSAgICBjYXNlIG9wX3NhdmU6CiAgICAgY2FzZSBvcF9hc3Nl
cnQ6CiAgICAgY2FzZSBvcF9kZWJ1ZzoKICAgICBjYXNlIG9wX3JldDoKQEAgLTM2Miw2ICszMzks
NyBAQCB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvYwogICAgIGNhc2Ugb3Bfd2F0Y2hkb2c6CiAgICAg
Y2FzZSBvcF9sb2dfc2hhZG93X2NoaWNrZW5fcHJvbG9ndWU6CiAgICAgY2FzZSBvcF9sb2dfc2hh
ZG93X2NoaWNrZW5fdGFpbDoKKyAgICBjYXNlIG9wX3lpZWxkOgogI2RlZmluZSBMTElOVF9IRUxQ
RVJfT1BDT0RFUyhvcGNvZGUsIGxlbmd0aCkgY2FzZSBvcGNvZGU6CiAgICAgICAgIEZPUl9FQUNI
X0xMSU5UX09QQ09ERV9FWFRFTlNJT04oTExJTlRfSEVMUEVSX09QQ09ERVMpOwogI3VuZGVmIExM
SU5UX0hFTFBFUl9PUENPREVTCkBAIC00ODAsMTUgKzQ1OCw2IEBAIHZvaWQgY29tcHV0ZURlZnNG
b3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Jsb2Nr
KiBibG9jCiAgICAgICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29k
ZUlELCB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChpKS5vZmZzZXQoKSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9Ci0gICAgY2FzZSBvcF9yZXN1bWU6IHsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQo
YmxvY2stPnN1Y2Nlc3NvcnMoKS5zaXplKCkgPT0gMSk7Ci0gICAgICAgIC8vIEZJWE1FOiBUaGlz
IGlzIHJlYWxseSBkaXJ0eS4KLSAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE1OTI4MQotICAgICAgICBibG9jay0+c3VjY2Vzc29ycygpWzBdLT5pbigp
LmZvckVhY2hTZXRCaXQoWyZdKHVuc2lnbmVkIGxvY2FsKSB7Ci0gICAgICAgICAgICBmdW5jdG9y
KGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2Nh
bChsb2NhbCkub2Zmc2V0KCkpOwotICAgICAgICB9KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
ICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5j
cHAKaW5kZXggMWQ5MTM1YTIzNzM5MTYzMDkxOGZkNTVhNmU1NDI1ODk3MTVjZDBiNS4uNTg2Y2Nm
NTI4ZDRiZmFkMmFiOTBiOWVhZTY2NDZiMWVhMmQxNDEwYSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRl
ICJBcml0aFByb2ZpbGUuaCIKICNpbmNsdWRlICJCYXNpY0Jsb2NrTG9jYXRpb24uaCIKICNpbmNs
dWRlICJCeXRlY29kZUdlbmVyYXRvci5oIgorI2luY2x1ZGUgIkJ5dGVjb2RlTGl2ZW5lc3NBbmFs
eXNpcy5oIgogI2luY2x1ZGUgIkJ5dGVjb2RlVXNlRGVmLmgiCiAjaW5jbHVkZSAiQ2FsbExpbmtT
dGF0dXMuaCIKICNpbmNsdWRlICJERkdDYXBhYmlsaXRpZXMuaCIKQEAgLTY5NiwxOCArNjk3LDYg
QEAgdm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZShQcmludFN0cmVhbSYgb3V0KQogICAgICAg
ICB9IHdoaWxlIChpIDwgbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzLnNpemUo
KSk7CiAgICAgfQogCi0gICAgaWYgKG1fcmFyZURhdGEgJiYgIW1fcmFyZURhdGEtPm1fbGl2ZUNh
bGxlZUxvY2Fsc0F0WWllbGQuaXNFbXB0eSgpKSB7Ci0gICAgICAgIG91dC5wcmludGYoIlxuTGl2
ZSBDYWxsZWUgTG9jYWxzOlxuIik7Ci0gICAgICAgIHVuc2lnbmVkIGkgPSAwOwotICAgICAgICBk
byB7Ci0gICAgICAgICAgICBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlbmVzcyA9IG1fcmFyZURh
dGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGRbaV07Ci0gICAgICAgICAgICBvdXQucHJpbnRm
KCIgIGxpdmUlMXUgPSAiLCBpKTsKLSAgICAgICAgICAgIGxpdmVuZXNzLmR1bXAob3V0KTsKLSAg
ICAgICAgICAgIG91dC5wcmludGYoIlxuIik7Ci0gICAgICAgICAgICArK2k7Ci0gICAgICAgIH0g
d2hpbGUgKGkgPCBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkLnNpemUoKSk7
Ci0gICAgfQotCiAgICAgb3V0LnByaW50ZigiXG4iKTsKIH0KIApAQCAtMTY3MSwzMSArMTY2MCw2
IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoCiAgICAgICAgICAgICBvdXQucHJpbnRm
KCIlcywgJWQiLCBkZWJ1Z0hvb2tOYW1lKGRlYnVnSG9va0lEKSwgaGFzQnJlYWtwb2ludEZsYWcp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgY2FzZSBvcF9zYXZlOiB7
Ci0gICAgICAgICAgICBpbnQgZ2VuZXJhdG9yID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAg
ICAgICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSAoKytpdCktPnUudW5zaWduZWRW
YWx1ZTsKLSAgICAgICAgICAgIGludCBvZmZzZXQgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAg
ICAgICAgIEZhc3RCaXRWZWN0b3IgbGl2ZW5lc3M7Ci0gICAgICAgICAgICBpZiAobGl2ZUNhbGxl
ZUxvY2Fsc0luZGV4IDwgbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZC5zaXpl
KCkpCi0gICAgICAgICAgICAgICAgbGl2ZW5lc3MgPSBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVM
b2NhbHNBdFlpZWxkW2xpdmVDYWxsZWVMb2NhbHNJbmRleF07Ci0gICAgICAgICAgICBwcmludExv
Y2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJzYXZlIik7Ci0gICAgICAgICAg
ICBvdXQucHJpbnRmKCIlcywgIiwgcmVnaXN0ZXJOYW1lKGdlbmVyYXRvcikuZGF0YSgpKTsKLSAg
ICAgICAgICAgIGxpdmVuZXNzLmR1bXAob3V0KTsKLSAgICAgICAgICAgIG91dC5wcmludGYoIihA
bGl2ZSUxdSksICVkKC0+JWQpIiwgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4LCBvZmZzZXQsIGxvY2F0
aW9uICsgb2Zmc2V0KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNh
c2Ugb3BfcmVzdW1lOiB7Ci0gICAgICAgICAgICBpbnQgZ2VuZXJhdG9yID0gKCsraXQpLT51Lm9w
ZXJhbmQ7Ci0gICAgICAgICAgICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSAoKytp
dCktPnUudW5zaWduZWRWYWx1ZTsKLSAgICAgICAgICAgIEZhc3RCaXRWZWN0b3IgbGl2ZW5lc3M7
Ci0gICAgICAgICAgICBpZiAobGl2ZUNhbGxlZUxvY2Fsc0luZGV4IDwgbV9yYXJlRGF0YS0+bV9s
aXZlQ2FsbGVlTG9jYWxzQXRZaWVsZC5zaXplKCkpCi0gICAgICAgICAgICAgICAgbGl2ZW5lc3Mg
PSBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkW2xpdmVDYWxsZWVMb2NhbHNJ
bmRleF07Ci0gICAgICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlv
biwgaXQsICJyZXN1bWUiKTsKLSAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAiLCByZWdpc3Rl
ck5hbWUoZ2VuZXJhdG9yKS5kYXRhKCkpOwotICAgICAgICAgICAgbGl2ZW5lc3MuZHVtcChvdXQp
OwotICAgICAgICAgICAgb3V0LnByaW50ZigiKEBsaXZlJTF1KSIsIGxpdmVDYWxsZWVMb2NhbHNJ
bmRleCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2Fz
c2VydDogewogICAgICAgICAgICAgaW50IGNvbmRpdGlvbiA9ICgrK2l0KS0+dS5vcGVyYW5kOwog
ICAgICAgICAgICAgaW50IGxpbmUgPSAoKytpdCktPnUub3BlcmFuZDsKQEAgLTE5MDcsNyArMTg3
MSw2IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIENvcHlQYXJzZWRC
bG9ja1RhZywgQ29kZUJsb2NrJiBvdGhlcikKICAgICAgICAgbV9yYXJlRGF0YS0+bV9jb25zdGFu
dEJ1ZmZlcnMgPSBvdGhlci5tX3JhcmVEYXRhLT5tX2NvbnN0YW50QnVmZmVyczsKICAgICAgICAg
bV9yYXJlRGF0YS0+bV9zd2l0Y2hKdW1wVGFibGVzID0gb3RoZXIubV9yYXJlRGF0YS0+bV9zd2l0
Y2hKdW1wVGFibGVzOwogICAgICAgICBtX3JhcmVEYXRhLT5tX3N0cmluZ1N3aXRjaEp1bXBUYWJs
ZXMgPSBvdGhlci5tX3JhcmVEYXRhLT5tX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXM7Ci0gICAgICAg
IG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQgPSBvdGhlci5tX3JhcmVEYXRh
LT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkOwogICAgIH0KICAgICAKICAgICBoZWFwKCktPm1f
Y29kZUJsb2Nrcy5hZGQodGhpcyk7CkBAIC0yMDI5LDcgKzE5OTIsNyBAQCB2b2lkIENvZGVCbG9j
azo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFi
bGUsIFVubGluawogICAgICAgICAgICAgICAgIFVubGlua2VkU3RyaW5nSnVtcFRhYmxlOjpTdHJp
bmdPZmZzZXRUYWJsZTo6aXRlcmF0b3IgZW5kID0gdW5saW5rZWRDb2RlQmxvY2stPnN0cmluZ1N3
aXRjaEp1bXBUYWJsZShpKS5vZmZzZXRUYWJsZS5lbmQoKTsKICAgICAgICAgICAgICAgICBmb3Ig
KDsgcHRyICE9IGVuZDsgKytwdHIpIHsKICAgICAgICAgICAgICAgICAgICAgT2Zmc2V0TG9jYXRp
b24gb2Zmc2V0OwotICAgICAgICAgICAgICAgICAgICBvZmZzZXQuYnJhbmNoT2Zmc2V0ID0gcHRy
LT52YWx1ZTsKKyAgICAgICAgICAgICAgICAgICAgb2Zmc2V0LmJyYW5jaE9mZnNldCA9IHB0ci0+
dmFsdWUuYnJhbmNoT2Zmc2V0OwogICAgICAgICAgICAgICAgICAgICBtX3JhcmVEYXRhLT5tX3N0
cmluZ1N3aXRjaEp1bXBUYWJsZXNbaV0ub2Zmc2V0VGFibGUuYWRkKHB0ci0+a2V5LCBvZmZzZXQp
OwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KQEAgLTIwNjksMTEgKzIwMzIsMTcg
QEAgdm9pZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJs
ZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICAvLyBCb29ra2VlcCB0aGUgc3Ryb25nbHkg
cmVmZXJlbmNlZCBtb2R1bGUgZW52aXJvbm1lbnRzLgogICAgIEhhc2hTZXQ8SlNNb2R1bGVFbnZp
cm9ubWVudCo+IHN0cm9uZ2x5UmVmZXJlbmNlZE1vZHVsZUVudmlyb25tZW50czsKIAotICAgIC8v
IEJvb2trZWVwIHRoZSBtZXJnZSBwb2ludCBieXRlY29kZSBvZmZzZXRzLgotICAgIFZlY3Rvcjxz
aXplX3Q+IG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldHM7Ci0KICAgICBSZWZDb3VudGVkQXJyYXk8
SW5zdHJ1Y3Rpb24+IGluc3RydWN0aW9ucyhpbnN0cnVjdGlvbkNvdW50KTsKIAorICAgIHVuc2ln
bmVkIHZhbHVlUHJvZmlsZUNvdW50ID0gMDsKKyAgICBhdXRvIGxpbmtWYWx1ZVByb2ZpbGUgPSBb
Jl0odW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIHVuc2lnbmVkIG9wTGVuZ3RoKSB7CisgICAgICAg
IHVuc2lnbmVkIHZhbHVlUHJvZmlsZUluZGV4ID0gdmFsdWVQcm9maWxlQ291bnQrKzsKKyAgICAg
ICAgVmFsdWVQcm9maWxlKiBwcm9maWxlID0gJm1fdmFsdWVQcm9maWxlc1t2YWx1ZVByb2ZpbGVJ
bmRleF07CisgICAgICAgIEFTU0VSVChwcm9maWxlLT5tX2J5dGVjb2RlT2Zmc2V0ID09IC0xKTsK
KyAgICAgICAgcHJvZmlsZS0+bV9ieXRlY29kZU9mZnNldCA9IGJ5dGVjb2RlT2Zmc2V0OworICAg
ICAgICBpbnN0cnVjdGlvbnNbYnl0ZWNvZGVPZmZzZXQgKyBvcExlbmd0aCAtIDFdID0gcHJvZmls
ZTsKKyAgICB9OworCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgIWluc3RydWN0aW9uUmVhZGVy
LmF0RW5kKCk7ICkgewogICAgICAgICBjb25zdCBVbmxpbmtlZEluc3RydWN0aW9uKiBwYyA9IGlu
c3RydWN0aW9uUmVhZGVyLm5leHQoKTsKIApAQCAtMjEwOCwxMCArMjA3Nyw3IEBAIHZvaWQgQ29k
ZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhl
Y3V0YWJsZSwgVW5saW5rCiAgICAgICAgIGNhc2Ugb3BfZ2V0X2J5X2lkOgogICAgICAgICBjYXNl
IG9wX2dldF9mcm9tX2FyZ3VtZW50czoKICAgICAgICAgY2FzZSBvcF90b19udW1iZXI6IHsKLSAg
ICAgICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9ICZtX3ZhbHVlUHJvZmlsZXNbcGNbb3BM
ZW5ndGggLSAxXS51Lm9wZXJhbmRdOwotICAgICAgICAgICAgQVNTRVJUKHByb2ZpbGUtPm1fYnl0
ZWNvZGVPZmZzZXQgPT0gLTEpOwotICAgICAgICAgICAgcHJvZmlsZS0+bV9ieXRlY29kZU9mZnNl
dCA9IGk7Ci0gICAgICAgICAgICBpbnN0cnVjdGlvbnNbaSArIG9wTGVuZ3RoIC0gMV0gPSBwcm9m
aWxlOworICAgICAgICAgICAgbGlua1ZhbHVlUHJvZmlsZShpLCBvcExlbmd0aCk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX3B1dF9ieV92YWw6IHsKQEAg
LTIxNDgsMTAgKzIxMTQsNyBAQCB2b2lkIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZt
LCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGluawogICAgICAgICBjYXNl
IG9wX2NhbGw6CiAgICAgICAgIGNhc2Ugb3BfdGFpbF9jYWxsOgogICAgICAgICBjYXNlIG9wX2Nh
bGxfZXZhbDogewotICAgICAgICAgICAgVmFsdWVQcm9maWxlKiBwcm9maWxlID0gJm1fdmFsdWVQ
cm9maWxlc1twY1tvcExlbmd0aCAtIDFdLnUub3BlcmFuZF07Ci0gICAgICAgICAgICBBU1NFUlQo
cHJvZmlsZS0+bV9ieXRlY29kZU9mZnNldCA9PSAtMSk7Ci0gICAgICAgICAgICBwcm9maWxlLT5t
X2J5dGVjb2RlT2Zmc2V0ID0gaTsKLSAgICAgICAgICAgIGluc3RydWN0aW9uc1tpICsgb3BMZW5n
dGggLSAxXSA9IHByb2ZpbGU7CisgICAgICAgICAgICBsaW5rVmFsdWVQcm9maWxlKGksIG9wTGVu
Z3RoKTsKICAgICAgICAgICAgIGludCBhcnJheVByb2ZpbGVJbmRleCA9IHBjW29wTGVuZ3RoIC0g
Ml0udS5vcGVyYW5kOwogICAgICAgICAgICAgbV9hcnJheVByb2ZpbGVzW2FycmF5UHJvZmlsZUlu
ZGV4XSA9IEFycmF5UHJvZmlsZShpKTsKICAgICAgICAgICAgIGluc3RydWN0aW9uc1tpICsgb3BM
ZW5ndGggLSAyXSA9ICZtX2FycmF5UHJvZmlsZXNbYXJyYXlQcm9maWxlSW5kZXhdOwpAQCAtMjE2
MCwxMCArMjEyMyw3IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNj
cmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAgICAgIH0KICAgICAg
ICAgY2FzZSBvcF9jb25zdHJ1Y3Q6IHsKICAgICAgICAgICAgIGluc3RydWN0aW9uc1tpICsgNV0g
PSAmbV9sbGludENhbGxMaW5rSW5mb3NbcGNbNV0udS5vcGVyYW5kXTsKLSAgICAgICAgICAgIFZh
bHVlUHJvZmlsZSogcHJvZmlsZSA9ICZtX3ZhbHVlUHJvZmlsZXNbcGNbb3BMZW5ndGggLSAxXS51
Lm9wZXJhbmRdOwotICAgICAgICAgICAgQVNTRVJUKHByb2ZpbGUtPm1fYnl0ZWNvZGVPZmZzZXQg
PT0gLTEpOwotICAgICAgICAgICAgcHJvZmlsZS0+bV9ieXRlY29kZU9mZnNldCA9IGk7Ci0gICAg
ICAgICAgICBpbnN0cnVjdGlvbnNbaSArIG9wTGVuZ3RoIC0gMV0gPSBwcm9maWxlOworICAgICAg
ICAgICAgbGlua1ZhbHVlUHJvZmlsZShpLCBvcExlbmd0aCk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2dldF9hcnJheV9sZW5ndGg6CkBAIC0yMTk0LDEw
ICsyMTU0LDcgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0
RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICAgICAgfQogCiAgICAgICAg
IGNhc2Ugb3BfZ2V0X2Zyb21fc2NvcGU6IHsKLSAgICAgICAgICAgIFZhbHVlUHJvZmlsZSogcHJv
ZmlsZSA9ICZtX3ZhbHVlUHJvZmlsZXNbcGNbb3BMZW5ndGggLSAxXS51Lm9wZXJhbmRdOwotICAg
ICAgICAgICAgQVNTRVJUKHByb2ZpbGUtPm1fYnl0ZWNvZGVPZmZzZXQgPT0gLTEpOwotICAgICAg
ICAgICAgcHJvZmlsZS0+bV9ieXRlY29kZU9mZnNldCA9IGk7Ci0gICAgICAgICAgICBpbnN0cnVj
dGlvbnNbaSArIG9wTGVuZ3RoIC0gMV0gPSBwcm9maWxlOworICAgICAgICAgICAgbGlua1ZhbHVl
UHJvZmlsZShpLCBvcExlbmd0aCk7CiAKICAgICAgICAgICAgIC8vIGdldF9mcm9tX3Njb3BlIGRz
dCwgc2NvcGUsIGlkLCBHZXRQdXRJbmZvLCBTdHJ1Y3R1cmUsIE9wZXJhbmQKIApAQCAtMjM1NCwx
NSArMjMxMSw2IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlw
dEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogCi0gICAgICAgIGNhc2Ugb3Bfc2F2ZTogewotICAgICAgICAgICAgdW5zaWdu
ZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gcGNbMl0udS5pbmRleDsKLSAgICAgICAgICAgIGlu
dCBvZmZzZXQgPSBwY1szXS51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBpZiAobGl2ZUNhbGxlZUxv
Y2Fsc0luZGV4ID49IG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldHMuc2l6ZSgpKQotICAgICAgICAg
ICAgICAgIG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldHMucmVzaXplKGxpdmVDYWxsZWVMb2NhbHNJ
bmRleCArIDEpOwotICAgICAgICAgICAgbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0c1tsaXZlQ2Fs
bGVlTG9jYWxzSW5kZXhdID0gaSArIG9mZnNldDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICB9Ci0KICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBA
IC0yMzc0LDIwICsyMzIyLDYgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2
bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKIAogICAgIG1faW5z
dHJ1Y3Rpb25zID0gV1RGTW92ZShpbnN0cnVjdGlvbnMpOwogCi0gICAgLy8gUGVyZm9ybSBieXRl
Y29kZSBsaXZlbmVzcyBhbmFseXNpcyB0byBkZXRlcm1pbmUgd2hpY2ggbG9jYWxzIGFyZSBsaXZl
IGFuZCBzaG91bGQgYmUgcmVzdW1lZCB3aGVuIGV4ZWN1dGluZyBvcF9yZXN1bWUuCi0gICAgaWYg
KHVubGlua2VkQ29kZUJsb2NrLT5wYXJzZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVy
YXRvckJvZHlNb2RlKSB7Ci0gICAgICAgIGlmIChzaXplX3QgY291bnQgPSBtZXJnZVBvaW50Qnl0
ZWNvZGVPZmZzZXRzLnNpemUoKSkgewotICAgICAgICAgICAgY3JlYXRlUmFyZURhdGFJZk5lY2Vz
c2FyeSgpOwotICAgICAgICAgICAgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzIGxpdmVuZXNzKHRo
aXMpOwotICAgICAgICAgICAgbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZC5n
cm93KGNvdW50KTsKLSAgICAgICAgICAgIHNpemVfdCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSAw
OwotICAgICAgICAgICAgZm9yIChzaXplX3QgYnl0ZWNvZGVPZmZzZXQgOiBtZXJnZVBvaW50Qnl0
ZWNvZGVPZmZzZXRzKSB7Ci0gICAgICAgICAgICAgICAgbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVl
TG9jYWxzQXRZaWVsZFtsaXZlQ2FsbGVlTG9jYWxzSW5kZXhdID0gbGl2ZW5lc3MuZ2V0TGl2ZW5l
c3NJbmZvQXRCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCk7Ci0gICAgICAgICAgICAgICAg
KytsaXZlQ2FsbGVlTG9jYWxzSW5kZXg7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9
Ci0KICAgICAvLyBTZXQgb3B0aW1pemF0aW9uIHRocmVzaG9sZHMgb25seSBhZnRlciBtX2luc3Ry
dWN0aW9ucyBpcyBpbml0aWFsaXplZCwgc2luY2UgdGhlc2UKICAgICAvLyByZWx5IG9uIHRoZSBp
bnN0cnVjdGlvbiBjb3VudCAoYW5kIGFyZSBpbiB0aGVvcnkgcGVybWl0dGVkIHRvIGFsc28gaW5z
cGVjdCB0aGUKICAgICAvLyBpbnN0cnVjdGlvbiBzdHJlYW0gdG8gbW9yZSBhY2N1cmF0ZSBhc3Nl
c3MgdGhlIGNvc3Qgb2YgdGllci11cCkuCkBAIC0zMjQ0LDIxICszMTc4LDcgQEAgSGFuZGxlcklu
Zm8qIENvZGVCbG9jazo6aGFuZGxlckZvckluZGV4KHVuc2lnbmVkIGluZGV4LCBSZXF1aXJlZEhh
bmRsZXIgcmVxdWlyZWQKIHsKICAgICBpZiAoIW1fcmFyZURhdGEpCiAgICAgICAgIHJldHVybiAw
OwotICAgIAotICAgIFZlY3RvcjxIYW5kbGVySW5mbz4mIGV4Y2VwdGlvbkhhbmRsZXJzID0gbV9y
YXJlRGF0YS0+bV9leGNlcHRpb25IYW5kbGVyczsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IGV4Y2VwdGlvbkhhbmRsZXJzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIEhhbmRsZXJJbmZvJiBo
YW5kbGVyID0gZXhjZXB0aW9uSGFuZGxlcnNbaV07Ci0gICAgICAgIGlmICgocmVxdWlyZWRIYW5k
bGVyID09IFJlcXVpcmVkSGFuZGxlcjo6Q2F0Y2hIYW5kbGVyKSAmJiAhaGFuZGxlci5pc0NhdGNo
SGFuZGxlcigpKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgLy8gSGFuZGxlcnMg
YXJlIG9yZGVyZWQgaW5uZXJtb3N0IGZpcnN0LCBzbyB0aGUgZmlyc3QgaGFuZGxlciB3ZSBlbmNv
dW50ZXIKLSAgICAgICAgLy8gdGhhdCBjb250YWlucyB0aGUgc291cmNlIGFkZHJlc3MgaXMgdGhl
IGNvcnJlY3QgaGFuZGxlciB0byB1c2UuCi0gICAgICAgIC8vIFRoaXMgaW5kZXggdXNlZCBpcyBl
aXRoZXIgdGhlIEJ5dGVjb2RlT2Zmc2V0IG9yIGEgQ2FsbFNpdGVJbmRleC4KLSAgICAgICAgaWYg
KGhhbmRsZXIuc3RhcnQgPD0gaW5kZXggJiYgaGFuZGxlci5lbmQgPiBpbmRleCkKLSAgICAgICAg
ICAgIHJldHVybiAmaGFuZGxlcjsKLSAgICB9Ci0KLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4g
SGFuZGxlckluZm86OmhhbmRsZXJGb3JJbmRleChtX3JhcmVEYXRhLT5tX2V4Y2VwdGlvbkhhbmRs
ZXJzLCBpbmRleCwgcmVxdWlyZWRIYW5kbGVyKTsKIH0KIAogQ2FsbFNpdGVJbmRleCBDb2RlQmxv
Y2s6Om5ld0V4Y2VwdGlvbkhhbmRsaW5nQ2FsbFNpdGVJbmRleChDYWxsU2l0ZUluZGV4IG9yaWdp
bmFsQ2FsbFNpdGUpCkBAIC0zMzUzLDcgKzMyNzMsNiBAQCB2b2lkIENvZGVCbG9jazo6c2hyaW5r
VG9GaXQoU2hyaW5rTW9kZSBzaHJpbmtNb2RlKQogICAgICAgICBpZiAobV9yYXJlRGF0YSkgewog
ICAgICAgICAgICAgbV9yYXJlRGF0YS0+bV9zd2l0Y2hKdW1wVGFibGVzLnNocmlua1RvRml0KCk7
CiAgICAgICAgICAgICBtX3JhcmVEYXRhLT5tX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXMuc2hyaW5r
VG9GaXQoKTsKLSAgICAgICAgICAgIG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWll
bGQuc2hyaW5rVG9GaXQoKTsKICAgICAgICAgfQogICAgIH0gLy8gZWxzZSBkb24ndCBzaHJpbmsg
dGhlc2UsIGJlY2F1c2Ugd2Ugd291bGQgaGF2ZSBhbHJlYWR5IHBvaW50ZWQgcG9pbnRlcnMgaW50
byB0aGVzZSB0YWJsZXMuCiB9CkBAIC00MzM1LDE0ICs0MjU0LDkgQEAgU3RyaW5nIENvZGVCbG9j
azo6bmFtZUZvclJlZ2lzdGVyKFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIpCiAKIFZh
bHVlUHJvZmlsZSogQ29kZUJsb2NrOjp2YWx1ZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChpbnQg
Ynl0ZWNvZGVPZmZzZXQpCiB7Ci0gICAgVmFsdWVQcm9maWxlKiByZXN1bHQgPSBiaW5hcnlTZWFy
Y2g8VmFsdWVQcm9maWxlLCBpbnQ+KAotICAgICAgICBtX3ZhbHVlUHJvZmlsZXMsIG1fdmFsdWVQ
cm9maWxlcy5zaXplKCksIGJ5dGVjb2RlT2Zmc2V0LAotICAgICAgICBnZXRWYWx1ZVByb2ZpbGVC
eXRlY29kZU9mZnNldDxWYWx1ZVByb2ZpbGU+KTsKLSAgICBBU1NFUlQocmVzdWx0LT5tX2J5dGVj
b2RlT2Zmc2V0ICE9IC0xKTsKLSAgICBBU1NFUlQoaW5zdHJ1Y3Rpb25zKClbYnl0ZWNvZGVPZmZz
ZXQgKyBvcGNvZGVMZW5ndGgoCi0gICAgICAgIG1fdm0tPmludGVycHJldGVyLT5nZXRPcGNvZGVJ
RCgKLSAgICAgICAgICAgIGluc3RydWN0aW9ucygpW2J5dGVjb2RlT2Zmc2V0XS51Lm9wY29kZSkp
IC0gMV0udS5wcm9maWxlID09IHJlc3VsdCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICBPcGNv
ZGVJRCBvcGNvZGVJRCA9IG1fdm0tPmludGVycHJldGVyLT5nZXRPcGNvZGVJRChpbnN0cnVjdGlv
bnMoKVtieXRlY29kZU9mZnNldF0udS5vcGNvZGUpOworICAgIHVuc2lnbmVkIGxlbmd0aCA9IG9w
Y29kZUxlbmd0aChvcGNvZGVJRCk7CisgICAgcmV0dXJuIGluc3RydWN0aW9ucygpW2J5dGVjb2Rl
T2Zmc2V0ICsgbGVuZ3RoIC0gMV0udS5wcm9maWxlOwogfQogCiB2b2lkIENvZGVCbG9jazo6dmFs
aWRhdGUoKQpAQCAtNDY3MSw0ICs0NTg1LDE2IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wTWF0aElD
U3RhdHMoKQogI2VuZGlmCiB9CiAKK0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcyYgQ29kZUJsb2Nr
OjpsaXZlbmVzc0FuYWx5c2lzU2xvdygpCit7CisgICAgc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2Rl
TGl2ZW5lc3NBbmFseXNpcz4gYW5hbHlzaXMgPSBzdGQ6Om1ha2VfdW5pcXVlPEJ5dGVjb2RlTGl2
ZW5lc3NBbmFseXNpcz4odGhpcyk7CisgICAgeworICAgICAgICBDb25jdXJyZW50SklUTG9ja2Vy
IGxvY2tlcihtX2xvY2spOworICAgICAgICBpZiAoIW1fbGl2ZW5lc3NBbmFseXNpcykKKyAgICAg
ICAgICAgIG1fbGl2ZW5lc3NBbmFseXNpcyA9IFdURk1vdmUoYW5hbHlzaXMpOworICAgICAgICBy
ZXR1cm4gKm1fbGl2ZW5lc3NBbmFseXNpczsKKyAgICB9Cit9CisKKwogfSAvLyBuYW1lc3BhY2Ug
SlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKaW5kZXggYWI5
MjgwNGY2YmEzOWIzYjY3YmE2ZDc3NWU0NDllMmYzZGJmN2MwNS4uOWU1ZDYwNzg3NzNmMzhjYmIy
MmRjNmE1MGZhZmE3Y2ViMGUxZmZhMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2suaApAQCAtMzMsNyArMzMsNiBAQAogI2luY2x1ZGUgIkFycmF5UHJvZmlsZS5o
IgogI2luY2x1ZGUgIkJ5VmFsSW5mby5oIgogI2luY2x1ZGUgIkJ5dGVjb2RlQ29udmVudGlvbnMu
aCIKLSNpbmNsdWRlICJCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuaCIKICNpbmNsdWRlICJDYWxs
TGlua0luZm8uaCIKICNpbmNsdWRlICJDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldC5o
IgogI2luY2x1ZGUgIkNvZGVCbG9ja0hhc2guaCIKQEAgLTc5LDYgKzc4LDcgQEAKIAogbmFtZXNw
YWNlIEpTQyB7CiAKK2NsYXNzIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczsKIGNsYXNzIEV4ZWNT
dGF0ZTsKIGNsYXNzIEpJVEFkZEdlbmVyYXRvcjsKIGNsYXNzIEpTTW9kdWxlRW52aXJvbm1lbnQ7
CkBAIC0yMjYsMTAgKzIyNiw2IEBAIGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewog
ICAgICAgICByZXR1cm4gaW5kZXggPj0gbV9udW1WYXJzOwogICAgIH0KIAotICAgIGVudW0gY2xh
c3MgUmVxdWlyZWRIYW5kbGVyIHsKLSAgICAgICAgQ2F0Y2hIYW5kbGVyLAotICAgICAgICBBbnlI
YW5kbGVyCi0gICAgfTsKICAgICBIYW5kbGVySW5mbyogaGFuZGxlckZvckJ5dGVjb2RlT2Zmc2V0
KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBSZXF1aXJlZEhhbmRsZXIgPSBSZXF1aXJlZEhhbmRs
ZXI6OkFueUhhbmRsZXIpOwogICAgIEhhbmRsZXJJbmZvKiBoYW5kbGVyRm9ySW5kZXgodW5zaWdu
ZWQsIFJlcXVpcmVkSGFuZGxlciA9IFJlcXVpcmVkSGFuZGxlcjo6QW55SGFuZGxlcik7CiAgICAg
dm9pZCByZW1vdmVFeGNlcHRpb25IYW5kbGVyRm9yQ2FsbFNpdGUoQ2FsbFNpdGVJbmRleCk7CkBA
IC0zMDQsNiArMzAwLDkgQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAg
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxJbnN0cnVjdGlvbio+KHJldHVybkFkZHJlc3MpIC0gaW5z
dHJ1Y3Rpb25zKCkuYmVnaW4oKTsKICAgICB9CiAKKyAgICB0eXBlZGVmIEpTQzo6SW5zdHJ1Y3Rp
b24gSW5zdHJ1Y3Rpb247CisgICAgdHlwZWRlZiBSZWZDb3VudGVkQXJyYXk8SW5zdHJ1Y3Rpb24+
JiBVbnBhY2tlZEluc3RydWN0aW9uczsKKwogICAgIHVuc2lnbmVkIG51bWJlck9mSW5zdHJ1Y3Rp
b25zKCkgY29uc3QgeyByZXR1cm4gbV9pbnN0cnVjdGlvbnMuc2l6ZSgpOyB9CiAgICAgUmVmQ291
bnRlZEFycmF5PEluc3RydWN0aW9uPiYgaW5zdHJ1Y3Rpb25zKCkgeyByZXR1cm4gbV9pbnN0cnVj
dGlvbnM7IH0KICAgICBjb25zdCBSZWZDb3VudGVkQXJyYXk8SW5zdHJ1Y3Rpb24+JiBpbnN0cnVj
dGlvbnMoKSBjb25zdCB7IHJldHVybiBtX2luc3RydWN0aW9uczsgfQpAQCAtNTQ2LDcgKzU0NSw3
IEBAIGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgIH0KIAogICAgIFdyaXRl
QmFycmllcjxVbmtub3duPiYgY29uc3RhbnRSZWdpc3RlcihpbnQgaW5kZXgpIHsgcmV0dXJuIG1f
Y29uc3RhbnRSZWdpc3RlcnNbaW5kZXggLSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleF07IH0K
LSAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNDb25zdGFudFJlZ2lzdGVySW5kZXgoaW50IGluZGV4
KSBjb25zdCB7IHJldHVybiBpbmRleCA+PSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleDsgfQor
ICAgIHN0YXRpYyBBTFdBWVNfSU5MSU5FIGJvb2wgaXNDb25zdGFudFJlZ2lzdGVySW5kZXgoaW50
IGluZGV4KSB7IHJldHVybiBpbmRleCA+PSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleDsgfQog
ICAgIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBnZXRDb25zdGFudChpbnQgaW5kZXgpIGNvbnN0IHsg
cmV0dXJuIG1fY29uc3RhbnRSZWdpc3RlcnNbaW5kZXggLSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJ
bmRleF0uZ2V0KCk7IH0KICAgICBBTFdBWVNfSU5MSU5FIFNvdXJjZUNvZGVSZXByZXNlbnRhdGlv
biBjb25zdGFudFNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbihpbnQgaW5kZXgpIGNvbnN0IHsgcmV0
dXJuIG1fY29uc3RhbnRzU291cmNlQ29kZVJlcHJlc2VudGF0aW9uW2luZGV4IC0gRmlyc3RDb25z
dGFudFJlZ2lzdGVySW5kZXhdOyB9CiAKQEAgLTU5MiwxNCArNTkxLDcgQEAgY2xhc3MgQ29kZUJs
b2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgICAgICAgICBpZiAoISFtX2xpdmVuZXNzQW5hbHlz
aXMpCiAgICAgICAgICAgICAgICAgcmV0dXJuICptX2xpdmVuZXNzQW5hbHlzaXM7CiAgICAgICAg
IH0KLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcz4gYW5h
bHlzaXMgPQotICAgICAgICAgICAgc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZUxpdmVuZXNzQW5h
bHlzaXM+KHRoaXMpOwotICAgICAgICB7Ci0gICAgICAgICAgICBDb25jdXJyZW50SklUTG9ja2Vy
IGxvY2tlcihtX2xvY2spOwotICAgICAgICAgICAgaWYgKCFtX2xpdmVuZXNzQW5hbHlzaXMpCi0g
ICAgICAgICAgICAgICAgbV9saXZlbmVzc0FuYWx5c2lzID0gV1RGTW92ZShhbmFseXNpcyk7Ci0g
ICAgICAgICAgICByZXR1cm4gKm1fbGl2ZW5lc3NBbmFseXNpczsKLSAgICAgICAgfQorICAgICAg
ICByZXR1cm4gbGl2ZW5lc3NBbmFseXNpc1Nsb3coKTsKICAgICB9CiAgICAgCiAgICAgdm9pZCB2
YWxpZGF0ZSgpOwpAQCAtNjIwLDE4ICs2MTIsNiBAQCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMg
SlNDZWxsIHsKICAgICBTdHJpbmdKdW1wVGFibGUmIGFkZFN0cmluZ1N3aXRjaEp1bXBUYWJsZSgp
IHsgY3JlYXRlUmFyZURhdGFJZk5lY2Vzc2FyeSgpOyBtX3JhcmVEYXRhLT5tX3N0cmluZ1N3aXRj
aEp1bXBUYWJsZXMuYXBwZW5kKFN0cmluZ0p1bXBUYWJsZSgpKTsgcmV0dXJuIG1fcmFyZURhdGEt
Pm1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlcy5sYXN0KCk7IH0KICAgICBTdHJpbmdKdW1wVGFibGUm
IHN0cmluZ1N3aXRjaEp1bXBUYWJsZShpbnQgdGFibGVJbmRleCkgeyBSRUxFQVNFX0FTU0VSVCht
X3JhcmVEYXRhKTsgcmV0dXJuIG1fcmFyZURhdGEtPm1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlc1t0
YWJsZUluZGV4XTsgfQogCi0gICAgLy8gTGl2ZSBjYWxsZWUgcmVnaXN0ZXJzIGF0IHlpZWxkIHBv
aW50cy4KLSAgICBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlQ2FsbGVlTG9jYWxzQXRZaWVsZCh1
bnNpZ25lZCBpbmRleCkgY29uc3QKLSAgICB7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fcmFy
ZURhdGEpOwotICAgICAgICByZXR1cm4gbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZ
aWVsZFtpbmRleF07Ci0gICAgfQotICAgIEZhc3RCaXRWZWN0b3ImIGxpdmVDYWxsZWVMb2NhbHNB
dFlpZWxkKHVuc2lnbmVkIGluZGV4KQotICAgIHsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9y
YXJlRGF0YSk7Ci0gICAgICAgIHJldHVybiBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNB
dFlpZWxkW2luZGV4XTsKLSAgICB9Ci0KICAgICBFdmFsQ29kZUNhY2hlJiBldmFsQ29kZUNhY2hl
KCkgeyBjcmVhdGVSYXJlRGF0YUlmTmVjZXNzYXJ5KCk7IHJldHVybiBtX3JhcmVEYXRhLT5tX2V2
YWxDb2RlQ2FjaGU7IH0KIAogICAgIGVudW0gU2hyaW5rTW9kZSB7CkBAIC04ODYsOCArODY2LDYg
QEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgICAgIFZlY3RvcjxTaW1w
bGVKdW1wVGFibGU+IG1fc3dpdGNoSnVtcFRhYmxlczsKICAgICAgICAgVmVjdG9yPFN0cmluZ0p1
bXBUYWJsZT4gbV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzOwogCi0gICAgICAgIFZlY3RvcjxGYXN0
Qml0VmVjdG9yPiBtX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkOwotCiAgICAgICAgIEV2YWxDb2Rl
Q2FjaGUgbV9ldmFsQ29kZUNhY2hlOwogICAgIH07CiAKQEAgLTkyMiw2ICs5MDAsOCBAQCBjbGFz
cyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xh
c3MgQ29kZUJsb2NrU2V0OworCisgICAgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzJiBsaXZlbmVz
c0FuYWx5c2lzU2xvdygpOwogICAgIAogICAgIENvZGVCbG9jayogc3BlY2lhbE9TUkVudHJ5Qmxv
Y2tPck51bGwoKTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9IYW5kbGVySW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0hhbmRs
ZXJJbmZvLmgKaW5kZXggYWNkZGEwOGVkMTRjYmY5ZjA5NzEyNzUwNDA1YTQxNzQxZjc2YTIxMy4u
N2IxMDhhY2U5MzcyOGE4ZDVkZjhlYjE3M2ZjMGIwYTYxYmFlZDYzZSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0hhbmRsZXJJbmZvLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0hhbmRsZXJJbmZvLmgKQEAgLTI3LDYgKzI3LDcgQEAKICNk
ZWZpbmUgSGFuZGxlckluZm9faAogCiAjaW5jbHVkZSAiQ29kZUxvY2F0aW9uLmgiCisjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtMzcsNiArMzgsMTEgQEAg
ZW51bSBjbGFzcyBIYW5kbGVyVHlwZSB7CiAgICAgU3ludGhlc2l6ZWRGaW5hbGx5ID0gMwogfTsK
IAorZW51bSBjbGFzcyBSZXF1aXJlZEhhbmRsZXIgeworICAgIENhdGNoSGFuZGxlciwKKyAgICBB
bnlIYW5kbGVyCit9OworCiBzdHJ1Y3QgSGFuZGxlckluZm9CYXNlIHsKICAgICBIYW5kbGVyVHlw
ZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8SGFuZGxlclR5cGU+KHR5cGVCaXRz
KTsgfQogICAgIHZvaWQgc2V0VHlwZShIYW5kbGVyVHlwZSB0eXBlKSB7IHR5cGVCaXRzID0gc3Rh
dGljX2Nhc3Q8dWludDMyX3Q+KHR5cGUpOyB9CkBAIC01OCw2ICs2NCwyMyBAQCBzdHJ1Y3QgSGFu
ZGxlckluZm9CYXNlIHsKIAogICAgIGJvb2wgaXNDYXRjaEhhbmRsZXIoKSBjb25zdCB7IHJldHVy
biB0eXBlKCkgPT0gSGFuZGxlclR5cGU6OkNhdGNoOyB9CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBIYW5kbGVyPgorICAgIHN0YXRpYyBIYW5kbGVyKiBoYW5kbGVyRm9ySW5kZXgoVmVjdG9yPEhh
bmRsZXI+JiBleGVwdGlvbkhhbmRsZXJzLCB1bnNpZ25lZCBpbmRleCwgUmVxdWlyZWRIYW5kbGVy
IHJlcXVpcmVkSGFuZGxlcikKKyAgICB7CisgICAgICAgIGZvciAoSGFuZGxlciYgaGFuZGxlciA6
IGV4ZXB0aW9uSGFuZGxlcnMpIHsKKyAgICAgICAgICAgIGlmICgocmVxdWlyZWRIYW5kbGVyID09
IFJlcXVpcmVkSGFuZGxlcjo6Q2F0Y2hIYW5kbGVyKSAmJiAhaGFuZGxlci5pc0NhdGNoSGFuZGxl
cigpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICAvLyBIYW5kbGVy
cyBhcmUgb3JkZXJlZCBpbm5lcm1vc3QgZmlyc3QsIHNvIHRoZSBmaXJzdCBoYW5kbGVyIHdlIGVu
Y291bnRlcgorICAgICAgICAgICAgLy8gdGhhdCBjb250YWlucyB0aGUgc291cmNlIGFkZHJlc3Mg
aXMgdGhlIGNvcnJlY3QgaGFuZGxlciB0byB1c2UuCisgICAgICAgICAgICAvLyBUaGlzIGluZGV4
IHVzZWQgaXMgZWl0aGVyIHRoZSBCeXRlY29kZU9mZnNldCBvciBhIENhbGxTaXRlSW5kZXguCisg
ICAgICAgICAgICBpZiAoaGFuZGxlci5zdGFydCA8PSBpbmRleCAmJiBoYW5kbGVyLmVuZCA+IGlu
ZGV4KQorICAgICAgICAgICAgICAgIHJldHVybiAmaGFuZGxlcjsKKyAgICAgICAgfQorCisgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgIH0KKwogICAgIHVpbnQzMl90IHN0YXJ0OwogICAgIHVp
bnQzMl90IGVuZDsKICAgICB1aW50MzJfdCB0YXJnZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvT3Bjb2RlLmgKaW5kZXggZWU2NjdjODRmYjI2NTJmMjU5ZTMyMTI0ZDFlOWE3YTcxZGRl
MDFlMC4uNGRiNjEwZTRlOGU0ZGY1NmNiODRlMmU3MjhhZWE0OGI4N2ExNWE3OSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaApAQCAtMTI2LDYgKzEyNiw2NCBAQCBpbmxp
bmUgc2l6ZV90IG9wY29kZUxlbmd0aChPcGNvZGVJRCBvcGNvZGUpCiAgICAgcmV0dXJuIDA7CiB9
CiAKK2lubGluZSBib29sIGlzQnJhbmNoKE9wY29kZUlEIG9wY29kZUlEKQoreworICAgIHN3aXRj
aCAob3Bjb2RlSUQpIHsKKyAgICBjYXNlIG9wX2ptcDoKKyAgICBjYXNlIG9wX2p0cnVlOgorICAg
IGNhc2Ugb3BfamZhbHNlOgorICAgIGNhc2Ugb3BfamVxX251bGw6CisgICAgY2FzZSBvcF9qbmVx
X251bGw6CisgICAgY2FzZSBvcF9qbmVxX3B0cjoKKyAgICBjYXNlIG9wX2psZXNzOgorICAgIGNh
c2Ugb3Bfamxlc3NlcToKKyAgICBjYXNlIG9wX2pncmVhdGVyOgorICAgIGNhc2Ugb3BfamdyZWF0
ZXJlcToKKyAgICBjYXNlIG9wX2pubGVzczoKKyAgICBjYXNlIG9wX2pubGVzc2VxOgorICAgIGNh
c2Ugb3Bfam5ncmVhdGVyOgorICAgIGNhc2Ugb3Bfam5ncmVhdGVyZXE6CisgICAgY2FzZSBvcF9z
d2l0Y2hfaW1tOgorICAgIGNhc2Ugb3Bfc3dpdGNoX2NoYXI6CisgICAgY2FzZSBvcF9zd2l0Y2hf
c3RyaW5nOgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorfQorCitpbmxpbmUgYm9vbCBpc1VuY29uZGl0aW9uYWxCcmFuY2go
T3Bjb2RlSUQgb3Bjb2RlSUQpCit7CisgICAgc3dpdGNoIChvcGNvZGVJRCkgeworICAgIGNhc2Ug
b3Bfam1wOgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorfQorCitpbmxpbmUgYm9vbCBpc1Rlcm1pbmFsKE9wY29kZUlEIG9w
Y29kZUlEKQoreworICAgIHN3aXRjaCAob3Bjb2RlSUQpIHsKKyAgICBjYXNlIG9wX3JldDoKKyAg
ICBjYXNlIG9wX2VuZDoKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgZGVmYXVsdDoKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKworaW5saW5lIGJvb2wgaXNUaHJvdyhPcGNvZGVJ
RCBvcGNvZGVJRCkKK3sKKyAgICBzd2l0Y2ggKG9wY29kZUlEKSB7CisgICAgY2FzZSBvcF90aHJv
dzoKKyAgICBjYXNlIG9wX3Rocm93X3N0YXRpY19lcnJvcjoKKyAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKwogfSAvLyBu
YW1lc3BhY2UgSlNDCiAKIG5hbWVzcGFjZSBXVEYgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmNwcAppbmRleCBlMmNiMDAwNDgz
Nzk0YmE5MmQ1MTBkY2Y1ZmE5OTQ4ODVhMjNkYzNkLi45YzA2ZTdlYzI3ZDViMjBiMDJiODc3NTQy
ZmU0MTVkYzkyYzliMTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmNwcApAQCAtMjYsNjkgKzI2LDM3IEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUHJlY2lzZUp1bXBUYXJnZXRzLmgiCiAKKyNpbmNsdWRl
ICJJbnRlcnByZXRlcklubGluZXMuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVk
ZSAiUHJlY2lzZUp1bXBUYXJnZXRzSW5saW5lcy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAotdGVt
cGxhdGUgPHNpemVfdCB2ZWN0b3JTaXplPgotc3RhdGljIHZvaWQgZ2V0SnVtcFRhcmdldHNGb3JC
eXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgSW50ZXJwcmV0ZXIqIGludGVycHJl
dGVyLCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGJ5dGVjb2RlT2Zm
c2V0LCBWZWN0b3I8dW5zaWduZWQsIHZlY3RvclNpemU+JiBvdXQpCit0ZW1wbGF0ZSA8c2l6ZV90
IHZlY3RvclNpemUsIHR5cGVuYW1lIEJsb2NrLCB0eXBlbmFtZSBJbnN0cnVjdGlvbj4KK3N0YXRp
YyB2b2lkIGdldEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoQmxvY2sqIGNvZGVCbG9jaywg
SW50ZXJwcmV0ZXIqIGludGVycHJldGVyLCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4s
IHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBWZWN0b3I8dW5zaWduZWQsIHZlY3RvclNpemU+JiBv
dXQpCiB7Ci0gICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQo
aW5zdHJ1Y3Rpb25zQmVnaW5bYnl0ZWNvZGVPZmZzZXRdLnUub3Bjb2RlKTsKLSAgICBJbnN0cnVj
dGlvbiogY3VycmVudCA9IGluc3RydWN0aW9uc0JlZ2luICsgYnl0ZWNvZGVPZmZzZXQ7Ci0gICAg
c3dpdGNoIChvcGNvZGVJRCkgewotICAgIGNhc2Ugb3Bfam1wOgotICAgICAgICBvdXQuYXBwZW5k
KGJ5dGVjb2RlT2Zmc2V0ICsgY3VycmVudFsxXS51Lm9wZXJhbmQpOwotICAgICAgICBicmVhazsK
LSAgICBjYXNlIG9wX2p0cnVlOgotICAgIGNhc2Ugb3BfamZhbHNlOgotICAgIGNhc2Ugb3BfamVx
X251bGw6Ci0gICAgY2FzZSBvcF9qbmVxX251bGw6Ci0gICAgICAgIG91dC5hcHBlbmQoYnl0ZWNv
ZGVPZmZzZXQgKyBjdXJyZW50WzJdLnUub3BlcmFuZCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNh
c2Ugb3Bfam5lcV9wdHI6Ci0gICAgY2FzZSBvcF9qbGVzczoKLSAgICBjYXNlIG9wX2psZXNzZXE6
Ci0gICAgY2FzZSBvcF9qZ3JlYXRlcjoKLSAgICBjYXNlIG9wX2pncmVhdGVyZXE6Ci0gICAgY2Fz
ZSBvcF9qbmxlc3M6Ci0gICAgY2FzZSBvcF9qbmxlc3NlcToKLSAgICBjYXNlIG9wX2puZ3JlYXRl
cjoKLSAgICBjYXNlIG9wX2puZ3JlYXRlcmVxOgotICAgIGNhc2Ugb3Bfc2F2ZTogLy8gVGhlIGp1
bXAgb2Ygb3Bfc2F2ZSBpcyBwdXJlbHkgZm9yIGNhbGN1bGF0aW5nIGxpdmVuZXNzLgotICAgICAg
ICBvdXQuYXBwZW5kKGJ5dGVjb2RlT2Zmc2V0ICsgY3VycmVudFszXS51Lm9wZXJhbmQpOwotICAg
ICAgICBicmVhazsKLSAgICBjYXNlIG9wX3N3aXRjaF9pbW06Ci0gICAgY2FzZSBvcF9zd2l0Y2hf
Y2hhcjogewotICAgICAgICBTaW1wbGVKdW1wVGFibGUmIHRhYmxlID0gY29kZUJsb2NrLT5zd2l0
Y2hKdW1wVGFibGUoY3VycmVudFsxXS51Lm9wZXJhbmQpOwotICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSB0YWJsZS5icmFuY2hPZmZzZXRzLnNpemUoKTsgaS0tOykKLSAgICAgICAgICAgIG91dC5h
cHBlbmQoYnl0ZWNvZGVPZmZzZXQgKyB0YWJsZS5icmFuY2hPZmZzZXRzW2ldKTsKLSAgICAgICAg
b3V0LmFwcGVuZChieXRlY29kZU9mZnNldCArIGN1cnJlbnRbMl0udS5vcGVyYW5kKTsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgfQotICAgIGNhc2Ugb3Bfc3dpdGNoX3N0cmluZzogewotICAgICAgICBT
dHJpbmdKdW1wVGFibGUmIHRhYmxlID0gY29kZUJsb2NrLT5zdHJpbmdTd2l0Y2hKdW1wVGFibGUo
Y3VycmVudFsxXS51Lm9wZXJhbmQpOwotICAgICAgICBTdHJpbmdKdW1wVGFibGU6OlN0cmluZ09m
ZnNldFRhYmxlOjppdGVyYXRvciBpdGVyID0gdGFibGUub2Zmc2V0VGFibGUuYmVnaW4oKTsKLSAg
ICAgICAgU3RyaW5nSnVtcFRhYmxlOjpTdHJpbmdPZmZzZXRUYWJsZTo6aXRlcmF0b3IgZW5kID0g
dGFibGUub2Zmc2V0VGFibGUuZW5kKCk7Ci0gICAgICAgIGZvciAoOyBpdGVyICE9IGVuZDsgKytp
dGVyKQotICAgICAgICAgICAgb3V0LmFwcGVuZChieXRlY29kZU9mZnNldCArIGl0ZXItPnZhbHVl
LmJyYW5jaE9mZnNldCk7Ci0gICAgICAgIG91dC5hcHBlbmQoYnl0ZWNvZGVPZmZzZXQgKyBjdXJy
ZW50WzJdLnUub3BlcmFuZCk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBjYXNlIG9wX2xv
b3BfaGludDoKKyAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGludGVycHJldGVyLT5nZXRPcGNvZGVJ
RChpbnN0cnVjdGlvbnNCZWdpbltieXRlY29kZU9mZnNldF0pOworICAgIGV4dHJhY3RTdG9yZWRK
dW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9jaywgaW50ZXJwcmV0ZXIsIGluc3Ry
dWN0aW9uc0JlZ2luLCBieXRlY29kZU9mZnNldCwgWyZdKGludDMyX3QmIHJlbGF0aXZlT2Zmc2V0
KSB7CisgICAgICAgIG91dC5hcHBlbmQoYnl0ZWNvZGVPZmZzZXQgKyByZWxhdGl2ZU9mZnNldCk7
CisgICAgfSk7CisgICAgLy8gb3BfbG9vcF9oaW50IGRvZXMgbm90IGhhdmUganVtcCB0YXJnZXQg
c3RvcmVkIGluIGJ5dGVjb2RlIGluc3RydWN0aW9ucy4KKyAgICBpZiAob3Bjb2RlSUQgPT0gb3Bf
bG9vcF9oaW50KQogICAgICAgICBvdXQuYXBwZW5kKGJ5dGVjb2RlT2Zmc2V0KTsKLSAgICAgICAg
YnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgYnJlYWs7Ci0gICAgfQogfQogCi12b2lkIGNv
bXB1dGVQcmVjaXNlSnVtcFRhcmdldHMoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFZlY3Rvcjx1bnNp
Z25lZCwgMzI+JiBvdXQpCitlbnVtIGNsYXNzIENvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHNNb2Rl
IHsKKyAgICBGb2xsb3dDb2RlQmxvY2tDbGFpbSwKKyAgICBGb3JjZUNvbXB1dGUsCit9OworCit0
ZW1wbGF0ZTxDb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzTW9kZSBNb2RlLCB0eXBlbmFtZSBCbG9j
aywgdHlwZW5hbWUgSW5zdHJ1Y3Rpb24sIHNpemVfdCB2ZWN0b3JTaXplPgordm9pZCBjb21wdXRl
UHJlY2lzZUp1bXBUYXJnZXRzSW50ZXJuYWwoQmxvY2sqIGNvZGVCbG9jaywgSW5zdHJ1Y3Rpb24q
IGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50LCBWZWN0b3I8dW5z
aWduZWQsIHZlY3RvclNpemU+JiBvdXQpCiB7CiAgICAgQVNTRVJUKG91dC5pc0VtcHR5KCkpOwog
ICAgIAogICAgIC8vIFdlIHdpbGwgZGVyaXZlIGEgc3VwZXJzZXQgb2YgdGhlIGp1bXAgdGFyZ2V0
cyB0aGF0IHRoZSBjb2RlIGJsb2NrIHRoaW5rcyBpdCBoYXMuCiAgICAgLy8gU28sIGlmIHRoZSBj
b2RlIGJsb2NrIGNsYWltcyB0aGVyZSBhcmUgbm9uZSwgdGhlbiB3ZSBhcmUgZG9uZS4KLSAgICBp
ZiAoIWNvZGVCbG9jay0+bnVtYmVyT2ZKdW1wVGFyZ2V0cygpKQorICAgIGlmIChNb2RlID09IENv
bXB1dGVQcmVjaXNlSnVtcFRhcmdldHNNb2RlOjpGb2xsb3dDb2RlQmxvY2tDbGFpbSAmJiAhY29k
ZUJsb2NrLT5udW1iZXJPZkp1bXBUYXJnZXRzKCkpCiAgICAgICAgIHJldHVybjsKICAgICAKICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSBjb2RlQmxvY2stPm51bWJlck9mRXhjZXB0aW9uSGFuZGxlcnMo
KTsgaS0tOykgewpAQCAtOTgsMTAgKzY2LDggQEAgdm9pZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJn
ZXRzKENvZGVCbG9jayogY29kZUJsb2NrLCBWZWN0b3I8dW5zaWduZWQsIDMyPiYgb3V0KQogICAg
IH0KIAogICAgIEludGVycHJldGVyKiBpbnRlcnByZXRlciA9IGNvZGVCbG9jay0+dm0oKS0+aW50
ZXJwcmV0ZXI7Ci0gICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luID0gY29kZUJsb2Nr
LT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpOwotICAgIHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQg
PSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLnNpemUoKTsKICAgICBmb3IgKHVuc2lnbmVkIGJ5
dGVjb2RlT2Zmc2V0ID0gMDsgYnl0ZWNvZGVPZmZzZXQgPCBpbnN0cnVjdGlvbkNvdW50Oykgewot
ICAgICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGludGVycHJldGVyLT5nZXRPcGNvZGVJRChpbnN0
cnVjdGlvbnNCZWdpbltieXRlY29kZU9mZnNldF0udS5vcGNvZGUpOworICAgICAgICBPcGNvZGVJ
RCBvcGNvZGVJRCA9IGludGVycHJldGVyLT5nZXRPcGNvZGVJRChpbnN0cnVjdGlvbnNCZWdpblti
eXRlY29kZU9mZnNldF0pOwogICAgICAgICBnZXRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0
KGNvZGVCbG9jaywgaW50ZXJwcmV0ZXIsIGluc3RydWN0aW9uc0JlZ2luLCBieXRlY29kZU9mZnNl
dCwgb3V0KTsKICAgICAgICAgYnl0ZWNvZGVPZmZzZXQgKz0gb3Bjb2RlTGVuZ3Roc1tvcGNvZGVJ
RF07CiAgICAgfQpAQCAtMTIzLDExICs4OSwzNCBAQCB2b2lkIGNvbXB1dGVQcmVjaXNlSnVtcFRh
cmdldHMoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFZlY3Rvcjx1bnNpZ25lZCwgMzI+JiBvdXQpCiAg
ICAgb3V0LnNocmlua1RvRml0KCk7CiB9CiAKLXZvaWQgZmluZEp1bXBUYXJnZXRzRm9yQnl0ZWNv
ZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBW
ZWN0b3I8dW5zaWduZWQsIDE+JiBvdXQpCit2b2lkIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMo
Q29kZUJsb2NrKiBjb2RlQmxvY2ssIFZlY3Rvcjx1bnNpZ25lZCwgMzI+JiBvdXQpCiB7Ci0gICAg
SW50ZXJwcmV0ZXIqIGludGVycHJldGVyID0gY29kZUJsb2NrLT52bSgpLT5pbnRlcnByZXRlcjsK
LSAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4gPSBjb2RlQmxvY2stPmluc3RydWN0
aW9ucygpLmJlZ2luKCk7Ci0gICAgZ2V0SnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChjb2Rl
QmxvY2ssIGludGVycHJldGVyLCBpbnN0cnVjdGlvbnNCZWdpbiwgYnl0ZWNvZGVPZmZzZXQsIG91
dCk7CisgICAgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0c0ludGVybmFsPENvbXB1dGVQcmVjaXNl
SnVtcFRhcmdldHNNb2RlOjpGb2xsb3dDb2RlQmxvY2tDbGFpbT4oY29kZUJsb2NrLCBjb2RlQmxv
Y2stPmluc3RydWN0aW9ucygpLmJlZ2luKCksIGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuc2l6
ZSgpLCBvdXQpOworfQorCit2b2lkIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMoQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgaW5z
dHJ1Y3Rpb25Db3VudCwgVmVjdG9yPHVuc2lnbmVkLCAzMj4mIG91dCkKK3sKKyAgICBjb21wdXRl
UHJlY2lzZUp1bXBUYXJnZXRzSW50ZXJuYWw8Q29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0c01vZGU6
OkZvbGxvd0NvZGVCbG9ja0NsYWltPihjb2RlQmxvY2ssIGluc3RydWN0aW9uc0JlZ2luLCBpbnN0
cnVjdGlvbkNvdW50LCBvdXQpOworfQorCit2b2lkIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMo
VW5saW5rZWRDb2RlQmxvY2sqIGNvZGVCbG9jaywgVW5saW5rZWRJbnN0cnVjdGlvbiogaW5zdHJ1
Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQsIFZlY3Rvcjx1bnNpZ25lZCwg
MzI+JiBvdXQpCit7CisgICAgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0c0ludGVybmFsPENvbXB1
dGVQcmVjaXNlSnVtcFRhcmdldHNNb2RlOjpGb2xsb3dDb2RlQmxvY2tDbGFpbT4oY29kZUJsb2Nr
LCBpbnN0cnVjdGlvbnNCZWdpbiwgaW5zdHJ1Y3Rpb25Db3VudCwgb3V0KTsKK30KKwordm9pZCBy
ZWNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMoVW5saW5rZWRDb2RlQmxvY2sqIGNvZGVCbG9jaywg
VW5saW5rZWRJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGluc3RydWN0
aW9uQ291bnQsIFZlY3Rvcjx1bnNpZ25lZD4mIG91dCkKK3sKKyAgICBjb21wdXRlUHJlY2lzZUp1
bXBUYXJnZXRzSW50ZXJuYWw8Q29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0c01vZGU6OkZvcmNlQ29t
cHV0ZT4oY29kZUJsb2NrLCBpbnN0cnVjdGlvbnNCZWdpbiwgaW5zdHJ1Y3Rpb25Db3VudCwgb3V0
KTsKK30KKwordm9pZCBmaW5kSnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sq
IGNvZGVCbG9jaywgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBieXRl
Y29kZU9mZnNldCwgVmVjdG9yPHVuc2lnbmVkLCAxPiYgb3V0KQoreworICAgIGdldEp1bXBUYXJn
ZXRzRm9yQnl0ZWNvZGVPZmZzZXQoY29kZUJsb2NrLCBjb2RlQmxvY2stPnZtKCktPmludGVycHJl
dGVyLCBpbnN0cnVjdGlvbnNCZWdpbiwgYnl0ZWNvZGVPZmZzZXQsIG91dCk7Cit9CisKK3ZvaWQg
ZmluZEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoVW5saW5rZWRDb2RlQmxvY2sqIGNvZGVC
bG9jaywgVW5saW5rZWRJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGJ5
dGVjb2RlT2Zmc2V0LCBWZWN0b3I8dW5zaWduZWQsIDE+JiBvdXQpCit7CisgICAgZ2V0SnVtcFRh
cmdldHNGb3JCeXRlY29kZU9mZnNldChjb2RlQmxvY2ssIGNvZGVCbG9jay0+dm0oKS0+aW50ZXJw
cmV0ZXIsIGluc3RydWN0aW9uc0JlZ2luLCBieXRlY29kZU9mZnNldCwgb3V0KTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
UHJlY2lzZUp1bXBUYXJnZXRzLmgKaW5kZXggODUyNDEzZDc3Yjc5ODk4NGIyN2NlZjBlZDYyYmM5
NGM2ODllMjEyYy4uYmNjOTM0NmNkNWQ3MDIwNDY1ZGVmMDlhNWIyNTljZjQ4NzJkOWI5MyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0
cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdl
dHMuaApAQCAtMjMsMTkgKzIzLDIzIEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCi0jaWZuZGVm
IFByZWNpc2VKdW1wVGFyZ2V0c19oCi0jZGVmaW5lIFByZWNpc2VKdW1wVGFyZ2V0c19oCisjcHJh
Z21hIG9uY2UKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAor
Y2xhc3MgVW5saW5rZWRDb2RlQmxvY2s7CitzdHJ1Y3QgVW5saW5rZWRJbnN0cnVjdGlvbjsKKwog
Ly8gUmV0dXJuIGEgc29ydGVkIGxpc3Qgb2YgYnl0ZWNvZGUgaW5kZXggdGhhdCBhcmUgdGhlIGRl
c3RpbmF0aW9uIG9mIGEganVtcC4KIHZvaWQgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhDb2Rl
QmxvY2sqLCBWZWN0b3I8dW5zaWduZWQsIDMyPiYgb3V0KTsKK3ZvaWQgY29tcHV0ZVByZWNpc2VK
dW1wVGFyZ2V0cyhDb2RlQmxvY2sqLCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVu
c2lnbmVkIGluc3RydWN0aW9uQ291bnQsIFZlY3Rvcjx1bnNpZ25lZCwgMzI+JiBvdXQpOwordm9p
ZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKFVubGlua2VkQ29kZUJsb2NrKiwgVW5saW5rZWRJ
bnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQs
IFZlY3Rvcjx1bnNpZ25lZCwgMzI+JiBvdXQpOwogCi12b2lkIGZpbmRKdW1wVGFyZ2V0c0ZvckJ5
dGVjb2RlT2Zmc2V0KENvZGVCbG9jayosIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBWZWN0b3I8
dW5zaWduZWQsIDE+JiBvdXQpOwotCi19IC8vIG5hbWVzcGFjZSBKU0MKK3ZvaWQgcmVjb21wdXRl
UHJlY2lzZUp1bXBUYXJnZXRzKFVubGlua2VkQ29kZUJsb2NrKiwgVW5saW5rZWRJbnN0cnVjdGlv
biogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQsIFZlY3Rvcjx1
bnNpZ25lZD4mIG91dCk7CiAKLSNlbmRpZiAvLyBQcmVjaXNlSnVtcFRhcmdldHNfaAordm9pZCBm
aW5kSnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqLCBJbnN0cnVjdGlvbiog
aW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBWZWN0b3I8dW5zaWdu
ZWQsIDE+JiBvdXQpOwordm9pZCBmaW5kSnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChVbmxp
bmtlZENvZGVCbG9jayosIFVubGlua2VkSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1
bnNpZ25lZCBieXRlY29kZU9mZnNldCwgVmVjdG9yPHVuc2lnbmVkLCAxPiYgb3V0KTsKIAorfSAv
LyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvUHJlY2lzZUp1bXBUYXJnZXRzSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0c0lubGluZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xOWZkY2RjZWJi
NzJmNDYyZjA4NDg1ZjhkZGQ4YzFmMzJmYTBkZTU1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0c0lubGluZXMuaApAQCAt
MCwwICsxLDgyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJJbnRlcnByZXRlcklubGluZXMuaCIKKyNpbmNs
dWRlICJPcGNvZGUuaCIKKyNpbmNsdWRlICJQcmVjaXNlSnVtcFRhcmdldHMuaCIKKworbmFtZXNw
YWNlIEpTQyB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIEJsb2NrLCB0eXBlbmFtZSBJbnN0cnVjdGlv
biwgdHlwZW5hbWUgRnVuY3Rpb24+CitpbmxpbmUgdm9pZCBleHRyYWN0U3RvcmVkSnVtcFRhcmdl
dHNGb3JCeXRlY29kZU9mZnNldChCbG9jayogY29kZUJsb2NrLCBJbnRlcnByZXRlciogaW50ZXJw
cmV0ZXIsIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgYnl0ZWNvZGVP
ZmZzZXQsIEZ1bmN0aW9uIGZ1bmN0aW9uKQoreworICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW50
ZXJwcmV0ZXItPmdldE9wY29kZUlEKGluc3RydWN0aW9uc0JlZ2luW2J5dGVjb2RlT2Zmc2V0XSk7
CisgICAgSW5zdHJ1Y3Rpb24qIGN1cnJlbnQgPSBpbnN0cnVjdGlvbnNCZWdpbiArIGJ5dGVjb2Rl
T2Zmc2V0OworICAgIHN3aXRjaCAob3Bjb2RlSUQpIHsKKyAgICBjYXNlIG9wX2ptcDoKKyAgICAg
ICAgZnVuY3Rpb24oY3VycmVudFsxXS51Lm9wZXJhbmQpOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIG9wX2p0cnVlOgorICAgIGNhc2Ugb3BfamZhbHNlOgorICAgIGNhc2Ugb3BfamVxX251bGw6
CisgICAgY2FzZSBvcF9qbmVxX251bGw6CisgICAgICAgIGZ1bmN0aW9uKGN1cnJlbnRbMl0udS5v
cGVyYW5kKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBvcF9qbmVxX3B0cjoKKyAgICBjYXNl
IG9wX2psZXNzOgorICAgIGNhc2Ugb3Bfamxlc3NlcToKKyAgICBjYXNlIG9wX2pncmVhdGVyOgor
ICAgIGNhc2Ugb3BfamdyZWF0ZXJlcToKKyAgICBjYXNlIG9wX2pubGVzczoKKyAgICBjYXNlIG9w
X2pubGVzc2VxOgorICAgIGNhc2Ugb3Bfam5ncmVhdGVyOgorICAgIGNhc2Ugb3Bfam5ncmVhdGVy
ZXE6CisgICAgICAgIGZ1bmN0aW9uKGN1cnJlbnRbM10udS5vcGVyYW5kKTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBvcF9zd2l0Y2hfaW1tOgorICAgIGNhc2Ugb3Bfc3dpdGNoX2NoYXI6IHsK
KyAgICAgICAgYXV0byYgdGFibGUgPSBjb2RlQmxvY2stPnN3aXRjaEp1bXBUYWJsZShjdXJyZW50
WzFdLnUub3BlcmFuZCk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IHRhYmxlLmJyYW5jaE9m
ZnNldHMuc2l6ZSgpOyBpLS07KQorICAgICAgICAgICAgZnVuY3Rpb24odGFibGUuYnJhbmNoT2Zm
c2V0c1tpXSk7CisgICAgICAgIGZ1bmN0aW9uKGN1cnJlbnRbMl0udS5vcGVyYW5kKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgfQorICAgIGNhc2Ugb3Bfc3dpdGNoX3N0cmluZzogeworICAgICAgICBh
dXRvJiB0YWJsZSA9IGNvZGVCbG9jay0+c3RyaW5nU3dpdGNoSnVtcFRhYmxlKGN1cnJlbnRbMV0u
dS5vcGVyYW5kKTsKKyAgICAgICAgYXV0byBpdGVyID0gdGFibGUub2Zmc2V0VGFibGUuYmVnaW4o
KTsKKyAgICAgICAgYXV0byBlbmQgPSB0YWJsZS5vZmZzZXRUYWJsZS5lbmQoKTsKKyAgICAgICAg
Zm9yICg7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpCisgICAgICAgICAgICBmdW5jdGlvbihpdGVyLT52
YWx1ZS5icmFuY2hPZmZzZXQpOworICAgICAgICBmdW5jdGlvbihjdXJyZW50WzJdLnUub3BlcmFu
ZCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBkZWZhdWx0OgorICAgICAgICBicmVhazsK
KyAgICB9Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKaW5kZXggMDA1ZGZmOGJmYzJj
NTA0OGM1MDNjZTYwMjliYmQyMzgzMDZhMTk1NC4uYTZlMGU4MmJlMzM2Nzg5MGVlMjAyMTAwM2M5
NzQzNmQ2ODVmYmI2MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1VubGlua2VkQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiVW5s
aW5rZWRDb2RlQmxvY2suaCIKIAogI2luY2x1ZGUgIkJ5dGVjb2RlR2VuZXJhdG9yLmgiCisjaW5j
bHVkZSAiQnl0ZWNvZGVSZXdyaXRlci5oIgogI2luY2x1ZGUgIkNsYXNzSW5mby5oIgogI2luY2x1
ZGUgIkNvZGVDYWNoZS5oIgogI2luY2x1ZGUgIkV4ZWN1dGFibGUuaCIKQEAgLTM2LDYgKzM3LDcg
QEAKICNpbmNsdWRlICJKU1N0cmluZy5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNs
dWRlICJQYXJzZXIuaCIKKyNpbmNsdWRlICJQcmVjaXNlSnVtcFRhcmdldHNJbmxpbmVzLmgiCiAj
aW5jbHVkZSAiU291cmNlUHJvdmlkZXIuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIKICNpbmNs
dWRlICJTeW1ib2xUYWJsZS5oIgpAQCAtMzY3LDUgKzM2OSw2NyBAQCBjb25zdCBVbmxpbmtlZElu
c3RydWN0aW9uU3RyZWFtJiBVbmxpbmtlZENvZGVCbG9jazo6aW5zdHJ1Y3Rpb25zKCkgY29uc3QK
ICAgICByZXR1cm4gKm1fdW5saW5rZWRJbnN0cnVjdGlvbnM7CiB9CiAKK1VubGlua2VkSGFuZGxl
ckluZm8qIFVubGlua2VkQ29kZUJsb2NrOjpoYW5kbGVyRm9yQnl0ZWNvZGVPZmZzZXQodW5zaWdu
ZWQgYnl0ZWNvZGVPZmZzZXQsIFJlcXVpcmVkSGFuZGxlciByZXF1aXJlZEhhbmRsZXIpCit7Cisg
ICAgcmV0dXJuIGhhbmRsZXJGb3JJbmRleChieXRlY29kZU9mZnNldCwgcmVxdWlyZWRIYW5kbGVy
KTsKK30KKworVW5saW5rZWRIYW5kbGVySW5mbyogVW5saW5rZWRDb2RlQmxvY2s6OmhhbmRsZXJG
b3JJbmRleCh1bnNpZ25lZCBpbmRleCwgUmVxdWlyZWRIYW5kbGVyIHJlcXVpcmVkSGFuZGxlcikK
K3sKKyAgICBpZiAoIW1fcmFyZURhdGEpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJl
dHVybiBVbmxpbmtlZEhhbmRsZXJJbmZvOjpoYW5kbGVyRm9ySW5kZXgobV9yYXJlRGF0YS0+bV9l
eGNlcHRpb25IYW5kbGVycywgaW5kZXgsIHJlcXVpcmVkSGFuZGxlcik7Cit9CisKK3ZvaWQgVW5s
aW5rZWRDb2RlQmxvY2s6OmFwcGx5TW9kaWZpY2F0aW9uKEJ5dGVjb2RlUmV3cml0ZXImIHJld3Jp
dGVyKQoreworICAgIC8vIEJlZm9yZSBhcHBseWluZyB0aGUgY2hhbmdlcywgd2UgYWRqdXN0IHRo
ZSBqdW1wcyBiYXNlZCBvbiB0aGUgb3JpZ2luYWwgYnl0ZWNvZGUgb2Zmc2V0LCB0aGUgb2Zmc2V0
IHRvIHRoZSBqdW1wIHRhcmdldCwgYW5kCisgICAgLy8gdGhlIGluc2VydGlvbiBpbmZvcm1hdGlv
bi4KKworICAgIEJ5dGVjb2RlR3JhcGg8VW5saW5rZWRDb2RlQmxvY2s+JiBncmFwaCA9IHJld3Jp
dGVyLmdyYXBoKCk7CisgICAgVW5saW5rZWRJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4g
PSBncmFwaC5pbnN0cnVjdGlvbnMoKS5iZWdpbigpOworCisgICAgZm9yIChpbnQgYnl0ZWNvZGVP
ZmZzZXQgPSAwLCBpbnN0cnVjdGlvbkNvdW50ID0gZ3JhcGguaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgp
OyBieXRlY29kZU9mZnNldCA8IGluc3RydWN0aW9uQ291bnQ7KSB7CisgICAgICAgIFVubGlua2Vk
SW5zdHJ1Y3Rpb24qIGN1cnJlbnQgPSBpbnN0cnVjdGlvbnNCZWdpbiArIGJ5dGVjb2RlT2Zmc2V0
OworICAgICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGN1cnJlbnRbMF0udS5vcGNvZGU7CisgICAg
ICAgIGV4dHJhY3RTdG9yZWRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KHRoaXMsIHZtKCkt
PmludGVycHJldGVyLCBpbnN0cnVjdGlvbnNCZWdpbiwgYnl0ZWNvZGVPZmZzZXQsIFsmXShpbnQz
Ml90JiByZWxhdGl2ZU9mZnNldCkgeworICAgICAgICAgICAgcmVsYXRpdmVPZmZzZXQgPSByZXdy
aXRlci5hZGp1c3RKdW1wVGFyZ2V0KGJ5dGVjb2RlT2Zmc2V0LCBieXRlY29kZU9mZnNldCArIHJl
bGF0aXZlT2Zmc2V0KTsKKyAgICAgICAgfSk7CisgICAgICAgIGJ5dGVjb2RlT2Zmc2V0ICs9IG9w
Y29kZUxlbmd0aChvcGNvZGVJRCk7CisgICAgfQorCisgICAgLy8gVGhlbiwgZXhjZXB0aW9uIGhh
bmRsZXJzIHNob3VsZCBiZSBhZGp1c3RlZC4KKyAgICBpZiAobV9yYXJlRGF0YSkgeworICAgICAg
ICBmb3IgKFVubGlua2VkSGFuZGxlckluZm8mIGhhbmRsZXIgOiBtX3JhcmVEYXRhLT5tX2V4Y2Vw
dGlvbkhhbmRsZXJzKSB7CisgICAgICAgICAgICBoYW5kbGVyLnRhcmdldCA9IHJld3JpdGVyLmFk
anVzdEFic29sdXRlT2Zmc2V0KGhhbmRsZXIudGFyZ2V0KTsKKyAgICAgICAgICAgIGhhbmRsZXIu
c3RhcnQgPSByZXdyaXRlci5hZGp1c3RBYnNvbHV0ZU9mZnNldChoYW5kbGVyLnN0YXJ0KTsKKyAg
ICAgICAgICAgIGhhbmRsZXIuZW5kID0gcmV3cml0ZXIuYWRqdXN0QWJzb2x1dGVPZmZzZXQoaGFu
ZGxlci5lbmQpOworICAgICAgICB9CisKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBt
X3JhcmVEYXRhLT5tX29wUHJvZmlsZUNvbnRyb2xGbG93Qnl0ZWNvZGVPZmZzZXRzLnNpemUoKTsg
KytpKQorICAgICAgICAgICAgbV9yYXJlRGF0YS0+bV9vcFByb2ZpbGVDb250cm9sRmxvd0J5dGVj
b2RlT2Zmc2V0c1tpXSA9IHJld3JpdGVyLmFkanVzdEFic29sdXRlT2Zmc2V0KG1fcmFyZURhdGEt
Pm1fb3BQcm9maWxlQ29udHJvbEZsb3dCeXRlY29kZU9mZnNldHNbaV0pOworCisgICAgICAgIGlm
ICghbV9yYXJlRGF0YS0+bV90eXBlUHJvZmlsZXJJbmZvTWFwLmlzRW1wdHkoKSkgeworICAgICAg
ICAgICAgSGFzaE1hcDx1bnNpZ25lZCwgUmFyZURhdGE6OlR5cGVQcm9maWxlckV4cHJlc3Npb25S
YW5nZT4gYWRqdXN0ZWRUeXBlUHJvZmlsZXJJbmZvTWFwOworICAgICAgICAgICAgZm9yIChhdXRv
JiBlbnRyeSA6IG1fcmFyZURhdGEtPm1fdHlwZVByb2ZpbGVySW5mb01hcCkKKyAgICAgICAgICAg
ICAgICBhZGp1c3RlZFR5cGVQcm9maWxlckluZm9NYXAuc2V0KHJld3JpdGVyLmFkanVzdEFic29s
dXRlT2Zmc2V0KGVudHJ5LmtleSksIGVudHJ5LnZhbHVlKTsKKyAgICAgICAgICAgIG1fcmFyZURh
dGEtPm1fdHlwZVByb2ZpbGVySW5mb01hcC5zd2FwKGFkanVzdGVkVHlwZVByb2ZpbGVySW5mb01h
cCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fcHJv
cGVydHlBY2Nlc3NJbnN0cnVjdGlvbnMuc2l6ZSgpOyArK2kpCisgICAgICAgIG1fcHJvcGVydHlB
Y2Nlc3NJbnN0cnVjdGlvbnNbaV0gPSByZXdyaXRlci5hZGp1c3RBYnNvbHV0ZU9mZnNldChtX3By
b3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zW2ldKTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgbV9leHByZXNzaW9uSW5mby5zaXplKCk7ICsraSkKKyAgICAgICAgbV9leHByZXNzaW9uSW5m
b1tpXS5pbnN0cnVjdGlvbk9mZnNldCA9IHJld3JpdGVyLmFkanVzdEFic29sdXRlT2Zmc2V0KG1f
ZXhwcmVzc2lvbkluZm9baV0uaW5zdHJ1Y3Rpb25PZmZzZXQpOworCisgICAgLy8gVGhlbiwgbW9k
aWZ5IHRoZSB1bmxpbmtlZCBpbnN0cnVjdGlvbnMuCisgICAgcmV3cml0ZXIuYXBwbHlNb2RpZmlj
YXRpb24oKTsKKworICAgIC8vIEFuZCByZWNvbXB1dGUgdGhlIGp1bXAgdGFyZ2V0IGJhc2VkIG9u
IHRoZSBtb2RpZmllZCB1bmxpbmtlZCBpbnN0cnVjdGlvbnMuCisgICAgbV9qdW1wVGFyZ2V0cy5j
bGVhcigpOworICAgIHJlY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyh0aGlzLCBncmFwaC5pbnN0
cnVjdGlvbnMoKS5iZWdpbigpLCBncmFwaC5pbnN0cnVjdGlvbnMoKS5zaXplKCksIG1fanVtcFRh
cmdldHMpOworfQorCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9VbmxpbmtlZENvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1VubGlua2VkQ29kZUJsb2NrLmgKaW5kZXggYjRkMmNmNDhlNDYzOGQzNzNiMTY3MjBmNzZlM2Nm
Zjk3ZGYwMTUwZC4uNzJkMTY5NjExYWE5MzUxNzhjNDgxMGVlZDJkNTlhODMxOGZmNjFhNyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2Nr
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2Nr
LmgKQEAgLTQ1LDYgKzQ1LDggQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKK2NsYXNzIEJ5dGVjb2Rl
UmV3cml0ZXI7CitjbGFzcyBEZWJ1Z2dlcjsKIGNsYXNzIEZ1bmN0aW9uTWV0YWRhdGFOb2RlOwog
Y2xhc3MgRnVuY3Rpb25FeGVjdXRhYmxlOwogY2xhc3MgSlNTY29wZTsKQEAgLTY1LDcgKzY3LDEx
IEBAIHR5cGVkZWYgdW5zaWduZWQgVW5saW5rZWRPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTsKIHR5
cGVkZWYgdW5zaWduZWQgVW5saW5rZWRMTEludENhbGxMaW5rSW5mbzsKIAogc3RydWN0IFVubGlu
a2VkU3RyaW5nSnVtcFRhYmxlIHsKLSAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFN0cmluZ0lt
cGw+LCBpbnQzMl90PiBTdHJpbmdPZmZzZXRUYWJsZTsKKyAgICBzdHJ1Y3QgT2Zmc2V0TG9jYXRp
b24geworICAgICAgICBpbnQzMl90IGJyYW5jaE9mZnNldDsKKyAgICB9OworCisgICAgdHlwZWRl
ZiBIYXNoTWFwPFJlZlB0cjxTdHJpbmdJbXBsPiwgT2Zmc2V0TG9jYXRpb24+IFN0cmluZ09mZnNl
dFRhYmxlOwogICAgIFN0cmluZ09mZnNldFRhYmxlIG9mZnNldFRhYmxlOwogCiAgICAgaW5saW5l
IGludDMyX3Qgb2Zmc2V0Rm9yVmFsdWUoU3RyaW5nSW1wbCogdmFsdWUsIGludDMyX3QgZGVmYXVs
dE9mZnNldCkKQEAgLTc0LDcgKzgwLDcgQEAgc3RydWN0IFVubGlua2VkU3RyaW5nSnVtcFRhYmxl
IHsKICAgICAgICAgU3RyaW5nT2Zmc2V0VGFibGU6OmNvbnN0X2l0ZXJhdG9yIGxvYyA9IG9mZnNl
dFRhYmxlLmZpbmQodmFsdWUpOwogICAgICAgICBpZiAobG9jID09IGVuZCkKICAgICAgICAgICAg
IHJldHVybiBkZWZhdWx0T2Zmc2V0OwotICAgICAgICByZXR1cm4gbG9jLT52YWx1ZTsKKyAgICAg
ICAgcmV0dXJuIGxvYy0+dmFsdWUuYnJhbmNoT2Zmc2V0OwogICAgIH0KIAogfTsKQEAgLTEwMiw2
ICsxMDgsOCBAQCBzdHJ1Y3QgVW5saW5rZWRJbnN0cnVjdGlvbiB7CiAgICAgfSB1OwogfTsKIAor
Y2xhc3MgQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb247CisKIGNsYXNzIFVubGlua2VkQ29kZUJs
b2NrIDogcHVibGljIEpTQ2VsbCB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBKU0NlbGwgQmFzZTsK
QEAgLTExMSw2ICsxMTksOSBAQCBjbGFzcyBVbmxpbmtlZENvZGVCbG9jayA6IHB1YmxpYyBKU0Nl
bGwgewogCiAgICAgZW51bSB7IENhbGxGdW5jdGlvbiwgQXBwbHlGdW5jdGlvbiB9OwogCisgICAg
dHlwZWRlZiBVbmxpbmtlZEluc3RydWN0aW9uIEluc3RydWN0aW9uOworICAgIHR5cGVkZWYgVmVj
dG9yPFVubGlua2VkSW5zdHJ1Y3Rpb24sIDAsIFVuc2FmZVZlY3Rvck92ZXJmbG93PiBVbnBhY2tl
ZEluc3RydWN0aW9uczsKKwogICAgIGJvb2wgaXNDb25zdHJ1Y3RvcigpIGNvbnN0IHsgcmV0dXJu
IG1faXNDb25zdHJ1Y3RvcjsgfQogICAgIGJvb2wgaXNTdHJpY3RNb2RlKCkgY29uc3QgeyByZXR1
cm4gbV9pc1N0cmljdE1vZGU7IH0KICAgICBib29sIHVzZXNFdmFsKCkgY29uc3QgeyByZXR1cm4g
bV91c2VzRXZhbDsgfQpAQCAtMjAwLDYgKzIxMSw5IEBAIGNsYXNzIFVubGlua2VkQ29kZUJsb2Nr
IDogcHVibGljIEpTQ2VsbCB7CiAgICAgdW5zaWduZWQganVtcFRhcmdldChpbnQgaW5kZXgpIGNv
bnN0IHsgcmV0dXJuIG1fanVtcFRhcmdldHNbaW5kZXhdOyB9CiAgICAgdW5zaWduZWQgbGFzdEp1
bXBUYXJnZXQoKSBjb25zdCB7IHJldHVybiBtX2p1bXBUYXJnZXRzLmxhc3QoKTsgfQogCisgICAg
VW5saW5rZWRIYW5kbGVySW5mbyogaGFuZGxlckZvckJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5
dGVjb2RlT2Zmc2V0LCBSZXF1aXJlZEhhbmRsZXIgPSBSZXF1aXJlZEhhbmRsZXI6OkFueUhhbmRs
ZXIpOworICAgIFVubGlua2VkSGFuZGxlckluZm8qIGhhbmRsZXJGb3JJbmRleCh1bnNpZ25lZCwg
UmVxdWlyZWRIYW5kbGVyID0gUmVxdWlyZWRIYW5kbGVyOjpBbnlIYW5kbGVyKTsKKwogICAgIGJv
b2wgaXNCdWlsdGluRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2lzQnVpbHRpbkZ1bmN0aW9u
OyB9CiAKICAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kKCkgY29uc3QgeyByZXR1
cm4gc3RhdGljX2Nhc3Q8Q29uc3RydWN0b3JLaW5kPihtX2NvbnN0cnVjdG9yS2luZCk7IH0KQEAg
LTIzMCw2ICsyNDQsOCBAQCBjbGFzcyBVbmxpbmtlZENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwg
ewogICAgIHZvaWQgc2V0SW5zdHJ1Y3Rpb25zKHN0ZDo6dW5pcXVlX3B0cjxVbmxpbmtlZEluc3Ry
dWN0aW9uU3RyZWFtPik7CiAgICAgY29uc3QgVW5saW5rZWRJbnN0cnVjdGlvblN0cmVhbSYgaW5z
dHJ1Y3Rpb25zKCkgY29uc3Q7CiAKKyAgICBpbnQgbnVtQ2FsbGVlTG9jYWxzKCkgY29uc3QgeyBy
ZXR1cm4gbV9udW1DYWxsZWVMb2NhbHM7IH0KKwogICAgIGludCBtX251bVZhcnM7CiAgICAgaW50
IG1fbnVtQ2FwdHVyZWRWYXJzOwogICAgIGludCBtX251bUNhbGxlZUxvY2FsczsKQEAgLTM4MSw2
ICszOTcsOCBAQCBjbGFzcyBVbmxpbmtlZENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAg
IH0KIAogcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgQnl0ZWNvZGVSZXdyaXRlcjsKKyAgICB2
b2lkIGFwcGx5TW9kaWZpY2F0aW9uKEJ5dGVjb2RlUmV3cml0ZXImKTsKIAogICAgIHZvaWQgY3Jl
YXRlUmFyZURhdGFJZk5lY2Vzc2FyeSgpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1ZpcnR1YWxSZWdpc3Rlci5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1ZpcnR1YWxSZWdpc3Rlci5oCmluZGV4IGQzZGY0MDk1N2I1MTc1NjhlM2Fl
ZmJlM2ExYTYwOWZkODc4YmFhYzMuLmRhZjUwOWY2YzdkMTE1ZTQ1YmNiMTA3YzY3ZDNkMzhkODA0
ZjI4OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WaXJ0dWFs
UmVnaXN0ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmlydHVhbFJl
Z2lzdGVyLmgKQEAgLTI2LDggKzI2LDggQEAKICNpZm5kZWYgVmlydHVhbFJlZ2lzdGVyX2gKICNk
ZWZpbmUgVmlydHVhbFJlZ2lzdGVyX2gKIAorI2luY2x1ZGUgIkJ5dGVjb2RlQ29udmVudGlvbnMu
aCIKICNpbmNsdWRlICJDYWxsRnJhbWUuaCIKLQogI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5o
PgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTEwMyw3ICsxMDMsNyBAQCBjbGFzcyBWaXJ0dWFsUmVn
aXN0ZXIgewogCiBwcml2YXRlOgogICAgIHN0YXRpYyBjb25zdCBpbnQgc19pbnZhbGlkVmlydHVh
bFJlZ2lzdGVyID0gMHgzZmZmZmZmZjsKLSAgICBzdGF0aWMgY29uc3QgaW50IHNfZmlyc3RDb25z
dGFudFJlZ2lzdGVySW5kZXggPSAweDQwMDAwMDAwOworICAgIHN0YXRpYyBjb25zdCBpbnQgc19m
aXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCA9IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4Owog
CiAgICAgc3RhdGljIGludCBsb2NhbFRvT3BlcmFuZChpbnQgbG9jYWwpIHsgcmV0dXJuIC0xIC0g
bG9jYWw7IH0KICAgICBzdGF0aWMgaW50IG9wZXJhbmRUb0xvY2FsKGludCBvcGVyYW5kKSB7IHJl
dHVybiAtMSAtIG9wZXJhbmQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXggMzEyZDg5ZjdhZGM3M2Yw
N2RjNTE3OWI3NWU1NzVjNTU5MDI2NmRiOC4uNTMzZWYwODk4Yjc3ZGJkYjM2ZTRhMjUzZDA3NGRk
MmQ0NzIyMDE4ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKIAogI2luY2x1
ZGUgIkFyaXRoUHJvZmlsZS5oIgogI2luY2x1ZGUgIkJ1aWx0aW5FeGVjdXRhYmxlcy5oIgorI2lu
Y2x1ZGUgIkJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVM
aXZlbmVzc0FuYWx5c2lzLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJK
U0Z1bmN0aW9uLmgiCkBAIC0xNTUsNiArMTU2LDEwIEBAIFBhcnNlckVycm9yIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjpnZW5lcmF0ZSgpCiAgICAgICAgIG1fY29kZUJsb2NrLT5hZGRFeGNlcHRpb25IYW5k
bGVyKGluZm8pOwogICAgIH0KICAgICAKKworICAgIGlmIChtX2NvZGVCbG9jay0+cGFyc2VNb2Rl
KCkgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JCb2R5TW9kZSkKKyAgICAgICAgcGVyZm9y
bUdlbmVyYXRvcmlmaWNhdGlvbihtX2NvZGVCbG9jay5nZXQoKSwgbV9pbnN0cnVjdGlvbnMsIG1f
Z2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZS5nZXQoKSwgbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRh
YmxlSW5kZXgpOworCiAgICAgbV9jb2RlQmxvY2stPnNldEluc3RydWN0aW9ucyhzdGQ6Om1ha2Vf
dW5pcXVlPFVubGlua2VkSW5zdHJ1Y3Rpb25TdHJlYW0+KG1faW5zdHJ1Y3Rpb25zKSk7CiAKICAg
ICBtX2NvZGVCbG9jay0+c2hyaW5rVG9GaXQoKTsKQEAgLTI2MiwxMCArMjY3LDE0IEBAIEJ5dGVj
b2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVu
Y3Rpb25Ob2RlLCBVbmxpbmtlCiAgICAgYm9vbCBzaG91bGRDYXB0dXJlQWxsT2ZUaGVUaGluZ3Mg
PSBtX3Nob3VsZEVtaXREZWJ1Z0hvb2tzIHx8IGNvZGVCbG9jay0+dXNlc0V2YWwoKTsKICAgICBi
b29sIG5lZWRzQXJndW1lbnRzID0gKGZ1bmN0aW9uTm9kZS0+dXNlc0FyZ3VtZW50cygpIHx8IGNv
ZGVCbG9jay0+dXNlc0V2YWwoKSB8fCAoZnVuY3Rpb25Ob2RlLT51c2VzQXJyb3dGdW5jdGlvbigp
ICYmICFjb2RlQmxvY2stPmlzQXJyb3dGdW5jdGlvbigpICYmIGlzQXJndW1lbnRzVXNlZEluSW5u
ZXJBcnJvd0Z1bmN0aW9uKCkpKTsKIAotICAgIC8vIEdlbmVyYXRvciBuZXZlciBwcm92aWRlcyAi
YXJndW1lbnRzIi4gImFyZ3VtZW50cyIgcmVmZXJlbmNlIHdpbGwgYmUgcmVzb2x2ZWQgaW4gYW4g
dXBwZXIgZ2VuZXJhdG9yIGZ1bmN0aW9uIHNjb3BlLgotICAgIGlmIChwYXJzZU1vZGUgPT0gU291
cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JCb2R5TW9kZSkKKyAgICBpZiAocGFyc2VNb2RlID09IFNv
dXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yQm9keU1vZGUpIHsKKyAgICAgICAgLy8gR2VuZXJhdG9y
IG5ldmVyIHByb3ZpZGVzICJhcmd1bWVudHMiLiAiYXJndW1lbnRzIiByZWZlcmVuY2Ugd2lsbCBi
ZSByZXNvbHZlZCBpbiBhbiB1cHBlciBnZW5lcmF0b3IgZnVuY3Rpb24gc2NvcGUuCiAgICAgICAg
IG5lZWRzQXJndW1lbnRzID0gZmFsc2U7CiAKKyAgICAgICAgLy8gR2VuZXJhdG9yIHVzZXMgdGhl
IHZhciBzY29wZSB0byBzYXZlIGFuZCByZXN1bWUgaXRzIHZhcmlhYmxlcy4gU28gdGhlIGxleGlj
YWwgc2NvcGUgaXMgYWx3YXlzIGluc3RhbnRpYXRlZC4KKyAgICAgICAgc2hvdWxkQ2FwdHVyZVNv
bWVPZlRoZVRoaW5ncyA9IHRydWU7CisgICAgfQorCiAgICAgaWYgKHBhcnNlTW9kZSA9PSBTb3Vy
Y2VQYXJzZU1vZGU6OkdlbmVyYXRvcldyYXBwZXJGdW5jdGlvbk1vZGUgJiYgbmVlZHNBcmd1bWVu
dHMpIHsKICAgICAgICAgLy8gR2VuZXJhdG9yIGRvZXMgbm90IHByb3ZpZGUgImFyZ3VtZW50cyIu
IEluc3RlYWQsIHdyYXBwaW5nIEdlbmVyYXRvckZ1bmN0aW9uIHByb3ZpZGVzICJhcmd1bWVudHMi
LgogICAgICAgICAvLyBUaGlzIGlzIGJlY2F1c2UgYXJndW1lbnRzIG9mIGEgZ2VuZXJhdG9yIHNo
b3VsZCBiZSBldmFsdWF0ZWQgYmVmb3JlIHN0YXJ0aW5nIGl0LgpAQCAtMjc0LDcgKzI4Myw3IEBA
IEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9k
ZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtlCiAgICAgICAgIC8vICAgIGZ1bmN0aW9uICpnZW4oYSwg
YiA9IGhlbGxvKCkpCiAgICAgICAgIC8vICAgIHsKICAgICAgICAgLy8gICAgICAgIHJldHVybiB7
Ci0gICAgICAgIC8vICAgICAgICAgICAgQGdlbmVyYXRvck5leHQ6IGZ1bmN0aW9uIChAZ2VuZXJh
dG9yLCBAZ2VuZXJhdG9yU3RhdGUsIEBnZW5lcmF0b3JWYWx1ZSwgQGdlbmVyYXRvclJlc3VtZU1v
ZGUpCisgICAgICAgIC8vICAgICAgICAgICAgQGdlbmVyYXRvck5leHQ6IGZ1bmN0aW9uIChAZ2Vu
ZXJhdG9yLCBAZ2VuZXJhdG9yU3RhdGUsIEBnZW5lcmF0b3JWYWx1ZSwgQGdlbmVyYXRvclJlc3Vt
ZU1vZGUsIEBnZW5lcmF0b3JGcmFtZSkKICAgICAgICAgLy8gICAgICAgICAgICB7CiAgICAgICAg
IC8vICAgICAgICAgICAgICAgIGFyZ3VtZW50czsgIC8vIFRoaXMgYGFyZ3VtZW50c2Agc2hvdWxk
IHJlZmVyZW5jZSB0byB0aGUgZ2VuJ3MgYXJndW1lbnRzLgogICAgICAgICAvLyAgICAgICAgICAg
ICAgICAuLi4KQEAgLTMwMywyOCArMzEyLDE3IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29k
ZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtlCiAg
ICAgICAgIHJldHVybiBjYXB0dXJlcyh1aWQpID8gVmFyS2luZDo6U2NvcGUgOiBWYXJLaW5kOjpT
dGFjazsKICAgICB9OwogCi0gICAgZW1pdEVudGVyKCk7Ci0KLSAgICBhbGxvY2F0ZUFuZEVtaXRT
Y29wZSgpOwotCiAgICAgbV9jYWxsZWVSZWdpc3Rlci5zZXRJbmRleChDYWxsRnJhbWVTbG90Ojpj
YWxsZWUpOwogCiAgICAgaW5pdGlhbGl6ZVBhcmFtZXRlcnMocGFyYW1ldGVycyk7CiAgICAgQVNT
RVJUKCEoaXNTaW1wbGVQYXJhbWV0ZXJMaXN0ICYmIG1fcmVzdFBhcmFtZXRlcikpOwogCi0gICAg
Ly8gQmVmb3JlIGVtaXR0aW5nIGEgc2NvcGUgY3JlYXRpb24sIGVtaXQgYSBnZW5lcmF0b3IgcHJv
bG9ndWUgdGhhdCBjb250YWlucyBqdW1wIGJhc2VkIG9uIGEgZ2VuZXJhdG9yJ3Mgc3RhdGUuCi0g
ICAgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckJvZHlNb2RlKSB7
Ci0gICAgICAgIG1fZ2VuZXJhdG9yUmVnaXN0ZXIgPSAmbV9wYXJhbWV0ZXJzWzFdOwotCi0gICAg
ICAgIC8vIEp1bXAgd2l0aCBzd2l0Y2hfaW1tIGJhc2VkIG9uIEBnZW5lcmF0b3JTdGF0ZS4gV2Ug
ZG9uJ3QgdGFrZSB0aGUgY29yb3V0aW5lIHN0eWxlZCBnZW5lcmF0b3IgaW1wbGVtZW50YXRpb24u
Ci0gICAgICAgIC8vIFdoZW4gY2FsbGluZyBgbmV4dCgpYCwgd2Ugd291bGQgbGlrZSB0byBlbnRl
ciB0aGUgc2FtZSBwcm9sb2d1ZSBpbnN0ZWFkIG9mIGp1bXBpbmcgYmFzZWQgb24gdGhlIHNhdmVk
IGluc3RydWN0aW9uIHBvaW50ZXIuCi0gICAgICAgIC8vIEl0J3Mgc3VpdGFsZSBmb3IgaW5saW5p
bmcsIGJlY2F1c2UgaXQganVzdCBpbmxpbmVzIG9uZSBgbmV4dGAgZnVuY3Rpb24gaW1wbGVtZW50
YXRpb24uCisgICAgZW1pdEVudGVyKCk7CiAKLSAgICAgICAgYmVnaW5HZW5lcmF0b3IoZ2VuZXJh
dG9yU3RhdGVSZWdpc3RlcigpKTsKKyAgICBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9k
ZTo6R2VuZXJhdG9yQm9keU1vZGUpCisgICAgICAgIG1fZ2VuZXJhdG9yUmVnaXN0ZXIgPSAmbV9w
YXJhbWV0ZXJzWzFdOwogCi0gICAgICAgIC8vIEluaXRpYWwgc3RhdGUuCi0gICAgICAgIGVtaXRH
ZW5lcmF0b3JTdGF0ZUxhYmVsKCk7Ci0gICAgfQorICAgIGFsbG9jYXRlQW5kRW1pdFNjb3BlKCk7
CiAKICAgICBpZiAoZnVuY3Rpb25OYW1lSXNJblNjb3BlKGZ1bmN0aW9uTm9kZS0+aWRlbnQoKSwg
ZnVuY3Rpb25Ob2RlLT5mdW5jdGlvbk1vZGUoKSkpIHsKICAgICAgICAgQVNTRVJUKHBhcnNlTW9k
ZSAhPSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckJvZHlNb2RlKTsKQEAgLTY0MSw2ICs2Mzks
MTYgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rp
b25Ob2RlKiBmdW5jdGlvbk5vZGUsIFVubGlua2UKICAgICAgICAgICAgIGVtaXRMb2FkTmV3VGFy
Z2V0RnJvbUFycm93RnVuY3Rpb25MZXhpY2FsRW52aXJvbm1lbnQoKTsKICAgICB9CiAgICAgCisg
ICAgLy8gU2V0IHVwIHRoZSBsZXhpY2FsIGVudmlyb25tZW50IHNjb3BlIGFzIHRoZSBnZW5lcmF0
b3IgZnJhbWUuIFdlIHN0b3JlIHRoZSBzYXZlZCBhbmQgcmVzdW1lZCBnZW5lcmF0b3IgcmVnaXN0
ZXJzIGludG8gdGhpcyBzY29wZSB3aXRoIHRoZSBzeW1ib2wga2V5cy4KKyAgICAvLyBTaW5jZSB0
aGV5IGFyZSBzeW1ib2wga2V5ZWQsIHRoZXNlIHZhcmlhYmxlcyBjYW5ub3QgYmUgcmVhY2hlZCBm
cm9tIHRoZSB1c3VhbCBjb2RlLgorICAgIGlmIChTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckJv
ZHlNb2RlID09IHBhcnNlTW9kZSkgeworICAgICAgICBBU1NFUlQobV9sZXhpY2FsRW52aXJvbm1l
bnRSZWdpc3Rlcik7CisgICAgICAgIG1fZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZS5zZXQoKm1f
dm0sIGZ1bmN0aW9uU3ltYm9sVGFibGUpOworICAgICAgICBtX2dlbmVyYXRvckZyYW1lU3ltYm9s
VGFibGVJbmRleCA9IHN5bWJvbFRhYmxlQ29uc3RhbnRJbmRleDsKKyAgICAgICAgZW1pdE1vdmUo
Z2VuZXJhdG9yRnJhbWVSZWdpc3RlcigpLCBtX2xleGljYWxFbnZpcm9ubWVudFJlZ2lzdGVyKTsK
KyAgICAgICAgZW1pdFB1dEJ5SWQoZ2VuZXJhdG9yUmVnaXN0ZXIoKSwgcHJvcGVydHlOYW1lcygp
LmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvckZyYW1lUHJpdmF0ZU5hbWUoKSwgZ2VuZXJhdG9yRnJh
bWVSZWdpc3RlcigpKTsKKyAgICB9CisKICAgICBib29sIHNob3VsZEluaXRpYWxpemVCbG9ja1Nj
b3BlZEZ1bmN0aW9ucyA9IGZhbHNlOyAvLyBXZSBnZW5lcmF0ZSB0b3AtbGV2ZWwgZnVuY3Rpb24g
ZGVjbGFyYXRpb25zIGluIDo6Z2VuZXJhdGUoKS4KICAgICBwdXNoTGV4aWNhbFNjb3BlKG1fc2Nv
cGVOb2RlLCBURFpDaGVja09wdGltaXphdGlvbjo6T3B0aW1pemUsIE5lc3RlZFNjb3BlVHlwZTo6
SXNOb3ROZXN0ZWQsIG51bGxwdHIsIHNob3VsZEluaXRpYWxpemVCbG9ja1Njb3BlZEZ1bmN0aW9u
cyk7CiB9CkBAIC0zNjcyLDggKzM2ODAsNyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
Q29tcGxleFBvcFNjb3BlcyhSZWdpc3RlcklEKiBzY29wZSwgQ29udHJvbEZsb3dDb250ZQogICAg
ICAgICAgICAgaWYgKGZsaXBUcmllcykgewogICAgICAgICAgICAgICAgIHdoaWxlIChtX3RyeUNv
bnRleHRTdGFjay5zaXplKCkgIT0gZmluYWxseUNvbnRleHQudHJ5Q29udGV4dFN0YWNrU2l6ZSkg
ewogICAgICAgICAgICAgICAgICAgICBBU1NFUlQobV90cnlDb250ZXh0U3RhY2suc2l6ZSgpID4g
ZmluYWxseUNvbnRleHQudHJ5Q29udGV4dFN0YWNrU2l6ZSk7Ci0gICAgICAgICAgICAgICAgICAg
IFRyeUNvbnRleHQgY29udGV4dCA9IG1fdHJ5Q29udGV4dFN0YWNrLmxhc3QoKTsKLSAgICAgICAg
ICAgICAgICAgICAgbV90cnlDb250ZXh0U3RhY2sucmVtb3ZlTGFzdCgpOworICAgICAgICAgICAg
ICAgICAgICBUcnlDb250ZXh0IGNvbnRleHQgPSBtX3RyeUNvbnRleHRTdGFjay50YWtlTGFzdCgp
OwogICAgICAgICAgICAgICAgICAgICBUcnlSYW5nZSByYW5nZTsKICAgICAgICAgICAgICAgICAg
ICAgcmFuZ2Uuc3RhcnQgPSBjb250ZXh0LnN0YXJ0OwogICAgICAgICAgICAgICAgICAgICByYW5n
ZS5lbmQgPSBiZWZvcmVGaW5hbGx5OwpAQCAtMzk1Nyw3ICszOTY0LDcgQEAgc3RhdGljIHZvaWQg
cHJlcGFyZUp1bXBUYWJsZUZvclN0cmluZ1N3aXRjaChVbmxpbmtlZFN0cmluZ0p1bXBUYWJsZSYg
anVtcFRhYmxlLAogICAgICAgICAKICAgICAgICAgQVNTRVJUKG5vZGVzW2ldLT5pc1N0cmluZygp
KTsKICAgICAgICAgU3RyaW5nSW1wbCogY2xhdXNlID0gc3RhdGljX2Nhc3Q8U3RyaW5nTm9kZSo+
KG5vZGVzW2ldKS0+dmFsdWUoKS5pbXBsKCk7Ci0gICAgICAgIGp1bXBUYWJsZS5vZmZzZXRUYWJs
ZS5hZGQoY2xhdXNlLCBsYWJlbHNbaV0tPmJpbmQoc3dpdGNoQWRkcmVzcywgc3dpdGNoQWRkcmVz
cyArIDMpKTsKKyAgICAgICAganVtcFRhYmxlLm9mZnNldFRhYmxlLmFkZChjbGF1c2UsIFVubGlu
a2VkU3RyaW5nSnVtcFRhYmxlOjpPZmZzZXRMb2NhdGlvbiB7IGxhYmVsc1tpXS0+YmluZChzd2l0
Y2hBZGRyZXNzLCBzd2l0Y2hBZGRyZXNzICsgMykgfSk7CiAgICAgfQogfQogCkBAIC00NDU5LDMx
ICs0NDY2LDMzIEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXF1aXJlT2JqZWN0Q29l
cmNpYmxlKFJlZ2lzdGVySUQqIHZhbHVlLCBjb25zdCBTdHJpCiB2b2lkIEJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0WWllbGRQb2ludChSZWdpc3RlcklEKiBhcmd1bWVudCkKIHsKICAgICBSZWZQdHI8
TGFiZWw+IG1lcmdlUG9pbnQgPSBuZXdMYWJlbCgpOwotICAgIHNpemVfdCB5aWVsZFBvaW50SW5k
ZXggPSBtX2dlbmVyYXRvclJlc3VtZUxhYmVscy5zaXplKCk7Ci0gICAgZW1pdEdlbmVyYXRvclN0
YXRlQ2hhbmdlKHlpZWxkUG9pbnRJbmRleCk7Ci0gICAgLy8gRmlyc3QgeWllbGQgcG9pbnQgaXMg
dXNlZCBmb3IgaW5pdGlhbCBzZXF1ZW5jZS4KLSAgICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxz
SW5kZXggPSB5aWVsZFBvaW50SW5kZXggLSAxOwotICAgIGVtaXRTYXZlKG1lcmdlUG9pbnQuZ2V0
KCksIGxpdmVDYWxsZWVMb2NhbHNJbmRleCk7Ci0gICAgZW1pdFJldHVybihhcmd1bWVudCk7Ci0g
ICAgZW1pdFJlc3VtZShtZXJnZVBvaW50LmdldCgpLCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpOwot
fQorICAgIHVuc2lnbmVkIHlpZWxkUG9pbnRJbmRleCA9IG1feWllbGRQb2ludHMrKzsKKyAgICBl
bWl0R2VuZXJhdG9yU3RhdGVDaGFuZ2UoeWllbGRQb2ludEluZGV4ICsgMSk7CisKKyAgICAvLyBT
cGxpdCB0aGUgdHJ5IHJhbmdlIGhlcmUuCisgICAgUmVmUHRyPExhYmVsPiBzYXZlUG9pbnQgPSBl
bWl0TGFiZWwobmV3TGFiZWwoKS5nZXQoKSk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gbV90cnlD
b250ZXh0U3RhY2suc2l6ZSgpOyBpLS07KSB7CisgICAgICAgIFRyeUNvbnRleHQmIGNvbnRleHQg
PSBtX3RyeUNvbnRleHRTdGFja1tpXTsKKyAgICAgICAgVHJ5UmFuZ2UgcmFuZ2U7CisgICAgICAg
IHJhbmdlLnN0YXJ0ID0gY29udGV4dC5zdGFydDsKKyAgICAgICAgcmFuZ2UuZW5kID0gc2F2ZVBv
aW50OworICAgICAgICByYW5nZS50cnlEYXRhID0gY29udGV4dC50cnlEYXRhOworICAgICAgICBt
X3RyeVJhbmdlcy5hcHBlbmQocmFuZ2UpOworCisgICAgICAgIC8vIFRyeSByYW5nZSB3aWxsIGJl
IHJlc3RhcmVkIGF0IHRoZSBtZXJnZSBwb2ludC4KKyAgICAgICAgY29udGV4dC5zdGFydCA9IG1l
cmdlUG9pbnQ7CisgICAgfQorICAgIFZlY3RvcjxUcnlDb250ZXh0PiBzYXZlZFRyeUNvbnRleHRT
dGFjazsKKyAgICBtX3RyeUNvbnRleHRTdGFjay5zd2FwKHNhdmVkVHJ5Q29udGV4dFN0YWNrKTsK
IAotdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFNhdmUoTGFiZWwqIG1lcmdlUG9pbnQsIHVu
c2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCkKLXsKLSAgICBzaXplX3QgYmVnaW4gPSBpbnN0
cnVjdGlvbnMoKS5zaXplKCk7Ci0gICAgZW1pdE9wY29kZShvcF9zYXZlKTsKLSAgICBpbnN0cnVj
dGlvbnMoKS5hcHBlbmQobV9nZW5lcmF0b3JSZWdpc3Rlci0+aW5kZXgoKSk7Ci0gICAgaW5zdHJ1
Y3Rpb25zKCkuYXBwZW5kKGxpdmVDYWxsZWVMb2NhbHNJbmRleCk7Ci0gICAgaW5zdHJ1Y3Rpb25z
KCkuYXBwZW5kKG1lcmdlUG9pbnQtPmJpbmQoYmVnaW4sIGluc3RydWN0aW9ucygpLnNpemUoKSkp
OwotfQorICAgIGVtaXRPcGNvZGUob3BfeWllbGQpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVu
ZChnZW5lcmF0b3JGcmFtZVJlZ2lzdGVyKCktPmluZGV4KCkpOworICAgIGluc3RydWN0aW9ucygp
LmFwcGVuZCh5aWVsZFBvaW50SW5kZXgpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChhcmd1
bWVudC0+aW5kZXgoKSk7CiAKLXZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXN1bWUoTGFi
ZWwqIG1lcmdlUG9pbnQsIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCkKLXsKLSAgICBl
bWl0R2VuZXJhdG9yU3RhdGVMYWJlbCgpOwotICAgIGVtaXRPcGNvZGUob3BfcmVzdW1lKTsKLSAg
ICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobV9nZW5lcmF0b3JSZWdpc3Rlci0+aW5kZXgoKSk7Ci0g
ICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGxpdmVDYWxsZWVMb2NhbHNJbmRleCk7Ci0gICAgZW1p
dExhYmVsKG1lcmdlUG9pbnQpOworICAgIC8vIFJlc3RvcmUgdGhlIHRyeSBjb250ZXh0cywgd2hp
Y2ggc3RhcnQgb2Zmc2V0IGlzIHVwZGF0ZWQgdG8gdGhlIG1lcmdlIHBvaW50LgorICAgIG1fdHJ5
Q29udGV4dFN0YWNrLnN3YXAoc2F2ZWRUcnlDb250ZXh0U3RhY2spOworICAgIGVtaXRMYWJlbCht
ZXJnZVBvaW50LmdldCgpKTsKIH0KIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRZaWVsZChSZWdpc3RlcklEKiBhcmd1bWVudCkKQEAgLTQ2NDAsMzkgKzQ2NDksNiBAQCB2b2lk
IEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2VuZXJhdG9yU3RhdGVDaGFuZ2UoaW50MzJfdCBzdGF0
ZSkKICAgICBlbWl0UHV0QnlJZChnZW5lcmF0b3JSZWdpc3RlcigpLCBwcm9wZXJ0eU5hbWVzKCku
YnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yU3RhdGVQcml2YXRlTmFtZSgpLCBjb21wbGV0ZWRTdGF0
ZSk7CiB9CiAKLXZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZW5lcmF0b3JTdGF0ZUxhYmVs
KCkKLXsKLSAgICBSZWZQdHI8TGFiZWw+IGxhYmVsID0gbmV3TGFiZWwoKTsKLSAgICBtX2dlbmVy
YXRvclJlc3VtZUxhYmVscy5hcHBlbmQobGFiZWwuZ2V0KCkpOwotICAgIGVtaXRMYWJlbChsYWJl
bC5nZXQoKSk7Ci19Ci0KLXZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmJlZ2luR2VuZXJhdG9yKFJl
Z2lzdGVySUQqIHN0YXRlKQotewotICAgIGJlZ2luU3dpdGNoKHN0YXRlLCBTd2l0Y2hJbmZvOjpT
d2l0Y2hJbW1lZGlhdGUpOwotfQotCi12b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbmRHZW5lcmF0
b3IoTGFiZWwqIGRlZmF1bHRMYWJlbCkKLXsKLSAgICBTd2l0Y2hJbmZvIHN3aXRjaEluZm8gPSBt
X3N3aXRjaENvbnRleHRTdGFjay5sYXN0KCk7Ci0gICAgbV9zd2l0Y2hDb250ZXh0U3RhY2sucmVt
b3ZlTGFzdCgpOwotCi0gICAgaW5zdHJ1Y3Rpb25zKClbc3dpdGNoSW5mby5ieXRlY29kZU9mZnNl
dCArIDFdID0gbV9jb2RlQmxvY2stPm51bWJlck9mU3dpdGNoSnVtcFRhYmxlcygpOwotICAgIGlu
c3RydWN0aW9ucygpW3N3aXRjaEluZm8uYnl0ZWNvZGVPZmZzZXQgKyAyXSA9IGRlZmF1bHRMYWJl
bC0+YmluZChzd2l0Y2hJbmZvLmJ5dGVjb2RlT2Zmc2V0LCBzd2l0Y2hJbmZvLmJ5dGVjb2RlT2Zm
c2V0ICsgMyk7Ci0KLSAgICBVbmxpbmtlZFNpbXBsZUp1bXBUYWJsZSYganVtcFRhYmxlID0gbV9j
b2RlQmxvY2stPmFkZFN3aXRjaEp1bXBUYWJsZSgpOwotICAgIGludDMyX3Qgc3dpdGNoQWRkcmVz
cyA9IHN3aXRjaEluZm8uYnl0ZWNvZGVPZmZzZXQ7Ci0gICAganVtcFRhYmxlLm1pbiA9IDA7Ci0g
ICAganVtcFRhYmxlLmJyYW5jaE9mZnNldHMucmVzaXplKG1fZ2VuZXJhdG9yUmVzdW1lTGFiZWxz
LnNpemUoKSArIDEpOwotICAgIGp1bXBUYWJsZS5icmFuY2hPZmZzZXRzLmZpbGwoMCk7Ci0gICAg
Zm9yICh1aW50MzJfdCBpID0gMDsgaSA8IG1fZ2VuZXJhdG9yUmVzdW1lTGFiZWxzLnNpemUoKTsg
KytpKSB7Ci0gICAgICAgIC8vIFdlJ3JlIGVtaXR0aW5nIHRoaXMgYWZ0ZXIgdGhlIGNsYXVzZSBs
YWJlbHMgc2hvdWxkIGhhdmUgYmVlbiBmaXhlZCwgc28KLSAgICAgICAgLy8gdGhlIGxhYmVscyBz
aG91bGQgbm90IGJlICJmb3J3YXJkIiByZWZlcmVuY2VzCi0gICAgICAgIEFTU0VSVCghbV9nZW5l
cmF0b3JSZXN1bWVMYWJlbHNbaV0tPmlzRm9yd2FyZCgpKTsKLSAgICAgICAganVtcFRhYmxlLmFk
ZChpLCBtX2dlbmVyYXRvclJlc3VtZUxhYmVsc1tpXS0+YmluZChzd2l0Y2hBZGRyZXNzLCBzd2l0
Y2hBZGRyZXNzICsgMykpOwotICAgIH0KLX0KLQogfSAvLyBuYW1lc3BhY2UgSlNDCiAKIG5hbWVz
cGFjZSBXVEYgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9CeXRlY29kZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9CeXRlY29kZUdlbmVyYXRvci5oCmluZGV4IGZmZjcxM2FhMjVlNzFkZjJjZjRjYjUzMDhlNjE2
OWE1M2FmNjUxYmUuLmIxYjk0M2RhNWUwNjdlY2RkNDk2NzQ4MTE0NWNlOWRiMDA3NWEyYWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmgKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNp
bmNsdWRlICJJbnN0cnVjdGlvbi5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCisjaW5jbHVk
ZSAiSlNHZW5lcmF0b3JGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkxhYmVsLmgiCiAjaW5jbHVkZSAi
TGFiZWxTY29wZS5oIgogI2luY2x1ZGUgIk5vZGVzLmgiCkBAIC02OTAsMTggKzY5MSwxNSBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbmRTd2l0Y2godWludDMyX3QgY2xhdXNlQ291
bnQsIFJlZlB0cjxMYWJlbD4qLCBFeHByZXNzaW9uTm9kZSoqLCBMYWJlbCogZGVmYXVsdExhYmVs
LCBpbnQzMl90IG1pbiwgaW50MzJfdCByYW5nZSk7CiAKICAgICAgICAgdm9pZCBlbWl0WWllbGRQ
b2ludChSZWdpc3RlcklEKik7Ci0gICAgICAgIHZvaWQgZW1pdFNhdmUoTGFiZWwqIG1lcmdlUG9p
bnQsIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCk7Ci0gICAgICAgIHZvaWQgZW1pdFJl
c3VtZShMYWJlbCogbWVyZ2VQb2ludCwgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4KTsK
IAogICAgICAgICB2b2lkIGVtaXRHZW5lcmF0b3JTdGF0ZUxhYmVsKCk7CiAgICAgICAgIHZvaWQg
ZW1pdEdlbmVyYXRvclN0YXRlQ2hhbmdlKGludDMyX3Qgc3RhdGUpOwogICAgICAgICBSZWdpc3Rl
cklEKiBlbWl0WWllbGQoUmVnaXN0ZXJJRCogYXJndW1lbnQpOwogICAgICAgICBSZWdpc3RlcklE
KiBlbWl0RGVsZWdhdGVZaWVsZChSZWdpc3RlcklEKiBhcmd1bWVudCwgVGhyb3dhYmxlRXhwcmVz
c2lvbkRhdGEqKTsKLSAgICAgICAgdm9pZCBiZWdpbkdlbmVyYXRvcihSZWdpc3RlcklEKik7Ci0g
ICAgICAgIHZvaWQgZW5kR2VuZXJhdG9yKExhYmVsKiBkZWZhdWx0TGFiZWwpOwotICAgICAgICBS
ZWdpc3RlcklEKiBnZW5lcmF0b3JTdGF0ZVJlZ2lzdGVyKCkgeyByZXR1cm4gJm1fcGFyYW1ldGVy
c1syXTsgfQotICAgICAgICBSZWdpc3RlcklEKiBnZW5lcmF0b3JWYWx1ZVJlZ2lzdGVyKCkgeyBy
ZXR1cm4gJm1fcGFyYW1ldGVyc1szXTsgfQotICAgICAgICBSZWdpc3RlcklEKiBnZW5lcmF0b3JS
ZXN1bWVNb2RlUmVnaXN0ZXIoKSB7IHJldHVybiAmbV9wYXJhbWV0ZXJzWzRdOyB9CisgICAgICAg
IFJlZ2lzdGVySUQqIGdlbmVyYXRvclN0YXRlUmVnaXN0ZXIoKSB7IHJldHVybiAmbV9wYXJhbWV0
ZXJzW3N0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yRnVuY3Rpb246OkdlbmVyYXRvckFy
Z3VtZW50OjpTdGF0ZSldOyB9CisgICAgICAgIFJlZ2lzdGVySUQqIGdlbmVyYXRvclZhbHVlUmVn
aXN0ZXIoKSB7IHJldHVybiAmbV9wYXJhbWV0ZXJzW3N0YXRpY19jYXN0PGludDMyX3Q+KEpTR2Vu
ZXJhdG9yRnVuY3Rpb246OkdlbmVyYXRvckFyZ3VtZW50OjpWYWx1ZSldOyB9CisgICAgICAgIFJl
Z2lzdGVySUQqIGdlbmVyYXRvclJlc3VtZU1vZGVSZWdpc3RlcigpIHsgcmV0dXJuICZtX3BhcmFt
ZXRlcnNbc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6R2VuZXJhdG9y
QXJndW1lbnQ6OlJlc3VtZU1vZGUpXTsgfQorICAgICAgICBSZWdpc3RlcklEKiBnZW5lcmF0b3JG
cmFtZVJlZ2lzdGVyKCkgeyByZXR1cm4gJm1fcGFyYW1ldGVyc1tzdGF0aWNfY2FzdDxpbnQzMl90
PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JBcmd1bWVudDo6RnJhbWUpXTsgfQogCiAg
ICAgICAgIENvZGVUeXBlIGNvZGVUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlVHlwZTsgfQog
CkBAIC05MjksNyArOTI3LDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBWZWN0b3I8U3dp
dGNoSW5mbz4gbV9zd2l0Y2hDb250ZXh0U3RhY2s7CiAgICAgICAgIFZlY3RvcjxSZWZQdHI8Rm9y
SW5Db250ZXh0Pj4gbV9mb3JJbkNvbnRleHRTdGFjazsKICAgICAgICAgVmVjdG9yPFRyeUNvbnRl
eHQ+IG1fdHJ5Q29udGV4dFN0YWNrOwotICAgICAgICBWZWN0b3I8UmVmUHRyPExhYmVsPj4gbV9n
ZW5lcmF0b3JSZXN1bWVMYWJlbHM7CisgICAgICAgIHVuc2lnbmVkIG1feWllbGRQb2ludHMgeyAw
IH07CisKKyAgICAgICAgU3Ryb25nPFN5bWJvbFRhYmxlPiBtX2dlbmVyYXRvckZyYW1lU3ltYm9s
VGFibGU7CisgICAgICAgIGludCBtX2dlbmVyYXRvckZyYW1lU3ltYm9sVGFibGVJbmRleCB7IDAg
fTsKKwogICAgICAgICBlbnVtIEZ1bmN0aW9uVmFyaWFibGVUeXBlIDogdWludDhfdCB7IE5vcm1h
bEZ1bmN0aW9uVmFyaWFibGUsIEdsb2JhbEZ1bmN0aW9uVmFyaWFibGUgfTsKICAgICAgICAgVmVj
dG9yPHN0ZDo6cGFpcjxGdW5jdGlvbk1ldGFkYXRhTm9kZSosIEZ1bmN0aW9uVmFyaWFibGVUeXBl
Pj4gbV9mdW5jdGlvbnNUb0luaXRpYWxpemU7CiAgICAgICAgIGJvb2wgbV9uZWVkVG9Jbml0aWFs
aXplQXJndW1lbnRzIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAppbmRleCBkMGM5OWVmZjVlNzRmMDJjMzgzY2M1
MTFkZTE3YjhkMmI2ZTc3ZTRmLi5iY2RhYTI3MmNiOTUwODU4NjA4Y2EyYTc1N2Y3YzQ2NGU0NzZk
ZmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVz
Q29kZWdlbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rl
c0NvZGVnZW4uY3BwCkBAIC0zMzc3LDcgKzMzNzcsNiBAQCB2b2lkIEZ1bmN0aW9uTm9kZTo6ZW1p
dEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqKQogICAg
ICAgICBSZWZQdHI8TGFiZWw+IGRvbmUgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKICAgICAgICAg
Z2VuZXJhdG9yLmVtaXRMYWJlbChkb25lLmdldCgpKTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRS
ZXR1cm4oZ2VuZXJhdG9yLmVtaXRMb2FkKG51bGxwdHIsIGpzVW5kZWZpbmVkKCkpKTsKLSAgICAg
ICAgZ2VuZXJhdG9yLmVuZEdlbmVyYXRvcihkb25lLmdldCgpKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlv
bnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAppbmRl
eCBjZTIwZDI4M2FkNzBiMjc2YmVlYzllMGY2YzlmODYwZThhM2QwODI1Li4wMGNkNjQxZTc3YWIw
YjE5MWUzYzg2NDdiZjM4NzFhMjJhOTA2MGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT3BlcmF0aW9ucy5jcHAKQEAgLTQyLDggKzQyLDggQEAKICNpbmNsdWRlICJEaXJlY3RB
cmd1bWVudHMuaCIKICNpbmNsdWRlICJGVExGb3JPU1JFbnRyeUpJVENvZGUuaCIKICNpbmNsdWRl
ICJGVExPU1JFbnRyeS5oIgotI2luY2x1ZGUgIkhvc3RDYWxsUmV0dXJuVmFsdWUuaCIKICNpbmNs
dWRlICJHZXR0ZXJTZXR0ZXIuaCIKKyNpbmNsdWRlICJIb3N0Q2FsbFJldHVyblZhbHVlLmgiCiAj
aW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKSVQuaCIKICNpbmNsdWRlICJKSVRF
eGNlcHRpb25zLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvSW50ZXJwcmV0ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0lu
dGVycHJldGVyLmNwcAppbmRleCAxYWFmMTc3MjNmZTFlODgyMGY0NzdhYjA4NTQ4NGI1ZjVmMjc2
Nzk3Li4yZjBlNmYyZmM3ZTk5NjQzYmNhMmE5ZjQ0ODA0OGVkODY2YzI4ZmFiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKQEAgLTYw
OSw3ICs2MDksNyBAQCBKU1N0cmluZyogSW50ZXJwcmV0ZXI6OnN0YWNrVHJhY2VBc1N0cmluZyhW
TSYgdm0sIGNvbnN0IFZlY3RvcjxTdGFja0ZyYW1lPiYgc3RhYwogICAgIHJldHVybiBqc1N0cmlu
Zygmdm0sIGJ1aWxkZXIudG9TdHJpbmcoKSk7CiB9CiAKLUFMV0FZU19JTkxJTkUgc3RhdGljIEhh
bmRsZXJJbmZvKiBmaW5kRXhjZXB0aW9uSGFuZGxlcihTdGFja1Zpc2l0b3ImIHZpc2l0b3IsIENv
ZGVCbG9jayogY29kZUJsb2NrLCBDb2RlQmxvY2s6OlJlcXVpcmVkSGFuZGxlciByZXF1aXJlZEhh
bmRsZXIpCitBTFdBWVNfSU5MSU5FIHN0YXRpYyBIYW5kbGVySW5mbyogZmluZEV4Y2VwdGlvbkhh
bmRsZXIoU3RhY2tWaXNpdG9yJiB2aXNpdG9yLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgUmVxdWly
ZWRIYW5kbGVyIHJlcXVpcmVkSGFuZGxlcikKIHsKICAgICBBU1NFUlQoY29kZUJsb2NrKTsKICNp
ZiBFTkFCTEUoREZHX0pJVCkKQEAgLTY0Myw3ICs2NDMsNyBAQCBjbGFzcyBHZXRDYXRjaEhhbmRs
ZXJGdW5jdG9yIHsKICAgICAgICAgaWYgKCFjb2RlQmxvY2spCiAgICAgICAgICAgICByZXR1cm4g
U3RhY2tWaXNpdG9yOjpDb250aW51ZTsKIAotICAgICAgICBtX2hhbmRsZXIgPSBmaW5kRXhjZXB0
aW9uSGFuZGxlcih2aXNpdG9yLCBjb2RlQmxvY2ssIENvZGVCbG9jazo6UmVxdWlyZWRIYW5kbGVy
OjpDYXRjaEhhbmRsZXIpOworICAgICAgICBtX2hhbmRsZXIgPSBmaW5kRXhjZXB0aW9uSGFuZGxl
cih2aXNpdG9yLCBjb2RlQmxvY2ssIFJlcXVpcmVkSGFuZGxlcjo6Q2F0Y2hIYW5kbGVyKTsKICAg
ICAgICAgaWYgKG1faGFuZGxlcikKICAgICAgICAgICAgIHJldHVybiBTdGFja1Zpc2l0b3I6OkRv
bmU7CiAKQEAgLTY4NSw3ICs2ODUsNyBAQCBjbGFzcyBVbndpbmRGdW5jdG9yIHsKICAgICAgICAg
bV9oYW5kbGVyID0gbnVsbHB0cjsKICAgICAgICAgaWYgKCFtX2lzVGVybWluYXRpb24pIHsKICAg
ICAgICAgICAgIGlmIChtX2NvZGVCbG9jayAmJiAhaXNXZWJBc3NlbWJseUV4ZWN1dGFibGUobV9j
b2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpKSkKLSAgICAgICAgICAgICAgICBtX2hhbmRsZXIg
PSBmaW5kRXhjZXB0aW9uSGFuZGxlcih2aXNpdG9yLCBtX2NvZGVCbG9jaywgQ29kZUJsb2NrOjpS
ZXF1aXJlZEhhbmRsZXI6OkFueUhhbmRsZXIpOworICAgICAgICAgICAgICAgIG1faGFuZGxlciA9
IGZpbmRFeGNlcHRpb25IYW5kbGVyKHZpc2l0b3IsIG1fY29kZUJsb2NrLCBSZXF1aXJlZEhhbmRs
ZXI6OkFueUhhbmRsZXIpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKG1faGFuZGxlcikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgKaW5kZXgg
NzljN2U1MzAxYmE4Mzk2YmMwMmRjMjQ1ZTA4MWM3ZjdhMzczOGU2Yy4uM2RmMDA2Nzc2ZjYxYTRi
NWI0YjdjMjQ4ZTc1Y2FiMWE4YzMwOTMwOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL0ludGVycHJldGVyLmgKQEAgLTY1LDYgKzY1LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgc3RydWN0IEhhbmRsZXJJbmZvOwogICAgIHN0cnVjdCBJbnN0cnVjdGlvbjsKICAg
ICBzdHJ1Y3QgUHJvdG9DYWxsRnJhbWU7CisgICAgc3RydWN0IFVubGlua2VkSW5zdHJ1Y3Rpb247
CiAKICAgICBlbnVtIFVud2luZFN0YXJ0IHsgVW53aW5kRnJvbUN1cnJlbnRGcmFtZSwgVW53aW5k
RnJvbUNhbGxlckZyYW1lIH07CiAKQEAgLTIwNyw3ICsyMDgsMTAgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgICAgICByZXR1cm4gb3Bjb2RlOwogI2VuZGlmCiAgICAgICAgIH0KLSAgICAgICAg
CisKKyAgICAgICAgT3Bjb2RlSUQgZ2V0T3Bjb2RlSUQoY29uc3QgSW5zdHJ1Y3Rpb24mKTsKKyAg
ICAgICAgT3Bjb2RlSUQgZ2V0T3Bjb2RlSUQoY29uc3QgVW5saW5rZWRJbnN0cnVjdGlvbiYpOwor
CiAgICAgICAgIGJvb2wgaXNPcGNvZGUoT3Bjb2RlKTsKIAogICAgICAgICBKU1ZhbHVlIGV4ZWN1
dGUoUHJvZ3JhbUV4ZWN1dGFibGUqLCBDYWxsRnJhbWUqLCBKU09iamVjdCogdGhpc09iaik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXJJ
bmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXJJ
bmxpbmVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMTc3YzE1NDc5MGE2N2ZiNDFjYzllMmQwOWExZGJkZmRkZmE1
OWJkZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9JbnRlcnByZXRlcklubGluZXMuaApAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE2IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKyAqIENvcHly
aWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVk
ZSAiSW5zdHJ1Y3Rpb24uaCIKKyNpbmNsdWRlICJJbnRlcnByZXRlci5oIgorI2luY2x1ZGUgIlVu
bGlua2VkQ29kZUJsb2NrLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitpbmxpbmUgT3Bjb2RlSUQg
SW50ZXJwcmV0ZXI6OmdldE9wY29kZUlEKGNvbnN0IEluc3RydWN0aW9uJiBpbnN0cnVjdGlvbikK
K3sKKyAgICByZXR1cm4gZ2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb24udS5vcGNvZGUpOworfQorCitp
bmxpbmUgT3Bjb2RlSUQgSW50ZXJwcmV0ZXI6OmdldE9wY29kZUlEKGNvbnN0IFVubGlua2VkSW5z
dHJ1Y3Rpb24mIGluc3RydWN0aW9uKQoreworICAgIHJldHVybiBpbnN0cnVjdGlvbi51Lm9wY29k
ZTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKaW5k
ZXggYjAwZGZhYzhjMTVjNTQ3ZDI3ZmM2NjdmNWM0NTkwZWQzOTlkZWU0MC4uMTI0MDVmN2U1MDRh
YjM4OTNkZDk3ZDdhOTI5MTNiMDk1YTExNTkzMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNw
cApAQCAtMjM1LDggKzIzNSw2IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkK
ICAgICAgICAgREVGSU5FX09QKG9wX2dldF9yZXN0X2xlbmd0aCkKICAgICAgICAgREVGSU5FX09Q
KG9wX2NoZWNrX3RkeikKICAgICAgICAgREVGSU5FX09QKG9wX2Fzc2VydCkKLSAgICAgICAgREVG
SU5FX09QKG9wX3NhdmUpCi0gICAgICAgIERFRklORV9PUChvcF9yZXN1bWUpCiAgICAgICAgIERF
RklORV9PUChvcF9kZWJ1ZykKICAgICAgICAgREVGSU5FX09QKG9wX2RlbF9ieV9pZCkKICAgICAg
ICAgREVGSU5FX09QKG9wX2RlbF9ieV92YWwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAppbmRleCBi
Yjk3ZGMzNWJkZmMwMzM5OWFhMDUxM2E5Y2E3MzU1ZDA4MzFjNjBkLi41MWZjZjYwYjk5ZDQwYjBl
NTNkYmNkMjIzYzU2OTIwMjVmMTRlY2YzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKQEAgLTQ5
Nyw4ICs0OTcsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0X29wX2dldF9y
ZXN0X2xlbmd0aChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfY2hlY2tfdGR6
KEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9hc3NlcnQoSW5zdHJ1Y3Rpb24q
KTsKLSAgICAgICAgdm9pZCBlbWl0X29wX3NhdmUoSW5zdHJ1Y3Rpb24qKTsKLSAgICAgICAgdm9p
ZCBlbWl0X29wX3Jlc3VtZShJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZGVi
dWcoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2RlbF9ieV9pZChJbnN0cnVj
dGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZGVsX2J5X3ZhbChJbnN0cnVjdGlvbiopOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKaW5kZXggN2Y3Yzc0NTNiZDNk
MmQ1MGUxODAxODNmMjk3MzExNWYxMTlkODUyZi4uMmRiZTg2YzYyNGJjODdlYmY3MGI4MDFlMGEy
Y2NjZWY2NTE1YmEyMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGNvZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3Bw
CkBAIC0xNDkyLDE4ICsxNDkyLDYgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X3Jlc3RfbGVuZ3Ro
KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAjZW5kaWYKIH0KIAotdm9pZCBKSVQ6
OmVtaXRfb3Bfc2F2ZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQotewotICAgIEpJ
VFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93
X3BhdGhfc2F2ZSk7Ci0gICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKLX0KLQotdm9pZCBKSVQ6OmVt
aXRfb3BfcmVzdW1lKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCi17Ci0gICAgSklU
U2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5zdHJ1Y3Rpb24sIHNsb3df
cGF0aF9yZXN1bWUpOwotICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7Ci19Ci0KIH0gLy8gbmFtZXNw
YWNlIEpTQwogCiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbSBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQppbmRleCAxNDkxOGI2NTVkNWNm
YTIyYjg2MTU4ZWIyZWVhYWYwODc0OTY1NmE3Li5jOWY5Njg3OTU4ZDA2ZDMwNjBjZjY5ZmUzNzg5
ZDFiZDBiZjhjNzlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlci5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIuYXNtCkBAIC0xNzA5LDE2ICsxNzA5LDggQEAgX2xsaW50X29wX2Fz
c2VydDoKICAgICBkaXNwYXRjaCgzKQogCiAKLV9sbGludF9vcF9zYXZlOgotICAgIHRyYWNlRXhl
Y3V0aW9uKCkKLSAgICBjYWxsT3Bjb2RlU2xvd1BhdGgoX3Nsb3dfcGF0aF9zYXZlKQotICAgIGRp
c3BhdGNoKDQpCi0KLQotX2xsaW50X29wX3Jlc3VtZToKLSAgICB0cmFjZUV4ZWN1dGlvbigpCi0g
ICAgY2FsbE9wY29kZVNsb3dQYXRoKF9zbG93X3BhdGhfcmVzdW1lKQotICAgIGRpc3BhdGNoKDMp
CitfbGxpbnRfb3BfeWllbGQ6CisgICAgbm90U3VwcG9ydGVkKCkKIAogCiBfbGxpbnRfb3BfY3Jl
YXRlX2xleGljYWxfZW52aXJvbm1lbnQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL1BhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNl
ci5jcHAKaW5kZXggZWJlYTk4ZTRlZTEzZmExMmJlMDk2YmE5MmY0ZDQxOWUzNGNlZDE3MC4uMjYx
NzQ1YTE5MDMxN2RlNzU5MTJlM2E5MjNmYTlmMjg4NzQ4NjNkNiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvUGFyc2VyLmNwcApAQCAtMjYwLDcgKzI2MCw3IEBAIFN0cmluZyBQYXJzZXI8
TGV4ZXJUeXBlPjo6cGFyc2VJbm5lcihjb25zdCBJZGVudGlmaWVyJiBjYWxsZWVOYW1lLCBTb3Vy
Y2VQYXJzZU1vCiAgICAgaWYgKG1fbGV4ZXItPmlzUmVwYXJzaW5nRnVuY3Rpb24oKSkgewogICAg
ICAgICBQYXJzZXJGdW5jdGlvbkluZm88QVNUQnVpbGRlcj4gZnVuY3Rpb25JbmZvOwogICAgICAg
ICBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yQm9keU1vZGUpCi0g
ICAgICAgICAgICBtX3BhcmFtZXRlcnMgPSBjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKGNvbnRl
eHQpOworICAgICAgICAgICAgbV9wYXJhbWV0ZXJzID0gY3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVy
cyhjb250ZXh0LCBmdW5jdGlvbkluZm8ucGFyYW1ldGVyQ291bnQpOwogICAgICAgICBlbHNlCiAg
ICAgICAgICAgICBtX3BhcmFtZXRlcnMgPSBwYXJzZUZ1bmN0aW9uUGFyYW1ldGVycyhjb250ZXh0
LCBwYXJzZU1vZGUsIGZ1bmN0aW9uSW5mbyk7CiAKQEAgLTUxMiwxMCArNTEyLDkgQEAgdGVtcGxh
dGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU291cmNlRWxlbWVudHMgUGFyc2VyPExleGVyVHlw
ZT46OnBhcnNlR2VuZXJhdG8KIAogICAgIFBhcnNlckZ1bmN0aW9uSW5mbzxUcmVlQnVpbGRlcj4g
aW5mbzsKICAgICBpbmZvLm5hbWUgPSAmbV92bS0+cHJvcGVydHlOYW1lcy0+bnVsbElkZW50aWZp
ZXI7Ci0gICAgY3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhjb250ZXh0KTsKKyAgICBjcmVhdGVH
ZW5lcmF0b3JQYXJhbWV0ZXJzKGNvbnRleHQsIGluZm8ucGFyYW1ldGVyQ291bnQpOwogICAgIGlu
Zm8uc3RhcnRPZmZzZXQgPSBwYXJhbWV0ZXJzU3RhcnQ7CiAgICAgaW5mby5zdGFydExpbmUgPSB0
b2tlbkxpbmUoKTsKLSAgICBpbmZvLnBhcmFtZXRlckNvdW50ID0gNDsgLy8gZ2VuZXJhdG9yLCBz
dGF0ZSwgdmFsdWUsIHJlc3VtZSBtb2RlCiAKICAgICB7CiAgICAgICAgIEF1dG9Qb3BTY29wZVJl
ZiBnZW5lcmF0b3JCb2R5U2NvcGUodGhpcywgcHVzaFNjb3BlKCkpOwpAQCAtMTkwMywzMiArMTkw
MiwzMCBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPiB0ZW1wbGF0ZSA8Y2xhc3MgVHJl
ZUJ1aWxkZXIsIGNsYXNzIEZ1bmN0aW9uSW5mb1R5cAogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUg
TGV4ZXJUeXBlPgotdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiB0eXBlbmFtZSBUcmVlQnVp
bGRlcjo6Rm9ybWFsUGFyYW1ldGVyTGlzdCBQYXJzZXI8TGV4ZXJUeXBlPjo6Y3JlYXRlR2VuZXJh
dG9yUGFyYW1ldGVycyhUcmVlQnVpbGRlciYgY29udGV4dCkKK3RlbXBsYXRlIDxjbGFzcyBUcmVl
QnVpbGRlcj4gdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkZvcm1hbFBhcmFtZXRlckxpc3QgUGFyc2Vy
PExleGVyVHlwZT46OmNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMoVHJlZUJ1aWxkZXImIGNvbnRl
eHQsIHVuc2lnbmVkJiBwYXJhbWV0ZXJDb3VudCkKIHsKICAgICBhdXRvIHBhcmFtZXRlcnMgPSBj
b250ZXh0LmNyZWF0ZUZvcm1hbFBhcmFtZXRlckxpc3QoKTsKIAogICAgIEpTVG9rZW5Mb2NhdGlv
biBsb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOwogICAgIEpTVGV4dFBvc2l0aW9uIHBvc2l0aW9u
ID0gdG9rZW5TdGFydFBvc2l0aW9uKCk7CiAKLSAgICAvLyBAZ2VuZXJhdG9yCi0gICAgZGVjbGFy
ZVBhcmFtZXRlcigmbV92bS0+cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9y
UHJpdmF0ZU5hbWUoKSk7Ci0gICAgYXV0byBnZW5lcmF0b3IgPSBjb250ZXh0LmNyZWF0ZUJpbmRp
bmdMb2NhdGlvbihsb2NhdGlvbiwgbV92bS0+cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCku
Z2VuZXJhdG9yUHJpdmF0ZU5hbWUoKSwgcG9zaXRpb24sIHBvc2l0aW9uLCBBc3NpZ25tZW50Q29u
dGV4dDo6RGVjbGFyYXRpb25TdGF0ZW1lbnQpOwotICAgIGNvbnRleHQuYXBwZW5kUGFyYW1ldGVy
KHBhcmFtZXRlcnMsIGdlbmVyYXRvciwgMCk7CisgICAgYXV0byBhZGRQYXJhbWV0ZXIgPSBbJl0o
Y29uc3QgSWRlbnRpZmllciYgbmFtZSkgeworICAgICAgICBkZWNsYXJlUGFyYW1ldGVyKCZuYW1l
KTsKKyAgICAgICAgYXV0byBiaW5kaW5nID0gY29udGV4dC5jcmVhdGVCaW5kaW5nTG9jYXRpb24o
bG9jYXRpb24sIG5hbWUsIHBvc2l0aW9uLCBwb3NpdGlvbiwgQXNzaWdubWVudENvbnRleHQ6OkRl
Y2xhcmF0aW9uU3RhdGVtZW50KTsKKyAgICAgICAgY29udGV4dC5hcHBlbmRQYXJhbWV0ZXIocGFy
YW1ldGVycywgYmluZGluZywgMCk7CisgICAgICAgICsrcGFyYW1ldGVyQ291bnQ7CisgICAgfTsK
IAorICAgIC8vIEBnZW5lcmF0b3IKKyAgICBhZGRQYXJhbWV0ZXIobV92bS0+cHJvcGVydHlOYW1l
cy0+YnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yUHJpdmF0ZU5hbWUoKSk7CiAgICAgLy8gQGdlbmVy
YXRvclN0YXRlCi0gICAgZGVjbGFyZVBhcmFtZXRlcigmbV92bS0+cHJvcGVydHlOYW1lcy0+YnVp
bHRpbk5hbWVzKCkuZ2VuZXJhdG9yU3RhdGVQcml2YXRlTmFtZSgpKTsKLSAgICBhdXRvIGdlbmVy
YXRvclN0YXRlID0gY29udGV4dC5jcmVhdGVCaW5kaW5nTG9jYXRpb24obG9jYXRpb24sIG1fdm0t
PnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclN0YXRlUHJpdmF0ZU5hbWUo
KSwgcG9zaXRpb24sIHBvc2l0aW9uLCBBc3NpZ25tZW50Q29udGV4dDo6RGVjbGFyYXRpb25TdGF0
ZW1lbnQpOwotICAgIGNvbnRleHQuYXBwZW5kUGFyYW1ldGVyKHBhcmFtZXRlcnMsIGdlbmVyYXRv
clN0YXRlLCAwKTsKLQorICAgIGFkZFBhcmFtZXRlcihtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5idWls
dGluTmFtZXMoKS5nZW5lcmF0b3JTdGF0ZVByaXZhdGVOYW1lKCkpOwogICAgIC8vIEBnZW5lcmF0
b3JWYWx1ZQotICAgIGRlY2xhcmVQYXJhbWV0ZXIoJm1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0
aW5OYW1lcygpLmdlbmVyYXRvclZhbHVlUHJpdmF0ZU5hbWUoKSk7Ci0gICAgYXV0byBnZW5lcmF0
b3JWYWx1ZSA9IGNvbnRleHQuY3JlYXRlQmluZGluZ0xvY2F0aW9uKGxvY2F0aW9uLCBtX3ZtLT5w
cm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JWYWx1ZVByaXZhdGVOYW1lKCks
IHBvc2l0aW9uLCBwb3NpdGlvbiwgQXNzaWdubWVudENvbnRleHQ6OkRlY2xhcmF0aW9uU3RhdGVt
ZW50KTsKLSAgICBjb250ZXh0LmFwcGVuZFBhcmFtZXRlcihwYXJhbWV0ZXJzLCBnZW5lcmF0b3JW
YWx1ZSwgMCk7Ci0KKyAgICBhZGRQYXJhbWV0ZXIobV92bS0+cHJvcGVydHlOYW1lcy0+YnVpbHRp
bk5hbWVzKCkuZ2VuZXJhdG9yVmFsdWVQcml2YXRlTmFtZSgpKTsKICAgICAvLyBAZ2VuZXJhdG9y
UmVzdW1lTW9kZQotICAgIGRlY2xhcmVQYXJhbWV0ZXIoJm1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1
aWx0aW5OYW1lcygpLmdlbmVyYXRvclJlc3VtZU1vZGVQcml2YXRlTmFtZSgpKTsKLSAgICBhdXRv
IGdlbmVyYXRvclJlc3VtZU1vZGUgPSBjb250ZXh0LmNyZWF0ZUJpbmRpbmdMb2NhdGlvbihsb2Nh
dGlvbiwgbV92bS0+cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yUmVzdW1l
TW9kZVByaXZhdGVOYW1lKCksIHBvc2l0aW9uLCBwb3NpdGlvbiwgQXNzaWdubWVudENvbnRleHQ6
OkRlY2xhcmF0aW9uU3RhdGVtZW50KTsKLSAgICBjb250ZXh0LmFwcGVuZFBhcmFtZXRlcihwYXJh
bWV0ZXJzLCBnZW5lcmF0b3JSZXN1bWVNb2RlLCAwKTsKKyAgICBhZGRQYXJhbWV0ZXIobV92bS0+
cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yUmVzdW1lTW9kZVByaXZhdGVO
YW1lKCkpOworICAgIC8vIEBnZW5lcmF0b3JGcmFtZQorICAgIGFkZFBhcmFtZXRlcihtX3ZtLT5w
cm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JGcmFtZVByaXZhdGVOYW1lKCkp
OwogCiAgICAgcmV0dXJuIHBhcmFtZXRlcnM7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1BhcnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Q
YXJzZXIuaAppbmRleCAzOTIwNDA0ZThiYTUyMGIyMmU0ZWNkMjc3ODFjMTNkZjgxOTA3NDMzLi41
MGUxMzkxYjVmZDAzZGQ1ZTc3OGI4ZmRiNTkyM2FhNzk4YWVkMTIzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvUGFyc2VyLmgKQEAgLTE0MjYsNyArMTQyNiw3IEBAIGNsYXNzIFBhcnNlciB7
CiAgICAgQUxXQVlTX0lOTElORSBib29sIGlzQXJyb3dGdW5jdGlvblBhcmFtZXRlcnMoKTsKICAg
ICAKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXIsIGNsYXNzIEZ1bmN0aW9uSW5mb1R5
cGU+IE5FVkVSX0lOTElORSB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6Rm9ybWFsUGFyYW1ldGVyTGlz
dCBwYXJzZUZ1bmN0aW9uUGFyYW1ldGVycyhUcmVlQnVpbGRlciYsIFNvdXJjZVBhcnNlTW9kZSwg
RnVuY3Rpb25JbmZvVHlwZSYpOwotICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gTkVW
RVJfSU5MSU5FIHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpGb3JtYWxQYXJhbWV0ZXJMaXN0IGNyZWF0
ZUdlbmVyYXRvclBhcmFtZXRlcnMoVHJlZUJ1aWxkZXImKTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3Mg
VHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElORSB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6Rm9ybWFsUGFy
YW1ldGVyTGlzdCBjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKFRyZWVCdWlsZGVyJiwgdW5zaWdu
ZWQmIHBhcmFtZXRlckNvdW50KTsKIAogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4g
TkVWRVJfSU5MSU5FIFRyZWVDbGFzc0V4cHJlc3Npb24gcGFyc2VDbGFzcyhUcmVlQnVpbGRlciYs
IEZ1bmN0aW9uTmFtZVJlcXVpcmVtZW50cywgUGFyc2VyQ2xhc3NJbmZvPFRyZWVCdWlsZGVyPiYp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93
UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhz
LmNwcAppbmRleCBhOWI3NTVlNmM5YWU5Yjk4YTYyMjkzNTQ2ZWU1N2NhODFlYzljMzJjLi4yZTg2
OGRjYjJkNzFmZTdjZjI4ZTk1MGYwNWM3NThiYTgwNWNjMzI2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKQEAgLTM3LDcgKzM3LDYg
QEAKICNpbmNsdWRlICJFcnJvci5oIgogI2luY2x1ZGUgIkVycm9ySGFuZGxpbmdTY29wZS5oIgog
I2luY2x1ZGUgIkV4Y2VwdGlvbkZ1enouaCIKLSNpbmNsdWRlICJHZW5lcmF0b3JGcmFtZS5oIgog
I2luY2x1ZGUgIkdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIkhvc3RDYWxsUmV0dXJuVmFsdWUu
aCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgpAQCAtNzUzLDM4ICs3NTIsNiBAQCBTTE9XX1BB
VEhfREVDTChzbG93X3BhdGhfYXNzZXJ0KQogICAgIEVORCgpOwogfQogCi1TTE9XX1BBVEhfREVD
TChzbG93X3BhdGhfc2F2ZSkKLXsKLSAgICAvLyBPbmx5IHNhdmUgdmFyaWFibGVzIGFuZCB0ZW1w
b3JhcnkgcmVnaXN0ZXJzLiBUaGUgc2NvcGUgcmVnaXN0ZXJzIGFyZSBpbmNsdWRlZCBpbiB0aGVt
LgotICAgIC8vIEJ1dCBwYXJhbWV0ZXJzIGFyZSBub3QgaW5jbHVkZWQuIEJlY2F1c2UgdGhlIGdl
bmVyYXRvciBpbXBsZW1lbnRhdGlvbiByZXBsYWNlcyB0aGUgdmFsdWVzIG9mIHBhcmFtZXRlcnMg
b24gZWFjaCBnZW5lcmF0b3IubmV4dCgpIGNhbGwuCi0gICAgQkVHSU4oKTsKLSAgICBKU1ZhbHVl
IGdlbmVyYXRvciA9IE9QKDEpLmpzVmFsdWUoKTsKLSAgICBHZW5lcmF0b3JGcmFtZSogZnJhbWUg
PSBudWxscHRyOwotICAgIEpTVmFsdWUgdmFsdWUgPSBnZW5lcmF0b3IuZ2V0KGV4ZWMsIGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JGcmFtZVByaXZhdGVOYW1l
KCkpOwotICAgIGlmICghdmFsdWUuaXNOdWxsKCkpCi0gICAgICAgIGZyYW1lID0ganNDYXN0PEdl
bmVyYXRvckZyYW1lKj4odmFsdWUpOwotICAgIGVsc2UgewotICAgICAgICAvLyBGSVhNRTogT25j
ZSBKU0dlbmVyYXRvciBzcGVjaWFsaXplZCBvYmplY3QgaXMgaW50cm9kdWNlZCwgdGhpcyBHZW5l
cmF0b3JGcmFtZSBzaG91bGQgYmUgZW1iZWRlZCBpbnRvIGl0IHRvIGF2b2lkIGFsbG9jYXRpb25z
LgotICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUx
NTQ1Ci0gICAgICAgIGZyYW1lID0gR2VuZXJhdG9yRnJhbWU6OmNyZWF0ZShleGVjLT52bSgpLCAg
ZXhlYy0+Y29kZUJsb2NrKCktPm51bUNhbGxlZUxvY2FscygpKTsKLSAgICAgICAgUHV0UHJvcGVy
dHlTbG90IHNsb3QoZ2VuZXJhdG9yLCB0cnVlLCBQdXRQcm9wZXJ0eVNsb3Q6OlB1dEJ5SWQpOwot
ICAgICAgICBhc09iamVjdChnZW5lcmF0b3IpLT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+cHV0
KGFzT2JqZWN0KGdlbmVyYXRvciksIGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5idWlsdGlu
TmFtZXMoKS5nZW5lcmF0b3JGcmFtZVByaXZhdGVOYW1lKCksIGZyYW1lLCBzbG90KTsKLSAgICB9
Ci0gICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gcGNbMl0udS51bnNpZ25lZFZh
bHVlOwotICAgIGZyYW1lLT5zYXZlKGV4ZWMsIGV4ZWMtPmNvZGVCbG9jaygpLT5saXZlQ2FsbGVl
TG9jYWxzQXRZaWVsZChsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpKTsKLSAgICBFTkQoKTsKLX0KLQot
U0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3Jlc3VtZSkKLXsKLSAgICBCRUdJTigpOwotICAgIEpT
VmFsdWUgZ2VuZXJhdG9yID0gT1AoMSkuanNWYWx1ZSgpOwotICAgIEdlbmVyYXRvckZyYW1lKiBm
cmFtZSA9IGpzQ2FzdDxHZW5lcmF0b3JGcmFtZSo+KGdlbmVyYXRvci5nZXQoZXhlYywgZXhlYy0+
cHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvckZyYW1lUHJpdmF0ZU5hbWUo
KSkpOwotICAgIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9IHBjWzJdLnUudW5zaWdu
ZWRWYWx1ZTsKLSAgICBmcmFtZS0+cmVzdW1lKGV4ZWMsIGV4ZWMtPmNvZGVCbG9jaygpLT5saXZl
Q2FsbGVlTG9jYWxzQXRZaWVsZChsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpKTsKLSAgICBFTkQoKTsK
LX0KLQogU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2NyZWF0ZV9sZXhpY2FsX2Vudmlyb25tZW50
KQogewogICAgIEJFR0lOKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db21tb25TbG93UGF0aHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bW1vblNsb3dQYXRocy5oCmluZGV4IDY0MDFhNjE0ZDU2MTE2NjM1NjliMThhMDI3MmIyOGFjMzUy
ODZhODIuLjNkOWMxNWY1YWYwYzc1N2RkYTEwNTMzOTE5OTBmNTQ2Mzg4NjgxYjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCkBAIC0yNDgs
OCArMjQ4LDYgQEAgU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9uZXh0X2dlbmVyaWNf
ZW51bWVyYXRvcl9wbmFtZSk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3RvX2lu
ZGV4X3N0cmluZyk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3Byb2ZpbGVfdHlw
ZV9jbGVhcl9sb2cpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9hc3NlcnQpOwot
U0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9zYXZlKTsKLVNMT1dfUEFUSF9ISURERU5f
REVDTChzbG93X3BhdGhfcmVzdW1lKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhf
Y3JlYXRlX2xleGljYWxfZW52aXJvbm1lbnQpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3df
cGF0aF9wdXNoX3dpdGhfc2NvcGUpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9y
ZXNvbHZlX3Njb3BlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0dlbmVyYXRvckZyYW1lLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVy
YXRvckZyYW1lLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWY2ZWE3YTEwMDI1
OGMzZWNlMDRkYWFiNDNiZGFhODUxZWM4ZjcxNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0
b3JGcmFtZS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NyArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJHZW5lcmF0b3JGcmFtZS5oIgot
Ci0jaW5jbHVkZSAiQ29kZUJsb2NrLmgiCi0jaW5jbHVkZSAiSGVhcEl0ZXJhdGlvblNjb3BlLmgi
Ci0jaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKLSNpbmNsdWRlICJKU0NlbGxJbmxpbmVz
LmgiCi0jaW5jbHVkZSAiU2xvdFZpc2l0b3JJbmxpbmVzLmgiCi0jaW5jbHVkZSAiU3RydWN0dXJl
SW5saW5lcy5oIgotCi1uYW1lc3BhY2UgSlNDIHsKLQotY29uc3QgQ2xhc3NJbmZvIEdlbmVyYXRv
ckZyYW1lOjpzX2luZm8gPSB7ICJHZW5lcmF0b3JGcmFtZSIsIG51bGxwdHIsIG51bGxwdHIsIENS
RUFURV9NRVRIT0RfVEFCTEUoR2VuZXJhdG9yRnJhbWUpIH07Ci0KLUdlbmVyYXRvckZyYW1lOjpH
ZW5lcmF0b3JGcmFtZShWTSYgdm0sIHNpemVfdCBudW1iZXJPZkNhbGxlZUxvY2FscykKLSAgICA6
IEJhc2Uodm0sIHZtLmdlbmVyYXRvckZyYW1lU3RydWN0dXJlLmdldCgpKQotICAgICwgbV9udW1i
ZXJPZkNhbGxlZUxvY2FscyhudW1iZXJPZkNhbGxlZUxvY2FscykKLXsKLX0KLQotdm9pZCBHZW5l
cmF0b3JGcmFtZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQotewotICAgIEJhc2U6OmZpbmlzaENy
ZWF0aW9uKHZtKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fbnVtYmVyT2ZDYWxsZWVM
b2NhbHM7ICsraSkKLSAgICAgICAgbG9jYWxBdChpKS5jbGVhcigpOwotfQotCi1TdHJ1Y3R1cmUq
IEdlbmVyYXRvckZyYW1lOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKLXsKLSAgICByZXR1cm4gU3RydWN0dXJl
OjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhDZWxsVHlwZSwg
U3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwotfQotCi1HZW5lcmF0b3JGcmFtZSogR2VuZXJhdG9y
RnJhbWU6OmNyZWF0ZShWTSYgdm0sIHNpemVfdCBudW1iZXJPZkxvY2FscykKLXsKLSAgICBHZW5l
cmF0b3JGcmFtZSogcmVzdWx0ID0KLSAgICAgICAgbmV3ICgKLSAgICAgICAgICAgIE5vdE51bGws
Ci0gICAgICAgICAgICBhbGxvY2F0ZUNlbGw8R2VuZXJhdG9yRnJhbWU+KHZtLmhlYXAsIGFsbG9j
YXRpb25TaXplRm9yTG9jYWxzKG51bWJlck9mTG9jYWxzKSkpCi0gICAgICAgIEdlbmVyYXRvckZy
YW1lKHZtLCBudW1iZXJPZkxvY2Fscyk7Ci0gICAgcmVzdWx0LT5maW5pc2hDcmVhdGlvbih2bSk7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotdm9pZCBHZW5lcmF0b3JGcmFtZTo6c2F2ZShFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IEZhc3RCaXRWZWN0b3ImIGxpdmVDYWxsZWVMb2NhbHMpCi17Ci0g
ICAgLy8gT25seSBzYXZlIGNhbGxlZSBsb2NhbHMuCi0gICAgLy8gRXZlcnkgdGltZSBhIGdlbmVy
YXRvciBpcyBjYWxsZWQgKG9yIHJlc3VtZWQpLCBwYXJhbWV0ZXJzIHNob3VsZCBiZSByZXBsYWNl
ZC4KLSAgICBBU1NFUlQobGl2ZUNhbGxlZUxvY2Fscy5udW1CaXRzKCkgPD0gbV9udW1iZXJPZkNh
bGxlZUxvY2Fscyk7Ci0gICAgbGl2ZUNhbGxlZUxvY2Fscy5mb3JFYWNoU2V0Qml0KFsmXShzaXpl
X3QgaW5kZXgpIHsKLSAgICAgICAgbG9jYWxBdChpbmRleCkuc2V0KGV4ZWMtPnZtKCksIHRoaXMs
IGV4ZWMtPnVuY2hlY2tlZFIodmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaW5kZXgpKS5qc1ZhbHVl
KCkpOwotICAgIH0pOwotfQotCi12b2lkIEdlbmVyYXRvckZyYW1lOjpyZXN1bWUoRXhlY1N0YXRl
KiBleGVjLCBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlQ2FsbGVlTG9jYWxzKQotewotICAgIC8v
IE9ubHkgcmVzdW1lIGNhbGxlZSBsb2NhbHMuCi0gICAgLy8gRXZlcnkgdGltZSBhIGdlbmVyYXRv
ciBpcyBjYWxsZWQgKG9yIHJlc3VtZWQpLCBwYXJhbWV0ZXJzIHNob3VsZCBiZSByZXBsYWNlZC4K
LSAgICBsaXZlQ2FsbGVlTG9jYWxzLmZvckVhY2hTZXRCaXQoWyZdKHNpemVfdCBpbmRleCkgewot
ICAgICAgICBleGVjLT51bmNoZWNrZWRSKHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGluZGV4KSkg
PSBsb2NhbEF0KGluZGV4KS5nZXQoKTsKLSAgICAgICAgbG9jYWxBdChpbmRleCkuY2xlYXIoKTsK
LSAgICB9KTsKLX0KLQotdm9pZCBHZW5lcmF0b3JGcmFtZTo6dmlzaXRDaGlsZHJlbihKU0NlbGwq
IGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQotewotICAgIEdlbmVyYXRvckZyYW1lKiB0aGlz
T2JqZWN0ID0ganNDYXN0PEdlbmVyYXRvckZyYW1lKj4oY2VsbCk7Ci0gICAgQmFzZTo6dmlzaXRD
aGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKLSAgICAvLyBTaW5jZSBvbmx5IHRydWUgY2Vs
bCBwb2ludGVycyBhcmUgc3RvcmVkIGFzIGEgY2VsbCwgd2UgY2FuIHNhZmVseSBtYXJrIHRoZW0u
Ci0gICAgdmlzaXRvci5hcHBlbmRWYWx1ZXModGhpc09iamVjdC0+bG9jYWxzKCksIHRoaXNPYmpl
Y3QtPm1fbnVtYmVyT2ZDYWxsZWVMb2NhbHMpOwotfQotCi19IC8vIG5hbWVzcGFjZSBKU0MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZyYW1lLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGcmFtZS5oCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZDU0NWIxNDdkZDRhYmZiMmJiYjliNWE3MTk0ZThmNzQ4
NDFjNDlhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZyYW1lLmgKKysrIC9kZXYvbnVs
bApAQCAtMSw5MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1
a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgR2VuZXJhdG9y
RnJhbWVfaAotI2RlZmluZSBHZW5lcmF0b3JGcmFtZV9oCi0KLSNpbmNsdWRlICJKU0NlbGwuaCIK
LSNpbmNsdWRlIDx3dGYvRmFzdEJpdFZlY3Rvci5oPgotCi1uYW1lc3BhY2UgSlNDIHsKLQotY2xh
c3MgR2VuZXJhdG9yRnJhbWUgOiBwdWJsaWMgSlNDZWxsIHsKLSAgICBmcmllbmQgY2xhc3MgSklU
OwotI2lmIEVOQUJMRShERkdfSklUKQotICAgIGZyaWVuZCBjbGFzcyBERkc6OlNwZWN1bGF0aXZl
SklUOwotICAgIGZyaWVuZCBjbGFzcyBERkc6OkpJVENvbXBpbGVyOwotI2VuZGlmCi0gICAgZnJp
ZW5kIGNsYXNzIFZNOwotcHVibGljOgotICAgIHR5cGVkZWYgSlNDZWxsIEJhc2U7Ci0gICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gU3RydWN0dXJlSXNJbW1vcnRhbCB8
IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwotCi0gICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKLQotICAg
IHN0YXRpYyBHZW5lcmF0b3JGcmFtZSogY3JlYXRlKFZNJiwgc2l6ZV90IG51bWJlck9mQ2FsbGVl
TG9jYWxzKTsKLQotICAgIFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qIGxvY2FscygpCi0gICAg
ewotICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4q
PihiaXR3aXNlX2Nhc3Q8Y2hhcio+KHRoaXMpICsgb2Zmc2V0T2ZMb2NhbHMoKSk7Ci0gICAgfQot
Ci0gICAgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiYgbG9jYWxBdChzaXplX3QgaW5kZXgpCi0g
ICAgewotICAgICAgICBBU1NFUlQoaW5kZXggPCBtX251bWJlck9mQ2FsbGVlTG9jYWxzKTsKLSAg
ICAgICAgcmV0dXJuIGxvY2FscygpW2luZGV4XTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgc2l6ZV90
IG9mZnNldE9mTG9jYWxzKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBXVEY6OnJvdW5kVXBUb011
bHRpcGxlT2Y8c2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3duPik+KHNpemVvZihHZW5lcmF0b3JG
cmFtZSkpOwotICAgIH0KLQotICAgIHN0YXRpYyBzaXplX3QgYWxsb2NhdGlvblNpemVGb3JMb2Nh
bHModW5zaWduZWQgbnVtYmVyT2ZMb2NhbHMpCi0gICAgewotICAgICAgICByZXR1cm4gb2Zmc2V0
T2ZMb2NhbHMoKSArIG51bWJlck9mTG9jYWxzICogc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3du
Pik7Ci0gICAgfQotCi0gICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwg
SlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHByb3RvdHlwZSk7Ci0KLSAgICB2b2lkIHNhdmUoRXhl
Y1N0YXRlKiwgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZUNhbGxlZUxvY2Fscyk7Ci0gICAgdm9p
ZCByZXN1bWUoRXhlY1N0YXRlKiwgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZUNhbGxlZUxvY2Fs
cyk7Ci0KLXByaXZhdGU6Ci0gICAgR2VuZXJhdG9yRnJhbWUoVk0mLCBzaXplX3QgbnVtYmVyT2ZD
YWxsZWVMb2NhbHMpOwotCi0gICAgc2l6ZV90IG1fbnVtYmVyT2ZDYWxsZWVMb2NhbHM7Ci0KLSAg
ICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwotCi0gICAgdm9pZCBmaW5pc2hD
cmVhdGlvbihWTSYpOwotCi1wcm90ZWN0ZWQ6Ci0gICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJl
bihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgSlNDCi0KLSNl
bmRpZiAvLyBHZW5lcmF0b3JGcmFtZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dlbmVyYXRvckZ1bmN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dlbmVyYXRvckZ1bmN0aW9uLmgKaW5kZXggMzZmNjFjNWYyMGY1NmJlZmQ2YzU1
Nzg0MmIxOWUzOWIxOWEzYTkxOS4uYTFjYmFkOTQ2ZGM1NjgyOWVkMWEyMTU1NzkwYjQ0MGE4ZGY0
MzAwNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0
b3JGdW5jdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJh
dG9yRnVuY3Rpb24uaApAQCAtNTUsNiArNTUsMTYgQEAgY2xhc3MgSlNHZW5lcmF0b3JGdW5jdGlv
biA6IHB1YmxpYyBKU0Z1bmN0aW9uIHsKICAgICAgICAgRXhlY3V0aW5nID0gLTIsCiAgICAgfTsK
IAorICAgIC8vIFt0aGlzXSwgQGdlbmVyYXRvciwgQGdlbmVyYXRvclN0YXRlLCBAZ2VuZXJhdG9y
VmFsdWUsIEBnZW5lcmF0b3JSZXN1bWVNb2RlLCBAZ2VuZXJhdG9yRnJhbWUuCisgICAgZW51bSBj
bGFzcyBHZW5lcmF0b3JBcmd1bWVudCA6IGludDMyX3QgeworICAgICAgICBUaGlzVmFsdWUgPSAw
LAorICAgICAgICBHZW5lcmF0b3IgPSAxLAorICAgICAgICBTdGF0ZSA9IDIsCisgICAgICAgIFZh
bHVlID0gMywKKyAgICAgICAgUmVzdW1lTW9kZSA9IDQsCisgICAgICAgIEZyYW1lID0gNSwKKyAg
ICB9OworCiAgICAgY29uc3Qgc3RhdGljIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6
U3RydWN0dXJlRmxhZ3M7CiAKICAgICBERUNMQVJFX0VYUE9SVF9JTkZPOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVk0uY3BwCmluZGV4IDg4MTMxYmY1YjMwOTBhYmRhZTRiOTk0NTFiNDE3MWNi
NWZlMmM0NWMuLmMzMDEyMmM1YWYzM2M4MDdmZTlhNjVhMThmZTZmODU0NzBlZDBhNmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKQEAgLTQ2LDcgKzQ2LDYgQEAKICNpbmNsdWRl
ICJGVExUaHVua3MuaCIKICNpbmNsdWRlICJGdW5jdGlvbkNvbnN0cnVjdG9yLmgiCiAjaW5jbHVk
ZSAiR0NBY3Rpdml0eUNhbGxiYWNrLmgiCi0jaW5jbHVkZSAiR2VuZXJhdG9yRnJhbWUuaCIKICNp
bmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJIZWFwLmgiCiAjaW5jbHVkZSAiSGVh
cEl0ZXJhdGlvblNjb3BlLmgiCkBAIC0yNDAsNyArMjM5LDYgQEAgVk06OlZNKFZNVHlwZSB2bVR5
cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgIGluZmVycmVkVHlwZVN0cnVjdHVyZS5zZXQoKnRo
aXMsIEluZmVycmVkVHlwZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwog
ICAgIGluZmVycmVkVHlwZVRhYmxlU3RydWN0dXJlLnNldCgqdGhpcywgSW5mZXJyZWRUeXBlVGFi
bGU6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICBmdW5jdGlvblJh
cmVEYXRhU3RydWN0dXJlLnNldCgqdGhpcywgRnVuY3Rpb25SYXJlRGF0YTo6Y3JlYXRlU3RydWN0
dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwotICAgIGdlbmVyYXRvckZyYW1lU3RydWN0dXJlLnNl
dCgqdGhpcywgR2VuZXJhdG9yRnJhbWU6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxs
KCkpKTsKICAgICBleGNlcHRpb25TdHJ1Y3R1cmUuc2V0KCp0aGlzLCBFeGNlcHRpb246OmNyZWF0
ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICBwcm9taXNlRGVmZXJyZWRTdHJ1
Y3R1cmUuc2V0KCp0aGlzLCBKU1Byb21pc2VEZWZlcnJlZDo6Y3JlYXRlU3RydWN0dXJlKCp0aGlz
LCAwLCBqc051bGwoKSkpOwogICAgIGludGVybmFsUHJvbWlzZURlZmVycmVkU3RydWN0dXJlLnNl
dCgqdGhpcywgSlNJbnRlcm5hbFByb21pc2VEZWZlcnJlZDo6Y3JlYXRlU3RydWN0dXJlKCp0aGlz
LCAwLCBqc051bGwoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVk0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKaW5kZXggODdiZDBl
MGEyNTUzOGU4YzVlYzMyYWJlNDAzMmM0Njk3ZWIxZDA4Zi4uOTE1MGI1MTU5ZWVkY2FkMTg1NjQ1
Y2RhNmM3MzBiNDkwZWQzZTY3NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVk0uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCkBAIC0z
MjAsNyArMzIwLDYgQEAgY2xhc3MgVk0gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Vk0+
IHsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBpbmZlcnJlZFR5cGVTdHJ1Y3R1cmU7CiAgICAgU3Ry
b25nPFN0cnVjdHVyZT4gaW5mZXJyZWRUeXBlVGFibGVTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0
cnVjdHVyZT4gZnVuY3Rpb25SYXJlRGF0YVN0cnVjdHVyZTsKLSAgICBTdHJvbmc8U3RydWN0dXJl
PiBnZW5lcmF0b3JGcmFtZVN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBleGNlcHRp
b25TdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gcHJvbWlzZURlZmVycmVkU3RydWN0
dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGludGVybmFsUHJvbWlzZURlZmVycmVkU3RydWN0
dXJlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRmFzdEJpdFZlY3Rvci5oIGIvU291cmNl
L1dURi93dGYvRmFzdEJpdFZlY3Rvci5oCmluZGV4IDk4ZmZmNWNmNzM1M2U2YmM2N2RhNWM1NTk0
MGNjY2U0ZTRiMTU2ZDAuLmZmMDBiN2I1NGQ0YTBjZmY0YmVmN2QwMzg1NGRlNmI5MGNlMWRiOTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0Zhc3RCaXRWZWN0b3IuaAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi9GYXN0Qml0VmVjdG9yLmgKQEAgLTIzLDggKzIzLDcgQEAKICAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAogICovCiAKLSNpZm5kZWYgRmFzdEJpdFZlY3Rvcl9oCi0jZGVmaW5lIEZhc3RCaXRWZWN0b3Jf
aAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlIDxzdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvRmFz
dE1hbGxvYy5oPgpAQCAtMzYsMTIgKzM1LDE0IEBAIGNsYXNzIFByaW50U3RyZWFtOwogCiBjbGFz
cyBGYXN0Qml0VmVjdG9yIHsKIHB1YmxpYzoKLSAgICBGYXN0Qml0VmVjdG9yKCkKLSAgICAgICAg
OiBtX2FycmF5KDApCi0gICAgICAgICwgbV9udW1CaXRzKDApCisgICAgRmFzdEJpdFZlY3Rvcigp
ID0gZGVmYXVsdDsKKworICAgIEZhc3RCaXRWZWN0b3IoRmFzdEJpdFZlY3RvciYmIG90aGVyKQor
ICAgICAgICA6IG1fYXJyYXkoc3RkOjpleGNoYW5nZShvdGhlci5tX2FycmF5LCBudWxscHRyKSkK
KyAgICAgICAgLCBtX251bUJpdHMoc3RkOjpleGNoYW5nZShvdGhlci5tX251bUJpdHMsIDApKQog
ICAgIHsKICAgICB9Ci0gICAgCisKICAgICBGYXN0Qml0VmVjdG9yKGNvbnN0IEZhc3RCaXRWZWN0
b3ImIG90aGVyKQogICAgICAgICA6IG1fYXJyYXkoMCkKICAgICAgICAgLCBtX251bUJpdHMoMCkK
QEAgLTIwMiwxMyArMjAzLDEwIEBAIGNsYXNzIEZhc3RCaXRWZWN0b3IgewogICAgIHN0YXRpYyBz
aXplX3QgYXJyYXlMZW5ndGgoc2l6ZV90IG51bUJpdHMpIHsgcmV0dXJuIChudW1CaXRzICsgMzEp
ID4+IDU7IH0KICAgICBzaXplX3QgYXJyYXlMZW5ndGgoKSBjb25zdCB7IHJldHVybiBhcnJheUxl
bmd0aChtX251bUJpdHMpOyB9CiAgICAgCi0gICAgdWludDMyX3QqIG1fYXJyYXk7IC8vIE5vLCB0
aGlzIGNhbid0IGJlIGFuIHN0ZDo6dW5pcXVlX3B0cjx1aW50MzJfdFtdPi4KLSAgICBzaXplX3Qg
bV9udW1CaXRzOworICAgIHVpbnQzMl90KiBtX2FycmF5IHsgbnVsbHB0ciB9OyAvLyBObywgdGhp
cyBjYW4ndCBiZSBhbiBzdGQ6OnVuaXF1ZV9wdHI8dWludDMyX3RbXT4uCisgICAgc2l6ZV90IG1f
bnVtQml0cyB7IDAgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdURgogCiB1c2luZyBXVEY6OkZh
c3RCaXRWZWN0b3I7Ci0KLSNlbmRpZiAvLyBGYXN0Qml0VmVjdG9yX2gKLQpkaWZmIC0tZ2l0IGEv
SlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCA2NDEwMDg3NzFhMGJi
MGUzYmY4MThlMWM4NWNjZmU3YmM0MzgwNjFiLi4yZDAzNWI3MzEwZDM4YzE5MTZjNTFhZjE0NDAw
NDFlYjJmMDY0MTk2IDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDE2LTA4LTI1ICBZdXN1a2UgU3V6dWtpICA8
dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtERkddW0ZUTF0gSW1wbGVtZW50IEVT
NiBHZW5lcmF0b3JzIGluIERGRyAvIEZUTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTUyNzIzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBzdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwtYW5kLWFycmF5Lmpz
OiBBZGRlZC4KKyAgICAgICAgKGZpYik6CisgICAgICAgICogc3RyZXNzL2dlbmVyYXRvci1maWIt
ZnRsLWFuZC1vYmplY3QuanM6IEFkZGVkLgorICAgICAgICAoZmliKToKKyAgICAgICAgKiBzdHJl
c3MvZ2VuZXJhdG9yLWZpYi1mdGwtYW5kLXN0cmluZy5qczogQWRkZWQuCisgICAgICAgIChmaWIp
OgorICAgICAgICAqIHN0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC5qczogQWRkZWQuCisgICAgICAg
IChmaWIpOgorICAgICAgICAqIHN0cmVzcy9nZW5lcmF0b3ItZnJhbWUtZW1wdHkuanM6IEFkZGVk
LgorICAgICAgICAoc2hvdWxkVGhyb3cpOgorICAgICAgICAoc2hvdWxkVGhyb3cuZmliKToKKyAg
ICAgICAgKiBzdHJlc3MvZ2VuZXJhdG9yLXJlZHVjZWQtc2F2ZS1wb2ludC1wdXQtdG8tc2NvcGUu
anM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoZ2VuKToKKyAgICAgICAg
KiBzdHJlc3MvZ2VuZXJhdG9yLXRyYW5zZmVyLXJlZ2lzdGVyLWJleW9uZC1tdXRpcGxlLXlpZWxk
cy5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgIChnZW4pOgorCiAyMDE2
LTA4LTI0ICBCZW5qYW1pbiBQb3VsYWluICA8YmVuamFtaW5Ad2Via2l0Lm9yZz4KIAogICAgICAg
ICBbSlNDXSBNYWtlIEZSb3VuZCB3b3JrIHdpdGggYW55IHR5cGUKZGlmZiAtLWdpdCBhL0pTVGVz
dHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLWFuZC1hcnJheS5qcyBiL0pTVGVzdHMvc3RyZXNz
L2dlbmVyYXRvci1maWItZnRsLWFuZC1hcnJheS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZTkzOTgxMmZkYmFl
YzZiODMyYmZkMDBmMjE1M2RlZjg0YmI3NTkyCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9z
dHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwtYW5kLWFycmF5LmpzCkBAIC0wLDAgKzEsMjMgQEAKKyhm
dW5jdGlvbiAoKSB7CisgICAgZnVuY3Rpb24gKmZpYigpCisgICAgeworICAgICAgICBsZXQgYSA9
IDE7CisgICAgICAgIGxldCBiID0gMTsKKyAgICAgICAgbGV0IGMgPSBbIDAgXTsKKyAgICAgICAg
d2hpbGUgKHRydWUpIHsKKyAgICAgICAgICAgIGNbMF0gPSBhOworICAgICAgICAgICAgeWllbGQg
YzsKKyAgICAgICAgICAgIFthLCBiXSA9IFtiLCBhICsgYl07CisgICAgICAgIH0KKyAgICB9CisK
KyAgICBsZXQgdmFsdWUgPSAwOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMWU0OyArK2kpIHsK
KyAgICAgICAgbGV0IGYgPSBmaWIoKTsKKyAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDA7
ICsraSkgeworICAgICAgICAgICAgdmFsdWUgPSBmLm5leHQoKS52YWx1ZTsKKyAgICAgICAgfQor
ICAgICAgICBpZiAodmFsdWVbMF0gIT09IDM1NDIyNDg0ODE3OTI2MjAwMDAwMCkKKyAgICAgICAg
ICAgIHRocm93IG5ldyBFcnJvcihgYmFkIHZhbHVlOiR7cmVzdWx0fWApOworICAgIH0KK30oKSk7
CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQtb2JqZWN0
LmpzIGIvSlNUZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwtYW5kLW9iamVjdC5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42NjczNDBmMmVhNGM3NDM4YTJkMjA5YWE0MGQwNjc3ZTRhYjdkM2ZiCi0tLSAvZGV2
L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwtYW5kLW9iamVjdC5q
cwpAQCAtMCwwICsxLDIzIEBACisoZnVuY3Rpb24gKCkgeworICAgIGZ1bmN0aW9uICpmaWIoKQor
ICAgIHsKKyAgICAgICAgbGV0IGEgPSAxOworICAgICAgICBsZXQgYiA9IDE7CisgICAgICAgIGxl
dCBjID0geyBmaWI6IDAgfTsKKyAgICAgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgICAgIGMu
ZmliID0gYTsKKyAgICAgICAgICAgIHlpZWxkIGM7CisgICAgICAgICAgICBbYSwgYl0gPSBbYiwg
YSArIGJdOworICAgICAgICB9CisgICAgfQorCisgICAgbGV0IHZhbHVlID0gMDsKKyAgICBmb3Ig
KGxldCBpID0gMDsgaSA8IDFlNDsgKytpKSB7CisgICAgICAgIGxldCBmID0gZmliKCk7CisgICAg
ICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwOyArK2kpIHsKKyAgICAgICAgICAgIHZhbHVlID0g
Zi5uZXh0KCkudmFsdWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHZhbHVlLmZpYiAhPT0gMzU0
MjI0ODQ4MTc5MjYyMDAwMDAwKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgdmFs
dWU6JHtyZXN1bHR9YCk7CisgICAgfQorfSgpKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNz
L2dlbmVyYXRvci1maWItZnRsLWFuZC1zdHJpbmcuanMgYi9KU1Rlc3RzL3N0cmVzcy9nZW5lcmF0
b3ItZmliLWZ0bC1hbmQtc3RyaW5nLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQzOGFlNmFiMzM0NzA0NjgyMjg0
OWY0MzAwNGVhNWM0MDNlZWRhMjgKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9n
ZW5lcmF0b3ItZmliLWZ0bC1hbmQtc3RyaW5nLmpzCkBAIC0wLDAgKzEsMjIgQEAKKyhmdW5jdGlv
biAoKSB7CisgICAgZnVuY3Rpb24gKmZpYigpCisgICAgeworICAgICAgICBsZXQgYSA9IDE7Cisg
ICAgICAgIGxldCBiID0gMTsKKyAgICAgICAgbGV0IGMgPSAiUmVzdWx0ISAiOworICAgICAgICB3
aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAgeWllbGQgYyArIGE7CisgICAgICAgICAgICBbYSwg
Yl0gPSBbYiwgYSArIGJdOworICAgICAgICB9CisgICAgfQorCisgICAgbGV0IHZhbHVlID0gMDsK
KyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDFlNDsgKytpKSB7CisgICAgICAgIGxldCBmID0gZmli
KCk7CisgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwOyArK2kpIHsKKyAgICAgICAgICAg
IHZhbHVlID0gZi5uZXh0KCkudmFsdWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHZhbHVlICE9
PSBgUmVzdWx0ISAzNTQyMjQ4NDgxNzkyNjIwMDAwMDBgKQorICAgICAgICAgICAgdGhyb3cgbmV3
IEVycm9yKGBiYWQgdmFsdWU6JHtyZXN1bHR9YCk7CisgICAgfQorfSgpKTsKZGlmZiAtLWdpdCBh
L0pTVGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLmpzIGIvSlNUZXN0cy9zdHJlc3MvZ2Vu
ZXJhdG9yLWZpYi1mdGwuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzQwZTMzZGJjODY4YmVhN2E4OTNjOWVjMTZi
Nzc5ZWMyNmJkYjE5YwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2dlbmVyYXRv
ci1maWItZnRsLmpzCkBAIC0wLDAgKzEsMjEgQEAKKyhmdW5jdGlvbiAoKSB7CisgICAgZnVuY3Rp
b24gKmZpYigpCisgICAgeworICAgICAgICBsZXQgYSA9IDE7CisgICAgICAgIGxldCBiID0gMTsK
KyAgICAgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgICAgIHlpZWxkIGE7CisgICAgICAgICAg
ICBbYSwgYl0gPSBbYiwgYSArIGJdOworICAgICAgICB9CisgICAgfQorCisgICAgbGV0IHZhbHVl
ID0gMDsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDFlNDsgKytpKSB7CisgICAgICAgIGxldCBm
ID0gZmliKCk7CisgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwOyArK2kpIHsKKyAgICAg
ICAgICAgIHZhbHVlID0gZi5uZXh0KCkudmFsdWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHZh
bHVlICE9PSAzNTQyMjQ4NDgxNzkyNjIwMDAwMDApCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoYGJhZCB2YWx1ZToke3Jlc3VsdH1gKTsKKyAgICB9Cit9KCkpOwpkaWZmIC0tZ2l0IGEvSlNU
ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZyYW1lLWVtcHR5LmpzIGIvSlNUZXN0cy9zdHJlc3MvZ2Vu
ZXJhdG9yLWZyYW1lLWVtcHR5LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU5ZTg4NTViZmFjM2M1NmRmOTI2YWJk
NDI4YzAxM2MzMzQxNjI3NDYKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9nZW5l
cmF0b3ItZnJhbWUtZW1wdHkuanMKQEAgLTAsMCArMSwzNCBAQAorZnVuY3Rpb24gc2hvdWxkVGhy
b3coZnVuYywgZXJyb3JNZXNzYWdlKSB7CisgICAgdmFyIGVycm9yVGhyb3duID0gZmFsc2U7Cisg
ICAgdmFyIGVycm9yID0gbnVsbDsKKyAgICB0cnkgeworICAgICAgICBmdW5jKCk7CisgICAgfSBj
YXRjaCAoZSkgeworICAgICAgICBlcnJvclRocm93biA9IHRydWU7CisgICAgICAgIGVycm9yID0g
ZTsKKyAgICB9CisgICAgaWYgKCFlcnJvclRocm93bikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9y
KCdub3QgdGhyb3duJyk7CisgICAgaWYgKFN0cmluZyhlcnJvcikgIT09IGVycm9yTWVzc2FnZSkK
KyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgZXJyb3I6ICR7U3RyaW5nKGVycm9yKX1gKTsK
K30KKworc2hvdWxkVGhyb3coZnVuY3Rpb24gKCkgeworICAgIGZ1bmN0aW9uICpmaWIoZmxhZykK
KyAgICB7CisgICAgICAgIGxldCBhID0gMTsKKyAgICAgICAgbGV0IGIgPSAxOworICAgICAgICB5
aWVsZCA0MjsKKyAgICAgICAgaWYgKGZsYWcpCisgICAgICAgICAgICByZXR1cm4gYzsKKyAgICAg
ICAgbGV0IGMgPSA1MDA7CisgICAgfQorCisgICAgbGV0IHZhbHVlID0gMDsKKyAgICBmb3IgKGxl
dCBpID0gMDsgaSA8IDFlNDsgKytpKSB7CisgICAgICAgIGZvciAobGV0IHYgb2YgZmliKGZhbHNl
KSkgeworICAgICAgICB9CisgICAgfQorICAgIGZvciAobGV0IHYgb2YgZmliKHRydWUpKSB7Cisg
ICAgfQorfSwgYFJlZmVyZW5jZUVycm9yOiBDYW5ub3QgYWNjZXNzIHVuaW5pdGlhbGl6ZWQgdmFy
aWFibGUuYCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItcmVkdWNlZC1z
YXZlLXBvaW50LXB1dC10by1zY29wZS5qcyBiL0pTVGVzdHMvc3RyZXNzL2dlbmVyYXRvci1yZWR1
Y2VkLXNhdmUtcG9pbnQtcHV0LXRvLXNjb3BlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMwYzc1ZmE0OTE0M2Mx
N2JlMTRmMzI4MWUzZjY1NDM0ZjM1MTM5ZTgKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0
cmVzcy9nZW5lcmF0b3ItcmVkdWNlZC1zYXZlLXBvaW50LXB1dC10by1zY29wZS5qcwpAQCAtMCww
ICsxLDI4IEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYg
KGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIHZhbHVl
OiAke1N0cmluZyhhY3R1YWwpfWApOworfQorCitmdW5jdGlvbiBlcnJvcigpCit7CisgICAgdGhy
b3cgIm9rIjsKK30KKworZnVuY3Rpb24qIGdlbigpCit7CisgICAgdmFyIHZhbHVlID0gNDI7Cisg
ICAgdHJ5IHsKKyAgICAgICAgeWllbGQgMzAwOworICAgICAgICB2YWx1ZSA9IDUwMDsKKyAgICAg
ICAgZXJyb3IoKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIHlpZWxkIDQyOworICAgICAg
ICByZXR1cm4gdmFsdWU7CisgICAgfQorICAgIHJldHVybiAyMDA7Cit9CisKK3ZhciBnID0gZ2Vu
KCk7CitzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgMzAwKTsKK3Nob3VsZEJlKGcubmV4dCgpLnZh
bHVlLCA0Mik7CitzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgNTAwKTsKZGlmZiAtLWdpdCBhL0pT
VGVzdHMvc3RyZXNzL2dlbmVyYXRvci10cmFuc2Zlci1yZWdpc3Rlci1iZXlvbmQtbXV0aXBsZS15
aWVsZHMuanMgYi9KU1Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItdHJhbnNmZXItcmVnaXN0ZXItYmV5
b25kLW11dGlwbGUteWllbGRzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZlMjA4ZjU4MTI5NmY5YWUwOGE2YmZi
Mzk4YjQ4MjI1NzQyZDZiNzgKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9nZW5l
cmF0b3ItdHJhbnNmZXItcmVnaXN0ZXItYmV5b25kLW11dGlwbGUteWllbGRzLmpzCkBAIC0wLDAg
KzEsMTggQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAo
YWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6
ICcgKyBhY3R1YWwpOworfQorCisKK2Z1bmN0aW9uICpnZW4oKQoreworICAgIHZhciB0ZXN0ID0g
NDI7CisgICAgeWllbGQgMzI7CisgICAgeWllbGQgMzM7CisgICAgeWllbGQgdGVzdDsKK30KKwor
dmFyIGcgPSBnZW4oKTsKK3Nob3VsZEJlKGcubmV4dCgpLnZhbHVlLCAzMik7CitzaG91bGRCZShn
Lm5leHQoKS52YWx1ZSwgMzMpOworc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIDQyKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>287015</attachid>
            <date>2016-08-25 14:18:29 -0700</date>
            <delta_ts>2016-08-25 14:27:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-152723-20160825141627.patch</filename>
            <type>text/plain</type>
            <size>204667</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA0OTUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
ODg4NTQ1MDJhODY4NzA3YmJkOTdmOWZmODhlOTQwMzcxYjFmMzczLi5mZDA0Mjk2ZmE4MGFkMDY1
NGQ4NGM4ZTRiYmMwYzBkMDZlZWNmMjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMjIgQEAKKzIwMTYtMDgtMjUgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0RGR11bRlRMXSBJbXBsZW1lbnQgRVM2IEdlbmVyYXRvcnMgaW4g
REZHIC8gRlRMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNTI3MjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUaGlzIHBhdGNoIGludHJvZHVjZXMgREZHIGFuZCBGVEwgc3VwcG9ydCBmb3IgRVM2IGdlbmVy
YXRvcnMuCisgICAgICAgIEVTNiBnZW5lcmF0b3IgaXMgY29tcGlsZWQgYnkgdGhlIEJ5dGVjb2Rl
R2VuZXJhdG9yLiBCdXQgYXQgdGhlIGxhc3QgcGhhc2UsIEJ5dGVjb2RlR2VuZXJhdG9yIHBlcmZv
cm1zICJnZW5lcmF0b3JpZmljYXRpb24iIG9udG8gdGhlIHVubGlua2VkIGNvZGUuCisgICAgICAg
IEluIEJ5dGVjb2RlR2VuZXJhdG9yIHBoYXNlLCB3ZSBqdXN0IGVtaXQgb3BfeWllbGQgZm9yIGVh
Y2ggeWllbGQgcG9pbnQuIEFuZCB3ZSBkb24ndCBlbWl0IGFueSBnZW5lcmF0b3IgcmVsYXRlZCBz
d2l0Y2gsIHNhdmUsIGFuZCByZXN1bWUgc2VxdWVuY2VzCisgICAgICAgIGhlcmUuIFRob3NlIGFy
ZSBlbWl0dGVkIGJ5IHRoZSBnZW5lcmF0b3JpZmljYXRpb24gcGhhc2UuCisKKyAgICAgICAgU28g
dGhlIGdyYXBoIGlzIHN1cGVyIHNpbXBsZSEgQmVmb3JlIHRoZSBnZW5lcmF0b3JpZmljYXRpb24s
IHRoZSBncmFwaCBsb29rcyBsaWtlIHRoaXMuCisKKyAgICAgICAgICAgICBvcF9lbnRlciAtPiAu
Li4uLi4gLT4gb3BfeWllbGQgLT4gLi4uLi4gLT4gb3BfeWllbGQgLT4gLi4uCisKKyAgICAgICAg
Um91Z2hseSBzcGVha2luZywgaW4gdGhlIGdlbmVyYXRvcmlmaWNhdGlvbiBwaGFzZSwgd2UgdHVy
biBvdXQgd2hpY2ggdmFyaWFibGVzIHNob3VsZCBiZSBzYXZlZCBhbmQgcmVzdW1lZCBhdCBlYWNo
IG9wX3lpZWxkLgorICAgICAgICBUaGlzIGlzIGRvbmUgYnkgbGl2ZW5lc3MgYW5hbHlzaXMuIEFm
dGVyIHRoYXQsIHdlIGNvbnZlcnQgb3BfeWllbGQgdG8gdGhlIHNlcXVlbmNlIG9mICJvcF9wdXRf
dG9fc2NvcGUiLCAib3BfcmV0IiwgYW5kICJvcF9nZXRfZnJvbV9zY29wZSIuCisgICAgICAgIG9w
X3B1dF90b19zY29wZSBhbmQgb3BfZ2V0X2Zyb21fc2NvcGUgc2VxdWVuY2VzIGFyZSBjb3JyZXNw
b25kaW5nIHRvIHRoZSBzYXZlIGFuZCByZXN1bWUgc2VxdWVuY2VzLiBXZSBzZXQgdXAgdGhlIHNj
b3BlIGZvciB0aGUgZ2VuZXJhdG9yIGZyYW1lIGFuZAorICAgICAgICBwZXJmb3JtIG9wX3B1dF90
b19zY29wZSBhbmQgb3BfZ2V0X2Zyb21fc2NvcGUgb250byBpdC4gVGhlIGxpdmUgcmVnaXN0ZXJz
IGFyZSBzYXZlZCBhbmQgcmVzdW1lZCBvdmVyIHRoZSBnZW5lcmF0b3IncyBuZXh0KCkgY2FsbHMg
YnkgdXNpbmcgdGhpcworICAgICAgICBzcGVjaWFsIGdlbmVyYXRvciBmcmFtZSBzY29wZS4gQW5k
IHdlIGFsc28gc2V0IHVwIHRoZSBnbG9iYWwgc3dpdGNoIGZvciB0aGUgZ2VuZXJhdG9yLgorCisg
ICAgICAgIEluIHRoZSBnZW5lcmF0b3JpZmljYXRpb24gcGhhc2UsCisKKyAgICAgICAgMS4gV2Ug
Y29uc3RydWN0IHRoZSBCeXRlY29kZUdyYXBoIGZyb20gdGhlIHVubGlua2VkIGluc3RydWN0aW9u
cy4gVGhpcyBjb25zdHJ1Y3RzIHRoZSBiYXNpYyBibG9ja3MsIGFuZCBpdCBpcyB1c2VkIGluIHRo
ZSBzdWJzZXF1ZW50IGFuYWx5c2lzLgorICAgICAgICAyLiBXZSBwZXJmb3JtIHRoZSBhbmFseXNp
cyBvbnRvIHRoZSB1bmxpbmtlZCBjb2RlLiBXZSBleHRyYWN0IHRoZSBsaXZlIHZhcmlhYmxlcyBh
dCBlYWNoIG9wX3lpZWxkLgorICAgICAgICAzLiBXZSBpbnNlcnQgdGhlIGdldF9mcm9tX3Njb3Bl
IGFuZCBwdXRfdG9fc2NvcGUgYXQgZWFjaCBvcF95aWVsZC4gV2hpY2ggcmVnaXN0ZXJzIHNob3Vs
ZCBiZSBzYXZlZCBhbmQgcmVzdW1lZCBpcyBvZmZlcmVkIGJ5ICgyKS4KKyAgICAgICAgICAgVGhl
biwgY2xpcCB0aGUgb3BfeWllbGQgdGhlbXNlbHZlcy4gQW5kIHdlIGFsc28gaW5zZXJ0IHRoZSBz
d2l0Y2hfaW1tLiBUaGUganVtcCB0YXJnZXRzIG9mIHRoaXMgc3dpdGNoIGFyZSBqdXN0IGFmdGVy
IHRoaXMgb3Bfc3dpdGNoX2ltbSBhbmQgZWFjaCBvcF95aWVsZCBwb2ludC4KKworICAgICAgICBP
bmUgaW50ZXJlc3RpbmcgcG9pbnQgaXMgdGhlIHRyeS1yYW5nZS4gV2Ugc3BsaXQgdGhlIHRyeS1y
YW5nZSBhdCB0aGUgb3BfeWllbGQgcG9pbnQgaW4gQnl0ZWNvZGVHZW5lcmF0b3IgcGhhc2UuCisg
ICAgICAgIFRoaXMgZHJvcHMgdGhlIGhhY2t5IHRoaW5nIHRoYXQgaXMgaW50cm9kdWNlZCBpbiBb
MV0uCisgICAgICAgIElmIHRoZSB0cnktcmFuZ2UgY292ZXJzIHRoZSByZXN1bWUgc2VxdWVuY2Vz
LCB0aGUgZXhjZXB0aW9uIGhhbmRsZXIncyB1c2UtcmVnaXN0ZXJzIGFyZSBpbmNvcnJlY3RseSB0
cmFuc2ZlcnJlZCB0byB0aGUgZW50cnkgYmxvY2suCisgICAgICAgIEZvciBleGFtcGxlLAorCisg
ICAgICAgICAgICBoYW5kbGVyIHVzZXMgcjIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnktcmFuZ2UKKyAgICAgICAgICAgIGxh
YmVsOihlbnRyeSBibG9jayBjYW4ganVtcCBoZXJlKSAgICAgICAgICAgICAgICAgXgorICAgICAg
ICAgICAgICAgIHIxID0gZ2V0X2Zyb21fc2NvcGUgIyByZXN1bWUgc2VxdWVuY2Ugc3RhcnRzICB8
IHVzZSByMiBpcyB0cmFuc2ZlcnJlZCB0byB0aGUgZW50cnkgYmxvY2shCisgICAgICAgICAgICAg
ICAgcjIgPSBnZXRfZnJvbV9zY29wZSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAg
ICAgICAgICAgICBzdGFydHMgdXN1YWwgc2VxdWVuY2VzICAgICAgICAgICAgICAgICAgICAgICAg
fAorICAgICAgICAgICAgICAgIC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB8CisKKyAgICAgICAgSGFuZGxlcidzIHIyIHVzZSBzaG91bGQgYmUgY29uc2lkZXJl
ZCBhdCB0aGUgYHIxID0gZ2V0X2Zyb21fc2NvcGVgIHBvaW50LgorICAgICAgICBQcmV2aW91c2x5
LCB3ZSBoYW5kbGUgdGhpcyBlZGdlIGNhc2UgYnkgdHJlYXRpbmcgb3BfcmVzdW1lIHNwZWNpYWxs
eSBpbiB0aGUgbGl2ZW5lc3MgYW5hbHlzaXNbMV0uCisgICAgICAgIFRvIGRyb3AgdGhpcyB3b3Jr
YXJvdW5kLCB3ZSBzcGxpdCB0aGUgdHJ5LXJhbmdlIG5vdCB0byBjb3ZlciB0aGlzIHJlc3VtZSBz
ZXF1ZW5jZS4KKworICAgICAgICAgICAgaGFuZGxlciB1c2VzIHIyCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5LXJhbmdlCisg
ICAgICAgICAgICBsYWJlbDooZW50cnkgYmxvY2sgY2FuIGp1bXAgaGVyZSkKKyAgICAgICAgICAg
ICAgICByMSA9IGdldF9mcm9tX3Njb3BlICMgcmVzdW1lIHNlcXVlbmNlIHN0YXJ0cworICAgICAg
ICAgICAgICAgIHIyID0gZ2V0X2Zyb21fc2NvcGUKKyAgICAgICAgICAgICAgICBzdGFydHMgdXN1
YWwgc2VxdWVuY2VzICAgICAgICAgICAgICAgICAgICAgICAgXiB0cnktcmFuZ2Ugc2hvdWxkIHN0
YXJ0IGZyb20gaGVyZS4KKyAgICAgICAgICAgICAgICAuLi4gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfAorCisgICAgICAgIE9LLiBMZXQncyBzaG93IHRoZSBkZXRh
aWxlZCBleGFtcGxlLgorCisgICAgICAgICAgICAxLiBGaXJzdCwgdGhlcmUgaXMgdGhlIG5vcm1h
bCBieXRlY29kZSBzZXF1ZW5jZS4gSGVyZSwgfCByZXByZXNlbnRzIHRoZSBvZmZzZXRzLCBhbmQg
W10gcmVwcmVzZW50cyB0aGUgYnl0ZWNvZGVzLgorCisgICAgICAgICAgICAgICAgYnl0ZWNvZGVz
ICAgfCBbIF0gfCBbIF0gfCBbIF0gfCBbIF0gfCBbIF0gfCBbIF0gfAorICAgICAgICAgICAgICAg
IHRyeS1yYW5nZSAgIDwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT4KKworICAg
ICAgICAgICAgMi4gV2hlbiB3ZSBlbWl0IHRoZSBvcF95aWVsZCBpbiB0aGUgYnl0ZWNvZGUgZ2Vu
ZXJhdG9yLCB3ZSBjYXJlZnVsbHkgc3BsaXQgdGhlIHRyeS1yYW5nZS4KKworICAgICAgICAgICAg
ICAgIGJ5dGVjb2RlcyAgIHwgWyBdIHwgWyBdIHwgW29wX3lpZWxkXSB8IFsgXSB8IFsgXSB8IFsg
XSB8CisgICAgICAgICAgICAgICAgdHJ5LXJhbmdlICAgPC0tLS0tLS0tLS0tPiAgICAgICAgICAg
IDwtLS0tLS0tLS0tLS0tLS0tLT4KKworICAgICAgICAgICAgMy4gQW5kIGluIHRoZSBnZW5lcmF0
b3JpZmljYXRpb24gcGhhc2UsIHdlIGluc2VydCB0aGUgc3dpdGNoJ3MganVtcCB0YXJnZXQgYW5k
IHNhdmUgJiByZXN1bWUgc2VxdWVuY2VzLiBBbmQgd2UgYWxzbyBkcm9wIG9wX3lpZWxkLgorCisg
ICAgICAgICAgICAgICAgSW5zZXJ0IHNhdmUgc2VxIGJlZm9yZSBvcF95aWVsZC4gICAgSW5zZXJ0
IHJlc3VtZSBzZXEgYmVmb3JlIHRoZSBieXRlY29kZSB0aGF0IGlzIGp1c3QgYWZ0ZXIgb3BfeWll
bGQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ICAgICAgICAgICAg
dgorICAgICAgICAgICAgICAgIGJ5dGVjb2RlcyAgIHwgWyBdIHwgWyBdIHwgW29wX3lpZWxkXSB8
IFsgXSB8IFsgXSB8IFsgXSB8CisgICAgICAgICAgICAgICAgdHJ5LXJhbmdlICAgPC0tLS0tLS0t
LS0tPiAgICAgXiAgICAgIDwtLS0tLS0tLS0tLS0tLS0tLT4KKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBeICAgICB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEp1bXAgdG8gaGVyZS4gICAgRHJvcCB0aGlzIG9wX3lpZWxkLgorCisgICAgICAgICAgICA0LiBU
aGUgZmluYWwgbGF5b3V0IGlzIHRoZSBmb2xsb3dpbmcuCisKKyAgICAgICAgICAgICAgICBieXRl
Y29kZXMgICB8IFsgXSB8IFsgXVtzYXZlIHNlcV1bb3BfcmV0XSB8IFtyZXN1bWUgc2VxXSB8IFsg
XSB8IFsgXSB8IFsgXSB8CisgICAgICAgICAgICAgICAgdHJ5LXJhbmdlICAgPC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tPiAgICAgICAgICAgICAgIDwtLS0tLS0tLS0tLS0tLS0tPgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4K
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBKdW1wIHRvIGhl
cmUuCisKKyAgICAgICAgVGhlIHJld3JpdGluZyBkb25lIGJ5IHRoZSBCeXRlY29kZVJld3JpdGVy
IGlzIGV4ZWN1dGVkIGluIGEgYmF0Y2ggbWFubmVyLiBTaW5jZSB0aGVzZSBtb2RpZmljYXRpb24g
Y2hhbmdlcyB0aGUgYmFzaWMgYmxvY2tzIGFuZCBzaXplIG9mIHVubGlua2VkIGluc3RydWN0aW9u
cywKKyAgICAgICAgQnl0ZWNvZGVSZXdyaXRlciBhbHNvIHBlcmZvcm1zIHRoZSBvZmZzZXQgYWRq
dXN0bWVudCBmb3IgVW5saW5rZWRDb2RlQmxvY2suIFNvLCB0aGlzIHJld3JpdGluZyBpcyBwZXJm
b3JtZWQgb250byB0aGUgQnl0ZWNvZGVHcmFwaCByYXRoZXIgdGhhbiBCeXRlY29kZUJhc2ljQmxv
Y2suCisgICAgICAgIFRoZSByZWFzb24gd2h5IHdlIHRha2UgdGhpcyBkZXNpZ24gaXMgc2ltcGxl
OiB3ZSBkb24ndCB3YW50IHRvIG5ld2x5IGNyZWF0ZSB0aGUgYmFzaWMgYmxvY2tzIGFuZCBvcGNv
ZGVzIGZvciB0aGlzIGVhcmx5IHBoYXNlIGxpa2UgREZHLiBJbnN0ZWFkLCB3ZSBwZXJmb3JtIHRo
ZQorICAgICAgICBtb2RpZmljYXRpb24gYW5kIGFkanVzdG1lbnQgdG8gdGhlIHVubGlua2VkIGlu
c3RydWN0aW9ucyBhbmQgVW5saW5rZWRDb2RlQmxvY2sgaW4gYSBpbi1wbGFjZSBtYW5uZXIuCisK
KyAgICAgICAgQnl0ZWNvZGUgcmV3cml0aW5nIGZ1bmN0aW9uYWxpdHkgaXMgb2ZmZXJlZCBieSBC
eXRlY29kZVJld3JpdGVyLiBCeXRlY29kZVJld3JpdGVyIGFsbG93cyB1cyB0byBpbnNlcnQgYW55
IGJ5dGVjb2RlcyB0byBhbnkgcGxhY2VzCisgICAgICAgIGluIGEgaW4tcGxhY2UgbWFubmVyLiBC
eXRlY29kZVJld3JpdGVyIGhhbmRsZXMgdGhlIG9yaWdpbmFsIGJ5dGVjb2RlIG9mZnNldHMgYXMg
bGFiZWxzLiBBbmQgeW91IGNhbiBpbnNlcnQgYnl0ZWNvZGVzIGJlZm9yZSBhbmQgYWZ0ZXIKKyAg
ICAgICAgdGhlc2UgbGFiZWxzLiBZb3UgY2FuIGFsc28gaW5zZXJ0IGFueSBqdW1wcyB0byBhbnkg
cGxhY2VzLiBXaGVuIHlvdSBpbnNlcnQganVtcHMsIHlvdSBuZWVkIHRvIHNwZWNpZnkganVtcCB0
YXJnZXQgd2l0aCB0aGlzIGxhYmVscy4KKyAgICAgICAgVGhlc2UgbGFiZWxzIChvcmlnaW5hbCBi
eXRlY29kZSBvZmZzZXRzKSBhcmUgYXV0b21hdGljYWxseSBjb252ZXJ0ZWQgdG8gdGhlIGFwcHJv
cHJpYXRlIG9mZnNldHMgYnkgQnl0ZWNvZGVSZXdyaXRlci4KKworICAgICAgICBBZnRlciB0aGF0
IHBoYXNlLCB0aGUgZGF0YSBmbG93IG9mIHRoZSBnZW5lcmF0b3Itc2F2ZWQtYW5kLXJlc3VtZWQt
cmVnaXN0ZXJzIGFyZSBleHBsaWNpdGx5IHJlcHJlc2VudGVkIGJ5IHRoZSBnZXRfZnJvbV9zY29w
ZSBhbmQgcHV0X3RvX3Njb3BlLgorICAgICAgICBBbmQgdGhlIHN3aXRjaCBpcyBpbnNlcnRlZCB0
byByZXByZXNlbnQgdGhlIGFjdHVhbCBjb250cm9sIGZsb3cgZm9yIHRoZSBnZW5lcmF0b3IuIEFu
ZCBvcF95aWVsZCBpcyByZW1vdmVkLiBTaW5jZSB3ZSB1c2UgdGhlIGV4aXN0aW5nIGJ5dGVjb2Rl
cyAob3Bfc3dpdGNoX2ltbSwgb3BfcHV0X3RvX3Njb3BlCisgICAgICAgIG9wX3JldCwgYW5kIG9w
X2dldF9mcm9tX3Njb3BlKSwgREZHIGFuZCBGVEwgY2hhbmdlcyBhcmUgbm90IG5lY2Vzc2FyeS4g
VGhpcyBwYXRjaCBhbHNvIGRyb3BzIGRhdGEgc3RydWN0dXJlcyBhbmQgaW1wbGVtZW50YXRpb25z
IGZvciB0aGUgb2xkIGdlbmVyYXRvciwKKyAgICAgICAgb3BfcmVzdW1lLCBvcF9zYXZlIGltcGxl
bWVudGF0aW9ucyBhbmQgR2VuZXJhdG9yRnJhbWUuCisKKyAgICAgICAgTm90ZSB0aGF0IHRoaXMg
cGF0Y2ggZG9lcyBub3QgbGV2ZXJhZ2UgdGhlIHJlY2VudCBtdWx0aSBlbnRyeXBvaW50cyBzdXBw
b3J0IGluIEIzLiBBZnRlciB0aGlzIHBhdGNoIGlzIGludHJvZHVjZWQsIHdlIHdpbGwgc3VibWl0
IGEgbmV3IHBhdGNoIHRoYXQgbGV2ZXJhZ2VzIHRoZSBtdWx0aQorICAgICAgICBlbnRyeXBvaW50
cyBmb3IgZ2VuZXJhdG9yJ3MgcmVzdW1lIGFuZCBzZWVzIHRoZSBwZXJmb3JtYW5jZSBnYWluLgor
CisgICAgICAgIE1pY3JvYmVuY2htYXJrcyByZWxhdGVkIHRvIGdlbmVyYXRvcnMgc2hvdyB1cCB0
byAyLjl4IGltcHJvdmVtZW50cy4KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBCYXNlbGluZSAgICAgICAgICAgICAgICAgIFBhdGNoZWQK
KworICAgICAgICAgICAgZ2VuZXJhdG9yLWZpYiAgICAgICAgICAgICAgICAgICAgICAgICAgMTAy
LjAxMTYrLTMuMjg4MCAgICAgXiAgICAgMzQuOTY3MCstMC4yMjIxICAgICAgICBeIGRlZmluaXRl
bHkgMi45MTc0eCBmYXN0ZXIKKyAgICAgICAgICAgIGdlbmVyYXRvci1zdW5zcGlkZXItYWNjZXNz
LW5zaWV2ZSAgICAgICAgNS44NTk2Ky0wLjAzNzEgICAgIF4gICAgICA0LjkwNTErLTAuMDcyMCAg
ICAgICAgXiBkZWZpbml0ZWx5IDEuMTk0NnggZmFzdGVyCisgICAgICAgICAgICBnZW5lcmF0b3It
d2l0aC1zZXZlcmFsLXR5cGVzICAgICAgICAgICAzMzIuMTQ3OCstNC4yNDI1ICAgICBeICAgIDEy
NC42NjQyKy0yLjQ4MjYgICAgICAgIF4gZGVmaW5pdGVseSAyLjY2NDN4IGZhc3RlcgorCisgICAg
ICAgICAgICA8Z2VvbWV0cmljPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTguMjk5OCst
MC43NzU4ICAgICBeICAgICAyNy43NDI1Ky0wLjI1NzcgICAgICAgIF4gZGVmaW5pdGVseSAyLjEw
MTV4IGZhc3RlcgorCisgICAgICAgIEluIEVTNlNhbXBsZUJlbmNoJ3MgQmFzaWMsIHdlIGNhbiBv
YnNlcnZlIDQxJSBpbXByb3ZlbWVudCAoTWFjYm9vayBQcm8pLgorCisgICAgICAgICAgICBCYXNl
bGluZToKKyAgICAgICAgICAgICAgICBHZW9tZXRyaWMgTWVhbiBSZXN1bHQ6IDEzMy41NSBtcyAr
LSA0LjQ5IG1zCisKKyAgICAgICAgICAgICAgICBCZW5jaG1hcmsgICAgRmlyc3QgSXRlcmF0aW9u
ICAgICAgICBXb3JzdCAyJSAgICAgICAgICAgICAgIFN0ZWFkeSBTdGF0ZQorICAgICAgICAgICAg
ICAgIEFpciAgICAgICAgICA1NC4wMyBtcyArLSA3LjUxIG1zICAgIDI5LjA2IG1zICstIDMuMTMg
bXMgICAgMjI3Ni41OSBtcyArLSA2MS4xNyBtcworICAgICAgICAgICAgICAgIEJhc2ljICAgICAg
ICAzMC4xOCBtcyArLSAxLjg2IG1zICAgIDE4Ljg1IG1zICstIDAuNDUgbXMgICAgMjg1MS4xNiBt
cyArLSA0MS44NyBtcworCisgICAgICAgICAgICBQYXRjaGVkOgorICAgICAgICAgICAgICAgIEdl
b21ldHJpYyBNZWFuIFJlc3VsdDogMTIxLjc4IG1zICstIDMuOTYgbXMKKworICAgICAgICAgICAg
ICAgIEJlbmNobWFyayAgICBGaXJzdCBJdGVyYXRpb24gICAgICAgIFdvcnN0IDIlICAgICAgICAg
ICAgICAgU3RlYWR5IFN0YXRlCisgICAgICAgICAgICAgICAgQWlyICAgICAgICAgIDUyLjA5IG1z
ICstIDYuODkgbXMgICAgMjkuNTkgbXMgKy0gMy4xNiBtcyAgICAyMjM5LjkwIG1zICstIDU0LjYw
IG1zCisgICAgICAgICAgICAgICAgQmFzaWMgICAgICAgIDI5LjI4IG1zICstIDEuNDYgbXMgICAg
MTYuMjYgbXMgKy0gMC42NiBtcyAgICAyMDI1LjE1IG1zICstIDM4LjU2IG1zCisKKyAgICAgICAg
WzFdOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU5MjgxCisKKyAg
ICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJ1aWx0aW5zL0dlbmVyYXRvclByb3RvdHlw
ZS5qczoKKyAgICAgICAgKGdsb2JhbFByaXZhdGUuZ2VuZXJhdG9yUmVzdW1lKToKKyAgICAgICAg
KiBieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUJhc2ljQmxvY2s6OmNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzSW50ZXJuYWwpOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUJhc2ljQmxvY2s6OmNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzKToK
KyAgICAgICAgKEpTQzo6aXNCcmFuY2gpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjppc1VuY29u
ZGl0aW9uYWxCcmFuY2gpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjppc1Rlcm1pbmFsKTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6aXNUaHJvdyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Omxp
bmtCbG9ja3MpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpjb21wdXRlQnl0ZWNvZGVCYXNpY0Js
b2Nrcyk6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmg6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlQmFzaWNCbG9jazo6Ynl0ZWNvZGVPZmZzZXRzKToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVCYXNpY0Jsb2NrOjpzdWNjZXNzb3JzKToKKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVCYXNpY0Jsb2NrOjppbmRleCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlQmFz
aWNCbG9jazo6YWRkU3VjY2Vzc29yKToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUdlbmVy
YXRvcmlmaWNhdGlvbi5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRv
cmlmaWNhdGlvbjo6Qnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24pOgorICAgICAgICAoSlNDOjpC
eXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbjo6Z3JhcGgpOgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUdlbmVyYXRvcmlmaWNhdGlvbjo6eWllbGRzKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5l
cmF0b3JpZmljYXRpb246OmVudGVyUG9pbnQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVy
YXRvcmlmaWNhdGlvbjo6c3RvcmFnZUZvckdlbmVyYXRvckxvY2FsKToKKyAgICAgICAgKEpTQzo6
R2VuZXJhdG9yTGl2ZW5lc3NBbmFseXNpczo6R2VuZXJhdG9yTGl2ZW5lc3NBbmFseXNpcyk6Cisg
ICAgICAgIChKU0M6OkdlbmVyYXRvckxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGVEZWZzRm9yQnl0
ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JMaXZlbmVzc0FuYWx5c2lzOjpj
b21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yTGl2
ZW5lc3NBbmFseXNpczo6cnVuKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3JpZmlj
YXRpb246OnJ1bik6CisgICAgICAgIChKU0M6OnBlcmZvcm1HZW5lcmF0b3JpZmljYXRpb24pOgor
ICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmg6IENvcGllZCBm
cm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlz
aXNJbmxpbmVzLmguCisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVHcmFwaC5oOiBBZGRlZC4K
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHcmFwaDo6Y29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHcmFwaDo6aW5zdHJ1Y3Rpb25zKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHcmFw
aDo6YmFzaWNCbG9ja3NJblJldmVyc2VPcmRlcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR3Jh
cGg6OmJsb2NrQ29udGFpbnNCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
R3JhcGg6OmZpbmRCYXNpY0Jsb2NrRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpC
eXRlY29kZUdyYXBoOjpmaW5kQmFzaWNCbG9ja1dpdGhMZWFkZXJPZmZzZXQpOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUdyYXBoOjpzaXplKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHcmFwaDo6
YXQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdyYXBoOjpvcGVyYXRvcltdKToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHcmFwaDo6YmVnaW4pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdyYXBo
OjplbmQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdyYXBoOjpmaXJzdCk6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlR3JhcGg6Omxhc3QpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdyYXBoPEJs
b2NrPjo6Qnl0ZWNvZGVHcmFwaCk6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpz
b246CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNwcDoKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpCeXRlY29kZUxpdmVuZXNzQW5h
bHlzaXMpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGVE
ZWZzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzQW5h
bHlzaXM6OmNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpCeXRl
Y29kZUxpdmVuZXNzQW5hbHlzaXM6OmdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGVGdWxsTGl2ZW5l
c3MpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGVLaWxs
cyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6ZHVtcFJlc3VsdHMp
OgorICAgICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGUpOgorICAg
ICAgICAoSlNDOjppc1ZhbGlkUmVnaXN0ZXJGb3JMaXZlbmVzcyk6IERlbGV0ZWQuCisgICAgICAg
IChKU0M6OmdldExlYWRlck9mZnNldEZvckJhc2ljQmxvY2spOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjpmaW5kQmFzaWNCbG9ja1dpdGhMZWFkZXJPZmZzZXQpOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjpibG9ja0NvbnRhaW5zQnl0ZWNvZGVPZmZzZXQpOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpmaW5kQmFzaWNCbG9ja0ZvckJ5dGVjb2RlT2Zmc2V0KTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6c3RlcE92ZXJJbnN0cnVjdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OmNvbXB1dGVM
b2NhbExpdmVuZXNzRm9yQnl0ZWNvZGVPZmZzZXQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpj
b21wdXRlTG9jYWxMaXZlbmVzc0ZvckJsb2NrKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpydW5MaXZlbmVzc0ZpeHBvaW50KTogRGVsZXRlZC4KKyAg
ICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuaDoKKyAgICAgICAgKiBi
eXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNJbmxpbmVzLmg6CisgICAgICAgIChKU0M6
OmlzVmFsaWRSZWdpc3RlckZvckxpdmVuZXNzKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZl
bmVzc1Byb3BhZ2F0aW9uPERlcml2ZWRBbmFseXNpcz46OnN0ZXBPdmVySW5zdHJ1Y3Rpb24pOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzUHJvcGFnYXRpb248RGVyaXZlZEFuYWx5c2lz
Pjo6Y29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlTGl2ZW5lc3NQcm9wYWdhdGlvbjxEZXJpdmVkQW5hbHlzaXM+Ojpjb21wdXRlTG9j
YWxMaXZlbmVzc0ZvckJsb2NrKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc1Byb3Bh
Z2F0aW9uPERlcml2ZWRBbmFseXNpcz46OmdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQp
OgorICAgICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzUHJvcGFnYXRpb248RGVyaXZlZEFuYWx5
c2lzPjo6cnVuTGl2ZW5lc3NGaXhwb2ludCk6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVS
ZXdyaXRlci5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpCeXRlY29kZVJld3JpdGVyOjphcHBs
eU1vZGlmaWNhdGlvbik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlUmV3cml0ZXI6OmV4ZWN1dGUp
OgorICAgICAgICAoSlNDOjpCeXRlY29kZVJld3JpdGVyOjphZGp1c3RKdW1wVGFyZ2V0c0luRnJh
Z21lbnQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZVJld3JpdGVyOjppbnNlcnRJbXBsKToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVSZXdyaXRlcjo6YWRqdXN0SnVtcFRhcmdldCk6CisgICAgICAg
ICogYnl0ZWNvZGUvQnl0ZWNvZGVSZXdyaXRlci5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVSZXdyaXRlcjo6SW5zZXJ0aW9uUG9pbnQ6Okluc2VydGlvblBvaW50KToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVSZXdyaXRlcjo6SW5zZXJ0aW9uUG9pbnQ6Om9wZXJhdG9yPCk6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlUmV3cml0ZXI6Okluc2VydGlvblBvaW50OjpvcGVyYXRvcj09KToK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVSZXdyaXRlcjo6SW5zZXJ0aW9uOjpsZW5ndGgpOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZVJld3JpdGVyOjpGcmFnbWVudDo6RnJhZ21lbnQpOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZVJld3JpdGVyOjpGcmFnbWVudDo6YXBwZW5kSW5zdHJ1Y3Rpb24pOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZVJld3JpdGVyOjpCeXRlY29kZVJld3JpdGVyKToKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVSZXdyaXRlcjo6aW5zZXJ0RnJhZ21lbnRCZWZvcmUpOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZVJld3JpdGVyOjppbnNlcnRGcmFnbWVudEFmdGVyKToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVSZXdyaXRlcjo6cmVtb3ZlQnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpC
eXRlY29kZVJld3JpdGVyOjpncmFwaCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlUmV3cml0ZXI6
OmFkanVzdEFic29sdXRlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVSZXdyaXRlcjo6
YWRqdXN0SnVtcFRhcmdldCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlUmV3cml0ZXI6OmNhbGN1
bGF0ZURpZmZlcmVuY2UpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmg6Cisg
ICAgICAgIChKU0M6OmNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlND
Ojpjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKiBieXRlY29kZS9Db2Rl
QmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmR1bXBCeXRlY29kZSk6CisgICAg
ICAgIChKU0M6OkNvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpDb2Rl
QmxvY2s6OmhhbmRsZXJGb3JJbmRleCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6c2hyaW5r
VG9GaXQpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnZhbHVlUHJvZmlsZUZvckJ5dGVjb2Rl
T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpsaXZlbmVzc0FuYWx5c2lzU2xvdyk6
CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6OkNvZGVCbG9j
azo6aXNDb25zdGFudFJlZ2lzdGVySW5kZXgpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Omxp
dmVuZXNzQW5hbHlzaXMpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmxpdmVDYWxsZWVMb2Nh
bHNBdFlpZWxkKTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29kZS9IYW5kbGVySW5mby5oOgor
ICAgICAgICAoSlNDOjpIYW5kbGVySW5mb0Jhc2U6OmhhbmRsZXJGb3JJbmRleCk6CisgICAgICAg
ICogYnl0ZWNvZGUvT3Bjb2RlLmg6CisgICAgICAgIChKU0M6OmlzQnJhbmNoKToKKyAgICAgICAg
KEpTQzo6aXNVbmNvbmRpdGlvbmFsQnJhbmNoKToKKyAgICAgICAgKEpTQzo6aXNUZXJtaW5hbCk6
CisgICAgICAgIChKU0M6OmlzVGhyb3cpOgorICAgICAgICAqIGJ5dGVjb2RlL1ByZWNpc2VKdW1w
VGFyZ2V0cy5jcHA6CisgICAgICAgIChKU0M6OmdldEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZz
ZXQpOgorICAgICAgICAoSlNDOjpjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzSW50ZXJuYWwpOgor
ICAgICAgICAoSlNDOjpjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKToKKyAgICAgICAgKEpTQzo6
cmVjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKToKKyAgICAgICAgKEpTQzo6ZmluZEp1bXBUYXJn
ZXRzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAqIGJ5dGVjb2RlL1ByZWNpc2VKdW1wVGFy
Z2V0cy5oOgorICAgICAgICAqIGJ5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0c0lubGluZXMuaDog
QWRkZWQuCisgICAgICAgIChKU0M6OmV4dHJhY3RTdG9yZWRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2Rl
T2Zmc2V0KToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHA6CisgICAg
ICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjpoYW5kbGVyRm9yQnl0ZWNvZGVPZmZzZXQpOgor
ICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6aGFuZGxlckZvckluZGV4KToKKyAgICAg
ICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OmFwcGx5TW9kaWZpY2F0aW9uKToKKyAgICAgICAg
KiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpVbmxpbmtlZFN0
cmluZ0p1bXBUYWJsZTo6b2Zmc2V0Rm9yVmFsdWUpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENv
ZGVCbG9jazo6bnVtQ2FsbGVlTG9jYWxzKToKKyAgICAgICAgKiBieXRlY29kZS9WaXJ0dWFsUmVn
aXN0ZXIuaDoKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUpOgorICAgICAgICAoSlND
OjpCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdENvbXBsZXhQb3BTY29wZXMpOgorICAgICAgICAoSlNDOjpw
cmVwYXJlSnVtcFRhYmxlRm9yU3RyaW5nU3dpdGNoKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXRZaWVsZFBvaW50KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXRTYXZlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRSZXN1bWUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdEdlbmVyYXRvclN0YXRlTGFiZWwpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUdlbmVyYXRvcjo6YmVnaW5HZW5lcmF0b3IpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCeXRl
Y29kZUdlbmVyYXRvcjo6ZW5kR2VuZXJhdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29t
cGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0
b3I6OmdlbmVyYXRvclN0YXRlUmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVy
YXRvcjo6Z2VuZXJhdG9yVmFsdWVSZWdpc3Rlcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2Vu
ZXJhdG9yOjpnZW5lcmF0b3JSZXN1bWVNb2RlUmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpCeXRl
Y29kZUdlbmVyYXRvcjo6Z2VuZXJhdG9yRnJhbWVSZWdpc3Rlcik6CisgICAgICAgICogYnl0ZWNv
bXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uTm9kZTo6ZW1p
dEJ5dGVjb2RlKToKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICog
aW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlNDOjpmaW5kRXhjZXB0aW9u
SGFuZGxlcik6CisgICAgICAgIChKU0M6OkdldENhdGNoSGFuZGxlckZ1bmN0b3I6Om9wZXJhdG9y
KCkpOgorICAgICAgICAoSlNDOjpVbndpbmRGdW5jdG9yOjpvcGVyYXRvcigpKToKKyAgICAgICAg
KiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5oOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVy
cHJldGVySW5saW5lcy5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmguCisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpnZXRP
cGNvZGVJRCk6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJp
dmF0ZUNvbXBpbGVNYWluUGFzcyk6CisgICAgICAgICogaml0L0pJVC5oOgorICAgICAgICAqIGpp
dC9KSVRPcGNvZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3NhdmUpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcmVzdW1lKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbToKKyAgICAgICAgKiBwYXJzZXIvUGFy
c2VyLmNwcDoKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlSW5uZXIpOgor
ICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VHZW5lcmF0b3JGdW5jdGlvblNv
dXJjZUVsZW1lbnRzKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OmNyZWF0ZUdl
bmVyYXRvclBhcmFtZXRlcnMpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuaDoKKyAgICAgICAg
KiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OlNMT1dfUEFUSF9E
RUNMKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5oOgorICAg
ICAgICAqIHJ1bnRpbWUvR2VuZXJhdG9yRnJhbWUuY3BwOiBSZW1vdmVkLgorICAgICAgICAoSlND
OjpHZW5lcmF0b3JGcmFtZTo6R2VuZXJhdG9yRnJhbWUpOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpHZW5lcmF0b3JGcmFtZTo6ZmluaXNoQ3JlYXRpb24pOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlU3RydWN0dXJlKTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6R2VuZXJhdG9yRnJhbWU6OmNyZWF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkdlbmVy
YXRvckZyYW1lOjpzYXZlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6
OnJlc3VtZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjp2aXNpdENo
aWxkcmVuKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0dlbmVyYXRvckZyYW1lLmg6IFJl
bW92ZWQuCisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpsb2NhbHMpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6bG9jYWxBdCk6IERlbGV0ZWQuCisgICAgICAg
IChKU0M6OkdlbmVyYXRvckZyYW1lOjpvZmZzZXRPZkxvY2Fscyk6IERlbGV0ZWQuCisgICAgICAg
IChKU0M6OkdlbmVyYXRvckZyYW1lOjphbGxvY2F0aW9uU2l6ZUZvckxvY2Fscyk6IERlbGV0ZWQu
CisgICAgICAgICogcnVudGltZS9KU0dlbmVyYXRvckZ1bmN0aW9uLmg6CisgICAgICAgICogcnVu
dGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpWTSk6CisgICAgICAgICogcnVudGltZS9W
TS5oOgorCiAyMDE2LTA4LTI0ICBCZW5qYW1pbiBQb3VsYWluICA8YmVuamFtaW5Ad2Via2l0Lm9y
Zz4KIAogICAgICAgICBbSlNDXSBNYWtlIEZSb3VuZCB3b3JrIHdpdGggYW55IHR5cGUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXgg
YmUwOTAzOGZjYjQ5OTBjZDBhMDEwZDJlOGMwZjA3MzY4NTYwMzhmYy4uYWVlNDc4MTg2NjVhNTQ2
ZjUwM2QwMTVmZDNiNTZkMzhiMTEyYWQ0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxNi0wOC0y
NSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbREZH
XVtGVExdIEltcGxlbWVudCBFUzYgR2VuZXJhdG9ycyBpbiBERkcgLyBGVEwKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MjcyMworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL0Zhc3RCaXRWZWN0b3Iu
aDoKKyAgICAgICAgKFdURjo6RmFzdEJpdFZlY3Rvcjo6RmFzdEJpdFZlY3Rvcik6CisKIDIwMTYt
MDgtMjQgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAg
W0pTQ10gTW92ZSBnZW5lcmljIGRhdGEgc3RydWN0dXJlcyBvdXQgb2YgQjMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCAzZWQ1NGI4MTcyNjgxOGEwODg0Y2RjMzI1Y2YxN2Rk
MjViMmViZTYxLi4zYmVmNDJjZjgyYWQwZTc3ZDg1NjQwMWM5MzcwZGUwMTMwODUyMzkwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0xODEsNiArMTgxLDggQEAgc2V0KEph
dmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBieXRlY29kZS9BcnJheUFsbG9jYXRpb25Qcm9maWxl
LmNwcAogICAgIGJ5dGVjb2RlL0FycmF5UHJvZmlsZS5jcHAKICAgICBieXRlY29kZS9CeXRlY29k
ZUJhc2ljQmxvY2suY3BwCisgICAgYnl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24u
Y3BwCisgICAgYnl0ZWNvZGUvQnl0ZWNvZGVSZXdyaXRlci5jcHAKICAgICBieXRlY29kZS9CeXRl
Y29kZUludHJpbnNpY1JlZ2lzdHJ5LmNwcAogICAgIGJ5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NB
bmFseXNpcy5jcHAKICAgICBieXRlY29kZS9DYWxsRWRnZS5jcHAKQEAgLTY2MSw3ICs2NjMsNiBA
QCBzZXQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIHJ1bnRpbWUvRnVuY3Rpb25IYXNFeGVj
dXRlZENhY2hlLmNwcAogICAgIHJ1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwCiAgICAgcnVu
dGltZS9GdW5jdGlvblJhcmVEYXRhLmNwcAotICAgIHJ1bnRpbWUvR2VuZXJhdG9yRnJhbWUuY3Bw
CiAgICAgcnVudGltZS9HZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcAogICAgIHJ1bnRp
bWUvR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9HZW5lcmF0b3JQ
cm90b3R5cGUuY3BwCkBAIC05NzksNiArOTgwLDEwIEBAIGFkZF9jdXN0b21fY29tbWFuZCgKICAg
ICBDT01NQU5EICR7UFlUSE9OX0VYRUNVVEFCTEV9ICR7SkFWQVNDUklQVENPUkVfRElSfS9nZW5l
cmF0ZS1ieXRlY29kZS1maWxlcyAtLWJ5dGVjb2Rlc19oICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFT
Q1JJUFRDT1JFX0RJUn0vQnl0ZWNvZGVzLmggLS1pbml0X2J5dGVjb2Rlc19hc20gJHtERVJJVkVE
X1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9Jbml0Qnl0ZWNvZGVzLmFzbSAke0pBVkFTQ1JJ
UFRDT1JFX0RJUn0vYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24KICAgICBWRVJCQVRJTSkKIAor
bGlzdChBUFBFTkQgSmF2YVNjcmlwdENvcmVfSEVBREVSUworICAgICR7REVSSVZFRF9TT1VSQ0VT
X0pBVkFTQ1JJUFRDT1JFX0RJUn0vQnl0ZWNvZGVzLmgKKykKKwogYWRkX2N1c3RvbV9jb21tYW5k
KAogICAgIE9VVFBVVCAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0xMSW50
RGVzaXJlZE9mZnNldHMuaAogICAgIE1BSU5fREVQRU5ERU5DWSAke0pBVkFTQ1JJUFRDT1JFX0RJ
Un0vb2ZmbGluZWFzbS9nZW5lcmF0ZV9vZmZzZXRfZXh0cmFjdG9yLnJiCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IGExZDk4M2Q4ZjAwN2U5MGMzNjJiNTk5NWQ0NjBlMjkwM2IyMjUz
ZDYuLmYzNmU1YTcwY2RjMmZhMGM3YmMwZjk1NzkwZTg3YjQ0ZjIzMjE1ZGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMTk4LDcgKzExOTgsNyBAQAogCQk1M0Y0MEU4RDFENTkw
MUYyMDA5OUExQjYgLyogV0FTTVBhcnNlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTNGNDBFOEMxRDU5MDFGMjAwOTlBMUI2IC8qIFdBU01QYXJzZXIu
aCAqLzsgfTsKIAkJNTNGNDBFOEYxRDU5MDI4MjAwOTlBMUI2IC8qIFdBU01CM0lSR2VuZXJhdG9y
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzRjQw
RThFMUQ1OTAyODIwMDk5QTFCNiAvKiBXQVNNQjNJUkdlbmVyYXRvci5jcHAgKi87IH07CiAJCTUz
RjQwRTkxMUQ1OTAzMDIwMDk5QTFCNiAvKiBXQVNNT3BzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1M0Y0MEU5MDFENTkwMzAyMDA5OUExQjYgLyogV0FT
TU9wcy5oICovOyB9OwotICAgICAgICAgICAgICAgIDUzRjQwRTkzMUQ1QTRBQjMwMDk5QTFCNiAv
KiBXQVNNQjNJUkdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTNGNDBFOTIxRDVBNEFCMzAwOTlBMUI2IC8qIFdBU01CM0lSR2VuZXJhdG9y
LmggKi87IH07CisJCTUzRjQwRTkzMUQ1QTRBQjMwMDk5QTFCNiAvKiBXQVNNQjNJUkdlbmVyYXRv
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTNGNDBF
OTIxRDVBNEFCMzAwOTlBMUI2IC8qIFdBU01CM0lSR2VuZXJhdG9yLmggKi87IH07CiAJCTUzRjQw
RTk1MUQ1QTdBRUYwMDk5QTFCNiAvKiBXQVNNTW9kdWxlUGFyc2VyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1M0Y0MEU5NDFENUE3QUVGMDA5OUExQjYg
LyogV0FTTU1vZHVsZVBhcnNlci5oICovOyB9OwogCQk1M0Y0MEU5NzFENUE3QkVDMDA5OUExQjYg
LyogV0FTTU1vZHVsZVBhcnNlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1M0Y0MEU5NjFENUE3QkVDMDA5OUExQjYgLyogV0FTTU1vZHVsZVBhcnNl
ci5jcHAgKi87IH07CiAJCTUzRjZCRjZEMUMzRjA2MEEwMEY0MUU1RCAvKiBJbnRlcm5hbEZ1bmN0
aW9uQWxsb2NhdGlvblByb2ZpbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUzRjZCRjZDMUMzRjA2MEEwMEY0MUU1RCAvKiBJbnRlcm5hbEZ1bmN0aW9u
QWxsb2NhdGlvblByb2ZpbGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwpAQCAtMTI3MCw4ICsxMjcwLDYgQEAKIAkJNzA5RkI4NkMxQUUzMzVDNjAwMzlE
MDY5IC8qIFdlYWtTZXRQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDcwOUZCODY2MUFFMzM1QzYwMDM5RDA2OSAvKiBXZWFrU2V0UHJvdG90
eXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
NzBCMEE5RDExQTlCNjY0NjAwMDEzMDZBIC8qIFJ1bnRpbWVGbGFncy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBCMEE5RDAxQTlCNjYyMDAwMDEzMDZB
IC8qIFJ1bnRpbWVGbGFncy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTcwQjc5MTkxMUMwMjRBMTMwMDI0ODFFMiAvKiBTb3VyY2VDb2RlS2V5Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEI3OTE4RTFD
MDI0NEM5MDAyNDgxRTIgLyogU291cmNlQ29kZUtleS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTcwQjc5MTkyMUMwMjRBMjMwMDI0ODFFMiAvKiBH
ZW5lcmF0b3JGcmFtZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3MEI3OTE4MzFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnJhbWUuY3BwICov
OyB9OwotCQk3MEI3OTE5MzFDMDI0QTI4MDAyNDgxRTIgLyogR2VuZXJhdG9yRnJhbWUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwQjc5MTg0MUMwMjQ0
MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGcmFtZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcwQjc5MTk0MUMwMjRBMjgwMDI0ODFFMiAvKiBHZW5l
cmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDcwQjc5MTg1MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JG
dW5jdGlvbkNvbnN0cnVjdG9yLmNwcCAqLzsgfTsKIAkJNzBCNzkxOTUxQzAyNEEyODAwMjQ4MUUy
IC8qIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwQjc5MTg2MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5l
cmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzBCNzkxOTYxQzAyNEEyODAwMjQ4MUUyIC8qIEdlbmVyYXRv
ckZ1bmN0aW9uUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDcwQjc5MTg3MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlv
blByb3RvdHlwZS5jcHAgKi87IH07CkBAIC0yMDQ1LDYgKzIwNDMsMTEgQEAKIAkJRTE4RTNBNTkw
REY5Mjc4QzAwRDkwQjM0IC8qIFZNLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEUxOEUzQTU3MERGOTI3OEMwMEQ5MEIzNCAvKiBWTS5jcHAgKi87IH07
CiAJCUUzMThDQkMwMUI4QUVGNTEwMEEyOTI5RCAvKiBKU01vZHVsZU5hbWVzcGFjZU9iamVjdC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzE4Q0JC
RTFCOEFFRjUxMDBBMjkyOUQgLyogSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuY3BwICovOyB9Owog
CQlFMzE4Q0JDMTFCOEFFRjUxMDBBMjkyOUQgLyogSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMThDQkJGMUI4
QUVGNTEwMEEyOTI5RCAvKiBKU01vZHVsZU5hbWVzcGFjZU9iamVjdC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUUzMjhEQUU3MUQzOEQwMDQwMDFB
MjUyOSAvKiBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0QyNjQyNjFEMzhDMDQyMDAwQkUxNzQgLyog
Qnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwICovOyB9OworCQlFMzI4REFFODFEMzhEMDA1
MDAxQTI1MjkgLyogQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzRDI2NDI3MUQzOEMwNDIwMDBCRTE3NCAv
KiBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCUUzMjhEQUU5MUQzOEQwMDUwMDFBMjUyOSAvKiBCeXRl
Y29kZUdyYXBoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFM0QyNjQyODFEMzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNvZGVHcmFwaC5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUUzMjhEQUVBMUQzOEQwMDUw
MDFBMjUyOSAvKiBCeXRlY29kZVJld3JpdGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzRDI2NDI5MUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRlY29k
ZVJld3JpdGVyLmNwcCAqLzsgfTsKKwkJRTMyOERBRUIxRDM4RDAwNTAwMUEyNTI5IC8qIEJ5dGVj
b2RlUmV3cml0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEUzRDI2NDJBMUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRlY29kZVJld3JpdGVyLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTMzNjM3QTUxQjYz
MjIwMjAwRUUwODQwIC8qIFJlZmxlY3RPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMzNjM3QTMxQjYzMjIwMjAwRUUwODQwIC8qIFJlZmxl
Y3RPYmplY3QuY3BwICovOyB9OwogCQlFMzM2MzdBNjFCNjMyMjAyMDBFRTA4NDAgLyogUmVmbGVj
dE9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTMzNjM3QTQxQjYzMjIwMjAwRUUwODQwIC8qIFJlZmxlY3RPYmplY3QuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzNCM0UyNjFCN0FCRDc1MDA0
OERCMkUgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0Lmx1dC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMzQjNFMjUxQjdBQkQ3NTAwNDhE
QjJFIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5sdXQuaCAqLzsgfTsKQEAgLTIw
NjksOCArMjA3MiwxMCBAQAogCQlFMzc5NEU3NTFCNzdFQjk3MDA1NTQzQUUgLyogTW9kdWxlQW5h
bHl6ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTM3OTRFNzMxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmNwcCAqLzsgfTsKIAkJ
RTM3OTRFNzYxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzc5NEU3NDFCNzdFQjk3MDA1NTQz
QUUgLyogTW9kdWxlQW5hbHl6ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlFMzk2M0NFRTFCNzNGNzUwMDBFQjRDRTUgLyogTm9kZXNBbmFseXpl
TW9kdWxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUzOTYzQ0VDMUI3M0Y3NTAwMEVCNENFNSAvKiBOb2Rlc0FuYWx5emVNb2R1bGUuY3BwICovOyB9
OworCQlFMzlENDVGNTFEMzkwMDU2MDBCM0IzNzcgLyogSW50ZXJwcmV0ZXJJbmxpbmVzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzlEOUQ4NDFEMzkw
MDA2MDA2NjcyODIgLyogSW50ZXJwcmV0ZXJJbmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTM5REE0QTYxQjdFOEI3QzAwODRGMzNBIC8q
IEpTTW9kdWxlUmVjb3JkLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEUzOURBNEE0MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29yZC5jcHAg
Ki87IH07CiAJCUUzOURBNEE3MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29yZC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5REE0QTUxQjdF
OEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTNBNDIxNDMxRDZGNTg5MzAwMDdDNjE3IC8qIFBy
ZWNpc2VKdW1wVGFyZ2V0c0lubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEUzQTQyMTQyMUQ2RjU4OEYwMDA3QzYxNyAvKiBQcmVjaXNlSnVtcFRh
cmdldHNJbmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJRTNEMjM5QzgxQjgyOUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxlRW52aXJvbm1lbnQu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNEMjM5
QzYxQjgyOUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxlRW52aXJvbm1lbnQuY3BwICovOyB9OwogCQlF
M0QyMzlDOTFCODI5QzFDMDBCQkVGNjcgLyogSlNNb2R1bGVFbnZpcm9ubWVudC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNEMjM5QzcxQjgyOUMxQzAw
QkJFRjY3IC8qIEpTTW9kdWxlRW52aXJvbm1lbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFM0VGODg3NDFCNjZERjIzMDAzRjI2Q0IgLyogSlNQ
cm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFM0VGODg3MjFCNjZERjIzMDAzRjI2Q0IgLyogSlNQcm9wZXJ0eU5hbWVJ
dGVyYXRvci5jcHAgKi87IH07CkBAIC0zMzg2LDcgKzMzOTEsNyBAQAogCQk1M0Y0MEU4QzFENTkw
MUYyMDA5OUExQjYgLyogV0FTTVBhcnNlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXQVNNUGFyc2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzRjQwRThF
MUQ1OTAyODIwMDk5QTFCNiAvKiBXQVNNQjNJUkdlbmVyYXRvci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXQVNNQjNJUkdlbmVyYXRvci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTUzRjQwRTkwMUQ1OTAzMDIwMDk5QTFCNiAvKiBXQVNNT3BzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdBU01PcHMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLSAgICAgICAgICAgICAgICA1M0Y0MEU5MjFENUE0QUIzMDA5OUExQjYg
LyogV0FTTUIzSVJHZW5lcmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V0FTTUIzSVJHZW5lcmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTNGNDBF
OTIxRDVBNEFCMzAwOTlBMUI2IC8qIFdBU01CM0lSR2VuZXJhdG9yLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdBU01CM0lSR2VuZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTUzRjQwRTk0MUQ1QTdBRUYwMDk5QTFCNiAvKiBXQVNNTW9kdWxlUGFyc2Vy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdBU01Nb2R1bGVQYXJzZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTNGNDBFOTYxRDVBN0JFQzAwOTlBMUI2IC8q
IFdBU01Nb2R1bGVQYXJzZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gV0FTTU1vZHVsZVBhcnNlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUz
RjZCRjZDMUMzRjA2MEEwMEY0MUU1RCAvKiBJbnRlcm5hbEZ1bmN0aW9uQWxsb2NhdGlvblByb2Zp
bGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW50ZXJuYWxGdW5jdGlvbkFs
bG9jYXRpb25Qcm9maWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zNDkyLDgg
KzM0OTcsNiBAQAogCQk3MDlGQjg2NTFBRTMzNUM2MDAzOUQwNjkgLyogV2Vha1NldFByb3RvdHlw
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWFrU2V0UHJvdG90
eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzA5RkI4NjYxQUUzMzVDNjAw
MzlEMDY5IC8qIFdlYWtTZXRQcm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV2Vha1NldFByb3RvdHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
MEIwQTlEMDFBOUI2NjIwMDAwMTMwNkEgLyogUnVudGltZUZsYWdzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFJ1bnRpbWVGbGFncy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQk3MEI3OTE4MzFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnJhbWUuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR2VuZXJhdG9yRnJhbWUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3MEI3OTE4NDFDMDI0NDMyMDAyNDgxRTIgLyog
R2VuZXJhdG9yRnJhbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2VuZXJh
dG9yRnJhbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzBCNzkxODUxQzAyNDQz
MjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcwQjc5MTg2MUMwMjQ0MzIwMDI0ODFF
MiAvKiBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNzBCNzkxODcxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1
bmN0aW9uUHJvdG90eXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTQzMzMsMTAgKzQzMzYsMTcgQEAKIAkJRTM3OTRFNzMxQjc3RUI5NzAwNTU0M0FFIC8q
IE1vZHVsZUFuYWx5emVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IE1vZHVsZUFuYWx5emVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM3OTRF
NzQxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IE1vZHVsZUFuYWx5emVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUUzOTYzQ0VDMUI3M0Y3NTAwMEVCNENFNSAvKiBOb2Rlc0FuYWx5emVNb2R1bGUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTm9kZXNBbmFseXplTW9kdWxl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM5RDlEODQxRDM5MDAwNjAwNjY3
MjgyIC8qIEludGVycHJldGVySW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBJbnRlcnByZXRlcklubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RTM5REE0QTQxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTW9kdWxlUmVjb3JkLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM5REE0QTUxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxl
UmVjb3JkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTW9kdWxlUmVjb3Jk
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzQTQyMTQyMUQ2RjU4OEYwMDA3QzYx
NyAvKiBQcmVjaXNlSnVtcFRhcmdldHNJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFByZWNpc2VKdW1wVGFyZ2V0c0lubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRTNEMjM5QzYxQjgyOUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxlRW52aXJvbm1l
bnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNNb2R1bGVFbnZp
cm9ubWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzRDIzOUM3MUI4MjlD
MUMwMEJCRUY2NyAvKiBKU01vZHVsZUVudmlyb25tZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEpTTW9kdWxlRW52aXJvbm1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJRTNEMjY0MjYxRDM4QzA0MjAwMEJFMTc0IC8qIEJ5dGVjb2RlR2VuZXJhdG9yaWZp
Y2F0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJ5dGVjb2Rl
R2VuZXJhdG9yaWZpY2F0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTNE
MjY0MjcxRDM4QzA0MjAwMEJFMTc0IC8qIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9u
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzRDI2NDI4MUQzOEMwNDIwMDBCRTE3
NCAvKiBCeXRlY29kZUdyYXBoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJ5
dGVjb2RlR3JhcGguaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTNEMjY0MjkxRDM4
QzA0MjAwMEJFMTc0IC8qIEJ5dGVjb2RlUmV3cml0ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gQnl0ZWNvZGVSZXdyaXRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUUzRDI2NDJBMUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRlY29kZVJld3JpdGVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJ5dGVjb2RlUmV3cml0ZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNFRjg4NzIxQjY2REYyMzAwM0YyNkNCIC8q
IEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUUzRUY4ODczMUI2NkRGMjMwMDNGMjZDQiAvKiBKU1Byb3BlcnR5TmFtZUl0ZXJh
dG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTUHJvcGVydHlOYW1lSXRl
cmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTQ5REMxNDkxMkVGMjYxQTAw
MTg0QTFGIC8qIFNvdXJjZVByb3ZpZGVyQ2FjaGVJdGVtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFNvdXJjZVByb3ZpZGVyQ2FjaGVJdGVtLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC01MDYzLDYgKzUwNzMsNyBAQAogCQkxNDI5RDc3QTBFRDIwRDczMDBCODk2
MTkgLyogaW50ZXJwcmV0ZXIgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVu
ID0gKAorCQkJCUUzOUQ5RDg0MUQzOTAwMDYwMDY2NzI4MiAvKiBJbnRlcnByZXRlcklubGluZXMu
aCAqLywKIAkJCQkwRjU1RjBGMTE0RDEwNjM2MDBBQzc2NDkgLyogQWJzdHJhY3RQQy5jcHAgKi8s
CiAJCQkJMEY1NUYwRjIxNEQxMDYzNjAwQUM3NjQ5IC8qIEFic3RyYWN0UEMuaCAqLywKIAkJCQkx
NDI5RDg1QjBFRDIxOEU5MDBCODk2MTkgLyogQ0xvb3BTdGFjay5jcHAgKi8sCkBAIC01NTU4LDcg
KzU1NjksNyBAQAogCQkJCTUzRjQwRTkwMUQ1OTAzMDIwMDk5QTFCNiAvKiBXQVNNT3BzLmggKi8s
CiAJCQkJN0JDNTQ3RDIxQjY5NTk5QjAwOTU5QjU4IC8qIFdBU01Gb3JtYXQuaCAqLywKIAkJCQk1
M0Y0MEU4RTFENTkwMjgyMDA5OUExQjYgLyogV0FTTUIzSVJHZW5lcmF0b3IuY3BwICovLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1M0Y0MEU5MjFENUE0QUIzMDA5OUExQjYgLyog
V0FTTUIzSVJHZW5lcmF0b3IuaCAqLywKKwkJCQk1M0Y0MEU5MjFENUE0QUIzMDA5OUExQjYgLyog
V0FTTUIzSVJHZW5lcmF0b3IuaCAqLywKIAkJCQk1M0Y0MEU4QTFENTkwMUJCMDA5OUExQjYgLyog
V0FTTUZ1bmN0aW9uUGFyc2VyLmggKi8sCiAJCQkJNTNGNDBFOTYxRDVBN0JFQzAwOTlBMUI2IC8q
IFdBU01Nb2R1bGVQYXJzZXIuY3BwICovLAogCQkJCTUzRjQwRTk0MUQ1QTdBRUYwMDk5QTFCNiAv
KiBXQVNNTW9kdWxlUGFyc2VyLmggKi8sCkBAIC01NzQzLDggKzU3NTQsNiBAQAogCQkJCUY2OTJB
ODVEMDI1NTU5N0QwMUZGNjBGNyAvKiBGdW5jdGlvblByb3RvdHlwZS5oICovLAogCQkJCTYyRDJE
MzhEMUFERjEwM0YwMDAyMDZDMSAvKiBGdW5jdGlvblJhcmVEYXRhLmNwcCAqLywKIAkJCQk2MkQy
RDM4RTFBREYxMDNGMDAwMjA2QzEgLyogRnVuY3Rpb25SYXJlRGF0YS5oICovLAotCQkJCTcwQjc5
MTgzMUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGcmFtZS5jcHAgKi8sCi0JCQkJNzBCNzkx
ODQxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZyYW1lLmggKi8sCiAJCQkJNzBCNzkxODUx
QzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwICovLAog
CQkJCTcwQjc5MTg2MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVj
dG9yLmggKi8sCiAJCQkJNzBCNzkxODcxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0
aW9uUHJvdG90eXBlLmNwcCAqLywKQEAgLTY2MzAsNiArNjYzOSwxMiBAQAogCQk5NjlBMDc4RjBF
RDFEM0FFMDBGMUY2ODEgLyogYnl0ZWNvZGUgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJ
CWNoaWxkcmVuID0gKAorCQkJCUUzQTQyMTQyMUQ2RjU4OEYwMDA3QzYxNyAvKiBQcmVjaXNlSnVt
cFRhcmdldHNJbmxpbmVzLmggKi8sCisJCQkJRTNEMjY0MjYxRDM4QzA0MjAwMEJFMTc0IC8qIEJ5
dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcCAqLywKKwkJCQlFM0QyNjQyNzFEMzhDMDQyMDAw
QkUxNzQgLyogQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uaCAqLywKKwkJCQlFM0QyNjQyODFE
MzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNvZGVHcmFwaC5oICovLAorCQkJCUUzRDI2NDI5MUQzOEMw
NDIwMDBCRTE3NCAvKiBCeXRlY29kZVJld3JpdGVyLmNwcCAqLywKKwkJCQlFM0QyNjQyQTFEMzhD
MDQyMDAwQkUxNzQgLyogQnl0ZWNvZGVSZXdyaXRlci5oICovLAogCQkJCTUzNzBCNEYzMUJGMjVF
QTIwMDVDNDBGQyAvKiBBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnRCYXNl
LmNwcCAqLywKIAkJCQk1MzcwQjRGNDFCRjI1RUEyMDA1QzQwRkMgLyogQWRhcHRpdmVJbmZlcnJl
ZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50QmFzZS5oICovLAogCQkJCTBGODMzNUI0MTYzOUMxRTMw
MDE0NDNCNSAvKiBBcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcCAqLywKQEAgLTcxODQsNiArNzE5
OSw3IEBACiAJCQkJMEZFQzg1MkQxQkRBQ0RBQzAwODBGRjc0IC8qIEIzUHJvY2VkdXJlSW5saW5l
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQzg1QkQxQkUxNDYyRjAwODBGRjc0IC8qIEIzUmVk
dWNlU3RyZW5ndGguaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUM4NTMxMUJEQUNEQUMwMDgwRkY3
NCAvKiBCM1N0YWNrbWFwU3BlY2lhbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTMyOERBRTgxRDM4
RDAwNTAwMUEyNTI5IC8qIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRkVDODUzNTFCREFDREFDMDA4MEZGNzQgLyogQjNTbG90QmFzZVZhbHVlLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRkVDODUzNjFCREFDREFDMDA4MEZGNzQgLyogQjNTdWNjZXNzb3JD
b2xsZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVDODUzODFCREFDREFDMDA4MEZGNzQg
LyogQjNTd2l0Y2hDYXNlLmggaW4gSGVhZGVycyAqLywKQEAgLTcyMTQsNiArNzIzMCw3IEBACiAJ
CQkJOTlEQTAwQTkxQkQ1OTkzMTAwRjQ1NzVDIC8qIGJ1aWx0aW5zX2dlbmVyYXRlX3NlcGFyYXRl
X2hlYWRlci5weSBpbiBIZWFkZXJzICovLAogCQkJCTBGMzM4RTExMUJGMDI3NkMwMDEzQzg4RiAv
KiBCM09wYXF1ZUJ5cHJvZHVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkVBMEM0MDMxQ0REN0Qx
RDAwNDgxOTkxIC8qIEZ1bmN0aW9uV2hpdGVsaXN0LmggaW4gSGVhZGVycyAqLywKKwkJCQlFM0E0
MjE0MzFENkY1ODkzMDAwN0M2MTcgLyogUHJlY2lzZUp1bXBUYXJnZXRzSW5saW5lcy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJOTlEQTAwQUExQkQ1OTkzMTAwRjQ1NzVDIC8qIGJ1aWx0aW5zX2dlbmVy
YXRlX3NlcGFyYXRlX2ltcGxlbWVudGF0aW9uLnB5IGluIEhlYWRlcnMgKi8sCiAJCQkJOTlEQTAw
QTMxQkQ1OTkzMTAwRjQ1NzVDIC8qIGJ1aWx0aW5zX2dlbmVyYXRvci5weSBpbiBIZWFkZXJzICov
LAogCQkJCTQxMjk1Mjc4MUQyQ0Y2QkMwMEU3OEI4OSAvKiBidWlsdGluc19nZW5lcmF0ZV9pbnRl
cm5hbHNfd3JhcHBlcl9pbXBsZW1lbnRhdGlvbi5weSBpbiBIZWFkZXJzICovLApAQCAtNzQ0OSw3
ICs3NDY2LDYgQEAKIAkJCQlBNzM3ODEwRTE3OTlFQTJFMDA4MTc1MzMgLyogREZHTmF0dXJhbExv
b3BzLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkVDQTNFQTEzMkRFRjFDMDAyQjJBRDcgLyogREZH
Tm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGQjkyMUIxNkQwMkYwMTAwNTVBNURCIC8qIERG
R05vZGVBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovLAotCQkJCTcwQjc5MTkzMUMwMjRBMjgwMDI0
ODFFMiAvKiBHZW5lcmF0b3JGcmFtZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZBNTgxQkIxNTBF
OTUzMDAwQjlBMkQ5IC8qIERGR05vZGVGbGFncy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYzMDBC
NzgxOEFCMDUxMTAwQTZENzJFIC8qIERGR05vZGVPcmlnaW4uaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGQTU4MUJDMTUwRTk1MzAwMEI5QTJEOSAvKiBERkdOb2RlVHlwZS5oIGluIEhlYWRlcnMgKi8s
CkBAIC03NDY0LDYgKzc0ODAsNyBAQAogCQkJCTBGRDhBMzI2MTdENTFGNTcwMENBMkM0MCAvKiBE
RkdPU1JFbnRyeXBvaW50Q3JlYXRpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDMDk3
NkExNDY4QTZGNzAwQ0YyNDQyIC8qIERGR09TUkV4aXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
MjM1QkVDMTcxNzhFNzMwMDY5MEM3RiAvKiBERkdPU1JFeGl0QmFzZS5oIGluIEhlYWRlcnMgKi8s
CisJCQkJRTM5RDQ1RjUxRDM5MDA1NjAwQjNCMzc3IC8qIEludGVycHJldGVySW5saW5lcy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEZGQjkyMUMxNkQwMkYxMTAwNTVBNURCIC8qIERGR09TUkV4aXRD
b21waWxhdGlvbkluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQzA5NzcxMTQ2OTNBRjUwMENG
MjQ0MiAvKiBERkdPU1JFeGl0Q29tcGlsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNzAyNUFB
MTcxNEIwRkMwMDM4MkMwRSAvKiBERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uaCBpbiBIZWFkZXJz
ICovLApAQCAtNzcyNiw2ICs3NzQzLDcgQEAKIAkJCQlFMzNCM0UyNjFCN0FCRDc1MDA0OERCMkUg
LyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0Lmx1dC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTUzMjQzOEMxODU2ODMzNTAwMkVENjkyIC8qIEluc3BlY3RvclByb3RvY29sT2JqZWN0cy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQTU1RDkzQUMxODUxNEY3OTAwNDAwREVEIC8qIEluc3BlY3Rv
clByb3RvY29sVHlwZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzMjhEQUVCMUQzOEQwMDUwMDFB
MjUyOSAvKiBCeXRlY29kZVJld3JpdGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTBFNEI2MjE4
ODA5REQ1MDA2OEE0NkQgLyogSW5zcGVjdG9yUnVudGltZUFnZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQlBNTkzQ0Y4MzE4NDAzNzcxMDBCRkNFMjcgLyogSW5zcGVjdG9yVmFsdWVzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk5NjlBMDc5OTBFRDFEM0FFMDBGMUY2ODEgLyogSW5zdHJ1Y3Rpb24uaCBp
biBIZWFkZXJzICovLApAQCAtNzg1Nyw2ICs3ODc1LDcgQEAKIAkJCQlFMzNGNTA4MTFCODQyOUE0
MDA0MTM4NTYgLyogSlNJbnRlcm5hbFByb21pc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNjE4
MzJBMUM0NUJGMDcwMDcyNDUwQiAvKiBBaXJDQ2FsbGluZ0NvbnZlbnRpb24uaCBpbiBIZWFkZXJz
ICovLAogCQkJCUUzM0Y1MDc5MUI4NDIyNTcwMDQxMzg1NiAvKiBKU0ludGVybmFsUHJvbWlzZUNv
bnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzI4REFFOTFEMzhEMDA1MDAxQTI1Mjkg
LyogQnl0ZWNvZGVHcmFwaC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTMzRjUwODcxQjg0NDlFRjAw
NDEzODU2IC8qIEpTSW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IubHV0LmggaW4gSGVhZGVycyAq
LywKIAkJCQlFMzNGNTA4NTFCODQzN0EwMDA0MTM4NTYgLyogSlNJbnRlcm5hbFByb21pc2VEZWZl
cnJlZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTMzRjUwNzUxQjg0MjFDMDAwNDEzODU2IC8qIEpT
SW50ZXJuYWxQcm9taXNlUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKQEAgLTc5NDUsNyArNzk2
NCw3IEBACiAJCQkJMEZCNTQ2NzcxNEY1OUI1QzAwMkMyOTg5IC8qIExhenlPcGVyYW5kVmFsdWVQ
cm9maWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5OURBMDBCMDFCRDU5OTRFMDBGNDU3NUMgLyog
bGF6eXdyaXRlci5weSBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDMxMEUxNkY1Q0QwMEIzNDQ2
MCAvKiBMZXhlci5oIGluIEhlYWRlcnMgKi8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDUzRjQwRTkzMUQ1QTRBQjMwMDk5QTFCNiAvKiBXQVNNQjNJUkdlbmVyYXRvci5oIGluIEhl
YWRlcnMgKi8sCisJCQkJNTNGNDBFOTMxRDVBNEFCMzAwOTlBMUI2IC8qIFdBU01CM0lSR2VuZXJh
dG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzUyRTBFMTZGQ0UxMDBCMzQ0NjAgLyogTGV4
ZXIubHV0LmggaW4gSGVhZGVycyAqLywKIAkJCQlEQ0YzRDU2QjFDRDI5NDcyMDAzRDVDNjUgLyog
TGF6eUNsYXNzU3RydWN0dXJlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkUxODdBMDIx
QkZCRTU2MTAwMzhCQkNBIC8qIEpJVE11bEdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8sCkBAIC04
ODIzLDYgKzg4NDIsNyBAQAogCQkJCTE0N0YzOUJEMTA3RUMzNzYwMDQyN0E0OCAvKiBBcmdMaXN0
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNzQzQkFBMTZCODgyNDkwMDlGOTI3NyAvKiBBUk02
NERpc2Fzc2VtYmxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NkQzQjJDMzEwMTU2QkRFMDAy
ODY1RTcgLyogQVJNQXNzZW1ibGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUUzMjhEQUU3MUQz
OEQwMDQwMDFBMjUyOSAvKiBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk2NUMwMjg1MDE3MTc5NUUyMDAzNTFFMzUgLyogQVJNdjdEaXNhc3NlbWJsZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNjVDMDI4NUMxNzE3OTY2ODAwMzUxRTM1IC8qIEFSTXY3
RE9wY29kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjgzMzVCNzE2MzlDMUU2MDAxNDQzQjUg
LyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTkxNTgsNiAr
OTE3OCw3IEBACiAJCQkJMEYyNUYxQjExODE2MzVGMzAwNTIyRjM5IC8qIEZUTFNsb3dQYXRoQ2Fs
bC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjMzOERGMTFCRTkzQUQxMDAxM0M4OEYgLyogQjNT
dGFja21hcFZhbHVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMjVGMUIzMTgxNjM1RjMwMDUy
MkYzOSAvKiBGVExTbG93UGF0aENhbGxLZXkuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTMyOERB
RUExRDM4RDAwNTAwMUEyNTI5IC8qIEJ5dGVjb2RlUmV3cml0ZXIuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNDMxOURBMDMxQzFCRTQwQTAwMUQyNjBCIC8qIEIzTG93ZXJNYWNyb3NBZnRlck9wdGlt
aXphdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFQTBBMTYxNzA2QkI5MDAwQkI3MjJD
IC8qIEZUTFN0YXRlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMjM1QkUxMTcxNzhFMUMwMDY5
MEM3RiAvKiBGVExUaHVua3MuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC05NTY1LDcgKzk1ODYsNiBA
QAogCQkJCTc5RUUwQkZGMUI0QUZCODUwMDAzODVDOSAvKiBWYXJpYWJsZUVudmlyb25tZW50LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTBGNkM3MzUwMUFDOUY5OUYwMEJFMTY4MiAvKiBWYXJpYWJs
ZVdyaXRlRmlyZURldGFpbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkUwNTAyQzFBQTkwOTU2
MDBEMzNCMzMgLyogVmFyT2Zmc2V0LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTcwQjc5MTkyMUMw
MjRBMjMwMDI0ODFFMiAvKiBHZW5lcmF0b3JGcmFtZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkw
RjIwQzI1OTFBODAxM0FCMDBEQTMyMjkgLyogVmlydHVhbFJlZ2lzdGVyLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUUxOEUzQTU5MERGOTI3OEMwMEQ5MEIzNCAvKiBWTS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlGRTU5MzJBNzE4M0M1QTI2MDBBMUVDQ0MgLyogVk1FbnRyeVNjb3BlLmNwcCBpbiBT
b3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0dl
bmVyYXRvclByb3RvdHlwZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9HZW5l
cmF0b3JQcm90b3R5cGUuanMKaW5kZXggM2MxNDA2ODdkZmM3ZTAwZWZlOTFhZTgwYjJhYzY3NmZh
OWJmNDhmNC4uNDk5ZGJkMzkyZTgzMTNkY2RkODZlYzhjMTYwNTY5ZDdkNmY1NDliMSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0dlbmVyYXRvclByb3RvdHlwZS5q
cworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvR2VuZXJhdG9yUHJvdG90eXBl
LmpzCkBAIC01MSw3ICs1MSw3IEBAIGZ1bmN0aW9uIGdlbmVyYXRvclJlc3VtZShnZW5lcmF0b3Is
IHNlbnRWYWx1ZSwgcmVzdW1lTW9kZSkKICAgICB9IGVsc2UgewogICAgICAgICB0cnkgewogICAg
ICAgICAgICAgZ2VuZXJhdG9yLkBnZW5lcmF0b3JTdGF0ZSA9IEBHZW5lcmF0b3JTdGF0ZUV4ZWN1
dGluZzsKLSAgICAgICAgICAgIHZhbHVlID0gZ2VuZXJhdG9yLkBnZW5lcmF0b3JOZXh0LkBjYWxs
KGdlbmVyYXRvci5AZ2VuZXJhdG9yVGhpcywgZ2VuZXJhdG9yLCBzdGF0ZSwgc2VudFZhbHVlLCBy
ZXN1bWVNb2RlKTsKKyAgICAgICAgICAgIHZhbHVlID0gZ2VuZXJhdG9yLkBnZW5lcmF0b3JOZXh0
LkBjYWxsKGdlbmVyYXRvci5AZ2VuZXJhdG9yVGhpcywgZ2VuZXJhdG9yLCBzdGF0ZSwgc2VudFZh
bHVlLCByZXN1bWVNb2RlLCBnZW5lcmF0b3IuQGdlbmVyYXRvckZyYW1lKTsKICAgICAgICAgICAg
IGlmIChnZW5lcmF0b3IuQGdlbmVyYXRvclN0YXRlID09PSBAR2VuZXJhdG9yU3RhdGVFeGVjdXRp
bmcpIHsKICAgICAgICAgICAgICAgICBnZW5lcmF0b3IuQGdlbmVyYXRvclN0YXRlID0gQEdlbmVy
YXRvclN0YXRlQ29tcGxldGVkOwogICAgICAgICAgICAgICAgIGRvbmUgPSB0cnVlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmNw
cAppbmRleCA3ZjE3YzBlZjEwYjQzM2ZhYzhmNThjYjNiOWNhNWQ0ZDAxNWJiYTA4Li5lMmFiOTIy
ZjA2Yzk4NzU0MTI4MjNjOTZhNjcwOTQ4Mjg0NTI1ZjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcApAQCAtMjcsNiAr
MjcsNyBAQAogI2luY2x1ZGUgIkJ5dGVjb2RlQmFzaWNCbG9jay5oIgogCiAjaW5jbHVkZSAiQ29k
ZUJsb2NrLmgiCisjaW5jbHVkZSAiSW50ZXJwcmV0ZXJJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlND
SW5saW5lcy5oIgogI2luY2x1ZGUgIlByZWNpc2VKdW1wVGFyZ2V0cy5oIgogCkBAIC0zOCw2NSAr
MzksNiBAQCB2b2lkIEJ5dGVjb2RlQmFzaWNCbG9jazo6c2hyaW5rVG9GaXQoKQogICAgIG1fc3Vj
Y2Vzc29ycy5zaHJpbmtUb0ZpdCgpOwogfQogCi1zdGF0aWMgYm9vbCBpc0JyYW5jaChPcGNvZGVJ
RCBvcGNvZGVJRCkKLXsKLSAgICBzd2l0Y2ggKG9wY29kZUlEKSB7Ci0gICAgY2FzZSBvcF9qbXA6
Ci0gICAgY2FzZSBvcF9qdHJ1ZToKLSAgICBjYXNlIG9wX2pmYWxzZToKLSAgICBjYXNlIG9wX2pl
cV9udWxsOgotICAgIGNhc2Ugb3Bfam5lcV9udWxsOgotICAgIGNhc2Ugb3Bfam5lcV9wdHI6Ci0g
ICAgY2FzZSBvcF9qbGVzczoKLSAgICBjYXNlIG9wX2psZXNzZXE6Ci0gICAgY2FzZSBvcF9qZ3Jl
YXRlcjoKLSAgICBjYXNlIG9wX2pncmVhdGVyZXE6Ci0gICAgY2FzZSBvcF9qbmxlc3M6Ci0gICAg
Y2FzZSBvcF9qbmxlc3NlcToKLSAgICBjYXNlIG9wX2puZ3JlYXRlcjoKLSAgICBjYXNlIG9wX2pu
Z3JlYXRlcmVxOgotICAgIGNhc2Ugb3Bfc3dpdGNoX2ltbToKLSAgICBjYXNlIG9wX3N3aXRjaF9j
aGFyOgotICAgIGNhc2Ugb3Bfc3dpdGNoX3N0cmluZzoKLSAgICBjYXNlIG9wX3NhdmU6Ci0gICAg
ICAgIHJldHVybiB0cnVlOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICB9Ci19Ci0KLXN0YXRpYyBib29sIGlzVW5jb25kaXRpb25hbEJyYW5jaChPcGNvZGVJRCBvcGNv
ZGVJRCkKLXsKLSAgICBzd2l0Y2ggKG9wY29kZUlEKSB7Ci0gICAgY2FzZSBvcF9qbXA6Ci0gICAg
ICAgIHJldHVybiB0cnVlOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICB9Ci19Ci0KLXN0YXRpYyBib29sIGlzVGVybWluYWwoT3Bjb2RlSUQgb3Bjb2RlSUQpCi17Ci0g
ICAgc3dpdGNoIChvcGNvZGVJRCkgewotICAgIGNhc2Ugb3BfcmV0OgotICAgIGNhc2Ugb3BfZW5k
OgotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgfQotfQotCi1zdGF0aWMgYm9vbCBpc1Rocm93KE9wY29kZUlEIG9wY29kZUlEKQot
ewotICAgIHN3aXRjaCAob3Bjb2RlSUQpIHsKLSAgICBjYXNlIG9wX3Rocm93OgotICAgIGNhc2Ug
b3BfdGhyb3dfc3RhdGljX2Vycm9yOgotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBkZWZhdWx0
OgotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotfQotCiBzdGF0aWMgYm9vbCBpc0p1bXBU
YXJnZXQoT3Bjb2RlSUQgb3Bjb2RlSUQsIGNvbnN0IFZlY3Rvcjx1bnNpZ25lZCwgMzI+JiBqdW1w
VGFyZ2V0cywgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpCiB7CiAgICAgaWYgKG9wY29kZUlEID09
IG9wX2NhdGNoKQpAQCAtMTA1LDE1ICs0NywyMCBAQCBzdGF0aWMgYm9vbCBpc0p1bXBUYXJnZXQo
T3Bjb2RlSUQgb3Bjb2RlSUQsIGNvbnN0IFZlY3Rvcjx1bnNpZ25lZCwgMzI+JiBqdW1wVGFyZwog
ICAgIHJldHVybiBzdGQ6OmJpbmFyeV9zZWFyY2goanVtcFRhcmdldHMuYmVnaW4oKSwganVtcFRh
cmdldHMuZW5kKCksIGJ5dGVjb2RlT2Zmc2V0KTsKIH0KIAotc3RhdGljIHZvaWQgbGlua0Jsb2Nr
cyhCeXRlY29kZUJhc2ljQmxvY2sqIHByZWRlY2Vzc29yLCBCeXRlY29kZUJhc2ljQmxvY2sqIHN1
Y2Nlc3NvcikKLXsKLSAgICBwcmVkZWNlc3Nvci0+YWRkU3VjY2Vzc29yKHN1Y2Nlc3Nvcik7Ci19
Ci0KLXZvaWQgY29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MoQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mIGJhc2ljQmxvY2tz
KQordGVtcGxhdGU8dHlwZW5hbWUgQmxvY2ssIHR5cGVuYW1lIEluc3RydWN0aW9uPgordm9pZCBC
eXRlY29kZUJhc2ljQmxvY2s6OmNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzSW50ZXJuYWwoQmxv
Y2sqIGNvZGVCbG9jaywgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBp
bnN0cnVjdGlvbkNvdW50LCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9j
az4+JiBiYXNpY0Jsb2NrcykKIHsKICAgICBWZWN0b3I8dW5zaWduZWQsIDMyPiBqdW1wVGFyZ2V0
czsKLSAgICBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKGNvZGVCbG9jaywganVtcFRhcmdldHMp
OworICAgIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMoY29kZUJsb2NrLCBpbnN0cnVjdGlvbnNC
ZWdpbiwgaW5zdHJ1Y3Rpb25Db3VudCwganVtcFRhcmdldHMpOworCisgICAgYXV0byBhcHBlbmRC
bG9jayA9IFsmXSAoc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4mJiBibG9jaykg
eworICAgICAgICBibG9jay0+bV9pbmRleCA9IGJhc2ljQmxvY2tzLnNpemUoKTsKKyAgICAgICAg
YmFzaWNCbG9ja3MuYXBwZW5kKFdURk1vdmUoYmxvY2spKTsKKyAgICB9OworCisgICAgYXV0byBs
aW5rQmxvY2tzID0gWyZdIChCeXRlY29kZUJhc2ljQmxvY2sqIGZyb20sIEJ5dGVjb2RlQmFzaWNC
bG9jayogdG8pIHsKKyAgICAgICAgZnJvbS0+YWRkU3VjY2Vzc29yKHRvKTsKKyAgICB9OwogCiAg
ICAgLy8gQ3JlYXRlIHRoZSBlbnRyeSBhbmQgZXhpdCBiYXNpYyBibG9ja3MuCiAgICAgYmFzaWNC
bG9ja3MucmVzZXJ2ZUNhcGFjaXR5KGp1bXBUYXJnZXRzLnNpemUoKSArIDIpOwpAQCAtMTIyLDE5
ICs2OSwxNyBAQCB2b2lkIGNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzKENvZGVCbG9jayogY29k
ZUJsb2NrLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dAogICAgIGF1dG8gZmlyc3RCbG9jayA9
IHN0ZDo6bWFrZV91bmlxdWU8Qnl0ZWNvZGVCYXNpY0Jsb2NrPigwLCAwKTsKICAgICBsaW5rQmxv
Y2tzKGVudHJ5LmdldCgpLCBmaXJzdEJsb2NrLmdldCgpKTsKIAotICAgIGJhc2ljQmxvY2tzLmFw
cGVuZChXVEZNb3ZlKGVudHJ5KSk7CisgICAgYXBwZW5kQmxvY2soV1RGTW92ZShlbnRyeSkpOwog
ICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogY3VycmVudCA9IGZpcnN0QmxvY2suZ2V0KCk7Ci0gICAg
YmFzaWNCbG9ja3MuYXBwZW5kKFdURk1vdmUoZmlyc3RCbG9jaykpOworICAgIGFwcGVuZEJsb2Nr
KFdURk1vdmUoZmlyc3RCbG9jaykpOwogCiAgICAgYXV0byBleGl0ID0gc3RkOjptYWtlX3VuaXF1
ZTxCeXRlY29kZUJhc2ljQmxvY2s+KEJ5dGVjb2RlQmFzaWNCbG9jazo6RXhpdEJsb2NrKTsKIAog
ICAgIGJvb2wgbmV4dEluc3RydWN0aW9uSXNMZWFkZXIgPSBmYWxzZTsKIAogICAgIEludGVycHJl
dGVyKiBpbnRlcnByZXRlciA9IGNvZGVCbG9jay0+dm0oKS0+aW50ZXJwcmV0ZXI7Ci0gICAgSW5z
dHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luID0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5i
ZWdpbigpOwotICAgIHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQgPSBjb2RlQmxvY2stPmluc3Ry
dWN0aW9ucygpLnNpemUoKTsKICAgICBmb3IgKHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0ID0gMDsg
Ynl0ZWNvZGVPZmZzZXQgPCBpbnN0cnVjdGlvbkNvdW50OykgewotICAgICAgICBPcGNvZGVJRCBv
cGNvZGVJRCA9IGludGVycHJldGVyLT5nZXRPcGNvZGVJRChpbnN0cnVjdGlvbnNCZWdpbltieXRl
Y29kZU9mZnNldF0udS5vcGNvZGUpOworICAgICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGludGVy
cHJldGVyLT5nZXRPcGNvZGVJRChpbnN0cnVjdGlvbnNCZWdpbltieXRlY29kZU9mZnNldF0pOwog
ICAgICAgICB1bnNpZ25lZCBvcGNvZGVMZW5ndGggPSBvcGNvZGVMZW5ndGhzW29wY29kZUlEXTsK
IAogICAgICAgICBib29sIGNyZWF0ZWRCbG9jayA9IGZhbHNlOwpAQCAtMTQyLDcgKzg3LDcgQEAg
dm9pZCBjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2NrcyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgVmVj
dG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXQKICAgICAgICAgaWYgKGlzSnVtcFRhcmdldChvcGNvZGVJ
RCwganVtcFRhcmdldHMsIGJ5dGVjb2RlT2Zmc2V0KSB8fCBuZXh0SW5zdHJ1Y3Rpb25Jc0xlYWRl
cikgewogICAgICAgICAgICAgYXV0byBuZXdCbG9jayA9IHN0ZDo6bWFrZV91bmlxdWU8Qnl0ZWNv
ZGVCYXNpY0Jsb2NrPihieXRlY29kZU9mZnNldCwgb3Bjb2RlTGVuZ3RoKTsKICAgICAgICAgICAg
IGN1cnJlbnQgPSBuZXdCbG9jay5nZXQoKTsKLSAgICAgICAgICAgIGJhc2ljQmxvY2tzLmFwcGVu
ZChXVEZNb3ZlKG5ld0Jsb2NrKSk7CisgICAgICAgICAgICBhcHBlbmRCbG9jayhXVEZNb3ZlKG5l
d0Jsb2NrKSk7CiAgICAgICAgICAgICBjcmVhdGVkQmxvY2sgPSB0cnVlOwogICAgICAgICAgICAg
bmV4dEluc3RydWN0aW9uSXNMZWFkZXIgPSBmYWxzZTsKICAgICAgICAgICAgIGJ5dGVjb2RlT2Zm
c2V0ICs9IG9wY29kZUxlbmd0aDsKQEAgLTE2OSw4ICsxMTQsNyBAQCB2b2lkIGNvbXB1dGVCeXRl
Y29kZUJhc2ljQmxvY2tzKENvZGVCbG9jayogY29kZUJsb2NrLCBWZWN0b3I8c3RkOjp1bmlxdWVf
cHRyPEJ5dAogCiAgICAgICAgIGJvb2wgZmFsbHNUaHJvdWdoID0gdHJ1ZTsgCiAgICAgICAgIGZv
ciAodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQgPSBibG9jay0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQo
KTsgYnl0ZWNvZGVPZmZzZXQgPCBibG9jay0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKSArIGJsb2Nr
LT50b3RhbEJ5dGVjb2RlTGVuZ3RoKCk7KSB7Ci0gICAgICAgICAgICBjb25zdCBJbnN0cnVjdGlv
biYgY3VycmVudEluc3RydWN0aW9uID0gaW5zdHJ1Y3Rpb25zQmVnaW5bYnl0ZWNvZGVPZmZzZXRd
OwotICAgICAgICAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnRlcnByZXRlci0+Z2V0T3Bjb2Rl
SUQoY3VycmVudEluc3RydWN0aW9uLnUub3Bjb2RlKTsKKyAgICAgICAgICAgIE9wY29kZUlEIG9w
Y29kZUlEID0gaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGluc3RydWN0aW9uc0JlZ2luW2J5dGVj
b2RlT2Zmc2V0XSk7CiAgICAgICAgICAgICB1bnNpZ25lZCBvcGNvZGVMZW5ndGggPSBvcGNvZGVM
ZW5ndGhzW29wY29kZUlEXTsKICAgICAgICAgICAgIC8vIElmIHdlIGZvdW5kIGEgdGVybWluYWwg
Ynl0ZWNvZGUsIGxpbmsgdG8gdGhlIGV4aXQgYmxvY2suCiAgICAgICAgICAgICBpZiAoaXNUZXJt
aW5hbChvcGNvZGVJRCkpIHsKQEAgLTE4NSw3ICsxMjksNyBAQCB2b2lkIGNvbXB1dGVCeXRlY29k
ZUJhc2ljQmxvY2tzKENvZGVCbG9jayogY29kZUJsb2NrLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRy
PEJ5dAogICAgICAgICAgICAgLy8gYmxvY2sgYmVjYXVzZSB0aGUgZmluYWxseSBibG9jayB3aWxs
IGNyZWF0ZSBpdHMgb3duIGNhdGNoLCB3aGljaCB3aWxsIGdlbmVyYXRlIGEgSGFuZGxlckluZm8u
CiAgICAgICAgICAgICBpZiAoaXNUaHJvdyhvcGNvZGVJRCkpIHsKICAgICAgICAgICAgICAgICBB
U1NFUlQoYnl0ZWNvZGVPZmZzZXQgKyBvcGNvZGVMZW5ndGggPT0gYmxvY2stPmxlYWRlckJ5dGVj
b2RlT2Zmc2V0KCkgKyBibG9jay0+dG90YWxCeXRlY29kZUxlbmd0aCgpKTsKLSAgICAgICAgICAg
ICAgICBIYW5kbGVySW5mbyogaGFuZGxlciA9IGNvZGVCbG9jay0+aGFuZGxlckZvckJ5dGVjb2Rl
T2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KTsKKyAgICAgICAgICAgICAgICBhdXRvKiBoYW5kbGVyID0g
Y29kZUJsb2NrLT5oYW5kbGVyRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpOwogICAg
ICAgICAgICAgICAgIGZhbGxzVGhyb3VnaCA9IGZhbHNlOwogICAgICAgICAgICAgICAgIGlmICgh
aGFuZGxlcikgewogICAgICAgICAgICAgICAgICAgICBsaW5rQmxvY2tzKGJsb2NrLCBleGl0Lmdl
dCgpKTsKQEAgLTIwNSw3ICsxNDksNyBAQCB2b2lkIGNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tz
KENvZGVCbG9jayogY29kZUJsb2NrLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dAogICAgICAg
ICAgICAgaWYgKGlzQnJhbmNoKG9wY29kZUlEKSkgewogICAgICAgICAgICAgICAgIEFTU0VSVChi
eXRlY29kZU9mZnNldCArIG9wY29kZUxlbmd0aCA9PSBibG9jay0+bGVhZGVyQnl0ZWNvZGVPZmZz
ZXQoKSArIGJsb2NrLT50b3RhbEJ5dGVjb2RlTGVuZ3RoKCkpOwogICAgICAgICAgICAgICAgIFZl
Y3Rvcjx1bnNpZ25lZCwgMT4gYnl0ZWNvZGVPZmZzZXRzSnVtcGVkVG87Ci0gICAgICAgICAgICAg
ICAgZmluZEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoY29kZUJsb2NrLCBieXRlY29kZU9m
ZnNldCwgYnl0ZWNvZGVPZmZzZXRzSnVtcGVkVG8pOworICAgICAgICAgICAgICAgIGZpbmRKdW1w
VGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb25zQmVnaW4sIGJ5
dGVjb2RlT2Zmc2V0LCBieXRlY29kZU9mZnNldHNKdW1wZWRUbyk7CiAKICAgICAgICAgICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYmFzaWNCbG9ja3Muc2l6ZSgpOyBpKyspIHsKICAg
ICAgICAgICAgICAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBvdGhlckJsb2NrID0gYmFzaWNC
bG9ja3NbaV0uZ2V0KCk7CkBAIC0yMjksMTAgKzE3MywyMCBAQCB2b2lkIGNvbXB1dGVCeXRlY29k
ZUJhc2ljQmxvY2tzKENvZGVCbG9jayogY29kZUJsb2NrLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRy
PEJ5dAogICAgICAgICB9CiAgICAgfQogCi0gICAgYmFzaWNCbG9ja3MuYXBwZW5kKFdURk1vdmUo
ZXhpdCkpOworICAgIGFwcGVuZEJsb2NrKFdURk1vdmUoZXhpdCkpOwogICAgIAogICAgIGZvciAo
YXV0byYgYmFzaWNCbG9jayA6IGJhc2ljQmxvY2tzKQogICAgICAgICBiYXNpY0Jsb2NrLT5zaHJp
bmtUb0ZpdCgpOwogfQogCit2b2lkIEJ5dGVjb2RlQmFzaWNCbG9jazo6Y29tcHV0ZUJ5dGVjb2Rl
QmFzaWNCbG9ja3MoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEluc3RydWN0aW9uKiBpbnN0cnVjdGlv
bnNCZWdpbiwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCwgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0
cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9ja3MpCit7CisgICAgY29tcHV0ZUJ5dGVj
b2RlQmFzaWNCbG9ja3NJbnRlcm5hbChjb2RlQmxvY2ssIGluc3RydWN0aW9uc0JlZ2luLCBpbnN0
cnVjdGlvbkNvdW50LCBiYXNpY0Jsb2Nrcyk7Cit9CisKK3ZvaWQgQnl0ZWNvZGVCYXNpY0Jsb2Nr
Ojpjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2NrcyhVbmxpbmtlZENvZGVCbG9jayogY29kZUJsb2Nr
LCBVbmxpbmtlZEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgaW5zdHJ1
Y3Rpb25Db3VudCwgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYg
YmFzaWNCbG9ja3MpCit7CisgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrOjpjb21wdXRlQnl0ZWNvZGVC
YXNpY0Jsb2Nrc0ludGVybmFsKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb25zQmVnaW4sIGluc3RydWN0
aW9uQ291bnQsIGJhc2ljQmxvY2tzKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmgKaW5k
ZXggY2Q3MTQ3N2VkNTA2YWE3ODgwMjE2NWZhY2RiN2E2ZDQ2ZjM4ZGMyYS4uN2YxODRmNDc3NjIw
YWNhZDc0NTEzYTA1MDgyZDU3ODIyZGZkODUyMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suaApAQCAtMzMsNiArMzMsOSBAQAog
bmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIENvZGVCbG9jazsKK2NsYXNzIFVubGlua2VkQ29kZUJs
b2NrOworc3RydWN0IEluc3RydWN0aW9uOworc3RydWN0IFVubGlua2VkSW5zdHJ1Y3Rpb247CiAK
IGNsYXNzIEJ5dGVjb2RlQmFzaWNCbG9jayB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CkBAIC00OCwxOCArNTEsMjggQEAgY2xhc3MgQnl0ZWNvZGVCYXNpY0Jsb2NrIHsKICAgICB1bnNp
Z25lZCBsZWFkZXJCeXRlY29kZU9mZnNldCgpIHsgcmV0dXJuIG1fbGVhZGVyQnl0ZWNvZGVPZmZz
ZXQ7IH0KICAgICB1bnNpZ25lZCB0b3RhbEJ5dGVjb2RlTGVuZ3RoKCkgeyByZXR1cm4gbV90b3Rh
bEJ5dGVjb2RlTGVuZ3RoOyB9CiAKLSAgICBWZWN0b3I8dW5zaWduZWQ+JiBieXRlY29kZU9mZnNl
dHMoKSB7IHJldHVybiBtX2J5dGVjb2RlT2Zmc2V0czsgfQotICAgIHZvaWQgYWRkQnl0ZWNvZGVM
ZW5ndGgodW5zaWduZWQpOworICAgIGNvbnN0IFZlY3Rvcjx1bnNpZ25lZD4mIGJ5dGVjb2RlT2Zm
c2V0cygpIGNvbnN0IHsgcmV0dXJuIG1fYnl0ZWNvZGVPZmZzZXRzOyB9CiAKLSAgICBWZWN0b3I8
Qnl0ZWNvZGVCYXNpY0Jsb2NrKj4mIHN1Y2Nlc3NvcnMoKSB7IHJldHVybiBtX3N1Y2Nlc3NvcnM7
IH0KLSAgICB2b2lkIGFkZFN1Y2Nlc3NvcihCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrKSB7IG1f
c3VjY2Vzc29ycy5hcHBlbmQoYmxvY2spOyB9CisgICAgY29uc3QgVmVjdG9yPEJ5dGVjb2RlQmFz
aWNCbG9jayo+JiBzdWNjZXNzb3JzKCkgY29uc3QgeyByZXR1cm4gbV9zdWNjZXNzb3JzOyB9CiAK
ICAgICBGYXN0Qml0VmVjdG9yJiBpbigpIHsgcmV0dXJuIG1faW47IH0KICAgICBGYXN0Qml0VmVj
dG9yJiBvdXQoKSB7IHJldHVybiBtX291dDsgfQogCisgICAgdW5zaWduZWQgaW5kZXgoKSBjb25z
dCB7IHJldHVybiBtX2luZGV4OyB9CisKKyAgICBzdGF0aWMgdm9pZCBjb21wdXRlQnl0ZWNvZGVC
YXNpY0Jsb2NrcyhDb2RlQmxvY2sqLCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVu
c2lnbmVkIGluc3RydWN0aW9uQ291bnQsIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVC
YXNpY0Jsb2NrPj4mKTsKKyAgICBzdGF0aWMgdm9pZCBjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2Nr
cyhVbmxpbmtlZENvZGVCbG9jayosIFVubGlua2VkSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0Jl
Z2luLCB1bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50LCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5
dGVjb2RlQmFzaWNCbG9jaz4+Jik7CisKIHByaXZhdGU6CisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
QmxvY2ssIHR5cGVuYW1lIEluc3RydWN0aW9uPiBzdGF0aWMgdm9pZCBjb21wdXRlQnl0ZWNvZGVC
YXNpY0Jsb2Nrc0ludGVybmFsKEJsb2NrKiBjb2RlQmxvY2ssIEluc3RydWN0aW9uKiBpbnN0cnVj
dGlvbnNCZWdpbiwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCwgVmVjdG9yPHN0ZDo6dW5pcXVl
X3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9ja3MpOworCisgICAgdm9pZCBhZGRT
dWNjZXNzb3IoQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaykgeyBtX3N1Y2Nlc3NvcnMuYXBwZW5k
KGJsb2NrKTsgfQorCisgICAgdm9pZCBhZGRCeXRlY29kZUxlbmd0aCh1bnNpZ25lZCk7CisKICAg
ICB1bnNpZ25lZCBtX2xlYWRlckJ5dGVjb2RlT2Zmc2V0OwogICAgIHVuc2lnbmVkIG1fdG90YWxC
eXRlY29kZUxlbmd0aDsKKyAgICB1bnNpZ25lZCBtX2luZGV4OwogCiAgICAgVmVjdG9yPHVuc2ln
bmVkPiBtX2J5dGVjb2RlT2Zmc2V0czsKICAgICBWZWN0b3I8Qnl0ZWNvZGVCYXNpY0Jsb2NrKj4g
bV9zdWNjZXNzb3JzOwpAQCAtNjgsOCArODEsNiBAQCBjbGFzcyBCeXRlY29kZUJhc2ljQmxvY2sg
ewogICAgIEZhc3RCaXRWZWN0b3IgbV9vdXQ7CiB9OwogCi12b2lkIGNvbXB1dGVCeXRlY29kZUJh
c2ljQmxvY2tzKENvZGVCbG9jayosIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNp
Y0Jsb2NrPj4mKTsKLQogaW5saW5lIEJ5dGVjb2RlQmFzaWNCbG9jazo6Qnl0ZWNvZGVCYXNpY0Js
b2NrKHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBsZW5ndGgpCiAgICAgOiBtX2xlYWRlckJ5dGVj
b2RlT2Zmc2V0KHN0YXJ0KQogICAgICwgbV90b3RhbEJ5dGVjb2RlTGVuZ3RoKGxlbmd0aCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUdlbmVyYXRv
cmlmaWNhdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVH
ZW5lcmF0b3JpZmljYXRpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVlMWIwYWE2MTg2ZjVjM2M0YTlkZjhj
MzJjNWExZDc2YmYyOGQxNWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwCkBAIC0wLDAgKzEsMjY4
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVh
QGdtYWlsLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJCeXRl
Y29kZUdlbmVyYXRvcmlmaWNhdGlvbi5oIgorCisjaW5jbHVkZSAiQnl0ZWNvZGVMaXZlbmVzc0Fu
YWx5c2lzSW5saW5lcy5oIgorI2luY2x1ZGUgIkJ5dGVjb2RlUmV3cml0ZXIuaCIKKyNpbmNsdWRl
ICJCeXRlY29kZVVzZURlZi5oIgorI2luY2x1ZGUgIklkZW50aWZpZXJJbmxpbmVzLmgiCisjaW5j
bHVkZSAiSW50ZXJwcmV0ZXJJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2lu
Y2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNHZW5lcmF0b3JGdW5jdGlv
bi5oIgorI2luY2x1ZGUgIlN0cm9uZ0lubGluZXMuaCIKKyNpbmNsdWRlICJVbmxpbmtlZENvZGVC
bG9jay5oIgorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgorCituYW1lc3BhY2UgSlNDIHsKKwor
c3RydWN0IFlpZWxkRGF0YSB7CisgICAgc2l6ZV90IHBvaW50IHsgMCB9OworICAgIGludCBhcmd1
bWVudCB7IDAgfTsKKyAgICBGYXN0Qml0VmVjdG9yIGxpdmVuZXNzOworfTsKKworY2xhc3MgQnl0
ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24geworcHVibGljOgorICAgIHR5cGVkZWYgVmVjdG9yPFlp
ZWxkRGF0YT4gWWllbGRzOworCisgICAgQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24oVW5saW5r
ZWRDb2RlQmxvY2sqIGNvZGVCbG9jaywgVW5saW5rZWRDb2RlQmxvY2s6OlVucGFja2VkSW5zdHJ1
Y3Rpb25zJiBpbnN0cnVjdGlvbnMsIFN5bWJvbFRhYmxlKiBnZW5lcmF0b3JGcmFtZVN5bWJvbFRh
YmxlLCBpbnQgZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZUluZGV4KQorICAgICAgICA6IG1fZ3Jh
cGgoY29kZUJsb2NrLCBpbnN0cnVjdGlvbnMpCisgICAgICAgICwgbV9nZW5lcmF0b3JGcmFtZVN5
bWJvbFRhYmxlKCpjb2RlQmxvY2stPnZtKCksIGdlbmVyYXRvckZyYW1lU3ltYm9sVGFibGUpCisg
ICAgICAgICwgbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlSW5kZXgoZ2VuZXJhdG9yRnJhbWVT
eW1ib2xUYWJsZUluZGV4KQorICAgIHsKKyAgICAgICAgZm9yIChCeXRlY29kZUJhc2ljQmxvY2sq
IGJsb2NrIDogbV9ncmFwaCkgeworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBieXRlY29kZU9m
ZnNldCA6IGJsb2NrLT5ieXRlY29kZU9mZnNldHMoKSkgeworICAgICAgICAgICAgICAgIGNvbnN0
IFVubGlua2VkSW5zdHJ1Y3Rpb24qIHBjID0gJm1fZ3JhcGguaW5zdHJ1Y3Rpb25zKClbYnl0ZWNv
ZGVPZmZzZXRdOworICAgICAgICAgICAgICAgIHN3aXRjaCAocGMtPnUub3Bjb2RlKSB7CisgICAg
ICAgICAgICAgICAgY2FzZSBvcF9lbnRlcjogeworICAgICAgICAgICAgICAgICAgICBtX2VudGVy
UG9pbnQgPSBieXRlY29kZU9mZnNldDsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgY2FzZSBvcF95aWVsZDogeworICAgICAg
ICAgICAgICAgICAgICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSBwY1syXS51Lmlu
ZGV4OworICAgICAgICAgICAgICAgICAgICBpZiAobGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID49IG1f
eWllbGRzLnNpemUoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIG1feWllbGRzLnJlc2l6ZShs
aXZlQ2FsbGVlTG9jYWxzSW5kZXggKyAxKTsKKyAgICAgICAgICAgICAgICAgICAgWWllbGREYXRh
JiBkYXRhID0gbV95aWVsZHNbbGl2ZUNhbGxlZUxvY2Fsc0luZGV4XTsKKyAgICAgICAgICAgICAg
ICAgICAgZGF0YS5wb2ludCA9IGJ5dGVjb2RlT2Zmc2V0OworICAgICAgICAgICAgICAgICAgICBk
YXRhLmFyZ3VtZW50ID0gcGNbM10udS5vcGVyYW5kOworICAgICAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICBzdHJ1Y3QgU3RvcmFnZSB7CisgICAgICAgIElkZW50aWZp
ZXIgaWRlbnRpZmllcjsKKyAgICAgICAgdW5zaWduZWQgaWRlbnRpZmllckluZGV4OworICAgICAg
ICBTY29wZU9mZnNldCBzY29wZU9mZnNldDsKKyAgICB9OworCisgICAgdm9pZCBydW4oKTsKKwor
ICAgIEJ5dGVjb2RlR3JhcGg8VW5saW5rZWRDb2RlQmxvY2s+JiBncmFwaCgpIHsgcmV0dXJuIG1f
Z3JhcGg7IH0KKworICAgIGNvbnN0IFlpZWxkcyYgeWllbGRzKCkgY29uc3QKKyAgICB7CisgICAg
ICAgIHJldHVybiBtX3lpZWxkczsKKyAgICB9CisKKyAgICBZaWVsZHMmIHlpZWxkcygpCisgICAg
eworICAgICAgICByZXR1cm4gbV95aWVsZHM7CisgICAgfQorCisgICAgdW5zaWduZWQgZW50ZXJQ
b2ludCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9lbnRlclBvaW50OworICAgIH0K
KworcHJpdmF0ZToKKyAgICBTdG9yYWdlIHN0b3JhZ2VGb3JHZW5lcmF0b3JMb2NhbCh1bnNpZ25l
ZCBpbmRleCkKKyAgICB7CisgICAgICAgIC8vIFdlIGFzc2lnbiBhIHN5bWJvbCB0byBhIHJlZ2lz
dGVyLiBUaGVyZSBpcyBvbmUtb24tb25lIGNvcnJlc3BvbmRpbmcgYmV0d2VlbiBhIHJlZ2lzdGVy
IGFuZCBhIHN5bWJvbC4KKyAgICAgICAgLy8gQnkgZG9pbmcgc28sIHdlIGFsbG9jYXRlIHRoZSBz
cGVjaWZpYyBzdG9yYWdlIHRvIHNhdmUgdGhlIGdpdmVuIHJlZ2lzdGVyLgorICAgICAgICAvLyBU
aGlzIGFsbG93IHVzIG5vdCB0byBzYXZlIGFsbCB0aGUgbGl2ZSByZWdpc3RlcnMgZXZlbiBpZiB0
aGUgcmVnaXN0ZXJzIGFyZSBub3Qgb3ZlcndyaXR0ZW4gZnJvbSB0aGUgcHJldmlvdXMgcmVzdW1p
bmcgdGltZS4KKyAgICAgICAgLy8gSXQgbWVhbnMgdGhhdCwgdGhlIHJlZ2lzdGVyIGNhbiBiZSBy
ZXRyaWV2ZWQgZXZlbiBpZiB0aGUgaW1tZWRpYXRlIHByZXZpb3VzIG9wX3NhdmUgZG9lcyBub3Qg
c2F2ZSBpdC4KKworICAgICAgICBpZiAobV9zdG9yYWdlcy5zaXplKCkgPD0gaW5kZXgpCisgICAg
ICAgICAgICBtX3N0b3JhZ2VzLnJlc2l6ZShpbmRleCArIDEpOworICAgICAgICBpZiAoT3B0aW9u
YWw8U3RvcmFnZT4gc3RvcmFnZSA9IG1fc3RvcmFnZXNbaW5kZXhdKQorICAgICAgICAgICAgcmV0
dXJuICpzdG9yYWdlOworCisgICAgICAgIFVubGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBt
X2dyYXBoLmNvZGVCbG9jaygpOworICAgICAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIgPSBJZGVu
dGlmaWVyOjpmcm9tVWlkKFByaXZhdGVOYW1lKCkpOworICAgICAgICB1bnNpZ25lZCBpZGVudGlm
aWVySW5kZXggPSBjb2RlQmxvY2stPm51bWJlck9mSWRlbnRpZmllcnMoKTsKKyAgICAgICAgY29k
ZUJsb2NrLT5hZGRJZGVudGlmaWVyKGlkZW50aWZpZXIpOworICAgICAgICBTY29wZU9mZnNldCBz
Y29wZU9mZnNldCA9IG1fZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZS0+dGFrZU5leHRTY29wZU9m
ZnNldChOb0xvY2tpbmdOZWNlc3NhcnkpOworICAgICAgICBtX2dlbmVyYXRvckZyYW1lU3ltYm9s
VGFibGUtPnNldChOb0xvY2tpbmdOZWNlc3NhcnksIGlkZW50aWZpZXIuaW1wbCgpLCBTeW1ib2xU
YWJsZUVudHJ5KFZhck9mZnNldChzY29wZU9mZnNldCkpKTsKKworICAgICAgICBTdG9yYWdlIHN0
b3JhZ2UgPSB7CisgICAgICAgICAgICBpZGVudGlmaWVyLAorICAgICAgICAgICAgaWRlbnRpZmll
ckluZGV4LAorICAgICAgICAgICAgc2NvcGVPZmZzZXQKKyAgICAgICAgfTsKKyAgICAgICAgbV9z
dG9yYWdlc1tpbmRleF0gPSBzdG9yYWdlOworICAgICAgICByZXR1cm4gc3RvcmFnZTsKKyAgICB9
CisKKyAgICB1bnNpZ25lZCBtX2VudGVyUG9pbnQgeyAwIH07CisgICAgQnl0ZWNvZGVHcmFwaDxV
bmxpbmtlZENvZGVCbG9jaz4gbV9ncmFwaDsKKyAgICBWZWN0b3I8T3B0aW9uYWw8U3RvcmFnZT4+
IG1fc3RvcmFnZXM7CisgICAgWWllbGRzIG1feWllbGRzOworICAgIFN0cm9uZzxTeW1ib2xUYWJs
ZT4gbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlOworICAgIGludCBtX2dlbmVyYXRvckZyYW1l
U3ltYm9sVGFibGVJbmRleDsKK307CisKK2NsYXNzIEdlbmVyYXRvckxpdmVuZXNzQW5hbHlzaXMg
OiBwdWJsaWMgQnl0ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0aW9uPEdlbmVyYXRvckxpdmVuZXNzQW5h
bHlzaXM+IHsKK3B1YmxpYzoKKyAgICBHZW5lcmF0b3JMaXZlbmVzc0FuYWx5c2lzKEJ5dGVjb2Rl
R2VuZXJhdG9yaWZpY2F0aW9uJiBnZW5lcmF0b3JpZmljYXRpb24pCisgICAgICAgIDogbV9nZW5l
cmF0b3JpZmljYXRpb24oZ2VuZXJhdG9yaWZpY2F0aW9uKQorICAgIHsKKyAgICB9CisKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgorICAgIHZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29k
ZU9mZnNldChVbmxpbmtlZENvZGVCbG9jayogY29kZUJsb2NrLCBPcGNvZGVJRCBvcGNvZGVJRCwg
VW5saW5rZWRJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIEZhc3RCaXRWZWN0b3ImLCBjb25zdCBG
dW5jdG9yJiBmdW5jdG9yKQorICAgIHsKKyAgICAgICAgSlNDOjpjb21wdXRlRGVmc0ZvckJ5dGVj
b2RlT2Zmc2V0KGNvZGVCbG9jaywgb3Bjb2RlSUQsIGluc3RydWN0aW9uLCBmdW5jdG9yKTsKKyAg
ICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgorICAgIHZvaWQgY29tcHV0ZVVz
ZXNGb3JCeXRlY29kZU9mZnNldChVbmxpbmtlZENvZGVCbG9jayogY29kZUJsb2NrLCBPcGNvZGVJ
RCBvcGNvZGVJRCwgVW5saW5rZWRJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIEZhc3RCaXRWZWN0
b3ImLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQorICAgIHsKKyAgICAgICAgSlNDOjpjb21wdXRl
VXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9jaywgb3Bjb2RlSUQsIGluc3RydWN0aW9uLCBm
dW5jdG9yKTsKKyAgICB9CisKKyAgICB2b2lkIHJ1bigpCisgICAgeworICAgICAgICAvLyBQZXJm
b3JtIG1vZGlmaWVkIGxpdmVuZXNzIGFuYWx5c2lzIHRvIGRldGVybWluZSB3aGljaCBsb2NhbHMg
YXJlIGxpdmUgYXQgdGhlIG1lcmdlIHBvaW50cy4KKyAgICAgICAgLy8gVGhpcyBwcm9kdWNlcyB0
aGUgY29uc2VydmF0aXZlIHJlc3VsdHMgZm9yIHRoZSBxdWVzdGlvbiwgIndoaWNoIHZhcmlhYmxl
cyBzaG91bGQgYmUgc2F2ZWQgYW5kIHJlc3VtZWQ/Ii4KKworICAgICAgICBydW5MaXZlbmVzc0Zp
eHBvaW50KG1fZ2VuZXJhdG9yaWZpY2F0aW9uLmdyYXBoKCkpOworCisgICAgICAgIGZvciAoWWll
bGREYXRhJiBkYXRhIDogbV9nZW5lcmF0b3JpZmljYXRpb24ueWllbGRzKCkpCisgICAgICAgICAg
ICBkYXRhLmxpdmVuZXNzID0gZ2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29kZU9mZnNldChtX2dlbmVy
YXRvcmlmaWNhdGlvbi5ncmFwaCgpLCBkYXRhLnBvaW50ICsgb3Bjb2RlTGVuZ3RoKG9wX3lpZWxk
KSk7CisgICAgfQorCitwcml2YXRlOgorICAgIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uJiBt
X2dlbmVyYXRvcmlmaWNhdGlvbjsKK307CisKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRp
b246OnJ1bigpCit7CisgICAgLy8gV2UgY2FsY3VsYXRlIHRoZSBsaXZlbmVzcyBhdCBlYWNoIG1l
cmdlIHBvaW50LiBUaGlzIGdpdmVzIHVzIHRoZSBpbmZvcm1hdGlvbiB3aGljaCByZWdpc3RlcnMg
c2hvdWxkIGJlIHNhdmVkIGFuZCByZXN1bWVkIGNvbnNlcnZhdGl2ZWx5LgorCisgICAgeworICAg
ICAgICBHZW5lcmF0b3JMaXZlbmVzc0FuYWx5c2lzIHBhc3MoKnRoaXMpOworICAgICAgICBwYXNz
LnJ1bigpOworICAgIH0KKworICAgIFVubGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBtX2dy
YXBoLmNvZGVCbG9jaygpOworICAgIEJ5dGVjb2RlUmV3cml0ZXIgcmV3cml0ZXIobV9ncmFwaCk7
CisKKyAgICAvLyBTZXR1cCB0aGUgZ2xvYmFsIHN3aXRjaCBmb3IgdGhlIGdlbmVyYXRvci4KKyAg
ICB7CisgICAgICAgIHVuc2lnbmVkIG5leHRUb0VudGVyUG9pbnQgPSBlbnRlclBvaW50KCkgKyBv
cGNvZGVMZW5ndGgob3BfZW50ZXIpOworICAgICAgICB1bnNpZ25lZCBzd2l0Y2hUYWJsZUluZGV4
ID0gbV9ncmFwaC5jb2RlQmxvY2soKS0+bnVtYmVyT2ZTd2l0Y2hKdW1wVGFibGVzKCk7CisgICAg
ICAgIFZpcnR1YWxSZWdpc3RlciBzdGF0ZSA9IHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KHN0
YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yRnVuY3Rpb246OkdlbmVyYXRvckFyZ3VtZW50
OjpTdGF0ZSkpOworICAgICAgICBhdXRvJiBqdW1wVGFibGUgPSBtX2dyYXBoLmNvZGVCbG9jaygp
LT5hZGRTd2l0Y2hKdW1wVGFibGUoKTsKKyAgICAgICAganVtcFRhYmxlLm1pbiA9IDA7CisgICAg
ICAgIGp1bXBUYWJsZS5icmFuY2hPZmZzZXRzLnJlc2l6ZShtX3lpZWxkcy5zaXplKCkgKyAxKTsK
KyAgICAgICAganVtcFRhYmxlLmJyYW5jaE9mZnNldHMuZmlsbCgwKTsKKyAgICAgICAganVtcFRh
YmxlLmFkZCgwLCBuZXh0VG9FbnRlclBvaW50KTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IG1feWllbGRzLnNpemUoKTsgKytpKQorICAgICAgICAgICAganVtcFRhYmxlLmFkZChp
ICsgMSwgbV95aWVsZHNbaV0ucG9pbnQpOworCisgICAgICAgIHJld3JpdGVyLmluc2VydEZyYWdt
ZW50QmVmb3JlKG5leHRUb0VudGVyUG9pbnQsIFsmXShCeXRlY29kZVJld3JpdGVyOjpGcmFnbWVu
dCYgZnJhZ21lbnQpIHsKKyAgICAgICAgICAgIGZyYWdtZW50LmFwcGVuZEluc3RydWN0aW9uKG9w
X3N3aXRjaF9pbW0sIHN3aXRjaFRhYmxlSW5kZXgsIG5leHRUb0VudGVyUG9pbnQsIHN0YXRlLm9m
ZnNldCgpKTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgZm9yIChjb25zdCBZaWVsZERhdGEm
IGRhdGEgOiBtX3lpZWxkcykgeworICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgc2NvcGUgPSB2aXJ0
dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvckZ1
bmN0aW9uOjpHZW5lcmF0b3JBcmd1bWVudDo6RnJhbWUpKTsKKworICAgICAgICAvLyBFbWl0IHNh
dmUgc2VxdWVuY2UuCisgICAgICAgIHJld3JpdGVyLmluc2VydEZyYWdtZW50QmVmb3JlKGRhdGEu
cG9pbnQsIFsmXShCeXRlY29kZVJld3JpdGVyOjpGcmFnbWVudCYgZnJhZ21lbnQpIHsKKyAgICAg
ICAgICAgIGRhdGEubGl2ZW5lc3MuZm9yRWFjaFNldEJpdChbJl0oc2l6ZV90IGluZGV4KSB7Cisg
ICAgICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQgPSB2aXJ0dWFsUmVnaXN0ZXJG
b3JMb2NhbChpbmRleCk7CisgICAgICAgICAgICAgICAgU3RvcmFnZSBzdG9yYWdlID0gc3RvcmFn
ZUZvckdlbmVyYXRvckxvY2FsKGluZGV4KTsKKworICAgICAgICAgICAgICAgIGZyYWdtZW50LmFw
cGVuZEluc3RydWN0aW9uKAorICAgICAgICAgICAgICAgICAgICBvcF9wdXRfdG9fc2NvcGUsCisg
ICAgICAgICAgICAgICAgICAgIHNjb3BlLm9mZnNldCgpLCAvLyBzY29wZQorICAgICAgICAgICAg
ICAgICAgICBzdG9yYWdlLmlkZW50aWZpZXJJbmRleCwgLy8gaWRlbnRpZmllcgorICAgICAgICAg
ICAgICAgICAgICBvcGVyYW5kLm9mZnNldCgpLCAvLyB2YWx1ZQorICAgICAgICAgICAgICAgICAg
ICBHZXRQdXRJbmZvKERvTm90VGhyb3dJZk5vdEZvdW5kLCBMb2NhbENsb3N1cmVWYXIsIEluaXRp
YWxpemF0aW9uTW9kZTo6Tm90SW5pdGlhbGl6YXRpb24pLm9wZXJhbmQoKSwgLy8gaW5mbworICAg
ICAgICAgICAgICAgICAgICBtX2dlbmVyYXRvckZyYW1lU3ltYm9sVGFibGVJbmRleCwgLy8gc3lt
Ym9sIHRhYmxlIGNvbnN0YW50IGluZGV4CisgICAgICAgICAgICAgICAgICAgIHN0b3JhZ2Uuc2Nv
cGVPZmZzZXQub2Zmc2V0KCkgLy8gc2NvcGUgb2Zmc2V0CisgICAgICAgICAgICAgICAgKTsKKyAg
ICAgICAgICAgIH0pOworCisgICAgICAgICAgICAvLyBJbnNlcnQgb3BfcmV0IGp1c3QgYWZ0ZXIg
c2F2ZSBzZXF1ZW5jZS4KKyAgICAgICAgICAgIGZyYWdtZW50LmFwcGVuZEluc3RydWN0aW9uKG9w
X3JldCwgZGF0YS5hcmd1bWVudCk7CisgICAgICAgIH0pOworCisgICAgICAgIC8vIEVtaXQgcmVz
dW1lIHNlcXVlbmNlLgorICAgICAgICByZXdyaXRlci5pbnNlcnRGcmFnbWVudEJlZm9yZShkYXRh
LnBvaW50ICsgb3Bjb2RlTGVuZ3RoKG9wX3lpZWxkKSwgWyZdKEJ5dGVjb2RlUmV3cml0ZXI6OkZy
YWdtZW50JiBmcmFnbWVudCkgeworICAgICAgICAgICAgZGF0YS5saXZlbmVzcy5mb3JFYWNoU2V0
Qml0KFsmXShzaXplX3QgaW5kZXgpIHsKKyAgICAgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIg
b3BlcmFuZCA9IHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGluZGV4KTsKKyAgICAgICAgICAgICAg
ICBTdG9yYWdlIHN0b3JhZ2UgPSBzdG9yYWdlRm9yR2VuZXJhdG9yTG9jYWwoaW5kZXgpOworCisg
ICAgICAgICAgICAgICAgVW5saW5rZWRWYWx1ZVByb2ZpbGUgcHJvZmlsZSA9IGNvZGVCbG9jay0+
YWRkVmFsdWVQcm9maWxlKCk7CisgICAgICAgICAgICAgICAgZnJhZ21lbnQuYXBwZW5kSW5zdHJ1
Y3Rpb24oCisgICAgICAgICAgICAgICAgICAgIG9wX2dldF9mcm9tX3Njb3BlLAorICAgICAgICAg
ICAgICAgICAgICBvcGVyYW5kLm9mZnNldCgpLCAvLyBkc3QKKyAgICAgICAgICAgICAgICAgICAg
c2NvcGUub2Zmc2V0KCksIC8vIHNjb3BlCisgICAgICAgICAgICAgICAgICAgIHN0b3JhZ2UuaWRl
bnRpZmllckluZGV4LCAvLyBpZGVudGlmaWVyCisgICAgICAgICAgICAgICAgICAgIEdldFB1dElu
Zm8oRG9Ob3RUaHJvd0lmTm90Rm91bmQsIExvY2FsQ2xvc3VyZVZhciwgSW5pdGlhbGl6YXRpb25N
b2RlOjpOb3RJbml0aWFsaXphdGlvbikub3BlcmFuZCgpLCAvLyBpbmZvCisgICAgICAgICAgICAg
ICAgICAgIDAsIC8vIGxvY2FsIHNjb3BlIGRlcHRoCisgICAgICAgICAgICAgICAgICAgIHN0b3Jh
Z2Uuc2NvcGVPZmZzZXQub2Zmc2V0KCksIC8vIHNjb3BlIG9mZnNldAorICAgICAgICAgICAgICAg
ICAgICBwcm9maWxlIC8vIHByb2ZpbGUKKyAgICAgICAgICAgICAgICApOworICAgICAgICAgICAg
fSk7CisgICAgICAgIH0pOworCisgICAgICAgIC8vIENsaXAgdGhlIHVubmVjZXNzYXJ5IGJ5dGVj
b2Rlcy4KKyAgICAgICAgcmV3cml0ZXIucmVtb3ZlQnl0ZWNvZGUoZGF0YS5wb2ludCk7CisgICAg
fQorCisgICAgcmV3cml0ZXIuZXhlY3V0ZSgpOworfQorCit2b2lkIHBlcmZvcm1HZW5lcmF0b3Jp
ZmljYXRpb24oVW5saW5rZWRDb2RlQmxvY2sqIGNvZGVCbG9jaywgVW5saW5rZWRDb2RlQmxvY2s6
OlVucGFja2VkSW5zdHJ1Y3Rpb25zJiBpbnN0cnVjdGlvbnMsIFN5bWJvbFRhYmxlKiBnZW5lcmF0
b3JGcmFtZVN5bWJvbFRhYmxlLCBpbnQgZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZUluZGV4KQor
eworICAgIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uIHBhc3MoY29kZUJsb2NrLCBpbnN0cnVj
dGlvbnMsIGdlbmVyYXRvckZyYW1lU3ltYm9sVGFibGUsIGdlbmVyYXRvckZyYW1lU3ltYm9sVGFi
bGVJbmRleCk7CisgICAgcGFzcy5ydW4oKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3Jp
ZmljYXRpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUdlbmVy
YXRvcmlmaWNhdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM3YjYxMzc0NjA4NmFlMzRjNGMwYTIyYmY0ZTY3
Yzc2ZTZjZmQ0ZTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uaApAQCAtMCwwICsxLDM3IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE2IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNv
bT4KKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiVW5saW5rZWRDb2RlQmxvY2su
aCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIFN5bWJvbFRhYmxlOworCit2b2lkIHBlcmZv
cm1HZW5lcmF0b3JpZmljYXRpb24oVW5saW5rZWRDb2RlQmxvY2sqLCBVbmxpbmtlZENvZGVCbG9j
azo6VW5wYWNrZWRJbnN0cnVjdGlvbnMmLCBTeW1ib2xUYWJsZSogZ2VuZXJhdG9yRnJhbWVTeW1i
b2xUYWJsZSwgaW50IGdlbmVyYXRvckZyYW1lU3ltYm9sVGFibGVJbmRleCk7CisKK30gLy8gbmFt
ZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlR3JhcGguaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUdy
YXBoLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uM2JhYTdlODVlZmEwNzQxNmExZDVmZjgyMTI4ZmJkYzY1YjRjMDQ0
YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZUdyYXBoLmgKQEAgLTAsMCArMSwxMjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYg
WXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorICogQ29weXJpZ2h0IChDKSAy
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpbmNsdWRlICJCeXRlY29kZUJhc2ljQmxvY2suaCIKKyNpbmNsdWRlIDx3dGYvSW5k
ZXhlZENvbnRhaW5lckl0ZXJhdG9yLmg+CisjaW5jbHVkZSA8d3RmL0l0ZXJhdG9yUmFuZ2UuaD4K
KyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBCeXRl
Y29kZUJhc2ljQmxvY2s7CisKK3RlbXBsYXRlPHR5cGVuYW1lIEJsb2NrPgorY2xhc3MgQnl0ZWNv
ZGVHcmFwaCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoQnl0ZWNvZGVHcmFwaCk7CitwdWJsaWM6CisgICAgdHlwZWRlZiBCbG9jayBDb2Rl
QmxvY2s7CisgICAgdHlwZWRlZiB0eXBlbmFtZSBCbG9jazo6SW5zdHJ1Y3Rpb24gSW5zdHJ1Y3Rp
b247CisgICAgdHlwZWRlZiBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9j
az4+IEJhc2ljQmxvY2tzVmVjdG9yOworCisgICAgdHlwZWRlZiBXVEY6OkluZGV4ZWRDb250YWlu
ZXJJdGVyYXRvcjxCeXRlY29kZUdyYXBoPEJsb2NrPj4gaXRlcmF0b3I7CisKKyAgICBpbmxpbmUg
Qnl0ZWNvZGVHcmFwaChCbG9jayosIHR5cGVuYW1lIEJsb2NrOjpVbnBhY2tlZEluc3RydWN0aW9u
cyYpOworCisgICAgQmxvY2sqIGNvZGVCbG9jaygpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2Nr
OyB9CisKKyAgICB0eXBlbmFtZSBCbG9jazo6VW5wYWNrZWRJbnN0cnVjdGlvbnMmIGluc3RydWN0
aW9ucygpIHsgcmV0dXJuIG1faW5zdHJ1Y3Rpb25zOyB9CisKKyAgICBXVEY6Okl0ZXJhdG9yUmFu
Z2U8QmFzaWNCbG9ja3NWZWN0b3I6OnJldmVyc2VfaXRlcmF0b3I+IGJhc2ljQmxvY2tzSW5SZXZl
cnNlT3JkZXIoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFdURjo6bWFrZUl0ZXJhdG9yUmFuZ2Uo
bV9iYXNpY0Jsb2Nrcy5yYmVnaW4oKSwgbV9iYXNpY0Jsb2Nrcy5yZW5kKCkpOworICAgIH0KKwor
ICAgIHN0YXRpYyBib29sIGJsb2NrQ29udGFpbnNCeXRlY29kZU9mZnNldChCeXRlY29kZUJhc2lj
QmxvY2sqIGJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCkKKyAgICB7CisgICAgICAgIHVu
c2lnbmVkIGxlYWRlck9mZnNldCA9IGJsb2NrLT5sZWFkZXJCeXRlY29kZU9mZnNldCgpOworICAg
ICAgICByZXR1cm4gYnl0ZWNvZGVPZmZzZXQgPj0gbGVhZGVyT2Zmc2V0ICYmIGJ5dGVjb2RlT2Zm
c2V0IDwgbGVhZGVyT2Zmc2V0ICsgYmxvY2stPnRvdGFsQnl0ZWNvZGVMZW5ndGgoKTsKKyAgICB9
CisKKyAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGZpbmRCYXNpY0Jsb2NrRm9yQnl0ZWNvZGVPZmZz
ZXQodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpCisgICAgeworICAgICAgICAvKgorICAgICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fYmFzaWNCbG9ja3Muc2l6ZSgpOyBpKyspIHsK
KyAgICAgICAgICAgICAgICBpZiAoYmxvY2tDb250YWluc0J5dGVjb2RlT2Zmc2V0KG1fYmFzaWNC
bG9ja3NbaV0uZ2V0KCksIGJ5dGVjb2RlT2Zmc2V0KSkKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIG1fYmFzaWNCbG9ja3NbaV0uZ2V0KCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBy
ZXR1cm4gMDsKKyAgICAgICAgKi8KKworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVC
YXNpY0Jsb2NrPiogYmFzaWNCbG9jayA9IGFwcHJveGltYXRlQmluYXJ5U2VhcmNoPHN0ZDo6dW5p
cXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+LCB1bnNpZ25lZD4obV9iYXNpY0Jsb2NrcywgbV9i
YXNpY0Jsb2Nrcy5zaXplKCksIGJ5dGVjb2RlT2Zmc2V0LCBbXSAoc3RkOjp1bmlxdWVfcHRyPEJ5
dGVjb2RlQmFzaWNCbG9jaz4qIGJhc2ljQmxvY2spIHsgcmV0dXJuICgqYmFzaWNCbG9jayktPmxl
YWRlckJ5dGVjb2RlT2Zmc2V0KCk7IH0pOworICAgICAgICAvLyBXZSBmb3VuZCB0aGUgYmxvY2sg
d2Ugd2VyZSBsb29raW5nIGZvci4KKyAgICAgICAgaWYgKGJsb2NrQ29udGFpbnNCeXRlY29kZU9m
ZnNldCgoKmJhc2ljQmxvY2spLmdldCgpLCBieXRlY29kZU9mZnNldCkpCisgICAgICAgICAgICBy
ZXR1cm4gKCpiYXNpY0Jsb2NrKS5nZXQoKTsKKworICAgICAgICAvLyBCYXNpYyBibG9jayBpcyB0
byB0aGUgbGVmdCBvZiB0aGUgcmV0dXJuZWQgYmxvY2suCisgICAgICAgIGlmIChieXRlY29kZU9m
ZnNldCA8ICgqYmFzaWNCbG9jayktPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCkpIHsKKyAgICAgICAg
ICAgIEFTU0VSVChiYXNpY0Jsb2NrIC0gMSA+PSBtX2Jhc2ljQmxvY2tzLmRhdGEoKSk7CisgICAg
ICAgICAgICBBU1NFUlQoYmxvY2tDb250YWluc0J5dGVjb2RlT2Zmc2V0KGJhc2ljQmxvY2tbLTFd
LmdldCgpLCBieXRlY29kZU9mZnNldCkpOworICAgICAgICAgICAgcmV0dXJuIGJhc2ljQmxvY2tb
LTFdLmdldCgpOworICAgICAgICB9CisKKyAgICAgICAgLy8gQmFzaWMgYmxvY2sgaXMgdG8gdGhl
IHJpZ2h0IG9mIHRoZSByZXR1cm5lZCBibG9jay4KKyAgICAgICAgQVNTRVJUKCZiYXNpY0Jsb2Nr
WzFdIDw9ICZtX2Jhc2ljQmxvY2tzLmxhc3QoKSk7CisgICAgICAgIEFTU0VSVChibG9ja0NvbnRh
aW5zQnl0ZWNvZGVPZmZzZXQoYmFzaWNCbG9ja1sxXS5nZXQoKSwgYnl0ZWNvZGVPZmZzZXQpKTsK
KyAgICAgICAgcmV0dXJuIGJhc2ljQmxvY2tbMV0uZ2V0KCk7CisgICAgfQorCisgICAgQnl0ZWNv
ZGVCYXNpY0Jsb2NrKiBmaW5kQmFzaWNCbG9ja1dpdGhMZWFkZXJPZmZzZXQodW5zaWduZWQgbGVh
ZGVyT2Zmc2V0KQorICAgIHsKKyAgICAgICAgcmV0dXJuICgqdHJ5QmluYXJ5U2VhcmNoPHN0ZDo6
dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+LCB1bnNpZ25lZD4obV9iYXNpY0Jsb2Nrcywg
bV9iYXNpY0Jsb2Nrcy5zaXplKCksIGxlYWRlck9mZnNldCwgW10gKHN0ZDo6dW5pcXVlX3B0cjxC
eXRlY29kZUJhc2ljQmxvY2s+KiBiYXNpY0Jsb2NrKSB7IHJldHVybiAoKmJhc2ljQmxvY2spLT5s
ZWFkZXJCeXRlY29kZU9mZnNldCgpOyB9KSkuZ2V0KCk7CisgICAgfQorCisgICAgdW5zaWduZWQg
c2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYmFzaWNCbG9ja3Muc2l6ZSgpOyB9CisgICAgQnl0ZWNv
ZGVCYXNpY0Jsb2NrKiBhdCh1bnNpZ25lZCBpbmRleCkgY29uc3QgeyByZXR1cm4gbV9iYXNpY0Js
b2Nrc1tpbmRleF0uZ2V0KCk7IH0KKyAgICBCeXRlY29kZUJhc2ljQmxvY2sqIG9wZXJhdG9yW10o
dW5zaWduZWQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIGF0KGluZGV4KTsgfQorCisgICAgaXRlcmF0
b3IgYmVnaW4oKSBjb25zdCB7IHJldHVybiBpdGVyYXRvcigqdGhpcywgMCk7IH0KKyAgICBpdGVy
YXRvciBlbmQoKSBjb25zdCB7IHJldHVybiBpdGVyYXRvcigqdGhpcywgc2l6ZSgpKTsgfQorICAg
IEJ5dGVjb2RlQmFzaWNCbG9jayogZmlyc3QoKSB7IHJldHVybiBhdCgwKTsgfQorICAgIEJ5dGVj
b2RlQmFzaWNCbG9jayogbGFzdCgpIHsgcmV0dXJuIGF0KHNpemUoKSAtIDEpOyB9CisKK3ByaXZh
dGU6CisgICAgQmxvY2sqIG1fY29kZUJsb2NrOworICAgIEJhc2ljQmxvY2tzVmVjdG9yIG1fYmFz
aWNCbG9ja3M7CisgICAgdHlwZW5hbWUgQmxvY2s6OlVucGFja2VkSW5zdHJ1Y3Rpb25zJiBtX2lu
c3RydWN0aW9uczsKK307CisKKwordGVtcGxhdGU8dHlwZW5hbWUgQmxvY2s+CitCeXRlY29kZUdy
YXBoPEJsb2NrPjo6Qnl0ZWNvZGVHcmFwaChCbG9jayogY29kZUJsb2NrLCB0eXBlbmFtZSBCbG9j
azo6VW5wYWNrZWRJbnN0cnVjdGlvbnMmIGluc3RydWN0aW9ucykKKyAgICA6IG1fY29kZUJsb2Nr
KGNvZGVCbG9jaykKKyAgICAsIG1faW5zdHJ1Y3Rpb25zKGluc3RydWN0aW9ucykKK3sKKyAgICBB
U1NFUlQobV9jb2RlQmxvY2spOworICAgIEJ5dGVjb2RlQmFzaWNCbG9jazo6Y29tcHV0ZUJ5dGVj
b2RlQmFzaWNCbG9ja3MobV9jb2RlQmxvY2ssIGluc3RydWN0aW9ucy5iZWdpbigpLCBpbnN0cnVj
dGlvbnMuc2l6ZSgpLCBtX2Jhc2ljQmxvY2tzKTsKKyAgICBBU1NFUlQobV9iYXNpY0Jsb2Nrcy5z
aXplKCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbiBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgppbmRleCBlMzgwMjVkNWFmY2Y2OWNlNDgw
YWU5Mjg5OGM5MzhlOTMxMjc4OGQ5Li5jZTYwZGE0YTI2YmMzNDc3ZmQ0NzE5YjBhNGIxZmVjZTU4
OWM2MTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVMaXN0Lmpzb24KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
TGlzdC5qc29uCkBAIC0xNDMsOCArMTQzLDcgQEAKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9w
X2Fzc2VydCIsICJsZW5ndGgiIDogMyB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfY3Jl
YXRlX3Jlc3QiLCAibGVuZ3RoIjogNCB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfZ2V0
X3Jlc3RfbGVuZ3RoIiwgImxlbmd0aCI6IDMgfSwKLSAgICAgICAgICAgIHsgIm5hbWUiIDogIm9w
X3NhdmUiLCAibGVuZ3RoIiA6IDQgfSwKLSAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX3Jlc3Vt
ZSIsICJsZW5ndGgiIDogMyB9LAorICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfeWllbGQiLCAi
bGVuZ3RoIiA6IDQgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX3dhdGNoZG9nIiwgImxl
bmd0aCIgOiAxIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9sb2dfc2hhZG93X2NoaWNr
ZW5fcHJvbG9ndWUiLCAibGVuZ3RoIiA6IDJ9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3Bf
bG9nX3NoYWRvd19jaGlja2VuX3RhaWwiLCAibGVuZ3RoIiA6IDN9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMu
Y3BwCmluZGV4IDE3ZTgyYTJmYmJhMDE1MDQzZTk5ZDM0ZWQyNTY5MzcyYjM2ZjdhODUuLmExNTQw
ZjFkYmI0M2U5MmVjN2E0ZDc5YmMzNGM5MDdkYjdjMjZmM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMu
Y3BwCkBAIC0zMSwxOTggKzMxLDM2IEBACiAjaW5jbHVkZSAiQnl0ZWNvZGVVc2VEZWYuaCIKICNp
bmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJGdWxsQnl0ZWNvZGVMaXZlbmVzcy5oIgot
I2luY2x1ZGUgIlByZWNpc2VKdW1wVGFyZ2V0cy5oIgorI2luY2x1ZGUgIkludGVycHJldGVySW5s
aW5lcy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAogQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpC
eXRlY29kZUxpdmVuZXNzQW5hbHlzaXMoQ29kZUJsb2NrKiBjb2RlQmxvY2spCi0gICAgOiBtX2Nv
ZGVCbG9jayhjb2RlQmxvY2spCisgICAgOiBtX2dyYXBoKGNvZGVCbG9jaywgY29kZUJsb2NrLT5p
bnN0cnVjdGlvbnMoKSkKIHsKLSAgICBBU1NFUlQobV9jb2RlQmxvY2spOwogICAgIGNvbXB1dGUo
KTsKIH0KIAotc3RhdGljIGJvb2wgaXNWYWxpZFJlZ2lzdGVyRm9yTGl2ZW5lc3MoQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIGludCBvcGVyYW5kKQordGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KK3Zv
aWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0
KENvZGVCbG9jayogY29kZUJsb2NrLCBPcGNvZGVJRCBvcGNvZGVJRCwgSW5zdHJ1Y3Rpb24qIGlu
c3RydWN0aW9uLCBGYXN0Qml0VmVjdG9yJiwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikKIHsKLSAg
ICBpZiAoY29kZUJsb2NrLT5pc0NvbnN0YW50UmVnaXN0ZXJJbmRleChvcGVyYW5kKSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIAotICAgIFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnKG9w
ZXJhbmQpOwotICAgIHJldHVybiB2aXJ0dWFsUmVnLmlzTG9jYWwoKTsKLX0KLQotc3RhdGljIHVu
c2lnbmVkIGdldExlYWRlck9mZnNldEZvckJhc2ljQmxvY2soc3RkOjp1bmlxdWVfcHRyPEJ5dGVj
b2RlQmFzaWNCbG9jaz4qIGJhc2ljQmxvY2spCi17Ci0gICAgcmV0dXJuICgqYmFzaWNCbG9jaykt
PmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCk7Ci19Ci0KLXN0YXRpYyBCeXRlY29kZUJhc2ljQmxvY2sq
IGZpbmRCYXNpY0Jsb2NrV2l0aExlYWRlck9mZnNldChWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5
dGVjb2RlQmFzaWNCbG9jaz4+JiBiYXNpY0Jsb2NrcywgdW5zaWduZWQgbGVhZGVyT2Zmc2V0KQot
ewotICAgIHJldHVybiAoKnRyeUJpbmFyeVNlYXJjaDxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVC
YXNpY0Jsb2NrPiwgdW5zaWduZWQ+KGJhc2ljQmxvY2tzLCBiYXNpY0Jsb2Nrcy5zaXplKCksIGxl
YWRlck9mZnNldCwgZ2V0TGVhZGVyT2Zmc2V0Rm9yQmFzaWNCbG9jaykpLmdldCgpOwotfQotCi1z
dGF0aWMgYm9vbCBibG9ja0NvbnRhaW5zQnl0ZWNvZGVPZmZzZXQoQnl0ZWNvZGVCYXNpY0Jsb2Nr
KiBibG9jaywgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpCi17Ci0gICAgdW5zaWduZWQgbGVhZGVy
T2Zmc2V0ID0gYmxvY2stPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCk7Ci0gICAgcmV0dXJuIGJ5dGVj
b2RlT2Zmc2V0ID49IGxlYWRlck9mZnNldCAmJiBieXRlY29kZU9mZnNldCA8IGxlYWRlck9mZnNl
dCArIGJsb2NrLT50b3RhbEJ5dGVjb2RlTGVuZ3RoKCk7Ci19Ci0KLXN0YXRpYyBCeXRlY29kZUJh
c2ljQmxvY2sqIGZpbmRCYXNpY0Jsb2NrRm9yQnl0ZWNvZGVPZmZzZXQoVmVjdG9yPHN0ZDo6dW5p
cXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9ja3MsIHVuc2lnbmVkIGJ5dGVj
b2RlT2Zmc2V0KQotewotLyoKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYmFzaWNCbG9j
a3Muc2l6ZSgpOyBpKyspIHsKLSAgICAgICAgaWYgKGJsb2NrQ29udGFpbnNCeXRlY29kZU9mZnNl
dChiYXNpY0Jsb2Nrc1tpXS5nZXQoKSwgYnl0ZWNvZGVPZmZzZXQpKQotICAgICAgICAgICAgcmV0
dXJuIGJhc2ljQmxvY2tzW2ldLmdldCgpOwotICAgIH0KLSAgICByZXR1cm4gMDsKLSovCi0gICAg
c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4qIGJhc2ljQmxvY2sgPSBhcHByb3hp
bWF0ZUJpbmFyeVNlYXJjaDxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiwgdW5z
aWduZWQ+KAotICAgICAgICBiYXNpY0Jsb2NrcywgYmFzaWNCbG9ja3Muc2l6ZSgpLCBieXRlY29k
ZU9mZnNldCwgZ2V0TGVhZGVyT2Zmc2V0Rm9yQmFzaWNCbG9jayk7Ci0gICAgLy8gV2UgZm91bmQg
dGhlIGJsb2NrIHdlIHdlcmUgbG9va2luZyBmb3IuCi0gICAgaWYgKGJsb2NrQ29udGFpbnNCeXRl
Y29kZU9mZnNldCgoKmJhc2ljQmxvY2spLmdldCgpLCBieXRlY29kZU9mZnNldCkpCi0gICAgICAg
IHJldHVybiAoKmJhc2ljQmxvY2spLmdldCgpOwotCi0gICAgLy8gQmFzaWMgYmxvY2sgaXMgdG8g
dGhlIGxlZnQgb2YgdGhlIHJldHVybmVkIGJsb2NrLgotICAgIGlmIChieXRlY29kZU9mZnNldCA8
ICgqYmFzaWNCbG9jayktPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCkpIHsKLSAgICAgICAgQVNTRVJU
KGJhc2ljQmxvY2sgLSAxID49IGJhc2ljQmxvY2tzLmRhdGEoKSk7Ci0gICAgICAgIEFTU0VSVChi
bG9ja0NvbnRhaW5zQnl0ZWNvZGVPZmZzZXQoYmFzaWNCbG9ja1stMV0uZ2V0KCksIGJ5dGVjb2Rl
T2Zmc2V0KSk7Ci0gICAgICAgIHJldHVybiBiYXNpY0Jsb2NrWy0xXS5nZXQoKTsKLSAgICB9Ci0K
LSAgICAvLyBCYXNpYyBibG9jayBpcyB0byB0aGUgcmlnaHQgb2YgdGhlIHJldHVybmVkIGJsb2Nr
LgotICAgIEFTU0VSVCgmYmFzaWNCbG9ja1sxXSA8PSAmYmFzaWNCbG9ja3MubGFzdCgpKTsKLSAg
ICBBU1NFUlQoYmxvY2tDb250YWluc0J5dGVjb2RlT2Zmc2V0KGJhc2ljQmxvY2tbMV0uZ2V0KCks
IGJ5dGVjb2RlT2Zmc2V0KSk7Ci0gICAgcmV0dXJuIGJhc2ljQmxvY2tbMV0uZ2V0KCk7Ci19Ci0K
LS8vIFNpbXBsaWZpZWQgaW50ZXJmYWNlIHRvIGJ5dGVjb2RlIHVzZS9kZWYsIHdoaWNoIGRldGVy
bWluZXMgZGVmcyBmaXJzdCBhbmQgdGhlbiB1c2VzLCBhbmQgaW5jbHVkZXMKLS8vIGV4Y2VwdGlv
biBoYW5kbGVycyBpbiB0aGUgdXNlcy4KLXRlbXBsYXRlPHR5cGVuYW1lIFVzZUZ1bmN0b3IsIHR5
cGVuYW1lIERlZkZ1bmN0b3I+Ci1zdGF0aWMgdm9pZCBzdGVwT3Zlckluc3RydWN0aW9uKENvZGVC
bG9jayogY29kZUJsb2NrLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrLCBWZWN0b3I8c3RkOjp1
bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+JiBiYXNpY0Jsb2NrcywgdW5zaWduZWQgYnl0
ZWNvZGVPZmZzZXQsIGNvbnN0IFVzZUZ1bmN0b3ImIHVzZSwgY29uc3QgRGVmRnVuY3RvciYgZGVm
KQotewotICAgIC8vIFRoaXMgYWJzdHJhY3RseSBleGVjdXRlIHRoZSBpbnN0cnVjdGlvbiBpbiBy
ZXZlcnNlLiBJbnN0cnVjdGlvbnMgbG9naWNhbGx5IGZpcnN0IHVzZSBvcGVyYW5kcyBhbmQKLSAg
ICAvLyB0aGVuIGRlZmluZSBvcGVyYW5kcy4gVGhpcyBsb2dpY2FsIG9yZGVyaW5nIGlzIG5lY2Vz
c2FyeSBmb3Igb3BlcmF0aW9ucyB0aGF0IHVzZSBhbmQgZGVmIHRoZSBzYW1lCi0gICAgLy8gb3Bl
cmFuZCwgbGlrZToKLSAgICAvLwotICAgIC8vICAgICBvcF9hZGQgbG9jMSwgbG9jMSwgbG9jMgot
ICAgIC8vCi0gICAgLy8gVGhlIHVzZSBvZiBsb2MxIGhhcHBlbnMgYmVmb3JlIHRoZSBkZWYgb2Yg
bG9jMS4gVGhhdCdzIGEgc2VtYW50aWMgcmVxdWlyZW1lbnQgc2luY2UgdGhlIGFkZAotICAgIC8v
IG9wZXJhdGlvbiBjYW5ub3QgdHJhdmVsIGZvcndhcmQgaW4gdGltZSB0byByZWFkIHRoZSB2YWx1
ZSB0aGF0IGl0IHdpbGwgcHJvZHVjZSBhZnRlciByZWFkaW5nIHRoYXQKLSAgICAvLyB2YWx1ZS4g
U2luY2Ugd2UgYXJlIGV4ZWN1dGluZyBpbiByZXZlcnNlLCB0aGlzIG1lYW5zIHRoYXQgd2UgbXVz
dCBkbyBkZWZzIGJlZm9yZSB1c2VzIChyZXZlcnNlIG9mCi0gICAgLy8gdXNlcyBiZWZvcmUgZGVm
cykuCi0gICAgLy8KLSAgICAvLyBTaW5jZSB0aGlzIGlzIGEgbGl2ZW5lc3MgYW5hbHlzaXMsIHRo
aXMgb3JkZXJpbmcgZW5kcyB1cCBiZWluZyBwYXJ0aWN1bGFybHkgaW1wb3J0YW50OiBpZiB3ZSBk
aWQKLSAgICAvLyB1c2VzIGJlZm9yZSBkZWZzLCB0aGVuIHRoZSBhZGQgb3BlcmF0aW9uIGFib3Zl
IHdvdWxkIGFwcGVhciB0byBub3QgaGF2ZSBsb2MxIGxpdmUsIHNpbmNlIHdlJ2QKLSAgICAvLyBm
aXJzdCBhZGQgaXQgdG8gdGhlIG91dCBzZXQgKHRoZSB1c2UpLCBhbmQgdGhlbiB3ZSdkIHJlbW92
ZSBpdCAodGhlIGRlZikuCi0gICAgCi0gICAgY29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldCgK
LSAgICAgICAgY29kZUJsb2NrLCBibG9jaywgYnl0ZWNvZGVPZmZzZXQsCi0gICAgICAgIFsmXSAo
Q29kZUJsb2NrKiBjb2RlQmxvY2ssIEluc3RydWN0aW9uKiwgT3Bjb2RlSUQsIGludCBvcGVyYW5k
KSB7Ci0gICAgICAgICAgICBpZiAoaXNWYWxpZFJlZ2lzdGVyRm9yTGl2ZW5lc3MoY29kZUJsb2Nr
LCBvcGVyYW5kKSkKLSAgICAgICAgICAgICAgICBkZWYoVmlydHVhbFJlZ2lzdGVyKG9wZXJhbmQp
LnRvTG9jYWwoKSk7Ci0gICAgICAgIH0pOwotCi0gICAgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9m
ZnNldCgKLSAgICAgICAgY29kZUJsb2NrLCBibG9jaywgYnl0ZWNvZGVPZmZzZXQsCi0gICAgICAg
IFsmXSAoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEluc3RydWN0aW9uKiwgT3Bjb2RlSUQsIGludCBv
cGVyYW5kKSB7Ci0gICAgICAgICAgICBpZiAoaXNWYWxpZFJlZ2lzdGVyRm9yTGl2ZW5lc3MoY29k
ZUJsb2NrLCBvcGVyYW5kKSkKLSAgICAgICAgICAgICAgICB1c2UoVmlydHVhbFJlZ2lzdGVyKG9w
ZXJhbmQpLnRvTG9jYWwoKSk7Ci0gICAgICAgIH0pOwotCi0gICAgLy8gSWYgd2UgaGF2ZSBhbiBl
eGNlcHRpb24gaGFuZGxlciwgd2Ugd2FudCB0aGUgbGl2ZS1pbiB2YXJpYWJsZXMgb2YgdGhlIAot
ICAgIC8vIGV4Y2VwdGlvbiBoYW5kbGVyIGJsb2NrIHRvIGJlIGluY2x1ZGVkIGluIHRoZSBsaXZl
LWluIG9mIHRoaXMgcGFydGljdWxhciBieXRlY29kZS4KLSAgICBpZiAoSGFuZGxlckluZm8qIGhh
bmRsZXIgPSBjb2RlQmxvY2stPmhhbmRsZXJGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNl
dCkpIHsKLSAgICAgICAgLy8gRklYTUU6IFRoaXMgcmVzdW1lIGNoZWNrIHNob3VsZCBub3QgYmUg
bmVlZGVkLgotICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTU5MjgxCi0gICAgICAgIEludGVycHJldGVyKiBpbnRlcnByZXRlciA9IGNvZGVCbG9jay0+
dm0oKS0+aW50ZXJwcmV0ZXI7Ci0gICAgICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdp
biA9IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsKLSAgICAgICAgSW5zdHJ1Y3Rp
b24qIGluc3RydWN0aW9uID0gJmluc3RydWN0aW9uc0JlZ2luW2J5dGVjb2RlT2Zmc2V0XTsKLSAg
ICAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoaW5zdHJ1
Y3Rpb24tPnUub3Bjb2RlKTsKLSAgICAgICAgaWYgKG9wY29kZUlEICE9IG9wX3Jlc3VtZSkgewot
ICAgICAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBoYW5kbGVyQmxvY2sgPSBmaW5kQmFzaWNC
bG9ja1dpdGhMZWFkZXJPZmZzZXQoYmFzaWNCbG9ja3MsIGhhbmRsZXItPnRhcmdldCk7Ci0gICAg
ICAgICAgICBBU1NFUlQoaGFuZGxlckJsb2NrKTsKLSAgICAgICAgICAgIGhhbmRsZXJCbG9jay0+
aW4oKS5mb3JFYWNoU2V0Qml0KHVzZSk7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLXN0YXRpYyB2
b2lkIHN0ZXBPdmVySW5zdHJ1Y3Rpb24oQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFz
aWNCbG9jayogYmxvY2ssIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2Nr
Pj4mIGJhc2ljQmxvY2tzLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgRmFzdEJpdFZlY3RvciYg
b3V0KQotewotICAgIHN0ZXBPdmVySW5zdHJ1Y3Rpb24oCi0gICAgICAgIGNvZGVCbG9jaywgYmxv
Y2ssIGJhc2ljQmxvY2tzLCBieXRlY29kZU9mZnNldCwKLSAgICAgICAgWyZdICh1bnNpZ25lZCBi
aXRJbmRleCkgewotICAgICAgICAgICAgLy8gVGhpcyBpcyB0aGUgdXNlIGZ1bmN0b3IsIHNvIHdl
IHNldCB0aGUgYml0LgotICAgICAgICAgICAgb3V0LnNldChiaXRJbmRleCk7Ci0gICAgICAgIH0s
Ci0gICAgICAgIFsmXSAodW5zaWduZWQgYml0SW5kZXgpIHsKLSAgICAgICAgICAgIC8vIFRoaXMg
aXMgdGhlIGRlZiBmdW5jdG9yLCBzbyB3ZSBjbGVhciB0aGUgYml0LgotICAgICAgICAgICAgb3V0
LmNsZWFyKGJpdEluZGV4KTsKLSAgICAgICAgfSk7CisgICAgSlNDOjpjb21wdXRlRGVmc0ZvckJ5
dGVjb2RlT2Zmc2V0KGNvZGVCbG9jaywgb3Bjb2RlSUQsIGluc3RydWN0aW9uLCBmdW5jdG9yKTsK
IH0KIAotc3RhdGljIHZvaWQgY29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCeXRlY29kZU9mZnNldChD
b2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaywgVmVjdG9yPHN0
ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9ja3MsIHVuc2lnbmVk
IHRhcmdldE9mZnNldCwgRmFzdEJpdFZlY3RvciYgcmVzdWx0KQordGVtcGxhdGU8dHlwZW5hbWUg
RnVuY3Rvcj4KK3ZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlVXNlc0ZvckJ5
dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBPcGNvZGVJRCBvcGNvZGVJRCwgSW5z
dHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBGYXN0Qml0VmVjdG9yJiwgY29uc3QgRnVuY3RvciYgZnVu
Y3RvcikKIHsKLSAgICBBU1NFUlQoIWJsb2NrLT5pc0V4aXRCbG9jaygpKTsKLSAgICBBU1NFUlQo
IWJsb2NrLT5pc0VudHJ5QmxvY2soKSk7Ci0KLSAgICBGYXN0Qml0VmVjdG9yIG91dCA9IGJsb2Nr
LT5vdXQoKTsKLQotICAgIGZvciAoaW50IGkgPSBibG9jay0+Ynl0ZWNvZGVPZmZzZXRzKCkuc2l6
ZSgpIC0gMTsgaSA+PSAwOyBpLS0pIHsKLSAgICAgICAgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQg
PSBibG9jay0+Ynl0ZWNvZGVPZmZzZXRzKClbaV07Ci0gICAgICAgIGlmICh0YXJnZXRPZmZzZXQg
PiBieXRlY29kZU9mZnNldCkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAKLSAgICAgICAg
c3RlcE92ZXJJbnN0cnVjdGlvbihjb2RlQmxvY2ssIGJsb2NrLCBiYXNpY0Jsb2NrcywgYnl0ZWNv
ZGVPZmZzZXQsIG91dCk7Ci0gICAgfQotCi0gICAgcmVzdWx0LnNldChvdXQpOwotfQotCi1zdGF0
aWMgdm9pZCBjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJsb2NrKENvZGVCbG9jayogY29kZUJsb2Nr
LCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVj
b2RlQmFzaWNCbG9jaz4+JiBiYXNpY0Jsb2NrcykKLXsKLSAgICBpZiAoYmxvY2stPmlzRXhpdEJs
b2NrKCkgfHwgYmxvY2stPmlzRW50cnlCbG9jaygpKQotICAgICAgICByZXR1cm47Ci0gICAgY29t
cHV0ZUxvY2FsTGl2ZW5lc3NGb3JCeXRlY29kZU9mZnNldChjb2RlQmxvY2ssIGJsb2NrLCBiYXNp
Y0Jsb2NrcywgYmxvY2stPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCksIGJsb2NrLT5pbigpKTsKLX0K
LQotdm9pZCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OnJ1bkxpdmVuZXNzRml4cG9pbnQoKQot
ewotICAgIFVubGlua2VkQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jayA9IG1fY29kZUJsb2Nr
LT51bmxpbmtlZENvZGVCbG9jaygpOwotICAgIHVuc2lnbmVkIG51bWJlck9mVmFyaWFibGVzID0g
dW5saW5rZWRDb2RlQmxvY2stPm1fbnVtQ2FsbGVlTG9jYWxzOwotCi0gICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IG1fYmFzaWNCbG9ja3Muc2l6ZSgpOyBpKyspIHsKLSAgICAgICAgQnl0ZWNv
ZGVCYXNpY0Jsb2NrKiBibG9jayA9IG1fYmFzaWNCbG9ja3NbaV0uZ2V0KCk7Ci0gICAgICAgIGJs
b2NrLT5pbigpLnJlc2l6ZShudW1iZXJPZlZhcmlhYmxlcyk7Ci0gICAgICAgIGJsb2NrLT5vdXQo
KS5yZXNpemUobnVtYmVyT2ZWYXJpYWJsZXMpOwotICAgIH0KLQotICAgIGJvb2wgY2hhbmdlZDsK
LSAgICBtX2Jhc2ljQmxvY2tzLmxhc3QoKS0+aW4oKS5jbGVhckFsbCgpOwotICAgIG1fYmFzaWNC
bG9ja3MubGFzdCgpLT5vdXQoKS5jbGVhckFsbCgpOwotICAgIEZhc3RCaXRWZWN0b3IgbmV3T3V0
OwotICAgIG5ld091dC5yZXNpemUobV9iYXNpY0Jsb2Nrcy5sYXN0KCktPm91dCgpLm51bUJpdHMo
KSk7Ci0gICAgZG8gewotICAgICAgICBjaGFuZ2VkID0gZmFsc2U7Ci0gICAgICAgIGZvciAodW5z
aWduZWQgaSA9IG1fYmFzaWNCbG9ja3Muc2l6ZSgpIC0gMTsgaS0tOykgewotICAgICAgICAgICAg
Qnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jayA9IG1fYmFzaWNCbG9ja3NbaV0uZ2V0KCk7Ci0gICAg
ICAgICAgICBuZXdPdXQuY2xlYXJBbGwoKTsKLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgaiA9
IDA7IGogPCBibG9jay0+c3VjY2Vzc29ycygpLnNpemUoKTsgaisrKQotICAgICAgICAgICAgICAg
IG5ld091dC5tZXJnZShibG9jay0+c3VjY2Vzc29ycygpW2pdLT5pbigpKTsKLSAgICAgICAgICAg
IGJvb2wgb3V0RGlkQ2hhbmdlID0gYmxvY2stPm91dCgpLnNldEFuZENoZWNrKG5ld091dCk7Ci0g
ICAgICAgICAgICBjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJsb2NrKG1fY29kZUJsb2NrLCBibG9j
aywgbV9iYXNpY0Jsb2Nrcyk7Ci0gICAgICAgICAgICBjaGFuZ2VkIHw9IG91dERpZENoYW5nZTsK
LSAgICAgICAgfQotICAgIH0gd2hpbGUgKGNoYW5nZWQpOworICAgIEpTQzo6Y29tcHV0ZVVzZXNG
b3JCeXRlY29kZU9mZnNldChjb2RlQmxvY2ssIG9wY29kZUlELCBpbnN0cnVjdGlvbiwgZnVuY3Rv
cik7CiB9CiAKIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpnZXRMaXZlbmVzc0luZm9B
dEJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBGYXN0Qml0VmVjdG9yJiBy
ZXN1bHQpCiB7Ci0gICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jayA9IGZpbmRCYXNpY0Jsb2Nr
Rm9yQnl0ZWNvZGVPZmZzZXQobV9iYXNpY0Jsb2NrcywgYnl0ZWNvZGVPZmZzZXQpOworICAgIEJ5
dGVjb2RlQmFzaWNCbG9jayogYmxvY2sgPSBtX2dyYXBoLmZpbmRCYXNpY0Jsb2NrRm9yQnl0ZWNv
ZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpOwogICAgIEFTU0VSVChibG9jayk7CiAgICAgQVNTRVJU
KCFibG9jay0+aXNFbnRyeUJsb2NrKCkpOwogICAgIEFTU0VSVCghYmxvY2stPmlzRXhpdEJsb2Nr
KCkpOwogICAgIHJlc3VsdC5yZXNpemUoYmxvY2stPm91dCgpLm51bUJpdHMoKSk7Ci0gICAgY29t
cHV0ZUxvY2FsTGl2ZW5lc3NGb3JCeXRlY29kZU9mZnNldChtX2NvZGVCbG9jaywgYmxvY2ssIG1f
YmFzaWNCbG9ja3MsIGJ5dGVjb2RlT2Zmc2V0LCByZXN1bHQpOworICAgIGNvbXB1dGVMb2NhbExp
dmVuZXNzRm9yQnl0ZWNvZGVPZmZzZXQobV9ncmFwaCwgYmxvY2ssIGJ5dGVjb2RlT2Zmc2V0LCBy
ZXN1bHQpOwogfQogCiBib29sIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6b3BlcmFuZElzTGl2
ZUF0Qnl0ZWNvZGVPZmZzZXQoaW50IG9wZXJhbmQsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KQpA
QCAtMjQ0LDExICs4MiwxMSBAQCBGYXN0Qml0VmVjdG9yIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNp
czo6Z2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29kZU9mZnNldCh1bnNpZ25lZAogdm9pZCBCeXRlY29k
ZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGVGdWxsTGl2ZW5lc3MoRnVsbEJ5dGVjb2RlTGl2ZW5l
c3MmIHJlc3VsdCkKIHsKICAgICBGYXN0Qml0VmVjdG9yIG91dDsKKyAgICBDb2RlQmxvY2sqIGNv
ZGVCbG9jayA9IG1fZ3JhcGguY29kZUJsb2NrKCk7CiAgICAgCi0gICAgcmVzdWx0Lm1fbWFwLnJl
c2l6ZShtX2NvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKKyAgICByZXN1bHQubV9t
YXAucmVzaXplKGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKICAgICAKLSAgICBm
b3IgKHVuc2lnbmVkIGkgPSBtX2Jhc2ljQmxvY2tzLnNpemUoKTsgaS0tOykgewotICAgICAgICBC
eXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrID0gbV9iYXNpY0Jsb2Nrc1tpXS5nZXQoKTsKKyAgICBm
b3IgKHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+JiBibG9jayA6IG1fZ3JhcGgu
YmFzaWNCbG9ja3NJblJldmVyc2VPcmRlcigpKSB7CiAgICAgICAgIGlmIChibG9jay0+aXNFbnRy
eUJsb2NrKCkgfHwgYmxvY2stPmlzRXhpdEJsb2NrKCkpCiAgICAgICAgICAgICBjb250aW51ZTsK
ICAgICAgICAgCkBAIC0yNTYsNyArOTQsNyBAQCB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNp
czo6Y29tcHV0ZUZ1bGxMaXZlbmVzcyhGdWxsQnl0ZWNvZGVMaXZlbmVzcyYgcmVzdWx0KQogICAg
ICAgICAKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gYmxvY2stPmJ5dGVjb2RlT2Zmc2V0cygp
LnNpemUoKTsgaS0tOykgewogICAgICAgICAgICAgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQgPSBi
bG9jay0+Ynl0ZWNvZGVPZmZzZXRzKClbaV07Ci0gICAgICAgICAgICBzdGVwT3Zlckluc3RydWN0
aW9uKG1fY29kZUJsb2NrLCBibG9jaywgbV9iYXNpY0Jsb2NrcywgYnl0ZWNvZGVPZmZzZXQsIG91
dCk7CisgICAgICAgICAgICBzdGVwT3Zlckluc3RydWN0aW9uKG1fZ3JhcGgsIGJ5dGVjb2RlT2Zm
c2V0LCBvdXQpOwogICAgICAgICAgICAgcmVzdWx0Lm1fbWFwW2J5dGVjb2RlT2Zmc2V0XSA9IG91
dDsKICAgICAgICAgfQogICAgIH0KQEAgLTI2NiwxMSArMTA0LDExIEBAIHZvaWQgQnl0ZWNvZGVM
aXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlS2lsbHMoQnl0ZWNvZGVLaWxscyYgcmVzdWx0KQogewog
ICAgIEZhc3RCaXRWZWN0b3Igb3V0OwogICAgIAotICAgIHJlc3VsdC5tX2NvZGVCbG9jayA9IG1f
Y29kZUJsb2NrOwotICAgIHJlc3VsdC5tX2tpbGxTZXRzID0gc3RkOjptYWtlX3VuaXF1ZTxCeXRl
Y29kZUtpbGxzOjpLaWxsU2V0W10+KG1fY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5zaXplKCkp
OworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gbV9ncmFwaC5jb2RlQmxvY2soKTsKKyAgICBy
ZXN1bHQubV9jb2RlQmxvY2sgPSBjb2RlQmxvY2s7CisgICAgcmVzdWx0Lm1fa2lsbFNldHMgPSBz
dGQ6Om1ha2VfdW5pcXVlPEJ5dGVjb2RlS2lsbHM6OktpbGxTZXRbXT4oY29kZUJsb2NrLT5pbnN0
cnVjdGlvbnMoKS5zaXplKCkpOwogICAgIAotICAgIGZvciAodW5zaWduZWQgaSA9IG1fYmFzaWNC
bG9ja3Muc2l6ZSgpOyBpLS07KSB7Ci0gICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2sg
PSBtX2Jhc2ljQmxvY2tzW2ldLmdldCgpOworICAgIGZvciAoc3RkOjp1bmlxdWVfcHRyPEJ5dGVj
b2RlQmFzaWNCbG9jaz4mIGJsb2NrIDogbV9ncmFwaC5iYXNpY0Jsb2Nrc0luUmV2ZXJzZU9yZGVy
KCkpIHsKICAgICAgICAgaWYgKGJsb2NrLT5pc0VudHJ5QmxvY2soKSB8fCBibG9jay0+aXNFeGl0
QmxvY2soKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAKQEAgLTI3OSw3ICsxMTcs
NyBAQCB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0ZUtpbGxzKEJ5dGVjb2Rl
S2lsbHMmIHJlc3VsdCkKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gYmxvY2stPmJ5dGVjb2Rl
T2Zmc2V0cygpLnNpemUoKTsgaS0tOykgewogICAgICAgICAgICAgdW5zaWduZWQgYnl0ZWNvZGVP
ZmZzZXQgPSBibG9jay0+Ynl0ZWNvZGVPZmZzZXRzKClbaV07CiAgICAgICAgICAgICBzdGVwT3Zl
ckluc3RydWN0aW9uKAotICAgICAgICAgICAgICAgIG1fY29kZUJsb2NrLCBibG9jaywgbV9iYXNp
Y0Jsb2NrcywgYnl0ZWNvZGVPZmZzZXQsCisgICAgICAgICAgICAgICAgbV9ncmFwaCwgYnl0ZWNv
ZGVPZmZzZXQsIG91dCwKICAgICAgICAgICAgICAgICBbJl0gKHVuc2lnbmVkIGluZGV4KSB7CiAg
ICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgZm9yIHVzZXMuCiAgICAgICAgICAgICAgICAg
ICAgIGlmIChvdXQuZ2V0KGluZGV4KSkKQEAgLTI5NywxMiArMTM1LDEzIEBAIHZvaWQgQnl0ZWNv
ZGVMaXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlS2lsbHMoQnl0ZWNvZGVLaWxscyYgcmVzdWx0KQog
CiB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6ZHVtcFJlc3VsdHMoKQogewotICAgIGRh
dGFMb2coIlxuRHVtcGluZyBieXRlY29kZSBsaXZlbmVzcyBmb3IgIiwgKm1fY29kZUJsb2NrLCAi
OlxuIik7Ci0gICAgSW50ZXJwcmV0ZXIqIGludGVycHJldGVyID0gbV9jb2RlQmxvY2stPnZtKCkt
PmludGVycHJldGVyOwotICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiA9IG1fY29k
ZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBtX2Jhc2ljQmxvY2tzLnNpemUoKTsgaSsrKSB7Ci0gICAgICAgIEJ5dGVjb2RlQmFzaWNC
bG9jayogYmxvY2sgPSBtX2Jhc2ljQmxvY2tzW2ldLmdldCgpOwotICAgICAgICBkYXRhTG9nRigi
XG5CeXRlY29kZSBiYXNpYyBibG9jayAldTogJXAgKG9mZnNldDogJXUsIGxlbmd0aDogJXUpXG4i
LCBpLCBibG9jaywgYmxvY2stPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCksIGJsb2NrLT50b3RhbEJ5
dGVjb2RlTGVuZ3RoKCkpOworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gbV9ncmFwaC5jb2Rl
QmxvY2soKTsKKyAgICBkYXRhTG9nKCJcbkR1bXBpbmcgYnl0ZWNvZGUgbGl2ZW5lc3MgZm9yICIs
ICpjb2RlQmxvY2ssICI6XG4iKTsKKyAgICBJbnRlcnByZXRlciogaW50ZXJwcmV0ZXIgPSBjb2Rl
QmxvY2stPnZtKCktPmludGVycHJldGVyOworICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNC
ZWdpbiA9IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsKKyAgICB1bnNpZ25lZCBp
ID0gMDsKKyAgICBmb3IgKEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2sgOiBtX2dyYXBoKSB7Cisg
ICAgICAgIGRhdGFMb2dGKCJcbkJ5dGVjb2RlIGJhc2ljIGJsb2NrICV1OiAlcCAob2Zmc2V0OiAl
dSwgbGVuZ3RoOiAldSlcbiIsIGkrKywgYmxvY2ssIGJsb2NrLT5sZWFkZXJCeXRlY29kZU9mZnNl
dCgpLCBibG9jay0+dG90YWxCeXRlY29kZUxlbmd0aCgpKTsKICAgICAgICAgZGF0YUxvZ0YoIlN1
Y2Nlc3NvcnM6ICIpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSAwOyBqIDwgYmxvY2stPnN1
Y2Nlc3NvcnMoKS5zaXplKCk7IGorKykgewogICAgICAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2Nr
KiBzdWNjZXNzb3IgPSBibG9jay0+c3VjY2Vzc29ycygpW2pdOwpAQCAtMzI3LDcgKzE2Niw3IEBA
IHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpkdW1wUmVzdWx0cygpCiAgICAgICAgICAg
ICAgICAgICAgIGRhdGFMb2dGKCIldSAiLCBqKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IGRhdGFMb2dGKCJcbiIpOwotICAgICAgICAgICAgbV9jb2RlQmxvY2stPmR1bXBCeXRlY29kZShX
VEY6OmRhdGFGaWxlKCksIG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygp
LCBpbnN0cnVjdGlvbnNCZWdpbiwgY3VycmVudEluc3RydWN0aW9uKTsKKyAgICAgICAgICAgIGNv
ZGVCbG9jay0+ZHVtcEJ5dGVjb2RlKFdURjo6ZGF0YUZpbGUoKSwgY29kZUJsb2NrLT5nbG9iYWxP
YmplY3QoKS0+Z2xvYmFsRXhlYygpLCBpbnN0cnVjdGlvbnNCZWdpbiwgY3VycmVudEluc3RydWN0
aW9uKTsKIAogICAgICAgICAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnRlcnByZXRlci0+Z2V0
T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25zQmVnaW5bYnl0ZWNvZGVPZmZzZXRdLnUub3Bjb2RlKTsKICAg
ICAgICAgICAgIHVuc2lnbmVkIG9wY29kZUxlbmd0aCA9IG9wY29kZUxlbmd0aHNbb3Bjb2RlSURd
OwpAQCAtMzQ2LDkgKzE4NSw3IEBAIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpkdW1w
UmVzdWx0cygpCiAKIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlKCkKIHsK
LSAgICBjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2NrcyhtX2NvZGVCbG9jaywgbV9iYXNpY0Jsb2Nr
cyk7Ci0gICAgQVNTRVJUKG1fYmFzaWNCbG9ja3Muc2l6ZSgpKTsKLSAgICBydW5MaXZlbmVzc0Zp
eHBvaW50KCk7CisgICAgcnVuTGl2ZW5lc3NGaXhwb2ludChtX2dyYXBoKTsKIAogICAgIGlmIChP
cHRpb25zOjpkdW1wQnl0ZWNvZGVMaXZlbmVzc1Jlc3VsdHMoKSkKICAgICAgICAgZHVtcFJlc3Vs
dHMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZUxpdmVuZXNzQW5hbHlzaXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZUxpdmVuZXNzQW5hbHlzaXMuaAppbmRleCBlY2UxNmYyMWYwMTUxMGE2NDI3ZmQ4NDExNDA3
OWJlZDg3MGMwODc1Li5lMTJjZDhlZGNlNzZlMTIyZWYwNGVlMWYzNWZiYTgyMWI4ZDdmN2YwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVz
c0FuYWx5c2lzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
TGl2ZW5lc3NBbmFseXNpcy5oCkBAIC0yMywxMCArMjMsMTEgQEAKICAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNp
c19oCi0jZGVmaW5lIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc19oCisjcHJhZ21hIG9uY2UKIAog
I2luY2x1ZGUgIkJ5dGVjb2RlQmFzaWNCbG9jay5oIgorI2luY2x1ZGUgIkJ5dGVjb2RlR3JhcGgu
aCIKKyNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlIDx3dGYvRmFzdEJpdFZlY3Rvci5o
PgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAt
MzQsMTMgKzM1LDI5IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgQnl0ZWNvZGVLaWxsczsK
LWNsYXNzIENvZGVCbG9jazsKIGNsYXNzIEZ1bGxCeXRlY29kZUxpdmVuZXNzOwogCi1jbGFzcyBC
eXRlY29kZUxpdmVuZXNzQW5hbHlzaXMgewordGVtcGxhdGU8dHlwZW5hbWUgRGVyaXZlZEFuYWx5
c2lzPgorY2xhc3MgQnl0ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0aW9uIHsKK3Byb3RlY3RlZDoKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBHcmFwaCwgdHlwZW5hbWUgVXNlRnVuY3RvciwgdHlwZW5hbWUg
RGVmRnVuY3Rvcj4gdm9pZCBzdGVwT3Zlckluc3RydWN0aW9uKEdyYXBoJiwgdW5zaWduZWQgYnl0
ZWNvZGVPZmZzZXQsIEZhc3RCaXRWZWN0b3ImIG91dCwgY29uc3QgVXNlRnVuY3RvciYsIGNvbnN0
IERlZkZ1bmN0b3ImKTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEdyYXBoPiB2b2lkIHN0ZXBP
dmVySW5zdHJ1Y3Rpb24oR3JhcGgmLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgRmFzdEJpdFZl
Y3RvciYgb3V0KTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEdyYXBoPiBib29sIGNvbXB1dGVM
b2NhbExpdmVuZXNzRm9yQnl0ZWNvZGVPZmZzZXQoR3JhcGgmLCBCeXRlY29kZUJhc2ljQmxvY2sq
LCB1bnNpZ25lZCB0YXJnZXRPZmZzZXQsIEZhc3RCaXRWZWN0b3ImIHJlc3VsdCk7CisKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBHcmFwaD4gYm9vbCBjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJsb2Nr
KEdyYXBoJiwgQnl0ZWNvZGVCYXNpY0Jsb2NrKik7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBH
cmFwaD4gRmFzdEJpdFZlY3RvciBnZXRMaXZlbmVzc0luZm9BdEJ5dGVjb2RlT2Zmc2V0KEdyYXBo
JiwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpOworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgR3Jh
cGg+IHZvaWQgcnVuTGl2ZW5lc3NGaXhwb2ludChHcmFwaCYpOworfTsKKworY2xhc3MgQnl0ZWNv
ZGVMaXZlbmVzc0FuYWx5c2lzIDogcHJpdmF0ZSBCeXRlY29kZUxpdmVuZXNzUHJvcGFnYXRpb248
Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzPiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzKTsKIHB1
YmxpYzoKKyAgICBmcmllbmQgY2xhc3MgQnl0ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0aW9uPEJ5dGVj
b2RlTGl2ZW5lc3NBbmFseXNpcz47CiAgICAgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzKENvZGVC
bG9jayopOwogICAgIAogICAgIGJvb2wgb3BlcmFuZElzTGl2ZUF0Qnl0ZWNvZGVPZmZzZXQoaW50
IG9wZXJhbmQsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KTsKQEAgLTUxLDE5ICs2OCwxOSBAQCBj
bGFzcyBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMgewogCiBwcml2YXRlOgogICAgIHZvaWQgY29t
cHV0ZSgpOwotICAgIHZvaWQgcnVuTGl2ZW5lc3NGaXhwb2ludCgpOwogICAgIHZvaWQgZHVtcFJl
c3VsdHMoKTsKIAogICAgIHZvaWQgZ2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29kZU9mZnNldCh1bnNp
Z25lZCBieXRlY29kZU9mZnNldCwgRmFzdEJpdFZlY3RvciYpOwogCi0gICAgQ29kZUJsb2NrKiBt
X2NvZGVCbG9jazsKLSAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9j
az4+IG1fYmFzaWNCbG9ja3M7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdm9pZCBj
b21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayosIE9wY29kZUlELCBJbnN0cnVj
dGlvbiosIEZhc3RCaXRWZWN0b3ImLCBjb25zdCBGdW5jdG9yJik7CisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgRnVuY3Rvcj4gdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9j
ayosIE9wY29kZUlELCBJbnN0cnVjdGlvbiosIEZhc3RCaXRWZWN0b3ImLCBjb25zdCBGdW5jdG9y
Jik7CisKKyAgICBCeXRlY29kZUdyYXBoPENvZGVCbG9jaz4gbV9ncmFwaDsKIH07CiAKIGlubGlu
ZSBib29sIG9wZXJhbmRJc0Fsd2F5c0xpdmUoaW50IG9wZXJhbmQpOwogaW5saW5lIGJvb2wgb3Bl
cmFuZFRoYXRJc05vdEFsd2F5c0xpdmVJc0xpdmUoY29uc3QgRmFzdEJpdFZlY3RvciYgb3V0LCBp
bnQgb3BlcmFuZCk7CiBpbmxpbmUgYm9vbCBvcGVyYW5kSXNMaXZlKGNvbnN0IEZhc3RCaXRWZWN0
b3ImIG91dCwgaW50IG9wZXJhbmQpOworaW5saW5lIGJvb2wgaXNWYWxpZFJlZ2lzdGVyRm9yTGl2
ZW5lc3MoaW50IG9wZXJhbmQpOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKLQotI2VuZGlmIC8vIEJ5
dGVjb2RlTGl2ZW5lc3NBbmFseXNpc19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzSW5saW5lcy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGluZXMuaApp
bmRleCA5YjVjNzU1ZmNiNmNkNTE4MDUxNDUwMDc4OTIyYWM0ZDZkNGQyMzhmLi5jZjZjOGQyYTQz
NGQxZGU5NjFhYTRhOWIxZTBlNGQwYzRmYzFkZTE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzSW5saW5lcy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNJ
bmxpbmVzLmgKQEAgLTIzLDExICsyMywxMiBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgogICovCiAKLSNpZm5kZWYgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzSW5saW5lc19o
Ci0jZGVmaW5lIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGluZXNfaAorI3ByYWdtYSBvbmNl
CiAKKyNpbmNsdWRlICJCeXRlY29kZUdyYXBoLmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVMaXZlbmVz
c0FuYWx5c2lzLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiSW50ZXJwcmV0
ZXIuaCIKICNpbmNsdWRlICJPcGVyYXRpb25zLmgiCiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtNTAs
NyArNTEsMTUxIEBAIGlubGluZSBib29sIG9wZXJhbmRJc0xpdmUoY29uc3QgRmFzdEJpdFZlY3Rv
ciYgb3V0LCBpbnQgb3BlcmFuZCkKICAgICByZXR1cm4gb3BlcmFuZElzQWx3YXlzTGl2ZShvcGVy
YW5kKSB8fCBvcGVyYW5kVGhhdElzTm90QWx3YXlzTGl2ZUlzTGl2ZShvdXQsIG9wZXJhbmQpOwog
fQogCi19IC8vIG5hbWVzcGFjZSBKU0MKK2lubGluZSBib29sIGlzVmFsaWRSZWdpc3RlckZvckxp
dmVuZXNzKGludCBvcGVyYW5kKQoreworICAgIFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnKG9w
ZXJhbmQpOworICAgIGlmICh2aXJ0dWFsUmVnLmlzQ29uc3RhbnQoKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIHJldHVybiB2aXJ0dWFsUmVnLmlzTG9jYWwoKTsKK30KKworLy8gU2ltcGxp
ZmllZCBpbnRlcmZhY2UgdG8gYnl0ZWNvZGUgdXNlL2RlZiwgd2hpY2ggZGV0ZXJtaW5lcyBkZWZz
IGZpcnN0IGFuZCB0aGVuIHVzZXMsIGFuZCBpbmNsdWRlcworLy8gZXhjZXB0aW9uIGhhbmRsZXJz
IGluIHRoZSB1c2VzLgordGVtcGxhdGU8dHlwZW5hbWUgRGVyaXZlZEFuYWx5c2lzPgordGVtcGxh
dGU8dHlwZW5hbWUgR3JhcGgsIHR5cGVuYW1lIFVzZUZ1bmN0b3IsIHR5cGVuYW1lIERlZkZ1bmN0
b3I+CitpbmxpbmUgdm9pZCBCeXRlY29kZUxpdmVuZXNzUHJvcGFnYXRpb248RGVyaXZlZEFuYWx5
c2lzPjo6c3RlcE92ZXJJbnN0cnVjdGlvbihHcmFwaCYgZ3JhcGgsIHVuc2lnbmVkIGJ5dGVjb2Rl
T2Zmc2V0LCBGYXN0Qml0VmVjdG9yJiBvdXQsIGNvbnN0IFVzZUZ1bmN0b3ImIHVzZSwgY29uc3Qg
RGVmRnVuY3RvciYgZGVmKQoreworICAgIC8vIFRoaXMgYWJzdHJhY3RseSBleGVjdXRlIHRoZSBp
bnN0cnVjdGlvbiBpbiByZXZlcnNlLiBJbnN0cnVjdGlvbnMgbG9naWNhbGx5IGZpcnN0IHVzZSBv
cGVyYW5kcyBhbmQKKyAgICAvLyB0aGVuIGRlZmluZSBvcGVyYW5kcy4gVGhpcyBsb2dpY2FsIG9y
ZGVyaW5nIGlzIG5lY2Vzc2FyeSBmb3Igb3BlcmF0aW9ucyB0aGF0IHVzZSBhbmQgZGVmIHRoZSBz
YW1lCisgICAgLy8gb3BlcmFuZCwgbGlrZToKKyAgICAvLworICAgIC8vICAgICBvcF9hZGQgbG9j
MSwgbG9jMSwgbG9jMgorICAgIC8vCisgICAgLy8gVGhlIHVzZSBvZiBsb2MxIGhhcHBlbnMgYmVm
b3JlIHRoZSBkZWYgb2YgbG9jMS4gVGhhdCdzIGEgc2VtYW50aWMgcmVxdWlyZW1lbnQgc2luY2Ug
dGhlIGFkZAorICAgIC8vIG9wZXJhdGlvbiBjYW5ub3QgdHJhdmVsIGZvcndhcmQgaW4gdGltZSB0
byByZWFkIHRoZSB2YWx1ZSB0aGF0IGl0IHdpbGwgcHJvZHVjZSBhZnRlciByZWFkaW5nIHRoYXQK
KyAgICAvLyB2YWx1ZS4gU2luY2Ugd2UgYXJlIGV4ZWN1dGluZyBpbiByZXZlcnNlLCB0aGlzIG1l
YW5zIHRoYXQgd2UgbXVzdCBkbyBkZWZzIGJlZm9yZSB1c2VzIChyZXZlcnNlIG9mCisgICAgLy8g
dXNlcyBiZWZvcmUgZGVmcykuCisgICAgLy8KKyAgICAvLyBTaW5jZSB0aGlzIGlzIGEgbGl2ZW5l
c3MgYW5hbHlzaXMsIHRoaXMgb3JkZXJpbmcgZW5kcyB1cCBiZWluZyBwYXJ0aWN1bGFybHkgaW1w
b3J0YW50OiBpZiB3ZSBkaWQKKyAgICAvLyB1c2VzIGJlZm9yZSBkZWZzLCB0aGVuIHRoZSBhZGQg
b3BlcmF0aW9uIGFib3ZlIHdvdWxkIGFwcGVhciB0byBub3QgaGF2ZSBsb2MxIGxpdmUsIHNpbmNl
IHdlJ2QKKyAgICAvLyBmaXJzdCBhZGQgaXQgdG8gdGhlIG91dCBzZXQgKHRoZSB1c2UpLCBhbmQg
dGhlbiB3ZSdkIHJlbW92ZSBpdCAodGhlIGRlZikuCisKKyAgICBhdXRvKiBjb2RlQmxvY2sgPSBn
cmFwaC5jb2RlQmxvY2soKTsKKyAgICBJbnRlcnByZXRlciogaW50ZXJwcmV0ZXIgPSBjb2RlQmxv
Y2stPnZtKCktPmludGVycHJldGVyOworICAgIGF1dG8qIGluc3RydWN0aW9uc0JlZ2luID0gZ3Jh
cGguaW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsKKyAgICBhdXRvKiBpbnN0cnVjdGlvbiA9ICZpbnN0
cnVjdGlvbnNCZWdpbltieXRlY29kZU9mZnNldF07CisgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBp
bnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoKmluc3RydWN0aW9uKTsKKworICAgIHN0YXRpY19jYXN0
PERlcml2ZWRBbmFseXNpcyo+KHRoaXMpLT5jb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KAor
ICAgICAgICBjb2RlQmxvY2ssIG9wY29kZUlELCBpbnN0cnVjdGlvbiwgb3V0LAorICAgICAgICBb
Jl0gKHR5cGVuYW1lIEdyYXBoOjpDb2RlQmxvY2sqLCB0eXBlbmFtZSBHcmFwaDo6SW5zdHJ1Y3Rp
b24qLCBPcGNvZGVJRCwgaW50IG9wZXJhbmQpIHsKKyAgICAgICAgICAgIGlmIChpc1ZhbGlkUmVn
aXN0ZXJGb3JMaXZlbmVzcyhvcGVyYW5kKSkKKyAgICAgICAgICAgICAgICBkZWYoVmlydHVhbFJl
Z2lzdGVyKG9wZXJhbmQpLnRvTG9jYWwoKSk7CisgICAgICAgIH0pOworCisgICAgc3RhdGljX2Nh
c3Q8RGVyaXZlZEFuYWx5c2lzKj4odGhpcyktPmNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQo
CisgICAgICAgIGNvZGVCbG9jaywgb3Bjb2RlSUQsIGluc3RydWN0aW9uLCBvdXQsCisgICAgICAg
IFsmXSAodHlwZW5hbWUgR3JhcGg6OkNvZGVCbG9jayosIHR5cGVuYW1lIEdyYXBoOjpJbnN0cnVj
dGlvbiosIE9wY29kZUlELCBpbnQgb3BlcmFuZCkgeworICAgICAgICAgICAgaWYgKGlzVmFsaWRS
ZWdpc3RlckZvckxpdmVuZXNzKG9wZXJhbmQpKQorICAgICAgICAgICAgICAgIHVzZShWaXJ0dWFs
UmVnaXN0ZXIob3BlcmFuZCkudG9Mb2NhbCgpKTsKKyAgICAgICAgfSk7CisKKyAgICAvLyBJZiB3
ZSBoYXZlIGFuIGV4Y2VwdGlvbiBoYW5kbGVyLCB3ZSB3YW50IHRoZSBsaXZlLWluIHZhcmlhYmxl
cyBvZiB0aGUgCisgICAgLy8gZXhjZXB0aW9uIGhhbmRsZXIgYmxvY2sgdG8gYmUgaW5jbHVkZWQg
aW4gdGhlIGxpdmUtaW4gb2YgdGhpcyBwYXJ0aWN1bGFyIGJ5dGVjb2RlLgorICAgIGlmIChhdXRv
KiBoYW5kbGVyID0gY29kZUJsb2NrLT5oYW5kbGVyRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVP
ZmZzZXQpKSB7CisgICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogaGFuZGxlckJsb2NrID0gZ3Jh
cGguZmluZEJhc2ljQmxvY2tXaXRoTGVhZGVyT2Zmc2V0KGhhbmRsZXItPnRhcmdldCk7CisgICAg
ICAgIEFTU0VSVChoYW5kbGVyQmxvY2spOworICAgICAgICBoYW5kbGVyQmxvY2stPmluKCkuZm9y
RWFjaFNldEJpdCh1c2UpOworICAgIH0KK30KKwordGVtcGxhdGU8dHlwZW5hbWUgRGVyaXZlZEFu
YWx5c2lzPgordGVtcGxhdGU8dHlwZW5hbWUgR3JhcGg+CitpbmxpbmUgdm9pZCBCeXRlY29kZUxp
dmVuZXNzUHJvcGFnYXRpb248RGVyaXZlZEFuYWx5c2lzPjo6c3RlcE92ZXJJbnN0cnVjdGlvbihH
cmFwaCYgZ3JhcGgsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBGYXN0Qml0VmVjdG9yJiBvdXQp
Cit7CisgICAgc3RlcE92ZXJJbnN0cnVjdGlvbigKKyAgICAgICAgZ3JhcGgsIGJ5dGVjb2RlT2Zm
c2V0LCBvdXQsCisgICAgICAgIFsmXSAodW5zaWduZWQgYml0SW5kZXgpIHsKKyAgICAgICAgICAg
IC8vIFRoaXMgaXMgdGhlIHVzZSBmdW5jdG9yLCBzbyB3ZSBzZXQgdGhlIGJpdC4KKyAgICAgICAg
ICAgIG91dC5zZXQoYml0SW5kZXgpOworICAgICAgICB9LAorICAgICAgICBbJl0gKHVuc2lnbmVk
IGJpdEluZGV4KSB7CisgICAgICAgICAgICAvLyBUaGlzIGlzIHRoZSBkZWYgZnVuY3Rvciwgc28g
d2UgY2xlYXIgdGhlIGJpdC4KKyAgICAgICAgICAgIG91dC5jbGVhcihiaXRJbmRleCk7CisgICAg
ICAgIH0pOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBEZXJpdmVkQW5hbHlzaXM+Cit0ZW1wbGF0
ZTx0eXBlbmFtZSBHcmFwaD4KK2lubGluZSBib29sIEJ5dGVjb2RlTGl2ZW5lc3NQcm9wYWdhdGlv
bjxEZXJpdmVkQW5hbHlzaXM+Ojpjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJ5dGVjb2RlT2Zmc2V0
KEdyYXBoJiBncmFwaCwgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaywgdW5zaWduZWQgdGFyZ2V0
T2Zmc2V0LCBGYXN0Qml0VmVjdG9yJiByZXN1bHQpCit7CisgICAgQVNTRVJUKCFibG9jay0+aXNF
eGl0QmxvY2soKSk7CisgICAgQVNTRVJUKCFibG9jay0+aXNFbnRyeUJsb2NrKCkpOwogCi0jZW5k
aWYgLy8gQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzSW5saW5lc19oCisgICAgRmFzdEJpdFZlY3Rv
ciBvdXQgPSBibG9jay0+b3V0KCk7CiAKKyAgICBmb3IgKGludCBpID0gYmxvY2stPmJ5dGVjb2Rl
T2Zmc2V0cygpLnNpemUoKSAtIDE7IGkgPj0gMDsgaS0tKSB7CisgICAgICAgIHVuc2lnbmVkIGJ5
dGVjb2RlT2Zmc2V0ID0gYmxvY2stPmJ5dGVjb2RlT2Zmc2V0cygpW2ldOworICAgICAgICBpZiAo
dGFyZ2V0T2Zmc2V0ID4gYnl0ZWNvZGVPZmZzZXQpCisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgc3RlcE92ZXJJbnN0cnVjdGlvbihncmFwaCwgYnl0ZWNvZGVPZmZzZXQsIG91dCk7CisgICAg
fQorCisgICAgcmV0dXJuIHJlc3VsdC5zZXRBbmRDaGVjayhvdXQpOworfQorCit0ZW1wbGF0ZTx0
eXBlbmFtZSBEZXJpdmVkQW5hbHlzaXM+Cit0ZW1wbGF0ZTx0eXBlbmFtZSBHcmFwaD4KK2lubGlu
ZSBib29sIEJ5dGVjb2RlTGl2ZW5lc3NQcm9wYWdhdGlvbjxEZXJpdmVkQW5hbHlzaXM+Ojpjb21w
dXRlTG9jYWxMaXZlbmVzc0ZvckJsb2NrKEdyYXBoJiBncmFwaCwgQnl0ZWNvZGVCYXNpY0Jsb2Nr
KiBibG9jaykKK3sKKyAgICBpZiAoYmxvY2stPmlzRXhpdEJsb2NrKCkgfHwgYmxvY2stPmlzRW50
cnlCbG9jaygpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIGNvbXB1dGVMb2Nh
bExpdmVuZXNzRm9yQnl0ZWNvZGVPZmZzZXQoZ3JhcGgsIGJsb2NrLCBibG9jay0+bGVhZGVyQnl0
ZWNvZGVPZmZzZXQoKSwgYmxvY2stPmluKCkpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBEZXJp
dmVkQW5hbHlzaXM+Cit0ZW1wbGF0ZTx0eXBlbmFtZSBHcmFwaD4KK2lubGluZSBGYXN0Qml0VmVj
dG9yIEJ5dGVjb2RlTGl2ZW5lc3NQcm9wYWdhdGlvbjxEZXJpdmVkQW5hbHlzaXM+OjpnZXRMaXZl
bmVzc0luZm9BdEJ5dGVjb2RlT2Zmc2V0KEdyYXBoJiBncmFwaCwgdW5zaWduZWQgYnl0ZWNvZGVP
ZmZzZXQpCit7CisgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jayA9IGdyYXBoLmZpbmRCYXNp
Y0Jsb2NrRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpOworICAgIEFTU0VSVChibG9j
ayk7CisgICAgQVNTRVJUKCFibG9jay0+aXNFbnRyeUJsb2NrKCkpOworICAgIEFTU0VSVCghYmxv
Y2stPmlzRXhpdEJsb2NrKCkpOworICAgIEZhc3RCaXRWZWN0b3Igb3V0OworICAgIG91dC5yZXNp
emUoYmxvY2stPm91dCgpLm51bUJpdHMoKSk7CisgICAgY29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JC
eXRlY29kZU9mZnNldChncmFwaCwgYmxvY2ssIGJ5dGVjb2RlT2Zmc2V0LCBvdXQpOworICAgIHJl
dHVybiBvdXQ7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIERlcml2ZWRBbmFseXNpcz4KK3RlbXBs
YXRlPHR5cGVuYW1lIEdyYXBoPgoraW5saW5lIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0
aW9uPERlcml2ZWRBbmFseXNpcz46OnJ1bkxpdmVuZXNzRml4cG9pbnQoR3JhcGgmIGdyYXBoKQor
eworICAgIGF1dG8qIGNvZGVCbG9jayA9IGdyYXBoLmNvZGVCbG9jaygpOworICAgIHVuc2lnbmVk
IG51bWJlck9mVmFyaWFibGVzID0gY29kZUJsb2NrLT5udW1DYWxsZWVMb2NhbHMoKTsKKyAgICBm
b3IgKEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2sgOiBncmFwaCkgeworICAgICAgICBibG9jay0+
aW4oKS5yZXNpemUobnVtYmVyT2ZWYXJpYWJsZXMpOworICAgICAgICBibG9jay0+b3V0KCkucmVz
aXplKG51bWJlck9mVmFyaWFibGVzKTsKKyAgICAgICAgYmxvY2stPmluKCkuY2xlYXJBbGwoKTsK
KyAgICAgICAgYmxvY2stPm91dCgpLmNsZWFyQWxsKCk7CisgICAgfQorCisgICAgYm9vbCBjaGFu
Z2VkOworICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogbGFzdEJsb2NrID0gZ3JhcGgubGFzdCgpOwor
ICAgIGxhc3RCbG9jay0+aW4oKS5jbGVhckFsbCgpOworICAgIGxhc3RCbG9jay0+b3V0KCkuY2xl
YXJBbGwoKTsKKyAgICBGYXN0Qml0VmVjdG9yIG5ld091dDsKKyAgICBuZXdPdXQucmVzaXplKGxh
c3RCbG9jay0+b3V0KCkubnVtQml0cygpKTsKKyAgICBkbyB7CisgICAgICAgIGNoYW5nZWQgPSBm
YWxzZTsKKyAgICAgICAgZm9yIChzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiYg
YmxvY2sgOiBncmFwaC5iYXNpY0Jsb2Nrc0luUmV2ZXJzZU9yZGVyKCkpIHsKKyAgICAgICAgICAg
IG5ld091dC5jbGVhckFsbCgpOworICAgICAgICAgICAgZm9yIChCeXRlY29kZUJhc2ljQmxvY2sq
IHN1Y2Nlc3NvciA6IGJsb2NrLT5zdWNjZXNzb3JzKCkpCisgICAgICAgICAgICAgICAgbmV3T3V0
Lm1lcmdlKHN1Y2Nlc3Nvci0+aW4oKSk7CisgICAgICAgICAgICBibG9jay0+b3V0KCkuc2V0KG5l
d091dCk7CisgICAgICAgICAgICBjaGFuZ2VkIHw9IGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQmxv
Y2soZ3JhcGgsIGJsb2NrLmdldCgpKTsKKyAgICAgICAgfQorICAgIH0gd2hpbGUgKGNoYW5nZWQp
OworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9CeXRlY29kZVJld3JpdGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZVJld3JpdGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yOGRjMjBiM2ZlN2Ji
YjUwNzkyOTg0MWUyMjEyNTg5NGQ4YjI3MWY4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlUmV3cml0ZXIuY3BwCkBAIC0wLDAgKzEsMTE1
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVh
QGdtYWlsLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJCeXRl
Y29kZVJld3JpdGVyLmgiCisKKyNpbmNsdWRlICJQcmVjaXNlSnVtcFRhcmdldHNJbmxpbmVzLmgi
CisjaW5jbHVkZSA8d3RmL0J1YmJsZVNvcnQuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK3ZvaWQg
Qnl0ZWNvZGVSZXdyaXRlcjo6YXBwbHlNb2RpZmljYXRpb24oKQoreworICAgIGZvciAoc2l6ZV90
IGluc2VydGlvbkluZGV4ID0gbV9pbnNlcnRpb25zLnNpemUoKTsgaW5zZXJ0aW9uSW5kZXgtLTsp
IHsKKyAgICAgICAgSW5zZXJ0aW9uJiBpbnNlcnRpb24gPSBtX2luc2VydGlvbnNbaW5zZXJ0aW9u
SW5kZXhdOworICAgICAgICBpZiAoaW5zZXJ0aW9uLnR5cGUgPT0gSW5zZXJ0aW9uOjpUeXBlOjpS
ZW1vdmUpCisgICAgICAgICAgICBtX2dyYXBoLmluc3RydWN0aW9ucygpLnJlbW92ZShpbnNlcnRp
b24uaW5kZXguYnl0ZWNvZGVPZmZzZXQsIGluc2VydGlvbi5sZW5ndGgoKSk7CisgICAgICAgIGVs
c2UgeworICAgICAgICAgICAgaWYgKGluc2VydGlvbi5pbmNsdWRlQnJhbmNoID09IEluY2x1ZGVC
cmFuY2g6OlllcykgeworICAgICAgICAgICAgICAgIGludCBmaW5hbE9mZnNldCA9IGluc2VydGlv
bi5pbmRleC5ieXRlY29kZU9mZnNldCArIGNhbGN1bGF0ZURpZmZlcmVuY2UobV9pbnNlcnRpb25z
LmJlZ2luKCksIG1faW5zZXJ0aW9ucy5iZWdpbigpICsgaW5zZXJ0aW9uSW5kZXgpOworICAgICAg
ICAgICAgICAgIGFkanVzdEp1bXBUYXJnZXRzSW5GcmFnbWVudChmaW5hbE9mZnNldCwgaW5zZXJ0
aW9uKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1fZ3JhcGguaW5zdHJ1Y3Rpb25zKCku
aW5zZXJ0VmVjdG9yKGluc2VydGlvbi5pbmRleC5ieXRlY29kZU9mZnNldCwgaW5zZXJ0aW9uLmlu
c3RydWN0aW9ucyk7CisgICAgICAgIH0KKyAgICB9CisgICAgbV9pbnNlcnRpb25zLmNsZWFyKCk7
Cit9CisKK3ZvaWQgQnl0ZWNvZGVSZXdyaXRlcjo6ZXhlY3V0ZSgpCit7CisgICAgV1RGOjpidWJi
bGVTb3J0KG1faW5zZXJ0aW9ucy5iZWdpbigpLCBtX2luc2VydGlvbnMuZW5kKCksIFtdIChjb25z
dCBJbnNlcnRpb24mIGxocywgY29uc3QgSW5zZXJ0aW9uJiByaHMpIHsKKyAgICAgICAgcmV0dXJu
IGxocy5pbmRleCA8IHJocy5pbmRleDsKKyAgICB9KTsKKworICAgIFVubGlua2VkQ29kZUJsb2Nr
KiBjb2RlQmxvY2sgPSBtX2dyYXBoLmNvZGVCbG9jaygpOworICAgIGNvZGVCbG9jay0+YXBwbHlN
b2RpZmljYXRpb24oKnRoaXMpOworfQorCit2b2lkIEJ5dGVjb2RlUmV3cml0ZXI6OmFkanVzdEp1
bXBUYXJnZXRzSW5GcmFnbWVudCh1bnNpZ25lZCBmaW5hbE9mZnNldCwgSW5zZXJ0aW9uJiBpbnNl
cnRpb24pCit7CisgICAgYXV0byYgZnJhZ21lbnQgPSBpbnNlcnRpb24uaW5zdHJ1Y3Rpb25zOwor
ICAgIFVubGlua2VkSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luID0gZnJhZ21lbnQuZGF0
YSgpOworICAgIGZvciAodW5zaWduZWQgZnJhZ21lbnRPZmZzZXQgPSAwLCBmcmFnbWVudENvdW50
ID0gZnJhZ21lbnQuc2l6ZSgpOyBmcmFnbWVudE9mZnNldCA8IGZyYWdtZW50Q291bnQ7KSB7Cisg
ICAgICAgIFVubGlua2VkSW5zdHJ1Y3Rpb24mIGluc3RydWN0aW9uID0gZnJhZ21lbnRbZnJhZ21l
bnRPZmZzZXRdOworICAgICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGluc3RydWN0aW9uLnUub3Bj
b2RlOworICAgICAgICBpZiAoaXNCcmFuY2gob3Bjb2RlSUQpKSB7CisgICAgICAgICAgICB1bnNp
Z25lZCBieXRlY29kZU9mZnNldCA9IGZpbmFsT2Zmc2V0ICsgZnJhZ21lbnRPZmZzZXQ7CisgICAg
ICAgICAgICBVbmxpbmtlZENvZGVCbG9jayogY29kZUJsb2NrID0gbV9ncmFwaC5jb2RlQmxvY2so
KTsKKyAgICAgICAgICAgIGV4dHJhY3RTdG9yZWRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0
KGNvZGVCbG9jaywgY29kZUJsb2NrLT52bSgpLT5pbnRlcnByZXRlciwgaW5zdHJ1Y3Rpb25zQmVn
aW4sIGZyYWdtZW50T2Zmc2V0LCBbJl0oaW50MzJfdCYgbGFiZWwpIHsKKyAgICAgICAgICAgICAg
ICBpbnQgYWJzb2x1dGVPZmZzZXQgPSBhZGp1c3RBYnNvbHV0ZU9mZnNldChsYWJlbCk7CisgICAg
ICAgICAgICAgICAgbGFiZWwgPSBhYnNvbHV0ZU9mZnNldCAtIHN0YXRpY19jYXN0PGludD4oYnl0
ZWNvZGVPZmZzZXQpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKyAgICAgICAgZnJhZ21l
bnRPZmZzZXQgKz0gb3Bjb2RlTGVuZ3RoKG9wY29kZUlEKTsKKyAgICB9Cit9CisKK3ZvaWQgQnl0
ZWNvZGVSZXdyaXRlcjo6aW5zZXJ0SW1wbChJbnNlcnRpb25Qb2ludCBpbnNlcnRpb25Qb2ludCwg
SW5jbHVkZUJyYW5jaCBpbmNsdWRlQnJhbmNoLCBWZWN0b3I8VW5saW5rZWRJbnN0cnVjdGlvbj4m
JiBmcmFnbWVudCkKK3sKKyAgICBBU1NFUlQoaW5zZXJ0aW9uUG9pbnQucG9zaXRpb24gPT0gUG9z
aXRpb246OkJlZm9yZSB8fCBpbnNlcnRpb25Qb2ludC5wb3NpdGlvbiA9PSBQb3NpdGlvbjo6QWZ0
ZXIpOworICAgIG1faW5zZXJ0aW9ucy5hcHBlbmQoSW5zZXJ0aW9uIHsKKyAgICAgICAgaW5zZXJ0
aW9uUG9pbnQsCisgICAgICAgIEluc2VydGlvbjo6VHlwZTo6SW5zZXJ0LAorICAgICAgICBpbmNs
dWRlQnJhbmNoLAorICAgICAgICAwLAorICAgICAgICBXVEZNb3ZlKGZyYWdtZW50KQorICAgIH0p
OworfQorCitpbnQgQnl0ZWNvZGVSZXdyaXRlcjo6YWRqdXN0SnVtcFRhcmdldChJbnNlcnRpb25Q
b2ludCBzdGFydFBvaW50LCBJbnNlcnRpb25Qb2ludCBqdW1wVGFyZ2V0UG9pbnQpCit7CisgICAg
aWYgKHN0YXJ0UG9pbnQgPCBqdW1wVGFyZ2V0UG9pbnQpIHsKKyAgICAgICAgaW50IGp1bXBUYXJn
ZXQgPSBqdW1wVGFyZ2V0UG9pbnQuYnl0ZWNvZGVPZmZzZXQ7CisgICAgICAgIGF1dG8gc3RhcnQg
PSBzdGQ6Omxvd2VyX2JvdW5kKG1faW5zZXJ0aW9ucy5iZWdpbigpLCBtX2luc2VydGlvbnMuZW5k
KCksIHN0YXJ0UG9pbnQsIFsmXSAoY29uc3QgSW5zZXJ0aW9uJiBpbnNlcnRpb24sIEluc2VydGlv
blBvaW50IHN0YXJ0UG9pbnQpIHsKKyAgICAgICAgICAgIHJldHVybiBpbnNlcnRpb24uaW5kZXgg
PCBzdGFydFBvaW50OworICAgICAgICB9KTsKKyAgICAgICAgaWYgKHN0YXJ0ICE9IG1faW5zZXJ0
aW9ucy5lbmQoKSkgeworICAgICAgICAgICAgYXV0byBlbmQgPSBzdGQ6Omxvd2VyX2JvdW5kKG1f
aW5zZXJ0aW9ucy5iZWdpbigpLCBtX2luc2VydGlvbnMuZW5kKCksIGp1bXBUYXJnZXRQb2ludCwg
WyZdIChjb25zdCBJbnNlcnRpb24mIGluc2VydGlvbiwgSW5zZXJ0aW9uUG9pbnQganVtcFRhcmdl
dFBvaW50KSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGluc2VydGlvbi5pbmRleCA8IGp1bXBU
YXJnZXRQb2ludDsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAganVtcFRhcmdldCArPSBj
YWxjdWxhdGVEaWZmZXJlbmNlKHN0YXJ0LCBlbmQpOworICAgICAgICB9CisgICAgICAgIHJldHVy
biBqdW1wVGFyZ2V0IC0gc3RhcnRQb2ludC5ieXRlY29kZU9mZnNldDsKKyAgICB9CisKKyAgICBp
ZiAoc3RhcnRQb2ludCA9PSBqdW1wVGFyZ2V0UG9pbnQpCisgICAgICAgIHJldHVybiAwOworCisg
ICAgcmV0dXJuIC1hZGp1c3RKdW1wVGFyZ2V0KGp1bXBUYXJnZXRQb2ludCwgc3RhcnRQb2ludCk7
Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlUmV3cml0ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZVJld3JpdGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjkwN2E0NzRjNjAzYjY1ZWY5
YjNjYjdmNTJiNDg4ODk1ZTMwYzgwMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVJld3JpdGVyLmgKQEAgLTAsMCArMSwyMzUgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwu
Y29tPgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJCeXRlY29kZUdyYXBoLmgi
CisjaW5jbHVkZSAiQnl0ZWNvZGVzLmgiCisjaW5jbHVkZSAiT3Bjb2RlLmgiCisjaW5jbHVkZSAi
VW5saW5rZWRDb2RlQmxvY2suaCIKKyNpbmNsdWRlIDx3dGYvSW5zZXJ0aW9uLmg+CisKK25hbWVz
cGFjZSBKU0MgeworCisvLyBCeXRlY29kZVJld3JpdGVyIG9mZmVycyB0aGUgYWJpbGl0eSB0byBp
bnNlcnQgYW5kIHJlbW92ZSB0aGUgYnl0ZWNvZGVzIGluY2x1ZGluZyBqdW1wIG9wZXJhdGlvbnMu
CisvLworLy8gV2UgdXNlIHRoZSBvcmlnaW5hbCBieXRlY29kZSBvZmZzZXRzIGFzIGxhYmVscy4g
V2hlbiB5b3UgZW1pdCBzb21lIGp1bXBzLCB5b3UgY2FuIHNwZWNpZnkgdGhlIGp1bXAgdGFyZ2V0
IGJ5CisvLyB1c2luZyB0aGUgb3JpZ2luYWwgYnl0ZWNvZGUgb2Zmc2V0cy4gVGhlc2UgYnl0ZWNv
ZGUgb2Zmc2V0cyBhcmUgbGF0ZXIgY29udmVydGVkIGFwcHJvcHJpYXRlIHZhbHVlcyBieSB0aGUK
Ky8vIHJld3JpdGVyLiBBbmQgd2UgYWxzbyB1c2UgdGhlIGxhYmVscyB0byByZXByZXNlbnRzIHRo
ZSBwb3NpdGlvbiB0aGUgbmV3IGJ5dGVjb2RlcyBpbnNlcnRlZC4KKy8vCisvLyAgICAgICAgICAg
ICAgICAgICAgICB8ICBbYnl0ZWNvZGVdICB8ICBbYnl0ZWNvZGVdICB8CisvLyAgIG9mZnNldHMg
ICAgICAgICAgICBBICAgICAgICAgICAgICBCICAgICAgICAgICAgICBDCisvLworLy8gV2UgY2Fu
IHVzZSB0aGUgYWJvdmUgIkEiLCAiQiIsIGFuZCAiQyIgb2Zmc2V0cyBhcyBsYWJlbHMuIEFuZCB0
aGUgcmV3cml0ZXIgaGFzIHRoZSBhYmlsaXR5IHRvIGluc2VydCBieXRlY29kZSBmcmFnbWVudHMK
Ky8vIGJlZm9yZSBhbmQgYWZ0ZXIgdGhlIGxhYmVsLiBGb3IgZXhhbXBsZSwgaWYgeW91IGluc2Vy
dCB0aGUgZnJhZ21lbnQgYmVmb3JlICJCIiwgdGhlIGxheW91dCBiZWNvbWVzIGxpa2UgdGhpcy4K
Ky8vCisvLyAgICAgICAgICAgICAgICAgICAgICB8ICBbYnl0ZWNvZGVdICB8ICBbZnJhZ21lbnRd
ICBbYnl0ZWNvZGVdICB8CisvLyAgIG9mZnNldHMgICAgICAgICAgICBBICAgICAgICAgICAgICBC
ICAgICAgICAgICAgICAgICAgICAgICAgICBDCisvLworLy8gIEFuZCBldmVuIGlmIHlvdSByZW1v
dmUgc29tZSBvcmlnaW5hbCBieXRlY29kZXMsIHRoZSBvZmZzZXQgcmVtYWlucyBhcyBsYWJlbHMu
IEZvciBleGFtcGxlLCB3aGVuIHlvdSByZW1vdmUgdGhlIEEncyBieXRlY29kZSwKKy8vICB0aGUg
bGF5b3V0IGJlY29tZXMgbGlrZSB0aGlzLgorLy8KKy8vICAgICAgICAgICAgICAgICAgICAgIHwg
ICAgICAgICAgICAgIHwgIFtieXRlY29kZV0gIHwKKy8vICAgb2Zmc2V0cyAgICAgICAgICAgIEEg
ICAgICAgICAgICAgIEIgICAgICAgICAgICAgIEMKKy8vCisvLyAgQW5kIHN0aWxsIHlvdSBjYW4g
aW5zZXJ0IGZyYWdtZW50cyBiZWZvcmUgYW5kIGFmdGVyICJBIi4KKy8vCisvLyAgICAgICAgICAg
ICAgICAgICAgICB8ICBbZnJhZ21lbnRdICB8ICBbYnl0ZWNvZGVdICB8CisvLyAgIG9mZnNldHMg
ICAgICAgICAgICBBICAgICAgICAgICAgICBCICAgICAgICAgICAgICBDCisvLworLy8gICBXZSBj
YW4gaW5zZXJ0IGJ5dGVjb2RlIGZyYWdtZW50cyAiQmVmb3JlIiBhbmQgIkFmdGVyIiB0aGUgbGFi
ZWxzLiBUaGlzIGluc2VydGVkIHBvc2l0aW9uLCBlaXRoZXIgIkJlZm9yZSIgYW5kICJBZnRlciIs
CisvLyAgIGhhcyBlZmZlY3Qgd2hlbiB0aGUgbGFiZWwgaXMgaW52b2x2ZWQgd2l0aCBqdW1wcy4g
Rm9yIGV4YW1wbGUsIHdoZW4geW91IGhhdmUganVtcCB0byB0aGUgcG9zaXRpb24gIkIiLAorLy8K
Ky8vICAgICAgICAgICAgICAgICAgICAgIHwgIFtieXRlY29kZV0gIHwgIFtieXRlY29kZV0gIHwK
Ky8vICAgb2Zmc2V0cyAgICAgICAgICAgIEEgICAgICAgICAgICAgIEIgICAgICAgICAgICAgIEMK
Ky8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KKy8vICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGp1bXAgdG8gaGVyZS4KKy8vCisvLyAgYW5kIHlvdSBp
bnNlcnQgdGhlIGJ5dGVjb2RlIGJlZm9yZS9hZnRlciAiQiIsCisvLworLy8gICAgICAgICAgICAg
ICAgICAgICAgfCAgW2J5dGVjb2RlXSBbYmVmb3JlXSAgfCAgW2FmdGVyXSBbYnl0ZWNvZGVdICB8
CisvLyAgIG9mZnNldHMgICAgICAgICAgICBBICAgICAgICAgICAgICAgICAgICAgICBCICAgICAg
ICAgICAgICBDCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBeCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqdW1w
IHRvIGhlcmUuCisvLworLy8gIGFzIHlvdSBjYW4gc2VlLCB0aGUgZXhlY3V0aW9uIGp1bXBpbmcg
aW50byAiQiIgZG9lcyBub3QgZXhlY3V0ZSBbYmVmb3JlXSBjb2RlLgorY2xhc3MgQnl0ZWNvZGVS
ZXdyaXRlciB7CitXVEZfTUFLRV9OT05DT1BZQUJMRShCeXRlY29kZVJld3JpdGVyKTsKK3B1Ymxp
YzoKKyAgICBlbnVtIGNsYXNzIFBvc2l0aW9uIDogaW50OF90IHsKKyAgICAgICAgRW50cnlQb2lu
dCA9IC0yLAorICAgICAgICBCZWZvcmUgPSAtMSwKKyAgICAgICAgTGFiZWxQb2ludCA9IDAsCisg
ICAgICAgIEFmdGVyID0gMSwKKyAgICAgICAgT3JpZ2luYWxCeXRlY29kZVBvaW50ID0gMiwKKyAg
ICB9OworCisgICAgZW51bSBjbGFzcyBJbmNsdWRlQnJhbmNoIDogdWludDhfdCB7CisgICAgICAg
IE5vID0gMCwKKyAgICAgICAgWWVzID0gMSwKKyAgICB9OworCisgICAgc3RydWN0IEluc2VydGlv
blBvaW50IHsKKyAgICAgICAgaW50IGJ5dGVjb2RlT2Zmc2V0OworICAgICAgICBQb3NpdGlvbiBw
b3NpdGlvbjsKKworICAgICAgICBJbnNlcnRpb25Qb2ludChpbnQgb2Zmc2V0LCBQb3NpdGlvbiBw
b3MpCisgICAgICAgICAgICA6IGJ5dGVjb2RlT2Zmc2V0KG9mZnNldCkKKyAgICAgICAgICAgICwg
cG9zaXRpb24ocG9zKQorICAgICAgICB7CisgICAgICAgIH0KKworICAgICAgICBib29sIG9wZXJh
dG9yPChjb25zdCBJbnNlcnRpb25Qb2ludCYgb3RoZXIpIGNvbnN0CisgICAgICAgIHsKKyAgICAg
ICAgICAgIGlmIChieXRlY29kZU9mZnNldCA9PSBvdGhlci5ieXRlY29kZU9mZnNldCkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gcG9zaXRpb24gPCBvdGhlci5wb3NpdGlvbjsKKyAgICAgICAgICAg
IHJldHVybiBieXRlY29kZU9mZnNldCA8IG90aGVyLmJ5dGVjb2RlT2Zmc2V0OworICAgICAgICB9
CisKKyAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEluc2VydGlvblBvaW50JiBvdGhlcikg
Y29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGJ5dGVjb2RlT2Zmc2V0ID09IG90
aGVyLmJ5dGVjb2RlT2Zmc2V0ICYmIHBvc2l0aW9uID09IG90aGVyLnBvc2l0aW9uOworICAgICAg
ICB9CisgICAgfTsKKworcHJpdmF0ZToKKyAgICBzdHJ1Y3QgSW5zZXJ0aW9uIHsKKyAgICAgICAg
ZW51bSBjbGFzcyBUeXBlIDogdWludDhfdCB7IEluc2VydCA9IDAsIFJlbW92ZSA9IDEsIH07CisK
KyAgICAgICAgc2l6ZV90IGxlbmd0aCgpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIGlm
ICh0eXBlID09IFR5cGU6OlJlbW92ZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVtb3ZlTGVu
Z3RoOworICAgICAgICAgICAgcmV0dXJuIGluc3RydWN0aW9ucy5zaXplKCk7CisgICAgICAgIH0K
KworICAgICAgICBJbnNlcnRpb25Qb2ludCBpbmRleDsKKyAgICAgICAgVHlwZSB0eXBlOworICAg
ICAgICBJbmNsdWRlQnJhbmNoIGluY2x1ZGVCcmFuY2g7CisgICAgICAgIHNpemVfdCByZW1vdmVM
ZW5ndGg7CisgICAgICAgIFZlY3RvcjxVbmxpbmtlZEluc3RydWN0aW9uPiBpbnN0cnVjdGlvbnM7
CisgICAgfTsKKworcHVibGljOgorICAgIGNsYXNzIEZyYWdtZW50IHsKKyAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShGcmFnbWVudCk7CisgICAgcHVibGljOgorICAgICAgICBGcmFnbWVudChWZWN0
b3I8VW5saW5rZWRJbnN0cnVjdGlvbj4mIGZyYWdtZW50LCBJbmNsdWRlQnJhbmNoJiBpbmNsdWRl
QnJhbmNoKQorICAgICAgICAgICAgOiBtX2ZyYWdtZW50KGZyYWdtZW50KQorICAgICAgICAgICAg
LCBtX2luY2x1ZGVCcmFuY2goaW5jbHVkZUJyYW5jaCkKKyAgICAgICAgeworICAgICAgICB9CisK
KyAgICAgICAgdGVtcGxhdGU8Y2xhc3MuLi4gQXJncz4KKyAgICAgICAgdm9pZCBhcHBlbmRJbnN0
cnVjdGlvbihPcGNvZGVJRCBvcGNvZGVJRCwgQXJncy4uLiBhcmdzKQorICAgICAgICB7CisgICAg
ICAgICAgICBpZiAoaXNCcmFuY2gob3Bjb2RlSUQpKQorICAgICAgICAgICAgICAgIG1faW5jbHVk
ZUJyYW5jaCA9IEluY2x1ZGVCcmFuY2g6OlllczsKKworICAgICAgICAgICAgVW5saW5rZWRJbnN0
cnVjdGlvbiBpbnN0cnVjdGlvbnNbc2l6ZW9mLi4uKGFyZ3MpICsgMV0gPSB7CisgICAgICAgICAg
ICAgICAgVW5saW5rZWRJbnN0cnVjdGlvbihvcGNvZGVJRCksCisgICAgICAgICAgICAgICAgVW5s
aW5rZWRJbnN0cnVjdGlvbihhcmdzKS4uLgorICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIG1f
ZnJhZ21lbnQuYXBwZW5kKGluc3RydWN0aW9ucywgc2l6ZW9mLi4uKGFyZ3MpICsgMSk7CisgICAg
ICAgIH0KKworICAgIHByaXZhdGU6CisgICAgICAgIFZlY3RvcjxVbmxpbmtlZEluc3RydWN0aW9u
PiYgbV9mcmFnbWVudDsKKyAgICAgICAgSW5jbHVkZUJyYW5jaCYgbV9pbmNsdWRlQnJhbmNoOwor
ICAgIH07CisKKyAgICBCeXRlY29kZVJld3JpdGVyKEJ5dGVjb2RlR3JhcGg8VW5saW5rZWRDb2Rl
QmxvY2s+JiBncmFwaCkKKyAgICAgICAgOiBtX2dyYXBoKGdyYXBoKQorICAgIHsKKyAgICB9CisK
KyAgICB0ZW1wbGF0ZTxjbGFzcyBGdW5jdGlvbj4KKyAgICB2b2lkIGluc2VydEZyYWdtZW50QmVm
b3JlKHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBGdW5jdGlvbiBmdW5jdGlvbikKKyAgICB7Cisg
ICAgICAgIEluY2x1ZGVCcmFuY2ggaW5jbHVkZUJyYW5jaCA9IEluY2x1ZGVCcmFuY2g6Ok5vOwor
ICAgICAgICBWZWN0b3I8VW5saW5rZWRJbnN0cnVjdGlvbj4gaW5zdHJ1Y3Rpb25zOworICAgICAg
ICBGcmFnbWVudCBmcmFnbWVudChpbnN0cnVjdGlvbnMsIGluY2x1ZGVCcmFuY2gpOworICAgICAg
ICBmdW5jdGlvbihmcmFnbWVudCk7CisgICAgICAgIGluc2VydEltcGwoSW5zZXJ0aW9uUG9pbnQo
Ynl0ZWNvZGVPZmZzZXQsIFBvc2l0aW9uOjpCZWZvcmUpLCBpbmNsdWRlQnJhbmNoLCBXVEZNb3Zl
KGluc3RydWN0aW9ucykpOworICAgIH0KKworICAgIHRlbXBsYXRlPGNsYXNzIEZ1bmN0aW9uPgor
ICAgIHZvaWQgaW5zZXJ0RnJhZ21lbnRBZnRlcih1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgRnVu
Y3Rpb24gZnVuY3Rpb24pCisgICAgeworICAgICAgICBJbmNsdWRlQnJhbmNoIGluY2x1ZGVCcmFu
Y2ggPSBJbmNsdWRlQnJhbmNoOjpObzsKKyAgICAgICAgVmVjdG9yPFVubGlua2VkSW5zdHJ1Y3Rp
b24+IGluc3RydWN0aW9uczsKKyAgICAgICAgRnJhZ21lbnQgZnJhZ21lbnQoaW5zdHJ1Y3Rpb25z
LCBpbmNsdWRlQnJhbmNoKTsKKyAgICAgICAgZnVuY3Rpb24oZnJhZ21lbnQpOworICAgICAgICBp
bnNlcnRJbXBsKEluc2VydGlvblBvaW50KGJ5dGVjb2RlT2Zmc2V0LCBQb3NpdGlvbjo6QWZ0ZXIp
LCBpbmNsdWRlQnJhbmNoLCBXVEZNb3ZlKGluc3RydWN0aW9ucykpOworICAgIH0KKworICAgIHZv
aWQgcmVtb3ZlQnl0ZWNvZGUodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpCisgICAgeworICAgICAg
ICBtX2luc2VydGlvbnMuYXBwZW5kKEluc2VydGlvbiB7IEluc2VydGlvblBvaW50KGJ5dGVjb2Rl
T2Zmc2V0LCBQb3NpdGlvbjo6T3JpZ2luYWxCeXRlY29kZVBvaW50KSwgSW5zZXJ0aW9uOjpUeXBl
OjpSZW1vdmUsIEluY2x1ZGVCcmFuY2g6Ok5vLCBvcGNvZGVMZW5ndGgobV9ncmFwaC5pbnN0cnVj
dGlvbnMoKVtieXRlY29kZU9mZnNldF0udS5vcGNvZGUpLCB7IH0gfSk7CisgICAgfQorCisgICAg
dm9pZCBleGVjdXRlKCk7CisKKyAgICBCeXRlY29kZUdyYXBoPFVubGlua2VkQ29kZUJsb2NrPiYg
Z3JhcGgoKSB7IHJldHVybiBtX2dyYXBoOyB9CisKKyAgICBpbnQgYWRqdXN0QWJzb2x1dGVPZmZz
ZXQoaW50IGFic29sdXRlT2Zmc2V0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkanVzdEp1bXBU
YXJnZXQoSW5zZXJ0aW9uUG9pbnQoMCwgUG9zaXRpb246OkVudHJ5UG9pbnQpLCBJbnNlcnRpb25Q
b2ludChhYnNvbHV0ZU9mZnNldCwgUG9zaXRpb246OkxhYmVsUG9pbnQpKTsKKyAgICB9CisKKyAg
ICBpbnQgYWRqdXN0SnVtcFRhcmdldChpbnQgb3JpZ2luYWxCeXRlY29kZU9mZnNldCwgaW50IG9y
aWdpbmFsSnVtcFRhcmdldCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZGp1c3RKdW1wVGFyZ2V0
KEluc2VydGlvblBvaW50KG9yaWdpbmFsQnl0ZWNvZGVPZmZzZXQsIFBvc2l0aW9uOjpMYWJlbFBv
aW50KSwgSW5zZXJ0aW9uUG9pbnQob3JpZ2luYWxKdW1wVGFyZ2V0LCBQb3NpdGlvbjo6TGFiZWxQ
b2ludCkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICB2b2lkIGluc2VydEltcGwoSW5zZXJ0aW9u
UG9pbnQsIEluY2x1ZGVCcmFuY2gsIFZlY3RvcjxVbmxpbmtlZEluc3RydWN0aW9uPiYmIGZyYWdt
ZW50KTsKKworICAgIGZyaWVuZCBjbGFzcyBVbmxpbmtlZENvZGVCbG9jazsKKyAgICB2b2lkIGFw
cGx5TW9kaWZpY2F0aW9uKCk7CisgICAgdm9pZCBhZGp1c3RKdW1wVGFyZ2V0c0luRnJhZ21lbnQo
dW5zaWduZWQgZmluYWxPZmZzZXQsIEluc2VydGlvbiYpOworCisgICAgaW50IGFkanVzdEp1bXBU
YXJnZXQoSW5zZXJ0aW9uUG9pbnQgc3RhcnRQb2ludCwgSW5zZXJ0aW9uUG9pbnQganVtcFRhcmdl
dFBvaW50KTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJdGVyYXRvcj4gaW50IGNhbGN1bGF0ZURp
ZmZlcmVuY2UoSXRlcmF0b3IgYmVnaW4sIEl0ZXJhdG9yIGVuZCk7CisKKyAgICBCeXRlY29kZUdy
YXBoPFVubGlua2VkQ29kZUJsb2NrPiYgbV9ncmFwaDsKKyAgICBWZWN0b3I8SW5zZXJ0aW9uLCA4
PiBtX2luc2VydGlvbnM7Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBJdGVyYXRvcj4KK2lubGlu
ZSBpbnQgQnl0ZWNvZGVSZXdyaXRlcjo6Y2FsY3VsYXRlRGlmZmVyZW5jZShJdGVyYXRvciBiZWdp
biwgSXRlcmF0b3IgZW5kKQoreworICAgIGludCByZXN1bHQgPSAwOworICAgIGZvciAoOyBiZWdp
biAhPSBlbmQ7ICsrYmVnaW4pIHsKKyAgICAgICAgaWYgKGJlZ2luLT50eXBlID09IEluc2VydGlv
bjo6VHlwZTo6UmVtb3ZlKQorICAgICAgICAgICAgcmVzdWx0IC09IGJlZ2luLT5sZW5ndGgoKTsK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmVzdWx0ICs9IGJlZ2luLT5sZW5ndGgoKTsKKyAg
ICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCmluZGV4IDYwNTdl
ZjYwOWVlZDFlZTJhOTliMDc2MjhiOTFjOTc1NTMzZmU0YmIuLjRmMTRiMjMwOTA0YzFkNmY2ZDcz
YmY2ODBkYzAzMjRhZWZjNmY2YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZVVzZURlZi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZVVzZURlZi5oCkBAIC0zMCwxNSArMzAsOSBAQAogCiBuYW1lc3BhY2UgSlND
IHsKIAotdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KLXZvaWQgY29tcHV0ZVVzZXNGb3JCeXRl
Y29kZU9mZnNldCgKLSAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Jsb2Nr
KiBibG9jaywgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3Ip
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBCbG9jaywgdHlwZW5hbWUgRnVuY3RvciwgdHlwZW5hbWUgSW5z
dHJ1Y3Rpb24+Cit2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoQmxvY2sqIGNvZGVC
bG9jaywgT3Bjb2RlSUQgb3Bjb2RlSUQsIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgY29uc3Qg
RnVuY3RvciYgZnVuY3RvcikKIHsKLSAgICBJbnRlcnByZXRlciogaW50ZXJwcmV0ZXIgPSBjb2Rl
QmxvY2stPnZtKCktPmludGVycHJldGVyOwotICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNC
ZWdpbiA9IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsKLSAgICBJbnN0cnVjdGlv
biogaW5zdHJ1Y3Rpb24gPSAmaW5zdHJ1Y3Rpb25zQmVnaW5bYnl0ZWNvZGVPZmZzZXRdOwotICAg
IE9wY29kZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGluc3RydWN0aW9u
LT51Lm9wY29kZSk7Ci0KICAgICBpZiAob3Bjb2RlSUQgIT0gb3BfZW50ZXIgJiYgY29kZUJsb2Nr
LT53YXNDb21waWxlZFdpdGhEZWJ1Z2dpbmdPcGNvZGVzKCkgJiYgY29kZUJsb2NrLT5zY29wZVJl
Z2lzdGVyKCkuaXNWYWxpZCgpKQogICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rp
b24sIG9wY29kZUlELCBjb2RlQmxvY2stPnNjb3BlUmVnaXN0ZXIoKS5vZmZzZXQoKSk7CiAKQEAg
LTc1LDggKzY5LDcgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAogICAgIGNh
c2Ugb3Bfam5lcV9udWxsOgogICAgIGNhc2Ugb3BfZGVjOgogICAgIGNhc2Ugb3BfaW5jOgotICAg
IGNhc2Ugb3BfbG9nX3NoYWRvd19jaGlja2VuX3Byb2xvZ3VlOgotICAgIGNhc2Ugb3BfcmVzdW1l
OiB7CisgICAgY2FzZSBvcF9sb2dfc2hhZG93X2NoaWNrZW5fcHJvbG9ndWU6IHsKICAgICAgICAg
QVNTRVJUKG9wY29kZUxlbmd0aHNbb3Bjb2RlSURdID4gMSk7CiAgICAgICAgIGZ1bmN0b3IoY29k
ZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7
CiAgICAgICAgIHJldHVybjsKQEAgLTI4NywyMCArMjgwLDkgQEAgdm9pZCBjb21wdXRlVXNlc0Zv
ckJ5dGVjb2RlT2Zmc2V0KAogICAgICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0
aW9uLCBvcGNvZGVJRCwgY29kZUJsb2NrLT5zY29wZVJlZ2lzdGVyKCkub2Zmc2V0KCkpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQotICAgIGNhc2Ugb3Bfc2F2ZTogeworICAgIGNhc2Ugb3BfeWll
bGQ6IHsKICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwg
aW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKTsKLSAgICAgICAgdW5zaWduZWQgbWVyZ2VQb2ludEJ5
dGVjb2RlT2Zmc2V0ID0gYnl0ZWNvZGVPZmZzZXQgKyBpbnN0cnVjdGlvblszXS51Lm9wZXJhbmQ7
Ci0gICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogbWVyZ2VQb2ludEJsb2NrID0gbnVsbHB0cjsK
LSAgICAgICAgZm9yIChCeXRlY29kZUJhc2ljQmxvY2sqIHN1Y2Nlc3NvciA6IGJsb2NrLT5zdWNj
ZXNzb3JzKCkpIHsKLSAgICAgICAgICAgIGlmIChzdWNjZXNzb3ItPmxlYWRlckJ5dGVjb2RlT2Zm
c2V0KCkgPT0gbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0KSB7Ci0gICAgICAgICAgICAgICAgbWVy
Z2VQb2ludEJsb2NrID0gc3VjY2Vzc29yOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIEFTU0VSVChtZXJnZVBvaW50QmxvY2spOwotICAg
ICAgICBtZXJnZVBvaW50QmxvY2stPmluKCkuZm9yRWFjaFNldEJpdChbJl0odW5zaWduZWQgbG9j
YWwpIHsKLSAgICAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2Rl
SUQsIHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGxvY2FsKS5vZmZzZXQoKSk7Ci0gICAgICAgIH0p
OworICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBpbnN0
cnVjdGlvblszXS51Lm9wZXJhbmQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGRlZmF1
bHQ6CkBAIC0zMDksMjAgKzI5MSwxNSBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZz
ZXQoCiAgICAgfQogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgotdm9pZCBjb21wdXRl
RGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29kZUJhc2lj
QmxvY2sqIGJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgY29uc3QgRnVuY3RvciYgZnVu
Y3RvcikKK3RlbXBsYXRlPHR5cGVuYW1lIEJsb2NrLCB0eXBlbmFtZSBJbnN0cnVjdGlvbiwgdHlw
ZW5hbWUgRnVuY3Rvcj4KK3ZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChCbG9jayog
Y29kZUJsb2NrLCBPcGNvZGVJRCBvcGNvZGVJRCwgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBj
b25zdCBGdW5jdG9yJiBmdW5jdG9yKQogewotICAgIEludGVycHJldGVyKiBpbnRlcnByZXRlciA9
IGNvZGVCbG9jay0+dm0oKS0+aW50ZXJwcmV0ZXI7Ci0gICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0
aW9uc0JlZ2luID0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpOwotICAgIEluc3Ry
dWN0aW9uKiBpbnN0cnVjdGlvbiA9ICZpbnN0cnVjdGlvbnNCZWdpbltieXRlY29kZU9mZnNldF07
Ci0gICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoaW5zdHJ1
Y3Rpb24tPnUub3Bjb2RlKTsKICAgICBzd2l0Y2ggKG9wY29kZUlEKSB7CiAgICAgLy8gVGhlc2Ug
ZG9uJ3QgZGVmaW5lIGFueXRoaW5nLgogICAgIGNhc2Ugb3BfcHV0X3RvX3Njb3BlOgogICAgIGNh
c2Ugb3BfZW5kOgogICAgIGNhc2Ugb3BfdGhyb3c6CiAgICAgY2FzZSBvcF90aHJvd19zdGF0aWNf
ZXJyb3I6Ci0gICAgY2FzZSBvcF9zYXZlOgogICAgIGNhc2Ugb3BfYXNzZXJ0OgogICAgIGNhc2Ug
b3BfZGVidWc6CiAgICAgY2FzZSBvcF9yZXQ6CkBAIC0zNjIsNiArMzM5LDcgQEAgdm9pZCBjb21w
dXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29kZUJh
c2ljQmxvY2sqIGJsb2MKICAgICBjYXNlIG9wX3dhdGNoZG9nOgogICAgIGNhc2Ugb3BfbG9nX3No
YWRvd19jaGlja2VuX3Byb2xvZ3VlOgogICAgIGNhc2Ugb3BfbG9nX3NoYWRvd19jaGlja2VuX3Rh
aWw6CisgICAgY2FzZSBvcF95aWVsZDoKICNkZWZpbmUgTExJTlRfSEVMUEVSX09QQ09ERVMob3Bj
b2RlLCBsZW5ndGgpIGNhc2Ugb3Bjb2RlOgogICAgICAgICBGT1JfRUFDSF9MTElOVF9PUENPREVf
RVhURU5TSU9OKExMSU5UX0hFTFBFUl9PUENPREVTKTsKICN1bmRlZiBMTElOVF9IRUxQRVJfT1BD
T0RFUwpAQCAtNDgwLDE1ICs0NTgsNiBAQCB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZz
ZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvYwogICAgICAg
ICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgdmlydHVhbFJl
Z2lzdGVyRm9yTG9jYWwoaSkub2Zmc2V0KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAg
IGNhc2Ugb3BfcmVzdW1lOiB7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKGJsb2NrLT5zdWNjZXNz
b3JzKCkuc2l6ZSgpID09IDEpOwotICAgICAgICAvLyBGSVhNRTogVGhpcyBpcyByZWFsbHkgZGly
dHkuCi0gICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NTkyODEKLSAgICAgICAgYmxvY2stPnN1Y2Nlc3NvcnMoKVswXS0+aW4oKS5mb3JFYWNoU2V0Qml0
KFsmXSh1bnNpZ25lZCBsb2NhbCkgewotICAgICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGlu
c3RydWN0aW9uLCBvcGNvZGVJRCwgdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwobG9jYWwpLm9mZnNl
dCgpKTsKLSAgICAgICAgfSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CiAgICAgfQogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IDFkOTEz
NWEyMzczOTE2MzA5MThmZDU1YTZlNTQyNTg5NzE1Y2QwYjUuLjU4NmNjZjUyOGQ0YmZhZDJhYjkw
YjllYWU2NjQ2YjFlYTJkMTQxMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2suY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiQXJpdGhQcm9maWxl
LmgiCiAjaW5jbHVkZSAiQmFzaWNCbG9ja0xvY2F0aW9uLmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVH
ZW5lcmF0b3IuaCIKKyNpbmNsdWRlICJCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuaCIKICNpbmNs
dWRlICJCeXRlY29kZVVzZURlZi5oIgogI2luY2x1ZGUgIkNhbGxMaW5rU3RhdHVzLmgiCiAjaW5j
bHVkZSAiREZHQ2FwYWJpbGl0aWVzLmgiCkBAIC02OTYsMTggKzY5Nyw2IEBAIHZvaWQgQ29kZUJs
b2NrOjpkdW1wQnl0ZWNvZGUoUHJpbnRTdHJlYW0mIG91dCkKICAgICAgICAgfSB3aGlsZSAoaSA8
IG1fcmFyZURhdGEtPm1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlcy5zaXplKCkpOwogICAgIH0KIAot
ICAgIGlmIChtX3JhcmVEYXRhICYmICFtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlp
ZWxkLmlzRW1wdHkoKSkgewotICAgICAgICBvdXQucHJpbnRmKCJcbkxpdmUgQ2FsbGVlIExvY2Fs
czpcbiIpOwotICAgICAgICB1bnNpZ25lZCBpID0gMDsKLSAgICAgICAgZG8gewotICAgICAgICAg
ICAgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZW5lc3MgPSBtX3JhcmVEYXRhLT5tX2xpdmVDYWxs
ZWVMb2NhbHNBdFlpZWxkW2ldOwotICAgICAgICAgICAgb3V0LnByaW50ZigiICBsaXZlJTF1ID0g
IiwgaSk7Ci0gICAgICAgICAgICBsaXZlbmVzcy5kdW1wKG91dCk7Ci0gICAgICAgICAgICBvdXQu
cHJpbnRmKCJcbiIpOwotICAgICAgICAgICAgKytpOwotICAgICAgICB9IHdoaWxlIChpIDwgbV9y
YXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZC5zaXplKCkpOwotICAgIH0KLQogICAg
IG91dC5wcmludGYoIlxuIik7CiB9CiAKQEAgLTE2NzEsMzEgKzE2NjAsNiBAQCB2b2lkIENvZGVC
bG9jazo6ZHVtcEJ5dGVjb2RlKAogICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVkIiwgZGVi
dWdIb29rTmFtZShkZWJ1Z0hvb2tJRCksIGhhc0JyZWFrcG9pbnRGbGFnKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIGNhc2Ugb3Bfc2F2ZTogewotICAgICAgICAgICAg
aW50IGdlbmVyYXRvciA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgdW5zaWduZWQg
bGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gKCsraXQpLT51LnVuc2lnbmVkVmFsdWU7Ci0gICAgICAg
ICAgICBpbnQgb2Zmc2V0ID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBGYXN0Qml0
VmVjdG9yIGxpdmVuZXNzOwotICAgICAgICAgICAgaWYgKGxpdmVDYWxsZWVMb2NhbHNJbmRleCA8
IG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQuc2l6ZSgpKQotICAgICAgICAg
ICAgICAgIGxpdmVuZXNzID0gbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZFts
aXZlQ2FsbGVlTG9jYWxzSW5kZXhdOwotICAgICAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91
dCwgZXhlYywgbG9jYXRpb24sIGl0LCAic2F2ZSIpOwotICAgICAgICAgICAgb3V0LnByaW50Zigi
JXMsICIsIHJlZ2lzdGVyTmFtZShnZW5lcmF0b3IpLmRhdGEoKSk7Ci0gICAgICAgICAgICBsaXZl
bmVzcy5kdW1wKG91dCk7Ci0gICAgICAgICAgICBvdXQucHJpbnRmKCIoQGxpdmUlMXUpLCAlZCgt
PiVkKSIsIGxpdmVDYWxsZWVMb2NhbHNJbmRleCwgb2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNldCk7
Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIG9wX3Jlc3VtZTog
ewotICAgICAgICAgICAgaW50IGdlbmVyYXRvciA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAg
ICAgICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gKCsraXQpLT51LnVuc2lnbmVk
VmFsdWU7Ci0gICAgICAgICAgICBGYXN0Qml0VmVjdG9yIGxpdmVuZXNzOwotICAgICAgICAgICAg
aWYgKGxpdmVDYWxsZWVMb2NhbHNJbmRleCA8IG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fs
c0F0WWllbGQuc2l6ZSgpKQotICAgICAgICAgICAgICAgIGxpdmVuZXNzID0gbV9yYXJlRGF0YS0+
bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZFtsaXZlQ2FsbGVlTG9jYWxzSW5kZXhdOwotICAgICAg
ICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAicmVzdW1l
Iik7Ci0gICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgIiwgcmVnaXN0ZXJOYW1lKGdlbmVyYXRv
cikuZGF0YSgpKTsKLSAgICAgICAgICAgIGxpdmVuZXNzLmR1bXAob3V0KTsKLSAgICAgICAgICAg
IG91dC5wcmludGYoIihAbGl2ZSUxdSkiLCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpOwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9hc3NlcnQ6IHsKICAgICAg
ICAgICAgIGludCBjb25kaXRpb24gPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGlu
dCBsaW5lID0gKCsraXQpLT51Lm9wZXJhbmQ7CkBAIC0xOTA3LDcgKzE4NzEsNiBAQCB2b2lkIENv
ZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBDb3B5UGFyc2VkQmxvY2tUYWcsIENvZGVC
bG9jayYgb3RoZXIpCiAgICAgICAgIG1fcmFyZURhdGEtPm1fY29uc3RhbnRCdWZmZXJzID0gb3Ro
ZXIubV9yYXJlRGF0YS0+bV9jb25zdGFudEJ1ZmZlcnM7CiAgICAgICAgIG1fcmFyZURhdGEtPm1f
c3dpdGNoSnVtcFRhYmxlcyA9IG90aGVyLm1fcmFyZURhdGEtPm1fc3dpdGNoSnVtcFRhYmxlczsK
ICAgICAgICAgbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzID0gb3RoZXIubV9y
YXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzOwotICAgICAgICBtX3JhcmVEYXRhLT5t
X2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkID0gb3RoZXIubV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVl
TG9jYWxzQXRZaWVsZDsKICAgICB9CiAgICAgCiAgICAgaGVhcCgpLT5tX2NvZGVCbG9ja3MuYWRk
KHRoaXMpOwpAQCAtMjAyOSw3ICsxOTkyLDcgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0
aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAg
ICAgICAgICAgICAgICBVbmxpbmtlZFN0cmluZ0p1bXBUYWJsZTo6U3RyaW5nT2Zmc2V0VGFibGU6
Oml0ZXJhdG9yIGVuZCA9IHVubGlua2VkQ29kZUJsb2NrLT5zdHJpbmdTd2l0Y2hKdW1wVGFibGUo
aSkub2Zmc2V0VGFibGUuZW5kKCk7CiAgICAgICAgICAgICAgICAgZm9yICg7IHB0ciAhPSBlbmQ7
ICsrcHRyKSB7CiAgICAgICAgICAgICAgICAgICAgIE9mZnNldExvY2F0aW9uIG9mZnNldDsKLSAg
ICAgICAgICAgICAgICAgICAgb2Zmc2V0LmJyYW5jaE9mZnNldCA9IHB0ci0+dmFsdWU7CisgICAg
ICAgICAgICAgICAgICAgIG9mZnNldC5icmFuY2hPZmZzZXQgPSBwdHItPnZhbHVlLmJyYW5jaE9m
ZnNldDsKICAgICAgICAgICAgICAgICAgICAgbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1w
VGFibGVzW2ldLm9mZnNldFRhYmxlLmFkZChwdHItPmtleSwgb2Zmc2V0KTsKICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICB9CkBAIC0yMDY5LDExICsyMDMyLDE3IEBAIHZvaWQgQ29kZUJs
b2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0
YWJsZSwgVW5saW5rCiAgICAgLy8gQm9va2tlZXAgdGhlIHN0cm9uZ2x5IHJlZmVyZW5jZWQgbW9k
dWxlIGVudmlyb25tZW50cy4KICAgICBIYXNoU2V0PEpTTW9kdWxlRW52aXJvbm1lbnQqPiBzdHJv
bmdseVJlZmVyZW5jZWRNb2R1bGVFbnZpcm9ubWVudHM7CiAKLSAgICAvLyBCb29ra2VlcCB0aGUg
bWVyZ2UgcG9pbnQgYnl0ZWNvZGUgb2Zmc2V0cy4KLSAgICBWZWN0b3I8c2l6ZV90PiBtZXJnZVBv
aW50Qnl0ZWNvZGVPZmZzZXRzOwotCiAgICAgUmVmQ291bnRlZEFycmF5PEluc3RydWN0aW9uPiBp
bnN0cnVjdGlvbnMoaW5zdHJ1Y3Rpb25Db3VudCk7CiAKKyAgICB1bnNpZ25lZCB2YWx1ZVByb2Zp
bGVDb3VudCA9IDA7CisgICAgYXV0byBsaW5rVmFsdWVQcm9maWxlID0gWyZdKHVuc2lnbmVkIGJ5
dGVjb2RlT2Zmc2V0LCB1bnNpZ25lZCBvcExlbmd0aCkgeworICAgICAgICB1bnNpZ25lZCB2YWx1
ZVByb2ZpbGVJbmRleCA9IHZhbHVlUHJvZmlsZUNvdW50Kys7CisgICAgICAgIFZhbHVlUHJvZmls
ZSogcHJvZmlsZSA9ICZtX3ZhbHVlUHJvZmlsZXNbdmFsdWVQcm9maWxlSW5kZXhdOworICAgICAg
ICBBU1NFUlQocHJvZmlsZS0+bV9ieXRlY29kZU9mZnNldCA9PSAtMSk7CisgICAgICAgIHByb2Zp
bGUtPm1fYnl0ZWNvZGVPZmZzZXQgPSBieXRlY29kZU9mZnNldDsKKyAgICAgICAgaW5zdHJ1Y3Rp
b25zW2J5dGVjb2RlT2Zmc2V0ICsgb3BMZW5ndGggLSAxXSA9IHByb2ZpbGU7CisgICAgfTsKKwog
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7ICFpbnN0cnVjdGlvblJlYWRlci5hdEVuZCgpOyApIHsK
ICAgICAgICAgY29uc3QgVW5saW5rZWRJbnN0cnVjdGlvbiogcGMgPSBpbnN0cnVjdGlvblJlYWRl
ci5uZXh0KCk7CiAKQEAgLTIxMDgsMTAgKzIwNzcsNyBAQCB2b2lkIENvZGVCbG9jazo6ZmluaXNo
Q3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGlu
awogICAgICAgICBjYXNlIG9wX2dldF9ieV9pZDoKICAgICAgICAgY2FzZSBvcF9nZXRfZnJvbV9h
cmd1bWVudHM6CiAgICAgICAgIGNhc2Ugb3BfdG9fbnVtYmVyOiB7Ci0gICAgICAgICAgICBWYWx1
ZVByb2ZpbGUqIHByb2ZpbGUgPSAmbV92YWx1ZVByb2ZpbGVzW3BjW29wTGVuZ3RoIC0gMV0udS5v
cGVyYW5kXTsKLSAgICAgICAgICAgIEFTU0VSVChwcm9maWxlLT5tX2J5dGVjb2RlT2Zmc2V0ID09
IC0xKTsKLSAgICAgICAgICAgIHByb2ZpbGUtPm1fYnl0ZWNvZGVPZmZzZXQgPSBpOwotICAgICAg
ICAgICAgaW5zdHJ1Y3Rpb25zW2kgKyBvcExlbmd0aCAtIDFdID0gcHJvZmlsZTsKKyAgICAgICAg
ICAgIGxpbmtWYWx1ZVByb2ZpbGUoaSwgb3BMZW5ndGgpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9wdXRfYnlfdmFsOiB7CkBAIC0yMTQ4LDEwICsyMTE0
LDcgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0
YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICAgICAgY2FzZSBvcF9jYWxsOgogICAg
ICAgICBjYXNlIG9wX3RhaWxfY2FsbDoKICAgICAgICAgY2FzZSBvcF9jYWxsX2V2YWw6IHsKLSAg
ICAgICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9ICZtX3ZhbHVlUHJvZmlsZXNbcGNbb3BM
ZW5ndGggLSAxXS51Lm9wZXJhbmRdOwotICAgICAgICAgICAgQVNTRVJUKHByb2ZpbGUtPm1fYnl0
ZWNvZGVPZmZzZXQgPT0gLTEpOwotICAgICAgICAgICAgcHJvZmlsZS0+bV9ieXRlY29kZU9mZnNl
dCA9IGk7Ci0gICAgICAgICAgICBpbnN0cnVjdGlvbnNbaSArIG9wTGVuZ3RoIC0gMV0gPSBwcm9m
aWxlOworICAgICAgICAgICAgbGlua1ZhbHVlUHJvZmlsZShpLCBvcExlbmd0aCk7CiAgICAgICAg
ICAgICBpbnQgYXJyYXlQcm9maWxlSW5kZXggPSBwY1tvcExlbmd0aCAtIDJdLnUub3BlcmFuZDsK
ICAgICAgICAgICAgIG1fYXJyYXlQcm9maWxlc1thcnJheVByb2ZpbGVJbmRleF0gPSBBcnJheVBy
b2ZpbGUoaSk7CiAgICAgICAgICAgICBpbnN0cnVjdGlvbnNbaSArIG9wTGVuZ3RoIC0gMl0gPSAm
bV9hcnJheVByb2ZpbGVzW2FycmF5UHJvZmlsZUluZGV4XTsKQEAgLTIxNjAsMTAgKzIxMjMsNyBA
QCB2b2lkIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxl
KiBvd25lckV4ZWN1dGFibGUsIFVubGluawogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfY29u
c3RydWN0OiB7CiAgICAgICAgICAgICBpbnN0cnVjdGlvbnNbaSArIDVdID0gJm1fbGxpbnRDYWxs
TGlua0luZm9zW3BjWzVdLnUub3BlcmFuZF07Ci0gICAgICAgICAgICBWYWx1ZVByb2ZpbGUqIHBy
b2ZpbGUgPSAmbV92YWx1ZVByb2ZpbGVzW3BjW29wTGVuZ3RoIC0gMV0udS5vcGVyYW5kXTsKLSAg
ICAgICAgICAgIEFTU0VSVChwcm9maWxlLT5tX2J5dGVjb2RlT2Zmc2V0ID09IC0xKTsKLSAgICAg
ICAgICAgIHByb2ZpbGUtPm1fYnl0ZWNvZGVPZmZzZXQgPSBpOwotICAgICAgICAgICAgaW5zdHJ1
Y3Rpb25zW2kgKyBvcExlbmd0aCAtIDFdID0gcHJvZmlsZTsKKyAgICAgICAgICAgIGxpbmtWYWx1
ZVByb2ZpbGUoaSwgb3BMZW5ndGgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAg
ICAgICAgY2FzZSBvcF9nZXRfYXJyYXlfbGVuZ3RoOgpAQCAtMjE5NCwxMCArMjE1NCw3IEBAIHZv
aWQgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93
bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAgICAgIH0KIAogICAgICAgICBjYXNlIG9wX2dldF9m
cm9tX3Njb3BlOiB7Ci0gICAgICAgICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSAmbV92YWx1
ZVByb2ZpbGVzW3BjW29wTGVuZ3RoIC0gMV0udS5vcGVyYW5kXTsKLSAgICAgICAgICAgIEFTU0VS
VChwcm9maWxlLT5tX2J5dGVjb2RlT2Zmc2V0ID09IC0xKTsKLSAgICAgICAgICAgIHByb2ZpbGUt
Pm1fYnl0ZWNvZGVPZmZzZXQgPSBpOwotICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zW2kgKyBvcExl
bmd0aCAtIDFdID0gcHJvZmlsZTsKKyAgICAgICAgICAgIGxpbmtWYWx1ZVByb2ZpbGUoaSwgb3BM
ZW5ndGgpOwogCiAgICAgICAgICAgICAvLyBnZXRfZnJvbV9zY29wZSBkc3QsIHNjb3BlLCBpZCwg
R2V0UHV0SW5mbywgU3RydWN0dXJlLCBPcGVyYW5kCiAKQEAgLTIzNTQsMTUgKzIzMTEsNiBAQCB2
b2lkIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBv
d25lckV4ZWN1dGFibGUsIFVubGluawogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAot
ICAgICAgICBjYXNlIG9wX3NhdmU6IHsKLSAgICAgICAgICAgIHVuc2lnbmVkIGxpdmVDYWxsZWVM
b2NhbHNJbmRleCA9IHBjWzJdLnUuaW5kZXg7Ci0gICAgICAgICAgICBpbnQgb2Zmc2V0ID0gcGNb
M10udS5vcGVyYW5kOwotICAgICAgICAgICAgaWYgKGxpdmVDYWxsZWVMb2NhbHNJbmRleCA+PSBt
ZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXRzLnNpemUoKSkKLSAgICAgICAgICAgICAgICBtZXJnZVBv
aW50Qnl0ZWNvZGVPZmZzZXRzLnJlc2l6ZShsaXZlQ2FsbGVlTG9jYWxzSW5kZXggKyAxKTsKLSAg
ICAgICAgICAgIG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldHNbbGl2ZUNhbGxlZUxvY2Fsc0luZGV4
XSA9IGkgKyBvZmZzZXQ7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotCiAgICAgICAg
IGRlZmF1bHQ6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMjM3NCwyMCArMjMy
Miw2IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1
dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAKICAgICBtX2luc3RydWN0aW9ucyA9IFdU
Rk1vdmUoaW5zdHJ1Y3Rpb25zKTsKIAotICAgIC8vIFBlcmZvcm0gYnl0ZWNvZGUgbGl2ZW5lc3Mg
YW5hbHlzaXMgdG8gZGV0ZXJtaW5lIHdoaWNoIGxvY2FscyBhcmUgbGl2ZSBhbmQgc2hvdWxkIGJl
IHJlc3VtZWQgd2hlbiBleGVjdXRpbmcgb3BfcmVzdW1lLgotICAgIGlmICh1bmxpbmtlZENvZGVC
bG9jay0+cGFyc2VNb2RlKCkgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JCb2R5TW9kZSkg
ewotICAgICAgICBpZiAoc2l6ZV90IGNvdW50ID0gbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0cy5z
aXplKCkpIHsKLSAgICAgICAgICAgIGNyZWF0ZVJhcmVEYXRhSWZOZWNlc3NhcnkoKTsKLSAgICAg
ICAgICAgIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcyBsaXZlbmVzcyh0aGlzKTsKLSAgICAgICAg
ICAgIG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQuZ3Jvdyhjb3VudCk7Ci0g
ICAgICAgICAgICBzaXplX3QgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gMDsKLSAgICAgICAgICAg
IGZvciAoc2l6ZV90IGJ5dGVjb2RlT2Zmc2V0IDogbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0cykg
ewotICAgICAgICAgICAgICAgIG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGRb
bGl2ZUNhbGxlZUxvY2Fsc0luZGV4XSA9IGxpdmVuZXNzLmdldExpdmVuZXNzSW5mb0F0Qnl0ZWNv
ZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpOwotICAgICAgICAgICAgICAgICsrbGl2ZUNhbGxlZUxv
Y2Fsc0luZGV4OwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCiAgICAgLy8gU2V0
IG9wdGltaXphdGlvbiB0aHJlc2hvbGRzIG9ubHkgYWZ0ZXIgbV9pbnN0cnVjdGlvbnMgaXMgaW5p
dGlhbGl6ZWQsIHNpbmNlIHRoZXNlCiAgICAgLy8gcmVseSBvbiB0aGUgaW5zdHJ1Y3Rpb24gY291
bnQgKGFuZCBhcmUgaW4gdGhlb3J5IHBlcm1pdHRlZCB0byBhbHNvIGluc3BlY3QgdGhlCiAgICAg
Ly8gaW5zdHJ1Y3Rpb24gc3RyZWFtIHRvIG1vcmUgYWNjdXJhdGUgYXNzZXNzIHRoZSBjb3N0IG9m
IHRpZXItdXApLgpAQCAtMzI0NCwyMSArMzE3OCw3IEBAIEhhbmRsZXJJbmZvKiBDb2RlQmxvY2s6
OmhhbmRsZXJGb3JJbmRleCh1bnNpZ25lZCBpbmRleCwgUmVxdWlyZWRIYW5kbGVyIHJlcXVpcmVk
CiB7CiAgICAgaWYgKCFtX3JhcmVEYXRhKQogICAgICAgICByZXR1cm4gMDsKLSAgICAKLSAgICBW
ZWN0b3I8SGFuZGxlckluZm8+JiBleGNlcHRpb25IYW5kbGVycyA9IG1fcmFyZURhdGEtPm1fZXhj
ZXB0aW9uSGFuZGxlcnM7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBleGNlcHRpb25IYW5k
bGVycy5zaXplKCk7ICsraSkgewotICAgICAgICBIYW5kbGVySW5mbyYgaGFuZGxlciA9IGV4Y2Vw
dGlvbkhhbmRsZXJzW2ldOwotICAgICAgICBpZiAoKHJlcXVpcmVkSGFuZGxlciA9PSBSZXF1aXJl
ZEhhbmRsZXI6OkNhdGNoSGFuZGxlcikgJiYgIWhhbmRsZXIuaXNDYXRjaEhhbmRsZXIoKSkKLSAg
ICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIC8vIEhhbmRsZXJzIGFyZSBvcmRlcmVkIGlu
bmVybW9zdCBmaXJzdCwgc28gdGhlIGZpcnN0IGhhbmRsZXIgd2UgZW5jb3VudGVyCi0gICAgICAg
IC8vIHRoYXQgY29udGFpbnMgdGhlIHNvdXJjZSBhZGRyZXNzIGlzIHRoZSBjb3JyZWN0IGhhbmRs
ZXIgdG8gdXNlLgotICAgICAgICAvLyBUaGlzIGluZGV4IHVzZWQgaXMgZWl0aGVyIHRoZSBCeXRl
Y29kZU9mZnNldCBvciBhIENhbGxTaXRlSW5kZXguCi0gICAgICAgIGlmIChoYW5kbGVyLnN0YXJ0
IDw9IGluZGV4ICYmIGhhbmRsZXIuZW5kID4gaW5kZXgpCi0gICAgICAgICAgICByZXR1cm4gJmhh
bmRsZXI7Ci0gICAgfQotCi0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIEhhbmRsZXJJbmZvOjpo
YW5kbGVyRm9ySW5kZXgobV9yYXJlRGF0YS0+bV9leGNlcHRpb25IYW5kbGVycywgaW5kZXgsIHJl
cXVpcmVkSGFuZGxlcik7CiB9CiAKIENhbGxTaXRlSW5kZXggQ29kZUJsb2NrOjpuZXdFeGNlcHRp
b25IYW5kbGluZ0NhbGxTaXRlSW5kZXgoQ2FsbFNpdGVJbmRleCBvcmlnaW5hbENhbGxTaXRlKQpA
QCAtMzM1Myw3ICszMjczLDYgQEAgdm9pZCBDb2RlQmxvY2s6OnNocmlua1RvRml0KFNocmlua01v
ZGUgc2hyaW5rTW9kZSkKICAgICAgICAgaWYgKG1fcmFyZURhdGEpIHsKICAgICAgICAgICAgIG1f
cmFyZURhdGEtPm1fc3dpdGNoSnVtcFRhYmxlcy5zaHJpbmtUb0ZpdCgpOwogICAgICAgICAgICAg
bV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzLnNocmlua1RvRml0KCk7Ci0gICAg
ICAgICAgICBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkLnNocmlua1RvRml0
KCk7CiAgICAgICAgIH0KICAgICB9IC8vIGVsc2UgZG9uJ3Qgc2hyaW5rIHRoZXNlLCBiZWNhdXNl
IHdlIHdvdWxkIGhhdmUgYWxyZWFkeSBwb2ludGVkIHBvaW50ZXJzIGludG8gdGhlc2UgdGFibGVz
LgogfQpAQCAtNDMzNSwxNCArNDI1NCw5IEBAIFN0cmluZyBDb2RlQmxvY2s6Om5hbWVGb3JSZWdp
c3RlcihWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVyKQogCiBWYWx1ZVByb2ZpbGUqIENv
ZGVCbG9jazo6dmFsdWVQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoaW50IGJ5dGVjb2RlT2Zmc2V0
KQogewotICAgIFZhbHVlUHJvZmlsZSogcmVzdWx0ID0gYmluYXJ5U2VhcmNoPFZhbHVlUHJvZmls
ZSwgaW50PigKLSAgICAgICAgbV92YWx1ZVByb2ZpbGVzLCBtX3ZhbHVlUHJvZmlsZXMuc2l6ZSgp
LCBieXRlY29kZU9mZnNldCwKLSAgICAgICAgZ2V0VmFsdWVQcm9maWxlQnl0ZWNvZGVPZmZzZXQ8
VmFsdWVQcm9maWxlPik7Ci0gICAgQVNTRVJUKHJlc3VsdC0+bV9ieXRlY29kZU9mZnNldCAhPSAt
MSk7Ci0gICAgQVNTRVJUKGluc3RydWN0aW9ucygpW2J5dGVjb2RlT2Zmc2V0ICsgb3Bjb2RlTGVu
Z3RoKAotICAgICAgICBtX3ZtLT5pbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoCi0gICAgICAgICAg
ICBpbnN0cnVjdGlvbnMoKVtieXRlY29kZU9mZnNldF0udS5vcGNvZGUpKSAtIDFdLnUucHJvZmls
ZSA9PSByZXN1bHQpOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgT3Bjb2RlSUQgb3Bjb2RlSUQg
PSBtX3ZtLT5pbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25zKClbYnl0ZWNvZGVP
ZmZzZXRdLnUub3Bjb2RlKTsKKyAgICB1bnNpZ25lZCBsZW5ndGggPSBvcGNvZGVMZW5ndGgob3Bj
b2RlSUQpOworICAgIHJldHVybiBpbnN0cnVjdGlvbnMoKVtieXRlY29kZU9mZnNldCArIGxlbmd0
aCAtIDFdLnUucHJvZmlsZTsKIH0KIAogdm9pZCBDb2RlQmxvY2s6OnZhbGlkYXRlKCkKQEAgLTQ2
NzEsNCArNDU4NSwxNiBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcE1hdGhJQ1N0YXRzKCkKICNlbmRp
ZgogfQogCitCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMmIENvZGVCbG9jazo6bGl2ZW5lc3NBbmFs
eXNpc1Nsb3coKQoreworICAgIHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUxpdmVuZXNzQW5hbHlz
aXM+IGFuYWx5c2lzID0gc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM+
KHRoaXMpOworICAgIHsKKyAgICAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIobV9sb2Nr
KTsKKyAgICAgICAgaWYgKCFtX2xpdmVuZXNzQW5hbHlzaXMpCisgICAgICAgICAgICBtX2xpdmVu
ZXNzQW5hbHlzaXMgPSBXVEZNb3ZlKGFuYWx5c2lzKTsKKyAgICAgICAgcmV0dXJuICptX2xpdmVu
ZXNzQW5hbHlzaXM7CisgICAgfQorfQorCisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCmluZGV4IGFiOTI4MDRmNmJhMzliM2I2
N2JhNmQ3NzVlNDQ5ZTJmM2RiZjdjMDUuLjllNWQ2MDc4NzczZjM4Y2JiMjJkYzZhNTBmYWZhN2Nl
YjBlMWZmYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgK
QEAgLTMzLDcgKzMzLDYgQEAKICNpbmNsdWRlICJBcnJheVByb2ZpbGUuaCIKICNpbmNsdWRlICJC
eVZhbEluZm8uaCIKICNpbmNsdWRlICJCeXRlY29kZUNvbnZlbnRpb25zLmgiCi0jaW5jbHVkZSAi
Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmgiCiAjaW5jbHVkZSAiQ2FsbExpbmtJbmZvLmgiCiAj
aW5jbHVkZSAiQ2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQuaCIKICNpbmNsdWRlICJD
b2RlQmxvY2tIYXNoLmgiCkBAIC03OSw2ICs3OCw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCitj
bGFzcyBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM7CiBjbGFzcyBFeGVjU3RhdGU7CiBjbGFzcyBK
SVRBZGRHZW5lcmF0b3I7CiBjbGFzcyBKU01vZHVsZUVudmlyb25tZW50OwpAQCAtMjI2LDEwICsy
MjYsNiBAQCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAgICAgcmV0dXJu
IGluZGV4ID49IG1fbnVtVmFyczsKICAgICB9CiAKLSAgICBlbnVtIGNsYXNzIFJlcXVpcmVkSGFu
ZGxlciB7Ci0gICAgICAgIENhdGNoSGFuZGxlciwKLSAgICAgICAgQW55SGFuZGxlcgotICAgIH07
CiAgICAgSGFuZGxlckluZm8qIGhhbmRsZXJGb3JCeXRlY29kZU9mZnNldCh1bnNpZ25lZCBieXRl
Y29kZU9mZnNldCwgUmVxdWlyZWRIYW5kbGVyID0gUmVxdWlyZWRIYW5kbGVyOjpBbnlIYW5kbGVy
KTsKICAgICBIYW5kbGVySW5mbyogaGFuZGxlckZvckluZGV4KHVuc2lnbmVkLCBSZXF1aXJlZEhh
bmRsZXIgPSBSZXF1aXJlZEhhbmRsZXI6OkFueUhhbmRsZXIpOwogICAgIHZvaWQgcmVtb3ZlRXhj
ZXB0aW9uSGFuZGxlckZvckNhbGxTaXRlKENhbGxTaXRlSW5kZXgpOwpAQCAtMzA0LDYgKzMwMCw5
IEBAIGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8SW5zdHJ1Y3Rpb24qPihyZXR1cm5BZGRyZXNzKSAtIGluc3RydWN0aW9ucygpLmJl
Z2luKCk7CiAgICAgfQogCisgICAgdHlwZWRlZiBKU0M6Okluc3RydWN0aW9uIEluc3RydWN0aW9u
OworICAgIHR5cGVkZWYgUmVmQ291bnRlZEFycmF5PEluc3RydWN0aW9uPiYgVW5wYWNrZWRJbnN0
cnVjdGlvbnM7CisKICAgICB1bnNpZ25lZCBudW1iZXJPZkluc3RydWN0aW9ucygpIGNvbnN0IHsg
cmV0dXJuIG1faW5zdHJ1Y3Rpb25zLnNpemUoKTsgfQogICAgIFJlZkNvdW50ZWRBcnJheTxJbnN0
cnVjdGlvbj4mIGluc3RydWN0aW9ucygpIHsgcmV0dXJuIG1faW5zdHJ1Y3Rpb25zOyB9CiAgICAg
Y29uc3QgUmVmQ291bnRlZEFycmF5PEluc3RydWN0aW9uPiYgaW5zdHJ1Y3Rpb25zKCkgY29uc3Qg
eyByZXR1cm4gbV9pbnN0cnVjdGlvbnM7IH0KQEAgLTU0Niw3ICs1NDUsNyBAQCBjbGFzcyBDb2Rl
QmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICB9CiAKICAgICBXcml0ZUJhcnJpZXI8VW5rbm93
bj4mIGNvbnN0YW50UmVnaXN0ZXIoaW50IGluZGV4KSB7IHJldHVybiBtX2NvbnN0YW50UmVnaXN0
ZXJzW2luZGV4IC0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXhdOyB9Ci0gICAgQUxXQVlTX0lO
TElORSBib29sIGlzQ29uc3RhbnRSZWdpc3RlckluZGV4KGludCBpbmRleCkgY29uc3QgeyByZXR1
cm4gaW5kZXggPj0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXg7IH0KKyAgICBzdGF0aWMgQUxX
QVlTX0lOTElORSBib29sIGlzQ29uc3RhbnRSZWdpc3RlckluZGV4KGludCBpbmRleCkgeyByZXR1
cm4gaW5kZXggPj0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXg7IH0KICAgICBBTFdBWVNfSU5M
SU5FIEpTVmFsdWUgZ2V0Q29uc3RhbnQoaW50IGluZGV4KSBjb25zdCB7IHJldHVybiBtX2NvbnN0
YW50UmVnaXN0ZXJzW2luZGV4IC0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXhdLmdldCgpOyB9
CiAgICAgQUxXQVlTX0lOTElORSBTb3VyY2VDb2RlUmVwcmVzZW50YXRpb24gY29uc3RhbnRTb3Vy
Y2VDb2RlUmVwcmVzZW50YXRpb24oaW50IGluZGV4KSBjb25zdCB7IHJldHVybiBtX2NvbnN0YW50
c1NvdXJjZUNvZGVSZXByZXNlbnRhdGlvbltpbmRleCAtIEZpcnN0Q29uc3RhbnRSZWdpc3Rlcklu
ZGV4XTsgfQogCkBAIC01OTIsMTQgKzU5MSw3IEBAIGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBK
U0NlbGwgewogICAgICAgICAgICAgaWYgKCEhbV9saXZlbmVzc0FuYWx5c2lzKQogICAgICAgICAg
ICAgICAgIHJldHVybiAqbV9saXZlbmVzc0FuYWx5c2lzOwogICAgICAgICB9Ci0gICAgICAgIHN0
ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM+IGFuYWx5c2lzID0KLSAgICAg
ICAgICAgIHN0ZDo6bWFrZV91bmlxdWU8Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzPih0aGlzKTsK
LSAgICAgICAgewotICAgICAgICAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIobV9sb2Nr
KTsKLSAgICAgICAgICAgIGlmICghbV9saXZlbmVzc0FuYWx5c2lzKQotICAgICAgICAgICAgICAg
IG1fbGl2ZW5lc3NBbmFseXNpcyA9IFdURk1vdmUoYW5hbHlzaXMpOwotICAgICAgICAgICAgcmV0
dXJuICptX2xpdmVuZXNzQW5hbHlzaXM7Ci0gICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGxpdmVu
ZXNzQW5hbHlzaXNTbG93KCk7CiAgICAgfQogICAgIAogICAgIHZvaWQgdmFsaWRhdGUoKTsKQEAg
LTYyMCwxOCArNjEyLDYgQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAg
U3RyaW5nSnVtcFRhYmxlJiBhZGRTdHJpbmdTd2l0Y2hKdW1wVGFibGUoKSB7IGNyZWF0ZVJhcmVE
YXRhSWZOZWNlc3NhcnkoKTsgbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzLmFw
cGVuZChTdHJpbmdKdW1wVGFibGUoKSk7IHJldHVybiBtX3JhcmVEYXRhLT5tX3N0cmluZ1N3aXRj
aEp1bXBUYWJsZXMubGFzdCgpOyB9CiAgICAgU3RyaW5nSnVtcFRhYmxlJiBzdHJpbmdTd2l0Y2hK
dW1wVGFibGUoaW50IHRhYmxlSW5kZXgpIHsgUkVMRUFTRV9BU1NFUlQobV9yYXJlRGF0YSk7IHJl
dHVybiBtX3JhcmVEYXRhLT5tX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXNbdGFibGVJbmRleF07IH0K
IAotICAgIC8vIExpdmUgY2FsbGVlIHJlZ2lzdGVycyBhdCB5aWVsZCBwb2ludHMuCi0gICAgY29u
c3QgRmFzdEJpdFZlY3RvciYgbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQodW5zaWduZWQgaW5kZXgp
IGNvbnN0Ci0gICAgewotICAgICAgICBSRUxFQVNFX0FTU0VSVChtX3JhcmVEYXRhKTsKLSAgICAg
ICAgcmV0dXJuIG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGRbaW5kZXhdOwot
ICAgIH0KLSAgICBGYXN0Qml0VmVjdG9yJiBsaXZlQ2FsbGVlTG9jYWxzQXRZaWVsZCh1bnNpZ25l
ZCBpbmRleCkKLSAgICB7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fcmFyZURhdGEpOwotICAg
ICAgICByZXR1cm4gbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZFtpbmRleF07
Ci0gICAgfQotCiAgICAgRXZhbENvZGVDYWNoZSYgZXZhbENvZGVDYWNoZSgpIHsgY3JlYXRlUmFy
ZURhdGFJZk5lY2Vzc2FyeSgpOyByZXR1cm4gbV9yYXJlRGF0YS0+bV9ldmFsQ29kZUNhY2hlOyB9
CiAKICAgICBlbnVtIFNocmlua01vZGUgewpAQCAtODg2LDggKzg2Niw2IEBAIGNsYXNzIENvZGVC
bG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgICAgICBWZWN0b3I8U2ltcGxlSnVtcFRhYmxlPiBt
X3N3aXRjaEp1bXBUYWJsZXM7CiAgICAgICAgIFZlY3RvcjxTdHJpbmdKdW1wVGFibGU+IG1fc3Ry
aW5nU3dpdGNoSnVtcFRhYmxlczsKIAotICAgICAgICBWZWN0b3I8RmFzdEJpdFZlY3Rvcj4gbV9s
aXZlQ2FsbGVlTG9jYWxzQXRZaWVsZDsKLQogICAgICAgICBFdmFsQ29kZUNhY2hlIG1fZXZhbENv
ZGVDYWNoZTsKICAgICB9OwogCkBAIC05MjIsNiArOTAwLDggQEAgY2xhc3MgQ29kZUJsb2NrIDog
cHVibGljIEpTQ2VsbCB7CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIENvZGVCbG9ja1Nl
dDsKKworICAgIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcyYgbGl2ZW5lc3NBbmFseXNpc1Nsb3co
KTsKICAgICAKICAgICBDb2RlQmxvY2sqIHNwZWNpYWxPU1JFbnRyeUJsb2NrT3JOdWxsKCk7CiAg
ICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSGFuZGxlcklu
Zm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9IYW5kbGVySW5mby5oCmluZGV4
IGFjZGRhMDhlZDE0Y2JmOWYwOTcxMjc1MDQwNWE0MTc0MWY3NmEyMTMuLjdiMTA4YWNlOTM3Mjhh
OGQ1ZGY4ZWIxNzNmYzBiMGE2MWJhZWQ2M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9IYW5kbGVySW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9IYW5kbGVySW5mby5oCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIEhhbmRsZXJJ
bmZvX2gKIAogI2luY2x1ZGUgIkNvZGVMb2NhdGlvbi5oIgorI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTM3LDYgKzM4LDExIEBAIGVudW0gY2xhc3MgSGFu
ZGxlclR5cGUgewogICAgIFN5bnRoZXNpemVkRmluYWxseSA9IDMKIH07CiAKK2VudW0gY2xhc3Mg
UmVxdWlyZWRIYW5kbGVyIHsKKyAgICBDYXRjaEhhbmRsZXIsCisgICAgQW55SGFuZGxlcgorfTsK
Kwogc3RydWN0IEhhbmRsZXJJbmZvQmFzZSB7CiAgICAgSGFuZGxlclR5cGUgdHlwZSgpIGNvbnN0
IHsgcmV0dXJuIHN0YXRpY19jYXN0PEhhbmRsZXJUeXBlPih0eXBlQml0cyk7IH0KICAgICB2b2lk
IHNldFR5cGUoSGFuZGxlclR5cGUgdHlwZSkgeyB0eXBlQml0cyA9IHN0YXRpY19jYXN0PHVpbnQz
Ml90Pih0eXBlKTsgfQpAQCAtNTgsNiArNjQsMjMgQEAgc3RydWN0IEhhbmRsZXJJbmZvQmFzZSB7
CiAKICAgICBib29sIGlzQ2F0Y2hIYW5kbGVyKCkgY29uc3QgeyByZXR1cm4gdHlwZSgpID09IEhh
bmRsZXJUeXBlOjpDYXRjaDsgfQogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgSGFuZGxlcj4KKyAg
ICBzdGF0aWMgSGFuZGxlciogaGFuZGxlckZvckluZGV4KFZlY3RvcjxIYW5kbGVyPiYgZXhlcHRp
b25IYW5kbGVycywgdW5zaWduZWQgaW5kZXgsIFJlcXVpcmVkSGFuZGxlciByZXF1aXJlZEhhbmRs
ZXIpCisgICAgeworICAgICAgICBmb3IgKEhhbmRsZXImIGhhbmRsZXIgOiBleGVwdGlvbkhhbmRs
ZXJzKSB7CisgICAgICAgICAgICBpZiAoKHJlcXVpcmVkSGFuZGxlciA9PSBSZXF1aXJlZEhhbmRs
ZXI6OkNhdGNoSGFuZGxlcikgJiYgIWhhbmRsZXIuaXNDYXRjaEhhbmRsZXIoKSkKKyAgICAgICAg
ICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgLy8gSGFuZGxlcnMgYXJlIG9yZGVyZWQg
aW5uZXJtb3N0IGZpcnN0LCBzbyB0aGUgZmlyc3QgaGFuZGxlciB3ZSBlbmNvdW50ZXIKKyAgICAg
ICAgICAgIC8vIHRoYXQgY29udGFpbnMgdGhlIHNvdXJjZSBhZGRyZXNzIGlzIHRoZSBjb3JyZWN0
IGhhbmRsZXIgdG8gdXNlLgorICAgICAgICAgICAgLy8gVGhpcyBpbmRleCB1c2VkIGlzIGVpdGhl
ciB0aGUgQnl0ZWNvZGVPZmZzZXQgb3IgYSBDYWxsU2l0ZUluZGV4LgorICAgICAgICAgICAgaWYg
KGhhbmRsZXIuc3RhcnQgPD0gaW5kZXggJiYgaGFuZGxlci5lbmQgPiBpbmRleCkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gJmhhbmRsZXI7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICB9CisKICAgICB1aW50MzJfdCBzdGFydDsKICAgICB1aW50MzJfdCBlbmQ7CiAg
ICAgdWludDMyX3QgdGFyZ2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL09wY29kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5o
CmluZGV4IGVlNjY3Yzg0ZmIyNjUyZjI1OWUzMjEyNGQxZTlhN2E3MWRkZTAxZTAuLjRkYjYxMGU0
ZThlNGRmNTZjYjg0ZTJlNzI4YWVhNDhiODdhMTVhNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvT3Bjb2RlLmgKQEAgLTEyNiw2ICsxMjYsNjQgQEAgaW5saW5lIHNpemVfdCBvcGNv
ZGVMZW5ndGgoT3Bjb2RlSUQgb3Bjb2RlKQogICAgIHJldHVybiAwOwogfQogCitpbmxpbmUgYm9v
bCBpc0JyYW5jaChPcGNvZGVJRCBvcGNvZGVJRCkKK3sKKyAgICBzd2l0Y2ggKG9wY29kZUlEKSB7
CisgICAgY2FzZSBvcF9qbXA6CisgICAgY2FzZSBvcF9qdHJ1ZToKKyAgICBjYXNlIG9wX2pmYWxz
ZToKKyAgICBjYXNlIG9wX2plcV9udWxsOgorICAgIGNhc2Ugb3Bfam5lcV9udWxsOgorICAgIGNh
c2Ugb3Bfam5lcV9wdHI6CisgICAgY2FzZSBvcF9qbGVzczoKKyAgICBjYXNlIG9wX2psZXNzZXE6
CisgICAgY2FzZSBvcF9qZ3JlYXRlcjoKKyAgICBjYXNlIG9wX2pncmVhdGVyZXE6CisgICAgY2Fz
ZSBvcF9qbmxlc3M6CisgICAgY2FzZSBvcF9qbmxlc3NlcToKKyAgICBjYXNlIG9wX2puZ3JlYXRl
cjoKKyAgICBjYXNlIG9wX2puZ3JlYXRlcmVxOgorICAgIGNhc2Ugb3Bfc3dpdGNoX2ltbToKKyAg
ICBjYXNlIG9wX3N3aXRjaF9jaGFyOgorICAgIGNhc2Ugb3Bfc3dpdGNoX3N0cmluZzoKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KK30KKworaW5saW5lIGJvb2wgaXNVbmNvbmRpdGlvbmFsQnJhbmNoKE9wY29kZUlEIG9wY29k
ZUlEKQoreworICAgIHN3aXRjaCAob3Bjb2RlSUQpIHsKKyAgICBjYXNlIG9wX2ptcDoKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KK30KKworaW5saW5lIGJvb2wgaXNUZXJtaW5hbChPcGNvZGVJRCBvcGNvZGVJRCkKK3sKKyAg
ICBzd2l0Y2ggKG9wY29kZUlEKSB7CisgICAgY2FzZSBvcF9yZXQ6CisgICAgY2FzZSBvcF9lbmQ6
CisgICAgICAgIHJldHVybiB0cnVlOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9Cit9CisKK2lubGluZSBib29sIGlzVGhyb3coT3Bjb2RlSUQgb3Bjb2RlSUQpCit7
CisgICAgc3dpdGNoIChvcGNvZGVJRCkgeworICAgIGNhc2Ugb3BfdGhyb3c6CisgICAgY2FzZSBv
cF90aHJvd19zdGF0aWNfZXJyb3I6CisgICAgICAgIHJldHVybiB0cnVlOworICAgIGRlZmF1bHQ6
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwog
CiBuYW1lc3BhY2UgV1RGIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9QcmVjaXNlSnVtcFRhcmdldHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5jcHAKaW5kZXggZTJjYjAwMDQ4Mzc5NGJhOTJkNTEwZGNm
NWZhOTk0ODg1YTIzZGMzZC4uOWMwNmU3ZWMyN2Q1YjIwYjAyYjg3NzU0MmZlNDE1ZGM5MmM5YjE3
OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1w
VGFyZ2V0cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VK
dW1wVGFyZ2V0cy5jcHAKQEAgLTI2LDY5ICsyNiwzNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIlByZWNpc2VKdW1wVGFyZ2V0cy5oIgogCisjaW5jbHVkZSAiSW50ZXJwcmV0ZXJJ
bmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIlByZWNpc2VKdW1w
VGFyZ2V0c0lubGluZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKLXRlbXBsYXRlIDxzaXplX3Qg
dmVjdG9yU2l6ZT4KLXN0YXRpYyB2b2lkIGdldEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQo
Q29kZUJsb2NrKiBjb2RlQmxvY2ssIEludGVycHJldGVyKiBpbnRlcnByZXRlciwgSW5zdHJ1Y3Rp
b24qIGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgVmVjdG9yPHVu
c2lnbmVkLCB2ZWN0b3JTaXplPiYgb3V0KQordGVtcGxhdGUgPHNpemVfdCB2ZWN0b3JTaXplLCB0
eXBlbmFtZSBCbG9jaywgdHlwZW5hbWUgSW5zdHJ1Y3Rpb24+CitzdGF0aWMgdm9pZCBnZXRKdW1w
VGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KEJsb2NrKiBjb2RlQmxvY2ssIEludGVycHJldGVyKiBp
bnRlcnByZXRlciwgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBieXRl
Y29kZU9mZnNldCwgVmVjdG9yPHVuc2lnbmVkLCB2ZWN0b3JTaXplPiYgb3V0KQogewotICAgIE9w
Y29kZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGluc3RydWN0aW9uc0Jl
Z2luW2J5dGVjb2RlT2Zmc2V0XS51Lm9wY29kZSk7Ci0gICAgSW5zdHJ1Y3Rpb24qIGN1cnJlbnQg
PSBpbnN0cnVjdGlvbnNCZWdpbiArIGJ5dGVjb2RlT2Zmc2V0OwotICAgIHN3aXRjaCAob3Bjb2Rl
SUQpIHsKLSAgICBjYXNlIG9wX2ptcDoKLSAgICAgICAgb3V0LmFwcGVuZChieXRlY29kZU9mZnNl
dCArIGN1cnJlbnRbMV0udS5vcGVyYW5kKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBvcF9q
dHJ1ZToKLSAgICBjYXNlIG9wX2pmYWxzZToKLSAgICBjYXNlIG9wX2plcV9udWxsOgotICAgIGNh
c2Ugb3Bfam5lcV9udWxsOgotICAgICAgICBvdXQuYXBwZW5kKGJ5dGVjb2RlT2Zmc2V0ICsgY3Vy
cmVudFsyXS51Lm9wZXJhbmQpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIG9wX2puZXFfcHRy
OgotICAgIGNhc2Ugb3Bfamxlc3M6Ci0gICAgY2FzZSBvcF9qbGVzc2VxOgotICAgIGNhc2Ugb3Bf
amdyZWF0ZXI6Ci0gICAgY2FzZSBvcF9qZ3JlYXRlcmVxOgotICAgIGNhc2Ugb3Bfam5sZXNzOgot
ICAgIGNhc2Ugb3Bfam5sZXNzZXE6Ci0gICAgY2FzZSBvcF9qbmdyZWF0ZXI6Ci0gICAgY2FzZSBv
cF9qbmdyZWF0ZXJlcToKLSAgICBjYXNlIG9wX3NhdmU6IC8vIFRoZSBqdW1wIG9mIG9wX3NhdmUg
aXMgcHVyZWx5IGZvciBjYWxjdWxhdGluZyBsaXZlbmVzcy4KLSAgICAgICAgb3V0LmFwcGVuZChi
eXRlY29kZU9mZnNldCArIGN1cnJlbnRbM10udS5vcGVyYW5kKTsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBvcF9zd2l0Y2hfaW1tOgotICAgIGNhc2Ugb3Bfc3dpdGNoX2NoYXI6IHsKLSAgICAg
ICAgU2ltcGxlSnVtcFRhYmxlJiB0YWJsZSA9IGNvZGVCbG9jay0+c3dpdGNoSnVtcFRhYmxlKGN1
cnJlbnRbMV0udS5vcGVyYW5kKTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gdGFibGUuYnJh
bmNoT2Zmc2V0cy5zaXplKCk7IGktLTspCi0gICAgICAgICAgICBvdXQuYXBwZW5kKGJ5dGVjb2Rl
T2Zmc2V0ICsgdGFibGUuYnJhbmNoT2Zmc2V0c1tpXSk7Ci0gICAgICAgIG91dC5hcHBlbmQoYnl0
ZWNvZGVPZmZzZXQgKyBjdXJyZW50WzJdLnUub3BlcmFuZCk7Ci0gICAgICAgIGJyZWFrOwotICAg
IH0KLSAgICBjYXNlIG9wX3N3aXRjaF9zdHJpbmc6IHsKLSAgICAgICAgU3RyaW5nSnVtcFRhYmxl
JiB0YWJsZSA9IGNvZGVCbG9jay0+c3RyaW5nU3dpdGNoSnVtcFRhYmxlKGN1cnJlbnRbMV0udS5v
cGVyYW5kKTsKLSAgICAgICAgU3RyaW5nSnVtcFRhYmxlOjpTdHJpbmdPZmZzZXRUYWJsZTo6aXRl
cmF0b3IgaXRlciA9IHRhYmxlLm9mZnNldFRhYmxlLmJlZ2luKCk7Ci0gICAgICAgIFN0cmluZ0p1
bXBUYWJsZTo6U3RyaW5nT2Zmc2V0VGFibGU6Oml0ZXJhdG9yIGVuZCA9IHRhYmxlLm9mZnNldFRh
YmxlLmVuZCgpOwotICAgICAgICBmb3IgKDsgaXRlciAhPSBlbmQ7ICsraXRlcikKLSAgICAgICAg
ICAgIG91dC5hcHBlbmQoYnl0ZWNvZGVPZmZzZXQgKyBpdGVyLT52YWx1ZS5icmFuY2hPZmZzZXQp
OwotICAgICAgICBvdXQuYXBwZW5kKGJ5dGVjb2RlT2Zmc2V0ICsgY3VycmVudFsyXS51Lm9wZXJh
bmQpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgY2FzZSBvcF9sb29wX2hpbnQ6CisgICAg
T3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25z
QmVnaW5bYnl0ZWNvZGVPZmZzZXRdKTsKKyAgICBleHRyYWN0U3RvcmVkSnVtcFRhcmdldHNGb3JC
eXRlY29kZU9mZnNldChjb2RlQmxvY2ssIGludGVycHJldGVyLCBpbnN0cnVjdGlvbnNCZWdpbiwg
Ynl0ZWNvZGVPZmZzZXQsIFsmXShpbnQzMl90JiByZWxhdGl2ZU9mZnNldCkgeworICAgICAgICBv
dXQuYXBwZW5kKGJ5dGVjb2RlT2Zmc2V0ICsgcmVsYXRpdmVPZmZzZXQpOworICAgIH0pOworICAg
IC8vIG9wX2xvb3BfaGludCBkb2VzIG5vdCBoYXZlIGp1bXAgdGFyZ2V0IHN0b3JlZCBpbiBieXRl
Y29kZSBpbnN0cnVjdGlvbnMuCisgICAgaWYgKG9wY29kZUlEID09IG9wX2xvb3BfaGludCkKICAg
ICAgICAgb3V0LmFwcGVuZChieXRlY29kZU9mZnNldCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGRl
ZmF1bHQ6Ci0gICAgICAgIGJyZWFrOwotICAgIH0KIH0KIAotdm9pZCBjb21wdXRlUHJlY2lzZUp1
bXBUYXJnZXRzKENvZGVCbG9jayogY29kZUJsb2NrLCBWZWN0b3I8dW5zaWduZWQsIDMyPiYgb3V0
KQorZW51bSBjbGFzcyBDb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzTW9kZSB7CisgICAgRm9sbG93
Q29kZUJsb2NrQ2xhaW0sCisgICAgRm9yY2VDb21wdXRlLAorfTsKKwordGVtcGxhdGU8Q29tcHV0
ZVByZWNpc2VKdW1wVGFyZ2V0c01vZGUgTW9kZSwgdHlwZW5hbWUgQmxvY2ssIHR5cGVuYW1lIElu
c3RydWN0aW9uLCBzaXplX3QgdmVjdG9yU2l6ZT4KK3ZvaWQgY29tcHV0ZVByZWNpc2VKdW1wVGFy
Z2V0c0ludGVybmFsKEJsb2NrKiBjb2RlQmxvY2ssIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNC
ZWdpbiwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCwgVmVjdG9yPHVuc2lnbmVkLCB2ZWN0b3JT
aXplPiYgb3V0KQogewogICAgIEFTU0VSVChvdXQuaXNFbXB0eSgpKTsKICAgICAKICAgICAvLyBX
ZSB3aWxsIGRlcml2ZSBhIHN1cGVyc2V0IG9mIHRoZSBqdW1wIHRhcmdldHMgdGhhdCB0aGUgY29k
ZSBibG9jayB0aGlua3MgaXQgaGFzLgogICAgIC8vIFNvLCBpZiB0aGUgY29kZSBibG9jayBjbGFp
bXMgdGhlcmUgYXJlIG5vbmUsIHRoZW4gd2UgYXJlIGRvbmUuCi0gICAgaWYgKCFjb2RlQmxvY2st
Pm51bWJlck9mSnVtcFRhcmdldHMoKSkKKyAgICBpZiAoTW9kZSA9PSBDb21wdXRlUHJlY2lzZUp1
bXBUYXJnZXRzTW9kZTo6Rm9sbG93Q29kZUJsb2NrQ2xhaW0gJiYgIWNvZGVCbG9jay0+bnVtYmVy
T2ZKdW1wVGFyZ2V0cygpKQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgZm9yICh1bnNpZ25l
ZCBpID0gY29kZUJsb2NrLT5udW1iZXJPZkV4Y2VwdGlvbkhhbmRsZXJzKCk7IGktLTspIHsKQEAg
LTk4LDEwICs2Niw4IEBAIHZvaWQgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhDb2RlQmxvY2sq
IGNvZGVCbG9jaywgVmVjdG9yPHVuc2lnbmVkLCAzMj4mIG91dCkKICAgICB9CiAKICAgICBJbnRl
cnByZXRlciogaW50ZXJwcmV0ZXIgPSBjb2RlQmxvY2stPnZtKCktPmludGVycHJldGVyOwotICAg
IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiA9IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25z
KCkuYmVnaW4oKTsKLSAgICB1bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50ID0gY29kZUJsb2NrLT5p
bnN0cnVjdGlvbnMoKS5zaXplKCk7CiAgICAgZm9yICh1bnNpZ25lZCBieXRlY29kZU9mZnNldCA9
IDA7IGJ5dGVjb2RlT2Zmc2V0IDwgaW5zdHJ1Y3Rpb25Db3VudDspIHsKLSAgICAgICAgT3Bjb2Rl
SUQgb3Bjb2RlSUQgPSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25zQmVnaW5b
Ynl0ZWNvZGVPZmZzZXRdLnUub3Bjb2RlKTsKKyAgICAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBp
bnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25zQmVnaW5bYnl0ZWNvZGVPZmZzZXRd
KTsKICAgICAgICAgZ2V0SnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChjb2RlQmxvY2ssIGlu
dGVycHJldGVyLCBpbnN0cnVjdGlvbnNCZWdpbiwgYnl0ZWNvZGVPZmZzZXQsIG91dCk7CiAgICAg
ICAgIGJ5dGVjb2RlT2Zmc2V0ICs9IG9wY29kZUxlbmd0aHNbb3Bjb2RlSURdOwogICAgIH0KQEAg
LTEyMywxMSArODksMzQgQEAgdm9pZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKENvZGVCbG9j
ayogY29kZUJsb2NrLCBWZWN0b3I8dW5zaWduZWQsIDMyPiYgb3V0KQogICAgIG91dC5zaHJpbmtU
b0ZpdCgpOwogfQogCi12b2lkIGZpbmRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVC
bG9jayogY29kZUJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgVmVjdG9yPHVuc2lnbmVk
LCAxPiYgb3V0KQordm9pZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKENvZGVCbG9jayogY29k
ZUJsb2NrLCBWZWN0b3I8dW5zaWduZWQsIDMyPiYgb3V0KQogewotICAgIEludGVycHJldGVyKiBp
bnRlcnByZXRlciA9IGNvZGVCbG9jay0+dm0oKS0+aW50ZXJwcmV0ZXI7Ci0gICAgSW5zdHJ1Y3Rp
b24qIGluc3RydWN0aW9uc0JlZ2luID0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigp
OwotICAgIGdldEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoY29kZUJsb2NrLCBpbnRlcnBy
ZXRlciwgaW5zdHJ1Y3Rpb25zQmVnaW4sIGJ5dGVjb2RlT2Zmc2V0LCBvdXQpOworICAgIGNvbXB1
dGVQcmVjaXNlSnVtcFRhcmdldHNJbnRlcm5hbDxDb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzTW9k
ZTo6Rm9sbG93Q29kZUJsb2NrQ2xhaW0+KGNvZGVCbG9jaywgY29kZUJsb2NrLT5pbnN0cnVjdGlv
bnMoKS5iZWdpbigpLCBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLnNpemUoKSwgb3V0KTsKK30K
Kwordm9pZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKENvZGVCbG9jayogY29kZUJsb2NrLCBJ
bnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQs
IFZlY3Rvcjx1bnNpZ25lZCwgMzI+JiBvdXQpCit7CisgICAgY29tcHV0ZVByZWNpc2VKdW1wVGFy
Z2V0c0ludGVybmFsPENvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHNNb2RlOjpGb2xsb3dDb2RlQmxv
Y2tDbGFpbT4oY29kZUJsb2NrLCBpbnN0cnVjdGlvbnNCZWdpbiwgaW5zdHJ1Y3Rpb25Db3VudCwg
b3V0KTsKK30KKwordm9pZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKFVubGlua2VkQ29kZUJs
b2NrKiBjb2RlQmxvY2ssIFVubGlua2VkSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1
bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50LCBWZWN0b3I8dW5zaWduZWQsIDMyPiYgb3V0KQorewor
ICAgIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHNJbnRlcm5hbDxDb21wdXRlUHJlY2lzZUp1bXBU
YXJnZXRzTW9kZTo6Rm9sbG93Q29kZUJsb2NrQ2xhaW0+KGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb25z
QmVnaW4sIGluc3RydWN0aW9uQ291bnQsIG91dCk7Cit9CisKK3ZvaWQgcmVjb21wdXRlUHJlY2lz
ZUp1bXBUYXJnZXRzKFVubGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFVubGlua2VkSW5zdHJ1
Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50LCBWZWN0
b3I8dW5zaWduZWQ+JiBvdXQpCit7CisgICAgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0c0ludGVy
bmFsPENvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHNNb2RlOjpGb3JjZUNvbXB1dGU+KGNvZGVCbG9j
aywgaW5zdHJ1Y3Rpb25zQmVnaW4sIGluc3RydWN0aW9uQ291bnQsIG91dCk7Cit9CisKK3ZvaWQg
ZmluZEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIElu
c3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIFZl
Y3Rvcjx1bnNpZ25lZCwgMT4mIG91dCkKK3sKKyAgICBnZXRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2Rl
T2Zmc2V0KGNvZGVCbG9jaywgY29kZUJsb2NrLT52bSgpLT5pbnRlcnByZXRlciwgaW5zdHJ1Y3Rp
b25zQmVnaW4sIGJ5dGVjb2RlT2Zmc2V0LCBvdXQpOworfQorCit2b2lkIGZpbmRKdW1wVGFyZ2V0
c0ZvckJ5dGVjb2RlT2Zmc2V0KFVubGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFVubGlua2Vk
SW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwg
VmVjdG9yPHVuc2lnbmVkLCAxPiYgb3V0KQoreworICAgIGdldEp1bXBUYXJnZXRzRm9yQnl0ZWNv
ZGVPZmZzZXQoY29kZUJsb2NrLCBjb2RlQmxvY2stPnZtKCktPmludGVycHJldGVyLCBpbnN0cnVj
dGlvbnNCZWdpbiwgYnl0ZWNvZGVPZmZzZXQsIG91dCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpT
QwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1w
VGFyZ2V0cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFy
Z2V0cy5oCmluZGV4IDg1MjQxM2Q3N2I3OTg5ODRiMjdjZWYwZWQ2MmJjOTRjNjg5ZTIxMmMuLmJj
YzkzNDZjZDVkNzAyMDQ2NWRlZjA5YTViMjU5Y2Y0ODcyZDliOTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmgKQEAgLTIzLDE5
ICsyMywyMyBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAotI2lmbmRlZiBQcmVjaXNlSnVtcFRh
cmdldHNfaAotI2RlZmluZSBQcmVjaXNlSnVtcFRhcmdldHNfaAorI3ByYWdtYSBvbmNlCiAKICNp
bmNsdWRlICJDb2RlQmxvY2suaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKK2NsYXNzIFVubGlua2Vk
Q29kZUJsb2NrOworc3RydWN0IFVubGlua2VkSW5zdHJ1Y3Rpb247CisKIC8vIFJldHVybiBhIHNv
cnRlZCBsaXN0IG9mIGJ5dGVjb2RlIGluZGV4IHRoYXQgYXJlIHRoZSBkZXN0aW5hdGlvbiBvZiBh
IGp1bXAuCiB2b2lkIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMoQ29kZUJsb2NrKiwgVmVjdG9y
PHVuc2lnbmVkLCAzMj4mIG91dCk7Cit2b2lkIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMoQ29k
ZUJsb2NrKiwgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBpbnN0cnVj
dGlvbkNvdW50LCBWZWN0b3I8dW5zaWduZWQsIDMyPiYgb3V0KTsKK3ZvaWQgY29tcHV0ZVByZWNp
c2VKdW1wVGFyZ2V0cyhVbmxpbmtlZENvZGVCbG9jayosIFVubGlua2VkSW5zdHJ1Y3Rpb24qIGlu
c3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50LCBWZWN0b3I8dW5zaWdu
ZWQsIDMyPiYgb3V0KTsKIAotdm9pZCBmaW5kSnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChD
b2RlQmxvY2sqLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgVmVjdG9yPHVuc2lnbmVkLCAxPiYg
b3V0KTsKLQotfSAvLyBuYW1lc3BhY2UgSlNDCit2b2lkIHJlY29tcHV0ZVByZWNpc2VKdW1wVGFy
Z2V0cyhVbmxpbmtlZENvZGVCbG9jayosIFVubGlua2VkSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9u
c0JlZ2luLCB1bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50LCBWZWN0b3I8dW5zaWduZWQ+JiBvdXQp
OwogCi0jZW5kaWYgLy8gUHJlY2lzZUp1bXBUYXJnZXRzX2gKK3ZvaWQgZmluZEp1bXBUYXJnZXRz
Rm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiwgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0Jl
Z2luLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgVmVjdG9yPHVuc2lnbmVkLCAxPiYgb3V0KTsK
K3ZvaWQgZmluZEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoVW5saW5rZWRDb2RlQmxvY2sq
LCBVbmxpbmtlZEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgYnl0ZWNv
ZGVPZmZzZXQsIFZlY3Rvcjx1bnNpZ25lZCwgMT4mIG91dCk7CiAKK30gLy8gbmFtZXNwYWNlIEpT
QwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1w
VGFyZ2V0c0lubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVjaXNl
SnVtcFRhcmdldHNJbmxpbmVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTlmZGNkY2ViYjcyZjQ2MmYwODQ4NWY4
ZGRkOGMxZjMyZmEwZGU1NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHNJbmxpbmVzLmgKQEAgLTAsMCArMSw4MiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSAiSW50ZXJwcmV0ZXJJbmxpbmVzLmgiCisjaW5jbHVkZSAiT3Bjb2RlLmgi
CisjaW5jbHVkZSAiUHJlY2lzZUp1bXBUYXJnZXRzLmgiCisKK25hbWVzcGFjZSBKU0MgeworCit0
ZW1wbGF0ZTx0eXBlbmFtZSBCbG9jaywgdHlwZW5hbWUgSW5zdHJ1Y3Rpb24sIHR5cGVuYW1lIEZ1
bmN0aW9uPgoraW5saW5lIHZvaWQgZXh0cmFjdFN0b3JlZEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVP
ZmZzZXQoQmxvY2sqIGNvZGVCbG9jaywgSW50ZXJwcmV0ZXIqIGludGVycHJldGVyLCBJbnN0cnVj
dGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBGdW5jdGlv
biBmdW5jdGlvbikKK3sKKyAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGludGVycHJldGVyLT5nZXRP
cGNvZGVJRChpbnN0cnVjdGlvbnNCZWdpbltieXRlY29kZU9mZnNldF0pOworICAgIEluc3RydWN0
aW9uKiBjdXJyZW50ID0gaW5zdHJ1Y3Rpb25zQmVnaW4gKyBieXRlY29kZU9mZnNldDsKKyAgICBz
d2l0Y2ggKG9wY29kZUlEKSB7CisgICAgY2FzZSBvcF9qbXA6CisgICAgICAgIGZ1bmN0aW9uKGN1
cnJlbnRbMV0udS5vcGVyYW5kKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBvcF9qdHJ1ZToK
KyAgICBjYXNlIG9wX2pmYWxzZToKKyAgICBjYXNlIG9wX2plcV9udWxsOgorICAgIGNhc2Ugb3Bf
am5lcV9udWxsOgorICAgICAgICBmdW5jdGlvbihjdXJyZW50WzJdLnUub3BlcmFuZCk7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2Ugb3Bfam5lcV9wdHI6CisgICAgY2FzZSBvcF9qbGVzczoKKyAg
ICBjYXNlIG9wX2psZXNzZXE6CisgICAgY2FzZSBvcF9qZ3JlYXRlcjoKKyAgICBjYXNlIG9wX2pn
cmVhdGVyZXE6CisgICAgY2FzZSBvcF9qbmxlc3M6CisgICAgY2FzZSBvcF9qbmxlc3NlcToKKyAg
ICBjYXNlIG9wX2puZ3JlYXRlcjoKKyAgICBjYXNlIG9wX2puZ3JlYXRlcmVxOgorICAgICAgICBm
dW5jdGlvbihjdXJyZW50WzNdLnUub3BlcmFuZCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
b3Bfc3dpdGNoX2ltbToKKyAgICBjYXNlIG9wX3N3aXRjaF9jaGFyOiB7CisgICAgICAgIGF1dG8m
IHRhYmxlID0gY29kZUJsb2NrLT5zd2l0Y2hKdW1wVGFibGUoY3VycmVudFsxXS51Lm9wZXJhbmQp
OworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSB0YWJsZS5icmFuY2hPZmZzZXRzLnNpemUoKTsg
aS0tOykKKyAgICAgICAgICAgIGZ1bmN0aW9uKHRhYmxlLmJyYW5jaE9mZnNldHNbaV0pOworICAg
ICAgICBmdW5jdGlvbihjdXJyZW50WzJdLnUub3BlcmFuZCk7CisgICAgICAgIGJyZWFrOworICAg
IH0KKyAgICBjYXNlIG9wX3N3aXRjaF9zdHJpbmc6IHsKKyAgICAgICAgYXV0byYgdGFibGUgPSBj
b2RlQmxvY2stPnN0cmluZ1N3aXRjaEp1bXBUYWJsZShjdXJyZW50WzFdLnUub3BlcmFuZCk7Cisg
ICAgICAgIGF1dG8gaXRlciA9IHRhYmxlLm9mZnNldFRhYmxlLmJlZ2luKCk7CisgICAgICAgIGF1
dG8gZW5kID0gdGFibGUub2Zmc2V0VGFibGUuZW5kKCk7CisgICAgICAgIGZvciAoOyBpdGVyICE9
IGVuZDsgKytpdGVyKQorICAgICAgICAgICAgZnVuY3Rpb24oaXRlci0+dmFsdWUuYnJhbmNoT2Zm
c2V0KTsKKyAgICAgICAgZnVuY3Rpb24oY3VycmVudFsyXS51Lm9wZXJhbmQpOworICAgICAgICBi
cmVhazsKKyAgICB9CisgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCit9
IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCmluZGV4IDAwNWRmZjhiZmMyYzUwNDhjNTAzY2U2MDI5
YmJkMjM4MzA2YTE5NTQuLmE2ZTBlODJiZTMzNjc4OTBlZTIwMjEwMDNjOTc0MzZkNjg1ZmJiNjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVC
bG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29k
ZUJsb2NrLmNwcApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIlVubGlua2VkQ29kZUJsb2Nr
LmgiCiAKICNpbmNsdWRlICJCeXRlY29kZUdlbmVyYXRvci5oIgorI2luY2x1ZGUgIkJ5dGVjb2Rl
UmV3cml0ZXIuaCIKICNpbmNsdWRlICJDbGFzc0luZm8uaCIKICNpbmNsdWRlICJDb2RlQ2FjaGUu
aCIKICNpbmNsdWRlICJFeGVjdXRhYmxlLmgiCkBAIC0zNiw2ICszNyw3IEBACiAjaW5jbHVkZSAi
SlNTdHJpbmcuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiUGFyc2VyLmgi
CisjaW5jbHVkZSAiUHJlY2lzZUp1bXBUYXJnZXRzSW5saW5lcy5oIgogI2luY2x1ZGUgIlNvdXJj
ZVByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlLmgiCiAjaW5jbHVkZSAiU3ltYm9sVGFi
bGUuaCIKQEAgLTM2Nyw1ICszNjksNjcgQEAgY29uc3QgVW5saW5rZWRJbnN0cnVjdGlvblN0cmVh
bSYgVW5saW5rZWRDb2RlQmxvY2s6Omluc3RydWN0aW9ucygpIGNvbnN0CiAgICAgcmV0dXJuICpt
X3VubGlua2VkSW5zdHJ1Y3Rpb25zOwogfQogCitVbmxpbmtlZEhhbmRsZXJJbmZvKiBVbmxpbmtl
ZENvZGVCbG9jazo6aGFuZGxlckZvckJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zm
c2V0LCBSZXF1aXJlZEhhbmRsZXIgcmVxdWlyZWRIYW5kbGVyKQoreworICAgIHJldHVybiBoYW5k
bGVyRm9ySW5kZXgoYnl0ZWNvZGVPZmZzZXQsIHJlcXVpcmVkSGFuZGxlcik7Cit9CisKK1VubGlu
a2VkSGFuZGxlckluZm8qIFVubGlua2VkQ29kZUJsb2NrOjpoYW5kbGVyRm9ySW5kZXgodW5zaWdu
ZWQgaW5kZXgsIFJlcXVpcmVkSGFuZGxlciByZXF1aXJlZEhhbmRsZXIpCit7CisgICAgaWYgKCFt
X3JhcmVEYXRhKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gVW5saW5rZWRI
YW5kbGVySW5mbzo6aGFuZGxlckZvckluZGV4KG1fcmFyZURhdGEtPm1fZXhjZXB0aW9uSGFuZGxl
cnMsIGluZGV4LCByZXF1aXJlZEhhbmRsZXIpOworfQorCit2b2lkIFVubGlua2VkQ29kZUJsb2Nr
OjphcHBseU1vZGlmaWNhdGlvbihCeXRlY29kZVJld3JpdGVyJiByZXdyaXRlcikKK3sKKyAgICAv
LyBCZWZvcmUgYXBwbHlpbmcgdGhlIGNoYW5nZXMsIHdlIGFkanVzdCB0aGUganVtcHMgYmFzZWQg
b24gdGhlIG9yaWdpbmFsIGJ5dGVjb2RlIG9mZnNldCwgdGhlIG9mZnNldCB0byB0aGUganVtcCB0
YXJnZXQsIGFuZAorICAgIC8vIHRoZSBpbnNlcnRpb24gaW5mb3JtYXRpb24uCisKKyAgICBCeXRl
Y29kZUdyYXBoPFVubGlua2VkQ29kZUJsb2NrPiYgZ3JhcGggPSByZXdyaXRlci5ncmFwaCgpOwor
ICAgIFVubGlua2VkSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luID0gZ3JhcGguaW5zdHJ1
Y3Rpb25zKCkuYmVnaW4oKTsKKworICAgIGZvciAoaW50IGJ5dGVjb2RlT2Zmc2V0ID0gMCwgaW5z
dHJ1Y3Rpb25Db3VudCA9IGdyYXBoLmluc3RydWN0aW9ucygpLnNpemUoKTsgYnl0ZWNvZGVPZmZz
ZXQgPCBpbnN0cnVjdGlvbkNvdW50OykgeworICAgICAgICBVbmxpbmtlZEluc3RydWN0aW9uKiBj
dXJyZW50ID0gaW5zdHJ1Y3Rpb25zQmVnaW4gKyBieXRlY29kZU9mZnNldDsKKyAgICAgICAgT3Bj
b2RlSUQgb3Bjb2RlSUQgPSBjdXJyZW50WzBdLnUub3Bjb2RlOworICAgICAgICBleHRyYWN0U3Rv
cmVkSnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldCh0aGlzLCB2bSgpLT5pbnRlcnByZXRlciwg
aW5zdHJ1Y3Rpb25zQmVnaW4sIGJ5dGVjb2RlT2Zmc2V0LCBbJl0oaW50MzJfdCYgcmVsYXRpdmVP
ZmZzZXQpIHsKKyAgICAgICAgICAgIHJlbGF0aXZlT2Zmc2V0ID0gcmV3cml0ZXIuYWRqdXN0SnVt
cFRhcmdldChieXRlY29kZU9mZnNldCwgYnl0ZWNvZGVPZmZzZXQgKyByZWxhdGl2ZU9mZnNldCk7
CisgICAgICAgIH0pOworICAgICAgICBieXRlY29kZU9mZnNldCArPSBvcGNvZGVMZW5ndGgob3Bj
b2RlSUQpOworICAgIH0KKworICAgIC8vIFRoZW4sIGV4Y2VwdGlvbiBoYW5kbGVycyBzaG91bGQg
YmUgYWRqdXN0ZWQuCisgICAgaWYgKG1fcmFyZURhdGEpIHsKKyAgICAgICAgZm9yIChVbmxpbmtl
ZEhhbmRsZXJJbmZvJiBoYW5kbGVyIDogbV9yYXJlRGF0YS0+bV9leGNlcHRpb25IYW5kbGVycykg
eworICAgICAgICAgICAgaGFuZGxlci50YXJnZXQgPSByZXdyaXRlci5hZGp1c3RBYnNvbHV0ZU9m
ZnNldChoYW5kbGVyLnRhcmdldCk7CisgICAgICAgICAgICBoYW5kbGVyLnN0YXJ0ID0gcmV3cml0
ZXIuYWRqdXN0QWJzb2x1dGVPZmZzZXQoaGFuZGxlci5zdGFydCk7CisgICAgICAgICAgICBoYW5k
bGVyLmVuZCA9IHJld3JpdGVyLmFkanVzdEFic29sdXRlT2Zmc2V0KGhhbmRsZXIuZW5kKTsKKyAg
ICAgICAgfQorCisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9yYXJlRGF0YS0+bV9v
cFByb2ZpbGVDb250cm9sRmxvd0J5dGVjb2RlT2Zmc2V0cy5zaXplKCk7ICsraSkKKyAgICAgICAg
ICAgIG1fcmFyZURhdGEtPm1fb3BQcm9maWxlQ29udHJvbEZsb3dCeXRlY29kZU9mZnNldHNbaV0g
PSByZXdyaXRlci5hZGp1c3RBYnNvbHV0ZU9mZnNldChtX3JhcmVEYXRhLT5tX29wUHJvZmlsZUNv
bnRyb2xGbG93Qnl0ZWNvZGVPZmZzZXRzW2ldKTsKKworICAgICAgICBpZiAoIW1fcmFyZURhdGEt
Pm1fdHlwZVByb2ZpbGVySW5mb01hcC5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIEhhc2hNYXA8
dW5zaWduZWQsIFJhcmVEYXRhOjpUeXBlUHJvZmlsZXJFeHByZXNzaW9uUmFuZ2U+IGFkanVzdGVk
VHlwZVByb2ZpbGVySW5mb01hcDsKKyAgICAgICAgICAgIGZvciAoYXV0byYgZW50cnkgOiBtX3Jh
cmVEYXRhLT5tX3R5cGVQcm9maWxlckluZm9NYXApCisgICAgICAgICAgICAgICAgYWRqdXN0ZWRU
eXBlUHJvZmlsZXJJbmZvTWFwLnNldChyZXdyaXRlci5hZGp1c3RBYnNvbHV0ZU9mZnNldChlbnRy
eS5rZXkpLCBlbnRyeS52YWx1ZSk7CisgICAgICAgICAgICBtX3JhcmVEYXRhLT5tX3R5cGVQcm9m
aWxlckluZm9NYXAuc3dhcChhZGp1c3RlZFR5cGVQcm9maWxlckluZm9NYXApOworICAgICAgICB9
CisgICAgfQorCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3Byb3BlcnR5QWNjZXNzSW5z
dHJ1Y3Rpb25zLnNpemUoKTsgKytpKQorICAgICAgICBtX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rp
b25zW2ldID0gcmV3cml0ZXIuYWRqdXN0QWJzb2x1dGVPZmZzZXQobV9wcm9wZXJ0eUFjY2Vzc0lu
c3RydWN0aW9uc1tpXSk7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZXhwcmVzc2lv
bkluZm8uc2l6ZSgpOyArK2kpCisgICAgICAgIG1fZXhwcmVzc2lvbkluZm9baV0uaW5zdHJ1Y3Rp
b25PZmZzZXQgPSByZXdyaXRlci5hZGp1c3RBYnNvbHV0ZU9mZnNldChtX2V4cHJlc3Npb25JbmZv
W2ldLmluc3RydWN0aW9uT2Zmc2V0KTsKKworICAgIC8vIFRoZW4sIG1vZGlmeSB0aGUgdW5saW5r
ZWQgaW5zdHJ1Y3Rpb25zLgorICAgIHJld3JpdGVyLmFwcGx5TW9kaWZpY2F0aW9uKCk7CisKKyAg
ICAvLyBBbmQgcmVjb21wdXRlIHRoZSBqdW1wIHRhcmdldCBiYXNlZCBvbiB0aGUgbW9kaWZpZWQg
dW5saW5rZWQgaW5zdHJ1Y3Rpb25zLgorICAgIG1fanVtcFRhcmdldHMuY2xlYXIoKTsKKyAgICBy
ZWNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHModGhpcywgZ3JhcGguaW5zdHJ1Y3Rpb25zKCkuYmVn
aW4oKSwgZ3JhcGguaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpLCBtX2p1bXBUYXJnZXRzKTsKK30KKwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRD
b2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVC
bG9jay5oCmluZGV4IGI0ZDJjZjQ4ZTQ2MzhkMzczYjE2NzIwZjc2ZTNjZmY5N2RmMDE1MGQuLjcy
ZDE2OTYxMWFhOTM1MTc4YzQ4MTBlZWQyZDU5YTgzMThmZjYxYTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCkBAIC00NSw2ICs0
NSw4IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCitjbGFzcyBCeXRlY29kZVJld3JpdGVyOworY2xh
c3MgRGVidWdnZXI7CiBjbGFzcyBGdW5jdGlvbk1ldGFkYXRhTm9kZTsKIGNsYXNzIEZ1bmN0aW9u
RXhlY3V0YWJsZTsKIGNsYXNzIEpTU2NvcGU7CkBAIC02NSw3ICs2NywxMSBAQCB0eXBlZGVmIHVu
c2lnbmVkIFVubGlua2VkT2JqZWN0QWxsb2NhdGlvblByb2ZpbGU7CiB0eXBlZGVmIHVuc2lnbmVk
IFVubGlua2VkTExJbnRDYWxsTGlua0luZm87CiAKIHN0cnVjdCBVbmxpbmtlZFN0cmluZ0p1bXBU
YWJsZSB7Ci0gICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxTdHJpbmdJbXBsPiwgaW50MzJfdD4g
U3RyaW5nT2Zmc2V0VGFibGU7CisgICAgc3RydWN0IE9mZnNldExvY2F0aW9uIHsKKyAgICAgICAg
aW50MzJfdCBicmFuY2hPZmZzZXQ7CisgICAgfTsKKworICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQ
dHI8U3RyaW5nSW1wbD4sIE9mZnNldExvY2F0aW9uPiBTdHJpbmdPZmZzZXRUYWJsZTsKICAgICBT
dHJpbmdPZmZzZXRUYWJsZSBvZmZzZXRUYWJsZTsKIAogICAgIGlubGluZSBpbnQzMl90IG9mZnNl
dEZvclZhbHVlKFN0cmluZ0ltcGwqIHZhbHVlLCBpbnQzMl90IGRlZmF1bHRPZmZzZXQpCkBAIC03
NCw3ICs4MCw3IEBAIHN0cnVjdCBVbmxpbmtlZFN0cmluZ0p1bXBUYWJsZSB7CiAgICAgICAgIFN0
cmluZ09mZnNldFRhYmxlOjpjb25zdF9pdGVyYXRvciBsb2MgPSBvZmZzZXRUYWJsZS5maW5kKHZh
bHVlKTsKICAgICAgICAgaWYgKGxvYyA9PSBlbmQpCiAgICAgICAgICAgICByZXR1cm4gZGVmYXVs
dE9mZnNldDsKLSAgICAgICAgcmV0dXJuIGxvYy0+dmFsdWU7CisgICAgICAgIHJldHVybiBsb2Mt
PnZhbHVlLmJyYW5jaE9mZnNldDsKICAgICB9CiAKIH07CkBAIC0xMDIsNiArMTA4LDggQEAgc3Ry
dWN0IFVubGlua2VkSW5zdHJ1Y3Rpb24gewogICAgIH0gdTsKIH07CiAKK2NsYXNzIEJ5dGVjb2Rl
R2VuZXJhdG9yaWZpY2F0aW9uOworCiBjbGFzcyBVbmxpbmtlZENvZGVCbG9jayA6IHB1YmxpYyBK
U0NlbGwgewogcHVibGljOgogICAgIHR5cGVkZWYgSlNDZWxsIEJhc2U7CkBAIC0xMTEsNiArMTE5
LDkgQEAgY2xhc3MgVW5saW5rZWRDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKIAogICAgIGVu
dW0geyBDYWxsRnVuY3Rpb24sIEFwcGx5RnVuY3Rpb24gfTsKIAorICAgIHR5cGVkZWYgVW5saW5r
ZWRJbnN0cnVjdGlvbiBJbnN0cnVjdGlvbjsKKyAgICB0eXBlZGVmIFZlY3RvcjxVbmxpbmtlZElu
c3RydWN0aW9uLCAwLCBVbnNhZmVWZWN0b3JPdmVyZmxvdz4gVW5wYWNrZWRJbnN0cnVjdGlvbnM7
CisKICAgICBib29sIGlzQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2lzQ29uc3RydWN0
b3I7IH0KICAgICBib29sIGlzU3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNTdHJpY3RN
b2RlOyB9CiAgICAgYm9vbCB1c2VzRXZhbCgpIGNvbnN0IHsgcmV0dXJuIG1fdXNlc0V2YWw7IH0K
QEAgLTIwMCw2ICsyMTEsOSBAQCBjbGFzcyBVbmxpbmtlZENvZGVCbG9jayA6IHB1YmxpYyBKU0Nl
bGwgewogICAgIHVuc2lnbmVkIGp1bXBUYXJnZXQoaW50IGluZGV4KSBjb25zdCB7IHJldHVybiBt
X2p1bXBUYXJnZXRzW2luZGV4XTsgfQogICAgIHVuc2lnbmVkIGxhc3RKdW1wVGFyZ2V0KCkgY29u
c3QgeyByZXR1cm4gbV9qdW1wVGFyZ2V0cy5sYXN0KCk7IH0KIAorICAgIFVubGlua2VkSGFuZGxl
ckluZm8qIGhhbmRsZXJGb3JCeXRlY29kZU9mZnNldCh1bnNpZ25lZCBieXRlY29kZU9mZnNldCwg
UmVxdWlyZWRIYW5kbGVyID0gUmVxdWlyZWRIYW5kbGVyOjpBbnlIYW5kbGVyKTsKKyAgICBVbmxp
bmtlZEhhbmRsZXJJbmZvKiBoYW5kbGVyRm9ySW5kZXgodW5zaWduZWQsIFJlcXVpcmVkSGFuZGxl
ciA9IFJlcXVpcmVkSGFuZGxlcjo6QW55SGFuZGxlcik7CisKICAgICBib29sIGlzQnVpbHRpbkZ1
bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc0J1aWx0aW5GdW5jdGlvbjsgfQogCiAgICAgQ29u
c3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0
PENvbnN0cnVjdG9yS2luZD4obV9jb25zdHJ1Y3RvcktpbmQpOyB9CkBAIC0yMzAsNiArMjQ0LDgg
QEAgY2xhc3MgVW5saW5rZWRDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICB2b2lkIHNl
dEluc3RydWN0aW9ucyhzdGQ6OnVuaXF1ZV9wdHI8VW5saW5rZWRJbnN0cnVjdGlvblN0cmVhbT4p
OwogICAgIGNvbnN0IFVubGlua2VkSW5zdHJ1Y3Rpb25TdHJlYW0mIGluc3RydWN0aW9ucygpIGNv
bnN0OwogCisgICAgaW50IG51bUNhbGxlZUxvY2FscygpIGNvbnN0IHsgcmV0dXJuIG1fbnVtQ2Fs
bGVlTG9jYWxzOyB9CisKICAgICBpbnQgbV9udW1WYXJzOwogICAgIGludCBtX251bUNhcHR1cmVk
VmFyczsKICAgICBpbnQgbV9udW1DYWxsZWVMb2NhbHM7CkBAIC0zODEsNiArMzk3LDggQEAgY2xh
c3MgVW5saW5rZWRDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICB9CiAKIHByaXZhdGU6
CisgICAgZnJpZW5kIGNsYXNzIEJ5dGVjb2RlUmV3cml0ZXI7CisgICAgdm9pZCBhcHBseU1vZGlm
aWNhdGlvbihCeXRlY29kZVJld3JpdGVyJik7CiAKICAgICB2b2lkIGNyZWF0ZVJhcmVEYXRhSWZO
ZWNlc3NhcnkoKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9WaXJ0dWFsUmVnaXN0ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9W
aXJ0dWFsUmVnaXN0ZXIuaAppbmRleCBkM2RmNDA5NTdiNTE3NTY4ZTNhZWZiZTNhMWE2MDlmZDg3
OGJhYWMzLi5kYWY1MDlmNmM3ZDExNWU0NWJjYjEwN2M2N2QzZDM4ZDgwNGYyODk0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmlydHVhbFJlZ2lzdGVyLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZpcnR1YWxSZWdpc3Rlci5oCkBAIC0y
Niw4ICsyNiw4IEBACiAjaWZuZGVmIFZpcnR1YWxSZWdpc3Rlcl9oCiAjZGVmaW5lIFZpcnR1YWxS
ZWdpc3Rlcl9oCiAKKyNpbmNsdWRlICJCeXRlY29kZUNvbnZlbnRpb25zLmgiCiAjaW5jbHVkZSAi
Q2FsbEZyYW1lLmgiCi0KICNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KIAogbmFtZXNwYWNl
IEpTQyB7CkBAIC0xMDMsNyArMTAzLDcgQEAgY2xhc3MgVmlydHVhbFJlZ2lzdGVyIHsKIAogcHJp
dmF0ZToKICAgICBzdGF0aWMgY29uc3QgaW50IHNfaW52YWxpZFZpcnR1YWxSZWdpc3RlciA9IDB4
M2ZmZmZmZmY7Ci0gICAgc3RhdGljIGNvbnN0IGludCBzX2ZpcnN0Q29uc3RhbnRSZWdpc3Rlcklu
ZGV4ID0gMHg0MDAwMDAwMDsKKyAgICBzdGF0aWMgY29uc3QgaW50IHNfZmlyc3RDb25zdGFudFJl
Z2lzdGVySW5kZXggPSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleDsKIAogICAgIHN0YXRpYyBp
bnQgbG9jYWxUb09wZXJhbmQoaW50IGxvY2FsKSB7IHJldHVybiAtMSAtIGxvY2FsOyB9CiAgICAg
c3RhdGljIGludCBvcGVyYW5kVG9Mb2NhbChpbnQgb3BlcmFuZCkgeyByZXR1cm4gLTEgLSBvcGVy
YW5kOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IDMxMmQ4OWY3YWRjNzNmMDdkYzUxNzliNzVlNTc1
YzU1OTAyNjZkYjguLjUzM2VmMDg5OGI3N2RiZGIzNmU0YTI1M2QwNzRkZDJkNDcyMjAxOGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAKICNpbmNsdWRlICJBcml0aFByb2Zp
bGUuaCIKICNpbmNsdWRlICJCdWlsdGluRXhlY3V0YWJsZXMuaCIKKyNpbmNsdWRlICJCeXRlY29k
ZUdlbmVyYXRvcmlmaWNhdGlvbi5oIgogI2luY2x1ZGUgIkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNp
cy5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgpA
QCAtMTU1LDYgKzE1NiwxMCBAQCBQYXJzZXJFcnJvciBCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJh
dGUoKQogICAgICAgICBtX2NvZGVCbG9jay0+YWRkRXhjZXB0aW9uSGFuZGxlcihpbmZvKTsKICAg
ICB9CiAgICAgCisKKyAgICBpZiAobV9jb2RlQmxvY2stPnBhcnNlTW9kZSgpID09IFNvdXJjZVBh
cnNlTW9kZTo6R2VuZXJhdG9yQm9keU1vZGUpCisgICAgICAgIHBlcmZvcm1HZW5lcmF0b3JpZmlj
YXRpb24obV9jb2RlQmxvY2suZ2V0KCksIG1faW5zdHJ1Y3Rpb25zLCBtX2dlbmVyYXRvckZyYW1l
U3ltYm9sVGFibGUuZ2V0KCksIG1fZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZUluZGV4KTsKKwog
ICAgIG1fY29kZUJsb2NrLT5zZXRJbnN0cnVjdGlvbnMoc3RkOjptYWtlX3VuaXF1ZTxVbmxpbmtl
ZEluc3RydWN0aW9uU3RyZWFtPihtX2luc3RydWN0aW9ucykpOwogCiAgICAgbV9jb2RlQmxvY2st
PnNocmlua1RvRml0KCk7CkBAIC0yNjIsMTAgKzI2NywxNCBAQCBCeXRlY29kZUdlbmVyYXRvcjo6
Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5s
aW5rZQogICAgIGJvb2wgc2hvdWxkQ2FwdHVyZUFsbE9mVGhlVGhpbmdzID0gbV9zaG91bGRFbWl0
RGVidWdIb29rcyB8fCBjb2RlQmxvY2stPnVzZXNFdmFsKCk7CiAgICAgYm9vbCBuZWVkc0FyZ3Vt
ZW50cyA9IChmdW5jdGlvbk5vZGUtPnVzZXNBcmd1bWVudHMoKSB8fCBjb2RlQmxvY2stPnVzZXNF
dmFsKCkgfHwgKGZ1bmN0aW9uTm9kZS0+dXNlc0Fycm93RnVuY3Rpb24oKSAmJiAhY29kZUJsb2Nr
LT5pc0Fycm93RnVuY3Rpb24oKSAmJiBpc0FyZ3VtZW50c1VzZWRJbklubmVyQXJyb3dGdW5jdGlv
bigpKSk7CiAKLSAgICAvLyBHZW5lcmF0b3IgbmV2ZXIgcHJvdmlkZXMgImFyZ3VtZW50cyIuICJh
cmd1bWVudHMiIHJlZmVyZW5jZSB3aWxsIGJlIHJlc29sdmVkIGluIGFuIHVwcGVyIGdlbmVyYXRv
ciBmdW5jdGlvbiBzY29wZS4KLSAgICBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6
R2VuZXJhdG9yQm9keU1vZGUpCisgICAgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6
OkdlbmVyYXRvckJvZHlNb2RlKSB7CisgICAgICAgIC8vIEdlbmVyYXRvciBuZXZlciBwcm92aWRl
cyAiYXJndW1lbnRzIi4gImFyZ3VtZW50cyIgcmVmZXJlbmNlIHdpbGwgYmUgcmVzb2x2ZWQgaW4g
YW4gdXBwZXIgZ2VuZXJhdG9yIGZ1bmN0aW9uIHNjb3BlLgogICAgICAgICBuZWVkc0FyZ3VtZW50
cyA9IGZhbHNlOwogCisgICAgICAgIC8vIEdlbmVyYXRvciB1c2VzIHRoZSB2YXIgc2NvcGUgdG8g
c2F2ZSBhbmQgcmVzdW1lIGl0cyB2YXJpYWJsZXMuIFNvIHRoZSBsZXhpY2FsIHNjb3BlIGlzIGFs
d2F5cyBpbnN0YW50aWF0ZWQuCisgICAgICAgIHNob3VsZENhcHR1cmVTb21lT2ZUaGVUaGluZ3Mg
PSB0cnVlOworICAgIH0KKwogICAgIGlmIChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpH
ZW5lcmF0b3JXcmFwcGVyRnVuY3Rpb25Nb2RlICYmIG5lZWRzQXJndW1lbnRzKSB7CiAgICAgICAg
IC8vIEdlbmVyYXRvciBkb2VzIG5vdCBwcm92aWRlICJhcmd1bWVudHMiLiBJbnN0ZWFkLCB3cmFw
cGluZyBHZW5lcmF0b3JGdW5jdGlvbiBwcm92aWRlcyAiYXJndW1lbnRzIi4KICAgICAgICAgLy8g
VGhpcyBpcyBiZWNhdXNlIGFyZ3VtZW50cyBvZiBhIGdlbmVyYXRvciBzaG91bGQgYmUgZXZhbHVh
dGVkIGJlZm9yZSBzdGFydGluZyBpdC4KQEAgLTI3NCw3ICsyODMsNyBAQCBCeXRlY29kZUdlbmVy
YXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9k
ZSwgVW5saW5rZQogICAgICAgICAvLyAgICBmdW5jdGlvbiAqZ2VuKGEsIGIgPSBoZWxsbygpKQog
ICAgICAgICAvLyAgICB7CiAgICAgICAgIC8vICAgICAgICByZXR1cm4gewotICAgICAgICAvLyAg
ICAgICAgICAgIEBnZW5lcmF0b3JOZXh0OiBmdW5jdGlvbiAoQGdlbmVyYXRvciwgQGdlbmVyYXRv
clN0YXRlLCBAZ2VuZXJhdG9yVmFsdWUsIEBnZW5lcmF0b3JSZXN1bWVNb2RlKQorICAgICAgICAv
LyAgICAgICAgICAgIEBnZW5lcmF0b3JOZXh0OiBmdW5jdGlvbiAoQGdlbmVyYXRvciwgQGdlbmVy
YXRvclN0YXRlLCBAZ2VuZXJhdG9yVmFsdWUsIEBnZW5lcmF0b3JSZXN1bWVNb2RlLCBAZ2VuZXJh
dG9yRnJhbWUpCiAgICAgICAgIC8vICAgICAgICAgICAgewogICAgICAgICAvLyAgICAgICAgICAg
ICAgICBhcmd1bWVudHM7ICAvLyBUaGlzIGBhcmd1bWVudHNgIHNob3VsZCByZWZlcmVuY2UgdG8g
dGhlIGdlbidzIGFyZ3VtZW50cy4KICAgICAgICAgLy8gICAgICAgICAgICAgICAgLi4uCkBAIC0z
MDMsMjggKzMxMiwxNyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0m
IHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAgICAgICByZXR1cm4g
Y2FwdHVyZXModWlkKSA/IFZhcktpbmQ6OlNjb3BlIDogVmFyS2luZDo6U3RhY2s7CiAgICAgfTsK
IAotICAgIGVtaXRFbnRlcigpOwotCi0gICAgYWxsb2NhdGVBbmRFbWl0U2NvcGUoKTsKLQogICAg
IG1fY2FsbGVlUmVnaXN0ZXIuc2V0SW5kZXgoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlKTsKIAogICAg
IGluaXRpYWxpemVQYXJhbWV0ZXJzKHBhcmFtZXRlcnMpOwogICAgIEFTU0VSVCghKGlzU2ltcGxl
UGFyYW1ldGVyTGlzdCAmJiBtX3Jlc3RQYXJhbWV0ZXIpKTsKIAotICAgIC8vIEJlZm9yZSBlbWl0
dGluZyBhIHNjb3BlIGNyZWF0aW9uLCBlbWl0IGEgZ2VuZXJhdG9yIHByb2xvZ3VlIHRoYXQgY29u
dGFpbnMganVtcCBiYXNlZCBvbiBhIGdlbmVyYXRvcidzIHN0YXRlLgotICAgIGlmIChwYXJzZU1v
ZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JCb2R5TW9kZSkgewotICAgICAgICBtX2dl
bmVyYXRvclJlZ2lzdGVyID0gJm1fcGFyYW1ldGVyc1sxXTsKLQotICAgICAgICAvLyBKdW1wIHdp
dGggc3dpdGNoX2ltbSBiYXNlZCBvbiBAZ2VuZXJhdG9yU3RhdGUuIFdlIGRvbid0IHRha2UgdGhl
IGNvcm91dGluZSBzdHlsZWQgZ2VuZXJhdG9yIGltcGxlbWVudGF0aW9uLgotICAgICAgICAvLyBX
aGVuIGNhbGxpbmcgYG5leHQoKWAsIHdlIHdvdWxkIGxpa2UgdG8gZW50ZXIgdGhlIHNhbWUgcHJv
bG9ndWUgaW5zdGVhZCBvZiBqdW1waW5nIGJhc2VkIG9uIHRoZSBzYXZlZCBpbnN0cnVjdGlvbiBw
b2ludGVyLgotICAgICAgICAvLyBJdCdzIHN1aXRhbGUgZm9yIGlubGluaW5nLCBiZWNhdXNlIGl0
IGp1c3QgaW5saW5lcyBvbmUgYG5leHRgIGZ1bmN0aW9uIGltcGxlbWVudGF0aW9uLgorICAgIGVt
aXRFbnRlcigpOwogCi0gICAgICAgIGJlZ2luR2VuZXJhdG9yKGdlbmVyYXRvclN0YXRlUmVnaXN0
ZXIoKSk7CisgICAgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckJv
ZHlNb2RlKQorICAgICAgICBtX2dlbmVyYXRvclJlZ2lzdGVyID0gJm1fcGFyYW1ldGVyc1sxXTsK
IAotICAgICAgICAvLyBJbml0aWFsIHN0YXRlLgotICAgICAgICBlbWl0R2VuZXJhdG9yU3RhdGVM
YWJlbCgpOwotICAgIH0KKyAgICBhbGxvY2F0ZUFuZEVtaXRTY29wZSgpOwogCiAgICAgaWYgKGZ1
bmN0aW9uTmFtZUlzSW5TY29wZShmdW5jdGlvbk5vZGUtPmlkZW50KCksIGZ1bmN0aW9uTm9kZS0+
ZnVuY3Rpb25Nb2RlKCkpKSB7CiAgICAgICAgIEFTU0VSVChwYXJzZU1vZGUgIT0gU291cmNlUGFy
c2VNb2RlOjpHZW5lcmF0b3JCb2R5TW9kZSk7CkBAIC02NDEsNiArNjM5LDE2IEBAIEJ5dGVjb2Rl
R2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rp
b25Ob2RlLCBVbmxpbmtlCiAgICAgICAgICAgICBlbWl0TG9hZE5ld1RhcmdldEZyb21BcnJvd0Z1
bmN0aW9uTGV4aWNhbEVudmlyb25tZW50KCk7CiAgICAgfQogICAgIAorICAgIC8vIFNldCB1cCB0
aGUgbGV4aWNhbCBlbnZpcm9ubWVudCBzY29wZSBhcyB0aGUgZ2VuZXJhdG9yIGZyYW1lLiBXZSBz
dG9yZSB0aGUgc2F2ZWQgYW5kIHJlc3VtZWQgZ2VuZXJhdG9yIHJlZ2lzdGVycyBpbnRvIHRoaXMg
c2NvcGUgd2l0aCB0aGUgc3ltYm9sIGtleXMuCisgICAgLy8gU2luY2UgdGhleSBhcmUgc3ltYm9s
IGtleWVkLCB0aGVzZSB2YXJpYWJsZXMgY2Fubm90IGJlIHJlYWNoZWQgZnJvbSB0aGUgdXN1YWwg
Y29kZS4KKyAgICBpZiAoU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JCb2R5TW9kZSA9PSBwYXJz
ZU1vZGUpIHsKKyAgICAgICAgQVNTRVJUKG1fbGV4aWNhbEVudmlyb25tZW50UmVnaXN0ZXIpOwor
ICAgICAgICBtX2dlbmVyYXRvckZyYW1lU3ltYm9sVGFibGUuc2V0KCptX3ZtLCBmdW5jdGlvblN5
bWJvbFRhYmxlKTsKKyAgICAgICAgbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlSW5kZXggPSBz
eW1ib2xUYWJsZUNvbnN0YW50SW5kZXg7CisgICAgICAgIGVtaXRNb3ZlKGdlbmVyYXRvckZyYW1l
UmVnaXN0ZXIoKSwgbV9sZXhpY2FsRW52aXJvbm1lbnRSZWdpc3Rlcik7CisgICAgICAgIGVtaXRQ
dXRCeUlkKGdlbmVyYXRvclJlZ2lzdGVyKCksIHByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMo
KS5nZW5lcmF0b3JGcmFtZVByaXZhdGVOYW1lKCksIGdlbmVyYXRvckZyYW1lUmVnaXN0ZXIoKSk7
CisgICAgfQorCiAgICAgYm9vbCBzaG91bGRJbml0aWFsaXplQmxvY2tTY29wZWRGdW5jdGlvbnMg
PSBmYWxzZTsgLy8gV2UgZ2VuZXJhdGUgdG9wLWxldmVsIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucyBp
biA6OmdlbmVyYXRlKCkuCiAgICAgcHVzaExleGljYWxTY29wZShtX3Njb3BlTm9kZSwgVERaQ2hl
Y2tPcHRpbWl6YXRpb246Ok9wdGltaXplLCBOZXN0ZWRTY29wZVR5cGU6OklzTm90TmVzdGVkLCBu
dWxscHRyLCBzaG91bGRJbml0aWFsaXplQmxvY2tTY29wZWRGdW5jdGlvbnMpOwogfQpAQCAtMzY3
Miw4ICszNjgwLDcgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENvbXBsZXhQb3BTY29w
ZXMoUmVnaXN0ZXJJRCogc2NvcGUsIENvbnRyb2xGbG93Q29udGUKICAgICAgICAgICAgIGlmIChm
bGlwVHJpZXMpIHsKICAgICAgICAgICAgICAgICB3aGlsZSAobV90cnlDb250ZXh0U3RhY2suc2l6
ZSgpICE9IGZpbmFsbHlDb250ZXh0LnRyeUNvbnRleHRTdGFja1NpemUpIHsKICAgICAgICAgICAg
ICAgICAgICAgQVNTRVJUKG1fdHJ5Q29udGV4dFN0YWNrLnNpemUoKSA+IGZpbmFsbHlDb250ZXh0
LnRyeUNvbnRleHRTdGFja1NpemUpOwotICAgICAgICAgICAgICAgICAgICBUcnlDb250ZXh0IGNv
bnRleHQgPSBtX3RyeUNvbnRleHRTdGFjay5sYXN0KCk7Ci0gICAgICAgICAgICAgICAgICAgIG1f
dHJ5Q29udGV4dFN0YWNrLnJlbW92ZUxhc3QoKTsKKyAgICAgICAgICAgICAgICAgICAgVHJ5Q29u
dGV4dCBjb250ZXh0ID0gbV90cnlDb250ZXh0U3RhY2sudGFrZUxhc3QoKTsKICAgICAgICAgICAg
ICAgICAgICAgVHJ5UmFuZ2UgcmFuZ2U7CiAgICAgICAgICAgICAgICAgICAgIHJhbmdlLnN0YXJ0
ID0gY29udGV4dC5zdGFydDsKICAgICAgICAgICAgICAgICAgICAgcmFuZ2UuZW5kID0gYmVmb3Jl
RmluYWxseTsKQEAgLTM5NTcsNyArMzk2NCw3IEBAIHN0YXRpYyB2b2lkIHByZXBhcmVKdW1wVGFi
bGVGb3JTdHJpbmdTd2l0Y2goVW5saW5rZWRTdHJpbmdKdW1wVGFibGUmIGp1bXBUYWJsZSwKICAg
ICAgICAgCiAgICAgICAgIEFTU0VSVChub2Rlc1tpXS0+aXNTdHJpbmcoKSk7CiAgICAgICAgIFN0
cmluZ0ltcGwqIGNsYXVzZSA9IHN0YXRpY19jYXN0PFN0cmluZ05vZGUqPihub2Rlc1tpXSktPnZh
bHVlKCkuaW1wbCgpOwotICAgICAgICBqdW1wVGFibGUub2Zmc2V0VGFibGUuYWRkKGNsYXVzZSwg
bGFiZWxzW2ldLT5iaW5kKHN3aXRjaEFkZHJlc3MsIHN3aXRjaEFkZHJlc3MgKyAzKSk7CisgICAg
ICAgIGp1bXBUYWJsZS5vZmZzZXRUYWJsZS5hZGQoY2xhdXNlLCBVbmxpbmtlZFN0cmluZ0p1bXBU
YWJsZTo6T2Zmc2V0TG9jYXRpb24geyBsYWJlbHNbaV0tPmJpbmQoc3dpdGNoQWRkcmVzcywgc3dp
dGNoQWRkcmVzcyArIDMpIH0pOwogICAgIH0KIH0KIApAQCAtNDQ1OSwzMSArNDQ2NiwzMyBAQCB2
b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVxdWlyZU9iamVjdENvZXJjaWJsZShSZWdpc3Rl
cklEKiB2YWx1ZSwgY29uc3QgU3RyaQogdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFlpZWxk
UG9pbnQoUmVnaXN0ZXJJRCogYXJndW1lbnQpCiB7CiAgICAgUmVmUHRyPExhYmVsPiBtZXJnZVBv
aW50ID0gbmV3TGFiZWwoKTsKLSAgICBzaXplX3QgeWllbGRQb2ludEluZGV4ID0gbV9nZW5lcmF0
b3JSZXN1bWVMYWJlbHMuc2l6ZSgpOwotICAgIGVtaXRHZW5lcmF0b3JTdGF0ZUNoYW5nZSh5aWVs
ZFBvaW50SW5kZXgpOwotICAgIC8vIEZpcnN0IHlpZWxkIHBvaW50IGlzIHVzZWQgZm9yIGluaXRp
YWwgc2VxdWVuY2UuCi0gICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0geWllbGRQ
b2ludEluZGV4IC0gMTsKLSAgICBlbWl0U2F2ZShtZXJnZVBvaW50LmdldCgpLCBsaXZlQ2FsbGVl
TG9jYWxzSW5kZXgpOwotICAgIGVtaXRSZXR1cm4oYXJndW1lbnQpOwotICAgIGVtaXRSZXN1bWUo
bWVyZ2VQb2ludC5nZXQoKSwgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4KTsKLX0KKyAgICB1bnNpZ25l
ZCB5aWVsZFBvaW50SW5kZXggPSBtX3lpZWxkUG9pbnRzKys7CisgICAgZW1pdEdlbmVyYXRvclN0
YXRlQ2hhbmdlKHlpZWxkUG9pbnRJbmRleCArIDEpOworCisgICAgLy8gU3BsaXQgdGhlIHRyeSBy
YW5nZSBoZXJlLgorICAgIFJlZlB0cjxMYWJlbD4gc2F2ZVBvaW50ID0gZW1pdExhYmVsKG5ld0xh
YmVsKCkuZ2V0KCkpOworICAgIGZvciAodW5zaWduZWQgaSA9IG1fdHJ5Q29udGV4dFN0YWNrLnNp
emUoKTsgaS0tOykgeworICAgICAgICBUcnlDb250ZXh0JiBjb250ZXh0ID0gbV90cnlDb250ZXh0
U3RhY2tbaV07CisgICAgICAgIFRyeVJhbmdlIHJhbmdlOworICAgICAgICByYW5nZS5zdGFydCA9
IGNvbnRleHQuc3RhcnQ7CisgICAgICAgIHJhbmdlLmVuZCA9IHNhdmVQb2ludDsKKyAgICAgICAg
cmFuZ2UudHJ5RGF0YSA9IGNvbnRleHQudHJ5RGF0YTsKKyAgICAgICAgbV90cnlSYW5nZXMuYXBw
ZW5kKHJhbmdlKTsKKworICAgICAgICAvLyBUcnkgcmFuZ2Ugd2lsbCBiZSByZXN0YXJlZCBhdCB0
aGUgbWVyZ2UgcG9pbnQuCisgICAgICAgIGNvbnRleHQuc3RhcnQgPSBtZXJnZVBvaW50OworICAg
IH0KKyAgICBWZWN0b3I8VHJ5Q29udGV4dD4gc2F2ZWRUcnlDb250ZXh0U3RhY2s7CisgICAgbV90
cnlDb250ZXh0U3RhY2suc3dhcChzYXZlZFRyeUNvbnRleHRTdGFjayk7CiAKLXZvaWQgQnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXRTYXZlKExhYmVsKiBtZXJnZVBvaW50LCB1bnNpZ25lZCBsaXZlQ2Fs
bGVlTG9jYWxzSW5kZXgpCi17Ci0gICAgc2l6ZV90IGJlZ2luID0gaW5zdHJ1Y3Rpb25zKCkuc2l6
ZSgpOwotICAgIGVtaXRPcGNvZGUob3Bfc2F2ZSk7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5k
KG1fZ2VuZXJhdG9yUmVnaXN0ZXItPmluZGV4KCkpOwotICAgIGluc3RydWN0aW9ucygpLmFwcGVu
ZChsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpOwotICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChtZXJn
ZVBvaW50LT5iaW5kKGJlZ2luLCBpbnN0cnVjdGlvbnMoKS5zaXplKCkpKTsKLX0KKyAgICBlbWl0
T3Bjb2RlKG9wX3lpZWxkKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZ2VuZXJhdG9yRnJh
bWVSZWdpc3RlcigpLT5pbmRleCgpKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoeWllbGRQ
b2ludEluZGV4KTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYXJndW1lbnQtPmluZGV4KCkp
OwogCi12b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzdW1lKExhYmVsKiBtZXJnZVBvaW50
LCB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpCi17Ci0gICAgZW1pdEdlbmVyYXRvclN0
YXRlTGFiZWwoKTsKLSAgICBlbWl0T3Bjb2RlKG9wX3Jlc3VtZSk7Ci0gICAgaW5zdHJ1Y3Rpb25z
KCkuYXBwZW5kKG1fZ2VuZXJhdG9yUmVnaXN0ZXItPmluZGV4KCkpOwotICAgIGluc3RydWN0aW9u
cygpLmFwcGVuZChsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpOwotICAgIGVtaXRMYWJlbChtZXJnZVBv
aW50KTsKKyAgICAvLyBSZXN0b3JlIHRoZSB0cnkgY29udGV4dHMsIHdoaWNoIHN0YXJ0IG9mZnNl
dCBpcyB1cGRhdGVkIHRvIHRoZSBtZXJnZSBwb2ludC4KKyAgICBtX3RyeUNvbnRleHRTdGFjay5z
d2FwKHNhdmVkVHJ5Q29udGV4dFN0YWNrKTsKKyAgICBlbWl0TGFiZWwobWVyZ2VQb2ludC5nZXQo
KSk7CiB9CiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0WWllbGQoUmVnaXN0
ZXJJRCogYXJndW1lbnQpCkBAIC00NjQwLDM5ICs0NjQ5LDYgQEAgdm9pZCBCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdEdlbmVyYXRvclN0YXRlQ2hhbmdlKGludDMyX3Qgc3RhdGUpCiAgICAgZW1pdFB1
dEJ5SWQoZ2VuZXJhdG9yUmVnaXN0ZXIoKSwgcHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygp
LmdlbmVyYXRvclN0YXRlUHJpdmF0ZU5hbWUoKSwgY29tcGxldGVkU3RhdGUpOwogfQogCi12b2lk
IEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2VuZXJhdG9yU3RhdGVMYWJlbCgpCi17Ci0gICAgUmVm
UHRyPExhYmVsPiBsYWJlbCA9IG5ld0xhYmVsKCk7Ci0gICAgbV9nZW5lcmF0b3JSZXN1bWVMYWJl
bHMuYXBwZW5kKGxhYmVsLmdldCgpKTsKLSAgICBlbWl0TGFiZWwobGFiZWwuZ2V0KCkpOwotfQot
Ci12b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpiZWdpbkdlbmVyYXRvcihSZWdpc3RlcklEKiBzdGF0
ZSkKLXsKLSAgICBiZWdpblN3aXRjaChzdGF0ZSwgU3dpdGNoSW5mbzo6U3dpdGNoSW1tZWRpYXRl
KTsKLX0KLQotdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW5kR2VuZXJhdG9yKExhYmVsKiBkZWZh
dWx0TGFiZWwpCi17Ci0gICAgU3dpdGNoSW5mbyBzd2l0Y2hJbmZvID0gbV9zd2l0Y2hDb250ZXh0
U3RhY2subGFzdCgpOwotICAgIG1fc3dpdGNoQ29udGV4dFN0YWNrLnJlbW92ZUxhc3QoKTsKLQot
ICAgIGluc3RydWN0aW9ucygpW3N3aXRjaEluZm8uYnl0ZWNvZGVPZmZzZXQgKyAxXSA9IG1fY29k
ZUJsb2NrLT5udW1iZXJPZlN3aXRjaEp1bXBUYWJsZXMoKTsKLSAgICBpbnN0cnVjdGlvbnMoKVtz
d2l0Y2hJbmZvLmJ5dGVjb2RlT2Zmc2V0ICsgMl0gPSBkZWZhdWx0TGFiZWwtPmJpbmQoc3dpdGNo
SW5mby5ieXRlY29kZU9mZnNldCwgc3dpdGNoSW5mby5ieXRlY29kZU9mZnNldCArIDMpOwotCi0g
ICAgVW5saW5rZWRTaW1wbGVKdW1wVGFibGUmIGp1bXBUYWJsZSA9IG1fY29kZUJsb2NrLT5hZGRT
d2l0Y2hKdW1wVGFibGUoKTsKLSAgICBpbnQzMl90IHN3aXRjaEFkZHJlc3MgPSBzd2l0Y2hJbmZv
LmJ5dGVjb2RlT2Zmc2V0OwotICAgIGp1bXBUYWJsZS5taW4gPSAwOwotICAgIGp1bXBUYWJsZS5i
cmFuY2hPZmZzZXRzLnJlc2l6ZShtX2dlbmVyYXRvclJlc3VtZUxhYmVscy5zaXplKCkgKyAxKTsK
LSAgICBqdW1wVGFibGUuYnJhbmNoT2Zmc2V0cy5maWxsKDApOwotICAgIGZvciAodWludDMyX3Qg
aSA9IDA7IGkgPCBtX2dlbmVyYXRvclJlc3VtZUxhYmVscy5zaXplKCk7ICsraSkgewotICAgICAg
ICAvLyBXZSdyZSBlbWl0dGluZyB0aGlzIGFmdGVyIHRoZSBjbGF1c2UgbGFiZWxzIHNob3VsZCBo
YXZlIGJlZW4gZml4ZWQsIHNvCi0gICAgICAgIC8vIHRoZSBsYWJlbHMgc2hvdWxkIG5vdCBiZSAi
Zm9yd2FyZCIgcmVmZXJlbmNlcwotICAgICAgICBBU1NFUlQoIW1fZ2VuZXJhdG9yUmVzdW1lTGFi
ZWxzW2ldLT5pc0ZvcndhcmQoKSk7Ci0gICAgICAgIGp1bXBUYWJsZS5hZGQoaSwgbV9nZW5lcmF0
b3JSZXN1bWVMYWJlbHNbaV0tPmJpbmQoc3dpdGNoQWRkcmVzcywgc3dpdGNoQWRkcmVzcyArIDMp
KTsKLSAgICB9Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIEpTQwogCiBuYW1lc3BhY2UgV1RGIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuaAppbmRleCBmZmY3MTNhYTI1ZTcxZGYyY2Y0Y2I1MzA4ZTYxNjlhNTNhZjY1MWJlLi5i
MWI5NDNkYTVlMDY3ZWNkZDQ5Njc0ODExNDVjZTlkYjAwNzVhMmFiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCkBA
IC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiSW5zdHJ1
Y3Rpb24uaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgorI2luY2x1ZGUgIkpTR2VuZXJhdG9y
RnVuY3Rpb24uaCIKICNpbmNsdWRlICJMYWJlbC5oIgogI2luY2x1ZGUgIkxhYmVsU2NvcGUuaCIK
ICNpbmNsdWRlICJOb2Rlcy5oIgpAQCAtNjkwLDE4ICs2OTEsMTUgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIHZvaWQgZW5kU3dpdGNoKHVpbnQzMl90IGNsYXVzZUNvdW50LCBSZWZQdHI8TGFi
ZWw+KiwgRXhwcmVzc2lvbk5vZGUqKiwgTGFiZWwqIGRlZmF1bHRMYWJlbCwgaW50MzJfdCBtaW4s
IGludDMyX3QgcmFuZ2UpOwogCiAgICAgICAgIHZvaWQgZW1pdFlpZWxkUG9pbnQoUmVnaXN0ZXJJ
RCopOwotICAgICAgICB2b2lkIGVtaXRTYXZlKExhYmVsKiBtZXJnZVBvaW50LCB1bnNpZ25lZCBs
aXZlQ2FsbGVlTG9jYWxzSW5kZXgpOwotICAgICAgICB2b2lkIGVtaXRSZXN1bWUoTGFiZWwqIG1l
cmdlUG9pbnQsIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCk7CiAKICAgICAgICAgdm9p
ZCBlbWl0R2VuZXJhdG9yU3RhdGVMYWJlbCgpOwogICAgICAgICB2b2lkIGVtaXRHZW5lcmF0b3JT
dGF0ZUNoYW5nZShpbnQzMl90IHN0YXRlKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFlpZWxk
KFJlZ2lzdGVySUQqIGFyZ3VtZW50KTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdERlbGVnYXRl
WWllbGQoUmVnaXN0ZXJJRCogYXJndW1lbnQsIFRocm93YWJsZUV4cHJlc3Npb25EYXRhKik7Ci0g
ICAgICAgIHZvaWQgYmVnaW5HZW5lcmF0b3IoUmVnaXN0ZXJJRCopOwotICAgICAgICB2b2lkIGVu
ZEdlbmVyYXRvcihMYWJlbCogZGVmYXVsdExhYmVsKTsKLSAgICAgICAgUmVnaXN0ZXJJRCogZ2Vu
ZXJhdG9yU3RhdGVSZWdpc3RlcigpIHsgcmV0dXJuICZtX3BhcmFtZXRlcnNbMl07IH0KLSAgICAg
ICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9yVmFsdWVSZWdpc3RlcigpIHsgcmV0dXJuICZtX3BhcmFt
ZXRlcnNbM107IH0KLSAgICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lz
dGVyKCkgeyByZXR1cm4gJm1fcGFyYW1ldGVyc1s0XTsgfQorICAgICAgICBSZWdpc3RlcklEKiBn
ZW5lcmF0b3JTdGF0ZVJlZ2lzdGVyKCkgeyByZXR1cm4gJm1fcGFyYW1ldGVyc1tzdGF0aWNfY2Fz
dDxpbnQzMl90PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JBcmd1bWVudDo6U3RhdGUp
XTsgfQorICAgICAgICBSZWdpc3RlcklEKiBnZW5lcmF0b3JWYWx1ZVJlZ2lzdGVyKCkgeyByZXR1
cm4gJm1fcGFyYW1ldGVyc1tzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvckZ1bmN0aW9u
OjpHZW5lcmF0b3JBcmd1bWVudDo6VmFsdWUpXTsgfQorICAgICAgICBSZWdpc3RlcklEKiBnZW5l
cmF0b3JSZXN1bWVNb2RlUmVnaXN0ZXIoKSB7IHJldHVybiAmbV9wYXJhbWV0ZXJzW3N0YXRpY19j
YXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yRnVuY3Rpb246OkdlbmVyYXRvckFyZ3VtZW50OjpSZXN1
bWVNb2RlKV07IH0KKyAgICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9yRnJhbWVSZWdpc3Rlcigp
IHsgcmV0dXJuICZtX3BhcmFtZXRlcnNbc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3JG
dW5jdGlvbjo6R2VuZXJhdG9yQXJndW1lbnQ6OkZyYW1lKV07IH0KIAogICAgICAgICBDb2RlVHlw
ZSBjb2RlVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZVR5cGU7IH0KIApAQCAtOTI5LDcgKzky
NywxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgVmVjdG9yPFN3aXRjaEluZm8+IG1fc3dp
dGNoQ29udGV4dFN0YWNrOwogICAgICAgICBWZWN0b3I8UmVmUHRyPEZvckluQ29udGV4dD4+IG1f
Zm9ySW5Db250ZXh0U3RhY2s7CiAgICAgICAgIFZlY3RvcjxUcnlDb250ZXh0PiBtX3RyeUNvbnRl
eHRTdGFjazsKLSAgICAgICAgVmVjdG9yPFJlZlB0cjxMYWJlbD4+IG1fZ2VuZXJhdG9yUmVzdW1l
TGFiZWxzOworICAgICAgICB1bnNpZ25lZCBtX3lpZWxkUG9pbnRzIHsgMCB9OworCisgICAgICAg
IFN0cm9uZzxTeW1ib2xUYWJsZT4gbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlOworICAgICAg
ICBpbnQgbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlSW5kZXggeyAwIH07CisKICAgICAgICAg
ZW51bSBGdW5jdGlvblZhcmlhYmxlVHlwZSA6IHVpbnQ4X3QgeyBOb3JtYWxGdW5jdGlvblZhcmlh
YmxlLCBHbG9iYWxGdW5jdGlvblZhcmlhYmxlIH07CiAgICAgICAgIFZlY3RvcjxzdGQ6OnBhaXI8
RnVuY3Rpb25NZXRhZGF0YU5vZGUqLCBGdW5jdGlvblZhcmlhYmxlVHlwZT4+IG1fZnVuY3Rpb25z
VG9Jbml0aWFsaXplOwogICAgICAgICBib29sIG1fbmVlZFRvSW5pdGlhbGl6ZUFyZ3VtZW50cyB7
IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L05vZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05v
ZGVzQ29kZWdlbi5jcHAKaW5kZXggZDBjOTllZmY1ZTc0ZjAyYzM4M2NjNTExZGUxN2I4ZDJiNmU3
N2U0Zi4uYmNkYWEyNzJjYjk1MDg1ODYwOGNhMmE3NTdmN2M0NjRlNDc2ZGZmNSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcApA
QCAtMzM3Nyw3ICszMzc3LDYgQEAgdm9pZCBGdW5jdGlvbk5vZGU6OmVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKikKICAgICAgICAgUmVmUHRyPExh
YmVsPiBkb25lID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0
TGFiZWwoZG9uZS5nZXQoKSk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0UmV0dXJuKGdlbmVyYXRv
ci5lbWl0TG9hZChudWxscHRyLCBqc1VuZGVmaW5lZCgpKSk7Ci0gICAgICAgIGdlbmVyYXRvci5l
bmRHZW5lcmF0b3IoZG9uZS5nZXQoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKaW5kZXggY2UyMGQyODNhZDcw
YjI3NmJlZWM5ZTBmNmM5Zjg2MGU4YTNkMDgyNS4uMDBjZDY0MWU3N2FiMGIxOTFlM2M4NjQ3YmYz
ODcxYTIyYTkwNjBmZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
cGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlv
bnMuY3BwCkBAIC00Miw4ICs0Miw4IEBACiAjaW5jbHVkZSAiRGlyZWN0QXJndW1lbnRzLmgiCiAj
aW5jbHVkZSAiRlRMRm9yT1NSRW50cnlKSVRDb2RlLmgiCiAjaW5jbHVkZSAiRlRMT1NSRW50cnku
aCIKLSNpbmNsdWRlICJIb3N0Q2FsbFJldHVyblZhbHVlLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0
dGVyLmgiCisjaW5jbHVkZSAiSG9zdENhbGxSZXR1cm5WYWx1ZS5oIgogI2luY2x1ZGUgIkludGVy
cHJldGVyLmgiCiAjaW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSklURXhjZXB0aW9ucy5oIgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVy
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAK
aW5kZXggMWFhZjE3NzIzZmUxZTg4MjBmNDc3YWIwODU0ODRiNWY1ZjI3Njc5Ny4uMmYwZTZmMmZj
N2U5OTY0M2JjYTJhOWY0NDgwNDhlZDg2NmMyOGZhYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCkBAIC02MDksNyArNjA5LDcgQEAg
SlNTdHJpbmcqIEludGVycHJldGVyOjpzdGFja1RyYWNlQXNTdHJpbmcoVk0mIHZtLCBjb25zdCBW
ZWN0b3I8U3RhY2tGcmFtZT4mIHN0YWMKICAgICByZXR1cm4ganNTdHJpbmcoJnZtLCBidWlsZGVy
LnRvU3RyaW5nKCkpOwogfQogCi1BTFdBWVNfSU5MSU5FIHN0YXRpYyBIYW5kbGVySW5mbyogZmlu
ZEV4Y2VwdGlvbkhhbmRsZXIoU3RhY2tWaXNpdG9yJiB2aXNpdG9yLCBDb2RlQmxvY2sqIGNvZGVC
bG9jaywgQ29kZUJsb2NrOjpSZXF1aXJlZEhhbmRsZXIgcmVxdWlyZWRIYW5kbGVyKQorQUxXQVlT
X0lOTElORSBzdGF0aWMgSGFuZGxlckluZm8qIGZpbmRFeGNlcHRpb25IYW5kbGVyKFN0YWNrVmlz
aXRvciYgdmlzaXRvciwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFJlcXVpcmVkSGFuZGxlciByZXF1
aXJlZEhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKGNvZGVCbG9jayk7CiAjaWYgRU5BQkxFKERGR19K
SVQpCkBAIC02NDMsNyArNjQzLDcgQEAgY2xhc3MgR2V0Q2F0Y2hIYW5kbGVyRnVuY3RvciB7CiAg
ICAgICAgIGlmICghY29kZUJsb2NrKQogICAgICAgICAgICAgcmV0dXJuIFN0YWNrVmlzaXRvcjo6
Q29udGludWU7CiAKLSAgICAgICAgbV9oYW5kbGVyID0gZmluZEV4Y2VwdGlvbkhhbmRsZXIodmlz
aXRvciwgY29kZUJsb2NrLCBDb2RlQmxvY2s6OlJlcXVpcmVkSGFuZGxlcjo6Q2F0Y2hIYW5kbGVy
KTsKKyAgICAgICAgbV9oYW5kbGVyID0gZmluZEV4Y2VwdGlvbkhhbmRsZXIodmlzaXRvciwgY29k
ZUJsb2NrLCBSZXF1aXJlZEhhbmRsZXI6OkNhdGNoSGFuZGxlcik7CiAgICAgICAgIGlmIChtX2hh
bmRsZXIpCiAgICAgICAgICAgICByZXR1cm4gU3RhY2tWaXNpdG9yOjpEb25lOwogCkBAIC02ODUs
NyArNjg1LDcgQEAgY2xhc3MgVW53aW5kRnVuY3RvciB7CiAgICAgICAgIG1faGFuZGxlciA9IG51
bGxwdHI7CiAgICAgICAgIGlmICghbV9pc1Rlcm1pbmF0aW9uKSB7CiAgICAgICAgICAgICBpZiAo
bV9jb2RlQmxvY2sgJiYgIWlzV2ViQXNzZW1ibHlFeGVjdXRhYmxlKG1fY29kZUJsb2NrLT5vd25l
ckV4ZWN1dGFibGUoKSkpCi0gICAgICAgICAgICAgICAgbV9oYW5kbGVyID0gZmluZEV4Y2VwdGlv
bkhhbmRsZXIodmlzaXRvciwgbV9jb2RlQmxvY2ssIENvZGVCbG9jazo6UmVxdWlyZWRIYW5kbGVy
OjpBbnlIYW5kbGVyKTsKKyAgICAgICAgICAgICAgICBtX2hhbmRsZXIgPSBmaW5kRXhjZXB0aW9u
SGFuZGxlcih2aXNpdG9yLCBtX2NvZGVCbG9jaywgUmVxdWlyZWRIYW5kbGVyOjpBbnlIYW5kbGVy
KTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChtX2hhbmRsZXIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCmluZGV4IDc5YzdlNTMwMWJhODM5
NmJjMDJkYzI0NWUwODFjN2Y3YTM3MzhlNmMuLjNkZjAwNjc3NmY2MWE0YjViNGI3YzI0OGU3NWNh
YjFhOGMzMDkzMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9JbnRlcnByZXRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9J
bnRlcnByZXRlci5oCkBAIC02NSw2ICs2NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHN0cnVj
dCBIYW5kbGVySW5mbzsKICAgICBzdHJ1Y3QgSW5zdHJ1Y3Rpb247CiAgICAgc3RydWN0IFByb3Rv
Q2FsbEZyYW1lOworICAgIHN0cnVjdCBVbmxpbmtlZEluc3RydWN0aW9uOwogCiAgICAgZW51bSBV
bndpbmRTdGFydCB7IFVud2luZEZyb21DdXJyZW50RnJhbWUsIFVud2luZEZyb21DYWxsZXJGcmFt
ZSB9OwogCkBAIC0yMDcsNyArMjA4LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAg
cmV0dXJuIG9wY29kZTsKICNlbmRpZgogICAgICAgICB9Ci0gICAgICAgIAorCisgICAgICAgIE9w
Y29kZUlEIGdldE9wY29kZUlEKGNvbnN0IEluc3RydWN0aW9uJik7CisgICAgICAgIE9wY29kZUlE
IGdldE9wY29kZUlEKGNvbnN0IFVubGlua2VkSW5zdHJ1Y3Rpb24mKTsKKwogICAgICAgICBib29s
IGlzT3Bjb2RlKE9wY29kZSk7CiAKICAgICAgICAgSlNWYWx1ZSBleGVjdXRlKFByb2dyYW1FeGVj
dXRhYmxlKiwgQ2FsbEZyYW1lKiwgSlNPYmplY3QqIHRoaXNPYmopOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVySW5saW5lcy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVySW5saW5lcy5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjE3N2MxNTQ3OTBhNjdmYjQxY2M5ZTJkMDlhMWRiZGZkZGZhNTliZGYKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXJJ
bmxpbmVzLmgKQEAgLTAsMCArMSw0NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBZdXN1
a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisgKiBDb3B5cmlnaHQgKEMpIDIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkluc3RydWN0aW9u
LmgiCisjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKKyNpbmNsdWRlICJVbmxpbmtlZENvZGVCbG9j
ay5oIgorCituYW1lc3BhY2UgSlNDIHsKKworaW5saW5lIE9wY29kZUlEIEludGVycHJldGVyOjpn
ZXRPcGNvZGVJRChjb25zdCBJbnN0cnVjdGlvbiYgaW5zdHJ1Y3Rpb24pCit7CisgICAgcmV0dXJu
IGdldE9wY29kZUlEKGluc3RydWN0aW9uLnUub3Bjb2RlKTsKK30KKworaW5saW5lIE9wY29kZUlE
IEludGVycHJldGVyOjpnZXRPcGNvZGVJRChjb25zdCBVbmxpbmtlZEluc3RydWN0aW9uJiBpbnN0
cnVjdGlvbikKK3sKKyAgICByZXR1cm4gaW5zdHJ1Y3Rpb24udS5vcGNvZGU7Cit9CisKK30gLy8g
bmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCmluZGV4IGIwMGRmYWM4YzE1
YzU0N2QyN2ZjNjY3ZjVjNDU5MGVkMzk5ZGVlNDAuLjEyNDA1ZjdlNTA0YWIzODkzZGQ5N2Q3YTky
OTEzYjA5NWExMTU5MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKQEAgLTIzNSw4ICsy
MzUsNiBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIERFRklO
RV9PUChvcF9nZXRfcmVzdF9sZW5ndGgpCiAgICAgICAgIERFRklORV9PUChvcF9jaGVja190ZHop
CiAgICAgICAgIERFRklORV9PUChvcF9hc3NlcnQpCi0gICAgICAgIERFRklORV9PUChvcF9zYXZl
KQotICAgICAgICBERUZJTkVfT1Aob3BfcmVzdW1lKQogICAgICAgICBERUZJTkVfT1Aob3BfZGVi
dWcpCiAgICAgICAgIERFRklORV9PUChvcF9kZWxfYnlfaWQpCiAgICAgICAgIERFRklORV9PUChv
cF9kZWxfYnlfdmFsKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKaW5kZXggYmI5N2RjMzViZGZjMDMz
OTlhYTA1MTNhOWNhNzM1NWQwODMxYzYwZC4uNTFmY2Y2MGI5OWQ0MGIwZTUzZGJjZDIyM2M1Njky
MDI1ZjE0ZWNmMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCkBAIC00OTcsOCArNDk3LDYgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9nZXRfcmVzdF9sZW5ndGgoSW5z
dHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2NoZWNrX3RkeihJbnN0cnVjdGlvbiop
OwogICAgICAgICB2b2lkIGVtaXRfb3BfYXNzZXJ0KEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZv
aWQgZW1pdF9vcF9zYXZlKEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9yZXN1
bWUoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2RlYnVnKEluc3RydWN0aW9u
Kik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9kZWxfYnlfaWQoSW5zdHJ1Y3Rpb24qKTsKICAgICAg
ICAgdm9pZCBlbWl0X29wX2RlbF9ieV92YWwoSW5zdHJ1Y3Rpb24qKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wY29kZXMuY3BwCmluZGV4IDdmN2M3NDUzYmQzZDJkNTBlMTgwMTgzZjI5
NzMxMTVmMTE5ZDg1MmYuLjJkYmU4NmM2MjRiYzg3ZWJmNzBiODAxZTBhMmNjY2VmNjUxNWJhMjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcApAQCAtMTQ5MiwxOCAr
MTQ5Miw2IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9yZXN0X2xlbmd0aChJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQogI2VuZGlmCiB9CiAKLXZvaWQgSklUOjplbWl0X29wX3NhdmUo
SW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKLXsKLSAgICBKSVRTbG93UGF0aENhbGwg
c2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwgc2xvd19wYXRoX3NhdmUpOwot
ICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7Ci19Ci0KLXZvaWQgSklUOjplbWl0X29wX3Jlc3VtZShJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQotewotICAgIEpJVFNsb3dQYXRoQ2FsbCBz
bG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBzbG93X3BhdGhfcmVzdW1lKTsK
LSAgICBzbG93UGF0aENhbGwuY2FsbCgpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2Vu
ZGlmIC8vIEVOQUJMRShKSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlci5hc20KaW5kZXggMTQ5MThiNjU1ZDVjZmEyMmI4NjE1OGViMmVl
YWFmMDg3NDk2NTZhNy4uYzlmOTY4Nzk1OGQwNmQzMDYwY2Y2OWZlMzc4OWQxYmQwYmY4Yzc5YSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyLmFzbQpAQCAtMTcwOSwxNiArMTcwOSw4IEBAIF9sbGludF9vcF9hc3NlcnQ6CiAgICAgZGlz
cGF0Y2goMykKIAogCi1fbGxpbnRfb3Bfc2F2ZToKLSAgICB0cmFjZUV4ZWN1dGlvbigpCi0gICAg
Y2FsbE9wY29kZVNsb3dQYXRoKF9zbG93X3BhdGhfc2F2ZSkKLSAgICBkaXNwYXRjaCg0KQotCi0K
LV9sbGludF9vcF9yZXN1bWU6Ci0gICAgdHJhY2VFeGVjdXRpb24oKQotICAgIGNhbGxPcGNvZGVT
bG93UGF0aChfc2xvd19wYXRoX3Jlc3VtZSkKLSAgICBkaXNwYXRjaCgzKQorX2xsaW50X29wX3lp
ZWxkOgorICAgIG5vdFN1cHBvcnRlZCgpCiAKIAogX2xsaW50X29wX2NyZWF0ZV9sZXhpY2FsX2Vu
dmlyb25tZW50OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJz
ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCmluZGV4IGVi
ZWE5OGU0ZWUxM2ZhMTJiZTA5NmJhOTJmNGQ0MTllMzRjZWQxNzAuLjI2MTc0NWExOTAzMTdkZTc1
OTEyZTNhOTIzZmE5ZjI4ODc0ODYzZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Bh
cnNlci5jcHAKQEAgLTI2MCw3ICsyNjAsNyBAQCBTdHJpbmcgUGFyc2VyPExleGVyVHlwZT46OnBh
cnNlSW5uZXIoY29uc3QgSWRlbnRpZmllciYgY2FsbGVlTmFtZSwgU291cmNlUGFyc2VNbwogICAg
IGlmIChtX2xleGVyLT5pc1JlcGFyc2luZ0Z1bmN0aW9uKCkpIHsKICAgICAgICAgUGFyc2VyRnVu
Y3Rpb25JbmZvPEFTVEJ1aWxkZXI+IGZ1bmN0aW9uSW5mbzsKICAgICAgICAgaWYgKHBhcnNlTW9k
ZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckJvZHlNb2RlKQotICAgICAgICAgICAgbV9w
YXJhbWV0ZXJzID0gY3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhjb250ZXh0KTsKKyAgICAgICAg
ICAgIG1fcGFyYW1ldGVycyA9IGNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMoY29udGV4dCwgZnVu
Y3Rpb25JbmZvLnBhcmFtZXRlckNvdW50KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbV9w
YXJhbWV0ZXJzID0gcGFyc2VGdW5jdGlvblBhcmFtZXRlcnMoY29udGV4dCwgcGFyc2VNb2RlLCBm
dW5jdGlvbkluZm8pOwogCkBAIC01MTIsMTAgKzUxMiw5IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVl
QnVpbGRlcj4gVHJlZVNvdXJjZUVsZW1lbnRzIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUdlbmVy
YXRvCiAKICAgICBQYXJzZXJGdW5jdGlvbkluZm88VHJlZUJ1aWxkZXI+IGluZm87CiAgICAgaW5m
by5uYW1lID0gJm1fdm0tPnByb3BlcnR5TmFtZXMtPm51bGxJZGVudGlmaWVyOwotICAgIGNyZWF0
ZUdlbmVyYXRvclBhcmFtZXRlcnMoY29udGV4dCk7CisgICAgY3JlYXRlR2VuZXJhdG9yUGFyYW1l
dGVycyhjb250ZXh0LCBpbmZvLnBhcmFtZXRlckNvdW50KTsKICAgICBpbmZvLnN0YXJ0T2Zmc2V0
ID0gcGFyYW1ldGVyc1N0YXJ0OwogICAgIGluZm8uc3RhcnRMaW5lID0gdG9rZW5MaW5lKCk7Ci0g
ICAgaW5mby5wYXJhbWV0ZXJDb3VudCA9IDQ7IC8vIGdlbmVyYXRvciwgc3RhdGUsIHZhbHVlLCBy
ZXN1bWUgbW9kZQogCiAgICAgewogICAgICAgICBBdXRvUG9wU2NvcGVSZWYgZ2VuZXJhdG9yQm9k
eVNjb3BlKHRoaXMsIHB1c2hTY29wZSgpKTsKQEAgLTE5MDMsMzIgKzE5MDIsMzAgQEAgdGVtcGxh
dGUgPHR5cGVuYW1lIExleGVyVHlwZT4gdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyLCBjbGFz
cyBGdW5jdGlvbkluZm9UeXAKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KLXRl
bXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkZvcm1hbFBh
cmFtZXRlckxpc3QgUGFyc2VyPExleGVyVHlwZT46OmNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMo
VHJlZUJ1aWxkZXImIGNvbnRleHQpCit0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IHR5cGVu
YW1lIFRyZWVCdWlsZGVyOjpGb3JtYWxQYXJhbWV0ZXJMaXN0IFBhcnNlcjxMZXhlclR5cGU+Ojpj
cmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKFRyZWVCdWlsZGVyJiBjb250ZXh0LCB1bnNpZ25lZCYg
cGFyYW1ldGVyQ291bnQpCiB7CiAgICAgYXV0byBwYXJhbWV0ZXJzID0gY29udGV4dC5jcmVhdGVG
b3JtYWxQYXJhbWV0ZXJMaXN0KCk7CiAKICAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb24odG9r
ZW5Mb2NhdGlvbigpKTsKICAgICBKU1RleHRQb3NpdGlvbiBwb3NpdGlvbiA9IHRva2VuU3RhcnRQ
b3NpdGlvbigpOwogCi0gICAgLy8gQGdlbmVyYXRvcgotICAgIGRlY2xhcmVQYXJhbWV0ZXIoJm1f
dm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclByaXZhdGVOYW1lKCkp
OwotICAgIGF1dG8gZ2VuZXJhdG9yID0gY29udGV4dC5jcmVhdGVCaW5kaW5nTG9jYXRpb24obG9j
YXRpb24sIG1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclByaXZh
dGVOYW1lKCksIHBvc2l0aW9uLCBwb3NpdGlvbiwgQXNzaWdubWVudENvbnRleHQ6OkRlY2xhcmF0
aW9uU3RhdGVtZW50KTsKLSAgICBjb250ZXh0LmFwcGVuZFBhcmFtZXRlcihwYXJhbWV0ZXJzLCBn
ZW5lcmF0b3IsIDApOworICAgIGF1dG8gYWRkUGFyYW1ldGVyID0gWyZdKGNvbnN0IElkZW50aWZp
ZXImIG5hbWUpIHsKKyAgICAgICAgZGVjbGFyZVBhcmFtZXRlcigmbmFtZSk7CisgICAgICAgIGF1
dG8gYmluZGluZyA9IGNvbnRleHQuY3JlYXRlQmluZGluZ0xvY2F0aW9uKGxvY2F0aW9uLCBuYW1l
LCBwb3NpdGlvbiwgcG9zaXRpb24sIEFzc2lnbm1lbnRDb250ZXh0OjpEZWNsYXJhdGlvblN0YXRl
bWVudCk7CisgICAgICAgIGNvbnRleHQuYXBwZW5kUGFyYW1ldGVyKHBhcmFtZXRlcnMsIGJpbmRp
bmcsIDApOworICAgICAgICArK3BhcmFtZXRlckNvdW50OworICAgIH07CiAKKyAgICAvLyBAZ2Vu
ZXJhdG9yCisgICAgYWRkUGFyYW1ldGVyKG1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1l
cygpLmdlbmVyYXRvclByaXZhdGVOYW1lKCkpOwogICAgIC8vIEBnZW5lcmF0b3JTdGF0ZQotICAg
IGRlY2xhcmVQYXJhbWV0ZXIoJm1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdl
bmVyYXRvclN0YXRlUHJpdmF0ZU5hbWUoKSk7Ci0gICAgYXV0byBnZW5lcmF0b3JTdGF0ZSA9IGNv
bnRleHQuY3JlYXRlQmluZGluZ0xvY2F0aW9uKGxvY2F0aW9uLCBtX3ZtLT5wcm9wZXJ0eU5hbWVz
LT5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JTdGF0ZVByaXZhdGVOYW1lKCksIHBvc2l0aW9uLCBw
b3NpdGlvbiwgQXNzaWdubWVudENvbnRleHQ6OkRlY2xhcmF0aW9uU3RhdGVtZW50KTsKLSAgICBj
b250ZXh0LmFwcGVuZFBhcmFtZXRlcihwYXJhbWV0ZXJzLCBnZW5lcmF0b3JTdGF0ZSwgMCk7Ci0K
KyAgICBhZGRQYXJhbWV0ZXIobV92bS0+cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZ2Vu
ZXJhdG9yU3RhdGVQcml2YXRlTmFtZSgpKTsKICAgICAvLyBAZ2VuZXJhdG9yVmFsdWUKLSAgICBk
ZWNsYXJlUGFyYW1ldGVyKCZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZW5l
cmF0b3JWYWx1ZVByaXZhdGVOYW1lKCkpOwotICAgIGF1dG8gZ2VuZXJhdG9yVmFsdWUgPSBjb250
ZXh0LmNyZWF0ZUJpbmRpbmdMb2NhdGlvbihsb2NhdGlvbiwgbV92bS0+cHJvcGVydHlOYW1lcy0+
YnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yVmFsdWVQcml2YXRlTmFtZSgpLCBwb3NpdGlvbiwgcG9z
aXRpb24sIEFzc2lnbm1lbnRDb250ZXh0OjpEZWNsYXJhdGlvblN0YXRlbWVudCk7Ci0gICAgY29u
dGV4dC5hcHBlbmRQYXJhbWV0ZXIocGFyYW1ldGVycywgZ2VuZXJhdG9yVmFsdWUsIDApOwotCisg
ICAgYWRkUGFyYW1ldGVyKG1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdlbmVy
YXRvclZhbHVlUHJpdmF0ZU5hbWUoKSk7CiAgICAgLy8gQGdlbmVyYXRvclJlc3VtZU1vZGUKLSAg
ICBkZWNsYXJlUGFyYW1ldGVyKCZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5n
ZW5lcmF0b3JSZXN1bWVNb2RlUHJpdmF0ZU5hbWUoKSk7Ci0gICAgYXV0byBnZW5lcmF0b3JSZXN1
bWVNb2RlID0gY29udGV4dC5jcmVhdGVCaW5kaW5nTG9jYXRpb24obG9jYXRpb24sIG1fdm0tPnBy
b3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclJlc3VtZU1vZGVQcml2YXRlTmFt
ZSgpLCBwb3NpdGlvbiwgcG9zaXRpb24sIEFzc2lnbm1lbnRDb250ZXh0OjpEZWNsYXJhdGlvblN0
YXRlbWVudCk7Ci0gICAgY29udGV4dC5hcHBlbmRQYXJhbWV0ZXIocGFyYW1ldGVycywgZ2VuZXJh
dG9yUmVzdW1lTW9kZSwgMCk7CisgICAgYWRkUGFyYW1ldGVyKG1fdm0tPnByb3BlcnR5TmFtZXMt
PmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclJlc3VtZU1vZGVQcml2YXRlTmFtZSgpKTsKKyAgICAv
LyBAZ2VuZXJhdG9yRnJhbWUKKyAgICBhZGRQYXJhbWV0ZXIobV92bS0+cHJvcGVydHlOYW1lcy0+
YnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yRnJhbWVQcml2YXRlTmFtZSgpKTsKIAogICAgIHJldHVy
biBwYXJhbWV0ZXJzOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9QYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKaW5kZXgg
MzkyMDQwNGU4YmE1MjBiMjJlNGVjZDI3NzgxYzEzZGY4MTkwNzQzMy4uNTBlMTM5MWI1ZmQwM2Rk
NWU3NzhiOGZkYjU5MjNhYTc5OGFlZDEyMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9QYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Bh
cnNlci5oCkBAIC0xNDI2LDcgKzE0MjYsNyBAQCBjbGFzcyBQYXJzZXIgewogICAgIEFMV0FZU19J
TkxJTkUgYm9vbCBpc0Fycm93RnVuY3Rpb25QYXJhbWV0ZXJzKCk7CiAgICAgCiAgICAgdGVtcGxh
dGUgPGNsYXNzIFRyZWVCdWlsZGVyLCBjbGFzcyBGdW5jdGlvbkluZm9UeXBlPiBORVZFUl9JTkxJ
TkUgdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkZvcm1hbFBhcmFtZXRlckxpc3QgcGFyc2VGdW5jdGlv
blBhcmFtZXRlcnMoVHJlZUJ1aWxkZXImLCBTb3VyY2VQYXJzZU1vZGUsIEZ1bmN0aW9uSW5mb1R5
cGUmKTsKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElORSB0eXBl
bmFtZSBUcmVlQnVpbGRlcjo6Rm9ybWFsUGFyYW1ldGVyTGlzdCBjcmVhdGVHZW5lcmF0b3JQYXJh
bWV0ZXJzKFRyZWVCdWlsZGVyJik7CisgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBO
RVZFUl9JTkxJTkUgdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkZvcm1hbFBhcmFtZXRlckxpc3QgY3Jl
YXRlR2VuZXJhdG9yUGFyYW1ldGVycyhUcmVlQnVpbGRlciYsIHVuc2lnbmVkJiBwYXJhbWV0ZXJD
b3VudCk7CiAKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElORSBU
cmVlQ2xhc3NFeHByZXNzaW9uIHBhcnNlQ2xhc3MoVHJlZUJ1aWxkZXImLCBGdW5jdGlvbk5hbWVS
ZXF1aXJlbWVudHMsIFBhcnNlckNsYXNzSW5mbzxUcmVlQnVpbGRlcj4mKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKaW5kZXggYTli
NzU1ZTZjOWFlOWI5OGE2MjI5MzU0NmVlNTdjYTgxZWM5YzMyYy4uMmU4NjhkY2IyZDcxZmU3Y2Yy
OGU5NTBmMDVjNzU4YmE4MDVjYzMyNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCkBAIC0zNyw3ICszNyw2IEBACiAjaW5jbHVkZSAi
RXJyb3IuaCIKICNpbmNsdWRlICJFcnJvckhhbmRsaW5nU2NvcGUuaCIKICNpbmNsdWRlICJFeGNl
cHRpb25GdXp6LmgiCi0jaW5jbHVkZSAiR2VuZXJhdG9yRnJhbWUuaCIKICNpbmNsdWRlICJHZXR0
ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJIb3N0Q2FsbFJldHVyblZhbHVlLmgiCiAjaW5jbHVkZSAi
SW50ZXJwcmV0ZXIuaCIKQEAgLTc1MywzOCArNzUyLDYgQEAgU0xPV19QQVRIX0RFQ0woc2xvd19w
YXRoX2Fzc2VydCkKICAgICBFTkQoKTsKIH0KIAotU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3Nh
dmUpCi17Ci0gICAgLy8gT25seSBzYXZlIHZhcmlhYmxlcyBhbmQgdGVtcG9yYXJ5IHJlZ2lzdGVy
cy4gVGhlIHNjb3BlIHJlZ2lzdGVycyBhcmUgaW5jbHVkZWQgaW4gdGhlbS4KLSAgICAvLyBCdXQg
cGFyYW1ldGVycyBhcmUgbm90IGluY2x1ZGVkLiBCZWNhdXNlIHRoZSBnZW5lcmF0b3IgaW1wbGVt
ZW50YXRpb24gcmVwbGFjZXMgdGhlIHZhbHVlcyBvZiBwYXJhbWV0ZXJzIG9uIGVhY2ggZ2VuZXJh
dG9yLm5leHQoKSBjYWxsLgotICAgIEJFR0lOKCk7Ci0gICAgSlNWYWx1ZSBnZW5lcmF0b3IgPSBP
UCgxKS5qc1ZhbHVlKCk7Ci0gICAgR2VuZXJhdG9yRnJhbWUqIGZyYW1lID0gbnVsbHB0cjsKLSAg
ICBKU1ZhbHVlIHZhbHVlID0gZ2VuZXJhdG9yLmdldChleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVz
KCkuYnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yRnJhbWVQcml2YXRlTmFtZSgpKTsKLSAgICBpZiAo
IXZhbHVlLmlzTnVsbCgpKQotICAgICAgICBmcmFtZSA9IGpzQ2FzdDxHZW5lcmF0b3JGcmFtZSo+
KHZhbHVlKTsKLSAgICBlbHNlIHsKLSAgICAgICAgLy8gRklYTUU6IE9uY2UgSlNHZW5lcmF0b3Ig
c3BlY2lhbGl6ZWQgb2JqZWN0IGlzIGludHJvZHVjZWQsIHRoaXMgR2VuZXJhdG9yRnJhbWUgc2hv
dWxkIGJlIGVtYmVkZWQgaW50byBpdCB0byBhdm9pZCBhbGxvY2F0aW9ucy4KLSAgICAgICAgLy8g
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTU0NQotICAgICAgICBm
cmFtZSA9IEdlbmVyYXRvckZyYW1lOjpjcmVhdGUoZXhlYy0+dm0oKSwgIGV4ZWMtPmNvZGVCbG9j
aygpLT5udW1DYWxsZWVMb2NhbHMoKSk7Ci0gICAgICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGdl
bmVyYXRvciwgdHJ1ZSwgUHV0UHJvcGVydHlTbG90OjpQdXRCeUlkKTsKLSAgICAgICAgYXNPYmpl
Y3QoZ2VuZXJhdG9yKS0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPnB1dChhc09iamVjdChnZW5l
cmF0b3IpLCBleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCkuZ2VuZXJh
dG9yRnJhbWVQcml2YXRlTmFtZSgpLCBmcmFtZSwgc2xvdCk7Ci0gICAgfQotICAgIHVuc2lnbmVk
IGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9IHBjWzJdLnUudW5zaWduZWRWYWx1ZTsKLSAgICBmcmFt
ZS0+c2F2ZShleGVjLCBleGVjLT5jb2RlQmxvY2soKS0+bGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQo
bGl2ZUNhbGxlZUxvY2Fsc0luZGV4KSk7Ci0gICAgRU5EKCk7Ci19Ci0KLVNMT1dfUEFUSF9ERUNM
KHNsb3dfcGF0aF9yZXN1bWUpCi17Ci0gICAgQkVHSU4oKTsKLSAgICBKU1ZhbHVlIGdlbmVyYXRv
ciA9IE9QKDEpLmpzVmFsdWUoKTsKLSAgICBHZW5lcmF0b3JGcmFtZSogZnJhbWUgPSBqc0Nhc3Q8
R2VuZXJhdG9yRnJhbWUqPihnZW5lcmF0b3IuZ2V0KGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMo
KS5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JGcmFtZVByaXZhdGVOYW1lKCkpKTsKLSAgICB1bnNp
Z25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSBwY1syXS51LnVuc2lnbmVkVmFsdWU7Ci0gICAg
ZnJhbWUtPnJlc3VtZShleGVjLCBleGVjLT5jb2RlQmxvY2soKS0+bGl2ZUNhbGxlZUxvY2Fsc0F0
WWllbGQobGl2ZUNhbGxlZUxvY2Fsc0luZGV4KSk7Ci0gICAgRU5EKCk7Ci19Ci0KIFNMT1dfUEFU
SF9ERUNMKHNsb3dfcGF0aF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudCkKIHsKICAgICBCRUdJ
TigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xv
d1BhdGhzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMu
aAppbmRleCA2NDAxYTYxNGQ1NjExNjYzNTY5YjE4YTAyNzJiMjhhYzM1Mjg2YTgyLi4zZDljMTVm
NWFmMGM3NTdkZGExMDUzMzkxOTkwZjU0NjM4ODY4MWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaApAQCAtMjQ4LDggKzI0OCw2IEBAIFNM
T1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfbmV4dF9nZW5lcmljX2VudW1lcmF0b3JfcG5h
bWUpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF90b19pbmRleF9zdHJpbmcpOwog
U0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9wcm9maWxlX3R5cGVfY2xlYXJfbG9nKTsK
IFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfYXNzZXJ0KTsKLVNMT1dfUEFUSF9ISURE
RU5fREVDTChzbG93X3BhdGhfc2F2ZSk7Ci1TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRo
X3Jlc3VtZSk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2NyZWF0ZV9sZXhpY2Fs
X2Vudmlyb25tZW50KTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcHVzaF93aXRo
X3Njb3BlKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfcmVzb2x2ZV9zY29wZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGcmFt
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGcmFtZS5jcHAK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVmNmVhN2ExMDAyNThjM2VjZTA0ZGFhYjQz
YmRhYTg1MWVjOGY3MTUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJhbWUuY3BwCisr
KyAvZGV2L251bGwKQEAgLTEsOTcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBZ
dXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVk
ZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiR2VuZXJhdG9yRnJhbWUuaCIKLQotI2luY2x1ZGUgIkNv
ZGVCbG9jay5oIgotI2luY2x1ZGUgIkhlYXBJdGVyYXRpb25TY29wZS5oIgotI2luY2x1ZGUgIkpT
Q0pTVmFsdWVJbmxpbmVzLmgiCi0jaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgotI2luY2x1ZGUg
IlNsb3RWaXNpdG9ySW5saW5lcy5oIgotI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKLQot
bmFtZXNwYWNlIEpTQyB7Ci0KLWNvbnN0IENsYXNzSW5mbyBHZW5lcmF0b3JGcmFtZTo6c19pbmZv
ID0geyAiR2VuZXJhdG9yRnJhbWUiLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RB
QkxFKEdlbmVyYXRvckZyYW1lKSB9OwotCi1HZW5lcmF0b3JGcmFtZTo6R2VuZXJhdG9yRnJhbWUo
Vk0mIHZtLCBzaXplX3QgbnVtYmVyT2ZDYWxsZWVMb2NhbHMpCi0gICAgOiBCYXNlKHZtLCB2bS5n
ZW5lcmF0b3JGcmFtZVN0cnVjdHVyZS5nZXQoKSkKLSAgICAsIG1fbnVtYmVyT2ZDYWxsZWVMb2Nh
bHMobnVtYmVyT2ZDYWxsZWVMb2NhbHMpCi17Ci19Ci0KLXZvaWQgR2VuZXJhdG9yRnJhbWU6OmZp
bmlzaENyZWF0aW9uKFZNJiB2bSkKLXsKLSAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7Ci0g
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX251bWJlck9mQ2FsbGVlTG9jYWxzOyArK2kpCi0g
ICAgICAgIGxvY2FsQXQoaSkuY2xlYXIoKTsKLX0KLQotU3RydWN0dXJlKiBHZW5lcmF0b3JGcmFt
ZTo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNWYWx1ZSBwcm90b3R5cGUpCi17Ci0gICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBn
bG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oQ2VsbFR5cGUsIFN0cnVjdHVyZUZsYWdz
KSwgaW5mbygpKTsKLX0KLQotR2VuZXJhdG9yRnJhbWUqIEdlbmVyYXRvckZyYW1lOjpjcmVhdGUo
Vk0mIHZtLCBzaXplX3QgbnVtYmVyT2ZMb2NhbHMpCi17Ci0gICAgR2VuZXJhdG9yRnJhbWUqIHJl
c3VsdCA9Ci0gICAgICAgIG5ldyAoCi0gICAgICAgICAgICBOb3ROdWxsLAotICAgICAgICAgICAg
YWxsb2NhdGVDZWxsPEdlbmVyYXRvckZyYW1lPih2bS5oZWFwLCBhbGxvY2F0aW9uU2l6ZUZvckxv
Y2FscyhudW1iZXJPZkxvY2FscykpKQotICAgICAgICBHZW5lcmF0b3JGcmFtZSh2bSwgbnVtYmVy
T2ZMb2NhbHMpOwotICAgIHJlc3VsdC0+ZmluaXNoQ3JlYXRpb24odm0pOwotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci0KLXZvaWQgR2VuZXJhdG9yRnJhbWU6OnNhdmUoRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlQ2FsbGVlTG9jYWxzKQotewotICAgIC8vIE9ubHkgc2F2
ZSBjYWxsZWUgbG9jYWxzLgotICAgIC8vIEV2ZXJ5IHRpbWUgYSBnZW5lcmF0b3IgaXMgY2FsbGVk
IChvciByZXN1bWVkKSwgcGFyYW1ldGVycyBzaG91bGQgYmUgcmVwbGFjZWQuCi0gICAgQVNTRVJU
KGxpdmVDYWxsZWVMb2NhbHMubnVtQml0cygpIDw9IG1fbnVtYmVyT2ZDYWxsZWVMb2NhbHMpOwot
ICAgIGxpdmVDYWxsZWVMb2NhbHMuZm9yRWFjaFNldEJpdChbJl0oc2l6ZV90IGluZGV4KSB7Ci0g
ICAgICAgIGxvY2FsQXQoaW5kZXgpLnNldChleGVjLT52bSgpLCB0aGlzLCBleGVjLT51bmNoZWNr
ZWRSKHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGluZGV4KSkuanNWYWx1ZSgpKTsKLSAgICB9KTsK
LX0KLQotdm9pZCBHZW5lcmF0b3JGcmFtZTo6cmVzdW1lKEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
RmFzdEJpdFZlY3RvciYgbGl2ZUNhbGxlZUxvY2FscykKLXsKLSAgICAvLyBPbmx5IHJlc3VtZSBj
YWxsZWUgbG9jYWxzLgotICAgIC8vIEV2ZXJ5IHRpbWUgYSBnZW5lcmF0b3IgaXMgY2FsbGVkIChv
ciByZXN1bWVkKSwgcGFyYW1ldGVycyBzaG91bGQgYmUgcmVwbGFjZWQuCi0gICAgbGl2ZUNhbGxl
ZUxvY2Fscy5mb3JFYWNoU2V0Qml0KFsmXShzaXplX3QgaW5kZXgpIHsKLSAgICAgICAgZXhlYy0+
dW5jaGVja2VkUih2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChpbmRleCkpID0gbG9jYWxBdChpbmRl
eCkuZ2V0KCk7Ci0gICAgICAgIGxvY2FsQXQoaW5kZXgpLmNsZWFyKCk7Ci0gICAgfSk7Ci19Ci0K
LXZvaWQgR2VuZXJhdG9yRnJhbWU6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90Vmlz
aXRvciYgdmlzaXRvcikKLXsKLSAgICBHZW5lcmF0b3JGcmFtZSogdGhpc09iamVjdCA9IGpzQ2Fz
dDxHZW5lcmF0b3JGcmFtZSo+KGNlbGwpOwotICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09i
amVjdCwgdmlzaXRvcik7Ci0gICAgLy8gU2luY2Ugb25seSB0cnVlIGNlbGwgcG9pbnRlcnMgYXJl
IHN0b3JlZCBhcyBhIGNlbGwsIHdlIGNhbiBzYWZlbHkgbWFyayB0aGVtLgotICAgIHZpc2l0b3Iu
YXBwZW5kVmFsdWVzKHRoaXNPYmplY3QtPmxvY2FscygpLCB0aGlzT2JqZWN0LT5tX251bWJlck9m
Q2FsbGVlTG9jYWxzKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGcmFtZS5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJhbWUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggM2Q1NDViMTQ3ZGQ0YWJmYjJiYmI5YjVhNzE5NGU4Zjc0ODQxYzQ5YS4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9HZW5lcmF0b3JGcmFtZS5oCisrKyAvZGV2L251bGwKQEAgLTEsOTAgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRl
YUBnbWFpbC5jb20+LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIEdlbmVyYXRvckZyYW1lX2gKLSNkZWZp
bmUgR2VuZXJhdG9yRnJhbWVfaAotCi0jaW5jbHVkZSAiSlNDZWxsLmgiCi0jaW5jbHVkZSA8d3Rm
L0Zhc3RCaXRWZWN0b3IuaD4KLQotbmFtZXNwYWNlIEpTQyB7Ci0KLWNsYXNzIEdlbmVyYXRvckZy
YW1lIDogcHVibGljIEpTQ2VsbCB7Ci0gICAgZnJpZW5kIGNsYXNzIEpJVDsKLSNpZiBFTkFCTEUo
REZHX0pJVCkKLSAgICBmcmllbmQgY2xhc3MgREZHOjpTcGVjdWxhdGl2ZUpJVDsKLSAgICBmcmll
bmQgY2xhc3MgREZHOjpKSVRDb21waWxlcjsKLSNlbmRpZgotICAgIGZyaWVuZCBjbGFzcyBWTTsK
LXB1YmxpYzoKLSAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOwotICAgIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCBTdHJ1Y3R1cmVGbGFncyA9IFN0cnVjdHVyZUlzSW1tb3J0YWwgfCBCYXNlOjpTdHJ1Y3R1
cmVGbGFnczsKLQotICAgIERFQ0xBUkVfRVhQT1JUX0lORk87Ci0KLSAgICBzdGF0aWMgR2VuZXJh
dG9yRnJhbWUqIGNyZWF0ZShWTSYsIHNpemVfdCBudW1iZXJPZkNhbGxlZUxvY2Fscyk7Ci0KLSAg
ICBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiBsb2NhbHMoKQotICAgIHsKLSAgICAgICAgcmV0
dXJuIGJpdHdpc2VfY2FzdDxXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+Kj4oYml0d2lzZV9jYXN0
PGNoYXIqPih0aGlzKSArIG9mZnNldE9mTG9jYWxzKCkpOwotICAgIH0KLQotICAgIFdyaXRlQmFy
cmllckJhc2U8VW5rbm93bj4mIGxvY2FsQXQoc2l6ZV90IGluZGV4KQotICAgIHsKLSAgICAgICAg
QVNTRVJUKGluZGV4IDwgbV9udW1iZXJPZkNhbGxlZUxvY2Fscyk7Ci0gICAgICAgIHJldHVybiBs
b2NhbHMoKVtpbmRleF07Ci0gICAgfQotCi0gICAgc3RhdGljIHNpemVfdCBvZmZzZXRPZkxvY2Fs
cygpCi0gICAgewotICAgICAgICByZXR1cm4gV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mPHNpemVv
ZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pPihzaXplb2YoR2VuZXJhdG9yRnJhbWUpKTsKLSAgICB9
Ci0KLSAgICBzdGF0aWMgc2l6ZV90IGFsbG9jYXRpb25TaXplRm9yTG9jYWxzKHVuc2lnbmVkIG51
bWJlck9mTG9jYWxzKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG9mZnNldE9mTG9jYWxzKCkgKyBu
dW1iZXJPZkxvY2FscyAqIHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pOwotICAgIH0KLQot
ICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0
KiwgSlNWYWx1ZSBwcm90b3R5cGUpOwotCi0gICAgdm9pZCBzYXZlKEV4ZWNTdGF0ZSosIGNvbnN0
IEZhc3RCaXRWZWN0b3ImIGxpdmVDYWxsZWVMb2NhbHMpOwotICAgIHZvaWQgcmVzdW1lKEV4ZWNT
dGF0ZSosIGNvbnN0IEZhc3RCaXRWZWN0b3ImIGxpdmVDYWxsZWVMb2NhbHMpOwotCi1wcml2YXRl
OgotICAgIEdlbmVyYXRvckZyYW1lKFZNJiwgc2l6ZV90IG51bWJlck9mQ2FsbGVlTG9jYWxzKTsK
LQotICAgIHNpemVfdCBtX251bWJlck9mQ2FsbGVlTG9jYWxzOwotCi0gICAgZnJpZW5kIGNsYXNz
IExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKLQotICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsK
LQotcHJvdGVjdGVkOgotICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xv
dFZpc2l0b3ImKTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEpTQwotCi0jZW5kaWYgLy8gR2VuZXJh
dG9yRnJhbWVfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
ZW5lcmF0b3JGdW5jdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5l
cmF0b3JGdW5jdGlvbi5oCmluZGV4IDM2ZjYxYzVmMjBmNTZiZWZkNmM1NTc4NDJiMTllMzliMTlh
M2E5MTkuLmExY2JhZDk0NmRjNTY4MjllZDFhMjE1NTc5MGI0NDBhOGRmNDMwMDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJhdG9yRnVuY3Rpb24uaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyYXRvckZ1bmN0aW9uLmgK
QEAgLTU1LDYgKzU1LDE2IEBAIGNsYXNzIEpTR2VuZXJhdG9yRnVuY3Rpb24gOiBwdWJsaWMgSlNG
dW5jdGlvbiB7CiAgICAgICAgIEV4ZWN1dGluZyA9IC0yLAogICAgIH07CiAKKyAgICAvLyBbdGhp
c10sIEBnZW5lcmF0b3IsIEBnZW5lcmF0b3JTdGF0ZSwgQGdlbmVyYXRvclZhbHVlLCBAZ2VuZXJh
dG9yUmVzdW1lTW9kZSwgQGdlbmVyYXRvckZyYW1lLgorICAgIGVudW0gY2xhc3MgR2VuZXJhdG9y
QXJndW1lbnQgOiBpbnQzMl90IHsKKyAgICAgICAgVGhpc1ZhbHVlID0gMCwKKyAgICAgICAgR2Vu
ZXJhdG9yID0gMSwKKyAgICAgICAgU3RhdGUgPSAyLAorICAgICAgICBWYWx1ZSA9IDMsCisgICAg
ICAgIFJlc3VtZU1vZGUgPSA0LAorICAgICAgICBGcmFtZSA9IDUsCisgICAgfTsKKwogICAgIGNv
bnN0IHN0YXRpYyB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdz
OwogCiAgICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZN
LmNwcAppbmRleCA4ODEzMWJmNWIzMDkwYWJkYWU0Yjk5NDUxYjQxNzFjYjVmZTJjNDVjLi5jMzAx
MjJjNWFmMzNjODA3ZmU5YTY1YTE4ZmU2Zjg1NDcwZWQwYTZlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVk0uY3BwCkBAIC00Niw3ICs0Niw2IEBACiAjaW5jbHVkZSAiRlRMVGh1bmtzLmgi
CiAjaW5jbHVkZSAiRnVuY3Rpb25Db25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkdDQWN0aXZpdHlD
YWxsYmFjay5oIgotI2luY2x1ZGUgIkdlbmVyYXRvckZyYW1lLmgiCiAjaW5jbHVkZSAiR2V0dGVy
U2V0dGVyLmgiCiAjaW5jbHVkZSAiSGVhcC5oIgogI2luY2x1ZGUgIkhlYXBJdGVyYXRpb25TY29w
ZS5oIgpAQCAtMjQwLDcgKzIzOSw2IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBo
ZWFwVHlwZSkKICAgICBpbmZlcnJlZFR5cGVTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBJbmZlcnJlZFR5
cGU6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICBpbmZlcnJlZFR5
cGVUYWJsZVN0cnVjdHVyZS5zZXQoKnRoaXMsIEluZmVycmVkVHlwZVRhYmxlOjpjcmVhdGVTdHJ1
Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgZnVuY3Rpb25SYXJlRGF0YVN0cnVjdHVy
ZS5zZXQoKnRoaXMsIEZ1bmN0aW9uUmFyZURhdGE6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwg
anNOdWxsKCkpKTsKLSAgICBnZW5lcmF0b3JGcmFtZVN0cnVjdHVyZS5zZXQoKnRoaXMsIEdlbmVy
YXRvckZyYW1lOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgZXhj
ZXB0aW9uU3RydWN0dXJlLnNldCgqdGhpcywgRXhjZXB0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUoKnRo
aXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgcHJvbWlzZURlZmVycmVkU3RydWN0dXJlLnNldCgqdGhp
cywgSlNQcm9taXNlRGVmZXJyZWQ6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkp
KTsKICAgICBpbnRlcm5hbFByb21pc2VEZWZlcnJlZFN0cnVjdHVyZS5zZXQoKnRoaXMsIEpTSW50
ZXJuYWxQcm9taXNlRGVmZXJyZWQ6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCmluZGV4IDg3YmQwZTBhMjU1MzhlOGM1ZWMz
MmFiZTQwMzJjNDY5N2ViMWQwOGYuLjkxNTBiNTE1OWVlZGNhZDE4NTY0NWNkYTZjNzMwYjQ5MGVk
M2U2NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaApAQCAtMzIwLDcgKzMyMCw2IEBA
IGNsYXNzIFZNIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFZNPiB7CiAgICAgU3Ryb25n
PFN0cnVjdHVyZT4gaW5mZXJyZWRUeXBlU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+
IGluZmVycmVkVHlwZVRhYmxlU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGZ1bmN0
aW9uUmFyZURhdGFTdHJ1Y3R1cmU7Ci0gICAgU3Ryb25nPFN0cnVjdHVyZT4gZ2VuZXJhdG9yRnJh
bWVTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gZXhjZXB0aW9uU3RydWN0dXJlOwog
ICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHByb21pc2VEZWZlcnJlZFN0cnVjdHVyZTsKICAgICBTdHJv
bmc8U3RydWN0dXJlPiBpbnRlcm5hbFByb21pc2VEZWZlcnJlZFN0cnVjdHVyZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL0Zhc3RCaXRWZWN0b3IuaCBiL1NvdXJjZS9XVEYvd3RmL0Zhc3RC
aXRWZWN0b3IuaAppbmRleCA5OGZmZjVjZjczNTNlNmJjNjdkYTVjNTU5NDBjY2NlNGU0YjE1NmQw
Li5mZjAwYjdiNTRkNGEwY2ZmNGJlZjdkMDM4NTRkZTZiOTBjZTFkYjkxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9GYXN0Qml0VmVjdG9yLmgKKysrIGIvU291cmNlL1dURi93dGYvRmFzdEJp
dFZlY3Rvci5oCkBAIC0yMyw4ICsyMyw3IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCi0jaWZu
ZGVmIEZhc3RCaXRWZWN0b3JfaAotI2RlZmluZSBGYXN0Qml0VmVjdG9yX2gKKyNwcmFnbWEgb25j
ZQogCiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KQEAg
LTM2LDEyICszNSwxNCBAQCBjbGFzcyBQcmludFN0cmVhbTsKIAogY2xhc3MgRmFzdEJpdFZlY3Rv
ciB7CiBwdWJsaWM6Ci0gICAgRmFzdEJpdFZlY3RvcigpCi0gICAgICAgIDogbV9hcnJheSgwKQot
ICAgICAgICAsIG1fbnVtQml0cygwKQorICAgIEZhc3RCaXRWZWN0b3IoKSA9IGRlZmF1bHQ7CisK
KyAgICBGYXN0Qml0VmVjdG9yKEZhc3RCaXRWZWN0b3ImJiBvdGhlcikKKyAgICAgICAgOiBtX2Fy
cmF5KHN0ZDo6ZXhjaGFuZ2Uob3RoZXIubV9hcnJheSwgbnVsbHB0cikpCisgICAgICAgICwgbV9u
dW1CaXRzKHN0ZDo6ZXhjaGFuZ2Uob3RoZXIubV9udW1CaXRzLCAwKSkKICAgICB7CiAgICAgfQot
ICAgIAorCiAgICAgRmFzdEJpdFZlY3Rvcihjb25zdCBGYXN0Qml0VmVjdG9yJiBvdGhlcikKICAg
ICAgICAgOiBtX2FycmF5KDApCiAgICAgICAgICwgbV9udW1CaXRzKDApCkBAIC0yMDIsMTMgKzIw
MywxMCBAQCBjbGFzcyBGYXN0Qml0VmVjdG9yIHsKICAgICBzdGF0aWMgc2l6ZV90IGFycmF5TGVu
Z3RoKHNpemVfdCBudW1CaXRzKSB7IHJldHVybiAobnVtQml0cyArIDMxKSA+PiA1OyB9CiAgICAg
c2l6ZV90IGFycmF5TGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gYXJyYXlMZW5ndGgobV9udW1CaXRz
KTsgfQogICAgIAotICAgIHVpbnQzMl90KiBtX2FycmF5OyAvLyBObywgdGhpcyBjYW4ndCBiZSBh
biBzdGQ6OnVuaXF1ZV9wdHI8dWludDMyX3RbXT4uCi0gICAgc2l6ZV90IG1fbnVtQml0czsKKyAg
ICB1aW50MzJfdCogbV9hcnJheSB7IG51bGxwdHIgfTsgLy8gTm8sIHRoaXMgY2FuJ3QgYmUgYW4g
c3RkOjp1bmlxdWVfcHRyPHVpbnQzMl90W10+LgorICAgIHNpemVfdCBtX251bUJpdHMgeyAwIH07
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXVEYKIAogdXNpbmcgV1RGOjpGYXN0Qml0VmVjdG9yOwot
Ci0jZW5kaWYgLy8gRmFzdEJpdFZlY3Rvcl9oCi0KZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdl
TG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNjQxMDA4NzcxYTBiYjBlM2JmODE4ZTFjODVj
Y2ZlN2JjNDM4MDYxYi4uMmQwMzViNzMxMGQzOGMxOTE2YzUxYWYxNDQwMDQxZWIyZjA2NDE5NiAx
MDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwyOCBAQAorMjAxNi0wOC0yNSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdt
YWlsLmNvbT4KKworICAgICAgICBbREZHXVtGVExdIEltcGxlbWVudCBFUzYgR2VuZXJhdG9ycyBp
biBERkcgLyBGVEwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1MjcyMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLWFuZC1hcnJheS5qczogQWRkZWQuCisgICAg
ICAgIChmaWIpOgorICAgICAgICAqIHN0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQtb2JqZWN0
LmpzOiBBZGRlZC4KKyAgICAgICAgKGZpYik6CisgICAgICAgICogc3RyZXNzL2dlbmVyYXRvci1m
aWItZnRsLWFuZC1zdHJpbmcuanM6IEFkZGVkLgorICAgICAgICAoZmliKToKKyAgICAgICAgKiBz
dHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwuanM6IEFkZGVkLgorICAgICAgICAoZmliKToKKyAgICAg
ICAgKiBzdHJlc3MvZ2VuZXJhdG9yLWZyYW1lLWVtcHR5LmpzOiBBZGRlZC4KKyAgICAgICAgKHNo
b3VsZFRocm93KToKKyAgICAgICAgKHNob3VsZFRocm93LmZpYik6CisgICAgICAgICogc3RyZXNz
L2dlbmVyYXRvci1yZWR1Y2VkLXNhdmUtcG9pbnQtcHV0LXRvLXNjb3BlLmpzOiBBZGRlZC4KKyAg
ICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKGdlbik6CisgICAgICAgICogc3RyZXNzL2dlbmVy
YXRvci10cmFuc2Zlci1yZWdpc3Rlci1iZXlvbmQtbXV0aXBsZS15aWVsZHMuanM6IEFkZGVkLgor
ICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoZ2VuKToKKwogMjAxNi0wOC0yNCAgQmVuamFt
aW4gUG91bGFpbiAgPGJlbmphbWluQHdlYmtpdC5vcmc+CiAKICAgICAgICAgW0pTQ10gTWFrZSBG
Um91bmQgd29yayB3aXRoIGFueSB0eXBlCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9nZW5l
cmF0b3ItZmliLWZ0bC1hbmQtYXJyYXkuanMgYi9KU1Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmli
LWZ0bC1hbmQtYXJyYXkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmU5Mzk4MTJmZGJhZWM2YjgzMmJmZDAwZjIx
NTNkZWY4NGJiNzU5MgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2dlbmVyYXRv
ci1maWItZnRsLWFuZC1hcnJheS5qcwpAQCAtMCwwICsxLDIzIEBACisoZnVuY3Rpb24gKCkgewor
ICAgIGZ1bmN0aW9uICpmaWIoKQorICAgIHsKKyAgICAgICAgbGV0IGEgPSAxOworICAgICAgICBs
ZXQgYiA9IDE7CisgICAgICAgIGxldCBjID0gWyAwIF07CisgICAgICAgIHdoaWxlICh0cnVlKSB7
CisgICAgICAgICAgICBjWzBdID0gYTsKKyAgICAgICAgICAgIHlpZWxkIGM7CisgICAgICAgICAg
ICBbYSwgYl0gPSBbYiwgYSArIGJdOworICAgICAgICB9CisgICAgfQorCisgICAgbGV0IHZhbHVl
ID0gMDsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDFlNDsgKytpKSB7CisgICAgICAgIGxldCBm
ID0gZmliKCk7CisgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwOyArK2kpIHsKKyAgICAg
ICAgICAgIHZhbHVlID0gZi5uZXh0KCkudmFsdWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHZh
bHVlWzBdICE9PSAzNTQyMjQ4NDgxNzkyNjIwMDAwMDApCisgICAgICAgICAgICB0aHJvdyBuZXcg
RXJyb3IoYGJhZCB2YWx1ZToke3Jlc3VsdH1gKTsKKyAgICB9Cit9KCkpOwpkaWZmIC0tZ2l0IGEv
SlNUZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwtYW5kLW9iamVjdC5qcyBiL0pTVGVzdHMv
c3RyZXNzL2dlbmVyYXRvci1maWItZnRsLWFuZC1vYmplY3QuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjY3MzQw
ZjJlYTRjNzQzOGEyZDIwOWFhNDBkMDY3N2U0YWI3ZDNmYgotLS0gL2Rldi9udWxsCisrKyBiL0pT
VGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLWFuZC1vYmplY3QuanMKQEAgLTAsMCArMSwy
MyBAQAorKGZ1bmN0aW9uICgpIHsKKyAgICBmdW5jdGlvbiAqZmliKCkKKyAgICB7CisgICAgICAg
IGxldCBhID0gMTsKKyAgICAgICAgbGV0IGIgPSAxOworICAgICAgICBsZXQgYyA9IHsgZmliOiAw
IH07CisgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICBjLmZpYiA9IGE7CisgICAg
ICAgICAgICB5aWVsZCBjOworICAgICAgICAgICAgW2EsIGJdID0gW2IsIGEgKyBiXTsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIGxldCB2YWx1ZSA9IDA7CisgICAgZm9yIChsZXQgaSA9IDA7IGkg
PCAxZTQ7ICsraSkgeworICAgICAgICBsZXQgZiA9IGZpYigpOworICAgICAgICBmb3IgKGxldCBp
ID0gMDsgaSA8IDEwMDsgKytpKSB7CisgICAgICAgICAgICB2YWx1ZSA9IGYubmV4dCgpLnZhbHVl
OworICAgICAgICB9CisgICAgICAgIGlmICh2YWx1ZS5maWIgIT09IDM1NDIyNDg0ODE3OTI2MjAw
MDAwMCkKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIHZhbHVlOiR7cmVzdWx0fWAp
OworICAgIH0KK30oKSk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmli
LWZ0bC1hbmQtc3RyaW5nLmpzIGIvSlNUZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwtYW5k
LXN0cmluZy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MzhhZTZhYjMzNDcwNDY4MjI4NDlmNDMwMDRlYTVjNDAz
ZWVkYTI4Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1m
dGwtYW5kLXN0cmluZy5qcwpAQCAtMCwwICsxLDIyIEBACisoZnVuY3Rpb24gKCkgeworICAgIGZ1
bmN0aW9uICpmaWIoKQorICAgIHsKKyAgICAgICAgbGV0IGEgPSAxOworICAgICAgICBsZXQgYiA9
IDE7CisgICAgICAgIGxldCBjID0gIlJlc3VsdCEgIjsKKyAgICAgICAgd2hpbGUgKHRydWUpIHsK
KyAgICAgICAgICAgIHlpZWxkIGMgKyBhOworICAgICAgICAgICAgW2EsIGJdID0gW2IsIGEgKyBi
XTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGxldCB2YWx1ZSA9IDA7CisgICAgZm9yIChsZXQg
aSA9IDA7IGkgPCAxZTQ7ICsraSkgeworICAgICAgICBsZXQgZiA9IGZpYigpOworICAgICAgICBm
b3IgKGxldCBpID0gMDsgaSA8IDEwMDsgKytpKSB7CisgICAgICAgICAgICB2YWx1ZSA9IGYubmV4
dCgpLnZhbHVlOworICAgICAgICB9CisgICAgICAgIGlmICh2YWx1ZSAhPT0gYFJlc3VsdCEgMzU0
MjI0ODQ4MTc5MjYyMDAwMDAwYCkKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIHZh
bHVlOiR7cmVzdWx0fWApOworICAgIH0KK30oKSk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVz
cy9nZW5lcmF0b3ItZmliLWZ0bC5qcyBiL0pTVGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRs
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjM0MGUzM2RiYzg2OGJlYTdhODkzYzllYzE2Yjc3OWVjMjZiZGIxOWMK
LS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC5qcwpA
QCAtMCwwICsxLDIxIEBACisoZnVuY3Rpb24gKCkgeworICAgIGZ1bmN0aW9uICpmaWIoKQorICAg
IHsKKyAgICAgICAgbGV0IGEgPSAxOworICAgICAgICBsZXQgYiA9IDE7CisgICAgICAgIHdoaWxl
ICh0cnVlKSB7CisgICAgICAgICAgICB5aWVsZCBhOworICAgICAgICAgICAgW2EsIGJdID0gW2Is
IGEgKyBiXTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGxldCB2YWx1ZSA9IDA7CisgICAgZm9y
IChsZXQgaSA9IDA7IGkgPCAxZTQ7ICsraSkgeworICAgICAgICBsZXQgZiA9IGZpYigpOworICAg
ICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDsgKytpKSB7CisgICAgICAgICAgICB2YWx1ZSA9
IGYubmV4dCgpLnZhbHVlOworICAgICAgICB9CisgICAgICAgIGlmICh2YWx1ZSAhPT0gMzU0MjI0
ODQ4MTc5MjYyMDAwMDAwKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgdmFsdWU6
JHtyZXN1bHR9YCk7CisgICAgfQorfSgpKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2dl
bmVyYXRvci1mcmFtZS1lbXB0eS5qcyBiL0pTVGVzdHMvc3RyZXNzL2dlbmVyYXRvci1mcmFtZS1l
bXB0eS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi41OWU4ODU1YmZhYzNjNTZkZjkyNmFiZDQyOGMwMTNjMzM0MTYy
NzQ2Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZyYW1lLWVt
cHR5LmpzCkBAIC0wLDAgKzEsMzQgQEAKK2Z1bmN0aW9uIHNob3VsZFRocm93KGZ1bmMsIGVycm9y
TWVzc2FnZSkgeworICAgIHZhciBlcnJvclRocm93biA9IGZhbHNlOworICAgIHZhciBlcnJvciA9
IG51bGw7CisgICAgdHJ5IHsKKyAgICAgICAgZnVuYygpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAg
ICAgICAgZXJyb3JUaHJvd24gPSB0cnVlOworICAgICAgICBlcnJvciA9IGU7CisgICAgfQorICAg
IGlmICghZXJyb3JUaHJvd24pCisgICAgICAgIHRocm93IG5ldyBFcnJvcignbm90IHRocm93bicp
OworICAgIGlmIChTdHJpbmcoZXJyb3IpICE9PSBlcnJvck1lc3NhZ2UpCisgICAgICAgIHRocm93
IG5ldyBFcnJvcihgYmFkIGVycm9yOiAke1N0cmluZyhlcnJvcil9YCk7Cit9CisKK3Nob3VsZFRo
cm93KGZ1bmN0aW9uICgpIHsKKyAgICBmdW5jdGlvbiAqZmliKGZsYWcpCisgICAgeworICAgICAg
ICBsZXQgYSA9IDE7CisgICAgICAgIGxldCBiID0gMTsKKyAgICAgICAgeWllbGQgNDI7CisgICAg
ICAgIGlmIChmbGFnKQorICAgICAgICAgICAgcmV0dXJuIGM7CisgICAgICAgIGxldCBjID0gNTAw
OworICAgIH0KKworICAgIGxldCB2YWx1ZSA9IDA7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAx
ZTQ7ICsraSkgeworICAgICAgICBmb3IgKGxldCB2IG9mIGZpYihmYWxzZSkpIHsKKyAgICAgICAg
fQorICAgIH0KKyAgICBmb3IgKGxldCB2IG9mIGZpYih0cnVlKSkgeworICAgIH0KK30sIGBSZWZl
cmVuY2VFcnJvcjogQ2Fubm90IGFjY2VzcyB1bmluaXRpYWxpemVkIHZhcmlhYmxlLmApOwpkaWZm
IC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXJlZHVjZWQtc2F2ZS1wb2ludC1wdXQt
dG8tc2NvcGUuanMgYi9KU1Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItcmVkdWNlZC1zYXZlLXBvaW50
LXB1dC10by1zY29wZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMGM3NWZhNDkxNDNjMTdiZTE0ZjMyODFlM2Y2
NTQzNGYzNTEzOWU4Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvZ2VuZXJhdG9y
LXJlZHVjZWQtc2F2ZS1wb2ludC1wdXQtdG8tc2NvcGUuanMKQEAgLTAsMCArMSwyOCBAQAorZnVu
Y3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4
cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCB2YWx1ZTogJHtTdHJpbmcoYWN0
dWFsKX1gKTsKK30KKworZnVuY3Rpb24gZXJyb3IoKQoreworICAgIHRocm93ICJvayI7Cit9CisK
K2Z1bmN0aW9uKiBnZW4oKQoreworICAgIHZhciB2YWx1ZSA9IDQyOworICAgIHRyeSB7CisgICAg
ICAgIHlpZWxkIDMwMDsKKyAgICAgICAgdmFsdWUgPSA1MDA7CisgICAgICAgIGVycm9yKCk7Cisg
ICAgfSBjYXRjaCAoZSkgeworICAgICAgICB5aWVsZCA0MjsKKyAgICAgICAgcmV0dXJuIHZhbHVl
OworICAgIH0KKyAgICByZXR1cm4gMjAwOworfQorCit2YXIgZyA9IGdlbigpOworc2hvdWxkQmUo
Zy5uZXh0KCkudmFsdWUsIDMwMCk7CitzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgNDIpOworc2hv
dWxkQmUoZy5uZXh0KCkudmFsdWUsIDUwMCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9n
ZW5lcmF0b3ItdHJhbnNmZXItcmVnaXN0ZXItYmV5b25kLW11dGlwbGUteWllbGRzLmpzIGIvSlNU
ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXRyYW5zZmVyLXJlZ2lzdGVyLWJleW9uZC1tdXRpcGxlLXlp
ZWxkcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5mZTIwOGY1ODEyOTZmOWFlMDhhNmJmYjM5OGI0ODIyNTc0MmQ2
Yjc4Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXRyYW5zZmVy
LXJlZ2lzdGVyLWJleW9uZC1tdXRpcGxlLXlpZWxkcy5qcwpAQCAtMCwwICsxLDE4IEBACitmdW5j
dGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhw
ZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsK
K30KKworCitmdW5jdGlvbiAqZ2VuKCkKK3sKKyAgICB2YXIgdGVzdCA9IDQyOworICAgIHlpZWxk
IDMyOworICAgIHlpZWxkIDMzOworICAgIHlpZWxkIHRlc3Q7Cit9CisKK3ZhciBnID0gZ2VuKCk7
CitzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgMzIpOworc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUs
IDMzKTsKK3Nob3VsZEJlKGcubmV4dCgpLnZhbHVlLCA0Mik7Cg==
</data>
<flag name="review"
          id="310501"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>287035</attachid>
            <date>2016-08-25 15:51:01 -0700</date>
            <delta_ts>2016-08-25 15:52:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-152723-20160825154859.patch</filename>
            <type>text/plain</type>
            <size>219093</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA0OTkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
NDY4YmY3MTM2OTVjYjlkMmYwZGEyZGQ5YmY5Y2EzYTJkN2ZkNzVhLi41ZGI0MGZjOGQ3ZDQxNTFh
NDBmMDk0NjUxYzYxMDE1NmJiMTAwY2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MjUgQEAKKzIwMTYtMDgtMjUgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0RGR11bRlRMXSBJbXBsZW1lbnQgRVM2IEdlbmVyYXRvcnMgaW4g
REZHIC8gRlRMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNTI3MjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUaGlzIHBhdGNoIGludHJvZHVjZXMgREZHIGFuZCBGVEwgc3VwcG9ydCBmb3IgRVM2IGdlbmVy
YXRvcnMuCisgICAgICAgIEVTNiBnZW5lcmF0b3IgaXMgY29tcGlsZWQgYnkgdGhlIEJ5dGVjb2Rl
R2VuZXJhdG9yLiBCdXQgYXQgdGhlIGxhc3QgcGhhc2UsIEJ5dGVjb2RlR2VuZXJhdG9yIHBlcmZv
cm1zICJnZW5lcmF0b3JpZmljYXRpb24iIG9udG8gdGhlIHVubGlua2VkIGNvZGUuCisgICAgICAg
IEluIEJ5dGVjb2RlR2VuZXJhdG9yIHBoYXNlLCB3ZSBqdXN0IGVtaXQgb3BfeWllbGQgZm9yIGVh
Y2ggeWllbGQgcG9pbnQuIEFuZCB3ZSBkb24ndCBlbWl0IGFueSBnZW5lcmF0b3IgcmVsYXRlZCBz
d2l0Y2gsIHNhdmUsIGFuZCByZXN1bWUgc2VxdWVuY2VzCisgICAgICAgIGhlcmUuIFRob3NlIGFy
ZSBlbWl0dGVkIGJ5IHRoZSBnZW5lcmF0b3JpZmljYXRpb24gcGhhc2UuCisKKyAgICAgICAgU28g
dGhlIGdyYXBoIGlzIHN1cGVyIHNpbXBsZSEgQmVmb3JlIHRoZSBnZW5lcmF0b3JpZmljYXRpb24s
IHRoZSBncmFwaCBsb29rcyBsaWtlIHRoaXMuCisKKyAgICAgICAgICAgICBvcF9lbnRlciAtPiAu
Li4uLi4gLT4gb3BfeWllbGQgLT4gLi4uLi4gLT4gb3BfeWllbGQgLT4gLi4uCisKKyAgICAgICAg
Um91Z2hseSBzcGVha2luZywgaW4gdGhlIGdlbmVyYXRvcmlmaWNhdGlvbiBwaGFzZSwgd2UgdHVy
biBvdXQgd2hpY2ggdmFyaWFibGVzIHNob3VsZCBiZSBzYXZlZCBhbmQgcmVzdW1lZCBhdCBlYWNo
IG9wX3lpZWxkLgorICAgICAgICBUaGlzIGlzIGRvbmUgYnkgbGl2ZW5lc3MgYW5hbHlzaXMuIEFm
dGVyIHRoYXQsIHdlIGNvbnZlcnQgb3BfeWllbGQgdG8gdGhlIHNlcXVlbmNlIG9mICJvcF9wdXRf
dG9fc2NvcGUiLCAib3BfcmV0IiwgYW5kICJvcF9nZXRfZnJvbV9zY29wZSIuCisgICAgICAgIG9w
X3B1dF90b19zY29wZSBhbmQgb3BfZ2V0X2Zyb21fc2NvcGUgc2VxdWVuY2VzIGFyZSBjb3JyZXNw
b25kaW5nIHRvIHRoZSBzYXZlIGFuZCByZXN1bWUgc2VxdWVuY2VzLiBXZSBzZXQgdXAgdGhlIHNj
b3BlIGZvciB0aGUgZ2VuZXJhdG9yIGZyYW1lIGFuZAorICAgICAgICBwZXJmb3JtIG9wX3B1dF90
b19zY29wZSBhbmQgb3BfZ2V0X2Zyb21fc2NvcGUgb250byBpdC4gVGhlIGxpdmUgcmVnaXN0ZXJz
IGFyZSBzYXZlZCBhbmQgcmVzdW1lZCBvdmVyIHRoZSBnZW5lcmF0b3IncyBuZXh0KCkgY2FsbHMg
YnkgdXNpbmcgdGhpcworICAgICAgICBzcGVjaWFsIGdlbmVyYXRvciBmcmFtZSBzY29wZS4gQW5k
IHdlIGFsc28gc2V0IHVwIHRoZSBnbG9iYWwgc3dpdGNoIGZvciB0aGUgZ2VuZXJhdG9yLgorCisg
ICAgICAgIEluIHRoZSBnZW5lcmF0b3JpZmljYXRpb24gcGhhc2UsCisKKyAgICAgICAgMS4gV2Ug
Y29uc3RydWN0IHRoZSBCeXRlY29kZUdyYXBoIGZyb20gdGhlIHVubGlua2VkIGluc3RydWN0aW9u
cy4gVGhpcyBjb25zdHJ1Y3RzIHRoZSBiYXNpYyBibG9ja3MsIGFuZCBpdCBpcyB1c2VkIGluIHRo
ZSBzdWJzZXF1ZW50IGFuYWx5c2lzLgorICAgICAgICAyLiBXZSBwZXJmb3JtIHRoZSBhbmFseXNp
cyBvbnRvIHRoZSB1bmxpbmtlZCBjb2RlLiBXZSBleHRyYWN0IHRoZSBsaXZlIHZhcmlhYmxlcyBh
dCBlYWNoIG9wX3lpZWxkLgorICAgICAgICAzLiBXZSBpbnNlcnQgdGhlIGdldF9mcm9tX3Njb3Bl
IGFuZCBwdXRfdG9fc2NvcGUgYXQgZWFjaCBvcF95aWVsZC4gV2hpY2ggcmVnaXN0ZXJzIHNob3Vs
ZCBiZSBzYXZlZCBhbmQgcmVzdW1lZCBpcyBvZmZlcmVkIGJ5ICgyKS4KKyAgICAgICAgICAgVGhl
biwgY2xpcCB0aGUgb3BfeWllbGQgdGhlbXNlbHZlcy4gQW5kIHdlIGFsc28gaW5zZXJ0IHRoZSBz
d2l0Y2hfaW1tLiBUaGUganVtcCB0YXJnZXRzIG9mIHRoaXMgc3dpdGNoIGFyZSBqdXN0IGFmdGVy
IHRoaXMgb3Bfc3dpdGNoX2ltbSBhbmQgZWFjaCBvcF95aWVsZCBwb2ludC4KKworICAgICAgICBP
bmUgaW50ZXJlc3RpbmcgcG9pbnQgaXMgdGhlIHRyeS1yYW5nZS4gV2Ugc3BsaXQgdGhlIHRyeS1y
YW5nZSBhdCB0aGUgb3BfeWllbGQgcG9pbnQgaW4gQnl0ZWNvZGVHZW5lcmF0b3IgcGhhc2UuCisg
ICAgICAgIFRoaXMgZHJvcHMgdGhlIGhhY2t5IHRoaW5nIHRoYXQgaXMgaW50cm9kdWNlZCBpbiBb
MV0uCisgICAgICAgIElmIHRoZSB0cnktcmFuZ2UgY292ZXJzIHRoZSByZXN1bWUgc2VxdWVuY2Vz
LCB0aGUgZXhjZXB0aW9uIGhhbmRsZXIncyB1c2UtcmVnaXN0ZXJzIGFyZSBpbmNvcnJlY3RseSB0
cmFuc2ZlcnJlZCB0byB0aGUgZW50cnkgYmxvY2suCisgICAgICAgIEZvciBleGFtcGxlLAorCisg
ICAgICAgICAgICBoYW5kbGVyIHVzZXMgcjIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnktcmFuZ2UKKyAgICAgICAgICAgIGxh
YmVsOihlbnRyeSBibG9jayBjYW4ganVtcCBoZXJlKSAgICAgICAgICAgICAgICAgXgorICAgICAg
ICAgICAgICAgIHIxID0gZ2V0X2Zyb21fc2NvcGUgIyByZXN1bWUgc2VxdWVuY2Ugc3RhcnRzICB8
IHVzZSByMiBpcyB0cmFuc2ZlcnJlZCB0byB0aGUgZW50cnkgYmxvY2shCisgICAgICAgICAgICAg
ICAgcjIgPSBnZXRfZnJvbV9zY29wZSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAg
ICAgICAgICAgICBzdGFydHMgdXN1YWwgc2VxdWVuY2VzICAgICAgICAgICAgICAgICAgICAgICAg
fAorICAgICAgICAgICAgICAgIC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB8CisKKyAgICAgICAgSGFuZGxlcidzIHIyIHVzZSBzaG91bGQgYmUgY29uc2lkZXJl
ZCBhdCB0aGUgYHIxID0gZ2V0X2Zyb21fc2NvcGVgIHBvaW50LgorICAgICAgICBQcmV2aW91c2x5
LCB3ZSBoYW5kbGUgdGhpcyBlZGdlIGNhc2UgYnkgdHJlYXRpbmcgb3BfcmVzdW1lIHNwZWNpYWxs
eSBpbiB0aGUgbGl2ZW5lc3MgYW5hbHlzaXNbMV0uCisgICAgICAgIFRvIGRyb3AgdGhpcyB3b3Jr
YXJvdW5kLCB3ZSBzcGxpdCB0aGUgdHJ5LXJhbmdlIG5vdCB0byBjb3ZlciB0aGlzIHJlc3VtZSBz
ZXF1ZW5jZS4KKworICAgICAgICAgICAgaGFuZGxlciB1c2VzIHIyCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5LXJhbmdlCisg
ICAgICAgICAgICBsYWJlbDooZW50cnkgYmxvY2sgY2FuIGp1bXAgaGVyZSkKKyAgICAgICAgICAg
ICAgICByMSA9IGdldF9mcm9tX3Njb3BlICMgcmVzdW1lIHNlcXVlbmNlIHN0YXJ0cworICAgICAg
ICAgICAgICAgIHIyID0gZ2V0X2Zyb21fc2NvcGUKKyAgICAgICAgICAgICAgICBzdGFydHMgdXN1
YWwgc2VxdWVuY2VzICAgICAgICAgICAgICAgICAgICAgICAgXiB0cnktcmFuZ2Ugc2hvdWxkIHN0
YXJ0IGZyb20gaGVyZS4KKyAgICAgICAgICAgICAgICAuLi4gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfAorCisgICAgICAgIE9LLiBMZXQncyBzaG93IHRoZSBkZXRh
aWxlZCBleGFtcGxlLgorCisgICAgICAgICAgICAxLiBGaXJzdCwgdGhlcmUgaXMgdGhlIG5vcm1h
bCBieXRlY29kZSBzZXF1ZW5jZS4gSGVyZSwgfCByZXByZXNlbnRzIHRoZSBvZmZzZXRzLCBhbmQg
W10gcmVwcmVzZW50cyB0aGUgYnl0ZWNvZGVzLgorCisgICAgICAgICAgICAgICAgYnl0ZWNvZGVz
ICAgfCBbIF0gfCBbIF0gfCBbIF0gfCBbIF0gfCBbIF0gfCBbIF0gfAorICAgICAgICAgICAgICAg
IHRyeS1yYW5nZSAgIDwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT4KKworICAg
ICAgICAgICAgMi4gV2hlbiB3ZSBlbWl0IHRoZSBvcF95aWVsZCBpbiB0aGUgYnl0ZWNvZGUgZ2Vu
ZXJhdG9yLCB3ZSBjYXJlZnVsbHkgc3BsaXQgdGhlIHRyeS1yYW5nZS4KKworICAgICAgICAgICAg
ICAgIGJ5dGVjb2RlcyAgIHwgWyBdIHwgWyBdIHwgW29wX3lpZWxkXSB8IFsgXSB8IFsgXSB8IFsg
XSB8CisgICAgICAgICAgICAgICAgdHJ5LXJhbmdlICAgPC0tLS0tLS0tLS0tPiAgICAgICAgICAg
IDwtLS0tLS0tLS0tLS0tLS0tLT4KKworICAgICAgICAgICAgMy4gQW5kIGluIHRoZSBnZW5lcmF0
b3JpZmljYXRpb24gcGhhc2UsIHdlIGluc2VydCB0aGUgc3dpdGNoJ3MganVtcCB0YXJnZXQgYW5k
IHNhdmUgJiByZXN1bWUgc2VxdWVuY2VzLiBBbmQgd2UgYWxzbyBkcm9wIG9wX3lpZWxkLgorCisg
ICAgICAgICAgICAgICAgICAgICAgICBJbnNlcnQgc2F2ZSBzZXEgIEluc2VydCByZXN1bWUgc2Vx
CisgICAgICAgICAgICAgICAgICAgICAgICBiZWZvcmUgb3BfeWllbGQuIGFmdGVyIG9wX3lpZWxk
J3MgcG9pbnQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2IHYKKyAg
ICAgICAgICAgICAgICBieXRlY29kZXMgICB8IFsgXSB8IFsgXSB8IFtvcF95aWVsZF0gfCBbIF0g
fCBbIF0gfCBbIF0gfAorICAgICAgICAgICAgICAgIHRyeS1yYW5nZSAgIDwtLS0tLS0tLS0tLT4g
ICAgIF4gICAgICA8LS0tLS0tLS0tLS0tLS0tLS0+CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXiAgICAgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBKdW1w
IHRvIGhlcmUuICAgIERyb3AgdGhpcyBvcF95aWVsZC4KKworICAgICAgICAgICAgNC4gVGhlIGZp
bmFsIGxheW91dCBpcyB0aGUgZm9sbG93aW5nLgorCisgICAgICAgICAgICAgICAgYnl0ZWNvZGVz
ICAgfCBbIF0gfCBbIF1bc2F2ZSBzZXFdW29wX3JldF0gfCBbcmVzdW1lIHNlcV0gfCBbIF0gfCBb
IF0gfCBbIF0gfAorICAgICAgICAgICAgICAgIHRyeS1yYW5nZSAgIDwtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLT4gICAgICAgICAgICAgICA8LS0tLS0tLS0tLS0tLS0tLT4KKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSnVtcCB0byBoZXJlLgor
CisgICAgICAgIFRoZSByZXdyaXRpbmcgZG9uZSBieSB0aGUgQnl0ZWNvZGVSZXdyaXRlciBpcyBl
eGVjdXRlZCBpbiBhIGJhdGNoIG1hbm5lci4gU2luY2UgdGhlc2UgbW9kaWZpY2F0aW9uIGNoYW5n
ZXMgdGhlIGJhc2ljIGJsb2NrcyBhbmQgc2l6ZSBvZiB1bmxpbmtlZCBpbnN0cnVjdGlvbnMsCisg
ICAgICAgIEJ5dGVjb2RlUmV3cml0ZXIgYWxzbyBwZXJmb3JtcyB0aGUgb2Zmc2V0IGFkanVzdG1l
bnQgZm9yIFVubGlua2VkQ29kZUJsb2NrLiBTbywgdGhpcyByZXdyaXRpbmcgaXMgcGVyZm9ybWVk
IG9udG8gdGhlIEJ5dGVjb2RlR3JhcGggcmF0aGVyIHRoYW4gQnl0ZWNvZGVCYXNpY0Jsb2NrLgor
ICAgICAgICBUaGUgcmVhc29uIHdoeSB3ZSB0YWtlIHRoaXMgZGVzaWduIGlzIHNpbXBsZTogd2Ug
ZG9uJ3Qgd2FudCB0byBuZXdseSBjcmVhdGUgdGhlIGJhc2ljIGJsb2NrcyBhbmQgb3Bjb2RlcyBm
b3IgdGhpcyBlYXJseSBwaGFzZSBsaWtlIERGRy4gSW5zdGVhZCwgd2UgcGVyZm9ybSB0aGUKKyAg
ICAgICAgbW9kaWZpY2F0aW9uIGFuZCBhZGp1c3RtZW50IHRvIHRoZSB1bmxpbmtlZCBpbnN0cnVj
dGlvbnMgYW5kIFVubGlua2VkQ29kZUJsb2NrIGluIGEgaW4tcGxhY2UgbWFubmVyLgorCisgICAg
ICAgIEJ5dGVjb2RlIHJld3JpdGluZyBmdW5jdGlvbmFsaXR5IGlzIG9mZmVyZWQgYnkgQnl0ZWNv
ZGVSZXdyaXRlci4gQnl0ZWNvZGVSZXdyaXRlciBhbGxvd3MgdXMgdG8gaW5zZXJ0IGFueSBieXRl
Y29kZXMgdG8gYW55IHBsYWNlcworICAgICAgICBpbiBhIGluLXBsYWNlIG1hbm5lci4gQnl0ZWNv
ZGVSZXdyaXRlciBoYW5kbGVzIHRoZSBvcmlnaW5hbCBieXRlY29kZSBvZmZzZXRzIGFzIGxhYmVs
cy4gQW5kIHlvdSBjYW4gaW5zZXJ0IGJ5dGVjb2RlcyBiZWZvcmUgYW5kIGFmdGVyCisgICAgICAg
IHRoZXNlIGxhYmVscy4gWW91IGNhbiBhbHNvIGluc2VydCBhbnkganVtcHMgdG8gYW55IHBsYWNl
cy4gV2hlbiB5b3UgaW5zZXJ0IGp1bXBzLCB5b3UgbmVlZCB0byBzcGVjaWZ5IGp1bXAgdGFyZ2V0
IHdpdGggdGhpcyBsYWJlbHMuCisgICAgICAgIFRoZXNlIGxhYmVscyAob3JpZ2luYWwgYnl0ZWNv
ZGUgb2Zmc2V0cykgYXJlIGF1dG9tYXRpY2FsbHkgY29udmVydGVkIHRvIHRoZSBhcHByb3ByaWF0
ZSBvZmZzZXRzIGJ5IEJ5dGVjb2RlUmV3cml0ZXIuCisKKyAgICAgICAgQWZ0ZXIgdGhhdCBwaGFz
ZSwgdGhlIGRhdGEgZmxvdyBvZiB0aGUgZ2VuZXJhdG9yLXNhdmVkLWFuZC1yZXN1bWVkLXJlZ2lz
dGVycyBhcmUgZXhwbGljaXRseSByZXByZXNlbnRlZCBieSB0aGUgZ2V0X2Zyb21fc2NvcGUgYW5k
IHB1dF90b19zY29wZS4KKyAgICAgICAgQW5kIHRoZSBzd2l0Y2ggaXMgaW5zZXJ0ZWQgdG8gcmVw
cmVzZW50IHRoZSBhY3R1YWwgY29udHJvbCBmbG93IGZvciB0aGUgZ2VuZXJhdG9yLiBBbmQgb3Bf
eWllbGQgaXMgcmVtb3ZlZC4gU2luY2Ugd2UgdXNlIHRoZSBleGlzdGluZyBieXRlY29kZXMgKG9w
X3N3aXRjaF9pbW0sIG9wX3B1dF90b19zY29wZQorICAgICAgICBvcF9yZXQsIGFuZCBvcF9nZXRf
ZnJvbV9zY29wZSksIERGRyBhbmQgRlRMIGNoYW5nZXMgYXJlIG5vdCBuZWNlc3NhcnkuIFRoaXMg
cGF0Y2ggYWxzbyBkcm9wcyBkYXRhIHN0cnVjdHVyZXMgYW5kIGltcGxlbWVudGF0aW9ucyBmb3Ig
dGhlIG9sZCBnZW5lcmF0b3IsCisgICAgICAgIG9wX3Jlc3VtZSwgb3Bfc2F2ZSBpbXBsZW1lbnRh
dGlvbnMgYW5kIEdlbmVyYXRvckZyYW1lLgorCisgICAgICAgIE5vdGUgdGhhdCB0aGlzIHBhdGNo
IGRvZXMgbm90IGxldmVyYWdlIHRoZSByZWNlbnQgbXVsdGkgZW50cnlwb2ludHMgc3VwcG9ydCBp
biBCMy4gQWZ0ZXIgdGhpcyBwYXRjaCBpcyBpbnRyb2R1Y2VkLCB3ZSB3aWxsIHN1Ym1pdCBhIG5l
dyBwYXRjaCB0aGF0IGxldmVyYWdlcyB0aGUgbXVsdGkKKyAgICAgICAgZW50cnlwb2ludHMgZm9y
IGdlbmVyYXRvcidzIHJlc3VtZSBhbmQgc2VlcyB0aGUgcGVyZm9ybWFuY2UgZ2Fpbi4KKworICAg
ICAgICBNaWNyb2JlbmNobWFya3MgcmVsYXRlZCB0byBnZW5lcmF0b3JzIHNob3cgdXAgdG8gMi45
eCBpbXByb3ZlbWVudHMuCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgQmFzZWxpbmUgICAgICAgICAgICAgICAgICBQYXRjaGVkCisKKyAg
ICAgICAgICAgIGdlbmVyYXRvci1maWIgICAgICAgICAgICAgICAgICAgICAgICAgIDEwMi4wMTE2
Ky0zLjI4ODAgICAgIF4gICAgIDM0Ljk2NzArLTAuMjIyMSAgICAgICAgXiBkZWZpbml0ZWx5IDIu
OTE3NHggZmFzdGVyCisgICAgICAgICAgICBnZW5lcmF0b3Itc3Vuc3BpZGVyLWFjY2Vzcy1uc2ll
dmUgICAgICAgIDUuODU5NistMC4wMzcxICAgICBeICAgICAgNC45MDUxKy0wLjA3MjAgICAgICAg
IF4gZGVmaW5pdGVseSAxLjE5NDZ4IGZhc3RlcgorICAgICAgICAgICAgZ2VuZXJhdG9yLXdpdGgt
c2V2ZXJhbC10eXBlcyAgICAgICAgICAgMzMyLjE0NzgrLTQuMjQyNSAgICAgXiAgICAxMjQuNjY0
MistMi40ODI2ICAgICAgICBeIGRlZmluaXRlbHkgMi42NjQzeCBmYXN0ZXIKKworICAgICAgICAg
ICAgPGdlb21ldHJpYz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDU4LjI5OTgrLTAuNzc1
OCAgICAgXiAgICAgMjcuNzQyNSstMC4yNTc3ICAgICAgICBeIGRlZmluaXRlbHkgMi4xMDE1eCBm
YXN0ZXIKKworICAgICAgICBJbiBFUzZTYW1wbGVCZW5jaCdzIEJhc2ljLCB3ZSBjYW4gb2JzZXJ2
ZSA0MSUgaW1wcm92ZW1lbnQgKE1hY2Jvb2sgUHJvKS4KKworICAgICAgICAgICAgQmFzZWxpbmU6
CisgICAgICAgICAgICAgICAgR2VvbWV0cmljIE1lYW4gUmVzdWx0OiAxMzMuNTUgbXMgKy0gNC40
OSBtcworCisgICAgICAgICAgICAgICAgQmVuY2htYXJrICAgIEZpcnN0IEl0ZXJhdGlvbiAgICAg
ICAgV29yc3QgMiUgICAgICAgICAgICAgICBTdGVhZHkgU3RhdGUKKyAgICAgICAgICAgICAgICBB
aXIgICAgICAgICAgNTQuMDMgbXMgKy0gNy41MSBtcyAgICAyOS4wNiBtcyArLSAzLjEzIG1zICAg
IDIyNzYuNTkgbXMgKy0gNjEuMTcgbXMKKyAgICAgICAgICAgICAgICBCYXNpYyAgICAgICAgMzAu
MTggbXMgKy0gMS44NiBtcyAgICAxOC44NSBtcyArLSAwLjQ1IG1zICAgIDI4NTEuMTYgbXMgKy0g
NDEuODcgbXMKKworICAgICAgICAgICAgUGF0Y2hlZDoKKyAgICAgICAgICAgICAgICBHZW9tZXRy
aWMgTWVhbiBSZXN1bHQ6IDEyMS43OCBtcyArLSAzLjk2IG1zCisKKyAgICAgICAgICAgICAgICBC
ZW5jaG1hcmsgICAgRmlyc3QgSXRlcmF0aW9uICAgICAgICBXb3JzdCAyJSAgICAgICAgICAgICAg
IFN0ZWFkeSBTdGF0ZQorICAgICAgICAgICAgICAgIEFpciAgICAgICAgICA1Mi4wOSBtcyArLSA2
Ljg5IG1zICAgIDI5LjU5IG1zICstIDMuMTYgbXMgICAgMjIzOS45MCBtcyArLSA1NC42MCBtcwor
ICAgICAgICAgICAgICAgIEJhc2ljICAgICAgICAyOS4yOCBtcyArLSAxLjQ2IG1zICAgIDE2LjI2
IG1zICstIDAuNjYgbXMgICAgMjAyNS4xNSBtcyArLSAzOC41NiBtcworCisgICAgICAgIFsxXTog
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1OTI4MQorCisgICAgICAg
ICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBidWlsdGlucy9HZW5lcmF0b3JQcm90b3R5cGUuanM6
CisgICAgICAgIChnbG9iYWxQcml2YXRlLmdlbmVyYXRvclJlc3VtZSk6CisgICAgICAgICogYnl0
ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVCYXNp
Y0Jsb2NrOjpjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2Nrc0ludGVybmFsKToKKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVCYXNpY0Jsb2NrOjpjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2Nrcyk6CisgICAg
ICAgIChKU0M6OmlzQnJhbmNoKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6aXNVbmNvbmRpdGlv
bmFsQnJhbmNoKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6aXNUZXJtaW5hbCk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OmlzVGhyb3cpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpsaW5rQmxv
Y2tzKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Y29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3Mp
OiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5oOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUJhc2ljQmxvY2s6OmJ5dGVjb2RlT2Zmc2V0cyk6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlQmFzaWNCbG9jazo6c3VjY2Vzc29ycyk6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlQmFzaWNCbG9jazo6aW5kZXgpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUJhc2ljQmxv
Y2s6OmFkZFN1Y2Nlc3Nvcik6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3Jp
ZmljYXRpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3JpZmlj
YXRpb246OkJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNv
ZGVHZW5lcmF0b3JpZmljYXRpb246OmdyYXBoKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5l
cmF0b3JpZmljYXRpb246OnlpZWxkcyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9y
aWZpY2F0aW9uOjplbnRlclBvaW50KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3Jp
ZmljYXRpb246OnN0b3JhZ2VGb3JHZW5lcmF0b3JMb2NhbCk6CisgICAgICAgIChKU0M6OkdlbmVy
YXRvckxpdmVuZXNzQW5hbHlzaXM6OkdlbmVyYXRvckxpdmVuZXNzQW5hbHlzaXMpOgorICAgICAg
ICAoSlNDOjpHZW5lcmF0b3JMaXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlRGVmc0ZvckJ5dGVjb2Rl
T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yTGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0
ZVVzZXNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckxpdmVuZXNz
QW5hbHlzaXM6OnJ1bik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9u
OjpydW4pOgorICAgICAgICAoSlNDOjpwZXJmb3JtR2VuZXJhdG9yaWZpY2F0aW9uKToKKyAgICAg
ICAgKiBieXRlY29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5oOiBDb3BpZWQgZnJvbSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzSW5s
aW5lcy5oLgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlR3JhcGguaDogQWRkZWQuCisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR3JhcGg6OmNvZGVCbG9jayk6CisgICAgICAgIChKU0M6OkJ5dGVj
b2RlR3JhcGg6Omluc3RydWN0aW9ucyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR3JhcGg6OmJh
c2ljQmxvY2tzSW5SZXZlcnNlT3JkZXIpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdyYXBoOjpi
bG9ja0NvbnRhaW5zQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdyYXBo
OjpmaW5kQmFzaWNCbG9ja0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNv
ZGVHcmFwaDo6ZmluZEJhc2ljQmxvY2tXaXRoTGVhZGVyT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHcmFwaDo6c2l6ZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR3JhcGg6OmF0KToK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHcmFwaDo6b3BlcmF0b3JbXSk6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlR3JhcGg6OmJlZ2luKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHcmFwaDo6ZW5k
KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHcmFwaDo6Zmlyc3QpOgorICAgICAgICAoSlNDOjpC
eXRlY29kZUdyYXBoOjpsYXN0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHcmFwaDxCbG9jaz46
OkJ5dGVjb2RlR3JhcGgpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uOgor
ICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHA6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lz
KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlRGVmc0Zv
ckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lz
Ojpjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVM
aXZlbmVzc0FuYWx5c2lzOjpnZXRMaXZlbmVzc0luZm9BdEJ5dGVjb2RlT2Zmc2V0KToKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlRnVsbExpdmVuZXNzKToK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlS2lsbHMpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmR1bXBSZXN1bHRzKToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlKToKKyAgICAgICAg
KEpTQzo6aXNWYWxpZFJlZ2lzdGVyRm9yTGl2ZW5lc3MpOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpnZXRMZWFkZXJPZmZzZXRGb3JCYXNpY0Jsb2NrKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
ZmluZEJhc2ljQmxvY2tXaXRoTGVhZGVyT2Zmc2V0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
YmxvY2tDb250YWluc0J5dGVjb2RlT2Zmc2V0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Zmlu
ZEJhc2ljQmxvY2tGb3JCeXRlY29kZU9mZnNldCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OnN0
ZXBPdmVySW5zdHJ1Y3Rpb24pOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpjb21wdXRlTG9jYWxM
aXZlbmVzc0ZvckJ5dGVjb2RlT2Zmc2V0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Y29tcHV0
ZUxvY2FsTGl2ZW5lc3NGb3JCbG9jayk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
TGl2ZW5lc3NBbmFseXNpczo6cnVuTGl2ZW5lc3NGaXhwb2ludCk6IERlbGV0ZWQuCisgICAgICAg
ICogYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmg6CisgICAgICAgICogYnl0ZWNv
ZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzSW5saW5lcy5oOgorICAgICAgICAoSlNDOjppc1Zh
bGlkUmVnaXN0ZXJGb3JMaXZlbmVzcyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlTGl2ZW5lc3NQ
cm9wYWdhdGlvbjxEZXJpdmVkQW5hbHlzaXM+OjpzdGVwT3Zlckluc3RydWN0aW9uKToKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0aW9uPERlcml2ZWRBbmFseXNpcz46OmNv
bXB1dGVMb2NhbExpdmVuZXNzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpCeXRl
Y29kZUxpdmVuZXNzUHJvcGFnYXRpb248RGVyaXZlZEFuYWx5c2lzPjo6Y29tcHV0ZUxvY2FsTGl2
ZW5lc3NGb3JCbG9jayk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlTGl2ZW5lc3NQcm9wYWdhdGlv
bjxEZXJpdmVkQW5hbHlzaXM+OjpnZXRMaXZlbmVzc0luZm9BdEJ5dGVjb2RlT2Zmc2V0KToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0aW9uPERlcml2ZWRBbmFseXNpcz46
OnJ1bkxpdmVuZXNzRml4cG9pbnQpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlUmV3cml0
ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVSZXdyaXRlcjo6YXBwbHlNb2Rp
ZmljYXRpb24pOgorICAgICAgICAoSlNDOjpCeXRlY29kZVJld3JpdGVyOjpleGVjdXRlKToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVSZXdyaXRlcjo6YWRqdXN0SnVtcFRhcmdldHNJbkZyYWdtZW50
KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVSZXdyaXRlcjo6aW5zZXJ0SW1wbCk6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlUmV3cml0ZXI6OmFkanVzdEp1bXBUYXJnZXQpOgorICAgICAgICAqIGJ5
dGVjb2RlL0J5dGVjb2RlUmV3cml0ZXIuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
UmV3cml0ZXI6Okluc2VydGlvblBvaW50OjpJbnNlcnRpb25Qb2ludCk6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlUmV3cml0ZXI6Okluc2VydGlvblBvaW50OjpvcGVyYXRvcjwpOgorICAgICAgICAo
SlNDOjpCeXRlY29kZVJld3JpdGVyOjpJbnNlcnRpb25Qb2ludDo6b3BlcmF0b3I9PSk6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlUmV3cml0ZXI6Okluc2VydGlvbjo6bGVuZ3RoKToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVSZXdyaXRlcjo6RnJhZ21lbnQ6OkZyYWdtZW50KToKKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVSZXdyaXRlcjo6RnJhZ21lbnQ6OmFwcGVuZEluc3RydWN0aW9uKToKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVSZXdyaXRlcjo6Qnl0ZWNvZGVSZXdyaXRlcik6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlUmV3cml0ZXI6Omluc2VydEZyYWdtZW50QmVmb3JlKToKKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVSZXdyaXRlcjo6aW5zZXJ0RnJhZ21lbnRBZnRlcik6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlUmV3cml0ZXI6OnJlbW92ZUJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNv
ZGVSZXdyaXRlcjo6Z3JhcGgpOgorICAgICAgICAoSlNDOjpCeXRlY29kZVJld3JpdGVyOjphZGp1
c3RBYnNvbHV0ZU9mZnNldCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlUmV3cml0ZXI6OmFkanVz
dEp1bXBUYXJnZXQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZVJld3JpdGVyOjpjYWxjdWxhdGVE
aWZmZXJlbmNlKToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZVVzZURlZi5oOgorICAgICAg
ICAoSlNDOjpjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Y29t
cHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2Nr
LmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUpOgorICAgICAgICAo
SlNDOjpDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
OjpoYW5kbGVyRm9ySW5kZXgpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnNocmlua1RvRml0
KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjp2YWx1ZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNl
dCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bGl2ZW5lc3NBbmFseXNpc1Nsb3cpOgorICAg
ICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Omlz
Q29uc3RhbnRSZWdpc3RlckluZGV4KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpsaXZlbmVz
c0FuYWx5c2lzKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpsaXZlQ2FsbGVlTG9jYWxzQXRZ
aWVsZCk6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUvSGFuZGxlckluZm8uaDoKKyAgICAg
ICAgKEpTQzo6SGFuZGxlckluZm9CYXNlOjpoYW5kbGVyRm9ySW5kZXgpOgorICAgICAgICAqIGJ5
dGVjb2RlL09wY29kZS5oOgorICAgICAgICAoSlNDOjppc0JyYW5jaCk6CisgICAgICAgIChKU0M6
OmlzVW5jb25kaXRpb25hbEJyYW5jaCk6CisgICAgICAgIChKU0M6OmlzVGVybWluYWwpOgorICAg
ICAgICAoSlNDOjppc1Rocm93KToKKyAgICAgICAgKiBieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdl
dHMuY3BwOgorICAgICAgICAoSlNDOjpnZXRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KToK
KyAgICAgICAgKEpTQzo6Y29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0c0ludGVybmFsKToKKyAgICAg
ICAgKEpTQzo6Y29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyk6CisgICAgICAgIChKU0M6OnJlY29t
cHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyk6CisgICAgICAgIChKU0M6OmZpbmRKdW1wVGFyZ2V0c0Zv
ckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKiBieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHMu
aDoKKyAgICAgICAgKiBieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHNJbmxpbmVzLmg6IEFkZGVk
LgorICAgICAgICAoSlNDOjpleHRyYWN0U3RvcmVkSnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNl
dCk6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwOgorICAgICAgICAo
SlNDOjpVbmxpbmtlZENvZGVCbG9jazo6aGFuZGxlckZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAg
ICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OmhhbmRsZXJGb3JJbmRleCk6CisgICAgICAgIChK
U0M6OlVubGlua2VkQ29kZUJsb2NrOjphcHBseU1vZGlmaWNhdGlvbik6CisgICAgICAgICogYnl0
ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRTdHJpbmdK
dW1wVGFibGU6Om9mZnNldEZvclZhbHVlKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxv
Y2s6Om51bUNhbGxlZUxvY2Fscyk6CisgICAgICAgICogYnl0ZWNvZGUvVmlydHVhbFJlZ2lzdGVy
Lmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKToKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXRDb21wbGV4UG9wU2NvcGVzKToKKyAgICAgICAgKEpTQzo6cHJlcGFy
ZUp1bXBUYWJsZUZvclN0cmluZ1N3aXRjaCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0WWllbGRQb2ludCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0U2F2ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
UmVzdW1lKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRH
ZW5lcmF0b3JTdGF0ZUxhYmVsKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5l
cmF0b3I6OmJlZ2luR2VuZXJhdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVH
ZW5lcmF0b3I6OmVuZEdlbmVyYXRvcik6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpn
ZW5lcmF0b3JTdGF0ZVJlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6
OmdlbmVyYXRvclZhbHVlUmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRv
cjo6Z2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVH
ZW5lcmF0b3I6OmdlbmVyYXRvckZyYW1lUmVnaXN0ZXIpOgorICAgICAgICAqIGJ5dGVjb21waWxl
ci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpGdW5jdGlvbk5vZGU6OmVtaXRCeXRl
Y29kZSk6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGludGVy
cHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpTQzo6ZmluZEV4Y2VwdGlvbkhhbmRs
ZXIpOgorICAgICAgICAoSlNDOjpHZXRDYXRjaEhhbmRsZXJGdW5jdG9yOjpvcGVyYXRvcigpKToK
KyAgICAgICAgKEpTQzo6VW53aW5kRnVuY3Rvcjo6b3BlcmF0b3IoKSk6CisgICAgICAgICogaW50
ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaDoKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRl
cklubGluZXMuaDogQ29waWVkIGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1By
ZWNpc2VKdW1wVGFyZ2V0cy5oLgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6Z2V0T3Bjb2Rl
SUQpOgorICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVD
b21waWxlTWFpblBhc3MpOgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKiBqaXQvSklU
T3Bjb2Rlcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9zYXZlKTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3Jlc3VtZSk6IERlbGV0ZWQuCisgICAgICAgICog
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc206CisgICAgICAgICogcGFyc2VyL1BhcnNlci5j
cHA6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUlubmVyKToKKyAgICAg
ICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlR2VuZXJhdG9yRnVuY3Rpb25Tb3VyY2VF
bGVtZW50cyk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpjcmVhdGVHZW5lcmF0
b3JQYXJhbWV0ZXJzKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmg6CisgICAgICAgICogcnVu
dGltZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpTTE9XX1BBVEhfREVDTCk6
IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuaDoKKyAgICAgICAg
KiBydW50aW1lL0dlbmVyYXRvckZyYW1lLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKEpTQzo6R2Vu
ZXJhdG9yRnJhbWU6OkdlbmVyYXRvckZyYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6R2Vu
ZXJhdG9yRnJhbWU6OmZpbmlzaENyZWF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6R2Vu
ZXJhdG9yRnJhbWU6OmNyZWF0ZVN0cnVjdHVyZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Okdl
bmVyYXRvckZyYW1lOjpjcmVhdGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JG
cmFtZTo6c2F2ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpyZXN1
bWUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6dmlzaXRDaGlsZHJl
bik6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9HZW5lcmF0b3JGcmFtZS5oOiBSZW1vdmVk
LgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6bG9jYWxzKTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OmxvY2FsQXQpOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpHZW5lcmF0b3JGcmFtZTo6b2Zmc2V0T2ZMb2NhbHMpOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpHZW5lcmF0b3JGcmFtZTo6YWxsb2NhdGlvblNpemVGb3JMb2NhbHMpOiBEZWxldGVkLgorICAg
ICAgICAqIHJ1bnRpbWUvSlNHZW5lcmF0b3JGdW5jdGlvbi5oOgorICAgICAgICAqIHJ1bnRpbWUv
Vk0uY3BwOgorICAgICAgICAoSlNDOjpWTTo6Vk0pOgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoK
KworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYnVpbHRpbnMvR2VuZXJhdG9yUHJv
dG90eXBlLmpzOgorICAgICAgICAoZ2xvYmFsUHJpdmF0ZS5nZW5lcmF0b3JSZXN1bWUpOgorICAg
ICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlQmFzaWNCbG9jazo6c2hyaW5rVG9GaXQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUJh
c2ljQmxvY2s6OmNvbXB1dGVJbXBsKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVCYXNpY0Jsb2Nr
Ojpjb21wdXRlKToKKyAgICAgICAgKEpTQzo6aXNCcmFuY2gpOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjppc1VuY29uZGl0aW9uYWxCcmFuY2gpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjppc1Rl
cm1pbmFsKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6aXNUaHJvdyk6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OmxpbmtCbG9ja3MpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpjb21wdXRlQnl0
ZWNvZGVCYXNpY0Jsb2Nrcyk6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVC
YXNpY0Jsb2NrLmg6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlQmFzaWNCbG9jazo6aXNFbnRyeUJs
b2NrKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVCYXNpY0Jsb2NrOjppc0V4aXRCbG9jayk6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlQmFzaWNCbG9jazo6bGVhZGVyT2Zmc2V0KToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVCYXNpY0Jsb2NrOjp0b3RhbExlbmd0aCk6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlQmFzaWNCbG9jazo6b2Zmc2V0cyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlQmFzaWNC
bG9jazo6c3VjY2Vzc29ycyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlQmFzaWNCbG9jazo6aW5k
ZXgpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUJhc2ljQmxvY2s6OmFkZFN1Y2Nlc3Nvcik6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlQmFzaWNCbG9jazo6Qnl0ZWNvZGVCYXNpY0Jsb2NrKToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVCYXNpY0Jsb2NrOjphZGRMZW5ndGgpOgorICAgICAgICAoSlND
OjpCeXRlY29kZUJhc2ljQmxvY2s6OmxlYWRlckJ5dGVjb2RlT2Zmc2V0KTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVCYXNpY0Jsb2NrOjp0b3RhbEJ5dGVjb2RlTGVuZ3RoKTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVCYXNpY0Jsb2NrOjpieXRlY29kZU9mZnNldHMp
OiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCeXRlY29kZUJhc2ljQmxvY2s6OmFkZEJ5dGVjb2Rl
TGVuZ3RoKTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUdlbmVyYXRvcmlm
aWNhdGlvbi5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcmlmaWNh
dGlvbjo6Qnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24pOgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUdlbmVyYXRvcmlmaWNhdGlvbjo6Z3JhcGgpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVy
YXRvcmlmaWNhdGlvbjo6eWllbGRzKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3Jp
ZmljYXRpb246OmVudGVyUG9pbnQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcmlm
aWNhdGlvbjo6c3RvcmFnZUZvckdlbmVyYXRvckxvY2FsKToKKyAgICAgICAgKEpTQzo6R2VuZXJh
dG9yTGl2ZW5lc3NBbmFseXNpczo6R2VuZXJhdG9yTGl2ZW5lc3NBbmFseXNpcyk6CisgICAgICAg
IChKU0M6OkdlbmVyYXRvckxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVP
ZmZzZXQpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JMaXZlbmVzc0FuYWx5c2lzOjpjb21wdXRl
VXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yTGl2ZW5lc3NB
bmFseXNpczo6cnVuKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb246
OnJ1bik6CisgICAgICAgIChKU0M6OnBlcmZvcm1HZW5lcmF0b3JpZmljYXRpb24pOgorICAgICAg
ICAqIGJ5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmg6IENvcGllZCBmcm9tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNJbmxp
bmVzLmguCisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVHcmFwaC5oOiBBZGRlZC4KKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVHcmFwaDo6Y29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNv
ZGVHcmFwaDo6aW5zdHJ1Y3Rpb25zKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHcmFwaDo6YmFz
aWNCbG9ja3NJblJldmVyc2VPcmRlcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR3JhcGg6OmJs
b2NrQ29udGFpbnNCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR3JhcGg6
OmZpbmRCYXNpY0Jsb2NrRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUdyYXBoOjpmaW5kQmFzaWNCbG9ja1dpdGhMZWFkZXJPZmZzZXQpOgorICAgICAgICAoSlNDOjpC
eXRlY29kZUdyYXBoOjpzaXplKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHcmFwaDo6YXQpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdyYXBoOjpvcGVyYXRvcltdKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHcmFwaDo6YmVnaW4pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdyYXBoOjplbmQp
OgorICAgICAgICAoSlNDOjpCeXRlY29kZUdyYXBoOjpmaXJzdCk6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlR3JhcGg6Omxhc3QpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdyYXBoPEJsb2NrPjo6
Qnl0ZWNvZGVHcmFwaCk6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb246Cisg
ICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmNwcDoKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMp
OgorICAgICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGVEZWZzRm9y
Qnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6
OmNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUxp
dmVuZXNzQW5hbHlzaXM6OmdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQpOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGVGdWxsTGl2ZW5lc3MpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGVLaWxscyk6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6ZHVtcFJlc3VsdHMpOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGUpOgorICAgICAgICAo
SlNDOjppc1ZhbGlkUmVnaXN0ZXJGb3JMaXZlbmVzcyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
OmdldExlYWRlck9mZnNldEZvckJhc2ljQmxvY2spOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpm
aW5kQmFzaWNCbG9ja1dpdGhMZWFkZXJPZmZzZXQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpi
bG9ja0NvbnRhaW5zQnl0ZWNvZGVPZmZzZXQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpmaW5k
QmFzaWNCbG9ja0ZvckJ5dGVjb2RlT2Zmc2V0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6c3Rl
cE92ZXJJbnN0cnVjdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OmNvbXB1dGVMb2NhbExp
dmVuZXNzRm9yQnl0ZWNvZGVPZmZzZXQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpjb21wdXRl
TG9jYWxMaXZlbmVzc0ZvckJsb2NrKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVM
aXZlbmVzc0FuYWx5c2lzOjpydW5MaXZlbmVzc0ZpeHBvaW50KTogRGVsZXRlZC4KKyAgICAgICAg
KiBieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuaDoKKyAgICAgICAgKiBieXRlY29k
ZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OmlzVmFs
aWRSZWdpc3RlckZvckxpdmVuZXNzKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc1By
b3BhZ2F0aW9uPERlcml2ZWRBbmFseXNpcz46OnN0ZXBPdmVySW5zdHJ1Y3Rpb24pOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzUHJvcGFnYXRpb248RGVyaXZlZEFuYWx5c2lzPjo6Y29t
cHV0ZUxvY2FsTGl2ZW5lc3NGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OkJ5dGVj
b2RlTGl2ZW5lc3NQcm9wYWdhdGlvbjxEZXJpdmVkQW5hbHlzaXM+Ojpjb21wdXRlTG9jYWxMaXZl
bmVzc0ZvckJsb2NrKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0aW9u
PERlcml2ZWRBbmFseXNpcz46OmdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQpOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzUHJvcGFnYXRpb248RGVyaXZlZEFuYWx5c2lzPjo6
cnVuTGl2ZW5lc3NGaXhwb2ludCk6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVSZXdyaXRl
ci5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpCeXRlY29kZVJld3JpdGVyOjphcHBseU1vZGlm
aWNhdGlvbik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlUmV3cml0ZXI6OmV4ZWN1dGUpOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZVJld3JpdGVyOjphZGp1c3RKdW1wVGFyZ2V0c0luRnJhZ21lbnQp
OgorICAgICAgICAoSlNDOjpCeXRlY29kZVJld3JpdGVyOjppbnNlcnRJbXBsKToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVSZXdyaXRlcjo6YWRqdXN0SnVtcFRhcmdldCk6CisgICAgICAgICogYnl0
ZWNvZGUvQnl0ZWNvZGVSZXdyaXRlci5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVS
ZXdyaXRlcjo6SW5zZXJ0aW9uUG9pbnQ6Okluc2VydGlvblBvaW50KToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVSZXdyaXRlcjo6SW5zZXJ0aW9uUG9pbnQ6Om9wZXJhdG9yPCk6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlUmV3cml0ZXI6Okluc2VydGlvblBvaW50OjpvcGVyYXRvcj09KToKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVSZXdyaXRlcjo6SW5zZXJ0aW9uOjpsZW5ndGgpOgorICAgICAgICAo
SlNDOjpCeXRlY29kZVJld3JpdGVyOjpGcmFnbWVudDo6RnJhZ21lbnQpOgorICAgICAgICAoSlND
OjpCeXRlY29kZVJld3JpdGVyOjpGcmFnbWVudDo6YXBwZW5kSW5zdHJ1Y3Rpb24pOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZVJld3JpdGVyOjpCeXRlY29kZVJld3JpdGVyKToKKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVSZXdyaXRlcjo6aW5zZXJ0RnJhZ21lbnRCZWZvcmUpOgorICAgICAgICAoSlND
OjpCeXRlY29kZVJld3JpdGVyOjppbnNlcnRGcmFnbWVudEFmdGVyKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVSZXdyaXRlcjo6cmVtb3ZlQnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpCeXRlY29k
ZVJld3JpdGVyOjpncmFwaCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlUmV3cml0ZXI6OmFkanVz
dEFic29sdXRlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVSZXdyaXRlcjo6YWRqdXN0
SnVtcFRhcmdldCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlUmV3cml0ZXI6OmNhbGN1bGF0ZURp
ZmZlcmVuY2UpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmg6CisgICAgICAg
IChKU0M6OmNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpjb21w
dXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2su
Y3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmR1bXBCeXRlY29kZSk6CisgICAgICAgIChK
U0M6OkNvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6
OmhhbmRsZXJGb3JJbmRleCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6c2hyaW5rVG9GaXQp
OgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnZhbHVlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0
KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpsaXZlbmVzc0FuYWx5c2lzU2xvdyk6CisgICAg
ICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6aXND
b25zdGFudFJlZ2lzdGVySW5kZXgpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmxpdmVuZXNz
QW5hbHlzaXMpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmxpdmVDYWxsZWVMb2NhbHNBdFlp
ZWxkKTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29kZS9IYW5kbGVySW5mby5oOgorICAgICAg
ICAoSlNDOjpIYW5kbGVySW5mb0Jhc2U6OmhhbmRsZXJGb3JJbmRleCk6CisgICAgICAgICogYnl0
ZWNvZGUvT3Bjb2RlLmg6CisgICAgICAgIChKU0M6OmlzQnJhbmNoKToKKyAgICAgICAgKEpTQzo6
aXNVbmNvbmRpdGlvbmFsQnJhbmNoKToKKyAgICAgICAgKEpTQzo6aXNUZXJtaW5hbCk6CisgICAg
ICAgIChKU0M6OmlzVGhyb3cpOgorICAgICAgICAqIGJ5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0
cy5jcHA6CisgICAgICAgIChKU0M6OmdldEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQpOgor
ICAgICAgICAoSlNDOjpjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzSW50ZXJuYWwpOgorICAgICAg
ICAoSlNDOjpjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKToKKyAgICAgICAgKEpTQzo6cmVjb21w
dXRlUHJlY2lzZUp1bXBUYXJnZXRzKToKKyAgICAgICAgKEpTQzo6ZmluZEp1bXBUYXJnZXRzRm9y
Qnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAqIGJ5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5o
OgorICAgICAgICAqIGJ5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0c0lubGluZXMuaDogQWRkZWQu
CisgICAgICAgIChKU0M6OmV4dHJhY3RTdG9yZWRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0
KToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHA6CisgICAgICAgIChK
U0M6OlVubGlua2VkQ29kZUJsb2NrOjpoYW5kbGVyRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAg
ICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6aGFuZGxlckZvckluZGV4KToKKyAgICAgICAgKEpT
Qzo6VW5saW5rZWRDb2RlQmxvY2s6OmFwcGx5TW9kaWZpY2F0aW9uKToKKyAgICAgICAgKiBieXRl
Y29kZS9VbmxpbmtlZENvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpVbmxpbmtlZFN0cmluZ0p1
bXBUYWJsZTo6b2Zmc2V0Rm9yVmFsdWUpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9j
azo6bnVtQ2FsbGVlTG9jYWxzKToKKyAgICAgICAgKiBieXRlY29kZS9WaXJ0dWFsUmVnaXN0ZXIu
aDoKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUpOgorICAgICAgICAoSlNDOjpCeXRl
Y29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdENvbXBsZXhQb3BTY29wZXMpOgorICAgICAgICAoSlNDOjpwcmVwYXJl
SnVtcFRhYmxlRm9yU3RyaW5nU3dpdGNoKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXRZaWVsZFBvaW50KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRTYXZlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRS
ZXN1bWUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdl
bmVyYXRvclN0YXRlTGFiZWwpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVy
YXRvcjo6YmVnaW5HZW5lcmF0b3IpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCeXRlY29kZUdl
bmVyYXRvcjo6ZW5kR2VuZXJhdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6Omdl
bmVyYXRvclN0YXRlUmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6
Z2VuZXJhdG9yVmFsdWVSZWdpc3Rlcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9y
OjpnZW5lcmF0b3JSZXN1bWVNb2RlUmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdl
bmVyYXRvcjo6Z2VuZXJhdG9yRnJhbWVSZWdpc3Rlcik6CisgICAgICAgICogYnl0ZWNvbXBpbGVy
L05vZGVzQ29kZWdlbi5jcHA6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uTm9kZTo6ZW1pdEJ5dGVj
b2RlKToKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogaW50ZXJw
cmV0ZXIvSW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlNDOjpmaW5kRXhjZXB0aW9uSGFuZGxl
cik6CisgICAgICAgIChKU0M6OkdldENhdGNoSGFuZGxlckZ1bmN0b3I6Om9wZXJhdG9yKCkpOgor
ICAgICAgICAoSlNDOjpVbndpbmRGdW5jdG9yOjpvcGVyYXRvcigpKToKKyAgICAgICAgKiBpbnRl
cnByZXRlci9JbnRlcnByZXRlci5oOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVy
SW5saW5lcy5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJl
Y2lzZUp1bXBUYXJnZXRzLmguCisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpnZXRPcGNvZGVJ
RCk6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNv
bXBpbGVNYWluUGFzcyk6CisgICAgICAgICogaml0L0pJVC5oOgorICAgICAgICAqIGppdC9KSVRP
cGNvZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3NhdmUpOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcmVzdW1lKTogRGVsZXRlZC4KKyAgICAgICAgKiBs
bGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmNw
cDoKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlSW5uZXIpOgorICAgICAg
ICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VHZW5lcmF0b3JGdW5jdGlvblNvdXJjZUVs
ZW1lbnRzKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OmNyZWF0ZUdlbmVyYXRv
clBhcmFtZXRlcnMpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuaDoKKyAgICAgICAgKiBydW50
aW1lL0NvbW1vblNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OlNMT1dfUEFUSF9ERUNMKTog
RGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5oOgorICAgICAgICAq
IHJ1bnRpbWUvR2VuZXJhdG9yRnJhbWUuY3BwOiBSZW1vdmVkLgorICAgICAgICAoSlNDOjpHZW5l
cmF0b3JGcmFtZTo6R2VuZXJhdG9yRnJhbWUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpHZW5l
cmF0b3JGcmFtZTo6ZmluaXNoQ3JlYXRpb24pOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpHZW5l
cmF0b3JGcmFtZTo6Y3JlYXRlU3RydWN0dXJlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6R2Vu
ZXJhdG9yRnJhbWU6OmNyZWF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkdlbmVyYXRvckZy
YW1lOjpzYXZlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OnJlc3Vt
ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjp2aXNpdENoaWxkcmVu
KTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0dlbmVyYXRvckZyYW1lLmg6IFJlbW92ZWQu
CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1lOjpsb2NhbHMpOiBEZWxldGVkLgorICAgICAg
ICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6bG9jYWxBdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
OkdlbmVyYXRvckZyYW1lOjpvZmZzZXRPZkxvY2Fscyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
OkdlbmVyYXRvckZyYW1lOjphbGxvY2F0aW9uU2l6ZUZvckxvY2Fscyk6IERlbGV0ZWQuCisgICAg
ICAgICogcnVudGltZS9KU0dlbmVyYXRvckZ1bmN0aW9uLmg6CisgICAgICAgICogcnVudGltZS9W
TS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpWTSk6CisgICAgICAgICogcnVudGltZS9WTS5oOgor
CiAyMDE2LTA4LTI1ICBKRiBCYXN0aWVuICA8amZiYXN0aWVuQGFwcGxlLmNvbT4KIAogICAgICAg
ICBUcnlHZXRCeUlkIHNob3VsZCBoYXZlIGEgVmFsdWVQcm9maWxlIHNvIHRoYXQgaXQgY2FuIHBy
ZWRpY3QgaXRzIG91dHB1dCB0eXBlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBi
L1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDMzMWFhZWI5MDU5YzdiZmE5ODI5OTE1ODQ3ZjA0
NGNjY2NlMDY0YjMuLjlhMWVjY2QwMTgxZTE1MDBlMTJjZmMyY2U0NGMzMmU0ZDFiYjVmZWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTMgQEAKKzIwMTYtMDgtMjUgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRl
YUBnbWFpbC5jb20+CisKKyAgICAgICAgW0RGR11bRlRMXSBJbXBsZW1lbnQgRVM2IEdlbmVyYXRv
cnMgaW4gREZHIC8gRlRMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNTI3MjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIHd0Zi9GYXN0Qml0VmVjdG9yLmg6CisgICAgICAgIChXVEY6OkZhc3RCaXRWZWN0
b3I6OkZhc3RCaXRWZWN0b3IpOgorCiAyMDE2LTA4LTI1ICBKRiBCYXN0aWVuICA8amZiYXN0aWVu
QGFwcGxlLmNvbT4KIAogICAgICAgICBUcnlHZXRCeUlkIHNob3VsZCBoYXZlIGEgVmFsdWVQcm9m
aWxlIHNvIHRoYXQgaXQgY2FuIHByZWRpY3QgaXRzIG91dHB1dCB0eXBlCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggM2VkNTRiODE3MjY4MThhMDg4NGNkYzMyNWNmMTdkZDI1
YjJlYmU2MS4uM2JlZjQyY2Y4MmFkMGU3N2Q4NTY0MDFjOTM3MGRlMDEzMDg1MjM5MCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTgxLDYgKzE4MSw4IEBAIHNldChKYXZh
U2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgYnl0ZWNvZGUvQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5j
cHAKICAgICBieXRlY29kZS9BcnJheVByb2ZpbGUuY3BwCiAgICAgYnl0ZWNvZGUvQnl0ZWNvZGVC
YXNpY0Jsb2NrLmNwcAorICAgIGJ5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNw
cAorICAgIGJ5dGVjb2RlL0J5dGVjb2RlUmV3cml0ZXIuY3BwCiAgICAgYnl0ZWNvZGUvQnl0ZWNv
ZGVJbnRyaW5zaWNSZWdpc3RyeS5jcHAKICAgICBieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5h
bHlzaXMuY3BwCiAgICAgYnl0ZWNvZGUvQ2FsbEVkZ2UuY3BwCkBAIC02NjEsNyArNjYzLDYgQEAg
c2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBydW50aW1lL0Z1bmN0aW9uSGFzRXhlY3V0
ZWRDYWNoZS5jcHAKICAgICBydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcAogICAgIHJ1bnRp
bWUvRnVuY3Rpb25SYXJlRGF0YS5jcHAKLSAgICBydW50aW1lL0dlbmVyYXRvckZyYW1lLmNwcAog
ICAgIHJ1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKICAgICBydW50aW1l
L0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLmNwcAogICAgIHJ1bnRpbWUvR2VuZXJhdG9yUHJv
dG90eXBlLmNwcApAQCAtOTc5LDYgKzk4MCwxMCBAQCBhZGRfY3VzdG9tX2NvbW1hbmQoCiAgICAg
Q09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vZ2VuZXJh
dGUtYnl0ZWNvZGUtZmlsZXMgLS1ieXRlY29kZXNfaCAke0RFUklWRURfU09VUkNFU19KQVZBU0NS
SVBUQ09SRV9ESVJ9L0J5dGVjb2Rlcy5oIC0taW5pdF9ieXRlY29kZXNfYXNtICR7REVSSVZFRF9T
T1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJUn0vSW5pdEJ5dGVjb2Rlcy5hc20gJHtKQVZBU0NSSVBU
Q09SRV9ESVJ9L2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCiAgICAgVkVSQkFUSU0pCiAKK2xp
c3QoQVBQRU5EIEphdmFTY3JpcHRDb3JlX0hFQURFUlMKKyAgICAke0RFUklWRURfU09VUkNFU19K
QVZBU0NSSVBUQ09SRV9ESVJ9L0J5dGVjb2Rlcy5oCispCisKIGFkZF9jdXN0b21fY29tbWFuZCgK
ICAgICBPVVRQVVQgJHtERVJJVkVEX1NPVVJDRVNfSkFWQVNDUklQVENPUkVfRElSfS9MTEludERl
c2lyZWRPZmZzZXRzLmgKICAgICBNQUlOX0RFUEVOREVOQ1kgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9
L29mZmxpbmVhc20vZ2VuZXJhdGVfb2Zmc2V0X2V4dHJhY3Rvci5yYgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCBhMWQ5ODNkOGYwMDdlOTBjMzYyYjU5OTVkNDYwZTI5MDNiMjI1M2Q2
Li5mMzZlNWE3MGNkYzJmYTBjN2JjMGY5NTc5MGU4N2I0NGYyMzIxNWRlIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtMTE5OCw3ICsxMTk4LDcgQEAKIAkJNTNGNDBFOEQxRDU5MDFG
MjAwOTlBMUI2IC8qIFdBU01QYXJzZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUzRjQwRThDMUQ1OTAxRjIwMDk5QTFCNiAvKiBXQVNNUGFyc2VyLmgg
Ki87IH07CiAJCTUzRjQwRThGMUQ1OTAyODIwMDk5QTFCNiAvKiBXQVNNQjNJUkdlbmVyYXRvci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1M0Y0MEU4
RTFENTkwMjgyMDA5OUExQjYgLyogV0FTTUIzSVJHZW5lcmF0b3IuY3BwICovOyB9OwogCQk1M0Y0
MEU5MTFENTkwMzAyMDA5OUExQjYgLyogV0FTTU9wcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTNGNDBFOTAxRDU5MDMwMjAwOTlBMUI2IC8qIFdBU01P
cHMuaCAqLzsgfTsKLSAgICAgICAgICAgICAgICA1M0Y0MEU5MzFENUE0QUIzMDA5OUExQjYgLyog
V0FTTUIzSVJHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUzRjQwRTkyMUQ1QTRBQjMwMDk5QTFCNiAvKiBXQVNNQjNJUkdlbmVyYXRvci5o
ICovOyB9OworCQk1M0Y0MEU5MzFENUE0QUIzMDA5OUExQjYgLyogV0FTTUIzSVJHZW5lcmF0b3Iu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzRjQwRTky
MUQ1QTRBQjMwMDk5QTFCNiAvKiBXQVNNQjNJUkdlbmVyYXRvci5oICovOyB9OwogCQk1M0Y0MEU5
NTFENUE3QUVGMDA5OUExQjYgLyogV0FTTU1vZHVsZVBhcnNlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTNGNDBFOTQxRDVBN0FFRjAwOTlBMUI2IC8q
IFdBU01Nb2R1bGVQYXJzZXIuaCAqLzsgfTsKIAkJNTNGNDBFOTcxRDVBN0JFQzAwOTlBMUI2IC8q
IFdBU01Nb2R1bGVQYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTNGNDBFOTYxRDVBN0JFQzAwOTlBMUI2IC8qIFdBU01Nb2R1bGVQYXJzZXIu
Y3BwICovOyB9OwogCQk1M0Y2QkY2RDFDM0YwNjBBMDBGNDFFNUQgLyogSW50ZXJuYWxGdW5jdGlv
bkFsbG9jYXRpb25Qcm9maWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1M0Y2QkY2QzFDM0YwNjBBMDBGNDFFNUQgLyogSW50ZXJuYWxGdW5jdGlvbkFs
bG9jYXRpb25Qcm9maWxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKQEAgLTEyNzAsOCArMTI3MCw2IEBACiAJCTcwOUZCODZDMUFFMzM1QzYwMDM5RDA2
OSAvKiBXZWFrU2V0UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3MDlGQjg2NjFBRTMzNUM2MDAzOUQwNjkgLyogV2Vha1NldFByb3RvdHlw
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcw
QjBBOUQxMUE5QjY2NDYwMDAxMzA2QSAvKiBSdW50aW1lRmxhZ3MuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwQjBBOUQwMUE5QjY2MjAwMDAxMzA2QSAv
KiBSdW50aW1lRmxhZ3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk3MEI3OTE5MTFDMDI0QTEzMDAyNDgxRTIgLyogU291cmNlQ29kZUtleS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBCNzkxOEUxQzAy
NDRDOTAwMjQ4MUUyIC8qIFNvdXJjZUNvZGVLZXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk3MEI3OTE5MjFDMDI0QTIzMDAyNDgxRTIgLyogR2Vu
ZXJhdG9yRnJhbWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNzBCNzkxODMxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZyYW1lLmNwcCAqLzsg
fTsKLQkJNzBCNzkxOTMxQzAyNEEyODAwMjQ4MUUyIC8qIEdlbmVyYXRvckZyYW1lLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEI3OTE4NDFDMDI0NDMy
MDAyNDgxRTIgLyogR2VuZXJhdG9yRnJhbWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk3MEI3OTE5NDFDMDI0QTI4MDAyNDgxRTIgLyogR2VuZXJh
dG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3MEI3OTE4NTFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnVu
Y3Rpb25Db25zdHJ1Y3Rvci5jcHAgKi87IH07CiAJCTcwQjc5MTk1MUMwMjRBMjgwMDI0ODFFMiAv
KiBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEI3OTE4NjFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJh
dG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTcwQjc5MTk2MUMwMjRBMjgwMDI0ODFFMiAvKiBHZW5lcmF0b3JG
dW5jdGlvblByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3MEI3OTE4NzFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Q
cm90b3R5cGUuY3BwICovOyB9OwpAQCAtMjA0NSw2ICsyMDQzLDExIEBACiAJCUUxOEUzQTU5MERG
OTI3OEMwMEQ5MEIzNCAvKiBWTS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFMThFM0E1NzBERjkyNzhDMDBEOTBCMzQgLyogVk0uY3BwICovOyB9Owog
CQlFMzE4Q0JDMDFCOEFFRjUxMDBBMjkyOUQgLyogSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMxOENCQkUx
QjhBRUY1MTAwQTI5MjlEIC8qIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmNwcCAqLzsgfTsKIAkJ
RTMxOENCQzExQjhBRUY1MTAwQTI5MjlEIC8qIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzE4Q0JCRjFCOEFF
RjUxMDBBMjkyOUQgLyogSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFMzI4REFFNzFEMzhEMDA0MDAxQTI1
MjkgLyogQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNEMjY0MjYxRDM4QzA0MjAwMEJFMTc0IC8qIEJ5
dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcCAqLzsgfTsKKwkJRTMyOERBRTgxRDM4RDAwNTAw
MUEyNTI5IC8qIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0QyNjQyNzFEMzhDMDQyMDAwQkUxNzQgLyog
Qnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQlFMzI4REFFOTFEMzhEMDA1MDAxQTI1MjkgLyogQnl0ZWNv
ZGVHcmFwaC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTNEMjY0MjgxRDM4QzA0MjAwMEJFMTc0IC8qIEJ5dGVjb2RlR3JhcGguaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFMzI4REFFQTFEMzhEMDA1MDAx
QTI1MjkgLyogQnl0ZWNvZGVSZXdyaXRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFM0QyNjQyOTFEMzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNvZGVS
ZXdyaXRlci5jcHAgKi87IH07CisJCUUzMjhEQUVCMUQzOEQwMDUwMDFBMjUyOSAvKiBCeXRlY29k
ZVJld3JpdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFM0QyNjQyQTFEMzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNvZGVSZXdyaXRlci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzMzYzN0E1MUI2MzIy
MDIwMEVFMDg0MCAvKiBSZWZsZWN0T2JqZWN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMzYzN0EzMUI2MzIyMDIwMEVFMDg0MCAvKiBSZWZsZWN0
T2JqZWN0LmNwcCAqLzsgfTsKIAkJRTMzNjM3QTYxQjYzMjIwMjAwRUUwODQwIC8qIFJlZmxlY3RP
YmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUz
MzYzN0E0MUI2MzIyMDIwMEVFMDg0MCAvKiBSZWZsZWN0T2JqZWN0LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTMzQjNFMjYxQjdBQkQ3NTAwNDhE
QjJFIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5sdXQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzM0IzRTI1MUI3QUJENzUwMDQ4REIy
RSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25PYmplY3QubHV0LmggKi87IH07CkBAIC0yMDY5
LDggKzIwNzIsMTAgQEAKIAkJRTM3OTRFNzUxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5
emVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUz
Nzk0RTczMUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFseXplci5jcHAgKi87IH07CiAJCUUz
Nzk0RTc2MUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFseXplci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM3OTRFNzQxQjc3RUI5NzAwNTU0M0FF
IC8qIE1vZHVsZUFuYWx5emVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJRTM5NjNDRUUxQjczRjc1MDAwRUI0Q0U1IC8qIE5vZGVzQW5hbHl6ZU1v
ZHVsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
Mzk2M0NFQzFCNzNGNzUwMDBFQjRDRTUgLyogTm9kZXNBbmFseXplTW9kdWxlLmNwcCAqLzsgfTsK
KwkJRTM5RDQ1RjUxRDM5MDA1NjAwQjNCMzc3IC8qIEludGVycHJldGVySW5saW5lcy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5RDlEODQxRDM5MDAw
NjAwNjY3MjgyIC8qIEludGVycHJldGVySW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUzOURBNEE2MUI3RThCN0MwMDg0RjMzQSAvKiBK
U01vZHVsZVJlY29yZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFMzlEQTRBNDFCN0U4QjdDMDA4NEYzM0EgLyogSlNNb2R1bGVSZWNvcmQuY3BwICov
OyB9OwogCQlFMzlEQTRBNzFCN0U4QjdDMDA4NEYzM0EgLyogSlNNb2R1bGVSZWNvcmQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOURBNEE1MUI3RThC
N0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29yZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCUUzQTQyMTQzMUQ2RjU4OTMwMDA3QzYxNyAvKiBQcmVj
aXNlSnVtcFRhcmdldHNJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFM0E0MjE0MjFENkY1ODhGMDAwN0M2MTcgLyogUHJlY2lzZUp1bXBUYXJn
ZXRzSW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUUzRDIzOUM4MUI4MjlDMUMwMEJCRUY2NyAvKiBKU01vZHVsZUVudmlyb25tZW50LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzRDIzOUM2
MUI4MjlDMUMwMEJCRUY2NyAvKiBKU01vZHVsZUVudmlyb25tZW50LmNwcCAqLzsgfTsKIAkJRTNE
MjM5QzkxQjgyOUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxlRW52aXJvbm1lbnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzRDIzOUM3MUI4MjlDMUMwMEJC
RUY2NyAvKiBKU01vZHVsZUVudmlyb25tZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTNFRjg4NzQxQjY2REYyMzAwM0YyNkNCIC8qIEpTUHJv
cGVydHlOYW1lSXRlcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTNFRjg4NzIxQjY2REYyMzAwM0YyNkNCIC8qIEpTUHJvcGVydHlOYW1lSXRl
cmF0b3IuY3BwICovOyB9OwpAQCAtMzM4Niw3ICszMzkxLDcgQEAKIAkJNTNGNDBFOEMxRDU5MDFG
MjAwOTlBMUI2IC8qIFdBU01QYXJzZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV0FTTVBhcnNlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1M0Y0MEU4RTFE
NTkwMjgyMDA5OUExQjYgLyogV0FTTUIzSVJHZW5lcmF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gV0FTTUIzSVJHZW5lcmF0b3IuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1M0Y0MEU5MDFENTkwMzAyMDA5OUExQjYgLyogV0FTTU9wcy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXQVNNT3BzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0gICAgICAgICAgICAgICAgNTNGNDBFOTIxRDVBNEFCMzAwOTlBMUI2IC8q
IFdBU01CM0lSR2VuZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdB
U01CM0lSR2VuZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUzRjQwRTky
MUQ1QTRBQjMwMDk5QTFCNiAvKiBXQVNNQjNJUkdlbmVyYXRvci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXQVNNQjNJUkdlbmVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1M0Y0MEU5NDFENUE3QUVGMDA5OUExQjYgLyogV0FTTU1vZHVsZVBhcnNlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXQVNNTW9kdWxlUGFyc2VyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzRjQwRTk2MUQ1QTdCRUMwMDk5QTFCNiAvKiBX
QVNNTW9kdWxlUGFyc2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdBU01Nb2R1bGVQYXJzZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1M0Y2
QkY2QzFDM0YwNjBBMDBGNDFFNUQgLyogSW50ZXJuYWxGdW5jdGlvbkFsbG9jYXRpb25Qcm9maWxl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludGVybmFsRnVuY3Rpb25BbGxv
Y2F0aW9uUHJvZmlsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzQ5Miw4ICsz
NDk3LDYgQEAKIAkJNzA5RkI4NjUxQUUzMzVDNjAwMzlEMDY5IC8qIFdlYWtTZXRQcm90b3R5cGUu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2Vha1NldFByb3RvdHlw
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcwOUZCODY2MUFFMzM1QzYwMDM5
RDA2OSAvKiBXZWFrU2V0UHJvdG90eXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdlYWtTZXRQcm90b3R5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzBC
MEE5RDAxQTlCNjYyMDAwMDEzMDZBIC8qIFJ1bnRpbWVGbGFncy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBSdW50aW1lRmxhZ3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJNzBCNzkxODMxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZyYW1lLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdlbmVyYXRvckZyYW1lLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNzBCNzkxODQxQzAyNDQzMjAwMjQ4MUUyIC8qIEdl
bmVyYXRvckZyYW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdlbmVyYXRv
ckZyYW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcwQjc5MTg1MUMwMjQ0MzIw
MDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MEI3OTE4NjFDMDI0NDMyMDAyNDgxRTIg
LyogR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTcwQjc5MTg3MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5j
dGlvblByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBH
ZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC00MzMzLDEwICs0MzM2LDE3IEBACiAJCUUzNzk0RTczMUI3N0VCOTcwMDU1NDNBRSAvKiBN
b2R1bGVBbmFseXplci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBN
b2R1bGVBbmFseXplci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNzk0RTc0
MUI3N0VCOTcwMDU1NDNBRSAvKiBNb2R1bGVBbmFseXplci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBNb2R1bGVBbmFseXplci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlFMzk2M0NFQzFCNzNGNzUwMDBFQjRDRTUgLyogTm9kZXNBbmFseXplTW9kdWxlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5vZGVzQW5hbHl6ZU1vZHVsZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzOUQ5RDg0MUQzOTAwMDYwMDY2NzI4
MiAvKiBJbnRlcnByZXRlcklubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSW50ZXJwcmV0ZXJJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUz
OURBNEE0MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29yZC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU01vZHVsZVJlY29yZC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUUzOURBNEE1MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJl
Y29yZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU01vZHVsZVJlY29yZC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFM0E0MjE0MjFENkY1ODhGMDAwN0M2MTcg
LyogUHJlY2lzZUp1bXBUYXJnZXRzSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBQcmVjaXNlSnVtcFRhcmdldHNJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUUzRDIzOUM2MUI4MjlDMUMwMEJCRUY2NyAvKiBKU01vZHVsZUVudmlyb25tZW50
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTW9kdWxlRW52aXJv
bm1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0QyMzlDNzFCODI5QzFD
MDBCQkVGNjcgLyogSlNNb2R1bGVFbnZpcm9ubWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKU01vZHVsZUVudmlyb25tZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUUzRDI2NDI2MUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRlY29kZUdlbmVyYXRvcmlmaWNh
dGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCeXRlY29kZUdl
bmVyYXRvcmlmaWNhdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzRDI2
NDI3MUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFM0QyNjQyODFEMzhDMDQyMDAwQkUxNzQg
LyogQnl0ZWNvZGVHcmFwaC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCeXRl
Y29kZUdyYXBoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzRDI2NDI5MUQzOEMw
NDIwMDBCRTE3NCAvKiBCeXRlY29kZVJld3JpdGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEJ5dGVjb2RlUmV3cml0ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlFM0QyNjQyQTFEMzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNvZGVSZXdyaXRlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCeXRlY29kZVJld3JpdGVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzRUY4ODcyMUI2NkRGMjMwMDNGMjZDQiAvKiBK
U1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlFM0VGODg3MzFCNjZERjIzMDAzRjI2Q0IgLyogSlNQcm9wZXJ0eU5hbWVJdGVyYXRv
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1Byb3BlcnR5TmFtZUl0ZXJh
dG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0OURDMTQ5MTJFRjI2MUEwMDE4
NEExRiAvKiBTb3VyY2VQcm92aWRlckNhY2hlSXRlbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTb3VyY2VQcm92aWRlckNhY2hlSXRlbS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtNTA2Myw2ICs1MDczLDcgQEAKIAkJMTQyOUQ3N0EwRUQyMEQ3MzAwQjg5NjE5
IC8qIGludGVycHJldGVyICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9
ICgKKwkJCQlFMzlEOUQ4NDFEMzkwMDA2MDA2NjcyODIgLyogSW50ZXJwcmV0ZXJJbmxpbmVzLmgg
Ki8sCiAJCQkJMEY1NUYwRjExNEQxMDYzNjAwQUM3NjQ5IC8qIEFic3RyYWN0UEMuY3BwICovLAog
CQkJCTBGNTVGMEYyMTREMTA2MzYwMEFDNzY0OSAvKiBBYnN0cmFjdFBDLmggKi8sCiAJCQkJMTQy
OUQ4NUIwRUQyMThFOTAwQjg5NjE5IC8qIENMb29wU3RhY2suY3BwICovLApAQCAtNTU1OCw3ICs1
NTY5LDcgQEAKIAkJCQk1M0Y0MEU5MDFENTkwMzAyMDA5OUExQjYgLyogV0FTTU9wcy5oICovLAog
CQkJCTdCQzU0N0QyMUI2OTU5OUIwMDk1OUI1OCAvKiBXQVNNRm9ybWF0LmggKi8sCiAJCQkJNTNG
NDBFOEUxRDU5MDI4MjAwOTlBMUI2IC8qIFdBU01CM0lSR2VuZXJhdG9yLmNwcCAqLywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgNTNGNDBFOTIxRDVBNEFCMzAwOTlBMUI2IC8qIFdB
U01CM0lSR2VuZXJhdG9yLmggKi8sCisJCQkJNTNGNDBFOTIxRDVBNEFCMzAwOTlBMUI2IC8qIFdB
U01CM0lSR2VuZXJhdG9yLmggKi8sCiAJCQkJNTNGNDBFOEExRDU5MDFCQjAwOTlBMUI2IC8qIFdB
U01GdW5jdGlvblBhcnNlci5oICovLAogCQkJCTUzRjQwRTk2MUQ1QTdCRUMwMDk5QTFCNiAvKiBX
QVNNTW9kdWxlUGFyc2VyLmNwcCAqLywKIAkJCQk1M0Y0MEU5NDFENUE3QUVGMDA5OUExQjYgLyog
V0FTTU1vZHVsZVBhcnNlci5oICovLApAQCAtNTc0Myw4ICs1NzU0LDYgQEAKIAkJCQlGNjkyQTg1
RDAyNTU1OTdEMDFGRjYwRjcgLyogRnVuY3Rpb25Qcm90b3R5cGUuaCAqLywKIAkJCQk2MkQyRDM4
RDFBREYxMDNGMDAwMjA2QzEgLyogRnVuY3Rpb25SYXJlRGF0YS5jcHAgKi8sCiAJCQkJNjJEMkQz
OEUxQURGMTAzRjAwMDIwNkMxIC8qIEZ1bmN0aW9uUmFyZURhdGEuaCAqLywKLQkJCQk3MEI3OTE4
MzFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnJhbWUuY3BwICovLAotCQkJCTcwQjc5MTg0
MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGcmFtZS5oICovLAogCQkJCTcwQjc5MTg1MUMw
MjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCAqLywKIAkJ
CQk3MEI3OTE4NjFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rv
ci5oICovLAogCQkJCTcwQjc5MTg3MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlv
blByb3RvdHlwZS5jcHAgKi8sCkBAIC02NjMwLDYgKzY2MzksMTIgQEAKIAkJOTY5QTA3OEYwRUQx
RDNBRTAwRjFGNjgxIC8qIGJ5dGVjb2RlICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQlj
aGlsZHJlbiA9ICgKKwkJCQlFM0E0MjE0MjFENkY1ODhGMDAwN0M2MTcgLyogUHJlY2lzZUp1bXBU
YXJnZXRzSW5saW5lcy5oICovLAorCQkJCUUzRDI2NDI2MUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRl
Y29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHAgKi8sCisJCQkJRTNEMjY0MjcxRDM4QzA0MjAwMEJF
MTc0IC8qIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmggKi8sCisJCQkJRTNEMjY0MjgxRDM4
QzA0MjAwMEJFMTc0IC8qIEJ5dGVjb2RlR3JhcGguaCAqLywKKwkJCQlFM0QyNjQyOTFEMzhDMDQy
MDAwQkUxNzQgLyogQnl0ZWNvZGVSZXdyaXRlci5jcHAgKi8sCisJCQkJRTNEMjY0MkExRDM4QzA0
MjAwMEJFMTc0IC8qIEJ5dGVjb2RlUmV3cml0ZXIuaCAqLywKIAkJCQk1MzcwQjRGMzFCRjI1RUEy
MDA1QzQwRkMgLyogQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50QmFzZS5j
cHAgKi8sCiAJCQkJNTM3MEI0RjQxQkYyNUVBMjAwNUM0MEZDIC8qIEFkYXB0aXZlSW5mZXJyZWRQ
cm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2UuaCAqLywKIAkJCQkwRjgzMzVCNDE2MzlDMUUzMDAx
NDQzQjUgLyogQXJyYXlBbGxvY2F0aW9uUHJvZmlsZS5jcHAgKi8sCkBAIC03MTg0LDYgKzcxOTks
NyBAQAogCQkJCTBGRUM4NTJEMUJEQUNEQUMwMDgwRkY3NCAvKiBCM1Byb2NlZHVyZUlubGluZXMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUM4NUJEMUJFMTQ2MkYwMDgwRkY3NCAvKiBCM1JlZHVj
ZVN0cmVuZ3RoLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVDODUzMTFCREFDREFDMDA4MEZGNzQg
LyogQjNTdGFja21hcFNwZWNpYWwuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzMjhEQUU4MUQzOEQw
MDUwMDFBMjUyOSAvKiBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEZFQzg1MzUxQkRBQ0RBQzAwODBGRjc0IC8qIEIzU2xvdEJhc2VWYWx1ZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEZFQzg1MzYxQkRBQ0RBQzAwODBGRjc0IC8qIEIzU3VjY2Vzc29yQ29s
bGVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQzg1MzgxQkRBQ0RBQzAwODBGRjc0IC8q
IEIzU3dpdGNoQ2FzZS5oIGluIEhlYWRlcnMgKi8sCkBAIC03MjE0LDYgKzcyMzAsNyBAQAogCQkJ
CTk5REEwMEE5MUJENTk5MzEwMEY0NTc1QyAvKiBidWlsdGluc19nZW5lcmF0ZV9zZXBhcmF0ZV9o
ZWFkZXIucHkgaW4gSGVhZGVycyAqLywKIAkJCQkwRjMzOEUxMTFCRjAyNzZDMDAxM0M4OEYgLyog
QjNPcGFxdWVCeXByb2R1Y3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFQTBDNDAzMUNERDdEMUQw
MDQ4MTk5MSAvKiBGdW5jdGlvbldoaXRlbGlzdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTNBNDIx
NDMxRDZGNTg5MzAwMDdDNjE3IC8qIFByZWNpc2VKdW1wVGFyZ2V0c0lubGluZXMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTk5REEwMEFBMUJENTk5MzEwMEY0NTc1QyAvKiBidWlsdGluc19nZW5lcmF0
ZV9zZXBhcmF0ZV9pbXBsZW1lbnRhdGlvbi5weSBpbiBIZWFkZXJzICovLAogCQkJCTk5REEwMEEz
MUJENTk5MzEwMEY0NTc1QyAvKiBidWlsdGluc19nZW5lcmF0b3IucHkgaW4gSGVhZGVycyAqLywK
IAkJCQk0MTI5NTI3ODFEMkNGNkJDMDBFNzhCODkgLyogYnVpbHRpbnNfZ2VuZXJhdGVfaW50ZXJu
YWxzX3dyYXBwZXJfaW1wbGVtZW50YXRpb24ucHkgaW4gSGVhZGVycyAqLywKQEAgLTc0NDksNyAr
NzQ2Niw2IEBACiAJCQkJQTczNzgxMEUxNzk5RUEyRTAwODE3NTMzIC8qIERGR05hdHVyYWxMb29w
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODZFQ0EzRUExMzJERUYxQzAwMkIyQUQ3IC8qIERGR05v
ZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRkI5MjFCMTZEMDJGMDEwMDU1QTVEQiAvKiBERkdO
b2RlQWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLywKLQkJCQk3MEI3OTE5MzFDMDI0QTI4MDAyNDgx
RTIgLyogR2VuZXJhdG9yRnJhbWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQTU4MUJCMTUwRTk1
MzAwMEI5QTJEOSAvKiBERkdOb2RlRmxhZ3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMzAwQjc4
MThBQjA1MTEwMEE2RDcyRSAvKiBERkdOb2RlT3JpZ2luLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RkE1ODFCQzE1MEU5NTMwMDBCOUEyRDkgLyogREZHTm9kZVR5cGUuaCBpbiBIZWFkZXJzICovLApA
QCAtNzQ2NCw2ICs3NDgwLDcgQEAKIAkJCQkwRkQ4QTMyNjE3RDUxRjU3MDBDQTJDNDAgLyogREZH
T1NSRW50cnlwb2ludENyZWF0aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQzA5NzZB
MTQ2OEE2RjcwMENGMjQ0MiAvKiBERkdPU1JFeGl0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjIz
NUJFQzE3MTc4RTczMDA2OTBDN0YgLyogREZHT1NSRXhpdEJhc2UuaCBpbiBIZWFkZXJzICovLAor
CQkJCUUzOUQ0NUY1MUQzOTAwNTYwMEIzQjM3NyAvKiBJbnRlcnByZXRlcklubGluZXMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGRkI5MjFDMTZEMDJGMTEwMDU1QTVEQiAvKiBERkdPU1JFeGl0Q29t
cGlsYXRpb25JbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkMwOTc3MTE0NjkzQUY1MDBDRjI0
NDIgLyogREZHT1NSRXhpdENvbXBpbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjcwMjVBQTE3
MTRCMEZDMDAzODJDMEUgLyogREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmggaW4gSGVhZGVycyAq
LywKQEAgLTc3MjYsNiArNzc0Myw3IEBACiAJCQkJRTMzQjNFMjYxQjdBQkQ3NTAwNDhEQjJFIC8q
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5sdXQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUE1MzI0MzhDMTg1NjgzMzUwMDJFRDY5MiAvKiBJbnNwZWN0b3JQcm90b2NvbE9iamVjdHMuaCBp
biBIZWFkZXJzICovLAogCQkJCUE1NUQ5M0FDMTg1MTRGNzkwMDQwMERFRCAvKiBJbnNwZWN0b3JQ
cm90b2NvbFR5cGVzLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzI4REFFQjFEMzhEMDA1MDAxQTI1
MjkgLyogQnl0ZWNvZGVSZXdyaXRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTUwRTRCNjIxODgw
OURENTAwNjhBNDZEIC8qIEluc3BlY3RvclJ1bnRpbWVBZ2VudC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTU5M0NGODMxODQwMzc3MTAwQkZDRTI3IC8qIEluc3BlY3RvclZhbHVlcy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJOTY5QTA3OTkwRUQxRDNBRTAwRjFGNjgxIC8qIEluc3RydWN0aW9uLmggaW4g
SGVhZGVycyAqLywKQEAgLTc4NTcsNiArNzg3NSw3IEBACiAJCQkJRTMzRjUwODExQjg0MjlBNDAw
NDEzODU2IC8qIEpTSW50ZXJuYWxQcm9taXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjYxODMy
QTFDNDVCRjA3MDA3MjQ1MEIgLyogQWlyQ0NhbGxpbmdDb252ZW50aW9uLmggaW4gSGVhZGVycyAq
LywKIAkJCQlFMzNGNTA3OTFCODQyMjU3MDA0MTM4NTYgLyogSlNJbnRlcm5hbFByb21pc2VDb25z
dHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTMyOERBRTkxRDM4RDAwNTAwMUEyNTI5IC8q
IEJ5dGVjb2RlR3JhcGguaCBpbiBIZWFkZXJzICovLAogCQkJCUUzM0Y1MDg3MUI4NDQ5RUYwMDQx
Mzg1NiAvKiBKU0ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yLmx1dC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRTMzRjUwODUxQjg0MzdBMDAwNDEzODU2IC8qIEpTSW50ZXJuYWxQcm9taXNlRGVmZXJy
ZWQuaCBpbiBIZWFkZXJzICovLAogCQkJCUUzM0Y1MDc1MUI4NDIxQzAwMDQxMzg1NiAvKiBKU0lu
dGVybmFsUHJvbWlzZVByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCkBAIC03OTQ1LDcgKzc5NjQs
NyBAQAogCQkJCTBGQjU0Njc3MTRGNTlCNUMwMDJDMjk4OSAvKiBMYXp5T3BlcmFuZFZhbHVlUHJv
ZmlsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTlEQTAwQjAxQkQ1OTk0RTAwRjQ1NzVDIC8qIGxh
enl3cml0ZXIucHkgaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQzMTBFMTZGNUNEMDBCMzQ0NjAg
LyogTGV4ZXIuaCBpbiBIZWFkZXJzICovLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA1M0Y0MEU5MzFENUE0QUIzMDA5OUExQjYgLyogV0FTTUIzSVJHZW5lcmF0b3IuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTUzRjQwRTkzMUQ1QTRBQjMwMDk5QTFCNiAvKiBXQVNNQjNJUkdlbmVyYXRv
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM1MkUwRTE2RkNFMTAwQjM0NDYwIC8qIExleGVy
Lmx1dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRENGM0Q1NkIxQ0QyOTQ3MjAwM0Q1QzY1IC8qIExh
enlDbGFzc1N0cnVjdHVyZUlubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFMTg3QTAyMUJG
QkU1NjEwMDM4QkJDQSAvKiBKSVRNdWxHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovLApAQCAtODgy
Myw2ICs4ODQyLDcgQEAKIAkJCQkxNDdGMzlCRDEwN0VDMzc2MDA0MjdBNDggLyogQXJnTGlzdC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjc0M0JBQTE2Qjg4MjQ5MDA5RjkyNzcgLyogQVJNNjRE
aXNhc3NlbWJsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODZEM0IyQzMxMDE1NkJERTAwMjg2
NUU3IC8qIEFSTUFzc2VtYmxlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFMzI4REFFNzFEMzhE
MDA0MDAxQTI1MjkgLyogQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNjVDMDI4NTAxNzE3OTVFMjAwMzUxRTM1IC8qIEFSTXY3RGlzYXNzZW1ibGVyLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTY1QzAyODVDMTcxNzk2NjgwMDM1MUUzNSAvKiBBUk12N0RP
cGNvZGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY4MzM1QjcxNjM5QzFFNjAwMTQ0M0I1IC8q
IEFycmF5QWxsb2NhdGlvblByb2ZpbGUuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC05MTU4LDYgKzkx
NzgsNyBAQAogCQkJCTBGMjVGMUIxMTgxNjM1RjMwMDUyMkYzOSAvKiBGVExTbG93UGF0aENhbGwu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYzMzhERjExQkU5M0FEMTAwMTNDODhGIC8qIEIzU3Rh
Y2ttYXBWYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjI1RjFCMzE4MTYzNUYzMDA1MjJG
MzkgLyogRlRMU2xvd1BhdGhDYWxsS2V5LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUUzMjhEQUVB
MUQzOEQwMDUwMDFBMjUyOSAvKiBCeXRlY29kZVJld3JpdGVyLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTQzMTlEQTAzMUMxQkU0MEEwMDFEMjYwQiAvKiBCM0xvd2VyTWFjcm9zQWZ0ZXJPcHRpbWl6
YXRpb25zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRUEwQTE2MTcwNkJCOTAwMEJCNzIyQyAv
KiBGVExTdGF0ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjIzNUJFMTE3MTc4RTFDMDA2OTBD
N0YgLyogRlRMVGh1bmtzLmNwcCBpbiBTb3VyY2VzICovLApAQCAtOTU2NSw3ICs5NTg2LDYgQEAK
IAkJCQk3OUVFMEJGRjFCNEFGQjg1MDAwMzg1QzkgLyogVmFyaWFibGVFbnZpcm9ubWVudC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkwRjZDNzM1MDFBQzlGOTlGMDBCRTE2ODIgLyogVmFyaWFibGVX
cml0ZUZpcmVEZXRhaWwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFMDUwMkMxQUE5MDk1NjAw
RDMzQjMzIC8qIFZhck9mZnNldC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk3MEI3OTE5MjFDMDI0
QTIzMDAyNDgxRTIgLyogR2VuZXJhdG9yRnJhbWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYy
MEMyNTkxQTgwMTNBQjAwREEzMjI5IC8qIFZpcnR1YWxSZWdpc3Rlci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlFMThFM0E1OTBERjkyNzhDMDBEOTBCMzQgLyogVk0uY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJRkU1OTMyQTcxODNDNUEyNjAwQTFFQ0NDIC8qIFZNRW50cnlTY29wZS5jcHAgaW4gU291
cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9HZW5l
cmF0b3JQcm90b3R5cGUuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvR2VuZXJh
dG9yUHJvdG90eXBlLmpzCmluZGV4IDNjMTQwNjg3ZGZjN2UwMGVmZTkxYWU4MGIyYWM2NzZmYTli
ZjQ4ZjQuLjQ5OWRiZDM5MmU4MzEzZGNkZDg2ZWM4YzE2MDU2OWQ3ZDZmNTQ5YjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9HZW5lcmF0b3JQcm90b3R5cGUuanMK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0dlbmVyYXRvclByb3RvdHlwZS5q
cwpAQCAtNTEsNyArNTEsNyBAQCBmdW5jdGlvbiBnZW5lcmF0b3JSZXN1bWUoZ2VuZXJhdG9yLCBz
ZW50VmFsdWUsIHJlc3VtZU1vZGUpCiAgICAgfSBlbHNlIHsKICAgICAgICAgdHJ5IHsKICAgICAg
ICAgICAgIGdlbmVyYXRvci5AZ2VuZXJhdG9yU3RhdGUgPSBAR2VuZXJhdG9yU3RhdGVFeGVjdXRp
bmc7Ci0gICAgICAgICAgICB2YWx1ZSA9IGdlbmVyYXRvci5AZ2VuZXJhdG9yTmV4dC5AY2FsbChn
ZW5lcmF0b3IuQGdlbmVyYXRvclRoaXMsIGdlbmVyYXRvciwgc3RhdGUsIHNlbnRWYWx1ZSwgcmVz
dW1lTW9kZSk7CisgICAgICAgICAgICB2YWx1ZSA9IGdlbmVyYXRvci5AZ2VuZXJhdG9yTmV4dC5A
Y2FsbChnZW5lcmF0b3IuQGdlbmVyYXRvclRoaXMsIGdlbmVyYXRvciwgc3RhdGUsIHNlbnRWYWx1
ZSwgcmVzdW1lTW9kZSwgZ2VuZXJhdG9yLkBnZW5lcmF0b3JGcmFtZSk7CiAgICAgICAgICAgICBp
ZiAoZ2VuZXJhdG9yLkBnZW5lcmF0b3JTdGF0ZSA9PT0gQEdlbmVyYXRvclN0YXRlRXhlY3V0aW5n
KSB7CiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLkBnZW5lcmF0b3JTdGF0ZSA9IEBHZW5lcmF0
b3JTdGF0ZUNvbXBsZXRlZDsKICAgICAgICAgICAgICAgICBkb25lID0gdHJ1ZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5jcHAK
aW5kZXggN2YxN2MwZWYxMGI0MzNmYWM4ZjU4Y2IzYjljYTVkNGQwMTViYmEwOC4uYmI3NTEyMWI4
MmFhYTc2NjQ2MDZjYjQ1ZDM2YjI5YjYyZTljYWM0ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5jcHAKQEAgLTI3LDYgKzI3
LDcgQEAKICNpbmNsdWRlICJCeXRlY29kZUJhc2ljQmxvY2suaCIKIAogI2luY2x1ZGUgIkNvZGVC
bG9jay5oIgorI2luY2x1ZGUgIkludGVycHJldGVySW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ0lu
bGluZXMuaCIKICNpbmNsdWRlICJQcmVjaXNlSnVtcFRhcmdldHMuaCIKIApAQCAtMzQsNjkgKzM1
LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogCiB2b2lkIEJ5dGVjb2RlQmFzaWNCbG9jazo6c2hyaW5r
VG9GaXQoKQogewotICAgIG1fYnl0ZWNvZGVPZmZzZXRzLnNocmlua1RvRml0KCk7CisgICAgbV9v
ZmZzZXRzLnNocmlua1RvRml0KCk7CiAgICAgbV9zdWNjZXNzb3JzLnNocmlua1RvRml0KCk7CiB9
CiAKLXN0YXRpYyBib29sIGlzQnJhbmNoKE9wY29kZUlEIG9wY29kZUlEKQotewotICAgIHN3aXRj
aCAob3Bjb2RlSUQpIHsKLSAgICBjYXNlIG9wX2ptcDoKLSAgICBjYXNlIG9wX2p0cnVlOgotICAg
IGNhc2Ugb3BfamZhbHNlOgotICAgIGNhc2Ugb3BfamVxX251bGw6Ci0gICAgY2FzZSBvcF9qbmVx
X251bGw6Ci0gICAgY2FzZSBvcF9qbmVxX3B0cjoKLSAgICBjYXNlIG9wX2psZXNzOgotICAgIGNh
c2Ugb3Bfamxlc3NlcToKLSAgICBjYXNlIG9wX2pncmVhdGVyOgotICAgIGNhc2Ugb3BfamdyZWF0
ZXJlcToKLSAgICBjYXNlIG9wX2pubGVzczoKLSAgICBjYXNlIG9wX2pubGVzc2VxOgotICAgIGNh
c2Ugb3Bfam5ncmVhdGVyOgotICAgIGNhc2Ugb3Bfam5ncmVhdGVyZXE6Ci0gICAgY2FzZSBvcF9z
d2l0Y2hfaW1tOgotICAgIGNhc2Ugb3Bfc3dpdGNoX2NoYXI6Ci0gICAgY2FzZSBvcF9zd2l0Y2hf
c3RyaW5nOgotICAgIGNhc2Ugb3Bfc2F2ZToKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgZGVm
YXVsdDoKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLX0KLQotc3RhdGljIGJvb2wgaXNV
bmNvbmRpdGlvbmFsQnJhbmNoKE9wY29kZUlEIG9wY29kZUlEKQotewotICAgIHN3aXRjaCAob3Bj
b2RlSUQpIHsKLSAgICBjYXNlIG9wX2ptcDoKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgZGVm
YXVsdDoKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLX0KLQotc3RhdGljIGJvb2wgaXNU
ZXJtaW5hbChPcGNvZGVJRCBvcGNvZGVJRCkKLXsKLSAgICBzd2l0Y2ggKG9wY29kZUlEKSB7Ci0g
ICAgY2FzZSBvcF9yZXQ6Ci0gICAgY2FzZSBvcF9lbmQ6Ci0gICAgICAgIHJldHVybiB0cnVlOwot
ICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci19Ci0KLXN0YXRpYyBi
b29sIGlzVGhyb3coT3Bjb2RlSUQgb3Bjb2RlSUQpCi17Ci0gICAgc3dpdGNoIChvcGNvZGVJRCkg
ewotICAgIGNhc2Ugb3BfdGhyb3c6Ci0gICAgY2FzZSBvcF90aHJvd19zdGF0aWNfZXJyb3I6Ci0g
ICAgICAgIHJldHVybiB0cnVlOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICB9Ci19Ci0KIHN0YXRpYyBib29sIGlzSnVtcFRhcmdldChPcGNvZGVJRCBvcGNvZGVJRCwg
Y29uc3QgVmVjdG9yPHVuc2lnbmVkLCAzMj4mIGp1bXBUYXJnZXRzLCB1bnNpZ25lZCBieXRlY29k
ZU9mZnNldCkKIHsKICAgICBpZiAob3Bjb2RlSUQgPT0gb3BfY2F0Y2gpCkBAIC0xMDUsMTUgKzQ3
LDIwIEBAIHN0YXRpYyBib29sIGlzSnVtcFRhcmdldChPcGNvZGVJRCBvcGNvZGVJRCwgY29uc3Qg
VmVjdG9yPHVuc2lnbmVkLCAzMj4mIGp1bXBUYXJnCiAgICAgcmV0dXJuIHN0ZDo6YmluYXJ5X3Nl
YXJjaChqdW1wVGFyZ2V0cy5iZWdpbigpLCBqdW1wVGFyZ2V0cy5lbmQoKSwgYnl0ZWNvZGVPZmZz
ZXQpOwogfQogCi1zdGF0aWMgdm9pZCBsaW5rQmxvY2tzKEJ5dGVjb2RlQmFzaWNCbG9jayogcHJl
ZGVjZXNzb3IsIEJ5dGVjb2RlQmFzaWNCbG9jayogc3VjY2Vzc29yKQotewotICAgIHByZWRlY2Vz
c29yLT5hZGRTdWNjZXNzb3Ioc3VjY2Vzc29yKTsKLX0KLQotdm9pZCBjb21wdXRlQnl0ZWNvZGVC
YXNpY0Jsb2NrcyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxC
eXRlY29kZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9ja3MpCit0ZW1wbGF0ZTx0eXBlbmFtZSBCbG9j
aywgdHlwZW5hbWUgSW5zdHJ1Y3Rpb24+Cit2b2lkIEJ5dGVjb2RlQmFzaWNCbG9jazo6Y29tcHV0
ZUltcGwoQmxvY2sqIGNvZGVCbG9jaywgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1
bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50LCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2Rl
QmFzaWNCbG9jaz4+JiBiYXNpY0Jsb2NrcykKIHsKICAgICBWZWN0b3I8dW5zaWduZWQsIDMyPiBq
dW1wVGFyZ2V0czsKLSAgICBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKGNvZGVCbG9jaywganVt
cFRhcmdldHMpOworICAgIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMoY29kZUJsb2NrLCBpbnN0
cnVjdGlvbnNCZWdpbiwgaW5zdHJ1Y3Rpb25Db3VudCwganVtcFRhcmdldHMpOworCisgICAgYXV0
byBhcHBlbmRCbG9jayA9IFsmXSAoc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4m
JiBibG9jaykgeworICAgICAgICBibG9jay0+bV9pbmRleCA9IGJhc2ljQmxvY2tzLnNpemUoKTsK
KyAgICAgICAgYmFzaWNCbG9ja3MuYXBwZW5kKFdURk1vdmUoYmxvY2spKTsKKyAgICB9OworCisg
ICAgYXV0byBsaW5rQmxvY2tzID0gWyZdIChCeXRlY29kZUJhc2ljQmxvY2sqIGZyb20sIEJ5dGVj
b2RlQmFzaWNCbG9jayogdG8pIHsKKyAgICAgICAgZnJvbS0+YWRkU3VjY2Vzc29yKHRvKTsKKyAg
ICB9OwogCiAgICAgLy8gQ3JlYXRlIHRoZSBlbnRyeSBhbmQgZXhpdCBiYXNpYyBibG9ja3MuCiAg
ICAgYmFzaWNCbG9ja3MucmVzZXJ2ZUNhcGFjaXR5KGp1bXBUYXJnZXRzLnNpemUoKSArIDIpOwpA
QCAtMTIyLDE5ICs2OSwxNyBAQCB2b2lkIGNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzKENvZGVC
bG9jayogY29kZUJsb2NrLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dAogICAgIGF1dG8gZmly
c3RCbG9jayA9IHN0ZDo6bWFrZV91bmlxdWU8Qnl0ZWNvZGVCYXNpY0Jsb2NrPigwLCAwKTsKICAg
ICBsaW5rQmxvY2tzKGVudHJ5LmdldCgpLCBmaXJzdEJsb2NrLmdldCgpKTsKIAotICAgIGJhc2lj
QmxvY2tzLmFwcGVuZChXVEZNb3ZlKGVudHJ5KSk7CisgICAgYXBwZW5kQmxvY2soV1RGTW92ZShl
bnRyeSkpOwogICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogY3VycmVudCA9IGZpcnN0QmxvY2suZ2V0
KCk7Ci0gICAgYmFzaWNCbG9ja3MuYXBwZW5kKFdURk1vdmUoZmlyc3RCbG9jaykpOworICAgIGFw
cGVuZEJsb2NrKFdURk1vdmUoZmlyc3RCbG9jaykpOwogCiAgICAgYXV0byBleGl0ID0gc3RkOjpt
YWtlX3VuaXF1ZTxCeXRlY29kZUJhc2ljQmxvY2s+KEJ5dGVjb2RlQmFzaWNCbG9jazo6RXhpdEJs
b2NrKTsKIAogICAgIGJvb2wgbmV4dEluc3RydWN0aW9uSXNMZWFkZXIgPSBmYWxzZTsKIAogICAg
IEludGVycHJldGVyKiBpbnRlcnByZXRlciA9IGNvZGVCbG9jay0+dm0oKS0+aW50ZXJwcmV0ZXI7
Ci0gICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luID0gY29kZUJsb2NrLT5pbnN0cnVj
dGlvbnMoKS5iZWdpbigpOwotICAgIHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQgPSBjb2RlQmxv
Y2stPmluc3RydWN0aW9ucygpLnNpemUoKTsKICAgICBmb3IgKHVuc2lnbmVkIGJ5dGVjb2RlT2Zm
c2V0ID0gMDsgYnl0ZWNvZGVPZmZzZXQgPCBpbnN0cnVjdGlvbkNvdW50OykgewotICAgICAgICBP
cGNvZGVJRCBvcGNvZGVJRCA9IGludGVycHJldGVyLT5nZXRPcGNvZGVJRChpbnN0cnVjdGlvbnNC
ZWdpbltieXRlY29kZU9mZnNldF0udS5vcGNvZGUpOworICAgICAgICBPcGNvZGVJRCBvcGNvZGVJ
RCA9IGludGVycHJldGVyLT5nZXRPcGNvZGVJRChpbnN0cnVjdGlvbnNCZWdpbltieXRlY29kZU9m
ZnNldF0pOwogICAgICAgICB1bnNpZ25lZCBvcGNvZGVMZW5ndGggPSBvcGNvZGVMZW5ndGhzW29w
Y29kZUlEXTsKIAogICAgICAgICBib29sIGNyZWF0ZWRCbG9jayA9IGZhbHNlOwpAQCAtMTQyLDcg
Kzg3LDcgQEAgdm9pZCBjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2NrcyhDb2RlQmxvY2sqIGNvZGVC
bG9jaywgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXQKICAgICAgICAgaWYgKGlzSnVtcFRhcmdl
dChvcGNvZGVJRCwganVtcFRhcmdldHMsIGJ5dGVjb2RlT2Zmc2V0KSB8fCBuZXh0SW5zdHJ1Y3Rp
b25Jc0xlYWRlcikgewogICAgICAgICAgICAgYXV0byBuZXdCbG9jayA9IHN0ZDo6bWFrZV91bmlx
dWU8Qnl0ZWNvZGVCYXNpY0Jsb2NrPihieXRlY29kZU9mZnNldCwgb3Bjb2RlTGVuZ3RoKTsKICAg
ICAgICAgICAgIGN1cnJlbnQgPSBuZXdCbG9jay5nZXQoKTsKLSAgICAgICAgICAgIGJhc2ljQmxv
Y2tzLmFwcGVuZChXVEZNb3ZlKG5ld0Jsb2NrKSk7CisgICAgICAgICAgICBhcHBlbmRCbG9jayhX
VEZNb3ZlKG5ld0Jsb2NrKSk7CiAgICAgICAgICAgICBjcmVhdGVkQmxvY2sgPSB0cnVlOwogICAg
ICAgICAgICAgbmV4dEluc3RydWN0aW9uSXNMZWFkZXIgPSBmYWxzZTsKICAgICAgICAgICAgIGJ5
dGVjb2RlT2Zmc2V0ICs9IG9wY29kZUxlbmd0aDsKQEAgLTE1Niw3ICsxMDEsNyBAQCB2b2lkIGNv
bXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzKENvZGVCbG9jayogY29kZUJsb2NrLCBWZWN0b3I8c3Rk
Ojp1bmlxdWVfcHRyPEJ5dAogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgLy8gT3Ro
ZXJ3aXNlLCBqdXN0IGFkZCB0byB0aGUgbGVuZ3RoIG9mIHRoZSBjdXJyZW50IGJsb2NrLgotICAg
ICAgICBjdXJyZW50LT5hZGRCeXRlY29kZUxlbmd0aChvcGNvZGVMZW5ndGgpOworICAgICAgICBj
dXJyZW50LT5hZGRMZW5ndGgob3Bjb2RlTGVuZ3RoKTsKICAgICAgICAgYnl0ZWNvZGVPZmZzZXQg
Kz0gb3Bjb2RlTGVuZ3RoOwogICAgIH0KIApAQCAtMTY4LDEzICsxMTMsMTIgQEAgdm9pZCBjb21w
dXRlQnl0ZWNvZGVCYXNpY0Jsb2NrcyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgVmVjdG9yPHN0ZDo6
dW5pcXVlX3B0cjxCeXQKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIGJvb2wgZmFs
bHNUaHJvdWdoID0gdHJ1ZTsgCi0gICAgICAgIGZvciAodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQg
PSBibG9jay0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKTsgYnl0ZWNvZGVPZmZzZXQgPCBibG9jay0+
bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKSArIGJsb2NrLT50b3RhbEJ5dGVjb2RlTGVuZ3RoKCk7KSB7
Ci0gICAgICAgICAgICBjb25zdCBJbnN0cnVjdGlvbiYgY3VycmVudEluc3RydWN0aW9uID0gaW5z
dHJ1Y3Rpb25zQmVnaW5bYnl0ZWNvZGVPZmZzZXRdOwotICAgICAgICAgICAgT3Bjb2RlSUQgb3Bj
b2RlSUQgPSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoY3VycmVudEluc3RydWN0aW9uLnUub3Bj
b2RlKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBieXRlY29kZU9mZnNldCA9IGJsb2NrLT5sZWFk
ZXJPZmZzZXQoKTsgYnl0ZWNvZGVPZmZzZXQgPCBibG9jay0+bGVhZGVyT2Zmc2V0KCkgKyBibG9j
ay0+dG90YWxMZW5ndGgoKTspIHsKKyAgICAgICAgICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW50
ZXJwcmV0ZXItPmdldE9wY29kZUlEKGluc3RydWN0aW9uc0JlZ2luW2J5dGVjb2RlT2Zmc2V0XSk7
CiAgICAgICAgICAgICB1bnNpZ25lZCBvcGNvZGVMZW5ndGggPSBvcGNvZGVMZW5ndGhzW29wY29k
ZUlEXTsKICAgICAgICAgICAgIC8vIElmIHdlIGZvdW5kIGEgdGVybWluYWwgYnl0ZWNvZGUsIGxp
bmsgdG8gdGhlIGV4aXQgYmxvY2suCiAgICAgICAgICAgICBpZiAoaXNUZXJtaW5hbChvcGNvZGVJ
RCkpIHsKLSAgICAgICAgICAgICAgICBBU1NFUlQoYnl0ZWNvZGVPZmZzZXQgKyBvcGNvZGVMZW5n
dGggPT0gYmxvY2stPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCkgKyBibG9jay0+dG90YWxCeXRlY29k
ZUxlbmd0aCgpKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQoYnl0ZWNvZGVPZmZzZXQgKyBvcGNv
ZGVMZW5ndGggPT0gYmxvY2stPmxlYWRlck9mZnNldCgpICsgYmxvY2stPnRvdGFsTGVuZ3RoKCkp
OwogICAgICAgICAgICAgICAgIGxpbmtCbG9ja3MoYmxvY2ssIGV4aXQuZ2V0KCkpOwogICAgICAg
ICAgICAgICAgIGZhbGxzVGhyb3VnaCA9IGZhbHNlOwogICAgICAgICAgICAgICAgIGJyZWFrOwpA
QCAtMTg0LDggKzEyOCw4IEBAIHZvaWQgY29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MoQ29kZUJs
b2NrKiBjb2RlQmxvY2ssIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0CiAgICAgICAgICAgICAv
LyBJZiB0aGVyZSBpc24ndCBvbmUsIHRyZWF0IHRoaXMgdGhyb3cgYXMgYSB0ZXJtaW5hbC4gVGhp
cyBpcyB0cnVlIGV2ZW4gaWYgd2UgaGF2ZSBhIGZpbmFsbHkKICAgICAgICAgICAgIC8vIGJsb2Nr
IGJlY2F1c2UgdGhlIGZpbmFsbHkgYmxvY2sgd2lsbCBjcmVhdGUgaXRzIG93biBjYXRjaCwgd2hp
Y2ggd2lsbCBnZW5lcmF0ZSBhIEhhbmRsZXJJbmZvLgogICAgICAgICAgICAgaWYgKGlzVGhyb3co
b3Bjb2RlSUQpKSB7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKGJ5dGVjb2RlT2Zmc2V0ICsgb3Bj
b2RlTGVuZ3RoID09IGJsb2NrLT5sZWFkZXJCeXRlY29kZU9mZnNldCgpICsgYmxvY2stPnRvdGFs
Qnl0ZWNvZGVMZW5ndGgoKSk7Ci0gICAgICAgICAgICAgICAgSGFuZGxlckluZm8qIGhhbmRsZXIg
PSBjb2RlQmxvY2stPmhhbmRsZXJGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCk7Cisg
ICAgICAgICAgICAgICAgQVNTRVJUKGJ5dGVjb2RlT2Zmc2V0ICsgb3Bjb2RlTGVuZ3RoID09IGJs
b2NrLT5sZWFkZXJPZmZzZXQoKSArIGJsb2NrLT50b3RhbExlbmd0aCgpKTsKKyAgICAgICAgICAg
ICAgICBhdXRvKiBoYW5kbGVyID0gY29kZUJsb2NrLT5oYW5kbGVyRm9yQnl0ZWNvZGVPZmZzZXQo
Ynl0ZWNvZGVPZmZzZXQpOwogICAgICAgICAgICAgICAgIGZhbGxzVGhyb3VnaCA9IGZhbHNlOwog
ICAgICAgICAgICAgICAgIGlmICghaGFuZGxlcikgewogICAgICAgICAgICAgICAgICAgICBsaW5r
QmxvY2tzKGJsb2NrLCBleGl0LmdldCgpKTsKQEAgLTE5Myw3ICsxMzcsNyBAQCB2b2lkIGNvbXB1
dGVCeXRlY29kZUJhc2ljQmxvY2tzKENvZGVCbG9jayogY29kZUJsb2NrLCBWZWN0b3I8c3RkOjp1
bmlxdWVfcHRyPEJ5dAogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgYmFzaWNCbG9ja3Muc2l6ZSgpOyBpKyspIHsKICAgICAgICAgICAg
ICAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBvdGhlckJsb2NrID0gYmFzaWNCbG9ja3NbaV0u
Z2V0KCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChoYW5kbGVyLT50YXJnZXQgPT0gb3RoZXJC
bG9jay0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKSkgeworICAgICAgICAgICAgICAgICAgICBpZiAo
aGFuZGxlci0+dGFyZ2V0ID09IG90aGVyQmxvY2stPmxlYWRlck9mZnNldCgpKSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICBsaW5rQmxvY2tzKGJsb2NrLCBvdGhlckJsb2NrKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICB9CkBAIC0yMDMsMTMg
KzE0NywxMyBAQCB2b2lkIGNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzKENvZGVCbG9jayogY29k
ZUJsb2NrLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dAogCiAgICAgICAgICAgICAvLyBJZiB3
ZSBmb3VuZCBhIGJyYW5jaCwgbGluayB0byB0aGUgYmxvY2socykgdGhhdCB3ZSBqdW1wIHRvLgog
ICAgICAgICAgICAgaWYgKGlzQnJhbmNoKG9wY29kZUlEKSkgewotICAgICAgICAgICAgICAgIEFT
U0VSVChieXRlY29kZU9mZnNldCArIG9wY29kZUxlbmd0aCA9PSBibG9jay0+bGVhZGVyQnl0ZWNv
ZGVPZmZzZXQoKSArIGJsb2NrLT50b3RhbEJ5dGVjb2RlTGVuZ3RoKCkpOworICAgICAgICAgICAg
ICAgIEFTU0VSVChieXRlY29kZU9mZnNldCArIG9wY29kZUxlbmd0aCA9PSBibG9jay0+bGVhZGVy
T2Zmc2V0KCkgKyBibG9jay0+dG90YWxMZW5ndGgoKSk7CiAgICAgICAgICAgICAgICAgVmVjdG9y
PHVuc2lnbmVkLCAxPiBieXRlY29kZU9mZnNldHNKdW1wZWRUbzsKLSAgICAgICAgICAgICAgICBm
aW5kSnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChjb2RlQmxvY2ssIGJ5dGVjb2RlT2Zmc2V0
LCBieXRlY29kZU9mZnNldHNKdW1wZWRUbyk7CisgICAgICAgICAgICAgICAgZmluZEp1bXBUYXJn
ZXRzRm9yQnl0ZWNvZGVPZmZzZXQoY29kZUJsb2NrLCBpbnN0cnVjdGlvbnNCZWdpbiwgYnl0ZWNv
ZGVPZmZzZXQsIGJ5dGVjb2RlT2Zmc2V0c0p1bXBlZFRvKTsKIAogICAgICAgICAgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBiYXNpY0Jsb2Nrcy5zaXplKCk7IGkrKykgewogICAgICAg
ICAgICAgICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIG90aGVyQmxvY2sgPSBiYXNpY0Jsb2Nr
c1tpXS5nZXQoKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGJ5dGVjb2RlT2Zmc2V0c0p1bXBl
ZFRvLmNvbnRhaW5zKG90aGVyQmxvY2stPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCkpKQorICAgICAg
ICAgICAgICAgICAgICBpZiAoYnl0ZWNvZGVPZmZzZXRzSnVtcGVkVG8uY29udGFpbnMob3RoZXJC
bG9jay0+bGVhZGVyT2Zmc2V0KCkpKQogICAgICAgICAgICAgICAgICAgICAgICAgbGlua0Jsb2Nr
cyhibG9jaywgb3RoZXJCbG9jayk7CiAgICAgICAgICAgICAgICAgfQogCkBAIC0yMjksMTAgKzE3
MywyMCBAQCB2b2lkIGNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzKENvZGVCbG9jayogY29kZUJs
b2NrLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dAogICAgICAgICB9CiAgICAgfQogCi0gICAg
YmFzaWNCbG9ja3MuYXBwZW5kKFdURk1vdmUoZXhpdCkpOworICAgIGFwcGVuZEJsb2NrKFdURk1v
dmUoZXhpdCkpOwogICAgIAogICAgIGZvciAoYXV0byYgYmFzaWNCbG9jayA6IGJhc2ljQmxvY2tz
KQogICAgICAgICBiYXNpY0Jsb2NrLT5zaHJpbmtUb0ZpdCgpOwogfQogCit2b2lkIEJ5dGVjb2Rl
QmFzaWNCbG9jazo6Y29tcHV0ZShDb2RlQmxvY2sqIGNvZGVCbG9jaywgSW5zdHJ1Y3Rpb24qIGlu
c3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50LCBWZWN0b3I8c3RkOjp1
bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+JiBiYXNpY0Jsb2NrcykKK3sKKyAgICBjb21w
dXRlSW1wbChjb2RlQmxvY2ssIGluc3RydWN0aW9uc0JlZ2luLCBpbnN0cnVjdGlvbkNvdW50LCBi
YXNpY0Jsb2Nrcyk7Cit9CisKK3ZvaWQgQnl0ZWNvZGVCYXNpY0Jsb2NrOjpjb21wdXRlKFVubGlu
a2VkQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFVubGlua2VkSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9u
c0JlZ2luLCB1bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50LCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRy
PEJ5dGVjb2RlQmFzaWNCbG9jaz4+JiBiYXNpY0Jsb2NrcykKK3sKKyAgICBCeXRlY29kZUJhc2lj
QmxvY2s6OmNvbXB1dGVJbXBsKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb25zQmVnaW4sIGluc3RydWN0
aW9uQ291bnQsIGJhc2ljQmxvY2tzKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmgKaW5k
ZXggY2Q3MTQ3N2VkNTA2YWE3ODgwMjE2NWZhY2RiN2E2ZDQ2ZjM4ZGMyYS4uODIxMGQ5ZWQyNmRh
MWU4ZGViOWI2OTAxOTM1NGZiZjA3NWYwMTM5MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suaApAQCAtMzMsNiArMzMsOSBAQAog
bmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIENvZGVCbG9jazsKK2NsYXNzIFVubGlua2VkQ29kZUJs
b2NrOworc3RydWN0IEluc3RydWN0aW9uOworc3RydWN0IFVubGlua2VkSW5zdHJ1Y3Rpb247CiAK
IGNsYXNzIEJ5dGVjb2RlQmFzaWNCbG9jayB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CkBAIC00Miw1MSArNDUsNTkgQEAgY2xhc3MgQnl0ZWNvZGVCYXNpY0Jsb2NrIHsKICAgICBCeXRl
Y29kZUJhc2ljQmxvY2soU3BlY2lhbEJsb2NrVHlwZSk7CiAgICAgdm9pZCBzaHJpbmtUb0ZpdCgp
OwogCi0gICAgYm9vbCBpc0VudHJ5QmxvY2soKSB7IHJldHVybiAhbV9sZWFkZXJCeXRlY29kZU9m
ZnNldCAmJiAhbV90b3RhbEJ5dGVjb2RlTGVuZ3RoOyB9Ci0gICAgYm9vbCBpc0V4aXRCbG9jaygp
IHsgcmV0dXJuIG1fbGVhZGVyQnl0ZWNvZGVPZmZzZXQgPT0gVUlOVF9NQVggJiYgbV90b3RhbEJ5
dGVjb2RlTGVuZ3RoID09IFVJTlRfTUFYOyB9CisgICAgYm9vbCBpc0VudHJ5QmxvY2soKSB7IHJl
dHVybiAhbV9sZWFkZXJPZmZzZXQgJiYgIW1fdG90YWxMZW5ndGg7IH0KKyAgICBib29sIGlzRXhp
dEJsb2NrKCkgeyByZXR1cm4gbV9sZWFkZXJPZmZzZXQgPT0gVUlOVF9NQVggJiYgbV90b3RhbExl
bmd0aCA9PSBVSU5UX01BWDsgfQogCi0gICAgdW5zaWduZWQgbGVhZGVyQnl0ZWNvZGVPZmZzZXQo
KSB7IHJldHVybiBtX2xlYWRlckJ5dGVjb2RlT2Zmc2V0OyB9Ci0gICAgdW5zaWduZWQgdG90YWxC
eXRlY29kZUxlbmd0aCgpIHsgcmV0dXJuIG1fdG90YWxCeXRlY29kZUxlbmd0aDsgfQorICAgIHVu
c2lnbmVkIGxlYWRlck9mZnNldCgpIHsgcmV0dXJuIG1fbGVhZGVyT2Zmc2V0OyB9CisgICAgdW5z
aWduZWQgdG90YWxMZW5ndGgoKSB7IHJldHVybiBtX3RvdGFsTGVuZ3RoOyB9CiAKLSAgICBWZWN0
b3I8dW5zaWduZWQ+JiBieXRlY29kZU9mZnNldHMoKSB7IHJldHVybiBtX2J5dGVjb2RlT2Zmc2V0
czsgfQotICAgIHZvaWQgYWRkQnl0ZWNvZGVMZW5ndGgodW5zaWduZWQpOworICAgIGNvbnN0IFZl
Y3Rvcjx1bnNpZ25lZD4mIG9mZnNldHMoKSBjb25zdCB7IHJldHVybiBtX29mZnNldHM7IH0KIAot
ICAgIFZlY3RvcjxCeXRlY29kZUJhc2ljQmxvY2sqPiYgc3VjY2Vzc29ycygpIHsgcmV0dXJuIG1f
c3VjY2Vzc29yczsgfQotICAgIHZvaWQgYWRkU3VjY2Vzc29yKEJ5dGVjb2RlQmFzaWNCbG9jayog
YmxvY2spIHsgbV9zdWNjZXNzb3JzLmFwcGVuZChibG9jayk7IH0KKyAgICBjb25zdCBWZWN0b3I8
Qnl0ZWNvZGVCYXNpY0Jsb2NrKj4mIHN1Y2Nlc3NvcnMoKSBjb25zdCB7IHJldHVybiBtX3N1Y2Nl
c3NvcnM7IH0KIAogICAgIEZhc3RCaXRWZWN0b3ImIGluKCkgeyByZXR1cm4gbV9pbjsgfQogICAg
IEZhc3RCaXRWZWN0b3ImIG91dCgpIHsgcmV0dXJuIG1fb3V0OyB9CiAKKyAgICB1bnNpZ25lZCBp
bmRleCgpIGNvbnN0IHsgcmV0dXJuIG1faW5kZXg7IH0KKworICAgIHN0YXRpYyB2b2lkIGNvbXB1
dGUoQ29kZUJsb2NrKiwgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBp
bnN0cnVjdGlvbkNvdW50LCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9j
az4+Jik7CisgICAgc3RhdGljIHZvaWQgY29tcHV0ZShVbmxpbmtlZENvZGVCbG9jayosIFVubGlu
a2VkSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBpbnN0cnVjdGlvbkNv
dW50LCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+Jik7CisKIHBy
aXZhdGU6Ci0gICAgdW5zaWduZWQgbV9sZWFkZXJCeXRlY29kZU9mZnNldDsKLSAgICB1bnNpZ25l
ZCBtX3RvdGFsQnl0ZWNvZGVMZW5ndGg7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQmxvY2ssIHR5
cGVuYW1lIEluc3RydWN0aW9uPiBzdGF0aWMgdm9pZCBjb21wdXRlSW1wbChCbG9jayogY29kZUJs
b2NrLCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGluc3RydWN0aW9u
Q291bnQsIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mIGJhc2lj
QmxvY2tzKTsKKworICAgIHZvaWQgYWRkU3VjY2Vzc29yKEJ5dGVjb2RlQmFzaWNCbG9jayogYmxv
Y2spIHsgbV9zdWNjZXNzb3JzLmFwcGVuZChibG9jayk7IH0KKworICAgIHZvaWQgYWRkTGVuZ3Ro
KHVuc2lnbmVkKTsKIAotICAgIFZlY3Rvcjx1bnNpZ25lZD4gbV9ieXRlY29kZU9mZnNldHM7Cisg
ICAgdW5zaWduZWQgbV9sZWFkZXJPZmZzZXQ7CisgICAgdW5zaWduZWQgbV90b3RhbExlbmd0aDsK
KyAgICB1bnNpZ25lZCBtX2luZGV4OworCisgICAgVmVjdG9yPHVuc2lnbmVkPiBtX29mZnNldHM7
CiAgICAgVmVjdG9yPEJ5dGVjb2RlQmFzaWNCbG9jayo+IG1fc3VjY2Vzc29yczsKIAogICAgIEZh
c3RCaXRWZWN0b3IgbV9pbjsKICAgICBGYXN0Qml0VmVjdG9yIG1fb3V0OwogfTsKIAotdm9pZCBj
b21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2NrcyhDb2RlQmxvY2sqLCBWZWN0b3I8c3RkOjp1bmlxdWVf
cHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+Jik7Ci0KIGlubGluZSBCeXRlY29kZUJhc2ljQmxvY2s6
OkJ5dGVjb2RlQmFzaWNCbG9jayh1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgbGVuZ3RoKQotICAg
IDogbV9sZWFkZXJCeXRlY29kZU9mZnNldChzdGFydCkKLSAgICAsIG1fdG90YWxCeXRlY29kZUxl
bmd0aChsZW5ndGgpCisgICAgOiBtX2xlYWRlck9mZnNldChzdGFydCkKKyAgICAsIG1fdG90YWxM
ZW5ndGgobGVuZ3RoKQogewotICAgIG1fYnl0ZWNvZGVPZmZzZXRzLmFwcGVuZChtX2xlYWRlckJ5
dGVjb2RlT2Zmc2V0KTsKKyAgICBtX29mZnNldHMuYXBwZW5kKG1fbGVhZGVyT2Zmc2V0KTsKIH0K
IAogaW5saW5lIEJ5dGVjb2RlQmFzaWNCbG9jazo6Qnl0ZWNvZGVCYXNpY0Jsb2NrKEJ5dGVjb2Rl
QmFzaWNCbG9jazo6U3BlY2lhbEJsb2NrVHlwZSBibG9ja1R5cGUpCi0gICAgOiBtX2xlYWRlckJ5
dGVjb2RlT2Zmc2V0KGJsb2NrVHlwZSA9PSBCeXRlY29kZUJhc2ljQmxvY2s6OkVudHJ5QmxvY2sg
PyAwIDogVUlOVF9NQVgpCi0gICAgLCBtX3RvdGFsQnl0ZWNvZGVMZW5ndGgoYmxvY2tUeXBlID09
IEJ5dGVjb2RlQmFzaWNCbG9jazo6RW50cnlCbG9jayA/IDAgOiBVSU5UX01BWCkKKyAgICA6IG1f
bGVhZGVyT2Zmc2V0KGJsb2NrVHlwZSA9PSBCeXRlY29kZUJhc2ljQmxvY2s6OkVudHJ5QmxvY2sg
PyAwIDogVUlOVF9NQVgpCisgICAgLCBtX3RvdGFsTGVuZ3RoKGJsb2NrVHlwZSA9PSBCeXRlY29k
ZUJhc2ljQmxvY2s6OkVudHJ5QmxvY2sgPyAwIDogVUlOVF9NQVgpCiB7CiB9CiAKLWlubGluZSB2
b2lkIEJ5dGVjb2RlQmFzaWNCbG9jazo6YWRkQnl0ZWNvZGVMZW5ndGgodW5zaWduZWQgYnl0ZWNv
ZGVMZW5ndGgpCitpbmxpbmUgdm9pZCBCeXRlY29kZUJhc2ljQmxvY2s6OmFkZExlbmd0aCh1bnNp
Z25lZCBieXRlY29kZUxlbmd0aCkKIHsKLSAgICBtX2J5dGVjb2RlT2Zmc2V0cy5hcHBlbmQobV9s
ZWFkZXJCeXRlY29kZU9mZnNldCArIG1fdG90YWxCeXRlY29kZUxlbmd0aCk7Ci0gICAgbV90b3Rh
bEJ5dGVjb2RlTGVuZ3RoICs9IGJ5dGVjb2RlTGVuZ3RoOworICAgIG1fb2Zmc2V0cy5hcHBlbmQo
bV9sZWFkZXJPZmZzZXQgKyBtX3RvdGFsTGVuZ3RoKTsKKyAgICBtX3RvdGFsTGVuZ3RoICs9IGJ5
dGVjb2RlTGVuZ3RoOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRp
b24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjk1OTAzZTIxZWJkZjE5NDBhOWZkMDc4M2IxMGY4MmYyYmE3ZmI3
YjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwCkBAIC0wLDAgKzEsMjY4IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE2IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKyAq
IENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJCeXRlY29kZUdlbmVyYXRvcmlm
aWNhdGlvbi5oIgorCisjaW5jbHVkZSAiQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzSW5saW5lcy5o
IgorI2luY2x1ZGUgIkJ5dGVjb2RlUmV3cml0ZXIuaCIKKyNpbmNsdWRlICJCeXRlY29kZVVzZURl
Zi5oIgorI2luY2x1ZGUgIklkZW50aWZpZXJJbmxpbmVzLmgiCisjaW5jbHVkZSAiSW50ZXJwcmV0
ZXJJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTQ0pTVmFs
dWVJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNHZW5lcmF0b3JGdW5jdGlvbi5oIgorI2luY2x1ZGUg
IlN0cm9uZ0lubGluZXMuaCIKKyNpbmNsdWRlICJVbmxpbmtlZENvZGVCbG9jay5oIgorI2luY2x1
ZGUgPHd0Zi9PcHRpb25hbC5oPgorCituYW1lc3BhY2UgSlNDIHsKKworc3RydWN0IFlpZWxkRGF0
YSB7CisgICAgc2l6ZV90IHBvaW50IHsgMCB9OworICAgIGludCBhcmd1bWVudCB7IDAgfTsKKyAg
ICBGYXN0Qml0VmVjdG9yIGxpdmVuZXNzOworfTsKKworY2xhc3MgQnl0ZWNvZGVHZW5lcmF0b3Jp
ZmljYXRpb24geworcHVibGljOgorICAgIHR5cGVkZWYgVmVjdG9yPFlpZWxkRGF0YT4gWWllbGRz
OworCisgICAgQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24oVW5saW5rZWRDb2RlQmxvY2sqIGNv
ZGVCbG9jaywgVW5saW5rZWRDb2RlQmxvY2s6OlVucGFja2VkSW5zdHJ1Y3Rpb25zJiBpbnN0cnVj
dGlvbnMsIFN5bWJvbFRhYmxlKiBnZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlLCBpbnQgZ2VuZXJh
dG9yRnJhbWVTeW1ib2xUYWJsZUluZGV4KQorICAgICAgICA6IG1fZ3JhcGgoY29kZUJsb2NrLCBp
bnN0cnVjdGlvbnMpCisgICAgICAgICwgbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlKCpjb2Rl
QmxvY2stPnZtKCksIGdlbmVyYXRvckZyYW1lU3ltYm9sVGFibGUpCisgICAgICAgICwgbV9nZW5l
cmF0b3JGcmFtZVN5bWJvbFRhYmxlSW5kZXgoZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZUluZGV4
KQorICAgIHsKKyAgICAgICAgZm9yIChCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrIDogbV9ncmFw
aCkgeworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBieXRlY29kZU9mZnNldCA6IGJsb2NrLT5v
ZmZzZXRzKCkpIHsKKyAgICAgICAgICAgICAgICBjb25zdCBVbmxpbmtlZEluc3RydWN0aW9uKiBw
YyA9ICZtX2dyYXBoLmluc3RydWN0aW9ucygpW2J5dGVjb2RlT2Zmc2V0XTsKKyAgICAgICAgICAg
ICAgICBzd2l0Y2ggKHBjLT51Lm9wY29kZSkgeworICAgICAgICAgICAgICAgIGNhc2Ugb3BfZW50
ZXI6IHsKKyAgICAgICAgICAgICAgICAgICAgbV9lbnRlclBvaW50ID0gYnl0ZWNvZGVPZmZzZXQ7
CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgICAgIGNhc2Ugb3BfeWllbGQ6IHsKKyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg
bGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gcGNbMl0udS5pbmRleDsKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKGxpdmVDYWxsZWVMb2NhbHNJbmRleCA+PSBtX3lpZWxkcy5zaXplKCkpCisgICAgICAg
ICAgICAgICAgICAgICAgICBtX3lpZWxkcy5yZXNpemUobGl2ZUNhbGxlZUxvY2Fsc0luZGV4ICsg
MSk7CisgICAgICAgICAgICAgICAgICAgIFlpZWxkRGF0YSYgZGF0YSA9IG1feWllbGRzW2xpdmVD
YWxsZWVMb2NhbHNJbmRleF07CisgICAgICAgICAgICAgICAgICAgIGRhdGEucG9pbnQgPSBieXRl
Y29kZU9mZnNldDsKKyAgICAgICAgICAgICAgICAgICAgZGF0YS5hcmd1bWVudCA9IHBjWzNdLnUu
b3BlcmFuZDsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQor
CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAg
c3RydWN0IFN0b3JhZ2UgeworICAgICAgICBJZGVudGlmaWVyIGlkZW50aWZpZXI7CisgICAgICAg
IHVuc2lnbmVkIGlkZW50aWZpZXJJbmRleDsKKyAgICAgICAgU2NvcGVPZmZzZXQgc2NvcGVPZmZz
ZXQ7CisgICAgfTsKKworICAgIHZvaWQgcnVuKCk7CisKKyAgICBCeXRlY29kZUdyYXBoPFVubGlu
a2VkQ29kZUJsb2NrPiYgZ3JhcGgoKSB7IHJldHVybiBtX2dyYXBoOyB9CisKKyAgICBjb25zdCBZ
aWVsZHMmIHlpZWxkcygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV95aWVsZHM7Cisg
ICAgfQorCisgICAgWWllbGRzJiB5aWVsZHMoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1feWll
bGRzOworICAgIH0KKworICAgIHVuc2lnbmVkIGVudGVyUG9pbnQoKSBjb25zdAorICAgIHsKKyAg
ICAgICAgcmV0dXJuIG1fZW50ZXJQb2ludDsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgU3RvcmFn
ZSBzdG9yYWdlRm9yR2VuZXJhdG9yTG9jYWwodW5zaWduZWQgaW5kZXgpCisgICAgeworICAgICAg
ICAvLyBXZSBhc3NpZ24gYSBzeW1ib2wgdG8gYSByZWdpc3Rlci4gVGhlcmUgaXMgb25lLW9uLW9u
ZSBjb3JyZXNwb25kaW5nIGJldHdlZW4gYSByZWdpc3RlciBhbmQgYSBzeW1ib2wuCisgICAgICAg
IC8vIEJ5IGRvaW5nIHNvLCB3ZSBhbGxvY2F0ZSB0aGUgc3BlY2lmaWMgc3RvcmFnZSB0byBzYXZl
IHRoZSBnaXZlbiByZWdpc3Rlci4KKyAgICAgICAgLy8gVGhpcyBhbGxvdyB1cyBub3QgdG8gc2F2
ZSBhbGwgdGhlIGxpdmUgcmVnaXN0ZXJzIGV2ZW4gaWYgdGhlIHJlZ2lzdGVycyBhcmUgbm90IG92
ZXJ3cml0dGVuIGZyb20gdGhlIHByZXZpb3VzIHJlc3VtaW5nIHRpbWUuCisgICAgICAgIC8vIEl0
IG1lYW5zIHRoYXQsIHRoZSByZWdpc3RlciBjYW4gYmUgcmV0cmlldmVkIGV2ZW4gaWYgdGhlIGlt
bWVkaWF0ZSBwcmV2aW91cyBvcF9zYXZlIGRvZXMgbm90IHNhdmUgaXQuCisKKyAgICAgICAgaWYg
KG1fc3RvcmFnZXMuc2l6ZSgpIDw9IGluZGV4KQorICAgICAgICAgICAgbV9zdG9yYWdlcy5yZXNp
emUoaW5kZXggKyAxKTsKKyAgICAgICAgaWYgKE9wdGlvbmFsPFN0b3JhZ2U+IHN0b3JhZ2UgPSBt
X3N0b3JhZ2VzW2luZGV4XSkKKyAgICAgICAgICAgIHJldHVybiAqc3RvcmFnZTsKKworICAgICAg
ICBVbmxpbmtlZENvZGVCbG9jayogY29kZUJsb2NrID0gbV9ncmFwaC5jb2RlQmxvY2soKTsKKyAg
ICAgICAgSWRlbnRpZmllciBpZGVudGlmaWVyID0gSWRlbnRpZmllcjo6ZnJvbVVpZChQcml2YXRl
TmFtZSgpKTsKKyAgICAgICAgdW5zaWduZWQgaWRlbnRpZmllckluZGV4ID0gY29kZUJsb2NrLT5u
dW1iZXJPZklkZW50aWZpZXJzKCk7CisgICAgICAgIGNvZGVCbG9jay0+YWRkSWRlbnRpZmllcihp
ZGVudGlmaWVyKTsKKyAgICAgICAgU2NvcGVPZmZzZXQgc2NvcGVPZmZzZXQgPSBtX2dlbmVyYXRv
ckZyYW1lU3ltYm9sVGFibGUtPnRha2VOZXh0U2NvcGVPZmZzZXQoTm9Mb2NraW5nTmVjZXNzYXJ5
KTsKKyAgICAgICAgbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlLT5zZXQoTm9Mb2NraW5nTmVj
ZXNzYXJ5LCBpZGVudGlmaWVyLmltcGwoKSwgU3ltYm9sVGFibGVFbnRyeShWYXJPZmZzZXQoc2Nv
cGVPZmZzZXQpKSk7CisKKyAgICAgICAgU3RvcmFnZSBzdG9yYWdlID0geworICAgICAgICAgICAg
aWRlbnRpZmllciwKKyAgICAgICAgICAgIGlkZW50aWZpZXJJbmRleCwKKyAgICAgICAgICAgIHNj
b3BlT2Zmc2V0CisgICAgICAgIH07CisgICAgICAgIG1fc3RvcmFnZXNbaW5kZXhdID0gc3RvcmFn
ZTsKKyAgICAgICAgcmV0dXJuIHN0b3JhZ2U7CisgICAgfQorCisgICAgdW5zaWduZWQgbV9lbnRl
clBvaW50IHsgMCB9OworICAgIEJ5dGVjb2RlR3JhcGg8VW5saW5rZWRDb2RlQmxvY2s+IG1fZ3Jh
cGg7CisgICAgVmVjdG9yPE9wdGlvbmFsPFN0b3JhZ2U+PiBtX3N0b3JhZ2VzOworICAgIFlpZWxk
cyBtX3lpZWxkczsKKyAgICBTdHJvbmc8U3ltYm9sVGFibGU+IG1fZ2VuZXJhdG9yRnJhbWVTeW1i
b2xUYWJsZTsKKyAgICBpbnQgbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlSW5kZXg7Cit9Owor
CitjbGFzcyBHZW5lcmF0b3JMaXZlbmVzc0FuYWx5c2lzIDogcHVibGljIEJ5dGVjb2RlTGl2ZW5l
c3NQcm9wYWdhdGlvbjxHZW5lcmF0b3JMaXZlbmVzc0FuYWx5c2lzPiB7CitwdWJsaWM6CisgICAg
R2VuZXJhdG9yTGl2ZW5lc3NBbmFseXNpcyhCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbiYgZ2Vu
ZXJhdG9yaWZpY2F0aW9uKQorICAgICAgICA6IG1fZ2VuZXJhdG9yaWZpY2F0aW9uKGdlbmVyYXRv
cmlmaWNhdGlvbikKKyAgICB7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rv
cj4KKyAgICB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoVW5saW5rZWRDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgT3Bjb2RlSUQgb3Bjb2RlSUQsIFVubGlua2VkSW5zdHJ1Y3Rpb24qIGlu
c3RydWN0aW9uLCBGYXN0Qml0VmVjdG9yJiwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikKKyAgICB7
CisgICAgICAgIEpTQzo6Y29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChjb2RlQmxvY2ssIG9w
Y29kZUlELCBpbnN0cnVjdGlvbiwgZnVuY3Rvcik7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgRnVuY3Rvcj4KKyAgICB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoVW5s
aW5rZWRDb2RlQmxvY2sqIGNvZGVCbG9jaywgT3Bjb2RlSUQgb3Bjb2RlSUQsIFVubGlua2VkSW5z
dHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBGYXN0Qml0VmVjdG9yJiwgY29uc3QgRnVuY3RvciYgZnVu
Y3RvcikKKyAgICB7CisgICAgICAgIEpTQzo6Y29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldChj
b2RlQmxvY2ssIG9wY29kZUlELCBpbnN0cnVjdGlvbiwgZnVuY3Rvcik7CisgICAgfQorCisgICAg
dm9pZCBydW4oKQorICAgIHsKKyAgICAgICAgLy8gUGVyZm9ybSBtb2RpZmllZCBsaXZlbmVzcyBh
bmFseXNpcyB0byBkZXRlcm1pbmUgd2hpY2ggbG9jYWxzIGFyZSBsaXZlIGF0IHRoZSBtZXJnZSBw
b2ludHMuCisgICAgICAgIC8vIFRoaXMgcHJvZHVjZXMgdGhlIGNvbnNlcnZhdGl2ZSByZXN1bHRz
IGZvciB0aGUgcXVlc3Rpb24sICJ3aGljaCB2YXJpYWJsZXMgc2hvdWxkIGJlIHNhdmVkIGFuZCBy
ZXN1bWVkPyIuCisKKyAgICAgICAgcnVuTGl2ZW5lc3NGaXhwb2ludChtX2dlbmVyYXRvcmlmaWNh
dGlvbi5ncmFwaCgpKTsKKworICAgICAgICBmb3IgKFlpZWxkRGF0YSYgZGF0YSA6IG1fZ2VuZXJh
dG9yaWZpY2F0aW9uLnlpZWxkcygpKQorICAgICAgICAgICAgZGF0YS5saXZlbmVzcyA9IGdldExp
dmVuZXNzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQobV9nZW5lcmF0b3JpZmljYXRpb24uZ3JhcGgoKSwg
ZGF0YS5wb2ludCArIG9wY29kZUxlbmd0aChvcF95aWVsZCkpOworICAgIH0KKworcHJpdmF0ZToK
KyAgICBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbiYgbV9nZW5lcmF0b3JpZmljYXRpb247Cit9
OworCit2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uOjpydW4oKQoreworICAgIC8vIFdl
IGNhbGN1bGF0ZSB0aGUgbGl2ZW5lc3MgYXQgZWFjaCBtZXJnZSBwb2ludC4gVGhpcyBnaXZlcyB1
cyB0aGUgaW5mb3JtYXRpb24gd2hpY2ggcmVnaXN0ZXJzIHNob3VsZCBiZSBzYXZlZCBhbmQgcmVz
dW1lZCBjb25zZXJ2YXRpdmVseS4KKworICAgIHsKKyAgICAgICAgR2VuZXJhdG9yTGl2ZW5lc3NB
bmFseXNpcyBwYXNzKCp0aGlzKTsKKyAgICAgICAgcGFzcy5ydW4oKTsKKyAgICB9CisKKyAgICBV
bmxpbmtlZENvZGVCbG9jayogY29kZUJsb2NrID0gbV9ncmFwaC5jb2RlQmxvY2soKTsKKyAgICBC
eXRlY29kZVJld3JpdGVyIHJld3JpdGVyKG1fZ3JhcGgpOworCisgICAgLy8gU2V0dXAgdGhlIGds
b2JhbCBzd2l0Y2ggZm9yIHRoZSBnZW5lcmF0b3IuCisgICAgeworICAgICAgICB1bnNpZ25lZCBu
ZXh0VG9FbnRlclBvaW50ID0gZW50ZXJQb2ludCgpICsgb3Bjb2RlTGVuZ3RoKG9wX2VudGVyKTsK
KyAgICAgICAgdW5zaWduZWQgc3dpdGNoVGFibGVJbmRleCA9IG1fZ3JhcGguY29kZUJsb2NrKCkt
Pm51bWJlck9mU3dpdGNoSnVtcFRhYmxlcygpOworICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgc3Rh
dGUgPSB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dl
bmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JBcmd1bWVudDo6U3RhdGUpKTsKKyAgICAgICAgYXV0
byYganVtcFRhYmxlID0gbV9ncmFwaC5jb2RlQmxvY2soKS0+YWRkU3dpdGNoSnVtcFRhYmxlKCk7
CisgICAgICAgIGp1bXBUYWJsZS5taW4gPSAwOworICAgICAgICBqdW1wVGFibGUuYnJhbmNoT2Zm
c2V0cy5yZXNpemUobV95aWVsZHMuc2l6ZSgpICsgMSk7CisgICAgICAgIGp1bXBUYWJsZS5icmFu
Y2hPZmZzZXRzLmZpbGwoMCk7CisgICAgICAgIGp1bXBUYWJsZS5hZGQoMCwgbmV4dFRvRW50ZXJQ
b2ludCk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3lpZWxkcy5zaXplKCk7
ICsraSkKKyAgICAgICAgICAgIGp1bXBUYWJsZS5hZGQoaSArIDEsIG1feWllbGRzW2ldLnBvaW50
KTsKKworICAgICAgICByZXdyaXRlci5pbnNlcnRGcmFnbWVudEJlZm9yZShuZXh0VG9FbnRlclBv
aW50LCBbJl0oQnl0ZWNvZGVSZXdyaXRlcjo6RnJhZ21lbnQmIGZyYWdtZW50KSB7CisgICAgICAg
ICAgICBmcmFnbWVudC5hcHBlbmRJbnN0cnVjdGlvbihvcF9zd2l0Y2hfaW1tLCBzd2l0Y2hUYWJs
ZUluZGV4LCBuZXh0VG9FbnRlclBvaW50LCBzdGF0ZS5vZmZzZXQoKSk7CisgICAgICAgIH0pOwor
ICAgIH0KKworICAgIGZvciAoY29uc3QgWWllbGREYXRhJiBkYXRhIDogbV95aWVsZHMpIHsKKyAg
ICAgICAgVmlydHVhbFJlZ2lzdGVyIHNjb3BlID0gdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQo
c3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6R2VuZXJhdG9yQXJndW1l
bnQ6OkZyYW1lKSk7CisKKyAgICAgICAgLy8gRW1pdCBzYXZlIHNlcXVlbmNlLgorICAgICAgICBy
ZXdyaXRlci5pbnNlcnRGcmFnbWVudEJlZm9yZShkYXRhLnBvaW50LCBbJl0oQnl0ZWNvZGVSZXdy
aXRlcjo6RnJhZ21lbnQmIGZyYWdtZW50KSB7CisgICAgICAgICAgICBkYXRhLmxpdmVuZXNzLmZv
ckVhY2hTZXRCaXQoWyZdKHNpemVfdCBpbmRleCkgeworICAgICAgICAgICAgICAgIFZpcnR1YWxS
ZWdpc3RlciBvcGVyYW5kID0gdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaW5kZXgpOworICAgICAg
ICAgICAgICAgIFN0b3JhZ2Ugc3RvcmFnZSA9IHN0b3JhZ2VGb3JHZW5lcmF0b3JMb2NhbChpbmRl
eCk7CisKKyAgICAgICAgICAgICAgICBmcmFnbWVudC5hcHBlbmRJbnN0cnVjdGlvbigKKyAgICAg
ICAgICAgICAgICAgICAgb3BfcHV0X3RvX3Njb3BlLAorICAgICAgICAgICAgICAgICAgICBzY29w
ZS5vZmZzZXQoKSwgLy8gc2NvcGUKKyAgICAgICAgICAgICAgICAgICAgc3RvcmFnZS5pZGVudGlm
aWVySW5kZXgsIC8vIGlkZW50aWZpZXIKKyAgICAgICAgICAgICAgICAgICAgb3BlcmFuZC5vZmZz
ZXQoKSwgLy8gdmFsdWUKKyAgICAgICAgICAgICAgICAgICAgR2V0UHV0SW5mbyhEb05vdFRocm93
SWZOb3RGb3VuZCwgTG9jYWxDbG9zdXJlVmFyLCBJbml0aWFsaXphdGlvbk1vZGU6Ok5vdEluaXRp
YWxpemF0aW9uKS5vcGVyYW5kKCksIC8vIGluZm8KKyAgICAgICAgICAgICAgICAgICAgbV9nZW5l
cmF0b3JGcmFtZVN5bWJvbFRhYmxlSW5kZXgsIC8vIHN5bWJvbCB0YWJsZSBjb25zdGFudCBpbmRl
eAorICAgICAgICAgICAgICAgICAgICBzdG9yYWdlLnNjb3BlT2Zmc2V0Lm9mZnNldCgpIC8vIHNj
b3BlIG9mZnNldAorICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICB9KTsKKworICAgICAg
ICAgICAgLy8gSW5zZXJ0IG9wX3JldCBqdXN0IGFmdGVyIHNhdmUgc2VxdWVuY2UuCisgICAgICAg
ICAgICBmcmFnbWVudC5hcHBlbmRJbnN0cnVjdGlvbihvcF9yZXQsIGRhdGEuYXJndW1lbnQpOwor
ICAgICAgICB9KTsKKworICAgICAgICAvLyBFbWl0IHJlc3VtZSBzZXF1ZW5jZS4KKyAgICAgICAg
cmV3cml0ZXIuaW5zZXJ0RnJhZ21lbnRBZnRlcihkYXRhLnBvaW50LCBbJl0oQnl0ZWNvZGVSZXdy
aXRlcjo6RnJhZ21lbnQmIGZyYWdtZW50KSB7CisgICAgICAgICAgICBkYXRhLmxpdmVuZXNzLmZv
ckVhY2hTZXRCaXQoWyZdKHNpemVfdCBpbmRleCkgeworICAgICAgICAgICAgICAgIFZpcnR1YWxS
ZWdpc3RlciBvcGVyYW5kID0gdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaW5kZXgpOworICAgICAg
ICAgICAgICAgIFN0b3JhZ2Ugc3RvcmFnZSA9IHN0b3JhZ2VGb3JHZW5lcmF0b3JMb2NhbChpbmRl
eCk7CisKKyAgICAgICAgICAgICAgICBVbmxpbmtlZFZhbHVlUHJvZmlsZSBwcm9maWxlID0gY29k
ZUJsb2NrLT5hZGRWYWx1ZVByb2ZpbGUoKTsKKyAgICAgICAgICAgICAgICBmcmFnbWVudC5hcHBl
bmRJbnN0cnVjdGlvbigKKyAgICAgICAgICAgICAgICAgICAgb3BfZ2V0X2Zyb21fc2NvcGUsCisg
ICAgICAgICAgICAgICAgICAgIG9wZXJhbmQub2Zmc2V0KCksIC8vIGRzdAorICAgICAgICAgICAg
ICAgICAgICBzY29wZS5vZmZzZXQoKSwgLy8gc2NvcGUKKyAgICAgICAgICAgICAgICAgICAgc3Rv
cmFnZS5pZGVudGlmaWVySW5kZXgsIC8vIGlkZW50aWZpZXIKKyAgICAgICAgICAgICAgICAgICAg
R2V0UHV0SW5mbyhEb05vdFRocm93SWZOb3RGb3VuZCwgTG9jYWxDbG9zdXJlVmFyLCBJbml0aWFs
aXphdGlvbk1vZGU6Ok5vdEluaXRpYWxpemF0aW9uKS5vcGVyYW5kKCksIC8vIGluZm8KKyAgICAg
ICAgICAgICAgICAgICAgMCwgLy8gbG9jYWwgc2NvcGUgZGVwdGgKKyAgICAgICAgICAgICAgICAg
ICAgc3RvcmFnZS5zY29wZU9mZnNldC5vZmZzZXQoKSwgLy8gc2NvcGUgb2Zmc2V0CisgICAgICAg
ICAgICAgICAgICAgIHByb2ZpbGUgLy8gcHJvZmlsZQorICAgICAgICAgICAgICAgICk7CisgICAg
ICAgICAgICB9KTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgLy8gQ2xpcCB0aGUgdW5uZWNlc3Nh
cnkgYnl0ZWNvZGVzLgorICAgICAgICByZXdyaXRlci5yZW1vdmVCeXRlY29kZShkYXRhLnBvaW50
KTsKKyAgICB9CisKKyAgICByZXdyaXRlci5leGVjdXRlKCk7Cit9CisKK3ZvaWQgcGVyZm9ybUdl
bmVyYXRvcmlmaWNhdGlvbihVbmxpbmtlZENvZGVCbG9jayogY29kZUJsb2NrLCBVbmxpbmtlZENv
ZGVCbG9jazo6VW5wYWNrZWRJbnN0cnVjdGlvbnMmIGluc3RydWN0aW9ucywgU3ltYm9sVGFibGUq
IGdlbmVyYXRvckZyYW1lU3ltYm9sVGFibGUsIGludCBnZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxl
SW5kZXgpCit7CisgICAgQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24gcGFzcyhjb2RlQmxvY2ss
IGluc3RydWN0aW9ucywgZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZSwgZ2VuZXJhdG9yRnJhbWVT
eW1ib2xUYWJsZUluZGV4KTsKKyAgICBwYXNzLnJ1bigpOworfQorCit9IC8vIG5hbWVzcGFjZSBK
U0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUdl
bmVyYXRvcmlmaWNhdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVj
b2RlR2VuZXJhdG9yaWZpY2F0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzdiNjEzNzQ2MDg2YWUzNGM0YzBh
MjJiZjRlNjdjNzZlNmNmZDRlOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5oCkBAIC0wLDAgKzEsMzcg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFA
Z21haWwuY29tPgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJVbmxpbmtlZENv
ZGVCbG9jay5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgU3ltYm9sVGFibGU7CisKK3Zv
aWQgcGVyZm9ybUdlbmVyYXRvcmlmaWNhdGlvbihVbmxpbmtlZENvZGVCbG9jayosIFVubGlua2Vk
Q29kZUJsb2NrOjpVbnBhY2tlZEluc3RydWN0aW9ucyYsIFN5bWJvbFRhYmxlKiBnZW5lcmF0b3JG
cmFtZVN5bWJvbFRhYmxlLCBpbnQgZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZUluZGV4KTsKKwor
fSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVHcmFwaC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlR3JhcGguaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zOGExM2M2MDE0NWYzMmZlNmM1YWI3NmFjMjQ5ZWU0
YTFmZWIxOTMwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlR3JhcGguaApAQCAtMCwwICsxLDEyNSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNiBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisgKiBDb3B5cmln
aHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkJ5dGVjb2RlQmFzaWNCbG9jay5oIgorI2luY2x1ZGUg
PHd0Zi9JbmRleGVkQ29udGFpbmVySXRlcmF0b3IuaD4KKyNpbmNsdWRlIDx3dGYvSXRlcmF0b3JS
YW5nZS5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2Ns
YXNzIEJ5dGVjb2RlQmFzaWNCbG9jazsKKwordGVtcGxhdGU8dHlwZW5hbWUgQmxvY2s+CitjbGFz
cyBCeXRlY29kZUdyYXBoIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShCeXRlY29kZUdyYXBoKTsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEJs
b2NrIENvZGVCbG9jazsKKyAgICB0eXBlZGVmIHR5cGVuYW1lIEJsb2NrOjpJbnN0cnVjdGlvbiBJ
bnN0cnVjdGlvbjsKKyAgICB0eXBlZGVmIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVC
YXNpY0Jsb2NrPj4gQmFzaWNCbG9ja3NWZWN0b3I7CisKKyAgICB0eXBlZGVmIFdURjo6SW5kZXhl
ZENvbnRhaW5lckl0ZXJhdG9yPEJ5dGVjb2RlR3JhcGg8QmxvY2s+PiBpdGVyYXRvcjsKKworICAg
IGlubGluZSBCeXRlY29kZUdyYXBoKEJsb2NrKiwgdHlwZW5hbWUgQmxvY2s6OlVucGFja2VkSW5z
dHJ1Y3Rpb25zJik7CisKKyAgICBCbG9jayogY29kZUJsb2NrKCkgY29uc3QgeyByZXR1cm4gbV9j
b2RlQmxvY2s7IH0KKworICAgIHR5cGVuYW1lIEJsb2NrOjpVbnBhY2tlZEluc3RydWN0aW9ucyYg
aW5zdHJ1Y3Rpb25zKCkgeyByZXR1cm4gbV9pbnN0cnVjdGlvbnM7IH0KKworICAgIFdURjo6SXRl
cmF0b3JSYW5nZTxCYXNpY0Jsb2Nrc1ZlY3Rvcjo6cmV2ZXJzZV9pdGVyYXRvcj4gYmFzaWNCbG9j
a3NJblJldmVyc2VPcmRlcigpCisgICAgeworICAgICAgICByZXR1cm4gV1RGOjptYWtlSXRlcmF0
b3JSYW5nZShtX2Jhc2ljQmxvY2tzLnJiZWdpbigpLCBtX2Jhc2ljQmxvY2tzLnJlbmQoKSk7Cisg
ICAgfQorCisgICAgc3RhdGljIGJvb2wgYmxvY2tDb250YWluc0J5dGVjb2RlT2Zmc2V0KEJ5dGVj
b2RlQmFzaWNCbG9jayogYmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KQorICAgIHsKKyAg
ICAgICAgdW5zaWduZWQgbGVhZGVyT2Zmc2V0ID0gYmxvY2stPmxlYWRlck9mZnNldCgpOworICAg
ICAgICByZXR1cm4gYnl0ZWNvZGVPZmZzZXQgPj0gbGVhZGVyT2Zmc2V0ICYmIGJ5dGVjb2RlT2Zm
c2V0IDwgbGVhZGVyT2Zmc2V0ICsgYmxvY2stPnRvdGFsTGVuZ3RoKCk7CisgICAgfQorCisgICAg
Qnl0ZWNvZGVCYXNpY0Jsb2NrKiBmaW5kQmFzaWNCbG9ja0ZvckJ5dGVjb2RlT2Zmc2V0KHVuc2ln
bmVkIGJ5dGVjb2RlT2Zmc2V0KQorICAgIHsKKyAgICAgICAgLyoKKyAgICAgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBtX2Jhc2ljQmxvY2tzLnNpemUoKTsgaSsrKSB7CisgICAgICAg
ICAgICAgICAgaWYgKGJsb2NrQ29udGFpbnNCeXRlY29kZU9mZnNldChtX2Jhc2ljQmxvY2tzW2ld
LmdldCgpLCBieXRlY29kZU9mZnNldCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBtX2Jh
c2ljQmxvY2tzW2ldLmdldCgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIDA7
CisgICAgICAgICovCisKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9j
az4qIGJhc2ljQmxvY2sgPSBhcHByb3hpbWF0ZUJpbmFyeVNlYXJjaDxzdGQ6OnVuaXF1ZV9wdHI8
Qnl0ZWNvZGVCYXNpY0Jsb2NrPiwgdW5zaWduZWQ+KG1fYmFzaWNCbG9ja3MsIG1fYmFzaWNCbG9j
a3Muc2l6ZSgpLCBieXRlY29kZU9mZnNldCwgW10gKHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJh
c2ljQmxvY2s+KiBiYXNpY0Jsb2NrKSB7IHJldHVybiAoKmJhc2ljQmxvY2spLT5sZWFkZXJPZmZz
ZXQoKTsgfSk7CisgICAgICAgIC8vIFdlIGZvdW5kIHRoZSBibG9jayB3ZSB3ZXJlIGxvb2tpbmcg
Zm9yLgorICAgICAgICBpZiAoYmxvY2tDb250YWluc0J5dGVjb2RlT2Zmc2V0KCgqYmFzaWNCbG9j
aykuZ2V0KCksIGJ5dGVjb2RlT2Zmc2V0KSkKKyAgICAgICAgICAgIHJldHVybiAoKmJhc2ljQmxv
Y2spLmdldCgpOworCisgICAgICAgIC8vIEJhc2ljIGJsb2NrIGlzIHRvIHRoZSBsZWZ0IG9mIHRo
ZSByZXR1cm5lZCBibG9jay4KKyAgICAgICAgaWYgKGJ5dGVjb2RlT2Zmc2V0IDwgKCpiYXNpY0Js
b2NrKS0+bGVhZGVyT2Zmc2V0KCkpIHsKKyAgICAgICAgICAgIEFTU0VSVChiYXNpY0Jsb2NrIC0g
MSA+PSBtX2Jhc2ljQmxvY2tzLmRhdGEoKSk7CisgICAgICAgICAgICBBU1NFUlQoYmxvY2tDb250
YWluc0J5dGVjb2RlT2Zmc2V0KGJhc2ljQmxvY2tbLTFdLmdldCgpLCBieXRlY29kZU9mZnNldCkp
OworICAgICAgICAgICAgcmV0dXJuIGJhc2ljQmxvY2tbLTFdLmdldCgpOworICAgICAgICB9CisK
KyAgICAgICAgLy8gQmFzaWMgYmxvY2sgaXMgdG8gdGhlIHJpZ2h0IG9mIHRoZSByZXR1cm5lZCBi
bG9jay4KKyAgICAgICAgQVNTRVJUKCZiYXNpY0Jsb2NrWzFdIDw9ICZtX2Jhc2ljQmxvY2tzLmxh
c3QoKSk7CisgICAgICAgIEFTU0VSVChibG9ja0NvbnRhaW5zQnl0ZWNvZGVPZmZzZXQoYmFzaWNC
bG9ja1sxXS5nZXQoKSwgYnl0ZWNvZGVPZmZzZXQpKTsKKyAgICAgICAgcmV0dXJuIGJhc2ljQmxv
Y2tbMV0uZ2V0KCk7CisgICAgfQorCisgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBmaW5kQmFzaWNC
bG9ja1dpdGhMZWFkZXJPZmZzZXQodW5zaWduZWQgbGVhZGVyT2Zmc2V0KQorICAgIHsKKyAgICAg
ICAgcmV0dXJuICgqdHJ5QmluYXJ5U2VhcmNoPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2lj
QmxvY2s+LCB1bnNpZ25lZD4obV9iYXNpY0Jsb2NrcywgbV9iYXNpY0Jsb2Nrcy5zaXplKCksIGxl
YWRlck9mZnNldCwgW10gKHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+KiBiYXNp
Y0Jsb2NrKSB7IHJldHVybiAoKmJhc2ljQmxvY2spLT5sZWFkZXJPZmZzZXQoKTsgfSkpLmdldCgp
OworICAgIH0KKworICAgIHVuc2lnbmVkIHNpemUoKSBjb25zdCB7IHJldHVybiBtX2Jhc2ljQmxv
Y2tzLnNpemUoKTsgfQorICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogYXQodW5zaWduZWQgaW5kZXgp
IGNvbnN0IHsgcmV0dXJuIG1fYmFzaWNCbG9ja3NbaW5kZXhdLmdldCgpOyB9CisgICAgQnl0ZWNv
ZGVCYXNpY0Jsb2NrKiBvcGVyYXRvcltdKHVuc2lnbmVkIGluZGV4KSBjb25zdCB7IHJldHVybiBh
dChpbmRleCk7IH0KKworICAgIGl0ZXJhdG9yIGJlZ2luKCkgY29uc3QgeyByZXR1cm4gaXRlcmF0
b3IoKnRoaXMsIDApOyB9CisgICAgaXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gaXRlcmF0
b3IoKnRoaXMsIHNpemUoKSk7IH0KKyAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGZpcnN0KCkgeyBy
ZXR1cm4gYXQoMCk7IH0KKyAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGxhc3QoKSB7IHJldHVybiBh
dChzaXplKCkgLSAxKTsgfQorCitwcml2YXRlOgorICAgIEJsb2NrKiBtX2NvZGVCbG9jazsKKyAg
ICBCYXNpY0Jsb2Nrc1ZlY3RvciBtX2Jhc2ljQmxvY2tzOworICAgIHR5cGVuYW1lIEJsb2NrOjpV
bnBhY2tlZEluc3RydWN0aW9ucyYgbV9pbnN0cnVjdGlvbnM7Cit9OworCisKK3RlbXBsYXRlPHR5
cGVuYW1lIEJsb2NrPgorQnl0ZWNvZGVHcmFwaDxCbG9jaz46OkJ5dGVjb2RlR3JhcGgoQmxvY2sq
IGNvZGVCbG9jaywgdHlwZW5hbWUgQmxvY2s6OlVucGFja2VkSW5zdHJ1Y3Rpb25zJiBpbnN0cnVj
dGlvbnMpCisgICAgOiBtX2NvZGVCbG9jayhjb2RlQmxvY2spCisgICAgLCBtX2luc3RydWN0aW9u
cyhpbnN0cnVjdGlvbnMpCit7CisgICAgQVNTRVJUKG1fY29kZUJsb2NrKTsKKyAgICBCeXRlY29k
ZUJhc2ljQmxvY2s6OmNvbXB1dGUobV9jb2RlQmxvY2ssIGluc3RydWN0aW9ucy5iZWdpbigpLCBp
bnN0cnVjdGlvbnMuc2l6ZSgpLCBtX2Jhc2ljQmxvY2tzKTsKKyAgICBBU1NFUlQobV9iYXNpY0Js
b2Nrcy5zaXplKCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbiBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgppbmRleCA0M2VjZjg3ZjQzNWE0
NDU5Njk5NjU3NjRhMzFhZDY5OWFjOGJlNmEyLi5hM2IwMGYzY2Q4MWE0MzgxZTAyNWVhOGI5YWJm
OTI5OTE5ZGRmZTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Qnl0ZWNvZGVMaXN0Lmpzb24KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlTGlzdC5qc29uCkBAIC0xNDMsOCArMTQzLDcgQEAKICAgICAgICAgICAgIHsgIm5hbWUi
IDogIm9wX2Fzc2VydCIsICJsZW5ndGgiIDogMyB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAi
b3BfY3JlYXRlX3Jlc3QiLCAibGVuZ3RoIjogNCB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAi
b3BfZ2V0X3Jlc3RfbGVuZ3RoIiwgImxlbmd0aCI6IDMgfSwKLSAgICAgICAgICAgIHsgIm5hbWUi
IDogIm9wX3NhdmUiLCAibGVuZ3RoIiA6IDQgfSwKLSAgICAgICAgICAgIHsgIm5hbWUiIDogIm9w
X3Jlc3VtZSIsICJsZW5ndGgiIDogMyB9LAorICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfeWll
bGQiLCAibGVuZ3RoIiA6IDQgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX3dhdGNoZG9n
IiwgImxlbmd0aCIgOiAxIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9sb2dfc2hhZG93
X2NoaWNrZW5fcHJvbG9ndWUiLCAibGVuZ3RoIiA6IDJ9LAogICAgICAgICAgICAgeyAibmFtZSIg
OiAib3BfbG9nX3NoYWRvd19jaGlja2VuX3RhaWwiLCAibGVuZ3RoIiA6IDN9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lz
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5h
bHlzaXMuY3BwCmluZGV4IDE3ZTgyYTJmYmJhMDE1MDQzZTk5ZDM0ZWQyNTY5MzcyYjM2ZjdhODUu
LmIxM2U4MGI0MTY0ZTg1ZDQyNjljYWNiMTY2NTkxZjhiODViZjM3OGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5h
bHlzaXMuY3BwCkBAIC0zMSwxOTggKzMxLDM2IEBACiAjaW5jbHVkZSAiQnl0ZWNvZGVVc2VEZWYu
aCIKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJGdWxsQnl0ZWNvZGVMaXZlbmVz
cy5oIgotI2luY2x1ZGUgIlByZWNpc2VKdW1wVGFyZ2V0cy5oIgorI2luY2x1ZGUgIkludGVycHJl
dGVySW5saW5lcy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAogQnl0ZWNvZGVMaXZlbmVzc0FuYWx5
c2lzOjpCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMoQ29kZUJsb2NrKiBjb2RlQmxvY2spCi0gICAg
OiBtX2NvZGVCbG9jayhjb2RlQmxvY2spCisgICAgOiBtX2dyYXBoKGNvZGVCbG9jaywgY29kZUJs
b2NrLT5pbnN0cnVjdGlvbnMoKSkKIHsKLSAgICBBU1NFUlQobV9jb2RlQmxvY2spOwogICAgIGNv
bXB1dGUoKTsKIH0KIAotc3RhdGljIGJvb2wgaXNWYWxpZFJlZ2lzdGVyRm9yTGl2ZW5lc3MoQ29k
ZUJsb2NrKiBjb2RlQmxvY2ssIGludCBvcGVyYW5kKQordGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rv
cj4KK3ZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlRGVmc0ZvckJ5dGVjb2Rl
T2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBPcGNvZGVJRCBvcGNvZGVJRCwgSW5zdHJ1Y3Rp
b24qIGluc3RydWN0aW9uLCBGYXN0Qml0VmVjdG9yJiwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikK
IHsKLSAgICBpZiAoY29kZUJsb2NrLT5pc0NvbnN0YW50UmVnaXN0ZXJJbmRleChvcGVyYW5kKSkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIAotICAgIFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFs
UmVnKG9wZXJhbmQpOwotICAgIHJldHVybiB2aXJ0dWFsUmVnLmlzTG9jYWwoKTsKLX0KLQotc3Rh
dGljIHVuc2lnbmVkIGdldExlYWRlck9mZnNldEZvckJhc2ljQmxvY2soc3RkOjp1bmlxdWVfcHRy
PEJ5dGVjb2RlQmFzaWNCbG9jaz4qIGJhc2ljQmxvY2spCi17Ci0gICAgcmV0dXJuICgqYmFzaWNC
bG9jayktPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCk7Ci19Ci0KLXN0YXRpYyBCeXRlY29kZUJhc2lj
QmxvY2sqIGZpbmRCYXNpY0Jsb2NrV2l0aExlYWRlck9mZnNldChWZWN0b3I8c3RkOjp1bmlxdWVf
cHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+JiBiYXNpY0Jsb2NrcywgdW5zaWduZWQgbGVhZGVyT2Zm
c2V0KQotewotICAgIHJldHVybiAoKnRyeUJpbmFyeVNlYXJjaDxzdGQ6OnVuaXF1ZV9wdHI8Qnl0
ZWNvZGVCYXNpY0Jsb2NrPiwgdW5zaWduZWQ+KGJhc2ljQmxvY2tzLCBiYXNpY0Jsb2Nrcy5zaXpl
KCksIGxlYWRlck9mZnNldCwgZ2V0TGVhZGVyT2Zmc2V0Rm9yQmFzaWNCbG9jaykpLmdldCgpOwot
fQotCi1zdGF0aWMgYm9vbCBibG9ja0NvbnRhaW5zQnl0ZWNvZGVPZmZzZXQoQnl0ZWNvZGVCYXNp
Y0Jsb2NrKiBibG9jaywgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpCi17Ci0gICAgdW5zaWduZWQg
bGVhZGVyT2Zmc2V0ID0gYmxvY2stPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCk7Ci0gICAgcmV0dXJu
IGJ5dGVjb2RlT2Zmc2V0ID49IGxlYWRlck9mZnNldCAmJiBieXRlY29kZU9mZnNldCA8IGxlYWRl
ck9mZnNldCArIGJsb2NrLT50b3RhbEJ5dGVjb2RlTGVuZ3RoKCk7Ci19Ci0KLXN0YXRpYyBCeXRl
Y29kZUJhc2ljQmxvY2sqIGZpbmRCYXNpY0Jsb2NrRm9yQnl0ZWNvZGVPZmZzZXQoVmVjdG9yPHN0
ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9ja3MsIHVuc2lnbmVk
IGJ5dGVjb2RlT2Zmc2V0KQotewotLyoKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYmFz
aWNCbG9ja3Muc2l6ZSgpOyBpKyspIHsKLSAgICAgICAgaWYgKGJsb2NrQ29udGFpbnNCeXRlY29k
ZU9mZnNldChiYXNpY0Jsb2Nrc1tpXS5nZXQoKSwgYnl0ZWNvZGVPZmZzZXQpKQotICAgICAgICAg
ICAgcmV0dXJuIGJhc2ljQmxvY2tzW2ldLmdldCgpOwotICAgIH0KLSAgICByZXR1cm4gMDsKLSov
Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4qIGJhc2ljQmxvY2sgPSBh
cHByb3hpbWF0ZUJpbmFyeVNlYXJjaDxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2Nr
PiwgdW5zaWduZWQ+KAotICAgICAgICBiYXNpY0Jsb2NrcywgYmFzaWNCbG9ja3Muc2l6ZSgpLCBi
eXRlY29kZU9mZnNldCwgZ2V0TGVhZGVyT2Zmc2V0Rm9yQmFzaWNCbG9jayk7Ci0gICAgLy8gV2Ug
Zm91bmQgdGhlIGJsb2NrIHdlIHdlcmUgbG9va2luZyBmb3IuCi0gICAgaWYgKGJsb2NrQ29udGFp
bnNCeXRlY29kZU9mZnNldCgoKmJhc2ljQmxvY2spLmdldCgpLCBieXRlY29kZU9mZnNldCkpCi0g
ICAgICAgIHJldHVybiAoKmJhc2ljQmxvY2spLmdldCgpOwotCi0gICAgLy8gQmFzaWMgYmxvY2sg
aXMgdG8gdGhlIGxlZnQgb2YgdGhlIHJldHVybmVkIGJsb2NrLgotICAgIGlmIChieXRlY29kZU9m
ZnNldCA8ICgqYmFzaWNCbG9jayktPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCkpIHsKLSAgICAgICAg
QVNTRVJUKGJhc2ljQmxvY2sgLSAxID49IGJhc2ljQmxvY2tzLmRhdGEoKSk7Ci0gICAgICAgIEFT
U0VSVChibG9ja0NvbnRhaW5zQnl0ZWNvZGVPZmZzZXQoYmFzaWNCbG9ja1stMV0uZ2V0KCksIGJ5
dGVjb2RlT2Zmc2V0KSk7Ci0gICAgICAgIHJldHVybiBiYXNpY0Jsb2NrWy0xXS5nZXQoKTsKLSAg
ICB9Ci0KLSAgICAvLyBCYXNpYyBibG9jayBpcyB0byB0aGUgcmlnaHQgb2YgdGhlIHJldHVybmVk
IGJsb2NrLgotICAgIEFTU0VSVCgmYmFzaWNCbG9ja1sxXSA8PSAmYmFzaWNCbG9ja3MubGFzdCgp
KTsKLSAgICBBU1NFUlQoYmxvY2tDb250YWluc0J5dGVjb2RlT2Zmc2V0KGJhc2ljQmxvY2tbMV0u
Z2V0KCksIGJ5dGVjb2RlT2Zmc2V0KSk7Ci0gICAgcmV0dXJuIGJhc2ljQmxvY2tbMV0uZ2V0KCk7
Ci19Ci0KLS8vIFNpbXBsaWZpZWQgaW50ZXJmYWNlIHRvIGJ5dGVjb2RlIHVzZS9kZWYsIHdoaWNo
IGRldGVybWluZXMgZGVmcyBmaXJzdCBhbmQgdGhlbiB1c2VzLCBhbmQgaW5jbHVkZXMKLS8vIGV4
Y2VwdGlvbiBoYW5kbGVycyBpbiB0aGUgdXNlcy4KLXRlbXBsYXRlPHR5cGVuYW1lIFVzZUZ1bmN0
b3IsIHR5cGVuYW1lIERlZkZ1bmN0b3I+Ci1zdGF0aWMgdm9pZCBzdGVwT3Zlckluc3RydWN0aW9u
KENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrLCBWZWN0b3I8
c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+JiBiYXNpY0Jsb2NrcywgdW5zaWdu
ZWQgYnl0ZWNvZGVPZmZzZXQsIGNvbnN0IFVzZUZ1bmN0b3ImIHVzZSwgY29uc3QgRGVmRnVuY3Rv
ciYgZGVmKQotewotICAgIC8vIFRoaXMgYWJzdHJhY3RseSBleGVjdXRlIHRoZSBpbnN0cnVjdGlv
biBpbiByZXZlcnNlLiBJbnN0cnVjdGlvbnMgbG9naWNhbGx5IGZpcnN0IHVzZSBvcGVyYW5kcyBh
bmQKLSAgICAvLyB0aGVuIGRlZmluZSBvcGVyYW5kcy4gVGhpcyBsb2dpY2FsIG9yZGVyaW5nIGlz
IG5lY2Vzc2FyeSBmb3Igb3BlcmF0aW9ucyB0aGF0IHVzZSBhbmQgZGVmIHRoZSBzYW1lCi0gICAg
Ly8gb3BlcmFuZCwgbGlrZToKLSAgICAvLwotICAgIC8vICAgICBvcF9hZGQgbG9jMSwgbG9jMSwg
bG9jMgotICAgIC8vCi0gICAgLy8gVGhlIHVzZSBvZiBsb2MxIGhhcHBlbnMgYmVmb3JlIHRoZSBk
ZWYgb2YgbG9jMS4gVGhhdCdzIGEgc2VtYW50aWMgcmVxdWlyZW1lbnQgc2luY2UgdGhlIGFkZAot
ICAgIC8vIG9wZXJhdGlvbiBjYW5ub3QgdHJhdmVsIGZvcndhcmQgaW4gdGltZSB0byByZWFkIHRo
ZSB2YWx1ZSB0aGF0IGl0IHdpbGwgcHJvZHVjZSBhZnRlciByZWFkaW5nIHRoYXQKLSAgICAvLyB2
YWx1ZS4gU2luY2Ugd2UgYXJlIGV4ZWN1dGluZyBpbiByZXZlcnNlLCB0aGlzIG1lYW5zIHRoYXQg
d2UgbXVzdCBkbyBkZWZzIGJlZm9yZSB1c2VzIChyZXZlcnNlIG9mCi0gICAgLy8gdXNlcyBiZWZv
cmUgZGVmcykuCi0gICAgLy8KLSAgICAvLyBTaW5jZSB0aGlzIGlzIGEgbGl2ZW5lc3MgYW5hbHlz
aXMsIHRoaXMgb3JkZXJpbmcgZW5kcyB1cCBiZWluZyBwYXJ0aWN1bGFybHkgaW1wb3J0YW50OiBp
ZiB3ZSBkaWQKLSAgICAvLyB1c2VzIGJlZm9yZSBkZWZzLCB0aGVuIHRoZSBhZGQgb3BlcmF0aW9u
IGFib3ZlIHdvdWxkIGFwcGVhciB0byBub3QgaGF2ZSBsb2MxIGxpdmUsIHNpbmNlIHdlJ2QKLSAg
ICAvLyBmaXJzdCBhZGQgaXQgdG8gdGhlIG91dCBzZXQgKHRoZSB1c2UpLCBhbmQgdGhlbiB3ZSdk
IHJlbW92ZSBpdCAodGhlIGRlZikuCi0gICAgCi0gICAgY29tcHV0ZURlZnNGb3JCeXRlY29kZU9m
ZnNldCgKLSAgICAgICAgY29kZUJsb2NrLCBibG9jaywgYnl0ZWNvZGVPZmZzZXQsCi0gICAgICAg
IFsmXSAoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEluc3RydWN0aW9uKiwgT3Bjb2RlSUQsIGludCBv
cGVyYW5kKSB7Ci0gICAgICAgICAgICBpZiAoaXNWYWxpZFJlZ2lzdGVyRm9yTGl2ZW5lc3MoY29k
ZUJsb2NrLCBvcGVyYW5kKSkKLSAgICAgICAgICAgICAgICBkZWYoVmlydHVhbFJlZ2lzdGVyKG9w
ZXJhbmQpLnRvTG9jYWwoKSk7Ci0gICAgICAgIH0pOwotCi0gICAgY29tcHV0ZVVzZXNGb3JCeXRl
Y29kZU9mZnNldCgKLSAgICAgICAgY29kZUJsb2NrLCBibG9jaywgYnl0ZWNvZGVPZmZzZXQsCi0g
ICAgICAgIFsmXSAoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEluc3RydWN0aW9uKiwgT3Bjb2RlSUQs
IGludCBvcGVyYW5kKSB7Ci0gICAgICAgICAgICBpZiAoaXNWYWxpZFJlZ2lzdGVyRm9yTGl2ZW5l
c3MoY29kZUJsb2NrLCBvcGVyYW5kKSkKLSAgICAgICAgICAgICAgICB1c2UoVmlydHVhbFJlZ2lz
dGVyKG9wZXJhbmQpLnRvTG9jYWwoKSk7Ci0gICAgICAgIH0pOwotCi0gICAgLy8gSWYgd2UgaGF2
ZSBhbiBleGNlcHRpb24gaGFuZGxlciwgd2Ugd2FudCB0aGUgbGl2ZS1pbiB2YXJpYWJsZXMgb2Yg
dGhlIAotICAgIC8vIGV4Y2VwdGlvbiBoYW5kbGVyIGJsb2NrIHRvIGJlIGluY2x1ZGVkIGluIHRo
ZSBsaXZlLWluIG9mIHRoaXMgcGFydGljdWxhciBieXRlY29kZS4KLSAgICBpZiAoSGFuZGxlcklu
Zm8qIGhhbmRsZXIgPSBjb2RlQmxvY2stPmhhbmRsZXJGb3JCeXRlY29kZU9mZnNldChieXRlY29k
ZU9mZnNldCkpIHsKLSAgICAgICAgLy8gRklYTUU6IFRoaXMgcmVzdW1lIGNoZWNrIHNob3VsZCBu
b3QgYmUgbmVlZGVkLgotICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTU5MjgxCi0gICAgICAgIEludGVycHJldGVyKiBpbnRlcnByZXRlciA9IGNvZGVC
bG9jay0+dm0oKS0+aW50ZXJwcmV0ZXI7Ci0gICAgICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlv
bnNCZWdpbiA9IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsKLSAgICAgICAgSW5z
dHJ1Y3Rpb24qIGluc3RydWN0aW9uID0gJmluc3RydWN0aW9uc0JlZ2luW2J5dGVjb2RlT2Zmc2V0
XTsKLSAgICAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQo
aW5zdHJ1Y3Rpb24tPnUub3Bjb2RlKTsKLSAgICAgICAgaWYgKG9wY29kZUlEICE9IG9wX3Jlc3Vt
ZSkgewotICAgICAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBoYW5kbGVyQmxvY2sgPSBmaW5k
QmFzaWNCbG9ja1dpdGhMZWFkZXJPZmZzZXQoYmFzaWNCbG9ja3MsIGhhbmRsZXItPnRhcmdldCk7
Ci0gICAgICAgICAgICBBU1NFUlQoaGFuZGxlckJsb2NrKTsKLSAgICAgICAgICAgIGhhbmRsZXJC
bG9jay0+aW4oKS5mb3JFYWNoU2V0Qml0KHVzZSk7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLXN0
YXRpYyB2b2lkIHN0ZXBPdmVySW5zdHJ1Y3Rpb24oQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVj
b2RlQmFzaWNCbG9jayogYmxvY2ssIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNp
Y0Jsb2NrPj4mIGJhc2ljQmxvY2tzLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgRmFzdEJpdFZl
Y3RvciYgb3V0KQotewotICAgIHN0ZXBPdmVySW5zdHJ1Y3Rpb24oCi0gICAgICAgIGNvZGVCbG9j
aywgYmxvY2ssIGJhc2ljQmxvY2tzLCBieXRlY29kZU9mZnNldCwKLSAgICAgICAgWyZdICh1bnNp
Z25lZCBiaXRJbmRleCkgewotICAgICAgICAgICAgLy8gVGhpcyBpcyB0aGUgdXNlIGZ1bmN0b3Is
IHNvIHdlIHNldCB0aGUgYml0LgotICAgICAgICAgICAgb3V0LnNldChiaXRJbmRleCk7Ci0gICAg
ICAgIH0sCi0gICAgICAgIFsmXSAodW5zaWduZWQgYml0SW5kZXgpIHsKLSAgICAgICAgICAgIC8v
IFRoaXMgaXMgdGhlIGRlZiBmdW5jdG9yLCBzbyB3ZSBjbGVhciB0aGUgYml0LgotICAgICAgICAg
ICAgb3V0LmNsZWFyKGJpdEluZGV4KTsKLSAgICAgICAgfSk7CisgICAgSlNDOjpjb21wdXRlRGVm
c0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9jaywgb3Bjb2RlSUQsIGluc3RydWN0aW9uLCBmdW5j
dG9yKTsKIH0KIAotc3RhdGljIHZvaWQgY29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCeXRlY29kZU9m
ZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaywgVmVj
dG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9ja3MsIHVu
c2lnbmVkIHRhcmdldE9mZnNldCwgRmFzdEJpdFZlY3RvciYgcmVzdWx0KQordGVtcGxhdGU8dHlw
ZW5hbWUgRnVuY3Rvcj4KK3ZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlVXNl
c0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBPcGNvZGVJRCBvcGNvZGVJ
RCwgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBGYXN0Qml0VmVjdG9yJiwgY29uc3QgRnVuY3Rv
ciYgZnVuY3RvcikKIHsKLSAgICBBU1NFUlQoIWJsb2NrLT5pc0V4aXRCbG9jaygpKTsKLSAgICBB
U1NFUlQoIWJsb2NrLT5pc0VudHJ5QmxvY2soKSk7Ci0KLSAgICBGYXN0Qml0VmVjdG9yIG91dCA9
IGJsb2NrLT5vdXQoKTsKLQotICAgIGZvciAoaW50IGkgPSBibG9jay0+Ynl0ZWNvZGVPZmZzZXRz
KCkuc2l6ZSgpIC0gMTsgaSA+PSAwOyBpLS0pIHsKLSAgICAgICAgdW5zaWduZWQgYnl0ZWNvZGVP
ZmZzZXQgPSBibG9jay0+Ynl0ZWNvZGVPZmZzZXRzKClbaV07Ci0gICAgICAgIGlmICh0YXJnZXRP
ZmZzZXQgPiBieXRlY29kZU9mZnNldCkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAKLSAg
ICAgICAgc3RlcE92ZXJJbnN0cnVjdGlvbihjb2RlQmxvY2ssIGJsb2NrLCBiYXNpY0Jsb2Nrcywg
Ynl0ZWNvZGVPZmZzZXQsIG91dCk7Ci0gICAgfQotCi0gICAgcmVzdWx0LnNldChvdXQpOwotfQot
Ci1zdGF0aWMgdm9pZCBjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJsb2NrKENvZGVCbG9jayogY29k
ZUJsb2NrLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRy
PEJ5dGVjb2RlQmFzaWNCbG9jaz4+JiBiYXNpY0Jsb2NrcykKLXsKLSAgICBpZiAoYmxvY2stPmlz
RXhpdEJsb2NrKCkgfHwgYmxvY2stPmlzRW50cnlCbG9jaygpKQotICAgICAgICByZXR1cm47Ci0g
ICAgY29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCeXRlY29kZU9mZnNldChjb2RlQmxvY2ssIGJsb2Nr
LCBiYXNpY0Jsb2NrcywgYmxvY2stPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCksIGJsb2NrLT5pbigp
KTsKLX0KLQotdm9pZCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OnJ1bkxpdmVuZXNzRml4cG9p
bnQoKQotewotICAgIFVubGlua2VkQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9jayA9IG1fY29k
ZUJsb2NrLT51bmxpbmtlZENvZGVCbG9jaygpOwotICAgIHVuc2lnbmVkIG51bWJlck9mVmFyaWFi
bGVzID0gdW5saW5rZWRDb2RlQmxvY2stPm1fbnVtQ2FsbGVlTG9jYWxzOwotCi0gICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IG1fYmFzaWNCbG9ja3Muc2l6ZSgpOyBpKyspIHsKLSAgICAgICAg
Qnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jayA9IG1fYmFzaWNCbG9ja3NbaV0uZ2V0KCk7Ci0gICAg
ICAgIGJsb2NrLT5pbigpLnJlc2l6ZShudW1iZXJPZlZhcmlhYmxlcyk7Ci0gICAgICAgIGJsb2Nr
LT5vdXQoKS5yZXNpemUobnVtYmVyT2ZWYXJpYWJsZXMpOwotICAgIH0KLQotICAgIGJvb2wgY2hh
bmdlZDsKLSAgICBtX2Jhc2ljQmxvY2tzLmxhc3QoKS0+aW4oKS5jbGVhckFsbCgpOwotICAgIG1f
YmFzaWNCbG9ja3MubGFzdCgpLT5vdXQoKS5jbGVhckFsbCgpOwotICAgIEZhc3RCaXRWZWN0b3Ig
bmV3T3V0OwotICAgIG5ld091dC5yZXNpemUobV9iYXNpY0Jsb2Nrcy5sYXN0KCktPm91dCgpLm51
bUJpdHMoKSk7Ci0gICAgZG8gewotICAgICAgICBjaGFuZ2VkID0gZmFsc2U7Ci0gICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IG1fYmFzaWNCbG9ja3Muc2l6ZSgpIC0gMTsgaS0tOykgewotICAgICAg
ICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jayA9IG1fYmFzaWNCbG9ja3NbaV0uZ2V0KCk7
Ci0gICAgICAgICAgICBuZXdPdXQuY2xlYXJBbGwoKTsKLSAgICAgICAgICAgIGZvciAodW5zaWdu
ZWQgaiA9IDA7IGogPCBibG9jay0+c3VjY2Vzc29ycygpLnNpemUoKTsgaisrKQotICAgICAgICAg
ICAgICAgIG5ld091dC5tZXJnZShibG9jay0+c3VjY2Vzc29ycygpW2pdLT5pbigpKTsKLSAgICAg
ICAgICAgIGJvb2wgb3V0RGlkQ2hhbmdlID0gYmxvY2stPm91dCgpLnNldEFuZENoZWNrKG5ld091
dCk7Ci0gICAgICAgICAgICBjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJsb2NrKG1fY29kZUJsb2Nr
LCBibG9jaywgbV9iYXNpY0Jsb2Nrcyk7Ci0gICAgICAgICAgICBjaGFuZ2VkIHw9IG91dERpZENo
YW5nZTsKLSAgICAgICAgfQotICAgIH0gd2hpbGUgKGNoYW5nZWQpOworICAgIEpTQzo6Y29tcHV0
ZVVzZXNGb3JCeXRlY29kZU9mZnNldChjb2RlQmxvY2ssIG9wY29kZUlELCBpbnN0cnVjdGlvbiwg
ZnVuY3Rvcik7CiB9CiAKIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpnZXRMaXZlbmVz
c0luZm9BdEJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBGYXN0Qml0VmVj
dG9yJiByZXN1bHQpCiB7Ci0gICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jayA9IGZpbmRCYXNp
Y0Jsb2NrRm9yQnl0ZWNvZGVPZmZzZXQobV9iYXNpY0Jsb2NrcywgYnl0ZWNvZGVPZmZzZXQpOwor
ICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2sgPSBtX2dyYXBoLmZpbmRCYXNpY0Jsb2NrRm9y
Qnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpOwogICAgIEFTU0VSVChibG9jayk7CiAgICAg
QVNTRVJUKCFibG9jay0+aXNFbnRyeUJsb2NrKCkpOwogICAgIEFTU0VSVCghYmxvY2stPmlzRXhp
dEJsb2NrKCkpOwogICAgIHJlc3VsdC5yZXNpemUoYmxvY2stPm91dCgpLm51bUJpdHMoKSk7Ci0g
ICAgY29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCeXRlY29kZU9mZnNldChtX2NvZGVCbG9jaywgYmxv
Y2ssIG1fYmFzaWNCbG9ja3MsIGJ5dGVjb2RlT2Zmc2V0LCByZXN1bHQpOworICAgIGNvbXB1dGVM
b2NhbExpdmVuZXNzRm9yQnl0ZWNvZGVPZmZzZXQobV9ncmFwaCwgYmxvY2ssIGJ5dGVjb2RlT2Zm
c2V0LCByZXN1bHQpOwogfQogCiBib29sIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6b3BlcmFu
ZElzTGl2ZUF0Qnl0ZWNvZGVPZmZzZXQoaW50IG9wZXJhbmQsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zm
c2V0KQpAQCAtMjQ0LDE5ICs4MiwxOSBAQCBGYXN0Qml0VmVjdG9yIEJ5dGVjb2RlTGl2ZW5lc3NB
bmFseXNpczo6Z2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29kZU9mZnNldCh1bnNpZ25lZAogdm9pZCBC
eXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGVGdWxsTGl2ZW5lc3MoRnVsbEJ5dGVjb2Rl
TGl2ZW5lc3MmIHJlc3VsdCkKIHsKICAgICBGYXN0Qml0VmVjdG9yIG91dDsKKyAgICBDb2RlQmxv
Y2sqIGNvZGVCbG9jayA9IG1fZ3JhcGguY29kZUJsb2NrKCk7CiAgICAgCi0gICAgcmVzdWx0Lm1f
bWFwLnJlc2l6ZShtX2NvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKKyAgICByZXN1
bHQubV9tYXAucmVzaXplKGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKICAgICAK
LSAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2Jhc2ljQmxvY2tzLnNpemUoKTsgaS0tOykgewotICAg
ICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrID0gbV9iYXNpY0Jsb2Nrc1tpXS5nZXQoKTsK
KyAgICBmb3IgKHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+JiBibG9jayA6IG1f
Z3JhcGguYmFzaWNCbG9ja3NJblJldmVyc2VPcmRlcigpKSB7CiAgICAgICAgIGlmIChibG9jay0+
aXNFbnRyeUJsb2NrKCkgfHwgYmxvY2stPmlzRXhpdEJsb2NrKCkpCiAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgCiAgICAgICAgIG91dCA9IGJsb2NrLT5vdXQoKTsKICAgICAgICAgCi0g
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IGJsb2NrLT5ieXRlY29kZU9mZnNldHMoKS5zaXplKCk7
IGktLTspIHsKLSAgICAgICAgICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0ID0gYmxvY2stPmJ5
dGVjb2RlT2Zmc2V0cygpW2ldOwotICAgICAgICAgICAgc3RlcE92ZXJJbnN0cnVjdGlvbihtX2Nv
ZGVCbG9jaywgYmxvY2ssIG1fYmFzaWNCbG9ja3MsIGJ5dGVjb2RlT2Zmc2V0LCBvdXQpOworICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSBibG9jay0+b2Zmc2V0cygpLnNpemUoKTsgaS0tOykgewor
ICAgICAgICAgICAgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQgPSBibG9jay0+b2Zmc2V0cygpW2ld
OworICAgICAgICAgICAgc3RlcE92ZXJJbnN0cnVjdGlvbihtX2dyYXBoLCBieXRlY29kZU9mZnNl
dCwgb3V0KTsKICAgICAgICAgICAgIHJlc3VsdC5tX21hcFtieXRlY29kZU9mZnNldF0gPSBvdXQ7
CiAgICAgICAgIH0KICAgICB9CkBAIC0yNjYsMjAgKzEwNCwyMCBAQCB2b2lkIEJ5dGVjb2RlTGl2
ZW5lc3NBbmFseXNpczo6Y29tcHV0ZUtpbGxzKEJ5dGVjb2RlS2lsbHMmIHJlc3VsdCkKIHsKICAg
ICBGYXN0Qml0VmVjdG9yIG91dDsKICAgICAKLSAgICByZXN1bHQubV9jb2RlQmxvY2sgPSBtX2Nv
ZGVCbG9jazsKLSAgICByZXN1bHQubV9raWxsU2V0cyA9IHN0ZDo6bWFrZV91bmlxdWU8Qnl0ZWNv
ZGVLaWxsczo6S2lsbFNldFtdPihtX2NvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsK
KyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IG1fZ3JhcGguY29kZUJsb2NrKCk7CisgICAgcmVz
dWx0Lm1fY29kZUJsb2NrID0gY29kZUJsb2NrOworICAgIHJlc3VsdC5tX2tpbGxTZXRzID0gc3Rk
OjptYWtlX3VuaXF1ZTxCeXRlY29kZUtpbGxzOjpLaWxsU2V0W10+KGNvZGVCbG9jay0+aW5zdHJ1
Y3Rpb25zKCkuc2l6ZSgpKTsKICAgICAKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2Jhc2ljQmxv
Y2tzLnNpemUoKTsgaS0tOykgewotICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrID0g
bV9iYXNpY0Jsb2Nrc1tpXS5nZXQoKTsKKyAgICBmb3IgKHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29k
ZUJhc2ljQmxvY2s+JiBibG9jayA6IG1fZ3JhcGguYmFzaWNCbG9ja3NJblJldmVyc2VPcmRlcigp
KSB7CiAgICAgICAgIGlmIChibG9jay0+aXNFbnRyeUJsb2NrKCkgfHwgYmxvY2stPmlzRXhpdEJs
b2NrKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgCiAgICAgICAgIG91dCA9IGJs
b2NrLT5vdXQoKTsKICAgICAgICAgCi0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IGJsb2NrLT5i
eXRlY29kZU9mZnNldHMoKS5zaXplKCk7IGktLTspIHsKLSAgICAgICAgICAgIHVuc2lnbmVkIGJ5
dGVjb2RlT2Zmc2V0ID0gYmxvY2stPmJ5dGVjb2RlT2Zmc2V0cygpW2ldOworICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSBibG9jay0+b2Zmc2V0cygpLnNpemUoKTsgaS0tOykgeworICAgICAgICAg
ICAgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQgPSBibG9jay0+b2Zmc2V0cygpW2ldOwogICAgICAg
ICAgICAgc3RlcE92ZXJJbnN0cnVjdGlvbigKLSAgICAgICAgICAgICAgICBtX2NvZGVCbG9jaywg
YmxvY2ssIG1fYmFzaWNCbG9ja3MsIGJ5dGVjb2RlT2Zmc2V0LAorICAgICAgICAgICAgICAgIG1f
Z3JhcGgsIGJ5dGVjb2RlT2Zmc2V0LCBvdXQsCiAgICAgICAgICAgICAgICAgWyZdICh1bnNpZ25l
ZCBpbmRleCkgewogICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIGZvciB1c2VzLgogICAg
ICAgICAgICAgICAgICAgICBpZiAob3V0LmdldChpbmRleCkpCkBAIC0yOTcsMTIgKzEzNSwxMyBA
QCB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0ZUtpbGxzKEJ5dGVjb2RlS2ls
bHMmIHJlc3VsdCkKIAogdm9pZCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmR1bXBSZXN1bHRz
KCkKIHsKLSAgICBkYXRhTG9nKCJcbkR1bXBpbmcgYnl0ZWNvZGUgbGl2ZW5lc3MgZm9yICIsICpt
X2NvZGVCbG9jaywgIjpcbiIpOwotICAgIEludGVycHJldGVyKiBpbnRlcnByZXRlciA9IG1fY29k
ZUJsb2NrLT52bSgpLT5pbnRlcnByZXRlcjsKLSAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25z
QmVnaW4gPSBtX2NvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsKLSAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgbV9iYXNpY0Jsb2Nrcy5zaXplKCk7IGkrKykgewotICAgICAgICBC
eXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrID0gbV9iYXNpY0Jsb2Nrc1tpXS5nZXQoKTsKLSAgICAg
ICAgZGF0YUxvZ0YoIlxuQnl0ZWNvZGUgYmFzaWMgYmxvY2sgJXU6ICVwIChvZmZzZXQ6ICV1LCBs
ZW5ndGg6ICV1KVxuIiwgaSwgYmxvY2ssIGJsb2NrLT5sZWFkZXJCeXRlY29kZU9mZnNldCgpLCBi
bG9jay0+dG90YWxCeXRlY29kZUxlbmd0aCgpKTsKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9
IG1fZ3JhcGguY29kZUJsb2NrKCk7CisgICAgZGF0YUxvZygiXG5EdW1waW5nIGJ5dGVjb2RlIGxp
dmVuZXNzIGZvciAiLCAqY29kZUJsb2NrLCAiOlxuIik7CisgICAgSW50ZXJwcmV0ZXIqIGludGVy
cHJldGVyID0gY29kZUJsb2NrLT52bSgpLT5pbnRlcnByZXRlcjsKKyAgICBJbnN0cnVjdGlvbiog
aW5zdHJ1Y3Rpb25zQmVnaW4gPSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCk7Cisg
ICAgdW5zaWduZWQgaSA9IDA7CisgICAgZm9yIChCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrIDog
bV9ncmFwaCkgeworICAgICAgICBkYXRhTG9nRigiXG5CeXRlY29kZSBiYXNpYyBibG9jayAldTog
JXAgKG9mZnNldDogJXUsIGxlbmd0aDogJXUpXG4iLCBpKyssIGJsb2NrLCBibG9jay0+bGVhZGVy
T2Zmc2V0KCksIGJsb2NrLT50b3RhbExlbmd0aCgpKTsKICAgICAgICAgZGF0YUxvZ0YoIlN1Y2Nl
c3NvcnM6ICIpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSAwOyBqIDwgYmxvY2stPnN1Y2Nl
c3NvcnMoKS5zaXplKCk7IGorKykgewogICAgICAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBz
dWNjZXNzb3IgPSBibG9jay0+c3VjY2Vzc29ycygpW2pdOwpAQCAtMzE3LDcgKzE1Niw3IEBAIHZv
aWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpkdW1wUmVzdWx0cygpCiAgICAgICAgICAgICBk
YXRhTG9nRigiRXhpdCBibG9jazogJXBcbiIsIGJsb2NrKTsKICAgICAgICAgICAgIGNvbnRpbnVl
OwogICAgICAgICB9Ci0gICAgICAgIGZvciAodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQgPSBibG9j
ay0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKTsgYnl0ZWNvZGVPZmZzZXQgPCBibG9jay0+bGVhZGVy
Qnl0ZWNvZGVPZmZzZXQoKSArIGJsb2NrLT50b3RhbEJ5dGVjb2RlTGVuZ3RoKCk7KSB7CisgICAg
ICAgIGZvciAodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQgPSBibG9jay0+bGVhZGVyT2Zmc2V0KCk7
IGJ5dGVjb2RlT2Zmc2V0IDwgYmxvY2stPmxlYWRlck9mZnNldCgpICsgYmxvY2stPnRvdGFsTGVu
Z3RoKCk7KSB7CiAgICAgICAgICAgICBjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uID0gJmluc3RydWN0aW9uc0JlZ2luW2J5dGVjb2RlT2Zmc2V0XTsKIAogICAgICAgICAgICAg
ZGF0YUxvZ0YoIkxpdmUgdmFyaWFibGVzOiAiKTsKQEAgLTMyNyw3ICsxNjYsNyBAQCB2b2lkIEJ5
dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6ZHVtcFJlc3VsdHMoKQogICAgICAgICAgICAgICAgICAg
ICBkYXRhTG9nRigiJXUgIiwgaik7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBkYXRhTG9n
RigiXG4iKTsKLSAgICAgICAgICAgIG1fY29kZUJsb2NrLT5kdW1wQnl0ZWNvZGUoV1RGOjpkYXRh
RmlsZSgpLCBtX2NvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKSwgaW5zdHJ1
Y3Rpb25zQmVnaW4sIGN1cnJlbnRJbnN0cnVjdGlvbik7CisgICAgICAgICAgICBjb2RlQmxvY2st
PmR1bXBCeXRlY29kZShXVEY6OmRhdGFGaWxlKCksIGNvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCkt
Pmdsb2JhbEV4ZWMoKSwgaW5zdHJ1Y3Rpb25zQmVnaW4sIGN1cnJlbnRJbnN0cnVjdGlvbik7CiAK
ICAgICAgICAgICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0ZXItPmdldE9wY29kZUlE
KGluc3RydWN0aW9uc0JlZ2luW2J5dGVjb2RlT2Zmc2V0XS51Lm9wY29kZSk7CiAgICAgICAgICAg
ICB1bnNpZ25lZCBvcGNvZGVMZW5ndGggPSBvcGNvZGVMZW5ndGhzW29wY29kZUlEXTsKQEAgLTM0
Niw5ICsxODUsNyBAQCB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6ZHVtcFJlc3VsdHMo
KQogCiB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0ZSgpCiB7Ci0gICAgY29t
cHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MobV9jb2RlQmxvY2ssIG1fYmFzaWNCbG9ja3MpOwotICAg
IEFTU0VSVChtX2Jhc2ljQmxvY2tzLnNpemUoKSk7Ci0gICAgcnVuTGl2ZW5lc3NGaXhwb2ludCgp
OworICAgIHJ1bkxpdmVuZXNzRml4cG9pbnQobV9ncmFwaCk7CiAKICAgICBpZiAoT3B0aW9uczo6
ZHVtcEJ5dGVjb2RlTGl2ZW5lc3NSZXN1bHRzKCkpCiAgICAgICAgIGR1bXBSZXN1bHRzKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVz
c0FuYWx5c2lzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZl
bmVzc0FuYWx5c2lzLmgKaW5kZXggZWNlMTZmMjFmMDE1MTBhNjQyN2ZkODQxMTQwNzliZWQ4NzBj
MDg3NS4uZTEyY2Q4ZWRjZTc2ZTEyMmVmMDRlZTFmMzVmYmE4MjFiOGQ3ZjdmMCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNp
cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNz
QW5hbHlzaXMuaApAQCAtMjMsMTAgKzIzLDExIEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNfaAotI2Rl
ZmluZSBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRl
ICJCeXRlY29kZUJhc2ljQmxvY2suaCIKKyNpbmNsdWRlICJCeXRlY29kZUdyYXBoLmgiCisjaW5j
bHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSA8d3RmL0Zhc3RCaXRWZWN0b3IuaD4KICNpbmNs
dWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTM0LDEzICsz
NSwyOSBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIEJ5dGVjb2RlS2lsbHM7Ci1jbGFzcyBD
b2RlQmxvY2s7CiBjbGFzcyBGdWxsQnl0ZWNvZGVMaXZlbmVzczsKIAotY2xhc3MgQnl0ZWNvZGVM
aXZlbmVzc0FuYWx5c2lzIHsKK3RlbXBsYXRlPHR5cGVuYW1lIERlcml2ZWRBbmFseXNpcz4KK2Ns
YXNzIEJ5dGVjb2RlTGl2ZW5lc3NQcm9wYWdhdGlvbiB7Citwcm90ZWN0ZWQ6CisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgR3JhcGgsIHR5cGVuYW1lIFVzZUZ1bmN0b3IsIHR5cGVuYW1lIERlZkZ1bmN0
b3I+IHZvaWQgc3RlcE92ZXJJbnN0cnVjdGlvbihHcmFwaCYsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zm
c2V0LCBGYXN0Qml0VmVjdG9yJiBvdXQsIGNvbnN0IFVzZUZ1bmN0b3ImLCBjb25zdCBEZWZGdW5j
dG9yJik7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBHcmFwaD4gdm9pZCBzdGVwT3Zlckluc3Ry
dWN0aW9uKEdyYXBoJiwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIEZhc3RCaXRWZWN0b3ImIG91
dCk7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBHcmFwaD4gYm9vbCBjb21wdXRlTG9jYWxMaXZl
bmVzc0ZvckJ5dGVjb2RlT2Zmc2V0KEdyYXBoJiwgQnl0ZWNvZGVCYXNpY0Jsb2NrKiwgdW5zaWdu
ZWQgdGFyZ2V0T2Zmc2V0LCBGYXN0Qml0VmVjdG9yJiByZXN1bHQpOworCisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgR3JhcGg+IGJvb2wgY29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCbG9jayhHcmFwaCYs
IEJ5dGVjb2RlQmFzaWNCbG9jayopOworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgR3JhcGg+IEZh
c3RCaXRWZWN0b3IgZ2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29kZU9mZnNldChHcmFwaCYsIHVuc2ln
bmVkIGJ5dGVjb2RlT2Zmc2V0KTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEdyYXBoPiB2b2lk
IHJ1bkxpdmVuZXNzRml4cG9pbnQoR3JhcGgmKTsKK307CisKK2NsYXNzIEJ5dGVjb2RlTGl2ZW5l
c3NBbmFseXNpcyA6IHByaXZhdGUgQnl0ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0aW9uPEJ5dGVjb2Rl
TGl2ZW5lc3NBbmFseXNpcz4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcyk7CiBwdWJsaWM6Cisg
ICAgZnJpZW5kIGNsYXNzIEJ5dGVjb2RlTGl2ZW5lc3NQcm9wYWdhdGlvbjxCeXRlY29kZUxpdmVu
ZXNzQW5hbHlzaXM+OwogICAgIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcyhDb2RlQmxvY2sqKTsK
ICAgICAKICAgICBib29sIG9wZXJhbmRJc0xpdmVBdEJ5dGVjb2RlT2Zmc2V0KGludCBvcGVyYW5k
LCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCk7CkBAIC01MSwxOSArNjgsMTkgQEAgY2xhc3MgQnl0
ZWNvZGVMaXZlbmVzc0FuYWx5c2lzIHsKIAogcHJpdmF0ZToKICAgICB2b2lkIGNvbXB1dGUoKTsK
LSAgICB2b2lkIHJ1bkxpdmVuZXNzRml4cG9pbnQoKTsKICAgICB2b2lkIGR1bXBSZXN1bHRzKCk7
CiAKICAgICB2b2lkIGdldExpdmVuZXNzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQodW5zaWduZWQgYnl0
ZWNvZGVPZmZzZXQsIEZhc3RCaXRWZWN0b3ImKTsKIAotICAgIENvZGVCbG9jayogbV9jb2RlQmxv
Y2s7Ci0gICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiBtX2Jh
c2ljQmxvY2tzOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHZvaWQgY29tcHV0ZURl
ZnNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqLCBPcGNvZGVJRCwgSW5zdHJ1Y3Rpb24qLCBG
YXN0Qml0VmVjdG9yJiwgY29uc3QgRnVuY3RvciYpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1
bmN0b3I+IHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqLCBPcGNv
ZGVJRCwgSW5zdHJ1Y3Rpb24qLCBGYXN0Qml0VmVjdG9yJiwgY29uc3QgRnVuY3RvciYpOworCisg
ICAgQnl0ZWNvZGVHcmFwaDxDb2RlQmxvY2s+IG1fZ3JhcGg7CiB9OwogCiBpbmxpbmUgYm9vbCBv
cGVyYW5kSXNBbHdheXNMaXZlKGludCBvcGVyYW5kKTsKIGlubGluZSBib29sIG9wZXJhbmRUaGF0
SXNOb3RBbHdheXNMaXZlSXNMaXZlKGNvbnN0IEZhc3RCaXRWZWN0b3ImIG91dCwgaW50IG9wZXJh
bmQpOwogaW5saW5lIGJvb2wgb3BlcmFuZElzTGl2ZShjb25zdCBGYXN0Qml0VmVjdG9yJiBvdXQs
IGludCBvcGVyYW5kKTsKK2lubGluZSBib29sIGlzVmFsaWRSZWdpc3RlckZvckxpdmVuZXNzKGlu
dCBvcGVyYW5kKTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCi0KLSNlbmRpZiAvLyBCeXRlY29kZUxp
dmVuZXNzQW5hbHlzaXNfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNJbmxpbmVzLmgKaW5kZXggOWI1
Yzc1NWZjYjZjZDUxODA1MTQ1MDA3ODkyMmFjNGQ2ZDRkMjM4Zi4uMTc4ZDAyZjMwMjhiZTUzNjI3
MzQ2OWNlYjBiZTFiYmRmYmFmNGI1OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGluZXMuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzSW5saW5lcy5o
CkBAIC0yMywxMSArMjMsMTIgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
ICAqLwogCi0jaWZuZGVmIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGluZXNfaAotI2RlZmlu
ZSBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNJbmxpbmVzX2gKKyNwcmFnbWEgb25jZQogCisjaW5j
bHVkZSAiQnl0ZWNvZGVHcmFwaC5oIgogI2luY2x1ZGUgIkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNp
cy5oIgogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAj
aW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTUwLDcgKzUxLDE1
MSBAQCBpbmxpbmUgYm9vbCBvcGVyYW5kSXNMaXZlKGNvbnN0IEZhc3RCaXRWZWN0b3ImIG91dCwg
aW50IG9wZXJhbmQpCiAgICAgcmV0dXJuIG9wZXJhbmRJc0Fsd2F5c0xpdmUob3BlcmFuZCkgfHwg
b3BlcmFuZFRoYXRJc05vdEFsd2F5c0xpdmVJc0xpdmUob3V0LCBvcGVyYW5kKTsKIH0KIAotfSAv
LyBuYW1lc3BhY2UgSlNDCitpbmxpbmUgYm9vbCBpc1ZhbGlkUmVnaXN0ZXJGb3JMaXZlbmVzcyhp
bnQgb3BlcmFuZCkKK3sKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZyhvcGVyYW5kKTsK
KyAgICBpZiAodmlydHVhbFJlZy5pc0NvbnN0YW50KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICByZXR1cm4gdmlydHVhbFJlZy5pc0xvY2FsKCk7Cit9CisKKy8vIFNpbXBsaWZpZWQgaW50
ZXJmYWNlIHRvIGJ5dGVjb2RlIHVzZS9kZWYsIHdoaWNoIGRldGVybWluZXMgZGVmcyBmaXJzdCBh
bmQgdGhlbiB1c2VzLCBhbmQgaW5jbHVkZXMKKy8vIGV4Y2VwdGlvbiBoYW5kbGVycyBpbiB0aGUg
dXNlcy4KK3RlbXBsYXRlPHR5cGVuYW1lIERlcml2ZWRBbmFseXNpcz4KK3RlbXBsYXRlPHR5cGVu
YW1lIEdyYXBoLCB0eXBlbmFtZSBVc2VGdW5jdG9yLCB0eXBlbmFtZSBEZWZGdW5jdG9yPgoraW5s
aW5lIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0aW9uPERlcml2ZWRBbmFseXNpcz46OnN0
ZXBPdmVySW5zdHJ1Y3Rpb24oR3JhcGgmIGdyYXBoLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwg
RmFzdEJpdFZlY3RvciYgb3V0LCBjb25zdCBVc2VGdW5jdG9yJiB1c2UsIGNvbnN0IERlZkZ1bmN0
b3ImIGRlZikKK3sKKyAgICAvLyBUaGlzIGFic3RyYWN0bHkgZXhlY3V0ZSB0aGUgaW5zdHJ1Y3Rp
b24gaW4gcmV2ZXJzZS4gSW5zdHJ1Y3Rpb25zIGxvZ2ljYWxseSBmaXJzdCB1c2Ugb3BlcmFuZHMg
YW5kCisgICAgLy8gdGhlbiBkZWZpbmUgb3BlcmFuZHMuIFRoaXMgbG9naWNhbCBvcmRlcmluZyBp
cyBuZWNlc3NhcnkgZm9yIG9wZXJhdGlvbnMgdGhhdCB1c2UgYW5kIGRlZiB0aGUgc2FtZQorICAg
IC8vIG9wZXJhbmQsIGxpa2U6CisgICAgLy8KKyAgICAvLyAgICAgb3BfYWRkIGxvYzEsIGxvYzEs
IGxvYzIKKyAgICAvLworICAgIC8vIFRoZSB1c2Ugb2YgbG9jMSBoYXBwZW5zIGJlZm9yZSB0aGUg
ZGVmIG9mIGxvYzEuIFRoYXQncyBhIHNlbWFudGljIHJlcXVpcmVtZW50IHNpbmNlIHRoZSBhZGQK
KyAgICAvLyBvcGVyYXRpb24gY2Fubm90IHRyYXZlbCBmb3J3YXJkIGluIHRpbWUgdG8gcmVhZCB0
aGUgdmFsdWUgdGhhdCBpdCB3aWxsIHByb2R1Y2UgYWZ0ZXIgcmVhZGluZyB0aGF0CisgICAgLy8g
dmFsdWUuIFNpbmNlIHdlIGFyZSBleGVjdXRpbmcgaW4gcmV2ZXJzZSwgdGhpcyBtZWFucyB0aGF0
IHdlIG11c3QgZG8gZGVmcyBiZWZvcmUgdXNlcyAocmV2ZXJzZSBvZgorICAgIC8vIHVzZXMgYmVm
b3JlIGRlZnMpLgorICAgIC8vCisgICAgLy8gU2luY2UgdGhpcyBpcyBhIGxpdmVuZXNzIGFuYWx5
c2lzLCB0aGlzIG9yZGVyaW5nIGVuZHMgdXAgYmVpbmcgcGFydGljdWxhcmx5IGltcG9ydGFudDog
aWYgd2UgZGlkCisgICAgLy8gdXNlcyBiZWZvcmUgZGVmcywgdGhlbiB0aGUgYWRkIG9wZXJhdGlv
biBhYm92ZSB3b3VsZCBhcHBlYXIgdG8gbm90IGhhdmUgbG9jMSBsaXZlLCBzaW5jZSB3ZSdkCisg
ICAgLy8gZmlyc3QgYWRkIGl0IHRvIHRoZSBvdXQgc2V0ICh0aGUgdXNlKSwgYW5kIHRoZW4gd2Un
ZCByZW1vdmUgaXQgKHRoZSBkZWYpLgorCisgICAgYXV0byogY29kZUJsb2NrID0gZ3JhcGguY29k
ZUJsb2NrKCk7CisgICAgSW50ZXJwcmV0ZXIqIGludGVycHJldGVyID0gY29kZUJsb2NrLT52bSgp
LT5pbnRlcnByZXRlcjsKKyAgICBhdXRvKiBpbnN0cnVjdGlvbnNCZWdpbiA9IGdyYXBoLmluc3Ry
dWN0aW9ucygpLmJlZ2luKCk7CisgICAgYXV0byogaW5zdHJ1Y3Rpb24gPSAmaW5zdHJ1Y3Rpb25z
QmVnaW5bYnl0ZWNvZGVPZmZzZXRdOworICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0
ZXItPmdldE9wY29kZUlEKCppbnN0cnVjdGlvbik7CisKKyAgICBzdGF0aWNfY2FzdDxEZXJpdmVk
QW5hbHlzaXMqPih0aGlzKS0+Y29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldCgKKyAgICAgICAg
Y29kZUJsb2NrLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb24sIG91dCwKKyAgICAgICAgWyZdICh0eXBl
bmFtZSBHcmFwaDo6Q29kZUJsb2NrKiwgdHlwZW5hbWUgR3JhcGg6Okluc3RydWN0aW9uKiwgT3Bj
b2RlSUQsIGludCBvcGVyYW5kKSB7CisgICAgICAgICAgICBpZiAoaXNWYWxpZFJlZ2lzdGVyRm9y
TGl2ZW5lc3Mob3BlcmFuZCkpCisgICAgICAgICAgICAgICAgZGVmKFZpcnR1YWxSZWdpc3Rlcihv
cGVyYW5kKS50b0xvY2FsKCkpOworICAgICAgICB9KTsKKworICAgIHN0YXRpY19jYXN0PERlcml2
ZWRBbmFseXNpcyo+KHRoaXMpLT5jb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAorICAgICAg
ICBjb2RlQmxvY2ssIG9wY29kZUlELCBpbnN0cnVjdGlvbiwgb3V0LAorICAgICAgICBbJl0gKHR5
cGVuYW1lIEdyYXBoOjpDb2RlQmxvY2sqLCB0eXBlbmFtZSBHcmFwaDo6SW5zdHJ1Y3Rpb24qLCBP
cGNvZGVJRCwgaW50IG9wZXJhbmQpIHsKKyAgICAgICAgICAgIGlmIChpc1ZhbGlkUmVnaXN0ZXJG
b3JMaXZlbmVzcyhvcGVyYW5kKSkKKyAgICAgICAgICAgICAgICB1c2UoVmlydHVhbFJlZ2lzdGVy
KG9wZXJhbmQpLnRvTG9jYWwoKSk7CisgICAgICAgIH0pOworCisgICAgLy8gSWYgd2UgaGF2ZSBh
biBleGNlcHRpb24gaGFuZGxlciwgd2Ugd2FudCB0aGUgbGl2ZS1pbiB2YXJpYWJsZXMgb2YgdGhl
IAorICAgIC8vIGV4Y2VwdGlvbiBoYW5kbGVyIGJsb2NrIHRvIGJlIGluY2x1ZGVkIGluIHRoZSBs
aXZlLWluIG9mIHRoaXMgcGFydGljdWxhciBieXRlY29kZS4KKyAgICBpZiAoYXV0byogaGFuZGxl
ciA9IGNvZGVCbG9jay0+aGFuZGxlckZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KSkg
eworICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGhhbmRsZXJCbG9jayA9IGdyYXBoLmZpbmRC
YXNpY0Jsb2NrV2l0aExlYWRlck9mZnNldChoYW5kbGVyLT50YXJnZXQpOworICAgICAgICBBU1NF
UlQoaGFuZGxlckJsb2NrKTsKKyAgICAgICAgaGFuZGxlckJsb2NrLT5pbigpLmZvckVhY2hTZXRC
aXQodXNlKTsKKyAgICB9Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIERlcml2ZWRBbmFseXNpcz4K
K3RlbXBsYXRlPHR5cGVuYW1lIEdyYXBoPgoraW5saW5lIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc1By
b3BhZ2F0aW9uPERlcml2ZWRBbmFseXNpcz46OnN0ZXBPdmVySW5zdHJ1Y3Rpb24oR3JhcGgmIGdy
YXBoLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgRmFzdEJpdFZlY3RvciYgb3V0KQoreworICAg
IHN0ZXBPdmVySW5zdHJ1Y3Rpb24oCisgICAgICAgIGdyYXBoLCBieXRlY29kZU9mZnNldCwgb3V0
LAorICAgICAgICBbJl0gKHVuc2lnbmVkIGJpdEluZGV4KSB7CisgICAgICAgICAgICAvLyBUaGlz
IGlzIHRoZSB1c2UgZnVuY3Rvciwgc28gd2Ugc2V0IHRoZSBiaXQuCisgICAgICAgICAgICBvdXQu
c2V0KGJpdEluZGV4KTsKKyAgICAgICAgfSwKKyAgICAgICAgWyZdICh1bnNpZ25lZCBiaXRJbmRl
eCkgeworICAgICAgICAgICAgLy8gVGhpcyBpcyB0aGUgZGVmIGZ1bmN0b3IsIHNvIHdlIGNsZWFy
IHRoZSBiaXQuCisgICAgICAgICAgICBvdXQuY2xlYXIoYml0SW5kZXgpOworICAgICAgICB9KTsK
K30KKwordGVtcGxhdGU8dHlwZW5hbWUgRGVyaXZlZEFuYWx5c2lzPgordGVtcGxhdGU8dHlwZW5h
bWUgR3JhcGg+CitpbmxpbmUgYm9vbCBCeXRlY29kZUxpdmVuZXNzUHJvcGFnYXRpb248RGVyaXZl
ZEFuYWx5c2lzPjo6Y29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCeXRlY29kZU9mZnNldChHcmFwaCYg
Z3JhcGgsIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2ssIHVuc2lnbmVkIHRhcmdldE9mZnNldCwg
RmFzdEJpdFZlY3RvciYgcmVzdWx0KQoreworICAgIEFTU0VSVCghYmxvY2stPmlzRXhpdEJsb2Nr
KCkpOworICAgIEFTU0VSVCghYmxvY2stPmlzRW50cnlCbG9jaygpKTsKIAotI2VuZGlmIC8vIEJ5
dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGluZXNfaAorICAgIEZhc3RCaXRWZWN0b3Igb3V0ID0g
YmxvY2stPm91dCgpOwogCisgICAgZm9yIChpbnQgaSA9IGJsb2NrLT5vZmZzZXRzKCkuc2l6ZSgp
IC0gMTsgaSA+PSAwOyBpLS0pIHsKKyAgICAgICAgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQgPSBi
bG9jay0+b2Zmc2V0cygpW2ldOworICAgICAgICBpZiAodGFyZ2V0T2Zmc2V0ID4gYnl0ZWNvZGVP
ZmZzZXQpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgc3RlcE92ZXJJbnN0cnVjdGlvbihn
cmFwaCwgYnl0ZWNvZGVPZmZzZXQsIG91dCk7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdC5z
ZXRBbmRDaGVjayhvdXQpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBEZXJpdmVkQW5hbHlzaXM+
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBHcmFwaD4KK2lubGluZSBib29sIEJ5dGVjb2RlTGl2ZW5lc3NQ
cm9wYWdhdGlvbjxEZXJpdmVkQW5hbHlzaXM+Ojpjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJsb2Nr
KEdyYXBoJiBncmFwaCwgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaykKK3sKKyAgICBpZiAoYmxv
Y2stPmlzRXhpdEJsb2NrKCkgfHwgYmxvY2stPmlzRW50cnlCbG9jaygpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgcmV0dXJuIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQnl0ZWNvZGVPZmZz
ZXQoZ3JhcGgsIGJsb2NrLCBibG9jay0+bGVhZGVyT2Zmc2V0KCksIGJsb2NrLT5pbigpKTsKK30K
KwordGVtcGxhdGU8dHlwZW5hbWUgRGVyaXZlZEFuYWx5c2lzPgordGVtcGxhdGU8dHlwZW5hbWUg
R3JhcGg+CitpbmxpbmUgRmFzdEJpdFZlY3RvciBCeXRlY29kZUxpdmVuZXNzUHJvcGFnYXRpb248
RGVyaXZlZEFuYWx5c2lzPjo6Z2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29kZU9mZnNldChHcmFwaCYg
Z3JhcGgsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KQoreworICAgIEJ5dGVjb2RlQmFzaWNCbG9j
ayogYmxvY2sgPSBncmFwaC5maW5kQmFzaWNCbG9ja0ZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2Rl
T2Zmc2V0KTsKKyAgICBBU1NFUlQoYmxvY2spOworICAgIEFTU0VSVCghYmxvY2stPmlzRW50cnlC
bG9jaygpKTsKKyAgICBBU1NFUlQoIWJsb2NrLT5pc0V4aXRCbG9jaygpKTsKKyAgICBGYXN0Qml0
VmVjdG9yIG91dDsKKyAgICBvdXQucmVzaXplKGJsb2NrLT5vdXQoKS5udW1CaXRzKCkpOworICAg
IGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQnl0ZWNvZGVPZmZzZXQoZ3JhcGgsIGJsb2NrLCBieXRl
Y29kZU9mZnNldCwgb3V0KTsKKyAgICByZXR1cm4gb3V0OworfQorCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBEZXJpdmVkQW5hbHlzaXM+Cit0ZW1wbGF0ZTx0eXBlbmFtZSBHcmFwaD4KK2lubGluZSB2b2lk
IEJ5dGVjb2RlTGl2ZW5lc3NQcm9wYWdhdGlvbjxEZXJpdmVkQW5hbHlzaXM+OjpydW5MaXZlbmVz
c0ZpeHBvaW50KEdyYXBoJiBncmFwaCkKK3sKKyAgICBhdXRvKiBjb2RlQmxvY2sgPSBncmFwaC5j
b2RlQmxvY2soKTsKKyAgICB1bnNpZ25lZCBudW1iZXJPZlZhcmlhYmxlcyA9IGNvZGVCbG9jay0+
bnVtQ2FsbGVlTG9jYWxzKCk7CisgICAgZm9yIChCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrIDog
Z3JhcGgpIHsKKyAgICAgICAgYmxvY2stPmluKCkucmVzaXplKG51bWJlck9mVmFyaWFibGVzKTsK
KyAgICAgICAgYmxvY2stPm91dCgpLnJlc2l6ZShudW1iZXJPZlZhcmlhYmxlcyk7CisgICAgICAg
IGJsb2NrLT5pbigpLmNsZWFyQWxsKCk7CisgICAgICAgIGJsb2NrLT5vdXQoKS5jbGVhckFsbCgp
OworICAgIH0KKworICAgIGJvb2wgY2hhbmdlZDsKKyAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGxh
c3RCbG9jayA9IGdyYXBoLmxhc3QoKTsKKyAgICBsYXN0QmxvY2stPmluKCkuY2xlYXJBbGwoKTsK
KyAgICBsYXN0QmxvY2stPm91dCgpLmNsZWFyQWxsKCk7CisgICAgRmFzdEJpdFZlY3RvciBuZXdP
dXQ7CisgICAgbmV3T3V0LnJlc2l6ZShsYXN0QmxvY2stPm91dCgpLm51bUJpdHMoKSk7CisgICAg
ZG8geworICAgICAgICBjaGFuZ2VkID0gZmFsc2U7CisgICAgICAgIGZvciAoc3RkOjp1bmlxdWVf
cHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4mIGJsb2NrIDogZ3JhcGguYmFzaWNCbG9ja3NJblJldmVy
c2VPcmRlcigpKSB7CisgICAgICAgICAgICBuZXdPdXQuY2xlYXJBbGwoKTsKKyAgICAgICAgICAg
IGZvciAoQnl0ZWNvZGVCYXNpY0Jsb2NrKiBzdWNjZXNzb3IgOiBibG9jay0+c3VjY2Vzc29ycygp
KQorICAgICAgICAgICAgICAgIG5ld091dC5tZXJnZShzdWNjZXNzb3ItPmluKCkpOworICAgICAg
ICAgICAgYmxvY2stPm91dCgpLnNldChuZXdPdXQpOworICAgICAgICAgICAgY2hhbmdlZCB8PSBj
b21wdXRlTG9jYWxMaXZlbmVzc0ZvckJsb2NrKGdyYXBoLCBibG9jay5nZXQoKSk7CisgICAgICAg
IH0KKyAgICB9IHdoaWxlIChjaGFuZ2VkKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVSZXdyaXRlci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVSZXdyaXRlci5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMjhkYzIwYjNmZTdiYmI1MDc5Mjk4NDFlMjIxMjU4OTRkOGIyNzFmOAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVJl
d3JpdGVyLmNwcApAQCAtMCwwICsxLDExNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBZ
dXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisgKiBDb3B5cmlnaHQgKEMpIDIw
MTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiQnl0ZWNvZGVSZXdyaXRlci5oIgorCisjaW5jbHVkZSAiUHJl
Y2lzZUp1bXBUYXJnZXRzSW5saW5lcy5oIgorI2luY2x1ZGUgPHd0Zi9CdWJibGVTb3J0Lmg+CisK
K25hbWVzcGFjZSBKU0MgeworCit2b2lkIEJ5dGVjb2RlUmV3cml0ZXI6OmFwcGx5TW9kaWZpY2F0
aW9uKCkKK3sKKyAgICBmb3IgKHNpemVfdCBpbnNlcnRpb25JbmRleCA9IG1faW5zZXJ0aW9ucy5z
aXplKCk7IGluc2VydGlvbkluZGV4LS07KSB7CisgICAgICAgIEluc2VydGlvbiYgaW5zZXJ0aW9u
ID0gbV9pbnNlcnRpb25zW2luc2VydGlvbkluZGV4XTsKKyAgICAgICAgaWYgKGluc2VydGlvbi50
eXBlID09IEluc2VydGlvbjo6VHlwZTo6UmVtb3ZlKQorICAgICAgICAgICAgbV9ncmFwaC5pbnN0
cnVjdGlvbnMoKS5yZW1vdmUoaW5zZXJ0aW9uLmluZGV4LmJ5dGVjb2RlT2Zmc2V0LCBpbnNlcnRp
b24ubGVuZ3RoKCkpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGlmIChpbnNlcnRpb24u
aW5jbHVkZUJyYW5jaCA9PSBJbmNsdWRlQnJhbmNoOjpZZXMpIHsKKyAgICAgICAgICAgICAgICBp
bnQgZmluYWxPZmZzZXQgPSBpbnNlcnRpb24uaW5kZXguYnl0ZWNvZGVPZmZzZXQgKyBjYWxjdWxh
dGVEaWZmZXJlbmNlKG1faW5zZXJ0aW9ucy5iZWdpbigpLCBtX2luc2VydGlvbnMuYmVnaW4oKSAr
IGluc2VydGlvbkluZGV4KTsKKyAgICAgICAgICAgICAgICBhZGp1c3RKdW1wVGFyZ2V0c0luRnJh
Z21lbnQoZmluYWxPZmZzZXQsIGluc2VydGlvbik7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBtX2dyYXBoLmluc3RydWN0aW9ucygpLmluc2VydFZlY3RvcihpbnNlcnRpb24uaW5kZXguYnl0
ZWNvZGVPZmZzZXQsIGluc2VydGlvbi5pbnN0cnVjdGlvbnMpOworICAgICAgICB9CisgICAgfQor
ICAgIG1faW5zZXJ0aW9ucy5jbGVhcigpOworfQorCit2b2lkIEJ5dGVjb2RlUmV3cml0ZXI6OmV4
ZWN1dGUoKQoreworICAgIFdURjo6YnViYmxlU29ydChtX2luc2VydGlvbnMuYmVnaW4oKSwgbV9p
bnNlcnRpb25zLmVuZCgpLCBbXSAoY29uc3QgSW5zZXJ0aW9uJiBsaHMsIGNvbnN0IEluc2VydGlv
biYgcmhzKSB7CisgICAgICAgIHJldHVybiBsaHMuaW5kZXggPCByaHMuaW5kZXg7CisgICAgfSk7
CisKKyAgICBVbmxpbmtlZENvZGVCbG9jayogY29kZUJsb2NrID0gbV9ncmFwaC5jb2RlQmxvY2so
KTsKKyAgICBjb2RlQmxvY2stPmFwcGx5TW9kaWZpY2F0aW9uKCp0aGlzKTsKK30KKwordm9pZCBC
eXRlY29kZVJld3JpdGVyOjphZGp1c3RKdW1wVGFyZ2V0c0luRnJhZ21lbnQodW5zaWduZWQgZmlu
YWxPZmZzZXQsIEluc2VydGlvbiYgaW5zZXJ0aW9uKQoreworICAgIGF1dG8mIGZyYWdtZW50ID0g
aW5zZXJ0aW9uLmluc3RydWN0aW9uczsKKyAgICBVbmxpbmtlZEluc3RydWN0aW9uKiBpbnN0cnVj
dGlvbnNCZWdpbiA9IGZyYWdtZW50LmRhdGEoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGZyYWdtZW50
T2Zmc2V0ID0gMCwgZnJhZ21lbnRDb3VudCA9IGZyYWdtZW50LnNpemUoKTsgZnJhZ21lbnRPZmZz
ZXQgPCBmcmFnbWVudENvdW50OykgeworICAgICAgICBVbmxpbmtlZEluc3RydWN0aW9uJiBpbnN0
cnVjdGlvbiA9IGZyYWdtZW50W2ZyYWdtZW50T2Zmc2V0XTsKKyAgICAgICAgT3Bjb2RlSUQgb3Bj
b2RlSUQgPSBpbnN0cnVjdGlvbi51Lm9wY29kZTsKKyAgICAgICAgaWYgKGlzQnJhbmNoKG9wY29k
ZUlEKSkgeworICAgICAgICAgICAgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQgPSBmaW5hbE9mZnNl
dCArIGZyYWdtZW50T2Zmc2V0OworICAgICAgICAgICAgVW5saW5rZWRDb2RlQmxvY2sqIGNvZGVC
bG9jayA9IG1fZ3JhcGguY29kZUJsb2NrKCk7CisgICAgICAgICAgICBleHRyYWN0U3RvcmVkSnVt
cFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChjb2RlQmxvY2ssIGNvZGVCbG9jay0+dm0oKS0+aW50
ZXJwcmV0ZXIsIGluc3RydWN0aW9uc0JlZ2luLCBmcmFnbWVudE9mZnNldCwgWyZdKGludDMyX3Qm
IGxhYmVsKSB7CisgICAgICAgICAgICAgICAgaW50IGFic29sdXRlT2Zmc2V0ID0gYWRqdXN0QWJz
b2x1dGVPZmZzZXQobGFiZWwpOworICAgICAgICAgICAgICAgIGxhYmVsID0gYWJzb2x1dGVPZmZz
ZXQgLSBzdGF0aWNfY2FzdDxpbnQ+KGJ5dGVjb2RlT2Zmc2V0KTsKKyAgICAgICAgICAgIH0pOwor
ICAgICAgICB9CisgICAgICAgIGZyYWdtZW50T2Zmc2V0ICs9IG9wY29kZUxlbmd0aChvcGNvZGVJ
RCk7CisgICAgfQorfQorCit2b2lkIEJ5dGVjb2RlUmV3cml0ZXI6Omluc2VydEltcGwoSW5zZXJ0
aW9uUG9pbnQgaW5zZXJ0aW9uUG9pbnQsIEluY2x1ZGVCcmFuY2ggaW5jbHVkZUJyYW5jaCwgVmVj
dG9yPFVubGlua2VkSW5zdHJ1Y3Rpb24+JiYgZnJhZ21lbnQpCit7CisgICAgQVNTRVJUKGluc2Vy
dGlvblBvaW50LnBvc2l0aW9uID09IFBvc2l0aW9uOjpCZWZvcmUgfHwgaW5zZXJ0aW9uUG9pbnQu
cG9zaXRpb24gPT0gUG9zaXRpb246OkFmdGVyKTsKKyAgICBtX2luc2VydGlvbnMuYXBwZW5kKElu
c2VydGlvbiB7CisgICAgICAgIGluc2VydGlvblBvaW50LAorICAgICAgICBJbnNlcnRpb246OlR5
cGU6Okluc2VydCwKKyAgICAgICAgaW5jbHVkZUJyYW5jaCwKKyAgICAgICAgMCwKKyAgICAgICAg
V1RGTW92ZShmcmFnbWVudCkKKyAgICB9KTsKK30KKworaW50IEJ5dGVjb2RlUmV3cml0ZXI6OmFk
anVzdEp1bXBUYXJnZXQoSW5zZXJ0aW9uUG9pbnQgc3RhcnRQb2ludCwgSW5zZXJ0aW9uUG9pbnQg
anVtcFRhcmdldFBvaW50KQoreworICAgIGlmIChzdGFydFBvaW50IDwganVtcFRhcmdldFBvaW50
KSB7CisgICAgICAgIGludCBqdW1wVGFyZ2V0ID0ganVtcFRhcmdldFBvaW50LmJ5dGVjb2RlT2Zm
c2V0OworICAgICAgICBhdXRvIHN0YXJ0ID0gc3RkOjpsb3dlcl9ib3VuZChtX2luc2VydGlvbnMu
YmVnaW4oKSwgbV9pbnNlcnRpb25zLmVuZCgpLCBzdGFydFBvaW50LCBbJl0gKGNvbnN0IEluc2Vy
dGlvbiYgaW5zZXJ0aW9uLCBJbnNlcnRpb25Qb2ludCBzdGFydFBvaW50KSB7CisgICAgICAgICAg
ICByZXR1cm4gaW5zZXJ0aW9uLmluZGV4IDwgc3RhcnRQb2ludDsKKyAgICAgICAgfSk7CisgICAg
ICAgIGlmIChzdGFydCAhPSBtX2luc2VydGlvbnMuZW5kKCkpIHsKKyAgICAgICAgICAgIGF1dG8g
ZW5kID0gc3RkOjpsb3dlcl9ib3VuZChtX2luc2VydGlvbnMuYmVnaW4oKSwgbV9pbnNlcnRpb25z
LmVuZCgpLCBqdW1wVGFyZ2V0UG9pbnQsIFsmXSAoY29uc3QgSW5zZXJ0aW9uJiBpbnNlcnRpb24s
IEluc2VydGlvblBvaW50IGp1bXBUYXJnZXRQb2ludCkgeworICAgICAgICAgICAgICAgIHJldHVy
biBpbnNlcnRpb24uaW5kZXggPCBqdW1wVGFyZ2V0UG9pbnQ7CisgICAgICAgICAgICB9KTsKKyAg
ICAgICAgICAgIGp1bXBUYXJnZXQgKz0gY2FsY3VsYXRlRGlmZmVyZW5jZShzdGFydCwgZW5kKTsK
KyAgICAgICAgfQorICAgICAgICByZXR1cm4ganVtcFRhcmdldCAtIHN0YXJ0UG9pbnQuYnl0ZWNv
ZGVPZmZzZXQ7CisgICAgfQorCisgICAgaWYgKHN0YXJ0UG9pbnQgPT0ganVtcFRhcmdldFBvaW50
KQorICAgICAgICByZXR1cm4gMDsKKworICAgIHJldHVybiAtYWRqdXN0SnVtcFRhcmdldChqdW1w
VGFyZ2V0UG9pbnQsIHN0YXJ0UG9pbnQpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVJld3JpdGVyLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVSZXdyaXRlci5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjAzNWY5MDBhN2UyZmEwMDlmZDIzMTNlYWVmOGIwY2QxZjY1ODVhYzEKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVSZXdyaXRl
ci5oCkBAIC0wLDAgKzEsMjM1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IFl1c3VrZSBT
dXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aW5jbHVkZSAiQnl0ZWNvZGVHcmFwaC5oIgorI2luY2x1ZGUgIkJ5dGVjb2Rlcy5oIgorI2luY2x1
ZGUgIk9wY29kZS5oIgorI2luY2x1ZGUgIlVubGlua2VkQ29kZUJsb2NrLmgiCisjaW5jbHVkZSA8
d3RmL0luc2VydGlvbi5oPgorCituYW1lc3BhY2UgSlNDIHsKKworLy8gQnl0ZWNvZGVSZXdyaXRl
ciBvZmZlcnMgdGhlIGFiaWxpdHkgdG8gaW5zZXJ0IGFuZCByZW1vdmUgdGhlIGJ5dGVjb2RlcyBp
bmNsdWRpbmcganVtcCBvcGVyYXRpb25zLgorLy8KKy8vIFdlIHVzZSB0aGUgb3JpZ2luYWwgYnl0
ZWNvZGUgb2Zmc2V0cyBhcyBsYWJlbHMuIFdoZW4geW91IGVtaXQgc29tZSBqdW1wcywgeW91IGNh
biBzcGVjaWZ5IHRoZSBqdW1wIHRhcmdldCBieQorLy8gdXNpbmcgdGhlIG9yaWdpbmFsIGJ5dGVj
b2RlIG9mZnNldHMuIFRoZXNlIGJ5dGVjb2RlIG9mZnNldHMgYXJlIGxhdGVyIGNvbnZlcnRlZCBh
cHByb3ByaWF0ZSB2YWx1ZXMgYnkgdGhlCisvLyByZXdyaXRlci4gQW5kIHdlIGFsc28gdXNlIHRo
ZSBsYWJlbHMgdG8gcmVwcmVzZW50cyB0aGUgcG9zaXRpb24gdGhlIG5ldyBieXRlY29kZXMgaW5z
ZXJ0ZWQuCisvLworLy8gICAgICAgICAgICAgICAgICAgICAgfCAgW2J5dGVjb2RlXSAgfCAgW2J5
dGVjb2RlXSAgfAorLy8gICBvZmZzZXRzICAgICAgICAgICAgQSAgICAgICAgICAgICAgQiAgICAg
ICAgICAgICAgQworLy8KKy8vIFdlIGNhbiB1c2UgdGhlIGFib3ZlICJBIiwgIkIiLCBhbmQgIkMi
IG9mZnNldHMgYXMgbGFiZWxzLiBBbmQgdGhlIHJld3JpdGVyIGhhcyB0aGUgYWJpbGl0eSB0byBp
bnNlcnQgYnl0ZWNvZGUgZnJhZ21lbnRzCisvLyBiZWZvcmUgYW5kIGFmdGVyIHRoZSBsYWJlbC4g
Rm9yIGV4YW1wbGUsIGlmIHlvdSBpbnNlcnQgdGhlIGZyYWdtZW50IGFmdGVyICJCIiwgdGhlIGxh
eW91dCBiZWNvbWVzIGxpa2UgdGhpcy4KKy8vCisvLyAgICAgICAgICAgICAgICAgICAgICB8ICBb
Ynl0ZWNvZGVdICB8ICBbZnJhZ21lbnRdICBbYnl0ZWNvZGVdICB8CisvLyAgIG9mZnNldHMgICAg
ICAgICAgICBBICAgICAgICAgICAgICBCICAgICAgICAgICAgICAgICAgICAgICAgICBDCisvLwor
Ly8gIEFuZCBldmVuIGlmIHlvdSByZW1vdmUgc29tZSBvcmlnaW5hbCBieXRlY29kZXMsIHRoZSBv
ZmZzZXQgcmVtYWlucyBhcyBsYWJlbHMuIEZvciBleGFtcGxlLCB3aGVuIHlvdSByZW1vdmUgdGhl
IEEncyBieXRlY29kZSwKKy8vICB0aGUgbGF5b3V0IGJlY29tZXMgbGlrZSB0aGlzLgorLy8KKy8v
ICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgIHwgIFtieXRlY29kZV0gIHwKKy8v
ICAgb2Zmc2V0cyAgICAgICAgICAgIEEgICAgICAgICAgICAgIEIgICAgICAgICAgICAgIEMKKy8v
CisvLyAgQW5kIHN0aWxsIHlvdSBjYW4gaW5zZXJ0IGZyYWdtZW50cyBiZWZvcmUgYW5kIGFmdGVy
ICJBIi4KKy8vCisvLyAgICAgICAgICAgICAgICAgICAgICB8ICBbZnJhZ21lbnRdICB8ICBbYnl0
ZWNvZGVdICB8CisvLyAgIG9mZnNldHMgICAgICAgICAgICBBICAgICAgICAgICAgICBCICAgICAg
ICAgICAgICBDCisvLworLy8gICBXZSBjYW4gaW5zZXJ0IGJ5dGVjb2RlIGZyYWdtZW50cyAiQmVm
b3JlIiBhbmQgIkFmdGVyIiB0aGUgbGFiZWxzLiBUaGlzIGluc2VydGVkIHBvc2l0aW9uLCBlaXRo
ZXIgIkJlZm9yZSIgYW5kICJBZnRlciIsCisvLyAgIGhhcyBlZmZlY3Qgd2hlbiB0aGUgbGFiZWwg
aXMgaW52b2x2ZWQgd2l0aCBqdW1wcy4gRm9yIGV4YW1wbGUsIHdoZW4geW91IGhhdmUganVtcCB0
byB0aGUgcG9zaXRpb24gIkIiLAorLy8KKy8vICAgICAgICAgICAgICAgICAgICAgIHwgIFtieXRl
Y29kZV0gIHwgIFtieXRlY29kZV0gIHwKKy8vICAgb2Zmc2V0cyAgICAgICAgICAgIEEgICAgICAg
ICAgICAgIEIgICAgICAgICAgICAgIEMKKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIF4KKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGp1bXAgdG8g
aGVyZS4KKy8vCisvLyAgYW5kIHlvdSBpbnNlcnQgdGhlIGJ5dGVjb2RlIGJlZm9yZS9hZnRlciAi
QiIsCisvLworLy8gICAgICAgICAgICAgICAgICAgICAgfCAgW2J5dGVjb2RlXSBbYmVmb3JlXSAg
fCAgW2FmdGVyXSBbYnl0ZWNvZGVdICB8CisvLyAgIG9mZnNldHMgICAgICAgICAgICBBICAgICAg
ICAgICAgICAgICAgICAgICBCICAgICAgICAgICAgICBDCisvLyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBeCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBqdW1wIHRvIGhlcmUuCisvLworLy8gIGFzIHlvdSBjYW4gc2Vl
LCB0aGUgZXhlY3V0aW9uIGp1bXBpbmcgaW50byAiQiIgZG9lcyBub3QgZXhlY3V0ZSBbYmVmb3Jl
XSBjb2RlLgorY2xhc3MgQnl0ZWNvZGVSZXdyaXRlciB7CitXVEZfTUFLRV9OT05DT1BZQUJMRShC
eXRlY29kZVJld3JpdGVyKTsKK3B1YmxpYzoKKyAgICBlbnVtIGNsYXNzIFBvc2l0aW9uIDogaW50
OF90IHsKKyAgICAgICAgRW50cnlQb2ludCA9IC0yLAorICAgICAgICBCZWZvcmUgPSAtMSwKKyAg
ICAgICAgTGFiZWxQb2ludCA9IDAsCisgICAgICAgIEFmdGVyID0gMSwKKyAgICAgICAgT3JpZ2lu
YWxCeXRlY29kZVBvaW50ID0gMiwKKyAgICB9OworCisgICAgZW51bSBjbGFzcyBJbmNsdWRlQnJh
bmNoIDogdWludDhfdCB7CisgICAgICAgIE5vID0gMCwKKyAgICAgICAgWWVzID0gMSwKKyAgICB9
OworCisgICAgc3RydWN0IEluc2VydGlvblBvaW50IHsKKyAgICAgICAgaW50IGJ5dGVjb2RlT2Zm
c2V0OworICAgICAgICBQb3NpdGlvbiBwb3NpdGlvbjsKKworICAgICAgICBJbnNlcnRpb25Qb2lu
dChpbnQgb2Zmc2V0LCBQb3NpdGlvbiBwb3MpCisgICAgICAgICAgICA6IGJ5dGVjb2RlT2Zmc2V0
KG9mZnNldCkKKyAgICAgICAgICAgICwgcG9zaXRpb24ocG9zKQorICAgICAgICB7CisgICAgICAg
IH0KKworICAgICAgICBib29sIG9wZXJhdG9yPChjb25zdCBJbnNlcnRpb25Qb2ludCYgb3RoZXIp
IGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChieXRlY29kZU9mZnNldCA9PSBvdGhl
ci5ieXRlY29kZU9mZnNldCkKKyAgICAgICAgICAgICAgICByZXR1cm4gcG9zaXRpb24gPCBvdGhl
ci5wb3NpdGlvbjsKKyAgICAgICAgICAgIHJldHVybiBieXRlY29kZU9mZnNldCA8IG90aGVyLmJ5
dGVjb2RlT2Zmc2V0OworICAgICAgICB9CisKKyAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IEluc2VydGlvblBvaW50JiBvdGhlcikgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgcmV0
dXJuIGJ5dGVjb2RlT2Zmc2V0ID09IG90aGVyLmJ5dGVjb2RlT2Zmc2V0ICYmIHBvc2l0aW9uID09
IG90aGVyLnBvc2l0aW9uOworICAgICAgICB9CisgICAgfTsKKworcHJpdmF0ZToKKyAgICBzdHJ1
Y3QgSW5zZXJ0aW9uIHsKKyAgICAgICAgZW51bSBjbGFzcyBUeXBlIDogdWludDhfdCB7IEluc2Vy
dCA9IDAsIFJlbW92ZSA9IDEsIH07CisKKyAgICAgICAgc2l6ZV90IGxlbmd0aCgpIGNvbnN0Cisg
ICAgICAgIHsKKyAgICAgICAgICAgIGlmICh0eXBlID09IFR5cGU6OlJlbW92ZSkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gcmVtb3ZlTGVuZ3RoOworICAgICAgICAgICAgcmV0dXJuIGluc3RydWN0
aW9ucy5zaXplKCk7CisgICAgICAgIH0KKworICAgICAgICBJbnNlcnRpb25Qb2ludCBpbmRleDsK
KyAgICAgICAgVHlwZSB0eXBlOworICAgICAgICBJbmNsdWRlQnJhbmNoIGluY2x1ZGVCcmFuY2g7
CisgICAgICAgIHNpemVfdCByZW1vdmVMZW5ndGg7CisgICAgICAgIFZlY3RvcjxVbmxpbmtlZElu
c3RydWN0aW9uPiBpbnN0cnVjdGlvbnM7CisgICAgfTsKKworcHVibGljOgorICAgIGNsYXNzIEZy
YWdtZW50IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShGcmFnbWVudCk7CisgICAgcHVibGlj
OgorICAgICAgICBGcmFnbWVudChWZWN0b3I8VW5saW5rZWRJbnN0cnVjdGlvbj4mIGZyYWdtZW50
LCBJbmNsdWRlQnJhbmNoJiBpbmNsdWRlQnJhbmNoKQorICAgICAgICAgICAgOiBtX2ZyYWdtZW50
KGZyYWdtZW50KQorICAgICAgICAgICAgLCBtX2luY2x1ZGVCcmFuY2goaW5jbHVkZUJyYW5jaCkK
KyAgICAgICAgeworICAgICAgICB9CisKKyAgICAgICAgdGVtcGxhdGU8Y2xhc3MuLi4gQXJncz4K
KyAgICAgICAgdm9pZCBhcHBlbmRJbnN0cnVjdGlvbihPcGNvZGVJRCBvcGNvZGVJRCwgQXJncy4u
LiBhcmdzKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoaXNCcmFuY2gob3Bjb2RlSUQpKQor
ICAgICAgICAgICAgICAgIG1faW5jbHVkZUJyYW5jaCA9IEluY2x1ZGVCcmFuY2g6OlllczsKKwor
ICAgICAgICAgICAgVW5saW5rZWRJbnN0cnVjdGlvbiBpbnN0cnVjdGlvbnNbc2l6ZW9mLi4uKGFy
Z3MpICsgMV0gPSB7CisgICAgICAgICAgICAgICAgVW5saW5rZWRJbnN0cnVjdGlvbihvcGNvZGVJ
RCksCisgICAgICAgICAgICAgICAgVW5saW5rZWRJbnN0cnVjdGlvbihhcmdzKS4uLgorICAgICAg
ICAgICAgfTsKKyAgICAgICAgICAgIG1fZnJhZ21lbnQuYXBwZW5kKGluc3RydWN0aW9ucywgc2l6
ZW9mLi4uKGFyZ3MpICsgMSk7CisgICAgICAgIH0KKworICAgIHByaXZhdGU6CisgICAgICAgIFZl
Y3RvcjxVbmxpbmtlZEluc3RydWN0aW9uPiYgbV9mcmFnbWVudDsKKyAgICAgICAgSW5jbHVkZUJy
YW5jaCYgbV9pbmNsdWRlQnJhbmNoOworICAgIH07CisKKyAgICBCeXRlY29kZVJld3JpdGVyKEJ5
dGVjb2RlR3JhcGg8VW5saW5rZWRDb2RlQmxvY2s+JiBncmFwaCkKKyAgICAgICAgOiBtX2dyYXBo
KGdyYXBoKQorICAgIHsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBGdW5jdGlvbj4KKyAg
ICB2b2lkIGluc2VydEZyYWdtZW50QmVmb3JlKHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBGdW5j
dGlvbiBmdW5jdGlvbikKKyAgICB7CisgICAgICAgIEluY2x1ZGVCcmFuY2ggaW5jbHVkZUJyYW5j
aCA9IEluY2x1ZGVCcmFuY2g6Ok5vOworICAgICAgICBWZWN0b3I8VW5saW5rZWRJbnN0cnVjdGlv
bj4gaW5zdHJ1Y3Rpb25zOworICAgICAgICBGcmFnbWVudCBmcmFnbWVudChpbnN0cnVjdGlvbnMs
IGluY2x1ZGVCcmFuY2gpOworICAgICAgICBmdW5jdGlvbihmcmFnbWVudCk7CisgICAgICAgIGlu
c2VydEltcGwoSW5zZXJ0aW9uUG9pbnQoYnl0ZWNvZGVPZmZzZXQsIFBvc2l0aW9uOjpCZWZvcmUp
LCBpbmNsdWRlQnJhbmNoLCBXVEZNb3ZlKGluc3RydWN0aW9ucykpOworICAgIH0KKworICAgIHRl
bXBsYXRlPGNsYXNzIEZ1bmN0aW9uPgorICAgIHZvaWQgaW5zZXJ0RnJhZ21lbnRBZnRlcih1bnNp
Z25lZCBieXRlY29kZU9mZnNldCwgRnVuY3Rpb24gZnVuY3Rpb24pCisgICAgeworICAgICAgICBJ
bmNsdWRlQnJhbmNoIGluY2x1ZGVCcmFuY2ggPSBJbmNsdWRlQnJhbmNoOjpObzsKKyAgICAgICAg
VmVjdG9yPFVubGlua2VkSW5zdHJ1Y3Rpb24+IGluc3RydWN0aW9uczsKKyAgICAgICAgRnJhZ21l
bnQgZnJhZ21lbnQoaW5zdHJ1Y3Rpb25zLCBpbmNsdWRlQnJhbmNoKTsKKyAgICAgICAgZnVuY3Rp
b24oZnJhZ21lbnQpOworICAgICAgICBpbnNlcnRJbXBsKEluc2VydGlvblBvaW50KGJ5dGVjb2Rl
T2Zmc2V0LCBQb3NpdGlvbjo6QWZ0ZXIpLCBpbmNsdWRlQnJhbmNoLCBXVEZNb3ZlKGluc3RydWN0
aW9ucykpOworICAgIH0KKworICAgIHZvaWQgcmVtb3ZlQnl0ZWNvZGUodW5zaWduZWQgYnl0ZWNv
ZGVPZmZzZXQpCisgICAgeworICAgICAgICBtX2luc2VydGlvbnMuYXBwZW5kKEluc2VydGlvbiB7
IEluc2VydGlvblBvaW50KGJ5dGVjb2RlT2Zmc2V0LCBQb3NpdGlvbjo6T3JpZ2luYWxCeXRlY29k
ZVBvaW50KSwgSW5zZXJ0aW9uOjpUeXBlOjpSZW1vdmUsIEluY2x1ZGVCcmFuY2g6Ok5vLCBvcGNv
ZGVMZW5ndGgobV9ncmFwaC5pbnN0cnVjdGlvbnMoKVtieXRlY29kZU9mZnNldF0udS5vcGNvZGUp
LCB7IH0gfSk7CisgICAgfQorCisgICAgdm9pZCBleGVjdXRlKCk7CisKKyAgICBCeXRlY29kZUdy
YXBoPFVubGlua2VkQ29kZUJsb2NrPiYgZ3JhcGgoKSB7IHJldHVybiBtX2dyYXBoOyB9CisKKyAg
ICBpbnQgYWRqdXN0QWJzb2x1dGVPZmZzZXQoaW50IGFic29sdXRlT2Zmc2V0KQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGFkanVzdEp1bXBUYXJnZXQoSW5zZXJ0aW9uUG9pbnQoMCwgUG9zaXRpb246
OkVudHJ5UG9pbnQpLCBJbnNlcnRpb25Qb2ludChhYnNvbHV0ZU9mZnNldCwgUG9zaXRpb246Okxh
YmVsUG9pbnQpKTsKKyAgICB9CisKKyAgICBpbnQgYWRqdXN0SnVtcFRhcmdldChpbnQgb3JpZ2lu
YWxCeXRlY29kZU9mZnNldCwgaW50IG9yaWdpbmFsSnVtcFRhcmdldCkKKyAgICB7CisgICAgICAg
IHJldHVybiBhZGp1c3RKdW1wVGFyZ2V0KEluc2VydGlvblBvaW50KG9yaWdpbmFsQnl0ZWNvZGVP
ZmZzZXQsIFBvc2l0aW9uOjpMYWJlbFBvaW50KSwgSW5zZXJ0aW9uUG9pbnQob3JpZ2luYWxKdW1w
VGFyZ2V0LCBQb3NpdGlvbjo6TGFiZWxQb2ludCkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICB2
b2lkIGluc2VydEltcGwoSW5zZXJ0aW9uUG9pbnQsIEluY2x1ZGVCcmFuY2gsIFZlY3RvcjxVbmxp
bmtlZEluc3RydWN0aW9uPiYmIGZyYWdtZW50KTsKKworICAgIGZyaWVuZCBjbGFzcyBVbmxpbmtl
ZENvZGVCbG9jazsKKyAgICB2b2lkIGFwcGx5TW9kaWZpY2F0aW9uKCk7CisgICAgdm9pZCBhZGp1
c3RKdW1wVGFyZ2V0c0luRnJhZ21lbnQodW5zaWduZWQgZmluYWxPZmZzZXQsIEluc2VydGlvbiYp
OworCisgICAgaW50IGFkanVzdEp1bXBUYXJnZXQoSW5zZXJ0aW9uUG9pbnQgc3RhcnRQb2ludCwg
SW5zZXJ0aW9uUG9pbnQganVtcFRhcmdldFBvaW50KTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJ
dGVyYXRvcj4gaW50IGNhbGN1bGF0ZURpZmZlcmVuY2UoSXRlcmF0b3IgYmVnaW4sIEl0ZXJhdG9y
IGVuZCk7CisKKyAgICBCeXRlY29kZUdyYXBoPFVubGlua2VkQ29kZUJsb2NrPiYgbV9ncmFwaDsK
KyAgICBWZWN0b3I8SW5zZXJ0aW9uLCA4PiBtX2luc2VydGlvbnM7Cit9OworCit0ZW1wbGF0ZTx0
eXBlbmFtZSBJdGVyYXRvcj4KK2lubGluZSBpbnQgQnl0ZWNvZGVSZXdyaXRlcjo6Y2FsY3VsYXRl
RGlmZmVyZW5jZShJdGVyYXRvciBiZWdpbiwgSXRlcmF0b3IgZW5kKQoreworICAgIGludCByZXN1
bHQgPSAwOworICAgIGZvciAoOyBiZWdpbiAhPSBlbmQ7ICsrYmVnaW4pIHsKKyAgICAgICAgaWYg
KGJlZ2luLT50eXBlID09IEluc2VydGlvbjo6VHlwZTo6UmVtb3ZlKQorICAgICAgICAgICAgcmVz
dWx0IC09IGJlZ2luLT5sZW5ndGgoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmVzdWx0
ICs9IGJlZ2luLT5sZW5ndGgoKTsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworfSAv
LyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQnl0ZWNvZGVVc2VEZWYuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZVVzZURlZi5oCmluZGV4IDYwNTdlZjYwOWVlZDFlZTJhOTliMDc2MjhiOTFjOTc1NTMzZmU0
YmIuLjRmMTRiMjMwOTA0YzFkNmY2ZDczYmY2ODBkYzAzMjRhZWZjNmY2YjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCkBAIC0zMCwxNSAr
MzAsOSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4K
LXZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCgKLSAgICBDb2RlQmxvY2sqIGNvZGVC
bG9jaywgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaywgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQs
IGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCit0ZW1wbGF0ZTx0eXBlbmFtZSBCbG9jaywgdHlwZW5h
bWUgRnVuY3RvciwgdHlwZW5hbWUgSW5zdHJ1Y3Rpb24+Cit2b2lkIGNvbXB1dGVVc2VzRm9yQnl0
ZWNvZGVPZmZzZXQoQmxvY2sqIGNvZGVCbG9jaywgT3Bjb2RlSUQgb3Bjb2RlSUQsIEluc3RydWN0
aW9uKiBpbnN0cnVjdGlvbiwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikKIHsKLSAgICBJbnRlcnBy
ZXRlciogaW50ZXJwcmV0ZXIgPSBjb2RlQmxvY2stPnZtKCktPmludGVycHJldGVyOwotICAgIElu
c3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiA9IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCku
YmVnaW4oKTsKLSAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSAmaW5zdHJ1Y3Rpb25zQmVn
aW5bYnl0ZWNvZGVPZmZzZXRdOwotICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0ZXIt
PmdldE9wY29kZUlEKGluc3RydWN0aW9uLT51Lm9wY29kZSk7Ci0KICAgICBpZiAob3Bjb2RlSUQg
IT0gb3BfZW50ZXIgJiYgY29kZUJsb2NrLT53YXNDb21waWxlZFdpdGhEZWJ1Z2dpbmdPcGNvZGVz
KCkgJiYgY29kZUJsb2NrLT5zY29wZVJlZ2lzdGVyKCkuaXNWYWxpZCgpKQogICAgICAgICBmdW5j
dG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBjb2RlQmxvY2stPnNjb3BlUmVn
aXN0ZXIoKS5vZmZzZXQoKSk7CiAKQEAgLTc1LDggKzY5LDcgQEAgdm9pZCBjb21wdXRlVXNlc0Zv
ckJ5dGVjb2RlT2Zmc2V0KAogICAgIGNhc2Ugb3Bfam5lcV9udWxsOgogICAgIGNhc2Ugb3BfZGVj
OgogICAgIGNhc2Ugb3BfaW5jOgotICAgIGNhc2Ugb3BfbG9nX3NoYWRvd19jaGlja2VuX3Byb2xv
Z3VlOgotICAgIGNhc2Ugb3BfcmVzdW1lOiB7CisgICAgY2FzZSBvcF9sb2dfc2hhZG93X2NoaWNr
ZW5fcHJvbG9ndWU6IHsKICAgICAgICAgQVNTRVJUKG9wY29kZUxlbmd0aHNbb3Bjb2RlSURdID4g
MSk7CiAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGlu
c3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CiAgICAgICAgIHJldHVybjsKQEAgLTI4NywyMCArMjgw
LDkgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAogICAgICAgICAgICAgZnVu
Y3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgY29kZUJsb2NrLT5zY29wZVJl
Z2lzdGVyKCkub2Zmc2V0KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGNhc2Ugb3Bf
c2F2ZTogeworICAgIGNhc2Ugb3BfeWllbGQ6IHsKICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ss
IGluc3RydWN0aW9uLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKTsKLSAgICAg
ICAgdW5zaWduZWQgbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0ID0gYnl0ZWNvZGVPZmZzZXQgKyBp
bnN0cnVjdGlvblszXS51Lm9wZXJhbmQ7Ci0gICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogbWVy
Z2VQb2ludEJsb2NrID0gbnVsbHB0cjsKLSAgICAgICAgZm9yIChCeXRlY29kZUJhc2ljQmxvY2sq
IHN1Y2Nlc3NvciA6IGJsb2NrLT5zdWNjZXNzb3JzKCkpIHsKLSAgICAgICAgICAgIGlmIChzdWNj
ZXNzb3ItPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCkgPT0gbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0
KSB7Ci0gICAgICAgICAgICAgICAgbWVyZ2VQb2ludEJsb2NrID0gc3VjY2Vzc29yOwotICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIEFTU0VS
VChtZXJnZVBvaW50QmxvY2spOwotICAgICAgICBtZXJnZVBvaW50QmxvY2stPmluKCkuZm9yRWFj
aFNldEJpdChbJl0odW5zaWduZWQgbG9jYWwpIHsKLSAgICAgICAgICAgIGZ1bmN0b3IoY29kZUJs
b2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGxvY2Fs
KS5vZmZzZXQoKSk7Ci0gICAgICAgIH0pOworICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5z
dHJ1Y3Rpb24sIG9wY29kZUlELCBpbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogICAgIGRlZmF1bHQ6CkBAIC0zMDksMjAgKzI5MSwxNSBAQCB2b2lkIGNv
bXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoCiAgICAgfQogfQogCi10ZW1wbGF0ZTx0eXBlbmFt
ZSBGdW5jdG9yPgotdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayog
Y29kZUJsb2NrLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9m
ZnNldCwgY29uc3QgRnVuY3RvciYgZnVuY3RvcikKK3RlbXBsYXRlPHR5cGVuYW1lIEJsb2NrLCB0
eXBlbmFtZSBJbnN0cnVjdGlvbiwgdHlwZW5hbWUgRnVuY3Rvcj4KK3ZvaWQgY29tcHV0ZURlZnNG
b3JCeXRlY29kZU9mZnNldChCbG9jayogY29kZUJsb2NrLCBPcGNvZGVJRCBvcGNvZGVJRCwgSW5z
dHJ1Y3Rpb24qIGluc3RydWN0aW9uLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQogewotICAgIElu
dGVycHJldGVyKiBpbnRlcnByZXRlciA9IGNvZGVCbG9jay0+dm0oKS0+aW50ZXJwcmV0ZXI7Ci0g
ICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luID0gY29kZUJsb2NrLT5pbnN0cnVjdGlv
bnMoKS5iZWdpbigpOwotICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9ICZpbnN0cnVjdGlv
bnNCZWdpbltieXRlY29kZU9mZnNldF07Ci0gICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnRlcnBy
ZXRlci0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb24tPnUub3Bjb2RlKTsKICAgICBzd2l0Y2ggKG9w
Y29kZUlEKSB7CiAgICAgLy8gVGhlc2UgZG9uJ3QgZGVmaW5lIGFueXRoaW5nLgogICAgIGNhc2Ug
b3BfcHV0X3RvX3Njb3BlOgogICAgIGNhc2Ugb3BfZW5kOgogICAgIGNhc2Ugb3BfdGhyb3c6CiAg
ICAgY2FzZSBvcF90aHJvd19zdGF0aWNfZXJyb3I6Ci0gICAgY2FzZSBvcF9zYXZlOgogICAgIGNh
c2Ugb3BfYXNzZXJ0OgogICAgIGNhc2Ugb3BfZGVidWc6CiAgICAgY2FzZSBvcF9yZXQ6CkBAIC0z
NjIsNiArMzM5LDcgQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9j
ayogY29kZUJsb2NrLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2MKICAgICBjYXNlIG9wX3dhdGNo
ZG9nOgogICAgIGNhc2Ugb3BfbG9nX3NoYWRvd19jaGlja2VuX3Byb2xvZ3VlOgogICAgIGNhc2Ug
b3BfbG9nX3NoYWRvd19jaGlja2VuX3RhaWw6CisgICAgY2FzZSBvcF95aWVsZDoKICNkZWZpbmUg
TExJTlRfSEVMUEVSX09QQ09ERVMob3Bjb2RlLCBsZW5ndGgpIGNhc2Ugb3Bjb2RlOgogICAgICAg
ICBGT1JfRUFDSF9MTElOVF9PUENPREVfRVhURU5TSU9OKExMSU5UX0hFTFBFUl9PUENPREVTKTsK
ICN1bmRlZiBMTElOVF9IRUxQRVJfT1BDT0RFUwpAQCAtNDgwLDE1ICs0NTgsNiBAQCB2b2lkIGNv
bXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5dGVjb2Rl
QmFzaWNCbG9jayogYmxvYwogICAgICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0
aW9uLCBvcGNvZGVJRCwgdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwoaSkub2Zmc2V0KCkpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQotICAgIGNhc2Ugb3BfcmVzdW1lOiB7Ci0gICAgICAgIFJFTEVB
U0VfQVNTRVJUKGJsb2NrLT5zdWNjZXNzb3JzKCkuc2l6ZSgpID09IDEpOwotICAgICAgICAvLyBG
SVhNRTogVGhpcyBpcyByZWFsbHkgZGlydHkuCi0gICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTkyODEKLSAgICAgICAgYmxvY2stPnN1Y2Nlc3NvcnMo
KVswXS0+aW4oKS5mb3JFYWNoU2V0Qml0KFsmXSh1bnNpZ25lZCBsb2NhbCkgewotICAgICAgICAg
ICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgdmlydHVhbFJlZ2lz
dGVyRm9yTG9jYWwobG9jYWwpLm9mZnNldCgpKTsKLSAgICAgICAgfSk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2suY3BwCmluZGV4IGQ2MWI4ODU4Y2IzMTc4NmE5YzhkNDM5MjUyYTFiOTQ2YTE3YWY0
ZDcuLjVjMDdlZmFmMjk3OWZkYzcwZDg3YzM2NTZhZjA0ODg4NDkyNGY0NWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC0zMyw2ICszMyw3IEBA
CiAjaW5jbHVkZSAiQXJpdGhQcm9maWxlLmgiCiAjaW5jbHVkZSAiQmFzaWNCbG9ja0xvY2F0aW9u
LmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVHZW5lcmF0b3IuaCIKKyNpbmNsdWRlICJCeXRlY29kZUxp
dmVuZXNzQW5hbHlzaXMuaCIKICNpbmNsdWRlICJCeXRlY29kZVVzZURlZi5oIgogI2luY2x1ZGUg
IkNhbGxMaW5rU3RhdHVzLmgiCiAjaW5jbHVkZSAiREZHQ2FwYWJpbGl0aWVzLmgiCkBAIC02OTYs
MTggKzY5Nyw2IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoUHJpbnRTdHJlYW0mIG91
dCkKICAgICAgICAgfSB3aGlsZSAoaSA8IG1fcmFyZURhdGEtPm1fc3RyaW5nU3dpdGNoSnVtcFRh
Ymxlcy5zaXplKCkpOwogICAgIH0KIAotICAgIGlmIChtX3JhcmVEYXRhICYmICFtX3JhcmVEYXRh
LT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkLmlzRW1wdHkoKSkgewotICAgICAgICBvdXQucHJp
bnRmKCJcbkxpdmUgQ2FsbGVlIExvY2FsczpcbiIpOwotICAgICAgICB1bnNpZ25lZCBpID0gMDsK
LSAgICAgICAgZG8gewotICAgICAgICAgICAgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZW5lc3Mg
PSBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkW2ldOwotICAgICAgICAgICAg
b3V0LnByaW50ZigiICBsaXZlJTF1ID0gIiwgaSk7Ci0gICAgICAgICAgICBsaXZlbmVzcy5kdW1w
KG91dCk7Ci0gICAgICAgICAgICBvdXQucHJpbnRmKCJcbiIpOwotICAgICAgICAgICAgKytpOwot
ICAgICAgICB9IHdoaWxlIChpIDwgbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVs
ZC5zaXplKCkpOwotICAgIH0KLQogICAgIG91dC5wcmludGYoIlxuIik7CiB9CiAKQEAgLTE2NzIs
MzEgKzE2NjEsNiBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKAogICAgICAgICAgICAg
b3V0LnByaW50ZigiJXMsICVkIiwgZGVidWdIb29rTmFtZShkZWJ1Z0hvb2tJRCksIGhhc0JyZWFr
cG9pbnRGbGFnKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIGNhc2Ug
b3Bfc2F2ZTogewotICAgICAgICAgICAgaW50IGdlbmVyYXRvciA9ICgrK2l0KS0+dS5vcGVyYW5k
OwotICAgICAgICAgICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0gKCsraXQpLT51
LnVuc2lnbmVkVmFsdWU7Ci0gICAgICAgICAgICBpbnQgb2Zmc2V0ID0gKCsraXQpLT51Lm9wZXJh
bmQ7Ci0gICAgICAgICAgICBGYXN0Qml0VmVjdG9yIGxpdmVuZXNzOwotICAgICAgICAgICAgaWYg
KGxpdmVDYWxsZWVMb2NhbHNJbmRleCA8IG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0
WWllbGQuc2l6ZSgpKQotICAgICAgICAgICAgICAgIGxpdmVuZXNzID0gbV9yYXJlRGF0YS0+bV9s
aXZlQ2FsbGVlTG9jYWxzQXRZaWVsZFtsaXZlQ2FsbGVlTG9jYWxzSW5kZXhdOwotICAgICAgICAg
ICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRpb24sIGl0LCAic2F2ZSIpOwot
ICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICIsIHJlZ2lzdGVyTmFtZShnZW5lcmF0b3IpLmRh
dGEoKSk7Ci0gICAgICAgICAgICBsaXZlbmVzcy5kdW1wKG91dCk7Ci0gICAgICAgICAgICBvdXQu
cHJpbnRmKCIoQGxpdmUlMXUpLCAlZCgtPiVkKSIsIGxpdmVDYWxsZWVMb2NhbHNJbmRleCwgb2Zm
c2V0LCBsb2NhdGlvbiArIG9mZnNldCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQot
ICAgICAgICBjYXNlIG9wX3Jlc3VtZTogewotICAgICAgICAgICAgaW50IGdlbmVyYXRvciA9ICgr
K2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0lu
ZGV4ID0gKCsraXQpLT51LnVuc2lnbmVkVmFsdWU7Ci0gICAgICAgICAgICBGYXN0Qml0VmVjdG9y
IGxpdmVuZXNzOwotICAgICAgICAgICAgaWYgKGxpdmVDYWxsZWVMb2NhbHNJbmRleCA8IG1fcmFy
ZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQuc2l6ZSgpKQotICAgICAgICAgICAgICAg
IGxpdmVuZXNzID0gbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZFtsaXZlQ2Fs
bGVlTG9jYWxzSW5kZXhdOwotICAgICAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhl
YywgbG9jYXRpb24sIGl0LCAicmVzdW1lIik7Ci0gICAgICAgICAgICBvdXQucHJpbnRmKCIlcywg
IiwgcmVnaXN0ZXJOYW1lKGdlbmVyYXRvcikuZGF0YSgpKTsKLSAgICAgICAgICAgIGxpdmVuZXNz
LmR1bXAob3V0KTsKLSAgICAgICAgICAgIG91dC5wcmludGYoIihAbGl2ZSUxdSkiLCBsaXZlQ2Fs
bGVlTG9jYWxzSW5kZXgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KICAgICAgICAg
Y2FzZSBvcF9hc3NlcnQ6IHsKICAgICAgICAgICAgIGludCBjb25kaXRpb24gPSAoKytpdCktPnUu
b3BlcmFuZDsKICAgICAgICAgICAgIGludCBsaW5lID0gKCsraXQpLT51Lm9wZXJhbmQ7CkBAIC0x
OTA4LDcgKzE4NzIsNiBAQCB2b2lkIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBD
b3B5UGFyc2VkQmxvY2tUYWcsIENvZGVCbG9jayYgb3RoZXIpCiAgICAgICAgIG1fcmFyZURhdGEt
Pm1fY29uc3RhbnRCdWZmZXJzID0gb3RoZXIubV9yYXJlRGF0YS0+bV9jb25zdGFudEJ1ZmZlcnM7
CiAgICAgICAgIG1fcmFyZURhdGEtPm1fc3dpdGNoSnVtcFRhYmxlcyA9IG90aGVyLm1fcmFyZURh
dGEtPm1fc3dpdGNoSnVtcFRhYmxlczsKICAgICAgICAgbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0
Y2hKdW1wVGFibGVzID0gb3RoZXIubV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVz
OwotICAgICAgICBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkID0gb3RoZXIu
bV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZDsKICAgICB9CiAgICAgCiAgICAg
aGVhcCgpLT5tX2NvZGVCbG9ja3MuYWRkKHRoaXMpOwpAQCAtMjAzMCw3ICsxOTkzLDcgQEAgdm9p
ZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3du
ZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICAgICAgICAgICAgICBVbmxpbmtlZFN0cmluZ0p1bXBU
YWJsZTo6U3RyaW5nT2Zmc2V0VGFibGU6Oml0ZXJhdG9yIGVuZCA9IHVubGlua2VkQ29kZUJsb2Nr
LT5zdHJpbmdTd2l0Y2hKdW1wVGFibGUoaSkub2Zmc2V0VGFibGUuZW5kKCk7CiAgICAgICAgICAg
ICAgICAgZm9yICg7IHB0ciAhPSBlbmQ7ICsrcHRyKSB7CiAgICAgICAgICAgICAgICAgICAgIE9m
ZnNldExvY2F0aW9uIG9mZnNldDsKLSAgICAgICAgICAgICAgICAgICAgb2Zmc2V0LmJyYW5jaE9m
ZnNldCA9IHB0ci0+dmFsdWU7CisgICAgICAgICAgICAgICAgICAgIG9mZnNldC5icmFuY2hPZmZz
ZXQgPSBwdHItPnZhbHVlLmJyYW5jaE9mZnNldDsKICAgICAgICAgICAgICAgICAgICAgbV9yYXJl
RGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzW2ldLm9mZnNldFRhYmxlLmFkZChwdHItPmtl
eSwgb2Zmc2V0KTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CkBAIC0yMDcwLDEx
ICsyMDMzLDE3IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlw
dEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAgLy8gQm9va2tlZXAgdGhl
IHN0cm9uZ2x5IHJlZmVyZW5jZWQgbW9kdWxlIGVudmlyb25tZW50cy4KICAgICBIYXNoU2V0PEpT
TW9kdWxlRW52aXJvbm1lbnQqPiBzdHJvbmdseVJlZmVyZW5jZWRNb2R1bGVFbnZpcm9ubWVudHM7
CiAKLSAgICAvLyBCb29ra2VlcCB0aGUgbWVyZ2UgcG9pbnQgYnl0ZWNvZGUgb2Zmc2V0cy4KLSAg
ICBWZWN0b3I8c2l6ZV90PiBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXRzOwotCiAgICAgUmVmQ291
bnRlZEFycmF5PEluc3RydWN0aW9uPiBpbnN0cnVjdGlvbnMoaW5zdHJ1Y3Rpb25Db3VudCk7CiAK
KyAgICB1bnNpZ25lZCB2YWx1ZVByb2ZpbGVDb3VudCA9IDA7CisgICAgYXV0byBsaW5rVmFsdWVQ
cm9maWxlID0gWyZdKHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCB1bnNpZ25lZCBvcExlbmd0aCkg
eworICAgICAgICB1bnNpZ25lZCB2YWx1ZVByb2ZpbGVJbmRleCA9IHZhbHVlUHJvZmlsZUNvdW50
Kys7CisgICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9ICZtX3ZhbHVlUHJvZmlsZXNbdmFs
dWVQcm9maWxlSW5kZXhdOworICAgICAgICBBU1NFUlQocHJvZmlsZS0+bV9ieXRlY29kZU9mZnNl
dCA9PSAtMSk7CisgICAgICAgIHByb2ZpbGUtPm1fYnl0ZWNvZGVPZmZzZXQgPSBieXRlY29kZU9m
ZnNldDsKKyAgICAgICAgaW5zdHJ1Y3Rpb25zW2J5dGVjb2RlT2Zmc2V0ICsgb3BMZW5ndGggLSAx
XSA9IHByb2ZpbGU7CisgICAgfTsKKwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7ICFpbnN0cnVj
dGlvblJlYWRlci5hdEVuZCgpOyApIHsKICAgICAgICAgY29uc3QgVW5saW5rZWRJbnN0cnVjdGlv
biogcGMgPSBpbnN0cnVjdGlvblJlYWRlci5uZXh0KCk7CiAKQEAgLTIxMTAsMTAgKzIwNzksNyBA
QCB2b2lkIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxl
KiBvd25lckV4ZWN1dGFibGUsIFVubGluawogICAgICAgICBjYXNlIG9wX3RyeV9nZXRfYnlfaWQ6
CiAgICAgICAgIGNhc2Ugb3BfZ2V0X2Zyb21fYXJndW1lbnRzOgogICAgICAgICBjYXNlIG9wX3Rv
X251bWJlcjogewotICAgICAgICAgICAgVmFsdWVQcm9maWxlKiBwcm9maWxlID0gJm1fdmFsdWVQ
cm9maWxlc1twY1tvcExlbmd0aCAtIDFdLnUub3BlcmFuZF07Ci0gICAgICAgICAgICBBU1NFUlQo
cHJvZmlsZS0+bV9ieXRlY29kZU9mZnNldCA9PSAtMSk7Ci0gICAgICAgICAgICBwcm9maWxlLT5t
X2J5dGVjb2RlT2Zmc2V0ID0gaTsKLSAgICAgICAgICAgIGluc3RydWN0aW9uc1tpICsgb3BMZW5n
dGggLSAxXSA9IHByb2ZpbGU7CisgICAgICAgICAgICBsaW5rVmFsdWVQcm9maWxlKGksIG9wTGVu
Z3RoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfcHV0
X2J5X3ZhbDogewpAQCAtMjE1MCwxMCArMjExNiw3IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5pc2hD
cmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5r
CiAgICAgICAgIGNhc2Ugb3BfY2FsbDoKICAgICAgICAgY2FzZSBvcF90YWlsX2NhbGw6CiAgICAg
ICAgIGNhc2Ugb3BfY2FsbF9ldmFsOiB7Ci0gICAgICAgICAgICBWYWx1ZVByb2ZpbGUqIHByb2Zp
bGUgPSAmbV92YWx1ZVByb2ZpbGVzW3BjW29wTGVuZ3RoIC0gMV0udS5vcGVyYW5kXTsKLSAgICAg
ICAgICAgIEFTU0VSVChwcm9maWxlLT5tX2J5dGVjb2RlT2Zmc2V0ID09IC0xKTsKLSAgICAgICAg
ICAgIHByb2ZpbGUtPm1fYnl0ZWNvZGVPZmZzZXQgPSBpOwotICAgICAgICAgICAgaW5zdHJ1Y3Rp
b25zW2kgKyBvcExlbmd0aCAtIDFdID0gcHJvZmlsZTsKKyAgICAgICAgICAgIGxpbmtWYWx1ZVBy
b2ZpbGUoaSwgb3BMZW5ndGgpOwogICAgICAgICAgICAgaW50IGFycmF5UHJvZmlsZUluZGV4ID0g
cGNbb3BMZW5ndGggLSAyXS51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBtX2FycmF5UHJvZmlsZXNb
YXJyYXlQcm9maWxlSW5kZXhdID0gQXJyYXlQcm9maWxlKGkpOwogICAgICAgICAgICAgaW5zdHJ1
Y3Rpb25zW2kgKyBvcExlbmd0aCAtIDJdID0gJm1fYXJyYXlQcm9maWxlc1thcnJheVByb2ZpbGVJ
bmRleF07CkBAIC0yMTYyLDEwICsyMTI1LDcgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0
aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAg
ICAgICAgfQogICAgICAgICBjYXNlIG9wX2NvbnN0cnVjdDogewogICAgICAgICAgICAgaW5zdHJ1
Y3Rpb25zW2kgKyA1XSA9ICZtX2xsaW50Q2FsbExpbmtJbmZvc1twY1s1XS51Lm9wZXJhbmRdOwot
ICAgICAgICAgICAgVmFsdWVQcm9maWxlKiBwcm9maWxlID0gJm1fdmFsdWVQcm9maWxlc1twY1tv
cExlbmd0aCAtIDFdLnUub3BlcmFuZF07Ci0gICAgICAgICAgICBBU1NFUlQocHJvZmlsZS0+bV9i
eXRlY29kZU9mZnNldCA9PSAtMSk7Ci0gICAgICAgICAgICBwcm9maWxlLT5tX2J5dGVjb2RlT2Zm
c2V0ID0gaTsKLSAgICAgICAgICAgIGluc3RydWN0aW9uc1tpICsgb3BMZW5ndGggLSAxXSA9IHBy
b2ZpbGU7CisgICAgICAgICAgICBsaW5rVmFsdWVQcm9maWxlKGksIG9wTGVuZ3RoKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfZ2V0X2FycmF5X2xlbmd0
aDoKQEAgLTIxOTYsMTAgKzIxNTYsNyBAQCB2b2lkIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24o
Vk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGluawogICAgICAg
ICB9CiAKICAgICAgICAgY2FzZSBvcF9nZXRfZnJvbV9zY29wZTogewotICAgICAgICAgICAgVmFs
dWVQcm9maWxlKiBwcm9maWxlID0gJm1fdmFsdWVQcm9maWxlc1twY1tvcExlbmd0aCAtIDFdLnUu
b3BlcmFuZF07Ci0gICAgICAgICAgICBBU1NFUlQocHJvZmlsZS0+bV9ieXRlY29kZU9mZnNldCA9
PSAtMSk7Ci0gICAgICAgICAgICBwcm9maWxlLT5tX2J5dGVjb2RlT2Zmc2V0ID0gaTsKLSAgICAg
ICAgICAgIGluc3RydWN0aW9uc1tpICsgb3BMZW5ndGggLSAxXSA9IHByb2ZpbGU7CisgICAgICAg
ICAgICBsaW5rVmFsdWVQcm9maWxlKGksIG9wTGVuZ3RoKTsKIAogICAgICAgICAgICAgLy8gZ2V0
X2Zyb21fc2NvcGUgZHN0LCBzY29wZSwgaWQsIEdldFB1dEluZm8sIFN0cnVjdHVyZSwgT3BlcmFu
ZAogCkBAIC0yMzU2LDE1ICsyMzEzLDYgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9u
KFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKLSAgICAgICAgY2FzZSBvcF9zYXZlOiB7Ci0gICAg
ICAgICAgICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSBwY1syXS51LmluZGV4Owot
ICAgICAgICAgICAgaW50IG9mZnNldCA9IHBjWzNdLnUub3BlcmFuZDsKLSAgICAgICAgICAgIGlm
IChsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPj0gbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0cy5zaXpl
KCkpCi0gICAgICAgICAgICAgICAgbWVyZ2VQb2ludEJ5dGVjb2RlT2Zmc2V0cy5yZXNpemUobGl2
ZUNhbGxlZUxvY2Fsc0luZGV4ICsgMSk7Ci0gICAgICAgICAgICBtZXJnZVBvaW50Qnl0ZWNvZGVP
ZmZzZXRzW2xpdmVDYWxsZWVMb2NhbHNJbmRleF0gPSBpICsgb2Zmc2V0OwotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIH0KLQogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KQEAgLTIzNzYsMjAgKzIzMjQsNiBAQCB2b2lkIENvZGVCbG9jazo6ZmluaXNo
Q3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGlu
awogCiAgICAgbV9pbnN0cnVjdGlvbnMgPSBXVEZNb3ZlKGluc3RydWN0aW9ucyk7CiAKLSAgICAv
LyBQZXJmb3JtIGJ5dGVjb2RlIGxpdmVuZXNzIGFuYWx5c2lzIHRvIGRldGVybWluZSB3aGljaCBs
b2NhbHMgYXJlIGxpdmUgYW5kIHNob3VsZCBiZSByZXN1bWVkIHdoZW4gZXhlY3V0aW5nIG9wX3Jl
c3VtZS4KLSAgICBpZiAodW5saW5rZWRDb2RlQmxvY2stPnBhcnNlTW9kZSgpID09IFNvdXJjZVBh
cnNlTW9kZTo6R2VuZXJhdG9yQm9keU1vZGUpIHsKLSAgICAgICAgaWYgKHNpemVfdCBjb3VudCA9
IG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldHMuc2l6ZSgpKSB7Ci0gICAgICAgICAgICBjcmVhdGVS
YXJlRGF0YUlmTmVjZXNzYXJ5KCk7Ci0gICAgICAgICAgICBCeXRlY29kZUxpdmVuZXNzQW5hbHlz
aXMgbGl2ZW5lc3ModGhpcyk7Ci0gICAgICAgICAgICBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVM
b2NhbHNBdFlpZWxkLmdyb3coY291bnQpOwotICAgICAgICAgICAgc2l6ZV90IGxpdmVDYWxsZWVM
b2NhbHNJbmRleCA9IDA7Ci0gICAgICAgICAgICBmb3IgKHNpemVfdCBieXRlY29kZU9mZnNldCA6
IG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldHMpIHsKLSAgICAgICAgICAgICAgICBtX3JhcmVEYXRh
LT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkW2xpdmVDYWxsZWVMb2NhbHNJbmRleF0gPSBsaXZl
bmVzcy5nZXRMaXZlbmVzc0luZm9BdEJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KTsKLSAg
ICAgICAgICAgICAgICArK2xpdmVDYWxsZWVMb2NhbHNJbmRleDsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgfQotICAgIH0KLQogICAgIC8vIFNldCBvcHRpbWl6YXRpb24gdGhyZXNob2xkcyBvbmx5
IGFmdGVyIG1faW5zdHJ1Y3Rpb25zIGlzIGluaXRpYWxpemVkLCBzaW5jZSB0aGVzZQogICAgIC8v
IHJlbHkgb24gdGhlIGluc3RydWN0aW9uIGNvdW50IChhbmQgYXJlIGluIHRoZW9yeSBwZXJtaXR0
ZWQgdG8gYWxzbyBpbnNwZWN0IHRoZQogICAgIC8vIGluc3RydWN0aW9uIHN0cmVhbSB0byBtb3Jl
IGFjY3VyYXRlIGFzc2VzcyB0aGUgY29zdCBvZiB0aWVyLXVwKS4KQEAgLTMyNDYsMjEgKzMxODAs
NyBAQCBIYW5kbGVySW5mbyogQ29kZUJsb2NrOjpoYW5kbGVyRm9ySW5kZXgodW5zaWduZWQgaW5k
ZXgsIFJlcXVpcmVkSGFuZGxlciByZXF1aXJlZAogewogICAgIGlmICghbV9yYXJlRGF0YSkKICAg
ICAgICAgcmV0dXJuIDA7Ci0gICAgCi0gICAgVmVjdG9yPEhhbmRsZXJJbmZvPiYgZXhjZXB0aW9u
SGFuZGxlcnMgPSBtX3JhcmVEYXRhLT5tX2V4Y2VwdGlvbkhhbmRsZXJzOwotICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgZXhjZXB0aW9uSGFuZGxlcnMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAg
SGFuZGxlckluZm8mIGhhbmRsZXIgPSBleGNlcHRpb25IYW5kbGVyc1tpXTsKLSAgICAgICAgaWYg
KChyZXF1aXJlZEhhbmRsZXIgPT0gUmVxdWlyZWRIYW5kbGVyOjpDYXRjaEhhbmRsZXIpICYmICFo
YW5kbGVyLmlzQ2F0Y2hIYW5kbGVyKCkpCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAg
ICAvLyBIYW5kbGVycyBhcmUgb3JkZXJlZCBpbm5lcm1vc3QgZmlyc3QsIHNvIHRoZSBmaXJzdCBo
YW5kbGVyIHdlIGVuY291bnRlcgotICAgICAgICAvLyB0aGF0IGNvbnRhaW5zIHRoZSBzb3VyY2Ug
YWRkcmVzcyBpcyB0aGUgY29ycmVjdCBoYW5kbGVyIHRvIHVzZS4KLSAgICAgICAgLy8gVGhpcyBp
bmRleCB1c2VkIGlzIGVpdGhlciB0aGUgQnl0ZWNvZGVPZmZzZXQgb3IgYSBDYWxsU2l0ZUluZGV4
LgotICAgICAgICBpZiAoaGFuZGxlci5zdGFydCA8PSBpbmRleCAmJiBoYW5kbGVyLmVuZCA+IGlu
ZGV4KQotICAgICAgICAgICAgcmV0dXJuICZoYW5kbGVyOwotICAgIH0KLQotICAgIHJldHVybiAw
OworICAgIHJldHVybiBIYW5kbGVySW5mbzo6aGFuZGxlckZvckluZGV4KG1fcmFyZURhdGEtPm1f
ZXhjZXB0aW9uSGFuZGxlcnMsIGluZGV4LCByZXF1aXJlZEhhbmRsZXIpOwogfQogCiBDYWxsU2l0
ZUluZGV4IENvZGVCbG9jazo6bmV3RXhjZXB0aW9uSGFuZGxpbmdDYWxsU2l0ZUluZGV4KENhbGxT
aXRlSW5kZXggb3JpZ2luYWxDYWxsU2l0ZSkKQEAgLTMzNTUsNyArMzI3NSw2IEBAIHZvaWQgQ29k
ZUJsb2NrOjpzaHJpbmtUb0ZpdChTaHJpbmtNb2RlIHNocmlua01vZGUpCiAgICAgICAgIGlmICht
X3JhcmVEYXRhKSB7CiAgICAgICAgICAgICBtX3JhcmVEYXRhLT5tX3N3aXRjaEp1bXBUYWJsZXMu
c2hyaW5rVG9GaXQoKTsKICAgICAgICAgICAgIG1fcmFyZURhdGEtPm1fc3RyaW5nU3dpdGNoSnVt
cFRhYmxlcy5zaHJpbmtUb0ZpdCgpOwotICAgICAgICAgICAgbV9yYXJlRGF0YS0+bV9saXZlQ2Fs
bGVlTG9jYWxzQXRZaWVsZC5zaHJpbmtUb0ZpdCgpOwogICAgICAgICB9CiAgICAgfSAvLyBlbHNl
IGRvbid0IHNocmluayB0aGVzZSwgYmVjYXVzZSB3ZSB3b3VsZCBoYXZlIGFscmVhZHkgcG9pbnRl
ZCBwb2ludGVycyBpbnRvIHRoZXNlIHRhYmxlcy4KIH0KQEAgLTQzMzcsMTQgKzQyNTYsOSBAQCBT
dHJpbmcgQ29kZUJsb2NrOjpuYW1lRm9yUmVnaXN0ZXIoVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxS
ZWdpc3RlcikKIAogVmFsdWVQcm9maWxlKiBDb2RlQmxvY2s6OnZhbHVlUHJvZmlsZUZvckJ5dGVj
b2RlT2Zmc2V0KGludCBieXRlY29kZU9mZnNldCkKIHsKLSAgICBWYWx1ZVByb2ZpbGUqIHJlc3Vs
dCA9IGJpbmFyeVNlYXJjaDxWYWx1ZVByb2ZpbGUsIGludD4oCi0gICAgICAgIG1fdmFsdWVQcm9m
aWxlcywgbV92YWx1ZVByb2ZpbGVzLnNpemUoKSwgYnl0ZWNvZGVPZmZzZXQsCi0gICAgICAgIGdl
dFZhbHVlUHJvZmlsZUJ5dGVjb2RlT2Zmc2V0PFZhbHVlUHJvZmlsZT4pOwotICAgIEFTU0VSVChy
ZXN1bHQtPm1fYnl0ZWNvZGVPZmZzZXQgIT0gLTEpOwotICAgIEFTU0VSVChpbnN0cnVjdGlvbnMo
KVtieXRlY29kZU9mZnNldCArIG9wY29kZUxlbmd0aCgKLSAgICAgICAgbV92bS0+aW50ZXJwcmV0
ZXItPmdldE9wY29kZUlEKAotICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zKClbYnl0ZWNvZGVPZmZz
ZXRdLnUub3Bjb2RlKSkgLSAxXS51LnByb2ZpbGUgPT0gcmVzdWx0KTsKLSAgICByZXR1cm4gcmVz
dWx0OworICAgIE9wY29kZUlEIG9wY29kZUlEID0gbV92bS0+aW50ZXJwcmV0ZXItPmdldE9wY29k
ZUlEKGluc3RydWN0aW9ucygpW2J5dGVjb2RlT2Zmc2V0XS51Lm9wY29kZSk7CisgICAgdW5zaWdu
ZWQgbGVuZ3RoID0gb3Bjb2RlTGVuZ3RoKG9wY29kZUlEKTsKKyAgICByZXR1cm4gaW5zdHJ1Y3Rp
b25zKClbYnl0ZWNvZGVPZmZzZXQgKyBsZW5ndGggLSAxXS51LnByb2ZpbGU7CiB9CiAKIHZvaWQg
Q29kZUJsb2NrOjp2YWxpZGF0ZSgpCkBAIC00NjczLDQgKzQ1ODcsMTYgQEAgdm9pZCBDb2RlQmxv
Y2s6OmR1bXBNYXRoSUNTdGF0cygpCiAjZW5kaWYKIH0KIAorQnl0ZWNvZGVMaXZlbmVzc0FuYWx5
c2lzJiBDb2RlQmxvY2s6OmxpdmVuZXNzQW5hbHlzaXNTbG93KCkKK3sKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzPiBhbmFseXNpcyA9IHN0ZDo6bWFrZV91bmlx
dWU8Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzPih0aGlzKTsKKyAgICB7CisgICAgICAgIENvbmN1
cnJlbnRKSVRMb2NrZXIgbG9ja2VyKG1fbG9jayk7CisgICAgICAgIGlmICghbV9saXZlbmVzc0Fu
YWx5c2lzKQorICAgICAgICAgICAgbV9saXZlbmVzc0FuYWx5c2lzID0gV1RGTW92ZShhbmFseXNp
cyk7CisgICAgICAgIHJldHVybiAqbV9saXZlbmVzc0FuYWx5c2lzOworICAgIH0KK30KKworCiB9
IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2suaAppbmRleCBhYjkyODA0ZjZiYTM5YjNiNjdiYTZkNzc1ZTQ0OWUyZjNkYmY3YzA1Li45ZTVk
NjA3ODc3M2YzOGNiYjIyZGM2YTUwZmFmYTdjZWIwZTFmZmEyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCkBAIC0zMyw3ICszMyw2IEBACiAjaW5jbHVkZSAi
QXJyYXlQcm9maWxlLmgiCiAjaW5jbHVkZSAiQnlWYWxJbmZvLmgiCiAjaW5jbHVkZSAiQnl0ZWNv
ZGVDb252ZW50aW9ucy5oIgotI2luY2x1ZGUgIkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5oIgog
I2luY2x1ZGUgIkNhbGxMaW5rSW5mby5oIgogI2luY2x1ZGUgIkNhbGxSZXR1cm5PZmZzZXRUb0J5
dGVjb2RlT2Zmc2V0LmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrSGFzaC5oIgpAQCAtNzksNiArNzgs
NyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorY2xhc3MgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lz
OwogY2xhc3MgRXhlY1N0YXRlOwogY2xhc3MgSklUQWRkR2VuZXJhdG9yOwogY2xhc3MgSlNNb2R1
bGVFbnZpcm9ubWVudDsKQEAgLTIyNiwxMCArMjI2LDYgQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVi
bGljIEpTQ2VsbCB7CiAgICAgICAgIHJldHVybiBpbmRleCA+PSBtX251bVZhcnM7CiAgICAgfQog
Ci0gICAgZW51bSBjbGFzcyBSZXF1aXJlZEhhbmRsZXIgewotICAgICAgICBDYXRjaEhhbmRsZXIs
Ci0gICAgICAgIEFueUhhbmRsZXIKLSAgICB9OwogICAgIEhhbmRsZXJJbmZvKiBoYW5kbGVyRm9y
Qnl0ZWNvZGVPZmZzZXQodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIFJlcXVpcmVkSGFuZGxlciA9
IFJlcXVpcmVkSGFuZGxlcjo6QW55SGFuZGxlcik7CiAgICAgSGFuZGxlckluZm8qIGhhbmRsZXJG
b3JJbmRleCh1bnNpZ25lZCwgUmVxdWlyZWRIYW5kbGVyID0gUmVxdWlyZWRIYW5kbGVyOjpBbnlI
YW5kbGVyKTsKICAgICB2b2lkIHJlbW92ZUV4Y2VwdGlvbkhhbmRsZXJGb3JDYWxsU2l0ZShDYWxs
U2l0ZUluZGV4KTsKQEAgLTMwNCw2ICszMDAsOSBAQCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMg
SlNDZWxsIHsKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEluc3RydWN0aW9uKj4ocmV0dXJu
QWRkcmVzcykgLSBpbnN0cnVjdGlvbnMoKS5iZWdpbigpOwogICAgIH0KIAorICAgIHR5cGVkZWYg
SlNDOjpJbnN0cnVjdGlvbiBJbnN0cnVjdGlvbjsKKyAgICB0eXBlZGVmIFJlZkNvdW50ZWRBcnJh
eTxJbnN0cnVjdGlvbj4mIFVucGFja2VkSW5zdHJ1Y3Rpb25zOworCiAgICAgdW5zaWduZWQgbnVt
YmVyT2ZJbnN0cnVjdGlvbnMoKSBjb25zdCB7IHJldHVybiBtX2luc3RydWN0aW9ucy5zaXplKCk7
IH0KICAgICBSZWZDb3VudGVkQXJyYXk8SW5zdHJ1Y3Rpb24+JiBpbnN0cnVjdGlvbnMoKSB7IHJl
dHVybiBtX2luc3RydWN0aW9uczsgfQogICAgIGNvbnN0IFJlZkNvdW50ZWRBcnJheTxJbnN0cnVj
dGlvbj4mIGluc3RydWN0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1faW5zdHJ1Y3Rpb25zOyB9CkBA
IC01NDYsNyArNTQ1LDcgQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAg
fQogCiAgICAgV3JpdGVCYXJyaWVyPFVua25vd24+JiBjb25zdGFudFJlZ2lzdGVyKGludCBpbmRl
eCkgeyByZXR1cm4gbV9jb25zdGFudFJlZ2lzdGVyc1tpbmRleCAtIEZpcnN0Q29uc3RhbnRSZWdp
c3RlckluZGV4XTsgfQotICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc0NvbnN0YW50UmVnaXN0ZXJJ
bmRleChpbnQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIGluZGV4ID49IEZpcnN0Q29uc3RhbnRSZWdp
c3RlckluZGV4OyB9CisgICAgc3RhdGljIEFMV0FZU19JTkxJTkUgYm9vbCBpc0NvbnN0YW50UmVn
aXN0ZXJJbmRleChpbnQgaW5kZXgpIHsgcmV0dXJuIGluZGV4ID49IEZpcnN0Q29uc3RhbnRSZWdp
c3RlckluZGV4OyB9CiAgICAgQUxXQVlTX0lOTElORSBKU1ZhbHVlIGdldENvbnN0YW50KGludCBp
bmRleCkgY29uc3QgeyByZXR1cm4gbV9jb25zdGFudFJlZ2lzdGVyc1tpbmRleCAtIEZpcnN0Q29u
c3RhbnRSZWdpc3RlckluZGV4XS5nZXQoKTsgfQogICAgIEFMV0FZU19JTkxJTkUgU291cmNlQ29k
ZVJlcHJlc2VudGF0aW9uIGNvbnN0YW50U291cmNlQ29kZVJlcHJlc2VudGF0aW9uKGludCBpbmRl
eCkgY29uc3QgeyByZXR1cm4gbV9jb25zdGFudHNTb3VyY2VDb2RlUmVwcmVzZW50YXRpb25baW5k
ZXggLSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleF07IH0KIApAQCAtNTkyLDE0ICs1OTEsNyBA
QCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAgICAgICAgIGlmICghIW1f
bGl2ZW5lc3NBbmFseXNpcykKICAgICAgICAgICAgICAgICByZXR1cm4gKm1fbGl2ZW5lc3NBbmFs
eXNpczsKICAgICAgICAgfQotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVMaXZlbmVz
c0FuYWx5c2lzPiBhbmFseXNpcyA9Ci0gICAgICAgICAgICBzdGQ6Om1ha2VfdW5pcXVlPEJ5dGVj
b2RlTGl2ZW5lc3NBbmFseXNpcz4odGhpcyk7Ci0gICAgICAgIHsKLSAgICAgICAgICAgIENvbmN1
cnJlbnRKSVRMb2NrZXIgbG9ja2VyKG1fbG9jayk7Ci0gICAgICAgICAgICBpZiAoIW1fbGl2ZW5l
c3NBbmFseXNpcykKLSAgICAgICAgICAgICAgICBtX2xpdmVuZXNzQW5hbHlzaXMgPSBXVEZNb3Zl
KGFuYWx5c2lzKTsKLSAgICAgICAgICAgIHJldHVybiAqbV9saXZlbmVzc0FuYWx5c2lzOwotICAg
ICAgICB9CisgICAgICAgIHJldHVybiBsaXZlbmVzc0FuYWx5c2lzU2xvdygpOwogICAgIH0KICAg
ICAKICAgICB2b2lkIHZhbGlkYXRlKCk7CkBAIC02MjAsMTggKzYxMiw2IEBAIGNsYXNzIENvZGVC
bG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgIFN0cmluZ0p1bXBUYWJsZSYgYWRkU3RyaW5nU3dp
dGNoSnVtcFRhYmxlKCkgeyBjcmVhdGVSYXJlRGF0YUlmTmVjZXNzYXJ5KCk7IG1fcmFyZURhdGEt
Pm1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlcy5hcHBlbmQoU3RyaW5nSnVtcFRhYmxlKCkpOyByZXR1
cm4gbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzLmxhc3QoKTsgfQogICAgIFN0
cmluZ0p1bXBUYWJsZSYgc3RyaW5nU3dpdGNoSnVtcFRhYmxlKGludCB0YWJsZUluZGV4KSB7IFJF
TEVBU0VfQVNTRVJUKG1fcmFyZURhdGEpOyByZXR1cm4gbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0
Y2hKdW1wVGFibGVzW3RhYmxlSW5kZXhdOyB9CiAKLSAgICAvLyBMaXZlIGNhbGxlZSByZWdpc3Rl
cnMgYXQgeWllbGQgcG9pbnRzLgotICAgIGNvbnN0IEZhc3RCaXRWZWN0b3ImIGxpdmVDYWxsZWVM
b2NhbHNBdFlpZWxkKHVuc2lnbmVkIGluZGV4KSBjb25zdAotICAgIHsKLSAgICAgICAgUkVMRUFT
RV9BU1NFUlQobV9yYXJlRGF0YSk7Ci0gICAgICAgIHJldHVybiBtX3JhcmVEYXRhLT5tX2xpdmVD
YWxsZWVMb2NhbHNBdFlpZWxkW2luZGV4XTsKLSAgICB9Ci0gICAgRmFzdEJpdFZlY3RvciYgbGl2
ZUNhbGxlZUxvY2Fsc0F0WWllbGQodW5zaWduZWQgaW5kZXgpCi0gICAgewotICAgICAgICBSRUxF
QVNFX0FTU0VSVChtX3JhcmVEYXRhKTsKLSAgICAgICAgcmV0dXJuIG1fcmFyZURhdGEtPm1fbGl2
ZUNhbGxlZUxvY2Fsc0F0WWllbGRbaW5kZXhdOwotICAgIH0KLQogICAgIEV2YWxDb2RlQ2FjaGUm
IGV2YWxDb2RlQ2FjaGUoKSB7IGNyZWF0ZVJhcmVEYXRhSWZOZWNlc3NhcnkoKTsgcmV0dXJuIG1f
cmFyZURhdGEtPm1fZXZhbENvZGVDYWNoZTsgfQogCiAgICAgZW51bSBTaHJpbmtNb2RlIHsKQEAg
LTg4Niw4ICs4NjYsNiBAQCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAg
ICAgVmVjdG9yPFNpbXBsZUp1bXBUYWJsZT4gbV9zd2l0Y2hKdW1wVGFibGVzOwogICAgICAgICBW
ZWN0b3I8U3RyaW5nSnVtcFRhYmxlPiBtX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXM7CiAKLSAgICAg
ICAgVmVjdG9yPEZhc3RCaXRWZWN0b3I+IG1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQ7Ci0KICAg
ICAgICAgRXZhbENvZGVDYWNoZSBtX2V2YWxDb2RlQ2FjaGU7CiAgICAgfTsKIApAQCAtOTIyLDYg
KzkwMCw4IEBAIGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogCiBwcml2YXRlOgog
ICAgIGZyaWVuZCBjbGFzcyBDb2RlQmxvY2tTZXQ7CisKKyAgICBCeXRlY29kZUxpdmVuZXNzQW5h
bHlzaXMmIGxpdmVuZXNzQW5hbHlzaXNTbG93KCk7CiAgICAgCiAgICAgQ29kZUJsb2NrKiBzcGVj
aWFsT1NSRW50cnlCbG9ja09yTnVsbCgpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0hhbmRsZXJJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvSGFuZGxlckluZm8uaAppbmRleCBhY2RkYTA4ZWQxNGNiZjlmMDk3MTI3NTA0MDVh
NDE3NDFmNzZhMjEzLi43YjEwOGFjZTkzNzI4YThkNWRmOGViMTczZmMwYjBhNjFiYWVkNjNlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSGFuZGxlckluZm8uaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSGFuZGxlckluZm8uaApAQCAtMjcs
NiArMjcsNyBAQAogI2RlZmluZSBIYW5kbGVySW5mb19oCiAKICNpbmNsdWRlICJDb2RlTG9jYXRp
b24uaCIKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC0z
Nyw2ICszOCwxMSBAQCBlbnVtIGNsYXNzIEhhbmRsZXJUeXBlIHsKICAgICBTeW50aGVzaXplZEZp
bmFsbHkgPSAzCiB9OwogCitlbnVtIGNsYXNzIFJlcXVpcmVkSGFuZGxlciB7CisgICAgQ2F0Y2hI
YW5kbGVyLAorICAgIEFueUhhbmRsZXIKK307CisKIHN0cnVjdCBIYW5kbGVySW5mb0Jhc2Ugewog
ICAgIEhhbmRsZXJUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxIYW5kbGVy
VHlwZT4odHlwZUJpdHMpOyB9CiAgICAgdm9pZCBzZXRUeXBlKEhhbmRsZXJUeXBlIHR5cGUpIHsg
dHlwZUJpdHMgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4odHlwZSk7IH0KQEAgLTU4LDYgKzY0LDIz
IEBAIHN0cnVjdCBIYW5kbGVySW5mb0Jhc2UgewogCiAgICAgYm9vbCBpc0NhdGNoSGFuZGxlcigp
IGNvbnN0IHsgcmV0dXJuIHR5cGUoKSA9PSBIYW5kbGVyVHlwZTo6Q2F0Y2g7IH0KIAorICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEhhbmRsZXI+CisgICAgc3RhdGljIEhhbmRsZXIqIGhhbmRsZXJGb3JJ
bmRleChWZWN0b3I8SGFuZGxlcj4mIGV4ZXB0aW9uSGFuZGxlcnMsIHVuc2lnbmVkIGluZGV4LCBS
ZXF1aXJlZEhhbmRsZXIgcmVxdWlyZWRIYW5kbGVyKQorICAgIHsKKyAgICAgICAgZm9yIChIYW5k
bGVyJiBoYW5kbGVyIDogZXhlcHRpb25IYW5kbGVycykgeworICAgICAgICAgICAgaWYgKChyZXF1
aXJlZEhhbmRsZXIgPT0gUmVxdWlyZWRIYW5kbGVyOjpDYXRjaEhhbmRsZXIpICYmICFoYW5kbGVy
LmlzQ2F0Y2hIYW5kbGVyKCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAg
ICAgIC8vIEhhbmRsZXJzIGFyZSBvcmRlcmVkIGlubmVybW9zdCBmaXJzdCwgc28gdGhlIGZpcnN0
IGhhbmRsZXIgd2UgZW5jb3VudGVyCisgICAgICAgICAgICAvLyB0aGF0IGNvbnRhaW5zIHRoZSBz
b3VyY2UgYWRkcmVzcyBpcyB0aGUgY29ycmVjdCBoYW5kbGVyIHRvIHVzZS4KKyAgICAgICAgICAg
IC8vIFRoaXMgaW5kZXggdXNlZCBpcyBlaXRoZXIgdGhlIEJ5dGVjb2RlT2Zmc2V0IG9yIGEgQ2Fs
bFNpdGVJbmRleC4KKyAgICAgICAgICAgIGlmIChoYW5kbGVyLnN0YXJ0IDw9IGluZGV4ICYmIGhh
bmRsZXIuZW5kID4gaW5kZXgpCisgICAgICAgICAgICAgICAgcmV0dXJuICZoYW5kbGVyOworICAg
ICAgICB9CisKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCiAgICAgdWludDMyX3Qg
c3RhcnQ7CiAgICAgdWludDMyX3QgZW5kOwogICAgIHVpbnQzMl90IHRhcmdldDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaAppbmRleCBlZTY2N2M4NGZiMjY1MmYyNTllMzIx
MjRkMWU5YTdhNzFkZGUwMWUwLi40ZGI2MTBlNGU4ZTRkZjU2Y2I4NGUyZTcyOGFlYTQ4Yjg3YTE1
YTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCkBAIC0xMjYsNiAr
MTI2LDY0IEBAIGlubGluZSBzaXplX3Qgb3Bjb2RlTGVuZ3RoKE9wY29kZUlEIG9wY29kZSkKICAg
ICByZXR1cm4gMDsKIH0KIAoraW5saW5lIGJvb2wgaXNCcmFuY2goT3Bjb2RlSUQgb3Bjb2RlSUQp
Cit7CisgICAgc3dpdGNoIChvcGNvZGVJRCkgeworICAgIGNhc2Ugb3Bfam1wOgorICAgIGNhc2Ug
b3BfanRydWU6CisgICAgY2FzZSBvcF9qZmFsc2U6CisgICAgY2FzZSBvcF9qZXFfbnVsbDoKKyAg
ICBjYXNlIG9wX2puZXFfbnVsbDoKKyAgICBjYXNlIG9wX2puZXFfcHRyOgorICAgIGNhc2Ugb3Bf
amxlc3M6CisgICAgY2FzZSBvcF9qbGVzc2VxOgorICAgIGNhc2Ugb3BfamdyZWF0ZXI6CisgICAg
Y2FzZSBvcF9qZ3JlYXRlcmVxOgorICAgIGNhc2Ugb3Bfam5sZXNzOgorICAgIGNhc2Ugb3Bfam5s
ZXNzZXE6CisgICAgY2FzZSBvcF9qbmdyZWF0ZXI6CisgICAgY2FzZSBvcF9qbmdyZWF0ZXJlcToK
KyAgICBjYXNlIG9wX3N3aXRjaF9pbW06CisgICAgY2FzZSBvcF9zd2l0Y2hfY2hhcjoKKyAgICBj
YXNlIG9wX3N3aXRjaF9zdHJpbmc6CisgICAgICAgIHJldHVybiB0cnVlOworICAgIGRlZmF1bHQ6
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKK2lubGluZSBib29sIGlzVW5jb25k
aXRpb25hbEJyYW5jaChPcGNvZGVJRCBvcGNvZGVJRCkKK3sKKyAgICBzd2l0Y2ggKG9wY29kZUlE
KSB7CisgICAgY2FzZSBvcF9qbXA6CisgICAgICAgIHJldHVybiB0cnVlOworICAgIGRlZmF1bHQ6
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKK2lubGluZSBib29sIGlzVGVybWlu
YWwoT3Bjb2RlSUQgb3Bjb2RlSUQpCit7CisgICAgc3dpdGNoIChvcGNvZGVJRCkgeworICAgIGNh
c2Ugb3BfcmV0OgorICAgIGNhc2Ugb3BfZW5kOgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBk
ZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQorCitpbmxpbmUgYm9vbCBp
c1Rocm93KE9wY29kZUlEIG9wY29kZUlEKQoreworICAgIHN3aXRjaCAob3Bjb2RlSUQpIHsKKyAg
ICBjYXNlIG9wX3Rocm93OgorICAgIGNhc2Ugb3BfdGhyb3dfc3RhdGljX2Vycm9yOgorICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQorfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogbmFtZXNwYWNlIFdURiB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHMuY3BwCmlu
ZGV4IGUyY2IwMDA0ODM3OTRiYTkyZDUxMGRjZjVmYTk5NDg4NWEyM2RjM2QuLjljMDZlN2VjMjdk
NWIyMGIwMmI4Nzc1NDJmZTQxNWRjOTJjOWIxNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHMuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHMuY3BwCkBAIC0yNiw2OSArMjYs
MzcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJQcmVjaXNlSnVtcFRhcmdldHMu
aCIKIAorI2luY2x1ZGUgIkludGVycHJldGVySW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQ0lubGlu
ZXMuaCIKKyNpbmNsdWRlICJQcmVjaXNlSnVtcFRhcmdldHNJbmxpbmVzLmgiCiAKIG5hbWVzcGFj
ZSBKU0MgewogCi10ZW1wbGF0ZSA8c2l6ZV90IHZlY3RvclNpemU+Ci1zdGF0aWMgdm9pZCBnZXRK
dW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBJbnRlcnBy
ZXRlciogaW50ZXJwcmV0ZXIsIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWdu
ZWQgYnl0ZWNvZGVPZmZzZXQsIFZlY3Rvcjx1bnNpZ25lZCwgdmVjdG9yU2l6ZT4mIG91dCkKK3Rl
bXBsYXRlIDxzaXplX3QgdmVjdG9yU2l6ZSwgdHlwZW5hbWUgQmxvY2ssIHR5cGVuYW1lIEluc3Ry
dWN0aW9uPgorc3RhdGljIHZvaWQgZ2V0SnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChCbG9j
ayogY29kZUJsb2NrLCBJbnRlcnByZXRlciogaW50ZXJwcmV0ZXIsIEluc3RydWN0aW9uKiBpbnN0
cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIFZlY3Rvcjx1bnNpZ25lZCwg
dmVjdG9yU2l6ZT4mIG91dCkKIHsKLSAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGludGVycHJldGVy
LT5nZXRPcGNvZGVJRChpbnN0cnVjdGlvbnNCZWdpbltieXRlY29kZU9mZnNldF0udS5vcGNvZGUp
OwotICAgIEluc3RydWN0aW9uKiBjdXJyZW50ID0gaW5zdHJ1Y3Rpb25zQmVnaW4gKyBieXRlY29k
ZU9mZnNldDsKLSAgICBzd2l0Y2ggKG9wY29kZUlEKSB7Ci0gICAgY2FzZSBvcF9qbXA6Ci0gICAg
ICAgIG91dC5hcHBlbmQoYnl0ZWNvZGVPZmZzZXQgKyBjdXJyZW50WzFdLnUub3BlcmFuZCk7Ci0g
ICAgICAgIGJyZWFrOwotICAgIGNhc2Ugb3BfanRydWU6Ci0gICAgY2FzZSBvcF9qZmFsc2U6Ci0g
ICAgY2FzZSBvcF9qZXFfbnVsbDoKLSAgICBjYXNlIG9wX2puZXFfbnVsbDoKLSAgICAgICAgb3V0
LmFwcGVuZChieXRlY29kZU9mZnNldCArIGN1cnJlbnRbMl0udS5vcGVyYW5kKTsKLSAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBvcF9qbmVxX3B0cjoKLSAgICBjYXNlIG9wX2psZXNzOgotICAgIGNh
c2Ugb3Bfamxlc3NlcToKLSAgICBjYXNlIG9wX2pncmVhdGVyOgotICAgIGNhc2Ugb3BfamdyZWF0
ZXJlcToKLSAgICBjYXNlIG9wX2pubGVzczoKLSAgICBjYXNlIG9wX2pubGVzc2VxOgotICAgIGNh
c2Ugb3Bfam5ncmVhdGVyOgotICAgIGNhc2Ugb3Bfam5ncmVhdGVyZXE6Ci0gICAgY2FzZSBvcF9z
YXZlOiAvLyBUaGUganVtcCBvZiBvcF9zYXZlIGlzIHB1cmVseSBmb3IgY2FsY3VsYXRpbmcgbGl2
ZW5lc3MuCi0gICAgICAgIG91dC5hcHBlbmQoYnl0ZWNvZGVPZmZzZXQgKyBjdXJyZW50WzNdLnUu
b3BlcmFuZCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2Ugb3Bfc3dpdGNoX2ltbToKLSAgICBj
YXNlIG9wX3N3aXRjaF9jaGFyOiB7Ci0gICAgICAgIFNpbXBsZUp1bXBUYWJsZSYgdGFibGUgPSBj
b2RlQmxvY2stPnN3aXRjaEp1bXBUYWJsZShjdXJyZW50WzFdLnUub3BlcmFuZCk7Ci0gICAgICAg
IGZvciAodW5zaWduZWQgaSA9IHRhYmxlLmJyYW5jaE9mZnNldHMuc2l6ZSgpOyBpLS07KQotICAg
ICAgICAgICAgb3V0LmFwcGVuZChieXRlY29kZU9mZnNldCArIHRhYmxlLmJyYW5jaE9mZnNldHNb
aV0pOwotICAgICAgICBvdXQuYXBwZW5kKGJ5dGVjb2RlT2Zmc2V0ICsgY3VycmVudFsyXS51Lm9w
ZXJhbmQpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgY2FzZSBvcF9zd2l0Y2hfc3RyaW5n
OiB7Ci0gICAgICAgIFN0cmluZ0p1bXBUYWJsZSYgdGFibGUgPSBjb2RlQmxvY2stPnN0cmluZ1N3
aXRjaEp1bXBUYWJsZShjdXJyZW50WzFdLnUub3BlcmFuZCk7Ci0gICAgICAgIFN0cmluZ0p1bXBU
YWJsZTo6U3RyaW5nT2Zmc2V0VGFibGU6Oml0ZXJhdG9yIGl0ZXIgPSB0YWJsZS5vZmZzZXRUYWJs
ZS5iZWdpbigpOwotICAgICAgICBTdHJpbmdKdW1wVGFibGU6OlN0cmluZ09mZnNldFRhYmxlOjpp
dGVyYXRvciBlbmQgPSB0YWJsZS5vZmZzZXRUYWJsZS5lbmQoKTsKLSAgICAgICAgZm9yICg7IGl0
ZXIgIT0gZW5kOyArK2l0ZXIpCi0gICAgICAgICAgICBvdXQuYXBwZW5kKGJ5dGVjb2RlT2Zmc2V0
ICsgaXRlci0+dmFsdWUuYnJhbmNoT2Zmc2V0KTsKLSAgICAgICAgb3V0LmFwcGVuZChieXRlY29k
ZU9mZnNldCArIGN1cnJlbnRbMl0udS5vcGVyYW5kKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQot
ICAgIGNhc2Ugb3BfbG9vcF9oaW50OgorICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0
ZXItPmdldE9wY29kZUlEKGluc3RydWN0aW9uc0JlZ2luW2J5dGVjb2RlT2Zmc2V0XSk7CisgICAg
ZXh0cmFjdFN0b3JlZEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoY29kZUJsb2NrLCBpbnRl
cnByZXRlciwgaW5zdHJ1Y3Rpb25zQmVnaW4sIGJ5dGVjb2RlT2Zmc2V0LCBbJl0oaW50MzJfdCYg
cmVsYXRpdmVPZmZzZXQpIHsKKyAgICAgICAgb3V0LmFwcGVuZChieXRlY29kZU9mZnNldCArIHJl
bGF0aXZlT2Zmc2V0KTsKKyAgICB9KTsKKyAgICAvLyBvcF9sb29wX2hpbnQgZG9lcyBub3QgaGF2
ZSBqdW1wIHRhcmdldCBzdG9yZWQgaW4gYnl0ZWNvZGUgaW5zdHJ1Y3Rpb25zLgorICAgIGlmIChv
cGNvZGVJRCA9PSBvcF9sb29wX2hpbnQpCiAgICAgICAgIG91dC5hcHBlbmQoYnl0ZWNvZGVPZmZz
ZXQpOwotICAgICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgICBicmVhazsKLSAgICB9
CiB9CiAKLXZvaWQgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhDb2RlQmxvY2sqIGNvZGVCbG9j
aywgVmVjdG9yPHVuc2lnbmVkLCAzMj4mIG91dCkKK2VudW0gY2xhc3MgQ29tcHV0ZVByZWNpc2VK
dW1wVGFyZ2V0c01vZGUgeworICAgIEZvbGxvd0NvZGVCbG9ja0NsYWltLAorICAgIEZvcmNlQ29t
cHV0ZSwKK307CisKK3RlbXBsYXRlPENvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHNNb2RlIE1vZGUs
IHR5cGVuYW1lIEJsb2NrLCB0eXBlbmFtZSBJbnN0cnVjdGlvbiwgc2l6ZV90IHZlY3RvclNpemU+
Cit2b2lkIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHNJbnRlcm5hbChCbG9jayogY29kZUJsb2Nr
LCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGluc3RydWN0aW9uQ291
bnQsIFZlY3Rvcjx1bnNpZ25lZCwgdmVjdG9yU2l6ZT4mIG91dCkKIHsKICAgICBBU1NFUlQob3V0
LmlzRW1wdHkoKSk7CiAgICAgCiAgICAgLy8gV2Ugd2lsbCBkZXJpdmUgYSBzdXBlcnNldCBvZiB0
aGUganVtcCB0YXJnZXRzIHRoYXQgdGhlIGNvZGUgYmxvY2sgdGhpbmtzIGl0IGhhcy4KICAgICAv
LyBTbywgaWYgdGhlIGNvZGUgYmxvY2sgY2xhaW1zIHRoZXJlIGFyZSBub25lLCB0aGVuIHdlIGFy
ZSBkb25lLgotICAgIGlmICghY29kZUJsb2NrLT5udW1iZXJPZkp1bXBUYXJnZXRzKCkpCisgICAg
aWYgKE1vZGUgPT0gQ29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0c01vZGU6OkZvbGxvd0NvZGVCbG9j
a0NsYWltICYmICFjb2RlQmxvY2stPm51bWJlck9mSnVtcFRhcmdldHMoKSkKICAgICAgICAgcmV0
dXJuOwogICAgIAogICAgIGZvciAodW5zaWduZWQgaSA9IGNvZGVCbG9jay0+bnVtYmVyT2ZFeGNl
cHRpb25IYW5kbGVycygpOyBpLS07KSB7CkBAIC05OCwxMCArNjYsOCBAQCB2b2lkIGNvbXB1dGVQ
cmVjaXNlSnVtcFRhcmdldHMoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFZlY3Rvcjx1bnNpZ25lZCwg
MzI+JiBvdXQpCiAgICAgfQogCiAgICAgSW50ZXJwcmV0ZXIqIGludGVycHJldGVyID0gY29kZUJs
b2NrLT52bSgpLT5pbnRlcnByZXRlcjsKLSAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVn
aW4gPSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCk7Ci0gICAgdW5zaWduZWQgaW5z
dHJ1Y3Rpb25Db3VudCA9IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpOwogICAgIGZv
ciAodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQgPSAwOyBieXRlY29kZU9mZnNldCA8IGluc3RydWN0
aW9uQ291bnQ7KSB7Ci0gICAgICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0ZXItPmdl
dE9wY29kZUlEKGluc3RydWN0aW9uc0JlZ2luW2J5dGVjb2RlT2Zmc2V0XS51Lm9wY29kZSk7Cisg
ICAgICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGluc3Ry
dWN0aW9uc0JlZ2luW2J5dGVjb2RlT2Zmc2V0XSk7CiAgICAgICAgIGdldEp1bXBUYXJnZXRzRm9y
Qnl0ZWNvZGVPZmZzZXQoY29kZUJsb2NrLCBpbnRlcnByZXRlciwgaW5zdHJ1Y3Rpb25zQmVnaW4s
IGJ5dGVjb2RlT2Zmc2V0LCBvdXQpOwogICAgICAgICBieXRlY29kZU9mZnNldCArPSBvcGNvZGVM
ZW5ndGhzW29wY29kZUlEXTsKICAgICB9CkBAIC0xMjMsMTEgKzg5LDM0IEBAIHZvaWQgY29tcHV0
ZVByZWNpc2VKdW1wVGFyZ2V0cyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgVmVjdG9yPHVuc2lnbmVk
LCAzMj4mIG91dCkKICAgICBvdXQuc2hyaW5rVG9GaXQoKTsKIH0KIAotdm9pZCBmaW5kSnVtcFRh
cmdldHNGb3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgdW5zaWduZWQgYnl0
ZWNvZGVPZmZzZXQsIFZlY3Rvcjx1bnNpZ25lZCwgMT4mIG91dCkKK3ZvaWQgY29tcHV0ZVByZWNp
c2VKdW1wVGFyZ2V0cyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgVmVjdG9yPHVuc2lnbmVkLCAzMj4m
IG91dCkKIHsKLSAgICBJbnRlcnByZXRlciogaW50ZXJwcmV0ZXIgPSBjb2RlQmxvY2stPnZtKCkt
PmludGVycHJldGVyOwotICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiA9IGNvZGVC
bG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsKLSAgICBnZXRKdW1wVGFyZ2V0c0ZvckJ5dGVj
b2RlT2Zmc2V0KGNvZGVCbG9jaywgaW50ZXJwcmV0ZXIsIGluc3RydWN0aW9uc0JlZ2luLCBieXRl
Y29kZU9mZnNldCwgb3V0KTsKKyAgICBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzSW50ZXJuYWw8
Q29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0c01vZGU6OkZvbGxvd0NvZGVCbG9ja0NsYWltPihjb2Rl
QmxvY2ssIGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSwgY29kZUJsb2NrLT5pbnN0
cnVjdGlvbnMoKS5zaXplKCksIG91dCk7Cit9CisKK3ZvaWQgY29tcHV0ZVByZWNpc2VKdW1wVGFy
Z2V0cyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2lu
LCB1bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50LCBWZWN0b3I8dW5zaWduZWQsIDMyPiYgb3V0KQor
eworICAgIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHNJbnRlcm5hbDxDb21wdXRlUHJlY2lzZUp1
bXBUYXJnZXRzTW9kZTo6Rm9sbG93Q29kZUJsb2NrQ2xhaW0+KGNvZGVCbG9jaywgaW5zdHJ1Y3Rp
b25zQmVnaW4sIGluc3RydWN0aW9uQ291bnQsIG91dCk7Cit9CisKK3ZvaWQgY29tcHV0ZVByZWNp
c2VKdW1wVGFyZ2V0cyhVbmxpbmtlZENvZGVCbG9jayogY29kZUJsb2NrLCBVbmxpbmtlZEluc3Ry
dWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCwgVmVj
dG9yPHVuc2lnbmVkLCAzMj4mIG91dCkKK3sKKyAgICBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRz
SW50ZXJuYWw8Q29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0c01vZGU6OkZvbGxvd0NvZGVCbG9ja0Ns
YWltPihjb2RlQmxvY2ssIGluc3RydWN0aW9uc0JlZ2luLCBpbnN0cnVjdGlvbkNvdW50LCBvdXQp
OworfQorCit2b2lkIHJlY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhVbmxpbmtlZENvZGVCbG9j
ayogY29kZUJsb2NrLCBVbmxpbmtlZEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5z
aWduZWQgaW5zdHJ1Y3Rpb25Db3VudCwgVmVjdG9yPHVuc2lnbmVkPiYgb3V0KQoreworICAgIGNv
bXB1dGVQcmVjaXNlSnVtcFRhcmdldHNJbnRlcm5hbDxDb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRz
TW9kZTo6Rm9yY2VDb21wdXRlPihjb2RlQmxvY2ssIGluc3RydWN0aW9uc0JlZ2luLCBpbnN0cnVj
dGlvbkNvdW50LCBvdXQpOworfQorCit2b2lkIGZpbmRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zm
c2V0KENvZGVCbG9jayogY29kZUJsb2NrLCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4s
IHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBWZWN0b3I8dW5zaWduZWQsIDE+JiBvdXQpCit7Cisg
ICAgZ2V0SnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChjb2RlQmxvY2ssIGNvZGVCbG9jay0+
dm0oKS0+aW50ZXJwcmV0ZXIsIGluc3RydWN0aW9uc0JlZ2luLCBieXRlY29kZU9mZnNldCwgb3V0
KTsKK30KKwordm9pZCBmaW5kSnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChVbmxpbmtlZENv
ZGVCbG9jayogY29kZUJsb2NrLCBVbmxpbmtlZEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdp
biwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIFZlY3Rvcjx1bnNpZ25lZCwgMT4mIG91dCkKK3sK
KyAgICBnZXRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9jaywgY29kZUJsb2Nr
LT52bSgpLT5pbnRlcnByZXRlciwgaW5zdHJ1Y3Rpb25zQmVnaW4sIGJ5dGVjb2RlT2Zmc2V0LCBv
dXQpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHMuaAppbmRleCA4NTI0MTNkNzdiNzk4OTg0
YjI3Y2VmMGVkNjJiYzk0YzY4OWUyMTJjLi5iY2M5MzQ2Y2Q1ZDcwMjA0NjVkZWYwOWE1YjI1OWNm
NDg3MmQ5YjkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJl
Y2lzZUp1bXBUYXJnZXRzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1By
ZWNpc2VKdW1wVGFyZ2V0cy5oCkBAIC0yMywxOSArMjMsMjMgQEAKICAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAog
ICovCiAKLSNpZm5kZWYgUHJlY2lzZUp1bXBUYXJnZXRzX2gKLSNkZWZpbmUgUHJlY2lzZUp1bXBU
YXJnZXRzX2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAKIG5hbWVz
cGFjZSBKU0MgewogCitjbGFzcyBVbmxpbmtlZENvZGVCbG9jazsKK3N0cnVjdCBVbmxpbmtlZElu
c3RydWN0aW9uOworCiAvLyBSZXR1cm4gYSBzb3J0ZWQgbGlzdCBvZiBieXRlY29kZSBpbmRleCB0
aGF0IGFyZSB0aGUgZGVzdGluYXRpb24gb2YgYSBqdW1wLgogdm9pZCBjb21wdXRlUHJlY2lzZUp1
bXBUYXJnZXRzKENvZGVCbG9jayosIFZlY3Rvcjx1bnNpZ25lZCwgMzI+JiBvdXQpOwordm9pZCBj
b21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKENvZGVCbG9jayosIEluc3RydWN0aW9uKiBpbnN0cnVj
dGlvbnNCZWdpbiwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCwgVmVjdG9yPHVuc2lnbmVkLCAz
Mj4mIG91dCk7Cit2b2lkIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMoVW5saW5rZWRDb2RlQmxv
Y2sqLCBVbmxpbmtlZEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgaW5z
dHJ1Y3Rpb25Db3VudCwgVmVjdG9yPHVuc2lnbmVkLCAzMj4mIG91dCk7CiAKLXZvaWQgZmluZEp1
bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiwgdW5zaWduZWQgYnl0ZWNvZGVP
ZmZzZXQsIFZlY3Rvcjx1bnNpZ25lZCwgMT4mIG91dCk7Ci0KLX0gLy8gbmFtZXNwYWNlIEpTQwor
dm9pZCByZWNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMoVW5saW5rZWRDb2RlQmxvY2sqLCBVbmxp
bmtlZEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25D
b3VudCwgVmVjdG9yPHVuc2lnbmVkPiYgb3V0KTsKIAotI2VuZGlmIC8vIFByZWNpc2VKdW1wVGFy
Z2V0c19oCit2b2lkIGZpbmRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayos
IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQs
IFZlY3Rvcjx1bnNpZ25lZCwgMT4mIG91dCk7Cit2b2lkIGZpbmRKdW1wVGFyZ2V0c0ZvckJ5dGVj
b2RlT2Zmc2V0KFVubGlua2VkQ29kZUJsb2NrKiwgVW5saW5rZWRJbnN0cnVjdGlvbiogaW5zdHJ1
Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBWZWN0b3I8dW5zaWduZWQsIDE+
JiBvdXQpOwogCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHNJbmxpbmVzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzSW5saW5lcy5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjE5ZmRjZGNlYmI3MmY0NjJmMDg0ODVmOGRkZDhjMWYzMmZhMGRlNTUKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRz
SW5saW5lcy5oCkBAIC0wLDAgKzEsODIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkludGVycHJldGVySW5s
aW5lcy5oIgorI2luY2x1ZGUgIk9wY29kZS5oIgorI2luY2x1ZGUgIlByZWNpc2VKdW1wVGFyZ2V0
cy5oIgorCituYW1lc3BhY2UgSlNDIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgQmxvY2ssIHR5cGVu
YW1lIEluc3RydWN0aW9uLCB0eXBlbmFtZSBGdW5jdGlvbj4KK2lubGluZSB2b2lkIGV4dHJhY3RT
dG9yZWRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KEJsb2NrKiBjb2RlQmxvY2ssIEludGVy
cHJldGVyKiBpbnRlcnByZXRlciwgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1bnNp
Z25lZCBieXRlY29kZU9mZnNldCwgRnVuY3Rpb24gZnVuY3Rpb24pCit7CisgICAgT3Bjb2RlSUQg
b3Bjb2RlSUQgPSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25zQmVnaW5bYnl0
ZWNvZGVPZmZzZXRdKTsKKyAgICBJbnN0cnVjdGlvbiogY3VycmVudCA9IGluc3RydWN0aW9uc0Jl
Z2luICsgYnl0ZWNvZGVPZmZzZXQ7CisgICAgc3dpdGNoIChvcGNvZGVJRCkgeworICAgIGNhc2Ug
b3Bfam1wOgorICAgICAgICBmdW5jdGlvbihjdXJyZW50WzFdLnUub3BlcmFuZCk7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2Ugb3BfanRydWU6CisgICAgY2FzZSBvcF9qZmFsc2U6CisgICAgY2Fz
ZSBvcF9qZXFfbnVsbDoKKyAgICBjYXNlIG9wX2puZXFfbnVsbDoKKyAgICAgICAgZnVuY3Rpb24o
Y3VycmVudFsyXS51Lm9wZXJhbmQpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIG9wX2puZXFf
cHRyOgorICAgIGNhc2Ugb3Bfamxlc3M6CisgICAgY2FzZSBvcF9qbGVzc2VxOgorICAgIGNhc2Ug
b3BfamdyZWF0ZXI6CisgICAgY2FzZSBvcF9qZ3JlYXRlcmVxOgorICAgIGNhc2Ugb3Bfam5sZXNz
OgorICAgIGNhc2Ugb3Bfam5sZXNzZXE6CisgICAgY2FzZSBvcF9qbmdyZWF0ZXI6CisgICAgY2Fz
ZSBvcF9qbmdyZWF0ZXJlcToKKyAgICAgICAgZnVuY3Rpb24oY3VycmVudFszXS51Lm9wZXJhbmQp
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIG9wX3N3aXRjaF9pbW06CisgICAgY2FzZSBvcF9z
d2l0Y2hfY2hhcjogeworICAgICAgICBhdXRvJiB0YWJsZSA9IGNvZGVCbG9jay0+c3dpdGNoSnVt
cFRhYmxlKGN1cnJlbnRbMV0udS5vcGVyYW5kKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
dGFibGUuYnJhbmNoT2Zmc2V0cy5zaXplKCk7IGktLTspCisgICAgICAgICAgICBmdW5jdGlvbih0
YWJsZS5icmFuY2hPZmZzZXRzW2ldKTsKKyAgICAgICAgZnVuY3Rpb24oY3VycmVudFsyXS51Lm9w
ZXJhbmQpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBvcF9zd2l0Y2hfc3RyaW5n
OiB7CisgICAgICAgIGF1dG8mIHRhYmxlID0gY29kZUJsb2NrLT5zdHJpbmdTd2l0Y2hKdW1wVGFi
bGUoY3VycmVudFsxXS51Lm9wZXJhbmQpOworICAgICAgICBhdXRvIGl0ZXIgPSB0YWJsZS5vZmZz
ZXRUYWJsZS5iZWdpbigpOworICAgICAgICBhdXRvIGVuZCA9IHRhYmxlLm9mZnNldFRhYmxlLmVu
ZCgpOworICAgICAgICBmb3IgKDsgaXRlciAhPSBlbmQ7ICsraXRlcikKKyAgICAgICAgICAgIGZ1
bmN0aW9uKGl0ZXItPnZhbHVlLmJyYW5jaE9mZnNldCk7CisgICAgICAgIGZ1bmN0aW9uKGN1cnJl
bnRbMl0udS5vcGVyYW5kKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGRlZmF1bHQ6Cisg
ICAgICAgIGJyZWFrOworICAgIH0KK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcAppbmRl
eCAwMDVkZmY4YmZjMmM1MDQ4YzUwM2NlNjAyOWJiZDIzODMwNmExOTU0Li5hNmUwZTgyYmUzMzY3
ODkwZWUyMDIxMDAzYzk3NDM2ZDY4NWZiYjYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKQEAgLTI4LDYgKzI4LDcgQEAK
ICNpbmNsdWRlICJVbmxpbmtlZENvZGVCbG9jay5oIgogCiAjaW5jbHVkZSAiQnl0ZWNvZGVHZW5l
cmF0b3IuaCIKKyNpbmNsdWRlICJCeXRlY29kZVJld3JpdGVyLmgiCiAjaW5jbHVkZSAiQ2xhc3NJ
bmZvLmgiCiAjaW5jbHVkZSAiQ29kZUNhY2hlLmgiCiAjaW5jbHVkZSAiRXhlY3V0YWJsZS5oIgpA
QCAtMzYsNiArMzcsNyBAQAogI2luY2x1ZGUgIkpTU3RyaW5nLmgiCiAjaW5jbHVkZSAiSlNDSW5s
aW5lcy5oIgogI2luY2x1ZGUgIlBhcnNlci5oIgorI2luY2x1ZGUgIlByZWNpc2VKdW1wVGFyZ2V0
c0lubGluZXMuaCIKICNpbmNsdWRlICJTb3VyY2VQcm92aWRlci5oIgogI2luY2x1ZGUgIlN0cnVj
dHVyZS5oIgogI2luY2x1ZGUgIlN5bWJvbFRhYmxlLmgiCkBAIC0zNjcsNSArMzY5LDY3IEBAIGNv
bnN0IFVubGlua2VkSW5zdHJ1Y3Rpb25TdHJlYW0mIFVubGlua2VkQ29kZUJsb2NrOjppbnN0cnVj
dGlvbnMoKSBjb25zdAogICAgIHJldHVybiAqbV91bmxpbmtlZEluc3RydWN0aW9uczsKIH0KIAor
VW5saW5rZWRIYW5kbGVySW5mbyogVW5saW5rZWRDb2RlQmxvY2s6OmhhbmRsZXJGb3JCeXRlY29k
ZU9mZnNldCh1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgUmVxdWlyZWRIYW5kbGVyIHJlcXVpcmVk
SGFuZGxlcikKK3sKKyAgICByZXR1cm4gaGFuZGxlckZvckluZGV4KGJ5dGVjb2RlT2Zmc2V0LCBy
ZXF1aXJlZEhhbmRsZXIpOworfQorCitVbmxpbmtlZEhhbmRsZXJJbmZvKiBVbmxpbmtlZENvZGVC
bG9jazo6aGFuZGxlckZvckluZGV4KHVuc2lnbmVkIGluZGV4LCBSZXF1aXJlZEhhbmRsZXIgcmVx
dWlyZWRIYW5kbGVyKQoreworICAgIGlmICghbV9yYXJlRGF0YSkKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgcmV0dXJuIFVubGlua2VkSGFuZGxlckluZm86OmhhbmRsZXJGb3JJbmRleCht
X3JhcmVEYXRhLT5tX2V4Y2VwdGlvbkhhbmRsZXJzLCBpbmRleCwgcmVxdWlyZWRIYW5kbGVyKTsK
K30KKwordm9pZCBVbmxpbmtlZENvZGVCbG9jazo6YXBwbHlNb2RpZmljYXRpb24oQnl0ZWNvZGVS
ZXdyaXRlciYgcmV3cml0ZXIpCit7CisgICAgLy8gQmVmb3JlIGFwcGx5aW5nIHRoZSBjaGFuZ2Vz
LCB3ZSBhZGp1c3QgdGhlIGp1bXBzIGJhc2VkIG9uIHRoZSBvcmlnaW5hbCBieXRlY29kZSBvZmZz
ZXQsIHRoZSBvZmZzZXQgdG8gdGhlIGp1bXAgdGFyZ2V0LCBhbmQKKyAgICAvLyB0aGUgaW5zZXJ0
aW9uIGluZm9ybWF0aW9uLgorCisgICAgQnl0ZWNvZGVHcmFwaDxVbmxpbmtlZENvZGVCbG9jaz4m
IGdyYXBoID0gcmV3cml0ZXIuZ3JhcGgoKTsKKyAgICBVbmxpbmtlZEluc3RydWN0aW9uKiBpbnN0
cnVjdGlvbnNCZWdpbiA9IGdyYXBoLmluc3RydWN0aW9ucygpLmJlZ2luKCk7CisKKyAgICBmb3Ig
KGludCBieXRlY29kZU9mZnNldCA9IDAsIGluc3RydWN0aW9uQ291bnQgPSBncmFwaC5pbnN0cnVj
dGlvbnMoKS5zaXplKCk7IGJ5dGVjb2RlT2Zmc2V0IDwgaW5zdHJ1Y3Rpb25Db3VudDspIHsKKyAg
ICAgICAgVW5saW5rZWRJbnN0cnVjdGlvbiogY3VycmVudCA9IGluc3RydWN0aW9uc0JlZ2luICsg
Ynl0ZWNvZGVPZmZzZXQ7CisgICAgICAgIE9wY29kZUlEIG9wY29kZUlEID0gY3VycmVudFswXS51
Lm9wY29kZTsKKyAgICAgICAgZXh0cmFjdFN0b3JlZEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZz
ZXQodGhpcywgdm0oKS0+aW50ZXJwcmV0ZXIsIGluc3RydWN0aW9uc0JlZ2luLCBieXRlY29kZU9m
ZnNldCwgWyZdKGludDMyX3QmIHJlbGF0aXZlT2Zmc2V0KSB7CisgICAgICAgICAgICByZWxhdGl2
ZU9mZnNldCA9IHJld3JpdGVyLmFkanVzdEp1bXBUYXJnZXQoYnl0ZWNvZGVPZmZzZXQsIGJ5dGVj
b2RlT2Zmc2V0ICsgcmVsYXRpdmVPZmZzZXQpOworICAgICAgICB9KTsKKyAgICAgICAgYnl0ZWNv
ZGVPZmZzZXQgKz0gb3Bjb2RlTGVuZ3RoKG9wY29kZUlEKTsKKyAgICB9CisKKyAgICAvLyBUaGVu
LCBleGNlcHRpb24gaGFuZGxlcnMgc2hvdWxkIGJlIGFkanVzdGVkLgorICAgIGlmIChtX3JhcmVE
YXRhKSB7CisgICAgICAgIGZvciAoVW5saW5rZWRIYW5kbGVySW5mbyYgaGFuZGxlciA6IG1fcmFy
ZURhdGEtPm1fZXhjZXB0aW9uSGFuZGxlcnMpIHsKKyAgICAgICAgICAgIGhhbmRsZXIudGFyZ2V0
ID0gcmV3cml0ZXIuYWRqdXN0QWJzb2x1dGVPZmZzZXQoaGFuZGxlci50YXJnZXQpOworICAgICAg
ICAgICAgaGFuZGxlci5zdGFydCA9IHJld3JpdGVyLmFkanVzdEFic29sdXRlT2Zmc2V0KGhhbmRs
ZXIuc3RhcnQpOworICAgICAgICAgICAgaGFuZGxlci5lbmQgPSByZXdyaXRlci5hZGp1c3RBYnNv
bHV0ZU9mZnNldChoYW5kbGVyLmVuZCk7CisgICAgICAgIH0KKworICAgICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IG1fcmFyZURhdGEtPm1fb3BQcm9maWxlQ29udHJvbEZsb3dCeXRlY29kZU9m
ZnNldHMuc2l6ZSgpOyArK2kpCisgICAgICAgICAgICBtX3JhcmVEYXRhLT5tX29wUHJvZmlsZUNv
bnRyb2xGbG93Qnl0ZWNvZGVPZmZzZXRzW2ldID0gcmV3cml0ZXIuYWRqdXN0QWJzb2x1dGVPZmZz
ZXQobV9yYXJlRGF0YS0+bV9vcFByb2ZpbGVDb250cm9sRmxvd0J5dGVjb2RlT2Zmc2V0c1tpXSk7
CisKKyAgICAgICAgaWYgKCFtX3JhcmVEYXRhLT5tX3R5cGVQcm9maWxlckluZm9NYXAuaXNFbXB0
eSgpKSB7CisgICAgICAgICAgICBIYXNoTWFwPHVuc2lnbmVkLCBSYXJlRGF0YTo6VHlwZVByb2Zp
bGVyRXhwcmVzc2lvblJhbmdlPiBhZGp1c3RlZFR5cGVQcm9maWxlckluZm9NYXA7CisgICAgICAg
ICAgICBmb3IgKGF1dG8mIGVudHJ5IDogbV9yYXJlRGF0YS0+bV90eXBlUHJvZmlsZXJJbmZvTWFw
KQorICAgICAgICAgICAgICAgIGFkanVzdGVkVHlwZVByb2ZpbGVySW5mb01hcC5zZXQocmV3cml0
ZXIuYWRqdXN0QWJzb2x1dGVPZmZzZXQoZW50cnkua2V5KSwgZW50cnkudmFsdWUpOworICAgICAg
ICAgICAgbV9yYXJlRGF0YS0+bV90eXBlUHJvZmlsZXJJbmZvTWFwLnN3YXAoYWRqdXN0ZWRUeXBl
UHJvZmlsZXJJbmZvTWFwKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9ucy5zaXplKCk7ICsraSkKKyAgICAg
ICAgbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uc1tpXSA9IHJld3JpdGVyLmFkanVzdEFic29s
dXRlT2Zmc2V0KG1fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnNbaV0pOworCisgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBtX2V4cHJlc3Npb25JbmZvLnNpemUoKTsgKytpKQorICAgICAgICBt
X2V4cHJlc3Npb25JbmZvW2ldLmluc3RydWN0aW9uT2Zmc2V0ID0gcmV3cml0ZXIuYWRqdXN0QWJz
b2x1dGVPZmZzZXQobV9leHByZXNzaW9uSW5mb1tpXS5pbnN0cnVjdGlvbk9mZnNldCk7CisKKyAg
ICAvLyBUaGVuLCBtb2RpZnkgdGhlIHVubGlua2VkIGluc3RydWN0aW9ucy4KKyAgICByZXdyaXRl
ci5hcHBseU1vZGlmaWNhdGlvbigpOworCisgICAgLy8gQW5kIHJlY29tcHV0ZSB0aGUganVtcCB0
YXJnZXQgYmFzZWQgb24gdGhlIG1vZGlmaWVkIHVubGlua2VkIGluc3RydWN0aW9ucy4KKyAgICBt
X2p1bXBUYXJnZXRzLmNsZWFyKCk7CisgICAgcmVjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKHRo
aXMsIGdyYXBoLmluc3RydWN0aW9ucygpLmJlZ2luKCksIGdyYXBoLmluc3RydWN0aW9ucygpLnNp
emUoKSwgbV9qdW1wVGFyZ2V0cyk7Cit9CisKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAppbmRleCBiNGQyY2Y0OGU0NjM4ZDM3
M2IxNjcyMGY3NmUzY2ZmOTdkZjAxNTBkLi43MmQxNjk2MTFhYTkzNTE3OGM0ODEwZWVkMmQ1OWE4
MzE4ZmY2MWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRDb2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRDb2RlQmxvY2suaApAQCAtNDUsNiArNDUsOCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAor
Y2xhc3MgQnl0ZWNvZGVSZXdyaXRlcjsKK2NsYXNzIERlYnVnZ2VyOwogY2xhc3MgRnVuY3Rpb25N
ZXRhZGF0YU5vZGU7CiBjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGU7CiBjbGFzcyBKU1Njb3BlOwpA
QCAtNjUsNyArNjcsMTEgQEAgdHlwZWRlZiB1bnNpZ25lZCBVbmxpbmtlZE9iamVjdEFsbG9jYXRp
b25Qcm9maWxlOwogdHlwZWRlZiB1bnNpZ25lZCBVbmxpbmtlZExMSW50Q2FsbExpbmtJbmZvOwog
CiBzdHJ1Y3QgVW5saW5rZWRTdHJpbmdKdW1wVGFibGUgewotICAgIHR5cGVkZWYgSGFzaE1hcDxS
ZWZQdHI8U3RyaW5nSW1wbD4sIGludDMyX3Q+IFN0cmluZ09mZnNldFRhYmxlOworICAgIHN0cnVj
dCBPZmZzZXRMb2NhdGlvbiB7CisgICAgICAgIGludDMyX3QgYnJhbmNoT2Zmc2V0OworICAgIH07
CisKKyAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFN0cmluZ0ltcGw+LCBPZmZzZXRMb2NhdGlv
bj4gU3RyaW5nT2Zmc2V0VGFibGU7CiAgICAgU3RyaW5nT2Zmc2V0VGFibGUgb2Zmc2V0VGFibGU7
CiAKICAgICBpbmxpbmUgaW50MzJfdCBvZmZzZXRGb3JWYWx1ZShTdHJpbmdJbXBsKiB2YWx1ZSwg
aW50MzJfdCBkZWZhdWx0T2Zmc2V0KQpAQCAtNzQsNyArODAsNyBAQCBzdHJ1Y3QgVW5saW5rZWRT
dHJpbmdKdW1wVGFibGUgewogICAgICAgICBTdHJpbmdPZmZzZXRUYWJsZTo6Y29uc3RfaXRlcmF0
b3IgbG9jID0gb2Zmc2V0VGFibGUuZmluZCh2YWx1ZSk7CiAgICAgICAgIGlmIChsb2MgPT0gZW5k
KQogICAgICAgICAgICAgcmV0dXJuIGRlZmF1bHRPZmZzZXQ7Ci0gICAgICAgIHJldHVybiBsb2Mt
PnZhbHVlOworICAgICAgICByZXR1cm4gbG9jLT52YWx1ZS5icmFuY2hPZmZzZXQ7CiAgICAgfQog
CiB9OwpAQCAtMTAyLDYgKzEwOCw4IEBAIHN0cnVjdCBVbmxpbmtlZEluc3RydWN0aW9uIHsKICAg
ICB9IHU7CiB9OwogCitjbGFzcyBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbjsKKwogY2xhc3Mg
VW5saW5rZWRDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKIHB1YmxpYzoKICAgICB0eXBlZGVm
IEpTQ2VsbCBCYXNlOwpAQCAtMTExLDYgKzExOSw5IEBAIGNsYXNzIFVubGlua2VkQ29kZUJsb2Nr
IDogcHVibGljIEpTQ2VsbCB7CiAKICAgICBlbnVtIHsgQ2FsbEZ1bmN0aW9uLCBBcHBseUZ1bmN0
aW9uIH07CiAKKyAgICB0eXBlZGVmIFVubGlua2VkSW5zdHJ1Y3Rpb24gSW5zdHJ1Y3Rpb247Cisg
ICAgdHlwZWRlZiBWZWN0b3I8VW5saW5rZWRJbnN0cnVjdGlvbiwgMCwgVW5zYWZlVmVjdG9yT3Zl
cmZsb3c+IFVucGFja2VkSW5zdHJ1Y3Rpb25zOworCiAgICAgYm9vbCBpc0NvbnN0cnVjdG9yKCkg
Y29uc3QgeyByZXR1cm4gbV9pc0NvbnN0cnVjdG9yOyB9CiAgICAgYm9vbCBpc1N0cmljdE1vZGUo
KSBjb25zdCB7IHJldHVybiBtX2lzU3RyaWN0TW9kZTsgfQogICAgIGJvb2wgdXNlc0V2YWwoKSBj
b25zdCB7IHJldHVybiBtX3VzZXNFdmFsOyB9CkBAIC0yMDAsNiArMjExLDkgQEAgY2xhc3MgVW5s
aW5rZWRDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICB1bnNpZ25lZCBqdW1wVGFyZ2V0
KGludCBpbmRleCkgY29uc3QgeyByZXR1cm4gbV9qdW1wVGFyZ2V0c1tpbmRleF07IH0KICAgICB1
bnNpZ25lZCBsYXN0SnVtcFRhcmdldCgpIGNvbnN0IHsgcmV0dXJuIG1fanVtcFRhcmdldHMubGFz
dCgpOyB9CiAKKyAgICBVbmxpbmtlZEhhbmRsZXJJbmZvKiBoYW5kbGVyRm9yQnl0ZWNvZGVPZmZz
ZXQodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIFJlcXVpcmVkSGFuZGxlciA9IFJlcXVpcmVkSGFu
ZGxlcjo6QW55SGFuZGxlcik7CisgICAgVW5saW5rZWRIYW5kbGVySW5mbyogaGFuZGxlckZvcklu
ZGV4KHVuc2lnbmVkLCBSZXF1aXJlZEhhbmRsZXIgPSBSZXF1aXJlZEhhbmRsZXI6OkFueUhhbmRs
ZXIpOworCiAgICAgYm9vbCBpc0J1aWx0aW5GdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNC
dWlsdGluRnVuY3Rpb247IH0KIAogICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQo
KSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxDb25zdHJ1Y3RvcktpbmQ+KG1fY29uc3RydWN0
b3JLaW5kKTsgfQpAQCAtMjMwLDYgKzI0NCw4IEBAIGNsYXNzIFVubGlua2VkQ29kZUJsb2NrIDog
cHVibGljIEpTQ2VsbCB7CiAgICAgdm9pZCBzZXRJbnN0cnVjdGlvbnMoc3RkOjp1bmlxdWVfcHRy
PFVubGlua2VkSW5zdHJ1Y3Rpb25TdHJlYW0+KTsKICAgICBjb25zdCBVbmxpbmtlZEluc3RydWN0
aW9uU3RyZWFtJiBpbnN0cnVjdGlvbnMoKSBjb25zdDsKIAorICAgIGludCBudW1DYWxsZWVMb2Nh
bHMoKSBjb25zdCB7IHJldHVybiBtX251bUNhbGxlZUxvY2FsczsgfQorCiAgICAgaW50IG1fbnVt
VmFyczsKICAgICBpbnQgbV9udW1DYXB0dXJlZFZhcnM7CiAgICAgaW50IG1fbnVtQ2FsbGVlTG9j
YWxzOwpAQCAtMzgxLDYgKzM5Nyw4IEBAIGNsYXNzIFVubGlua2VkQ29kZUJsb2NrIDogcHVibGlj
IEpTQ2VsbCB7CiAgICAgfQogCiBwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBCeXRlY29kZVJl
d3JpdGVyOworICAgIHZvaWQgYXBwbHlNb2RpZmljYXRpb24oQnl0ZWNvZGVSZXdyaXRlciYpOwog
CiAgICAgdm9pZCBjcmVhdGVSYXJlRGF0YUlmTmVjZXNzYXJ5KCkKICAgICB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmlydHVhbFJlZ2lzdGVyLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmlydHVhbFJlZ2lzdGVyLmgKaW5kZXggZDNkZjQw
OTU3YjUxNzU2OGUzYWVmYmUzYTFhNjA5ZmQ4NzhiYWFjMy4uZGFmNTA5ZjZjN2QxMTVlNDViY2Ix
MDdjNjdkM2QzOGQ4MDRmMjg5NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1ZpcnR1YWxSZWdpc3Rlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9WaXJ0dWFsUmVnaXN0ZXIuaApAQCAtMjYsOCArMjYsOCBAQAogI2lmbmRlZiBWaXJ0dWFs
UmVnaXN0ZXJfaAogI2RlZmluZSBWaXJ0dWFsUmVnaXN0ZXJfaAogCisjaW5jbHVkZSAiQnl0ZWNv
ZGVDb252ZW50aW9ucy5oIgogI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgotCiAjaW5jbHVkZSA8d3Rm
L1ByaW50U3RyZWFtLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtMTAzLDcgKzEwMyw3IEBAIGNs
YXNzIFZpcnR1YWxSZWdpc3RlciB7CiAKIHByaXZhdGU6CiAgICAgc3RhdGljIGNvbnN0IGludCBz
X2ludmFsaWRWaXJ0dWFsUmVnaXN0ZXIgPSAweDNmZmZmZmZmOwotICAgIHN0YXRpYyBjb25zdCBp
bnQgc19maXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCA9IDB4NDAwMDAwMDA7CisgICAgc3RhdGlj
IGNvbnN0IGludCBzX2ZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4ID0gRmlyc3RDb25zdGFudFJl
Z2lzdGVySW5kZXg7CiAKICAgICBzdGF0aWMgaW50IGxvY2FsVG9PcGVyYW5kKGludCBsb2NhbCkg
eyByZXR1cm4gLTEgLSBsb2NhbDsgfQogICAgIHN0YXRpYyBpbnQgb3BlcmFuZFRvTG9jYWwoaW50
IG9wZXJhbmQpIHsgcmV0dXJuIC0xIC0gb3BlcmFuZDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCBi
NmRmMTViZTJjNDk5ODQ5NDhlNzFlMzEzYzQ1ZTRkZTFhMjE1NzFhLi43MmQyNzhiYzlmMzg5YzI1
OThhYTJmNDYzYjFhNWJhMDg3ZWI5NDAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAtMzMsNiArMzMs
NyBAQAogCiAjaW5jbHVkZSAiQXJpdGhQcm9maWxlLmgiCiAjaW5jbHVkZSAiQnVpbHRpbkV4ZWN1
dGFibGVzLmgiCisjaW5jbHVkZSAiQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uaCIKICNpbmNs
dWRlICJCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5o
IgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKQEAgLTE1NSw2ICsxNTYsMTAgQEAgUGFyc2VyRXJy
b3IgQnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKCkKICAgICAgICAgbV9jb2RlQmxvY2stPmFk
ZEV4Y2VwdGlvbkhhbmRsZXIoaW5mbyk7CiAgICAgfQogICAgIAorCisgICAgaWYgKG1fY29kZUJs
b2NrLT5wYXJzZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckJvZHlNb2RlKQor
ICAgICAgICBwZXJmb3JtR2VuZXJhdG9yaWZpY2F0aW9uKG1fY29kZUJsb2NrLmdldCgpLCBtX2lu
c3RydWN0aW9ucywgbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlLmdldCgpLCBtX2dlbmVyYXRv
ckZyYW1lU3ltYm9sVGFibGVJbmRleCk7CisKICAgICBtX2NvZGVCbG9jay0+c2V0SW5zdHJ1Y3Rp
b25zKHN0ZDo6bWFrZV91bmlxdWU8VW5saW5rZWRJbnN0cnVjdGlvblN0cmVhbT4obV9pbnN0cnVj
dGlvbnMpKTsKIAogICAgIG1fY29kZUJsb2NrLT5zaHJpbmtUb0ZpdCgpOwpAQCAtMjYyLDEwICsy
NjcsMTQgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVu
Y3Rpb25Ob2RlKiBmdW5jdGlvbk5vZGUsIFVubGlua2UKICAgICBib29sIHNob3VsZENhcHR1cmVB
bGxPZlRoZVRoaW5ncyA9IG1fc2hvdWxkRW1pdERlYnVnSG9va3MgfHwgY29kZUJsb2NrLT51c2Vz
RXZhbCgpOwogICAgIGJvb2wgbmVlZHNBcmd1bWVudHMgPSAoZnVuY3Rpb25Ob2RlLT51c2VzQXJn
dW1lbnRzKCkgfHwgY29kZUJsb2NrLT51c2VzRXZhbCgpIHx8IChmdW5jdGlvbk5vZGUtPnVzZXNB
cnJvd0Z1bmN0aW9uKCkgJiYgIWNvZGVCbG9jay0+aXNBcnJvd0Z1bmN0aW9uKCkgJiYgaXNBcmd1
bWVudHNVc2VkSW5Jbm5lckFycm93RnVuY3Rpb24oKSkpOwogCi0gICAgLy8gR2VuZXJhdG9yIG5l
dmVyIHByb3ZpZGVzICJhcmd1bWVudHMiLiAiYXJndW1lbnRzIiByZWZlcmVuY2Ugd2lsbCBiZSBy
ZXNvbHZlZCBpbiBhbiB1cHBlciBnZW5lcmF0b3IgZnVuY3Rpb24gc2NvcGUuCi0gICAgaWYgKHBh
cnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckJvZHlNb2RlKQorICAgIGlmIChw
YXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JCb2R5TW9kZSkgeworICAgICAg
ICAvLyBHZW5lcmF0b3IgbmV2ZXIgcHJvdmlkZXMgImFyZ3VtZW50cyIuICJhcmd1bWVudHMiIHJl
ZmVyZW5jZSB3aWxsIGJlIHJlc29sdmVkIGluIGFuIHVwcGVyIGdlbmVyYXRvciBmdW5jdGlvbiBz
Y29wZS4KICAgICAgICAgbmVlZHNBcmd1bWVudHMgPSBmYWxzZTsKIAorICAgICAgICAvLyBHZW5l
cmF0b3IgdXNlcyB0aGUgdmFyIHNjb3BlIHRvIHNhdmUgYW5kIHJlc3VtZSBpdHMgdmFyaWFibGVz
LiBTbyB0aGUgbGV4aWNhbCBzY29wZSBpcyBhbHdheXMgaW5zdGFudGlhdGVkLgorICAgICAgICBz
aG91bGRDYXB0dXJlU29tZU9mVGhlVGhpbmdzID0gdHJ1ZTsKKyAgICB9CisKICAgICBpZiAocGFy
c2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yV3JhcHBlckZ1bmN0aW9uTW9kZSAm
JiBuZWVkc0FyZ3VtZW50cykgewogICAgICAgICAvLyBHZW5lcmF0b3IgZG9lcyBub3QgcHJvdmlk
ZSAiYXJndW1lbnRzIi4gSW5zdGVhZCwgd3JhcHBpbmcgR2VuZXJhdG9yRnVuY3Rpb24gcHJvdmlk
ZXMgImFyZ3VtZW50cyIuCiAgICAgICAgIC8vIFRoaXMgaXMgYmVjYXVzZSBhcmd1bWVudHMgb2Yg
YSBnZW5lcmF0b3Igc2hvdWxkIGJlIGV2YWx1YXRlZCBiZWZvcmUgc3RhcnRpbmcgaXQuCkBAIC0y
NzQsNyArMjgzLDcgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2
bSwgRnVuY3Rpb25Ob2RlKiBmdW5jdGlvbk5vZGUsIFVubGlua2UKICAgICAgICAgLy8gICAgZnVu
Y3Rpb24gKmdlbihhLCBiID0gaGVsbG8oKSkKICAgICAgICAgLy8gICAgewogICAgICAgICAvLyAg
ICAgICAgcmV0dXJuIHsKLSAgICAgICAgLy8gICAgICAgICAgICBAZ2VuZXJhdG9yTmV4dDogZnVu
Y3Rpb24gKEBnZW5lcmF0b3IsIEBnZW5lcmF0b3JTdGF0ZSwgQGdlbmVyYXRvclZhbHVlLCBAZ2Vu
ZXJhdG9yUmVzdW1lTW9kZSkKKyAgICAgICAgLy8gICAgICAgICAgICBAZ2VuZXJhdG9yTmV4dDog
ZnVuY3Rpb24gKEBnZW5lcmF0b3IsIEBnZW5lcmF0b3JTdGF0ZSwgQGdlbmVyYXRvclZhbHVlLCBA
Z2VuZXJhdG9yUmVzdW1lTW9kZSwgQGdlbmVyYXRvckZyYW1lKQogICAgICAgICAvLyAgICAgICAg
ICAgIHsKICAgICAgICAgLy8gICAgICAgICAgICAgICAgYXJndW1lbnRzOyAgLy8gVGhpcyBgYXJn
dW1lbnRzYCBzaG91bGQgcmVmZXJlbmNlIHRvIHRoZSBnZW4ncyBhcmd1bWVudHMuCiAgICAgICAg
IC8vICAgICAgICAgICAgICAgIC4uLgpAQCAtMzAzLDI4ICszMTIsMTcgQEAgQnl0ZWNvZGVHZW5l
cmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25Ob2RlKiBmdW5jdGlvbk5v
ZGUsIFVubGlua2UKICAgICAgICAgcmV0dXJuIGNhcHR1cmVzKHVpZCkgPyBWYXJLaW5kOjpTY29w
ZSA6IFZhcktpbmQ6OlN0YWNrOwogICAgIH07CiAKLSAgICBlbWl0RW50ZXIoKTsKLQotICAgIGFs
bG9jYXRlQW5kRW1pdFNjb3BlKCk7Ci0KICAgICBtX2NhbGxlZVJlZ2lzdGVyLnNldEluZGV4KENh
bGxGcmFtZVNsb3Q6OmNhbGxlZSk7CiAKICAgICBpbml0aWFsaXplUGFyYW1ldGVycyhwYXJhbWV0
ZXJzKTsKICAgICBBU1NFUlQoIShpc1NpbXBsZVBhcmFtZXRlckxpc3QgJiYgbV9yZXN0UGFyYW1l
dGVyKSk7CiAKLSAgICAvLyBCZWZvcmUgZW1pdHRpbmcgYSBzY29wZSBjcmVhdGlvbiwgZW1pdCBh
IGdlbmVyYXRvciBwcm9sb2d1ZSB0aGF0IGNvbnRhaW5zIGp1bXAgYmFzZWQgb24gYSBnZW5lcmF0
b3IncyBzdGF0ZS4KLSAgICBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJh
dG9yQm9keU1vZGUpIHsKLSAgICAgICAgbV9nZW5lcmF0b3JSZWdpc3RlciA9ICZtX3BhcmFtZXRl
cnNbMV07Ci0KLSAgICAgICAgLy8gSnVtcCB3aXRoIHN3aXRjaF9pbW0gYmFzZWQgb24gQGdlbmVy
YXRvclN0YXRlLiBXZSBkb24ndCB0YWtlIHRoZSBjb3JvdXRpbmUgc3R5bGVkIGdlbmVyYXRvciBp
bXBsZW1lbnRhdGlvbi4KLSAgICAgICAgLy8gV2hlbiBjYWxsaW5nIGBuZXh0KClgLCB3ZSB3b3Vs
ZCBsaWtlIHRvIGVudGVyIHRoZSBzYW1lIHByb2xvZ3VlIGluc3RlYWQgb2YganVtcGluZyBiYXNl
ZCBvbiB0aGUgc2F2ZWQgaW5zdHJ1Y3Rpb24gcG9pbnRlci4KLSAgICAgICAgLy8gSXQncyBzdWl0
YWxlIGZvciBpbmxpbmluZywgYmVjYXVzZSBpdCBqdXN0IGlubGluZXMgb25lIGBuZXh0YCBmdW5j
dGlvbiBpbXBsZW1lbnRhdGlvbi4KKyAgICBlbWl0RW50ZXIoKTsKIAotICAgICAgICBiZWdpbkdl
bmVyYXRvcihnZW5lcmF0b3JTdGF0ZVJlZ2lzdGVyKCkpOworICAgIGlmIChwYXJzZU1vZGUgPT0g
U291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JCb2R5TW9kZSkKKyAgICAgICAgbV9nZW5lcmF0b3JS
ZWdpc3RlciA9ICZtX3BhcmFtZXRlcnNbMV07CiAKLSAgICAgICAgLy8gSW5pdGlhbCBzdGF0ZS4K
LSAgICAgICAgZW1pdEdlbmVyYXRvclN0YXRlTGFiZWwoKTsKLSAgICB9CisgICAgYWxsb2NhdGVB
bmRFbWl0U2NvcGUoKTsKIAogICAgIGlmIChmdW5jdGlvbk5hbWVJc0luU2NvcGUoZnVuY3Rpb25O
b2RlLT5pZGVudCgpLCBmdW5jdGlvbk5vZGUtPmZ1bmN0aW9uTW9kZSgpKSkgewogICAgICAgICBB
U1NFUlQocGFyc2VNb2RlICE9IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yQm9keU1vZGUpOwpA
QCAtNjQxLDYgKzYzOSwxNiBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3Io
Vk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAgICAgICAgICAg
ZW1pdExvYWROZXdUYXJnZXRGcm9tQXJyb3dGdW5jdGlvbkxleGljYWxFbnZpcm9ubWVudCgpOwog
ICAgIH0KICAgICAKKyAgICAvLyBTZXQgdXAgdGhlIGxleGljYWwgZW52aXJvbm1lbnQgc2NvcGUg
YXMgdGhlIGdlbmVyYXRvciBmcmFtZS4gV2Ugc3RvcmUgdGhlIHNhdmVkIGFuZCByZXN1bWVkIGdl
bmVyYXRvciByZWdpc3RlcnMgaW50byB0aGlzIHNjb3BlIHdpdGggdGhlIHN5bWJvbCBrZXlzLgor
ICAgIC8vIFNpbmNlIHRoZXkgYXJlIHN5bWJvbCBrZXllZCwgdGhlc2UgdmFyaWFibGVzIGNhbm5v
dCBiZSByZWFjaGVkIGZyb20gdGhlIHVzdWFsIGNvZGUuCisgICAgaWYgKFNvdXJjZVBhcnNlTW9k
ZTo6R2VuZXJhdG9yQm9keU1vZGUgPT0gcGFyc2VNb2RlKSB7CisgICAgICAgIEFTU0VSVChtX2xl
eGljYWxFbnZpcm9ubWVudFJlZ2lzdGVyKTsKKyAgICAgICAgbV9nZW5lcmF0b3JGcmFtZVN5bWJv
bFRhYmxlLnNldCgqbV92bSwgZnVuY3Rpb25TeW1ib2xUYWJsZSk7CisgICAgICAgIG1fZ2VuZXJh
dG9yRnJhbWVTeW1ib2xUYWJsZUluZGV4ID0gc3ltYm9sVGFibGVDb25zdGFudEluZGV4OworICAg
ICAgICBlbWl0TW92ZShnZW5lcmF0b3JGcmFtZVJlZ2lzdGVyKCksIG1fbGV4aWNhbEVudmlyb25t
ZW50UmVnaXN0ZXIpOworICAgICAgICBlbWl0UHV0QnlJZChnZW5lcmF0b3JSZWdpc3RlcigpLCBw
cm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yRnJhbWVQcml2YXRlTmFtZSgp
LCBnZW5lcmF0b3JGcmFtZVJlZ2lzdGVyKCkpOworICAgIH0KKwogICAgIGJvb2wgc2hvdWxkSW5p
dGlhbGl6ZUJsb2NrU2NvcGVkRnVuY3Rpb25zID0gZmFsc2U7IC8vIFdlIGdlbmVyYXRlIHRvcC1s
ZXZlbCBmdW5jdGlvbiBkZWNsYXJhdGlvbnMgaW4gOjpnZW5lcmF0ZSgpLgogICAgIHB1c2hMZXhp
Y2FsU2NvcGUobV9zY29wZU5vZGUsIFREWkNoZWNrT3B0aW1pemF0aW9uOjpPcHRpbWl6ZSwgTmVz
dGVkU2NvcGVUeXBlOjpJc05vdE5lc3RlZCwgbnVsbHB0ciwgc2hvdWxkSW5pdGlhbGl6ZUJsb2Nr
U2NvcGVkRnVuY3Rpb25zKTsKIH0KQEAgLTM2NzMsOCArMzY4MSw3IEBAIHZvaWQgQnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXRDb21wbGV4UG9wU2NvcGVzKFJlZ2lzdGVySUQqIHNjb3BlLCBDb250cm9s
Rmxvd0NvbnRlCiAgICAgICAgICAgICBpZiAoZmxpcFRyaWVzKSB7CiAgICAgICAgICAgICAgICAg
d2hpbGUgKG1fdHJ5Q29udGV4dFN0YWNrLnNpemUoKSAhPSBmaW5hbGx5Q29udGV4dC50cnlDb250
ZXh0U3RhY2tTaXplKSB7CiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChtX3RyeUNvbnRleHRT
dGFjay5zaXplKCkgPiBmaW5hbGx5Q29udGV4dC50cnlDb250ZXh0U3RhY2tTaXplKTsKLSAgICAg
ICAgICAgICAgICAgICAgVHJ5Q29udGV4dCBjb250ZXh0ID0gbV90cnlDb250ZXh0U3RhY2subGFz
dCgpOwotICAgICAgICAgICAgICAgICAgICBtX3RyeUNvbnRleHRTdGFjay5yZW1vdmVMYXN0KCk7
CisgICAgICAgICAgICAgICAgICAgIFRyeUNvbnRleHQgY29udGV4dCA9IG1fdHJ5Q29udGV4dFN0
YWNrLnRha2VMYXN0KCk7CiAgICAgICAgICAgICAgICAgICAgIFRyeVJhbmdlIHJhbmdlOwogICAg
ICAgICAgICAgICAgICAgICByYW5nZS5zdGFydCA9IGNvbnRleHQuc3RhcnQ7CiAgICAgICAgICAg
ICAgICAgICAgIHJhbmdlLmVuZCA9IGJlZm9yZUZpbmFsbHk7CkBAIC0zOTU4LDcgKzM5NjUsNyBA
QCBzdGF0aWMgdm9pZCBwcmVwYXJlSnVtcFRhYmxlRm9yU3RyaW5nU3dpdGNoKFVubGlua2VkU3Ry
aW5nSnVtcFRhYmxlJiBqdW1wVGFibGUsCiAgICAgICAgIAogICAgICAgICBBU1NFUlQobm9kZXNb
aV0tPmlzU3RyaW5nKCkpOwogICAgICAgICBTdHJpbmdJbXBsKiBjbGF1c2UgPSBzdGF0aWNfY2Fz
dDxTdHJpbmdOb2RlKj4obm9kZXNbaV0pLT52YWx1ZSgpLmltcGwoKTsKLSAgICAgICAganVtcFRh
YmxlLm9mZnNldFRhYmxlLmFkZChjbGF1c2UsIGxhYmVsc1tpXS0+YmluZChzd2l0Y2hBZGRyZXNz
LCBzd2l0Y2hBZGRyZXNzICsgMykpOworICAgICAgICBqdW1wVGFibGUub2Zmc2V0VGFibGUuYWRk
KGNsYXVzZSwgVW5saW5rZWRTdHJpbmdKdW1wVGFibGU6Ok9mZnNldExvY2F0aW9uIHsgbGFiZWxz
W2ldLT5iaW5kKHN3aXRjaEFkZHJlc3MsIHN3aXRjaEFkZHJlc3MgKyAzKSB9KTsKICAgICB9CiB9
CiAKQEAgLTQ0NjAsMzEgKzQ0NjcsMzMgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJl
cXVpcmVPYmplY3RDb2VyY2libGUoUmVnaXN0ZXJJRCogdmFsdWUsIGNvbnN0IFN0cmkKIHZvaWQg
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRZaWVsZFBvaW50KFJlZ2lzdGVySUQqIGFyZ3VtZW50KQog
ewogICAgIFJlZlB0cjxMYWJlbD4gbWVyZ2VQb2ludCA9IG5ld0xhYmVsKCk7Ci0gICAgc2l6ZV90
IHlpZWxkUG9pbnRJbmRleCA9IG1fZ2VuZXJhdG9yUmVzdW1lTGFiZWxzLnNpemUoKTsKLSAgICBl
bWl0R2VuZXJhdG9yU3RhdGVDaGFuZ2UoeWllbGRQb2ludEluZGV4KTsKLSAgICAvLyBGaXJzdCB5
aWVsZCBwb2ludCBpcyB1c2VkIGZvciBpbml0aWFsIHNlcXVlbmNlLgotICAgIHVuc2lnbmVkIGxp
dmVDYWxsZWVMb2NhbHNJbmRleCA9IHlpZWxkUG9pbnRJbmRleCAtIDE7Ci0gICAgZW1pdFNhdmUo
bWVyZ2VQb2ludC5nZXQoKSwgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4KTsKLSAgICBlbWl0UmV0dXJu
KGFyZ3VtZW50KTsKLSAgICBlbWl0UmVzdW1lKG1lcmdlUG9pbnQuZ2V0KCksIGxpdmVDYWxsZWVM
b2NhbHNJbmRleCk7Ci19CisgICAgdW5zaWduZWQgeWllbGRQb2ludEluZGV4ID0gbV95aWVsZFBv
aW50cysrOworICAgIGVtaXRHZW5lcmF0b3JTdGF0ZUNoYW5nZSh5aWVsZFBvaW50SW5kZXggKyAx
KTsKKworICAgIC8vIFNwbGl0IHRoZSB0cnkgcmFuZ2UgaGVyZS4KKyAgICBSZWZQdHI8TGFiZWw+
IHNhdmVQb2ludCA9IGVtaXRMYWJlbChuZXdMYWJlbCgpLmdldCgpKTsKKyAgICBmb3IgKHVuc2ln
bmVkIGkgPSBtX3RyeUNvbnRleHRTdGFjay5zaXplKCk7IGktLTspIHsKKyAgICAgICAgVHJ5Q29u
dGV4dCYgY29udGV4dCA9IG1fdHJ5Q29udGV4dFN0YWNrW2ldOworICAgICAgICBUcnlSYW5nZSBy
YW5nZTsKKyAgICAgICAgcmFuZ2Uuc3RhcnQgPSBjb250ZXh0LnN0YXJ0OworICAgICAgICByYW5n
ZS5lbmQgPSBzYXZlUG9pbnQ7CisgICAgICAgIHJhbmdlLnRyeURhdGEgPSBjb250ZXh0LnRyeURh
dGE7CisgICAgICAgIG1fdHJ5UmFuZ2VzLmFwcGVuZChyYW5nZSk7CisKKyAgICAgICAgLy8gVHJ5
IHJhbmdlIHdpbGwgYmUgcmVzdGFyZWQgYXQgdGhlIG1lcmdlIHBvaW50LgorICAgICAgICBjb250
ZXh0LnN0YXJ0ID0gbWVyZ2VQb2ludDsKKyAgICB9CisgICAgVmVjdG9yPFRyeUNvbnRleHQ+IHNh
dmVkVHJ5Q29udGV4dFN0YWNrOworICAgIG1fdHJ5Q29udGV4dFN0YWNrLnN3YXAoc2F2ZWRUcnlD
b250ZXh0U3RhY2spOwogCi12b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0U2F2ZShMYWJlbCog
bWVyZ2VQb2ludCwgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4KQotewotICAgIHNpemVf
dCBiZWdpbiA9IGluc3RydWN0aW9ucygpLnNpemUoKTsKLSAgICBlbWl0T3Bjb2RlKG9wX3NhdmUp
OwotICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChtX2dlbmVyYXRvclJlZ2lzdGVyLT5pbmRleCgp
KTsKLSAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobGl2ZUNhbGxlZUxvY2Fsc0luZGV4KTsKLSAg
ICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobWVyZ2VQb2ludC0+YmluZChiZWdpbiwgaW5zdHJ1Y3Rp
b25zKCkuc2l6ZSgpKSk7Ci19CisgICAgZW1pdE9wY29kZShvcF95aWVsZCk7CisgICAgaW5zdHJ1
Y3Rpb25zKCkuYXBwZW5kKGdlbmVyYXRvckZyYW1lUmVnaXN0ZXIoKS0+aW5kZXgoKSk7CisgICAg
aW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHlpZWxkUG9pbnRJbmRleCk7CisgICAgaW5zdHJ1Y3Rpb25z
KCkuYXBwZW5kKGFyZ3VtZW50LT5pbmRleCgpKTsKIAotdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdFJlc3VtZShMYWJlbCogbWVyZ2VQb2ludCwgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0lu
ZGV4KQotewotICAgIGVtaXRHZW5lcmF0b3JTdGF0ZUxhYmVsKCk7Ci0gICAgZW1pdE9wY29kZShv
cF9yZXN1bWUpOwotICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChtX2dlbmVyYXRvclJlZ2lzdGVy
LT5pbmRleCgpKTsKLSAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobGl2ZUNhbGxlZUxvY2Fsc0lu
ZGV4KTsKLSAgICBlbWl0TGFiZWwobWVyZ2VQb2ludCk7CisgICAgLy8gUmVzdG9yZSB0aGUgdHJ5
IGNvbnRleHRzLCB3aGljaCBzdGFydCBvZmZzZXQgaXMgdXBkYXRlZCB0byB0aGUgbWVyZ2UgcG9p
bnQuCisgICAgbV90cnlDb250ZXh0U3RhY2suc3dhcChzYXZlZFRyeUNvbnRleHRTdGFjayk7Cisg
ICAgZW1pdExhYmVsKG1lcmdlUG9pbnQuZ2V0KCkpOwogfQogCiBSZWdpc3RlcklEKiBCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdFlpZWxkKFJlZ2lzdGVySUQqIGFyZ3VtZW50KQpAQCAtNDY0MSwzOSAr
NDY1MCw2IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZW5lcmF0b3JTdGF0ZUNoYW5n
ZShpbnQzMl90IHN0YXRlKQogICAgIGVtaXRQdXRCeUlkKGdlbmVyYXRvclJlZ2lzdGVyKCksIHBy
b3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JTdGF0ZVByaXZhdGVOYW1lKCks
IGNvbXBsZXRlZFN0YXRlKTsKIH0KIAotdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdlbmVy
YXRvclN0YXRlTGFiZWwoKQotewotICAgIFJlZlB0cjxMYWJlbD4gbGFiZWwgPSBuZXdMYWJlbCgp
OwotICAgIG1fZ2VuZXJhdG9yUmVzdW1lTGFiZWxzLmFwcGVuZChsYWJlbC5nZXQoKSk7Ci0gICAg
ZW1pdExhYmVsKGxhYmVsLmdldCgpKTsKLX0KLQotdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6YmVn
aW5HZW5lcmF0b3IoUmVnaXN0ZXJJRCogc3RhdGUpCi17Ci0gICAgYmVnaW5Td2l0Y2goc3RhdGUs
IFN3aXRjaEluZm86OlN3aXRjaEltbWVkaWF0ZSk7Ci19Ci0KLXZvaWQgQnl0ZWNvZGVHZW5lcmF0
b3I6OmVuZEdlbmVyYXRvcihMYWJlbCogZGVmYXVsdExhYmVsKQotewotICAgIFN3aXRjaEluZm8g
c3dpdGNoSW5mbyA9IG1fc3dpdGNoQ29udGV4dFN0YWNrLmxhc3QoKTsKLSAgICBtX3N3aXRjaENv
bnRleHRTdGFjay5yZW1vdmVMYXN0KCk7Ci0KLSAgICBpbnN0cnVjdGlvbnMoKVtzd2l0Y2hJbmZv
LmJ5dGVjb2RlT2Zmc2V0ICsgMV0gPSBtX2NvZGVCbG9jay0+bnVtYmVyT2ZTd2l0Y2hKdW1wVGFi
bGVzKCk7Ci0gICAgaW5zdHJ1Y3Rpb25zKClbc3dpdGNoSW5mby5ieXRlY29kZU9mZnNldCArIDJd
ID0gZGVmYXVsdExhYmVsLT5iaW5kKHN3aXRjaEluZm8uYnl0ZWNvZGVPZmZzZXQsIHN3aXRjaElu
Zm8uYnl0ZWNvZGVPZmZzZXQgKyAzKTsKLQotICAgIFVubGlua2VkU2ltcGxlSnVtcFRhYmxlJiBq
dW1wVGFibGUgPSBtX2NvZGVCbG9jay0+YWRkU3dpdGNoSnVtcFRhYmxlKCk7Ci0gICAgaW50MzJf
dCBzd2l0Y2hBZGRyZXNzID0gc3dpdGNoSW5mby5ieXRlY29kZU9mZnNldDsKLSAgICBqdW1wVGFi
bGUubWluID0gMDsKLSAgICBqdW1wVGFibGUuYnJhbmNoT2Zmc2V0cy5yZXNpemUobV9nZW5lcmF0
b3JSZXN1bWVMYWJlbHMuc2l6ZSgpICsgMSk7Ci0gICAganVtcFRhYmxlLmJyYW5jaE9mZnNldHMu
ZmlsbCgwKTsKLSAgICBmb3IgKHVpbnQzMl90IGkgPSAwOyBpIDwgbV9nZW5lcmF0b3JSZXN1bWVM
YWJlbHMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgLy8gV2UncmUgZW1pdHRpbmcgdGhpcyBhZnRl
ciB0aGUgY2xhdXNlIGxhYmVscyBzaG91bGQgaGF2ZSBiZWVuIGZpeGVkLCBzbwotICAgICAgICAv
LyB0aGUgbGFiZWxzIHNob3VsZCBub3QgYmUgImZvcndhcmQiIHJlZmVyZW5jZXMKLSAgICAgICAg
QVNTRVJUKCFtX2dlbmVyYXRvclJlc3VtZUxhYmVsc1tpXS0+aXNGb3J3YXJkKCkpOwotICAgICAg
ICBqdW1wVGFibGUuYWRkKGksIG1fZ2VuZXJhdG9yUmVzdW1lTGFiZWxzW2ldLT5iaW5kKHN3aXRj
aEFkZHJlc3MsIHN3aXRjaEFkZHJlc3MgKyAzKSk7Ci0gICAgfQotfQotCiB9IC8vIG5hbWVzcGFj
ZSBKU0MKIAogbmFtZXNwYWNlIFdURiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5kZXggZmZmNzEzYWEyNWU3MWRm
MmNmNGNiNTMwOGU2MTY5YTUzYWY2NTFiZS4uYjFiOTQzZGE1ZTA2N2VjZGQ0OTY3NDgxMTQ1Y2U5
ZGIwMDc1YTJhYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9CeXRlY29kZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkNv
ZGVCbG9jay5oIgogI2luY2x1ZGUgIkluc3RydWN0aW9uLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0
ZXIuaCIKKyNpbmNsdWRlICJKU0dlbmVyYXRvckZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiTGFiZWwu
aCIKICNpbmNsdWRlICJMYWJlbFNjb3BlLmgiCiAjaW5jbHVkZSAiTm9kZXMuaCIKQEAgLTY5MCwx
OCArNjkxLDE1IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGVuZFN3aXRjaCh1aW50
MzJfdCBjbGF1c2VDb3VudCwgUmVmUHRyPExhYmVsPiosIEV4cHJlc3Npb25Ob2RlKiosIExhYmVs
KiBkZWZhdWx0TGFiZWwsIGludDMyX3QgbWluLCBpbnQzMl90IHJhbmdlKTsKIAogICAgICAgICB2
b2lkIGVtaXRZaWVsZFBvaW50KFJlZ2lzdGVySUQqKTsKLSAgICAgICAgdm9pZCBlbWl0U2F2ZShM
YWJlbCogbWVyZ2VQb2ludCwgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4KTsKLSAgICAg
ICAgdm9pZCBlbWl0UmVzdW1lKExhYmVsKiBtZXJnZVBvaW50LCB1bnNpZ25lZCBsaXZlQ2FsbGVl
TG9jYWxzSW5kZXgpOwogCiAgICAgICAgIHZvaWQgZW1pdEdlbmVyYXRvclN0YXRlTGFiZWwoKTsK
ICAgICAgICAgdm9pZCBlbWl0R2VuZXJhdG9yU3RhdGVDaGFuZ2UoaW50MzJfdCBzdGF0ZSk7CiAg
ICAgICAgIFJlZ2lzdGVySUQqIGVtaXRZaWVsZChSZWdpc3RlcklEKiBhcmd1bWVudCk7CiAgICAg
ICAgIFJlZ2lzdGVySUQqIGVtaXREZWxlZ2F0ZVlpZWxkKFJlZ2lzdGVySUQqIGFyZ3VtZW50LCBU
aHJvd2FibGVFeHByZXNzaW9uRGF0YSopOwotICAgICAgICB2b2lkIGJlZ2luR2VuZXJhdG9yKFJl
Z2lzdGVySUQqKTsKLSAgICAgICAgdm9pZCBlbmRHZW5lcmF0b3IoTGFiZWwqIGRlZmF1bHRMYWJl
bCk7Ci0gICAgICAgIFJlZ2lzdGVySUQqIGdlbmVyYXRvclN0YXRlUmVnaXN0ZXIoKSB7IHJldHVy
biAmbV9wYXJhbWV0ZXJzWzJdOyB9Ci0gICAgICAgIFJlZ2lzdGVySUQqIGdlbmVyYXRvclZhbHVl
UmVnaXN0ZXIoKSB7IHJldHVybiAmbV9wYXJhbWV0ZXJzWzNdOyB9Ci0gICAgICAgIFJlZ2lzdGVy
SUQqIGdlbmVyYXRvclJlc3VtZU1vZGVSZWdpc3RlcigpIHsgcmV0dXJuICZtX3BhcmFtZXRlcnNb
NF07IH0KKyAgICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9yU3RhdGVSZWdpc3RlcigpIHsgcmV0
dXJuICZtX3BhcmFtZXRlcnNbc3RhdGljX2Nhc3Q8aW50MzJfdD4oSlNHZW5lcmF0b3JGdW5jdGlv
bjo6R2VuZXJhdG9yQXJndW1lbnQ6OlN0YXRlKV07IH0KKyAgICAgICAgUmVnaXN0ZXJJRCogZ2Vu
ZXJhdG9yVmFsdWVSZWdpc3RlcigpIHsgcmV0dXJuICZtX3BhcmFtZXRlcnNbc3RhdGljX2Nhc3Q8
aW50MzJfdD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6R2VuZXJhdG9yQXJndW1lbnQ6OlZhbHVlKV07
IH0KKyAgICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9yUmVzdW1lTW9kZVJlZ2lzdGVyKCkgeyBy
ZXR1cm4gJm1fcGFyYW1ldGVyc1tzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvckZ1bmN0
aW9uOjpHZW5lcmF0b3JBcmd1bWVudDo6UmVzdW1lTW9kZSldOyB9CisgICAgICAgIFJlZ2lzdGVy
SUQqIGdlbmVyYXRvckZyYW1lUmVnaXN0ZXIoKSB7IHJldHVybiAmbV9wYXJhbWV0ZXJzW3N0YXRp
Y19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yRnVuY3Rpb246OkdlbmVyYXRvckFyZ3VtZW50OjpG
cmFtZSldOyB9CiAKICAgICAgICAgQ29kZVR5cGUgY29kZVR5cGUoKSBjb25zdCB7IHJldHVybiBt
X2NvZGVUeXBlOyB9CiAKQEAgLTkyOSw3ICs5MjcsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIFZlY3RvcjxTd2l0Y2hJbmZvPiBtX3N3aXRjaENvbnRleHRTdGFjazsKICAgICAgICAgVmVj
dG9yPFJlZlB0cjxGb3JJbkNvbnRleHQ+PiBtX2ZvckluQ29udGV4dFN0YWNrOwogICAgICAgICBW
ZWN0b3I8VHJ5Q29udGV4dD4gbV90cnlDb250ZXh0U3RhY2s7Ci0gICAgICAgIFZlY3RvcjxSZWZQ
dHI8TGFiZWw+PiBtX2dlbmVyYXRvclJlc3VtZUxhYmVsczsKKyAgICAgICAgdW5zaWduZWQgbV95
aWVsZFBvaW50cyB7IDAgfTsKKworICAgICAgICBTdHJvbmc8U3ltYm9sVGFibGU+IG1fZ2VuZXJh
dG9yRnJhbWVTeW1ib2xUYWJsZTsKKyAgICAgICAgaW50IG1fZ2VuZXJhdG9yRnJhbWVTeW1ib2xU
YWJsZUluZGV4IHsgMCB9OworCiAgICAgICAgIGVudW0gRnVuY3Rpb25WYXJpYWJsZVR5cGUgOiB1
aW50OF90IHsgTm9ybWFsRnVuY3Rpb25WYXJpYWJsZSwgR2xvYmFsRnVuY3Rpb25WYXJpYWJsZSB9
OwogICAgICAgICBWZWN0b3I8c3RkOjpwYWlyPEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiwgRnVuY3Rp
b25WYXJpYWJsZVR5cGU+PiBtX2Z1bmN0aW9uc1RvSW5pdGlhbGl6ZTsKICAgICAgICAgYm9vbCBt
X25lZWRUb0luaXRpYWxpemVBcmd1bWVudHMgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCmluZGV4IGQwYzk5ZWZm
NWU3NGYwMmMzODNjYzUxMWRlMTdiOGQyYjZlNzdlNGYuLmJjZGFhMjcyY2I5NTA4NTg2MDhjYTJh
NzU3ZjdjNDY0ZTQ3NmRmZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKQEAgLTMzNzcsNyArMzM3Nyw2IEBAIHZvaWQgRnVu
Y3Rpb25Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVn
aXN0ZXJJRCopCiAgICAgICAgIFJlZlB0cjxMYWJlbD4gZG9uZSA9IGdlbmVyYXRvci5uZXdMYWJl
bCgpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKGRvbmUuZ2V0KCkpOwogICAgICAgICBn
ZW5lcmF0b3IuZW1pdFJldHVybihnZW5lcmF0b3IuZW1pdExvYWQobnVsbHB0ciwganNVbmRlZmlu
ZWQoKSkpOwotICAgICAgICBnZW5lcmF0b3IuZW5kR2VuZXJhdG9yKGRvbmUuZ2V0KCkpOwogICAg
ICAgICBicmVhazsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJh
dGlvbnMuY3BwCmluZGV4IGNlMjBkMjgzYWQ3MGIyNzZiZWVjOWUwZjZjOWY4NjBlOGEzZDA4MjUu
LjAwY2Q2NDFlNzdhYjBiMTkxZTNjODY0N2JmMzg3MWEyMmE5MDYwZmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcApAQCAtNDIsOCArNDIsOCBAQAogI2lu
Y2x1ZGUgIkRpcmVjdEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIkZUTEZvck9TUkVudHJ5SklUQ29k
ZS5oIgogI2luY2x1ZGUgIkZUTE9TUkVudHJ5LmgiCi0jaW5jbHVkZSAiSG9zdENhbGxSZXR1cm5W
YWx1ZS5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgorI2luY2x1ZGUgIkhvc3RDYWxsUmV0
dXJuVmFsdWUuaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpJVC5oIgog
I2luY2x1ZGUgIkpJVEV4Y2VwdGlvbnMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCmluZGV4IDFhYWYxNzcyM2ZlMWU4ODIwZjQ3N2Fi
MDg1NDg0YjVmNWYyNzY3OTcuLjJmMGU2ZjJmYzdlOTk2NDNiY2EyYTlmNDQ4MDQ4ZWQ4NjZjMjhm
YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnBy
ZXRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJl
dGVyLmNwcApAQCAtNjA5LDcgKzYwOSw3IEBAIEpTU3RyaW5nKiBJbnRlcnByZXRlcjo6c3RhY2tU
cmFjZUFzU3RyaW5nKFZNJiB2bSwgY29uc3QgVmVjdG9yPFN0YWNrRnJhbWU+JiBzdGFjCiAgICAg
cmV0dXJuIGpzU3RyaW5nKCZ2bSwgYnVpbGRlci50b1N0cmluZygpKTsKIH0KIAotQUxXQVlTX0lO
TElORSBzdGF0aWMgSGFuZGxlckluZm8qIGZpbmRFeGNlcHRpb25IYW5kbGVyKFN0YWNrVmlzaXRv
ciYgdmlzaXRvciwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENvZGVCbG9jazo6UmVxdWlyZWRIYW5k
bGVyIHJlcXVpcmVkSGFuZGxlcikKK0FMV0FZU19JTkxJTkUgc3RhdGljIEhhbmRsZXJJbmZvKiBm
aW5kRXhjZXB0aW9uSGFuZGxlcihTdGFja1Zpc2l0b3ImIHZpc2l0b3IsIENvZGVCbG9jayogY29k
ZUJsb2NrLCBSZXF1aXJlZEhhbmRsZXIgcmVxdWlyZWRIYW5kbGVyKQogewogICAgIEFTU0VSVChj
b2RlQmxvY2spOwogI2lmIEVOQUJMRShERkdfSklUKQpAQCAtNjQzLDcgKzY0Myw3IEBAIGNsYXNz
IEdldENhdGNoSGFuZGxlckZ1bmN0b3IgewogICAgICAgICBpZiAoIWNvZGVCbG9jaykKICAgICAg
ICAgICAgIHJldHVybiBTdGFja1Zpc2l0b3I6OkNvbnRpbnVlOwogCi0gICAgICAgIG1faGFuZGxl
ciA9IGZpbmRFeGNlcHRpb25IYW5kbGVyKHZpc2l0b3IsIGNvZGVCbG9jaywgQ29kZUJsb2NrOjpS
ZXF1aXJlZEhhbmRsZXI6OkNhdGNoSGFuZGxlcik7CisgICAgICAgIG1faGFuZGxlciA9IGZpbmRF
eGNlcHRpb25IYW5kbGVyKHZpc2l0b3IsIGNvZGVCbG9jaywgUmVxdWlyZWRIYW5kbGVyOjpDYXRj
aEhhbmRsZXIpOwogICAgICAgICBpZiAobV9oYW5kbGVyKQogICAgICAgICAgICAgcmV0dXJuIFN0
YWNrVmlzaXRvcjo6RG9uZTsKIApAQCAtNjg1LDcgKzY4NSw3IEBAIGNsYXNzIFVud2luZEZ1bmN0
b3IgewogICAgICAgICBtX2hhbmRsZXIgPSBudWxscHRyOwogICAgICAgICBpZiAoIW1faXNUZXJt
aW5hdGlvbikgewogICAgICAgICAgICAgaWYgKG1fY29kZUJsb2NrICYmICFpc1dlYkFzc2VtYmx5
RXhlY3V0YWJsZShtX2NvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCkpKQotICAgICAgICAgICAg
ICAgIG1faGFuZGxlciA9IGZpbmRFeGNlcHRpb25IYW5kbGVyKHZpc2l0b3IsIG1fY29kZUJsb2Nr
LCBDb2RlQmxvY2s6OlJlcXVpcmVkSGFuZGxlcjo6QW55SGFuZGxlcik7CisgICAgICAgICAgICAg
ICAgbV9oYW5kbGVyID0gZmluZEV4Y2VwdGlvbkhhbmRsZXIodmlzaXRvciwgbV9jb2RlQmxvY2ss
IFJlcXVpcmVkSGFuZGxlcjo6QW55SGFuZGxlcik7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAo
bV9oYW5kbGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVy
L0ludGVycHJldGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJw
cmV0ZXIuaAppbmRleCA3OWM3ZTUzMDFiYTgzOTZiYzAyZGMyNDVlMDgxYzdmN2EzNzM4ZTZjLi4z
ZGYwMDY3NzZmNjFhNGI1YjRiN2MyNDhlNzVjYWIxYThjMzA5MzA5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaApAQCAtNjUsNiArNjUsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICBzdHJ1Y3QgSGFuZGxlckluZm87CiAgICAgc3RydWN0IElu
c3RydWN0aW9uOwogICAgIHN0cnVjdCBQcm90b0NhbGxGcmFtZTsKKyAgICBzdHJ1Y3QgVW5saW5r
ZWRJbnN0cnVjdGlvbjsKIAogICAgIGVudW0gVW53aW5kU3RhcnQgeyBVbndpbmRGcm9tQ3VycmVu
dEZyYW1lLCBVbndpbmRGcm9tQ2FsbGVyRnJhbWUgfTsKIApAQCAtMjA3LDcgKzIwOCwxMCBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBvcGNvZGU7CiAjZW5kaWYKICAgICAg
ICAgfQotICAgICAgICAKKworICAgICAgICBPcGNvZGVJRCBnZXRPcGNvZGVJRChjb25zdCBJbnN0
cnVjdGlvbiYpOworICAgICAgICBPcGNvZGVJRCBnZXRPcGNvZGVJRChjb25zdCBVbmxpbmtlZElu
c3RydWN0aW9uJik7CisKICAgICAgICAgYm9vbCBpc09wY29kZShPcGNvZGUpOwogCiAgICAgICAg
IEpTVmFsdWUgZXhlY3V0ZShQcm9ncmFtRXhlY3V0YWJsZSosIENhbGxGcmFtZSosIEpTT2JqZWN0
KiB0aGlzT2JqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9JbnRlcnByZXRlcklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9JbnRlcnByZXRlcklubGluZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNzdjMTU0NzkwYTY3ZmI0MWNjOWUy
ZDA5YTFkYmRmZGRmYTU5YmRmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ludGVycHJldGVyL0ludGVycHJldGVySW5saW5lcy5oCkBAIC0wLDAgKzEsNDUgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwu
Y29tPgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpbmNsdWRlICJJbnN0cnVjdGlvbi5oIgorI2luY2x1ZGUgIkludGVycHJldGVyLmgi
CisjaW5jbHVkZSAiVW5saW5rZWRDb2RlQmxvY2suaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2lu
bGluZSBPcGNvZGVJRCBJbnRlcnByZXRlcjo6Z2V0T3Bjb2RlSUQoY29uc3QgSW5zdHJ1Y3Rpb24m
IGluc3RydWN0aW9uKQoreworICAgIHJldHVybiBnZXRPcGNvZGVJRChpbnN0cnVjdGlvbi51Lm9w
Y29kZSk7Cit9CisKK2lubGluZSBPcGNvZGVJRCBJbnRlcnByZXRlcjo6Z2V0T3Bjb2RlSUQoY29u
c3QgVW5saW5rZWRJbnN0cnVjdGlvbiYgaW5zdHJ1Y3Rpb24pCit7CisgICAgcmV0dXJuIGluc3Ry
dWN0aW9uLnUub3Bjb2RlOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklULmNwcAppbmRleCBiMDBkZmFjOGMxNWM1NDdkMjdmYzY2N2Y1YzQ1OTBlZDM5OWRlZTQw
Li4xMjQwNWY3ZTUwNGFiMzg5M2RkOTdkN2E5MjkxM2IwOTVhMTE1OTMyIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVQuY3BwCkBAIC0yMzUsOCArMjM1LDYgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21w
aWxlTWFpblBhc3MoKQogICAgICAgICBERUZJTkVfT1Aob3BfZ2V0X3Jlc3RfbGVuZ3RoKQogICAg
ICAgICBERUZJTkVfT1Aob3BfY2hlY2tfdGR6KQogICAgICAgICBERUZJTkVfT1Aob3BfYXNzZXJ0
KQotICAgICAgICBERUZJTkVfT1Aob3Bfc2F2ZSkKLSAgICAgICAgREVGSU5FX09QKG9wX3Jlc3Vt
ZSkKICAgICAgICAgREVGSU5FX09QKG9wX2RlYnVnKQogICAgICAgICBERUZJTkVfT1Aob3BfZGVs
X2J5X2lkKQogICAgICAgICBERUZJTkVfT1Aob3BfZGVsX2J5X3ZhbCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVC5oCmluZGV4IGJiOTdkYzM1YmRmYzAzMzk5YWEwNTEzYTljYTczNTVkMDgzMWM2MGQuLjUx
ZmNmNjBiOTlkNDBiMGU1M2RiY2QyMjNjNTY5MjAyNWYxNGVjZjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVQuaApAQCAtNDk3LDggKzQ5Nyw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lk
IGVtaXRfb3BfZ2V0X3Jlc3RfbGVuZ3RoKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1p
dF9vcF9jaGVja190ZHooSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2Fzc2Vy
dChJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3Bfc2F2ZShJbnN0cnVjdGlvbiop
OwotICAgICAgICB2b2lkIGVtaXRfb3BfcmVzdW1lKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZv
aWQgZW1pdF9vcF9kZWJ1ZyhJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZGVs
X2J5X2lkKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9kZWxfYnlfdmFsKElu
c3RydWN0aW9uKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
Y29kZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAppbmRl
eCA3ZjdjNzQ1M2JkM2QyZDUwZTE4MDE4M2YyOTczMTE1ZjExOWQ4NTJmLi4yZGJlODZjNjI0YmM4
N2ViZjcwYjgwMWUwYTJjY2NlZjY1MTViYTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wY29kZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3Bjb2Rlcy5jcHAKQEAgLTE0OTIsMTggKzE0OTIsNiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9n
ZXRfcmVzdF9sZW5ndGgoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICNlbmRpZgog
fQogCi12b2lkIEpJVDo6ZW1pdF9vcF9zYXZlKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCi17Ci0gICAgSklUU2xvd1BhdGhDYWxsIHNsb3dQYXRoQ2FsbCh0aGlzLCBjdXJyZW50SW5z
dHJ1Y3Rpb24sIHNsb3dfcGF0aF9zYXZlKTsKLSAgICBzbG93UGF0aENhbGwuY2FsbCgpOwotfQot
Ci12b2lkIEpJVDo6ZW1pdF9vcF9yZXN1bWUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKLXsKLSAgICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0
cnVjdGlvbiwgc2xvd19wYXRoX3Jlc3VtZSk7Ci0gICAgc2xvd1BhdGhDYWxsLmNhbGwoKTsKLX0K
LQogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBFTkFCTEUoSklUKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCmluZGV4
IDA0YWY3ZmE3OWIzYjVkNWEzYzg3YjUxOTNkNmMxMTc3OTBiZWY1ZTQuLmQ4NWM3ZGUwNDA3NDk0
MmEwYjc4NmYxMzkzZDljMDQ4NGQ4YmQzZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KQEAgLTE3MDksMTYgKzE3MDksOCBA
QCBfbGxpbnRfb3BfYXNzZXJ0OgogICAgIGRpc3BhdGNoKDMpCiAKIAotX2xsaW50X29wX3NhdmU6
Ci0gICAgdHJhY2VFeGVjdXRpb24oKQotICAgIGNhbGxPcGNvZGVTbG93UGF0aChfc2xvd19wYXRo
X3NhdmUpCi0gICAgZGlzcGF0Y2goNCkKLQotCi1fbGxpbnRfb3BfcmVzdW1lOgotICAgIHRyYWNl
RXhlY3V0aW9uKCkKLSAgICBjYWxsT3Bjb2RlU2xvd1BhdGgoX3Nsb3dfcGF0aF9yZXN1bWUpCi0g
ICAgZGlzcGF0Y2goMykKK19sbGludF9vcF95aWVsZDoKKyAgICBub3RTdXBwb3J0ZWQoKQogCiAK
IF9sbGludF9vcF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudDoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvUGFyc2VyLmNwcAppbmRleCBlYmVhOThlNGVlMTNmYTEyYmUwOTZiYTkyZjRkNDE5
ZTM0Y2VkMTcwLi4yNjE3NDVhMTkwMzE3ZGU3NTkxMmUzYTkyM2ZhOWYyODg3NDg2M2Q2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCkBAIC0yNjAsNyArMjYwLDcgQEAg
U3RyaW5nIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUlubmVyKGNvbnN0IElkZW50aWZpZXImIGNh
bGxlZU5hbWUsIFNvdXJjZVBhcnNlTW8KICAgICBpZiAobV9sZXhlci0+aXNSZXBhcnNpbmdGdW5j
dGlvbigpKSB7CiAgICAgICAgIFBhcnNlckZ1bmN0aW9uSW5mbzxBU1RCdWlsZGVyPiBmdW5jdGlv
bkluZm87CiAgICAgICAgIGlmIChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0
b3JCb2R5TW9kZSkKLSAgICAgICAgICAgIG1fcGFyYW1ldGVycyA9IGNyZWF0ZUdlbmVyYXRvclBh
cmFtZXRlcnMoY29udGV4dCk7CisgICAgICAgICAgICBtX3BhcmFtZXRlcnMgPSBjcmVhdGVHZW5l
cmF0b3JQYXJhbWV0ZXJzKGNvbnRleHQsIGZ1bmN0aW9uSW5mby5wYXJhbWV0ZXJDb3VudCk7CiAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgIG1fcGFyYW1ldGVycyA9IHBhcnNlRnVuY3Rpb25QYXJh
bWV0ZXJzKGNvbnRleHQsIHBhcnNlTW9kZSwgZnVuY3Rpb25JbmZvKTsKIApAQCAtNTEyLDEwICs1
MTIsOSBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTb3VyY2VFbGVtZW50cyBQ
YXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VHZW5lcmF0bwogCiAgICAgUGFyc2VyRnVuY3Rpb25JbmZv
PFRyZWVCdWlsZGVyPiBpbmZvOwogICAgIGluZm8ubmFtZSA9ICZtX3ZtLT5wcm9wZXJ0eU5hbWVz
LT5udWxsSWRlbnRpZmllcjsKLSAgICBjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKGNvbnRleHQp
OworICAgIGNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMoY29udGV4dCwgaW5mby5wYXJhbWV0ZXJD
b3VudCk7CiAgICAgaW5mby5zdGFydE9mZnNldCA9IHBhcmFtZXRlcnNTdGFydDsKICAgICBpbmZv
LnN0YXJ0TGluZSA9IHRva2VuTGluZSgpOwotICAgIGluZm8ucGFyYW1ldGVyQ291bnQgPSA0OyAv
LyBnZW5lcmF0b3IsIHN0YXRlLCB2YWx1ZSwgcmVzdW1lIG1vZGUKIAogICAgIHsKICAgICAgICAg
QXV0b1BvcFNjb3BlUmVmIGdlbmVyYXRvckJvZHlTY29wZSh0aGlzLCBwdXNoU2NvcGUoKSk7CkBA
IC0xOTAzLDMyICsxOTAyLDMwIEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+IHRlbXBs
YXRlIDxjbGFzcyBUcmVlQnVpbGRlciwgY2xhc3MgRnVuY3Rpb25JbmZvVHlwCiB9CiAKIHRlbXBs
YXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+Ci10ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IHR5
cGVuYW1lIFRyZWVCdWlsZGVyOjpGb3JtYWxQYXJhbWV0ZXJMaXN0IFBhcnNlcjxMZXhlclR5cGU+
OjpjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKFRyZWVCdWlsZGVyJiBjb250ZXh0KQordGVtcGxh
dGUgPGNsYXNzIFRyZWVCdWlsZGVyPiB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6Rm9ybWFsUGFyYW1l
dGVyTGlzdCBQYXJzZXI8TGV4ZXJUeXBlPjo6Y3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhUcmVl
QnVpbGRlciYgY29udGV4dCwgdW5zaWduZWQmIHBhcmFtZXRlckNvdW50KQogewogICAgIGF1dG8g
cGFyYW1ldGVycyA9IGNvbnRleHQuY3JlYXRlRm9ybWFsUGFyYW1ldGVyTGlzdCgpOwogCiAgICAg
SlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CiAgICAgSlNUZXh0UG9z
aXRpb24gcG9zaXRpb24gPSB0b2tlblN0YXJ0UG9zaXRpb24oKTsKIAotICAgIC8vIEBnZW5lcmF0
b3IKLSAgICBkZWNsYXJlUGFyYW1ldGVyKCZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFt
ZXMoKS5nZW5lcmF0b3JQcml2YXRlTmFtZSgpKTsKLSAgICBhdXRvIGdlbmVyYXRvciA9IGNvbnRl
eHQuY3JlYXRlQmluZGluZ0xvY2F0aW9uKGxvY2F0aW9uLCBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5i
dWlsdGluTmFtZXMoKS5nZW5lcmF0b3JQcml2YXRlTmFtZSgpLCBwb3NpdGlvbiwgcG9zaXRpb24s
IEFzc2lnbm1lbnRDb250ZXh0OjpEZWNsYXJhdGlvblN0YXRlbWVudCk7Ci0gICAgY29udGV4dC5h
cHBlbmRQYXJhbWV0ZXIocGFyYW1ldGVycywgZ2VuZXJhdG9yLCAwKTsKKyAgICBhdXRvIGFkZFBh
cmFtZXRlciA9IFsmXShjb25zdCBJZGVudGlmaWVyJiBuYW1lKSB7CisgICAgICAgIGRlY2xhcmVQ
YXJhbWV0ZXIoJm5hbWUpOworICAgICAgICBhdXRvIGJpbmRpbmcgPSBjb250ZXh0LmNyZWF0ZUJp
bmRpbmdMb2NhdGlvbihsb2NhdGlvbiwgbmFtZSwgcG9zaXRpb24sIHBvc2l0aW9uLCBBc3NpZ25t
ZW50Q29udGV4dDo6RGVjbGFyYXRpb25TdGF0ZW1lbnQpOworICAgICAgICBjb250ZXh0LmFwcGVu
ZFBhcmFtZXRlcihwYXJhbWV0ZXJzLCBiaW5kaW5nLCAwKTsKKyAgICAgICAgKytwYXJhbWV0ZXJD
b3VudDsKKyAgICB9OwogCisgICAgLy8gQGdlbmVyYXRvcgorICAgIGFkZFBhcmFtZXRlcihtX3Zt
LT5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JQcml2YXRlTmFtZSgpKTsK
ICAgICAvLyBAZ2VuZXJhdG9yU3RhdGUKLSAgICBkZWNsYXJlUGFyYW1ldGVyKCZtX3ZtLT5wcm9w
ZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JTdGF0ZVByaXZhdGVOYW1lKCkpOwot
ICAgIGF1dG8gZ2VuZXJhdG9yU3RhdGUgPSBjb250ZXh0LmNyZWF0ZUJpbmRpbmdMb2NhdGlvbihs
b2NhdGlvbiwgbV92bS0+cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yU3Rh
dGVQcml2YXRlTmFtZSgpLCBwb3NpdGlvbiwgcG9zaXRpb24sIEFzc2lnbm1lbnRDb250ZXh0OjpE
ZWNsYXJhdGlvblN0YXRlbWVudCk7Ci0gICAgY29udGV4dC5hcHBlbmRQYXJhbWV0ZXIocGFyYW1l
dGVycywgZ2VuZXJhdG9yU3RhdGUsIDApOwotCisgICAgYWRkUGFyYW1ldGVyKG1fdm0tPnByb3Bl
cnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclN0YXRlUHJpdmF0ZU5hbWUoKSk7CiAg
ICAgLy8gQGdlbmVyYXRvclZhbHVlCi0gICAgZGVjbGFyZVBhcmFtZXRlcigmbV92bS0+cHJvcGVy
dHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yVmFsdWVQcml2YXRlTmFtZSgpKTsKLSAg
ICBhdXRvIGdlbmVyYXRvclZhbHVlID0gY29udGV4dC5jcmVhdGVCaW5kaW5nTG9jYXRpb24obG9j
YXRpb24sIG1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclZhbHVl
UHJpdmF0ZU5hbWUoKSwgcG9zaXRpb24sIHBvc2l0aW9uLCBBc3NpZ25tZW50Q29udGV4dDo6RGVj
bGFyYXRpb25TdGF0ZW1lbnQpOwotICAgIGNvbnRleHQuYXBwZW5kUGFyYW1ldGVyKHBhcmFtZXRl
cnMsIGdlbmVyYXRvclZhbHVlLCAwKTsKLQorICAgIGFkZFBhcmFtZXRlcihtX3ZtLT5wcm9wZXJ0
eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JWYWx1ZVByaXZhdGVOYW1lKCkpOwogICAg
IC8vIEBnZW5lcmF0b3JSZXN1bWVNb2RlCi0gICAgZGVjbGFyZVBhcmFtZXRlcigmbV92bS0+cHJv
cGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yUmVzdW1lTW9kZVByaXZhdGVOYW1l
KCkpOwotICAgIGF1dG8gZ2VuZXJhdG9yUmVzdW1lTW9kZSA9IGNvbnRleHQuY3JlYXRlQmluZGlu
Z0xvY2F0aW9uKGxvY2F0aW9uLCBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5n
ZW5lcmF0b3JSZXN1bWVNb2RlUHJpdmF0ZU5hbWUoKSwgcG9zaXRpb24sIHBvc2l0aW9uLCBBc3Np
Z25tZW50Q29udGV4dDo6RGVjbGFyYXRpb25TdGF0ZW1lbnQpOwotICAgIGNvbnRleHQuYXBwZW5k
UGFyYW1ldGVyKHBhcmFtZXRlcnMsIGdlbmVyYXRvclJlc3VtZU1vZGUsIDApOworICAgIGFkZFBh
cmFtZXRlcihtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JSZXN1
bWVNb2RlUHJpdmF0ZU5hbWUoKSk7CisgICAgLy8gQGdlbmVyYXRvckZyYW1lCisgICAgYWRkUGFy
YW1ldGVyKG1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvckZyYW1l
UHJpdmF0ZU5hbWUoKSk7CiAKICAgICByZXR1cm4gcGFyYW1ldGVyczsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1BhcnNlci5oCmluZGV4IDM5MjA0MDRlOGJhNTIwYjIyZTRlY2QyNzc4MWMx
M2RmODE5MDc0MzMuLjUwZTEzOTFiNWZkMDNkZDVlNzc4YjhmZGI1OTIzYWE3OThhZWQxMjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaApAQCAtMTQyNiw3ICsxNDI2LDcgQEAg
Y2xhc3MgUGFyc2VyIHsKICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNBcnJvd0Z1bmN0aW9uUGFy
YW1ldGVycygpOwogICAgIAogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlciwgY2xhc3Mg
RnVuY3Rpb25JbmZvVHlwZT4gTkVWRVJfSU5MSU5FIHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpGb3Jt
YWxQYXJhbWV0ZXJMaXN0IHBhcnNlRnVuY3Rpb25QYXJhbWV0ZXJzKFRyZWVCdWlsZGVyJiwgU291
cmNlUGFyc2VNb2RlLCBGdW5jdGlvbkluZm9UeXBlJik7Ci0gICAgdGVtcGxhdGUgPGNsYXNzIFRy
ZWVCdWlsZGVyPiBORVZFUl9JTkxJTkUgdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkZvcm1hbFBhcmFt
ZXRlckxpc3QgY3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhUcmVlQnVpbGRlciYpOworICAgIHRl
bXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gTkVWRVJfSU5MSU5FIHR5cGVuYW1lIFRyZWVCdWls
ZGVyOjpGb3JtYWxQYXJhbWV0ZXJMaXN0IGNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMoVHJlZUJ1
aWxkZXImLCB1bnNpZ25lZCYgcGFyYW1ldGVyQ291bnQpOwogCiAgICAgdGVtcGxhdGUgPGNsYXNz
IFRyZWVCdWlsZGVyPiBORVZFUl9JTkxJTkUgVHJlZUNsYXNzRXhwcmVzc2lvbiBwYXJzZUNsYXNz
KFRyZWVCdWlsZGVyJiwgRnVuY3Rpb25OYW1lUmVxdWlyZW1lbnRzLCBQYXJzZXJDbGFzc0luZm88
VHJlZUJ1aWxkZXI+Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbW1vblNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21tb25TbG93UGF0aHMuY3BwCmluZGV4IGE5Yjc1NWU2YzlhZTliOThhNjIyOTM1NDZlZTU3Y2E4
MWVjOWMzMmMuLjJlODY4ZGNiMmQ3MWZlN2NmMjhlOTUwZjA1Yzc1OGJhODA1Y2MzMjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcApA
QCAtMzcsNyArMzcsNiBAQAogI2luY2x1ZGUgIkVycm9yLmgiCiAjaW5jbHVkZSAiRXJyb3JIYW5k
bGluZ1Njb3BlLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uRnV6ei5oIgotI2luY2x1ZGUgIkdlbmVy
YXRvckZyYW1lLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiSG9zdENh
bGxSZXR1cm5WYWx1ZS5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCkBAIC03NTMsMzggKzc1
Miw2IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9hc3NlcnQpCiAgICAgRU5EKCk7CiB9CiAK
LVNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9zYXZlKQotewotICAgIC8vIE9ubHkgc2F2ZSB2YXJp
YWJsZXMgYW5kIHRlbXBvcmFyeSByZWdpc3RlcnMuIFRoZSBzY29wZSByZWdpc3RlcnMgYXJlIGlu
Y2x1ZGVkIGluIHRoZW0uCi0gICAgLy8gQnV0IHBhcmFtZXRlcnMgYXJlIG5vdCBpbmNsdWRlZC4g
QmVjYXVzZSB0aGUgZ2VuZXJhdG9yIGltcGxlbWVudGF0aW9uIHJlcGxhY2VzIHRoZSB2YWx1ZXMg
b2YgcGFyYW1ldGVycyBvbiBlYWNoIGdlbmVyYXRvci5uZXh0KCkgY2FsbC4KLSAgICBCRUdJTigp
OwotICAgIEpTVmFsdWUgZ2VuZXJhdG9yID0gT1AoMSkuanNWYWx1ZSgpOwotICAgIEdlbmVyYXRv
ckZyYW1lKiBmcmFtZSA9IG51bGxwdHI7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IGdlbmVyYXRvci5n
ZXQoZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvckZy
YW1lUHJpdmF0ZU5hbWUoKSk7Ci0gICAgaWYgKCF2YWx1ZS5pc051bGwoKSkKLSAgICAgICAgZnJh
bWUgPSBqc0Nhc3Q8R2VuZXJhdG9yRnJhbWUqPih2YWx1ZSk7Ci0gICAgZWxzZSB7Ci0gICAgICAg
IC8vIEZJWE1FOiBPbmNlIEpTR2VuZXJhdG9yIHNwZWNpYWxpemVkIG9iamVjdCBpcyBpbnRyb2R1
Y2VkLCB0aGlzIEdlbmVyYXRvckZyYW1lIHNob3VsZCBiZSBlbWJlZGVkIGludG8gaXQgdG8gYXZv
aWQgYWxsb2NhdGlvbnMuCi0gICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNTE1NDUKLSAgICAgICAgZnJhbWUgPSBHZW5lcmF0b3JGcmFtZTo6Y3JlYXRl
KGV4ZWMtPnZtKCksICBleGVjLT5jb2RlQmxvY2soKS0+bnVtQ2FsbGVlTG9jYWxzKCkpOwotICAg
ICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChnZW5lcmF0b3IsIHRydWUsIFB1dFByb3BlcnR5U2xv
dDo6UHV0QnlJZCk7Ci0gICAgICAgIGFzT2JqZWN0KGdlbmVyYXRvciktPm1ldGhvZFRhYmxlKGV4
ZWMtPnZtKCkpLT5wdXQoYXNPYmplY3QoZ2VuZXJhdG9yKSwgZXhlYywgZXhlYy0+cHJvcGVydHlO
YW1lcygpLmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvckZyYW1lUHJpdmF0ZU5hbWUoKSwgZnJhbWUs
IHNsb3QpOwotICAgIH0KLSAgICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSBwY1sy
XS51LnVuc2lnbmVkVmFsdWU7Ci0gICAgZnJhbWUtPnNhdmUoZXhlYywgZXhlYy0+Y29kZUJsb2Nr
KCktPmxpdmVDYWxsZWVMb2NhbHNBdFlpZWxkKGxpdmVDYWxsZWVMb2NhbHNJbmRleCkpOwotICAg
IEVORCgpOwotfQotCi1TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcmVzdW1lKQotewotICAgIEJF
R0lOKCk7Ci0gICAgSlNWYWx1ZSBnZW5lcmF0b3IgPSBPUCgxKS5qc1ZhbHVlKCk7Ci0gICAgR2Vu
ZXJhdG9yRnJhbWUqIGZyYW1lID0ganNDYXN0PEdlbmVyYXRvckZyYW1lKj4oZ2VuZXJhdG9yLmdl
dChleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yRnJh
bWVQcml2YXRlTmFtZSgpKSk7Ci0gICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4ID0g
cGNbMl0udS51bnNpZ25lZFZhbHVlOwotICAgIGZyYW1lLT5yZXN1bWUoZXhlYywgZXhlYy0+Y29k
ZUJsb2NrKCktPmxpdmVDYWxsZWVMb2NhbHNBdFlpZWxkKGxpdmVDYWxsZWVMb2NhbHNJbmRleCkp
OwotICAgIEVORCgpOwotfQotCiBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfY3JlYXRlX2xleGlj
YWxfZW52aXJvbm1lbnQpCiB7CiAgICAgQkVHSU4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKaW5kZXggNjQwMWE2MTRkNTYxMTY2MzU2OWIx
OGEwMjcyYjI4YWMzNTI4NmE4Mi4uM2Q5YzE1ZjVhZjBjNzU3ZGRhMTA1MzM5MTk5MGY1NDYzODg2
ODFiNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xv
d1BhdGhzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1Bh
dGhzLmgKQEAgLTI0OCw4ICsyNDgsNiBAQCBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRo
X25leHRfZ2VuZXJpY19lbnVtZXJhdG9yX3BuYW1lKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChz
bG93X3BhdGhfdG9faW5kZXhfc3RyaW5nKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3Bh
dGhfcHJvZmlsZV90eXBlX2NsZWFyX2xvZyk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19w
YXRoX2Fzc2VydCk7Ci1TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3NhdmUpOwotU0xP
V19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9yZXN1bWUpOwogU0xPV19QQVRIX0hJRERFTl9E
RUNMKHNsb3dfcGF0aF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9ubWVudCk7CiBTTE9XX1BBVEhfSElE
REVOX0RFQ0woc2xvd19wYXRoX3B1c2hfd2l0aF9zY29wZSk7CiBTTE9XX1BBVEhfSElEREVOX0RF
Q0woc2xvd19wYXRoX3Jlc29sdmVfc2NvcGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJhbWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvR2VuZXJhdG9yRnJhbWUuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBlZjZlYTdhMTAwMjU4YzNlY2UwNGRhYWI0M2JkYWE4NTFlYzhmNzE1Li4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0dlbmVyYXRvckZyYW1lLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDk3ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21h
aWwuY29tPi4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkdlbmVy
YXRvckZyYW1lLmgiCi0KLSNpbmNsdWRlICJDb2RlQmxvY2suaCIKLSNpbmNsdWRlICJIZWFwSXRl
cmF0aW9uU2NvcGUuaCIKLSNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgotI2luY2x1ZGUg
IkpTQ2VsbElubGluZXMuaCIKLSNpbmNsdWRlICJTbG90VmlzaXRvcklubGluZXMuaCIKLSNpbmNs
dWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCi0KLW5hbWVzcGFjZSBKU0MgewotCi1jb25zdCBDbGFz
c0luZm8gR2VuZXJhdG9yRnJhbWU6OnNfaW5mbyA9IHsgIkdlbmVyYXRvckZyYW1lIiwgbnVsbHB0
ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShHZW5lcmF0b3JGcmFtZSkgfTsKLQotR2Vu
ZXJhdG9yRnJhbWU6OkdlbmVyYXRvckZyYW1lKFZNJiB2bSwgc2l6ZV90IG51bWJlck9mQ2FsbGVl
TG9jYWxzKQotICAgIDogQmFzZSh2bSwgdm0uZ2VuZXJhdG9yRnJhbWVTdHJ1Y3R1cmUuZ2V0KCkp
Ci0gICAgLCBtX251bWJlck9mQ2FsbGVlTG9jYWxzKG51bWJlck9mQ2FsbGVlTG9jYWxzKQotewot
fQotCi12b2lkIEdlbmVyYXRvckZyYW1lOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCi17Ci0gICAg
QmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9u
dW1iZXJPZkNhbGxlZUxvY2FsczsgKytpKQotICAgICAgICBsb2NhbEF0KGkpLmNsZWFyKCk7Ci19
Ci0KLVN0cnVjdHVyZSogR2VuZXJhdG9yRnJhbWU6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQotewotICAgIHJl
dHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJ
bmZvKENlbGxUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Ci19Ci0KLUdlbmVyYXRvckZy
YW1lKiBHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlKFZNJiB2bSwgc2l6ZV90IG51bWJlck9mTG9jYWxz
KQotewotICAgIEdlbmVyYXRvckZyYW1lKiByZXN1bHQgPQotICAgICAgICBuZXcgKAotICAgICAg
ICAgICAgTm90TnVsbCwKLSAgICAgICAgICAgIGFsbG9jYXRlQ2VsbDxHZW5lcmF0b3JGcmFtZT4o
dm0uaGVhcCwgYWxsb2NhdGlvblNpemVGb3JMb2NhbHMobnVtYmVyT2ZMb2NhbHMpKSkKLSAgICAg
ICAgR2VuZXJhdG9yRnJhbWUodm0sIG51bWJlck9mTG9jYWxzKTsKLSAgICByZXN1bHQtPmZpbmlz
aENyZWF0aW9uKHZtKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi12b2lkIEdlbmVyYXRvckZy
YW1lOjpzYXZlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZUNhbGxl
ZUxvY2FscykKLXsKLSAgICAvLyBPbmx5IHNhdmUgY2FsbGVlIGxvY2Fscy4KLSAgICAvLyBFdmVy
eSB0aW1lIGEgZ2VuZXJhdG9yIGlzIGNhbGxlZCAob3IgcmVzdW1lZCksIHBhcmFtZXRlcnMgc2hv
dWxkIGJlIHJlcGxhY2VkLgotICAgIEFTU0VSVChsaXZlQ2FsbGVlTG9jYWxzLm51bUJpdHMoKSA8
PSBtX251bWJlck9mQ2FsbGVlTG9jYWxzKTsKLSAgICBsaXZlQ2FsbGVlTG9jYWxzLmZvckVhY2hT
ZXRCaXQoWyZdKHNpemVfdCBpbmRleCkgewotICAgICAgICBsb2NhbEF0KGluZGV4KS5zZXQoZXhl
Yy0+dm0oKSwgdGhpcywgZXhlYy0+dW5jaGVja2VkUih2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChp
bmRleCkpLmpzVmFsdWUoKSk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgR2VuZXJhdG9yRnJhbWU6OnJl
c3VtZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEZhc3RCaXRWZWN0b3ImIGxpdmVDYWxsZWVMb2Nh
bHMpCi17Ci0gICAgLy8gT25seSByZXN1bWUgY2FsbGVlIGxvY2Fscy4KLSAgICAvLyBFdmVyeSB0
aW1lIGEgZ2VuZXJhdG9yIGlzIGNhbGxlZCAob3IgcmVzdW1lZCksIHBhcmFtZXRlcnMgc2hvdWxk
IGJlIHJlcGxhY2VkLgotICAgIGxpdmVDYWxsZWVMb2NhbHMuZm9yRWFjaFNldEJpdChbJl0oc2l6
ZV90IGluZGV4KSB7Ci0gICAgICAgIGV4ZWMtPnVuY2hlY2tlZFIodmlydHVhbFJlZ2lzdGVyRm9y
TG9jYWwoaW5kZXgpKSA9IGxvY2FsQXQoaW5kZXgpLmdldCgpOwotICAgICAgICBsb2NhbEF0KGlu
ZGV4KS5jbGVhcigpOwotICAgIH0pOwotfQotCi12b2lkIEdlbmVyYXRvckZyYW1lOjp2aXNpdENo
aWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCi17Ci0gICAgR2VuZXJh
dG9yRnJhbWUqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8R2VuZXJhdG9yRnJhbWUqPihjZWxsKTsKLSAg
ICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwotICAgIC8vIFNpbmNl
IG9ubHkgdHJ1ZSBjZWxsIHBvaW50ZXJzIGFyZSBzdG9yZWQgYXMgYSBjZWxsLCB3ZSBjYW4gc2Fm
ZWx5IG1hcmsgdGhlbS4KLSAgICB2aXNpdG9yLmFwcGVuZFZhbHVlcyh0aGlzT2JqZWN0LT5sb2Nh
bHMoKSwgdGhpc09iamVjdC0+bV9udW1iZXJPZkNhbGxlZUxvY2Fscyk7Ci19Ci0KLX0gLy8gbmFt
ZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2Vu
ZXJhdG9yRnJhbWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZy
YW1lLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNkNTQ1YjE0N2RkNGFiZmIyYmJi
OWI1YTcxOTRlOGY3NDg0MWM0OWEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJhbWUu
aAorKysgL2Rldi9udWxsCkBAIC0xLDkwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lm
bmRlZiBHZW5lcmF0b3JGcmFtZV9oCi0jZGVmaW5lIEdlbmVyYXRvckZyYW1lX2gKLQotI2luY2x1
ZGUgIkpTQ2VsbC5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0Qml0VmVjdG9yLmg+Ci0KLW5hbWVzcGFj
ZSBKU0MgewotCi1jbGFzcyBHZW5lcmF0b3JGcmFtZSA6IHB1YmxpYyBKU0NlbGwgewotICAgIGZy
aWVuZCBjbGFzcyBKSVQ7Ci0jaWYgRU5BQkxFKERGR19KSVQpCi0gICAgZnJpZW5kIGNsYXNzIERG
Rzo6U3BlY3VsYXRpdmVKSVQ7Ci0gICAgZnJpZW5kIGNsYXNzIERGRzo6SklUQ29tcGlsZXI7Ci0j
ZW5kaWYKLSAgICBmcmllbmQgY2xhc3MgVk07Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBKU0NlbGwg
QmFzZTsKLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBTdHJ1Y3R1
cmVJc0ltbW9ydGFsIHwgQmFzZTo6U3RydWN0dXJlRmxhZ3M7Ci0KLSAgICBERUNMQVJFX0VYUE9S
VF9JTkZPOwotCi0gICAgc3RhdGljIEdlbmVyYXRvckZyYW1lKiBjcmVhdGUoVk0mLCBzaXplX3Qg
bnVtYmVyT2ZDYWxsZWVMb2NhbHMpOwotCi0gICAgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiog
bG9jYWxzKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8V3JpdGVCYXJyaWVy
QmFzZTxVbmtub3duPio+KGJpdHdpc2VfY2FzdDxjaGFyKj4odGhpcykgKyBvZmZzZXRPZkxvY2Fs
cygpKTsKLSAgICB9Ci0KLSAgICBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+JiBsb2NhbEF0KHNp
emVfdCBpbmRleCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChpbmRleCA8IG1fbnVtYmVyT2ZDYWxs
ZWVMb2NhbHMpOwotICAgICAgICByZXR1cm4gbG9jYWxzKClbaW5kZXhdOwotICAgIH0KLQotICAg
IHN0YXRpYyBzaXplX3Qgb2Zmc2V0T2ZMb2NhbHMoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIFdU
Rjo6cm91bmRVcFRvTXVsdGlwbGVPZjxzaXplb2YoV3JpdGVCYXJyaWVyPFVua25vd24+KT4oc2l6
ZW9mKEdlbmVyYXRvckZyYW1lKSk7Ci0gICAgfQotCi0gICAgc3RhdGljIHNpemVfdCBhbGxvY2F0
aW9uU2l6ZUZvckxvY2Fscyh1bnNpZ25lZCBudW1iZXJPZkxvY2FscykKLSAgICB7Ci0gICAgICAg
IHJldHVybiBvZmZzZXRPZkxvY2FscygpICsgbnVtYmVyT2ZMb2NhbHMgKiBzaXplb2YoV3JpdGVC
YXJyaWVyPFVua25vd24+KTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVT
dHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgcHJvdG90eXBlKTsKLQotICAg
IHZvaWQgc2F2ZShFeGVjU3RhdGUqLCBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlQ2FsbGVlTG9j
YWxzKTsKLSAgICB2b2lkIHJlc3VtZShFeGVjU3RhdGUqLCBjb25zdCBGYXN0Qml0VmVjdG9yJiBs
aXZlQ2FsbGVlTG9jYWxzKTsKLQotcHJpdmF0ZToKLSAgICBHZW5lcmF0b3JGcmFtZShWTSYsIHNp
emVfdCBudW1iZXJPZkNhbGxlZUxvY2Fscyk7Ci0KLSAgICBzaXplX3QgbV9udW1iZXJPZkNhbGxl
ZUxvY2FsczsKLQotICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7Ci0KLSAg
ICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7Ci0KLXByb3RlY3RlZDoKLSAgICBzdGF0aWMgdm9p
ZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7Ci19OwotCi19IC8vIG5hbWVz
cGFjZSBKU0MKLQotI2VuZGlmIC8vIEdlbmVyYXRvckZyYW1lX2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJhdG9yRnVuY3Rpb24uaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJhdG9yRnVuY3Rpb24uaAppbmRleCAzNmY2MWM1
ZjIwZjU2YmVmZDZjNTU3ODQyYjE5ZTM5YjE5YTNhOTE5Li5hMWNiYWQ5NDZkYzU2ODI5ZWQxYTIx
NTU3OTBiNDQwYThkZjQzMDA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dlbmVyYXRvckZ1bmN0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHZW5lcmF0b3JGdW5jdGlvbi5oCkBAIC01NSw2ICs1NSwxNiBAQCBjbGFzcyBKU0dl
bmVyYXRvckZ1bmN0aW9uIDogcHVibGljIEpTRnVuY3Rpb24gewogICAgICAgICBFeGVjdXRpbmcg
PSAtMiwKICAgICB9OwogCisgICAgLy8gW3RoaXNdLCBAZ2VuZXJhdG9yLCBAZ2VuZXJhdG9yU3Rh
dGUsIEBnZW5lcmF0b3JWYWx1ZSwgQGdlbmVyYXRvclJlc3VtZU1vZGUsIEBnZW5lcmF0b3JGcmFt
ZS4KKyAgICBlbnVtIGNsYXNzIEdlbmVyYXRvckFyZ3VtZW50IDogaW50MzJfdCB7CisgICAgICAg
IFRoaXNWYWx1ZSA9IDAsCisgICAgICAgIEdlbmVyYXRvciA9IDEsCisgICAgICAgIFN0YXRlID0g
MiwKKyAgICAgICAgVmFsdWUgPSAzLAorICAgICAgICBSZXN1bWVNb2RlID0gNCwKKyAgICAgICAg
RnJhbWUgPSA1LAorICAgIH07CisKICAgICBjb25zdCBzdGF0aWMgdW5zaWduZWQgU3RydWN0dXJl
RmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKIAogICAgIERFQ0xBUkVfRVhQT1JUX0lORk87
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXggODgxMzFiZjViMzA5MGFiZGFl
NGI5OTQ1MWI0MTcxY2I1ZmUyYzQ1Yy4uYzMwMTIyYzVhZjMzYzgwN2ZlOWE2NWExOGZlNmY4NTQ3
MGVkMGE2ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtNDYsNyArNDYs
NiBAQAogI2luY2x1ZGUgIkZUTFRodW5rcy5oIgogI2luY2x1ZGUgIkZ1bmN0aW9uQ29uc3RydWN0
b3IuaCIKICNpbmNsdWRlICJHQ0FjdGl2aXR5Q2FsbGJhY2suaCIKLSNpbmNsdWRlICJHZW5lcmF0
b3JGcmFtZS5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIkhlYXAuaCIK
ICNpbmNsdWRlICJIZWFwSXRlcmF0aW9uU2NvcGUuaCIKQEAgLTI0MCw3ICsyMzksNiBAQCBWTTo6
Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgaW5mZXJyZWRUeXBlU3Ry
dWN0dXJlLnNldCgqdGhpcywgSW5mZXJyZWRUeXBlOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAs
IGpzTnVsbCgpKSk7CiAgICAgaW5mZXJyZWRUeXBlVGFibGVTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBJ
bmZlcnJlZFR5cGVUYWJsZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwog
ICAgIGZ1bmN0aW9uUmFyZURhdGFTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBGdW5jdGlvblJhcmVEYXRh
OjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7Ci0gICAgZ2VuZXJhdG9yRnJh
bWVTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlU3RydWN0dXJlKCp0
aGlzLCAwLCBqc051bGwoKSkpOwogICAgIGV4Y2VwdGlvblN0cnVjdHVyZS5zZXQoKnRoaXMsIEV4
Y2VwdGlvbjo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIHByb21p
c2VEZWZlcnJlZFN0cnVjdHVyZS5zZXQoKnRoaXMsIEpTUHJvbWlzZURlZmVycmVkOjpjcmVhdGVT
dHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgaW50ZXJuYWxQcm9taXNlRGVmZXJy
ZWRTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBKU0ludGVybmFsUHJvbWlzZURlZmVycmVkOjpjcmVhdGVT
dHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0u
aAppbmRleCA4N2JkMGUwYTI1NTM4ZThjNWVjMzJhYmU0MDMyYzQ2OTdlYjFkMDhmLi45MTUwYjUx
NTllZWRjYWQxODU2NDVjZGE2YzczMGI0OTBlZDNlNjc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1ZNLmgKQEAgLTMyMCw3ICszMjAsNiBAQCBjbGFzcyBWTSA6IHB1YmxpYyBUaHJlYWRTYWZl
UmVmQ291bnRlZDxWTT4gewogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGluZmVycmVkVHlwZVN0cnVj
dHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBpbmZlcnJlZFR5cGVUYWJsZVN0cnVjdHVyZTsK
ICAgICBTdHJvbmc8U3RydWN0dXJlPiBmdW5jdGlvblJhcmVEYXRhU3RydWN0dXJlOwotICAgIFN0
cm9uZzxTdHJ1Y3R1cmU+IGdlbmVyYXRvckZyYW1lU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1
Y3R1cmU+IGV4Y2VwdGlvblN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBwcm9taXNl
RGVmZXJyZWRTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gaW50ZXJuYWxQcm9taXNl
RGVmZXJyZWRTdHJ1Y3R1cmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GYXN0Qml0VmVj
dG9yLmggYi9Tb3VyY2UvV1RGL3d0Zi9GYXN0Qml0VmVjdG9yLmgKaW5kZXggOThmZmY1Y2Y3MzUz
ZTZiYzY3ZGE1YzU1OTQwY2NjZTRlNGIxNTZkMC4uZmYwMGI3YjU0ZDRhMGNmZjRiZWY3ZDAzODU0
ZGU2YjkwY2UxZGI5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRmFzdEJpdFZlY3Rvci5o
CisrKyBiL1NvdXJjZS9XVEYvd3RmL0Zhc3RCaXRWZWN0b3IuaApAQCAtMjMsOCArMjMsNyBAQAog
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCiAgKi8KIAotI2lmbmRlZiBGYXN0Qml0VmVjdG9yX2gKLSNkZWZpbmUg
RmFzdEJpdFZlY3Rvcl9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgPHN0cmluZy5oPgogI2lu
Y2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CkBAIC0zNiwxMiArMzUsMTQgQEAgY2xhc3MgUHJpbnRT
dHJlYW07CiAKIGNsYXNzIEZhc3RCaXRWZWN0b3IgewogcHVibGljOgotICAgIEZhc3RCaXRWZWN0
b3IoKQotICAgICAgICA6IG1fYXJyYXkoMCkKLSAgICAgICAgLCBtX251bUJpdHMoMCkKKyAgICBG
YXN0Qml0VmVjdG9yKCkgPSBkZWZhdWx0OworCisgICAgRmFzdEJpdFZlY3RvcihGYXN0Qml0VmVj
dG9yJiYgb3RoZXIpCisgICAgICAgIDogbV9hcnJheShzdGQ6OmV4Y2hhbmdlKG90aGVyLm1fYXJy
YXksIG51bGxwdHIpKQorICAgICAgICAsIG1fbnVtQml0cyhzdGQ6OmV4Y2hhbmdlKG90aGVyLm1f
bnVtQml0cywgMCkpCiAgICAgewogICAgIH0KLSAgICAKKwogICAgIEZhc3RCaXRWZWN0b3IoY29u
c3QgRmFzdEJpdFZlY3RvciYgb3RoZXIpCiAgICAgICAgIDogbV9hcnJheSgwKQogICAgICAgICAs
IG1fbnVtQml0cygwKQpAQCAtMjAyLDEzICsyMDMsMTAgQEAgY2xhc3MgRmFzdEJpdFZlY3RvciB7
CiAgICAgc3RhdGljIHNpemVfdCBhcnJheUxlbmd0aChzaXplX3QgbnVtQml0cykgeyByZXR1cm4g
KG51bUJpdHMgKyAzMSkgPj4gNTsgfQogICAgIHNpemVfdCBhcnJheUxlbmd0aCgpIGNvbnN0IHsg
cmV0dXJuIGFycmF5TGVuZ3RoKG1fbnVtQml0cyk7IH0KICAgICAKLSAgICB1aW50MzJfdCogbV9h
cnJheTsgLy8gTm8sIHRoaXMgY2FuJ3QgYmUgYW4gc3RkOjp1bmlxdWVfcHRyPHVpbnQzMl90W10+
LgotICAgIHNpemVfdCBtX251bUJpdHM7CisgICAgdWludDMyX3QqIG1fYXJyYXkgeyBudWxscHRy
IH07IC8vIE5vLCB0aGlzIGNhbid0IGJlIGFuIHN0ZDo6dW5pcXVlX3B0cjx1aW50MzJfdFtdPi4K
KyAgICBzaXplX3QgbV9udW1CaXRzIHsgMCB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV1RGCiAK
IHVzaW5nIFdURjo6RmFzdEJpdFZlY3RvcjsKLQotI2VuZGlmIC8vIEZhc3RCaXRWZWN0b3JfaAot
CmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4
IDM3OWQ1NDQ0YjMzZjg1ZWZhNjUwZjJkOWYzZjU0OTg2NjA0ZTdmMGUuLjU1OGJlOTg5M2QwNTE1
NDkxMTkwODllNjU2NzIwZmJlNzIyODQwNzkgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMTYtMDgtMjUgIFl1
c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0RGR11bRlRM
XSBJbXBsZW1lbnQgRVM2IEdlbmVyYXRvcnMgaW4gREZHIC8gRlRMCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTI3MjMKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHN0cmVzcy9nZW5lcmF0b3ItZmliLWZ0
bC1hbmQtYXJyYXkuanM6IEFkZGVkLgorICAgICAgICAoZmliKToKKyAgICAgICAgKiBzdHJlc3Mv
Z2VuZXJhdG9yLWZpYi1mdGwtYW5kLW9iamVjdC5qczogQWRkZWQuCisgICAgICAgIChmaWIpOgor
ICAgICAgICAqIHN0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQtc3RyaW5nLmpzOiBBZGRlZC4K
KyAgICAgICAgKGZpYik6CisgICAgICAgICogc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLmpzOiBB
ZGRlZC4KKyAgICAgICAgKGZpYik6CisgICAgICAgICogc3RyZXNzL2dlbmVyYXRvci1mcmFtZS1l
bXB0eS5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRUaHJvdyk6CisgICAgICAgIChzaG91bGRU
aHJvdy5maWIpOgorICAgICAgICAqIHN0cmVzcy9nZW5lcmF0b3ItcmVkdWNlZC1zYXZlLXBvaW50
LXB1dC10by1zY29wZS5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgIChn
ZW4pOgorICAgICAgICAqIHN0cmVzcy9nZW5lcmF0b3ItdHJhbnNmZXItcmVnaXN0ZXItYmV5b25k
LW11dGlwbGUteWllbGRzLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAg
KGdlbik6CisKIDIwMTYtMDgtMjUgIEpGIEJhc3RpZW4gIDxqZmJhc3RpZW5AYXBwbGUuY29tPgog
CiAgICAgICAgIFRyeUdldEJ5SWQgc2hvdWxkIGhhdmUgYSBWYWx1ZVByb2ZpbGUgc28gdGhhdCBp
dCBjYW4gcHJlZGljdCBpdHMgb3V0cHV0IHR5cGUKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNz
L2dlbmVyYXRvci1maWItZnRsLWFuZC1hcnJheS5qcyBiL0pTVGVzdHMvc3RyZXNzL2dlbmVyYXRv
ci1maWItZnRsLWFuZC1hcnJheS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZTkzOTgxMmZkYmFlYzZiODMyYmZk
MDBmMjE1M2RlZjg0YmI3NTkyCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvZ2Vu
ZXJhdG9yLWZpYi1mdGwtYW5kLWFycmF5LmpzCkBAIC0wLDAgKzEsMjMgQEAKKyhmdW5jdGlvbiAo
KSB7CisgICAgZnVuY3Rpb24gKmZpYigpCisgICAgeworICAgICAgICBsZXQgYSA9IDE7CisgICAg
ICAgIGxldCBiID0gMTsKKyAgICAgICAgbGV0IGMgPSBbIDAgXTsKKyAgICAgICAgd2hpbGUgKHRy
dWUpIHsKKyAgICAgICAgICAgIGNbMF0gPSBhOworICAgICAgICAgICAgeWllbGQgYzsKKyAgICAg
ICAgICAgIFthLCBiXSA9IFtiLCBhICsgYl07CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQg
dmFsdWUgPSAwOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMWU0OyArK2kpIHsKKyAgICAgICAg
bGV0IGYgPSBmaWIoKTsKKyAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDA7ICsraSkgewor
ICAgICAgICAgICAgdmFsdWUgPSBmLm5leHQoKS52YWx1ZTsKKyAgICAgICAgfQorICAgICAgICBp
ZiAodmFsdWVbMF0gIT09IDM1NDIyNDg0ODE3OTI2MjAwMDAwMCkKKyAgICAgICAgICAgIHRocm93
IG5ldyBFcnJvcihgYmFkIHZhbHVlOiR7cmVzdWx0fWApOworICAgIH0KK30oKSk7CmRpZmYgLS1n
aXQgYS9KU1Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQtb2JqZWN0LmpzIGIvSlNU
ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwtYW5kLW9iamVjdC5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
NjczNDBmMmVhNGM3NDM4YTJkMjA5YWE0MGQwNjc3ZTRhYjdkM2ZiCi0tLSAvZGV2L251bGwKKysr
IGIvSlNUZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwtYW5kLW9iamVjdC5qcwpAQCAtMCww
ICsxLDIzIEBACisoZnVuY3Rpb24gKCkgeworICAgIGZ1bmN0aW9uICpmaWIoKQorICAgIHsKKyAg
ICAgICAgbGV0IGEgPSAxOworICAgICAgICBsZXQgYiA9IDE7CisgICAgICAgIGxldCBjID0geyBm
aWI6IDAgfTsKKyAgICAgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgICAgIGMuZmliID0gYTsK
KyAgICAgICAgICAgIHlpZWxkIGM7CisgICAgICAgICAgICBbYSwgYl0gPSBbYiwgYSArIGJdOwor
ICAgICAgICB9CisgICAgfQorCisgICAgbGV0IHZhbHVlID0gMDsKKyAgICBmb3IgKGxldCBpID0g
MDsgaSA8IDFlNDsgKytpKSB7CisgICAgICAgIGxldCBmID0gZmliKCk7CisgICAgICAgIGZvciAo
bGV0IGkgPSAwOyBpIDwgMTAwOyArK2kpIHsKKyAgICAgICAgICAgIHZhbHVlID0gZi5uZXh0KCku
dmFsdWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHZhbHVlLmZpYiAhPT0gMzU0MjI0ODQ4MTc5
MjYyMDAwMDAwKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgdmFsdWU6JHtyZXN1
bHR9YCk7CisgICAgfQorfSgpKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2dlbmVyYXRv
ci1maWItZnRsLWFuZC1zdHJpbmcuanMgYi9KU1Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0
bC1hbmQtc3RyaW5nLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQzOGFlNmFiMzM0NzA0NjgyMjg0OWY0MzAwNGVh
NWM0MDNlZWRhMjgKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9nZW5lcmF0b3It
ZmliLWZ0bC1hbmQtc3RyaW5nLmpzCkBAIC0wLDAgKzEsMjIgQEAKKyhmdW5jdGlvbiAoKSB7Cisg
ICAgZnVuY3Rpb24gKmZpYigpCisgICAgeworICAgICAgICBsZXQgYSA9IDE7CisgICAgICAgIGxl
dCBiID0gMTsKKyAgICAgICAgbGV0IGMgPSAiUmVzdWx0ISAiOworICAgICAgICB3aGlsZSAodHJ1
ZSkgeworICAgICAgICAgICAgeWllbGQgYyArIGE7CisgICAgICAgICAgICBbYSwgYl0gPSBbYiwg
YSArIGJdOworICAgICAgICB9CisgICAgfQorCisgICAgbGV0IHZhbHVlID0gMDsKKyAgICBmb3Ig
KGxldCBpID0gMDsgaSA8IDFlNDsgKytpKSB7CisgICAgICAgIGxldCBmID0gZmliKCk7CisgICAg
ICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwOyArK2kpIHsKKyAgICAgICAgICAgIHZhbHVlID0g
Zi5uZXh0KCkudmFsdWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHZhbHVlICE9PSBgUmVzdWx0
ISAzNTQyMjQ4NDgxNzkyNjIwMDAwMDBgKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBi
YWQgdmFsdWU6JHtyZXN1bHR9YCk7CisgICAgfQorfSgpKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMv
c3RyZXNzL2dlbmVyYXRvci1maWItZnRsLmpzIGIvSlNUZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZp
Yi1mdGwuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMzQwZTMzZGJjODY4YmVhN2E4OTNjOWVjMTZiNzc5ZWMyNmJk
YjE5YwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRs
LmpzCkBAIC0wLDAgKzEsMjEgQEAKKyhmdW5jdGlvbiAoKSB7CisgICAgZnVuY3Rpb24gKmZpYigp
CisgICAgeworICAgICAgICBsZXQgYSA9IDE7CisgICAgICAgIGxldCBiID0gMTsKKyAgICAgICAg
d2hpbGUgKHRydWUpIHsKKyAgICAgICAgICAgIHlpZWxkIGE7CisgICAgICAgICAgICBbYSwgYl0g
PSBbYiwgYSArIGJdOworICAgICAgICB9CisgICAgfQorCisgICAgbGV0IHZhbHVlID0gMDsKKyAg
ICBmb3IgKGxldCBpID0gMDsgaSA8IDFlNDsgKytpKSB7CisgICAgICAgIGxldCBmID0gZmliKCk7
CisgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwOyArK2kpIHsKKyAgICAgICAgICAgIHZh
bHVlID0gZi5uZXh0KCkudmFsdWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHZhbHVlICE9PSAz
NTQyMjQ4NDgxNzkyNjIwMDAwMDApCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCB2
YWx1ZToke3Jlc3VsdH1gKTsKKyAgICB9Cit9KCkpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJl
c3MvZ2VuZXJhdG9yLWZyYW1lLWVtcHR5LmpzIGIvSlNUZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZy
YW1lLWVtcHR5LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU5ZTg4NTViZmFjM2M1NmRmOTI2YWJkNDI4YzAxM2Mz
MzQxNjI3NDYKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZnJh
bWUtZW1wdHkuanMKQEAgLTAsMCArMSwzNCBAQAorZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVuYywg
ZXJyb3JNZXNzYWdlKSB7CisgICAgdmFyIGVycm9yVGhyb3duID0gZmFsc2U7CisgICAgdmFyIGVy
cm9yID0gbnVsbDsKKyAgICB0cnkgeworICAgICAgICBmdW5jKCk7CisgICAgfSBjYXRjaCAoZSkg
eworICAgICAgICBlcnJvclRocm93biA9IHRydWU7CisgICAgICAgIGVycm9yID0gZTsKKyAgICB9
CisgICAgaWYgKCFlcnJvclRocm93bikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdub3QgdGhy
b3duJyk7CisgICAgaWYgKFN0cmluZyhlcnJvcikgIT09IGVycm9yTWVzc2FnZSkKKyAgICAgICAg
dGhyb3cgbmV3IEVycm9yKGBiYWQgZXJyb3I6ICR7U3RyaW5nKGVycm9yKX1gKTsKK30KKworc2hv
dWxkVGhyb3coZnVuY3Rpb24gKCkgeworICAgIGZ1bmN0aW9uICpmaWIoZmxhZykKKyAgICB7Cisg
ICAgICAgIGxldCBhID0gMTsKKyAgICAgICAgbGV0IGIgPSAxOworICAgICAgICB5aWVsZCA0MjsK
KyAgICAgICAgaWYgKGZsYWcpCisgICAgICAgICAgICByZXR1cm4gYzsKKyAgICAgICAgbGV0IGMg
PSA1MDA7CisgICAgfQorCisgICAgbGV0IHZhbHVlID0gMDsKKyAgICBmb3IgKGxldCBpID0gMDsg
aSA8IDFlNDsgKytpKSB7CisgICAgICAgIGZvciAobGV0IHYgb2YgZmliKGZhbHNlKSkgeworICAg
ICAgICB9CisgICAgfQorICAgIGZvciAobGV0IHYgb2YgZmliKHRydWUpKSB7CisgICAgfQorfSwg
YFJlZmVyZW5jZUVycm9yOiBDYW5ub3QgYWNjZXNzIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUuYCk7
CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItcmVkdWNlZC1zYXZlLXBvaW50
LXB1dC10by1zY29wZS5qcyBiL0pTVGVzdHMvc3RyZXNzL2dlbmVyYXRvci1yZWR1Y2VkLXNhdmUt
cG9pbnQtcHV0LXRvLXNjb3BlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMwYzc1ZmE0OTE0M2MxN2JlMTRmMzI4
MWUzZjY1NDM0ZjM1MTM5ZTgKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9nZW5l
cmF0b3ItcmVkdWNlZC1zYXZlLXBvaW50LXB1dC10by1zY29wZS5qcwpAQCAtMCwwICsxLDI4IEBA
CitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAh
PT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIHZhbHVlOiAke1N0cmlu
ZyhhY3R1YWwpfWApOworfQorCitmdW5jdGlvbiBlcnJvcigpCit7CisgICAgdGhyb3cgIm9rIjsK
K30KKworZnVuY3Rpb24qIGdlbigpCit7CisgICAgdmFyIHZhbHVlID0gNDI7CisgICAgdHJ5IHsK
KyAgICAgICAgeWllbGQgMzAwOworICAgICAgICB2YWx1ZSA9IDUwMDsKKyAgICAgICAgZXJyb3Io
KTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIHlpZWxkIDQyOworICAgICAgICByZXR1cm4g
dmFsdWU7CisgICAgfQorICAgIHJldHVybiAyMDA7Cit9CisKK3ZhciBnID0gZ2VuKCk7CitzaG91
bGRCZShnLm5leHQoKS52YWx1ZSwgMzAwKTsKK3Nob3VsZEJlKGcubmV4dCgpLnZhbHVlLCA0Mik7
CitzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgNTAwKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3Ry
ZXNzL2dlbmVyYXRvci10cmFuc2Zlci1yZWdpc3Rlci1iZXlvbmQtbXV0aXBsZS15aWVsZHMuanMg
Yi9KU1Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItdHJhbnNmZXItcmVnaXN0ZXItYmV5b25kLW11dGlw
bGUteWllbGRzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZlMjA4ZjU4MTI5NmY5YWUwOGE2YmZiMzk4YjQ4MjI1
NzQyZDZiNzgKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItdHJh
bnNmZXItcmVnaXN0ZXItYmV5b25kLW11dGlwbGUteWllbGRzLmpzCkBAIC0wLDAgKzEsMTggQEAK
K2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9
PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1
YWwpOworfQorCisKK2Z1bmN0aW9uICpnZW4oKQoreworICAgIHZhciB0ZXN0ID0gNDI7CisgICAg
eWllbGQgMzI7CisgICAgeWllbGQgMzM7CisgICAgeWllbGQgdGVzdDsKK30KKwordmFyIGcgPSBn
ZW4oKTsKK3Nob3VsZEJlKGcubmV4dCgpLnZhbHVlLCAzMik7CitzaG91bGRCZShnLm5leHQoKS52
YWx1ZSwgMzMpOworc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIDQyKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>287036</attachid>
            <date>2016-08-25 15:54:01 -0700</date>
            <delta_ts>2016-08-25 15:54:01 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-152723-20160825155159.patch</filename>
            <type>text/plain</type>
            <size>209393</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA0OTkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
NDY4YmY3MTM2OTVjYjlkMmYwZGEyZGQ5YmY5Y2EzYTJkN2ZkNzVhLi5hOWI5ZjI5ZjRmZjVhZjE0
NGQ0MmYyZjQxMzU0N2M0OTlhZDc2ODhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMzQgQEAKKzIwMTYtMDgtMjUgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0RGR11bRlRMXSBJbXBsZW1lbnQgRVM2IEdlbmVyYXRvcnMgaW4g
REZHIC8gRlRMCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNTI3MjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUaGlzIHBhdGNoIGludHJvZHVjZXMgREZHIGFuZCBGVEwgc3VwcG9ydCBmb3IgRVM2IGdlbmVy
YXRvcnMuCisgICAgICAgIEVTNiBnZW5lcmF0b3IgaXMgY29tcGlsZWQgYnkgdGhlIEJ5dGVjb2Rl
R2VuZXJhdG9yLiBCdXQgYXQgdGhlIGxhc3QgcGhhc2UsIEJ5dGVjb2RlR2VuZXJhdG9yIHBlcmZv
cm1zICJnZW5lcmF0b3JpZmljYXRpb24iIG9udG8gdGhlIHVubGlua2VkIGNvZGUuCisgICAgICAg
IEluIEJ5dGVjb2RlR2VuZXJhdG9yIHBoYXNlLCB3ZSBqdXN0IGVtaXQgb3BfeWllbGQgZm9yIGVh
Y2ggeWllbGQgcG9pbnQuIEFuZCB3ZSBkb24ndCBlbWl0IGFueSBnZW5lcmF0b3IgcmVsYXRlZCBz
d2l0Y2gsIHNhdmUsIGFuZCByZXN1bWUgc2VxdWVuY2VzCisgICAgICAgIGhlcmUuIFRob3NlIGFy
ZSBlbWl0dGVkIGJ5IHRoZSBnZW5lcmF0b3JpZmljYXRpb24gcGhhc2UuCisKKyAgICAgICAgU28g
dGhlIGdyYXBoIGlzIHN1cGVyIHNpbXBsZSEgQmVmb3JlIHRoZSBnZW5lcmF0b3JpZmljYXRpb24s
IHRoZSBncmFwaCBsb29rcyBsaWtlIHRoaXMuCisKKyAgICAgICAgICAgICBvcF9lbnRlciAtPiAu
Li4uLi4gLT4gb3BfeWllbGQgLT4gLi4uLi4gLT4gb3BfeWllbGQgLT4gLi4uCisKKyAgICAgICAg
Um91Z2hseSBzcGVha2luZywgaW4gdGhlIGdlbmVyYXRvcmlmaWNhdGlvbiBwaGFzZSwgd2UgdHVy
biBvdXQgd2hpY2ggdmFyaWFibGVzIHNob3VsZCBiZSBzYXZlZCBhbmQgcmVzdW1lZCBhdCBlYWNo
IG9wX3lpZWxkLgorICAgICAgICBUaGlzIGlzIGRvbmUgYnkgbGl2ZW5lc3MgYW5hbHlzaXMuIEFm
dGVyIHRoYXQsIHdlIGNvbnZlcnQgb3BfeWllbGQgdG8gdGhlIHNlcXVlbmNlIG9mICJvcF9wdXRf
dG9fc2NvcGUiLCAib3BfcmV0IiwgYW5kICJvcF9nZXRfZnJvbV9zY29wZSIuCisgICAgICAgIG9w
X3B1dF90b19zY29wZSBhbmQgb3BfZ2V0X2Zyb21fc2NvcGUgc2VxdWVuY2VzIGFyZSBjb3JyZXNw
b25kaW5nIHRvIHRoZSBzYXZlIGFuZCByZXN1bWUgc2VxdWVuY2VzLiBXZSBzZXQgdXAgdGhlIHNj
b3BlIGZvciB0aGUgZ2VuZXJhdG9yIGZyYW1lIGFuZAorICAgICAgICBwZXJmb3JtIG9wX3B1dF90
b19zY29wZSBhbmQgb3BfZ2V0X2Zyb21fc2NvcGUgb250byBpdC4gVGhlIGxpdmUgcmVnaXN0ZXJz
IGFyZSBzYXZlZCBhbmQgcmVzdW1lZCBvdmVyIHRoZSBnZW5lcmF0b3IncyBuZXh0KCkgY2FsbHMg
YnkgdXNpbmcgdGhpcworICAgICAgICBzcGVjaWFsIGdlbmVyYXRvciBmcmFtZSBzY29wZS4gQW5k
IHdlIGFsc28gc2V0IHVwIHRoZSBnbG9iYWwgc3dpdGNoIGZvciB0aGUgZ2VuZXJhdG9yLgorCisg
ICAgICAgIEluIHRoZSBnZW5lcmF0b3JpZmljYXRpb24gcGhhc2UsCisKKyAgICAgICAgMS4gV2Ug
Y29uc3RydWN0IHRoZSBCeXRlY29kZUdyYXBoIGZyb20gdGhlIHVubGlua2VkIGluc3RydWN0aW9u
cy4gVGhpcyBjb25zdHJ1Y3RzIHRoZSBiYXNpYyBibG9ja3MsIGFuZCBpdCBpcyB1c2VkIGluIHRo
ZSBzdWJzZXF1ZW50IGFuYWx5c2lzLgorICAgICAgICAyLiBXZSBwZXJmb3JtIHRoZSBhbmFseXNp
cyBvbnRvIHRoZSB1bmxpbmtlZCBjb2RlLiBXZSBleHRyYWN0IHRoZSBsaXZlIHZhcmlhYmxlcyBh
dCBlYWNoIG9wX3lpZWxkLgorICAgICAgICAzLiBXZSBpbnNlcnQgdGhlIGdldF9mcm9tX3Njb3Bl
IGFuZCBwdXRfdG9fc2NvcGUgYXQgZWFjaCBvcF95aWVsZC4gV2hpY2ggcmVnaXN0ZXJzIHNob3Vs
ZCBiZSBzYXZlZCBhbmQgcmVzdW1lZCBpcyBvZmZlcmVkIGJ5ICgyKS4KKyAgICAgICAgICAgVGhl
biwgY2xpcCB0aGUgb3BfeWllbGQgdGhlbXNlbHZlcy4gQW5kIHdlIGFsc28gaW5zZXJ0IHRoZSBz
d2l0Y2hfaW1tLiBUaGUganVtcCB0YXJnZXRzIG9mIHRoaXMgc3dpdGNoIGFyZSBqdXN0IGFmdGVy
IHRoaXMgb3Bfc3dpdGNoX2ltbSBhbmQgZWFjaCBvcF95aWVsZCBwb2ludC4KKworICAgICAgICBP
bmUgaW50ZXJlc3RpbmcgcG9pbnQgaXMgdGhlIHRyeS1yYW5nZS4gV2Ugc3BsaXQgdGhlIHRyeS1y
YW5nZSBhdCB0aGUgb3BfeWllbGQgcG9pbnQgaW4gQnl0ZWNvZGVHZW5lcmF0b3IgcGhhc2UuCisg
ICAgICAgIFRoaXMgZHJvcHMgdGhlIGhhY2t5IHRoaW5nIHRoYXQgaXMgaW50cm9kdWNlZCBpbiBb
MV0uCisgICAgICAgIElmIHRoZSB0cnktcmFuZ2UgY292ZXJzIHRoZSByZXN1bWUgc2VxdWVuY2Vz
LCB0aGUgZXhjZXB0aW9uIGhhbmRsZXIncyB1c2UtcmVnaXN0ZXJzIGFyZSBpbmNvcnJlY3RseSB0
cmFuc2ZlcnJlZCB0byB0aGUgZW50cnkgYmxvY2suCisgICAgICAgIEZvciBleGFtcGxlLAorCisg
ICAgICAgICAgICBoYW5kbGVyIHVzZXMgcjIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnktcmFuZ2UKKyAgICAgICAgICAgIGxh
YmVsOihlbnRyeSBibG9jayBjYW4ganVtcCBoZXJlKSAgICAgICAgICAgICAgICAgXgorICAgICAg
ICAgICAgICAgIHIxID0gZ2V0X2Zyb21fc2NvcGUgIyByZXN1bWUgc2VxdWVuY2Ugc3RhcnRzICB8
IHVzZSByMiBpcyB0cmFuc2ZlcnJlZCB0byB0aGUgZW50cnkgYmxvY2shCisgICAgICAgICAgICAg
ICAgcjIgPSBnZXRfZnJvbV9zY29wZSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAg
ICAgICAgICAgICBzdGFydHMgdXN1YWwgc2VxdWVuY2VzICAgICAgICAgICAgICAgICAgICAgICAg
fAorICAgICAgICAgICAgICAgIC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB8CisKKyAgICAgICAgSGFuZGxlcidzIHIyIHVzZSBzaG91bGQgYmUgY29uc2lkZXJl
ZCBhdCB0aGUgYHIxID0gZ2V0X2Zyb21fc2NvcGVgIHBvaW50LgorICAgICAgICBQcmV2aW91c2x5
LCB3ZSBoYW5kbGUgdGhpcyBlZGdlIGNhc2UgYnkgdHJlYXRpbmcgb3BfcmVzdW1lIHNwZWNpYWxs
eSBpbiB0aGUgbGl2ZW5lc3MgYW5hbHlzaXNbMV0uCisgICAgICAgIFRvIGRyb3AgdGhpcyB3b3Jr
YXJvdW5kLCB3ZSBzcGxpdCB0aGUgdHJ5LXJhbmdlIG5vdCB0byBjb3ZlciB0aGlzIHJlc3VtZSBz
ZXF1ZW5jZS4KKworICAgICAgICAgICAgaGFuZGxlciB1c2VzIHIyCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5LXJhbmdlCisg
ICAgICAgICAgICBsYWJlbDooZW50cnkgYmxvY2sgY2FuIGp1bXAgaGVyZSkKKyAgICAgICAgICAg
ICAgICByMSA9IGdldF9mcm9tX3Njb3BlICMgcmVzdW1lIHNlcXVlbmNlIHN0YXJ0cworICAgICAg
ICAgICAgICAgIHIyID0gZ2V0X2Zyb21fc2NvcGUKKyAgICAgICAgICAgICAgICBzdGFydHMgdXN1
YWwgc2VxdWVuY2VzICAgICAgICAgICAgICAgICAgICAgICAgXiB0cnktcmFuZ2Ugc2hvdWxkIHN0
YXJ0IGZyb20gaGVyZS4KKyAgICAgICAgICAgICAgICAuLi4gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfAorCisgICAgICAgIE9LLiBMZXQncyBzaG93IHRoZSBkZXRh
aWxlZCBleGFtcGxlLgorCisgICAgICAgICAgICAxLiBGaXJzdCwgdGhlcmUgaXMgdGhlIG5vcm1h
bCBieXRlY29kZSBzZXF1ZW5jZS4gSGVyZSwgfCByZXByZXNlbnRzIHRoZSBvZmZzZXRzLCBhbmQg
W10gcmVwcmVzZW50cyB0aGUgYnl0ZWNvZGVzLgorCisgICAgICAgICAgICAgICAgYnl0ZWNvZGVz
ICAgfCBbIF0gfCBbIF0gfCBbIF0gfCBbIF0gfCBbIF0gfCBbIF0gfAorICAgICAgICAgICAgICAg
IHRyeS1yYW5nZSAgIDwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT4KKworICAg
ICAgICAgICAgMi4gV2hlbiB3ZSBlbWl0IHRoZSBvcF95aWVsZCBpbiB0aGUgYnl0ZWNvZGUgZ2Vu
ZXJhdG9yLCB3ZSBjYXJlZnVsbHkgc3BsaXQgdGhlIHRyeS1yYW5nZS4KKworICAgICAgICAgICAg
ICAgIGJ5dGVjb2RlcyAgIHwgWyBdIHwgWyBdIHwgW29wX3lpZWxkXSB8IFsgXSB8IFsgXSB8IFsg
XSB8CisgICAgICAgICAgICAgICAgdHJ5LXJhbmdlICAgPC0tLS0tLS0tLS0tPiAgICAgICAgICAg
IDwtLS0tLS0tLS0tLS0tLS0tLT4KKworICAgICAgICAgICAgMy4gQW5kIGluIHRoZSBnZW5lcmF0
b3JpZmljYXRpb24gcGhhc2UsIHdlIGluc2VydCB0aGUgc3dpdGNoJ3MganVtcCB0YXJnZXQgYW5k
IHNhdmUgJiByZXN1bWUgc2VxdWVuY2VzLiBBbmQgd2UgYWxzbyBkcm9wIG9wX3lpZWxkLgorCisg
ICAgICAgICAgICAgICAgICAgICAgICBJbnNlcnQgc2F2ZSBzZXEgIEluc2VydCByZXN1bWUgc2Vx
CisgICAgICAgICAgICAgICAgICAgICAgICBiZWZvcmUgb3BfeWllbGQuIGFmdGVyIG9wX3lpZWxk
J3MgcG9pbnQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2IHYKKyAg
ICAgICAgICAgICAgICBieXRlY29kZXMgICB8IFsgXSB8IFsgXSB8IFtvcF95aWVsZF0gfCBbIF0g
fCBbIF0gfCBbIF0gfAorICAgICAgICAgICAgICAgIHRyeS1yYW5nZSAgIDwtLS0tLS0tLS0tLT4g
ICAgIF4gICAgICA8LS0tLS0tLS0tLS0tLS0tLS0+CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXiAgICAgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBKdW1w
IHRvIGhlcmUuICAgIERyb3AgdGhpcyBvcF95aWVsZC4KKworICAgICAgICAgICAgNC4gVGhlIGZp
bmFsIGxheW91dCBpcyB0aGUgZm9sbG93aW5nLgorCisgICAgICAgICAgICAgICAgYnl0ZWNvZGVz
ICAgfCBbIF0gfCBbIF1bc2F2ZSBzZXFdW29wX3JldF0gfCBbcmVzdW1lIHNlcV0gfCBbIF0gfCBb
IF0gfCBbIF0gfAorICAgICAgICAgICAgICAgIHRyeS1yYW5nZSAgIDwtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLT4gICAgICAgICAgICAgICA8LS0tLS0tLS0tLS0tLS0tLT4KKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSnVtcCB0byBoZXJlLgor
CisgICAgICAgIFRoZSByZXdyaXRpbmcgZG9uZSBieSB0aGUgQnl0ZWNvZGVSZXdyaXRlciBpcyBl
eGVjdXRlZCBpbiBhIGJhdGNoIG1hbm5lci4gU2luY2UgdGhlc2UgbW9kaWZpY2F0aW9uIGNoYW5n
ZXMgdGhlIGJhc2ljIGJsb2NrcyBhbmQgc2l6ZSBvZiB1bmxpbmtlZCBpbnN0cnVjdGlvbnMsCisg
ICAgICAgIEJ5dGVjb2RlUmV3cml0ZXIgYWxzbyBwZXJmb3JtcyB0aGUgb2Zmc2V0IGFkanVzdG1l
bnQgZm9yIFVubGlua2VkQ29kZUJsb2NrLiBTbywgdGhpcyByZXdyaXRpbmcgaXMgcGVyZm9ybWVk
IG9udG8gdGhlIEJ5dGVjb2RlR3JhcGggcmF0aGVyIHRoYW4gQnl0ZWNvZGVCYXNpY0Jsb2NrLgor
ICAgICAgICBUaGUgcmVhc29uIHdoeSB3ZSB0YWtlIHRoaXMgZGVzaWduIGlzIHNpbXBsZTogd2Ug
ZG9uJ3Qgd2FudCB0byBuZXdseSBjcmVhdGUgdGhlIGJhc2ljIGJsb2NrcyBhbmQgb3Bjb2RlcyBm
b3IgdGhpcyBlYXJseSBwaGFzZSBsaWtlIERGRy4gSW5zdGVhZCwgd2UgcGVyZm9ybSB0aGUKKyAg
ICAgICAgbW9kaWZpY2F0aW9uIGFuZCBhZGp1c3RtZW50IHRvIHRoZSB1bmxpbmtlZCBpbnN0cnVj
dGlvbnMgYW5kIFVubGlua2VkQ29kZUJsb2NrIGluIGEgaW4tcGxhY2UgbWFubmVyLgorCisgICAg
ICAgIEJ5dGVjb2RlIHJld3JpdGluZyBmdW5jdGlvbmFsaXR5IGlzIG9mZmVyZWQgYnkgQnl0ZWNv
ZGVSZXdyaXRlci4gQnl0ZWNvZGVSZXdyaXRlciBhbGxvd3MgdXMgdG8gaW5zZXJ0IGFueSBieXRl
Y29kZXMgdG8gYW55IHBsYWNlcworICAgICAgICBpbiBhIGluLXBsYWNlIG1hbm5lci4gQnl0ZWNv
ZGVSZXdyaXRlciBoYW5kbGVzIHRoZSBvcmlnaW5hbCBieXRlY29kZSBvZmZzZXRzIGFzIGxhYmVs
cy4gQW5kIHlvdSBjYW4gaW5zZXJ0IGJ5dGVjb2RlcyBiZWZvcmUgYW5kIGFmdGVyCisgICAgICAg
IHRoZXNlIGxhYmVscy4gWW91IGNhbiBhbHNvIGluc2VydCBhbnkganVtcHMgdG8gYW55IHBsYWNl
cy4gV2hlbiB5b3UgaW5zZXJ0IGp1bXBzLCB5b3UgbmVlZCB0byBzcGVjaWZ5IGp1bXAgdGFyZ2V0
IHdpdGggdGhpcyBsYWJlbHMuCisgICAgICAgIFRoZXNlIGxhYmVscyAob3JpZ2luYWwgYnl0ZWNv
ZGUgb2Zmc2V0cykgYXJlIGF1dG9tYXRpY2FsbHkgY29udmVydGVkIHRvIHRoZSBhcHByb3ByaWF0
ZSBvZmZzZXRzIGJ5IEJ5dGVjb2RlUmV3cml0ZXIuCisKKyAgICAgICAgQWZ0ZXIgdGhhdCBwaGFz
ZSwgdGhlIGRhdGEgZmxvdyBvZiB0aGUgZ2VuZXJhdG9yLXNhdmVkLWFuZC1yZXN1bWVkLXJlZ2lz
dGVycyBhcmUgZXhwbGljaXRseSByZXByZXNlbnRlZCBieSB0aGUgZ2V0X2Zyb21fc2NvcGUgYW5k
IHB1dF90b19zY29wZS4KKyAgICAgICAgQW5kIHRoZSBzd2l0Y2ggaXMgaW5zZXJ0ZWQgdG8gcmVw
cmVzZW50IHRoZSBhY3R1YWwgY29udHJvbCBmbG93IGZvciB0aGUgZ2VuZXJhdG9yLiBBbmQgb3Bf
eWllbGQgaXMgcmVtb3ZlZC4gU2luY2Ugd2UgdXNlIHRoZSBleGlzdGluZyBieXRlY29kZXMgKG9w
X3N3aXRjaF9pbW0sIG9wX3B1dF90b19zY29wZQorICAgICAgICBvcF9yZXQsIGFuZCBvcF9nZXRf
ZnJvbV9zY29wZSksIERGRyBhbmQgRlRMIGNoYW5nZXMgYXJlIG5vdCBuZWNlc3NhcnkuIFRoaXMg
cGF0Y2ggYWxzbyBkcm9wcyBkYXRhIHN0cnVjdHVyZXMgYW5kIGltcGxlbWVudGF0aW9ucyBmb3Ig
dGhlIG9sZCBnZW5lcmF0b3IsCisgICAgICAgIG9wX3Jlc3VtZSwgb3Bfc2F2ZSBpbXBsZW1lbnRh
dGlvbnMgYW5kIEdlbmVyYXRvckZyYW1lLgorCisgICAgICAgIE5vdGUgdGhhdCB0aGlzIHBhdGNo
IGRvZXMgbm90IGxldmVyYWdlIHRoZSByZWNlbnQgbXVsdGkgZW50cnlwb2ludHMgc3VwcG9ydCBp
biBCMy4gQWZ0ZXIgdGhpcyBwYXRjaCBpcyBpbnRyb2R1Y2VkLCB3ZSB3aWxsIHN1Ym1pdCBhIG5l
dyBwYXRjaCB0aGF0IGxldmVyYWdlcyB0aGUgbXVsdGkKKyAgICAgICAgZW50cnlwb2ludHMgZm9y
IGdlbmVyYXRvcidzIHJlc3VtZSBhbmQgc2VlcyB0aGUgcGVyZm9ybWFuY2UgZ2Fpbi4KKworICAg
ICAgICBNaWNyb2JlbmNobWFya3MgcmVsYXRlZCB0byBnZW5lcmF0b3JzIHNob3cgdXAgdG8gMi45
eCBpbXByb3ZlbWVudHMuCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgQmFzZWxpbmUgICAgICAgICAgICAgICAgICBQYXRjaGVkCisKKyAg
ICAgICAgICAgIGdlbmVyYXRvci1maWIgICAgICAgICAgICAgICAgICAgICAgICAgIDEwMi4wMTE2
Ky0zLjI4ODAgICAgIF4gICAgIDM0Ljk2NzArLTAuMjIyMSAgICAgICAgXiBkZWZpbml0ZWx5IDIu
OTE3NHggZmFzdGVyCisgICAgICAgICAgICBnZW5lcmF0b3Itc3Vuc3BpZGVyLWFjY2Vzcy1uc2ll
dmUgICAgICAgIDUuODU5NistMC4wMzcxICAgICBeICAgICAgNC45MDUxKy0wLjA3MjAgICAgICAg
IF4gZGVmaW5pdGVseSAxLjE5NDZ4IGZhc3RlcgorICAgICAgICAgICAgZ2VuZXJhdG9yLXdpdGgt
c2V2ZXJhbC10eXBlcyAgICAgICAgICAgMzMyLjE0NzgrLTQuMjQyNSAgICAgXiAgICAxMjQuNjY0
MistMi40ODI2ICAgICAgICBeIGRlZmluaXRlbHkgMi42NjQzeCBmYXN0ZXIKKworICAgICAgICAg
ICAgPGdlb21ldHJpYz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDU4LjI5OTgrLTAuNzc1
OCAgICAgXiAgICAgMjcuNzQyNSstMC4yNTc3ICAgICAgICBeIGRlZmluaXRlbHkgMi4xMDE1eCBm
YXN0ZXIKKworICAgICAgICBJbiBFUzZTYW1wbGVCZW5jaCdzIEJhc2ljLCB3ZSBjYW4gb2JzZXJ2
ZSA0MSUgaW1wcm92ZW1lbnQgKE1hY2Jvb2sgUHJvKS4KKworICAgICAgICAgICAgQmFzZWxpbmU6
CisgICAgICAgICAgICAgICAgR2VvbWV0cmljIE1lYW4gUmVzdWx0OiAxMzMuNTUgbXMgKy0gNC40
OSBtcworCisgICAgICAgICAgICAgICAgQmVuY2htYXJrICAgIEZpcnN0IEl0ZXJhdGlvbiAgICAg
ICAgV29yc3QgMiUgICAgICAgICAgICAgICBTdGVhZHkgU3RhdGUKKyAgICAgICAgICAgICAgICBB
aXIgICAgICAgICAgNTQuMDMgbXMgKy0gNy41MSBtcyAgICAyOS4wNiBtcyArLSAzLjEzIG1zICAg
IDIyNzYuNTkgbXMgKy0gNjEuMTcgbXMKKyAgICAgICAgICAgICAgICBCYXNpYyAgICAgICAgMzAu
MTggbXMgKy0gMS44NiBtcyAgICAxOC44NSBtcyArLSAwLjQ1IG1zICAgIDI4NTEuMTYgbXMgKy0g
NDEuODcgbXMKKworICAgICAgICAgICAgUGF0Y2hlZDoKKyAgICAgICAgICAgICAgICBHZW9tZXRy
aWMgTWVhbiBSZXN1bHQ6IDEyMS43OCBtcyArLSAzLjk2IG1zCisKKyAgICAgICAgICAgICAgICBC
ZW5jaG1hcmsgICAgRmlyc3QgSXRlcmF0aW9uICAgICAgICBXb3JzdCAyJSAgICAgICAgICAgICAg
IFN0ZWFkeSBTdGF0ZQorICAgICAgICAgICAgICAgIEFpciAgICAgICAgICA1Mi4wOSBtcyArLSA2
Ljg5IG1zICAgIDI5LjU5IG1zICstIDMuMTYgbXMgICAgMjIzOS45MCBtcyArLSA1NC42MCBtcwor
ICAgICAgICAgICAgICAgIEJhc2ljICAgICAgICAyOS4yOCBtcyArLSAxLjQ2IG1zICAgIDE2LjI2
IG1zICstIDAuNjYgbXMgICAgMjAyNS4xNSBtcyArLSAzOC41NiBtcworCisgICAgICAgIFsxXTog
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1OTI4MQorCisgICAgICAg
ICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBidWlsdGlucy9HZW5lcmF0b3JQcm90b3R5cGUuanM6
CisgICAgICAgIChnbG9iYWxQcml2YXRlLmdlbmVyYXRvclJlc3VtZSk6CisgICAgICAgICogYnl0
ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVCYXNp
Y0Jsb2NrOjpzaHJpbmtUb0ZpdCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlQmFzaWNCbG9jazo6
Y29tcHV0ZUltcGwpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUJhc2ljQmxvY2s6OmNvbXB1dGUp
OgorICAgICAgICAoSlNDOjppc0JyYW5jaCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OmlzVW5j
b25kaXRpb25hbEJyYW5jaCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OmlzVGVybWluYWwpOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjppc1Rocm93KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
bGlua0Jsb2Nrcyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OmNvbXB1dGVCeXRlY29kZUJhc2lj
QmxvY2tzKTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2su
aDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVCYXNpY0Jsb2NrOjppc0VudHJ5QmxvY2spOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUJhc2ljQmxvY2s6OmlzRXhpdEJsb2NrKToKKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVCYXNpY0Jsb2NrOjpsZWFkZXJPZmZzZXQpOgorICAgICAgICAoSlNDOjpCeXRl
Y29kZUJhc2ljQmxvY2s6OnRvdGFsTGVuZ3RoKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVCYXNp
Y0Jsb2NrOjpvZmZzZXRzKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVCYXNpY0Jsb2NrOjpzdWNj
ZXNzb3JzKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVCYXNpY0Jsb2NrOjppbmRleCk6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlQmFzaWNCbG9jazo6YWRkU3VjY2Vzc29yKToKKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVCYXNpY0Jsb2NrOjpCeXRlY29kZUJhc2ljQmxvY2spOgorICAgICAgICAoSlND
OjpCeXRlY29kZUJhc2ljQmxvY2s6OmFkZExlbmd0aCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
QmFzaWNCbG9jazo6bGVhZGVyQnl0ZWNvZGVPZmZzZXQpOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpCeXRlY29kZUJhc2ljQmxvY2s6OnRvdGFsQnl0ZWNvZGVMZW5ndGgpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUJhc2ljQmxvY2s6OmJ5dGVjb2RlT2Zmc2V0cyk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlQmFzaWNCbG9jazo6YWRkQnl0ZWNvZGVMZW5ndGgpOiBE
ZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNw
cDogQWRkZWQuCisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uOjpCeXRl
Y29kZUdlbmVyYXRvcmlmaWNhdGlvbik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9y
aWZpY2F0aW9uOjpncmFwaCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0
aW9uOjp5aWVsZHMpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbjo6
ZW50ZXJQb2ludCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uOjpz
dG9yYWdlRm9yR2VuZXJhdG9yTG9jYWwpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JMaXZlbmVz
c0FuYWx5c2lzOjpHZW5lcmF0b3JMaXZlbmVzc0FuYWx5c2lzKToKKyAgICAgICAgKEpTQzo6R2Vu
ZXJhdG9yTGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldCk6Cisg
ICAgICAgIChKU0M6OkdlbmVyYXRvckxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGVVc2VzRm9yQnl0
ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JMaXZlbmVzc0FuYWx5c2lzOjpy
dW4pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbjo6cnVuKToKKyAg
ICAgICAgKEpTQzo6cGVyZm9ybUdlbmVyYXRvcmlmaWNhdGlvbik6CisgICAgICAgICogYnl0ZWNv
ZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uaDogQ29waWVkIGZyb20gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGluZXMuaC4KKyAg
ICAgICAgKiBieXRlY29kZS9CeXRlY29kZUdyYXBoLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpC
eXRlY29kZUdyYXBoOjpjb2RlQmxvY2spOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdyYXBoOjpp
bnN0cnVjdGlvbnMpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdyYXBoOjpiYXNpY0Jsb2Nrc0lu
UmV2ZXJzZU9yZGVyKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHcmFwaDo6YmxvY2tDb250YWlu
c0J5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHcmFwaDo6ZmluZEJhc2lj
QmxvY2tGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR3JhcGg6OmZp
bmRCYXNpY0Jsb2NrV2l0aExlYWRlck9mZnNldCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR3Jh
cGg6OnNpemUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdyYXBoOjphdCk6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlR3JhcGg6Om9wZXJhdG9yW10pOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdy
YXBoOjpiZWdpbik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR3JhcGg6OmVuZCk6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlR3JhcGg6OmZpcnN0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHcmFw
aDo6bGFzdCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR3JhcGg8QmxvY2s+OjpCeXRlY29kZUdy
YXBoKToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbjoKKyAgICAgICAgKiBi
eXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwOgorICAgICAgICAoSlNDOjpCeXRl
Y29kZUxpdmVuZXNzQW5hbHlzaXM6OkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcyk6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0ZURlZnNGb3JCeXRlY29kZU9m
ZnNldCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0ZVVz
ZXNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlTGl2ZW5lc3NBbmFs
eXNpczo6Z2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0ZUZ1bGxMaXZlbmVzcyk6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0ZUtpbGxzKToKKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpkdW1wUmVzdWx0cyk6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6Y29tcHV0ZSk6CisgICAgICAgIChKU0M6OmlzVmFs
aWRSZWdpc3RlckZvckxpdmVuZXNzKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Z2V0TGVhZGVy
T2Zmc2V0Rm9yQmFzaWNCbG9jayk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OmZpbmRCYXNpY0Js
b2NrV2l0aExlYWRlck9mZnNldCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OmJsb2NrQ29udGFp
bnNCeXRlY29kZU9mZnNldCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OmZpbmRCYXNpY0Jsb2Nr
Rm9yQnl0ZWNvZGVPZmZzZXQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpzdGVwT3Zlckluc3Ry
dWN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Y29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JC
eXRlY29kZU9mZnNldCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OmNvbXB1dGVMb2NhbExpdmVu
ZXNzRm9yQmxvY2spOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzQW5h
bHlzaXM6OnJ1bkxpdmVuZXNzRml4cG9pbnQpOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2Rl
L0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5oOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2Rl
TGl2ZW5lc3NBbmFseXNpc0lubGluZXMuaDoKKyAgICAgICAgKEpTQzo6aXNWYWxpZFJlZ2lzdGVy
Rm9yTGl2ZW5lc3MpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzUHJvcGFnYXRpb248
RGVyaXZlZEFuYWx5c2lzPjo6c3RlcE92ZXJJbnN0cnVjdGlvbik6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlTGl2ZW5lc3NQcm9wYWdhdGlvbjxEZXJpdmVkQW5hbHlzaXM+Ojpjb21wdXRlTG9jYWxM
aXZlbmVzc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVMaXZlbmVz
c1Byb3BhZ2F0aW9uPERlcml2ZWRBbmFseXNpcz46OmNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQmxv
Y2spOgorICAgICAgICAoSlNDOjpCeXRlY29kZUxpdmVuZXNzUHJvcGFnYXRpb248RGVyaXZlZEFu
YWx5c2lzPjo6Z2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlTGl2ZW5lc3NQcm9wYWdhdGlvbjxEZXJpdmVkQW5hbHlzaXM+OjpydW5MaXZlbmVz
c0ZpeHBvaW50KToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZVJld3JpdGVyLmNwcDogQWRk
ZWQuCisgICAgICAgIChKU0M6OkJ5dGVjb2RlUmV3cml0ZXI6OmFwcGx5TW9kaWZpY2F0aW9uKToK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVSZXdyaXRlcjo6ZXhlY3V0ZSk6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlUmV3cml0ZXI6OmFkanVzdEp1bXBUYXJnZXRzSW5GcmFnbWVudCk6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlUmV3cml0ZXI6Omluc2VydEltcGwpOgorICAgICAgICAoSlNDOjpCeXRl
Y29kZVJld3JpdGVyOjphZGp1c3RKdW1wVGFyZ2V0KToKKyAgICAgICAgKiBieXRlY29kZS9CeXRl
Y29kZVJld3JpdGVyLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpCeXRlY29kZVJld3JpdGVyOjpJ
bnNlcnRpb25Qb2ludDo6SW5zZXJ0aW9uUG9pbnQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZVJl
d3JpdGVyOjpJbnNlcnRpb25Qb2ludDo6b3BlcmF0b3I8KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNv
ZGVSZXdyaXRlcjo6SW5zZXJ0aW9uUG9pbnQ6Om9wZXJhdG9yPT0pOgorICAgICAgICAoSlNDOjpC
eXRlY29kZVJld3JpdGVyOjpJbnNlcnRpb246Omxlbmd0aCk6CisgICAgICAgIChKU0M6OkJ5dGVj
b2RlUmV3cml0ZXI6OkZyYWdtZW50OjpGcmFnbWVudCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
UmV3cml0ZXI6OkZyYWdtZW50OjphcHBlbmRJbnN0cnVjdGlvbik6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlUmV3cml0ZXI6OkJ5dGVjb2RlUmV3cml0ZXIpOgorICAgICAgICAoSlNDOjpCeXRlY29k
ZVJld3JpdGVyOjppbnNlcnRGcmFnbWVudEJlZm9yZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
UmV3cml0ZXI6Omluc2VydEZyYWdtZW50QWZ0ZXIpOgorICAgICAgICAoSlNDOjpCeXRlY29kZVJl
d3JpdGVyOjpyZW1vdmVCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlUmV3cml0ZXI6
OmdyYXBoKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVSZXdyaXRlcjo6YWRqdXN0QWJzb2x1dGVP
ZmZzZXQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZVJld3JpdGVyOjphZGp1c3RKdW1wVGFyZ2V0
KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVSZXdyaXRlcjo6Y2FsY3VsYXRlRGlmZmVyZW5jZSk6
CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaDoKKyAgICAgICAgKEpTQzo6Y29t
cHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OmNvbXB1dGVEZWZzRm9y
Qnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAg
ICAgIChKU0M6OkNvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6Q29kZUJs
b2NrOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6aGFuZGxlckZv
ckluZGV4KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpzaHJpbmtUb0ZpdCk6CisgICAgICAg
IChKU0M6OkNvZGVCbG9jazo6dmFsdWVQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAg
ICAoSlNDOjpDb2RlQmxvY2s6OmxpdmVuZXNzQW5hbHlzaXNTbG93KToKKyAgICAgICAgKiBieXRl
Y29kZS9Db2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjppc0NvbnN0YW50UmVn
aXN0ZXJJbmRleCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bGl2ZW5lc3NBbmFseXNpcyk6
CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQpOiBEZWxl
dGVkLgorICAgICAgICAqIGJ5dGVjb2RlL0hhbmRsZXJJbmZvLmg6CisgICAgICAgIChKU0M6Okhh
bmRsZXJJbmZvQmFzZTo6aGFuZGxlckZvckluZGV4KToKKyAgICAgICAgKiBieXRlY29kZS9PcGNv
ZGUuaDoKKyAgICAgICAgKEpTQzo6aXNCcmFuY2gpOgorICAgICAgICAoSlNDOjppc1VuY29uZGl0
aW9uYWxCcmFuY2gpOgorICAgICAgICAoSlNDOjppc1Rlcm1pbmFsKToKKyAgICAgICAgKEpTQzo6
aXNUaHJvdyk6CisgICAgICAgICogYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmNwcDoKKyAg
ICAgICAgKEpTQzo6Z2V0SnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChK
U0M6OmNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHNJbnRlcm5hbCk6CisgICAgICAgIChKU0M6OmNv
bXB1dGVQcmVjaXNlSnVtcFRhcmdldHMpOgorICAgICAgICAoSlNDOjpyZWNvbXB1dGVQcmVjaXNl
SnVtcFRhcmdldHMpOgorICAgICAgICAoSlNDOjpmaW5kSnVtcFRhcmdldHNGb3JCeXRlY29kZU9m
ZnNldCk6CisgICAgICAgICogYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmg6CisgICAgICAg
ICogYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzSW5saW5lcy5oOiBBZGRlZC4KKyAgICAgICAg
KEpTQzo6ZXh0cmFjdFN0b3JlZEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAg
ICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6VW5saW5r
ZWRDb2RlQmxvY2s6OmhhbmRsZXJGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OlVu
bGlua2VkQ29kZUJsb2NrOjpoYW5kbGVyRm9ySW5kZXgpOgorICAgICAgICAoSlNDOjpVbmxpbmtl
ZENvZGVCbG9jazo6YXBwbHlNb2RpZmljYXRpb24pOgorICAgICAgICAqIGJ5dGVjb2RlL1VubGlu
a2VkQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6OlVubGlua2VkU3RyaW5nSnVtcFRhYmxlOjpv
ZmZzZXRGb3JWYWx1ZSk6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjpudW1DYWxs
ZWVMb2NhbHMpOgorICAgICAgICAqIGJ5dGVjb2RlL1ZpcnR1YWxSZWdpc3Rlci5oOgorICAgICAg
ICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJh
dG9yOjpCeXRlY29kZUdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0Q29tcGxleFBvcFNjb3Blcyk6CisgICAgICAgIChKU0M6OnByZXBhcmVKdW1wVGFibGVG
b3JTdHJpbmdTd2l0Y2gpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFlp
ZWxkUG9pbnQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFNhdmUpOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlc3VtZSk6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2VuZXJhdG9yU3Rh
dGVMYWJlbCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpiZWdp
bkdlbmVyYXRvcik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpl
bmRHZW5lcmF0b3IpOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdl
bmVyYXRvci5oOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdG9yU3Rh
dGVSZWdpc3Rlcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0b3JW
YWx1ZVJlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRv
clJlc3VtZU1vZGVSZWdpc3Rlcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpn
ZW5lcmF0b3JGcmFtZVJlZ2lzdGVyKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2Rl
Z2VuLmNwcDoKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25Ob2RlOjplbWl0Qnl0ZWNvZGUpOgorICAg
ICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRl
cnByZXRlci5jcHA6CisgICAgICAgIChKU0M6OmZpbmRFeGNlcHRpb25IYW5kbGVyKToKKyAgICAg
ICAgKEpTQzo6R2V0Q2F0Y2hIYW5kbGVyRnVuY3Rvcjo6b3BlcmF0b3IoKSk6CisgICAgICAgIChK
U0M6OlVud2luZEZ1bmN0b3I6Om9wZXJhdG9yKCkpOgorICAgICAgICAqIGludGVycHJldGVyL0lu
dGVycHJldGVyLmg6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXJJbmxpbmVzLmg6
IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRh
cmdldHMuaC4KKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmdldE9wY29kZUlEKToKKyAgICAg
ICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZU1haW5Q
YXNzKToKKyAgICAgICAgKiBqaXQvSklULmg6CisgICAgICAgICogaml0L0pJVE9wY29kZXMuY3Bw
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bfc2F2ZSk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdF9vcF9yZXN1bWUpOiBEZWxldGVkLgorICAgICAgICAqIGxsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXIuYXNtOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAg
ICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJbm5lcik6CisgICAgICAgIChKU0M6OlBh
cnNlcjxMZXhlclR5cGU+OjpwYXJzZUdlbmVyYXRvckZ1bmN0aW9uU291cmNlRWxlbWVudHMpOgor
ICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6Y3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVy
cyk6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5oOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9u
U2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6U0xPV19QQVRIX0RFQ0wpOiBEZWxldGVkLgor
ICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmg6CisgICAgICAgICogcnVudGltZS9H
ZW5lcmF0b3JGcmFtZS5jcHA6IFJlbW92ZWQuCisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1l
OjpHZW5lcmF0b3JGcmFtZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1l
OjpmaW5pc2hDcmVhdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkdlbmVyYXRvckZyYW1l
OjpjcmVhdGVTdHJ1Y3R1cmUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFt
ZTo6Y3JlYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OnNhdmUp
OiBEZWxldGVkLgorICAgICAgICAoSlNDOjpHZW5lcmF0b3JGcmFtZTo6cmVzdW1lKTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9yRnJhbWU6OnZpc2l0Q2hpbGRyZW4pOiBEZWxldGVk
LgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJhdG9yRnJhbWUuaDogUmVtb3ZlZC4KKyAgICAgICAg
KEpTQzo6R2VuZXJhdG9yRnJhbWU6OmxvY2Fscyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Okdl
bmVyYXRvckZyYW1lOjpsb2NhbEF0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9y
RnJhbWU6Om9mZnNldE9mTG9jYWxzKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6R2VuZXJhdG9y
RnJhbWU6OmFsbG9jYXRpb25TaXplRm9yTG9jYWxzKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50
aW1lL0pTR2VuZXJhdG9yRnVuY3Rpb24uaDoKKyAgICAgICAgKiBydW50aW1lL1ZNLmNwcDoKKyAg
ICAgICAgKEpTQzo6Vk06OlZNKToKKyAgICAgICAgKiBydW50aW1lL1ZNLmg6CisKIDIwMTYtMDgt
MjUgIEpGIEJhc3RpZW4gIDxqZmJhc3RpZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFRyeUdldEJ5
SWQgc2hvdWxkIGhhdmUgYSBWYWx1ZVByb2ZpbGUgc28gdGhhdCBpdCBjYW4gcHJlZGljdCBpdHMg
b3V0cHV0IHR5cGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dU
Ri9DaGFuZ2VMb2cKaW5kZXggMzMxYWFlYjkwNTljN2JmYTk4Mjk5MTU4NDdmMDQ0Y2NjY2UwNjRi
My4uOWExZWNjZDAxODFlMTUwMGUxMmNmYzJjZTQ0YzMyZTRkMWJiNWZlZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxMyBAQAorMjAxNi0wOC0yNSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNv
bT4KKworICAgICAgICBbREZHXVtGVExdIEltcGxlbWVudCBFUzYgR2VuZXJhdG9ycyBpbiBERkcg
LyBGVEwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1
MjcyMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
d3RmL0Zhc3RCaXRWZWN0b3IuaDoKKyAgICAgICAgKFdURjo6RmFzdEJpdFZlY3Rvcjo6RmFzdEJp
dFZlY3Rvcik6CisKIDIwMTYtMDgtMjUgIEpGIEJhc3RpZW4gIDxqZmJhc3RpZW5AYXBwbGUuY29t
PgogCiAgICAgICAgIFRyeUdldEJ5SWQgc2hvdWxkIGhhdmUgYSBWYWx1ZVByb2ZpbGUgc28gdGhh
dCBpdCBjYW4gcHJlZGljdCBpdHMgb3V0cHV0IHR5cGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxp
c3RzLnR4dAppbmRleCAzZWQ1NGI4MTcyNjgxOGEwODg0Y2RjMzI1Y2YxN2RkMjViMmViZTYxLi4z
YmVmNDJjZjgyYWQwZTc3ZDg1NjQwMWM5MzcwZGUwMTMwODUyMzkwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NNYWtlTGlzdHMudHh0CkBAIC0xODEsNiArMTgxLDggQEAgc2V0KEphdmFTY3JpcHRDb3Jl
X1NPVVJDRVMKICAgICBieXRlY29kZS9BcnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcAogICAgIGJ5
dGVjb2RlL0FycmF5UHJvZmlsZS5jcHAKICAgICBieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2su
Y3BwCisgICAgYnl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uY3BwCisgICAgYnl0
ZWNvZGUvQnl0ZWNvZGVSZXdyaXRlci5jcHAKICAgICBieXRlY29kZS9CeXRlY29kZUludHJpbnNp
Y1JlZ2lzdHJ5LmNwcAogICAgIGJ5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAK
ICAgICBieXRlY29kZS9DYWxsRWRnZS5jcHAKQEAgLTY2MSw3ICs2NjMsNiBAQCBzZXQoSmF2YVNj
cmlwdENvcmVfU09VUkNFUwogICAgIHJ1bnRpbWUvRnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlLmNw
cAogICAgIHJ1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9GdW5jdGlv
blJhcmVEYXRhLmNwcAotICAgIHJ1bnRpbWUvR2VuZXJhdG9yRnJhbWUuY3BwCiAgICAgcnVudGlt
ZS9HZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcAogICAgIHJ1bnRpbWUvR2VuZXJhdG9y
RnVuY3Rpb25Qcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9HZW5lcmF0b3JQcm90b3R5cGUuY3Bw
CkBAIC05NzksNiArOTgwLDEwIEBAIGFkZF9jdXN0b21fY29tbWFuZCgKICAgICBDT01NQU5EICR7
UFlUSE9OX0VYRUNVVEFCTEV9ICR7SkFWQVNDUklQVENPUkVfRElSfS9nZW5lcmF0ZS1ieXRlY29k
ZS1maWxlcyAtLWJ5dGVjb2Rlc19oICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRDT1JFX0RJ
Un0vQnl0ZWNvZGVzLmggLS1pbml0X2J5dGVjb2Rlc19hc20gJHtERVJJVkVEX1NPVVJDRVNfSkFW
QVNDUklQVENPUkVfRElSfS9Jbml0Qnl0ZWNvZGVzLmFzbSAke0pBVkFTQ1JJUFRDT1JFX0RJUn0v
Ynl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24KICAgICBWRVJCQVRJTSkKIAorbGlzdChBUFBFTkQg
SmF2YVNjcmlwdENvcmVfSEVBREVSUworICAgICR7REVSSVZFRF9TT1VSQ0VTX0pBVkFTQ1JJUFRD
T1JFX0RJUn0vQnl0ZWNvZGVzLmgKKykKKwogYWRkX2N1c3RvbV9jb21tYW5kKAogICAgIE9VVFBV
VCAke0RFUklWRURfU09VUkNFU19KQVZBU0NSSVBUQ09SRV9ESVJ9L0xMSW50RGVzaXJlZE9mZnNl
dHMuaAogICAgIE1BSU5fREVQRU5ERU5DWSAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vb2ZmbGluZWFz
bS9nZW5lcmF0ZV9vZmZzZXRfZXh0cmFjdG9yLnJiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CmluZGV4IGExZDk4M2Q4ZjAwN2U5MGMzNjJiNTk5NWQ0NjBlMjkwM2IyMjUzZDYuLmYzNmU1YTcw
Y2RjMmZhMGM3YmMwZjk1NzkwZTg3YjQ0ZjIzMjE1ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC0xMTk4LDcgKzExOTgsNyBAQAogCQk1M0Y0MEU4RDFENTkwMUYyMDA5OUExQjYg
LyogV0FTTVBhcnNlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTNGNDBFOEMxRDU5MDFGMjAwOTlBMUI2IC8qIFdBU01QYXJzZXIuaCAqLzsgfTsKIAkJ
NTNGNDBFOEYxRDU5MDI4MjAwOTlBMUI2IC8qIFdBU01CM0lSR2VuZXJhdG9yLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzRjQwRThFMUQ1OTAyODIw
MDk5QTFCNiAvKiBXQVNNQjNJUkdlbmVyYXRvci5jcHAgKi87IH07CiAJCTUzRjQwRTkxMUQ1OTAz
MDIwMDk5QTFCNiAvKiBXQVNNT3BzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1M0Y0MEU5MDFENTkwMzAyMDA5OUExQjYgLyogV0FTTU9wcy5oICovOyB9
OwotICAgICAgICAgICAgICAgIDUzRjQwRTkzMUQ1QTRBQjMwMDk5QTFCNiAvKiBXQVNNQjNJUkdl
bmVyYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTNGNDBFOTIxRDVBNEFCMzAwOTlBMUI2IC8qIFdBU01CM0lSR2VuZXJhdG9yLmggKi87IH07CisJ
CTUzRjQwRTkzMUQ1QTRBQjMwMDk5QTFCNiAvKiBXQVNNQjNJUkdlbmVyYXRvci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTNGNDBFOTIxRDVBNEFCMzAw
OTlBMUI2IC8qIFdBU01CM0lSR2VuZXJhdG9yLmggKi87IH07CiAJCTUzRjQwRTk1MUQ1QTdBRUYw
MDk5QTFCNiAvKiBXQVNNTW9kdWxlUGFyc2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1M0Y0MEU5NDFENUE3QUVGMDA5OUExQjYgLyogV0FTTU1vZHVs
ZVBhcnNlci5oICovOyB9OwogCQk1M0Y0MEU5NzFENUE3QkVDMDA5OUExQjYgLyogV0FTTU1vZHVs
ZVBhcnNlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1M0Y0MEU5NjFENUE3QkVDMDA5OUExQjYgLyogV0FTTU1vZHVsZVBhcnNlci5jcHAgKi87IH07
CiAJCTUzRjZCRjZEMUMzRjA2MEEwMEY0MUU1RCAvKiBJbnRlcm5hbEZ1bmN0aW9uQWxsb2NhdGlv
blByb2ZpbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUzRjZCRjZDMUMzRjA2MEEwMEY0MUU1RCAvKiBJbnRlcm5hbEZ1bmN0aW9uQWxsb2NhdGlvblBy
b2ZpbGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpA
QCAtMTI3MCw4ICsxMjcwLDYgQEAKIAkJNzA5RkI4NkMxQUUzMzVDNjAwMzlEMDY5IC8qIFdlYWtT
ZXRQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDcwOUZCODY2MUFFMzM1QzYwMDM5RDA2OSAvKiBXZWFrU2V0UHJvdG90eXBlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzBCMEE5RDExQTlC
NjY0NjAwMDEzMDZBIC8qIFJ1bnRpbWVGbGFncy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNzBCMEE5RDAxQTlCNjYyMDAwMDEzMDZBIC8qIFJ1bnRpbWVG
bGFncy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTcwQjc5MTkxMUMwMjRBMTMwMDI0ODFFMiAvKiBTb3VyY2VDb2RlS2V5LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEI3OTE4RTFDMDI0NEM5MDAyNDgx
RTIgLyogU291cmNlQ29kZUtleS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07Ci0JCTcwQjc5MTkyMUMwMjRBMjMwMDI0ODFFMiAvKiBHZW5lcmF0b3JGcmFt
ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEI3
OTE4MzFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnJhbWUuY3BwICovOyB9OwotCQk3MEI3
OTE5MzFDMDI0QTI4MDAyNDgxRTIgLyogR2VuZXJhdG9yRnJhbWUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwQjc5MTg0MUMwMjQ0MzIwMDI0ODFFMiAv
KiBHZW5lcmF0b3JGcmFtZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTcwQjc5MTk0MUMwMjRBMjgwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlv
bkNvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDcwQjc5MTg1MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0
cnVjdG9yLmNwcCAqLzsgfTsKIAkJNzBCNzkxOTUxQzAyNEEyODAwMjQ4MUUyIC8qIEdlbmVyYXRv
ckZ1bmN0aW9uQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDcwQjc5MTg2MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlv
bkNvbnN0cnVjdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNzBCNzkxOTYxQzAyNEEyODAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uUHJv
dG90eXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDcwQjc5MTg3MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5j
cHAgKi87IH07CkBAIC0yMDQ1LDYgKzIwNDMsMTEgQEAKIAkJRTE4RTNBNTkwREY5Mjc4QzAwRDkw
QjM0IC8qIFZNLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEUxOEUzQTU3MERGOTI3OEMwMEQ5MEIzNCAvKiBWTS5jcHAgKi87IH07CiAJCUUzMThDQkMw
MUI4QUVGNTEwMEEyOTI5RCAvKiBKU01vZHVsZU5hbWVzcGFjZU9iamVjdC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzE4Q0JCRTFCOEFFRjUxMDBB
MjkyOUQgLyogSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuY3BwICovOyB9OwogCQlFMzE4Q0JDMTFC
OEFFRjUxMDBBMjkyOUQgLyogSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMThDQkJGMUI4QUVGNTEwMEEyOTI5
RCAvKiBKU01vZHVsZU5hbWVzcGFjZU9iamVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCUUzMjhEQUU3MUQzOEQwMDQwMDFBMjUyOSAvKiBCeXRl
Y29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFM0QyNjQyNjFEMzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNvZGVHZW5l
cmF0b3JpZmljYXRpb24uY3BwICovOyB9OworCQlFMzI4REFFODFEMzhEMDA1MDAxQTI1MjkgLyog
Qnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEUzRDI2NDI3MUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRlY29kZUdl
bmVyYXRvcmlmaWNhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCUUzMjhEQUU5MUQzOEQwMDUwMDFBMjUyOSAvKiBCeXRlY29kZUdyYXBoLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0QyNjQyODFE
MzhDMDQyMDAwQkUxNzQgLyogQnl0ZWNvZGVHcmFwaC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUUzMjhEQUVBMUQzOEQwMDUwMDFBMjUyOSAvKiBC
eXRlY29kZVJld3JpdGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEUzRDI2NDI5MUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRlY29kZVJld3JpdGVyLmNw
cCAqLzsgfTsKKwkJRTMyOERBRUIxRDM4RDAwNTAwMUEyNTI5IC8qIEJ5dGVjb2RlUmV3cml0ZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzRDI2NDJB
MUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRlY29kZVJld3JpdGVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTMzNjM3QTUxQjYzMjIwMjAwRUUwODQw
IC8qIFJlZmxlY3RPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTMzNjM3QTMxQjYzMjIwMjAwRUUwODQwIC8qIFJlZmxlY3RPYmplY3QuY3Bw
ICovOyB9OwogCQlFMzM2MzdBNjFCNjMyMjAyMDBFRTA4NDAgLyogUmVmbGVjdE9iamVjdC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMzNjM3QTQxQjYz
MjIwMjAwRUUwODQwIC8qIFJlZmxlY3RPYmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMzNCM0UyNjFCN0FCRDc1MDA0OERCMkUgLyogSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uT2JqZWN0Lmx1dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMzQjNFMjUxQjdBQkQ3NTAwNDhEQjJFIC8qIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbk9iamVjdC5sdXQuaCAqLzsgfTsKQEAgLTIwNjksOCArMjA3Miwx
MCBAQAogCQlFMzc5NEU3NTFCNzdFQjk3MDA1NTQzQUUgLyogTW9kdWxlQW5hbHl6ZXIuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM3OTRFNzMxQjc3
RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmNwcCAqLzsgfTsKIAkJRTM3OTRFNzYxQjc3
RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzc5NEU3NDFCNzdFQjk3MDA1NTQzQUUgLyogTW9kdWxl
QW5hbHl6ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQlFMzk2M0NFRTFCNzNGNzUwMDBFQjRDRTUgLyogTm9kZXNBbmFseXplTW9kdWxlLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzOTYzQ0VDMUI3
M0Y3NTAwMEVCNENFNSAvKiBOb2Rlc0FuYWx5emVNb2R1bGUuY3BwICovOyB9OworCQlFMzlENDVG
NTFEMzkwMDU2MDBCM0IzNzcgLyogSW50ZXJwcmV0ZXJJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzlEOUQ4NDFEMzkwMDA2MDA2NjcyODIg
LyogSW50ZXJwcmV0ZXJJbmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJRTM5REE0QTYxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVj
b3JkLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUz
OURBNEE0MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29yZC5jcHAgKi87IH07CiAJCUUz
OURBNEE3MUI3RThCN0MwMDg0RjMzQSAvKiBKU01vZHVsZVJlY29yZC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM5REE0QTUxQjdFOEI3QzAwODRGMzNB
IC8qIEpTTW9kdWxlUmVjb3JkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJRTNBNDIxNDMxRDZGNTg5MzAwMDdDNjE3IC8qIFByZWNpc2VKdW1wVGFy
Z2V0c0lubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEUzQTQyMTQyMUQ2RjU4OEYwMDA3QzYxNyAvKiBQcmVjaXNlSnVtcFRhcmdldHNJbmxpbmVz
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTNE
MjM5QzgxQjgyOUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxlRW52aXJvbm1lbnQuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNEMjM5QzYxQjgyOUMxQzAw
QkJFRjY3IC8qIEpTTW9kdWxlRW52aXJvbm1lbnQuY3BwICovOyB9OwogCQlFM0QyMzlDOTFCODI5
QzFDMDBCQkVGNjcgLyogSlNNb2R1bGVFbnZpcm9ubWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNEMjM5QzcxQjgyOUMxQzAwQkJFRjY3IC8qIEpT
TW9kdWxlRW52aXJvbm1lbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlFM0VGODg3NDFCNjZERjIzMDAzRjI2Q0IgLyogSlNQcm9wZXJ0eU5hbWVJ
dGVyYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFM0VGODg3MjFCNjZERjIzMDAzRjI2Q0IgLyogSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5jcHAg
Ki87IH07CkBAIC0zMzg2LDcgKzMzOTEsNyBAQAogCQk1M0Y0MEU4QzFENTkwMUYyMDA5OUExQjYg
LyogV0FTTVBhcnNlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXQVNNUGFy
c2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzRjQwRThFMUQ1OTAyODIwMDk5
QTFCNiAvKiBXQVNNQjNJUkdlbmVyYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBXQVNNQjNJUkdlbmVyYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTUzRjQwRTkwMUQ1OTAzMDIwMDk5QTFCNiAvKiBXQVNNT3BzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdBU01PcHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLSAgICAgICAgICAgICAgICA1M0Y0MEU5MjFENUE0QUIzMDA5OUExQjYgLyogV0FTTUIzSVJH
ZW5lcmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0FTTUIzSVJHZW5l
cmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTNGNDBFOTIxRDVBNEFCMzAw
OTlBMUI2IC8qIFdBU01CM0lSR2VuZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdBU01CM0lSR2VuZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTUzRjQwRTk0MUQ1QTdBRUYwMDk5QTFCNiAvKiBXQVNNTW9kdWxlUGFyc2VyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdBU01Nb2R1bGVQYXJzZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNTNGNDBFOTYxRDVBN0JFQzAwOTlBMUI2IC8qIFdBU01Nb2R1bGVQ
YXJzZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0FTTU1vZHVs
ZVBhcnNlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzRjZCRjZDMUMzRjA2
MEEwMEY0MUU1RCAvKiBJbnRlcm5hbEZ1bmN0aW9uQWxsb2NhdGlvblByb2ZpbGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW50ZXJuYWxGdW5jdGlvbkFsbG9jYXRpb25Qcm9m
aWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zNDkyLDggKzM0OTcsNiBAQAog
CQk3MDlGQjg2NTFBRTMzNUM2MDAzOUQwNjkgLyogV2Vha1NldFByb3RvdHlwZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWFrU2V0UHJvdG90eXBlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzA5RkI4NjYxQUUzMzVDNjAwMzlEMDY5IC8qIFdl
YWtTZXRQcm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vha1Nl
dFByb3RvdHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MEIwQTlEMDFBOUI2
NjIwMDAwMTMwNkEgLyogUnVudGltZUZsYWdzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFJ1bnRpbWVGbGFncy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3MEI3
OTE4MzFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnJhbWUuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR2VuZXJhdG9yRnJhbWUuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQk3MEI3OTE4NDFDMDI0NDMyMDAyNDgxRTIgLyogR2VuZXJhdG9yRnJh
bWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2VuZXJhdG9yRnJhbWUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzBCNzkxODUxQzAyNDQzMjAwMjQ4MUUyIC8q
IEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcwQjc5MTg2MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0
b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNzBCNzkxODcxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90
eXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdlbmVyYXRvckZ1
bmN0aW9uUHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQzMzMs
MTAgKzQzMzYsMTcgQEAKIAkJRTM3OTRFNzMxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5
emVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1vZHVsZUFuYWx5
emVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM3OTRFNzQxQjc3RUI5NzAw
NTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IE1vZHVsZUFuYWx5emVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzOTYz
Q0VDMUI3M0Y3NTAwMEVCNENFNSAvKiBOb2Rlc0FuYWx5emVNb2R1bGUuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTm9kZXNBbmFseXplTW9kdWxlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM5RDlEODQxRDM5MDAwNjAwNjY3MjgyIC8qIEludGVy
cHJldGVySW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRlcnBy
ZXRlcklubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM5REE0QTQxQjdF
OEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTTW9kdWxlUmVjb3JkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRTM5REE0QTUxQjdFOEI3QzAwODRGMzNBIC8qIEpTTW9kdWxlUmVjb3JkLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTW9kdWxlUmVjb3JkLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzQTQyMTQyMUQ2RjU4OEYwMDA3QzYxNyAvKiBQcmVjaXNl
SnVtcFRhcmdldHNJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBy
ZWNpc2VKdW1wVGFyZ2V0c0lubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RTNEMjM5QzYxQjgyOUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxlRW52aXJvbm1lbnQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNNb2R1bGVFbnZpcm9ubWVudC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzRDIzOUM3MUI4MjlDMUMwMEJCRUY2NyAv
KiBKU01vZHVsZUVudmlyb25tZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEpTTW9kdWxlRW52aXJvbm1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTNE
MjY0MjYxRDM4QzA0MjAwMEJFMTc0IC8qIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJ5dGVjb2RlR2VuZXJhdG9yaWZp
Y2F0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTNEMjY0MjcxRDM4QzA0
MjAwMEJFMTc0IC8qIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzRDI2NDI4MUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRlY29k
ZUdyYXBoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJ5dGVjb2RlR3JhcGgu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTNEMjY0MjkxRDM4QzA0MjAwMEJFMTc0
IC8qIEJ5dGVjb2RlUmV3cml0ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gQnl0ZWNvZGVSZXdyaXRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUUzRDI2NDJBMUQzOEMwNDIwMDBCRTE3NCAvKiBCeXRlY29kZVJld3JpdGVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJ5dGVjb2RlUmV3cml0ZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRTNFRjg4NzIxQjY2REYyMzAwM0YyNkNCIC8qIEpTUHJvcGVydHlO
YW1lSXRlcmF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNQ
cm9wZXJ0eU5hbWVJdGVyYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUz
RUY4ODczMUI2NkRGMjMwMDNGMjZDQiAvKiBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTQ5REMxNDkxMkVGMjYxQTAwMTg0QTFGIC8qIFNv
dXJjZVByb3ZpZGVyQ2FjaGVJdGVtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFNvdXJjZVByb3ZpZGVyQ2FjaGVJdGVtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC01MDYzLDYgKzUwNzMsNyBAQAogCQkxNDI5RDc3QTBFRDIwRDczMDBCODk2MTkgLyogaW50ZXJw
cmV0ZXIgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUUz
OUQ5RDg0MUQzOTAwMDYwMDY2NzI4MiAvKiBJbnRlcnByZXRlcklubGluZXMuaCAqLywKIAkJCQkw
RjU1RjBGMTE0RDEwNjM2MDBBQzc2NDkgLyogQWJzdHJhY3RQQy5jcHAgKi8sCiAJCQkJMEY1NUYw
RjIxNEQxMDYzNjAwQUM3NjQ5IC8qIEFic3RyYWN0UEMuaCAqLywKIAkJCQkxNDI5RDg1QjBFRDIx
OEU5MDBCODk2MTkgLyogQ0xvb3BTdGFjay5jcHAgKi8sCkBAIC01NTU4LDcgKzU1NjksNyBAQAog
CQkJCTUzRjQwRTkwMUQ1OTAzMDIwMDk5QTFCNiAvKiBXQVNNT3BzLmggKi8sCiAJCQkJN0JDNTQ3
RDIxQjY5NTk5QjAwOTU5QjU4IC8qIFdBU01Gb3JtYXQuaCAqLywKIAkJCQk1M0Y0MEU4RTFENTkw
MjgyMDA5OUExQjYgLyogV0FTTUIzSVJHZW5lcmF0b3IuY3BwICovLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA1M0Y0MEU5MjFENUE0QUIzMDA5OUExQjYgLyogV0FTTUIzSVJHZW5l
cmF0b3IuaCAqLywKKwkJCQk1M0Y0MEU5MjFENUE0QUIzMDA5OUExQjYgLyogV0FTTUIzSVJHZW5l
cmF0b3IuaCAqLywKIAkJCQk1M0Y0MEU4QTFENTkwMUJCMDA5OUExQjYgLyogV0FTTUZ1bmN0aW9u
UGFyc2VyLmggKi8sCiAJCQkJNTNGNDBFOTYxRDVBN0JFQzAwOTlBMUI2IC8qIFdBU01Nb2R1bGVQ
YXJzZXIuY3BwICovLAogCQkJCTUzRjQwRTk0MUQ1QTdBRUYwMDk5QTFCNiAvKiBXQVNNTW9kdWxl
UGFyc2VyLmggKi8sCkBAIC01NzQzLDggKzU3NTQsNiBAQAogCQkJCUY2OTJBODVEMDI1NTU5N0Qw
MUZGNjBGNyAvKiBGdW5jdGlvblByb3RvdHlwZS5oICovLAogCQkJCTYyRDJEMzhEMUFERjEwM0Yw
MDAyMDZDMSAvKiBGdW5jdGlvblJhcmVEYXRhLmNwcCAqLywKIAkJCQk2MkQyRDM4RTFBREYxMDNG
MDAwMjA2QzEgLyogRnVuY3Rpb25SYXJlRGF0YS5oICovLAotCQkJCTcwQjc5MTgzMUMwMjQ0MzIw
MDI0ODFFMiAvKiBHZW5lcmF0b3JGcmFtZS5jcHAgKi8sCi0JCQkJNzBCNzkxODQxQzAyNDQzMjAw
MjQ4MUUyIC8qIEdlbmVyYXRvckZyYW1lLmggKi8sCiAJCQkJNzBCNzkxODUxQzAyNDQzMjAwMjQ4
MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwICovLAogCQkJCTcwQjc5MTg2
MUMwMjQ0MzIwMDI0ODFFMiAvKiBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmggKi8sCiAJ
CQkJNzBCNzkxODcxQzAyNDQzMjAwMjQ4MUUyIC8qIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBl
LmNwcCAqLywKQEAgLTY2MzAsNiArNjYzOSwxMiBAQAogCQk5NjlBMDc4RjBFRDFEM0FFMDBGMUY2
ODEgLyogYnl0ZWNvZGUgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0g
KAorCQkJCUUzQTQyMTQyMUQ2RjU4OEYwMDA3QzYxNyAvKiBQcmVjaXNlSnVtcFRhcmdldHNJbmxp
bmVzLmggKi8sCisJCQkJRTNEMjY0MjYxRDM4QzA0MjAwMEJFMTc0IC8qIEJ5dGVjb2RlR2VuZXJh
dG9yaWZpY2F0aW9uLmNwcCAqLywKKwkJCQlFM0QyNjQyNzFEMzhDMDQyMDAwQkUxNzQgLyogQnl0
ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24uaCAqLywKKwkJCQlFM0QyNjQyODFEMzhDMDQyMDAwQkUx
NzQgLyogQnl0ZWNvZGVHcmFwaC5oICovLAorCQkJCUUzRDI2NDI5MUQzOEMwNDIwMDBCRTE3NCAv
KiBCeXRlY29kZVJld3JpdGVyLmNwcCAqLywKKwkJCQlFM0QyNjQyQTFEMzhDMDQyMDAwQkUxNzQg
LyogQnl0ZWNvZGVSZXdyaXRlci5oICovLAogCQkJCTUzNzBCNEYzMUJGMjVFQTIwMDVDNDBGQyAv
KiBBZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnRCYXNlLmNwcCAqLywKIAkJ
CQk1MzcwQjRGNDFCRjI1RUEyMDA1QzQwRkMgLyogQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFs
dWVXYXRjaHBvaW50QmFzZS5oICovLAogCQkJCTBGODMzNUI0MTYzOUMxRTMwMDE0NDNCNSAvKiBB
cnJheUFsbG9jYXRpb25Qcm9maWxlLmNwcCAqLywKQEAgLTcxODQsNiArNzE5OSw3IEBACiAJCQkJ
MEZFQzg1MkQxQkRBQ0RBQzAwODBGRjc0IC8qIEIzUHJvY2VkdXJlSW5saW5lcy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEZFQzg1QkQxQkUxNDYyRjAwODBGRjc0IC8qIEIzUmVkdWNlU3RyZW5ndGgu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUM4NTMxMUJEQUNEQUMwMDgwRkY3NCAvKiBCM1N0YWNr
bWFwU3BlY2lhbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTMyOERBRTgxRDM4RDAwNTAwMUEyNTI5
IC8qIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVD
ODUzNTFCREFDREFDMDA4MEZGNzQgLyogQjNTbG90QmFzZVZhbHVlLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRkVDODUzNjFCREFDREFDMDA4MEZGNzQgLyogQjNTdWNjZXNzb3JDb2xsZWN0aW9uLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRkVDODUzODFCREFDREFDMDA4MEZGNzQgLyogQjNTd2l0Y2hD
YXNlLmggaW4gSGVhZGVycyAqLywKQEAgLTcyMTQsNiArNzIzMCw3IEBACiAJCQkJOTlEQTAwQTkx
QkQ1OTkzMTAwRjQ1NzVDIC8qIGJ1aWx0aW5zX2dlbmVyYXRlX3NlcGFyYXRlX2hlYWRlci5weSBp
biBIZWFkZXJzICovLAogCQkJCTBGMzM4RTExMUJGMDI3NkMwMDEzQzg4RiAvKiBCM09wYXF1ZUJ5
cHJvZHVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkVBMEM0MDMxQ0REN0QxRDAwNDgxOTkxIC8q
IEZ1bmN0aW9uV2hpdGVsaXN0LmggaW4gSGVhZGVycyAqLywKKwkJCQlFM0E0MjE0MzFENkY1ODkz
MDAwN0M2MTcgLyogUHJlY2lzZUp1bXBUYXJnZXRzSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJOTlEQTAwQUExQkQ1OTkzMTAwRjQ1NzVDIC8qIGJ1aWx0aW5zX2dlbmVyYXRlX3NlcGFyYXRl
X2ltcGxlbWVudGF0aW9uLnB5IGluIEhlYWRlcnMgKi8sCiAJCQkJOTlEQTAwQTMxQkQ1OTkzMTAw
RjQ1NzVDIC8qIGJ1aWx0aW5zX2dlbmVyYXRvci5weSBpbiBIZWFkZXJzICovLAogCQkJCTQxMjk1
Mjc4MUQyQ0Y2QkMwMEU3OEI4OSAvKiBidWlsdGluc19nZW5lcmF0ZV9pbnRlcm5hbHNfd3JhcHBl
cl9pbXBsZW1lbnRhdGlvbi5weSBpbiBIZWFkZXJzICovLApAQCAtNzQ0OSw3ICs3NDY2LDYgQEAK
IAkJCQlBNzM3ODEwRTE3OTlFQTJFMDA4MTc1MzMgLyogREZHTmF0dXJhbExvb3BzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk4NkVDQTNFQTEzMkRFRjFDMDAyQjJBRDcgLyogREZHTm9kZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEZGQjkyMUIxNkQwMkYwMTAwNTVBNURCIC8qIERGR05vZGVBbGxvY2F0
b3IuaCBpbiBIZWFkZXJzICovLAotCQkJCTcwQjc5MTkzMUMwMjRBMjgwMDI0ODFFMiAvKiBHZW5l
cmF0b3JGcmFtZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZBNTgxQkIxNTBFOTUzMDAwQjlBMkQ5
IC8qIERGR05vZGVGbGFncy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYzMDBCNzgxOEFCMDUxMTAw
QTZENzJFIC8qIERGR05vZGVPcmlnaW4uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQTU4MUJDMTUw
RTk1MzAwMEI5QTJEOSAvKiBERkdOb2RlVHlwZS5oIGluIEhlYWRlcnMgKi8sCkBAIC03NDY0LDYg
Kzc0ODAsNyBAQAogCQkJCTBGRDhBMzI2MTdENTFGNTcwMENBMkM0MCAvKiBERkdPU1JFbnRyeXBv
aW50Q3JlYXRpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDMDk3NkExNDY4QTZGNzAw
Q0YyNDQyIC8qIERGR09TUkV4aXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjM1QkVDMTcxNzhF
NzMwMDY5MEM3RiAvKiBERkdPU1JFeGl0QmFzZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM5RDQ1
RjUxRDM5MDA1NjAwQjNCMzc3IC8qIEludGVycHJldGVySW5saW5lcy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEZGQjkyMUMxNkQwMkYxMTAwNTVBNURCIC8qIERGR09TUkV4aXRDb21waWxhdGlvbklu
Zm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQzA5NzcxMTQ2OTNBRjUwMENGMjQ0MiAvKiBERkdP
U1JFeGl0Q29tcGlsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNzAyNUFBMTcxNEIwRkMwMDM4
MkMwRSAvKiBERkdPU1JFeGl0Q29tcGlsZXJDb21tb24uaCBpbiBIZWFkZXJzICovLApAQCAtNzcy
Niw2ICs3NzQzLDcgQEAKIAkJCQlFMzNCM0UyNjFCN0FCRDc1MDA0OERCMkUgLyogSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uT2JqZWN0Lmx1dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTUzMjQzOEMx
ODU2ODMzNTAwMkVENjkyIC8qIEluc3BlY3RvclByb3RvY29sT2JqZWN0cy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTU1RDkzQUMxODUxNEY3OTAwNDAwREVEIC8qIEluc3BlY3RvclByb3RvY29sVHlw
ZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzMjhEQUVCMUQzOEQwMDUwMDFBMjUyOSAvKiBCeXRl
Y29kZVJld3JpdGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTBFNEI2MjE4ODA5REQ1MDA2OEE0
NkQgLyogSW5zcGVjdG9yUnVudGltZUFnZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTkzQ0Y4
MzE4NDAzNzcxMDBCRkNFMjcgLyogSW5zcGVjdG9yVmFsdWVzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk5NjlBMDc5OTBFRDFEM0FFMDBGMUY2ODEgLyogSW5zdHJ1Y3Rpb24uaCBpbiBIZWFkZXJzICov
LApAQCAtNzg1Nyw2ICs3ODc1LDcgQEAKIAkJCQlFMzNGNTA4MTFCODQyOUE0MDA0MTM4NTYgLyog
SlNJbnRlcm5hbFByb21pc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNjE4MzJBMUM0NUJGMDcw
MDcyNDUwQiAvKiBBaXJDQ2FsbGluZ0NvbnZlbnRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUUz
M0Y1MDc5MUI4NDIyNTcwMDQxMzg1NiAvKiBKU0ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yLmgg
aW4gSGVhZGVycyAqLywKKwkJCQlFMzI4REFFOTFEMzhEMDA1MDAxQTI1MjkgLyogQnl0ZWNvZGVH
cmFwaC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTMzRjUwODcxQjg0NDlFRjAwNDEzODU2IC8qIEpT
SW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IubHV0LmggaW4gSGVhZGVycyAqLywKIAkJCQlFMzNG
NTA4NTFCODQzN0EwMDA0MTM4NTYgLyogSlNJbnRlcm5hbFByb21pc2VEZWZlcnJlZC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRTMzRjUwNzUxQjg0MjFDMDAwNDEzODU2IC8qIEpTSW50ZXJuYWxQcm9t
aXNlUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKQEAgLTc5NDUsNyArNzk2NCw3IEBACiAJCQkJ
MEZCNTQ2NzcxNEY1OUI1QzAwMkMyOTg5IC8qIExhenlPcGVyYW5kVmFsdWVQcm9maWxlLmggaW4g
SGVhZGVycyAqLywKIAkJCQk5OURBMDBCMDFCRDU5OTRFMDBGNDU3NUMgLyogbGF6eXdyaXRlci5w
eSBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDMxMEUxNkY1Q0QwMEIzNDQ2MCAvKiBMZXhlci5o
IGluIEhlYWRlcnMgKi8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUzRjQwRTkz
MUQ1QTRBQjMwMDk5QTFCNiAvKiBXQVNNQjNJUkdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJNTNGNDBFOTMxRDVBNEFCMzAwOTlBMUI2IC8qIFdBU01CM0lSR2VuZXJhdG9yLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCQzE4QzUyRTBFMTZGQ0UxMDBCMzQ0NjAgLyogTGV4ZXIubHV0LmggaW4g
SGVhZGVycyAqLywKIAkJCQlEQ0YzRDU2QjFDRDI5NDcyMDAzRDVDNjUgLyogTGF6eUNsYXNzU3Ry
dWN0dXJlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkUxODdBMDIxQkZCRTU2MTAwMzhC
QkNBIC8qIEpJVE11bEdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8sCkBAIC04ODIzLDYgKzg4NDIs
NyBAQAogCQkJCTE0N0YzOUJEMTA3RUMzNzYwMDQyN0E0OCAvKiBBcmdMaXN0LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTBGNzQzQkFBMTZCODgyNDkwMDlGOTI3NyAvKiBBUk02NERpc2Fzc2VtYmxl
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NkQzQjJDMzEwMTU2QkRFMDAyODY1RTcgLyogQVJN
QXNzZW1ibGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUUzMjhEQUU3MUQzOEQwMDQwMDFBMjUy
OSAvKiBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2
NUMwMjg1MDE3MTc5NUUyMDAzNTFFMzUgLyogQVJNdjdEaXNhc3NlbWJsZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNjVDMDI4NUMxNzE3OTY2ODAwMzUxRTM1IC8qIEFSTXY3RE9wY29kZS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkwRjgzMzVCNzE2MzlDMUU2MDAxNDQzQjUgLyogQXJyYXlBbGxv
Y2F0aW9uUHJvZmlsZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTkxNTgsNiArOTE3OCw3IEBACiAJ
CQkJMEYyNUYxQjExODE2MzVGMzAwNTIyRjM5IC8qIEZUTFNsb3dQYXRoQ2FsbC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkwRjMzOERGMTFCRTkzQUQxMDAxM0M4OEYgLyogQjNTdGFja21hcFZhbHVl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMjVGMUIzMTgxNjM1RjMwMDUyMkYzOSAvKiBGVExT
bG93UGF0aENhbGxLZXkuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTMyOERBRUExRDM4RDAwNTAw
MUEyNTI5IC8qIEJ5dGVjb2RlUmV3cml0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDMxOURB
MDMxQzFCRTQwQTAwMUQyNjBCIC8qIEIzTG93ZXJNYWNyb3NBZnRlck9wdGltaXphdGlvbnMuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFQTBBMTYxNzA2QkI5MDAwQkI3MjJDIC8qIEZUTFN0YXRl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMjM1QkUxMTcxNzhFMUMwMDY5MEM3RiAvKiBGVExU
aHVua3MuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC05NTY1LDcgKzk1ODYsNiBAQAogCQkJCTc5RUUw
QkZGMUI0QUZCODUwMDAzODVDOSAvKiBWYXJpYWJsZUVudmlyb25tZW50LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTBGNkM3MzUwMUFDOUY5OUYwMEJFMTY4MiAvKiBWYXJpYWJsZVdyaXRlRmlyZURl
dGFpbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkUwNTAyQzFBQTkwOTU2MDBEMzNCMzMgLyog
VmFyT2Zmc2V0LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTcwQjc5MTkyMUMwMjRBMjMwMDI0ODFF
MiAvKiBHZW5lcmF0b3JGcmFtZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjIwQzI1OTFBODAx
M0FCMDBEQTMyMjkgLyogVmlydHVhbFJlZ2lzdGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUx
OEUzQTU5MERGOTI3OEMwMEQ5MEIzNCAvKiBWTS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRTU5
MzJBNzE4M0M1QTI2MDBBMUVDQ0MgLyogVk1FbnRyeVNjb3BlLmNwcCBpbiBTb3VyY2VzICovLApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0dlbmVyYXRvclByb3Rv
dHlwZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9HZW5lcmF0b3JQcm90b3R5
cGUuanMKaW5kZXggM2MxNDA2ODdkZmM3ZTAwZWZlOTFhZTgwYjJhYzY3NmZhOWJmNDhmNC4uNDk5
ZGJkMzkyZTgzMTNkY2RkODZlYzhjMTYwNTY5ZDdkNmY1NDliMSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0dlbmVyYXRvclByb3RvdHlwZS5qcworKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvR2VuZXJhdG9yUHJvdG90eXBlLmpzCkBAIC01MSw3
ICs1MSw3IEBAIGZ1bmN0aW9uIGdlbmVyYXRvclJlc3VtZShnZW5lcmF0b3IsIHNlbnRWYWx1ZSwg
cmVzdW1lTW9kZSkKICAgICB9IGVsc2UgewogICAgICAgICB0cnkgewogICAgICAgICAgICAgZ2Vu
ZXJhdG9yLkBnZW5lcmF0b3JTdGF0ZSA9IEBHZW5lcmF0b3JTdGF0ZUV4ZWN1dGluZzsKLSAgICAg
ICAgICAgIHZhbHVlID0gZ2VuZXJhdG9yLkBnZW5lcmF0b3JOZXh0LkBjYWxsKGdlbmVyYXRvci5A
Z2VuZXJhdG9yVGhpcywgZ2VuZXJhdG9yLCBzdGF0ZSwgc2VudFZhbHVlLCByZXN1bWVNb2RlKTsK
KyAgICAgICAgICAgIHZhbHVlID0gZ2VuZXJhdG9yLkBnZW5lcmF0b3JOZXh0LkBjYWxsKGdlbmVy
YXRvci5AZ2VuZXJhdG9yVGhpcywgZ2VuZXJhdG9yLCBzdGF0ZSwgc2VudFZhbHVlLCByZXN1bWVN
b2RlLCBnZW5lcmF0b3IuQGdlbmVyYXRvckZyYW1lKTsKICAgICAgICAgICAgIGlmIChnZW5lcmF0
b3IuQGdlbmVyYXRvclN0YXRlID09PSBAR2VuZXJhdG9yU3RhdGVFeGVjdXRpbmcpIHsKICAgICAg
ICAgICAgICAgICBnZW5lcmF0b3IuQGdlbmVyYXRvclN0YXRlID0gQEdlbmVyYXRvclN0YXRlQ29t
cGxldGVkOwogICAgICAgICAgICAgICAgIGRvbmUgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcAppbmRleCA3ZjE3
YzBlZjEwYjQzM2ZhYzhmNThjYjNiOWNhNWQ0ZDAxNWJiYTA4Li5iYjc1MTIxYjgyYWFhNzY2NDYw
NmNiNDVkMzZiMjliNjJlOWNhYzRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2lu
Y2x1ZGUgIkJ5dGVjb2RlQmFzaWNCbG9jay5oIgogCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisj
aW5jbHVkZSAiSW50ZXJwcmV0ZXJJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgog
I2luY2x1ZGUgIlByZWNpc2VKdW1wVGFyZ2V0cy5oIgogCkBAIC0zNCw2OSArMzUsMTAgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKIHZvaWQgQnl0ZWNvZGVCYXNpY0Jsb2NrOjpzaHJpbmtUb0ZpdCgpCiB7
Ci0gICAgbV9ieXRlY29kZU9mZnNldHMuc2hyaW5rVG9GaXQoKTsKKyAgICBtX29mZnNldHMuc2hy
aW5rVG9GaXQoKTsKICAgICBtX3N1Y2Nlc3NvcnMuc2hyaW5rVG9GaXQoKTsKIH0KIAotc3RhdGlj
IGJvb2wgaXNCcmFuY2goT3Bjb2RlSUQgb3Bjb2RlSUQpCi17Ci0gICAgc3dpdGNoIChvcGNvZGVJ
RCkgewotICAgIGNhc2Ugb3Bfam1wOgotICAgIGNhc2Ugb3BfanRydWU6Ci0gICAgY2FzZSBvcF9q
ZmFsc2U6Ci0gICAgY2FzZSBvcF9qZXFfbnVsbDoKLSAgICBjYXNlIG9wX2puZXFfbnVsbDoKLSAg
ICBjYXNlIG9wX2puZXFfcHRyOgotICAgIGNhc2Ugb3Bfamxlc3M6Ci0gICAgY2FzZSBvcF9qbGVz
c2VxOgotICAgIGNhc2Ugb3BfamdyZWF0ZXI6Ci0gICAgY2FzZSBvcF9qZ3JlYXRlcmVxOgotICAg
IGNhc2Ugb3Bfam5sZXNzOgotICAgIGNhc2Ugb3Bfam5sZXNzZXE6Ci0gICAgY2FzZSBvcF9qbmdy
ZWF0ZXI6Ci0gICAgY2FzZSBvcF9qbmdyZWF0ZXJlcToKLSAgICBjYXNlIG9wX3N3aXRjaF9pbW06
Ci0gICAgY2FzZSBvcF9zd2l0Y2hfY2hhcjoKLSAgICBjYXNlIG9wX3N3aXRjaF9zdHJpbmc6Ci0g
ICAgY2FzZSBvcF9zYXZlOgotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBkZWZhdWx0OgotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotfQotCi1zdGF0aWMgYm9vbCBpc1VuY29uZGl0aW9u
YWxCcmFuY2goT3Bjb2RlSUQgb3Bjb2RlSUQpCi17Ci0gICAgc3dpdGNoIChvcGNvZGVJRCkgewot
ICAgIGNhc2Ugb3Bfam1wOgotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBkZWZhdWx0OgotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotfQotCi1zdGF0aWMgYm9vbCBpc1Rlcm1pbmFsKE9w
Y29kZUlEIG9wY29kZUlEKQotewotICAgIHN3aXRjaCAob3Bjb2RlSUQpIHsKLSAgICBjYXNlIG9w
X3JldDoKLSAgICBjYXNlIG9wX2VuZDoKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgZGVmYXVs
dDoKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLX0KLQotc3RhdGljIGJvb2wgaXNUaHJv
dyhPcGNvZGVJRCBvcGNvZGVJRCkKLXsKLSAgICBzd2l0Y2ggKG9wY29kZUlEKSB7Ci0gICAgY2Fz
ZSBvcF90aHJvdzoKLSAgICBjYXNlIG9wX3Rocm93X3N0YXRpY19lcnJvcjoKLSAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLX0K
LQogc3RhdGljIGJvb2wgaXNKdW1wVGFyZ2V0KE9wY29kZUlEIG9wY29kZUlELCBjb25zdCBWZWN0
b3I8dW5zaWduZWQsIDMyPiYganVtcFRhcmdldHMsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KQog
ewogICAgIGlmIChvcGNvZGVJRCA9PSBvcF9jYXRjaCkKQEAgLTEwNSwxNSArNDcsMjAgQEAgc3Rh
dGljIGJvb2wgaXNKdW1wVGFyZ2V0KE9wY29kZUlEIG9wY29kZUlELCBjb25zdCBWZWN0b3I8dW5z
aWduZWQsIDMyPiYganVtcFRhcmcKICAgICByZXR1cm4gc3RkOjpiaW5hcnlfc2VhcmNoKGp1bXBU
YXJnZXRzLmJlZ2luKCksIGp1bXBUYXJnZXRzLmVuZCgpLCBieXRlY29kZU9mZnNldCk7CiB9CiAK
LXN0YXRpYyB2b2lkIGxpbmtCbG9ja3MoQnl0ZWNvZGVCYXNpY0Jsb2NrKiBwcmVkZWNlc3Nvciwg
Qnl0ZWNvZGVCYXNpY0Jsb2NrKiBzdWNjZXNzb3IpCi17Ci0gICAgcHJlZGVjZXNzb3ItPmFkZFN1
Y2Nlc3NvcihzdWNjZXNzb3IpOwotfQotCi12b2lkIGNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tz
KENvZGVCbG9jayogY29kZUJsb2NrLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFz
aWNCbG9jaz4+JiBiYXNpY0Jsb2NrcykKK3RlbXBsYXRlPHR5cGVuYW1lIEJsb2NrLCB0eXBlbmFt
ZSBJbnN0cnVjdGlvbj4KK3ZvaWQgQnl0ZWNvZGVCYXNpY0Jsb2NrOjpjb21wdXRlSW1wbChCbG9j
ayogY29kZUJsb2NrLCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGlu
c3RydWN0aW9uQ291bnQsIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2Nr
Pj4mIGJhc2ljQmxvY2tzKQogewogICAgIFZlY3Rvcjx1bnNpZ25lZCwgMzI+IGp1bXBUYXJnZXRz
OwotICAgIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMoY29kZUJsb2NrLCBqdW1wVGFyZ2V0cyk7
CisgICAgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhjb2RlQmxvY2ssIGluc3RydWN0aW9uc0Jl
Z2luLCBpbnN0cnVjdGlvbkNvdW50LCBqdW1wVGFyZ2V0cyk7CisKKyAgICBhdXRvIGFwcGVuZEJs
b2NrID0gWyZdIChzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiYmIGJsb2NrKSB7
CisgICAgICAgIGJsb2NrLT5tX2luZGV4ID0gYmFzaWNCbG9ja3Muc2l6ZSgpOworICAgICAgICBi
YXNpY0Jsb2Nrcy5hcHBlbmQoV1RGTW92ZShibG9jaykpOworICAgIH07CisKKyAgICBhdXRvIGxp
bmtCbG9ja3MgPSBbJl0gKEJ5dGVjb2RlQmFzaWNCbG9jayogZnJvbSwgQnl0ZWNvZGVCYXNpY0Js
b2NrKiB0bykgeworICAgICAgICBmcm9tLT5hZGRTdWNjZXNzb3IodG8pOworICAgIH07CiAKICAg
ICAvLyBDcmVhdGUgdGhlIGVudHJ5IGFuZCBleGl0IGJhc2ljIGJsb2Nrcy4KICAgICBiYXNpY0Js
b2Nrcy5yZXNlcnZlQ2FwYWNpdHkoanVtcFRhcmdldHMuc2l6ZSgpICsgMik7CkBAIC0xMjIsMTkg
KzY5LDE3IEBAIHZvaWQgY29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MoQ29kZUJsb2NrKiBjb2Rl
QmxvY2ssIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0CiAgICAgYXV0byBmaXJzdEJsb2NrID0g
c3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZUJhc2ljQmxvY2s+KDAsIDApOwogICAgIGxpbmtCbG9j
a3MoZW50cnkuZ2V0KCksIGZpcnN0QmxvY2suZ2V0KCkpOwogCi0gICAgYmFzaWNCbG9ja3MuYXBw
ZW5kKFdURk1vdmUoZW50cnkpKTsKKyAgICBhcHBlbmRCbG9jayhXVEZNb3ZlKGVudHJ5KSk7CiAg
ICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBjdXJyZW50ID0gZmlyc3RCbG9jay5nZXQoKTsKLSAgICBi
YXNpY0Jsb2Nrcy5hcHBlbmQoV1RGTW92ZShmaXJzdEJsb2NrKSk7CisgICAgYXBwZW5kQmxvY2so
V1RGTW92ZShmaXJzdEJsb2NrKSk7CiAKICAgICBhdXRvIGV4aXQgPSBzdGQ6Om1ha2VfdW5pcXVl
PEJ5dGVjb2RlQmFzaWNCbG9jaz4oQnl0ZWNvZGVCYXNpY0Jsb2NrOjpFeGl0QmxvY2spOwogCiAg
ICAgYm9vbCBuZXh0SW5zdHJ1Y3Rpb25Jc0xlYWRlciA9IGZhbHNlOwogCiAgICAgSW50ZXJwcmV0
ZXIqIGludGVycHJldGVyID0gY29kZUJsb2NrLT52bSgpLT5pbnRlcnByZXRlcjsKLSAgICBJbnN0
cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4gPSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJl
Z2luKCk7Ci0gICAgdW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCA9IGNvZGVCbG9jay0+aW5zdHJ1
Y3Rpb25zKCkuc2l6ZSgpOwogICAgIGZvciAodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQgPSAwOyBi
eXRlY29kZU9mZnNldCA8IGluc3RydWN0aW9uQ291bnQ7KSB7Ci0gICAgICAgIE9wY29kZUlEIG9w
Y29kZUlEID0gaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGluc3RydWN0aW9uc0JlZ2luW2J5dGVj
b2RlT2Zmc2V0XS51Lm9wY29kZSk7CisgICAgICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW50ZXJw
cmV0ZXItPmdldE9wY29kZUlEKGluc3RydWN0aW9uc0JlZ2luW2J5dGVjb2RlT2Zmc2V0XSk7CiAg
ICAgICAgIHVuc2lnbmVkIG9wY29kZUxlbmd0aCA9IG9wY29kZUxlbmd0aHNbb3Bjb2RlSURdOwog
CiAgICAgICAgIGJvb2wgY3JlYXRlZEJsb2NrID0gZmFsc2U7CkBAIC0xNDIsNyArODcsNyBAQCB2
b2lkIGNvbXB1dGVCeXRlY29kZUJhc2ljQmxvY2tzKENvZGVCbG9jayogY29kZUJsb2NrLCBWZWN0
b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dAogICAgICAgICBpZiAoaXNKdW1wVGFyZ2V0KG9wY29kZUlE
LCBqdW1wVGFyZ2V0cywgYnl0ZWNvZGVPZmZzZXQpIHx8IG5leHRJbnN0cnVjdGlvbklzTGVhZGVy
KSB7CiAgICAgICAgICAgICBhdXRvIG5ld0Jsb2NrID0gc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29k
ZUJhc2ljQmxvY2s+KGJ5dGVjb2RlT2Zmc2V0LCBvcGNvZGVMZW5ndGgpOwogICAgICAgICAgICAg
Y3VycmVudCA9IG5ld0Jsb2NrLmdldCgpOwotICAgICAgICAgICAgYmFzaWNCbG9ja3MuYXBwZW5k
KFdURk1vdmUobmV3QmxvY2spKTsKKyAgICAgICAgICAgIGFwcGVuZEJsb2NrKFdURk1vdmUobmV3
QmxvY2spKTsKICAgICAgICAgICAgIGNyZWF0ZWRCbG9jayA9IHRydWU7CiAgICAgICAgICAgICBu
ZXh0SW5zdHJ1Y3Rpb25Jc0xlYWRlciA9IGZhbHNlOwogICAgICAgICAgICAgYnl0ZWNvZGVPZmZz
ZXQgKz0gb3Bjb2RlTGVuZ3RoOwpAQCAtMTU2LDcgKzEwMSw3IEBAIHZvaWQgY29tcHV0ZUJ5dGVj
b2RlQmFzaWNCbG9ja3MoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFZlY3RvcjxzdGQ6OnVuaXF1ZV9w
dHI8Qnl0CiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAvLyBPdGhlcndpc2UsIGp1
c3QgYWRkIHRvIHRoZSBsZW5ndGggb2YgdGhlIGN1cnJlbnQgYmxvY2suCi0gICAgICAgIGN1cnJl
bnQtPmFkZEJ5dGVjb2RlTGVuZ3RoKG9wY29kZUxlbmd0aCk7CisgICAgICAgIGN1cnJlbnQtPmFk
ZExlbmd0aChvcGNvZGVMZW5ndGgpOwogICAgICAgICBieXRlY29kZU9mZnNldCArPSBvcGNvZGVM
ZW5ndGg7CiAgICAgfQogCkBAIC0xNjgsMTMgKzExMywxMiBAQCB2b2lkIGNvbXB1dGVCeXRlY29k
ZUJhc2ljQmxvY2tzKENvZGVCbG9jayogY29kZUJsb2NrLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRy
PEJ5dAogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgYm9vbCBmYWxsc1Rocm91Z2gg
PSB0cnVlOyAKLSAgICAgICAgZm9yICh1bnNpZ25lZCBieXRlY29kZU9mZnNldCA9IGJsb2NrLT5s
ZWFkZXJCeXRlY29kZU9mZnNldCgpOyBieXRlY29kZU9mZnNldCA8IGJsb2NrLT5sZWFkZXJCeXRl
Y29kZU9mZnNldCgpICsgYmxvY2stPnRvdGFsQnl0ZWNvZGVMZW5ndGgoKTspIHsKLSAgICAgICAg
ICAgIGNvbnN0IEluc3RydWN0aW9uJiBjdXJyZW50SW5zdHJ1Y3Rpb24gPSBpbnN0cnVjdGlvbnNC
ZWdpbltieXRlY29kZU9mZnNldF07Ci0gICAgICAgICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGlu
dGVycHJldGVyLT5nZXRPcGNvZGVJRChjdXJyZW50SW5zdHJ1Y3Rpb24udS5vcGNvZGUpOworICAg
ICAgICBmb3IgKHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0ID0gYmxvY2stPmxlYWRlck9mZnNldCgp
OyBieXRlY29kZU9mZnNldCA8IGJsb2NrLT5sZWFkZXJPZmZzZXQoKSArIGJsb2NrLT50b3RhbExl
bmd0aCgpOykgeworICAgICAgICAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnRlcnByZXRlci0+
Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25zQmVnaW5bYnl0ZWNvZGVPZmZzZXRdKTsKICAgICAgICAg
ICAgIHVuc2lnbmVkIG9wY29kZUxlbmd0aCA9IG9wY29kZUxlbmd0aHNbb3Bjb2RlSURdOwogICAg
ICAgICAgICAgLy8gSWYgd2UgZm91bmQgYSB0ZXJtaW5hbCBieXRlY29kZSwgbGluayB0byB0aGUg
ZXhpdCBibG9jay4KICAgICAgICAgICAgIGlmIChpc1Rlcm1pbmFsKG9wY29kZUlEKSkgewotICAg
ICAgICAgICAgICAgIEFTU0VSVChieXRlY29kZU9mZnNldCArIG9wY29kZUxlbmd0aCA9PSBibG9j
ay0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKSArIGJsb2NrLT50b3RhbEJ5dGVjb2RlTGVuZ3RoKCkp
OworICAgICAgICAgICAgICAgIEFTU0VSVChieXRlY29kZU9mZnNldCArIG9wY29kZUxlbmd0aCA9
PSBibG9jay0+bGVhZGVyT2Zmc2V0KCkgKyBibG9jay0+dG90YWxMZW5ndGgoKSk7CiAgICAgICAg
ICAgICAgICAgbGlua0Jsb2NrcyhibG9jaywgZXhpdC5nZXQoKSk7CiAgICAgICAgICAgICAgICAg
ZmFsbHNUaHJvdWdoID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0xODQsOCAr
MTI4LDggQEAgdm9pZCBjb21wdXRlQnl0ZWNvZGVCYXNpY0Jsb2NrcyhDb2RlQmxvY2sqIGNvZGVC
bG9jaywgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXQKICAgICAgICAgICAgIC8vIElmIHRoZXJl
IGlzbid0IG9uZSwgdHJlYXQgdGhpcyB0aHJvdyBhcyBhIHRlcm1pbmFsLiBUaGlzIGlzIHRydWUg
ZXZlbiBpZiB3ZSBoYXZlIGEgZmluYWxseQogICAgICAgICAgICAgLy8gYmxvY2sgYmVjYXVzZSB0
aGUgZmluYWxseSBibG9jayB3aWxsIGNyZWF0ZSBpdHMgb3duIGNhdGNoLCB3aGljaCB3aWxsIGdl
bmVyYXRlIGEgSGFuZGxlckluZm8uCiAgICAgICAgICAgICBpZiAoaXNUaHJvdyhvcGNvZGVJRCkp
IHsKLSAgICAgICAgICAgICAgICBBU1NFUlQoYnl0ZWNvZGVPZmZzZXQgKyBvcGNvZGVMZW5ndGgg
PT0gYmxvY2stPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCkgKyBibG9jay0+dG90YWxCeXRlY29kZUxl
bmd0aCgpKTsKLSAgICAgICAgICAgICAgICBIYW5kbGVySW5mbyogaGFuZGxlciA9IGNvZGVCbG9j
ay0+aGFuZGxlckZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KTsKKyAgICAgICAgICAg
ICAgICBBU1NFUlQoYnl0ZWNvZGVPZmZzZXQgKyBvcGNvZGVMZW5ndGggPT0gYmxvY2stPmxlYWRl
ck9mZnNldCgpICsgYmxvY2stPnRvdGFsTGVuZ3RoKCkpOworICAgICAgICAgICAgICAgIGF1dG8q
IGhhbmRsZXIgPSBjb2RlQmxvY2stPmhhbmRsZXJGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9m
ZnNldCk7CiAgICAgICAgICAgICAgICAgZmFsbHNUaHJvdWdoID0gZmFsc2U7CiAgICAgICAgICAg
ICAgICAgaWYgKCFoYW5kbGVyKSB7CiAgICAgICAgICAgICAgICAgICAgIGxpbmtCbG9ja3MoYmxv
Y2ssIGV4aXQuZ2V0KCkpOwpAQCAtMTkzLDcgKzEzNyw3IEBAIHZvaWQgY29tcHV0ZUJ5dGVjb2Rl
QmFzaWNCbG9ja3MoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8
Qnl0CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBiYXNpY0Jsb2Nrcy5zaXplKCk7IGkrKykgewogICAgICAgICAgICAgICAgICAgICBC
eXRlY29kZUJhc2ljQmxvY2sqIG90aGVyQmxvY2sgPSBiYXNpY0Jsb2Nrc1tpXS5nZXQoKTsKLSAg
ICAgICAgICAgICAgICAgICAgaWYgKGhhbmRsZXItPnRhcmdldCA9PSBvdGhlckJsb2NrLT5sZWFk
ZXJCeXRlY29kZU9mZnNldCgpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChoYW5kbGVyLT50
YXJnZXQgPT0gb3RoZXJCbG9jay0+bGVhZGVyT2Zmc2V0KCkpIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgIGxpbmtCbG9ja3MoYmxvY2ssIG90aGVyQmxvY2spOwogICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTIwMywxMyArMTQ3LDEzIEBA
IHZvaWQgY29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFZl
Y3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0CiAKICAgICAgICAgICAgIC8vIElmIHdlIGZvdW5kIGEg
YnJhbmNoLCBsaW5rIHRvIHRoZSBibG9jayhzKSB0aGF0IHdlIGp1bXAgdG8uCiAgICAgICAgICAg
ICBpZiAoaXNCcmFuY2gob3Bjb2RlSUQpKSB7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKGJ5dGVj
b2RlT2Zmc2V0ICsgb3Bjb2RlTGVuZ3RoID09IGJsb2NrLT5sZWFkZXJCeXRlY29kZU9mZnNldCgp
ICsgYmxvY2stPnRvdGFsQnl0ZWNvZGVMZW5ndGgoKSk7CisgICAgICAgICAgICAgICAgQVNTRVJU
KGJ5dGVjb2RlT2Zmc2V0ICsgb3Bjb2RlTGVuZ3RoID09IGJsb2NrLT5sZWFkZXJPZmZzZXQoKSAr
IGJsb2NrLT50b3RhbExlbmd0aCgpKTsKICAgICAgICAgICAgICAgICBWZWN0b3I8dW5zaWduZWQs
IDE+IGJ5dGVjb2RlT2Zmc2V0c0p1bXBlZFRvOwotICAgICAgICAgICAgICAgIGZpbmRKdW1wVGFy
Z2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9jaywgYnl0ZWNvZGVPZmZzZXQsIGJ5dGVjb2Rl
T2Zmc2V0c0p1bXBlZFRvKTsKKyAgICAgICAgICAgICAgICBmaW5kSnVtcFRhcmdldHNGb3JCeXRl
Y29kZU9mZnNldChjb2RlQmxvY2ssIGluc3RydWN0aW9uc0JlZ2luLCBieXRlY29kZU9mZnNldCwg
Ynl0ZWNvZGVPZmZzZXRzSnVtcGVkVG8pOwogCiAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IGJhc2ljQmxvY2tzLnNpemUoKTsgaSsrKSB7CiAgICAgICAgICAgICAgICAg
ICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogb3RoZXJCbG9jayA9IGJhc2ljQmxvY2tzW2ldLmdldCgp
OwotICAgICAgICAgICAgICAgICAgICBpZiAoYnl0ZWNvZGVPZmZzZXRzSnVtcGVkVG8uY29udGFp
bnMob3RoZXJCbG9jay0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKSkpCisgICAgICAgICAgICAgICAg
ICAgIGlmIChieXRlY29kZU9mZnNldHNKdW1wZWRUby5jb250YWlucyhvdGhlckJsb2NrLT5sZWFk
ZXJPZmZzZXQoKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rQmxvY2tzKGJsb2NrLCBv
dGhlckJsb2NrKTsKICAgICAgICAgICAgICAgICB9CiAKQEAgLTIyOSwxMCArMTczLDIwIEBAIHZv
aWQgY29tcHV0ZUJ5dGVjb2RlQmFzaWNCbG9ja3MoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFZlY3Rv
cjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBiYXNpY0Jsb2Nr
cy5hcHBlbmQoV1RGTW92ZShleGl0KSk7CisgICAgYXBwZW5kQmxvY2soV1RGTW92ZShleGl0KSk7
CiAgICAgCiAgICAgZm9yIChhdXRvJiBiYXNpY0Jsb2NrIDogYmFzaWNCbG9ja3MpCiAgICAgICAg
IGJhc2ljQmxvY2stPnNocmlua1RvRml0KCk7CiB9CiAKK3ZvaWQgQnl0ZWNvZGVCYXNpY0Jsb2Nr
Ojpjb21wdXRlKENvZGVCbG9jayogY29kZUJsb2NrLCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25z
QmVnaW4sIHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQsIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8
Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mIGJhc2ljQmxvY2tzKQoreworICAgIGNvbXB1dGVJbXBsKGNv
ZGVCbG9jaywgaW5zdHJ1Y3Rpb25zQmVnaW4sIGluc3RydWN0aW9uQ291bnQsIGJhc2ljQmxvY2tz
KTsKK30KKwordm9pZCBCeXRlY29kZUJhc2ljQmxvY2s6OmNvbXB1dGUoVW5saW5rZWRDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgVW5saW5rZWRJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVu
c2lnbmVkIGluc3RydWN0aW9uQ291bnQsIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVC
YXNpY0Jsb2NrPj4mIGJhc2ljQmxvY2tzKQoreworICAgIEJ5dGVjb2RlQmFzaWNCbG9jazo6Y29t
cHV0ZUltcGwoY29kZUJsb2NrLCBpbnN0cnVjdGlvbnNCZWdpbiwgaW5zdHJ1Y3Rpb25Db3VudCwg
YmFzaWNCbG9ja3MpOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUJhc2ljQmxvY2suaAppbmRleCBjZDcxNDc3
ZWQ1MDZhYTc4ODAyMTY1ZmFjZGI3YTZkNDZmMzhkYzJhLi44MjEwZDllZDI2ZGExZThkZWI5YjY5
MDE5MzU0ZmJmMDc1ZjAxMzkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5oCkBAIC0zMyw2ICszMyw5IEBACiBuYW1lc3BhY2Ug
SlNDIHsKIAogY2xhc3MgQ29kZUJsb2NrOworY2xhc3MgVW5saW5rZWRDb2RlQmxvY2s7CitzdHJ1
Y3QgSW5zdHJ1Y3Rpb247CitzdHJ1Y3QgVW5saW5rZWRJbnN0cnVjdGlvbjsKIAogY2xhc3MgQnl0
ZWNvZGVCYXNpY0Jsb2NrIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTQyLDUx
ICs0NSw1OSBAQCBjbGFzcyBCeXRlY29kZUJhc2ljQmxvY2sgewogICAgIEJ5dGVjb2RlQmFzaWNC
bG9jayhTcGVjaWFsQmxvY2tUeXBlKTsKICAgICB2b2lkIHNocmlua1RvRml0KCk7CiAKLSAgICBi
b29sIGlzRW50cnlCbG9jaygpIHsgcmV0dXJuICFtX2xlYWRlckJ5dGVjb2RlT2Zmc2V0ICYmICFt
X3RvdGFsQnl0ZWNvZGVMZW5ndGg7IH0KLSAgICBib29sIGlzRXhpdEJsb2NrKCkgeyByZXR1cm4g
bV9sZWFkZXJCeXRlY29kZU9mZnNldCA9PSBVSU5UX01BWCAmJiBtX3RvdGFsQnl0ZWNvZGVMZW5n
dGggPT0gVUlOVF9NQVg7IH0KKyAgICBib29sIGlzRW50cnlCbG9jaygpIHsgcmV0dXJuICFtX2xl
YWRlck9mZnNldCAmJiAhbV90b3RhbExlbmd0aDsgfQorICAgIGJvb2wgaXNFeGl0QmxvY2soKSB7
IHJldHVybiBtX2xlYWRlck9mZnNldCA9PSBVSU5UX01BWCAmJiBtX3RvdGFsTGVuZ3RoID09IFVJ
TlRfTUFYOyB9CiAKLSAgICB1bnNpZ25lZCBsZWFkZXJCeXRlY29kZU9mZnNldCgpIHsgcmV0dXJu
IG1fbGVhZGVyQnl0ZWNvZGVPZmZzZXQ7IH0KLSAgICB1bnNpZ25lZCB0b3RhbEJ5dGVjb2RlTGVu
Z3RoKCkgeyByZXR1cm4gbV90b3RhbEJ5dGVjb2RlTGVuZ3RoOyB9CisgICAgdW5zaWduZWQgbGVh
ZGVyT2Zmc2V0KCkgeyByZXR1cm4gbV9sZWFkZXJPZmZzZXQ7IH0KKyAgICB1bnNpZ25lZCB0b3Rh
bExlbmd0aCgpIHsgcmV0dXJuIG1fdG90YWxMZW5ndGg7IH0KIAotICAgIFZlY3Rvcjx1bnNpZ25l
ZD4mIGJ5dGVjb2RlT2Zmc2V0cygpIHsgcmV0dXJuIG1fYnl0ZWNvZGVPZmZzZXRzOyB9Ci0gICAg
dm9pZCBhZGRCeXRlY29kZUxlbmd0aCh1bnNpZ25lZCk7CisgICAgY29uc3QgVmVjdG9yPHVuc2ln
bmVkPiYgb2Zmc2V0cygpIGNvbnN0IHsgcmV0dXJuIG1fb2Zmc2V0czsgfQogCi0gICAgVmVjdG9y
PEJ5dGVjb2RlQmFzaWNCbG9jayo+JiBzdWNjZXNzb3JzKCkgeyByZXR1cm4gbV9zdWNjZXNzb3Jz
OyB9Ci0gICAgdm9pZCBhZGRTdWNjZXNzb3IoQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaykgeyBt
X3N1Y2Nlc3NvcnMuYXBwZW5kKGJsb2NrKTsgfQorICAgIGNvbnN0IFZlY3RvcjxCeXRlY29kZUJh
c2ljQmxvY2sqPiYgc3VjY2Vzc29ycygpIGNvbnN0IHsgcmV0dXJuIG1fc3VjY2Vzc29yczsgfQog
CiAgICAgRmFzdEJpdFZlY3RvciYgaW4oKSB7IHJldHVybiBtX2luOyB9CiAgICAgRmFzdEJpdFZl
Y3RvciYgb3V0KCkgeyByZXR1cm4gbV9vdXQ7IH0KIAorICAgIHVuc2lnbmVkIGluZGV4KCkgY29u
c3QgeyByZXR1cm4gbV9pbmRleDsgfQorCisgICAgc3RhdGljIHZvaWQgY29tcHV0ZShDb2RlQmxv
Y2sqLCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGluc3RydWN0aW9u
Q291bnQsIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mKTsKKyAg
ICBzdGF0aWMgdm9pZCBjb21wdXRlKFVubGlua2VkQ29kZUJsb2NrKiwgVW5saW5rZWRJbnN0cnVj
dGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQsIFZlY3Rv
cjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mKTsKKwogcHJpdmF0ZToKLSAg
ICB1bnNpZ25lZCBtX2xlYWRlckJ5dGVjb2RlT2Zmc2V0OwotICAgIHVuc2lnbmVkIG1fdG90YWxC
eXRlY29kZUxlbmd0aDsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBCbG9jaywgdHlwZW5hbWUgSW5z
dHJ1Y3Rpb24+IHN0YXRpYyB2b2lkIGNvbXB1dGVJbXBsKEJsb2NrKiBjb2RlQmxvY2ssIEluc3Ry
dWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCwgVmVj
dG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYgYmFzaWNCbG9ja3MpOwor
CisgICAgdm9pZCBhZGRTdWNjZXNzb3IoQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaykgeyBtX3N1
Y2Nlc3NvcnMuYXBwZW5kKGJsb2NrKTsgfQorCisgICAgdm9pZCBhZGRMZW5ndGgodW5zaWduZWQp
OwogCi0gICAgVmVjdG9yPHVuc2lnbmVkPiBtX2J5dGVjb2RlT2Zmc2V0czsKKyAgICB1bnNpZ25l
ZCBtX2xlYWRlck9mZnNldDsKKyAgICB1bnNpZ25lZCBtX3RvdGFsTGVuZ3RoOworICAgIHVuc2ln
bmVkIG1faW5kZXg7CisKKyAgICBWZWN0b3I8dW5zaWduZWQ+IG1fb2Zmc2V0czsKICAgICBWZWN0
b3I8Qnl0ZWNvZGVCYXNpY0Jsb2NrKj4gbV9zdWNjZXNzb3JzOwogCiAgICAgRmFzdEJpdFZlY3Rv
ciBtX2luOwogICAgIEZhc3RCaXRWZWN0b3IgbV9vdXQ7CiB9OwogCi12b2lkIGNvbXB1dGVCeXRl
Y29kZUJhc2ljQmxvY2tzKENvZGVCbG9jayosIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNv
ZGVCYXNpY0Jsb2NrPj4mKTsKLQogaW5saW5lIEJ5dGVjb2RlQmFzaWNCbG9jazo6Qnl0ZWNvZGVC
YXNpY0Jsb2NrKHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBsZW5ndGgpCi0gICAgOiBtX2xlYWRl
ckJ5dGVjb2RlT2Zmc2V0KHN0YXJ0KQotICAgICwgbV90b3RhbEJ5dGVjb2RlTGVuZ3RoKGxlbmd0
aCkKKyAgICA6IG1fbGVhZGVyT2Zmc2V0KHN0YXJ0KQorICAgICwgbV90b3RhbExlbmd0aChsZW5n
dGgpCiB7Ci0gICAgbV9ieXRlY29kZU9mZnNldHMuYXBwZW5kKG1fbGVhZGVyQnl0ZWNvZGVPZmZz
ZXQpOworICAgIG1fb2Zmc2V0cy5hcHBlbmQobV9sZWFkZXJPZmZzZXQpOwogfQogCiBpbmxpbmUg
Qnl0ZWNvZGVCYXNpY0Jsb2NrOjpCeXRlY29kZUJhc2ljQmxvY2soQnl0ZWNvZGVCYXNpY0Jsb2Nr
OjpTcGVjaWFsQmxvY2tUeXBlIGJsb2NrVHlwZSkKLSAgICA6IG1fbGVhZGVyQnl0ZWNvZGVPZmZz
ZXQoYmxvY2tUeXBlID09IEJ5dGVjb2RlQmFzaWNCbG9jazo6RW50cnlCbG9jayA/IDAgOiBVSU5U
X01BWCkKLSAgICAsIG1fdG90YWxCeXRlY29kZUxlbmd0aChibG9ja1R5cGUgPT0gQnl0ZWNvZGVC
YXNpY0Jsb2NrOjpFbnRyeUJsb2NrID8gMCA6IFVJTlRfTUFYKQorICAgIDogbV9sZWFkZXJPZmZz
ZXQoYmxvY2tUeXBlID09IEJ5dGVjb2RlQmFzaWNCbG9jazo6RW50cnlCbG9jayA/IDAgOiBVSU5U
X01BWCkKKyAgICAsIG1fdG90YWxMZW5ndGgoYmxvY2tUeXBlID09IEJ5dGVjb2RlQmFzaWNCbG9j
azo6RW50cnlCbG9jayA/IDAgOiBVSU5UX01BWCkKIHsKIH0KIAotaW5saW5lIHZvaWQgQnl0ZWNv
ZGVCYXNpY0Jsb2NrOjphZGRCeXRlY29kZUxlbmd0aCh1bnNpZ25lZCBieXRlY29kZUxlbmd0aCkK
K2lubGluZSB2b2lkIEJ5dGVjb2RlQmFzaWNCbG9jazo6YWRkTGVuZ3RoKHVuc2lnbmVkIGJ5dGVj
b2RlTGVuZ3RoKQogewotICAgIG1fYnl0ZWNvZGVPZmZzZXRzLmFwcGVuZChtX2xlYWRlckJ5dGVj
b2RlT2Zmc2V0ICsgbV90b3RhbEJ5dGVjb2RlTGVuZ3RoKTsKLSAgICBtX3RvdGFsQnl0ZWNvZGVM
ZW5ndGggKz0gYnl0ZWNvZGVMZW5ndGg7CisgICAgbV9vZmZzZXRzLmFwcGVuZChtX2xlYWRlck9m
ZnNldCArIG1fdG90YWxMZW5ndGgpOworICAgIG1fdG90YWxMZW5ndGggKz0gYnl0ZWNvZGVMZW5n
dGg7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uOTU5MDNlMjFlYmRmMTk0MGE5ZmQwNzgzYjEwZjgyZjJiYTdmYjdiMwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUdlbmVy
YXRvcmlmaWNhdGlvbi5jcHAKQEAgLTAsMCArMSwyNjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTYgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorICogQ29weXJpZ2h0
IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmgi
CisKKyNpbmNsdWRlICJCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNJbmxpbmVzLmgiCisjaW5jbHVk
ZSAiQnl0ZWNvZGVSZXdyaXRlci5oIgorI2luY2x1ZGUgIkJ5dGVjb2RlVXNlRGVmLmgiCisjaW5j
bHVkZSAiSWRlbnRpZmllcklubGluZXMuaCIKKyNpbmNsdWRlICJJbnRlcnByZXRlcklubGluZXMu
aCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMu
aCIKKyNpbmNsdWRlICJKU0dlbmVyYXRvckZ1bmN0aW9uLmgiCisjaW5jbHVkZSAiU3Ryb25nSW5s
aW5lcy5oIgorI2luY2x1ZGUgIlVubGlua2VkQ29kZUJsb2NrLmgiCisjaW5jbHVkZSA8d3RmL09w
dGlvbmFsLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitzdHJ1Y3QgWWllbGREYXRhIHsKKyAgICBz
aXplX3QgcG9pbnQgeyAwIH07CisgICAgaW50IGFyZ3VtZW50IHsgMCB9OworICAgIEZhc3RCaXRW
ZWN0b3IgbGl2ZW5lc3M7Cit9OworCitjbGFzcyBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbiB7
CitwdWJsaWM6CisgICAgdHlwZWRlZiBWZWN0b3I8WWllbGREYXRhPiBZaWVsZHM7CisKKyAgICBC
eXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbihVbmxpbmtlZENvZGVCbG9jayogY29kZUJsb2NrLCBV
bmxpbmtlZENvZGVCbG9jazo6VW5wYWNrZWRJbnN0cnVjdGlvbnMmIGluc3RydWN0aW9ucywgU3lt
Ym9sVGFibGUqIGdlbmVyYXRvckZyYW1lU3ltYm9sVGFibGUsIGludCBnZW5lcmF0b3JGcmFtZVN5
bWJvbFRhYmxlSW5kZXgpCisgICAgICAgIDogbV9ncmFwaChjb2RlQmxvY2ssIGluc3RydWN0aW9u
cykKKyAgICAgICAgLCBtX2dlbmVyYXRvckZyYW1lU3ltYm9sVGFibGUoKmNvZGVCbG9jay0+dm0o
KSwgZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZSkKKyAgICAgICAgLCBtX2dlbmVyYXRvckZyYW1l
U3ltYm9sVGFibGVJbmRleChnZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlSW5kZXgpCisgICAgewor
ICAgICAgICBmb3IgKEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2sgOiBtX2dyYXBoKSB7CisgICAg
ICAgICAgICBmb3IgKHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0IDogYmxvY2stPm9mZnNldHMoKSkg
eworICAgICAgICAgICAgICAgIGNvbnN0IFVubGlua2VkSW5zdHJ1Y3Rpb24qIHBjID0gJm1fZ3Jh
cGguaW5zdHJ1Y3Rpb25zKClbYnl0ZWNvZGVPZmZzZXRdOworICAgICAgICAgICAgICAgIHN3aXRj
aCAocGMtPnUub3Bjb2RlKSB7CisgICAgICAgICAgICAgICAgY2FzZSBvcF9lbnRlcjogeworICAg
ICAgICAgICAgICAgICAgICBtX2VudGVyUG9pbnQgPSBieXRlY29kZU9mZnNldDsKKyAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAg
Y2FzZSBvcF95aWVsZDogeworICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsaXZlQ2FsbGVl
TG9jYWxzSW5kZXggPSBwY1syXS51LmluZGV4OworICAgICAgICAgICAgICAgICAgICBpZiAobGl2
ZUNhbGxlZUxvY2Fsc0luZGV4ID49IG1feWllbGRzLnNpemUoKSkKKyAgICAgICAgICAgICAgICAg
ICAgICAgIG1feWllbGRzLnJlc2l6ZShsaXZlQ2FsbGVlTG9jYWxzSW5kZXggKyAxKTsKKyAgICAg
ICAgICAgICAgICAgICAgWWllbGREYXRhJiBkYXRhID0gbV95aWVsZHNbbGl2ZUNhbGxlZUxvY2Fs
c0luZGV4XTsKKyAgICAgICAgICAgICAgICAgICAgZGF0YS5wb2ludCA9IGJ5dGVjb2RlT2Zmc2V0
OworICAgICAgICAgICAgICAgICAgICBkYXRhLmFyZ3VtZW50ID0gcGNbM10udS5vcGVyYW5kOwor
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBzdHJ1Y3QgU3Rv
cmFnZSB7CisgICAgICAgIElkZW50aWZpZXIgaWRlbnRpZmllcjsKKyAgICAgICAgdW5zaWduZWQg
aWRlbnRpZmllckluZGV4OworICAgICAgICBTY29wZU9mZnNldCBzY29wZU9mZnNldDsKKyAgICB9
OworCisgICAgdm9pZCBydW4oKTsKKworICAgIEJ5dGVjb2RlR3JhcGg8VW5saW5rZWRDb2RlQmxv
Y2s+JiBncmFwaCgpIHsgcmV0dXJuIG1fZ3JhcGg7IH0KKworICAgIGNvbnN0IFlpZWxkcyYgeWll
bGRzKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX3lpZWxkczsKKyAgICB9CisKKyAg
ICBZaWVsZHMmIHlpZWxkcygpCisgICAgeworICAgICAgICByZXR1cm4gbV95aWVsZHM7CisgICAg
fQorCisgICAgdW5zaWduZWQgZW50ZXJQb2ludCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1
cm4gbV9lbnRlclBvaW50OworICAgIH0KKworcHJpdmF0ZToKKyAgICBTdG9yYWdlIHN0b3JhZ2VG
b3JHZW5lcmF0b3JMb2NhbCh1bnNpZ25lZCBpbmRleCkKKyAgICB7CisgICAgICAgIC8vIFdlIGFz
c2lnbiBhIHN5bWJvbCB0byBhIHJlZ2lzdGVyLiBUaGVyZSBpcyBvbmUtb24tb25lIGNvcnJlc3Bv
bmRpbmcgYmV0d2VlbiBhIHJlZ2lzdGVyIGFuZCBhIHN5bWJvbC4KKyAgICAgICAgLy8gQnkgZG9p
bmcgc28sIHdlIGFsbG9jYXRlIHRoZSBzcGVjaWZpYyBzdG9yYWdlIHRvIHNhdmUgdGhlIGdpdmVu
IHJlZ2lzdGVyLgorICAgICAgICAvLyBUaGlzIGFsbG93IHVzIG5vdCB0byBzYXZlIGFsbCB0aGUg
bGl2ZSByZWdpc3RlcnMgZXZlbiBpZiB0aGUgcmVnaXN0ZXJzIGFyZSBub3Qgb3ZlcndyaXR0ZW4g
ZnJvbSB0aGUgcHJldmlvdXMgcmVzdW1pbmcgdGltZS4KKyAgICAgICAgLy8gSXQgbWVhbnMgdGhh
dCwgdGhlIHJlZ2lzdGVyIGNhbiBiZSByZXRyaWV2ZWQgZXZlbiBpZiB0aGUgaW1tZWRpYXRlIHBy
ZXZpb3VzIG9wX3NhdmUgZG9lcyBub3Qgc2F2ZSBpdC4KKworICAgICAgICBpZiAobV9zdG9yYWdl
cy5zaXplKCkgPD0gaW5kZXgpCisgICAgICAgICAgICBtX3N0b3JhZ2VzLnJlc2l6ZShpbmRleCAr
IDEpOworICAgICAgICBpZiAoT3B0aW9uYWw8U3RvcmFnZT4gc3RvcmFnZSA9IG1fc3RvcmFnZXNb
aW5kZXhdKQorICAgICAgICAgICAgcmV0dXJuICpzdG9yYWdlOworCisgICAgICAgIFVubGlua2Vk
Q29kZUJsb2NrKiBjb2RlQmxvY2sgPSBtX2dyYXBoLmNvZGVCbG9jaygpOworICAgICAgICBJZGVu
dGlmaWVyIGlkZW50aWZpZXIgPSBJZGVudGlmaWVyOjpmcm9tVWlkKFByaXZhdGVOYW1lKCkpOwor
ICAgICAgICB1bnNpZ25lZCBpZGVudGlmaWVySW5kZXggPSBjb2RlQmxvY2stPm51bWJlck9mSWRl
bnRpZmllcnMoKTsKKyAgICAgICAgY29kZUJsb2NrLT5hZGRJZGVudGlmaWVyKGlkZW50aWZpZXIp
OworICAgICAgICBTY29wZU9mZnNldCBzY29wZU9mZnNldCA9IG1fZ2VuZXJhdG9yRnJhbWVTeW1i
b2xUYWJsZS0+dGFrZU5leHRTY29wZU9mZnNldChOb0xvY2tpbmdOZWNlc3NhcnkpOworICAgICAg
ICBtX2dlbmVyYXRvckZyYW1lU3ltYm9sVGFibGUtPnNldChOb0xvY2tpbmdOZWNlc3NhcnksIGlk
ZW50aWZpZXIuaW1wbCgpLCBTeW1ib2xUYWJsZUVudHJ5KFZhck9mZnNldChzY29wZU9mZnNldCkp
KTsKKworICAgICAgICBTdG9yYWdlIHN0b3JhZ2UgPSB7CisgICAgICAgICAgICBpZGVudGlmaWVy
LAorICAgICAgICAgICAgaWRlbnRpZmllckluZGV4LAorICAgICAgICAgICAgc2NvcGVPZmZzZXQK
KyAgICAgICAgfTsKKyAgICAgICAgbV9zdG9yYWdlc1tpbmRleF0gPSBzdG9yYWdlOworICAgICAg
ICByZXR1cm4gc3RvcmFnZTsKKyAgICB9CisKKyAgICB1bnNpZ25lZCBtX2VudGVyUG9pbnQgeyAw
IH07CisgICAgQnl0ZWNvZGVHcmFwaDxVbmxpbmtlZENvZGVCbG9jaz4gbV9ncmFwaDsKKyAgICBW
ZWN0b3I8T3B0aW9uYWw8U3RvcmFnZT4+IG1fc3RvcmFnZXM7CisgICAgWWllbGRzIG1feWllbGRz
OworICAgIFN0cm9uZzxTeW1ib2xUYWJsZT4gbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlOwor
ICAgIGludCBtX2dlbmVyYXRvckZyYW1lU3ltYm9sVGFibGVJbmRleDsKK307CisKK2NsYXNzIEdl
bmVyYXRvckxpdmVuZXNzQW5hbHlzaXMgOiBwdWJsaWMgQnl0ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0
aW9uPEdlbmVyYXRvckxpdmVuZXNzQW5hbHlzaXM+IHsKK3B1YmxpYzoKKyAgICBHZW5lcmF0b3JM
aXZlbmVzc0FuYWx5c2lzKEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uJiBnZW5lcmF0b3JpZmlj
YXRpb24pCisgICAgICAgIDogbV9nZW5lcmF0b3JpZmljYXRpb24oZ2VuZXJhdG9yaWZpY2F0aW9u
KQorICAgIHsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgorICAgIHZv
aWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChVbmxpbmtlZENvZGVCbG9jayogY29kZUJs
b2NrLCBPcGNvZGVJRCBvcGNvZGVJRCwgVW5saW5rZWRJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24s
IEZhc3RCaXRWZWN0b3ImLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQorICAgIHsKKyAgICAgICAg
SlNDOjpjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9jaywgb3Bjb2RlSUQsIGlu
c3RydWN0aW9uLCBmdW5jdG9yKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5j
dG9yPgorICAgIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNldChVbmxpbmtlZENvZGVC
bG9jayogY29kZUJsb2NrLCBPcGNvZGVJRCBvcGNvZGVJRCwgVW5saW5rZWRJbnN0cnVjdGlvbiog
aW5zdHJ1Y3Rpb24sIEZhc3RCaXRWZWN0b3ImLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQorICAg
IHsKKyAgICAgICAgSlNDOjpjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9jaywg
b3Bjb2RlSUQsIGluc3RydWN0aW9uLCBmdW5jdG9yKTsKKyAgICB9CisKKyAgICB2b2lkIHJ1bigp
CisgICAgeworICAgICAgICAvLyBQZXJmb3JtIG1vZGlmaWVkIGxpdmVuZXNzIGFuYWx5c2lzIHRv
IGRldGVybWluZSB3aGljaCBsb2NhbHMgYXJlIGxpdmUgYXQgdGhlIG1lcmdlIHBvaW50cy4KKyAg
ICAgICAgLy8gVGhpcyBwcm9kdWNlcyB0aGUgY29uc2VydmF0aXZlIHJlc3VsdHMgZm9yIHRoZSBx
dWVzdGlvbiwgIndoaWNoIHZhcmlhYmxlcyBzaG91bGQgYmUgc2F2ZWQgYW5kIHJlc3VtZWQ/Ii4K
KworICAgICAgICBydW5MaXZlbmVzc0ZpeHBvaW50KG1fZ2VuZXJhdG9yaWZpY2F0aW9uLmdyYXBo
KCkpOworCisgICAgICAgIGZvciAoWWllbGREYXRhJiBkYXRhIDogbV9nZW5lcmF0b3JpZmljYXRp
b24ueWllbGRzKCkpCisgICAgICAgICAgICBkYXRhLmxpdmVuZXNzID0gZ2V0TGl2ZW5lc3NJbmZv
QXRCeXRlY29kZU9mZnNldChtX2dlbmVyYXRvcmlmaWNhdGlvbi5ncmFwaCgpLCBkYXRhLnBvaW50
ICsgb3Bjb2RlTGVuZ3RoKG9wX3lpZWxkKSk7CisgICAgfQorCitwcml2YXRlOgorICAgIEJ5dGVj
b2RlR2VuZXJhdG9yaWZpY2F0aW9uJiBtX2dlbmVyYXRvcmlmaWNhdGlvbjsKK307CisKK3ZvaWQg
Qnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb246OnJ1bigpCit7CisgICAgLy8gV2UgY2FsY3VsYXRl
IHRoZSBsaXZlbmVzcyBhdCBlYWNoIG1lcmdlIHBvaW50LiBUaGlzIGdpdmVzIHVzIHRoZSBpbmZv
cm1hdGlvbiB3aGljaCByZWdpc3RlcnMgc2hvdWxkIGJlIHNhdmVkIGFuZCByZXN1bWVkIGNvbnNl
cnZhdGl2ZWx5LgorCisgICAgeworICAgICAgICBHZW5lcmF0b3JMaXZlbmVzc0FuYWx5c2lzIHBh
c3MoKnRoaXMpOworICAgICAgICBwYXNzLnJ1bigpOworICAgIH0KKworICAgIFVubGlua2VkQ29k
ZUJsb2NrKiBjb2RlQmxvY2sgPSBtX2dyYXBoLmNvZGVCbG9jaygpOworICAgIEJ5dGVjb2RlUmV3
cml0ZXIgcmV3cml0ZXIobV9ncmFwaCk7CisKKyAgICAvLyBTZXR1cCB0aGUgZ2xvYmFsIHN3aXRj
aCBmb3IgdGhlIGdlbmVyYXRvci4KKyAgICB7CisgICAgICAgIHVuc2lnbmVkIG5leHRUb0VudGVy
UG9pbnQgPSBlbnRlclBvaW50KCkgKyBvcGNvZGVMZW5ndGgob3BfZW50ZXIpOworICAgICAgICB1
bnNpZ25lZCBzd2l0Y2hUYWJsZUluZGV4ID0gbV9ncmFwaC5jb2RlQmxvY2soKS0+bnVtYmVyT2ZT
d2l0Y2hKdW1wVGFibGVzKCk7CisgICAgICAgIFZpcnR1YWxSZWdpc3RlciBzdGF0ZSA9IHZpcnR1
YWxSZWdpc3RlckZvckFyZ3VtZW50KHN0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yRnVu
Y3Rpb246OkdlbmVyYXRvckFyZ3VtZW50OjpTdGF0ZSkpOworICAgICAgICBhdXRvJiBqdW1wVGFi
bGUgPSBtX2dyYXBoLmNvZGVCbG9jaygpLT5hZGRTd2l0Y2hKdW1wVGFibGUoKTsKKyAgICAgICAg
anVtcFRhYmxlLm1pbiA9IDA7CisgICAgICAgIGp1bXBUYWJsZS5icmFuY2hPZmZzZXRzLnJlc2l6
ZShtX3lpZWxkcy5zaXplKCkgKyAxKTsKKyAgICAgICAganVtcFRhYmxlLmJyYW5jaE9mZnNldHMu
ZmlsbCgwKTsKKyAgICAgICAganVtcFRhYmxlLmFkZCgwLCBuZXh0VG9FbnRlclBvaW50KTsKKyAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1feWllbGRzLnNpemUoKTsgKytpKQorICAg
ICAgICAgICAganVtcFRhYmxlLmFkZChpICsgMSwgbV95aWVsZHNbaV0ucG9pbnQpOworCisgICAg
ICAgIHJld3JpdGVyLmluc2VydEZyYWdtZW50QmVmb3JlKG5leHRUb0VudGVyUG9pbnQsIFsmXShC
eXRlY29kZVJld3JpdGVyOjpGcmFnbWVudCYgZnJhZ21lbnQpIHsKKyAgICAgICAgICAgIGZyYWdt
ZW50LmFwcGVuZEluc3RydWN0aW9uKG9wX3N3aXRjaF9pbW0sIHN3aXRjaFRhYmxlSW5kZXgsIG5l
eHRUb0VudGVyUG9pbnQsIHN0YXRlLm9mZnNldCgpKTsKKyAgICAgICAgfSk7CisgICAgfQorCisg
ICAgZm9yIChjb25zdCBZaWVsZERhdGEmIGRhdGEgOiBtX3lpZWxkcykgeworICAgICAgICBWaXJ0
dWFsUmVnaXN0ZXIgc2NvcGUgPSB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChzdGF0aWNfY2Fz
dDxpbnQzMl90PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JBcmd1bWVudDo6RnJhbWUp
KTsKKworICAgICAgICAvLyBFbWl0IHNhdmUgc2VxdWVuY2UuCisgICAgICAgIHJld3JpdGVyLmlu
c2VydEZyYWdtZW50QmVmb3JlKGRhdGEucG9pbnQsIFsmXShCeXRlY29kZVJld3JpdGVyOjpGcmFn
bWVudCYgZnJhZ21lbnQpIHsKKyAgICAgICAgICAgIGRhdGEubGl2ZW5lc3MuZm9yRWFjaFNldEJp
dChbJl0oc2l6ZV90IGluZGV4KSB7CisgICAgICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIG9w
ZXJhbmQgPSB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChpbmRleCk7CisgICAgICAgICAgICAgICAg
U3RvcmFnZSBzdG9yYWdlID0gc3RvcmFnZUZvckdlbmVyYXRvckxvY2FsKGluZGV4KTsKKworICAg
ICAgICAgICAgICAgIGZyYWdtZW50LmFwcGVuZEluc3RydWN0aW9uKAorICAgICAgICAgICAgICAg
ICAgICBvcF9wdXRfdG9fc2NvcGUsCisgICAgICAgICAgICAgICAgICAgIHNjb3BlLm9mZnNldCgp
LCAvLyBzY29wZQorICAgICAgICAgICAgICAgICAgICBzdG9yYWdlLmlkZW50aWZpZXJJbmRleCwg
Ly8gaWRlbnRpZmllcgorICAgICAgICAgICAgICAgICAgICBvcGVyYW5kLm9mZnNldCgpLCAvLyB2
YWx1ZQorICAgICAgICAgICAgICAgICAgICBHZXRQdXRJbmZvKERvTm90VGhyb3dJZk5vdEZvdW5k
LCBMb2NhbENsb3N1cmVWYXIsIEluaXRpYWxpemF0aW9uTW9kZTo6Tm90SW5pdGlhbGl6YXRpb24p
Lm9wZXJhbmQoKSwgLy8gaW5mbworICAgICAgICAgICAgICAgICAgICBtX2dlbmVyYXRvckZyYW1l
U3ltYm9sVGFibGVJbmRleCwgLy8gc3ltYm9sIHRhYmxlIGNvbnN0YW50IGluZGV4CisgICAgICAg
ICAgICAgICAgICAgIHN0b3JhZ2Uuc2NvcGVPZmZzZXQub2Zmc2V0KCkgLy8gc2NvcGUgb2Zmc2V0
CisgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICAvLyBJ
bnNlcnQgb3BfcmV0IGp1c3QgYWZ0ZXIgc2F2ZSBzZXF1ZW5jZS4KKyAgICAgICAgICAgIGZyYWdt
ZW50LmFwcGVuZEluc3RydWN0aW9uKG9wX3JldCwgZGF0YS5hcmd1bWVudCk7CisgICAgICAgIH0p
OworCisgICAgICAgIC8vIEVtaXQgcmVzdW1lIHNlcXVlbmNlLgorICAgICAgICByZXdyaXRlci5p
bnNlcnRGcmFnbWVudEFmdGVyKGRhdGEucG9pbnQsIFsmXShCeXRlY29kZVJld3JpdGVyOjpGcmFn
bWVudCYgZnJhZ21lbnQpIHsKKyAgICAgICAgICAgIGRhdGEubGl2ZW5lc3MuZm9yRWFjaFNldEJp
dChbJl0oc2l6ZV90IGluZGV4KSB7CisgICAgICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIG9w
ZXJhbmQgPSB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChpbmRleCk7CisgICAgICAgICAgICAgICAg
U3RvcmFnZSBzdG9yYWdlID0gc3RvcmFnZUZvckdlbmVyYXRvckxvY2FsKGluZGV4KTsKKworICAg
ICAgICAgICAgICAgIFVubGlua2VkVmFsdWVQcm9maWxlIHByb2ZpbGUgPSBjb2RlQmxvY2stPmFk
ZFZhbHVlUHJvZmlsZSgpOworICAgICAgICAgICAgICAgIGZyYWdtZW50LmFwcGVuZEluc3RydWN0
aW9uKAorICAgICAgICAgICAgICAgICAgICBvcF9nZXRfZnJvbV9zY29wZSwKKyAgICAgICAgICAg
ICAgICAgICAgb3BlcmFuZC5vZmZzZXQoKSwgLy8gZHN0CisgICAgICAgICAgICAgICAgICAgIHNj
b3BlLm9mZnNldCgpLCAvLyBzY29wZQorICAgICAgICAgICAgICAgICAgICBzdG9yYWdlLmlkZW50
aWZpZXJJbmRleCwgLy8gaWRlbnRpZmllcgorICAgICAgICAgICAgICAgICAgICBHZXRQdXRJbmZv
KERvTm90VGhyb3dJZk5vdEZvdW5kLCBMb2NhbENsb3N1cmVWYXIsIEluaXRpYWxpemF0aW9uTW9k
ZTo6Tm90SW5pdGlhbGl6YXRpb24pLm9wZXJhbmQoKSwgLy8gaW5mbworICAgICAgICAgICAgICAg
ICAgICAwLCAvLyBsb2NhbCBzY29wZSBkZXB0aAorICAgICAgICAgICAgICAgICAgICBzdG9yYWdl
LnNjb3BlT2Zmc2V0Lm9mZnNldCgpLCAvLyBzY29wZSBvZmZzZXQKKyAgICAgICAgICAgICAgICAg
ICAgcHJvZmlsZSAvLyBwcm9maWxlCisgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgIH0p
OworICAgICAgICB9KTsKKworICAgICAgICAvLyBDbGlwIHRoZSB1bm5lY2Vzc2FyeSBieXRlY29k
ZXMuCisgICAgICAgIHJld3JpdGVyLnJlbW92ZUJ5dGVjb2RlKGRhdGEucG9pbnQpOworICAgIH0K
KworICAgIHJld3JpdGVyLmV4ZWN1dGUoKTsKK30KKwordm9pZCBwZXJmb3JtR2VuZXJhdG9yaWZp
Y2F0aW9uKFVubGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFVubGlua2VkQ29kZUJsb2NrOjpV
bnBhY2tlZEluc3RydWN0aW9ucyYgaW5zdHJ1Y3Rpb25zLCBTeW1ib2xUYWJsZSogZ2VuZXJhdG9y
RnJhbWVTeW1ib2xUYWJsZSwgaW50IGdlbmVyYXRvckZyYW1lU3ltYm9sVGFibGVJbmRleCkKK3sK
KyAgICBCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbiBwYXNzKGNvZGVCbG9jaywgaW5zdHJ1Y3Rp
b25zLCBnZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlLCBnZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxl
SW5kZXgpOworICAgIHBhc3MucnVuKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZp
Y2F0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0
b3JpZmljYXRpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jN2I2MTM3NDYwODZhZTM0YzRjMGEyMmJmNGU2N2M3
NmU2Y2ZkNGU5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmgKQEAgLTAsMCArMSwzNyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNiBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIlVubGlua2VkQ29kZUJsb2NrLmgi
CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBTeW1ib2xUYWJsZTsKKwordm9pZCBwZXJmb3Jt
R2VuZXJhdG9yaWZpY2F0aW9uKFVubGlua2VkQ29kZUJsb2NrKiwgVW5saW5rZWRDb2RlQmxvY2s6
OlVucGFja2VkSW5zdHJ1Y3Rpb25zJiwgU3ltYm9sVGFibGUqIGdlbmVyYXRvckZyYW1lU3ltYm9s
VGFibGUsIGludCBnZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlSW5kZXgpOworCit9IC8vIG5hbWVz
cGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZUdyYXBoLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVHcmFw
aC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjM4YTEzYzYwMTQ1ZjMyZmU2YzVhYjc2YWMyNDllZTRhMWZlYjE5MzAK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVHcmFwaC5oCkBAIC0wLDAgKzEsMTI1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IFl1
c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSAiQnl0ZWNvZGVCYXNpY0Jsb2NrLmgiCisjaW5jbHVkZSA8d3RmL0luZGV4
ZWRDb250YWluZXJJdGVyYXRvci5oPgorI2luY2x1ZGUgPHd0Zi9JdGVyYXRvclJhbmdlLmg+Cisj
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgQnl0ZWNv
ZGVCYXNpY0Jsb2NrOworCit0ZW1wbGF0ZTx0eXBlbmFtZSBCbG9jaz4KK2NsYXNzIEJ5dGVjb2Rl
R3JhcGggeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKEJ5dGVjb2RlR3JhcGgpOworcHVibGljOgorICAgIHR5cGVkZWYgQmxvY2sgQ29kZUJs
b2NrOworICAgIHR5cGVkZWYgdHlwZW5hbWUgQmxvY2s6Okluc3RydWN0aW9uIEluc3RydWN0aW9u
OworICAgIHR5cGVkZWYgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+
PiBCYXNpY0Jsb2Nrc1ZlY3RvcjsKKworICAgIHR5cGVkZWYgV1RGOjpJbmRleGVkQ29udGFpbmVy
SXRlcmF0b3I8Qnl0ZWNvZGVHcmFwaDxCbG9jaz4+IGl0ZXJhdG9yOworCisgICAgaW5saW5lIEJ5
dGVjb2RlR3JhcGgoQmxvY2sqLCB0eXBlbmFtZSBCbG9jazo6VW5wYWNrZWRJbnN0cnVjdGlvbnMm
KTsKKworICAgIEJsb2NrKiBjb2RlQmxvY2soKSBjb25zdCB7IHJldHVybiBtX2NvZGVCbG9jazsg
fQorCisgICAgdHlwZW5hbWUgQmxvY2s6OlVucGFja2VkSW5zdHJ1Y3Rpb25zJiBpbnN0cnVjdGlv
bnMoKSB7IHJldHVybiBtX2luc3RydWN0aW9uczsgfQorCisgICAgV1RGOjpJdGVyYXRvclJhbmdl
PEJhc2ljQmxvY2tzVmVjdG9yOjpyZXZlcnNlX2l0ZXJhdG9yPiBiYXNpY0Jsb2Nrc0luUmV2ZXJz
ZU9yZGVyKCkKKyAgICB7CisgICAgICAgIHJldHVybiBXVEY6Om1ha2VJdGVyYXRvclJhbmdlKG1f
YmFzaWNCbG9ja3MucmJlZ2luKCksIG1fYmFzaWNCbG9ja3MucmVuZCgpKTsKKyAgICB9CisKKyAg
ICBzdGF0aWMgYm9vbCBibG9ja0NvbnRhaW5zQnl0ZWNvZGVPZmZzZXQoQnl0ZWNvZGVCYXNpY0Js
b2NrKiBibG9jaywgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpCisgICAgeworICAgICAgICB1bnNp
Z25lZCBsZWFkZXJPZmZzZXQgPSBibG9jay0+bGVhZGVyT2Zmc2V0KCk7CisgICAgICAgIHJldHVy
biBieXRlY29kZU9mZnNldCA+PSBsZWFkZXJPZmZzZXQgJiYgYnl0ZWNvZGVPZmZzZXQgPCBsZWFk
ZXJPZmZzZXQgKyBibG9jay0+dG90YWxMZW5ndGgoKTsKKyAgICB9CisKKyAgICBCeXRlY29kZUJh
c2ljQmxvY2sqIGZpbmRCYXNpY0Jsb2NrRm9yQnl0ZWNvZGVPZmZzZXQodW5zaWduZWQgYnl0ZWNv
ZGVPZmZzZXQpCisgICAgeworICAgICAgICAvKgorICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IG1fYmFzaWNCbG9ja3Muc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgICAgICAgICBp
ZiAoYmxvY2tDb250YWluc0J5dGVjb2RlT2Zmc2V0KG1fYmFzaWNCbG9ja3NbaV0uZ2V0KCksIGJ5
dGVjb2RlT2Zmc2V0KSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1fYmFzaWNCbG9ja3Nb
aV0uZ2V0KCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAg
Ki8KKworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiogYmFzaWNC
bG9jayA9IGFwcHJveGltYXRlQmluYXJ5U2VhcmNoPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJh
c2ljQmxvY2s+LCB1bnNpZ25lZD4obV9iYXNpY0Jsb2NrcywgbV9iYXNpY0Jsb2Nrcy5zaXplKCks
IGJ5dGVjb2RlT2Zmc2V0LCBbXSAoc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4q
IGJhc2ljQmxvY2spIHsgcmV0dXJuICgqYmFzaWNCbG9jayktPmxlYWRlck9mZnNldCgpOyB9KTsK
KyAgICAgICAgLy8gV2UgZm91bmQgdGhlIGJsb2NrIHdlIHdlcmUgbG9va2luZyBmb3IuCisgICAg
ICAgIGlmIChibG9ja0NvbnRhaW5zQnl0ZWNvZGVPZmZzZXQoKCpiYXNpY0Jsb2NrKS5nZXQoKSwg
Ynl0ZWNvZGVPZmZzZXQpKQorICAgICAgICAgICAgcmV0dXJuICgqYmFzaWNCbG9jaykuZ2V0KCk7
CisKKyAgICAgICAgLy8gQmFzaWMgYmxvY2sgaXMgdG8gdGhlIGxlZnQgb2YgdGhlIHJldHVybmVk
IGJsb2NrLgorICAgICAgICBpZiAoYnl0ZWNvZGVPZmZzZXQgPCAoKmJhc2ljQmxvY2spLT5sZWFk
ZXJPZmZzZXQoKSkgeworICAgICAgICAgICAgQVNTRVJUKGJhc2ljQmxvY2sgLSAxID49IG1fYmFz
aWNCbG9ja3MuZGF0YSgpKTsKKyAgICAgICAgICAgIEFTU0VSVChibG9ja0NvbnRhaW5zQnl0ZWNv
ZGVPZmZzZXQoYmFzaWNCbG9ja1stMV0uZ2V0KCksIGJ5dGVjb2RlT2Zmc2V0KSk7CisgICAgICAg
ICAgICByZXR1cm4gYmFzaWNCbG9ja1stMV0uZ2V0KCk7CisgICAgICAgIH0KKworICAgICAgICAv
LyBCYXNpYyBibG9jayBpcyB0byB0aGUgcmlnaHQgb2YgdGhlIHJldHVybmVkIGJsb2NrLgorICAg
ICAgICBBU1NFUlQoJmJhc2ljQmxvY2tbMV0gPD0gJm1fYmFzaWNCbG9ja3MubGFzdCgpKTsKKyAg
ICAgICAgQVNTRVJUKGJsb2NrQ29udGFpbnNCeXRlY29kZU9mZnNldChiYXNpY0Jsb2NrWzFdLmdl
dCgpLCBieXRlY29kZU9mZnNldCkpOworICAgICAgICByZXR1cm4gYmFzaWNCbG9ja1sxXS5nZXQo
KTsKKyAgICB9CisKKyAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGZpbmRCYXNpY0Jsb2NrV2l0aExl
YWRlck9mZnNldCh1bnNpZ25lZCBsZWFkZXJPZmZzZXQpCisgICAgeworICAgICAgICByZXR1cm4g
KCp0cnlCaW5hcnlTZWFyY2g8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4sIHVu
c2lnbmVkPihtX2Jhc2ljQmxvY2tzLCBtX2Jhc2ljQmxvY2tzLnNpemUoKSwgbGVhZGVyT2Zmc2V0
LCBbXSAoc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4qIGJhc2ljQmxvY2spIHsg
cmV0dXJuICgqYmFzaWNCbG9jayktPmxlYWRlck9mZnNldCgpOyB9KSkuZ2V0KCk7CisgICAgfQor
CisgICAgdW5zaWduZWQgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYmFzaWNCbG9ja3Muc2l6ZSgp
OyB9CisgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBhdCh1bnNpZ25lZCBpbmRleCkgY29uc3QgeyBy
ZXR1cm4gbV9iYXNpY0Jsb2Nrc1tpbmRleF0uZ2V0KCk7IH0KKyAgICBCeXRlY29kZUJhc2ljQmxv
Y2sqIG9wZXJhdG9yW10odW5zaWduZWQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIGF0KGluZGV4KTsg
fQorCisgICAgaXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVybiBpdGVyYXRvcigqdGhpcywg
MCk7IH0KKyAgICBpdGVyYXRvciBlbmQoKSBjb25zdCB7IHJldHVybiBpdGVyYXRvcigqdGhpcywg
c2l6ZSgpKTsgfQorICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogZmlyc3QoKSB7IHJldHVybiBhdCgw
KTsgfQorICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogbGFzdCgpIHsgcmV0dXJuIGF0KHNpemUoKSAt
IDEpOyB9CisKK3ByaXZhdGU6CisgICAgQmxvY2sqIG1fY29kZUJsb2NrOworICAgIEJhc2ljQmxv
Y2tzVmVjdG9yIG1fYmFzaWNCbG9ja3M7CisgICAgdHlwZW5hbWUgQmxvY2s6OlVucGFja2VkSW5z
dHJ1Y3Rpb25zJiBtX2luc3RydWN0aW9uczsKK307CisKKwordGVtcGxhdGU8dHlwZW5hbWUgQmxv
Y2s+CitCeXRlY29kZUdyYXBoPEJsb2NrPjo6Qnl0ZWNvZGVHcmFwaChCbG9jayogY29kZUJsb2Nr
LCB0eXBlbmFtZSBCbG9jazo6VW5wYWNrZWRJbnN0cnVjdGlvbnMmIGluc3RydWN0aW9ucykKKyAg
ICA6IG1fY29kZUJsb2NrKGNvZGVCbG9jaykKKyAgICAsIG1faW5zdHJ1Y3Rpb25zKGluc3RydWN0
aW9ucykKK3sKKyAgICBBU1NFUlQobV9jb2RlQmxvY2spOworICAgIEJ5dGVjb2RlQmFzaWNCbG9j
azo6Y29tcHV0ZShtX2NvZGVCbG9jaywgaW5zdHJ1Y3Rpb25zLmJlZ2luKCksIGluc3RydWN0aW9u
cy5zaXplKCksIG1fYmFzaWNCbG9ja3MpOworICAgIEFTU0VSVChtX2Jhc2ljQmxvY2tzLnNpemUo
KSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCmluZGV4IDQzZWNmODdmNDM1YTQ0NTk2OTk2NTc2
NGEzMWFkNjk5YWM4YmU2YTIuLmEzYjAwZjNjZDgxYTQzODFlMDI1ZWE4YjlhYmY5Mjk5MTlkZGZl
MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxp
c3QuanNvbgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0
Lmpzb24KQEAgLTE0Myw4ICsxNDMsNyBAQAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfYXNz
ZXJ0IiwgImxlbmd0aCIgOiAzIH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9jcmVhdGVf
cmVzdCIsICJsZW5ndGgiOiA0IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9nZXRfcmVz
dF9sZW5ndGgiLCAibGVuZ3RoIjogMyB9LAotICAgICAgICAgICAgeyAibmFtZSIgOiAib3Bfc2F2
ZSIsICJsZW5ndGgiIDogNCB9LAotICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfcmVzdW1lIiwg
Imxlbmd0aCIgOiAzIH0sCisgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF95aWVsZCIsICJsZW5n
dGgiIDogNCB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3Bfd2F0Y2hkb2ciLCAibGVuZ3Ro
IiA6IDEgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2xvZ19zaGFkb3dfY2hpY2tlbl9w
cm9sb2d1ZSIsICJsZW5ndGgiIDogMn0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9sb2df
c2hhZG93X2NoaWNrZW5fdGFpbCIsICJsZW5ndGgiIDogM30KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAK
aW5kZXggMTdlODJhMmZiYmEwMTUwNDNlOTlkMzRlZDI1NjkzNzJiMzZmN2E4NS4uYjEzZTgwYjQx
NjRlODVkNDI2OWNhY2IxNjY1OTFmOGI4NWJmMzc4ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5jcHAK
QEAgLTMxLDE5OCArMzEsMzYgQEAKICNpbmNsdWRlICJCeXRlY29kZVVzZURlZi5oIgogI2luY2x1
ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkZ1bGxCeXRlY29kZUxpdmVuZXNzLmgiCi0jaW5j
bHVkZSAiUHJlY2lzZUp1bXBUYXJnZXRzLmgiCisjaW5jbHVkZSAiSW50ZXJwcmV0ZXJJbmxpbmVz
LmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCiBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OkJ5dGVj
b2RlTGl2ZW5lc3NBbmFseXNpcyhDb2RlQmxvY2sqIGNvZGVCbG9jaykKLSAgICA6IG1fY29kZUJs
b2NrKGNvZGVCbG9jaykKKyAgICA6IG1fZ3JhcGgoY29kZUJsb2NrLCBjb2RlQmxvY2stPmluc3Ry
dWN0aW9ucygpKQogewotICAgIEFTU0VSVChtX2NvZGVCbG9jayk7CiAgICAgY29tcHV0ZSgpOwog
fQogCi1zdGF0aWMgYm9vbCBpc1ZhbGlkUmVnaXN0ZXJGb3JMaXZlbmVzcyhDb2RlQmxvY2sqIGNv
ZGVCbG9jaywgaW50IG9wZXJhbmQpCit0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgordm9pZCBC
eXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQ29k
ZUJsb2NrKiBjb2RlQmxvY2ssIE9wY29kZUlEIG9wY29kZUlELCBJbnN0cnVjdGlvbiogaW5zdHJ1
Y3Rpb24sIEZhc3RCaXRWZWN0b3ImLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQogewotICAgIGlm
IChjb2RlQmxvY2stPmlzQ29uc3RhbnRSZWdpc3RlckluZGV4KG9wZXJhbmQpKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgCi0gICAgVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWcob3BlcmFu
ZCk7Ci0gICAgcmV0dXJuIHZpcnR1YWxSZWcuaXNMb2NhbCgpOwotfQotCi1zdGF0aWMgdW5zaWdu
ZWQgZ2V0TGVhZGVyT2Zmc2V0Rm9yQmFzaWNCbG9jayhzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVC
YXNpY0Jsb2NrPiogYmFzaWNCbG9jaykKLXsKLSAgICByZXR1cm4gKCpiYXNpY0Jsb2NrKS0+bGVh
ZGVyQnl0ZWNvZGVPZmZzZXQoKTsKLX0KLQotc3RhdGljIEJ5dGVjb2RlQmFzaWNCbG9jayogZmlu
ZEJhc2ljQmxvY2tXaXRoTGVhZGVyT2Zmc2V0KFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNv
ZGVCYXNpY0Jsb2NrPj4mIGJhc2ljQmxvY2tzLCB1bnNpZ25lZCBsZWFkZXJPZmZzZXQpCi17Ci0g
ICAgcmV0dXJuICgqdHJ5QmluYXJ5U2VhcmNoPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2lj
QmxvY2s+LCB1bnNpZ25lZD4oYmFzaWNCbG9ja3MsIGJhc2ljQmxvY2tzLnNpemUoKSwgbGVhZGVy
T2Zmc2V0LCBnZXRMZWFkZXJPZmZzZXRGb3JCYXNpY0Jsb2NrKSkuZ2V0KCk7Ci19Ci0KLXN0YXRp
YyBib29sIGJsb2NrQ29udGFpbnNCeXRlY29kZU9mZnNldChCeXRlY29kZUJhc2ljQmxvY2sqIGJs
b2NrLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCkKLXsKLSAgICB1bnNpZ25lZCBsZWFkZXJPZmZz
ZXQgPSBibG9jay0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKTsKLSAgICByZXR1cm4gYnl0ZWNvZGVP
ZmZzZXQgPj0gbGVhZGVyT2Zmc2V0ICYmIGJ5dGVjb2RlT2Zmc2V0IDwgbGVhZGVyT2Zmc2V0ICsg
YmxvY2stPnRvdGFsQnl0ZWNvZGVMZW5ndGgoKTsKLX0KLQotc3RhdGljIEJ5dGVjb2RlQmFzaWNC
bG9jayogZmluZEJhc2ljQmxvY2tGb3JCeXRlY29kZU9mZnNldChWZWN0b3I8c3RkOjp1bmlxdWVf
cHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+JiBiYXNpY0Jsb2NrcywgdW5zaWduZWQgYnl0ZWNvZGVP
ZmZzZXQpCi17Ci0vKgotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBiYXNpY0Jsb2Nrcy5z
aXplKCk7IGkrKykgewotICAgICAgICBpZiAoYmxvY2tDb250YWluc0J5dGVjb2RlT2Zmc2V0KGJh
c2ljQmxvY2tzW2ldLmdldCgpLCBieXRlY29kZU9mZnNldCkpCi0gICAgICAgICAgICByZXR1cm4g
YmFzaWNCbG9ja3NbaV0uZ2V0KCk7Ci0gICAgfQotICAgIHJldHVybiAwOwotKi8KLSAgICBzdGQ6
OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPiogYmFzaWNCbG9jayA9IGFwcHJveGltYXRl
QmluYXJ5U2VhcmNoPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+LCB1bnNpZ25l
ZD4oCi0gICAgICAgIGJhc2ljQmxvY2tzLCBiYXNpY0Jsb2Nrcy5zaXplKCksIGJ5dGVjb2RlT2Zm
c2V0LCBnZXRMZWFkZXJPZmZzZXRGb3JCYXNpY0Jsb2NrKTsKLSAgICAvLyBXZSBmb3VuZCB0aGUg
YmxvY2sgd2Ugd2VyZSBsb29raW5nIGZvci4KLSAgICBpZiAoYmxvY2tDb250YWluc0J5dGVjb2Rl
T2Zmc2V0KCgqYmFzaWNCbG9jaykuZ2V0KCksIGJ5dGVjb2RlT2Zmc2V0KSkKLSAgICAgICAgcmV0
dXJuICgqYmFzaWNCbG9jaykuZ2V0KCk7Ci0KLSAgICAvLyBCYXNpYyBibG9jayBpcyB0byB0aGUg
bGVmdCBvZiB0aGUgcmV0dXJuZWQgYmxvY2suCi0gICAgaWYgKGJ5dGVjb2RlT2Zmc2V0IDwgKCpi
YXNpY0Jsb2NrKS0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKSkgewotICAgICAgICBBU1NFUlQoYmFz
aWNCbG9jayAtIDEgPj0gYmFzaWNCbG9ja3MuZGF0YSgpKTsKLSAgICAgICAgQVNTRVJUKGJsb2Nr
Q29udGFpbnNCeXRlY29kZU9mZnNldChiYXNpY0Jsb2NrWy0xXS5nZXQoKSwgYnl0ZWNvZGVPZmZz
ZXQpKTsKLSAgICAgICAgcmV0dXJuIGJhc2ljQmxvY2tbLTFdLmdldCgpOwotICAgIH0KLQotICAg
IC8vIEJhc2ljIGJsb2NrIGlzIHRvIHRoZSByaWdodCBvZiB0aGUgcmV0dXJuZWQgYmxvY2suCi0g
ICAgQVNTRVJUKCZiYXNpY0Jsb2NrWzFdIDw9ICZiYXNpY0Jsb2Nrcy5sYXN0KCkpOwotICAgIEFT
U0VSVChibG9ja0NvbnRhaW5zQnl0ZWNvZGVPZmZzZXQoYmFzaWNCbG9ja1sxXS5nZXQoKSwgYnl0
ZWNvZGVPZmZzZXQpKTsKLSAgICByZXR1cm4gYmFzaWNCbG9ja1sxXS5nZXQoKTsKLX0KLQotLy8g
U2ltcGxpZmllZCBpbnRlcmZhY2UgdG8gYnl0ZWNvZGUgdXNlL2RlZiwgd2hpY2ggZGV0ZXJtaW5l
cyBkZWZzIGZpcnN0IGFuZCB0aGVuIHVzZXMsIGFuZCBpbmNsdWRlcwotLy8gZXhjZXB0aW9uIGhh
bmRsZXJzIGluIHRoZSB1c2VzLgotdGVtcGxhdGU8dHlwZW5hbWUgVXNlRnVuY3RvciwgdHlwZW5h
bWUgRGVmRnVuY3Rvcj4KLXN0YXRpYyB2b2lkIHN0ZXBPdmVySW5zdHJ1Y3Rpb24oQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2ssIFZlY3RvcjxzdGQ6OnVuaXF1
ZV9wdHI8Qnl0ZWNvZGVCYXNpY0Jsb2NrPj4mIGJhc2ljQmxvY2tzLCB1bnNpZ25lZCBieXRlY29k
ZU9mZnNldCwgY29uc3QgVXNlRnVuY3RvciYgdXNlLCBjb25zdCBEZWZGdW5jdG9yJiBkZWYpCi17
Ci0gICAgLy8gVGhpcyBhYnN0cmFjdGx5IGV4ZWN1dGUgdGhlIGluc3RydWN0aW9uIGluIHJldmVy
c2UuIEluc3RydWN0aW9ucyBsb2dpY2FsbHkgZmlyc3QgdXNlIG9wZXJhbmRzIGFuZAotICAgIC8v
IHRoZW4gZGVmaW5lIG9wZXJhbmRzLiBUaGlzIGxvZ2ljYWwgb3JkZXJpbmcgaXMgbmVjZXNzYXJ5
IGZvciBvcGVyYXRpb25zIHRoYXQgdXNlIGFuZCBkZWYgdGhlIHNhbWUKLSAgICAvLyBvcGVyYW5k
LCBsaWtlOgotICAgIC8vCi0gICAgLy8gICAgIG9wX2FkZCBsb2MxLCBsb2MxLCBsb2MyCi0gICAg
Ly8KLSAgICAvLyBUaGUgdXNlIG9mIGxvYzEgaGFwcGVucyBiZWZvcmUgdGhlIGRlZiBvZiBsb2Mx
LiBUaGF0J3MgYSBzZW1hbnRpYyByZXF1aXJlbWVudCBzaW5jZSB0aGUgYWRkCi0gICAgLy8gb3Bl
cmF0aW9uIGNhbm5vdCB0cmF2ZWwgZm9yd2FyZCBpbiB0aW1lIHRvIHJlYWQgdGhlIHZhbHVlIHRo
YXQgaXQgd2lsbCBwcm9kdWNlIGFmdGVyIHJlYWRpbmcgdGhhdAotICAgIC8vIHZhbHVlLiBTaW5j
ZSB3ZSBhcmUgZXhlY3V0aW5nIGluIHJldmVyc2UsIHRoaXMgbWVhbnMgdGhhdCB3ZSBtdXN0IGRv
IGRlZnMgYmVmb3JlIHVzZXMgKHJldmVyc2Ugb2YKLSAgICAvLyB1c2VzIGJlZm9yZSBkZWZzKS4K
LSAgICAvLwotICAgIC8vIFNpbmNlIHRoaXMgaXMgYSBsaXZlbmVzcyBhbmFseXNpcywgdGhpcyBv
cmRlcmluZyBlbmRzIHVwIGJlaW5nIHBhcnRpY3VsYXJseSBpbXBvcnRhbnQ6IGlmIHdlIGRpZAot
ICAgIC8vIHVzZXMgYmVmb3JlIGRlZnMsIHRoZW4gdGhlIGFkZCBvcGVyYXRpb24gYWJvdmUgd291
bGQgYXBwZWFyIHRvIG5vdCBoYXZlIGxvYzEgbGl2ZSwgc2luY2Ugd2UnZAotICAgIC8vIGZpcnN0
IGFkZCBpdCB0byB0aGUgb3V0IHNldCAodGhlIHVzZSksIGFuZCB0aGVuIHdlJ2QgcmVtb3ZlIGl0
ICh0aGUgZGVmKS4KLSAgICAKLSAgICBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KAotICAg
ICAgICBjb2RlQmxvY2ssIGJsb2NrLCBieXRlY29kZU9mZnNldCwKLSAgICAgICAgWyZdIChDb2Rl
QmxvY2sqIGNvZGVCbG9jaywgSW5zdHJ1Y3Rpb24qLCBPcGNvZGVJRCwgaW50IG9wZXJhbmQpIHsK
LSAgICAgICAgICAgIGlmIChpc1ZhbGlkUmVnaXN0ZXJGb3JMaXZlbmVzcyhjb2RlQmxvY2ssIG9w
ZXJhbmQpKQotICAgICAgICAgICAgICAgIGRlZihWaXJ0dWFsUmVnaXN0ZXIob3BlcmFuZCkudG9M
b2NhbCgpKTsKLSAgICAgICAgfSk7Ci0KLSAgICBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0
KAotICAgICAgICBjb2RlQmxvY2ssIGJsb2NrLCBieXRlY29kZU9mZnNldCwKLSAgICAgICAgWyZd
IChDb2RlQmxvY2sqIGNvZGVCbG9jaywgSW5zdHJ1Y3Rpb24qLCBPcGNvZGVJRCwgaW50IG9wZXJh
bmQpIHsKLSAgICAgICAgICAgIGlmIChpc1ZhbGlkUmVnaXN0ZXJGb3JMaXZlbmVzcyhjb2RlQmxv
Y2ssIG9wZXJhbmQpKQotICAgICAgICAgICAgICAgIHVzZShWaXJ0dWFsUmVnaXN0ZXIob3BlcmFu
ZCkudG9Mb2NhbCgpKTsKLSAgICAgICAgfSk7Ci0KLSAgICAvLyBJZiB3ZSBoYXZlIGFuIGV4Y2Vw
dGlvbiBoYW5kbGVyLCB3ZSB3YW50IHRoZSBsaXZlLWluIHZhcmlhYmxlcyBvZiB0aGUgCi0gICAg
Ly8gZXhjZXB0aW9uIGhhbmRsZXIgYmxvY2sgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIGxpdmUtaW4g
b2YgdGhpcyBwYXJ0aWN1bGFyIGJ5dGVjb2RlLgotICAgIGlmIChIYW5kbGVySW5mbyogaGFuZGxl
ciA9IGNvZGVCbG9jay0+aGFuZGxlckZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KSkg
ewotICAgICAgICAvLyBGSVhNRTogVGhpcyByZXN1bWUgY2hlY2sgc2hvdWxkIG5vdCBiZSBuZWVk
ZWQuCi0gICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NTkyODEKLSAgICAgICAgSW50ZXJwcmV0ZXIqIGludGVycHJldGVyID0gY29kZUJsb2NrLT52bSgp
LT5pbnRlcnByZXRlcjsKLSAgICAgICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luID0g
Y29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpOwotICAgICAgICBJbnN0cnVjdGlvbiog
aW5zdHJ1Y3Rpb24gPSAmaW5zdHJ1Y3Rpb25zQmVnaW5bYnl0ZWNvZGVPZmZzZXRdOwotICAgICAg
ICBPcGNvZGVJRCBvcGNvZGVJRCA9IGludGVycHJldGVyLT5nZXRPcGNvZGVJRChpbnN0cnVjdGlv
bi0+dS5vcGNvZGUpOwotICAgICAgICBpZiAob3Bjb2RlSUQgIT0gb3BfcmVzdW1lKSB7Ci0gICAg
ICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGhhbmRsZXJCbG9jayA9IGZpbmRCYXNpY0Jsb2Nr
V2l0aExlYWRlck9mZnNldChiYXNpY0Jsb2NrcywgaGFuZGxlci0+dGFyZ2V0KTsKLSAgICAgICAg
ICAgIEFTU0VSVChoYW5kbGVyQmxvY2spOwotICAgICAgICAgICAgaGFuZGxlckJsb2NrLT5pbigp
LmZvckVhY2hTZXRCaXQodXNlKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotc3RhdGljIHZvaWQg
c3RlcE92ZXJJbnN0cnVjdGlvbihDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Js
b2NrKiBibG9jaywgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUJhc2ljQmxvY2s+PiYg
YmFzaWNCbG9ja3MsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBGYXN0Qml0VmVjdG9yJiBvdXQp
Ci17Ci0gICAgc3RlcE92ZXJJbnN0cnVjdGlvbigKLSAgICAgICAgY29kZUJsb2NrLCBibG9jaywg
YmFzaWNCbG9ja3MsIGJ5dGVjb2RlT2Zmc2V0LAotICAgICAgICBbJl0gKHVuc2lnbmVkIGJpdElu
ZGV4KSB7Ci0gICAgICAgICAgICAvLyBUaGlzIGlzIHRoZSB1c2UgZnVuY3Rvciwgc28gd2Ugc2V0
IHRoZSBiaXQuCi0gICAgICAgICAgICBvdXQuc2V0KGJpdEluZGV4KTsKLSAgICAgICAgfSwKLSAg
ICAgICAgWyZdICh1bnNpZ25lZCBiaXRJbmRleCkgewotICAgICAgICAgICAgLy8gVGhpcyBpcyB0
aGUgZGVmIGZ1bmN0b3IsIHNvIHdlIGNsZWFyIHRoZSBiaXQuCi0gICAgICAgICAgICBvdXQuY2xl
YXIoYml0SW5kZXgpOwotICAgICAgICB9KTsKKyAgICBKU0M6OmNvbXB1dGVEZWZzRm9yQnl0ZWNv
ZGVPZmZzZXQoY29kZUJsb2NrLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb24sIGZ1bmN0b3IpOwogfQog
Ci1zdGF0aWMgdm9pZCBjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVC
bG9jayogY29kZUJsb2NrLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrLCBWZWN0b3I8c3RkOjp1
bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+JiBiYXNpY0Jsb2NrcywgdW5zaWduZWQgdGFy
Z2V0T2Zmc2V0LCBGYXN0Qml0VmVjdG9yJiByZXN1bHQpCit0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5j
dG9yPgordm9pZCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmNvbXB1dGVVc2VzRm9yQnl0ZWNv
ZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIE9wY29kZUlEIG9wY29kZUlELCBJbnN0cnVj
dGlvbiogaW5zdHJ1Y3Rpb24sIEZhc3RCaXRWZWN0b3ImLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9y
KQogewotICAgIEFTU0VSVCghYmxvY2stPmlzRXhpdEJsb2NrKCkpOwotICAgIEFTU0VSVCghYmxv
Y2stPmlzRW50cnlCbG9jaygpKTsKLQotICAgIEZhc3RCaXRWZWN0b3Igb3V0ID0gYmxvY2stPm91
dCgpOwotCi0gICAgZm9yIChpbnQgaSA9IGJsb2NrLT5ieXRlY29kZU9mZnNldHMoKS5zaXplKCkg
LSAxOyBpID49IDA7IGktLSkgewotICAgICAgICB1bnNpZ25lZCBieXRlY29kZU9mZnNldCA9IGJs
b2NrLT5ieXRlY29kZU9mZnNldHMoKVtpXTsKLSAgICAgICAgaWYgKHRhcmdldE9mZnNldCA+IGJ5
dGVjb2RlT2Zmc2V0KQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIAotICAgICAgICBzdGVw
T3Zlckluc3RydWN0aW9uKGNvZGVCbG9jaywgYmxvY2ssIGJhc2ljQmxvY2tzLCBieXRlY29kZU9m
ZnNldCwgb3V0KTsKLSAgICB9Ci0KLSAgICByZXN1bHQuc2V0KG91dCk7Ci19Ci0KLXN0YXRpYyB2
b2lkIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQmxvY2soQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJ5
dGVjb2RlQmFzaWNCbG9jayogYmxvY2ssIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNvZGVC
YXNpY0Jsb2NrPj4mIGJhc2ljQmxvY2tzKQotewotICAgIGlmIChibG9jay0+aXNFeGl0QmxvY2so
KSB8fCBibG9jay0+aXNFbnRyeUJsb2NrKCkpCi0gICAgICAgIHJldHVybjsKLSAgICBjb21wdXRl
TG9jYWxMaXZlbmVzc0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9jaywgYmxvY2ssIGJhc2ljQmxv
Y2tzLCBibG9jay0+bGVhZGVyQnl0ZWNvZGVPZmZzZXQoKSwgYmxvY2stPmluKCkpOwotfQotCi12
b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6cnVuTGl2ZW5lc3NGaXhwb2ludCgpCi17Ci0g
ICAgVW5saW5rZWRDb2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrID0gbV9jb2RlQmxvY2stPnVu
bGlua2VkQ29kZUJsb2NrKCk7Ci0gICAgdW5zaWduZWQgbnVtYmVyT2ZWYXJpYWJsZXMgPSB1bmxp
bmtlZENvZGVCbG9jay0+bV9udW1DYWxsZWVMb2NhbHM7Ci0KLSAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgbV9iYXNpY0Jsb2Nrcy5zaXplKCk7IGkrKykgewotICAgICAgICBCeXRlY29kZUJh
c2ljQmxvY2sqIGJsb2NrID0gbV9iYXNpY0Jsb2Nrc1tpXS5nZXQoKTsKLSAgICAgICAgYmxvY2st
PmluKCkucmVzaXplKG51bWJlck9mVmFyaWFibGVzKTsKLSAgICAgICAgYmxvY2stPm91dCgpLnJl
c2l6ZShudW1iZXJPZlZhcmlhYmxlcyk7Ci0gICAgfQotCi0gICAgYm9vbCBjaGFuZ2VkOwotICAg
IG1fYmFzaWNCbG9ja3MubGFzdCgpLT5pbigpLmNsZWFyQWxsKCk7Ci0gICAgbV9iYXNpY0Jsb2Nr
cy5sYXN0KCktPm91dCgpLmNsZWFyQWxsKCk7Ci0gICAgRmFzdEJpdFZlY3RvciBuZXdPdXQ7Ci0g
ICAgbmV3T3V0LnJlc2l6ZShtX2Jhc2ljQmxvY2tzLmxhc3QoKS0+b3V0KCkubnVtQml0cygpKTsK
LSAgICBkbyB7Ci0gICAgICAgIGNoYW5nZWQgPSBmYWxzZTsKLSAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gbV9iYXNpY0Jsb2Nrcy5zaXplKCkgLSAxOyBpLS07KSB7Ci0gICAgICAgICAgICBCeXRl
Y29kZUJhc2ljQmxvY2sqIGJsb2NrID0gbV9iYXNpY0Jsb2Nrc1tpXS5nZXQoKTsKLSAgICAgICAg
ICAgIG5ld091dC5jbGVhckFsbCgpOwotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsg
aiA8IGJsb2NrLT5zdWNjZXNzb3JzKCkuc2l6ZSgpOyBqKyspCi0gICAgICAgICAgICAgICAgbmV3
T3V0Lm1lcmdlKGJsb2NrLT5zdWNjZXNzb3JzKClbal0tPmluKCkpOwotICAgICAgICAgICAgYm9v
bCBvdXREaWRDaGFuZ2UgPSBibG9jay0+b3V0KCkuc2V0QW5kQ2hlY2sobmV3T3V0KTsKLSAgICAg
ICAgICAgIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQmxvY2sobV9jb2RlQmxvY2ssIGJsb2NrLCBt
X2Jhc2ljQmxvY2tzKTsKLSAgICAgICAgICAgIGNoYW5nZWQgfD0gb3V0RGlkQ2hhbmdlOwotICAg
ICAgICB9Ci0gICAgfSB3aGlsZSAoY2hhbmdlZCk7CisgICAgSlNDOjpjb21wdXRlVXNlc0ZvckJ5
dGVjb2RlT2Zmc2V0KGNvZGVCbG9jaywgb3Bjb2RlSUQsIGluc3RydWN0aW9uLCBmdW5jdG9yKTsK
IH0KIAogdm9pZCBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM6OmdldExpdmVuZXNzSW5mb0F0Qnl0
ZWNvZGVPZmZzZXQodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIEZhc3RCaXRWZWN0b3ImIHJlc3Vs
dCkKIHsKLSAgICBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrID0gZmluZEJhc2ljQmxvY2tGb3JC
eXRlY29kZU9mZnNldChtX2Jhc2ljQmxvY2tzLCBieXRlY29kZU9mZnNldCk7CisgICAgQnl0ZWNv
ZGVCYXNpY0Jsb2NrKiBibG9jayA9IG1fZ3JhcGguZmluZEJhc2ljQmxvY2tGb3JCeXRlY29kZU9m
ZnNldChieXRlY29kZU9mZnNldCk7CiAgICAgQVNTRVJUKGJsb2NrKTsKICAgICBBU1NFUlQoIWJs
b2NrLT5pc0VudHJ5QmxvY2soKSk7CiAgICAgQVNTRVJUKCFibG9jay0+aXNFeGl0QmxvY2soKSk7
CiAgICAgcmVzdWx0LnJlc2l6ZShibG9jay0+b3V0KCkubnVtQml0cygpKTsKLSAgICBjb21wdXRl
TG9jYWxMaXZlbmVzc0ZvckJ5dGVjb2RlT2Zmc2V0KG1fY29kZUJsb2NrLCBibG9jaywgbV9iYXNp
Y0Jsb2NrcywgYnl0ZWNvZGVPZmZzZXQsIHJlc3VsdCk7CisgICAgY29tcHV0ZUxvY2FsTGl2ZW5l
c3NGb3JCeXRlY29kZU9mZnNldChtX2dyYXBoLCBibG9jaywgYnl0ZWNvZGVPZmZzZXQsIHJlc3Vs
dCk7CiB9CiAKIGJvb2wgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpvcGVyYW5kSXNMaXZlQXRC
eXRlY29kZU9mZnNldChpbnQgb3BlcmFuZCwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpCkBAIC0y
NDQsMTkgKzgyLDE5IEBAIEZhc3RCaXRWZWN0b3IgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpn
ZXRMaXZlbmVzc0luZm9BdEJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkCiB2b2lkIEJ5dGVjb2RlTGl2
ZW5lc3NBbmFseXNpczo6Y29tcHV0ZUZ1bGxMaXZlbmVzcyhGdWxsQnl0ZWNvZGVMaXZlbmVzcyYg
cmVzdWx0KQogewogICAgIEZhc3RCaXRWZWN0b3Igb3V0OworICAgIENvZGVCbG9jayogY29kZUJs
b2NrID0gbV9ncmFwaC5jb2RlQmxvY2soKTsKICAgICAKLSAgICByZXN1bHQubV9tYXAucmVzaXpl
KG1fY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5zaXplKCkpOworICAgIHJlc3VsdC5tX21hcC5y
ZXNpemUoY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5zaXplKCkpOwogICAgIAotICAgIGZvciAo
dW5zaWduZWQgaSA9IG1fYmFzaWNCbG9ja3Muc2l6ZSgpOyBpLS07KSB7Ci0gICAgICAgIEJ5dGVj
b2RlQmFzaWNCbG9jayogYmxvY2sgPSBtX2Jhc2ljQmxvY2tzW2ldLmdldCgpOworICAgIGZvciAo
c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4mIGJsb2NrIDogbV9ncmFwaC5iYXNp
Y0Jsb2Nrc0luUmV2ZXJzZU9yZGVyKCkpIHsKICAgICAgICAgaWYgKGJsb2NrLT5pc0VudHJ5Qmxv
Y2soKSB8fCBibG9jay0+aXNFeGl0QmxvY2soKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICAKICAgICAgICAgb3V0ID0gYmxvY2stPm91dCgpOwogICAgICAgICAKLSAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gYmxvY2stPmJ5dGVjb2RlT2Zmc2V0cygpLnNpemUoKTsgaS0tOykgewot
ICAgICAgICAgICAgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQgPSBibG9jay0+Ynl0ZWNvZGVPZmZz
ZXRzKClbaV07Ci0gICAgICAgICAgICBzdGVwT3Zlckluc3RydWN0aW9uKG1fY29kZUJsb2NrLCBi
bG9jaywgbV9iYXNpY0Jsb2NrcywgYnl0ZWNvZGVPZmZzZXQsIG91dCk7CisgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IGJsb2NrLT5vZmZzZXRzKCkuc2l6ZSgpOyBpLS07KSB7CisgICAgICAgICAg
ICB1bnNpZ25lZCBieXRlY29kZU9mZnNldCA9IGJsb2NrLT5vZmZzZXRzKClbaV07CisgICAgICAg
ICAgICBzdGVwT3Zlckluc3RydWN0aW9uKG1fZ3JhcGgsIGJ5dGVjb2RlT2Zmc2V0LCBvdXQpOwog
ICAgICAgICAgICAgcmVzdWx0Lm1fbWFwW2J5dGVjb2RlT2Zmc2V0XSA9IG91dDsKICAgICAgICAg
fQogICAgIH0KQEAgLTI2NiwyMCArMTA0LDIwIEBAIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5
c2lzOjpjb21wdXRlS2lsbHMoQnl0ZWNvZGVLaWxscyYgcmVzdWx0KQogewogICAgIEZhc3RCaXRW
ZWN0b3Igb3V0OwogICAgIAotICAgIHJlc3VsdC5tX2NvZGVCbG9jayA9IG1fY29kZUJsb2NrOwot
ICAgIHJlc3VsdC5tX2tpbGxTZXRzID0gc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZUtpbGxzOjpL
aWxsU2V0W10+KG1fY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5zaXplKCkpOworICAgIENvZGVC
bG9jayogY29kZUJsb2NrID0gbV9ncmFwaC5jb2RlQmxvY2soKTsKKyAgICByZXN1bHQubV9jb2Rl
QmxvY2sgPSBjb2RlQmxvY2s7CisgICAgcmVzdWx0Lm1fa2lsbFNldHMgPSBzdGQ6Om1ha2VfdW5p
cXVlPEJ5dGVjb2RlS2lsbHM6OktpbGxTZXRbXT4oY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5z
aXplKCkpOwogICAgIAotICAgIGZvciAodW5zaWduZWQgaSA9IG1fYmFzaWNCbG9ja3Muc2l6ZSgp
OyBpLS07KSB7Ci0gICAgICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2sgPSBtX2Jhc2ljQmxv
Y2tzW2ldLmdldCgpOworICAgIGZvciAoc3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9j
az4mIGJsb2NrIDogbV9ncmFwaC5iYXNpY0Jsb2Nrc0luUmV2ZXJzZU9yZGVyKCkpIHsKICAgICAg
ICAgaWYgKGJsb2NrLT5pc0VudHJ5QmxvY2soKSB8fCBibG9jay0+aXNFeGl0QmxvY2soKSkKICAg
ICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAKICAgICAgICAgb3V0ID0gYmxvY2stPm91dCgp
OwogICAgICAgICAKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gYmxvY2stPmJ5dGVjb2RlT2Zm
c2V0cygpLnNpemUoKTsgaS0tOykgewotICAgICAgICAgICAgdW5zaWduZWQgYnl0ZWNvZGVPZmZz
ZXQgPSBibG9jay0+Ynl0ZWNvZGVPZmZzZXRzKClbaV07CisgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IGJsb2NrLT5vZmZzZXRzKCkuc2l6ZSgpOyBpLS07KSB7CisgICAgICAgICAgICB1bnNpZ25l
ZCBieXRlY29kZU9mZnNldCA9IGJsb2NrLT5vZmZzZXRzKClbaV07CiAgICAgICAgICAgICBzdGVw
T3Zlckluc3RydWN0aW9uKAotICAgICAgICAgICAgICAgIG1fY29kZUJsb2NrLCBibG9jaywgbV9i
YXNpY0Jsb2NrcywgYnl0ZWNvZGVPZmZzZXQsCisgICAgICAgICAgICAgICAgbV9ncmFwaCwgYnl0
ZWNvZGVPZmZzZXQsIG91dCwKICAgICAgICAgICAgICAgICBbJl0gKHVuc2lnbmVkIGluZGV4KSB7
CiAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgZm9yIHVzZXMuCiAgICAgICAgICAgICAg
ICAgICAgIGlmIChvdXQuZ2V0KGluZGV4KSkKQEAgLTI5NywxMiArMTM1LDEzIEBAIHZvaWQgQnl0
ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlS2lsbHMoQnl0ZWNvZGVLaWxscyYgcmVzdWx0
KQogCiB2b2lkIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpczo6ZHVtcFJlc3VsdHMoKQogewotICAg
IGRhdGFMb2coIlxuRHVtcGluZyBieXRlY29kZSBsaXZlbmVzcyBmb3IgIiwgKm1fY29kZUJsb2Nr
LCAiOlxuIik7Ci0gICAgSW50ZXJwcmV0ZXIqIGludGVycHJldGVyID0gbV9jb2RlQmxvY2stPnZt
KCktPmludGVycHJldGVyOwotICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiA9IG1f
Y29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpOwotICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBtX2Jhc2ljQmxvY2tzLnNpemUoKTsgaSsrKSB7Ci0gICAgICAgIEJ5dGVjb2RlQmFz
aWNCbG9jayogYmxvY2sgPSBtX2Jhc2ljQmxvY2tzW2ldLmdldCgpOwotICAgICAgICBkYXRhTG9n
RigiXG5CeXRlY29kZSBiYXNpYyBibG9jayAldTogJXAgKG9mZnNldDogJXUsIGxlbmd0aDogJXUp
XG4iLCBpLCBibG9jaywgYmxvY2stPmxlYWRlckJ5dGVjb2RlT2Zmc2V0KCksIGJsb2NrLT50b3Rh
bEJ5dGVjb2RlTGVuZ3RoKCkpOworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gbV9ncmFwaC5j
b2RlQmxvY2soKTsKKyAgICBkYXRhTG9nKCJcbkR1bXBpbmcgYnl0ZWNvZGUgbGl2ZW5lc3MgZm9y
ICIsICpjb2RlQmxvY2ssICI6XG4iKTsKKyAgICBJbnRlcnByZXRlciogaW50ZXJwcmV0ZXIgPSBj
b2RlQmxvY2stPnZtKCktPmludGVycHJldGVyOworICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlv
bnNCZWdpbiA9IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsKKyAgICB1bnNpZ25l
ZCBpID0gMDsKKyAgICBmb3IgKEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2sgOiBtX2dyYXBoKSB7
CisgICAgICAgIGRhdGFMb2dGKCJcbkJ5dGVjb2RlIGJhc2ljIGJsb2NrICV1OiAlcCAob2Zmc2V0
OiAldSwgbGVuZ3RoOiAldSlcbiIsIGkrKywgYmxvY2ssIGJsb2NrLT5sZWFkZXJPZmZzZXQoKSwg
YmxvY2stPnRvdGFsTGVuZ3RoKCkpOwogICAgICAgICBkYXRhTG9nRigiU3VjY2Vzc29yczogIik7
CiAgICAgICAgIGZvciAodW5zaWduZWQgaiA9IDA7IGogPCBibG9jay0+c3VjY2Vzc29ycygpLnNp
emUoKTsgaisrKSB7CiAgICAgICAgICAgICBCeXRlY29kZUJhc2ljQmxvY2sqIHN1Y2Nlc3NvciA9
IGJsb2NrLT5zdWNjZXNzb3JzKClbal07CkBAIC0zMTcsNyArMTU2LDcgQEAgdm9pZCBCeXRlY29k
ZUxpdmVuZXNzQW5hbHlzaXM6OmR1bXBSZXN1bHRzKCkKICAgICAgICAgICAgIGRhdGFMb2dGKCJF
eGl0IGJsb2NrOiAlcFxuIiwgYmxvY2spOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
IH0KLSAgICAgICAgZm9yICh1bnNpZ25lZCBieXRlY29kZU9mZnNldCA9IGJsb2NrLT5sZWFkZXJC
eXRlY29kZU9mZnNldCgpOyBieXRlY29kZU9mZnNldCA8IGJsb2NrLT5sZWFkZXJCeXRlY29kZU9m
ZnNldCgpICsgYmxvY2stPnRvdGFsQnl0ZWNvZGVMZW5ndGgoKTspIHsKKyAgICAgICAgZm9yICh1
bnNpZ25lZCBieXRlY29kZU9mZnNldCA9IGJsb2NrLT5sZWFkZXJPZmZzZXQoKTsgYnl0ZWNvZGVP
ZmZzZXQgPCBibG9jay0+bGVhZGVyT2Zmc2V0KCkgKyBibG9jay0+dG90YWxMZW5ndGgoKTspIHsK
ICAgICAgICAgICAgIGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24gPSAmaW5z
dHJ1Y3Rpb25zQmVnaW5bYnl0ZWNvZGVPZmZzZXRdOwogCiAgICAgICAgICAgICBkYXRhTG9nRigi
TGl2ZSB2YXJpYWJsZXM6ICIpOwpAQCAtMzI3LDcgKzE2Niw3IEBAIHZvaWQgQnl0ZWNvZGVMaXZl
bmVzc0FuYWx5c2lzOjpkdW1wUmVzdWx0cygpCiAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2dG
KCIldSAiLCBqKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGRhdGFMb2dGKCJcbiIpOwot
ICAgICAgICAgICAgbV9jb2RlQmxvY2stPmR1bXBCeXRlY29kZShXVEY6OmRhdGFGaWxlKCksIG1f
Y29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpLCBpbnN0cnVjdGlvbnNCZWdp
biwgY3VycmVudEluc3RydWN0aW9uKTsKKyAgICAgICAgICAgIGNvZGVCbG9jay0+ZHVtcEJ5dGVj
b2RlKFdURjo6ZGF0YUZpbGUoKSwgY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhl
YygpLCBpbnN0cnVjdGlvbnNCZWdpbiwgY3VycmVudEluc3RydWN0aW9uKTsKIAogICAgICAgICAg
ICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rp
b25zQmVnaW5bYnl0ZWNvZGVPZmZzZXRdLnUub3Bjb2RlKTsKICAgICAgICAgICAgIHVuc2lnbmVk
IG9wY29kZUxlbmd0aCA9IG9wY29kZUxlbmd0aHNbb3Bjb2RlSURdOwpAQCAtMzQ2LDkgKzE4NSw3
IEBAIHZvaWQgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpkdW1wUmVzdWx0cygpCiAKIHZvaWQg
Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzOjpjb21wdXRlKCkKIHsKLSAgICBjb21wdXRlQnl0ZWNv
ZGVCYXNpY0Jsb2NrcyhtX2NvZGVCbG9jaywgbV9iYXNpY0Jsb2Nrcyk7Ci0gICAgQVNTRVJUKG1f
YmFzaWNCbG9ja3Muc2l6ZSgpKTsKLSAgICBydW5MaXZlbmVzc0ZpeHBvaW50KCk7CisgICAgcnVu
TGl2ZW5lc3NGaXhwb2ludChtX2dyYXBoKTsKIAogICAgIGlmIChPcHRpb25zOjpkdW1wQnl0ZWNv
ZGVMaXZlbmVzc1Jlc3VsdHMoKSkKICAgICAgICAgZHVtcFJlc3VsdHMoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlz
aXMuaAppbmRleCBlY2UxNmYyMWYwMTUxMGE2NDI3ZmQ4NDExNDA3OWJlZDg3MGMwODc1Li5lMTJj
ZDhlZGNlNzZlMTIyZWYwNGVlMWYzNWZiYTgyMWI4ZDdmN2YwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcy5o
CkBAIC0yMywxMCArMjMsMTEgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
ICAqLwogCi0jaWZuZGVmIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc19oCi0jZGVmaW5lIEJ5dGVj
b2RlTGl2ZW5lc3NBbmFseXNpc19oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkJ5dGVjb2Rl
QmFzaWNCbG9jay5oIgorI2luY2x1ZGUgIkJ5dGVjb2RlR3JhcGguaCIKKyNpbmNsdWRlICJDb2Rl
QmxvY2suaCIKICNpbmNsdWRlIDx3dGYvRmFzdEJpdFZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9I
YXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtMzQsMTMgKzM1LDI5IEBACiBu
YW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgQnl0ZWNvZGVLaWxsczsKLWNsYXNzIENvZGVCbG9jazsK
IGNsYXNzIEZ1bGxCeXRlY29kZUxpdmVuZXNzOwogCi1jbGFzcyBCeXRlY29kZUxpdmVuZXNzQW5h
bHlzaXMgewordGVtcGxhdGU8dHlwZW5hbWUgRGVyaXZlZEFuYWx5c2lzPgorY2xhc3MgQnl0ZWNv
ZGVMaXZlbmVzc1Byb3BhZ2F0aW9uIHsKK3Byb3RlY3RlZDoKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBHcmFwaCwgdHlwZW5hbWUgVXNlRnVuY3RvciwgdHlwZW5hbWUgRGVmRnVuY3Rvcj4gdm9pZCBz
dGVwT3Zlckluc3RydWN0aW9uKEdyYXBoJiwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIEZhc3RC
aXRWZWN0b3ImIG91dCwgY29uc3QgVXNlRnVuY3RvciYsIGNvbnN0IERlZkZ1bmN0b3ImKTsKKwor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEdyYXBoPiB2b2lkIHN0ZXBPdmVySW5zdHJ1Y3Rpb24oR3Jh
cGgmLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgRmFzdEJpdFZlY3RvciYgb3V0KTsKKworICAg
IHRlbXBsYXRlPHR5cGVuYW1lIEdyYXBoPiBib29sIGNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQnl0
ZWNvZGVPZmZzZXQoR3JhcGgmLCBCeXRlY29kZUJhc2ljQmxvY2sqLCB1bnNpZ25lZCB0YXJnZXRP
ZmZzZXQsIEZhc3RCaXRWZWN0b3ImIHJlc3VsdCk7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBH
cmFwaD4gYm9vbCBjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJsb2NrKEdyYXBoJiwgQnl0ZWNvZGVC
YXNpY0Jsb2NrKik7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBHcmFwaD4gRmFzdEJpdFZlY3Rv
ciBnZXRMaXZlbmVzc0luZm9BdEJ5dGVjb2RlT2Zmc2V0KEdyYXBoJiwgdW5zaWduZWQgYnl0ZWNv
ZGVPZmZzZXQpOworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgR3JhcGg+IHZvaWQgcnVuTGl2ZW5l
c3NGaXhwb2ludChHcmFwaCYpOworfTsKKworY2xhc3MgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lz
IDogcHJpdmF0ZSBCeXRlY29kZUxpdmVuZXNzUHJvcGFnYXRpb248Qnl0ZWNvZGVMaXZlbmVzc0Fu
YWx5c2lzPiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzKTsKIHB1YmxpYzoKKyAgICBmcmllbmQg
Y2xhc3MgQnl0ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0aW9uPEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNp
cz47CiAgICAgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzKENvZGVCbG9jayopOwogICAgIAogICAg
IGJvb2wgb3BlcmFuZElzTGl2ZUF0Qnl0ZWNvZGVPZmZzZXQoaW50IG9wZXJhbmQsIHVuc2lnbmVk
IGJ5dGVjb2RlT2Zmc2V0KTsKQEAgLTUxLDE5ICs2OCwxOSBAQCBjbGFzcyBCeXRlY29kZUxpdmVu
ZXNzQW5hbHlzaXMgewogCiBwcml2YXRlOgogICAgIHZvaWQgY29tcHV0ZSgpOwotICAgIHZvaWQg
cnVuTGl2ZW5lc3NGaXhwb2ludCgpOwogICAgIHZvaWQgZHVtcFJlc3VsdHMoKTsKIAogICAgIHZv
aWQgZ2V0TGl2ZW5lc3NJbmZvQXRCeXRlY29kZU9mZnNldCh1bnNpZ25lZCBieXRlY29kZU9mZnNl
dCwgRmFzdEJpdFZlY3RvciYpOwogCi0gICAgQ29kZUJsb2NrKiBtX2NvZGVCbG9jazsKLSAgICBW
ZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEJ5dGVjb2RlQmFzaWNCbG9jaz4+IG1fYmFzaWNCbG9ja3M7
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVj
b2RlT2Zmc2V0KENvZGVCbG9jayosIE9wY29kZUlELCBJbnN0cnVjdGlvbiosIEZhc3RCaXRWZWN0
b3ImLCBjb25zdCBGdW5jdG9yJik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdm9p
ZCBjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KENvZGVCbG9jayosIE9wY29kZUlELCBJbnN0
cnVjdGlvbiosIEZhc3RCaXRWZWN0b3ImLCBjb25zdCBGdW5jdG9yJik7CisKKyAgICBCeXRlY29k
ZUdyYXBoPENvZGVCbG9jaz4gbV9ncmFwaDsKIH07CiAKIGlubGluZSBib29sIG9wZXJhbmRJc0Fs
d2F5c0xpdmUoaW50IG9wZXJhbmQpOwogaW5saW5lIGJvb2wgb3BlcmFuZFRoYXRJc05vdEFsd2F5
c0xpdmVJc0xpdmUoY29uc3QgRmFzdEJpdFZlY3RvciYgb3V0LCBpbnQgb3BlcmFuZCk7CiBpbmxp
bmUgYm9vbCBvcGVyYW5kSXNMaXZlKGNvbnN0IEZhc3RCaXRWZWN0b3ImIG91dCwgaW50IG9wZXJh
bmQpOworaW5saW5lIGJvb2wgaXNWYWxpZFJlZ2lzdGVyRm9yTGl2ZW5lc3MoaW50IG9wZXJhbmQp
OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKLQotI2VuZGlmIC8vIEJ5dGVjb2RlTGl2ZW5lc3NBbmFs
eXNpc19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVMaXZlbmVzc0FuYWx5c2lzSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlTGl2ZW5lc3NBbmFseXNpc0lubGluZXMuaAppbmRleCA5YjVjNzU1ZmNiNmNk
NTE4MDUxNDUwMDc4OTIyYWM0ZDZkNGQyMzhmLi4xNzhkMDJmMzAyOGJlNTM2MjczNDY5Y2ViMGJl
MWJiZGZiYWY0YjU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Qnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpdmVuZXNzQW5hbHlzaXNJbmxpbmVzLmgKQEAgLTIzLDEx
ICsyMywxMiBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNp
Zm5kZWYgQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzSW5saW5lc19oCi0jZGVmaW5lIEJ5dGVjb2Rl
TGl2ZW5lc3NBbmFseXNpc0lubGluZXNfaAorI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJCeXRl
Y29kZUdyYXBoLmgiCiAjaW5jbHVkZSAiQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmgiCiAjaW5j
bHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJP
cGVyYXRpb25zLmgiCiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtNTAsNyArNTEsMTUxIEBAIGlubGlu
ZSBib29sIG9wZXJhbmRJc0xpdmUoY29uc3QgRmFzdEJpdFZlY3RvciYgb3V0LCBpbnQgb3BlcmFu
ZCkKICAgICByZXR1cm4gb3BlcmFuZElzQWx3YXlzTGl2ZShvcGVyYW5kKSB8fCBvcGVyYW5kVGhh
dElzTm90QWx3YXlzTGl2ZUlzTGl2ZShvdXQsIG9wZXJhbmQpOwogfQogCi19IC8vIG5hbWVzcGFj
ZSBKU0MKK2lubGluZSBib29sIGlzVmFsaWRSZWdpc3RlckZvckxpdmVuZXNzKGludCBvcGVyYW5k
KQoreworICAgIFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnKG9wZXJhbmQpOworICAgIGlmICh2
aXJ0dWFsUmVnLmlzQ29uc3RhbnQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVy
biB2aXJ0dWFsUmVnLmlzTG9jYWwoKTsKK30KKworLy8gU2ltcGxpZmllZCBpbnRlcmZhY2UgdG8g
Ynl0ZWNvZGUgdXNlL2RlZiwgd2hpY2ggZGV0ZXJtaW5lcyBkZWZzIGZpcnN0IGFuZCB0aGVuIHVz
ZXMsIGFuZCBpbmNsdWRlcworLy8gZXhjZXB0aW9uIGhhbmRsZXJzIGluIHRoZSB1c2VzLgordGVt
cGxhdGU8dHlwZW5hbWUgRGVyaXZlZEFuYWx5c2lzPgordGVtcGxhdGU8dHlwZW5hbWUgR3JhcGgs
IHR5cGVuYW1lIFVzZUZ1bmN0b3IsIHR5cGVuYW1lIERlZkZ1bmN0b3I+CitpbmxpbmUgdm9pZCBC
eXRlY29kZUxpdmVuZXNzUHJvcGFnYXRpb248RGVyaXZlZEFuYWx5c2lzPjo6c3RlcE92ZXJJbnN0
cnVjdGlvbihHcmFwaCYgZ3JhcGgsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBGYXN0Qml0VmVj
dG9yJiBvdXQsIGNvbnN0IFVzZUZ1bmN0b3ImIHVzZSwgY29uc3QgRGVmRnVuY3RvciYgZGVmKQor
eworICAgIC8vIFRoaXMgYWJzdHJhY3RseSBleGVjdXRlIHRoZSBpbnN0cnVjdGlvbiBpbiByZXZl
cnNlLiBJbnN0cnVjdGlvbnMgbG9naWNhbGx5IGZpcnN0IHVzZSBvcGVyYW5kcyBhbmQKKyAgICAv
LyB0aGVuIGRlZmluZSBvcGVyYW5kcy4gVGhpcyBsb2dpY2FsIG9yZGVyaW5nIGlzIG5lY2Vzc2Fy
eSBmb3Igb3BlcmF0aW9ucyB0aGF0IHVzZSBhbmQgZGVmIHRoZSBzYW1lCisgICAgLy8gb3BlcmFu
ZCwgbGlrZToKKyAgICAvLworICAgIC8vICAgICBvcF9hZGQgbG9jMSwgbG9jMSwgbG9jMgorICAg
IC8vCisgICAgLy8gVGhlIHVzZSBvZiBsb2MxIGhhcHBlbnMgYmVmb3JlIHRoZSBkZWYgb2YgbG9j
MS4gVGhhdCdzIGEgc2VtYW50aWMgcmVxdWlyZW1lbnQgc2luY2UgdGhlIGFkZAorICAgIC8vIG9w
ZXJhdGlvbiBjYW5ub3QgdHJhdmVsIGZvcndhcmQgaW4gdGltZSB0byByZWFkIHRoZSB2YWx1ZSB0
aGF0IGl0IHdpbGwgcHJvZHVjZSBhZnRlciByZWFkaW5nIHRoYXQKKyAgICAvLyB2YWx1ZS4gU2lu
Y2Ugd2UgYXJlIGV4ZWN1dGluZyBpbiByZXZlcnNlLCB0aGlzIG1lYW5zIHRoYXQgd2UgbXVzdCBk
byBkZWZzIGJlZm9yZSB1c2VzIChyZXZlcnNlIG9mCisgICAgLy8gdXNlcyBiZWZvcmUgZGVmcyku
CisgICAgLy8KKyAgICAvLyBTaW5jZSB0aGlzIGlzIGEgbGl2ZW5lc3MgYW5hbHlzaXMsIHRoaXMg
b3JkZXJpbmcgZW5kcyB1cCBiZWluZyBwYXJ0aWN1bGFybHkgaW1wb3J0YW50OiBpZiB3ZSBkaWQK
KyAgICAvLyB1c2VzIGJlZm9yZSBkZWZzLCB0aGVuIHRoZSBhZGQgb3BlcmF0aW9uIGFib3ZlIHdv
dWxkIGFwcGVhciB0byBub3QgaGF2ZSBsb2MxIGxpdmUsIHNpbmNlIHdlJ2QKKyAgICAvLyBmaXJz
dCBhZGQgaXQgdG8gdGhlIG91dCBzZXQgKHRoZSB1c2UpLCBhbmQgdGhlbiB3ZSdkIHJlbW92ZSBp
dCAodGhlIGRlZikuCisKKyAgICBhdXRvKiBjb2RlQmxvY2sgPSBncmFwaC5jb2RlQmxvY2soKTsK
KyAgICBJbnRlcnByZXRlciogaW50ZXJwcmV0ZXIgPSBjb2RlQmxvY2stPnZtKCktPmludGVycHJl
dGVyOworICAgIGF1dG8qIGluc3RydWN0aW9uc0JlZ2luID0gZ3JhcGguaW5zdHJ1Y3Rpb25zKCku
YmVnaW4oKTsKKyAgICBhdXRvKiBpbnN0cnVjdGlvbiA9ICZpbnN0cnVjdGlvbnNCZWdpbltieXRl
Y29kZU9mZnNldF07CisgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnRlcnByZXRlci0+Z2V0T3Bj
b2RlSUQoKmluc3RydWN0aW9uKTsKKworICAgIHN0YXRpY19jYXN0PERlcml2ZWRBbmFseXNpcyo+
KHRoaXMpLT5jb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KAorICAgICAgICBjb2RlQmxvY2ss
IG9wY29kZUlELCBpbnN0cnVjdGlvbiwgb3V0LAorICAgICAgICBbJl0gKHR5cGVuYW1lIEdyYXBo
OjpDb2RlQmxvY2sqLCB0eXBlbmFtZSBHcmFwaDo6SW5zdHJ1Y3Rpb24qLCBPcGNvZGVJRCwgaW50
IG9wZXJhbmQpIHsKKyAgICAgICAgICAgIGlmIChpc1ZhbGlkUmVnaXN0ZXJGb3JMaXZlbmVzcyhv
cGVyYW5kKSkKKyAgICAgICAgICAgICAgICBkZWYoVmlydHVhbFJlZ2lzdGVyKG9wZXJhbmQpLnRv
TG9jYWwoKSk7CisgICAgICAgIH0pOworCisgICAgc3RhdGljX2Nhc3Q8RGVyaXZlZEFuYWx5c2lz
Kj4odGhpcyktPmNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoCisgICAgICAgIGNvZGVCbG9j
aywgb3Bjb2RlSUQsIGluc3RydWN0aW9uLCBvdXQsCisgICAgICAgIFsmXSAodHlwZW5hbWUgR3Jh
cGg6OkNvZGVCbG9jayosIHR5cGVuYW1lIEdyYXBoOjpJbnN0cnVjdGlvbiosIE9wY29kZUlELCBp
bnQgb3BlcmFuZCkgeworICAgICAgICAgICAgaWYgKGlzVmFsaWRSZWdpc3RlckZvckxpdmVuZXNz
KG9wZXJhbmQpKQorICAgICAgICAgICAgICAgIHVzZShWaXJ0dWFsUmVnaXN0ZXIob3BlcmFuZCku
dG9Mb2NhbCgpKTsKKyAgICAgICAgfSk7CisKKyAgICAvLyBJZiB3ZSBoYXZlIGFuIGV4Y2VwdGlv
biBoYW5kbGVyLCB3ZSB3YW50IHRoZSBsaXZlLWluIHZhcmlhYmxlcyBvZiB0aGUgCisgICAgLy8g
ZXhjZXB0aW9uIGhhbmRsZXIgYmxvY2sgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIGxpdmUtaW4gb2Yg
dGhpcyBwYXJ0aWN1bGFyIGJ5dGVjb2RlLgorICAgIGlmIChhdXRvKiBoYW5kbGVyID0gY29kZUJs
b2NrLT5oYW5kbGVyRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpKSB7CisgICAgICAg
IEJ5dGVjb2RlQmFzaWNCbG9jayogaGFuZGxlckJsb2NrID0gZ3JhcGguZmluZEJhc2ljQmxvY2tX
aXRoTGVhZGVyT2Zmc2V0KGhhbmRsZXItPnRhcmdldCk7CisgICAgICAgIEFTU0VSVChoYW5kbGVy
QmxvY2spOworICAgICAgICBoYW5kbGVyQmxvY2stPmluKCkuZm9yRWFjaFNldEJpdCh1c2UpOwor
ICAgIH0KK30KKwordGVtcGxhdGU8dHlwZW5hbWUgRGVyaXZlZEFuYWx5c2lzPgordGVtcGxhdGU8
dHlwZW5hbWUgR3JhcGg+CitpbmxpbmUgdm9pZCBCeXRlY29kZUxpdmVuZXNzUHJvcGFnYXRpb248
RGVyaXZlZEFuYWx5c2lzPjo6c3RlcE92ZXJJbnN0cnVjdGlvbihHcmFwaCYgZ3JhcGgsIHVuc2ln
bmVkIGJ5dGVjb2RlT2Zmc2V0LCBGYXN0Qml0VmVjdG9yJiBvdXQpCit7CisgICAgc3RlcE92ZXJJ
bnN0cnVjdGlvbigKKyAgICAgICAgZ3JhcGgsIGJ5dGVjb2RlT2Zmc2V0LCBvdXQsCisgICAgICAg
IFsmXSAodW5zaWduZWQgYml0SW5kZXgpIHsKKyAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIHVz
ZSBmdW5jdG9yLCBzbyB3ZSBzZXQgdGhlIGJpdC4KKyAgICAgICAgICAgIG91dC5zZXQoYml0SW5k
ZXgpOworICAgICAgICB9LAorICAgICAgICBbJl0gKHVuc2lnbmVkIGJpdEluZGV4KSB7CisgICAg
ICAgICAgICAvLyBUaGlzIGlzIHRoZSBkZWYgZnVuY3Rvciwgc28gd2UgY2xlYXIgdGhlIGJpdC4K
KyAgICAgICAgICAgIG91dC5jbGVhcihiaXRJbmRleCk7CisgICAgICAgIH0pOworfQorCit0ZW1w
bGF0ZTx0eXBlbmFtZSBEZXJpdmVkQW5hbHlzaXM+Cit0ZW1wbGF0ZTx0eXBlbmFtZSBHcmFwaD4K
K2lubGluZSBib29sIEJ5dGVjb2RlTGl2ZW5lc3NQcm9wYWdhdGlvbjxEZXJpdmVkQW5hbHlzaXM+
Ojpjb21wdXRlTG9jYWxMaXZlbmVzc0ZvckJ5dGVjb2RlT2Zmc2V0KEdyYXBoJiBncmFwaCwgQnl0
ZWNvZGVCYXNpY0Jsb2NrKiBibG9jaywgdW5zaWduZWQgdGFyZ2V0T2Zmc2V0LCBGYXN0Qml0VmVj
dG9yJiByZXN1bHQpCit7CisgICAgQVNTRVJUKCFibG9jay0+aXNFeGl0QmxvY2soKSk7CisgICAg
QVNTRVJUKCFibG9jay0+aXNFbnRyeUJsb2NrKCkpOwogCi0jZW5kaWYgLy8gQnl0ZWNvZGVMaXZl
bmVzc0FuYWx5c2lzSW5saW5lc19oCisgICAgRmFzdEJpdFZlY3RvciBvdXQgPSBibG9jay0+b3V0
KCk7CiAKKyAgICBmb3IgKGludCBpID0gYmxvY2stPm9mZnNldHMoKS5zaXplKCkgLSAxOyBpID49
IDA7IGktLSkgeworICAgICAgICB1bnNpZ25lZCBieXRlY29kZU9mZnNldCA9IGJsb2NrLT5vZmZz
ZXRzKClbaV07CisgICAgICAgIGlmICh0YXJnZXRPZmZzZXQgPiBieXRlY29kZU9mZnNldCkKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBzdGVwT3Zlckluc3RydWN0aW9uKGdyYXBoLCBieXRl
Y29kZU9mZnNldCwgb3V0KTsKKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0LnNldEFuZENoZWNr
KG91dCk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIERlcml2ZWRBbmFseXNpcz4KK3RlbXBsYXRl
PHR5cGVuYW1lIEdyYXBoPgoraW5saW5lIGJvb2wgQnl0ZWNvZGVMaXZlbmVzc1Byb3BhZ2F0aW9u
PERlcml2ZWRBbmFseXNpcz46OmNvbXB1dGVMb2NhbExpdmVuZXNzRm9yQmxvY2soR3JhcGgmIGdy
YXBoLCBCeXRlY29kZUJhc2ljQmxvY2sqIGJsb2NrKQoreworICAgIGlmIChibG9jay0+aXNFeGl0
QmxvY2soKSB8fCBibG9jay0+aXNFbnRyeUJsb2NrKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICByZXR1cm4gY29tcHV0ZUxvY2FsTGl2ZW5lc3NGb3JCeXRlY29kZU9mZnNldChncmFwaCwg
YmxvY2ssIGJsb2NrLT5sZWFkZXJPZmZzZXQoKSwgYmxvY2stPmluKCkpOworfQorCit0ZW1wbGF0
ZTx0eXBlbmFtZSBEZXJpdmVkQW5hbHlzaXM+Cit0ZW1wbGF0ZTx0eXBlbmFtZSBHcmFwaD4KK2lu
bGluZSBGYXN0Qml0VmVjdG9yIEJ5dGVjb2RlTGl2ZW5lc3NQcm9wYWdhdGlvbjxEZXJpdmVkQW5h
bHlzaXM+OjpnZXRMaXZlbmVzc0luZm9BdEJ5dGVjb2RlT2Zmc2V0KEdyYXBoJiBncmFwaCwgdW5z
aWduZWQgYnl0ZWNvZGVPZmZzZXQpCit7CisgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jayA9
IGdyYXBoLmZpbmRCYXNpY0Jsb2NrRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpOwor
ICAgIEFTU0VSVChibG9jayk7CisgICAgQVNTRVJUKCFibG9jay0+aXNFbnRyeUJsb2NrKCkpOwor
ICAgIEFTU0VSVCghYmxvY2stPmlzRXhpdEJsb2NrKCkpOworICAgIEZhc3RCaXRWZWN0b3Igb3V0
OworICAgIG91dC5yZXNpemUoYmxvY2stPm91dCgpLm51bUJpdHMoKSk7CisgICAgY29tcHV0ZUxv
Y2FsTGl2ZW5lc3NGb3JCeXRlY29kZU9mZnNldChncmFwaCwgYmxvY2ssIGJ5dGVjb2RlT2Zmc2V0
LCBvdXQpOworICAgIHJldHVybiBvdXQ7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIERlcml2ZWRB
bmFseXNpcz4KK3RlbXBsYXRlPHR5cGVuYW1lIEdyYXBoPgoraW5saW5lIHZvaWQgQnl0ZWNvZGVM
aXZlbmVzc1Byb3BhZ2F0aW9uPERlcml2ZWRBbmFseXNpcz46OnJ1bkxpdmVuZXNzRml4cG9pbnQo
R3JhcGgmIGdyYXBoKQoreworICAgIGF1dG8qIGNvZGVCbG9jayA9IGdyYXBoLmNvZGVCbG9jaygp
OworICAgIHVuc2lnbmVkIG51bWJlck9mVmFyaWFibGVzID0gY29kZUJsb2NrLT5udW1DYWxsZWVM
b2NhbHMoKTsKKyAgICBmb3IgKEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2sgOiBncmFwaCkgewor
ICAgICAgICBibG9jay0+aW4oKS5yZXNpemUobnVtYmVyT2ZWYXJpYWJsZXMpOworICAgICAgICBi
bG9jay0+b3V0KCkucmVzaXplKG51bWJlck9mVmFyaWFibGVzKTsKKyAgICAgICAgYmxvY2stPmlu
KCkuY2xlYXJBbGwoKTsKKyAgICAgICAgYmxvY2stPm91dCgpLmNsZWFyQWxsKCk7CisgICAgfQor
CisgICAgYm9vbCBjaGFuZ2VkOworICAgIEJ5dGVjb2RlQmFzaWNCbG9jayogbGFzdEJsb2NrID0g
Z3JhcGgubGFzdCgpOworICAgIGxhc3RCbG9jay0+aW4oKS5jbGVhckFsbCgpOworICAgIGxhc3RC
bG9jay0+b3V0KCkuY2xlYXJBbGwoKTsKKyAgICBGYXN0Qml0VmVjdG9yIG5ld091dDsKKyAgICBu
ZXdPdXQucmVzaXplKGxhc3RCbG9jay0+b3V0KCkubnVtQml0cygpKTsKKyAgICBkbyB7CisgICAg
ICAgIGNoYW5nZWQgPSBmYWxzZTsKKyAgICAgICAgZm9yIChzdGQ6OnVuaXF1ZV9wdHI8Qnl0ZWNv
ZGVCYXNpY0Jsb2NrPiYgYmxvY2sgOiBncmFwaC5iYXNpY0Jsb2Nrc0luUmV2ZXJzZU9yZGVyKCkp
IHsKKyAgICAgICAgICAgIG5ld091dC5jbGVhckFsbCgpOworICAgICAgICAgICAgZm9yIChCeXRl
Y29kZUJhc2ljQmxvY2sqIHN1Y2Nlc3NvciA6IGJsb2NrLT5zdWNjZXNzb3JzKCkpCisgICAgICAg
ICAgICAgICAgbmV3T3V0Lm1lcmdlKHN1Y2Nlc3Nvci0+aW4oKSk7CisgICAgICAgICAgICBibG9j
ay0+b3V0KCkuc2V0KG5ld091dCk7CisgICAgICAgICAgICBjaGFuZ2VkIHw9IGNvbXB1dGVMb2Nh
bExpdmVuZXNzRm9yQmxvY2soZ3JhcGgsIGJsb2NrLmdldCgpKTsKKyAgICAgICAgfQorICAgIH0g
d2hpbGUgKGNoYW5nZWQpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVJld3JpdGVyLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVJld3JpdGVyLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4yOGRjMjBiM2ZlN2JiYjUwNzkyOTg0MWUyMjEyNTg5NGQ4YjI3MWY4Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlUmV3cml0ZXIuY3Bw
CkBAIC0wLDAgKzEsMTE1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IFl1c3VrZSBTdXp1
a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJCeXRlY29kZVJld3JpdGVyLmgiCisKKyNpbmNsdWRlICJQcmVjaXNlSnVtcFRh
cmdldHNJbmxpbmVzLmgiCisjaW5jbHVkZSA8d3RmL0J1YmJsZVNvcnQuaD4KKworbmFtZXNwYWNl
IEpTQyB7CisKK3ZvaWQgQnl0ZWNvZGVSZXdyaXRlcjo6YXBwbHlNb2RpZmljYXRpb24oKQorewor
ICAgIGZvciAoc2l6ZV90IGluc2VydGlvbkluZGV4ID0gbV9pbnNlcnRpb25zLnNpemUoKTsgaW5z
ZXJ0aW9uSW5kZXgtLTspIHsKKyAgICAgICAgSW5zZXJ0aW9uJiBpbnNlcnRpb24gPSBtX2luc2Vy
dGlvbnNbaW5zZXJ0aW9uSW5kZXhdOworICAgICAgICBpZiAoaW5zZXJ0aW9uLnR5cGUgPT0gSW5z
ZXJ0aW9uOjpUeXBlOjpSZW1vdmUpCisgICAgICAgICAgICBtX2dyYXBoLmluc3RydWN0aW9ucygp
LnJlbW92ZShpbnNlcnRpb24uaW5kZXguYnl0ZWNvZGVPZmZzZXQsIGluc2VydGlvbi5sZW5ndGgo
KSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgaWYgKGluc2VydGlvbi5pbmNsdWRlQnJh
bmNoID09IEluY2x1ZGVCcmFuY2g6OlllcykgeworICAgICAgICAgICAgICAgIGludCBmaW5hbE9m
ZnNldCA9IGluc2VydGlvbi5pbmRleC5ieXRlY29kZU9mZnNldCArIGNhbGN1bGF0ZURpZmZlcmVu
Y2UobV9pbnNlcnRpb25zLmJlZ2luKCksIG1faW5zZXJ0aW9ucy5iZWdpbigpICsgaW5zZXJ0aW9u
SW5kZXgpOworICAgICAgICAgICAgICAgIGFkanVzdEp1bXBUYXJnZXRzSW5GcmFnbWVudChmaW5h
bE9mZnNldCwgaW5zZXJ0aW9uKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1fZ3JhcGgu
aW5zdHJ1Y3Rpb25zKCkuaW5zZXJ0VmVjdG9yKGluc2VydGlvbi5pbmRleC5ieXRlY29kZU9mZnNl
dCwgaW5zZXJ0aW9uLmluc3RydWN0aW9ucyk7CisgICAgICAgIH0KKyAgICB9CisgICAgbV9pbnNl
cnRpb25zLmNsZWFyKCk7Cit9CisKK3ZvaWQgQnl0ZWNvZGVSZXdyaXRlcjo6ZXhlY3V0ZSgpCit7
CisgICAgV1RGOjpidWJibGVTb3J0KG1faW5zZXJ0aW9ucy5iZWdpbigpLCBtX2luc2VydGlvbnMu
ZW5kKCksIFtdIChjb25zdCBJbnNlcnRpb24mIGxocywgY29uc3QgSW5zZXJ0aW9uJiByaHMpIHsK
KyAgICAgICAgcmV0dXJuIGxocy5pbmRleCA8IHJocy5pbmRleDsKKyAgICB9KTsKKworICAgIFVu
bGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBtX2dyYXBoLmNvZGVCbG9jaygpOworICAgIGNv
ZGVCbG9jay0+YXBwbHlNb2RpZmljYXRpb24oKnRoaXMpOworfQorCit2b2lkIEJ5dGVjb2RlUmV3
cml0ZXI6OmFkanVzdEp1bXBUYXJnZXRzSW5GcmFnbWVudCh1bnNpZ25lZCBmaW5hbE9mZnNldCwg
SW5zZXJ0aW9uJiBpbnNlcnRpb24pCit7CisgICAgYXV0byYgZnJhZ21lbnQgPSBpbnNlcnRpb24u
aW5zdHJ1Y3Rpb25zOworICAgIFVubGlua2VkSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2lu
ID0gZnJhZ21lbnQuZGF0YSgpOworICAgIGZvciAodW5zaWduZWQgZnJhZ21lbnRPZmZzZXQgPSAw
LCBmcmFnbWVudENvdW50ID0gZnJhZ21lbnQuc2l6ZSgpOyBmcmFnbWVudE9mZnNldCA8IGZyYWdt
ZW50Q291bnQ7KSB7CisgICAgICAgIFVubGlua2VkSW5zdHJ1Y3Rpb24mIGluc3RydWN0aW9uID0g
ZnJhZ21lbnRbZnJhZ21lbnRPZmZzZXRdOworICAgICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGlu
c3RydWN0aW9uLnUub3Bjb2RlOworICAgICAgICBpZiAoaXNCcmFuY2gob3Bjb2RlSUQpKSB7Cisg
ICAgICAgICAgICB1bnNpZ25lZCBieXRlY29kZU9mZnNldCA9IGZpbmFsT2Zmc2V0ICsgZnJhZ21l
bnRPZmZzZXQ7CisgICAgICAgICAgICBVbmxpbmtlZENvZGVCbG9jayogY29kZUJsb2NrID0gbV9n
cmFwaC5jb2RlQmxvY2soKTsKKyAgICAgICAgICAgIGV4dHJhY3RTdG9yZWRKdW1wVGFyZ2V0c0Zv
ckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9jaywgY29kZUJsb2NrLT52bSgpLT5pbnRlcnByZXRlciwg
aW5zdHJ1Y3Rpb25zQmVnaW4sIGZyYWdtZW50T2Zmc2V0LCBbJl0oaW50MzJfdCYgbGFiZWwpIHsK
KyAgICAgICAgICAgICAgICBpbnQgYWJzb2x1dGVPZmZzZXQgPSBhZGp1c3RBYnNvbHV0ZU9mZnNl
dChsYWJlbCk7CisgICAgICAgICAgICAgICAgbGFiZWwgPSBhYnNvbHV0ZU9mZnNldCAtIHN0YXRp
Y19jYXN0PGludD4oYnl0ZWNvZGVPZmZzZXQpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0K
KyAgICAgICAgZnJhZ21lbnRPZmZzZXQgKz0gb3Bjb2RlTGVuZ3RoKG9wY29kZUlEKTsKKyAgICB9
Cit9CisKK3ZvaWQgQnl0ZWNvZGVSZXdyaXRlcjo6aW5zZXJ0SW1wbChJbnNlcnRpb25Qb2ludCBp
bnNlcnRpb25Qb2ludCwgSW5jbHVkZUJyYW5jaCBpbmNsdWRlQnJhbmNoLCBWZWN0b3I8VW5saW5r
ZWRJbnN0cnVjdGlvbj4mJiBmcmFnbWVudCkKK3sKKyAgICBBU1NFUlQoaW5zZXJ0aW9uUG9pbnQu
cG9zaXRpb24gPT0gUG9zaXRpb246OkJlZm9yZSB8fCBpbnNlcnRpb25Qb2ludC5wb3NpdGlvbiA9
PSBQb3NpdGlvbjo6QWZ0ZXIpOworICAgIG1faW5zZXJ0aW9ucy5hcHBlbmQoSW5zZXJ0aW9uIHsK
KyAgICAgICAgaW5zZXJ0aW9uUG9pbnQsCisgICAgICAgIEluc2VydGlvbjo6VHlwZTo6SW5zZXJ0
LAorICAgICAgICBpbmNsdWRlQnJhbmNoLAorICAgICAgICAwLAorICAgICAgICBXVEZNb3ZlKGZy
YWdtZW50KQorICAgIH0pOworfQorCitpbnQgQnl0ZWNvZGVSZXdyaXRlcjo6YWRqdXN0SnVtcFRh
cmdldChJbnNlcnRpb25Qb2ludCBzdGFydFBvaW50LCBJbnNlcnRpb25Qb2ludCBqdW1wVGFyZ2V0
UG9pbnQpCit7CisgICAgaWYgKHN0YXJ0UG9pbnQgPCBqdW1wVGFyZ2V0UG9pbnQpIHsKKyAgICAg
ICAgaW50IGp1bXBUYXJnZXQgPSBqdW1wVGFyZ2V0UG9pbnQuYnl0ZWNvZGVPZmZzZXQ7CisgICAg
ICAgIGF1dG8gc3RhcnQgPSBzdGQ6Omxvd2VyX2JvdW5kKG1faW5zZXJ0aW9ucy5iZWdpbigpLCBt
X2luc2VydGlvbnMuZW5kKCksIHN0YXJ0UG9pbnQsIFsmXSAoY29uc3QgSW5zZXJ0aW9uJiBpbnNl
cnRpb24sIEluc2VydGlvblBvaW50IHN0YXJ0UG9pbnQpIHsKKyAgICAgICAgICAgIHJldHVybiBp
bnNlcnRpb24uaW5kZXggPCBzdGFydFBvaW50OworICAgICAgICB9KTsKKyAgICAgICAgaWYgKHN0
YXJ0ICE9IG1faW5zZXJ0aW9ucy5lbmQoKSkgeworICAgICAgICAgICAgYXV0byBlbmQgPSBzdGQ6
Omxvd2VyX2JvdW5kKG1faW5zZXJ0aW9ucy5iZWdpbigpLCBtX2luc2VydGlvbnMuZW5kKCksIGp1
bXBUYXJnZXRQb2ludCwgWyZdIChjb25zdCBJbnNlcnRpb24mIGluc2VydGlvbiwgSW5zZXJ0aW9u
UG9pbnQganVtcFRhcmdldFBvaW50KSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGluc2VydGlv
bi5pbmRleCA8IGp1bXBUYXJnZXRQb2ludDsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAg
anVtcFRhcmdldCArPSBjYWxjdWxhdGVEaWZmZXJlbmNlKHN0YXJ0LCBlbmQpOworICAgICAgICB9
CisgICAgICAgIHJldHVybiBqdW1wVGFyZ2V0IC0gc3RhcnRQb2ludC5ieXRlY29kZU9mZnNldDsK
KyAgICB9CisKKyAgICBpZiAoc3RhcnRQb2ludCA9PSBqdW1wVGFyZ2V0UG9pbnQpCisgICAgICAg
IHJldHVybiAwOworCisgICAgcmV0dXJuIC1hZGp1c3RKdW1wVGFyZ2V0KGp1bXBUYXJnZXRQb2lu
dCwgc3RhcnRQb2ludCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlUmV3cml0ZXIuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVJld3JpdGVyLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDM1
ZjkwMGE3ZTJmYTAwOWZkMjMxM2VhZWY4YjBjZDFmNjU4NWFjMQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVJld3JpdGVyLmgKQEAgLTAs
MCArMSwyMzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgWXVzdWtlIFN1enVraSA8dXRh
dGFuZS50ZWFAZ21haWwuY29tPgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJC
eXRlY29kZUdyYXBoLmgiCisjaW5jbHVkZSAiQnl0ZWNvZGVzLmgiCisjaW5jbHVkZSAiT3Bjb2Rl
LmgiCisjaW5jbHVkZSAiVW5saW5rZWRDb2RlQmxvY2suaCIKKyNpbmNsdWRlIDx3dGYvSW5zZXJ0
aW9uLmg+CisKK25hbWVzcGFjZSBKU0MgeworCisvLyBCeXRlY29kZVJld3JpdGVyIG9mZmVycyB0
aGUgYWJpbGl0eSB0byBpbnNlcnQgYW5kIHJlbW92ZSB0aGUgYnl0ZWNvZGVzIGluY2x1ZGluZyBq
dW1wIG9wZXJhdGlvbnMuCisvLworLy8gV2UgdXNlIHRoZSBvcmlnaW5hbCBieXRlY29kZSBvZmZz
ZXRzIGFzIGxhYmVscy4gV2hlbiB5b3UgZW1pdCBzb21lIGp1bXBzLCB5b3UgY2FuIHNwZWNpZnkg
dGhlIGp1bXAgdGFyZ2V0IGJ5CisvLyB1c2luZyB0aGUgb3JpZ2luYWwgYnl0ZWNvZGUgb2Zmc2V0
cy4gVGhlc2UgYnl0ZWNvZGUgb2Zmc2V0cyBhcmUgbGF0ZXIgY29udmVydGVkIGFwcHJvcHJpYXRl
IHZhbHVlcyBieSB0aGUKKy8vIHJld3JpdGVyLiBBbmQgd2UgYWxzbyB1c2UgdGhlIGxhYmVscyB0
byByZXByZXNlbnRzIHRoZSBwb3NpdGlvbiB0aGUgbmV3IGJ5dGVjb2RlcyBpbnNlcnRlZC4KKy8v
CisvLyAgICAgICAgICAgICAgICAgICAgICB8ICBbYnl0ZWNvZGVdICB8ICBbYnl0ZWNvZGVdICB8
CisvLyAgIG9mZnNldHMgICAgICAgICAgICBBICAgICAgICAgICAgICBCICAgICAgICAgICAgICBD
CisvLworLy8gV2UgY2FuIHVzZSB0aGUgYWJvdmUgIkEiLCAiQiIsIGFuZCAiQyIgb2Zmc2V0cyBh
cyBsYWJlbHMuIEFuZCB0aGUgcmV3cml0ZXIgaGFzIHRoZSBhYmlsaXR5IHRvIGluc2VydCBieXRl
Y29kZSBmcmFnbWVudHMKKy8vIGJlZm9yZSBhbmQgYWZ0ZXIgdGhlIGxhYmVsLiBGb3IgZXhhbXBs
ZSwgaWYgeW91IGluc2VydCB0aGUgZnJhZ21lbnQgYWZ0ZXIgIkIiLCB0aGUgbGF5b3V0IGJlY29t
ZXMgbGlrZSB0aGlzLgorLy8KKy8vICAgICAgICAgICAgICAgICAgICAgIHwgIFtieXRlY29kZV0g
IHwgIFtmcmFnbWVudF0gIFtieXRlY29kZV0gIHwKKy8vICAgb2Zmc2V0cyAgICAgICAgICAgIEEg
ICAgICAgICAgICAgIEIgICAgICAgICAgICAgICAgICAgICAgICAgIEMKKy8vCisvLyAgQW5kIGV2
ZW4gaWYgeW91IHJlbW92ZSBzb21lIG9yaWdpbmFsIGJ5dGVjb2RlcywgdGhlIG9mZnNldCByZW1h
aW5zIGFzIGxhYmVscy4gRm9yIGV4YW1wbGUsIHdoZW4geW91IHJlbW92ZSB0aGUgQSdzIGJ5dGVj
b2RlLAorLy8gIHRoZSBsYXlvdXQgYmVjb21lcyBsaWtlIHRoaXMuCisvLworLy8gICAgICAgICAg
ICAgICAgICAgICAgfCAgICAgICAgICAgICAgfCAgW2J5dGVjb2RlXSAgfAorLy8gICBvZmZzZXRz
ICAgICAgICAgICAgQSAgICAgICAgICAgICAgQiAgICAgICAgICAgICAgQworLy8KKy8vICBBbmQg
c3RpbGwgeW91IGNhbiBpbnNlcnQgZnJhZ21lbnRzIGJlZm9yZSBhbmQgYWZ0ZXIgIkEiLgorLy8K
Ky8vICAgICAgICAgICAgICAgICAgICAgIHwgIFtmcmFnbWVudF0gIHwgIFtieXRlY29kZV0gIHwK
Ky8vICAgb2Zmc2V0cyAgICAgICAgICAgIEEgICAgICAgICAgICAgIEIgICAgICAgICAgICAgIEMK
Ky8vCisvLyAgIFdlIGNhbiBpbnNlcnQgYnl0ZWNvZGUgZnJhZ21lbnRzICJCZWZvcmUiIGFuZCAi
QWZ0ZXIiIHRoZSBsYWJlbHMuIFRoaXMgaW5zZXJ0ZWQgcG9zaXRpb24sIGVpdGhlciAiQmVmb3Jl
IiBhbmQgIkFmdGVyIiwKKy8vICAgaGFzIGVmZmVjdCB3aGVuIHRoZSBsYWJlbCBpcyBpbnZvbHZl
ZCB3aXRoIGp1bXBzLiBGb3IgZXhhbXBsZSwgd2hlbiB5b3UgaGF2ZSBqdW1wIHRvIHRoZSBwb3Np
dGlvbiAiQiIsCisvLworLy8gICAgICAgICAgICAgICAgICAgICAgfCAgW2J5dGVjb2RlXSAgfCAg
W2J5dGVjb2RlXSAgfAorLy8gICBvZmZzZXRzICAgICAgICAgICAgQSAgICAgICAgICAgICAgQiAg
ICAgICAgICAgICAgQworLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgor
Ly8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganVtcCB0byBoZXJlLgorLy8K
Ky8vICBhbmQgeW91IGluc2VydCB0aGUgYnl0ZWNvZGUgYmVmb3JlL2FmdGVyICJCIiwKKy8vCisv
LyAgICAgICAgICAgICAgICAgICAgICB8ICBbYnl0ZWNvZGVdIFtiZWZvcmVdICB8ICBbYWZ0ZXJd
IFtieXRlY29kZV0gIHwKKy8vICAgb2Zmc2V0cyAgICAgICAgICAgIEEgICAgICAgICAgICAgICAg
ICAgICAgIEIgICAgICAgICAgICAgIEMKKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIF4KKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGp1bXAgdG8gaGVyZS4KKy8vCisvLyAgYXMgeW91IGNhbiBzZWUsIHRoZSBleGVj
dXRpb24ganVtcGluZyBpbnRvICJCIiBkb2VzIG5vdCBleGVjdXRlIFtiZWZvcmVdIGNvZGUuCitj
bGFzcyBCeXRlY29kZVJld3JpdGVyIHsKK1dURl9NQUtFX05PTkNPUFlBQkxFKEJ5dGVjb2RlUmV3
cml0ZXIpOworcHVibGljOgorICAgIGVudW0gY2xhc3MgUG9zaXRpb24gOiBpbnQ4X3QgeworICAg
ICAgICBFbnRyeVBvaW50ID0gLTIsCisgICAgICAgIEJlZm9yZSA9IC0xLAorICAgICAgICBMYWJl
bFBvaW50ID0gMCwKKyAgICAgICAgQWZ0ZXIgPSAxLAorICAgICAgICBPcmlnaW5hbEJ5dGVjb2Rl
UG9pbnQgPSAyLAorICAgIH07CisKKyAgICBlbnVtIGNsYXNzIEluY2x1ZGVCcmFuY2ggOiB1aW50
OF90IHsKKyAgICAgICAgTm8gPSAwLAorICAgICAgICBZZXMgPSAxLAorICAgIH07CisKKyAgICBz
dHJ1Y3QgSW5zZXJ0aW9uUG9pbnQgeworICAgICAgICBpbnQgYnl0ZWNvZGVPZmZzZXQ7CisgICAg
ICAgIFBvc2l0aW9uIHBvc2l0aW9uOworCisgICAgICAgIEluc2VydGlvblBvaW50KGludCBvZmZz
ZXQsIFBvc2l0aW9uIHBvcykKKyAgICAgICAgICAgIDogYnl0ZWNvZGVPZmZzZXQob2Zmc2V0KQor
ICAgICAgICAgICAgLCBwb3NpdGlvbihwb3MpCisgICAgICAgIHsKKyAgICAgICAgfQorCisgICAg
ICAgIGJvb2wgb3BlcmF0b3I8KGNvbnN0IEluc2VydGlvblBvaW50JiBvdGhlcikgY29uc3QKKyAg
ICAgICAgeworICAgICAgICAgICAgaWYgKGJ5dGVjb2RlT2Zmc2V0ID09IG90aGVyLmJ5dGVjb2Rl
T2Zmc2V0KQorICAgICAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbiA8IG90aGVyLnBvc2l0aW9u
OworICAgICAgICAgICAgcmV0dXJuIGJ5dGVjb2RlT2Zmc2V0IDwgb3RoZXIuYnl0ZWNvZGVPZmZz
ZXQ7CisgICAgICAgIH0KKworICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgSW5zZXJ0aW9u
UG9pbnQmIG90aGVyKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gYnl0ZWNv
ZGVPZmZzZXQgPT0gb3RoZXIuYnl0ZWNvZGVPZmZzZXQgJiYgcG9zaXRpb24gPT0gb3RoZXIucG9z
aXRpb247CisgICAgICAgIH0KKyAgICB9OworCitwcml2YXRlOgorICAgIHN0cnVjdCBJbnNlcnRp
b24geworICAgICAgICBlbnVtIGNsYXNzIFR5cGUgOiB1aW50OF90IHsgSW5zZXJ0ID0gMCwgUmVt
b3ZlID0gMSwgfTsKKworICAgICAgICBzaXplX3QgbGVuZ3RoKCkgY29uc3QKKyAgICAgICAgewor
ICAgICAgICAgICAgaWYgKHR5cGUgPT0gVHlwZTo6UmVtb3ZlKQorICAgICAgICAgICAgICAgIHJl
dHVybiByZW1vdmVMZW5ndGg7CisgICAgICAgICAgICByZXR1cm4gaW5zdHJ1Y3Rpb25zLnNpemUo
KTsKKyAgICAgICAgfQorCisgICAgICAgIEluc2VydGlvblBvaW50IGluZGV4OworICAgICAgICBU
eXBlIHR5cGU7CisgICAgICAgIEluY2x1ZGVCcmFuY2ggaW5jbHVkZUJyYW5jaDsKKyAgICAgICAg
c2l6ZV90IHJlbW92ZUxlbmd0aDsKKyAgICAgICAgVmVjdG9yPFVubGlua2VkSW5zdHJ1Y3Rpb24+
IGluc3RydWN0aW9uczsKKyAgICB9OworCitwdWJsaWM6CisgICAgY2xhc3MgRnJhZ21lbnQgewor
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEZyYWdtZW50KTsKKyAgICBwdWJsaWM6CisgICAgICAg
IEZyYWdtZW50KFZlY3RvcjxVbmxpbmtlZEluc3RydWN0aW9uPiYgZnJhZ21lbnQsIEluY2x1ZGVC
cmFuY2gmIGluY2x1ZGVCcmFuY2gpCisgICAgICAgICAgICA6IG1fZnJhZ21lbnQoZnJhZ21lbnQp
CisgICAgICAgICAgICAsIG1faW5jbHVkZUJyYW5jaChpbmNsdWRlQnJhbmNoKQorICAgICAgICB7
CisgICAgICAgIH0KKworICAgICAgICB0ZW1wbGF0ZTxjbGFzcy4uLiBBcmdzPgorICAgICAgICB2
b2lkIGFwcGVuZEluc3RydWN0aW9uKE9wY29kZUlEIG9wY29kZUlELCBBcmdzLi4uIGFyZ3MpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGlmIChpc0JyYW5jaChvcGNvZGVJRCkpCisgICAgICAgICAg
ICAgICAgbV9pbmNsdWRlQnJhbmNoID0gSW5jbHVkZUJyYW5jaDo6WWVzOworCisgICAgICAgICAg
ICBVbmxpbmtlZEluc3RydWN0aW9uIGluc3RydWN0aW9uc1tzaXplb2YuLi4oYXJncykgKyAxXSA9
IHsKKyAgICAgICAgICAgICAgICBVbmxpbmtlZEluc3RydWN0aW9uKG9wY29kZUlEKSwKKyAgICAg
ICAgICAgICAgICBVbmxpbmtlZEluc3RydWN0aW9uKGFyZ3MpLi4uCisgICAgICAgICAgICB9Owor
ICAgICAgICAgICAgbV9mcmFnbWVudC5hcHBlbmQoaW5zdHJ1Y3Rpb25zLCBzaXplb2YuLi4oYXJn
cykgKyAxKTsKKyAgICAgICAgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgVmVjdG9yPFVubGlu
a2VkSW5zdHJ1Y3Rpb24+JiBtX2ZyYWdtZW50OworICAgICAgICBJbmNsdWRlQnJhbmNoJiBtX2lu
Y2x1ZGVCcmFuY2g7CisgICAgfTsKKworICAgIEJ5dGVjb2RlUmV3cml0ZXIoQnl0ZWNvZGVHcmFw
aDxVbmxpbmtlZENvZGVCbG9jaz4mIGdyYXBoKQorICAgICAgICA6IG1fZ3JhcGgoZ3JhcGgpCisg
ICAgeworICAgIH0KKworICAgIHRlbXBsYXRlPGNsYXNzIEZ1bmN0aW9uPgorICAgIHZvaWQgaW5z
ZXJ0RnJhZ21lbnRCZWZvcmUodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIEZ1bmN0aW9uIGZ1bmN0
aW9uKQorICAgIHsKKyAgICAgICAgSW5jbHVkZUJyYW5jaCBpbmNsdWRlQnJhbmNoID0gSW5jbHVk
ZUJyYW5jaDo6Tm87CisgICAgICAgIFZlY3RvcjxVbmxpbmtlZEluc3RydWN0aW9uPiBpbnN0cnVj
dGlvbnM7CisgICAgICAgIEZyYWdtZW50IGZyYWdtZW50KGluc3RydWN0aW9ucywgaW5jbHVkZUJy
YW5jaCk7CisgICAgICAgIGZ1bmN0aW9uKGZyYWdtZW50KTsKKyAgICAgICAgaW5zZXJ0SW1wbChJ
bnNlcnRpb25Qb2ludChieXRlY29kZU9mZnNldCwgUG9zaXRpb246OkJlZm9yZSksIGluY2x1ZGVC
cmFuY2gsIFdURk1vdmUoaW5zdHJ1Y3Rpb25zKSk7CisgICAgfQorCisgICAgdGVtcGxhdGU8Y2xh
c3MgRnVuY3Rpb24+CisgICAgdm9pZCBpbnNlcnRGcmFnbWVudEFmdGVyKHVuc2lnbmVkIGJ5dGVj
b2RlT2Zmc2V0LCBGdW5jdGlvbiBmdW5jdGlvbikKKyAgICB7CisgICAgICAgIEluY2x1ZGVCcmFu
Y2ggaW5jbHVkZUJyYW5jaCA9IEluY2x1ZGVCcmFuY2g6Ok5vOworICAgICAgICBWZWN0b3I8VW5s
aW5rZWRJbnN0cnVjdGlvbj4gaW5zdHJ1Y3Rpb25zOworICAgICAgICBGcmFnbWVudCBmcmFnbWVu
dChpbnN0cnVjdGlvbnMsIGluY2x1ZGVCcmFuY2gpOworICAgICAgICBmdW5jdGlvbihmcmFnbWVu
dCk7CisgICAgICAgIGluc2VydEltcGwoSW5zZXJ0aW9uUG9pbnQoYnl0ZWNvZGVPZmZzZXQsIFBv
c2l0aW9uOjpBZnRlciksIGluY2x1ZGVCcmFuY2gsIFdURk1vdmUoaW5zdHJ1Y3Rpb25zKSk7Cisg
ICAgfQorCisgICAgdm9pZCByZW1vdmVCeXRlY29kZSh1bnNpZ25lZCBieXRlY29kZU9mZnNldCkK
KyAgICB7CisgICAgICAgIG1faW5zZXJ0aW9ucy5hcHBlbmQoSW5zZXJ0aW9uIHsgSW5zZXJ0aW9u
UG9pbnQoYnl0ZWNvZGVPZmZzZXQsIFBvc2l0aW9uOjpPcmlnaW5hbEJ5dGVjb2RlUG9pbnQpLCBJ
bnNlcnRpb246OlR5cGU6OlJlbW92ZSwgSW5jbHVkZUJyYW5jaDo6Tm8sIG9wY29kZUxlbmd0aCht
X2dyYXBoLmluc3RydWN0aW9ucygpW2J5dGVjb2RlT2Zmc2V0XS51Lm9wY29kZSksIHsgfSB9KTsK
KyAgICB9CisKKyAgICB2b2lkIGV4ZWN1dGUoKTsKKworICAgIEJ5dGVjb2RlR3JhcGg8VW5saW5r
ZWRDb2RlQmxvY2s+JiBncmFwaCgpIHsgcmV0dXJuIG1fZ3JhcGg7IH0KKworICAgIGludCBhZGp1
c3RBYnNvbHV0ZU9mZnNldChpbnQgYWJzb2x1dGVPZmZzZXQpCisgICAgeworICAgICAgICByZXR1
cm4gYWRqdXN0SnVtcFRhcmdldChJbnNlcnRpb25Qb2ludCgwLCBQb3NpdGlvbjo6RW50cnlQb2lu
dCksIEluc2VydGlvblBvaW50KGFic29sdXRlT2Zmc2V0LCBQb3NpdGlvbjo6TGFiZWxQb2ludCkp
OworICAgIH0KKworICAgIGludCBhZGp1c3RKdW1wVGFyZ2V0KGludCBvcmlnaW5hbEJ5dGVjb2Rl
T2Zmc2V0LCBpbnQgb3JpZ2luYWxKdW1wVGFyZ2V0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFk
anVzdEp1bXBUYXJnZXQoSW5zZXJ0aW9uUG9pbnQob3JpZ2luYWxCeXRlY29kZU9mZnNldCwgUG9z
aXRpb246OkxhYmVsUG9pbnQpLCBJbnNlcnRpb25Qb2ludChvcmlnaW5hbEp1bXBUYXJnZXQsIFBv
c2l0aW9uOjpMYWJlbFBvaW50KSk7CisgICAgfQorCitwcml2YXRlOgorICAgIHZvaWQgaW5zZXJ0
SW1wbChJbnNlcnRpb25Qb2ludCwgSW5jbHVkZUJyYW5jaCwgVmVjdG9yPFVubGlua2VkSW5zdHJ1
Y3Rpb24+JiYgZnJhZ21lbnQpOworCisgICAgZnJpZW5kIGNsYXNzIFVubGlua2VkQ29kZUJsb2Nr
OworICAgIHZvaWQgYXBwbHlNb2RpZmljYXRpb24oKTsKKyAgICB2b2lkIGFkanVzdEp1bXBUYXJn
ZXRzSW5GcmFnbWVudCh1bnNpZ25lZCBmaW5hbE9mZnNldCwgSW5zZXJ0aW9uJik7CisKKyAgICBp
bnQgYWRqdXN0SnVtcFRhcmdldChJbnNlcnRpb25Qb2ludCBzdGFydFBvaW50LCBJbnNlcnRpb25Q
b2ludCBqdW1wVGFyZ2V0UG9pbnQpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEl0ZXJhdG9yPiBp
bnQgY2FsY3VsYXRlRGlmZmVyZW5jZShJdGVyYXRvciBiZWdpbiwgSXRlcmF0b3IgZW5kKTsKKwor
ICAgIEJ5dGVjb2RlR3JhcGg8VW5saW5rZWRDb2RlQmxvY2s+JiBtX2dyYXBoOworICAgIFZlY3Rv
cjxJbnNlcnRpb24sIDg+IG1faW5zZXJ0aW9uczsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIEl0
ZXJhdG9yPgoraW5saW5lIGludCBCeXRlY29kZVJld3JpdGVyOjpjYWxjdWxhdGVEaWZmZXJlbmNl
KEl0ZXJhdG9yIGJlZ2luLCBJdGVyYXRvciBlbmQpCit7CisgICAgaW50IHJlc3VsdCA9IDA7Cisg
ICAgZm9yICg7IGJlZ2luICE9IGVuZDsgKytiZWdpbikgeworICAgICAgICBpZiAoYmVnaW4tPnR5
cGUgPT0gSW5zZXJ0aW9uOjpUeXBlOjpSZW1vdmUpCisgICAgICAgICAgICByZXN1bHQgLT0gYmVn
aW4tPmxlbmd0aCgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXN1bHQgKz0gYmVnaW4t
Pmxlbmd0aCgpOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCit9IC8vIG5hbWVzcGFj
ZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZVVzZURlZi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVm
LmgKaW5kZXggNjA1N2VmNjA5ZWVkMWVlMmE5OWIwNzYyOGI5MWM5NzU1MzNmZTRiYi4uNGYxNGIy
MzA5MDRjMWQ2ZjZkNzNiZjY4MGRjMDMyNGFlZmM2ZjZiNiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmgKQEAgLTMwLDE1ICszMCw5IEBACiAK
IG5hbWVzcGFjZSBKU0MgewogCi10ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgotdm9pZCBjb21w
dXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAotICAgIENvZGVCbG9jayogY29kZUJsb2NrLCBCeXRl
Y29kZUJhc2ljQmxvY2sqIGJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgY29uc3QgRnVu
Y3RvciYgZnVuY3RvcikKK3RlbXBsYXRlPHR5cGVuYW1lIEJsb2NrLCB0eXBlbmFtZSBGdW5jdG9y
LCB0eXBlbmFtZSBJbnN0cnVjdGlvbj4KK3ZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9mZnNl
dChCbG9jayogY29kZUJsb2NrLCBPcGNvZGVJRCBvcGNvZGVJRCwgSW5zdHJ1Y3Rpb24qIGluc3Ry
dWN0aW9uLCBjb25zdCBGdW5jdG9yJiBmdW5jdG9yKQogewotICAgIEludGVycHJldGVyKiBpbnRl
cnByZXRlciA9IGNvZGVCbG9jay0+dm0oKS0+aW50ZXJwcmV0ZXI7Ci0gICAgSW5zdHJ1Y3Rpb24q
IGluc3RydWN0aW9uc0JlZ2luID0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpOwot
ICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9ICZpbnN0cnVjdGlvbnNCZWdpbltieXRlY29k
ZU9mZnNldF07Ci0gICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnRlcnByZXRlci0+Z2V0T3Bjb2Rl
SUQoaW5zdHJ1Y3Rpb24tPnUub3Bjb2RlKTsKLQogICAgIGlmIChvcGNvZGVJRCAhPSBvcF9lbnRl
ciAmJiBjb2RlQmxvY2stPndhc0NvbXBpbGVkV2l0aERlYnVnZ2luZ09wY29kZXMoKSAmJiBjb2Rl
QmxvY2stPnNjb3BlUmVnaXN0ZXIoKS5pc1ZhbGlkKCkpCiAgICAgICAgIGZ1bmN0b3IoY29kZUJs
b2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGNvZGVCbG9jay0+c2NvcGVSZWdpc3RlcigpLm9m
ZnNldCgpKTsKIApAQCAtNzUsOCArNjksNyBAQCB2b2lkIGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVP
ZmZzZXQoCiAgICAgY2FzZSBvcF9qbmVxX251bGw6CiAgICAgY2FzZSBvcF9kZWM6CiAgICAgY2Fz
ZSBvcF9pbmM6Ci0gICAgY2FzZSBvcF9sb2dfc2hhZG93X2NoaWNrZW5fcHJvbG9ndWU6Ci0gICAg
Y2FzZSBvcF9yZXN1bWU6IHsKKyAgICBjYXNlIG9wX2xvZ19zaGFkb3dfY2hpY2tlbl9wcm9sb2d1
ZTogewogICAgICAgICBBU1NFUlQob3Bjb2RlTGVuZ3Roc1tvcGNvZGVJRF0gPiAxKTsKICAgICAg
ICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb25b
MV0udS5vcGVyYW5kKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjg3LDIwICsyODAsOSBAQCB2b2lk
IGNvbXB1dGVVc2VzRm9yQnl0ZWNvZGVPZmZzZXQoCiAgICAgICAgICAgICBmdW5jdG9yKGNvZGVC
bG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBjb2RlQmxvY2stPnNjb3BlUmVnaXN0ZXIoKS5v
ZmZzZXQoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgY2FzZSBvcF9zYXZlOiB7Cisg
ICAgY2FzZSBvcF95aWVsZDogewogICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rp
b24sIG9wY29kZUlELCBpbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOwotICAgICAgICB1bnNpZ25l
ZCBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXQgPSBieXRlY29kZU9mZnNldCArIGluc3RydWN0aW9u
WzNdLnUub3BlcmFuZDsKLSAgICAgICAgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBtZXJnZVBvaW50Qmxv
Y2sgPSBudWxscHRyOwotICAgICAgICBmb3IgKEJ5dGVjb2RlQmFzaWNCbG9jayogc3VjY2Vzc29y
IDogYmxvY2stPnN1Y2Nlc3NvcnMoKSkgewotICAgICAgICAgICAgaWYgKHN1Y2Nlc3Nvci0+bGVh
ZGVyQnl0ZWNvZGVPZmZzZXQoKSA9PSBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXQpIHsKLSAgICAg
ICAgICAgICAgICBtZXJnZVBvaW50QmxvY2sgPSBzdWNjZXNzb3I7Ci0gICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgQVNTRVJUKG1lcmdlUG9p
bnRCbG9jayk7Ci0gICAgICAgIG1lcmdlUG9pbnRCbG9jay0+aW4oKS5mb3JFYWNoU2V0Qml0KFsm
XSh1bnNpZ25lZCBsb2NhbCkgewotICAgICAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3Ry
dWN0aW9uLCBvcGNvZGVJRCwgdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwobG9jYWwpLm9mZnNldCgp
KTsKLSAgICAgICAgfSk7CisgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwg
b3Bjb2RlSUQsIGluc3RydWN0aW9uWzNdLnUub3BlcmFuZCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAgICAgZGVmYXVsdDoKQEAgLTMwOSwyMCArMjkxLDE1IEBAIHZvaWQgY29tcHV0ZVVzZXNG
b3JCeXRlY29kZU9mZnNldCgKICAgICB9CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+
Ci12b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBjb25z
dCBGdW5jdG9yJiBmdW5jdG9yKQordGVtcGxhdGU8dHlwZW5hbWUgQmxvY2ssIHR5cGVuYW1lIElu
c3RydWN0aW9uLCB0eXBlbmFtZSBGdW5jdG9yPgordm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2Rl
T2Zmc2V0KEJsb2NrKiBjb2RlQmxvY2ssIE9wY29kZUlEIG9wY29kZUlELCBJbnN0cnVjdGlvbiog
aW5zdHJ1Y3Rpb24sIGNvbnN0IEZ1bmN0b3ImIGZ1bmN0b3IpCiB7Ci0gICAgSW50ZXJwcmV0ZXIq
IGludGVycHJldGVyID0gY29kZUJsb2NrLT52bSgpLT5pbnRlcnByZXRlcjsKLSAgICBJbnN0cnVj
dGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4gPSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2lu
KCk7Ci0gICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uID0gJmluc3RydWN0aW9uc0JlZ2luW2J5
dGVjb2RlT2Zmc2V0XTsKLSAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGludGVycHJldGVyLT5nZXRP
cGNvZGVJRChpbnN0cnVjdGlvbi0+dS5vcGNvZGUpOwogICAgIHN3aXRjaCAob3Bjb2RlSUQpIHsK
ICAgICAvLyBUaGVzZSBkb24ndCBkZWZpbmUgYW55dGhpbmcuCiAgICAgY2FzZSBvcF9wdXRfdG9f
c2NvcGU6CiAgICAgY2FzZSBvcF9lbmQ6CiAgICAgY2FzZSBvcF90aHJvdzoKICAgICBjYXNlIG9w
X3Rocm93X3N0YXRpY19lcnJvcjoKLSAgICBjYXNlIG9wX3NhdmU6CiAgICAgY2FzZSBvcF9hc3Nl
cnQ6CiAgICAgY2FzZSBvcF9kZWJ1ZzoKICAgICBjYXNlIG9wX3JldDoKQEAgLTM2Miw2ICszMzks
NyBAQCB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssIEJ5dGVjb2RlQmFzaWNCbG9jayogYmxvYwogICAgIGNhc2Ugb3Bfd2F0Y2hkb2c6CiAgICAg
Y2FzZSBvcF9sb2dfc2hhZG93X2NoaWNrZW5fcHJvbG9ndWU6CiAgICAgY2FzZSBvcF9sb2dfc2hh
ZG93X2NoaWNrZW5fdGFpbDoKKyAgICBjYXNlIG9wX3lpZWxkOgogI2RlZmluZSBMTElOVF9IRUxQ
RVJfT1BDT0RFUyhvcGNvZGUsIGxlbmd0aCkgY2FzZSBvcGNvZGU6CiAgICAgICAgIEZPUl9FQUNI
X0xMSU5UX09QQ09ERV9FWFRFTlNJT04oTExJTlRfSEVMUEVSX09QQ09ERVMpOwogI3VuZGVmIExM
SU5UX0hFTFBFUl9PUENPREVTCkBAIC00ODAsMTUgKzQ1OCw2IEBAIHZvaWQgY29tcHV0ZURlZnNG
b3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Jsb2Nr
KiBibG9jCiAgICAgICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29k
ZUlELCB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChpKS5vZmZzZXQoKSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9Ci0gICAgY2FzZSBvcF9yZXN1bWU6IHsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQo
YmxvY2stPnN1Y2Nlc3NvcnMoKS5zaXplKCkgPT0gMSk7Ci0gICAgICAgIC8vIEZJWE1FOiBUaGlz
IGlzIHJlYWxseSBkaXJ0eS4KLSAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE1OTI4MQotICAgICAgICBibG9jay0+c3VjY2Vzc29ycygpWzBdLT5pbigp
LmZvckVhY2hTZXRCaXQoWyZdKHVuc2lnbmVkIGxvY2FsKSB7Ci0gICAgICAgICAgICBmdW5jdG9y
KGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2Nh
bChsb2NhbCkub2Zmc2V0KCkpOwotICAgICAgICB9KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
ICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5j
cHAKaW5kZXggZDYxYjg4NThjYjMxNzg2YTljOGQ0MzkyNTJhMWI5NDZhMTdhZjRkNy4uNWMwN2Vm
YWYyOTc5ZmRjNzBkODdjMzY1NmFmMDQ4ODg0OTI0ZjQ1YyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRl
ICJBcml0aFByb2ZpbGUuaCIKICNpbmNsdWRlICJCYXNpY0Jsb2NrTG9jYXRpb24uaCIKICNpbmNs
dWRlICJCeXRlY29kZUdlbmVyYXRvci5oIgorI2luY2x1ZGUgIkJ5dGVjb2RlTGl2ZW5lc3NBbmFs
eXNpcy5oIgogI2luY2x1ZGUgIkJ5dGVjb2RlVXNlRGVmLmgiCiAjaW5jbHVkZSAiQ2FsbExpbmtT
dGF0dXMuaCIKICNpbmNsdWRlICJERkdDYXBhYmlsaXRpZXMuaCIKQEAgLTY5NiwxOCArNjk3LDYg
QEAgdm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZShQcmludFN0cmVhbSYgb3V0KQogICAgICAg
ICB9IHdoaWxlIChpIDwgbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzLnNpemUo
KSk7CiAgICAgfQogCi0gICAgaWYgKG1fcmFyZURhdGEgJiYgIW1fcmFyZURhdGEtPm1fbGl2ZUNh
bGxlZUxvY2Fsc0F0WWllbGQuaXNFbXB0eSgpKSB7Ci0gICAgICAgIG91dC5wcmludGYoIlxuTGl2
ZSBDYWxsZWUgTG9jYWxzOlxuIik7Ci0gICAgICAgIHVuc2lnbmVkIGkgPSAwOwotICAgICAgICBk
byB7Ci0gICAgICAgICAgICBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlbmVzcyA9IG1fcmFyZURh
dGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGRbaV07Ci0gICAgICAgICAgICBvdXQucHJpbnRm
KCIgIGxpdmUlMXUgPSAiLCBpKTsKLSAgICAgICAgICAgIGxpdmVuZXNzLmR1bXAob3V0KTsKLSAg
ICAgICAgICAgIG91dC5wcmludGYoIlxuIik7Ci0gICAgICAgICAgICArK2k7Ci0gICAgICAgIH0g
d2hpbGUgKGkgPCBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkLnNpemUoKSk7
Ci0gICAgfQotCiAgICAgb3V0LnByaW50ZigiXG4iKTsKIH0KIApAQCAtMTY3MiwzMSArMTY2MSw2
IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoCiAgICAgICAgICAgICBvdXQucHJpbnRm
KCIlcywgJWQiLCBkZWJ1Z0hvb2tOYW1lKGRlYnVnSG9va0lEKSwgaGFzQnJlYWtwb2ludEZsYWcp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgY2FzZSBvcF9zYXZlOiB7
Ci0gICAgICAgICAgICBpbnQgZ2VuZXJhdG9yID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAg
ICAgICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSAoKytpdCktPnUudW5zaWduZWRW
YWx1ZTsKLSAgICAgICAgICAgIGludCBvZmZzZXQgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAg
ICAgICAgIEZhc3RCaXRWZWN0b3IgbGl2ZW5lc3M7Ci0gICAgICAgICAgICBpZiAobGl2ZUNhbGxl
ZUxvY2Fsc0luZGV4IDwgbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZC5zaXpl
KCkpCi0gICAgICAgICAgICAgICAgbGl2ZW5lc3MgPSBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVM
b2NhbHNBdFlpZWxkW2xpdmVDYWxsZWVMb2NhbHNJbmRleF07Ci0gICAgICAgICAgICBwcmludExv
Y2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJzYXZlIik7Ci0gICAgICAgICAg
ICBvdXQucHJpbnRmKCIlcywgIiwgcmVnaXN0ZXJOYW1lKGdlbmVyYXRvcikuZGF0YSgpKTsKLSAg
ICAgICAgICAgIGxpdmVuZXNzLmR1bXAob3V0KTsKLSAgICAgICAgICAgIG91dC5wcmludGYoIihA
bGl2ZSUxdSksICVkKC0+JWQpIiwgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4LCBvZmZzZXQsIGxvY2F0
aW9uICsgb2Zmc2V0KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNh
c2Ugb3BfcmVzdW1lOiB7Ci0gICAgICAgICAgICBpbnQgZ2VuZXJhdG9yID0gKCsraXQpLT51Lm9w
ZXJhbmQ7Ci0gICAgICAgICAgICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSAoKytp
dCktPnUudW5zaWduZWRWYWx1ZTsKLSAgICAgICAgICAgIEZhc3RCaXRWZWN0b3IgbGl2ZW5lc3M7
Ci0gICAgICAgICAgICBpZiAobGl2ZUNhbGxlZUxvY2Fsc0luZGV4IDwgbV9yYXJlRGF0YS0+bV9s
aXZlQ2FsbGVlTG9jYWxzQXRZaWVsZC5zaXplKCkpCi0gICAgICAgICAgICAgICAgbGl2ZW5lc3Mg
PSBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkW2xpdmVDYWxsZWVMb2NhbHNJ
bmRleF07Ci0gICAgICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlv
biwgaXQsICJyZXN1bWUiKTsKLSAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAiLCByZWdpc3Rl
ck5hbWUoZ2VuZXJhdG9yKS5kYXRhKCkpOwotICAgICAgICAgICAgbGl2ZW5lc3MuZHVtcChvdXQp
OwotICAgICAgICAgICAgb3V0LnByaW50ZigiKEBsaXZlJTF1KSIsIGxpdmVDYWxsZWVMb2NhbHNJ
bmRleCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2Fz
c2VydDogewogICAgICAgICAgICAgaW50IGNvbmRpdGlvbiA9ICgrK2l0KS0+dS5vcGVyYW5kOwog
ICAgICAgICAgICAgaW50IGxpbmUgPSAoKytpdCktPnUub3BlcmFuZDsKQEAgLTE5MDgsNyArMTg3
Miw2IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIENvcHlQYXJzZWRC
bG9ja1RhZywgQ29kZUJsb2NrJiBvdGhlcikKICAgICAgICAgbV9yYXJlRGF0YS0+bV9jb25zdGFu
dEJ1ZmZlcnMgPSBvdGhlci5tX3JhcmVEYXRhLT5tX2NvbnN0YW50QnVmZmVyczsKICAgICAgICAg
bV9yYXJlRGF0YS0+bV9zd2l0Y2hKdW1wVGFibGVzID0gb3RoZXIubV9yYXJlRGF0YS0+bV9zd2l0
Y2hKdW1wVGFibGVzOwogICAgICAgICBtX3JhcmVEYXRhLT5tX3N0cmluZ1N3aXRjaEp1bXBUYWJs
ZXMgPSBvdGhlci5tX3JhcmVEYXRhLT5tX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXM7Ci0gICAgICAg
IG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQgPSBvdGhlci5tX3JhcmVEYXRh
LT5tX2xpdmVDYWxsZWVMb2NhbHNBdFlpZWxkOwogICAgIH0KICAgICAKICAgICBoZWFwKCktPm1f
Y29kZUJsb2Nrcy5hZGQodGhpcyk7CkBAIC0yMDMwLDcgKzE5OTMsNyBAQCB2b2lkIENvZGVCbG9j
azo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFi
bGUsIFVubGluawogICAgICAgICAgICAgICAgIFVubGlua2VkU3RyaW5nSnVtcFRhYmxlOjpTdHJp
bmdPZmZzZXRUYWJsZTo6aXRlcmF0b3IgZW5kID0gdW5saW5rZWRDb2RlQmxvY2stPnN0cmluZ1N3
aXRjaEp1bXBUYWJsZShpKS5vZmZzZXRUYWJsZS5lbmQoKTsKICAgICAgICAgICAgICAgICBmb3Ig
KDsgcHRyICE9IGVuZDsgKytwdHIpIHsKICAgICAgICAgICAgICAgICAgICAgT2Zmc2V0TG9jYXRp
b24gb2Zmc2V0OwotICAgICAgICAgICAgICAgICAgICBvZmZzZXQuYnJhbmNoT2Zmc2V0ID0gcHRy
LT52YWx1ZTsKKyAgICAgICAgICAgICAgICAgICAgb2Zmc2V0LmJyYW5jaE9mZnNldCA9IHB0ci0+
dmFsdWUuYnJhbmNoT2Zmc2V0OwogICAgICAgICAgICAgICAgICAgICBtX3JhcmVEYXRhLT5tX3N0
cmluZ1N3aXRjaEp1bXBUYWJsZXNbaV0ub2Zmc2V0VGFibGUuYWRkKHB0ci0+a2V5LCBvZmZzZXQp
OwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KQEAgLTIwNzAsMTEgKzIwMzMsMTcg
QEAgdm9pZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJs
ZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICAvLyBCb29ra2VlcCB0aGUgc3Ryb25nbHkg
cmVmZXJlbmNlZCBtb2R1bGUgZW52aXJvbm1lbnRzLgogICAgIEhhc2hTZXQ8SlNNb2R1bGVFbnZp
cm9ubWVudCo+IHN0cm9uZ2x5UmVmZXJlbmNlZE1vZHVsZUVudmlyb25tZW50czsKIAotICAgIC8v
IEJvb2trZWVwIHRoZSBtZXJnZSBwb2ludCBieXRlY29kZSBvZmZzZXRzLgotICAgIFZlY3Rvcjxz
aXplX3Q+IG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldHM7Ci0KICAgICBSZWZDb3VudGVkQXJyYXk8
SW5zdHJ1Y3Rpb24+IGluc3RydWN0aW9ucyhpbnN0cnVjdGlvbkNvdW50KTsKIAorICAgIHVuc2ln
bmVkIHZhbHVlUHJvZmlsZUNvdW50ID0gMDsKKyAgICBhdXRvIGxpbmtWYWx1ZVByb2ZpbGUgPSBb
Jl0odW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIHVuc2lnbmVkIG9wTGVuZ3RoKSB7CisgICAgICAg
IHVuc2lnbmVkIHZhbHVlUHJvZmlsZUluZGV4ID0gdmFsdWVQcm9maWxlQ291bnQrKzsKKyAgICAg
ICAgVmFsdWVQcm9maWxlKiBwcm9maWxlID0gJm1fdmFsdWVQcm9maWxlc1t2YWx1ZVByb2ZpbGVJ
bmRleF07CisgICAgICAgIEFTU0VSVChwcm9maWxlLT5tX2J5dGVjb2RlT2Zmc2V0ID09IC0xKTsK
KyAgICAgICAgcHJvZmlsZS0+bV9ieXRlY29kZU9mZnNldCA9IGJ5dGVjb2RlT2Zmc2V0OworICAg
ICAgICBpbnN0cnVjdGlvbnNbYnl0ZWNvZGVPZmZzZXQgKyBvcExlbmd0aCAtIDFdID0gcHJvZmls
ZTsKKyAgICB9OworCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgIWluc3RydWN0aW9uUmVhZGVy
LmF0RW5kKCk7ICkgewogICAgICAgICBjb25zdCBVbmxpbmtlZEluc3RydWN0aW9uKiBwYyA9IGlu
c3RydWN0aW9uUmVhZGVyLm5leHQoKTsKIApAQCAtMjExMCwxMCArMjA3OSw3IEBAIHZvaWQgQ29k
ZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhl
Y3V0YWJsZSwgVW5saW5rCiAgICAgICAgIGNhc2Ugb3BfdHJ5X2dldF9ieV9pZDoKICAgICAgICAg
Y2FzZSBvcF9nZXRfZnJvbV9hcmd1bWVudHM6CiAgICAgICAgIGNhc2Ugb3BfdG9fbnVtYmVyOiB7
Ci0gICAgICAgICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSAmbV92YWx1ZVByb2ZpbGVzW3Bj
W29wTGVuZ3RoIC0gMV0udS5vcGVyYW5kXTsKLSAgICAgICAgICAgIEFTU0VSVChwcm9maWxlLT5t
X2J5dGVjb2RlT2Zmc2V0ID09IC0xKTsKLSAgICAgICAgICAgIHByb2ZpbGUtPm1fYnl0ZWNvZGVP
ZmZzZXQgPSBpOwotICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zW2kgKyBvcExlbmd0aCAtIDFdID0g
cHJvZmlsZTsKKyAgICAgICAgICAgIGxpbmtWYWx1ZVByb2ZpbGUoaSwgb3BMZW5ndGgpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9wdXRfYnlfdmFsOiB7
CkBAIC0yMTUwLDEwICsyMTE2LDcgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZN
JiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICAgICAg
Y2FzZSBvcF9jYWxsOgogICAgICAgICBjYXNlIG9wX3RhaWxfY2FsbDoKICAgICAgICAgY2FzZSBv
cF9jYWxsX2V2YWw6IHsKLSAgICAgICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9ICZtX3Zh
bHVlUHJvZmlsZXNbcGNbb3BMZW5ndGggLSAxXS51Lm9wZXJhbmRdOwotICAgICAgICAgICAgQVNT
RVJUKHByb2ZpbGUtPm1fYnl0ZWNvZGVPZmZzZXQgPT0gLTEpOwotICAgICAgICAgICAgcHJvZmls
ZS0+bV9ieXRlY29kZU9mZnNldCA9IGk7Ci0gICAgICAgICAgICBpbnN0cnVjdGlvbnNbaSArIG9w
TGVuZ3RoIC0gMV0gPSBwcm9maWxlOworICAgICAgICAgICAgbGlua1ZhbHVlUHJvZmlsZShpLCBv
cExlbmd0aCk7CiAgICAgICAgICAgICBpbnQgYXJyYXlQcm9maWxlSW5kZXggPSBwY1tvcExlbmd0
aCAtIDJdLnUub3BlcmFuZDsKICAgICAgICAgICAgIG1fYXJyYXlQcm9maWxlc1thcnJheVByb2Zp
bGVJbmRleF0gPSBBcnJheVByb2ZpbGUoaSk7CiAgICAgICAgICAgICBpbnN0cnVjdGlvbnNbaSAr
IG9wTGVuZ3RoIC0gMl0gPSAmbV9hcnJheVByb2ZpbGVzW2FycmF5UHJvZmlsZUluZGV4XTsKQEAg
LTIxNjIsMTAgKzIxMjUsNyBAQCB2b2lkIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZt
LCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGluawogICAgICAgICB9CiAg
ICAgICAgIGNhc2Ugb3BfY29uc3RydWN0OiB7CiAgICAgICAgICAgICBpbnN0cnVjdGlvbnNbaSAr
IDVdID0gJm1fbGxpbnRDYWxsTGlua0luZm9zW3BjWzVdLnUub3BlcmFuZF07Ci0gICAgICAgICAg
ICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSAmbV92YWx1ZVByb2ZpbGVzW3BjW29wTGVuZ3RoIC0g
MV0udS5vcGVyYW5kXTsKLSAgICAgICAgICAgIEFTU0VSVChwcm9maWxlLT5tX2J5dGVjb2RlT2Zm
c2V0ID09IC0xKTsKLSAgICAgICAgICAgIHByb2ZpbGUtPm1fYnl0ZWNvZGVPZmZzZXQgPSBpOwot
ICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zW2kgKyBvcExlbmd0aCAtIDFdID0gcHJvZmlsZTsKKyAg
ICAgICAgICAgIGxpbmtWYWx1ZVByb2ZpbGUoaSwgb3BMZW5ndGgpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9nZXRfYXJyYXlfbGVuZ3RoOgpAQCAtMjE5
NiwxMCArMjE1Niw3IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNj
cmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAgICAgIH0KIAogICAg
ICAgICBjYXNlIG9wX2dldF9mcm9tX3Njb3BlOiB7Ci0gICAgICAgICAgICBWYWx1ZVByb2ZpbGUq
IHByb2ZpbGUgPSAmbV92YWx1ZVByb2ZpbGVzW3BjW29wTGVuZ3RoIC0gMV0udS5vcGVyYW5kXTsK
LSAgICAgICAgICAgIEFTU0VSVChwcm9maWxlLT5tX2J5dGVjb2RlT2Zmc2V0ID09IC0xKTsKLSAg
ICAgICAgICAgIHByb2ZpbGUtPm1fYnl0ZWNvZGVPZmZzZXQgPSBpOwotICAgICAgICAgICAgaW5z
dHJ1Y3Rpb25zW2kgKyBvcExlbmd0aCAtIDFdID0gcHJvZmlsZTsKKyAgICAgICAgICAgIGxpbmtW
YWx1ZVByb2ZpbGUoaSwgb3BMZW5ndGgpOwogCiAgICAgICAgICAgICAvLyBnZXRfZnJvbV9zY29w
ZSBkc3QsIHNjb3BlLCBpZCwgR2V0UHV0SW5mbywgU3RydWN0dXJlLCBPcGVyYW5kCiAKQEAgLTIz
NTYsMTUgKzIzMTMsNiBAQCB2b2lkIENvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBT
Y3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGluawogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KIAotICAgICAgICBjYXNlIG9wX3NhdmU6IHsKLSAgICAgICAgICAgIHVu
c2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9IHBjWzJdLnUuaW5kZXg7Ci0gICAgICAgICAg
ICBpbnQgb2Zmc2V0ID0gcGNbM10udS5vcGVyYW5kOwotICAgICAgICAgICAgaWYgKGxpdmVDYWxs
ZWVMb2NhbHNJbmRleCA+PSBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXRzLnNpemUoKSkKLSAgICAg
ICAgICAgICAgICBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXRzLnJlc2l6ZShsaXZlQ2FsbGVlTG9j
YWxzSW5kZXggKyAxKTsKLSAgICAgICAgICAgIG1lcmdlUG9pbnRCeXRlY29kZU9mZnNldHNbbGl2
ZUNhbGxlZUxvY2Fsc0luZGV4XSA9IGkgKyBvZmZzZXQ7Ci0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgfQotCiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQpAQCAtMjM3NiwyMCArMjMyNCw2IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihW
TSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAKICAgICBt
X2luc3RydWN0aW9ucyA9IFdURk1vdmUoaW5zdHJ1Y3Rpb25zKTsKIAotICAgIC8vIFBlcmZvcm0g
Ynl0ZWNvZGUgbGl2ZW5lc3MgYW5hbHlzaXMgdG8gZGV0ZXJtaW5lIHdoaWNoIGxvY2FscyBhcmUg
bGl2ZSBhbmQgc2hvdWxkIGJlIHJlc3VtZWQgd2hlbiBleGVjdXRpbmcgb3BfcmVzdW1lLgotICAg
IGlmICh1bmxpbmtlZENvZGVCbG9jay0+cGFyc2VNb2RlKCkgPT0gU291cmNlUGFyc2VNb2RlOjpH
ZW5lcmF0b3JCb2R5TW9kZSkgewotICAgICAgICBpZiAoc2l6ZV90IGNvdW50ID0gbWVyZ2VQb2lu
dEJ5dGVjb2RlT2Zmc2V0cy5zaXplKCkpIHsKLSAgICAgICAgICAgIGNyZWF0ZVJhcmVEYXRhSWZO
ZWNlc3NhcnkoKTsKLSAgICAgICAgICAgIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcyBsaXZlbmVz
cyh0aGlzKTsKLSAgICAgICAgICAgIG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fsc0F0WWll
bGQuZ3Jvdyhjb3VudCk7Ci0gICAgICAgICAgICBzaXplX3QgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4
ID0gMDsKLSAgICAgICAgICAgIGZvciAoc2l6ZV90IGJ5dGVjb2RlT2Zmc2V0IDogbWVyZ2VQb2lu
dEJ5dGVjb2RlT2Zmc2V0cykgewotICAgICAgICAgICAgICAgIG1fcmFyZURhdGEtPm1fbGl2ZUNh
bGxlZUxvY2Fsc0F0WWllbGRbbGl2ZUNhbGxlZUxvY2Fsc0luZGV4XSA9IGxpdmVuZXNzLmdldExp
dmVuZXNzSW5mb0F0Qnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpOwotICAgICAgICAgICAg
ICAgICsrbGl2ZUNhbGxlZUxvY2Fsc0luZGV4OwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0g
ICAgfQotCiAgICAgLy8gU2V0IG9wdGltaXphdGlvbiB0aHJlc2hvbGRzIG9ubHkgYWZ0ZXIgbV9p
bnN0cnVjdGlvbnMgaXMgaW5pdGlhbGl6ZWQsIHNpbmNlIHRoZXNlCiAgICAgLy8gcmVseSBvbiB0
aGUgaW5zdHJ1Y3Rpb24gY291bnQgKGFuZCBhcmUgaW4gdGhlb3J5IHBlcm1pdHRlZCB0byBhbHNv
IGluc3BlY3QgdGhlCiAgICAgLy8gaW5zdHJ1Y3Rpb24gc3RyZWFtIHRvIG1vcmUgYWNjdXJhdGUg
YXNzZXNzIHRoZSBjb3N0IG9mIHRpZXItdXApLgpAQCAtMzI0NiwyMSArMzE4MCw3IEBAIEhhbmRs
ZXJJbmZvKiBDb2RlQmxvY2s6OmhhbmRsZXJGb3JJbmRleCh1bnNpZ25lZCBpbmRleCwgUmVxdWly
ZWRIYW5kbGVyIHJlcXVpcmVkCiB7CiAgICAgaWYgKCFtX3JhcmVEYXRhKQogICAgICAgICByZXR1
cm4gMDsKLSAgICAKLSAgICBWZWN0b3I8SGFuZGxlckluZm8+JiBleGNlcHRpb25IYW5kbGVycyA9
IG1fcmFyZURhdGEtPm1fZXhjZXB0aW9uSGFuZGxlcnM7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBleGNlcHRpb25IYW5kbGVycy5zaXplKCk7ICsraSkgewotICAgICAgICBIYW5kbGVySW5m
byYgaGFuZGxlciA9IGV4Y2VwdGlvbkhhbmRsZXJzW2ldOwotICAgICAgICBpZiAoKHJlcXVpcmVk
SGFuZGxlciA9PSBSZXF1aXJlZEhhbmRsZXI6OkNhdGNoSGFuZGxlcikgJiYgIWhhbmRsZXIuaXND
YXRjaEhhbmRsZXIoKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIC8vIEhhbmRs
ZXJzIGFyZSBvcmRlcmVkIGlubmVybW9zdCBmaXJzdCwgc28gdGhlIGZpcnN0IGhhbmRsZXIgd2Ug
ZW5jb3VudGVyCi0gICAgICAgIC8vIHRoYXQgY29udGFpbnMgdGhlIHNvdXJjZSBhZGRyZXNzIGlz
IHRoZSBjb3JyZWN0IGhhbmRsZXIgdG8gdXNlLgotICAgICAgICAvLyBUaGlzIGluZGV4IHVzZWQg
aXMgZWl0aGVyIHRoZSBCeXRlY29kZU9mZnNldCBvciBhIENhbGxTaXRlSW5kZXguCi0gICAgICAg
IGlmIChoYW5kbGVyLnN0YXJ0IDw9IGluZGV4ICYmIGhhbmRsZXIuZW5kID4gaW5kZXgpCi0gICAg
ICAgICAgICByZXR1cm4gJmhhbmRsZXI7Ci0gICAgfQotCi0gICAgcmV0dXJuIDA7CisgICAgcmV0
dXJuIEhhbmRsZXJJbmZvOjpoYW5kbGVyRm9ySW5kZXgobV9yYXJlRGF0YS0+bV9leGNlcHRpb25I
YW5kbGVycywgaW5kZXgsIHJlcXVpcmVkSGFuZGxlcik7CiB9CiAKIENhbGxTaXRlSW5kZXggQ29k
ZUJsb2NrOjpuZXdFeGNlcHRpb25IYW5kbGluZ0NhbGxTaXRlSW5kZXgoQ2FsbFNpdGVJbmRleCBv
cmlnaW5hbENhbGxTaXRlKQpAQCAtMzM1NSw3ICszMjc1LDYgQEAgdm9pZCBDb2RlQmxvY2s6OnNo
cmlua1RvRml0KFNocmlua01vZGUgc2hyaW5rTW9kZSkKICAgICAgICAgaWYgKG1fcmFyZURhdGEp
IHsKICAgICAgICAgICAgIG1fcmFyZURhdGEtPm1fc3dpdGNoSnVtcFRhYmxlcy5zaHJpbmtUb0Zp
dCgpOwogICAgICAgICAgICAgbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzLnNo
cmlua1RvRml0KCk7Ci0gICAgICAgICAgICBtX3JhcmVEYXRhLT5tX2xpdmVDYWxsZWVMb2NhbHNB
dFlpZWxkLnNocmlua1RvRml0KCk7CiAgICAgICAgIH0KICAgICB9IC8vIGVsc2UgZG9uJ3Qgc2hy
aW5rIHRoZXNlLCBiZWNhdXNlIHdlIHdvdWxkIGhhdmUgYWxyZWFkeSBwb2ludGVkIHBvaW50ZXJz
IGludG8gdGhlc2UgdGFibGVzLgogfQpAQCAtNDMzNywxNCArNDI1Niw5IEBAIFN0cmluZyBDb2Rl
QmxvY2s6Om5hbWVGb3JSZWdpc3RlcihWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVyKQog
CiBWYWx1ZVByb2ZpbGUqIENvZGVCbG9jazo6dmFsdWVQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQo
aW50IGJ5dGVjb2RlT2Zmc2V0KQogewotICAgIFZhbHVlUHJvZmlsZSogcmVzdWx0ID0gYmluYXJ5
U2VhcmNoPFZhbHVlUHJvZmlsZSwgaW50PigKLSAgICAgICAgbV92YWx1ZVByb2ZpbGVzLCBtX3Zh
bHVlUHJvZmlsZXMuc2l6ZSgpLCBieXRlY29kZU9mZnNldCwKLSAgICAgICAgZ2V0VmFsdWVQcm9m
aWxlQnl0ZWNvZGVPZmZzZXQ8VmFsdWVQcm9maWxlPik7Ci0gICAgQVNTRVJUKHJlc3VsdC0+bV9i
eXRlY29kZU9mZnNldCAhPSAtMSk7Ci0gICAgQVNTRVJUKGluc3RydWN0aW9ucygpW2J5dGVjb2Rl
T2Zmc2V0ICsgb3Bjb2RlTGVuZ3RoKAotICAgICAgICBtX3ZtLT5pbnRlcnByZXRlci0+Z2V0T3Bj
b2RlSUQoCi0gICAgICAgICAgICBpbnN0cnVjdGlvbnMoKVtieXRlY29kZU9mZnNldF0udS5vcGNv
ZGUpKSAtIDFdLnUucHJvZmlsZSA9PSByZXN1bHQpOwotICAgIHJldHVybiByZXN1bHQ7CisgICAg
T3Bjb2RlSUQgb3Bjb2RlSUQgPSBtX3ZtLT5pbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoaW5zdHJ1
Y3Rpb25zKClbYnl0ZWNvZGVPZmZzZXRdLnUub3Bjb2RlKTsKKyAgICB1bnNpZ25lZCBsZW5ndGgg
PSBvcGNvZGVMZW5ndGgob3Bjb2RlSUQpOworICAgIHJldHVybiBpbnN0cnVjdGlvbnMoKVtieXRl
Y29kZU9mZnNldCArIGxlbmd0aCAtIDFdLnUucHJvZmlsZTsKIH0KIAogdm9pZCBDb2RlQmxvY2s6
OnZhbGlkYXRlKCkKQEAgLTQ2NzMsNCArNDU4NywxNiBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcE1h
dGhJQ1N0YXRzKCkKICNlbmRpZgogfQogCitCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXMmIENvZGVC
bG9jazo6bGl2ZW5lc3NBbmFseXNpc1Nsb3coKQoreworICAgIHN0ZDo6dW5pcXVlX3B0cjxCeXRl
Y29kZUxpdmVuZXNzQW5hbHlzaXM+IGFuYWx5c2lzID0gc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29k
ZUxpdmVuZXNzQW5hbHlzaXM+KHRoaXMpOworICAgIHsKKyAgICAgICAgQ29uY3VycmVudEpJVExv
Y2tlciBsb2NrZXIobV9sb2NrKTsKKyAgICAgICAgaWYgKCFtX2xpdmVuZXNzQW5hbHlzaXMpCisg
ICAgICAgICAgICBtX2xpdmVuZXNzQW5hbHlzaXMgPSBXVEZNb3ZlKGFuYWx5c2lzKTsKKyAgICAg
ICAgcmV0dXJuICptX2xpdmVuZXNzQW5hbHlzaXM7CisgICAgfQorfQorCisKIH0gLy8gbmFtZXNw
YWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVC
bG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCmluZGV4
IGFiOTI4MDRmNmJhMzliM2I2N2JhNmQ3NzVlNDQ5ZTJmM2RiZjdjMDUuLjllNWQ2MDc4NzczZjM4
Y2JiMjJkYzZhNTBmYWZhN2NlYjBlMWZmYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmgKQEAgLTMzLDcgKzMzLDYgQEAKICNpbmNsdWRlICJBcnJheVByb2Zp
bGUuaCIKICNpbmNsdWRlICJCeVZhbEluZm8uaCIKICNpbmNsdWRlICJCeXRlY29kZUNvbnZlbnRp
b25zLmgiCi0jaW5jbHVkZSAiQnl0ZWNvZGVMaXZlbmVzc0FuYWx5c2lzLmgiCiAjaW5jbHVkZSAi
Q2FsbExpbmtJbmZvLmgiCiAjaW5jbHVkZSAiQ2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZz
ZXQuaCIKICNpbmNsdWRlICJDb2RlQmxvY2tIYXNoLmgiCkBAIC03OSw2ICs3OCw3IEBACiAKIG5h
bWVzcGFjZSBKU0MgewogCitjbGFzcyBCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM7CiBjbGFzcyBF
eGVjU3RhdGU7CiBjbGFzcyBKSVRBZGRHZW5lcmF0b3I7CiBjbGFzcyBKU01vZHVsZUVudmlyb25t
ZW50OwpAQCAtMjI2LDEwICsyMjYsNiBAQCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxs
IHsKICAgICAgICAgcmV0dXJuIGluZGV4ID49IG1fbnVtVmFyczsKICAgICB9CiAKLSAgICBlbnVt
IGNsYXNzIFJlcXVpcmVkSGFuZGxlciB7Ci0gICAgICAgIENhdGNoSGFuZGxlciwKLSAgICAgICAg
QW55SGFuZGxlcgotICAgIH07CiAgICAgSGFuZGxlckluZm8qIGhhbmRsZXJGb3JCeXRlY29kZU9m
ZnNldCh1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgUmVxdWlyZWRIYW5kbGVyID0gUmVxdWlyZWRI
YW5kbGVyOjpBbnlIYW5kbGVyKTsKICAgICBIYW5kbGVySW5mbyogaGFuZGxlckZvckluZGV4KHVu
c2lnbmVkLCBSZXF1aXJlZEhhbmRsZXIgPSBSZXF1aXJlZEhhbmRsZXI6OkFueUhhbmRsZXIpOwog
ICAgIHZvaWQgcmVtb3ZlRXhjZXB0aW9uSGFuZGxlckZvckNhbGxTaXRlKENhbGxTaXRlSW5kZXgp
OwpAQCAtMzA0LDYgKzMwMCw5IEBAIGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewog
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SW5zdHJ1Y3Rpb24qPihyZXR1cm5BZGRyZXNzKSAt
IGluc3RydWN0aW9ucygpLmJlZ2luKCk7CiAgICAgfQogCisgICAgdHlwZWRlZiBKU0M6Okluc3Ry
dWN0aW9uIEluc3RydWN0aW9uOworICAgIHR5cGVkZWYgUmVmQ291bnRlZEFycmF5PEluc3RydWN0
aW9uPiYgVW5wYWNrZWRJbnN0cnVjdGlvbnM7CisKICAgICB1bnNpZ25lZCBudW1iZXJPZkluc3Ry
dWN0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1faW5zdHJ1Y3Rpb25zLnNpemUoKTsgfQogICAgIFJl
ZkNvdW50ZWRBcnJheTxJbnN0cnVjdGlvbj4mIGluc3RydWN0aW9ucygpIHsgcmV0dXJuIG1faW5z
dHJ1Y3Rpb25zOyB9CiAgICAgY29uc3QgUmVmQ291bnRlZEFycmF5PEluc3RydWN0aW9uPiYgaW5z
dHJ1Y3Rpb25zKCkgY29uc3QgeyByZXR1cm4gbV9pbnN0cnVjdGlvbnM7IH0KQEAgLTU0Niw3ICs1
NDUsNyBAQCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICB9CiAKICAgICBX
cml0ZUJhcnJpZXI8VW5rbm93bj4mIGNvbnN0YW50UmVnaXN0ZXIoaW50IGluZGV4KSB7IHJldHVy
biBtX2NvbnN0YW50UmVnaXN0ZXJzW2luZGV4IC0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXhd
OyB9Ci0gICAgQUxXQVlTX0lOTElORSBib29sIGlzQ29uc3RhbnRSZWdpc3RlckluZGV4KGludCBp
bmRleCkgY29uc3QgeyByZXR1cm4gaW5kZXggPj0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXg7
IH0KKyAgICBzdGF0aWMgQUxXQVlTX0lOTElORSBib29sIGlzQ29uc3RhbnRSZWdpc3RlckluZGV4
KGludCBpbmRleCkgeyByZXR1cm4gaW5kZXggPj0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXg7
IH0KICAgICBBTFdBWVNfSU5MSU5FIEpTVmFsdWUgZ2V0Q29uc3RhbnQoaW50IGluZGV4KSBjb25z
dCB7IHJldHVybiBtX2NvbnN0YW50UmVnaXN0ZXJzW2luZGV4IC0gRmlyc3RDb25zdGFudFJlZ2lz
dGVySW5kZXhdLmdldCgpOyB9CiAgICAgQUxXQVlTX0lOTElORSBTb3VyY2VDb2RlUmVwcmVzZW50
YXRpb24gY29uc3RhbnRTb3VyY2VDb2RlUmVwcmVzZW50YXRpb24oaW50IGluZGV4KSBjb25zdCB7
IHJldHVybiBtX2NvbnN0YW50c1NvdXJjZUNvZGVSZXByZXNlbnRhdGlvbltpbmRleCAtIEZpcnN0
Q29uc3RhbnRSZWdpc3RlckluZGV4XTsgfQogCkBAIC01OTIsMTQgKzU5MSw3IEBAIGNsYXNzIENv
ZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgICAgICAgICAgaWYgKCEhbV9saXZlbmVzc0Fu
YWx5c2lzKQogICAgICAgICAgICAgICAgIHJldHVybiAqbV9saXZlbmVzc0FuYWx5c2lzOwogICAg
ICAgICB9Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxCeXRlY29kZUxpdmVuZXNzQW5hbHlzaXM+
IGFuYWx5c2lzID0KLSAgICAgICAgICAgIHN0ZDo6bWFrZV91bmlxdWU8Qnl0ZWNvZGVMaXZlbmVz
c0FuYWx5c2lzPih0aGlzKTsKLSAgICAgICAgewotICAgICAgICAgICAgQ29uY3VycmVudEpJVExv
Y2tlciBsb2NrZXIobV9sb2NrKTsKLSAgICAgICAgICAgIGlmICghbV9saXZlbmVzc0FuYWx5c2lz
KQotICAgICAgICAgICAgICAgIG1fbGl2ZW5lc3NBbmFseXNpcyA9IFdURk1vdmUoYW5hbHlzaXMp
OwotICAgICAgICAgICAgcmV0dXJuICptX2xpdmVuZXNzQW5hbHlzaXM7Ci0gICAgICAgIH0KKyAg
ICAgICAgcmV0dXJuIGxpdmVuZXNzQW5hbHlzaXNTbG93KCk7CiAgICAgfQogICAgIAogICAgIHZv
aWQgdmFsaWRhdGUoKTsKQEAgLTYyMCwxOCArNjEyLDYgQEAgY2xhc3MgQ29kZUJsb2NrIDogcHVi
bGljIEpTQ2VsbCB7CiAgICAgU3RyaW5nSnVtcFRhYmxlJiBhZGRTdHJpbmdTd2l0Y2hKdW1wVGFi
bGUoKSB7IGNyZWF0ZVJhcmVEYXRhSWZOZWNlc3NhcnkoKTsgbV9yYXJlRGF0YS0+bV9zdHJpbmdT
d2l0Y2hKdW1wVGFibGVzLmFwcGVuZChTdHJpbmdKdW1wVGFibGUoKSk7IHJldHVybiBtX3JhcmVE
YXRhLT5tX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXMubGFzdCgpOyB9CiAgICAgU3RyaW5nSnVtcFRh
YmxlJiBzdHJpbmdTd2l0Y2hKdW1wVGFibGUoaW50IHRhYmxlSW5kZXgpIHsgUkVMRUFTRV9BU1NF
UlQobV9yYXJlRGF0YSk7IHJldHVybiBtX3JhcmVEYXRhLT5tX3N0cmluZ1N3aXRjaEp1bXBUYWJs
ZXNbdGFibGVJbmRleF07IH0KIAotICAgIC8vIExpdmUgY2FsbGVlIHJlZ2lzdGVycyBhdCB5aWVs
ZCBwb2ludHMuCi0gICAgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZUNhbGxlZUxvY2Fsc0F0WWll
bGQodW5zaWduZWQgaW5kZXgpIGNvbnN0Ci0gICAgewotICAgICAgICBSRUxFQVNFX0FTU0VSVCht
X3JhcmVEYXRhKTsKLSAgICAgICAgcmV0dXJuIG1fcmFyZURhdGEtPm1fbGl2ZUNhbGxlZUxvY2Fs
c0F0WWllbGRbaW5kZXhdOwotICAgIH0KLSAgICBGYXN0Qml0VmVjdG9yJiBsaXZlQ2FsbGVlTG9j
YWxzQXRZaWVsZCh1bnNpZ25lZCBpbmRleCkKLSAgICB7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJU
KG1fcmFyZURhdGEpOwotICAgICAgICByZXR1cm4gbV9yYXJlRGF0YS0+bV9saXZlQ2FsbGVlTG9j
YWxzQXRZaWVsZFtpbmRleF07Ci0gICAgfQotCiAgICAgRXZhbENvZGVDYWNoZSYgZXZhbENvZGVD
YWNoZSgpIHsgY3JlYXRlUmFyZURhdGFJZk5lY2Vzc2FyeSgpOyByZXR1cm4gbV9yYXJlRGF0YS0+
bV9ldmFsQ29kZUNhY2hlOyB9CiAKICAgICBlbnVtIFNocmlua01vZGUgewpAQCAtODg2LDggKzg2
Niw2IEBAIGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgICAgICBWZWN0b3I8
U2ltcGxlSnVtcFRhYmxlPiBtX3N3aXRjaEp1bXBUYWJsZXM7CiAgICAgICAgIFZlY3RvcjxTdHJp
bmdKdW1wVGFibGU+IG1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlczsKIAotICAgICAgICBWZWN0b3I8
RmFzdEJpdFZlY3Rvcj4gbV9saXZlQ2FsbGVlTG9jYWxzQXRZaWVsZDsKLQogICAgICAgICBFdmFs
Q29kZUNhY2hlIG1fZXZhbENvZGVDYWNoZTsKICAgICB9OwogCkBAIC05MjIsNiArOTAwLDggQEAg
Y2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAKIHByaXZhdGU6CiAgICAgZnJpZW5k
IGNsYXNzIENvZGVCbG9ja1NldDsKKworICAgIEJ5dGVjb2RlTGl2ZW5lc3NBbmFseXNpcyYgbGl2
ZW5lc3NBbmFseXNpc1Nsb3coKTsKICAgICAKICAgICBDb2RlQmxvY2sqIHNwZWNpYWxPU1JFbnRy
eUJsb2NrT3JOdWxsKCk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvSGFuZGxlckluZm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9I
YW5kbGVySW5mby5oCmluZGV4IGFjZGRhMDhlZDE0Y2JmOWYwOTcxMjc1MDQwNWE0MTc0MWY3NmEy
MTMuLjdiMTA4YWNlOTM3MjhhOGQ1ZGY4ZWIxNzNmYzBiMGE2MWJhZWQ2M2UgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9IYW5kbGVySW5mby5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9IYW5kbGVySW5mby5oCkBAIC0yNyw2ICsyNyw3IEBA
CiAjZGVmaW5lIEhhbmRsZXJJbmZvX2gKIAogI2luY2x1ZGUgIkNvZGVMb2NhdGlvbi5oIgorI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTM3LDYgKzM4LDEx
IEBAIGVudW0gY2xhc3MgSGFuZGxlclR5cGUgewogICAgIFN5bnRoZXNpemVkRmluYWxseSA9IDMK
IH07CiAKK2VudW0gY2xhc3MgUmVxdWlyZWRIYW5kbGVyIHsKKyAgICBDYXRjaEhhbmRsZXIsCisg
ICAgQW55SGFuZGxlcgorfTsKKwogc3RydWN0IEhhbmRsZXJJbmZvQmFzZSB7CiAgICAgSGFuZGxl
clR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEhhbmRsZXJUeXBlPih0eXBl
Qml0cyk7IH0KICAgICB2b2lkIHNldFR5cGUoSGFuZGxlclR5cGUgdHlwZSkgeyB0eXBlQml0cyA9
IHN0YXRpY19jYXN0PHVpbnQzMl90Pih0eXBlKTsgfQpAQCAtNTgsNiArNjQsMjMgQEAgc3RydWN0
IEhhbmRsZXJJbmZvQmFzZSB7CiAKICAgICBib29sIGlzQ2F0Y2hIYW5kbGVyKCkgY29uc3QgeyBy
ZXR1cm4gdHlwZSgpID09IEhhbmRsZXJUeXBlOjpDYXRjaDsgfQogCisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgSGFuZGxlcj4KKyAgICBzdGF0aWMgSGFuZGxlciogaGFuZGxlckZvckluZGV4KFZlY3Rv
cjxIYW5kbGVyPiYgZXhlcHRpb25IYW5kbGVycywgdW5zaWduZWQgaW5kZXgsIFJlcXVpcmVkSGFu
ZGxlciByZXF1aXJlZEhhbmRsZXIpCisgICAgeworICAgICAgICBmb3IgKEhhbmRsZXImIGhhbmRs
ZXIgOiBleGVwdGlvbkhhbmRsZXJzKSB7CisgICAgICAgICAgICBpZiAoKHJlcXVpcmVkSGFuZGxl
ciA9PSBSZXF1aXJlZEhhbmRsZXI6OkNhdGNoSGFuZGxlcikgJiYgIWhhbmRsZXIuaXNDYXRjaEhh
bmRsZXIoKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgLy8gSGFu
ZGxlcnMgYXJlIG9yZGVyZWQgaW5uZXJtb3N0IGZpcnN0LCBzbyB0aGUgZmlyc3QgaGFuZGxlciB3
ZSBlbmNvdW50ZXIKKyAgICAgICAgICAgIC8vIHRoYXQgY29udGFpbnMgdGhlIHNvdXJjZSBhZGRy
ZXNzIGlzIHRoZSBjb3JyZWN0IGhhbmRsZXIgdG8gdXNlLgorICAgICAgICAgICAgLy8gVGhpcyBp
bmRleCB1c2VkIGlzIGVpdGhlciB0aGUgQnl0ZWNvZGVPZmZzZXQgb3IgYSBDYWxsU2l0ZUluZGV4
LgorICAgICAgICAgICAgaWYgKGhhbmRsZXIuc3RhcnQgPD0gaW5kZXggJiYgaGFuZGxlci5lbmQg
PiBpbmRleCkKKyAgICAgICAgICAgICAgICByZXR1cm4gJmhhbmRsZXI7CisgICAgICAgIH0KKwor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKICAgICB1aW50MzJfdCBzdGFydDsKICAg
ICB1aW50MzJfdCBlbmQ7CiAgICAgdWludDMyX3QgdGFyZ2V0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL09wY29kZS5oCmluZGV4IGVlNjY3Yzg0ZmIyNjUyZjI1OWUzMjEyNGQxZTlhN2E3
MWRkZTAxZTAuLjRkYjYxMGU0ZThlNGRmNTZjYjg0ZTJlNzI4YWVhNDhiODdhMTVhNzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgKQEAgLTEyNiw2ICsxMjYsNjQgQEAg
aW5saW5lIHNpemVfdCBvcGNvZGVMZW5ndGgoT3Bjb2RlSUQgb3Bjb2RlKQogICAgIHJldHVybiAw
OwogfQogCitpbmxpbmUgYm9vbCBpc0JyYW5jaChPcGNvZGVJRCBvcGNvZGVJRCkKK3sKKyAgICBz
d2l0Y2ggKG9wY29kZUlEKSB7CisgICAgY2FzZSBvcF9qbXA6CisgICAgY2FzZSBvcF9qdHJ1ZToK
KyAgICBjYXNlIG9wX2pmYWxzZToKKyAgICBjYXNlIG9wX2plcV9udWxsOgorICAgIGNhc2Ugb3Bf
am5lcV9udWxsOgorICAgIGNhc2Ugb3Bfam5lcV9wdHI6CisgICAgY2FzZSBvcF9qbGVzczoKKyAg
ICBjYXNlIG9wX2psZXNzZXE6CisgICAgY2FzZSBvcF9qZ3JlYXRlcjoKKyAgICBjYXNlIG9wX2pn
cmVhdGVyZXE6CisgICAgY2FzZSBvcF9qbmxlc3M6CisgICAgY2FzZSBvcF9qbmxlc3NlcToKKyAg
ICBjYXNlIG9wX2puZ3JlYXRlcjoKKyAgICBjYXNlIG9wX2puZ3JlYXRlcmVxOgorICAgIGNhc2Ug
b3Bfc3dpdGNoX2ltbToKKyAgICBjYXNlIG9wX3N3aXRjaF9jaGFyOgorICAgIGNhc2Ugb3Bfc3dp
dGNoX3N0cmluZzoKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgZGVmYXVsdDoKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KK30KKworaW5saW5lIGJvb2wgaXNVbmNvbmRpdGlvbmFsQnJh
bmNoKE9wY29kZUlEIG9wY29kZUlEKQoreworICAgIHN3aXRjaCAob3Bjb2RlSUQpIHsKKyAgICBj
YXNlIG9wX2ptcDoKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgZGVmYXVsdDoKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KK30KKworaW5saW5lIGJvb2wgaXNUZXJtaW5hbChPcGNvZGVJ
RCBvcGNvZGVJRCkKK3sKKyAgICBzd2l0Y2ggKG9wY29kZUlEKSB7CisgICAgY2FzZSBvcF9yZXQ6
CisgICAgY2FzZSBvcF9lbmQ6CisgICAgICAgIHJldHVybiB0cnVlOworICAgIGRlZmF1bHQ6Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKK2lubGluZSBib29sIGlzVGhyb3coT3Bj
b2RlSUQgb3Bjb2RlSUQpCit7CisgICAgc3dpdGNoIChvcGNvZGVJRCkgeworICAgIGNhc2Ugb3Bf
dGhyb3c6CisgICAgY2FzZSBvcF90aHJvd19zdGF0aWNfZXJyb3I6CisgICAgICAgIHJldHVybiB0
cnVlOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIEpTQwogCiBuYW1lc3BhY2UgV1RGIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHMuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5jcHAKaW5kZXggZTJjYjAw
MDQ4Mzc5NGJhOTJkNTEwZGNmNWZhOTk0ODg1YTIzZGMzZC4uOWMwNmU3ZWMyN2Q1YjIwYjAyYjg3
NzU0MmZlNDE1ZGM5MmM5YjE3OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5jcHAKQEAgLTI2LDY5ICsyNiwzNyBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlByZWNpc2VKdW1wVGFyZ2V0cy5oIgogCisjaW5j
bHVkZSAiSW50ZXJwcmV0ZXJJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2lu
Y2x1ZGUgIlByZWNpc2VKdW1wVGFyZ2V0c0lubGluZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAK
LXRlbXBsYXRlIDxzaXplX3QgdmVjdG9yU2l6ZT4KLXN0YXRpYyB2b2lkIGdldEp1bXBUYXJnZXRz
Rm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEludGVycHJldGVyKiBpbnRl
cnByZXRlciwgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBieXRlY29k
ZU9mZnNldCwgVmVjdG9yPHVuc2lnbmVkLCB2ZWN0b3JTaXplPiYgb3V0KQordGVtcGxhdGUgPHNp
emVfdCB2ZWN0b3JTaXplLCB0eXBlbmFtZSBCbG9jaywgdHlwZW5hbWUgSW5zdHJ1Y3Rpb24+Citz
dGF0aWMgdm9pZCBnZXRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KEJsb2NrKiBjb2RlQmxv
Y2ssIEludGVycHJldGVyKiBpbnRlcnByZXRlciwgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0Jl
Z2luLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgVmVjdG9yPHVuc2lnbmVkLCB2ZWN0b3JTaXpl
PiYgb3V0KQogewotICAgIE9wY29kZUlEIG9wY29kZUlEID0gaW50ZXJwcmV0ZXItPmdldE9wY29k
ZUlEKGluc3RydWN0aW9uc0JlZ2luW2J5dGVjb2RlT2Zmc2V0XS51Lm9wY29kZSk7Ci0gICAgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnQgPSBpbnN0cnVjdGlvbnNCZWdpbiArIGJ5dGVjb2RlT2Zmc2V0Owot
ICAgIHN3aXRjaCAob3Bjb2RlSUQpIHsKLSAgICBjYXNlIG9wX2ptcDoKLSAgICAgICAgb3V0LmFw
cGVuZChieXRlY29kZU9mZnNldCArIGN1cnJlbnRbMV0udS5vcGVyYW5kKTsKLSAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBvcF9qdHJ1ZToKLSAgICBjYXNlIG9wX2pmYWxzZToKLSAgICBjYXNlIG9w
X2plcV9udWxsOgotICAgIGNhc2Ugb3Bfam5lcV9udWxsOgotICAgICAgICBvdXQuYXBwZW5kKGJ5
dGVjb2RlT2Zmc2V0ICsgY3VycmVudFsyXS51Lm9wZXJhbmQpOwotICAgICAgICBicmVhazsKLSAg
ICBjYXNlIG9wX2puZXFfcHRyOgotICAgIGNhc2Ugb3Bfamxlc3M6Ci0gICAgY2FzZSBvcF9qbGVz
c2VxOgotICAgIGNhc2Ugb3BfamdyZWF0ZXI6Ci0gICAgY2FzZSBvcF9qZ3JlYXRlcmVxOgotICAg
IGNhc2Ugb3Bfam5sZXNzOgotICAgIGNhc2Ugb3Bfam5sZXNzZXE6Ci0gICAgY2FzZSBvcF9qbmdy
ZWF0ZXI6Ci0gICAgY2FzZSBvcF9qbmdyZWF0ZXJlcToKLSAgICBjYXNlIG9wX3NhdmU6IC8vIFRo
ZSBqdW1wIG9mIG9wX3NhdmUgaXMgcHVyZWx5IGZvciBjYWxjdWxhdGluZyBsaXZlbmVzcy4KLSAg
ICAgICAgb3V0LmFwcGVuZChieXRlY29kZU9mZnNldCArIGN1cnJlbnRbM10udS5vcGVyYW5kKTsK
LSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBvcF9zd2l0Y2hfaW1tOgotICAgIGNhc2Ugb3Bfc3dp
dGNoX2NoYXI6IHsKLSAgICAgICAgU2ltcGxlSnVtcFRhYmxlJiB0YWJsZSA9IGNvZGVCbG9jay0+
c3dpdGNoSnVtcFRhYmxlKGN1cnJlbnRbMV0udS5vcGVyYW5kKTsKLSAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gdGFibGUuYnJhbmNoT2Zmc2V0cy5zaXplKCk7IGktLTspCi0gICAgICAgICAgICBv
dXQuYXBwZW5kKGJ5dGVjb2RlT2Zmc2V0ICsgdGFibGUuYnJhbmNoT2Zmc2V0c1tpXSk7Ci0gICAg
ICAgIG91dC5hcHBlbmQoYnl0ZWNvZGVPZmZzZXQgKyBjdXJyZW50WzJdLnUub3BlcmFuZCk7Ci0g
ICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBjYXNlIG9wX3N3aXRjaF9zdHJpbmc6IHsKLSAgICAg
ICAgU3RyaW5nSnVtcFRhYmxlJiB0YWJsZSA9IGNvZGVCbG9jay0+c3RyaW5nU3dpdGNoSnVtcFRh
YmxlKGN1cnJlbnRbMV0udS5vcGVyYW5kKTsKLSAgICAgICAgU3RyaW5nSnVtcFRhYmxlOjpTdHJp
bmdPZmZzZXRUYWJsZTo6aXRlcmF0b3IgaXRlciA9IHRhYmxlLm9mZnNldFRhYmxlLmJlZ2luKCk7
Ci0gICAgICAgIFN0cmluZ0p1bXBUYWJsZTo6U3RyaW5nT2Zmc2V0VGFibGU6Oml0ZXJhdG9yIGVu
ZCA9IHRhYmxlLm9mZnNldFRhYmxlLmVuZCgpOwotICAgICAgICBmb3IgKDsgaXRlciAhPSBlbmQ7
ICsraXRlcikKLSAgICAgICAgICAgIG91dC5hcHBlbmQoYnl0ZWNvZGVPZmZzZXQgKyBpdGVyLT52
YWx1ZS5icmFuY2hPZmZzZXQpOwotICAgICAgICBvdXQuYXBwZW5kKGJ5dGVjb2RlT2Zmc2V0ICsg
Y3VycmVudFsyXS51Lm9wZXJhbmQpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgY2FzZSBv
cF9sb29wX2hpbnQ6CisgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnRlcnByZXRlci0+Z2V0T3Bj
b2RlSUQoaW5zdHJ1Y3Rpb25zQmVnaW5bYnl0ZWNvZGVPZmZzZXRdKTsKKyAgICBleHRyYWN0U3Rv
cmVkSnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldChjb2RlQmxvY2ssIGludGVycHJldGVyLCBp
bnN0cnVjdGlvbnNCZWdpbiwgYnl0ZWNvZGVPZmZzZXQsIFsmXShpbnQzMl90JiByZWxhdGl2ZU9m
ZnNldCkgeworICAgICAgICBvdXQuYXBwZW5kKGJ5dGVjb2RlT2Zmc2V0ICsgcmVsYXRpdmVPZmZz
ZXQpOworICAgIH0pOworICAgIC8vIG9wX2xvb3BfaGludCBkb2VzIG5vdCBoYXZlIGp1bXAgdGFy
Z2V0IHN0b3JlZCBpbiBieXRlY29kZSBpbnN0cnVjdGlvbnMuCisgICAgaWYgKG9wY29kZUlEID09
IG9wX2xvb3BfaGludCkKICAgICAgICAgb3V0LmFwcGVuZChieXRlY29kZU9mZnNldCk7Ci0gICAg
ICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIGJyZWFrOwotICAgIH0KIH0KIAotdm9p
ZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKENvZGVCbG9jayogY29kZUJsb2NrLCBWZWN0b3I8
dW5zaWduZWQsIDMyPiYgb3V0KQorZW51bSBjbGFzcyBDb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRz
TW9kZSB7CisgICAgRm9sbG93Q29kZUJsb2NrQ2xhaW0sCisgICAgRm9yY2VDb21wdXRlLAorfTsK
KwordGVtcGxhdGU8Q29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0c01vZGUgTW9kZSwgdHlwZW5hbWUg
QmxvY2ssIHR5cGVuYW1lIEluc3RydWN0aW9uLCBzaXplX3QgdmVjdG9yU2l6ZT4KK3ZvaWQgY29t
cHV0ZVByZWNpc2VKdW1wVGFyZ2V0c0ludGVybmFsKEJsb2NrKiBjb2RlQmxvY2ssIEluc3RydWN0
aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCwgVmVjdG9y
PHVuc2lnbmVkLCB2ZWN0b3JTaXplPiYgb3V0KQogewogICAgIEFTU0VSVChvdXQuaXNFbXB0eSgp
KTsKICAgICAKICAgICAvLyBXZSB3aWxsIGRlcml2ZSBhIHN1cGVyc2V0IG9mIHRoZSBqdW1wIHRh
cmdldHMgdGhhdCB0aGUgY29kZSBibG9jayB0aGlua3MgaXQgaGFzLgogICAgIC8vIFNvLCBpZiB0
aGUgY29kZSBibG9jayBjbGFpbXMgdGhlcmUgYXJlIG5vbmUsIHRoZW4gd2UgYXJlIGRvbmUuCi0g
ICAgaWYgKCFjb2RlQmxvY2stPm51bWJlck9mSnVtcFRhcmdldHMoKSkKKyAgICBpZiAoTW9kZSA9
PSBDb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzTW9kZTo6Rm9sbG93Q29kZUJsb2NrQ2xhaW0gJiYg
IWNvZGVCbG9jay0+bnVtYmVyT2ZKdW1wVGFyZ2V0cygpKQogICAgICAgICByZXR1cm47CiAgICAg
CiAgICAgZm9yICh1bnNpZ25lZCBpID0gY29kZUJsb2NrLT5udW1iZXJPZkV4Y2VwdGlvbkhhbmRs
ZXJzKCk7IGktLTspIHsKQEAgLTk4LDEwICs2Niw4IEBAIHZvaWQgY29tcHV0ZVByZWNpc2VKdW1w
VGFyZ2V0cyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgVmVjdG9yPHVuc2lnbmVkLCAzMj4mIG91dCkK
ICAgICB9CiAKICAgICBJbnRlcnByZXRlciogaW50ZXJwcmV0ZXIgPSBjb2RlQmxvY2stPnZtKCkt
PmludGVycHJldGVyOwotICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiA9IGNvZGVC
bG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsKLSAgICB1bnNpZ25lZCBpbnN0cnVjdGlvbkNv
dW50ID0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5zaXplKCk7CiAgICAgZm9yICh1bnNpZ25l
ZCBieXRlY29kZU9mZnNldCA9IDA7IGJ5dGVjb2RlT2Zmc2V0IDwgaW5zdHJ1Y3Rpb25Db3VudDsp
IHsKLSAgICAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQo
aW5zdHJ1Y3Rpb25zQmVnaW5bYnl0ZWNvZGVPZmZzZXRdLnUub3Bjb2RlKTsKKyAgICAgICAgT3Bj
b2RlSUQgb3Bjb2RlSUQgPSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25zQmVn
aW5bYnl0ZWNvZGVPZmZzZXRdKTsKICAgICAgICAgZ2V0SnVtcFRhcmdldHNGb3JCeXRlY29kZU9m
ZnNldChjb2RlQmxvY2ssIGludGVycHJldGVyLCBpbnN0cnVjdGlvbnNCZWdpbiwgYnl0ZWNvZGVP
ZmZzZXQsIG91dCk7CiAgICAgICAgIGJ5dGVjb2RlT2Zmc2V0ICs9IG9wY29kZUxlbmd0aHNbb3Bj
b2RlSURdOwogICAgIH0KQEAgLTEyMywxMSArODksMzQgQEAgdm9pZCBjb21wdXRlUHJlY2lzZUp1
bXBUYXJnZXRzKENvZGVCbG9jayogY29kZUJsb2NrLCBWZWN0b3I8dW5zaWduZWQsIDMyPiYgb3V0
KQogICAgIG91dC5zaHJpbmtUb0ZpdCgpOwogfQogCi12b2lkIGZpbmRKdW1wVGFyZ2V0c0ZvckJ5
dGVjb2RlT2Zmc2V0KENvZGVCbG9jayogY29kZUJsb2NrLCB1bnNpZ25lZCBieXRlY29kZU9mZnNl
dCwgVmVjdG9yPHVuc2lnbmVkLCAxPiYgb3V0KQordm9pZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJn
ZXRzKENvZGVCbG9jayogY29kZUJsb2NrLCBWZWN0b3I8dW5zaWduZWQsIDMyPiYgb3V0KQogewot
ICAgIEludGVycHJldGVyKiBpbnRlcnByZXRlciA9IGNvZGVCbG9jay0+dm0oKS0+aW50ZXJwcmV0
ZXI7Ci0gICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luID0gY29kZUJsb2NrLT5pbnN0
cnVjdGlvbnMoKS5iZWdpbigpOwotICAgIGdldEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQo
Y29kZUJsb2NrLCBpbnRlcnByZXRlciwgaW5zdHJ1Y3Rpb25zQmVnaW4sIGJ5dGVjb2RlT2Zmc2V0
LCBvdXQpOworICAgIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHNJbnRlcm5hbDxDb21wdXRlUHJl
Y2lzZUp1bXBUYXJnZXRzTW9kZTo6Rm9sbG93Q29kZUJsb2NrQ2xhaW0+KGNvZGVCbG9jaywgY29k
ZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpLCBjb2RlQmxvY2stPmluc3RydWN0aW9ucygp
LnNpemUoKSwgb3V0KTsKK30KKwordm9pZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKENvZGVC
bG9jayogY29kZUJsb2NrLCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVk
IGluc3RydWN0aW9uQ291bnQsIFZlY3Rvcjx1bnNpZ25lZCwgMzI+JiBvdXQpCit7CisgICAgY29t
cHV0ZVByZWNpc2VKdW1wVGFyZ2V0c0ludGVybmFsPENvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHNN
b2RlOjpGb2xsb3dDb2RlQmxvY2tDbGFpbT4oY29kZUJsb2NrLCBpbnN0cnVjdGlvbnNCZWdpbiwg
aW5zdHJ1Y3Rpb25Db3VudCwgb3V0KTsKK30KKwordm9pZCBjb21wdXRlUHJlY2lzZUp1bXBUYXJn
ZXRzKFVubGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFVubGlua2VkSW5zdHJ1Y3Rpb24qIGlu
c3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50LCBWZWN0b3I8dW5zaWdu
ZWQsIDMyPiYgb3V0KQoreworICAgIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHNJbnRlcm5hbDxD
b21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzTW9kZTo6Rm9sbG93Q29kZUJsb2NrQ2xhaW0+KGNvZGVC
bG9jaywgaW5zdHJ1Y3Rpb25zQmVnaW4sIGluc3RydWN0aW9uQ291bnQsIG91dCk7Cit9CisKK3Zv
aWQgcmVjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKFVubGlua2VkQ29kZUJsb2NrKiBjb2RlQmxv
Y2ssIFVubGlua2VkSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBpbnN0
cnVjdGlvbkNvdW50LCBWZWN0b3I8dW5zaWduZWQ+JiBvdXQpCit7CisgICAgY29tcHV0ZVByZWNp
c2VKdW1wVGFyZ2V0c0ludGVybmFsPENvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHNNb2RlOjpGb3Jj
ZUNvbXB1dGU+KGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb25zQmVnaW4sIGluc3RydWN0aW9uQ291bnQs
IG91dCk7Cit9CisKK3ZvaWQgZmluZEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJs
b2NrKiBjb2RlQmxvY2ssIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdpbiwgdW5zaWduZWQg
Ynl0ZWNvZGVPZmZzZXQsIFZlY3Rvcjx1bnNpZ25lZCwgMT4mIG91dCkKK3sKKyAgICBnZXRKdW1w
VGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KGNvZGVCbG9jaywgY29kZUJsb2NrLT52bSgpLT5pbnRl
cnByZXRlciwgaW5zdHJ1Y3Rpb25zQmVnaW4sIGJ5dGVjb2RlT2Zmc2V0LCBvdXQpOworfQorCit2
b2lkIGZpbmRKdW1wVGFyZ2V0c0ZvckJ5dGVjb2RlT2Zmc2V0KFVubGlua2VkQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIFVubGlua2VkSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25l
ZCBieXRlY29kZU9mZnNldCwgVmVjdG9yPHVuc2lnbmVkLCAxPiYgb3V0KQoreworICAgIGdldEp1
bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoY29kZUJsb2NrLCBjb2RlQmxvY2stPnZtKCktPmlu
dGVycHJldGVyLCBpbnN0cnVjdGlvbnNCZWdpbiwgYnl0ZWNvZGVPZmZzZXQsIG91dCk7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5oCmluZGV4IDg1MjQxM2Q3N2I3OTg5ODRiMjdjZWYwZWQ2
MmJjOTRjNjg5ZTIxMmMuLmJjYzkzNDZjZDVkNzAyMDQ2NWRlZjA5YTViMjU5Y2Y0ODcyZDliOTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRh
cmdldHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBU
YXJnZXRzLmgKQEAgLTIzLDE5ICsyMywyMyBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAotI2lm
bmRlZiBQcmVjaXNlSnVtcFRhcmdldHNfaAotI2RlZmluZSBQcmVjaXNlSnVtcFRhcmdldHNfaAor
I3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKIAogbmFtZXNwYWNlIEpTQyB7
CiAKK2NsYXNzIFVubGlua2VkQ29kZUJsb2NrOworc3RydWN0IFVubGlua2VkSW5zdHJ1Y3Rpb247
CisKIC8vIFJldHVybiBhIHNvcnRlZCBsaXN0IG9mIGJ5dGVjb2RlIGluZGV4IHRoYXQgYXJlIHRo
ZSBkZXN0aW5hdGlvbiBvZiBhIGp1bXAuCiB2b2lkIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMo
Q29kZUJsb2NrKiwgVmVjdG9yPHVuc2lnbmVkLCAzMj4mIG91dCk7Cit2b2lkIGNvbXB1dGVQcmVj
aXNlSnVtcFRhcmdldHMoQ29kZUJsb2NrKiwgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2lu
LCB1bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50LCBWZWN0b3I8dW5zaWduZWQsIDMyPiYgb3V0KTsK
K3ZvaWQgY29tcHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhVbmxpbmtlZENvZGVCbG9jayosIFVubGlu
a2VkSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBpbnN0cnVjdGlvbkNv
dW50LCBWZWN0b3I8dW5zaWduZWQsIDMyPiYgb3V0KTsKIAotdm9pZCBmaW5kSnVtcFRhcmdldHNG
b3JCeXRlY29kZU9mZnNldChDb2RlQmxvY2sqLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgVmVj
dG9yPHVuc2lnbmVkLCAxPiYgb3V0KTsKLQotfSAvLyBuYW1lc3BhY2UgSlNDCit2b2lkIHJlY29t
cHV0ZVByZWNpc2VKdW1wVGFyZ2V0cyhVbmxpbmtlZENvZGVCbG9jayosIFVubGlua2VkSW5zdHJ1
Y3Rpb24qIGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50LCBWZWN0
b3I8dW5zaWduZWQ+JiBvdXQpOwogCi0jZW5kaWYgLy8gUHJlY2lzZUp1bXBUYXJnZXRzX2gKK3Zv
aWQgZmluZEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsb2NrKiwgSW5zdHJ1Y3Rp
b24qIGluc3RydWN0aW9uc0JlZ2luLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCwgVmVjdG9yPHVu
c2lnbmVkLCAxPiYgb3V0KTsKK3ZvaWQgZmluZEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQo
VW5saW5rZWRDb2RlQmxvY2sqLCBVbmxpbmtlZEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbnNCZWdp
biwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIFZlY3Rvcjx1bnNpZ25lZCwgMT4mIG91dCk7CiAK
K30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0c0lubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHNJbmxpbmVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTlmZGNk
Y2ViYjcyZjQ2MmYwODQ4NWY4ZGRkOGMxZjMyZmEwZGU1NQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHNJbmxpbmVzLmgK
QEAgLTAsMCArMSw4MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSW50ZXJwcmV0ZXJJbmxpbmVzLmgiCisj
aW5jbHVkZSAiT3Bjb2RlLmgiCisjaW5jbHVkZSAiUHJlY2lzZUp1bXBUYXJnZXRzLmgiCisKK25h
bWVzcGFjZSBKU0MgeworCit0ZW1wbGF0ZTx0eXBlbmFtZSBCbG9jaywgdHlwZW5hbWUgSW5zdHJ1
Y3Rpb24sIHR5cGVuYW1lIEZ1bmN0aW9uPgoraW5saW5lIHZvaWQgZXh0cmFjdFN0b3JlZEp1bXBU
YXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoQmxvY2sqIGNvZGVCbG9jaywgSW50ZXJwcmV0ZXIqIGlu
dGVycHJldGVyLCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb25zQmVnaW4sIHVuc2lnbmVkIGJ5dGVj
b2RlT2Zmc2V0LCBGdW5jdGlvbiBmdW5jdGlvbikKK3sKKyAgICBPcGNvZGVJRCBvcGNvZGVJRCA9
IGludGVycHJldGVyLT5nZXRPcGNvZGVJRChpbnN0cnVjdGlvbnNCZWdpbltieXRlY29kZU9mZnNl
dF0pOworICAgIEluc3RydWN0aW9uKiBjdXJyZW50ID0gaW5zdHJ1Y3Rpb25zQmVnaW4gKyBieXRl
Y29kZU9mZnNldDsKKyAgICBzd2l0Y2ggKG9wY29kZUlEKSB7CisgICAgY2FzZSBvcF9qbXA6Cisg
ICAgICAgIGZ1bmN0aW9uKGN1cnJlbnRbMV0udS5vcGVyYW5kKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBvcF9qdHJ1ZToKKyAgICBjYXNlIG9wX2pmYWxzZToKKyAgICBjYXNlIG9wX2plcV9u
dWxsOgorICAgIGNhc2Ugb3Bfam5lcV9udWxsOgorICAgICAgICBmdW5jdGlvbihjdXJyZW50WzJd
LnUub3BlcmFuZCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ugb3Bfam5lcV9wdHI6CisgICAg
Y2FzZSBvcF9qbGVzczoKKyAgICBjYXNlIG9wX2psZXNzZXE6CisgICAgY2FzZSBvcF9qZ3JlYXRl
cjoKKyAgICBjYXNlIG9wX2pncmVhdGVyZXE6CisgICAgY2FzZSBvcF9qbmxlc3M6CisgICAgY2Fz
ZSBvcF9qbmxlc3NlcToKKyAgICBjYXNlIG9wX2puZ3JlYXRlcjoKKyAgICBjYXNlIG9wX2puZ3Jl
YXRlcmVxOgorICAgICAgICBmdW5jdGlvbihjdXJyZW50WzNdLnUub3BlcmFuZCk7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2Ugb3Bfc3dpdGNoX2ltbToKKyAgICBjYXNlIG9wX3N3aXRjaF9jaGFy
OiB7CisgICAgICAgIGF1dG8mIHRhYmxlID0gY29kZUJsb2NrLT5zd2l0Y2hKdW1wVGFibGUoY3Vy
cmVudFsxXS51Lm9wZXJhbmQpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSB0YWJsZS5icmFu
Y2hPZmZzZXRzLnNpemUoKTsgaS0tOykKKyAgICAgICAgICAgIGZ1bmN0aW9uKHRhYmxlLmJyYW5j
aE9mZnNldHNbaV0pOworICAgICAgICBmdW5jdGlvbihjdXJyZW50WzJdLnUub3BlcmFuZCk7Cisg
ICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIG9wX3N3aXRjaF9zdHJpbmc6IHsKKyAgICAg
ICAgYXV0byYgdGFibGUgPSBjb2RlQmxvY2stPnN0cmluZ1N3aXRjaEp1bXBUYWJsZShjdXJyZW50
WzFdLnUub3BlcmFuZCk7CisgICAgICAgIGF1dG8gaXRlciA9IHRhYmxlLm9mZnNldFRhYmxlLmJl
Z2luKCk7CisgICAgICAgIGF1dG8gZW5kID0gdGFibGUub2Zmc2V0VGFibGUuZW5kKCk7CisgICAg
ICAgIGZvciAoOyBpdGVyICE9IGVuZDsgKytpdGVyKQorICAgICAgICAgICAgZnVuY3Rpb24oaXRl
ci0+dmFsdWUuYnJhbmNoT2Zmc2V0KTsKKyAgICAgICAgZnVuY3Rpb24oY3VycmVudFsyXS51Lm9w
ZXJhbmQpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgZGVmYXVsdDoKKyAgICAgICAgYnJl
YWs7CisgICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCmluZGV4IDAwNWRmZjhi
ZmMyYzUwNDhjNTAzY2U2MDI5YmJkMjM4MzA2YTE5NTQuLmE2ZTBlODJiZTMzNjc4OTBlZTIwMjEw
MDNjOTc0MzZkNjg1ZmJiNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUg
IlVubGlua2VkQ29kZUJsb2NrLmgiCiAKICNpbmNsdWRlICJCeXRlY29kZUdlbmVyYXRvci5oIgor
I2luY2x1ZGUgIkJ5dGVjb2RlUmV3cml0ZXIuaCIKICNpbmNsdWRlICJDbGFzc0luZm8uaCIKICNp
bmNsdWRlICJDb2RlQ2FjaGUuaCIKICNpbmNsdWRlICJFeGVjdXRhYmxlLmgiCkBAIC0zNiw2ICsz
Nyw3IEBACiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAj
aW5jbHVkZSAiUGFyc2VyLmgiCisjaW5jbHVkZSAiUHJlY2lzZUp1bXBUYXJnZXRzSW5saW5lcy5o
IgogI2luY2x1ZGUgIlNvdXJjZVByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlLmgiCiAj
aW5jbHVkZSAiU3ltYm9sVGFibGUuaCIKQEAgLTM2Nyw1ICszNjksNjcgQEAgY29uc3QgVW5saW5r
ZWRJbnN0cnVjdGlvblN0cmVhbSYgVW5saW5rZWRDb2RlQmxvY2s6Omluc3RydWN0aW9ucygpIGNv
bnN0CiAgICAgcmV0dXJuICptX3VubGlua2VkSW5zdHJ1Y3Rpb25zOwogfQogCitVbmxpbmtlZEhh
bmRsZXJJbmZvKiBVbmxpbmtlZENvZGVCbG9jazo6aGFuZGxlckZvckJ5dGVjb2RlT2Zmc2V0KHVu
c2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBSZXF1aXJlZEhhbmRsZXIgcmVxdWlyZWRIYW5kbGVyKQor
eworICAgIHJldHVybiBoYW5kbGVyRm9ySW5kZXgoYnl0ZWNvZGVPZmZzZXQsIHJlcXVpcmVkSGFu
ZGxlcik7Cit9CisKK1VubGlua2VkSGFuZGxlckluZm8qIFVubGlua2VkQ29kZUJsb2NrOjpoYW5k
bGVyRm9ySW5kZXgodW5zaWduZWQgaW5kZXgsIFJlcXVpcmVkSGFuZGxlciByZXF1aXJlZEhhbmRs
ZXIpCit7CisgICAgaWYgKCFtX3JhcmVEYXRhKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICByZXR1cm4gVW5saW5rZWRIYW5kbGVySW5mbzo6aGFuZGxlckZvckluZGV4KG1fcmFyZURhdGEt
Pm1fZXhjZXB0aW9uSGFuZGxlcnMsIGluZGV4LCByZXF1aXJlZEhhbmRsZXIpOworfQorCit2b2lk
IFVubGlua2VkQ29kZUJsb2NrOjphcHBseU1vZGlmaWNhdGlvbihCeXRlY29kZVJld3JpdGVyJiBy
ZXdyaXRlcikKK3sKKyAgICAvLyBCZWZvcmUgYXBwbHlpbmcgdGhlIGNoYW5nZXMsIHdlIGFkanVz
dCB0aGUganVtcHMgYmFzZWQgb24gdGhlIG9yaWdpbmFsIGJ5dGVjb2RlIG9mZnNldCwgdGhlIG9m
ZnNldCB0byB0aGUganVtcCB0YXJnZXQsIGFuZAorICAgIC8vIHRoZSBpbnNlcnRpb24gaW5mb3Jt
YXRpb24uCisKKyAgICBCeXRlY29kZUdyYXBoPFVubGlua2VkQ29kZUJsb2NrPiYgZ3JhcGggPSBy
ZXdyaXRlci5ncmFwaCgpOworICAgIFVubGlua2VkSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uc0Jl
Z2luID0gZ3JhcGguaW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsKKworICAgIGZvciAoaW50IGJ5dGVj
b2RlT2Zmc2V0ID0gMCwgaW5zdHJ1Y3Rpb25Db3VudCA9IGdyYXBoLmluc3RydWN0aW9ucygpLnNp
emUoKTsgYnl0ZWNvZGVPZmZzZXQgPCBpbnN0cnVjdGlvbkNvdW50OykgeworICAgICAgICBVbmxp
bmtlZEluc3RydWN0aW9uKiBjdXJyZW50ID0gaW5zdHJ1Y3Rpb25zQmVnaW4gKyBieXRlY29kZU9m
ZnNldDsKKyAgICAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQgPSBjdXJyZW50WzBdLnUub3Bjb2RlOwor
ICAgICAgICBleHRyYWN0U3RvcmVkSnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldCh0aGlzLCB2
bSgpLT5pbnRlcnByZXRlciwgaW5zdHJ1Y3Rpb25zQmVnaW4sIGJ5dGVjb2RlT2Zmc2V0LCBbJl0o
aW50MzJfdCYgcmVsYXRpdmVPZmZzZXQpIHsKKyAgICAgICAgICAgIHJlbGF0aXZlT2Zmc2V0ID0g
cmV3cml0ZXIuYWRqdXN0SnVtcFRhcmdldChieXRlY29kZU9mZnNldCwgYnl0ZWNvZGVPZmZzZXQg
KyByZWxhdGl2ZU9mZnNldCk7CisgICAgICAgIH0pOworICAgICAgICBieXRlY29kZU9mZnNldCAr
PSBvcGNvZGVMZW5ndGgob3Bjb2RlSUQpOworICAgIH0KKworICAgIC8vIFRoZW4sIGV4Y2VwdGlv
biBoYW5kbGVycyBzaG91bGQgYmUgYWRqdXN0ZWQuCisgICAgaWYgKG1fcmFyZURhdGEpIHsKKyAg
ICAgICAgZm9yIChVbmxpbmtlZEhhbmRsZXJJbmZvJiBoYW5kbGVyIDogbV9yYXJlRGF0YS0+bV9l
eGNlcHRpb25IYW5kbGVycykgeworICAgICAgICAgICAgaGFuZGxlci50YXJnZXQgPSByZXdyaXRl
ci5hZGp1c3RBYnNvbHV0ZU9mZnNldChoYW5kbGVyLnRhcmdldCk7CisgICAgICAgICAgICBoYW5k
bGVyLnN0YXJ0ID0gcmV3cml0ZXIuYWRqdXN0QWJzb2x1dGVPZmZzZXQoaGFuZGxlci5zdGFydCk7
CisgICAgICAgICAgICBoYW5kbGVyLmVuZCA9IHJld3JpdGVyLmFkanVzdEFic29sdXRlT2Zmc2V0
KGhhbmRsZXIuZW5kKTsKKyAgICAgICAgfQorCisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgbV9yYXJlRGF0YS0+bV9vcFByb2ZpbGVDb250cm9sRmxvd0J5dGVjb2RlT2Zmc2V0cy5zaXpl
KCk7ICsraSkKKyAgICAgICAgICAgIG1fcmFyZURhdGEtPm1fb3BQcm9maWxlQ29udHJvbEZsb3dC
eXRlY29kZU9mZnNldHNbaV0gPSByZXdyaXRlci5hZGp1c3RBYnNvbHV0ZU9mZnNldChtX3JhcmVE
YXRhLT5tX29wUHJvZmlsZUNvbnRyb2xGbG93Qnl0ZWNvZGVPZmZzZXRzW2ldKTsKKworICAgICAg
ICBpZiAoIW1fcmFyZURhdGEtPm1fdHlwZVByb2ZpbGVySW5mb01hcC5pc0VtcHR5KCkpIHsKKyAg
ICAgICAgICAgIEhhc2hNYXA8dW5zaWduZWQsIFJhcmVEYXRhOjpUeXBlUHJvZmlsZXJFeHByZXNz
aW9uUmFuZ2U+IGFkanVzdGVkVHlwZVByb2ZpbGVySW5mb01hcDsKKyAgICAgICAgICAgIGZvciAo
YXV0byYgZW50cnkgOiBtX3JhcmVEYXRhLT5tX3R5cGVQcm9maWxlckluZm9NYXApCisgICAgICAg
ICAgICAgICAgYWRqdXN0ZWRUeXBlUHJvZmlsZXJJbmZvTWFwLnNldChyZXdyaXRlci5hZGp1c3RB
YnNvbHV0ZU9mZnNldChlbnRyeS5rZXkpLCBlbnRyeS52YWx1ZSk7CisgICAgICAgICAgICBtX3Jh
cmVEYXRhLT5tX3R5cGVQcm9maWxlckluZm9NYXAuc3dhcChhZGp1c3RlZFR5cGVQcm9maWxlcklu
Zm9NYXApOworICAgICAgICB9CisgICAgfQorCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBt
X3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zLnNpemUoKTsgKytpKQorICAgICAgICBtX3Byb3Bl
cnR5QWNjZXNzSW5zdHJ1Y3Rpb25zW2ldID0gcmV3cml0ZXIuYWRqdXN0QWJzb2x1dGVPZmZzZXQo
bV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uc1tpXSk7CisKKyAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IG1fZXhwcmVzc2lvbkluZm8uc2l6ZSgpOyArK2kpCisgICAgICAgIG1fZXhwcmVzc2lv
bkluZm9baV0uaW5zdHJ1Y3Rpb25PZmZzZXQgPSByZXdyaXRlci5hZGp1c3RBYnNvbHV0ZU9mZnNl
dChtX2V4cHJlc3Npb25JbmZvW2ldLmluc3RydWN0aW9uT2Zmc2V0KTsKKworICAgIC8vIFRoZW4s
IG1vZGlmeSB0aGUgdW5saW5rZWQgaW5zdHJ1Y3Rpb25zLgorICAgIHJld3JpdGVyLmFwcGx5TW9k
aWZpY2F0aW9uKCk7CisKKyAgICAvLyBBbmQgcmVjb21wdXRlIHRoZSBqdW1wIHRhcmdldCBiYXNl
ZCBvbiB0aGUgbW9kaWZpZWQgdW5saW5rZWQgaW5zdHJ1Y3Rpb25zLgorICAgIG1fanVtcFRhcmdl
dHMuY2xlYXIoKTsKKyAgICByZWNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHModGhpcywgZ3JhcGgu
aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSwgZ3JhcGguaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpLCBtX2p1
bXBUYXJnZXRzKTsKK30KKwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9VbmxpbmtlZENvZGVCbG9jay5oCmluZGV4IGI0ZDJjZjQ4ZTQ2MzhkMzczYjE2NzIwZjc2
ZTNjZmY5N2RmMDE1MGQuLjcyZDE2OTYxMWFhOTM1MTc4YzQ4MTBlZWQyZDU5YTgzMThmZjYxYTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVC
bG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVC
bG9jay5oCkBAIC00NSw2ICs0NSw4IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCitjbGFzcyBCeXRl
Y29kZVJld3JpdGVyOworY2xhc3MgRGVidWdnZXI7CiBjbGFzcyBGdW5jdGlvbk1ldGFkYXRhTm9k
ZTsKIGNsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZTsKIGNsYXNzIEpTU2NvcGU7CkBAIC02NSw3ICs2
NywxMSBAQCB0eXBlZGVmIHVuc2lnbmVkIFVubGlua2VkT2JqZWN0QWxsb2NhdGlvblByb2ZpbGU7
CiB0eXBlZGVmIHVuc2lnbmVkIFVubGlua2VkTExJbnRDYWxsTGlua0luZm87CiAKIHN0cnVjdCBV
bmxpbmtlZFN0cmluZ0p1bXBUYWJsZSB7Ci0gICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxTdHJp
bmdJbXBsPiwgaW50MzJfdD4gU3RyaW5nT2Zmc2V0VGFibGU7CisgICAgc3RydWN0IE9mZnNldExv
Y2F0aW9uIHsKKyAgICAgICAgaW50MzJfdCBicmFuY2hPZmZzZXQ7CisgICAgfTsKKworICAgIHR5
cGVkZWYgSGFzaE1hcDxSZWZQdHI8U3RyaW5nSW1wbD4sIE9mZnNldExvY2F0aW9uPiBTdHJpbmdP
ZmZzZXRUYWJsZTsKICAgICBTdHJpbmdPZmZzZXRUYWJsZSBvZmZzZXRUYWJsZTsKIAogICAgIGlu
bGluZSBpbnQzMl90IG9mZnNldEZvclZhbHVlKFN0cmluZ0ltcGwqIHZhbHVlLCBpbnQzMl90IGRl
ZmF1bHRPZmZzZXQpCkBAIC03NCw3ICs4MCw3IEBAIHN0cnVjdCBVbmxpbmtlZFN0cmluZ0p1bXBU
YWJsZSB7CiAgICAgICAgIFN0cmluZ09mZnNldFRhYmxlOjpjb25zdF9pdGVyYXRvciBsb2MgPSBv
ZmZzZXRUYWJsZS5maW5kKHZhbHVlKTsKICAgICAgICAgaWYgKGxvYyA9PSBlbmQpCiAgICAgICAg
ICAgICByZXR1cm4gZGVmYXVsdE9mZnNldDsKLSAgICAgICAgcmV0dXJuIGxvYy0+dmFsdWU7Cisg
ICAgICAgIHJldHVybiBsb2MtPnZhbHVlLmJyYW5jaE9mZnNldDsKICAgICB9CiAKIH07CkBAIC0x
MDIsNiArMTA4LDggQEAgc3RydWN0IFVubGlua2VkSW5zdHJ1Y3Rpb24gewogICAgIH0gdTsKIH07
CiAKK2NsYXNzIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uOworCiBjbGFzcyBVbmxpbmtlZENv
ZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewogcHVibGljOgogICAgIHR5cGVkZWYgSlNDZWxsIEJh
c2U7CkBAIC0xMTEsNiArMTE5LDkgQEAgY2xhc3MgVW5saW5rZWRDb2RlQmxvY2sgOiBwdWJsaWMg
SlNDZWxsIHsKIAogICAgIGVudW0geyBDYWxsRnVuY3Rpb24sIEFwcGx5RnVuY3Rpb24gfTsKIAor
ICAgIHR5cGVkZWYgVW5saW5rZWRJbnN0cnVjdGlvbiBJbnN0cnVjdGlvbjsKKyAgICB0eXBlZGVm
IFZlY3RvcjxVbmxpbmtlZEluc3RydWN0aW9uLCAwLCBVbnNhZmVWZWN0b3JPdmVyZmxvdz4gVW5w
YWNrZWRJbnN0cnVjdGlvbnM7CisKICAgICBib29sIGlzQ29uc3RydWN0b3IoKSBjb25zdCB7IHJl
dHVybiBtX2lzQ29uc3RydWN0b3I7IH0KICAgICBib29sIGlzU3RyaWN0TW9kZSgpIGNvbnN0IHsg
cmV0dXJuIG1faXNTdHJpY3RNb2RlOyB9CiAgICAgYm9vbCB1c2VzRXZhbCgpIGNvbnN0IHsgcmV0
dXJuIG1fdXNlc0V2YWw7IH0KQEAgLTIwMCw2ICsyMTEsOSBAQCBjbGFzcyBVbmxpbmtlZENvZGVC
bG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgIHVuc2lnbmVkIGp1bXBUYXJnZXQoaW50IGluZGV4
KSBjb25zdCB7IHJldHVybiBtX2p1bXBUYXJnZXRzW2luZGV4XTsgfQogICAgIHVuc2lnbmVkIGxh
c3RKdW1wVGFyZ2V0KCkgY29uc3QgeyByZXR1cm4gbV9qdW1wVGFyZ2V0cy5sYXN0KCk7IH0KIAor
ICAgIFVubGlua2VkSGFuZGxlckluZm8qIGhhbmRsZXJGb3JCeXRlY29kZU9mZnNldCh1bnNpZ25l
ZCBieXRlY29kZU9mZnNldCwgUmVxdWlyZWRIYW5kbGVyID0gUmVxdWlyZWRIYW5kbGVyOjpBbnlI
YW5kbGVyKTsKKyAgICBVbmxpbmtlZEhhbmRsZXJJbmZvKiBoYW5kbGVyRm9ySW5kZXgodW5zaWdu
ZWQsIFJlcXVpcmVkSGFuZGxlciA9IFJlcXVpcmVkSGFuZGxlcjo6QW55SGFuZGxlcik7CisKICAg
ICBib29sIGlzQnVpbHRpbkZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc0J1aWx0aW5GdW5j
dGlvbjsgfQogCiAgICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCgpIGNvbnN0IHsg
cmV0dXJuIHN0YXRpY19jYXN0PENvbnN0cnVjdG9yS2luZD4obV9jb25zdHJ1Y3RvcktpbmQpOyB9
CkBAIC0yMzAsNiArMjQ0LDggQEAgY2xhc3MgVW5saW5rZWRDb2RlQmxvY2sgOiBwdWJsaWMgSlND
ZWxsIHsKICAgICB2b2lkIHNldEluc3RydWN0aW9ucyhzdGQ6OnVuaXF1ZV9wdHI8VW5saW5rZWRJ
bnN0cnVjdGlvblN0cmVhbT4pOwogICAgIGNvbnN0IFVubGlua2VkSW5zdHJ1Y3Rpb25TdHJlYW0m
IGluc3RydWN0aW9ucygpIGNvbnN0OwogCisgICAgaW50IG51bUNhbGxlZUxvY2FscygpIGNvbnN0
IHsgcmV0dXJuIG1fbnVtQ2FsbGVlTG9jYWxzOyB9CisKICAgICBpbnQgbV9udW1WYXJzOwogICAg
IGludCBtX251bUNhcHR1cmVkVmFyczsKICAgICBpbnQgbV9udW1DYWxsZWVMb2NhbHM7CkBAIC0z
ODEsNiArMzk3LDggQEAgY2xhc3MgVW5saW5rZWRDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsK
ICAgICB9CiAKIHByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIEJ5dGVjb2RlUmV3cml0ZXI7Cisg
ICAgdm9pZCBhcHBseU1vZGlmaWNhdGlvbihCeXRlY29kZVJld3JpdGVyJik7CiAKICAgICB2b2lk
IGNyZWF0ZVJhcmVEYXRhSWZOZWNlc3NhcnkoKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WaXJ0dWFsUmVnaXN0ZXIuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9WaXJ0dWFsUmVnaXN0ZXIuaAppbmRleCBkM2RmNDA5NTdiNTE3NTY4
ZTNhZWZiZTNhMWE2MDlmZDg3OGJhYWMzLi5kYWY1MDlmNmM3ZDExNWU0NWJjYjEwN2M2N2QzZDM4
ZDgwNGYyODk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmly
dHVhbFJlZ2lzdGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZpcnR1
YWxSZWdpc3Rlci5oCkBAIC0yNiw4ICsyNiw4IEBACiAjaWZuZGVmIFZpcnR1YWxSZWdpc3Rlcl9o
CiAjZGVmaW5lIFZpcnR1YWxSZWdpc3Rlcl9oCiAKKyNpbmNsdWRlICJCeXRlY29kZUNvbnZlbnRp
b25zLmgiCiAjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCi0KICNpbmNsdWRlIDx3dGYvUHJpbnRTdHJl
YW0uaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC0xMDMsNyArMTAzLDcgQEAgY2xhc3MgVmlydHVh
bFJlZ2lzdGVyIHsKIAogcHJpdmF0ZToKICAgICBzdGF0aWMgY29uc3QgaW50IHNfaW52YWxpZFZp
cnR1YWxSZWdpc3RlciA9IDB4M2ZmZmZmZmY7Ci0gICAgc3RhdGljIGNvbnN0IGludCBzX2ZpcnN0
Q29uc3RhbnRSZWdpc3RlckluZGV4ID0gMHg0MDAwMDAwMDsKKyAgICBzdGF0aWMgY29uc3QgaW50
IHNfZmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXggPSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRl
eDsKIAogICAgIHN0YXRpYyBpbnQgbG9jYWxUb09wZXJhbmQoaW50IGxvY2FsKSB7IHJldHVybiAt
MSAtIGxvY2FsOyB9CiAgICAgc3RhdGljIGludCBvcGVyYW5kVG9Mb2NhbChpbnQgb3BlcmFuZCkg
eyByZXR1cm4gLTEgLSBvcGVyYW5kOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IGI2ZGYxNWJlMmM0
OTk4NDk0OGU3MWUzMTNjNDVlNGRlMWEyMTU3MWEuLjcyZDI3OGJjOWYzODljMjU5OGFhMmY0NjNi
MWE1YmEwODdlYjk0MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAKICNp
bmNsdWRlICJBcml0aFByb2ZpbGUuaCIKICNpbmNsdWRlICJCdWlsdGluRXhlY3V0YWJsZXMuaCIK
KyNpbmNsdWRlICJCeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5oIgogI2luY2x1ZGUgIkJ5dGVj
b2RlTGl2ZW5lc3NBbmFseXNpcy5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVk
ZSAiSlNGdW5jdGlvbi5oIgpAQCAtMTU1LDYgKzE1NiwxMCBAQCBQYXJzZXJFcnJvciBCeXRlY29k
ZUdlbmVyYXRvcjo6Z2VuZXJhdGUoKQogICAgICAgICBtX2NvZGVCbG9jay0+YWRkRXhjZXB0aW9u
SGFuZGxlcihpbmZvKTsKICAgICB9CiAgICAgCisKKyAgICBpZiAobV9jb2RlQmxvY2stPnBhcnNl
TW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yQm9keU1vZGUpCisgICAgICAgIHBl
cmZvcm1HZW5lcmF0b3JpZmljYXRpb24obV9jb2RlQmxvY2suZ2V0KCksIG1faW5zdHJ1Y3Rpb25z
LCBtX2dlbmVyYXRvckZyYW1lU3ltYm9sVGFibGUuZ2V0KCksIG1fZ2VuZXJhdG9yRnJhbWVTeW1i
b2xUYWJsZUluZGV4KTsKKwogICAgIG1fY29kZUJsb2NrLT5zZXRJbnN0cnVjdGlvbnMoc3RkOjpt
YWtlX3VuaXF1ZTxVbmxpbmtlZEluc3RydWN0aW9uU3RyZWFtPihtX2luc3RydWN0aW9ucykpOwog
CiAgICAgbV9jb2RlQmxvY2stPnNocmlua1RvRml0KCk7CkBAIC0yNjIsMTAgKzI2NywxNCBAQCBC
eXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUq
IGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAgIGJvb2wgc2hvdWxkQ2FwdHVyZUFsbE9mVGhlVGhp
bmdzID0gbV9zaG91bGRFbWl0RGVidWdIb29rcyB8fCBjb2RlQmxvY2stPnVzZXNFdmFsKCk7CiAg
ICAgYm9vbCBuZWVkc0FyZ3VtZW50cyA9IChmdW5jdGlvbk5vZGUtPnVzZXNBcmd1bWVudHMoKSB8
fCBjb2RlQmxvY2stPnVzZXNFdmFsKCkgfHwgKGZ1bmN0aW9uTm9kZS0+dXNlc0Fycm93RnVuY3Rp
b24oKSAmJiAhY29kZUJsb2NrLT5pc0Fycm93RnVuY3Rpb24oKSAmJiBpc0FyZ3VtZW50c1VzZWRJ
bklubmVyQXJyb3dGdW5jdGlvbigpKSk7CiAKLSAgICAvLyBHZW5lcmF0b3IgbmV2ZXIgcHJvdmlk
ZXMgImFyZ3VtZW50cyIuICJhcmd1bWVudHMiIHJlZmVyZW5jZSB3aWxsIGJlIHJlc29sdmVkIGlu
IGFuIHVwcGVyIGdlbmVyYXRvciBmdW5jdGlvbiBzY29wZS4KLSAgICBpZiAocGFyc2VNb2RlID09
IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yQm9keU1vZGUpCisgICAgaWYgKHBhcnNlTW9kZSA9
PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckJvZHlNb2RlKSB7CisgICAgICAgIC8vIEdlbmVy
YXRvciBuZXZlciBwcm92aWRlcyAiYXJndW1lbnRzIi4gImFyZ3VtZW50cyIgcmVmZXJlbmNlIHdp
bGwgYmUgcmVzb2x2ZWQgaW4gYW4gdXBwZXIgZ2VuZXJhdG9yIGZ1bmN0aW9uIHNjb3BlLgogICAg
ICAgICBuZWVkc0FyZ3VtZW50cyA9IGZhbHNlOwogCisgICAgICAgIC8vIEdlbmVyYXRvciB1c2Vz
IHRoZSB2YXIgc2NvcGUgdG8gc2F2ZSBhbmQgcmVzdW1lIGl0cyB2YXJpYWJsZXMuIFNvIHRoZSBs
ZXhpY2FsIHNjb3BlIGlzIGFsd2F5cyBpbnN0YW50aWF0ZWQuCisgICAgICAgIHNob3VsZENhcHR1
cmVTb21lT2ZUaGVUaGluZ3MgPSB0cnVlOworICAgIH0KKwogICAgIGlmIChwYXJzZU1vZGUgPT0g
U291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JXcmFwcGVyRnVuY3Rpb25Nb2RlICYmIG5lZWRzQXJn
dW1lbnRzKSB7CiAgICAgICAgIC8vIEdlbmVyYXRvciBkb2VzIG5vdCBwcm92aWRlICJhcmd1bWVu
dHMiLiBJbnN0ZWFkLCB3cmFwcGluZyBHZW5lcmF0b3JGdW5jdGlvbiBwcm92aWRlcyAiYXJndW1l
bnRzIi4KICAgICAgICAgLy8gVGhpcyBpcyBiZWNhdXNlIGFyZ3VtZW50cyBvZiBhIGdlbmVyYXRv
ciBzaG91bGQgYmUgZXZhbHVhdGVkIGJlZm9yZSBzdGFydGluZyBpdC4KQEAgLTI3NCw3ICsyODMs
NyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlv
bk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAgICAgICAvLyAgICBmdW5jdGlvbiAqZ2Vu
KGEsIGIgPSBoZWxsbygpKQogICAgICAgICAvLyAgICB7CiAgICAgICAgIC8vICAgICAgICByZXR1
cm4gewotICAgICAgICAvLyAgICAgICAgICAgIEBnZW5lcmF0b3JOZXh0OiBmdW5jdGlvbiAoQGdl
bmVyYXRvciwgQGdlbmVyYXRvclN0YXRlLCBAZ2VuZXJhdG9yVmFsdWUsIEBnZW5lcmF0b3JSZXN1
bWVNb2RlKQorICAgICAgICAvLyAgICAgICAgICAgIEBnZW5lcmF0b3JOZXh0OiBmdW5jdGlvbiAo
QGdlbmVyYXRvciwgQGdlbmVyYXRvclN0YXRlLCBAZ2VuZXJhdG9yVmFsdWUsIEBnZW5lcmF0b3JS
ZXN1bWVNb2RlLCBAZ2VuZXJhdG9yRnJhbWUpCiAgICAgICAgIC8vICAgICAgICAgICAgewogICAg
ICAgICAvLyAgICAgICAgICAgICAgICBhcmd1bWVudHM7ICAvLyBUaGlzIGBhcmd1bWVudHNgIHNo
b3VsZCByZWZlcmVuY2UgdG8gdGhlIGdlbidzIGFyZ3VtZW50cy4KICAgICAgICAgLy8gICAgICAg
ICAgICAgICAgLi4uCkBAIC0zMDMsMjggKzMxMiwxNyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0
ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5r
ZQogICAgICAgICByZXR1cm4gY2FwdHVyZXModWlkKSA/IFZhcktpbmQ6OlNjb3BlIDogVmFyS2lu
ZDo6U3RhY2s7CiAgICAgfTsKIAotICAgIGVtaXRFbnRlcigpOwotCi0gICAgYWxsb2NhdGVBbmRF
bWl0U2NvcGUoKTsKLQogICAgIG1fY2FsbGVlUmVnaXN0ZXIuc2V0SW5kZXgoQ2FsbEZyYW1lU2xv
dDo6Y2FsbGVlKTsKIAogICAgIGluaXRpYWxpemVQYXJhbWV0ZXJzKHBhcmFtZXRlcnMpOwogICAg
IEFTU0VSVCghKGlzU2ltcGxlUGFyYW1ldGVyTGlzdCAmJiBtX3Jlc3RQYXJhbWV0ZXIpKTsKIAot
ICAgIC8vIEJlZm9yZSBlbWl0dGluZyBhIHNjb3BlIGNyZWF0aW9uLCBlbWl0IGEgZ2VuZXJhdG9y
IHByb2xvZ3VlIHRoYXQgY29udGFpbnMganVtcCBiYXNlZCBvbiBhIGdlbmVyYXRvcidzIHN0YXRl
LgotICAgIGlmIChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JCb2R5TW9k
ZSkgewotICAgICAgICBtX2dlbmVyYXRvclJlZ2lzdGVyID0gJm1fcGFyYW1ldGVyc1sxXTsKLQot
ICAgICAgICAvLyBKdW1wIHdpdGggc3dpdGNoX2ltbSBiYXNlZCBvbiBAZ2VuZXJhdG9yU3RhdGUu
IFdlIGRvbid0IHRha2UgdGhlIGNvcm91dGluZSBzdHlsZWQgZ2VuZXJhdG9yIGltcGxlbWVudGF0
aW9uLgotICAgICAgICAvLyBXaGVuIGNhbGxpbmcgYG5leHQoKWAsIHdlIHdvdWxkIGxpa2UgdG8g
ZW50ZXIgdGhlIHNhbWUgcHJvbG9ndWUgaW5zdGVhZCBvZiBqdW1waW5nIGJhc2VkIG9uIHRoZSBz
YXZlZCBpbnN0cnVjdGlvbiBwb2ludGVyLgotICAgICAgICAvLyBJdCdzIHN1aXRhbGUgZm9yIGlu
bGluaW5nLCBiZWNhdXNlIGl0IGp1c3QgaW5saW5lcyBvbmUgYG5leHRgIGZ1bmN0aW9uIGltcGxl
bWVudGF0aW9uLgorICAgIGVtaXRFbnRlcigpOwogCi0gICAgICAgIGJlZ2luR2VuZXJhdG9yKGdl
bmVyYXRvclN0YXRlUmVnaXN0ZXIoKSk7CisgICAgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJz
ZU1vZGU6OkdlbmVyYXRvckJvZHlNb2RlKQorICAgICAgICBtX2dlbmVyYXRvclJlZ2lzdGVyID0g
Jm1fcGFyYW1ldGVyc1sxXTsKIAotICAgICAgICAvLyBJbml0aWFsIHN0YXRlLgotICAgICAgICBl
bWl0R2VuZXJhdG9yU3RhdGVMYWJlbCgpOwotICAgIH0KKyAgICBhbGxvY2F0ZUFuZEVtaXRTY29w
ZSgpOwogCiAgICAgaWYgKGZ1bmN0aW9uTmFtZUlzSW5TY29wZShmdW5jdGlvbk5vZGUtPmlkZW50
KCksIGZ1bmN0aW9uTm9kZS0+ZnVuY3Rpb25Nb2RlKCkpKSB7CiAgICAgICAgIEFTU0VSVChwYXJz
ZU1vZGUgIT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JCb2R5TW9kZSk7CkBAIC02NDEsNiAr
NjM5LDE2IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1
bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtlCiAgICAgICAgICAgICBlbWl0TG9hZE5l
d1RhcmdldEZyb21BcnJvd0Z1bmN0aW9uTGV4aWNhbEVudmlyb25tZW50KCk7CiAgICAgfQogICAg
IAorICAgIC8vIFNldCB1cCB0aGUgbGV4aWNhbCBlbnZpcm9ubWVudCBzY29wZSBhcyB0aGUgZ2Vu
ZXJhdG9yIGZyYW1lLiBXZSBzdG9yZSB0aGUgc2F2ZWQgYW5kIHJlc3VtZWQgZ2VuZXJhdG9yIHJl
Z2lzdGVycyBpbnRvIHRoaXMgc2NvcGUgd2l0aCB0aGUgc3ltYm9sIGtleXMuCisgICAgLy8gU2lu
Y2UgdGhleSBhcmUgc3ltYm9sIGtleWVkLCB0aGVzZSB2YXJpYWJsZXMgY2Fubm90IGJlIHJlYWNo
ZWQgZnJvbSB0aGUgdXN1YWwgY29kZS4KKyAgICBpZiAoU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0
b3JCb2R5TW9kZSA9PSBwYXJzZU1vZGUpIHsKKyAgICAgICAgQVNTRVJUKG1fbGV4aWNhbEVudmly
b25tZW50UmVnaXN0ZXIpOworICAgICAgICBtX2dlbmVyYXRvckZyYW1lU3ltYm9sVGFibGUuc2V0
KCptX3ZtLCBmdW5jdGlvblN5bWJvbFRhYmxlKTsKKyAgICAgICAgbV9nZW5lcmF0b3JGcmFtZVN5
bWJvbFRhYmxlSW5kZXggPSBzeW1ib2xUYWJsZUNvbnN0YW50SW5kZXg7CisgICAgICAgIGVtaXRN
b3ZlKGdlbmVyYXRvckZyYW1lUmVnaXN0ZXIoKSwgbV9sZXhpY2FsRW52aXJvbm1lbnRSZWdpc3Rl
cik7CisgICAgICAgIGVtaXRQdXRCeUlkKGdlbmVyYXRvclJlZ2lzdGVyKCksIHByb3BlcnR5TmFt
ZXMoKS5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JGcmFtZVByaXZhdGVOYW1lKCksIGdlbmVyYXRv
ckZyYW1lUmVnaXN0ZXIoKSk7CisgICAgfQorCiAgICAgYm9vbCBzaG91bGRJbml0aWFsaXplQmxv
Y2tTY29wZWRGdW5jdGlvbnMgPSBmYWxzZTsgLy8gV2UgZ2VuZXJhdGUgdG9wLWxldmVsIGZ1bmN0
aW9uIGRlY2xhcmF0aW9ucyBpbiA6OmdlbmVyYXRlKCkuCiAgICAgcHVzaExleGljYWxTY29wZSht
X3Njb3BlTm9kZSwgVERaQ2hlY2tPcHRpbWl6YXRpb246Ok9wdGltaXplLCBOZXN0ZWRTY29wZVR5
cGU6OklzTm90TmVzdGVkLCBudWxscHRyLCBzaG91bGRJbml0aWFsaXplQmxvY2tTY29wZWRGdW5j
dGlvbnMpOwogfQpAQCAtMzY3Myw4ICszNjgxLDcgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdENvbXBsZXhQb3BTY29wZXMoUmVnaXN0ZXJJRCogc2NvcGUsIENvbnRyb2xGbG93Q29udGUK
ICAgICAgICAgICAgIGlmIChmbGlwVHJpZXMpIHsKICAgICAgICAgICAgICAgICB3aGlsZSAobV90
cnlDb250ZXh0U3RhY2suc2l6ZSgpICE9IGZpbmFsbHlDb250ZXh0LnRyeUNvbnRleHRTdGFja1Np
emUpIHsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKG1fdHJ5Q29udGV4dFN0YWNrLnNpemUo
KSA+IGZpbmFsbHlDb250ZXh0LnRyeUNvbnRleHRTdGFja1NpemUpOwotICAgICAgICAgICAgICAg
ICAgICBUcnlDb250ZXh0IGNvbnRleHQgPSBtX3RyeUNvbnRleHRTdGFjay5sYXN0KCk7Ci0gICAg
ICAgICAgICAgICAgICAgIG1fdHJ5Q29udGV4dFN0YWNrLnJlbW92ZUxhc3QoKTsKKyAgICAgICAg
ICAgICAgICAgICAgVHJ5Q29udGV4dCBjb250ZXh0ID0gbV90cnlDb250ZXh0U3RhY2sudGFrZUxh
c3QoKTsKICAgICAgICAgICAgICAgICAgICAgVHJ5UmFuZ2UgcmFuZ2U7CiAgICAgICAgICAgICAg
ICAgICAgIHJhbmdlLnN0YXJ0ID0gY29udGV4dC5zdGFydDsKICAgICAgICAgICAgICAgICAgICAg
cmFuZ2UuZW5kID0gYmVmb3JlRmluYWxseTsKQEAgLTM5NTgsNyArMzk2NSw3IEBAIHN0YXRpYyB2
b2lkIHByZXBhcmVKdW1wVGFibGVGb3JTdHJpbmdTd2l0Y2goVW5saW5rZWRTdHJpbmdKdW1wVGFi
bGUmIGp1bXBUYWJsZSwKICAgICAgICAgCiAgICAgICAgIEFTU0VSVChub2Rlc1tpXS0+aXNTdHJp
bmcoKSk7CiAgICAgICAgIFN0cmluZ0ltcGwqIGNsYXVzZSA9IHN0YXRpY19jYXN0PFN0cmluZ05v
ZGUqPihub2Rlc1tpXSktPnZhbHVlKCkuaW1wbCgpOwotICAgICAgICBqdW1wVGFibGUub2Zmc2V0
VGFibGUuYWRkKGNsYXVzZSwgbGFiZWxzW2ldLT5iaW5kKHN3aXRjaEFkZHJlc3MsIHN3aXRjaEFk
ZHJlc3MgKyAzKSk7CisgICAgICAgIGp1bXBUYWJsZS5vZmZzZXRUYWJsZS5hZGQoY2xhdXNlLCBV
bmxpbmtlZFN0cmluZ0p1bXBUYWJsZTo6T2Zmc2V0TG9jYXRpb24geyBsYWJlbHNbaV0tPmJpbmQo
c3dpdGNoQWRkcmVzcywgc3dpdGNoQWRkcmVzcyArIDMpIH0pOwogICAgIH0KIH0KIApAQCAtNDQ2
MCwzMSArNDQ2NywzMyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVxdWlyZU9iamVj
dENvZXJjaWJsZShSZWdpc3RlcklEKiB2YWx1ZSwgY29uc3QgU3RyaQogdm9pZCBCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdFlpZWxkUG9pbnQoUmVnaXN0ZXJJRCogYXJndW1lbnQpCiB7CiAgICAgUmVm
UHRyPExhYmVsPiBtZXJnZVBvaW50ID0gbmV3TGFiZWwoKTsKLSAgICBzaXplX3QgeWllbGRQb2lu
dEluZGV4ID0gbV9nZW5lcmF0b3JSZXN1bWVMYWJlbHMuc2l6ZSgpOwotICAgIGVtaXRHZW5lcmF0
b3JTdGF0ZUNoYW5nZSh5aWVsZFBvaW50SW5kZXgpOwotICAgIC8vIEZpcnN0IHlpZWxkIHBvaW50
IGlzIHVzZWQgZm9yIGluaXRpYWwgc2VxdWVuY2UuCi0gICAgdW5zaWduZWQgbGl2ZUNhbGxlZUxv
Y2Fsc0luZGV4ID0geWllbGRQb2ludEluZGV4IC0gMTsKLSAgICBlbWl0U2F2ZShtZXJnZVBvaW50
LmdldCgpLCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpOwotICAgIGVtaXRSZXR1cm4oYXJndW1lbnQp
OwotICAgIGVtaXRSZXN1bWUobWVyZ2VQb2ludC5nZXQoKSwgbGl2ZUNhbGxlZUxvY2Fsc0luZGV4
KTsKLX0KKyAgICB1bnNpZ25lZCB5aWVsZFBvaW50SW5kZXggPSBtX3lpZWxkUG9pbnRzKys7Cisg
ICAgZW1pdEdlbmVyYXRvclN0YXRlQ2hhbmdlKHlpZWxkUG9pbnRJbmRleCArIDEpOworCisgICAg
Ly8gU3BsaXQgdGhlIHRyeSByYW5nZSBoZXJlLgorICAgIFJlZlB0cjxMYWJlbD4gc2F2ZVBvaW50
ID0gZW1pdExhYmVsKG5ld0xhYmVsKCkuZ2V0KCkpOworICAgIGZvciAodW5zaWduZWQgaSA9IG1f
dHJ5Q29udGV4dFN0YWNrLnNpemUoKTsgaS0tOykgeworICAgICAgICBUcnlDb250ZXh0JiBjb250
ZXh0ID0gbV90cnlDb250ZXh0U3RhY2tbaV07CisgICAgICAgIFRyeVJhbmdlIHJhbmdlOworICAg
ICAgICByYW5nZS5zdGFydCA9IGNvbnRleHQuc3RhcnQ7CisgICAgICAgIHJhbmdlLmVuZCA9IHNh
dmVQb2ludDsKKyAgICAgICAgcmFuZ2UudHJ5RGF0YSA9IGNvbnRleHQudHJ5RGF0YTsKKyAgICAg
ICAgbV90cnlSYW5nZXMuYXBwZW5kKHJhbmdlKTsKKworICAgICAgICAvLyBUcnkgcmFuZ2Ugd2ls
bCBiZSByZXN0YXJlZCBhdCB0aGUgbWVyZ2UgcG9pbnQuCisgICAgICAgIGNvbnRleHQuc3RhcnQg
PSBtZXJnZVBvaW50OworICAgIH0KKyAgICBWZWN0b3I8VHJ5Q29udGV4dD4gc2F2ZWRUcnlDb250
ZXh0U3RhY2s7CisgICAgbV90cnlDb250ZXh0U3RhY2suc3dhcChzYXZlZFRyeUNvbnRleHRTdGFj
ayk7CiAKLXZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRTYXZlKExhYmVsKiBtZXJnZVBvaW50
LCB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpCi17Ci0gICAgc2l6ZV90IGJlZ2luID0g
aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpOwotICAgIGVtaXRPcGNvZGUob3Bfc2F2ZSk7Ci0gICAgaW5z
dHJ1Y3Rpb25zKCkuYXBwZW5kKG1fZ2VuZXJhdG9yUmVnaXN0ZXItPmluZGV4KCkpOwotICAgIGlu
c3RydWN0aW9ucygpLmFwcGVuZChsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpOwotICAgIGluc3RydWN0
aW9ucygpLmFwcGVuZChtZXJnZVBvaW50LT5iaW5kKGJlZ2luLCBpbnN0cnVjdGlvbnMoKS5zaXpl
KCkpKTsKLX0KKyAgICBlbWl0T3Bjb2RlKG9wX3lpZWxkKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5h
cHBlbmQoZ2VuZXJhdG9yRnJhbWVSZWdpc3RlcigpLT5pbmRleCgpKTsKKyAgICBpbnN0cnVjdGlv
bnMoKS5hcHBlbmQoeWllbGRQb2ludEluZGV4KTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQo
YXJndW1lbnQtPmluZGV4KCkpOwogCi12b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzdW1l
KExhYmVsKiBtZXJnZVBvaW50LCB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpCi17Ci0g
ICAgZW1pdEdlbmVyYXRvclN0YXRlTGFiZWwoKTsKLSAgICBlbWl0T3Bjb2RlKG9wX3Jlc3VtZSk7
Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fZ2VuZXJhdG9yUmVnaXN0ZXItPmluZGV4KCkp
OwotICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpOwotICAg
IGVtaXRMYWJlbChtZXJnZVBvaW50KTsKKyAgICAvLyBSZXN0b3JlIHRoZSB0cnkgY29udGV4dHMs
IHdoaWNoIHN0YXJ0IG9mZnNldCBpcyB1cGRhdGVkIHRvIHRoZSBtZXJnZSBwb2ludC4KKyAgICBt
X3RyeUNvbnRleHRTdGFjay5zd2FwKHNhdmVkVHJ5Q29udGV4dFN0YWNrKTsKKyAgICBlbWl0TGFi
ZWwobWVyZ2VQb2ludC5nZXQoKSk7CiB9CiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0WWllbGQoUmVnaXN0ZXJJRCogYXJndW1lbnQpCkBAIC00NjQxLDM5ICs0NjUwLDYgQEAg
dm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdlbmVyYXRvclN0YXRlQ2hhbmdlKGludDMyX3Qg
c3RhdGUpCiAgICAgZW1pdFB1dEJ5SWQoZ2VuZXJhdG9yUmVnaXN0ZXIoKSwgcHJvcGVydHlOYW1l
cygpLmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclN0YXRlUHJpdmF0ZU5hbWUoKSwgY29tcGxldGVk
U3RhdGUpOwogfQogCi12b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2VuZXJhdG9yU3RhdGVM
YWJlbCgpCi17Ci0gICAgUmVmUHRyPExhYmVsPiBsYWJlbCA9IG5ld0xhYmVsKCk7Ci0gICAgbV9n
ZW5lcmF0b3JSZXN1bWVMYWJlbHMuYXBwZW5kKGxhYmVsLmdldCgpKTsKLSAgICBlbWl0TGFiZWwo
bGFiZWwuZ2V0KCkpOwotfQotCi12b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpiZWdpbkdlbmVyYXRv
cihSZWdpc3RlcklEKiBzdGF0ZSkKLXsKLSAgICBiZWdpblN3aXRjaChzdGF0ZSwgU3dpdGNoSW5m
bzo6U3dpdGNoSW1tZWRpYXRlKTsKLX0KLQotdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW5kR2Vu
ZXJhdG9yKExhYmVsKiBkZWZhdWx0TGFiZWwpCi17Ci0gICAgU3dpdGNoSW5mbyBzd2l0Y2hJbmZv
ID0gbV9zd2l0Y2hDb250ZXh0U3RhY2subGFzdCgpOwotICAgIG1fc3dpdGNoQ29udGV4dFN0YWNr
LnJlbW92ZUxhc3QoKTsKLQotICAgIGluc3RydWN0aW9ucygpW3N3aXRjaEluZm8uYnl0ZWNvZGVP
ZmZzZXQgKyAxXSA9IG1fY29kZUJsb2NrLT5udW1iZXJPZlN3aXRjaEp1bXBUYWJsZXMoKTsKLSAg
ICBpbnN0cnVjdGlvbnMoKVtzd2l0Y2hJbmZvLmJ5dGVjb2RlT2Zmc2V0ICsgMl0gPSBkZWZhdWx0
TGFiZWwtPmJpbmQoc3dpdGNoSW5mby5ieXRlY29kZU9mZnNldCwgc3dpdGNoSW5mby5ieXRlY29k
ZU9mZnNldCArIDMpOwotCi0gICAgVW5saW5rZWRTaW1wbGVKdW1wVGFibGUmIGp1bXBUYWJsZSA9
IG1fY29kZUJsb2NrLT5hZGRTd2l0Y2hKdW1wVGFibGUoKTsKLSAgICBpbnQzMl90IHN3aXRjaEFk
ZHJlc3MgPSBzd2l0Y2hJbmZvLmJ5dGVjb2RlT2Zmc2V0OwotICAgIGp1bXBUYWJsZS5taW4gPSAw
OwotICAgIGp1bXBUYWJsZS5icmFuY2hPZmZzZXRzLnJlc2l6ZShtX2dlbmVyYXRvclJlc3VtZUxh
YmVscy5zaXplKCkgKyAxKTsKLSAgICBqdW1wVGFibGUuYnJhbmNoT2Zmc2V0cy5maWxsKDApOwot
ICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCBtX2dlbmVyYXRvclJlc3VtZUxhYmVscy5zaXpl
KCk7ICsraSkgewotICAgICAgICAvLyBXZSdyZSBlbWl0dGluZyB0aGlzIGFmdGVyIHRoZSBjbGF1
c2UgbGFiZWxzIHNob3VsZCBoYXZlIGJlZW4gZml4ZWQsIHNvCi0gICAgICAgIC8vIHRoZSBsYWJl
bHMgc2hvdWxkIG5vdCBiZSAiZm9yd2FyZCIgcmVmZXJlbmNlcwotICAgICAgICBBU1NFUlQoIW1f
Z2VuZXJhdG9yUmVzdW1lTGFiZWxzW2ldLT5pc0ZvcndhcmQoKSk7Ci0gICAgICAgIGp1bXBUYWJs
ZS5hZGQoaSwgbV9nZW5lcmF0b3JSZXN1bWVMYWJlbHNbaV0tPmJpbmQoc3dpdGNoQWRkcmVzcywg
c3dpdGNoQWRkcmVzcyArIDMpKTsKLSAgICB9Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIEpTQwogCiBu
YW1lc3BhY2UgV1RGIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAppbmRleCBmZmY3MTNhYTI1ZTcxZGYyY2Y0Y2I1MzA4
ZTYxNjlhNTNhZjY1MWJlLi5iMWI5NDNkYTVlMDY3ZWNkZDQ5Njc0ODExNDVjZTlkYjAwNzVhMmFi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5oCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgi
CiAjaW5jbHVkZSAiSW5zdHJ1Y3Rpb24uaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgorI2lu
Y2x1ZGUgIkpTR2VuZXJhdG9yRnVuY3Rpb24uaCIKICNpbmNsdWRlICJMYWJlbC5oIgogI2luY2x1
ZGUgIkxhYmVsU2NvcGUuaCIKICNpbmNsdWRlICJOb2Rlcy5oIgpAQCAtNjkwLDE4ICs2OTEsMTUg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW5kU3dpdGNoKHVpbnQzMl90IGNsYXVz
ZUNvdW50LCBSZWZQdHI8TGFiZWw+KiwgRXhwcmVzc2lvbk5vZGUqKiwgTGFiZWwqIGRlZmF1bHRM
YWJlbCwgaW50MzJfdCBtaW4sIGludDMyX3QgcmFuZ2UpOwogCiAgICAgICAgIHZvaWQgZW1pdFlp
ZWxkUG9pbnQoUmVnaXN0ZXJJRCopOwotICAgICAgICB2b2lkIGVtaXRTYXZlKExhYmVsKiBtZXJn
ZVBvaW50LCB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXgpOwotICAgICAgICB2b2lkIGVt
aXRSZXN1bWUoTGFiZWwqIG1lcmdlUG9pbnQsIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRl
eCk7CiAKICAgICAgICAgdm9pZCBlbWl0R2VuZXJhdG9yU3RhdGVMYWJlbCgpOwogICAgICAgICB2
b2lkIGVtaXRHZW5lcmF0b3JTdGF0ZUNoYW5nZShpbnQzMl90IHN0YXRlKTsKICAgICAgICAgUmVn
aXN0ZXJJRCogZW1pdFlpZWxkKFJlZ2lzdGVySUQqIGFyZ3VtZW50KTsKICAgICAgICAgUmVnaXN0
ZXJJRCogZW1pdERlbGVnYXRlWWllbGQoUmVnaXN0ZXJJRCogYXJndW1lbnQsIFRocm93YWJsZUV4
cHJlc3Npb25EYXRhKik7Ci0gICAgICAgIHZvaWQgYmVnaW5HZW5lcmF0b3IoUmVnaXN0ZXJJRCop
OwotICAgICAgICB2b2lkIGVuZEdlbmVyYXRvcihMYWJlbCogZGVmYXVsdExhYmVsKTsKLSAgICAg
ICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9yU3RhdGVSZWdpc3RlcigpIHsgcmV0dXJuICZtX3BhcmFt
ZXRlcnNbMl07IH0KLSAgICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJhdG9yVmFsdWVSZWdpc3Rlcigp
IHsgcmV0dXJuICZtX3BhcmFtZXRlcnNbM107IH0KLSAgICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJh
dG9yUmVzdW1lTW9kZVJlZ2lzdGVyKCkgeyByZXR1cm4gJm1fcGFyYW1ldGVyc1s0XTsgfQorICAg
ICAgICBSZWdpc3RlcklEKiBnZW5lcmF0b3JTdGF0ZVJlZ2lzdGVyKCkgeyByZXR1cm4gJm1fcGFy
YW1ldGVyc1tzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0
b3JBcmd1bWVudDo6U3RhdGUpXTsgfQorICAgICAgICBSZWdpc3RlcklEKiBnZW5lcmF0b3JWYWx1
ZVJlZ2lzdGVyKCkgeyByZXR1cm4gJm1fcGFyYW1ldGVyc1tzdGF0aWNfY2FzdDxpbnQzMl90PihK
U0dlbmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JBcmd1bWVudDo6VmFsdWUpXTsgfQorICAgICAg
ICBSZWdpc3RlcklEKiBnZW5lcmF0b3JSZXN1bWVNb2RlUmVnaXN0ZXIoKSB7IHJldHVybiAmbV9w
YXJhbWV0ZXJzW3N0YXRpY19jYXN0PGludDMyX3Q+KEpTR2VuZXJhdG9yRnVuY3Rpb246OkdlbmVy
YXRvckFyZ3VtZW50OjpSZXN1bWVNb2RlKV07IH0KKyAgICAgICAgUmVnaXN0ZXJJRCogZ2VuZXJh
dG9yRnJhbWVSZWdpc3RlcigpIHsgcmV0dXJuICZtX3BhcmFtZXRlcnNbc3RhdGljX2Nhc3Q8aW50
MzJfdD4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6R2VuZXJhdG9yQXJndW1lbnQ6OkZyYW1lKV07IH0K
IAogICAgICAgICBDb2RlVHlwZSBjb2RlVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZVR5cGU7
IH0KIApAQCAtOTI5LDcgKzkyNywxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgVmVjdG9y
PFN3aXRjaEluZm8+IG1fc3dpdGNoQ29udGV4dFN0YWNrOwogICAgICAgICBWZWN0b3I8UmVmUHRy
PEZvckluQ29udGV4dD4+IG1fZm9ySW5Db250ZXh0U3RhY2s7CiAgICAgICAgIFZlY3RvcjxUcnlD
b250ZXh0PiBtX3RyeUNvbnRleHRTdGFjazsKLSAgICAgICAgVmVjdG9yPFJlZlB0cjxMYWJlbD4+
IG1fZ2VuZXJhdG9yUmVzdW1lTGFiZWxzOworICAgICAgICB1bnNpZ25lZCBtX3lpZWxkUG9pbnRz
IHsgMCB9OworCisgICAgICAgIFN0cm9uZzxTeW1ib2xUYWJsZT4gbV9nZW5lcmF0b3JGcmFtZVN5
bWJvbFRhYmxlOworICAgICAgICBpbnQgbV9nZW5lcmF0b3JGcmFtZVN5bWJvbFRhYmxlSW5kZXgg
eyAwIH07CisKICAgICAgICAgZW51bSBGdW5jdGlvblZhcmlhYmxlVHlwZSA6IHVpbnQ4X3QgeyBO
b3JtYWxGdW5jdGlvblZhcmlhYmxlLCBHbG9iYWxGdW5jdGlvblZhcmlhYmxlIH07CiAgICAgICAg
IFZlY3RvcjxzdGQ6OnBhaXI8RnVuY3Rpb25NZXRhZGF0YU5vZGUqLCBGdW5jdGlvblZhcmlhYmxl
VHlwZT4+IG1fZnVuY3Rpb25zVG9Jbml0aWFsaXplOwogICAgICAgICBib29sIG1fbmVlZFRvSW5p
dGlhbGl6ZUFyZ3VtZW50cyB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKaW5kZXggZDBjOTllZmY1ZTc0ZjAyYzM4
M2NjNTExZGUxN2I4ZDJiNmU3N2U0Zi4uYmNkYWEyNzJjYjk1MDg1ODYwOGNhMmE3NTdmN2M0NjRl
NDc2ZGZmNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9O
b2Rlc0NvZGVnZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Tm9kZXNDb2RlZ2VuLmNwcApAQCAtMzM3Nyw3ICszMzc3LDYgQEAgdm9pZCBGdW5jdGlvbk5vZGU6
OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKikK
ICAgICAgICAgUmVmUHRyPExhYmVsPiBkb25lID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7CiAgICAg
ICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoZG9uZS5nZXQoKSk7CiAgICAgICAgIGdlbmVyYXRvci5l
bWl0UmV0dXJuKGdlbmVyYXRvci5lbWl0TG9hZChudWxscHRyLCBqc1VuZGVmaW5lZCgpKSk7Ci0g
ICAgICAgIGdlbmVyYXRvci5lbmRHZW5lcmF0b3IoZG9uZS5nZXQoKSk7CiAgICAgICAgIGJyZWFr
OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVy
YXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAK
aW5kZXggY2UyMGQyODNhZDcwYjI3NmJlZWM5ZTBmNmM5Zjg2MGU4YTNkMDgyNS4uMDBjZDY0MWU3
N2FiMGIxOTFlM2M4NjQ3YmYzODcxYTIyYTkwNjBmZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCkBAIC00Miw4ICs0Miw4IEBACiAjaW5jbHVkZSAiRGly
ZWN0QXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiRlRMRm9yT1NSRW50cnlKSVRDb2RlLmgiCiAjaW5j
bHVkZSAiRlRMT1NSRW50cnkuaCIKLSNpbmNsdWRlICJIb3N0Q2FsbFJldHVyblZhbHVlLmgiCiAj
aW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCisjaW5jbHVkZSAiSG9zdENhbGxSZXR1cm5WYWx1ZS5o
IgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAi
SklURXhjZXB0aW9ucy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL0ludGVycHJldGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9JbnRlcnByZXRlci5jcHAKaW5kZXggMWFhZjE3NzIzZmUxZTg4MjBmNDc3YWIwODU0ODRiNWY1
ZjI3Njc5Ny4uMmYwZTZmMmZjN2U5OTY0M2JjYTJhOWY0NDgwNDhlZDg2NmMyOGZhYiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCkBA
IC02MDksNyArNjA5LDcgQEAgSlNTdHJpbmcqIEludGVycHJldGVyOjpzdGFja1RyYWNlQXNTdHJp
bmcoVk0mIHZtLCBjb25zdCBWZWN0b3I8U3RhY2tGcmFtZT4mIHN0YWMKICAgICByZXR1cm4ganNT
dHJpbmcoJnZtLCBidWlsZGVyLnRvU3RyaW5nKCkpOwogfQogCi1BTFdBWVNfSU5MSU5FIHN0YXRp
YyBIYW5kbGVySW5mbyogZmluZEV4Y2VwdGlvbkhhbmRsZXIoU3RhY2tWaXNpdG9yJiB2aXNpdG9y
LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgQ29kZUJsb2NrOjpSZXF1aXJlZEhhbmRsZXIgcmVxdWly
ZWRIYW5kbGVyKQorQUxXQVlTX0lOTElORSBzdGF0aWMgSGFuZGxlckluZm8qIGZpbmRFeGNlcHRp
b25IYW5kbGVyKFN0YWNrVmlzaXRvciYgdmlzaXRvciwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFJl
cXVpcmVkSGFuZGxlciByZXF1aXJlZEhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKGNvZGVCbG9jayk7
CiAjaWYgRU5BQkxFKERGR19KSVQpCkBAIC02NDMsNyArNjQzLDcgQEAgY2xhc3MgR2V0Q2F0Y2hI
YW5kbGVyRnVuY3RvciB7CiAgICAgICAgIGlmICghY29kZUJsb2NrKQogICAgICAgICAgICAgcmV0
dXJuIFN0YWNrVmlzaXRvcjo6Q29udGludWU7CiAKLSAgICAgICAgbV9oYW5kbGVyID0gZmluZEV4
Y2VwdGlvbkhhbmRsZXIodmlzaXRvciwgY29kZUJsb2NrLCBDb2RlQmxvY2s6OlJlcXVpcmVkSGFu
ZGxlcjo6Q2F0Y2hIYW5kbGVyKTsKKyAgICAgICAgbV9oYW5kbGVyID0gZmluZEV4Y2VwdGlvbkhh
bmRsZXIodmlzaXRvciwgY29kZUJsb2NrLCBSZXF1aXJlZEhhbmRsZXI6OkNhdGNoSGFuZGxlcik7
CiAgICAgICAgIGlmIChtX2hhbmRsZXIpCiAgICAgICAgICAgICByZXR1cm4gU3RhY2tWaXNpdG9y
OjpEb25lOwogCkBAIC02ODUsNyArNjg1LDcgQEAgY2xhc3MgVW53aW5kRnVuY3RvciB7CiAgICAg
ICAgIG1faGFuZGxlciA9IG51bGxwdHI7CiAgICAgICAgIGlmICghbV9pc1Rlcm1pbmF0aW9uKSB7
CiAgICAgICAgICAgICBpZiAobV9jb2RlQmxvY2sgJiYgIWlzV2ViQXNzZW1ibHlFeGVjdXRhYmxl
KG1fY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSkpCi0gICAgICAgICAgICAgICAgbV9oYW5k
bGVyID0gZmluZEV4Y2VwdGlvbkhhbmRsZXIodmlzaXRvciwgbV9jb2RlQmxvY2ssIENvZGVCbG9j
azo6UmVxdWlyZWRIYW5kbGVyOjpBbnlIYW5kbGVyKTsKKyAgICAgICAgICAgICAgICBtX2hhbmRs
ZXIgPSBmaW5kRXhjZXB0aW9uSGFuZGxlcih2aXNpdG9yLCBtX2NvZGVCbG9jaywgUmVxdWlyZWRI
YW5kbGVyOjpBbnlIYW5kbGVyKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChtX2hhbmRsZXIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0
ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCmlu
ZGV4IDc5YzdlNTMwMWJhODM5NmJjMDJkYzI0NWUwODFjN2Y3YTM3MzhlNmMuLjNkZjAwNjc3NmY2
MWE0YjViNGI3YzI0OGU3NWNhYjFhOGMzMDkzMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCkBAIC02NSw2ICs2NSw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgIHN0cnVjdCBIYW5kbGVySW5mbzsKICAgICBzdHJ1Y3QgSW5zdHJ1Y3Rpb247
CiAgICAgc3RydWN0IFByb3RvQ2FsbEZyYW1lOworICAgIHN0cnVjdCBVbmxpbmtlZEluc3RydWN0
aW9uOwogCiAgICAgZW51bSBVbndpbmRTdGFydCB7IFVud2luZEZyb21DdXJyZW50RnJhbWUsIFVu
d2luZEZyb21DYWxsZXJGcmFtZSB9OwogCkBAIC0yMDcsNyArMjA4LDEwIEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICAgICAgcmV0dXJuIG9wY29kZTsKICNlbmRpZgogICAgICAgICB9Ci0gICAg
ICAgIAorCisgICAgICAgIE9wY29kZUlEIGdldE9wY29kZUlEKGNvbnN0IEluc3RydWN0aW9uJik7
CisgICAgICAgIE9wY29kZUlEIGdldE9wY29kZUlEKGNvbnN0IFVubGlua2VkSW5zdHJ1Y3Rpb24m
KTsKKwogICAgICAgICBib29sIGlzT3Bjb2RlKE9wY29kZSk7CiAKICAgICAgICAgSlNWYWx1ZSBl
eGVjdXRlKFByb2dyYW1FeGVjdXRhYmxlKiwgQ2FsbEZyYW1lKiwgSlNPYmplY3QqIHRoaXNPYmop
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJl
dGVySW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJl
dGVySW5saW5lcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE3N2MxNTQ3OTBhNjdmYjQxY2M5ZTJkMDlhMWRiZGZk
ZGZhNTliZGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJw
cmV0ZXIvSW50ZXJwcmV0ZXJJbmxpbmVzLmgKQEAgLTAsMCArMSw0NSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNiBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisgKiBD
b3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lu
Y2x1ZGUgIkluc3RydWN0aW9uLmgiCisjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKKyNpbmNsdWRl
ICJVbmxpbmtlZENvZGVCbG9jay5oIgorCituYW1lc3BhY2UgSlNDIHsKKworaW5saW5lIE9wY29k
ZUlEIEludGVycHJldGVyOjpnZXRPcGNvZGVJRChjb25zdCBJbnN0cnVjdGlvbiYgaW5zdHJ1Y3Rp
b24pCit7CisgICAgcmV0dXJuIGdldE9wY29kZUlEKGluc3RydWN0aW9uLnUub3Bjb2RlKTsKK30K
KworaW5saW5lIE9wY29kZUlEIEludGVycHJldGVyOjpnZXRPcGNvZGVJRChjb25zdCBVbmxpbmtl
ZEluc3RydWN0aW9uJiBpbnN0cnVjdGlvbikKK3sKKyAgICByZXR1cm4gaW5zdHJ1Y3Rpb24udS5v
cGNvZGU7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3Bw
CmluZGV4IGIwMGRmYWM4YzE1YzU0N2QyN2ZjNjY3ZjVjNDU5MGVkMzk5ZGVlNDAuLjEyNDA1Zjdl
NTA0YWIzODkzZGQ5N2Q3YTkyOTEzYjA5NWExMTU5MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VC5jcHAKQEAgLTIzNSw4ICsyMzUsNiBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFz
cygpCiAgICAgICAgIERFRklORV9PUChvcF9nZXRfcmVzdF9sZW5ndGgpCiAgICAgICAgIERFRklO
RV9PUChvcF9jaGVja190ZHopCiAgICAgICAgIERFRklORV9PUChvcF9hc3NlcnQpCi0gICAgICAg
IERFRklORV9PUChvcF9zYXZlKQotICAgICAgICBERUZJTkVfT1Aob3BfcmVzdW1lKQogICAgICAg
ICBERUZJTkVfT1Aob3BfZGVidWcpCiAgICAgICAgIERFRklORV9PUChvcF9kZWxfYnlfaWQpCiAg
ICAgICAgIERFRklORV9PUChvcF9kZWxfYnlfdmFsKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKaW5k
ZXggYmI5N2RjMzViZGZjMDMzOTlhYTA1MTNhOWNhNzM1NWQwODMxYzYwZC4uNTFmY2Y2MGI5OWQ0
MGIwZTUzZGJjZDIyM2M1NjkyMDI1ZjE0ZWNmMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCkBA
IC00OTcsOCArNDk3LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9n
ZXRfcmVzdF9sZW5ndGgoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2NoZWNr
X3RkeihJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfYXNzZXJ0KEluc3RydWN0
aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9zYXZlKEluc3RydWN0aW9uKik7Ci0gICAgICAg
IHZvaWQgZW1pdF9vcF9yZXN1bWUoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29w
X2RlYnVnKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9kZWxfYnlfaWQoSW5z
dHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2RlbF9ieV92YWwoSW5zdHJ1Y3Rpb24q
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCmluZGV4IDdmN2M3NDUz
YmQzZDJkNTBlMTgwMTgzZjI5NzMxMTVmMTE5ZDg1MmYuLjJkYmU4NmM2MjRiYzg3ZWJmNzBiODAx
ZTBhMmNjY2VmNjUxNWJhMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3Bjb2Rlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVz
LmNwcApAQCAtMTQ5MiwxOCArMTQ5Miw2IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9yZXN0X2xl
bmd0aChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogI2VuZGlmCiB9CiAKLXZvaWQg
SklUOjplbWl0X29wX3NhdmUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKLXsKLSAg
ICBKSVRTbG93UGF0aENhbGwgc2xvd1BhdGhDYWxsKHRoaXMsIGN1cnJlbnRJbnN0cnVjdGlvbiwg
c2xvd19wYXRoX3NhdmUpOwotICAgIHNsb3dQYXRoQ2FsbC5jYWxsKCk7Ci19Ci0KLXZvaWQgSklU
OjplbWl0X29wX3Jlc3VtZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQotewotICAg
IEpJVFNsb3dQYXRoQ2FsbCBzbG93UGF0aENhbGwodGhpcywgY3VycmVudEluc3RydWN0aW9uLCBz
bG93X3BhdGhfcmVzdW1lKTsKLSAgICBzbG93UGF0aENhbGwuY2FsbCgpOwotfQotCiB9IC8vIG5h
bWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEVOQUJMRShKSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KaW5kZXggMDRhZjdmYTc5
YjNiNWQ1YTNjODdiNTE5M2Q2YzExNzc5MGJlZjVlNC4uZDg1YzdkZTA0MDc0OTQyYTBiNzg2ZjEz
OTNkOWMwNDg0ZDhiZDNkYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQpAQCAtMTcwOSwxNiArMTcwOSw4IEBAIF9sbGludF9v
cF9hc3NlcnQ6CiAgICAgZGlzcGF0Y2goMykKIAogCi1fbGxpbnRfb3Bfc2F2ZToKLSAgICB0cmFj
ZUV4ZWN1dGlvbigpCi0gICAgY2FsbE9wY29kZVNsb3dQYXRoKF9zbG93X3BhdGhfc2F2ZSkKLSAg
ICBkaXNwYXRjaCg0KQotCi0KLV9sbGludF9vcF9yZXN1bWU6Ci0gICAgdHJhY2VFeGVjdXRpb24o
KQotICAgIGNhbGxPcGNvZGVTbG93UGF0aChfc2xvd19wYXRoX3Jlc3VtZSkKLSAgICBkaXNwYXRj
aCgzKQorX2xsaW50X29wX3lpZWxkOgorICAgIG5vdFN1cHBvcnRlZCgpCiAKIAogX2xsaW50X29w
X2NyZWF0ZV9sZXhpY2FsX2Vudmlyb25tZW50OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Q
YXJzZXIuY3BwCmluZGV4IGViZWE5OGU0ZWUxM2ZhMTJiZTA5NmJhOTJmNGQ0MTllMzRjZWQxNzAu
LjI2MTc0NWExOTAzMTdkZTc1OTEyZTNhOTIzZmE5ZjI4ODc0ODYzZDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKQEAgLTI2MCw3ICsyNjAsNyBAQCBTdHJpbmcgUGFy
c2VyPExleGVyVHlwZT46OnBhcnNlSW5uZXIoY29uc3QgSWRlbnRpZmllciYgY2FsbGVlTmFtZSwg
U291cmNlUGFyc2VNbwogICAgIGlmIChtX2xleGVyLT5pc1JlcGFyc2luZ0Z1bmN0aW9uKCkpIHsK
ICAgICAgICAgUGFyc2VyRnVuY3Rpb25JbmZvPEFTVEJ1aWxkZXI+IGZ1bmN0aW9uSW5mbzsKICAg
ICAgICAgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckJvZHlNb2Rl
KQotICAgICAgICAgICAgbV9wYXJhbWV0ZXJzID0gY3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhj
b250ZXh0KTsKKyAgICAgICAgICAgIG1fcGFyYW1ldGVycyA9IGNyZWF0ZUdlbmVyYXRvclBhcmFt
ZXRlcnMoY29udGV4dCwgZnVuY3Rpb25JbmZvLnBhcmFtZXRlckNvdW50KTsKICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgbV9wYXJhbWV0ZXJzID0gcGFyc2VGdW5jdGlvblBhcmFtZXRlcnMoY29u
dGV4dCwgcGFyc2VNb2RlLCBmdW5jdGlvbkluZm8pOwogCkBAIC01MTIsMTAgKzUxMiw5IEBAIHRl
bXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVNvdXJjZUVsZW1lbnRzIFBhcnNlcjxMZXhl
clR5cGU+OjpwYXJzZUdlbmVyYXRvCiAKICAgICBQYXJzZXJGdW5jdGlvbkluZm88VHJlZUJ1aWxk
ZXI+IGluZm87CiAgICAgaW5mby5uYW1lID0gJm1fdm0tPnByb3BlcnR5TmFtZXMtPm51bGxJZGVu
dGlmaWVyOwotICAgIGNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMoY29udGV4dCk7CisgICAgY3Jl
YXRlR2VuZXJhdG9yUGFyYW1ldGVycyhjb250ZXh0LCBpbmZvLnBhcmFtZXRlckNvdW50KTsKICAg
ICBpbmZvLnN0YXJ0T2Zmc2V0ID0gcGFyYW1ldGVyc1N0YXJ0OwogICAgIGluZm8uc3RhcnRMaW5l
ID0gdG9rZW5MaW5lKCk7Ci0gICAgaW5mby5wYXJhbWV0ZXJDb3VudCA9IDQ7IC8vIGdlbmVyYXRv
ciwgc3RhdGUsIHZhbHVlLCByZXN1bWUgbW9kZQogCiAgICAgewogICAgICAgICBBdXRvUG9wU2Nv
cGVSZWYgZ2VuZXJhdG9yQm9keVNjb3BlKHRoaXMsIHB1c2hTY29wZSgpKTsKQEAgLTE5MDMsMzIg
KzE5MDIsMzAgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4gdGVtcGxhdGUgPGNsYXNz
IFRyZWVCdWlsZGVyLCBjbGFzcyBGdW5jdGlvbkluZm9UeXAKIH0KIAogdGVtcGxhdGUgPHR5cGVu
YW1lIExleGVyVHlwZT4KLXRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gdHlwZW5hbWUgVHJl
ZUJ1aWxkZXI6OkZvcm1hbFBhcmFtZXRlckxpc3QgUGFyc2VyPExleGVyVHlwZT46OmNyZWF0ZUdl
bmVyYXRvclBhcmFtZXRlcnMoVHJlZUJ1aWxkZXImIGNvbnRleHQpCit0ZW1wbGF0ZSA8Y2xhc3Mg
VHJlZUJ1aWxkZXI+IHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpGb3JtYWxQYXJhbWV0ZXJMaXN0IFBh
cnNlcjxMZXhlclR5cGU+OjpjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKFRyZWVCdWlsZGVyJiBj
b250ZXh0LCB1bnNpZ25lZCYgcGFyYW1ldGVyQ291bnQpCiB7CiAgICAgYXV0byBwYXJhbWV0ZXJz
ID0gY29udGV4dC5jcmVhdGVGb3JtYWxQYXJhbWV0ZXJMaXN0KCk7CiAKICAgICBKU1Rva2VuTG9j
YXRpb24gbG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKICAgICBKU1RleHRQb3NpdGlvbiBwb3Np
dGlvbiA9IHRva2VuU3RhcnRQb3NpdGlvbigpOwogCi0gICAgLy8gQGdlbmVyYXRvcgotICAgIGRl
Y2xhcmVQYXJhbWV0ZXIoJm1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdlbmVy
YXRvclByaXZhdGVOYW1lKCkpOwotICAgIGF1dG8gZ2VuZXJhdG9yID0gY29udGV4dC5jcmVhdGVC
aW5kaW5nTG9jYXRpb24obG9jYXRpb24sIG1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1l
cygpLmdlbmVyYXRvclByaXZhdGVOYW1lKCksIHBvc2l0aW9uLCBwb3NpdGlvbiwgQXNzaWdubWVu
dENvbnRleHQ6OkRlY2xhcmF0aW9uU3RhdGVtZW50KTsKLSAgICBjb250ZXh0LmFwcGVuZFBhcmFt
ZXRlcihwYXJhbWV0ZXJzLCBnZW5lcmF0b3IsIDApOworICAgIGF1dG8gYWRkUGFyYW1ldGVyID0g
WyZdKGNvbnN0IElkZW50aWZpZXImIG5hbWUpIHsKKyAgICAgICAgZGVjbGFyZVBhcmFtZXRlcigm
bmFtZSk7CisgICAgICAgIGF1dG8gYmluZGluZyA9IGNvbnRleHQuY3JlYXRlQmluZGluZ0xvY2F0
aW9uKGxvY2F0aW9uLCBuYW1lLCBwb3NpdGlvbiwgcG9zaXRpb24sIEFzc2lnbm1lbnRDb250ZXh0
OjpEZWNsYXJhdGlvblN0YXRlbWVudCk7CisgICAgICAgIGNvbnRleHQuYXBwZW5kUGFyYW1ldGVy
KHBhcmFtZXRlcnMsIGJpbmRpbmcsIDApOworICAgICAgICArK3BhcmFtZXRlckNvdW50OworICAg
IH07CiAKKyAgICAvLyBAZ2VuZXJhdG9yCisgICAgYWRkUGFyYW1ldGVyKG1fdm0tPnByb3BlcnR5
TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclByaXZhdGVOYW1lKCkpOwogICAgIC8vIEBn
ZW5lcmF0b3JTdGF0ZQotICAgIGRlY2xhcmVQYXJhbWV0ZXIoJm1fdm0tPnByb3BlcnR5TmFtZXMt
PmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclN0YXRlUHJpdmF0ZU5hbWUoKSk7Ci0gICAgYXV0byBn
ZW5lcmF0b3JTdGF0ZSA9IGNvbnRleHQuY3JlYXRlQmluZGluZ0xvY2F0aW9uKGxvY2F0aW9uLCBt
X3ZtLT5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JTdGF0ZVByaXZhdGVO
YW1lKCksIHBvc2l0aW9uLCBwb3NpdGlvbiwgQXNzaWdubWVudENvbnRleHQ6OkRlY2xhcmF0aW9u
U3RhdGVtZW50KTsKLSAgICBjb250ZXh0LmFwcGVuZFBhcmFtZXRlcihwYXJhbWV0ZXJzLCBnZW5l
cmF0b3JTdGF0ZSwgMCk7Ci0KKyAgICBhZGRQYXJhbWV0ZXIobV92bS0+cHJvcGVydHlOYW1lcy0+
YnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yU3RhdGVQcml2YXRlTmFtZSgpKTsKICAgICAvLyBAZ2Vu
ZXJhdG9yVmFsdWUKLSAgICBkZWNsYXJlUGFyYW1ldGVyKCZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5i
dWlsdGluTmFtZXMoKS5nZW5lcmF0b3JWYWx1ZVByaXZhdGVOYW1lKCkpOwotICAgIGF1dG8gZ2Vu
ZXJhdG9yVmFsdWUgPSBjb250ZXh0LmNyZWF0ZUJpbmRpbmdMb2NhdGlvbihsb2NhdGlvbiwgbV92
bS0+cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yVmFsdWVQcml2YXRlTmFt
ZSgpLCBwb3NpdGlvbiwgcG9zaXRpb24sIEFzc2lnbm1lbnRDb250ZXh0OjpEZWNsYXJhdGlvblN0
YXRlbWVudCk7Ci0gICAgY29udGV4dC5hcHBlbmRQYXJhbWV0ZXIocGFyYW1ldGVycywgZ2VuZXJh
dG9yVmFsdWUsIDApOwotCisgICAgYWRkUGFyYW1ldGVyKG1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1
aWx0aW5OYW1lcygpLmdlbmVyYXRvclZhbHVlUHJpdmF0ZU5hbWUoKSk7CiAgICAgLy8gQGdlbmVy
YXRvclJlc3VtZU1vZGUKLSAgICBkZWNsYXJlUGFyYW1ldGVyKCZtX3ZtLT5wcm9wZXJ0eU5hbWVz
LT5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JSZXN1bWVNb2RlUHJpdmF0ZU5hbWUoKSk7Ci0gICAg
YXV0byBnZW5lcmF0b3JSZXN1bWVNb2RlID0gY29udGV4dC5jcmVhdGVCaW5kaW5nTG9jYXRpb24o
bG9jYXRpb24sIG1fdm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclJl
c3VtZU1vZGVQcml2YXRlTmFtZSgpLCBwb3NpdGlvbiwgcG9zaXRpb24sIEFzc2lnbm1lbnRDb250
ZXh0OjpEZWNsYXJhdGlvblN0YXRlbWVudCk7Ci0gICAgY29udGV4dC5hcHBlbmRQYXJhbWV0ZXIo
cGFyYW1ldGVycywgZ2VuZXJhdG9yUmVzdW1lTW9kZSwgMCk7CisgICAgYWRkUGFyYW1ldGVyKG1f
dm0tPnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdlbmVyYXRvclJlc3VtZU1vZGVQcml2
YXRlTmFtZSgpKTsKKyAgICAvLyBAZ2VuZXJhdG9yRnJhbWUKKyAgICBhZGRQYXJhbWV0ZXIobV92
bS0+cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yRnJhbWVQcml2YXRlTmFt
ZSgpKTsKIAogICAgIHJldHVybiBwYXJhbWV0ZXJzOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvUGFyc2VyLmgKaW5kZXggMzkyMDQwNGU4YmE1MjBiMjJlNGVjZDI3NzgxYzEzZGY4MTkwNzQz
My4uNTBlMTM5MWI1ZmQwM2RkNWU3NzhiOGZkYjU5MjNhYTc5OGFlZDEyMyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCkBAIC0xNDI2LDcgKzE0MjYsNyBAQCBjbGFzcyBQYXJz
ZXIgewogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc0Fycm93RnVuY3Rpb25QYXJhbWV0ZXJzKCk7
CiAgICAgCiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyLCBjbGFzcyBGdW5jdGlvbklu
Zm9UeXBlPiBORVZFUl9JTkxJTkUgdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkZvcm1hbFBhcmFtZXRl
ckxpc3QgcGFyc2VGdW5jdGlvblBhcmFtZXRlcnMoVHJlZUJ1aWxkZXImLCBTb3VyY2VQYXJzZU1v
ZGUsIEZ1bmN0aW9uSW5mb1R5cGUmKTsKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+
IE5FVkVSX0lOTElORSB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6Rm9ybWFsUGFyYW1ldGVyTGlzdCBj
cmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKFRyZWVCdWlsZGVyJik7CisgICAgdGVtcGxhdGUgPGNs
YXNzIFRyZWVCdWlsZGVyPiBORVZFUl9JTkxJTkUgdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkZvcm1h
bFBhcmFtZXRlckxpc3QgY3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhUcmVlQnVpbGRlciYsIHVu
c2lnbmVkJiBwYXJhbWV0ZXJDb3VudCk7CiAKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxk
ZXI+IE5FVkVSX0lOTElORSBUcmVlQ2xhc3NFeHByZXNzaW9uIHBhcnNlQ2xhc3MoVHJlZUJ1aWxk
ZXImLCBGdW5jdGlvbk5hbWVSZXF1aXJlbWVudHMsIFBhcnNlckNsYXNzSW5mbzxUcmVlQnVpbGRl
cj4mKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9u
U2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQ
YXRocy5jcHAKaW5kZXggYTliNzU1ZTZjOWFlOWI5OGE2MjI5MzU0NmVlNTdjYTgxZWM5YzMyYy4u
MmU4NjhkY2IyZDcxZmU3Y2YyOGU5NTBmMDVjNzU4YmE4MDVjYzMyNiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCkBAIC0zNyw3ICsz
Nyw2IEBACiAjaW5jbHVkZSAiRXJyb3IuaCIKICNpbmNsdWRlICJFcnJvckhhbmRsaW5nU2NvcGUu
aCIKICNpbmNsdWRlICJFeGNlcHRpb25GdXp6LmgiCi0jaW5jbHVkZSAiR2VuZXJhdG9yRnJhbWUu
aCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJIb3N0Q2FsbFJldHVyblZh
bHVlLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKQEAgLTc1MywzOCArNzUyLDYgQEAgU0xP
V19QQVRIX0RFQ0woc2xvd19wYXRoX2Fzc2VydCkKICAgICBFTkQoKTsKIH0KIAotU0xPV19QQVRI
X0RFQ0woc2xvd19wYXRoX3NhdmUpCi17Ci0gICAgLy8gT25seSBzYXZlIHZhcmlhYmxlcyBhbmQg
dGVtcG9yYXJ5IHJlZ2lzdGVycy4gVGhlIHNjb3BlIHJlZ2lzdGVycyBhcmUgaW5jbHVkZWQgaW4g
dGhlbS4KLSAgICAvLyBCdXQgcGFyYW1ldGVycyBhcmUgbm90IGluY2x1ZGVkLiBCZWNhdXNlIHRo
ZSBnZW5lcmF0b3IgaW1wbGVtZW50YXRpb24gcmVwbGFjZXMgdGhlIHZhbHVlcyBvZiBwYXJhbWV0
ZXJzIG9uIGVhY2ggZ2VuZXJhdG9yLm5leHQoKSBjYWxsLgotICAgIEJFR0lOKCk7Ci0gICAgSlNW
YWx1ZSBnZW5lcmF0b3IgPSBPUCgxKS5qc1ZhbHVlKCk7Ci0gICAgR2VuZXJhdG9yRnJhbWUqIGZy
YW1lID0gbnVsbHB0cjsKLSAgICBKU1ZhbHVlIHZhbHVlID0gZ2VuZXJhdG9yLmdldChleGVjLCBl
eGVjLT5wcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCkuZ2VuZXJhdG9yRnJhbWVQcml2YXRl
TmFtZSgpKTsKLSAgICBpZiAoIXZhbHVlLmlzTnVsbCgpKQotICAgICAgICBmcmFtZSA9IGpzQ2Fz
dDxHZW5lcmF0b3JGcmFtZSo+KHZhbHVlKTsKLSAgICBlbHNlIHsKLSAgICAgICAgLy8gRklYTUU6
IE9uY2UgSlNHZW5lcmF0b3Igc3BlY2lhbGl6ZWQgb2JqZWN0IGlzIGludHJvZHVjZWQsIHRoaXMg
R2VuZXJhdG9yRnJhbWUgc2hvdWxkIGJlIGVtYmVkZWQgaW50byBpdCB0byBhdm9pZCBhbGxvY2F0
aW9ucy4KLSAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE1MTU0NQotICAgICAgICBmcmFtZSA9IEdlbmVyYXRvckZyYW1lOjpjcmVhdGUoZXhlYy0+dm0o
KSwgIGV4ZWMtPmNvZGVCbG9jaygpLT5udW1DYWxsZWVMb2NhbHMoKSk7Ci0gICAgICAgIFB1dFBy
b3BlcnR5U2xvdCBzbG90KGdlbmVyYXRvciwgdHJ1ZSwgUHV0UHJvcGVydHlTbG90OjpQdXRCeUlk
KTsKLSAgICAgICAgYXNPYmplY3QoZ2VuZXJhdG9yKS0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSkt
PnB1dChhc09iamVjdChnZW5lcmF0b3IpLCBleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuYnVp
bHRpbk5hbWVzKCkuZ2VuZXJhdG9yRnJhbWVQcml2YXRlTmFtZSgpLCBmcmFtZSwgc2xvdCk7Ci0g
ICAgfQotICAgIHVuc2lnbmVkIGxpdmVDYWxsZWVMb2NhbHNJbmRleCA9IHBjWzJdLnUudW5zaWdu
ZWRWYWx1ZTsKLSAgICBmcmFtZS0+c2F2ZShleGVjLCBleGVjLT5jb2RlQmxvY2soKS0+bGl2ZUNh
bGxlZUxvY2Fsc0F0WWllbGQobGl2ZUNhbGxlZUxvY2Fsc0luZGV4KSk7Ci0gICAgRU5EKCk7Ci19
Ci0KLVNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9yZXN1bWUpCi17Ci0gICAgQkVHSU4oKTsKLSAg
ICBKU1ZhbHVlIGdlbmVyYXRvciA9IE9QKDEpLmpzVmFsdWUoKTsKLSAgICBHZW5lcmF0b3JGcmFt
ZSogZnJhbWUgPSBqc0Nhc3Q8R2VuZXJhdG9yRnJhbWUqPihnZW5lcmF0b3IuZ2V0KGV4ZWMsIGV4
ZWMtPnByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5nZW5lcmF0b3JGcmFtZVByaXZhdGVO
YW1lKCkpKTsKLSAgICB1bnNpZ25lZCBsaXZlQ2FsbGVlTG9jYWxzSW5kZXggPSBwY1syXS51LnVu
c2lnbmVkVmFsdWU7Ci0gICAgZnJhbWUtPnJlc3VtZShleGVjLCBleGVjLT5jb2RlQmxvY2soKS0+
bGl2ZUNhbGxlZUxvY2Fsc0F0WWllbGQobGl2ZUNhbGxlZUxvY2Fsc0luZGV4KSk7Ci0gICAgRU5E
KCk7Ci19Ci0KIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9jcmVhdGVfbGV4aWNhbF9lbnZpcm9u
bWVudCkKIHsKICAgICBCRUdJTigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21tb25TbG93UGF0aHMuaAppbmRleCA2NDAxYTYxNGQ1NjExNjYzNTY5YjE4YTAyNzJiMjhh
YzM1Mjg2YTgyLi4zZDljMTVmNWFmMGM3NTdkZGExMDUzMzkxOTkwZjU0NjM4ODY4MWI1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaApAQCAt
MjQ4LDggKzI0OCw2IEBAIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfbmV4dF9nZW5l
cmljX2VudW1lcmF0b3JfcG5hbWUpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF90
b19pbmRleF9zdHJpbmcpOwogU0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF9wcm9maWxl
X3R5cGVfY2xlYXJfbG9nKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfYXNzZXJ0
KTsKLVNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfc2F2ZSk7Ci1TTE9XX1BBVEhfSElE
REVOX0RFQ0woc2xvd19wYXRoX3Jlc3VtZSk7CiBTTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19w
YXRoX2NyZWF0ZV9sZXhpY2FsX2Vudmlyb25tZW50KTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChz
bG93X3BhdGhfcHVzaF93aXRoX3Njb3BlKTsKIFNMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3Bh
dGhfcmVzb2x2ZV9zY29wZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9HZW5lcmF0b3JGcmFtZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9H
ZW5lcmF0b3JGcmFtZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVmNmVhN2Ex
MDAyNThjM2VjZTA0ZGFhYjQzYmRhYTg1MWVjOGY3MTUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2Vu
ZXJhdG9yRnJhbWUuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsOTcgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+Lgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiR2VuZXJhdG9yRnJhbWUu
aCIKLQotI2luY2x1ZGUgIkNvZGVCbG9jay5oIgotI2luY2x1ZGUgIkhlYXBJdGVyYXRpb25TY29w
ZS5oIgotI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCi0jaW5jbHVkZSAiSlNDZWxsSW5s
aW5lcy5oIgotI2luY2x1ZGUgIlNsb3RWaXNpdG9ySW5saW5lcy5oIgotI2luY2x1ZGUgIlN0cnVj
dHVyZUlubGluZXMuaCIKLQotbmFtZXNwYWNlIEpTQyB7Ci0KLWNvbnN0IENsYXNzSW5mbyBHZW5l
cmF0b3JGcmFtZTo6c19pbmZvID0geyAiR2VuZXJhdG9yRnJhbWUiLCBudWxscHRyLCBudWxscHRy
LCBDUkVBVEVfTUVUSE9EX1RBQkxFKEdlbmVyYXRvckZyYW1lKSB9OwotCi1HZW5lcmF0b3JGcmFt
ZTo6R2VuZXJhdG9yRnJhbWUoVk0mIHZtLCBzaXplX3QgbnVtYmVyT2ZDYWxsZWVMb2NhbHMpCi0g
ICAgOiBCYXNlKHZtLCB2bS5nZW5lcmF0b3JGcmFtZVN0cnVjdHVyZS5nZXQoKSkKLSAgICAsIG1f
bnVtYmVyT2ZDYWxsZWVMb2NhbHMobnVtYmVyT2ZDYWxsZWVMb2NhbHMpCi17Ci19Ci0KLXZvaWQg
R2VuZXJhdG9yRnJhbWU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKLXsKLSAgICBCYXNlOjpmaW5p
c2hDcmVhdGlvbih2bSk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX251bWJlck9mQ2Fs
bGVlTG9jYWxzOyArK2kpCi0gICAgICAgIGxvY2FsQXQoaSkuY2xlYXIoKTsKLX0KLQotU3RydWN0
dXJlKiBHZW5lcmF0b3JGcmFtZTo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCi17Ci0gICAgcmV0dXJuIFN0cnVj
dHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oQ2VsbFR5
cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKLX0KLQotR2VuZXJhdG9yRnJhbWUqIEdlbmVy
YXRvckZyYW1lOjpjcmVhdGUoVk0mIHZtLCBzaXplX3QgbnVtYmVyT2ZMb2NhbHMpCi17Ci0gICAg
R2VuZXJhdG9yRnJhbWUqIHJlc3VsdCA9Ci0gICAgICAgIG5ldyAoCi0gICAgICAgICAgICBOb3RO
dWxsLAotICAgICAgICAgICAgYWxsb2NhdGVDZWxsPEdlbmVyYXRvckZyYW1lPih2bS5oZWFwLCBh
bGxvY2F0aW9uU2l6ZUZvckxvY2FscyhudW1iZXJPZkxvY2FscykpKQotICAgICAgICBHZW5lcmF0
b3JGcmFtZSh2bSwgbnVtYmVyT2ZMb2NhbHMpOwotICAgIHJlc3VsdC0+ZmluaXNoQ3JlYXRpb24o
dm0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLXZvaWQgR2VuZXJhdG9yRnJhbWU6OnNhdmUo
RXhlY1N0YXRlKiBleGVjLCBjb25zdCBGYXN0Qml0VmVjdG9yJiBsaXZlQ2FsbGVlTG9jYWxzKQot
ewotICAgIC8vIE9ubHkgc2F2ZSBjYWxsZWUgbG9jYWxzLgotICAgIC8vIEV2ZXJ5IHRpbWUgYSBn
ZW5lcmF0b3IgaXMgY2FsbGVkIChvciByZXN1bWVkKSwgcGFyYW1ldGVycyBzaG91bGQgYmUgcmVw
bGFjZWQuCi0gICAgQVNTRVJUKGxpdmVDYWxsZWVMb2NhbHMubnVtQml0cygpIDw9IG1fbnVtYmVy
T2ZDYWxsZWVMb2NhbHMpOwotICAgIGxpdmVDYWxsZWVMb2NhbHMuZm9yRWFjaFNldEJpdChbJl0o
c2l6ZV90IGluZGV4KSB7Ci0gICAgICAgIGxvY2FsQXQoaW5kZXgpLnNldChleGVjLT52bSgpLCB0
aGlzLCBleGVjLT51bmNoZWNrZWRSKHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGluZGV4KSkuanNW
YWx1ZSgpKTsKLSAgICB9KTsKLX0KLQotdm9pZCBHZW5lcmF0b3JGcmFtZTo6cmVzdW1lKEV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgRmFzdEJpdFZlY3RvciYgbGl2ZUNhbGxlZUxvY2FscykKLXsKLSAg
ICAvLyBPbmx5IHJlc3VtZSBjYWxsZWUgbG9jYWxzLgotICAgIC8vIEV2ZXJ5IHRpbWUgYSBnZW5l
cmF0b3IgaXMgY2FsbGVkIChvciByZXN1bWVkKSwgcGFyYW1ldGVycyBzaG91bGQgYmUgcmVwbGFj
ZWQuCi0gICAgbGl2ZUNhbGxlZUxvY2Fscy5mb3JFYWNoU2V0Qml0KFsmXShzaXplX3QgaW5kZXgp
IHsKLSAgICAgICAgZXhlYy0+dW5jaGVja2VkUih2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChpbmRl
eCkpID0gbG9jYWxBdChpbmRleCkuZ2V0KCk7Ci0gICAgICAgIGxvY2FsQXQoaW5kZXgpLmNsZWFy
KCk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgR2VuZXJhdG9yRnJhbWU6OnZpc2l0Q2hpbGRyZW4oSlND
ZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKLXsKLSAgICBHZW5lcmF0b3JGcmFtZSog
dGhpc09iamVjdCA9IGpzQ2FzdDxHZW5lcmF0b3JGcmFtZSo+KGNlbGwpOwotICAgIEJhc2U6OnZp
c2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7Ci0gICAgLy8gU2luY2Ugb25seSB0cnVl
IGNlbGwgcG9pbnRlcnMgYXJlIHN0b3JlZCBhcyBhIGNlbGwsIHdlIGNhbiBzYWZlbHkgbWFyayB0
aGVtLgotICAgIHZpc2l0b3IuYXBwZW5kVmFsdWVzKHRoaXNPYmplY3QtPmxvY2FscygpLCB0aGlz
T2JqZWN0LT5tX251bWJlck9mQ2FsbGVlTG9jYWxzKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgSlND
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGcmFt
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnJhbWUuaApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2Q1NDViMTQ3ZGQ0YWJmYjJiYmI5YjVhNzE5NGU4
Zjc0ODQxYzQ5YS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmF0b3JGcmFtZS5oCisrKyAvZGV2
L251bGwKQEAgLTEsOTAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2Ug
U3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIEdlbmVy
YXRvckZyYW1lX2gKLSNkZWZpbmUgR2VuZXJhdG9yRnJhbWVfaAotCi0jaW5jbHVkZSAiSlNDZWxs
LmgiCi0jaW5jbHVkZSA8d3RmL0Zhc3RCaXRWZWN0b3IuaD4KLQotbmFtZXNwYWNlIEpTQyB7Ci0K
LWNsYXNzIEdlbmVyYXRvckZyYW1lIDogcHVibGljIEpTQ2VsbCB7Ci0gICAgZnJpZW5kIGNsYXNz
IEpJVDsKLSNpZiBFTkFCTEUoREZHX0pJVCkKLSAgICBmcmllbmQgY2xhc3MgREZHOjpTcGVjdWxh
dGl2ZUpJVDsKLSAgICBmcmllbmQgY2xhc3MgREZHOjpKSVRDb21waWxlcjsKLSNlbmRpZgotICAg
IGZyaWVuZCBjbGFzcyBWTTsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOwotICAg
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IFN0cnVjdHVyZUlzSW1tb3J0
YWwgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKLQotICAgIERFQ0xBUkVfRVhQT1JUX0lORk87Ci0K
LSAgICBzdGF0aWMgR2VuZXJhdG9yRnJhbWUqIGNyZWF0ZShWTSYsIHNpemVfdCBudW1iZXJPZkNh
bGxlZUxvY2Fscyk7Ci0KLSAgICBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiBsb2NhbHMoKQot
ICAgIHsKLSAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxXcml0ZUJhcnJpZXJCYXNlPFVua25v
d24+Kj4oYml0d2lzZV9jYXN0PGNoYXIqPih0aGlzKSArIG9mZnNldE9mTG9jYWxzKCkpOwotICAg
IH0KLQotICAgIFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4mIGxvY2FsQXQoc2l6ZV90IGluZGV4
KQotICAgIHsKLSAgICAgICAgQVNTRVJUKGluZGV4IDwgbV9udW1iZXJPZkNhbGxlZUxvY2Fscyk7
Ci0gICAgICAgIHJldHVybiBsb2NhbHMoKVtpbmRleF07Ci0gICAgfQotCi0gICAgc3RhdGljIHNp
emVfdCBvZmZzZXRPZkxvY2FscygpCi0gICAgewotICAgICAgICByZXR1cm4gV1RGOjpyb3VuZFVw
VG9NdWx0aXBsZU9mPHNpemVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pPihzaXplb2YoR2VuZXJh
dG9yRnJhbWUpKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgc2l6ZV90IGFsbG9jYXRpb25TaXplRm9y
TG9jYWxzKHVuc2lnbmVkIG51bWJlck9mTG9jYWxzKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG9m
ZnNldE9mTG9jYWxzKCkgKyBudW1iZXJPZkxvY2FscyAqIHNpemVvZihXcml0ZUJhcnJpZXI8VW5r
bm93bj4pOwotICAgIH0KLQotICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShW
TSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBwcm90b3R5cGUpOwotCi0gICAgdm9pZCBzYXZl
KEV4ZWNTdGF0ZSosIGNvbnN0IEZhc3RCaXRWZWN0b3ImIGxpdmVDYWxsZWVMb2NhbHMpOwotICAg
IHZvaWQgcmVzdW1lKEV4ZWNTdGF0ZSosIGNvbnN0IEZhc3RCaXRWZWN0b3ImIGxpdmVDYWxsZWVM
b2NhbHMpOwotCi1wcml2YXRlOgotICAgIEdlbmVyYXRvckZyYW1lKFZNJiwgc2l6ZV90IG51bWJl
ck9mQ2FsbGVlTG9jYWxzKTsKLQotICAgIHNpemVfdCBtX251bWJlck9mQ2FsbGVlTG9jYWxzOwot
Ci0gICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKLQotICAgIHZvaWQgZmlu
aXNoQ3JlYXRpb24oVk0mKTsKLQotcHJvdGVjdGVkOgotICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hp
bGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEpTQwot
Ci0jZW5kaWYgLy8gR2VuZXJhdG9yRnJhbWVfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHZW5lcmF0b3JGdW5jdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHZW5lcmF0b3JGdW5jdGlvbi5oCmluZGV4IDM2ZjYxYzVmMjBmNTZiZWZk
NmM1NTc4NDJiMTllMzliMTlhM2E5MTkuLmExY2JhZDk0NmRjNTY4MjllZDFhMjE1NTc5MGI0NDBh
OGRmNDMwMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2Vu
ZXJhdG9yRnVuY3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dl
bmVyYXRvckZ1bmN0aW9uLmgKQEAgLTU1LDYgKzU1LDE2IEBAIGNsYXNzIEpTR2VuZXJhdG9yRnVu
Y3Rpb24gOiBwdWJsaWMgSlNGdW5jdGlvbiB7CiAgICAgICAgIEV4ZWN1dGluZyA9IC0yLAogICAg
IH07CiAKKyAgICAvLyBbdGhpc10sIEBnZW5lcmF0b3IsIEBnZW5lcmF0b3JTdGF0ZSwgQGdlbmVy
YXRvclZhbHVlLCBAZ2VuZXJhdG9yUmVzdW1lTW9kZSwgQGdlbmVyYXRvckZyYW1lLgorICAgIGVu
dW0gY2xhc3MgR2VuZXJhdG9yQXJndW1lbnQgOiBpbnQzMl90IHsKKyAgICAgICAgVGhpc1ZhbHVl
ID0gMCwKKyAgICAgICAgR2VuZXJhdG9yID0gMSwKKyAgICAgICAgU3RhdGUgPSAyLAorICAgICAg
ICBWYWx1ZSA9IDMsCisgICAgICAgIFJlc3VtZU1vZGUgPSA0LAorICAgICAgICBGcmFtZSA9IDUs
CisgICAgfTsKKwogICAgIGNvbnN0IHN0YXRpYyB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJh
c2U6OlN0cnVjdHVyZUZsYWdzOwogCiAgICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCA4ODEzMWJmNWIzMDkwYWJkYWU0Yjk5NDUxYjQx
NzFjYjVmZTJjNDVjLi5jMzAxMjJjNWFmMzNjODA3ZmU5YTY1YTE4ZmU2Zjg1NDcwZWQwYTZlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC00Niw3ICs0Niw2IEBACiAjaW5j
bHVkZSAiRlRMVGh1bmtzLmgiCiAjaW5jbHVkZSAiRnVuY3Rpb25Db25zdHJ1Y3Rvci5oIgogI2lu
Y2x1ZGUgIkdDQWN0aXZpdHlDYWxsYmFjay5oIgotI2luY2x1ZGUgIkdlbmVyYXRvckZyYW1lLmgi
CiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiSGVhcC5oIgogI2luY2x1ZGUg
IkhlYXBJdGVyYXRpb25TY29wZS5oIgpAQCAtMjQwLDcgKzIzOSw2IEBAIFZNOjpWTShWTVR5cGUg
dm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICBpbmZlcnJlZFR5cGVTdHJ1Y3R1cmUuc2V0
KCp0aGlzLCBJbmZlcnJlZFR5cGU6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkp
KTsKICAgICBpbmZlcnJlZFR5cGVUYWJsZVN0cnVjdHVyZS5zZXQoKnRoaXMsIEluZmVycmVkVHlw
ZVRhYmxlOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgZnVuY3Rp
b25SYXJlRGF0YVN0cnVjdHVyZS5zZXQoKnRoaXMsIEZ1bmN0aW9uUmFyZURhdGE6OmNyZWF0ZVN0
cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKLSAgICBnZW5lcmF0b3JGcmFtZVN0cnVjdHVy
ZS5zZXQoKnRoaXMsIEdlbmVyYXRvckZyYW1lOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpz
TnVsbCgpKSk7CiAgICAgZXhjZXB0aW9uU3RydWN0dXJlLnNldCgqdGhpcywgRXhjZXB0aW9uOjpj
cmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgcHJvbWlzZURlZmVycmVk
U3RydWN0dXJlLnNldCgqdGhpcywgSlNQcm9taXNlRGVmZXJyZWQ6OmNyZWF0ZVN0cnVjdHVyZSgq
dGhpcywgMCwganNOdWxsKCkpKTsKICAgICBpbnRlcm5hbFByb21pc2VEZWZlcnJlZFN0cnVjdHVy
ZS5zZXQoKnRoaXMsIEpTSW50ZXJuYWxQcm9taXNlRGVmZXJyZWQ6OmNyZWF0ZVN0cnVjdHVyZSgq
dGhpcywgMCwganNOdWxsKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ZNLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCmluZGV4IDg3
YmQwZTBhMjU1MzhlOGM1ZWMzMmFiZTQwMzJjNDY5N2ViMWQwOGYuLjkxNTBiNTE1OWVlZGNhZDE4
NTY0NWNkYTZjNzMwYjQ5MGVkM2U2NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaApA
QCAtMzIwLDcgKzMyMCw2IEBAIGNsYXNzIFZNIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVk
PFZNPiB7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gaW5mZXJyZWRUeXBlU3RydWN0dXJlOwogICAg
IFN0cm9uZzxTdHJ1Y3R1cmU+IGluZmVycmVkVHlwZVRhYmxlU3RydWN0dXJlOwogICAgIFN0cm9u
ZzxTdHJ1Y3R1cmU+IGZ1bmN0aW9uUmFyZURhdGFTdHJ1Y3R1cmU7Ci0gICAgU3Ryb25nPFN0cnVj
dHVyZT4gZ2VuZXJhdG9yRnJhbWVTdHJ1Y3R1cmU7CiAgICAgU3Ryb25nPFN0cnVjdHVyZT4gZXhj
ZXB0aW9uU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHByb21pc2VEZWZlcnJlZFN0
cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBpbnRlcm5hbFByb21pc2VEZWZlcnJlZFN0
cnVjdHVyZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0Zhc3RCaXRWZWN0b3IuaCBiL1Nv
dXJjZS9XVEYvd3RmL0Zhc3RCaXRWZWN0b3IuaAppbmRleCA5OGZmZjVjZjczNTNlNmJjNjdkYTVj
NTU5NDBjY2NlNGU0YjE1NmQwLi5mZjAwYjdiNTRkNGEwY2ZmNGJlZjdkMDM4NTRkZTZiOTBjZTFk
YjkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9GYXN0Qml0VmVjdG9yLmgKKysrIGIvU291
cmNlL1dURi93dGYvRmFzdEJpdFZlY3Rvci5oCkBAIC0yMyw4ICsyMyw3IEBACiAgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKICAqLwogCi0jaWZuZGVmIEZhc3RCaXRWZWN0b3JfaAotI2RlZmluZSBGYXN0Qml0VmVj
dG9yX2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAjaW5jbHVkZSA8d3Rm
L0Zhc3RNYWxsb2MuaD4KQEAgLTM2LDEyICszNSwxNCBAQCBjbGFzcyBQcmludFN0cmVhbTsKIAog
Y2xhc3MgRmFzdEJpdFZlY3RvciB7CiBwdWJsaWM6Ci0gICAgRmFzdEJpdFZlY3RvcigpCi0gICAg
ICAgIDogbV9hcnJheSgwKQotICAgICAgICAsIG1fbnVtQml0cygwKQorICAgIEZhc3RCaXRWZWN0
b3IoKSA9IGRlZmF1bHQ7CisKKyAgICBGYXN0Qml0VmVjdG9yKEZhc3RCaXRWZWN0b3ImJiBvdGhl
cikKKyAgICAgICAgOiBtX2FycmF5KHN0ZDo6ZXhjaGFuZ2Uob3RoZXIubV9hcnJheSwgbnVsbHB0
cikpCisgICAgICAgICwgbV9udW1CaXRzKHN0ZDo6ZXhjaGFuZ2Uob3RoZXIubV9udW1CaXRzLCAw
KSkKICAgICB7CiAgICAgfQotICAgIAorCiAgICAgRmFzdEJpdFZlY3Rvcihjb25zdCBGYXN0Qml0
VmVjdG9yJiBvdGhlcikKICAgICAgICAgOiBtX2FycmF5KDApCiAgICAgICAgICwgbV9udW1CaXRz
KDApCkBAIC0yMDIsMTMgKzIwMywxMCBAQCBjbGFzcyBGYXN0Qml0VmVjdG9yIHsKICAgICBzdGF0
aWMgc2l6ZV90IGFycmF5TGVuZ3RoKHNpemVfdCBudW1CaXRzKSB7IHJldHVybiAobnVtQml0cyAr
IDMxKSA+PiA1OyB9CiAgICAgc2l6ZV90IGFycmF5TGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gYXJy
YXlMZW5ndGgobV9udW1CaXRzKTsgfQogICAgIAotICAgIHVpbnQzMl90KiBtX2FycmF5OyAvLyBO
bywgdGhpcyBjYW4ndCBiZSBhbiBzdGQ6OnVuaXF1ZV9wdHI8dWludDMyX3RbXT4uCi0gICAgc2l6
ZV90IG1fbnVtQml0czsKKyAgICB1aW50MzJfdCogbV9hcnJheSB7IG51bGxwdHIgfTsgLy8gTm8s
IHRoaXMgY2FuJ3QgYmUgYW4gc3RkOjp1bmlxdWVfcHRyPHVpbnQzMl90W10+LgorICAgIHNpemVf
dCBtX251bUJpdHMgeyAwIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXVEYKIAogdXNpbmcgV1RG
OjpGYXN0Qml0VmVjdG9yOwotCi0jZW5kaWYgLy8gRmFzdEJpdFZlY3Rvcl9oCi0KZGlmZiAtLWdp
dCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMzc5ZDU0NDRi
MzNmODVlZmE2NTBmMmQ5ZjNmNTQ5ODY2MDRlN2YwZS4uNTU4YmU5ODkzZDA1MTU0OTExOTA4OWU2
NTY3MjBmYmU3MjI4NDA3OSAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAxNi0wOC0yNSAgWXVzdWtlIFN1enVr
aSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBbREZHXVtGVExdIEltcGxlbWVu
dCBFUzYgR2VuZXJhdG9ycyBpbiBERkcgLyBGVEwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MjcyMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLWFuZC1hcnJh
eS5qczogQWRkZWQuCisgICAgICAgIChmaWIpOgorICAgICAgICAqIHN0cmVzcy9nZW5lcmF0b3It
ZmliLWZ0bC1hbmQtb2JqZWN0LmpzOiBBZGRlZC4KKyAgICAgICAgKGZpYik6CisgICAgICAgICog
c3RyZXNzL2dlbmVyYXRvci1maWItZnRsLWFuZC1zdHJpbmcuanM6IEFkZGVkLgorICAgICAgICAo
ZmliKToKKyAgICAgICAgKiBzdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwuanM6IEFkZGVkLgorICAg
ICAgICAoZmliKToKKyAgICAgICAgKiBzdHJlc3MvZ2VuZXJhdG9yLWZyYW1lLWVtcHR5LmpzOiBB
ZGRlZC4KKyAgICAgICAgKHNob3VsZFRocm93KToKKyAgICAgICAgKHNob3VsZFRocm93LmZpYik6
CisgICAgICAgICogc3RyZXNzL2dlbmVyYXRvci1yZWR1Y2VkLXNhdmUtcG9pbnQtcHV0LXRvLXNj
b3BlLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKGdlbik6CisgICAg
ICAgICogc3RyZXNzL2dlbmVyYXRvci10cmFuc2Zlci1yZWdpc3Rlci1iZXlvbmQtbXV0aXBsZS15
aWVsZHMuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoZ2VuKToKKwog
MjAxNi0wOC0yNSAgSkYgQmFzdGllbiAgPGpmYmFzdGllbkBhcHBsZS5jb20+CiAKICAgICAgICAg
VHJ5R2V0QnlJZCBzaG91bGQgaGF2ZSBhIFZhbHVlUHJvZmlsZSBzbyB0aGF0IGl0IGNhbiBwcmVk
aWN0IGl0cyBvdXRwdXQgdHlwZQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvZ2VuZXJhdG9y
LWZpYi1mdGwtYW5kLWFycmF5LmpzIGIvSlNUZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwt
YW5kLWFycmF5LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZlOTM5ODEyZmRiYWVjNmI4MzJiZmQwMGYyMTUzZGVm
ODRiYjc1OTIKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmli
LWZ0bC1hbmQtYXJyYXkuanMKQEAgLTAsMCArMSwyMyBAQAorKGZ1bmN0aW9uICgpIHsKKyAgICBm
dW5jdGlvbiAqZmliKCkKKyAgICB7CisgICAgICAgIGxldCBhID0gMTsKKyAgICAgICAgbGV0IGIg
PSAxOworICAgICAgICBsZXQgYyA9IFsgMCBdOworICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAg
ICAgICAgICAgY1swXSA9IGE7CisgICAgICAgICAgICB5aWVsZCBjOworICAgICAgICAgICAgW2Es
IGJdID0gW2IsIGEgKyBiXTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGxldCB2YWx1ZSA9IDA7
CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxZTQ7ICsraSkgeworICAgICAgICBsZXQgZiA9IGZp
YigpOworICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDsgKytpKSB7CisgICAgICAgICAg
ICB2YWx1ZSA9IGYubmV4dCgpLnZhbHVlOworICAgICAgICB9CisgICAgICAgIGlmICh2YWx1ZVsw
XSAhPT0gMzU0MjI0ODQ4MTc5MjYyMDAwMDAwKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9y
KGBiYWQgdmFsdWU6JHtyZXN1bHR9YCk7CisgICAgfQorfSgpKTsKZGlmZiAtLWdpdCBhL0pTVGVz
dHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLWFuZC1vYmplY3QuanMgYi9KU1Rlc3RzL3N0cmVz
cy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQtb2JqZWN0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY2NzM0MGYyZWE0
Yzc0MzhhMmQyMDlhYTQwZDA2NzdlNGFiN2QzZmIKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3Rz
L3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC1hbmQtb2JqZWN0LmpzCkBAIC0wLDAgKzEsMjMgQEAK
KyhmdW5jdGlvbiAoKSB7CisgICAgZnVuY3Rpb24gKmZpYigpCisgICAgeworICAgICAgICBsZXQg
YSA9IDE7CisgICAgICAgIGxldCBiID0gMTsKKyAgICAgICAgbGV0IGMgPSB7IGZpYjogMCB9Owor
ICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAgYy5maWIgPSBhOworICAgICAgICAg
ICAgeWllbGQgYzsKKyAgICAgICAgICAgIFthLCBiXSA9IFtiLCBhICsgYl07CisgICAgICAgIH0K
KyAgICB9CisKKyAgICBsZXQgdmFsdWUgPSAwOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMWU0
OyArK2kpIHsKKyAgICAgICAgbGV0IGYgPSBmaWIoKTsKKyAgICAgICAgZm9yIChsZXQgaSA9IDA7
IGkgPCAxMDA7ICsraSkgeworICAgICAgICAgICAgdmFsdWUgPSBmLm5leHQoKS52YWx1ZTsKKyAg
ICAgICAgfQorICAgICAgICBpZiAodmFsdWUuZmliICE9PSAzNTQyMjQ4NDgxNzkyNjIwMDAwMDAp
CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCB2YWx1ZToke3Jlc3VsdH1gKTsKKyAg
ICB9Cit9KCkpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwt
YW5kLXN0cmluZy5qcyBiL0pTVGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLWFuZC1zdHJp
bmcuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNDM4YWU2YWIzMzQ3MDQ2ODIyODQ5ZjQzMDA0ZWE1YzQwM2VlZGEy
OAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2dlbmVyYXRvci1maWItZnRsLWFu
ZC1zdHJpbmcuanMKQEAgLTAsMCArMSwyMiBAQAorKGZ1bmN0aW9uICgpIHsKKyAgICBmdW5jdGlv
biAqZmliKCkKKyAgICB7CisgICAgICAgIGxldCBhID0gMTsKKyAgICAgICAgbGV0IGIgPSAxOwor
ICAgICAgICBsZXQgYyA9ICJSZXN1bHQhICI7CisgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAg
ICAgICAgICB5aWVsZCBjICsgYTsKKyAgICAgICAgICAgIFthLCBiXSA9IFtiLCBhICsgYl07Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQgdmFsdWUgPSAwOworICAgIGZvciAobGV0IGkgPSAw
OyBpIDwgMWU0OyArK2kpIHsKKyAgICAgICAgbGV0IGYgPSBmaWIoKTsKKyAgICAgICAgZm9yIChs
ZXQgaSA9IDA7IGkgPCAxMDA7ICsraSkgeworICAgICAgICAgICAgdmFsdWUgPSBmLm5leHQoKS52
YWx1ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAodmFsdWUgIT09IGBSZXN1bHQhIDM1NDIyNDg0
ODE3OTI2MjAwMDAwMGApCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCB2YWx1ZTok
e3Jlc3VsdH1gKTsKKyAgICB9Cit9KCkpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvZ2Vu
ZXJhdG9yLWZpYi1mdGwuanMgYi9KU1Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZmliLWZ0bC5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4zNDBlMzNkYmM4NjhiZWE3YTg5M2M5ZWMxNmI3NzllYzI2YmRiMTljCi0tLSAv
ZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLWZpYi1mdGwuanMKQEAgLTAs
MCArMSwyMSBAQAorKGZ1bmN0aW9uICgpIHsKKyAgICBmdW5jdGlvbiAqZmliKCkKKyAgICB7Cisg
ICAgICAgIGxldCBhID0gMTsKKyAgICAgICAgbGV0IGIgPSAxOworICAgICAgICB3aGlsZSAodHJ1
ZSkgeworICAgICAgICAgICAgeWllbGQgYTsKKyAgICAgICAgICAgIFthLCBiXSA9IFtiLCBhICsg
Yl07CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQgdmFsdWUgPSAwOworICAgIGZvciAobGV0
IGkgPSAwOyBpIDwgMWU0OyArK2kpIHsKKyAgICAgICAgbGV0IGYgPSBmaWIoKTsKKyAgICAgICAg
Zm9yIChsZXQgaSA9IDA7IGkgPCAxMDA7ICsraSkgeworICAgICAgICAgICAgdmFsdWUgPSBmLm5l
eHQoKS52YWx1ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAodmFsdWUgIT09IDM1NDIyNDg0ODE3
OTI2MjAwMDAwMCkKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIHZhbHVlOiR7cmVz
dWx0fWApOworICAgIH0KK30oKSk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9nZW5lcmF0
b3ItZnJhbWUtZW1wdHkuanMgYi9KU1Rlc3RzL3N0cmVzcy9nZW5lcmF0b3ItZnJhbWUtZW1wdHku
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNTllODg1NWJmYWMzYzU2ZGY5MjZhYmQ0MjhjMDEzYzMzNDE2Mjc0Ngot
LS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2dlbmVyYXRvci1mcmFtZS1lbXB0eS5q
cwpAQCAtMCwwICsxLDM0IEBACitmdW5jdGlvbiBzaG91bGRUaHJvdyhmdW5jLCBlcnJvck1lc3Nh
Z2UpIHsKKyAgICB2YXIgZXJyb3JUaHJvd24gPSBmYWxzZTsKKyAgICB2YXIgZXJyb3IgPSBudWxs
OworICAgIHRyeSB7CisgICAgICAgIGZ1bmMoKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAg
IGVycm9yVGhyb3duID0gdHJ1ZTsKKyAgICAgICAgZXJyb3IgPSBlOworICAgIH0KKyAgICBpZiAo
IWVycm9yVGhyb3duKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ25vdCB0aHJvd24nKTsKKyAg
ICBpZiAoU3RyaW5nKGVycm9yKSAhPT0gZXJyb3JNZXNzYWdlKQorICAgICAgICB0aHJvdyBuZXcg
RXJyb3IoYGJhZCBlcnJvcjogJHtTdHJpbmcoZXJyb3IpfWApOworfQorCitzaG91bGRUaHJvdyhm
dW5jdGlvbiAoKSB7CisgICAgZnVuY3Rpb24gKmZpYihmbGFnKQorICAgIHsKKyAgICAgICAgbGV0
IGEgPSAxOworICAgICAgICBsZXQgYiA9IDE7CisgICAgICAgIHlpZWxkIDQyOworICAgICAgICBp
ZiAoZmxhZykKKyAgICAgICAgICAgIHJldHVybiBjOworICAgICAgICBsZXQgYyA9IDUwMDsKKyAg
ICB9CisKKyAgICBsZXQgdmFsdWUgPSAwOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMWU0OyAr
K2kpIHsKKyAgICAgICAgZm9yIChsZXQgdiBvZiBmaWIoZmFsc2UpKSB7CisgICAgICAgIH0KKyAg
ICB9CisgICAgZm9yIChsZXQgdiBvZiBmaWIodHJ1ZSkpIHsKKyAgICB9Cit9LCBgUmVmZXJlbmNl
RXJyb3I6IENhbm5vdCBhY2Nlc3MgdW5pbml0aWFsaXplZCB2YXJpYWJsZS5gKTsKZGlmZiAtLWdp
dCBhL0pTVGVzdHMvc3RyZXNzL2dlbmVyYXRvci1yZWR1Y2VkLXNhdmUtcG9pbnQtcHV0LXRvLXNj
b3BlLmpzIGIvSlNUZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXJlZHVjZWQtc2F2ZS1wb2ludC1wdXQt
dG8tc2NvcGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzBjNzVmYTQ5MTQzYzE3YmUxNGYzMjgxZTNmNjU0MzRm
MzUxMzllOAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2dlbmVyYXRvci1yZWR1
Y2VkLXNhdmUtcG9pbnQtcHV0LXRvLXNjb3BlLmpzCkBAIC0wLDAgKzEsMjggQEAKK2Z1bmN0aW9u
IHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3Rl
ZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgdmFsdWU6ICR7U3RyaW5nKGFjdHVhbCl9
YCk7Cit9CisKK2Z1bmN0aW9uIGVycm9yKCkKK3sKKyAgICB0aHJvdyAib2siOworfQorCitmdW5j
dGlvbiogZ2VuKCkKK3sKKyAgICB2YXIgdmFsdWUgPSA0MjsKKyAgICB0cnkgeworICAgICAgICB5
aWVsZCAzMDA7CisgICAgICAgIHZhbHVlID0gNTAwOworICAgICAgICBlcnJvcigpOworICAgIH0g
Y2F0Y2ggKGUpIHsKKyAgICAgICAgeWllbGQgNDI7CisgICAgICAgIHJldHVybiB2YWx1ZTsKKyAg
ICB9CisgICAgcmV0dXJuIDIwMDsKK30KKwordmFyIGcgPSBnZW4oKTsKK3Nob3VsZEJlKGcubmV4
dCgpLnZhbHVlLCAzMDApOworc2hvdWxkQmUoZy5uZXh0KCkudmFsdWUsIDQyKTsKK3Nob3VsZEJl
KGcubmV4dCgpLnZhbHVlLCA1MDApOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvZ2VuZXJh
dG9yLXRyYW5zZmVyLXJlZ2lzdGVyLWJleW9uZC1tdXRpcGxlLXlpZWxkcy5qcyBiL0pTVGVzdHMv
c3RyZXNzL2dlbmVyYXRvci10cmFuc2Zlci1yZWdpc3Rlci1iZXlvbmQtbXV0aXBsZS15aWVsZHMu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZmUyMDhmNTgxMjk2ZjlhZTA4YTZiZmIzOThiNDgyMjU3NDJkNmI3OAot
LS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2dlbmVyYXRvci10cmFuc2Zlci1yZWdp
c3Rlci1iZXlvbmQtbXV0aXBsZS15aWVsZHMuanMKQEAgLTAsMCArMSwxOCBAQAorZnVuY3Rpb24g
c2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVk
KQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisK
KworZnVuY3Rpb24gKmdlbigpCit7CisgICAgdmFyIHRlc3QgPSA0MjsKKyAgICB5aWVsZCAzMjsK
KyAgICB5aWVsZCAzMzsKKyAgICB5aWVsZCB0ZXN0OworfQorCit2YXIgZyA9IGdlbigpOworc2hv
dWxkQmUoZy5uZXh0KCkudmFsdWUsIDMyKTsKK3Nob3VsZEJlKGcubmV4dCgpLnZhbHVlLCAzMyk7
CitzaG91bGRCZShnLm5leHQoKS52YWx1ZSwgNDIpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>